diff --git a/.github/workflows/compile_frogpilot.yaml b/.github/workflows/compile_frogpilot.yaml index d24df5dda..c5b747eb6 100644 --- a/.github/workflows/compile_frogpilot.yaml +++ b/.github/workflows/compile_frogpilot.yaml @@ -3,6 +3,14 @@ name: Compile FrogPilot on: workflow_dispatch: inputs: + runner: + description: "Select the runner" + required: true + default: "c3" + type: choice + options: + - c3 + - c3x not_vetted: description: "This branch is not vetted" required: false @@ -46,7 +54,9 @@ env: jobs: get_branch: - runs-on: [self-hosted, c3x] + runs-on: + - self-hosted + - ${{ github.event.inputs.runner }} outputs: branch: ${{ steps.get_branch.outputs.branch }} python_version: ${{ steps.get_python_version.outputs.python_version }} @@ -108,7 +118,9 @@ jobs: - name: Vet Existing Translations if: github.event.inputs.vet_existing_translations == 'true' + continue-on-error: true run: python selfdrive/ui/translations/auto_translate.py --all-files --vet-translations + timeout-minutes: 300 - name: Commit and Push Translation Updates run: | @@ -128,7 +140,9 @@ jobs: - get_branch - translate if: always() - runs-on: [self-hosted, c3x] + runs-on: + - self-hosted + - ${{ github.event.inputs.runner }} permissions: contents: write defaults: @@ -185,19 +199,12 @@ jobs: rm -f panda/board/obj/version find . -name '*.a' -delete - find . -name '*.cc' -delete find . -name '*.o' -delete find . -name '*.onnx' -delete find . -name '*.os' -delete find . -name '*.pyc' -delete find . -name 'moc_*' -delete - find . -name '*.h' | while read -r header; do - if [[ "$header" != *"common/version.h" && "$header" != *"system/camerad/sensors/"* ]]; then - rm -f "$header" - fi - done - rm -rf .devcontainer/ rm -rf .vscode/ rm -rf body/ @@ -215,7 +222,7 @@ jobs: -name 'review_pull_request.yaml' -o \ -name 'schedule_update.yaml' -o \ -name 'update_pr_branch.yaml' -o \ - -name 'update_release_branch.yaml' \ + -name 'update_release_branch.yaml' -o \ -name 'update_tinygrad.yaml' \ \) \ \) -exec rm -rf {} + diff --git a/.github/workflows/update_release_branch.yaml b/.github/workflows/update_release_branch.yaml index 8732a4fc6..cb08c6995 100644 --- a/.github/workflows/update_release_branch.yaml +++ b/.github/workflows/update_release_branch.yaml @@ -69,21 +69,25 @@ jobs: - name: Update README Date and Remove update file run: | DAY=$(TZ="${{ env.TZ }}" date +'%d' | sed 's/^0//') + case "$DAY" in 1|21|31) SUFFIX="st" ;; - 2|22) SUFFIX="nd" ;; - 3|23) SUFFIX="rd" ;; - *) SUFFIX="th" ;; + 2|22) SUFFIX="nd" ;; + 3|23) SUFFIX="rd" ;; + *) SUFFIX="th" ;; esac + MONTH=$(TZ="${{ env.TZ }}" date +'%B') YEAR=$(TZ="${{ env.TZ }}" date +'%Y') - NEW_DATE="**${MONTH} ${DAY}${SUFFIX}, ${YEAR}**" - sed -i "/FrogPilot was last updated on:/ { N; N; s/\(\n\)\n.*$/\1\n${NEW_DATE}/; }" README.md + DATE="${MONTH} ${DAY}${SUFFIX}, ${YEAR}" + DATE_ESCAPED=$(printf '%s' "$DATE" | sed -E 's/ /%20/g; s/,/%2C/g') + + sed -i -E "s|(Last%20Updated-)[^-)]*|\1${DATE_ESCAPED}|g" README.md git add README.md git rm -f "${{ env.UPDATE_FILE }}" - git commit -m "Updated README date to ${NEW_DATE}" + git commit -m "Updated README date to ${DATE}" - name: Squash Commits run: | diff --git a/.github/workflows/update_tinygrad.yaml b/.github/workflows/update_tinygrad.yaml index 5035da092..dddca0105 100644 --- a/.github/workflows/update_tinygrad.yaml +++ b/.github/workflows/update_tinygrad.yaml @@ -2,11 +2,22 @@ name: Update Tinygrad on: workflow_dispatch: + inputs: + runner: + description: "Select the runner" + required: true + default: "c3" + type: choice + options: + - c3 + - c3x jobs: update_tinygrad: name: Update Tinygrad - runs-on: [self-hosted, c3x] + runs-on: + - self-hosted + - ${{ github.event.inputs.runner }} steps: - name: Get version @@ -14,32 +25,43 @@ jobs: run: | VERSION=$(grep -oP '^VERSION\s*=\s*"\K[^"]+' /data/openpilot/frogpilot/assets/model_manager.py) echo "VERSION=$VERSION" - echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "version=$VERSION" >> "$GITHUB_OUTPUT" - name: Clone GitLab repo env: GITLAB_TOKEN: ${{ secrets.GITLAB_TOKEN }} run: | + rm -rf /data/tmp/frogpilot_tinygrad mkdir -p /data/tmp/frogpilot_tinygrad cd /data/tmp/frogpilot_tinygrad - git clone --depth 1 --branch Tinygrad https://oauth2:${GITLAB_TOKEN}@gitlab.com/FrogAi/FrogPilot-Resources.git + + git clone --depth 1 --branch Tinygrad "https://oauth2:${GITLAB_TOKEN}@gitlab.com/FrogAi/FrogPilot-Resources.git" - name: Create Tinygrad Archive run: | + set -euo pipefail cd /data/openpilot + ARCHIVE_DIR="/data/tmp/frogpilot_tinygrad/FrogPilot-Resources" ARCHIVE_NAME="Tinygrad_${{ steps.get_version.outputs.version }}.tar.gz" - tar -czf "/data/tmp/frogpilot_tinygrad/FrogPilot-Resources/$ARCHIVE_NAME" \ + TMPDIR="$(mktemp -d)" + touch "$TMPDIR/SConscript" + + tar -czf "$ARCHIVE_NAME" \ --exclude="*.a" \ - --exclude="*.cc" \ - --exclude="*.h" \ --exclude="*.o" \ --exclude="*.onnx" \ - --exclude="*.pkl" \ --exclude="*__pycache__*" \ --exclude="*tests*" \ - frogpilot/tinygrad_modeld tinygrad tinygrad_repo + --exclude="frogpilot/tinygrad_modeld/SConscript" \ + frogpilot/tinygrad_modeld tinygrad_repo \ + -C "$TMPDIR" \ + --transform 's|^SConscript$|frogpilot/tinygrad_modeld/SConscript|' \ + SConscript + + mv "$ARCHIVE_NAME" "$ARCHIVE_DIR/" + rm -rf "$TMPDIR" - name: Push updated Tinygrad run: | @@ -49,7 +71,7 @@ jobs: git config user.email "91348155+FrogAi@users.noreply.github.com" git add Tinygrad_*.tar.gz - git commit -m "Updated Tinygrad: ${{ steps.get_version.outputs.version }}" + git commit -m "Updated Tinygrad: ${{ steps.get_version.outputs.version }}" || echo "No changes to commit" git push origin Tinygrad - name: Cleanup temporary files diff --git a/README.md b/README.md index 0677c6751..5670b5f8b 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,33 @@ -[![openpilot on the comma 3X](https://i.imgur.com/Zwv9SaN.png)](https://comma.ai/shop/comma-3x) +
-What is openpilot? ------- +

openpilot

-[openpilot](http://github.com/commaai/openpilot) is an open source driver assistance system. Currently, openpilot performs the functions of Adaptive Cruise Control (ACC), Automated Lane Centering (ALC), Forward Collision Warning (FCW), and Lane Departure Warning (LDW) for a growing variety of [supported car makes, models, and model years](docs/CARS.md). In addition, while openpilot is engaged, a camera-based Driver Monitoring (DM) feature alerts distracted and asleep drivers. See more about [the vehicle integration](docs/INTEGRATION.md) and [limitations](docs/LIMITATIONS.md). +

+ openpilot is an operating system for robotics. +
+ Currently, it upgrades the driver assistance system in 300+ supported cars. +

+ +

+ Docs + ยท + Roadmap + ยท + Contribute + ยท + Community + ยท + Try it on a comma 3X +

+ +Quick start: `bash <(curl -fsSL openpilot.comma.ai)` + +[![openpilot tests](https://github.com/commaai/openpilot/actions/workflows/selfdrive_tests.yaml/badge.svg)](https://github.com/commaai/openpilot/actions/workflows/selfdrive_tests.yaml) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) +[![X Follow](https://img.shields.io/twitter/follow/comma_ai)](https://x.com/comma_ai) +[![Discord](https://img.shields.io/discord/469524606043160576)](https://discord.comma.ai) + +
@@ -13,217 +37,216 @@ What is openpilot?
-What is FrogPilot? ๐Ÿธ + +Using openpilot in a car ------ -FrogPilot is a fully open-sourced fork of openpilot, featuring clear and concise commits striving to be a resource for the openpilot developer community. It thrives on contributions from both users and developers, focusing on a collaborative, community-led approach to deliver an advanced openpilot experience for everyone! +To use openpilot in a car, you need four things: +1. **Supported Device:** a comma 3/3X, available at [comma.ai/shop](https://comma.ai/shop/comma-3x). +2. **Software:** The setup procedure for the comma 3/3X allows users to enter a URL for custom software. Use the URL `openpilot.comma.ai` to install the release version. +3. **Supported Car:** Ensure that you have one of [the 275+ supported cars](docs/CARS.md). +4. **Car Harness:** You will also need a [car harness](https://comma.ai/shop/car-harness) to connect your comma 3/3X to your car. + +We have detailed instructions for [how to install the harness and device in a car](https://comma.ai/setup). Note that it's possible to run openpilot on [other hardware](https://blog.comma.ai/self-driving-car-for-free/), although it's not plug-and-play. ------ -FrogPilot was last updated on: -**April 12th, 2025** +
-Features ------- +

FrogPilot ๐Ÿธ

-FrogPilot offers a wide range of customizable features that are easily toggled on or off to suit your preferences. Whether you want a completely stock openpilot experience, or want to add some fun and personal touches, FrogPilot has you covered! Some of the features include: +[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/FrogAi/FrogPilot) +[![Discord](https://img.shields.io/discord/1137853399715549214?label=Discord)](https://discord.frogpilot.download) +[![Last Updated](https://img.shields.io/badge/Last%20Updated-August%209th%2C%202025-brightgreen)](https://github.com/FrogAi/FrogPilot/releases/latest) +[![Wiki](https://img.shields.io/badge/Wiki-FrogPilot-blue?logo=wiki)](https://frogpilot.wiki.gg/) + +
------ -โšก **Advanced Customizations:** - - "Alert Volume Controller" to set the volume level for each of of openpilot's sounds - - Customize the following distance and jerk values for each personality profile - - Fine tune your car's "Steer Ratio" to perfect your lateral control - - Increase the distance when stopped behind lead vehicles - - Increase the max set speed by a custom interval (i.e. 2, 3, 4, 5, 6, etc. instead of just 1) - - Select between past, present, and future openpilot driving models ------- -๐ŸŽจ **Custom Themes:** +**FrogPilot** is a custom frog-themed fork of openpilot that embraces a collaborative, community-driven approach to push the project forward. It delivers bleeding-edge features and experimental improvements far ahead of official releases. As an unofficial and highly experimental version of openpilot, **FrogPilot** should always be used with caution! - - ๐Ÿธ Frog theme (with a bonus ๐Ÿ sound effect) - - Russia / Joseph Stalin theme - - ๐Ÿ”Œ Tesla theme - - Holiday themes! Minor holidays last a day, while major holidays (Easter, Halloween, Thanksgiving, Christmas) last a week - - Random events triggered by specific actions while driving with openpilot - - - ๐Ÿ“ข Want to add a theme? Request one in the "feature-request" channel in the FrogPilot Discord! ------- -๐Ÿš€ **Conditional Experimental Mode:** - - - Auto-activates "Experimental Mode" under several conditions, including: - - Approaching intersections and turns while using navigation - - Approaching slower vehicles to take advantage of "Experimental Mode"'s smoother braking - - Curve and stop light/stop sign detection - - Driving below a set speed - - Turn signal activation below 55mph for turn assistance ------- -๐Ÿ“Š **Developer UI:** - - - Display various driving logics such as the distance, speed, and the desired following distance to your lead vehicle - - Lane measuring of the adjacent lanes for lane detection - - Tap the "VEHICLE ONLINE"/"CPU"/"GPU" gauge to toggle between CPU and GPU monitoring - - Tap the "CONNECT ONLINE"/"MEMORY"/"LEFT"/"USED" gauge to toggle between RAM and storage monitoring ------- -๐Ÿ›  **Device Management:** - - - Adjustable screen brightness for both onroad and offroad states - - Adjustable screen timeout times for both onroad and offroad states - - Backup and restore previous versions of FrogPilot - - Backup and restore previous versions of toggle configurations - - Battery level threshold to automatically shut the device down after you car's battery falls below a set voltage limit when offroad - - Delete stored driving data for increased privacy/space via the "Device" panel - - Device can operate offline indefinitely - - Disable logging and/or uploading - - Disable uploads while onroad to help reduce data usage - - Flash the Panda within the "Device" menu - - "Standby Mode" that wakes the screen up between engagement states or when important alerts are triggered - - Timer to automatically shut down after going offroad ------- -๐Ÿš– **Lateral Adjustments:** - - - Activate lateral control by simply pressing the "Cruise Control" button - - Force comma's auto tuning for unsupported vehicles - - Lateral control won't disengage on gas or brake - - Nudgeless lane changes with lane detection to prevent driving into curbs or going offroad - - Pause lateral control when below a set speed - - Pause lateral control when pressing the brake - - Pause lateral control when turn signals are active - - Precise turns by using turn desires when below the minimum lane change speed - - [Twilsonco's NNFF](https://github.com/twilsonco/openpilot) for smoother steering control ------- -๐Ÿš˜ **Longitudinal Adjustments:** - - - Aggressive acceleration when following a lead vehicle from a stop - - "Map Turn Speed Controller" to slow down for curves based on stored map data - - With an additional toggle to fine tune the speed aggressiveness - - Smoother braking behind slower leads - - "Speed Limit Controller" to adjust your speed to the posted speed limit - - With additional toggles to set offsets for "0-34 mph", "35-54 mph", "55-64 mph", and "65-99 mph" - - "Sport" and "Eco" acceleration and deceleration profiles - - "Traffic Mode" tailored towards driving in traffic - - Tweak the lead detection threshold to detect leads sooner for smoother braking on stopped/slower vehicles - - "Vision Turn Speed Controller" for smoother handling of curves - - With additional toggles to fine tune the speed aggressiveness and curve detection sensitivity ------- -๐Ÿ—บ๏ธ **Navigation:** - - - 3D buildings - - Custom map styles - - Full screen map that takes up the entire screen for a more expansive map view - - iOS shortcuts to quickly set navigation destinations - - Navigate on openpilot without a comma prime subscription - - Offline maps - - "Open Street Maps" integration for speed limit control and road name view ------- -๐ŸŽฎ **Onroad UI:** - - - Compass that rotates according to the direction you're driving - - FPS counter in the screen's border - - Hide various UI elements on the screen for a cleaner UI - - Pedals on the onroad UI indicate when the gas/brake pedals are being used - - Road UI Customizations: - - Acceleration path to show the model's desired acceleration/deceleration - - Blind spot path when a vehicle is detected in your blind spot - - Increase/decrease the lane line, path, and road edge widths - - Path edge colors based on specific driving statuses: - - ๐Ÿ”ต Blue - Navigation active - - ๐ŸŸฆ Light Blue - "Always On Lateral" active - - ๐ŸŸข Green - Default - - ๐ŸŸ  Orange - "Experimental Mode" active - - ๐Ÿ”ด Red - "Traffic Mode" active - - ๐ŸŸก Yellow - "Conditional Experimental Mode" overridden - - "Unlimited" road UI that extends out as far as the model can see - - Sidebar retains it's previous position between reboots/ignition cycles - - Steering wheel icons - - ๐Ÿ“ข Request your own steering wheel icon in the "feature-request" channel! - - Steering wheel in the onroad UI rotates alongside your physical steering wheel ------- -๐Ÿš™ **Vehicle Specific Additions:** - - - Automatic/manual fingerprint selection to force a selected fingerprint - - Custom longitudinal tunings for GM EVs and trucks for smoother gas and brake control - - Custom longitudinal tunings for Toyota/Lexus for smoother gas and brake control - - Disable openpilot longitudinal control to use your car's stock cruise control - - GM Volt support - - Honda Clarity support - - Increased torque for the Subaru Crosstrek - - Lock doors automatically when in the drive gear for Toyota/Lexus and unlock when in park - - openpilot longitudinal control for GM vehicles without ACC - - Pedal interceptor support for GM vehicles - - "Stop and Go" hack for Toyota's without stop and go functionality - - ZSS support for the Toyota Prius and Sienna ------- -๐Ÿšฆ **Quality of Life Features:** - - - Automatic updates for a completely "set and forget" experience - - Camera view selection - - Custom alerts for green lights, vehicles in blindspot, lead departing, and the current speed limit changing - - Display the driver camera when in reverse - - Driving statistics to show how many hours and miles you've driven on the home screen - - Fleet Manager to easily access your driving data and screen recordings - - Numerical temperature gauge - - Retain tethering status between reboots - - Screenrecorder - - Toggle "Experimental Mode" via the "Lane Departure Alert" button, holding down the "Distance" button for 0.5+ seconds, or by double tapping the screen - -How to Install +openpilot vs **FrogPilot** ------ -Easiest way to install FrogPilot is via this URL at the installation screen: +#### Community +| Feature | openpilot | **FrogPilot** | +|---------|:---------:|:---------:| +| A Welcoming Community | โŒ | โœ… | +| Erich / Primary Moderators / ๐Ÿฆ‡ | โœ… | โŒ | + +#### Core Features +| Feature | openpilot | **FrogPilot** | +|---------|:---------:|:---------:| +| Always On Lateral (Steering) | โŒ | โœ… | +| Blind Spot Integration | โœ… | โœ… | +| Conditional Experimental Mode | โŒ | โœ… | +| Custom Themes | โŒ | โœ… | +| Driver Monitoring | โœ… | โœ… | +| Driving Model Selector | โŒ | โœ… | +| Holiday Themes | โŒ | โœ… | +| Speed Limit Support | โŒ | โœ… | +| Weather Detection | โŒ | โœ… | + +#### Device & Hardware +| Feature | openpilot | **FrogPilot** | +|---------|:---------:|:---------:| +| Advanced Volume Controller | โŒ | โœ… | +| Automatic Version Backups | โŒ | โœ… | +| C3 Support | โŒ | โœ… | +| comma Pedal Support | โŒ | โœ… | +| High Quality Recordings | โŒ | โœ… | +| SDSU Support | โŒ | โœ… | +| ZSS Support | โŒ | โœ… | + +#### Gas/Brake +| Feature | openpilot | **FrogPilot** | +|---------|:---------:|:---------:| +| Adaptive Cruise Control (ACC) | โœ… | โœ… | +| Advanced Live Tuning | โŒ | โœ… | +| Custom Following Distances | โŒ | โœ… | +| Faster Human-Like Acceleration | โŒ | โœ… | +| Human-Like Speed Control in Curves | โŒ | โœ… | +| Smoother Human-Like Braking | โŒ | โœ… | + +#### Steering +| Feature | openpilot | **FrogPilot** | +|---------|:---------:|:---------:| +| Advanced Live Tuning | โŒ | โœ… | +| Automatic Lane Changes | โŒ | โœ… | +| Increased Steering Torque* | โŒ | โœ… | +| Lane Centering (LKAS) | โœ… | โœ… | +| Lane Change Assist | โœ… | โœ… | + +*Select vehicles only + +And much much more! + +๐ŸŒŸ Highlight Features +------ + +### ๐Ÿš— Always On Lateral (AOL) + +With **"Always On Lateral"**, lane-centering stays active whenever cruise control is on, even when you press the accelerator or brake. This means steering assist won't cut out during manual speed adjustments giving you continuous support through curves, traffic, or mountain roads! + +--- + +### ๐Ÿง  Conditional Experimental Mode (CEM) + +**["Experimental Mode"](https://blog.comma.ai/090release/#experimental-mode)** lets openpilot drive at the speed it thinks a human would to allow slowing for curves, stopping at stoplights/stop signs, and adapting to traffic. This makes it powerful in complex scenarios, but it's still, well, "experimental" and less predictable than **"Chill Mode"**. But **"Conditional Experimental Mode"** gives you the best of both worlds by automatically switching between **"Chill Mode"** for steady cruising and **"Experimental Mode"** for more advanced situations to help fully automate your driving experience! + +**"Conditional Experimental Mode"** switches into **"Experimental Mode"** when conditions like these are met: +- Approaching curves and turns +- Detecting slower or stopped lead vehicles +- Driving below a set speed +- Predicting an upcoming stop (e.g. stoplight or stop sign) + +Once conditions clear it returns to **"Chill Mode"** for stability and predictability. + +**Note: Stay attentive as "Experimental Mode" is an alpha feature and mistakes are expected!** + +--- + +### ๐ŸŽญ Driving Personalities + +With **"Driving Personalities"**, you choose how the vehicle behaves with four adjustable profiles: + +- **Traffic:** Catered towards stop-and-go traffic by minimizing gaps and delays +- **Aggressive:** Aimed to provide tighter following distances and quicker reactions +- **Standard:** Useful for a balanced, all-purpose driving +- **Relaxed:** A smoother driving experience with larger following distance gaps + +Each profile can be fine-tuned to change the desired following distance, acceleration, and braking style letting you shape **FrogPilot**'s behavior to match your own driving preferences! Profiles can be switched instantly using the following distance button on the steering wheel, while **"Traffic Mode"** can be enabled by simply holding down the following distance button. + +--- + +### ๐Ÿ“ Speed Limit Controller (SLC) + +With **"Speed Limit Controller"**, **FrogPilot** automatically adapts to the road's posted speed using information from downloaded **["OpenStreetMap"](https://www.openstreetmap.org)** maps, online **["Mapbox"](https://www.mapbox.com)** data, and the vehicle's dashboard (if supported). + +Offsets let you fine-tune how closely **FrogPilot** follows posted limits across different speed ranges allowing you to cruise slightly above or below for a more natural driving experience. If no speed limit is available, you can choose whether **FrogPilot** drives at the set speed, falls back to the last known speed limit, or uses **"Experimental Mode"** to estimate one with the driving model. + +Maps can be downloaded directly in settings and updated automatically on a schedule ensuring your device always has the latest speed limits! + +**Note: Speed limits are only as accurate as the available speed limit data. Always stay attentive and adjust your speed when necessary!** + +--- + +### ๐ŸŽจ Themes + +With **"Themes"**, you can personalize **FrogPilot**'s driving screen to make it uniquely yours! Choose from: + +- **Color Schemes** +- **Icon Packs** +- **Sound Packs** +- **Turn Signal Animations** +- **Steering Wheel Icons** + +Enjoy pre-existing **FrogPilot** and seasonal holiday themes, or you can create your own with the **"Theme Maker"** and even share them with the community! For extra fun, enable features like the Mario Kartโ€“style **"Rainbow Path"** or **"Random Events"** that add playful visual effects while you drive! + +--- + +And lots more! From safety enhancements to personalization options, **FrogPilot** continues to evolve with features that put you in control. Check it out today for yourself! + +--- + +๐Ÿ”ง Branches +------ +| Branch | Install URL | Description | Recommended For | +|----------------------------|---------------------------|--------------------------------------------------------|--------------------------| +| FrogPilot | frogpilot.download | The main release branch. | Everyone | +| FrogPilot‑Staging | staging.frogpilot.download| Beta branch with upcoming features. Expect bugs! | Early Adopters | +| FrogPilot‑Testing | testing.frogpilot.download| Alpha branch with bleeding-edge features. Breaks often!| Advanced Testers | +| FrogPilot‑Development| No :) | Active development branch. Don't use! | **FrogPilot** Developers| +| MAKE‑PRS‑HERE | No :) | Workspace for pull requests. Don't use! | Contributors | + +๐Ÿงฐ How to Install +------ + +The easiest way to install **FrogPilot** is by entering this URL on the installation screen: ``` frogpilot.download ``` -DO NOT install the "FrogPilot-Development" branch. I'm constantly breaking things on there, so unless you don't want to use openpilot, NEVER install it! +**DO NOT** install the **FrogPilot-Development** branch. I'm constantly breaking things on there, so unless you don't want to use **FrogPilot**, **NEVER** install it! -![](https://i.imgur.com/swr0kqJ.png) +![](https://i.imgur.com/LTCqRqB.png) -Bug reports / Feature Requests +๐Ÿž Bug Reports / Feature Requests ------ -If you encounter any issues or bugs while using FrogPilot, or if you have any suggestions for new features or improvements, please don't hesitate to post about it on the Discord! I'm always looking for ways to improve the fork and provide a better experience for everyone! +If you run into bugs, issues, or have ideas for new features, please post about it on the **[FrogPilot Discord](https://discord.gg/frogpilot)**! Feedback helps improve **FrogPilot** and create a better experience for everyone! -To report a bug or request a new feature, make a post in the #bug-reports or #feature-requests channel respectively on the FrogPilot Discord. Please provide as much detail as possible about the issue you're experiencing or the feature you'd like to see added. Photos, videos, log files, or other relevant information are very helpful! +To report a bug, please post it in [**#bug-reports**](https://discord.com/channels/1137853399715549214/1162100167110053888). +To request a feature, please post it in [**#feature-requests**](https://discord.com/channels/1137853399715549214/1160318669839147259). -I will do my best to respond to bug reports and feature requests in a timely manner, but please understand that I may not be able to address every request immediately. Your feedback and suggestions are valuable, and I appreciate your help in making FrogPilot the best it can be! +Please include as much detail as possible! Photos, videos, log files, or anything that can help explain the issue or idea are very helpful! -Discord ------- - -[Join the FrogPilot Community Discord!](https://discord.gg/frogpilot) - -Credits +I'll do my best to respond promptly, but not every request can be addressed right away. Your feedback is always appreciated and helps make **FrogPilot** the best it can be! + +๐Ÿ“‹ Credits ------ +* [Aidenir](https://github.com/Aidenir) * [AlexandreSato](https://github.com/AlexandreSato) -* [Crwusiz](https://github.com/crwusiz) -* [DragonPilot](https://github.com/dragonpilot-community) +* [cfranyota](https://github.com/cfranyota) +* [cydia2020](https://github.com/cydia2020) +* [dragonpilot-community](https://github.com/dragonpilot-community) * [ErichMoraga](https://github.com/ErichMoraga) -* [Garrettpall](https://github.com/garrettpall) -* [Mike8643](https://github.com/mike8643) -* [Neokii](https://github.com/Neokii) +* [garrettpall](https://github.com/garrettpall) +* [jakethesnake420](https://github.com/jakethesnake420) +* [jyoung8607](https://github.com/jyoung8607) +* [mike8643](https://github.com/mike8643) +* [neokii](https://github.com/neokii) * [OPGM](https://github.com/opgm) * [OPKR](https://github.com/openpilotkr) -* [Pfeiferj](https://github.com/pfeiferj) -* [ServerDummy](https://github.com/ServerDummy) -* [Twilsonco](https://github.com/twilsonco) +* [pfeiferj](https://github.com/pfeiferj) +* [realfast](https://github.com/realfast) +* [syncword](https://github.com/syncword) +* [twilsonco](https://github.com/twilsonco) -Licensing +Star History ------ -openpilot is released under the MIT license. Some parts of the software are released under other licenses as specified. - -Any user of this software shall indemnify and hold harmless Comma.ai, Inc. and its directors, officers, employees, agents, stockholders, affiliates, subcontractors and customers from and against all allegations, claims, actions, suits, demands, damages, liabilities, obligations, losses, settlements, judgments, costs and expenses (including without limitation attorneysโ€™ fees and costs) which arise out of, relate to or result from any use of this software by user. - -**THIS IS ALPHA QUALITY SOFTWARE FOR RESEARCH PURPOSES ONLY. THIS IS NOT A PRODUCT. -YOU ARE RESPONSIBLE FOR COMPLYING WITH LOCAL LAWS AND REGULATIONS. -NO WARRANTY EXPRESSED OR IMPLIED.** - ---- - - - -[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/FrogAi/FrogPilot) -![openpilot tests](https://github.com/commaai/openpilot/actions/workflows/selfdrive_tests.yaml/badge.svg) -[![codecov](https://codecov.io/gh/commaai/openpilot/branch/master/graph/badge.svg)](https://codecov.io/gh/commaai/openpilot) +[![Star History Chart](https://api.star-history.com/svg?repos=FrogAi/FrogPilot&type=Date)](https://www.star-history.com/#FrogAi/FrogPilot&Date) diff --git a/cereal/car.capnp b/cereal/car.capnp index 9f3505338..f0522253e 100644 --- a/cereal/car.capnp +++ b/cereal/car.capnp @@ -118,37 +118,6 @@ struct CarEvent @0x9b1657f34caf3ad3 { paramsdPermanentError @119; actuatorsApiUnavailable @120; - # FrogPilot Events - accel30 @122; - accel35 @123; - accel40 @124; - blockUser @125; - customStartupAlert @126; - dejaVuCurve @127; - firefoxSteerSaturated @128; - forcingStop @129; - goatSteerSaturated @130; - greenLight @131; - hal9000 @132; - holidayActive @133; - laneChangeBlockedLoud @134; - leadDeparting @135; - noLaneAvailable @136; - openpilotCrashed @137; - openpilotCrashedRandomEvent @138; - pedalInterceptorNoBrake @139; - speedLimitChanged @140; - thisIsFineSteerSaturated @141; - toBeContinued @142; - torqueNNLoad @143; - trafficModeActive @144; - trafficModeInactive @145; - turningLeft @146; - turningRight @147; - vCruise69 @148; - yourFrogTriedToKillMe @149; - youveGotMail @150; - radarCanErrorDEPRECATED @15; communityFeatureDisallowedDEPRECATED @62; radarCommIssueDEPRECATED @67; @@ -444,22 +413,6 @@ struct CarControl { prompt @6; promptRepeat @7; promptDistracted @8; - - # FrogPilot sounds - angry @9; - continued @10; - dejaVu @11; - doc @12; - fart @13; - firefox @14; - goat @15; - hal9000 @16; - mail @17; - nessie @18; - noice @19; - startup @20; - thisIsFine @21; - uwu @22; } } diff --git a/cereal/custom.capnp b/cereal/custom.capnp index a21897277..44409b9c5 100644 --- a/cereal/custom.capnp +++ b/cereal/custom.capnp @@ -10,19 +10,113 @@ using Car = import "car.capnp"; # cereal, so use these if you want custom events in your fork. # you can rename the struct, but don't change the identifier -struct FrogPilotCarParams @0x81c2f05a394cf4af { - fpFlags @0 :UInt32; - isHDA2 @1 :Bool; - openpilotLongitudinalControlDisabled @2 :Bool; -} +struct FrogPilotCarControl { + hudControl @0 :HUDControl; -struct FrogPilotCarState @0xaedffd8f31e7b55d { - struct ButtonEvent { - enum Type { - lkas @0; + struct HUDControl { + audibleAlert @0 :AudibleAlert; + + enum AudibleAlert { + none @0; + + engage @1; + disengage @2; + refuse @3; + + warningSoft @4; + warningImmediate @5; + + prompt @6; + promptRepeat @7; + promptDistracted @8; + + # Random Events + angry @9; + continued @10; + dejaVu @11; + doc @12; + fart @13; + firefox @14; + goat @15; + hal9000 @16; + mail @17; + nessie @18; + noice @19; + startup @20; + thisIsFine @21; + uwu @22; } } +} +struct FrogPilotCarEvent @0x81c2f05a394cf4af { + name @0 :EventName; + + enable @1 :Bool; + noEntry @2 :Bool; + warning @3 :Bool; + userDisable @4 :Bool; + softDisable @5 :Bool; + immediateDisable @6 :Bool; + preEnable @7 :Bool; + permanent @8 :Bool; + overrideLateral @10 :Bool; + overrideLongitudinal @9 :Bool; + + enum EventName @0xaedffd8f31e7b55d { + blockUser @0; + customStartupAlert @1; + forcingStop @2; + goatSteerSaturated @3; + greenLight @4; + holidayActive @5; + laneChangeBlockedLoud @6; + leadDeparting @7; + noLaneAvailable @8; + openpilotCrashed @9; + pedalInterceptorNoBrake @10; + speedLimitChanged @11; + torqueNNLoad @12; + trafficModeActive @13; + trafficModeInactive @14; + turningLeft @15; + turningRight @16; + + # Random Events + accel30 @17; + accel35 @18; + accel40 @19; + dejaVuCurve @20; + firefoxSteerSaturated @21; + hal9000 @22; + openpilotCrashedRandomEvent @23; + thisIsFineSteerSaturated @24; + toBeContinued @25; + vCruise69 @26; + yourFrogTriedToKillMe @27; + youveGotMail @28; + } +} + +struct FrogPilotCarParams @0xf35cc4560bbf6ec2 { + canUsePedal @0 :Bool; + canUseSDSU @1 :Bool; + fpFlags @2 :UInt32; + isHDA2 @3 :Bool; + openpilotLongitudinalControlDisabled @4 :Bool; + safetyConfigs @5 :List(SafetyConfig); + + lateralTuning :union { + pid @6 :Car.CarParams.LateralPIDTuning; + torque @7 :Car.CarParams.LateralTorqueTuning; + } + + struct SafetyConfig { + safetyParam @0 :UInt16; + } +} + +struct FrogPilotCarState @0xda96579883444c35 { accelPressed @0 :Bool; alwaysOnLateralAllowed @1 :Bool; alwaysOnLateralEnabled @2 :Bool; @@ -38,67 +132,118 @@ struct FrogPilotCarState @0xaedffd8f31e7b55d { pauseLongitudinal @12 :Bool; sportGear @13 :Bool; trafficModeEnabled @14 :Bool; + + struct ButtonEvent { + enum Type { + lkas @0; + } + } } -struct FrogPilotDeviceState @0xf35cc4560bbf6ec2 { +struct FrogPilotControlsState @0x80ae746ee2596b11 { + alertStatus @0 :AlertStatus; + alertText1 @1 :Text; + alertText2 @2 :Text; + alertSize @3 :AlertSize; + alertBlinkingRate @4 :Float32; + alertType @5 :Text; + alertSound @6 :Car.CarControl.HUDControl.AudibleAlert; + + enum AlertSize { + none @0; # don't display the alert + small @1; # small box + mid @2; # mid screen + full @3; # full screen + } + + enum AlertStatus { + normal @0; # low priority alert for user's convenience + userPrompt @1; # mid priority alert that might require user intervention + critical @2; # high priority alert that needs immediate user intervention + frogpilot @3; # FrogPilot startup alert + } +} + +struct FrogPilotDeviceState @0xa5cd762cd951a455 { freeSpace @0 :Int16; usedSpace @1 :Int16; } -struct FrogPilotNavigation @0xda96579883444c35 { +struct FrogPilotModelDataV2 @0xf98d843bfd7004a3 { + turnDirection @0 :TurnDirection; + + enum TurnDirection { + none @0; + turnLeft @1; + turnRight @2; + } +} + +struct FrogPilotNavigation @0xf416ec09499d9d19 { approachingIntersection @0 :Bool; approachingTurn @1 :Bool; navigationSpeedLimit @2 :Float32; } -struct FrogPilotPlan @0x80ae746ee2596b11 { +struct FrogPilotPlan @0xa1680744031fdb2d { accelerationJerk @0 :Float32; accelerationJerkStock @1 :Float32; - dangerJerk @2 :Float32; - desiredFollowDistance @3 :Int64; - experimentalMode @4 :Bool; - forcingStop @5 :Bool; - forcingStopLength @6 :Float32; - frogpilotEvents @7 :List(Car.CarEvent); - lateralCheck @8 :Bool; - laneWidthLeft @9 :Float32; - laneWidthRight @10 :Float32; - maxAcceleration @11 :Float32; - minAcceleration @12 :Float32; - mtscSpeed @13 :Float32; - redLight @14 :Bool; - roadCurvature @15 :Float32; - slcMapSpeedLimit @16 :Float32; - slcMapboxSpeedLimit @17 :Float32; - slcNextSpeedLimit @18 :Float32; - slcOverriddenSpeed @19 :Float32; - slcSpeedLimit @20 :Float32; - slcSpeedLimitOffset @21 :Float32; - slcSpeedLimitSource @22 :Text; - speedJerk @23 :Float32; - speedJerkStock @24 :Float32; - speedLimitChanged @25 :Bool; - tFollow @26 :Float32; - themeUpdated @27 :Bool; - togglesUpdated @28 :Bool; - trackingLead @29 :Bool; - unconfirmedSlcSpeedLimit @30 :Float32; - vCruise @31 :Float32; - vtscControllingCurve @32 :Bool; - vtscSpeed @33 :Float32; + cscControllingSpeed @2 :Bool; + cscSpeed @3 :Float32; + cscTraining @4 :Bool; + dangerJerk @5 :Float32; + desiredFollowDistance @6 :Int64; + experimentalMode @7 :Bool; + forcingStop @8 :Bool; + forcingStopLength @9 :Float32; + frogpilotEvents @10 :List(FrogPilotCarEvent); + increasedStoppedDistance @11 :Float32; + lateralCheck @12 :Bool; + laneWidthLeft @13 :Float32; + laneWidthRight @14 :Float32; + maxAcceleration @15 :Float32; + minAcceleration @16 :Float32; + redLight @17 :Bool; + roadCurvature @18 :Float32; + slcMapSpeedLimit @19 :Float32; + slcMapboxSpeedLimit @20 :Float32; + slcNextSpeedLimit @21 :Float32; + slcOverriddenSpeed @22 :Float32; + slcSpeedLimit @23 :Float32; + slcSpeedLimitOffset @24 :Float32; + slcSpeedLimitSource @25 :Text; + speedJerk @26 :Float32; + speedJerkStock @27 :Float32; + speedLimitChanged @28 :Bool; + tFollow @29 :Float32; + themeUpdated @30 :Bool; + togglesUpdated @31 :Bool; + trackingLead @32 :Bool; + unconfirmedSlcSpeedLimit @33 :Float32; + vCruise @34 :Float32; } -struct CustomReserved5 @0xa5cd762cd951a455 { -} +struct FrogPilotRadarState @0xcb9fd56c7057593a { + leadLeft @0 :LeadData; + leadRight @1 :LeadData; -struct CustomReserved6 @0xf98d843bfd7004a3 { -} + struct LeadData { + dRel @0 :Float32; + yRel @1 :Float32; + vRel @2 :Float32; + aRel @3 :Float32; + vLead @4 :Float32; + dPath @6 :Float32; + vLat @7 :Float32; + vLeadK @8 :Float32; + aLeadK @9 :Float32; + fcw @10 :Bool; + status @11 :Bool; + aLeadTau @12 :Float32; + modelProb @13 :Float32; + radar @14 :Bool; + radarTrackId @15 :Int32 = -1; -struct CustomReserved7 @0xb86e6369214c01c8 { -} - -struct CustomReserved8 @0xf416ec09499d9d19 { -} - -struct CustomReserved9 @0xa1680744031fdb2d { + aLeadDEPRECATED @5 :Float32; + } } diff --git a/cereal/log.capnp b/cereal/log.capnp index c06556e94..54e877f2a 100644 --- a/cereal/log.capnp +++ b/cereal/log.capnp @@ -335,12 +335,6 @@ enum LaneChangeDirection { right @2; } -enum TurnDirection { - none @0; - turnLeft @1; - turnRight @2; -} - struct CanData { address @0 :UInt32; busTime @1 :UInt16; @@ -618,8 +612,6 @@ struct RadarState @0x9a185389d6fdd05f { leadOne @3 :LeadData; leadTwo @4 :LeadData; - leadLeft @13 :LeadData; - leadRight @14 :LeadData; cumLagMs @5 :Float32; struct LeadData { @@ -638,7 +630,6 @@ struct RadarState @0x9a185389d6fdd05f { modelProb @13 :Float32; radar @14 :Bool; radarTrackId @15 :Int32 = -1; - farLead @16 :Bool; aLeadDEPRECATED @5 :Float32; } @@ -754,7 +745,6 @@ struct ControlsState @0x97ff69c53601abf1 { normal @0; # low priority alert for user's convenience userPrompt @1; # mid priority alert that might require user intervention critical @2; # high priority alert that needs immediate user intervention - frogpilot @3; # FrogPilot startup alert } enum AlertSize { @@ -805,7 +795,6 @@ struct ControlsState @0x97ff69c53601abf1 { saturated @7 :Bool; actualLateralAccel @9 :Float32; desiredLateralAccel @10 :Float32; - nnLog @11 :List(Float32); } struct LateralLQRState { @@ -908,7 +897,6 @@ struct DrivingModelData { struct MetaData { laneChangeState @0 :LaneChangeState; laneChangeDirection @1 :LaneChangeDirection; - turnDirection @2 :TurnDirection; } } @@ -1002,7 +990,6 @@ struct ModelDataV2 { hardBrakePredicted @7 :Bool; laneChangeState @8 :LaneChangeState; laneChangeDirection @9 :LaneChangeDirection; - turnDirection @10 :TurnDirection; # deprecated @@ -2418,16 +2405,16 @@ struct Event { customReservedRawData2 @126 :Data; # *********** Custom: reserved for forks *********** - frogpilotCarParams @107 :Custom.FrogPilotCarParams; - frogpilotCarState @108 :Custom.FrogPilotCarState; - frogpilotDeviceState @109 :Custom.FrogPilotDeviceState; - frogpilotNavigation @110 :Custom.FrogPilotNavigation; - frogpilotPlan @111 :Custom.FrogPilotPlan; - customReserved5 @112 :Custom.CustomReserved5; - customReserved6 @113 :Custom.CustomReserved6; - customReserved7 @114 :Custom.CustomReserved7; - customReserved8 @115 :Custom.CustomReserved8; - customReserved9 @116 :Custom.CustomReserved9; + frogpilotCarControl @107 :Custom.FrogPilotCarControl; + frogpilotCarParams @108 :Custom.FrogPilotCarParams; + frogpilotCarState @109 :Custom.FrogPilotCarState; + frogpilotControlsState @110 :Custom.FrogPilotControlsState; + frogpilotDeviceState @111 :Custom.FrogPilotDeviceState; + frogpilotModelV2 @112 :Custom.FrogPilotModelDataV2; + frogpilotNavigation @113 :Custom.FrogPilotNavigation; + frogpilotOnroadEvents @114: List(Custom.FrogPilotCarEvent); + frogpilotPlan @115 :Custom.FrogPilotPlan; + frogpilotRadarState @116 :Custom.FrogPilotRadarState; # *********** legacy + deprecated *********** model @9 :Legacy.ModelData; # TODO: rename modelV2 and mark this as deprecated diff --git a/cereal/services.py b/cereal/services.py index 76dff67f6..5fab38afd 100755 --- a/cereal/services.py +++ b/cereal/services.py @@ -94,11 +94,16 @@ _services: dict[str, tuple] = { "customReservedRawData2": (True, 0.), # FrogPilot + "frogpilotCarControl": (True, 100., 10), "frogpilotCarParams": (True, 0.02, 1), "frogpilotCarState": (True, 100., 10), + "frogpilotControlsState": (True, 100., 10), "frogpilotDeviceState": (True, 2., 1), + "frogpilotModelV2": (True, 20., 40), "frogpilotNavigation": (True, 1., 10), + "frogpilotOnroadEvents": (True, 1., 1), "frogpilotPlan": (True, 20., 5), + "frogpilotRadarState": (True, 20., 5), } SERVICE_LIST = {name: Service(*vals) for idx, (name, vals) in enumerate(_services.items())} diff --git a/common/conversions.py b/common/conversions.py index 62c8debdb..3cdbd94da 100644 --- a/common/conversions.py +++ b/common/conversions.py @@ -14,6 +14,8 @@ class Conversions: # Distance METER_TO_FOOT = 3.28084 FOOT_TO_METER = 1. / METER_TO_FOOT + METER_TO_MILE = METER_TO_FOOT / 5280 + MILE_TO_METER = 1. / METER_TO_MILE CM_TO_INCH = 1. / 2.54 INCH_TO_CM = 1. / CM_TO_INCH diff --git a/common/params.cc b/common/params.cc index 73942a86c..a65d522ae 100644 --- a/common/params.cc +++ b/common/params.cc @@ -246,6 +246,8 @@ std::unordered_map keys = { {"BlindSpotMetrics", PERSISTENT}, {"BlindSpotPath", PERSISTENT}, {"BorderMetrics", PERSISTENT}, + {"CalibratedLateralAcceleration", PERSISTENT}, + {"CalibrationProgress", PERSISTENT}, {"CameraView", PERSISTENT}, {"CancelModelDownload", CLEAR_ON_MANAGER_START}, {"CancelThemeDownload", CLEAR_ON_MANAGER_START}, @@ -271,8 +273,8 @@ std::unordered_map keys = { {"ColorToDownload", CLEAR_ON_MANAGER_START}, {"Compass", PERSISTENT}, {"ConditionalExperimental", PERSISTENT}, - {"CurveSensitivity", PERSISTENT}, - {"CurveSpeedControl", PERSISTENT}, + {"CurvatureData", PERSISTENT | DONT_LOG}, + {"CurveSpeedController", PERSISTENT}, {"CustomAlerts", PERSISTENT}, {"CustomColors", PERSISTENT}, {"CustomCruise", PERSISTENT}, @@ -327,8 +329,8 @@ std::unordered_map keys = { {"ForceMPHDashboard", PERSISTENT}, {"ForceOffroad", CLEAR_ON_MANAGER_START}, {"ForceOnroad", CLEAR_ON_MANAGER_START}, - {"ForceStandstill", PERSISTENT}, {"ForceStops", PERSISTENT}, + {"ForceTorqueController", PERSISTENT}, {"FPSCounter", PERSISTENT}, {"FrogPilotCarParams", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION}, {"FrogPilotCarParamsPersistent", PERSISTENT}, @@ -347,6 +349,7 @@ std::unordered_map keys = { {"GreenLightAlert", PERSISTENT}, {"HideAlerts", PERSISTENT}, {"HideLeadMarker", PERSISTENT}, + {"HideMap", PERSISTENT}, {"HideMapIcon", PERSISTENT}, {"HideMaxSpeed", PERSISTENT}, {"HideSpeed", PERSISTENT}, @@ -361,7 +364,7 @@ std::unordered_map keys = { {"IssueReported", CLEAR_ON_MANAGER_START}, {"KonikDongleId", PERSISTENT}, {"KonikMinutes", PERSISTENT}, - {"LaneChangeCustomizations", PERSISTENT}, + {"LaneChanges", PERSISTENT}, {"LaneChangeTime", PERSISTENT}, {"LaneDetectionWidth", PERSISTENT}, {"LaneLinesWidth", PERSISTENT}, @@ -391,8 +394,6 @@ std::unordered_map keys = { {"MapsSelected", PERSISTENT}, {"MapSpeedLimit", CLEAR_ON_MANAGER_START}, {"MapStyle", PERSISTENT}, - {"MapTargetVelocities", CLEAR_ON_MANAGER_START}, - {"MapTurnControl", PERSISTENT}, {"MaxDesiredAcceleration", PERSISTENT}, {"MinimumBackupSize", PERSISTENT}, {"MinimumLaneChangeSpeed", PERSISTENT}, @@ -403,7 +404,6 @@ std::unordered_map keys = { {"ModelToDownload", CLEAR_ON_MANAGER_START}, {"ModelUI", PERSISTENT}, {"ModelVersions", PERSISTENT}, - {"MTSCCurvatureCheck", PERSISTENT}, {"NavigationUI", PERSISTENT}, {"NextMapSpeedLimit", CLEAR_ON_MANAGER_START}, {"NewLongAPI", PERSISTENT}, @@ -476,6 +476,7 @@ std::unordered_map keys = { {"ShowGPU", PERSISTENT}, {"ShowIP", PERSISTENT}, {"ShowMemoryUsage", PERSISTENT}, + {"ShownToggleDescriptions", PERSISTENT}, {"ShowSLCOffset", PERSISTENT}, {"ShowSpeedLimits", PERSISTENT}, {"ShowSteering", PERSISTENT}, @@ -540,6 +541,9 @@ std::unordered_map keys = { {"TestAlert", CLEAR_ON_MANAGER_START}, {"TetheringEnabled", PERSISTENT}, {"ThemeDownloadProgress", CLEAR_ON_MANAGER_START}, + {"ThemesDownloaded", PERSISTENT}, + {"TinygradUpdateAvailable", PERSISTENT}, + {"TogglesUpdated", PERSISTENT}, {"ToyotaDoors", PERSISTENT}, {"TrafficFollow", PERSISTENT}, {"TrafficJerkAcceleration", PERSISTENT}, @@ -550,14 +554,15 @@ std::unordered_map keys = { {"TrafficPersonalityProfile", PERSISTENT}, {"TuningLevel", PERSISTENT}, {"TuningLevelConfirmed", PERSISTENT}, - {"TurnAggressiveness", PERSISTENT}, {"TurnDesires", PERSISTENT}, {"UnlimitedLength", PERSISTENT}, {"UnlockDoors", PERSISTENT}, {"Updated", PERSISTENT}, {"UpdateSpeedLimits", CLEAR_ON_MANAGER_START}, {"UpdateSpeedLimitsStatus", CLEAR_ON_MANAGER_START}, + {"UpdateTinygrad", CLEAR_ON_MANAGER_START}, {"UpdateWheelImage", CLEAR_ON_MANAGER_START}, + {"UseActiveTheme", CLEAR_ON_MANAGER_START}, {"UseKonikServer", PERSISTENT}, {"UseSI", PERSISTENT}, {"UseVienna", PERSISTENT}, @@ -566,7 +571,6 @@ std::unordered_map keys = { {"VEgoStopping", PERSISTENT}, {"VEgoStoppingStock", PERSISTENT}, {"VeryLongDistanceButtonControl", PERSISTENT}, - {"VisionTurnControl", PERSISTENT}, {"VoltSNG", PERSISTENT}, {"WarningImmediateVolume", PERSISTENT}, {"WarningSoftVolume", PERSISTENT}, diff --git a/frogpilot/assets/download_functions.py b/frogpilot/assets/download_functions.py index 71f97554e..5abed191f 100644 --- a/frogpilot/assets/download_functions.py +++ b/frogpilot/assets/download_functions.py @@ -30,7 +30,7 @@ def check_github_rate_limit(session): print(f"Error checking GitHub rate limit: {exception}") return False -def download_file(cancel_param, destination, progress_param, url, download_param, session, files=1, file_number=1): +def download_file(cancel_param, destination, progress_param, url, download_param, session, offset_bytes=0, total_bytes=0): try: destination.parent.mkdir(parents=True, exist_ok=True) @@ -57,8 +57,10 @@ def download_file(cancel_param, destination, progress_param, url, download_param temp_file.write(chunk) downloaded_size += len(chunk) - file_progress = downloaded_size / total_size - overall_progress = ((file_number - 1) + file_progress) / files * 100 + if total_bytes: + overall_progress = (offset_bytes + downloaded_size) / total_bytes * 100 + else: + overall_progress = downloaded_size / total_size * 100 if overall_progress != 100: params_memory.put(progress_param, f"{overall_progress:.0f}%") @@ -98,10 +100,10 @@ def handle_error(destination, error_message, error, download_param, progress_par def handle_request_error(error, destination, download_param, progress_param): error_map = { - requests.ConnectionError: "Connection dropped", - requests.HTTPError: lambda error: f"Server error ({error.response.status_code})" if error.response else "Server error", - requests.RequestException: "Network request error. Check connection", - requests.Timeout: "Download timed out" + requests.exceptions.ConnectionError: "Connection dropped", + requests.exceptions.HTTPError: lambda error: f"Server error ({error.response.status_code})" if error and getattr(error, "response", None) else "Server error", + requests.exceptions.RequestException: "Network request error. Check connection", + requests.exceptions.Timeout: "Download timed out", } error_message = error_map.get(type(error), "Unexpected error") diff --git a/frogpilot/assets/holiday_themes/halloween_week/sounds/prompt_repeat.wav b/frogpilot/assets/holiday_themes/halloween_week/sounds/prompt.wav similarity index 100% rename from frogpilot/assets/holiday_themes/halloween_week/sounds/prompt_repeat.wav rename to frogpilot/assets/holiday_themes/halloween_week/sounds/prompt.wav diff --git a/frogpilot/assets/model_manager.py b/frogpilot/assets/model_manager.py index e982e16ff..c0500c7c1 100644 --- a/frogpilot/assets/model_manager.py +++ b/frogpilot/assets/model_manager.py @@ -7,24 +7,30 @@ import time import urllib.parse from pathlib import Path +from urllib.parse import quote_plus from openpilot.common.basedir import BASEDIR -from openpilot.frogpilot.assets.download_functions import GITLAB_URL, download_file, get_repository_url, handle_error, handle_request_error, verify_download -from openpilot.frogpilot.common.frogpilot_utilities import delete_file -from openpilot.frogpilot.common.frogpilot_variables import DEFAULT_CLASSIC_MODEL, DEFAULT_MODEL, DEFAULT_TINYGRAD_MODEL, MODELS_PATH, RESOURCES_REPO, TINYGRAD_FILES, \ - params, params_default, params_memory +from openpilot.frogpilot.assets.download_functions import GITLAB_URL, download_file, get_remote_file_size, get_repository_url, handle_error, handle_request_error, verify_download +from openpilot.frogpilot.common.frogpilot_utilities import delete_file, extract_tar, load_json_file, update_json_file +from openpilot.frogpilot.common.frogpilot_variables import DEFAULT_MODEL, MODELS_PATH, RESOURCES_REPO, TINYGRAD_FILES, params, params_default, params_memory, update_frogpilot_toggles -VERSION = "v15" +VERSION = "v16" +VERSION_PATH = MODELS_PATH / "model_version" CANCEL_DOWNLOAD_PARAM = "CancelModelDownload" DOWNLOAD_PROGRESS_PARAM = "ModelDownloadProgress" MODEL_DOWNLOAD_PARAM = "ModelToDownload" MODEL_DOWNLOAD_ALL_PARAM = "DownloadAllModels" +UPDATE_TINYGRAD_PARAM = "UpdateTinygrad" + +DEFAULT_TINYGRAD_SIZE = 87746736 +TAR_FILE_NAME = f"Tinygrad_{VERSION}.tar.gz" TINYGRAD_MODELD_PATH = Path(BASEDIR) / "frogpilot/tinygrad_modeld" +TINYGRAD_REPO_PATH = Path(BASEDIR) / "tinygrad_repo" class ModelManager: - def __init__(self): + def __init__(self, boot_run=False): self.downloading_model = False self.available_models = (params.get("AvailableModels", encoding="utf-8") or "").split(",") @@ -32,29 +38,34 @@ class ModelManager: self.model_versions = (params.get("ModelVersions", encoding="utf-8") or "").split(",") self.model_sizes_path = MODELS_PATH / "model_sizes.json" + self.tinygrad_sizes_path = MODELS_PATH / "tinygrad_sizes.json" + + self.model_sizes = load_json_file(self.model_sizes_path) + self.tinygrad_sizes = load_json_file(self.tinygrad_sizes_path) self.session = requests.Session() self.session.headers.update({"Accept-Language": "en"}) self.session.headers.update({"User-Agent": "frogpilot-model-downloader/1.0 (https://github.com/FrogAi/FrogPilot)"}) - def check_models(self, boot_run, repo_url): - downloaded_models = [path for path in MODELS_PATH.iterdir() if path.is_file()] + if boot_run: + self.copy_default_model() + self.validate_models() + def check_models(self, boot_run, repo_url): + downloaded_models = [ + model for model in MODELS_PATH.iterdir() + if (MODELS_PATH / f"{model}.thneed").is_file() or all((MODELS_PATH / f"{model}_{filename}").is_file() for filename, _ in TINYGRAD_FILES) + ] for model_file in downloaded_models: - if model_file.name not in {self.model_sizes_path.name} and not any(model in model_file.name for model in set(self.available_models)): + if not any(model in model_file.name for model in set(self.available_models)): print(f"Removing outdated model: {model_file}") delete_file(model_file) - for onnx_file in MODELS_PATH.glob("*.onnx"): - if onnx_file.is_file(): - print(f"Deleting .onnx file: {onnx_file}") - delete_file(onnx_file) - for tmp_file in MODELS_PATH.glob("tmp*"): if tmp_file.is_file(): delete_file(tmp_file) - if params.get("Model", encoding="utf-8") not in self.available_models: + if params.get("Model", encoding="utf-8").removesuffix("_default") not in self.available_models: params.put("Model", params_default.get("Model", encoding="utf-8")) if not (not boot_run and params.get_bool("AutomaticallyDownloadModels")): @@ -65,46 +76,80 @@ class ModelManager: print("No model size data available. Skipping model checks...") return - local_model_sizes = self.load_model_sizes() - - needs_download = False - for model, version in zip(self.available_models, self.model_versions): - if version in {"v1", "v2", "v3", "v4", "v5", "v6"}: + need_to_update_models = False + for model in self.available_models: + if self.is_tinygrad_model(model): model_file = MODELS_PATH / f"{model}.thneed" if not model_file.is_file(): - needs_download = True + need_to_update_models = True continue expected_size = model_sizes.get(model_file.name) - local_size = local_model_sizes.get(model_file.name) + local_size = self.model_sizes.get(model_file.name) if expected_size > 0 and local_size != expected_size: print(f"Model {model} is outdated. Deleting {model_file}...") delete_file(model_file) - needs_download = True + need_to_update_models = True + else: + model_missing = False + model_outdated = False - if needs_download: + for filename, _ in TINYGRAD_FILES: + expected_file = MODELS_PATH / f"{model}_{filename}" + if not expected_file.is_file(): + model_missing = True + need_to_update_models = True + break + + for filename, _ in TINYGRAD_FILES: + model_file = f"{model}_{filename}" + + expected_size = model_sizes.get(model_file) + local_size = self.model_sizes.get(model_file) + + if expected_size > 0 and local_size != expected_size: + model_outdated = True + need_to_update_models = True + break + + if model_missing or model_outdated: + print(f"Model {model} is either missing required files or outdated. Deleting...") + for filename, _ in TINYGRAD_FILES: + delete_file(MODELS_PATH / f"{model}_{filename}") + + if need_to_update_models: params_memory.put_bool(MODEL_DOWNLOAD_ALL_PARAM, True) + def check_tinygrad(self, repo_url): + tinygrad_url = f"{repo_url}/Tinygrad/{TAR_FILE_NAME}" + + expected_size = get_remote_file_size(tinygrad_url, self.session) + local_size = int(self.tinygrad_sizes.get(TAR_FILE_NAME, 0)) + + if expected_size > 0 and local_size != expected_size: + print(f"Tinygrad version {VERSION} is outdated, expected_size: {expected_size}, local_size: {local_size}, flagging for update...") + params.put_bool("TinygradUpdateAvailable", True) + def copy_default_model(self): - classic_default_model_path = MODELS_PATH / f"{DEFAULT_CLASSIC_MODEL}.thneed" + classic_default_model_path = MODELS_PATH / "wd-40.thneed" source_path = Path(__file__).parents[1] / "classic_modeld/models/supercombo.thneed" - if source_path.is_file() and not classic_default_model_path.is_file(): + if source_path.is_file() and (not classic_default_model_path.is_file() or source_path.stat().st_size != classic_default_model_path.stat().st_size): shutil.copyfile(source_path, classic_default_model_path) print(f"Copied the classic default model from {source_path} to {classic_default_model_path}") self.update_model_size(classic_default_model_path) - default_model_path = MODELS_PATH / f"{DEFAULT_MODEL}.thneed" + default_model_path = MODELS_PATH / "national-public-radio.thneed" source_path = Path(__file__).parents[2] / "selfdrive/modeld/models/supercombo.thneed" - if source_path.is_file() and not default_model_path.is_file(): + if source_path.is_file() and (not default_model_path.is_file() or source_path.stat().st_size != default_model_path.stat().st_size): shutil.copyfile(source_path, default_model_path) print(f"Copied the default model from {source_path} to {default_model_path}") self.update_model_size(default_model_path) for filename, description in TINYGRAD_FILES: source = TINYGRAD_MODELD_PATH / "models" / filename - target = MODELS_PATH / f"{DEFAULT_TINYGRAD_MODEL}_{filename}" - if source.is_file() and not target.is_file(): + target = MODELS_PATH / f"{DEFAULT_MODEL}_{filename}" + if source.is_file() and (not target.is_file() or source.stat().st_size != target.stat().st_size): shutil.copyfile(source, target) print(f"Copied the tinygrad {description} from {source} to {target}") @@ -121,16 +166,20 @@ class ModelManager: handle_error(None, "Download cancelled...", "Download cancelled...", MODEL_DOWNLOAD_ALL_PARAM, DOWNLOAD_PROGRESS_PARAM) return - already_downloaded = [model_file for model_file in MODELS_PATH.iterdir() if model_file.is_file() and model in model_file.name] + if self.is_tinygrad_model(model): + already_downloaded = (MODELS_PATH / f"{model}.thneed").is_file() + else: + already_downloaded = all((MODELS_PATH / f"{model}_{filename}").is_file() for filename, _ in TINYGRAD_FILES) + if already_downloaded: continue print(f"Model {model} is not downloaded. Preparing to download...") params_memory.put(DOWNLOAD_PROGRESS_PARAM, f"Downloading \"{self.available_model_names[self.available_models.index(model)]}\"...") - self.download_model(model) params_memory.put(DOWNLOAD_PROGRESS_PARAM, "All models downloaded!") + params_memory.remove(MODEL_DOWNLOAD_ALL_PARAM) def download_model(self, model_to_download): self.downloading_model = True @@ -141,7 +190,7 @@ class ModelManager: self.downloading_model = False return - if self.model_versions[self.available_models.index(model_to_download)] in {"v1", "v2", "v3", "v4", "v5", "v6"}: + if self.is_tinygrad_model(model_to_download): model_path = MODELS_PATH / f"{model_to_download}.thneed" model_url = f"{repo_url}/Models/{model_to_download}.thneed" @@ -149,6 +198,8 @@ class ModelManager: download_file(CANCEL_DOWNLOAD_PARAM, model_path, DOWNLOAD_PROGRESS_PARAM, model_url, MODEL_DOWNLOAD_PARAM, self.session) if params_memory.get_bool(CANCEL_DOWNLOAD_PARAM): + delete_file(model_path) + handle_error(None, "Download cancelled...", "Download cancelled...", MODEL_DOWNLOAD_PARAM, DOWNLOAD_PROGRESS_PARAM) self.downloading_model = False return @@ -156,8 +207,10 @@ class ModelManager: if verify_download(model_path, model_url, self.session): print(f"Model {model_to_download} downloaded and verified successfully!") self.update_model_size(model_path) + params_memory.put(DOWNLOAD_PROGRESS_PARAM, "Downloaded!") params_memory.remove(MODEL_DOWNLOAD_PARAM) + self.downloading_model = False return @@ -166,6 +219,8 @@ class ModelManager: download_file(CANCEL_DOWNLOAD_PARAM, model_path, DOWNLOAD_PROGRESS_PARAM, fallback_url, MODEL_DOWNLOAD_PARAM, self.session) if params_memory.get_bool(CANCEL_DOWNLOAD_PARAM): + delete_file(model_path) + handle_error(None, "Download cancelled...", "Download cancelled...", MODEL_DOWNLOAD_PARAM, DOWNLOAD_PROGRESS_PARAM) self.downloading_model = False return @@ -173,40 +228,132 @@ class ModelManager: if verify_download(model_path, fallback_url, self.session): print(f"Model {model_to_download} downloaded and verified successfully from GitLab!") self.update_model_size(model_path) + params_memory.put(DOWNLOAD_PROGRESS_PARAM, "Downloaded!") params_memory.remove(MODEL_DOWNLOAD_PARAM) + self.downloading_model = False else: handle_error(model_path, "Verification failed...", "GitLab verification failed", MODEL_DOWNLOAD_PARAM, DOWNLOAD_PROGRESS_PARAM) self.downloading_model = False + else: + all_model_sizes = self.fetch_all_model_sizes(repo_url) or {} + tinygrad_filenames = [f"{model_to_download}_{file_key}" for file_key, _ in TINYGRAD_FILES] + + file_sizes = [] + file_sources = [] + + missing = [name for name in tinygrad_filenames if int(all_model_sizes.get(name, 0)) <= 0] + if missing: + handle_error(None, "Missing size metadata...", f"Sizes not found for: {', '.join(missing)}...", MODEL_DOWNLOAD_PARAM, DOWNLOAD_PROGRESS_PARAM) + self.downloading_model = False + return + + for filename in tinygrad_filenames: + primary_url = f"{repo_url}/Models/compiled/{filename}" + file_size = int(all_model_sizes.get(filename, 0)) + file_sizes.append(file_size) + file_sources.append((primary_url, None)) + + downloaded_offset_bytes = 0 + known_file_sizes = [size for size in file_sizes if size > 0] + total_model_bytes = sum(known_file_sizes) if len(known_file_sizes) == len(file_sizes) else 0 + + for (file_key, description), part_bytes, (primary_url, fallback_url) in zip(TINYGRAD_FILES, file_sizes, file_sources): + filename = f"{model_to_download}_{file_key}" + model_path = MODELS_PATH / filename + + print(f"Downloading {description} for model: {model_to_download}") + download_file(CANCEL_DOWNLOAD_PARAM, model_path, DOWNLOAD_PROGRESS_PARAM, primary_url, MODEL_DOWNLOAD_PARAM, self.session, offset_bytes=downloaded_offset_bytes, total_bytes=total_model_bytes) + + if params_memory.get_bool(CANCEL_DOWNLOAD_PARAM): + delete_file(model_path) + + handle_error(None, "Download cancelled...", "Download cancelled...", MODEL_DOWNLOAD_PARAM, DOWNLOAD_PROGRESS_PARAM) + self.downloading_model = False + return + + if verify_download(model_path, primary_url, self.session): + print(f"{description.capitalize()} for {model_to_download} downloaded and verified successfully!") + if total_model_bytes: + downloaded_offset_bytes += part_bytes + continue + + print(f"Verification failed for {filename}. Retrying from GitLab...") + fallback_url = f"{GITLAB_URL}/Models/compiled/{filename}" + download_file(CANCEL_DOWNLOAD_PARAM, model_path, DOWNLOAD_PROGRESS_PARAM, fallback_url, MODEL_DOWNLOAD_PARAM, self.session, offset_bytes=downloaded_offset_bytes, total_bytes=total_model_bytes) + + if params_memory.get_bool(CANCEL_DOWNLOAD_PARAM): + delete_file(model_path) + + handle_error(None, "Download cancelled...", "Download cancelled...", MODEL_DOWNLOAD_PARAM, DOWNLOAD_PROGRESS_PARAM) + self.downloading_model = False + return + + if verify_download(model_path, fallback_url, self.session): + print(f"{description.capitalize()} for {model_to_download} downloaded and verified successfully from GitLab!") + if total_model_bytes: + downloaded_offset_bytes += part_bytes + else: + handle_error(model_path, "Verification failed...", f"GitLab verification failed for {filename}", MODEL_DOWNLOAD_PARAM, DOWNLOAD_PROGRESS_PARAM) + self.downloading_model = False + return + + print(f"Updating model sizes for {model_to_download}...") + for filename, _ in TINYGRAD_FILES: + file_path = MODELS_PATH / f"{model_to_download}_{filename}" + self.update_model_size(file_path) + + params_memory.put(DOWNLOAD_PROGRESS_PARAM, "Downloaded!") + params_memory.remove(MODEL_DOWNLOAD_PARAM) + + self.downloading_model = False def fetch_all_model_sizes(self, repo_url): - if "github" in repo_url: - api_url = f"https://api.github.com/repos/{RESOURCES_REPO}/contents?ref=Models" - elif "gitlab" in repo_url: - api_url = f"https://gitlab.com/api/v4/projects/{urllib.parse.quote_plus(RESOURCES_REPO)}/repository/tree?ref=Models" - else: - return {} + is_github = "github" in repo_url + is_gitlab = "gitlab" in repo_url + repo_encoded = quote_plus(RESOURCES_REPO) + model_sizes = {} try: - response = self.session.get(api_url) - response.raise_for_status() + def fetch_dir_sizes(api_url): + sizes = {} + print(f"Fetching model metadata: {api_url}") + response = self.session.get(api_url, timeout=10) + response.raise_for_status() + content = response.json() - model_files = [file for file in response.json() if "." in file["name"]] + model_files = [file for file in content if "." in file["name"]] - if "gitlab" in repo_url: - model_sizes = {} - for file in model_files: - metadata_url = f"https://gitlab.com/api/v4/projects/{urllib.parse.quote_plus(RESOURCES_REPO)}/repository/files/{urllib.parse.quote_plus(file['path'])}/raw?ref=Models" - metadata_response = self.session.head(metadata_url) - metadata_response.raise_for_status() - model_sizes[file["name"]] = int(metadata_response.headers.get("content-length", 0)) - return model_sizes + if is_github: + for file in model_files: + sizes[file["name"]] = file.get("size", 0) + else: + for file in model_files: + file_path = quote_plus(file["path"]) + metadata_url = f"https://gitlab.com/api/v4/projects/{repo_encoded}/repository/files/{file_path}/raw?ref=Models" + head_response = self.session.head(metadata_url, timeout=10) + if head_response.ok: + sizes[file["name"]] = int(head_response.headers.get("content-length", 0)) + return sizes + + if is_github: + top_api_url = f"https://api.github.com/repos/{RESOURCES_REPO}/contents?ref=Models" + version_api_url = f"https://api.github.com/repos/{RESOURCES_REPO}/contents/compiled?ref=Models" + elif is_gitlab: + top_api_url = f"https://gitlab.com/api/v4/projects/{repo_encoded}/repository/tree?ref=Models" + version_api_url = f"https://gitlab.com/api/v4/projects/{repo_encoded}/repository/tree?path=compiled&ref=Models" else: - return {file["name"]: file["size"] for file in model_files if "size" in file} + print(f"Unsupported repository URL: {repo_url}") + return model_sizes - except Exception as exception: - handle_request_error(f"Failed to fetch model sizes from {'GitHub' if 'github' in repo_url else 'GitLab'}: {exception}", None, None, None) + model_sizes.update(fetch_dir_sizes(top_api_url)) + model_sizes.update(fetch_dir_sizes(version_api_url)) + + return model_sizes + + except requests.exceptions.RequestException as e: + handle_request_error(f"Failed to fetch model sizes from {'GitHub' if is_github else 'GitLab'}: {e}", None, None, None) return {} def fetch_models(self, url, repo_url, boot_run=False): @@ -218,15 +365,13 @@ class ModelManager: if model_info: self.update_model_params(model_info) self.check_models(boot_run, repo_url) + self.check_tinygrad(repo_url) except Exception as exception: handle_request_error(exception, None, None, None) return [] - def load_model_sizes(self): - if self.model_sizes_path.is_file(): - with open(self.model_sizes_path) as f: - return json.load(f) - return {} + def is_tinygrad_model(self, model): + return self.model_versions[self.available_models.index(model)] in {"v1", "v2", "v3", "v4", "v5", "v6"} def update_model_params(self, model_info): self.available_models = [model["id"] for model in model_info] @@ -250,9 +395,136 @@ class ModelManager: self.fetch_models(f"{repo_url}/Versions/model_names_{VERSION}.json", repo_url, boot_run) def update_model_size(self, file_path): - sizes = self.load_model_sizes() - sizes[file_path.name] = file_path.stat().st_size - - with open(self.model_sizes_path, "w") as f: - json.dump(sizes, f, indent=2) + self.model_sizes[file_path.name] = file_path.stat().st_size + update_json_file(self.model_sizes_path, self.model_sizes) print(f"Updated size for {file_path.name} in {self.model_sizes_path.name}") + + def update_tinygrad_size(self, file_path): + self.tinygrad_sizes[TAR_FILE_NAME] = file_path.stat().st_size + update_json_file(self.tinygrad_sizes_path, self.tinygrad_sizes) + print(f"Updated size for {TAR_FILE_NAME} in {self.tinygrad_sizes_path.name}") + + def update_tinygrad(self): + repo_url = get_repository_url(self.session) + if not repo_url: + handle_error(None, "GitHub and GitLab are offline...", "Repository unavailable", None, None) + return + + primary_url = f"{repo_url}/Tinygrad/{TAR_FILE_NAME}" + fallback_url = f"https://gitlab.com/{RESOURCES_REPO}/-/raw/Tinygrad/{TAR_FILE_NAME}" + + tinygrad_tar_path = Path("/data/tmp/tinygrad.tar.gz") + try: + print(f"Attempting to download tinygrad from {primary_url}...") + download_file(CANCEL_DOWNLOAD_PARAM, tinygrad_tar_path, DOWNLOAD_PROGRESS_PARAM, primary_url, UPDATE_TINYGRAD_PARAM, self.session) + + if params_memory.get_bool(CANCEL_DOWNLOAD_PARAM): + delete_file(tinygrad_tar_path) + + handle_error(None, "Tinygrad update cancelled...", "Tinygrad update cancelled...", UPDATE_TINYGRAD_PARAM, DOWNLOAD_PROGRESS_PARAM) + params_memory.remove("CancelModelDownload") + return + + if not verify_download(tinygrad_tar_path, primary_url, self.session): + print(f"Verification failed for {primary_url}. Retrying from GitLab...") + download_file(CANCEL_DOWNLOAD_PARAM, tinygrad_tar_path, DOWNLOAD_PROGRESS_PARAM, fallback_url, UPDATE_TINYGRAD_PARAM, self.session) + + if params_memory.get_bool(CANCEL_DOWNLOAD_PARAM): + delete_file(tinygrad_tar_path) + + handle_error(None, "Tinygrad update cancelled...", "Tinygrad update cancelled...", UPDATE_TINYGRAD_PARAM, DOWNLOAD_PROGRESS_PARAM) + params_memory.remove("CancelModelDownload") + return + + if not verify_download(tinygrad_tar_path, fallback_url, self.session): + handle_error(tinygrad_tar_path, "Verification Failed", "Tinygrad verification failed", UPDATE_TINYGRAD_PARAM, DOWNLOAD_PROGRESS_PARAM) + return + + print("Tinygrad downloaded successfully! Proceeding with installation...") + self.update_tinygrad_size(tinygrad_tar_path) + + params_memory.put(DOWNLOAD_PROGRESS_PARAM, "Installing...") + + print("Deleting old tinygrad directories...") + delete_file(TINYGRAD_MODELD_PATH) + print(f"Removed {TINYGRAD_MODELD_PATH}") + delete_file(TINYGRAD_REPO_PATH) + print(f"Removed {TINYGRAD_REPO_PATH}") + + extract_tar(tinygrad_tar_path, Path(BASEDIR)) + + print("Tinygrad update completed successfully!") + + params.put_bool("TinygradUpdateAvailable", False) + + params_memory.put(DOWNLOAD_PROGRESS_PARAM, "Updated!") + params_memory.remove(UPDATE_TINYGRAD_PARAM) + + self.update_tinygrad_models(repo_url) + except Exception as exception: + handle_error(tinygrad_tar_path, "Update Failed", f"An unexpected error occurred: {exception}", UPDATE_TINYGRAD_PARAM, DOWNLOAD_PROGRESS_PARAM) + + def update_tinygrad_models(self, repo_url=None): + print("Updating old Tinygrad models...") + + installed_tinygrad_models = set() + for filename, _ in TINYGRAD_FILES: + suffix = f"_{filename}" + for file_path in MODELS_PATH.glob(f"*{suffix}"): + model_name = file_path.name.rsplit(suffix, 1)[0] + if model_name in set(self.available_models): + installed_tinygrad_models.add(model_name) + delete_file(file_path) + + self.copy_default_model() + + update_frogpilot_toggles() + + if repo_url is None: + return + + current_model = params.get("Model", encoding="utf-8").removesuffix("_default") + + models_to_redownload = [current_model] + models_to_redownload += [model for model in sorted(installed_tinygrad_models) if model != current_model] + + if DEFAULT_MODEL in models_to_redownload: + models_to_redownload.remove(DEFAULT_MODEL) + + if models_to_redownload: + print(f"Redownloading the following models: {', '.join(models_to_redownload)}") + self.fetch_models(f"{repo_url}/Versions/model_names_{VERSION}.json", repo_url, boot_run=True) + + for model in models_to_redownload: + if params_memory.get_bool(CANCEL_DOWNLOAD_PARAM): + handle_error(None, "Download cancelled...", "Download cancelled...", MODEL_DOWNLOAD_ALL_PARAM, DOWNLOAD_PROGRESS_PARAM) + return + + params_memory.put(DOWNLOAD_PROGRESS_PARAM, f"Downloading \"{self.available_model_names[self.available_models.index(model)]}\"...") + self.download_model(model) + else: + print("No previously installed tinygrad models to redownload") + + update_frogpilot_toggles() + + def validate_models(self): + current = params.get("Model", encoding="utf-8") + default = params_default.get("Model", encoding="utf-8") + + if current.endswith("_default") and current != default: + print(f"Model '{current}' does not match default '{default}', resetting...") + params.put("Model", default) + + if VERSION_PATH.is_file(): + version_name = VERSION_PATH.read_text().strip() + if version_name != VERSION or int(self.tinygrad_sizes.get(TAR_FILE_NAME, 0)) == 0: + self.update_tinygrad_models() + + self.tinygrad_sizes[TAR_FILE_NAME] = DEFAULT_TINYGRAD_SIZE + update_json_file(self.tinygrad_sizes_path, self.tinygrad_sizes) + print(f"Updated size for {TAR_FILE_NAME} in {self.tinygrad_sizes_path.name}") + + params.remove("TinygradUpdateAvailable") + + VERSION_PATH.write_text(VERSION) + print(f"Updated {VERSION_PATH} to {VERSION}") diff --git a/frogpilot/assets/other_images/chill_mode_icon.gif b/frogpilot/assets/other_images/chill_mode_icon.gif new file mode 100644 index 000000000..3142a908e Binary files /dev/null and b/frogpilot/assets/other_images/chill_mode_icon.gif differ diff --git a/frogpilot/assets/other_images/chill_mode_icon.png b/frogpilot/assets/other_images/chill_mode_icon.png deleted file mode 100644 index 6c511cfbb..000000000 Binary files a/frogpilot/assets/other_images/chill_mode_icon.png and /dev/null differ diff --git a/frogpilot/assets/other_images/curve_icon.gif b/frogpilot/assets/other_images/curve_icon.gif new file mode 100644 index 000000000..f0f707fcf Binary files /dev/null and b/frogpilot/assets/other_images/curve_icon.gif differ diff --git a/frogpilot/assets/other_images/curve_icon.png b/frogpilot/assets/other_images/curve_icon.png deleted file mode 100644 index 594fc0322..000000000 Binary files a/frogpilot/assets/other_images/curve_icon.png and /dev/null differ diff --git a/frogpilot/assets/other_images/curve_speed_left.png b/frogpilot/assets/other_images/curve_speed.png similarity index 100% rename from frogpilot/assets/other_images/curve_speed_left.png rename to frogpilot/assets/other_images/curve_speed.png diff --git a/frogpilot/assets/other_images/experimental_mode_icon.gif b/frogpilot/assets/other_images/experimental_mode_icon.gif new file mode 100644 index 000000000..f7ace74c9 Binary files /dev/null and b/frogpilot/assets/other_images/experimental_mode_icon.gif differ diff --git a/frogpilot/assets/other_images/lead_icon.gif b/frogpilot/assets/other_images/lead_icon.gif new file mode 100644 index 000000000..b28dfe88c Binary files /dev/null and b/frogpilot/assets/other_images/lead_icon.gif differ diff --git a/frogpilot/assets/other_images/lead_icon.png b/frogpilot/assets/other_images/lead_icon.png deleted file mode 100644 index 4d691275c..000000000 Binary files a/frogpilot/assets/other_images/lead_icon.png and /dev/null differ diff --git a/frogpilot/assets/other_images/light_icon.gif b/frogpilot/assets/other_images/light_icon.gif new file mode 100644 index 000000000..01c734b38 Binary files /dev/null and b/frogpilot/assets/other_images/light_icon.gif differ diff --git a/frogpilot/assets/other_images/light_icon.png b/frogpilot/assets/other_images/light_icon.png deleted file mode 100644 index 85c1c5e24..000000000 Binary files a/frogpilot/assets/other_images/light_icon.png and /dev/null differ diff --git a/frogpilot/assets/other_images/speed_icon.gif b/frogpilot/assets/other_images/speed_icon.gif new file mode 100644 index 000000000..df6cc1060 Binary files /dev/null and b/frogpilot/assets/other_images/speed_icon.gif differ diff --git a/frogpilot/assets/other_images/turn_icon.gif b/frogpilot/assets/other_images/turn_icon.gif new file mode 100644 index 000000000..e1b92e510 Binary files /dev/null and b/frogpilot/assets/other_images/turn_icon.gif differ diff --git a/frogpilot/assets/random_events/icons/ferg.png b/frogpilot/assets/random_events/icons/ferg.png new file mode 100644 index 000000000..56dceb3f4 Binary files /dev/null and b/frogpilot/assets/random_events/icons/ferg.png differ diff --git a/frogpilot/assets/stock_theme/icons b/frogpilot/assets/stock_theme/icons new file mode 120000 index 000000000..dad20fe21 --- /dev/null +++ b/frogpilot/assets/stock_theme/icons @@ -0,0 +1 @@ +../../../selfdrive/assets/images \ No newline at end of file diff --git a/frogpilot/assets/stock_theme/icons/button_flag.png b/frogpilot/assets/stock_theme/icons/button_flag.png deleted file mode 100644 index cac4db6d4..000000000 Binary files a/frogpilot/assets/stock_theme/icons/button_flag.png and /dev/null differ diff --git a/frogpilot/assets/stock_theme/icons/button_home.png b/frogpilot/assets/stock_theme/icons/button_home.png deleted file mode 100644 index 9f52faf9e..000000000 Binary files a/frogpilot/assets/stock_theme/icons/button_home.png and /dev/null differ diff --git a/frogpilot/assets/stock_theme/icons/button_settings.png b/frogpilot/assets/stock_theme/icons/button_settings.png deleted file mode 100644 index e04262b88..000000000 Binary files a/frogpilot/assets/stock_theme/icons/button_settings.png and /dev/null differ diff --git a/frogpilot/assets/stock_theme/sounds b/frogpilot/assets/stock_theme/sounds new file mode 120000 index 000000000..30f6f70dd --- /dev/null +++ b/frogpilot/assets/stock_theme/sounds @@ -0,0 +1 @@ +../../../selfdrive/assets/sounds \ No newline at end of file diff --git a/frogpilot/assets/stock_theme/steering_wheel/wheel.png b/frogpilot/assets/stock_theme/steering_wheel/wheel.png deleted file mode 100644 index 3f09a35a7..000000000 Binary files a/frogpilot/assets/stock_theme/steering_wheel/wheel.png and /dev/null differ diff --git a/frogpilot/assets/stock_theme/steering_wheel/wheel.png b/frogpilot/assets/stock_theme/steering_wheel/wheel.png new file mode 120000 index 000000000..c02ac6097 --- /dev/null +++ b/frogpilot/assets/stock_theme/steering_wheel/wheel.png @@ -0,0 +1 @@ +../../../../selfdrive/assets/img_chffr_wheel.png \ No newline at end of file diff --git a/frogpilot/assets/theme_manager.py b/frogpilot/assets/theme_manager.py index 0bebc755f..da372528c 100644 --- a/frogpilot/assets/theme_manager.py +++ b/frogpilot/assets/theme_manager.py @@ -8,10 +8,11 @@ import shutil from datetime import date, timedelta from dateutil import easter from pathlib import Path +from urllib.parse import quote_plus from openpilot.frogpilot.assets.download_functions import GITLAB_URL, download_file, get_repository_url, handle_error, handle_request_error, verify_download -from openpilot.frogpilot.common.frogpilot_utilities import delete_file, extract_zip -from openpilot.frogpilot.common.frogpilot_variables import ACTIVE_THEME_PATH, RANDOM_EVENTS_PATH, RESOURCES_REPO, THEME_SAVE_PATH, params, params_memory, update_frogpilot_toggles +from openpilot.frogpilot.common.frogpilot_utilities import delete_file, extract_zip, load_json_file, update_json_file +from openpilot.frogpilot.common.frogpilot_variables import ACTIVE_THEME_PATH, RANDOM_EVENTS_PATH, RESOURCES_REPO, THEME_SAVE_PATH, params, params_memory CANCEL_DOWNLOAD_PARAM = "CancelThemeDownload" DOWNLOAD_PROGRESS_PARAM = "ThemeDownloadProgress" @@ -35,184 +36,17 @@ HOLIDAY_SLUGS = { "christmas_week": "Christmas" } -def calculate_thanksgiving(year): - november_first = date(year, 11, 1) - days_to_thursday = (3 - november_first.weekday()) % 7 - first_thursday = november_first + timedelta(days=days_to_thursday) - return first_thursday + timedelta(days=21) - -def get_full_themes(): - theme_packs_path = THEME_SAVE_PATH / "theme_packs" - if not theme_packs_path.exists(): - return [] - - valid_themes = set() - for theme_directory in theme_packs_path.iterdir(): - if not theme_directory.is_dir(): - continue - - base_name = theme_directory.name.replace("-animated", "") - - animated_path = theme_packs_path / f"{base_name}-animated" - base_path = theme_packs_path / base_name - - base_valid = all((base_path / asset).is_dir() for asset in {"colors", "sounds"}) - animated_icons_exist = (animated_path / "icons").is_dir() - base_icons_exist = (base_path / "icons").is_dir() - - if base_valid and (animated_icons_exist or base_icons_exist): - if animated_icons_exist: - valid_themes.add(f"{base_name}-animated") - else: - valid_themes.add(base_name) - - return sorted(valid_themes) - -def get_holiday_theme_dates(year): - return { - "new_years": date(year, 1, 1), - "valentines_day": date(year, 2, 14), - "st_patricks_day": date(year, 3, 17), - "world_frog_day": date(year, 3, 20), - "april_fools": date(year, 4, 1), - "easter_week": easter.easter(year), - "may_the_fourth": date(year, 5, 4), - "cinco_de_mayo": date(year, 5, 5), - "stitch_day": date(year, 6, 26), - "fourth_of_july": date(year, 7, 4), - "halloween_week": date(year, 10, 31), - "thanksgiving_week": calculate_thanksgiving(year), - "christmas_week": date(year, 12, 21) - } - -def randomize_distance_icons(available_themes, selected_theme): - theme_packs_path = THEME_SAVE_PATH / "theme_packs" - if not theme_packs_path.exists(): - return "stock" - - candidates = [] - for theme_pack in theme_packs_path.iterdir(): - if not theme_pack.is_dir(): - continue - - distance_icons_dir = theme_pack / "distance_icons" - if not distance_icons_dir.is_dir(): - continue - - icon_name = theme_pack.name.lower() - - theme_association = [theme for theme in available_themes if theme.replace("-animated", "") in icon_name] - if theme_association and selected_theme not in icon_name: - continue - - weight = 5 if selected_theme in icon_name else 1 - candidates.extend([theme_pack.name] * weight) - - return random.choice(candidates) if candidates else "stock" - -def randomize_theme_asset(available_themes): - if not available_themes: - return "stock" - - return random.choice(available_themes) - -def randomize_wheel_image(available_themes, selected_theme): - steering_wheels_path = THEME_SAVE_PATH / "steering_wheels" - if not steering_wheels_path.exists(): - return "stock" - - candidates = [] - for wheel_file in steering_wheels_path.iterdir(): - if not wheel_file.is_file(): - continue - - name = wheel_file.stem.lower() - - theme_association = [theme for theme in available_themes if theme.replace("-animated", "") in name] - if theme_association and selected_theme not in name: - continue - - weight = 5 if selected_theme in name else 1 - candidates.extend([wheel_file.stem] * weight) - - return random.choice(candidates) if candidates else "stock" - -def update_theme_asset(asset_type, theme, holiday_theme): - save_location = ACTIVE_THEME_PATH / asset_type - - if holiday_theme != "stock": - asset_location = HOLIDAY_THEME_PATH / holiday_theme / asset_type - elif theme in HOLIDAY_SLUGS: - asset_location = HOLIDAY_THEME_PATH / theme / asset_type - elif f"{theme}_week" in HOLIDAY_SLUGS: - asset_location = HOLIDAY_THEME_PATH / f"{theme}_week" / asset_type - else: - asset_location = THEME_SAVE_PATH / "theme_packs" / theme / asset_type - - if not asset_location.exists() or theme == "stock": - if (STOCKOP_THEME_PATH / asset_type).is_dir(): - asset_location = STOCKOP_THEME_PATH / asset_type - print(f"Using the stock {asset_type[:-1]} instead") - else: - if save_location.exists() or save_location.is_symlink(): - if save_location.is_symlink() or save_location.is_file(): - save_location.unlink() - elif save_location.is_dir(): - shutil.rmtree(save_location) - print(f"Using the stock {asset_type[:-1]} instead") - return - - if save_location.exists() or save_location.is_symlink(): - if save_location.is_symlink() or save_location.is_file(): - save_location.unlink() - elif save_location.is_dir(): - shutil.rmtree(save_location) - - save_location.parent.mkdir(parents=True, exist_ok=True) - save_location.symlink_to(asset_location, target_is_directory=True) - print(f"Linked {save_location} to {asset_location}") - -def update_wheel_image(image, holiday_theme="stock", random_event=True): - wheel_save_location = ACTIVE_THEME_PATH / "steering_wheel" - - if holiday_theme != "stock": - wheel_location = HOLIDAY_THEME_PATH / holiday_theme / "steering_wheel" - elif random_event: - wheel_location = RANDOM_EVENTS_PATH / "steering_wheels" - elif image == "stock": - wheel_location = STOCKOP_THEME_PATH / "steering_wheel" - elif image in HOLIDAY_SLUGS: - wheel_location = HOLIDAY_THEME_PATH / image / "steering_wheel" - elif f"{image}_week" in HOLIDAY_SLUGS: - wheel_location = HOLIDAY_THEME_PATH / f"{image}_week" / "steering_wheel" - else: - wheel_location = THEME_SAVE_PATH / "steering_wheels" - - if not wheel_location.exists(): - wheel_location = STOCKOP_THEME_PATH / "steering_wheel" - print("Using the stock steering wheel instead") - - if wheel_save_location.exists(): - if wheel_save_location.is_symlink(): - wheel_save_location.unlink() - elif wheel_save_location.is_dir(): - shutil.rmtree(wheel_save_location) - - wheel_save_location.mkdir(parents=True, exist_ok=True) - - image_name = image.replace(" ", "_").lower() - matching_files = [images for images in wheel_location.iterdir() if images.stem.lower() in {image_name, "wheel"}] - if matching_files: - source_file = matching_files[0] - destination_file = wheel_save_location / f"wheel{source_file.suffix}" - - if destination_file.exists(): - destination_file.unlink() - destination_file.symlink_to(source_file) - print(f"Linked {destination_file} to {source_file}") +THEME_COMPONENT_PARAMS = { + "colors": "ColorToDownload", + "distance_icons": "DistanceIconToDownload", + "icons": "IconToDownload", + "signals": "SignalToDownload", + "sounds": "SoundToDownload", + "steering_wheels": "WheelToDownload" +} class ThemeManager: - def __init__(self): + def __init__(self, boot_run=False): self.downloading_theme = False self.theme_updated = False @@ -220,24 +54,365 @@ class ThemeManager: self.previous_asset_mappings = {} + self.theme_sizes_path = THEME_SAVE_PATH / "theme_sizes.json" + + self.theme_sizes = load_json_file(self.theme_sizes_path) + self.session = requests.Session() self.session.headers.update({"Accept-Language": "en"}) self.session.headers.update({"User-Agent": "frogpilot-theme-downloader/1.0 (https://github.com/FrogAi/FrogPilot)"}) + if boot_run: + self.copy_default_theme() + + @staticmethod + def calculate_thanksgiving(year): + november_first = date(year, 11, 1) + days_to_thursday = (3 - november_first.weekday()) % 7 + first_thursday = november_first + timedelta(days=days_to_thursday) + return first_thursday + timedelta(days=21) + + @staticmethod + def copy_default_theme(): + world_frog_day_theme_path = HOLIDAY_THEME_PATH / "world_frog_day" + + for theme_subfolder_name, save_subfolder_path in [ + ("colors", "theme_packs/frog/colors"), + ("distance_icons", "theme_packs/frog-animated/distance_icons"), + ("icons", "theme_packs/frog-animated/icons"), + ("signals", "theme_packs/frog/signals"), + ("sounds", "theme_packs/frog/sounds"), + ]: + source_folder_path = world_frog_day_theme_path / theme_subfolder_name + destination_folder_path = THEME_SAVE_PATH / save_subfolder_path + destination_folder_path.mkdir(parents=True, exist_ok=True) + shutil.copytree(source_folder_path, destination_folder_path, dirs_exist_ok=True) + + steering_wheel_image_path = world_frog_day_theme_path / "steering_wheel/wheel.png" + steering_wheel_save_path = THEME_SAVE_PATH / "steering_wheels/frog.png" + steering_wheel_save_path.parent.mkdir(parents=True, exist_ok=True) + shutil.copy2(steering_wheel_image_path, steering_wheel_save_path) + + def download_theme(self, theme_component, theme_name, asset_param, frogpilot_toggles): + self.downloading_theme = True + + repo_url = get_repository_url(self.session) + if not repo_url: + handle_error(None, "GitHub and GitLab are offline...", "Repository unavailable", asset_param, DOWNLOAD_PROGRESS_PARAM) + self.downloading_theme = False + return + + if theme_component == "distance_icons": + download_link = f"{repo_url}/Distance-Icons/{theme_name}" + download_path = THEME_SAVE_PATH / "theme_packs" / theme_name / theme_component + extensions = [".zip"] + elif theme_component == "steering_wheels": + download_link = f"{repo_url}/Steering-Wheels/{theme_name}" + download_path = THEME_SAVE_PATH / theme_component / theme_name + extensions = [".gif", ".png"] + else: + download_link = f"{repo_url}/Themes/{theme_name}/{theme_component}" + download_path = THEME_SAVE_PATH / "theme_packs" / theme_name / theme_component + extensions = [".zip"] + + for extension in extensions: + theme_path = download_path.with_suffix(extension) + theme_url = download_link + extension + + delete_file(theme_path) + + print(f"Downloading theme from GitHub: {theme_name}") + download_file(CANCEL_DOWNLOAD_PARAM, theme_path, DOWNLOAD_PROGRESS_PARAM, theme_url, asset_param, self.session) + + if params_memory.get_bool(CANCEL_DOWNLOAD_PARAM): + delete_file(theme_path) + handle_error(None, "Download cancelled...", "Download cancelled...", asset_param, DOWNLOAD_PROGRESS_PARAM) + + self.downloading_theme = False + return + + if verify_download(theme_path, theme_url, self.session): + print(f"Theme {theme_name} downloaded and verified successfully from GitHub!") + self.update_theme_size(theme_component, theme_name, theme_path.stat().st_size) + + if extension == ".zip": + params_memory.put(DOWNLOAD_PROGRESS_PARAM, "Unpacking theme...") + extract_zip(theme_path, download_path) + + params_memory.put(DOWNLOAD_PROGRESS_PARAM, "Downloaded!") + params_memory.remove(asset_param) + + self.downloading_theme = False + + self.update_themes(frogpilot_toggles) + return + elif self.handle_verification_failure(extension, theme_component, theme_name, asset_param, theme_path, download_path, frogpilot_toggles): + return + + handle_error(download_path, "Download failed...", "Download failed...", asset_param, DOWNLOAD_PROGRESS_PARAM) + self.downloading_theme = False + + def fetch_assets(self, repo_url, frogpilot_toggles): + is_github = "github" in repo_url + is_gitlab = "gitlab" in repo_url + + repo_encoded = quote_plus(RESOURCES_REPO) + + assets = {"themes": {}, "wheels": []} + try: + def list_files(branch): + if is_github: + response = self.session.get(f"https://api.github.com/repos/{RESOURCES_REPO}/git/trees/{branch}?recursive=1", timeout=10) + response.raise_for_status() + return [ + { + "path": item.get("path", ""), + "name": Path(item.get("path", "")).name, + "type": item.get("type"), + "size": item.get("size", 0), + } + for item in response.json().get("tree", []) + if item.get("type") == "blob" + ] + if is_gitlab: + response = self.session.get(f"https://gitlab.com/api/v4/projects/{repo_encoded}/repository/tree?ref={branch}&recursive=true", timeout=10) + response.raise_for_status() + return [ + { + "path": item.get("path", ""), + "name": item.get("name", ""), + "type": item.get("type"), + "size": 0, + } + for item in response.json() + if item.get("type") in ("blob", "file") + ] + print(f"Unsupported repository URL: {repo_url}") + return [] + + def file_size(branch, path, fallback): + if is_github: + return int(fallback or 0) + response = self.session.head(f"https://gitlab.com/api/v4/projects/{repo_encoded}/repository/files/{quote_plus(path)}/raw?ref={branch}", timeout=10) + return int(response.headers.get("content-length", 0)) if response.ok else 0 + + for branch in ["Distance-Icons", "Steering-Wheels"]: + for item in list_files(branch): + if item.get("type") not in ("file", "blob"): + continue + + path = item["path"] + size = file_size(branch, path, item.get("size", 0)) + + if branch == "Steering-Wheels": + assets["wheels"].append(path) + theme_name = Path(path).stem + local_files = list((THEME_SAVE_PATH / "steering_wheels").glob(f"{theme_name}.*")) + if local_files and size > 0: + local_size = self.theme_sizes.get("wheels", {}).get(theme_name) + if local_size != size: + self.download_theme("steering_wheels", theme_name, THEME_COMPONENT_PARAMS["steering_wheels"], frogpilot_toggles) + + elif branch == "Distance-Icons": + component_name = "distance_icons" + theme_name = Path(path).stem + assets["themes"].setdefault(theme_name, set()).add(component_name) + + local_path = THEME_SAVE_PATH / "theme_packs" / theme_name / component_name + if local_path.exists() and size > 0: + local_size = self.theme_sizes.get("themes", {}).get(theme_name, {}).get(component_name) + if local_size != size: + self.download_theme(component_name, theme_name, THEME_COMPONENT_PARAMS[component_name], frogpilot_toggles) + + branch = "Themes" + for item in list_files(branch): + if item.get("type") not in ("file", "blob") or "/" not in item["path"]: + continue + + expected_size = file_size(branch, item["path"], item.get("size", 0)) + + theme_name, sub_path = item["path"].split("/", 1) + theme_path = sub_path.lower() + + for key in ("colors", "icons", "signals", "sounds"): + if key in theme_path: + assets["themes"].setdefault(theme_name, set()).add(key) + + local_path = THEME_SAVE_PATH / "theme_packs" / theme_name / key + if local_path.exists(): + local_size = self.theme_sizes.get("themes", {}).get(theme_name, {}).get(key) + if local_size != expected_size: + print(f"{key} {theme_name} is outdated, redownloading...") + self.download_theme(key, theme_name, THEME_COMPONENT_PARAMS[key], frogpilot_toggles) + break + + assets["themes"] = {key: sorted(list(value)) for key, value in assets["themes"].items()} + assets["wheels"].sort() + return assets + + except requests.exceptions.RequestException as error: + print(f"Request failed: {error}") + handle_request_error(f"Failed to fetch theme sizes from {'GitHub' if is_github else 'GitLab'}: {error}", None, None, None) + return {} + + @staticmethod + def format_name(name, component): + base = Path(name).stem + creator = "" + if "~" in base: + base, creator = base.split("~", 1) + + parts = base.replace("_", "-").split("-") + capitalized_parts = [part.capitalize() for part in parts if part] + + if len(capitalized_parts) > 1 and component != "steering_wheels": + display = f"{capitalized_parts[0]} ({' '.join(capitalized_parts[1:])})" + else: + display = " ".join(capitalized_parts) + + if creator: + return f"{display} - by: {creator}" + return display + + @staticmethod + def get_full_themes(): + theme_packs_path = THEME_SAVE_PATH / "theme_packs" + if not theme_packs_path.exists(): + return [] + + valid_themes = set() + for theme_directory in theme_packs_path.iterdir(): + if not theme_directory.is_dir(): + continue + + base_name = theme_directory.name.replace("-animated", "") + + animated_path = theme_packs_path / f"{base_name}-animated" + base_path = theme_packs_path / base_name + + base_valid = all((base_path / asset).is_dir() for asset in {"colors", "sounds"}) + animated_icons_exist = (animated_path / "icons").is_dir() + base_icons_exist = (base_path / "icons").is_dir() + + if base_valid and (animated_icons_exist or base_icons_exist): + if animated_icons_exist: + valid_themes.add(f"{base_name}-animated") + else: + valid_themes.add(base_name) + + return sorted(valid_themes) + + @staticmethod + def get_holiday_theme_dates(year): + return { + "new_years": date(year, 1, 1), + "valentines_day": date(year, 2, 14), + "st_patricks_day": date(year, 3, 17), + "world_frog_day": date(year, 3, 20), + "april_fools": date(year, 4, 1), + "easter_week": easter.easter(year), + "may_the_fourth": date(year, 5, 4), + "cinco_de_mayo": date(year, 5, 5), + "stitch_day": date(year, 6, 26), + "fourth_of_july": date(year, 7, 4), + "halloween_week": date(year, 10, 31), + "thanksgiving_week": ThemeManager.calculate_thanksgiving(year), + "christmas_week": date(year, 12, 21) + } + + def handle_verification_failure(self, extension, theme_component, theme_name, asset_param, theme_path, download_path, frogpilot_toggles): + if theme_component == "distance_icons": + download_link = f"{GITLAB_URL}/Distance-Icons/{theme_name}" + elif theme_component == "steering_wheels": + download_link = f"{GITLAB_URL}/Steering-Wheels/{theme_name}" + else: + download_link = f"{GITLAB_URL}/Themes/{theme_name}/{theme_component}" + + delete_file(theme_path) + + theme_url = download_link + extension + print(f"Downloading theme from GitLab: {theme_name}") + download_file(CANCEL_DOWNLOAD_PARAM, theme_path, DOWNLOAD_PROGRESS_PARAM, theme_url, asset_param, self.session) + + if verify_download(theme_path, theme_url, self.session): + print(f"Theme {theme_name} downloaded and verified successfully from GitLab!") + self.update_theme_size(theme_component, theme_name, theme_path.stat().st_size) + + if extension == ".zip": + params_memory.put(DOWNLOAD_PROGRESS_PARAM, "Unpacking theme...") + extract_zip(theme_path, download_path) + + params_memory.put(DOWNLOAD_PROGRESS_PARAM, "Downloaded!") + params_memory.remove(asset_param) + + self.downloading_theme = False + + self.update_themes(frogpilot_toggles) + return True + + handle_error(None, "Download failed...", "Download failed...", asset_param, DOWNLOAD_PROGRESS_PARAM) + self.downloading_theme = False + return False + @staticmethod def is_within_week_of(target_date, current_date): start_of_week = target_date - timedelta(days=target_date.weekday()) return start_of_week <= current_date < target_date - def update_holiday(self): - current_date = date.today() + @staticmethod + def randomize_distance_icons(available_themes, selected_theme): + theme_packs_path = THEME_SAVE_PATH / "theme_packs" + if not theme_packs_path.exists(): + return "stock" - holidays = get_holiday_theme_dates(current_date.year) - for holiday, holiday_date in holidays.items(): - if (holiday.endswith("_week") and self.is_within_week_of(holiday_date, current_date)) or (current_date == holiday_date): - return holiday + candidates = [] + for theme_pack in theme_packs_path.iterdir(): + if not theme_pack.is_dir(): + continue - return "stock" + distance_icons_dir = theme_pack / "distance_icons" + if not distance_icons_dir.is_dir(): + continue + + icon_name = theme_pack.name.lower() + + theme_association = [theme for theme in available_themes if theme.replace("-animated", "") in icon_name] + if theme_association and selected_theme not in icon_name: + continue + + weight = 5 if selected_theme in icon_name else 1 + candidates.extend([theme_pack.name] * weight) + + return random.choice(candidates) if candidates else "stock" + + @staticmethod + def randomize_theme_asset(available_themes): + if not available_themes: + return "stock" + + return random.choice(available_themes) + + @staticmethod + def randomize_wheel_image(available_themes, selected_theme): + steering_wheels_path = THEME_SAVE_PATH / "steering_wheels" + if not steering_wheels_path.exists(): + return "stock" + + candidates = [] + for wheel_file in steering_wheels_path.iterdir(): + if not wheel_file.is_file(): + continue + + name = wheel_file.stem.lower() + + theme_association = [theme for theme in available_themes if theme.replace("-animated", "") in name] + if theme_association and selected_theme not in name: + continue + + weight = 5 if selected_theme in name else 1 + candidates.extend([wheel_file.stem] * weight) + + return random.choice(candidates) if candidates else "stock" def update_active_theme(self, time_validated, frogpilot_toggles, boot_run=False, randomize_theme=False): if time_validated and frogpilot_toggles.holiday_themes: @@ -255,16 +430,16 @@ class ThemeManager: "wheel_image": ("wheel_image", self.holiday_theme) } elif (boot_run or randomize_theme) and frogpilot_toggles.random_themes: - available_themes = get_full_themes() - selected_theme = randomize_theme_asset(available_themes) + available_themes = self.get_full_themes() + selected_theme = self.randomize_theme_asset(available_themes) asset_mappings = { "color_scheme": ("colors", selected_theme.replace("-animated", "")), - "distance_icons": ("distance_icons", randomize_distance_icons(available_themes, selected_theme.replace("-animated", ""))), + "distance_icons": ("distance_icons", self.randomize_distance_icons(available_themes, selected_theme.replace("-animated", ""))), "icon_pack": ("icons", selected_theme), "sound_pack": ("sounds", selected_theme.replace("-animated", "")), "turn_signal_pack": ("signals", selected_theme.replace("-animated", "")), - "wheel_image": ("wheel_image", randomize_wheel_image(available_themes, selected_theme.replace("-animated", ""))) + "wheel_image": ("wheel_image", self.randomize_wheel_image(available_themes, selected_theme.replace("-animated", ""))) } elif not frogpilot_toggles.random_themes: @@ -284,150 +459,55 @@ class ThemeManager: print(f"Updating {asset}: {asset_type} with value {current_value}") if asset_type == "wheel_image": - update_wheel_image(current_value, self.holiday_theme, random_event=False) + self.update_wheel_image(current_value, boot_run=boot_run) else: - update_theme_asset(asset_type, current_value, self.holiday_theme) + self.update_theme_asset(asset_type, current_value, boot_run=boot_run) self.previous_asset_mappings = asset_mappings self.theme_updated = True - def handle_verification_failure(self, ext, theme_component, theme_name, theme_param, theme_path, download_path): - if theme_component == "steering_wheels": - download_link = f"{GITLAB_URL}/Steering-Wheels/{theme_name}" + def update_holiday(self): + current_date = date.today() + + holidays = self.get_holiday_theme_dates(current_date.year) + for holiday, holiday_date in holidays.items(): + if (holiday.endswith("_week") and self.is_within_week_of(holiday_date, current_date)) or (current_date == holiday_date): + return holiday + + return "stock" + + def update_theme_asset(self, asset_type, theme, boot_run=False): + save_location = ACTIVE_THEME_PATH / asset_type + + if self.holiday_theme != "stock": + asset_location = HOLIDAY_THEME_PATH / self.holiday_theme / asset_type + elif theme in HOLIDAY_SLUGS: + asset_location = HOLIDAY_THEME_PATH / theme / asset_type + elif f"{theme}_week" in HOLIDAY_SLUGS: + asset_location = HOLIDAY_THEME_PATH / f"{theme}_week" / asset_type else: - download_link = f"{GITLAB_URL}/Themes/{theme_name}/{theme_component}" + asset_location = THEME_SAVE_PATH / "theme_packs" / theme / asset_type - if theme_path.is_file(): - delete_file(theme_path) + if not asset_location.exists() or theme == "stock": + asset_location = STOCKOP_THEME_PATH / asset_type + print(f"Using the stock {asset_type[:-1]} instead") - theme_url = download_link + ext - print(f"Downloading theme from GitLab: {theme_name}") - download_file(CANCEL_DOWNLOAD_PARAM, theme_path, DOWNLOAD_PROGRESS_PARAM, theme_url, theme_param, self.session) + delete_file(save_location, print_error=not boot_run) - if params_memory.get_bool(CANCEL_DOWNLOAD_PARAM): - handle_error(None, "Download cancelled...", "Download cancelled...", theme_param, DOWNLOAD_PROGRESS_PARAM) - self.downloading_theme = False - return - - if verify_download(theme_path, theme_url, self.session): - print(f"Theme {theme_name} downloaded and verified successfully from GitLab!") - if ext == ".zip": - params_memory.put(DOWNLOAD_PROGRESS_PARAM, "Unpacking theme...") - extract_zip(theme_path, download_path) - params_memory.put(DOWNLOAD_PROGRESS_PARAM, "Downloaded!") - return True - else: - return False - - def download_theme(self, theme_component, theme_name, theme_param): - self.downloading_theme = True - - repo_url = get_repository_url(self.session) - if not repo_url: - handle_error(None, "GitHub and GitLab are offline...", "Repository unavailable", theme_param, DOWNLOAD_PROGRESS_PARAM) - self.downloading_theme = False - return - - if theme_component == "steering_wheels": - download_link = f"{repo_url}/Steering-Wheels/{theme_name}" - download_path = THEME_SAVE_PATH / theme_component / theme_name - extensions = [".gif", ".png"] - else: - download_link = f"{repo_url}/Themes/{theme_name}/{theme_component}" - download_path = THEME_SAVE_PATH / "theme_packs" / theme_name / theme_component - extensions = [".zip"] - - for ext in extensions: - theme_path = download_path.with_suffix(ext) - if theme_path.is_file(): - delete_file(theme_path) - - theme_url = download_link + ext - print(f"Downloading theme from GitHub: {theme_name}") - download_file(CANCEL_DOWNLOAD_PARAM, theme_path, DOWNLOAD_PROGRESS_PARAM, theme_url, theme_param, self.session) - - if params_memory.get_bool(CANCEL_DOWNLOAD_PARAM): - handle_error(None, "Download cancelled...", "Download cancelled...", theme_param, DOWNLOAD_PROGRESS_PARAM) - self.downloading_theme = False - return - - if verify_download(theme_path, theme_url, self.session): - print(f"Theme {theme_name} downloaded and verified successfully from GitHub!") - if ext == ".zip": - params_memory.put(DOWNLOAD_PROGRESS_PARAM, "Unpacking theme...") - extract_zip(theme_path, download_path) - params_memory.put(DOWNLOAD_PROGRESS_PARAM, "Downloaded!") - self.downloading_theme = False - return - elif self.handle_verification_failure(ext, theme_component, theme_name, theme_param, theme_path, download_path): - self.downloading_theme = False - return - - handle_error(download_path, "Download failed...", "Download failed...", theme_param, DOWNLOAD_PROGRESS_PARAM) - self.downloading_theme = False - - def fetch_assets(self, repo_url): - branches = ["Distance-Icons", "Steering-Wheels", "Themes"] - - assets = { - "themes": {}, - "wheels": [] - } - - try: - for branch in branches: - if "github" in repo_url: - api_url = f"https://api.github.com/repos/{RESOURCES_REPO}/git/trees/{branch}?recursive=1" - elif "gitlab" in repo_url: - api_url = f"https://gitlab.com/api/v4/projects/{RESOURCES_REPO.replace('/', '%2F')}/repository/tree?ref={branch}&recursive=true" - else: - print(f"Unsupported repository URL: {repo_url}") - return assets - - print(f"Fetching assets from branch '{branch}': {api_url}") - response = self.session.get(api_url, timeout=10) - response.raise_for_status() - content = response.json() - - if "github" in repo_url: - content = content.get("tree", []) - - for item in content: - if item["type"] != "blob": - continue - - if branch == "Steering-Wheels": - assets["wheels"].append(item["path"]) - elif branch == "Themes": - theme_name = item["path"].split("/")[0] - assets["themes"].setdefault(theme_name, set()) - - item_path = item["path"].lower() - if "colors" in item_path: - assets["themes"][theme_name].add("colors") - elif "distance_icons" in item_path: - assets["themes"][theme_name].add("distance_icons") - elif "icons" in item_path: - assets["themes"][theme_name].add("icons") - elif "signals" in item_path: - assets["themes"][theme_name].add("signals") - elif "sounds" in item_path: - assets["themes"][theme_name].add("sounds") - - return {**assets, "themes": {k: list(v) for k, v in assets["themes"].items()}} - except requests.exceptions.RequestException as error: - handle_request_error(f"Failed to fetch theme sizes from {'GitHub' if 'github' in repo_url else 'GitLab'}: {error}", None, None, None) - return {} + save_location.parent.mkdir(parents=True, exist_ok=True) + save_location.symlink_to(asset_location, target_is_directory=True) + print(f"Linked {save_location} to {asset_location}") def update_theme_params(self, downloadable_colors, downloadable_distance_icons, downloadable_icons, downloadable_signals, downloadable_sounds, downloadable_wheels): def update_param(key, assets, subfolder): if subfolder == "steering_wheels": themes_path = THEME_SAVE_PATH / subfolder - existing_assets = {item.stem.replace("_", " ").title() for item in themes_path.glob("*") if item.is_file()} + existing_assets = {self.format_name(item.name, "steering_wheels") for item in themes_path.glob("*") if item.is_file()} else: themes_path = THEME_SAVE_PATH / "theme_packs" - existing_assets = {item.parent.name.replace("_", " ").title() for item in themes_path.glob(f"*/{subfolder}") if item.is_dir()} + existing_assets = {self.format_name(item.parent.name, subfolder) for item in themes_path.glob(f"*/{subfolder}") if item.is_dir()} + params.put(key, ",".join(sorted(set(assets) - existing_assets))) print(f"{key} updated successfully") @@ -438,56 +518,46 @@ class ThemeManager: update_param("DownloadableSounds", downloadable_sounds, "sounds") update_param("DownloadableWheels", downloadable_wheels, "steering_wheels") - def validate_themes(self, downloadable_colors, downloadable_distance_icons, downloadable_icons, downloadable_signals, downloadable_sounds, downloadable_wheels, frogpilot_toggles): - asset_mappings = { - "CustomColors": ("colors", frogpilot_toggles.color_scheme, downloadable_colors), - "CustomDistanceIcons": ("distance_icons", frogpilot_toggles.distance_icons, downloadable_distance_icons), - "CustomIcons": ("icons", frogpilot_toggles.icon_pack, downloadable_icons), - "CustomSounds": ("sounds", frogpilot_toggles.sound_pack, downloadable_sounds), - "CustomSignals": ("signals", frogpilot_toggles.signal_icons, downloadable_signals), - "WheelIcon": ("steering_wheels", frogpilot_toggles.wheel_image, downloadable_wheels) - } + downloaded_themes = {} + for theme_dir in (THEME_SAVE_PATH / "theme_packs").iterdir(): + components = [] + for component in ["colors", "distance_icons", "icons", "signals", "sounds"]: + if (theme_dir / component).is_dir(): + components.append(component) - for theme_param, (theme_component, theme_name, downloadable_list) in asset_mappings.items(): - if not downloadable_list: - continue + if components: + theme_name = self.format_name(theme_dir.name, "theme_packs") + downloaded_themes[theme_name] = sorted(components) - if theme_name.lower() in {"none", "stock"}: - continue + downloaded_wheels = [] + for wheel_file in (THEME_SAVE_PATH / "steering_wheels").iterdir(): + if wheel_file.is_file(): + downloaded_wheels.append(self.format_name(wheel_file.name, "steering_wheels")) - if theme_component == "steering_wheels": - theme_path = THEME_SAVE_PATH / "steering_wheels" / theme_name - matching_files = list(theme_path.parent.glob(f"{theme_name}.*")) - if not matching_files: - print(f" {theme_name} for {theme_component} not found. Downloading...") - self.download_theme(theme_component, theme_name, theme_param) - update_frogpilot_toggles() - elif theme_name.replace("_", " ").split(".")[0].title() not in downloadable_list: - if theme_path.exists(): - print(f"{theme_name} for {theme_component} is outdated. Deleting...") - delete_file(theme_path) - continue - else: - theme_path = THEME_SAVE_PATH / "theme_packs" / theme_name / theme_component - if not theme_path.exists(): - print(f" {theme_name} for {theme_component} not found. Downloading...") - self.download_theme(theme_component, theme_name, theme_param) - update_frogpilot_toggles() - elif theme_name.replace("_", " ").split(".")[0].title() not in downloadable_list: - if theme_path.exists(): - print(f"{theme_name} for {theme_component} is outdated. Deleting...") - delete_file(theme_path) - continue + params.put("ThemesDownloaded", json.dumps({ + "themes": {key: downloaded_themes[key] for key in sorted(downloaded_themes)}, + "steering_wheels": sorted(downloaded_wheels) + })) - for dir_path in THEME_SAVE_PATH.glob("**/*"): - if dir_path.is_dir() and not any(dir_path.iterdir()): - print(f"Deleting empty folder: {dir_path}") - dir_path.rmdir() - elif dir_path.is_file() and dir_path.name.startswith("tmp"): - print(f"Deleting temp file: {dir_path}") - dir_path.unlink() + print("ThemesDownloaded updated successfully") - print("Theme validation complete.") + def update_theme_size(self, theme_component, theme_name, file_size): + if theme_component == "steering_wheels": + key = "wheels" + else: + key = "themes" + + if key not in self.theme_sizes: + self.theme_sizes[key] = {} + + if key == "wheels": + self.theme_sizes[key][theme_name] = file_size + else: + if theme_name not in self.theme_sizes[key]: + self.theme_sizes[key][theme_name] = {} + self.theme_sizes[key][theme_name][theme_component] = file_size + + update_json_file(self.theme_sizes_path, self.theme_sizes) def update_themes(self, frogpilot_toggles, boot_run=False): if self.downloading_theme: @@ -498,7 +568,7 @@ class ThemeManager: print("GitHub and GitLab are offline...") return - assets = self.fetch_assets(repo_url) + assets = self.fetch_assets(repo_url, frogpilot_toggles) if not assets: return @@ -509,7 +579,7 @@ class ThemeManager: downloadable_sounds = [] for theme, available_assets in assets["themes"].items(): - theme_name = theme.replace("_", " ").split(".")[0].title() + theme_name = self.format_name(theme, "theme_packs") print(f"Theme found: {theme_name}") if "colors" in available_assets: @@ -523,7 +593,7 @@ class ThemeManager: if "sounds" in available_assets: downloadable_sounds.append(theme_name) - downloadable_wheels = [wheel.replace("_", " ").split(".")[0].title() for wheel in assets["wheels"]] + downloadable_wheels = [self.format_name(wheel, "steering_wheels") for wheel in assets["wheels"]] print(f"Downloadable Colors: {downloadable_colors}") print(f"Downloadable Icons: {downloadable_icons}") @@ -536,3 +606,67 @@ class ThemeManager: self.validate_themes(downloadable_colors, downloadable_distance_icons, downloadable_icons, downloadable_signals, downloadable_sounds, downloadable_wheels, frogpilot_toggles) self.update_theme_params(downloadable_colors, downloadable_distance_icons, downloadable_icons, downloadable_signals, downloadable_sounds, downloadable_wheels) + + def update_wheel_image(self, image, boot_run=False, random_event=False): + wheel_save_location = ACTIVE_THEME_PATH / "steering_wheel" + + if self.holiday_theme != "stock": + wheel_location = HOLIDAY_THEME_PATH / self.holiday_theme / "steering_wheel" + elif random_event: + wheel_location = RANDOM_EVENTS_PATH / "steering_wheels" + elif image == "stock": + wheel_location = STOCKOP_THEME_PATH / "steering_wheel" + elif image in HOLIDAY_SLUGS: + wheel_location = HOLIDAY_THEME_PATH / image / "steering_wheel" + elif f"{image}_week" in HOLIDAY_SLUGS: + wheel_location = HOLIDAY_THEME_PATH / f"{image}_week" / "steering_wheel" + else: + wheel_location = THEME_SAVE_PATH / "steering_wheels" + + if not wheel_location.exists(): + wheel_location = STOCKOP_THEME_PATH / "steering_wheel" + print("Using the stock steering wheel instead") + + delete_file(wheel_save_location, print_error=not boot_run) + wheel_save_location.mkdir(parents=True, exist_ok=True) + + image_name = image.replace(" ", "_").lower() + matching_files = [images for images in wheel_location.iterdir() if images.stem.lower() in {image_name, "wheel"}] + if matching_files: + source_file = matching_files[0] + destination_file = wheel_save_location / f"wheel{source_file.suffix}" + destination_file.symlink_to(source_file) + print(f"Linked {destination_file} to {source_file}") + + def validate_themes(self, downloadable_colors, downloadable_distance_icons, downloadable_icons, downloadable_signals, downloadable_sounds, downloadable_wheels, frogpilot_toggles): + downloaded_data = json.loads(params.get("ThemesDownloaded") or "{}") + + for display_name, components in downloaded_data.get("themes", {}).items(): + raw_name = display_name.lower().replace(" ", "_").replace("(", "").replace(")", "") + theme_folder_name = raw_name.replace("_animated", "-animated") + + for component in components: + component_path = THEME_SAVE_PATH / "theme_packs" / theme_folder_name / component + if not component_path.is_dir() or not any(component_path.iterdir()): + print(f"Missing or empty component '{component}' for theme '{theme_folder_name}'. Downloading...") + self.download_theme(component, theme_folder_name, THEME_COMPONENT_PARAMS.get(component), frogpilot_toggles) + self.update_active_theme(True, frogpilot_toggles) + + wheels_path = THEME_SAVE_PATH / "steering_wheels" + for display_name in downloaded_data.get("steering_wheels", []): + file_stem = display_name.replace(" ", "_").lower() + matching_files = list(wheels_path.glob(f"{file_stem}.*")) + if not matching_files: + print(f"Missing steering wheel '{display_name}'. Downloading...") + self.download_theme("steering_wheels", file_stem, THEME_COMPONENT_PARAMS["steering_wheels"], frogpilot_toggles) + self.update_active_theme(True, frogpilot_toggles) + + for dir_path in THEME_SAVE_PATH.glob("**/*"): + if dir_path.is_dir() and not any(dir_path.iterdir()): + print(f"Deleting empty folder: {dir_path}") + delete_file(dir_path) + elif dir_path.is_file() and dir_path.name.startswith("tmp"): + print(f"Deleting temp file: {dir_path}") + delete_file(dir_path) + + print("Theme validation complete.") diff --git a/frogpilot/classic_modeld/classic_modeld.py b/frogpilot/classic_modeld/classic_modeld.py index 64e74866d..6810c2f24 100755 --- a/frogpilot/classic_modeld/classic_modeld.py +++ b/frogpilot/classic_modeld/classic_modeld.py @@ -172,7 +172,7 @@ def main(demo=False): cloudlog.warning(f"connected extra cam with buffer size: {vipc_client_extra.buffer_len} ({vipc_client_extra.width} x {vipc_client_extra.height})") # messaging - pm = PubMaster(["modelV2", "cameraOdometry"]) + pm = PubMaster(["modelV2", "cameraOdometry", "frogpilotModelV2"]) sm = SubMaster(["deviceState", "carState", "roadCameraState", "liveCalibration", "driverMonitoringState", "navModel", "navInstruction", "carControl", "liveTracks", "liveDelay", "frogpilotPlan"]) publish_state = PublishState() @@ -316,6 +316,7 @@ def main(demo=False): if model_output is not None: modelv2_send = messaging.new_message('modelV2') + frogpilot_modelv2_send = messaging.new_message('frogpilotModelV2') posenet_send = messaging.new_message('cameraOdometry') fill_model_msg(modelv2_send, model_output, publish_state, meta_main.frame_id, meta_extra.frame_id, frame_id, frame_drop_ratio, meta_main.timestamp_eof, timestamp_llk, model_execution_time, live_calib_seen, nav_enabled) @@ -327,10 +328,11 @@ def main(demo=False): DH.update(sm['carState'], sm['carControl'].latActive, lane_change_prob, sm['frogpilotPlan'], frogpilot_toggles) modelv2_send.modelV2.meta.laneChangeState = DH.lane_change_state modelv2_send.modelV2.meta.laneChangeDirection = DH.lane_change_direction - modelv2_send.modelV2.meta.turnDirection = DH.turn_direction + frogpilot_modelv2_send.frogpilotModelV2.turnDirection = DH.turn_direction fill_pose_msg(posenet_send, model_output, meta_main.frame_id, vipc_dropped_frames, meta_main.timestamp_eof, live_calib_seen) pm.send('modelV2', modelv2_send) + pm.send('frogpilotModelV2', frogpilot_modelv2_send) pm.send('cameraOdometry', posenet_send) last_vipc_frame_id = meta_main.frame_id diff --git a/frogpilot/common/frogpilot_functions.py b/frogpilot/common/frogpilot_functions.py index 583d5b948..1dbf5a242 100644 --- a/frogpilot/common/frogpilot_functions.py +++ b/frogpilot/common/frogpilot_functions.py @@ -1,9 +1,8 @@ #!/usr/bin/env python3 -from pathlib import Path - import datetime import filecmp import glob +import json import os import random import shutil @@ -14,6 +13,8 @@ import threading import time import zstandard as zstd +from pathlib import Path + from openpilot.common.basedir import BASEDIR from openpilot.common.params import Params from openpilot.common.time import system_time_valid @@ -21,11 +22,11 @@ from openpilot.system.athena.registration import register from openpilot.system.hardware import HARDWARE from openpilot.frogpilot.assets.model_manager import ModelManager -from openpilot.frogpilot.assets.theme_manager import HOLIDAY_THEME_PATH, ThemeManager +from openpilot.frogpilot.assets.theme_manager import ThemeManager from openpilot.frogpilot.common.frogpilot_utilities import delete_file, run_cmd, use_konik_server from openpilot.frogpilot.common.frogpilot_variables import ( ERROR_LOGS_PATH, EXCLUDED_KEYS, HD_LOGS_PATH, KONIK_LOGS_PATH, MODELS_PATH, SCREEN_RECORDINGS_PATH, - THEME_SAVE_PATH, FrogPilotVariables, frogpilot_default_params, get_frogpilot_toggles, params + THEME_SAVE_PATH, VIDEO_CACHE_PATH, FrogPilotVariables, frogpilot_default_params, get_frogpilot_toggles, params ) from openpilot.frogpilot.system.frogpilot_stats import send_stats @@ -130,15 +131,31 @@ def backup_toggles(params_cache): def convert_params(params_cache): print("Starting to convert params") + if Path("/cache/tracking").exists(): + params_tracking = Params("/cache/tracking") + + frogpilot_stats = json.loads(params.get("FrogPilotStats") or "{}") + frogpilot_stats["FrogPilotDrives"] = params_tracking.get_int("FrogPilotDrives") + frogpilot_stats["FrogPilotMeters"] = params_tracking.get_float("FrogPilotKilometers") * 1000 + frogpilot_stats["FrogPilotSeconds"] = params_tracking.get_float("FrogPilotMinutes") * 60 + + params.put("FrogPilotStats", json.dumps(frogpilot_stats)) + + delete_file("/cache/tracking") + print("Param conversion completed") def frogpilot_boot_functions(build_metadata, params_cache): if params.get_bool("HasAcceptedTerms"): params_cache.clear_all() - FrogPilotVariables().update(holiday_theme="stock", started=False, boot_run=True) - ModelManager().copy_default_model() - ThemeManager().update_active_theme(time_validated=system_time_valid(), frogpilot_toggles=get_frogpilot_toggles(), boot_run=True) + FrogPilotVariables().update(holiday_theme="stock", started=False) + ModelManager(boot_run=True) + ThemeManager(boot_run=True).update_active_theme(time_validated=system_time_valid(), frogpilot_toggles=get_frogpilot_toggles(), boot_run=True) + + if VIDEO_CACHE_PATH.exists(): + for video in VIDEO_CACHE_PATH.glob("*.mp4"): + delete_file(video) if use_konik_server(): if params.get("KonikDongleId", encoding="utf8") != None: @@ -172,26 +189,6 @@ def setup_frogpilot(build_metadata): SCREEN_RECORDINGS_PATH.mkdir(parents=True, exist_ok=True) THEME_SAVE_PATH.mkdir(parents=True, exist_ok=True) - for source_suffix, destination_suffix in [ - ("world_frog_day/colors", "theme_packs/frog/colors"), - ("world_frog_day/distance_icons", "theme_packs/frog-animated/distance_icons"), - ("world_frog_day/icons", "theme_packs/frog-animated/icons"), - ("world_frog_day/signals", "theme_packs/frog/signals"), - ("world_frog_day/sounds", "theme_packs/frog/sounds"), - ]: - source = Path(HOLIDAY_THEME_PATH) / source_suffix - destination = THEME_SAVE_PATH / destination_suffix - destination.mkdir(parents=True, exist_ok=True) - shutil.copytree(source, destination, dirs_exist_ok=True) - - for source_suffix, destination_suffix in [ - ("world_frog_day/steering_wheel/wheel.png", "steering_wheels/frog.png"), - ]: - source = Path(HOLIDAY_THEME_PATH) / source_suffix - destination = THEME_SAVE_PATH / destination_suffix - destination.parent.mkdir(parents=True, exist_ok=True) - shutil.copy2(source, destination) - boot_logo_location = Path("/usr/comma/bg.jpg") frogpilot_boot_logo = Path(__file__).parents[1] / "assets/other_images/frogpilot_boot_logo.png" if not filecmp.cmp(frogpilot_boot_logo, boot_logo_location, shallow=False): diff --git a/frogpilot/common/frogpilot_utilities.py b/frogpilot/common/frogpilot_utilities.py index 30c432813..72ebb0b4c 100644 --- a/frogpilot/common/frogpilot_utilities.py +++ b/frogpilot/common/frogpilot_utilities.py @@ -5,17 +5,18 @@ import numpy as np import requests import shutil import subprocess +import tarfile import threading import time import urllib.error import urllib.request import zipfile -import openpilot.system.sentry as sentry - from functools import cache from pathlib import Path +import openpilot.system.sentry as sentry + from cereal import log, messaging from opendbc.can.parser import CANParser from openpilot.common.realtime import DT_DMON, DT_HW @@ -37,6 +38,7 @@ locks = { "update_checks": threading.Lock(), "update_maps": threading.Lock(), "update_openpilot": threading.Lock(), + "update_tinygrad": threading.Lock() } def run_thread_with_lock(name, target, args=(), report=True): @@ -99,20 +101,44 @@ def calculate_lane_width(lane, current_lane, road_edge=None): def calculate_road_curvature(modelData, v_ego): orientation_rate = np.array(modelData.orientationRate.z) velocity = np.array(modelData.velocity.x) + timebase = np.array(modelData.orientationRate.t) - max_pred_lat_acc = max(np.max(orientation_rate * velocity), np.min(orientation_rate * velocity), key=abs) + lateral_acceleration = orientation_rate * velocity + index = np.argmax(np.abs(lateral_acceleration)) + predicted_lateral_acc = float(lateral_acceleration[index]) + time_to_curve = float(timebase[index]) - return float(max_pred_lat_acc / max(v_ego, 1)**2) + return predicted_lateral_acc / max(v_ego, 1)**2, max(time_to_curve, 1) -def delete_file(path, report=True): +def clean_model_name(name): + return ( + name.replace("๐Ÿ—บ๏ธ", "") + .replace("๐Ÿ“ก", "") + .replace("๐Ÿ‘€", "") + .replace("(Default)", "") + .strip() + ) + +def delete_file(path, print_error=True, report=True): path = Path(path) if path.is_file() or path.is_symlink(): - run_cmd(["sudo", "rm", "-f", str(path)], success_message=f"Deleted file: {path}", fail_message=f"Failed to delete file: {path}", report=report) + run_cmd(["sudo", "rm", "-f", str(path)], f"Deleted file: {path}", f"Failed to delete file: {path}", report=report) elif path.is_dir(): - run_cmd(["sudo", "rm", "-rf", str(path)], success_message=f"Deleted directory: {path}", fail_message=f"Failed to delete directory: {path}", report=report) - else: + run_cmd(["sudo", "rm", "-rf", str(path)], f"Deleted directory: {path}", f"Failed to delete directory: {path}", report=report) + elif print_error: print(f"File not found: {path}") +def extract_tar(tar_file, extract_path): + tar_file = Path(tar_file) + extract_path = Path(extract_path) + print(f"Extracting {tar_file} to {extract_path}") + + with tarfile.open(tar_file, "r:gz") as tar: + tar.extractall(path=extract_path) + + tar_file.unlink() + print(f"Extraction completed: {tar_file} has been removed") + def extract_zip(zip_file, extract_path): zip_file = Path(zip_file) extract_path = Path(extract_path) @@ -146,16 +172,22 @@ def is_url_pingable(url): headers = {"User-Agent": "frogpilot-ping-test/1.0 (https://github.com/FrogAi/FrogPilot)"} try: response = requests.head(url, headers=headers, timeout=10, allow_redirects=True) - response.raise_for_status() - return True - except requests.RequestException as exception: - print(f"Network/HTTP error for {url}: {exception}") + if response.status_code in (405, 501): + response = requests.get(url, headers=headers, timeout=10, allow_redirects=True, stream=True) + return response.ok + except requests.exceptions.RequestException as error: + print(f"{error.__class__.__name__} while pinging {url}: {error}") return False except Exception as exception: - print(f"An unexpected error occurred while checking {url}: {exception}") - sentry.capture_exception(exception) + print(f"Unexpected error while pinging {url}: {exception}") return False +def load_json_file(path): + if path.is_file(): + with open(path) as file: + return json.load(file) + return {} + def lock_doors(lock_doors_timer, sm): wait_for_no_driver(sm, door_checks=True, time_threshold=lock_doors_timer) @@ -180,19 +212,26 @@ def lock_doors(lock_doors_timer, sm): def run_cmd(cmd, success_message, fail_message, report=True, env=None): try: - subprocess.run(cmd, capture_output=True, check=True, env=env, text=True) + result = subprocess.run(cmd, capture_output=True, check=True, env=env, text=True) print(success_message) + return result.stdout.strip() except subprocess.CalledProcessError as error: print(f"Command failed with return code {error.returncode}") if error.stderr: print(f"Error Output: {error.stderr.strip()}") if report: sentry.capture_exception(error) + return None except Exception as exception: print(f"Unexpected error occurred: {exception}") print(fail_message) if report: sentry.capture_exception(exception) + return None + +def update_json_file(path, data): + with open(path, "w") as file: + json.dump(data, file, indent=2, sort_keys=True) def update_maps(now): while not MAPD_PATH.exists(): @@ -233,7 +272,7 @@ def update_maps(now): def update_openpilot(): def update_available(): - subprocess.run(["pkill", "-SIGUSR1", "-f", "system.updated.updated"], check=False) + run_cmd(["pkill", "-SIGUSR1", "-f", "system.updated.updated"], "Updater check signal sent", "Failed to send updater check signal", report=False) while params.get("UpdaterState", encoding="utf-8") != "checking...": time.sleep(1) @@ -247,25 +286,22 @@ def update_openpilot(): while params.get("UpdaterState", encoding="utf-8") != "idle": time.sleep(60) - subprocess.run(["pkill", "-SIGHUP", "-f", "system.updated.updated"], check=False) + run_cmd(["pkill", "-SIGHUP", "-f", "system.updated.updated"], "Updater refresh signal sent", "Failed to send updater refresh signal", report=False) while not params.get_bool("UpdateAvailable"): time.sleep(60) return True - while params_memory.get_bool("DownloadAllModels") or params_memory.get("ModelToDownload") or params_memory.get_bool("UpdateSpeedLimits"): - time.sleep(60) - if params.get("UpdaterState", encoding="utf-8") != "idle": return + while params.get_bool("IsOnroad") or params_memory.get_bool("UpdateSpeedLimits") or running_threads.get("lock_doors", threading.Thread()).is_alive(): + time.sleep(60) + if not update_available(): return - while running_threads.get("lock_doors", threading.Thread()).is_alive() or params_memory.get_bool("IsOnroad"): - time.sleep(60) - while True: if not update_available(): break diff --git a/frogpilot/common/frogpilot_variables.py b/frogpilot/common/frogpilot_variables.py index d15c52b7f..c84094b41 100644 --- a/frogpilot/common/frogpilot_variables.py +++ b/frogpilot/common/frogpilot_variables.py @@ -23,20 +23,21 @@ from openpilot.selfdrive.modeld.constants import ModelConstants from openpilot.system.hardware import HARDWARE from openpilot.system.hardware.power_monitoring import VBATT_PAUSE_CHARGING from openpilot.system.version import get_build_metadata -from panda import ALTERNATIVE_EXPERIENCE, Panda +from panda import ALTERNATIVE_EXPERIENCE params = Params() params_cache = Params("/cache/params") params_default = Params("/dev/shm/params_default") params_memory = Params("/dev/shm/params") -params_tracking = Params("/cache/tracking") GearShifter = car.CarState.GearShifter SafetyModel = car.CarParams.SafetyModel CITY_SPEED_LIMIT = 25 # 55mph is typically the minimum speed for highways CRUISING_SPEED = 5 # Roughly the speed cars go when not touching the gas while in drive +DEFAULT_LATERAL_ACCELERATION = 2.0 # m/s^2, typical lateral acceleration when taking curves EARTH_RADIUS = 6378137 # Radius of the Earth in meters +MAX_T_FOLLOW = 3.0 # Maximum allowed following duration. Larger values risk losing track of the lead but may be increased as models improve MINIMUM_LATERAL_ACCELERATION = 1.3 # m/s^2, typical minimum lateral acceleration when taking curves PLANNER_TIME = ModelConstants.T_IDXS[-1] # Length of time the model projects out for THRESHOLD = 0.63 # Requires the condition to be true for ~1 second @@ -53,6 +54,7 @@ THEME_SAVE_PATH = Path("/data/themes") ERROR_LOGS_PATH = Path("/data/error_logs") SCREEN_RECORDINGS_PATH = Path("/data/media/screen_recordings") +VIDEO_CACHE_PATH = Path("/data/video_cache") BACKUP_PATH = Path("/cache/on_backup") @@ -65,20 +67,11 @@ KONIK_PATH = Path("/cache/use_konik") MAPD_PATH = Path("/data/media/0/osm/mapd") MAPS_PATH = Path("/data/media/0/osm/offline") -NEURAL_PARAMS_PATH = Path(BASEDIR) / "selfdrive/car/torque_data/neural_ff_weights.json" -TORQUE_NN_MODEL_PATH = Path(BASEDIR) / "frogpilot/assets/nnff_models" +NNFF_MODELS_PATH = Path(BASEDIR) / "frogpilot/assets/nnff_models" -DEFAULT_CLASSIC_MODEL = "wd-40" -DEFAULT_CLASSIC_MODEL_NAME = "WD-40 (Default) ๐Ÿ‘€๐Ÿ“ก" -DEFAULT_CLASSIC_MODEL_VERSION = "v2" - -DEFAULT_MODEL = "national-public-radio" -DEFAULT_MODEL_NAME = "National Public Radio ๐Ÿ‘€๐Ÿ“ก" -DEFAULT_MODEL_VERSION = "v6" - -DEFAULT_TINYGRAD_MODEL = "space-lab" -DEFAULT_TINYGRAD_MODEL_NAME = "Space Lab ๐Ÿ‘€๐Ÿ“ก" -DEFAULT_TINYGRAD_MODEL_VERSION = "v7" +DEFAULT_MODEL = "firehose" +DEFAULT_MODEL_NAME = "Firehose (Default) ๐Ÿ‘€๐Ÿ“ก" +DEFAULT_MODEL_VERSION = "v9" BUTTON_FUNCTIONS = { "NOTHING": 0, @@ -91,9 +84,9 @@ BUTTON_FUNCTIONS = { } EXCLUDED_KEYS = { - "AvailableModels", "AvailableModelNames", "CarParamsPersistent", - "ExperimentalLongitudinalEnabled", "KonikMinutes", "MapBoxRequests", "ModelDrivesAndScores", - "ModelVersions", "openpilotMinutes", "OverpassRequests", "SpeedLimits", "SpeedLimitsFiltered", "UpdaterAvailableBranches" + "AvailableModels", "AvailableModelNames", "CalibratedLateralAcceleration", "CalibrationProgress", "CarParamsPersistent", + "CurvatureData", "ExperimentalLongitudinalEnabled", "KonikMinutes", "MapBoxRequests", "ModelDrivesAndScores", "ModelVersions", + "openpilotMinutes", "OverpassRequests", "SpeedLimits", "SpeedLimitsFiltered", "UpdaterAvailableBranches" } TINYGRAD_FILES = [ @@ -103,17 +96,9 @@ TINYGRAD_FILES = [ ("driving_vision_tinygrad.pkl", "vision model"), ] -@cache -def get_comma_nnff_model_file(): - with open(NEURAL_PARAMS_PATH, "r") as file: - return json.load(file) - -def comma_nnff_supported(car): - return car in get_comma_nnff_model_file() - @cache def get_nnff_model_files(): - model_dir = Path(TORQUE_NN_MODEL_PATH) + model_dir = Path(NNFF_MODELS_PATH) return [file.stem for file in model_dir.iterdir() if file.is_file()] def nnff_supported(car_fingerprint): @@ -123,8 +108,8 @@ def nnff_supported(car_fingerprint): return False -def get_frogpilot_toggles(block=True): - return SimpleNamespace(**json.loads(params_memory.get("FrogPilotToggles", block=block) or "{}")) +def get_frogpilot_toggles(): + return SimpleNamespace(**json.loads(params_memory.get("FrogPilotToggles") or "{}")) def update_frogpilot_toggles(): params_memory.put_bool("FrogPilotTogglesUpdated", True) @@ -132,11 +117,11 @@ def update_frogpilot_toggles(): frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [ ("AccelerationPath", "1", 2, "0"), ("AccelerationProfile", "2", 0, "0"), - ("AdjacentLeadsUI", "0", 3, "0"), + ("AdjacentLeadsUI", "1", 3, "0"), ("AdjacentPath", "0", 3, "0"), ("AdjacentPathMetrics", "0", 3, "0"), ("AdvancedCustomUI", "0", 2, "0"), - ("AdvancedLateralTune", "0", 2, "0"), + ("AdvancedLateralTune", "0", 3, "0"), ("AdvancedLongitudinalTune", "0", 3, "0"), ("AggressiveFollow", "1.25", 2, "1.25"), ("AggressiveJerkAcceleration", "50", 3, "50"), @@ -148,8 +133,8 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [ ("AlertVolumeControl", "0", 2, "0"), ("AlwaysOnDM", "0", 0, "0"), ("AlwaysOnLateral", "1", 0, "0"), - ("AlwaysOnLateralLKAS", "1", 0, "0"), - ("AlwaysOnLateralMain", "1", 0, "0"), + ("AlwaysOnLateralLKAS", "1", 2, "0"), + ("AlwaysOnLateralMain", "1", 2, "0"), ("AMapKey1", "", 0, ""), ("AMapKey2", "", 0, ""), ("AutomaticallyDownloadModels", "1", 1, "0"), @@ -161,6 +146,8 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [ ("BlindSpotMetrics", "1", 3, "0"), ("BlindSpotPath", "1", 1, "0"), ("BorderMetrics", "0", 3, "0"), + ("CalibratedLateralAcceleration", str(DEFAULT_LATERAL_ACCELERATION), 2, str(DEFAULT_LATERAL_ACCELERATION)), + ("CalibrationProgress", "0", 3, "0"), ("CameraView", "3", 2, "0"), ("CarMake", "", 0, ""), ("CarModel", "", 0, ""), @@ -171,7 +158,7 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [ ("CELead", "0", 1, "0"), ("CEModelStopTime", str(PLANNER_TIME - 2), 2, "0"), ("CENavigation", "1", 2, "0"), - ("CENavigationIntersections", "1", 2, "0"), + ("CENavigationIntersections", "0", 2, "0"), ("CENavigationLead", "1", 2, "0"), ("CENavigationTurns", "1", 2, "0"), ("CESignalSpeed", "55", 2, "0"), @@ -182,10 +169,10 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [ ("CEStoppedLead", "0", 1, "0"), ("ClusterOffset", "1.015", 2, "1.015"), ("Compass", "0", 1, "0"), - ("ConditionalExperimental", "1", 0, "0"), - ("CurveSensitivity", "100", 2, "100"), - ("CurveSpeedControl", "1", 1, "0"), - ("CustomAlerts", "1", 0, "0"), + ("ConditionalExperimental", "1", 1, "0"), + ("CurvatureData", "", 2, ""), + ("CurveSpeedController", "1", 1, "0"), + ("CustomAlerts", "0", 0, "0"), ("CustomColors", "frog", 0, "stock"), ("CustomCruise", "1", 2, "1"), ("CustomCruiseLong", "5", 2, "5"), @@ -216,19 +203,19 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [ ("DistanceButtonControl", "1", 2, "0"), ("DriverCamera", "0", 1, "0"), ("DynamicPathWidth", "0", 2, "0"), - ("DynamicPedalsOnUI", "1", 2, "0"), + ("DynamicPedalsOnUI", "1", 1, "0"), ("EngageVolume", "101", 2, "101"), ("ExperimentalGMTune", "0", 2, "0"), ("ExperimentalLongitudinalEnabled", "0", 0, "0"), ("ExperimentalModeConfirmed", "0", 0, "0"), ("Fahrenheit", "0", 3, "0"), ("FavoriteDestinations", "", 0, ""), - ("ForceAutoTune", "0", 2, "0"), - ("ForceAutoTuneOff", "0", 2, "0"), + ("ForceAutoTune", "0", 3, "0"), + ("ForceAutoTuneOff", "0", 3, "0"), ("ForceFingerprint", "0", 2, "0"), - ("ForceMPHDashboard", "0", 2, "0"), - ("ForceStandstill", "0", 2, "0"), + ("ForceMPHDashboard", "0", 3, "0"), ("ForceStops", "0", 2, "0"), + ("ForceTorqueController", "0", 3, "0"), ("FPSCounter", "1", 3, "0"), ("FrogPilotDongleId", "", 0, ""), ("FrogPilotStats", "", 0, ""), @@ -243,11 +230,12 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [ ("GsmRoaming", "1", 0, "0"), ("HideAlerts", "0", 2, "0"), ("HideLeadMarker", "0", 2, "0"), + ("HideMap", "0", 2, "0"), ("HideMapIcon", "0", 2, "0"), ("HideMaxSpeed", "0", 2, "0"), ("HideSpeed", "0", 2, "0"), ("HideSpeedLimit", "0", 2, "0"), - ("HigherBitrate", "0", 3, "0"), + ("HigherBitrate", "0", 2, "0"), ("HolidayThemes", "1", 0, "0"), ("HumanAcceleration", "1", 2, "0"), ("HumanFollowing", "1", 2, "0"), @@ -257,14 +245,14 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [ ("IsMetric", "0", 0, "0"), ("KonikDongleId", "", 0, ""), ("KonikMinutes", "0", 0, "0"), - ("LaneChangeCustomizations", "1", 0, "1"), - ("LaneChangeTime", "2.0", 0, "0"), - ("LaneDetectionWidth", "0", 2, "0"), + ("LaneChanges", "1", 0, "1"), + ("LaneChangeTime", "1.0", 1, "0"), + ("LaneDetectionWidth", "0", 1, "0"), ("LaneLinesWidth", "4", 2, "2"), - ("LateralTune", "1", 2, "0"), + ("LateralTune", "1", 1, "0"), ("LeadDepartingAlert", "0", 0, "0"), ("LeadDetectionThreshold", "35", 3, "50"), - ("LeadInfo", "1", 2, "0"), + ("LeadInfo", "1", 3, "0"), ("LiveDelay", "", 0, ""), ("LKASButtonControl", "5", 2, "0"), ("LockDoors", "1", 0, "0"), @@ -275,33 +263,31 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [ ("LongitudinalTune", "1", 0, "0"), ("LongPitch", "1", 2, "0"), ("LoudBlindspotAlert", "0", 0, "0"), - ("LowVoltageShutdown", str(VBATT_PAUSE_CHARGING), 2, str(VBATT_PAUSE_CHARGING)), + ("LowVoltageShutdown", str(VBATT_PAUSE_CHARGING), 3, str(VBATT_PAUSE_CHARGING)), ("MapAcceleration", "0", 1, "0"), ("MapboxPublicKey", "", 0, ""), ("MapboxSecretKey", "", 0, ""), ("MapDeceleration", "0", 1, "0"), - ("MapGears", "0", 1, "0"), + ("MapGears", "0", 2, "0"), ("MapsSelected", "", 0, ""), ("MapStyle", "1", 2, "0"), - ("MapTurnControl", "1", 1, "0"), - ("MaxDesiredAcceleration", "4.0", 3, "2.0"), + ("MaxDesiredAcceleration", "4.0", 2, "2.0"), ("MinimumLaneChangeSpeed", str(LANE_CHANGE_SPEED_MIN / CV.MPH_TO_MS), 2, str(LANE_CHANGE_SPEED_MIN / CV.MPH_TO_MS)), - ("Model", DEFAULT_CLASSIC_MODEL, 1, DEFAULT_CLASSIC_MODEL), + ("Model", DEFAULT_MODEL + "_default", 1, DEFAULT_MODEL + "_default"), ("ModelDrivesAndScores", "", 2, ""), ("ModelRandomizer", "0", 2, "0"), ("ModelUI", "1", 2, "0"), ("ModelVersions", "", 2, ""), - ("MTSCCurvatureCheck", "1", 2, "1"), ("NavigationUI", "1", 1, "0"), ("NavSettingLeftSide", "0", 0, "0"), ("NavSettingTime24h", "0", 0, "0"), - ("NewLongAPI", "1", 2, "1"), + ("NewLongAPI", "1", 3, "1"), ("NNFF", "1", 2, "0"), ("NNFFLite", "1", 2, "0"), ("NoLogging", "0", 2, "0"), ("NoUploads", "0", 2, "0"), - ("NudgelessLaneChange", "0", 0, "0"), - ("NumericalTemp", "1", 2, "0"), + ("NudgelessLaneChange", "1", 0, "0"), + ("NumericalTemp", "1", 3, "0"), ("Offset1", "5", 0, "0"), ("Offset2", "5", 0, "0"), ("Offset3", "5", 0, "0"), @@ -314,15 +300,15 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [ ("openpilotMinutes", "0", 0, "0"), ("PathEdgeWidth", "20", 2, "0"), ("PathWidth", "6.1", 2, "5.9"), - ("PauseAOLOnBrake", "0", 2, "0"), - ("PauseLateralOnSignal", "0", 2, "0"), - ("PauseLateralSpeed", "0", 2, "0"), - ("PedalsOnUI", "0", 2, "0"), + ("PauseAOLOnBrake", "0", 1, "0"), + ("PauseLateralOnSignal", "0", 1, "0"), + ("PauseLateralSpeed", "0", 1, "0"), + ("PedalsOnUI", "0", 1, "0"), ("PersonalizeOpenpilot", "1", 0, "0"), ("PreferredSchedule", "2", 0, "0"), ("PromptDistractedVolume", "101", 2, "101"), ("PromptVolume", "101", 2, "101"), - ("QOLLateral", "1", 2, "0"), + ("QOLLateral", "1", 1, "0"), ("QOLLongitudinal", "1", 1, "0"), ("QOLVisuals", "1", 0, "0"), ("RadarTracksUI", "0", 3, "0"), @@ -340,11 +326,11 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [ ("RelaxedPersonalityProfile", "1", 2, "0"), ("ReverseCruise", "0", 1, "0"), ("RoadEdgesWidth", "2", 2, "2"), - ("RoadNameUI", "1", 2, "0"), + ("RoadNameUI", "1", 1, "0"), ("RotatingWheel", "1", 1, "0"), ("ScreenBrightness", "101", 2, "101"), ("ScreenBrightnessOnroad", "101", 2, "101"), - ("ScreenManagement", "1", 2, "0"), + ("ScreenManagement", "1", 1, "0"), ("ScreenRecorder", "1", 2, "0"), ("ScreenTimeout", "30", 2, "30"), ("ScreenTimeoutOnroad", "30", 2, "10"), @@ -359,15 +345,16 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [ ("ShowGPU", "0", 3, "0"), ("ShowIP", "0", 3, "0"), ("ShowMemoryUsage", "1", 3, "0"), + ("ShownToggleDescriptions", "", 0, ""), ("ShowSLCOffset", "1", 0, "0"), ("ShowSpeedLimits", "1", 1, "0"), ("ShowSteering", "0", 3, "0"), - ("ShowStoppingPoint", "0", 2, "0"), - ("ShowStoppingPointMetrics", "0", 2, "0"), + ("ShowStoppingPoint", "1", 3, "0"), + ("ShowStoppingPointMetrics", "1", 3, "0"), ("ShowStorageLeft", "0", 3, "0"), ("ShowStorageUsed", "0", 3, "0"), ("Sidebar", "0", 0, "0"), - ("SignalMetrics", "0", 2, "0"), + ("SignalMetrics", "0", 3, "0"), ("SLCConfirmation", "0", 0, "0"), ("SLCConfirmationHigher", "0", 0, "0"), ("SLCConfirmationLower", "0", 0, "0"), @@ -380,10 +367,10 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [ ("SLCPriority2", "Map Data", 2, "Map Data"), ("SLCPriority3", "Dashboard", 2, "Dashboard"), ("SNGHack", "1", 2, "0"), - ("SpeedLimitChangedAlert", "1", 0, "0"), + ("SpeedLimitChangedAlert", "0", 0, "0"), ("SpeedLimitController", "1", 0, "0"), ("SpeedLimitFiller", "0", 0, "0"), - ("SpeedLimitSources", "0", 2, "0"), + ("SpeedLimitSources", "0", 3, "0"), ("SshEnabled", "0", 0, "0"), ("StartupMessageBottom", "Human-tested, frog-approved ๐Ÿธ", 0, "Always keep hands on wheel and eyes on road"), ("StartupMessageTop", "Hop in and buckle up!", 0, "Be ready to take over at any time"), @@ -394,10 +381,10 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [ ("StandardJerkSpeed", "100", 3, "100"), ("StandardJerkSpeedDecrease", "100", 3, "100"), ("StandardPersonalityProfile", "1", 2, "0"), - ("StandbyMode", "0", 2, "0"), + ("StandbyMode", "0", 1, "0"), ("StartAccel", "", 3, ""), ("StartAccelStock", "", 3, ""), - ("StaticPedalsOnUI", "0", 2, "0"), + ("StaticPedalsOnUI", "0", 1, "0"), ("SteerDelay", "", 3, ""), ("SteerDelayStock", "", 3, ""), ("SteerFriction", "", 3, ""), @@ -416,6 +403,8 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [ ("TacoTune", "0", 2, "0"), ("TacoTuneHacks", "0", 2, "0"), ("TetheringEnabled", "0", 0, "0"), + ("ThemesDownloaded", "", 0, ""), + ("TinygradUpdateAvailable", "0", 1, "0"), ("ToyotaDoors", "1", 0, "0"), ("TrafficFollow", "0.5", 2, "0.5"), ("TrafficJerkAcceleration", "50", 3, "50"), @@ -426,7 +415,6 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [ ("TrafficPersonalityProfile", "1", 2, "0"), ("TuningLevel", "0", 0, "0"), ("TuningLevelConfirmed", "0", 0, "0"), - ("TurnAggressiveness", "100", 2, "100"), ("TurnDesires", "0", 2, "0"), ("UnlimitedLength", "1", 2, "0"), ("UnlockDoors", "1", 0, "0"), @@ -439,7 +427,6 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [ ("VEgoStopping", "", 3, ""), ("VEgoStoppingStock", "", 3, ""), ("VeryLongDistanceButtonControl", "6", 2, "0"), - ("VisionTurnControl", "1", 1, "0"), ("VoltSNG", "0", 2, "0"), ("WarningImmediateVolume", "101", 2, "101"), ("WarningSoftVolume", "101", 2, "101"), @@ -455,7 +442,7 @@ misc_tuning_levels: list[tuple[str, str | bytes, int, str]] = [ class FrogPilotVariables: def __init__(self): - self.frogpilot_toggles = get_frogpilot_toggles(block=False) + self.frogpilot_toggles = get_frogpilot_toggles() self.tuning_levels = {key: lvl for key, _, lvl, _ in frogpilot_default_params + misc_tuning_levels} short_branch = get_build_metadata().channel @@ -510,7 +497,7 @@ class FrogPilotVariables: params_memory.put("FrogPilotTuningLevels", json.dumps(self.tuning_levels)) - def update(self, holiday_theme, started, boot_run=False): + def update(self, holiday_theme, started): default = params_default level = self.tuning_levels toggle = self.frogpilot_toggles @@ -532,7 +519,7 @@ class FrogPilotVariables: CP = cp_reader.as_builder() else: CarInterface, _, _ = interfaces[MOCK.MOCK] - CP = CarInterface.get_params(MOCK.MOCK, gen_empty_fingerprint(), [], False, toggle, params, False) + CP = CarInterface.get_params(MOCK.MOCK, gen_empty_fingerprint(), [], False, toggle, False) CarInterface.configure_torque_tune(MOCK.MOCK, CP.lateralTuning) safety_config = car.CarParams.SafetyConfig.new_message() @@ -545,36 +532,35 @@ class FrogPilotVariables: FPCP = fpcp_reader.as_builder() else: CarInterface, _, _ = interfaces[MOCK.MOCK] - FPCP = CarInterface.get_frogpilot_params(MOCK.MOCK, gen_empty_fingerprint(), [], toggle) + FPCP = CarInterface.get_frogpilot_params(MOCK.MOCK, gen_empty_fingerprint(), [], CP, toggle) - is_torque_car = CP.lateralTuning.which() == "torque" + is_torque_car = FPCP.lateralTuning.which() == "torque" if not is_torque_car: - CarInterfaceBase.configure_torque_tune("MOCK", CP.lateralTuning) + CarInterfaceBase.configure_torque_tune(MOCK.MOCK, FPCP.lateralTuning) - always_on_lateral_set = bool(CP.alternativeExperience & ALTERNATIVE_EXPERIENCE.ALWAYS_ON_LATERAL) + toggle.always_on_lateral_set = bool(CP.alternativeExperience & ALTERNATIVE_EXPERIENCE.ALWAYS_ON_LATERAL) toggle.car_make = CP.carName toggle.car_model = CP.carFingerprint toggle.disable_openpilot_long = params.get_bool("DisableOpenpilotLongitudinal") if tuning_level >= level["DisableOpenpilotLongitudinal"] else default.get_bool("DisableOpenpilotLongitudinal") - friction = CP.lateralTuning.torque.friction - has_auto_tune = toggle.car_make in {"hyundai", "toyota"} and CP.lateralTuning.which() == "torque" + friction = FPCP.lateralTuning.torque.friction + has_auto_tune = toggle.car_make in {"hyundai", "toyota"} and FPCP.lateralTuning.which() == "torque" has_bsm = CP.enableBsm toggle.has_cc_long = toggle.car_make == "gm" and bool(CP.flags & GMFlags.CC_LONG.value) - has_nnff = not comma_nnff_supported(toggle.car_model) and nnff_supported(toggle.car_model) + has_nnff = nnff_supported(toggle.car_model) toggle.has_pedal = CP.enableGasInterceptor has_radar = not CP.radarUnavailable toggle.has_sdsu = toggle.car_make == "toyota" and bool(CP.flags & ToyotaFlags.SMART_DSU.value) has_sng = CP.autoResumeSng toggle.has_zss = toggle.car_make == "toyota" and bool(FPCP.fpFlags & ToyotaFrogPilotFlags.ZSS.value) is_angle_car = CP.steerControlType == car.CarParams.SteerControlType.angle - latAccelFactor = CP.lateralTuning.torque.latAccelFactor + latAccelFactor = FPCP.lateralTuning.torque.latAccelFactor longitudinalActuatorDelay = CP.longitudinalActuatorDelay - max_acceleration_enabled = bool(CP.alternativeExperience & ALTERNATIVE_EXPERIENCE.RAISE_LONGITUDINAL_LIMITS_TO_ISO_MAX) toggle.openpilot_longitudinal = CP.openpilotLongitudinalControl and not toggle.disable_openpilot_long pcm_cruise = CP.pcmCruise startAccel = CP.startAccel stopAccel = CP.stopAccel steerActuatorDelay = CP.steerActuatorDelay - steerKp = CP.lateralTuning.torque.kp + steerKp = FPCP.lateralTuning.torque.kp steerRatio = CP.steerRatio toggle.stoppingDecelRate = CP.stoppingDecelRate taco_hacks_allowed = CP.safetyConfigs[0].safetyModel == SafetyModel.hyundaiCanfd @@ -595,7 +581,8 @@ class FrogPilotVariables: advanced_custom_ui = params.get_bool("AdvancedCustomUI") if tuning_level >= level["AdvancedCustomUI"] else default.get_bool("AdvancedCustomUI") toggle.hide_alerts = advanced_custom_ui and (params.get_bool("HideAlerts") if tuning_level >= level["HideAlerts"] else default.get_bool("HideAlerts")) and not toggle.debug_mode toggle.hide_lead_marker = toggle.openpilot_longitudinal and (advanced_custom_ui and (params.get_bool("HideLeadMarker") if tuning_level >= level["HideLeadMarker"] else default.get_bool("HideLeadMarker")) and not toggle.debug_mode) - toggle.hide_map_icon = advanced_custom_ui and (params.get_bool("HideMapIcon") if tuning_level >= level["HideMapIcon"] else default.get_bool("HideMapIcon")) and not toggle.debug_mode + toggle.hide_map_icon = advanced_custom_ui and (params.get_bool("HideMapIcon") if tuning_level >= level["HideMapIcon"] else default.get_bool("HideMapIcon")) + toggle.hide_map = toggle.hide_map_icon and (params.get_bool("HideMap") if tuning_level >= level["HideMap"] else default.get_bool("HideMap")) toggle.hide_max_speed = advanced_custom_ui and (params.get_bool("HideMaxSpeed") if tuning_level >= level["HideMaxSpeed"] else default.get_bool("HideMaxSpeed")) and not toggle.debug_mode toggle.hide_speed = advanced_custom_ui and (params.get_bool("HideSpeed") if tuning_level >= level["HideSpeed"] else default.get_bool("HideSpeed")) and not toggle.debug_mode toggle.hide_speed_limit = advanced_custom_ui and (params.get_bool("HideSpeedLimit") if tuning_level >= level["HideSpeedLimit"] else default.get_bool("HideSpeedLimit")) and not toggle.debug_mode @@ -605,14 +592,14 @@ class FrogPilotVariables: toggle.force_auto_tune = advanced_lateral_tuning and not has_auto_tune and is_torque_car and (params.get_bool("ForceAutoTune") if tuning_level >= level["ForceAutoTune"] else default.get_bool("ForceAutoTune")) toggle.force_auto_tune_off = advanced_lateral_tuning and has_auto_tune and is_torque_car and (params.get_bool("ForceAutoTuneOff") if tuning_level >= level["ForceAutoTuneOff"] else default.get_bool("ForceAutoTuneOff")) toggle.steerActuatorDelay = np.clip(params.get_float("SteerDelay"), 0.01, 1.0) if advanced_lateral_tuning and tuning_level >= level["SteerDelay"] else steerActuatorDelay - toggle.use_custom_steerActuatorDelay = bool(toggle.steerActuatorDelay != steerActuatorDelay) + toggle.use_custom_steerActuatorDelay = bool(round(toggle.steerActuatorDelay, 2) != round(steerActuatorDelay, 2)) toggle.friction = np.clip(params.get_float("SteerFriction"), 0, 0.5) if advanced_lateral_tuning and tuning_level >= level["SteerFriction"] else friction - toggle.use_custom_friction = toggle.friction != friction and is_torque_car and not toggle.force_auto_tune or toggle.force_auto_tune_off + toggle.use_custom_friction = bool(round(toggle.friction, 2) != round(friction, 2)) and is_torque_car and not toggle.force_auto_tune or toggle.force_auto_tune_off toggle.steerKp = [[0], [np.clip(params.get_float("SteerKP"), steerKp * 0.5, steerKp * 1.5) if advanced_lateral_tuning and is_torque_car and tuning_level >= level["SteerKP"] else steerKp]] toggle.latAccelFactor = np.clip(params.get_float("SteerLatAccel"), latAccelFactor * 0.75, latAccelFactor * 1.25) if advanced_lateral_tuning and tuning_level >= level["SteerLatAccel"] else latAccelFactor - toggle.use_custom_latAccelFactor = toggle.latAccelFactor != latAccelFactor and is_torque_car and not toggle.force_auto_tune or toggle.force_auto_tune_off + toggle.use_custom_latAccelFactor = bool(round(toggle.latAccelFactor, 2) != round(latAccelFactor, 2)) and is_torque_car and not toggle.force_auto_tune or toggle.force_auto_tune_off toggle.steerRatio = np.clip(params.get_float("SteerRatio"), steerRatio * 0.5, steerRatio * 1.5) if advanced_lateral_tuning and tuning_level >= level["SteerRatio"] else steerRatio - toggle.use_custom_steerRatio = toggle.steerRatio != steerRatio and not toggle.force_auto_tune or toggle.force_auto_tune_off + toggle.use_custom_steerRatio = bool(round(toggle.steerRatio, 2) != round(steerRatio, 2)) and not toggle.force_auto_tune or toggle.force_auto_tune_off advanced_longitudinal_tuning = params.get_bool("AdvancedLongitudinalTune") if tuning_level >= level["AdvancedLongitudinalTune"] else default.get_bool("AdvancedLongitudinalTune") toggle.longitudinalActuatorDelay = np.clip(params.get_float("LongitudinalActuatorDelay"), 0, 1) if advanced_longitudinal_tuning and tuning_level >= level["LongitudinalActuatorDelay"] else longitudinalActuatorDelay @@ -632,7 +619,7 @@ class FrogPilotVariables: toggle.warningImmediate_volume = max(params.get_int("WarningImmediateVolume"), 25) if toggle.alert_volume_controller and tuning_level >= level["WarningImmediateVolume"] else default.get_int("WarningImmediateVolume") toggle.always_on_lateral = params.get_bool("AlwaysOnLateral") if tuning_level >= level["AlwaysOnLateral"] else default.get_bool("AlwaysOnLateral") - toggle.always_on_lateral_set = toggle.always_on_lateral and always_on_lateral_set + toggle.always_on_lateral_set &= toggle.always_on_lateral toggle.always_on_lateral_lkas = toggle.always_on_lateral_set and toggle.use_lkas_for_aol and (params.get_bool("AlwaysOnLateralLKAS") if tuning_level >= level["AlwaysOnLateralLKAS"] else default.get_bool("AlwaysOnLateralLKAS")) toggle.always_on_lateral_main = toggle.always_on_lateral_set and not toggle.use_lkas_for_aol and (params.get_bool("AlwaysOnLateralMain") if tuning_level >= level["AlwaysOnLateralMain"] else default.get_bool("AlwaysOnLateralMain")) toggle.always_on_lateral_pause_speed = params.get_int("PauseAOLOnBrake") if toggle.always_on_lateral_set and tuning_level >= level["PauseAOLOnBrake"] else default.get_int("PauseAOLOnBrake") @@ -656,16 +643,11 @@ class FrogPilotVariables: toggle.conditional_navigation_lead = toggle.conditional_navigation and (params.get_bool("CENavigationLead") if tuning_level >= level["CENavigationLead"] else default.get_bool("CENavigationLead")) toggle.conditional_navigation_turns = toggle.conditional_navigation and (params.get_bool("CENavigationTurns") if tuning_level >= level["CENavigationTurns"] else default.get_bool("CENavigationTurns")) toggle.conditional_model_stop_time = params.get_int("CEModelStopTime") if toggle.conditional_experimental_mode and tuning_level >= level["CEModelStopTime"] else default.get_int("CEModelStopTime") - toggle.conditional_signal = params.get_int("CESignalSpeed") if toggle.conditional_experimental_mode and tuning_level >= level["CESignalSpeed"] else default.get_int("CESignalSpeed") + toggle.conditional_signal = params.get_int("CESignalSpeed") * speed_conversion if toggle.conditional_experimental_mode and tuning_level >= level["CESignalSpeed"] else default.get_int("CESignalSpeed") * CV.MPH_TO_MS toggle.conditional_signal_lane_detection = toggle.conditional_signal != 0 and (params.get_bool("CESignalLaneDetection") if tuning_level >= level["CESignalLaneDetection"] else default.get_bool("CESignalLaneDetection")) toggle.cem_status = toggle.conditional_experimental_mode and (params.get_bool("ShowCEMStatus") if tuning_level >= level["ShowCEMStatus"] else default.get_bool("ShowCEMStatus")) or toggle.debug_mode - toggle.curve_speed_controller = toggle.openpilot_longitudinal and (params.get_bool("CurveSpeedControl") if tuning_level >= level["CurveSpeedControl"] else default.get_bool("CurveSpeedControl")) - toggle.curve_sensitivity = params.get_int("CurveSensitivity") / 100 if toggle.curve_speed_controller and tuning_level >= level["CurveSensitivity"] else default.get_int("CurveSensitivity") / 100 - toggle.turn_aggressiveness = params.get_int("TurnAggressiveness") / 100 if toggle.curve_speed_controller and tuning_level >= level["TurnAggressiveness"] else default.get_int("TurnAggressiveness") / 100 - toggle.map_turn_speed_controller = toggle.curve_speed_controller and (params.get_bool("MapTurnControl") if tuning_level >= level["MapTurnControl"] else default.get_bool("MapTurnControl")) - toggle.mtsc_curvature_check = toggle.map_turn_speed_controller and (params.get_bool("MTSCCurvatureCheck") if tuning_level >= level["MTSCCurvatureCheck"] else default.get_bool("MTSCCurvatureCheck")) - toggle.vision_turn_speed_controller = toggle.curve_speed_controller and (params.get_bool("VisionTurnControl") if tuning_level >= level["VisionTurnControl"] else default.get_bool("VisionTurnControl")) + toggle.curve_speed_controller = toggle.openpilot_longitudinal and (params.get_bool("CurveSpeedController") if tuning_level >= level["CurveSpeedController"] else default.get_bool("CurveSpeedController")) toggle.csc_status = toggle.curve_speed_controller and (params.get_bool("ShowCSCStatus") if tuning_level >= level["ShowCSCStatus"] else default.get_bool("ShowCSCStatus")) or toggle.debug_mode toggle.custom_alerts = params.get_bool("CustomAlerts") if tuning_level >= level["CustomAlerts"] else default.get_bool("CustomAlerts") @@ -682,28 +664,28 @@ class FrogPilotVariables: toggle.aggressive_jerk_danger = np.clip(params.get_int("AggressiveJerkDanger") / 100, 0.25, 2) if aggressive_profile and tuning_level >= level["AggressiveJerkDanger"] else default.get_int("AggressiveJerkDanger") / 100 toggle.aggressive_jerk_speed = np.clip(params.get_int("AggressiveJerkSpeed") / 100, 0.25, 2) if aggressive_profile and tuning_level >= level["AggressiveJerkSpeed"] else default.get_int("AggressiveJerkSpeed") / 100 toggle.aggressive_jerk_speed_decrease = np.clip(params.get_int("AggressiveJerkSpeedDecrease") / 100, 0.25, 2) if aggressive_profile and tuning_level >= level["AggressiveJerkSpeedDecrease"] else default.get_int("AggressiveJerkSpeedDecrease") / 100 - toggle.aggressive_follow = np.clip(params.get_float("AggressiveFollow"), 1, 5) if aggressive_profile and tuning_level >= level["AggressiveFollow"] else default.get_float("AggressiveFollow") + toggle.aggressive_follow = np.clip(params.get_float("AggressiveFollow"), 1, MAX_T_FOLLOW) if aggressive_profile and tuning_level >= level["AggressiveFollow"] else default.get_float("AggressiveFollow") standard_profile = toggle.custom_personalities and (params.get_bool("StandardPersonalityProfile") if tuning_level >= level["StandardPersonalityProfile"] else default.get_bool("StandardPersonalityProfile")) toggle.standard_jerk_acceleration = np.clip(params.get_int("StandardJerkAcceleration") / 100, 0.25, 2) if standard_profile and tuning_level >= level["StandardJerkAcceleration"] else default.get_int("StandardJerkAcceleration") / 100 toggle.standard_jerk_deceleration = np.clip(params.get_int("StandardJerkDeceleration") / 100, 0.25, 2) if standard_profile and tuning_level >= level["StandardJerkDeceleration"] else default.get_int("StandardJerkDeceleration") / 100 toggle.standard_jerk_danger = np.clip(params.get_int("StandardJerkDanger") / 100, 0.25, 2) if standard_profile and tuning_level >= level["StandardJerkDanger"] else default.get_int("StandardJerkDanger") / 100 toggle.standard_jerk_speed = np.clip(params.get_int("StandardJerkSpeed") / 100, 0.25, 2) if standard_profile and tuning_level >= level["StandardJerkSpeed"] else default.get_int("StandardJerkSpeed") / 100 toggle.standard_jerk_speed_decrease = np.clip(params.get_int("StandardJerkSpeedDecrease") / 100, 0.25, 2) if standard_profile and tuning_level >= level["StandardJerkSpeedDecrease"] else default.get_int("StandardJerkSpeedDecrease") / 100 - toggle.standard_follow = np.clip(params.get_float("StandardFollow"), 1, 5) if standard_profile and tuning_level >= level["StandardFollow"] else default.get_float("StandardFollow") + toggle.standard_follow = np.clip(params.get_float("StandardFollow"), 1, MAX_T_FOLLOW) if standard_profile and tuning_level >= level["StandardFollow"] else default.get_float("StandardFollow") relaxed_profile = toggle.custom_personalities and (params.get_bool("RelaxedPersonalityProfile") if tuning_level >= level["RelaxedPersonalityProfile"] else default.get_bool("RelaxedPersonalityProfile")) toggle.relaxed_jerk_acceleration = np.clip(params.get_int("RelaxedJerkAcceleration") / 100, 0.25, 2) if relaxed_profile and tuning_level >= level["RelaxedJerkAcceleration"] else default.get_int("RelaxedJerkAcceleration") / 100 toggle.relaxed_jerk_deceleration = np.clip(params.get_int("RelaxedJerkDeceleration") / 100, 0.25, 2) if relaxed_profile and tuning_level >= level["RelaxedJerkDeceleration"] else default.get_int("RelaxedJerkDeceleration") / 100 toggle.relaxed_jerk_danger = np.clip(params.get_int("RelaxedJerkDanger") / 100, 0.25, 2) if relaxed_profile and tuning_level >= level["RelaxedJerkDanger"] else default.get_int("RelaxedJerkDanger") / 100 toggle.relaxed_jerk_speed = np.clip(params.get_int("RelaxedJerkSpeed") / 100, 0.25, 2) if relaxed_profile and tuning_level >= level["RelaxedJerkSpeed"] else default.get_int("RelaxedJerkSpeed") / 100 toggle.relaxed_jerk_speed_decrease = np.clip(params.get_int("RelaxedJerkSpeedDecrease") / 100, 0.25, 2) if relaxed_profile and tuning_level >= level["RelaxedJerkSpeedDecrease"] else default.get_int("RelaxedJerkSpeedDecrease") / 100 - toggle.relaxed_follow = np.clip(params.get_float("RelaxedFollow"), 1, 5) if relaxed_profile and tuning_level >= level["RelaxedFollow"] else default.get_float("RelaxedFollow") + toggle.relaxed_follow = np.clip(params.get_float("RelaxedFollow"), 1, MAX_T_FOLLOW) if relaxed_profile and tuning_level >= level["RelaxedFollow"] else default.get_float("RelaxedFollow") traffic_profile = toggle.custom_personalities and (params.get_bool("TrafficPersonalityProfile") if tuning_level >= level["TrafficPersonalityProfile"] else default.get_bool("TrafficPersonalityProfile")) toggle.traffic_mode_jerk_acceleration = [np.clip(params.get_int("TrafficJerkAcceleration") / 100, 0.25, 2) if traffic_profile and tuning_level >= level["TrafficJerkAcceleration"] else default.get_int("TrafficJerkAcceleration") / 100, toggle.aggressive_jerk_acceleration] toggle.traffic_mode_jerk_deceleration = [np.clip(params.get_int("TrafficJerkDeceleration") / 100, 0.25, 2) if traffic_profile and tuning_level >= level["TrafficJerkDeceleration"] else default.get_int("TrafficJerkDeceleration") / 100, toggle.aggressive_jerk_deceleration] toggle.traffic_mode_jerk_danger = [np.clip(params.get_int("TrafficJerkDanger") / 100, 0.25, 2) if traffic_profile and tuning_level >= level["TrafficJerkDanger"] else default.get_int("TrafficJerkDanger") / 100, toggle.aggressive_jerk_danger] toggle.traffic_mode_jerk_speed = [np.clip(params.get_int("TrafficJerkSpeed") / 100, 0.25, 2) if traffic_profile and tuning_level >= level["TrafficJerkSpeed"] else default.get_int("TrafficJerkSpeed") / 100, toggle.aggressive_jerk_speed] toggle.traffic_mode_jerk_speed_decrease = [np.clip(params.get_int("TrafficJerkSpeedDecrease") / 100, 0.25, 2) if traffic_profile and tuning_level >= level["TrafficJerkSpeedDecrease"] else default.get_int("TrafficJerkSpeedDecrease") / 100, toggle.aggressive_jerk_speed_decrease] - toggle.traffic_mode_follow = [np.clip(params.get_float("TrafficFollow"), 0.5, 5) if traffic_profile and tuning_level >= level["TrafficFollow"] else default.get_float("TrafficFollow"), toggle.aggressive_follow] + toggle.traffic_mode_follow = [np.clip(params.get_float("TrafficFollow"), 0.5, MAX_T_FOLLOW) if traffic_profile and tuning_level >= level["TrafficFollow"] else default.get_float("TrafficFollow"), toggle.aggressive_follow] custom_ui = params.get_bool("CustomUI") if tuning_level >= level["CustomUI"] else default.get_bool("CustomUI") toggle.acceleration_path = toggle.openpilot_longitudinal and (custom_ui and (params.get_bool("AccelerationPath") if tuning_level >= level["AccelerationPath"] else default.get_bool("AccelerationPath")) or toggle.debug_mode) @@ -734,13 +716,13 @@ class FrogPilotVariables: toggle.storage_used_metrics = developer_metrics and (params.get_bool("ShowStorageUsed") if tuning_level >= level["ShowStorageUsed"] else default.get_bool("ShowStorageUsed")) and not toggle.debug_mode toggle.use_si_metrics = developer_metrics and (params.get_bool("UseSI") if tuning_level >= level["UseSI"] else default.get_bool("UseSI")) or toggle.debug_mode toggle.developer_sidebar = toggle.developer_ui and (params.get_bool("DeveloperSidebar") if tuning_level >= level["DeveloperSidebar"] else default.get_bool("DeveloperSidebar")) or toggle.debug_mode - toggle.developer_sidebar_metric1 = params.get_int("DeveloperSidebarMetric1") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric1"] else 1 if toggle.debug_mode else default.get_float("DeveloperSidebarMetric1") - toggle.developer_sidebar_metric2 = params.get_int("DeveloperSidebarMetric2") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric2"] else 3 if toggle.debug_mode else default.get_float("DeveloperSidebarMetric2") - toggle.developer_sidebar_metric3 = params.get_int("DeveloperSidebarMetric3") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric3"] else 4 if toggle.debug_mode else default.get_float("DeveloperSidebarMetric3") - toggle.developer_sidebar_metric4 = params.get_int("DeveloperSidebarMetric4") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric4"] else 5 if toggle.debug_mode else default.get_float("DeveloperSidebarMetric4") - toggle.developer_sidebar_metric5 = params.get_int("DeveloperSidebarMetric5") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric5"] else 6 if toggle.debug_mode else default.get_float("DeveloperSidebarMetric5") - toggle.developer_sidebar_metric6 = params.get_int("DeveloperSidebarMetric6") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric6"] else 7 if toggle.debug_mode else default.get_float("DeveloperSidebarMetric6") - toggle.developer_sidebar_metric7 = params.get_int("DeveloperSidebarMetric7") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric7"] else 11 if toggle.debug_mode else default.get_float("DeveloperSidebarMetric7") + toggle.developer_sidebar_metric1 = params.get_int("DeveloperSidebarMetric1") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric1"] else 1 if toggle.debug_mode else default.get_int("DeveloperSidebarMetric1") + toggle.developer_sidebar_metric2 = params.get_int("DeveloperSidebarMetric2") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric2"] else 3 if toggle.debug_mode else default.get_int("DeveloperSidebarMetric2") + toggle.developer_sidebar_metric3 = params.get_int("DeveloperSidebarMetric3") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric3"] else 4 if toggle.debug_mode else default.get_int("DeveloperSidebarMetric3") + toggle.developer_sidebar_metric4 = params.get_int("DeveloperSidebarMetric4") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric4"] else 5 if toggle.debug_mode else default.get_int("DeveloperSidebarMetric4") + toggle.developer_sidebar_metric5 = params.get_int("DeveloperSidebarMetric5") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric5"] else 6 if toggle.debug_mode else default.get_int("DeveloperSidebarMetric5") + toggle.developer_sidebar_metric6 = params.get_int("DeveloperSidebarMetric6") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric6"] else 7 if toggle.debug_mode else default.get_int("DeveloperSidebarMetric6") + toggle.developer_sidebar_metric7 = params.get_int("DeveloperSidebarMetric7") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric7"] else 11 if toggle.debug_mode else default.get_int("DeveloperSidebarMetric7") developer_widgets = toggle.developer_ui and params.get_bool("DeveloperWidgets") if tuning_level >= level["DeveloperWidgets"] else default.get_bool("DeveloperWidgets") toggle.adjacent_lead_tracking = has_radar and ((developer_widgets and params.get_bool("AdjacentLeadsUI") if tuning_level >= level["AdjacentLeadsUI"] else default.get_bool("AdjacentLeadsUI")) or toggle.debug_mode) toggle.radar_tracks = has_radar and ((developer_widgets and params.get_bool("RadarTracksUI") if tuning_level >= level["RadarTracksUI"] else default.get_bool("RadarTracksUI")) or toggle.debug_mode) @@ -798,7 +780,7 @@ class FrogPilotVariables: toggle.holiday_themes = params.get_bool("HolidayThemes") if tuning_level >= level["HolidayThemes"] else default.get_bool("HolidayThemes") toggle.current_holiday_theme = holiday_theme if toggle.holiday_themes else "stock" - toggle.lane_changes = params.get_bool("LaneChangeCustomizations") if tuning_level >= level["LaneChangeCustomizations"] else default.get_bool("LaneChangeCustomizations") + toggle.lane_changes = params.get_bool("LaneChanges") if tuning_level >= level["LaneChanges"] else default.get_bool("LaneChanges") toggle.lane_change_delay = params.get_float("LaneChangeTime") if toggle.lane_changes and tuning_level >= level["LaneChangeTime"] else default.get_float("LaneChangeTime") toggle.lane_detection_width = params.get_float("LaneDetectionWidth") * distance_conversion if toggle.lane_changes and tuning_level >= level["LaneDetectionWidth"] else default.get_float("LaneDetectionWidth") * CV.FOOT_TO_METER toggle.lane_detection = toggle.lane_detection_width > 0 @@ -807,6 +789,7 @@ class FrogPilotVariables: toggle.one_lane_change = toggle.lane_changes and (params.get_bool("OneLaneChange") if tuning_level >= level["OneLaneChange"] else default.get_bool("OneLaneChange")) lateral_tuning = params.get_bool("LateralTune") if tuning_level >= level["LateralTune"] else default.get_bool("LateralTune") + toggle.force_torque_controller = lateral_tuning and not is_torque_car and (params.get_bool("ForceTorqueController") if tuning_level >= level["ForceTorqueController"] else default.get_bool("ForceTorqueController")) toggle.nnff = lateral_tuning and has_nnff and not is_angle_car and (params.get_bool("NNFF") if tuning_level >= level["NNFF"] else default.get_bool("NNFF")) toggle.nnff_lite = not toggle.nnff and lateral_tuning and not is_angle_car and (params.get_bool("NNFFLite") if tuning_level >= level["NNFFLite"] else default.get_bool("NNFFLite")) toggle.use_turn_desires = lateral_tuning and (params.get_bool("TurnDesires") if tuning_level >= level["TurnDesires"] else default.get_bool("TurnDesires")) @@ -826,7 +809,6 @@ class FrogPilotVariables: longitudinal_tuning = toggle.openpilot_longitudinal and (params.get_bool("LongitudinalTune") if tuning_level >= level["LongitudinalTune"] else default.get_bool("LongitudinalTune")) toggle.acceleration_profile = params.get_int("AccelerationProfile") if longitudinal_tuning and tuning_level >= level["AccelerationProfile"] else default.get_int("AccelerationProfile") - toggle.sport_plus = max_acceleration_enabled and toggle.acceleration_profile == 3 toggle.deceleration_profile = params.get_int("DecelerationProfile") if longitudinal_tuning and tuning_level >= level["DecelerationProfile"] else default.get_int("DecelerationProfile") toggle.human_acceleration = longitudinal_tuning and (params.get_bool("HumanAcceleration") if tuning_level >= level["HumanAcceleration"] else default.get_bool("HumanAcceleration")) toggle.human_following = longitudinal_tuning and (params.get_bool("HumanFollowing") if tuning_level >= level["HumanFollowing"] else default.get_bool("HumanFollowing")) @@ -834,39 +816,31 @@ class FrogPilotVariables: toggle.max_desired_acceleration = np.clip(params.get_float("MaxDesiredAcceleration"), 0.1, 4.0) if longitudinal_tuning and tuning_level >= level["MaxDesiredAcceleration"] else default.get_float("MaxDesiredAcceleration") toggle.taco_tune = longitudinal_tuning and (params.get_bool("TacoTune") if tuning_level >= level["TacoTune"] else default.get_bool("TacoTune")) - toggle.available_models = params.get("AvailableModels", encoding="utf-8") or "" - toggle.available_model_names = params.get("AvailableModelNames", encoding="utf-8") or "" - toggle.model_versions = params.get("ModelVersions", encoding="utf-8") or "" - downloaded_models = [model for model in toggle.available_models.split(",") if any(MODELS_PATH.glob(f"{model}.*"))] - toggle.model_randomizer = downloaded_models and (params.get_bool("ModelRandomizer") if tuning_level >= level["ModelRandomizer"] else default.get_bool("ModelRandomizer")) - if toggle.available_models and toggle.available_model_names and downloaded_models and toggle.model_versions: - toggle.available_models += f",{DEFAULT_TINYGRAD_MODEL}" - toggle.available_model_names += f",{DEFAULT_TINYGRAD_MODEL_NAME}" - toggle.model_versions += f",{DEFAULT_TINYGRAD_MODEL_VERSION}" - downloaded_models += [DEFAULT_TINYGRAD_MODEL] - if toggle.model_randomizer: - if not started: - blacklisted_models = (params.get("BlacklistedModels", encoding="utf-8") or "").split(",") - selectable_models = [model for model in downloaded_models if model not in blacklisted_models] - toggle.model = random.choice(selectable_models) if selectable_models else default.get("Model", encoding="utf-8") - toggle.model_name = "Mystery Model ๐Ÿ‘ป" - toggle.model_version = toggle.model_versions.split(",")[toggle.available_models.split(",").index(toggle.model)] - else: - toggle.model = params.get("Model", encoding="utf-8") if tuning_level >= level["Model"] else default.get("Model", encoding="utf-8") - if toggle.model in downloaded_models: - toggle.model_name = toggle.available_model_names.split(",")[toggle.available_models.split(",").index(toggle.model)] - toggle.model_version = toggle.model_versions.split(",")[toggle.available_models.split(",").index(toggle.model)] - else: - toggle.model = default.get("Model", encoding="utf-8") - toggle.model_name = toggle.available_model_names.split(",")[toggle.available_models.split(",").index(toggle.model)] - toggle.model_version = toggle.model_versions.split(",")[toggle.available_models.split(",").index(toggle.model)] + toggle.available_models = (params.get("AvailableModels", encoding="utf-8") or "") + f",{DEFAULT_MODEL}" + toggle.available_model_names = (params.get("AvailableModelNames", encoding="utf-8") or "") + f",{DEFAULT_MODEL_NAME}" + downloaded_models = [model for model in toggle.available_models.split(",") if (MODELS_PATH / f"{model}.thneed").is_file() or all((MODELS_PATH / f"{model}_{filename}").is_file() for filename, _ in TINYGRAD_FILES)] + model_versions = (params.get("ModelVersions", encoding="utf-8") or "") + f",{DEFAULT_MODEL_VERSION}" + toggle.model_randomizer = params.get_bool("ModelRandomizer") if tuning_level >= level["ModelRandomizer"] else default.get_bool("ModelRandomizer") + if toggle.model_randomizer: + if not started: + blacklisted_models = (params.get("BlacklistedModels", encoding="utf-8") or "").split(",") + selectable_models = [model for model in downloaded_models if model not in blacklisted_models] + toggle.model = random.choice(selectable_models) if selectable_models else DEFAULT_MODEL + toggle.model_name = "Mystery Model ๐Ÿ‘ป" + toggle.model_version = model_versions.split(",")[toggle.available_models.split(",").index(toggle.model)] else: - toggle.model = DEFAULT_CLASSIC_MODEL - toggle.model_name = DEFAULT_CLASSIC_MODEL_NAME - toggle.model_version = DEFAULT_CLASSIC_MODEL_VERSION + model = ((params.get("Model", encoding="utf-8") if tuning_level >= level["Model"] else default.get("Model", encoding="utf-8")) or DEFAULT_MODEL).removesuffix("_default") + if model in downloaded_models: + toggle.model = model + toggle.model_name = dict(zip(toggle.available_models.split(","), toggle.available_model_names.split(",")))[toggle.model] + toggle.model_version = dict(zip(toggle.available_models.split(","), model_versions.split(",")))[toggle.model] + else: + toggle.model = DEFAULT_MODEL + toggle.model_name = DEFAULT_MODEL_NAME + toggle.model_version = DEFAULT_MODEL_VERSION toggle.classic_model = toggle.model_version in {"v1", "v2", "v3", "v4"} - toggle.tinygrad_model = toggle.model_version in {"v7"} - toggle.tomb_raider = toggle.model == "space-lab" + toggle.classic_longitudinal = toggle.model_version in {"v1", "v2", "v3", "v4", "v5", "v6"} + toggle.tinygrad_model = not toggle.classic_model and toggle.model_version not in {"v5", "v6"} toggle.model_ui = params.get_bool("ModelUI") if tuning_level >= level["ModelUI"] else default.get_bool("ModelUI") toggle.dynamic_path_width = toggle.model_ui and (params.get_bool("DynamicPathWidth") if tuning_level >= level["DynamicPathWidth"] else default.get_bool("DynamicPathWidth")) @@ -884,8 +858,9 @@ class FrogPilotVariables: toggle.show_speed_limits = toggle.navigation_ui and (params.get_bool("ShowSpeedLimits") if tuning_level >= level["ShowSpeedLimits"] else default.get_bool("ShowSpeedLimits")) toggle.speed_limit_vienna = toggle.navigation_ui and (params.get_bool("UseVienna") if tuning_level >= level["UseVienna"] else default.get_bool("UseVienna")) - toggle.old_long_api = toggle.openpilot_longitudinal and toggle.car_make == "gm" and toggle.has_cc_long and not toggle.has_pedal - toggle.old_long_api |= toggle.openpilot_longitudinal and toggle.car_make == "hyundai" and not (params.get_bool("NewLongAPI") if tuning_level >= level["NewLongAPI"] else default.get_bool("NewLongAPI")) + if not started: + toggle.old_long_api = toggle.openpilot_longitudinal and toggle.car_make == "gm" and toggle.has_cc_long and not toggle.has_pedal + toggle.old_long_api |= toggle.openpilot_longitudinal and toggle.car_make == "hyundai" and not (params.get_bool("NewLongAPI") if tuning_level >= level["NewLongAPI"] else default.get_bool("NewLongAPI")) personalize_openpilot = params.get_bool("PersonalizeOpenpilot") if tuning_level >= level["PersonalizeOpenpilot"] else default.get_bool("PersonalizeOpenpilot") toggle.color_scheme = toggle.current_holiday_theme if toggle.current_holiday_theme != "stock" else params.get("CustomColors", encoding="utf-8") if personalize_openpilot else "stock" @@ -894,10 +869,10 @@ class FrogPilotVariables: toggle.random_themes = personalize_openpilot and (params.get_bool("RandomThemes") if tuning_level >= level["RandomThemes"] else default.get_bool("RandomThemes")) toggle.signal_icons = toggle.current_holiday_theme if toggle.current_holiday_theme != "stock" else params.get("CustomSignals", encoding="utf-8") if personalize_openpilot else "stock" toggle.sound_pack = toggle.current_holiday_theme if toggle.current_holiday_theme != "stock" else params.get("CustomSounds", encoding="utf-8") if personalize_openpilot else "stock" - if not toggle.random_themes or boot_run: + if not toggle.random_themes: toggle.wheel_image = toggle.current_holiday_theme if toggle.current_holiday_theme != "stock" else params.get("WheelIcon", encoding="utf-8") if personalize_openpilot else "stock" else: - toggle.wheel_image = next((file.resolve().stem for file in (ACTIVE_THEME_PATH / "steering_wheel").glob("wheel.*")), "none") + toggle.wheel_image = next((file.resolve().stem for file in (ACTIVE_THEME_PATH / "steering_wheel").glob("wheel.*")), "stock") quality_of_life_lateral = params.get_bool("QOLLateral") if tuning_level >= level["QOLLateral"] else default.get_bool("QOLLateral") toggle.pause_lateral_below_speed = params.get_int("PauseLateralSpeed") * speed_conversion if quality_of_life_lateral and tuning_level >= level["PauseLateralSpeed"] else default.get_int("PauseLateralSpeed") * CV.MPH_TO_MS @@ -906,9 +881,8 @@ class FrogPilotVariables: quality_of_life_longitudinal = params.get_bool("QOLLongitudinal") if tuning_level >= level["QOLLongitudinal"] else default.get_bool("QOLLongitudinal") toggle.cruise_increase = params.get_int("CustomCruise") if quality_of_life_longitudinal and not pcm_cruise and tuning_level >= level["CustomCruise"] else default.get_int("CustomCruise") toggle.cruise_increase_long = params.get_int("CustomCruiseLong") if quality_of_life_longitudinal and not pcm_cruise and tuning_level >= level["CustomCruiseLong"] else default.get_int("CustomCruiseLong") - toggle.force_standstill = quality_of_life_longitudinal and (params.get_bool("ForceStandstill") if tuning_level >= level["ForceStandstill"] else default.get_bool("ForceStandstill")) toggle.force_stops = quality_of_life_longitudinal and (params.get_bool("ForceStops") if tuning_level >= level["ForceStops"] else default.get_bool("ForceStops")) - toggle.increased_stopped_distance = params.get_int("IncreasedStoppedDistance") * distance_conversion if quality_of_life_longitudinal and tuning_level >= level["IncreasedStoppedDistance"] else default.get_int("IncreasedStoppedDistance") * CV.FOOT_TO_METER + toggle.increase_stopped_distance = params.get_int("IncreasedStoppedDistance") * distance_conversion if quality_of_life_longitudinal and tuning_level >= level["IncreasedStoppedDistance"] else default.get_int("IncreasedStoppedDistance") * CV.FOOT_TO_METER map_gears = quality_of_life_longitudinal and (params.get_bool("MapGears") if tuning_level >= level["MapGears"] else default.get_bool("MapGears")) toggle.map_acceleration = map_gears and (params.get_bool("MapAcceleration") if tuning_level >= level["MapAcceleration"] else default.get_bool("MapAcceleration")) toggle.map_deceleration = map_gears and (params.get_bool("MapDeceleration") if tuning_level >= level["MapDeceleration"] else default.get_bool("MapDeceleration")) @@ -919,7 +893,6 @@ class FrogPilotVariables: toggle.camera_view = params.get_int("CameraView") if quality_of_life_visuals and tuning_level >= level["CameraView"] else default.get_int("CameraView") toggle.driver_camera_in_reverse = quality_of_life_visuals and (params.get_bool("DriverCamera") if tuning_level >= level["DriverCamera"] else default.get_bool("DriverCamera")) toggle.onroad_distance_button = toggle.openpilot_longitudinal and (quality_of_life_visuals and (params.get_bool("OnroadDistanceButton") if tuning_level >= level["OnroadDistanceButton"] else default.get_bool("OnroadDistanceButton")) or toggle.debug_mode) - toggle.standby_mode = quality_of_life_visuals and (params.get_bool("StandbyMode") if tuning_level >= level["StandbyMode"] else default.get_bool("StandbyMode")) toggle.stopped_timer = quality_of_life_visuals and (params.get_bool("StoppedTimer") if tuning_level >= level["StoppedTimer"] else default.get_bool("StoppedTimer")) toggle.rainbow_path = params.get_bool("RainbowPath") if tuning_level >= level["RainbowPath"] else default.get_bool("RainbowPath") @@ -932,6 +905,7 @@ class FrogPilotVariables: toggle.screen_recorder = screen_management and (params.get_bool("ScreenRecorder") if tuning_level >= level["ScreenRecorder"] else default.get_bool("ScreenRecorder")) or toggle.debug_mode toggle.screen_timeout = params.get_int("ScreenTimeout") if screen_management and tuning_level >= level["ScreenTimeout"] else default.get_int("ScreenTimeout") toggle.screen_timeout_onroad = params.get_int("ScreenTimeoutOnroad") if screen_management and tuning_level >= level["ScreenTimeoutOnroad"] else default.get_int("ScreenTimeoutOnroad") + toggle.standby_mode = screen_management and (params.get_bool("StandbyMode") if tuning_level >= level["StandbyMode"] else default.get_bool("StandbyMode")) toggle.sng_hack = toggle.openpilot_longitudinal and toggle.car_make == "toyota" and not toggle.has_pedal and not has_sng and (params.get_bool("SNGHack") if tuning_level >= level["SNGHack"] else default.get_bool("SNGHack")) diff --git a/frogpilot/controls/frogpilot_card.py b/frogpilot/controls/frogpilot_card.py index 4dd857c5a..d9328480a 100644 --- a/frogpilot/controls/frogpilot_card.py +++ b/frogpilot/controls/frogpilot_card.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 from cereal import car, custom from openpilot.selfdrive.controls.lib.drive_helpers import CRUISE_LONG_PRESS -from openpilot.selfdrive.controls.lib.events import ET, EventName +from openpilot.selfdrive.controls.lib.events import EventName from openpilot.frogpilot.common.frogpilot_variables import NON_DRIVING_GEARS, params, params_memory @@ -99,7 +99,7 @@ class FrogPilotCard: self.always_on_lateral_enabled &= sm["frogpilotPlan"].lateralCheck self.always_on_lateral_enabled &= sm["liveCalibration"].calPerc >= 1 self.always_on_lateral_enabled &= not (carState.brakePressed and carState.vEgo < self.car.frogpilot_toggles.always_on_lateral_pause_speed) or carState.standstill - self.always_on_lateral_enabled &= not any(getattr(event, ET.IMMEDIATE_DISABLE, False) for event in sm["onroadEvents"] if event.name != EventName.speedTooLow) or self.car.frogpilot_toggles.frogs_go_moo + self.always_on_lateral_enabled &= not any(event.immediateDisable for events in (sm["onroadEvents"], sm["frogpilotOnroadEvents"]) for event in events if event.name != EventName.speedTooLow) or self.car.frogpilot_toggles.frogs_go_moo if sm.updated["frogpilotPlan"] or any(be.type in (ButtonType.accelCruise, ButtonType.resumeCruise) for be in carState.buttonEvents): self.accel_pressed = any(be.type in (ButtonType.accelCruise, ButtonType.resumeCruise) for be in carState.buttonEvents) diff --git a/frogpilot/controls/frogpilot_planner.py b/frogpilot/controls/frogpilot_planner.py index 1e728499c..841b669a4 100644 --- a/frogpilot/controls/frogpilot_planner.py +++ b/frogpilot/controls/frogpilot_planner.py @@ -8,7 +8,6 @@ from cereal import car, log from openpilot.common.conversions import Conversions as CV from openpilot.common.filter_simple import FirstOrderFilter from openpilot.common.realtime import DT_MDL - from openpilot.selfdrive.controls.lib.drive_helpers import V_CRUISE_MAX from openpilot.selfdrive.controls.lib.longitudinal_mpc_lib.long_mpc import A_CHANGE_COST, DANGER_ZONE_COST, J_EGO_COST, STOP_DISTANCE @@ -21,17 +20,17 @@ from openpilot.frogpilot.controls.lib.frogpilot_following import FrogPilotFollow from openpilot.frogpilot.controls.lib.frogpilot_vcruise import FrogPilotVCruise class FrogPilotPlanner: - def __init__(self): + def __init__(self, error_log, ThemeManager): self.cem = ConditionalExperimentalMode(self) self.frogpilot_acceleration = FrogPilotAcceleration(self) - self.frogpilot_events = FrogPilotEvents(self) + self.frogpilot_events = FrogPilotEvents(self, error_log, ThemeManager) self.frogpilot_following = FrogPilotFollowing(self) self.frogpilot_vcruise = FrogPilotVCruise(self) with car.CarParams.from_bytes(params.get("CarParams", block=True)) as msg: self.CP = msg - self.tracking_lead_filter = FirstOrderFilter(0, 1, DT_MDL) + self.tracking_lead_filter = FirstOrderFilter(0, 0.5, DT_MDL) self.driving_in_curve = False self.lateral_check = False @@ -45,9 +44,10 @@ class FrogPilotPlanner: self.lateral_acceleration = 0 self.model_length = 0 self.road_curvature = 0 + self.time_to_curve = 0 self.v_cruise = 0 - def update(self, sm, frogpilot_toggles): + def update(self, now, time_validated, sm, frogpilot_toggles): self.lead_one = sm["radarState"].leadOne v_cruise = min(sm["controlsState"].vCruise, V_CRUISE_MAX) * CV.KPH_TO_MS @@ -104,23 +104,23 @@ class FrogPilotPlanner: self.model_stopped = self.model_length < CRUISING_SPEED * PLANNER_TIME self.model_stopped |= self.frogpilot_vcruise.forcing_stop - self.road_curvature = calculate_road_curvature(sm["modelV2"], v_ego) + self.road_curvature, self.time_to_curve = calculate_road_curvature(sm["modelV2"], v_ego) self.road_curvature_detected = (1 / abs(self.road_curvature))**0.5 < v_ego > CRUISING_SPEED and not (sm["carState"].leftBlinker or sm["carState"].rightBlinker) if not sm["carState"].standstill: self.tracking_lead = self.update_lead_status() - self.v_cruise = self.frogpilot_vcruise.update(gps_position, v_cruise, v_ego, sm, frogpilot_toggles) + self.v_cruise = self.frogpilot_vcruise.update(gps_position, now, time_validated, v_cruise, v_ego, sm, frogpilot_toggles) def update_lead_status(self): following_lead = self.lead_one.status following_lead &= self.lead_one.dRel < self.model_length + STOP_DISTANCE self.tracking_lead_filter.update(following_lead) - return self.tracking_lead_filter.x >= THRESHOLD**2 + return self.tracking_lead_filter.x >= THRESHOLD - def publish(self, sm, pm, theme_updated, toggles_updated): + def publish(self, theme_updated, toggles_updated, sm, pm, frogpilot_toggles): frogpilot_plan_send = messaging.new_message("frogpilotPlan") frogpilot_plan_send.valid = sm.all_checks(service_list=["carState", "controlsState"]) frogpilotPlan = frogpilot_plan_send.frogpilotPlan @@ -132,6 +132,10 @@ class FrogPilotPlanner: frogpilotPlan.speedJerkStock = J_EGO_COST * self.frogpilot_following.base_speed_jerk frogpilotPlan.tFollow = self.frogpilot_following.t_follow + frogpilotPlan.cscControllingSpeed = self.frogpilot_vcruise.csc_controlling_speed + frogpilotPlan.cscSpeed = self.frogpilot_vcruise.csc_target + frogpilotPlan.cscTraining = self.frogpilot_vcruise.csc.enable_training + frogpilotPlan.desiredFollowDistance = self.frogpilot_following.desired_follow_distance frogpilotPlan.experimentalMode = self.cem.experimental_mode or self.frogpilot_vcruise.slc.experimental_mode @@ -141,6 +145,8 @@ class FrogPilotPlanner: frogpilotPlan.frogpilotEvents = self.frogpilot_events.events.to_msg() + frogpilotPlan.increasedStoppedDistance = frogpilot_toggles.increase_stopped_distance if not sm["frogpilotCarState"].trafficModeEnabled else 0 + frogpilotPlan.laneWidthLeft = self.lane_width_left frogpilotPlan.laneWidthRight = self.lane_width_right @@ -149,10 +155,6 @@ class FrogPilotPlanner: frogpilotPlan.maxAcceleration = self.frogpilot_acceleration.max_accel frogpilotPlan.minAcceleration = self.frogpilot_acceleration.min_accel - frogpilotPlan.mtscSpeed = self.frogpilot_vcruise.mtsc_target - frogpilotPlan.vtscControllingCurve = self.frogpilot_vcruise.mtsc_target > self.frogpilot_vcruise.vtsc_target - frogpilotPlan.vtscSpeed = self.frogpilot_vcruise.vtsc_target - frogpilotPlan.redLight = self.cem.stop_light_detected frogpilotPlan.roadCurvature = self.road_curvature @@ -167,7 +169,7 @@ class FrogPilotPlanner: frogpilotPlan.speedLimitChanged = self.frogpilot_vcruise.slc.speed_limit_changed_timer > DT_MDL frogpilotPlan.unconfirmedSlcSpeedLimit = self.frogpilot_vcruise.slc.unconfirmed_speed_limit - frogpilotPlan.themeUpdated = theme_updated + frogpilotPlan.themeUpdated = theme_updated or params_memory.get_bool("UseActiveTheme") frogpilotPlan.togglesUpdated = toggles_updated diff --git a/frogpilot/controls/lib/conditional_experimental_mode.py b/frogpilot/controls/lib/conditional_experimental_mode.py index 7e97a4e0e..be8111d52 100644 --- a/frogpilot/controls/lib/conditional_experimental_mode.py +++ b/frogpilot/controls/lib/conditional_experimental_mode.py @@ -10,7 +10,7 @@ class ConditionalExperimentalMode: self.curvature_filter = FirstOrderFilter(0, 1, DT_MDL) self.slow_lead_filter = FirstOrderFilter(0, 1, DT_MDL) - self.stop_light_filter = FirstOrderFilter(0, 1, DT_MDL) + self.stop_light_filter = FirstOrderFilter(0, 0.5, DT_MDL) self.curve_detected = False self.experimental_mode = False @@ -24,7 +24,9 @@ class ConditionalExperimentalMode: if self.status_value not in {1, 2} and not sm["carState"].standstill: self.update_conditions(v_ego, sm, frogpilot_toggles) + self.experimental_mode = self.check_conditions(v_ego, sm, frogpilot_toggles) + params_memory.put_int("CEStatus", self.status_value if self.experimental_mode else 0) else: self.experimental_mode = self.status_value == 2 or sm["carState"].standstill and self.experimental_mode and self.frogpilot_planner.model_stopped @@ -92,7 +94,7 @@ class ConditionalExperimentalMode: model_stopping = self.frogpilot_planner.model_length < v_ego * model_time self.stop_light_filter.update(self.frogpilot_planner.model_stopped or model_stopping) - self.stop_light_detected = self.stop_light_filter.x >= THRESHOLD**2 and not self.frogpilot_planner.tracking_lead + self.stop_light_detected = self.stop_light_filter.x >= THRESHOLD and not self.frogpilot_planner.tracking_lead else: self.stop_light_filter.x = 0 self.stop_light_detected = False diff --git a/frogpilot/controls/lib/curve_speed_controller.py b/frogpilot/controls/lib/curve_speed_controller.py new file mode 100644 index 000000000..2feb141a7 --- /dev/null +++ b/frogpilot/controls/lib/curve_speed_controller.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python3 +import json +import numpy as np + +from openpilot.common.realtime import DT_MDL + +from openpilot.frogpilot.common.frogpilot_variables import CRUISING_SPEED, DEFAULT_LATERAL_ACCELERATION, PLANNER_TIME, params + +CALIBRATION_PROGRESS_THRESHOLD = 10 / DT_MDL +MAX_CURVATURE = 0.1 +MIN_CURVATURE = 0.001 +PERCENTILE = 90 +ROUNDING_PRECISION = 5 +STEP = 0.001 + +class CurveSpeedController: + def __init__(self, FrogPilotVCruise): + self.frogpilot_planner = FrogPilotVCruise.frogpilot_planner + + self.enable_training = False + self.target_set = False + + self.training_timer = 0 + + self.curvature_data = json.loads(params.get("CurvatureData") or "{}") + + self.required_curvatures = [str(round(road_curvature, ROUNDING_PRECISION)) for road_curvature in np.arange(MIN_CURVATURE, MAX_CURVATURE + STEP, STEP)] + + self.update_lateral_acceleration() + + def log_data(self, v_ego, sm): + self.enable_training = v_ego > CRUISING_SPEED + self.enable_training &= not self.frogpilot_planner.tracking_lead + self.enable_training &= not sm["carControl"].longActive + + if self.enable_training: + self.training_timer += DT_MDL + + if self.training_timer >= PLANNER_TIME and self.frogpilot_planner.driving_in_curve and not (sm["carState"].leftBlinker or sm["carState"].rightBlinker): + lateral_acceleration = abs(self.frogpilot_planner.lateral_acceleration) + road_curvature = abs(round(self.frogpilot_planner.road_curvature, ROUNDING_PRECISION)) + + key = str(road_curvature) + if key in self.curvature_data: + data = self.curvature_data[key] + + average = data["average"] + count = data["count"] + + self.curvature_data[key] = { + "average": ((average * count) + lateral_acceleration) / (count + 1), + "count": count + 1 + } + else: + self.curvature_data[key] = { + "average": lateral_acceleration, + "count": 1 + } + + self.update_lateral_acceleration() + else: + self.enable_training = False + + elif self.training_timer >= PLANNER_TIME: + progress = 0.0 + for key in self.required_curvatures: + if key in self.curvature_data: + progress += min(self.curvature_data[key]["count"] / CALIBRATION_PROGRESS_THRESHOLD, 1.0) + + params.put_float_nonblocking("CalibrationProgress", (progress / len(self.required_curvatures)) * 100) + params.put_nonblocking("CurvatureData", json.dumps(self.curvature_data)) + + self.enable_training = False + + self.training_timer = 0 + + else: + self.enable_training = False + + self.training_timer = 0 + + def update_lateral_acceleration(self): + if self.curvature_data: + all_samples = [data["average"] for data in self.curvature_data.values()] + self.lateral_acceleration = float(np.percentile(all_samples, PERCENTILE)) + else: + self.lateral_acceleration = DEFAULT_LATERAL_ACCELERATION + + params.put_float_nonblocking("CalibratedLateralAcceleration", self.lateral_acceleration) + + def update_target(self, v_ego): + lateral_acceleration = self.lateral_acceleration + + if self.target_set: + csc_speed = (lateral_acceleration / abs(self.frogpilot_planner.road_curvature))**0.5 + decel_rate = (v_ego - csc_speed) / self.frogpilot_planner.time_to_curve + + self.target -= decel_rate * DT_MDL + self.target = float(np.clip(self.target, CRUISING_SPEED, csc_speed)) + else: + self.target_set = True + + self.target = v_ego diff --git a/frogpilot/controls/lib/frogpilot_acceleration.py b/frogpilot/controls/lib/frogpilot_acceleration.py index ca6862517..6621a5252 100644 --- a/frogpilot/controls/lib/frogpilot_acceleration.py +++ b/frogpilot/controls/lib/frogpilot_acceleration.py @@ -1,18 +1,18 @@ #!/usr/bin/env python3 import numpy as np -from openpilot.selfdrive.controls.lib.longitudinal_planner import A_CRUISE_MIN, get_max_accel +from openpilot.selfdrive.controls.lib.longitudinal_mpc_lib.long_mpc import CRUISE_MIN_ACCEL +from openpilot.selfdrive.controls.lib.longitudinal_planner import ACCEL_MIN, get_max_accel from openpilot.frogpilot.common.frogpilot_variables import CITY_SPEED_LIMIT -A_CRUISE_MIN_ECO = A_CRUISE_MIN / 2 -A_CRUISE_MIN_SPORT = A_CRUISE_MIN * 2 +A_CRUISE_MIN_ECO = CRUISE_MIN_ACCEL / 2 +A_CRUISE_MIN_SPORT = CRUISE_MIN_ACCEL * 2 - # MPH = [0.0, 11, 22, 34, 45, 56, 89] -A_CRUISE_MAX_BP_CUSTOM = [0.0, 5., 10., 15., 20., 25., 40.] -A_CRUISE_MAX_VALS_ECO = [2.0, 1.5, 1.0, 0.8, 0.6, 0.4, 0.2] -A_CRUISE_MAX_VALS_SPORT = [3.0, 2.5, 2.0, 1.5, 1.0, 0.8, 0.6] -A_CRUISE_MAX_VALS_SPORT_PLUS = [4.0, 3.5, 3.0, 2.5, 2.0, 1.5, 1.0] + # MPH = [0.0, 11, 22, 34, 45, 56, 89] +A_CRUISE_MAX_BP_CUSTOM = [0.0, 5., 10., 15., 20., 25., 40.] +A_CRUISE_MAX_VALS_ECO = [2.0, 1.5, 1.0, 0.8, 0.6, 0.4, 0.2] +A_CRUISE_MAX_VALS_SPORT = [3.0, 2.5, 2.0, 1.5, 1.0, 0.8, 0.6] def get_max_accel_eco(v_ego): return float(np.interp(v_ego, A_CRUISE_MAX_BP_CUSTOM, A_CRUISE_MAX_VALS_ECO)) @@ -20,14 +20,11 @@ def get_max_accel_eco(v_ego): def get_max_accel_sport(v_ego): return float(np.interp(v_ego, A_CRUISE_MAX_BP_CUSTOM, A_CRUISE_MAX_VALS_SPORT)) -def get_max_accel_sport_plus(v_ego): - return float(np.interp(v_ego, A_CRUISE_MAX_BP_CUSTOM, A_CRUISE_MAX_VALS_SPORT_PLUS)) - def get_max_accel_low_speeds(max_accel, v_cruise): return float(np.interp(v_cruise, [0., CITY_SPEED_LIMIT / 2, CITY_SPEED_LIMIT], [max_accel / 4, max_accel / 2, max_accel])) def get_max_accel_ramp_off(max_accel, v_cruise, v_ego): - return float(np.interp(v_cruise - v_ego, [0., 1., 5., 10.], [0., 0.5, 1.0, max_accel])) + return float(np.interp(v_cruise - v_ego, [0., 1., 5.], [0., 0.5, max_accel])) def get_max_allowed_accel(v_ego): return float(np.interp(v_ego, [0., 5., 20.], [4.0, 4.0, 2.0])) # ISO 15622:2018 @@ -49,17 +46,17 @@ class FrogPilotAcceleration: if eco_gear: self.max_accel = get_max_accel_eco(v_ego) else: - if frogpilot_toggles.sport_plus: - self.max_accel = get_max_accel_sport_plus(v_ego) - else: + if frogpilot_toggles.acceleration_profile == 2: self.max_accel = get_max_accel_sport(v_ego) + else: + self.max_accel = get_max_allowed_accel(v_ego) else: if frogpilot_toggles.acceleration_profile == 1: self.max_accel = get_max_accel_eco(v_ego) elif frogpilot_toggles.acceleration_profile == 2: self.max_accel = get_max_accel_sport(v_ego) - elif frogpilot_toggles.sport_plus: - self.max_accel = get_max_accel_sport_plus(v_ego) + elif frogpilot_toggles.acceleration_profile == 3: + self.max_accel = get_max_allowed_accel(v_ego) else: self.max_accel = get_max_accel(v_ego) @@ -67,7 +64,9 @@ class FrogPilotAcceleration: self.max_accel = min(get_max_accel_low_speeds(self.max_accel, self.frogpilot_planner.v_cruise), self.max_accel) self.max_accel = min(get_max_accel_ramp_off(self.max_accel, self.frogpilot_planner.v_cruise, v_ego), self.max_accel) - if sm["frogpilotCarState"].forceCoast: + if self.frogpilot_planner.tracking_lead: + self.min_accel = ACCEL_MIN + elif sm["frogpilotCarState"].forceCoast: self.min_accel = A_CRUISE_MIN_ECO elif frogpilot_toggles.map_deceleration and (eco_gear or sport_gear): if eco_gear: @@ -80,4 +79,4 @@ class FrogPilotAcceleration: elif frogpilot_toggles.deceleration_profile == 2: self.min_accel = A_CRUISE_MIN_SPORT else: - self.min_accel = A_CRUISE_MIN + self.min_accel = CRUISE_MIN_ACCEL diff --git a/frogpilot/controls/lib/frogpilot_events.py b/frogpilot/controls/lib/frogpilot_events.py index 950afee91..02f6164a6 100644 --- a/frogpilot/controls/lib/frogpilot_events.py +++ b/frogpilot/controls/lib/frogpilot_events.py @@ -4,48 +4,40 @@ import random from openpilot.common.conversions import Conversions as CV from openpilot.common.realtime import DT_MDL from openpilot.selfdrive.controls.lib.desire_helper import TurnDirection -from openpilot.selfdrive.controls.lib.events import ET, EVENTS, EventName, Events +from openpilot.selfdrive.controls.lib.events import ET, EventName, FrogPilotEventName, Events from openpilot.selfdrive.controls.lib.vehicle_model import ACCELERATION_DUE_TO_GRAVITY -from openpilot.frogpilot.assets.theme_manager import update_wheel_image from openpilot.frogpilot.common.frogpilot_variables import CRUISING_SPEED, NON_DRIVING_GEARS, params, params_memory -DEJA_VU_G_FORCE = 0.5 +DEJA_VU_G_FORCE = 0.75 RANDOM_EVENTS_CHANCE = 0.01 * DT_MDL class FrogPilotEvents: - def __init__(self, FrogPilotPlanner): + def __init__(self, FrogPilotPlanner, error_log, ThemeManager): self.frogpilot_planner = FrogPilotPlanner + self.theme_manager = ThemeManager - self.events = Events() + self.error_log = error_log + + self.events = Events(frogpilot=True) - self.accel30_played = False - self.accel35_played = False - self.accel40_played = False self.always_on_lateral_enabled_previously = False - self.dejaVuCurve_played = False - self.fcw_played = False - self.firefoxSteerSaturated_played = False - self.goatSteerSaturated_played = False - self.hal9000_played = False - self.holidayActive_played = False self.previous_traffic_mode = False self.random_event_playing = False self.startup_seen = False self.stopped_for_light = False - self.thisIsFineSteerSaturated_played = False - self.toBeContinued_played = False - self.torqueNNLoad_played = False - self.vCruise69_played = False - self.yourFrogTriedToKillMe_played = False - self.youveGotMail_played = False self.max_acceleration = 0 self.random_event_timer = 0 - self.tracking_lead_distance = 0 + self.tracked_lead_distance = 0 + + self.played_events = set() def update(self, v_cruise, sm, frogpilot_toggles): - alerts_empty = all(sm[state].alertText1 == "" and sm[state].alertText2 == "" for state in ["controlsState"]) + self.event_names = {event.name for event in sm["onroadEvents"]} + self.frogpilot_event_names = {event.name for event in sm["frogpilotOnroadEvents"]} + + alerts_empty = all(sm[state].alertText1 == "" and sm[state].alertText2 == "" for state in ["controlsState", "frogpilotControlsState"]) self.events.clear() @@ -53,46 +45,50 @@ class FrogPilotEvents: self.random_event_timer += DT_MDL if self.random_event_timer >= 5: - update_wheel_image(frogpilot_toggles.wheel_image, frogpilot_toggles.current_holiday_theme, False) - + self.theme_manager.update_wheel_image(frogpilot_toggles.wheel_image) params_memory.put_bool("UpdateWheelImage", True) self.random_event_playing = False - self.random_event_timer = 0 - if self.frogpilot_planner.frogpilot_vcruise.forcing_stop: - self.events.add(EventName.forcingStop) + if self.error_log.is_file(): + if frogpilot_toggles.random_events: + self.events.add(FrogPilotEventName.openpilotCrashedRandomEvent) + else: + self.events.add(FrogPilotEventName.openpilotCrashed) - if not self.frogpilot_planner.tracking_lead and sm["carState"].standstill and sm["carState"].gearShifter not in NON_DRIVING_GEARS and frogpilot_toggles.green_light_alert: - if not self.frogpilot_planner.model_stopped and self.stopped_for_light: - self.events.add(EventName.greenLight) + if self.frogpilot_planner.frogpilot_vcruise.forcing_stop: + self.events.add(FrogPilotEventName.forcingStop) + + if not self.frogpilot_planner.tracking_lead and sm["carState"].standstill and sm["carState"].gearShifter not in NON_DRIVING_GEARS: + if not self.frogpilot_planner.model_stopped and self.stopped_for_light and frogpilot_toggles.green_light_alert: + self.events.add(FrogPilotEventName.greenLight) self.stopped_for_light = self.frogpilot_planner.cem.stop_light_detected else: self.stopped_for_light = False - if not self.holidayActive_played and self.startup_seen and alerts_empty and frogpilot_toggles.current_holiday_theme != "stock" and len(self.events) == 0: - self.events.add(EventName.holidayActive) + if "holidayActive" not in self.played_events and self.startup_seen and alerts_empty and frogpilot_toggles.current_holiday_theme != "stock" and len(self.events) == 0: + self.events.add(FrogPilotEventName.holidayActive) - self.holidayActive_played = True + self.played_events.add("holidayActive") if self.frogpilot_planner.tracking_lead and sm["carState"].standstill and sm["carState"].gearShifter not in NON_DRIVING_GEARS and frogpilot_toggles.lead_departing_alert: - if self.tracking_lead_distance == 0: - self.tracking_lead_distance = self.frogpilot_planner.lead_one.dRel + if self.tracked_lead_distance == 0: + self.tracked_lead_distance = self.frogpilot_planner.lead_one.dRel - lead_departing = self.frogpilot_planner.lead_one.dRel - self.tracking_lead_distance > 1 + lead_departing = self.frogpilot_planner.lead_one.dRel - self.tracked_lead_distance > 1 lead_departing &= self.frogpilot_planner.lead_one.vLead > 1 if lead_departing: - self.events.add(EventName.leadDeparting) + self.events.add(FrogPilotEventName.leadDeparting) else: - self.tracking_lead_distance = 0 + self.tracked_lead_distance = 0 - if not self.torqueNNLoad_played and self.startup_seen and alerts_empty and len(self.events) == 0 and params.get("NNFFModelName", encoding="utf-8") is not None and frogpilot_toggles.nnff: - self.events.add(EventName.torqueNNLoad) + if "torqueNNLoad" not in self.played_events and self.startup_seen and alerts_empty and len(self.events) == 0 and params.get("NNFFModelName", encoding="utf-8") is not None and frogpilot_toggles.nnff: + self.events.add(FrogPilotEventName.torqueNNLoad) - self.torqueNNLoad_played = True + self.played_events.add("torqueNNLoad") if not self.random_event_playing and frogpilot_toggles.random_events: acceleration = sm["carState"].aEgo @@ -102,151 +98,125 @@ class FrogPilotEvents: else: self.max_acceleration = 0 - if not self.accel30_played and 3.5 > self.max_acceleration >= 3.0 and acceleration < 1.5: - self.events.add(EventName.accel30) - - update_wheel_image("weeb_wheel") + if "accel30" not in self.played_events and 3.5 > self.max_acceleration >= 3.0 and acceleration < 1.5: + self.events.add(FrogPilotEventName.accel30) + self.theme_manager.update_wheel_image("weeb_wheel", random_event=True) params_memory.put_bool("UpdateWheelImage", True) - self.accel30_played = True self.random_event_playing = True - self.max_acceleration = 0 + self.played_events.add("accel30") - elif not self.accel35_played and 4.0 > self.max_acceleration >= 3.5 and acceleration < 1.5: - self.events.add(EventName.accel35) - - update_wheel_image("tree_fiddy") + elif "accel35" not in self.played_events and 4.0 > self.max_acceleration >= 3.5 and acceleration < 1.5: + self.events.add(FrogPilotEventName.accel35) + self.theme_manager.update_wheel_image("tree_fiddy", random_event=True) params_memory.put_bool("UpdateWheelImage", True) - self.accel35_played = True self.random_event_playing = True - self.max_acceleration = 0 + self.played_events.add("accel35") - elif not self.accel40_played and self.max_acceleration >= 4.0 and acceleration < 1.5: - self.events.add(EventName.accel40) - - update_wheel_image("great_scott") + elif "accel40" not in self.played_events and self.max_acceleration >= 4.0 and acceleration < 1.5: + self.events.add(FrogPilotEventName.accel40) + self.theme_manager.update_wheel_image("great_scott", random_event=True) params_memory.put_bool("UpdateWheelImage", True) - self.accel40_played = True self.random_event_playing = True - self.max_acceleration = 0 + self.played_events.add("accel40") - if not self.dejaVuCurve_played and sm["carState"].vEgo > CRUISING_SPEED: + if "dejaVuCurve" not in self.played_events and sm["carState"].vEgo > CRUISING_SPEED: if self.frogpilot_planner.lateral_acceleration >= DEJA_VU_G_FORCE * ACCELERATION_DUE_TO_GRAVITY: - self.events.add(EventName.dejaVuCurve) + self.events.add(FrogPilotEventName.dejaVuCurve) - self.dejaVuCurve_played = True self.random_event_playing = True + self.played_events.add("dejaVuCurve") - if not self.hal9000_played and sm["controlsState"].alertType == ET.NO_ENTRY: - self.events.add(EventName.hal9000) + if "hal9000" not in self.played_events and (sm["controlsState"].alertType == ET.NO_ENTRY or sm["frogpilotControlsState"].alertType == ET.NO_ENTRY): + self.events.add(FrogPilotEventName.hal9000) - self.hal9000_played = True self.random_event_playing = True + self.played_events.add("hal9000") - saturated_events = [ - ("controlsState", [EventName.steerSaturated], EVENTS), - ("controlsState", [EventName.goatSteerSaturated], EVENTS) - ] - saturated_alert_match = any(sm[state].alertText2 == events[event][ET.WARNING].alert_text_2 for state, event_group, events in saturated_events for event in event_group) - if saturated_alert_match: + if (EventName.steerSaturated in self.event_names or FrogPilotEventName.goatSteerSaturated in self.frogpilot_event_names): event_choices = [] - if not self.firefoxSteerSaturated_played: + if "firefoxSteerSaturated" not in self.played_events: event_choices.append("firefoxSteerSaturated") - if not self.goatSteerSaturated_played: + if "goatSteerSaturated" not in self.played_events: event_choices.append("goatSteerSaturated") - if not self.thisIsFineSteerSaturated_played: + if "thisIsFineSteerSaturated" not in self.played_events: event_choices.append("thisIsFineSteerSaturated") if event_choices and random.random() < RANDOM_EVENTS_CHANCE: event_choice = random.choice(event_choices) if event_choice == "firefoxSteerSaturated": - self.events.add(EventName.firefoxSteerSaturated) - - update_wheel_image("firefox") + self.events.add(FrogPilotEventName.firefoxSteerSaturated) + self.theme_manager.update_wheel_image("firefox", random_event=True) params_memory.put_bool("UpdateWheelImage", True) - - self.firefoxSteerSaturated_played = True - elif event_choice == "goatSteerSaturated": - self.events.add(EventName.goatSteerSaturated) - - update_wheel_image("goat") + self.events.add(FrogPilotEventName.goatSteerSaturated) + self.theme_manager.update_wheel_image("goat", random_event=True) params_memory.put_bool("UpdateWheelImage", True) - - self.goatSteerSaturated_played = True - elif event_choice == "thisIsFineSteerSaturated": - self.events.add(EventName.thisIsFineSteerSaturated) - - update_wheel_image("this_is_fine") + self.events.add(FrogPilotEventName.thisIsFineSteerSaturated) + self.theme_manager.update_wheel_image("this_is_fine", random_event=True) params_memory.put_bool("UpdateWheelImage", True) - self.thisIsFineSteerSaturated_played = True - self.random_event_playing = True + self.played_events.add(event_choice) - if not self.vCruise69_played and 70 > max(sm["controlsState"].vCruise, sm["controlsState"].vCruiseCluster) * (1 if frogpilot_toggles.is_metric else CV.KPH_TO_MPH) >= 69: - self.events.add(EventName.vCruise69) + if "vCruise69" not in self.played_events and 70 > max(sm["controlsState"].vCruise, sm["controlsState"].vCruiseCluster) * (1 if frogpilot_toggles.is_metric else CV.KPH_TO_MPH) >= 69: + self.events.add(FrogPilotEventName.vCruise69) - self.vCruise69_played = True self.random_event_playing = True + self.played_events.add("vCruise69") - fcw_alert_match = sm["controlsState"].alertText1 == EVENTS[EventName.fcw][ET.PERMANENT].alert_text_1 and sm["controlsState"].alertText2 == EVENTS[EventName.fcw][ET.PERMANENT].alert_text_2 - stock_aeb_alert_match = sm["controlsState"].alertText1 == EVENTS[EventName.stockAeb][ET.PERMANENT].alert_text_1 and sm["controlsState"].alertText2 == EVENTS[EventName.stockAeb][ET.PERMANENT].alert_text_2 - if fcw_alert_match or stock_aeb_alert_match: - event_choices = [] - if not self.toBeContinued_played: - event_choices.append("toBeContinued") - if not self.yourFrogTriedToKillMe_played: - event_choices.append("yourFrogTriedToKillMe") + if (EventName.fcw in self.event_names or EventName.stockAeb in self.event_names): + event_choices = [] + if "toBeContinued" not in self.played_events: + event_choices.append("toBeContinued") + if "yourFrogTriedToKillMe" not in self.played_events: + event_choices.append("yourFrogTriedToKillMe") - event_choice = random.choice(event_choices) - if event_choice == "toBeContinued": - self.events.add(EventName.toBeContinued) + event_choice = random.choice(event_choices) + if event_choice == "toBeContinued": + self.events.add(FrogPilotEventName.toBeContinued) + elif event_choice == "yourFrogTriedToKillMe": + self.events.add(FrogPilotEventName.yourFrogTriedToKillMe) - self.toBeContinued_played = True + self.random_event_playing = True + self.played_events.add(event_choice) - elif event_choice == "yourFrogTriedToKillMe": - self.events.add(EventName.yourFrogTriedToKillMe) - - self.yourFrogTriedToKillMe_played = True - - self.random_event_playing = True - - if not self.youveGotMail_played and sm["frogpilotCarState"].alwaysOnLateralEnabled and not self.always_on_lateral_enabled_previously: + if "youveGotMail" not in self.played_events and sm["frogpilotCarState"].alwaysOnLateralEnabled and not self.always_on_lateral_enabled_previously: if random.random() < RANDOM_EVENTS_CHANCE: - self.events.add(EventName.youveGotMail) + self.events.add(FrogPilotEventName.youveGotMail) - self.youveGotMail_played = True self.random_event_playing = True + self.played_events.add("youveGotMail") self.always_on_lateral_enabled_previously = sm["frogpilotCarState"].alwaysOnLateralEnabled if frogpilot_toggles.speed_limit_changed_alert and self.frogpilot_planner.frogpilot_vcruise.slc.speed_limit_changed_timer == DT_MDL: - self.events.add(EventName.speedLimitChanged) + self.events.add(FrogPilotEventName.speedLimitChanged) - self.startup_seen |= sm["controlsState"].alertText1 == frogpilot_toggles.startup_alert_top and sm["controlsState"].alertText2 == frogpilot_toggles.startup_alert_bottom + self.startup_seen |= sm["frogpilotControlsState"].alertText1 == frogpilot_toggles.startup_alert_top and sm["frogpilotControlsState"].alertText2 == frogpilot_toggles.startup_alert_bottom if sm["frogpilotCarState"].trafficModeEnabled != self.previous_traffic_mode: if self.previous_traffic_mode: - self.events.add(EventName.trafficModeInactive) + self.events.add(FrogPilotEventName.trafficModeInactive) else: - self.events.add(EventName.trafficModeActive) + self.events.add(FrogPilotEventName.trafficModeActive) + self.previous_traffic_mode = sm["frogpilotCarState"].trafficModeEnabled - if sm["modelV2"].meta.turnDirection == TurnDirection.turnLeft: - self.events.add(EventName.turningLeft) - elif sm["modelV2"].meta.turnDirection == TurnDirection.turnRight: - self.events.add(EventName.turningRight) + if sm["frogpilotModelV2"].turnDirection == TurnDirection.turnLeft: + self.events.add(FrogPilotEventName.turningLeft) + elif sm["frogpilotModelV2"].turnDirection == TurnDirection.turnRight: + self.events.add(FrogPilotEventName.turningRight) diff --git a/frogpilot/controls/lib/frogpilot_tracking.py b/frogpilot/controls/lib/frogpilot_tracking.py index 5190c094c..7a6eb13e5 100644 --- a/frogpilot/controls/lib/frogpilot_tracking.py +++ b/frogpilot/controls/lib/frogpilot_tracking.py @@ -1,71 +1,167 @@ #!/usr/bin/env python3 import json +from openpilot.common.conversions import Conversions as CV from openpilot.common.realtime import DT_MDL +from openpilot.selfdrive.controls.controlsd import EventName, FrogPilotEventName, State +from openpilot.selfdrive.controls.lib.drive_helpers import V_CRUISE_MAX +from openpilot.selfdrive.ui.soundd import FrogPilotAudibleAlert -from openpilot.frogpilot.common.frogpilot_variables import params, params_tracking +from openpilot.frogpilot.common.frogpilot_utilities import clean_model_name +from openpilot.frogpilot.common.frogpilot_variables import params + +RANDOM_EVENTS = { + FrogPilotEventName.accel30: "accel30", + FrogPilotEventName.accel35: "accel35", + FrogPilotEventName.accel40: "accel40", + FrogPilotEventName.dejaVuCurve: "dejaVuCurve", + FrogPilotEventName.firefoxSteerSaturated: "firefoxSteerSaturated", + FrogPilotEventName.hal9000: "hal9000", + FrogPilotEventName.openpilotCrashedRandomEvent: "openpilotCrashedRandomEvent", + FrogPilotEventName.thisIsFineSteerSaturated: "thisIsFineSteerSaturated", + FrogPilotEventName.toBeContinued: "toBeContinued", + FrogPilotEventName.vCruise69: "vCruise69", + FrogPilotEventName.yourFrogTriedToKillMe: "yourFrogTriedToKillMe", + FrogPilotEventName.youveGotMail: "youveGotMail", +} class FrogPilotTracking: - def __init__(self): - self.frogpilot_stats = json.loads(params.get("FrogPilotStats") or "{}") + def __init__(self, frogpilot_planner, frogpilot_toggles): + self.frogpilot_events = frogpilot_planner.frogpilot_events - self.total_drives = params_tracking.get_int("FrogPilotDrives") - self.total_kilometers = params_tracking.get_float("FrogPilotKilometers") - self.total_minutes = params_tracking.get_float("FrogPilotMinutes") + self.frogpilot_stats = json.loads(params.get("FrogPilotStats") or "{}") + self.frogpilot_stats.setdefault("AOLTime", self.frogpilot_stats.get("TotalAOLTime", 0)) + self.frogpilot_stats.setdefault("LateralTime", self.frogpilot_stats.get("TotalLateralTime", 0)) + self.frogpilot_stats.setdefault("LongitudinalTime", self.frogpilot_stats.get("TotalLongitudinalTime", 0)) + self.frogpilot_stats.setdefault("TrackedTime", self.frogpilot_stats.get("TotalTrackedTime", 0)) + + self.frogpilot_stats = {key: value for key, value in self.frogpilot_stats.items() if not key.startswith("Total")} + + params.put("FrogPilotStats", json.dumps(self.frogpilot_stats)) self.drive_added = False self.enabled = False - self.aol_engaged_time = 0 - self.drive_distance = 0 - self.drive_time = 0 - self.lateral_engaged_time = 0 - self.longitudinal_engaged_time = 0 + self.distance_since_override = 0 + self.tracked_time = 0 - self.total_aol_engaged = self.frogpilot_stats.get("TotalAOLTime", 0) - self.total_lateral_engaged = self.frogpilot_stats.get("TotalLateralTime", 0) - self.total_longitudinal_engaged = self.frogpilot_stats.get("TotalLongitudinalTime", 0) - self.total_tracked_time = self.frogpilot_stats.get("TotalTrackedTime", 0) + self.previous_events = set() + self.previous_random_events = set() + + self.sound = FrogPilotAudibleAlert.none + self.state = State.disabled + + self.model_name = clean_model_name(dict(zip(frogpilot_toggles.available_models.split(","), frogpilot_toggles.available_model_names.split(",")))[frogpilot_toggles.model]) + + def update(self, now, time_validated, sm, frogpilot_toggles): + v_cruise = min(sm["controlsState"].vCruiseCluster, V_CRUISE_MAX) * CV.KPH_TO_MS + v_ego = max(sm["carState"].vEgo, 0) - def update(self, sm): self.enabled |= sm["controlsState"].enabled or sm["frogpilotCarState"].alwaysOnLateralEnabled - self.drive_distance += sm["carState"].vEgo * DT_MDL - self.drive_time += DT_MDL + self.frogpilot_stats["FrogPilotMeters"] = self.frogpilot_stats.get("FrogPilotMeters", 0) + (v_ego * DT_MDL) + + self.tracked_time += DT_MDL + + self.frogpilot_stats["CurrentMonthsKilometers"] = self.frogpilot_stats.get("CurrentMonthsKilometers", 0) + (v_ego * DT_MDL) / 1000 + + self.frogpilot_stats["HighestAcceleration"] = max(self.frogpilot_events.max_acceleration, self.frogpilot_stats.get("HighestAcceleration", 0)) + + if sm["frogpilotControlsState"].alertSound != self.sound: + if sm["frogpilotControlsState"].alertSound == FrogPilotAudibleAlert.goat: + self.frogpilot_stats["GoatScreams"] = self.frogpilot_stats.get("GoatScreams", 0) + 1 + + self.sound = sm["frogpilotControlsState"].alertSound + + if sm["controlsState"].enabled: + key = str(round(v_cruise, 2)) + total_cruise_speed_times = self.frogpilot_stats.get("CruiseSpeedTimes", {}) + total_cruise_speed_times[key] = total_cruise_speed_times.get(key, 0) + DT_MDL + self.frogpilot_stats["CruiseSpeedTimes"] = total_cruise_speed_times if sm["carControl"].latActive: - self.lateral_engaged_time += DT_MDL + self.frogpilot_stats["LateralTime"] = self.frogpilot_stats.get("LateralTime", 0) + DT_MDL if sm["carControl"].longActive: - self.longitudinal_engaged_time += DT_MDL + self.frogpilot_stats["LongitudinalTime"] = self.frogpilot_stats.get("LongitudinalTime", 0) + DT_MDL elif sm["frogpilotCarState"].alwaysOnLateralEnabled: - self.aol_engaged_time += DT_MDL + self.frogpilot_stats["AOLTime"] = self.frogpilot_stats.get("AOLTime", 0) + DT_MDL - if self.drive_time > 60 and sm["carState"].standstill and self.enabled: - self.total_kilometers += self.drive_distance / 1000 - params_tracking.put_float_nonblocking("FrogPilotKilometers", self.total_kilometers) - self.drive_distance = 0 + if sm["carState"].standstill: + self.frogpilot_stats["StandstillTime"] = self.frogpilot_stats.get("StandstillTime", 0) + DT_MDL + if self.frogpilot_events.stopped_for_light: + self.frogpilot_stats["StopLightTime"] = self.frogpilot_stats.get("StopLightTime", 0) + DT_MDL - self.total_minutes += self.drive_time / 60 - params_tracking.put_float_nonblocking("FrogPilotMinutes", self.total_minutes) + if sm["controlsState"].experimentalMode: + self.frogpilot_stats["ExperimentalModeTime"] = self.frogpilot_stats.get("ExperimentalModeTime", 0) + DT_MDL - self.total_aol_engaged += self.aol_engaged_time - self.total_lateral_engaged += self.lateral_engaged_time - self.total_longitudinal_engaged += self.longitudinal_engaged_time - self.total_tracked_time += self.drive_time + if sm["controlsState"].state in (State.disabled, State.overriding): + self.distance_since_override = 0 + self.frogpilot_stats["OverrideTime"] = self.frogpilot_stats.get("OverrideTime", 0) + DT_MDL + else: + self.distance_since_override += v_ego * DT_MDL + self.frogpilot_stats["LongestDistanceWithoutOverride"] = max(self.distance_since_override, self.frogpilot_stats.get("LongestDistanceWithoutOverride", 0)) - self.frogpilot_stats["TotalAOLTime"] = self.total_aol_engaged - self.frogpilot_stats["TotalLateralTime"] = self.total_lateral_engaged - self.frogpilot_stats["TotalLongitudinalTime"] = self.total_longitudinal_engaged - self.frogpilot_stats["TotalTrackedTime"] = self.total_tracked_time + if sm["controlsState"].state != self.state: + if sm["controlsState"].state == State.disabled: + self.frogpilot_stats["Disengages"] = self.frogpilot_stats.get("Disengages", 0) + 1 - params.put("FrogPilotStats", json.dumps(self.frogpilot_stats)) + if frogpilot_toggles.sound_pack == "frog": + self.frogpilot_stats["FrogSqueaks"] = self.frogpilot_stats.get("FrogSqueaks", 0) + 1 + elif sm["controlsState"].state == State.enabled: + self.frogpilot_stats["Engages"] = self.frogpilot_stats.get("Engages", 0) + 1 - self.aol_engaged_time = 0 - self.drive_time = 0 - self.lateral_engaged_time = 0 - self.longitudinal_engaged_time = 0 + if frogpilot_toggles.sound_pack == "frog": + self.frogpilot_stats["FrogChirps"] = self.frogpilot_stats.get("FrogChirps", 0) + 1 + elif sm["controlsState"].state == State.overriding: + self.frogpilot_stats["Overrides"] = self.frogpilot_stats.get("Overrides", 0) + 1 + + self.state = sm["controlsState"].state + + current_events = {event for event in self.frogpilot_events.event_names} + if len(current_events) > 0: + new_events = current_events - self.previous_events + + if new_events: + if (EventName.fcw in self.frogpilot_events.event_names or EventName.stockAeb in self.frogpilot_events.event_names): + self.frogpilot_stats["AEBEvents"] = self.frogpilot_stats.get("AEBEvents", 0) + 1 + + self.previous_events = current_events + + current_random_events = {event for event in self.frogpilot_events.events.names if event in RANDOM_EVENTS} + if len(current_random_events) > 0: + new_events = current_random_events - self.previous_random_events + + if new_events: + total_random_events = self.frogpilot_stats.get("RandomEvents", {}) + for event in new_events: + event_name = RANDOM_EVENTS[event] + total_random_events[event_name] = total_random_events.get(event_name, 0) + 1 + self.frogpilot_stats["RandomEvents"] = total_random_events + + self.previous_random_events = current_random_events + + if self.tracked_time > 60 and sm["carState"].standstill and self.enabled: + if time_validated: + current_month = now.month + if current_month != self.frogpilot_stats.get("Month"): + self.frogpilot_stats.update({ + "CurrentMonthsKilometers": 0, + "Month": current_month + }) + + self.frogpilot_stats["FrogPilotSeconds"] = self.frogpilot_stats.get("FrogPilotSeconds", 0) + self.tracked_time + + self.frogpilot_stats["TrackedTime"] = self.frogpilot_stats.get("TrackedTime", 0) + self.tracked_time + + current_model = self.model_name + total_model_times = self.frogpilot_stats.get("ModelTimes", {}) + total_model_times[current_model] = total_model_times.get(current_model, 0) + self.tracked_time + self.frogpilot_stats["ModelTimes"] = total_model_times + + self.tracked_time = 0 if not self.drive_added: - self.total_drives += 1 - params_tracking.put_int_nonblocking("FrogPilotDrives", self.total_drives) + self.frogpilot_stats["FrogPilotDrives"] = self.frogpilot_stats.get("FrogPilotDrives", 0) + 1 self.drive_added = True + + params.put_nonblocking("FrogPilotStats", json.dumps(self.frogpilot_stats)) diff --git a/frogpilot/controls/lib/frogpilot_vcruise.py b/frogpilot/controls/lib/frogpilot_vcruise.py index d421e9ec5..c2c1b6eff 100644 --- a/frogpilot/controls/lib/frogpilot_vcruise.py +++ b/frogpilot/controls/lib/frogpilot_vcruise.py @@ -4,25 +4,22 @@ from openpilot.common.realtime import DT_MDL from openpilot.selfdrive.controls.lib.longitudinal_mpc_lib.long_mpc import COMFORT_BRAKE from openpilot.frogpilot.common.frogpilot_variables import CRUISING_SPEED, PLANNER_TIME -from openpilot.frogpilot.controls.lib.map_turn_speed_controller import MapTurnSpeedController +from openpilot.frogpilot.controls.lib.curve_speed_controller import CurveSpeedController from openpilot.frogpilot.controls.lib.speed_limit_controller import SpeedLimitController -TARGET_LAT_A = 2.0 - class FrogPilotVCruise: def __init__(self, FrogPilotPlanner): self.frogpilot_planner = FrogPilotPlanner - self.mtsc = MapTurnSpeedController() + self.csc = CurveSpeedController(self) self.slc = SpeedLimitController() self.forcing_stop = False self.override_force_stop = False - self.mtsc_target = 0 self.override_force_stop_timer = 0 - def update(self, gps_position, v_cruise, v_ego, sm, frogpilot_toggles): + def update(self, gps_position, now, time_validated, v_cruise, v_ego, sm, frogpilot_toggles): force_stop = self.frogpilot_planner.cem.stop_light_detected and sm["controlsState"].enabled and frogpilot_toggles.force_stops force_stop &= self.frogpilot_planner.model_stopped force_stop &= self.override_force_stop_timer <= 0 @@ -46,6 +43,21 @@ class FrogPilotVCruise: v_ego_cluster = max(sm["carState"].vEgoCluster, v_ego) v_ego_diff = v_ego_cluster - v_ego + # FrogsGoMoo's Curve Speed Controller + if v_ego > CRUISING_SPEED and sm["controlsState"].enabled and self.frogpilot_planner.road_curvature_detected and frogpilot_toggles.curve_speed_controller: + self.csc.update_target(v_ego) + + self.csc_controlling_speed = True + + self.csc_target = self.csc.target + else: + self.csc.log_data(v_ego, sm) + + self.csc_controlling_speed = False + self.csc.target_set = False + + self.csc_target = v_cruise + # Mike's extended lead linear braking if self.frogpilot_planner.lead_one.vLead < v_ego > CRUISING_SPEED and sm["controlsState"].enabled and self.frogpilot_planner.tracking_lead and frogpilot_toggles.human_following: if not self.frogpilot_planner.frogpilot_following.following_lead: @@ -56,31 +68,17 @@ class FrogPilotVCruise: else: self.braking_target = v_cruise - # Pfeiferj's Map Turn Speed Controller - if v_ego > CRUISING_SPEED and sm["controlsState"].enabled and frogpilot_toggles.map_turn_speed_controller: - mtsc_active = self.mtsc_target < v_cruise - - if self.frogpilot_planner.road_curvature_detected and mtsc_active: - self.mtsc_target = self.mtsc_target - elif not self.frogpilot_planner.road_curvature_detected and frogpilot_toggles.mtsc_curvature_check: - self.mtsc_target = v_cruise - else: - mtsc_speed = ((TARGET_LAT_A * frogpilot_toggles.turn_aggressiveness) / (self.mtsc.get_map_curvature(gps_position, v_ego) * frogpilot_toggles.curve_sensitivity))**0.5 - self.mtsc_target = max(CRUISING_SPEED, mtsc_speed) - else: - self.mtsc_target = v_cruise - # Pfeiferj's Speed Limit Controller self.slc.frogpilot_toggles = frogpilot_toggles if frogpilot_toggles.speed_limit_controller: - self.slc.update_limits(sm["frogpilotCarState"].dashboardSpeedLimit, gps_position, sm["frogpilotNavigation"].navigationSpeedLimit, v_cruise, v_ego, sm) + self.slc.update_limits(sm["frogpilotCarState"].dashboardSpeedLimit, gps_position, sm["frogpilotNavigation"].navigationSpeedLimit, now, time_validated, v_cruise, v_ego, sm) self.slc.update_override(v_cruise, v_cruise_diff, v_ego, v_ego_diff, sm) self.slc_offset = self.slc.offset self.slc_target = self.slc.target elif frogpilot_toggles.show_speed_limits: - self.slc.update_limits(sm["frogpilotCarState"].dashboardSpeedLimit, gps_position, sm["frogpilotNavigation"].navigationSpeedLimit, v_cruise, v_ego, sm) + self.slc.update_limits(sm["frogpilotCarState"].dashboardSpeedLimit, gps_position, sm["frogpilotNavigation"].navigationSpeedLimit, now, time_validated, v_cruise, v_ego, sm) self.slc_offset = 0 self.slc_target = self.slc.target @@ -88,19 +86,7 @@ class FrogPilotVCruise: self.slc_offset = 0 self.slc_target = 0 - # Pfeiferj's Vision Turn Controller - if v_ego > CRUISING_SPEED and sm["controlsState"].enabled and self.frogpilot_planner.road_curvature_detected and frogpilot_toggles.vision_turn_speed_controller: - vtsc_speed = ((TARGET_LAT_A * frogpilot_toggles.turn_aggressiveness) / (abs(self.frogpilot_planner.road_curvature) * frogpilot_toggles.curve_sensitivity))**0.5 - self.vtsc_target = max(CRUISING_SPEED, vtsc_speed) - else: - self.vtsc_target = v_cruise - - if sm["carState"].standstill and not self.override_force_stop and sm["controlsState"].enabled and frogpilot_toggles.force_standstill: - self.forcing_stop = True - - v_cruise = -1 - - elif force_stop_enabled and not self.override_force_stop: + if force_stop_enabled and not self.override_force_stop: self.forcing_stop |= not sm["carState"].standstill self.tracked_model_length = max(self.tracked_model_length - (v_ego * DT_MDL), 0) @@ -111,13 +97,10 @@ class FrogPilotVCruise: self.tracked_model_length = self.frogpilot_planner.model_length - targets = [self.braking_target, self.mtsc_target, self.vtsc_target, v_cruise] + targets = [self.braking_target, self.csc_target, v_cruise] if frogpilot_toggles.speed_limit_controller: targets.append(max(self.slc.overridden_speed, self.slc_target + self.slc_offset) - v_ego_diff) v_cruise = min([target if target > CRUISING_SPEED else v_cruise for target in targets]) - self.mtsc_target += v_cruise_diff - self.vtsc_target += v_cruise_diff - return v_cruise diff --git a/frogpilot/controls/lib/map_turn_speed_controller.py b/frogpilot/controls/lib/map_turn_speed_controller.py deleted file mode 100644 index a01b7e471..000000000 --- a/frogpilot/controls/lib/map_turn_speed_controller.py +++ /dev/null @@ -1,82 +0,0 @@ -#!/usr/bin/env python3 -# PFEIFER - MTSC - Modified by FrogAi for FrogPilot -import json -import math - -from openpilot.common.conversions import Conversions as CV - -from openpilot.frogpilot.common.frogpilot_utilities import calculate_distance_to_point -from openpilot.frogpilot.common.frogpilot_variables import PLANNER_TIME, params_memory - -def calculate_curvature(p1, p2, p3): - lat1, lon1 = p1 - lat2, lon2 = p2 - lat3, lon3 = p3 - - lat1_rad, lon1_rad = lat1 * CV.DEG_TO_RAD, lon1 * CV.DEG_TO_RAD - lat2_rad, lon2_rad = lat2 * CV.DEG_TO_RAD, lon2 * CV.DEG_TO_RAD - lat3_rad, lon3_rad = lat3 * CV.DEG_TO_RAD, lon3 * CV.DEG_TO_RAD - - side_a = calculate_distance_to_point(lat2_rad, lon2_rad, lat3_rad, lon3_rad) - side_b = calculate_distance_to_point(lat1_rad, lon1_rad, lat3_rad, lon3_rad) - side_c = calculate_distance_to_point(lat1_rad, lon1_rad, lat2_rad, lon2_rad) - - s = (side_a + side_b + side_c) / 2 - - area_squared = s * (s - side_a) * (s - side_b) * (s - side_c) - if area_squared <= 0: - return 0 - - area = math.sqrt(area_squared) - - radius = (side_a * side_b * side_c) / (4 * area) - if radius == 0: - return 0 - - curvature = 1 / radius - return curvature - -class MapTurnSpeedController: - def get_map_curvature(self, gps_position, v_ego): - if not gps_position: - return 1e-6 - current_latitude = gps_position["latitude"] - current_longitude = gps_position["longitude"] - - distances = [] - minimum_idx = 0 - minimum_distance = 1000.0 - - target_velocities = json.loads(params_memory.get("MapTargetVelocities") or "[]") - for i, target_velocity in enumerate(target_velocities): - target_latitude = target_velocity["latitude"] - target_longitude = target_velocity["longitude"] - - distance = calculate_distance_to_point(current_latitude * CV.DEG_TO_RAD, current_longitude * CV.DEG_TO_RAD, target_latitude * CV.DEG_TO_RAD, target_longitude * CV.DEG_TO_RAD) - distances.append(distance) - - if distance < minimum_distance: - minimum_distance = distance - minimum_idx = i - - forward_distances = distances[minimum_idx:] - - cumulative_distance = 0.0 - target_idx = None - - for i, distance in enumerate(forward_distances): - cumulative_distance += distance - if cumulative_distance >= PLANNER_TIME * v_ego: - target_idx = i - break - - forward_points = target_velocities[minimum_idx:] - - if target_idx is None or target_idx == 0 or target_idx >= len(forward_points) - 1: - return 1e-6 - - p1 = (forward_points[target_idx - 1]["latitude"], forward_points[target_idx - 1]["longitude"]) - p2 = (forward_points[target_idx]["latitude"], forward_points[target_idx]["longitude"]) - p3 = (forward_points[target_idx + 1]["latitude"], forward_points[target_idx + 1]["longitude"]) - - return max(calculate_curvature(p1, p2, p3), 1e-6) diff --git a/frogpilot/controls/lib/neural_network_feedforward.py b/frogpilot/controls/lib/neural_network_feedforward.py index b9d0cbffc..fac09d9fd 100644 --- a/frogpilot/controls/lib/neural_network_feedforward.py +++ b/frogpilot/controls/lib/neural_network_feedforward.py @@ -2,6 +2,7 @@ # Twilsonco's Lateral Neural Network Feedforward from collections import deque from difflib import SequenceMatcher +from typing import NamedTuple import json import math @@ -10,11 +11,10 @@ import os from openpilot.common.filter_simple import FirstOrderFilter from openpilot.common.numpy_fast import interp -from openpilot.selfdrive.car.interfaces import LatControlInputs from openpilot.selfdrive.controls.lib.drive_helpers import CONTROL_N from openpilot.selfdrive.modeld.constants import ModelConstants -from openpilot.frogpilot.common.frogpilot_variables import TORQUE_NN_MODEL_PATH, get_nnff_model_files, params +from openpilot.frogpilot.common.frogpilot_variables import NNFF_MODELS_PATH, get_nnff_model_files, params # At higher speeds (25+mph) we can assume: # Lateral acceleration achieved by a specific car correlates to @@ -121,7 +121,7 @@ def get_nn_model_path(car, eps_firmware) -> str | None: return None, 0.0 best = max(candidates, key=lambda model: similarity(model, query)) - return os.path.join(TORQUE_NN_MODEL_PATH, f"{best}.json"), similarity(best, query) + return os.path.join(NNFF_MODELS_PATH, f"{best}.json"), similarity(best, query) def find_valid_model(*queries): for query in queries: @@ -152,13 +152,19 @@ def sign(x): def similarity(s1: str, s2: str) -> float: return SequenceMatcher(None, s1, s2).ratio() +class LatControlInputs(NamedTuple): + lateral_acceleration: float + roll_compensation: float + vego: float + aego: float + class NeuralNetworkFeedforward: - def __init__(self, CP, CI, LatControlTorque): + def __init__(self, CP, LatControlTorque): self.lat_control_torque = LatControlTorque self.lat_torque_nn_model = get_nn_model(CP.carFingerprint, str(next((fw.fwVersion for fw in CP.carFw if fw.ecu == "eps"), "")).replace("\\", "")) - self.torque_from_lateral_accel = CI.torque_from_lateral_accel() + self.torque_from_lateral_accel = self.lat_control_torque.torque_from_lateral_accel self.use_steering_angle = self.lat_control_torque.torque_params.useSteeringAngle @@ -200,8 +206,6 @@ class NeuralNetworkFeedforward: self.past_future_len = len(self.past_times) + len(self.nn_future_times) self.roll_deque = deque(maxlen=history_check_frames[0]) - self.nnLog = [] - def update_live_delay(self, lateral_delay): self.lateral_delay = lateral_delay @@ -285,25 +289,15 @@ class NeuralNetworkFeedforward: # apply friction override for cars with low NN friction response if self.nn_friction_override: - pid_log.error += self.torque_from_lateral_accel(LatControlInputs(0.0, 0.0, CS.vEgo, CS.aEgo), self.lat_control_torque.torque_params, - friction_input, lateral_accel_deadzone, friction_compensation=True, gravity_adjusted=False) - - self.nnLog = nn_input + nnff_setpoint_input + nnff_measurement_input + pid_log.error += self.torque_from_lateral_accel(0.0, self.lat_control_torque.torque_params) else: - torque_from_setpoint = self.torque_from_lateral_accel(LatControlInputs(setpoint, roll_compensation, CS.vEgo, CS.aEgo), self.lat_control_torque.torque_params, - lateral_jerk_setpoint, lateral_accel_deadzone, friction_compensation=True, gravity_adjusted=False) + torque_from_measurement = self.torque_from_lateral_accel(measurement, self.lat_control_torque.torque_params) + torque_from_setpoint = self.torque_from_lateral_accel(setpoint, self.lat_control_torque.torque_params) - torque_from_measurement = self.torque_from_lateral_accel(LatControlInputs(measurement, roll_compensation, CS.vEgo, CS.aEgo), self.lat_control_torque.torque_params, - lateral_jerk_measurement, lateral_accel_deadzone, friction_compensation=True, gravity_adjusted=False) - - pid_log.error = torque_from_setpoint - torque_from_measurement + pid_log.error = float(torque_from_setpoint - torque_from_measurement) error = desired_lateral_accel - actual_lateral_accel friction_input = self.lat_accel_friction_factor * error + self.lat_jerk_friction_factor * lookahead_lateral_jerk - ff = self.torque_from_lateral_accel(LatControlInputs(gravity_adjusted_lateral_accel, roll_compensation, CS.vEgo, CS.aEgo), self.lat_control_torque.torque_params, - friction_input, lateral_accel_deadzone, friction_compensation=True, - gravity_adjusted=True) + ff = self.torque_from_lateral_accel(gravity_adjusted_lateral_accel, self.lat_control_torque.torque_params) - self.nnLog = [] - - return torque_from_setpoint, torque_from_measurement, pid_log, ff + return pid_log, ff diff --git a/frogpilot/controls/lib/speed_limit_controller.py b/frogpilot/controls/lib/speed_limit_controller.py index a976c561a..403ea5694 100644 --- a/frogpilot/controls/lib/speed_limit_controller.py +++ b/frogpilot/controls/lib/speed_limit_controller.py @@ -7,11 +7,9 @@ import numpy as np import requests from concurrent.futures import ThreadPoolExecutor -from datetime import datetime from openpilot.common.conversions import Conversions as CV from openpilot.common.realtime import DT_MDL -from openpilot.common.time import system_time_valid from openpilot.frogpilot.common.frogpilot_utilities import calculate_bearing_offset, calculate_distance_to_point, is_url_pingable from openpilot.frogpilot.common.frogpilot_variables import params, params_memory @@ -37,7 +35,6 @@ class SpeedLimitController: self.source = "None" self.mapbox_requests = json.loads(params.get("MapBoxRequests") or "{}") - self.mapbox_requests.setdefault("month", datetime.now().month) self.mapbox_requests.setdefault("total_requests", 0) self.mapbox_requests.setdefault("max_requests", FREE_MAPBOX_REQUESTS - (28 * 100)) @@ -80,7 +77,7 @@ class SpeedLimitController: ] return next((offset for low, high, offset in offset_map if low < self.target < high), 0) - def get_mapbox_speed_limit(self, gps_position, v_ego, sm): + def get_mapbox_speed_limit(self, gps_position, now, time_validated, v_ego, sm): if not gps_position or not self.mapbox_token or (sm["carState"].steeringAngleDeg - sm["liveParameters"].angleOffsetDeg) >= 45: self.mapbox_limit = 0 self.segment_distance = 0 @@ -107,13 +104,13 @@ class SpeedLimitController: self.segment_distance = 1000 return None - if system_time_valid(): - current_month = datetime.now().month + if time_validated: + current_month = now.month if current_month != self.mapbox_requests.get("month"): self.mapbox_requests.update({ "month": current_month, "total_requests": 0, - "max_requests": FREE_MAPBOX_REQUESTS - calendar.monthrange(datetime.now().year, current_month)[1] * 100, + "max_requests": FREE_MAPBOX_REQUESTS - calendar.monthrange(now.year, current_month)[1] * 100, }) self.mapbox_requests["total_requests"] += 1 @@ -204,7 +201,7 @@ class SpeedLimitController: def handle_limit_change(self, desired_source, desired_target, sm): self.speed_limit_changed_timer += DT_MDL - speed_limit_accepted = (sm["frogpilotCarState"].accelPressed and not sm["carControl"].cruiseControl.override) or params_memory.get_bool("SpeedLimitAccepted") + speed_limit_accepted = (sm["frogpilotCarState"].accelPressed and sm["carControl"].longActive) or params_memory.get_bool("SpeedLimitAccepted") speed_limit_denied = sm["frogpilotCarState"].decelPressed or (self.speed_limit_changed_timer >= 30) if speed_limit_accepted: @@ -241,7 +238,7 @@ class SpeedLimitController: params.put_float_nonblocking("PreviousSpeedLimit", self.target) - def update_limits(self, dashboard_speed_limit, gps_position, navigation_speed_limit, v_cruise, v_ego, sm): + def update_limits(self, dashboard_speed_limit, gps_position, navigation_speed_limit, now, time_validated, v_cruise, v_ego, sm): self.update_map_speed_limit(gps_position, v_ego) limits = { @@ -279,7 +276,7 @@ class SpeedLimitController: if desired_target == 0 or self.target == 0: if self.mapbox_requests["total_requests"] < self.mapbox_requests["max_requests"] and self.frogpilot_toggles.slc_mapbox_filler: - self.get_mapbox_speed_limit(gps_position, v_ego, sm) + self.get_mapbox_speed_limit(gps_position, now, time_validated, v_ego, sm) if self.mapbox_limit >= 1: desired_source = "Mapbox" @@ -307,23 +304,6 @@ class SpeedLimitController: self.speed_limit_changed_timer = 0 self.unconfirmed_speed_limit = 0 - def update_override(self, v_cruise, v_cruise_diff, v_ego, v_ego_diff, sm): - self.override_slc = self.overridden_speed > self.target + self.offset > 0 - self.override_slc |= sm["carState"].gasPressed and v_ego > self.target + self.offset > 0 - self.override_slc &= sm["controlsState"].enabled - - if self.override_slc: - if self.frogpilot_toggles.speed_limit_controller_override_manual: - if sm["carState"].gasPressed: - self.overridden_speed = max(v_ego + v_ego_diff, self.overridden_speed) - self.overridden_speed = float(np.clip(self.overridden_speed, self.target + self.offset, v_cruise + v_cruise_diff)) - elif self.frogpilot_toggles.speed_limit_controller_override_set_speed: - self.overridden_speed = v_cruise + v_cruise_diff - - self.source = "None" - else: - self.overridden_speed = 0 - def update_map_speed_limit(self, gps_position, v_ego): if not gps_position: return @@ -351,3 +331,20 @@ class SpeedLimitController: if distance_to_upcoming < max_lookahead: self.map_speed_limit = self.next_speed_limit + + def update_override(self, v_cruise, v_cruise_diff, v_ego, v_ego_diff, sm): + self.override_slc = self.overridden_speed > self.target + self.offset > 0 + self.override_slc |= sm["carState"].gasPressed and v_ego > self.target + self.offset > 0 + self.override_slc &= sm["controlsState"].enabled + + if self.override_slc: + if self.frogpilot_toggles.speed_limit_controller_override_manual: + if sm["carState"].gasPressed: + self.overridden_speed = max(v_ego + v_ego_diff, self.overridden_speed) + self.overridden_speed = float(np.clip(self.overridden_speed, self.target + self.offset, v_cruise + v_cruise_diff)) + elif self.frogpilot_toggles.speed_limit_controller_override_set_speed: + self.overridden_speed = v_cruise + v_cruise_diff + + self.source = "None" + else: + self.overridden_speed = 0 diff --git a/frogpilot/frogpilot_process.py b/frogpilot/frogpilot_process.py index 58fd3bf69..98aeebef6 100644 --- a/frogpilot/frogpilot_process.py +++ b/frogpilot/frogpilot_process.py @@ -10,8 +10,8 @@ from cereal import messaging from openpilot.common.realtime import DT_MDL, Priority, Ratekeeper, config_realtime_process from openpilot.common.time import system_time_valid -from openpilot.frogpilot.assets.model_manager import ModelManager, MODEL_DOWNLOAD_ALL_PARAM, MODEL_DOWNLOAD_PARAM -from openpilot.frogpilot.assets.theme_manager import ThemeManager +from openpilot.frogpilot.assets.model_manager import MODEL_DOWNLOAD_ALL_PARAM, MODEL_DOWNLOAD_PARAM, ModelManager +from openpilot.frogpilot.assets.theme_manager import THEME_COMPONENT_PARAMS, ThemeManager from openpilot.frogpilot.common.frogpilot_functions import backup_toggles from openpilot.frogpilot.common.frogpilot_utilities import flash_panda, is_url_pingable, lock_doors, run_thread_with_lock, update_maps, update_openpilot from openpilot.frogpilot.common.frogpilot_variables import ERROR_LOGS_PATH, FrogPilotVariables, get_frogpilot_toggles, params, params_cache, params_memory @@ -21,9 +21,11 @@ from openpilot.frogpilot.system.frogpilot_stats import send_stats ASSET_CHECK_RATE = (1 / DT_MDL) -def assets_checks(model_manager, theme_manager): +def assets_checks(model_manager, theme_manager, frogpilot_toggles): if params_memory.get_bool(MODEL_DOWNLOAD_ALL_PARAM): run_thread_with_lock("download_all_models", model_manager.download_all_models) + elif params_memory.get_bool("UpdateTinygrad"): + run_thread_with_lock("update_tinygrad", model_manager.update_tinygrad) else: model_to_download = params_memory.get(MODEL_DOWNLOAD_PARAM, encoding="utf-8") if model_to_download: @@ -34,24 +36,15 @@ def assets_checks(model_manager, theme_manager): report_data = json.loads(params_memory.get("IssueReported", encoding="utf-8") or "{}") if report_data: - sentry.capture_report(report_data["DiscordUser"], report_data["Issue"], vars(get_frogpilot_toggles())) + sentry.capture_report(report_data["DiscordUser"], report_data["Issue"], vars(frogpilot_toggles)) params_memory.remove("IssueReported") - assets = [ - ("ColorToDownload", "colors"), - ("DistanceIconToDownload", "distance_icons"), - ("IconToDownload", "icons"), - ("SignalToDownload", "signals"), - ("SoundToDownload", "sounds"), - ("WheelToDownload", "steering_wheels") - ] - - for param, asset_type in assets: - asset_to_download = params_memory.get(param, encoding="utf-8") + for asset_type, asset_param in THEME_COMPONENT_PARAMS.items(): + asset_to_download = params_memory.get(asset_param, encoding="utf-8") if asset_to_download: - run_thread_with_lock("download_theme", theme_manager.download_theme, (asset_type, asset_to_download, param)) + run_thread_with_lock("download_theme", theme_manager.download_theme, (asset_type, asset_to_download, asset_param, frogpilot_toggles)) -def update_checks(manually_updated, model_manager, now, theme_manager, frogpilot_toggles, boot_run=False): +def update_checks(model_manager, now, theme_manager, frogpilot_toggles, boot_run=False): while not (is_url_pingable("https://github.com") or is_url_pingable("https://gitlab.com")): time.sleep(60) @@ -60,7 +53,7 @@ def update_checks(manually_updated, model_manager, now, theme_manager, frogpilot run_thread_with_lock("update_maps", update_maps, (now,)) - if frogpilot_toggles.automatic_updates and not manually_updated: + if frogpilot_toggles.automatic_updates: run_thread_with_lock("update_openpilot", update_openpilot) time.sleep(1) @@ -80,14 +73,14 @@ def frogpilot_thread(): model_manager = ModelManager() theme_manager = ThemeManager() - toggles_last_updated = datetime.datetime.now() + toggles_last_updated = datetime.datetime.now(datetime.timezone.utc) pm = messaging.PubMaster(["frogpilotPlan"]) sm = messaging.SubMaster(["carControl", "carState", "controlsState", "deviceState", "driverMonitoringState", - "liveLocationKalman", "liveParameters", "managerState", "modelV2", - "pandaStates", "radarState", "frogpilotCarState", - "frogpilotNavigation"], - poll="modelV2", ignore_avg_freq=["radarState"]) + "liveLocationKalman", "liveParameters", "managerState", "modelV2", "onroadEvents", + "pandaStates", "radarState", "frogpilotCarState", "frogpilotControlsState", + "frogpilotModelV2", "frogpilotNavigation", "frogpilotOnroadEvents"], + poll="modelV2", ignore_avg_freq=["frogpilotRadarState"]) run_update_checks = False started_previously = False @@ -97,7 +90,7 @@ def frogpilot_thread(): while True: sm.update() - now = datetime.datetime.now() + now = datetime.datetime.now(datetime.timezone.utc) started = sm["deviceState"].started @@ -116,32 +109,28 @@ def frogpilot_thread(): if time_validated and is_url_pingable(os.environ.get("STATS_URL", "")): send_stats() - params_memory.put_bool("IsOnroad", False) - elif started and not started_previously: - frogpilot_planner = FrogPilotPlanner() - frogpilot_tracking = FrogPilotTracking() - if error_log.is_file(): error_log.unlink() - params_memory.put_bool("IsOnroad", True) + frogpilot_planner = FrogPilotPlanner(error_log, theme_manager) + frogpilot_tracking = FrogPilotTracking(frogpilot_planner, frogpilot_toggles) if started and sm.updated["modelV2"]: - frogpilot_planner.update(sm, frogpilot_toggles) - frogpilot_planner.publish(sm, pm, theme_manager.theme_updated, toggles_updated) + frogpilot_planner.update(now, time_validated, sm, frogpilot_toggles) + frogpilot_planner.publish(theme_manager.theme_updated, toggles_updated, sm, pm, frogpilot_toggles) - frogpilot_tracking.update(sm) - elif not started and toggles_updated: + frogpilot_tracking.update(now, time_validated, sm, frogpilot_toggles) + elif not started: frogpilot_plan_send = messaging.new_message("frogpilotPlan") - frogpilot_plan_send.frogpilotPlan.themeUpdated = theme_manager.theme_updated + frogpilot_plan_send.frogpilotPlan.themeUpdated = theme_manager.theme_updated or params_memory.get_bool("UseActiveTheme") frogpilot_plan_send.frogpilotPlan.togglesUpdated = toggles_updated pm.send("frogpilotPlan", frogpilot_plan_send) started_previously = started if rate_keeper.frame % ASSET_CHECK_RATE == 0: - assets_checks(model_manager, theme_manager) + assets_checks(model_manager, theme_manager, frogpilot_toggles) if params_memory.get_bool("FrogPilotTogglesUpdated") or theme_manager.theme_updated: previous_holiday_themes = frogpilot_toggles.holiday_themes @@ -163,15 +152,13 @@ def frogpilot_thread(): toggles_updated = (now - toggles_last_updated).total_seconds() <= 1 - manually_updated = params_memory.get_bool("ManualUpdateInitiated") - - run_update_checks |= manually_updated + run_update_checks |= params_memory.get_bool("ManualUpdateInitiated") run_update_checks |= now.second == 0 and (now.minute % 60 == 0 or (now.minute % 5 == 0 and frogpilot_toggles.frogs_go_moo)) run_update_checks &= time_validated if run_update_checks: theme_manager.update_active_theme(time_validated, frogpilot_toggles) - run_thread_with_lock("update_checks", update_checks, (manually_updated, model_manager, now, theme_manager, frogpilot_toggles)) + run_thread_with_lock("update_checks", update_checks, (model_manager, now, theme_manager, frogpilot_toggles)) run_update_checks = False elif not time_validated: @@ -180,7 +167,7 @@ def frogpilot_thread(): continue theme_manager.update_active_theme(time_validated, frogpilot_toggles) - run_thread_with_lock("update_checks", update_checks, (manually_updated, model_manager, now, theme_manager, frogpilot_toggles, True)) + run_thread_with_lock("update_checks", update_checks, (model_manager, now, theme_manager, frogpilot_toggles, True)) rate_keeper.keep_time() diff --git a/frogpilot/system/environment_variables b/frogpilot/system/environment_variables index 57f0406c5..6bf4f6a8f 100755 Binary files a/frogpilot/system/environment_variables and b/frogpilot/system/environment_variables differ diff --git a/frogpilot/system/frogpilot_stats.py b/frogpilot/system/frogpilot_stats.py index c69a09f51..a3f4dc963 100644 --- a/frogpilot/system/frogpilot_stats.py +++ b/frogpilot/system/frogpilot_stats.py @@ -2,18 +2,21 @@ import json import os import random import requests -import subprocess import sys +sys.path.append(os.path.join(os.path.dirname(__file__), "..", "third_party")) + from collections import Counter from datetime import datetime, timezone +from influxdb_client import InfluxDBClient, Point +from influxdb_client.client.write_api import SYNCHRONOUS from openpilot.common.conversions import Conversions as CV from openpilot.system.hardware import HARDWARE from openpilot.system.version import get_build_metadata -from openpilot.frogpilot.common.frogpilot_utilities import run_cmd -from openpilot.frogpilot.common.frogpilot_variables import get_frogpilot_toggles, params, params_tracking +from openpilot.frogpilot.common.frogpilot_utilities import clean_model_name, run_cmd +from openpilot.frogpilot.common.frogpilot_variables import get_frogpilot_toggles, params BASE_URL = "https://nominatim.openstreetmap.org" MINIMUM_POPULATION = 100_000 @@ -94,23 +97,11 @@ def get_city_center(latitude, longitude): print(f"Falling back to (0, 0) for {latitude}, {longitude}") return float(0.0), float(0.0), "N/A", "N/A", "N/A" -def install_influxdb_client(): - try: - import influxdb_client - import influxdb_client.client.write_api - except ModuleNotFoundError: - print("influxdb-client not found. Attempting installation...") - stock_mount_options = subprocess.run(["findmnt", "-no", "OPTIONS", "/"], capture_output=True, text=True, check=True).stdout.strip() - - run_cmd(["sudo", "mount", "-o", "remount,rw", "/"], "Successfully remounted / as read-write", "Failed to remount / as read-write", report=False) - run_cmd(["sudo", sys.executable, "-m", "pip", "install", "influxdb-client"], "Successfully installed influxdb-client", "Failed to install influxdb-client", report=False) - run_cmd(["sudo", "mount", "-o", f"remount,{stock_mount_options}", "/"], "Successfully restored stock mount options", "Failed to restore stock mount options", report=False) - def is_up_to_date(build_metadata): - remote_commit = subprocess.check_output(["git", "ls-remote", "origin", build_metadata.channel], text=True, stderr=subprocess.DEVNULL).strip() + remote_commit = run_cmd(["git", "ls-remote", "origin", build_metadata.channel], f"Fetched remote commit", "Failed to fetch remote commit", report=False) if remote_commit: - return build_metadata.openpilot.git_commit == remote_commit.split()[0] + return build_metadata.openpilot.git_commit == remote_commit.strip().split()[0] return True @@ -125,11 +116,6 @@ def send_stats(): if frogpilot_toggles.car_make == "mock": return - install_influxdb_client() - - from influxdb_client import InfluxDBClient, Point - from influxdb_client.client.write_api import SYNCHRONOUS - bucket = os.environ.get("STATS_BUCKET", "") org_ID = os.environ.get("STATS_ORG_ID", "") token = os.environ.get("STATS_TOKEN", "") @@ -159,16 +145,18 @@ def send_stats(): selected_theme = random.choice([item for item, count in most_common if count == max_count]).replace("-user_created", "").replace("_", " ") point = (Point("user_stats") + .field("blocked_user", frogpilot_toggles.block_user) .field("car_make", "GM" if frogpilot_toggles.car_make == "gm" else frogpilot_toggles.car_make.title()) .field("car_model", frogpilot_toggles.car_model) .field("city", city) .field("country", country) + .field("current_months_kilometers", int(frogpilot_stats.get("CurrentMonthsKilometers", 0))) .field("device", HARDWARE.get_device_type()) - .field("driving_model", frogpilot_toggles.model_name.replace("๐Ÿ—บ๏ธ", "").replace("๐Ÿ“ก", "").replace("๐Ÿ‘€", "").replace("(Default)", "").strip()) + .field("driving_model", clean_model_name(frogpilot_toggles.model_name)) .field("event", 1) - .field("frogpilot_drives", params_tracking.get_int("FrogPilotDrives")) - .field("frogpilot_hours", params_tracking.get_int("FrogPilotMinutes") / 60) - .field("frogpilot_miles", params_tracking.get_int("FrogPilotKilometers") * CV.KPH_TO_MPH) + .field("frogpilot_drives", int(frogpilot_stats.get("FrogPilotDrives", 0))) + .field("frogpilot_hours", float(frogpilot_stats.get("FrogPilotSeconds", 0)) / (60 * 60)) + .field("frogpilot_miles", float(frogpilot_stats.get("FrogPilotMeters", 0)) * CV.METER_TO_MILE) .field("goat_scream", frogpilot_toggles.goat_scream_alert) .field("has_cc_long", frogpilot_toggles.has_cc_long) .field("has_openpilot_longitudinal", frogpilot_toggles.openpilot_longitudinal) @@ -181,10 +169,10 @@ def send_stats(): .field("random_events", frogpilot_toggles.random_events) .field("state", state) .field("theme", selected_theme.title()) - .field("total_aol_seconds", float(frogpilot_stats.get("TotalAOLTime", 0))) - .field("total_lateral_seconds", float(frogpilot_stats.get("TotalLateralTime", 0))) - .field("total_longitudinal_seconds", float(frogpilot_stats.get("TotalLongitudinalTime", 0))) - .field("total_tracked_seconds", float(frogpilot_stats.get("TotalTrackedTime", 0))) + .field("total_aol_seconds", float(frogpilot_stats.get("AOLTime", 0))) + .field("total_lateral_seconds", float(frogpilot_stats.get("LateralTime", 0))) + .field("total_longitudinal_seconds", float(frogpilot_stats.get("LongitudinalTime", 0))) + .field("total_tracked_seconds", float(frogpilot_stats.get("TrackedTime", 0))) .field("tuning_level", params.get_int("TuningLevel") + 1 if params.get_bool("TuningLevelConfirmed") else 0) .field("up_to_date", is_up_to_date(build_metadata)) .field("using_stock_acc", not (frogpilot_toggles.has_cc_long or frogpilot_toggles.openpilot_longitudinal)) diff --git a/frogpilot/system/speed_limit_filler.py b/frogpilot/system/speed_limit_filler.py index 0e1d42a38..fbd6e2bcf 100644 --- a/frogpilot/system/speed_limit_filler.py +++ b/frogpilot/system/speed_limit_filler.py @@ -7,8 +7,6 @@ import time from collections import OrderedDict, deque from datetime import datetime, timedelta, timezone -import openpilot.system.sentry as sentry - from cereal import log, messaging from openpilot.frogpilot.common.frogpilot_utilities import calculate_distance_to_point, calculate_lane_width, is_url_pingable @@ -126,7 +124,7 @@ class MapSpeedLogger: if self.should_stop_processing: return False - time.sleep(10) + time.sleep(5) return True def fetch_from_overpass(self, latitude, longitude): @@ -379,35 +377,29 @@ def main(): previously_started = False while True: - try: - logger.sm.update() + logger.sm.update() - if logger.sm["deviceState"].started: - logger.log_speed_limit() + if logger.sm["deviceState"].started: + logger.log_speed_limit() - previously_started = True - elif previously_started: - existing_dataset = json.loads(params.get("SpeedLimits") or "[]") - existing_dataset.extend(logger.dataset_additions) + previously_started = True + elif previously_started: + existing_dataset = json.loads(params.get("SpeedLimits") or "[]") + existing_dataset.extend(logger.dataset_additions) - new_dataset = logger.cleanup_dataset(existing_dataset) - params.put("SpeedLimits", json.dumps(list(new_dataset))) + new_dataset = logger.cleanup_dataset(existing_dataset) + params.put("SpeedLimits", json.dumps(list(new_dataset))) - if logger.sm["deviceState"].networkType in (NetworkType.ethernet, NetworkType.wifi): - params_memory.put_bool("UpdateSpeedLimits", True) + if logger.sm["deviceState"].networkType in (NetworkType.ethernet, NetworkType.wifi): + params_memory.put_bool("UpdateSpeedLimits", True) - logger.dataset_additions.clear() + logger.dataset_additions.clear() - previously_started = False - elif params_memory.get_bool("UpdateSpeedLimits"): - logger.process_speed_limits() - else: - time.sleep(5) - - except Exception as exception: - print(f"Error in speed_limit_filler: {exception}") - sentry.capture_exception(exception) - time.sleep(1) + previously_started = False + elif params_memory.get_bool("UpdateSpeedLimits"): + logger.process_speed_limits() + else: + time.sleep(5) if __name__ == "__main__": main() diff --git a/frogpilot/system/the_pond/assets/components/navigation/navigation_destination.js b/frogpilot/system/the_pond/assets/components/navigation/navigation_destination.js index 943e97034..a6f7ee6a9 100644 --- a/frogpilot/system/the_pond/assets/components/navigation/navigation_destination.js +++ b/frogpilot/system/the_pond/assets/components/navigation/navigation_destination.js @@ -782,7 +782,7 @@ function NavigationDestination({ if (fav) { removeFavorite(fav); } else { - showSnackbar("Couldnโ€™t find favorite entryโ€ฆ"); + showSnackbar("Couldn't find favorite entryโ€ฆ"); } } else { await favoriteDestination(); diff --git a/frogpilot/system/the_pond/assets/components/recordings/dashcam_routes.js b/frogpilot/system/the_pond/assets/components/recordings/dashcam_routes.js index f980791cc..74e0677a7 100644 --- a/frogpilot/system/the_pond/assets/components/recordings/dashcam_routes.js +++ b/frogpilot/system/the_pond/assets/components/recordings/dashcam_routes.js @@ -227,7 +227,7 @@ async function openOverlay(route) { downloadButton.onclick = () => { const link = document.createElement("a"); - const videoPath = `/video/${route.name}--${current}?camera=${selectedCamera}`; + const videoPath = `/video/${route.name}/combined?camera=${selectedCamera}`; link.href = videoPath; link.download = `${route.timestamp}-${selectedCamera}.mp4`; document.body.appendChild(link); @@ -251,8 +251,7 @@ async function openOverlay(route) { vid.load(); vid.play(); } catch (error) { - showSnackbar("Error: Could not load all route segments.", "error"); - segments = [`/video/${route.name}--0`]; + showSnackbar("Error: Could not load combined route video.", "error"); } })(); @@ -271,8 +270,7 @@ async function openOverlay(route) { overlay.querySelectorAll(".camera-button").forEach(btn => btn.classList.remove("active")); e.target.classList.add("active"); selectedCamera = e.target.dataset.camera; - const videoPath = segments[current].includes("?") ? `${segments[current]}&camera=${selectedCamera}` : `${segments[current]}?camera=${selectedCamera}` - vid.src = videoPath; + vid.src = segments[current].includes("?") ? `${segments[current]}&camera=${selectedCamera}` : `${segments[current]}?camera=${selectedCamera}`; vid.load(); vid.play(); }); diff --git a/frogpilot/system/the_pond/assets/components/router.js b/frogpilot/system/the_pond/assets/components/router.js index 8cd66f0bc..361496da4 100644 --- a/frogpilot/system/the_pond/assets/components/router.js +++ b/frogpilot/system/the_pond/assets/components/router.js @@ -12,6 +12,7 @@ import { ScreenRecordings } from "/assets/components/recordings/screen_recording import { Sidebar } from "/assets/components/sidebar.js" import { SpeedLimits } from "/assets/components/tools/speed_limits.js" import { TailscaleControl } from "/assets/components/tailscale/tailscale.js" +import { ThemeMaker } from "/assets/components/tools/theme_maker.js" import { TmuxLog } from "/assets/components/tools/tmux.js" import { ToggleControl } from "/assets/components/tools/toggles.js" import { TSKManager } from "/assets/components/tools/tsk_manager.js" @@ -39,6 +40,7 @@ function Root() { createRoute("settings", "/settings/:section/:subsection?", SettingsView), createRoute("speed_limits", "/download_speed_limits", SpeedLimits), createRoute("tailscale", "/manage_tailscale", TailscaleControl), + createRoute("thememaker", "/theme_maker", ThemeMaker), createRoute("tmux", "/manage_tmux", TmuxLog), createRoute("toggles", "/manage_toggles", ToggleControl), createRoute("tsk_manager", "/tsk_manager", TSKManager), diff --git a/frogpilot/system/the_pond/assets/components/sidebar.js b/frogpilot/system/the_pond/assets/components/sidebar.js index efb1cf849..bd23d0519 100644 --- a/frogpilot/system/the_pond/assets/components/sidebar.js +++ b/frogpilot/system/the_pond/assets/components/sidebar.js @@ -21,6 +21,7 @@ const MenuItems = { { name: "Download Speed Limits", link: "/download_speed_limits", icon: "bi-download" }, { name: "Error Logs", link: "/manage_error_logs", icon: "bi-exclamation-triangle" }, { name: "Lock/Unlock Doors", link: "/lock_or_unlock_doors", icon: "bi-door-closed" }, + { name: "Theme Maker", link: "/theme_maker", icon: "bi-palette-fill" }, { name: "Tmux Log", link: "/manage_tmux", icon: "bi-terminal" }, { name: "Toggles", link: "/manage_toggles", icon: "bi-toggle-on" }, { name: "Toyota Security Keys", link: "/tsk_manager", icon: "bi-key-fill" }, diff --git a/frogpilot/system/the_pond/assets/components/tools/theme_maker.css b/frogpilot/system/the_pond/assets/components/tools/theme_maker.css new file mode 100644 index 000000000..2f0efa6c8 --- /dev/null +++ b/frogpilot/system/the_pond/assets/components/tools/theme_maker.css @@ -0,0 +1,720 @@ +.apply-button { + background-color: var(--accent-bg); + border: none; + border-radius: var(--border-radius-lg); + color: var(--text-color); + cursor: pointer; + font-size: var(--font-size-base); + font-weight: var(--font-weight-bold); + overflow: hidden; + padding: 0.75rem 1.5rem; + transition: background-color var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast); + white-space: nowrap; + width: auto; +} + +.apply-button:hover { + background-color: var(--accent-hover-bg); + box-shadow: var(--shadow-md); + transform: var(--hover-scale-sm); +} + +.checklist-container { + display: flex; + flex-direction: column; + gap: var(--gap-sm); + margin-top: var(--margin-base); +} + +.checklist-item { + align-items: center; + background-color: var(--input-bg); + border-radius: var(--border-radius-md); + cursor: pointer; + display: flex; + overflow: hidden; + padding: var(--padding-sm); + transition: background-color var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast); +} + +.checklist-item .custom-checkbox { + background-color: var(--color-gray-600); + border-radius: 13px; + flex-shrink: 0; + height: 26px; + position: relative; + transition: background-color var(--transition-fast); + width: 50px; +} + +.checklist-item .custom-checkbox::before { + background-color: var(--color-white); + border-radius: 50%; + content: ""; + height: 20px; + left: 4px; + position: absolute; + top: 3px; + transition: transform var(--transition-fast); + width: 20px; +} + +.checklist-item .label-text { + color: var(--text-color); + flex-grow: 1; + font-weight: var(--font-weight-demi-bold); + padding-left: var(--padding-sm); + text-align: left; +} + +.checklist-item:hover { + background-color: var(--main-fg); + box-shadow: var(--shadow-sm); + transform: var(--hover-scale-sm); +} + +.checklist-item input[type="checkbox"] { + display: none; +} + +.checklist-item input[type="checkbox"]:checked ~ .custom-checkbox { + background-color: var(--success-bg); +} + +.checklist-item input[type="checkbox"]:checked ~ .custom-checkbox::before { + transform: translateX(24px); +} + +.color-label input[type="color"] { + appearance: none; + background-color: transparent; + border: none; + border-radius: 50%; + cursor: pointer; + height: 40px; + overflow: hidden; + transition: box-shadow var(--transition-fast); + width: 40px; +} + +.color-label input[type="color"]::-moz-color-swatch { + border: var(--border-width-base) solid var(--text-color); + border-radius: 50%; +} + +.color-label input[type="color"]::-webkit-color-swatch { + border: var(--border-width-base) solid var(--text-color); + border-radius: 50%; +} + +.color-label:hover input[type="color"] { + box-shadow: 0 0 8px var(--thumb-color); +} + +.color-section, +.upload-section { + display: grid; + gap: var(--gap-md); + grid-template-columns: 1fr; +} + +.delete-theme-button { + background: none; + border: none; + color: var(--danger-fg); + cursor: pointer; + font-size: 1.2rem; + padding: 0 0.5rem; + transition: color var(--transition-fast), transform 0.2s; +} + +.delete-theme-button:hover { + color: var(--danger-hover-bg); + transform: scale(1.2); +} + +.discord-username-input { + background-color: var(--input-bg); + border: var(--border-style-input); + border-radius: var(--border-radius-base); + box-sizing: border-box; + color: var(--text-color); + margin-top: var(--border-radius-lg); + padding: var(--padding-sm); + transition: border-color var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast); + width: 100%; +} + +.download-theme-button { + background: none; + border: none; + color: var(--color-confirm); + cursor: pointer; + font-size: 1.2rem; + padding: 0 0.5rem; + transition: color var(--transition-fast), transform 0.2s; +} + +.download-theme-button:hover { + color: var(--color-confirm-hover); + transform: scale(1.2); +} + +.file-clear-button { + background: none; + border: none; + color: var(--danger-fg); + cursor: pointer; + font-size: 1rem; + padding: 0 0.4rem; + flex-shrink: 0; + transition: color var(--transition-fast), transform 0.2s; +} +.file-clear-button:hover { + color: var(--danger-hover-bg); + transform: scale(1.1); +} + +.file-name-display { + color: var(--text-muted); + flex-grow: 1; + font-size: 0.9em; + font-style: italic; + margin-right: var(--margin-sm); + min-width: 0; + overflow: hidden; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +label.file-upload-button { + background-color: var(--success-bg); + border-radius: var(--border-radius-sm); + color: var(--text-color); + cursor: pointer; + flex-shrink: 0; + font-size: 0.9em; + padding: 0.3rem 0.6rem; + transition: background-color 0.2s, color 0.2s; + white-space: nowrap; +} + +.file-upload-input { + display: none; +} + +.file-upload-label { + align-items: center; + background-color: var(--secondary-bg); + border-radius: var(--border-radius-md); + display: flex; + min-height: 2.5rem; + overflow: hidden; + padding: var(--padding-sm); + transition: background-color 0.2s, box-shadow var(--transition-fast), transform var(--transition-fast); +} + +.file-upload-label:hover { + background-color: var(--main-fg); + box-shadow: var(--shadow-sm); + transform: var(--hover-scale-sm); +} + +.file-upload-label:hover .file-upload-button { + background-color: var(--sidebar-bg); + color: var(--text-color); +} + +.file-upload-text { + color: var(--text-color); + flex-shrink: 0; + font-weight: var(--font-weight-demi-bold); + margin-right: var(--margin-sm); + white-space: nowrap; +} + +.help-icon { + background-color: var(--main-fg); + border-radius: 50%; + color: var(--text-color); + cursor: pointer; + display: inline-block; + font-weight: bold; + height: 1.2em; + line-height: 1.2em; + margin-left: 0.5em; + text-align: center; + transition: background-color var(--transition-fast), transform var(--transition-fast); + width: 1.2em; +} + +.help-icon:hover { + background-color: var(--success-hover-bg); + transform: var(--hover-scale-sm); +} + +.manage-themes-button { + background-color: var(--color-confirm); + border: none; + border-radius: var(--border-radius-lg); + color: var(--text-color); + cursor: pointer; + font-size: var(--font-size-base); + font-weight: var(--font-weight-bold); + overflow: hidden; + padding: 0.75rem 1.5rem; + transition: background-color var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast); + white-space: nowrap; + width: auto; +} + +.manage-themes-button:hover { + background-color: var(--color-confirm-hover); + box-shadow: var(--shadow-md); + transform: var(--hover-scale-sm); +} + +.manage-themes-modal { + animation: modalFadeIn 0.3s ease; + max-width: var(--width-xl); + overflow-x: hidden; +} + +.manage-themes-tabs { + border: 1px solid var(--sidebar-border-color); + border-radius: var(--border-radius-md); + display: flex; + margin-bottom: 1rem; + overflow-x: hidden; + overflow-y: hidden; +} + +.save-button { + background-color: var(--success-bg); + border: none; + border-radius: var(--border-radius-lg); + color: var(--text-color); + cursor: pointer; + font-size: var(--font-size-base); + font-weight: var(--font-weight-bold); + overflow: hidden; + padding: 0.75rem 1.5rem; + transition: background-color var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast); + white-space: nowrap; + width: auto; +} + +.save-button:hover { + background-color: var(--success-hover-bg); + box-shadow: var(--shadow-md); + transform: var(--hover-scale-sm); +} + +.save-button-wrapper { + display: flex; + gap: var(--gap-md); + justify-content: center; + margin-top: var(--margin-lg); +} + +.signal-type-toggle { + display: flex; + gap: var(--gap-sm); +} + +.submit-button { + background-color: var(--accent-bg); + border: none; + border-radius: var(--border-radius-lg); + color: var(--text-color); + cursor: pointer; + font-size: var(--font-size-base); + font-weight: var(--font-weight-bold); + overflow: hidden; + padding: 0.75rem 1.5rem; + transition: background-color var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast); + white-space: nowrap; + width: auto; +} + +.submit-button:hover { + background-color: var(--accent-hover-bg); + box-shadow: var(--shadow-md); + transform: var(--hover-scale-sm); +} + +.tab-button { + background-color: var(--input-bg); + border: none; + color: var(--text-color); + cursor: pointer; + flex: 1; + font-weight: var(--font-weight-demi-bold); + padding: 0.75rem; + transition: background-color var(--transition-fast), box-shadow var(--transition-fast), color var(--transition-fast), transform var(--transition-fast); + white-space: nowrap; +} + +.tab-button.active { + background-color: var(--main-fg); + color: white; +} + +.tab-button:not(:last-child) { + border-right: 1px solid var(--sidebar-border-color); +} + +.tab-button:not(.active):hover { + background-color: var(--main-fg); + box-shadow: var(--shadow-sm); + transform: var(--hover-scale-sm); +} + +.theme-button { + background: none; + border: none; + color: var(--text-color); + cursor: pointer; + flex-grow: 1; + font-weight: var(--font-weight-demi-bold); + text-align: left; + transition: color var(--transition-fast); +} + +.theme-button:hover { + color: var(--text-color); +} + +.theme-item { + align-items: center; + background-color: var(--input-bg); + cursor: pointer; + display: flex; + justify-content: space-between; + padding: 0.75rem; + transition: background-color var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast); +} + +.theme-item:not(:last-child) { + border-bottom: 1px solid var(--sidebar-border-color); +} + +.theme-item:hover { + background-color: var(--main-fg); + box-shadow: var(--shadow-sm); + transform: var(--hover-scale-sm); +} + +.theme-maker-container { + display: flex; + justify-content: center; +} + +.theme-maker-form { + display: flex; + flex-direction: column; + gap: var(--gap-md); + width: 100%; +} + +.theme-maker-form .color-label { + align-items: center; + background-color: var(--secondary-bg); + border-radius: var(--border-radius-md); + color: var(--text-color); + cursor: pointer; + display: flex; + font-weight: var(--font-weight-demi-bold); + justify-content: space-between; + padding: var(--padding-sm); + transition: box-shadow var(--transition-fast), transform var(--transition-fast); +} + +.theme-maker-form .color-label:hover { + box-shadow: var(--shadow-sm); + transform: var(--hover-scale-sm); +} + +.theme-maker-main-title { + background-color: var(--input-bg); + border-radius: var(--border-radius-lg); + box-shadow: var(--shadow-sm); + box-sizing: border-box; + color: var(--text-color); + font-size: var(--font-size-lg); + font-weight: var(--font-weight-bold); + margin-bottom: var(--margin-base); + padding: var(--padding-sm); + text-align: center; + width: 100%; +} + +.theme-maker-main-widget { + background-color: var(--secondary-bg); + border-radius: var(--border-radius-lg); + box-shadow: var(--shadow-md); + color: var(--main-fg); + display: flex; + flex-direction: column; + margin-top: var(--padding-xl); + max-width: var(--width-xxxxl); + padding: var(--padding-lg); + transition: box-shadow var(--transition-fast), transform var(--transition-fast); + width: 100%; +} + +.theme-maker-main-widget:hover { + transform: var(--hover-scale-sm); +} + +.theme-maker-sub-widgets { + display: flex; + flex-wrap: wrap; + gap: var(--gap-lg); + justify-content: space-between; +} + +.theme-maker-title { + background-color: var(--main-fg); + border-radius: var(--border-radius-md); + color: var(--text-color); + font-size: var(--font-size-lg); + font-weight: var(--font-weight-bold); + margin: 0 auto var(--margin-base); + padding: var(--padding-sm) var(--padding-lg); + text-align: center; +} + +.theme-maker-widget { + background-color: var(--input-bg); + border-radius: var(--border-radius-md); + flex: 1 1 var(--width-md); + overflow: visible; + padding: var(--padding-base); + transition: box-shadow var(--transition-fast), transform var(--transition-fast); +} + +.theme-maker-widget:hover { + box-shadow: var(--shadow-md); + transform: var(--hover-scale-sm); +} + +.theme-name-label { + color: var(--text-color); + display: block; + font-size: var(--font-size-sm); + font-weight: var(--font-weight-bold); + margin-bottom: var(--margin-xs); +} + +.theme-name-section { + box-sizing: border-box; + margin-bottom: var(--margin-lg); + width: 100%; +} + +.themes-list { + border: 1px solid var(--sidebar-border-color); + border-radius: var(--border-radius-md); + max-height: 300px; + overflow-x: hidden; + overflow-y: auto; +} + +.toggle-button { + background-color: var(--secondary-bg); + border: none; + border-radius: var(--border-radius-md); + color: var(--text-color); + cursor: pointer; + flex: 1; + font-size: var(--font-size-base); + font-weight: var(--font-weight-normal); + padding: var(--padding-sm); + transition: background-color var(--transition-fast), box-shadow var(--transition-fast), color var(--transition-fast), transform var(--transition-fast); +} + +.toggle-button.active { + background-color: var(--main-fg); + color: var(--text-color); + font-weight: var(--font-weight-demi-bold); +} + +.toggle-button:not(.active):hover { + background-color: var(--main-fg); + box-shadow: var(--shadow-md); + font-weight: var(--font-weight-demi-bold); + transform: var(--hover-scale-sm); +} + +.turn-signal-help-text { + background-color: var(--secondary-bg); + border-radius: var(--border-radius-md); + margin-top: 0.5em; + padding: 0.5em; +} + +.turn-signal-help-text p { + font-weight: normal; + margin: 0.25em 0; +} + +.turn-signal-input { + -moz-appearance: textfield; + background-color: var(--secondary-bg); + border: none; + border-radius: var(--border-radius-md); + box-sizing: border-box; + color: var(--text-color); + font-size: var(--font-size-base); + padding: var(--padding-sm); + transition: box-shadow var(--transition-fast), transform var(--transition-fast); + width: 100%; +} + +.turn-signal-input::-webkit-inner-spin-button, +.turn-signal-input::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0; +} + +.turn-signal-label { + font-size: var(--font-size-base); + font-weight: var(--font-weight-demi-bold); +} + +.turn-signal-length-section, +.turn-signal-style-section { + display: flex; + flex-direction: column; + gap: var(--gap-xs); +} + +#themeName, +#submitThemeName { + background-color: var(--input-bg); + border: var(--border-style-input); + border-radius: var(--border-radius-sm); + box-sizing: border-box; + color: var(--text-color); + font-size: var(--font-size-sm); + padding: var(--padding-sm); + transition: border-color var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast); + width: 100%; +} + +#themeName:focus, +#themeName:hover, +#submitThemeName:focus, +#submitThemeName:hover, +.discord-username-input:focus, +.discord-username-input:hover, +.turn-signal-input:focus, +.turn-signal-input:hover { + border-color: var(--thumb-color); + box-shadow: 0 0 0 2px var(--thumb-color), 0 0 8px var(--thumb-color); + outline: none; + transform: var(--hover-scale-sm); +} + +.sequence-order-button { + background-color: var(--main-fg); + border: none; + border-radius: var(--border-radius-md); + color: var(--text-color); + cursor: pointer; + font-size: var(--font-size-base); + font-weight: var(--font-weight-demi-bold); + margin-top: var(--margin-sm); + padding: var(--padding-sm) var(--padding-base); + text-align: center; + transition: background-color var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast); + width: 100%; +} + +.sequence-order-button:hover { + background-color: var(--main-fg); + box-shadow: var(--shadow-md); + transform: var(--hover-scale-sm); +} + +.draggable-list { + list-style-type: none; + padding: 0; +} + +.draggable-item { + align-items: center; + background-color: var(--input-bg); + border: 1px solid var(--sidebar-border-color); + border-radius: var(--border-radius-sm); + cursor: move; + display: flex; + margin-bottom: 5px; + padding: 10px; + transition: background-color 0.2s, opacity 0.2s; + position: relative; +} + +.draggable-item.dragging { + opacity: 0.5; + background-color: var(--main-fg); +} + +.draggable-item:hover { + background-color: var(--main-fg); +} + +.draggable-item.drop-before::before, +.draggable-item.drop-after::after { + bottom: -2px; + content: ''; + position: absolute; + left: 0; + right: 0; + height: 2px; + background-color: var(--success-bg); +} + +.draggable-item.drop-before::before { + top: -2px; +} + +.sequential-image-preview { + width: 50px; + height: 50px; + object-fit: contain; + margin-right: 10px; + vertical-align: middle; +} + +@keyframes modalFadeIn { + from { opacity: 0; transform: scale(0.95); } + to { opacity: 1; transform: scale(1); } +} + +@media only screen and (max-width: 768px) and (orientation: portrait) { + .manage-themes-tabs { + flex-wrap: wrap; + } + + .manage-themes-tabs .tab-button { + border-bottom: 1px solid var(--sidebar-border-color); + border-right: 1px solid var(--sidebar-border-color); + flex: 1 0 33.333%; + } + + .manage-themes-tabs .tab-button:nth-child(3n) { + border-right: none; + } + + .save-button-wrapper { + flex-wrap: wrap; + } + + .save-button-wrapper > button { + flex-basis: calc(50% - 1rem); + margin-bottom: var(--gap-sm); + } +} diff --git a/frogpilot/system/the_pond/assets/components/tools/theme_maker.js b/frogpilot/system/the_pond/assets/components/tools/theme_maker.js new file mode 100644 index 000000000..86a474f5e --- /dev/null +++ b/frogpilot/system/the_pond/assets/components/tools/theme_maker.js @@ -0,0 +1,1454 @@ +import { html, reactive } from "https://esm.sh/@arrow-js/core"; +import { Modal } from "/assets/components/modal.js"; + +const defaultColors = { + LaneLines: { red: 23, green: 134, blue: 68, alpha: 255 }, + LeadMarker: { red: 23, green: 134, blue: 68, alpha: 255 }, + Path: { red: 23, green: 134, blue: 68, alpha: 255 }, + PathEdge: { red: 18, green: 107, blue: 54, alpha: 255 }, + Sidebar1: { red: 23, green: 134, blue: 68, alpha: 255 }, + Sidebar2: { red: 23, green: 134, blue: 68, alpha: 255 }, + Sidebar3: { red: 23, green: 134, blue: 68, alpha: 255 }, +}; + +const COLOR_LABELS = { + LaneLines: "Lane Lines", + LeadMarker: "Lead Marker", + Path: "Path", + PathEdge: "Path Edge", + Sidebar1: "Sidebar Top", + Sidebar2: "Sidebar Middle", + Sidebar3: "Sidebar Bottom", +}; + +const ICON_LABELS = { + homeButton: "Home Button", + settingsButton: "Settings Button", +}; + +const SOUND_DEFINITIONS = [ + { key: "disengage", label: "Disengage Sound" }, + { key: "engage", label: "Engage Sound" }, + { key: "prompt", label: "Prompt Sound" }, + { key: "startup", label: "Startup Sound" }, +]; + +const fileStore = { + images: { distanceIcons: {} }, + sounds: {}, + sequentialFiles: [], +}; + +const state = reactive({ + themeName: "", + discordUsername: "", + downloadable: { + colors: [], + distance_icons: [], + icons: [], + signals: [], + sounds: [], + wheels: [] + }, + turnSignalStyle: "Static", + turnSignalLength: 100, + turnSignalType: "Single Image", + sequentialImages: [], + selectorAction: null, + isApplying: false, + isSaving: false, + isSubmitting: false, + isLoadingAsset: false, + themeSubmitted: false, + colors: { ...defaultColors }, + imageFileNames: { + homeButton: "", + settingsButton: "", + steeringWheel: "", + turnSignal: "", + turnSignalBlindspot: "", + distanceIcons: { + traffic: "", + aggressive: "", + standard: "", + relaxed: "", + }, + }, + soundFileNames: { + startup: "", + prompt: "", + engage: "", + disengage: "", + }, + saveChecklist: { + colors: false, + distance_icons: false, + icons: false, + sounds: false, + turn_signals: false, + steering_wheel: false, + }, + showTurnSignalHelp: false, + showSubmitConfirmation: false, + showSaveConfirmModal: false, + showApplyConfirmModal: false, + showManageThemesModal: false, + showSequenceOrderModal: false, + showDeleteConfirmModal: false, + themeToDelete: null, + themes: [], + activeTab: "colors" +}); + +let draggedIndex = -1; +let dropIndex = -1; + +function handleDragStart(e, index) { + draggedIndex = index; + e.dataTransfer.effectAllowed = "move"; + e.dataTransfer.setData("text/plain", String(index)); + e.target.style.opacity = "0.5"; +} + +function handleDragOver(e, index) { + e.preventDefault(); + const target = e.target.closest(".draggable-item"); + if (target) { + const rect = target.getBoundingClientRect(); + const isAfter = e.clientY > rect.top + rect.height / 2; + target.classList.toggle("drop-after", isAfter); + target.classList.toggle("drop-before", !isAfter); + dropIndex = isAfter ? index + 1 : index; + } +} + +function handleDrop(e) { + e.preventDefault(); + document.querySelectorAll(".draggable-item").forEach(el => { + el.classList.remove("drop-before", "drop-after"); + }); + + if (draggedIndex !== -1 && dropIndex !== -1 && draggedIndex !== dropIndex) { + const move = (arr, from, to) => { + const a = [...arr]; + const [m] = a.splice(from, 1); + const insertAt = from < to ? to - 1 : to; + a.splice(insertAt, 0, m); + return a; + }; + state.sequentialImages = move(state.sequentialImages, draggedIndex, dropIndex); + fileStore.sequentialFiles = move(fileStore.sequentialFiles, draggedIndex, dropIndex); + } + + draggedIndex = -1; + dropIndex = -1; +} + +function handleDragLeave(e) { + const target = e.target.closest(".draggable-item"); + if (target) target.classList.remove("drop-before", "drop-after"); +} + +function handleDragEnd(e) { + e.target.style.opacity = "1"; + draggedIndex = -1; + dropIndex = -1; + document.querySelectorAll(".draggable-item").forEach(item => { + item.classList.remove("drop-before", "drop-after"); + }); +} + +const clearAsset = (type, key, subkey = null) => { + state.themeSubmitted = false; + if (key === "turnSignal") { + if (state.turnSignalType === "Sequential") { + fileStore.sequentialFiles = []; + state.sequentialImages = []; + state.imageFileNames.turnSignal = ""; + } else { + fileStore.images.turnSignal = undefined; + state.imageFileNames.turnSignal = ""; + } + return; + } + const store = type === "image" ? fileStore.images : fileStore.sounds; + const nameState = type === "image" ? state.imageFileNames : state.soundFileNames; + if (subkey) { + if (store[key]) store[key][subkey] = undefined; + if (nameState[key]) nameState[key][subkey] = ""; + } else { + store[key] = undefined; + nameState[key] = ""; + } +}; + +const onClearClick = (e, type, key, subkey = null) => { + e.preventDefault(); + e.stopPropagation(); + clearAsset(type, key, subkey); + const input = e.currentTarget.parentElement.querySelector('input[type="file"]'); + if (input) input.value = ""; +}; + +const clearAssetType = (assetType) => { + if (assetType === "colors") { + state.colors = { ...defaultColors }; + } + if (assetType === "distance_icons") { + ["traffic", "aggressive", "standard", "relaxed"].forEach(sub => { + if (!fileStore.images.distanceIcons) fileStore.images.distanceIcons = {}; + fileStore.images.distanceIcons[sub] = undefined; + state.imageFileNames.distanceIcons[sub] = ""; + }); + } + if (assetType === "icons") { + ["homeButton", "settingsButton"].forEach(k => { + fileStore.images[k] = undefined; + state.imageFileNames[k] = ""; + }); + } + if (assetType === "steering_wheel") { + fileStore.images.steeringWheel = undefined; + state.imageFileNames.steeringWheel = ""; + } + if (assetType === "sounds") { + Object.keys(state.soundFileNames).forEach(k => { + fileStore.sounds[k] = undefined; + state.soundFileNames[k] = ""; + }); + } + if (assetType === "turn_signals") { + fileStore.images.turnSignal = undefined; + fileStore.images.turnSignalBlindspot = undefined; + state.imageFileNames.turnSignal = ""; + state.imageFileNames.turnSignalBlindspot = ""; + fileStore.sequentialFiles = []; + state.sequentialImages = []; + } +}; + +const populateAssetNames = (themeData = {}) => { + const { images = {}, sounds = {} } = themeData; + const { distanceIcons = {} } = images; + + for (const key in state.imageFileNames) { + if (key === "distanceIcons") { + for (const subkey in state.imageFileNames.distanceIcons) { + state.imageFileNames.distanceIcons[subkey] = (distanceIcons[subkey] || "").split("/").pop(); + } + } else { + state.imageFileNames[key] = (images[key] || "").split("/").pop(); + } + } + + for (const key in state.soundFileNames) { + state.soundFileNames[key] = (sounds[key] || "").split("/").pop(); + } +}; + +const isThemeAssetEmpty = () => { + const hasNewFiles = + Object.values(fileStore.images).some(val => { + if (!val) return false; + return typeof val === "object" && !(val instanceof File) ? Object.values(val).some(f => f) : true; + }) || + Object.values(fileStore.sounds).some(file => file) || + fileStore.sequentialFiles.length > 0; + + if (hasNewFiles) return false; + + const hasExistingFileNames = + Object.values(state.imageFileNames).some(val => { + if (!val) return false; + return typeof val === "object" ? Object.values(val).some(name => name) : val; + }) || + Object.values(state.soundFileNames).some(name => name) || + state.sequentialImages.length > 0; + + return !hasExistingFileNames; +}; + +const loadDefaultTheme = async () => { + try { + const response = await fetch("/api/themes/default"); + const data = await response.json(); + + if (data.colors) { + state.colors = data.colors; + } + + if (data.images) { + if (data.images.homeButton) { + state.imageFileNames.homeButton = data.theme_names.icons || "Active"; + } + if (data.images.settingsButton) { + state.imageFileNames.settingsButton = data.theme_names.icons || "Active"; + } + if (data.images.steeringWheel) { + state.imageFileNames.steeringWheel = data.theme_names.steeringWheel || "Active"; + } + if (data.images.turnSignal) { + state.imageFileNames.turnSignal = data.theme_names.turnSignals || "Active"; + } + if (data.images.turnSignalBlindspot) { + state.imageFileNames.turnSignalBlindspot = data.theme_names.turnSignals || "Active"; + } + if (data.images.distanceIcons) { + for (const key in data.images.distanceIcons) { + if (data.images.distanceIcons[key]) { + state.imageFileNames.distanceIcons[key] = data.theme_names.distanceIcons || "Active"; + } + } + } + } + + if (data.sounds) { + for (const key in data.sounds) { + if (data.sounds[key]) { + state.soundFileNames[key] = data.theme_names.sounds || "Active"; + } + } + } + + if (data.turnSignalLength) { + state.turnSignalLength = data.turnSignalLength; + } + + if (data.turnSignalStyle) { + state.turnSignalStyle = data.turnSignalStyle; + } + + if (data.turnSignalType) { + state.turnSignalType = data.turnSignalType; + } + + if (data.sequentialImages && data.sequentialImages.length > 0) { + state.sequentialImages = data.sequentialImages; + state.imageFileNames.turnSignal = data.theme_names.turnSignals || "Active"; + } + + const fetchActive = async (relPath) => { + const res = await fetch(`/api/themes/asset/__active__/${relPath}?type=active`); + if (!res.ok) return null; + const blob = await res.blob(); + return new File([blob], relPath.split("/").pop(), { type: blob.type }); + }; + + if (data.images?.turnSignal) { + const f = await fetchActive(`signals/${data.images.turnSignal}`); + if (f) fileStore.images.turnSignal = f; + } + + if (data.images?.turnSignalBlindspot) { + const f = await fetchActive(`signals/${data.images.turnSignalBlindspot}`); + if (f) fileStore.images.turnSignalBlindspot = f; + } + + fileStore.sequentialFiles = []; + if (Array.isArray(data.sequentialImages) && data.sequentialImages.length) { + for (const img of data.sequentialImages) { + const f = await fetchActive(`signals/${img}`); + if (f) fileStore.sequentialFiles.push(f); + } + } + + if (data.images?.distanceIcons) { + if (!fileStore.images.distanceIcons) fileStore.images.distanceIcons = {}; + for (const [k, v] of Object.entries(data.images.distanceIcons)) { + const f = await fetchActive(`distance_icons/${v}`); + if (f) fileStore.images.distanceIcons[k] = f; + } + } + + if (data.images?.homeButton) { + const f = await fetchActive(`icons/${data.images.homeButton}`); + if (f) fileStore.images.homeButton = f; + } + + if (data.images?.settingsButton) { + const f = await fetchActive(`icons/${data.images.settingsButton}`); + if (f) fileStore.images.settingsButton = f; + } + + if (data.images?.steeringWheel) { + const f = await fetchActive(`steering_wheel/${data.images.steeringWheel}`); + if (f) fileStore.images.steeringWheel = f; + } + + if (data.sounds) { + for (const [k, v] of Object.entries(data.sounds)) { + const f = await fetchActive(`sounds/${v}`); + if (f) fileStore.sounds[k] = f; + } + } + } catch (error) { + console.error("Failed to load default theme:", error); + showSnackbar("Failed to load default theme.", "error"); + } +}; + +const fetchDownloadables = async () => { + const keys = { + colors: "DownloadableColors", + distance_icons: "DownloadableDistanceIcons", + icons: "DownloadableIcons", + signals: "DownloadableSignals", + sounds: "DownloadableSounds", + wheels: "DownloadableWheels" + }; + const parseList = s => (s || "").split(",").map(v => v.trim()).filter(Boolean); + for (const [slot, param] of Object.entries(keys)) { + const r = await fetch(`/api/params?key=${encodeURIComponent(param)}`); + const txt = await r.text(); + state.downloadable[slot] = parseList(txt); + } +}; + + +(async () => { + try { + const response = await fetch("/api/params?key=DiscordUsername"); + state.discordUsername = await response.text(); + await loadDefaultTheme(); + await fetchDownloadables(); + + } catch {} +})(); + +export function ThemeMaker() { + const normalize = (str) => (str || "") + .toString() + .trim() + .toLowerCase() + .replace(/[^a-z0-9]+/g, " ") + .replace(/\s+/g, " ") + .trim(); + + const isDownloadable = (tab, name) => { + const map = { colors: "colors", distance_icons: "distance_icons", icons: "icons", sounds: "sounds", steering_wheel: "wheels", turn_signals: "signals" }; + const key = map[tab] || tab; + const list = state.downloadable[key] || []; + const target = normalize(name); + return list.some(v => normalize(v) === target); + }; + + const sortThemesAlphabetically = () => { + state.themes.sort((a, b) => { + const an = (a?.name || "").toString(); + const bn = (b?.name || "").toString(); + return an.localeCompare(bn, undefined, { sensitivity: "base", numeric: true }); + }); + }; + + + + const hasDistanceIcons = () => Object.values(fileStore.images.distanceIcons).some(f => f) || Object.values(state.imageFileNames.distanceIcons).some(name => name); + const hasIcons = () => ["homeButton", "settingsButton"].some(key => fileStore.images[key] || state.imageFileNames[key]); + const hasSounds = () => Object.values(fileStore.sounds).some(f => f) || Object.values(state.soundFileNames).some(name => name); + const hasTurnSignals = () => fileStore.images.turnSignal || state.imageFileNames.turnSignal || fileStore.images.turnSignalBlindspot || state.imageFileNames.turnSignalBlindspot || fileStore.sequentialFiles.length > 0 || state.sequentialImages.length > 0; + const hasSteeringWheel = () => fileStore.images.steeringWheel || state.imageFileNames.steeringWheel; + + const handleFileUpload = (e, type, key, subkey = null) => { + const { files } = e.target; + if (files.length === 0) return; + + for (const file of files) { + if (key === "turnSignal" && state.turnSignalType === "Sequential" && file.type === "image/gif") { + showSnackbar("GIFs are not supported for sequential turn signals...", "error"); + e.target.value = ""; + return; + } + if (file.size > 5 * 1024 * 1024) { + showSnackbar(`File ${file.name} is too large! Please upload files under 5MB.`, "error"); + e.target.value = ""; + return; + } + + if (!file.type.startsWith(`${type}/`)) { + showSnackbar(`Invalid file type! Please upload an ${type} file.`, "error"); + e.target.value = ""; + return; + } + } + + state.themeSubmitted = false; + + if (key === "turnSignal" && state.turnSignalType === "Sequential") { + fileStore.sequentialFiles.push(...files); + state.sequentialImages.push(...Array.from(files).map(file => file.name)); + state.imageFileNames.turnSignal = ""; + } else { + const file = files[0]; + const store = type === "image" ? fileStore.images : fileStore.sounds; + const nameState = type === "image" ? state.imageFileNames : state.soundFileNames; + + if (subkey) { + store[key][subkey] = file; + nameState[key][subkey] = file ? file.name : ""; + } else { + store[key] = file; + nameState[key] = file ? file.name : ""; + } + } + }; + + const handleColorChange = (e, key) => { + const hex = e.target.value; + state.colors[key] = { + red: parseInt(hex.slice(1, 3), 16), + green: parseInt(hex.slice(3, 5), 16), + blue: parseInt(hex.slice(5, 7), 16), + alpha: 255, + }; + state.themeSubmitted = false; + }; + + const validateTurnSignalLength = (e) => { + const value = parseInt(e.target.value, 10); + const clampedValue = isNaN(value) ? 25 : Math.max(25, Math.min(1000, value)); + state.turnSignalLength = clampedValue; + e.target.value = clampedValue; + }; + + const toggleTurnSignalType = (type) => { + state.turnSignalType = type; + state.themeSubmitted = false; + state.sequentialImages = []; + fileStore.sequentialFiles = []; + fileStore.images.turnSignal = undefined; + state.imageFileNames.turnSignal = ""; + }; + + const getFormData = () => { + const formData = new FormData(); + formData.append("themeName", state.themeName); + formData.append("saveChecklist", JSON.stringify(state.saveChecklist)); + + if (state.discordUsername && state.discordUsername.trim()) { + formData.append("discordUsername", state.discordUsername.trim()); + } + + if (state.saveChecklist.colors) { + formData.append("colors", JSON.stringify(state.colors)); + } + + if (state.saveChecklist.turn_signals) { + formData.append("turnSignalStyle", state.turnSignalStyle); + formData.append("turnSignalType", state.turnSignalType); + formData.append("turnSignalLength", state.turnSignalLength); + + if (state.turnSignalType === "Sequential") { + fileStore.sequentialFiles.forEach((file, index) => { + formData.append(`turn_signal_${index + 1}`, file); + }); + } + if (fileStore.images.turnSignal) { + formData.append("turnSignal", fileStore.images.turnSignal); + } + if (fileStore.images.turnSignalBlindspot) { + formData.append("turnSignalBlindspot", fileStore.images.turnSignalBlindspot); + } + } + + if (state.saveChecklist.icons) { + ["homeButton", "settingsButton"].forEach(key => { + if (fileStore.images[key]) formData.append(key, fileStore.images[key]); + }); + } + + if (state.saveChecklist.steering_wheel) { + if (fileStore.images.steeringWheel) formData.append("steeringWheel", fileStore.images.steeringWheel); + } + + if (state.saveChecklist.distance_icons) { + for (const subkey in fileStore.images.distanceIcons) { + const file = fileStore.images.distanceIcons[subkey]; + if (file) formData.append(`distanceIcons_${subkey}`, file); + } + } + + if (state.saveChecklist.sounds) { + for (const key in fileStore.sounds) { + if (fileStore.sounds[key]) formData.append(key, fileStore.sounds[key]); + } + } + return formData; + }; + + const performApiAction = async (url, options, successMessage, errorMessage) => { + try { + const response = await fetch(url, options); + const result = await response.json(); + const message = result.message || (response.ok ? successMessage : errorMessage); + if (message) { + showSnackbar(message, response.ok ? "success" : "error"); + } + return { ok: response.ok, result }; + } catch(e) { + showSnackbar(`An error occurred: ${errorMessage} (${e.message})`, "error"); + return { ok: false }; + } + }; + + const applyTheme = async () => { + if (!Object.values(state.saveChecklist).some(v => v)) { + return showSnackbar("Please select at least one component to apply!", "error"); + } + state.showApplyConfirmModal = false; + state.isApplying = true; + await performApiAction( + "/api/themes/apply", + { method: "POST", body: getFormData() }, + "Theme applied successfully!", + "Failed to apply theme." + ); + state.isApplying = false; + }; + + const saveTheme = async () => { + if (!state.themeName.trim()) { + return showSnackbar("Please enter a theme name!", "error"); + } + if (!Object.values(state.saveChecklist).some(v => v)) { + return showSnackbar("Please select at least one component to save!", "error"); + } + state.showSaveConfirmModal = false; + state.isSaving = true; + const { ok } = await performApiAction("/api/themes", { method: "POST", body: getFormData() }, "Theme saved successfully!", "Failed to save theme."); + if (ok) { + state.themeName = ""; + } + state.isSaving = false; + }; + + const submitTheme = async () => { + if (!state.discordUsername.trim()) { + return showSnackbar("Discord username is required for submission...", "error"); + } + if (!state.themeName.trim()) { + return showSnackbar("Please enter a theme name...", "error"); + } + if (!Object.values(state.saveChecklist).some(v => v)) { + return showSnackbar("Please select at least one component to submit!", "error"); + } + + state.isSubmitting = true; + state.showSubmitConfirmation = false; + + const { ok } = await performApiAction("/api/themes/submit", { method: "POST", body: getFormData() }, "Theme submitted successfully!", "Failed to submit theme."); + if (ok) { + state.themeSubmitted = true; + state.themeName = ""; + } + state.isSubmitting = false; + }; + + const confirmApply = () => { + state.saveChecklist = { + colors: false, + distance_icons: false, + icons: false, + sounds: false, + turn_signals: false, + steering_wheel: false, + }; + state.showApplyConfirmModal = true; + }; + + const confirmSave = () => { + state.saveChecklist = { + colors: false, + distance_icons: false, + icons: false, + sounds: false, + turn_signals: false, + steering_wheel: false, + }; + state.showSaveConfirmModal = true; + }; + + const confirmSubmit = () => { + if (state.themeSubmitted) { + return showSnackbar("This theme has already been submitted...", "error"); + } + if (isThemeAssetEmpty()) { + return showSnackbar("Cannot submit an empty theme...", "error"); + } + state.saveChecklist = { + colors: false, + distance_icons: false, + icons: false, + sounds: false, + turn_signals: false, + steering_wheel: false, + }; + state.showSubmitConfirmation = true; + }; + + const manageThemes = async () => { + const response = await fetch("/api/themes/list"); + const data = await response.json(); + state.themes = (data.themes || []).map(t => ({ + ...t, + localHasColors: !!t.hasColors, + localHasDistanceIcons: !!t.hasDistanceIcons, + localHasIcons: !!t.hasIcons, + localHasSounds: !!t.hasSounds, + localHasSteeringWheel: !!t.hasSteeringWheel, + localHasTurnSignals: !!t.hasTurnSignals, + })); + mergeDownloadablesIntoThemes(); + sortThemesAlphabetically(); + state.showManageThemesModal = true; + }; + + const mergeDownloadablesIntoThemes = () => { + const byName = new Map(); + const norm = (s) => (s || "") + .toString() + .trim() + .toLowerCase() + .replace(/[^a-z0-9]+/g, " ") + .replace(/\s+/g, " ") + .trim(); + + for (const t of state.themes) byName.set(norm(t.name), t); + + const tabToFlag = { + colors: "hasColors", + distance_icons: "hasDistanceIcons", + icons: "hasIcons", + sounds: "hasSounds", + steering_wheel: "hasSteeringWheel", + turn_signals: "hasTurnSignals" + }; + + const addIfMissing = (bucketKey, tabName) => { + const list = state.downloadable[bucketKey] || []; + for (const name of list) { + const key = norm(name); + if (!byName.has(key)) { + const t = { + name, + type: "holiday", + path: encodeURIComponent(name), + is_user_created: false + }; + for (const flag of Object.values(tabToFlag)) t[flag] = false; + t[tabToFlag[tabName]] = true; + state.themes.push(t); + byName.set(key, t); + } else { + const t = byName.get(key); + t[tabToFlag[tabName]] = true; + } + } + }; + + addIfMissing("colors", "colors"); + addIfMissing("distance_icons", "distance_icons"); + addIfMissing("icons", "icons"); + addIfMissing("sounds", "sounds"); + addIfMissing("wheels", "steering_wheel"); + addIfMissing("signals", "turn_signals"); + }; + + const refreshThemesAndDownloadables = async () => { + const r = await fetch("/api/themes/list"); + const data = await r.json(); + state.themes = (data.themes || []).map(t => ({ + ...t, + localHasColors: !!t.hasColors, + localHasDistanceIcons: !!t.hasDistanceIcons, + localHasIcons: !!t.hasIcons, + localHasSounds: !!t.hasSounds, + localHasSteeringWheel: !!t.hasSteeringWheel, + localHasTurnSignals: !!t.hasTurnSignals, + })); + mergeDownloadablesIntoThemes(); + sortThemesAlphabetically(); + await fetchDownloadables(); + }; + + const pollDownloadProgress = async () => { + return new Promise((resolve) => { + const timer = setInterval(async () => { + try { + const r = await fetch("/api/params_memory?key=ThemeDownloadProgress"); + const txt = (await r.text()) || ""; + if (!txt) return; + if (/Downloaded!/i.test(txt)) { + clearInterval(timer); + resolve({ ok: true, status: "done" }); + } else if (/failed|cancelled/i.test(txt)) { + clearInterval(timer); + resolve({ ok: false, status: txt }); + } + } catch {} + }, 1000); + }); + }; + + const startAssetDownload = async (tab, displayName) => { + if (!displayName) return; + state.isLoadingAsset = true; + try { + const res = await fetch("/api/themes/download_asset", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ component: tab, name: displayName }) + }); + if (!res.ok) { + showSnackbar("Unable to start download.", "error"); + state.isLoadingAsset = false; + return; + } + showSnackbar(`Downloading ${tab.replace('_', ' ')} for the "${displayName}" theme...`); + const result = await pollDownloadProgress(); + if (!result.ok) { + showSnackbar(`Download ${result.status}`, "error"); + state.isLoadingAsset = false; + return; + } + await refreshThemesAndDownloadables(); + const norm = s => (s || "").toString().trim().toLowerCase().replace(/[^a-z0-9]+/g, " ").replace(/\s+/g, " ").trim(); + const theme = state.themes.find(t => norm(t.name) === norm(displayName)); + if (theme) { + const tabToLocalFlag = { + colors: "localHasColors", + distance_icons: "localHasDistanceIcons", + icons: "localHasIcons", + sounds: "localHasSounds", + steering_wheel: "localHasSteeringWheel", + turn_signals: "localHasTurnSignals" + }; + const f = tabToLocalFlag[tab]; + if (f) theme[f] = true; + } + showSnackbar(`Downloaded ${tab.replace('_', ' ')} for "${displayName}".`); + } catch (e) { + showSnackbar("Unexpected error during download.", "error"); + } finally { + state.isLoadingAsset = false; + } + }; + + const loadThemeAsset = async (theme, assetType) => { + if (state.isLoadingAsset) return; + state.isLoadingAsset = true; + + clearAssetType(assetType); + + try { + const response = await fetch(`/api/themes/load/${theme.path}?type=${theme.type}`); + const data = await response.json(); + + const fetchAndStoreFile = async (assetPath, key, subkey = null, type = "image", assetGroup = "") => { + if (!assetPath) return; + try { + const url = `/api/themes/asset/${theme.path}/${assetPath}?type=${theme.type}`; + const fileResponse = await fetch(url); + const blob = await fileResponse.blob(); + const filename = assetPath.split("/").pop(); + const file = new File([blob], filename, { type: blob.type }); + + const store = type === "image" ? fileStore.images : fileStore.sounds; + if (subkey) { + store[key][subkey] = file; + } else { + store[key] = file; + } + } catch (err) { + console.error(`Failed to load file from ${assetPath}`, err); + } + }; + + if (assetType === "colors" && data.colors) { + state.colors = data.colors; + } + + if (assetType === "distance_icons" && data.images.distanceIcons) { + for (const [subkey, asset] of Object.entries(data.images.distanceIcons)) { + state.imageFileNames.distanceIcons[subkey] = theme.name; + await fetchAndStoreFile(asset.path, "distanceIcons", subkey, "image", "distance_icons"); + } + } + + if (assetType === "icons" && (data.images.homeButton || data.images.settingsButton)) { + if (data.images.homeButton) { + state.imageFileNames.homeButton = theme.name; + await fetchAndStoreFile(data.images.homeButton.path, "homeButton", null, "image", "icons"); + } + if (data.images.settingsButton) { + state.imageFileNames.settingsButton = theme.name; + await fetchAndStoreFile(data.images.settingsButton.path, "settingsButton", null, "image", "icons"); + } + } + + if (assetType === "steering_wheel" && theme.path) { + const url = `/api/themes/asset/${theme.path}/${data.images.steeringWheel.path}?type=${theme.type}`; + const fileResponse = await fetch(url); + const blob = await fileResponse.blob(); + const file = new File([blob], theme.path, { type: blob.type }); + fileStore.images.steeringWheel = file; + state.imageFileNames.steeringWheel = theme.name; + } + + if (assetType === "sounds" && Object.keys(data.sounds).length) { + for (const [key, asset] of Object.entries(data.sounds)) { + state.soundFileNames[key] = theme.name; + await fetchAndStoreFile(asset.path, key, null, "audio", "sounds"); + } + } + + if (assetType === "turn_signals") { + state.turnSignalLength = data.turnSignalLength; + state.turnSignalType = data.turnSignalType; + state.turnSignalStyle = data.turnSignalStyle || "Static"; + + state.imageFileNames.turnSignal = data.images.turnSignal?.filename ? theme.name : ""; + state.imageFileNames.turnSignalBlindspot = data.images.turnSignalBlindspot?.filename ? theme.name : ""; + + if (data.images.turnSignal) { + await fetchAndStoreFile(data.images.turnSignal.path, "turnSignal", null, "image", "signals"); + } + if (data.images.turnSignalBlindspot) { + await fetchAndStoreFile(data.images.turnSignalBlindspot.path, "turnSignalBlindspot", null, "image", "signals"); + } + + state.sequentialImages = data.sequentialImages || []; + fileStore.sequentialFiles = []; + + if (data.sequentialImages && data.sequentialImages.length > 0) { + state.imageFileNames.turnSignal = theme.name; + for (const img of data.sequentialImages) { + const url = `/api/themes/asset/${theme.path}/signals/${img}?type=${theme.type}`; + const fileResponse = await fetch(url); + const blob = await fileResponse.blob(); + const file = new File([blob], img, { type: blob.type }); + fileStore.sequentialFiles.push(file); + } + } + } + + showSnackbar(`Loaded ${assetType.replace("_", " ")} from "${theme.name}"!`); + } catch (err) { + console.error("Failed to load theme asset:", err); + showSnackbar("Failed to load theme asset.", "error"); + } finally { + state.isLoadingAsset = false; + } + }; + + const confirmDelete = (theme) => { + state.themeToDelete = theme; + state.showDeleteConfirmModal = true; + }; + + const deleteThemeAndRestoreDownloadables = (themeName) => { + const norm = (s) => (s || "") + .toString() + .trim() + .toLowerCase() + .replace(/[^a-z0-9]+/g, " ") + .replace(/\s+/g, " ") + .trim(); + + const flagToBucket = { + hasColors: "colors", + hasDistanceIcons: "distance_icons", + hasIcons: "icons", + hasSounds: "sounds", + hasSteeringWheel: "wheels", + hasTurnSignals: "signals" + }; + + const index = state.themes.findIndex((t) => norm(t.name) === norm(themeName)); + if (index === -1) return; + + const theme = state.themes[index]; + state.themes.splice(index, 1); + + const ensureInBucket = (bucket, name) => { + if (!state.downloadable[bucket]) state.downloadable[bucket] = []; + const exists = state.downloadable[bucket].some((n) => norm(n) === norm(name)); + if (!exists) state.downloadable[bucket].push(name); + }; + + for (const [flag, bucket] of Object.entries(flagToBucket)) { + if (theme[flag]) ensureInBucket(bucket, theme.name); + } + }; + + const deleteTheme = async () => { + const theme = state.themeToDelete; + if (!theme) return; + + const component = state.activeTab === "steering_wheel" + ? "" + : `&component=${state.activeTab === "turn_signals" ? "signals" : state.activeTab}`; + + const response = await fetch(`/api/themes/delete/${theme.path}?type=${theme.type}${component}`, { method: "DELETE" }); + const result = await response.json(); + if (response.ok) { + showSnackbar(result.message, "success"); + deleteThemeAndRestoreDownloadables(theme.name); + manageThemes(); + } else { + showSnackbar(result.message, "error"); + } + state.showDeleteConfirmModal = false; + state.themeToDelete = null; + }; + + return html`
+
+
Theme Maker
+
+
+
Colors
+
+
+ ${Object.keys(COLOR_LABELS).sort().map(key => html``)} +
+
+
+ +
+
Distance Icons
+
+
+ ${["traffic", "aggressive", "standard", "relaxed"].map(key => html`
+ +
+ ${key.charAt(0).toUpperCase() + key.slice(1)} + ${() => state.imageFileNames.distanceIcons[key] || ''} + + ${() => state.imageFileNames.distanceIcons[key] ? html` + + ` : ""} +
+
`)} +
+
+
+

Recommended size: 250x250

+
+
+ +
+
Icons
+
+
+ ${Object.keys(ICON_LABELS).map(key => html`
+ +
+ ${ICON_LABELS[key]} + ${() => state.imageFileNames[key] || ''} + + ${() => state.imageFileNames[key] ? html` + + ` : ""} +
+
`)} +
+
+
+

Home Button: 250x250

+

Settings Button: 169x104

+
+
+ +
+
Sounds
+
+
+ ${SOUND_DEFINITIONS.map(({ key, label }) => html`
+ +
+ ${label} + ${() => state.soundFileNames[key] || ''} + + ${() => state.soundFileNames[key] ? html` + + ` : ""} +
+
`)} +
+
+
+ +
+
Steering Wheel
+
+
+
+ +
+ Steering Wheel + ${() => state.imageFileNames.steeringWheel || ''} + + ${() => state.imageFileNames.steeringWheel ? html` + + ` : ""} +
+
+
+
+
+

Recommended size: 250x250

+
+
+ +
+
Turn Signals
+
+
+
+ + +
+
+ +
+ + +
+ ${() => state.showTurnSignalHelp && html`
+

Static - The turn signal animation appears next to the current speed.

+

Traditional - The turn signal animation moves across the bottom of the screen.

+
`} +
+ ${() => state.turnSignalStyle === "Traditional" && html`
+ +
+ + +
+
`} +
+ +
+ Blind Spot + ${() => state.imageFileNames.turnSignalBlindspot || ''} + + ${() => state.imageFileNames.turnSignalBlindspot ? html` + + ` : ""} +
+
+
+ +
+ ${() => state.turnSignalType === "Sequential" ? "Turn Signals" : "Turn Signal"} + + ${() => { + if (state.turnSignalType === "Sequential") { + if (state.imageFileNames.turnSignal) return state.imageFileNames.turnSignal; + return state.sequentialImages.length > 0 ? `${state.sequentialImages.length} image(s) selected` : ''; + } + return state.imageFileNames.turnSignal || ''; + }} + + + ${() => (state.imageFileNames.turnSignal || state.sequentialImages.length > 0) ? html` + + ` : ""} +
+
+ ${() => state.turnSignalType === "Sequential" ? html` + + ` : ""} +
+
+
+
+
+ + + + +
+
+ + ${() => state.showApplyConfirmModal && Modal({ + title: "Apply Theme", + message: html` +
+

Select components to apply:

+ + ${() => hasDistanceIcons() && html``} + ${() => hasIcons() && html``} + ${() => hasSounds() && html``} + ${() => hasSteeringWheel() && html``} + ${() => hasTurnSignals() && html``} +
+ `, + onConfirm: applyTheme, + onCancel: () => state.showApplyConfirmModal = false, + confirmText: "Apply", + confirmClass: "btn-primary", + })} + + ${() => state.showSaveConfirmModal && Modal({ + title: "Save Theme", + message: html` +
+ + +
+
+

Select components to save:

+ + ${() => hasDistanceIcons() && html``} + ${() => hasIcons() && html``} + ${() => hasSounds() && html``} + ${() => hasSteeringWheel() && html``} + ${() => hasTurnSignals() && html``} +
+ `, + onConfirm: saveTheme, + onCancel: () => state.showSaveConfirmModal = false, + confirmText: "Save", + confirmClass: "btn-primary", + })} + + ${() => state.showSubmitConfirmation && Modal({ + title: "Submit Theme for Community Use", + message: html` +

Submit your theme for everyone to use!

+
+ + +
+

Please enter your Discord username below so we can contact you if needed.

+ +
+

Select components to submit:

+ + ${() => hasDistanceIcons() && html``} + ${() => hasSounds() && html``} + ${() => hasSteeringWheel() && html``} + ${() => hasTurnSignals() && html``} +
+ `, + onConfirm: submitTheme, + onCancel: () => state.showSubmitConfirmation = false, + confirmText: "Submit", + confirmClass: "btn-primary", + })} + + ${() => state.showManageThemesModal && Modal({ + title: "Manage Themes", + message: html` +
+ ${["colors", "distance_icons", "icons", "sounds", "steering_wheel", "turn_signals"].map(tab => html` + + `)} +
+
+ ${() => state.themes.filter(theme => { + if (state.activeTab === "steering_wheel") { + return theme.type === "steering_wheel" || (theme.type === "holiday" && theme.hasSteeringWheel); + } + const key = `has${state.activeTab.charAt(0).toUpperCase() + state.activeTab.slice(1).replace(/_([a-z])/g, g => g[1].toUpperCase())}`; + return theme[key]; + }).map(theme => html` +
+ ${theme.name} ${theme.is_user_created ? " ๐ŸŒŸ" : ""} + ${() => { + const key = `localHas${state.activeTab + .replace(/_([a-z])/g, (_, c) => c.toUpperCase()) + .replace(/^[a-z]/, c => c.toUpperCase())}`; + if (theme.type !== "holiday" && theme[key]) { + return html` + + `; + } + return isDownloadable(state.activeTab, theme.name) ? html` + + ` : ""; + }} +
+ `)} +
+ `, + onCancel: () => state.showManageThemesModal = false, + cancelText: "Close", + customClass: "manage-themes-modal" + })} + + ${() => state.showDeleteConfirmModal && Modal({ + title: "Confirm Delete", + message: `Are you sure you want to delete the theme "${state.themeToDelete.name}"?`, + onConfirm: deleteTheme, + onCancel: () => { + state.showDeleteConfirmModal = false; + state.themeToDelete = null; + }, + confirmText: "Delete", + confirmClass: "btn-danger", + })} + + ${() => state.showSequenceOrderModal && Modal({ + title: "Turn Signal Sequence Order", + message: html` +
+ ${() => state.sequentialImages.map((item, index) => { + const file = fileStore.sequentialFiles[index] || + fileStore.sequentialFiles.find(f => f && f.name === item); + const imageUrl = file ? URL.createObjectURL(file) : ''; + return html` +
+ ${item} + ${item} +
+ `; + })} +
+ `, + onCancel: () => state.showSequenceOrderModal = false, + cancelText: "Close" + })} +
`; +} diff --git a/frogpilot/system/the_pond/templates/index.html b/frogpilot/system/the_pond/templates/index.html index d2a26af3c..6321bd41d 100644 --- a/frogpilot/system/the_pond/templates/index.html +++ b/frogpilot/system/the_pond/templates/index.html @@ -28,6 +28,7 @@ + diff --git a/frogpilot/system/the_pond/the_pond.py b/frogpilot/system/the_pond/the_pond.py index d9015195c..9b9fe2c30 100644 --- a/frogpilot/system/the_pond/the_pond.py +++ b/frogpilot/system/the_pond/the_pond.py @@ -6,6 +6,7 @@ from io import BytesIO from pathlib import Path from werkzeug.utils import secure_filename +import base64 import errno import hashlib import json @@ -13,6 +14,7 @@ import os import re import requests import secrets +import shutil import signal import subprocess import time @@ -28,11 +30,18 @@ from openpilot.system.loggerd.deleter import PRESERVE_ATTR_NAME, PRESERVE_ATTR_V from openpilot.system.version import get_build_metadata from panda import Panda -from openpilot.frogpilot.common.frogpilot_utilities import delete_file, get_lock_status, run_cmd -from openpilot.frogpilot.common.frogpilot_variables import ERROR_LOGS_PATH, EXCLUDED_KEYS, SCREEN_RECORDINGS_PATH,\ - frogpilot_default_params, params, update_frogpilot_toggles +from openpilot.frogpilot.assets.theme_manager import HOLIDAY_THEME_PATH, THEME_COMPONENT_PARAMS +from openpilot.frogpilot.common.frogpilot_utilities import delete_file, get_lock_status, run_cmd, extract_tar +from openpilot.frogpilot.common.frogpilot_variables import ACTIVE_THEME_PATH, ERROR_LOGS_PATH, EXCLUDED_KEYS, RESOURCES_REPO, SCREEN_RECORDINGS_PATH, THEME_SAVE_PATH,\ + frogpilot_default_params, params, params_memory, update_frogpilot_toggles from openpilot.frogpilot.system.the_pond import utilities +DISCORD_WEBHOOK_URL = os.getenv("DISCORD_WEBHOOK_URL") + +GITLAB_API = "https://gitlab.com/api/v4" +GITLAB_SUBMISSIONS_PROJECT_ID = "71992109" +GITLAB_TOKEN = os.environ.get("GITLAB_TOKEN", "") + FOOTAGE_PATHS = [ Paths.log_root(HD=True, raw=True), Paths.log_root(konik=True, raw=True), @@ -71,7 +80,8 @@ def setup(app): while True: with Panda(disable_checks=True) as panda: - panda.set_safety_mode(panda.SAFETY_TOYOTA) + if not params.get_bool("IsOnroad"): + panda.set_safety_mode(panda.SAFETY_TOYOTA) panda.can_send(0x750, LOCK_CMD, 0) time.sleep(1) @@ -89,7 +99,8 @@ def setup(app): while True: with Panda(disable_checks=True) as panda: - panda.set_safety_mode(panda.SAFETY_TOYOTA) + if not params.get_bool("IsOnroad"): + panda.set_safety_mode(panda.SAFETY_TOYOTA) panda.can_send(0x750, UNLOCK_CMD, 0) time.sleep(1) @@ -293,6 +304,10 @@ def setup(app): def get_param(): return params.get(request.args.get("key")) or "", 200 + @app.route("/api/params_memory", methods=["GET"]) + def get_param_memory(): + return params_memory.get(request.args.get("key")) or "", 200 + @app.route("/api/routes", methods=["GET"]) def list_routes(): def generate(): @@ -306,6 +321,27 @@ def setup(app): try: result = future.result() yield f"data: {json.dumps({'routes': [result]})}\n\n" + + path, name = futures[future] + segments = utilities.get_segments_in_route(name, path) + if segments: + for camera, cam_file in { + "forward": "fcamera.hevc", + "wide": "ecamera.hevc", + "driver": "dcamera.hevc" + }.items(): + input_files = [ + os.path.join(path, seg, cam_file) + for seg in segments + if os.path.exists(os.path.join(path, seg, cam_file)) + ] + if input_files: + executor.submit( + utilities.ffmpeg_concat_segments_to_mp4, + input_files, + f"{name}-{camera}" + ) + except Exception as exception: print(f"Error processing route: {exception}") yield f"data: {json.dumps({'progress': processed, 'total': total})}\n\n" @@ -370,6 +406,32 @@ def setup(app): return {"message": "Route unpreserved!"}, 200 return {"error": "Route not found"}, 404 + @app.route("/video//combined", methods=["GET"]) + def get_combined_route_video(name): + camera = request.args.get("camera", "forward") + for footage_path in FOOTAGE_PATHS: + segments = utilities.get_segments_in_route(name, footage_path) + if segments: + cam_file = { + "forward": "fcamera.hevc", + "wide": "ecamera.hevc", + "driver": "dcamera.hevc", + }.get(camera, "fcamera.hevc") + + input_files = [ + os.path.join(footage_path, seg, cam_file) + for seg in segments + if os.path.exists(os.path.join(footage_path, seg, cam_file)) + ] + + if not input_files: + return {"error": "No video files found"}, 404 + + mp4_file = utilities.ffmpeg_concat_segments_to_mp4(input_files, cache_key=f"{name}-{camera}") + return send_file(mp4_file, mimetype="video/mp4") + + return {"error": "Route not found"}, 404 + @app.route("/api/routes/", methods=["GET"]) def get_route(name): for footage_path in FOOTAGE_PATHS: @@ -652,7 +714,9 @@ def setup(app): os.makedirs(state, exist_ok=True) run_cmd(["curl", "-fsSL", tgz_url, "-o", tgz_path], "Downloaded Tailscale archive.", "Failed to download Tailscale archive.") - run_cmd(["tar", "xzf", tgz_path, "-C", base], "Extracted Tailscale archive.", "Failed to extract Tailscale archive.") + + extract_tar(tgz_path, base) + run_cmd(["cp", f"{bin_dir}/tailscale", f"{base}/tailscale"], "Copied tailscale binary.", "Failed to copy tailscale binary.") run_cmd(["cp", f"{bin_dir}/tailscaled", f"{base}/tailscaled"], "Copied tailscaled binary.", "Failed to copy tailscaled binary.") run_cmd(["chmod", "+x", f"{base}/tailscale", f"{base}/tailscaled"], "Made binaries executable.", "Failed to chmod binaries.") @@ -740,6 +804,591 @@ def setup(app): return jsonify({"message": "Tailscale uninstalled!"}), 200 + @app.route("/api/themes", methods=["POST"]) + def save_theme_route(): + theme_path, error = utilities.create_theme(request.form, request.files) + if error: + return jsonify({"message": error}), 400 + return jsonify({"message": f'Theme "{request.form.get("themeName")}" saved!'}), 200 + + @app.route("/api/themes/download_asset", methods=["POST"]) + def start_download_asset(): + data = request.get_json() or {} + raw_component = (data.get("component") or "").strip() + display_name = (data.get("name") or "").strip() + if not raw_component or not display_name: + return jsonify({"error": "Missing component or name"}), 400 + + component = "steering_wheels" if raw_component == "steering_wheel" else ("signals" if raw_component == "turn_signals" else raw_component) + mem_key = THEME_COMPONENT_PARAMS.get(component) + if not mem_key: + return jsonify({"error": "Unknown component"}), 400 + + slug = display_name.lower().replace("(", "").replace(")", "").replace(" ", "_") + + params_memory.put(mem_key, slug) + params_memory.put("ThemeDownloadProgress", "Downloading...") + + return jsonify({"message": "Download started", "component": component, "param": mem_key, "slug": slug}), 200 + + @app.route("/api/themes/apply", methods=["POST"]) + def apply_theme(): + form_data = request.form.to_dict(flat=True) + files = request.files + + if not form_data.get("themeName"): + form_data["themeName"] = f"tmp_{secrets.token_hex(8)}" + + temp_path, error = utilities.create_theme(form_data, files, temporary=True) + if error: + return {"error": error}, 400 + + save_checklist = json.loads(form_data.get("saveChecklist", "{}")) + + if save_checklist.get("colors"): + asset_location = temp_path / "colors" + save_location = ACTIVE_THEME_PATH / "colors" + if save_location.exists() or save_location.is_symlink(): + delete_file(save_location) + if asset_location.exists(): + save_location.parent.mkdir(parents=True, exist_ok=True) + save_location.symlink_to(asset_location, target_is_directory=True) + + if save_checklist.get("distance_icons"): + asset_location = temp_path / "distance_icons" + save_location = ACTIVE_THEME_PATH / "distance_icons" + if save_location.exists() or save_location.is_symlink(): + delete_file(save_location) + if asset_location.exists(): + save_location.parent.mkdir(parents=True, exist_ok=True) + save_location.symlink_to(asset_location, target_is_directory=True) + + if save_checklist.get("icons"): + asset_location = temp_path / "icons" + save_location = ACTIVE_THEME_PATH / "icons" + if save_location.exists() or save_location.is_symlink(): + delete_file(save_location) + if asset_location.exists(): + save_location.parent.mkdir(parents=True, exist_ok=True) + save_location.symlink_to(asset_location, target_is_directory=True) + + if save_checklist.get("sounds"): + asset_location = temp_path / "sounds" + save_location = ACTIVE_THEME_PATH / "sounds" + if save_location.exists() or save_location.is_symlink(): + delete_file(save_location) + if asset_location.exists(): + save_location.parent.mkdir(parents=True, exist_ok=True) + save_location.symlink_to(asset_location, target_is_directory=True) + + if save_checklist.get("turn_signals"): + asset_location = temp_path / "signals" + save_location = ACTIVE_THEME_PATH / "signals" + if save_location.exists() or save_location.is_symlink(): + delete_file(save_location) + if asset_location.exists(): + save_location.parent.mkdir(parents=True, exist_ok=True) + save_location.symlink_to(asset_location, target_is_directory=True) + + wheel_location = temp_path / "WheelIcon" + wheel_save_location = ACTIVE_THEME_PATH / "steering_wheel" + if wheel_location.exists(): + if wheel_save_location.exists(): + delete_file(wheel_save_location) + + wheel_save_location.mkdir(parents=True, exist_ok=True) + for file in wheel_location.iterdir(): + destination_file = wheel_save_location / file.name + delete_file(destination_file) + destination_file.symlink_to(file) + + params.put_bool("PersonalizeOpenpilot", True) + params_memory.put_bool("UseActiveTheme", True) + + update_frogpilot_toggles() + return {"message": "Theme applied successfully!"}, 200 + + @app.route("/api/themes/asset//") + def get_theme_asset(theme, asset_path): + theme_type = request.args.get("type", "") + + if theme_type == "active" or theme == "__active__": + file_path = ACTIVE_THEME_PATH / asset_path + elif asset_path.startswith("steering_wheels/"): + file_path = THEME_SAVE_PATH / asset_path + elif asset_path.startswith("steering_wheel/") and "holiday" in theme_type: + file_path = HOLIDAY_THEME_PATH / theme / asset_path + else: + base_dir = HOLIDAY_THEME_PATH / theme if "holiday" in theme_type else THEME_SAVE_PATH / "theme_packs" / theme + file_path = base_dir / asset_path + + if not file_path.exists(): + return "File not found", 404 + + return send_file(file_path, as_attachment=False) + + @app.route("/api/themes/delete/", methods=["DELETE"]) + def delete_theme(theme_path_str): + theme_type = request.args.get("type", "user") + component = (request.args.get("component") or "").strip() + + if theme_type == "holiday": + return jsonify({"message": "Cannot delete holiday themes."}), 403 + + if theme_type == "steering_wheel": + wheel_path = THEME_SAVE_PATH / "steering_wheels" / theme_path_str + if wheel_path.exists(): + delete_file(wheel_path) + return jsonify({"message": f'Steering wheel "{utilities.normalize_theme_name(wheel_path.stem)}" deleted!'}), 200 + return jsonify({"message": "Steering wheel not found..."}), 404 + + theme_path = THEME_SAVE_PATH / "theme_packs" / theme_path_str + if not theme_path.is_dir(): + return jsonify({"message": "Theme not found..."}), 404 + + if component: + allowed = {"colors", "distance_icons", "icons", "sounds", "signals"} + if component not in allowed: + return jsonify({"message": "Unknown component..."}), 400 + + target = theme_path / component + if not target.exists(): + return jsonify({"message": f'Component "{component}" not found in theme...'}), 404 + + delete_file(target) + + return jsonify({"message": f'Removed {component.replace("_", " ")} from "{utilities.normalize_theme_name(theme_path.name)}"!'}), 200 + + delete_file(theme_path) + return jsonify({"message": f'Theme "{utilities.normalize_theme_name(theme_path.name)}" deleted!'}), 200 + + @app.route("/api/themes/default", methods=["GET"]) + def get_default_theme(): + theme_data = { + "colors": {}, + "images": {}, + "sounds": {}, + "turnSignalLength": 100, + "turnSignalType": "Single Image", + "sequentialImages": [], + "theme_names": {} + } + + if not params.get_bool("PersonalizeOpenpilot"): + theme_data["theme_names"] = { + "colors": "Stock", + "distanceIcons": "Stock", + "icons": "Stock", + "sounds": "Stock", + "turnSignals": "Stock", + "steeringWheel": "Stock" + } + else: + theme_param_map = { + "CustomColors": "colors", + "CustomDistanceIcons": "distanceIcons", + "CustomIcons": "icons", + "CustomSounds": "sounds", + "CustomSignals": "turnSignals", + "WheelIcon": "steeringWheel" + } + for param, theme_key in theme_param_map.items(): + param_value = params.get(param, encoding="utf-8") + if param_value: + theme_data["theme_names"][theme_key] = utilities.normalize_theme_name(param_value) + + colors_path = ACTIVE_THEME_PATH / "colors" / "colors.json" + if colors_path.exists(): + with open(colors_path, "r") as f: + theme_data["colors"] = json.load(f) + + signals_dir = ACTIVE_THEME_PATH / "signals" + if signals_dir.exists(): + sequential_files = sorted([f.name for f in signals_dir.glob("turn_signal_*.png") if "blindspot" not in f.name.lower()]) + if sequential_files: + theme_data["sequentialImages"] = sequential_files + theme_data["turnSignalType"] = "Sequential" + + theme_data["turnSignalStyle"] = "Traditional" + theme_data["turnSignalLength"] = 100 + + for file in os.listdir(signals_dir): + if not any(file.endswith(ext) for ext in [".png", ".gif", ".jpg", ".jpeg"]): + parts = file.split("_") + if len(parts) == 2: + theme_data["turnSignalStyle"] = parts[0].capitalize() + try: + theme_data["turnSignalLength"] = int(parts[1]) + except ValueError: + pass + break + + exts = [".png", ".gif", ".jpg", ".jpeg"] + for ext in exts: + p = signals_dir / f"turn_signal{ext}" + if p.exists(): + theme_data["images"]["turnSignal"] = f"turn_signal{ext}" + break + for ext in exts: + p = signals_dir / f"turn_signal_blindspot{ext}" + if p.exists(): + theme_data["images"]["turnSignalBlindspot"] = f"turn_signal_blindspot{ext}" + break + + icons_path = ACTIVE_THEME_PATH / "icons" + if icons_path.exists() and icons_path.is_dir(): + for file in os.listdir(icons_path): + if Path(file).stem == "button_settings": + theme_data["images"]["settingsButton"] = file + elif Path(file).stem == "button_home": + theme_data["images"]["homeButton"] = file + + wheel_path = ACTIVE_THEME_PATH / "steering_wheel" + if wheel_path.exists() and wheel_path.is_dir(): + wheel_files = list(wheel_path.glob("wheel.*")) + if wheel_files: + theme_data["images"]["steeringWheel"] = wheel_files[0].name + + distance_icons_path = ACTIVE_THEME_PATH / "distance_icons" + if distance_icons_path.exists() and distance_icons_path.is_dir(): + theme_data["images"]["distanceIcons"] = {} + for file in os.listdir(distance_icons_path): + key = Path(file).stem + if key in ["traffic", "aggressive", "standard", "relaxed"]: + theme_data["images"]["distanceIcons"][key] = file + + sounds_path = ACTIVE_THEME_PATH / "sounds" + if sounds_path.exists() and sounds_path.is_dir(): + valid_sound_keys = ["engage", "disengage", "prompt", "startup"] + for file in os.listdir(sounds_path): + stem = Path(file).stem + if stem in valid_sound_keys: + theme_data["sounds"][stem] = file + + return jsonify(theme_data) + + @app.route("/api/themes/download", methods=["POST"]) + def download_theme_route(): + theme_path, error = utilities.create_theme(request.form, request.files, temporary=True) + if error: + return jsonify({"message": error}), 400 + + sane_theme_name = utilities.normalize_theme_name(request.form.get("themeName"), for_path=True) + + archive_path = shutil.make_archive(str(theme_path.parent / sane_theme_name), "zip", theme_path.parent, sane_theme_name) + + memory_file = BytesIO() + with open(archive_path, "rb") as f: + memory_file.write(f.read()) + memory_file.seek(0) + + delete_file(theme_path.parent) + + return send_file(memory_file, download_name=f'{sane_theme_name}.zip', as_attachment=True) + + @app.route("/api/themes/list", methods=["GET"]) + def list_themes(): + all_themes = [] + themes_path = THEME_SAVE_PATH / "theme_packs" + + if themes_path.exists(): + for theme_dir in themes_path.iterdir(): + if theme_dir.is_dir(): + is_user_created = "-user_created" in theme_dir.name + components = utilities.check_theme_components(theme_dir) + all_themes.append({ + "name": utilities.normalize_theme_name(theme_dir.name), + "path": theme_dir.name, + "type": "user" if is_user_created else "standard", + "is_user_created": is_user_created, + **components + }) + + if HOLIDAY_THEME_PATH.exists(): + for theme_dir in HOLIDAY_THEME_PATH.iterdir(): + if theme_dir.is_dir(): + components = utilities.check_theme_components(theme_dir) + all_themes.append({ + "name": utilities.normalize_theme_name(theme_dir.name), + "path": theme_dir.name, + "type": "holiday", + "is_user_created": False, + **components + }) + + wheels_path = THEME_SAVE_PATH / "steering_wheels" + if wheels_path.exists(): + for wheel_file in wheels_path.iterdir(): + all_themes.append({ + "name": utilities.normalize_theme_name(wheel_file.stem), + "path": wheel_file.name, + "type": "steering_wheel", + "is_user_created": "-user_created" in wheel_file.name, + "hasSteeringWheel": True, + }) + + return jsonify({"themes": sorted(all_themes, key=lambda x: x['name'])}) + + @app.route("/api/themes/load/") + def load_theme(theme_path): + theme_type = request.args.get("type", "") + theme_dir = HOLIDAY_THEME_PATH / theme_path if "holiday" in theme_type else THEME_SAVE_PATH / "theme_packs" / theme_path + + response_data = { + "colors": None, + "images": {}, + "sounds": {}, + "sequentialImages": [], + "turnSignalType": "Single Image", + "turnSignalStyle": "Static", + "turnSignalLength": 100 + } + + colors_file = theme_dir / "colors" / "colors.json" + if colors_file.exists(): + with open(colors_file) as f: + response_data["colors"] = json.load(f) + + icons_dir = theme_dir / "icons" + if icons_dir.exists(): + if (icons_dir / "button_home.gif").exists(): + response_data["images"]["homeButton"] = { + "filename": "button_home.gif", + "path": "icons/button_home.gif" + } + if (icons_dir / "button_settings.png").exists(): + response_data["images"]["settingsButton"] = { + "filename": "button_settings.png", + "path": "icons/button_settings.png" + } + + distance_dir = theme_dir / "distance_icons" + if distance_dir.exists(): + response_data["images"]["distanceIcons"] = {} + exts = [".png", ".gif", ".jpg", ".jpeg"] + for name in ["aggressive", "relaxed", "standard", "traffic"]: + for ext in exts: + p = distance_dir / f"{name}{ext}" + if p.exists(): + response_data["images"]["distanceIcons"][name] = { + "filename": f"{name}{ext}", + "path": f"distance_icons/{name}{ext}" + } + break + + signals_dir = theme_dir / "signals" + if signals_dir.exists(): + sequential_files = sorted([f.name for f in signals_dir.glob("turn_signal_*.png") if "blindspot" not in f.name.lower()]) + if sequential_files: + response_data["sequentialImages"] = sequential_files + response_data["turnSignalType"] = "Sequential" + + response_data["turnSignalStyle"] = "Traditional" + response_data["turnSignalLength"] = 100 + + for file in os.listdir(signals_dir): + if not any(file.endswith(ext) for ext in [".png", ".gif", ".jpg", ".jpeg"]): + parts = file.split("_") + if len(parts) == 2: + response_data["turnSignalStyle"] = parts[0].capitalize() + try: + response_data["turnSignalLength"] = int(parts[1]) + except ValueError: + pass + break + + exts = [".png", ".gif", ".jpg", ".jpeg"] + for ext in exts: + p = signals_dir / f"turn_signal{ext}" + if p.exists(): + response_data["images"]["turnSignal"] = { + "filename": f"turn_signal{ext}", + "path": f"signals/turn_signal{ext}", + } + break + for ext in exts: + p = signals_dir / f"turn_signal_blindspot{ext}" + if p.exists(): + response_data["images"]["turnSignalBlindspot"] = { + "filename": f"turn_signal_blindspot{ext}", + "path": f"signals/turn_signal_blindspot{ext}", + } + break + + sounds_dir = theme_dir / "sounds" + if sounds_dir.exists(): + for name in ["engage", "disengage", "startup", "prompt"]: + file_path = sounds_dir / f"{name}.wav" + if file_path.exists(): + response_data["sounds"][name] = { + "filename": f"{name}.wav", + "path": f"sounds/{name}.wav" + } + + steering_wheel_path = None + if "holiday" in theme_type: + steering_dir = theme_dir / "steering_wheel" + if steering_dir.exists() and steering_dir.is_dir(): + for file in steering_dir.iterdir(): + if file.is_file() and file.suffix.lower() in [".png", ".jpg", ".jpeg", ".gif"]: + steering_wheel_path = f"steering_wheel/{file.name}" + break + else: + steering_wheels_dir = THEME_SAVE_PATH / "steering_wheels" + if steering_wheels_dir.exists(): + for file in steering_wheels_dir.iterdir(): + if file.is_file() and file.stem.lower() == theme_path.lower() and file.suffix.lower() in [".png", ".jpg", ".jpeg", ".gif"]: + steering_wheel_path = f"steering_wheels/{file.name}" + break + + if steering_wheel_path: + response_data["images"]["steeringWheel"] = { + "filename": steering_wheel_path.split("/")[-1], + "path": steering_wheel_path + } + + return jsonify(response_data) + + @app.route("/api/themes/submit", methods=["POST"]) + def submit_theme(): + if not GITLAB_TOKEN: + return jsonify({"error": "Missing GitLab token"}), 500 + + try: + theme_name = request.form.get("themeName") + if not theme_name: + return jsonify({"error": "Missing theme name"}), 400 + + discord_username = request.form.get("discordUsername") or "Unknown" + + theme_path, error = utilities.create_theme(request.form, request.files, temporary=True) + if error: + return jsonify({"message": error}), 400 + + safe_theme_name = utilities.normalize_theme_name(theme_name, for_path=True) + combined_name = f"{safe_theme_name}~{discord_username}" + timestamp = int(time.time()) + + def gitlab_post(project_id, endpoint, payload): + url = f"{GITLAB_API}/projects/{project_id}/{endpoint}" + resp = requests.post(url, headers={"PRIVATE-TOKEN": GITLAB_TOKEN}, json=payload) + if resp.status_code not in (200, 201): + raise RuntimeError(f"GitLab API error {resp.status_code}: {resp.text}") + return resp.json() + + def encode_file_base64(path): + with open(path, "rb") as f: + return base64.b64encode(f.read()).decode("utf-8") + + def send_discord_notification(username, theme_name, asset_types): + if not DISCORD_WEBHOOK_URL: + return + + message = ( + f"๐ŸŽจ **New Theme Submission**\n" + f"User: `{username}`\n" + f"Theme: `{theme_name}`\n" + f"Assets: {', '.join(asset_types)}\n" + f"[View Submissions Repo](https://gitlab.com/{RESOURCES_REPO}-Submissions)\n" + f"<@263565721336807424>" + ) + payload = {"content": message} + try: + resp = requests.post(DISCORD_WEBHOOK_URL, json=payload) + if resp.status_code not in (200, 204): + print(f"Discord notification failed: {resp.status_code} {resp.text}") + except Exception as exception: + print(f"Error sending Discord message: {exception}") + + asset_types = [] + submission_urls = {} + + distance_icons_path = theme_path / "distance_icons" + if distance_icons_path.exists() and any(distance_icons_path.iterdir()): + zip_path = shutil.make_archive(str(distance_icons_path), "zip", distance_icons_path) + encoded = encode_file_base64(zip_path) + file_name = f"{combined_name}.zip" + actions = [ + { + "action": "create", + "file_path": file_name, + "content": encoded, + "encoding": "base64" + } + ] + commit_payload = { + "branch": "Distance-Icons", + "commit_message": f"Added Distance Icons: {combined_name}", + "actions": actions + } + gitlab_post(GITLAB_SUBMISSIONS_PROJECT_ID, "repository/commits", commit_payload) + asset_types.append("Distance Icons") + submission_urls["distance_icons"] = f"https://gitlab.com/{RESOURCES_REPO}-Submissions/-/tree/Distance-Icons" + + theme_actions = [] + for folder in ["colors", "icons", "signals", "sounds"]: + folder_path = theme_path / folder + if folder_path.exists() and any(folder_path.iterdir()): + zip_path = shutil.make_archive(str(folder_path), "zip", folder_path) + encoded = encode_file_base64(zip_path) + file_path = f"{combined_name}/{folder}.zip" + theme_actions.append({ + "action": "create", + "file_path": file_path, + "content": encoded, + "encoding": "base64" + }) + + if theme_actions: + commit_payload = { + "branch": "Themes", + "commit_message": f"Added Theme: {combined_name}", + "actions": theme_actions + } + gitlab_post(GITLAB_SUBMISSIONS_PROJECT_ID, "repository/commits", commit_payload) + asset_types.append("Theme") + submission_urls["theme"] = f"https://gitlab.com/{RESOURCES_REPO}-Submissions/-/tree/Themes" + + wheel_file = request.files.get("steeringWheel") + if wheel_file and wheel_file.filename: + suffix = Path(wheel_file.filename).suffix + file_name = f"{combined_name}{suffix}" + wheel_file.seek(0) + encoded_wheel = base64.b64encode(wheel_file.read()).decode("utf-8") + actions = [ + { + "action": "create", + "file_path": file_name, + "content": encoded_wheel, + "encoding": "base64" + } + ] + commit_payload = { + "branch": "Steering-Wheels", + "commit_message": f"Added Steering Wheel: {combined_name}", + "actions": actions + } + gitlab_post(GITLAB_SUBMISSIONS_PROJECT_ID, "repository/commits", commit_payload) + asset_types.append("Steering Wheel") + submission_urls["steering_wheel"] = f"https://gitlab.com/{RESOURCES_REPO}-Submissions/-/tree/Steering-Wheels" + + if not submission_urls: + return jsonify({"error": "No valid theme data or steering wheel file provided"}), 400 + + send_discord_notification(discord_username, theme_name, asset_types) + + return jsonify({ + "message": "Submission successful!", + "branches": submission_urls + }), 200 + + except Exception as exception: + return jsonify({"error": str(exception)}), 500 + + finally: + if "theme_path" in locals() and theme_path.parent.exists(): + delete_file(theme_path.parent) + @app.route("/api/tmux_log/capture", methods=["POST"]) def capture_tmux_log_route(): TMUX_LOGS_PATH.mkdir(parents=True, exist_ok=True) @@ -924,16 +1573,65 @@ def setup(app): def get_video(path): camera = request.args.get("camera") filename = {"driver": "dcamera.hevc", "wide": "ecamera.hevc"}.get(camera, "fcamera.hevc") - for footage_path in FOOTAGE_PATHS: filepath = f"{footage_path}{path}/{filename}" if os.path.exists(filepath): - process = utilities.ffmpeg_mp4_wrap_process_builder(filepath) - return Response(process.stdout.read(), status=200, mimetype="video/mp4") + file_handle = utilities.ffmpeg_mp4_wrap_process_builder(filepath) + file_handle.seek(0, 2) + file_size = file_handle.tell() + file_handle.seek(0) + + range_header = request.headers.get('Range', None) + if range_header: + byte_start = 0 + byte_end = file_size - 1 + + if range_header.startswith('bytes='): + range_spec = range_header[6:] + if '-' in range_spec: + start, end = range_spec.split('-', 1) + if start: + byte_start = max(0, int(start)) + if end: + byte_end = min(file_size - 1, int(end)) + + if byte_start >= file_size: + file_handle.close() + return Response("Requested Range Not Satisfiable", 416) + + byte_end = max(byte_start, byte_end) + + file_handle.seek(byte_start) + read_length = byte_end - byte_start + 1 + data = file_handle.read(read_length) + + response = Response( + data, + 206, + headers={ + 'Content-Range': f'bytes {byte_start}-{byte_end}/{file_size}', + 'Accept-Ranges': 'bytes', + 'Content-Length': str(len(data)), + 'Content-Type': 'video/mp4' + } + ) + else: + data = file_handle.read() + response = Response( + data, + 200, + headers={ + 'Accept-Ranges': 'bytes', + 'Content-Length': str(file_size), + 'Content-Type': 'video/mp4' + } + ) + + file_handle.close() + return response return {"error": "Video not found"}, 404 - def main(): app = Flask(__name__, static_folder="assets", static_url_path="/assets") setup(app) diff --git a/frogpilot/system/the_pond/utilities.py b/frogpilot/system/the_pond/utilities.py index 3fdc34c7e..056056c94 100644 --- a/frogpilot/system/the_pond/utilities.py +++ b/frogpilot/system/the_pond/utilities.py @@ -1,15 +1,21 @@ #!/usr/bin/env python3 import base64 +import hashlib import json import os import re +import secrets +import shutil import subprocess import time import uuid from datetime import datetime from pathlib import Path +from PIL import Image +from pydub import AudioSegment from typing import List +from werkzeug.utils import secure_filename from openpilot.common.conversions import Conversions as CV from openpilot.system.loggerd.config import get_available_bytes, get_used_bytes @@ -17,7 +23,8 @@ from openpilot.system.loggerd.deleter import PRESERVE_ATTR_NAME, PRESERVE_ATTR_V from openpilot.system.loggerd.uploader import listdir_by_creation from openpilot.tools.lib.route import SegmentName -from openpilot.frogpilot.common.frogpilot_variables import params, params_tracking +from openpilot.frogpilot.common.frogpilot_variables import THEME_SAVE_PATH, VIDEO_CACHE_PATH, params +from openpilot.frogpilot.assets.theme_manager import HOLIDAY_THEME_PATH LOG_CANDIDATES = [ "qlog", @@ -29,8 +36,293 @@ LOG_CANDIDATES = [ SEGMENT_RE = re.compile(r"^[0-9a-fA-F]{8}--[0-9a-fA-F]{10}--\d+$") +TARGET_LOUDNESS = -15.0 + XOR_KEY = "s8#pL3*Xj!aZ@dWq" +MAX_FILE_SIZE = 5 * 1024 * 1024 + +def check_theme_components(theme_path): + components = { + "hasColors": False, + "hasIcons": False, + "hasSounds": False, + "hasTurnSignals": False, + "hasDistanceIcons": False, + "hasSteeringWheel": False + } + + colors_path = theme_path / "colors" / "colors.json" + if colors_path.exists(): + components["hasColors"] = True + + icons_path = theme_path / "icons" + if icons_path.exists() and any(icons_path.iterdir()): + components["hasIcons"] = True + + sounds_path = theme_path / "sounds" + if sounds_path.exists() and any(sounds_path.iterdir()): + components["hasSounds"] = True + + signals_path = theme_path / "signals" + if signals_path.exists() and any(signals_path.iterdir()): + components["hasTurnSignals"] = True + + distance_icons_path = theme_path / "distance_icons" + if distance_icons_path.exists() and any(distance_icons_path.iterdir()): + components["hasDistanceIcons"] = True + + is_holiday_theme = str(HOLIDAY_THEME_PATH) in str(theme_path) + + if is_holiday_theme: + wheel_path = theme_path / "steering_wheel" + if wheel_path.exists() and any(f.name.startswith("wheel.") for f in wheel_path.iterdir()): + components["hasSteeringWheel"] = True + else: + wheel_path = THEME_SAVE_PATH / "steering_wheels" + if wheel_path.exists(): + theme_name = theme_path.name.replace('-user_created', '') + if any(wheel_path.glob(f"{theme_name}-user_created.*")): + components["hasSteeringWheel"] = True + + return components + +def covert_audio(input_file): + sound = AudioSegment.from_file(input_file) + sound = sound.set_frame_rate(48000) + sound = sound.set_channels(1) + + output_filename = os.path.splitext(input_file)[0] + ".wav" + sound.export(output_filename, format="wav", parameters=["-acodec", "pcm_s16le"]) + + if input_file != output_filename: + os.remove(input_file) + +def create_theme(form_data, files, temporary=False): + theme_name = form_data.get("themeName") + if not theme_name: + return None, "Theme name is required." + + sane_theme_name = secure_filename(theme_name.replace(" ", "_")) + + save_checklist_str = form_data.get("saveChecklist", "{}") + save_checklist = json.loads(save_checklist_str) + + needs_theme_pack = any([ + save_checklist.get("colors"), + save_checklist.get("icons"), + save_checklist.get("sounds"), + save_checklist.get("turn_signals"), + save_checklist.get("distance_icons"), + ]) + + if temporary: + base_path = Path(f"/tmp/{sane_theme_name}_{secrets.token_hex(8)}") + else: + base_path = THEME_SAVE_PATH / "theme_packs" if needs_theme_pack else None + + theme_path = (base_path / f"{sane_theme_name}-user_created") if base_path else None + if theme_path: + theme_path.mkdir(parents=True, exist_ok=True) + + if save_checklist.get("colors"): + (theme_path / "colors").mkdir(exist_ok=True) + colors_str = form_data.get("colors") + if colors_str: + color_data = json.loads(colors_str) + for key, values in color_data.items(): + if "alpha" in values: + values["alpha"] = values.pop("alpha") + colors_file = theme_path / "colors" / "colors.json" + with open(colors_file, "w") as f: + json.dump(color_data, f, indent=2) + + if save_checklist.get("turn_signals"): + signals_path = theme_path / "signals" + signals_path.mkdir(exist_ok=True) + + if turn_signal_length := form_data.get("turnSignalLength"): + style = form_data.get("turnSignalStyle", "Traditional").lower() + (signals_path / f"{style}_{turn_signal_length}").touch() + + turn_signal_type = form_data.get("turnSignalType", "Single Image").lower() + + if turn_signal_type == "single image": + for f in signals_path.glob("turn_signal.*"): + f.unlink() + for f in signals_path.glob("turn_signal_blindspot.*"): + f.unlink() + + file = files.get("turnSignal") + if file and file.filename: + if file.content_length > MAX_FILE_SIZE: + return None, f"File {file.filename} exceeds 1MB limit." + ext = Path(file.filename).suffix + file.save(signals_path / f"turn_signal{ext}") + + file = files.get("turnSignalBlindspot") + if file and file.filename: + if file.content_length > MAX_FILE_SIZE: + return None, f"File {file.filename} exceeds 1MB limit." + ext = Path(file.filename).suffix + file.save(signals_path / f"turn_signal_blindspot{ext}") + + elif turn_signal_type == "sequential": + for f in signals_path.glob("turn_signal_*"): + f.unlink() + + signal_map = { + "turnSignal": "turn_signal", + "turnSignalBlindspot": "turn_signal_blindspot", + } + for field, base_name in signal_map.items(): + file = files.get(field) + if file and file.filename: + if file.content_length > MAX_FILE_SIZE: + return None, f"File {file.filename} exceeds 1MB limit." + for f in signals_path.glob(f"{base_name}.*"): + f.unlink() + ext = Path(file.filename).suffix.lower() + file.save(signals_path / f"{base_name}{ext}") + + for f in signals_path.glob("turn_signal.*"): + f.unlink() + for f in signals_path.glob("turn_signal_blindspot.*"): + f.unlink() + + sequential_keys = sorted( + [k for k in files if k.startswith("turn_signal_")], + key=lambda name: int(name.split("_")[-1]) + ) + + for key in sequential_keys: + file = files.get(key) + if file and file.filename: + if file.content_length > MAX_FILE_SIZE: + return None, f"File {file.filename} exceeds 1MB limit." + idx = key.split("_")[-1] + ext = Path(file.filename).suffix + file.save(signals_path / f"turn_signal_{idx}{ext}") + + if save_checklist.get("icons"): + (theme_path / "icons").mkdir(exist_ok=True) + + icon_map = { + "settingsButton": (theme_path / "icons", "button_settings", (169, 104)), + "homeButton": (theme_path / "icons", "button_home", (250, 250)), + } + + for field, (dest_path, base_name, resize_dims) in icon_map.items(): + file = files.get(field) + if file and file.filename: + if file.content_length > MAX_FILE_SIZE: + return None, f"File {file.filename} exceeds 1MB limit." + + for f in dest_path.glob(f"{base_name}.*"): + f.unlink() + + ext = Path(file.filename).suffix.lower() + save_path = dest_path / f"{base_name}{ext}" + file.save(save_path) + + if resize_dims: + if ext == ".gif": + width, height = resize_dims + palette_path = save_path.with_suffix(".palette.png") + temp_output_path = save_path.with_suffix(".resized.gif") + subprocess.run(["ffmpeg", "-i", str(save_path), "-vf", "palettegen", "-y", str(palette_path)], check=True) + subprocess.run(["ffmpeg", "-i", str(save_path), "-i", str(palette_path), "-lavfi", f"fps=20,scale={width}:{height}:flags=lanczos[x];[x][1:v]paletteuse", "-y", str(temp_output_path)], check=True) + palette_path.unlink() + temp_output_path.rename(save_path) + else: + img = Image.open(save_path).resize(resize_dims, Image.Resampling.LANCZOS) + if ext != ".png": + save_path.unlink() + save_path = save_path.with_suffix(".png") + img.save(save_path, "PNG") + + if save_checklist.get("steering_wheel"): + wheels_dir = THEME_SAVE_PATH / "steering_wheels" + wheels_dir.mkdir(parents=True, exist_ok=True) + file = files.get("steeringWheel") + saved_wheel_path = None + if file and file.filename: + if file.content_length > MAX_FILE_SIZE: + return None, f"File {file.filename} exceeds 1MB limit." + for f in wheels_dir.glob(f"{sane_theme_name}-user_created.*"): + f.unlink() + ext = Path(file.filename).suffix.lower() + saved_wheel_path = wheels_dir / f"{sane_theme_name}-user_created{ext}" + file.save(saved_wheel_path) + if ext == ".gif": + width, height = (250, 250) + palette_path = saved_wheel_path.with_suffix(".palette.png") + temp_output_path = saved_wheel_path.with_suffix(".resized.gif") + subprocess.run(["ffmpeg", "-i", str(saved_wheel_path), "-vf", "palettegen", "-y", str(palette_path)], check=True) + subprocess.run(["ffmpeg", "-i", str(saved_wheel_path), "-i", str(palette_path), "-lavfi", f"fps=20,scale={width}:{height}:flags=lanczos[x];[x][1:v]paletteuse", "-y", str(temp_output_path)], check=True) + palette_path.unlink() + temp_output_path.rename(saved_wheel_path) + else: + img = Image.open(saved_wheel_path).resize((250, 250), Image.Resampling.LANCZOS) + if ext != ".png": + saved_wheel_path.unlink() + saved_wheel_path = saved_wheel_path.with_suffix(".png") + img.save(saved_wheel_path, "PNG") + if temporary and (theme_path is not None): + existing = saved_wheel_path if saved_wheel_path is not None else next(wheels_dir.glob(f"{sane_theme_name}-user_created.*"), None) + if existing: + wheel_icon_dir = theme_path / "WheelIcon" + wheel_icon_dir.mkdir(parents=True, exist_ok=True) + dest = wheel_icon_dir / f"wheel{existing.suffix.lower()}" + if dest.exists(): + dest.unlink() + dest.symlink_to(existing) + + if save_checklist.get("distance_icons"): + dist_path = theme_path / "distance_icons" + dist_path.mkdir(exist_ok=True) + for name in ["traffic", "aggressive", "standard", "relaxed"]: + file = files.get(f"distanceIcons_{name}") + if file and file.filename: + if file.content_length > MAX_FILE_SIZE: + return None, f"File {file.filename} exceeds 1MB limit." + + for f in dist_path.glob(f"{name}.*"): + f.unlink() + + ext = Path(file.filename).suffix.lower() + save_path = dist_path / f"{name}{ext}" + file.save(save_path) + if ext == ".gif": + width, height = (250, 250) + palette_path = save_path.with_suffix(".palette.png") + temp_output_path = save_path.with_suffix(".resized.gif") + subprocess.run(["ffmpeg", "-i", str(save_path), "-vf", "palettegen", "-y", str(palette_path)], check=True) + subprocess.run(["ffmpeg", "-i", str(save_path), "-i", str(palette_path), "-lavfi", f"fps=20,scale={width}:{height}:flags=lanczos[x];[x][1:v]paletteuse", "-y", str(temp_output_path)], check=True) + palette_path.unlink() + temp_output_path.rename(save_path) + else: + img = Image.open(save_path).resize((250, 250), Image.Resampling.LANCZOS) + if ext != ".png": + save_path.unlink() + save_path = save_path.with_suffix(".png") + img.save(save_path, "PNG") + + if save_checklist.get("sounds"): + sounds_path = theme_path / "sounds" + sounds_path.mkdir(exist_ok=True) + for name in ["engage", "disengage", "prompt", "startup"]: + file = files.get(name) + if file and file.filename: + if file.content_length > MAX_FILE_SIZE: + return None, f"File {file.filename} exceeds 1MB limit." + + save_path = sounds_path / f"{name}{Path(file.filename).suffix}" + file.save(save_path) + covert_audio(str(save_path)) + + return theme_path, None + def decode_parameters(encoded_string): obfuscated_data = base64.b64decode(encoded_string.encode("utf-8")).decode("utf-8") decrypted_data = xor_encrypt_decrypt(obfuscated_data, XOR_KEY) @@ -42,26 +334,89 @@ def encode_parameters(params_dict): encoded_data = base64.b64encode(obfuscated_data.encode("utf-8")).decode("utf-8") return encoded_data +def ffmpeg_concat_segments_to_mp4(input_files, cache_key=None): + if not input_files: + raise ValueError("No input files provided for concatenation") + + VIDEO_CACHE_PATH.mkdir(exist_ok=True) + + key_str = "|".join(str(p) for p in input_files) + if cache_key: + key_str = f"{cache_key}|{key_str}" + file_hash = hashlib.md5(key_str.encode()).hexdigest() + cache_path = VIDEO_CACHE_PATH / f"{file_hash}.mp4" + + if cache_path.exists() and all(cache_path.stat().st_mtime > Path(f).stat().st_mtime for f in input_files): + return open(cache_path, "rb") + + list_file = VIDEO_CACHE_PATH / f"{file_hash}.txt" + with open(list_file, "w") as f: + for seg in input_files: + f.write(f"file '{Path(seg)}'\n") + + try: + subprocess.run( + ["ffmpeg", "-hide_banner", "-loglevel", "error", "-f", "concat", "-safe", "0", + "-i", str(list_file), "-c", "copy", "-movflags", "faststart", "-y", str(cache_path)], + check=True + ) + except subprocess.CalledProcessError: + try: + subprocess.run( + ["ffmpeg", "-hide_banner", "-loglevel", "error", "-f", "concat", "-safe", "0", + "-i", str(list_file), "-c:v", "libx264", "-movflags", "faststart", "-y", str(cache_path)], + check=True + ) + except subprocess.CalledProcessError: + if cache_path.exists(): + cache_path.unlink() + raise ValueError(f"Cannot process concatenated video segments: {input_files}") + finally: + if list_file.exists(): + list_file.unlink() + + return open(cache_path, "rb") + def ffmpeg_mp4_wrap_process_builder(filename): - is_raw_hevc = filename.rsplit(".", 1)[-1] == "hevc" + input_path = Path(filename) - command = [ - "ffmpeg", - "-hide_banner", - "-loglevel", "error", - "-probesize", "1M", - "-analyzeduration", "1M", - *(["-f", "hevc"] if is_raw_hevc else []), - "-i", filename, - "-c", "copy", - "-map", "0", - *(["-vtag", "hvc1"] if is_raw_hevc else []), - "-f", "mp4", - "-movflags", "empty_moov", - "-" - ] + if not input_path.exists(): + raise FileNotFoundError(f"Input file does not exist: {input_path}") - return subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + if input_path.stat().st_size == 0: + raise ValueError(f"Input file is empty: {input_path}") + + lock_file = input_path.parent / "rlog.lock" + if lock_file.exists(): + raise ValueError(f"File is still being recorded: {input_path}") + + VIDEO_CACHE_PATH.mkdir(exist_ok=True) + + total, used, free = shutil.disk_usage(VIDEO_CACHE_PATH) + if free < 500 * 1024 * 1024: + for cache_file in VIDEO_CACHE_PATH.glob("*.mp4"): + try: + cache_file.unlink() + except: + pass + + file_hash = hashlib.md5(str(input_path).encode()).hexdigest() + cache_path = VIDEO_CACHE_PATH / f"{file_hash}.mp4" + + if cache_path.exists() and cache_path.stat().st_mtime > input_path.stat().st_mtime: + return open(cache_path, "rb") + + try: + subprocess.run(["ffmpeg", "-hide_banner", "-loglevel", "error", "-i", str(input_path), "-c", "copy", "-movflags", "faststart", "-y", str(cache_path)], check=True) + except subprocess.CalledProcessError: + try: + subprocess.run(["ffmpeg", "-hide_banner", "-loglevel", "error", "-i", str(input_path), "-c:v", "libx264", "-movflags", "faststart", "-y", str(cache_path)], check=True) + except subprocess.CalledProcessError: + if cache_path.exists(): + cache_path.unlink() + raise ValueError(f"Cannot process video file: {input_path}") + + return open(cache_path, "rb") def format_git_date(raw_date: str): date_object = datetime.strptime(raw_date.split()[1], "%Y-%m-%d") @@ -109,15 +464,15 @@ def get_disk_usage(): def get_drive_stats(): stats = json.loads(params.get("ApiCache_DriveStats", encoding="utf-8") or "{}") + frogpilot_stats = json.loads(params.get("FrogPilotStats") or "{}") is_metric = params.get_bool("IsMetric") - conversion = 1 if is_metric else CV.KPH_TO_MPH unit = "kilometers" if is_metric else "miles" def process(timeframe): data = stats.get(timeframe, {}) return { - "distance": data.get("distance", 0) * conversion, + "distance": data.get("distance", 0) * (1 if is_metric else CV.KPH_TO_MPH), "drives": data.get("routes", 0), "hours": data.get("minutes", 0) / 60, "unit": unit @@ -126,9 +481,9 @@ def get_drive_stats(): stats["all"] = process("all") stats["week"] = process("week") stats["frogpilot"] = { - "distance": params_tracking.get_int("FrogPilotKilometers") * conversion, - "hours": params_tracking.get_int("FrogPilotMinutes") / 60, - "drives": params_tracking.get_int("FrogPilotDrives"), + "distance": frogpilot_stats.get("FrogPilotMeters", 0) * (0.001 if is_metric else CV.METER_TO_MILE), + "hours": frogpilot_stats.get("FrogPilotSeconds", 0) / (60 * 60), + "drives": frogpilot_stats.get("FrogPilotDrives", 0), "unit": unit } @@ -173,6 +528,18 @@ def has_preserve_attr(path: str): def list_file(path): return sorted(os.listdir(path), reverse=True) +def normalize_theme_name(name, for_path=False): + name = name.replace("-user_created", "") + if for_path: + return name.lower().replace(" (", "-").replace(")", "").replace(" ", "-").replace("'", "").replace(".", "") + + parts = re.split(r'[-_]', name) + normalized_parts = [part.capitalize() for part in parts] + + if '-' in name and len(normalized_parts) > 1: + return f"{normalized_parts[0]} ({' '.join(normalized_parts[1:])})".replace(" Week", "") + return ' '.join(normalized_parts).replace(" Week", "") + def process_route(footage_path, route_name): segment_path = f"{footage_path}{route_name}--0" qcamera_path = f"{segment_path}/qcamera.ts" diff --git a/frogpilot/third_party/certifi/__init__.py b/frogpilot/third_party/certifi/__init__.py new file mode 100644 index 000000000..fe2a89167 --- /dev/null +++ b/frogpilot/third_party/certifi/__init__.py @@ -0,0 +1,4 @@ +from .core import contents, where + +__all__ = ["contents", "where"] +__version__ = "2025.08.03" diff --git a/frogpilot/third_party/certifi/__main__.py b/frogpilot/third_party/certifi/__main__.py new file mode 100644 index 000000000..8945b5da8 --- /dev/null +++ b/frogpilot/third_party/certifi/__main__.py @@ -0,0 +1,12 @@ +import argparse + +from certifi import contents, where + +parser = argparse.ArgumentParser() +parser.add_argument("-c", "--contents", action="store_true") +args = parser.parse_args() + +if args.contents: + print(contents()) +else: + print(where()) diff --git a/frogpilot/third_party/certifi/cacert.pem b/frogpilot/third_party/certifi/cacert.pem new file mode 100644 index 000000000..2077a1e0a --- /dev/null +++ b/frogpilot/third_party/certifi/cacert.pem @@ -0,0 +1,4738 @@ + +# Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Label: "Entrust Root Certification Authority" +# Serial: 1164660820 +# MD5 Fingerprint: d6:a5:c3:ed:5d:dd:3e:00:c1:3d:87:92:1f:1d:3f:e4 +# SHA1 Fingerprint: b3:1e:b1:b7:40:e3:6c:84:02:da:dc:37:d4:4d:f5:d4:67:49:52:f9 +# SHA256 Fingerprint: 73:c1:76:43:4f:1b:c6:d5:ad:f4:5b:0e:76:e7:27:28:7c:8d:e5:76:16:c1:e6:e6:14:1a:2b:2c:bc:7d:8e:4c +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 +Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW +KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw +NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw +NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy +ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV +BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo +Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4 +4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9 +KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI +rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi +94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB +sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi +gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo +kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE +vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t +O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua +AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP +9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/ +eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m +0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 2 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 2 O=QuoVadis Limited +# Label: "QuoVadis Root CA 2" +# Serial: 1289 +# MD5 Fingerprint: 5e:39:7b:dd:f8:ba:ec:82:e9:ac:62:ba:0c:54:00:2b +# SHA1 Fingerprint: ca:3a:fb:cf:12:40:36:4b:44:b2:16:20:88:80:48:39:19:93:7c:f7 +# SHA256 Fingerprint: 85:a0:dd:7d:d7:20:ad:b7:ff:05:f8:3d:54:2b:20:9d:c7:ff:45:28:f7:d6:77:b1:83:89:fe:a5:e5:c4:9e:86 +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x +GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv +b3QgQ0EgMjAeFw0wNjExMjQxODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNV +BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W +YWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa +GMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6XJxg +Fyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55J +WpzmM+Yklvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bB +rrcCaoF6qUWD4gXmuVbBlDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp ++ARz8un+XJiM9XOva7R+zdRcAitMOeGylZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1 +ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt66/3FsvbzSUr5R/7mp/i +Ucw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1JdxnwQ5hYIiz +PtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og +/zOhD7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UH +oycR7hYQe7xFSkyyBNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuI +yV77zGHcizN300QyNQliBJIWENieJ0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1Ud +EwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBQahGK8SEwzJQTU7tD2 +A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGUa6FJpEcwRTEL +MAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2f +BluornFdLwUvZ+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzn +g/iN/Ae42l9NLmeyhP3ZRPx3UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2Bl +fF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodmVjB3pjd4M1IQWK4/YY7yarHvGH5K +WWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK+JDSV6IZUaUtl0Ha +B0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrWIozc +hLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPR +TUIZ3Ph1WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWD +mbA4CD/pXvk1B+TJYm5Xf6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0Z +ohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y +4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8VCLAAVBpQ570su9t+Oza +8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 3" +# Serial: 1478 +# MD5 Fingerprint: 31:85:3c:62:94:97:63:b9:aa:fd:89:4e:af:6f:e0:cf +# SHA1 Fingerprint: 1f:49:14:f7:d8:74:95:1d:dd:ae:02:c0:be:fd:3a:2d:82:75:51:85 +# SHA256 Fingerprint: 18:f1:fc:7f:20:5d:f8:ad:dd:eb:7f:e0:07:dd:57:e3:af:37:5a:9c:4d:8d:73:54:6b:f4:f1:fe:d1:e1:8d:35 +-----BEGIN CERTIFICATE----- +MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x +GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv +b3QgQ0EgMzAeFw0wNjExMjQxOTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNV +BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W +YWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDM +V0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNggDhoB +4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUr +H556VOijKTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd +8lyyBTNvijbO0BNO/79KDDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9Cabwv +vWhDFlaJKjdhkf2mrk7AyxRllDdLkgbvBNDInIjbC3uBr7E9KsRlOni27tyAsdLT +mZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwpp5ijJUMv7/FfJuGITfhe +btfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8nT8KKdjc +T5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDt +WAEXMJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZ +c6tsgLjoC2SToJyMGf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A +4iLItLRkT9a6fUg+qGkM17uGcclzuD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYD +VR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHTBgkrBgEEAb5YAAMwgcUwgZMG +CCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNvbnN0 +aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 +aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVu +dC4wLQYIKwYBBQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2Nw +czALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4G +A1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4ywLQoUmkRzBFMQswCQYDVQQGEwJC +TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UEAxMSUXVvVmFkaXMg +Um9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZVqyM0 +7ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSem +d1o417+shvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd ++LJ2w/w4E6oM3kJpK27zPOuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B +4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadN +t54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp8kokUvd0/bpO5qgdAm6x +DYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBCbjPsMZ57 +k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6s +zHXug/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0j +Wy10QJLZYxkNc91pvGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeT +mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK +4SVhM7JZG+Ju1zdXtg2pEto= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root CA" +# Serial: 17154717934120587862167794914071425081 +# MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72 +# SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43 +# SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c +JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP +mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ +wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 +VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ +AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB +AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun +pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC +dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf +fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm +NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx +H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root CA" +# Serial: 10944719598952040374951832963794454346 +# MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e +# SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36 +# SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61 +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD +QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB +CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 +nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt +43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P +T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 +gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR +TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw +DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr +hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg +06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF +PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls +YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert High Assurance EV Root CA" +# Serial: 3553400076410547919724730734378100087 +# MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a +# SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25 +# SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm ++9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW +PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM +xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB +Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 +hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg +EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA +FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec +nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z +eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF +hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 +Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep ++OkuE6N36B9K +-----END CERTIFICATE----- + +# Issuer: CN=SwissSign Gold CA - G2 O=SwissSign AG +# Subject: CN=SwissSign Gold CA - G2 O=SwissSign AG +# Label: "SwissSign Gold CA - G2" +# Serial: 13492815561806991280 +# MD5 Fingerprint: 24:77:d9:a8:91:d1:3b:fa:88:2d:c2:ff:f8:cd:33:93 +# SHA1 Fingerprint: d8:c5:38:8a:b7:30:1b:1b:6e:d4:7a:e6:45:25:3a:6f:9f:1a:27:61 +# SHA256 Fingerprint: 62:dd:0b:e9:b9:f5:0a:16:3e:a0:f8:e7:5c:05:3b:1e:ca:57:ea:55:c8:68:8f:64:7c:68:81:f2:c8:35:7b:95 +-----BEGIN CERTIFICATE----- +MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV +BAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2ln +biBHb2xkIENBIC0gRzIwHhcNMDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBF +MQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMR8wHQYDVQQDExZT +d2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +CgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUqt2/8 +76LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+ +bbqBHH5CjCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c +6bM8K8vzARO/Ws/BtQpgvd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqE +emA8atufK+ze3gE/bk3lUIbLtK/tREDFylqM2tIrfKjuvqblCqoOpd8FUrdVxyJd +MmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvRAiTysybUa9oEVeXBCsdt +MDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuendjIj3o02y +MszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69y +FGkOpeUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPi +aG59je883WX0XaxR7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxM +gI93e2CaHt+28kgeDrpOVG2Y4OGiGqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCB +qTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUWyV7 +lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64OfPAeGZe6Drn +8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov +L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe6 +45R88a7A3hfm5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczO +UYrHUDFu4Up+GC9pWbY9ZIEr44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5 +O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOfMke6UiI0HTJ6CVanfCU2qT1L2sCC +bwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6mGu6uLftIdxf+u+yv +GPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxpmo/a +77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCC +hdiDyyJkvC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid3 +92qgQmwLOM7XdVAyksLfKzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEpp +Ld6leNcG2mqeSz53OiATIgHQv2ieY2BrNU0LbbqhPcCT4H8js1WtciVORvnSFu+w +ZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6LqjviOvrv1vA+ACOzB2+htt +Qc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ +-----END CERTIFICATE----- + +# Issuer: CN=SecureTrust CA O=SecureTrust Corporation +# Subject: CN=SecureTrust CA O=SecureTrust Corporation +# Label: "SecureTrust CA" +# Serial: 17199774589125277788362757014266862032 +# MD5 Fingerprint: dc:32:c3:a7:6d:25:57:c7:68:09:9d:ea:2d:a9:a2:d1 +# SHA1 Fingerprint: 87:82:c6:c3:04:35:3b:cf:d2:96:92:d2:59:3e:7d:44:d9:34:ff:11 +# SHA256 Fingerprint: f1:c1:b5:0a:e5:a2:0d:d8:03:0e:c9:f6:bc:24:82:3d:d3:67:b5:25:57:59:b4:e7:1b:61:fc:e9:f7:37:5d:73 +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI +MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x +FzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz +MTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv +cnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz +Zum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO +0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao +wW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj +7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS +8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT +BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg +JYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC +NxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3 +6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/ +3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm +D5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS +CPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +# Issuer: CN=Secure Global CA O=SecureTrust Corporation +# Subject: CN=Secure Global CA O=SecureTrust Corporation +# Label: "Secure Global CA" +# Serial: 9751836167731051554232119481456978597 +# MD5 Fingerprint: cf:f4:27:0d:d4:ed:dc:65:16:49:6d:3d:da:bf:6e:de +# SHA1 Fingerprint: 3a:44:73:5a:e5:81:90:1f:24:86:61:46:1e:3b:9c:c4:5f:f5:3a:1b +# SHA256 Fingerprint: 42:00:f5:04:3a:c8:59:0e:bb:52:7d:20:9e:d1:50:30:29:fb:cb:d4:1c:a1:b5:06:ec:27:f1:5a:de:7d:ac:69 +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK +MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x +GTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx +MjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg +Q29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ +iQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa +/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ +jnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI +HmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7 +sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w +gZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw +KaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG +AQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L +URYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO +H0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm +I50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY +iNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +# Issuer: CN=COMODO Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO Certification Authority O=COMODO CA Limited +# Label: "COMODO Certification Authority" +# Serial: 104350513648249232941998508985834464573 +# MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75 +# SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b +# SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66 +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB +gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV +BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw +MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl +YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P +RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3 +UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI +2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8 +Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp ++2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+ +DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O +nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW +/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g +PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u +QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY +SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv +IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4 +zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd +BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB +ZQ== +-----END CERTIFICATE----- + +# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Label: "COMODO ECC Certification Authority" +# Serial: 41578283867086692638256921589707938090 +# MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23 +# SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11 +# SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7 +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT +IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw +MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy +ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N +T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR +FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J +cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW +BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm +fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv +GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +# Issuer: CN=Certigna O=Dhimyotis +# Subject: CN=Certigna O=Dhimyotis +# Label: "Certigna" +# Serial: 18364802974209362175 +# MD5 Fingerprint: ab:57:a6:5b:7d:42:82:19:b5:d8:58:26:28:5e:fd:ff +# SHA1 Fingerprint: b1:2e:13:63:45:86:a4:6f:1a:b2:60:68:37:58:2d:c4:ac:fd:94:97 +# SHA256 Fingerprint: e3:b6:a2:db:2e:d7:ce:48:84:2f:7a:c5:32:41:c7:b7:1d:54:14:4b:fb:40:c1:1f:3f:1d:0b:42:f5:ee:a1:2d +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNV +BAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4X +DTA3MDYyOTE1MTMwNVoXDTI3MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQ +BgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwIQ2VydGlnbmEwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7qXOEm7RFHYeGifBZ4 +QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyHGxny +gQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbw +zBfsV1/pogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q +130yGLMLLGq/jj8UEYkgDncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2 +JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKfIrjxwo1p3Po6WAbfAgMBAAGjgbwwgbkw +DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQtCRZvgHyUtVF9lo53BEw +ZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJBgNVBAYT +AkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzj +AQ/JSP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG +9w0BAQUFAAOCAQEAhQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8h +bV6lUmPOEvjvKtpv6zf+EwLHyzs+ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFnc +fca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1kluPBS1xp81HlDQwY9qcEQCYsuu +HWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY1gkIl2PlwS6w +t0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +# Issuer: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority +# Subject: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority +# Label: "ePKI Root Certification Authority" +# Serial: 28956088682735189655030529057352760477 +# MD5 Fingerprint: 1b:2e:00:ca:26:06:90:3d:ad:fe:6f:15:68:d3:6b:b3 +# SHA1 Fingerprint: 67:65:0d:f1:7e:8e:7e:5b:82:40:a4:f4:56:4b:cf:e2:3d:69:c6:f0 +# SHA256 Fingerprint: c0:a6:f4:dc:63:a2:4b:fd:cf:54:ef:2a:6a:08:2a:0a:72:de:35:80:3e:2f:f5:ff:52:7a:e5:d8:72:06:df:d5 +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBe +MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 +ZC4xKjAoBgNVBAsMIWVQS0kgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe +Fw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMxMjdaMF4xCzAJBgNVBAYTAlRXMSMw +IQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEqMCgGA1UECwwhZVBL +SSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAH +SyZbCUNsIZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAh +ijHyl3SJCRImHJ7K2RKilTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3X +DZoTM1PRYfl61dd4s5oz9wCGzh1NlDivqOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1 +TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX12ruOzjjK9SXDrkb5wdJ +fzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0OWQqraffA +sgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uU +WH1+ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLS +nT0IFaUQAS2zMnaolQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pH +dmX2Os+PYhcZewoozRrSgx4hxyy/vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJip +NiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXiZo1jDiVN1Rmy5nk3pyKdVDEC +AwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/QkqiMAwGA1UdEwQF +MAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGB +uvl2ICO1J2B01GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6Yl +PwZpVnPDimZI+ymBV3QGypzqKOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkP +JXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdVxrsStZf0X4OFunHB2WyBEXYKCrC/ +gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEPNXubrjlpC2JgQCA2 +j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+rGNm6 +5ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUB +o2M3IUxExJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS +/jQ6fbjpKdx2qcgw+BRxgMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2z +Gp1iro2C6pSe3VkQw63d4k3jMdXH7OjysP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTE +W9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmODBCEIZ43ygknQW/2xzQ+D +hNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +# Issuer: O=certSIGN OU=certSIGN ROOT CA +# Subject: O=certSIGN OU=certSIGN ROOT CA +# Label: "certSIGN ROOT CA" +# Serial: 35210227249154 +# MD5 Fingerprint: 18:98:c0:d6:e9:3a:fc:f9:b0:f5:0c:f7:4b:01:44:17 +# SHA1 Fingerprint: fa:b7:ee:36:97:26:62:fb:2d:b0:2a:f6:bf:03:fd:e8:7c:4b:2f:9b +# SHA256 Fingerprint: ea:a9:62:c4:fa:4a:6b:af:eb:e4:15:19:6d:35:1c:cd:88:8d:4f:53:f3:fa:8a:e6:d7:c4:66:a9:4e:60:42:bb +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYT +AlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBD +QTAeFw0wNjA3MDQxNzIwMDRaFw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJP +MREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7IJUqOtdu0KBuqV5Do +0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHHrfAQ +UySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5d +RdY4zTW2ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQ +OA7+j0xbm0bqQfWwCHTD0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwv +JoIQ4uNllAoEwF73XVv4EOLQunpL+943AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08C +AwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAcYwHQYDVR0O +BBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IBAQA+0hyJ +LjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecY +MnQ8SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ +44gx+FkagQnIl6Z0x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6I +Jd1hJyMctTEHBDa0GpC9oHRxUIltvBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNw +i/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7NzTogVZ96edhBiIL5VaZVDADlN +9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +# Issuer: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) +# Subject: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) +# Label: "NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny" +# Serial: 80544274841616 +# MD5 Fingerprint: c5:a1:b7:ff:73:dd:d6:d7:34:32:18:df:fc:3c:ad:88 +# SHA1 Fingerprint: 06:08:3f:59:3f:15:a1:04:a0:69:a4:6b:a9:03:d0:06:b7:97:09:91 +# SHA256 Fingerprint: 6c:61:da:c3:a2:de:f0:31:50:6b:e0:36:d2:a6:fe:40:19:94:fb:d1:3d:f9:c8:d4:66:59:92:74:c4:46:ec:98 +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQG +EwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3 +MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNl +cnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBBcmFueSAoQ2xhc3MgR29sZCkgRsWR +dGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgxMjA2MTUwODIxWjCB +pzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxOZXRM +b2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlm +aWNhdGlvbiBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNz +IEdvbGQpIEbFkXRhbsO6c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAxCRec75LbRTDofTjl5Bu0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrT +lF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw/HpYzY6b7cNGbIRwXdrz +AZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAkH3B5r9s5 +VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRG +ILdwfzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2 +BJtr+UBdADTHLpl1neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAG +AQH/AgEEMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2M +U9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwWqZw8UQCgwBEIBaeZ5m8BiFRh +bvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTtaYtOUZcTh5m2C ++C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2F +uLjbvrW5KfnaNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2 +XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +# Issuer: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. +# Subject: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. +# Label: "Microsec e-Szigno Root CA 2009" +# Serial: 14014712776195784473 +# MD5 Fingerprint: f8:49:f4:03:bc:44:2d:83:be:48:69:7d:29:64:fc:b1 +# SHA1 Fingerprint: 89:df:74:fe:5c:f4:0f:4a:80:f9:e3:37:7d:54:da:91:e1:01:31:8e +# SHA256 Fingerprint: 3c:5f:81:fe:a5:fa:b8:2c:64:bf:a2:ea:ec:af:cd:e8:e0:77:fc:86:20:a7:ca:e5:37:16:3d:f3:6e:db:f3:78 +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD +VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0 +ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0G +CSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTAeFw0wOTA2MTYxMTMwMThaFw0y +OTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3Qx +FjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3pp +Z25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvP +kd6mJviZpWNwrZuuyjNAfW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tc +cbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG0IMZfcChEhyVbUr02MelTTMuhTlAdX4U +fIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKApxn1ntxVUwOXewdI/5n7 +N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm1HxdrtbC +xkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1 ++rUCAwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPM +Pcu1SCOhGnqmKrs0aDAbBgNVHREEFDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqG +SIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0olZMEyL/azXm4Q5DwpL7v8u8h +mLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfXI/OMn74dseGk +ddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c +2Pm2G2JwCz02yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5t +HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Label: "GlobalSign Root CA - R3" +# Serial: 4835703278459759426209954 +# MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28 +# SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad +# SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 +MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 +RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT +gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm +KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd +QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ +XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw +DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o +LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU +RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp +jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK +6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX +mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs +Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH +WD9f +-----END CERTIFICATE----- + +# Issuer: CN=Izenpe.com O=IZENPE S.A. +# Subject: CN=Izenpe.com O=IZENPE S.A. +# Label: "Izenpe.com" +# Serial: 917563065490389241595536686991402621 +# MD5 Fingerprint: a6:b0:cd:85:80:da:5c:50:34:a3:39:90:2f:55:67:73 +# SHA1 Fingerprint: 2f:78:3d:25:52:18:a7:4a:65:39:71:b5:2c:a2:9c:45:15:6f:e9:19 +# SHA256 Fingerprint: 25:30:cc:8e:98:32:15:02:ba:d9:6f:9b:1f:ba:1b:09:9e:2d:29:9e:0f:45:48:bb:91:4f:36:3b:c0:d4:53:1f +-----BEGIN CERTIFICATE----- +MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4 +MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6 +ZW5wZS5jb20wHhcNMDcxMjEzMTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYD +VQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5j +b20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ03rKDx6sp4boFmVq +scIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAKClaO +xdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6H +LmYRY2xU+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFX +uaOKmMPsOzTFlUFpfnXCPCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQD +yCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxTOTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+ +JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbKF7jJeodWLBoBHmy+E60Q +rLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK0GqfvEyN +BjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8L +hij+0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIB +QFqNeb+Lz0vPqhbBleStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+ +HMh3/1uaD7euBUbl8agW7EekFwIDAQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2lu +Zm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+SVpFTlBFIFMuQS4gLSBDSUYg +QTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBGNjIgUzgxQzBB +BgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx +MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUA +A4ICAQB4pgwWSp9MiDrAyw6lFn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWb +laQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbgakEyrkgPH7UIBzg/YsfqikuFgba56 +awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8qhT/AQKM6WfxZSzwo +JNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Csg1lw +LDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCT +VyvehQP5aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGk +LhObNA5me0mrZJfQRsN5nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJb +UjWumDqtujWTI6cfSN01RpiyEGjkpTHCClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/ +QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZoQ0iy2+tzJOeRf1SktoA+ +naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1ZWrOZyGls +QyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== +-----END CERTIFICATE----- + +# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Label: "Go Daddy Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01 +# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b +# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT +EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp +ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz +NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH +EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE +AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD +E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH +/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy +DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh +GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR +tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA +AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX +WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu +9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr +gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo +2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI +4uJEvlz36hz1 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96 +# SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e +# SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5 +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs +ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw +MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj +aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp +Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg +nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 +HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N +Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN +dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 +HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G +CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU +sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 +4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg +8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 +mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Services Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2 +# SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f +# SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5 +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs +ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD +VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy +ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy +dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p +OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 +8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K +Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe +hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk +6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw +DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q +AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI +bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB +ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z +qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn +0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN +sSi6 +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Commercial O=AffirmTrust +# Subject: CN=AffirmTrust Commercial O=AffirmTrust +# Label: "AffirmTrust Commercial" +# Serial: 8608355977964138876 +# MD5 Fingerprint: 82:92:ba:5b:ef:cd:8a:6f:a6:3d:55:f9:84:f6:d6:b7 +# SHA1 Fingerprint: f9:b5:b6:32:45:5f:9c:be:ec:57:5f:80:dc:e9:6e:2c:c7:b2:78:b7 +# SHA256 Fingerprint: 03:76:ab:1d:54:c5:f9:80:3c:e4:b2:e2:01:a0:ee:7e:ef:7b:57:b6:36:e8:a9:3c:9b:8d:48:60:c9:6f:5f:a7 +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP +Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr +ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL +MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1 +yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr +VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/ +nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG +XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj +vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt +Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g +N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC +nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Networking O=AffirmTrust +# Subject: CN=AffirmTrust Networking O=AffirmTrust +# Label: "AffirmTrust Networking" +# Serial: 8957382827206547757 +# MD5 Fingerprint: 42:65:ca:be:01:9a:9a:4c:a9:8c:41:49:cd:c0:d5:7f +# SHA1 Fingerprint: 29:36:21:02:8b:20:ed:02:f5:66:c5:32:d1:d6:ed:90:9f:45:00:2f +# SHA256 Fingerprint: 0a:81:ec:5a:92:97:77:f1:45:90:4a:f3:8d:5d:50:9f:66:b5:e2:c5:8f:cd:b5:31:05:8b:0e:17:f3:f0:b4:1b +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y +YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua +kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL +QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp +6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG +yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i +QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO +tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu +QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ +Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u +olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48 +x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium O=AffirmTrust +# Subject: CN=AffirmTrust Premium O=AffirmTrust +# Label: "AffirmTrust Premium" +# Serial: 7893706540734352110 +# MD5 Fingerprint: c4:5d:0e:48:b6:ac:28:30:4e:0a:bc:f9:38:16:87:57 +# SHA1 Fingerprint: d8:a6:33:2c:e0:03:6f:b1:85:f6:63:4f:7d:6a:06:65:26:32:28:27 +# SHA256 Fingerprint: 70:a7:3f:7f:37:6b:60:07:42:48:90:45:34:b1:14:82:d5:bf:0e:69:8e:cc:49:8d:f5:25:77:eb:f2:e9:3b:9a +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz +dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG +A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U +cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf +qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ +JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ ++jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS +s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5 +HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7 +70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG +V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S +qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S +5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia +C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX +OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE +FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2 +KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B +8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ +MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc +0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ +u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF +u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH +YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8 +GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO +RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e +KeC2uAloGRwYQw== +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium ECC O=AffirmTrust +# Subject: CN=AffirmTrust Premium ECC O=AffirmTrust +# Label: "AffirmTrust Premium ECC" +# Serial: 8401224907861490260 +# MD5 Fingerprint: 64:b0:09:55:cf:b1:d5:99:e2:be:13:ab:a6:5d:ea:4d +# SHA1 Fingerprint: b8:23:6b:00:2f:1d:16:86:53:01:55:6c:11:a4:37:ca:eb:ff:c3:bb +# SHA256 Fingerprint: bd:71:fd:f6:da:97:e4:cf:62:d1:64:7a:dd:25:81:b0:7d:79:ad:f8:39:7e:b4:ec:ba:9c:5e:84:88:82:14:23 +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC +VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ +cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ +BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt +VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D +0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9 +ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G +A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs +aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I +flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ== +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Network CA" +# Serial: 279744 +# MD5 Fingerprint: d5:e9:81:40:c5:18:69:fc:46:2c:89:75:62:0f:aa:78 +# SHA1 Fingerprint: 07:e0:32:e0:20:b7:2c:3f:19:2f:06:28:a2:59:3a:19:a7:0f:06:9e +# SHA256 Fingerprint: 5c:58:46:8d:55:f5:8e:49:7e:74:39:82:d2:b5:00:10:b6:d1:65:37:4a:cf:83:a7:d4:a3:2d:b7:68:c4:40:8e +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM +MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D +ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU +cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 +WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg +Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw +IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH +UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM +TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU +BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM +kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x +AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV +HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y +sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL +I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 +J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY +VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +# Issuer: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA +# Label: "TWCA Root Certification Authority" +# Serial: 1 +# MD5 Fingerprint: aa:08:8f:f6:f9:7b:b7:f2:b1:a7:1e:9b:ea:ea:bd:79 +# SHA1 Fingerprint: cf:9e:87:6d:d3:eb:fc:42:26:97:a3:b5:a3:7a:a0:76:a9:06:23:48 +# SHA256 Fingerprint: bf:d8:8f:e1:10:1c:41:ae:3e:80:1b:f8:be:56:35:0e:e9:ba:d1:a6:b9:bd:51:5e:dc:5c:6d:5b:87:11:ac:44 +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzES +MBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFU +V0NBIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMz +WhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJVEFJV0FO +LUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFE +AcK0HMMxQhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HH +K3XLfJ+utdGdIzdjp9xCoi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeX +RfwZVzsrb+RH9JlF/h3x+JejiB03HFyP4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/z +rX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1ry+UPizgN7gr8/g+YnzAx +3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkq +hkiG9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeC +MErJk/9q56YAf4lCmtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdls +XebQ79NqZp4VKIV66IIArB6nCWlWQtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62D +lhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVYT0bf+215WfKEIlKuD8z7fDvn +aspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocnyYh0igzyXxfkZ +YiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +# Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 +# Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 +# Label: "Security Communication RootCA2" +# Serial: 0 +# MD5 Fingerprint: 6c:39:7d:a4:0e:55:59:b2:3f:d6:41:b1:12:50:de:43 +# SHA1 Fingerprint: 5f:3b:8c:f2:f8:10:b3:7d:78:b4:ce:ec:19:19:c3:73:34:b9:c7:74 +# SHA256 Fingerprint: 51:3b:2c:ec:b8:10:d4:cd:e5:dd:85:39:1a:df:c6:c2:dd:60:d8:7b:b7:36:d2:b5:21:48:4a:a4:7a:0e:be:f6 +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDEl +MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMe +U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoX +DTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRy +dXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3VyaXR5IENvbW11bmlj +YXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAV +OVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGr +zbl+dp+++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVM +VAX3NuRFg3sUZdbcDE3R3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQ +hNBqyjoGADdH5H5XTz+L62e4iKrFvlNVspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWO +ojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1KEOtOghY6rCcMU/Gt1SSw +awNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8QIH4D5cs +OPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 +DQEBCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpF +coJxDjrSzG+ntKEju/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXc +okgfGT+Ok+vx+hfuzU7jBBJV1uXk3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8 +t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6qtnRGEmyR7jTV7JqR50S+kDFy +1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29mvVXIwAHIRc/ +SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +# Issuer: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 +# Subject: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 +# Label: "Actalis Authentication Root CA" +# Serial: 6271844772424770508 +# MD5 Fingerprint: 69:c1:0d:4f:07:a3:1b:c3:fe:56:3d:04:bc:11:f6:a6 +# SHA1 Fingerprint: f3:73:b3:87:06:5a:28:84:8a:f2:f3:4a:ce:19:2b:dd:c7:8e:9c:ac +# SHA256 Fingerprint: 55:92:60:84:ec:96:3a:64:b9:6e:2a:be:01:ce:0b:a8:6a:64:fb:fe:bc:c7:aa:b5:af:c1:55:b3:7f:d7:60:66 +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE +BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w +MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC +SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1 +ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv +UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX +4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9 +KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/ +gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb +rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ +51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F +be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe +KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F +v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn +fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7 +jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz +ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL +e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70 +jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz +WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V +SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j +pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX +X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok +fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R +K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU +ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU +LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT +LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- + +# Issuer: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 +# Subject: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 +# Label: "Buypass Class 2 Root CA" +# Serial: 2 +# MD5 Fingerprint: 46:a7:d2:fe:45:fb:64:5a:a8:59:90:9b:78:44:9b:29 +# SHA1 Fingerprint: 49:0a:75:74:de:87:0a:47:fe:58:ee:f6:c7:6b:eb:c6:0b:12:40:99 +# SHA256 Fingerprint: 9a:11:40:25:19:7c:5b:b9:5d:94:e6:3d:55:cd:43:79:08:47:b6:46:b2:3c:df:11:ad:a4:a0:0e:ff:15:fb:48 +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd +MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg +Q2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow +TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw +HgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr +6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV +L4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91 +1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx +MlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ +QmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB +arcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr +Us3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi +FRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS +P/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN +9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP +AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz +uvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h +9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t +OluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo ++fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7 +KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2 +DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us +H8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ +I+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7 +5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h +3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz +Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA= +-----END CERTIFICATE----- + +# Issuer: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 +# Subject: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 +# Label: "Buypass Class 3 Root CA" +# Serial: 2 +# MD5 Fingerprint: 3d:3b:18:9e:2c:64:5a:e8:d5:88:ce:0e:f9:37:c2:ec +# SHA1 Fingerprint: da:fa:f7:fa:66:84:ec:06:8f:14:50:bd:c7:c2:81:a5:bc:a9:64:57 +# SHA256 Fingerprint: ed:f7:eb:bc:a2:7a:2a:38:4d:38:7b:7d:40:10:c6:66:e2:ed:b4:84:3e:4c:29:b4:ae:1d:5b:93:32:e6:b2:4d +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd +MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg +Q2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow +TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw +HgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y +ZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E +N3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9 +tznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX +0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c +/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X +KhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY +zIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS +O1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D +34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP +K9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3 +AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv +Tg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj +QTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS +IGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2 +HJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa +O5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv +033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u +dmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE +kbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41 +3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD +u79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq +4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc= +-----END CERTIFICATE----- + +# Issuer: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Subject: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Label: "T-TeleSec GlobalRoot Class 3" +# Serial: 1 +# MD5 Fingerprint: ca:fb:40:a8:4e:39:92:8a:1d:fe:8e:2f:c4:27:ea:ef +# SHA1 Fingerprint: 55:a6:72:3e:cb:f2:ec:cd:c3:23:74:70:19:9d:2a:be:11:e3:81:d1 +# SHA256 Fingerprint: fd:73:da:d3:1c:64:4f:f1:b4:3b:ef:0c:cd:da:96:71:0b:9c:d9:87:5e:ca:7e:31:70:7a:f3:e9:6d:52:2b:bd +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx +KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd +BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl +YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 +OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy +aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 +ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN +8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ +RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 +hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 +ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM +EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 +A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy +WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ +1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 +6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT +91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p +TpPDpFQUWw== +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH +# Subject: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH +# Label: "D-TRUST Root Class 3 CA 2 2009" +# Serial: 623603 +# MD5 Fingerprint: cd:e0:25:69:8d:47:ac:9c:89:35:90:f7:fd:51:3d:2f +# SHA1 Fingerprint: 58:e8:ab:b0:36:15:33:fb:80:f7:9b:1b:6d:29:d3:ff:8d:5f:00:f0 +# SHA256 Fingerprint: 49:e7:a4:42:ac:f0:ea:62:87:05:00:54:b5:25:64:b6:50:e4:f4:9e:42:e3:48:d6:aa:38:e0:39:e9:57:b1:c1 +-----BEGIN CERTIFICATE----- +MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRF +MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBD +bGFzcyAzIENBIDIgMjAwOTAeFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NTha +ME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMM +HkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOADER03 +UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42 +tSHKXzlABF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9R +ySPocq60vFYJfxLLHLGvKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsM +lFqVlNpQmvH/pStmMaTJOKDfHR+4CS7zp+hnUquVH+BGPtikw8paxTGA6Eian5Rp +/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUCAwEAAaOCARowggEWMA8G +A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ4PGEMA4G +A1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVj +dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUy +MENBJTIwMiUyMDIwMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRl +cmV2b2NhdGlvbmxpc3QwQ6BBoD+GPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3Js +L2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAwOS5jcmwwDQYJKoZIhvcNAQEL +BQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm2H6NMLVwMeni +acfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 +o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4K +zCUqNQT4YJEVdT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8 +PIWmawomDeCTmGCufsYkl4phX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3Y +Johw1+qRzT65ysCQblrGXnRl11z+o+I= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH +# Subject: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH +# Label: "D-TRUST Root Class 3 CA 2 EV 2009" +# Serial: 623604 +# MD5 Fingerprint: aa:c6:43:2c:5e:2d:cd:c4:34:c0:50:4f:11:02:4f:b6 +# SHA1 Fingerprint: 96:c9:1b:0b:95:b4:10:98:42:fa:d0:d8:22:79:fe:60:fa:b9:16:83 +# SHA256 Fingerprint: ee:c5:49:6b:98:8c:e9:86:25:b9:34:09:2e:ec:29:08:be:d0:b0:f3:16:c2:d4:73:0c:84:ea:f1:f3:d3:48:81 +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRF +MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBD +bGFzcyAzIENBIDIgRVYgMjAwOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUw +NDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNV +BAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAwOTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfSegpn +ljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM0 +3TP1YtHhzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6Z +qQTMFexgaDbtCHu39b+T7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lR +p75mpoo6Kr3HGrHhFPC+Oh25z1uxav60sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8 +HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure3511H3a6UCAwEAAaOCASQw +ggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyvcop9Ntea +HNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFw +Oi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xh +c3MlMjAzJTIwQ0ElMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1E +RT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQt +dHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xhc3NfM19jYV8yX2V2XzIwMDku +Y3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+PPoeUSbrh/Yp +3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 +nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNF +CSuGdXzfX2lXANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7na +xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX +KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1 +-----END CERTIFICATE----- + +# Issuer: CN=CA Disig Root R2 O=Disig a.s. +# Subject: CN=CA Disig Root R2 O=Disig a.s. +# Label: "CA Disig Root R2" +# Serial: 10572350602393338211 +# MD5 Fingerprint: 26:01:fb:d8:27:a7:17:9a:45:54:38:1a:43:01:3b:03 +# SHA1 Fingerprint: b5:61:eb:ea:a4:de:e4:25:4b:69:1a:98:a5:57:47:c2:34:c7:d9:71 +# SHA256 Fingerprint: e2:3d:4a:03:6d:7b:70:e9:f5:95:b1:42:20:79:d2:b9:1e:df:bb:1f:b6:51:a0:63:3e:aa:8a:9d:c5:f8:07:03 +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV +BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu +MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQy +MDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx +EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjIw +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbCw3Oe +NcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNH +PWSb6WiaxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3I +x2ymrdMxp7zo5eFm1tL7A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbe +QTg06ov80egEFGEtQX6sx3dOy1FU+16SGBsEWmjGycT6txOgmLcRK7fWV8x8nhfR +yyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqVg8NTEQxzHQuyRpDRQjrO +QG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa5Beny912 +H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJ +QfYEkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUD +i/ZnWejBBhG93c+AAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORs +nLMOPReisjQS1n6yqEm70XooQL6iFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1 +rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud +DwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5uQu0wDQYJKoZI +hvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM +tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqf +GopTpti72TVVsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkb +lvdhuDvEK7Z4bLQjb/D907JedR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka ++elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W81k/BfDxujRNt+3vrMNDcTa/F1bal +TFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjxmHHEt38OFdAlab0i +nSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01utI3 +gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18Dr +G5gPcFw0sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3Os +zMOl6W8KjptlwlCFtaOgUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8x +L4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL +-----END CERTIFICATE----- + +# Issuer: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV +# Subject: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV +# Label: "ACCVRAIZ1" +# Serial: 6828503384748696800 +# MD5 Fingerprint: d0:a0:5a:ee:05:b6:09:94:21:a1:7d:f1:b2:29:82:02 +# SHA1 Fingerprint: 93:05:7a:88:15:c6:4f:ce:88:2f:fa:91:16:52:28:78:bc:53:64:17 +# SHA256 Fingerprint: 9a:6e:c0:12:e1:a7:da:9d:be:34:19:4d:47:8a:d7:c0:db:18:22:fb:07:1d:f1:29:81:49:6e:d1:04:38:41:13 +-----BEGIN CERTIFICATE----- +MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE +AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw +CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ +BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND +VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb +qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY +HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo +G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA +lHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr +IA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/ +0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH +k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47 +4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO +m3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa +cXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl +uUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI +KwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls +ZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG +AQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 +VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT +VfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG +CCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA +cgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA +QwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA +7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA +cgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA +QwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA +czAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu +aHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt +aW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud +DwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF +BQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp +D70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU +JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m +AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD +vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms +tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH +7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h +I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA +h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF +d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H +pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7 +-----END CERTIFICATE----- + +# Issuer: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA +# Label: "TWCA Global Root CA" +# Serial: 3262 +# MD5 Fingerprint: f9:03:7e:cf:e6:9e:3c:73:7a:2a:90:07:69:ff:2b:96 +# SHA1 Fingerprint: 9c:bb:48:53:f6:a4:f6:d3:52:a4:e8:32:52:55:60:13:f5:ad:af:65 +# SHA256 Fingerprint: 59:76:90:07:f7:68:5d:0f:cd:50:87:2f:9f:95:d5:75:5a:5b:2b:45:7d:81:f3:69:2b:61:0a:98:67:2f:0e:1b +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcx +EjAQBgNVBAoTCVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMT +VFdDQSBHbG9iYWwgUm9vdCBDQTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5 +NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExEDAOBgNVBAsT +B1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3QgQ0EwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2CnJfF +10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz +0ALfUPZVr2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfCh +MBwqoJimFb3u/Rk28OKRQ4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbH +zIh1HrtsBv+baz4X7GGqcXzGHaL3SekVtTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc +46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1WKKD+u4ZqyPpcC1jcxkt2 +yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99sy2sbZCi +laLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYP +oA/pyJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQA +BDzfuBSO6N+pjWxnkjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcE +qYSjMq+u7msXi7Kx/mzhkIyIqJdIzshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm +4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6gcFGn90xHNcgL +1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn +LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WF +H6vPNOw/KP4M8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNo +RI2T9GRwoD2dKAXDOXC4Ynsg/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+ +nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlglPx4mI88k1HtQJAH32RjJMtOcQWh +15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryPA9gK8kxkRr05YuWW +6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3mi4TW +nsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5j +wa19hAM8EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWz +aGHQRiapIVJpLesux+t3zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmy +KwbQBM0= +-----END CERTIFICATE----- + +# Issuer: CN=TeliaSonera Root CA v1 O=TeliaSonera +# Subject: CN=TeliaSonera Root CA v1 O=TeliaSonera +# Label: "TeliaSonera Root CA v1" +# Serial: 199041966741090107964904287217786801558 +# MD5 Fingerprint: 37:41:49:1b:18:56:9a:26:f5:ad:c2:66:fb:40:a5:4c +# SHA1 Fingerprint: 43:13:bb:96:f1:d5:86:9b:c1:4e:6a:92:f6:cf:f6:34:69:87:82:37 +# SHA256 Fingerprint: dd:69:36:fe:21:f8:f0:77:c1:23:a1:a5:21:c1:22:24:f7:22:55:b7:3e:03:a7:26:06:93:e8:a2:4b:0f:a3:89 +-----BEGIN CERTIFICATE----- +MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAw +NzEUMBIGA1UECgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJv +b3QgQ0EgdjEwHhcNMDcxMDE4MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYD +VQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwWVGVsaWFTb25lcmEgUm9vdCBDQSB2 +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+6yfwIaPzaSZVfp3F +VRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA3GV1 +7CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+X +Z75Ljo1kB1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+ +/jXh7VB7qTCNGdMJjmhnXb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs +81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxHoLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkm +dtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3F0fUTPHSiXk+TT2YqGHe +Oh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJoWjiUIMu +sDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4 +pgd7gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fs +slESl1MpWtTwEhDcTwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQ +arMCpgKIv7NHfirZ1fpoeDVNAgMBAAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYD +VR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qWDNXr+nuqF+gTEjANBgkqhkiG +9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNmzqjMDfz1mgbl +dxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx +0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1Tj +TQpgcmLNkQfWpb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBed +Y2gea+zDTYa4EzAvXUYNR0PVG6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7 +Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpcc41teyWRyu5FrgZLAMzTsVlQ2jqI +OylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOTJsjrDNYmiLbAJM+7 +vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2qReW +t88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcn +HL/EVlP6Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVx +SK236thZiNSQvxaz2emsWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= +-----END CERTIFICATE----- + +# Issuer: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Subject: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Label: "T-TeleSec GlobalRoot Class 2" +# Serial: 1 +# MD5 Fingerprint: 2b:9b:9e:e4:7b:6c:1f:00:72:1a:cc:c1:77:79:df:6a +# SHA1 Fingerprint: 59:0d:2d:7d:88:4f:40:2e:61:7e:a5:62:32:17:65:cf:17:d8:94:e9 +# SHA256 Fingerprint: 91:e2:f5:78:8d:58:10:eb:a7:ba:58:73:7d:e1:54:8a:8e:ca:cd:01:45:98:bc:0b:14:3e:04:1b:17:05:25:52 +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx +KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd +BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl +YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 +OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy +aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 +ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd +AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC +FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi +1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq +jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ +wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ +WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy +NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC +uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw +IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 +g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN +9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP +BSeOE6Fuwg== +-----END CERTIFICATE----- + +# Issuer: CN=Atos TrustedRoot 2011 O=Atos +# Subject: CN=Atos TrustedRoot 2011 O=Atos +# Label: "Atos TrustedRoot 2011" +# Serial: 6643877497813316402 +# MD5 Fingerprint: ae:b9:c4:32:4b:ac:7f:5d:66:cc:77:94:bb:2a:77:56 +# SHA1 Fingerprint: 2b:b1:f5:3e:55:0c:1d:c5:f1:d4:e6:b7:6a:46:4b:55:06:02:ac:21 +# SHA256 Fingerprint: f3:56:be:a2:44:b7:a9:1e:b3:5d:53:ca:9a:d7:86:4a:ce:01:8e:2d:35:d5:f8:f9:6d:df:68:a6:f4:1a:a4:74 +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UE +AwwVQXRvcyBUcnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQG +EwJERTAeFw0xMTA3MDcxNDU4MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMM +FUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsGA1UECgwEQXRvczELMAkGA1UEBhMC +REUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVhTuXbyo7LjvPpvMp +Nb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr54rM +VD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+ +SZFhyBH+DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ +4J7sVaE3IqKHBAUsR320HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0L +cp2AMBYHlT8oDv3FdU9T1nSatCQujgKRz3bFmx5VdJx4IbHwLfELn8LVlhgf8FQi +eowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7Rl+lwrrw7GWzbITAPBgNV +HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZbNshMBgG +A1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3 +DQEBCwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8j +vZfza1zv7v1Apt+hk6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kP +DpFrdRbhIfzYJsdHt6bPWHJxfrrhTZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pc +maHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a961qn8FYiqTxlVMYVqL2Gns2D +lmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G3mB/ufNPRJLv +KrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 1 G3" +# Serial: 687049649626669250736271037606554624078720034195 +# MD5 Fingerprint: a4:bc:5b:3f:fe:37:9a:fa:64:f0:e2:fa:05:3d:0b:ab +# SHA1 Fingerprint: 1b:8e:ea:57:96:29:1a:c9:39:ea:b8:0a:81:1a:73:73:c0:93:79:67 +# SHA256 Fingerprint: 8a:86:6f:d1:b2:76:b5:7e:57:8e:92:1c:65:82:8a:2b:ed:58:e9:f2:f2:88:05:41:34:b7:f1:f4:bf:c9:cc:74 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00 +MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakEPBtV +wedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWe +rNrwU8lmPNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF341 +68Xfuw6cwI2H44g4hWf6Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh +4Pw5qlPafX7PGglTvF0FBM+hSo+LdoINofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXp +UhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/lg6AnhF4EwfWQvTA9xO+o +abw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV7qJZjqlc +3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/G +KubX9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSt +hfbZxbGL0eUQMk1fiyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KO +Tk0k+17kBL5yG6YnLUlamXrXXAkgt3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOt +zCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZIhvcNAQELBQAD +ggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC +MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2 +cDMT/uFPpiN3GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUN +qXsCHKnQO18LwIE6PWThv6ctTr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5 +YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP+V04ikkwj+3x6xn0dxoxGE1nVGwv +b2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh3jRJjehZrJ3ydlo2 +8hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fawx/k +NSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNj +ZgKAvQU6O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhp +q1467HxpvMc7hU6eFbm0FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFt +nh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOVhMJKzRwuJIczYOXD +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 2 G3" +# Serial: 390156079458959257446133169266079962026824725800 +# MD5 Fingerprint: af:0c:86:6e:bf:40:2d:7f:0b:3e:12:50:ba:12:3d:06 +# SHA1 Fingerprint: 09:3c:61:f3:8b:8b:dc:7d:55:df:75:38:02:05:00:e1:25:f5:c8:36 +# SHA256 Fingerprint: 8f:e4:fb:0a:f9:3a:4d:0d:67:db:0b:eb:b2:3e:37:c7:1b:f3:25:dc:bc:dd:24:0e:a0:4d:af:58:b4:7e:18:40 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00 +MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFhZiFf +qq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMW +n4rjyduYNM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ym +c5GQYaYDFCDy54ejiK2toIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+ +O7q414AB+6XrW7PFXmAqMaCvN+ggOp+oMiwMzAkd056OXbxMmO7FGmh77FOm6RQ1 +o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+lV0POKa2Mq1W/xPtbAd0j +IaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZoL1NesNKq +IcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz +8eQQsSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43eh +vNURG3YBZwjgQQvD6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l +7ZizlWNof/k19N+IxWA1ksB8aRxhlRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALG +cC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZIhvcNAQELBQAD +ggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 +AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RC +roijQ1h5fq7KpVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0Ga +W/ZZGYjeVYg3UQt4XAoeo0L9x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4n +lv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgzdWqTHBLmYF5vHX/JHyPLhGGfHoJE ++V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6XU/IyAgkwo1jwDQHV +csaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+NwmNtd +dbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNg +KCLjsZWDzYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeM +HVOyToV7BjjHLPj4sHKNJeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4 +WSr2Rz0ZiC3oheGe7IUIarFsNMkd7EgrO3jtZsSOeWmD3n+M +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 3 G3" +# Serial: 268090761170461462463995952157327242137089239581 +# MD5 Fingerprint: df:7d:b9:ad:54:6f:68:a1:df:89:57:03:97:43:b0:d7 +# SHA1 Fingerprint: 48:12:bd:92:3c:a8:c4:39:06:e7:30:6d:27:96:e6:a4:cf:22:2e:7d +# SHA256 Fingerprint: 88:ef:81:de:20:2e:b0:18:45:2e:43:f8:64:72:5c:ea:5f:bd:1f:c2:d9:d2:05:73:07:09:c5:d8:b8:69:0f:46 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00 +MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286IxSR +/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNu +FoM7pmRLMon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXR +U7Ox7sWTaYI+FrUoRqHe6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+c +ra1AdHkrAj80//ogaX3T7mH1urPnMNA3I4ZyYUUpSFlob3emLoG+B01vr87ERROR +FHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3UVDmrJqMz6nWB2i3ND0/k +A9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f75li59wzw +eyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634Ryl +sSqiMd5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBp +VzgeAVuNVejH38DMdyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0Q +A4XN8f+MFrXBsj6IbGB/kE+V9/YtrQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ +ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZIhvcNAQELBQAD +ggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px +KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnI +FUBhynLWcKzSt/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5Wvv +oxXqA/4Ti2Tk08HS6IT7SdEQTXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFg +u/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9DuDcpmvJRPpq3t/O5jrFc/ZSXPsoaP +0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGibIh6BJpsQBJFxwAYf +3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmDhPbl +8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+ +DhcI00iX0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HN +PlopNLk9hM6xZdRZkZFWdSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ +ywaZWWDYWGWVjUTR939+J399roD1B0y2PpxxVJkES/1Y+Zj0 +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root G2" +# Serial: 15385348160840213938643033620894905419 +# MD5 Fingerprint: 92:38:b9:f8:63:24:82:65:2c:57:33:e6:fe:81:8f:9d +# SHA1 Fingerprint: a1:4b:48:d9:43:ee:0a:0e:40:90:4f:3c:e0:a4:c0:91:93:51:5d:3f +# SHA256 Fingerprint: 7d:05:eb:b6:82:33:9f:8c:94:51:ee:09:4e:eb:fe:fa:79:53:a1:14:ed:b2:f4:49:49:45:2f:ab:7d:2f:c1:85 +-----BEGIN CERTIFICATE----- +MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSA +n61UQbVH35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4Htecc +biJVMWWXvdMX0h5i89vqbFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9Hp +EgjAALAcKxHad3A2m67OeYfcgnDmCXRwVWmvo2ifv922ebPynXApVfSr/5Vh88lA +bx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OPYLfykqGxvYmJHzDNw6Yu +YjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+RnlTGNAgMB +AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQW +BBTOw0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPI +QW5pJ6d1Ee88hjZv0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I +0jJmwYrA8y8678Dj1JGG0VDjA9tzd29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4Gni +lmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAWhsI6yLETcDbYz+70CjTVW0z9 +B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0MjomZmWzwPDCv +ON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo +IhNzbM8m9Yop5w== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root G3" +# Serial: 15459312981008553731928384953135426796 +# MD5 Fingerprint: 7c:7f:65:31:0c:81:df:8d:ba:3e:99:e2:5c:ad:6e:fb +# SHA1 Fingerprint: f5:17:a2:4f:9a:48:c6:c9:f8:a2:00:26:9f:dc:0f:48:2c:ab:30:89 +# SHA256 Fingerprint: 7e:37:cb:8b:4c:47:09:0c:ab:36:55:1b:a6:f4:5d:b8:40:68:0f:ba:16:6a:95:2d:b1:00:71:7f:43:05:3f:c2 +-----BEGIN CERTIFICATE----- +MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3Qg +RzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJf +Zn4f5dwbRXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17Q +RSAPWXYQ1qAk8C3eNvJsKTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgFUaFNN6KDec6NHSrkhDAKBggqhkjOPQQD +AwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5FyYZ5eEJJZVrmDxxDnOOlY +JjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy1vUhZscv +6pZjamVFkpUBtA== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root G2" +# Serial: 4293743540046975378534879503202253541 +# MD5 Fingerprint: e4:a6:8a:c8:54:ac:52:42:46:0a:fd:72:48:1b:2a:44 +# SHA1 Fingerprint: df:3c:24:f9:bf:d6:66:76:1b:26:80:73:fe:06:d1:cc:8d:4f:82:a4 +# SHA256 Fingerprint: cb:3c:cb:b7:60:31:e5:e0:13:8f:8d:d3:9a:23:f9:de:47:ff:c3:5e:43:c1:14:4c:ea:27:d4:6a:5a:b1:cb:5f +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH +MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI +2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx +1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ +q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz +tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ +vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV +5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY +1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 +NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG +Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 +8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe +pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root G3" +# Serial: 7089244469030293291760083333884364146 +# MD5 Fingerprint: f5:5d:a4:50:a5:fb:28:7e:1e:0f:0d:cc:96:57:56:ca +# SHA1 Fingerprint: 7e:04:de:89:6a:3e:66:6d:00:e6:87:d3:3f:fa:d9:3b:e8:3d:34:9e +# SHA256 Fingerprint: 31:ad:66:48:f8:10:41:38:c7:38:f3:9e:a4:32:01:33:39:3e:3a:18:cc:02:29:6e:f9:7c:2a:c9:ef:67:31:d0 +-----BEGIN CERTIFICATE----- +MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe +Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw +EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x +IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF +K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG +fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO +Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd +BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx +AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/ +oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8 +sycX +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Trusted Root G4" +# Serial: 7451500558977370777930084869016614236 +# MD5 Fingerprint: 78:f2:fc:aa:60:1f:2f:b4:eb:c9:37:ba:53:2e:75:49 +# SHA1 Fingerprint: dd:fb:16:cd:49:31:c9:73:a2:03:7d:3f:c8:3a:4d:7d:77:5d:05:e4 +# SHA256 Fingerprint: 55:2f:7b:dc:f1:a7:af:9e:6c:e6:72:01:7f:4f:12:ab:f7:72:40:c7:8e:76:1a:c2:03:d1:d9:d2:0a:c8:99:88 +-----BEGIN CERTIFICATE----- +MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBi +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg +RzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3y +ithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1If +xp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDV +ySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiO +DCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQ +jdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/ +CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCi +EhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADM +fRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QY +uKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXK +chYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t +9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +hjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD +ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2 +SV1EY+CtnJYYZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd ++SeuMIW59mdNOj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWc +fFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqa +sjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9N +cCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N +0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie +4u1Ki7wb/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mI +r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1 +/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCm +gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+ +-----END CERTIFICATE----- + +# Issuer: CN=COMODO RSA Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO RSA Certification Authority O=COMODO CA Limited +# Label: "COMODO RSA Certification Authority" +# Serial: 101909084537582093308941363524873193117 +# MD5 Fingerprint: 1b:31:b0:71:40:36:cc:14:36:91:ad:c4:3e:fd:ec:18 +# SHA1 Fingerprint: af:e5:d2:44:a8:d1:19:42:30:ff:47:9f:e2:f8:97:bb:cd:7a:8c:b4 +# SHA256 Fingerprint: 52:f0:e1:c4:e5:8e:c6:29:29:1b:60:31:7f:07:46:71:b8:5d:7e:a8:0d:5b:07:27:34:63:53:4b:32:b4:02:34 +-----BEGIN CERTIFICATE----- +MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB +hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV +BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5 +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT +EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR +6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X +pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC +9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV +/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf +Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z ++pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w +qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah +SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC +u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf +Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq +crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E +FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB +/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl +wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM +4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV +2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna +FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ +CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK +boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke +jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL +S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb +QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl +0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB +NVOFBkpdn627G190 +-----END CERTIFICATE----- + +# Issuer: CN=USERTrust RSA Certification Authority O=The USERTRUST Network +# Subject: CN=USERTrust RSA Certification Authority O=The USERTRUST Network +# Label: "USERTrust RSA Certification Authority" +# Serial: 2645093764781058787591871645665788717 +# MD5 Fingerprint: 1b:fe:69:d1:91:b7:19:33:a3:72:a8:0f:e1:55:e5:b5 +# SHA1 Fingerprint: 2b:8f:1b:57:33:0d:bb:a2:d0:7a:6c:51:f7:0e:e9:0d:da:b9:ad:8e +# SHA256 Fingerprint: e7:93:c9:b0:2f:d8:aa:13:e2:1c:31:22:8a:cc:b0:81:19:64:3b:74:9c:89:89:64:b1:74:6d:46:c3:d4:cb:d2 +-----BEGIN CERTIFICATE----- +MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB +iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl +cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV +BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw +MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV +BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B +3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY +tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/ +Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2 +VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT +79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6 +c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT +Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l +c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee +UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE +Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd +BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF +Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO +VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3 +ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs +8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR +iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze +Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ +XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/ +qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB +VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB +L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG +jjxDah2nGN59PRbxYvnKkKj9 +-----END CERTIFICATE----- + +# Issuer: CN=USERTrust ECC Certification Authority O=The USERTRUST Network +# Subject: CN=USERTrust ECC Certification Authority O=The USERTRUST Network +# Label: "USERTrust ECC Certification Authority" +# Serial: 123013823720199481456569720443997572134 +# MD5 Fingerprint: fa:68:bc:d9:b5:7f:ad:fd:c9:1d:06:83:28:cc:24:c1 +# SHA1 Fingerprint: d1:cb:ca:5d:b2:d5:2a:7f:69:3b:67:4d:e5:f0:5a:1d:0c:95:7d:f0 +# SHA256 Fingerprint: 4f:f4:60:d5:4b:9c:86:da:bf:bc:fc:57:12:e0:40:0d:2b:ed:3f:bc:4d:4f:bd:aa:86:e0:6a:dc:d2:a9:ad:7a +-----BEGIN CERTIFICATE----- +MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl +eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT +JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMjAx +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgT +Ck5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUg +VVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqflo +I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng +o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0G +A1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBBHU6+4WMB +zzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbW +RNZu9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 +# Label: "GlobalSign ECC Root CA - R5" +# Serial: 32785792099990507226680698011560947931244 +# MD5 Fingerprint: 9f:ad:3b:1c:02:1e:8a:ba:17:74:38:81:0c:a2:bc:08 +# SHA1 Fingerprint: 1f:24:c6:30:cd:a4:18:ef:20:69:ff:ad:4f:dd:5f:46:3a:1b:69:aa +# SHA256 Fingerprint: 17:9f:bc:14:8a:3d:d0:0f:d2:4e:a1:34:58:cc:43:bf:a7:f5:9c:81:82:d7:83:a5:13:f6:eb:ec:10:0c:89:24 +-----BEGIN CERTIFICATE----- +MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEk +MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpH +bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX +DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD +QSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6SFkc +8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8ke +hOvRnkmSh5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYI +KoZIzj0EAwMDaAAwZQIxAOVpEslu28YxuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg +515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7yFz9SO8NdCKoCOJuxUnO +xwy8p2Fp8fc74SrL+SvzZpA3 +-----END CERTIFICATE----- + +# Issuer: CN=IdenTrust Commercial Root CA 1 O=IdenTrust +# Subject: CN=IdenTrust Commercial Root CA 1 O=IdenTrust +# Label: "IdenTrust Commercial Root CA 1" +# Serial: 13298821034946342390520003877796839426 +# MD5 Fingerprint: b3:3e:77:73:75:ee:a0:d3:e3:7e:49:63:49:59:bb:c7 +# SHA1 Fingerprint: df:71:7e:aa:4a:d9:4e:c9:55:84:99:60:2d:48:de:5f:bc:f0:3a:25 +# SHA256 Fingerprint: 5d:56:49:9b:e4:d2:e0:8b:cf:ca:d0:8a:3e:38:72:3d:50:50:3b:de:70:69:48:e4:2f:55:60:30:19:e5:28:ae +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBK +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVu +VHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQw +MTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScw +JQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ldhNlT +3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU ++ehcCuz/mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gp +S0l4PJNgiCL8mdo2yMKi1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1 +bVoE/c40yiTcdCMbXTMTEl3EASX2MN0CXZ/g1Ue9tOsbobtJSdifWwLziuQkkORi +T0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl3ZBWzvurpWCdxJ35UrCL +vYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzyNeVJSQjK +Vsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZK +dHzVWYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHT +c+XvvqDtMwt0viAgxGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hv +l7yTmvmcEpB4eoCHFddydJxVdHixuuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5N +iGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZIhvcNAQELBQAD +ggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH +6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwt +LRvM7Kqas6pgghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93 +nAbowacYXVKV7cndJZ5t+qntozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3 ++wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmVYjzlVYA211QC//G5Xc7UI2/YRYRK +W2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUXfeu+h1sXIFRRk0pT +AwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/rokTLq +l1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG +4iZZRHUe2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZ +mUlO+KWA2yUPHGNiiskzZ2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A +7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7RcGzM7vRX+Bi6hG6H +-----END CERTIFICATE----- + +# Issuer: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust +# Subject: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust +# Label: "IdenTrust Public Sector Root CA 1" +# Serial: 13298821034946342390521976156843933698 +# MD5 Fingerprint: 37:06:a5:b0:fc:89:9d:ba:f4:6b:8c:1a:64:cd:d5:ba +# SHA1 Fingerprint: ba:29:41:60:77:98:3f:f4:f3:ef:f2:31:05:3b:2e:ea:6d:4d:45:fd +# SHA256 Fingerprint: 30:d0:89:5a:9a:44:8a:26:20:91:63:55:22:d1:f5:20:10:b5:86:7a:ca:e1:2c:78:ef:95:8f:d4:f4:38:9f:2f +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBN +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVu +VHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcN +MzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0 +MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTyP4o7 +ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGy +RBb06tD6Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlS +bdsHyo+1W/CD80/HLaXIrcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF +/YTLNiCBWS2ab21ISGHKTN9T0a9SvESfqy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R +3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoSmJxZZoY+rfGwyj4GD3vw +EUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFnol57plzy +9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9V +GxyhLrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ +2fjXctscvG29ZV/viDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsV +WaFHVCkugyhfHMKiq3IXAAaOReyL4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gD +W/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMwDQYJKoZIhvcN +AQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj +t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHV +DRDtfULAj+7AmgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9 +TaDKQGXSc3z1i9kKlT/YPyNtGtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8G +lwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFtm6/n6J91eEyrRjuazr8FGF1NFTwW +mhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMxNRF4eKLg6TCMf4Df +WN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4Mhn5 ++bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJ +tshquDDIajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhA +GaQdp/lLQzfcaFpPz+vCZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv +8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ3Wl9af0AVqW3rLatt8o+Ae+c +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only +# Subject: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only +# Label: "Entrust Root Certification Authority - G2" +# Serial: 1246989352 +# MD5 Fingerprint: 4b:e2:c9:91:96:65:0c:f4:0e:5a:93:92:a0:0a:fe:b2 +# SHA1 Fingerprint: 8c:f4:27:fd:79:0c:3a:d1:66:06:8d:e8:1e:57:ef:bb:93:22:72:d4 +# SHA256 Fingerprint: 43:df:57:74:b0:3e:7f:ef:5f:e4:0d:93:1a:7b:ed:f1:bb:2e:6b:42:73:8c:4e:6d:38:41:10:3d:3a:a7:f3:39 +-----BEGIN CERTIFICATE----- +MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50 +cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs +IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz +dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy +NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu +dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt +dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0 +aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T +RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN +cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW +wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1 +U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0 +jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN +BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/ +jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ +Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v +1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R +nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH +VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g== +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only +# Subject: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only +# Label: "Entrust Root Certification Authority - EC1" +# Serial: 51543124481930649114116133369 +# MD5 Fingerprint: b6:7e:1d:f0:58:c5:49:6c:24:3b:3d:ed:98:18:ed:bc +# SHA1 Fingerprint: 20:d8:06:40:df:9b:25:f5:12:25:3a:11:ea:f7:59:8a:eb:14:b5:47 +# SHA256 Fingerprint: 02:ed:0e:b2:8c:14:da:45:16:5c:56:67:91:70:0d:64:51:d7:fb:56:f0:b2:ab:1d:3b:8e:b0:70:e5:6e:df:f5 +-----BEGIN CERTIFICATE----- +MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkG +A1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3 +d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVu +dHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEzMDEGA1UEAxMq +RW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRUMxMB4XDTEy +MTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYwFAYD +VQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 +L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0g +Zm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEVDMTB2MBAGByqGSM49AgEGBSuBBAAi +A2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHyAsWfoPZb1YsGGYZPUxBt +ByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef9eNi1KlH +Bz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O +BBYEFLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVC +R98crlOZF7ZvHH3hvxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nX +hTcGtXsI/esni0qU+eH6p44mCOh8kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G +-----END CERTIFICATE----- + +# Issuer: CN=CFCA EV ROOT O=China Financial Certification Authority +# Subject: CN=CFCA EV ROOT O=China Financial Certification Authority +# Label: "CFCA EV ROOT" +# Serial: 407555286 +# MD5 Fingerprint: 74:e1:b6:ed:26:7a:7a:44:30:33:94:ab:7b:27:81:30 +# SHA1 Fingerprint: e2:b8:29:4b:55:84:ab:6b:58:c2:90:46:6c:ac:3f:b8:39:8f:84:83 +# SHA256 Fingerprint: 5c:c3:d7:8e:4e:1d:5e:45:54:7a:04:e6:87:3e:64:f9:0c:f9:53:6d:1c:cc:2e:f8:00:f3:55:c4:c5:fd:70:fd +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJD +TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y +aXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkx +MjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j +aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJP +T1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnVBU03 +sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpL +TIpTUnrD7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5 +/ZOkVIBMUtRSqy5J35DNuF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp +7hZZLDRJGqgG16iI0gNyejLi6mhNbiyWZXvKWfry4t3uMCz7zEasxGPrb382KzRz +EpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7xzbh72fROdOXW3NiGUgt +hxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9fpy25IGvP +a931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqot +aK8KgWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNg +TnYGmE69g60dWIolhdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfV +PKPtl8MeNPo4+QgO48BdK4PRVmrJtqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hv +cWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAfBgNVHSMEGDAWgBTj/i39KNAL +tbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd +BgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB +ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObT +ej/tUxPQ4i9qecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdL +jOztUmCypAbqTuv0axn96/Ua4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBS +ESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sGE5uPhnEFtC+NiWYzKXZUmhH4J/qy +P5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfXBDrDMlI1Dlb4pd19 +xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjnaH9d +Ci77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN +5mydLIhyPDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe +/v5WOaHIz16eGWRGENoXkbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+Z +AAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ +5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su +-----END CERTIFICATE----- + +# Issuer: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed +# Subject: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed +# Label: "OISTE WISeKey Global Root GB CA" +# Serial: 157768595616588414422159278966750757568 +# MD5 Fingerprint: a4:eb:b9:61:28:2e:b7:2f:98:b0:35:26:90:99:51:1d +# SHA1 Fingerprint: 0f:f9:40:76:18:d3:d7:6a:4b:98:f0:a8:35:9e:0c:fd:27:ac:cc:ed +# SHA256 Fingerprint: 6b:9c:08:e8:6e:b0:f7:67:cf:ad:65:cd:98:b6:21:49:e5:49:4a:67:f5:84:5e:7b:d1:ed:01:9f:27:b8:6b:d6 +-----BEGIN CERTIFICATE----- +MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBt +MQswCQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUg +Rm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9i +YWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAwMzJaFw0zOTEyMDExNTEwMzFaMG0x +CzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBG +b3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh +bCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3 +HEokKtaXscriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGx +WuR51jIjK+FTzJlFXHtPrby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX +1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNk +u7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4oQnc/nSMbsrY9gBQHTC5P +99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvgGUpuuy9r +M2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUB +BAMCAQAwDQYJKoZIhvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrgh +cViXfa43FK8+5/ea4n32cZiZBKpDdHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5 +gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0VQreUGdNZtGn//3ZwLWoo4rO +ZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEuiHZeeevJuQHHf +aPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic +Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= +-----END CERTIFICATE----- + +# Issuer: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. +# Subject: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. +# Label: "SZAFIR ROOT CA2" +# Serial: 357043034767186914217277344587386743377558296292 +# MD5 Fingerprint: 11:64:c1:89:b0:24:b1:8c:b1:07:7e:89:9e:51:9e:99 +# SHA1 Fingerprint: e2:52:fa:95:3f:ed:db:24:60:bd:6e:28:f3:9c:cc:cf:5e:b3:3f:de +# SHA256 Fingerprint: a1:33:9d:33:28:1a:0b:56:e5:57:d3:d3:2b:1c:e7:f9:36:7e:b0:94:bd:5f:a7:2a:7e:50:04:c8:de:d7:ca:fe +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQEL +BQAwUTELMAkGA1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6 +ZW5pb3dhIFMuQS4xGDAWBgNVBAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkw +NzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJBgNVBAYTAlBMMSgwJgYDVQQKDB9L +cmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYDVQQDDA9TWkFGSVIg +Uk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5QqEvN +QLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT +3PSQ1hNKDJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw +3gAeqDRHu5rr/gsUvTaE2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr6 +3fE9biCloBK0TXC5ztdyO4mTp4CEHCdJckm1/zuVnsHMyAHs6A6KCpbns6aH5db5 +BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwiieDhZNRnvDF5YTy7ykHN +XGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsF +AAOCAQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw +8PRBEew/R40/cof5O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOG +nXkZ7/e7DDWQw4rtTw/1zBLZpD67oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCP +oky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul4+vJhaAlIDf7js4MNIThPIGy +d05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6+/NNIxuZMzSg +LvWpCz/UXeHPhJ/iGcJfitYgHuNztw== +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Network CA 2" +# Serial: 44979900017204383099463764357512596969 +# MD5 Fingerprint: 6d:46:9e:d9:25:6d:08:23:5b:5e:74:7d:1e:27:db:f2 +# SHA1 Fingerprint: d3:dd:48:3e:2b:bf:4c:05:e8:af:10:f5:fa:76:26:cf:d3:dc:30:92 +# SHA256 Fingerprint: b6:76:f2:ed:da:e8:77:5c:d3:6c:b0:f6:3c:d1:d4:60:39:61:f4:9e:62:65:ba:01:3a:2f:03:07:b6:d0:b8:04 +-----BEGIN CERTIFICATE----- +MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCB +gDELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu +QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIG +A1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQSAyMCIYDzIwMTExMDA2MDgz +OTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQTDEiMCAGA1UEChMZ +VW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3 +b3JrIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWA +DGSdhhuWZGc/IjoedQF97/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn +0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+oCgCXhVqqndwpyeI1B+twTUrWwbNWuKFB +OJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40bRr5HMNUuctHFY9rnY3lE +fktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2puTRZCr+E +Sv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1m +o130GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02i +sx7QBlrd9pPPV3WZ9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOW +OZV7bIBaTxNyxtd9KXpEulKkKtVBRgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgez +Tv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pyehizKV/Ma5ciSixqClnrDvFAS +adgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vMBhBgu4M1t15n +3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQ +F/xlhMcQSZDe28cmk4gmb3DWAl45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTf +CVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuAL55MYIR4PSFk1vtBHxgP58l1cb29 +XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMoclm2q8KMZiYcdywm +djWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tMpkT/ +WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jb +AoJnwTnbw3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksq +P/ujmv5zMnHCnsZy4YpoJ/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Ko +b7a6bINDd82Kkhehnlt4Fj1F4jNy3eFmypnTycUm/Q1oBEauttmbjL4ZvrHG8hnj +XALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLXis7VmFxWlgPF7ncGNf/P +5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7zAYspsbi +DrW5viSP +-----END CERTIFICATE----- + +# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Subject: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Label: "Hellenic Academic and Research Institutions RootCA 2015" +# Serial: 0 +# MD5 Fingerprint: ca:ff:e2:db:03:d9:cb:4b:e9:0f:ad:84:fd:7b:18:ce +# SHA1 Fingerprint: 01:0c:06:95:a6:98:19:14:ff:bf:5f:c6:b0:b6:95:ea:29:e9:12:a6 +# SHA256 Fingerprint: a0:40:92:9a:02:ce:53:b4:ac:f4:f2:ff:c6:98:1c:e4:49:6f:75:5e:6d:45:fe:0b:2a:69:2b:cd:52:52:3f:36 +-----BEGIN CERTIFICATE----- +MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1Ix +DzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5k +IFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMT +N0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9v +dENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAxMTIxWjCBpjELMAkG +A1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNh +ZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkx +QDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 +dGlvbnMgUm9vdENBIDIwMTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQDC+Kk/G4n8PDwEXT2QNrCROnk8ZlrvbTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA +4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+ehiGsxr/CL0BgzuNtFajT0 +AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+6PAQZe10 +4S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06C +ojXdFPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV +9Cz82XBST3i4vTwri5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrD +gfgXy5I2XdGj2HUb4Ysn6npIQf1FGQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6 +Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2fu/Z8VFRfS0myGlZYeCsargq +NhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9muiNX6hME6wGko +LfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc +Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVd +ctA4GGqd83EkVAswDQYJKoZIhvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0I +XtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+D1hYc2Ryx+hFjtyp8iY/xnmMsVMI +M4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrMd/K4kPFox/la/vot +9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+yd+2V +Z5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/ea +j8GsGsVn82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnh +X9izjFk0WaSrT2y7HxjbdavYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQ +l033DlZdwJVqwjbDG2jJ9SrcR5q+ss7FJej6A7na+RZukYT1HCjI/CbM1xyQVqdf +bzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVtJ94Cj8rDtSvK6evIIVM4 +pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGaJI7ZjnHK +e7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0 +vm9qp/UsQu0yrbYhnr68 +-----END CERTIFICATE----- + +# Issuer: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Subject: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Label: "Hellenic Academic and Research Institutions ECC RootCA 2015" +# Serial: 0 +# MD5 Fingerprint: 81:e5:b4:17:eb:c2:f5:e1:4b:0d:41:7b:49:92:fe:ef +# SHA1 Fingerprint: 9f:f1:71:8d:92:d5:9a:f3:7d:74:97:b4:bc:6f:84:68:0b:ba:b6:66 +# SHA256 Fingerprint: 44:b5:45:aa:8a:25:e6:5a:73:ca:15:dc:27:fc:36:d2:4c:1c:b9:95:3a:06:65:39:b1:15:82:dc:48:7b:48:33 +-----BEGIN CERTIFICATE----- +MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzAN +BgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl +c2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hl +bGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgRUNDIFJv +b3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEwMzcxMlowgaoxCzAJ +BgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmljIEFj +YWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5 +MUQwQgYDVQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0 +dXRpb25zIEVDQyBSb290Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKg +QehLgoRc4vgxEZmGZE4JJS+dQS8KrjVPdJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJa +jq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoKVlp8aQuqgAkkbH7BRqNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFLQi +C4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaep +lSTAGiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7Sof +TUwJCA3sS61kFyjndc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR +-----END CERTIFICATE----- + +# Issuer: CN=ISRG Root X1 O=Internet Security Research Group +# Subject: CN=ISRG Root X1 O=Internet Security Research Group +# Label: "ISRG Root X1" +# Serial: 172886928669790476064670243504169061120 +# MD5 Fingerprint: 0c:d2:f9:e0:da:17:73:e9:ed:86:4d:a5:e3:70:e7:4e +# SHA1 Fingerprint: ca:bd:2a:79:a1:07:6a:31:f2:1d:25:36:35:cb:03:9d:43:29:a5:e8 +# SHA256 Fingerprint: 96:bc:ec:06:26:49:76:f3:74:60:77:9a:cf:28:c5:a7:cf:e8:a3:c0:aa:e1:1a:8f:fc:ee:05:c0:bd:df:08:c6 +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 +WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu +ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc +h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ +0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U +A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW +T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH +B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC +B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv +KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn +OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn +jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw +qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI +rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq +hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ +3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK +NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 +ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur +TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC +jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc +oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq +4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA +mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d +emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= +-----END CERTIFICATE----- + +# Issuer: O=FNMT-RCM OU=AC RAIZ FNMT-RCM +# Subject: O=FNMT-RCM OU=AC RAIZ FNMT-RCM +# Label: "AC RAIZ FNMT-RCM" +# Serial: 485876308206448804701554682760554759 +# MD5 Fingerprint: e2:09:04:b4:d3:bd:d1:a0:14:fd:1a:d2:47:c4:57:1d +# SHA1 Fingerprint: ec:50:35:07:b2:15:c4:95:62:19:e2:a8:9a:5b:42:99:2c:4c:2c:20 +# SHA256 Fingerprint: eb:c5:57:0c:29:01:8c:4d:67:b1:aa:12:7b:af:12:f7:03:b4:61:1e:bc:17:b7:da:b5:57:38:94:17:9b:93:fa +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsx +CzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJ +WiBGTk1ULVJDTTAeFw0wODEwMjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJ +BgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBG +Tk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALpxgHpMhm5/ +yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcfqQgf +BBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAz +WHFctPVrbtQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxF +tBDXaEAUwED653cXeuYLj2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z +374jNUUeAlz+taibmSXaXvMiwzn15Cou08YfxGyqxRxqAQVKL9LFwag0Jl1mpdIC +IfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mwWsXmo8RZZUc1g16p6DUL +mbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnTtOmlcYF7 +wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peS +MKGJ47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2 +ZSysV4999AeU14ECll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMet +UqIJ5G+GR4of6ygnXYMgrwTJbFaai0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPd9xf3E6Jobd2Sn9R2gzL+H +YJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3 +LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD +nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1 +RXxlDPiyN8+sD8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYM +LVN0V2Ue1bLdI4E7pWYjJ2cJj+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf +77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrTQfv6MooqtyuGC2mDOL7Nii4LcK2N +JpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW+YJF1DngoABd15jm +fZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7Ixjp +6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp +1txyM/1d8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B +9kiABdcPUXmsEKvU7ANm5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wok +RqEIr9baRRmW1FMdW4R58MD3R++Lj8UGrp1MYp3/RgT408m2ECVAdf4WqslKYIYv +uu8wd+RU4riEmViAqhOLUTpPSPaLtrM= +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 1 O=Amazon +# Subject: CN=Amazon Root CA 1 O=Amazon +# Label: "Amazon Root CA 1" +# Serial: 143266978916655856878034712317230054538369994 +# MD5 Fingerprint: 43:c6:bf:ae:ec:fe:ad:2f:18:c6:88:68:30:fc:c8:e6 +# SHA1 Fingerprint: 8d:a7:f9:65:ec:5e:fc:37:91:0f:1c:6e:59:fd:c1:cc:6a:6e:de:16 +# SHA256 Fingerprint: 8e:cd:e6:88:4f:3d:87:b1:12:5b:a3:1a:c3:fc:b1:3d:70:16:de:7f:57:cc:90:4f:e1:cb:97:c6:ae:98:19:6e +-----BEGIN CERTIFICATE----- +MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF +ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 +b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL +MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv +b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj +ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM +9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw +IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6 +VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L +93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm +jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA +A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI +U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs +N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv +o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU +5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy +rqXRfboQnoZsG4q5WTP468SQvvG5 +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 2 O=Amazon +# Subject: CN=Amazon Root CA 2 O=Amazon +# Label: "Amazon Root CA 2" +# Serial: 143266982885963551818349160658925006970653239 +# MD5 Fingerprint: c8:e5:8d:ce:a8:42:e2:7a:c0:2a:5c:7c:9e:26:bf:66 +# SHA1 Fingerprint: 5a:8c:ef:45:d7:a6:98:59:76:7a:8c:8b:44:96:b5:78:cf:47:4b:1a +# SHA256 Fingerprint: 1b:a5:b2:aa:8c:65:40:1a:82:96:01:18:f8:0b:ec:4f:62:30:4d:83:ce:c4:71:3a:19:c3:9c:01:1e:a4:6d:b4 +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwF +ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 +b24gUm9vdCBDQSAyMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTEL +MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv +b3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK2Wny2cSkxK +gXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4kHbZ +W0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg +1dKmSYXpN+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K +8nu+NQWpEjTj82R0Yiw9AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r +2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvdfLC6HM783k81ds8P+HgfajZRRidhW+me +z/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAExkv8LV/SasrlX6avvDXbR +8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSSbtqDT6Zj +mUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz +7Mt0Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6 ++XUyo05f7O0oYtlNc/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI +0u1ufm8/0i2BWSlmy5A5lREedCf+3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB +Af8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSwDPBMMPQFWAJI/TPlUq9LhONm +UjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oAA7CXDpO8Wqj2 +LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY ++gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kS +k5Nrp+gvU5LEYFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl +7uxMMne0nxrpS10gxdr9HIcWxkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygm +btmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQgj9sAq+uEjonljYE1x2igGOpm/Hl +urR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbWaQbLU8uz/mtBzUF+ +fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoVYh63 +n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE +76KlXIx3KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H +9jVlpNMKVv/1F2Rs76giJUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT +4PsJYGw= +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 3 O=Amazon +# Subject: CN=Amazon Root CA 3 O=Amazon +# Label: "Amazon Root CA 3" +# Serial: 143266986699090766294700635381230934788665930 +# MD5 Fingerprint: a0:d4:ef:0b:f7:b5:d8:49:95:2a:ec:f5:c4:fc:81:87 +# SHA1 Fingerprint: 0d:44:dd:8c:3c:8c:1a:1a:58:75:64:81:e9:0f:2e:2a:ff:b3:d2:6e +# SHA256 Fingerprint: 18:ce:6c:fe:7b:f1:4e:60:b2:e3:47:b8:df:e8:68:cb:31:d0:2e:bb:3a:da:27:15:69:f5:03:43:b4:6d:b3:a4 +-----BEGIN CERTIFICATE----- +MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5 +MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g +Um9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG +A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg +Q0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl +ui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr +ttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr +BqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM +YyRIHN8wfdVoOw== +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 4 O=Amazon +# Subject: CN=Amazon Root CA 4 O=Amazon +# Label: "Amazon Root CA 4" +# Serial: 143266989758080763974105200630763877849284878 +# MD5 Fingerprint: 89:bc:27:d5:eb:17:8d:06:6a:69:d5:fd:89:47:b4:cd +# SHA1 Fingerprint: f6:10:84:07:d6:f8:bb:67:98:0c:c2:e2:44:c2:eb:ae:1c:ef:63:be +# SHA256 Fingerprint: e3:5d:28:41:9e:d0:20:25:cf:a6:90:38:cd:62:39:62:45:8d:a5:c6:95:fb:de:a3:c2:2b:0b:fb:25:89:70:92 +-----BEGIN CERTIFICATE----- +MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5 +MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g +Um9vdCBDQSA0MB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG +A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg +Q0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN/sGKe0uoe0ZLY7Bi +9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri83Bk +M6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WB +MAoGCCqGSM49BAMDA2gAMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlw +CkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1AE47xDqUEpHJWEadIRNyp4iciuRMStuW +1KyLa2tJElMzrdfkviT8tQp21KW8EA== +-----END CERTIFICATE----- + +# Issuer: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM +# Subject: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM +# Label: "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" +# Serial: 1 +# MD5 Fingerprint: dc:00:81:dc:69:2f:3e:2f:b0:3b:f6:3d:5a:91:8e:49 +# SHA1 Fingerprint: 31:43:64:9b:ec:ce:27:ec:ed:3a:3f:0b:8f:0d:e4:e8:91:dd:ee:ca +# SHA256 Fingerprint: 46:ed:c3:68:90:46:d5:3a:45:3f:b3:10:4a:b8:0d:ca:ec:65:8b:26:60:ea:16:29:dd:7e:86:79:90:64:87:16 +-----BEGIN CERTIFICATE----- +MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIx +GDAWBgNVBAcTD0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxp +bXNlbCB2ZSBUZWtub2xvamlrIEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0w +KwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24gTWVya2V6aSAtIEthbXUgU00xNjA0 +BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRpZmlrYXNpIC0gU3Vy +dW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYDVQQG +EwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXll +IEJpbGltc2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklU +QUsxLTArBgNVBAsTJEthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBT +TTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11IFNNIFNTTCBLb2sgU2VydGlmaWthc2kg +LSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr3UwM6q7 +a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y86Ij5iySr +LqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INr +N3wcwv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2X +YacQuFWQfw4tJzh03+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/ +iSIzL+aFCr2lqBs23tPcLG07xxO9WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4f +AJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQUZT/HiobGPN08VFw1+DrtUgxH +V8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL +BQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh +AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPf +IPP54+M638yclNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4 +lzwDGrpDxpa5RXI4s6ehlj2Re37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c +8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0jq5Rm+K37DwhuJi1/FwcJsoz7UMCf +lo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= +-----END CERTIFICATE----- + +# Issuer: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. +# Subject: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. +# Label: "GDCA TrustAUTH R5 ROOT" +# Serial: 9009899650740120186 +# MD5 Fingerprint: 63:cc:d9:3d:34:35:5c:6f:53:a3:e2:08:70:48:1f:b4 +# SHA1 Fingerprint: 0f:36:38:5b:81:1a:25:c3:9b:31:4e:83:ca:e9:34:66:70:cc:74:b4 +# SHA256 Fingerprint: bf:ff:8f:d0:44:33:48:7d:6a:8a:a6:0c:1a:29:76:7a:9f:c2:bb:b0:5e:42:0f:71:3a:13:b9:92:89:1d:38:93 +-----BEGIN CERTIFICATE----- +MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UE +BhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ +IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0 +MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVowYjELMAkGA1UEBhMCQ04xMjAwBgNV +BAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8w +HQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJj +Dp6L3TQsAlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBj +TnnEt1u9ol2x8kECK62pOqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+u +KU49tm7srsHwJ5uu4/Ts765/94Y9cnrrpftZTqfrlYwiOXnhLQiPzLyRuEH3FMEj +qcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ9Cy5WmYqsBebnh52nUpm +MUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQxXABZG12 +ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloP +zgsMR6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3Gk +L30SgLdTMEZeS1SZD2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeC +jGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4oR24qoAATILnsn8JuLwwoC8N9VKejveSswoA +HQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx9hoh49pwBiFYFIeFd3mqgnkC +AwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlRMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg +p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZm +DRd9FBUb1Ov9H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5 +COmSdI31R9KrO9b7eGZONn356ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ry +L3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd+PwyvzeG5LuOmCd+uh8W4XAR8gPf +JWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQHtZa37dG/OaG+svg +IHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBDF8Io +2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV +09tL7ECQ8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQ +XR4EzzffHqhmsYzmIGrv/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrq +T8p+ck0LcIymSLumoRT2+1hEmRSuqguTaaApJUqlyyvdimYHFngVV3Eb7PVHhPOe +MTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com Root Certification Authority RSA O=SSL Corporation +# Subject: CN=SSL.com Root Certification Authority RSA O=SSL Corporation +# Label: "SSL.com Root Certification Authority RSA" +# Serial: 8875640296558310041 +# MD5 Fingerprint: 86:69:12:c0:70:f1:ec:ac:ac:c2:d5:bc:a5:5b:a1:29 +# SHA1 Fingerprint: b7:ab:33:08:d1:ea:44:77:ba:14:80:12:5a:6f:bd:a9:36:49:0c:bb +# SHA256 Fingerprint: 85:66:6a:56:2e:e0:be:5c:e9:25:c1:d8:89:0a:6f:76:a8:7e:c1:6d:4d:7d:5f:29:ea:74:19:cf:20:12:3b:69 +-----BEGIN CERTIFICATE----- +MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE +BhMCVVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQK +DA9TU0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYwMjEyMTczOTM5WhcNNDEwMjEyMTcz +OTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv +dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv +bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2R +xFdHaxh3a3by/ZPkPQ/CFp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aX +qhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcC +C52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/geoeOy3ZExqysdBP+lSgQ3 +6YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkpk8zruFvh +/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrF +YD3ZfBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93E +JNyAKoFBbZQ+yODJgUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVc +US4cK38acijnALXRdMbX5J+tB5O2UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8 +ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi81xtZPCvM8hnIk2snYxnP/Okm ++Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4sbE6x/c+cCbqi +M+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV +HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4G +A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGV +cpNxJK1ok1iOMq8bs3AD/CUrdIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBc +Hadm47GUBwwyOabqG7B52B2ccETjit3E+ZUfijhDPwGFpUenPUayvOUiaPd7nNgs +PgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAslu1OJD7OAUN5F7kR/ +q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjqerQ0 +cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jr +a6x+3uxjMxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90I +H37hVZkLId6Tngr75qNJvTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/Y +K9f1JmzJBjSWFupwWRoyeXkLtoh/D1JIPb9s2KJELtFOt3JY04kTlf5Eq/jXixtu +nLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406ywKBjYZC6VWg3dGq2ktuf +oYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NIWuuA8ShY +Ic2wBlX7Jz9TkHCpBB5XJ7k= +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com Root Certification Authority ECC O=SSL Corporation +# Subject: CN=SSL.com Root Certification Authority ECC O=SSL Corporation +# Label: "SSL.com Root Certification Authority ECC" +# Serial: 8495723813297216424 +# MD5 Fingerprint: 2e:da:e4:39:7f:9c:8f:37:d1:70:9f:26:17:51:3a:8e +# SHA1 Fingerprint: c3:19:7c:39:24:e6:54:af:1b:c4:ab:20:95:7a:e2:c3:0e:13:02:6a +# SHA256 Fingerprint: 34:17:bb:06:cc:60:07:da:1b:96:1c:92:0b:8a:b4:ce:3f:ad:82:0e:4a:a3:0b:9a:cb:c4:a7:4e:bd:ce:bc:65 +-----BEGIN CERTIFICATE----- +MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMC +VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T +U0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNDAzWhcNNDEwMjEyMTgxNDAz +WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0 +b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNvbSBS +b290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI +7Z4INcgn64mMU1jrYor+8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPg +CemB+vNH06NjMGEwHQYDVR0OBBYEFILRhXMw5zUE044CkvvlpNHEIejNMA8GA1Ud +EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTTjgKS++Wk0cQh6M0wDgYD +VR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCWe+0F+S8T +kdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+ +gA0z5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation +# Subject: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation +# Label: "SSL.com EV Root Certification Authority RSA R2" +# Serial: 6248227494352943350 +# MD5 Fingerprint: e1:1e:31:58:1a:ae:54:53:02:f6:17:6a:11:7b:4d:95 +# SHA1 Fingerprint: 74:3a:f0:52:9b:d0:32:a0:f4:4a:83:cd:d4:ba:a9:7b:7c:2e:c4:9a +# SHA256 Fingerprint: 2e:7b:f1:6c:c2:24:85:a7:bb:e2:aa:86:96:75:07:61:b0:ae:39:be:3b:2f:e9:d0:cc:6d:4e:f7:34:91:42:5c +-----BEGIN CERTIFICATE----- +MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNV +BAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UE +CgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMB4XDTE3MDUzMTE4MTQzN1oXDTQy +MDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4G +A1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQD +DC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvq +M0fNTPl9fb69LT3w23jhhqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssuf +OePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7wcXHswxzpY6IXFJ3vG2fThVUCAtZJycxa +4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTOZw+oz12WGQvE43LrrdF9 +HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+B6KjBSYR +aZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcA +b9ZhCBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQ +Gp8hLH94t2S42Oim9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQV +PWKchjgGAGYS5Fl2WlPAApiiECtoRHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMO +pgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+SlmJuwgUHfbSguPvuUCYHBBXtSu +UDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48+qvWBkofZ6aY +MBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV +HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa4 +9QaAJadz20ZpqJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBW +s47LCp1Jjr+kxJG7ZhcFUZh1++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5 +Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nxY/hoLVUE0fKNsKTPvDxeH3jnpaAg +cLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2GguDKBAdRUNf/ktUM +79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDzOFSz +/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXt +ll9ldDz7CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEm +Kf7GUmG6sXP/wwyc5WxqlD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKK +QbNmC1r7fSOl8hqw/96bg5Qu0T/fkreRrwU7ZcegbLHNYhLDkBvjJc40vG93drEQ +w/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1hlMYegouCRw2n5H9gooi +S9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX9hwJ1C07 +mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation +# Subject: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation +# Label: "SSL.com EV Root Certification Authority ECC" +# Serial: 3182246526754555285 +# MD5 Fingerprint: 59:53:22:65:83:42:01:54:c0:ce:42:b9:5a:7c:f2:90 +# SHA1 Fingerprint: 4c:dd:51:a3:d1:f5:20:32:14:b0:c6:c5:32:23:03:91:c7:46:42:6d +# SHA256 Fingerprint: 22:a2:c1:f7:bd:ed:70:4c:c1:e7:01:b5:f4:08:c3:10:88:0f:e9:56:b5:de:2a:4a:44:f9:9c:87:3a:25:a7:c8 +-----BEGIN CERTIFICATE----- +MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMC +VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T +U0wgQ29ycG9yYXRpb24xNDAyBgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNTIzWhcNNDEwMjEyMTgx +NTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv +dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NMLmNv +bSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49 +AgEGBSuBBAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMA +VIbc/R/fALhBYlzccBYy3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1Kthku +WnBaBu2+8KGwytAJKaNjMGEwHQYDVR0OBBYEFFvKXuXe0oGqzagtZFG22XKbl+ZP +MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe5d7SgarNqC1kUbbZcpuX +5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJN+vp1RPZ +ytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZg +h5Mmm7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R6 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R6 +# Label: "GlobalSign Root CA - R6" +# Serial: 1417766617973444989252670301619537 +# MD5 Fingerprint: 4f:dd:07:e4:d4:22:64:39:1e:0c:37:42:ea:d1:c6:ae +# SHA1 Fingerprint: 80:94:64:0e:b5:a7:a1:ca:11:9c:1f:dd:d5:9f:81:02:63:a7:fb:d1 +# SHA256 Fingerprint: 2c:ab:ea:fe:37:d0:6c:a2:2a:ba:73:91:c0:03:3d:25:98:29:52:c4:53:64:73:49:76:3a:3a:b5:ad:6c:cf:69 +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEg +MB4GA1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2Jh +bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQx +MjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSNjET +MBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQssgrRI +xutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1k +ZguSgMpE3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxD +aNc9PIrFsmbVkJq3MQbFvuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJw +LnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqMPKq0pPbzlUoSB239jLKJz9CgYXfIWHSw +1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+azayOeSsJDa38O+2HBNX +k7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05OWgtH8wY2 +SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/h +bguyCLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4n +WUx2OVvq+aWh2IMP0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpY +rZxCRXluDocZXFSxZba/jJvcE+kNb7gu3GduyYsRtYQUigAZcIN5kZeR1Bonvzce +MgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNVHSMEGDAWgBSu +bAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN +nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGt +Ixg93eFyRJa0lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr61 +55wsTLxDKZmOMNOsIeDjHfrYBzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLj +vUYAGm0CuiVdjaExUd1URhxN25mW7xocBFymFe944Hn+Xds+qkxV/ZoVqW/hpvvf +cDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr3TsTjxKM4kEaSHpz +oHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB10jZp +nOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfs +pA9MRf/TuTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+v +JJUEeKgDu+6B5dpffItKoZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R +8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+tJDfLRVpOoERIyNiwmcUVhAn21klJwGW4 +5hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA= +-----END CERTIFICATE----- + +# Issuer: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed +# Subject: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed +# Label: "OISTE WISeKey Global Root GC CA" +# Serial: 44084345621038548146064804565436152554 +# MD5 Fingerprint: a9:d6:b9:2d:2f:93:64:f8:a5:69:ca:91:e9:68:07:23 +# SHA1 Fingerprint: e0:11:84:5e:34:de:be:88:81:b9:9c:f6:16:26:d1:96:1f:c3:b9:31 +# SHA256 Fingerprint: 85:60:f9:1c:36:24:da:ba:95:70:b5:fe:a0:db:e3:6f:f1:1a:83:23:be:94:86:85:4f:b3:f3:4a:55:71:19:8d +-----BEGIN CERTIFICATE----- +MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQsw +CQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91 +bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwg +Um9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRaFw00MjA1MDkwOTU4MzNaMG0xCzAJ +BgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBGb3Vu +ZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2JhbCBS +b290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4ni +eUqjFqdrVCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4W +p2OQ0jnUsYd4XxiWD1AbNTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7T +rYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0EAwMDaAAwZQIwJsdpW9zV +57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtkAjEA2zQg +Mgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 +-----END CERTIFICATE----- + +# Issuer: CN=UCA Global G2 Root O=UniTrust +# Subject: CN=UCA Global G2 Root O=UniTrust +# Label: "UCA Global G2 Root" +# Serial: 124779693093741543919145257850076631279 +# MD5 Fingerprint: 80:fe:f0:c4:4a:f0:5c:62:32:9f:1c:ba:78:a9:50:f8 +# SHA1 Fingerprint: 28:f9:78:16:19:7a:ff:18:25:18:aa:44:fe:c1:a0:ce:5c:b6:4c:8a +# SHA256 Fingerprint: 9b:ea:11:c9:76:fe:01:47:64:c1:be:56:a6:f9:14:b5:a5:60:31:7a:bd:99:88:39:33:82:e5:16:1a:a0:49:3c +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9 +MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBH +bG9iYWwgRzIgUm9vdDAeFw0xNjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0x +CzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlUcnVzdDEbMBkGA1UEAwwSVUNBIEds +b2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxeYr +b3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmToni9 +kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzm +VHqUwCoV8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/R +VogvGjqNO7uCEeBHANBSh6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDc +C/Vkw85DvG1xudLeJ1uK6NjGruFZfc8oLTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIj +tm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/R+zvWr9LesGtOxdQXGLY +D0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBeKW4bHAyv +j5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6Dl +NaBa4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6 +iIis7nCs+dwp4wwcOxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznP +O6Q0ibd5Ei9Hxeepl2n8pndntd978XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/ +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFIHEjMz15DD/pQwIX4wV +ZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo5sOASD0Ee/oj +L3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5 +1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl +1qnN3e92mI0ADs0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oU +b3n09tDh05S60FdRvScFDcH9yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LV +PtateJLbXDzz2K36uGt/xDYotgIVilQsnLAXc47QN6MUPJiVAAwpBVueSUmxX8fj +y88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHojhJi6IjMtX9Gl8Cb +EGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZkbxqg +DMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI ++Vg7RE+xygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGy +YiGqhkCyLmTTX8jjfhFnRR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bX +UB+K+wb1whnw0A== +-----END CERTIFICATE----- + +# Issuer: CN=UCA Extended Validation Root O=UniTrust +# Subject: CN=UCA Extended Validation Root O=UniTrust +# Label: "UCA Extended Validation Root" +# Serial: 106100277556486529736699587978573607008 +# MD5 Fingerprint: a1:f3:5f:43:c6:34:9b:da:bf:8c:7e:05:53:ad:96:e2 +# SHA1 Fingerprint: a3:a1:b0:6f:24:61:23:4a:e3:36:a5:c2:37:fc:a6:ff:dd:f0:d7:3a +# SHA256 Fingerprint: d4:3a:f9:b3:54:73:75:5c:96:84:fc:06:d7:d8:cb:70:ee:5c:28:e7:73:fb:29:4e:b4:1e:e7:17:22:92:4d:24 +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBH +MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBF +eHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMx +MDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNV +BAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrsiWog +D4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvS +sPGP2KxFRv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aop +O2z6+I9tTcg1367r3CTueUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dk +sHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR59mzLC52LqGj3n5qiAno8geK+LLNEOfi +c0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH0mK1lTnj8/FtDw5lhIpj +VMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KRel7sFsLz +KuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/ +TuDvB0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41G +sx2VYVdWf6/wFlthWG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs +1+lvK9JKBZP8nm9rZ/+I8U6laUpSNwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQD +fwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS3H5aBZ8eNJr34RQwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBADaN +l8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR +ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQ +VBcZEhrxH9cMaVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5 +c6sq1WnIeJEmMX3ixzDx/BR4dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp +4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb+7lsq+KePRXBOy5nAliRn+/4Qh8s +t2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOWF3sGPjLtx7dCvHaj +2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwiGpWO +vpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2C +xR9GUeOcGMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmx +cmtpzyKEC2IPrNkZAJSidjzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbM +fjKaiJUINlK73nZfdklJrX+9ZSCyycErdhh2n1ax +-----END CERTIFICATE----- + +# Issuer: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036 +# Subject: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036 +# Label: "Certigna Root CA" +# Serial: 269714418870597844693661054334862075617 +# MD5 Fingerprint: 0e:5c:30:62:27:eb:5b:bc:d7:ae:62:ba:e9:d5:df:77 +# SHA1 Fingerprint: 2d:0d:52:14:ff:9e:ad:99:24:01:74:20:47:6e:6c:85:27:27:f5:43 +# SHA256 Fingerprint: d4:8d:3d:23:ee:db:50:a4:59:e5:51:97:60:1c:27:77:4b:9d:7b:18:c9:4d:5a:05:95:11:a1:02:50:b9:31:68 +-----BEGIN CERTIFICATE----- +MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAw +WjELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAw +MiA0ODE0NjMwODEwMDAzNjEZMBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0x +MzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjdaMFoxCzAJBgNVBAYTAkZSMRIwEAYD +VQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYzMDgxMDAwMzYxGTAX +BgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sO +ty3tRQgXstmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9M +CiBtnyN6tMbaLOQdLNyzKNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPu +I9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8JXrJhFwLrN1CTivngqIkicuQstDuI7pm +TLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16XdG+RCYyKfHx9WzMfgIh +C59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq4NYKpkDf +ePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3Yz +IoejwpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWT +Co/1VTp2lc5ZmIoJlXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1k +JWumIWmbat10TWuXekG9qxf5kBdIjzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5 +hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp//TBt2dzhauH8XwIDAQABo4IB +GjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of +1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczov +L3d3d3cuY2VydGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilo +dHRwOi8vY3JsLmNlcnRpZ25hLmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYr +aHR0cDovL2NybC5kaGlteW90aXMuY29tL2NlcnRpZ25hcm9vdGNhLmNybDANBgkq +hkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOItOoldaDgvUSILSo3L +6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxPTGRG +HVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH6 +0BGM+RFq7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncB +lA2c5uk5jR+mUYyZDDl34bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdi +o2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1 +gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS6Cvu5zHbugRqh5jnxV/v +faci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaYtlu3zM63 +Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayh +jWZSaX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw +3kAP+HwV96LOPNdeE4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0= +-----END CERTIFICATE----- + +# Issuer: CN=emSign Root CA - G1 O=eMudhra Technologies Limited OU=emSign PKI +# Subject: CN=emSign Root CA - G1 O=eMudhra Technologies Limited OU=emSign PKI +# Label: "emSign Root CA - G1" +# Serial: 235931866688319308814040 +# MD5 Fingerprint: 9c:42:84:57:dd:cb:0b:a7:2e:95:ad:b6:f3:da:bc:ac +# SHA1 Fingerprint: 8a:c7:ad:8f:73:ac:4e:c1:b5:75:4d:a5:40:f4:fc:cf:7c:b5:8e:8c +# SHA256 Fingerprint: 40:f6:af:03:46:a9:9a:a1:cd:1d:55:5a:4e:9c:ce:62:c7:f9:63:46:03:ee:40:66:15:83:3d:c8:c8:d0:03:67 +-----BEGIN CERTIFICATE----- +MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYD +VQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBU +ZWNobm9sb2dpZXMgTGltaXRlZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBH +MTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgxODMwMDBaMGcxCzAJBgNVBAYTAklO +MRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVkaHJhIFRlY2hub2xv +Z2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQz +f2N4aLTNLnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO +8oG0x5ZOrRkVUkr+PHB1cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aq +d7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHWDV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhM +tTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ6DqS0hdW5TUaQBw+jSzt +Od9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrHhQIDAQAB +o0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQD +AgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31x +PaOfG1vR2vjTnGs2vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjM +wiI/aTvFthUvozXGaCocV685743QNcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6d +GNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q+Mri/Tm3R7nrft8EI6/6nAYH +6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeihU80Bv2noWgby +RQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx +iN66zB+Afko= +-----END CERTIFICATE----- + +# Issuer: CN=emSign ECC Root CA - G3 O=eMudhra Technologies Limited OU=emSign PKI +# Subject: CN=emSign ECC Root CA - G3 O=eMudhra Technologies Limited OU=emSign PKI +# Label: "emSign ECC Root CA - G3" +# Serial: 287880440101571086945156 +# MD5 Fingerprint: ce:0b:72:d1:9f:88:8e:d0:50:03:e8:e3:b8:8b:67:40 +# SHA1 Fingerprint: 30:43:fa:4f:f2:57:dc:a0:c3:80:ee:2e:58:ea:78:b2:3f:e6:bb:c1 +# SHA256 Fingerprint: 86:a1:ec:ba:08:9c:4a:8d:3b:be:27:34:c6:12:ba:34:1d:81:3e:04:3c:f9:e8:a8:62:cd:5c:57:a3:6b:be:6b +-----BEGIN CERTIFICATE----- +MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQG +EwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNo +bm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g +RzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4MTgzMDAwWjBrMQswCQYDVQQGEwJJ +TjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9s +b2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMw +djAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0 +WXTsuwYc58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xyS +fvalY8L1X44uT6EYGQIrMgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuB +zhccLikenEhjQjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggq +hkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+DCBeQyh+KTOgNG3qxrdWB +CUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7jHvrZQnD ++JbNR6iC8hZVdyR+EhCVBCyj +-----END CERTIFICATE----- + +# Issuer: CN=emSign Root CA - C1 O=eMudhra Inc OU=emSign PKI +# Subject: CN=emSign Root CA - C1 O=eMudhra Inc OU=emSign PKI +# Label: "emSign Root CA - C1" +# Serial: 825510296613316004955058 +# MD5 Fingerprint: d8:e3:5d:01:21:fa:78:5a:b0:df:ba:d2:ee:2a:5f:68 +# SHA1 Fingerprint: e7:2e:f1:df:fc:b2:09:28:cf:5d:d4:d5:67:37:b1:51:cb:86:4f:01 +# SHA256 Fingerprint: 12:56:09:aa:30:1d:a0:a2:49:b9:7a:82:39:cb:6a:34:21:6f:44:dc:ac:9f:39:54:b1:42:92:f2:e8:c8:60:8f +-----BEGIN CERTIFICATE----- +MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkG +A1UEBhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEg +SW5jMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAw +MFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln +biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNpZ24gUm9v +dCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+upufGZ +BczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZ +HdPIWoU/Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH +3DspVpNqs8FqOp099cGXOFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvH +GPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4VI5b2P/AgNBbeCsbEBEV5f6f9vtKppa+c +xSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleoomslMuoaJuvimUnzYnu3Yy1 +aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+XJGFehiq +TbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL +BQADggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87 +/kOXSTKZEhVb3xEp/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4 +kqNPEjE2NuLe/gDEo2APJ62gsIq1NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrG +YQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9wC68AivTxEDkigcxHpvOJpkT ++xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQBmIMMMAVSKeo +WXzhriKi4gp6D/piq1JM4fHfyr6DDUI= +-----END CERTIFICATE----- + +# Issuer: CN=emSign ECC Root CA - C3 O=eMudhra Inc OU=emSign PKI +# Subject: CN=emSign ECC Root CA - C3 O=eMudhra Inc OU=emSign PKI +# Label: "emSign ECC Root CA - C3" +# Serial: 582948710642506000014504 +# MD5 Fingerprint: 3e:53:b3:a3:81:ee:d7:10:f8:d3:b0:1d:17:92:f5:d5 +# SHA1 Fingerprint: b6:af:43:c2:9b:81:53:7d:f6:ef:6b:c3:1f:1f:60:15:0c:ee:48:66 +# SHA256 Fingerprint: bc:4d:80:9b:15:18:9d:78:db:3e:1d:8c:f4:f9:72:6a:79:5d:a1:64:3c:a5:f1:35:8e:1d:db:0e:dc:0d:7e:b3 +-----BEGIN CERTIFICATE----- +MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQG +EwJVUzETMBEGA1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMx +IDAeBgNVBAMTF2VtU2lnbiBFQ0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAw +MFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln +biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQDExdlbVNpZ24gRUND +IFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd6bci +MK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4Ojavti +sIGJAnB9SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0O +BBYEFPtaSNCAIEDyqOkAB2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB +Af8EBTADAQH/MAoGCCqGSM49BAMDA2gAMGUCMQC02C8Cif22TGK6Q04ThHK1rt0c +3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwUZOR8loMRnLDRWmFLpg9J +0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ== +-----END CERTIFICATE----- + +# Issuer: CN=Hongkong Post Root CA 3 O=Hongkong Post +# Subject: CN=Hongkong Post Root CA 3 O=Hongkong Post +# Label: "Hongkong Post Root CA 3" +# Serial: 46170865288971385588281144162979347873371282084 +# MD5 Fingerprint: 11:fc:9f:bd:73:30:02:8a:fd:3f:f3:58:b9:cb:20:f0 +# SHA1 Fingerprint: 58:a2:d0:ec:20:52:81:5b:c1:f3:f8:64:02:24:4e:c2:8e:02:4b:02 +# SHA256 Fingerprint: 5a:2f:c0:3f:0c:83:b0:90:bb:fa:40:60:4b:09:88:44:6c:76:36:18:3d:f9:84:6e:17:10:1a:44:7f:b8:ef:d6 +-----BEGIN CERTIFICATE----- +MIIFzzCCA7egAwIBAgIUCBZfikyl7ADJk0DfxMauI7gcWqQwDQYJKoZIhvcNAQEL +BQAwbzELMAkGA1UEBhMCSEsxEjAQBgNVBAgTCUhvbmcgS29uZzESMBAGA1UEBxMJ +SG9uZyBLb25nMRYwFAYDVQQKEw1Ib25na29uZyBQb3N0MSAwHgYDVQQDExdIb25n +a29uZyBQb3N0IFJvb3QgQ0EgMzAeFw0xNzA2MDMwMjI5NDZaFw00MjA2MDMwMjI5 +NDZaMG8xCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtvbmcxEjAQBgNVBAcT +CUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDEgMB4GA1UEAxMXSG9u +Z2tvbmcgUG9zdCBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQCziNfqzg8gTr7m1gNt7ln8wlffKWihgw4+aMdoWJwcYEuJQwy51BWy7sFO +dem1p+/l6TWZ5Mwc50tfjTMwIDNT2aa71T4Tjukfh0mtUC1Qyhi+AViiE3CWu4mI +VoBc+L0sPOFMV4i707mV78vH9toxdCim5lSJ9UExyuUmGs2C4HDaOym71QP1mbpV +9WTRYA6ziUm4ii8F0oRFKHyPaFASePwLtVPLwpgchKOesL4jpNrcyCse2m5FHomY +2vkALgbpDDtw1VAliJnLzXNg99X/NWfFobxeq81KuEXryGgeDQ0URhLj0mRiikKY +vLTGCAj4/ahMZJx2Ab0vqWwzD9g/KLg8aQFChn5pwckGyuV6RmXpwtZQQS4/t+Tt +bNe/JgERohYpSms0BpDsE9K2+2p20jzt8NYt3eEV7KObLyzJPivkaTv/ciWxNoZb +x39ri1UbSsUgYT2uy1DhCDq+sI9jQVMwCFk8mB13umOResoQUGC/8Ne8lYePl8X+ +l2oBlKN8W4UdKjk60FSh0Tlxnf0h+bV78OLgAo9uliQlLKAeLKjEiafv7ZkGL7YK +TE/bosw3Gq9HhS2KX8Q0NEwA/RiTZxPRN+ZItIsGxVd7GYYKecsAyVKvQv83j+Gj +Hno9UKtjBucVtT+2RTeUN7F+8kjDf8V1/peNRY8apxpyKBpADwIDAQABo2MwYTAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQXnc0e +i9Y5K3DTXNSguB+wAPzFYTAdBgNVHQ4EFgQUF53NHovWOStw01zUoLgfsAD8xWEw +DQYJKoZIhvcNAQELBQADggIBAFbVe27mIgHSQpsY1Q7XZiNc4/6gx5LS6ZStS6LG +7BJ8dNVI0lkUmcDrudHr9EgwW62nV3OZqdPlt9EuWSRY3GguLmLYauRwCy0gUCCk +MpXRAJi70/33MvJJrsZ64Ee+bs7Lo3I6LWldy8joRTnU+kLBEUx3XZL7av9YROXr +gZ6voJmtvqkBZss4HTzfQx/0TW60uhdG/H39h4F5ag0zD/ov+BS5gLNdTaqX4fnk +GMX41TiMJjz98iji7lpJiCzfeT2OnpA8vUFKOt1b9pq0zj8lMH8yfaIDlNDceqFS +3m6TjRgm/VWsvY+b0s+v54Ysyx8Jb6NvqYTUc79NoXQbTiNg8swOqn+knEwlqLJm +Ozj/2ZQw9nKEvmhVEA/GcywWaZMH/rFF7buiVWqw2rVKAiUnhde3t4ZEFolsgCs+ +l6mc1X5VTMbeRRAc6uk7nwNT7u56AQIWeNTowr5GdogTPyK7SBIdUgC0An4hGh6c +JfTzPV4e0hz5sy229zdcxsshTrD3mUcYhcErulWuBurQB7Lcq9CClnXO0lD+mefP +L5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB60PZ2Pierc+xYw5F9KBa +LJstxabArahH9CdMOA0uG0k7UvToiIMrVCjU8jVStDKDYmlkDJGcn5fqdBb9HxEG +mpv0 +-----END CERTIFICATE----- + +# Issuer: CN=Microsoft ECC Root Certificate Authority 2017 O=Microsoft Corporation +# Subject: CN=Microsoft ECC Root Certificate Authority 2017 O=Microsoft Corporation +# Label: "Microsoft ECC Root Certificate Authority 2017" +# Serial: 136839042543790627607696632466672567020 +# MD5 Fingerprint: dd:a1:03:e6:4a:93:10:d1:bf:f0:19:42:cb:fe:ed:67 +# SHA1 Fingerprint: 99:9a:64:c3:7f:f4:7d:9f:ab:95:f1:47:69:89:14:60:ee:c4:c3:c5 +# SHA256 Fingerprint: 35:8d:f3:9d:76:4a:f9:e1:b7:66:e9:c9:72:df:35:2e:e1:5c:fa:c2:27:af:6a:d1:d7:0e:8e:4a:6e:dc:ba:02 +-----BEGIN CERTIFICATE----- +MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQsw +CQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYD +VQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIw +MTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4MjMxNjA0WjBlMQswCQYDVQQGEwJV +UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNy +b3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZR +ogPZnZH6thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYb +hGBKia/teQ87zvH2RPUBeMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8E +BTADAQH/MB0GA1UdDgQWBBTIy5lycFIM+Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3 +FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlfXu5gKcs68tvWMoQZP3zV +L8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaReNtUjGUB +iudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M= +-----END CERTIFICATE----- + +# Issuer: CN=Microsoft RSA Root Certificate Authority 2017 O=Microsoft Corporation +# Subject: CN=Microsoft RSA Root Certificate Authority 2017 O=Microsoft Corporation +# Label: "Microsoft RSA Root Certificate Authority 2017" +# Serial: 40975477897264996090493496164228220339 +# MD5 Fingerprint: 10:ff:00:ff:cf:c9:f8:c7:7a:c0:ee:35:8e:c9:0f:47 +# SHA1 Fingerprint: 73:a5:e6:4a:3b:ff:83:16:ff:0e:dc:cc:61:8a:90:6e:4e:ae:4d:74 +# SHA256 Fingerprint: c7:41:f7:0f:4b:2a:8d:88:bf:2e:71:c1:41:22:ef:53:ef:10:eb:a0:cf:a5:e6:4c:fa:20:f4:18:85:30:73:e0 +-----BEGIN CERTIFICATE----- +MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBl +MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw +NAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIwNzE4MjMwMDIzWjBlMQswCQYDVQQG +EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1N +aWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZ +Nt9GkMml7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0 +ZdDMbRnMlfl7rEqUrQ7eS0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1 +HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw71VdyvD/IybLeS2v4I2wDwAW9lcfNcztm +gGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+dkC0zVJhUXAoP8XFWvLJ +jEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49FyGcohJUc +aDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaG +YaRSMLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6 +W6IYZVcSn2i51BVrlMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4K +UGsTuqwPN1q3ErWQgR5WrlcihtnJ0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH ++FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJClTUFLkqqNfs+avNJVgyeY+Q +W5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC +NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZC +LgLNFgVZJ8og6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OC +gMNPOsduET/m4xaRhPtthH80dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6 +tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk+ONVFT24bcMKpBLBaYVu32TxU5nh +SnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex/2kskZGT4d9Mozd2 +TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDyAmH3 +pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGR +xpl/j8nWZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiApp +GWSZI1b7rCoucL5mxAyE7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9 +dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKTc0QWbej09+CVgI+WXTik9KveCjCHk9hN +AHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D5KbvtwEwXlGjefVwaaZB +RA+GsCyRxj3qrg+E +-----END CERTIFICATE----- + +# Issuer: CN=e-Szigno Root CA 2017 O=Microsec Ltd. +# Subject: CN=e-Szigno Root CA 2017 O=Microsec Ltd. +# Label: "e-Szigno Root CA 2017" +# Serial: 411379200276854331539784714 +# MD5 Fingerprint: de:1f:f6:9e:84:ae:a7:b4:21:ce:1e:58:7d:d1:84:98 +# SHA1 Fingerprint: 89:d4:83:03:4f:9e:9a:48:80:5f:72:37:d4:a9:a6:ef:cb:7c:1f:d1 +# SHA256 Fingerprint: be:b0:0b:30:83:9b:9b:c3:2c:32:e4:44:79:05:95:06:41:f2:64:21:b1:5e:d0:89:19:8b:51:8a:e2:ea:1b:99 +-----BEGIN CERTIFICATE----- +MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNV +BAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRk +LjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJv +b3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZaFw00MjA4MjIxMjA3MDZaMHExCzAJ +BgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMg +THRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25v +IFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtv +xie+RJCxs1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+H +Wyx7xf58etqjYzBhMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBSHERUI0arBeAyxr87GyZDvvzAEwDAfBgNVHSMEGDAWgBSHERUI0arB +eAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEAtVfd14pVCzbhhkT61Nlo +jbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxOsvxyqltZ ++efcMQ== +-----END CERTIFICATE----- + +# Issuer: O=CERTSIGN SA OU=certSIGN ROOT CA G2 +# Subject: O=CERTSIGN SA OU=certSIGN ROOT CA G2 +# Label: "certSIGN Root CA G2" +# Serial: 313609486401300475190 +# MD5 Fingerprint: 8c:f1:75:8a:c6:19:cf:94:b7:f7:65:20:87:c3:97:c7 +# SHA1 Fingerprint: 26:f9:93:b4:ed:3d:28:27:b0:b9:4b:a7:e9:15:1d:a3:8d:92:e5:32 +# SHA256 Fingerprint: 65:7c:fe:2f:a7:3f:aa:38:46:25:71:f3:32:a2:36:3a:46:fc:e7:02:09:51:71:07:02:cd:fb:b6:ee:da:33:05 +-----BEGIN CERTIFICATE----- +MIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNV +BAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04g +Uk9PVCBDQSBHMjAeFw0xNzAyMDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJ +BgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJ +R04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDF +dRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05N0Iw +vlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZ +uIt4ImfkabBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhp +n+Sc8CnTXPnGFiWeI8MgwT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKs +cpc/I1mbySKEwQdPzH/iV8oScLumZfNpdWO9lfsbl83kqK/20U6o2YpxJM02PbyW +xPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91QqhngLjYl/rNUssuHLoPj1P +rCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732jcZZroiF +DsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fx +DTvf95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgy +LcsUDFDYg2WD7rlcz8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6C +eWRgKRM+o/1Pcmqr4tTluCRVLERLiohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSCIS1mxteg4BXrzkwJ +d8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOBywaK8SJJ6ejq +kX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC +b6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQl +qiCA2ClV9+BB/AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0 +OJD7uNGzcgbJceaBxXntC6Z58hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+c +NywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5BiKDUyUM/FHE5r7iOZULJK2v0ZXk +ltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklWatKcsWMy5WHgUyIO +pwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tUSxfj +03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZk +PuXaTH4MNMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE +1LlSVHJ7liXMvGnjSG4N0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MX +QRBdJ3NghVdJIgc= +-----END CERTIFICATE----- + +# Issuer: CN=Trustwave Global Certification Authority O=Trustwave Holdings, Inc. +# Subject: CN=Trustwave Global Certification Authority O=Trustwave Holdings, Inc. +# Label: "Trustwave Global Certification Authority" +# Serial: 1846098327275375458322922162 +# MD5 Fingerprint: f8:1c:18:2d:2f:ba:5f:6d:a1:6c:bc:c7:ab:91:c7:0e +# SHA1 Fingerprint: 2f:8f:36:4f:e1:58:97:44:21:59:87:a5:2a:9a:d0:69:95:26:7f:b5 +# SHA256 Fingerprint: 97:55:20:15:f5:dd:fc:3c:87:88:c0:06:94:45:55:40:88:94:45:00:84:f1:00:86:70:86:bc:1a:2b:b5:8d:c8 +-----BEGIN CERTIFICATE----- +MIIF2jCCA8KgAwIBAgIMBfcOhtpJ80Y1LrqyMA0GCSqGSIb3DQEBCwUAMIGIMQsw +CQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28x +ITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1 +c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMx +OTM0MTJaFw00MjA4MjMxOTM0MTJaMIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwI +SWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBI +b2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +ALldUShLPDeS0YLOvR29zd24q88KPuFd5dyqCblXAj7mY2Hf8g+CY66j96xz0Xzn +swuvCAAJWX/NKSqIk4cXGIDtiLK0thAfLdZfVaITXdHG6wZWiYj+rDKd/VzDBcdu +7oaJuogDnXIhhpCujwOl3J+IKMujkkkP7NAP4m1ET4BqstTnoApTAbqOl5F2brz8 +1Ws25kCI1nsvXwXoLG0R8+eyvpJETNKXpP7ScoFDB5zpET71ixpZfR9oWN0EACyW +80OzfpgZdNmcc9kYvkHHNHnZ9GLCQ7mzJ7Aiy/k9UscwR7PJPrhq4ufogXBeQotP +JqX+OsIgbrv4Fo7NDKm0G2x2EOFYeUY+VM6AqFcJNykbmROPDMjWLBz7BegIlT1l +RtzuzWniTY+HKE40Cz7PFNm73bZQmq131BnW2hqIyE4bJ3XYsgjxroMwuREOzYfw +hI0Vcnyh78zyiGG69Gm7DIwLdVcEuE4qFC49DxweMqZiNu5m4iK4BUBjECLzMx10 +coos9TkpoNPnG4CELcU9402x/RpvumUHO1jsQkUm+9jaJXLE9gCxInm943xZYkqc +BW89zubWR2OZxiRvchLIrH+QtAuRcOi35hYQcRfO3gZPSEF9NUqjifLJS3tBEW1n +twiYTOURGa5CgNz7kAXU+FDKvuStx8KU1xad5hePrzb7AgMBAAGjQjBAMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFJngGWcNYtt2s9o9uFvo/ULSMQ6HMA4GA1Ud +DwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAmHNw4rDT7TnsTGDZqRKGFx6W +0OhUKDtkLSGm+J1WE2pIPU/HPinbbViDVD2HfSMF1OQc3Og4ZYbFdada2zUFvXfe +uyk3QAUHw5RSn8pk3fEbK9xGChACMf1KaA0HZJDmHvUqoai7PF35owgLEQzxPy0Q +lG/+4jSHg9bP5Rs1bdID4bANqKCqRieCNqcVtgimQlRXtpla4gt5kNdXElE1GYhB +aCXUNxeEFfsBctyV3lImIJgm4nb1J2/6ADtKYdkNy1GTKv0WBpanI5ojSP5RvbbE +sLFUzt5sQa0WZ37b/TjNuThOssFgy50X31ieemKyJo90lZvkWx3SD92YHJtZuSPT +MaCm/zjdzyBP6VhWOmfD0faZmZ26NraAL4hHT4a/RDqA5Dccprrql5gR0IRiR2Qe +qu5AvzSxnI9O4fKSTx+O856X3vOmeWqJcU9LJxdI/uz0UA9PSX3MReO9ekDFQdxh +VicGaeVyQYHTtgGJoC86cnn+OjC/QezHYj6RS8fZMXZC+fc8Y+wmjHMMfRod6qh8 +h6jCJ3zhM0EPz8/8AKAigJ5Kp28AsEFFtyLKaEjFQqKu3R3y4G5OBVixwJAWKqQ9 +EEC+j2Jjg6mcgn0tAumDMHzLJ8n9HmYAsC7TIS+OMxZsmO0QqAfWzJPP29FpHOTK +yeC2nOnOcXHebD8WpHk= +-----END CERTIFICATE----- + +# Issuer: CN=Trustwave Global ECC P256 Certification Authority O=Trustwave Holdings, Inc. +# Subject: CN=Trustwave Global ECC P256 Certification Authority O=Trustwave Holdings, Inc. +# Label: "Trustwave Global ECC P256 Certification Authority" +# Serial: 4151900041497450638097112925 +# MD5 Fingerprint: 5b:44:e3:8d:5d:36:86:26:e8:0d:05:d2:59:a7:83:54 +# SHA1 Fingerprint: b4:90:82:dd:45:0c:be:8b:5b:b1:66:d3:e2:a4:08:26:cd:ed:42:cf +# SHA256 Fingerprint: 94:5b:bc:82:5e:a5:54:f4:89:d1:fd:51:a7:3d:df:2e:a6:24:ac:70:19:a0:52:05:22:5c:22:a7:8c:cf:a8:b4 +-----BEGIN CERTIFICATE----- +MIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYD +VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf +BgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3 +YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x +NzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYDVQQGEwJVUzERMA8G +A1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0 +d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF +Q0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqG +SM49AwEHA0IABH77bOYj43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoN +FWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqmP62jQzBBMA8GA1UdEwEB/wQFMAMBAf8w +DwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt0UrrdaVKEJmzsaGLSvcw +CgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjzRM4q3wgh +DDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7 +-----END CERTIFICATE----- + +# Issuer: CN=Trustwave Global ECC P384 Certification Authority O=Trustwave Holdings, Inc. +# Subject: CN=Trustwave Global ECC P384 Certification Authority O=Trustwave Holdings, Inc. +# Label: "Trustwave Global ECC P384 Certification Authority" +# Serial: 2704997926503831671788816187 +# MD5 Fingerprint: ea:cf:60:c4:3b:b9:15:29:40:a1:97:ed:78:27:93:d6 +# SHA1 Fingerprint: e7:f3:a3:c8:cf:6f:c3:04:2e:6d:0e:67:32:c5:9e:68:95:0d:5e:d2 +# SHA256 Fingerprint: 55:90:38:59:c8:c0:c3:eb:b8:75:9e:ce:4e:25:57:22:5f:f5:75:8b:bd:38:eb:d4:82:76:60:1e:1b:d5:80:97 +-----BEGIN CERTIFICATE----- +MIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYD +VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf +BgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3 +YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x +NzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYDVQQGEwJVUzERMA8G +A1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0 +d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF +Q0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuB +BAAiA2IABGvaDXU1CDFHBa5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJ +j9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr/TklZvFe/oyujUF5nQlgziip04pt89ZF +1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G +A1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNnADBkAjA3 +AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsC +MGclCrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVu +Sw== +-----END CERTIFICATE----- + +# Issuer: CN=NAVER Global Root Certification Authority O=NAVER BUSINESS PLATFORM Corp. +# Subject: CN=NAVER Global Root Certification Authority O=NAVER BUSINESS PLATFORM Corp. +# Label: "NAVER Global Root Certification Authority" +# Serial: 9013692873798656336226253319739695165984492813 +# MD5 Fingerprint: c8:7e:41:f6:25:3b:f5:09:b3:17:e8:46:3d:bf:d0:9b +# SHA1 Fingerprint: 8f:6b:f2:a9:27:4a:da:14:a0:c4:f4:8e:61:27:f9:c0:1e:78:5d:d1 +# SHA256 Fingerprint: 88:f4:38:dc:f8:ff:d1:fa:8f:42:91:15:ff:e5:f8:2a:e1:e0:6e:0c:70:c3:75:fa:ad:71:7b:34:a4:9e:72:65 +-----BEGIN CERTIFICATE----- +MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEM +BQAwaTELMAkGA1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRG +T1JNIENvcnAuMTIwMAYDVQQDDClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4NDJaFw0zNzA4MTgyMzU5NTlaMGkx +CzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVTUyBQTEFURk9STSBD +b3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVA +iQqrDZBbUGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH +38dq6SZeWYp34+hInDEW+j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lE +HoSTGEq0n+USZGnQJoViAbbJAh2+g1G7XNr4rRVqmfeSVPc0W+m/6imBEtRTkZaz +kVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2aacp+yPOiNgSnABIqKYP +szuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4Yb8Obtoq +vC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHf +nZ3zVHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaG +YQ5fG8Ir4ozVu53BA0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo +0es+nPxdGoMuK8u180SdOqcXYZaicdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3a +CJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejyYhbLgGvtPe31HzClrkvJE+2K +AQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNVHQ4EFgQU0p+I +36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB +Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoN +qo0hV4/GPnrK21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatj +cu3cvuzHV+YwIHHW1xDBE1UBjCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm ++LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bxhYTeodoS76TiEJd6eN4MUZeoIUCL +hr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTgE34h5prCy8VCZLQe +lHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTHD8z7 +p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8 +piKCk5XQA76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLR +LBT/DShycpWbXgnbiUSYqqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX +5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oGI/hGoiLtk/bdmuYqh7GYVPEi92tF4+KO +dh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmgkpzNNIaRkPpkUZ3+/uul +9XXeifdy +-----END CERTIFICATE----- + +# Issuer: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS O=FNMT-RCM OU=Ceres +# Subject: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS O=FNMT-RCM OU=Ceres +# Label: "AC RAIZ FNMT-RCM SERVIDORES SEGUROS" +# Serial: 131542671362353147877283741781055151509 +# MD5 Fingerprint: 19:36:9c:52:03:2f:d2:d1:bb:23:cc:dd:1e:12:55:bb +# SHA1 Fingerprint: 62:ff:d9:9e:c0:65:0d:03:ce:75:93:d2:ed:3f:2d:32:c9:e3:e5:4a +# SHA256 Fingerprint: 55:41:53:b1:3d:2c:f9:dd:b7:53:bf:be:1a:4e:0a:e0:8d:0a:a4:18:70:58:fe:60:a2:b8:62:b2:e4:b8:7b:cb +-----BEGIN CERTIFICATE----- +MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQsw +CQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgw +FgYDVQRhDA9WQVRFUy1RMjgyNjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1S +Q00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4MTIyMDA5MzczM1oXDTQzMTIyMDA5 +MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQtUkNNMQ4wDAYDVQQL +DAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNBQyBS +QUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LH +sbI6GA60XYyzZl2hNPk2LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oK +Um8BA06Oi6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqGSM49BAMDA2kAMGYCMQCu +SuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoDzBOQn5IC +MQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJy +v+c= +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign Root R46 O=GlobalSign nv-sa +# Subject: CN=GlobalSign Root R46 O=GlobalSign nv-sa +# Label: "GlobalSign Root R46" +# Serial: 1552617688466950547958867513931858518042577 +# MD5 Fingerprint: c4:14:30:e4:fa:66:43:94:2a:6a:1b:24:5f:19:d0:ef +# SHA1 Fingerprint: 53:a2:b0:4b:ca:6b:d6:45:e6:39:8a:8e:c4:0d:d2:bf:77:c3:a2:90 +# SHA256 Fingerprint: 4f:a3:12:6d:8d:3a:11:d1:c4:85:5a:4f:80:7c:ba:d6:cf:91:9d:3a:5a:88:b0:3b:ea:2c:63:72:d9:3c:40:c9 +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUA +MEYxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYD +VQQDExNHbG9iYWxTaWduIFJvb3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMy +MDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt +c2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08EsCVeJ +OaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQG +vGIFAha/r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud +316HCkD7rRlr+/fKYIje2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo +0q3v84RLHIf8E6M6cqJaESvWJ3En7YEtbWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSE +y132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvjK8Cd+RTyG/FWaha/LIWF +zXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD412lPFzYE ++cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCN +I/onccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzs +x2sZy/N78CsHpdlseVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqa +ByFrgY/bxFn63iLABJzjqls2k+g9vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC +4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEMBQADggIBAHx4 +7PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg +JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti +2kM3S+LGteWygxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIk +pnnpHs6i58FZFZ8d4kuaPp92CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRF +FRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZmOUdkLG5NrmJ7v2B0GbhWrJKsFjLt +rWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qqJZ4d16GLuc1CLgSk +ZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwyeqiv5 +u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP +4vkYxboznxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6 +N3ec592kD3ZDZopD8p/7DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3 +vouXsXgxT7PntgMTzlSdriVZzH81Xwj3QEUxeCp6 +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign Root E46 O=GlobalSign nv-sa +# Subject: CN=GlobalSign Root E46 O=GlobalSign nv-sa +# Label: "GlobalSign Root E46" +# Serial: 1552617690338932563915843282459653771421763 +# MD5 Fingerprint: b5:b8:66:ed:de:08:83:e3:c9:e2:01:34:06:ac:51:6f +# SHA1 Fingerprint: 39:b4:6c:d5:fe:80:06:eb:e2:2f:4a:bb:08:33:a0:af:db:b9:dd:84 +# SHA256 Fingerprint: cb:b9:c4:4d:84:b8:04:3e:10:50:ea:31:a6:9f:51:49:55:d7:bf:d2:e2:c6:b4:93:01:01:9a:d6:1d:9f:50:58 +-----BEGIN CERTIFICATE----- +MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYx +CzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQD +ExNHbG9iYWxTaWduIFJvb3QgRTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAw +MDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex +HDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkBjtjq +R+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGdd +yXqBPCCjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud +DgQWBBQxCpCPtsad0kRLgLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ +7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZkvLtoURMMA/cVi4RguYv/Uo7njLwcAjA8 ++RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+CAezNIm8BZ/3Hobui3A= +-----END CERTIFICATE----- + +# Issuer: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz +# Subject: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz +# Label: "ANF Secure Server Root CA" +# Serial: 996390341000653745 +# MD5 Fingerprint: 26:a6:44:5a:d9:af:4e:2f:b2:1d:b6:65:b0:4e:e8:96 +# SHA1 Fingerprint: 5b:6e:68:d0:cc:15:b6:a0:5f:1e:c1:5f:ae:02:fc:6b:2f:5d:6f:74 +# SHA256 Fingerprint: fb:8f:ec:75:91:69:b9:10:6b:1e:51:16:44:c6:18:c5:13:04:37:3f:6c:06:43:08:8d:8b:ef:fd:1b:99:75:99 +-----BEGIN CERTIFICATE----- +MIIF7zCCA9egAwIBAgIIDdPjvGz5a7EwDQYJKoZIhvcNAQELBQAwgYQxEjAQBgNV +BAUTCUc2MzI4NzUxMDELMAkGA1UEBhMCRVMxJzAlBgNVBAoTHkFORiBBdXRvcmlk +YWQgZGUgQ2VydGlmaWNhY2lvbjEUMBIGA1UECxMLQU5GIENBIFJhaXoxIjAgBgNV +BAMTGUFORiBTZWN1cmUgU2VydmVyIFJvb3QgQ0EwHhcNMTkwOTA0MTAwMDM4WhcN +MzkwODMwMTAwMDM4WjCBhDESMBAGA1UEBRMJRzYzMjg3NTEwMQswCQYDVQQGEwJF +UzEnMCUGA1UEChMeQU5GIEF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uMRQwEgYD +VQQLEwtBTkYgQ0EgUmFpejEiMCAGA1UEAxMZQU5GIFNlY3VyZSBTZXJ2ZXIgUm9v +dCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANvrayvmZFSVgpCj +cqQZAZ2cC4Ffc0m6p6zzBE57lgvsEeBbphzOG9INgxwruJ4dfkUyYA8H6XdYfp9q +yGFOtibBTI3/TO80sh9l2Ll49a2pcbnvT1gdpd50IJeh7WhM3pIXS7yr/2WanvtH +2Vdy8wmhrnZEE26cLUQ5vPnHO6RYPUG9tMJJo8gN0pcvB2VSAKduyK9o7PQUlrZX +H1bDOZ8rbeTzPvY1ZNoMHKGESy9LS+IsJJ1tk0DrtSOOMspvRdOoiXsezx76W0OL +zc2oD2rKDF65nkeP8Nm2CgtYZRczuSPkdxl9y0oukntPLxB3sY0vaJxizOBQ+OyR +p1RMVwnVdmPF6GUe7m1qzwmd+nxPrWAI/VaZDxUse6mAq4xhj0oHdkLePfTdsiQz +W7i1o0TJrH93PB0j7IKppuLIBkwC/qxcmZkLLxCKpvR/1Yd0DVlJRfbwcVw5Kda/ +SiOL9V8BY9KHcyi1Swr1+KuCLH5zJTIdC2MKF4EA/7Z2Xue0sUDKIbvVgFHlSFJn +LNJhiQcND85Cd8BEc5xEUKDbEAotlRyBr+Qc5RQe8TZBAQIvfXOn3kLMTOmJDVb3 +n5HUA8ZsyY/b2BzgQJhdZpmYgG4t/wHFzstGH6wCxkPmrqKEPMVOHj1tyRRM4y5B +u8o5vzY8KhmqQYdOpc5LMnndkEl/AgMBAAGjYzBhMB8GA1UdIwQYMBaAFJxf0Gxj +o1+TypOYCK2Mh6UsXME3MB0GA1UdDgQWBBScX9BsY6Nfk8qTmAitjIelLFzBNzAO +BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOC +AgEATh65isagmD9uw2nAalxJUqzLK114OMHVVISfk/CHGT0sZonrDUL8zPB1hT+L +9IBdeeUXZ701guLyPI59WzbLWoAAKfLOKyzxj6ptBZNscsdW699QIyjlRRA96Gej +rw5VD5AJYu9LWaL2U/HANeQvwSS9eS9OICI7/RogsKQOLHDtdD+4E5UGUcjohybK +pFtqFiGS3XNgnhAY3jyB6ugYw3yJ8otQPr0R4hUDqDZ9MwFsSBXXiJCZBMXM5gf0 +vPSQ7RPi6ovDj6MzD8EpTBNO2hVWcXNyglD2mjN8orGoGjR0ZVzO0eurU+AagNjq +OknkJjCb5RyKqKkVMoaZkgoQI1YS4PbOTOK7vtuNknMBZi9iPrJyJ0U27U1W45eZ +/zo1PqVUSlJZS2Db7v54EX9K3BR5YLZrZAPbFYPhor72I5dQ8AkzNqdxliXzuUJ9 +2zg/LFis6ELhDtjTO0wugumDLmsx2d1Hhk9tl5EuT+IocTUW0fJz/iUrB0ckYyfI ++PbZa/wSMVYIwFNCr5zQM378BvAxRAMU8Vjq8moNqRGyg77FGr8H6lnco4g175x2 +MjxNBiLOFeXdntiP2t7SxDnlF4HPOEfrf4htWRvfn0IUrn7PqLBmZdo3r5+qPeoo +tt7VMVgWglvquxl1AnMaykgaIZOQCo6ThKd9OyMYkomgjaw= +-----END CERTIFICATE----- + +# Issuer: CN=Certum EC-384 CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Subject: CN=Certum EC-384 CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Label: "Certum EC-384 CA" +# Serial: 160250656287871593594747141429395092468 +# MD5 Fingerprint: b6:65:b3:96:60:97:12:a1:ec:4e:e1:3d:a3:c6:c9:f1 +# SHA1 Fingerprint: f3:3e:78:3c:ac:df:f4:a2:cc:ac:67:55:69:56:d7:e5:16:3c:e1:ed +# SHA256 Fingerprint: 6b:32:80:85:62:53:18:aa:50:d1:73:c9:8d:8b:da:09:d5:7e:27:41:3d:11:4c:f7:87:a0:f5:d0:6c:03:0c:f6 +-----BEGIN CERTIFICATE----- +MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQsw +CQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScw +JQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMT +EENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2MDcyNDU0WhcNNDMwMzI2MDcyNDU0 +WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBT +LkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAX +BgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATE +KI6rGFtqvm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7Tm +Fy8as10CW4kjPMIRBSqniBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68Kj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI0GZnQkdjrzife81r1HfS+8 +EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNoADBlAjADVS2m5hjEfO/J +UG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0QoSZ/6vn +nvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k= +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Root CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Root CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Root CA" +# Serial: 40870380103424195783807378461123655149 +# MD5 Fingerprint: 51:e1:c2:e7:fe:4c:84:af:59:0e:2f:f4:54:6f:ea:29 +# SHA1 Fingerprint: c8:83:44:c0:18:ae:9f:cc:f1:87:b7:8f:22:d1:c5:d7:45:84:ba:e5 +# SHA256 Fingerprint: fe:76:96:57:38:55:77:3e:37:a9:5e:7a:d4:d9:cc:96:c3:01:57:c1:5d:31:76:5b:a9:b1:57:04:e1:ae:78:fd +-----BEGIN CERTIFICATE----- +MIIFwDCCA6igAwIBAgIQHr9ZULjJgDdMBvfrVU+17TANBgkqhkiG9w0BAQ0FADB6 +MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEu +MScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxHzAdBgNV +BAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwHhcNMTgwMzE2MTIxMDEzWhcNNDMw +MzE2MTIxMDEzWjB6MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEg +U3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkxHzAdBgNVBAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQDRLY67tzbqbTeRn06TpwXkKQMlzhyC93yZ +n0EGze2jusDbCSzBfN8pfktlL5On1AFrAygYo9idBcEq2EXxkd7fO9CAAozPOA/q +p1x4EaTByIVcJdPTsuclzxFUl6s1wB52HO8AU5853BSlLCIls3Jy/I2z5T4IHhQq +NwuIPMqw9MjCoa68wb4pZ1Xi/K1ZXP69VyywkI3C7Te2fJmItdUDmj0VDT06qKhF +8JVOJVkdzZhpu9PMMsmN74H+rX2Ju7pgE8pllWeg8xn2A1bUatMn4qGtg/BKEiJ3 +HAVz4hlxQsDsdUaakFjgao4rpUYwBI4Zshfjvqm6f1bxJAPXsiEodg42MEx51UGa +mqi4NboMOvJEGyCI98Ul1z3G4z5D3Yf+xOr1Uz5MZf87Sst4WmsXXw3Hw09Omiqi +7VdNIuJGmj8PkTQkfVXjjJU30xrwCSss0smNtA0Aq2cpKNgB9RkEth2+dv5yXMSF +ytKAQd8FqKPVhJBPC/PgP5sZ0jeJP/J7UhyM9uH3PAeXjA6iWYEMspA90+NZRu0P +qafegGtaqge2Gcu8V/OXIXoMsSt0Puvap2ctTMSYnjYJdmZm/Bo/6khUHL4wvYBQ +v3y1zgD2DGHZ5yQD4OMBgQ692IU0iL2yNqh7XAjlRICMb/gv1SHKHRzQ+8S1h9E6 +Tsd2tTVItQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSM+xx1 +vALTn04uSNn5YFSqxLNP+jAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQAD +ggIBAEii1QALLtA/vBzVtVRJHlpr9OTy4EA34MwUe7nJ+jW1dReTagVphZzNTxl4 +WxmB82M+w85bj/UvXgF2Ez8sALnNllI5SW0ETsXpD4YN4fqzX4IS8TrOZgYkNCvo +zMrnadyHncI013nR03e4qllY/p0m+jiGPp2Kh2RX5Rc64vmNueMzeMGQ2Ljdt4NR +5MTMI9UGfOZR0800McD2RrsLrfw9EAUqO0qRJe6M1ISHgCq8CYyqOhNf6DR5UMEQ +GfnTKB7U0VEwKbOukGfWHwpjscWpxkIxYxeU72nLL/qMFH3EQxiJ2fAyQOaA4kZf +5ePBAFmo+eggvIksDkc0C+pXwlM2/KfUrzHN/gLldfq5Jwn58/U7yn2fqSLLiMmq +0Uc9NneoWWRrJ8/vJ8HjJLWG965+Mk2weWjROeiQWMODvA8s1pfrzgzhIMfatz7D +P78v3DSk+yshzWePS/Tj6tQ/50+6uaWTRRxmHyH6ZF5v4HaUMst19W7l9o/HuKTM +qJZ9ZPskWkoDbGs4xugDQ5r3V7mzKWmTOPQD8rv7gmsHINFSH5pkAnuYZttcTVoP +0ISVoDwUQwbKytu4QTbaakRnh6+v40URFWkIsr4WOZckbxJF0WddCajJFdr60qZf +E2Efv4WstK2tBZQIgx51F9NxO5NQI1mg7TyRVJ12AMXDuDjb +-----END CERTIFICATE----- + +# Issuer: CN=TunTrust Root CA O=Agence Nationale de Certification Electronique +# Subject: CN=TunTrust Root CA O=Agence Nationale de Certification Electronique +# Label: "TunTrust Root CA" +# Serial: 108534058042236574382096126452369648152337120275 +# MD5 Fingerprint: 85:13:b9:90:5b:36:5c:b6:5e:b8:5a:f8:e0:31:57:b4 +# SHA1 Fingerprint: cf:e9:70:84:0f:e0:73:0f:9d:f6:0c:7f:2c:4b:ee:20:46:34:9c:bb +# SHA256 Fingerprint: 2e:44:10:2a:b5:8c:b8:54:19:45:1c:8e:19:d9:ac:f3:66:2c:af:bc:61:4b:6a:53:96:0a:30:f7:d0:e2:eb:41 +-----BEGIN CERTIFICATE----- +MIIFszCCA5ugAwIBAgIUEwLV4kBMkkaGFmddtLu7sms+/BMwDQYJKoZIhvcNAQEL +BQAwYTELMAkGA1UEBhMCVE4xNzA1BgNVBAoMLkFnZW5jZSBOYXRpb25hbGUgZGUg +Q2VydGlmaWNhdGlvbiBFbGVjdHJvbmlxdWUxGTAXBgNVBAMMEFR1blRydXN0IFJv +b3QgQ0EwHhcNMTkwNDI2MDg1NzU2WhcNNDQwNDI2MDg1NzU2WjBhMQswCQYDVQQG +EwJUTjE3MDUGA1UECgwuQWdlbmNlIE5hdGlvbmFsZSBkZSBDZXJ0aWZpY2F0aW9u +IEVsZWN0cm9uaXF1ZTEZMBcGA1UEAwwQVHVuVHJ1c3QgUm9vdCBDQTCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMPN0/y9BFPdDCA61YguBUtB9YOCfvdZ +n56eY+hz2vYGqU8ftPkLHzmMmiDQfgbU7DTZhrx1W4eI8NLZ1KMKsmwb60ksPqxd +2JQDoOw05TDENX37Jk0bbjBU2PWARZw5rZzJJQRNmpA+TkBuimvNKWfGzC3gdOgF +VwpIUPp6Q9p+7FuaDmJ2/uqdHYVy7BG7NegfJ7/Boce7SBbdVtfMTqDhuazb1YMZ +GoXRlJfXyqNlC/M4+QKu3fZnz8k/9YosRxqZbwUN/dAdgjH8KcwAWJeRTIAAHDOF +li/LQcKLEITDCSSJH7UP2dl3RxiSlGBcx5kDPP73lad9UKGAwqmDrViWVSHbhlnU +r8a83YFuB9tgYv7sEG7aaAH0gxupPqJbI9dkxt/con3YS7qC0lH4Zr8GRuR5KiY2 +eY8fTpkdso8MDhz/yV3A/ZAQprE38806JG60hZC/gLkMjNWb1sjxVj8agIl6qeIb +MlEsPvLfe/ZdeikZjuXIvTZxi11Mwh0/rViizz1wTaZQmCXcI/m4WEEIcb9PuISg +jwBUFfyRbVinljvrS5YnzWuioYasDXxU5mZMZl+QviGaAkYt5IPCgLnPSz7ofzwB +7I9ezX/SKEIBlYrilz0QIX32nRzFNKHsLA4KUiwSVXAkPcvCFDVDXSdOvsC9qnyW +5/yeYa1E0wCXAgMBAAGjYzBhMB0GA1UdDgQWBBQGmpsfU33x9aTI04Y+oXNZtPdE +ITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFAaamx9TffH1pMjThj6hc1m0 +90QhMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAqgVutt0Vyb+z +xiD2BkewhpMl0425yAA/l/VSJ4hxyXT968pk21vvHl26v9Hr7lxpuhbI87mP0zYu +QEkHDVneixCwSQXi/5E/S7fdAo74gShczNxtr18UnH1YeA32gAm56Q6XKRm4t+v4 +FstVEuTGfbvE7Pi1HE4+Z7/FXxttbUcoqgRYYdZ2vyJ/0Adqp2RT8JeNnYA/u8EH +22Wv5psymsNUk8QcCMNE+3tjEUPRahphanltkE8pjkcFwRJpadbGNjHh/PqAulxP +xOu3Mqz4dWEX1xAZufHSCe96Qp1bWgvUxpVOKs7/B9dPfhgGiPEZtdmYu65xxBzn +dFlY7wyJz4sfdZMaBBSSSFCp61cpABbjNhzI+L/wM9VBD8TMPN3pM0MBkRArHtG5 +Xc0yGYuPjCB31yLEQtyEFpslbei0VXF/sHyz03FJuc9SpAQ/3D2gu68zngowYI7b +nV2UqL1g52KAdoGDDIzMMEZJ4gzSqK/rYXHv5yJiqfdcZGyfFoxnNidF9Ql7v/YQ +CvGwjVRDjAS6oz/v4jXH+XTgbzRB0L9zZVcg+ZtnemZoJE6AZb0QmQZZ8mWvuMZH +u/2QeItBcy6vVR/cO5JyboTT0GFMDcx2V+IthSIVNg3rAZ3r2OvEhJn7wAzMMujj +d9qDRIueVSjAi1jTkD5OGwDxFa2DK5o= +-----END CERTIFICATE----- + +# Issuer: CN=HARICA TLS RSA Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Subject: CN=HARICA TLS RSA Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Label: "HARICA TLS RSA Root CA 2021" +# Serial: 76817823531813593706434026085292783742 +# MD5 Fingerprint: 65:47:9b:58:86:dd:2c:f0:fc:a2:84:1f:1e:96:c4:91 +# SHA1 Fingerprint: 02:2d:05:82:fa:88:ce:14:0c:06:79:de:7f:14:10:e9:45:d7:a5:6d +# SHA256 Fingerprint: d9:5d:0e:8e:da:79:52:5b:f9:be:b1:1b:14:d2:10:0d:32:94:98:5f:0c:62:d9:fa:bd:9c:d9:99:ec:cb:7b:1d +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIQOcqTHO9D88aOk8f0ZIk4fjANBgkqhkiG9w0BAQsFADBs +MQswCQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl +c2VhcmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBSU0Eg +Um9vdCBDQSAyMDIxMB4XDTIxMDIxOTEwNTUzOFoXDTQ1MDIxMzEwNTUzN1owbDEL +MAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl +YXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgUlNBIFJv +b3QgQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIvC569l +mwVnlskNJLnQDmT8zuIkGCyEf3dRywQRNrhe7Wlxp57kJQmXZ8FHws+RFjZiPTgE +4VGC/6zStGndLuwRo0Xua2s7TL+MjaQenRG56Tj5eg4MmOIjHdFOY9TnuEFE+2uv +a9of08WRiFukiZLRgeaMOVig1mlDqa2YUlhu2wr7a89o+uOkXjpFc5gH6l8Cct4M +pbOfrqkdtx2z/IpZ525yZa31MJQjB/OCFks1mJxTuy/K5FrZx40d/JiZ+yykgmvw +Kh+OC19xXFyuQnspiYHLA6OZyoieC0AJQTPb5lh6/a6ZcMBaD9YThnEvdmn8kN3b +LW7R8pv1GmuebxWMevBLKKAiOIAkbDakO/IwkfN4E8/BPzWr8R0RI7VDIp4BkrcY +AuUR0YLbFQDMYTfBKnya4dC6s1BG7oKsnTH4+yPiAwBIcKMJJnkVU2DzOFytOOqB +AGMUuTNe3QvboEUHGjMJ+E20pwKmafTCWQWIZYVWrkvL4N48fS0ayOn7H6NhStYq +E613TBoYm5EPWNgGVMWX+Ko/IIqmhaZ39qb8HOLubpQzKoNQhArlT4b4UEV4AIHr +W2jjJo3Me1xR9BQsQL4aYB16cmEdH2MtiKrOokWQCPxrvrNQKlr9qEgYRtaQQJKQ +CoReaDH46+0N0x3GfZkYVVYnZS6NRcUk7M7jAgMBAAGjQjBAMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFApII6ZgpJIKM+qTW8VX6iVNvRLuMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAPpBIqm5iFSVmewzVjIuJndftTgfvnNAU +X15QvWiWkKQUEapobQk1OUAJ2vQJLDSle1mESSmXdMgHHkdt8s4cUCbjnj1AUz/3 +f5Z2EMVGpdAgS1D0NTsY9FVqQRtHBmg8uwkIYtlfVUKqrFOFrJVWNlar5AWMxaja +H6NpvVMPxP/cyuN+8kyIhkdGGvMA9YCRotxDQpSbIPDRzbLrLFPCU3hKTwSUQZqP +JzLB5UkZv/HywouoCjkxKLR9YjYsTewfM7Z+d21+UPCfDtcRj88YxeMn/ibvBZ3P +zzfF0HvaO7AWhAw6k9a+F9sPPg4ZeAnHqQJyIkv3N3a6dcSFA1pj1bF1BcK5vZSt +jBWZp5N99sXzqnTPBIWUmAD04vnKJGW/4GKvyMX6ssmeVkjaef2WdhW+o45WxLM0 +/L5H9MG0qPzVMIho7suuyWPEdr6sOBjhXlzPrjoiUevRi7PzKzMHVIf6tLITe7pT +BGIBnfHAT+7hOtSLIBD6Alfm78ELt5BGnBkpjNxvoEppaZS3JGWg/6w/zgH7IS79 +aPib8qXPMThcFarmlwDB31qlpzmq6YR/PFGoOtmUW4y/Twhx5duoXNTSpv4Ao8YW +xw/ogM4cKGR0GQjTQuPOAF1/sdwTsOEFy9EgqoZ0njnnkf3/W9b3raYvAwtt41dU +63ZTGI0RmLo= +-----END CERTIFICATE----- + +# Issuer: CN=HARICA TLS ECC Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Subject: CN=HARICA TLS ECC Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Label: "HARICA TLS ECC Root CA 2021" +# Serial: 137515985548005187474074462014555733966 +# MD5 Fingerprint: ae:f7:4c:e5:66:35:d1:b7:9b:8c:22:93:74:d3:4b:b0 +# SHA1 Fingerprint: bc:b0:c1:9d:e9:98:92:70:19:38:57:e9:8d:a7:b4:5d:6e:ee:01:48 +# SHA256 Fingerprint: 3f:99:cc:47:4a:cf:ce:4d:fe:d5:87:94:66:5e:47:8d:15:47:73:9f:2e:78:0f:1b:b4:ca:9b:13:30:97:d4:01 +-----BEGIN CERTIFICATE----- +MIICVDCCAdugAwIBAgIQZ3SdjXfYO2rbIvT/WeK/zjAKBggqhkjOPQQDAzBsMQsw +CQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2Vh +cmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBFQ0MgUm9v +dCBDQSAyMDIxMB4XDTIxMDIxOTExMDExMFoXDTQ1MDIxMzExMDEwOVowbDELMAkG +A1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj +aCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgRUNDIFJvb3Qg +Q0EgMjAyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDgI/rGgltJ6rK9JOtDA4MM7 +KKrxcm1lAEeIhPyaJmuqS7psBAqIXhfyVYf8MLA04jRYVxqEU+kw2anylnTDUR9Y +STHMmE5gEYd103KUkE+bECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW0aq8mm+3oJUZbsowDgYDVR0PAQH/BAQD +AgGGMAoGCCqGSM49BAMDA2cAMGQCMBHervjcToiwqfAircJRQO9gcS3ujwLEXQNw +SaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/QwCZ61IygN +nxS2PFOiTAZpffpskcYqSUXm7LcT4Tps +-----END CERTIFICATE----- + +# Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 +# Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 +# Label: "Autoridad de Certificacion Firmaprofesional CIF A62634068" +# Serial: 1977337328857672817 +# MD5 Fingerprint: 4e:6e:9b:54:4c:ca:b7:fa:48:e4:90:b1:15:4b:1c:a3 +# SHA1 Fingerprint: 0b:be:c2:27:22:49:cb:39:aa:db:35:5c:53:e3:8c:ae:78:ff:b6:fe +# SHA256 Fingerprint: 57:de:05:83:ef:d2:b2:6e:03:61:da:99:da:9d:f4:64:8d:ef:7e:e8:44:1c:3b:72:8a:fa:9b:cd:e0:f9:b2:6a +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UE +BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h +cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1 +MDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg +Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9 +thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM +cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG +L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i +NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h +X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b +m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy +Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja +EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T +KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF +6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh +OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1UdDgQWBBRlzeurNR4APn7VdMAc +tHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4wgZswgZgGBFUd +IAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j +b20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABC +AG8AbgBhAG4AbwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAw +ADEANzAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9m +iWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL4QjbEwj4KKE1soCzC1HA01aajTNF +Sa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDbLIpgD7dvlAceHabJ +hfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1ilI45P +Vf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZE +EAEeiGaPcjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV +1aUsIC+nmCjuRfzxuIgALI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2t +CsvMo2ebKHTEm9caPARYpoKdrcd7b/+Alun4jWq9GJAd/0kakFI3ky88Al2CdgtR +5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH9IBk9W6VULgRfhVwOEqw +f9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpfNIbnYrX9 +ivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNK +GbqEZycPvEJdvSRUDewdcAZfpLz6IHxV +-----END CERTIFICATE----- + +# Issuer: CN=vTrus ECC Root CA O=iTrusChina Co.,Ltd. +# Subject: CN=vTrus ECC Root CA O=iTrusChina Co.,Ltd. +# Label: "vTrus ECC Root CA" +# Serial: 630369271402956006249506845124680065938238527194 +# MD5 Fingerprint: de:4b:c1:f5:52:8c:9b:43:e1:3e:8f:55:54:17:8d:85 +# SHA1 Fingerprint: f6:9c:db:b0:fc:f6:02:13:b6:52:32:a6:a3:91:3f:16:70:da:c3:e1 +# SHA256 Fingerprint: 30:fb:ba:2c:32:23:8e:2a:98:54:7a:f9:79:31:e5:50:42:8b:9b:3f:1c:8e:eb:66:33:dc:fa:86:c5:b2:7d:d3 +-----BEGIN CERTIFICATE----- +MIICDzCCAZWgAwIBAgIUbmq8WapTvpg5Z6LSa6Q75m0c1towCgYIKoZIzj0EAwMw +RzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAY +BgNVBAMTEXZUcnVzIEVDQyBSb290IENBMB4XDTE4MDczMTA3MjY0NFoXDTQzMDcz +MTA3MjY0NFowRzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28u +LEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBSb290IENBMHYwEAYHKoZIzj0CAQYF +K4EEACIDYgAEZVBKrox5lkqqHAjDo6LN/llWQXf9JpRCux3NCNtzslt188+cToL0 +v/hhJoVs1oVbcnDS/dtitN9Ti72xRFhiQgnH+n9bEOf+QP3A2MMrMudwpremIFUd +e4BdS49nTPEQo0IwQDAdBgNVHQ4EFgQUmDnNvtiyjPeyq+GtJK97fKHbH88wDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwMDaAAwZQIw +V53dVvHH4+m4SVBrm2nDb+zDfSXkV5UTQJtS0zvzQBm8JsctBp61ezaf9SXUY2sA +AjEA6dPGnlaaKsyh2j/IZivTWJwghfqrkYpwcBE4YGQLYgmRWAD5Tfs0aNoJrSEG +GJTO +-----END CERTIFICATE----- + +# Issuer: CN=vTrus Root CA O=iTrusChina Co.,Ltd. +# Subject: CN=vTrus Root CA O=iTrusChina Co.,Ltd. +# Label: "vTrus Root CA" +# Serial: 387574501246983434957692974888460947164905180485 +# MD5 Fingerprint: b8:c9:37:df:fa:6b:31:84:64:c5:ea:11:6a:1b:75:fc +# SHA1 Fingerprint: 84:1a:69:fb:f5:cd:1a:25:34:13:3d:e3:f8:fc:b8:99:d0:c9:14:b7 +# SHA256 Fingerprint: 8a:71:de:65:59:33:6f:42:6c:26:e5:38:80:d0:0d:88:a1:8d:a4:c6:a9:1f:0d:cb:61:94:e2:06:c5:c9:63:87 +-----BEGIN CERTIFICATE----- +MIIFVjCCAz6gAwIBAgIUQ+NxE9izWRRdt86M/TX9b7wFjUUwDQYJKoZIhvcNAQEL +BQAwQzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4x +FjAUBgNVBAMTDXZUcnVzIFJvb3QgQ0EwHhcNMTgwNzMxMDcyNDA1WhcNNDMwNzMx +MDcyNDA1WjBDMQswCQYDVQQGEwJDTjEcMBoGA1UEChMTaVRydXNDaGluYSBDby4s +THRkLjEWMBQGA1UEAxMNdlRydXMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAL1VfGHTuB0EYgWgrmy3cLRB6ksDXhA/kFocizuwZotsSKYc +IrrVQJLuM7IjWcmOvFjai57QGfIvWcaMY1q6n6MLsLOaXLoRuBLpDLvPbmyAhykU +AyyNJJrIZIO1aqwTLDPxn9wsYTwaP3BVm60AUn/PBLn+NvqcwBauYv6WTEN+VRS+ +GrPSbcKvdmaVayqwlHeFXgQPYh1jdfdr58tbmnDsPmcF8P4HCIDPKNsFxhQnL4Z9 +8Cfe/+Z+M0jnCx5Y0ScrUw5XSmXX+6KAYPxMvDVTAWqXcoKv8R1w6Jz1717CbMdH +flqUhSZNO7rrTOiwCcJlwp2dCZtOtZcFrPUGoPc2BX70kLJrxLT5ZOrpGgrIDajt +J8nU57O5q4IikCc9Kuh8kO+8T/3iCiSn3mUkpF3qwHYw03dQ+A0Em5Q2AXPKBlim +0zvc+gRGE1WKyURHuFE5Gi7oNOJ5y1lKCn+8pu8fA2dqWSslYpPZUxlmPCdiKYZN +pGvu/9ROutW04o5IWgAZCfEF2c6Rsffr6TlP9m8EQ5pV9T4FFL2/s1m02I4zhKOQ +UqqzApVg+QxMaPnu1RcN+HFXtSXkKe5lXa/R7jwXC1pDxaWG6iSe4gUH3DRCEpHW +OXSuTEGC2/KmSNGzm/MzqvOmwMVO9fSddmPmAsYiS8GVP1BkLFTltvA8Kc9XAgMB +AAGjQjBAMB0GA1UdDgQWBBRUYnBj8XWEQ1iO0RYgscasGrz2iTAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAKbqSSaet +8PFww+SX8J+pJdVrnjT+5hpk9jprUrIQeBqfTNqK2uwcN1LgQkv7bHbKJAs5EhWd +nxEt/Hlk3ODg9d3gV8mlsnZwUKT+twpw1aA08XXXTUm6EdGz2OyC/+sOxL9kLX1j +bhd47F18iMjrjld22VkE+rxSH0Ws8HqA7Oxvdq6R2xCOBNyS36D25q5J08FsEhvM +Kar5CKXiNxTKsbhm7xqC5PD48acWabfbqWE8n/Uxy+QARsIvdLGx14HuqCaVvIiv +TDUHKgLKeBRtRytAVunLKmChZwOgzoy8sHJnxDHO2zTlJQNgJXtxmOTAGytfdELS +S8VZCAeHvsXDf+eW2eHcKJfWjwXj9ZtOyh1QRwVTsMo554WgicEFOwE30z9J4nfr +I8iIZjs9OXYhRvHsXyO466JmdXTBQPfYaJqT4i2pLr0cox7IdMakLXogqzu4sEb9 +b91fUlV1YvCXoHzXOP0l382gmxDPi7g4Xl7FtKYCNqEeXxzP4padKar9mK5S4fNB +UvupLnKWnyfjqnN9+BojZns7q2WwMgFLFT49ok8MKzWixtlnEjUwzXYuFrOZnk1P +Ti07NEPhmg4NpGaXutIcSkwsKouLgU9xGqndXHt7CMUADTdA43x7VF8vhV929ven +sBxXVsFy6K2ir40zSbofitzmdHxghm+Hl3s= +-----END CERTIFICATE----- + +# Issuer: CN=ISRG Root X2 O=Internet Security Research Group +# Subject: CN=ISRG Root X2 O=Internet Security Research Group +# Label: "ISRG Root X2" +# Serial: 87493402998870891108772069816698636114 +# MD5 Fingerprint: d3:9e:c4:1e:23:3c:a6:df:cf:a3:7e:6d:e0:14:e6:e5 +# SHA1 Fingerprint: bd:b1:b9:3c:d5:97:8d:45:c6:26:14:55:f8:db:95:c7:5a:d1:53:af +# SHA256 Fingerprint: 69:72:9b:8e:15:a8:6e:fc:17:7a:57:af:b7:17:1d:fc:64:ad:d2:8c:2f:ca:8c:f1:50:7e:34:45:3c:cb:14:70 +-----BEGIN CERTIFICATE----- +MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQsw +CQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gg +R3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00 +MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5ldCBT +ZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgyMHYw +EAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0HttwW ++1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9 +ItgKbppbd9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZI +zj0EAwMDaAAwZQIwe3lORlCEwkSHRhtFcP9Ymd70/aTSVaYgLXTWNLxBo1BfASdW +tL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5U6VR5CmD1/iQMVtCnwr1 +/q4AaOeMSQ+2b1tbFfLn +-----END CERTIFICATE----- + +# Issuer: CN=HiPKI Root CA - G1 O=Chunghwa Telecom Co., Ltd. +# Subject: CN=HiPKI Root CA - G1 O=Chunghwa Telecom Co., Ltd. +# Label: "HiPKI Root CA - G1" +# Serial: 60966262342023497858655262305426234976 +# MD5 Fingerprint: 69:45:df:16:65:4b:e8:68:9a:8f:76:5f:ff:80:9e:d3 +# SHA1 Fingerprint: 6a:92:e4:a8:ee:1b:ec:96:45:37:e3:29:57:49:cd:96:e3:e5:d2:60 +# SHA256 Fingerprint: f0:15:ce:3c:c2:39:bf:ef:06:4b:e9:f1:d2:c4:17:e1:a0:26:4a:0a:94:be:1f:0c:8d:12:18:64:eb:69:49:cc +-----BEGIN CERTIFICATE----- +MIIFajCCA1KgAwIBAgIQLd2szmKXlKFD6LDNdmpeYDANBgkqhkiG9w0BAQsFADBP +MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 +ZC4xGzAZBgNVBAMMEkhpUEtJIFJvb3QgQ0EgLSBHMTAeFw0xOTAyMjIwOTQ2MDRa +Fw0zNzEyMzExNTU5NTlaME8xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3 +YSBUZWxlY29tIENvLiwgTHRkLjEbMBkGA1UEAwwSSGlQS0kgUm9vdCBDQSAtIEcx +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9B5/UnMyDHPkvRN0o9Qw +qNCuS9i233VHZvR85zkEHmpwINJaR3JnVfSl6J3VHiGh8Ge6zCFovkRTv4354twv +Vcg3Px+kwJyz5HdcoEb+d/oaoDjq7Zpy3iu9lFc6uux55199QmQ5eiY29yTw1S+6 +lZgRZq2XNdZ1AYDgr/SEYYwNHl98h5ZeQa/rh+r4XfEuiAU+TCK72h8q3VJGZDnz +Qs7ZngyzsHeXZJzA9KMuH5UHsBffMNsAGJZMoYFL3QRtU6M9/Aes1MU3guvklQgZ +KILSQjqj2FPseYlgSGDIcpJQ3AOPgz+yQlda22rpEZfdhSi8MEyr48KxRURHH+CK +FgeW0iEPU8DtqX7UTuybCeyvQqww1r/REEXgphaypcXTT3OUM3ECoWqj1jOXTyFj +HluP2cFeRXF3D4FdXyGarYPM+l7WjSNfGz1BryB1ZlpK9p/7qxj3ccC2HTHsOyDr +y+K49a6SsvfhhEvyovKTmiKe0xRvNlS9H15ZFblzqMF8b3ti6RZsR1pl8w4Rm0bZ +/W3c1pzAtH2lsN0/Vm+h+fbkEkj9Bn8SV7apI09bA8PgcSojt/ewsTu8mL3WmKgM +a/aOEmem8rJY5AIJEzypuxC00jBF8ez3ABHfZfjcK0NVvxaXxA/VLGGEqnKG/uY6 +fsI/fe78LxQ+5oXdUG+3Se0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQU8ncX+l6o/vY9cdVouslGDDjYr7AwDgYDVR0PAQH/BAQDAgGGMA0GCSqG +SIb3DQEBCwUAA4ICAQBQUfB13HAE4/+qddRxosuej6ip0691x1TPOhwEmSKsxBHi +7zNKpiMdDg1H2DfHb680f0+BazVP6XKlMeJ45/dOlBhbQH3PayFUhuaVevvGyuqc +SE5XCV0vrPSltJczWNWseanMX/mF+lLFjfiRFOs6DRfQUsJ748JzjkZ4Bjgs6Fza +ZsT0pPBWGTMpWmWSBUdGSquEwx4noR8RkpkndZMPvDY7l1ePJlsMu5wP1G4wB9Tc +XzZoZjmDlicmisjEOf6aIW/Vcobpf2Lll07QJNBAsNB1CI69aO4I1258EHBGG3zg +iLKecoaZAeO/n0kZtCW+VmWuF2PlHt/o/0elv+EmBYTksMCv5wiZqAxeJoBF1Pho +L5aPruJKHJwWDBNvOIf2u8g0X5IDUXlwpt/L9ZlNec1OvFefQ05rLisY+GpzjLrF +Ne85akEez3GoorKGB1s6yeHvP2UEgEcyRHCVTjFnanRbEEV16rCf0OY1/k6fi8wr +kkVbbiVghUbN0aqwdmaTd5a+g744tiROJgvM7XpWGuDpWsZkrUx6AEhEL7lAuxM+ +vhV4nYWBSipX3tUZQ9rbyltHhoMLP7YNdnhzeSJesYAfz77RP1YQmCuVh6EfnWQU +YDksswBVLuT1sw5XxJFBAJw/6KXf6vb/yPCtbVKoF6ubYfwSUTXkJf2vqmqGOQ== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 +# Label: "GlobalSign ECC Root CA - R4" +# Serial: 159662223612894884239637590694 +# MD5 Fingerprint: 26:29:f8:6d:e1:88:bf:a2:65:7f:aa:c4:cd:0f:7f:fc +# SHA1 Fingerprint: 6b:a0:b0:98:e1:71:ef:5a:ad:fe:48:15:80:77:10:f4:bd:6f:0b:28 +# SHA256 Fingerprint: b0:85:d7:0b:96:4f:19:1a:73:e4:af:0d:54:ae:7a:0e:07:aa:fd:af:9b:71:dd:08:62:13:8a:b7:32:5a:24:a2 +-----BEGIN CERTIFICATE----- +MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYD +VQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2Jh +bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgw +MTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0g +UjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wWTAT +BgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkWymOx +uYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNV +HQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/ ++wpu+74zyTyjhNUwCgYIKoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147 +bmF0774BxL4YSFlhgjICICadVGNA3jdgUM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R1 O=Google Trust Services LLC +# Subject: CN=GTS Root R1 O=Google Trust Services LLC +# Label: "GTS Root R1" +# Serial: 159662320309726417404178440727 +# MD5 Fingerprint: 05:fe:d0:bf:71:a8:a3:76:63:da:01:e0:d8:52:dc:40 +# SHA1 Fingerprint: e5:8c:1c:c4:91:3b:38:63:4b:e9:10:6e:e3:ad:8e:6b:9d:d9:81:4a +# SHA256 Fingerprint: d9:47:43:2a:bd:e7:b7:fa:90:fc:2e:6b:59:10:1b:12:80:e0:e1:c7:e4:e4:0f:a3:c6:88:7f:ff:57:a7:f4:cf +-----BEGIN CERTIFICATE----- +MIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQsw +CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU +MBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw +MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp +Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaMf/vo +27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7w +Cl7raKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjw +TcLCeoiKu7rPWRnWr4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0Pfybl +qAj+lug8aJRT7oM6iCsVlgmy4HqMLnXWnOunVmSPlk9orj2XwoSPwLxAwAtcvfaH +szVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk9+aCEI3oncKKiPo4Zor8 +Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zqkUspzBmk +MiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92 +wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70p +aDPvOmbsB4om3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrN +VjzRlwW5y0vtOUucxD/SVRNuJLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQID +AQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQADggIBAJ+qQibb +C5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe +QkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuy +h6f88/qBVRRiClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM4 +7HLwEXWdyzRSjeZ2axfG34arJ45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8J +ZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYciNuaCp+0KueIHoI17eko8cdLiA6Ef +MgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5meLMFrUKTX5hgUvYU/ +Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJFfbdT +6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ +0E6yove+7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm +2tIMPNuzjsmhDYAPexZ3FL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bb +bP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3gm3c +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R2 O=Google Trust Services LLC +# Subject: CN=GTS Root R2 O=Google Trust Services LLC +# Label: "GTS Root R2" +# Serial: 159662449406622349769042896298 +# MD5 Fingerprint: 1e:39:c0:53:e6:1e:29:82:0b:ca:52:55:36:5d:57:dc +# SHA1 Fingerprint: 9a:44:49:76:32:db:de:fa:d0:bc:fb:5a:7b:17:bd:9e:56:09:24:94 +# SHA256 Fingerprint: 8d:25:cd:97:22:9d:bf:70:35:6b:da:4e:b3:cc:73:40:31:e2:4c:f0:0f:af:cf:d3:2d:c7:6e:b5:84:1c:7e:a8 +-----BEGIN CERTIFICATE----- +MIIFVzCCAz+gAwIBAgINAgPlrsWNBCUaqxElqjANBgkqhkiG9w0BAQwFADBHMQsw +CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU +MBIGA1UEAxMLR1RTIFJvb3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw +MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp +Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3LvCvpt +nfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY +6Dlo7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAu +MC6C/Pq8tBcKSOWIm8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7k +RXuJVfeKH2JShBKzwkCX44ofR5GmdFrS+LFjKBC4swm4VndAoiaYecb+3yXuPuWg +f9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7MkogwTZq9TwtImoS1mKPV ++3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJGr61K8Yzo +dDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RW +Ir9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKa +G73VululycslaVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCq +gc7dGtxRcw1PcOnlthYhGXmy5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwID +AQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQADggIBAB/Kzt3H +vqGf2SdMC9wXmBFqiN495nFWcrKeGk6c1SuYJF2ba3uwM4IJvd8lRuqYnrYb/oM8 +0mJhwQTtzuDFycgTE1XnqGOtjHsB/ncw4c5omwX4Eu55MaBBRTUoCnGkJE+M3DyC +B19m3H0Q/gxhswWV7uGugQ+o+MePTagjAiZrHYNSVc61LwDKgEDg4XSsYPWHgJ2u +NmSRXbBoGOqKYcl3qJfEycel/FVL8/B/uWU9J2jQzGv6U53hkRrJXRqWbTKH7QMg +yALOWr7Z6v2yTcQvG99fevX4i8buMTolUVVnjWQye+mew4K6Ki3pHrTgSAai/Gev +HyICc/sgCq+dVEuhzf9gR7A/Xe8bVr2XIZYtCtFenTgCR2y59PYjJbigapordwj6 +xLEokCZYCDzifqrXPW+6MYgKBesntaFJ7qBFVHvmJ2WZICGoo7z7GJa7Um8M7YNR +TOlZ4iBgxcJlkoKM8xAfDoqXvneCbT+PHV28SSe9zE8P4c52hgQjxcCMElv924Sg +JPFI/2R80L5cFtHvma3AH/vLrrw4IgYmZNralw4/KBVEqE8AyvCazM90arQ+POuV +7LXTWtiBmelDGDfrs7vRWGJB82bSj6p4lVQgw1oudCvV0b4YacCs1aTPObpRhANl +6WLAYv7YTVWW4tAR+kg0Eeye7QUd5MjWHYbL +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R3 O=Google Trust Services LLC +# Subject: CN=GTS Root R3 O=Google Trust Services LLC +# Label: "GTS Root R3" +# Serial: 159662495401136852707857743206 +# MD5 Fingerprint: 3e:e7:9d:58:02:94:46:51:94:e5:e0:22:4a:8b:e7:73 +# SHA1 Fingerprint: ed:e5:71:80:2b:c8:92:b9:5b:83:3c:d2:32:68:3f:09:cd:a0:1e:46 +# SHA256 Fingerprint: 34:d8:a7:3e:e2:08:d9:bc:db:0d:95:65:20:93:4b:4e:40:e6:94:82:59:6e:8b:6f:73:c8:42:6b:01:0a:6f:48 +-----BEGIN CERTIFICATE----- +MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYD +VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG +A1UEAxMLR1RTIFJvb3QgUjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw +WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz +IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjOPQIBBgUrgQQAIgNi +AAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout736G +jOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL2 +4CejQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBTB8Sa6oC2uhYHP0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7 +VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azTL818+FsuVbu/3ZL3pAzcMeGiAjEA/Jdm +ZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV11RZt+cRLInUue4X +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R4 O=Google Trust Services LLC +# Subject: CN=GTS Root R4 O=Google Trust Services LLC +# Label: "GTS Root R4" +# Serial: 159662532700760215368942768210 +# MD5 Fingerprint: 43:96:83:77:19:4d:76:b3:9d:65:52:e4:1d:22:a5:e8 +# SHA1 Fingerprint: 77:d3:03:67:b5:e0:0c:15:f6:0c:38:61:df:7c:e1:3b:92:46:4d:47 +# SHA256 Fingerprint: 34:9d:fa:40:58:c5:e2:63:12:3b:39:8a:e7:95:57:3c:4e:13:13:c8:3f:e6:8f:93:55:6c:d5:e8:03:1b:3c:7d +-----BEGIN CERTIFICATE----- +MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYD +VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG +A1UEAxMLR1RTIFJvb3QgUjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw +WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz +IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjOPQIBBgUrgQQAIgNi +AATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzuhXyi +QHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvR +HYqjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBSATNbrdP9JNqPV2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D +9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/Cr8deVl5c1RxYIigL9zC2L7F8AjEA8GE8 +p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh4rsUecrNIdSUtUlD +-----END CERTIFICATE----- + +# Issuer: CN=Telia Root CA v2 O=Telia Finland Oyj +# Subject: CN=Telia Root CA v2 O=Telia Finland Oyj +# Label: "Telia Root CA v2" +# Serial: 7288924052977061235122729490515358 +# MD5 Fingerprint: 0e:8f:ac:aa:82:df:85:b1:f4:dc:10:1c:fc:99:d9:48 +# SHA1 Fingerprint: b9:99:cd:d1:73:50:8a:c4:47:05:08:9c:8c:88:fb:be:a0:2b:40:cd +# SHA256 Fingerprint: 24:2b:69:74:2f:cb:1e:5b:2a:bf:98:89:8b:94:57:21:87:54:4e:5b:4d:99:11:78:65:73:62:1f:6a:74:b8:2c +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIPAWdfJ9b+euPkrL4JWwWeMA0GCSqGSIb3DQEBCwUAMEQx +CzAJBgNVBAYTAkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UE +AwwQVGVsaWEgUm9vdCBDQSB2MjAeFw0xODExMjkxMTU1NTRaFw00MzExMjkxMTU1 +NTRaMEQxCzAJBgNVBAYTAkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZ +MBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2MjCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBALLQPwe84nvQa5n44ndp586dpAO8gm2h/oFlH0wnrI4AuhZ76zBq +AMCzdGh+sq/H1WKzej9Qyow2RCRj0jbpDIX2Q3bVTKFgcmfiKDOlyzG4OiIjNLh9 +vVYiQJ3q9HsDrWj8soFPmNB06o3lfc1jw6P23pLCWBnglrvFxKk9pXSW/q/5iaq9 +lRdU2HhE8Qx3FZLgmEKnpNaqIJLNwaCzlrI6hEKNfdWV5Nbb6WLEWLN5xYzTNTOD +n3WhUidhOPFZPY5Q4L15POdslv5e2QJltI5c0BE0312/UqeBAMN/mUWZFdUXyApT +7GPzmX3MaRKGwhfwAZ6/hLzRUssbkmbOpFPlob/E2wnW5olWK8jjfN7j/4nlNW4o +6GwLI1GpJQXrSPjdscr6bAhR77cYbETKJuFzxokGgeWKrLDiKca5JLNrRBH0pUPC +TEPlcDaMtjNXepUugqD0XBCzYYP2AgWGLnwtbNwDRm41k9V6lS/eINhbfpSQBGq6 +WT0EBXWdN6IOLj3rwaRSg/7Qa9RmjtzG6RJOHSpXqhC8fF6CfaamyfItufUXJ63R +DolUK5X6wK0dmBR4M0KGCqlztft0DbcbMBnEWg4cJ7faGND/isgFuvGqHKI3t+ZI +pEYslOqodmJHixBTB0hXbOKSTbauBcvcwUpej6w9GU7C7WB1K9vBykLVAgMBAAGj +YzBhMB8GA1UdIwQYMBaAFHKs5DN5qkWH9v2sHZ7Wxy+G2CQ5MB0GA1UdDgQWBBRy +rOQzeapFh/b9rB2e1scvhtgkOTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAoDtZpwmUPjaE0n4vOaWWl/oRrfxn83EJ +8rKJhGdEr7nv7ZbsnGTbMjBvZ5qsfl+yqwE2foH65IRe0qw24GtixX1LDoJt0nZi +0f6X+J8wfBj5tFJ3gh1229MdqfDBmgC9bXXYfef6xzijnHDoRnkDry5023X4blMM +A8iZGok1GTzTyVR8qPAs5m4HeW9q4ebqkYJpCh3DflminmtGFZhb069GHWLIzoBS +SRE/yQQSwxN8PzuKlts8oB4KtItUsiRnDe+Cy748fdHif64W1lZYudogsYMVoe+K +TTJvQS8TUoKU1xrBeKJR3Stwbbca+few4GeXVtt8YVMJAygCQMez2P2ccGrGKMOF +6eLtGpOg3kuYooQ+BXcBlj37tCAPnHICehIv1aO6UXivKitEZU61/Qrowc15h2Er +3oBXRb9n8ZuRXqWk7FlIEA04x7D6w0RtBPV4UBySllva9bguulvP5fBqnUsvWHMt +Ty3EHD70sz+rFQ47GUGKpMFXEmZxTPpT41frYpUJnlTd0cI8Vzy9OK2YZLe4A5pT +VmBds9hCG1xLEooc6+t9xnppxyd/pPiL8uSUZodL6ZQHCRJ5irLrdATczvREWeAW +ysUsWNc8e89ihmpQfTU2Zqf7N+cox9jQraVplI/owd8k+BsHMYeB2F326CjYSlKA +rBPuUBQemMc= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST BR Root CA 1 2020 O=D-Trust GmbH +# Subject: CN=D-TRUST BR Root CA 1 2020 O=D-Trust GmbH +# Label: "D-TRUST BR Root CA 1 2020" +# Serial: 165870826978392376648679885835942448534 +# MD5 Fingerprint: b5:aa:4b:d5:ed:f7:e3:55:2e:8f:72:0a:f3:75:b8:ed +# SHA1 Fingerprint: 1f:5b:98:f0:e3:b5:f7:74:3c:ed:e6:b0:36:7d:32:cd:f4:09:41:67 +# SHA256 Fingerprint: e5:9a:aa:81:60:09:c2:2b:ff:5b:25:ba:d3:7d:f3:06:f0:49:79:7c:1f:81:d8:5a:b0:89:e6:57:bd:8f:00:44 +-----BEGIN CERTIFICATE----- +MIIC2zCCAmCgAwIBAgIQfMmPK4TX3+oPyWWa00tNljAKBggqhkjOPQQDAzBIMQsw +CQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRS +VVNUIEJSIFJvb3QgQ0EgMSAyMDIwMB4XDTIwMDIxMTA5NDUwMFoXDTM1MDIxMTA5 +NDQ1OVowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEiMCAG +A1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDEgMjAyMDB2MBAGByqGSM49AgEGBSuB +BAAiA2IABMbLxyjR+4T1mu9CFCDhQ2tuda38KwOE1HaTJddZO0Flax7mNCq7dPYS +zuht56vkPE4/RAiLzRZxy7+SmfSk1zxQVFKQhYN4lGdnoxwJGT11NIXe7WB9xwy0 +QVK5buXuQqOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHOREKv/ +VbNafAkl1bK6CKBrqx9tMA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6g +PKA6hjhodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2JyX3Jvb3Rf +Y2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5l +dC9DTj1ELVRSVVNUJTIwQlIlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxPPUQtVHJ1 +c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjO +PQQDAwNpADBmAjEAlJAtE/rhY/hhY+ithXhUkZy4kzg+GkHaQBZTQgjKL47xPoFW +wKrY7RjEsK70PvomAjEA8yjixtsrmfu3Ubgko6SUeho/5jbiA1czijDLgsfWFBHV +dWNbFJWcHwHP2NVypw87 +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST EV Root CA 1 2020 O=D-Trust GmbH +# Subject: CN=D-TRUST EV Root CA 1 2020 O=D-Trust GmbH +# Label: "D-TRUST EV Root CA 1 2020" +# Serial: 126288379621884218666039612629459926992 +# MD5 Fingerprint: 8c:2d:9d:70:9f:48:99:11:06:11:fb:e9:cb:30:c0:6e +# SHA1 Fingerprint: 61:db:8c:21:59:69:03:90:d8:7c:9c:12:86:54:cf:9d:3d:f4:dd:07 +# SHA256 Fingerprint: 08:17:0d:1a:a3:64:53:90:1a:2f:95:92:45:e3:47:db:0c:8d:37:ab:aa:bc:56:b8:1a:a1:00:dc:95:89:70:db +-----BEGIN CERTIFICATE----- +MIIC2zCCAmCgAwIBAgIQXwJB13qHfEwDo6yWjfv/0DAKBggqhkjOPQQDAzBIMQsw +CQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRS +VVNUIEVWIFJvb3QgQ0EgMSAyMDIwMB4XDTIwMDIxMTEwMDAwMFoXDTM1MDIxMTA5 +NTk1OVowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEiMCAG +A1UEAxMZRC1UUlVTVCBFViBSb290IENBIDEgMjAyMDB2MBAGByqGSM49AgEGBSuB +BAAiA2IABPEL3YZDIBnfl4XoIkqbz52Yv7QFJsnL46bSj8WeeHsxiamJrSc8ZRCC +/N/DnU7wMyPE0jL1HLDfMxddxfCxivnvubcUyilKwg+pf3VlSSowZ/Rk99Yad9rD +wpdhQntJraOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFH8QARY3 +OqQo5FD4pPfsazK2/umLMA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6g +PKA6hjhodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2V2X3Jvb3Rf +Y2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5l +dC9DTj1ELVRSVVNUJTIwRVYlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxPPUQtVHJ1 +c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjO +PQQDAwNpADBmAjEAyjzGKnXCXnViOTYAYFqLwZOZzNnbQTs7h5kXO9XMT8oi96CA +y/m0sRtW9XLS/BnRAjEAkfcwkz8QRitxpNA7RJvAKQIFskF3UfN5Wp6OFKBOQtJb +gfM0agPnIjhQW+0ZT0MW +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert TLS ECC P384 Root G5 O=DigiCert, Inc. +# Subject: CN=DigiCert TLS ECC P384 Root G5 O=DigiCert, Inc. +# Label: "DigiCert TLS ECC P384 Root G5" +# Serial: 13129116028163249804115411775095713523 +# MD5 Fingerprint: d3:71:04:6a:43:1c:db:a6:59:e1:a8:a3:aa:c5:71:ed +# SHA1 Fingerprint: 17:f3:de:5e:9f:0f:19:e9:8e:f6:1f:32:26:6e:20:c4:07:ae:30:ee +# SHA256 Fingerprint: 01:8e:13:f0:77:25:32:cf:80:9b:d1:b1:72:81:86:72:83:fc:48:c6:e1:3b:e9:c6:98:12:85:4a:49:0c:1b:05 +-----BEGIN CERTIFICATE----- +MIICGTCCAZ+gAwIBAgIQCeCTZaz32ci5PhwLBCou8zAKBggqhkjOPQQDAzBOMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJjAkBgNVBAMTHURp +Z2lDZXJ0IFRMUyBFQ0MgUDM4NCBSb290IEc1MB4XDTIxMDExNTAwMDAwMFoXDTQ2 +MDExNDIzNTk1OVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJ +bmMuMSYwJAYDVQQDEx1EaWdpQ2VydCBUTFMgRUNDIFAzODQgUm9vdCBHNTB2MBAG +ByqGSM49AgEGBSuBBAAiA2IABMFEoc8Rl1Ca3iOCNQfN0MsYndLxf3c1TzvdlHJS +7cI7+Oz6e2tYIOyZrsn8aLN1udsJ7MgT9U7GCh1mMEy7H0cKPGEQQil8pQgO4CLp +0zVozptjn4S1mU1YoI71VOeVyaNCMEAwHQYDVR0OBBYEFMFRRVBZqz7nLFr6ICIS +B4CIfBFqMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49 +BAMDA2gAMGUCMQCJao1H5+z8blUD2WdsJk6Dxv3J+ysTvLd6jLRl0mlpYxNjOyZQ +LgGheQaRnUi/wr4CMEfDFXuxoJGZSZOoPHzoRgaLLPIxAJSdYsiJvRmEFOml+wG4 +DXZDjC5Ty3zfDBeWUA== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert TLS RSA4096 Root G5 O=DigiCert, Inc. +# Subject: CN=DigiCert TLS RSA4096 Root G5 O=DigiCert, Inc. +# Label: "DigiCert TLS RSA4096 Root G5" +# Serial: 11930366277458970227240571539258396554 +# MD5 Fingerprint: ac:fe:f7:34:96:a9:f2:b3:b4:12:4b:e4:27:41:6f:e1 +# SHA1 Fingerprint: a7:88:49:dc:5d:7c:75:8c:8c:de:39:98:56:b3:aa:d0:b2:a5:71:35 +# SHA256 Fingerprint: 37:1a:00:dc:05:33:b3:72:1a:7e:eb:40:e8:41:9e:70:79:9d:2b:0a:0f:2c:1d:80:69:31:65:f7:ce:c4:ad:75 +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCPm0eKj6ftpqMzeJ3nzPijANBgkqhkiG9w0BAQwFADBN +MQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMT +HERpZ2lDZXJ0IFRMUyBSU0E0MDk2IFJvb3QgRzUwHhcNMjEwMTE1MDAwMDAwWhcN +NDYwMTE0MjM1OTU5WjBNMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQs +IEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0MDk2IFJvb3QgRzUwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz0PTJeRGd/fxmgefM1eS87IE+ +ajWOLrfn3q/5B03PMJ3qCQuZvWxX2hhKuHisOjmopkisLnLlvevxGs3npAOpPxG0 +2C+JFvuUAT27L/gTBaF4HI4o4EXgg/RZG5Wzrn4DReW+wkL+7vI8toUTmDKdFqgp +wgscONyfMXdcvyej/Cestyu9dJsXLfKB2l2w4SMXPohKEiPQ6s+d3gMXsUJKoBZM +pG2T6T867jp8nVid9E6P/DsjyG244gXazOvswzH016cpVIDPRFtMbzCe88zdH5RD +nU1/cHAN1DrRN/BsnZvAFJNY781BOHW8EwOVfH/jXOnVDdXifBBiqmvwPXbzP6Po +sMH976pXTayGpxi0KcEsDr9kvimM2AItzVwv8n/vFfQMFawKsPHTDU9qTXeXAaDx +Zre3zu/O7Oyldcqs4+Fj97ihBMi8ez9dLRYiVu1ISf6nL3kwJZu6ay0/nTvEF+cd +Lvvyz6b84xQslpghjLSR6Rlgg/IwKwZzUNWYOwbpx4oMYIwo+FKbbuH2TbsGJJvX +KyY//SovcfXWJL5/MZ4PbeiPT02jP/816t9JXkGPhvnxd3lLG7SjXi/7RgLQZhNe +XoVPzthwiHvOAbWWl9fNff2C+MIkwcoBOU+NosEUQB+cZtUMCUbW8tDRSHZWOkPL +tgoRObqME2wGtZ7P6wIDAQABo0IwQDAdBgNVHQ4EFgQUUTMc7TZArxfTJc1paPKv +TiM+s0EwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN +AQEMBQADggIBAGCmr1tfV9qJ20tQqcQjNSH/0GEwhJG3PxDPJY7Jv0Y02cEhJhxw +GXIeo8mH/qlDZJY6yFMECrZBu8RHANmfGBg7sg7zNOok992vIGCukihfNudd5N7H +PNtQOa27PShNlnx2xlv0wdsUpasZYgcYQF+Xkdycx6u1UQ3maVNVzDl92sURVXLF +O4uJ+DQtpBflF+aZfTCIITfNMBc9uPK8qHWgQ9w+iUuQrm0D4ByjoJYJu32jtyoQ +REtGBzRj7TG5BO6jm5qu5jF49OokYTurWGT/u4cnYiWB39yhL/btp/96j1EuMPik +AdKFOV8BmZZvWltwGUb+hmA+rYAQCd05JS9Yf7vSdPD3Rh9GOUrYU9DzLjtxpdRv +/PNn5AeP3SYZ4Y1b+qOTEZvpyDrDVWiakuFSdjjo4bq9+0/V77PnSIMx8IIh47a+ +p6tv75/fTM8BuGJqIz3nCU2AG3swpMPdB380vqQmsvZB6Akd4yCYqjdP//fx4ilw +MUc/dNAUFvohigLVigmUdy7yWSiLfFCSCmZ4OIN1xLVaqBHG5cGdZlXPU8Sv13WF +qUITVuwhd4GTWgzqltlJyqEI8pc7bZsEGCREjnwB8twl2F6GmrE52/WRMmrRpnCK +ovfepEWFJqgejF0pW8hL2JpqA15w8oVPbEtoL8pU9ozaMv7Da4M/OMZ+ +-----END CERTIFICATE----- + +# Issuer: CN=Certainly Root R1 O=Certainly +# Subject: CN=Certainly Root R1 O=Certainly +# Label: "Certainly Root R1" +# Serial: 188833316161142517227353805653483829216 +# MD5 Fingerprint: 07:70:d4:3e:82:87:a0:fa:33:36:13:f4:fa:33:e7:12 +# SHA1 Fingerprint: a0:50:ee:0f:28:71:f4:27:b2:12:6d:6f:50:96:25:ba:cc:86:42:af +# SHA256 Fingerprint: 77:b8:2c:d8:64:4c:43:05:f7:ac:c5:cb:15:6b:45:67:50:04:03:3d:51:c6:0c:62:02:a8:e0:c3:34:67:d3:a0 +-----BEGIN CERTIFICATE----- +MIIFRzCCAy+gAwIBAgIRAI4P+UuQcWhlM1T01EQ5t+AwDQYJKoZIhvcNAQELBQAw +PTELMAkGA1UEBhMCVVMxEjAQBgNVBAoTCUNlcnRhaW5seTEaMBgGA1UEAxMRQ2Vy +dGFpbmx5IFJvb3QgUjEwHhcNMjEwNDAxMDAwMDAwWhcNNDYwNDAxMDAwMDAwWjA9 +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0 +YWlubHkgUm9vdCBSMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANA2 +1B/q3avk0bbm+yLA3RMNansiExyXPGhjZjKcA7WNpIGD2ngwEc/csiu+kr+O5MQT +vqRoTNoCaBZ0vrLdBORrKt03H2As2/X3oXyVtwxwhi7xOu9S98zTm/mLvg7fMbed +aFySpvXl8wo0tf97ouSHocavFwDvA5HtqRxOcT3Si2yJ9HiG5mpJoM610rCrm/b0 +1C7jcvk2xusVtyWMOvwlDbMicyF0yEqWYZL1LwsYpfSt4u5BvQF5+paMjRcCMLT5 +r3gajLQ2EBAHBXDQ9DGQilHFhiZ5shGIXsXwClTNSaa/ApzSRKft43jvRl5tcdF5 +cBxGX1HpyTfcX35pe0HfNEXgO4T0oYoKNp43zGJS4YkNKPl6I7ENPT2a/Z2B7yyQ +wHtETrtJ4A5KVpK8y7XdeReJkd5hiXSSqOMyhb5OhaRLWcsrxXiOcVTQAjeZjOVJ +6uBUcqQRBi8LjMFbvrWhsFNunLhgkR9Za/kt9JQKl7XsxXYDVBtlUrpMklZRNaBA +2CnbrlJ2Oy0wQJuK0EJWtLeIAaSHO1OWzaMWj/Nmqhexx2DgwUMFDO6bW2BvBlyH +Wyf5QBGenDPBt+U1VwV/J84XIIwc/PH72jEpSe31C4SnT8H2TsIonPru4K8H+zMR +eiFPCyEQtkA6qyI6BJyLm4SGcprSp6XEtHWRqSsjAgMBAAGjQjBAMA4GA1UdDwEB +/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTgqj8ljZ9EXME66C6u +d0yEPmcM9DANBgkqhkiG9w0BAQsFAAOCAgEAuVevuBLaV4OPaAszHQNTVfSVcOQr +PbA56/qJYv331hgELyE03fFo8NWWWt7CgKPBjcZq91l3rhVkz1t5BXdm6ozTaw3d +8VkswTOlMIAVRQdFGjEitpIAq5lNOo93r6kiyi9jyhXWx8bwPWz8HA2YEGGeEaIi +1wrykXprOQ4vMMM2SZ/g6Q8CRFA3lFV96p/2O7qUpUzpvD5RtOjKkjZUbVwlKNrd +rRT90+7iIgXr0PK3aBLXWopBGsaSpVo7Y0VPv+E6dyIvXL9G+VoDhRNCX8reU9di +taY1BMJH/5n9hN9czulegChB8n3nHpDYT3Y+gjwN/KUD+nsa2UUeYNrEjvn8K8l7 +lcUq/6qJ34IxD3L/DCfXCh5WAFAeDJDBlrXYFIW7pw0WwfgHJBu6haEaBQmAupVj +yTrsJZ9/nbqkRxWbRHDxakvWOF5D8xh+UG7pWijmZeZ3Gzr9Hb4DJqPb1OG7fpYn +Kx3upPvaJVQTA945xsMfTZDsjxtK0hzthZU4UHlG1sGQUDGpXJpuHfUzVounmdLy +yCwzk5Iwx06MZTMQZBf9JBeW0Y3COmor6xOLRPIh80oat3df1+2IpHLlOR+Vnb5n +wXARPbv0+Em34yaXOp/SX3z7wJl8OSngex2/DaeP0ik0biQVy96QXr8axGbqwua6 +OV+KmalBWQewLK8= +-----END CERTIFICATE----- + +# Issuer: CN=Certainly Root E1 O=Certainly +# Subject: CN=Certainly Root E1 O=Certainly +# Label: "Certainly Root E1" +# Serial: 8168531406727139161245376702891150584 +# MD5 Fingerprint: 0a:9e:ca:cd:3e:52:50:c6:36:f3:4b:a3:ed:a7:53:e9 +# SHA1 Fingerprint: f9:e1:6d:dc:01:89:cf:d5:82:45:63:3e:c5:37:7d:c2:eb:93:6f:2b +# SHA256 Fingerprint: b4:58:5f:22:e4:ac:75:6a:4e:86:12:a1:36:1c:5d:9d:03:1a:93:fd:84:fe:bb:77:8f:a3:06:8b:0f:c4:2d:c2 +-----BEGIN CERTIFICATE----- +MIIB9zCCAX2gAwIBAgIQBiUzsUcDMydc+Y2aub/M+DAKBggqhkjOPQQDAzA9MQsw +CQYDVQQGEwJVUzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0YWlu +bHkgUm9vdCBFMTAeFw0yMTA0MDEwMDAwMDBaFw00NjA0MDEwMDAwMDBaMD0xCzAJ +BgNVBAYTAlVTMRIwEAYDVQQKEwlDZXJ0YWlubHkxGjAYBgNVBAMTEUNlcnRhaW5s +eSBSb290IEUxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE3m/4fxzf7flHh4axpMCK ++IKXgOqPyEpeKn2IaKcBYhSRJHpcnqMXfYqGITQYUBsQ3tA3SybHGWCA6TS9YBk2 +QNYphwk8kXr2vBMj3VlOBF7PyAIcGFPBMdjaIOlEjeR2o0IwQDAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ygYy2R17ikq6+2uI1g4 +hevIIgcwCgYIKoZIzj0EAwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozm +ut6Dacpps6kFtZaSF4fC0urQe87YQVt8rgIwRt7qy12a7DLCZRawTDBcMPPaTnOG +BtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR +-----END CERTIFICATE----- + +# Issuer: CN=Security Communication ECC RootCA1 O=SECOM Trust Systems CO.,LTD. +# Subject: CN=Security Communication ECC RootCA1 O=SECOM Trust Systems CO.,LTD. +# Label: "Security Communication ECC RootCA1" +# Serial: 15446673492073852651 +# MD5 Fingerprint: 7e:43:b0:92:68:ec:05:43:4c:98:ab:5d:35:2e:7e:86 +# SHA1 Fingerprint: b8:0e:26:a9:bf:d2:b2:3b:c0:ef:46:c9:ba:c7:bb:f6:1d:0d:41:41 +# SHA256 Fingerprint: e7:4f:bd:a5:5b:d5:64:c4:73:a3:6b:44:1a:a7:99:c8:a6:8e:07:74:40:e8:28:8b:9f:a1:e5:0e:4b:ba:ca:11 +-----BEGIN CERTIFICATE----- +MIICODCCAb6gAwIBAgIJANZdm7N4gS7rMAoGCCqGSM49BAMDMGExCzAJBgNVBAYT +AkpQMSUwIwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMSswKQYD +VQQDEyJTZWN1cml0eSBDb21tdW5pY2F0aW9uIEVDQyBSb290Q0ExMB4XDTE2MDYx +NjA1MTUyOFoXDTM4MDExODA1MTUyOFowYTELMAkGA1UEBhMCSlAxJTAjBgNVBAoT +HFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKzApBgNVBAMTIlNlY3VyaXR5 +IENvbW11bmljYXRpb24gRUNDIFJvb3RDQTEwdjAQBgcqhkjOPQIBBgUrgQQAIgNi +AASkpW9gAwPDvTH00xecK4R1rOX9PVdu12O/5gSJko6BnOPpR27KkBLIE+Cnnfdl +dB9sELLo5OnvbYUymUSxXv3MdhDYW72ixvnWQuRXdtyQwjWpS4g8EkdtXP9JTxpK +ULGjQjBAMB0GA1UdDgQWBBSGHOf+LaVKiwj+KBH6vqNm+GBZLzAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjAVXUI9/Lbu +9zuxNuie9sRGKEkz0FhDKmMpzE2xtHqiuQ04pV1IKv3LsnNdo4gIxwwCMQDAqy0O +be0YottT6SXbVQjgUMzfRGEWgqtJsLKB7HOHeLRMsmIbEvoWTSVLY70eN9k= +-----END CERTIFICATE----- + +# Issuer: CN=BJCA Global Root CA1 O=BEIJING CERTIFICATE AUTHORITY +# Subject: CN=BJCA Global Root CA1 O=BEIJING CERTIFICATE AUTHORITY +# Label: "BJCA Global Root CA1" +# Serial: 113562791157148395269083148143378328608 +# MD5 Fingerprint: 42:32:99:76:43:33:36:24:35:07:82:9b:28:f9:d0:90 +# SHA1 Fingerprint: d5:ec:8d:7b:4c:ba:79:f4:e7:e8:cb:9d:6b:ae:77:83:10:03:21:6a +# SHA256 Fingerprint: f3:89:6f:88:fe:7c:0a:88:27:66:a7:fa:6a:d2:74:9f:b5:7a:7f:3e:98:fb:76:9c:1f:a7:b0:9c:2c:44:d5:ae +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIQVW9l47TZkGobCdFsPsBsIDANBgkqhkiG9w0BAQsFADBU +MQswCQYDVQQGEwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRI +T1JJVFkxHTAbBgNVBAMMFEJKQ0EgR2xvYmFsIFJvb3QgQ0ExMB4XDTE5MTIxOTAz +MTYxN1oXDTQ0MTIxMjAzMTYxN1owVDELMAkGA1UEBhMCQ04xJjAkBgNVBAoMHUJF +SUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRCSkNBIEdsb2Jh +bCBSb290IENBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPFmCL3Z +xRVhy4QEQaVpN3cdwbB7+sN3SJATcmTRuHyQNZ0YeYjjlwE8R4HyDqKYDZ4/N+AZ +spDyRhySsTphzvq3Rp4Dhtczbu33RYx2N95ulpH3134rhxfVizXuhJFyV9xgw8O5 +58dnJCNPYwpj9mZ9S1WnP3hkSWkSl+BMDdMJoDIwOvqfwPKcxRIqLhy1BDPapDgR +at7GGPZHOiJBhyL8xIkoVNiMpTAK+BcWyqw3/XmnkRd4OJmtWO2y3syJfQOcs4ll +5+M7sSKGjwZteAf9kRJ/sGsciQ35uMt0WwfCyPQ10WRjeulumijWML3mG90Vr4Tq +nMfK9Q7q8l0ph49pczm+LiRvRSGsxdRpJQaDrXpIhRMsDQa4bHlW/KNnMoH1V6XK +V0Jp6VwkYe/iMBhORJhVb3rCk9gZtt58R4oRTklH2yiUAguUSiz5EtBP6DF+bHq/ +pj+bOT0CFqMYs2esWz8sgytnOYFcuX6U1WTdno9uruh8W7TXakdI136z1C2OVnZO +z2nxbkRs1CTqjSShGL+9V/6pmTW12xB3uD1IutbB5/EjPtffhZ0nPNRAvQoMvfXn +jSXWgXSHRtQpdaJCbPdzied9v3pKH9MiyRVVz99vfFXQpIsHETdfg6YmV6YBW37+ +WGgHqel62bno/1Afq8K0wM7o6v0PvY1NuLxxAgMBAAGjQjBAMB0GA1UdDgQWBBTF +7+3M2I0hxkjk49cULqcWk+WYATAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE +AwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAUoKsITQfI/Ki2Pm4rzc2IInRNwPWaZ+4 +YRC6ojGYWUfo0Q0lHhVBDOAqVdVXUsv45Mdpox1NcQJeXyFFYEhcCY5JEMEE3Kli +awLwQ8hOnThJdMkycFRtwUf8jrQ2ntScvd0g1lPJGKm1Vrl2i5VnZu69mP6u775u ++2D2/VnGKhs/I0qUJDAnyIm860Qkmss9vk/Ves6OF8tiwdneHg56/0OGNFK8YT88 +X7vZdrRTvJez/opMEi4r89fO4aL/3Xtw+zuhTaRjAv04l5U/BXCga99igUOLtFkN +SoxUnMW7gZ/NfaXvCyUeOiDbHPwfmGcCCtRzRBPbUYQaVQNW4AB+dAb/OMRyHdOo +P2gxXdMJxy6MW2Pg6Nwe0uxhHvLe5e/2mXZgLR6UcnHGCyoyx5JO1UbXHfmpGQrI ++pXObSOYqgs4rZpWDW+N8TEAiMEXnM0ZNjX+VVOg4DwzX5Ze4jLp3zO7Bkqp2IRz +znfSxqxx4VyjHQy7Ct9f4qNx2No3WqB4K/TUfet27fJhcKVlmtOJNBir+3I+17Q9 +eVzYH6Eze9mCUAyTF6ps3MKCuwJXNq+YJyo5UOGwifUll35HaBC07HPKs5fRJNz2 +YqAo07WjuGS3iGJCz51TzZm+ZGiPTx4SSPfSKcOYKMryMguTjClPPGAyzQWWYezy +r/6zcCwupvI= +-----END CERTIFICATE----- + +# Issuer: CN=BJCA Global Root CA2 O=BEIJING CERTIFICATE AUTHORITY +# Subject: CN=BJCA Global Root CA2 O=BEIJING CERTIFICATE AUTHORITY +# Label: "BJCA Global Root CA2" +# Serial: 58605626836079930195615843123109055211 +# MD5 Fingerprint: 5e:0a:f6:47:5f:a6:14:e8:11:01:95:3f:4d:01:eb:3c +# SHA1 Fingerprint: f4:27:86:eb:6e:b8:6d:88:31:67:02:fb:ba:66:a4:53:00:aa:7a:a6 +# SHA256 Fingerprint: 57:4d:f6:93:1e:27:80:39:66:7b:72:0a:fd:c1:60:0f:c2:7e:b6:6d:d3:09:29:79:fb:73:85:64:87:21:28:82 +-----BEGIN CERTIFICATE----- +MIICJTCCAaugAwIBAgIQLBcIfWQqwP6FGFkGz7RK6zAKBggqhkjOPQQDAzBUMQsw +CQYDVQQGEwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJ +VFkxHTAbBgNVBAMMFEJKQ0EgR2xvYmFsIFJvb3QgQ0EyMB4XDTE5MTIxOTAzMTgy +MVoXDTQ0MTIxMjAzMTgyMVowVDELMAkGA1UEBhMCQ04xJjAkBgNVBAoMHUJFSUpJ +TkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRCSkNBIEdsb2JhbCBS +b290IENBMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABJ3LgJGNU2e1uVCxA/jlSR9B +IgmwUVJY1is0j8USRhTFiy8shP8sbqjV8QnjAyEUxEM9fMEsxEtqSs3ph+B99iK+ ++kpRuDCK/eHeGBIK9ke35xe/J4rUQUyWPGCWwf0VHKNCMEAwHQYDVR0OBBYEFNJK +sVF/BvDRgh9Obl+rg/xI1LCRMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMAoGCCqGSM49BAMDA2gAMGUCMBq8W9f+qdJUDkpd0m2xQNz0Q9XSSpkZElaA +94M04TVOSG0ED1cxMDAtsaqdAzjbBgIxAMvMh1PLet8gUXOQwKhbYdDFUDn9hf7B +43j4ptZLvZuHjw/l1lOWqzzIQNph91Oj9w== +-----END CERTIFICATE----- + +# Issuer: CN=Sectigo Public Server Authentication Root E46 O=Sectigo Limited +# Subject: CN=Sectigo Public Server Authentication Root E46 O=Sectigo Limited +# Label: "Sectigo Public Server Authentication Root E46" +# Serial: 88989738453351742415770396670917916916 +# MD5 Fingerprint: 28:23:f8:b2:98:5c:37:16:3b:3e:46:13:4e:b0:b3:01 +# SHA1 Fingerprint: ec:8a:39:6c:40:f0:2e:bc:42:75:d4:9f:ab:1c:1a:5b:67:be:d2:9a +# SHA256 Fingerprint: c9:0f:26:f0:fb:1b:40:18:b2:22:27:51:9b:5c:a2:b5:3e:2c:a5:b3:be:5c:f1:8e:fe:1b:ef:47:38:0c:53:83 +-----BEGIN CERTIFICATE----- +MIICOjCCAcGgAwIBAgIQQvLM2htpN0RfFf51KBC49DAKBggqhkjOPQQDAzBfMQsw +CQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1T +ZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwHhcN +MjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5WjBfMQswCQYDVQQGEwJHQjEYMBYG +A1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1YmxpYyBT +ZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAR2+pmpbiDt+dd34wc7qNs9Xzjoq1WmVk/WSOrsfy2qw7LFeeyZYX8QeccC +WvkEN/U0NSt3zn8gj1KjAIns1aeibVvjS5KToID1AZTc8GgHHs3u/iVStSBDHBv+ +6xnOQ6OjQjBAMB0GA1UdDgQWBBTRItpMWfFLXyY4qp3W7usNw/upYTAOBgNVHQ8B +Af8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNnADBkAjAn7qRa +qCG76UeXlImldCBteU/IvZNeWBj7LRoAasm4PdCkT0RHlAFWovgzJQxC36oCMB3q +4S6ILuH5px0CMk7yn2xVdOOurvulGu7t0vzCAxHrRVxgED1cf5kDW21USAGKcw== +-----END CERTIFICATE----- + +# Issuer: CN=Sectigo Public Server Authentication Root R46 O=Sectigo Limited +# Subject: CN=Sectigo Public Server Authentication Root R46 O=Sectigo Limited +# Label: "Sectigo Public Server Authentication Root R46" +# Serial: 156256931880233212765902055439220583700 +# MD5 Fingerprint: 32:10:09:52:00:d5:7e:6c:43:df:15:c0:b1:16:93:e5 +# SHA1 Fingerprint: ad:98:f9:f3:e4:7d:75:3b:65:d4:82:b3:a4:52:17:bb:6e:f5:e4:38 +# SHA256 Fingerprint: 7b:b6:47:a6:2a:ee:ac:88:bf:25:7a:a5:22:d0:1f:fe:a3:95:e0:ab:45:c7:3f:93:f6:56:54:ec:38:f2:5a:06 +-----BEGIN CERTIFICATE----- +MIIFijCCA3KgAwIBAgIQdY39i658BwD6qSWn4cetFDANBgkqhkiG9w0BAQwFADBf +MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQD +Ey1TZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYw +HhcNMjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5WjBfMQswCQYDVQQGEwJHQjEY +MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1Ymxp +YyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCTvtU2UnXYASOgHEdCSe5jtrch/cSV1UgrJnwUUxDa +ef0rty2k1Cz66jLdScK5vQ9IPXtamFSvnl0xdE8H/FAh3aTPaE8bEmNtJZlMKpnz +SDBh+oF8HqcIStw+KxwfGExxqjWMrfhu6DtK2eWUAtaJhBOqbchPM8xQljeSM9xf +iOefVNlI8JhD1mb9nxc4Q8UBUQvX4yMPFF1bFOdLvt30yNoDN9HWOaEhUTCDsG3X +ME6WW5HwcCSrv0WBZEMNvSE6Lzzpng3LILVCJ8zab5vuZDCQOc2TZYEhMbUjUDM3 +IuM47fgxMMxF/mL50V0yeUKH32rMVhlATc6qu/m1dkmU8Sf4kaWD5QazYw6A3OAS +VYCmO2a0OYctyPDQ0RTp5A1NDvZdV3LFOxxHVp3i1fuBYYzMTYCQNFu31xR13NgE +SJ/AwSiItOkcyqex8Va3e0lMWeUgFaiEAin6OJRpmkkGj80feRQXEgyDet4fsZfu ++Zd4KKTIRJLpfSYFplhym3kT2BFfrsU4YjRosoYwjviQYZ4ybPUHNs2iTG7sijbt +8uaZFURww3y8nDnAtOFr94MlI1fZEoDlSfB1D++N6xybVCi0ITz8fAr/73trdf+L +HaAZBav6+CuBQug4urv7qv094PPK306Xlynt8xhW6aWWrL3DkJiy4Pmi1KZHQ3xt +zwIDAQABo0IwQDAdBgNVHQ4EFgQUVnNYZJX5khqwEioEYnmhQBWIIUkwDgYDVR0P +AQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAC9c +mTz8Bl6MlC5w6tIyMY208FHVvArzZJ8HXtXBc2hkeqK5Duj5XYUtqDdFqij0lgVQ +YKlJfp/imTYpE0RHap1VIDzYm/EDMrraQKFz6oOht0SmDpkBm+S8f74TlH7Kph52 +gDY9hAaLMyZlbcp+nv4fjFg4exqDsQ+8FxG75gbMY/qB8oFM2gsQa6H61SilzwZA +Fv97fRheORKkU55+MkIQpiGRqRxOF3yEvJ+M0ejf5lG5Nkc/kLnHvALcWxxPDkjB +JYOcCj+esQMzEhonrPcibCTRAUH4WAP+JWgiH5paPHxsnnVI84HxZmduTILA7rpX +DhjvLpr3Etiga+kFpaHpaPi8TD8SHkXoUsCjvxInebnMMTzD9joiFgOgyY9mpFui +TdaBJQbpdqQACj7LzTWb4OE4y2BThihCQRxEV+ioratF4yUQvNs+ZUH7G6aXD+u5 +dHn5HrwdVw1Hr8Mvn4dGp+smWg9WY7ViYG4A++MnESLn/pmPNPW56MORcr3Ywx65 +LvKRRFHQV80MNNVIIb/bE/FmJUNS0nAiNs2fxBx1IK1jcmMGDw4nztJqDby1ORrp +0XZ60Vzk50lJLVU3aPAaOpg+VBeHVOmmJ1CJeyAvP/+/oYtKR5j/K3tJPsMpRmAY +QqszKbrAKbkTidOIijlBO8n9pu0f9GBj39ItVQGL +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com TLS RSA Root CA 2022 O=SSL Corporation +# Subject: CN=SSL.com TLS RSA Root CA 2022 O=SSL Corporation +# Label: "SSL.com TLS RSA Root CA 2022" +# Serial: 148535279242832292258835760425842727825 +# MD5 Fingerprint: d8:4e:c6:59:30:d8:fe:a0:d6:7a:5a:2c:2c:69:78:da +# SHA1 Fingerprint: ec:2c:83:40:72:af:26:95:10:ff:0e:f2:03:ee:31:70:f6:78:9d:ca +# SHA256 Fingerprint: 8f:af:7d:2e:2c:b4:70:9b:b8:e0:b3:36:66:bf:75:a5:dd:45:b5:de:48:0f:8e:a8:d4:bf:e6:be:bc:17:f2:ed +-----BEGIN CERTIFICATE----- +MIIFiTCCA3GgAwIBAgIQb77arXO9CEDii02+1PdbkTANBgkqhkiG9w0BAQsFADBO +MQswCQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQD +DBxTU0wuY29tIFRMUyBSU0EgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzQyMloX +DTQ2MDgxOTE2MzQyMVowTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jw +b3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgUlNBIFJvb3QgQ0EgMjAyMjCC +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANCkCXJPQIgSYT41I57u9nTP +L3tYPc48DRAokC+X94xI2KDYJbFMsBFMF3NQ0CJKY7uB0ylu1bUJPiYYf7ISf5OY +t6/wNr/y7hienDtSxUcZXXTzZGbVXcdotL8bHAajvI9AI7YexoS9UcQbOcGV0ins +S657Lb85/bRi3pZ7QcacoOAGcvvwB5cJOYF0r/c0WRFXCsJbwST0MXMwgsadugL3 +PnxEX4MN8/HdIGkWCVDi1FW24IBydm5MR7d1VVm0U3TZlMZBrViKMWYPHqIbKUBO +L9975hYsLfy/7PO0+r4Y9ptJ1O4Fbtk085zx7AGL0SDGD6C1vBdOSHtRwvzpXGk3 +R2azaPgVKPC506QVzFpPulJwoxJF3ca6TvvC0PeoUidtbnm1jPx7jMEWTO6Af77w +dr5BUxIzrlo4QqvXDz5BjXYHMtWrifZOZ9mxQnUjbvPNQrL8VfVThxc7wDNY8VLS ++YCk8OjwO4s4zKTGkH8PnP2L0aPP2oOnaclQNtVcBdIKQXTbYxE3waWglksejBYS +d66UNHsef8JmAOSqg+qKkK3ONkRN0VHpvB/zagX9wHQfJRlAUW7qglFA35u5CCoG +AtUjHBPW6dvbxrB6y3snm/vg1UYk7RBLY0ulBY+6uB0rpvqR4pJSvezrZ5dtmi2f +gTIFZzL7SAg/2SW4BCUvAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j +BBgwFoAU+y437uOEeicuzRk1sTN8/9REQrkwHQYDVR0OBBYEFPsuN+7jhHonLs0Z +NbEzfP/UREK5MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAjYlt +hEUY8U+zoO9opMAdrDC8Z2awms22qyIZZtM7QbUQnRC6cm4pJCAcAZli05bg4vsM +QtfhWsSWTVTNj8pDU/0quOr4ZcoBwq1gaAafORpR2eCNJvkLTqVTJXojpBzOCBvf +R4iyrT7gJ4eLSYwfqUdYe5byiB0YrrPRpgqU+tvT5TgKa3kSM/tKWTcWQA673vWJ +DPFs0/dRa1419dvAJuoSc06pkZCmF8NsLzjUo3KUQyxi4U5cMj29TH0ZR6LDSeeW +P4+a0zvkEdiLA9z2tmBVGKaBUfPhqBVq6+AL8BQx1rmMRTqoENjwuSfr98t67wVy +lrXEj5ZzxOhWc5y8aVFjvO9nHEMaX3cZHxj4HCUp+UmZKbaSPaKDN7EgkaibMOlq +bLQjk2UEqxHzDh1TJElTHaE/nUiSEeJ9DU/1172iWD54nR4fK/4huxoTtrEoZP2w +AgDHbICivRZQIA9ygV/MlP+7mea6kMvq+cYMwq7FGc4zoWtcu358NFcXrfA/rs3q +r5nsLFR+jM4uElZI7xc7P0peYNLcdDa8pUNjyw9bowJWCZ4kLOGGgYz+qxcs+sji +Mho6/4UIyYOf8kpIEFR3N+2ivEC+5BB09+Rbu7nzifmPQdjH5FCQNYA+HLhNkNPU +98OwoX6EyneSMSy4kLGCenROmxMmtNVQZlR4rmA= +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com TLS ECC Root CA 2022 O=SSL Corporation +# Subject: CN=SSL.com TLS ECC Root CA 2022 O=SSL Corporation +# Label: "SSL.com TLS ECC Root CA 2022" +# Serial: 26605119622390491762507526719404364228 +# MD5 Fingerprint: 99:d7:5c:f1:51:36:cc:e9:ce:d9:19:2e:77:71:56:c5 +# SHA1 Fingerprint: 9f:5f:d9:1a:54:6d:f5:0c:71:f0:ee:7a:bd:17:49:98:84:73:e2:39 +# SHA256 Fingerprint: c3:2f:fd:9f:46:f9:36:d1:6c:36:73:99:09:59:43:4b:9a:d6:0a:af:bb:9e:7c:f3:36:54:f1:44:cc:1b:a1:43 +-----BEGIN CERTIFICATE----- +MIICOjCCAcCgAwIBAgIQFAP1q/s3ixdAW+JDsqXRxDAKBggqhkjOPQQDAzBOMQsw +CQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxT +U0wuY29tIFRMUyBFQ0MgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzM0OFoXDTQ2 +MDgxOTE2MzM0N1owTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jwb3Jh +dGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgRUNDIFJvb3QgQ0EgMjAyMjB2MBAG +ByqGSM49AgEGBSuBBAAiA2IABEUpNXP6wrgjzhR9qLFNoFs27iosU8NgCTWyJGYm +acCzldZdkkAZDsalE3D07xJRKF3nzL35PIXBz5SQySvOkkJYWWf9lCcQZIxPBLFN +SeR7T5v15wj4A4j3p8OSSxlUgaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSME +GDAWgBSJjy+j6CugFFR781a4Jl9nOAuc0DAdBgNVHQ4EFgQUiY8vo+groBRUe/NW +uCZfZzgLnNAwDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2gAMGUCMFXjIlbp +15IkWE8elDIPDAI2wv2sdDJO4fscgIijzPvX6yv/N33w7deedWo1dlJF4AIxAMeN +b0Igj762TVntd00pxCAgRWSGOlDGxK0tk/UYfXLtqc/ErFc2KAhl3zx5Zn6g6g== +-----END CERTIFICATE----- + +# Issuer: CN=Atos TrustedRoot Root CA ECC TLS 2021 O=Atos +# Subject: CN=Atos TrustedRoot Root CA ECC TLS 2021 O=Atos +# Label: "Atos TrustedRoot Root CA ECC TLS 2021" +# Serial: 81873346711060652204712539181482831616 +# MD5 Fingerprint: 16:9f:ad:f1:70:ad:79:d6:ed:29:b4:d1:c5:79:70:a8 +# SHA1 Fingerprint: 9e:bc:75:10:42:b3:02:f3:81:f4:f7:30:62:d4:8f:c3:a7:51:b2:dd +# SHA256 Fingerprint: b2:fa:e5:3e:14:cc:d7:ab:92:12:06:47:01:ae:27:9c:1d:89:88:fa:cb:77:5f:a8:a0:08:91:4e:66:39:88:a8 +-----BEGIN CERTIFICATE----- +MIICFTCCAZugAwIBAgIQPZg7pmY9kGP3fiZXOATvADAKBggqhkjOPQQDAzBMMS4w +LAYDVQQDDCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgRUNDIFRMUyAyMDIxMQ0w +CwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0yMTA0MjIwOTI2MjNaFw00MTA0 +MTcwOTI2MjJaMEwxLjAsBgNVBAMMJUF0b3MgVHJ1c3RlZFJvb3QgUm9vdCBDQSBF +Q0MgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYTAkRFMHYwEAYHKoZI +zj0CAQYFK4EEACIDYgAEloZYKDcKZ9Cg3iQZGeHkBQcfl+3oZIK59sRxUM6KDP/X +tXa7oWyTbIOiaG6l2b4siJVBzV3dscqDY4PMwL502eCdpO5KTlbgmClBk1IQ1SQ4 +AjJn8ZQSb+/Xxd4u/RmAo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR2 +KCXWfeBmmnoJsmo7jjPXNtNPojAOBgNVHQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwMD +aAAwZQIwW5kp85wxtolrbNa9d+F851F+uDrNozZffPc8dz7kUK2o59JZDCaOMDtu +CCrCp1rIAjEAmeMM56PDr9NJLkaCI2ZdyQAUEv049OGYa3cpetskz2VAv9LcjBHo +9H1/IISpQuQo +-----END CERTIFICATE----- + +# Issuer: CN=Atos TrustedRoot Root CA RSA TLS 2021 O=Atos +# Subject: CN=Atos TrustedRoot Root CA RSA TLS 2021 O=Atos +# Label: "Atos TrustedRoot Root CA RSA TLS 2021" +# Serial: 111436099570196163832749341232207667876 +# MD5 Fingerprint: d4:d3:46:b8:9a:c0:9c:76:5d:9e:3a:c3:b9:99:31:d2 +# SHA1 Fingerprint: 18:52:3b:0d:06:37:e4:d6:3a:df:23:e4:98:fb:5b:16:fb:86:74:48 +# SHA256 Fingerprint: 81:a9:08:8e:a5:9f:b3:64:c5:48:a6:f8:55:59:09:9b:6f:04:05:ef:bf:18:e5:32:4e:c9:f4:57:ba:00:11:2f +-----BEGIN CERTIFICATE----- +MIIFZDCCA0ygAwIBAgIQU9XP5hmTC/srBRLYwiqipDANBgkqhkiG9w0BAQwFADBM +MS4wLAYDVQQDDCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgUlNBIFRMUyAyMDIx +MQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0yMTA0MjIwOTIxMTBaFw00 +MTA0MTcwOTIxMDlaMEwxLjAsBgNVBAMMJUF0b3MgVHJ1c3RlZFJvb3QgUm9vdCBD +QSBSU0EgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYTAkRFMIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtoAOxHm9BYx9sKOdTSJNy/BBl01Z +4NH+VoyX8te9j2y3I49f1cTYQcvyAh5x5en2XssIKl4w8i1mx4QbZFc4nXUtVsYv +Ye+W/CBGvevUez8/fEc4BKkbqlLfEzfTFRVOvV98r61jx3ncCHvVoOX3W3WsgFWZ +kmGbzSoXfduP9LVq6hdKZChmFSlsAvFr1bqjM9xaZ6cF4r9lthawEO3NUDPJcFDs +GY6wx/J0W2tExn2WuZgIWWbeKQGb9Cpt0xU6kGpn8bRrZtkh68rZYnxGEFzedUln +nkL5/nWpo63/dgpnQOPF943HhZpZnmKaau1Fh5hnstVKPNe0OwANwI8f4UDErmwh +3El+fsqyjW22v5MvoVw+j8rtgI5Y4dtXz4U2OLJxpAmMkokIiEjxQGMYsluMWuPD +0xeqqxmjLBvk1cbiZnrXghmmOxYsL3GHX0WelXOTwkKBIROW1527k2gV+p2kHYzy +geBYBr3JtuP2iV2J+axEoctr+hbxx1A9JNr3w+SH1VbxT5Aw+kUJWdo0zuATHAR8 +ANSbhqRAvNncTFd+rrcztl524WWLZt+NyteYr842mIycg5kDcPOvdO3GDjbnvezB +c6eUWsuSZIKmAMFwoW4sKeFYV+xafJlrJaSQOoD0IJ2azsct+bJLKZWD6TWNp0lI +pw9MGZHQ9b8Q4HECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU +dEmZ0f+0emhFdcN+tNzMzjkz2ggwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +DAUAA4ICAQAjQ1MkYlxt/T7Cz1UAbMVWiLkO3TriJQ2VSpfKgInuKs1l+NsW4AmS +4BjHeJi78+xCUvuppILXTdiK/ORO/auQxDh1MoSf/7OwKwIzNsAQkG8dnK/haZPs +o0UvFJ/1TCplQ3IM98P4lYsU84UgYt1UU90s3BiVaU+DR3BAM1h3Egyi61IxHkzJ +qM7F78PRreBrAwA0JrRUITWXAdxfG/F851X6LWh3e9NpzNMOa7pNdkTWwhWaJuyw +xfW70Xp0wmzNxbVe9kzmWy2B27O3Opee7c9GslA9hGCZcbUztVdF5kJHdWoOsAgM +rr3e97sPWD2PAzHoPYJQyi9eDF20l74gNAf0xBLh7tew2VktafcxBPTy+av5EzH4 +AXcOPUIjJsyacmdRIXrMPIWo6iFqO9taPKU0nprALN+AnCng33eU0aKAQv9qTFsR +0PXNor6uzFFcw9VUewyu1rkGd4Di7wcaaMxZUa1+XGdrudviB0JbuAEFWDlN5LuY +o7Ey7Nmj1m+UI/87tyll5gfp77YZ6ufCOB0yiJA8EytuzO+rdwY0d4RPcuSBhPm5 +dDTedk+SKlOxJTnbPP/lPqYO5Wue/9vsL3SD3460s6neFE3/MaNFcyT6lSnMEpcE +oji2jbDwN/zIIX8/syQbPYtuzE2wFg2WHYMfRsCbvUOZ58SWLs5fyQ== +-----END CERTIFICATE----- + +# Issuer: CN=TrustAsia Global Root CA G3 O=TrustAsia Technologies, Inc. +# Subject: CN=TrustAsia Global Root CA G3 O=TrustAsia Technologies, Inc. +# Label: "TrustAsia Global Root CA G3" +# Serial: 576386314500428537169965010905813481816650257167 +# MD5 Fingerprint: 30:42:1b:b7:bb:81:75:35:e4:16:4f:53:d2:94:de:04 +# SHA1 Fingerprint: 63:cf:b6:c1:27:2b:56:e4:88:8e:1c:23:9a:b6:2e:81:47:24:c3:c7 +# SHA256 Fingerprint: e0:d3:22:6a:eb:11:63:c2:e4:8f:f9:be:3b:50:b4:c6:43:1b:e7:bb:1e:ac:c5:c3:6b:5d:5e:c5:09:03:9a:08 +-----BEGIN CERTIFICATE----- +MIIFpTCCA42gAwIBAgIUZPYOZXdhaqs7tOqFhLuxibhxkw8wDQYJKoZIhvcNAQEM +BQAwWjELMAkGA1UEBhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dp +ZXMsIEluYy4xJDAiBgNVBAMMG1RydXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHMzAe +Fw0yMTA1MjAwMjEwMTlaFw00NjA1MTkwMjEwMTlaMFoxCzAJBgNVBAYTAkNOMSUw +IwYDVQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSQwIgYDVQQDDBtU +cnVzdEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDAMYJhkuSUGwoqZdC+BqmHO1ES6nBBruL7dOoKjbmzTNyPtxNS +T1QY4SxzlZHFZjtqz6xjbYdT8PfxObegQ2OwxANdV6nnRM7EoYNl9lA+sX4WuDqK +AtCWHwDNBSHvBm3dIZwZQ0WhxeiAysKtQGIXBsaqvPPW5vxQfmZCHzyLpnl5hkA1 +nyDvP+uLRx+PjsXUjrYsyUQE49RDdT/VP68czH5GX6zfZBCK70bwkPAPLfSIC7Ep +qq+FqklYqL9joDiR5rPmd2jE+SoZhLsO4fWvieylL1AgdB4SQXMeJNnKziyhWTXA +yB1GJ2Faj/lN03J5Zh6fFZAhLf3ti1ZwA0pJPn9pMRJpxx5cynoTi+jm9WAPzJMs +hH/x/Gr8m0ed262IPfN2dTPXS6TIi/n1Q1hPy8gDVI+lhXgEGvNz8teHHUGf59gX +zhqcD0r83ERoVGjiQTz+LISGNzzNPy+i2+f3VANfWdP3kXjHi3dqFuVJhZBFcnAv +kV34PmVACxmZySYgWmjBNb9Pp1Hx2BErW+Canig7CjoKH8GB5S7wprlppYiU5msT +f9FkPz2ccEblooV7WIQn3MSAPmeamseaMQ4w7OYXQJXZRe0Blqq/DPNL0WP3E1jA +uPP6Z92bfW1K/zJMtSU7/xxnD4UiWQWRkUF3gdCFTIcQcf+eQxuulXUtgQIDAQAB +o2MwYTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEDk5PIj7zjKsK5Xf/Ih +MBY027ySMB0GA1UdDgQWBBRA5OTyI+84yrCuV3/yITAWNNu8kjAOBgNVHQ8BAf8E +BAMCAQYwDQYJKoZIhvcNAQEMBQADggIBACY7UeFNOPMyGLS0XuFlXsSUT9SnYaP4 +wM8zAQLpw6o1D/GUE3d3NZ4tVlFEbuHGLige/9rsR82XRBf34EzC4Xx8MnpmyFq2 +XFNFV1pF1AWZLy4jVe5jaN/TG3inEpQGAHUNcoTpLrxaatXeL1nHo+zSh2bbt1S1 +JKv0Q3jbSwTEb93mPmY+KfJLaHEih6D4sTNjduMNhXJEIlU/HHzp/LgV6FL6qj6j +ITk1dImmasI5+njPtqzn59ZW/yOSLlALqbUHM/Q4X6RJpstlcHboCoWASzY9M/eV +VHUl2qzEc4Jl6VL1XP04lQJqaTDFHApXB64ipCz5xUG3uOyfT0gA+QEEVcys+TIx +xHWVBqB/0Y0n3bOppHKH/lmLmnp0Ft0WpWIp6zqW3IunaFnT63eROfjXy9mPX1on +AX1daBli2MjN9LdyR75bl87yraKZk62Uy5P2EgmVtqvXO9A/EcswFi55gORngS1d +7XB4tmBZrOFdRWOPyN9yaFvqHbgB8X7754qz41SgOAngPN5C8sLtLpvzHzW2Ntjj +gKGLzZlkD8Kqq7HK9W+eQ42EVJmzbsASZthwEPEGNTNDqJwuuhQxzhB/HIbjj9LV ++Hfsm6vxL2PZQl/gZ4FkkfGXL/xuJvYz+NO1+MRiqzFRJQJ6+N1rZdVtTTDIZbpo +FGWsJwt0ivKH +-----END CERTIFICATE----- + +# Issuer: CN=TrustAsia Global Root CA G4 O=TrustAsia Technologies, Inc. +# Subject: CN=TrustAsia Global Root CA G4 O=TrustAsia Technologies, Inc. +# Label: "TrustAsia Global Root CA G4" +# Serial: 451799571007117016466790293371524403291602933463 +# MD5 Fingerprint: 54:dd:b2:d7:5f:d8:3e:ed:7c:e0:0b:2e:cc:ed:eb:eb +# SHA1 Fingerprint: 57:73:a5:61:5d:80:b2:e6:ac:38:82:fc:68:07:31:ac:9f:b5:92:5a +# SHA256 Fingerprint: be:4b:56:cb:50:56:c0:13:6a:52:6d:f4:44:50:8d:aa:36:a0:b5:4f:42:e4:ac:38:f7:2a:f4:70:e4:79:65:4c +-----BEGIN CERTIFICATE----- +MIICVTCCAdygAwIBAgIUTyNkuI6XY57GU4HBdk7LKnQV1tcwCgYIKoZIzj0EAwMw +WjELMAkGA1UEBhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dpZXMs +IEluYy4xJDAiBgNVBAMMG1RydXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHNDAeFw0y +MTA1MjAwMjEwMjJaFw00NjA1MTkwMjEwMjJaMFoxCzAJBgNVBAYTAkNOMSUwIwYD +VQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSQwIgYDVQQDDBtUcnVz +dEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATx +s8045CVD5d4ZCbuBeaIVXxVjAd7Cq92zphtnS4CDr5nLrBfbK5bKfFJV4hrhPVbw +LxYI+hW8m7tH5j/uqOFMjPXTNvk4XatwmkcN4oFBButJ+bAp3TPsUKV/eSm4IJij +YzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUpbtKl86zK3+kMd6Xg1mD +pm9xy94wHQYDVR0OBBYEFKW7SpfOsyt/pDHel4NZg6ZvccveMA4GA1UdDwEB/wQE +AwIBBjAKBggqhkjOPQQDAwNnADBkAjBe8usGzEkxn0AAbbd+NvBNEU/zy4k6LHiR +UKNbwMp1JvK/kF0LgoxgKJ/GcJpo5PECMFxYDlZ2z1jD1xCMuo6u47xkdUfFVZDj +/bpV6wfEU6s3qe4hsiFbYI89MvHVI5TWWA== +-----END CERTIFICATE----- + +# Issuer: CN=CommScope Public Trust ECC Root-01 O=CommScope +# Subject: CN=CommScope Public Trust ECC Root-01 O=CommScope +# Label: "CommScope Public Trust ECC Root-01" +# Serial: 385011430473757362783587124273108818652468453534 +# MD5 Fingerprint: 3a:40:a7:fc:03:8c:9c:38:79:2f:3a:a2:6c:b6:0a:16 +# SHA1 Fingerprint: 07:86:c0:d8:dd:8e:c0:80:98:06:98:d0:58:7a:ef:de:a6:cc:a2:5d +# SHA256 Fingerprint: 11:43:7c:da:7b:b4:5e:41:36:5f:45:b3:9a:38:98:6b:0d:e0:0d:ef:34:8e:0c:7b:b0:87:36:33:80:0b:c3:8b +-----BEGIN CERTIFICATE----- +MIICHTCCAaOgAwIBAgIUQ3CCd89NXTTxyq4yLzf39H91oJ4wCgYIKoZIzj0EAwMw +TjELMAkGA1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29t +bVNjb3BlIFB1YmxpYyBUcnVzdCBFQ0MgUm9vdC0wMTAeFw0yMTA0MjgxNzM1NDNa +Fw00NjA0MjgxNzM1NDJaME4xCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlDb21tU2Nv +cGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3QgRUNDIFJvb3QtMDEw +djAQBgcqhkjOPQIBBgUrgQQAIgNiAARLNumuV16ocNfQj3Rid8NeeqrltqLxeP0C +flfdkXmcbLlSiFS8LwS+uM32ENEp7LXQoMPwiXAZu1FlxUOcw5tjnSCDPgYLpkJE +hRGnSjot6dZoL0hOUysHP029uax3OVejQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSOB2LAUN3GGQYARnQE9/OufXVNMDAKBggq +hkjOPQQDAwNoADBlAjEAnDPfQeMjqEI2Jpc1XHvr20v4qotzVRVcrHgpD7oh2MSg +2NED3W3ROT3Ek2DS43KyAjB8xX6I01D1HiXo+k515liWpDVfG2XqYZpwI7UNo5uS +Um9poIyNStDuiw7LR47QjRE= +-----END CERTIFICATE----- + +# Issuer: CN=CommScope Public Trust ECC Root-02 O=CommScope +# Subject: CN=CommScope Public Trust ECC Root-02 O=CommScope +# Label: "CommScope Public Trust ECC Root-02" +# Serial: 234015080301808452132356021271193974922492992893 +# MD5 Fingerprint: 59:b0:44:d5:65:4d:b8:5c:55:19:92:02:b6:d1:94:b2 +# SHA1 Fingerprint: 3c:3f:ef:57:0f:fe:65:93:86:9e:a0:fe:b0:f6:ed:8e:d1:13:c7:e5 +# SHA256 Fingerprint: 2f:fb:7f:81:3b:bb:b3:c8:9a:b4:e8:16:2d:0f:16:d7:15:09:a8:30:cc:9d:73:c2:62:e5:14:08:75:d1:ad:4a +-----BEGIN CERTIFICATE----- +MIICHDCCAaOgAwIBAgIUKP2ZYEFHpgE6yhR7H+/5aAiDXX0wCgYIKoZIzj0EAwMw +TjELMAkGA1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29t +bVNjb3BlIFB1YmxpYyBUcnVzdCBFQ0MgUm9vdC0wMjAeFw0yMTA0MjgxNzQ0NTRa +Fw00NjA0MjgxNzQ0NTNaME4xCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlDb21tU2Nv +cGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3QgRUNDIFJvb3QtMDIw +djAQBgcqhkjOPQIBBgUrgQQAIgNiAAR4MIHoYx7l63FRD/cHB8o5mXxO1Q/MMDAL +j2aTPs+9xYa9+bG3tD60B8jzljHz7aRP+KNOjSkVWLjVb3/ubCK1sK9IRQq9qEmU +v4RDsNuESgMjGWdqb8FuvAY5N9GIIvejQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTmGHX/72DehKT1RsfeSlXjMjZ59TAKBggq +hkjOPQQDAwNnADBkAjAmc0l6tqvmSfR9Uj/UQQSugEODZXW5hYA4O9Zv5JOGq4/n +ich/m35rChJVYaoR4HkCMHfoMXGsPHED1oQmHhS48zs73u1Z/GtMMH9ZzkXpc2AV +mkzw5l4lIhVtwodZ0LKOag== +-----END CERTIFICATE----- + +# Issuer: CN=CommScope Public Trust RSA Root-01 O=CommScope +# Subject: CN=CommScope Public Trust RSA Root-01 O=CommScope +# Label: "CommScope Public Trust RSA Root-01" +# Serial: 354030733275608256394402989253558293562031411421 +# MD5 Fingerprint: 0e:b4:15:bc:87:63:5d:5d:02:73:d4:26:38:68:73:d8 +# SHA1 Fingerprint: 6d:0a:5f:f7:b4:23:06:b4:85:b3:b7:97:64:fc:ac:75:f5:33:f2:93 +# SHA256 Fingerprint: 02:bd:f9:6e:2a:45:dd:9b:f1:8f:c7:e1:db:df:21:a0:37:9b:a3:c9:c2:61:03:44:cf:d8:d6:06:fe:c1:ed:81 +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIUPgNJgXUWdDGOTKvVxZAplsU5EN0wDQYJKoZIhvcNAQEL +BQAwTjELMAkGA1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwi +Q29tbVNjb3BlIFB1YmxpYyBUcnVzdCBSU0EgUm9vdC0wMTAeFw0yMTA0MjgxNjQ1 +NTRaFw00NjA0MjgxNjQ1NTNaME4xCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlDb21t +U2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3QgUlNBIFJvb3Qt +MDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwSGWjDR1C45FtnYSk +YZYSwu3D2iM0GXb26v1VWvZVAVMP8syMl0+5UMuzAURWlv2bKOx7dAvnQmtVzslh +suitQDy6uUEKBU8bJoWPQ7VAtYXR1HHcg0Hz9kXHgKKEUJdGzqAMxGBWBB0HW0al +DrJLpA6lfO741GIDuZNqihS4cPgugkY4Iw50x2tBt9Apo52AsH53k2NC+zSDO3Oj +WiE260f6GBfZumbCk6SP/F2krfxQapWsvCQz0b2If4b19bJzKo98rwjyGpg/qYFl +P8GMicWWMJoKz/TUyDTtnS+8jTiGU+6Xn6myY5QXjQ/cZip8UlF1y5mO6D1cv547 +KI2DAg+pn3LiLCuz3GaXAEDQpFSOm117RTYm1nJD68/A6g3czhLmfTifBSeolz7p +UcZsBSjBAg/pGG3svZwG1KdJ9FQFa2ww8esD1eo9anbCyxooSU1/ZOD6K9pzg4H/ +kQO9lLvkuI6cMmPNn7togbGEW682v3fuHX/3SZtS7NJ3Wn2RnU3COS3kuoL4b/JO +Hg9O5j9ZpSPcPYeoKFgo0fEbNttPxP/hjFtyjMcmAyejOQoBqsCyMWCDIqFPEgkB +Ea801M/XrmLTBQe0MXXgDW1XT2mH+VepuhX2yFJtocucH+X8eKg1mp9BFM6ltM6U +CBwJrVbl2rZJmkrqYxhTnCwuwwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUN12mmnQywsL5x6YVEFm45P3luG0wDQYJ +KoZIhvcNAQELBQADggIBAK+nz97/4L1CjU3lIpbfaOp9TSp90K09FlxD533Ahuh6 +NWPxzIHIxgvoLlI1pKZJkGNRrDSsBTtXAOnTYtPZKdVUvhwQkZyybf5Z/Xn36lbQ +nmhUQo8mUuJM3y+Xpi/SB5io82BdS5pYV4jvguX6r2yBS5KPQJqTRlnLX3gWsWc+ +QgvfKNmwrZggvkN80V4aCRckjXtdlemrwWCrWxhkgPut4AZ9HcpZuPN4KWfGVh2v +trV0KnahP/t1MJ+UXjulYPPLXAziDslg+MkfFoom3ecnf+slpoq9uC02EJqxWE2a +aE9gVOX2RhOOiKy8IUISrcZKiX2bwdgt6ZYD9KJ0DLwAHb/WNyVntHKLr4W96ioD +j8z7PEQkguIBpQtZtjSNMgsSDesnwv1B10A8ckYpwIzqug/xBpMu95yo9GA+o/E4 +Xo4TwbM6l4c/ksp4qRyv0LAbJh6+cOx69TOY6lz/KwsETkPdY34Op054A5U+1C0w +lREQKC6/oAI+/15Z0wUOlV9TRe9rh9VIzRamloPh37MG88EU26fsHItdkJANclHn +YfkUyq+Dj7+vsQpZXdxc1+SWrVtgHdqul7I52Qb1dgAT+GhMIbA1xNxVssnBQVoc +icCMb3SgazNNtQEo/a2tiRc7ppqEvOuM6sRxJKi6KfkIsidWNTJf6jn7MZrVGczw +-----END CERTIFICATE----- + +# Issuer: CN=CommScope Public Trust RSA Root-02 O=CommScope +# Subject: CN=CommScope Public Trust RSA Root-02 O=CommScope +# Label: "CommScope Public Trust RSA Root-02" +# Serial: 480062499834624527752716769107743131258796508494 +# MD5 Fingerprint: e1:29:f9:62:7b:76:e2:96:6d:f3:d4:d7:0f:ae:1f:aa +# SHA1 Fingerprint: ea:b0:e2:52:1b:89:93:4c:11:68:f2:d8:9a:ac:22:4c:a3:8a:57:ae +# SHA256 Fingerprint: ff:e9:43:d7:93:42:4b:4f:7c:44:0c:1c:3d:64:8d:53:63:f3:4b:82:dc:87:aa:7a:9f:11:8f:c5:de:e1:01:f1 +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIUVBa/O345lXGN0aoApYYNK496BU4wDQYJKoZIhvcNAQEL +BQAwTjELMAkGA1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwi +Q29tbVNjb3BlIFB1YmxpYyBUcnVzdCBSU0EgUm9vdC0wMjAeFw0yMTA0MjgxNzE2 +NDNaFw00NjA0MjgxNzE2NDJaME4xCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlDb21t +U2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3QgUlNBIFJvb3Qt +MDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDh+g77aAASyE3VrCLE +NQE7xVTlWXZjpX/rwcRqmL0yjReA61260WI9JSMZNRTpf4mnG2I81lDnNJUDMrG0 +kyI9p+Kx7eZ7Ti6Hmw0zdQreqjXnfuU2mKKuJZ6VszKWpCtYHu8//mI0SFHRtI1C +rWDaSWqVcN3SAOLMV2MCe5bdSZdbkk6V0/nLKR8YSvgBKtJjCW4k6YnS5cciTNxz +hkcAqg2Ijq6FfUrpuzNPDlJwnZXjfG2WWy09X6GDRl224yW4fKcZgBzqZUPckXk2 +LHR88mcGyYnJ27/aaL8j7dxrrSiDeS/sOKUNNwFnJ5rpM9kzXzehxfCrPfp4sOcs +n/Y+n2Dg70jpkEUeBVF4GiwSLFworA2iI540jwXmojPOEXcT1A6kHkIfhs1w/tku +FT0du7jyU1fbzMZ0KZwYszZ1OC4PVKH4kh+Jlk+71O6d6Ts2QrUKOyrUZHk2EOH5 +kQMreyBUzQ0ZGshBMjTRsJnhkB4BQDa1t/qp5Xd1pCKBXbCL5CcSD1SIxtuFdOa3 +wNemKfrb3vOTlycEVS8KbzfFPROvCgCpLIscgSjX74Yxqa7ybrjKaixUR9gqiC6v +wQcQeKwRoi9C8DfF8rhW3Q5iLc4tVn5V8qdE9isy9COoR+jUKgF4z2rDN6ieZdIs +5fq6M8EGRPbmz6UNp2YINIos8wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUR9DnsSL/nSz12Vdgs7GxcJXvYXowDQYJ +KoZIhvcNAQELBQADggIBAIZpsU0v6Z9PIpNojuQhmaPORVMbc0RTAIFhzTHjCLqB +KCh6krm2qMhDnscTJk3C2OVVnJJdUNjCK9v+5qiXz1I6JMNlZFxHMaNlNRPDk7n3 ++VGXu6TwYofF1gbTl4MgqX67tiHCpQ2EAOHyJxCDut0DgdXdaMNmEMjRdrSzbyme +APnCKfWxkxlSaRosTKCL4BWaMS/TiJVZbuXEs1DIFAhKm4sTg7GkcrI7djNB3Nyq +pgdvHSQSn8h2vS/ZjvQs7rfSOBAkNlEv41xdgSGn2rtO/+YHqP65DSdsu3BaVXoT +6fEqSWnHX4dXTEN5bTpl6TBcQe7rd6VzEojov32u5cSoHw2OHG1QAk8mGEPej1WF +sQs3BWDJVTkSBKEqz3EWnzZRSb9wO55nnPt7eck5HHisd5FUmrh1CoFSl+NmYWvt +PjgelmFV4ZFUjO2MJB+ByRCac5krFk5yAD9UG/iNuovnFNa2RU9g7Jauwy8CTl2d +lklyALKrdVwPaFsdZcJfMw8eD/A7hvWwTruc9+olBdytoptLFwG+Qt81IR2tq670 +v64fG9PiO/yzcnMcmyiQiRM9HcEARwmWmjgb3bHPDcK0RPOWlc4yOo80nOAXx17O +rg3bhzjlP1v9mxnhMUF6cKojawHhRUzNlM47ni3niAIi9G7oyOzWPPO5std3eqx7 +-----END CERTIFICATE----- + +# Issuer: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH +# Subject: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH +# Label: "Telekom Security TLS ECC Root 2020" +# Serial: 72082518505882327255703894282316633856 +# MD5 Fingerprint: c1:ab:fe:6a:10:2c:03:8d:bc:1c:22:32:c0:85:a7:fd +# SHA1 Fingerprint: c0:f8:96:c5:a9:3b:01:06:21:07:da:18:42:48:bc:e9:9d:88:d5:ec +# SHA256 Fingerprint: 57:8a:f4:de:d0:85:3f:4e:59:98:db:4a:ea:f9:cb:ea:8d:94:5f:60:b6:20:a3:8d:1a:3c:13:b2:bc:7b:a8:e1 +-----BEGIN CERTIFICATE----- +MIICQjCCAcmgAwIBAgIQNjqWjMlcsljN0AFdxeVXADAKBggqhkjOPQQDAzBjMQsw +CQYDVQQGEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0eSBH +bWJIMSswKQYDVQQDDCJUZWxla29tIFNlY3VyaXR5IFRMUyBFQ0MgUm9vdCAyMDIw +MB4XDTIwMDgyNTA3NDgyMFoXDTQ1MDgyNTIzNTk1OVowYzELMAkGA1UEBhMCREUx +JzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkgR21iSDErMCkGA1UE +AwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgRUNDIFJvb3QgMjAyMDB2MBAGByqGSM49 +AgEGBSuBBAAiA2IABM6//leov9Wq9xCazbzREaK9Z0LMkOsVGJDZos0MKiXrPk/O +tdKPD/M12kOLAoC+b1EkHQ9rK8qfwm9QMuU3ILYg/4gND21Ju9sGpIeQkpT0CdDP +f8iAC8GXs7s1J8nCG6NCMEAwHQYDVR0OBBYEFONyzG6VmUex5rNhTNHLq+O6zd6f +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cA +MGQCMHVSi7ekEE+uShCLsoRbQuHmKjYC2qBuGT8lv9pZMo7k+5Dck2TOrbRBR2Di +z6fLHgIwN0GMZt9Ba9aDAEH9L1r3ULRn0SyocddDypwnJJGDSA3PzfdUga/sf+Rn +27iQ7t0l +-----END CERTIFICATE----- + +# Issuer: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH +# Subject: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH +# Label: "Telekom Security TLS RSA Root 2023" +# Serial: 44676229530606711399881795178081572759 +# MD5 Fingerprint: bf:5b:eb:54:40:cd:48:71:c4:20:8d:7d:de:0a:42:f2 +# SHA1 Fingerprint: 54:d3:ac:b3:bd:57:56:f6:85:9d:ce:e5:c3:21:e2:d4:ad:83:d0:93 +# SHA256 Fingerprint: ef:c6:5c:ad:bb:59:ad:b6:ef:e8:4d:a2:23:11:b3:56:24:b7:1b:3b:1e:a0:da:8b:66:55:17:4e:c8:97:86:46 +-----BEGIN CERTIFICATE----- +MIIFszCCA5ugAwIBAgIQIZxULej27HF3+k7ow3BXlzANBgkqhkiG9w0BAQwFADBj +MQswCQYDVQQGEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0 +eSBHbWJIMSswKQYDVQQDDCJUZWxla29tIFNlY3VyaXR5IFRMUyBSU0EgUm9vdCAy +MDIzMB4XDTIzMDMyODEyMTY0NVoXDTQ4MDMyNzIzNTk1OVowYzELMAkGA1UEBhMC +REUxJzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkgR21iSDErMCkG +A1UEAwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgUlNBIFJvb3QgMjAyMzCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAO01oYGA88tKaVvC+1GDrib94W7zgRJ9 +cUD/h3VCKSHtgVIs3xLBGYSJwb3FKNXVS2xE1kzbB5ZKVXrKNoIENqil/Cf2SfHV +cp6R+SPWcHu79ZvB7JPPGeplfohwoHP89v+1VmLhc2o0mD6CuKyVU/QBoCcHcqMA +U6DksquDOFczJZSfvkgdmOGjup5czQRxUX11eKvzWarE4GC+j4NSuHUaQTXtvPM6 +Y+mpFEXX5lLRbtLevOP1Czvm4MS9Q2QTps70mDdsipWol8hHD/BeEIvnHRz+sTug +BTNoBUGCwQMrAcjnj02r6LX2zWtEtefdi+zqJbQAIldNsLGyMcEWzv/9FIS3R/qy +8XDe24tsNlikfLMR0cN3f1+2JeANxdKz+bi4d9s3cXFH42AYTyS2dTd4uaNir73J +co4vzLuu2+QVUhkHM/tqty1LkCiCc/4YizWN26cEar7qwU02OxY2kTLvtkCJkUPg +8qKrBC7m8kwOFjQgrIfBLX7JZkcXFBGk8/ehJImr2BrIoVyxo/eMbcgByU/J7MT8 +rFEz0ciD0cmfHdRHNCk+y7AO+oMLKFjlKdw/fKifybYKu6boRhYPluV75Gp6SG12 +mAWl3G0eQh5C2hrgUve1g8Aae3g1LDj1H/1Joy7SWWO/gLCMk3PLNaaZlSJhZQNg ++y+TS/qanIA7AgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtqeX +gj10hZv3PJ+TmpV5dVKMbUcwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS2 +p5eCPXSFm/c8n5OalXl1UoxtRzANBgkqhkiG9w0BAQwFAAOCAgEAqMxhpr51nhVQ +pGv7qHBFfLp+sVr8WyP6Cnf4mHGCDG3gXkaqk/QeoMPhk9tLrbKmXauw1GLLXrtm +9S3ul0A8Yute1hTWjOKWi0FpkzXmuZlrYrShF2Y0pmtjxrlO8iLpWA1WQdH6DErw +M807u20hOq6OcrXDSvvpfeWxm4bu4uB9tPcy/SKE8YXJN3nptT+/XOR0so8RYgDd +GGah2XsjX/GO1WfoVNpbOms2b/mBsTNHM3dA+VKq3dSDz4V4mZqTuXNnQkYRIer+ +CqkbGmVps4+uFrb2S1ayLfmlyOw7YqPta9BO1UAJpB+Y1zqlklkg5LB9zVtzaL1t +xKITDmcZuI1CfmwMmm6gJC3VRRvcxAIU/oVbZZfKTpBQCHpCNfnqwmbU+AGuHrS+ +w6jv/naaoqYfRvaE7fzbzsQCzndILIyy7MMAo+wsVRjBfhnu4S/yrYObnqsZ38aK +L4x35bcF7DvB7L6Gs4a8wPfc5+pbrrLMtTWGS9DiP7bY+A4A7l3j941Y/8+LN+lj +X273CXE2whJdV/LItM3z7gLfEdxquVeEHVlNjM7IDiPCtyaaEBRx/pOyiriA8A4Q +ntOoUAw3gi/q4Iqd4Sw5/7W0cwDk90imc6y/st53BIe0o82bNSQ3+pCTE4FCxpgm +dTdmQRCsu/WU48IxK63nI1bMNSWSs1A= +-----END CERTIFICATE----- + +# Issuer: CN=FIRMAPROFESIONAL CA ROOT-A WEB O=Firmaprofesional SA +# Subject: CN=FIRMAPROFESIONAL CA ROOT-A WEB O=Firmaprofesional SA +# Label: "FIRMAPROFESIONAL CA ROOT-A WEB" +# Serial: 65916896770016886708751106294915943533 +# MD5 Fingerprint: 82:b2:ad:45:00:82:b0:66:63:f8:5f:c3:67:4e:ce:a3 +# SHA1 Fingerprint: a8:31:11:74:a6:14:15:0d:ca:77:dd:0e:e4:0c:5d:58:fc:a0:72:a5 +# SHA256 Fingerprint: be:f2:56:da:f2:6e:9c:69:bd:ec:16:02:35:97:98:f3:ca:f7:18:21:a0:3e:01:82:57:c5:3c:65:61:7f:3d:4a +-----BEGIN CERTIFICATE----- +MIICejCCAgCgAwIBAgIQMZch7a+JQn81QYehZ1ZMbTAKBggqhkjOPQQDAzBuMQsw +CQYDVQQGEwJFUzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25hbCBTQTEYMBYGA1UE +YQwPVkFURVMtQTYyNjM0MDY4MScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFMIENB +IFJPT1QtQSBXRUIwHhcNMjIwNDA2MDkwMTM2WhcNNDcwMzMxMDkwMTM2WjBuMQsw +CQYDVQQGEwJFUzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25hbCBTQTEYMBYGA1UE +YQwPVkFURVMtQTYyNjM0MDY4MScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFMIENB +IFJPT1QtQSBXRUIwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARHU+osEaR3xyrq89Zf +e9MEkVz6iMYiuYMQYneEMy3pA4jU4DP37XcsSmDq5G+tbbT4TIqk5B/K6k84Si6C +cyvHZpsKjECcfIr28jlgst7L7Ljkb+qbXbdTkBgyVcUgt5SjYzBhMA8GA1UdEwEB +/wQFMAMBAf8wHwYDVR0jBBgwFoAUk+FDY1w8ndYn81LsF7Kpryz3dvgwHQYDVR0O +BBYEFJPhQ2NcPJ3WJ/NS7Beyqa8s93b4MA4GA1UdDwEB/wQEAwIBBjAKBggqhkjO +PQQDAwNoADBlAjAdfKR7w4l1M+E7qUW/Runpod3JIha3RxEL2Jq68cgLcFBTApFw +hVmpHqTm6iMxoAACMQD94vizrxa5HnPEluPBMBnYfubDl94cT7iJLzPrSA8Z94dG +XSaQpYXFuXqUPoeovQA= +-----END CERTIFICATE----- + +# Issuer: CN=TWCA CYBER Root CA O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA CYBER Root CA O=TAIWAN-CA OU=Root CA +# Label: "TWCA CYBER Root CA" +# Serial: 85076849864375384482682434040119489222 +# MD5 Fingerprint: 0b:33:a0:97:52:95:d4:a9:fd:bb:db:6e:a3:55:5b:51 +# SHA1 Fingerprint: f6:b1:1c:1a:83:38:e9:7b:db:b3:a8:c8:33:24:e0:2d:9c:7f:26:66 +# SHA256 Fingerprint: 3f:63:bb:28:14:be:17:4e:c8:b6:43:9c:f0:8d:6d:56:f0:b7:c4:05:88:3a:56:48:a3:34:42:4d:6b:3e:c5:58 +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIQQAE0jMIAAAAAAAAAATzyxjANBgkqhkiG9w0BAQwFADBQ +MQswCQYDVQQGEwJUVzESMBAGA1UEChMJVEFJV0FOLUNBMRAwDgYDVQQLEwdSb290 +IENBMRswGQYDVQQDExJUV0NBIENZQkVSIFJvb3QgQ0EwHhcNMjIxMTIyMDY1NDI5 +WhcNNDcxMTIyMTU1OTU5WjBQMQswCQYDVQQGEwJUVzESMBAGA1UEChMJVEFJV0FO +LUNBMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJUV0NBIENZQkVSIFJvb3Qg +Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDG+Moe2Qkgfh1sTs6P +40czRJzHyWmqOlt47nDSkvgEs1JSHWdyKKHfi12VCv7qze33Kc7wb3+szT3vsxxF +avcokPFhV8UMxKNQXd7UtcsZyoC5dc4pztKFIuwCY8xEMCDa6pFbVuYdHNWdZsc/ +34bKS1PE2Y2yHer43CdTo0fhYcx9tbD47nORxc5zb87uEB8aBs/pJ2DFTxnk684i +JkXXYJndzk834H/nY62wuFm40AZoNWDTNq5xQwTxaWV4fPMf88oon1oglWa0zbfu +j3ikRRjpJi+NmykosaS3Om251Bw4ckVYsV7r8Cibt4LK/c/WMw+f+5eesRycnupf +Xtuq3VTpMCEobY5583WSjCb+3MX2w7DfRFlDo7YDKPYIMKoNM+HvnKkHIuNZW0CP +2oi3aQiotyMuRAlZN1vH4xfyIutuOVLF3lSnmMlLIJXcRolftBL5hSmO68gnFSDA +S9TMfAxsNAwmmyYxpjyn9tnQS6Jk/zuZQXLB4HCX8SS7K8R0IrGsayIyJNN4KsDA +oS/xUgXJP+92ZuJF2A09rZXIx4kmyA+upwMu+8Ff+iDhcK2wZSA3M2Cw1a/XDBzC +kHDXShi8fgGwsOsVHkQGzaRP6AzRwyAQ4VRlnrZR0Bp2a0JaWHY06rc3Ga4udfmW +5cFZ95RXKSWNOkyrTZpB0F8mAwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBSdhWEUfMFib5do5E83QOGt4A1WNzAd +BgNVHQ4EFgQUnYVhFHzBYm+XaORPN0DhreANVjcwDQYJKoZIhvcNAQEMBQADggIB +AGSPesRiDrWIzLjHhg6hShbNcAu3p4ULs3a2D6f/CIsLJc+o1IN1KriWiLb73y0t +tGlTITVX1olNc79pj3CjYcya2x6a4CD4bLubIp1dhDGaLIrdaqHXKGnK/nZVekZn +68xDiBaiA9a5F/gZbG0jAn/xX9AKKSM70aoK7akXJlQKTcKlTfjF/biBzysseKNn +TKkHmvPfXvt89YnNdJdhEGoHK4Fa0o635yDRIG4kqIQnoVesqlVYL9zZyvpoBJ7t +RCT5dEA7IzOrg1oYJkK2bVS1FmAwbLGg+LhBoF1JSdJlBTrq/p1hvIbZv97Tujqx +f36SNI7JAG7cmL3c7IAFrQI932XtCwP39xaEBDG6k5TY8hL4iuO/Qq+n1M0RFxbI +Qh0UqEL20kCGoE8jypZFVmAGzbdVAaYBlGX+bgUJurSkquLvWL69J1bY73NxW0Qz +8ppy6rBePm6pUlvscG21h483XjyMnM7k8M4MZ0HMzvaAq07MTFb1wWFZk7Q+ptq4 +NxKfKjLji7gh7MMrZQzvIt6IKTtM1/r+t+FHvpw+PoP7UV31aPcuIYXcv/Fa4nzX +xeSDwWrruoBa3lwtcHb4yOWHh8qgnaHlIhInD0Q9HWzq1MKLL295q39QpsQZp6F6 +t5b5wR9iWqJDB0BeJsas7a5wFsWqynKKTbDPAYsDP27X +-----END CERTIFICATE----- + +# Issuer: CN=SecureSign Root CA12 O=Cybertrust Japan Co., Ltd. +# Subject: CN=SecureSign Root CA12 O=Cybertrust Japan Co., Ltd. +# Label: "SecureSign Root CA12" +# Serial: 587887345431707215246142177076162061960426065942 +# MD5 Fingerprint: c6:89:ca:64:42:9b:62:08:49:0b:1e:7f:e9:07:3d:e8 +# SHA1 Fingerprint: 7a:22:1e:3d:de:1b:06:ac:9e:c8:47:70:16:8e:3c:e5:f7:6b:06:f4 +# SHA256 Fingerprint: 3f:03:4b:b5:70:4d:44:b2:d0:85:45:a0:20:57:de:93:eb:f3:90:5f:ce:72:1a:cb:c7:30:c0:6d:da:ee:90:4e +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUZvnHwa/swlG07VOX5uaCwysckBYwDQYJKoZIhvcNAQEL +BQAwUTELMAkGA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28u +LCBMdGQuMR0wGwYDVQQDExRTZWN1cmVTaWduIFJvb3QgQ0ExMjAeFw0yMDA0MDgw +NTM2NDZaFw00MDA0MDgwNTM2NDZaMFExCzAJBgNVBAYTAkpQMSMwIQYDVQQKExpD +eWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2VjdXJlU2lnbiBS +b290IENBMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6OcE3emhF +KxS06+QT61d1I02PJC0W6K6OyX2kVzsqdiUzg2zqMoqUm048luT9Ub+ZyZN+v/mt +p7JIKwccJ/VMvHASd6SFVLX9kHrko+RRWAPNEHl57muTH2SOa2SroxPjcf59q5zd +J1M3s6oYwlkm7Fsf0uZlfO+TvdhYXAvA42VvPMfKWeP+bl+sg779XSVOKik71gur +FzJ4pOE+lEa+Ym6b3kaosRbnhW70CEBFEaCeVESE99g2zvVQR9wsMJvuwPWW0v4J +hscGWa5Pro4RmHvzC1KqYiaqId+OJTN5lxZJjfU+1UefNzFJM3IFTQy2VYzxV4+K +h9GtxRESOaCtAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMB0GA1UdDgQWBBRXNPN0zwRL1SXm8UC2LEzZLemgrTANBgkqhkiG9w0BAQsF +AAOCAQEAPrvbFxbS8hQBICw4g0utvsqFepq2m2um4fylOqyttCg6r9cBg0krY6Ld +mmQOmFxv3Y67ilQiLUoT865AQ9tPkbeGGuwAtEGBpE/6aouIs3YIcipJQMPTw4WJ +mBClnW8Zt7vPemVV2zfrPIpyMpcemik+rY3moxtt9XUa5rBouVui7mlHJzWhhpmA +8zNL4WukJsPvdFlseqJkth5Ew1DgDzk9qTPxpfPSvWKErI4cqc1avTc7bgoitPQV +55FYxTpE05Uo2cBl6XLK0A+9H7MV2anjpEcJnuDLN/v9vZfVvhgaaaI5gdka9at/ +yOPiZwud9AzqVN/Ssq+xIvEg37xEHA== +-----END CERTIFICATE----- + +# Issuer: CN=SecureSign Root CA14 O=Cybertrust Japan Co., Ltd. +# Subject: CN=SecureSign Root CA14 O=Cybertrust Japan Co., Ltd. +# Label: "SecureSign Root CA14" +# Serial: 575790784512929437950770173562378038616896959179 +# MD5 Fingerprint: 71:0d:72:fa:92:19:65:5e:89:04:ac:16:33:f0:bc:d5 +# SHA1 Fingerprint: dd:50:c0:f7:79:b3:64:2e:74:a2:b8:9d:9f:d3:40:dd:bb:f0:f2:4f +# SHA256 Fingerprint: 4b:00:9c:10:34:49:4f:9a:b5:6b:ba:3b:a1:d6:27:31:fc:4d:20:d8:95:5a:dc:ec:10:a9:25:60:72:61:e3:38 +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIUZNtaDCBO6Ncpd8hQJ6JaJ90t8sswDQYJKoZIhvcNAQEM +BQAwUTELMAkGA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28u +LCBMdGQuMR0wGwYDVQQDExRTZWN1cmVTaWduIFJvb3QgQ0ExNDAeFw0yMDA0MDgw +NzA2MTlaFw00NTA0MDgwNzA2MTlaMFExCzAJBgNVBAYTAkpQMSMwIQYDVQQKExpD +eWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2VjdXJlU2lnbiBS +b290IENBMTQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDF0nqh1oq/ +FjHQmNE6lPxauG4iwWL3pwon71D2LrGeaBLwbCRjOfHw3xDG3rdSINVSW0KZnvOg +vlIfX8xnbacuUKLBl422+JX1sLrcneC+y9/3OPJH9aaakpUqYllQC6KxNedlsmGy +6pJxaeQp8E+BgQQ8sqVb1MWoWWd7VRxJq3qdwudzTe/NCcLEVxLbAQ4jeQkHO6Lo +/IrPj8BGJJw4J+CDnRugv3gVEOuGTgpa/d/aLIJ+7sr2KeH6caH3iGicnPCNvg9J +kdjqOvn90Ghx2+m1K06Ckm9mH+Dw3EzsytHqunQG+bOEkJTRX45zGRBdAuVwpcAQ +0BB8b8VYSbSwbprafZX1zNoCr7gsfXmPvkPx+SgojQlD+Ajda8iLLCSxjVIHvXib +y8posqTdDEx5YMaZ0ZPxMBoH064iwurO8YQJzOAUbn8/ftKChazcqRZOhaBgy/ac +18izju3Gm5h1DVXoX+WViwKkrkMpKBGk5hIwAUt1ax5mnXkvpXYvHUC0bcl9eQjs +0Wq2XSqypWa9a4X0dFbD9ed1Uigspf9mR6XU/v6eVL9lfgHWMI+lNpyiUBzuOIAB +SMbHdPTGrMNASRZhdCyvjG817XsYAFs2PJxQDcqSMxDxJklt33UkN4Ii1+iW/RVL +ApY+B3KVfqs9TC7XyvDf4Fg/LS8EmjijAQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUBpOjCl4oaTeqYR3r6/wtbyPk +86AwDQYJKoZIhvcNAQEMBQADggIBAJaAcgkGfpzMkwQWu6A6jZJOtxEaCnFxEM0E +rX+lRVAQZk5KQaID2RFPeje5S+LGjzJmdSX7684/AykmjbgWHfYfM25I5uj4V7Ib +ed87hwriZLoAymzvftAj63iP/2SbNDefNWWipAA9EiOWWF3KY4fGoweITedpdopT +zfFP7ELyk+OZpDc8h7hi2/DsHzc/N19DzFGdtfCXwreFamgLRB7lUe6TzktuhsHS +DCRZNhqfLJGP4xjblJUK7ZGqDpncllPjYYPGFrojutzdfhrGe0K22VoF3Jpf1d+4 +2kd92jjbrDnVHmtsKheMYc2xbXIBw8MgAGJoFjHVdqqGuw6qnsb58Nn4DSEC5MUo +FlkRudlpcyqSeLiSV5sI8jrlL5WwWLdrIBRtFO8KvH7YVdiI2i/6GaX7i+B/OfVy +K4XELKzvGUWSTLNhB9xNH27SgRNcmvMSZ4PPmz+Ln52kuaiWA3rF7iDeM9ovnhp6 +dB7h7sxaOgTdsxoEqBRjrLdHEoOabPXm6RUVkRqEGQ6UROcSjiVbgGcZ3GOTEAtl +Lor6CZpO2oYofaphNdgOpygau1LgePhsumywbrmHXumZNTfxPWQrqaA0k89jL9WB +365jJ6UeTo3cKXhZ+PmhIIynJkBugnLNeLLIjzwec+fBH7/PzqUqm9tEZDKgu39c +JRNItX+S +-----END CERTIFICATE----- + +# Issuer: CN=SecureSign Root CA15 O=Cybertrust Japan Co., Ltd. +# Subject: CN=SecureSign Root CA15 O=Cybertrust Japan Co., Ltd. +# Label: "SecureSign Root CA15" +# Serial: 126083514594751269499665114766174399806381178503 +# MD5 Fingerprint: 13:30:fc:c4:62:a6:a9:de:b5:c1:68:af:b5:d2:31:47 +# SHA1 Fingerprint: cb:ba:83:c8:c1:5a:5d:f1:f9:73:6f:ca:d7:ef:28:13:06:4a:07:7d +# SHA256 Fingerprint: e7:78:f0:f0:95:fe:84:37:29:cd:1a:00:82:17:9e:53:14:a9:c2:91:44:28:05:e1:fb:1d:8f:b6:b8:88:6c:3a +-----BEGIN CERTIFICATE----- +MIICIzCCAamgAwIBAgIUFhXHw9hJp75pDIqI7fBw+d23PocwCgYIKoZIzj0EAwMw +UTELMAkGA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBM +dGQuMR0wGwYDVQQDExRTZWN1cmVTaWduIFJvb3QgQ0ExNTAeFw0yMDA0MDgwODMy +NTZaFw00NTA0MDgwODMyNTZaMFExCzAJBgNVBAYTAkpQMSMwIQYDVQQKExpDeWJl +cnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2VjdXJlU2lnbiBSb290 +IENBMTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQLUHSNZDKZmbPSYAi4Io5GdCx4 +wCtELW1fHcmuS1Iggz24FG1Th2CeX2yF2wYUleDHKP+dX+Sq8bOLbe1PL0vJSpSR +ZHX+AezB2Ot6lHhWGENfa4HL9rzatAy2KZMIaY+jQjBAMA8GA1UdEwEB/wQFMAMB +Af8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTrQciu/NWeUUj1vYv0hyCTQSvT +9DAKBggqhkjOPQQDAwNoADBlAjEA2S6Jfl5OpBEHvVnCB96rMjhTKkZEBhd6zlHp +4P9mLQlO4E/0BdGF9jVg3PVys0Z9AjBEmEYagoUeYWmJSwdLZrWeqrqgHkHZAXQ6 +bkU6iYAZezKYVWOr62Nuk22rGwlgMU4= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST BR Root CA 2 2023 O=D-Trust GmbH +# Subject: CN=D-TRUST BR Root CA 2 2023 O=D-Trust GmbH +# Label: "D-TRUST BR Root CA 2 2023" +# Serial: 153168538924886464690566649552453098598 +# MD5 Fingerprint: e1:09:ed:d3:60:d4:56:1b:47:1f:b7:0c:5f:1b:5f:85 +# SHA1 Fingerprint: 2d:b0:70:ee:71:94:af:69:68:17:db:79:ce:58:9f:a0:6b:96:f7:87 +# SHA256 Fingerprint: 05:52:e6:f8:3f:df:65:e8:fa:96:70:e6:66:df:28:a4:e2:13:40:b5:10:cb:e5:25:66:f9:7c:4f:b9:4b:2b:d1 +-----BEGIN CERTIFICATE----- +MIIFqTCCA5GgAwIBAgIQczswBEhb2U14LnNLyaHcZjANBgkqhkiG9w0BAQ0FADBI +MQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlE +LVRSVVNUIEJSIFJvb3QgQ0EgMiAyMDIzMB4XDTIzMDUwOTA4NTYzMVoXDTM4MDUw +OTA4NTYzMFowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEi +MCAGA1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDIgMjAyMzCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBAK7/CVmRgApKaOYkP7in5Mg6CjoWzckjYaCTcfKr +i3OPoGdlYNJUa2NRb0kz4HIHE304zQaSBylSa053bATTlfrdTIzZXcFhfUvnKLNE +gXtRr90zsWh81k5M/itoucpmacTsXld/9w3HnDY25QdgrMBM6ghs7wZ8T1soegj8 +k12b9py0i4a6Ibn08OhZWiihNIQaJZG2tY/vsvmA+vk9PBFy2OMvhnbFeSzBqZCT +Rphny4NqoFAjpzv2gTng7fC5v2Xx2Mt6++9zA84A9H3X4F07ZrjcjrqDy4d2A/wl +2ecjbwb9Z/Pg/4S8R7+1FhhGaRTMBffb00msa8yr5LULQyReS2tNZ9/WtT5PeB+U +cSTq3nD88ZP+npNa5JRal1QMNXtfbO4AHyTsA7oC9Xb0n9Sa7YUsOCIvx9gvdhFP +/Wxc6PWOJ4d/GUohR5AdeY0cW/jPSoXk7bNbjb7EZChdQcRurDhaTyN0dKkSw/bS +uREVMweR2Ds3OmMwBtHFIjYoYiMQ4EbMl6zWK11kJNXuHA7e+whadSr2Y23OC0K+ +0bpwHJwh5Q8xaRfX/Aq03u2AnMuStIv13lmiWAmlY0cL4UEyNEHZmrHZqLAbWt4N +DfTisl01gLmB1IRpkQLLddCNxbU9CZEJjxShFHR5PtbJFR2kWVki3PaKRT08EtY+ +XTIvAgMBAAGjgY4wgYswDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUZ5Dw1t61 +GNVGKX5cq/ieCLxklRAwDgYDVR0PAQH/BAQDAgEGMEkGA1UdHwRCMEAwPqA8oDqG +OGh0dHA6Ly9jcmwuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3RfYnJfcm9vdF9jYV8y +XzIwMjMuY3JsMA0GCSqGSIb3DQEBDQUAA4ICAQA097N3U9swFrktpSHxQCF16+tI +FoE9c+CeJyrrd6kTpGoKWloUMz1oH4Guaf2Mn2VsNELZLdB/eBaxOqwjMa1ef67n +riv6uvw8l5VAk1/DLQOj7aRvU9f6QA4w9QAgLABMjDu0ox+2v5Eyq6+SmNMW5tTR +VFxDWy6u71cqqLRvpO8NVhTaIasgdp4D/Ca4nj8+AybmTNudX0KEPUUDAxxZiMrc +LmEkWqTqJwtzEr5SswrPMhfiHocaFpVIbVrg0M8JkiZmkdijYQ6qgYF/6FKC0ULn +4B0Y+qSFNueG4A3rvNTJ1jxD8V1Jbn6Bm2m1iWKPiFLY1/4nwSPFyysCu7Ff/vtD +hQNGvl3GyiEm/9cCnnRK3PgTFbGBVzbLZVzRHTF36SXDw7IyN9XxmAnkbWOACKsG +koHU6XCPpz+y7YaMgmo1yEJagtFSGkUPFaUA8JR7ZSdXOUPPfH/mvTWze/EZTN46 +ls/pdu4D58JDUjxqgejBWoC9EV2Ta/vH5mQ/u2kc6d0li690yVRAysuTEwrt+2aS +Ecr1wPrYg1UDfNPFIkZ1cGt5SAYqgpq/5usWDiJFAbzdNpQ0qTUmiteXue4Icr80 +knCDgKs4qllo3UCkGJCy89UDyibK79XH4I9TjvAA46jtn/mtd+ArY0+ew+43u3gJ +hJ65bvspmZDogNOfJA== +-----END CERTIFICATE----- + +# Issuer: CN=TrustAsia TLS ECC Root CA O=TrustAsia Technologies, Inc. +# Subject: CN=TrustAsia TLS ECC Root CA O=TrustAsia Technologies, Inc. +# Label: "TrustAsia TLS ECC Root CA" +# Serial: 310892014698942880364840003424242768478804666567 +# MD5 Fingerprint: 09:48:04:77:d2:fc:65:93:71:66:b1:11:95:4f:06:8c +# SHA1 Fingerprint: b5:ec:39:f3:a1:66:37:ae:c3:05:94:57:e2:be:11:be:b7:a1:7f:36 +# SHA256 Fingerprint: c0:07:6b:9e:f0:53:1f:b1:a6:56:d6:7c:4e:be:97:cd:5d:ba:a4:1e:f4:45:98:ac:c2:48:98:78:c9:2d:87:11 +-----BEGIN CERTIFICATE----- +MIICMTCCAbegAwIBAgIUNnThTXxlE8msg1UloD5Sfi9QaMcwCgYIKoZIzj0EAwMw +WDELMAkGA1UEBhMCQ04xJTAjBgNVBAoTHFRydXN0QXNpYSBUZWNobm9sb2dpZXMs +IEluYy4xIjAgBgNVBAMTGVRydXN0QXNpYSBUTFMgRUNDIFJvb3QgQ0EwHhcNMjQw +NTE1MDU0MTU2WhcNNDQwNTE1MDU0MTU1WjBYMQswCQYDVQQGEwJDTjElMCMGA1UE +ChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywgSW5jLjEiMCAGA1UEAxMZVHJ1c3RB +c2lhIFRMUyBFQ0MgUm9vdCBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABLh/pVs/ +AT598IhtrimY4ZtcU5nb9wj/1WrgjstEpvDBjL1P1M7UiFPoXlfXTr4sP/MSpwDp +guMqWzJ8S5sUKZ74LYO1644xST0mYekdcouJtgq7nDM1D9rs3qlKH8kzsaNCMEAw +DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQULIVTu7FDzTLqnqOH/qKYqKaT6RAw +DgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2gAMGUCMFRH18MtYYZI9HlaVQ01 +L18N9mdsd0AaRuf4aFtOJx24mH1/k78ITcTaRTChD15KeAIxAKORh/IRM4PDwYqR +OkwrULG9IpRdNYlzg8WbGf60oenUoWa2AaU2+dhoYSi3dOGiMQ== +-----END CERTIFICATE----- + +# Issuer: CN=TrustAsia TLS RSA Root CA O=TrustAsia Technologies, Inc. +# Subject: CN=TrustAsia TLS RSA Root CA O=TrustAsia Technologies, Inc. +# Label: "TrustAsia TLS RSA Root CA" +# Serial: 160405846464868906657516898462547310235378010780 +# MD5 Fingerprint: 3b:9e:c3:86:0f:34:3c:6b:c5:46:c4:8e:1d:e7:19:12 +# SHA1 Fingerprint: a5:46:50:c5:62:ea:95:9a:1a:a7:04:6f:17:58:c7:29:53:3d:03:fa +# SHA256 Fingerprint: 06:c0:8d:7d:af:d8:76:97:1e:b1:12:4f:e6:7f:84:7e:c0:c7:a1:58:d3:ea:53:cb:e9:40:e2:ea:97:91:f4:c3 +-----BEGIN CERTIFICATE----- +MIIFgDCCA2igAwIBAgIUHBjYz+VTPyI1RlNUJDxsR9FcSpwwDQYJKoZIhvcNAQEM +BQAwWDELMAkGA1UEBhMCQ04xJTAjBgNVBAoTHFRydXN0QXNpYSBUZWNobm9sb2dp +ZXMsIEluYy4xIjAgBgNVBAMTGVRydXN0QXNpYSBUTFMgUlNBIFJvb3QgQ0EwHhcN +MjQwNTE1MDU0MTU3WhcNNDQwNTE1MDU0MTU2WjBYMQswCQYDVQQGEwJDTjElMCMG +A1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywgSW5jLjEiMCAGA1UEAxMZVHJ1 +c3RBc2lhIFRMUyBSU0EgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC +AgoCggIBAMMWuBtqpERz5dZO9LnPWwvB0ZqB9WOwj0PBuwhaGnrhB3YmH49pVr7+ +NmDQDIPNlOrnxS1cLwUWAp4KqC/lYCZUlviYQB2srp10Zy9U+5RjmOMmSoPGlbYJ +Q1DNDX3eRA5gEk9bNb2/mThtfWza4mhzH/kxpRkQcwUqwzIZheo0qt1CHjCNP561 +HmHVb70AcnKtEj+qpklz8oYVlQwQX1Fkzv93uMltrOXVmPGZLmzjyUT5tUMnCE32 +ft5EebuyjBza00tsLtbDeLdM1aTk2tyKjg7/D8OmYCYozza/+lcK7Fs/6TAWe8Tb +xNRkoDD75f0dcZLdKY9BWN4ArTr9PXwaqLEX8E40eFgl1oUh63kd0Nyrz2I8sMeX +i9bQn9P+PN7F4/w6g3CEIR0JwqH8uyghZVNgepBtljhb//HXeltt08lwSUq6HTrQ +UNoyIBnkiz/r1RYmNzz7dZ6wB3C4FGB33PYPXFIKvF1tjVEK2sUYyJtt3LCDs3+j +TnhMmCWr8n4uIF6CFabW2I+s5c0yhsj55NqJ4js+k8UTav/H9xj8Z7XvGCxUq0DT +bE3txci3OE9kxJRMT6DNrqXGJyV1J23G2pyOsAWZ1SgRxSHUuPzHlqtKZFlhaxP8 +S8ySpg+kUb8OWJDZgoM5pl+z+m6Ss80zDoWo8SnTq1mt1tve1CuBAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFLgHkXlcBvRG/XtZylomkadFK/hT +MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQwFAAOCAgEAIZtqBSBdGBanEqT3 +Rz/NyjuujsCCztxIJXgXbODgcMTWltnZ9r96nBO7U5WS/8+S4PPFJzVXqDuiGev4 +iqME3mmL5Dw8veWv0BIb5Ylrc5tvJQJLkIKvQMKtuppgJFqBTQUYo+IzeXoLH5Pt +7DlK9RME7I10nYEKqG/odv6LTytpEoYKNDbdgptvT+Bz3Ul/KD7JO6NXBNiT2Twp +2xIQaOHEibgGIOcberyxk2GaGUARtWqFVwHxtlotJnMnlvm5P1vQiJ3koP26TpUJ +g3933FEFlJ0gcXax7PqJtZwuhfG5WyRasQmr2soaB82G39tp27RIGAAtvKLEiUUj +pQ7hRGU+isFqMB3iYPg6qocJQrmBktwliJiJ8Xw18WLK7nn4GS/+X/jbh87qqA8M +pugLoDzga5SYnH+tBuYc6kIQX+ImFTw3OffXvO645e8D7r0i+yiGNFjEWn9hongP +XvPKnbwbPKfILfanIhHKA9jnZwqKDss1jjQ52MjqjZ9k4DewbNfFj8GQYSbbJIwe +SsCI3zWQzj8C9GRh3sfIB5XeMhg6j6JCQCTl1jNdfK7vsU1P1FeQNWrcrgSXSYk0 +ly4wBOeY99sLAZDBHwo/+ML+TvrbmnNzFrwFuHnYWa8G5z9nODmxfKuU4CkUpijy +323imttUQ/hHWKNddBWcwauwxzQ= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST EV Root CA 2 2023 O=D-Trust GmbH +# Subject: CN=D-TRUST EV Root CA 2 2023 O=D-Trust GmbH +# Label: "D-TRUST EV Root CA 2 2023" +# Serial: 139766439402180512324132425437959641711 +# MD5 Fingerprint: 96:b4:78:09:f0:09:cb:77:eb:bb:1b:4d:6f:36:bc:b6 +# SHA1 Fingerprint: a5:5b:d8:47:6c:8f:19:f7:4c:f4:6d:6b:b6:c2:79:82:22:df:54:8b +# SHA256 Fingerprint: 8e:82:21:b2:e7:d4:00:78:36:a1:67:2f:0d:cc:29:9c:33:bc:07:d3:16:f1:32:fa:1a:20:6d:58:71:50:f1:ce +-----BEGIN CERTIFICATE----- +MIIFqTCCA5GgAwIBAgIQaSYJfoBLTKCnjHhiU19abzANBgkqhkiG9w0BAQ0FADBI +MQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlE +LVRSVVNUIEVWIFJvb3QgQ0EgMiAyMDIzMB4XDTIzMDUwOTA5MTAzM1oXDTM4MDUw +OTA5MTAzMlowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEi +MCAGA1UEAxMZRC1UUlVTVCBFViBSb290IENBIDIgMjAyMzCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBANiOo4mAC7JXUtypU0w3uX9jFxPvp1sjW2l1sJkK +F8GLxNuo4MwxusLyzV3pt/gdr2rElYfXR8mV2IIEUD2BCP/kPbOx1sWy/YgJ25yE +7CUXFId/MHibaljJtnMoPDT3mfd/06b4HEV8rSyMlD/YZxBTfiLNTiVR8CUkNRFe +EMbsh2aJgWi6zCudR3Mfvc2RpHJqnKIbGKBv7FD0fUDCqDDPvXPIEysQEx6Lmqg6 +lHPTGGkKSv/BAQP/eX+1SH977ugpbzZMlWGG2Pmic4ruri+W7mjNPU0oQvlFKzIb +RlUWaqZLKfm7lVa/Rh3sHZMdwGWyH6FDrlaeoLGPaxK3YG14C8qKXO0elg6DpkiV +jTujIcSuWMYAsoS0I6SWhjW42J7YrDRJmGOVxcttSEfi8i4YHtAxq9107PncjLgc +jmgjutDzUNzPZY9zOjLHfP7KgiJPvo5iR2blzYfi6NUPGJ/lBHJLRjwQ8kTCZFZx +TnXonMkmdMV9WdEKWw9t/p51HBjGGjp82A0EzM23RWV6sY+4roRIPrN6TagD4uJ+ +ARZZaBhDM7DS3LAaQzXupdqpRlyuhoFBAUp0JuyfBr/CBTdkdXgpaP3F9ev+R/nk +hbDhezGdpn9yo7nELC7MmVcOIQxFAZRl62UJxmMiCzNJkkg8/M3OsD6Onov4/knF +NXJHAgMBAAGjgY4wgYswDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUqvyREBuH +kV8Wub9PS5FeAByxMoAwDgYDVR0PAQH/BAQDAgEGMEkGA1UdHwRCMEAwPqA8oDqG +OGh0dHA6Ly9jcmwuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3RfZXZfcm9vdF9jYV8y +XzIwMjMuY3JsMA0GCSqGSIb3DQEBDQUAA4ICAQCTy6UfmRHsmg1fLBWTxj++EI14 +QvBukEdHjqOSMo1wj/Zbjb6JzkcBahsgIIlbyIIQbODnmaprxiqgYzWRaoUlrRc4 +pZt+UPJ26oUFKidBK7GB0aL2QHWpDsvxVUjY7NHss+jOFKE17MJeNRqrphYBBo7q +3C+jisosketSjl8MmxfPy3MHGcRqwnNU73xDUmPBEcrCRbH0O1P1aa4846XerOhU +t7KR/aypH/KH5BfGSah82ApB9PI+53c0BFLd6IHyTS9URZ0V4U/M5d40VxDJI3IX +cI1QcB9WbMy5/zpaT2N6w25lBx2Eof+pDGOJbbJAiDnXH3dotfyc1dZnaVuodNv8 +ifYbMvekJKZ2t0dT741Jj6m2g1qllpBFYfXeA08mD6iL8AOWsKwV0HFaanuU5nCT +2vFp4LJiTZ6P/4mdm13NRemUAiKN4DV/6PEEeXFsVIP4M7kFMhtYVRFP0OUnR3Hs +7dpn1mKmS00PaaLJvOwiS5THaJQXfuKOKD62xur1NGyfN4gHONuGcfrNlUhDbqNP +gofXNJhuS5N5YHVpD/Aa1VP6IQzCP+k/HxiMkl14p3ZnGbuy6n/pcAlWVqOwDAst +Nl7F6cTVg8uGF5csbBNvh1qvSaYd2804BC5f4ko1Di1L+KIkBI3Y4WNeApI02phh +XBxvWHZks/wCuPWdCg== +-----END CERTIFICATE----- + +# Issuer: CN=SwissSign RSA TLS Root CA 2022 - 1 O=SwissSign AG +# Subject: CN=SwissSign RSA TLS Root CA 2022 - 1 O=SwissSign AG +# Label: "SwissSign RSA TLS Root CA 2022 - 1" +# Serial: 388078645722908516278762308316089881486363258315 +# MD5 Fingerprint: 16:2e:e4:19:76:81:85:ba:8e:91:58:f1:15:ef:72:39 +# SHA1 Fingerprint: 81:34:0a:be:4c:cd:ce:cc:e7:7d:cc:8a:d4:57:e2:45:a0:77:5d:ce +# SHA256 Fingerprint: 19:31:44:f4:31:e0:fd:db:74:07:17:d4:de:92:6a:57:11:33:88:4b:43:60:d3:0e:27:29:13:cb:e6:60:ce:41 +-----BEGIN CERTIFICATE----- +MIIFkzCCA3ugAwIBAgIUQ/oMX04bgBhE79G0TzUfRPSA7cswDQYJKoZIhvcNAQEL +BQAwUTELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzErMCkGA1UE +AxMiU3dpc3NTaWduIFJTQSBUTFMgUm9vdCBDQSAyMDIyIC0gMTAeFw0yMjA2MDgx +MTA4MjJaFw00NzA2MDgxMTA4MjJaMFExCzAJBgNVBAYTAkNIMRUwEwYDVQQKEwxT +d2lzc1NpZ24gQUcxKzApBgNVBAMTIlN3aXNzU2lnbiBSU0EgVExTIFJvb3QgQ0Eg +MjAyMiAtIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDLKmjiC8NX +vDVjvHClO/OMPE5Xlm7DTjak9gLKHqquuN6orx122ro10JFwB9+zBvKK8i5VUXu7 +LCTLf5ImgKO0lPaCoaTo+nUdWfMHamFk4saMla+ju45vVs9xzF6BYQ1t8qsCLqSX +5XH8irCRIFucdFJtrhUnWXjyCcplDn/L9Ovn3KlMd/YrFgSVrpxxpT8q2kFC5zyE +EPThPYxr4iuRR1VPuFa+Rd4iUU1OKNlfGUEGjw5NBuBwQCMBauTLE5tzrE0USJIt +/m2n+IdreXXhvhCxqohAWVTXz8TQm0SzOGlkjIHRI36qOTw7D59Ke4LKa2/KIj4x +0LDQKhySio/YGZxH5D4MucLNvkEM+KRHBdvBFzA4OmnczcNpI/2aDwLOEGrOyvi5 +KaM2iYauC8BPY7kGWUleDsFpswrzd34unYyzJ5jSmY0lpx+Gs6ZUcDj8fV3oT4MM +0ZPlEuRU2j7yrTrePjxF8CgPBrnh25d7mUWe3f6VWQQvdT/TromZhqwUtKiE+shd +OxtYk8EXlFXIC+OCeYSf8wCENO7cMdWP8vpPlkwGqnj73mSiI80fPsWMvDdUDrta +clXvyFu1cvh43zcgTFeRc5JzrBh3Q4IgaezprClG5QtO+DdziZaKHG29777YtvTK +wP1H8K4LWCDFyB02rpeNUIMmJCn3nTsPBQIDAQABo2MwYTAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBRvjmKLk0Ow4UD2p8P98Q+4 +DxU4pTAdBgNVHQ4EFgQUb45ii5NDsOFA9qfD/fEPuA8VOKUwDQYJKoZIhvcNAQEL +BQADggIBAKwsKUF9+lz1GpUYvyypiqkkVHX1uECry6gkUSsYP2OprphWKwVDIqO3 +10aewCoSPY6WlkDfDDOLazeROpW7OSltwAJsipQLBwJNGD77+3v1dj2b9l4wBlgz +Hqp41eZUBDqyggmNzhYzWUUo8aWjlw5DI/0LIICQ/+Mmz7hkkeUFjxOgdg3XNwwQ +iJb0Pr6VvfHDffCjw3lHC1ySFWPtUnWK50Zpy1FVCypM9fJkT6lc/2cyjlUtMoIc +gC9qkfjLvH4YoiaoLqNTKIftV+Vlek4ASltOU8liNr3CjlvrzG4ngRhZi0Rjn9UM +ZfQpZX+RLOV/fuiJz48gy20HQhFRJjKKLjpHE7iNvUcNCfAWpO2Whi4Z2L6MOuhF +LhG6rlrnub+xzI/goP+4s9GFe3lmozm1O2bYQL7Pt2eLSMkZJVX8vY3PXtpOpvJp +zv1/THfQwUY1mFwjmwJFQ5Ra3bxHrSL+ul4vkSkphnsh3m5kt8sNjzdbowhq6/Td +Ao9QAwKxuDdollDruF/UKIqlIgyKhPBZLtU30WHlQnNYKoH3dtvi4k0NX/a3vgW0 +rk4N3hY9A4GzJl5LuEsAz/+MF7psYC0nhzck5npgL7XTgwSqT0N1osGDsieYK7EO +gLrAhV5Cud+xYJHT6xh+cHiudoO+cVrQkOPKwRYlZ0rwtnu64ZzZ +-----END CERTIFICATE----- diff --git a/frogpilot/third_party/certifi/core.py b/frogpilot/third_party/certifi/core.py new file mode 100644 index 000000000..1c9661cc7 --- /dev/null +++ b/frogpilot/third_party/certifi/core.py @@ -0,0 +1,83 @@ +""" +certifi.py +~~~~~~~~~~ + +This module returns the installation location of cacert.pem or its contents. +""" +import sys +import atexit + +def exit_cacert_ctx() -> None: + _CACERT_CTX.__exit__(None, None, None) # type: ignore[union-attr] + + +if sys.version_info >= (3, 11): + + from importlib.resources import as_file, files + + _CACERT_CTX = None + _CACERT_PATH = None + + def where() -> str: + # This is slightly terrible, but we want to delay extracting the file + # in cases where we're inside of a zipimport situation until someone + # actually calls where(), but we don't want to re-extract the file + # on every call of where(), so we'll do it once then store it in a + # global variable. + global _CACERT_CTX + global _CACERT_PATH + if _CACERT_PATH is None: + # This is slightly janky, the importlib.resources API wants you to + # manage the cleanup of this file, so it doesn't actually return a + # path, it returns a context manager that will give you the path + # when you enter it and will do any cleanup when you leave it. In + # the common case of not needing a temporary file, it will just + # return the file system location and the __exit__() is a no-op. + # + # We also have to hold onto the actual context manager, because + # it will do the cleanup whenever it gets garbage collected, so + # we will also store that at the global level as well. + _CACERT_CTX = as_file(files("certifi").joinpath("cacert.pem")) + _CACERT_PATH = str(_CACERT_CTX.__enter__()) + atexit.register(exit_cacert_ctx) + + return _CACERT_PATH + + def contents() -> str: + return files("certifi").joinpath("cacert.pem").read_text(encoding="ascii") + +else: + + from importlib.resources import path as get_path, read_text + + _CACERT_CTX = None + _CACERT_PATH = None + + def where() -> str: + # This is slightly terrible, but we want to delay extracting the + # file in cases where we're inside of a zipimport situation until + # someone actually calls where(), but we don't want to re-extract + # the file on every call of where(), so we'll do it once then store + # it in a global variable. + global _CACERT_CTX + global _CACERT_PATH + if _CACERT_PATH is None: + # This is slightly janky, the importlib.resources API wants you + # to manage the cleanup of this file, so it doesn't actually + # return a path, it returns a context manager that will give + # you the path when you enter it and will do any cleanup when + # you leave it. In the common case of not needing a temporary + # file, it will just return the file system location and the + # __exit__() is a no-op. + # + # We also have to hold onto the actual context manager, because + # it will do the cleanup whenever it gets garbage collected, so + # we will also store that at the global level as well. + _CACERT_CTX = get_path("certifi", "cacert.pem") + _CACERT_PATH = str(_CACERT_CTX.__enter__()) + atexit.register(exit_cacert_ctx) + + return _CACERT_PATH + + def contents() -> str: + return read_text("certifi", "cacert.pem", encoding="ascii") diff --git a/frogpilot/third_party/certifi/py.typed b/frogpilot/third_party/certifi/py.typed new file mode 100644 index 000000000..e69de29bb diff --git a/frogpilot/third_party/dateutil/__init__.py b/frogpilot/third_party/dateutil/__init__.py new file mode 100644 index 000000000..a2c19c06f --- /dev/null +++ b/frogpilot/third_party/dateutil/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +import sys + +try: + from ._version import version as __version__ +except ImportError: + __version__ = 'unknown' + +__all__ = ['easter', 'parser', 'relativedelta', 'rrule', 'tz', + 'utils', 'zoneinfo'] + +def __getattr__(name): + import importlib + + if name in __all__: + return importlib.import_module("." + name, __name__) + raise AttributeError( + "module {!r} has not attribute {!r}".format(__name__, name) + ) + + +def __dir__(): + # __dir__ should include all the lazy-importable modules as well. + return [x for x in globals() if x not in sys.modules] + __all__ diff --git a/frogpilot/third_party/dateutil/_common.py b/frogpilot/third_party/dateutil/_common.py new file mode 100644 index 000000000..4eb2659bd --- /dev/null +++ b/frogpilot/third_party/dateutil/_common.py @@ -0,0 +1,43 @@ +""" +Common code used in multiple modules. +""" + + +class weekday(object): + __slots__ = ["weekday", "n"] + + def __init__(self, weekday, n=None): + self.weekday = weekday + self.n = n + + def __call__(self, n): + if n == self.n: + return self + else: + return self.__class__(self.weekday, n) + + def __eq__(self, other): + try: + if self.weekday != other.weekday or self.n != other.n: + return False + except AttributeError: + return False + return True + + def __hash__(self): + return hash(( + self.weekday, + self.n, + )) + + def __ne__(self, other): + return not (self == other) + + def __repr__(self): + s = ("MO", "TU", "WE", "TH", "FR", "SA", "SU")[self.weekday] + if not self.n: + return s + else: + return "%s(%+d)" % (s, self.n) + +# vim:ts=4:sw=4:et diff --git a/frogpilot/third_party/dateutil/_version.py b/frogpilot/third_party/dateutil/_version.py new file mode 100644 index 000000000..ddda98098 --- /dev/null +++ b/frogpilot/third_party/dateutil/_version.py @@ -0,0 +1,4 @@ +# file generated by setuptools_scm +# don't change, don't track in version control +__version__ = version = '2.9.0.post0' +__version_tuple__ = version_tuple = (2, 9, 0) diff --git a/frogpilot/third_party/dateutil/easter.py b/frogpilot/third_party/dateutil/easter.py new file mode 100644 index 000000000..f74d1f744 --- /dev/null +++ b/frogpilot/third_party/dateutil/easter.py @@ -0,0 +1,89 @@ +# -*- coding: utf-8 -*- +""" +This module offers a generic Easter computing method for any given year, using +Western, Orthodox or Julian algorithms. +""" + +import datetime + +__all__ = ["easter", "EASTER_JULIAN", "EASTER_ORTHODOX", "EASTER_WESTERN"] + +EASTER_JULIAN = 1 +EASTER_ORTHODOX = 2 +EASTER_WESTERN = 3 + + +def easter(year, method=EASTER_WESTERN): + """ + This method was ported from the work done by GM Arts, + on top of the algorithm by Claus Tondering, which was + based in part on the algorithm of Ouding (1940), as + quoted in "Explanatory Supplement to the Astronomical + Almanac", P. Kenneth Seidelmann, editor. + + This algorithm implements three different Easter + calculation methods: + + 1. Original calculation in Julian calendar, valid in + dates after 326 AD + 2. Original method, with date converted to Gregorian + calendar, valid in years 1583 to 4099 + 3. Revised method, in Gregorian calendar, valid in + years 1583 to 4099 as well + + These methods are represented by the constants: + + * ``EASTER_JULIAN = 1`` + * ``EASTER_ORTHODOX = 2`` + * ``EASTER_WESTERN = 3`` + + The default method is method 3. + + More about the algorithm may be found at: + + `GM Arts: Easter Algorithms `_ + + and + + `The Calendar FAQ: Easter `_ + + """ + + if not (1 <= method <= 3): + raise ValueError("invalid method") + + # g - Golden year - 1 + # c - Century + # h - (23 - Epact) mod 30 + # i - Number of days from March 21 to Paschal Full Moon + # j - Weekday for PFM (0=Sunday, etc) + # p - Number of days from March 21 to Sunday on or before PFM + # (-6 to 28 methods 1 & 3, to 56 for method 2) + # e - Extra days to add for method 2 (converting Julian + # date to Gregorian date) + + y = year + g = y % 19 + e = 0 + if method < 3: + # Old method + i = (19*g + 15) % 30 + j = (y + y//4 + i) % 7 + if method == 2: + # Extra dates to convert Julian to Gregorian date + e = 10 + if y > 1600: + e = e + y//100 - 16 - (y//100 - 16)//4 + else: + # New method + c = y//100 + h = (c - c//4 - (8*c + 13)//25 + 19*g + 15) % 30 + i = h - (h//28)*(1 - (h//28)*(29//(h + 1))*((21 - g)//11)) + j = (y + y//4 + i + 2 - c + c//4) % 7 + + # p can be from -6 to 56 corresponding to dates 22 March to 23 May + # (later dates apply to method 2, although 23 May never actually occurs) + p = i - j + e + d = 1 + (p + 27 + (p + 6)//40) % 31 + m = 3 + (p + 26)//30 + return datetime.date(int(y), int(m), int(d)) diff --git a/frogpilot/third_party/dateutil/parser/__init__.py b/frogpilot/third_party/dateutil/parser/__init__.py new file mode 100644 index 000000000..d174b0e4d --- /dev/null +++ b/frogpilot/third_party/dateutil/parser/__init__.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +from ._parser import parse, parser, parserinfo, ParserError +from ._parser import DEFAULTPARSER, DEFAULTTZPARSER +from ._parser import UnknownTimezoneWarning + +from ._parser import __doc__ + +from .isoparser import isoparser, isoparse + +__all__ = ['parse', 'parser', 'parserinfo', + 'isoparse', 'isoparser', + 'ParserError', + 'UnknownTimezoneWarning'] + + +### +# Deprecate portions of the private interface so that downstream code that +# is improperly relying on it is given *some* notice. + + +def __deprecated_private_func(f): + from functools import wraps + import warnings + + msg = ('{name} is a private function and may break without warning, ' + 'it will be moved and or renamed in future versions.') + msg = msg.format(name=f.__name__) + + @wraps(f) + def deprecated_func(*args, **kwargs): + warnings.warn(msg, DeprecationWarning) + return f(*args, **kwargs) + + return deprecated_func + +def __deprecate_private_class(c): + import warnings + + msg = ('{name} is a private class and may break without warning, ' + 'it will be moved and or renamed in future versions.') + msg = msg.format(name=c.__name__) + + class private_class(c): + __doc__ = c.__doc__ + + def __init__(self, *args, **kwargs): + warnings.warn(msg, DeprecationWarning) + super(private_class, self).__init__(*args, **kwargs) + + private_class.__name__ = c.__name__ + + return private_class + + +from ._parser import _timelex, _resultbase +from ._parser import _tzparser, _parsetz + +_timelex = __deprecate_private_class(_timelex) +_tzparser = __deprecate_private_class(_tzparser) +_resultbase = __deprecate_private_class(_resultbase) +_parsetz = __deprecated_private_func(_parsetz) diff --git a/frogpilot/third_party/dateutil/parser/_parser.py b/frogpilot/third_party/dateutil/parser/_parser.py new file mode 100644 index 000000000..37d1663b2 --- /dev/null +++ b/frogpilot/third_party/dateutil/parser/_parser.py @@ -0,0 +1,1613 @@ +# -*- coding: utf-8 -*- +""" +This module offers a generic date/time string parser which is able to parse +most known formats to represent a date and/or time. + +This module attempts to be forgiving with regards to unlikely input formats, +returning a datetime object even for dates which are ambiguous. If an element +of a date/time stamp is omitted, the following rules are applied: + +- If AM or PM is left unspecified, a 24-hour clock is assumed, however, an hour + on a 12-hour clock (``0 <= hour <= 12``) *must* be specified if AM or PM is + specified. +- If a time zone is omitted, a timezone-naive datetime is returned. + +If any other elements are missing, they are taken from the +:class:`datetime.datetime` object passed to the parameter ``default``. If this +results in a day number exceeding the valid number of days per month, the +value falls back to the end of the month. + +Additional resources about date/time string formats can be found below: + +- `A summary of the international standard date and time notation + `_ +- `W3C Date and Time Formats `_ +- `Time Formats (Planetary Rings Node) `_ +- `CPAN ParseDate module + `_ +- `Java SimpleDateFormat Class + `_ +""" +from __future__ import unicode_literals + +import datetime +import re +import string +import time +import warnings + +from calendar import monthrange +from io import StringIO + +import six +from six import integer_types, text_type + +from decimal import Decimal + +from warnings import warn + +from .. import relativedelta +from .. import tz + +__all__ = ["parse", "parserinfo", "ParserError"] + + +# TODO: pandas.core.tools.datetimes imports this explicitly. Might be worth +# making public and/or figuring out if there is something we can +# take off their plate. +class _timelex(object): + # Fractional seconds are sometimes split by a comma + _split_decimal = re.compile("([.,])") + + def __init__(self, instream): + if isinstance(instream, (bytes, bytearray)): + instream = instream.decode() + + if isinstance(instream, text_type): + instream = StringIO(instream) + elif getattr(instream, 'read', None) is None: + raise TypeError('Parser must be a string or character stream, not ' + '{itype}'.format(itype=instream.__class__.__name__)) + + self.instream = instream + self.charstack = [] + self.tokenstack = [] + self.eof = False + + def get_token(self): + """ + This function breaks the time string into lexical units (tokens), which + can be parsed by the parser. Lexical units are demarcated by changes in + the character set, so any continuous string of letters is considered + one unit, any continuous string of numbers is considered one unit. + + The main complication arises from the fact that dots ('.') can be used + both as separators (e.g. "Sep.20.2009") or decimal points (e.g. + "4:30:21.447"). As such, it is necessary to read the full context of + any dot-separated strings before breaking it into tokens; as such, this + function maintains a "token stack", for when the ambiguous context + demands that multiple tokens be parsed at once. + """ + if self.tokenstack: + return self.tokenstack.pop(0) + + seenletters = False + token = None + state = None + + while not self.eof: + # We only realize that we've reached the end of a token when we + # find a character that's not part of the current token - since + # that character may be part of the next token, it's stored in the + # charstack. + if self.charstack: + nextchar = self.charstack.pop(0) + else: + nextchar = self.instream.read(1) + while nextchar == '\x00': + nextchar = self.instream.read(1) + + if not nextchar: + self.eof = True + break + elif not state: + # First character of the token - determines if we're starting + # to parse a word, a number or something else. + token = nextchar + if self.isword(nextchar): + state = 'a' + elif self.isnum(nextchar): + state = '0' + elif self.isspace(nextchar): + token = ' ' + break # emit token + else: + break # emit token + elif state == 'a': + # If we've already started reading a word, we keep reading + # letters until we find something that's not part of a word. + seenletters = True + if self.isword(nextchar): + token += nextchar + elif nextchar == '.': + token += nextchar + state = 'a.' + else: + self.charstack.append(nextchar) + break # emit token + elif state == '0': + # If we've already started reading a number, we keep reading + # numbers until we find something that doesn't fit. + if self.isnum(nextchar): + token += nextchar + elif nextchar == '.' or (nextchar == ',' and len(token) >= 2): + token += nextchar + state = '0.' + else: + self.charstack.append(nextchar) + break # emit token + elif state == 'a.': + # If we've seen some letters and a dot separator, continue + # parsing, and the tokens will be broken up later. + seenletters = True + if nextchar == '.' or self.isword(nextchar): + token += nextchar + elif self.isnum(nextchar) and token[-1] == '.': + token += nextchar + state = '0.' + else: + self.charstack.append(nextchar) + break # emit token + elif state == '0.': + # If we've seen at least one dot separator, keep going, we'll + # break up the tokens later. + if nextchar == '.' or self.isnum(nextchar): + token += nextchar + elif self.isword(nextchar) and token[-1] == '.': + token += nextchar + state = 'a.' + else: + self.charstack.append(nextchar) + break # emit token + + if (state in ('a.', '0.') and (seenletters or token.count('.') > 1 or + token[-1] in '.,')): + l = self._split_decimal.split(token) + token = l[0] + for tok in l[1:]: + if tok: + self.tokenstack.append(tok) + + if state == '0.' and token.count('.') == 0: + token = token.replace(',', '.') + + return token + + def __iter__(self): + return self + + def __next__(self): + token = self.get_token() + if token is None: + raise StopIteration + + return token + + def next(self): + return self.__next__() # Python 2.x support + + @classmethod + def split(cls, s): + return list(cls(s)) + + @classmethod + def isword(cls, nextchar): + """ Whether or not the next character is part of a word """ + return nextchar.isalpha() + + @classmethod + def isnum(cls, nextchar): + """ Whether the next character is part of a number """ + return nextchar.isdigit() + + @classmethod + def isspace(cls, nextchar): + """ Whether the next character is whitespace """ + return nextchar.isspace() + + +class _resultbase(object): + + def __init__(self): + for attr in self.__slots__: + setattr(self, attr, None) + + def _repr(self, classname): + l = [] + for attr in self.__slots__: + value = getattr(self, attr) + if value is not None: + l.append("%s=%s" % (attr, repr(value))) + return "%s(%s)" % (classname, ", ".join(l)) + + def __len__(self): + return (sum(getattr(self, attr) is not None + for attr in self.__slots__)) + + def __repr__(self): + return self._repr(self.__class__.__name__) + + +class parserinfo(object): + """ + Class which handles what inputs are accepted. Subclass this to customize + the language and acceptable values for each parameter. + + :param dayfirst: + Whether to interpret the first value in an ambiguous 3-integer date + (e.g. 01/05/09) as the day (``True``) or month (``False``). If + ``yearfirst`` is set to ``True``, this distinguishes between YDM + and YMD. Default is ``False``. + + :param yearfirst: + Whether to interpret the first value in an ambiguous 3-integer date + (e.g. 01/05/09) as the year. If ``True``, the first number is taken + to be the year, otherwise the last number is taken to be the year. + Default is ``False``. + """ + + # m from a.m/p.m, t from ISO T separator + JUMP = [" ", ".", ",", ";", "-", "/", "'", + "at", "on", "and", "ad", "m", "t", "of", + "st", "nd", "rd", "th"] + + WEEKDAYS = [("Mon", "Monday"), + ("Tue", "Tuesday"), # TODO: "Tues" + ("Wed", "Wednesday"), + ("Thu", "Thursday"), # TODO: "Thurs" + ("Fri", "Friday"), + ("Sat", "Saturday"), + ("Sun", "Sunday")] + MONTHS = [("Jan", "January"), + ("Feb", "February"), # TODO: "Febr" + ("Mar", "March"), + ("Apr", "April"), + ("May", "May"), + ("Jun", "June"), + ("Jul", "July"), + ("Aug", "August"), + ("Sep", "Sept", "September"), + ("Oct", "October"), + ("Nov", "November"), + ("Dec", "December")] + HMS = [("h", "hour", "hours"), + ("m", "minute", "minutes"), + ("s", "second", "seconds")] + AMPM = [("am", "a"), + ("pm", "p")] + UTCZONE = ["UTC", "GMT", "Z", "z"] + PERTAIN = ["of"] + TZOFFSET = {} + # TODO: ERA = ["AD", "BC", "CE", "BCE", "Stardate", + # "Anno Domini", "Year of Our Lord"] + + def __init__(self, dayfirst=False, yearfirst=False): + self._jump = self._convert(self.JUMP) + self._weekdays = self._convert(self.WEEKDAYS) + self._months = self._convert(self.MONTHS) + self._hms = self._convert(self.HMS) + self._ampm = self._convert(self.AMPM) + self._utczone = self._convert(self.UTCZONE) + self._pertain = self._convert(self.PERTAIN) + + self.dayfirst = dayfirst + self.yearfirst = yearfirst + + self._year = time.localtime().tm_year + self._century = self._year // 100 * 100 + + def _convert(self, lst): + dct = {} + for i, v in enumerate(lst): + if isinstance(v, tuple): + for v in v: + dct[v.lower()] = i + else: + dct[v.lower()] = i + return dct + + def jump(self, name): + return name.lower() in self._jump + + def weekday(self, name): + try: + return self._weekdays[name.lower()] + except KeyError: + pass + return None + + def month(self, name): + try: + return self._months[name.lower()] + 1 + except KeyError: + pass + return None + + def hms(self, name): + try: + return self._hms[name.lower()] + except KeyError: + return None + + def ampm(self, name): + try: + return self._ampm[name.lower()] + except KeyError: + return None + + def pertain(self, name): + return name.lower() in self._pertain + + def utczone(self, name): + return name.lower() in self._utczone + + def tzoffset(self, name): + if name in self._utczone: + return 0 + + return self.TZOFFSET.get(name) + + def convertyear(self, year, century_specified=False): + """ + Converts two-digit years to year within [-50, 49] + range of self._year (current local time) + """ + + # Function contract is that the year is always positive + assert year >= 0 + + if year < 100 and not century_specified: + # assume current century to start + year += self._century + + if year >= self._year + 50: # if too far in future + year -= 100 + elif year < self._year - 50: # if too far in past + year += 100 + + return year + + def validate(self, res): + # move to info + if res.year is not None: + res.year = self.convertyear(res.year, res.century_specified) + + if ((res.tzoffset == 0 and not res.tzname) or + (res.tzname == 'Z' or res.tzname == 'z')): + res.tzname = "UTC" + res.tzoffset = 0 + elif res.tzoffset != 0 and res.tzname and self.utczone(res.tzname): + res.tzoffset = 0 + return True + + +class _ymd(list): + def __init__(self, *args, **kwargs): + super(self.__class__, self).__init__(*args, **kwargs) + self.century_specified = False + self.dstridx = None + self.mstridx = None + self.ystridx = None + + @property + def has_year(self): + return self.ystridx is not None + + @property + def has_month(self): + return self.mstridx is not None + + @property + def has_day(self): + return self.dstridx is not None + + def could_be_day(self, value): + if self.has_day: + return False + elif not self.has_month: + return 1 <= value <= 31 + elif not self.has_year: + # Be permissive, assume leap year + month = self[self.mstridx] + return 1 <= value <= monthrange(2000, month)[1] + else: + month = self[self.mstridx] + year = self[self.ystridx] + return 1 <= value <= monthrange(year, month)[1] + + def append(self, val, label=None): + if hasattr(val, '__len__'): + if val.isdigit() and len(val) > 2: + self.century_specified = True + if label not in [None, 'Y']: # pragma: no cover + raise ValueError(label) + label = 'Y' + elif val > 100: + self.century_specified = True + if label not in [None, 'Y']: # pragma: no cover + raise ValueError(label) + label = 'Y' + + super(self.__class__, self).append(int(val)) + + if label == 'M': + if self.has_month: + raise ValueError('Month is already set') + self.mstridx = len(self) - 1 + elif label == 'D': + if self.has_day: + raise ValueError('Day is already set') + self.dstridx = len(self) - 1 + elif label == 'Y': + if self.has_year: + raise ValueError('Year is already set') + self.ystridx = len(self) - 1 + + def _resolve_from_stridxs(self, strids): + """ + Try to resolve the identities of year/month/day elements using + ystridx, mstridx, and dstridx, if enough of these are specified. + """ + if len(self) == 3 and len(strids) == 2: + # we can back out the remaining stridx value + missing = [x for x in range(3) if x not in strids.values()] + key = [x for x in ['y', 'm', 'd'] if x not in strids] + assert len(missing) == len(key) == 1 + key = key[0] + val = missing[0] + strids[key] = val + + assert len(self) == len(strids) # otherwise this should not be called + out = {key: self[strids[key]] for key in strids} + return (out.get('y'), out.get('m'), out.get('d')) + + def resolve_ymd(self, yearfirst, dayfirst): + len_ymd = len(self) + year, month, day = (None, None, None) + + strids = (('y', self.ystridx), + ('m', self.mstridx), + ('d', self.dstridx)) + + strids = {key: val for key, val in strids if val is not None} + if (len(self) == len(strids) > 0 or + (len(self) == 3 and len(strids) == 2)): + return self._resolve_from_stridxs(strids) + + mstridx = self.mstridx + + if len_ymd > 3: + raise ValueError("More than three YMD values") + elif len_ymd == 1 or (mstridx is not None and len_ymd == 2): + # One member, or two members with a month string + if mstridx is not None: + month = self[mstridx] + # since mstridx is 0 or 1, self[mstridx-1] always + # looks up the other element + other = self[mstridx - 1] + else: + other = self[0] + + if len_ymd > 1 or mstridx is None: + if other > 31: + year = other + else: + day = other + + elif len_ymd == 2: + # Two members with numbers + if self[0] > 31: + # 99-01 + year, month = self + elif self[1] > 31: + # 01-99 + month, year = self + elif dayfirst and self[1] <= 12: + # 13-01 + day, month = self + else: + # 01-13 + month, day = self + + elif len_ymd == 3: + # Three members + if mstridx == 0: + if self[1] > 31: + # Apr-2003-25 + month, year, day = self + else: + month, day, year = self + elif mstridx == 1: + if self[0] > 31 or (yearfirst and self[2] <= 31): + # 99-Jan-01 + year, month, day = self + else: + # 01-Jan-01 + # Give precedence to day-first, since + # two-digit years is usually hand-written. + day, month, year = self + + elif mstridx == 2: + # WTF!? + if self[1] > 31: + # 01-99-Jan + day, year, month = self + else: + # 99-01-Jan + year, day, month = self + + else: + if (self[0] > 31 or + self.ystridx == 0 or + (yearfirst and self[1] <= 12 and self[2] <= 31)): + # 99-01-01 + if dayfirst and self[2] <= 12: + year, day, month = self + else: + year, month, day = self + elif self[0] > 12 or (dayfirst and self[1] <= 12): + # 13-01-01 + day, month, year = self + else: + # 01-13-01 + month, day, year = self + + return year, month, day + + +class parser(object): + def __init__(self, info=None): + self.info = info or parserinfo() + + def parse(self, timestr, default=None, + ignoretz=False, tzinfos=None, **kwargs): + """ + Parse the date/time string into a :class:`datetime.datetime` object. + + :param timestr: + Any date/time string using the supported formats. + + :param default: + The default datetime object, if this is a datetime object and not + ``None``, elements specified in ``timestr`` replace elements in the + default object. + + :param ignoretz: + If set ``True``, time zones in parsed strings are ignored and a + naive :class:`datetime.datetime` object is returned. + + :param tzinfos: + Additional time zone names / aliases which may be present in the + string. This argument maps time zone names (and optionally offsets + from those time zones) to time zones. This parameter can be a + dictionary with timezone aliases mapping time zone names to time + zones or a function taking two parameters (``tzname`` and + ``tzoffset``) and returning a time zone. + + The timezones to which the names are mapped can be an integer + offset from UTC in seconds or a :class:`tzinfo` object. + + .. doctest:: + :options: +NORMALIZE_WHITESPACE + + >>> from dateutil.parser import parse + >>> from dateutil.tz import gettz + >>> tzinfos = {"BRST": -7200, "CST": gettz("America/Chicago")} + >>> parse("2012-01-19 17:21:00 BRST", tzinfos=tzinfos) + datetime.datetime(2012, 1, 19, 17, 21, tzinfo=tzoffset(u'BRST', -7200)) + >>> parse("2012-01-19 17:21:00 CST", tzinfos=tzinfos) + datetime.datetime(2012, 1, 19, 17, 21, + tzinfo=tzfile('/usr/share/zoneinfo/America/Chicago')) + + This parameter is ignored if ``ignoretz`` is set. + + :param \\*\\*kwargs: + Keyword arguments as passed to ``_parse()``. + + :return: + Returns a :class:`datetime.datetime` object or, if the + ``fuzzy_with_tokens`` option is ``True``, returns a tuple, the + first element being a :class:`datetime.datetime` object, the second + a tuple containing the fuzzy tokens. + + :raises ParserError: + Raised for invalid or unknown string format, if the provided + :class:`tzinfo` is not in a valid format, or if an invalid date + would be created. + + :raises TypeError: + Raised for non-string or character stream input. + + :raises OverflowError: + Raised if the parsed date exceeds the largest valid C integer on + your system. + """ + + if default is None: + default = datetime.datetime.now().replace(hour=0, minute=0, + second=0, microsecond=0) + + res, skipped_tokens = self._parse(timestr, **kwargs) + + if res is None: + raise ParserError("Unknown string format: %s", timestr) + + if len(res) == 0: + raise ParserError("String does not contain a date: %s", timestr) + + try: + ret = self._build_naive(res, default) + except ValueError as e: + six.raise_from(ParserError(str(e) + ": %s", timestr), e) + + if not ignoretz: + ret = self._build_tzaware(ret, res, tzinfos) + + if kwargs.get('fuzzy_with_tokens', False): + return ret, skipped_tokens + else: + return ret + + class _result(_resultbase): + __slots__ = ["year", "month", "day", "weekday", + "hour", "minute", "second", "microsecond", + "tzname", "tzoffset", "ampm","any_unused_tokens"] + + def _parse(self, timestr, dayfirst=None, yearfirst=None, fuzzy=False, + fuzzy_with_tokens=False): + """ + Private method which performs the heavy lifting of parsing, called from + ``parse()``, which passes on its ``kwargs`` to this function. + + :param timestr: + The string to parse. + + :param dayfirst: + Whether to interpret the first value in an ambiguous 3-integer date + (e.g. 01/05/09) as the day (``True``) or month (``False``). If + ``yearfirst`` is set to ``True``, this distinguishes between YDM + and YMD. If set to ``None``, this value is retrieved from the + current :class:`parserinfo` object (which itself defaults to + ``False``). + + :param yearfirst: + Whether to interpret the first value in an ambiguous 3-integer date + (e.g. 01/05/09) as the year. If ``True``, the first number is taken + to be the year, otherwise the last number is taken to be the year. + If this is set to ``None``, the value is retrieved from the current + :class:`parserinfo` object (which itself defaults to ``False``). + + :param fuzzy: + Whether to allow fuzzy parsing, allowing for string like "Today is + January 1, 2047 at 8:21:00AM". + + :param fuzzy_with_tokens: + If ``True``, ``fuzzy`` is automatically set to True, and the parser + will return a tuple where the first element is the parsed + :class:`datetime.datetime` datetimestamp and the second element is + a tuple containing the portions of the string which were ignored: + + .. doctest:: + + >>> from dateutil.parser import parse + >>> parse("Today is January 1, 2047 at 8:21:00AM", fuzzy_with_tokens=True) + (datetime.datetime(2047, 1, 1, 8, 21), (u'Today is ', u' ', u'at ')) + + """ + if fuzzy_with_tokens: + fuzzy = True + + info = self.info + + if dayfirst is None: + dayfirst = info.dayfirst + + if yearfirst is None: + yearfirst = info.yearfirst + + res = self._result() + l = _timelex.split(timestr) # Splits the timestr into tokens + + skipped_idxs = [] + + # year/month/day list + ymd = _ymd() + + len_l = len(l) + i = 0 + try: + while i < len_l: + + # Check if it's a number + value_repr = l[i] + try: + value = float(value_repr) + except ValueError: + value = None + + if value is not None: + # Numeric token + i = self._parse_numeric_token(l, i, info, ymd, res, fuzzy) + + # Check weekday + elif info.weekday(l[i]) is not None: + value = info.weekday(l[i]) + res.weekday = value + + # Check month name + elif info.month(l[i]) is not None: + value = info.month(l[i]) + ymd.append(value, 'M') + + if i + 1 < len_l: + if l[i + 1] in ('-', '/'): + # Jan-01[-99] + sep = l[i + 1] + ymd.append(l[i + 2]) + + if i + 3 < len_l and l[i + 3] == sep: + # Jan-01-99 + ymd.append(l[i + 4]) + i += 2 + + i += 2 + + elif (i + 4 < len_l and l[i + 1] == l[i + 3] == ' ' and + info.pertain(l[i + 2])): + # Jan of 01 + # In this case, 01 is clearly year + if l[i + 4].isdigit(): + # Convert it here to become unambiguous + value = int(l[i + 4]) + year = str(info.convertyear(value)) + ymd.append(year, 'Y') + else: + # Wrong guess + pass + # TODO: not hit in tests + i += 4 + + # Check am/pm + elif info.ampm(l[i]) is not None: + value = info.ampm(l[i]) + val_is_ampm = self._ampm_valid(res.hour, res.ampm, fuzzy) + + if val_is_ampm: + res.hour = self._adjust_ampm(res.hour, value) + res.ampm = value + + elif fuzzy: + skipped_idxs.append(i) + + # Check for a timezone name + elif self._could_be_tzname(res.hour, res.tzname, res.tzoffset, l[i]): + res.tzname = l[i] + res.tzoffset = info.tzoffset(res.tzname) + + # Check for something like GMT+3, or BRST+3. Notice + # that it doesn't mean "I am 3 hours after GMT", but + # "my time +3 is GMT". If found, we reverse the + # logic so that timezone parsing code will get it + # right. + if i + 1 < len_l and l[i + 1] in ('+', '-'): + l[i + 1] = ('+', '-')[l[i + 1] == '+'] + res.tzoffset = None + if info.utczone(res.tzname): + # With something like GMT+3, the timezone + # is *not* GMT. + res.tzname = None + + # Check for a numbered timezone + elif res.hour is not None and l[i] in ('+', '-'): + signal = (-1, 1)[l[i] == '+'] + len_li = len(l[i + 1]) + + # TODO: check that l[i + 1] is integer? + if len_li == 4: + # -0300 + hour_offset = int(l[i + 1][:2]) + min_offset = int(l[i + 1][2:]) + elif i + 2 < len_l and l[i + 2] == ':': + # -03:00 + hour_offset = int(l[i + 1]) + min_offset = int(l[i + 3]) # TODO: Check that l[i+3] is minute-like? + i += 2 + elif len_li <= 2: + # -[0]3 + hour_offset = int(l[i + 1][:2]) + min_offset = 0 + else: + raise ValueError(timestr) + + res.tzoffset = signal * (hour_offset * 3600 + min_offset * 60) + + # Look for a timezone name between parenthesis + if (i + 5 < len_l and + info.jump(l[i + 2]) and l[i + 3] == '(' and + l[i + 5] == ')' and + 3 <= len(l[i + 4]) and + self._could_be_tzname(res.hour, res.tzname, + None, l[i + 4])): + # -0300 (BRST) + res.tzname = l[i + 4] + i += 4 + + i += 1 + + # Check jumps + elif not (info.jump(l[i]) or fuzzy): + raise ValueError(timestr) + + else: + skipped_idxs.append(i) + i += 1 + + # Process year/month/day + year, month, day = ymd.resolve_ymd(yearfirst, dayfirst) + + res.century_specified = ymd.century_specified + res.year = year + res.month = month + res.day = day + + except (IndexError, ValueError): + return None, None + + if not info.validate(res): + return None, None + + if fuzzy_with_tokens: + skipped_tokens = self._recombine_skipped(l, skipped_idxs) + return res, tuple(skipped_tokens) + else: + return res, None + + def _parse_numeric_token(self, tokens, idx, info, ymd, res, fuzzy): + # Token is a number + value_repr = tokens[idx] + try: + value = self._to_decimal(value_repr) + except Exception as e: + six.raise_from(ValueError('Unknown numeric token'), e) + + len_li = len(value_repr) + + len_l = len(tokens) + + if (len(ymd) == 3 and len_li in (2, 4) and + res.hour is None and + (idx + 1 >= len_l or + (tokens[idx + 1] != ':' and + info.hms(tokens[idx + 1]) is None))): + # 19990101T23[59] + s = tokens[idx] + res.hour = int(s[:2]) + + if len_li == 4: + res.minute = int(s[2:]) + + elif len_li == 6 or (len_li > 6 and tokens[idx].find('.') == 6): + # YYMMDD or HHMMSS[.ss] + s = tokens[idx] + + if not ymd and '.' not in tokens[idx]: + ymd.append(s[:2]) + ymd.append(s[2:4]) + ymd.append(s[4:]) + else: + # 19990101T235959[.59] + + # TODO: Check if res attributes already set. + res.hour = int(s[:2]) + res.minute = int(s[2:4]) + res.second, res.microsecond = self._parsems(s[4:]) + + elif len_li in (8, 12, 14): + # YYYYMMDD + s = tokens[idx] + ymd.append(s[:4], 'Y') + ymd.append(s[4:6]) + ymd.append(s[6:8]) + + if len_li > 8: + res.hour = int(s[8:10]) + res.minute = int(s[10:12]) + + if len_li > 12: + res.second = int(s[12:]) + + elif self._find_hms_idx(idx, tokens, info, allow_jump=True) is not None: + # HH[ ]h or MM[ ]m or SS[.ss][ ]s + hms_idx = self._find_hms_idx(idx, tokens, info, allow_jump=True) + (idx, hms) = self._parse_hms(idx, tokens, info, hms_idx) + if hms is not None: + # TODO: checking that hour/minute/second are not + # already set? + self._assign_hms(res, value_repr, hms) + + elif idx + 2 < len_l and tokens[idx + 1] == ':': + # HH:MM[:SS[.ss]] + res.hour = int(value) + value = self._to_decimal(tokens[idx + 2]) # TODO: try/except for this? + (res.minute, res.second) = self._parse_min_sec(value) + + if idx + 4 < len_l and tokens[idx + 3] == ':': + res.second, res.microsecond = self._parsems(tokens[idx + 4]) + + idx += 2 + + idx += 2 + + elif idx + 1 < len_l and tokens[idx + 1] in ('-', '/', '.'): + sep = tokens[idx + 1] + ymd.append(value_repr) + + if idx + 2 < len_l and not info.jump(tokens[idx + 2]): + if tokens[idx + 2].isdigit(): + # 01-01[-01] + ymd.append(tokens[idx + 2]) + else: + # 01-Jan[-01] + value = info.month(tokens[idx + 2]) + + if value is not None: + ymd.append(value, 'M') + else: + raise ValueError() + + if idx + 3 < len_l and tokens[idx + 3] == sep: + # We have three members + value = info.month(tokens[idx + 4]) + + if value is not None: + ymd.append(value, 'M') + else: + ymd.append(tokens[idx + 4]) + idx += 2 + + idx += 1 + idx += 1 + + elif idx + 1 >= len_l or info.jump(tokens[idx + 1]): + if idx + 2 < len_l and info.ampm(tokens[idx + 2]) is not None: + # 12 am + hour = int(value) + res.hour = self._adjust_ampm(hour, info.ampm(tokens[idx + 2])) + idx += 1 + else: + # Year, month or day + ymd.append(value) + idx += 1 + + elif info.ampm(tokens[idx + 1]) is not None and (0 <= value < 24): + # 12am + hour = int(value) + res.hour = self._adjust_ampm(hour, info.ampm(tokens[idx + 1])) + idx += 1 + + elif ymd.could_be_day(value): + ymd.append(value) + + elif not fuzzy: + raise ValueError() + + return idx + + def _find_hms_idx(self, idx, tokens, info, allow_jump): + len_l = len(tokens) + + if idx+1 < len_l and info.hms(tokens[idx+1]) is not None: + # There is an "h", "m", or "s" label following this token. We take + # assign the upcoming label to the current token. + # e.g. the "12" in 12h" + hms_idx = idx + 1 + + elif (allow_jump and idx+2 < len_l and tokens[idx+1] == ' ' and + info.hms(tokens[idx+2]) is not None): + # There is a space and then an "h", "m", or "s" label. + # e.g. the "12" in "12 h" + hms_idx = idx + 2 + + elif idx > 0 and info.hms(tokens[idx-1]) is not None: + # There is a "h", "m", or "s" preceding this token. Since neither + # of the previous cases was hit, there is no label following this + # token, so we use the previous label. + # e.g. the "04" in "12h04" + hms_idx = idx-1 + + elif (1 < idx == len_l-1 and tokens[idx-1] == ' ' and + info.hms(tokens[idx-2]) is not None): + # If we are looking at the final token, we allow for a + # backward-looking check to skip over a space. + # TODO: Are we sure this is the right condition here? + hms_idx = idx - 2 + + else: + hms_idx = None + + return hms_idx + + def _assign_hms(self, res, value_repr, hms): + # See GH issue #427, fixing float rounding + value = self._to_decimal(value_repr) + + if hms == 0: + # Hour + res.hour = int(value) + if value % 1: + res.minute = int(60*(value % 1)) + + elif hms == 1: + (res.minute, res.second) = self._parse_min_sec(value) + + elif hms == 2: + (res.second, res.microsecond) = self._parsems(value_repr) + + def _could_be_tzname(self, hour, tzname, tzoffset, token): + return (hour is not None and + tzname is None and + tzoffset is None and + len(token) <= 5 and + (all(x in string.ascii_uppercase for x in token) + or token in self.info.UTCZONE)) + + def _ampm_valid(self, hour, ampm, fuzzy): + """ + For fuzzy parsing, 'a' or 'am' (both valid English words) + may erroneously trigger the AM/PM flag. Deal with that + here. + """ + val_is_ampm = True + + # If there's already an AM/PM flag, this one isn't one. + if fuzzy and ampm is not None: + val_is_ampm = False + + # If AM/PM is found and hour is not, raise a ValueError + if hour is None: + if fuzzy: + val_is_ampm = False + else: + raise ValueError('No hour specified with AM or PM flag.') + elif not 0 <= hour <= 12: + # If AM/PM is found, it's a 12 hour clock, so raise + # an error for invalid range + if fuzzy: + val_is_ampm = False + else: + raise ValueError('Invalid hour specified for 12-hour clock.') + + return val_is_ampm + + def _adjust_ampm(self, hour, ampm): + if hour < 12 and ampm == 1: + hour += 12 + elif hour == 12 and ampm == 0: + hour = 0 + return hour + + def _parse_min_sec(self, value): + # TODO: Every usage of this function sets res.second to the return + # value. Are there any cases where second will be returned as None and + # we *don't* want to set res.second = None? + minute = int(value) + second = None + + sec_remainder = value % 1 + if sec_remainder: + second = int(60 * sec_remainder) + return (minute, second) + + def _parse_hms(self, idx, tokens, info, hms_idx): + # TODO: Is this going to admit a lot of false-positives for when we + # just happen to have digits and "h", "m" or "s" characters in non-date + # text? I guess hex hashes won't have that problem, but there's plenty + # of random junk out there. + if hms_idx is None: + hms = None + new_idx = idx + elif hms_idx > idx: + hms = info.hms(tokens[hms_idx]) + new_idx = hms_idx + else: + # Looking backwards, increment one. + hms = info.hms(tokens[hms_idx]) + 1 + new_idx = idx + + return (new_idx, hms) + + # ------------------------------------------------------------------ + # Handling for individual tokens. These are kept as methods instead + # of functions for the sake of customizability via subclassing. + + def _parsems(self, value): + """Parse a I[.F] seconds value into (seconds, microseconds).""" + if "." not in value: + return int(value), 0 + else: + i, f = value.split(".") + return int(i), int(f.ljust(6, "0")[:6]) + + def _to_decimal(self, val): + try: + decimal_value = Decimal(val) + # See GH 662, edge case, infinite value should not be converted + # via `_to_decimal` + if not decimal_value.is_finite(): + raise ValueError("Converted decimal value is infinite or NaN") + except Exception as e: + msg = "Could not convert %s to decimal" % val + six.raise_from(ValueError(msg), e) + else: + return decimal_value + + # ------------------------------------------------------------------ + # Post-Parsing construction of datetime output. These are kept as + # methods instead of functions for the sake of customizability via + # subclassing. + + def _build_tzinfo(self, tzinfos, tzname, tzoffset): + if callable(tzinfos): + tzdata = tzinfos(tzname, tzoffset) + else: + tzdata = tzinfos.get(tzname) + # handle case where tzinfo is paased an options that returns None + # eg tzinfos = {'BRST' : None} + if isinstance(tzdata, datetime.tzinfo) or tzdata is None: + tzinfo = tzdata + elif isinstance(tzdata, text_type): + tzinfo = tz.tzstr(tzdata) + elif isinstance(tzdata, integer_types): + tzinfo = tz.tzoffset(tzname, tzdata) + else: + raise TypeError("Offset must be tzinfo subclass, tz string, " + "or int offset.") + return tzinfo + + def _build_tzaware(self, naive, res, tzinfos): + if (callable(tzinfos) or (tzinfos and res.tzname in tzinfos)): + tzinfo = self._build_tzinfo(tzinfos, res.tzname, res.tzoffset) + aware = naive.replace(tzinfo=tzinfo) + aware = self._assign_tzname(aware, res.tzname) + + elif res.tzname and res.tzname in time.tzname: + aware = naive.replace(tzinfo=tz.tzlocal()) + + # Handle ambiguous local datetime + aware = self._assign_tzname(aware, res.tzname) + + # This is mostly relevant for winter GMT zones parsed in the UK + if (aware.tzname() != res.tzname and + res.tzname in self.info.UTCZONE): + aware = aware.replace(tzinfo=tz.UTC) + + elif res.tzoffset == 0: + aware = naive.replace(tzinfo=tz.UTC) + + elif res.tzoffset: + aware = naive.replace(tzinfo=tz.tzoffset(res.tzname, res.tzoffset)) + + elif not res.tzname and not res.tzoffset: + # i.e. no timezone information was found. + aware = naive + + elif res.tzname: + # tz-like string was parsed but we don't know what to do + # with it + warnings.warn("tzname {tzname} identified but not understood. " + "Pass `tzinfos` argument in order to correctly " + "return a timezone-aware datetime. In a future " + "version, this will raise an " + "exception.".format(tzname=res.tzname), + category=UnknownTimezoneWarning) + aware = naive + + return aware + + def _build_naive(self, res, default): + repl = {} + for attr in ("year", "month", "day", "hour", + "minute", "second", "microsecond"): + value = getattr(res, attr) + if value is not None: + repl[attr] = value + + if 'day' not in repl: + # If the default day exceeds the last day of the month, fall back + # to the end of the month. + cyear = default.year if res.year is None else res.year + cmonth = default.month if res.month is None else res.month + cday = default.day if res.day is None else res.day + + if cday > monthrange(cyear, cmonth)[1]: + repl['day'] = monthrange(cyear, cmonth)[1] + + naive = default.replace(**repl) + + if res.weekday is not None and not res.day: + naive = naive + relativedelta.relativedelta(weekday=res.weekday) + + return naive + + def _assign_tzname(self, dt, tzname): + if dt.tzname() != tzname: + new_dt = tz.enfold(dt, fold=1) + if new_dt.tzname() == tzname: + return new_dt + + return dt + + def _recombine_skipped(self, tokens, skipped_idxs): + """ + >>> tokens = ["foo", " ", "bar", " ", "19June2000", "baz"] + >>> skipped_idxs = [0, 1, 2, 5] + >>> _recombine_skipped(tokens, skipped_idxs) + ["foo bar", "baz"] + """ + skipped_tokens = [] + for i, idx in enumerate(sorted(skipped_idxs)): + if i > 0 and idx - 1 == skipped_idxs[i - 1]: + skipped_tokens[-1] = skipped_tokens[-1] + tokens[idx] + else: + skipped_tokens.append(tokens[idx]) + + return skipped_tokens + + +DEFAULTPARSER = parser() + + +def parse(timestr, parserinfo=None, **kwargs): + """ + + Parse a string in one of the supported formats, using the + ``parserinfo`` parameters. + + :param timestr: + A string containing a date/time stamp. + + :param parserinfo: + A :class:`parserinfo` object containing parameters for the parser. + If ``None``, the default arguments to the :class:`parserinfo` + constructor are used. + + The ``**kwargs`` parameter takes the following keyword arguments: + + :param default: + The default datetime object, if this is a datetime object and not + ``None``, elements specified in ``timestr`` replace elements in the + default object. + + :param ignoretz: + If set ``True``, time zones in parsed strings are ignored and a naive + :class:`datetime` object is returned. + + :param tzinfos: + Additional time zone names / aliases which may be present in the + string. This argument maps time zone names (and optionally offsets + from those time zones) to time zones. This parameter can be a + dictionary with timezone aliases mapping time zone names to time + zones or a function taking two parameters (``tzname`` and + ``tzoffset``) and returning a time zone. + + The timezones to which the names are mapped can be an integer + offset from UTC in seconds or a :class:`tzinfo` object. + + .. doctest:: + :options: +NORMALIZE_WHITESPACE + + >>> from dateutil.parser import parse + >>> from dateutil.tz import gettz + >>> tzinfos = {"BRST": -7200, "CST": gettz("America/Chicago")} + >>> parse("2012-01-19 17:21:00 BRST", tzinfos=tzinfos) + datetime.datetime(2012, 1, 19, 17, 21, tzinfo=tzoffset(u'BRST', -7200)) + >>> parse("2012-01-19 17:21:00 CST", tzinfos=tzinfos) + datetime.datetime(2012, 1, 19, 17, 21, + tzinfo=tzfile('/usr/share/zoneinfo/America/Chicago')) + + This parameter is ignored if ``ignoretz`` is set. + + :param dayfirst: + Whether to interpret the first value in an ambiguous 3-integer date + (e.g. 01/05/09) as the day (``True``) or month (``False``). If + ``yearfirst`` is set to ``True``, this distinguishes between YDM and + YMD. If set to ``None``, this value is retrieved from the current + :class:`parserinfo` object (which itself defaults to ``False``). + + :param yearfirst: + Whether to interpret the first value in an ambiguous 3-integer date + (e.g. 01/05/09) as the year. If ``True``, the first number is taken to + be the year, otherwise the last number is taken to be the year. If + this is set to ``None``, the value is retrieved from the current + :class:`parserinfo` object (which itself defaults to ``False``). + + :param fuzzy: + Whether to allow fuzzy parsing, allowing for string like "Today is + January 1, 2047 at 8:21:00AM". + + :param fuzzy_with_tokens: + If ``True``, ``fuzzy`` is automatically set to True, and the parser + will return a tuple where the first element is the parsed + :class:`datetime.datetime` datetimestamp and the second element is + a tuple containing the portions of the string which were ignored: + + .. doctest:: + + >>> from dateutil.parser import parse + >>> parse("Today is January 1, 2047 at 8:21:00AM", fuzzy_with_tokens=True) + (datetime.datetime(2047, 1, 1, 8, 21), (u'Today is ', u' ', u'at ')) + + :return: + Returns a :class:`datetime.datetime` object or, if the + ``fuzzy_with_tokens`` option is ``True``, returns a tuple, the + first element being a :class:`datetime.datetime` object, the second + a tuple containing the fuzzy tokens. + + :raises ParserError: + Raised for invalid or unknown string formats, if the provided + :class:`tzinfo` is not in a valid format, or if an invalid date would + be created. + + :raises OverflowError: + Raised if the parsed date exceeds the largest valid C integer on + your system. + """ + if parserinfo: + return parser(parserinfo).parse(timestr, **kwargs) + else: + return DEFAULTPARSER.parse(timestr, **kwargs) + + +class _tzparser(object): + + class _result(_resultbase): + + __slots__ = ["stdabbr", "stdoffset", "dstabbr", "dstoffset", + "start", "end"] + + class _attr(_resultbase): + __slots__ = ["month", "week", "weekday", + "yday", "jyday", "day", "time"] + + def __repr__(self): + return self._repr("") + + def __init__(self): + _resultbase.__init__(self) + self.start = self._attr() + self.end = self._attr() + + def parse(self, tzstr): + res = self._result() + l = [x for x in re.split(r'([,:.]|[a-zA-Z]+|[0-9]+)',tzstr) if x] + used_idxs = list() + try: + + len_l = len(l) + + i = 0 + while i < len_l: + # BRST+3[BRDT[+2]] + j = i + while j < len_l and not [x for x in l[j] + if x in "0123456789:,-+"]: + j += 1 + if j != i: + if not res.stdabbr: + offattr = "stdoffset" + res.stdabbr = "".join(l[i:j]) + else: + offattr = "dstoffset" + res.dstabbr = "".join(l[i:j]) + + for ii in range(j): + used_idxs.append(ii) + i = j + if (i < len_l and (l[i] in ('+', '-') or l[i][0] in + "0123456789")): + if l[i] in ('+', '-'): + # Yes, that's right. See the TZ variable + # documentation. + signal = (1, -1)[l[i] == '+'] + used_idxs.append(i) + i += 1 + else: + signal = -1 + len_li = len(l[i]) + if len_li == 4: + # -0300 + setattr(res, offattr, (int(l[i][:2]) * 3600 + + int(l[i][2:]) * 60) * signal) + elif i + 1 < len_l and l[i + 1] == ':': + # -03:00 + setattr(res, offattr, + (int(l[i]) * 3600 + + int(l[i + 2]) * 60) * signal) + used_idxs.append(i) + i += 2 + elif len_li <= 2: + # -[0]3 + setattr(res, offattr, + int(l[i][:2]) * 3600 * signal) + else: + return None + used_idxs.append(i) + i += 1 + if res.dstabbr: + break + else: + break + + + if i < len_l: + for j in range(i, len_l): + if l[j] == ';': + l[j] = ',' + + assert l[i] == ',' + + i += 1 + + if i >= len_l: + pass + elif (8 <= l.count(',') <= 9 and + not [y for x in l[i:] if x != ',' + for y in x if y not in "0123456789+-"]): + # GMT0BST,3,0,30,3600,10,0,26,7200[,3600] + for x in (res.start, res.end): + x.month = int(l[i]) + used_idxs.append(i) + i += 2 + if l[i] == '-': + value = int(l[i + 1]) * -1 + used_idxs.append(i) + i += 1 + else: + value = int(l[i]) + used_idxs.append(i) + i += 2 + if value: + x.week = value + x.weekday = (int(l[i]) - 1) % 7 + else: + x.day = int(l[i]) + used_idxs.append(i) + i += 2 + x.time = int(l[i]) + used_idxs.append(i) + i += 2 + if i < len_l: + if l[i] in ('-', '+'): + signal = (-1, 1)[l[i] == "+"] + used_idxs.append(i) + i += 1 + else: + signal = 1 + used_idxs.append(i) + res.dstoffset = (res.stdoffset + int(l[i]) * signal) + + # This was a made-up format that is not in normal use + warn(('Parsed time zone "%s"' % tzstr) + + 'is in a non-standard dateutil-specific format, which ' + + 'is now deprecated; support for parsing this format ' + + 'will be removed in future versions. It is recommended ' + + 'that you switch to a standard format like the GNU ' + + 'TZ variable format.', tz.DeprecatedTzFormatWarning) + elif (l.count(',') == 2 and l[i:].count('/') <= 2 and + not [y for x in l[i:] if x not in (',', '/', 'J', 'M', + '.', '-', ':') + for y in x if y not in "0123456789"]): + for x in (res.start, res.end): + if l[i] == 'J': + # non-leap year day (1 based) + used_idxs.append(i) + i += 1 + x.jyday = int(l[i]) + elif l[i] == 'M': + # month[-.]week[-.]weekday + used_idxs.append(i) + i += 1 + x.month = int(l[i]) + used_idxs.append(i) + i += 1 + assert l[i] in ('-', '.') + used_idxs.append(i) + i += 1 + x.week = int(l[i]) + if x.week == 5: + x.week = -1 + used_idxs.append(i) + i += 1 + assert l[i] in ('-', '.') + used_idxs.append(i) + i += 1 + x.weekday = (int(l[i]) - 1) % 7 + else: + # year day (zero based) + x.yday = int(l[i]) + 1 + + used_idxs.append(i) + i += 1 + + if i < len_l and l[i] == '/': + used_idxs.append(i) + i += 1 + # start time + len_li = len(l[i]) + if len_li == 4: + # -0300 + x.time = (int(l[i][:2]) * 3600 + + int(l[i][2:]) * 60) + elif i + 1 < len_l and l[i + 1] == ':': + # -03:00 + x.time = int(l[i]) * 3600 + int(l[i + 2]) * 60 + used_idxs.append(i) + i += 2 + if i + 1 < len_l and l[i + 1] == ':': + used_idxs.append(i) + i += 2 + x.time += int(l[i]) + elif len_li <= 2: + # -[0]3 + x.time = (int(l[i][:2]) * 3600) + else: + return None + used_idxs.append(i) + i += 1 + + assert i == len_l or l[i] == ',' + + i += 1 + + assert i >= len_l + + except (IndexError, ValueError, AssertionError): + return None + + unused_idxs = set(range(len_l)).difference(used_idxs) + res.any_unused_tokens = not {l[n] for n in unused_idxs}.issubset({",",":"}) + return res + + +DEFAULTTZPARSER = _tzparser() + + +def _parsetz(tzstr): + return DEFAULTTZPARSER.parse(tzstr) + + +class ParserError(ValueError): + """Exception subclass used for any failure to parse a datetime string. + + This is a subclass of :py:exc:`ValueError`, and should be raised any time + earlier versions of ``dateutil`` would have raised ``ValueError``. + + .. versionadded:: 2.8.1 + """ + def __str__(self): + try: + return self.args[0] % self.args[1:] + except (TypeError, IndexError): + return super(ParserError, self).__str__() + + def __repr__(self): + args = ", ".join("'%s'" % arg for arg in self.args) + return "%s(%s)" % (self.__class__.__name__, args) + + +class UnknownTimezoneWarning(RuntimeWarning): + """Raised when the parser finds a timezone it cannot parse into a tzinfo. + + .. versionadded:: 2.7.0 + """ +# vim:ts=4:sw=4:et diff --git a/frogpilot/third_party/dateutil/parser/isoparser.py b/frogpilot/third_party/dateutil/parser/isoparser.py new file mode 100644 index 000000000..7060087df --- /dev/null +++ b/frogpilot/third_party/dateutil/parser/isoparser.py @@ -0,0 +1,416 @@ +# -*- coding: utf-8 -*- +""" +This module offers a parser for ISO-8601 strings + +It is intended to support all valid date, time and datetime formats per the +ISO-8601 specification. + +..versionadded:: 2.7.0 +""" +from datetime import datetime, timedelta, time, date +import calendar +from dateutil import tz + +from functools import wraps + +import re +import six + +__all__ = ["isoparse", "isoparser"] + + +def _takes_ascii(f): + @wraps(f) + def func(self, str_in, *args, **kwargs): + # If it's a stream, read the whole thing + str_in = getattr(str_in, 'read', lambda: str_in)() + + # If it's unicode, turn it into bytes, since ISO-8601 only covers ASCII + if isinstance(str_in, six.text_type): + # ASCII is the same in UTF-8 + try: + str_in = str_in.encode('ascii') + except UnicodeEncodeError as e: + msg = 'ISO-8601 strings should contain only ASCII characters' + six.raise_from(ValueError(msg), e) + + return f(self, str_in, *args, **kwargs) + + return func + + +class isoparser(object): + def __init__(self, sep=None): + """ + :param sep: + A single character that separates date and time portions. If + ``None``, the parser will accept any single character. + For strict ISO-8601 adherence, pass ``'T'``. + """ + if sep is not None: + if (len(sep) != 1 or ord(sep) >= 128 or sep in '0123456789'): + raise ValueError('Separator must be a single, non-numeric ' + + 'ASCII character') + + sep = sep.encode('ascii') + + self._sep = sep + + @_takes_ascii + def isoparse(self, dt_str): + """ + Parse an ISO-8601 datetime string into a :class:`datetime.datetime`. + + An ISO-8601 datetime string consists of a date portion, followed + optionally by a time portion - the date and time portions are separated + by a single character separator, which is ``T`` in the official + standard. Incomplete date formats (such as ``YYYY-MM``) may *not* be + combined with a time portion. + + Supported date formats are: + + Common: + + - ``YYYY`` + - ``YYYY-MM`` + - ``YYYY-MM-DD`` or ``YYYYMMDD`` + + Uncommon: + + - ``YYYY-Www`` or ``YYYYWww`` - ISO week (day defaults to 0) + - ``YYYY-Www-D`` or ``YYYYWwwD`` - ISO week and day + + The ISO week and day numbering follows the same logic as + :func:`datetime.date.isocalendar`. + + Supported time formats are: + + - ``hh`` + - ``hh:mm`` or ``hhmm`` + - ``hh:mm:ss`` or ``hhmmss`` + - ``hh:mm:ss.ssssss`` (Up to 6 sub-second digits) + + Midnight is a special case for `hh`, as the standard supports both + 00:00 and 24:00 as a representation. The decimal separator can be + either a dot or a comma. + + + .. caution:: + + Support for fractional components other than seconds is part of the + ISO-8601 standard, but is not currently implemented in this parser. + + Supported time zone offset formats are: + + - `Z` (UTC) + - `ยฑHH:MM` + - `ยฑHHMM` + - `ยฑHH` + + Offsets will be represented as :class:`dateutil.tz.tzoffset` objects, + with the exception of UTC, which will be represented as + :class:`dateutil.tz.tzutc`. Time zone offsets equivalent to UTC (such + as `+00:00`) will also be represented as :class:`dateutil.tz.tzutc`. + + :param dt_str: + A string or stream containing only an ISO-8601 datetime string + + :return: + Returns a :class:`datetime.datetime` representing the string. + Unspecified components default to their lowest value. + + .. warning:: + + As of version 2.7.0, the strictness of the parser should not be + considered a stable part of the contract. Any valid ISO-8601 string + that parses correctly with the default settings will continue to + parse correctly in future versions, but invalid strings that + currently fail (e.g. ``2017-01-01T00:00+00:00:00``) are not + guaranteed to continue failing in future versions if they encode + a valid date. + + .. versionadded:: 2.7.0 + """ + components, pos = self._parse_isodate(dt_str) + + if len(dt_str) > pos: + if self._sep is None or dt_str[pos:pos + 1] == self._sep: + components += self._parse_isotime(dt_str[pos + 1:]) + else: + raise ValueError('String contains unknown ISO components') + + if len(components) > 3 and components[3] == 24: + components[3] = 0 + return datetime(*components) + timedelta(days=1) + + return datetime(*components) + + @_takes_ascii + def parse_isodate(self, datestr): + """ + Parse the date portion of an ISO string. + + :param datestr: + The string portion of an ISO string, without a separator + + :return: + Returns a :class:`datetime.date` object + """ + components, pos = self._parse_isodate(datestr) + if pos < len(datestr): + raise ValueError('String contains unknown ISO ' + + 'components: {!r}'.format(datestr.decode('ascii'))) + return date(*components) + + @_takes_ascii + def parse_isotime(self, timestr): + """ + Parse the time portion of an ISO string. + + :param timestr: + The time portion of an ISO string, without a separator + + :return: + Returns a :class:`datetime.time` object + """ + components = self._parse_isotime(timestr) + if components[0] == 24: + components[0] = 0 + return time(*components) + + @_takes_ascii + def parse_tzstr(self, tzstr, zero_as_utc=True): + """ + Parse a valid ISO time zone string. + + See :func:`isoparser.isoparse` for details on supported formats. + + :param tzstr: + A string representing an ISO time zone offset + + :param zero_as_utc: + Whether to return :class:`dateutil.tz.tzutc` for zero-offset zones + + :return: + Returns :class:`dateutil.tz.tzoffset` for offsets and + :class:`dateutil.tz.tzutc` for ``Z`` and (if ``zero_as_utc`` is + specified) offsets equivalent to UTC. + """ + return self._parse_tzstr(tzstr, zero_as_utc=zero_as_utc) + + # Constants + _DATE_SEP = b'-' + _TIME_SEP = b':' + _FRACTION_REGEX = re.compile(b'[\\.,]([0-9]+)') + + def _parse_isodate(self, dt_str): + try: + return self._parse_isodate_common(dt_str) + except ValueError: + return self._parse_isodate_uncommon(dt_str) + + def _parse_isodate_common(self, dt_str): + len_str = len(dt_str) + components = [1, 1, 1] + + if len_str < 4: + raise ValueError('ISO string too short') + + # Year + components[0] = int(dt_str[0:4]) + pos = 4 + if pos >= len_str: + return components, pos + + has_sep = dt_str[pos:pos + 1] == self._DATE_SEP + if has_sep: + pos += 1 + + # Month + if len_str - pos < 2: + raise ValueError('Invalid common month') + + components[1] = int(dt_str[pos:pos + 2]) + pos += 2 + + if pos >= len_str: + if has_sep: + return components, pos + else: + raise ValueError('Invalid ISO format') + + if has_sep: + if dt_str[pos:pos + 1] != self._DATE_SEP: + raise ValueError('Invalid separator in ISO string') + pos += 1 + + # Day + if len_str - pos < 2: + raise ValueError('Invalid common day') + components[2] = int(dt_str[pos:pos + 2]) + return components, pos + 2 + + def _parse_isodate_uncommon(self, dt_str): + if len(dt_str) < 4: + raise ValueError('ISO string too short') + + # All ISO formats start with the year + year = int(dt_str[0:4]) + + has_sep = dt_str[4:5] == self._DATE_SEP + + pos = 4 + has_sep # Skip '-' if it's there + if dt_str[pos:pos + 1] == b'W': + # YYYY-?Www-?D? + pos += 1 + weekno = int(dt_str[pos:pos + 2]) + pos += 2 + + dayno = 1 + if len(dt_str) > pos: + if (dt_str[pos:pos + 1] == self._DATE_SEP) != has_sep: + raise ValueError('Inconsistent use of dash separator') + + pos += has_sep + + dayno = int(dt_str[pos:pos + 1]) + pos += 1 + + base_date = self._calculate_weekdate(year, weekno, dayno) + else: + # YYYYDDD or YYYY-DDD + if len(dt_str) - pos < 3: + raise ValueError('Invalid ordinal day') + + ordinal_day = int(dt_str[pos:pos + 3]) + pos += 3 + + if ordinal_day < 1 or ordinal_day > (365 + calendar.isleap(year)): + raise ValueError('Invalid ordinal day' + + ' {} for year {}'.format(ordinal_day, year)) + + base_date = date(year, 1, 1) + timedelta(days=ordinal_day - 1) + + components = [base_date.year, base_date.month, base_date.day] + return components, pos + + def _calculate_weekdate(self, year, week, day): + """ + Calculate the day of corresponding to the ISO year-week-day calendar. + + This function is effectively the inverse of + :func:`datetime.date.isocalendar`. + + :param year: + The year in the ISO calendar + + :param week: + The week in the ISO calendar - range is [1, 53] + + :param day: + The day in the ISO calendar - range is [1 (MON), 7 (SUN)] + + :return: + Returns a :class:`datetime.date` + """ + if not 0 < week < 54: + raise ValueError('Invalid week: {}'.format(week)) + + if not 0 < day < 8: # Range is 1-7 + raise ValueError('Invalid weekday: {}'.format(day)) + + # Get week 1 for the specific year: + jan_4 = date(year, 1, 4) # Week 1 always has January 4th in it + week_1 = jan_4 - timedelta(days=jan_4.isocalendar()[2] - 1) + + # Now add the specific number of weeks and days to get what we want + week_offset = (week - 1) * 7 + (day - 1) + return week_1 + timedelta(days=week_offset) + + def _parse_isotime(self, timestr): + len_str = len(timestr) + components = [0, 0, 0, 0, None] + pos = 0 + comp = -1 + + if len_str < 2: + raise ValueError('ISO time too short') + + has_sep = False + + while pos < len_str and comp < 5: + comp += 1 + + if timestr[pos:pos + 1] in b'-+Zz': + # Detect time zone boundary + components[-1] = self._parse_tzstr(timestr[pos:]) + pos = len_str + break + + if comp == 1 and timestr[pos:pos+1] == self._TIME_SEP: + has_sep = True + pos += 1 + elif comp == 2 and has_sep: + if timestr[pos:pos+1] != self._TIME_SEP: + raise ValueError('Inconsistent use of colon separator') + pos += 1 + + if comp < 3: + # Hour, minute, second + components[comp] = int(timestr[pos:pos + 2]) + pos += 2 + + if comp == 3: + # Fraction of a second + frac = self._FRACTION_REGEX.match(timestr[pos:]) + if not frac: + continue + + us_str = frac.group(1)[:6] # Truncate to microseconds + components[comp] = int(us_str) * 10**(6 - len(us_str)) + pos += len(frac.group()) + + if pos < len_str: + raise ValueError('Unused components in ISO string') + + if components[0] == 24: + # Standard supports 00:00 and 24:00 as representations of midnight + if any(component != 0 for component in components[1:4]): + raise ValueError('Hour may only be 24 at 24:00:00.000') + + return components + + def _parse_tzstr(self, tzstr, zero_as_utc=True): + if tzstr == b'Z' or tzstr == b'z': + return tz.UTC + + if len(tzstr) not in {3, 5, 6}: + raise ValueError('Time zone offset must be 1, 3, 5 or 6 characters') + + if tzstr[0:1] == b'-': + mult = -1 + elif tzstr[0:1] == b'+': + mult = 1 + else: + raise ValueError('Time zone offset requires sign') + + hours = int(tzstr[1:3]) + if len(tzstr) == 3: + minutes = 0 + else: + minutes = int(tzstr[(4 if tzstr[3:4] == self._TIME_SEP else 3):]) + + if zero_as_utc and hours == 0 and minutes == 0: + return tz.UTC + else: + if minutes > 59: + raise ValueError('Invalid minutes in time zone offset') + + if hours > 23: + raise ValueError('Invalid hours in time zone offset') + + return tz.tzoffset(None, mult * (hours * 60 + minutes) * 60) + + +DEFAULT_ISOPARSER = isoparser() +isoparse = DEFAULT_ISOPARSER.isoparse diff --git a/frogpilot/third_party/dateutil/relativedelta.py b/frogpilot/third_party/dateutil/relativedelta.py new file mode 100644 index 000000000..cd323a549 --- /dev/null +++ b/frogpilot/third_party/dateutil/relativedelta.py @@ -0,0 +1,599 @@ +# -*- coding: utf-8 -*- +import datetime +import calendar + +import operator +from math import copysign + +from six import integer_types +from warnings import warn + +from ._common import weekday + +MO, TU, WE, TH, FR, SA, SU = weekdays = tuple(weekday(x) for x in range(7)) + +__all__ = ["relativedelta", "MO", "TU", "WE", "TH", "FR", "SA", "SU"] + + +class relativedelta(object): + """ + The relativedelta type is designed to be applied to an existing datetime and + can replace specific components of that datetime, or represents an interval + of time. + + It is based on the specification of the excellent work done by M.-A. Lemburg + in his + `mx.DateTime `_ extension. + However, notice that this type does *NOT* implement the same algorithm as + his work. Do *NOT* expect it to behave like mx.DateTime's counterpart. + + There are two different ways to build a relativedelta instance. The + first one is passing it two date/datetime classes:: + + relativedelta(datetime1, datetime2) + + The second one is passing it any number of the following keyword arguments:: + + relativedelta(arg1=x,arg2=y,arg3=z...) + + year, month, day, hour, minute, second, microsecond: + Absolute information (argument is singular); adding or subtracting a + relativedelta with absolute information does not perform an arithmetic + operation, but rather REPLACES the corresponding value in the + original datetime with the value(s) in relativedelta. + + years, months, weeks, days, hours, minutes, seconds, microseconds: + Relative information, may be negative (argument is plural); adding + or subtracting a relativedelta with relative information performs + the corresponding arithmetic operation on the original datetime value + with the information in the relativedelta. + + weekday: + One of the weekday instances (MO, TU, etc) available in the + relativedelta module. These instances may receive a parameter N, + specifying the Nth weekday, which could be positive or negative + (like MO(+1) or MO(-2)). Not specifying it is the same as specifying + +1. You can also use an integer, where 0=MO. This argument is always + relative e.g. if the calculated date is already Monday, using MO(1) + or MO(-1) won't change the day. To effectively make it absolute, use + it in combination with the day argument (e.g. day=1, MO(1) for first + Monday of the month). + + leapdays: + Will add given days to the date found, if year is a leap + year, and the date found is post 28 of february. + + yearday, nlyearday: + Set the yearday or the non-leap year day (jump leap days). + These are converted to day/month/leapdays information. + + There are relative and absolute forms of the keyword + arguments. The plural is relative, and the singular is + absolute. For each argument in the order below, the absolute form + is applied first (by setting each attribute to that value) and + then the relative form (by adding the value to the attribute). + + The order of attributes considered when this relativedelta is + added to a datetime is: + + 1. Year + 2. Month + 3. Day + 4. Hours + 5. Minutes + 6. Seconds + 7. Microseconds + + Finally, weekday is applied, using the rule described above. + + For example + + >>> from datetime import datetime + >>> from dateutil.relativedelta import relativedelta, MO + >>> dt = datetime(2018, 4, 9, 13, 37, 0) + >>> delta = relativedelta(hours=25, day=1, weekday=MO(1)) + >>> dt + delta + datetime.datetime(2018, 4, 2, 14, 37) + + First, the day is set to 1 (the first of the month), then 25 hours + are added, to get to the 2nd day and 14th hour, finally the + weekday is applied, but since the 2nd is already a Monday there is + no effect. + + """ + + def __init__(self, dt1=None, dt2=None, + years=0, months=0, days=0, leapdays=0, weeks=0, + hours=0, minutes=0, seconds=0, microseconds=0, + year=None, month=None, day=None, weekday=None, + yearday=None, nlyearday=None, + hour=None, minute=None, second=None, microsecond=None): + + if dt1 and dt2: + # datetime is a subclass of date. So both must be date + if not (isinstance(dt1, datetime.date) and + isinstance(dt2, datetime.date)): + raise TypeError("relativedelta only diffs datetime/date") + + # We allow two dates, or two datetimes, so we coerce them to be + # of the same type + if (isinstance(dt1, datetime.datetime) != + isinstance(dt2, datetime.datetime)): + if not isinstance(dt1, datetime.datetime): + dt1 = datetime.datetime.fromordinal(dt1.toordinal()) + elif not isinstance(dt2, datetime.datetime): + dt2 = datetime.datetime.fromordinal(dt2.toordinal()) + + self.years = 0 + self.months = 0 + self.days = 0 + self.leapdays = 0 + self.hours = 0 + self.minutes = 0 + self.seconds = 0 + self.microseconds = 0 + self.year = None + self.month = None + self.day = None + self.weekday = None + self.hour = None + self.minute = None + self.second = None + self.microsecond = None + self._has_time = 0 + + # Get year / month delta between the two + months = (dt1.year - dt2.year) * 12 + (dt1.month - dt2.month) + self._set_months(months) + + # Remove the year/month delta so the timedelta is just well-defined + # time units (seconds, days and microseconds) + dtm = self.__radd__(dt2) + + # If we've overshot our target, make an adjustment + if dt1 < dt2: + compare = operator.gt + increment = 1 + else: + compare = operator.lt + increment = -1 + + while compare(dt1, dtm): + months += increment + self._set_months(months) + dtm = self.__radd__(dt2) + + # Get the timedelta between the "months-adjusted" date and dt1 + delta = dt1 - dtm + self.seconds = delta.seconds + delta.days * 86400 + self.microseconds = delta.microseconds + else: + # Check for non-integer values in integer-only quantities + if any(x is not None and x != int(x) for x in (years, months)): + raise ValueError("Non-integer years and months are " + "ambiguous and not currently supported.") + + # Relative information + self.years = int(years) + self.months = int(months) + self.days = days + weeks * 7 + self.leapdays = leapdays + self.hours = hours + self.minutes = minutes + self.seconds = seconds + self.microseconds = microseconds + + # Absolute information + self.year = year + self.month = month + self.day = day + self.hour = hour + self.minute = minute + self.second = second + self.microsecond = microsecond + + if any(x is not None and int(x) != x + for x in (year, month, day, hour, + minute, second, microsecond)): + # For now we'll deprecate floats - later it'll be an error. + warn("Non-integer value passed as absolute information. " + + "This is not a well-defined condition and will raise " + + "errors in future versions.", DeprecationWarning) + + if isinstance(weekday, integer_types): + self.weekday = weekdays[weekday] + else: + self.weekday = weekday + + yday = 0 + if nlyearday: + yday = nlyearday + elif yearday: + yday = yearday + if yearday > 59: + self.leapdays = -1 + if yday: + ydayidx = [31, 59, 90, 120, 151, 181, 212, + 243, 273, 304, 334, 366] + for idx, ydays in enumerate(ydayidx): + if yday <= ydays: + self.month = idx+1 + if idx == 0: + self.day = yday + else: + self.day = yday-ydayidx[idx-1] + break + else: + raise ValueError("invalid year day (%d)" % yday) + + self._fix() + + def _fix(self): + if abs(self.microseconds) > 999999: + s = _sign(self.microseconds) + div, mod = divmod(self.microseconds * s, 1000000) + self.microseconds = mod * s + self.seconds += div * s + if abs(self.seconds) > 59: + s = _sign(self.seconds) + div, mod = divmod(self.seconds * s, 60) + self.seconds = mod * s + self.minutes += div * s + if abs(self.minutes) > 59: + s = _sign(self.minutes) + div, mod = divmod(self.minutes * s, 60) + self.minutes = mod * s + self.hours += div * s + if abs(self.hours) > 23: + s = _sign(self.hours) + div, mod = divmod(self.hours * s, 24) + self.hours = mod * s + self.days += div * s + if abs(self.months) > 11: + s = _sign(self.months) + div, mod = divmod(self.months * s, 12) + self.months = mod * s + self.years += div * s + if (self.hours or self.minutes or self.seconds or self.microseconds + or self.hour is not None or self.minute is not None or + self.second is not None or self.microsecond is not None): + self._has_time = 1 + else: + self._has_time = 0 + + @property + def weeks(self): + return int(self.days / 7.0) + + @weeks.setter + def weeks(self, value): + self.days = self.days - (self.weeks * 7) + value * 7 + + def _set_months(self, months): + self.months = months + if abs(self.months) > 11: + s = _sign(self.months) + div, mod = divmod(self.months * s, 12) + self.months = mod * s + self.years = div * s + else: + self.years = 0 + + def normalized(self): + """ + Return a version of this object represented entirely using integer + values for the relative attributes. + + >>> relativedelta(days=1.5, hours=2).normalized() + relativedelta(days=+1, hours=+14) + + :return: + Returns a :class:`dateutil.relativedelta.relativedelta` object. + """ + # Cascade remainders down (rounding each to roughly nearest microsecond) + days = int(self.days) + + hours_f = round(self.hours + 24 * (self.days - days), 11) + hours = int(hours_f) + + minutes_f = round(self.minutes + 60 * (hours_f - hours), 10) + minutes = int(minutes_f) + + seconds_f = round(self.seconds + 60 * (minutes_f - minutes), 8) + seconds = int(seconds_f) + + microseconds = round(self.microseconds + 1e6 * (seconds_f - seconds)) + + # Constructor carries overflow back up with call to _fix() + return self.__class__(years=self.years, months=self.months, + days=days, hours=hours, minutes=minutes, + seconds=seconds, microseconds=microseconds, + leapdays=self.leapdays, year=self.year, + month=self.month, day=self.day, + weekday=self.weekday, hour=self.hour, + minute=self.minute, second=self.second, + microsecond=self.microsecond) + + def __add__(self, other): + if isinstance(other, relativedelta): + return self.__class__(years=other.years + self.years, + months=other.months + self.months, + days=other.days + self.days, + hours=other.hours + self.hours, + minutes=other.minutes + self.minutes, + seconds=other.seconds + self.seconds, + microseconds=(other.microseconds + + self.microseconds), + leapdays=other.leapdays or self.leapdays, + year=(other.year if other.year is not None + else self.year), + month=(other.month if other.month is not None + else self.month), + day=(other.day if other.day is not None + else self.day), + weekday=(other.weekday if other.weekday is not None + else self.weekday), + hour=(other.hour if other.hour is not None + else self.hour), + minute=(other.minute if other.minute is not None + else self.minute), + second=(other.second if other.second is not None + else self.second), + microsecond=(other.microsecond if other.microsecond + is not None else + self.microsecond)) + if isinstance(other, datetime.timedelta): + return self.__class__(years=self.years, + months=self.months, + days=self.days + other.days, + hours=self.hours, + minutes=self.minutes, + seconds=self.seconds + other.seconds, + microseconds=self.microseconds + other.microseconds, + leapdays=self.leapdays, + year=self.year, + month=self.month, + day=self.day, + weekday=self.weekday, + hour=self.hour, + minute=self.minute, + second=self.second, + microsecond=self.microsecond) + if not isinstance(other, datetime.date): + return NotImplemented + elif self._has_time and not isinstance(other, datetime.datetime): + other = datetime.datetime.fromordinal(other.toordinal()) + year = (self.year or other.year)+self.years + month = self.month or other.month + if self.months: + assert 1 <= abs(self.months) <= 12 + month += self.months + if month > 12: + year += 1 + month -= 12 + elif month < 1: + year -= 1 + month += 12 + day = min(calendar.monthrange(year, month)[1], + self.day or other.day) + repl = {"year": year, "month": month, "day": day} + for attr in ["hour", "minute", "second", "microsecond"]: + value = getattr(self, attr) + if value is not None: + repl[attr] = value + days = self.days + if self.leapdays and month > 2 and calendar.isleap(year): + days += self.leapdays + ret = (other.replace(**repl) + + datetime.timedelta(days=days, + hours=self.hours, + minutes=self.minutes, + seconds=self.seconds, + microseconds=self.microseconds)) + if self.weekday: + weekday, nth = self.weekday.weekday, self.weekday.n or 1 + jumpdays = (abs(nth) - 1) * 7 + if nth > 0: + jumpdays += (7 - ret.weekday() + weekday) % 7 + else: + jumpdays += (ret.weekday() - weekday) % 7 + jumpdays *= -1 + ret += datetime.timedelta(days=jumpdays) + return ret + + def __radd__(self, other): + return self.__add__(other) + + def __rsub__(self, other): + return self.__neg__().__radd__(other) + + def __sub__(self, other): + if not isinstance(other, relativedelta): + return NotImplemented # In case the other object defines __rsub__ + return self.__class__(years=self.years - other.years, + months=self.months - other.months, + days=self.days - other.days, + hours=self.hours - other.hours, + minutes=self.minutes - other.minutes, + seconds=self.seconds - other.seconds, + microseconds=self.microseconds - other.microseconds, + leapdays=self.leapdays or other.leapdays, + year=(self.year if self.year is not None + else other.year), + month=(self.month if self.month is not None else + other.month), + day=(self.day if self.day is not None else + other.day), + weekday=(self.weekday if self.weekday is not None else + other.weekday), + hour=(self.hour if self.hour is not None else + other.hour), + minute=(self.minute if self.minute is not None else + other.minute), + second=(self.second if self.second is not None else + other.second), + microsecond=(self.microsecond if self.microsecond + is not None else + other.microsecond)) + + def __abs__(self): + return self.__class__(years=abs(self.years), + months=abs(self.months), + days=abs(self.days), + hours=abs(self.hours), + minutes=abs(self.minutes), + seconds=abs(self.seconds), + microseconds=abs(self.microseconds), + leapdays=self.leapdays, + year=self.year, + month=self.month, + day=self.day, + weekday=self.weekday, + hour=self.hour, + minute=self.minute, + second=self.second, + microsecond=self.microsecond) + + def __neg__(self): + return self.__class__(years=-self.years, + months=-self.months, + days=-self.days, + hours=-self.hours, + minutes=-self.minutes, + seconds=-self.seconds, + microseconds=-self.microseconds, + leapdays=self.leapdays, + year=self.year, + month=self.month, + day=self.day, + weekday=self.weekday, + hour=self.hour, + minute=self.minute, + second=self.second, + microsecond=self.microsecond) + + def __bool__(self): + return not (not self.years and + not self.months and + not self.days and + not self.hours and + not self.minutes and + not self.seconds and + not self.microseconds and + not self.leapdays and + self.year is None and + self.month is None and + self.day is None and + self.weekday is None and + self.hour is None and + self.minute is None and + self.second is None and + self.microsecond is None) + # Compatibility with Python 2.x + __nonzero__ = __bool__ + + def __mul__(self, other): + try: + f = float(other) + except TypeError: + return NotImplemented + + return self.__class__(years=int(self.years * f), + months=int(self.months * f), + days=int(self.days * f), + hours=int(self.hours * f), + minutes=int(self.minutes * f), + seconds=int(self.seconds * f), + microseconds=int(self.microseconds * f), + leapdays=self.leapdays, + year=self.year, + month=self.month, + day=self.day, + weekday=self.weekday, + hour=self.hour, + minute=self.minute, + second=self.second, + microsecond=self.microsecond) + + __rmul__ = __mul__ + + def __eq__(self, other): + if not isinstance(other, relativedelta): + return NotImplemented + if self.weekday or other.weekday: + if not self.weekday or not other.weekday: + return False + if self.weekday.weekday != other.weekday.weekday: + return False + n1, n2 = self.weekday.n, other.weekday.n + if n1 != n2 and not ((not n1 or n1 == 1) and (not n2 or n2 == 1)): + return False + return (self.years == other.years and + self.months == other.months and + self.days == other.days and + self.hours == other.hours and + self.minutes == other.minutes and + self.seconds == other.seconds and + self.microseconds == other.microseconds and + self.leapdays == other.leapdays and + self.year == other.year and + self.month == other.month and + self.day == other.day and + self.hour == other.hour and + self.minute == other.minute and + self.second == other.second and + self.microsecond == other.microsecond) + + def __hash__(self): + return hash(( + self.weekday, + self.years, + self.months, + self.days, + self.hours, + self.minutes, + self.seconds, + self.microseconds, + self.leapdays, + self.year, + self.month, + self.day, + self.hour, + self.minute, + self.second, + self.microsecond, + )) + + def __ne__(self, other): + return not self.__eq__(other) + + def __div__(self, other): + try: + reciprocal = 1 / float(other) + except TypeError: + return NotImplemented + + return self.__mul__(reciprocal) + + __truediv__ = __div__ + + def __repr__(self): + l = [] + for attr in ["years", "months", "days", "leapdays", + "hours", "minutes", "seconds", "microseconds"]: + value = getattr(self, attr) + if value: + l.append("{attr}={value:+g}".format(attr=attr, value=value)) + for attr in ["year", "month", "day", "weekday", + "hour", "minute", "second", "microsecond"]: + value = getattr(self, attr) + if value is not None: + l.append("{attr}={value}".format(attr=attr, value=repr(value))) + return "{classname}({attrs})".format(classname=self.__class__.__name__, + attrs=", ".join(l)) + + +def _sign(x): + return int(copysign(1, x)) + +# vim:ts=4:sw=4:et diff --git a/frogpilot/third_party/dateutil/rrule.py b/frogpilot/third_party/dateutil/rrule.py new file mode 100644 index 000000000..571a0d2bc --- /dev/null +++ b/frogpilot/third_party/dateutil/rrule.py @@ -0,0 +1,1737 @@ +# -*- coding: utf-8 -*- +""" +The rrule module offers a small, complete, and very fast, implementation of +the recurrence rules documented in the +`iCalendar RFC `_, +including support for caching of results. +""" +import calendar +import datetime +import heapq +import itertools +import re +import sys +from functools import wraps +# For warning about deprecation of until and count +from warnings import warn + +from six import advance_iterator, integer_types + +from six.moves import _thread, range + +from ._common import weekday as weekdaybase + +try: + from math import gcd +except ImportError: + from fractions import gcd + +__all__ = ["rrule", "rruleset", "rrulestr", + "YEARLY", "MONTHLY", "WEEKLY", "DAILY", + "HOURLY", "MINUTELY", "SECONDLY", + "MO", "TU", "WE", "TH", "FR", "SA", "SU"] + +# Every mask is 7 days longer to handle cross-year weekly periods. +M366MASK = tuple([1]*31+[2]*29+[3]*31+[4]*30+[5]*31+[6]*30 + + [7]*31+[8]*31+[9]*30+[10]*31+[11]*30+[12]*31+[1]*7) +M365MASK = list(M366MASK) +M29, M30, M31 = list(range(1, 30)), list(range(1, 31)), list(range(1, 32)) +MDAY366MASK = tuple(M31+M29+M31+M30+M31+M30+M31+M31+M30+M31+M30+M31+M31[:7]) +MDAY365MASK = list(MDAY366MASK) +M29, M30, M31 = list(range(-29, 0)), list(range(-30, 0)), list(range(-31, 0)) +NMDAY366MASK = tuple(M31+M29+M31+M30+M31+M30+M31+M31+M30+M31+M30+M31+M31[:7]) +NMDAY365MASK = list(NMDAY366MASK) +M366RANGE = (0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366) +M365RANGE = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365) +WDAYMASK = [0, 1, 2, 3, 4, 5, 6]*55 +del M29, M30, M31, M365MASK[59], MDAY365MASK[59], NMDAY365MASK[31] +MDAY365MASK = tuple(MDAY365MASK) +M365MASK = tuple(M365MASK) + +FREQNAMES = ['YEARLY', 'MONTHLY', 'WEEKLY', 'DAILY', 'HOURLY', 'MINUTELY', 'SECONDLY'] + +(YEARLY, + MONTHLY, + WEEKLY, + DAILY, + HOURLY, + MINUTELY, + SECONDLY) = list(range(7)) + +# Imported on demand. +easter = None +parser = None + + +class weekday(weekdaybase): + """ + This version of weekday does not allow n = 0. + """ + def __init__(self, wkday, n=None): + if n == 0: + raise ValueError("Can't create weekday with n==0") + + super(weekday, self).__init__(wkday, n) + + +MO, TU, WE, TH, FR, SA, SU = weekdays = tuple(weekday(x) for x in range(7)) + + +def _invalidates_cache(f): + """ + Decorator for rruleset methods which may invalidate the + cached length. + """ + @wraps(f) + def inner_func(self, *args, **kwargs): + rv = f(self, *args, **kwargs) + self._invalidate_cache() + return rv + + return inner_func + + +class rrulebase(object): + def __init__(self, cache=False): + if cache: + self._cache = [] + self._cache_lock = _thread.allocate_lock() + self._invalidate_cache() + else: + self._cache = None + self._cache_complete = False + self._len = None + + def __iter__(self): + if self._cache_complete: + return iter(self._cache) + elif self._cache is None: + return self._iter() + else: + return self._iter_cached() + + def _invalidate_cache(self): + if self._cache is not None: + self._cache = [] + self._cache_complete = False + self._cache_gen = self._iter() + + if self._cache_lock.locked(): + self._cache_lock.release() + + self._len = None + + def _iter_cached(self): + i = 0 + gen = self._cache_gen + cache = self._cache + acquire = self._cache_lock.acquire + release = self._cache_lock.release + while gen: + if i == len(cache): + acquire() + if self._cache_complete: + break + try: + for j in range(10): + cache.append(advance_iterator(gen)) + except StopIteration: + self._cache_gen = gen = None + self._cache_complete = True + break + release() + yield cache[i] + i += 1 + while i < self._len: + yield cache[i] + i += 1 + + def __getitem__(self, item): + if self._cache_complete: + return self._cache[item] + elif isinstance(item, slice): + if item.step and item.step < 0: + return list(iter(self))[item] + else: + return list(itertools.islice(self, + item.start or 0, + item.stop or sys.maxsize, + item.step or 1)) + elif item >= 0: + gen = iter(self) + try: + for i in range(item+1): + res = advance_iterator(gen) + except StopIteration: + raise IndexError + return res + else: + return list(iter(self))[item] + + def __contains__(self, item): + if self._cache_complete: + return item in self._cache + else: + for i in self: + if i == item: + return True + elif i > item: + return False + return False + + # __len__() introduces a large performance penalty. + def count(self): + """ Returns the number of recurrences in this set. It will have go + through the whole recurrence, if this hasn't been done before. """ + if self._len is None: + for x in self: + pass + return self._len + + def before(self, dt, inc=False): + """ Returns the last recurrence before the given datetime instance. The + inc keyword defines what happens if dt is an occurrence. With + inc=True, if dt itself is an occurrence, it will be returned. """ + if self._cache_complete: + gen = self._cache + else: + gen = self + last = None + if inc: + for i in gen: + if i > dt: + break + last = i + else: + for i in gen: + if i >= dt: + break + last = i + return last + + def after(self, dt, inc=False): + """ Returns the first recurrence after the given datetime instance. The + inc keyword defines what happens if dt is an occurrence. With + inc=True, if dt itself is an occurrence, it will be returned. """ + if self._cache_complete: + gen = self._cache + else: + gen = self + if inc: + for i in gen: + if i >= dt: + return i + else: + for i in gen: + if i > dt: + return i + return None + + def xafter(self, dt, count=None, inc=False): + """ + Generator which yields up to `count` recurrences after the given + datetime instance, equivalent to `after`. + + :param dt: + The datetime at which to start generating recurrences. + + :param count: + The maximum number of recurrences to generate. If `None` (default), + dates are generated until the recurrence rule is exhausted. + + :param inc: + If `dt` is an instance of the rule and `inc` is `True`, it is + included in the output. + + :yields: Yields a sequence of `datetime` objects. + """ + + if self._cache_complete: + gen = self._cache + else: + gen = self + + # Select the comparison function + if inc: + comp = lambda dc, dtc: dc >= dtc + else: + comp = lambda dc, dtc: dc > dtc + + # Generate dates + n = 0 + for d in gen: + if comp(d, dt): + if count is not None: + n += 1 + if n > count: + break + + yield d + + def between(self, after, before, inc=False, count=1): + """ Returns all the occurrences of the rrule between after and before. + The inc keyword defines what happens if after and/or before are + themselves occurrences. With inc=True, they will be included in the + list, if they are found in the recurrence set. """ + if self._cache_complete: + gen = self._cache + else: + gen = self + started = False + l = [] + if inc: + for i in gen: + if i > before: + break + elif not started: + if i >= after: + started = True + l.append(i) + else: + l.append(i) + else: + for i in gen: + if i >= before: + break + elif not started: + if i > after: + started = True + l.append(i) + else: + l.append(i) + return l + + +class rrule(rrulebase): + """ + That's the base of the rrule operation. It accepts all the keywords + defined in the RFC as its constructor parameters (except byday, + which was renamed to byweekday) and more. The constructor prototype is:: + + rrule(freq) + + Where freq must be one of YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, + or SECONDLY. + + .. note:: + Per RFC section 3.3.10, recurrence instances falling on invalid dates + and times are ignored rather than coerced: + + Recurrence rules may generate recurrence instances with an invalid + date (e.g., February 30) or nonexistent local time (e.g., 1:30 AM + on a day where the local time is moved forward by an hour at 1:00 + AM). Such recurrence instances MUST be ignored and MUST NOT be + counted as part of the recurrence set. + + This can lead to possibly surprising behavior when, for example, the + start date occurs at the end of the month: + + >>> from dateutil.rrule import rrule, MONTHLY + >>> from datetime import datetime + >>> start_date = datetime(2014, 12, 31) + >>> list(rrule(freq=MONTHLY, count=4, dtstart=start_date)) + ... # doctest: +NORMALIZE_WHITESPACE + [datetime.datetime(2014, 12, 31, 0, 0), + datetime.datetime(2015, 1, 31, 0, 0), + datetime.datetime(2015, 3, 31, 0, 0), + datetime.datetime(2015, 5, 31, 0, 0)] + + Additionally, it supports the following keyword arguments: + + :param dtstart: + The recurrence start. Besides being the base for the recurrence, + missing parameters in the final recurrence instances will also be + extracted from this date. If not given, datetime.now() will be used + instead. + :param interval: + The interval between each freq iteration. For example, when using + YEARLY, an interval of 2 means once every two years, but with HOURLY, + it means once every two hours. The default interval is 1. + :param wkst: + The week start day. Must be one of the MO, TU, WE constants, or an + integer, specifying the first day of the week. This will affect + recurrences based on weekly periods. The default week start is got + from calendar.firstweekday(), and may be modified by + calendar.setfirstweekday(). + :param count: + If given, this determines how many occurrences will be generated. + + .. note:: + As of version 2.5.0, the use of the keyword ``until`` in conjunction + with ``count`` is deprecated, to make sure ``dateutil`` is fully + compliant with `RFC-5545 Sec. 3.3.10 `_. Therefore, ``until`` and ``count`` + **must not** occur in the same call to ``rrule``. + :param until: + If given, this must be a datetime instance specifying the upper-bound + limit of the recurrence. The last recurrence in the rule is the greatest + datetime that is less than or equal to the value specified in the + ``until`` parameter. + + .. note:: + As of version 2.5.0, the use of the keyword ``until`` in conjunction + with ``count`` is deprecated, to make sure ``dateutil`` is fully + compliant with `RFC-5545 Sec. 3.3.10 `_. Therefore, ``until`` and ``count`` + **must not** occur in the same call to ``rrule``. + :param bysetpos: + If given, it must be either an integer, or a sequence of integers, + positive or negative. Each given integer will specify an occurrence + number, corresponding to the nth occurrence of the rule inside the + frequency period. For example, a bysetpos of -1 if combined with a + MONTHLY frequency, and a byweekday of (MO, TU, WE, TH, FR), will + result in the last work day of every month. + :param bymonth: + If given, it must be either an integer, or a sequence of integers, + meaning the months to apply the recurrence to. + :param bymonthday: + If given, it must be either an integer, or a sequence of integers, + meaning the month days to apply the recurrence to. + :param byyearday: + If given, it must be either an integer, or a sequence of integers, + meaning the year days to apply the recurrence to. + :param byeaster: + If given, it must be either an integer, or a sequence of integers, + positive or negative. Each integer will define an offset from the + Easter Sunday. Passing the offset 0 to byeaster will yield the Easter + Sunday itself. This is an extension to the RFC specification. + :param byweekno: + If given, it must be either an integer, or a sequence of integers, + meaning the week numbers to apply the recurrence to. Week numbers + have the meaning described in ISO8601, that is, the first week of + the year is that containing at least four days of the new year. + :param byweekday: + If given, it must be either an integer (0 == MO), a sequence of + integers, one of the weekday constants (MO, TU, etc), or a sequence + of these constants. When given, these variables will define the + weekdays where the recurrence will be applied. It's also possible to + use an argument n for the weekday instances, which will mean the nth + occurrence of this weekday in the period. For example, with MONTHLY, + or with YEARLY and BYMONTH, using FR(+1) in byweekday will specify the + first friday of the month where the recurrence happens. Notice that in + the RFC documentation, this is specified as BYDAY, but was renamed to + avoid the ambiguity of that keyword. + :param byhour: + If given, it must be either an integer, or a sequence of integers, + meaning the hours to apply the recurrence to. + :param byminute: + If given, it must be either an integer, or a sequence of integers, + meaning the minutes to apply the recurrence to. + :param bysecond: + If given, it must be either an integer, or a sequence of integers, + meaning the seconds to apply the recurrence to. + :param cache: + If given, it must be a boolean value specifying to enable or disable + caching of results. If you will use the same rrule instance multiple + times, enabling caching will improve the performance considerably. + """ + def __init__(self, freq, dtstart=None, + interval=1, wkst=None, count=None, until=None, bysetpos=None, + bymonth=None, bymonthday=None, byyearday=None, byeaster=None, + byweekno=None, byweekday=None, + byhour=None, byminute=None, bysecond=None, + cache=False): + super(rrule, self).__init__(cache) + global easter + if not dtstart: + if until and until.tzinfo: + dtstart = datetime.datetime.now(tz=until.tzinfo).replace(microsecond=0) + else: + dtstart = datetime.datetime.now().replace(microsecond=0) + elif not isinstance(dtstart, datetime.datetime): + dtstart = datetime.datetime.fromordinal(dtstart.toordinal()) + else: + dtstart = dtstart.replace(microsecond=0) + self._dtstart = dtstart + self._tzinfo = dtstart.tzinfo + self._freq = freq + self._interval = interval + self._count = count + + # Cache the original byxxx rules, if they are provided, as the _byxxx + # attributes do not necessarily map to the inputs, and this can be + # a problem in generating the strings. Only store things if they've + # been supplied (the string retrieval will just use .get()) + self._original_rule = {} + + if until and not isinstance(until, datetime.datetime): + until = datetime.datetime.fromordinal(until.toordinal()) + self._until = until + + if self._dtstart and self._until: + if (self._dtstart.tzinfo is not None) != (self._until.tzinfo is not None): + # According to RFC5545 Section 3.3.10: + # https://tools.ietf.org/html/rfc5545#section-3.3.10 + # + # > If the "DTSTART" property is specified as a date with UTC + # > time or a date with local time and time zone reference, + # > then the UNTIL rule part MUST be specified as a date with + # > UTC time. + raise ValueError( + 'RRULE UNTIL values must be specified in UTC when DTSTART ' + 'is timezone-aware' + ) + + if count is not None and until: + warn("Using both 'count' and 'until' is inconsistent with RFC 5545" + " and has been deprecated in dateutil. Future versions will " + "raise an error.", DeprecationWarning) + + if wkst is None: + self._wkst = calendar.firstweekday() + elif isinstance(wkst, integer_types): + self._wkst = wkst + else: + self._wkst = wkst.weekday + + if bysetpos is None: + self._bysetpos = None + elif isinstance(bysetpos, integer_types): + if bysetpos == 0 or not (-366 <= bysetpos <= 366): + raise ValueError("bysetpos must be between 1 and 366, " + "or between -366 and -1") + self._bysetpos = (bysetpos,) + else: + self._bysetpos = tuple(bysetpos) + for pos in self._bysetpos: + if pos == 0 or not (-366 <= pos <= 366): + raise ValueError("bysetpos must be between 1 and 366, " + "or between -366 and -1") + + if self._bysetpos: + self._original_rule['bysetpos'] = self._bysetpos + + if (byweekno is None and byyearday is None and bymonthday is None and + byweekday is None and byeaster is None): + if freq == YEARLY: + if bymonth is None: + bymonth = dtstart.month + self._original_rule['bymonth'] = None + bymonthday = dtstart.day + self._original_rule['bymonthday'] = None + elif freq == MONTHLY: + bymonthday = dtstart.day + self._original_rule['bymonthday'] = None + elif freq == WEEKLY: + byweekday = dtstart.weekday() + self._original_rule['byweekday'] = None + + # bymonth + if bymonth is None: + self._bymonth = None + else: + if isinstance(bymonth, integer_types): + bymonth = (bymonth,) + + self._bymonth = tuple(sorted(set(bymonth))) + + if 'bymonth' not in self._original_rule: + self._original_rule['bymonth'] = self._bymonth + + # byyearday + if byyearday is None: + self._byyearday = None + else: + if isinstance(byyearday, integer_types): + byyearday = (byyearday,) + + self._byyearday = tuple(sorted(set(byyearday))) + self._original_rule['byyearday'] = self._byyearday + + # byeaster + if byeaster is not None: + if not easter: + from dateutil import easter + if isinstance(byeaster, integer_types): + self._byeaster = (byeaster,) + else: + self._byeaster = tuple(sorted(byeaster)) + + self._original_rule['byeaster'] = self._byeaster + else: + self._byeaster = None + + # bymonthday + if bymonthday is None: + self._bymonthday = () + self._bynmonthday = () + else: + if isinstance(bymonthday, integer_types): + bymonthday = (bymonthday,) + + bymonthday = set(bymonthday) # Ensure it's unique + + self._bymonthday = tuple(sorted(x for x in bymonthday if x > 0)) + self._bynmonthday = tuple(sorted(x for x in bymonthday if x < 0)) + + # Storing positive numbers first, then negative numbers + if 'bymonthday' not in self._original_rule: + self._original_rule['bymonthday'] = tuple( + itertools.chain(self._bymonthday, self._bynmonthday)) + + # byweekno + if byweekno is None: + self._byweekno = None + else: + if isinstance(byweekno, integer_types): + byweekno = (byweekno,) + + self._byweekno = tuple(sorted(set(byweekno))) + + self._original_rule['byweekno'] = self._byweekno + + # byweekday / bynweekday + if byweekday is None: + self._byweekday = None + self._bynweekday = None + else: + # If it's one of the valid non-sequence types, convert to a + # single-element sequence before the iterator that builds the + # byweekday set. + if isinstance(byweekday, integer_types) or hasattr(byweekday, "n"): + byweekday = (byweekday,) + + self._byweekday = set() + self._bynweekday = set() + for wday in byweekday: + if isinstance(wday, integer_types): + self._byweekday.add(wday) + elif not wday.n or freq > MONTHLY: + self._byweekday.add(wday.weekday) + else: + self._bynweekday.add((wday.weekday, wday.n)) + + if not self._byweekday: + self._byweekday = None + elif not self._bynweekday: + self._bynweekday = None + + if self._byweekday is not None: + self._byweekday = tuple(sorted(self._byweekday)) + orig_byweekday = [weekday(x) for x in self._byweekday] + else: + orig_byweekday = () + + if self._bynweekday is not None: + self._bynweekday = tuple(sorted(self._bynweekday)) + orig_bynweekday = [weekday(*x) for x in self._bynweekday] + else: + orig_bynweekday = () + + if 'byweekday' not in self._original_rule: + self._original_rule['byweekday'] = tuple(itertools.chain( + orig_byweekday, orig_bynweekday)) + + # byhour + if byhour is None: + if freq < HOURLY: + self._byhour = {dtstart.hour} + else: + self._byhour = None + else: + if isinstance(byhour, integer_types): + byhour = (byhour,) + + if freq == HOURLY: + self._byhour = self.__construct_byset(start=dtstart.hour, + byxxx=byhour, + base=24) + else: + self._byhour = set(byhour) + + self._byhour = tuple(sorted(self._byhour)) + self._original_rule['byhour'] = self._byhour + + # byminute + if byminute is None: + if freq < MINUTELY: + self._byminute = {dtstart.minute} + else: + self._byminute = None + else: + if isinstance(byminute, integer_types): + byminute = (byminute,) + + if freq == MINUTELY: + self._byminute = self.__construct_byset(start=dtstart.minute, + byxxx=byminute, + base=60) + else: + self._byminute = set(byminute) + + self._byminute = tuple(sorted(self._byminute)) + self._original_rule['byminute'] = self._byminute + + # bysecond + if bysecond is None: + if freq < SECONDLY: + self._bysecond = ((dtstart.second,)) + else: + self._bysecond = None + else: + if isinstance(bysecond, integer_types): + bysecond = (bysecond,) + + self._bysecond = set(bysecond) + + if freq == SECONDLY: + self._bysecond = self.__construct_byset(start=dtstart.second, + byxxx=bysecond, + base=60) + else: + self._bysecond = set(bysecond) + + self._bysecond = tuple(sorted(self._bysecond)) + self._original_rule['bysecond'] = self._bysecond + + if self._freq >= HOURLY: + self._timeset = None + else: + self._timeset = [] + for hour in self._byhour: + for minute in self._byminute: + for second in self._bysecond: + self._timeset.append( + datetime.time(hour, minute, second, + tzinfo=self._tzinfo)) + self._timeset.sort() + self._timeset = tuple(self._timeset) + + def __str__(self): + """ + Output a string that would generate this RRULE if passed to rrulestr. + This is mostly compatible with RFC5545, except for the + dateutil-specific extension BYEASTER. + """ + + output = [] + h, m, s = [None] * 3 + if self._dtstart: + output.append(self._dtstart.strftime('DTSTART:%Y%m%dT%H%M%S')) + h, m, s = self._dtstart.timetuple()[3:6] + + parts = ['FREQ=' + FREQNAMES[self._freq]] + if self._interval != 1: + parts.append('INTERVAL=' + str(self._interval)) + + if self._wkst: + parts.append('WKST=' + repr(weekday(self._wkst))[0:2]) + + if self._count is not None: + parts.append('COUNT=' + str(self._count)) + + if self._until: + parts.append(self._until.strftime('UNTIL=%Y%m%dT%H%M%S')) + + if self._original_rule.get('byweekday') is not None: + # The str() method on weekday objects doesn't generate + # RFC5545-compliant strings, so we should modify that. + original_rule = dict(self._original_rule) + wday_strings = [] + for wday in original_rule['byweekday']: + if wday.n: + wday_strings.append('{n:+d}{wday}'.format( + n=wday.n, + wday=repr(wday)[0:2])) + else: + wday_strings.append(repr(wday)) + + original_rule['byweekday'] = wday_strings + else: + original_rule = self._original_rule + + partfmt = '{name}={vals}' + for name, key in [('BYSETPOS', 'bysetpos'), + ('BYMONTH', 'bymonth'), + ('BYMONTHDAY', 'bymonthday'), + ('BYYEARDAY', 'byyearday'), + ('BYWEEKNO', 'byweekno'), + ('BYDAY', 'byweekday'), + ('BYHOUR', 'byhour'), + ('BYMINUTE', 'byminute'), + ('BYSECOND', 'bysecond'), + ('BYEASTER', 'byeaster')]: + value = original_rule.get(key) + if value: + parts.append(partfmt.format(name=name, vals=(','.join(str(v) + for v in value)))) + + output.append('RRULE:' + ';'.join(parts)) + return '\n'.join(output) + + def replace(self, **kwargs): + """Return new rrule with same attributes except for those attributes given new + values by whichever keyword arguments are specified.""" + new_kwargs = {"interval": self._interval, + "count": self._count, + "dtstart": self._dtstart, + "freq": self._freq, + "until": self._until, + "wkst": self._wkst, + "cache": False if self._cache is None else True } + new_kwargs.update(self._original_rule) + new_kwargs.update(kwargs) + return rrule(**new_kwargs) + + def _iter(self): + year, month, day, hour, minute, second, weekday, yearday, _ = \ + self._dtstart.timetuple() + + # Some local variables to speed things up a bit + freq = self._freq + interval = self._interval + wkst = self._wkst + until = self._until + bymonth = self._bymonth + byweekno = self._byweekno + byyearday = self._byyearday + byweekday = self._byweekday + byeaster = self._byeaster + bymonthday = self._bymonthday + bynmonthday = self._bynmonthday + bysetpos = self._bysetpos + byhour = self._byhour + byminute = self._byminute + bysecond = self._bysecond + + ii = _iterinfo(self) + ii.rebuild(year, month) + + getdayset = {YEARLY: ii.ydayset, + MONTHLY: ii.mdayset, + WEEKLY: ii.wdayset, + DAILY: ii.ddayset, + HOURLY: ii.ddayset, + MINUTELY: ii.ddayset, + SECONDLY: ii.ddayset}[freq] + + if freq < HOURLY: + timeset = self._timeset + else: + gettimeset = {HOURLY: ii.htimeset, + MINUTELY: ii.mtimeset, + SECONDLY: ii.stimeset}[freq] + if ((freq >= HOURLY and + self._byhour and hour not in self._byhour) or + (freq >= MINUTELY and + self._byminute and minute not in self._byminute) or + (freq >= SECONDLY and + self._bysecond and second not in self._bysecond)): + timeset = () + else: + timeset = gettimeset(hour, minute, second) + + total = 0 + count = self._count + while True: + # Get dayset with the right frequency + dayset, start, end = getdayset(year, month, day) + + # Do the "hard" work ;-) + filtered = False + for i in dayset[start:end]: + if ((bymonth and ii.mmask[i] not in bymonth) or + (byweekno and not ii.wnomask[i]) or + (byweekday and ii.wdaymask[i] not in byweekday) or + (ii.nwdaymask and not ii.nwdaymask[i]) or + (byeaster and not ii.eastermask[i]) or + ((bymonthday or bynmonthday) and + ii.mdaymask[i] not in bymonthday and + ii.nmdaymask[i] not in bynmonthday) or + (byyearday and + ((i < ii.yearlen and i+1 not in byyearday and + -ii.yearlen+i not in byyearday) or + (i >= ii.yearlen and i+1-ii.yearlen not in byyearday and + -ii.nextyearlen+i-ii.yearlen not in byyearday)))): + dayset[i] = None + filtered = True + + # Output results + if bysetpos and timeset: + poslist = [] + for pos in bysetpos: + if pos < 0: + daypos, timepos = divmod(pos, len(timeset)) + else: + daypos, timepos = divmod(pos-1, len(timeset)) + try: + i = [x for x in dayset[start:end] + if x is not None][daypos] + time = timeset[timepos] + except IndexError: + pass + else: + date = datetime.date.fromordinal(ii.yearordinal+i) + res = datetime.datetime.combine(date, time) + if res not in poslist: + poslist.append(res) + poslist.sort() + for res in poslist: + if until and res > until: + self._len = total + return + elif res >= self._dtstart: + if count is not None: + count -= 1 + if count < 0: + self._len = total + return + total += 1 + yield res + else: + for i in dayset[start:end]: + if i is not None: + date = datetime.date.fromordinal(ii.yearordinal + i) + for time in timeset: + res = datetime.datetime.combine(date, time) + if until and res > until: + self._len = total + return + elif res >= self._dtstart: + if count is not None: + count -= 1 + if count < 0: + self._len = total + return + + total += 1 + yield res + + # Handle frequency and interval + fixday = False + if freq == YEARLY: + year += interval + if year > datetime.MAXYEAR: + self._len = total + return + ii.rebuild(year, month) + elif freq == MONTHLY: + month += interval + if month > 12: + div, mod = divmod(month, 12) + month = mod + year += div + if month == 0: + month = 12 + year -= 1 + if year > datetime.MAXYEAR: + self._len = total + return + ii.rebuild(year, month) + elif freq == WEEKLY: + if wkst > weekday: + day += -(weekday+1+(6-wkst))+self._interval*7 + else: + day += -(weekday-wkst)+self._interval*7 + weekday = wkst + fixday = True + elif freq == DAILY: + day += interval + fixday = True + elif freq == HOURLY: + if filtered: + # Jump to one iteration before next day + hour += ((23-hour)//interval)*interval + + if byhour: + ndays, hour = self.__mod_distance(value=hour, + byxxx=self._byhour, + base=24) + else: + ndays, hour = divmod(hour+interval, 24) + + if ndays: + day += ndays + fixday = True + + timeset = gettimeset(hour, minute, second) + elif freq == MINUTELY: + if filtered: + # Jump to one iteration before next day + minute += ((1439-(hour*60+minute))//interval)*interval + + valid = False + rep_rate = (24*60) + for j in range(rep_rate // gcd(interval, rep_rate)): + if byminute: + nhours, minute = \ + self.__mod_distance(value=minute, + byxxx=self._byminute, + base=60) + else: + nhours, minute = divmod(minute+interval, 60) + + div, hour = divmod(hour+nhours, 24) + if div: + day += div + fixday = True + filtered = False + + if not byhour or hour in byhour: + valid = True + break + + if not valid: + raise ValueError('Invalid combination of interval and ' + + 'byhour resulting in empty rule.') + + timeset = gettimeset(hour, minute, second) + elif freq == SECONDLY: + if filtered: + # Jump to one iteration before next day + second += (((86399 - (hour * 3600 + minute * 60 + second)) + // interval) * interval) + + rep_rate = (24 * 3600) + valid = False + for j in range(0, rep_rate // gcd(interval, rep_rate)): + if bysecond: + nminutes, second = \ + self.__mod_distance(value=second, + byxxx=self._bysecond, + base=60) + else: + nminutes, second = divmod(second+interval, 60) + + div, minute = divmod(minute+nminutes, 60) + if div: + hour += div + div, hour = divmod(hour, 24) + if div: + day += div + fixday = True + + if ((not byhour or hour in byhour) and + (not byminute or minute in byminute) and + (not bysecond or second in bysecond)): + valid = True + break + + if not valid: + raise ValueError('Invalid combination of interval, ' + + 'byhour and byminute resulting in empty' + + ' rule.') + + timeset = gettimeset(hour, minute, second) + + if fixday and day > 28: + daysinmonth = calendar.monthrange(year, month)[1] + if day > daysinmonth: + while day > daysinmonth: + day -= daysinmonth + month += 1 + if month == 13: + month = 1 + year += 1 + if year > datetime.MAXYEAR: + self._len = total + return + daysinmonth = calendar.monthrange(year, month)[1] + ii.rebuild(year, month) + + def __construct_byset(self, start, byxxx, base): + """ + If a `BYXXX` sequence is passed to the constructor at the same level as + `FREQ` (e.g. `FREQ=HOURLY,BYHOUR={2,4,7},INTERVAL=3`), there are some + specifications which cannot be reached given some starting conditions. + + This occurs whenever the interval is not coprime with the base of a + given unit and the difference between the starting position and the + ending position is not coprime with the greatest common denominator + between the interval and the base. For example, with a FREQ of hourly + starting at 17:00 and an interval of 4, the only valid values for + BYHOUR would be {21, 1, 5, 9, 13, 17}, because 4 and 24 are not + coprime. + + :param start: + Specifies the starting position. + :param byxxx: + An iterable containing the list of allowed values. + :param base: + The largest allowable value for the specified frequency (e.g. + 24 hours, 60 minutes). + + This does not preserve the type of the iterable, returning a set, since + the values should be unique and the order is irrelevant, this will + speed up later lookups. + + In the event of an empty set, raises a :exception:`ValueError`, as this + results in an empty rrule. + """ + + cset = set() + + # Support a single byxxx value. + if isinstance(byxxx, integer_types): + byxxx = (byxxx, ) + + for num in byxxx: + i_gcd = gcd(self._interval, base) + # Use divmod rather than % because we need to wrap negative nums. + if i_gcd == 1 or divmod(num - start, i_gcd)[1] == 0: + cset.add(num) + + if len(cset) == 0: + raise ValueError("Invalid rrule byxxx generates an empty set.") + + return cset + + def __mod_distance(self, value, byxxx, base): + """ + Calculates the next value in a sequence where the `FREQ` parameter is + specified along with a `BYXXX` parameter at the same "level" + (e.g. `HOURLY` specified with `BYHOUR`). + + :param value: + The old value of the component. + :param byxxx: + The `BYXXX` set, which should have been generated by + `rrule._construct_byset`, or something else which checks that a + valid rule is present. + :param base: + The largest allowable value for the specified frequency (e.g. + 24 hours, 60 minutes). + + If a valid value is not found after `base` iterations (the maximum + number before the sequence would start to repeat), this raises a + :exception:`ValueError`, as no valid values were found. + + This returns a tuple of `divmod(n*interval, base)`, where `n` is the + smallest number of `interval` repetitions until the next specified + value in `byxxx` is found. + """ + accumulator = 0 + for ii in range(1, base + 1): + # Using divmod() over % to account for negative intervals + div, value = divmod(value + self._interval, base) + accumulator += div + if value in byxxx: + return (accumulator, value) + + +class _iterinfo(object): + __slots__ = ["rrule", "lastyear", "lastmonth", + "yearlen", "nextyearlen", "yearordinal", "yearweekday", + "mmask", "mrange", "mdaymask", "nmdaymask", + "wdaymask", "wnomask", "nwdaymask", "eastermask"] + + def __init__(self, rrule): + for attr in self.__slots__: + setattr(self, attr, None) + self.rrule = rrule + + def rebuild(self, year, month): + # Every mask is 7 days longer to handle cross-year weekly periods. + rr = self.rrule + if year != self.lastyear: + self.yearlen = 365 + calendar.isleap(year) + self.nextyearlen = 365 + calendar.isleap(year + 1) + firstyday = datetime.date(year, 1, 1) + self.yearordinal = firstyday.toordinal() + self.yearweekday = firstyday.weekday() + + wday = datetime.date(year, 1, 1).weekday() + if self.yearlen == 365: + self.mmask = M365MASK + self.mdaymask = MDAY365MASK + self.nmdaymask = NMDAY365MASK + self.wdaymask = WDAYMASK[wday:] + self.mrange = M365RANGE + else: + self.mmask = M366MASK + self.mdaymask = MDAY366MASK + self.nmdaymask = NMDAY366MASK + self.wdaymask = WDAYMASK[wday:] + self.mrange = M366RANGE + + if not rr._byweekno: + self.wnomask = None + else: + self.wnomask = [0]*(self.yearlen+7) + # no1wkst = firstwkst = self.wdaymask.index(rr._wkst) + no1wkst = firstwkst = (7-self.yearweekday+rr._wkst) % 7 + if no1wkst >= 4: + no1wkst = 0 + # Number of days in the year, plus the days we got + # from last year. + wyearlen = self.yearlen+(self.yearweekday-rr._wkst) % 7 + else: + # Number of days in the year, minus the days we + # left in last year. + wyearlen = self.yearlen-no1wkst + div, mod = divmod(wyearlen, 7) + numweeks = div+mod//4 + for n in rr._byweekno: + if n < 0: + n += numweeks+1 + if not (0 < n <= numweeks): + continue + if n > 1: + i = no1wkst+(n-1)*7 + if no1wkst != firstwkst: + i -= 7-firstwkst + else: + i = no1wkst + for j in range(7): + self.wnomask[i] = 1 + i += 1 + if self.wdaymask[i] == rr._wkst: + break + if 1 in rr._byweekno: + # Check week number 1 of next year as well + # TODO: Check -numweeks for next year. + i = no1wkst+numweeks*7 + if no1wkst != firstwkst: + i -= 7-firstwkst + if i < self.yearlen: + # If week starts in next year, we + # don't care about it. + for j in range(7): + self.wnomask[i] = 1 + i += 1 + if self.wdaymask[i] == rr._wkst: + break + if no1wkst: + # Check last week number of last year as + # well. If no1wkst is 0, either the year + # started on week start, or week number 1 + # got days from last year, so there are no + # days from last year's last week number in + # this year. + if -1 not in rr._byweekno: + lyearweekday = datetime.date(year-1, 1, 1).weekday() + lno1wkst = (7-lyearweekday+rr._wkst) % 7 + lyearlen = 365+calendar.isleap(year-1) + if lno1wkst >= 4: + lno1wkst = 0 + lnumweeks = 52+(lyearlen + + (lyearweekday-rr._wkst) % 7) % 7//4 + else: + lnumweeks = 52+(self.yearlen-no1wkst) % 7//4 + else: + lnumweeks = -1 + if lnumweeks in rr._byweekno: + for i in range(no1wkst): + self.wnomask[i] = 1 + + if (rr._bynweekday and (month != self.lastmonth or + year != self.lastyear)): + ranges = [] + if rr._freq == YEARLY: + if rr._bymonth: + for month in rr._bymonth: + ranges.append(self.mrange[month-1:month+1]) + else: + ranges = [(0, self.yearlen)] + elif rr._freq == MONTHLY: + ranges = [self.mrange[month-1:month+1]] + if ranges: + # Weekly frequency won't get here, so we may not + # care about cross-year weekly periods. + self.nwdaymask = [0]*self.yearlen + for first, last in ranges: + last -= 1 + for wday, n in rr._bynweekday: + if n < 0: + i = last+(n+1)*7 + i -= (self.wdaymask[i]-wday) % 7 + else: + i = first+(n-1)*7 + i += (7-self.wdaymask[i]+wday) % 7 + if first <= i <= last: + self.nwdaymask[i] = 1 + + if rr._byeaster: + self.eastermask = [0]*(self.yearlen+7) + eyday = easter.easter(year).toordinal()-self.yearordinal + for offset in rr._byeaster: + self.eastermask[eyday+offset] = 1 + + self.lastyear = year + self.lastmonth = month + + def ydayset(self, year, month, day): + return list(range(self.yearlen)), 0, self.yearlen + + def mdayset(self, year, month, day): + dset = [None]*self.yearlen + start, end = self.mrange[month-1:month+1] + for i in range(start, end): + dset[i] = i + return dset, start, end + + def wdayset(self, year, month, day): + # We need to handle cross-year weeks here. + dset = [None]*(self.yearlen+7) + i = datetime.date(year, month, day).toordinal()-self.yearordinal + start = i + for j in range(7): + dset[i] = i + i += 1 + # if (not (0 <= i < self.yearlen) or + # self.wdaymask[i] == self.rrule._wkst): + # This will cross the year boundary, if necessary. + if self.wdaymask[i] == self.rrule._wkst: + break + return dset, start, i + + def ddayset(self, year, month, day): + dset = [None] * self.yearlen + i = datetime.date(year, month, day).toordinal() - self.yearordinal + dset[i] = i + return dset, i, i + 1 + + def htimeset(self, hour, minute, second): + tset = [] + rr = self.rrule + for minute in rr._byminute: + for second in rr._bysecond: + tset.append(datetime.time(hour, minute, second, + tzinfo=rr._tzinfo)) + tset.sort() + return tset + + def mtimeset(self, hour, minute, second): + tset = [] + rr = self.rrule + for second in rr._bysecond: + tset.append(datetime.time(hour, minute, second, tzinfo=rr._tzinfo)) + tset.sort() + return tset + + def stimeset(self, hour, minute, second): + return (datetime.time(hour, minute, second, + tzinfo=self.rrule._tzinfo),) + + +class rruleset(rrulebase): + """ The rruleset type allows more complex recurrence setups, mixing + multiple rules, dates, exclusion rules, and exclusion dates. The type + constructor takes the following keyword arguments: + + :param cache: If True, caching of results will be enabled, improving + performance of multiple queries considerably. """ + + class _genitem(object): + def __init__(self, genlist, gen): + try: + self.dt = advance_iterator(gen) + genlist.append(self) + except StopIteration: + pass + self.genlist = genlist + self.gen = gen + + def __next__(self): + try: + self.dt = advance_iterator(self.gen) + except StopIteration: + if self.genlist[0] is self: + heapq.heappop(self.genlist) + else: + self.genlist.remove(self) + heapq.heapify(self.genlist) + + next = __next__ + + def __lt__(self, other): + return self.dt < other.dt + + def __gt__(self, other): + return self.dt > other.dt + + def __eq__(self, other): + return self.dt == other.dt + + def __ne__(self, other): + return self.dt != other.dt + + def __init__(self, cache=False): + super(rruleset, self).__init__(cache) + self._rrule = [] + self._rdate = [] + self._exrule = [] + self._exdate = [] + + @_invalidates_cache + def rrule(self, rrule): + """ Include the given :py:class:`rrule` instance in the recurrence set + generation. """ + self._rrule.append(rrule) + + @_invalidates_cache + def rdate(self, rdate): + """ Include the given :py:class:`datetime` instance in the recurrence + set generation. """ + self._rdate.append(rdate) + + @_invalidates_cache + def exrule(self, exrule): + """ Include the given rrule instance in the recurrence set exclusion + list. Dates which are part of the given recurrence rules will not + be generated, even if some inclusive rrule or rdate matches them. + """ + self._exrule.append(exrule) + + @_invalidates_cache + def exdate(self, exdate): + """ Include the given datetime instance in the recurrence set + exclusion list. Dates included that way will not be generated, + even if some inclusive rrule or rdate matches them. """ + self._exdate.append(exdate) + + def _iter(self): + rlist = [] + self._rdate.sort() + self._genitem(rlist, iter(self._rdate)) + for gen in [iter(x) for x in self._rrule]: + self._genitem(rlist, gen) + exlist = [] + self._exdate.sort() + self._genitem(exlist, iter(self._exdate)) + for gen in [iter(x) for x in self._exrule]: + self._genitem(exlist, gen) + lastdt = None + total = 0 + heapq.heapify(rlist) + heapq.heapify(exlist) + while rlist: + ritem = rlist[0] + if not lastdt or lastdt != ritem.dt: + while exlist and exlist[0] < ritem: + exitem = exlist[0] + advance_iterator(exitem) + if exlist and exlist[0] is exitem: + heapq.heapreplace(exlist, exitem) + if not exlist or ritem != exlist[0]: + total += 1 + yield ritem.dt + lastdt = ritem.dt + advance_iterator(ritem) + if rlist and rlist[0] is ritem: + heapq.heapreplace(rlist, ritem) + self._len = total + + + + +class _rrulestr(object): + """ Parses a string representation of a recurrence rule or set of + recurrence rules. + + :param s: + Required, a string defining one or more recurrence rules. + + :param dtstart: + If given, used as the default recurrence start if not specified in the + rule string. + + :param cache: + If set ``True`` caching of results will be enabled, improving + performance of multiple queries considerably. + + :param unfold: + If set ``True`` indicates that a rule string is split over more + than one line and should be joined before processing. + + :param forceset: + If set ``True`` forces a :class:`dateutil.rrule.rruleset` to + be returned. + + :param compatible: + If set ``True`` forces ``unfold`` and ``forceset`` to be ``True``. + + :param ignoretz: + If set ``True``, time zones in parsed strings are ignored and a naive + :class:`datetime.datetime` object is returned. + + :param tzids: + If given, a callable or mapping used to retrieve a + :class:`datetime.tzinfo` from a string representation. + Defaults to :func:`dateutil.tz.gettz`. + + :param tzinfos: + Additional time zone names / aliases which may be present in a string + representation. See :func:`dateutil.parser.parse` for more + information. + + :return: + Returns a :class:`dateutil.rrule.rruleset` or + :class:`dateutil.rrule.rrule` + """ + + _freq_map = {"YEARLY": YEARLY, + "MONTHLY": MONTHLY, + "WEEKLY": WEEKLY, + "DAILY": DAILY, + "HOURLY": HOURLY, + "MINUTELY": MINUTELY, + "SECONDLY": SECONDLY} + + _weekday_map = {"MO": 0, "TU": 1, "WE": 2, "TH": 3, + "FR": 4, "SA": 5, "SU": 6} + + def _handle_int(self, rrkwargs, name, value, **kwargs): + rrkwargs[name.lower()] = int(value) + + def _handle_int_list(self, rrkwargs, name, value, **kwargs): + rrkwargs[name.lower()] = [int(x) for x in value.split(',')] + + _handle_INTERVAL = _handle_int + _handle_COUNT = _handle_int + _handle_BYSETPOS = _handle_int_list + _handle_BYMONTH = _handle_int_list + _handle_BYMONTHDAY = _handle_int_list + _handle_BYYEARDAY = _handle_int_list + _handle_BYEASTER = _handle_int_list + _handle_BYWEEKNO = _handle_int_list + _handle_BYHOUR = _handle_int_list + _handle_BYMINUTE = _handle_int_list + _handle_BYSECOND = _handle_int_list + + def _handle_FREQ(self, rrkwargs, name, value, **kwargs): + rrkwargs["freq"] = self._freq_map[value] + + def _handle_UNTIL(self, rrkwargs, name, value, **kwargs): + global parser + if not parser: + from dateutil import parser + try: + rrkwargs["until"] = parser.parse(value, + ignoretz=kwargs.get("ignoretz"), + tzinfos=kwargs.get("tzinfos")) + except ValueError: + raise ValueError("invalid until date") + + def _handle_WKST(self, rrkwargs, name, value, **kwargs): + rrkwargs["wkst"] = self._weekday_map[value] + + def _handle_BYWEEKDAY(self, rrkwargs, name, value, **kwargs): + """ + Two ways to specify this: +1MO or MO(+1) + """ + l = [] + for wday in value.split(','): + if '(' in wday: + # If it's of the form TH(+1), etc. + splt = wday.split('(') + w = splt[0] + n = int(splt[1][:-1]) + elif len(wday): + # If it's of the form +1MO + for i in range(len(wday)): + if wday[i] not in '+-0123456789': + break + n = wday[:i] or None + w = wday[i:] + if n: + n = int(n) + else: + raise ValueError("Invalid (empty) BYDAY specification.") + + l.append(weekdays[self._weekday_map[w]](n)) + rrkwargs["byweekday"] = l + + _handle_BYDAY = _handle_BYWEEKDAY + + def _parse_rfc_rrule(self, line, + dtstart=None, + cache=False, + ignoretz=False, + tzinfos=None): + if line.find(':') != -1: + name, value = line.split(':') + if name != "RRULE": + raise ValueError("unknown parameter name") + else: + value = line + rrkwargs = {} + for pair in value.split(';'): + name, value = pair.split('=') + name = name.upper() + value = value.upper() + try: + getattr(self, "_handle_"+name)(rrkwargs, name, value, + ignoretz=ignoretz, + tzinfos=tzinfos) + except AttributeError: + raise ValueError("unknown parameter '%s'" % name) + except (KeyError, ValueError): + raise ValueError("invalid '%s': %s" % (name, value)) + return rrule(dtstart=dtstart, cache=cache, **rrkwargs) + + def _parse_date_value(self, date_value, parms, rule_tzids, + ignoretz, tzids, tzinfos): + global parser + if not parser: + from dateutil import parser + + datevals = [] + value_found = False + TZID = None + + for parm in parms: + if parm.startswith("TZID="): + try: + tzkey = rule_tzids[parm.split('TZID=')[-1]] + except KeyError: + continue + if tzids is None: + from . import tz + tzlookup = tz.gettz + elif callable(tzids): + tzlookup = tzids + else: + tzlookup = getattr(tzids, 'get', None) + if tzlookup is None: + msg = ('tzids must be a callable, mapping, or None, ' + 'not %s' % tzids) + raise ValueError(msg) + + TZID = tzlookup(tzkey) + continue + + # RFC 5445 3.8.2.4: The VALUE parameter is optional, but may be found + # only once. + if parm not in {"VALUE=DATE-TIME", "VALUE=DATE"}: + raise ValueError("unsupported parm: " + parm) + else: + if value_found: + msg = ("Duplicate value parameter found in: " + parm) + raise ValueError(msg) + value_found = True + + for datestr in date_value.split(','): + date = parser.parse(datestr, ignoretz=ignoretz, tzinfos=tzinfos) + if TZID is not None: + if date.tzinfo is None: + date = date.replace(tzinfo=TZID) + else: + raise ValueError('DTSTART/EXDATE specifies multiple timezone') + datevals.append(date) + + return datevals + + def _parse_rfc(self, s, + dtstart=None, + cache=False, + unfold=False, + forceset=False, + compatible=False, + ignoretz=False, + tzids=None, + tzinfos=None): + global parser + if compatible: + forceset = True + unfold = True + + TZID_NAMES = dict(map( + lambda x: (x.upper(), x), + re.findall('TZID=(?P[^:]+):', s) + )) + s = s.upper() + if not s.strip(): + raise ValueError("empty string") + if unfold: + lines = s.splitlines() + i = 0 + while i < len(lines): + line = lines[i].rstrip() + if not line: + del lines[i] + elif i > 0 and line[0] == " ": + lines[i-1] += line[1:] + del lines[i] + else: + i += 1 + else: + lines = s.split() + if (not forceset and len(lines) == 1 and (s.find(':') == -1 or + s.startswith('RRULE:'))): + return self._parse_rfc_rrule(lines[0], cache=cache, + dtstart=dtstart, ignoretz=ignoretz, + tzinfos=tzinfos) + else: + rrulevals = [] + rdatevals = [] + exrulevals = [] + exdatevals = [] + for line in lines: + if not line: + continue + if line.find(':') == -1: + name = "RRULE" + value = line + else: + name, value = line.split(':', 1) + parms = name.split(';') + if not parms: + raise ValueError("empty property name") + name = parms[0] + parms = parms[1:] + if name == "RRULE": + for parm in parms: + raise ValueError("unsupported RRULE parm: "+parm) + rrulevals.append(value) + elif name == "RDATE": + for parm in parms: + if parm != "VALUE=DATE-TIME": + raise ValueError("unsupported RDATE parm: "+parm) + rdatevals.append(value) + elif name == "EXRULE": + for parm in parms: + raise ValueError("unsupported EXRULE parm: "+parm) + exrulevals.append(value) + elif name == "EXDATE": + exdatevals.extend( + self._parse_date_value(value, parms, + TZID_NAMES, ignoretz, + tzids, tzinfos) + ) + elif name == "DTSTART": + dtvals = self._parse_date_value(value, parms, TZID_NAMES, + ignoretz, tzids, tzinfos) + if len(dtvals) != 1: + raise ValueError("Multiple DTSTART values specified:" + + value) + dtstart = dtvals[0] + else: + raise ValueError("unsupported property: "+name) + if (forceset or len(rrulevals) > 1 or rdatevals + or exrulevals or exdatevals): + if not parser and (rdatevals or exdatevals): + from dateutil import parser + rset = rruleset(cache=cache) + for value in rrulevals: + rset.rrule(self._parse_rfc_rrule(value, dtstart=dtstart, + ignoretz=ignoretz, + tzinfos=tzinfos)) + for value in rdatevals: + for datestr in value.split(','): + rset.rdate(parser.parse(datestr, + ignoretz=ignoretz, + tzinfos=tzinfos)) + for value in exrulevals: + rset.exrule(self._parse_rfc_rrule(value, dtstart=dtstart, + ignoretz=ignoretz, + tzinfos=tzinfos)) + for value in exdatevals: + rset.exdate(value) + if compatible and dtstart: + rset.rdate(dtstart) + return rset + else: + return self._parse_rfc_rrule(rrulevals[0], + dtstart=dtstart, + cache=cache, + ignoretz=ignoretz, + tzinfos=tzinfos) + + def __call__(self, s, **kwargs): + return self._parse_rfc(s, **kwargs) + + +rrulestr = _rrulestr() + +# vim:ts=4:sw=4:et diff --git a/frogpilot/third_party/dateutil/tz/__init__.py b/frogpilot/third_party/dateutil/tz/__init__.py new file mode 100644 index 000000000..af1352c47 --- /dev/null +++ b/frogpilot/third_party/dateutil/tz/__init__.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +from .tz import * +from .tz import __doc__ + +__all__ = ["tzutc", "tzoffset", "tzlocal", "tzfile", "tzrange", + "tzstr", "tzical", "tzwin", "tzwinlocal", "gettz", + "enfold", "datetime_ambiguous", "datetime_exists", + "resolve_imaginary", "UTC", "DeprecatedTzFormatWarning"] + + +class DeprecatedTzFormatWarning(Warning): + """Warning raised when time zones are parsed from deprecated formats.""" diff --git a/frogpilot/third_party/dateutil/tz/_common.py b/frogpilot/third_party/dateutil/tz/_common.py new file mode 100644 index 000000000..e6ac11831 --- /dev/null +++ b/frogpilot/third_party/dateutil/tz/_common.py @@ -0,0 +1,419 @@ +from six import PY2 + +from functools import wraps + +from datetime import datetime, timedelta, tzinfo + + +ZERO = timedelta(0) + +__all__ = ['tzname_in_python2', 'enfold'] + + +def tzname_in_python2(namefunc): + """Change unicode output into bytestrings in Python 2 + + tzname() API changed in Python 3. It used to return bytes, but was changed + to unicode strings + """ + if PY2: + @wraps(namefunc) + def adjust_encoding(*args, **kwargs): + name = namefunc(*args, **kwargs) + if name is not None: + name = name.encode() + + return name + + return adjust_encoding + else: + return namefunc + + +# The following is adapted from Alexander Belopolsky's tz library +# https://github.com/abalkin/tz +if hasattr(datetime, 'fold'): + # This is the pre-python 3.6 fold situation + def enfold(dt, fold=1): + """ + Provides a unified interface for assigning the ``fold`` attribute to + datetimes both before and after the implementation of PEP-495. + + :param fold: + The value for the ``fold`` attribute in the returned datetime. This + should be either 0 or 1. + + :return: + Returns an object for which ``getattr(dt, 'fold', 0)`` returns + ``fold`` for all versions of Python. In versions prior to + Python 3.6, this is a ``_DatetimeWithFold`` object, which is a + subclass of :py:class:`datetime.datetime` with the ``fold`` + attribute added, if ``fold`` is 1. + + .. versionadded:: 2.6.0 + """ + return dt.replace(fold=fold) + +else: + class _DatetimeWithFold(datetime): + """ + This is a class designed to provide a PEP 495-compliant interface for + Python versions before 3.6. It is used only for dates in a fold, so + the ``fold`` attribute is fixed at ``1``. + + .. versionadded:: 2.6.0 + """ + __slots__ = () + + def replace(self, *args, **kwargs): + """ + Return a datetime with the same attributes, except for those + attributes given new values by whichever keyword arguments are + specified. Note that tzinfo=None can be specified to create a naive + datetime from an aware datetime with no conversion of date and time + data. + + This is reimplemented in ``_DatetimeWithFold`` because pypy3 will + return a ``datetime.datetime`` even if ``fold`` is unchanged. + """ + argnames = ( + 'year', 'month', 'day', 'hour', 'minute', 'second', + 'microsecond', 'tzinfo' + ) + + for arg, argname in zip(args, argnames): + if argname in kwargs: + raise TypeError('Duplicate argument: {}'.format(argname)) + + kwargs[argname] = arg + + for argname in argnames: + if argname not in kwargs: + kwargs[argname] = getattr(self, argname) + + dt_class = self.__class__ if kwargs.get('fold', 1) else datetime + + return dt_class(**kwargs) + + @property + def fold(self): + return 1 + + def enfold(dt, fold=1): + """ + Provides a unified interface for assigning the ``fold`` attribute to + datetimes both before and after the implementation of PEP-495. + + :param fold: + The value for the ``fold`` attribute in the returned datetime. This + should be either 0 or 1. + + :return: + Returns an object for which ``getattr(dt, 'fold', 0)`` returns + ``fold`` for all versions of Python. In versions prior to + Python 3.6, this is a ``_DatetimeWithFold`` object, which is a + subclass of :py:class:`datetime.datetime` with the ``fold`` + attribute added, if ``fold`` is 1. + + .. versionadded:: 2.6.0 + """ + if getattr(dt, 'fold', 0) == fold: + return dt + + args = dt.timetuple()[:6] + args += (dt.microsecond, dt.tzinfo) + + if fold: + return _DatetimeWithFold(*args) + else: + return datetime(*args) + + +def _validate_fromutc_inputs(f): + """ + The CPython version of ``fromutc`` checks that the input is a ``datetime`` + object and that ``self`` is attached as its ``tzinfo``. + """ + @wraps(f) + def fromutc(self, dt): + if not isinstance(dt, datetime): + raise TypeError("fromutc() requires a datetime argument") + if dt.tzinfo is not self: + raise ValueError("dt.tzinfo is not self") + + return f(self, dt) + + return fromutc + + +class _tzinfo(tzinfo): + """ + Base class for all ``dateutil`` ``tzinfo`` objects. + """ + + def is_ambiguous(self, dt): + """ + Whether or not the "wall time" of a given datetime is ambiguous in this + zone. + + :param dt: + A :py:class:`datetime.datetime`, naive or time zone aware. + + + :return: + Returns ``True`` if ambiguous, ``False`` otherwise. + + .. versionadded:: 2.6.0 + """ + + dt = dt.replace(tzinfo=self) + + wall_0 = enfold(dt, fold=0) + wall_1 = enfold(dt, fold=1) + + same_offset = wall_0.utcoffset() == wall_1.utcoffset() + same_dt = wall_0.replace(tzinfo=None) == wall_1.replace(tzinfo=None) + + return same_dt and not same_offset + + def _fold_status(self, dt_utc, dt_wall): + """ + Determine the fold status of a "wall" datetime, given a representation + of the same datetime as a (naive) UTC datetime. This is calculated based + on the assumption that ``dt.utcoffset() - dt.dst()`` is constant for all + datetimes, and that this offset is the actual number of hours separating + ``dt_utc`` and ``dt_wall``. + + :param dt_utc: + Representation of the datetime as UTC + + :param dt_wall: + Representation of the datetime as "wall time". This parameter must + either have a `fold` attribute or have a fold-naive + :class:`datetime.tzinfo` attached, otherwise the calculation may + fail. + """ + if self.is_ambiguous(dt_wall): + delta_wall = dt_wall - dt_utc + _fold = int(delta_wall == (dt_utc.utcoffset() - dt_utc.dst())) + else: + _fold = 0 + + return _fold + + def _fold(self, dt): + return getattr(dt, 'fold', 0) + + def _fromutc(self, dt): + """ + Given a timezone-aware datetime in a given timezone, calculates a + timezone-aware datetime in a new timezone. + + Since this is the one time that we *know* we have an unambiguous + datetime object, we take this opportunity to determine whether the + datetime is ambiguous and in a "fold" state (e.g. if it's the first + occurrence, chronologically, of the ambiguous datetime). + + :param dt: + A timezone-aware :class:`datetime.datetime` object. + """ + + # Re-implement the algorithm from Python's datetime.py + dtoff = dt.utcoffset() + if dtoff is None: + raise ValueError("fromutc() requires a non-None utcoffset() " + "result") + + # The original datetime.py code assumes that `dst()` defaults to + # zero during ambiguous times. PEP 495 inverts this presumption, so + # for pre-PEP 495 versions of python, we need to tweak the algorithm. + dtdst = dt.dst() + if dtdst is None: + raise ValueError("fromutc() requires a non-None dst() result") + delta = dtoff - dtdst + + dt += delta + # Set fold=1 so we can default to being in the fold for + # ambiguous dates. + dtdst = enfold(dt, fold=1).dst() + if dtdst is None: + raise ValueError("fromutc(): dt.dst gave inconsistent " + "results; cannot convert") + return dt + dtdst + + @_validate_fromutc_inputs + def fromutc(self, dt): + """ + Given a timezone-aware datetime in a given timezone, calculates a + timezone-aware datetime in a new timezone. + + Since this is the one time that we *know* we have an unambiguous + datetime object, we take this opportunity to determine whether the + datetime is ambiguous and in a "fold" state (e.g. if it's the first + occurrence, chronologically, of the ambiguous datetime). + + :param dt: + A timezone-aware :class:`datetime.datetime` object. + """ + dt_wall = self._fromutc(dt) + + # Calculate the fold status given the two datetimes. + _fold = self._fold_status(dt, dt_wall) + + # Set the default fold value for ambiguous dates + return enfold(dt_wall, fold=_fold) + + +class tzrangebase(_tzinfo): + """ + This is an abstract base class for time zones represented by an annual + transition into and out of DST. Child classes should implement the following + methods: + + * ``__init__(self, *args, **kwargs)`` + * ``transitions(self, year)`` - this is expected to return a tuple of + datetimes representing the DST on and off transitions in standard + time. + + A fully initialized ``tzrangebase`` subclass should also provide the + following attributes: + * ``hasdst``: Boolean whether or not the zone uses DST. + * ``_dst_offset`` / ``_std_offset``: :class:`datetime.timedelta` objects + representing the respective UTC offsets. + * ``_dst_abbr`` / ``_std_abbr``: Strings representing the timezone short + abbreviations in DST and STD, respectively. + * ``_hasdst``: Whether or not the zone has DST. + + .. versionadded:: 2.6.0 + """ + def __init__(self): + raise NotImplementedError('tzrangebase is an abstract base class') + + def utcoffset(self, dt): + isdst = self._isdst(dt) + + if isdst is None: + return None + elif isdst: + return self._dst_offset + else: + return self._std_offset + + def dst(self, dt): + isdst = self._isdst(dt) + + if isdst is None: + return None + elif isdst: + return self._dst_base_offset + else: + return ZERO + + @tzname_in_python2 + def tzname(self, dt): + if self._isdst(dt): + return self._dst_abbr + else: + return self._std_abbr + + def fromutc(self, dt): + """ Given a datetime in UTC, return local time """ + if not isinstance(dt, datetime): + raise TypeError("fromutc() requires a datetime argument") + + if dt.tzinfo is not self: + raise ValueError("dt.tzinfo is not self") + + # Get transitions - if there are none, fixed offset + transitions = self.transitions(dt.year) + if transitions is None: + return dt + self.utcoffset(dt) + + # Get the transition times in UTC + dston, dstoff = transitions + + dston -= self._std_offset + dstoff -= self._std_offset + + utc_transitions = (dston, dstoff) + dt_utc = dt.replace(tzinfo=None) + + isdst = self._naive_isdst(dt_utc, utc_transitions) + + if isdst: + dt_wall = dt + self._dst_offset + else: + dt_wall = dt + self._std_offset + + _fold = int(not isdst and self.is_ambiguous(dt_wall)) + + return enfold(dt_wall, fold=_fold) + + def is_ambiguous(self, dt): + """ + Whether or not the "wall time" of a given datetime is ambiguous in this + zone. + + :param dt: + A :py:class:`datetime.datetime`, naive or time zone aware. + + + :return: + Returns ``True`` if ambiguous, ``False`` otherwise. + + .. versionadded:: 2.6.0 + """ + if not self.hasdst: + return False + + start, end = self.transitions(dt.year) + + dt = dt.replace(tzinfo=None) + return (end <= dt < end + self._dst_base_offset) + + def _isdst(self, dt): + if not self.hasdst: + return False + elif dt is None: + return None + + transitions = self.transitions(dt.year) + + if transitions is None: + return False + + dt = dt.replace(tzinfo=None) + + isdst = self._naive_isdst(dt, transitions) + + # Handle ambiguous dates + if not isdst and self.is_ambiguous(dt): + return not self._fold(dt) + else: + return isdst + + def _naive_isdst(self, dt, transitions): + dston, dstoff = transitions + + dt = dt.replace(tzinfo=None) + + if dston < dstoff: + isdst = dston <= dt < dstoff + else: + isdst = not dstoff <= dt < dston + + return isdst + + @property + def _dst_base_offset(self): + return self._dst_offset - self._std_offset + + __hash__ = None + + def __ne__(self, other): + return not (self == other) + + def __repr__(self): + return "%s(...)" % self.__class__.__name__ + + __reduce__ = object.__reduce__ diff --git a/frogpilot/third_party/dateutil/tz/_factories.py b/frogpilot/third_party/dateutil/tz/_factories.py new file mode 100644 index 000000000..f8a65891a --- /dev/null +++ b/frogpilot/third_party/dateutil/tz/_factories.py @@ -0,0 +1,80 @@ +from datetime import timedelta +import weakref +from collections import OrderedDict + +from six.moves import _thread + + +class _TzSingleton(type): + def __init__(cls, *args, **kwargs): + cls.__instance = None + super(_TzSingleton, cls).__init__(*args, **kwargs) + + def __call__(cls): + if cls.__instance is None: + cls.__instance = super(_TzSingleton, cls).__call__() + return cls.__instance + + +class _TzFactory(type): + def instance(cls, *args, **kwargs): + """Alternate constructor that returns a fresh instance""" + return type.__call__(cls, *args, **kwargs) + + +class _TzOffsetFactory(_TzFactory): + def __init__(cls, *args, **kwargs): + cls.__instances = weakref.WeakValueDictionary() + cls.__strong_cache = OrderedDict() + cls.__strong_cache_size = 8 + + cls._cache_lock = _thread.allocate_lock() + + def __call__(cls, name, offset): + if isinstance(offset, timedelta): + key = (name, offset.total_seconds()) + else: + key = (name, offset) + + instance = cls.__instances.get(key, None) + if instance is None: + instance = cls.__instances.setdefault(key, + cls.instance(name, offset)) + + # This lock may not be necessary in Python 3. See GH issue #901 + with cls._cache_lock: + cls.__strong_cache[key] = cls.__strong_cache.pop(key, instance) + + # Remove an item if the strong cache is overpopulated + if len(cls.__strong_cache) > cls.__strong_cache_size: + cls.__strong_cache.popitem(last=False) + + return instance + + +class _TzStrFactory(_TzFactory): + def __init__(cls, *args, **kwargs): + cls.__instances = weakref.WeakValueDictionary() + cls.__strong_cache = OrderedDict() + cls.__strong_cache_size = 8 + + cls.__cache_lock = _thread.allocate_lock() + + def __call__(cls, s, posix_offset=False): + key = (s, posix_offset) + instance = cls.__instances.get(key, None) + + if instance is None: + instance = cls.__instances.setdefault(key, + cls.instance(s, posix_offset)) + + # This lock may not be necessary in Python 3. See GH issue #901 + with cls.__cache_lock: + cls.__strong_cache[key] = cls.__strong_cache.pop(key, instance) + + # Remove an item if the strong cache is overpopulated + if len(cls.__strong_cache) > cls.__strong_cache_size: + cls.__strong_cache.popitem(last=False) + + return instance + diff --git a/frogpilot/third_party/dateutil/tz/tz.py b/frogpilot/third_party/dateutil/tz/tz.py new file mode 100644 index 000000000..617591446 --- /dev/null +++ b/frogpilot/third_party/dateutil/tz/tz.py @@ -0,0 +1,1849 @@ +# -*- coding: utf-8 -*- +""" +This module offers timezone implementations subclassing the abstract +:py:class:`datetime.tzinfo` type. There are classes to handle tzfile format +files (usually are in :file:`/etc/localtime`, :file:`/usr/share/zoneinfo`, +etc), TZ environment string (in all known formats), given ranges (with help +from relative deltas), local machine timezone, fixed offset timezone, and UTC +timezone. +""" +import datetime +import struct +import time +import sys +import os +import bisect +import weakref +from collections import OrderedDict + +import six +from six import string_types +from six.moves import _thread +from ._common import tzname_in_python2, _tzinfo +from ._common import tzrangebase, enfold +from ._common import _validate_fromutc_inputs + +from ._factories import _TzSingleton, _TzOffsetFactory +from ._factories import _TzStrFactory +try: + from .win import tzwin, tzwinlocal +except ImportError: + tzwin = tzwinlocal = None + +# For warning about rounding tzinfo +from warnings import warn + +ZERO = datetime.timedelta(0) +EPOCH = datetime.datetime(1970, 1, 1, 0, 0) +EPOCHORDINAL = EPOCH.toordinal() + + +@six.add_metaclass(_TzSingleton) +class tzutc(datetime.tzinfo): + """ + This is a tzinfo object that represents the UTC time zone. + + **Examples:** + + .. doctest:: + + >>> from datetime import * + >>> from dateutil.tz import * + + >>> datetime.now() + datetime.datetime(2003, 9, 27, 9, 40, 1, 521290) + + >>> datetime.now(tzutc()) + datetime.datetime(2003, 9, 27, 12, 40, 12, 156379, tzinfo=tzutc()) + + >>> datetime.now(tzutc()).tzname() + 'UTC' + + .. versionchanged:: 2.7.0 + ``tzutc()`` is now a singleton, so the result of ``tzutc()`` will + always return the same object. + + .. doctest:: + + >>> from dateutil.tz import tzutc, UTC + >>> tzutc() is tzutc() + True + >>> tzutc() is UTC + True + """ + def utcoffset(self, dt): + return ZERO + + def dst(self, dt): + return ZERO + + @tzname_in_python2 + def tzname(self, dt): + return "UTC" + + def is_ambiguous(self, dt): + """ + Whether or not the "wall time" of a given datetime is ambiguous in this + zone. + + :param dt: + A :py:class:`datetime.datetime`, naive or time zone aware. + + + :return: + Returns ``True`` if ambiguous, ``False`` otherwise. + + .. versionadded:: 2.6.0 + """ + return False + + @_validate_fromutc_inputs + def fromutc(self, dt): + """ + Fast track version of fromutc() returns the original ``dt`` object for + any valid :py:class:`datetime.datetime` object. + """ + return dt + + def __eq__(self, other): + if not isinstance(other, (tzutc, tzoffset)): + return NotImplemented + + return (isinstance(other, tzutc) or + (isinstance(other, tzoffset) and other._offset == ZERO)) + + __hash__ = None + + def __ne__(self, other): + return not (self == other) + + def __repr__(self): + return "%s()" % self.__class__.__name__ + + __reduce__ = object.__reduce__ + + +#: Convenience constant providing a :class:`tzutc()` instance +#: +#: .. versionadded:: 2.7.0 +UTC = tzutc() + + +@six.add_metaclass(_TzOffsetFactory) +class tzoffset(datetime.tzinfo): + """ + A simple class for representing a fixed offset from UTC. + + :param name: + The timezone name, to be returned when ``tzname()`` is called. + :param offset: + The time zone offset in seconds, or (since version 2.6.0, represented + as a :py:class:`datetime.timedelta` object). + """ + def __init__(self, name, offset): + self._name = name + + try: + # Allow a timedelta + offset = offset.total_seconds() + except (TypeError, AttributeError): + pass + + self._offset = datetime.timedelta(seconds=_get_supported_offset(offset)) + + def utcoffset(self, dt): + return self._offset + + def dst(self, dt): + return ZERO + + @tzname_in_python2 + def tzname(self, dt): + return self._name + + @_validate_fromutc_inputs + def fromutc(self, dt): + return dt + self._offset + + def is_ambiguous(self, dt): + """ + Whether or not the "wall time" of a given datetime is ambiguous in this + zone. + + :param dt: + A :py:class:`datetime.datetime`, naive or time zone aware. + :return: + Returns ``True`` if ambiguous, ``False`` otherwise. + + .. versionadded:: 2.6.0 + """ + return False + + def __eq__(self, other): + if not isinstance(other, tzoffset): + return NotImplemented + + return self._offset == other._offset + + __hash__ = None + + def __ne__(self, other): + return not (self == other) + + def __repr__(self): + return "%s(%s, %s)" % (self.__class__.__name__, + repr(self._name), + int(self._offset.total_seconds())) + + __reduce__ = object.__reduce__ + + +class tzlocal(_tzinfo): + """ + A :class:`tzinfo` subclass built around the ``time`` timezone functions. + """ + def __init__(self): + super(tzlocal, self).__init__() + + self._std_offset = datetime.timedelta(seconds=-time.timezone) + if time.daylight: + self._dst_offset = datetime.timedelta(seconds=-time.altzone) + else: + self._dst_offset = self._std_offset + + self._dst_saved = self._dst_offset - self._std_offset + self._hasdst = bool(self._dst_saved) + self._tznames = tuple(time.tzname) + + def utcoffset(self, dt): + if dt is None and self._hasdst: + return None + + if self._isdst(dt): + return self._dst_offset + else: + return self._std_offset + + def dst(self, dt): + if dt is None and self._hasdst: + return None + + if self._isdst(dt): + return self._dst_offset - self._std_offset + else: + return ZERO + + @tzname_in_python2 + def tzname(self, dt): + return self._tznames[self._isdst(dt)] + + def is_ambiguous(self, dt): + """ + Whether or not the "wall time" of a given datetime is ambiguous in this + zone. + + :param dt: + A :py:class:`datetime.datetime`, naive or time zone aware. + + + :return: + Returns ``True`` if ambiguous, ``False`` otherwise. + + .. versionadded:: 2.6.0 + """ + naive_dst = self._naive_is_dst(dt) + return (not naive_dst and + (naive_dst != self._naive_is_dst(dt - self._dst_saved))) + + def _naive_is_dst(self, dt): + timestamp = _datetime_to_timestamp(dt) + return time.localtime(timestamp + time.timezone).tm_isdst + + def _isdst(self, dt, fold_naive=True): + # We can't use mktime here. It is unstable when deciding if + # the hour near to a change is DST or not. + # + # timestamp = time.mktime((dt.year, dt.month, dt.day, dt.hour, + # dt.minute, dt.second, dt.weekday(), 0, -1)) + # return time.localtime(timestamp).tm_isdst + # + # The code above yields the following result: + # + # >>> import tz, datetime + # >>> t = tz.tzlocal() + # >>> datetime.datetime(2003,2,15,23,tzinfo=t).tzname() + # 'BRDT' + # >>> datetime.datetime(2003,2,16,0,tzinfo=t).tzname() + # 'BRST' + # >>> datetime.datetime(2003,2,15,23,tzinfo=t).tzname() + # 'BRST' + # >>> datetime.datetime(2003,2,15,22,tzinfo=t).tzname() + # 'BRDT' + # >>> datetime.datetime(2003,2,15,23,tzinfo=t).tzname() + # 'BRDT' + # + # Here is a more stable implementation: + # + if not self._hasdst: + return False + + # Check for ambiguous times: + dstval = self._naive_is_dst(dt) + fold = getattr(dt, 'fold', None) + + if self.is_ambiguous(dt): + if fold is not None: + return not self._fold(dt) + else: + return True + + return dstval + + def __eq__(self, other): + if isinstance(other, tzlocal): + return (self._std_offset == other._std_offset and + self._dst_offset == other._dst_offset) + elif isinstance(other, tzutc): + return (not self._hasdst and + self._tznames[0] in {'UTC', 'GMT'} and + self._std_offset == ZERO) + elif isinstance(other, tzoffset): + return (not self._hasdst and + self._tznames[0] == other._name and + self._std_offset == other._offset) + else: + return NotImplemented + + __hash__ = None + + def __ne__(self, other): + return not (self == other) + + def __repr__(self): + return "%s()" % self.__class__.__name__ + + __reduce__ = object.__reduce__ + + +class _ttinfo(object): + __slots__ = ["offset", "delta", "isdst", "abbr", + "isstd", "isgmt", "dstoffset"] + + def __init__(self): + for attr in self.__slots__: + setattr(self, attr, None) + + def __repr__(self): + l = [] + for attr in self.__slots__: + value = getattr(self, attr) + if value is not None: + l.append("%s=%s" % (attr, repr(value))) + return "%s(%s)" % (self.__class__.__name__, ", ".join(l)) + + def __eq__(self, other): + if not isinstance(other, _ttinfo): + return NotImplemented + + return (self.offset == other.offset and + self.delta == other.delta and + self.isdst == other.isdst and + self.abbr == other.abbr and + self.isstd == other.isstd and + self.isgmt == other.isgmt and + self.dstoffset == other.dstoffset) + + __hash__ = None + + def __ne__(self, other): + return not (self == other) + + def __getstate__(self): + state = {} + for name in self.__slots__: + state[name] = getattr(self, name, None) + return state + + def __setstate__(self, state): + for name in self.__slots__: + if name in state: + setattr(self, name, state[name]) + + +class _tzfile(object): + """ + Lightweight class for holding the relevant transition and time zone + information read from binary tzfiles. + """ + attrs = ['trans_list', 'trans_list_utc', 'trans_idx', 'ttinfo_list', + 'ttinfo_std', 'ttinfo_dst', 'ttinfo_before', 'ttinfo_first'] + + def __init__(self, **kwargs): + for attr in self.attrs: + setattr(self, attr, kwargs.get(attr, None)) + + +class tzfile(_tzinfo): + """ + This is a ``tzinfo`` subclass that allows one to use the ``tzfile(5)`` + format timezone files to extract current and historical zone information. + + :param fileobj: + This can be an opened file stream or a file name that the time zone + information can be read from. + + :param filename: + This is an optional parameter specifying the source of the time zone + information in the event that ``fileobj`` is a file object. If omitted + and ``fileobj`` is a file stream, this parameter will be set either to + ``fileobj``'s ``name`` attribute or to ``repr(fileobj)``. + + See `Sources for Time Zone and Daylight Saving Time Data + `_ for more information. + Time zone files can be compiled from the `IANA Time Zone database files + `_ with the `zic time zone compiler + `_ + + .. note:: + + Only construct a ``tzfile`` directly if you have a specific timezone + file on disk that you want to read into a Python ``tzinfo`` object. + If you want to get a ``tzfile`` representing a specific IANA zone, + (e.g. ``'America/New_York'``), you should call + :func:`dateutil.tz.gettz` with the zone identifier. + + + **Examples:** + + Using the US Eastern time zone as an example, we can see that a ``tzfile`` + provides time zone information for the standard Daylight Saving offsets: + + .. testsetup:: tzfile + + from dateutil.tz import gettz + from datetime import datetime + + .. doctest:: tzfile + + >>> NYC = gettz('America/New_York') + >>> NYC + tzfile('/usr/share/zoneinfo/America/New_York') + + >>> print(datetime(2016, 1, 3, tzinfo=NYC)) # EST + 2016-01-03 00:00:00-05:00 + + >>> print(datetime(2016, 7, 7, tzinfo=NYC)) # EDT + 2016-07-07 00:00:00-04:00 + + + The ``tzfile`` structure contains a fully history of the time zone, + so historical dates will also have the right offsets. For example, before + the adoption of the UTC standards, New York used local solar mean time: + + .. doctest:: tzfile + + >>> print(datetime(1901, 4, 12, tzinfo=NYC)) # LMT + 1901-04-12 00:00:00-04:56 + + And during World War II, New York was on "Eastern War Time", which was a + state of permanent daylight saving time: + + .. doctest:: tzfile + + >>> print(datetime(1944, 2, 7, tzinfo=NYC)) # EWT + 1944-02-07 00:00:00-04:00 + + """ + + def __init__(self, fileobj, filename=None): + super(tzfile, self).__init__() + + file_opened_here = False + if isinstance(fileobj, string_types): + self._filename = fileobj + fileobj = open(fileobj, 'rb') + file_opened_here = True + elif filename is not None: + self._filename = filename + elif hasattr(fileobj, "name"): + self._filename = fileobj.name + else: + self._filename = repr(fileobj) + + if fileobj is not None: + if not file_opened_here: + fileobj = _nullcontext(fileobj) + + with fileobj as file_stream: + tzobj = self._read_tzfile(file_stream) + + self._set_tzdata(tzobj) + + def _set_tzdata(self, tzobj): + """ Set the time zone data of this object from a _tzfile object """ + # Copy the relevant attributes over as private attributes + for attr in _tzfile.attrs: + setattr(self, '_' + attr, getattr(tzobj, attr)) + + def _read_tzfile(self, fileobj): + out = _tzfile() + + # From tzfile(5): + # + # The time zone information files used by tzset(3) + # begin with the magic characters "TZif" to identify + # them as time zone information files, followed by + # sixteen bytes reserved for future use, followed by + # six four-byte values of type long, written in a + # ``standard'' byte order (the high-order byte + # of the value is written first). + if fileobj.read(4).decode() != "TZif": + raise ValueError("magic not found") + + fileobj.read(16) + + ( + # The number of UTC/local indicators stored in the file. + ttisgmtcnt, + + # The number of standard/wall indicators stored in the file. + ttisstdcnt, + + # The number of leap seconds for which data is + # stored in the file. + leapcnt, + + # The number of "transition times" for which data + # is stored in the file. + timecnt, + + # The number of "local time types" for which data + # is stored in the file (must not be zero). + typecnt, + + # The number of characters of "time zone + # abbreviation strings" stored in the file. + charcnt, + + ) = struct.unpack(">6l", fileobj.read(24)) + + # The above header is followed by tzh_timecnt four-byte + # values of type long, sorted in ascending order. + # These values are written in ``standard'' byte order. + # Each is used as a transition time (as returned by + # time(2)) at which the rules for computing local time + # change. + + if timecnt: + out.trans_list_utc = list(struct.unpack(">%dl" % timecnt, + fileobj.read(timecnt*4))) + else: + out.trans_list_utc = [] + + # Next come tzh_timecnt one-byte values of type unsigned + # char; each one tells which of the different types of + # ``local time'' types described in the file is associated + # with the same-indexed transition time. These values + # serve as indices into an array of ttinfo structures that + # appears next in the file. + + if timecnt: + out.trans_idx = struct.unpack(">%dB" % timecnt, + fileobj.read(timecnt)) + else: + out.trans_idx = [] + + # Each ttinfo structure is written as a four-byte value + # for tt_gmtoff of type long, in a standard byte + # order, followed by a one-byte value for tt_isdst + # and a one-byte value for tt_abbrind. In each + # structure, tt_gmtoff gives the number of + # seconds to be added to UTC, tt_isdst tells whether + # tm_isdst should be set by localtime(3), and + # tt_abbrind serves as an index into the array of + # time zone abbreviation characters that follow the + # ttinfo structure(s) in the file. + + ttinfo = [] + + for i in range(typecnt): + ttinfo.append(struct.unpack(">lbb", fileobj.read(6))) + + abbr = fileobj.read(charcnt).decode() + + # Then there are tzh_leapcnt pairs of four-byte + # values, written in standard byte order; the + # first value of each pair gives the time (as + # returned by time(2)) at which a leap second + # occurs; the second gives the total number of + # leap seconds to be applied after the given time. + # The pairs of values are sorted in ascending order + # by time. + + # Not used, for now (but seek for correct file position) + if leapcnt: + fileobj.seek(leapcnt * 8, os.SEEK_CUR) + + # Then there are tzh_ttisstdcnt standard/wall + # indicators, each stored as a one-byte value; + # they tell whether the transition times associated + # with local time types were specified as standard + # time or wall clock time, and are used when + # a time zone file is used in handling POSIX-style + # time zone environment variables. + + if ttisstdcnt: + isstd = struct.unpack(">%db" % ttisstdcnt, + fileobj.read(ttisstdcnt)) + + # Finally, there are tzh_ttisgmtcnt UTC/local + # indicators, each stored as a one-byte value; + # they tell whether the transition times associated + # with local time types were specified as UTC or + # local time, and are used when a time zone file + # is used in handling POSIX-style time zone envi- + # ronment variables. + + if ttisgmtcnt: + isgmt = struct.unpack(">%db" % ttisgmtcnt, + fileobj.read(ttisgmtcnt)) + + # Build ttinfo list + out.ttinfo_list = [] + for i in range(typecnt): + gmtoff, isdst, abbrind = ttinfo[i] + gmtoff = _get_supported_offset(gmtoff) + tti = _ttinfo() + tti.offset = gmtoff + tti.dstoffset = datetime.timedelta(0) + tti.delta = datetime.timedelta(seconds=gmtoff) + tti.isdst = isdst + tti.abbr = abbr[abbrind:abbr.find('\x00', abbrind)] + tti.isstd = (ttisstdcnt > i and isstd[i] != 0) + tti.isgmt = (ttisgmtcnt > i and isgmt[i] != 0) + out.ttinfo_list.append(tti) + + # Replace ttinfo indexes for ttinfo objects. + out.trans_idx = [out.ttinfo_list[idx] for idx in out.trans_idx] + + # Set standard, dst, and before ttinfos. before will be + # used when a given time is before any transitions, + # and will be set to the first non-dst ttinfo, or to + # the first dst, if all of them are dst. + out.ttinfo_std = None + out.ttinfo_dst = None + out.ttinfo_before = None + if out.ttinfo_list: + if not out.trans_list_utc: + out.ttinfo_std = out.ttinfo_first = out.ttinfo_list[0] + else: + for i in range(timecnt-1, -1, -1): + tti = out.trans_idx[i] + if not out.ttinfo_std and not tti.isdst: + out.ttinfo_std = tti + elif not out.ttinfo_dst and tti.isdst: + out.ttinfo_dst = tti + + if out.ttinfo_std and out.ttinfo_dst: + break + else: + if out.ttinfo_dst and not out.ttinfo_std: + out.ttinfo_std = out.ttinfo_dst + + for tti in out.ttinfo_list: + if not tti.isdst: + out.ttinfo_before = tti + break + else: + out.ttinfo_before = out.ttinfo_list[0] + + # Now fix transition times to become relative to wall time. + # + # I'm not sure about this. In my tests, the tz source file + # is setup to wall time, and in the binary file isstd and + # isgmt are off, so it should be in wall time. OTOH, it's + # always in gmt time. Let me know if you have comments + # about this. + lastdst = None + lastoffset = None + lastdstoffset = None + lastbaseoffset = None + out.trans_list = [] + + for i, tti in enumerate(out.trans_idx): + offset = tti.offset + dstoffset = 0 + + if lastdst is not None: + if tti.isdst: + if not lastdst: + dstoffset = offset - lastoffset + + if not dstoffset and lastdstoffset: + dstoffset = lastdstoffset + + tti.dstoffset = datetime.timedelta(seconds=dstoffset) + lastdstoffset = dstoffset + + # If a time zone changes its base offset during a DST transition, + # then you need to adjust by the previous base offset to get the + # transition time in local time. Otherwise you use the current + # base offset. Ideally, I would have some mathematical proof of + # why this is true, but I haven't really thought about it enough. + baseoffset = offset - dstoffset + adjustment = baseoffset + if (lastbaseoffset is not None and baseoffset != lastbaseoffset + and tti.isdst != lastdst): + # The base DST has changed + adjustment = lastbaseoffset + + lastdst = tti.isdst + lastoffset = offset + lastbaseoffset = baseoffset + + out.trans_list.append(out.trans_list_utc[i] + adjustment) + + out.trans_idx = tuple(out.trans_idx) + out.trans_list = tuple(out.trans_list) + out.trans_list_utc = tuple(out.trans_list_utc) + + return out + + def _find_last_transition(self, dt, in_utc=False): + # If there's no list, there are no transitions to find + if not self._trans_list: + return None + + timestamp = _datetime_to_timestamp(dt) + + # Find where the timestamp fits in the transition list - if the + # timestamp is a transition time, it's part of the "after" period. + trans_list = self._trans_list_utc if in_utc else self._trans_list + idx = bisect.bisect_right(trans_list, timestamp) + + # We want to know when the previous transition was, so subtract off 1 + return idx - 1 + + def _get_ttinfo(self, idx): + # For no list or after the last transition, default to _ttinfo_std + if idx is None or (idx + 1) >= len(self._trans_list): + return self._ttinfo_std + + # If there is a list and the time is before it, return _ttinfo_before + if idx < 0: + return self._ttinfo_before + + return self._trans_idx[idx] + + def _find_ttinfo(self, dt): + idx = self._resolve_ambiguous_time(dt) + + return self._get_ttinfo(idx) + + def fromutc(self, dt): + """ + The ``tzfile`` implementation of :py:func:`datetime.tzinfo.fromutc`. + + :param dt: + A :py:class:`datetime.datetime` object. + + :raises TypeError: + Raised if ``dt`` is not a :py:class:`datetime.datetime` object. + + :raises ValueError: + Raised if this is called with a ``dt`` which does not have this + ``tzinfo`` attached. + + :return: + Returns a :py:class:`datetime.datetime` object representing the + wall time in ``self``'s time zone. + """ + # These isinstance checks are in datetime.tzinfo, so we'll preserve + # them, even if we don't care about duck typing. + if not isinstance(dt, datetime.datetime): + raise TypeError("fromutc() requires a datetime argument") + + if dt.tzinfo is not self: + raise ValueError("dt.tzinfo is not self") + + # First treat UTC as wall time and get the transition we're in. + idx = self._find_last_transition(dt, in_utc=True) + tti = self._get_ttinfo(idx) + + dt_out = dt + datetime.timedelta(seconds=tti.offset) + + fold = self.is_ambiguous(dt_out, idx=idx) + + return enfold(dt_out, fold=int(fold)) + + def is_ambiguous(self, dt, idx=None): + """ + Whether or not the "wall time" of a given datetime is ambiguous in this + zone. + + :param dt: + A :py:class:`datetime.datetime`, naive or time zone aware. + + + :return: + Returns ``True`` if ambiguous, ``False`` otherwise. + + .. versionadded:: 2.6.0 + """ + if idx is None: + idx = self._find_last_transition(dt) + + # Calculate the difference in offsets from current to previous + timestamp = _datetime_to_timestamp(dt) + tti = self._get_ttinfo(idx) + + if idx is None or idx <= 0: + return False + + od = self._get_ttinfo(idx - 1).offset - tti.offset + tt = self._trans_list[idx] # Transition time + + return timestamp < tt + od + + def _resolve_ambiguous_time(self, dt): + idx = self._find_last_transition(dt) + + # If we have no transitions, return the index + _fold = self._fold(dt) + if idx is None or idx == 0: + return idx + + # If it's ambiguous and we're in a fold, shift to a different index. + idx_offset = int(not _fold and self.is_ambiguous(dt, idx)) + + return idx - idx_offset + + def utcoffset(self, dt): + if dt is None: + return None + + if not self._ttinfo_std: + return ZERO + + return self._find_ttinfo(dt).delta + + def dst(self, dt): + if dt is None: + return None + + if not self._ttinfo_dst: + return ZERO + + tti = self._find_ttinfo(dt) + + if not tti.isdst: + return ZERO + + # The documentation says that utcoffset()-dst() must + # be constant for every dt. + return tti.dstoffset + + @tzname_in_python2 + def tzname(self, dt): + if not self._ttinfo_std or dt is None: + return None + return self._find_ttinfo(dt).abbr + + def __eq__(self, other): + if not isinstance(other, tzfile): + return NotImplemented + return (self._trans_list == other._trans_list and + self._trans_idx == other._trans_idx and + self._ttinfo_list == other._ttinfo_list) + + __hash__ = None + + def __ne__(self, other): + return not (self == other) + + def __repr__(self): + return "%s(%s)" % (self.__class__.__name__, repr(self._filename)) + + def __reduce__(self): + return self.__reduce_ex__(None) + + def __reduce_ex__(self, protocol): + return (self.__class__, (None, self._filename), self.__dict__) + + +class tzrange(tzrangebase): + """ + The ``tzrange`` object is a time zone specified by a set of offsets and + abbreviations, equivalent to the way the ``TZ`` variable can be specified + in POSIX-like systems, but using Python delta objects to specify DST + start, end and offsets. + + :param stdabbr: + The abbreviation for standard time (e.g. ``'EST'``). + + :param stdoffset: + An integer or :class:`datetime.timedelta` object or equivalent + specifying the base offset from UTC. + + If unspecified, +00:00 is used. + + :param dstabbr: + The abbreviation for DST / "Summer" time (e.g. ``'EDT'``). + + If specified, with no other DST information, DST is assumed to occur + and the default behavior or ``dstoffset``, ``start`` and ``end`` is + used. If unspecified and no other DST information is specified, it + is assumed that this zone has no DST. + + If this is unspecified and other DST information is *is* specified, + DST occurs in the zone but the time zone abbreviation is left + unchanged. + + :param dstoffset: + A an integer or :class:`datetime.timedelta` object or equivalent + specifying the UTC offset during DST. If unspecified and any other DST + information is specified, it is assumed to be the STD offset +1 hour. + + :param start: + A :class:`relativedelta.relativedelta` object or equivalent specifying + the time and time of year that daylight savings time starts. To + specify, for example, that DST starts at 2AM on the 2nd Sunday in + March, pass: + + ``relativedelta(hours=2, month=3, day=1, weekday=SU(+2))`` + + If unspecified and any other DST information is specified, the default + value is 2 AM on the first Sunday in April. + + :param end: + A :class:`relativedelta.relativedelta` object or equivalent + representing the time and time of year that daylight savings time + ends, with the same specification method as in ``start``. One note is + that this should point to the first time in the *standard* zone, so if + a transition occurs at 2AM in the DST zone and the clocks are set back + 1 hour to 1AM, set the ``hours`` parameter to +1. + + + **Examples:** + + .. testsetup:: tzrange + + from dateutil.tz import tzrange, tzstr + + .. doctest:: tzrange + + >>> tzstr('EST5EDT') == tzrange("EST", -18000, "EDT") + True + + >>> from dateutil.relativedelta import * + >>> range1 = tzrange("EST", -18000, "EDT") + >>> range2 = tzrange("EST", -18000, "EDT", -14400, + ... relativedelta(hours=+2, month=4, day=1, + ... weekday=SU(+1)), + ... relativedelta(hours=+1, month=10, day=31, + ... weekday=SU(-1))) + >>> tzstr('EST5EDT') == range1 == range2 + True + + """ + def __init__(self, stdabbr, stdoffset=None, + dstabbr=None, dstoffset=None, + start=None, end=None): + + global relativedelta + from dateutil import relativedelta + + self._std_abbr = stdabbr + self._dst_abbr = dstabbr + + try: + stdoffset = stdoffset.total_seconds() + except (TypeError, AttributeError): + pass + + try: + dstoffset = dstoffset.total_seconds() + except (TypeError, AttributeError): + pass + + if stdoffset is not None: + self._std_offset = datetime.timedelta(seconds=stdoffset) + else: + self._std_offset = ZERO + + if dstoffset is not None: + self._dst_offset = datetime.timedelta(seconds=dstoffset) + elif dstabbr and stdoffset is not None: + self._dst_offset = self._std_offset + datetime.timedelta(hours=+1) + else: + self._dst_offset = ZERO + + if dstabbr and start is None: + self._start_delta = relativedelta.relativedelta( + hours=+2, month=4, day=1, weekday=relativedelta.SU(+1)) + else: + self._start_delta = start + + if dstabbr and end is None: + self._end_delta = relativedelta.relativedelta( + hours=+1, month=10, day=31, weekday=relativedelta.SU(-1)) + else: + self._end_delta = end + + self._dst_base_offset_ = self._dst_offset - self._std_offset + self.hasdst = bool(self._start_delta) + + def transitions(self, year): + """ + For a given year, get the DST on and off transition times, expressed + always on the standard time side. For zones with no transitions, this + function returns ``None``. + + :param year: + The year whose transitions you would like to query. + + :return: + Returns a :class:`tuple` of :class:`datetime.datetime` objects, + ``(dston, dstoff)`` for zones with an annual DST transition, or + ``None`` for fixed offset zones. + """ + if not self.hasdst: + return None + + base_year = datetime.datetime(year, 1, 1) + + start = base_year + self._start_delta + end = base_year + self._end_delta + + return (start, end) + + def __eq__(self, other): + if not isinstance(other, tzrange): + return NotImplemented + + return (self._std_abbr == other._std_abbr and + self._dst_abbr == other._dst_abbr and + self._std_offset == other._std_offset and + self._dst_offset == other._dst_offset and + self._start_delta == other._start_delta and + self._end_delta == other._end_delta) + + @property + def _dst_base_offset(self): + return self._dst_base_offset_ + + +@six.add_metaclass(_TzStrFactory) +class tzstr(tzrange): + """ + ``tzstr`` objects are time zone objects specified by a time-zone string as + it would be passed to a ``TZ`` variable on POSIX-style systems (see + the `GNU C Library: TZ Variable`_ for more details). + + There is one notable exception, which is that POSIX-style time zones use an + inverted offset format, so normally ``GMT+3`` would be parsed as an offset + 3 hours *behind* GMT. The ``tzstr`` time zone object will parse this as an + offset 3 hours *ahead* of GMT. If you would like to maintain the POSIX + behavior, pass a ``True`` value to ``posix_offset``. + + The :class:`tzrange` object provides the same functionality, but is + specified using :class:`relativedelta.relativedelta` objects. rather than + strings. + + :param s: + A time zone string in ``TZ`` variable format. This can be a + :class:`bytes` (2.x: :class:`str`), :class:`str` (2.x: + :class:`unicode`) or a stream emitting unicode characters + (e.g. :class:`StringIO`). + + :param posix_offset: + Optional. If set to ``True``, interpret strings such as ``GMT+3`` or + ``UTC+3`` as being 3 hours *behind* UTC rather than ahead, per the + POSIX standard. + + .. caution:: + + Prior to version 2.7.0, this function also supported time zones + in the format: + + * ``EST5EDT,4,0,6,7200,10,0,26,7200,3600`` + * ``EST5EDT,4,1,0,7200,10,-1,0,7200,3600`` + + This format is non-standard and has been deprecated; this function + will raise a :class:`DeprecatedTZFormatWarning` until + support is removed in a future version. + + .. _`GNU C Library: TZ Variable`: + https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html + """ + def __init__(self, s, posix_offset=False): + global parser + from dateutil.parser import _parser as parser + + self._s = s + + res = parser._parsetz(s) + if res is None or res.any_unused_tokens: + raise ValueError("unknown string format") + + # Here we break the compatibility with the TZ variable handling. + # GMT-3 actually *means* the timezone -3. + if res.stdabbr in ("GMT", "UTC") and not posix_offset: + res.stdoffset *= -1 + + # We must initialize it first, since _delta() needs + # _std_offset and _dst_offset set. Use False in start/end + # to avoid building it two times. + tzrange.__init__(self, res.stdabbr, res.stdoffset, + res.dstabbr, res.dstoffset, + start=False, end=False) + + if not res.dstabbr: + self._start_delta = None + self._end_delta = None + else: + self._start_delta = self._delta(res.start) + if self._start_delta: + self._end_delta = self._delta(res.end, isend=1) + + self.hasdst = bool(self._start_delta) + + def _delta(self, x, isend=0): + from dateutil import relativedelta + kwargs = {} + if x.month is not None: + kwargs["month"] = x.month + if x.weekday is not None: + kwargs["weekday"] = relativedelta.weekday(x.weekday, x.week) + if x.week > 0: + kwargs["day"] = 1 + else: + kwargs["day"] = 31 + elif x.day: + kwargs["day"] = x.day + elif x.yday is not None: + kwargs["yearday"] = x.yday + elif x.jyday is not None: + kwargs["nlyearday"] = x.jyday + if not kwargs: + # Default is to start on first sunday of april, and end + # on last sunday of october. + if not isend: + kwargs["month"] = 4 + kwargs["day"] = 1 + kwargs["weekday"] = relativedelta.SU(+1) + else: + kwargs["month"] = 10 + kwargs["day"] = 31 + kwargs["weekday"] = relativedelta.SU(-1) + if x.time is not None: + kwargs["seconds"] = x.time + else: + # Default is 2AM. + kwargs["seconds"] = 7200 + if isend: + # Convert to standard time, to follow the documented way + # of working with the extra hour. See the documentation + # of the tzinfo class. + delta = self._dst_offset - self._std_offset + kwargs["seconds"] -= delta.seconds + delta.days * 86400 + return relativedelta.relativedelta(**kwargs) + + def __repr__(self): + return "%s(%s)" % (self.__class__.__name__, repr(self._s)) + + +class _tzicalvtzcomp(object): + def __init__(self, tzoffsetfrom, tzoffsetto, isdst, + tzname=None, rrule=None): + self.tzoffsetfrom = datetime.timedelta(seconds=tzoffsetfrom) + self.tzoffsetto = datetime.timedelta(seconds=tzoffsetto) + self.tzoffsetdiff = self.tzoffsetto - self.tzoffsetfrom + self.isdst = isdst + self.tzname = tzname + self.rrule = rrule + + +class _tzicalvtz(_tzinfo): + def __init__(self, tzid, comps=[]): + super(_tzicalvtz, self).__init__() + + self._tzid = tzid + self._comps = comps + self._cachedate = [] + self._cachecomp = [] + self._cache_lock = _thread.allocate_lock() + + def _find_comp(self, dt): + if len(self._comps) == 1: + return self._comps[0] + + dt = dt.replace(tzinfo=None) + + try: + with self._cache_lock: + return self._cachecomp[self._cachedate.index( + (dt, self._fold(dt)))] + except ValueError: + pass + + lastcompdt = None + lastcomp = None + + for comp in self._comps: + compdt = self._find_compdt(comp, dt) + + if compdt and (not lastcompdt or lastcompdt < compdt): + lastcompdt = compdt + lastcomp = comp + + if not lastcomp: + # RFC says nothing about what to do when a given + # time is before the first onset date. We'll look for the + # first standard component, or the first component, if + # none is found. + for comp in self._comps: + if not comp.isdst: + lastcomp = comp + break + else: + lastcomp = comp[0] + + with self._cache_lock: + self._cachedate.insert(0, (dt, self._fold(dt))) + self._cachecomp.insert(0, lastcomp) + + if len(self._cachedate) > 10: + self._cachedate.pop() + self._cachecomp.pop() + + return lastcomp + + def _find_compdt(self, comp, dt): + if comp.tzoffsetdiff < ZERO and self._fold(dt): + dt -= comp.tzoffsetdiff + + compdt = comp.rrule.before(dt, inc=True) + + return compdt + + def utcoffset(self, dt): + if dt is None: + return None + + return self._find_comp(dt).tzoffsetto + + def dst(self, dt): + comp = self._find_comp(dt) + if comp.isdst: + return comp.tzoffsetdiff + else: + return ZERO + + @tzname_in_python2 + def tzname(self, dt): + return self._find_comp(dt).tzname + + def __repr__(self): + return "" % repr(self._tzid) + + __reduce__ = object.__reduce__ + + +class tzical(object): + """ + This object is designed to parse an iCalendar-style ``VTIMEZONE`` structure + as set out in `RFC 5545`_ Section 4.6.5 into one or more `tzinfo` objects. + + :param `fileobj`: + A file or stream in iCalendar format, which should be UTF-8 encoded + with CRLF endings. + + .. _`RFC 5545`: https://tools.ietf.org/html/rfc5545 + """ + def __init__(self, fileobj): + global rrule + from dateutil import rrule + + if isinstance(fileobj, string_types): + self._s = fileobj + # ical should be encoded in UTF-8 with CRLF + fileobj = open(fileobj, 'r') + else: + self._s = getattr(fileobj, 'name', repr(fileobj)) + fileobj = _nullcontext(fileobj) + + self._vtz = {} + + with fileobj as fobj: + self._parse_rfc(fobj.read()) + + def keys(self): + """ + Retrieves the available time zones as a list. + """ + return list(self._vtz.keys()) + + def get(self, tzid=None): + """ + Retrieve a :py:class:`datetime.tzinfo` object by its ``tzid``. + + :param tzid: + If there is exactly one time zone available, omitting ``tzid`` + or passing :py:const:`None` value returns it. Otherwise a valid + key (which can be retrieved from :func:`keys`) is required. + + :raises ValueError: + Raised if ``tzid`` is not specified but there are either more + or fewer than 1 zone defined. + + :returns: + Returns either a :py:class:`datetime.tzinfo` object representing + the relevant time zone or :py:const:`None` if the ``tzid`` was + not found. + """ + if tzid is None: + if len(self._vtz) == 0: + raise ValueError("no timezones defined") + elif len(self._vtz) > 1: + raise ValueError("more than one timezone available") + tzid = next(iter(self._vtz)) + + return self._vtz.get(tzid) + + def _parse_offset(self, s): + s = s.strip() + if not s: + raise ValueError("empty offset") + if s[0] in ('+', '-'): + signal = (-1, +1)[s[0] == '+'] + s = s[1:] + else: + signal = +1 + if len(s) == 4: + return (int(s[:2]) * 3600 + int(s[2:]) * 60) * signal + elif len(s) == 6: + return (int(s[:2]) * 3600 + int(s[2:4]) * 60 + int(s[4:])) * signal + else: + raise ValueError("invalid offset: " + s) + + def _parse_rfc(self, s): + lines = s.splitlines() + if not lines: + raise ValueError("empty string") + + # Unfold + i = 0 + while i < len(lines): + line = lines[i].rstrip() + if not line: + del lines[i] + elif i > 0 and line[0] == " ": + lines[i-1] += line[1:] + del lines[i] + else: + i += 1 + + tzid = None + comps = [] + invtz = False + comptype = None + for line in lines: + if not line: + continue + name, value = line.split(':', 1) + parms = name.split(';') + if not parms: + raise ValueError("empty property name") + name = parms[0].upper() + parms = parms[1:] + if invtz: + if name == "BEGIN": + if value in ("STANDARD", "DAYLIGHT"): + # Process component + pass + else: + raise ValueError("unknown component: "+value) + comptype = value + founddtstart = False + tzoffsetfrom = None + tzoffsetto = None + rrulelines = [] + tzname = None + elif name == "END": + if value == "VTIMEZONE": + if comptype: + raise ValueError("component not closed: "+comptype) + if not tzid: + raise ValueError("mandatory TZID not found") + if not comps: + raise ValueError( + "at least one component is needed") + # Process vtimezone + self._vtz[tzid] = _tzicalvtz(tzid, comps) + invtz = False + elif value == comptype: + if not founddtstart: + raise ValueError("mandatory DTSTART not found") + if tzoffsetfrom is None: + raise ValueError( + "mandatory TZOFFSETFROM not found") + if tzoffsetto is None: + raise ValueError( + "mandatory TZOFFSETFROM not found") + # Process component + rr = None + if rrulelines: + rr = rrule.rrulestr("\n".join(rrulelines), + compatible=True, + ignoretz=True, + cache=True) + comp = _tzicalvtzcomp(tzoffsetfrom, tzoffsetto, + (comptype == "DAYLIGHT"), + tzname, rr) + comps.append(comp) + comptype = None + else: + raise ValueError("invalid component end: "+value) + elif comptype: + if name == "DTSTART": + # DTSTART in VTIMEZONE takes a subset of valid RRULE + # values under RFC 5545. + for parm in parms: + if parm != 'VALUE=DATE-TIME': + msg = ('Unsupported DTSTART param in ' + + 'VTIMEZONE: ' + parm) + raise ValueError(msg) + rrulelines.append(line) + founddtstart = True + elif name in ("RRULE", "RDATE", "EXRULE", "EXDATE"): + rrulelines.append(line) + elif name == "TZOFFSETFROM": + if parms: + raise ValueError( + "unsupported %s parm: %s " % (name, parms[0])) + tzoffsetfrom = self._parse_offset(value) + elif name == "TZOFFSETTO": + if parms: + raise ValueError( + "unsupported TZOFFSETTO parm: "+parms[0]) + tzoffsetto = self._parse_offset(value) + elif name == "TZNAME": + if parms: + raise ValueError( + "unsupported TZNAME parm: "+parms[0]) + tzname = value + elif name == "COMMENT": + pass + else: + raise ValueError("unsupported property: "+name) + else: + if name == "TZID": + if parms: + raise ValueError( + "unsupported TZID parm: "+parms[0]) + tzid = value + elif name in ("TZURL", "LAST-MODIFIED", "COMMENT"): + pass + else: + raise ValueError("unsupported property: "+name) + elif name == "BEGIN" and value == "VTIMEZONE": + tzid = None + comps = [] + invtz = True + + def __repr__(self): + return "%s(%s)" % (self.__class__.__name__, repr(self._s)) + + +if sys.platform != "win32": + TZFILES = ["/etc/localtime", "localtime"] + TZPATHS = ["/usr/share/zoneinfo", + "/usr/lib/zoneinfo", + "/usr/share/lib/zoneinfo", + "/etc/zoneinfo"] +else: + TZFILES = [] + TZPATHS = [] + + +def __get_gettz(): + tzlocal_classes = (tzlocal,) + if tzwinlocal is not None: + tzlocal_classes += (tzwinlocal,) + + class GettzFunc(object): + """ + Retrieve a time zone object from a string representation + + This function is intended to retrieve the :py:class:`tzinfo` subclass + that best represents the time zone that would be used if a POSIX + `TZ variable`_ were set to the same value. + + If no argument or an empty string is passed to ``gettz``, local time + is returned: + + .. code-block:: python3 + + >>> gettz() + tzfile('/etc/localtime') + + This function is also the preferred way to map IANA tz database keys + to :class:`tzfile` objects: + + .. code-block:: python3 + + >>> gettz('Pacific/Kiritimati') + tzfile('/usr/share/zoneinfo/Pacific/Kiritimati') + + On Windows, the standard is extended to include the Windows-specific + zone names provided by the operating system: + + .. code-block:: python3 + + >>> gettz('Egypt Standard Time') + tzwin('Egypt Standard Time') + + Passing a GNU ``TZ`` style string time zone specification returns a + :class:`tzstr` object: + + .. code-block:: python3 + + >>> gettz('AEST-10AEDT-11,M10.1.0/2,M4.1.0/3') + tzstr('AEST-10AEDT-11,M10.1.0/2,M4.1.0/3') + + :param name: + A time zone name (IANA, or, on Windows, Windows keys), location of + a ``tzfile(5)`` zoneinfo file or ``TZ`` variable style time zone + specifier. An empty string, no argument or ``None`` is interpreted + as local time. + + :return: + Returns an instance of one of ``dateutil``'s :py:class:`tzinfo` + subclasses. + + .. versionchanged:: 2.7.0 + + After version 2.7.0, any two calls to ``gettz`` using the same + input strings will return the same object: + + .. code-block:: python3 + + >>> tz.gettz('America/Chicago') is tz.gettz('America/Chicago') + True + + In addition to improving performance, this ensures that + `"same zone" semantics`_ are used for datetimes in the same zone. + + + .. _`TZ variable`: + https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html + + .. _`"same zone" semantics`: + https://blog.ganssle.io/articles/2018/02/aware-datetime-arithmetic.html + """ + def __init__(self): + + self.__instances = weakref.WeakValueDictionary() + self.__strong_cache_size = 8 + self.__strong_cache = OrderedDict() + self._cache_lock = _thread.allocate_lock() + + def __call__(self, name=None): + with self._cache_lock: + rv = self.__instances.get(name, None) + + if rv is None: + rv = self.nocache(name=name) + if not (name is None + or isinstance(rv, tzlocal_classes) + or rv is None): + # tzlocal is slightly more complicated than the other + # time zone providers because it depends on environment + # at construction time, so don't cache that. + # + # We also cannot store weak references to None, so we + # will also not store that. + self.__instances[name] = rv + else: + # No need for strong caching, return immediately + return rv + + self.__strong_cache[name] = self.__strong_cache.pop(name, rv) + + if len(self.__strong_cache) > self.__strong_cache_size: + self.__strong_cache.popitem(last=False) + + return rv + + def set_cache_size(self, size): + with self._cache_lock: + self.__strong_cache_size = size + while len(self.__strong_cache) > size: + self.__strong_cache.popitem(last=False) + + def cache_clear(self): + with self._cache_lock: + self.__instances = weakref.WeakValueDictionary() + self.__strong_cache.clear() + + @staticmethod + def nocache(name=None): + """A non-cached version of gettz""" + tz = None + if not name: + try: + name = os.environ["TZ"] + except KeyError: + pass + if name is None or name in ("", ":"): + for filepath in TZFILES: + if not os.path.isabs(filepath): + filename = filepath + for path in TZPATHS: + filepath = os.path.join(path, filename) + if os.path.isfile(filepath): + break + else: + continue + if os.path.isfile(filepath): + try: + tz = tzfile(filepath) + break + except (IOError, OSError, ValueError): + pass + else: + tz = tzlocal() + else: + try: + if name.startswith(":"): + name = name[1:] + except TypeError as e: + if isinstance(name, bytes): + new_msg = "gettz argument should be str, not bytes" + six.raise_from(TypeError(new_msg), e) + else: + raise + if os.path.isabs(name): + if os.path.isfile(name): + tz = tzfile(name) + else: + tz = None + else: + for path in TZPATHS: + filepath = os.path.join(path, name) + if not os.path.isfile(filepath): + filepath = filepath.replace(' ', '_') + if not os.path.isfile(filepath): + continue + try: + tz = tzfile(filepath) + break + except (IOError, OSError, ValueError): + pass + else: + tz = None + if tzwin is not None: + try: + tz = tzwin(name) + except (WindowsError, UnicodeEncodeError): + # UnicodeEncodeError is for Python 2.7 compat + tz = None + + if not tz: + from dateutil.zoneinfo import get_zonefile_instance + tz = get_zonefile_instance().get(name) + + if not tz: + for c in name: + # name is not a tzstr unless it has at least + # one offset. For short values of "name", an + # explicit for loop seems to be the fastest way + # To determine if a string contains a digit + if c in "0123456789": + try: + tz = tzstr(name) + except ValueError: + pass + break + else: + if name in ("GMT", "UTC"): + tz = UTC + elif name in time.tzname: + tz = tzlocal() + return tz + + return GettzFunc() + + +gettz = __get_gettz() +del __get_gettz + + +def datetime_exists(dt, tz=None): + """ + Given a datetime and a time zone, determine whether or not a given datetime + would fall in a gap. + + :param dt: + A :class:`datetime.datetime` (whose time zone will be ignored if ``tz`` + is provided.) + + :param tz: + A :class:`datetime.tzinfo` with support for the ``fold`` attribute. If + ``None`` or not provided, the datetime's own time zone will be used. + + :return: + Returns a boolean value whether or not the "wall time" exists in + ``tz``. + + .. versionadded:: 2.7.0 + """ + if tz is None: + if dt.tzinfo is None: + raise ValueError('Datetime is naive and no time zone provided.') + tz = dt.tzinfo + + dt = dt.replace(tzinfo=None) + + # This is essentially a test of whether or not the datetime can survive + # a round trip to UTC. + dt_rt = dt.replace(tzinfo=tz).astimezone(UTC).astimezone(tz) + dt_rt = dt_rt.replace(tzinfo=None) + + return dt == dt_rt + + +def datetime_ambiguous(dt, tz=None): + """ + Given a datetime and a time zone, determine whether or not a given datetime + is ambiguous (i.e if there are two times differentiated only by their DST + status). + + :param dt: + A :class:`datetime.datetime` (whose time zone will be ignored if ``tz`` + is provided.) + + :param tz: + A :class:`datetime.tzinfo` with support for the ``fold`` attribute. If + ``None`` or not provided, the datetime's own time zone will be used. + + :return: + Returns a boolean value whether or not the "wall time" is ambiguous in + ``tz``. + + .. versionadded:: 2.6.0 + """ + if tz is None: + if dt.tzinfo is None: + raise ValueError('Datetime is naive and no time zone provided.') + + tz = dt.tzinfo + + # If a time zone defines its own "is_ambiguous" function, we'll use that. + is_ambiguous_fn = getattr(tz, 'is_ambiguous', None) + if is_ambiguous_fn is not None: + try: + return tz.is_ambiguous(dt) + except Exception: + pass + + # If it doesn't come out and tell us it's ambiguous, we'll just check if + # the fold attribute has any effect on this particular date and time. + dt = dt.replace(tzinfo=tz) + wall_0 = enfold(dt, fold=0) + wall_1 = enfold(dt, fold=1) + + same_offset = wall_0.utcoffset() == wall_1.utcoffset() + same_dst = wall_0.dst() == wall_1.dst() + + return not (same_offset and same_dst) + + +def resolve_imaginary(dt): + """ + Given a datetime that may be imaginary, return an existing datetime. + + This function assumes that an imaginary datetime represents what the + wall time would be in a zone had the offset transition not occurred, so + it will always fall forward by the transition's change in offset. + + .. doctest:: + + >>> from dateutil import tz + >>> from datetime import datetime + >>> NYC = tz.gettz('America/New_York') + >>> print(tz.resolve_imaginary(datetime(2017, 3, 12, 2, 30, tzinfo=NYC))) + 2017-03-12 03:30:00-04:00 + + >>> KIR = tz.gettz('Pacific/Kiritimati') + >>> print(tz.resolve_imaginary(datetime(1995, 1, 1, 12, 30, tzinfo=KIR))) + 1995-01-02 12:30:00+14:00 + + As a note, :func:`datetime.astimezone` is guaranteed to produce a valid, + existing datetime, so a round-trip to and from UTC is sufficient to get + an extant datetime, however, this generally "falls back" to an earlier time + rather than falling forward to the STD side (though no guarantees are made + about this behavior). + + :param dt: + A :class:`datetime.datetime` which may or may not exist. + + :return: + Returns an existing :class:`datetime.datetime`. If ``dt`` was not + imaginary, the datetime returned is guaranteed to be the same object + passed to the function. + + .. versionadded:: 2.7.0 + """ + if dt.tzinfo is not None and not datetime_exists(dt): + + curr_offset = (dt + datetime.timedelta(hours=24)).utcoffset() + old_offset = (dt - datetime.timedelta(hours=24)).utcoffset() + + dt += curr_offset - old_offset + + return dt + + +def _datetime_to_timestamp(dt): + """ + Convert a :class:`datetime.datetime` object to an epoch timestamp in + seconds since January 1, 1970, ignoring the time zone. + """ + return (dt.replace(tzinfo=None) - EPOCH).total_seconds() + + +if sys.version_info >= (3, 6): + def _get_supported_offset(second_offset): + return second_offset +else: + def _get_supported_offset(second_offset): + # For python pre-3.6, round to full-minutes if that's not the case. + # Python's datetime doesn't accept sub-minute timezones. Check + # http://python.org/sf/1447945 or https://bugs.python.org/issue5288 + # for some information. + old_offset = second_offset + calculated_offset = 60 * ((second_offset + 30) // 60) + return calculated_offset + + +try: + # Python 3.7 feature + from contextlib import nullcontext as _nullcontext +except ImportError: + class _nullcontext(object): + """ + Class for wrapping contexts so that they are passed through in a + with statement. + """ + def __init__(self, context): + self.context = context + + def __enter__(self): + return self.context + + def __exit__(*args, **kwargs): + pass + +# vim:ts=4:sw=4:et diff --git a/frogpilot/third_party/dateutil/tz/win.py b/frogpilot/third_party/dateutil/tz/win.py new file mode 100644 index 000000000..cde07ba79 --- /dev/null +++ b/frogpilot/third_party/dateutil/tz/win.py @@ -0,0 +1,370 @@ +# -*- coding: utf-8 -*- +""" +This module provides an interface to the native time zone data on Windows, +including :py:class:`datetime.tzinfo` implementations. + +Attempting to import this module on a non-Windows platform will raise an +:py:obj:`ImportError`. +""" +# This code was originally contributed by Jeffrey Harris. +import datetime +import struct + +from six.moves import winreg +from six import text_type + +try: + import ctypes + from ctypes import wintypes +except ValueError: + # ValueError is raised on non-Windows systems for some horrible reason. + raise ImportError("Running tzwin on non-Windows system") + +from ._common import tzrangebase + +__all__ = ["tzwin", "tzwinlocal", "tzres"] + +ONEWEEK = datetime.timedelta(7) + +TZKEYNAMENT = r"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones" +TZKEYNAME9X = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Time Zones" +TZLOCALKEYNAME = r"SYSTEM\CurrentControlSet\Control\TimeZoneInformation" + + +def _settzkeyname(): + handle = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) + try: + winreg.OpenKey(handle, TZKEYNAMENT).Close() + TZKEYNAME = TZKEYNAMENT + except WindowsError: + TZKEYNAME = TZKEYNAME9X + handle.Close() + return TZKEYNAME + + +TZKEYNAME = _settzkeyname() + + +class tzres(object): + """ + Class for accessing ``tzres.dll``, which contains timezone name related + resources. + + .. versionadded:: 2.5.0 + """ + p_wchar = ctypes.POINTER(wintypes.WCHAR) # Pointer to a wide char + + def __init__(self, tzres_loc='tzres.dll'): + # Load the user32 DLL so we can load strings from tzres + user32 = ctypes.WinDLL('user32') + + # Specify the LoadStringW function + user32.LoadStringW.argtypes = (wintypes.HINSTANCE, + wintypes.UINT, + wintypes.LPWSTR, + ctypes.c_int) + + self.LoadStringW = user32.LoadStringW + self._tzres = ctypes.WinDLL(tzres_loc) + self.tzres_loc = tzres_loc + + def load_name(self, offset): + """ + Load a timezone name from a DLL offset (integer). + + >>> from dateutil.tzwin import tzres + >>> tzr = tzres() + >>> print(tzr.load_name(112)) + 'Eastern Standard Time' + + :param offset: + A positive integer value referring to a string from the tzres dll. + + .. note:: + + Offsets found in the registry are generally of the form + ``@tzres.dll,-114``. The offset in this case is 114, not -114. + + """ + resource = self.p_wchar() + lpBuffer = ctypes.cast(ctypes.byref(resource), wintypes.LPWSTR) + nchar = self.LoadStringW(self._tzres._handle, offset, lpBuffer, 0) + return resource[:nchar] + + def name_from_string(self, tzname_str): + """ + Parse strings as returned from the Windows registry into the time zone + name as defined in the registry. + + >>> from dateutil.tzwin import tzres + >>> tzr = tzres() + >>> print(tzr.name_from_string('@tzres.dll,-251')) + 'Dateline Daylight Time' + >>> print(tzr.name_from_string('Eastern Standard Time')) + 'Eastern Standard Time' + + :param tzname_str: + A timezone name string as returned from a Windows registry key. + + :return: + Returns the localized timezone string from tzres.dll if the string + is of the form `@tzres.dll,-offset`, else returns the input string. + """ + if not tzname_str.startswith('@'): + return tzname_str + + name_splt = tzname_str.split(',-') + try: + offset = int(name_splt[1]) + except: + raise ValueError("Malformed timezone string.") + + return self.load_name(offset) + + +class tzwinbase(tzrangebase): + """tzinfo class based on win32's timezones available in the registry.""" + def __init__(self): + raise NotImplementedError('tzwinbase is an abstract base class') + + def __eq__(self, other): + # Compare on all relevant dimensions, including name. + if not isinstance(other, tzwinbase): + return NotImplemented + + return (self._std_offset == other._std_offset and + self._dst_offset == other._dst_offset and + self._stddayofweek == other._stddayofweek and + self._dstdayofweek == other._dstdayofweek and + self._stdweeknumber == other._stdweeknumber and + self._dstweeknumber == other._dstweeknumber and + self._stdhour == other._stdhour and + self._dsthour == other._dsthour and + self._stdminute == other._stdminute and + self._dstminute == other._dstminute and + self._std_abbr == other._std_abbr and + self._dst_abbr == other._dst_abbr) + + @staticmethod + def list(): + """Return a list of all time zones known to the system.""" + with winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) as handle: + with winreg.OpenKey(handle, TZKEYNAME) as tzkey: + result = [winreg.EnumKey(tzkey, i) + for i in range(winreg.QueryInfoKey(tzkey)[0])] + return result + + def display(self): + """ + Return the display name of the time zone. + """ + return self._display + + def transitions(self, year): + """ + For a given year, get the DST on and off transition times, expressed + always on the standard time side. For zones with no transitions, this + function returns ``None``. + + :param year: + The year whose transitions you would like to query. + + :return: + Returns a :class:`tuple` of :class:`datetime.datetime` objects, + ``(dston, dstoff)`` for zones with an annual DST transition, or + ``None`` for fixed offset zones. + """ + + if not self.hasdst: + return None + + dston = picknthweekday(year, self._dstmonth, self._dstdayofweek, + self._dsthour, self._dstminute, + self._dstweeknumber) + + dstoff = picknthweekday(year, self._stdmonth, self._stddayofweek, + self._stdhour, self._stdminute, + self._stdweeknumber) + + # Ambiguous dates default to the STD side + dstoff -= self._dst_base_offset + + return dston, dstoff + + def _get_hasdst(self): + return self._dstmonth != 0 + + @property + def _dst_base_offset(self): + return self._dst_base_offset_ + + +class tzwin(tzwinbase): + """ + Time zone object created from the zone info in the Windows registry + + These are similar to :py:class:`dateutil.tz.tzrange` objects in that + the time zone data is provided in the format of a single offset rule + for either 0 or 2 time zone transitions per year. + + :param: name + The name of a Windows time zone key, e.g. "Eastern Standard Time". + The full list of keys can be retrieved with :func:`tzwin.list`. + """ + + def __init__(self, name): + self._name = name + + with winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) as handle: + tzkeyname = text_type("{kn}\\{name}").format(kn=TZKEYNAME, name=name) + with winreg.OpenKey(handle, tzkeyname) as tzkey: + keydict = valuestodict(tzkey) + + self._std_abbr = keydict["Std"] + self._dst_abbr = keydict["Dlt"] + + self._display = keydict["Display"] + + # See http://ww_winreg.jsiinc.com/SUBA/tip0300/rh0398.htm + tup = struct.unpack("=3l16h", keydict["TZI"]) + stdoffset = -tup[0]-tup[1] # Bias + StandardBias * -1 + dstoffset = stdoffset-tup[2] # + DaylightBias * -1 + self._std_offset = datetime.timedelta(minutes=stdoffset) + self._dst_offset = datetime.timedelta(minutes=dstoffset) + + # for the meaning see the win32 TIME_ZONE_INFORMATION structure docs + # http://msdn.microsoft.com/en-us/library/windows/desktop/ms725481(v=vs.85).aspx + (self._stdmonth, + self._stddayofweek, # Sunday = 0 + self._stdweeknumber, # Last = 5 + self._stdhour, + self._stdminute) = tup[4:9] + + (self._dstmonth, + self._dstdayofweek, # Sunday = 0 + self._dstweeknumber, # Last = 5 + self._dsthour, + self._dstminute) = tup[12:17] + + self._dst_base_offset_ = self._dst_offset - self._std_offset + self.hasdst = self._get_hasdst() + + def __repr__(self): + return "tzwin(%s)" % repr(self._name) + + def __reduce__(self): + return (self.__class__, (self._name,)) + + +class tzwinlocal(tzwinbase): + """ + Class representing the local time zone information in the Windows registry + + While :class:`dateutil.tz.tzlocal` makes system calls (via the :mod:`time` + module) to retrieve time zone information, ``tzwinlocal`` retrieves the + rules directly from the Windows registry and creates an object like + :class:`dateutil.tz.tzwin`. + + Because Windows does not have an equivalent of :func:`time.tzset`, on + Windows, :class:`dateutil.tz.tzlocal` instances will always reflect the + time zone settings *at the time that the process was started*, meaning + changes to the machine's time zone settings during the run of a program + on Windows will **not** be reflected by :class:`dateutil.tz.tzlocal`. + Because ``tzwinlocal`` reads the registry directly, it is unaffected by + this issue. + """ + def __init__(self): + with winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) as handle: + with winreg.OpenKey(handle, TZLOCALKEYNAME) as tzlocalkey: + keydict = valuestodict(tzlocalkey) + + self._std_abbr = keydict["StandardName"] + self._dst_abbr = keydict["DaylightName"] + + try: + tzkeyname = text_type('{kn}\\{sn}').format(kn=TZKEYNAME, + sn=self._std_abbr) + with winreg.OpenKey(handle, tzkeyname) as tzkey: + _keydict = valuestodict(tzkey) + self._display = _keydict["Display"] + except OSError: + self._display = None + + stdoffset = -keydict["Bias"]-keydict["StandardBias"] + dstoffset = stdoffset-keydict["DaylightBias"] + + self._std_offset = datetime.timedelta(minutes=stdoffset) + self._dst_offset = datetime.timedelta(minutes=dstoffset) + + # For reasons unclear, in this particular key, the day of week has been + # moved to the END of the SYSTEMTIME structure. + tup = struct.unpack("=8h", keydict["StandardStart"]) + + (self._stdmonth, + self._stdweeknumber, # Last = 5 + self._stdhour, + self._stdminute) = tup[1:5] + + self._stddayofweek = tup[7] + + tup = struct.unpack("=8h", keydict["DaylightStart"]) + + (self._dstmonth, + self._dstweeknumber, # Last = 5 + self._dsthour, + self._dstminute) = tup[1:5] + + self._dstdayofweek = tup[7] + + self._dst_base_offset_ = self._dst_offset - self._std_offset + self.hasdst = self._get_hasdst() + + def __repr__(self): + return "tzwinlocal()" + + def __str__(self): + # str will return the standard name, not the daylight name. + return "tzwinlocal(%s)" % repr(self._std_abbr) + + def __reduce__(self): + return (self.__class__, ()) + + +def picknthweekday(year, month, dayofweek, hour, minute, whichweek): + """ dayofweek == 0 means Sunday, whichweek 5 means last instance """ + first = datetime.datetime(year, month, 1, hour, minute) + + # This will work if dayofweek is ISO weekday (1-7) or Microsoft-style (0-6), + # Because 7 % 7 = 0 + weekdayone = first.replace(day=((dayofweek - first.isoweekday()) % 7) + 1) + wd = weekdayone + ((whichweek - 1) * ONEWEEK) + if (wd.month != month): + wd -= ONEWEEK + + return wd + + +def valuestodict(key): + """Convert a registry key's values to a dictionary.""" + dout = {} + size = winreg.QueryInfoKey(key)[1] + tz_res = None + + for i in range(size): + key_name, value, dtype = winreg.EnumValue(key, i) + if dtype == winreg.REG_DWORD or dtype == winreg.REG_DWORD_LITTLE_ENDIAN: + # If it's a DWORD (32-bit integer), it's stored as unsigned - convert + # that to a proper signed integer + if value & (1 << 31): + value = value - (1 << 32) + elif dtype == winreg.REG_SZ: + # If it's a reference to the tzres DLL, load the actual string + if value.startswith('@tzres'): + tz_res = tz_res or tzres() + value = tz_res.name_from_string(value) + + value = value.rstrip('\x00') # Remove trailing nulls + + dout[key_name] = value + + return dout diff --git a/frogpilot/third_party/dateutil/tzwin.py b/frogpilot/third_party/dateutil/tzwin.py new file mode 100644 index 000000000..cebc673e4 --- /dev/null +++ b/frogpilot/third_party/dateutil/tzwin.py @@ -0,0 +1,2 @@ +# tzwin has moved to dateutil.tz.win +from .tz.win import * diff --git a/frogpilot/third_party/dateutil/utils.py b/frogpilot/third_party/dateutil/utils.py new file mode 100644 index 000000000..dd2d245a0 --- /dev/null +++ b/frogpilot/third_party/dateutil/utils.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +""" +This module offers general convenience and utility functions for dealing with +datetimes. + +.. versionadded:: 2.7.0 +""" +from __future__ import unicode_literals + +from datetime import datetime, time + + +def today(tzinfo=None): + """ + Returns a :py:class:`datetime` representing the current day at midnight + + :param tzinfo: + The time zone to attach (also used to determine the current day). + + :return: + A :py:class:`datetime.datetime` object representing the current day + at midnight. + """ + + dt = datetime.now(tzinfo) + return datetime.combine(dt.date(), time(0, tzinfo=tzinfo)) + + +def default_tzinfo(dt, tzinfo): + """ + Sets the ``tzinfo`` parameter on naive datetimes only + + This is useful for example when you are provided a datetime that may have + either an implicit or explicit time zone, such as when parsing a time zone + string. + + .. doctest:: + + >>> from dateutil.tz import tzoffset + >>> from dateutil.parser import parse + >>> from dateutil.utils import default_tzinfo + >>> dflt_tz = tzoffset("EST", -18000) + >>> print(default_tzinfo(parse('2014-01-01 12:30 UTC'), dflt_tz)) + 2014-01-01 12:30:00+00:00 + >>> print(default_tzinfo(parse('2014-01-01 12:30'), dflt_tz)) + 2014-01-01 12:30:00-05:00 + + :param dt: + The datetime on which to replace the time zone + + :param tzinfo: + The :py:class:`datetime.tzinfo` subclass instance to assign to + ``dt`` if (and only if) it is naive. + + :return: + Returns an aware :py:class:`datetime.datetime`. + """ + if dt.tzinfo is not None: + return dt + else: + return dt.replace(tzinfo=tzinfo) + + +def within_delta(dt1, dt2, delta): + """ + Useful for comparing two datetimes that may have a negligible difference + to be considered equal. + """ + delta = abs(delta) + difference = dt1 - dt2 + return -delta <= difference <= delta diff --git a/frogpilot/third_party/dateutil/zoneinfo/__init__.py b/frogpilot/third_party/dateutil/zoneinfo/__init__.py new file mode 100644 index 000000000..34f11ad66 --- /dev/null +++ b/frogpilot/third_party/dateutil/zoneinfo/__init__.py @@ -0,0 +1,167 @@ +# -*- coding: utf-8 -*- +import warnings +import json + +from tarfile import TarFile +from pkgutil import get_data +from io import BytesIO + +from dateutil.tz import tzfile as _tzfile + +__all__ = ["get_zonefile_instance", "gettz", "gettz_db_metadata"] + +ZONEFILENAME = "dateutil-zoneinfo.tar.gz" +METADATA_FN = 'METADATA' + + +class tzfile(_tzfile): + def __reduce__(self): + return (gettz, (self._filename,)) + + +def getzoneinfofile_stream(): + try: + return BytesIO(get_data(__name__, ZONEFILENAME)) + except IOError as e: # TODO switch to FileNotFoundError? + warnings.warn("I/O error({0}): {1}".format(e.errno, e.strerror)) + return None + + +class ZoneInfoFile(object): + def __init__(self, zonefile_stream=None): + if zonefile_stream is not None: + with TarFile.open(fileobj=zonefile_stream) as tf: + self.zones = {zf.name: tzfile(tf.extractfile(zf), filename=zf.name) + for zf in tf.getmembers() + if zf.isfile() and zf.name != METADATA_FN} + # deal with links: They'll point to their parent object. Less + # waste of memory + links = {zl.name: self.zones[zl.linkname] + for zl in tf.getmembers() if + zl.islnk() or zl.issym()} + self.zones.update(links) + try: + metadata_json = tf.extractfile(tf.getmember(METADATA_FN)) + metadata_str = metadata_json.read().decode('UTF-8') + self.metadata = json.loads(metadata_str) + except KeyError: + # no metadata in tar file + self.metadata = None + else: + self.zones = {} + self.metadata = None + + def get(self, name, default=None): + """ + Wrapper for :func:`ZoneInfoFile.zones.get`. This is a convenience method + for retrieving zones from the zone dictionary. + + :param name: + The name of the zone to retrieve. (Generally IANA zone names) + + :param default: + The value to return in the event of a missing key. + + .. versionadded:: 2.6.0 + + """ + return self.zones.get(name, default) + + +# The current API has gettz as a module function, although in fact it taps into +# a stateful class. So as a workaround for now, without changing the API, we +# will create a new "global" class instance the first time a user requests a +# timezone. Ugly, but adheres to the api. +# +# TODO: Remove after deprecation period. +_CLASS_ZONE_INSTANCE = [] + + +def get_zonefile_instance(new_instance=False): + """ + This is a convenience function which provides a :class:`ZoneInfoFile` + instance using the data provided by the ``dateutil`` package. By default, it + caches a single instance of the ZoneInfoFile object and returns that. + + :param new_instance: + If ``True``, a new instance of :class:`ZoneInfoFile` is instantiated and + used as the cached instance for the next call. Otherwise, new instances + are created only as necessary. + + :return: + Returns a :class:`ZoneInfoFile` object. + + .. versionadded:: 2.6 + """ + if new_instance: + zif = None + else: + zif = getattr(get_zonefile_instance, '_cached_instance', None) + + if zif is None: + zif = ZoneInfoFile(getzoneinfofile_stream()) + + get_zonefile_instance._cached_instance = zif + + return zif + + +def gettz(name): + """ + This retrieves a time zone from the local zoneinfo tarball that is packaged + with dateutil. + + :param name: + An IANA-style time zone name, as found in the zoneinfo file. + + :return: + Returns a :class:`dateutil.tz.tzfile` time zone object. + + .. warning:: + It is generally inadvisable to use this function, and it is only + provided for API compatibility with earlier versions. This is *not* + equivalent to ``dateutil.tz.gettz()``, which selects an appropriate + time zone based on the inputs, favoring system zoneinfo. This is ONLY + for accessing the dateutil-specific zoneinfo (which may be out of + date compared to the system zoneinfo). + + .. deprecated:: 2.6 + If you need to use a specific zoneinfofile over the system zoneinfo, + instantiate a :class:`dateutil.zoneinfo.ZoneInfoFile` object and call + :func:`dateutil.zoneinfo.ZoneInfoFile.get(name)` instead. + + Use :func:`get_zonefile_instance` to retrieve an instance of the + dateutil-provided zoneinfo. + """ + warnings.warn("zoneinfo.gettz() will be removed in future versions, " + "to use the dateutil-provided zoneinfo files, instantiate a " + "ZoneInfoFile object and use ZoneInfoFile.zones.get() " + "instead. See the documentation for details.", + DeprecationWarning) + + if len(_CLASS_ZONE_INSTANCE) == 0: + _CLASS_ZONE_INSTANCE.append(ZoneInfoFile(getzoneinfofile_stream())) + return _CLASS_ZONE_INSTANCE[0].zones.get(name) + + +def gettz_db_metadata(): + """ Get the zonefile metadata + + See `zonefile_metadata`_ + + :returns: + A dictionary with the database metadata + + .. deprecated:: 2.6 + See deprecation warning in :func:`zoneinfo.gettz`. To get metadata, + query the attribute ``zoneinfo.ZoneInfoFile.metadata``. + """ + warnings.warn("zoneinfo.gettz_db_metadata() will be removed in future " + "versions, to use the dateutil-provided zoneinfo files, " + "ZoneInfoFile object and query the 'metadata' attribute " + "instead. See the documentation for details.", + DeprecationWarning) + + if len(_CLASS_ZONE_INSTANCE) == 0: + _CLASS_ZONE_INSTANCE.append(ZoneInfoFile(getzoneinfofile_stream())) + return _CLASS_ZONE_INSTANCE[0].metadata diff --git a/frogpilot/third_party/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz b/frogpilot/third_party/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz new file mode 100644 index 000000000..1461f8c86 Binary files /dev/null and b/frogpilot/third_party/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz differ diff --git a/frogpilot/third_party/dateutil/zoneinfo/rebuild.py b/frogpilot/third_party/dateutil/zoneinfo/rebuild.py new file mode 100644 index 000000000..684c6586f --- /dev/null +++ b/frogpilot/third_party/dateutil/zoneinfo/rebuild.py @@ -0,0 +1,75 @@ +import logging +import os +import tempfile +import shutil +import json +from subprocess import check_call, check_output +from tarfile import TarFile + +from dateutil.zoneinfo import METADATA_FN, ZONEFILENAME + + +def rebuild(filename, tag=None, format="gz", zonegroups=[], metadata=None): + """Rebuild the internal timezone info in dateutil/zoneinfo/zoneinfo*tar* + + filename is the timezone tarball from ``ftp.iana.org/tz``. + + """ + tmpdir = tempfile.mkdtemp() + zonedir = os.path.join(tmpdir, "zoneinfo") + moduledir = os.path.dirname(__file__) + try: + with TarFile.open(filename) as tf: + for name in zonegroups: + tf.extract(name, tmpdir) + filepaths = [os.path.join(tmpdir, n) for n in zonegroups] + + _run_zic(zonedir, filepaths) + + # write metadata file + with open(os.path.join(zonedir, METADATA_FN), 'w') as f: + json.dump(metadata, f, indent=4, sort_keys=True) + target = os.path.join(moduledir, ZONEFILENAME) + with TarFile.open(target, "w:%s" % format) as tf: + for entry in os.listdir(zonedir): + entrypath = os.path.join(zonedir, entry) + tf.add(entrypath, entry) + finally: + shutil.rmtree(tmpdir) + + +def _run_zic(zonedir, filepaths): + """Calls the ``zic`` compiler in a compatible way to get a "fat" binary. + + Recent versions of ``zic`` default to ``-b slim``, while older versions + don't even have the ``-b`` option (but default to "fat" binaries). The + current version of dateutil does not support Version 2+ TZif files, which + causes problems when used in conjunction with "slim" binaries, so this + function is used to ensure that we always get a "fat" binary. + """ + + try: + help_text = check_output(["zic", "--help"]) + except OSError as e: + _print_on_nosuchfile(e) + raise + + if b"-b " in help_text: + bloat_args = ["-b", "fat"] + else: + bloat_args = [] + + check_call(["zic"] + bloat_args + ["-d", zonedir] + filepaths) + + +def _print_on_nosuchfile(e): + """Print helpful troubleshooting message + + e is an exception raised by subprocess.check_call() + + """ + if e.errno == 2: + logging.error( + "Could not find zic. Perhaps you need to install " + "libc-bin or some other package that provides it, " + "or it's not in your PATH?") diff --git a/frogpilot/third_party/influxdb_client/__init__.py b/frogpilot/third_party/influxdb_client/__init__.py new file mode 100644 index 000000000..a10095111 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/__init__.py @@ -0,0 +1,396 @@ +# coding: utf-8 + +# flake8: noqa + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +# import apis into sdk package +from influxdb_client.service.authorizations_service import AuthorizationsService +from influxdb_client.service.backup_service import BackupService +from influxdb_client.service.bucket_schemas_service import BucketSchemasService +from influxdb_client.service.buckets_service import BucketsService +from influxdb_client.service.cells_service import CellsService +from influxdb_client.service.checks_service import ChecksService +from influxdb_client.service.config_service import ConfigService +from influxdb_client.service.dbr_ps_service import DBRPsService +from influxdb_client.service.dashboards_service import DashboardsService +from influxdb_client.service.delete_service import DeleteService +from influxdb_client.service.health_service import HealthService +from influxdb_client.service.invokable_scripts_service import InvokableScriptsService +from influxdb_client.service.labels_service import LabelsService +from influxdb_client.service.legacy_authorizations_service import LegacyAuthorizationsService +from influxdb_client.service.metrics_service import MetricsService +from influxdb_client.service.notification_endpoints_service import NotificationEndpointsService +from influxdb_client.service.notification_rules_service import NotificationRulesService +from influxdb_client.service.organizations_service import OrganizationsService +from influxdb_client.service.ping_service import PingService +from influxdb_client.service.query_service import QueryService +from influxdb_client.service.ready_service import ReadyService +from influxdb_client.service.remote_connections_service import RemoteConnectionsService +from influxdb_client.service.replications_service import ReplicationsService +from influxdb_client.service.resources_service import ResourcesService +from influxdb_client.service.restore_service import RestoreService +from influxdb_client.service.routes_service import RoutesService +from influxdb_client.service.rules_service import RulesService +from influxdb_client.service.scraper_targets_service import ScraperTargetsService +from influxdb_client.service.secrets_service import SecretsService +from influxdb_client.service.setup_service import SetupService +from influxdb_client.service.signin_service import SigninService +from influxdb_client.service.signout_service import SignoutService +from influxdb_client.service.sources_service import SourcesService +from influxdb_client.service.tasks_service import TasksService +from influxdb_client.service.telegraf_plugins_service import TelegrafPluginsService +from influxdb_client.service.telegrafs_service import TelegrafsService +from influxdb_client.service.templates_service import TemplatesService +from influxdb_client.service.users_service import UsersService +from influxdb_client.service.variables_service import VariablesService +from influxdb_client.service.views_service import ViewsService +from influxdb_client.service.write_service import WriteService + +from influxdb_client.configuration import Configuration +# import models into sdk package +from influxdb_client.domain.ast_response import ASTResponse +from influxdb_client.domain.add_resource_member_request_body import AddResourceMemberRequestBody +from influxdb_client.domain.analyze_query_response import AnalyzeQueryResponse +from influxdb_client.domain.analyze_query_response_errors import AnalyzeQueryResponseErrors +from influxdb_client.domain.array_expression import ArrayExpression +from influxdb_client.domain.authorization import Authorization +from influxdb_client.domain.authorization_post_request import AuthorizationPostRequest +from influxdb_client.domain.authorization_update_request import AuthorizationUpdateRequest +from influxdb_client.domain.authorizations import Authorizations +from influxdb_client.domain.axes import Axes +from influxdb_client.domain.axis import Axis +from influxdb_client.domain.axis_scale import AxisScale +from influxdb_client.domain.bad_statement import BadStatement +from influxdb_client.domain.band_view_properties import BandViewProperties +from influxdb_client.domain.binary_expression import BinaryExpression +from influxdb_client.domain.block import Block +from influxdb_client.domain.boolean_literal import BooleanLiteral +from influxdb_client.domain.bucket import Bucket +from influxdb_client.domain.bucket_links import BucketLinks +from influxdb_client.domain.bucket_metadata_manifest import BucketMetadataManifest +from influxdb_client.domain.bucket_retention_rules import BucketRetentionRules +from influxdb_client.domain.bucket_shard_mapping import BucketShardMapping +from influxdb_client.domain.buckets import Buckets +from influxdb_client.domain.builder_aggregate_function_type import BuilderAggregateFunctionType +from influxdb_client.domain.builder_config import BuilderConfig +from influxdb_client.domain.builder_config_aggregate_window import BuilderConfigAggregateWindow +from influxdb_client.domain.builder_functions_type import BuilderFunctionsType +from influxdb_client.domain.builder_tags_type import BuilderTagsType +from influxdb_client.domain.builtin_statement import BuiltinStatement +from influxdb_client.domain.call_expression import CallExpression +from influxdb_client.domain.cell import Cell +from influxdb_client.domain.cell_links import CellLinks +from influxdb_client.domain.cell_update import CellUpdate +from influxdb_client.domain.cell_with_view_properties import CellWithViewProperties +from influxdb_client.domain.check import Check +from influxdb_client.domain.check_base import CheckBase +from influxdb_client.domain.check_base_links import CheckBaseLinks +from influxdb_client.domain.check_discriminator import CheckDiscriminator +from influxdb_client.domain.check_patch import CheckPatch +from influxdb_client.domain.check_status_level import CheckStatusLevel +from influxdb_client.domain.check_view_properties import CheckViewProperties +from influxdb_client.domain.checks import Checks +from influxdb_client.domain.column_data_type import ColumnDataType +from influxdb_client.domain.column_semantic_type import ColumnSemanticType +from influxdb_client.domain.conditional_expression import ConditionalExpression +from influxdb_client.domain.config import Config +from influxdb_client.domain.constant_variable_properties import ConstantVariableProperties +from influxdb_client.domain.create_cell import CreateCell +from influxdb_client.domain.create_dashboard_request import CreateDashboardRequest +from influxdb_client.domain.custom_check import CustomCheck +from influxdb_client.domain.dbrp import DBRP +from influxdb_client.domain.dbrp_create import DBRPCreate +from influxdb_client.domain.dbrp_get import DBRPGet +from influxdb_client.domain.dbrp_update import DBRPUpdate +from influxdb_client.domain.dbr_ps import DBRPs +from influxdb_client.domain.dashboard import Dashboard +from influxdb_client.domain.dashboard_color import DashboardColor +from influxdb_client.domain.dashboard_query import DashboardQuery +from influxdb_client.domain.dashboard_with_view_properties import DashboardWithViewProperties +from influxdb_client.domain.dashboards import Dashboards +from influxdb_client.domain.date_time_literal import DateTimeLiteral +from influxdb_client.domain.deadman_check import DeadmanCheck +from influxdb_client.domain.decimal_places import DecimalPlaces +from influxdb_client.domain.delete_predicate_request import DeletePredicateRequest +from influxdb_client.domain.dialect import Dialect +from influxdb_client.domain.dict_expression import DictExpression +from influxdb_client.domain.dict_item import DictItem +from influxdb_client.domain.duration import Duration +from influxdb_client.domain.duration_literal import DurationLiteral +from influxdb_client.domain.error import Error +from influxdb_client.domain.expression import Expression +from influxdb_client.domain.expression_statement import ExpressionStatement +from influxdb_client.domain.field import Field +from influxdb_client.domain.file import File +from influxdb_client.domain.float_literal import FloatLiteral +from influxdb_client.domain.flux_response import FluxResponse +from influxdb_client.domain.flux_suggestion import FluxSuggestion +from influxdb_client.domain.flux_suggestions import FluxSuggestions +from influxdb_client.domain.function_expression import FunctionExpression +from influxdb_client.domain.gauge_view_properties import GaugeViewProperties +from influxdb_client.domain.greater_threshold import GreaterThreshold +from influxdb_client.domain.http_notification_endpoint import HTTPNotificationEndpoint +from influxdb_client.domain.http_notification_rule import HTTPNotificationRule +from influxdb_client.domain.http_notification_rule_base import HTTPNotificationRuleBase +from influxdb_client.domain.health_check import HealthCheck +from influxdb_client.domain.heatmap_view_properties import HeatmapViewProperties +from influxdb_client.domain.histogram_view_properties import HistogramViewProperties +from influxdb_client.domain.identifier import Identifier +from influxdb_client.domain.import_declaration import ImportDeclaration +from influxdb_client.domain.index_expression import IndexExpression +from influxdb_client.domain.integer_literal import IntegerLiteral +from influxdb_client.domain.is_onboarding import IsOnboarding +from influxdb_client.domain.label import Label +from influxdb_client.domain.label_create_request import LabelCreateRequest +from influxdb_client.domain.label_mapping import LabelMapping +from influxdb_client.domain.label_response import LabelResponse +from influxdb_client.domain.label_update import LabelUpdate +from influxdb_client.domain.labels_response import LabelsResponse +from influxdb_client.domain.language_request import LanguageRequest +from influxdb_client.domain.legacy_authorization_post_request import LegacyAuthorizationPostRequest +from influxdb_client.domain.lesser_threshold import LesserThreshold +from influxdb_client.domain.line_plus_single_stat_properties import LinePlusSingleStatProperties +from influxdb_client.domain.line_protocol_error import LineProtocolError +from influxdb_client.domain.line_protocol_length_error import LineProtocolLengthError +from influxdb_client.domain.links import Links +from influxdb_client.domain.list_stacks_response import ListStacksResponse +from influxdb_client.domain.log_event import LogEvent +from influxdb_client.domain.logical_expression import LogicalExpression +from influxdb_client.domain.logs import Logs +from influxdb_client.domain.map_variable_properties import MapVariableProperties +from influxdb_client.domain.markdown_view_properties import MarkdownViewProperties +from influxdb_client.domain.measurement_schema import MeasurementSchema +from influxdb_client.domain.measurement_schema_column import MeasurementSchemaColumn +from influxdb_client.domain.measurement_schema_create_request import MeasurementSchemaCreateRequest +from influxdb_client.domain.measurement_schema_list import MeasurementSchemaList +from influxdb_client.domain.measurement_schema_update_request import MeasurementSchemaUpdateRequest +from influxdb_client.domain.member_assignment import MemberAssignment +from influxdb_client.domain.member_expression import MemberExpression +from influxdb_client.domain.metadata_backup import MetadataBackup +from influxdb_client.domain.model_property import ModelProperty +from influxdb_client.domain.mosaic_view_properties import MosaicViewProperties +from influxdb_client.domain.node import Node +from influxdb_client.domain.notification_endpoint import NotificationEndpoint +from influxdb_client.domain.notification_endpoint_base import NotificationEndpointBase +from influxdb_client.domain.notification_endpoint_base_links import NotificationEndpointBaseLinks +from influxdb_client.domain.notification_endpoint_discriminator import NotificationEndpointDiscriminator +from influxdb_client.domain.notification_endpoint_type import NotificationEndpointType +from influxdb_client.domain.notification_endpoint_update import NotificationEndpointUpdate +from influxdb_client.domain.notification_endpoints import NotificationEndpoints +from influxdb_client.domain.notification_rule import NotificationRule +from influxdb_client.domain.notification_rule_base import NotificationRuleBase +from influxdb_client.domain.notification_rule_base_links import NotificationRuleBaseLinks +from influxdb_client.domain.notification_rule_discriminator import NotificationRuleDiscriminator +from influxdb_client.domain.notification_rule_update import NotificationRuleUpdate +from influxdb_client.domain.notification_rules import NotificationRules +from influxdb_client.domain.object_expression import ObjectExpression +from influxdb_client.domain.onboarding_request import OnboardingRequest +from influxdb_client.domain.onboarding_response import OnboardingResponse +from influxdb_client.domain.option_statement import OptionStatement +from influxdb_client.domain.organization import Organization +from influxdb_client.domain.organization_links import OrganizationLinks +from influxdb_client.domain.organizations import Organizations +from influxdb_client.domain.package import Package +from influxdb_client.domain.package_clause import PackageClause +from influxdb_client.domain.pager_duty_notification_endpoint import PagerDutyNotificationEndpoint +from influxdb_client.domain.pager_duty_notification_rule import PagerDutyNotificationRule +from influxdb_client.domain.pager_duty_notification_rule_base import PagerDutyNotificationRuleBase +from influxdb_client.domain.paren_expression import ParenExpression +from influxdb_client.domain.password_reset_body import PasswordResetBody +from influxdb_client.domain.patch_bucket_request import PatchBucketRequest +from influxdb_client.domain.patch_dashboard_request import PatchDashboardRequest +from influxdb_client.domain.patch_organization_request import PatchOrganizationRequest +from influxdb_client.domain.patch_retention_rule import PatchRetentionRule +from influxdb_client.domain.patch_stack_request import PatchStackRequest +from influxdb_client.domain.patch_stack_request_additional_resources import PatchStackRequestAdditionalResources +from influxdb_client.domain.permission import Permission +from influxdb_client.domain.permission_resource import PermissionResource +from influxdb_client.domain.pipe_expression import PipeExpression +from influxdb_client.domain.pipe_literal import PipeLiteral +from influxdb_client.domain.post_bucket_request import PostBucketRequest +from influxdb_client.domain.post_check import PostCheck +from influxdb_client.domain.post_notification_endpoint import PostNotificationEndpoint +from influxdb_client.domain.post_notification_rule import PostNotificationRule +from influxdb_client.domain.post_organization_request import PostOrganizationRequest +from influxdb_client.domain.post_restore_kv_response import PostRestoreKVResponse +from influxdb_client.domain.post_stack_request import PostStackRequest +from influxdb_client.domain.property_key import PropertyKey +from influxdb_client.domain.query import Query +from influxdb_client.domain.query_edit_mode import QueryEditMode +from influxdb_client.domain.query_variable_properties import QueryVariableProperties +from influxdb_client.domain.query_variable_properties_values import QueryVariablePropertiesValues +from influxdb_client.domain.range_threshold import RangeThreshold +from influxdb_client.domain.ready import Ready +from influxdb_client.domain.regexp_literal import RegexpLiteral +from influxdb_client.domain.remote_connection import RemoteConnection +from influxdb_client.domain.remote_connection_creation_request import RemoteConnectionCreationRequest +from influxdb_client.domain.remote_connection_update_request import RemoteConnectionUpdateRequest +from influxdb_client.domain.remote_connections import RemoteConnections +from influxdb_client.domain.renamable_field import RenamableField +from influxdb_client.domain.replication import Replication +from influxdb_client.domain.replication_creation_request import ReplicationCreationRequest +from influxdb_client.domain.replication_update_request import ReplicationUpdateRequest +from influxdb_client.domain.replications import Replications +from influxdb_client.domain.resource_member import ResourceMember +from influxdb_client.domain.resource_members import ResourceMembers +from influxdb_client.domain.resource_members_links import ResourceMembersLinks +from influxdb_client.domain.resource_owner import ResourceOwner +from influxdb_client.domain.resource_owners import ResourceOwners +from influxdb_client.domain.restored_bucket_mappings import RestoredBucketMappings +from influxdb_client.domain.retention_policy_manifest import RetentionPolicyManifest +from influxdb_client.domain.return_statement import ReturnStatement +from influxdb_client.domain.routes import Routes +from influxdb_client.domain.routes_external import RoutesExternal +from influxdb_client.domain.routes_query import RoutesQuery +from influxdb_client.domain.routes_system import RoutesSystem +from influxdb_client.domain.rule_status_level import RuleStatusLevel +from influxdb_client.domain.run import Run +from influxdb_client.domain.run_links import RunLinks +from influxdb_client.domain.run_manually import RunManually +from influxdb_client.domain.runs import Runs +from influxdb_client.domain.smtp_notification_rule import SMTPNotificationRule +from influxdb_client.domain.smtp_notification_rule_base import SMTPNotificationRuleBase +from influxdb_client.domain.scatter_view_properties import ScatterViewProperties +from influxdb_client.domain.schema_type import SchemaType +from influxdb_client.domain.scraper_target_request import ScraperTargetRequest +from influxdb_client.domain.scraper_target_response import ScraperTargetResponse +from influxdb_client.domain.scraper_target_responses import ScraperTargetResponses +from influxdb_client.domain.script import Script +from influxdb_client.domain.script_create_request import ScriptCreateRequest +from influxdb_client.domain.script_invocation_params import ScriptInvocationParams +from influxdb_client.domain.script_language import ScriptLanguage +from influxdb_client.domain.script_update_request import ScriptUpdateRequest +from influxdb_client.domain.scripts import Scripts +from influxdb_client.domain.secret_keys import SecretKeys +from influxdb_client.domain.secret_keys_response import SecretKeysResponse +from influxdb_client.domain.shard_group_manifest import ShardGroupManifest +from influxdb_client.domain.shard_manifest import ShardManifest +from influxdb_client.domain.shard_owner import ShardOwner +from influxdb_client.domain.simple_table_view_properties import SimpleTableViewProperties +from influxdb_client.domain.single_stat_view_properties import SingleStatViewProperties +from influxdb_client.domain.slack_notification_endpoint import SlackNotificationEndpoint +from influxdb_client.domain.slack_notification_rule import SlackNotificationRule +from influxdb_client.domain.slack_notification_rule_base import SlackNotificationRuleBase +from influxdb_client.domain.source import Source +from influxdb_client.domain.source_links import SourceLinks +from influxdb_client.domain.sources import Sources +from influxdb_client.domain.stack import Stack +from influxdb_client.domain.stack_associations import StackAssociations +from influxdb_client.domain.stack_events import StackEvents +from influxdb_client.domain.stack_links import StackLinks +from influxdb_client.domain.stack_resources import StackResources +from influxdb_client.domain.statement import Statement +from influxdb_client.domain.static_legend import StaticLegend +from influxdb_client.domain.status_rule import StatusRule +from influxdb_client.domain.string_literal import StringLiteral +from influxdb_client.domain.subscription_manifest import SubscriptionManifest +from influxdb_client.domain.table_view_properties import TableViewProperties +from influxdb_client.domain.table_view_properties_table_options import TableViewPropertiesTableOptions +from influxdb_client.domain.tag_rule import TagRule +from influxdb_client.domain.task import Task +from influxdb_client.domain.task_create_request import TaskCreateRequest +from influxdb_client.domain.task_links import TaskLinks +from influxdb_client.domain.task_status_type import TaskStatusType +from influxdb_client.domain.task_update_request import TaskUpdateRequest +from influxdb_client.domain.tasks import Tasks +from influxdb_client.domain.telegraf import Telegraf +from influxdb_client.domain.telegraf_plugin import TelegrafPlugin +from influxdb_client.domain.telegraf_plugin_request import TelegrafPluginRequest +from influxdb_client.domain.telegraf_plugin_request_plugins import TelegrafPluginRequestPlugins +from influxdb_client.domain.telegraf_plugins import TelegrafPlugins +from influxdb_client.domain.telegraf_request import TelegrafRequest +from influxdb_client.domain.telegraf_request_metadata import TelegrafRequestMetadata +from influxdb_client.domain.telegrafs import Telegrafs +from influxdb_client.domain.telegram_notification_endpoint import TelegramNotificationEndpoint +from influxdb_client.domain.telegram_notification_rule import TelegramNotificationRule +from influxdb_client.domain.telegram_notification_rule_base import TelegramNotificationRuleBase +from influxdb_client.domain.template_apply import TemplateApply +from influxdb_client.domain.template_apply_remotes import TemplateApplyRemotes +from influxdb_client.domain.template_apply_template import TemplateApplyTemplate +from influxdb_client.domain.template_chart import TemplateChart +from influxdb_client.domain.template_export_by_id import TemplateExportByID +from influxdb_client.domain.template_export_by_id_org_ids import TemplateExportByIDOrgIDs +from influxdb_client.domain.template_export_by_id_resource_filters import TemplateExportByIDResourceFilters +from influxdb_client.domain.template_export_by_id_resources import TemplateExportByIDResources +from influxdb_client.domain.template_kind import TemplateKind +from influxdb_client.domain.template_summary import TemplateSummary +from influxdb_client.domain.template_summary_diff import TemplateSummaryDiff +from influxdb_client.domain.template_summary_diff_buckets import TemplateSummaryDiffBuckets +from influxdb_client.domain.template_summary_diff_buckets_new_old import TemplateSummaryDiffBucketsNewOld +from influxdb_client.domain.template_summary_diff_checks import TemplateSummaryDiffChecks +from influxdb_client.domain.template_summary_diff_dashboards import TemplateSummaryDiffDashboards +from influxdb_client.domain.template_summary_diff_dashboards_new_old import TemplateSummaryDiffDashboardsNewOld +from influxdb_client.domain.template_summary_diff_label_mappings import TemplateSummaryDiffLabelMappings +from influxdb_client.domain.template_summary_diff_labels import TemplateSummaryDiffLabels +from influxdb_client.domain.template_summary_diff_labels_new_old import TemplateSummaryDiffLabelsNewOld +from influxdb_client.domain.template_summary_diff_notification_endpoints import TemplateSummaryDiffNotificationEndpoints +from influxdb_client.domain.template_summary_diff_notification_rules import TemplateSummaryDiffNotificationRules +from influxdb_client.domain.template_summary_diff_notification_rules_new_old import TemplateSummaryDiffNotificationRulesNewOld +from influxdb_client.domain.template_summary_diff_tasks import TemplateSummaryDiffTasks +from influxdb_client.domain.template_summary_diff_tasks_new_old import TemplateSummaryDiffTasksNewOld +from influxdb_client.domain.template_summary_diff_telegraf_configs import TemplateSummaryDiffTelegrafConfigs +from influxdb_client.domain.template_summary_diff_variables import TemplateSummaryDiffVariables +from influxdb_client.domain.template_summary_diff_variables_new_old import TemplateSummaryDiffVariablesNewOld +from influxdb_client.domain.template_summary_errors import TemplateSummaryErrors +from influxdb_client.domain.template_summary_label import TemplateSummaryLabel +from influxdb_client.domain.template_summary_label_properties import TemplateSummaryLabelProperties +from influxdb_client.domain.template_summary_summary import TemplateSummarySummary +from influxdb_client.domain.template_summary_summary_buckets import TemplateSummarySummaryBuckets +from influxdb_client.domain.template_summary_summary_dashboards import TemplateSummarySummaryDashboards +from influxdb_client.domain.template_summary_summary_label_mappings import TemplateSummarySummaryLabelMappings +from influxdb_client.domain.template_summary_summary_notification_rules import TemplateSummarySummaryNotificationRules +from influxdb_client.domain.template_summary_summary_status_rules import TemplateSummarySummaryStatusRules +from influxdb_client.domain.template_summary_summary_tag_rules import TemplateSummarySummaryTagRules +from influxdb_client.domain.template_summary_summary_tasks import TemplateSummarySummaryTasks +from influxdb_client.domain.template_summary_summary_variables import TemplateSummarySummaryVariables +from influxdb_client.domain.test_statement import TestStatement +from influxdb_client.domain.threshold import Threshold +from influxdb_client.domain.threshold_base import ThresholdBase +from influxdb_client.domain.threshold_check import ThresholdCheck +from influxdb_client.domain.unary_expression import UnaryExpression +from influxdb_client.domain.unsigned_integer_literal import UnsignedIntegerLiteral +from influxdb_client.domain.user import User +from influxdb_client.domain.user_response import UserResponse +from influxdb_client.domain.user_response_links import UserResponseLinks +from influxdb_client.domain.users import Users +from influxdb_client.domain.variable import Variable +from influxdb_client.domain.variable_assignment import VariableAssignment +from influxdb_client.domain.variable_links import VariableLinks +from influxdb_client.domain.variable_properties import VariableProperties +from influxdb_client.domain.variables import Variables +from influxdb_client.domain.view import View +from influxdb_client.domain.view_links import ViewLinks +from influxdb_client.domain.view_properties import ViewProperties +from influxdb_client.domain.views import Views +from influxdb_client.domain.write_precision import WritePrecision +from influxdb_client.domain.xy_geom import XYGeom +from influxdb_client.domain.xy_view_properties import XYViewProperties + +from influxdb_client.client.authorizations_api import AuthorizationsApi +from influxdb_client.client.bucket_api import BucketsApi +from influxdb_client.client.delete_api import DeleteApi +from influxdb_client.client.invokable_scripts_api import InvokableScriptsApi +from influxdb_client.client.labels_api import LabelsApi +from influxdb_client.client.organizations_api import OrganizationsApi +from influxdb_client.client.query_api import QueryApi +from influxdb_client.client.tasks_api import TasksApi +from influxdb_client.client.users_api import UsersApi +from influxdb_client.client.write_api import WriteApi, WriteOptions +from influxdb_client.client.influxdb_client import InfluxDBClient +from influxdb_client.client.logging_handler import InfluxLoggingHandler +from influxdb_client.client.write.point import Point + +from influxdb_client.version import VERSION + +__version__ = VERSION diff --git a/frogpilot/third_party/influxdb_client/_async/__init__.py b/frogpilot/third_party/influxdb_client/_async/__init__.py new file mode 100644 index 000000000..743539c50 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/_async/__init__.py @@ -0,0 +1 @@ +"""Asynchronous REST APIs.""" diff --git a/frogpilot/third_party/influxdb_client/_async/api_client.py b/frogpilot/third_party/influxdb_client/_async/api_client.py new file mode 100644 index 000000000..3a396a109 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/_async/api_client.py @@ -0,0 +1,663 @@ +# coding: utf-8 +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + +from __future__ import absolute_import + +import datetime +import json +import mimetypes +import os +import re +import tempfile +from multiprocessing.pool import ThreadPool +from urllib.parse import quote + +import influxdb_client.domain +from influxdb_client import SigninService +from influxdb_client import SignoutService +from influxdb_client._async import rest +from influxdb_client.configuration import Configuration +from influxdb_client.rest import _requires_create_user_session, _requires_expire_user_session + + +class ApiClientAsync(object): + """Generic API client for OpenAPI client library Build. + + OpenAPI generic API client. This client handles the client- + server communication, and is invariant across implementations. Specifics of + the methods and models for each application are generated from the OpenAPI + templates. + + NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + Do not edit the class manually. + + :param configuration: .Configuration object for this client + :param header_name: a header to pass when making calls to the API. + :param header_value: a header value to pass when making calls to + the API. + :param cookie: a cookie to include in the header when making calls + to the API + :param pool_threads: The number of threads to use for async requests + to the API. More threads means more concurrent API requests. + """ + + PRIMITIVE_TYPES = (float, bool, bytes, str, int) + NATIVE_TYPES_MAPPING = { + 'int': int, + 'long': int, + 'float': float, + 'str': str, + 'bool': bool, + 'date': datetime.date, + 'datetime': datetime.datetime, + 'object': object, + } + _pool = None + + def __init__(self, configuration=None, header_name=None, header_value=None, + cookie=None, pool_threads=None, **kwargs): + """Initialize generic API client.""" + if configuration is None: + configuration = Configuration() + self.configuration = configuration + self.pool_threads = pool_threads + + self.rest_client = rest.RESTClientObjectAsync(configuration, **kwargs) + self.default_headers = {} + if header_name is not None: + self.default_headers[header_name] = header_value + self.cookie = cookie + # Set default User-Agent. + from influxdb_client import VERSION + self.user_agent = f'influxdb-client-python/{VERSION}' + + async def close(self): + """Dispose api client.""" + await self._signout() + await self.rest_client.close() + """Dispose pools.""" + if self._pool: + self._pool.close() + self._pool.join() + self._pool = None + + @property + def pool(self): + """Create thread pool on first request avoids instantiating unused threadpool for blocking clients.""" + if self._pool is None: + self._pool = ThreadPool(self.pool_threads) + return self._pool + + @property + def user_agent(self): + """User agent for this API client.""" + return self.default_headers['User-Agent'] + + @user_agent.setter + def user_agent(self, value): + """Set User agent for this API client.""" + self.default_headers['User-Agent'] = value + + def set_default_header(self, header_name, header_value): + """Set HTTP header for this API client.""" + self.default_headers[header_name] = header_value + + async def __call_api( + self, resource_path, method, path_params=None, + query_params=None, header_params=None, body=None, post_params=None, + files=None, response_type=None, auth_settings=None, + _return_http_data_only=None, collection_formats=None, + _preload_content=True, _request_timeout=None, urlopen_kw=None): + + config = self.configuration + await self._signin(resource_path=resource_path) + + # header parameters + header_params = header_params or {} + config.update_request_header_params(resource_path, header_params) + header_params.update(self.default_headers) + if self.cookie: + header_params['Cookie'] = self.cookie + if header_params: + header_params = self.sanitize_for_serialization(header_params) + header_params = dict(self.parameters_to_tuples(header_params, + collection_formats)) + + # path parameters + if path_params: + path_params = self.sanitize_for_serialization(path_params) + path_params = self.parameters_to_tuples(path_params, + collection_formats) + for k, v in path_params: + # specified safe chars, encode everything + resource_path = resource_path.replace( + '{%s}' % k, + quote(str(v), safe=config.safe_chars_for_path_param) + ) + + # query parameters + if query_params: + query_params = self.sanitize_for_serialization(query_params) + query_params = self.parameters_to_tuples(query_params, + collection_formats) + + # post parameters + if post_params or files: + post_params = self.prepare_post_parameters(post_params, files) + post_params = self.sanitize_for_serialization(post_params) + post_params = self.parameters_to_tuples(post_params, + collection_formats) + + # auth setting + self.update_params_for_auth(header_params, query_params, auth_settings) + + # body + if body: + body = self.sanitize_for_serialization(body) + body = config.update_request_body(resource_path, body) + + # request url + url = self.configuration.host + resource_path + + urlopen_kw = urlopen_kw or {} + + # perform request and return response + response_data = await self.request( + method, url, query_params=query_params, headers=header_params, + post_params=post_params, body=body, + _preload_content=_preload_content, + _request_timeout=_request_timeout, **urlopen_kw) + + self.last_response = response_data + + return_data = response_data + if _preload_content: + # deserialize response data + if response_type: + return_data = self.deserialize(response_data, response_type) + else: + return_data = None + + if _return_http_data_only is not False: + return return_data + else: + return (return_data, response_data.status, + response_data.getheaders()) + + def sanitize_for_serialization(self, obj): + """Build a JSON POST object. + + If obj is None, return None. + If obj is str, int, long, float, bool, return directly. + If obj is datetime.datetime, datetime.date + convert to string in iso8601 format. + If obj is list, sanitize each element in the list. + If obj is dict, return the dict. + If obj is OpenAPI model, return the properties dict. + + :param obj: The data to serialize. + :return: The serialized form of data. + """ + if obj is None: + return None + elif isinstance(obj, self.PRIMITIVE_TYPES): + return obj + elif isinstance(obj, list): + return [self.sanitize_for_serialization(sub_obj) + for sub_obj in obj] + elif isinstance(obj, tuple): + return tuple(self.sanitize_for_serialization(sub_obj) + for sub_obj in obj) + elif isinstance(obj, (datetime.datetime, datetime.date)): + return obj.isoformat() + + if isinstance(obj, dict): + obj_dict = obj + else: + # Convert model obj to dict except + # attributes `openapi_types`, `attribute_map` + # and attributes which value is not None. + # Convert attribute name to json key in + # model definition for request. + obj_dict = {obj.attribute_map[attr]: getattr(obj, attr) + for attr, _ in obj.openapi_types.items() + if getattr(obj, attr) is not None} + + return {key: self.sanitize_for_serialization(val) + for key, val in obj_dict.items()} + + def deserialize(self, response, response_type): + """Deserializes response into an object. + + :param response: RESTResponse object to be deserialized. + :param response_type: class literal for + deserialized object, or string of class name. + + :return: deserialized object. + """ + # handle file downloading + # save response body into a tmp file and return the instance + if response_type == "file": + return self.__deserialize_file(response) + + # fetch data from response object + try: + data = json.loads(response.data) + except ValueError: + data = response.data + + return self.__deserialize(data, response_type) + + def __deserialize(self, data, klass): + """Deserializes dict, list, str into an object. + + :param data: dict, list or str. + :param klass: class literal, or string of class name. + + :return: object. + """ + if data is None: + return None + + if type(klass) == str: + if klass.startswith('list['): + sub_kls = re.match(r'list\[(.*)\]', klass).group(1) + return [self.__deserialize(sub_data, sub_kls) + for sub_data in data] + + if klass.startswith('dict('): + sub_kls = re.match(r'dict\(([^,]*), (.*)\)', klass).group(2) + return {k: self.__deserialize(v, sub_kls) + for k, v in data.items()} + + # convert str to class + if klass in self.NATIVE_TYPES_MAPPING: + klass = self.NATIVE_TYPES_MAPPING[klass] + else: + klass = getattr(influxdb_client.domain, klass) + + if klass in self.PRIMITIVE_TYPES: + return self.__deserialize_primitive(data, klass) + elif klass == object: + return self.__deserialize_object(data) + elif klass == datetime.date: + return self.__deserialize_date(data) + elif klass == datetime.datetime: + return self.__deserialize_datatime(data) + else: + return self.__deserialize_model(data, klass) + + def call_api(self, resource_path, method, + path_params=None, query_params=None, header_params=None, + body=None, post_params=None, files=None, + response_type=None, auth_settings=None, async_req=None, + _return_http_data_only=None, collection_formats=None, + _preload_content=True, _request_timeout=None, urlopen_kw=None): + """Make the HTTP request (synchronous) and Return deserialized data. + + To make an async_req request, set the async_req parameter. + + :param resource_path: Path to method endpoint. + :param method: Method to call. + :param path_params: Path parameters in the url. + :param query_params: Query parameters in the url. + :param header_params: Header parameters to be + placed in the request header. + :param body: Request body. + :param post_params dict: Request post form parameters, + for `application/x-www-form-urlencoded`, `multipart/form-data`. + :param auth_settings list: Auth Settings names for the request. + :param response: Response data type. + :param files dict: key -> filename, value -> filepath, + for `multipart/form-data`. + :param async_req bool: execute request asynchronously + :param _return_http_data_only: response data without head status code + and headers + :param collection_formats: dict of collection formats for path, query, + header, and post parameters. + :param _preload_content: if False, the urllib3.HTTPResponse object will + be returned without reading/decoding response + data. Default is True. + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :param urlopen_kw: Additional parameters are passed to + :meth:`urllib3.request.RequestMethods.request` + :return: + If async_req parameter is True, + the request will be called asynchronously. + The method will return the request thread. + If parameter async_req is False or missing, + then the method will return the response directly. + """ + if not async_req: + return self.__call_api(resource_path, method, + path_params, query_params, header_params, + body, post_params, files, + response_type, auth_settings, + _return_http_data_only, collection_formats, + _preload_content, _request_timeout, urlopen_kw) + else: + thread = self.pool.apply_async(self.__call_api, (resource_path, + method, path_params, query_params, + header_params, body, + post_params, files, + response_type, auth_settings, + _return_http_data_only, + collection_formats, + _preload_content, _request_timeout, urlopen_kw)) + return thread + + def request(self, method, url, query_params=None, headers=None, + post_params=None, body=None, _preload_content=True, + _request_timeout=None, **urlopen_kw): + """Make the HTTP request using RESTClient.""" + if method == "GET": + return self.rest_client.GET(url, + query_params=query_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + headers=headers, + **urlopen_kw) + elif method == "HEAD": + return self.rest_client.HEAD(url, + query_params=query_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + headers=headers, + **urlopen_kw) + elif method == "OPTIONS": + return self.rest_client.OPTIONS(url, + query_params=query_params, + headers=headers, + post_params=post_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body, + **urlopen_kw) + elif method == "POST": + return self.rest_client.POST(url, + query_params=query_params, + headers=headers, + post_params=post_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body, + **urlopen_kw) + elif method == "PUT": + return self.rest_client.PUT(url, + query_params=query_params, + headers=headers, + post_params=post_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body, + **urlopen_kw) + elif method == "PATCH": + return self.rest_client.PATCH(url, + query_params=query_params, + headers=headers, + post_params=post_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body, + **urlopen_kw) + elif method == "DELETE": + return self.rest_client.DELETE(url, + query_params=query_params, + headers=headers, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body, + **urlopen_kw) + else: + raise ValueError( + "http method must be `GET`, `HEAD`, `OPTIONS`," + " `POST`, `PATCH`, `PUT` or `DELETE`." + ) + + def parameters_to_tuples(self, params, collection_formats): + """Get parameters as list of tuples, formatting collections. + + :param params: Parameters as dict or list of two-tuples + :param dict collection_formats: Parameter collection formats + :return: Parameters as list of tuples, collections formatted + """ + new_params = [] + if collection_formats is None: + collection_formats = {} + for k, v in params.items() if isinstance(params, dict) else params: # noqa: E501 + if k in collection_formats: + collection_format = collection_formats[k] + if collection_format == 'multi': + new_params.extend((k, value) for value in v) + else: + if collection_format == 'ssv': + delimiter = ' ' + elif collection_format == 'tsv': + delimiter = '\t' + elif collection_format == 'pipes': + delimiter = '|' + else: # csv is the default + delimiter = ',' + new_params.append( + (k, delimiter.join(str(value) for value in v))) + else: + new_params.append((k, v)) + return new_params + + def prepare_post_parameters(self, post_params=None, files=None): + """Build form parameters. + + :param post_params: Normal form parameters. + :param files: File parameters. + :return: Form parameters with files. + """ + params = [] + + if post_params: + params = post_params + + if files: + for k, v in files.items(): + if not v: + continue + file_names = v if type(v) is list else [v] + for n in file_names: + with open(n, 'rb') as f: + filename = os.path.basename(f.name) + filedata = f.read() + mimetype = (mimetypes.guess_type(filename)[0] or + 'application/octet-stream') + params.append( + tuple([k, tuple([filename, filedata, mimetype])])) + + return params + + def select_header_accept(self, accepts): + """Return `Accept` based on an array of accepts provided. + + :param accepts: List of headers. + :return: Accept (e.g. application/json). + """ + if not accepts: + return + + accepts = [x.lower() for x in accepts] + + if 'application/json' in accepts: + return 'application/json' + else: + return ', '.join(accepts) + + def select_header_content_type(self, content_types): + """Return `Content-Type` based on an array of content_types provided. + + :param content_types: List of content-types. + :return: Content-Type (e.g. application/json). + """ + if not content_types: + return 'application/json' + + content_types = [x.lower() for x in content_types] + + if 'application/json' in content_types or '*/*' in content_types: + return 'application/json' + else: + return content_types[0] + + def update_params_for_auth(self, headers, querys, auth_settings): + """Update header and query params based on authentication setting. + + :param headers: Header parameters dict to be updated. + :param querys: Query parameters tuple list to be updated. + :param auth_settings: Authentication setting identifiers list. + """ + if not auth_settings: + return + + for auth in auth_settings: + auth_setting = self.configuration.auth_settings().get(auth) + if auth_setting: + if not auth_setting['value']: + continue + elif auth_setting['in'] == 'header': + headers[auth_setting['key']] = auth_setting['value'] + elif auth_setting['in'] == 'query': + querys.append((auth_setting['key'], auth_setting['value'])) + else: + raise ValueError( + 'Authentication token must be in `query` or `header`' + ) + + def __deserialize_file(self, response): + """Deserializes body to file. + + Saves response body into a file in a temporary folder, + using the filename from the `Content-Disposition` header if provided. + + :param response: RESTResponse. + :return: file path. + """ + fd, path = tempfile.mkstemp(dir=self.configuration.temp_folder_path) + os.close(fd) + os.remove(path) + + content_disposition = response.getheader("Content-Disposition") + if content_disposition: + filename = re.search(r'filename=[\'"]?([^\'"\s]+)[\'"]?', + content_disposition).group(1) + path = os.path.join(os.path.dirname(path), filename) + + with open(path, "wb") as f: + f.write(response.data) + + return path + + def __deserialize_primitive(self, data, klass): + """Deserializes string to primitive type. + + :param data: str. + :param klass: class literal. + + :return: int, long, float, str, bool. + """ + try: + return klass(data) + except UnicodeEncodeError: + return str(data) + except TypeError: + return data + + def __deserialize_object(self, value): + """Return an original value. + + :return: object. + """ + return value + + def __deserialize_date(self, string): + """Deserializes string to date. + + :param string: str. + :return: date. + """ + try: + from dateutil.parser import parse + return parse(string).date() + except ImportError: + return string + except ValueError: + raise rest.ApiException( + status=0, + reason="Failed to parse `{0}` as date object".format(string) + ) + + def __deserialize_datatime(self, string): + """Deserializes string to datetime. + + The string should be in iso8601 datetime format. + + :param string: str. + :return: datetime. + """ + try: + from dateutil.parser import parse + return parse(string) + except ImportError: + return string + except ValueError: + raise rest.ApiException( + status=0, + reason=( + "Failed to parse `{0}` as datetime object" + .format(string) + ) + ) + + def __deserialize_model(self, data, klass): + """Deserializes list or dict to model. + + :param data: dict, list. + :param klass: class literal. + :return: model object. + """ + if not klass.openapi_types and not hasattr(klass, + 'get_real_child_model'): + return data + + kwargs = {} + if klass.openapi_types is not None: + for attr, attr_type in klass.openapi_types.items(): + if (data is not None and + klass.attribute_map[attr] in data and + isinstance(data, (list, dict))): + value = data[klass.attribute_map[attr]] + kwargs[attr] = self.__deserialize(value, attr_type) + + instance = klass(**kwargs) + + if hasattr(instance, 'get_real_child_model'): + klass_name = instance.get_real_child_model(data) + if klass_name: + instance = self.__deserialize(data, klass_name) + return instance + + async def _signin(self, resource_path: str): + if _requires_create_user_session(self.configuration, self.cookie, resource_path): + http_info = await SigninService(self).post_signin_async(_return_http_data_only=False) + self.cookie = http_info[2]['set-cookie'] + + async def _signout(self): + if _requires_expire_user_session(self.configuration, self.cookie): + await SignoutService(self).post_signout_async() + self.cookie = None diff --git a/frogpilot/third_party/influxdb_client/_async/rest.py b/frogpilot/third_party/influxdb_client/_async/rest.py new file mode 100644 index 000000000..53c555c9c --- /dev/null +++ b/frogpilot/third_party/influxdb_client/_async/rest.py @@ -0,0 +1,309 @@ +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import io +import json +import re +import ssl +from urllib.parse import urlencode + +import aiohttp + +from influxdb_client.rest import ApiException +from influxdb_client.rest import _BaseRESTClient +from influxdb_client.rest import _UTF_8_encoding + + +async def _on_request_start(session, trace_config_ctx, params): + _BaseRESTClient.log_request(params.method, params.url) + _BaseRESTClient.log_headers(params.headers, '>>>') + + +async def _on_request_chunk_sent(session, context, params): + if params.chunk: + _BaseRESTClient.log_body(params.chunk, '>>>') + + +async def _on_request_end(session, trace_config_ctx, params): + _BaseRESTClient.log_response(params.response.status) + _BaseRESTClient.log_headers(params.headers, '<<<') + + response_content = params.response.content + data = bytearray() + while True: + chunk = await response_content.read(100) + if not chunk: + break + data += chunk + if data: + _BaseRESTClient.log_body(data.decode(_UTF_8_encoding), '<<<') + response_content.unread_data(data=data) + + +class RESTResponseAsync(io.IOBase): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + Do not edit the class manually. + """ + + def __init__(self, resp, data): + """Initialize with HTTP response.""" + self.aiohttp_response = resp + self.status = resp.status + self.reason = resp.reason + self.data = data + + def getheaders(self): + """Return a CIMultiDictProxy of the response headers.""" + return self.aiohttp_response.headers + + def getheader(self, name, default=None): + """Return a given response header.""" + return self.aiohttp_response.headers.get(name, default) + + +class RESTClientObjectAsync(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + Do not edit the class manually. + """ + + def __init__(self, configuration, pools_size=4, maxsize=None, **kwargs): + """Initialize REST client.""" + # maxsize is number of requests to host that are allowed in parallel + if maxsize is None: + maxsize = configuration.connection_pool_maxsize + + if configuration.ssl_context is None: + ssl_context = ssl.create_default_context(cafile=configuration.ssl_ca_cert) + if configuration.cert_file: + ssl_context.load_cert_chain( + certfile=configuration.cert_file, keyfile=configuration.cert_key_file, + password=configuration.cert_key_password + ) + + if not configuration.verify_ssl: + ssl_context.check_hostname = False + ssl_context.verify_mode = ssl.CERT_NONE + else: + ssl_context = configuration.ssl_context + + connector = aiohttp.TCPConnector( + limit=maxsize, + ssl=ssl_context + ) + + self.proxy = configuration.proxy + self.proxy_headers = configuration.proxy_headers + self.allow_redirects = kwargs.get('allow_redirects', True) + self.max_redirects = kwargs.get('max_redirects', 10) + + # configure tracing + trace_config = aiohttp.TraceConfig() + trace_config.on_request_start.append(_on_request_start) + trace_config.on_request_chunk_sent.append(_on_request_chunk_sent) + trace_config.on_request_end.append(_on_request_end) + + # timeout + if isinstance(configuration.timeout, (int, float,)): # noqa: E501,F821 + timeout = aiohttp.ClientTimeout(total=configuration.timeout / 1_000) + elif isinstance(configuration.timeout, aiohttp.ClientTimeout): + timeout = configuration.timeout + else: + timeout = aiohttp.client.DEFAULT_TIMEOUT + + # https pool manager + _client_session_type = kwargs.get('client_session_type', aiohttp.ClientSession) + _client_session_kwargs = kwargs.get('client_session_kwargs', {}) + self.pool_manager = _client_session_type( + connector=connector, + timeout=timeout, + trace_configs=[trace_config] if configuration.debug else None, + **_client_session_kwargs + ) + + async def close(self): + """Dispose connection pool manager.""" + await self.pool_manager.close() + + async def request(self, method, url, query_params=None, headers=None, + body=None, post_params=None, _preload_content=True, + _request_timeout=None): + """Execute request. + + :param method: http request method + :param url: http request url + :param query_params: query parameters in the url + :param headers: http request headers + :param body: request json body, for `application/json` + :param post_params: request post parameters, + `application/x-www-form-urlencoded` + and `multipart/form-data` + :param _preload_content: this is a non-applicable field for + the AiohttpClient. + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + """ + method = method.upper() + assert method in ['GET', 'HEAD', 'DELETE', 'POST', 'PUT', + 'PATCH', 'OPTIONS'] + + if post_params and body: + raise ValueError( + "body parameter cannot be used with post_params parameter." + ) + + post_params = post_params or {} + headers = headers or {} + + if 'Content-Type' not in headers: + headers['Content-Type'] = 'application/json' + + args = { + "method": method, + "url": url, + "headers": headers, + "allow_redirects": self.allow_redirects, + "max_redirects": self.max_redirects + } + + if self.proxy: + args["proxy"] = self.proxy + if self.proxy_headers: + args["proxy_headers"] = self.proxy_headers + + if query_params: + args["url"] += '?' + urlencode(query_params) + + # For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE` + if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']: + if re.search('json', headers['Content-Type'], re.IGNORECASE): + if body is not None: + body = json.dumps(body) + args["data"] = body + elif headers['Content-Type'] == 'application/x-www-form-urlencoded': # noqa: E501 + args["data"] = aiohttp.FormData(post_params) + elif headers['Content-Type'] == 'multipart/form-data': + # must del headers['Content-Type'], or the correct + # Content-Type which generated by aiohttp + del headers['Content-Type'] + data = aiohttp.FormData() + for param in post_params: + k, v = param + if isinstance(v, tuple) and len(v) == 3: + data.add_field(k, + value=v[1], + filename=v[0], + content_type=v[2]) + else: + data.add_field(k, v) + args["data"] = data + + # Pass a `bytes` parameter directly in the body to support + # other content types than Json when `body` argument is provided + # in serialized form + elif isinstance(body, bytes): + args["data"] = body + else: + # Cannot generate the request from given parameters + msg = """Cannot prepare a request message for provided + arguments. Please check that your arguments match + declared content type.""" + raise ApiException(status=0, reason=msg) + + r = await self.pool_manager.request(**args) + if _preload_content: + + data = await r.read() + r = RESTResponseAsync(r, data) + + if not 200 <= r.status <= 299: + raise ApiException(http_resp=r) + + return r + + async def GET(self, url, headers=None, query_params=None, + _preload_content=True, _request_timeout=None): + """Perform GET HTTP request.""" + return (await self.request("GET", url, + headers=headers, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + query_params=query_params)) + + async def HEAD(self, url, headers=None, query_params=None, + _preload_content=True, _request_timeout=None): + """Perform HEAD HTTP request.""" + return (await self.request("HEAD", url, + headers=headers, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + query_params=query_params)) + + async def OPTIONS(self, url, headers=None, query_params=None, + post_params=None, body=None, _preload_content=True, + _request_timeout=None): + """Perform OPTIONS HTTP request.""" + return (await self.request("OPTIONS", url, + headers=headers, + query_params=query_params, + post_params=post_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body)) + + async def DELETE(self, url, headers=None, query_params=None, body=None, + _preload_content=True, _request_timeout=None): + """Perform DELETE HTTP request.""" + return (await self.request("DELETE", url, + headers=headers, + query_params=query_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body)) + + async def POST(self, url, headers=None, query_params=None, + post_params=None, body=None, _preload_content=True, + _request_timeout=None): + """Perform POST HTTP request.""" + return (await self.request("POST", url, + headers=headers, + query_params=query_params, + post_params=post_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body)) + + async def PUT(self, url, headers=None, query_params=None, post_params=None, + body=None, _preload_content=True, _request_timeout=None): + """Perform PUT HTTP request.""" + return (await self.request("PUT", url, + headers=headers, + query_params=query_params, + post_params=post_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body)) + + async def PATCH(self, url, headers=None, query_params=None, + post_params=None, body=None, _preload_content=True, + _request_timeout=None): + """Perform PATCH HTTP request.""" + return (await self.request("PATCH", url, + headers=headers, + query_params=query_params, + post_params=post_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body)) diff --git a/frogpilot/third_party/influxdb_client/_sync/__init__.py b/frogpilot/third_party/influxdb_client/_sync/__init__.py new file mode 100644 index 000000000..476e193aa --- /dev/null +++ b/frogpilot/third_party/influxdb_client/_sync/__init__.py @@ -0,0 +1 @@ +"""Synchronous REST APIs.""" diff --git a/frogpilot/third_party/influxdb_client/_sync/api_client.py b/frogpilot/third_party/influxdb_client/_sync/api_client.py new file mode 100644 index 000000000..f61ef26c7 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/_sync/api_client.py @@ -0,0 +1,663 @@ +# coding: utf-8 +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + +from __future__ import absolute_import + +import datetime +import json +import mimetypes +import os +import re +import tempfile +from multiprocessing.pool import ThreadPool +from urllib.parse import quote + +import influxdb_client.domain +from influxdb_client import SigninService +from influxdb_client import SignoutService +from influxdb_client._sync import rest +from influxdb_client.configuration import Configuration +from influxdb_client.rest import _requires_create_user_session, _requires_expire_user_session + + +class ApiClient(object): + """Generic API client for OpenAPI client library Build. + + OpenAPI generic API client. This client handles the client- + server communication, and is invariant across implementations. Specifics of + the methods and models for each application are generated from the OpenAPI + templates. + + NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + Do not edit the class manually. + + :param configuration: .Configuration object for this client + :param header_name: a header to pass when making calls to the API. + :param header_value: a header value to pass when making calls to + the API. + :param cookie: a cookie to include in the header when making calls + to the API + :param pool_threads: The number of threads to use for async requests + to the API. More threads means more concurrent API requests. + """ + + PRIMITIVE_TYPES = (float, bool, bytes, str, int) + NATIVE_TYPES_MAPPING = { + 'int': int, + 'long': int, + 'float': float, + 'str': str, + 'bool': bool, + 'date': datetime.date, + 'datetime': datetime.datetime, + 'object': object, + } + _pool = None + + def __init__(self, configuration=None, header_name=None, header_value=None, + cookie=None, pool_threads=None, retries=False): + """Initialize generic API client.""" + if configuration is None: + configuration = Configuration() + self.configuration = configuration + self.pool_threads = pool_threads + + self.rest_client = rest.RESTClientObject(configuration, retries=retries) + self.default_headers = {} + if header_name is not None: + self.default_headers[header_name] = header_value + self.cookie = cookie + # Set default User-Agent. + from influxdb_client import VERSION + self.user_agent = f'influxdb-client-python/{VERSION}' + + def __del__(self): + """Dispose pools.""" + self._signout() + if self._pool: + self._pool.close() + self._pool.join() + self._pool = None + if self.rest_client and self.rest_client.pool_manager and hasattr(self.rest_client.pool_manager, 'clear'): + self.rest_client.pool_manager.clear() + + @property + def pool(self): + """Create thread pool on first request avoids instantiating unused threadpool for blocking clients.""" + if self._pool is None: + self._pool = ThreadPool(self.pool_threads) + return self._pool + + @property + def user_agent(self): + """User agent for this API client.""" + return self.default_headers['User-Agent'] + + @user_agent.setter + def user_agent(self, value): + """Set User agent for this API client.""" + self.default_headers['User-Agent'] = value + + def set_default_header(self, header_name, header_value): + """Set HTTP header for this API client.""" + self.default_headers[header_name] = header_value + + def __call_api( + self, resource_path, method, path_params=None, + query_params=None, header_params=None, body=None, post_params=None, + files=None, response_type=None, auth_settings=None, + _return_http_data_only=None, collection_formats=None, + _preload_content=True, _request_timeout=None, urlopen_kw=None): + + config = self.configuration + self._signin(resource_path=resource_path) + + # header parameters + header_params = header_params or {} + config.update_request_header_params(resource_path, header_params) + header_params.update(self.default_headers) + if self.cookie: + header_params['Cookie'] = self.cookie + if header_params: + header_params = self.sanitize_for_serialization(header_params) + header_params = dict(self.parameters_to_tuples(header_params, + collection_formats)) + + # path parameters + if path_params: + path_params = self.sanitize_for_serialization(path_params) + path_params = self.parameters_to_tuples(path_params, + collection_formats) + for k, v in path_params: + # specified safe chars, encode everything + resource_path = resource_path.replace( + '{%s}' % k, + quote(str(v), safe=config.safe_chars_for_path_param) + ) + + # query parameters + if query_params: + query_params = self.sanitize_for_serialization(query_params) + query_params = self.parameters_to_tuples(query_params, + collection_formats) + + # post parameters + if post_params or files: + post_params = self.prepare_post_parameters(post_params, files) + post_params = self.sanitize_for_serialization(post_params) + post_params = self.parameters_to_tuples(post_params, + collection_formats) + + # auth setting + self.update_params_for_auth(header_params, query_params, auth_settings) + + # body + if body: + body = self.sanitize_for_serialization(body) + body = config.update_request_body(resource_path, body) + + # request url + url = self.configuration.host + resource_path + + urlopen_kw = urlopen_kw or {} + + # perform request and return response + response_data = self.request( + method, url, query_params=query_params, headers=header_params, + post_params=post_params, body=body, + _preload_content=_preload_content, + _request_timeout=_request_timeout, **urlopen_kw) + + self.last_response = response_data + + return_data = response_data + if _preload_content: + # deserialize response data + if response_type: + return_data = self.deserialize(response_data, response_type) + else: + return_data = None + + if _return_http_data_only: + return (return_data) + else: + return (return_data, response_data.status, + response_data.getheaders()) + + def sanitize_for_serialization(self, obj): + """Build a JSON POST object. + + If obj is None, return None. + If obj is str, int, long, float, bool, return directly. + If obj is datetime.datetime, datetime.date + convert to string in iso8601 format. + If obj is list, sanitize each element in the list. + If obj is dict, return the dict. + If obj is OpenAPI model, return the properties dict. + + :param obj: The data to serialize. + :return: The serialized form of data. + """ + if obj is None: + return None + elif isinstance(obj, self.PRIMITIVE_TYPES): + return obj + elif isinstance(obj, list): + return [self.sanitize_for_serialization(sub_obj) + for sub_obj in obj] + elif isinstance(obj, tuple): + return tuple(self.sanitize_for_serialization(sub_obj) + for sub_obj in obj) + elif isinstance(obj, (datetime.datetime, datetime.date)): + return obj.isoformat() + + if isinstance(obj, dict): + obj_dict = obj + else: + # Convert model obj to dict except + # attributes `openapi_types`, `attribute_map` + # and attributes which value is not None. + # Convert attribute name to json key in + # model definition for request. + obj_dict = {obj.attribute_map[attr]: getattr(obj, attr) + for attr, _ in obj.openapi_types.items() + if getattr(obj, attr) is not None} + + return {key: self.sanitize_for_serialization(val) + for key, val in obj_dict.items()} + + def deserialize(self, response, response_type): + """Deserializes response into an object. + + :param response: RESTResponse object to be deserialized. + :param response_type: class literal for + deserialized object, or string of class name. + + :return: deserialized object. + """ + # handle file downloading + # save response body into a tmp file and return the instance + if response_type == "file": + return self.__deserialize_file(response) + + # fetch data from response object + try: + data = json.loads(response.data) + except ValueError: + data = response.data + + return self.__deserialize(data, response_type) + + def __deserialize(self, data, klass): + """Deserializes dict, list, str into an object. + + :param data: dict, list or str. + :param klass: class literal, or string of class name. + + :return: object. + """ + if data is None: + return None + + if type(klass) == str: + if klass.startswith('list['): + sub_kls = re.match(r'list\[(.*)\]', klass).group(1) + return [self.__deserialize(sub_data, sub_kls) + for sub_data in data] + + if klass.startswith('dict('): + sub_kls = re.match(r'dict\(([^,]*), (.*)\)', klass).group(2) + return {k: self.__deserialize(v, sub_kls) + for k, v in data.items()} + + # convert str to class + if klass in self.NATIVE_TYPES_MAPPING: + klass = self.NATIVE_TYPES_MAPPING[klass] + else: + klass = getattr(influxdb_client.domain, klass) + + if klass in self.PRIMITIVE_TYPES: + return self.__deserialize_primitive(data, klass) + elif klass == object: + return self.__deserialize_object(data) + elif klass == datetime.date: + return self.__deserialize_date(data) + elif klass == datetime.datetime: + return self.__deserialize_datatime(data) + else: + return self.__deserialize_model(data, klass) + + def call_api(self, resource_path, method, + path_params=None, query_params=None, header_params=None, + body=None, post_params=None, files=None, + response_type=None, auth_settings=None, async_req=None, + _return_http_data_only=None, collection_formats=None, + _preload_content=True, _request_timeout=None, urlopen_kw=None): + """Make the HTTP request (synchronous) and Return deserialized data. + + To make an async_req request, set the async_req parameter. + + :param resource_path: Path to method endpoint. + :param method: Method to call. + :param path_params: Path parameters in the url. + :param query_params: Query parameters in the url. + :param header_params: Header parameters to be + placed in the request header. + :param body: Request body. + :param post_params dict: Request post form parameters, + for `application/x-www-form-urlencoded`, `multipart/form-data`. + :param auth_settings list: Auth Settings names for the request. + :param response: Response data type. + :param files dict: key -> filename, value -> filepath, + for `multipart/form-data`. + :param async_req bool: execute request asynchronously + :param _return_http_data_only: response data without head status code + and headers + :param collection_formats: dict of collection formats for path, query, + header, and post parameters. + :param _preload_content: if False, the urllib3.HTTPResponse object will + be returned without reading/decoding response + data. Default is True. + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :param urlopen_kw: Additional parameters are passed to + :meth:`urllib3.request.RequestMethods.request` + :return: + If async_req parameter is True, + the request will be called asynchronously. + The method will return the request thread. + If parameter async_req is False or missing, + then the method will return the response directly. + """ + if not async_req: + return self.__call_api(resource_path, method, + path_params, query_params, header_params, + body, post_params, files, + response_type, auth_settings, + _return_http_data_only, collection_formats, + _preload_content, _request_timeout, urlopen_kw) + else: + thread = self.pool.apply_async(self.__call_api, (resource_path, + method, path_params, query_params, + header_params, body, + post_params, files, + response_type, auth_settings, + _return_http_data_only, + collection_formats, + _preload_content, _request_timeout, urlopen_kw)) + return thread + + def request(self, method, url, query_params=None, headers=None, + post_params=None, body=None, _preload_content=True, + _request_timeout=None, **urlopen_kw): + """Make the HTTP request using RESTClient.""" + if method == "GET": + return self.rest_client.GET(url, + query_params=query_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + headers=headers, + **urlopen_kw) + elif method == "HEAD": + return self.rest_client.HEAD(url, + query_params=query_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + headers=headers, + **urlopen_kw) + elif method == "OPTIONS": + return self.rest_client.OPTIONS(url, + query_params=query_params, + headers=headers, + post_params=post_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body, + **urlopen_kw) + elif method == "POST": + return self.rest_client.POST(url, + query_params=query_params, + headers=headers, + post_params=post_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body, + **urlopen_kw) + elif method == "PUT": + return self.rest_client.PUT(url, + query_params=query_params, + headers=headers, + post_params=post_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body, + **urlopen_kw) + elif method == "PATCH": + return self.rest_client.PATCH(url, + query_params=query_params, + headers=headers, + post_params=post_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body, + **urlopen_kw) + elif method == "DELETE": + return self.rest_client.DELETE(url, + query_params=query_params, + headers=headers, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body, + **urlopen_kw) + else: + raise ValueError( + "http method must be `GET`, `HEAD`, `OPTIONS`," + " `POST`, `PATCH`, `PUT` or `DELETE`." + ) + + def parameters_to_tuples(self, params, collection_formats): + """Get parameters as list of tuples, formatting collections. + + :param params: Parameters as dict or list of two-tuples + :param dict collection_formats: Parameter collection formats + :return: Parameters as list of tuples, collections formatted + """ + new_params = [] + if collection_formats is None: + collection_formats = {} + for k, v in params.items() if isinstance(params, dict) else params: # noqa: E501 + if k in collection_formats: + collection_format = collection_formats[k] + if collection_format == 'multi': + new_params.extend((k, value) for value in v) + else: + if collection_format == 'ssv': + delimiter = ' ' + elif collection_format == 'tsv': + delimiter = '\t' + elif collection_format == 'pipes': + delimiter = '|' + else: # csv is the default + delimiter = ',' + new_params.append( + (k, delimiter.join(str(value) for value in v))) + else: + new_params.append((k, v)) + return new_params + + def prepare_post_parameters(self, post_params=None, files=None): + """Build form parameters. + + :param post_params: Normal form parameters. + :param files: File parameters. + :return: Form parameters with files. + """ + params = [] + + if post_params: + params = post_params + + if files: + for k, v in files.items(): + if not v: + continue + file_names = v if type(v) is list else [v] + for n in file_names: + with open(n, 'rb') as f: + filename = os.path.basename(f.name) + filedata = f.read() + mimetype = (mimetypes.guess_type(filename)[0] or + 'application/octet-stream') + params.append( + tuple([k, tuple([filename, filedata, mimetype])])) + + return params + + def select_header_accept(self, accepts): + """Return `Accept` based on an array of accepts provided. + + :param accepts: List of headers. + :return: Accept (e.g. application/json). + """ + if not accepts: + return + + accepts = [x.lower() for x in accepts] + + if 'application/json' in accepts: + return 'application/json' + else: + return ', '.join(accepts) + + def select_header_content_type(self, content_types): + """Return `Content-Type` based on an array of content_types provided. + + :param content_types: List of content-types. + :return: Content-Type (e.g. application/json). + """ + if not content_types: + return 'application/json' + + content_types = [x.lower() for x in content_types] + + if 'application/json' in content_types or '*/*' in content_types: + return 'application/json' + else: + return content_types[0] + + def update_params_for_auth(self, headers, querys, auth_settings): + """Update header and query params based on authentication setting. + + :param headers: Header parameters dict to be updated. + :param querys: Query parameters tuple list to be updated. + :param auth_settings: Authentication setting identifiers list. + """ + if not auth_settings: + return + + for auth in auth_settings: + auth_setting = self.configuration.auth_settings().get(auth) + if auth_setting: + if not auth_setting['value']: + continue + elif auth_setting['in'] == 'header': + headers[auth_setting['key']] = auth_setting['value'] + elif auth_setting['in'] == 'query': + querys.append((auth_setting['key'], auth_setting['value'])) + else: + raise ValueError( + 'Authentication token must be in `query` or `header`' + ) + + def __deserialize_file(self, response): + """Deserializes body to file. + + Saves response body into a file in a temporary folder, + using the filename from the `Content-Disposition` header if provided. + + :param response: RESTResponse. + :return: file path. + """ + fd, path = tempfile.mkstemp(dir=self.configuration.temp_folder_path) + os.close(fd) + os.remove(path) + + content_disposition = response.getheader("Content-Disposition") + if content_disposition: + filename = re.search(r'filename=[\'"]?([^\'"\s]+)[\'"]?', + content_disposition).group(1) + path = os.path.join(os.path.dirname(path), filename) + + with open(path, "wb") as f: + f.write(response.data) + + return path + + def __deserialize_primitive(self, data, klass): + """Deserializes string to primitive type. + + :param data: str. + :param klass: class literal. + + :return: int, long, float, str, bool. + """ + try: + return klass(data) + except UnicodeEncodeError: + return str(data) + except TypeError: + return data + + def __deserialize_object(self, value): + """Return an original value. + + :return: object. + """ + return value + + def __deserialize_date(self, string): + """Deserializes string to date. + + :param string: str. + :return: date. + """ + try: + from dateutil.parser import parse + return parse(string).date() + except ImportError: + return string + except ValueError: + raise rest.ApiException( + status=0, + reason="Failed to parse `{0}` as date object".format(string) + ) + + def __deserialize_datatime(self, string): + """Deserializes string to datetime. + + The string should be in iso8601 datetime format. + + :param string: str. + :return: datetime. + """ + try: + from dateutil.parser import parse + return parse(string) + except ImportError: + return string + except ValueError: + raise rest.ApiException( + status=0, + reason=( + "Failed to parse `{0}` as datetime object" + .format(string) + ) + ) + + def __deserialize_model(self, data, klass): + """Deserializes list or dict to model. + + :param data: dict, list. + :param klass: class literal. + :return: model object. + """ + if not klass.openapi_types and not hasattr(klass, + 'get_real_child_model'): + return data + + kwargs = {} + if klass.openapi_types is not None: + for attr, attr_type in klass.openapi_types.items(): + if (data is not None and + klass.attribute_map[attr] in data and + isinstance(data, (list, dict))): + value = data[klass.attribute_map[attr]] + kwargs[attr] = self.__deserialize(value, attr_type) + + instance = klass(**kwargs) + + if hasattr(instance, 'get_real_child_model'): + klass_name = instance.get_real_child_model(data) + if klass_name: + instance = self.__deserialize(data, klass_name) + return instance + + def _signin(self, resource_path: str): + if _requires_create_user_session(self.configuration, self.cookie, resource_path): + http_info = SigninService(self).post_signin_with_http_info() + self.cookie = http_info[2]['set-cookie'] + + def _signout(self): + if _requires_expire_user_session(self.configuration, self.cookie): + SignoutService(self).post_signout() + self.cookie = None diff --git a/frogpilot/third_party/influxdb_client/_sync/rest.py b/frogpilot/third_party/influxdb_client/_sync/rest.py new file mode 100644 index 000000000..eadbf0615 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/_sync/rest.py @@ -0,0 +1,355 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import io +import json +import re +import ssl +from urllib.parse import urlencode + +from influxdb_client.rest import ApiException +from influxdb_client.rest import _BaseRESTClient + +try: + import urllib3 +except ImportError: + raise ImportError('OpenAPI Python client requires urllib3.') + + +class RESTResponse(io.IOBase): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + Do not edit the class manually. + """ + + def __init__(self, resp): + """Initialize with HTTP response.""" + self.urllib3_response = resp + self.status = resp.status + self.reason = resp.reason + self.data = resp.data + + def getheaders(self): + """Return a dictionary of the response headers.""" + return self.urllib3_response.headers + + def getheader(self, name, default=None): + """Return a given response header.""" + return self.urllib3_response.headers.get(name, default) + + +class RESTClientObject(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + Do not edit the class manually. + """ + + def __init__(self, configuration, pools_size=4, maxsize=None, retries=False): + """Initialize REST client.""" + # urllib3.PoolManager will pass all kw parameters to connectionpool + # https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/poolmanager.py#L75 # noqa: E501 + # https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/connectionpool.py#L680 # noqa: E501 + # maxsize is the number of requests to host that are allowed in parallel # noqa: E501 + # Custom SSL certificates and client certificates: http://urllib3.readthedocs.io/en/latest/advanced-usage.html # noqa: E501 + + self.configuration = configuration + self.pools_size = pools_size + self.maxsize = maxsize + self.retries = retries + + # cert_reqs + if configuration.verify_ssl: + cert_reqs = ssl.CERT_REQUIRED + else: + cert_reqs = ssl.CERT_NONE + + # ca_certs + if configuration.ssl_ca_cert: + ca_certs = configuration.ssl_ca_cert + else: + ca_certs = None + + addition_pool_args = {} + if configuration.assert_hostname is not None: + addition_pool_args['assert_hostname'] = configuration.assert_hostname # noqa: E501 + addition_pool_args['retries'] = self.retries + + if maxsize is None: + if configuration.connection_pool_maxsize is not None: + maxsize = configuration.connection_pool_maxsize + else: + maxsize = 4 + + # https pool manager + if configuration.proxy: + self.pool_manager = urllib3.ProxyManager( + num_pools=pools_size, + maxsize=maxsize, + cert_reqs=cert_reqs, + ca_certs=ca_certs, + cert_file=configuration.cert_file, + key_file=configuration.cert_key_file, + key_password=configuration.cert_key_password, + proxy_url=configuration.proxy, + proxy_headers=configuration.proxy_headers, + ssl_context=configuration.ssl_context, + **addition_pool_args + ) + else: + self.pool_manager = urllib3.PoolManager( + num_pools=pools_size, + maxsize=maxsize, + cert_reqs=cert_reqs, + ca_certs=ca_certs, + cert_file=configuration.cert_file, + key_file=configuration.cert_key_file, + key_password=configuration.cert_key_password, + ssl_context=configuration.ssl_context, + **addition_pool_args + ) + + def request(self, method, url, query_params=None, headers=None, + body=None, post_params=None, _preload_content=True, + _request_timeout=None, **urlopen_kw): + """Perform requests. + + :param method: http request method + :param url: http request url + :param query_params: query parameters in the url + :param headers: http request headers + :param body: request json body, for `application/json` + :param post_params: request post parameters, + `application/x-www-form-urlencoded` + and `multipart/form-data` + :param _preload_content: if False, the urllib3.HTTPResponse object will + be returned without reading/decoding response + data. Default is True. + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :param urlopen_kw: Additional parameters are passed to + :meth:`urllib3.request.RequestMethods.request` + """ + method = method.upper() + assert method in ['GET', 'HEAD', 'DELETE', 'POST', 'PUT', + 'PATCH', 'OPTIONS'] + + if post_params and body: + raise ValueError( + "body parameter cannot be used with post_params parameter." + ) + + post_params = post_params or {} + headers = headers or {} + + timeout = None + _configured_timeout = _request_timeout or self.configuration.timeout + if _configured_timeout: + if isinstance(_configured_timeout, (int, float, )): # noqa: E501,F821 + timeout = urllib3.Timeout(total=_configured_timeout / 1_000) + elif (isinstance(_configured_timeout, tuple) and + len(_configured_timeout) == 2): + timeout = urllib3.Timeout( + connect=_configured_timeout[0] / 1_000, read=_configured_timeout[1] / 1_000) + + if 'Content-Type' not in headers: + headers['Content-Type'] = 'application/json' + + if self.configuration.debug: + _BaseRESTClient.log_request(method, f"{url}{'' if query_params is None else '?' + urlencode(query_params)}") + _BaseRESTClient.log_headers(headers, '>>>') + _BaseRESTClient.log_body(body, '>>>') + + try: + # For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE` + if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']: + if query_params: + url += '?' + urlencode(query_params) + if re.search('json', headers['Content-Type'], re.IGNORECASE): + request_body = None + if body is not None: + request_body = json.dumps(body) + r = self.pool_manager.request( + method, url, + body=request_body, + preload_content=_preload_content, + timeout=timeout, + headers=headers, + **urlopen_kw) + elif headers['Content-Type'] == 'application/x-www-form-urlencoded': # noqa: E501 + r = self.pool_manager.request( + method, url, + fields=post_params, + encode_multipart=False, + preload_content=_preload_content, + timeout=timeout, + headers=headers, + **urlopen_kw) + elif headers['Content-Type'] == 'multipart/form-data': + # must del headers['Content-Type'], or the correct + # Content-Type which generated by urllib3 will be + # overwritten. + del headers['Content-Type'] + r = self.pool_manager.request( + method, url, + fields=post_params, + encode_multipart=True, + preload_content=_preload_content, + timeout=timeout, + headers=headers, + **urlopen_kw) + # Pass a `string` parameter directly in the body to support + # other content types than Json when `body` argument is + # provided in serialized form + elif isinstance(body, str) or isinstance(body, bytes): + request_body = body + r = self.pool_manager.request( + method, url, + body=request_body, + preload_content=_preload_content, + timeout=timeout, + headers=headers, + **urlopen_kw) + else: + # Cannot generate the request from given parameters + msg = """Cannot prepare a request message for provided + arguments. Please check that your arguments match + declared content type.""" + raise ApiException(status=0, reason=msg) + # For `GET`, `HEAD` + else: + r = self.pool_manager.request(method, url, + fields=query_params, + preload_content=_preload_content, + timeout=timeout, + headers=headers, + **urlopen_kw) + except urllib3.exceptions.SSLError as e: + msg = "{0}\n{1}".format(type(e).__name__, str(e)) + raise ApiException(status=0, reason=msg) + + if _preload_content: + r = RESTResponse(r) + + # In the python 3, the response.data is bytes. + # we need to decode it to string. + r.data = r.data.decode('utf8') + + if self.configuration.debug: + _BaseRESTClient.log_response(r.status) + if hasattr(r, 'headers'): + _BaseRESTClient.log_headers(r.headers, '<<<') + if hasattr(r, 'urllib3_response'): + _BaseRESTClient.log_headers(r.urllib3_response.headers, '<<<') + _BaseRESTClient.log_body(r.data, '<<<') + + if not 200 <= r.status <= 299: + raise ApiException(http_resp=r) + + return r + + def GET(self, url, headers=None, query_params=None, _preload_content=True, + _request_timeout=None, **urlopen_kw): + """Perform GET HTTP request.""" + return self.request("GET", url, + headers=headers, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + query_params=query_params, + **urlopen_kw) + + def HEAD(self, url, headers=None, query_params=None, _preload_content=True, + _request_timeout=None, **urlopen_kw): + """Perform HEAD HTTP request.""" + return self.request("HEAD", url, + headers=headers, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + query_params=query_params, + **urlopen_kw) + + def OPTIONS(self, url, headers=None, query_params=None, post_params=None, + body=None, _preload_content=True, _request_timeout=None, **urlopen_kw): + """Perform OPTIONS HTTP request.""" + return self.request("OPTIONS", url, + headers=headers, + query_params=query_params, + post_params=post_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body, + **urlopen_kw) + + def DELETE(self, url, headers=None, query_params=None, body=None, + _preload_content=True, _request_timeout=None, **urlopen_kw): + """Perform DELETE HTTP request.""" + return self.request("DELETE", url, + headers=headers, + query_params=query_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body, + **urlopen_kw) + + def POST(self, url, headers=None, query_params=None, post_params=None, + body=None, _preload_content=True, _request_timeout=None, **urlopen_kw): + """Perform POST HTTP request.""" + return self.request("POST", url, + headers=headers, + query_params=query_params, + post_params=post_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body, + **urlopen_kw) + + def PUT(self, url, headers=None, query_params=None, post_params=None, + body=None, _preload_content=True, _request_timeout=None, **urlopen_kw): + """Perform PUT HTTP request.""" + return self.request("PUT", url, + headers=headers, + query_params=query_params, + post_params=post_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body, + **urlopen_kw) + + def PATCH(self, url, headers=None, query_params=None, post_params=None, + body=None, _preload_content=True, _request_timeout=None, **urlopen_kw): + """Perform PATCH HTTP request.""" + return self.request("PATCH", url, + headers=headers, + query_params=query_params, + post_params=post_params, + _preload_content=_preload_content, + _request_timeout=_request_timeout, + body=body, + **urlopen_kw) + + def __getstate__(self): + """Return a dict of attributes that you want to pickle.""" + state = self.__dict__.copy() + # Remove Pool managaer + del state['pool_manager'] + return state + + def __setstate__(self, state): + """Set your object with the provided dict.""" + self.__dict__.update(state) + # Init Pool manager + self.__init__(self.configuration, self.pools_size, self.maxsize, self.retries) diff --git a/frogpilot/third_party/influxdb_client/client/__init__.py b/frogpilot/third_party/influxdb_client/client/__init__.py new file mode 100644 index 000000000..0d21a4384 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/__init__.py @@ -0,0 +1,56 @@ +# flake8: noqa + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +# import apis into api package +from influxdb_client.service.authorizations_service import AuthorizationsService +from influxdb_client.service.backup_service import BackupService +from influxdb_client.service.bucket_schemas_service import BucketSchemasService +from influxdb_client.service.buckets_service import BucketsService +from influxdb_client.service.cells_service import CellsService +from influxdb_client.service.checks_service import ChecksService +from influxdb_client.service.config_service import ConfigService +from influxdb_client.service.dbr_ps_service import DBRPsService +from influxdb_client.service.dashboards_service import DashboardsService +from influxdb_client.service.delete_service import DeleteService +from influxdb_client.service.health_service import HealthService +from influxdb_client.service.invokable_scripts_service import InvokableScriptsService +from influxdb_client.service.labels_service import LabelsService +from influxdb_client.service.legacy_authorizations_service import LegacyAuthorizationsService +from influxdb_client.service.metrics_service import MetricsService +from influxdb_client.service.notification_endpoints_service import NotificationEndpointsService +from influxdb_client.service.notification_rules_service import NotificationRulesService +from influxdb_client.service.organizations_service import OrganizationsService +from influxdb_client.service.ping_service import PingService +from influxdb_client.service.query_service import QueryService +from influxdb_client.service.ready_service import ReadyService +from influxdb_client.service.remote_connections_service import RemoteConnectionsService +from influxdb_client.service.replications_service import ReplicationsService +from influxdb_client.service.resources_service import ResourcesService +from influxdb_client.service.restore_service import RestoreService +from influxdb_client.service.routes_service import RoutesService +from influxdb_client.service.rules_service import RulesService +from influxdb_client.service.scraper_targets_service import ScraperTargetsService +from influxdb_client.service.secrets_service import SecretsService +from influxdb_client.service.setup_service import SetupService +from influxdb_client.service.signin_service import SigninService +from influxdb_client.service.signout_service import SignoutService +from influxdb_client.service.sources_service import SourcesService +from influxdb_client.service.tasks_service import TasksService +from influxdb_client.service.telegraf_plugins_service import TelegrafPluginsService +from influxdb_client.service.telegrafs_service import TelegrafsService +from influxdb_client.service.templates_service import TemplatesService +from influxdb_client.service.users_service import UsersService +from influxdb_client.service.variables_service import VariablesService +from influxdb_client.service.views_service import ViewsService +from influxdb_client.service.write_service import WriteService diff --git a/frogpilot/third_party/influxdb_client/client/_base.py b/frogpilot/third_party/influxdb_client/client/_base.py new file mode 100644 index 000000000..d4f179018 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/_base.py @@ -0,0 +1,556 @@ +"""Commons function for Sync and Async client.""" +from __future__ import absolute_import + +import base64 +import configparser +import logging +import os +from datetime import datetime, timedelta +from typing import List, Generator, Any, Union, Iterable, AsyncGenerator + +from urllib3 import HTTPResponse + +from influxdb_client import Configuration, Dialect, Query, OptionStatement, VariableAssignment, Identifier, \ + Expression, BooleanLiteral, IntegerLiteral, FloatLiteral, DateTimeLiteral, UnaryExpression, DurationLiteral, \ + Duration, StringLiteral, ArrayExpression, ImportDeclaration, MemberExpression, MemberAssignment, File, \ + WriteService, QueryService, DeleteService, DeletePredicateRequest +from influxdb_client.client.flux_csv_parser import FluxResponseMetadataMode, FluxCsvParser, FluxSerializationMode +from influxdb_client.client.flux_table import FluxRecord, TableList, CSVIterator +from influxdb_client.client.util.date_utils import get_date_helper +from influxdb_client.client.util.helpers import get_org_query_param +from influxdb_client.client.warnings import MissingPivotFunction +from influxdb_client.client.write.dataframe_serializer import DataframeSerializer +from influxdb_client.rest import _UTF_8_encoding + +try: + import dataclasses + + _HAS_DATACLASS = True +except ModuleNotFoundError: + _HAS_DATACLASS = False + +LOGGERS_NAMES = [ + 'influxdb_client.client.influxdb_client', + 'influxdb_client.client.influxdb_client_async', + 'influxdb_client.client.write_api', + 'influxdb_client.client.write_api_async', + 'influxdb_client.client.write.retry', + 'influxdb_client.client.write.dataframe_serializer', + 'influxdb_client.client.util.multiprocessing_helper', + 'influxdb_client.client.http', + 'influxdb_client.client.exceptions', +] + + +# noinspection PyMethodMayBeStatic +class _BaseClient(object): + def __init__(self, url, token, debug=None, timeout=10_000, enable_gzip=False, org: str = None, + default_tags: dict = None, http_client_logger: str = None, **kwargs) -> None: + self.url = url + self.token = token + self.org = org + + self.default_tags = default_tags + + self.conf = _Configuration() + if not isinstance(self.url, str): + raise ValueError('"url" attribute is not str instance') + if self.url.endswith("/"): + self.conf.host = self.url[:-1] + else: + self.conf.host = self.url + self.conf.enable_gzip = enable_gzip + self.conf.verify_ssl = kwargs.get('verify_ssl', True) + self.conf.ssl_ca_cert = kwargs.get('ssl_ca_cert', None) + self.conf.cert_file = kwargs.get('cert_file', None) + self.conf.cert_key_file = kwargs.get('cert_key_file', None) + self.conf.cert_key_password = kwargs.get('cert_key_password', None) + self.conf.ssl_context = kwargs.get('ssl_context', None) + self.conf.proxy = kwargs.get('proxy', None) + self.conf.proxy_headers = kwargs.get('proxy_headers', None) + self.conf.connection_pool_maxsize = kwargs.get('connection_pool_maxsize', self.conf.connection_pool_maxsize) + self.conf.timeout = timeout + # logging + self.conf.loggers["http_client_logger"] = logging.getLogger(http_client_logger) + for client_logger in LOGGERS_NAMES: + self.conf.loggers[client_logger] = logging.getLogger(client_logger) + self.conf.debug = debug + + self.conf.username = kwargs.get('username', None) + self.conf.password = kwargs.get('password', None) + # defaults + self.auth_header_name = None + self.auth_header_value = None + # by token + if self.token: + self.auth_header_name = "Authorization" + self.auth_header_value = "Token " + self.token + # by HTTP basic + auth_basic = kwargs.get('auth_basic', False) + if auth_basic: + self.auth_header_name = "Authorization" + self.auth_header_value = "Basic " + base64.b64encode(token.encode()).decode() + # by username, password + if self.conf.username and self.conf.password: + self.auth_header_name = None + self.auth_header_value = None + + self.retries = kwargs.get('retries', False) + + self.profilers = kwargs.get('profilers', None) + pass + + @classmethod + def _from_config_file(cls, config_file: str = "config.ini", debug=None, enable_gzip=False, **kwargs): + config = configparser.ConfigParser() + config_name = kwargs.get('config_name', 'influx2') + is_json = False + try: + config.read(config_file) + except configparser.ParsingError: + with open(config_file) as json_file: + import json + config = json.load(json_file) + is_json = True + + def _config_value(key: str): + value = str(config[key]) if is_json else config[config_name][key] + return value.strip('"') + + def _has_option(key: str): + return key in config if is_json else config.has_option(config_name, key) + + def _has_section(key: str): + return key in config if is_json else config.has_section(key) + + url = _config_value('url') + token = _config_value('token') + + timeout = None + if _has_option('timeout'): + timeout = _config_value('timeout') + + org = None + if _has_option('org'): + org = _config_value('org') + + verify_ssl = True + if _has_option('verify_ssl'): + verify_ssl = _config_value('verify_ssl') + + ssl_ca_cert = None + if _has_option('ssl_ca_cert'): + ssl_ca_cert = _config_value('ssl_ca_cert') + + cert_file = None + if _has_option('cert_file'): + cert_file = _config_value('cert_file') + + cert_key_file = None + if _has_option('cert_key_file'): + cert_key_file = _config_value('cert_key_file') + + cert_key_password = None + if _has_option('cert_key_password'): + cert_key_password = _config_value('cert_key_password') + + connection_pool_maxsize = None + if _has_option('connection_pool_maxsize'): + connection_pool_maxsize = _config_value('connection_pool_maxsize') + + auth_basic = False + if _has_option('auth_basic'): + auth_basic = _config_value('auth_basic') + + default_tags = None + if _has_section('tags'): + if is_json: + default_tags = config['tags'] + else: + tags = {k: v.strip('"') for k, v in config.items('tags')} + default_tags = dict(tags) + + profilers = None + if _has_option('profilers'): + profilers = [x.strip() for x in _config_value('profilers').split(',')] + + proxy = None + if _has_option('proxy'): + proxy = _config_value('proxy') + + return cls(url, token, debug=debug, timeout=_to_int(timeout), org=org, default_tags=default_tags, + enable_gzip=enable_gzip, verify_ssl=_to_bool(verify_ssl), ssl_ca_cert=ssl_ca_cert, + cert_file=cert_file, cert_key_file=cert_key_file, cert_key_password=cert_key_password, + connection_pool_maxsize=_to_int(connection_pool_maxsize), auth_basic=_to_bool(auth_basic), + profilers=profilers, proxy=proxy, **kwargs) + + @classmethod + def _from_env_properties(cls, debug=None, enable_gzip=False, **kwargs): + url = os.getenv('INFLUXDB_V2_URL', "http://localhost:8086") + token = os.getenv('INFLUXDB_V2_TOKEN', "my-token") + timeout = os.getenv('INFLUXDB_V2_TIMEOUT', "10000") + org = os.getenv('INFLUXDB_V2_ORG', "my-org") + verify_ssl = os.getenv('INFLUXDB_V2_VERIFY_SSL', "True") + ssl_ca_cert = os.getenv('INFLUXDB_V2_SSL_CA_CERT', None) + cert_file = os.getenv('INFLUXDB_V2_CERT_FILE', None) + cert_key_file = os.getenv('INFLUXDB_V2_CERT_KEY_FILE', None) + cert_key_password = os.getenv('INFLUXDB_V2_CERT_KEY_PASSWORD', None) + connection_pool_maxsize = os.getenv('INFLUXDB_V2_CONNECTION_POOL_MAXSIZE', None) + auth_basic = os.getenv('INFLUXDB_V2_AUTH_BASIC', "False") + + prof = os.getenv("INFLUXDB_V2_PROFILERS", None) + profilers = None + if prof is not None: + profilers = [x.strip() for x in prof.split(',')] + + default_tags = dict() + + for key, value in os.environ.items(): + if key.startswith("INFLUXDB_V2_TAG_"): + default_tags[key[16:].lower()] = value + + return cls(url, token, debug=debug, timeout=_to_int(timeout), org=org, default_tags=default_tags, + enable_gzip=enable_gzip, verify_ssl=_to_bool(verify_ssl), ssl_ca_cert=ssl_ca_cert, + cert_file=cert_file, cert_key_file=cert_key_file, cert_key_password=cert_key_password, + connection_pool_maxsize=_to_int(connection_pool_maxsize), auth_basic=_to_bool(auth_basic), + profilers=profilers, **kwargs) + + +# noinspection PyMethodMayBeStatic +class _BaseQueryApi(object): + default_dialect = Dialect(header=True, delimiter=",", comment_prefix="#", + annotations=["datatype", "group", "default"], date_time_format="RFC3339") + + def __init__(self, influxdb_client, query_options=None): + from influxdb_client.client.query_api import QueryOptions + self._query_options = QueryOptions() if query_options is None else query_options + self._influxdb_client = influxdb_client + self._query_api = QueryService(influxdb_client.api_client) + + """Base implementation for Queryable API.""" + + def _to_tables(self, response, query_options=None, response_metadata_mode: + FluxResponseMetadataMode = FluxResponseMetadataMode.full) -> TableList: + """ + Parse HTTP response to TableList. + + :param response: HTTP response from an HTTP client. Expected type: `urllib3.response.HTTPResponse`. + """ + _parser = self._to_tables_parser(response, query_options, response_metadata_mode) + list(_parser.generator()) + return _parser.table_list() + + async def _to_tables_async(self, response, query_options=None, response_metadata_mode: + FluxResponseMetadataMode = FluxResponseMetadataMode.full) -> TableList: + """ + Parse HTTP response to TableList. + + :param response: HTTP response from an HTTP client. Expected type: `aiohttp.client_reqrep.ClientResponse`. + """ + async with self._to_tables_parser(response, query_options, response_metadata_mode) as parser: + async for _ in parser.generator_async(): + pass + return parser.table_list() + + def _to_csv(self, response: HTTPResponse) -> CSVIterator: + """Parse HTTP response to CSV.""" + return CSVIterator(response) + + def _to_flux_record_stream(self, response, query_options=None, + response_metadata_mode: FluxResponseMetadataMode = FluxResponseMetadataMode.full) -> \ + Generator[FluxRecord, Any, None]: + """ + Parse HTTP response to FluxRecord stream. + + :param response: HTTP response from an HTTP client. Expected type: `urllib3.response.HTTPResponse`. + """ + _parser = self._to_flux_record_stream_parser(query_options, response, response_metadata_mode) + return _parser.generator() + + async def _to_flux_record_stream_async(self, response, query_options=None, response_metadata_mode: + FluxResponseMetadataMode = FluxResponseMetadataMode.full) -> \ + AsyncGenerator['FluxRecord', None]: + """ + Parse HTTP response to FluxRecord stream. + + :param response: HTTP response from an HTTP client. Expected type: `aiohttp.client_reqrep.ClientResponse`. + """ + _parser = self._to_flux_record_stream_parser(query_options, response, response_metadata_mode) + return (await _parser.__aenter__()).generator_async() + + def _to_data_frame_stream(self, data_frame_index, response, query_options=None, + response_metadata_mode: FluxResponseMetadataMode = FluxResponseMetadataMode.full, + use_extension_dtypes=False): + """ + Parse HTTP response to DataFrame stream. + + :param response: HTTP response from an HTTP client. Expected type: `urllib3.response.HTTPResponse`. + """ + _parser = self._to_data_frame_stream_parser(data_frame_index, query_options, response, response_metadata_mode, + use_extension_dtypes) + return _parser.generator() + + async def _to_data_frame_stream_async(self, data_frame_index, response, query_options=None, response_metadata_mode: + FluxResponseMetadataMode = FluxResponseMetadataMode.full, + use_extension_dtypes=False): + """ + Parse HTTP response to DataFrame stream. + + :param response: HTTP response from an HTTP client. Expected type: `aiohttp.client_reqrep.ClientResponse`. + """ + _parser = self._to_data_frame_stream_parser(data_frame_index, query_options, response, response_metadata_mode, + use_extension_dtypes) + return (await _parser.__aenter__()).generator_async() + + def _to_tables_parser(self, response, query_options, response_metadata_mode): + return FluxCsvParser(response=response, serialization_mode=FluxSerializationMode.tables, + query_options=query_options, response_metadata_mode=response_metadata_mode) + + def _to_flux_record_stream_parser(self, query_options, response, response_metadata_mode): + return FluxCsvParser(response=response, serialization_mode=FluxSerializationMode.stream, + query_options=query_options, response_metadata_mode=response_metadata_mode) + + def _to_data_frame_stream_parser(self, data_frame_index, query_options, response, response_metadata_mode, + use_extension_dtypes): + return FluxCsvParser(response=response, serialization_mode=FluxSerializationMode.dataFrame, + data_frame_index=data_frame_index, query_options=query_options, + response_metadata_mode=response_metadata_mode, + use_extension_dtypes=use_extension_dtypes) + + def _to_data_frames(self, _generator): + """Parse stream of DataFrames into expected type.""" + from ..extras import pd + if isinstance(_generator, list): + _dataFrames = _generator + else: + _dataFrames = list(_generator) + + if len(_dataFrames) == 0: + return pd.DataFrame(columns=[], index=None) + elif len(_dataFrames) == 1: + return _dataFrames[0] + else: + return _dataFrames + + def _org_param(self, org): + return get_org_query_param(org=org, client=self._influxdb_client) + + def _get_query_options(self): + if self._query_options and self._query_options.profilers: + return self._query_options + elif self._influxdb_client.profilers: + from influxdb_client.client.query_api import QueryOptions + return QueryOptions(profilers=self._influxdb_client.profilers) + + def _create_query(self, query, dialect=default_dialect, params: dict = None, **kwargs): + query_options = self._get_query_options() + profilers = query_options.profilers if query_options is not None else None + q = Query(query=query, dialect=dialect, extern=_BaseQueryApi._build_flux_ast(params, profilers)) + + if profilers: + print("\n===============") + print("Profiler: query") + print("===============") + print(query) + + if kwargs.get('dataframe_query', False): + MissingPivotFunction.print_warning(query) + + return q + + @staticmethod + def _params_to_extern_ast(params: dict) -> List['OptionStatement']: + + statements = [] + for key, value in params.items(): + expression = _BaseQueryApi._parm_to_extern_ast(value) + if expression is None: + continue + + statements.append(OptionStatement("OptionStatement", + VariableAssignment("VariableAssignment", Identifier("Identifier", key), + expression))) + return statements + + @staticmethod + def _parm_to_extern_ast(value) -> Union[Expression, None]: + if value is None: + return None + if isinstance(value, bool): + return BooleanLiteral("BooleanLiteral", value) + elif isinstance(value, int): + return IntegerLiteral("IntegerLiteral", str(value)) + elif isinstance(value, float): + return FloatLiteral("FloatLiteral", value) + elif isinstance(value, datetime): + value = get_date_helper().to_utc(value) + nanoseconds = getattr(value, 'nanosecond', 0) + fraction = f'{(value.microsecond * 1000 + nanoseconds):09d}' + return DateTimeLiteral("DateTimeLiteral", value.strftime('%Y-%m-%dT%H:%M:%S.') + fraction + 'Z') + elif isinstance(value, timedelta): + _micro_delta = int(value / timedelta(microseconds=1)) + if _micro_delta < 0: + return UnaryExpression("UnaryExpression", argument=DurationLiteral("DurationLiteral", [ + Duration(magnitude=-_micro_delta, unit="us")]), operator="-") + else: + return DurationLiteral("DurationLiteral", [Duration(magnitude=_micro_delta, unit="us")]) + elif isinstance(value, str): + return StringLiteral("StringLiteral", str(value)) + elif isinstance(value, Iterable): + return ArrayExpression("ArrayExpression", + elements=list(map(lambda it: _BaseQueryApi._parm_to_extern_ast(it), value))) + else: + return value + + @staticmethod + def _build_flux_ast(params: dict = None, profilers: List[str] = None): + + imports = [] + body = [] + + if profilers is not None and len(profilers) > 0: + imports.append(ImportDeclaration( + "ImportDeclaration", + path=StringLiteral("StringLiteral", "profiler"))) + + elements = [] + for profiler in profilers: + elements.append(StringLiteral("StringLiteral", value=profiler)) + + member = MemberExpression( + "MemberExpression", + object=Identifier("Identifier", "profiler"), + _property=Identifier("Identifier", "enabledProfilers")) + + prof = OptionStatement( + "OptionStatement", + assignment=MemberAssignment( + "MemberAssignment", + member=member, + init=ArrayExpression( + "ArrayExpression", + elements=elements))) + + body.append(prof) + + if params is not None: + body.extend(_BaseQueryApi._params_to_extern_ast(params)) + + return File(package=None, name=None, type=None, imports=imports, body=body) + + +class _BaseWriteApi(object): + def __init__(self, influxdb_client, point_settings=None): + self._influxdb_client = influxdb_client + self._point_settings = point_settings + self._write_service = WriteService(influxdb_client.api_client) + if influxdb_client.default_tags: + for key, value in influxdb_client.default_tags.items(): + self._point_settings.add_default_tag(key, value) + + def _append_default_tag(self, key, val, record): + from influxdb_client import Point + if isinstance(record, bytes) or isinstance(record, str): + pass + elif isinstance(record, Point): + record.tag(key, val) + elif isinstance(record, dict): + record.setdefault("tags", {}) + record.get("tags")[key] = val + elif isinstance(record, Iterable): + for item in record: + self._append_default_tag(key, val, item) + + def _append_default_tags(self, record): + if self._point_settings.defaultTags and record is not None: + for key, val in self._point_settings.defaultTags.items(): + self._append_default_tag(key, val, record) + + def _serialize(self, record, write_precision, payload, **kwargs): + from influxdb_client import Point + if isinstance(record, bytes): + payload[write_precision].append(record) + + elif isinstance(record, str): + self._serialize(record.encode(_UTF_8_encoding), write_precision, payload, **kwargs) + + elif isinstance(record, Point): + precision_from_point = kwargs.get('precision_from_point', True) + precision = record.write_precision if precision_from_point else write_precision + self._serialize(record.to_line_protocol(precision=precision), precision, payload, **kwargs) + + elif isinstance(record, dict): + self._serialize(Point.from_dict(record, write_precision=write_precision, **kwargs), + write_precision, payload, **kwargs) + elif 'DataFrame' in type(record).__name__: + serializer = DataframeSerializer(record, self._point_settings, write_precision, **kwargs) + self._serialize(serializer.serialize(), write_precision, payload, **kwargs) + elif hasattr(record, "_asdict"): + # noinspection PyProtectedMember + self._serialize(record._asdict(), write_precision, payload, **kwargs) + elif _HAS_DATACLASS and dataclasses.is_dataclass(record): + self._serialize(dataclasses.asdict(record), write_precision, payload, **kwargs) + elif isinstance(record, Iterable): + for item in record: + self._serialize(item, write_precision, payload, **kwargs) + + +# noinspection PyMethodMayBeStatic +class _BaseDeleteApi(object): + def __init__(self, influxdb_client): + self._influxdb_client = influxdb_client + self._service = DeleteService(influxdb_client.api_client) + + def _prepare_predicate_request(self, start, stop, predicate): + date_helper = get_date_helper() + if isinstance(start, datetime): + start = date_helper.to_utc(start) + if isinstance(stop, datetime): + stop = date_helper.to_utc(stop) + predicate_request = DeletePredicateRequest(start=start, stop=stop, predicate=predicate) + return predicate_request + + +class _Configuration(Configuration): + def __init__(self): + Configuration.__init__(self) + self.enable_gzip = False + self.username = None + self.password = None + + def update_request_header_params(self, path: str, params: dict): + super().update_request_header_params(path, params) + if self.enable_gzip: + # GZIP Request + if path == '/api/v2/write': + params["Content-Encoding"] = "gzip" + params["Accept-Encoding"] = "identity" + pass + # GZIP Response + if path == '/api/v2/query': + # params["Content-Encoding"] = "gzip" + params["Accept-Encoding"] = "gzip" + pass + pass + pass + + def update_request_body(self, path: str, body): + _body = super().update_request_body(path, body) + if self.enable_gzip: + # GZIP Request + if path == '/api/v2/write': + import gzip + if isinstance(_body, bytes): + return gzip.compress(data=_body) + else: + return gzip.compress(bytes(_body, _UTF_8_encoding)) + + return _body + + +def _to_bool(bool_value): + return str(bool_value).lower() in ("yes", "true") + + +def _to_int(int_value): + return int(int_value) if int_value is not None else None diff --git a/frogpilot/third_party/influxdb_client/client/_pages.py b/frogpilot/third_party/influxdb_client/client/_pages.py new file mode 100644 index 000000000..5e4184276 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/_pages.py @@ -0,0 +1,66 @@ + + +class _Page: + def __init__(self, values, has_next, next_after): + self.has_next = has_next + self.values = values + self.next_after = next_after + + @staticmethod + def empty(): + return _Page([], False, None) + + @staticmethod + def initial(after): + return _Page([], True, after) + + +class _PageIterator: + def __init__(self, page: _Page, get_next_page): + self.page = page + self.get_next_page = get_next_page + + def __iter__(self): + return self + + def __next__(self): + if not self.page.values: + if self.page.has_next: + self.page = self.get_next_page(self.page) + if not self.page.values: + raise StopIteration + return self.page.values.pop(0) + + +class _Paginated: + def __init__(self, paginated_getter, pluck_page_resources_from_response): + self.paginated_getter = paginated_getter + self.pluck_page_resources_from_response = pluck_page_resources_from_response + + def find_iter(self, **kwargs): + """Iterate over resources with pagination. + + :key str org: The organization name. + :key str org_id: The organization ID. + :key str after: The last resource ID from which to seek from (but not including). + :key int limit: the maximum number of items per page + :return: resources iterator + """ + + def get_next_page(page: _Page): + return self._find_next_page(page, **kwargs) + + return iter(_PageIterator(_Page.initial(kwargs.get('after')), get_next_page)) + + def _find_next_page(self, page: _Page, **kwargs): + if not page.has_next: + return _Page.empty() + + kw_args = {**kwargs, 'after': page.next_after} if page.next_after is not None else kwargs + response = self.paginated_getter(**kw_args) + + resources = self.pluck_page_resources_from_response(response) + has_next = response.links.next is not None + last_id = resources[-1].id if resources else None + + return _Page(resources, has_next, last_id) diff --git a/frogpilot/third_party/influxdb_client/client/authorizations_api.py b/frogpilot/third_party/influxdb_client/client/authorizations_api.py new file mode 100644 index 000000000..05be6ecd4 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/authorizations_api.py @@ -0,0 +1,136 @@ +"""Authorization is about managing the security of your InfluxDB instance.""" + +from influxdb_client import Authorization, AuthorizationsService, User, Organization + + +class AuthorizationsApi(object): + """Implementation for '/api/v2/authorizations' endpoint.""" + + def __init__(self, influxdb_client): + """Initialize defaults.""" + self._influxdb_client = influxdb_client + self._authorizations_service = AuthorizationsService(influxdb_client.api_client) + + def create_authorization(self, org_id: str = None, permissions: list = None, + authorization: Authorization = None) -> Authorization: + """ + Create an authorization. + + :type permissions: list of Permission + :param org_id: organization id + :param permissions: list of permissions + :type authorization: authorization object + + """ + if authorization is not None: + if not isinstance(authorization, Authorization): + raise TypeError(f"Attempt to use non-Authorization value for authorization: {authorization}") + return self._authorizations_service.post_authorizations(authorization_post_request=authorization) + + # if org_id is not None and permissions is not None: + authorization = Authorization(org_id=org_id, permissions=permissions) + return self._authorizations_service.post_authorizations(authorization_post_request=authorization) + + def find_authorization_by_id(self, auth_id: str) -> Authorization: + """ + Find authorization by id. + + :param auth_id: authorization id + :return: Authorization + """ + return self._authorizations_service.get_authorizations_id(auth_id=auth_id) + + def find_authorizations(self, **kwargs): + """ + Get a list of all authorizations. + + :key str user_id: filter authorizations belonging to a user id + :key str user: filter authorizations belonging to a user name + :key str org_id: filter authorizations belonging to a org id + :key str org: filter authorizations belonging to a org name + :return: Authorizations + """ + authorizations = self._authorizations_service.get_authorizations(**kwargs) + + return authorizations.authorizations + + def find_authorizations_by_user(self, user: User): + """ + Find authorization by User. + + :return: Authorization list + """ + return self.find_authorizations(user_id=user.id) + + def find_authorizations_by_user_id(self, user_id: str): + """ + Find authorization by user id. + + :return: Authorization list + """ + return self.find_authorizations(user_id=user_id) + + def find_authorizations_by_user_name(self, user_name: str): + """ + Find authorization by user name. + + :return: Authorization list + """ + return self.find_authorizations(user=user_name) + + def find_authorizations_by_org(self, org: Organization): + """ + Find authorization by user name. + + :return: Authorization list + """ + if isinstance(org, Organization): + return self.find_authorizations(org_id=org.id) + + def find_authorizations_by_org_name(self, org_name: str): + """ + Find authorization by org name. + + :return: Authorization list + """ + return self.find_authorizations(org=org_name) + + def find_authorizations_by_org_id(self, org_id: str): + """ + Find authorization by org id. + + :return: Authorization list + """ + return self.find_authorizations(org_id=org_id) + + def update_authorization(self, auth): + """ + Update authorization object. + + :param auth: + :return: + """ + return self._authorizations_service.patch_authorizations_id(auth_id=auth.id, authorization_update_request=auth) + + def clone_authorization(self, auth) -> Authorization: + """Clone an authorization.""" + if isinstance(auth, Authorization): + cloned = Authorization(org_id=auth.org_id, permissions=auth.permissions) + # cloned.description = auth.description + # cloned.status = auth.status + return self.create_authorization(authorization=cloned) + + if isinstance(auth, str): + authorization = self.find_authorization_by_id(auth) + return self.clone_authorization(auth=authorization) + + raise ValueError("Invalid argument") + + def delete_authorization(self, auth): + """Delete a authorization.""" + if isinstance(auth, Authorization): + return self._authorizations_service.delete_authorizations_id(auth_id=auth.id) + + if isinstance(auth, str): + return self._authorizations_service.delete_authorizations_id(auth_id=auth) + raise ValueError("Invalid argument") diff --git a/frogpilot/third_party/influxdb_client/client/bucket_api.py b/frogpilot/third_party/influxdb_client/client/bucket_api.py new file mode 100644 index 000000000..684da7676 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/bucket_api.py @@ -0,0 +1,132 @@ +""" +A bucket is a named location where time series data is stored. + +All buckets have a retention policy, a duration of time that each data point persists. +A bucket belongs to an organization. +""" +import warnings + +from influxdb_client import BucketsService, Bucket, PostBucketRequest, PatchBucketRequest +from influxdb_client.client.util.helpers import get_org_query_param +from influxdb_client.client._pages import _Paginated + + +class BucketsApi(object): + """Implementation for '/api/v2/buckets' endpoint.""" + + def __init__(self, influxdb_client): + """Initialize defaults.""" + self._influxdb_client = influxdb_client + self._buckets_service = BucketsService(influxdb_client.api_client) + + def create_bucket(self, bucket=None, bucket_name=None, org_id=None, retention_rules=None, + description=None, org=None) -> Bucket: + """Create a bucket. + + :param Bucket|PostBucketRequest bucket: bucket to create + :param bucket_name: bucket name + :param description: bucket description + :param org_id: org_id + :param bucket_name: bucket name + :param retention_rules: retention rules array or single BucketRetentionRules + :param str, Organization org: specifies the organization for create the bucket; + Take the ``ID``, ``Name`` or ``Organization``. + If not specified the default value from ``InfluxDBClient.org`` is used. + :return: Bucket + If the method is called asynchronously, + returns the request thread. + """ + if retention_rules is None: + retention_rules = [] + + rules = [] + + if isinstance(retention_rules, list): + rules.extend(retention_rules) + else: + rules.append(retention_rules) + + if org_id is not None: + warnings.warn("org_id is deprecated; use org", DeprecationWarning) + + if bucket is None: + bucket = PostBucketRequest(name=bucket_name, + retention_rules=rules, + description=description, + org_id=get_org_query_param(org=(org_id if org is None else org), + client=self._influxdb_client, + required_id=True)) + + return self._buckets_service.post_buckets(post_bucket_request=bucket) + + def update_bucket(self, bucket: Bucket) -> Bucket: + """Update a bucket. + + :param bucket: Bucket update to apply (required) + :return: Bucket + """ + request = PatchBucketRequest(name=bucket.name, + description=bucket.description, + retention_rules=bucket.retention_rules) + + return self._buckets_service.patch_buckets_id(bucket_id=bucket.id, patch_bucket_request=request) + + def delete_bucket(self, bucket): + """Delete a bucket. + + :param bucket: bucket id or Bucket + :return: Bucket + """ + if isinstance(bucket, Bucket): + bucket_id = bucket.id + else: + bucket_id = bucket + + return self._buckets_service.delete_buckets_id(bucket_id=bucket_id) + + def find_bucket_by_id(self, id): + """Find bucket by ID. + + :param id: + :return: + """ + return self._buckets_service.get_buckets_id(id) + + def find_bucket_by_name(self, bucket_name): + """Find bucket by name. + + :param bucket_name: bucket name + :return: Bucket + """ + buckets = self._buckets_service.get_buckets(name=bucket_name) + + if len(buckets.buckets) > 0: + return buckets.buckets[0] + else: + return None + + def find_buckets(self, **kwargs): + """List buckets. + + :key int offset: Offset for pagination + :key int limit: Limit for pagination + :key str after: The last resource ID from which to seek from (but not including). + This is to be used instead of `offset`. + :key str org: The organization name. + :key str org_id: The organization ID. + :key str name: Only returns buckets with a specific name. + :return: Buckets + """ + return self._buckets_service.get_buckets(**kwargs) + + def find_buckets_iter(self, **kwargs): + """Iterate over all buckets with pagination. + + :key str name: Only returns buckets with the specified name + :key str org: The organization name. + :key str org_id: The organization ID. + :key str after: The last resource ID from which to seek from (but not including). + :key int limit: the maximum number of buckets in one page + :return: Buckets iterator + """ + return _Paginated(self._buckets_service.get_buckets, lambda response: response.buckets).find_iter(**kwargs) diff --git a/frogpilot/third_party/influxdb_client/client/delete_api.py b/frogpilot/third_party/influxdb_client/client/delete_api.py new file mode 100644 index 000000000..5f9da4716 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/delete_api.py @@ -0,0 +1,35 @@ +"""Delete time series data from InfluxDB.""" + +from datetime import datetime +from typing import Union + +from influxdb_client import Organization +from influxdb_client.client._base import _BaseDeleteApi +from influxdb_client.client.util.helpers import get_org_query_param + + +class DeleteApi(_BaseDeleteApi): + """Implementation for '/api/v2/delete' endpoint.""" + + def __init__(self, influxdb_client): + """Initialize defaults.""" + super().__init__(influxdb_client) + + def delete(self, start: Union[str, datetime], stop: Union[str, datetime], predicate: str, bucket: str, + org: Union[str, Organization, None] = None) -> None: + """ + Delete Time series data from InfluxDB. + + :param str, datetime.datetime start: start time + :param str, datetime.datetime stop: stop time + :param str predicate: predicate + :param str bucket: bucket id or name from which data will be deleted + :param str, Organization org: specifies the organization to delete data from. + Take the ``ID``, ``Name`` or ``Organization``. + If not specified the default value from ``InfluxDBClient.org`` is used. + :return: + """ + predicate_request = self._prepare_predicate_request(start, stop, predicate) + org_param = get_org_query_param(org=org, client=self._influxdb_client, required_id=False) + + return self._service.post_delete(delete_predicate_request=predicate_request, bucket=bucket, org=org_param) diff --git a/frogpilot/third_party/influxdb_client/client/delete_api_async.py b/frogpilot/third_party/influxdb_client/client/delete_api_async.py new file mode 100644 index 000000000..ef44c843a --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/delete_api_async.py @@ -0,0 +1,37 @@ +"""Delete time series data from InfluxDB.""" + +from datetime import datetime +from typing import Union + +from influxdb_client import Organization +from influxdb_client.client._base import _BaseDeleteApi +from influxdb_client.client.util.helpers import get_org_query_param + + +class DeleteApiAsync(_BaseDeleteApi): + """Async implementation for '/api/v2/delete' endpoint.""" + + def __init__(self, influxdb_client): + """Initialize defaults.""" + super().__init__(influxdb_client) + + async def delete(self, start: Union[str, datetime], stop: Union[str, datetime], predicate: str, bucket: str, + org: Union[str, Organization, None] = None) -> bool: + """ + Delete Time series data from InfluxDB. + + :param str, datetime.datetime start: start time + :param str, datetime.datetime stop: stop time + :param str predicate: predicate + :param str bucket: bucket id or name from which data will be deleted + :param str, Organization org: specifies the organization to delete data from. + Take the ``ID``, ``Name`` or ``Organization``. + If not specified the default value from ``InfluxDBClientAsync.org`` is used. + :return: ``True`` for successfully deleted data, otherwise raise an exception + """ + predicate_request = self._prepare_predicate_request(start, stop, predicate) + org_param = get_org_query_param(org=org, client=self._influxdb_client, required_id=False) + + response = await self._service.post_delete_async(delete_predicate_request=predicate_request, bucket=bucket, + org=org_param, _return_http_data_only=False) + return response[1] == 204 diff --git a/frogpilot/third_party/influxdb_client/client/exceptions.py b/frogpilot/third_party/influxdb_client/client/exceptions.py new file mode 100644 index 000000000..bfa453e2d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/exceptions.py @@ -0,0 +1,47 @@ +"""Exceptions utils for InfluxDB.""" + +import logging + +from urllib3 import HTTPResponse + +logger = logging.getLogger('influxdb_client.client.exceptions') + + +class InfluxDBError(Exception): + """Raised when a server error occurs.""" + + def __init__(self, response: HTTPResponse = None, message: str = None): + """Initialize the InfluxDBError handler.""" + if response is not None: + self.response = response + self.message = self._get_message(response) + if isinstance(response, HTTPResponse): # response is HTTPResponse + self.headers = response.headers + self.retry_after = response.headers.get('Retry-After') + else: # response is RESTResponse + self.headers = response.getheaders() + self.retry_after = response.getheader('Retry-After') + else: + self.response = None + self.message = message or 'no response' + self.retry_after = None + super().__init__(self.message) + + def _get_message(self, response): + # Body + if response.data: + import json + try: + return json.loads(response.data)["message"] + except Exception as e: + logging.debug(f"Cannot parse error response to JSON: {response.data}, {e}") + return response.data + + # Header + for header_key in ["X-Platform-Error-Code", "X-Influx-Error", "X-InfluxDb-Error"]: + header_value = response.getheader(header_key) + if header_value is not None: + return header_value + + # Http Status + return response.reason diff --git a/frogpilot/third_party/influxdb_client/client/flux_csv_parser.py b/frogpilot/third_party/influxdb_client/client/flux_csv_parser.py new file mode 100644 index 000000000..99e680941 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/flux_csv_parser.py @@ -0,0 +1,408 @@ +"""Parsing response from InfluxDB to FluxStructures or DataFrame.""" + +import base64 +import codecs +import csv as csv_parser +import warnings +from enum import Enum +from typing import List + +from influxdb_client.client.flux_table import FluxTable, FluxColumn, FluxRecord, TableList +from influxdb_client.client.util.date_utils import get_date_helper +from influxdb_client.rest import _UTF_8_encoding + +ANNOTATION_DEFAULT = "#default" +ANNOTATION_GROUP = "#group" +ANNOTATION_DATATYPE = "#datatype" +ANNOTATIONS = [ANNOTATION_DEFAULT, ANNOTATION_GROUP, ANNOTATION_DATATYPE] + + +class FluxQueryException(Exception): + """The exception from InfluxDB.""" + + def __init__(self, message, reference) -> None: + """Initialize defaults.""" + self.message = message + self.reference = reference + + +class FluxCsvParserException(Exception): + """The exception for not parsable data.""" + + pass + + +class FluxSerializationMode(Enum): + """The type how we want to serialize data.""" + + tables = 1 + stream = 2 + dataFrame = 3 + + +class FluxResponseMetadataMode(Enum): + """The configuration for expected amount of metadata response from InfluxDB.""" + + full = 1 + # useful for Invokable scripts + only_names = 2 + + +class _FluxCsvParserMetadata(object): + def __init__(self): + self.table_index = 0 + self.table_id = -1 + self.start_new_table = False + self.table = None + self.groups = [] + self.parsing_state_error = False + + +class FluxCsvParser(object): + """Parse to processing response from InfluxDB to FluxStructures or DataFrame.""" + + def __init__(self, response, serialization_mode: FluxSerializationMode, + data_frame_index: List[str] = None, query_options=None, + response_metadata_mode: FluxResponseMetadataMode = FluxResponseMetadataMode.full, + use_extension_dtypes=False) -> None: + """ + Initialize defaults. + + :param response: HTTP response from a HTTP client. + Acceptable types: `urllib3.response.HTTPResponse`, `aiohttp.client_reqrep.ClientResponse`. + """ + self._response = response + self.tables = TableList() + self._serialization_mode = serialization_mode + self._response_metadata_mode = response_metadata_mode + self._use_extension_dtypes = use_extension_dtypes + self._data_frame_index = data_frame_index + self._data_frame_values = [] + self._profilers = query_options.profilers if query_options is not None else None + self._profiler_callback = query_options.profiler_callback if query_options is not None else None + self._async_mode = True if 'ClientResponse' in type(response).__name__ else False + + def _close(self): + self._response.close() + + def __enter__(self): + """Initialize CSV reader.""" + # response can be exhausted by logger, so we have to use data that has already been read + if hasattr(self._response, 'closed') and self._response.closed: + from io import StringIO + self._reader = csv_parser.reader(StringIO(self._response.data.decode(_UTF_8_encoding))) + else: + self._reader = csv_parser.reader(codecs.iterdecode(self._response, _UTF_8_encoding)) + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + """Close HTTP response.""" + self._close() + + async def __aenter__(self) -> 'FluxCsvParser': + """Initialize CSV reader.""" + from aiocsv import AsyncReader + self._reader = AsyncReader(_StreamReaderToWithAsyncRead(self._response.content)) + + return self + + async def __aexit__(self, exc_type, exc_val, exc_tb) -> None: + """Shutdown the client.""" + self.__exit__(exc_type, exc_val, exc_tb) + + def generator(self): + """Return Python generator.""" + with self as parser: + for val in parser._parse_flux_response(): + yield val + + def generator_async(self): + """Return Python async-generator.""" + return self._parse_flux_response_async() + + def _parse_flux_response(self): + metadata = _FluxCsvParserMetadata() + + for csv in self._reader: + for val in self._parse_flux_response_row(metadata, csv): + yield val + + # Return latest DataFrame + if (self._serialization_mode is FluxSerializationMode.dataFrame) & hasattr(self, '_data_frame'): + df = self._prepare_data_frame() + if not self._is_profiler_table(metadata.table): + yield df + + async def _parse_flux_response_async(self): + metadata = _FluxCsvParserMetadata() + + try: + async for csv in self._reader: + for val in self._parse_flux_response_row(metadata, csv): + yield val + + # Return latest DataFrame + if (self._serialization_mode is FluxSerializationMode.dataFrame) & hasattr(self, '_data_frame'): + df = self._prepare_data_frame() + if not self._is_profiler_table(metadata.table): + yield df + except BaseException as e: + e_type = type(e).__name__ + if "CancelledError" in e_type or "TimeoutError" in e_type: + e.add_note("Stream cancelled during read. Recommended: Check Influxdb client `timeout` setting.") + raise + finally: + self._close() + + def _parse_flux_response_row(self, metadata, csv): + if len(csv) < 1: + # Skip empty line in results (new line is used as a delimiter between tables or table and error) + pass + + elif "error" == csv[1] and "reference" == csv[2]: + metadata.parsing_state_error = True + + else: + # Throw InfluxException with error response + if metadata.parsing_state_error: + error = csv[1] + reference_value = csv[2] + raise FluxQueryException(error, reference_value) + + token = csv[0] + # start new table + if (token in ANNOTATIONS and not metadata.start_new_table) or \ + (self._response_metadata_mode is FluxResponseMetadataMode.only_names and not metadata.table): + + # Return already parsed DataFrame + if (self._serialization_mode is FluxSerializationMode.dataFrame) & hasattr(self, '_data_frame'): + df = self._prepare_data_frame() + if not self._is_profiler_table(metadata.table): + yield df + + metadata.start_new_table = True + metadata.table = FluxTable() + self._insert_table(metadata.table, metadata.table_index) + metadata.table_index = metadata.table_index + 1 + metadata.table_id = -1 + elif metadata.table is None: + raise FluxCsvParserException("Unable to parse CSV response. FluxTable definition was not found.") + + # # datatype,string,long,dateTime:RFC3339,dateTime:RFC3339,dateTime:RFC3339,double,string,string,string + if ANNOTATION_DATATYPE == token: + self.add_data_types(metadata.table, csv) + + elif ANNOTATION_GROUP == token: + metadata.groups = csv + + elif ANNOTATION_DEFAULT == token: + self.add_default_empty_values(metadata.table, csv) + + else: + # parse column names + if metadata.start_new_table: + # Invokable scripts doesn't supports dialect => all columns are string + if not metadata.table.columns and \ + self._response_metadata_mode is FluxResponseMetadataMode.only_names: + self.add_data_types(metadata.table, list(map(lambda column: 'string', csv))) + metadata.groups = list(map(lambda column: 'false', csv)) + self.add_groups(metadata.table, metadata.groups) + self.add_column_names_and_tags(metadata.table, csv) + metadata.start_new_table = False + # Create DataFrame with default values + if self._serialization_mode is FluxSerializationMode.dataFrame: + from ..extras import pd + labels = list(map(lambda it: it.label, metadata.table.columns)) + self._data_frame = pd.DataFrame(data=[], columns=labels, index=None) + pass + else: + + # to int conversions todo + current_id = int(csv[2]) + if metadata.table_id == -1: + metadata.table_id = current_id + + if metadata.table_id != current_id: + # create new table with previous column headers settings + flux_columns = metadata.table.columns + metadata.table = FluxTable() + metadata.table.columns.extend(flux_columns) + self._insert_table(metadata.table, metadata.table_index) + metadata.table_index = metadata.table_index + 1 + metadata.table_id = current_id + + flux_record = self.parse_record(metadata.table_index - 1, metadata.table, csv) + + if self._is_profiler_record(flux_record): + self._print_profiler_info(flux_record) + else: + if self._serialization_mode is FluxSerializationMode.tables: + self.tables[metadata.table_index - 1].records.append(flux_record) + + if self._serialization_mode is FluxSerializationMode.stream: + yield flux_record + + if self._serialization_mode is FluxSerializationMode.dataFrame: + self._data_frame_values.append(flux_record.values) + pass + + def _prepare_data_frame(self): + from ..extras import pd + + # We have to create temporary DataFrame because we want to preserve default column values + _temp_df = pd.DataFrame(self._data_frame_values) + self._data_frame_values = [] + + # Custom DataFrame index + if self._data_frame_index: + self._data_frame = self._data_frame.set_index(self._data_frame_index) + _temp_df = _temp_df.set_index(self._data_frame_index) + + # Append data + df = pd.concat([self._data_frame.astype(_temp_df.dtypes), _temp_df]) + + if self._use_extension_dtypes: + return df.convert_dtypes() + return df + + def parse_record(self, table_index, table, csv): + """Parse one record.""" + record = FluxRecord(table_index) + + for fluxColumn in table.columns: + column_name = fluxColumn.label + str_val = csv[fluxColumn.index + 1] + record.values[column_name] = self._to_value(str_val, fluxColumn) + record.row.append(record.values[column_name]) + + return record + + def _to_value(self, str_val, column): + + if str_val == '' or str_val is None: + default_value = column.default_value + if default_value == '' or default_value is None: + if self._serialization_mode is FluxSerializationMode.dataFrame: + if self._use_extension_dtypes: + from ..extras import pd + return pd.NA + return None + return None + return self._to_value(default_value, column) + + if "string" == column.data_type: + return str_val + + if "boolean" == column.data_type: + return "true" == str_val + + if "unsignedLong" == column.data_type or "long" == column.data_type: + return int(str_val) + + if "double" == column.data_type: + return float(str_val) + + if "base64Binary" == column.data_type: + return base64.b64decode(str_val) + + if "dateTime:RFC3339" == column.data_type or "dateTime:RFC3339Nano" == column.data_type: + return get_date_helper().parse_date(str_val) + + if "duration" == column.data_type: + # todo better type ? + return int(str_val) + + @staticmethod + def add_data_types(table, data_types): + """Add data types to columns.""" + for index in range(1, len(data_types)): + column_def = FluxColumn(index=index - 1, data_type=data_types[index]) + table.columns.append(column_def) + + @staticmethod + def add_groups(table, csv): + """Add group keys to columns.""" + i = 1 + for column in table.columns: + column.group = csv[i] == "true" + i += 1 + + @staticmethod + def add_default_empty_values(table, default_values): + """Add default values to columns.""" + i = 1 + for column in table.columns: + column.default_value = default_values[i] + i += 1 + + @staticmethod + def add_column_names_and_tags(table, csv): + """Add labels to columns.""" + if len(csv) != len(set(csv)): + message = f"""The response contains columns with duplicated names: '{csv}'. + +You should use the 'record.row' to access your data instead of 'record.values' dictionary. +""" + warnings.warn(message, UserWarning) + print(message) + i = 1 + for column in table.columns: + column.label = csv[i] + i += 1 + + def _insert_table(self, table, table_index): + if self._serialization_mode is FluxSerializationMode.tables: + self.tables.insert(table_index, table) + + def _is_profiler_record(self, flux_record: FluxRecord) -> bool: + if not self._profilers: + return False + + for profiler in self._profilers: + if "_measurement" in flux_record.values and flux_record["_measurement"] == "profiler/" + profiler: + return True + + return False + + def _is_profiler_table(self, table: FluxTable) -> bool: + + if not self._profilers: + return False + + return any(filter(lambda column: (column.default_value == "_profiler" and column.label == "result"), + table.columns)) + + def table_list(self) -> TableList: + """Get the list of flux tables.""" + if not self._profilers: + return self.tables + else: + return TableList(filter(lambda table: not self._is_profiler_table(table), self.tables)) + + def _print_profiler_info(self, flux_record: FluxRecord): + if flux_record.get_measurement().startswith("profiler/"): + if self._profiler_callback: + self._profiler_callback(flux_record) + else: + msg = "Profiler: " + flux_record.get_measurement() + print("\n" + len(msg) * "=") + print(msg) + print(len(msg) * "=") + for name in flux_record.values: + val = flux_record[name] + if isinstance(val, str) and len(val) > 50: + print(f"{name:<20}: \n\n{val}") + elif val is not None: + print(f"{name:<20}: {val:<20}") + + +class _StreamReaderToWithAsyncRead: + def __init__(self, response): + self.response = response + self.decoder = codecs.getincrementaldecoder(_UTF_8_encoding)() + + async def read(self, size: int) -> str: + raw_bytes = (await self.response.read(size)) + if not raw_bytes: + return self.decoder.decode(b'', final=True) + return self.decoder.decode(raw_bytes, final=False) diff --git a/frogpilot/third_party/influxdb_client/client/flux_table.py b/frogpilot/third_party/influxdb_client/client/flux_table.py new file mode 100644 index 000000000..5fd9a061d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/flux_table.py @@ -0,0 +1,290 @@ +""" +Flux employs a basic data model built from basic data types. + +The data model consists of tables, records, columns. +""" +import codecs +import csv +from http.client import HTTPResponse +from json import JSONEncoder +from typing import List, Iterator +from influxdb_client.rest import _UTF_8_encoding + + +class FluxStructure: + """The data model consists of tables, records, columns.""" + + pass + + +class FluxStructureEncoder(JSONEncoder): + """The FluxStructure encoder to encode query results to JSON.""" + + def default(self, obj): + """Return serializable objects for JSONEncoder.""" + import datetime + if isinstance(obj, FluxStructure): + return obj.__dict__ + elif isinstance(obj, (datetime.datetime, datetime.date)): + return obj.isoformat() + return super().default(obj) + + +class FluxTable(FluxStructure): + """ + A table is set of records with a common set of columns and a group key. + + The table can be serialized into JSON by:: + + import json + from influxdb_client.client.flux_table import FluxStructureEncoder + + output = json.dumps(tables, cls=FluxStructureEncoder, indent=2) + print(output) + + """ + + def __init__(self) -> None: + """Initialize defaults.""" + self.columns: List[FluxColumn] = [] + self.records: List[FluxRecord] = [] + + def get_group_key(self): + """ + Group key is a list of columns. + + A tableโ€™s group key denotes which subset of the entire dataset is assigned to the table. + """ + return list(filter(lambda column: (column.group is True), self.columns)) + + def __str__(self): + """Return formatted output.""" + cls_name = type(self).__name__ + return cls_name + "() columns: " + str(len(self.columns)) + ", records: " + str(len(self.records)) + + def __repr__(self): + """Format for inspection.""" + return f"<{type(self).__name__}: {len(self.columns)} columns, {len(self.records)} records>" + + def __iter__(self): + """Iterate over records.""" + return iter(self.records) + + +class FluxColumn(FluxStructure): + """A column has a label and a data type.""" + + def __init__(self, index=None, label=None, data_type=None, group=None, default_value=None) -> None: + """Initialize defaults.""" + self.default_value = default_value + self.group = group + self.data_type = data_type + self.label = label + self.index = index + + def __repr__(self): + """Format for inspection.""" + fields = [repr(self.index)] + [ + f'{name}={getattr(self, name)!r}' for name in ( + 'label', 'data_type', 'group', 'default_value' + ) if getattr(self, name) is not None + ] + return f"{type(self).__name__}({', '.join(fields)})" + + +class FluxRecord(FluxStructure): + """A record is a tuple of named values and is represented using an object type.""" + + def __init__(self, table, values=None) -> None: + """Initialize defaults.""" + if values is None: + values = {} + self.table = table + self.values = values + self.row = [] + + def get_start(self): + """Get '_start' value.""" + return self["_start"] + + def get_stop(self): + """Get '_stop' value.""" + return self["_stop"] + + def get_time(self): + """Get timestamp.""" + return self["_time"] + + def get_value(self): + """Get field value.""" + return self["_value"] + + def get_field(self): + """Get field name.""" + return self["_field"] + + def get_measurement(self): + """Get measurement name.""" + return self["_measurement"] + + def __getitem__(self, key): + """Get value by key.""" + return self.values.__getitem__(key) + + def __setitem__(self, key, value): + """Set value with key and value.""" + return self.values.__setitem__(key, value) + + def __str__(self): + """Return formatted output.""" + cls_name = type(self).__name__ + return cls_name + "() table: " + str(self.table) + ", " + str(self.values) + + def __repr__(self): + """Format for inspection.""" + return f"<{type(self).__name__}: field={self.values.get('_field')}, value={self.values.get('_value')}>" + + +class TableList(List[FluxTable]): + """:class:`~influxdb_client.client.flux_table.FluxTable` list with additionally functional to better handle of query result.""" # noqa: E501 + + def to_values(self, columns: List['str'] = None) -> List[List[object]]: + """ + Serialize query results to a flattened list of values. + + :param columns: if not ``None`` then only specified columns are presented in results + :return: :class:`~list` of values + + Output example: + + .. code-block:: python + + [ + ['New York', datetime.datetime(2022, 6, 7, 11, 3, 22, 917593, tzinfo=tzutc()), 24.3], + ['Prague', datetime.datetime(2022, 6, 7, 11, 3, 22, 917593, tzinfo=tzutc()), 25.3], + ... + ] + + Configure required columns: + + .. code-block:: python + + from influxdb_client import InfluxDBClient + + with InfluxDBClient(url="http://localhost:8086", token="my-token", org="my-org") as client: + + # Query: using Table structure + tables = client.query_api().query('from(bucket:"my-bucket") |> range(start: -10m)') + + # Serialize to values + output = tables.to_values(columns=['location', '_time', '_value']) + print(output) + """ + + def filter_values(record): + if columns is not None: + return [record.values.get(k) for k in columns] + return record.values.values() + + return self._to_values(filter_values) + + def to_json(self, columns: List['str'] = None, **kwargs) -> str: + """ + Serialize query results to a JSON formatted :class:`~str`. + + :param columns: if not ``None`` then only specified columns are presented in results + :return: :class:`~str` + + The query results is flattened to array: + + .. code-block:: javascript + + [ + { + "_measurement": "mem", + "_start": "2021-06-23T06:50:11.897825+00:00", + "_stop": "2021-06-25T06:50:11.897825+00:00", + "_time": "2020-02-27T16:20:00.897825+00:00", + "region": "north", + "_field": "usage", + "_value": 15 + }, + { + "_measurement": "mem", + "_start": "2021-06-23T06:50:11.897825+00:00", + "_stop": "2021-06-25T06:50:11.897825+00:00", + "_time": "2020-02-27T16:20:01.897825+00:00", + "region": "west", + "_field": "usage", + "_value": 10 + }, + ... + ] + + The JSON format could be configured via ``**kwargs`` arguments: + + .. code-block:: python + + from influxdb_client import InfluxDBClient + + with InfluxDBClient(url="http://localhost:8086", token="my-token", org="my-org") as client: + + # Query: using Table structure + tables = client.query_api().query('from(bucket:"my-bucket") |> range(start: -10m)') + + # Serialize to JSON + output = tables.to_json(indent=5) + print(output) + + For all available options see - `json.dump `_. + """ + if 'indent' not in kwargs: + kwargs['indent'] = 2 + + def filter_values(record): + if columns is not None: + return {k: v for (k, v) in record.values.items() if k in columns} + return record.values + + import json + return json.dumps(self._to_values(filter_values), cls=FluxStructureEncoder, **kwargs) + + def _to_values(self, mapping): + return [mapping(record) for table in self for record in table.records] + + +class CSVIterator(Iterator[List[str]]): + """:class:`Iterator[List[str]]` with additionally functional to better handle of query result.""" + + def __init__(self, response: HTTPResponse) -> None: + """Initialize ``csv.reader``.""" + self.delegate = csv.reader(codecs.iterdecode(response, _UTF_8_encoding)) + + def __iter__(self): + """Return an iterator object.""" + return self + + def __next__(self): + """Retrieve the next item from the iterator.""" + row = self.delegate.__next__() + while not row: + row = self.delegate.__next__() + return row + + def to_values(self) -> List[List[str]]: + """ + Serialize query results to a flattened list of values. + + :return: :class:`~list` of values + + Output example: + + .. code-block:: python + + [ + ['New York', '2022-06-14T08:00:51.749072045Z', '24.3'], + ['Prague', '2022-06-14T08:00:51.749072045Z', '25.3'], + ... + ] + """ + return list(self.__iter__()) diff --git a/frogpilot/third_party/influxdb_client/client/influxdb_client.py b/frogpilot/third_party/influxdb_client/client/influxdb_client.py new file mode 100644 index 000000000..cbae75a90 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/influxdb_client.py @@ -0,0 +1,438 @@ +"""InfluxDBClient is client for API defined in https://github.com/influxdata/influxdb/blob/master/http/swagger.yml.""" + +from __future__ import absolute_import + +import logging +import warnings + +from influxdb_client import HealthCheck, HealthService, Ready, ReadyService, PingService, \ + InvokableScriptsApi +from influxdb_client.client._base import _BaseClient +from influxdb_client.client.authorizations_api import AuthorizationsApi +from influxdb_client.client.bucket_api import BucketsApi +from influxdb_client.client.delete_api import DeleteApi +from influxdb_client.client.labels_api import LabelsApi +from influxdb_client.client.organizations_api import OrganizationsApi +from influxdb_client.client.query_api import QueryApi, QueryOptions +from influxdb_client.client.tasks_api import TasksApi +from influxdb_client.client.users_api import UsersApi +from influxdb_client.client.write_api import WriteApi, WriteOptions, PointSettings + +logger = logging.getLogger('influxdb_client.client.influxdb_client') + + +class InfluxDBClient(_BaseClient): + """InfluxDBClient is client for InfluxDB v2.""" + + def __init__(self, url, token: str = None, debug=None, timeout=10_000, enable_gzip=False, org: str = None, + default_tags: dict = None, **kwargs) -> None: + """ + Initialize defaults. + + :param url: InfluxDB server API url (ex. http://localhost:8086). + :param token: ``token`` to authenticate to the InfluxDB API + :param debug: enable verbose logging of http requests + :param timeout: HTTP client timeout setting for a request specified in milliseconds. + If one number provided, it will be total request timeout. + It can also be a pair (tuple) of (connection, read) timeouts. + :param enable_gzip: Enable Gzip compression for http requests. Currently, only the "Write" and "Query" endpoints + supports the Gzip compression. + :param org: organization name (used as a default in Query, Write and Delete API) + :key bool verify_ssl: Set this to false to skip verifying SSL certificate when calling API from https server. + :key str ssl_ca_cert: Set this to customize the certificate file to verify the peer. + :key str cert_file: Path to the certificate that will be used for mTLS authentication. + :key str cert_key_file: Path to the file contains private key for mTLS certificate. + :key str cert_key_password: String or function which returns password for decrypting the mTLS private key. + :key ssl.SSLContext ssl_context: Specify a custom Python SSL Context for the TLS/ mTLS handshake. + Be aware that only delivered certificate/ key files or an SSL Context are + possible. + :key str proxy: Set this to configure the http proxy to be used (ex. http://localhost:3128) + :key str proxy_headers: A dictionary containing headers that will be sent to the proxy. Could be used for proxy + authentication. + :key int connection_pool_maxsize: Number of connections to save that can be reused by urllib3. + Defaults to "multiprocessing.cpu_count() * 5". + :key urllib3.util.retry.Retry retries: Set the default retry strategy that is used for all HTTP requests + except batching writes. As a default there is no one retry strategy. + :key bool auth_basic: Set this to true to enable basic authentication when talking to a InfluxDB 1.8.x that + does not use auth-enabled but is protected by a reverse proxy with basic authentication. + (defaults to false, don't set to true when talking to InfluxDB 2) + :key str username: ``username`` to authenticate via username and password credentials to the InfluxDB 2.x + :key str password: ``password`` to authenticate via username and password credentials to the InfluxDB 2.x + :key list[str] profilers: list of enabled Flux profilers + """ + super().__init__(url=url, token=token, debug=debug, timeout=timeout, enable_gzip=enable_gzip, org=org, + default_tags=default_tags, http_client_logger="urllib3", **kwargs) + + from .._sync.api_client import ApiClient + self.api_client = ApiClient(configuration=self.conf, header_name=self.auth_header_name, + header_value=self.auth_header_value, retries=self.retries) + + def __enter__(self): + """ + Enter the runtime context related to this object. + + It will bind this methodโ€™s return value to the target(s) + specified in the `as` clause of the statement. + + return: self instance + """ + return self + + def __exit__(self, exc_type, exc_value, traceback): + """Exit the runtime context related to this object and close the client.""" + self.close() + + @classmethod + def from_config_file(cls, config_file: str = "config.ini", debug=None, enable_gzip=False, **kwargs): + """ + Configure client via configuration file. The configuration has to be under 'influx' section. + + :param config_file: Path to configuration file + :param debug: Enable verbose logging of http requests + :param enable_gzip: Enable Gzip compression for http requests. Currently, only the "Write" and "Query" endpoints + supports the Gzip compression. + :key config_name: Name of the configuration section of the configuration file + :key str proxy_headers: A dictionary containing headers that will be sent to the proxy. Could be used for proxy + authentication. + :key urllib3.util.retry.Retry retries: Set the default retry strategy that is used for all HTTP requests + except batching writes. As a default there is no one retry strategy. + :key ssl.SSLContext ssl_context: Specify a custom Python SSL Context for the TLS/ mTLS handshake. + Be aware that only delivered certificate/ key files or an SSL Context are + possible. + + The supported formats: + - https://docs.python.org/3/library/configparser.html + - https://toml.io/en/ + - https://www.json.org/json-en.html + + Configuration options: + - url + - org + - token + - timeout, + - verify_ssl + - ssl_ca_cert + - cert_file + - cert_key_file + - cert_key_password + - connection_pool_maxsize + - auth_basic + - profilers + - proxy + + + config.ini example:: + + [influx2] + url=http://localhost:8086 + org=my-org + token=my-token + timeout=6000 + connection_pool_maxsize=25 + auth_basic=false + profilers=query,operator + proxy=http:proxy.domain.org:8080 + + [tags] + id = 132-987-655 + customer = California Miner + data_center = ${env.data_center} + + config.toml example:: + + [influx2] + url = "http://localhost:8086" + token = "my-token" + org = "my-org" + timeout = 6000 + connection_pool_maxsize = 25 + auth_basic = false + profilers="query, operator" + proxy = "http://proxy.domain.org:8080" + + [tags] + id = "132-987-655" + customer = "California Miner" + data_center = "${env.data_center}" + + config.json example:: + + { + "url": "http://localhost:8086", + "token": "my-token", + "org": "my-org", + "active": true, + "timeout": 6000, + "connection_pool_maxsize": 55, + "auth_basic": false, + "profilers": "query, operator", + "tags": { + "id": "132-987-655", + "customer": "California Miner", + "data_center": "${env.data_center}" + } + } + + """ + return InfluxDBClient._from_config_file(config_file=config_file, debug=debug, enable_gzip=enable_gzip, **kwargs) + + @classmethod + def from_env_properties(cls, debug=None, enable_gzip=False, **kwargs): + """ + Configure client via environment properties. + + :param debug: Enable verbose logging of http requests + :param enable_gzip: Enable Gzip compression for http requests. Currently, only the "Write" and "Query" endpoints + supports the Gzip compression. + :key str proxy: Set this to configure the http proxy to be used (ex. http://localhost:3128) + :key str proxy_headers: A dictionary containing headers that will be sent to the proxy. Could be used for proxy + authentication. + :key urllib3.util.retry.Retry retries: Set the default retry strategy that is used for all HTTP requests + except batching writes. As a default there is no one retry strategy. + :key ssl.SSLContext ssl_context: Specify a custom Python SSL Context for the TLS/ mTLS handshake. + Be aware that only delivered certificate/ key files or an SSL Context are + possible. + + Supported environment properties: + - INFLUXDB_V2_URL + - INFLUXDB_V2_ORG + - INFLUXDB_V2_TOKEN + - INFLUXDB_V2_TIMEOUT + - INFLUXDB_V2_VERIFY_SSL + - INFLUXDB_V2_SSL_CA_CERT + - INFLUXDB_V2_CERT_FILE + - INFLUXDB_V2_CERT_KEY_FILE + - INFLUXDB_V2_CERT_KEY_PASSWORD + - INFLUXDB_V2_CONNECTION_POOL_MAXSIZE + - INFLUXDB_V2_AUTH_BASIC + - INFLUXDB_V2_PROFILERS + - INFLUXDB_V2_TAG + """ + return InfluxDBClient._from_env_properties(debug=debug, enable_gzip=enable_gzip, **kwargs) + + def write_api(self, write_options=WriteOptions(), point_settings=PointSettings(), **kwargs) -> WriteApi: + """ + Create Write API instance. + + Example: + .. code-block:: python + + from influxdb_client import InfluxDBClient + from influxdb_client.client.write_api import SYNCHRONOUS + + + # Initialize SYNCHRONOUS instance of WriteApi + with InfluxDBClient(url="http://localhost:8086", token="my-token", org="my-org") as client: + write_api = client.write_api(write_options=SYNCHRONOUS) + + If you would like to use a **background batching**, you have to configure client like this: + + .. code-block:: python + + from influxdb_client import InfluxDBClient + + # Initialize background batching instance of WriteApi + with InfluxDBClient(url="http://localhost:8086", token="my-token", org="my-org") as client: + with client.write_api() as write_api: + pass + + There is also possibility to use callbacks to notify about state of background batches: + + .. code-block:: python + + from influxdb_client import InfluxDBClient + from influxdb_client.client.exceptions import InfluxDBError + + + class BatchingCallback(object): + + def success(self, conf: (str, str, str), data: str): + print(f"Written batch: {conf}, data: {data}") + + def error(self, conf: (str, str, str), data: str, exception: InfluxDBError): + print(f"Cannot write batch: {conf}, data: {data} due: {exception}") + + def retry(self, conf: (str, str, str), data: str, exception: InfluxDBError): + print(f"Retryable error occurs for batch: {conf}, data: {data} retry: {exception}") + + + with InfluxDBClient(url="http://localhost:8086", token="my-token", org="my-org") as client: + callback = BatchingCallback() + with client.write_api(success_callback=callback.success, + error_callback=callback.error, + retry_callback=callback.retry) as write_api: + pass + + :param write_options: Write API configuration + :param point_settings: settings to store default tags + :key success_callback: The callable ``callback`` to run after having successfully written a batch. + + The callable must accept two arguments: + - `Tuple`: ``(bucket, organization, precision)`` + - `str`: written data + + **[batching mode]** + + :key error_callback: The callable ``callback`` to run after having unsuccessfully written a batch. + + The callable must accept three arguments: + - `Tuple`: ``(bucket, organization, precision)`` + - `str`: written data + - `Exception`: an occurred error + + **[batching mode]** + :key retry_callback: The callable ``callback`` to run after retryable error occurred. + + The callable must accept three arguments: + - `Tuple`: ``(bucket, organization, precision)`` + - `str`: written data + - `Exception`: an retryable error + + **[batching mode]** + :return: write api instance + """ + return WriteApi(influxdb_client=self, write_options=write_options, point_settings=point_settings, **kwargs) + + def query_api(self, query_options: QueryOptions = QueryOptions()) -> QueryApi: + """ + Create an Query API instance. + + :param query_options: optional query api configuration + :return: Query api instance + """ + return QueryApi(self, query_options) + + def invokable_scripts_api(self) -> InvokableScriptsApi: + """ + Create an InvokableScripts API instance. + + :return: InvokableScripts API instance + """ + return InvokableScriptsApi(self) + + def close(self): + """Shutdown the client.""" + self.__del__() + + def __del__(self): + """Shutdown the client.""" + if self.api_client: + self.api_client.__del__() + self.api_client = None + + def buckets_api(self) -> BucketsApi: + """ + Create the Bucket API instance. + + :return: buckets api + """ + return BucketsApi(self) + + def authorizations_api(self) -> AuthorizationsApi: + """ + Create the Authorizations API instance. + + :return: authorizations api + """ + return AuthorizationsApi(self) + + def users_api(self) -> UsersApi: + """ + Create the Users API instance. + + :return: users api + """ + return UsersApi(self) + + def organizations_api(self) -> OrganizationsApi: + """ + Create the Organizations API instance. + + :return: organizations api + """ + return OrganizationsApi(self) + + def tasks_api(self) -> TasksApi: + """ + Create the Tasks API instance. + + :return: tasks api + """ + return TasksApi(self) + + def labels_api(self) -> LabelsApi: + """ + Create the Labels API instance. + + :return: labels api + """ + return LabelsApi(self) + + def health(self) -> HealthCheck: + """ + Get the health of an instance. + + :return: HealthCheck + """ + warnings.warn("This method is deprecated. Call 'ping()' instead.", DeprecationWarning) + health_service = HealthService(self.api_client) + + try: + health = health_service.get_health() + return health + except Exception as e: + return HealthCheck(name="influxdb", message=str(e), status="fail") + + def ping(self) -> bool: + """ + Return the status of InfluxDB instance. + + :return: The status of InfluxDB. + """ + ping_service = PingService(self.api_client) + + try: + ping_service.get_ping() + return True + except Exception as ex: + logger.debug("Unexpected error during /ping: %s", ex) + return False + + def version(self) -> str: + """ + Return the version of the connected InfluxDB Server. + + :return: The version of InfluxDB. + """ + ping_service = PingService(self.api_client) + + response = ping_service.get_ping_with_http_info(_return_http_data_only=False) + + return ping_service.response_header(response) + + def build(self) -> str: + """ + Return the build type of the connected InfluxDB Server. + + :return: The type of InfluxDB build. + """ + ping_service = PingService(self.api_client) + + return ping_service.build_type() + + def ready(self) -> Ready: + """ + Get The readiness of the InfluxDB 2.0. + + :return: Ready + """ + ready_service = ReadyService(self.api_client) + return ready_service.get_ready() + + def delete_api(self) -> DeleteApi: + """ + Get the delete metrics API instance. + + :return: delete api + """ + return DeleteApi(self) diff --git a/frogpilot/third_party/influxdb_client/client/influxdb_client_async.py b/frogpilot/third_party/influxdb_client/client/influxdb_client_async.py new file mode 100644 index 000000000..a8a2d1734 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/influxdb_client_async.py @@ -0,0 +1,301 @@ +"""InfluxDBClientAsync is client for API defined in https://github.com/influxdata/openapi/blob/master/contracts/oss.yml.""" # noqa: E501 +import logging +import sys + +from influxdb_client import PingService +from influxdb_client.client._base import _BaseClient +from influxdb_client.client.delete_api_async import DeleteApiAsync +from influxdb_client.client.query_api import QueryOptions +from influxdb_client.client.query_api_async import QueryApiAsync +from influxdb_client.client.write_api import PointSettings +from influxdb_client.client.write_api_async import WriteApiAsync + +logger = logging.getLogger('influxdb_client.client.influxdb_client_async') + + +class InfluxDBClientAsync(_BaseClient): + """InfluxDBClientAsync is client for InfluxDB v2.""" + + def __init__(self, url, token: str = None, org: str = None, debug=None, timeout=10_000, enable_gzip=False, + **kwargs) -> None: + """ + Initialize defaults. + + :param url: InfluxDB server API url (ex. http://localhost:8086). + :param token: ``token`` to authenticate to the InfluxDB 2.x + :param org: organization name (used as a default in Query, Write and Delete API) + :param debug: enable verbose logging of http requests + :param timeout: The maximal number of milliseconds for the whole HTTP request including + connection establishment, request sending and response reading. + It can also be a :class:`~aiohttp.ClientTimeout` which is directly pass to ``aiohttp``. + :param enable_gzip: Enable Gzip compression for http requests. Currently, only the "Write" and "Query" endpoints + supports the Gzip compression. + :key bool verify_ssl: Set this to false to skip verifying SSL certificate when calling API from https server. + :key str ssl_ca_cert: Set this to customize the certificate file to verify the peer. + :key str cert_file: Path to the certificate that will be used for mTLS authentication. + :key str cert_key_file: Path to the file contains private key for mTLS certificate. + :key str cert_key_password: String or function which returns password for decrypting the mTLS private key. + :key ssl.SSLContext ssl_context: Specify a custom Python SSL Context for the TLS/ mTLS handshake. + Be aware that only delivered certificate/ key files or an SSL Context are + possible. + :key str proxy: Set this to configure the http proxy to be used (ex. http://localhost:3128) + :key str proxy_headers: A dictionary containing headers that will be sent to the proxy. Could be used for proxy + authentication. + :key int connection_pool_maxsize: The total number of simultaneous connections. + Defaults to "multiprocessing.cpu_count() * 5". + :key bool auth_basic: Set this to true to enable basic authentication when talking to a InfluxDB 1.8.x that + does not use auth-enabled but is protected by a reverse proxy with basic authentication. + (defaults to false, don't set to true when talking to InfluxDB 2) + :key str username: ``username`` to authenticate via username and password credentials to the InfluxDB 2.x + :key str password: ``password`` to authenticate via username and password credentials to the InfluxDB 2.x + :key bool allow_redirects: If set to ``False``, do not follow HTTP redirects. ``True`` by default. + :key int max_redirects: Maximum number of HTTP redirects to follow. ``10`` by default. + :key dict client_session_kwargs: Additional configuration arguments for :class:`~aiohttp.ClientSession` + :key type client_session_type: Type of aiohttp client to use. Useful for third party wrappers like + ``aiohttp-retry``. :class:`~aiohttp.ClientSession` by default. + :key list[str] profilers: list of enabled Flux profilers + """ + super().__init__(url=url, token=token, org=org, debug=debug, timeout=timeout, enable_gzip=enable_gzip, + http_client_logger="aiohttp.client", **kwargs) + + # compatibility with Python 3.6 + if sys.version_info[:2] >= (3, 7): + from asyncio import get_running_loop + else: + from asyncio import _get_running_loop as get_running_loop + + # check present asynchronous context + try: + loop = get_running_loop() + # compatibility with Python 3.6 + if loop is None: + raise RuntimeError('no running event loop') + except RuntimeError: + from influxdb_client.client.exceptions import InfluxDBError + message = "The async client should be initialised inside async coroutine " \ + "otherwise there can be unexpected behaviour." + raise InfluxDBError(response=None, message=message) + + from .._async.api_client import ApiClientAsync + self.api_client = ApiClientAsync(configuration=self.conf, header_name=self.auth_header_name, + header_value=self.auth_header_value, **kwargs) + + async def __aenter__(self) -> 'InfluxDBClientAsync': + """ + Enter the runtime context related to this object. + + return: self instance + """ + return self + + async def __aexit__(self, exc_type, exc, tb) -> None: + """Shutdown the client.""" + await self.close() + + async def close(self): + """Shutdown the client.""" + if self.api_client: + await self.api_client.close() + self.api_client = None + + @classmethod + def from_config_file(cls, config_file: str = "config.ini", debug=None, enable_gzip=False, **kwargs): + """ + Configure client via configuration file. The configuration has to be under 'influx' section. + + :param config_file: Path to configuration file + :param debug: Enable verbose logging of http requests + :param enable_gzip: Enable Gzip compression for http requests. Currently, only the "Write" and "Query" endpoints + supports the Gzip compression. + :key config_name: Name of the configuration section of the configuration file + :key str proxy_headers: A dictionary containing headers that will be sent to the proxy. Could be used for proxy + authentication. + :key urllib3.util.retry.Retry retries: Set the default retry strategy that is used for all HTTP requests + except batching writes. As a default there is no one retry strategy. + :key ssl.SSLContext ssl_context: Specify a custom Python SSL Context for the TLS/ mTLS handshake. + Be aware that only delivered certificate/ key files or an SSL Context are + possible. + + The supported formats: + - https://docs.python.org/3/library/configparser.html + - https://toml.io/en/ + - https://www.json.org/json-en.html + + Configuration options: + - url + - org + - token + - timeout, + - verify_ssl + - ssl_ca_cert + - cert_file + - cert_key_file + - cert_key_password + - connection_pool_maxsize + - auth_basic + - profilers + - proxy + + + config.ini example:: + + [influx2] + url=http://localhost:8086 + org=my-org + token=my-token + timeout=6000 + connection_pool_maxsize=25 + auth_basic=false + profilers=query,operator + proxy=http:proxy.domain.org:8080 + + [tags] + id = 132-987-655 + customer = California Miner + data_center = ${env.data_center} + + config.toml example:: + + [influx2] + url = "http://localhost:8086" + token = "my-token" + org = "my-org" + timeout = 6000 + connection_pool_maxsize = 25 + auth_basic = false + profilers="query, operator" + proxy = "http://proxy.domain.org:8080" + + [tags] + id = "132-987-655" + customer = "California Miner" + data_center = "${env.data_center}" + + config.json example:: + + { + "url": "http://localhost:8086", + "token": "my-token", + "org": "my-org", + "active": true, + "timeout": 6000, + "connection_pool_maxsize": 55, + "auth_basic": false, + "profilers": "query, operator", + "tags": { + "id": "132-987-655", + "customer": "California Miner", + "data_center": "${env.data_center}" + } + } + + """ + return InfluxDBClientAsync._from_config_file(config_file=config_file, debug=debug, + enable_gzip=enable_gzip, **kwargs) + + @classmethod + def from_env_properties(cls, debug=None, enable_gzip=False, **kwargs): + """ + Configure client via environment properties. + + :param debug: Enable verbose logging of http requests + :param enable_gzip: Enable Gzip compression for http requests. Currently, only the "Write" and "Query" endpoints + supports the Gzip compression. + :key str proxy: Set this to configure the http proxy to be used (ex. http://localhost:3128) + :key str proxy_headers: A dictionary containing headers that will be sent to the proxy. Could be used for proxy + authentication. + :key urllib3.util.retry.Retry retries: Set the default retry strategy that is used for all HTTP requests + except batching writes. As a default there is no one retry strategy. + :key ssl.SSLContext ssl_context: Specify a custom Python SSL Context for the TLS/ mTLS handshake. + Be aware that only delivered certificate/ key files or an SSL Context are + possible. + + + Supported environment properties: + - INFLUXDB_V2_URL + - INFLUXDB_V2_ORG + - INFLUXDB_V2_TOKEN + - INFLUXDB_V2_TIMEOUT + - INFLUXDB_V2_VERIFY_SSL + - INFLUXDB_V2_SSL_CA_CERT + - INFLUXDB_V2_CERT_FILE + - INFLUXDB_V2_CERT_KEY_FILE + - INFLUXDB_V2_CERT_KEY_PASSWORD + - INFLUXDB_V2_CONNECTION_POOL_MAXSIZE + - INFLUXDB_V2_AUTH_BASIC + - INFLUXDB_V2_PROFILERS + - INFLUXDB_V2_TAG + """ + return InfluxDBClientAsync._from_env_properties(debug=debug, enable_gzip=enable_gzip, **kwargs) + + async def ping(self) -> bool: + """ + Return the status of InfluxDB instance. + + :return: The status of InfluxDB. + """ + ping_service = PingService(self.api_client) + + try: + await ping_service.get_ping_async() + return True + except Exception as ex: + logger.debug("Unexpected error during /ping: %s", ex) + raise ex + + async def version(self) -> str: + """ + Return the version of the connected InfluxDB Server. + + :return: The version of InfluxDB. + """ + ping_service = PingService(self.api_client) + + response = await ping_service.get_ping_async(_return_http_data_only=False) + return ping_service.response_header(response) + + async def build(self) -> str: + """ + Return the build type of the connected InfluxDB Server. + + :return: The type of InfluxDB build. + """ + ping_service = PingService(self.api_client) + + return await ping_service.build_type_async() + + def query_api(self, query_options: QueryOptions = QueryOptions()) -> QueryApiAsync: + """ + Create an asynchronous Query API instance. + + :param query_options: optional query api configuration + :return: Query api instance + """ + return QueryApiAsync(self, query_options) + + def write_api(self, point_settings=PointSettings()) -> WriteApiAsync: + """ + Create an asynchronous Write API instance. + + Example: + .. code-block:: python + + from influxdb_client_async import InfluxDBClientAsync + + + # Initialize async/await instance of Write API + async with InfluxDBClientAsync(url="http://localhost:8086", token="my-token", org="my-org") as client: + write_api = client.write_api() + + :param point_settings: settings to store default tags + :return: write api instance + """ + return WriteApiAsync(influxdb_client=self, point_settings=point_settings) + + def delete_api(self) -> DeleteApiAsync: + """ + Get the asynchronous delete metrics API instance. + + :return: delete api + """ + return DeleteApiAsync(self) diff --git a/frogpilot/third_party/influxdb_client/client/invokable_scripts_api.py b/frogpilot/third_party/influxdb_client/client/invokable_scripts_api.py new file mode 100644 index 000000000..cf5df2807 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/invokable_scripts_api.py @@ -0,0 +1,293 @@ +""" +Use API invokable scripts to create custom InfluxDB API endpoints that query, process, and shape data. + +API invokable scripts let you assign scripts to API endpoints and then execute them as standard REST operations +in InfluxDB Cloud. +""" + +from typing import List, Iterator, Generator, Any + +from influxdb_client import Script, InvokableScriptsService, ScriptCreateRequest, ScriptUpdateRequest, \ + ScriptInvocationParams +from influxdb_client.client._base import _BaseQueryApi +from influxdb_client.client.flux_csv_parser import FluxResponseMetadataMode +from influxdb_client.client.flux_table import FluxRecord, TableList, CSVIterator + + +class InvokableScriptsApi(_BaseQueryApi): + """Use API invokable scripts to create custom InfluxDB API endpoints that query, process, and shape data.""" + + def __init__(self, influxdb_client): + """Initialize defaults.""" + self._influxdb_client = influxdb_client + self._invokable_scripts_service = InvokableScriptsService(influxdb_client.api_client) + + def create_script(self, create_request: ScriptCreateRequest) -> Script: + """Create a script. + + :param ScriptCreateRequest create_request: The script to create. (required) + :return: The created script. + """ + return self._invokable_scripts_service.post_scripts(script_create_request=create_request) + + def update_script(self, script_id: str, update_request: ScriptUpdateRequest) -> Script: + """Update a script. + + :param str script_id: The ID of the script to update. (required) + :param ScriptUpdateRequest update_request: Script updates to apply (required) + :return: The updated. + """ + return self._invokable_scripts_service.patch_scripts_id(script_id=script_id, + script_update_request=update_request) + + def delete_script(self, script_id: str) -> None: + """Delete a script. + + :param str script_id: The ID of the script to delete. (required) + :return: None + """ + self._invokable_scripts_service.delete_scripts_id(script_id=script_id) + + def find_scripts(self, **kwargs): + """List scripts. + + :key int limit: The number of scripts to return. + :key int offset: The offset for pagination. + :return: List of scripts. + :rtype: list[Script] + """ + return self._invokable_scripts_service.get_scripts(**kwargs).scripts + + def invoke_script(self, script_id: str, params: dict = None) -> TableList: + """ + Invoke synchronously a script and return result as a TableList. + + The bind parameters referenced in the script are substitutes with `params` key-values sent in the request body. + + :param str script_id: The ID of the script to invoke. (required) + :param params: bind parameters + :return: :class:`~influxdb_client.client.flux_table.FluxTable` list wrapped into + :class:`~influxdb_client.client.flux_table.TableList` + :rtype: TableList + + Serialization the query results to flattened list of values via :func:`~influxdb_client.client.flux_table.TableList.to_values`: + + .. code-block:: python + + from influxdb_client import InfluxDBClient + + with InfluxDBClient(url="https://us-west-2-1.aws.cloud2.influxdata.com", token="my-token", org="my-org") as client: + + # Query: using Table structure + tables = client.invokable_scripts_api().invoke_script(script_id="script-id") + + # Serialize to values + output = tables.to_values(columns=['location', '_time', '_value']) + print(output) + + .. code-block:: python + + [ + ['New York', datetime.datetime(2022, 6, 7, 11, 3, 22, 917593, tzinfo=tzutc()), 24.3], + ['Prague', datetime.datetime(2022, 6, 7, 11, 3, 22, 917593, tzinfo=tzutc()), 25.3], + ... + ] + + Serialization the query results to JSON via :func:`~influxdb_client.client.flux_table.TableList.to_json`: + + .. code-block:: python + + from influxdb_client import InfluxDBClient + + with InfluxDBClient(url="https://us-west-2-1.aws.cloud2.influxdata.com", token="my-token", org="my-org") as client: + + # Query: using Table structure + tables = client.invokable_scripts_api().invoke_script(script_id="script-id") + + # Serialize to JSON + output = tables.to_json(indent=5) + print(output) + + .. code-block:: javascript + + [ + { + "_measurement": "mem", + "_start": "2021-06-23T06:50:11.897825+00:00", + "_stop": "2021-06-25T06:50:11.897825+00:00", + "_time": "2020-02-27T16:20:00.897825+00:00", + "region": "north", + "_field": "usage", + "_value": 15 + }, + { + "_measurement": "mem", + "_start": "2021-06-23T06:50:11.897825+00:00", + "_stop": "2021-06-25T06:50:11.897825+00:00", + "_time": "2020-02-27T16:20:01.897825+00:00", + "region": "west", + "_field": "usage", + "_value": 10 + }, + ... + ] + """ # noqa: E501 + response = self._invokable_scripts_service \ + .post_scripts_id_invoke(script_id=script_id, + script_invocation_params=ScriptInvocationParams(params=params), + async_req=False, + _preload_content=False, + _return_http_data_only=False) + return self._to_tables(response, query_options=None, response_metadata_mode=FluxResponseMetadataMode.only_names) + + def invoke_script_stream(self, script_id: str, params: dict = None) -> Generator['FluxRecord', Any, None]: + """ + Invoke synchronously a script and return result as a Generator['FluxRecord']. + + The bind parameters referenced in the script are substitutes with `params` key-values sent in the request body. + + :param str script_id: The ID of the script to invoke. (required) + :param params: bind parameters + :return: Stream of FluxRecord. + :rtype: Generator['FluxRecord'] + """ + response = self._invokable_scripts_service \ + .post_scripts_id_invoke(script_id=script_id, + script_invocation_params=ScriptInvocationParams(params=params), + async_req=False, + _preload_content=False, + _return_http_data_only=False) + + return self._to_flux_record_stream(response, query_options=None, + response_metadata_mode=FluxResponseMetadataMode.only_names) + + def invoke_script_data_frame(self, script_id: str, params: dict = None, data_frame_index: List[str] = None): + """ + Invoke synchronously a script and return Pandas DataFrame. + + The bind parameters referenced in the script are substitutes with `params` key-values sent in the request body. + + .. note:: If the ``script`` returns tables with differing schemas than the client generates a :class:`~DataFrame` for each of them. + + :param str script_id: The ID of the script to invoke. (required) + :param List[str] data_frame_index: The list of columns that are used as DataFrame index. + :param params: bind parameters + :return: :class:`~DataFrame` or :class:`~List[DataFrame]` + + .. warning:: For the optimal processing of the query results use the ``pivot() function`` which align results as a table. + + .. code-block:: text + + from(bucket:"my-bucket") + |> range(start: -5m, stop: now()) + |> filter(fn: (r) => r._measurement == "mem") + |> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value") + + For more info see: + - https://docs.influxdata.com/resources/videos/pivots-in-flux/ + - https://docs.influxdata.com/flux/latest/stdlib/universe/pivot/ + - https://docs.influxdata.com/flux/latest/stdlib/influxdata/influxdb/schema/fieldsascols/ + """ # noqa: E501 + _generator = self.invoke_script_data_frame_stream(script_id=script_id, + params=params, + data_frame_index=data_frame_index) + return self._to_data_frames(_generator) + + def invoke_script_data_frame_stream(self, script_id: str, params: dict = None, data_frame_index: List[str] = None): + """ + Invoke synchronously a script and return stream of Pandas DataFrame as a Generator['pd.DataFrame']. + + The bind parameters referenced in the script are substitutes with `params` key-values sent in the request body. + + .. note:: If the ``script`` returns tables with differing schemas than the client generates a :class:`~DataFrame` for each of them. + + :param str script_id: The ID of the script to invoke. (required) + :param List[str] data_frame_index: The list of columns that are used as DataFrame index. + :param params: bind parameters + :return: :class:`~Generator[DataFrame]` + + .. warning:: For the optimal processing of the query results use the ``pivot() function`` which align results as a table. + + .. code-block:: text + + from(bucket:"my-bucket") + |> range(start: -5m, stop: now()) + |> filter(fn: (r) => r._measurement == "mem") + |> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value") + + For more info see: + - https://docs.influxdata.com/resources/videos/pivots-in-flux/ + - https://docs.influxdata.com/flux/latest/stdlib/universe/pivot/ + - https://docs.influxdata.com/flux/latest/stdlib/influxdata/influxdb/schema/fieldsascols/ + """ # noqa: E501 + response = self._invokable_scripts_service \ + .post_scripts_id_invoke(script_id=script_id, + script_invocation_params=ScriptInvocationParams(params=params), + async_req=False, + _preload_content=False, + _return_http_data_only=False) + + return self._to_data_frame_stream(data_frame_index, response, query_options=None, + response_metadata_mode=FluxResponseMetadataMode.only_names) + + def invoke_script_csv(self, script_id: str, params: dict = None) -> CSVIterator: + """ + Invoke synchronously a script and return result as a CSV iterator. Each iteration returns a row of the CSV file. + + The bind parameters referenced in the script are substitutes with `params` key-values sent in the request body. + + :param str script_id: The ID of the script to invoke. (required) + :param params: bind parameters + :return: :class:`~Iterator[List[str]]` wrapped into :class:`~influxdb_client.client.flux_table.CSVIterator` + :rtype: CSVIterator + + Serialization the query results to flattened list of values via :func:`~influxdb_client.client.flux_table.CSVIterator.to_values`: + + .. code-block:: python + + from influxdb_client import InfluxDBClient + + with InfluxDBClient(url="http://localhost:8086", token="my-token", org="my-org") as client: + + # Query: using CSV iterator + csv_iterator = client.invokable_scripts_api().invoke_script_csv(script_id="script-id") + + # Serialize to values + output = csv_iterator.to_values() + print(output) + + .. code-block:: python + + [ + ['', 'result', 'table', '_start', '_stop', '_time', '_value', '_field', '_measurement', 'location'] + ['', '', '0', '2022-06-16', '2022-06-16', '2022-06-16', '24.3', 'temperature', 'my_measurement', 'New York'] + ['', '', '1', '2022-06-16', '2022-06-16', '2022-06-16', '25.3', 'temperature', 'my_measurement', 'Prague'] + ... + ] + + """ # noqa: E501 + response = self._invokable_scripts_service \ + .post_scripts_id_invoke(script_id=script_id, + script_invocation_params=ScriptInvocationParams(params=params), + async_req=False, + _preload_content=False) + + return self._to_csv(response) + + def invoke_script_raw(self, script_id: str, params: dict = None) -> Iterator[List[str]]: + """ + Invoke synchronously a script and return result as raw unprocessed result as a str. + + The bind parameters referenced in the script are substitutes with `params` key-values sent in the request body. + + :param str script_id: The ID of the script to invoke. (required) + :param params: bind parameters + :return: Result as a str. + """ + response = self._invokable_scripts_service \ + .post_scripts_id_invoke(script_id=script_id, + script_invocation_params=ScriptInvocationParams(params=params), + async_req=False, + _preload_content=True) + + return response diff --git a/frogpilot/third_party/influxdb_client/client/labels_api.py b/frogpilot/third_party/influxdb_client/client/labels_api.py new file mode 100644 index 000000000..006cb90c2 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/labels_api.py @@ -0,0 +1,96 @@ +"""Labels are a way to add visual metadata to dashboards, tasks, and other items in the InfluxDB UI.""" + +from typing import List, Dict, Union + +from influxdb_client import LabelsService, LabelCreateRequest, Label, LabelUpdate + + +class LabelsApi(object): + """Implementation for '/api/v2/labels' endpoint.""" + + def __init__(self, influxdb_client): + """Initialize defaults.""" + self._influxdb_client = influxdb_client + self._service = LabelsService(influxdb_client.api_client) + + def create_label(self, name: str, org_id: str, properties: Dict[str, str] = None) -> Label: + """ + Create a new label. + + :param name: label name + :param org_id: organization id + :param properties: optional label properties + :return: created label + """ + label_request = LabelCreateRequest(org_id=org_id, name=name, properties=properties) + return self._service.post_labels(label_create_request=label_request).label + + def update_label(self, label: Label): + """ + Update an existing label name and properties. + + :param label: label + :return: the updated label + """ + label_update = LabelUpdate() + label_update.properties = label.properties + label_update.name = label.name + return self._service.patch_labels_id(label_id=label.id, label_update=label_update).label + + def delete_label(self, label: Union[str, Label]): + """ + Delete the label. + + :param label: label id or Label + """ + label_id = None + + if isinstance(label, str): + label_id = label + + if isinstance(label, Label): + label_id = label.id + + return self._service.delete_labels_id(label_id=label_id) + + def clone_label(self, cloned_name: str, label: Label) -> Label: + """ + Create the new instance of the label as a copy existing label. + + :param cloned_name: new label name + :param label: existing label + :return: clonned Label + """ + cloned_properties = None + if label.properties is not None: + cloned_properties = label.properties.copy() + + return self.create_label(name=cloned_name, properties=cloned_properties, org_id=label.org_id) + + def find_labels(self, **kwargs) -> List['Label']: + """ + Get all available labels. + + :key str org_id: The organization ID. + + :return: labels + """ + return self._service.get_labels(**kwargs).labels + + def find_label_by_id(self, label_id: str): + """ + Retrieve the label by id. + + :param label_id: + :return: Label + """ + return self._service.get_labels_id(label_id=label_id).label + + def find_label_by_org(self, org_id) -> List['Label']: + """ + Get the list of all labels for given organization. + + :param org_id: organization id + :return: list of labels + """ + return self._service.get_labels(org_id=org_id).labels diff --git a/frogpilot/third_party/influxdb_client/client/logging_handler.py b/frogpilot/third_party/influxdb_client/client/logging_handler.py new file mode 100644 index 000000000..445a828d5 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/logging_handler.py @@ -0,0 +1,64 @@ +"""Use the influxdb_client with python native logging.""" +import logging + +from influxdb_client import InfluxDBClient + + +class InfluxLoggingHandler(logging.Handler): + """ + InfluxLoggingHandler instances dispatch logging events to influx. + + There is no need to set a Formatter. + The raw input will be passed on to the influx write api. + """ + + DEFAULT_LOG_RECORD_KEYS = list(logging.makeLogRecord({}).__dict__.keys()) + ['message'] + + def __init__(self, *, url, token, org, bucket, client_args=None, write_api_args=None): + """ + Initialize defaults. + + The arguments `client_args` and `write_api_args` can be dicts of kwargs. + They are passed on to the InfluxDBClient and write_api calls respectively. + """ + super().__init__() + + self.bucket = bucket + + client_args = {} if client_args is None else client_args + self.client = InfluxDBClient(url=url, token=token, org=org, **client_args) + + write_api_args = {} if write_api_args is None else write_api_args + self.write_api = self.client.write_api(**write_api_args) + + def __del__(self): + """Make sure all resources are closed.""" + self.close() + + def close(self) -> None: + """Close the write_api, client and logger.""" + self.write_api.close() + self.client.close() + super().close() + + def emit(self, record: logging.LogRecord) -> None: + """Emit a record via the influxDB WriteApi.""" + try: + message = self.format(record) + extra = self._get_extra_values(record) + return self.write_api.write(record=message, **extra) + except (KeyboardInterrupt, SystemExit): + raise + except (Exception,): + self.handleError(record) + + def _get_extra_values(self, record: logging.LogRecord) -> dict: + """ + Extract all items from the record that were injected via extra. + + Example: `logging.debug(msg, extra={key: value, ...})`. + """ + extra = {'bucket': self.bucket} + extra.update({key: value for key, value in record.__dict__.items() + if key not in self.DEFAULT_LOG_RECORD_KEYS}) + return extra diff --git a/frogpilot/third_party/influxdb_client/client/organizations_api.py b/frogpilot/third_party/influxdb_client/client/organizations_api.py new file mode 100644 index 000000000..e25c6989d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/organizations_api.py @@ -0,0 +1,60 @@ +""" +An organization is a workspace for a group of users. + +All dashboards, tasks, buckets, members, etc., belong to an organization. +""" + +from influxdb_client import OrganizationsService, UsersService, Organization, PatchOrganizationRequest + + +class OrganizationsApi(object): + """Implementation for '/api/v2/orgs' endpoint.""" + + def __init__(self, influxdb_client): + """Initialize defaults.""" + self._influxdb_client = influxdb_client + self._organizations_service = OrganizationsService(influxdb_client.api_client) + self._users_service = UsersService(influxdb_client.api_client) + + def me(self): + """Return the current authenticated user.""" + user = self._users_service.get_me() + return user + + def find_organization(self, org_id): + """Retrieve an organization.""" + return self._organizations_service.get_orgs_id(org_id=org_id) + + def find_organizations(self, **kwargs): + """ + List all organizations. + + :key int offset: Offset for pagination + :key int limit: Limit for pagination + :key bool descending: + :key str org: Filter organizations to a specific organization name. + :key str org_id: Filter organizations to a specific organization ID. + :key str user_id: Filter organizations to a specific user ID. + """ + return self._organizations_service.get_orgs(**kwargs).orgs + + def create_organization(self, name: str = None, organization: Organization = None) -> Organization: + """Create an organization.""" + if organization is None: + organization = Organization(name=name) + return self._organizations_service.post_orgs(post_organization_request=organization) + + def update_organization(self, organization: Organization) -> Organization: + """Update an organization. + + :param organization: Organization update to apply (required) + :return: Organization + """ + request = PatchOrganizationRequest(name=organization.name, + description=organization.description) + + return self._organizations_service.patch_orgs_id(org_id=organization.id, patch_organization_request=request) + + def delete_organization(self, org_id: str): + """Delete an organization.""" + return self._organizations_service.delete_orgs_id(org_id=org_id) diff --git a/frogpilot/third_party/influxdb_client/client/query_api.py b/frogpilot/third_party/influxdb_client/client/query_api.py new file mode 100644 index 000000000..8611021da --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/query_api.py @@ -0,0 +1,310 @@ +""" +Querying InfluxDB by FluxLang. + +Flux is InfluxDataโ€™s functional data scripting language designed for querying, analyzing, and acting on data. +""" + +from typing import List, Generator, Any, Callable + +from influxdb_client import Dialect +from influxdb_client.client._base import _BaseQueryApi +from influxdb_client.client.flux_table import FluxRecord, TableList, CSVIterator + + +class QueryOptions(object): + """Query options.""" + + def __init__(self, profilers: List[str] = None, profiler_callback: Callable = None) -> None: + """ + Initialize query options. + + :param profilers: list of enabled flux profilers + :param profiler_callback: callback function return profilers (FluxRecord) + """ + self.profilers = profilers + self.profiler_callback = profiler_callback + + +class QueryApi(_BaseQueryApi): + """Implementation for '/api/v2/query' endpoint.""" + + def __init__(self, influxdb_client, query_options=QueryOptions()): + """ + Initialize query client. + + :param influxdb_client: influxdb client + """ + super().__init__(influxdb_client=influxdb_client, query_options=query_options) + + def query_csv(self, query: str, org=None, dialect: Dialect = _BaseQueryApi.default_dialect, params: dict = None) \ + -> CSVIterator: + """ + Execute the Flux query and return results as a CSV iterator. Each iteration returns a row of the CSV file. + + :param query: a Flux query + :param str, Organization org: specifies the organization for executing the query; + Take the ``ID``, ``Name`` or ``Organization``. + If not specified the default value from ``InfluxDBClient.org`` is used. + :param dialect: csv dialect format + :param params: bind parameters + :return: :class:`~Iterator[List[str]]` wrapped into :class:`~influxdb_client.client.flux_table.CSVIterator` + :rtype: CSVIterator + + Serialization the query results to flattened list of values via :func:`~influxdb_client.client.flux_table.CSVIterator.to_values`: + + .. code-block:: python + + from influxdb_client import InfluxDBClient + + with InfluxDBClient(url="http://localhost:8086", token="my-token", org="my-org") as client: + + # Query: using CSV iterator + csv_iterator = client.query_api().query_csv('from(bucket:"my-bucket") |> range(start: -10m)') + + # Serialize to values + output = csv_iterator.to_values() + print(output) + + .. code-block:: python + + [ + ['#datatype', 'string', 'long', 'dateTime:RFC3339', 'dateTime:RFC3339', 'dateTime:RFC3339', 'double', 'string', 'string', 'string'] + ['#group', 'false', 'false', 'true', 'true', 'false', 'false', 'true', 'true', 'true'] + ['#default', '_result', '', '', '', '', '', '', '', ''] + ['', 'result', 'table', '_start', '_stop', '_time', '_value', '_field', '_measurement', 'location'] + ['', '', '0', '2022-06-16', '2022-06-16', '2022-06-16', '24.3', 'temperature', 'my_measurement', 'New York'] + ['', '', '1', '2022-06-16', '2022-06-16', '2022-06-16', '25.3', 'temperature', 'my_measurement', 'Prague'] + ... + ] + + If you would like to turn off `Annotated CSV header's `_ you can use following code: + + .. code-block:: python + + from influxdb_client import InfluxDBClient, Dialect + + with InfluxDBClient(url="http://localhost:8086", token="my-token", org="my-org") as client: + + # Query: using CSV iterator + csv_iterator = client.query_api().query_csv('from(bucket:"my-bucket") |> range(start: -10m)', + dialect=Dialect(header=False, annotations=[])) + + for csv_line in csv_iterator: + print(csv_line) + + .. code-block:: python + + [ + ['', '_result', '0', '2022-06-16', '2022-06-16', '2022-06-16', '24.3', 'temperature', 'my_measurement', 'New York'] + ['', '_result', '1', '2022-06-16', '2022-06-16', '2022-06-16', '25.3', 'temperature', 'my_measurement', 'Prague'] + ... + ] + """ # noqa: E501 + org = self._org_param(org) + response = self._query_api.post_query(org=org, query=self._create_query(query, dialect, params), + async_req=False, _preload_content=False) + + return self._to_csv(response) + + def query_raw(self, query: str, org=None, dialect=_BaseQueryApi.default_dialect, params: dict = None): + """ + Execute synchronous Flux query and return result as raw unprocessed result as a str. + + :param query: a Flux query + :param str, Organization org: specifies the organization for executing the query; + Take the ``ID``, ``Name`` or ``Organization``. + If not specified the default value from ``InfluxDBClient.org`` is used. + :param dialect: csv dialect format + :param params: bind parameters + :return: str + """ + org = self._org_param(org) + result = self._query_api.post_query(org=org, query=self._create_query(query, dialect, params), async_req=False, + _preload_content=False) + + return result + + def query(self, query: str, org=None, params: dict = None) -> TableList: + """Execute synchronous Flux query and return result as a :class:`~influxdb_client.client.flux_table.FluxTable` list. + + :param query: the Flux query + :param str, Organization org: specifies the organization for executing the query; + Take the ``ID``, ``Name`` or ``Organization``. + If not specified the default value from ``InfluxDBClient.org`` is used. + :param params: bind parameters + :return: :class:`~influxdb_client.client.flux_table.FluxTable` list wrapped into + :class:`~influxdb_client.client.flux_table.TableList` + :rtype: TableList + + Serialization the query results to flattened list of values via :func:`~influxdb_client.client.flux_table.TableList.to_values`: + + .. code-block:: python + + from influxdb_client import InfluxDBClient + + with InfluxDBClient(url="http://localhost:8086", token="my-token", org="my-org") as client: + + # Query: using Table structure + tables = client.query_api().query('from(bucket:"my-bucket") |> range(start: -10m)') + + # Serialize to values + output = tables.to_values(columns=['location', '_time', '_value']) + print(output) + + .. code-block:: python + + [ + ['New York', datetime.datetime(2022, 6, 7, 11, 3, 22, 917593, tzinfo=tzutc()), 24.3], + ['Prague', datetime.datetime(2022, 6, 7, 11, 3, 22, 917593, tzinfo=tzutc()), 25.3], + ... + ] + + Serialization the query results to JSON via :func:`~influxdb_client.client.flux_table.TableList.to_json`: + + .. code-block:: python + + from influxdb_client import InfluxDBClient + + with InfluxDBClient(url="http://localhost:8086", token="my-token", org="my-org") as client: + + # Query: using Table structure + tables = client.query_api().query('from(bucket:"my-bucket") |> range(start: -10m)') + + # Serialize to JSON + output = tables.to_json(indent=5) + print(output) + + .. code-block:: javascript + + [ + { + "_measurement": "mem", + "_start": "2021-06-23T06:50:11.897825+00:00", + "_stop": "2021-06-25T06:50:11.897825+00:00", + "_time": "2020-02-27T16:20:00.897825+00:00", + "region": "north", + "_field": "usage", + "_value": 15 + }, + { + "_measurement": "mem", + "_start": "2021-06-23T06:50:11.897825+00:00", + "_stop": "2021-06-25T06:50:11.897825+00:00", + "_time": "2020-02-27T16:20:01.897825+00:00", + "region": "west", + "_field": "usage", + "_value": 10 + }, + ... + ] + """ # noqa: E501 + org = self._org_param(org) + + response = self._query_api.post_query(org=org, query=self._create_query(query, self.default_dialect, params), + async_req=False, _preload_content=False, _return_http_data_only=False) + + return self._to_tables(response, query_options=self._get_query_options()) + + def query_stream(self, query: str, org=None, params: dict = None) -> Generator['FluxRecord', Any, None]: + """ + Execute synchronous Flux query and return stream of FluxRecord as a Generator['FluxRecord']. + + :param query: the Flux query + :param str, Organization org: specifies the organization for executing the query; + Take the ``ID``, ``Name`` or ``Organization``. + If not specified the default value from ``InfluxDBClient.org`` is used. + :param params: bind parameters + :return: Generator['FluxRecord'] + """ + org = self._org_param(org) + + response = self._query_api.post_query(org=org, query=self._create_query(query, self.default_dialect, params), + async_req=False, _preload_content=False, _return_http_data_only=False) + return self._to_flux_record_stream(response, query_options=self._get_query_options()) + + def query_data_frame(self, query: str, org=None, data_frame_index: List[str] = None, params: dict = None, + use_extension_dtypes: bool = False): + """ + Execute synchronous Flux query and return Pandas DataFrame. + + .. note:: If the ``query`` returns tables with differing schemas than the client generates a :class:`~DataFrame` for each of them. + + :param query: the Flux query + :param str, Organization org: specifies the organization for executing the query; + Take the ``ID``, ``Name`` or ``Organization``. + If not specified the default value from ``InfluxDBClient.org`` is used. + :param data_frame_index: the list of columns that are used as DataFrame index + :param params: bind parameters + :param use_extension_dtypes: set to ``True`` to use panda's extension data types. + Useful for queries with ``pivot`` function. + When data has missing values, column data type may change (to ``object`` or ``float64``). + Nullable extension types (``Int64``, ``Float64``, ``boolean``) support ``panda.NA`` value. + For more info, see https://pandas.pydata.org/docs/user_guide/missing_data.html. + :return: :class:`~DataFrame` or :class:`~List[DataFrame]` + + .. warning:: For the optimal processing of the query results use the ``pivot() function`` which align results as a table. + + .. code-block:: text + + from(bucket:"my-bucket") + |> range(start: -5m, stop: now()) + |> filter(fn: (r) => r._measurement == "mem") + |> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value") + + For more info see: + - https://docs.influxdata.com/resources/videos/pivots-in-flux/ + - https://docs.influxdata.com/flux/latest/stdlib/universe/pivot/ + - https://docs.influxdata.com/flux/latest/stdlib/influxdata/influxdb/schema/fieldsascols/ + """ # noqa: E501 + _generator = self.query_data_frame_stream(query, org=org, data_frame_index=data_frame_index, params=params, + use_extension_dtypes=use_extension_dtypes) + return self._to_data_frames(_generator) + + def query_data_frame_stream(self, query: str, org=None, data_frame_index: List[str] = None, params: dict = None, + use_extension_dtypes: bool = False): + """ + Execute synchronous Flux query and return stream of Pandas DataFrame as a :class:`~Generator[DataFrame]`. + + .. note:: If the ``query`` returns tables with differing schemas than the client generates a :class:`~DataFrame` for each of them. + + :param query: the Flux query + :param str, Organization org: specifies the organization for executing the query; + Take the ``ID``, ``Name`` or ``Organization``. + If not specified the default value from ``InfluxDBClient.org`` is used. + :param data_frame_index: the list of columns that are used as DataFrame index + :param params: bind parameters + :param use_extension_dtypes: set to ``True`` to use panda's extension data types. + Useful for queries with ``pivot`` function. + When data has missing values, column data type may change (to ``object`` or ``float64``). + Nullable extension types (``Int64``, ``Float64``, ``boolean``) support ``panda.NA`` value. + For more info, see https://pandas.pydata.org/docs/user_guide/missing_data.html. + :return: :class:`~Generator[DataFrame]` + + .. warning:: For the optimal processing of the query results use the ``pivot() function`` which align results as a table. + + .. code-block:: text + + from(bucket:"my-bucket") + |> range(start: -5m, stop: now()) + |> filter(fn: (r) => r._measurement == "mem") + |> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value") + + For more info see: + - https://docs.influxdata.com/resources/videos/pivots-in-flux/ + - https://docs.influxdata.com/flux/latest/stdlib/universe/pivot/ + - https://docs.influxdata.com/flux/latest/stdlib/influxdata/influxdb/schema/fieldsascols/ + """ # noqa: E501 + org = self._org_param(org) + + response = self._query_api.post_query(org=org, query=self._create_query(query, self.default_dialect, params, + dataframe_query=True), + async_req=False, _preload_content=False, _return_http_data_only=False) + + return self._to_data_frame_stream(data_frame_index=data_frame_index, + response=response, + query_options=self._get_query_options(), + use_extension_dtypes=use_extension_dtypes) + + def __del__(self): + """Close QueryAPI.""" + pass diff --git a/frogpilot/third_party/influxdb_client/client/query_api_async.py b/frogpilot/third_party/influxdb_client/client/query_api_async.py new file mode 100644 index 000000000..b3b42cb4e --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/query_api_async.py @@ -0,0 +1,236 @@ +""" +Querying InfluxDB by FluxLang. + +Flux is InfluxDataโ€™s functional data scripting language designed for querying, analyzing, and acting on data. +""" +from typing import List, AsyncGenerator + +from influxdb_client.client._base import _BaseQueryApi +from influxdb_client.client.flux_table import FluxRecord, TableList +from influxdb_client.client.query_api import QueryOptions +from influxdb_client.rest import _UTF_8_encoding, ApiException +from .._async.rest import RESTResponseAsync + + +class QueryApiAsync(_BaseQueryApi): + """Asynchronous implementation for '/api/v2/query' endpoint.""" + + def __init__(self, influxdb_client, query_options=QueryOptions()): + """ + Initialize query client. + + :param influxdb_client: influxdb client + """ + super().__init__(influxdb_client=influxdb_client, query_options=query_options) + + async def query(self, query: str, org=None, params: dict = None) -> TableList: + """ + Execute asynchronous Flux query and return result as a :class:`~influxdb_client.client.flux_table.FluxTable` list. + + :param query: the Flux query + :param str, Organization org: specifies the organization for executing the query; + Take the ``ID``, ``Name`` or ``Organization``. + If not specified the default value from ``InfluxDBClientAsync.org`` is used. + :param params: bind parameters + :return: :class:`~influxdb_client.client.flux_table.FluxTable` list wrapped into + :class:`~influxdb_client.client.flux_table.TableList` + :rtype: TableList + + Serialization the query results to flattened list of values via :func:`~influxdb_client.client.flux_table.TableList.to_values`: + + .. code-block:: python + + from influxdb_client import InfluxDBClient + + async with InfluxDBClientAsync(url="http://localhost:8086", token="my-token", org="my-org") as client: + + # Query: using Table structure + tables = await client.query_api().query('from(bucket:"my-bucket") |> range(start: -10m)') + + # Serialize to values + output = tables.to_values(columns=['location', '_time', '_value']) + print(output) + + .. code-block:: python + + [ + ['New York', datetime.datetime(2022, 6, 7, 11, 3, 22, 917593, tzinfo=tzutc()), 24.3], + ['Prague', datetime.datetime(2022, 6, 7, 11, 3, 22, 917593, tzinfo=tzutc()), 25.3], + ... + ] + + Serialization the query results to JSON via :func:`~influxdb_client.client.flux_table.TableList.to_json`: + + .. code-block:: python + + from influxdb_client.client.influxdb_client_async import InfluxDBClientAsync + + async with InfluxDBClientAsync(url="http://localhost:8086", token="my-token", org="my-org") as client: + # Query: using Table structure + tables = await client.query_api().query('from(bucket:"my-bucket") |> range(start: -10m)') + + # Serialize to JSON + output = tables.to_json(indent=5) + print(output) + + .. code-block:: javascript + + [ + { + "_measurement": "mem", + "_start": "2021-06-23T06:50:11.897825+00:00", + "_stop": "2021-06-25T06:50:11.897825+00:00", + "_time": "2020-02-27T16:20:00.897825+00:00", + "region": "north", + "_field": "usage", + "_value": 15 + }, + { + "_measurement": "mem", + "_start": "2021-06-23T06:50:11.897825+00:00", + "_stop": "2021-06-25T06:50:11.897825+00:00", + "_time": "2020-02-27T16:20:01.897825+00:00", + "region": "west", + "_field": "usage", + "_value": 10 + }, + ... + ] + """ # noqa: E501 + org = self._org_param(org) + + response = await self._post_query(org=org, query=self._create_query(query, self.default_dialect, params)) + + return await self._to_tables_async(response, query_options=self._get_query_options()) + + async def query_stream(self, query: str, org=None, params: dict = None) -> AsyncGenerator['FluxRecord', None]: + """ + Execute asynchronous Flux query and return stream of :class:`~influxdb_client.client.flux_table.FluxRecord` as an AsyncGenerator[:class:`~influxdb_client.client.flux_table.FluxRecord`]. + + :param query: the Flux query + :param str, Organization org: specifies the organization for executing the query; + Take the ``ID``, ``Name`` or ``Organization``. + If not specified the default value from ``InfluxDBClientAsync.org`` is used. + :param params: bind parameters + :return: AsyncGenerator[:class:`~influxdb_client.client.flux_table.FluxRecord`] + """ # noqa: E501 + org = self._org_param(org) + + response = await self._post_query(org=org, query=self._create_query(query, self.default_dialect, params)) + + return await self._to_flux_record_stream_async(response, query_options=self._get_query_options()) + + async def query_data_frame(self, query: str, org=None, data_frame_index: List[str] = None, params: dict = None, + use_extension_dtypes: bool = False): + """ + Execute asynchronous Flux query and return :class:`~pandas.core.frame.DataFrame`. + + .. note:: If the ``query`` returns tables with differing schemas than the client generates a :class:`~DataFrame` for each of them. + + :param query: the Flux query + :param str, Organization org: specifies the organization for executing the query; + Take the ``ID``, ``Name`` or ``Organization``. + If not specified the default value from ``InfluxDBClientAsync.org`` is used. + :param data_frame_index: the list of columns that are used as DataFrame index + :param params: bind parameters + :param use_extension_dtypes: set to ``True`` to use panda's extension data types. + Useful for queries with ``pivot`` function. + When data has missing values, column data type may change (to ``object`` or ``float64``). + Nullable extension types (``Int64``, ``Float64``, ``boolean``) support ``panda.NA`` value. + For more info, see https://pandas.pydata.org/docs/user_guide/missing_data.html. + :return: :class:`~DataFrame` or :class:`~List[DataFrame]` + + .. warning:: For the optimal processing of the query results use the ``pivot() function`` which align results as a table. + + .. code-block:: text + + from(bucket:"my-bucket") + |> range(start: -5m, stop: now()) + |> filter(fn: (r) => r._measurement == "mem") + |> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value") + + For more info see: + - https://docs.influxdata.com/resources/videos/pivots-in-flux/ + - https://docs.influxdata.com/flux/latest/stdlib/universe/pivot/ + - https://docs.influxdata.com/flux/latest/stdlib/influxdata/influxdb/schema/fieldsascols/ + """ # noqa: E501 + _generator = await self.query_data_frame_stream(query, org=org, data_frame_index=data_frame_index, + params=params, use_extension_dtypes=use_extension_dtypes) + + dataframes = [] + async for dataframe in _generator: + dataframes.append(dataframe) + + return self._to_data_frames(dataframes) + + async def query_data_frame_stream(self, query: str, org=None, data_frame_index: List[str] = None, + params: dict = None, use_extension_dtypes: bool = False): + """ + Execute asynchronous Flux query and return stream of :class:`~pandas.core.frame.DataFrame` as an AsyncGenerator[:class:`~pandas.core.frame.DataFrame`]. + + .. note:: If the ``query`` returns tables with differing schemas than the client generates a :class:`~DataFrame` for each of them. + + :param query: the Flux query + :param str, Organization org: specifies the organization for executing the query; + Take the ``ID``, ``Name`` or ``Organization``. + If not specified the default value from ``InfluxDBClientAsync.org`` is used. + :param data_frame_index: the list of columns that are used as DataFrame index + :param params: bind parameters + :param use_extension_dtypes: set to ``True`` to use panda's extension data types. + Useful for queries with ``pivot`` function. + When data has missing values, column data type may change (to ``object`` or ``float64``). + Nullable extension types (``Int64``, ``Float64``, ``boolean``) support ``panda.NA`` value. + For more info, see https://pandas.pydata.org/docs/user_guide/missing_data.html. + :return: :class:`AsyncGenerator[:class:`DataFrame`]` + + .. warning:: For the optimal processing of the query results use the ``pivot() function`` which align results as a table. + + .. code-block:: text + + from(bucket:"my-bucket") + |> range(start: -5m, stop: now()) + |> filter(fn: (r) => r._measurement == "mem") + |> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value") + + For more info see: + - https://docs.influxdata.com/resources/videos/pivots-in-flux/ + - https://docs.influxdata.com/flux/latest/stdlib/universe/pivot/ + - https://docs.influxdata.com/flux/latest/stdlib/influxdata/influxdb/schema/fieldsascols/ + """ # noqa: E501 + org = self._org_param(org) + + response = await self._post_query(org=org, query=self._create_query(query, self.default_dialect, params, + dataframe_query=True)) + + return await self._to_data_frame_stream_async(data_frame_index=data_frame_index, response=response, + query_options=self._get_query_options(), + use_extension_dtypes=use_extension_dtypes) + + async def query_raw(self, query: str, org=None, dialect=_BaseQueryApi.default_dialect, params: dict = None): + """ + Execute asynchronous Flux query and return result as raw unprocessed result as a str. + + :param query: a Flux query + :param str, Organization org: specifies the organization for executing the query; + Take the ``ID``, ``Name`` or ``Organization``. + If not specified the default value from ``InfluxDBClientAsync.org`` is used. + :param dialect: csv dialect format + :param params: bind parameters + :return: :class:`~str` + """ + org = self._org_param(org) + result = await self._post_query(org=org, query=self._create_query(query, dialect, params)) + raw_bytes = await result.read() + return raw_bytes.decode(_UTF_8_encoding) + + async def _post_query(self, org, query): + response = await self._query_api.post_query_async(org=org, + query=query, + async_req=False, + _preload_content=False, + _return_http_data_only=True) + if not 200 <= response.status <= 299: + data = await response.read() + raise ApiException(http_resp=RESTResponseAsync(response, data)) + + return response diff --git a/frogpilot/third_party/influxdb_client/client/tasks_api.py b/frogpilot/third_party/influxdb_client/client/tasks_api.py new file mode 100644 index 000000000..5ca18fbdd --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/tasks_api.py @@ -0,0 +1,226 @@ +""" +Process and analyze your data with tasks in the InfluxDB task engine. + +Use tasks (scheduled Flux queries) to input a data stream and then analyze, modify, and act on the data accordingly. +""" + +import datetime +from typing import List + +from influxdb_client import TasksService, Task, TaskCreateRequest, TaskUpdateRequest, LabelResponse, LabelMapping, \ + AddResourceMemberRequestBody, RunManually, Run, LogEvent +from influxdb_client.client._pages import _Paginated + + +class TasksApi(object): + """Implementation for '/api/v2/tasks' endpoint.""" + + def __init__(self, influxdb_client): + """Initialize defaults.""" + self._influxdb_client = influxdb_client + self._service = TasksService(influxdb_client.api_client) + + def find_task_by_id(self, task_id) -> Task: + """Retrieve a task.""" + task = self._service.get_tasks_id(task_id) + return task + + def find_tasks(self, **kwargs): + """List all tasks up to set limit (max 500). + + :key str name: only returns tasks with the specified name + :key str after: returns tasks after specified ID + :key str user: filter tasks to a specific user ID + :key str org: filter tasks to a specific organization name + :key str org_id: filter tasks to a specific organization ID + :key int limit: the number of tasks to return + :return: Tasks + """ + return self._service.get_tasks(**kwargs).tasks + + def find_tasks_iter(self, **kwargs): + """Iterate over all tasks with pagination. + + :key str name: only returns tasks with the specified name + :key str after: returns tasks after specified ID + :key str user: filter tasks to a specific user ID + :key str org: filter tasks to a specific organization name + :key str org_id: filter tasks to a specific organization ID + :key int limit: the number of tasks in one page + :return: Tasks iterator + """ + return _Paginated(self._service.get_tasks, lambda response: response.tasks).find_iter(**kwargs) + + def create_task(self, task: Task = None, task_create_request: TaskCreateRequest = None) -> Task: + """Create a new task.""" + if task_create_request is not None: + return self._service.post_tasks(task_create_request) + + if task is not None: + request = TaskCreateRequest(flux=task.flux, org_id=task.org_id, org=task.org, description=task.description, + status=task.status) + + return self.create_task(task_create_request=request) + + raise ValueError("task or task_create_request must be not None") + + @staticmethod + def _create_task(name: str, flux: str, every, cron, org_id: str) -> Task: + + task = Task(id=0, name=name, org_id=org_id, status="active", flux=flux) + + repetition = "" + if every is not None: + repetition += "every: " + repetition += every + + if cron is not None: + repetition += "cron: " + repetition += '"' + cron + '"' + + flux_with_options = '{} \n\noption task = {{name: "{}", {}}}'.format(flux, name, repetition) + task.flux = flux_with_options + + return task + + def create_task_every(self, name, flux, every, organization) -> Task: + """Create a new task with every repetition schedule.""" + task = self._create_task(name, flux, every, None, organization.id) + return self.create_task(task) + + def create_task_cron(self, name: str, flux: str, cron: str, org_id: str) -> Task: + """Create a new task with cron repetition schedule.""" + task = self._create_task(name=name, flux=flux, cron=cron, org_id=org_id, every=None) + return self.create_task(task) + + def delete_task(self, task_id: str): + """Delete a task.""" + if task_id is not None: + return self._service.delete_tasks_id(task_id=task_id) + + def update_task(self, task: Task) -> Task: + """Update a task.""" + req = TaskUpdateRequest(flux=task.flux, description=task.description, every=task.every, cron=task.cron, + status=task.status, offset=task.offset) + + return self.update_task_request(task_id=task.id, task_update_request=req) + + def update_task_request(self, task_id, task_update_request: TaskUpdateRequest) -> Task: + """Update a task.""" + return self._service.patch_tasks_id(task_id=task_id, task_update_request=task_update_request) + + def clone_task(self, task: Task) -> Task: + """Clone a task.""" + cloned = Task(id=0, name=task.name, org_id=task.org_id, org=task.org, flux=task.flux, status="active") + + created = self.create_task(cloned) + if task.id: + labels = self.get_labels(task.id) + for label in labels.labels: + self.add_label(label.id, created.id) + return created + + def get_labels(self, task_id): + """List all labels for a task.""" + return self._service.get_tasks_id_labels(task_id=task_id) + + def add_label(self, label_id: str, task_id: str) -> LabelResponse: + """Add a label to a task.""" + label_mapping = LabelMapping(label_id=label_id) + return self._service.post_tasks_id_labels(task_id=task_id, label_mapping=label_mapping) + + def delete_label(self, label_id: str, task_id: str): + """Delete a label from a task.""" + return self._service.delete_tasks_id_labels_id(task_id=task_id, label_id=label_id) + + def get_members(self, task_id: str): + """List all task members.""" + return self._service.get_tasks_id_members(task_id=task_id).users + + def add_member(self, member_id, task_id): + """Add a member to a task.""" + user = AddResourceMemberRequestBody(id=member_id) + return self._service.post_tasks_id_members(task_id=task_id, add_resource_member_request_body=user) + + def delete_member(self, member_id, task_id): + """Remove a member from a task.""" + return self._service.delete_tasks_id_members_id(user_id=member_id, task_id=task_id) + + def get_owners(self, task_id): + """List all owners of a task.""" + return self._service.get_tasks_id_owners(task_id=task_id).users + + def add_owner(self, owner_id, task_id): + """Add an owner to a task.""" + user = AddResourceMemberRequestBody(id=owner_id) + return self._service.post_tasks_id_owners(task_id=task_id, add_resource_member_request_body=user) + + def delete_owner(self, owner_id, task_id): + """Remove an owner from a task.""" + return self._service.delete_tasks_id_owners_id(user_id=owner_id, task_id=task_id) + + def get_runs(self, task_id, **kwargs) -> List['Run']: + """ + Retrieve list of run records for a task. + + :param task_id: task id + :key str after: returns runs after specified ID + :key int limit: the number of runs to return + :key datetime after_time: filter runs to those scheduled after this time, RFC3339 + :key datetime before_time: filter runs to those scheduled before this time, RFC3339 + """ + return self._service.get_tasks_id_runs(task_id=task_id, **kwargs).runs + + def get_run(self, task_id: str, run_id: str) -> Run: + """ + Get run record for specific task and run id. + + :param task_id: task id + :param run_id: run id + :return: Run for specified task and run id + """ + return self._service.get_tasks_id_runs_id(task_id=task_id, run_id=run_id) + + def get_run_logs(self, task_id: str, run_id: str) -> List['LogEvent']: + """Retrieve all logs for a run.""" + return self._service.get_tasks_id_runs_id_logs(task_id=task_id, run_id=run_id).events + + def run_manually(self, task_id: str, scheduled_for: datetime = None): + """ + Manually start a run of the task now overriding the current schedule. + + :param task_id: + :param scheduled_for: planned execution + """ + r = RunManually(scheduled_for=scheduled_for) + return self._service.post_tasks_id_runs(task_id=task_id, run_manually=r) + + def retry_run(self, task_id: str, run_id: str): + """ + Retry a task run. + + :param task_id: task id + :param run_id: run id + """ + return self._service.post_tasks_id_runs_id_retry(task_id=task_id, run_id=run_id) + + def cancel_run(self, task_id: str, run_id: str): + """ + Cancel a currently running run. + + :param task_id: + :param run_id: + """ + return self._service.delete_tasks_id_runs_id(task_id=task_id, run_id=run_id) + + def get_logs(self, task_id: str) -> List['LogEvent']: + """ + Retrieve all logs for a task. + + :param task_id: task id + """ + return self._service.get_tasks_id_logs(task_id=task_id).events + + def find_tasks_by_user(self, task_user_id): + """List all tasks by user.""" + return self.find_tasks(user=task_user_id) diff --git a/frogpilot/third_party/influxdb_client/client/users_api.py b/frogpilot/third_party/influxdb_client/client/users_api.py new file mode 100644 index 000000000..dbaca7ad6 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/users_api.py @@ -0,0 +1,80 @@ +""" +Users are those with access to InfluxDB. + +To grant a user permission to access data, add them as a member of an organization +and provide them with an authentication token. +""" + +from typing import Union +from influxdb_client import UsersService, User, Users, UserResponse, PasswordResetBody + + +class UsersApi(object): + """Implementation for '/api/v2/users' endpoint.""" + + def __init__(self, influxdb_client): + """Initialize defaults.""" + self._influxdb_client = influxdb_client + self._service = UsersService(influxdb_client.api_client) + + def me(self) -> User: + """Return the current authenticated user.""" + user = self._service.get_me() + return user + + def create_user(self, name: str) -> User: + """Create a user.""" + user = User(name=name) + + return self._service.post_users(user=user) + + def update_user(self, user: User) -> UserResponse: + """Update a user. + + :param user: User update to apply (required) + :return: User + """ + return self._service.patch_users_id(user_id=user.id, user=user) + + def update_password(self, user: Union[str, User, UserResponse], password: str) -> None: + """Update a password. + + :param user: User to update password (required) + :param password: New password (required) + :return: None + """ + user_id = self._user_id(user) + + return self._service.post_users_id_password(user_id=user_id, password_reset_body=PasswordResetBody(password)) + + def delete_user(self, user: Union[str, User, UserResponse]) -> None: + """Delete a user. + + :param user: user id or User + :return: None + """ + user_id = self._user_id(user) + + return self._service.delete_users_id(user_id=user_id) + + def find_users(self, **kwargs) -> Users: + """List all users. + + :key int offset: The offset for pagination. The number of records to skip. + :key int limit: Limits the number of records returned. Default is `20`. + :key str after: The last resource ID from which to seek from (but not including). + This is to be used instead of `offset`. + :key str name: The user name. + :key str id: The user ID. + :return: Buckets + """ + return self._service.get_users(**kwargs) + + def _user_id(self, user: Union[str, User, UserResponse]): + if isinstance(user, User): + user_id = user.id + elif isinstance(user, UserResponse): + user_id = user.id + else: + user_id = user + return user_id diff --git a/frogpilot/third_party/influxdb_client/client/util/__init__.py b/frogpilot/third_party/influxdb_client/client/util/__init__.py new file mode 100644 index 000000000..f9a83206c --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/util/__init__.py @@ -0,0 +1 @@ +"""Utils package.""" diff --git a/frogpilot/third_party/influxdb_client/client/util/date_utils.py b/frogpilot/third_party/influxdb_client/client/util/date_utils.py new file mode 100644 index 000000000..7b6750c87 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/util/date_utils.py @@ -0,0 +1,101 @@ +"""Utils to get right Date parsing function.""" +import datetime +from sys import version_info +import threading +from datetime import timezone as tz + +from dateutil import parser + +date_helper = None + +lock_ = threading.Lock() + + +class DateHelper: + """ + DateHelper to groups different implementations of date operations. + + If you would like to serialize the query results to custom timezone, you can use following code: + + .. code-block:: python + + from influxdb_client.client.util import date_utils + from influxdb_client.client.util.date_utils import DateHelper + import dateutil.parser + from dateutil import tz + + def parse_date(date_string: str): + return dateutil.parser.parse(date_string).astimezone(tz.gettz('ETC/GMT+2')) + + date_utils.date_helper = DateHelper() + date_utils.date_helper.parse_date = parse_date + """ + + def __init__(self, timezone: datetime.tzinfo = tz.utc) -> None: + """ + Initialize defaults. + + :param timezone: Default timezone used for serialization "datetime" without "tzinfo". + Default value is "UTC". + """ + self.timezone = timezone + + def parse_date(self, date_string: str): + """ + Parse string into Date or Timestamp. + + :return: Returns a :class:`datetime.datetime` object or compliant implementation + like :class:`class 'pandas._libs.tslibs.timestamps.Timestamp` + """ + pass + + def to_nanoseconds(self, delta): + """ + Get number of nanoseconds in timedelta. + + Solution comes from v1 client. Thx. + https://github.com/influxdata/influxdb-python/pull/811 + """ + nanoseconds_in_days = delta.days * 86400 * 10 ** 9 + nanoseconds_in_seconds = delta.seconds * 10 ** 9 + nanoseconds_in_micros = delta.microseconds * 10 ** 3 + + return nanoseconds_in_days + nanoseconds_in_seconds + nanoseconds_in_micros + + def to_utc(self, value: datetime): + """ + Convert datetime to UTC timezone. + + :param value: datetime + :return: datetime in UTC + """ + if not value.tzinfo: + return self.to_utc(value.replace(tzinfo=self.timezone)) + else: + return value.astimezone(tz.utc) + + +def get_date_helper() -> DateHelper: + """ + Return DateHelper with proper implementation. + + If there is a 'ciso8601' than use 'ciso8601.parse_datetime' else + use 'datetime.fromisoformat' (Python >= 3.11) or 'dateutil.parse' (Python < 3.11). + """ + global date_helper + if date_helper is None: + with lock_: + # avoid duplicate initialization + if date_helper is None: + _date_helper = DateHelper() + try: + import ciso8601 + _date_helper.parse_date = ciso8601.parse_datetime + except ModuleNotFoundError: + if (version_info.major, version_info.minor) >= (3, 11): + _date_helper.parse_date = datetime.datetime.fromisoformat + else: + _date_helper.parse_date = parser.parse + date_helper = _date_helper + + return date_helper diff --git a/frogpilot/third_party/influxdb_client/client/util/date_utils_pandas.py b/frogpilot/third_party/influxdb_client/client/util/date_utils_pandas.py new file mode 100644 index 000000000..9a87c6abd --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/util/date_utils_pandas.py @@ -0,0 +1,15 @@ +"""Pandas date utils.""" +from influxdb_client.client.util.date_utils import DateHelper +from influxdb_client.extras import pd + + +class PandasDateTimeHelper(DateHelper): + """DateHelper that use Pandas library with nanosecond precision.""" + + def parse_date(self, date_string: str): + """Parse date string into `class 'pandas._libs.tslibs.timestamps.Timestamp`.""" + return pd.to_datetime(date_string) + + def to_nanoseconds(self, delta): + """Get number of nanoseconds with nanos precision.""" + return super().to_nanoseconds(delta) + (delta.nanoseconds if hasattr(delta, 'nanoseconds') else 0) diff --git a/frogpilot/third_party/influxdb_client/client/util/helpers.py b/frogpilot/third_party/influxdb_client/client/util/helpers.py new file mode 100644 index 000000000..e1fdce909 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/util/helpers.py @@ -0,0 +1,50 @@ +"""Functions to share utility across client classes.""" +from influxdb_client.rest import ApiException + + +def _is_id(value): + """ + Check if the value is valid InfluxDB ID. + + :param value: to check + :return: True if provided parameter is valid InfluxDB ID. + """ + if value and len(value) == 16: + try: + int(value, 16) + return True + except ValueError: + return False + return False + + +def get_org_query_param(org, client, required_id=False): + """ + Get required type of Org query parameter. + + :param str, Organization org: value provided as a parameter into API (optional) + :param InfluxDBClient client: with default value for Org parameter + :param bool required_id: true if the query param has to be a ID + :return: request type of org query parameter or None + """ + _org = client.org if org is None else org + if 'Organization' in type(_org).__name__: + _org = _org.id + if required_id and _org and not _is_id(_org): + try: + organizations = client.organizations_api().find_organizations(org=_org) + if len(organizations) < 1: + from influxdb_client.client.exceptions import InfluxDBError + message = f"The client cannot find organization with name: '{_org}' " \ + "to determine their ID. Are you using token with sufficient permission?" + raise InfluxDBError(response=None, message=message) + return organizations[0].id + except ApiException as e: + if e.status == 404: + from influxdb_client.client.exceptions import InfluxDBError + message = f"The client cannot find organization with name: '{_org}' " \ + "to determine their ID." + raise InfluxDBError(response=None, message=message) + raise e + + return _org diff --git a/frogpilot/third_party/influxdb_client/client/util/multiprocessing_helper.py b/frogpilot/third_party/influxdb_client/client/util/multiprocessing_helper.py new file mode 100644 index 000000000..41530a237 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/util/multiprocessing_helper.py @@ -0,0 +1,205 @@ +""" +Helpers classes to make easier use the client in multiprocessing environment. + +For more information how the multiprocessing works see Python's +`reference docs `_. +""" +import logging +import multiprocessing + +from influxdb_client import InfluxDBClient, WriteOptions +from influxdb_client.client.exceptions import InfluxDBError + +logger = logging.getLogger('influxdb_client.client.util.multiprocessing_helper') + + +def _success_callback(conf: (str, str, str), data: str): + """Successfully writen batch.""" + logger.debug(f"Written batch: {conf}, data: {data}") + + +def _error_callback(conf: (str, str, str), data: str, exception: InfluxDBError): + """Unsuccessfully writen batch.""" + logger.debug(f"Cannot write batch: {conf}, data: {data} due: {exception}") + + +def _retry_callback(conf: (str, str, str), data: str, exception: InfluxDBError): + """Retryable error.""" + logger.debug(f"Retryable error occurs for batch: {conf}, data: {data} retry: {exception}") + + +class _PoisonPill: + """To notify process to terminate.""" + + pass + + +class MultiprocessingWriter(multiprocessing.Process): + """ + The Helper class to write data into InfluxDB in independent OS process. + + Example: + .. code-block:: python + + from influxdb_client import WriteOptions + from influxdb_client.client.util.multiprocessing_helper import MultiprocessingWriter + + + def main(): + writer = MultiprocessingWriter(url="http://localhost:8086", token="my-token", org="my-org", + write_options=WriteOptions(batch_size=100)) + writer.start() + + for x in range(1, 1000): + writer.write(bucket="my-bucket", record=f"mem,tag=a value={x}i {x}") + + writer.__del__() + + + if __name__ == '__main__': + main() + + + How to use with context_manager: + .. code-block:: python + + from influxdb_client import WriteOptions + from influxdb_client.client.util.multiprocessing_helper import MultiprocessingWriter + + + def main(): + with MultiprocessingWriter(url="http://localhost:8086", token="my-token", org="my-org", + write_options=WriteOptions(batch_size=100)) as writer: + for x in range(1, 1000): + writer.write(bucket="my-bucket", record=f"mem,tag=a value={x}i {x}") + + + if __name__ == '__main__': + main() + + + How to handle batch events: + .. code-block:: python + + from influxdb_client import WriteOptions + from influxdb_client.client.exceptions import InfluxDBError + from influxdb_client.client.util.multiprocessing_helper import MultiprocessingWriter + + + class BatchingCallback(object): + + def success(self, conf: (str, str, str), data: str): + print(f"Written batch: {conf}, data: {data}") + + def error(self, conf: (str, str, str), data: str, exception: InfluxDBError): + print(f"Cannot write batch: {conf}, data: {data} due: {exception}") + + def retry(self, conf: (str, str, str), data: str, exception: InfluxDBError): + print(f"Retryable error occurs for batch: {conf}, data: {data} retry: {exception}") + + + def main(): + callback = BatchingCallback() + with MultiprocessingWriter(url="http://localhost:8086", token="my-token", org="my-org", + success_callback=callback.success, + error_callback=callback.error, + retry_callback=callback.retry) as writer: + + for x in range(1, 1000): + writer.write(bucket="my-bucket", record=f"mem,tag=a value={x}i {x}") + + + if __name__ == '__main__': + main() + + + """ + + __started__ = False + __disposed__ = False + + def __init__(self, **kwargs) -> None: + """ + Initialize defaults. + + For more information how to initialize the writer see the examples above. + + :param kwargs: arguments are passed into ``__init__`` function of ``InfluxDBClient`` and ``write_api``. + """ + multiprocessing.Process.__init__(self) + self.kwargs = kwargs + self.client = None + self.write_api = None + self.queue_ = multiprocessing.Manager().Queue() + + def write(self, **kwargs) -> None: + """ + Append time-series data into underlying queue. + + For more information how to pass arguments see the examples above. + + :param kwargs: arguments are passed into ``write`` function of ``WriteApi`` + :return: None + """ + assert self.__disposed__ is False, 'Cannot write data: the writer is closed.' + assert self.__started__ is True, 'Cannot write data: the writer is not started.' + self.queue_.put(kwargs) + + def run(self): + """Initialize ``InfluxDBClient`` and waits for data to writes into InfluxDB.""" + # Initialize Client and Write API + self.client = InfluxDBClient(**self.kwargs) + self.write_api = self.client.write_api(write_options=self.kwargs.get('write_options', WriteOptions()), + success_callback=self.kwargs.get('success_callback', _success_callback), + error_callback=self.kwargs.get('error_callback', _error_callback), + retry_callback=self.kwargs.get('retry_callback', _retry_callback)) + # Infinite loop - until poison pill + while True: + next_record = self.queue_.get() + if type(next_record) is _PoisonPill: + # Poison pill means break the loop + self.terminate() + self.queue_.task_done() + break + self.write_api.write(**next_record) + self.queue_.task_done() + + def start(self) -> None: + """Start independent process for writing data into InfluxDB.""" + super().start() + self.__started__ = True + + def terminate(self) -> None: + """ + Cleanup resources in independent process. + + This function **cannot be used** to terminate the ``MultiprocessingWriter``. + If you want to finish your writes please call: ``__del__``. + """ + if self.write_api: + logger.info("flushing data...") + self.write_api.__del__() + self.write_api = None + if self.client: + self.client.__del__() + self.client = None + logger.info("closed") + + def __enter__(self): + """Enter the runtime context related to this object.""" + self.start() + return self + + def __exit__(self, exc_type, exc_value, traceback): + """Exit the runtime context related to this object.""" + self.__del__() + + def __del__(self): + """Dispose the client and write_api.""" + if self.__started__: + self.queue_.put(_PoisonPill()) + self.queue_.join() + self.join() + self.queue_ = None + self.__started__ = False + self.__disposed__ = True diff --git a/frogpilot/third_party/influxdb_client/client/warnings.py b/frogpilot/third_party/influxdb_client/client/warnings.py new file mode 100644 index 000000000..b682ff865 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/warnings.py @@ -0,0 +1,52 @@ +"""The warnings message definition.""" +import warnings + + +class MissingPivotFunction(UserWarning): + """User warning about missing pivot() function.""" + + @staticmethod + def print_warning(query: str): + """Print warning about missing pivot() function and how to deal with that.""" + if 'fieldsAsCols' in query or 'pivot' in query: + return + + message = f"""The query doesn't contains the pivot() function. + +The result will not be shaped to optimal processing by pandas.DataFrame. Use the pivot() function by: + + {query} |> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value") + +You can disable this warning by: + import warnings + from influxdb_client.client.warnings import MissingPivotFunction + + warnings.simplefilter("ignore", MissingPivotFunction) + +For more info see: + - https://docs.influxdata.com/resources/videos/pivots-in-flux/ + - https://docs.influxdata.com/flux/latest/stdlib/universe/pivot/ + - https://docs.influxdata.com/flux/latest/stdlib/influxdata/influxdb/schema/fieldsascols/ +""" + warnings.warn(message, MissingPivotFunction) + + +class CloudOnlyWarning(UserWarning): + """User warning about availability only on the InfluxDB Cloud.""" + + @staticmethod + def print_warning(api_name: str, doc_url: str): + """Print warning about availability only on the InfluxDB Cloud.""" + message = f"""The '{api_name}' is available only on the InfluxDB Cloud. + +For more info see: + - {doc_url} + - https://docs.influxdata.com/influxdb/cloud/ + +You can disable this warning by: + import warnings + from influxdb_client.client.warnings import CloudOnlyWarning + + warnings.simplefilter("ignore", CloudOnlyWarning) +""" + warnings.warn(message, CloudOnlyWarning) diff --git a/frogpilot/third_party/influxdb_client/client/write/__init__.py b/frogpilot/third_party/influxdb_client/client/write/__init__.py new file mode 100644 index 000000000..0d21a4384 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/write/__init__.py @@ -0,0 +1,56 @@ +# flake8: noqa + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +# import apis into api package +from influxdb_client.service.authorizations_service import AuthorizationsService +from influxdb_client.service.backup_service import BackupService +from influxdb_client.service.bucket_schemas_service import BucketSchemasService +from influxdb_client.service.buckets_service import BucketsService +from influxdb_client.service.cells_service import CellsService +from influxdb_client.service.checks_service import ChecksService +from influxdb_client.service.config_service import ConfigService +from influxdb_client.service.dbr_ps_service import DBRPsService +from influxdb_client.service.dashboards_service import DashboardsService +from influxdb_client.service.delete_service import DeleteService +from influxdb_client.service.health_service import HealthService +from influxdb_client.service.invokable_scripts_service import InvokableScriptsService +from influxdb_client.service.labels_service import LabelsService +from influxdb_client.service.legacy_authorizations_service import LegacyAuthorizationsService +from influxdb_client.service.metrics_service import MetricsService +from influxdb_client.service.notification_endpoints_service import NotificationEndpointsService +from influxdb_client.service.notification_rules_service import NotificationRulesService +from influxdb_client.service.organizations_service import OrganizationsService +from influxdb_client.service.ping_service import PingService +from influxdb_client.service.query_service import QueryService +from influxdb_client.service.ready_service import ReadyService +from influxdb_client.service.remote_connections_service import RemoteConnectionsService +from influxdb_client.service.replications_service import ReplicationsService +from influxdb_client.service.resources_service import ResourcesService +from influxdb_client.service.restore_service import RestoreService +from influxdb_client.service.routes_service import RoutesService +from influxdb_client.service.rules_service import RulesService +from influxdb_client.service.scraper_targets_service import ScraperTargetsService +from influxdb_client.service.secrets_service import SecretsService +from influxdb_client.service.setup_service import SetupService +from influxdb_client.service.signin_service import SigninService +from influxdb_client.service.signout_service import SignoutService +from influxdb_client.service.sources_service import SourcesService +from influxdb_client.service.tasks_service import TasksService +from influxdb_client.service.telegraf_plugins_service import TelegrafPluginsService +from influxdb_client.service.telegrafs_service import TelegrafsService +from influxdb_client.service.templates_service import TemplatesService +from influxdb_client.service.users_service import UsersService +from influxdb_client.service.variables_service import VariablesService +from influxdb_client.service.views_service import ViewsService +from influxdb_client.service.write_service import WriteService diff --git a/frogpilot/third_party/influxdb_client/client/write/dataframe_serializer.py b/frogpilot/third_party/influxdb_client/client/write/dataframe_serializer.py new file mode 100644 index 000000000..ccc198ac3 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/write/dataframe_serializer.py @@ -0,0 +1,290 @@ +""" +Functions for serialize Pandas DataFrame. + +Much of the code here is inspired by that in the aioinflux packet found here: https://github.com/gusutabopb/aioinflux +""" + +import logging +import math +import re + +from influxdb_client import WritePrecision +from influxdb_client.client.write.point import _ESCAPE_KEY, _ESCAPE_STRING, _ESCAPE_MEASUREMENT, DEFAULT_WRITE_PRECISION + +logger = logging.getLogger('influxdb_client.client.write.dataframe_serializer') + + +def _itertuples(data_frame): + cols = [data_frame.iloc[:, k] for k in range(len(data_frame.columns))] + return zip(data_frame.index, *cols) + + +class DataframeSerializer: + """Serialize DataFrame into LineProtocols.""" + + def __init__(self, data_frame, point_settings, precision=DEFAULT_WRITE_PRECISION, chunk_size: int = None, + **kwargs) -> None: + """ + Init serializer. + + :param data_frame: Pandas DataFrame to serialize + :param point_settings: Default Tags + :param precision: The precision for the unix timestamps within the body line-protocol. + :param chunk_size: The size of chunk for serializing into chunks. + :key data_frame_measurement_name: name of measurement for writing Pandas DataFrame + :key data_frame_tag_columns: list of DataFrame columns which are tags, rest columns will be fields + :key data_frame_timestamp_column: name of DataFrame column which contains a timestamp. The column can be defined as a :class:`~str` value + formatted as `2018-10-26`, `2018-10-26 12:00`, `2018-10-26 12:00:00-05:00` + or other formats and types supported by `pandas.to_datetime `_ - ``DataFrame`` + :key data_frame_timestamp_timezone: name of the timezone which is used for timestamp column - ``DataFrame`` + """ # noqa: E501 + # This function is hard to understand but for good reason: + # the approach used here is considerably more efficient + # than the alternatives. + # + # We build up a Python expression that efficiently converts a data point + # tuple into line-protocol entry, and then evaluate the expression + # as a lambda so that we can call it. This avoids the overhead of + # invoking a function on every data value - we only have one function + # call per row instead. The expression consists of exactly + # one f-string, so we build up the parts of it as segments + # that are concatenated together to make the full f-string inside + # the lambda. + # + # Things are made a little more complex because fields and tags with NaN + # values and empty tags are omitted from the generated line-protocol + # output. + # + # As an example, say we have a data frame with two value columns: + # a float + # b int + # + # This will generate a lambda expression to be evaluated that looks like + # this: + # + # lambda p: f"""{measurement_name} {keys[0]}={p[1]},{keys[1]}={p[2]}i {p[0].value}""" + # + # This lambda is then executed for each row p. + # + # When NaNs are present, the expression looks like this (split + # across two lines to satisfy the code-style checker) + # + # lambda p: f"""{measurement_name} {"" if pd.isna(p[1]) + # else f"{keys[0]}={p[1]}"},{keys[1]}={p[2]}i {p[0].value}""" + # + # When there's a NaN value in column a, we'll end up with a comma at the start of the + # fields, so we run a regexp substitution after generating the line-protocol entries + # to remove this. + # + # We're careful to run these potentially costly extra steps only when NaN values actually + # exist in the data. + + from ...extras import pd, np + if not isinstance(data_frame, pd.DataFrame): + raise TypeError('Must be DataFrame, but type was: {0}.' + .format(type(data_frame))) + + data_frame_measurement_name = kwargs.get('data_frame_measurement_name') + if data_frame_measurement_name is None: + raise TypeError('"data_frame_measurement_name" is a Required Argument') + + timestamp_column = kwargs.get('data_frame_timestamp_column', None) + timestamp_timezone = kwargs.get('data_frame_timestamp_timezone', None) + data_frame = data_frame.copy(deep=False) + data_frame_timestamp = data_frame.index if timestamp_column is None else data_frame[timestamp_column] + if isinstance(data_frame_timestamp, pd.PeriodIndex): + data_frame_timestamp = data_frame_timestamp.to_timestamp() + else: + # TODO: this is almost certainly not what you want + # when the index is the default RangeIndex. + # Instead, it would probably be better to leave + # out the timestamp unless a time column is explicitly + # enabled. + data_frame_timestamp = pd.to_datetime(data_frame_timestamp, unit=precision) + + if timestamp_timezone: + if isinstance(data_frame_timestamp, pd.DatetimeIndex): + data_frame_timestamp = data_frame_timestamp.tz_localize(timestamp_timezone) + else: + data_frame_timestamp = data_frame_timestamp.dt.tz_localize(timestamp_timezone) + + if hasattr(data_frame_timestamp, 'tzinfo') and data_frame_timestamp.tzinfo is None: + data_frame_timestamp = data_frame_timestamp.tz_localize('UTC') + if timestamp_column is None: + data_frame.index = data_frame_timestamp + else: + data_frame[timestamp_column] = data_frame_timestamp + + data_frame_tag_columns = kwargs.get('data_frame_tag_columns') + data_frame_tag_columns = set(data_frame_tag_columns or []) + + # keys holds a list of string keys. + keys = [] + # tags holds a list of tag f-string segments ordered alphabetically by tag key. + tags = [] + # fields holds a list of field f-string segments ordered alphebetically by field key + fields = [] + # field_indexes holds the index into each row of all the fields. + field_indexes = [] + + if point_settings.defaultTags: + for key, value in point_settings.defaultTags.items(): + # Avoid overwriting existing data if there's a column + # that already exists with the default tag's name. + # Note: when a new column is added, the old DataFrame + # that we've made a shallow copy of is unaffected. + # TODO: when there are NaN or empty values in + # the column, we could make a deep copy of the + # data and fill in those values with the default tag value. + if key not in data_frame.columns: + data_frame[key] = value + data_frame_tag_columns.add(key) + + # Get a list of all the columns sorted by field/tag key. + # We want to iterate through the columns in sorted order + # so that we know when we're on the first field so we + # can know whether a comma is needed for that + # field. + columns = sorted(enumerate(data_frame.dtypes.items()), key=lambda col: col[1][0]) + + # null_columns has a bool value for each column holding + # whether that column contains any null (NaN or None) values. + null_columns = data_frame.isnull().any() + timestamp_index = 0 + + # Iterate through the columns building up the expression for each column. + for index, (key, value) in columns: + key = str(key) + key_format = f'{{keys[{len(keys)}]}}' + keys.append(key.translate(_ESCAPE_KEY)) + # The field index is one more than the column index because the + # time index is at column zero in the finally zipped-together + # result columns. + field_index = index + 1 + val_format = f'p[{field_index}]' + + if key in data_frame_tag_columns: + # This column is a tag column. + if null_columns.iloc[index]: + key_value = f"""{{ + '' if {val_format} == '' or pd.isna({val_format}) else + f',{key_format}={{str({val_format}).translate(_ESCAPE_STRING)}}' + }}""" + else: + key_value = f',{key_format}={{str({val_format}).translate(_ESCAPE_KEY)}}' + tags.append(key_value) + continue + elif timestamp_column is not None and key in timestamp_column: + timestamp_index = field_index + continue + + # This column is a field column. + # Note: no comma separator is needed for the first field. + # It's important to omit it because when the first + # field column has no nulls, we don't run the comma-removal + # regexp substitution step. + sep = '' if len(field_indexes) == 0 else ',' + if issubclass(value.type, np.integer) or issubclass(value.type, np.floating) or issubclass(value.type, np.bool_): # noqa: E501 + suffix = 'i' if issubclass(value.type, np.integer) else '' + if null_columns.iloc[index]: + field_value = f"""{{"" if pd.isna({val_format}) else f"{sep}{key_format}={{{val_format}}}{suffix}"}}""" # noqa: E501 + else: + field_value = f"{sep}{key_format}={{{val_format}}}{suffix}" + else: + if null_columns.iloc[index]: + field_value = f"""{{ + '' if pd.isna({val_format}) else + f'{sep}{key_format}="{{str({val_format}).translate(_ESCAPE_STRING)}}"' + }}""" + else: + field_value = f'''{sep}{key_format}="{{str({val_format}).translate(_ESCAPE_STRING)}}"''' + field_indexes.append(field_index) + fields.append(field_value) + + measurement_name = str(data_frame_measurement_name).translate(_ESCAPE_MEASUREMENT) + + tags = ''.join(tags) + fields = ''.join(fields) + timestamp = '{p[%s].value}' % timestamp_index + if precision == WritePrecision.US: + timestamp = '{int(p[%s].value / 1e3)}' % timestamp_index + elif precision == WritePrecision.MS: + timestamp = '{int(p[%s].value / 1e6)}' % timestamp_index + elif precision == WritePrecision.S: + timestamp = '{int(p[%s].value / 1e9)}' % timestamp_index + + f = eval(f'lambda p: f"""{{measurement_name}}{tags} {fields} {timestamp}"""', { + 'measurement_name': measurement_name, + '_ESCAPE_KEY': _ESCAPE_KEY, + '_ESCAPE_STRING': _ESCAPE_STRING, + 'keys': keys, + 'pd': pd, + }) + + for k, v in dict(data_frame.dtypes).items(): + if k in data_frame_tag_columns: + data_frame = data_frame.replace({k: ''}, np.nan) + + def _any_not_nan(p, indexes): + return any(map(lambda x: not pd.isna(p[x]), indexes)) + + self.data_frame = data_frame + self.f = f + self.field_indexes = field_indexes + self.first_field_maybe_null = null_columns.iloc[field_indexes[0] - 1] + self._any_not_nan = _any_not_nan + + # + # prepare chunks + # + if chunk_size is not None: + self.number_of_chunks = int(math.ceil(len(data_frame) / float(chunk_size))) + self.chunk_size = chunk_size + else: + self.number_of_chunks = None + + def serialize(self, chunk_idx: int = None): + """ + Serialize chunk into LineProtocols. + + :param chunk_idx: The index of chunk to serialize. If `None` then serialize whole dataframe. + """ + if chunk_idx is None: + chunk = self.data_frame + else: + logger.debug("Serialize chunk %s/%s ...", chunk_idx + 1, self.number_of_chunks) + chunk = self.data_frame[chunk_idx * self.chunk_size:(chunk_idx + 1) * self.chunk_size] + + if self.first_field_maybe_null: + # When the first field is null (None/NaN), we'll have + # a spurious leading comma which needs to be removed. + lp = (re.sub('^(( |[^ ])* ),([a-zA-Z0-9])(.*)', '\\1\\3\\4', self.f(p)) + for p in filter(lambda x: self._any_not_nan(x, self.field_indexes), _itertuples(chunk))) + return list(lp) + else: + return list(map(self.f, _itertuples(chunk))) + + def number_of_chunks(self): + """ + Return the number of chunks. + + :return: number of chunks or None if chunk_size is not specified. + """ + return self.number_of_chunks + + +def data_frame_to_list_of_points(data_frame, point_settings, precision=DEFAULT_WRITE_PRECISION, **kwargs): + """ + Serialize DataFrame into LineProtocols. + + :param data_frame: Pandas DataFrame to serialize + :param point_settings: Default Tags + :param precision: The precision for the unix timestamps within the body line-protocol. + :key data_frame_measurement_name: name of measurement for writing Pandas DataFrame + :key data_frame_tag_columns: list of DataFrame columns which are tags, rest columns will be fields + :key data_frame_timestamp_column: name of DataFrame column which contains a timestamp. The column can be defined as a :class:`~str` value + formatted as `2018-10-26`, `2018-10-26 12:00`, `2018-10-26 12:00:00-05:00` + or other formats and types supported by `pandas.to_datetime `_ - ``DataFrame`` + :key data_frame_timestamp_timezone: name of the timezone which is used for timestamp column - ``DataFrame`` + """ # noqa: E501 + return DataframeSerializer(data_frame, point_settings, precision, **kwargs).serialize() diff --git a/frogpilot/third_party/influxdb_client/client/write/point.py b/frogpilot/third_party/influxdb_client/client/write/point.py new file mode 100644 index 000000000..cc95d2045 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/write/point.py @@ -0,0 +1,371 @@ +"""Point data structure to represent LineProtocol.""" + +import math +import warnings +from builtins import int +from datetime import datetime, timedelta, timezone +from decimal import Decimal +from numbers import Integral + +from influxdb_client.client.util.date_utils import get_date_helper +from influxdb_client.domain.write_precision import WritePrecision + +EPOCH = datetime.fromtimestamp(0, tz=timezone.utc) + +DEFAULT_WRITE_PRECISION = WritePrecision.NS + +_ESCAPE_MEASUREMENT = str.maketrans({ + ',': r'\,', + ' ': r'\ ', + '\n': r'\n', + '\t': r'\t', + '\r': r'\r', +}) + +_ESCAPE_KEY = str.maketrans({ + ',': r'\,', + '=': r'\=', + ' ': r'\ ', + '\n': r'\n', + '\t': r'\t', + '\r': r'\r', +}) + +_ESCAPE_STRING = str.maketrans({ + '"': r'\"', + '\\': r'\\', +}) + +try: + import numpy as np + + _HAS_NUMPY = True +except ModuleNotFoundError: + _HAS_NUMPY = False + + +class Point(object): + """ + Point defines the values that will be written to the database. + + Ref: https://docs.influxdata.com/influxdb/latest/reference/key-concepts/data-elements/#point + """ + + @staticmethod + def measurement(measurement): + """Create a new Point with specified measurement name.""" + p = Point(measurement) + return p + + @staticmethod + def from_dict(dictionary: dict, write_precision: WritePrecision = DEFAULT_WRITE_PRECISION, **kwargs): + """ + Initialize point from 'dict' structure. + + The expected dict structure is: + - measurement + - tags + - fields + - time + + Example: + .. code-block:: python + + # Use default dictionary structure + dict_structure = { + "measurement": "h2o_feet", + "tags": {"location": "coyote_creek"}, + "fields": {"water_level": 1.0}, + "time": 1 + } + point = Point.from_dict(dict_structure, WritePrecision.NS) + + Example: + .. code-block:: python + + # Use custom dictionary structure + dictionary = { + "name": "sensor_pt859", + "location": "warehouse_125", + "version": "2021.06.05.5874", + "pressure": 125, + "temperature": 10, + "created": 1632208639, + } + point = Point.from_dict(dictionary, + write_precision=WritePrecision.S, + record_measurement_key="name", + record_time_key="created", + record_tag_keys=["location", "version"], + record_field_keys=["pressure", "temperature"]) + + Int Types: + The following example shows how to configure the types of integers fields. + It is useful when you want to serialize integers always as ``float`` to avoid ``field type conflict`` + or use ``unsigned 64-bit integer`` as the type for serialization. + + .. code-block:: python + + # Use custom dictionary structure + dict_structure = { + "measurement": "h2o_feet", + "tags": {"location": "coyote_creek"}, + "fields": { + "water_level": 1.0, + "some_counter": 108913123234 + }, + "time": 1 + } + + point = Point.from_dict(dict_structure, field_types={"some_counter": "uint"}) + + :param dictionary: dictionary for serialize into data Point + :param write_precision: sets the precision for the supplied time values + :key record_measurement_key: key of dictionary with specified measurement + :key record_measurement_name: static measurement name for data Point + :key record_time_key: key of dictionary with specified timestamp + :key record_tag_keys: list of dictionary keys to use as a tag + :key record_field_keys: list of dictionary keys to use as a field + :key field_types: optional dictionary to specify types of serialized fields. Currently, is supported customization for integer types. + Possible integers types: + - ``int`` - serialize integers as "**Signed 64-bit integers**" - ``9223372036854775807i`` (default behaviour) + - ``uint`` - serialize integers as "**Unsigned 64-bit integers**" - ``9223372036854775807u`` + - ``float`` - serialize integers as "**IEEE-754 64-bit floating-point numbers**". Useful for unify number types in your pipeline to avoid field type conflict - ``9223372036854775807`` + The ``field_types`` can be also specified as part of incoming dictionary. For more info see an example above. + :return: new data point + """ # noqa: E501 + measurement_ = kwargs.get('record_measurement_name', None) + if measurement_ is None: + measurement_ = dictionary[kwargs.get('record_measurement_key', 'measurement')] + point = Point(measurement_) + + record_tag_keys = kwargs.get('record_tag_keys', None) + if record_tag_keys is not None: + for tag_key in record_tag_keys: + if tag_key in dictionary: + point.tag(tag_key, dictionary[tag_key]) + elif 'tags' in dictionary: + for tag_key, tag_value in dictionary['tags'].items(): + point.tag(tag_key, tag_value) + + record_field_keys = kwargs.get('record_field_keys', None) + if record_field_keys is not None: + for field_key in record_field_keys: + if field_key in dictionary: + point.field(field_key, dictionary[field_key]) + else: + for field_key, field_value in dictionary['fields'].items(): + point.field(field_key, field_value) + + record_time_key = kwargs.get('record_time_key', 'time') + if record_time_key in dictionary: + point.time(dictionary[record_time_key], write_precision=write_precision) + + _field_types = kwargs.get('field_types', {}) + if 'field_types' in dictionary: + _field_types = dictionary['field_types'] + # Map API fields types to Line Protocol types postfix: + # - int: 'i' + # - uint: 'u' + # - float: '' + point._field_types = dict(map( + lambda item: (item[0], 'i' if item[1] == 'int' else 'u' if item[1] == 'uint' else ''), + _field_types.items() + )) + + return point + + def __init__(self, measurement_name): + """Initialize defaults.""" + self._tags = {} + self._fields = {} + self._name = measurement_name + self._time = None + self._write_precision = DEFAULT_WRITE_PRECISION + self._field_types = {} + + def time(self, time, write_precision=DEFAULT_WRITE_PRECISION): + """ + Specify timestamp for DataPoint with declared precision. + + If time doesn't have specified timezone we assume that timezone is UTC. + + Examples:: + Point.measurement("h2o").field("val", 1).time("2009-11-10T23:00:00.123456Z") + Point.measurement("h2o").field("val", 1).time(1257894000123456000) + Point.measurement("h2o").field("val", 1).time(datetime(2009, 11, 10, 23, 0, 0, 123456)) + Point.measurement("h2o").field("val", 1).time(1257894000123456000, write_precision=WritePrecision.NS) + + + :param time: the timestamp for your data + :param write_precision: sets the precision for the supplied time values + :return: this point + """ + self._write_precision = write_precision + self._time = time + return self + + def tag(self, key, value): + """Add tag with key and value.""" + self._tags[key] = value + return self + + def field(self, field, value): + """Add field with key and value.""" + self._fields[field] = value + return self + + def to_line_protocol(self, precision=None): + """ + Create LineProtocol. + + :param precision: required precision of LineProtocol. If it's not set then use the precision from ``Point``. + """ + _measurement = _escape_key(self._name, _ESCAPE_MEASUREMENT) + if _measurement.startswith("#"): + message = f"""The measurement name '{_measurement}' start with '#'. + +The output Line protocol will be interpret as a comment by InfluxDB. For more info see: + - https://docs.influxdata.com/influxdb/latest/reference/syntax/line-protocol/#comments +""" + warnings.warn(message, SyntaxWarning) + _tags = _append_tags(self._tags) + _fields = _append_fields(self._fields, self._field_types) + if not _fields: + return "" + _time = _append_time(self._time, self._write_precision if precision is None else precision) + + return f"{_measurement}{_tags}{_fields}{_time}" + + @property + def write_precision(self): + """Get precision.""" + return self._write_precision + + @classmethod + def set_str_rep(cls, rep_function): + """Set the string representation for all Points.""" + cls.__str___rep = rep_function + + def __str__(self): + """Create string representation of this Point.""" + return self.to_line_protocol() + + def __eq__(self, other): + """Return true iff other is equal to self.""" + if not isinstance(other, Point): + return False + # assume points are equal iff their instance fields are equal + return (self._tags == other._tags and + self._fields == other._fields and + self._name == other._name and + self._time == other._time and + self._write_precision == other._write_precision and + self._field_types == other._field_types) + + +def _append_tags(tags): + _return = [] + for tag_key, tag_value in sorted(tags.items()): + + if tag_value is None: + continue + + tag = _escape_key(tag_key) + value = _escape_tag_value(tag_value) + if tag != '' and value != '': + _return.append(f'{tag}={value}') + + return f"{',' if _return else ''}{','.join(_return)} " + + +def _append_fields(fields, field_types): + _return = [] + + for field, value in sorted(fields.items()): + if value is None: + continue + + if isinstance(value, float) or isinstance(value, Decimal) or _np_is_subtype(value, 'float'): + if not math.isfinite(value): + continue + s = str(value) + # It's common to represent whole numbers as floats + # and the trailing ".0" that Python produces is unnecessary + # in line-protocol, inconsistent with other line-protocol encoders, + # and takes more space than needed, so trim it off. + if s.endswith('.0'): + s = s[:-2] + _return.append(f'{_escape_key(field)}={s}') + elif (isinstance(value, int) or _np_is_subtype(value, 'int')) and not isinstance(value, bool): + _type = field_types.get(field, "i") + _return.append(f'{_escape_key(field)}={str(value)}{_type}') + elif isinstance(value, bool): + _return.append(f'{_escape_key(field)}={str(value).lower()}') + elif isinstance(value, str): + _return.append(f'{_escape_key(field)}="{_escape_string(value)}"') + else: + raise ValueError(f'Type: "{type(value)}" of field: "{field}" is not supported.') + + return f"{','.join(_return)}" + + +def _append_time(time, write_precision) -> str: + if time is None: + return '' + return f" {int(_convert_timestamp(time, write_precision))}" + + +def _escape_key(tag, escape_list=None) -> str: + if escape_list is None: + escape_list = _ESCAPE_KEY + return str(tag).translate(escape_list) + + +def _escape_tag_value(value) -> str: + ret = _escape_key(value) + if ret.endswith('\\'): + ret += ' ' + return ret + + +def _escape_string(value) -> str: + return str(value).translate(_ESCAPE_STRING) + + +def _convert_timestamp(timestamp, precision=DEFAULT_WRITE_PRECISION): + date_helper = get_date_helper() + if isinstance(timestamp, Integral): + return timestamp # assume precision is correct if timestamp is int + + if isinstance(timestamp, str): + timestamp = date_helper.parse_date(timestamp) + + if isinstance(timestamp, timedelta) or isinstance(timestamp, datetime): + + if isinstance(timestamp, datetime): + timestamp = date_helper.to_utc(timestamp) - EPOCH + + ns = date_helper.to_nanoseconds(timestamp) + + if precision is None or precision == WritePrecision.NS: + return ns + elif precision == WritePrecision.US: + return ns / 1e3 + elif precision == WritePrecision.MS: + return ns / 1e6 + elif precision == WritePrecision.S: + return ns / 1e9 + + raise ValueError(timestamp) + + +def _np_is_subtype(value, np_type): + if not _HAS_NUMPY or not hasattr(value, 'dtype'): + return False + + if np_type == 'float': + return np.issubdtype(value, np.floating) + elif np_type == 'int': + return np.issubdtype(value, np.integer) + return False diff --git a/frogpilot/third_party/influxdb_client/client/write/retry.py b/frogpilot/third_party/influxdb_client/client/write/retry.py new file mode 100644 index 000000000..2c4b359ec --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/write/retry.py @@ -0,0 +1,148 @@ +"""Implementation for Retry strategy during HTTP requests.""" + +import logging +from datetime import datetime, timedelta +from itertools import takewhile +from random import random +from typing import Callable + +from urllib3 import Retry +from urllib3.exceptions import MaxRetryError, ResponseError + +from influxdb_client.client.exceptions import InfluxDBError + +logger = logging.getLogger('influxdb_client.client.write.retry') + + +class WritesRetry(Retry): + """ + Writes retry configuration. + + The next delay is computed as random value between range + `retry_interval * exponential_base^(attempts-1)` and `retry_interval * exponential_base^(attempts) + + Example: + for retry_interval=5, exponential_base=2, max_retry_delay=125, total=5 + retry delays are random distributed values within the ranges of + [5-10, 10-20, 20-40, 40-80, 80-125] + """ + + def __init__(self, jitter_interval=0, max_retry_delay=125, exponential_base=2, max_retry_time=180, total=5, + retry_interval=5, retry_callback: Callable[[Exception], int] = None, **kw): + """ + Initialize defaults. + + :param int jitter_interval: random milliseconds when retrying writes + :param num max_retry_delay: maximum delay when retrying write in seconds + :param int max_retry_time: maximum total retry timeout in seconds, + attempt after this timout throws MaxRetryError + :param int total: maximum number of retries + :param num retry_interval: initial first retry delay range in seconds + :param int exponential_base: base for the exponential retry delay, + :param Callable[[Exception], int] retry_callback: the callable ``callback`` to run after retryable + error occurred. + The callable must accept one argument: + - `Exception`: an retryable error + """ + super().__init__(**kw) + self.jitter_interval = jitter_interval + self.total = total + self.retry_interval = retry_interval + self.max_retry_delay = max_retry_delay + self.max_retry_time = max_retry_time + self.exponential_base = exponential_base + self.retry_timeout = datetime.now() + timedelta(seconds=max_retry_time) + self.retry_callback = retry_callback + + def new(self, **kw): + """Initialize defaults.""" + if 'jitter_interval' not in kw: + kw['jitter_interval'] = self.jitter_interval + if 'retry_interval' not in kw: + kw['retry_interval'] = self.retry_interval + if 'max_retry_delay' not in kw: + kw['max_retry_delay'] = self.max_retry_delay + if 'max_retry_time' not in kw: + kw['max_retry_time'] = self.max_retry_time + if 'exponential_base' not in kw: + kw['exponential_base'] = self.exponential_base + if 'retry_callback' not in kw: + kw['retry_callback'] = self.retry_callback + + new = super().new(**kw) + new.retry_timeout = self.retry_timeout + return new + + def is_retry(self, method, status_code, has_retry_after=False): + """is_retry doesn't require retry_after header. If there is not Retry-After we will use backoff.""" + if not self._is_method_retryable(method): + return False + + return self.total and (status_code >= 429) + + def get_backoff_time(self): + """Variant of exponential backoff with initial and max delay and a random jitter delay.""" + # We want to consider only the last consecutive errors sequence (Ignore redirects). + consecutive_errors_len = len( + list( + takewhile(lambda x: x.redirect_location is None, reversed(self.history)) + ) + ) + # First fail doesn't increase backoff + consecutive_errors_len -= 1 + if consecutive_errors_len < 0: + return 0 + + range_start = self.retry_interval + range_stop = self.retry_interval * self.exponential_base + + i = 1 + while i <= consecutive_errors_len: + i += 1 + range_start = range_stop + range_stop = range_stop * self.exponential_base + if range_stop > self.max_retry_delay: + break + + if range_stop > self.max_retry_delay: + range_stop = self.max_retry_delay + + return range_start + (range_stop - range_start) * self._random() + + def get_retry_after(self, response): + """Get the value of Retry-After header and append random jitter delay.""" + retry_after = super().get_retry_after(response) + if retry_after: + retry_after += self._jitter_delay() + return retry_after + + def increment(self, method=None, url=None, response=None, error=None, _pool=None, _stacktrace=None): + """Return a new Retry object with incremented retry counters.""" + if self.retry_timeout < datetime.now(): + raise MaxRetryError(_pool, url, error or ResponseError("max_retry_time exceeded")) + + new_retry = super().increment(method, url, response, error, _pool, _stacktrace) + + if response is not None: + parsed_error = InfluxDBError(response=response) + elif error is not None: + parsed_error = error + else: + parsed_error = f"Failed request to: {url}" + + message = f"The retriable error occurred during request. Reason: '{parsed_error}'." + if isinstance(parsed_error, InfluxDBError): + message += f" Retry in {parsed_error.retry_after}s." + + if self.retry_callback: + self.retry_callback(parsed_error) + + logger.warning(message) + + return new_retry + + def _jitter_delay(self): + return self.jitter_interval * random() + + def _random(self): + return random() diff --git a/frogpilot/third_party/influxdb_client/client/write_api.py b/frogpilot/third_party/influxdb_client/client/write_api.py new file mode 100644 index 000000000..3b3db68fe --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/write_api.py @@ -0,0 +1,587 @@ +"""Collect and write time series data to InfluxDB Cloud or InfluxDB OSS.""" + +# coding: utf-8 +import logging +import os +import warnings +from collections import defaultdict +from datetime import timedelta +from enum import Enum +from random import random +from time import sleep +from typing import Union, Any, Iterable, NamedTuple + +import reactivex as rx +from reactivex import operators as ops, Observable +from reactivex.scheduler import ThreadPoolScheduler +from reactivex.subject import Subject + +from influxdb_client import WritePrecision +from influxdb_client.client._base import _BaseWriteApi, _HAS_DATACLASS +from influxdb_client.client.util.helpers import get_org_query_param +from influxdb_client.client.write.dataframe_serializer import DataframeSerializer +from influxdb_client.client.write.point import Point, DEFAULT_WRITE_PRECISION +from influxdb_client.client.write.retry import WritesRetry +from influxdb_client.rest import _UTF_8_encoding + +logger = logging.getLogger('influxdb_client.client.write_api') + + +if _HAS_DATACLASS: + import dataclasses + from dataclasses import dataclass + + +class WriteType(Enum): + """Configuration which type of writes will client use.""" + + batching = 1 + asynchronous = 2 + synchronous = 3 + + +class WriteOptions(object): + """Write configuration.""" + + def __init__(self, write_type: WriteType = WriteType.batching, + batch_size=1_000, flush_interval=1_000, + jitter_interval=0, + retry_interval=5_000, + max_retries=5, + max_retry_delay=125_000, + max_retry_time=180_000, + exponential_base=2, + max_close_wait=300_000, + write_scheduler=ThreadPoolScheduler(max_workers=1)) -> None: + """ + Create write api configuration. + + :param write_type: methods of write (batching, asynchronous, synchronous) + :param batch_size: the number of data point to collect in batch + :param flush_interval: flush data at least in this interval (milliseconds) + :param jitter_interval: this is primarily to avoid large write spikes for users running a large number of + client instances ie, a jitter of 5s and flush duration 10s means flushes will happen every 10-15s + (milliseconds) + :param retry_interval: the time to wait before retry unsuccessful write (milliseconds) + :param max_retries: the number of max retries when write fails, 0 means retry is disabled + :param max_retry_delay: the maximum delay between each retry attempt in milliseconds + :param max_retry_time: total timeout for all retry attempts in milliseconds, if 0 retry is disabled + :param exponential_base: base for the exponential retry delay + :parama max_close_wait: the maximum time to wait for writes to be flushed if close() is called + :param write_scheduler: + """ + self.write_type = write_type + self.batch_size = batch_size + self.flush_interval = flush_interval + self.jitter_interval = jitter_interval + self.retry_interval = retry_interval + self.max_retries = max_retries + self.max_retry_delay = max_retry_delay + self.max_retry_time = max_retry_time + self.exponential_base = exponential_base + self.write_scheduler = write_scheduler + self.max_close_wait = max_close_wait + + def to_retry_strategy(self, **kwargs): + """ + Create a Retry strategy from write options. + + :key retry_callback: The callable ``callback`` to run after retryable error occurred. + The callable must accept one argument: + - `Exception`: an retryable error + """ + return WritesRetry( + total=self.max_retries, + retry_interval=self.retry_interval / 1_000, + jitter_interval=self.jitter_interval / 1_000, + max_retry_delay=self.max_retry_delay / 1_000, + max_retry_time=self.max_retry_time / 1_000, + exponential_base=self.exponential_base, + retry_callback=kwargs.get("retry_callback", None), + allowed_methods=["POST"]) + + def __getstate__(self): + """Return a dict of attributes that you want to pickle.""" + state = self.__dict__.copy() + # Remove write scheduler + del state['write_scheduler'] + return state + + def __setstate__(self, state): + """Set your object with the provided dict.""" + self.__dict__.update(state) + # Init default write Scheduler + self.write_scheduler = ThreadPoolScheduler(max_workers=1) + + +SYNCHRONOUS = WriteOptions(write_type=WriteType.synchronous) +ASYNCHRONOUS = WriteOptions(write_type=WriteType.asynchronous) + + +class PointSettings(object): + """Settings to store default tags.""" + + def __init__(self, **default_tags) -> None: + """ + Create point settings for write api. + + :param default_tags: Default tags which will be added to each point written by api. + """ + self.defaultTags = dict() + + for key, val in default_tags.items(): + self.add_default_tag(key, val) + + @staticmethod + def _get_value(value): + + if value.startswith("${env."): + return os.environ.get(value[6:-1]) + + return value + + def add_default_tag(self, key, value) -> None: + """Add new default tag with key and value.""" + self.defaultTags[key] = self._get_value(value) + + +class _BatchItemKey(object): + def __init__(self, bucket, org, precision=DEFAULT_WRITE_PRECISION) -> None: + self.bucket = bucket + self.org = org + self.precision = precision + pass + + def __hash__(self) -> int: + return hash((self.bucket, self.org, self.precision)) + + def __eq__(self, o: object) -> bool: + return isinstance(o, self.__class__) \ + and self.bucket == o.bucket and self.org == o.org and self.precision == o.precision + + def __str__(self) -> str: + return '_BatchItemKey[bucket:\'{}\', org:\'{}\', precision:\'{}\']' \ + .format(str(self.bucket), str(self.org), str(self.precision)) + + +class _BatchItem(object): + def __init__(self, key: _BatchItemKey, data, size=1) -> None: + self.key = key + self.data = data + self.size = size + pass + + def to_key_tuple(self) -> (str, str, str): + return self.key.bucket, self.key.org, self.key.precision + + def __str__(self) -> str: + return '_BatchItem[key:\'{}\', size: \'{}\']' \ + .format(str(self.key), str(self.size)) + + +class _BatchResponse(object): + def __init__(self, data: _BatchItem, exception: Exception = None): + self.data = data + self.exception = exception + pass + + def __str__(self) -> str: + return '_BatchResponse[status:\'{}\', \'{}\']' \ + .format("failed" if self.exception else "success", str(self.data)) + + +def _body_reduce(batch_items): + return b'\n'.join(map(lambda batch_item: batch_item.data, batch_items)) + + +class WriteApi(_BaseWriteApi): + """ + Implementation for '/api/v2/write' endpoint. + + Example: + .. code-block:: python + + from influxdb_client import InfluxDBClient + from influxdb_client.client.write_api import SYNCHRONOUS + + + # Initialize SYNCHRONOUS instance of WriteApi + with InfluxDBClient(url="http://localhost:8086", token="my-token", org="my-org") as client: + write_api = client.write_api(write_options=SYNCHRONOUS) + """ + + def __init__(self, + influxdb_client, + write_options: WriteOptions = WriteOptions(), + point_settings: PointSettings = PointSettings(), + **kwargs) -> None: + """ + Initialize defaults. + + :param influxdb_client: with default settings (organization) + :param write_options: write api configuration + :param point_settings: settings to store default tags. + :key success_callback: The callable ``callback`` to run after successfully writen a batch. + + The callable must accept two arguments: + - `Tuple`: ``(bucket, organization, precision)`` + - `str`: written data + + **[batching mode]** + :key error_callback: The callable ``callback`` to run after unsuccessfully writen a batch. + + The callable must accept three arguments: + - `Tuple`: ``(bucket, organization, precision)`` + - `str`: written data + - `Exception`: an occurred error + + **[batching mode]** + :key retry_callback: The callable ``callback`` to run after retryable error occurred. + + The callable must accept three arguments: + - `Tuple`: ``(bucket, organization, precision)`` + - `str`: written data + - `Exception`: an retryable error + + **[batching mode]** + """ + super().__init__(influxdb_client=influxdb_client, point_settings=point_settings) + self._write_options = write_options + self._success_callback = kwargs.get('success_callback', None) + self._error_callback = kwargs.get('error_callback', None) + self._retry_callback = kwargs.get('retry_callback', None) + self._window_scheduler = None + + if self._write_options.write_type is WriteType.batching: + # Define Subject that listen incoming data and produces writes into InfluxDB + self._subject = Subject() + + self._window_scheduler = ThreadPoolScheduler(1) + self._disposable = self._subject.pipe( + # Split incoming data to windows by batch_size or flush_interval + ops.window_with_time_or_count(count=write_options.batch_size, + timespan=timedelta(milliseconds=write_options.flush_interval), + scheduler=self._window_scheduler), + # Map window into groups defined by 'organization', 'bucket' and 'precision' + ops.flat_map(lambda window: window.pipe( + # Group window by 'organization', 'bucket' and 'precision' + ops.group_by(lambda batch_item: batch_item.key), + # Create batch (concatenation line protocols by \n) + ops.map(lambda group: group.pipe( + ops.to_iterable(), + ops.map(lambda xs: _BatchItem(key=group.key, data=_body_reduce(xs), size=len(xs))))), + ops.merge_all())), + # Write data into InfluxDB (possibility to retry if its fail) + ops.filter(lambda batch: batch.size > 0), + ops.map(mapper=lambda batch: self._to_response(data=batch, delay=self._jitter_delay())), + ops.merge_all()) \ + .subscribe(self._on_next, self._on_error, self._on_complete) + + else: + self._subject = None + self._disposable = None + + if self._write_options.write_type is WriteType.asynchronous: + message = """The 'WriteType.asynchronous' is deprecated and will be removed in future major version. + +You can use native asynchronous version of the client: +- https://influxdb-client.readthedocs.io/en/stable/usage.html#how-to-use-asyncio + """ + warnings.warn(message, DeprecationWarning) + + def write(self, bucket: str, org: str = None, + record: Union[ + str, Iterable['str'], Point, Iterable['Point'], dict, Iterable['dict'], bytes, Iterable['bytes'], + Observable, NamedTuple, Iterable['NamedTuple'], 'dataclass', Iterable['dataclass'] + ] = None, + write_precision: WritePrecision = DEFAULT_WRITE_PRECISION, **kwargs) -> Any: + """ + Write time-series data into InfluxDB. + + :param str bucket: specifies the destination bucket for writes (required) + :param str, Organization org: specifies the destination organization for writes; + take the ID, Name or Organization. + If not specified the default value from ``InfluxDBClient.org`` is used. + :param WritePrecision write_precision: specifies the precision for the unix timestamps within + the body line-protocol. The precision specified on a Point has precedes + and is use for write. + :param record: Point, Line Protocol, Dictionary, NamedTuple, Data Classes, Pandas DataFrame or + RxPY Observable to write + :key data_frame_measurement_name: name of measurement for writing Pandas DataFrame - ``DataFrame`` + :key data_frame_tag_columns: list of DataFrame columns which are tags, + rest columns will be fields - ``DataFrame`` + :key data_frame_timestamp_column: name of DataFrame column which contains a timestamp. The column can be defined as a :class:`~str` value + formatted as `2018-10-26`, `2018-10-26 12:00`, `2018-10-26 12:00:00-05:00` + or other formats and types supported by `pandas.to_datetime `_ - ``DataFrame`` + :key data_frame_timestamp_timezone: name of the timezone which is used for timestamp column - ``DataFrame`` + :key record_measurement_key: key of record with specified measurement - + ``dictionary``, ``NamedTuple``, ``dataclass`` + :key record_measurement_name: static measurement name - ``dictionary``, ``NamedTuple``, ``dataclass`` + :key record_time_key: key of record with specified timestamp - ``dictionary``, ``NamedTuple``, ``dataclass`` + :key record_tag_keys: list of record keys to use as a tag - ``dictionary``, ``NamedTuple``, ``dataclass`` + :key record_field_keys: list of record keys to use as a field - ``dictionary``, ``NamedTuple``, ``dataclass`` + + Example: + .. code-block:: python + + # Record as Line Protocol + write_api.write("my-bucket", "my-org", "h2o_feet,location=us-west level=125i 1") + + # Record as Dictionary + dictionary = { + "measurement": "h2o_feet", + "tags": {"location": "us-west"}, + "fields": {"level": 125}, + "time": 1 + } + write_api.write("my-bucket", "my-org", dictionary) + + # Record as Point + from influxdb_client import Point + point = Point("h2o_feet").tag("location", "us-west").field("level", 125).time(1) + write_api.write("my-bucket", "my-org", point) + + DataFrame: + If the ``data_frame_timestamp_column`` is not specified the index of `Pandas DataFrame `_ + is used as a ``timestamp`` for written data. The index can be `PeriodIndex `_ + or its must be transformable to ``datetime`` by + `pandas.to_datetime `_. + + If you would like to transform a column to ``PeriodIndex``, you can use something like: + + .. code-block:: python + + import pandas as pd + + # DataFrame + data_frame = ... + # Set column as Index + data_frame.set_index('column_name', inplace=True) + # Transform index to PeriodIndex + data_frame.index = pd.to_datetime(data_frame.index, unit='s') + + """ # noqa: E501 + org = get_org_query_param(org=org, client=self._influxdb_client) + + self._append_default_tags(record) + + if self._write_options.write_type is WriteType.batching: + return self._write_batching(bucket, org, record, + write_precision, **kwargs) + + payloads = defaultdict(list) + self._serialize(record, write_precision, payloads, **kwargs) + + _async_req = True if self._write_options.write_type == WriteType.asynchronous else False + + def write_payload(payload): + final_string = b'\n'.join(payload[1]) + return self._post_write(_async_req, bucket, org, final_string, payload[0]) + + results = list(map(write_payload, payloads.items())) + if not _async_req: + return None + elif len(results) == 1: + return results[0] + return results + + def flush(self): + """Flush data.""" + # TODO + pass + + def close(self): + """Flush data and dispose a batching buffer.""" + self.__del__() + + def __enter__(self): + """ + Enter the runtime context related to this object. + + It will bind this methodโ€™s return value to the target(s) + specified in the `as` clause of the statement. + + return: self instance + """ + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + """Exit the runtime context related to this object and close the WriteApi.""" + self.close() + + def __del__(self): + """Close WriteApi.""" + if self._subject: + self._subject.on_completed() + self._subject.dispose() + self._subject = None + + """ + We impose a maximum wait time to ensure that we do not cause a deadlock if the + background thread has exited abnormally + + Each iteration waits 100ms, but sleep expects the unit to be seconds so convert + the maximum wait time to seconds. + + We keep a counter of how long we've waited + """ + max_wait_time = self._write_options.max_close_wait / 1000 + waited = 0 + sleep_period = 0.1 + + # Wait for writing to finish + while not self._disposable.is_disposed: + sleep(sleep_period) + waited += sleep_period + + # Have we reached the upper limit? + if waited >= max_wait_time: + logger.warning( + "Reached max_close_wait (%s seconds) waiting for batches to finish writing. Force closing", + max_wait_time + ) + break + + if self._window_scheduler: + self._window_scheduler.executor.shutdown(wait=False) + self._window_scheduler = None + + if self._disposable: + self._disposable = None + pass + + def _write_batching(self, bucket, org, data, + precision=DEFAULT_WRITE_PRECISION, + **kwargs): + if isinstance(data, bytes): + _key = _BatchItemKey(bucket, org, precision) + self._subject.on_next(_BatchItem(key=_key, data=data)) + + elif isinstance(data, str): + self._write_batching(bucket, org, data.encode(_UTF_8_encoding), + precision, **kwargs) + + elif isinstance(data, Point): + self._write_batching(bucket, org, data.to_line_protocol(), data.write_precision, **kwargs) + + elif isinstance(data, dict): + self._write_batching(bucket, org, Point.from_dict(data, write_precision=precision, **kwargs), + precision, **kwargs) + + elif 'DataFrame' in type(data).__name__: + serializer = DataframeSerializer(data, self._point_settings, precision, self._write_options.batch_size, + **kwargs) + for chunk_idx in range(serializer.number_of_chunks): + self._write_batching(bucket, org, + serializer.serialize(chunk_idx), + precision, **kwargs) + elif hasattr(data, "_asdict"): + # noinspection PyProtectedMember + self._write_batching(bucket, org, data._asdict(), precision, **kwargs) + + elif _HAS_DATACLASS and dataclasses.is_dataclass(data): + self._write_batching(bucket, org, dataclasses.asdict(data), precision, **kwargs) + + elif isinstance(data, Iterable): + for item in data: + self._write_batching(bucket, org, item, precision, **kwargs) + + elif isinstance(data, Observable): + data.subscribe(lambda it: self._write_batching(bucket, org, it, precision, **kwargs)) + pass + + return None + + def _http(self, batch_item: _BatchItem): + + logger.debug("Write time series data into InfluxDB: %s", batch_item) + + if self._retry_callback: + def _retry_callback_delegate(exception): + return self._retry_callback(batch_item.to_key_tuple(), batch_item.data, exception) + else: + _retry_callback_delegate = None + + retry = self._write_options.to_retry_strategy(retry_callback=_retry_callback_delegate) + + self._post_write(False, batch_item.key.bucket, batch_item.key.org, batch_item.data, + batch_item.key.precision, urlopen_kw={'retries': retry}) + + logger.debug("Write request finished %s", batch_item) + + return _BatchResponse(data=batch_item) + + def _post_write(self, _async_req, bucket, org, body, precision, **kwargs): + + return self._write_service.post_write(org=org, bucket=bucket, body=body, precision=precision, + async_req=_async_req, + content_type="text/plain; charset=utf-8", + **kwargs) + + def _to_response(self, data: _BatchItem, delay: timedelta): + + return rx.of(data).pipe( + ops.subscribe_on(self._write_options.write_scheduler), + # use delay if its specified + ops.delay(duetime=delay, scheduler=self._write_options.write_scheduler), + # invoke http call + ops.map(lambda x: self._http(x)), + # catch exception to fail batch response + ops.catch(handler=lambda exception, source: rx.just(_BatchResponse(exception=exception, data=data))), + ) + + def _jitter_delay(self): + return timedelta(milliseconds=random() * self._write_options.jitter_interval) + + def _on_next(self, response: _BatchResponse): + if response.exception: + logger.error("The batch item wasn't processed successfully because: %s", response.exception) + if self._error_callback: + try: + self._error_callback(response.data.to_key_tuple(), response.data.data, response.exception) + except Exception as e: + """ + Unfortunately, because callbacks are user-provided generic code, exceptions can be entirely + arbitrary + + We trap it, log that it occurred and then proceed - there's not much more that we can + really do. + """ + logger.error("The configured error callback threw an exception: %s", e) + + else: + logger.debug("The batch item: %s was processed successfully.", response) + if self._success_callback: + try: + self._success_callback(response.data.to_key_tuple(), response.data.data) + except Exception as e: + logger.error("The configured success callback threw an exception: %s", e) + + @staticmethod + def _on_error(ex): + logger.error("unexpected error during batching: %s", ex) + + def _on_complete(self): + self._disposable.dispose() + logger.info("the batching processor was disposed") + + def __getstate__(self): + """Return a dict of attributes that you want to pickle.""" + state = self.__dict__.copy() + # Remove rx + del state['_subject'] + del state['_disposable'] + del state['_window_scheduler'] + del state['_write_service'] + return state + + def __setstate__(self, state): + """Set your object with the provided dict.""" + self.__dict__.update(state) + # Init Rx + self.__init__(self._influxdb_client, + self._write_options, + self._point_settings, + success_callback=self._success_callback, + error_callback=self._error_callback, + retry_callback=self._retry_callback) diff --git a/frogpilot/third_party/influxdb_client/client/write_api_async.py b/frogpilot/third_party/influxdb_client/client/write_api_async.py new file mode 100644 index 000000000..38937ecad --- /dev/null +++ b/frogpilot/third_party/influxdb_client/client/write_api_async.py @@ -0,0 +1,134 @@ +"""Collect and async write time series data to InfluxDB Cloud or InfluxDB OSS.""" +import logging +from asyncio import ensure_future, gather +from collections import defaultdict +from typing import Union, Iterable, NamedTuple + +from influxdb_client import Point, WritePrecision +from influxdb_client.client._base import _BaseWriteApi, _HAS_DATACLASS +from influxdb_client.client.util.helpers import get_org_query_param +from influxdb_client.client.write.point import DEFAULT_WRITE_PRECISION +from influxdb_client.client.write_api import PointSettings + +logger = logging.getLogger('influxdb_client.client.write_api_async') + +if _HAS_DATACLASS: + from dataclasses import dataclass + + +class WriteApiAsync(_BaseWriteApi): + """ + Implementation for '/api/v2/write' endpoint. + + Example: + .. code-block:: python + + from influxdb_client_async import InfluxDBClientAsync + + + # Initialize async/await instance of Write API + async with InfluxDBClientAsync(url="http://localhost:8086", token="my-token", org="my-org") as client: + write_api = client.write_api() + """ + + def __init__(self, influxdb_client, point_settings: PointSettings = PointSettings()) -> None: + """ + Initialize defaults. + + :param influxdb_client: with default settings (organization) + :param point_settings: settings to store default tags. + """ + super().__init__(influxdb_client=influxdb_client, point_settings=point_settings) + + async def write(self, bucket: str, org: str = None, + record: Union[str, Iterable['str'], Point, Iterable['Point'], dict, Iterable['dict'], bytes, + Iterable['bytes'], NamedTuple, Iterable['NamedTuple'], 'dataclass', + Iterable['dataclass']] = None, + write_precision: WritePrecision = DEFAULT_WRITE_PRECISION, **kwargs) -> bool: + """ + Write time-series data into InfluxDB. + + :param str bucket: specifies the destination bucket for writes (required) + :param str, Organization org: specifies the destination organization for writes; + take the ID, Name or Organization. + If not specified the default value from ``InfluxDBClientAsync.org`` is used. + :param WritePrecision write_precision: specifies the precision for the unix timestamps within + the body line-protocol. The precision specified on a Point has precedes + and is use for write. + :param record: Point, Line Protocol, Dictionary, NamedTuple, Data Classes, Pandas DataFrame + :key data_frame_measurement_name: name of measurement for writing Pandas DataFrame - ``DataFrame`` + :key data_frame_tag_columns: list of DataFrame columns which are tags, + rest columns will be fields - ``DataFrame`` + :key data_frame_timestamp_column: name of DataFrame column which contains a timestamp. The column can be defined as a :class:`~str` value + formatted as `2018-10-26`, `2018-10-26 12:00`, `2018-10-26 12:00:00-05:00` + or other formats and types supported by `pandas.to_datetime `_ - ``DataFrame`` + :key data_frame_timestamp_timezone: name of the timezone which is used for timestamp column - ``DataFrame`` + :key record_measurement_key: key of record with specified measurement - + ``dictionary``, ``NamedTuple``, ``dataclass`` + :key record_measurement_name: static measurement name - ``dictionary``, ``NamedTuple``, ``dataclass`` + :key record_time_key: key of record with specified timestamp - ``dictionary``, ``NamedTuple``, ``dataclass`` + :key record_tag_keys: list of record keys to use as a tag - ``dictionary``, ``NamedTuple``, ``dataclass`` + :key record_field_keys: list of record keys to use as a field - ``dictionary``, ``NamedTuple``, ``dataclass`` + :return: ``True`` for successfully accepted data, otherwise raise an exception + + Example: + .. code-block:: python + + # Record as Line Protocol + await write_api.write("my-bucket", "my-org", "h2o_feet,location=us-west level=125i 1") + + # Record as Dictionary + dictionary = { + "measurement": "h2o_feet", + "tags": {"location": "us-west"}, + "fields": {"level": 125}, + "time": 1 + } + await write_api.write("my-bucket", "my-org", dictionary) + + # Record as Point + from influxdb_client import Point + point = Point("h2o_feet").tag("location", "us-west").field("level", 125).time(1) + await write_api.write("my-bucket", "my-org", point) + + DataFrame: + If the ``data_frame_timestamp_column`` is not specified the index of `Pandas DataFrame `_ + is used as a ``timestamp`` for written data. The index can be `PeriodIndex `_ + or its must be transformable to ``datetime`` by + `pandas.to_datetime `_. + + If you would like to transform a column to ``PeriodIndex``, you can use something like: + + .. code-block:: python + + import pandas as pd + + # DataFrame + data_frame = ... + # Set column as Index + data_frame.set_index('column_name', inplace=True) + # Transform index to PeriodIndex + data_frame.index = pd.to_datetime(data_frame.index, unit='s') + + """ # noqa: E501 + org = get_org_query_param(org=org, client=self._influxdb_client) + self._append_default_tags(record) + + payloads = defaultdict(list) + self._serialize(record, write_precision, payloads, precision_from_point=True, **kwargs) + + futures = [] + for payload_precision, payload_line in payloads.items(): + futures.append(ensure_future + (self._write_service.post_write_async(org=org, bucket=bucket, + body=b'\n'.join(payload_line), + precision=payload_precision, async_req=False, + _return_http_data_only=False, + content_type="text/plain; charset=utf-8"))) + + results = await gather(*futures, return_exceptions=True) + for result in results: + if isinstance(result, Exception): + raise result + + return False not in [re[1] in (201, 204) for re in results] diff --git a/frogpilot/third_party/influxdb_client/configuration.py b/frogpilot/third_party/influxdb_client/configuration.py new file mode 100644 index 000000000..96b103016 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/configuration.py @@ -0,0 +1,283 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import copy +import logging +import multiprocessing +import sys + +import urllib3 + + +class TypeWithDefault(type): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + Do not edit the class manually. + """ + + def __init__(cls, name, bases, dct): + """Initialize with defaults.""" + super(TypeWithDefault, cls).__init__(name, bases, dct) + cls._default = None + + def __call__(cls): + """Call self as a function.""" + if cls._default is None: + cls._default = type.__call__(cls) + return copy.copy(cls._default) + + def set_default(cls, default): + """Set dafaults.""" + cls._default = copy.copy(default) + + +class Configuration(object, metaclass=TypeWithDefault): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + Do not edit the class manually. + """ + + def __init__(self): + """Initialize configuration.""" + # Default Base url + self.host = "http://localhost/api/v2" + # Temp file folder for downloading files + self.temp_folder_path = None + + # Authentication Settings + # dict to store API key(s) + self.api_key = {} + # dict to store API prefix (e.g. Bearer) + self.api_key_prefix = {} + # Username for HTTP basic authentication + self.username = "" + # Password for HTTP basic authentication + self.password = "" + + # Logging Settings + self.loggers = {} + # Log format + self.logger_format = '%(asctime)s %(levelname)s %(message)s' + # Log stream handler + self.logger_stream_handler = None + # Log file handler + self.logger_file_handler = None + # Debug file location + self.logger_file = None + # Debug switch + self.debug = False + + # SSL/TLS verification + # Set this to false to skip verifying SSL certificate when calling API + # from https server. + self.verify_ssl = True + # Set this to customize the certificate file to verify the peer. + self.ssl_ca_cert = None + # client certificate file + self.cert_file = None + # client key file + self.cert_key_file = None + # client key file password + self.cert_key_password = None + # Set this to True/False to enable/disable SSL hostname verification. + self.assert_hostname = None + + # Set this to specify a custom ssl context to inject this context inside the urllib3 connection pool. + self.ssl_context = None + + # urllib3 connection pool's maximum number of connections saved + # per pool. urllib3 uses 1 connection as default value, but this is + # not the best value when you are making a lot of possibly parallel + # requests to the same host, which is often the case here. + # cpu_count * 5 is used as default value to increase performance. + self.connection_pool_maxsize = multiprocessing.cpu_count() * 5 + # Timeout setting for a request. If one number provided, it will be total request timeout. + # It can also be a pair (tuple) of (connection, read) timeouts. + self.timeout = None + + # Set to True/False to enable basic authentication when using proxied InfluxDB 1.8.x with no auth-enabled + self.auth_basic = False + + # Proxy URL + self.proxy = None + # A dictionary containing headers that will be sent to the proxy + self.proxy_headers = None + # Safe chars for path_param + self.safe_chars_for_path_param = '' + + @property + def logger_file(self): + """Logger file. + + If the logger_file is None, then add stream handler and remove file + handler. Otherwise, add file handler and remove stream handler. + + :param value: The logger_file path. + :type: str + """ + return self.__logger_file + + @logger_file.setter + def logger_file(self, value): + """Logger file. + + If the logger_file is None, then add stream handler and remove file + handler. Otherwise, add file handler and remove stream handler. + + :param value: The logger_file path. + :type: str + """ + self.__logger_file = value + if self.__logger_file: + # If set logging file, + # then add file handler and remove stream handler. + self.logger_file_handler = logging.FileHandler(self.__logger_file) + self.logger_file_handler.setFormatter(self.logger_formatter) + for _, logger in self.loggers.items(): + logger.addHandler(self.logger_file_handler) + + @property + def debug(self): + """Debug status. + + :param value: The debug status, True or False. + :type: bool + """ + return self.__debug + + @debug.setter + def debug(self, value): + """Debug status. + + :param value: The debug status, True or False. + :type: bool + """ + self.__debug = value + if self.__debug: + # if debug status is True, turn on debug logging + for name, logger in self.loggers.items(): + logger.setLevel(logging.DEBUG) + if name == 'influxdb_client.client.http': + # makes sure to do not duplicate stdout handler + if not any(map(lambda h: isinstance(h, logging.StreamHandler) and h.stream == sys.stdout, + logger.handlers)): + logger.addHandler(logging.StreamHandler(sys.stdout)) + # we use 'influxdb_client.client.http' logger instead of this + # httplib.HTTPConnection.debuglevel = 1 + else: + # if debug status is False, turn off debug logging, + # setting log level to default `logging.WARNING` + for _, logger in self.loggers.items(): + logger.setLevel(logging.WARNING) + # we use 'influxdb_client.client.http' logger instead of this + # httplib.HTTPConnection.debuglevel = 0 + + @property + def logger_format(self): + """Logger format. + + The logger_formatter will be updated when sets logger_format. + + :param value: The format string. + :type: str + """ + return self.__logger_format + + @logger_format.setter + def logger_format(self, value): + """Logger format. + + The logger_formatter will be updated when sets logger_format. + + :param value: The format string. + :type: str + """ + self.__logger_format = value + self.logger_formatter = logging.Formatter(self.__logger_format) + + def get_api_key_with_prefix(self, identifier): + """Get API key (with prefix if set). + + :param identifier: The identifier of apiKey. + :return: The token for api key authentication. + """ + if (self.api_key.get(identifier) and + self.api_key_prefix.get(identifier)): + return self.api_key_prefix[identifier] + ' ' + self.api_key[identifier] # noqa: E501 + elif self.api_key.get(identifier): + return self.api_key[identifier] + + def get_basic_auth_token(self): + """Get HTTP basic authentication header (string). + + :return: The token for basic HTTP authentication. + """ + return urllib3.util.make_headers( + basic_auth=self.username + ':' + self.password + ).get('authorization') + + def auth_settings(self): + """Get Auth Settings dict for api client. + + :return: The Auth Settings information dict. + """ + return { + 'BasicAuthentication': + { + 'type': 'basic', + 'in': 'header', + 'key': 'Authorization', + 'value': self.get_basic_auth_token() + }, + 'TokenAuthentication': + { + 'type': 'api_key', + 'in': 'header', + 'key': 'Authorization', + 'value': self.get_api_key_with_prefix('Authorization') + }, + + } + + def to_debug_report(self): + """Get the essential information for debugging. + + :return: The report for debugging. + """ + from influxdb_client import VERSION + return "Python SDK Debug Report:\n"\ + "OS: {env}\n"\ + "Python Version: {pyversion}\n"\ + "Version of the API: 2.0.0\n"\ + "SDK Package Version: {client_version}".\ + format(env=sys.platform, pyversion=sys.version, client_version=VERSION) + + def update_request_header_params(self, path: str, params: dict): + """Update header params based on custom settings. + + :param path: Resource path + :param params: Header parameters dict to be updated. + """ + pass + + def update_request_body(self, path: str, body): + """Update http body based on custom settings. + + :param path: Resource path + :param body: Request body to be updated. + :return: Updated body + """ + return body diff --git a/frogpilot/third_party/influxdb_client/domain/__init__.py b/frogpilot/third_party/influxdb_client/domain/__init__.py new file mode 100644 index 000000000..e9a69d613 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/__init__.py @@ -0,0 +1,335 @@ +# coding: utf-8 + +# flake8: noqa +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +# import models into model package +from influxdb_client.domain.ast_response import ASTResponse +from influxdb_client.domain.add_resource_member_request_body import AddResourceMemberRequestBody +from influxdb_client.domain.analyze_query_response import AnalyzeQueryResponse +from influxdb_client.domain.analyze_query_response_errors import AnalyzeQueryResponseErrors +from influxdb_client.domain.array_expression import ArrayExpression +from influxdb_client.domain.authorization import Authorization +from influxdb_client.domain.authorization_post_request import AuthorizationPostRequest +from influxdb_client.domain.authorization_update_request import AuthorizationUpdateRequest +from influxdb_client.domain.authorizations import Authorizations +from influxdb_client.domain.axes import Axes +from influxdb_client.domain.axis import Axis +from influxdb_client.domain.axis_scale import AxisScale +from influxdb_client.domain.bad_statement import BadStatement +from influxdb_client.domain.band_view_properties import BandViewProperties +from influxdb_client.domain.binary_expression import BinaryExpression +from influxdb_client.domain.block import Block +from influxdb_client.domain.boolean_literal import BooleanLiteral +from influxdb_client.domain.bucket import Bucket +from influxdb_client.domain.bucket_links import BucketLinks +from influxdb_client.domain.bucket_metadata_manifest import BucketMetadataManifest +from influxdb_client.domain.bucket_retention_rules import BucketRetentionRules +from influxdb_client.domain.bucket_shard_mapping import BucketShardMapping +from influxdb_client.domain.buckets import Buckets +from influxdb_client.domain.builder_aggregate_function_type import BuilderAggregateFunctionType +from influxdb_client.domain.builder_config import BuilderConfig +from influxdb_client.domain.builder_config_aggregate_window import BuilderConfigAggregateWindow +from influxdb_client.domain.builder_functions_type import BuilderFunctionsType +from influxdb_client.domain.builder_tags_type import BuilderTagsType +from influxdb_client.domain.builtin_statement import BuiltinStatement +from influxdb_client.domain.call_expression import CallExpression +from influxdb_client.domain.cell import Cell +from influxdb_client.domain.cell_links import CellLinks +from influxdb_client.domain.cell_update import CellUpdate +from influxdb_client.domain.cell_with_view_properties import CellWithViewProperties +from influxdb_client.domain.check import Check +from influxdb_client.domain.check_base import CheckBase +from influxdb_client.domain.check_base_links import CheckBaseLinks +from influxdb_client.domain.check_discriminator import CheckDiscriminator +from influxdb_client.domain.check_patch import CheckPatch +from influxdb_client.domain.check_status_level import CheckStatusLevel +from influxdb_client.domain.check_view_properties import CheckViewProperties +from influxdb_client.domain.checks import Checks +from influxdb_client.domain.column_data_type import ColumnDataType +from influxdb_client.domain.column_semantic_type import ColumnSemanticType +from influxdb_client.domain.conditional_expression import ConditionalExpression +from influxdb_client.domain.config import Config +from influxdb_client.domain.constant_variable_properties import ConstantVariableProperties +from influxdb_client.domain.create_cell import CreateCell +from influxdb_client.domain.create_dashboard_request import CreateDashboardRequest +from influxdb_client.domain.custom_check import CustomCheck +from influxdb_client.domain.dbrp import DBRP +from influxdb_client.domain.dbrp_create import DBRPCreate +from influxdb_client.domain.dbrp_get import DBRPGet +from influxdb_client.domain.dbrp_update import DBRPUpdate +from influxdb_client.domain.dbr_ps import DBRPs +from influxdb_client.domain.dashboard import Dashboard +from influxdb_client.domain.dashboard_color import DashboardColor +from influxdb_client.domain.dashboard_query import DashboardQuery +from influxdb_client.domain.dashboard_with_view_properties import DashboardWithViewProperties +from influxdb_client.domain.dashboards import Dashboards +from influxdb_client.domain.date_time_literal import DateTimeLiteral +from influxdb_client.domain.deadman_check import DeadmanCheck +from influxdb_client.domain.decimal_places import DecimalPlaces +from influxdb_client.domain.delete_predicate_request import DeletePredicateRequest +from influxdb_client.domain.dialect import Dialect +from influxdb_client.domain.dict_expression import DictExpression +from influxdb_client.domain.dict_item import DictItem +from influxdb_client.domain.duration import Duration +from influxdb_client.domain.duration_literal import DurationLiteral +from influxdb_client.domain.error import Error +from influxdb_client.domain.expression import Expression +from influxdb_client.domain.expression_statement import ExpressionStatement +from influxdb_client.domain.field import Field +from influxdb_client.domain.file import File +from influxdb_client.domain.float_literal import FloatLiteral +from influxdb_client.domain.flux_response import FluxResponse +from influxdb_client.domain.flux_suggestion import FluxSuggestion +from influxdb_client.domain.flux_suggestions import FluxSuggestions +from influxdb_client.domain.function_expression import FunctionExpression +from influxdb_client.domain.gauge_view_properties import GaugeViewProperties +from influxdb_client.domain.greater_threshold import GreaterThreshold +from influxdb_client.domain.http_notification_endpoint import HTTPNotificationEndpoint +from influxdb_client.domain.http_notification_rule import HTTPNotificationRule +from influxdb_client.domain.http_notification_rule_base import HTTPNotificationRuleBase +from influxdb_client.domain.health_check import HealthCheck +from influxdb_client.domain.heatmap_view_properties import HeatmapViewProperties +from influxdb_client.domain.histogram_view_properties import HistogramViewProperties +from influxdb_client.domain.identifier import Identifier +from influxdb_client.domain.import_declaration import ImportDeclaration +from influxdb_client.domain.index_expression import IndexExpression +from influxdb_client.domain.integer_literal import IntegerLiteral +from influxdb_client.domain.is_onboarding import IsOnboarding +from influxdb_client.domain.label import Label +from influxdb_client.domain.label_create_request import LabelCreateRequest +from influxdb_client.domain.label_mapping import LabelMapping +from influxdb_client.domain.label_response import LabelResponse +from influxdb_client.domain.label_update import LabelUpdate +from influxdb_client.domain.labels_response import LabelsResponse +from influxdb_client.domain.language_request import LanguageRequest +from influxdb_client.domain.legacy_authorization_post_request import LegacyAuthorizationPostRequest +from influxdb_client.domain.lesser_threshold import LesserThreshold +from influxdb_client.domain.line_plus_single_stat_properties import LinePlusSingleStatProperties +from influxdb_client.domain.line_protocol_error import LineProtocolError +from influxdb_client.domain.line_protocol_length_error import LineProtocolLengthError +from influxdb_client.domain.links import Links +from influxdb_client.domain.list_stacks_response import ListStacksResponse +from influxdb_client.domain.log_event import LogEvent +from influxdb_client.domain.logical_expression import LogicalExpression +from influxdb_client.domain.logs import Logs +from influxdb_client.domain.map_variable_properties import MapVariableProperties +from influxdb_client.domain.markdown_view_properties import MarkdownViewProperties +from influxdb_client.domain.measurement_schema import MeasurementSchema +from influxdb_client.domain.measurement_schema_column import MeasurementSchemaColumn +from influxdb_client.domain.measurement_schema_create_request import MeasurementSchemaCreateRequest +from influxdb_client.domain.measurement_schema_list import MeasurementSchemaList +from influxdb_client.domain.measurement_schema_update_request import MeasurementSchemaUpdateRequest +from influxdb_client.domain.member_assignment import MemberAssignment +from influxdb_client.domain.member_expression import MemberExpression +from influxdb_client.domain.metadata_backup import MetadataBackup +from influxdb_client.domain.model_property import ModelProperty +from influxdb_client.domain.mosaic_view_properties import MosaicViewProperties +from influxdb_client.domain.node import Node +from influxdb_client.domain.notification_endpoint import NotificationEndpoint +from influxdb_client.domain.notification_endpoint_base import NotificationEndpointBase +from influxdb_client.domain.notification_endpoint_base_links import NotificationEndpointBaseLinks +from influxdb_client.domain.notification_endpoint_discriminator import NotificationEndpointDiscriminator +from influxdb_client.domain.notification_endpoint_type import NotificationEndpointType +from influxdb_client.domain.notification_endpoint_update import NotificationEndpointUpdate +from influxdb_client.domain.notification_endpoints import NotificationEndpoints +from influxdb_client.domain.notification_rule import NotificationRule +from influxdb_client.domain.notification_rule_base import NotificationRuleBase +from influxdb_client.domain.notification_rule_base_links import NotificationRuleBaseLinks +from influxdb_client.domain.notification_rule_discriminator import NotificationRuleDiscriminator +from influxdb_client.domain.notification_rule_update import NotificationRuleUpdate +from influxdb_client.domain.notification_rules import NotificationRules +from influxdb_client.domain.object_expression import ObjectExpression +from influxdb_client.domain.onboarding_request import OnboardingRequest +from influxdb_client.domain.onboarding_response import OnboardingResponse +from influxdb_client.domain.option_statement import OptionStatement +from influxdb_client.domain.organization import Organization +from influxdb_client.domain.organization_links import OrganizationLinks +from influxdb_client.domain.organizations import Organizations +from influxdb_client.domain.package import Package +from influxdb_client.domain.package_clause import PackageClause +from influxdb_client.domain.pager_duty_notification_endpoint import PagerDutyNotificationEndpoint +from influxdb_client.domain.pager_duty_notification_rule import PagerDutyNotificationRule +from influxdb_client.domain.pager_duty_notification_rule_base import PagerDutyNotificationRuleBase +from influxdb_client.domain.paren_expression import ParenExpression +from influxdb_client.domain.password_reset_body import PasswordResetBody +from influxdb_client.domain.patch_bucket_request import PatchBucketRequest +from influxdb_client.domain.patch_dashboard_request import PatchDashboardRequest +from influxdb_client.domain.patch_organization_request import PatchOrganizationRequest +from influxdb_client.domain.patch_retention_rule import PatchRetentionRule +from influxdb_client.domain.patch_stack_request import PatchStackRequest +from influxdb_client.domain.patch_stack_request_additional_resources import PatchStackRequestAdditionalResources +from influxdb_client.domain.permission import Permission +from influxdb_client.domain.permission_resource import PermissionResource +from influxdb_client.domain.pipe_expression import PipeExpression +from influxdb_client.domain.pipe_literal import PipeLiteral +from influxdb_client.domain.post_bucket_request import PostBucketRequest +from influxdb_client.domain.post_check import PostCheck +from influxdb_client.domain.post_notification_endpoint import PostNotificationEndpoint +from influxdb_client.domain.post_notification_rule import PostNotificationRule +from influxdb_client.domain.post_organization_request import PostOrganizationRequest +from influxdb_client.domain.post_restore_kv_response import PostRestoreKVResponse +from influxdb_client.domain.post_stack_request import PostStackRequest +from influxdb_client.domain.property_key import PropertyKey +from influxdb_client.domain.query import Query +from influxdb_client.domain.query_edit_mode import QueryEditMode +from influxdb_client.domain.query_variable_properties import QueryVariableProperties +from influxdb_client.domain.query_variable_properties_values import QueryVariablePropertiesValues +from influxdb_client.domain.range_threshold import RangeThreshold +from influxdb_client.domain.ready import Ready +from influxdb_client.domain.regexp_literal import RegexpLiteral +from influxdb_client.domain.remote_connection import RemoteConnection +from influxdb_client.domain.remote_connection_creation_request import RemoteConnectionCreationRequest +from influxdb_client.domain.remote_connection_update_request import RemoteConnectionUpdateRequest +from influxdb_client.domain.remote_connections import RemoteConnections +from influxdb_client.domain.renamable_field import RenamableField +from influxdb_client.domain.replication import Replication +from influxdb_client.domain.replication_creation_request import ReplicationCreationRequest +from influxdb_client.domain.replication_update_request import ReplicationUpdateRequest +from influxdb_client.domain.replications import Replications +from influxdb_client.domain.resource_member import ResourceMember +from influxdb_client.domain.resource_members import ResourceMembers +from influxdb_client.domain.resource_members_links import ResourceMembersLinks +from influxdb_client.domain.resource_owner import ResourceOwner +from influxdb_client.domain.resource_owners import ResourceOwners +from influxdb_client.domain.restored_bucket_mappings import RestoredBucketMappings +from influxdb_client.domain.retention_policy_manifest import RetentionPolicyManifest +from influxdb_client.domain.return_statement import ReturnStatement +from influxdb_client.domain.routes import Routes +from influxdb_client.domain.routes_external import RoutesExternal +from influxdb_client.domain.routes_query import RoutesQuery +from influxdb_client.domain.routes_system import RoutesSystem +from influxdb_client.domain.rule_status_level import RuleStatusLevel +from influxdb_client.domain.run import Run +from influxdb_client.domain.run_links import RunLinks +from influxdb_client.domain.run_manually import RunManually +from influxdb_client.domain.runs import Runs +from influxdb_client.domain.smtp_notification_rule import SMTPNotificationRule +from influxdb_client.domain.smtp_notification_rule_base import SMTPNotificationRuleBase +from influxdb_client.domain.scatter_view_properties import ScatterViewProperties +from influxdb_client.domain.schema_type import SchemaType +from influxdb_client.domain.scraper_target_request import ScraperTargetRequest +from influxdb_client.domain.scraper_target_response import ScraperTargetResponse +from influxdb_client.domain.scraper_target_responses import ScraperTargetResponses +from influxdb_client.domain.script import Script +from influxdb_client.domain.script_create_request import ScriptCreateRequest +from influxdb_client.domain.script_invocation_params import ScriptInvocationParams +from influxdb_client.domain.script_language import ScriptLanguage +from influxdb_client.domain.script_update_request import ScriptUpdateRequest +from influxdb_client.domain.scripts import Scripts +from influxdb_client.domain.secret_keys import SecretKeys +from influxdb_client.domain.secret_keys_response import SecretKeysResponse +from influxdb_client.domain.shard_group_manifest import ShardGroupManifest +from influxdb_client.domain.shard_manifest import ShardManifest +from influxdb_client.domain.shard_owner import ShardOwner +from influxdb_client.domain.simple_table_view_properties import SimpleTableViewProperties +from influxdb_client.domain.single_stat_view_properties import SingleStatViewProperties +from influxdb_client.domain.slack_notification_endpoint import SlackNotificationEndpoint +from influxdb_client.domain.slack_notification_rule import SlackNotificationRule +from influxdb_client.domain.slack_notification_rule_base import SlackNotificationRuleBase +from influxdb_client.domain.source import Source +from influxdb_client.domain.source_links import SourceLinks +from influxdb_client.domain.sources import Sources +from influxdb_client.domain.stack import Stack +from influxdb_client.domain.stack_associations import StackAssociations +from influxdb_client.domain.stack_events import StackEvents +from influxdb_client.domain.stack_links import StackLinks +from influxdb_client.domain.stack_resources import StackResources +from influxdb_client.domain.statement import Statement +from influxdb_client.domain.static_legend import StaticLegend +from influxdb_client.domain.status_rule import StatusRule +from influxdb_client.domain.string_literal import StringLiteral +from influxdb_client.domain.subscription_manifest import SubscriptionManifest +from influxdb_client.domain.table_view_properties import TableViewProperties +from influxdb_client.domain.table_view_properties_table_options import TableViewPropertiesTableOptions +from influxdb_client.domain.tag_rule import TagRule +from influxdb_client.domain.task import Task +from influxdb_client.domain.task_create_request import TaskCreateRequest +from influxdb_client.domain.task_links import TaskLinks +from influxdb_client.domain.task_status_type import TaskStatusType +from influxdb_client.domain.task_update_request import TaskUpdateRequest +from influxdb_client.domain.tasks import Tasks +from influxdb_client.domain.telegraf import Telegraf +from influxdb_client.domain.telegraf_plugin import TelegrafPlugin +from influxdb_client.domain.telegraf_plugin_request import TelegrafPluginRequest +from influxdb_client.domain.telegraf_plugin_request_plugins import TelegrafPluginRequestPlugins +from influxdb_client.domain.telegraf_plugins import TelegrafPlugins +from influxdb_client.domain.telegraf_request import TelegrafRequest +from influxdb_client.domain.telegraf_request_metadata import TelegrafRequestMetadata +from influxdb_client.domain.telegrafs import Telegrafs +from influxdb_client.domain.telegram_notification_endpoint import TelegramNotificationEndpoint +from influxdb_client.domain.telegram_notification_rule import TelegramNotificationRule +from influxdb_client.domain.telegram_notification_rule_base import TelegramNotificationRuleBase +from influxdb_client.domain.template_apply import TemplateApply +from influxdb_client.domain.template_apply_remotes import TemplateApplyRemotes +from influxdb_client.domain.template_apply_template import TemplateApplyTemplate +from influxdb_client.domain.template_chart import TemplateChart +from influxdb_client.domain.template_export_by_id import TemplateExportByID +from influxdb_client.domain.template_export_by_id_org_ids import TemplateExportByIDOrgIDs +from influxdb_client.domain.template_export_by_id_resource_filters import TemplateExportByIDResourceFilters +from influxdb_client.domain.template_export_by_id_resources import TemplateExportByIDResources +from influxdb_client.domain.template_export_by_name import TemplateExportByName +from influxdb_client.domain.template_export_by_name_resources import TemplateExportByNameResources +from influxdb_client.domain.template_kind import TemplateKind +from influxdb_client.domain.template_summary import TemplateSummary +from influxdb_client.domain.template_summary_diff import TemplateSummaryDiff +from influxdb_client.domain.template_summary_diff_buckets import TemplateSummaryDiffBuckets +from influxdb_client.domain.template_summary_diff_buckets_new_old import TemplateSummaryDiffBucketsNewOld +from influxdb_client.domain.template_summary_diff_checks import TemplateSummaryDiffChecks +from influxdb_client.domain.template_summary_diff_dashboards import TemplateSummaryDiffDashboards +from influxdb_client.domain.template_summary_diff_dashboards_new_old import TemplateSummaryDiffDashboardsNewOld +from influxdb_client.domain.template_summary_diff_label_mappings import TemplateSummaryDiffLabelMappings +from influxdb_client.domain.template_summary_diff_labels import TemplateSummaryDiffLabels +from influxdb_client.domain.template_summary_diff_labels_new_old import TemplateSummaryDiffLabelsNewOld +from influxdb_client.domain.template_summary_diff_notification_endpoints import TemplateSummaryDiffNotificationEndpoints +from influxdb_client.domain.template_summary_diff_notification_rules import TemplateSummaryDiffNotificationRules +from influxdb_client.domain.template_summary_diff_notification_rules_new_old import TemplateSummaryDiffNotificationRulesNewOld +from influxdb_client.domain.template_summary_diff_tasks import TemplateSummaryDiffTasks +from influxdb_client.domain.template_summary_diff_tasks_new_old import TemplateSummaryDiffTasksNewOld +from influxdb_client.domain.template_summary_diff_telegraf_configs import TemplateSummaryDiffTelegrafConfigs +from influxdb_client.domain.template_summary_diff_variables import TemplateSummaryDiffVariables +from influxdb_client.domain.template_summary_diff_variables_new_old import TemplateSummaryDiffVariablesNewOld +from influxdb_client.domain.template_summary_errors import TemplateSummaryErrors +from influxdb_client.domain.template_summary_label import TemplateSummaryLabel +from influxdb_client.domain.template_summary_label_properties import TemplateSummaryLabelProperties +from influxdb_client.domain.template_summary_summary import TemplateSummarySummary +from influxdb_client.domain.template_summary_summary_buckets import TemplateSummarySummaryBuckets +from influxdb_client.domain.template_summary_summary_dashboards import TemplateSummarySummaryDashboards +from influxdb_client.domain.template_summary_summary_label_mappings import TemplateSummarySummaryLabelMappings +from influxdb_client.domain.template_summary_summary_notification_rules import TemplateSummarySummaryNotificationRules +from influxdb_client.domain.template_summary_summary_status_rules import TemplateSummarySummaryStatusRules +from influxdb_client.domain.template_summary_summary_tag_rules import TemplateSummarySummaryTagRules +from influxdb_client.domain.template_summary_summary_tasks import TemplateSummarySummaryTasks +from influxdb_client.domain.template_summary_summary_variables import TemplateSummarySummaryVariables +from influxdb_client.domain.test_statement import TestStatement +from influxdb_client.domain.threshold import Threshold +from influxdb_client.domain.threshold_base import ThresholdBase +from influxdb_client.domain.threshold_check import ThresholdCheck +from influxdb_client.domain.unary_expression import UnaryExpression +from influxdb_client.domain.unsigned_integer_literal import UnsignedIntegerLiteral +from influxdb_client.domain.user import User +from influxdb_client.domain.user_response import UserResponse +from influxdb_client.domain.user_response_links import UserResponseLinks +from influxdb_client.domain.users import Users +from influxdb_client.domain.variable import Variable +from influxdb_client.domain.variable_assignment import VariableAssignment +from influxdb_client.domain.variable_links import VariableLinks +from influxdb_client.domain.variable_properties import VariableProperties +from influxdb_client.domain.variables import Variables +from influxdb_client.domain.view import View +from influxdb_client.domain.view_links import ViewLinks +from influxdb_client.domain.view_properties import ViewProperties +from influxdb_client.domain.views import Views +from influxdb_client.domain.write_precision import WritePrecision +from influxdb_client.domain.xy_geom import XYGeom +from influxdb_client.domain.xy_view_properties import XYViewProperties diff --git a/frogpilot/third_party/influxdb_client/domain/add_resource_member_request_body.py b/frogpilot/third_party/influxdb_client/domain/add_resource_member_request_body.py new file mode 100644 index 000000000..ffcddd869 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/add_resource_member_request_body.py @@ -0,0 +1,139 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class AddResourceMemberRequestBody(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'name': 'str' + } + + attribute_map = { + 'id': 'id', + 'name': 'name' + } + + def __init__(self, id=None, name=None): # noqa: E501,D401,D403 + """AddResourceMemberRequestBody - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._name = None + self.discriminator = None + + self.id = id + if name is not None: + self.name = name + + @property + def id(self): + """Get the id of this AddResourceMemberRequestBody. + + The ID of the user to add to the resource. + + :return: The id of this AddResourceMemberRequestBody. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this AddResourceMemberRequestBody. + + The ID of the user to add to the resource. + + :param id: The id of this AddResourceMemberRequestBody. + :type: str + """ # noqa: E501 + if id is None: + raise ValueError("Invalid value for `id`, must not be `None`") # noqa: E501 + self._id = id + + @property + def name(self): + """Get the name of this AddResourceMemberRequestBody. + + The name of the user to add to the resource. + + :return: The name of this AddResourceMemberRequestBody. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this AddResourceMemberRequestBody. + + The name of the user to add to the resource. + + :param name: The name of this AddResourceMemberRequestBody. + :type: str + """ # noqa: E501 + self._name = name + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, AddResourceMemberRequestBody): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/analyze_query_response.py b/frogpilot/third_party/influxdb_client/domain/analyze_query_response.py new file mode 100644 index 000000000..ef7d18287 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/analyze_query_response.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class AnalyzeQueryResponse(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'errors': 'list[AnalyzeQueryResponseErrors]' + } + + attribute_map = { + 'errors': 'errors' + } + + def __init__(self, errors=None): # noqa: E501,D401,D403 + """AnalyzeQueryResponse - a model defined in OpenAPI.""" # noqa: E501 + self._errors = None + self.discriminator = None + + if errors is not None: + self.errors = errors + + @property + def errors(self): + """Get the errors of this AnalyzeQueryResponse. + + :return: The errors of this AnalyzeQueryResponse. + :rtype: list[AnalyzeQueryResponseErrors] + """ # noqa: E501 + return self._errors + + @errors.setter + def errors(self, errors): + """Set the errors of this AnalyzeQueryResponse. + + :param errors: The errors of this AnalyzeQueryResponse. + :type: list[AnalyzeQueryResponseErrors] + """ # noqa: E501 + self._errors = errors + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, AnalyzeQueryResponse): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/analyze_query_response_errors.py b/frogpilot/third_party/influxdb_client/domain/analyze_query_response_errors.py new file mode 100644 index 000000000..7a35dc68b --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/analyze_query_response_errors.py @@ -0,0 +1,176 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class AnalyzeQueryResponseErrors(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'line': 'int', + 'column': 'int', + 'character': 'int', + 'message': 'str' + } + + attribute_map = { + 'line': 'line', + 'column': 'column', + 'character': 'character', + 'message': 'message' + } + + def __init__(self, line=None, column=None, character=None, message=None): # noqa: E501,D401,D403 + """AnalyzeQueryResponseErrors - a model defined in OpenAPI.""" # noqa: E501 + self._line = None + self._column = None + self._character = None + self._message = None + self.discriminator = None + + if line is not None: + self.line = line + if column is not None: + self.column = column + if character is not None: + self.character = character + if message is not None: + self.message = message + + @property + def line(self): + """Get the line of this AnalyzeQueryResponseErrors. + + :return: The line of this AnalyzeQueryResponseErrors. + :rtype: int + """ # noqa: E501 + return self._line + + @line.setter + def line(self, line): + """Set the line of this AnalyzeQueryResponseErrors. + + :param line: The line of this AnalyzeQueryResponseErrors. + :type: int + """ # noqa: E501 + self._line = line + + @property + def column(self): + """Get the column of this AnalyzeQueryResponseErrors. + + :return: The column of this AnalyzeQueryResponseErrors. + :rtype: int + """ # noqa: E501 + return self._column + + @column.setter + def column(self, column): + """Set the column of this AnalyzeQueryResponseErrors. + + :param column: The column of this AnalyzeQueryResponseErrors. + :type: int + """ # noqa: E501 + self._column = column + + @property + def character(self): + """Get the character of this AnalyzeQueryResponseErrors. + + :return: The character of this AnalyzeQueryResponseErrors. + :rtype: int + """ # noqa: E501 + return self._character + + @character.setter + def character(self, character): + """Set the character of this AnalyzeQueryResponseErrors. + + :param character: The character of this AnalyzeQueryResponseErrors. + :type: int + """ # noqa: E501 + self._character = character + + @property + def message(self): + """Get the message of this AnalyzeQueryResponseErrors. + + :return: The message of this AnalyzeQueryResponseErrors. + :rtype: str + """ # noqa: E501 + return self._message + + @message.setter + def message(self, message): + """Set the message of this AnalyzeQueryResponseErrors. + + :param message: The message of this AnalyzeQueryResponseErrors. + :type: str + """ # noqa: E501 + self._message = message + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, AnalyzeQueryResponseErrors): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/array_expression.py b/frogpilot/third_party/influxdb_client/domain/array_expression.py new file mode 100644 index 000000000..0c2853171 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/array_expression.py @@ -0,0 +1,142 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class ArrayExpression(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'elements': 'list[Expression]' + } + + attribute_map = { + 'type': 'type', + 'elements': 'elements' + } + + def __init__(self, type=None, elements=None): # noqa: E501,D401,D403 + """ArrayExpression - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._elements = None + self.discriminator = None + + if type is not None: + self.type = type + if elements is not None: + self.elements = elements + + @property + def type(self): + """Get the type of this ArrayExpression. + + Type of AST node + + :return: The type of this ArrayExpression. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this ArrayExpression. + + Type of AST node + + :param type: The type of this ArrayExpression. + :type: str + """ # noqa: E501 + self._type = type + + @property + def elements(self): + """Get the elements of this ArrayExpression. + + Elements of the array + + :return: The elements of this ArrayExpression. + :rtype: list[Expression] + """ # noqa: E501 + return self._elements + + @elements.setter + def elements(self, elements): + """Set the elements of this ArrayExpression. + + Elements of the array + + :param elements: The elements of this ArrayExpression. + :type: list[Expression] + """ # noqa: E501 + self._elements = elements + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ArrayExpression): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/ast_response.py b/frogpilot/third_party/influxdb_client/domain/ast_response.py new file mode 100644 index 000000000..227cfddd2 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/ast_response.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ASTResponse(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'ast': 'Package' + } + + attribute_map = { + 'ast': 'ast' + } + + def __init__(self, ast=None): # noqa: E501,D401,D403 + """ASTResponse - a model defined in OpenAPI.""" # noqa: E501 + self._ast = None + self.discriminator = None + + if ast is not None: + self.ast = ast + + @property + def ast(self): + """Get the ast of this ASTResponse. + + :return: The ast of this ASTResponse. + :rtype: Package + """ # noqa: E501 + return self._ast + + @ast.setter + def ast(self, ast): + """Set the ast of this ASTResponse. + + :param ast: The ast of this ASTResponse. + :type: Package + """ # noqa: E501 + self._ast = ast + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ASTResponse): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/authorization.py b/frogpilot/third_party/influxdb_client/domain/authorization.py new file mode 100644 index 000000000..aef38d9c0 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/authorization.py @@ -0,0 +1,354 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.authorization_update_request import AuthorizationUpdateRequest + + +class Authorization(AuthorizationUpdateRequest): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'org_id': 'str', + 'permissions': 'list[Permission]', + 'id': 'str', + 'token': 'str', + 'user_id': 'str', + 'user': 'str', + 'org': 'str', + 'links': 'object', + 'status': 'str', + 'description': 'str' + } + + attribute_map = { + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'org_id': 'orgID', + 'permissions': 'permissions', + 'id': 'id', + 'token': 'token', + 'user_id': 'userID', + 'user': 'user', + 'org': 'org', + 'links': 'links', + 'status': 'status', + 'description': 'description' + } + + def __init__(self, created_at=None, updated_at=None, org_id=None, permissions=None, id=None, token=None, user_id=None, user=None, org=None, links=None, status='active', description=None): # noqa: E501,D401,D403 + """Authorization - a model defined in OpenAPI.""" # noqa: E501 + AuthorizationUpdateRequest.__init__(self, status=status, description=description) # noqa: E501 + + self._created_at = None + self._updated_at = None + self._org_id = None + self._permissions = None + self._id = None + self._token = None + self._user_id = None + self._user = None + self._org = None + self._links = None + self.discriminator = None + + if created_at is not None: + self.created_at = created_at + if updated_at is not None: + self.updated_at = updated_at + if org_id is not None: + if not isinstance(org_id, str): + raise TypeError("org_id must be a string.") + self.org_id = org_id + if permissions is not None: + if not isinstance(permissions, list): + raise TypeError("permissions must be a list.") + self.permissions = permissions + if id is not None: + self.id = id + if token is not None: + self.token = token + if user_id is not None: + self.user_id = user_id + if user is not None: + self.user = user + if org is not None: + self.org = org + if links is not None: + self.links = links + + @property + def created_at(self): + """Get the created_at of this Authorization. + + :return: The created_at of this Authorization. + :rtype: datetime + """ # noqa: E501 + return self._created_at + + @created_at.setter + def created_at(self, created_at): + """Set the created_at of this Authorization. + + :param created_at: The created_at of this Authorization. + :type: datetime + """ # noqa: E501 + self._created_at = created_at + + @property + def updated_at(self): + """Get the updated_at of this Authorization. + + :return: The updated_at of this Authorization. + :rtype: datetime + """ # noqa: E501 + return self._updated_at + + @updated_at.setter + def updated_at(self, updated_at): + """Set the updated_at of this Authorization. + + :param updated_at: The updated_at of this Authorization. + :type: datetime + """ # noqa: E501 + self._updated_at = updated_at + + @property + def org_id(self): + """Get the org_id of this Authorization. + + The organization ID. Specifies the [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) that the authorization is scoped to. + + :return: The org_id of this Authorization. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this Authorization. + + The organization ID. Specifies the [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) that the authorization is scoped to. + + :param org_id: The org_id of this Authorization. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def permissions(self): + """Get the permissions of this Authorization. + + The list of permissions. An authorization must have at least one permission. + + :return: The permissions of this Authorization. + :rtype: list[Permission] + """ # noqa: E501 + return self._permissions + + @permissions.setter + def permissions(self, permissions): + """Set the permissions of this Authorization. + + The list of permissions. An authorization must have at least one permission. + + :param permissions: The permissions of this Authorization. + :type: list[Permission] + """ # noqa: E501 + self._permissions = permissions + + @property + def id(self): + """Get the id of this Authorization. + + The authorization ID. + + :return: The id of this Authorization. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this Authorization. + + The authorization ID. + + :param id: The id of this Authorization. + :type: str + """ # noqa: E501 + self._id = id + + @property + def token(self): + """Get the token of this Authorization. + + The API token. The token value is unique to the authorization. [API tokens](https://docs.influxdata.com/influxdb/latest/reference/glossary/#token) are used to authenticate and authorize InfluxDB API requests and `influx` CLI commands--after receiving the request, InfluxDB checks that the token is valid and that the `permissions` allow the requested action(s). + + :return: The token of this Authorization. + :rtype: str + """ # noqa: E501 + return self._token + + @token.setter + def token(self, token): + """Set the token of this Authorization. + + The API token. The token value is unique to the authorization. [API tokens](https://docs.influxdata.com/influxdb/latest/reference/glossary/#token) are used to authenticate and authorize InfluxDB API requests and `influx` CLI commands--after receiving the request, InfluxDB checks that the token is valid and that the `permissions` allow the requested action(s). + + :param token: The token of this Authorization. + :type: str + """ # noqa: E501 + self._token = token + + @property + def user_id(self): + """Get the user_id of this Authorization. + + The user ID. Specifies the [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) that owns the authorization. If _scoped_, the user that the authorization is scoped to; otherwise, the creator of the authorization. + + :return: The user_id of this Authorization. + :rtype: str + """ # noqa: E501 + return self._user_id + + @user_id.setter + def user_id(self, user_id): + """Set the user_id of this Authorization. + + The user ID. Specifies the [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) that owns the authorization. If _scoped_, the user that the authorization is scoped to; otherwise, the creator of the authorization. + + :param user_id: The user_id of this Authorization. + :type: str + """ # noqa: E501 + self._user_id = user_id + + @property + def user(self): + """Get the user of this Authorization. + + The user name. Specifies the [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) that owns the authorization. If the authorization is _scoped_ to a user, the user; otherwise, the creator of the authorization. + + :return: The user of this Authorization. + :rtype: str + """ # noqa: E501 + return self._user + + @user.setter + def user(self, user): + """Set the user of this Authorization. + + The user name. Specifies the [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) that owns the authorization. If the authorization is _scoped_ to a user, the user; otherwise, the creator of the authorization. + + :param user: The user of this Authorization. + :type: str + """ # noqa: E501 + self._user = user + + @property + def org(self): + """Get the org of this Authorization. + + The organization name. Specifies the [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) that the token is scoped to. + + :return: The org of this Authorization. + :rtype: str + """ # noqa: E501 + return self._org + + @org.setter + def org(self, org): + """Set the org of this Authorization. + + The organization name. Specifies the [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) that the token is scoped to. + + :param org: The org of this Authorization. + :type: str + """ # noqa: E501 + self._org = org + + @property + def links(self): + """Get the links of this Authorization. + + :return: The links of this Authorization. + :rtype: object + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Authorization. + + :param links: The links of this Authorization. + :type: object + """ # noqa: E501 + self._links = links + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Authorization): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/authorization_post_request.py b/frogpilot/third_party/influxdb_client/domain/authorization_post_request.py new file mode 100644 index 000000000..94bcd96f3 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/authorization_post_request.py @@ -0,0 +1,173 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.authorization_update_request import AuthorizationUpdateRequest + + +class AuthorizationPostRequest(AuthorizationUpdateRequest): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'org_id': 'str', + 'user_id': 'str', + 'permissions': 'list[Permission]', + 'status': 'str', + 'description': 'str' + } + + attribute_map = { + 'org_id': 'orgID', + 'user_id': 'userID', + 'permissions': 'permissions', + 'status': 'status', + 'description': 'description' + } + + def __init__(self, org_id=None, user_id=None, permissions=None, status='active', description=None): # noqa: E501,D401,D403 + """AuthorizationPostRequest - a model defined in OpenAPI.""" # noqa: E501 + AuthorizationUpdateRequest.__init__(self, status=status, description=description) # noqa: E501 + + self._org_id = None + self._user_id = None + self._permissions = None + self.discriminator = None + + if org_id is not None: + self.org_id = org_id + if user_id is not None: + self.user_id = user_id + if permissions is not None: + self.permissions = permissions + + @property + def org_id(self): + """Get the org_id of this AuthorizationPostRequest. + + An organization ID. Specifies the organization that owns the authorization. + + :return: The org_id of this AuthorizationPostRequest. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this AuthorizationPostRequest. + + An organization ID. Specifies the organization that owns the authorization. + + :param org_id: The org_id of this AuthorizationPostRequest. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def user_id(self): + """Get the user_id of this AuthorizationPostRequest. + + A user ID. Specifies the user that the authorization is scoped to. When a user authenticates with username and password, InfluxDB generates a _user session_ with all the permissions specified by all the user's authorizations. + + :return: The user_id of this AuthorizationPostRequest. + :rtype: str + """ # noqa: E501 + return self._user_id + + @user_id.setter + def user_id(self, user_id): + """Set the user_id of this AuthorizationPostRequest. + + A user ID. Specifies the user that the authorization is scoped to. When a user authenticates with username and password, InfluxDB generates a _user session_ with all the permissions specified by all the user's authorizations. + + :param user_id: The user_id of this AuthorizationPostRequest. + :type: str + """ # noqa: E501 + self._user_id = user_id + + @property + def permissions(self): + """Get the permissions of this AuthorizationPostRequest. + + A list of permissions for an authorization. In the list, provide at least one `permission` object. In a `permission`, the `resource.type` property grants access to all resources of the specified type. To grant access to only a specific resource, specify the `resource.id` property. + + :return: The permissions of this AuthorizationPostRequest. + :rtype: list[Permission] + """ # noqa: E501 + return self._permissions + + @permissions.setter + def permissions(self, permissions): + """Set the permissions of this AuthorizationPostRequest. + + A list of permissions for an authorization. In the list, provide at least one `permission` object. In a `permission`, the `resource.type` property grants access to all resources of the specified type. To grant access to only a specific resource, specify the `resource.id` property. + + :param permissions: The permissions of this AuthorizationPostRequest. + :type: list[Permission] + """ # noqa: E501 + self._permissions = permissions + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, AuthorizationPostRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/authorization_update_request.py b/frogpilot/third_party/influxdb_client/domain/authorization_update_request.py new file mode 100644 index 000000000..097d9654e --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/authorization_update_request.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class AuthorizationUpdateRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'status': 'str', + 'description': 'str' + } + + attribute_map = { + 'status': 'status', + 'description': 'description' + } + + def __init__(self, status='active', description=None): # noqa: E501,D401,D403 + """AuthorizationUpdateRequest - a model defined in OpenAPI.""" # noqa: E501 + self._status = None + self._description = None + self.discriminator = None + + if status is not None: + self.status = status + if description is not None: + self.description = description + + @property + def status(self): + """Get the status of this AuthorizationUpdateRequest. + + Status of the token. If `inactive`, InfluxDB rejects requests that use the token. + + :return: The status of this AuthorizationUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this AuthorizationUpdateRequest. + + Status of the token. If `inactive`, InfluxDB rejects requests that use the token. + + :param status: The status of this AuthorizationUpdateRequest. + :type: str + """ # noqa: E501 + self._status = status + + @property + def description(self): + """Get the description of this AuthorizationUpdateRequest. + + A description of the token. + + :return: The description of this AuthorizationUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this AuthorizationUpdateRequest. + + A description of the token. + + :param description: The description of this AuthorizationUpdateRequest. + :type: str + """ # noqa: E501 + self._description = description + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, AuthorizationUpdateRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/authorizations.py b/frogpilot/third_party/influxdb_client/domain/authorizations.py new file mode 100644 index 000000000..ad3a4d092 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/authorizations.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Authorizations(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'links': 'Links', + 'authorizations': 'list[Authorization]' + } + + attribute_map = { + 'links': 'links', + 'authorizations': 'authorizations' + } + + def __init__(self, links=None, authorizations=None): # noqa: E501,D401,D403 + """Authorizations - a model defined in OpenAPI.""" # noqa: E501 + self._links = None + self._authorizations = None + self.discriminator = None + + if links is not None: + self.links = links + if authorizations is not None: + self.authorizations = authorizations + + @property + def links(self): + """Get the links of this Authorizations. + + :return: The links of this Authorizations. + :rtype: Links + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Authorizations. + + :param links: The links of this Authorizations. + :type: Links + """ # noqa: E501 + self._links = links + + @property + def authorizations(self): + """Get the authorizations of this Authorizations. + + :return: The authorizations of this Authorizations. + :rtype: list[Authorization] + """ # noqa: E501 + return self._authorizations + + @authorizations.setter + def authorizations(self, authorizations): + """Set the authorizations of this Authorizations. + + :param authorizations: The authorizations of this Authorizations. + :type: list[Authorization] + """ # noqa: E501 + self._authorizations = authorizations + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Authorizations): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/axes.py b/frogpilot/third_party/influxdb_client/domain/axes.py new file mode 100644 index 000000000..738e3b3b0 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/axes.py @@ -0,0 +1,132 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Axes(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'x': 'Axis', + 'y': 'Axis' + } + + attribute_map = { + 'x': 'x', + 'y': 'y' + } + + def __init__(self, x=None, y=None): # noqa: E501,D401,D403 + """Axes - a model defined in OpenAPI.""" # noqa: E501 + self._x = None + self._y = None + self.discriminator = None + + self.x = x + self.y = y + + @property + def x(self): + """Get the x of this Axes. + + :return: The x of this Axes. + :rtype: Axis + """ # noqa: E501 + return self._x + + @x.setter + def x(self, x): + """Set the x of this Axes. + + :param x: The x of this Axes. + :type: Axis + """ # noqa: E501 + if x is None: + raise ValueError("Invalid value for `x`, must not be `None`") # noqa: E501 + self._x = x + + @property + def y(self): + """Get the y of this Axes. + + :return: The y of this Axes. + :rtype: Axis + """ # noqa: E501 + return self._y + + @y.setter + def y(self, y): + """Set the y of this Axes. + + :param y: The y of this Axes. + :type: Axis + """ # noqa: E501 + if y is None: + raise ValueError("Invalid value for `y`, must not be `None`") # noqa: E501 + self._y = y + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Axes): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/axis.py b/frogpilot/third_party/influxdb_client/domain/axis.py new file mode 100644 index 000000000..444207530 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/axis.py @@ -0,0 +1,242 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Axis(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'bounds': 'list[str]', + 'label': 'str', + 'prefix': 'str', + 'suffix': 'str', + 'base': 'str', + 'scale': 'AxisScale' + } + + attribute_map = { + 'bounds': 'bounds', + 'label': 'label', + 'prefix': 'prefix', + 'suffix': 'suffix', + 'base': 'base', + 'scale': 'scale' + } + + def __init__(self, bounds=None, label=None, prefix=None, suffix=None, base=None, scale=None): # noqa: E501,D401,D403 + """Axis - a model defined in OpenAPI.""" # noqa: E501 + self._bounds = None + self._label = None + self._prefix = None + self._suffix = None + self._base = None + self._scale = None + self.discriminator = None + + if bounds is not None: + self.bounds = bounds + if label is not None: + self.label = label + if prefix is not None: + self.prefix = prefix + if suffix is not None: + self.suffix = suffix + if base is not None: + self.base = base + if scale is not None: + self.scale = scale + + @property + def bounds(self): + """Get the bounds of this Axis. + + The extents of the axis in the form [lower, upper]. Clients determine whether bounds are inclusive or exclusive of their limits. + + :return: The bounds of this Axis. + :rtype: list[str] + """ # noqa: E501 + return self._bounds + + @bounds.setter + def bounds(self, bounds): + """Set the bounds of this Axis. + + The extents of the axis in the form [lower, upper]. Clients determine whether bounds are inclusive or exclusive of their limits. + + :param bounds: The bounds of this Axis. + :type: list[str] + """ # noqa: E501 + self._bounds = bounds + + @property + def label(self): + """Get the label of this Axis. + + Description of the axis. + + :return: The label of this Axis. + :rtype: str + """ # noqa: E501 + return self._label + + @label.setter + def label(self, label): + """Set the label of this Axis. + + Description of the axis. + + :param label: The label of this Axis. + :type: str + """ # noqa: E501 + self._label = label + + @property + def prefix(self): + """Get the prefix of this Axis. + + Label prefix for formatting axis values. + + :return: The prefix of this Axis. + :rtype: str + """ # noqa: E501 + return self._prefix + + @prefix.setter + def prefix(self, prefix): + """Set the prefix of this Axis. + + Label prefix for formatting axis values. + + :param prefix: The prefix of this Axis. + :type: str + """ # noqa: E501 + self._prefix = prefix + + @property + def suffix(self): + """Get the suffix of this Axis. + + Label suffix for formatting axis values. + + :return: The suffix of this Axis. + :rtype: str + """ # noqa: E501 + return self._suffix + + @suffix.setter + def suffix(self, suffix): + """Set the suffix of this Axis. + + Label suffix for formatting axis values. + + :param suffix: The suffix of this Axis. + :type: str + """ # noqa: E501 + self._suffix = suffix + + @property + def base(self): + """Get the base of this Axis. + + Radix for formatting axis values. + + :return: The base of this Axis. + :rtype: str + """ # noqa: E501 + return self._base + + @base.setter + def base(self, base): + """Set the base of this Axis. + + Radix for formatting axis values. + + :param base: The base of this Axis. + :type: str + """ # noqa: E501 + self._base = base + + @property + def scale(self): + """Get the scale of this Axis. + + :return: The scale of this Axis. + :rtype: AxisScale + """ # noqa: E501 + return self._scale + + @scale.setter + def scale(self, scale): + """Set the scale of this Axis. + + :param scale: The scale of this Axis. + :type: AxisScale + """ # noqa: E501 + self._scale = scale + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Axis): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/axis_scale.py b/frogpilot/third_party/influxdb_client/domain/axis_scale.py new file mode 100644 index 000000000..a678feff5 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/axis_scale.py @@ -0,0 +1,88 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class AxisScale(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + LOG = "log" + LINEAR = "linear" + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """AxisScale - a model defined in OpenAPI.""" # noqa: E501 self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, AxisScale): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/bad_statement.py b/frogpilot/third_party/influxdb_client/domain/bad_statement.py new file mode 100644 index 000000000..d1f455e6c --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/bad_statement.py @@ -0,0 +1,142 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.statement import Statement + + +class BadStatement(Statement): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'text': 'str' + } + + attribute_map = { + 'type': 'type', + 'text': 'text' + } + + def __init__(self, type=None, text=None): # noqa: E501,D401,D403 + """BadStatement - a model defined in OpenAPI.""" # noqa: E501 + Statement.__init__(self) # noqa: E501 + + self._type = None + self._text = None + self.discriminator = None + + if type is not None: + self.type = type + if text is not None: + self.text = text + + @property + def type(self): + """Get the type of this BadStatement. + + Type of AST node + + :return: The type of this BadStatement. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this BadStatement. + + Type of AST node + + :param type: The type of this BadStatement. + :type: str + """ # noqa: E501 + self._type = type + + @property + def text(self): + """Get the text of this BadStatement. + + Raw source text + + :return: The text of this BadStatement. + :rtype: str + """ # noqa: E501 + return self._text + + @text.setter + def text(self, text): + """Set the text of this BadStatement. + + Raw source text + + :param text: The text of this BadStatement. + :type: str + """ # noqa: E501 + self._text = text + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, BadStatement): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/band_view_properties.py b/frogpilot/third_party/influxdb_client/domain/band_view_properties.py new file mode 100644 index 000000000..1b03b7b4d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/band_view_properties.py @@ -0,0 +1,771 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.view_properties import ViewProperties + + +class BandViewProperties(ViewProperties): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'adaptive_zoom_hide': 'bool', + 'time_format': 'str', + 'type': 'str', + 'queries': 'list[DashboardQuery]', + 'colors': 'list[DashboardColor]', + 'shape': 'str', + 'note': 'str', + 'show_note_when_empty': 'bool', + 'axes': 'Axes', + 'static_legend': 'StaticLegend', + 'x_column': 'str', + 'generate_x_axis_ticks': 'list[str]', + 'x_total_ticks': 'int', + 'x_tick_start': 'float', + 'x_tick_step': 'float', + 'y_column': 'str', + 'generate_y_axis_ticks': 'list[str]', + 'y_total_ticks': 'int', + 'y_tick_start': 'float', + 'y_tick_step': 'float', + 'upper_column': 'str', + 'main_column': 'str', + 'lower_column': 'str', + 'hover_dimension': 'str', + 'geom': 'XYGeom', + 'legend_colorize_rows': 'bool', + 'legend_hide': 'bool', + 'legend_opacity': 'float', + 'legend_orientation_threshold': 'int' + } + + attribute_map = { + 'adaptive_zoom_hide': 'adaptiveZoomHide', + 'time_format': 'timeFormat', + 'type': 'type', + 'queries': 'queries', + 'colors': 'colors', + 'shape': 'shape', + 'note': 'note', + 'show_note_when_empty': 'showNoteWhenEmpty', + 'axes': 'axes', + 'static_legend': 'staticLegend', + 'x_column': 'xColumn', + 'generate_x_axis_ticks': 'generateXAxisTicks', + 'x_total_ticks': 'xTotalTicks', + 'x_tick_start': 'xTickStart', + 'x_tick_step': 'xTickStep', + 'y_column': 'yColumn', + 'generate_y_axis_ticks': 'generateYAxisTicks', + 'y_total_ticks': 'yTotalTicks', + 'y_tick_start': 'yTickStart', + 'y_tick_step': 'yTickStep', + 'upper_column': 'upperColumn', + 'main_column': 'mainColumn', + 'lower_column': 'lowerColumn', + 'hover_dimension': 'hoverDimension', + 'geom': 'geom', + 'legend_colorize_rows': 'legendColorizeRows', + 'legend_hide': 'legendHide', + 'legend_opacity': 'legendOpacity', + 'legend_orientation_threshold': 'legendOrientationThreshold' + } + + def __init__(self, adaptive_zoom_hide=None, time_format=None, type=None, queries=None, colors=None, shape=None, note=None, show_note_when_empty=None, axes=None, static_legend=None, x_column=None, generate_x_axis_ticks=None, x_total_ticks=None, x_tick_start=None, x_tick_step=None, y_column=None, generate_y_axis_ticks=None, y_total_ticks=None, y_tick_start=None, y_tick_step=None, upper_column=None, main_column=None, lower_column=None, hover_dimension=None, geom=None, legend_colorize_rows=None, legend_hide=None, legend_opacity=None, legend_orientation_threshold=None): # noqa: E501,D401,D403 + """BandViewProperties - a model defined in OpenAPI.""" # noqa: E501 + ViewProperties.__init__(self) # noqa: E501 + + self._adaptive_zoom_hide = None + self._time_format = None + self._type = None + self._queries = None + self._colors = None + self._shape = None + self._note = None + self._show_note_when_empty = None + self._axes = None + self._static_legend = None + self._x_column = None + self._generate_x_axis_ticks = None + self._x_total_ticks = None + self._x_tick_start = None + self._x_tick_step = None + self._y_column = None + self._generate_y_axis_ticks = None + self._y_total_ticks = None + self._y_tick_start = None + self._y_tick_step = None + self._upper_column = None + self._main_column = None + self._lower_column = None + self._hover_dimension = None + self._geom = None + self._legend_colorize_rows = None + self._legend_hide = None + self._legend_opacity = None + self._legend_orientation_threshold = None + self.discriminator = None + + if adaptive_zoom_hide is not None: + self.adaptive_zoom_hide = adaptive_zoom_hide + if time_format is not None: + self.time_format = time_format + self.type = type + self.queries = queries + self.colors = colors + self.shape = shape + self.note = note + self.show_note_when_empty = show_note_when_empty + self.axes = axes + if static_legend is not None: + self.static_legend = static_legend + if x_column is not None: + self.x_column = x_column + if generate_x_axis_ticks is not None: + self.generate_x_axis_ticks = generate_x_axis_ticks + if x_total_ticks is not None: + self.x_total_ticks = x_total_ticks + if x_tick_start is not None: + self.x_tick_start = x_tick_start + if x_tick_step is not None: + self.x_tick_step = x_tick_step + if y_column is not None: + self.y_column = y_column + if generate_y_axis_ticks is not None: + self.generate_y_axis_ticks = generate_y_axis_ticks + if y_total_ticks is not None: + self.y_total_ticks = y_total_ticks + if y_tick_start is not None: + self.y_tick_start = y_tick_start + if y_tick_step is not None: + self.y_tick_step = y_tick_step + if upper_column is not None: + self.upper_column = upper_column + if main_column is not None: + self.main_column = main_column + if lower_column is not None: + self.lower_column = lower_column + if hover_dimension is not None: + self.hover_dimension = hover_dimension + self.geom = geom + if legend_colorize_rows is not None: + self.legend_colorize_rows = legend_colorize_rows + if legend_hide is not None: + self.legend_hide = legend_hide + if legend_opacity is not None: + self.legend_opacity = legend_opacity + if legend_orientation_threshold is not None: + self.legend_orientation_threshold = legend_orientation_threshold + + @property + def adaptive_zoom_hide(self): + """Get the adaptive_zoom_hide of this BandViewProperties. + + :return: The adaptive_zoom_hide of this BandViewProperties. + :rtype: bool + """ # noqa: E501 + return self._adaptive_zoom_hide + + @adaptive_zoom_hide.setter + def adaptive_zoom_hide(self, adaptive_zoom_hide): + """Set the adaptive_zoom_hide of this BandViewProperties. + + :param adaptive_zoom_hide: The adaptive_zoom_hide of this BandViewProperties. + :type: bool + """ # noqa: E501 + self._adaptive_zoom_hide = adaptive_zoom_hide + + @property + def time_format(self): + """Get the time_format of this BandViewProperties. + + :return: The time_format of this BandViewProperties. + :rtype: str + """ # noqa: E501 + return self._time_format + + @time_format.setter + def time_format(self, time_format): + """Set the time_format of this BandViewProperties. + + :param time_format: The time_format of this BandViewProperties. + :type: str + """ # noqa: E501 + self._time_format = time_format + + @property + def type(self): + """Get the type of this BandViewProperties. + + :return: The type of this BandViewProperties. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this BandViewProperties. + + :param type: The type of this BandViewProperties. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def queries(self): + """Get the queries of this BandViewProperties. + + :return: The queries of this BandViewProperties. + :rtype: list[DashboardQuery] + """ # noqa: E501 + return self._queries + + @queries.setter + def queries(self, queries): + """Set the queries of this BandViewProperties. + + :param queries: The queries of this BandViewProperties. + :type: list[DashboardQuery] + """ # noqa: E501 + if queries is None: + raise ValueError("Invalid value for `queries`, must not be `None`") # noqa: E501 + self._queries = queries + + @property + def colors(self): + """Get the colors of this BandViewProperties. + + Colors define color encoding of data into a visualization + + :return: The colors of this BandViewProperties. + :rtype: list[DashboardColor] + """ # noqa: E501 + return self._colors + + @colors.setter + def colors(self, colors): + """Set the colors of this BandViewProperties. + + Colors define color encoding of data into a visualization + + :param colors: The colors of this BandViewProperties. + :type: list[DashboardColor] + """ # noqa: E501 + if colors is None: + raise ValueError("Invalid value for `colors`, must not be `None`") # noqa: E501 + self._colors = colors + + @property + def shape(self): + """Get the shape of this BandViewProperties. + + :return: The shape of this BandViewProperties. + :rtype: str + """ # noqa: E501 + return self._shape + + @shape.setter + def shape(self, shape): + """Set the shape of this BandViewProperties. + + :param shape: The shape of this BandViewProperties. + :type: str + """ # noqa: E501 + if shape is None: + raise ValueError("Invalid value for `shape`, must not be `None`") # noqa: E501 + self._shape = shape + + @property + def note(self): + """Get the note of this BandViewProperties. + + :return: The note of this BandViewProperties. + :rtype: str + """ # noqa: E501 + return self._note + + @note.setter + def note(self, note): + """Set the note of this BandViewProperties. + + :param note: The note of this BandViewProperties. + :type: str + """ # noqa: E501 + if note is None: + raise ValueError("Invalid value for `note`, must not be `None`") # noqa: E501 + self._note = note + + @property + def show_note_when_empty(self): + """Get the show_note_when_empty of this BandViewProperties. + + If true, will display note when empty + + :return: The show_note_when_empty of this BandViewProperties. + :rtype: bool + """ # noqa: E501 + return self._show_note_when_empty + + @show_note_when_empty.setter + def show_note_when_empty(self, show_note_when_empty): + """Set the show_note_when_empty of this BandViewProperties. + + If true, will display note when empty + + :param show_note_when_empty: The show_note_when_empty of this BandViewProperties. + :type: bool + """ # noqa: E501 + if show_note_when_empty is None: + raise ValueError("Invalid value for `show_note_when_empty`, must not be `None`") # noqa: E501 + self._show_note_when_empty = show_note_when_empty + + @property + def axes(self): + """Get the axes of this BandViewProperties. + + :return: The axes of this BandViewProperties. + :rtype: Axes + """ # noqa: E501 + return self._axes + + @axes.setter + def axes(self, axes): + """Set the axes of this BandViewProperties. + + :param axes: The axes of this BandViewProperties. + :type: Axes + """ # noqa: E501 + if axes is None: + raise ValueError("Invalid value for `axes`, must not be `None`") # noqa: E501 + self._axes = axes + + @property + def static_legend(self): + """Get the static_legend of this BandViewProperties. + + :return: The static_legend of this BandViewProperties. + :rtype: StaticLegend + """ # noqa: E501 + return self._static_legend + + @static_legend.setter + def static_legend(self, static_legend): + """Set the static_legend of this BandViewProperties. + + :param static_legend: The static_legend of this BandViewProperties. + :type: StaticLegend + """ # noqa: E501 + self._static_legend = static_legend + + @property + def x_column(self): + """Get the x_column of this BandViewProperties. + + :return: The x_column of this BandViewProperties. + :rtype: str + """ # noqa: E501 + return self._x_column + + @x_column.setter + def x_column(self, x_column): + """Set the x_column of this BandViewProperties. + + :param x_column: The x_column of this BandViewProperties. + :type: str + """ # noqa: E501 + self._x_column = x_column + + @property + def generate_x_axis_ticks(self): + """Get the generate_x_axis_ticks of this BandViewProperties. + + :return: The generate_x_axis_ticks of this BandViewProperties. + :rtype: list[str] + """ # noqa: E501 + return self._generate_x_axis_ticks + + @generate_x_axis_ticks.setter + def generate_x_axis_ticks(self, generate_x_axis_ticks): + """Set the generate_x_axis_ticks of this BandViewProperties. + + :param generate_x_axis_ticks: The generate_x_axis_ticks of this BandViewProperties. + :type: list[str] + """ # noqa: E501 + self._generate_x_axis_ticks = generate_x_axis_ticks + + @property + def x_total_ticks(self): + """Get the x_total_ticks of this BandViewProperties. + + :return: The x_total_ticks of this BandViewProperties. + :rtype: int + """ # noqa: E501 + return self._x_total_ticks + + @x_total_ticks.setter + def x_total_ticks(self, x_total_ticks): + """Set the x_total_ticks of this BandViewProperties. + + :param x_total_ticks: The x_total_ticks of this BandViewProperties. + :type: int + """ # noqa: E501 + self._x_total_ticks = x_total_ticks + + @property + def x_tick_start(self): + """Get the x_tick_start of this BandViewProperties. + + :return: The x_tick_start of this BandViewProperties. + :rtype: float + """ # noqa: E501 + return self._x_tick_start + + @x_tick_start.setter + def x_tick_start(self, x_tick_start): + """Set the x_tick_start of this BandViewProperties. + + :param x_tick_start: The x_tick_start of this BandViewProperties. + :type: float + """ # noqa: E501 + self._x_tick_start = x_tick_start + + @property + def x_tick_step(self): + """Get the x_tick_step of this BandViewProperties. + + :return: The x_tick_step of this BandViewProperties. + :rtype: float + """ # noqa: E501 + return self._x_tick_step + + @x_tick_step.setter + def x_tick_step(self, x_tick_step): + """Set the x_tick_step of this BandViewProperties. + + :param x_tick_step: The x_tick_step of this BandViewProperties. + :type: float + """ # noqa: E501 + self._x_tick_step = x_tick_step + + @property + def y_column(self): + """Get the y_column of this BandViewProperties. + + :return: The y_column of this BandViewProperties. + :rtype: str + """ # noqa: E501 + return self._y_column + + @y_column.setter + def y_column(self, y_column): + """Set the y_column of this BandViewProperties. + + :param y_column: The y_column of this BandViewProperties. + :type: str + """ # noqa: E501 + self._y_column = y_column + + @property + def generate_y_axis_ticks(self): + """Get the generate_y_axis_ticks of this BandViewProperties. + + :return: The generate_y_axis_ticks of this BandViewProperties. + :rtype: list[str] + """ # noqa: E501 + return self._generate_y_axis_ticks + + @generate_y_axis_ticks.setter + def generate_y_axis_ticks(self, generate_y_axis_ticks): + """Set the generate_y_axis_ticks of this BandViewProperties. + + :param generate_y_axis_ticks: The generate_y_axis_ticks of this BandViewProperties. + :type: list[str] + """ # noqa: E501 + self._generate_y_axis_ticks = generate_y_axis_ticks + + @property + def y_total_ticks(self): + """Get the y_total_ticks of this BandViewProperties. + + :return: The y_total_ticks of this BandViewProperties. + :rtype: int + """ # noqa: E501 + return self._y_total_ticks + + @y_total_ticks.setter + def y_total_ticks(self, y_total_ticks): + """Set the y_total_ticks of this BandViewProperties. + + :param y_total_ticks: The y_total_ticks of this BandViewProperties. + :type: int + """ # noqa: E501 + self._y_total_ticks = y_total_ticks + + @property + def y_tick_start(self): + """Get the y_tick_start of this BandViewProperties. + + :return: The y_tick_start of this BandViewProperties. + :rtype: float + """ # noqa: E501 + return self._y_tick_start + + @y_tick_start.setter + def y_tick_start(self, y_tick_start): + """Set the y_tick_start of this BandViewProperties. + + :param y_tick_start: The y_tick_start of this BandViewProperties. + :type: float + """ # noqa: E501 + self._y_tick_start = y_tick_start + + @property + def y_tick_step(self): + """Get the y_tick_step of this BandViewProperties. + + :return: The y_tick_step of this BandViewProperties. + :rtype: float + """ # noqa: E501 + return self._y_tick_step + + @y_tick_step.setter + def y_tick_step(self, y_tick_step): + """Set the y_tick_step of this BandViewProperties. + + :param y_tick_step: The y_tick_step of this BandViewProperties. + :type: float + """ # noqa: E501 + self._y_tick_step = y_tick_step + + @property + def upper_column(self): + """Get the upper_column of this BandViewProperties. + + :return: The upper_column of this BandViewProperties. + :rtype: str + """ # noqa: E501 + return self._upper_column + + @upper_column.setter + def upper_column(self, upper_column): + """Set the upper_column of this BandViewProperties. + + :param upper_column: The upper_column of this BandViewProperties. + :type: str + """ # noqa: E501 + self._upper_column = upper_column + + @property + def main_column(self): + """Get the main_column of this BandViewProperties. + + :return: The main_column of this BandViewProperties. + :rtype: str + """ # noqa: E501 + return self._main_column + + @main_column.setter + def main_column(self, main_column): + """Set the main_column of this BandViewProperties. + + :param main_column: The main_column of this BandViewProperties. + :type: str + """ # noqa: E501 + self._main_column = main_column + + @property + def lower_column(self): + """Get the lower_column of this BandViewProperties. + + :return: The lower_column of this BandViewProperties. + :rtype: str + """ # noqa: E501 + return self._lower_column + + @lower_column.setter + def lower_column(self, lower_column): + """Set the lower_column of this BandViewProperties. + + :param lower_column: The lower_column of this BandViewProperties. + :type: str + """ # noqa: E501 + self._lower_column = lower_column + + @property + def hover_dimension(self): + """Get the hover_dimension of this BandViewProperties. + + :return: The hover_dimension of this BandViewProperties. + :rtype: str + """ # noqa: E501 + return self._hover_dimension + + @hover_dimension.setter + def hover_dimension(self, hover_dimension): + """Set the hover_dimension of this BandViewProperties. + + :param hover_dimension: The hover_dimension of this BandViewProperties. + :type: str + """ # noqa: E501 + self._hover_dimension = hover_dimension + + @property + def geom(self): + """Get the geom of this BandViewProperties. + + :return: The geom of this BandViewProperties. + :rtype: XYGeom + """ # noqa: E501 + return self._geom + + @geom.setter + def geom(self, geom): + """Set the geom of this BandViewProperties. + + :param geom: The geom of this BandViewProperties. + :type: XYGeom + """ # noqa: E501 + if geom is None: + raise ValueError("Invalid value for `geom`, must not be `None`") # noqa: E501 + self._geom = geom + + @property + def legend_colorize_rows(self): + """Get the legend_colorize_rows of this BandViewProperties. + + :return: The legend_colorize_rows of this BandViewProperties. + :rtype: bool + """ # noqa: E501 + return self._legend_colorize_rows + + @legend_colorize_rows.setter + def legend_colorize_rows(self, legend_colorize_rows): + """Set the legend_colorize_rows of this BandViewProperties. + + :param legend_colorize_rows: The legend_colorize_rows of this BandViewProperties. + :type: bool + """ # noqa: E501 + self._legend_colorize_rows = legend_colorize_rows + + @property + def legend_hide(self): + """Get the legend_hide of this BandViewProperties. + + :return: The legend_hide of this BandViewProperties. + :rtype: bool + """ # noqa: E501 + return self._legend_hide + + @legend_hide.setter + def legend_hide(self, legend_hide): + """Set the legend_hide of this BandViewProperties. + + :param legend_hide: The legend_hide of this BandViewProperties. + :type: bool + """ # noqa: E501 + self._legend_hide = legend_hide + + @property + def legend_opacity(self): + """Get the legend_opacity of this BandViewProperties. + + :return: The legend_opacity of this BandViewProperties. + :rtype: float + """ # noqa: E501 + return self._legend_opacity + + @legend_opacity.setter + def legend_opacity(self, legend_opacity): + """Set the legend_opacity of this BandViewProperties. + + :param legend_opacity: The legend_opacity of this BandViewProperties. + :type: float + """ # noqa: E501 + self._legend_opacity = legend_opacity + + @property + def legend_orientation_threshold(self): + """Get the legend_orientation_threshold of this BandViewProperties. + + :return: The legend_orientation_threshold of this BandViewProperties. + :rtype: int + """ # noqa: E501 + return self._legend_orientation_threshold + + @legend_orientation_threshold.setter + def legend_orientation_threshold(self, legend_orientation_threshold): + """Set the legend_orientation_threshold of this BandViewProperties. + + :param legend_orientation_threshold: The legend_orientation_threshold of this BandViewProperties. + :type: int + """ # noqa: E501 + self._legend_orientation_threshold = legend_orientation_threshold + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, BandViewProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/binary_expression.py b/frogpilot/third_party/influxdb_client/domain/binary_expression.py new file mode 100644 index 000000000..858d4e110 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/binary_expression.py @@ -0,0 +1,184 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class BinaryExpression(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'operator': 'str', + 'left': 'Expression', + 'right': 'Expression' + } + + attribute_map = { + 'type': 'type', + 'operator': 'operator', + 'left': 'left', + 'right': 'right' + } + + def __init__(self, type=None, operator=None, left=None, right=None): # noqa: E501,D401,D403 + """BinaryExpression - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._operator = None + self._left = None + self._right = None + self.discriminator = None + + if type is not None: + self.type = type + if operator is not None: + self.operator = operator + if left is not None: + self.left = left + if right is not None: + self.right = right + + @property + def type(self): + """Get the type of this BinaryExpression. + + Type of AST node + + :return: The type of this BinaryExpression. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this BinaryExpression. + + Type of AST node + + :param type: The type of this BinaryExpression. + :type: str + """ # noqa: E501 + self._type = type + + @property + def operator(self): + """Get the operator of this BinaryExpression. + + :return: The operator of this BinaryExpression. + :rtype: str + """ # noqa: E501 + return self._operator + + @operator.setter + def operator(self, operator): + """Set the operator of this BinaryExpression. + + :param operator: The operator of this BinaryExpression. + :type: str + """ # noqa: E501 + self._operator = operator + + @property + def left(self): + """Get the left of this BinaryExpression. + + :return: The left of this BinaryExpression. + :rtype: Expression + """ # noqa: E501 + return self._left + + @left.setter + def left(self, left): + """Set the left of this BinaryExpression. + + :param left: The left of this BinaryExpression. + :type: Expression + """ # noqa: E501 + self._left = left + + @property + def right(self): + """Get the right of this BinaryExpression. + + :return: The right of this BinaryExpression. + :rtype: Expression + """ # noqa: E501 + return self._right + + @right.setter + def right(self, right): + """Set the right of this BinaryExpression. + + :param right: The right of this BinaryExpression. + :type: Expression + """ # noqa: E501 + self._right = right + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, BinaryExpression): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/block.py b/frogpilot/third_party/influxdb_client/domain/block.py new file mode 100644 index 000000000..b2ddc3660 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/block.py @@ -0,0 +1,142 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.node import Node + + +class Block(Node): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'body': 'list[Statement]' + } + + attribute_map = { + 'type': 'type', + 'body': 'body' + } + + def __init__(self, type=None, body=None): # noqa: E501,D401,D403 + """Block - a model defined in OpenAPI.""" # noqa: E501 + Node.__init__(self) # noqa: E501 + + self._type = None + self._body = None + self.discriminator = None + + if type is not None: + self.type = type + if body is not None: + self.body = body + + @property + def type(self): + """Get the type of this Block. + + Type of AST node + + :return: The type of this Block. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this Block. + + Type of AST node + + :param type: The type of this Block. + :type: str + """ # noqa: E501 + self._type = type + + @property + def body(self): + """Get the body of this Block. + + Block body + + :return: The body of this Block. + :rtype: list[Statement] + """ # noqa: E501 + return self._body + + @body.setter + def body(self, body): + """Set the body of this Block. + + Block body + + :param body: The body of this Block. + :type: list[Statement] + """ # noqa: E501 + self._body = body + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Block): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/boolean_literal.py b/frogpilot/third_party/influxdb_client/domain/boolean_literal.py new file mode 100644 index 000000000..693d7be1a --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/boolean_literal.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class BooleanLiteral(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'value': 'bool' + } + + attribute_map = { + 'type': 'type', + 'value': 'value' + } + + def __init__(self, type=None, value=None): # noqa: E501,D401,D403 + """BooleanLiteral - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._value = None + self.discriminator = None + + if type is not None: + self.type = type + if value is not None: + self.value = value + + @property + def type(self): + """Get the type of this BooleanLiteral. + + Type of AST node + + :return: The type of this BooleanLiteral. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this BooleanLiteral. + + Type of AST node + + :param type: The type of this BooleanLiteral. + :type: str + """ # noqa: E501 + self._type = type + + @property + def value(self): + """Get the value of this BooleanLiteral. + + :return: The value of this BooleanLiteral. + :rtype: bool + """ # noqa: E501 + return self._value + + @value.setter + def value(self, value): + """Set the value of this BooleanLiteral. + + :param value: The value of this BooleanLiteral. + :type: bool + """ # noqa: E501 + self._value = value + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, BooleanLiteral): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/bucket.py b/frogpilot/third_party/influxdb_client/domain/bucket.py new file mode 100644 index 000000000..fe7d3d6b5 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/bucket.py @@ -0,0 +1,366 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Bucket(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'links': 'BucketLinks', + 'id': 'str', + 'type': 'str', + 'name': 'str', + 'description': 'str', + 'org_id': 'str', + 'rp': 'str', + 'schema_type': 'SchemaType', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'retention_rules': 'list[BucketRetentionRules]', + 'labels': 'list[Label]' + } + + attribute_map = { + 'links': 'links', + 'id': 'id', + 'type': 'type', + 'name': 'name', + 'description': 'description', + 'org_id': 'orgID', + 'rp': 'rp', + 'schema_type': 'schemaType', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'retention_rules': 'retentionRules', + 'labels': 'labels' + } + + def __init__(self, links=None, id=None, type='user', name=None, description=None, org_id=None, rp=None, schema_type=None, created_at=None, updated_at=None, retention_rules=None, labels=None): # noqa: E501,D401,D403 + """Bucket - a model defined in OpenAPI.""" # noqa: E501 + self._links = None + self._id = None + self._type = None + self._name = None + self._description = None + self._org_id = None + self._rp = None + self._schema_type = None + self._created_at = None + self._updated_at = None + self._retention_rules = None + self._labels = None + self.discriminator = None + + if links is not None: + self.links = links + if id is not None: + self.id = id + if type is not None: + self.type = type + self.name = name + if description is not None: + self.description = description + if org_id is not None: + self.org_id = org_id + if rp is not None: + self.rp = rp + if schema_type is not None: + self.schema_type = schema_type + if created_at is not None: + self.created_at = created_at + if updated_at is not None: + self.updated_at = updated_at + self.retention_rules = retention_rules + if labels is not None: + self.labels = labels + + @property + def links(self): + """Get the links of this Bucket. + + :return: The links of this Bucket. + :rtype: BucketLinks + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Bucket. + + :param links: The links of this Bucket. + :type: BucketLinks + """ # noqa: E501 + self._links = links + + @property + def id(self): + """Get the id of this Bucket. + + :return: The id of this Bucket. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this Bucket. + + :param id: The id of this Bucket. + :type: str + """ # noqa: E501 + self._id = id + + @property + def type(self): + """Get the type of this Bucket. + + :return: The type of this Bucket. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this Bucket. + + :param type: The type of this Bucket. + :type: str + """ # noqa: E501 + self._type = type + + @property + def name(self): + """Get the name of this Bucket. + + :return: The name of this Bucket. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this Bucket. + + :param name: The name of this Bucket. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this Bucket. + + :return: The description of this Bucket. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this Bucket. + + :param description: The description of this Bucket. + :type: str + """ # noqa: E501 + self._description = description + + @property + def org_id(self): + """Get the org_id of this Bucket. + + :return: The org_id of this Bucket. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this Bucket. + + :param org_id: The org_id of this Bucket. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def rp(self): + """Get the rp of this Bucket. + + :return: The rp of this Bucket. + :rtype: str + """ # noqa: E501 + return self._rp + + @rp.setter + def rp(self, rp): + """Set the rp of this Bucket. + + :param rp: The rp of this Bucket. + :type: str + """ # noqa: E501 + self._rp = rp + + @property + def schema_type(self): + """Get the schema_type of this Bucket. + + :return: The schema_type of this Bucket. + :rtype: SchemaType + """ # noqa: E501 + return self._schema_type + + @schema_type.setter + def schema_type(self, schema_type): + """Set the schema_type of this Bucket. + + :param schema_type: The schema_type of this Bucket. + :type: SchemaType + """ # noqa: E501 + self._schema_type = schema_type + + @property + def created_at(self): + """Get the created_at of this Bucket. + + :return: The created_at of this Bucket. + :rtype: datetime + """ # noqa: E501 + return self._created_at + + @created_at.setter + def created_at(self, created_at): + """Set the created_at of this Bucket. + + :param created_at: The created_at of this Bucket. + :type: datetime + """ # noqa: E501 + self._created_at = created_at + + @property + def updated_at(self): + """Get the updated_at of this Bucket. + + :return: The updated_at of this Bucket. + :rtype: datetime + """ # noqa: E501 + return self._updated_at + + @updated_at.setter + def updated_at(self, updated_at): + """Set the updated_at of this Bucket. + + :param updated_at: The updated_at of this Bucket. + :type: datetime + """ # noqa: E501 + self._updated_at = updated_at + + @property + def retention_rules(self): + """Get the retention_rules of this Bucket. + + Retention rules to expire or retain data. The InfluxDB `/api/v2` API uses `RetentionRules` to configure the [retention period](https://docs.influxdata.com/influxdb/latest/reference/glossary/#retention-period). #### InfluxDB Cloud - `retentionRules` is required. #### InfluxDB OSS - `retentionRules` isn't required. + + :return: The retention_rules of this Bucket. + :rtype: list[BucketRetentionRules] + """ # noqa: E501 + return self._retention_rules + + @retention_rules.setter + def retention_rules(self, retention_rules): + """Set the retention_rules of this Bucket. + + Retention rules to expire or retain data. The InfluxDB `/api/v2` API uses `RetentionRules` to configure the [retention period](https://docs.influxdata.com/influxdb/latest/reference/glossary/#retention-period). #### InfluxDB Cloud - `retentionRules` is required. #### InfluxDB OSS - `retentionRules` isn't required. + + :param retention_rules: The retention_rules of this Bucket. + :type: list[BucketRetentionRules] + """ # noqa: E501 + if retention_rules is None: + raise ValueError("Invalid value for `retention_rules`, must not be `None`") # noqa: E501 + self._retention_rules = retention_rules + + @property + def labels(self): + """Get the labels of this Bucket. + + :return: The labels of this Bucket. + :rtype: list[Label] + """ # noqa: E501 + return self._labels + + @labels.setter + def labels(self, labels): + """Set the labels of this Bucket. + + :param labels: The labels of this Bucket. + :type: list[Label] + """ # noqa: E501 + self._labels = labels + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Bucket): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/bucket_links.py b/frogpilot/third_party/influxdb_client/domain/bucket_links.py new file mode 100644 index 000000000..a4cef1aae --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/bucket_links.py @@ -0,0 +1,246 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class BucketLinks(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'labels': 'str', + 'members': 'str', + 'org': 'str', + 'owners': 'str', + '_self': 'str', + 'write': 'str' + } + + attribute_map = { + 'labels': 'labels', + 'members': 'members', + 'org': 'org', + 'owners': 'owners', + '_self': 'self', + 'write': 'write' + } + + def __init__(self, labels=None, members=None, org=None, owners=None, _self=None, write=None): # noqa: E501,D401,D403 + """BucketLinks - a model defined in OpenAPI.""" # noqa: E501 + self._labels = None + self._members = None + self._org = None + self._owners = None + self.__self = None + self._write = None + self.discriminator = None + + if labels is not None: + self.labels = labels + if members is not None: + self.members = members + if org is not None: + self.org = org + if owners is not None: + self.owners = owners + if _self is not None: + self._self = _self + if write is not None: + self.write = write + + @property + def labels(self): + """Get the labels of this BucketLinks. + + URI of resource. + + :return: The labels of this BucketLinks. + :rtype: str + """ # noqa: E501 + return self._labels + + @labels.setter + def labels(self, labels): + """Set the labels of this BucketLinks. + + URI of resource. + + :param labels: The labels of this BucketLinks. + :type: str + """ # noqa: E501 + self._labels = labels + + @property + def members(self): + """Get the members of this BucketLinks. + + URI of resource. + + :return: The members of this BucketLinks. + :rtype: str + """ # noqa: E501 + return self._members + + @members.setter + def members(self, members): + """Set the members of this BucketLinks. + + URI of resource. + + :param members: The members of this BucketLinks. + :type: str + """ # noqa: E501 + self._members = members + + @property + def org(self): + """Get the org of this BucketLinks. + + URI of resource. + + :return: The org of this BucketLinks. + :rtype: str + """ # noqa: E501 + return self._org + + @org.setter + def org(self, org): + """Set the org of this BucketLinks. + + URI of resource. + + :param org: The org of this BucketLinks. + :type: str + """ # noqa: E501 + self._org = org + + @property + def owners(self): + """Get the owners of this BucketLinks. + + URI of resource. + + :return: The owners of this BucketLinks. + :rtype: str + """ # noqa: E501 + return self._owners + + @owners.setter + def owners(self, owners): + """Set the owners of this BucketLinks. + + URI of resource. + + :param owners: The owners of this BucketLinks. + :type: str + """ # noqa: E501 + self._owners = owners + + @property + def _self(self): + """Get the _self of this BucketLinks. + + URI of resource. + + :return: The _self of this BucketLinks. + :rtype: str + """ # noqa: E501 + return self.__self + + @_self.setter + def _self(self, _self): + """Set the _self of this BucketLinks. + + URI of resource. + + :param _self: The _self of this BucketLinks. + :type: str + """ # noqa: E501 + self.__self = _self + + @property + def write(self): + """Get the write of this BucketLinks. + + URI of resource. + + :return: The write of this BucketLinks. + :rtype: str + """ # noqa: E501 + return self._write + + @write.setter + def write(self, write): + """Set the write of this BucketLinks. + + URI of resource. + + :param write: The write of this BucketLinks. + :type: str + """ # noqa: E501 + self._write = write + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, BucketLinks): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/bucket_metadata_manifest.py b/frogpilot/third_party/influxdb_client/domain/bucket_metadata_manifest.py new file mode 100644 index 000000000..c87ec20e1 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/bucket_metadata_manifest.py @@ -0,0 +1,251 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class BucketMetadataManifest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'organization_id': 'str', + 'organization_name': 'str', + 'bucket_id': 'str', + 'bucket_name': 'str', + 'description': 'str', + 'default_retention_policy': 'str', + 'retention_policies': 'list[RetentionPolicyManifest]' + } + + attribute_map = { + 'organization_id': 'organizationID', + 'organization_name': 'organizationName', + 'bucket_id': 'bucketID', + 'bucket_name': 'bucketName', + 'description': 'description', + 'default_retention_policy': 'defaultRetentionPolicy', + 'retention_policies': 'retentionPolicies' + } + + def __init__(self, organization_id=None, organization_name=None, bucket_id=None, bucket_name=None, description=None, default_retention_policy=None, retention_policies=None): # noqa: E501,D401,D403 + """BucketMetadataManifest - a model defined in OpenAPI.""" # noqa: E501 + self._organization_id = None + self._organization_name = None + self._bucket_id = None + self._bucket_name = None + self._description = None + self._default_retention_policy = None + self._retention_policies = None + self.discriminator = None + + self.organization_id = organization_id + self.organization_name = organization_name + self.bucket_id = bucket_id + self.bucket_name = bucket_name + if description is not None: + self.description = description + self.default_retention_policy = default_retention_policy + self.retention_policies = retention_policies + + @property + def organization_id(self): + """Get the organization_id of this BucketMetadataManifest. + + :return: The organization_id of this BucketMetadataManifest. + :rtype: str + """ # noqa: E501 + return self._organization_id + + @organization_id.setter + def organization_id(self, organization_id): + """Set the organization_id of this BucketMetadataManifest. + + :param organization_id: The organization_id of this BucketMetadataManifest. + :type: str + """ # noqa: E501 + if organization_id is None: + raise ValueError("Invalid value for `organization_id`, must not be `None`") # noqa: E501 + self._organization_id = organization_id + + @property + def organization_name(self): + """Get the organization_name of this BucketMetadataManifest. + + :return: The organization_name of this BucketMetadataManifest. + :rtype: str + """ # noqa: E501 + return self._organization_name + + @organization_name.setter + def organization_name(self, organization_name): + """Set the organization_name of this BucketMetadataManifest. + + :param organization_name: The organization_name of this BucketMetadataManifest. + :type: str + """ # noqa: E501 + if organization_name is None: + raise ValueError("Invalid value for `organization_name`, must not be `None`") # noqa: E501 + self._organization_name = organization_name + + @property + def bucket_id(self): + """Get the bucket_id of this BucketMetadataManifest. + + :return: The bucket_id of this BucketMetadataManifest. + :rtype: str + """ # noqa: E501 + return self._bucket_id + + @bucket_id.setter + def bucket_id(self, bucket_id): + """Set the bucket_id of this BucketMetadataManifest. + + :param bucket_id: The bucket_id of this BucketMetadataManifest. + :type: str + """ # noqa: E501 + if bucket_id is None: + raise ValueError("Invalid value for `bucket_id`, must not be `None`") # noqa: E501 + self._bucket_id = bucket_id + + @property + def bucket_name(self): + """Get the bucket_name of this BucketMetadataManifest. + + :return: The bucket_name of this BucketMetadataManifest. + :rtype: str + """ # noqa: E501 + return self._bucket_name + + @bucket_name.setter + def bucket_name(self, bucket_name): + """Set the bucket_name of this BucketMetadataManifest. + + :param bucket_name: The bucket_name of this BucketMetadataManifest. + :type: str + """ # noqa: E501 + if bucket_name is None: + raise ValueError("Invalid value for `bucket_name`, must not be `None`") # noqa: E501 + self._bucket_name = bucket_name + + @property + def description(self): + """Get the description of this BucketMetadataManifest. + + :return: The description of this BucketMetadataManifest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this BucketMetadataManifest. + + :param description: The description of this BucketMetadataManifest. + :type: str + """ # noqa: E501 + self._description = description + + @property + def default_retention_policy(self): + """Get the default_retention_policy of this BucketMetadataManifest. + + :return: The default_retention_policy of this BucketMetadataManifest. + :rtype: str + """ # noqa: E501 + return self._default_retention_policy + + @default_retention_policy.setter + def default_retention_policy(self, default_retention_policy): + """Set the default_retention_policy of this BucketMetadataManifest. + + :param default_retention_policy: The default_retention_policy of this BucketMetadataManifest. + :type: str + """ # noqa: E501 + if default_retention_policy is None: + raise ValueError("Invalid value for `default_retention_policy`, must not be `None`") # noqa: E501 + self._default_retention_policy = default_retention_policy + + @property + def retention_policies(self): + """Get the retention_policies of this BucketMetadataManifest. + + :return: The retention_policies of this BucketMetadataManifest. + :rtype: list[RetentionPolicyManifest] + """ # noqa: E501 + return self._retention_policies + + @retention_policies.setter + def retention_policies(self, retention_policies): + """Set the retention_policies of this BucketMetadataManifest. + + :param retention_policies: The retention_policies of this BucketMetadataManifest. + :type: list[RetentionPolicyManifest] + """ # noqa: E501 + if retention_policies is None: + raise ValueError("Invalid value for `retention_policies`, must not be `None`") # noqa: E501 + self._retention_policies = retention_policies + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, BucketMetadataManifest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/bucket_retention_rules.py b/frogpilot/third_party/influxdb_client/domain/bucket_retention_rules.py new file mode 100644 index 000000000..2359eb73e --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/bucket_retention_rules.py @@ -0,0 +1,164 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class BucketRetentionRules(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'every_seconds': 'int', + 'shard_group_duration_seconds': 'int' + } + + attribute_map = { + 'type': 'type', + 'every_seconds': 'everySeconds', + 'shard_group_duration_seconds': 'shardGroupDurationSeconds' + } + + def __init__(self, type='expire', every_seconds=2592000, shard_group_duration_seconds=None): # noqa: E501,D401,D403 + """BucketRetentionRules - a model defined in OpenAPI.""" # noqa: E501 + self._type = None + self._every_seconds = None + self._shard_group_duration_seconds = None + self.discriminator = None + + if type is not None: + self.type = type + self.every_seconds = every_seconds + if shard_group_duration_seconds is not None: + self.shard_group_duration_seconds = shard_group_duration_seconds + + @property + def type(self): + """Get the type of this BucketRetentionRules. + + :return: The type of this BucketRetentionRules. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this BucketRetentionRules. + + :param type: The type of this BucketRetentionRules. + :type: str + """ # noqa: E501 + self._type = type + + @property + def every_seconds(self): + """Get the every_seconds of this BucketRetentionRules. + + The duration in seconds for how long data will be kept in the database. The default duration is 2592000 (30 days). 0 represents infinite retention. + + :return: The every_seconds of this BucketRetentionRules. + :rtype: int + """ # noqa: E501 + return self._every_seconds + + @every_seconds.setter + def every_seconds(self, every_seconds): + """Set the every_seconds of this BucketRetentionRules. + + The duration in seconds for how long data will be kept in the database. The default duration is 2592000 (30 days). 0 represents infinite retention. + + :param every_seconds: The every_seconds of this BucketRetentionRules. + :type: int + """ # noqa: E501 + if every_seconds is None: + raise ValueError("Invalid value for `every_seconds`, must not be `None`") # noqa: E501 + if every_seconds is not None and every_seconds < 0: # noqa: E501 + raise ValueError("Invalid value for `every_seconds`, must be a value greater than or equal to `0`") # noqa: E501 + self._every_seconds = every_seconds + + @property + def shard_group_duration_seconds(self): + """Get the shard_group_duration_seconds of this BucketRetentionRules. + + The shard group duration. The duration or interval (in seconds) that each shard group covers. #### InfluxDB Cloud - Does not use `shardGroupDurationsSeconds`. #### InfluxDB OSS - Default value depends on the [bucket retention period](https://docs.influxdata.com/influxdb/latest/reference/internals/shards/#shard-group-duration). + + :return: The shard_group_duration_seconds of this BucketRetentionRules. + :rtype: int + """ # noqa: E501 + return self._shard_group_duration_seconds + + @shard_group_duration_seconds.setter + def shard_group_duration_seconds(self, shard_group_duration_seconds): + """Set the shard_group_duration_seconds of this BucketRetentionRules. + + The shard group duration. The duration or interval (in seconds) that each shard group covers. #### InfluxDB Cloud - Does not use `shardGroupDurationsSeconds`. #### InfluxDB OSS - Default value depends on the [bucket retention period](https://docs.influxdata.com/influxdb/latest/reference/internals/shards/#shard-group-duration). + + :param shard_group_duration_seconds: The shard_group_duration_seconds of this BucketRetentionRules. + :type: int + """ # noqa: E501 + self._shard_group_duration_seconds = shard_group_duration_seconds + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, BucketRetentionRules): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/bucket_shard_mapping.py b/frogpilot/third_party/influxdb_client/domain/bucket_shard_mapping.py new file mode 100644 index 000000000..1bf7c277d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/bucket_shard_mapping.py @@ -0,0 +1,132 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class BucketShardMapping(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'old_id': 'int', + 'new_id': 'int' + } + + attribute_map = { + 'old_id': 'oldId', + 'new_id': 'newId' + } + + def __init__(self, old_id=None, new_id=None): # noqa: E501,D401,D403 + """BucketShardMapping - a model defined in OpenAPI.""" # noqa: E501 + self._old_id = None + self._new_id = None + self.discriminator = None + + self.old_id = old_id + self.new_id = new_id + + @property + def old_id(self): + """Get the old_id of this BucketShardMapping. + + :return: The old_id of this BucketShardMapping. + :rtype: int + """ # noqa: E501 + return self._old_id + + @old_id.setter + def old_id(self, old_id): + """Set the old_id of this BucketShardMapping. + + :param old_id: The old_id of this BucketShardMapping. + :type: int + """ # noqa: E501 + if old_id is None: + raise ValueError("Invalid value for `old_id`, must not be `None`") # noqa: E501 + self._old_id = old_id + + @property + def new_id(self): + """Get the new_id of this BucketShardMapping. + + :return: The new_id of this BucketShardMapping. + :rtype: int + """ # noqa: E501 + return self._new_id + + @new_id.setter + def new_id(self, new_id): + """Set the new_id of this BucketShardMapping. + + :param new_id: The new_id of this BucketShardMapping. + :type: int + """ # noqa: E501 + if new_id is None: + raise ValueError("Invalid value for `new_id`, must not be `None`") # noqa: E501 + self._new_id = new_id + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, BucketShardMapping): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/buckets.py b/frogpilot/third_party/influxdb_client/domain/buckets.py new file mode 100644 index 000000000..de3277f75 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/buckets.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Buckets(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'links': 'Links', + 'buckets': 'list[Bucket]' + } + + attribute_map = { + 'links': 'links', + 'buckets': 'buckets' + } + + def __init__(self, links=None, buckets=None): # noqa: E501,D401,D403 + """Buckets - a model defined in OpenAPI.""" # noqa: E501 + self._links = None + self._buckets = None + self.discriminator = None + + if links is not None: + self.links = links + if buckets is not None: + self.buckets = buckets + + @property + def links(self): + """Get the links of this Buckets. + + :return: The links of this Buckets. + :rtype: Links + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Buckets. + + :param links: The links of this Buckets. + :type: Links + """ # noqa: E501 + self._links = links + + @property + def buckets(self): + """Get the buckets of this Buckets. + + :return: The buckets of this Buckets. + :rtype: list[Bucket] + """ # noqa: E501 + return self._buckets + + @buckets.setter + def buckets(self, buckets): + """Set the buckets of this Buckets. + + :param buckets: The buckets of this Buckets. + :type: list[Bucket] + """ # noqa: E501 + self._buckets = buckets + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Buckets): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/builder_aggregate_function_type.py b/frogpilot/third_party/influxdb_client/domain/builder_aggregate_function_type.py new file mode 100644 index 000000000..0cbf6b676 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/builder_aggregate_function_type.py @@ -0,0 +1,88 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class BuilderAggregateFunctionType(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + FILTER = "filter" + GROUP = "group" + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """BuilderAggregateFunctionType - a model defined in OpenAPI.""" # noqa: E501 self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, BuilderAggregateFunctionType): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/builder_config.py b/frogpilot/third_party/influxdb_client/domain/builder_config.py new file mode 100644 index 000000000..e8a2d0258 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/builder_config.py @@ -0,0 +1,176 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class BuilderConfig(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'buckets': 'list[str]', + 'tags': 'list[BuilderTagsType]', + 'functions': 'list[BuilderFunctionsType]', + 'aggregate_window': 'BuilderConfigAggregateWindow' + } + + attribute_map = { + 'buckets': 'buckets', + 'tags': 'tags', + 'functions': 'functions', + 'aggregate_window': 'aggregateWindow' + } + + def __init__(self, buckets=None, tags=None, functions=None, aggregate_window=None): # noqa: E501,D401,D403 + """BuilderConfig - a model defined in OpenAPI.""" # noqa: E501 + self._buckets = None + self._tags = None + self._functions = None + self._aggregate_window = None + self.discriminator = None + + if buckets is not None: + self.buckets = buckets + if tags is not None: + self.tags = tags + if functions is not None: + self.functions = functions + if aggregate_window is not None: + self.aggregate_window = aggregate_window + + @property + def buckets(self): + """Get the buckets of this BuilderConfig. + + :return: The buckets of this BuilderConfig. + :rtype: list[str] + """ # noqa: E501 + return self._buckets + + @buckets.setter + def buckets(self, buckets): + """Set the buckets of this BuilderConfig. + + :param buckets: The buckets of this BuilderConfig. + :type: list[str] + """ # noqa: E501 + self._buckets = buckets + + @property + def tags(self): + """Get the tags of this BuilderConfig. + + :return: The tags of this BuilderConfig. + :rtype: list[BuilderTagsType] + """ # noqa: E501 + return self._tags + + @tags.setter + def tags(self, tags): + """Set the tags of this BuilderConfig. + + :param tags: The tags of this BuilderConfig. + :type: list[BuilderTagsType] + """ # noqa: E501 + self._tags = tags + + @property + def functions(self): + """Get the functions of this BuilderConfig. + + :return: The functions of this BuilderConfig. + :rtype: list[BuilderFunctionsType] + """ # noqa: E501 + return self._functions + + @functions.setter + def functions(self, functions): + """Set the functions of this BuilderConfig. + + :param functions: The functions of this BuilderConfig. + :type: list[BuilderFunctionsType] + """ # noqa: E501 + self._functions = functions + + @property + def aggregate_window(self): + """Get the aggregate_window of this BuilderConfig. + + :return: The aggregate_window of this BuilderConfig. + :rtype: BuilderConfigAggregateWindow + """ # noqa: E501 + return self._aggregate_window + + @aggregate_window.setter + def aggregate_window(self, aggregate_window): + """Set the aggregate_window of this BuilderConfig. + + :param aggregate_window: The aggregate_window of this BuilderConfig. + :type: BuilderConfigAggregateWindow + """ # noqa: E501 + self._aggregate_window = aggregate_window + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, BuilderConfig): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/builder_config_aggregate_window.py b/frogpilot/third_party/influxdb_client/domain/builder_config_aggregate_window.py new file mode 100644 index 000000000..bcdde38d9 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/builder_config_aggregate_window.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class BuilderConfigAggregateWindow(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'period': 'str', + 'fill_values': 'bool' + } + + attribute_map = { + 'period': 'period', + 'fill_values': 'fillValues' + } + + def __init__(self, period=None, fill_values=None): # noqa: E501,D401,D403 + """BuilderConfigAggregateWindow - a model defined in OpenAPI.""" # noqa: E501 + self._period = None + self._fill_values = None + self.discriminator = None + + if period is not None: + self.period = period + if fill_values is not None: + self.fill_values = fill_values + + @property + def period(self): + """Get the period of this BuilderConfigAggregateWindow. + + :return: The period of this BuilderConfigAggregateWindow. + :rtype: str + """ # noqa: E501 + return self._period + + @period.setter + def period(self, period): + """Set the period of this BuilderConfigAggregateWindow. + + :param period: The period of this BuilderConfigAggregateWindow. + :type: str + """ # noqa: E501 + self._period = period + + @property + def fill_values(self): + """Get the fill_values of this BuilderConfigAggregateWindow. + + :return: The fill_values of this BuilderConfigAggregateWindow. + :rtype: bool + """ # noqa: E501 + return self._fill_values + + @fill_values.setter + def fill_values(self, fill_values): + """Set the fill_values of this BuilderConfigAggregateWindow. + + :param fill_values: The fill_values of this BuilderConfigAggregateWindow. + :type: bool + """ # noqa: E501 + self._fill_values = fill_values + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, BuilderConfigAggregateWindow): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/builder_functions_type.py b/frogpilot/third_party/influxdb_client/domain/builder_functions_type.py new file mode 100644 index 000000000..4ebf44ea9 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/builder_functions_type.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class BuilderFunctionsType(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str' + } + + attribute_map = { + 'name': 'name' + } + + def __init__(self, name=None): # noqa: E501,D401,D403 + """BuilderFunctionsType - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self.discriminator = None + + if name is not None: + self.name = name + + @property + def name(self): + """Get the name of this BuilderFunctionsType. + + :return: The name of this BuilderFunctionsType. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this BuilderFunctionsType. + + :param name: The name of this BuilderFunctionsType. + :type: str + """ # noqa: E501 + self._name = name + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, BuilderFunctionsType): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/builder_tags_type.py b/frogpilot/third_party/influxdb_client/domain/builder_tags_type.py new file mode 100644 index 000000000..fcf7e05e1 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/builder_tags_type.py @@ -0,0 +1,153 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class BuilderTagsType(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'key': 'str', + 'values': 'list[str]', + 'aggregate_function_type': 'BuilderAggregateFunctionType' + } + + attribute_map = { + 'key': 'key', + 'values': 'values', + 'aggregate_function_type': 'aggregateFunctionType' + } + + def __init__(self, key=None, values=None, aggregate_function_type=None): # noqa: E501,D401,D403 + """BuilderTagsType - a model defined in OpenAPI.""" # noqa: E501 + self._key = None + self._values = None + self._aggregate_function_type = None + self.discriminator = None + + if key is not None: + self.key = key + if values is not None: + self.values = values + if aggregate_function_type is not None: + self.aggregate_function_type = aggregate_function_type + + @property + def key(self): + """Get the key of this BuilderTagsType. + + :return: The key of this BuilderTagsType. + :rtype: str + """ # noqa: E501 + return self._key + + @key.setter + def key(self, key): + """Set the key of this BuilderTagsType. + + :param key: The key of this BuilderTagsType. + :type: str + """ # noqa: E501 + self._key = key + + @property + def values(self): + """Get the values of this BuilderTagsType. + + :return: The values of this BuilderTagsType. + :rtype: list[str] + """ # noqa: E501 + return self._values + + @values.setter + def values(self, values): + """Set the values of this BuilderTagsType. + + :param values: The values of this BuilderTagsType. + :type: list[str] + """ # noqa: E501 + self._values = values + + @property + def aggregate_function_type(self): + """Get the aggregate_function_type of this BuilderTagsType. + + :return: The aggregate_function_type of this BuilderTagsType. + :rtype: BuilderAggregateFunctionType + """ # noqa: E501 + return self._aggregate_function_type + + @aggregate_function_type.setter + def aggregate_function_type(self, aggregate_function_type): + """Set the aggregate_function_type of this BuilderTagsType. + + :param aggregate_function_type: The aggregate_function_type of this BuilderTagsType. + :type: BuilderAggregateFunctionType + """ # noqa: E501 + self._aggregate_function_type = aggregate_function_type + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, BuilderTagsType): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/builtin_statement.py b/frogpilot/third_party/influxdb_client/domain/builtin_statement.py new file mode 100644 index 000000000..51f24a317 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/builtin_statement.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.statement import Statement + + +class BuiltinStatement(Statement): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'id': 'Identifier' + } + + attribute_map = { + 'type': 'type', + 'id': 'id' + } + + def __init__(self, type=None, id=None): # noqa: E501,D401,D403 + """BuiltinStatement - a model defined in OpenAPI.""" # noqa: E501 + Statement.__init__(self) # noqa: E501 + + self._type = None + self._id = None + self.discriminator = None + + if type is not None: + self.type = type + if id is not None: + self.id = id + + @property + def type(self): + """Get the type of this BuiltinStatement. + + Type of AST node + + :return: The type of this BuiltinStatement. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this BuiltinStatement. + + Type of AST node + + :param type: The type of this BuiltinStatement. + :type: str + """ # noqa: E501 + self._type = type + + @property + def id(self): + """Get the id of this BuiltinStatement. + + :return: The id of this BuiltinStatement. + :rtype: Identifier + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this BuiltinStatement. + + :param id: The id of this BuiltinStatement. + :type: Identifier + """ # noqa: E501 + self._id = id + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, BuiltinStatement): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/call_expression.py b/frogpilot/third_party/influxdb_client/domain/call_expression.py new file mode 100644 index 000000000..922b705d2 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/call_expression.py @@ -0,0 +1,165 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class CallExpression(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'callee': 'Expression', + 'arguments': 'list[Expression]' + } + + attribute_map = { + 'type': 'type', + 'callee': 'callee', + 'arguments': 'arguments' + } + + def __init__(self, type=None, callee=None, arguments=None): # noqa: E501,D401,D403 + """CallExpression - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._callee = None + self._arguments = None + self.discriminator = None + + if type is not None: + self.type = type + if callee is not None: + self.callee = callee + if arguments is not None: + self.arguments = arguments + + @property + def type(self): + """Get the type of this CallExpression. + + Type of AST node + + :return: The type of this CallExpression. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this CallExpression. + + Type of AST node + + :param type: The type of this CallExpression. + :type: str + """ # noqa: E501 + self._type = type + + @property + def callee(self): + """Get the callee of this CallExpression. + + :return: The callee of this CallExpression. + :rtype: Expression + """ # noqa: E501 + return self._callee + + @callee.setter + def callee(self, callee): + """Set the callee of this CallExpression. + + :param callee: The callee of this CallExpression. + :type: Expression + """ # noqa: E501 + self._callee = callee + + @property + def arguments(self): + """Get the arguments of this CallExpression. + + Function arguments + + :return: The arguments of this CallExpression. + :rtype: list[Expression] + """ # noqa: E501 + return self._arguments + + @arguments.setter + def arguments(self, arguments): + """Set the arguments of this CallExpression. + + Function arguments + + :param arguments: The arguments of this CallExpression. + :type: list[Expression] + """ # noqa: E501 + self._arguments = arguments + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, CallExpression): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/cell.py b/frogpilot/third_party/influxdb_client/domain/cell.py new file mode 100644 index 000000000..d52d9476f --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/cell.py @@ -0,0 +1,249 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Cell(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'links': 'CellLinks', + 'x': 'int', + 'y': 'int', + 'w': 'int', + 'h': 'int', + 'view_id': 'str' + } + + attribute_map = { + 'id': 'id', + 'links': 'links', + 'x': 'x', + 'y': 'y', + 'w': 'w', + 'h': 'h', + 'view_id': 'viewID' + } + + def __init__(self, id=None, links=None, x=None, y=None, w=None, h=None, view_id=None): # noqa: E501,D401,D403 + """Cell - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._links = None + self._x = None + self._y = None + self._w = None + self._h = None + self._view_id = None + self.discriminator = None + + if id is not None: + self.id = id + if links is not None: + self.links = links + if x is not None: + self.x = x + if y is not None: + self.y = y + if w is not None: + self.w = w + if h is not None: + self.h = h + if view_id is not None: + self.view_id = view_id + + @property + def id(self): + """Get the id of this Cell. + + :return: The id of this Cell. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this Cell. + + :param id: The id of this Cell. + :type: str + """ # noqa: E501 + self._id = id + + @property + def links(self): + """Get the links of this Cell. + + :return: The links of this Cell. + :rtype: CellLinks + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Cell. + + :param links: The links of this Cell. + :type: CellLinks + """ # noqa: E501 + self._links = links + + @property + def x(self): + """Get the x of this Cell. + + :return: The x of this Cell. + :rtype: int + """ # noqa: E501 + return self._x + + @x.setter + def x(self, x): + """Set the x of this Cell. + + :param x: The x of this Cell. + :type: int + """ # noqa: E501 + self._x = x + + @property + def y(self): + """Get the y of this Cell. + + :return: The y of this Cell. + :rtype: int + """ # noqa: E501 + return self._y + + @y.setter + def y(self, y): + """Set the y of this Cell. + + :param y: The y of this Cell. + :type: int + """ # noqa: E501 + self._y = y + + @property + def w(self): + """Get the w of this Cell. + + :return: The w of this Cell. + :rtype: int + """ # noqa: E501 + return self._w + + @w.setter + def w(self, w): + """Set the w of this Cell. + + :param w: The w of this Cell. + :type: int + """ # noqa: E501 + self._w = w + + @property + def h(self): + """Get the h of this Cell. + + :return: The h of this Cell. + :rtype: int + """ # noqa: E501 + return self._h + + @h.setter + def h(self, h): + """Set the h of this Cell. + + :param h: The h of this Cell. + :type: int + """ # noqa: E501 + self._h = h + + @property + def view_id(self): + """Get the view_id of this Cell. + + The reference to a view from the views API. + + :return: The view_id of this Cell. + :rtype: str + """ # noqa: E501 + return self._view_id + + @view_id.setter + def view_id(self, view_id): + """Set the view_id of this Cell. + + The reference to a view from the views API. + + :param view_id: The view_id of this Cell. + :type: str + """ # noqa: E501 + self._view_id = view_id + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Cell): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/cell_links.py b/frogpilot/third_party/influxdb_client/domain/cell_links.py new file mode 100644 index 000000000..fc556c728 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/cell_links.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class CellLinks(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + '_self': 'str', + 'view': 'str' + } + + attribute_map = { + '_self': 'self', + 'view': 'view' + } + + def __init__(self, _self=None, view=None): # noqa: E501,D401,D403 + """CellLinks - a model defined in OpenAPI.""" # noqa: E501 + self.__self = None + self._view = None + self.discriminator = None + + if _self is not None: + self._self = _self + if view is not None: + self.view = view + + @property + def _self(self): + """Get the _self of this CellLinks. + + :return: The _self of this CellLinks. + :rtype: str + """ # noqa: E501 + return self.__self + + @_self.setter + def _self(self, _self): + """Set the _self of this CellLinks. + + :param _self: The _self of this CellLinks. + :type: str + """ # noqa: E501 + self.__self = _self + + @property + def view(self): + """Get the view of this CellLinks. + + :return: The view of this CellLinks. + :rtype: str + """ # noqa: E501 + return self._view + + @view.setter + def view(self, view): + """Set the view of this CellLinks. + + :param view: The view of this CellLinks. + :type: str + """ # noqa: E501 + self._view = view + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, CellLinks): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/cell_update.py b/frogpilot/third_party/influxdb_client/domain/cell_update.py new file mode 100644 index 000000000..d58c62577 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/cell_update.py @@ -0,0 +1,176 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class CellUpdate(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'x': 'int', + 'y': 'int', + 'w': 'int', + 'h': 'int' + } + + attribute_map = { + 'x': 'x', + 'y': 'y', + 'w': 'w', + 'h': 'h' + } + + def __init__(self, x=None, y=None, w=None, h=None): # noqa: E501,D401,D403 + """CellUpdate - a model defined in OpenAPI.""" # noqa: E501 + self._x = None + self._y = None + self._w = None + self._h = None + self.discriminator = None + + if x is not None: + self.x = x + if y is not None: + self.y = y + if w is not None: + self.w = w + if h is not None: + self.h = h + + @property + def x(self): + """Get the x of this CellUpdate. + + :return: The x of this CellUpdate. + :rtype: int + """ # noqa: E501 + return self._x + + @x.setter + def x(self, x): + """Set the x of this CellUpdate. + + :param x: The x of this CellUpdate. + :type: int + """ # noqa: E501 + self._x = x + + @property + def y(self): + """Get the y of this CellUpdate. + + :return: The y of this CellUpdate. + :rtype: int + """ # noqa: E501 + return self._y + + @y.setter + def y(self, y): + """Set the y of this CellUpdate. + + :param y: The y of this CellUpdate. + :type: int + """ # noqa: E501 + self._y = y + + @property + def w(self): + """Get the w of this CellUpdate. + + :return: The w of this CellUpdate. + :rtype: int + """ # noqa: E501 + return self._w + + @w.setter + def w(self, w): + """Set the w of this CellUpdate. + + :param w: The w of this CellUpdate. + :type: int + """ # noqa: E501 + self._w = w + + @property + def h(self): + """Get the h of this CellUpdate. + + :return: The h of this CellUpdate. + :rtype: int + """ # noqa: E501 + return self._h + + @h.setter + def h(self, h): + """Set the h of this CellUpdate. + + :param h: The h of this CellUpdate. + :type: int + """ # noqa: E501 + self._h = h + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, CellUpdate): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/cell_with_view_properties.py b/frogpilot/third_party/influxdb_client/domain/cell_with_view_properties.py new file mode 100644 index 000000000..4379cd11c --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/cell_with_view_properties.py @@ -0,0 +1,148 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.cell import Cell + + +class CellWithViewProperties(Cell): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'properties': 'ViewProperties', + 'id': 'str', + 'links': 'CellLinks', + 'x': 'int', + 'y': 'int', + 'w': 'int', + 'h': 'int', + 'view_id': 'str' + } + + attribute_map = { + 'name': 'name', + 'properties': 'properties', + 'id': 'id', + 'links': 'links', + 'x': 'x', + 'y': 'y', + 'w': 'w', + 'h': 'h', + 'view_id': 'viewID' + } + + def __init__(self, name=None, properties=None, id=None, links=None, x=None, y=None, w=None, h=None, view_id=None): # noqa: E501,D401,D403 + """CellWithViewProperties - a model defined in OpenAPI.""" # noqa: E501 + Cell.__init__(self, id=id, links=links, x=x, y=y, w=w, h=h, view_id=view_id) # noqa: E501 + + self._name = None + self._properties = None + self.discriminator = None + + if name is not None: + self.name = name + if properties is not None: + self.properties = properties + + @property + def name(self): + """Get the name of this CellWithViewProperties. + + :return: The name of this CellWithViewProperties. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this CellWithViewProperties. + + :param name: The name of this CellWithViewProperties. + :type: str + """ # noqa: E501 + self._name = name + + @property + def properties(self): + """Get the properties of this CellWithViewProperties. + + :return: The properties of this CellWithViewProperties. + :rtype: ViewProperties + """ # noqa: E501 + return self._properties + + @properties.setter + def properties(self, properties): + """Set the properties of this CellWithViewProperties. + + :param properties: The properties of this CellWithViewProperties. + :type: ViewProperties + """ # noqa: E501 + self._properties = properties + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, CellWithViewProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/check.py b/frogpilot/third_party/influxdb_client/domain/check.py new file mode 100644 index 000000000..c85e4a558 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/check.py @@ -0,0 +1,120 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Check(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str' + } + + attribute_map = { + 'type': 'type' + } + + discriminator_value_class_map = { + 'deadman': 'DeadmanCheck', + 'custom': 'CustomCheck', + 'threshold': 'ThresholdCheck' + } + + def __init__(self, type=None): # noqa: E501,D401,D403 + """Check - a model defined in OpenAPI.""" # noqa: E501 + self._type = None + self.discriminator = 'type' + + self.type = type + + @property + def type(self): + """Get the type of this Check. + + :return: The type of this Check. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this Check. + + :param type: The type of this Check. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + def get_real_child_model(self, data): + """Return the real base class specified by the discriminator.""" + discriminator_key = self.attribute_map[self.discriminator] + discriminator_value = data[discriminator_key] + return self.discriminator_value_class_map.get(discriminator_value) + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Check): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/check_base.py b/frogpilot/third_party/influxdb_client/domain/check_base.py new file mode 100644 index 000000000..b54921a10 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/check_base.py @@ -0,0 +1,452 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class CheckBase(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'name': 'str', + 'org_id': 'str', + 'task_id': 'str', + 'owner_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'query': 'DashboardQuery', + 'status': 'TaskStatusType', + 'description': 'str', + 'latest_completed': 'datetime', + 'last_run_status': 'str', + 'last_run_error': 'str', + 'labels': 'list[Label]', + 'links': 'CheckBaseLinks' + } + + attribute_map = { + 'id': 'id', + 'name': 'name', + 'org_id': 'orgID', + 'task_id': 'taskID', + 'owner_id': 'ownerID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'query': 'query', + 'status': 'status', + 'description': 'description', + 'latest_completed': 'latestCompleted', + 'last_run_status': 'lastRunStatus', + 'last_run_error': 'lastRunError', + 'labels': 'labels', + 'links': 'links' + } + + def __init__(self, id=None, name=None, org_id=None, task_id=None, owner_id=None, created_at=None, updated_at=None, query=None, status=None, description=None, latest_completed=None, last_run_status=None, last_run_error=None, labels=None, links=None): # noqa: E501,D401,D403 + """CheckBase - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._name = None + self._org_id = None + self._task_id = None + self._owner_id = None + self._created_at = None + self._updated_at = None + self._query = None + self._status = None + self._description = None + self._latest_completed = None + self._last_run_status = None + self._last_run_error = None + self._labels = None + self._links = None + self.discriminator = None + + if id is not None: + self.id = id + self.name = name + self.org_id = org_id + if task_id is not None: + self.task_id = task_id + if owner_id is not None: + self.owner_id = owner_id + if created_at is not None: + self.created_at = created_at + if updated_at is not None: + self.updated_at = updated_at + self.query = query + if status is not None: + self.status = status + if description is not None: + self.description = description + if latest_completed is not None: + self.latest_completed = latest_completed + if last_run_status is not None: + self.last_run_status = last_run_status + if last_run_error is not None: + self.last_run_error = last_run_error + if labels is not None: + self.labels = labels + if links is not None: + self.links = links + + @property + def id(self): + """Get the id of this CheckBase. + + :return: The id of this CheckBase. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this CheckBase. + + :param id: The id of this CheckBase. + :type: str + """ # noqa: E501 + self._id = id + + @property + def name(self): + """Get the name of this CheckBase. + + :return: The name of this CheckBase. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this CheckBase. + + :param name: The name of this CheckBase. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def org_id(self): + """Get the org_id of this CheckBase. + + The ID of the organization that owns this check. + + :return: The org_id of this CheckBase. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this CheckBase. + + The ID of the organization that owns this check. + + :param org_id: The org_id of this CheckBase. + :type: str + """ # noqa: E501 + if org_id is None: + raise ValueError("Invalid value for `org_id`, must not be `None`") # noqa: E501 + self._org_id = org_id + + @property + def task_id(self): + """Get the task_id of this CheckBase. + + The ID of the task associated with this check. + + :return: The task_id of this CheckBase. + :rtype: str + """ # noqa: E501 + return self._task_id + + @task_id.setter + def task_id(self, task_id): + """Set the task_id of this CheckBase. + + The ID of the task associated with this check. + + :param task_id: The task_id of this CheckBase. + :type: str + """ # noqa: E501 + self._task_id = task_id + + @property + def owner_id(self): + """Get the owner_id of this CheckBase. + + The ID of creator used to create this check. + + :return: The owner_id of this CheckBase. + :rtype: str + """ # noqa: E501 + return self._owner_id + + @owner_id.setter + def owner_id(self, owner_id): + """Set the owner_id of this CheckBase. + + The ID of creator used to create this check. + + :param owner_id: The owner_id of this CheckBase. + :type: str + """ # noqa: E501 + self._owner_id = owner_id + + @property + def created_at(self): + """Get the created_at of this CheckBase. + + :return: The created_at of this CheckBase. + :rtype: datetime + """ # noqa: E501 + return self._created_at + + @created_at.setter + def created_at(self, created_at): + """Set the created_at of this CheckBase. + + :param created_at: The created_at of this CheckBase. + :type: datetime + """ # noqa: E501 + self._created_at = created_at + + @property + def updated_at(self): + """Get the updated_at of this CheckBase. + + :return: The updated_at of this CheckBase. + :rtype: datetime + """ # noqa: E501 + return self._updated_at + + @updated_at.setter + def updated_at(self, updated_at): + """Set the updated_at of this CheckBase. + + :param updated_at: The updated_at of this CheckBase. + :type: datetime + """ # noqa: E501 + self._updated_at = updated_at + + @property + def query(self): + """Get the query of this CheckBase. + + :return: The query of this CheckBase. + :rtype: DashboardQuery + """ # noqa: E501 + return self._query + + @query.setter + def query(self, query): + """Set the query of this CheckBase. + + :param query: The query of this CheckBase. + :type: DashboardQuery + """ # noqa: E501 + if query is None: + raise ValueError("Invalid value for `query`, must not be `None`") # noqa: E501 + self._query = query + + @property + def status(self): + """Get the status of this CheckBase. + + :return: The status of this CheckBase. + :rtype: TaskStatusType + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this CheckBase. + + :param status: The status of this CheckBase. + :type: TaskStatusType + """ # noqa: E501 + self._status = status + + @property + def description(self): + """Get the description of this CheckBase. + + An optional description of the check. + + :return: The description of this CheckBase. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this CheckBase. + + An optional description of the check. + + :param description: The description of this CheckBase. + :type: str + """ # noqa: E501 + self._description = description + + @property + def latest_completed(self): + """Get the latest_completed of this CheckBase. + + A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp)) of the latest scheduled and completed run. + + :return: The latest_completed of this CheckBase. + :rtype: datetime + """ # noqa: E501 + return self._latest_completed + + @latest_completed.setter + def latest_completed(self, latest_completed): + """Set the latest_completed of this CheckBase. + + A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp)) of the latest scheduled and completed run. + + :param latest_completed: The latest_completed of this CheckBase. + :type: datetime + """ # noqa: E501 + self._latest_completed = latest_completed + + @property + def last_run_status(self): + """Get the last_run_status of this CheckBase. + + :return: The last_run_status of this CheckBase. + :rtype: str + """ # noqa: E501 + return self._last_run_status + + @last_run_status.setter + def last_run_status(self, last_run_status): + """Set the last_run_status of this CheckBase. + + :param last_run_status: The last_run_status of this CheckBase. + :type: str + """ # noqa: E501 + self._last_run_status = last_run_status + + @property + def last_run_error(self): + """Get the last_run_error of this CheckBase. + + :return: The last_run_error of this CheckBase. + :rtype: str + """ # noqa: E501 + return self._last_run_error + + @last_run_error.setter + def last_run_error(self, last_run_error): + """Set the last_run_error of this CheckBase. + + :param last_run_error: The last_run_error of this CheckBase. + :type: str + """ # noqa: E501 + self._last_run_error = last_run_error + + @property + def labels(self): + """Get the labels of this CheckBase. + + :return: The labels of this CheckBase. + :rtype: list[Label] + """ # noqa: E501 + return self._labels + + @labels.setter + def labels(self, labels): + """Set the labels of this CheckBase. + + :param labels: The labels of this CheckBase. + :type: list[Label] + """ # noqa: E501 + self._labels = labels + + @property + def links(self): + """Get the links of this CheckBase. + + :return: The links of this CheckBase. + :rtype: CheckBaseLinks + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this CheckBase. + + :param links: The links of this CheckBase. + :type: CheckBaseLinks + """ # noqa: E501 + self._links = links + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, CheckBase): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/check_base_links.py b/frogpilot/third_party/influxdb_client/domain/check_base_links.py new file mode 100644 index 000000000..19c28aa45 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/check_base_links.py @@ -0,0 +1,219 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class CheckBaseLinks(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + '_self': 'str', + 'labels': 'str', + 'members': 'str', + 'owners': 'str', + 'query': 'str' + } + + attribute_map = { + '_self': 'self', + 'labels': 'labels', + 'members': 'members', + 'owners': 'owners', + 'query': 'query' + } + + def __init__(self, _self=None, labels=None, members=None, owners=None, query=None): # noqa: E501,D401,D403 + """CheckBaseLinks - a model defined in OpenAPI.""" # noqa: E501 + self.__self = None + self._labels = None + self._members = None + self._owners = None + self._query = None + self.discriminator = None + + if _self is not None: + self._self = _self + if labels is not None: + self.labels = labels + if members is not None: + self.members = members + if owners is not None: + self.owners = owners + if query is not None: + self.query = query + + @property + def _self(self): + """Get the _self of this CheckBaseLinks. + + URI of resource. + + :return: The _self of this CheckBaseLinks. + :rtype: str + """ # noqa: E501 + return self.__self + + @_self.setter + def _self(self, _self): + """Set the _self of this CheckBaseLinks. + + URI of resource. + + :param _self: The _self of this CheckBaseLinks. + :type: str + """ # noqa: E501 + self.__self = _self + + @property + def labels(self): + """Get the labels of this CheckBaseLinks. + + URI of resource. + + :return: The labels of this CheckBaseLinks. + :rtype: str + """ # noqa: E501 + return self._labels + + @labels.setter + def labels(self, labels): + """Set the labels of this CheckBaseLinks. + + URI of resource. + + :param labels: The labels of this CheckBaseLinks. + :type: str + """ # noqa: E501 + self._labels = labels + + @property + def members(self): + """Get the members of this CheckBaseLinks. + + URI of resource. + + :return: The members of this CheckBaseLinks. + :rtype: str + """ # noqa: E501 + return self._members + + @members.setter + def members(self, members): + """Set the members of this CheckBaseLinks. + + URI of resource. + + :param members: The members of this CheckBaseLinks. + :type: str + """ # noqa: E501 + self._members = members + + @property + def owners(self): + """Get the owners of this CheckBaseLinks. + + URI of resource. + + :return: The owners of this CheckBaseLinks. + :rtype: str + """ # noqa: E501 + return self._owners + + @owners.setter + def owners(self, owners): + """Set the owners of this CheckBaseLinks. + + URI of resource. + + :param owners: The owners of this CheckBaseLinks. + :type: str + """ # noqa: E501 + self._owners = owners + + @property + def query(self): + """Get the query of this CheckBaseLinks. + + URI of resource. + + :return: The query of this CheckBaseLinks. + :rtype: str + """ # noqa: E501 + return self._query + + @query.setter + def query(self, query): + """Set the query of this CheckBaseLinks. + + URI of resource. + + :param query: The query of this CheckBaseLinks. + :type: str + """ # noqa: E501 + self._query = query + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, CheckBaseLinks): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/check_discriminator.py b/frogpilot/third_party/influxdb_client/domain/check_discriminator.py new file mode 100644 index 000000000..c2ebfea88 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/check_discriminator.py @@ -0,0 +1,116 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.check_base import CheckBase + + +class CheckDiscriminator(CheckBase): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'name': 'str', + 'org_id': 'str', + 'task_id': 'str', + 'owner_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'query': 'DashboardQuery', + 'status': 'TaskStatusType', + 'description': 'str', + 'latest_completed': 'datetime', + 'last_run_status': 'str', + 'last_run_error': 'str', + 'labels': 'list[Label]', + 'links': 'CheckBaseLinks' + } + + attribute_map = { + 'id': 'id', + 'name': 'name', + 'org_id': 'orgID', + 'task_id': 'taskID', + 'owner_id': 'ownerID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'query': 'query', + 'status': 'status', + 'description': 'description', + 'latest_completed': 'latestCompleted', + 'last_run_status': 'lastRunStatus', + 'last_run_error': 'lastRunError', + 'labels': 'labels', + 'links': 'links' + } + + def __init__(self, id=None, name=None, org_id=None, task_id=None, owner_id=None, created_at=None, updated_at=None, query=None, status=None, description=None, latest_completed=None, last_run_status=None, last_run_error=None, labels=None, links=None): # noqa: E501,D401,D403 + """CheckDiscriminator - a model defined in OpenAPI.""" # noqa: E501 + CheckBase.__init__(self, id=id, name=name, org_id=org_id, task_id=task_id, owner_id=owner_id, created_at=created_at, updated_at=updated_at, query=query, status=status, description=description, latest_completed=latest_completed, last_run_status=last_run_status, last_run_error=last_run_error, labels=labels, links=links) # noqa: E501 + self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, CheckDiscriminator): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/check_patch.py b/frogpilot/third_party/influxdb_client/domain/check_patch.py new file mode 100644 index 000000000..014e910b3 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/check_patch.py @@ -0,0 +1,153 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class CheckPatch(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'description': 'str', + 'status': 'str' + } + + attribute_map = { + 'name': 'name', + 'description': 'description', + 'status': 'status' + } + + def __init__(self, name=None, description=None, status=None): # noqa: E501,D401,D403 + """CheckPatch - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._description = None + self._status = None + self.discriminator = None + + if name is not None: + self.name = name + if description is not None: + self.description = description + if status is not None: + self.status = status + + @property + def name(self): + """Get the name of this CheckPatch. + + :return: The name of this CheckPatch. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this CheckPatch. + + :param name: The name of this CheckPatch. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this CheckPatch. + + :return: The description of this CheckPatch. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this CheckPatch. + + :param description: The description of this CheckPatch. + :type: str + """ # noqa: E501 + self._description = description + + @property + def status(self): + """Get the status of this CheckPatch. + + :return: The status of this CheckPatch. + :rtype: str + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this CheckPatch. + + :param status: The status of this CheckPatch. + :type: str + """ # noqa: E501 + self._status = status + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, CheckPatch): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/check_status_level.py b/frogpilot/third_party/influxdb_client/domain/check_status_level.py new file mode 100644 index 000000000..476f2b568 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/check_status_level.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class CheckStatusLevel(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + UNKNOWN = "UNKNOWN" + OK = "OK" + INFO = "INFO" + CRIT = "CRIT" + WARN = "WARN" + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """CheckStatusLevel - a model defined in OpenAPI.""" # noqa: E501 self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, CheckStatusLevel): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/check_view_properties.py b/frogpilot/third_party/influxdb_client/domain/check_view_properties.py new file mode 100644 index 000000000..5226c490c --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/check_view_properties.py @@ -0,0 +1,350 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.view_properties import ViewProperties + + +class CheckViewProperties(ViewProperties): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'adaptive_zoom_hide': 'bool', + 'type': 'str', + 'shape': 'str', + 'check_id': 'str', + 'check': 'Check', + 'queries': 'list[DashboardQuery]', + 'colors': 'list[DashboardColor]', + 'legend_colorize_rows': 'bool', + 'legend_hide': 'bool', + 'legend_opacity': 'float', + 'legend_orientation_threshold': 'int' + } + + attribute_map = { + 'adaptive_zoom_hide': 'adaptiveZoomHide', + 'type': 'type', + 'shape': 'shape', + 'check_id': 'checkID', + 'check': 'check', + 'queries': 'queries', + 'colors': 'colors', + 'legend_colorize_rows': 'legendColorizeRows', + 'legend_hide': 'legendHide', + 'legend_opacity': 'legendOpacity', + 'legend_orientation_threshold': 'legendOrientationThreshold' + } + + def __init__(self, adaptive_zoom_hide=None, type=None, shape=None, check_id=None, check=None, queries=None, colors=None, legend_colorize_rows=None, legend_hide=None, legend_opacity=None, legend_orientation_threshold=None): # noqa: E501,D401,D403 + """CheckViewProperties - a model defined in OpenAPI.""" # noqa: E501 + ViewProperties.__init__(self) # noqa: E501 + + self._adaptive_zoom_hide = None + self._type = None + self._shape = None + self._check_id = None + self._check = None + self._queries = None + self._colors = None + self._legend_colorize_rows = None + self._legend_hide = None + self._legend_opacity = None + self._legend_orientation_threshold = None + self.discriminator = None + + if adaptive_zoom_hide is not None: + self.adaptive_zoom_hide = adaptive_zoom_hide + self.type = type + self.shape = shape + self.check_id = check_id + if check is not None: + self.check = check + self.queries = queries + self.colors = colors + if legend_colorize_rows is not None: + self.legend_colorize_rows = legend_colorize_rows + if legend_hide is not None: + self.legend_hide = legend_hide + if legend_opacity is not None: + self.legend_opacity = legend_opacity + if legend_orientation_threshold is not None: + self.legend_orientation_threshold = legend_orientation_threshold + + @property + def adaptive_zoom_hide(self): + """Get the adaptive_zoom_hide of this CheckViewProperties. + + :return: The adaptive_zoom_hide of this CheckViewProperties. + :rtype: bool + """ # noqa: E501 + return self._adaptive_zoom_hide + + @adaptive_zoom_hide.setter + def adaptive_zoom_hide(self, adaptive_zoom_hide): + """Set the adaptive_zoom_hide of this CheckViewProperties. + + :param adaptive_zoom_hide: The adaptive_zoom_hide of this CheckViewProperties. + :type: bool + """ # noqa: E501 + self._adaptive_zoom_hide = adaptive_zoom_hide + + @property + def type(self): + """Get the type of this CheckViewProperties. + + :return: The type of this CheckViewProperties. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this CheckViewProperties. + + :param type: The type of this CheckViewProperties. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def shape(self): + """Get the shape of this CheckViewProperties. + + :return: The shape of this CheckViewProperties. + :rtype: str + """ # noqa: E501 + return self._shape + + @shape.setter + def shape(self, shape): + """Set the shape of this CheckViewProperties. + + :param shape: The shape of this CheckViewProperties. + :type: str + """ # noqa: E501 + if shape is None: + raise ValueError("Invalid value for `shape`, must not be `None`") # noqa: E501 + self._shape = shape + + @property + def check_id(self): + """Get the check_id of this CheckViewProperties. + + :return: The check_id of this CheckViewProperties. + :rtype: str + """ # noqa: E501 + return self._check_id + + @check_id.setter + def check_id(self, check_id): + """Set the check_id of this CheckViewProperties. + + :param check_id: The check_id of this CheckViewProperties. + :type: str + """ # noqa: E501 + if check_id is None: + raise ValueError("Invalid value for `check_id`, must not be `None`") # noqa: E501 + self._check_id = check_id + + @property + def check(self): + """Get the check of this CheckViewProperties. + + :return: The check of this CheckViewProperties. + :rtype: Check + """ # noqa: E501 + return self._check + + @check.setter + def check(self, check): + """Set the check of this CheckViewProperties. + + :param check: The check of this CheckViewProperties. + :type: Check + """ # noqa: E501 + self._check = check + + @property + def queries(self): + """Get the queries of this CheckViewProperties. + + :return: The queries of this CheckViewProperties. + :rtype: list[DashboardQuery] + """ # noqa: E501 + return self._queries + + @queries.setter + def queries(self, queries): + """Set the queries of this CheckViewProperties. + + :param queries: The queries of this CheckViewProperties. + :type: list[DashboardQuery] + """ # noqa: E501 + if queries is None: + raise ValueError("Invalid value for `queries`, must not be `None`") # noqa: E501 + self._queries = queries + + @property + def colors(self): + """Get the colors of this CheckViewProperties. + + Colors define color encoding of data into a visualization + + :return: The colors of this CheckViewProperties. + :rtype: list[DashboardColor] + """ # noqa: E501 + return self._colors + + @colors.setter + def colors(self, colors): + """Set the colors of this CheckViewProperties. + + Colors define color encoding of data into a visualization + + :param colors: The colors of this CheckViewProperties. + :type: list[DashboardColor] + """ # noqa: E501 + if colors is None: + raise ValueError("Invalid value for `colors`, must not be `None`") # noqa: E501 + self._colors = colors + + @property + def legend_colorize_rows(self): + """Get the legend_colorize_rows of this CheckViewProperties. + + :return: The legend_colorize_rows of this CheckViewProperties. + :rtype: bool + """ # noqa: E501 + return self._legend_colorize_rows + + @legend_colorize_rows.setter + def legend_colorize_rows(self, legend_colorize_rows): + """Set the legend_colorize_rows of this CheckViewProperties. + + :param legend_colorize_rows: The legend_colorize_rows of this CheckViewProperties. + :type: bool + """ # noqa: E501 + self._legend_colorize_rows = legend_colorize_rows + + @property + def legend_hide(self): + """Get the legend_hide of this CheckViewProperties. + + :return: The legend_hide of this CheckViewProperties. + :rtype: bool + """ # noqa: E501 + return self._legend_hide + + @legend_hide.setter + def legend_hide(self, legend_hide): + """Set the legend_hide of this CheckViewProperties. + + :param legend_hide: The legend_hide of this CheckViewProperties. + :type: bool + """ # noqa: E501 + self._legend_hide = legend_hide + + @property + def legend_opacity(self): + """Get the legend_opacity of this CheckViewProperties. + + :return: The legend_opacity of this CheckViewProperties. + :rtype: float + """ # noqa: E501 + return self._legend_opacity + + @legend_opacity.setter + def legend_opacity(self, legend_opacity): + """Set the legend_opacity of this CheckViewProperties. + + :param legend_opacity: The legend_opacity of this CheckViewProperties. + :type: float + """ # noqa: E501 + self._legend_opacity = legend_opacity + + @property + def legend_orientation_threshold(self): + """Get the legend_orientation_threshold of this CheckViewProperties. + + :return: The legend_orientation_threshold of this CheckViewProperties. + :rtype: int + """ # noqa: E501 + return self._legend_orientation_threshold + + @legend_orientation_threshold.setter + def legend_orientation_threshold(self, legend_orientation_threshold): + """Set the legend_orientation_threshold of this CheckViewProperties. + + :param legend_orientation_threshold: The legend_orientation_threshold of this CheckViewProperties. + :type: int + """ # noqa: E501 + self._legend_orientation_threshold = legend_orientation_threshold + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, CheckViewProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/checks.py b/frogpilot/third_party/influxdb_client/domain/checks.py new file mode 100644 index 000000000..05083fcc4 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/checks.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Checks(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'checks': 'list[Check]', + 'links': 'Links' + } + + attribute_map = { + 'checks': 'checks', + 'links': 'links' + } + + def __init__(self, checks=None, links=None): # noqa: E501,D401,D403 + """Checks - a model defined in OpenAPI.""" # noqa: E501 + self._checks = None + self._links = None + self.discriminator = None + + if checks is not None: + self.checks = checks + if links is not None: + self.links = links + + @property + def checks(self): + """Get the checks of this Checks. + + :return: The checks of this Checks. + :rtype: list[Check] + """ # noqa: E501 + return self._checks + + @checks.setter + def checks(self, checks): + """Set the checks of this Checks. + + :param checks: The checks of this Checks. + :type: list[Check] + """ # noqa: E501 + self._checks = checks + + @property + def links(self): + """Get the links of this Checks. + + :return: The links of this Checks. + :rtype: Links + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Checks. + + :param links: The links of this Checks. + :type: Links + """ # noqa: E501 + self._links = links + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Checks): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/column_data_type.py b/frogpilot/third_party/influxdb_client/domain/column_data_type.py new file mode 100644 index 000000000..e2a2f2c32 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/column_data_type.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ColumnDataType(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + INTEGER = "integer" + FLOAT = "float" + BOOLEAN = "boolean" + STRING = "string" + UNSIGNED = "unsigned" + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """ColumnDataType - a model defined in OpenAPI.""" # noqa: E501 self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ColumnDataType): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/column_semantic_type.py b/frogpilot/third_party/influxdb_client/domain/column_semantic_type.py new file mode 100644 index 000000000..3f88a1337 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/column_semantic_type.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ColumnSemanticType(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + TIMESTAMP = "timestamp" + TAG = "tag" + FIELD = "field" + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """ColumnSemanticType - a model defined in OpenAPI.""" # noqa: E501 self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ColumnSemanticType): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/conditional_expression.py b/frogpilot/third_party/influxdb_client/domain/conditional_expression.py new file mode 100644 index 000000000..da5af4339 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/conditional_expression.py @@ -0,0 +1,184 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class ConditionalExpression(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'test': 'Expression', + 'alternate': 'Expression', + 'consequent': 'Expression' + } + + attribute_map = { + 'type': 'type', + 'test': 'test', + 'alternate': 'alternate', + 'consequent': 'consequent' + } + + def __init__(self, type=None, test=None, alternate=None, consequent=None): # noqa: E501,D401,D403 + """ConditionalExpression - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._test = None + self._alternate = None + self._consequent = None + self.discriminator = None + + if type is not None: + self.type = type + if test is not None: + self.test = test + if alternate is not None: + self.alternate = alternate + if consequent is not None: + self.consequent = consequent + + @property + def type(self): + """Get the type of this ConditionalExpression. + + Type of AST node + + :return: The type of this ConditionalExpression. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this ConditionalExpression. + + Type of AST node + + :param type: The type of this ConditionalExpression. + :type: str + """ # noqa: E501 + self._type = type + + @property + def test(self): + """Get the test of this ConditionalExpression. + + :return: The test of this ConditionalExpression. + :rtype: Expression + """ # noqa: E501 + return self._test + + @test.setter + def test(self, test): + """Set the test of this ConditionalExpression. + + :param test: The test of this ConditionalExpression. + :type: Expression + """ # noqa: E501 + self._test = test + + @property + def alternate(self): + """Get the alternate of this ConditionalExpression. + + :return: The alternate of this ConditionalExpression. + :rtype: Expression + """ # noqa: E501 + return self._alternate + + @alternate.setter + def alternate(self, alternate): + """Set the alternate of this ConditionalExpression. + + :param alternate: The alternate of this ConditionalExpression. + :type: Expression + """ # noqa: E501 + self._alternate = alternate + + @property + def consequent(self): + """Get the consequent of this ConditionalExpression. + + :return: The consequent of this ConditionalExpression. + :rtype: Expression + """ # noqa: E501 + return self._consequent + + @consequent.setter + def consequent(self, consequent): + """Set the consequent of this ConditionalExpression. + + :param consequent: The consequent of this ConditionalExpression. + :type: Expression + """ # noqa: E501 + self._consequent = consequent + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ConditionalExpression): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/config.py b/frogpilot/third_party/influxdb_client/domain/config.py new file mode 100644 index 000000000..cc4a03381 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/config.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Config(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'config': 'dict(str, object)' + } + + attribute_map = { + 'config': 'config' + } + + def __init__(self, config=None): # noqa: E501,D401,D403 + """Config - a model defined in OpenAPI.""" # noqa: E501 + self._config = None + self.discriminator = None + + if config is not None: + self.config = config + + @property + def config(self): + """Get the config of this Config. + + :return: The config of this Config. + :rtype: dict(str, object) + """ # noqa: E501 + return self._config + + @config.setter + def config(self, config): + """Set the config of this Config. + + :param config: The config of this Config. + :type: dict(str, object) + """ # noqa: E501 + self._config = config + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Config): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/constant_variable_properties.py b/frogpilot/third_party/influxdb_client/domain/constant_variable_properties.py new file mode 100644 index 000000000..806045e89 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/constant_variable_properties.py @@ -0,0 +1,134 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.variable_properties import VariableProperties + + +class ConstantVariableProperties(VariableProperties): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'values': 'list[str]' + } + + attribute_map = { + 'type': 'type', + 'values': 'values' + } + + def __init__(self, type=None, values=None): # noqa: E501,D401,D403 + """ConstantVariableProperties - a model defined in OpenAPI.""" # noqa: E501 + VariableProperties.__init__(self) # noqa: E501 + + self._type = None + self._values = None + self.discriminator = None + + if type is not None: + self.type = type + if values is not None: + self.values = values + + @property + def type(self): + """Get the type of this ConstantVariableProperties. + + :return: The type of this ConstantVariableProperties. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this ConstantVariableProperties. + + :param type: The type of this ConstantVariableProperties. + :type: str + """ # noqa: E501 + self._type = type + + @property + def values(self): + """Get the values of this ConstantVariableProperties. + + :return: The values of this ConstantVariableProperties. + :rtype: list[str] + """ # noqa: E501 + return self._values + + @values.setter + def values(self, values): + """Set the values of this ConstantVariableProperties. + + :param values: The values of this ConstantVariableProperties. + :type: list[str] + """ # noqa: E501 + self._values = values + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ConstantVariableProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/create_cell.py b/frogpilot/third_party/influxdb_client/domain/create_cell.py new file mode 100644 index 000000000..1251c2f10 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/create_cell.py @@ -0,0 +1,226 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class CreateCell(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'x': 'int', + 'y': 'int', + 'w': 'int', + 'h': 'int', + 'using_view': 'str' + } + + attribute_map = { + 'name': 'name', + 'x': 'x', + 'y': 'y', + 'w': 'w', + 'h': 'h', + 'using_view': 'usingView' + } + + def __init__(self, name=None, x=None, y=None, w=None, h=None, using_view=None): # noqa: E501,D401,D403 + """CreateCell - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._x = None + self._y = None + self._w = None + self._h = None + self._using_view = None + self.discriminator = None + + if name is not None: + self.name = name + if x is not None: + self.x = x + if y is not None: + self.y = y + if w is not None: + self.w = w + if h is not None: + self.h = h + if using_view is not None: + self.using_view = using_view + + @property + def name(self): + """Get the name of this CreateCell. + + :return: The name of this CreateCell. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this CreateCell. + + :param name: The name of this CreateCell. + :type: str + """ # noqa: E501 + self._name = name + + @property + def x(self): + """Get the x of this CreateCell. + + :return: The x of this CreateCell. + :rtype: int + """ # noqa: E501 + return self._x + + @x.setter + def x(self, x): + """Set the x of this CreateCell. + + :param x: The x of this CreateCell. + :type: int + """ # noqa: E501 + self._x = x + + @property + def y(self): + """Get the y of this CreateCell. + + :return: The y of this CreateCell. + :rtype: int + """ # noqa: E501 + return self._y + + @y.setter + def y(self, y): + """Set the y of this CreateCell. + + :param y: The y of this CreateCell. + :type: int + """ # noqa: E501 + self._y = y + + @property + def w(self): + """Get the w of this CreateCell. + + :return: The w of this CreateCell. + :rtype: int + """ # noqa: E501 + return self._w + + @w.setter + def w(self, w): + """Set the w of this CreateCell. + + :param w: The w of this CreateCell. + :type: int + """ # noqa: E501 + self._w = w + + @property + def h(self): + """Get the h of this CreateCell. + + :return: The h of this CreateCell. + :rtype: int + """ # noqa: E501 + return self._h + + @h.setter + def h(self, h): + """Set the h of this CreateCell. + + :param h: The h of this CreateCell. + :type: int + """ # noqa: E501 + self._h = h + + @property + def using_view(self): + """Get the using_view of this CreateCell. + + Makes a copy of the provided view. + + :return: The using_view of this CreateCell. + :rtype: str + """ # noqa: E501 + return self._using_view + + @using_view.setter + def using_view(self, using_view): + """Set the using_view of this CreateCell. + + Makes a copy of the provided view. + + :param using_view: The using_view of this CreateCell. + :type: str + """ # noqa: E501 + self._using_view = using_view + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, CreateCell): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/create_dashboard_request.py b/frogpilot/third_party/influxdb_client/domain/create_dashboard_request.py new file mode 100644 index 000000000..e5de81ee8 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/create_dashboard_request.py @@ -0,0 +1,167 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class CreateDashboardRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'org_id': 'str', + 'name': 'str', + 'description': 'str' + } + + attribute_map = { + 'org_id': 'orgID', + 'name': 'name', + 'description': 'description' + } + + def __init__(self, org_id=None, name=None, description=None): # noqa: E501,D401,D403 + """CreateDashboardRequest - a model defined in OpenAPI.""" # noqa: E501 + self._org_id = None + self._name = None + self._description = None + self.discriminator = None + + self.org_id = org_id + self.name = name + if description is not None: + self.description = description + + @property + def org_id(self): + """Get the org_id of this CreateDashboardRequest. + + The ID of the organization that owns the dashboard. + + :return: The org_id of this CreateDashboardRequest. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this CreateDashboardRequest. + + The ID of the organization that owns the dashboard. + + :param org_id: The org_id of this CreateDashboardRequest. + :type: str + """ # noqa: E501 + if org_id is None: + raise ValueError("Invalid value for `org_id`, must not be `None`") # noqa: E501 + self._org_id = org_id + + @property + def name(self): + """Get the name of this CreateDashboardRequest. + + The user-facing name of the dashboard. + + :return: The name of this CreateDashboardRequest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this CreateDashboardRequest. + + The user-facing name of the dashboard. + + :param name: The name of this CreateDashboardRequest. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this CreateDashboardRequest. + + The user-facing description of the dashboard. + + :return: The description of this CreateDashboardRequest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this CreateDashboardRequest. + + The user-facing description of the dashboard. + + :param description: The description of this CreateDashboardRequest. + :type: str + """ # noqa: E501 + self._description = description + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, CreateDashboardRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/custom_check.py b/frogpilot/third_party/influxdb_client/domain/custom_check.py new file mode 100644 index 000000000..88c0180de --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/custom_check.py @@ -0,0 +1,142 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.check_discriminator import CheckDiscriminator + + +class CustomCheck(CheckDiscriminator): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'id': 'str', + 'name': 'str', + 'org_id': 'str', + 'task_id': 'str', + 'owner_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'query': 'DashboardQuery', + 'status': 'TaskStatusType', + 'description': 'str', + 'latest_completed': 'datetime', + 'last_run_status': 'str', + 'last_run_error': 'str', + 'labels': 'list[Label]', + 'links': 'CheckBaseLinks' + } + + attribute_map = { + 'type': 'type', + 'id': 'id', + 'name': 'name', + 'org_id': 'orgID', + 'task_id': 'taskID', + 'owner_id': 'ownerID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'query': 'query', + 'status': 'status', + 'description': 'description', + 'latest_completed': 'latestCompleted', + 'last_run_status': 'lastRunStatus', + 'last_run_error': 'lastRunError', + 'labels': 'labels', + 'links': 'links' + } + + def __init__(self, type="custom", id=None, name=None, org_id=None, task_id=None, owner_id=None, created_at=None, updated_at=None, query=None, status=None, description=None, latest_completed=None, last_run_status=None, last_run_error=None, labels=None, links=None): # noqa: E501,D401,D403 + """CustomCheck - a model defined in OpenAPI.""" # noqa: E501 + CheckDiscriminator.__init__(self, id=id, name=name, org_id=org_id, task_id=task_id, owner_id=owner_id, created_at=created_at, updated_at=updated_at, query=query, status=status, description=description, latest_completed=latest_completed, last_run_status=last_run_status, last_run_error=last_run_error, labels=labels, links=links) # noqa: E501 + + self._type = None + self.discriminator = None + + self.type = type + + @property + def type(self): + """Get the type of this CustomCheck. + + :return: The type of this CustomCheck. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this CustomCheck. + + :param type: The type of this CustomCheck. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, CustomCheck): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/dashboard.py b/frogpilot/third_party/influxdb_client/domain/dashboard.py new file mode 100644 index 000000000..4b4e47e9d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/dashboard.py @@ -0,0 +1,209 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.create_dashboard_request import CreateDashboardRequest + + +class Dashboard(CreateDashboardRequest): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'links': 'object', + 'id': 'str', + 'meta': 'object', + 'cells': 'list[Cell]', + 'labels': 'list[Label]', + 'org_id': 'str', + 'name': 'str', + 'description': 'str' + } + + attribute_map = { + 'links': 'links', + 'id': 'id', + 'meta': 'meta', + 'cells': 'cells', + 'labels': 'labels', + 'org_id': 'orgID', + 'name': 'name', + 'description': 'description' + } + + def __init__(self, links=None, id=None, meta=None, cells=None, labels=None, org_id=None, name=None, description=None): # noqa: E501,D401,D403 + """Dashboard - a model defined in OpenAPI.""" # noqa: E501 + CreateDashboardRequest.__init__(self, org_id=org_id, name=name, description=description) # noqa: E501 + + self._links = None + self._id = None + self._meta = None + self._cells = None + self._labels = None + self.discriminator = None + + if links is not None: + self.links = links + if id is not None: + self.id = id + if meta is not None: + self.meta = meta + if cells is not None: + self.cells = cells + if labels is not None: + self.labels = labels + + @property + def links(self): + """Get the links of this Dashboard. + + :return: The links of this Dashboard. + :rtype: object + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Dashboard. + + :param links: The links of this Dashboard. + :type: object + """ # noqa: E501 + self._links = links + + @property + def id(self): + """Get the id of this Dashboard. + + :return: The id of this Dashboard. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this Dashboard. + + :param id: The id of this Dashboard. + :type: str + """ # noqa: E501 + self._id = id + + @property + def meta(self): + """Get the meta of this Dashboard. + + :return: The meta of this Dashboard. + :rtype: object + """ # noqa: E501 + return self._meta + + @meta.setter + def meta(self, meta): + """Set the meta of this Dashboard. + + :param meta: The meta of this Dashboard. + :type: object + """ # noqa: E501 + self._meta = meta + + @property + def cells(self): + """Get the cells of this Dashboard. + + :return: The cells of this Dashboard. + :rtype: list[Cell] + """ # noqa: E501 + return self._cells + + @cells.setter + def cells(self, cells): + """Set the cells of this Dashboard. + + :param cells: The cells of this Dashboard. + :type: list[Cell] + """ # noqa: E501 + self._cells = cells + + @property + def labels(self): + """Get the labels of this Dashboard. + + :return: The labels of this Dashboard. + :rtype: list[Label] + """ # noqa: E501 + return self._labels + + @labels.setter + def labels(self, labels): + """Set the labels of this Dashboard. + + :param labels: The labels of this Dashboard. + :type: list[Label] + """ # noqa: E501 + self._labels = labels + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Dashboard): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/dashboard_color.py b/frogpilot/third_party/influxdb_client/domain/dashboard_color.py new file mode 100644 index 000000000..b03a4e2fe --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/dashboard_color.py @@ -0,0 +1,228 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class DashboardColor(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'type': 'str', + 'hex': 'str', + 'name': 'str', + 'value': 'float' + } + + attribute_map = { + 'id': 'id', + 'type': 'type', + 'hex': 'hex', + 'name': 'name', + 'value': 'value' + } + + def __init__(self, id=None, type=None, hex=None, name=None, value=None): # noqa: E501,D401,D403 + """DashboardColor - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._type = None + self._hex = None + self._name = None + self._value = None + self.discriminator = None + + self.id = id + self.type = type + self.hex = hex + self.name = name + self.value = value + + @property + def id(self): + """Get the id of this DashboardColor. + + The unique ID of the view color. + + :return: The id of this DashboardColor. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this DashboardColor. + + The unique ID of the view color. + + :param id: The id of this DashboardColor. + :type: str + """ # noqa: E501 + if id is None: + raise ValueError("Invalid value for `id`, must not be `None`") # noqa: E501 + self._id = id + + @property + def type(self): + """Get the type of this DashboardColor. + + Type is how the color is used. + + :return: The type of this DashboardColor. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this DashboardColor. + + Type is how the color is used. + + :param type: The type of this DashboardColor. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def hex(self): + """Get the hex of this DashboardColor. + + The hex number of the color + + :return: The hex of this DashboardColor. + :rtype: str + """ # noqa: E501 + return self._hex + + @hex.setter + def hex(self, hex): + """Set the hex of this DashboardColor. + + The hex number of the color + + :param hex: The hex of this DashboardColor. + :type: str + """ # noqa: E501 + if hex is None: + raise ValueError("Invalid value for `hex`, must not be `None`") # noqa: E501 + if hex is not None and len(hex) > 7: + raise ValueError("Invalid value for `hex`, length must be less than or equal to `7`") # noqa: E501 + if hex is not None and len(hex) < 7: + raise ValueError("Invalid value for `hex`, length must be greater than or equal to `7`") # noqa: E501 + self._hex = hex + + @property + def name(self): + """Get the name of this DashboardColor. + + The user-facing name of the hex color. + + :return: The name of this DashboardColor. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this DashboardColor. + + The user-facing name of the hex color. + + :param name: The name of this DashboardColor. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def value(self): + """Get the value of this DashboardColor. + + The data value mapped to this color. + + :return: The value of this DashboardColor. + :rtype: float + """ # noqa: E501 + return self._value + + @value.setter + def value(self, value): + """Set the value of this DashboardColor. + + The data value mapped to this color. + + :param value: The value of this DashboardColor. + :type: float + """ # noqa: E501 + if value is None: + raise ValueError("Invalid value for `value`, must not be `None`") # noqa: E501 + self._value = value + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, DashboardColor): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/dashboard_query.py b/frogpilot/third_party/influxdb_client/domain/dashboard_query.py new file mode 100644 index 000000000..e23c61f7a --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/dashboard_query.py @@ -0,0 +1,180 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class DashboardQuery(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'text': 'str', + 'edit_mode': 'QueryEditMode', + 'name': 'str', + 'builder_config': 'BuilderConfig' + } + + attribute_map = { + 'text': 'text', + 'edit_mode': 'editMode', + 'name': 'name', + 'builder_config': 'builderConfig' + } + + def __init__(self, text=None, edit_mode=None, name=None, builder_config=None): # noqa: E501,D401,D403 + """DashboardQuery - a model defined in OpenAPI.""" # noqa: E501 + self._text = None + self._edit_mode = None + self._name = None + self._builder_config = None + self.discriminator = None + + if text is not None: + self.text = text + if edit_mode is not None: + self.edit_mode = edit_mode + if name is not None: + self.name = name + if builder_config is not None: + self.builder_config = builder_config + + @property + def text(self): + """Get the text of this DashboardQuery. + + The text of the Flux query. + + :return: The text of this DashboardQuery. + :rtype: str + """ # noqa: E501 + return self._text + + @text.setter + def text(self, text): + """Set the text of this DashboardQuery. + + The text of the Flux query. + + :param text: The text of this DashboardQuery. + :type: str + """ # noqa: E501 + self._text = text + + @property + def edit_mode(self): + """Get the edit_mode of this DashboardQuery. + + :return: The edit_mode of this DashboardQuery. + :rtype: QueryEditMode + """ # noqa: E501 + return self._edit_mode + + @edit_mode.setter + def edit_mode(self, edit_mode): + """Set the edit_mode of this DashboardQuery. + + :param edit_mode: The edit_mode of this DashboardQuery. + :type: QueryEditMode + """ # noqa: E501 + self._edit_mode = edit_mode + + @property + def name(self): + """Get the name of this DashboardQuery. + + :return: The name of this DashboardQuery. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this DashboardQuery. + + :param name: The name of this DashboardQuery. + :type: str + """ # noqa: E501 + self._name = name + + @property + def builder_config(self): + """Get the builder_config of this DashboardQuery. + + :return: The builder_config of this DashboardQuery. + :rtype: BuilderConfig + """ # noqa: E501 + return self._builder_config + + @builder_config.setter + def builder_config(self, builder_config): + """Set the builder_config of this DashboardQuery. + + :param builder_config: The builder_config of this DashboardQuery. + :type: BuilderConfig + """ # noqa: E501 + self._builder_config = builder_config + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, DashboardQuery): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/dashboard_with_view_properties.py b/frogpilot/third_party/influxdb_client/domain/dashboard_with_view_properties.py new file mode 100644 index 000000000..08a78d2cb --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/dashboard_with_view_properties.py @@ -0,0 +1,209 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.create_dashboard_request import CreateDashboardRequest + + +class DashboardWithViewProperties(CreateDashboardRequest): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'links': 'object', + 'id': 'str', + 'meta': 'object', + 'cells': 'list[CellWithViewProperties]', + 'labels': 'list[Label]', + 'org_id': 'str', + 'name': 'str', + 'description': 'str' + } + + attribute_map = { + 'links': 'links', + 'id': 'id', + 'meta': 'meta', + 'cells': 'cells', + 'labels': 'labels', + 'org_id': 'orgID', + 'name': 'name', + 'description': 'description' + } + + def __init__(self, links=None, id=None, meta=None, cells=None, labels=None, org_id=None, name=None, description=None): # noqa: E501,D401,D403 + """DashboardWithViewProperties - a model defined in OpenAPI.""" # noqa: E501 + CreateDashboardRequest.__init__(self, org_id=org_id, name=name, description=description) # noqa: E501 + + self._links = None + self._id = None + self._meta = None + self._cells = None + self._labels = None + self.discriminator = None + + if links is not None: + self.links = links + if id is not None: + self.id = id + if meta is not None: + self.meta = meta + if cells is not None: + self.cells = cells + if labels is not None: + self.labels = labels + + @property + def links(self): + """Get the links of this DashboardWithViewProperties. + + :return: The links of this DashboardWithViewProperties. + :rtype: object + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this DashboardWithViewProperties. + + :param links: The links of this DashboardWithViewProperties. + :type: object + """ # noqa: E501 + self._links = links + + @property + def id(self): + """Get the id of this DashboardWithViewProperties. + + :return: The id of this DashboardWithViewProperties. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this DashboardWithViewProperties. + + :param id: The id of this DashboardWithViewProperties. + :type: str + """ # noqa: E501 + self._id = id + + @property + def meta(self): + """Get the meta of this DashboardWithViewProperties. + + :return: The meta of this DashboardWithViewProperties. + :rtype: object + """ # noqa: E501 + return self._meta + + @meta.setter + def meta(self, meta): + """Set the meta of this DashboardWithViewProperties. + + :param meta: The meta of this DashboardWithViewProperties. + :type: object + """ # noqa: E501 + self._meta = meta + + @property + def cells(self): + """Get the cells of this DashboardWithViewProperties. + + :return: The cells of this DashboardWithViewProperties. + :rtype: list[CellWithViewProperties] + """ # noqa: E501 + return self._cells + + @cells.setter + def cells(self, cells): + """Set the cells of this DashboardWithViewProperties. + + :param cells: The cells of this DashboardWithViewProperties. + :type: list[CellWithViewProperties] + """ # noqa: E501 + self._cells = cells + + @property + def labels(self): + """Get the labels of this DashboardWithViewProperties. + + :return: The labels of this DashboardWithViewProperties. + :rtype: list[Label] + """ # noqa: E501 + return self._labels + + @labels.setter + def labels(self, labels): + """Set the labels of this DashboardWithViewProperties. + + :param labels: The labels of this DashboardWithViewProperties. + :type: list[Label] + """ # noqa: E501 + self._labels = labels + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, DashboardWithViewProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/dashboards.py b/frogpilot/third_party/influxdb_client/domain/dashboards.py new file mode 100644 index 000000000..e15de9284 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/dashboards.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Dashboards(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'links': 'Links', + 'dashboards': 'list[Dashboard]' + } + + attribute_map = { + 'links': 'links', + 'dashboards': 'dashboards' + } + + def __init__(self, links=None, dashboards=None): # noqa: E501,D401,D403 + """Dashboards - a model defined in OpenAPI.""" # noqa: E501 + self._links = None + self._dashboards = None + self.discriminator = None + + if links is not None: + self.links = links + if dashboards is not None: + self.dashboards = dashboards + + @property + def links(self): + """Get the links of this Dashboards. + + :return: The links of this Dashboards. + :rtype: Links + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Dashboards. + + :param links: The links of this Dashboards. + :type: Links + """ # noqa: E501 + self._links = links + + @property + def dashboards(self): + """Get the dashboards of this Dashboards. + + :return: The dashboards of this Dashboards. + :rtype: list[Dashboard] + """ # noqa: E501 + return self._dashboards + + @dashboards.setter + def dashboards(self, dashboards): + """Set the dashboards of this Dashboards. + + :param dashboards: The dashboards of this Dashboards. + :type: list[Dashboard] + """ # noqa: E501 + self._dashboards = dashboards + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Dashboards): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/date_time_literal.py b/frogpilot/third_party/influxdb_client/domain/date_time_literal.py new file mode 100644 index 000000000..ce2280f36 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/date_time_literal.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class DateTimeLiteral(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'value': 'datetime' + } + + attribute_map = { + 'type': 'type', + 'value': 'value' + } + + def __init__(self, type=None, value=None): # noqa: E501,D401,D403 + """DateTimeLiteral - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._value = None + self.discriminator = None + + if type is not None: + self.type = type + if value is not None: + self.value = value + + @property + def type(self): + """Get the type of this DateTimeLiteral. + + Type of AST node + + :return: The type of this DateTimeLiteral. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this DateTimeLiteral. + + Type of AST node + + :param type: The type of this DateTimeLiteral. + :type: str + """ # noqa: E501 + self._type = type + + @property + def value(self): + """Get the value of this DateTimeLiteral. + + :return: The value of this DateTimeLiteral. + :rtype: datetime + """ # noqa: E501 + return self._value + + @value.setter + def value(self, value): + """Set the value of this DateTimeLiteral. + + :param value: The value of this DateTimeLiteral. + :type: datetime + """ # noqa: E501 + self._value = value + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, DateTimeLiteral): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/dbr_ps.py b/frogpilot/third_party/influxdb_client/domain/dbr_ps.py new file mode 100644 index 000000000..27617a99f --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/dbr_ps.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class DBRPs(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'content': 'list[DBRP]' + } + + attribute_map = { + 'content': 'content' + } + + def __init__(self, content=None): # noqa: E501,D401,D403 + """DBRPs - a model defined in OpenAPI.""" # noqa: E501 + self._content = None + self.discriminator = None + + if content is not None: + self.content = content + + @property + def content(self): + """Get the content of this DBRPs. + + :return: The content of this DBRPs. + :rtype: list[DBRP] + """ # noqa: E501 + return self._content + + @content.setter + def content(self, content): + """Set the content of this DBRPs. + + :param content: The content of this DBRPs. + :type: list[DBRP] + """ # noqa: E501 + self._content = content + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, DBRPs): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/dbrp.py b/frogpilot/third_party/influxdb_client/domain/dbrp.py new file mode 100644 index 000000000..1bb74ecf9 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/dbrp.py @@ -0,0 +1,302 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class DBRP(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'org_id': 'str', + 'bucket_id': 'str', + 'database': 'str', + 'retention_policy': 'str', + 'default': 'bool', + 'virtual': 'bool', + 'links': 'Links' + } + + attribute_map = { + 'id': 'id', + 'org_id': 'orgID', + 'bucket_id': 'bucketID', + 'database': 'database', + 'retention_policy': 'retention_policy', + 'default': 'default', + 'virtual': 'virtual', + 'links': 'links' + } + + def __init__(self, id=None, org_id=None, bucket_id=None, database=None, retention_policy=None, default=None, virtual=None, links=None): # noqa: E501,D401,D403 + """DBRP - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._org_id = None + self._bucket_id = None + self._database = None + self._retention_policy = None + self._default = None + self._virtual = None + self._links = None + self.discriminator = None + + self.id = id + self.org_id = org_id + self.bucket_id = bucket_id + self.database = database + self.retention_policy = retention_policy + self.default = default + if virtual is not None: + self.virtual = virtual + if links is not None: + self.links = links + + @property + def id(self): + """Get the id of this DBRP. + + The resource ID that InfluxDB uses to uniquely identify the database retention policy (DBRP) mapping. + + :return: The id of this DBRP. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this DBRP. + + The resource ID that InfluxDB uses to uniquely identify the database retention policy (DBRP) mapping. + + :param id: The id of this DBRP. + :type: str + """ # noqa: E501 + if id is None: + raise ValueError("Invalid value for `id`, must not be `None`") # noqa: E501 + self._id = id + + @property + def org_id(self): + """Get the org_id of this DBRP. + + An organization ID. Identifies the [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) that owns the mapping. + + :return: The org_id of this DBRP. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this DBRP. + + An organization ID. Identifies the [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) that owns the mapping. + + :param org_id: The org_id of this DBRP. + :type: str + """ # noqa: E501 + if org_id is None: + raise ValueError("Invalid value for `org_id`, must not be `None`") # noqa: E501 + self._org_id = org_id + + @property + def bucket_id(self): + """Get the bucket_id of this DBRP. + + A bucket ID. Identifies the bucket used as the target for the translation. + + :return: The bucket_id of this DBRP. + :rtype: str + """ # noqa: E501 + return self._bucket_id + + @bucket_id.setter + def bucket_id(self, bucket_id): + """Set the bucket_id of this DBRP. + + A bucket ID. Identifies the bucket used as the target for the translation. + + :param bucket_id: The bucket_id of this DBRP. + :type: str + """ # noqa: E501 + if bucket_id is None: + raise ValueError("Invalid value for `bucket_id`, must not be `None`") # noqa: E501 + self._bucket_id = bucket_id + + @property + def database(self): + """Get the database of this DBRP. + + A database name. Identifies the InfluxDB v1 database. + + :return: The database of this DBRP. + :rtype: str + """ # noqa: E501 + return self._database + + @database.setter + def database(self, database): + """Set the database of this DBRP. + + A database name. Identifies the InfluxDB v1 database. + + :param database: The database of this DBRP. + :type: str + """ # noqa: E501 + if database is None: + raise ValueError("Invalid value for `database`, must not be `None`") # noqa: E501 + self._database = database + + @property + def retention_policy(self): + """Get the retention_policy of this DBRP. + + A [retention policy](https://docs.influxdata.com/influxdb/v1.8/concepts/glossary/#retention-policy-rp) name. Identifies the InfluxDB v1 retention policy mapping. + + :return: The retention_policy of this DBRP. + :rtype: str + """ # noqa: E501 + return self._retention_policy + + @retention_policy.setter + def retention_policy(self, retention_policy): + """Set the retention_policy of this DBRP. + + A [retention policy](https://docs.influxdata.com/influxdb/v1.8/concepts/glossary/#retention-policy-rp) name. Identifies the InfluxDB v1 retention policy mapping. + + :param retention_policy: The retention_policy of this DBRP. + :type: str + """ # noqa: E501 + if retention_policy is None: + raise ValueError("Invalid value for `retention_policy`, must not be `None`") # noqa: E501 + self._retention_policy = retention_policy + + @property + def default(self): + """Get the default of this DBRP. + + If set to `true`, this DBRP mapping is the default retention policy for the database (specified by the `database` property's value). + + :return: The default of this DBRP. + :rtype: bool + """ # noqa: E501 + return self._default + + @default.setter + def default(self, default): + """Set the default of this DBRP. + + If set to `true`, this DBRP mapping is the default retention policy for the database (specified by the `database` property's value). + + :param default: The default of this DBRP. + :type: bool + """ # noqa: E501 + if default is None: + raise ValueError("Invalid value for `default`, must not be `None`") # noqa: E501 + self._default = default + + @property + def virtual(self): + """Get the virtual of this DBRP. + + Indicates an autogenerated, virtual mapping based on the bucket name. Currently only available in OSS. + + :return: The virtual of this DBRP. + :rtype: bool + """ # noqa: E501 + return self._virtual + + @virtual.setter + def virtual(self, virtual): + """Set the virtual of this DBRP. + + Indicates an autogenerated, virtual mapping based on the bucket name. Currently only available in OSS. + + :param virtual: The virtual of this DBRP. + :type: bool + """ # noqa: E501 + self._virtual = virtual + + @property + def links(self): + """Get the links of this DBRP. + + :return: The links of this DBRP. + :rtype: Links + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this DBRP. + + :param links: The links of this DBRP. + :type: Links + """ # noqa: E501 + self._links = links + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, DBRP): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/dbrp_create.py b/frogpilot/third_party/influxdb_client/domain/dbrp_create.py new file mode 100644 index 000000000..e69183ff7 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/dbrp_create.py @@ -0,0 +1,249 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class DBRPCreate(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'org': 'str', + 'org_id': 'str', + 'bucket_id': 'str', + 'database': 'str', + 'retention_policy': 'str', + 'default': 'bool' + } + + attribute_map = { + 'org': 'org', + 'org_id': 'orgID', + 'bucket_id': 'bucketID', + 'database': 'database', + 'retention_policy': 'retention_policy', + 'default': 'default' + } + + def __init__(self, org=None, org_id=None, bucket_id=None, database=None, retention_policy=None, default=None): # noqa: E501,D401,D403 + """DBRPCreate - a model defined in OpenAPI.""" # noqa: E501 + self._org = None + self._org_id = None + self._bucket_id = None + self._database = None + self._retention_policy = None + self._default = None + self.discriminator = None + + if org is not None: + self.org = org + if org_id is not None: + self.org_id = org_id + self.bucket_id = bucket_id + self.database = database + self.retention_policy = retention_policy + if default is not None: + self.default = default + + @property + def org(self): + """Get the org of this DBRPCreate. + + An organization name. Identifies the [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) that owns the mapping. + + :return: The org of this DBRPCreate. + :rtype: str + """ # noqa: E501 + return self._org + + @org.setter + def org(self, org): + """Set the org of this DBRPCreate. + + An organization name. Identifies the [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) that owns the mapping. + + :param org: The org of this DBRPCreate. + :type: str + """ # noqa: E501 + self._org = org + + @property + def org_id(self): + """Get the org_id of this DBRPCreate. + + An organization ID. Identifies the [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) that owns the mapping. + + :return: The org_id of this DBRPCreate. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this DBRPCreate. + + An organization ID. Identifies the [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) that owns the mapping. + + :param org_id: The org_id of this DBRPCreate. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def bucket_id(self): + """Get the bucket_id of this DBRPCreate. + + A bucket ID. Identifies the bucket used as the target for the translation. + + :return: The bucket_id of this DBRPCreate. + :rtype: str + """ # noqa: E501 + return self._bucket_id + + @bucket_id.setter + def bucket_id(self, bucket_id): + """Set the bucket_id of this DBRPCreate. + + A bucket ID. Identifies the bucket used as the target for the translation. + + :param bucket_id: The bucket_id of this DBRPCreate. + :type: str + """ # noqa: E501 + if bucket_id is None: + raise ValueError("Invalid value for `bucket_id`, must not be `None`") # noqa: E501 + self._bucket_id = bucket_id + + @property + def database(self): + """Get the database of this DBRPCreate. + + A database name. Identifies the InfluxDB v1 database. + + :return: The database of this DBRPCreate. + :rtype: str + """ # noqa: E501 + return self._database + + @database.setter + def database(self, database): + """Set the database of this DBRPCreate. + + A database name. Identifies the InfluxDB v1 database. + + :param database: The database of this DBRPCreate. + :type: str + """ # noqa: E501 + if database is None: + raise ValueError("Invalid value for `database`, must not be `None`") # noqa: E501 + self._database = database + + @property + def retention_policy(self): + """Get the retention_policy of this DBRPCreate. + + A [retention policy](https://docs.influxdata.com/influxdb/v1.8/concepts/glossary/#retention-policy-rp) name. Identifies the InfluxDB v1 retention policy mapping. + + :return: The retention_policy of this DBRPCreate. + :rtype: str + """ # noqa: E501 + return self._retention_policy + + @retention_policy.setter + def retention_policy(self, retention_policy): + """Set the retention_policy of this DBRPCreate. + + A [retention policy](https://docs.influxdata.com/influxdb/v1.8/concepts/glossary/#retention-policy-rp) name. Identifies the InfluxDB v1 retention policy mapping. + + :param retention_policy: The retention_policy of this DBRPCreate. + :type: str + """ # noqa: E501 + if retention_policy is None: + raise ValueError("Invalid value for `retention_policy`, must not be `None`") # noqa: E501 + self._retention_policy = retention_policy + + @property + def default(self): + """Get the default of this DBRPCreate. + + Set to `true` to use this DBRP mapping as the default retention policy for the database (specified by the `database` property's value). + + :return: The default of this DBRPCreate. + :rtype: bool + """ # noqa: E501 + return self._default + + @default.setter + def default(self, default): + """Set the default of this DBRPCreate. + + Set to `true` to use this DBRP mapping as the default retention policy for the database (specified by the `database` property's value). + + :param default: The default of this DBRPCreate. + :type: bool + """ # noqa: E501 + self._default = default + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, DBRPCreate): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/dbrp_get.py b/frogpilot/third_party/influxdb_client/domain/dbrp_get.py new file mode 100644 index 000000000..375f0a55d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/dbrp_get.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class DBRPGet(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'content': 'DBRP' + } + + attribute_map = { + 'content': 'content' + } + + def __init__(self, content=None): # noqa: E501,D401,D403 + """DBRPGet - a model defined in OpenAPI.""" # noqa: E501 + self._content = None + self.discriminator = None + + if content is not None: + self.content = content + + @property + def content(self): + """Get the content of this DBRPGet. + + :return: The content of this DBRPGet. + :rtype: DBRP + """ # noqa: E501 + return self._content + + @content.setter + def content(self, content): + """Set the content of this DBRPGet. + + :param content: The content of this DBRPGet. + :type: DBRP + """ # noqa: E501 + self._content = content + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, DBRPGet): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/dbrp_update.py b/frogpilot/third_party/influxdb_client/domain/dbrp_update.py new file mode 100644 index 000000000..4b0c5baea --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/dbrp_update.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class DBRPUpdate(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'retention_policy': 'str', + 'default': 'bool' + } + + attribute_map = { + 'retention_policy': 'retention_policy', + 'default': 'default' + } + + def __init__(self, retention_policy=None, default=None): # noqa: E501,D401,D403 + """DBRPUpdate - a model defined in OpenAPI.""" # noqa: E501 + self._retention_policy = None + self._default = None + self.discriminator = None + + if retention_policy is not None: + self.retention_policy = retention_policy + if default is not None: + self.default = default + + @property + def retention_policy(self): + """Get the retention_policy of this DBRPUpdate. + + A [retention policy](https://docs.influxdata.com/influxdb/v1.8/concepts/glossary/#retention-policy-rp) name. Identifies the InfluxDB v1 retention policy mapping. + + :return: The retention_policy of this DBRPUpdate. + :rtype: str + """ # noqa: E501 + return self._retention_policy + + @retention_policy.setter + def retention_policy(self, retention_policy): + """Set the retention_policy of this DBRPUpdate. + + A [retention policy](https://docs.influxdata.com/influxdb/v1.8/concepts/glossary/#retention-policy-rp) name. Identifies the InfluxDB v1 retention policy mapping. + + :param retention_policy: The retention_policy of this DBRPUpdate. + :type: str + """ # noqa: E501 + self._retention_policy = retention_policy + + @property + def default(self): + """Get the default of this DBRPUpdate. + + Set to `true` to use this DBRP mapping as the default retention policy for the database (specified by the `database` property's value). To remove the default mapping, set to `false`. + + :return: The default of this DBRPUpdate. + :rtype: bool + """ # noqa: E501 + return self._default + + @default.setter + def default(self, default): + """Set the default of this DBRPUpdate. + + Set to `true` to use this DBRP mapping as the default retention policy for the database (specified by the `database` property's value). To remove the default mapping, set to `false`. + + :param default: The default of this DBRPUpdate. + :type: bool + """ # noqa: E501 + self._default = default + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, DBRPUpdate): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/deadman_check.py b/frogpilot/third_party/influxdb_client/domain/deadman_check.py new file mode 100644 index 000000000..81e368fab --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/deadman_check.py @@ -0,0 +1,354 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.check_discriminator import CheckDiscriminator + + +class DeadmanCheck(CheckDiscriminator): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'time_since': 'str', + 'stale_time': 'str', + 'report_zero': 'bool', + 'level': 'CheckStatusLevel', + 'every': 'str', + 'offset': 'str', + 'tags': 'list[object]', + 'status_message_template': 'str', + 'id': 'str', + 'name': 'str', + 'org_id': 'str', + 'task_id': 'str', + 'owner_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'query': 'DashboardQuery', + 'status': 'TaskStatusType', + 'description': 'str', + 'latest_completed': 'datetime', + 'last_run_status': 'str', + 'last_run_error': 'str', + 'labels': 'list[Label]', + 'links': 'CheckBaseLinks' + } + + attribute_map = { + 'type': 'type', + 'time_since': 'timeSince', + 'stale_time': 'staleTime', + 'report_zero': 'reportZero', + 'level': 'level', + 'every': 'every', + 'offset': 'offset', + 'tags': 'tags', + 'status_message_template': 'statusMessageTemplate', + 'id': 'id', + 'name': 'name', + 'org_id': 'orgID', + 'task_id': 'taskID', + 'owner_id': 'ownerID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'query': 'query', + 'status': 'status', + 'description': 'description', + 'latest_completed': 'latestCompleted', + 'last_run_status': 'lastRunStatus', + 'last_run_error': 'lastRunError', + 'labels': 'labels', + 'links': 'links' + } + + def __init__(self, type="deadman", time_since=None, stale_time=None, report_zero=None, level=None, every=None, offset=None, tags=None, status_message_template=None, id=None, name=None, org_id=None, task_id=None, owner_id=None, created_at=None, updated_at=None, query=None, status=None, description=None, latest_completed=None, last_run_status=None, last_run_error=None, labels=None, links=None): # noqa: E501,D401,D403 + """DeadmanCheck - a model defined in OpenAPI.""" # noqa: E501 + CheckDiscriminator.__init__(self, id=id, name=name, org_id=org_id, task_id=task_id, owner_id=owner_id, created_at=created_at, updated_at=updated_at, query=query, status=status, description=description, latest_completed=latest_completed, last_run_status=last_run_status, last_run_error=last_run_error, labels=labels, links=links) # noqa: E501 + + self._type = None + self._time_since = None + self._stale_time = None + self._report_zero = None + self._level = None + self._every = None + self._offset = None + self._tags = None + self._status_message_template = None + self.discriminator = None + + self.type = type + if time_since is not None: + self.time_since = time_since + if stale_time is not None: + self.stale_time = stale_time + if report_zero is not None: + self.report_zero = report_zero + if level is not None: + self.level = level + if every is not None: + self.every = every + if offset is not None: + self.offset = offset + if tags is not None: + self.tags = tags + if status_message_template is not None: + self.status_message_template = status_message_template + + @property + def type(self): + """Get the type of this DeadmanCheck. + + :return: The type of this DeadmanCheck. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this DeadmanCheck. + + :param type: The type of this DeadmanCheck. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def time_since(self): + """Get the time_since of this DeadmanCheck. + + String duration before deadman triggers. + + :return: The time_since of this DeadmanCheck. + :rtype: str + """ # noqa: E501 + return self._time_since + + @time_since.setter + def time_since(self, time_since): + """Set the time_since of this DeadmanCheck. + + String duration before deadman triggers. + + :param time_since: The time_since of this DeadmanCheck. + :type: str + """ # noqa: E501 + self._time_since = time_since + + @property + def stale_time(self): + """Get the stale_time of this DeadmanCheck. + + String duration for time that a series is considered stale and should not trigger deadman. + + :return: The stale_time of this DeadmanCheck. + :rtype: str + """ # noqa: E501 + return self._stale_time + + @stale_time.setter + def stale_time(self, stale_time): + """Set the stale_time of this DeadmanCheck. + + String duration for time that a series is considered stale and should not trigger deadman. + + :param stale_time: The stale_time of this DeadmanCheck. + :type: str + """ # noqa: E501 + self._stale_time = stale_time + + @property + def report_zero(self): + """Get the report_zero of this DeadmanCheck. + + If only zero values reported since time, trigger an alert + + :return: The report_zero of this DeadmanCheck. + :rtype: bool + """ # noqa: E501 + return self._report_zero + + @report_zero.setter + def report_zero(self, report_zero): + """Set the report_zero of this DeadmanCheck. + + If only zero values reported since time, trigger an alert + + :param report_zero: The report_zero of this DeadmanCheck. + :type: bool + """ # noqa: E501 + self._report_zero = report_zero + + @property + def level(self): + """Get the level of this DeadmanCheck. + + :return: The level of this DeadmanCheck. + :rtype: CheckStatusLevel + """ # noqa: E501 + return self._level + + @level.setter + def level(self, level): + """Set the level of this DeadmanCheck. + + :param level: The level of this DeadmanCheck. + :type: CheckStatusLevel + """ # noqa: E501 + self._level = level + + @property + def every(self): + """Get the every of this DeadmanCheck. + + Check repetition interval. + + :return: The every of this DeadmanCheck. + :rtype: str + """ # noqa: E501 + return self._every + + @every.setter + def every(self, every): + """Set the every of this DeadmanCheck. + + Check repetition interval. + + :param every: The every of this DeadmanCheck. + :type: str + """ # noqa: E501 + self._every = every + + @property + def offset(self): + """Get the offset of this DeadmanCheck. + + Duration to delay after the schedule, before executing check. + + :return: The offset of this DeadmanCheck. + :rtype: str + """ # noqa: E501 + return self._offset + + @offset.setter + def offset(self, offset): + """Set the offset of this DeadmanCheck. + + Duration to delay after the schedule, before executing check. + + :param offset: The offset of this DeadmanCheck. + :type: str + """ # noqa: E501 + self._offset = offset + + @property + def tags(self): + """Get the tags of this DeadmanCheck. + + List of tags to write to each status. + + :return: The tags of this DeadmanCheck. + :rtype: list[object] + """ # noqa: E501 + return self._tags + + @tags.setter + def tags(self, tags): + """Set the tags of this DeadmanCheck. + + List of tags to write to each status. + + :param tags: The tags of this DeadmanCheck. + :type: list[object] + """ # noqa: E501 + self._tags = tags + + @property + def status_message_template(self): + """Get the status_message_template of this DeadmanCheck. + + The template used to generate and write a status message. + + :return: The status_message_template of this DeadmanCheck. + :rtype: str + """ # noqa: E501 + return self._status_message_template + + @status_message_template.setter + def status_message_template(self, status_message_template): + """Set the status_message_template of this DeadmanCheck. + + The template used to generate and write a status message. + + :param status_message_template: The status_message_template of this DeadmanCheck. + :type: str + """ # noqa: E501 + self._status_message_template = status_message_template + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, DeadmanCheck): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/decimal_places.py b/frogpilot/third_party/influxdb_client/domain/decimal_places.py new file mode 100644 index 000000000..7a855a6d6 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/decimal_places.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class DecimalPlaces(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'is_enforced': 'bool', + 'digits': 'int' + } + + attribute_map = { + 'is_enforced': 'isEnforced', + 'digits': 'digits' + } + + def __init__(self, is_enforced=None, digits=None): # noqa: E501,D401,D403 + """DecimalPlaces - a model defined in OpenAPI.""" # noqa: E501 + self._is_enforced = None + self._digits = None + self.discriminator = None + + if is_enforced is not None: + self.is_enforced = is_enforced + if digits is not None: + self.digits = digits + + @property + def is_enforced(self): + """Get the is_enforced of this DecimalPlaces. + + Indicates whether decimal point setting should be enforced + + :return: The is_enforced of this DecimalPlaces. + :rtype: bool + """ # noqa: E501 + return self._is_enforced + + @is_enforced.setter + def is_enforced(self, is_enforced): + """Set the is_enforced of this DecimalPlaces. + + Indicates whether decimal point setting should be enforced + + :param is_enforced: The is_enforced of this DecimalPlaces. + :type: bool + """ # noqa: E501 + self._is_enforced = is_enforced + + @property + def digits(self): + """Get the digits of this DecimalPlaces. + + The number of digits after decimal to display + + :return: The digits of this DecimalPlaces. + :rtype: int + """ # noqa: E501 + return self._digits + + @digits.setter + def digits(self, digits): + """Set the digits of this DecimalPlaces. + + The number of digits after decimal to display + + :param digits: The digits of this DecimalPlaces. + :type: int + """ # noqa: E501 + self._digits = digits + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, DecimalPlaces): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/delete_predicate_request.py b/frogpilot/third_party/influxdb_client/domain/delete_predicate_request.py new file mode 100644 index 000000000..13202910d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/delete_predicate_request.py @@ -0,0 +1,167 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class DeletePredicateRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'start': 'datetime', + 'stop': 'datetime', + 'predicate': 'str' + } + + attribute_map = { + 'start': 'start', + 'stop': 'stop', + 'predicate': 'predicate' + } + + def __init__(self, start=None, stop=None, predicate=None): # noqa: E501,D401,D403 + """DeletePredicateRequest - a model defined in OpenAPI.""" # noqa: E501 + self._start = None + self._stop = None + self._predicate = None + self.discriminator = None + + self.start = start + self.stop = stop + if predicate is not None: + self.predicate = predicate + + @property + def start(self): + """Get the start of this DeletePredicateRequest. + + A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp)). The earliest time to delete from. + + :return: The start of this DeletePredicateRequest. + :rtype: datetime + """ # noqa: E501 + return self._start + + @start.setter + def start(self, start): + """Set the start of this DeletePredicateRequest. + + A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp)). The earliest time to delete from. + + :param start: The start of this DeletePredicateRequest. + :type: datetime + """ # noqa: E501 + if start is None: + raise ValueError("Invalid value for `start`, must not be `None`") # noqa: E501 + self._start = start + + @property + def stop(self): + """Get the stop of this DeletePredicateRequest. + + A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp)). The latest time to delete from. + + :return: The stop of this DeletePredicateRequest. + :rtype: datetime + """ # noqa: E501 + return self._stop + + @stop.setter + def stop(self, stop): + """Set the stop of this DeletePredicateRequest. + + A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp)). The latest time to delete from. + + :param stop: The stop of this DeletePredicateRequest. + :type: datetime + """ # noqa: E501 + if stop is None: + raise ValueError("Invalid value for `stop`, must not be `None`") # noqa: E501 + self._stop = stop + + @property + def predicate(self): + """Get the predicate of this DeletePredicateRequest. + + An expression in [delete predicate syntax](https://docs.influxdata.com/influxdb/latest/reference/syntax/delete-predicate/). + + :return: The predicate of this DeletePredicateRequest. + :rtype: str + """ # noqa: E501 + return self._predicate + + @predicate.setter + def predicate(self, predicate): + """Set the predicate of this DeletePredicateRequest. + + An expression in [delete predicate syntax](https://docs.influxdata.com/influxdb/latest/reference/syntax/delete-predicate/). + + :param predicate: The predicate of this DeletePredicateRequest. + :type: str + """ # noqa: E501 + self._predicate = predicate + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, DeletePredicateRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/dialect.py b/frogpilot/third_party/influxdb_client/domain/dialect.py new file mode 100644 index 000000000..18bc75329 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/dialect.py @@ -0,0 +1,234 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Dialect(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'header': 'bool', + 'delimiter': 'str', + 'annotations': 'list[str]', + 'comment_prefix': 'str', + 'date_time_format': 'str' + } + + attribute_map = { + 'header': 'header', + 'delimiter': 'delimiter', + 'annotations': 'annotations', + 'comment_prefix': 'commentPrefix', + 'date_time_format': 'dateTimeFormat' + } + + def __init__(self, header=True, delimiter=',', annotations=None, comment_prefix='#', date_time_format='RFC3339'): # noqa: E501,D401,D403 + """Dialect - a model defined in OpenAPI.""" # noqa: E501 + self._header = None + self._delimiter = None + self._annotations = None + self._comment_prefix = None + self._date_time_format = None + self.discriminator = None + + if header is not None: + self.header = header + if delimiter is not None: + self.delimiter = delimiter + if annotations is not None: + self.annotations = annotations + if comment_prefix is not None: + self.comment_prefix = comment_prefix + if date_time_format is not None: + self.date_time_format = date_time_format + + @property + def header(self): + """Get the header of this Dialect. + + If true, the results contain a header row. + + :return: The header of this Dialect. + :rtype: bool + """ # noqa: E501 + return self._header + + @header.setter + def header(self, header): + """Set the header of this Dialect. + + If true, the results contain a header row. + + :param header: The header of this Dialect. + :type: bool + """ # noqa: E501 + self._header = header + + @property + def delimiter(self): + """Get the delimiter of this Dialect. + + The separator used between cells. Default is a comma (`,`). + + :return: The delimiter of this Dialect. + :rtype: str + """ # noqa: E501 + return self._delimiter + + @delimiter.setter + def delimiter(self, delimiter): + """Set the delimiter of this Dialect. + + The separator used between cells. Default is a comma (`,`). + + :param delimiter: The delimiter of this Dialect. + :type: str + """ # noqa: E501 + if delimiter is not None and len(delimiter) > 1: + raise ValueError("Invalid value for `delimiter`, length must be less than or equal to `1`") # noqa: E501 + if delimiter is not None and len(delimiter) < 1: + raise ValueError("Invalid value for `delimiter`, length must be greater than or equal to `1`") # noqa: E501 + self._delimiter = delimiter + + @property + def annotations(self): + """Get the annotations of this Dialect. + + Annotation rows to include in the results. An _annotation_ is metadata associated with an object (column) in the data model. #### Related guides - See [Annotated CSV annotations](https://docs.influxdata.com/influxdb/latest/reference/syntax/annotated-csv/#annotations) for examples and more information. For more information about **annotations** in tabular data, see [W3 metadata vocabulary for tabular data](https://www.w3.org/TR/2015/REC-tabular-data-model-20151217/#columns). + + :return: The annotations of this Dialect. + :rtype: list[str] + """ # noqa: E501 + return self._annotations + + @annotations.setter + def annotations(self, annotations): + """Set the annotations of this Dialect. + + Annotation rows to include in the results. An _annotation_ is metadata associated with an object (column) in the data model. #### Related guides - See [Annotated CSV annotations](https://docs.influxdata.com/influxdb/latest/reference/syntax/annotated-csv/#annotations) for examples and more information. For more information about **annotations** in tabular data, see [W3 metadata vocabulary for tabular data](https://www.w3.org/TR/2015/REC-tabular-data-model-20151217/#columns). + + :param annotations: The annotations of this Dialect. + :type: list[str] + """ # noqa: E501 + allowed_values = ["group", "datatype", "default"] # noqa: E501 + if not set(annotations).issubset(set(allowed_values)): + raise ValueError( + "Invalid values for `annotations` [{0}], must be a subset of [{1}]" # noqa: E501 + .format(", ".join(map(str, set(annotations) - set(allowed_values))), # noqa: E501 + ", ".join(map(str, allowed_values))) + ) + self._annotations = annotations + + @property + def comment_prefix(self): + """Get the comment_prefix of this Dialect. + + The character prefixed to comment strings. Default is a number sign (`#`). + + :return: The comment_prefix of this Dialect. + :rtype: str + """ # noqa: E501 + return self._comment_prefix + + @comment_prefix.setter + def comment_prefix(self, comment_prefix): + """Set the comment_prefix of this Dialect. + + The character prefixed to comment strings. Default is a number sign (`#`). + + :param comment_prefix: The comment_prefix of this Dialect. + :type: str + """ # noqa: E501 + if comment_prefix is not None and len(comment_prefix) > 1: + raise ValueError("Invalid value for `comment_prefix`, length must be less than or equal to `1`") # noqa: E501 + if comment_prefix is not None and len(comment_prefix) < 0: + raise ValueError("Invalid value for `comment_prefix`, length must be greater than or equal to `0`") # noqa: E501 + self._comment_prefix = comment_prefix + + @property + def date_time_format(self): + """Get the date_time_format of this Dialect. + + The format for timestamps in results. Default is [`RFC3339` date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp). To include nanoseconds in timestamps, use `RFC3339Nano`. #### Example formatted date/time values | Format | Value | |:------------|:----------------------------| | `RFC3339` | `"2006-01-02T15:04:05Z07:00"` | | `RFC3339Nano` | `"2006-01-02T15:04:05.999999999Z07:00"` | + + :return: The date_time_format of this Dialect. + :rtype: str + """ # noqa: E501 + return self._date_time_format + + @date_time_format.setter + def date_time_format(self, date_time_format): + """Set the date_time_format of this Dialect. + + The format for timestamps in results. Default is [`RFC3339` date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp). To include nanoseconds in timestamps, use `RFC3339Nano`. #### Example formatted date/time values | Format | Value | |:------------|:----------------------------| | `RFC3339` | `"2006-01-02T15:04:05Z07:00"` | | `RFC3339Nano` | `"2006-01-02T15:04:05.999999999Z07:00"` | + + :param date_time_format: The date_time_format of this Dialect. + :type: str + """ # noqa: E501 + self._date_time_format = date_time_format + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Dialect): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/dict_expression.py b/frogpilot/third_party/influxdb_client/domain/dict_expression.py new file mode 100644 index 000000000..f6c0242c3 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/dict_expression.py @@ -0,0 +1,142 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class DictExpression(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'elements': 'list[DictItem]' + } + + attribute_map = { + 'type': 'type', + 'elements': 'elements' + } + + def __init__(self, type=None, elements=None): # noqa: E501,D401,D403 + """DictExpression - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._elements = None + self.discriminator = None + + if type is not None: + self.type = type + if elements is not None: + self.elements = elements + + @property + def type(self): + """Get the type of this DictExpression. + + Type of AST node + + :return: The type of this DictExpression. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this DictExpression. + + Type of AST node + + :param type: The type of this DictExpression. + :type: str + """ # noqa: E501 + self._type = type + + @property + def elements(self): + """Get the elements of this DictExpression. + + Elements of the dictionary + + :return: The elements of this DictExpression. + :rtype: list[DictItem] + """ # noqa: E501 + return self._elements + + @elements.setter + def elements(self, elements): + """Set the elements of this DictExpression. + + Elements of the dictionary + + :param elements: The elements of this DictExpression. + :type: list[DictItem] + """ # noqa: E501 + self._elements = elements + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, DictExpression): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/dict_item.py b/frogpilot/third_party/influxdb_client/domain/dict_item.py new file mode 100644 index 000000000..77beac923 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/dict_item.py @@ -0,0 +1,157 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class DictItem(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'key': 'Expression', + 'val': 'Expression' + } + + attribute_map = { + 'type': 'type', + 'key': 'key', + 'val': 'val' + } + + def __init__(self, type=None, key=None, val=None): # noqa: E501,D401,D403 + """DictItem - a model defined in OpenAPI.""" # noqa: E501 + self._type = None + self._key = None + self._val = None + self.discriminator = None + + if type is not None: + self.type = type + if key is not None: + self.key = key + if val is not None: + self.val = val + + @property + def type(self): + """Get the type of this DictItem. + + Type of AST node + + :return: The type of this DictItem. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this DictItem. + + Type of AST node + + :param type: The type of this DictItem. + :type: str + """ # noqa: E501 + self._type = type + + @property + def key(self): + """Get the key of this DictItem. + + :return: The key of this DictItem. + :rtype: Expression + """ # noqa: E501 + return self._key + + @key.setter + def key(self, key): + """Set the key of this DictItem. + + :param key: The key of this DictItem. + :type: Expression + """ # noqa: E501 + self._key = key + + @property + def val(self): + """Get the val of this DictItem. + + :return: The val of this DictItem. + :rtype: Expression + """ # noqa: E501 + return self._val + + @val.setter + def val(self, val): + """Set the val of this DictItem. + + :param val: The val of this DictItem. + :type: Expression + """ # noqa: E501 + self._val = val + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, DictItem): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/duration.py b/frogpilot/third_party/influxdb_client/domain/duration.py new file mode 100644 index 000000000..510444443 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/duration.py @@ -0,0 +1,157 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Duration(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'magnitude': 'int', + 'unit': 'str' + } + + attribute_map = { + 'type': 'type', + 'magnitude': 'magnitude', + 'unit': 'unit' + } + + def __init__(self, type=None, magnitude=None, unit=None): # noqa: E501,D401,D403 + """Duration - a model defined in OpenAPI.""" # noqa: E501 + self._type = None + self._magnitude = None + self._unit = None + self.discriminator = None + + if type is not None: + self.type = type + if magnitude is not None: + self.magnitude = magnitude + if unit is not None: + self.unit = unit + + @property + def type(self): + """Get the type of this Duration. + + Type of AST node + + :return: The type of this Duration. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this Duration. + + Type of AST node + + :param type: The type of this Duration. + :type: str + """ # noqa: E501 + self._type = type + + @property + def magnitude(self): + """Get the magnitude of this Duration. + + :return: The magnitude of this Duration. + :rtype: int + """ # noqa: E501 + return self._magnitude + + @magnitude.setter + def magnitude(self, magnitude): + """Set the magnitude of this Duration. + + :param magnitude: The magnitude of this Duration. + :type: int + """ # noqa: E501 + self._magnitude = magnitude + + @property + def unit(self): + """Get the unit of this Duration. + + :return: The unit of this Duration. + :rtype: str + """ # noqa: E501 + return self._unit + + @unit.setter + def unit(self, unit): + """Set the unit of this Duration. + + :param unit: The unit of this Duration. + :type: str + """ # noqa: E501 + self._unit = unit + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Duration): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/duration_literal.py b/frogpilot/third_party/influxdb_client/domain/duration_literal.py new file mode 100644 index 000000000..f6d639655 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/duration_literal.py @@ -0,0 +1,142 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class DurationLiteral(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'values': 'list[Duration]' + } + + attribute_map = { + 'type': 'type', + 'values': 'values' + } + + def __init__(self, type=None, values=None): # noqa: E501,D401,D403 + """DurationLiteral - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._values = None + self.discriminator = None + + if type is not None: + self.type = type + if values is not None: + self.values = values + + @property + def type(self): + """Get the type of this DurationLiteral. + + Type of AST node + + :return: The type of this DurationLiteral. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this DurationLiteral. + + Type of AST node + + :param type: The type of this DurationLiteral. + :type: str + """ # noqa: E501 + self._type = type + + @property + def values(self): + """Get the values of this DurationLiteral. + + Duration values + + :return: The values of this DurationLiteral. + :rtype: list[Duration] + """ # noqa: E501 + return self._values + + @values.setter + def values(self, values): + """Set the values of this DurationLiteral. + + Duration values + + :param values: The values of this DurationLiteral. + :type: list[Duration] + """ # noqa: E501 + self._values = values + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, DurationLiteral): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/error.py b/frogpilot/third_party/influxdb_client/domain/error.py new file mode 100644 index 000000000..2a3655bb0 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/error.py @@ -0,0 +1,193 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Error(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'code': 'str', + 'message': 'str', + 'op': 'str', + 'err': 'str' + } + + attribute_map = { + 'code': 'code', + 'message': 'message', + 'op': 'op', + 'err': 'err' + } + + def __init__(self, code=None, message=None, op=None, err=None): # noqa: E501,D401,D403 + """Error - a model defined in OpenAPI.""" # noqa: E501 + self._code = None + self._message = None + self._op = None + self._err = None + self.discriminator = None + + self.code = code + if message is not None: + self.message = message + if op is not None: + self.op = op + if err is not None: + self.err = err + + @property + def code(self): + """Get the code of this Error. + + code is the machine-readable error code. + + :return: The code of this Error. + :rtype: str + """ # noqa: E501 + return self._code + + @code.setter + def code(self, code): + """Set the code of this Error. + + code is the machine-readable error code. + + :param code: The code of this Error. + :type: str + """ # noqa: E501 + if code is None: + raise ValueError("Invalid value for `code`, must not be `None`") # noqa: E501 + self._code = code + + @property + def message(self): + """Get the message of this Error. + + Human-readable message. + + :return: The message of this Error. + :rtype: str + """ # noqa: E501 + return self._message + + @message.setter + def message(self, message): + """Set the message of this Error. + + Human-readable message. + + :param message: The message of this Error. + :type: str + """ # noqa: E501 + self._message = message + + @property + def op(self): + """Get the op of this Error. + + Describes the logical code operation when the error occurred. Useful for debugging. + + :return: The op of this Error. + :rtype: str + """ # noqa: E501 + return self._op + + @op.setter + def op(self, op): + """Set the op of this Error. + + Describes the logical code operation when the error occurred. Useful for debugging. + + :param op: The op of this Error. + :type: str + """ # noqa: E501 + self._op = op + + @property + def err(self): + """Get the err of this Error. + + Stack of errors that occurred during processing of the request. Useful for debugging. + + :return: The err of this Error. + :rtype: str + """ # noqa: E501 + return self._err + + @err.setter + def err(self, err): + """Set the err of this Error. + + Stack of errors that occurred during processing of the request. Useful for debugging. + + :param err: The err of this Error. + :type: str + """ # noqa: E501 + self._err = err + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Error): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/expression.py b/frogpilot/third_party/influxdb_client/domain/expression.py new file mode 100644 index 000000000..9d449fd45 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/expression.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.node import Node + + +class Expression(Node): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """Expression - a model defined in OpenAPI.""" # noqa: E501 + Node.__init__(self) # noqa: E501 + self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Expression): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/expression_statement.py b/frogpilot/third_party/influxdb_client/domain/expression_statement.py new file mode 100644 index 000000000..04dd216d9 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/expression_statement.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.statement import Statement + + +class ExpressionStatement(Statement): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'expression': 'Expression' + } + + attribute_map = { + 'type': 'type', + 'expression': 'expression' + } + + def __init__(self, type=None, expression=None): # noqa: E501,D401,D403 + """ExpressionStatement - a model defined in OpenAPI.""" # noqa: E501 + Statement.__init__(self) # noqa: E501 + + self._type = None + self._expression = None + self.discriminator = None + + if type is not None: + self.type = type + if expression is not None: + self.expression = expression + + @property + def type(self): + """Get the type of this ExpressionStatement. + + Type of AST node + + :return: The type of this ExpressionStatement. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this ExpressionStatement. + + Type of AST node + + :param type: The type of this ExpressionStatement. + :type: str + """ # noqa: E501 + self._type = type + + @property + def expression(self): + """Get the expression of this ExpressionStatement. + + :return: The expression of this ExpressionStatement. + :rtype: Expression + """ # noqa: E501 + return self._expression + + @expression.setter + def expression(self, expression): + """Set the expression of this ExpressionStatement. + + :param expression: The expression of this ExpressionStatement. + :type: Expression + """ # noqa: E501 + self._expression = expression + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ExpressionStatement): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/field.py b/frogpilot/third_party/influxdb_client/domain/field.py new file mode 100644 index 000000000..62bc3d13e --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/field.py @@ -0,0 +1,192 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Field(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'value': 'str', + 'type': 'str', + 'alias': 'str', + 'args': 'list[Field]' + } + + attribute_map = { + 'value': 'value', + 'type': 'type', + 'alias': 'alias', + 'args': 'args' + } + + def __init__(self, value=None, type=None, alias=None, args=None): # noqa: E501,D401,D403 + """Field - a model defined in OpenAPI.""" # noqa: E501 + self._value = None + self._type = None + self._alias = None + self._args = None + self.discriminator = None + + if value is not None: + self.value = value + if type is not None: + self.type = type + if alias is not None: + self.alias = alias + if args is not None: + self.args = args + + @property + def value(self): + """Get the value of this Field. + + value is the value of the field. Meaning of the value is implied by the `type` key + + :return: The value of this Field. + :rtype: str + """ # noqa: E501 + return self._value + + @value.setter + def value(self, value): + """Set the value of this Field. + + value is the value of the field. Meaning of the value is implied by the `type` key + + :param value: The value of this Field. + :type: str + """ # noqa: E501 + self._value = value + + @property + def type(self): + """Get the type of this Field. + + `type` describes the field type. `func` is a function. `field` is a field reference. + + :return: The type of this Field. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this Field. + + `type` describes the field type. `func` is a function. `field` is a field reference. + + :param type: The type of this Field. + :type: str + """ # noqa: E501 + self._type = type + + @property + def alias(self): + """Get the alias of this Field. + + Alias overrides the field name in the returned response. Applies only if type is `func` + + :return: The alias of this Field. + :rtype: str + """ # noqa: E501 + return self._alias + + @alias.setter + def alias(self, alias): + """Set the alias of this Field. + + Alias overrides the field name in the returned response. Applies only if type is `func` + + :param alias: The alias of this Field. + :type: str + """ # noqa: E501 + self._alias = alias + + @property + def args(self): + """Get the args of this Field. + + Args are the arguments to the function + + :return: The args of this Field. + :rtype: list[Field] + """ # noqa: E501 + return self._args + + @args.setter + def args(self, args): + """Set the args of this Field. + + Args are the arguments to the function + + :param args: The args of this Field. + :type: list[Field] + """ # noqa: E501 + self._args = args + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Field): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/file.py b/frogpilot/third_party/influxdb_client/domain/file.py new file mode 100644 index 000000000..6d3ac8125 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/file.py @@ -0,0 +1,215 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class File(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'name': 'str', + 'package': 'PackageClause', + 'imports': 'list[ImportDeclaration]', + 'body': 'list[Statement]' + } + + attribute_map = { + 'type': 'type', + 'name': 'name', + 'package': 'package', + 'imports': 'imports', + 'body': 'body' + } + + def __init__(self, type=None, name=None, package=None, imports=None, body=None): # noqa: E501,D401,D403 + """File - a model defined in OpenAPI.""" # noqa: E501 + self._type = None + self._name = None + self._package = None + self._imports = None + self._body = None + self.discriminator = None + + if type is not None: + self.type = type + if name is not None: + self.name = name + if package is not None: + self.package = package + if imports is not None: + self.imports = imports + if body is not None: + self.body = body + + @property + def type(self): + """Get the type of this File. + + Type of AST node + + :return: The type of this File. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this File. + + Type of AST node + + :param type: The type of this File. + :type: str + """ # noqa: E501 + self._type = type + + @property + def name(self): + """Get the name of this File. + + The name of the file. + + :return: The name of this File. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this File. + + The name of the file. + + :param name: The name of this File. + :type: str + """ # noqa: E501 + self._name = name + + @property + def package(self): + """Get the package of this File. + + :return: The package of this File. + :rtype: PackageClause + """ # noqa: E501 + return self._package + + @package.setter + def package(self, package): + """Set the package of this File. + + :param package: The package of this File. + :type: PackageClause + """ # noqa: E501 + self._package = package + + @property + def imports(self): + """Get the imports of this File. + + A list of package imports + + :return: The imports of this File. + :rtype: list[ImportDeclaration] + """ # noqa: E501 + return self._imports + + @imports.setter + def imports(self, imports): + """Set the imports of this File. + + A list of package imports + + :param imports: The imports of this File. + :type: list[ImportDeclaration] + """ # noqa: E501 + self._imports = imports + + @property + def body(self): + """Get the body of this File. + + List of Flux statements + + :return: The body of this File. + :rtype: list[Statement] + """ # noqa: E501 + return self._body + + @body.setter + def body(self, body): + """Set the body of this File. + + List of Flux statements + + :param body: The body of this File. + :type: list[Statement] + """ # noqa: E501 + self._body = body + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, File): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/float_literal.py b/frogpilot/third_party/influxdb_client/domain/float_literal.py new file mode 100644 index 000000000..41e8ec354 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/float_literal.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class FloatLiteral(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'value': 'float' + } + + attribute_map = { + 'type': 'type', + 'value': 'value' + } + + def __init__(self, type=None, value=None): # noqa: E501,D401,D403 + """FloatLiteral - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._value = None + self.discriminator = None + + if type is not None: + self.type = type + if value is not None: + self.value = value + + @property + def type(self): + """Get the type of this FloatLiteral. + + Type of AST node + + :return: The type of this FloatLiteral. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this FloatLiteral. + + Type of AST node + + :param type: The type of this FloatLiteral. + :type: str + """ # noqa: E501 + self._type = type + + @property + def value(self): + """Get the value of this FloatLiteral. + + :return: The value of this FloatLiteral. + :rtype: float + """ # noqa: E501 + return self._value + + @value.setter + def value(self, value): + """Set the value of this FloatLiteral. + + :param value: The value of this FloatLiteral. + :type: float + """ # noqa: E501 + self._value = value + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, FloatLiteral): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/flux_response.py b/frogpilot/third_party/influxdb_client/domain/flux_response.py new file mode 100644 index 000000000..94608114a --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/flux_response.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class FluxResponse(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'flux': 'str' + } + + attribute_map = { + 'flux': 'flux' + } + + def __init__(self, flux=None): # noqa: E501,D401,D403 + """FluxResponse - a model defined in OpenAPI.""" # noqa: E501 + self._flux = None + self.discriminator = None + + if flux is not None: + self.flux = flux + + @property + def flux(self): + """Get the flux of this FluxResponse. + + :return: The flux of this FluxResponse. + :rtype: str + """ # noqa: E501 + return self._flux + + @flux.setter + def flux(self, flux): + """Set the flux of this FluxResponse. + + :param flux: The flux of this FluxResponse. + :type: str + """ # noqa: E501 + self._flux = flux + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, FluxResponse): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/flux_suggestion.py b/frogpilot/third_party/influxdb_client/domain/flux_suggestion.py new file mode 100644 index 000000000..46c692fbd --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/flux_suggestion.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class FluxSuggestion(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'params': 'dict(str, str)' + } + + attribute_map = { + 'name': 'name', + 'params': 'params' + } + + def __init__(self, name=None, params=None): # noqa: E501,D401,D403 + """FluxSuggestion - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._params = None + self.discriminator = None + + if name is not None: + self.name = name + if params is not None: + self.params = params + + @property + def name(self): + """Get the name of this FluxSuggestion. + + :return: The name of this FluxSuggestion. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this FluxSuggestion. + + :param name: The name of this FluxSuggestion. + :type: str + """ # noqa: E501 + self._name = name + + @property + def params(self): + """Get the params of this FluxSuggestion. + + :return: The params of this FluxSuggestion. + :rtype: dict(str, str) + """ # noqa: E501 + return self._params + + @params.setter + def params(self, params): + """Set the params of this FluxSuggestion. + + :param params: The params of this FluxSuggestion. + :type: dict(str, str) + """ # noqa: E501 + self._params = params + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, FluxSuggestion): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/flux_suggestions.py b/frogpilot/third_party/influxdb_client/domain/flux_suggestions.py new file mode 100644 index 000000000..38c3ccf87 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/flux_suggestions.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class FluxSuggestions(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'funcs': 'list[FluxSuggestion]' + } + + attribute_map = { + 'funcs': 'funcs' + } + + def __init__(self, funcs=None): # noqa: E501,D401,D403 + """FluxSuggestions - a model defined in OpenAPI.""" # noqa: E501 + self._funcs = None + self.discriminator = None + + if funcs is not None: + self.funcs = funcs + + @property + def funcs(self): + """Get the funcs of this FluxSuggestions. + + :return: The funcs of this FluxSuggestions. + :rtype: list[FluxSuggestion] + """ # noqa: E501 + return self._funcs + + @funcs.setter + def funcs(self, funcs): + """Set the funcs of this FluxSuggestions. + + :param funcs: The funcs of this FluxSuggestions. + :type: list[FluxSuggestion] + """ # noqa: E501 + self._funcs = funcs + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, FluxSuggestions): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/function_expression.py b/frogpilot/third_party/influxdb_client/domain/function_expression.py new file mode 100644 index 000000000..b06c73876 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/function_expression.py @@ -0,0 +1,165 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class FunctionExpression(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'params': 'list[ModelProperty]', + 'body': 'Node' + } + + attribute_map = { + 'type': 'type', + 'params': 'params', + 'body': 'body' + } + + def __init__(self, type=None, params=None, body=None): # noqa: E501,D401,D403 + """FunctionExpression - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._params = None + self._body = None + self.discriminator = None + + if type is not None: + self.type = type + if params is not None: + self.params = params + if body is not None: + self.body = body + + @property + def type(self): + """Get the type of this FunctionExpression. + + Type of AST node + + :return: The type of this FunctionExpression. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this FunctionExpression. + + Type of AST node + + :param type: The type of this FunctionExpression. + :type: str + """ # noqa: E501 + self._type = type + + @property + def params(self): + """Get the params of this FunctionExpression. + + Function parameters + + :return: The params of this FunctionExpression. + :rtype: list[ModelProperty] + """ # noqa: E501 + return self._params + + @params.setter + def params(self, params): + """Set the params of this FunctionExpression. + + Function parameters + + :param params: The params of this FunctionExpression. + :type: list[ModelProperty] + """ # noqa: E501 + self._params = params + + @property + def body(self): + """Get the body of this FunctionExpression. + + :return: The body of this FunctionExpression. + :rtype: Node + """ # noqa: E501 + return self._body + + @body.setter + def body(self, body): + """Set the body of this FunctionExpression. + + :param body: The body of this FunctionExpression. + :type: Node + """ # noqa: E501 + self._body = body + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, FunctionExpression): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/gauge_view_properties.py b/frogpilot/third_party/influxdb_client/domain/gauge_view_properties.py new file mode 100644 index 000000000..237859874 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/gauge_view_properties.py @@ -0,0 +1,360 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.view_properties import ViewProperties + + +class GaugeViewProperties(ViewProperties): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'queries': 'list[DashboardQuery]', + 'colors': 'list[DashboardColor]', + 'shape': 'str', + 'note': 'str', + 'show_note_when_empty': 'bool', + 'prefix': 'str', + 'tick_prefix': 'str', + 'suffix': 'str', + 'tick_suffix': 'str', + 'decimal_places': 'DecimalPlaces' + } + + attribute_map = { + 'type': 'type', + 'queries': 'queries', + 'colors': 'colors', + 'shape': 'shape', + 'note': 'note', + 'show_note_when_empty': 'showNoteWhenEmpty', + 'prefix': 'prefix', + 'tick_prefix': 'tickPrefix', + 'suffix': 'suffix', + 'tick_suffix': 'tickSuffix', + 'decimal_places': 'decimalPlaces' + } + + def __init__(self, type=None, queries=None, colors=None, shape=None, note=None, show_note_when_empty=None, prefix=None, tick_prefix=None, suffix=None, tick_suffix=None, decimal_places=None): # noqa: E501,D401,D403 + """GaugeViewProperties - a model defined in OpenAPI.""" # noqa: E501 + ViewProperties.__init__(self) # noqa: E501 + + self._type = None + self._queries = None + self._colors = None + self._shape = None + self._note = None + self._show_note_when_empty = None + self._prefix = None + self._tick_prefix = None + self._suffix = None + self._tick_suffix = None + self._decimal_places = None + self.discriminator = None + + self.type = type + self.queries = queries + self.colors = colors + self.shape = shape + self.note = note + self.show_note_when_empty = show_note_when_empty + self.prefix = prefix + self.tick_prefix = tick_prefix + self.suffix = suffix + self.tick_suffix = tick_suffix + self.decimal_places = decimal_places + + @property + def type(self): + """Get the type of this GaugeViewProperties. + + :return: The type of this GaugeViewProperties. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this GaugeViewProperties. + + :param type: The type of this GaugeViewProperties. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def queries(self): + """Get the queries of this GaugeViewProperties. + + :return: The queries of this GaugeViewProperties. + :rtype: list[DashboardQuery] + """ # noqa: E501 + return self._queries + + @queries.setter + def queries(self, queries): + """Set the queries of this GaugeViewProperties. + + :param queries: The queries of this GaugeViewProperties. + :type: list[DashboardQuery] + """ # noqa: E501 + if queries is None: + raise ValueError("Invalid value for `queries`, must not be `None`") # noqa: E501 + self._queries = queries + + @property + def colors(self): + """Get the colors of this GaugeViewProperties. + + Colors define color encoding of data into a visualization + + :return: The colors of this GaugeViewProperties. + :rtype: list[DashboardColor] + """ # noqa: E501 + return self._colors + + @colors.setter + def colors(self, colors): + """Set the colors of this GaugeViewProperties. + + Colors define color encoding of data into a visualization + + :param colors: The colors of this GaugeViewProperties. + :type: list[DashboardColor] + """ # noqa: E501 + if colors is None: + raise ValueError("Invalid value for `colors`, must not be `None`") # noqa: E501 + self._colors = colors + + @property + def shape(self): + """Get the shape of this GaugeViewProperties. + + :return: The shape of this GaugeViewProperties. + :rtype: str + """ # noqa: E501 + return self._shape + + @shape.setter + def shape(self, shape): + """Set the shape of this GaugeViewProperties. + + :param shape: The shape of this GaugeViewProperties. + :type: str + """ # noqa: E501 + if shape is None: + raise ValueError("Invalid value for `shape`, must not be `None`") # noqa: E501 + self._shape = shape + + @property + def note(self): + """Get the note of this GaugeViewProperties. + + :return: The note of this GaugeViewProperties. + :rtype: str + """ # noqa: E501 + return self._note + + @note.setter + def note(self, note): + """Set the note of this GaugeViewProperties. + + :param note: The note of this GaugeViewProperties. + :type: str + """ # noqa: E501 + if note is None: + raise ValueError("Invalid value for `note`, must not be `None`") # noqa: E501 + self._note = note + + @property + def show_note_when_empty(self): + """Get the show_note_when_empty of this GaugeViewProperties. + + If true, will display note when empty + + :return: The show_note_when_empty of this GaugeViewProperties. + :rtype: bool + """ # noqa: E501 + return self._show_note_when_empty + + @show_note_when_empty.setter + def show_note_when_empty(self, show_note_when_empty): + """Set the show_note_when_empty of this GaugeViewProperties. + + If true, will display note when empty + + :param show_note_when_empty: The show_note_when_empty of this GaugeViewProperties. + :type: bool + """ # noqa: E501 + if show_note_when_empty is None: + raise ValueError("Invalid value for `show_note_when_empty`, must not be `None`") # noqa: E501 + self._show_note_when_empty = show_note_when_empty + + @property + def prefix(self): + """Get the prefix of this GaugeViewProperties. + + :return: The prefix of this GaugeViewProperties. + :rtype: str + """ # noqa: E501 + return self._prefix + + @prefix.setter + def prefix(self, prefix): + """Set the prefix of this GaugeViewProperties. + + :param prefix: The prefix of this GaugeViewProperties. + :type: str + """ # noqa: E501 + if prefix is None: + raise ValueError("Invalid value for `prefix`, must not be `None`") # noqa: E501 + self._prefix = prefix + + @property + def tick_prefix(self): + """Get the tick_prefix of this GaugeViewProperties. + + :return: The tick_prefix of this GaugeViewProperties. + :rtype: str + """ # noqa: E501 + return self._tick_prefix + + @tick_prefix.setter + def tick_prefix(self, tick_prefix): + """Set the tick_prefix of this GaugeViewProperties. + + :param tick_prefix: The tick_prefix of this GaugeViewProperties. + :type: str + """ # noqa: E501 + if tick_prefix is None: + raise ValueError("Invalid value for `tick_prefix`, must not be `None`") # noqa: E501 + self._tick_prefix = tick_prefix + + @property + def suffix(self): + """Get the suffix of this GaugeViewProperties. + + :return: The suffix of this GaugeViewProperties. + :rtype: str + """ # noqa: E501 + return self._suffix + + @suffix.setter + def suffix(self, suffix): + """Set the suffix of this GaugeViewProperties. + + :param suffix: The suffix of this GaugeViewProperties. + :type: str + """ # noqa: E501 + if suffix is None: + raise ValueError("Invalid value for `suffix`, must not be `None`") # noqa: E501 + self._suffix = suffix + + @property + def tick_suffix(self): + """Get the tick_suffix of this GaugeViewProperties. + + :return: The tick_suffix of this GaugeViewProperties. + :rtype: str + """ # noqa: E501 + return self._tick_suffix + + @tick_suffix.setter + def tick_suffix(self, tick_suffix): + """Set the tick_suffix of this GaugeViewProperties. + + :param tick_suffix: The tick_suffix of this GaugeViewProperties. + :type: str + """ # noqa: E501 + if tick_suffix is None: + raise ValueError("Invalid value for `tick_suffix`, must not be `None`") # noqa: E501 + self._tick_suffix = tick_suffix + + @property + def decimal_places(self): + """Get the decimal_places of this GaugeViewProperties. + + :return: The decimal_places of this GaugeViewProperties. + :rtype: DecimalPlaces + """ # noqa: E501 + return self._decimal_places + + @decimal_places.setter + def decimal_places(self, decimal_places): + """Set the decimal_places of this GaugeViewProperties. + + :param decimal_places: The decimal_places of this GaugeViewProperties. + :type: DecimalPlaces + """ # noqa: E501 + if decimal_places is None: + raise ValueError("Invalid value for `decimal_places`, must not be `None`") # noqa: E501 + self._decimal_places = decimal_places + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, GaugeViewProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/greater_threshold.py b/frogpilot/third_party/influxdb_client/domain/greater_threshold.py new file mode 100644 index 000000000..b857f1322 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/greater_threshold.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.threshold_base import ThresholdBase + + +class GreaterThreshold(ThresholdBase): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'value': 'float', + 'level': 'CheckStatusLevel', + 'all_values': 'bool' + } + + attribute_map = { + 'type': 'type', + 'value': 'value', + 'level': 'level', + 'all_values': 'allValues' + } + + def __init__(self, type="greater", value=None, level=None, all_values=None): # noqa: E501,D401,D403 + """GreaterThreshold - a model defined in OpenAPI.""" # noqa: E501 + ThresholdBase.__init__(self, level=level, all_values=all_values) # noqa: E501 + + self._type = None + self._value = None + self.discriminator = None + + self.type = type + self.value = value + + @property + def type(self): + """Get the type of this GreaterThreshold. + + :return: The type of this GreaterThreshold. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this GreaterThreshold. + + :param type: The type of this GreaterThreshold. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def value(self): + """Get the value of this GreaterThreshold. + + :return: The value of this GreaterThreshold. + :rtype: float + """ # noqa: E501 + return self._value + + @value.setter + def value(self, value): + """Set the value of this GreaterThreshold. + + :param value: The value of this GreaterThreshold. + :type: float + """ # noqa: E501 + if value is None: + raise ValueError("Invalid value for `value`, must not be `None`") # noqa: E501 + self._value = value + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, GreaterThreshold): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/health_check.py b/frogpilot/third_party/influxdb_client/domain/health_check.py new file mode 100644 index 000000000..b35524372 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/health_check.py @@ -0,0 +1,224 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class HealthCheck(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'message': 'str', + 'checks': 'list[HealthCheck]', + 'status': 'str', + 'version': 'str', + 'commit': 'str' + } + + attribute_map = { + 'name': 'name', + 'message': 'message', + 'checks': 'checks', + 'status': 'status', + 'version': 'version', + 'commit': 'commit' + } + + def __init__(self, name=None, message=None, checks=None, status=None, version=None, commit=None): # noqa: E501,D401,D403 + """HealthCheck - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._message = None + self._checks = None + self._status = None + self._version = None + self._commit = None + self.discriminator = None + + self.name = name + if message is not None: + self.message = message + if checks is not None: + self.checks = checks + self.status = status + if version is not None: + self.version = version + if commit is not None: + self.commit = commit + + @property + def name(self): + """Get the name of this HealthCheck. + + :return: The name of this HealthCheck. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this HealthCheck. + + :param name: The name of this HealthCheck. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def message(self): + """Get the message of this HealthCheck. + + :return: The message of this HealthCheck. + :rtype: str + """ # noqa: E501 + return self._message + + @message.setter + def message(self, message): + """Set the message of this HealthCheck. + + :param message: The message of this HealthCheck. + :type: str + """ # noqa: E501 + self._message = message + + @property + def checks(self): + """Get the checks of this HealthCheck. + + :return: The checks of this HealthCheck. + :rtype: list[HealthCheck] + """ # noqa: E501 + return self._checks + + @checks.setter + def checks(self, checks): + """Set the checks of this HealthCheck. + + :param checks: The checks of this HealthCheck. + :type: list[HealthCheck] + """ # noqa: E501 + self._checks = checks + + @property + def status(self): + """Get the status of this HealthCheck. + + :return: The status of this HealthCheck. + :rtype: str + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this HealthCheck. + + :param status: The status of this HealthCheck. + :type: str + """ # noqa: E501 + if status is None: + raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 + self._status = status + + @property + def version(self): + """Get the version of this HealthCheck. + + :return: The version of this HealthCheck. + :rtype: str + """ # noqa: E501 + return self._version + + @version.setter + def version(self, version): + """Set the version of this HealthCheck. + + :param version: The version of this HealthCheck. + :type: str + """ # noqa: E501 + self._version = version + + @property + def commit(self): + """Get the commit of this HealthCheck. + + :return: The commit of this HealthCheck. + :rtype: str + """ # noqa: E501 + return self._commit + + @commit.setter + def commit(self, commit): + """Set the commit of this HealthCheck. + + :param commit: The commit of this HealthCheck. + :type: str + """ # noqa: E501 + self._commit = commit + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, HealthCheck): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/heatmap_view_properties.py b/frogpilot/third_party/influxdb_client/domain/heatmap_view_properties.py new file mode 100644 index 000000000..c4061b18f --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/heatmap_view_properties.py @@ -0,0 +1,826 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.view_properties import ViewProperties + + +class HeatmapViewProperties(ViewProperties): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'adaptive_zoom_hide': 'bool', + 'time_format': 'str', + 'type': 'str', + 'queries': 'list[DashboardQuery]', + 'colors': 'list[str]', + 'shape': 'str', + 'note': 'str', + 'show_note_when_empty': 'bool', + 'x_column': 'str', + 'generate_x_axis_ticks': 'list[str]', + 'x_total_ticks': 'int', + 'x_tick_start': 'float', + 'x_tick_step': 'float', + 'y_column': 'str', + 'generate_y_axis_ticks': 'list[str]', + 'y_total_ticks': 'int', + 'y_tick_start': 'float', + 'y_tick_step': 'float', + 'x_domain': 'list[float]', + 'y_domain': 'list[float]', + 'x_axis_label': 'str', + 'y_axis_label': 'str', + 'x_prefix': 'str', + 'x_suffix': 'str', + 'y_prefix': 'str', + 'y_suffix': 'str', + 'bin_size': 'float', + 'legend_colorize_rows': 'bool', + 'legend_hide': 'bool', + 'legend_opacity': 'float', + 'legend_orientation_threshold': 'int' + } + + attribute_map = { + 'adaptive_zoom_hide': 'adaptiveZoomHide', + 'time_format': 'timeFormat', + 'type': 'type', + 'queries': 'queries', + 'colors': 'colors', + 'shape': 'shape', + 'note': 'note', + 'show_note_when_empty': 'showNoteWhenEmpty', + 'x_column': 'xColumn', + 'generate_x_axis_ticks': 'generateXAxisTicks', + 'x_total_ticks': 'xTotalTicks', + 'x_tick_start': 'xTickStart', + 'x_tick_step': 'xTickStep', + 'y_column': 'yColumn', + 'generate_y_axis_ticks': 'generateYAxisTicks', + 'y_total_ticks': 'yTotalTicks', + 'y_tick_start': 'yTickStart', + 'y_tick_step': 'yTickStep', + 'x_domain': 'xDomain', + 'y_domain': 'yDomain', + 'x_axis_label': 'xAxisLabel', + 'y_axis_label': 'yAxisLabel', + 'x_prefix': 'xPrefix', + 'x_suffix': 'xSuffix', + 'y_prefix': 'yPrefix', + 'y_suffix': 'ySuffix', + 'bin_size': 'binSize', + 'legend_colorize_rows': 'legendColorizeRows', + 'legend_hide': 'legendHide', + 'legend_opacity': 'legendOpacity', + 'legend_orientation_threshold': 'legendOrientationThreshold' + } + + def __init__(self, adaptive_zoom_hide=None, time_format=None, type=None, queries=None, colors=None, shape=None, note=None, show_note_when_empty=None, x_column=None, generate_x_axis_ticks=None, x_total_ticks=None, x_tick_start=None, x_tick_step=None, y_column=None, generate_y_axis_ticks=None, y_total_ticks=None, y_tick_start=None, y_tick_step=None, x_domain=None, y_domain=None, x_axis_label=None, y_axis_label=None, x_prefix=None, x_suffix=None, y_prefix=None, y_suffix=None, bin_size=None, legend_colorize_rows=None, legend_hide=None, legend_opacity=None, legend_orientation_threshold=None): # noqa: E501,D401,D403 + """HeatmapViewProperties - a model defined in OpenAPI.""" # noqa: E501 + ViewProperties.__init__(self) # noqa: E501 + + self._adaptive_zoom_hide = None + self._time_format = None + self._type = None + self._queries = None + self._colors = None + self._shape = None + self._note = None + self._show_note_when_empty = None + self._x_column = None + self._generate_x_axis_ticks = None + self._x_total_ticks = None + self._x_tick_start = None + self._x_tick_step = None + self._y_column = None + self._generate_y_axis_ticks = None + self._y_total_ticks = None + self._y_tick_start = None + self._y_tick_step = None + self._x_domain = None + self._y_domain = None + self._x_axis_label = None + self._y_axis_label = None + self._x_prefix = None + self._x_suffix = None + self._y_prefix = None + self._y_suffix = None + self._bin_size = None + self._legend_colorize_rows = None + self._legend_hide = None + self._legend_opacity = None + self._legend_orientation_threshold = None + self.discriminator = None + + if adaptive_zoom_hide is not None: + self.adaptive_zoom_hide = adaptive_zoom_hide + if time_format is not None: + self.time_format = time_format + self.type = type + self.queries = queries + self.colors = colors + self.shape = shape + self.note = note + self.show_note_when_empty = show_note_when_empty + self.x_column = x_column + if generate_x_axis_ticks is not None: + self.generate_x_axis_ticks = generate_x_axis_ticks + if x_total_ticks is not None: + self.x_total_ticks = x_total_ticks + if x_tick_start is not None: + self.x_tick_start = x_tick_start + if x_tick_step is not None: + self.x_tick_step = x_tick_step + self.y_column = y_column + if generate_y_axis_ticks is not None: + self.generate_y_axis_ticks = generate_y_axis_ticks + if y_total_ticks is not None: + self.y_total_ticks = y_total_ticks + if y_tick_start is not None: + self.y_tick_start = y_tick_start + if y_tick_step is not None: + self.y_tick_step = y_tick_step + self.x_domain = x_domain + self.y_domain = y_domain + self.x_axis_label = x_axis_label + self.y_axis_label = y_axis_label + self.x_prefix = x_prefix + self.x_suffix = x_suffix + self.y_prefix = y_prefix + self.y_suffix = y_suffix + self.bin_size = bin_size + if legend_colorize_rows is not None: + self.legend_colorize_rows = legend_colorize_rows + if legend_hide is not None: + self.legend_hide = legend_hide + if legend_opacity is not None: + self.legend_opacity = legend_opacity + if legend_orientation_threshold is not None: + self.legend_orientation_threshold = legend_orientation_threshold + + @property + def adaptive_zoom_hide(self): + """Get the adaptive_zoom_hide of this HeatmapViewProperties. + + :return: The adaptive_zoom_hide of this HeatmapViewProperties. + :rtype: bool + """ # noqa: E501 + return self._adaptive_zoom_hide + + @adaptive_zoom_hide.setter + def adaptive_zoom_hide(self, adaptive_zoom_hide): + """Set the adaptive_zoom_hide of this HeatmapViewProperties. + + :param adaptive_zoom_hide: The adaptive_zoom_hide of this HeatmapViewProperties. + :type: bool + """ # noqa: E501 + self._adaptive_zoom_hide = adaptive_zoom_hide + + @property + def time_format(self): + """Get the time_format of this HeatmapViewProperties. + + :return: The time_format of this HeatmapViewProperties. + :rtype: str + """ # noqa: E501 + return self._time_format + + @time_format.setter + def time_format(self, time_format): + """Set the time_format of this HeatmapViewProperties. + + :param time_format: The time_format of this HeatmapViewProperties. + :type: str + """ # noqa: E501 + self._time_format = time_format + + @property + def type(self): + """Get the type of this HeatmapViewProperties. + + :return: The type of this HeatmapViewProperties. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this HeatmapViewProperties. + + :param type: The type of this HeatmapViewProperties. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def queries(self): + """Get the queries of this HeatmapViewProperties. + + :return: The queries of this HeatmapViewProperties. + :rtype: list[DashboardQuery] + """ # noqa: E501 + return self._queries + + @queries.setter + def queries(self, queries): + """Set the queries of this HeatmapViewProperties. + + :param queries: The queries of this HeatmapViewProperties. + :type: list[DashboardQuery] + """ # noqa: E501 + if queries is None: + raise ValueError("Invalid value for `queries`, must not be `None`") # noqa: E501 + self._queries = queries + + @property + def colors(self): + """Get the colors of this HeatmapViewProperties. + + Colors define color encoding of data into a visualization + + :return: The colors of this HeatmapViewProperties. + :rtype: list[str] + """ # noqa: E501 + return self._colors + + @colors.setter + def colors(self, colors): + """Set the colors of this HeatmapViewProperties. + + Colors define color encoding of data into a visualization + + :param colors: The colors of this HeatmapViewProperties. + :type: list[str] + """ # noqa: E501 + if colors is None: + raise ValueError("Invalid value for `colors`, must not be `None`") # noqa: E501 + self._colors = colors + + @property + def shape(self): + """Get the shape of this HeatmapViewProperties. + + :return: The shape of this HeatmapViewProperties. + :rtype: str + """ # noqa: E501 + return self._shape + + @shape.setter + def shape(self, shape): + """Set the shape of this HeatmapViewProperties. + + :param shape: The shape of this HeatmapViewProperties. + :type: str + """ # noqa: E501 + if shape is None: + raise ValueError("Invalid value for `shape`, must not be `None`") # noqa: E501 + self._shape = shape + + @property + def note(self): + """Get the note of this HeatmapViewProperties. + + :return: The note of this HeatmapViewProperties. + :rtype: str + """ # noqa: E501 + return self._note + + @note.setter + def note(self, note): + """Set the note of this HeatmapViewProperties. + + :param note: The note of this HeatmapViewProperties. + :type: str + """ # noqa: E501 + if note is None: + raise ValueError("Invalid value for `note`, must not be `None`") # noqa: E501 + self._note = note + + @property + def show_note_when_empty(self): + """Get the show_note_when_empty of this HeatmapViewProperties. + + If true, will display note when empty + + :return: The show_note_when_empty of this HeatmapViewProperties. + :rtype: bool + """ # noqa: E501 + return self._show_note_when_empty + + @show_note_when_empty.setter + def show_note_when_empty(self, show_note_when_empty): + """Set the show_note_when_empty of this HeatmapViewProperties. + + If true, will display note when empty + + :param show_note_when_empty: The show_note_when_empty of this HeatmapViewProperties. + :type: bool + """ # noqa: E501 + if show_note_when_empty is None: + raise ValueError("Invalid value for `show_note_when_empty`, must not be `None`") # noqa: E501 + self._show_note_when_empty = show_note_when_empty + + @property + def x_column(self): + """Get the x_column of this HeatmapViewProperties. + + :return: The x_column of this HeatmapViewProperties. + :rtype: str + """ # noqa: E501 + return self._x_column + + @x_column.setter + def x_column(self, x_column): + """Set the x_column of this HeatmapViewProperties. + + :param x_column: The x_column of this HeatmapViewProperties. + :type: str + """ # noqa: E501 + if x_column is None: + raise ValueError("Invalid value for `x_column`, must not be `None`") # noqa: E501 + self._x_column = x_column + + @property + def generate_x_axis_ticks(self): + """Get the generate_x_axis_ticks of this HeatmapViewProperties. + + :return: The generate_x_axis_ticks of this HeatmapViewProperties. + :rtype: list[str] + """ # noqa: E501 + return self._generate_x_axis_ticks + + @generate_x_axis_ticks.setter + def generate_x_axis_ticks(self, generate_x_axis_ticks): + """Set the generate_x_axis_ticks of this HeatmapViewProperties. + + :param generate_x_axis_ticks: The generate_x_axis_ticks of this HeatmapViewProperties. + :type: list[str] + """ # noqa: E501 + self._generate_x_axis_ticks = generate_x_axis_ticks + + @property + def x_total_ticks(self): + """Get the x_total_ticks of this HeatmapViewProperties. + + :return: The x_total_ticks of this HeatmapViewProperties. + :rtype: int + """ # noqa: E501 + return self._x_total_ticks + + @x_total_ticks.setter + def x_total_ticks(self, x_total_ticks): + """Set the x_total_ticks of this HeatmapViewProperties. + + :param x_total_ticks: The x_total_ticks of this HeatmapViewProperties. + :type: int + """ # noqa: E501 + self._x_total_ticks = x_total_ticks + + @property + def x_tick_start(self): + """Get the x_tick_start of this HeatmapViewProperties. + + :return: The x_tick_start of this HeatmapViewProperties. + :rtype: float + """ # noqa: E501 + return self._x_tick_start + + @x_tick_start.setter + def x_tick_start(self, x_tick_start): + """Set the x_tick_start of this HeatmapViewProperties. + + :param x_tick_start: The x_tick_start of this HeatmapViewProperties. + :type: float + """ # noqa: E501 + self._x_tick_start = x_tick_start + + @property + def x_tick_step(self): + """Get the x_tick_step of this HeatmapViewProperties. + + :return: The x_tick_step of this HeatmapViewProperties. + :rtype: float + """ # noqa: E501 + return self._x_tick_step + + @x_tick_step.setter + def x_tick_step(self, x_tick_step): + """Set the x_tick_step of this HeatmapViewProperties. + + :param x_tick_step: The x_tick_step of this HeatmapViewProperties. + :type: float + """ # noqa: E501 + self._x_tick_step = x_tick_step + + @property + def y_column(self): + """Get the y_column of this HeatmapViewProperties. + + :return: The y_column of this HeatmapViewProperties. + :rtype: str + """ # noqa: E501 + return self._y_column + + @y_column.setter + def y_column(self, y_column): + """Set the y_column of this HeatmapViewProperties. + + :param y_column: The y_column of this HeatmapViewProperties. + :type: str + """ # noqa: E501 + if y_column is None: + raise ValueError("Invalid value for `y_column`, must not be `None`") # noqa: E501 + self._y_column = y_column + + @property + def generate_y_axis_ticks(self): + """Get the generate_y_axis_ticks of this HeatmapViewProperties. + + :return: The generate_y_axis_ticks of this HeatmapViewProperties. + :rtype: list[str] + """ # noqa: E501 + return self._generate_y_axis_ticks + + @generate_y_axis_ticks.setter + def generate_y_axis_ticks(self, generate_y_axis_ticks): + """Set the generate_y_axis_ticks of this HeatmapViewProperties. + + :param generate_y_axis_ticks: The generate_y_axis_ticks of this HeatmapViewProperties. + :type: list[str] + """ # noqa: E501 + self._generate_y_axis_ticks = generate_y_axis_ticks + + @property + def y_total_ticks(self): + """Get the y_total_ticks of this HeatmapViewProperties. + + :return: The y_total_ticks of this HeatmapViewProperties. + :rtype: int + """ # noqa: E501 + return self._y_total_ticks + + @y_total_ticks.setter + def y_total_ticks(self, y_total_ticks): + """Set the y_total_ticks of this HeatmapViewProperties. + + :param y_total_ticks: The y_total_ticks of this HeatmapViewProperties. + :type: int + """ # noqa: E501 + self._y_total_ticks = y_total_ticks + + @property + def y_tick_start(self): + """Get the y_tick_start of this HeatmapViewProperties. + + :return: The y_tick_start of this HeatmapViewProperties. + :rtype: float + """ # noqa: E501 + return self._y_tick_start + + @y_tick_start.setter + def y_tick_start(self, y_tick_start): + """Set the y_tick_start of this HeatmapViewProperties. + + :param y_tick_start: The y_tick_start of this HeatmapViewProperties. + :type: float + """ # noqa: E501 + self._y_tick_start = y_tick_start + + @property + def y_tick_step(self): + """Get the y_tick_step of this HeatmapViewProperties. + + :return: The y_tick_step of this HeatmapViewProperties. + :rtype: float + """ # noqa: E501 + return self._y_tick_step + + @y_tick_step.setter + def y_tick_step(self, y_tick_step): + """Set the y_tick_step of this HeatmapViewProperties. + + :param y_tick_step: The y_tick_step of this HeatmapViewProperties. + :type: float + """ # noqa: E501 + self._y_tick_step = y_tick_step + + @property + def x_domain(self): + """Get the x_domain of this HeatmapViewProperties. + + :return: The x_domain of this HeatmapViewProperties. + :rtype: list[float] + """ # noqa: E501 + return self._x_domain + + @x_domain.setter + def x_domain(self, x_domain): + """Set the x_domain of this HeatmapViewProperties. + + :param x_domain: The x_domain of this HeatmapViewProperties. + :type: list[float] + """ # noqa: E501 + if x_domain is None: + raise ValueError("Invalid value for `x_domain`, must not be `None`") # noqa: E501 + self._x_domain = x_domain + + @property + def y_domain(self): + """Get the y_domain of this HeatmapViewProperties. + + :return: The y_domain of this HeatmapViewProperties. + :rtype: list[float] + """ # noqa: E501 + return self._y_domain + + @y_domain.setter + def y_domain(self, y_domain): + """Set the y_domain of this HeatmapViewProperties. + + :param y_domain: The y_domain of this HeatmapViewProperties. + :type: list[float] + """ # noqa: E501 + if y_domain is None: + raise ValueError("Invalid value for `y_domain`, must not be `None`") # noqa: E501 + self._y_domain = y_domain + + @property + def x_axis_label(self): + """Get the x_axis_label of this HeatmapViewProperties. + + :return: The x_axis_label of this HeatmapViewProperties. + :rtype: str + """ # noqa: E501 + return self._x_axis_label + + @x_axis_label.setter + def x_axis_label(self, x_axis_label): + """Set the x_axis_label of this HeatmapViewProperties. + + :param x_axis_label: The x_axis_label of this HeatmapViewProperties. + :type: str + """ # noqa: E501 + if x_axis_label is None: + raise ValueError("Invalid value for `x_axis_label`, must not be `None`") # noqa: E501 + self._x_axis_label = x_axis_label + + @property + def y_axis_label(self): + """Get the y_axis_label of this HeatmapViewProperties. + + :return: The y_axis_label of this HeatmapViewProperties. + :rtype: str + """ # noqa: E501 + return self._y_axis_label + + @y_axis_label.setter + def y_axis_label(self, y_axis_label): + """Set the y_axis_label of this HeatmapViewProperties. + + :param y_axis_label: The y_axis_label of this HeatmapViewProperties. + :type: str + """ # noqa: E501 + if y_axis_label is None: + raise ValueError("Invalid value for `y_axis_label`, must not be `None`") # noqa: E501 + self._y_axis_label = y_axis_label + + @property + def x_prefix(self): + """Get the x_prefix of this HeatmapViewProperties. + + :return: The x_prefix of this HeatmapViewProperties. + :rtype: str + """ # noqa: E501 + return self._x_prefix + + @x_prefix.setter + def x_prefix(self, x_prefix): + """Set the x_prefix of this HeatmapViewProperties. + + :param x_prefix: The x_prefix of this HeatmapViewProperties. + :type: str + """ # noqa: E501 + if x_prefix is None: + raise ValueError("Invalid value for `x_prefix`, must not be `None`") # noqa: E501 + self._x_prefix = x_prefix + + @property + def x_suffix(self): + """Get the x_suffix of this HeatmapViewProperties. + + :return: The x_suffix of this HeatmapViewProperties. + :rtype: str + """ # noqa: E501 + return self._x_suffix + + @x_suffix.setter + def x_suffix(self, x_suffix): + """Set the x_suffix of this HeatmapViewProperties. + + :param x_suffix: The x_suffix of this HeatmapViewProperties. + :type: str + """ # noqa: E501 + if x_suffix is None: + raise ValueError("Invalid value for `x_suffix`, must not be `None`") # noqa: E501 + self._x_suffix = x_suffix + + @property + def y_prefix(self): + """Get the y_prefix of this HeatmapViewProperties. + + :return: The y_prefix of this HeatmapViewProperties. + :rtype: str + """ # noqa: E501 + return self._y_prefix + + @y_prefix.setter + def y_prefix(self, y_prefix): + """Set the y_prefix of this HeatmapViewProperties. + + :param y_prefix: The y_prefix of this HeatmapViewProperties. + :type: str + """ # noqa: E501 + if y_prefix is None: + raise ValueError("Invalid value for `y_prefix`, must not be `None`") # noqa: E501 + self._y_prefix = y_prefix + + @property + def y_suffix(self): + """Get the y_suffix of this HeatmapViewProperties. + + :return: The y_suffix of this HeatmapViewProperties. + :rtype: str + """ # noqa: E501 + return self._y_suffix + + @y_suffix.setter + def y_suffix(self, y_suffix): + """Set the y_suffix of this HeatmapViewProperties. + + :param y_suffix: The y_suffix of this HeatmapViewProperties. + :type: str + """ # noqa: E501 + if y_suffix is None: + raise ValueError("Invalid value for `y_suffix`, must not be `None`") # noqa: E501 + self._y_suffix = y_suffix + + @property + def bin_size(self): + """Get the bin_size of this HeatmapViewProperties. + + :return: The bin_size of this HeatmapViewProperties. + :rtype: float + """ # noqa: E501 + return self._bin_size + + @bin_size.setter + def bin_size(self, bin_size): + """Set the bin_size of this HeatmapViewProperties. + + :param bin_size: The bin_size of this HeatmapViewProperties. + :type: float + """ # noqa: E501 + if bin_size is None: + raise ValueError("Invalid value for `bin_size`, must not be `None`") # noqa: E501 + self._bin_size = bin_size + + @property + def legend_colorize_rows(self): + """Get the legend_colorize_rows of this HeatmapViewProperties. + + :return: The legend_colorize_rows of this HeatmapViewProperties. + :rtype: bool + """ # noqa: E501 + return self._legend_colorize_rows + + @legend_colorize_rows.setter + def legend_colorize_rows(self, legend_colorize_rows): + """Set the legend_colorize_rows of this HeatmapViewProperties. + + :param legend_colorize_rows: The legend_colorize_rows of this HeatmapViewProperties. + :type: bool + """ # noqa: E501 + self._legend_colorize_rows = legend_colorize_rows + + @property + def legend_hide(self): + """Get the legend_hide of this HeatmapViewProperties. + + :return: The legend_hide of this HeatmapViewProperties. + :rtype: bool + """ # noqa: E501 + return self._legend_hide + + @legend_hide.setter + def legend_hide(self, legend_hide): + """Set the legend_hide of this HeatmapViewProperties. + + :param legend_hide: The legend_hide of this HeatmapViewProperties. + :type: bool + """ # noqa: E501 + self._legend_hide = legend_hide + + @property + def legend_opacity(self): + """Get the legend_opacity of this HeatmapViewProperties. + + :return: The legend_opacity of this HeatmapViewProperties. + :rtype: float + """ # noqa: E501 + return self._legend_opacity + + @legend_opacity.setter + def legend_opacity(self, legend_opacity): + """Set the legend_opacity of this HeatmapViewProperties. + + :param legend_opacity: The legend_opacity of this HeatmapViewProperties. + :type: float + """ # noqa: E501 + self._legend_opacity = legend_opacity + + @property + def legend_orientation_threshold(self): + """Get the legend_orientation_threshold of this HeatmapViewProperties. + + :return: The legend_orientation_threshold of this HeatmapViewProperties. + :rtype: int + """ # noqa: E501 + return self._legend_orientation_threshold + + @legend_orientation_threshold.setter + def legend_orientation_threshold(self, legend_orientation_threshold): + """Set the legend_orientation_threshold of this HeatmapViewProperties. + + :param legend_orientation_threshold: The legend_orientation_threshold of this HeatmapViewProperties. + :type: int + """ # noqa: E501 + self._legend_orientation_threshold = legend_orientation_threshold + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, HeatmapViewProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/histogram_view_properties.py b/frogpilot/third_party/influxdb_client/domain/histogram_view_properties.py new file mode 100644 index 000000000..750574306 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/histogram_view_properties.py @@ -0,0 +1,476 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.view_properties import ViewProperties + + +class HistogramViewProperties(ViewProperties): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'queries': 'list[DashboardQuery]', + 'colors': 'list[DashboardColor]', + 'shape': 'str', + 'note': 'str', + 'show_note_when_empty': 'bool', + 'x_column': 'str', + 'fill_columns': 'list[str]', + 'x_domain': 'list[float]', + 'x_axis_label': 'str', + 'position': 'str', + 'bin_count': 'int', + 'legend_colorize_rows': 'bool', + 'legend_hide': 'bool', + 'legend_opacity': 'float', + 'legend_orientation_threshold': 'int' + } + + attribute_map = { + 'type': 'type', + 'queries': 'queries', + 'colors': 'colors', + 'shape': 'shape', + 'note': 'note', + 'show_note_when_empty': 'showNoteWhenEmpty', + 'x_column': 'xColumn', + 'fill_columns': 'fillColumns', + 'x_domain': 'xDomain', + 'x_axis_label': 'xAxisLabel', + 'position': 'position', + 'bin_count': 'binCount', + 'legend_colorize_rows': 'legendColorizeRows', + 'legend_hide': 'legendHide', + 'legend_opacity': 'legendOpacity', + 'legend_orientation_threshold': 'legendOrientationThreshold' + } + + def __init__(self, type=None, queries=None, colors=None, shape=None, note=None, show_note_when_empty=None, x_column=None, fill_columns=None, x_domain=None, x_axis_label=None, position=None, bin_count=None, legend_colorize_rows=None, legend_hide=None, legend_opacity=None, legend_orientation_threshold=None): # noqa: E501,D401,D403 + """HistogramViewProperties - a model defined in OpenAPI.""" # noqa: E501 + ViewProperties.__init__(self) # noqa: E501 + + self._type = None + self._queries = None + self._colors = None + self._shape = None + self._note = None + self._show_note_when_empty = None + self._x_column = None + self._fill_columns = None + self._x_domain = None + self._x_axis_label = None + self._position = None + self._bin_count = None + self._legend_colorize_rows = None + self._legend_hide = None + self._legend_opacity = None + self._legend_orientation_threshold = None + self.discriminator = None + + self.type = type + self.queries = queries + self.colors = colors + self.shape = shape + self.note = note + self.show_note_when_empty = show_note_when_empty + self.x_column = x_column + self.fill_columns = fill_columns + self.x_domain = x_domain + self.x_axis_label = x_axis_label + self.position = position + self.bin_count = bin_count + if legend_colorize_rows is not None: + self.legend_colorize_rows = legend_colorize_rows + if legend_hide is not None: + self.legend_hide = legend_hide + if legend_opacity is not None: + self.legend_opacity = legend_opacity + if legend_orientation_threshold is not None: + self.legend_orientation_threshold = legend_orientation_threshold + + @property + def type(self): + """Get the type of this HistogramViewProperties. + + :return: The type of this HistogramViewProperties. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this HistogramViewProperties. + + :param type: The type of this HistogramViewProperties. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def queries(self): + """Get the queries of this HistogramViewProperties. + + :return: The queries of this HistogramViewProperties. + :rtype: list[DashboardQuery] + """ # noqa: E501 + return self._queries + + @queries.setter + def queries(self, queries): + """Set the queries of this HistogramViewProperties. + + :param queries: The queries of this HistogramViewProperties. + :type: list[DashboardQuery] + """ # noqa: E501 + if queries is None: + raise ValueError("Invalid value for `queries`, must not be `None`") # noqa: E501 + self._queries = queries + + @property + def colors(self): + """Get the colors of this HistogramViewProperties. + + Colors define color encoding of data into a visualization + + :return: The colors of this HistogramViewProperties. + :rtype: list[DashboardColor] + """ # noqa: E501 + return self._colors + + @colors.setter + def colors(self, colors): + """Set the colors of this HistogramViewProperties. + + Colors define color encoding of data into a visualization + + :param colors: The colors of this HistogramViewProperties. + :type: list[DashboardColor] + """ # noqa: E501 + if colors is None: + raise ValueError("Invalid value for `colors`, must not be `None`") # noqa: E501 + self._colors = colors + + @property + def shape(self): + """Get the shape of this HistogramViewProperties. + + :return: The shape of this HistogramViewProperties. + :rtype: str + """ # noqa: E501 + return self._shape + + @shape.setter + def shape(self, shape): + """Set the shape of this HistogramViewProperties. + + :param shape: The shape of this HistogramViewProperties. + :type: str + """ # noqa: E501 + if shape is None: + raise ValueError("Invalid value for `shape`, must not be `None`") # noqa: E501 + self._shape = shape + + @property + def note(self): + """Get the note of this HistogramViewProperties. + + :return: The note of this HistogramViewProperties. + :rtype: str + """ # noqa: E501 + return self._note + + @note.setter + def note(self, note): + """Set the note of this HistogramViewProperties. + + :param note: The note of this HistogramViewProperties. + :type: str + """ # noqa: E501 + if note is None: + raise ValueError("Invalid value for `note`, must not be `None`") # noqa: E501 + self._note = note + + @property + def show_note_when_empty(self): + """Get the show_note_when_empty of this HistogramViewProperties. + + If true, will display note when empty + + :return: The show_note_when_empty of this HistogramViewProperties. + :rtype: bool + """ # noqa: E501 + return self._show_note_when_empty + + @show_note_when_empty.setter + def show_note_when_empty(self, show_note_when_empty): + """Set the show_note_when_empty of this HistogramViewProperties. + + If true, will display note when empty + + :param show_note_when_empty: The show_note_when_empty of this HistogramViewProperties. + :type: bool + """ # noqa: E501 + if show_note_when_empty is None: + raise ValueError("Invalid value for `show_note_when_empty`, must not be `None`") # noqa: E501 + self._show_note_when_empty = show_note_when_empty + + @property + def x_column(self): + """Get the x_column of this HistogramViewProperties. + + :return: The x_column of this HistogramViewProperties. + :rtype: str + """ # noqa: E501 + return self._x_column + + @x_column.setter + def x_column(self, x_column): + """Set the x_column of this HistogramViewProperties. + + :param x_column: The x_column of this HistogramViewProperties. + :type: str + """ # noqa: E501 + if x_column is None: + raise ValueError("Invalid value for `x_column`, must not be `None`") # noqa: E501 + self._x_column = x_column + + @property + def fill_columns(self): + """Get the fill_columns of this HistogramViewProperties. + + :return: The fill_columns of this HistogramViewProperties. + :rtype: list[str] + """ # noqa: E501 + return self._fill_columns + + @fill_columns.setter + def fill_columns(self, fill_columns): + """Set the fill_columns of this HistogramViewProperties. + + :param fill_columns: The fill_columns of this HistogramViewProperties. + :type: list[str] + """ # noqa: E501 + if fill_columns is None: + raise ValueError("Invalid value for `fill_columns`, must not be `None`") # noqa: E501 + self._fill_columns = fill_columns + + @property + def x_domain(self): + """Get the x_domain of this HistogramViewProperties. + + :return: The x_domain of this HistogramViewProperties. + :rtype: list[float] + """ # noqa: E501 + return self._x_domain + + @x_domain.setter + def x_domain(self, x_domain): + """Set the x_domain of this HistogramViewProperties. + + :param x_domain: The x_domain of this HistogramViewProperties. + :type: list[float] + """ # noqa: E501 + if x_domain is None: + raise ValueError("Invalid value for `x_domain`, must not be `None`") # noqa: E501 + self._x_domain = x_domain + + @property + def x_axis_label(self): + """Get the x_axis_label of this HistogramViewProperties. + + :return: The x_axis_label of this HistogramViewProperties. + :rtype: str + """ # noqa: E501 + return self._x_axis_label + + @x_axis_label.setter + def x_axis_label(self, x_axis_label): + """Set the x_axis_label of this HistogramViewProperties. + + :param x_axis_label: The x_axis_label of this HistogramViewProperties. + :type: str + """ # noqa: E501 + if x_axis_label is None: + raise ValueError("Invalid value for `x_axis_label`, must not be `None`") # noqa: E501 + self._x_axis_label = x_axis_label + + @property + def position(self): + """Get the position of this HistogramViewProperties. + + :return: The position of this HistogramViewProperties. + :rtype: str + """ # noqa: E501 + return self._position + + @position.setter + def position(self, position): + """Set the position of this HistogramViewProperties. + + :param position: The position of this HistogramViewProperties. + :type: str + """ # noqa: E501 + if position is None: + raise ValueError("Invalid value for `position`, must not be `None`") # noqa: E501 + self._position = position + + @property + def bin_count(self): + """Get the bin_count of this HistogramViewProperties. + + :return: The bin_count of this HistogramViewProperties. + :rtype: int + """ # noqa: E501 + return self._bin_count + + @bin_count.setter + def bin_count(self, bin_count): + """Set the bin_count of this HistogramViewProperties. + + :param bin_count: The bin_count of this HistogramViewProperties. + :type: int + """ # noqa: E501 + if bin_count is None: + raise ValueError("Invalid value for `bin_count`, must not be `None`") # noqa: E501 + self._bin_count = bin_count + + @property + def legend_colorize_rows(self): + """Get the legend_colorize_rows of this HistogramViewProperties. + + :return: The legend_colorize_rows of this HistogramViewProperties. + :rtype: bool + """ # noqa: E501 + return self._legend_colorize_rows + + @legend_colorize_rows.setter + def legend_colorize_rows(self, legend_colorize_rows): + """Set the legend_colorize_rows of this HistogramViewProperties. + + :param legend_colorize_rows: The legend_colorize_rows of this HistogramViewProperties. + :type: bool + """ # noqa: E501 + self._legend_colorize_rows = legend_colorize_rows + + @property + def legend_hide(self): + """Get the legend_hide of this HistogramViewProperties. + + :return: The legend_hide of this HistogramViewProperties. + :rtype: bool + """ # noqa: E501 + return self._legend_hide + + @legend_hide.setter + def legend_hide(self, legend_hide): + """Set the legend_hide of this HistogramViewProperties. + + :param legend_hide: The legend_hide of this HistogramViewProperties. + :type: bool + """ # noqa: E501 + self._legend_hide = legend_hide + + @property + def legend_opacity(self): + """Get the legend_opacity of this HistogramViewProperties. + + :return: The legend_opacity of this HistogramViewProperties. + :rtype: float + """ # noqa: E501 + return self._legend_opacity + + @legend_opacity.setter + def legend_opacity(self, legend_opacity): + """Set the legend_opacity of this HistogramViewProperties. + + :param legend_opacity: The legend_opacity of this HistogramViewProperties. + :type: float + """ # noqa: E501 + self._legend_opacity = legend_opacity + + @property + def legend_orientation_threshold(self): + """Get the legend_orientation_threshold of this HistogramViewProperties. + + :return: The legend_orientation_threshold of this HistogramViewProperties. + :rtype: int + """ # noqa: E501 + return self._legend_orientation_threshold + + @legend_orientation_threshold.setter + def legend_orientation_threshold(self, legend_orientation_threshold): + """Set the legend_orientation_threshold of this HistogramViewProperties. + + :param legend_orientation_threshold: The legend_orientation_threshold of this HistogramViewProperties. + :type: int + """ # noqa: E501 + self._legend_orientation_threshold = legend_orientation_threshold + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, HistogramViewProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/http_notification_endpoint.py b/frogpilot/third_party/influxdb_client/domain/http_notification_endpoint.py new file mode 100644 index 000000000..d8a48851e --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/http_notification_endpoint.py @@ -0,0 +1,301 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.notification_endpoint_discriminator import NotificationEndpointDiscriminator + + +class HTTPNotificationEndpoint(NotificationEndpointDiscriminator): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'url': 'str', + 'username': 'str', + 'password': 'str', + 'token': 'str', + 'method': 'str', + 'auth_method': 'str', + 'content_template': 'str', + 'headers': 'dict(str, str)', + 'id': 'str', + 'org_id': 'str', + 'user_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'description': 'str', + 'name': 'str', + 'status': 'str', + 'labels': 'list[Label]', + 'links': 'NotificationEndpointBaseLinks', + 'type': 'NotificationEndpointType' + } + + attribute_map = { + 'url': 'url', + 'username': 'username', + 'password': 'password', + 'token': 'token', + 'method': 'method', + 'auth_method': 'authMethod', + 'content_template': 'contentTemplate', + 'headers': 'headers', + 'id': 'id', + 'org_id': 'orgID', + 'user_id': 'userID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'description': 'description', + 'name': 'name', + 'status': 'status', + 'labels': 'labels', + 'links': 'links', + 'type': 'type' + } + + def __init__(self, url=None, username=None, password=None, token=None, method=None, auth_method=None, content_template=None, headers=None, id=None, org_id=None, user_id=None, created_at=None, updated_at=None, description=None, name=None, status='active', labels=None, links=None, type="http"): # noqa: E501,D401,D403 + """HTTPNotificationEndpoint - a model defined in OpenAPI.""" # noqa: E501 + NotificationEndpointDiscriminator.__init__(self, id=id, org_id=org_id, user_id=user_id, created_at=created_at, updated_at=updated_at, description=description, name=name, status=status, labels=labels, links=links, type=type) # noqa: E501 + + self._url = None + self._username = None + self._password = None + self._token = None + self._method = None + self._auth_method = None + self._content_template = None + self._headers = None + self.discriminator = None + + self.url = url + if username is not None: + self.username = username + if password is not None: + self.password = password + if token is not None: + self.token = token + self.method = method + self.auth_method = auth_method + if content_template is not None: + self.content_template = content_template + if headers is not None: + self.headers = headers + + @property + def url(self): + """Get the url of this HTTPNotificationEndpoint. + + :return: The url of this HTTPNotificationEndpoint. + :rtype: str + """ # noqa: E501 + return self._url + + @url.setter + def url(self, url): + """Set the url of this HTTPNotificationEndpoint. + + :param url: The url of this HTTPNotificationEndpoint. + :type: str + """ # noqa: E501 + if url is None: + raise ValueError("Invalid value for `url`, must not be `None`") # noqa: E501 + self._url = url + + @property + def username(self): + """Get the username of this HTTPNotificationEndpoint. + + :return: The username of this HTTPNotificationEndpoint. + :rtype: str + """ # noqa: E501 + return self._username + + @username.setter + def username(self, username): + """Set the username of this HTTPNotificationEndpoint. + + :param username: The username of this HTTPNotificationEndpoint. + :type: str + """ # noqa: E501 + self._username = username + + @property + def password(self): + """Get the password of this HTTPNotificationEndpoint. + + :return: The password of this HTTPNotificationEndpoint. + :rtype: str + """ # noqa: E501 + return self._password + + @password.setter + def password(self, password): + """Set the password of this HTTPNotificationEndpoint. + + :param password: The password of this HTTPNotificationEndpoint. + :type: str + """ # noqa: E501 + self._password = password + + @property + def token(self): + """Get the token of this HTTPNotificationEndpoint. + + :return: The token of this HTTPNotificationEndpoint. + :rtype: str + """ # noqa: E501 + return self._token + + @token.setter + def token(self, token): + """Set the token of this HTTPNotificationEndpoint. + + :param token: The token of this HTTPNotificationEndpoint. + :type: str + """ # noqa: E501 + self._token = token + + @property + def method(self): + """Get the method of this HTTPNotificationEndpoint. + + :return: The method of this HTTPNotificationEndpoint. + :rtype: str + """ # noqa: E501 + return self._method + + @method.setter + def method(self, method): + """Set the method of this HTTPNotificationEndpoint. + + :param method: The method of this HTTPNotificationEndpoint. + :type: str + """ # noqa: E501 + if method is None: + raise ValueError("Invalid value for `method`, must not be `None`") # noqa: E501 + self._method = method + + @property + def auth_method(self): + """Get the auth_method of this HTTPNotificationEndpoint. + + :return: The auth_method of this HTTPNotificationEndpoint. + :rtype: str + """ # noqa: E501 + return self._auth_method + + @auth_method.setter + def auth_method(self, auth_method): + """Set the auth_method of this HTTPNotificationEndpoint. + + :param auth_method: The auth_method of this HTTPNotificationEndpoint. + :type: str + """ # noqa: E501 + if auth_method is None: + raise ValueError("Invalid value for `auth_method`, must not be `None`") # noqa: E501 + self._auth_method = auth_method + + @property + def content_template(self): + """Get the content_template of this HTTPNotificationEndpoint. + + :return: The content_template of this HTTPNotificationEndpoint. + :rtype: str + """ # noqa: E501 + return self._content_template + + @content_template.setter + def content_template(self, content_template): + """Set the content_template of this HTTPNotificationEndpoint. + + :param content_template: The content_template of this HTTPNotificationEndpoint. + :type: str + """ # noqa: E501 + self._content_template = content_template + + @property + def headers(self): + """Get the headers of this HTTPNotificationEndpoint. + + Customized headers. + + :return: The headers of this HTTPNotificationEndpoint. + :rtype: dict(str, str) + """ # noqa: E501 + return self._headers + + @headers.setter + def headers(self, headers): + """Set the headers of this HTTPNotificationEndpoint. + + Customized headers. + + :param headers: The headers of this HTTPNotificationEndpoint. + :type: dict(str, str) + """ # noqa: E501 + self._headers = headers + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, HTTPNotificationEndpoint): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/http_notification_rule.py b/frogpilot/third_party/influxdb_client/domain/http_notification_rule.py new file mode 100644 index 000000000..050b3fcc5 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/http_notification_rule.py @@ -0,0 +1,136 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.http_notification_rule_base import HTTPNotificationRuleBase + + +class HTTPNotificationRule(HTTPNotificationRuleBase): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'url': 'str', + 'latest_completed': 'datetime', + 'last_run_status': 'str', + 'last_run_error': 'str', + 'id': 'str', + 'endpoint_id': 'str', + 'org_id': 'str', + 'task_id': 'str', + 'owner_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'status': 'TaskStatusType', + 'name': 'str', + 'sleep_until': 'str', + 'every': 'str', + 'offset': 'str', + 'runbook_link': 'str', + 'limit_every': 'int', + 'limit': 'int', + 'tag_rules': 'list[TagRule]', + 'description': 'str', + 'status_rules': 'list[StatusRule]', + 'labels': 'list[Label]', + 'links': 'NotificationRuleBaseLinks' + } + + attribute_map = { + 'type': 'type', + 'url': 'url', + 'latest_completed': 'latestCompleted', + 'last_run_status': 'lastRunStatus', + 'last_run_error': 'lastRunError', + 'id': 'id', + 'endpoint_id': 'endpointID', + 'org_id': 'orgID', + 'task_id': 'taskID', + 'owner_id': 'ownerID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'status': 'status', + 'name': 'name', + 'sleep_until': 'sleepUntil', + 'every': 'every', + 'offset': 'offset', + 'runbook_link': 'runbookLink', + 'limit_every': 'limitEvery', + 'limit': 'limit', + 'tag_rules': 'tagRules', + 'description': 'description', + 'status_rules': 'statusRules', + 'labels': 'labels', + 'links': 'links' + } + + def __init__(self, type="http", url=None, latest_completed=None, last_run_status=None, last_run_error=None, id=None, endpoint_id=None, org_id=None, task_id=None, owner_id=None, created_at=None, updated_at=None, status=None, name=None, sleep_until=None, every=None, offset=None, runbook_link=None, limit_every=None, limit=None, tag_rules=None, description=None, status_rules=None, labels=None, links=None): # noqa: E501,D401,D403 + """HTTPNotificationRule - a model defined in OpenAPI.""" # noqa: E501 + HTTPNotificationRuleBase.__init__(self, type=type, url=url, latest_completed=latest_completed, last_run_status=last_run_status, last_run_error=last_run_error, id=id, endpoint_id=endpoint_id, org_id=org_id, task_id=task_id, owner_id=owner_id, created_at=created_at, updated_at=updated_at, status=status, name=name, sleep_until=sleep_until, every=every, offset=offset, runbook_link=runbook_link, limit_every=limit_every, limit=limit, tag_rules=tag_rules, description=description, status_rules=status_rules, labels=labels, links=links) # noqa: E501 + self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, HTTPNotificationRule): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/http_notification_rule_base.py b/frogpilot/third_party/influxdb_client/domain/http_notification_rule_base.py new file mode 100644 index 000000000..521f9084d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/http_notification_rule_base.py @@ -0,0 +1,181 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.notification_rule_discriminator import NotificationRuleDiscriminator + + +class HTTPNotificationRuleBase(NotificationRuleDiscriminator): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'url': 'str', + 'latest_completed': 'datetime', + 'last_run_status': 'str', + 'last_run_error': 'str', + 'id': 'str', + 'endpoint_id': 'str', + 'org_id': 'str', + 'task_id': 'str', + 'owner_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'status': 'TaskStatusType', + 'name': 'str', + 'sleep_until': 'str', + 'every': 'str', + 'offset': 'str', + 'runbook_link': 'str', + 'limit_every': 'int', + 'limit': 'int', + 'tag_rules': 'list[TagRule]', + 'description': 'str', + 'status_rules': 'list[StatusRule]', + 'labels': 'list[Label]', + 'links': 'NotificationRuleBaseLinks' + } + + attribute_map = { + 'type': 'type', + 'url': 'url', + 'latest_completed': 'latestCompleted', + 'last_run_status': 'lastRunStatus', + 'last_run_error': 'lastRunError', + 'id': 'id', + 'endpoint_id': 'endpointID', + 'org_id': 'orgID', + 'task_id': 'taskID', + 'owner_id': 'ownerID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'status': 'status', + 'name': 'name', + 'sleep_until': 'sleepUntil', + 'every': 'every', + 'offset': 'offset', + 'runbook_link': 'runbookLink', + 'limit_every': 'limitEvery', + 'limit': 'limit', + 'tag_rules': 'tagRules', + 'description': 'description', + 'status_rules': 'statusRules', + 'labels': 'labels', + 'links': 'links' + } + + def __init__(self, type=None, url=None, latest_completed=None, last_run_status=None, last_run_error=None, id=None, endpoint_id=None, org_id=None, task_id=None, owner_id=None, created_at=None, updated_at=None, status=None, name=None, sleep_until=None, every=None, offset=None, runbook_link=None, limit_every=None, limit=None, tag_rules=None, description=None, status_rules=None, labels=None, links=None): # noqa: E501,D401,D403 + """HTTPNotificationRuleBase - a model defined in OpenAPI.""" # noqa: E501 + NotificationRuleDiscriminator.__init__(self, latest_completed=latest_completed, last_run_status=last_run_status, last_run_error=last_run_error, id=id, endpoint_id=endpoint_id, org_id=org_id, task_id=task_id, owner_id=owner_id, created_at=created_at, updated_at=updated_at, status=status, name=name, sleep_until=sleep_until, every=every, offset=offset, runbook_link=runbook_link, limit_every=limit_every, limit=limit, tag_rules=tag_rules, description=description, status_rules=status_rules, labels=labels, links=links) # noqa: E501 + + self._type = None + self._url = None + self.discriminator = None + + self.type = type + if url is not None: + self.url = url + + @property + def type(self): + """Get the type of this HTTPNotificationRuleBase. + + :return: The type of this HTTPNotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this HTTPNotificationRuleBase. + + :param type: The type of this HTTPNotificationRuleBase. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def url(self): + """Get the url of this HTTPNotificationRuleBase. + + :return: The url of this HTTPNotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._url + + @url.setter + def url(self, url): + """Set the url of this HTTPNotificationRuleBase. + + :param url: The url of this HTTPNotificationRuleBase. + :type: str + """ # noqa: E501 + self._url = url + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, HTTPNotificationRuleBase): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/identifier.py b/frogpilot/third_party/influxdb_client/domain/identifier.py new file mode 100644 index 000000000..aa9a3fb29 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/identifier.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.property_key import PropertyKey + + +class Identifier(PropertyKey): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'name': 'str' + } + + attribute_map = { + 'type': 'type', + 'name': 'name' + } + + def __init__(self, type=None, name=None): # noqa: E501,D401,D403 + """Identifier - a model defined in OpenAPI.""" # noqa: E501 + PropertyKey.__init__(self) # noqa: E501 + + self._type = None + self._name = None + self.discriminator = None + + if type is not None: + self.type = type + if name is not None: + self.name = name + + @property + def type(self): + """Get the type of this Identifier. + + Type of AST node + + :return: The type of this Identifier. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this Identifier. + + Type of AST node + + :param type: The type of this Identifier. + :type: str + """ # noqa: E501 + self._type = type + + @property + def name(self): + """Get the name of this Identifier. + + :return: The name of this Identifier. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this Identifier. + + :param name: The name of this Identifier. + :type: str + """ # noqa: E501 + self._name = name + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Identifier): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/import_declaration.py b/frogpilot/third_party/influxdb_client/domain/import_declaration.py new file mode 100644 index 000000000..435380cfa --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/import_declaration.py @@ -0,0 +1,157 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ImportDeclaration(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + '_as': 'Identifier', + 'path': 'StringLiteral' + } + + attribute_map = { + 'type': 'type', + '_as': 'as', + 'path': 'path' + } + + def __init__(self, type=None, _as=None, path=None): # noqa: E501,D401,D403 + """ImportDeclaration - a model defined in OpenAPI.""" # noqa: E501 + self._type = None + self.__as = None + self._path = None + self.discriminator = None + + if type is not None: + self.type = type + if _as is not None: + self._as = _as + if path is not None: + self.path = path + + @property + def type(self): + """Get the type of this ImportDeclaration. + + Type of AST node + + :return: The type of this ImportDeclaration. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this ImportDeclaration. + + Type of AST node + + :param type: The type of this ImportDeclaration. + :type: str + """ # noqa: E501 + self._type = type + + @property + def _as(self): + """Get the _as of this ImportDeclaration. + + :return: The _as of this ImportDeclaration. + :rtype: Identifier + """ # noqa: E501 + return self.__as + + @_as.setter + def _as(self, _as): + """Set the _as of this ImportDeclaration. + + :param _as: The _as of this ImportDeclaration. + :type: Identifier + """ # noqa: E501 + self.__as = _as + + @property + def path(self): + """Get the path of this ImportDeclaration. + + :return: The path of this ImportDeclaration. + :rtype: StringLiteral + """ # noqa: E501 + return self._path + + @path.setter + def path(self, path): + """Set the path of this ImportDeclaration. + + :param path: The path of this ImportDeclaration. + :type: StringLiteral + """ # noqa: E501 + self._path = path + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ImportDeclaration): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/index_expression.py b/frogpilot/third_party/influxdb_client/domain/index_expression.py new file mode 100644 index 000000000..4aedd7317 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/index_expression.py @@ -0,0 +1,161 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class IndexExpression(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'array': 'Expression', + 'index': 'Expression' + } + + attribute_map = { + 'type': 'type', + 'array': 'array', + 'index': 'index' + } + + def __init__(self, type=None, array=None, index=None): # noqa: E501,D401,D403 + """IndexExpression - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._array = None + self._index = None + self.discriminator = None + + if type is not None: + self.type = type + if array is not None: + self.array = array + if index is not None: + self.index = index + + @property + def type(self): + """Get the type of this IndexExpression. + + Type of AST node + + :return: The type of this IndexExpression. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this IndexExpression. + + Type of AST node + + :param type: The type of this IndexExpression. + :type: str + """ # noqa: E501 + self._type = type + + @property + def array(self): + """Get the array of this IndexExpression. + + :return: The array of this IndexExpression. + :rtype: Expression + """ # noqa: E501 + return self._array + + @array.setter + def array(self, array): + """Set the array of this IndexExpression. + + :param array: The array of this IndexExpression. + :type: Expression + """ # noqa: E501 + self._array = array + + @property + def index(self): + """Get the index of this IndexExpression. + + :return: The index of this IndexExpression. + :rtype: Expression + """ # noqa: E501 + return self._index + + @index.setter + def index(self, index): + """Set the index of this IndexExpression. + + :param index: The index of this IndexExpression. + :type: Expression + """ # noqa: E501 + self._index = index + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, IndexExpression): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/integer_literal.py b/frogpilot/third_party/influxdb_client/domain/integer_literal.py new file mode 100644 index 000000000..dcedf78d3 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/integer_literal.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class IntegerLiteral(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'value': 'str' + } + + attribute_map = { + 'type': 'type', + 'value': 'value' + } + + def __init__(self, type=None, value=None): # noqa: E501,D401,D403 + """IntegerLiteral - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._value = None + self.discriminator = None + + if type is not None: + self.type = type + if value is not None: + self.value = value + + @property + def type(self): + """Get the type of this IntegerLiteral. + + Type of AST node + + :return: The type of this IntegerLiteral. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this IntegerLiteral. + + Type of AST node + + :param type: The type of this IntegerLiteral. + :type: str + """ # noqa: E501 + self._type = type + + @property + def value(self): + """Get the value of this IntegerLiteral. + + :return: The value of this IntegerLiteral. + :rtype: str + """ # noqa: E501 + return self._value + + @value.setter + def value(self, value): + """Set the value of this IntegerLiteral. + + :param value: The value of this IntegerLiteral. + :type: str + """ # noqa: E501 + self._value = value + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, IntegerLiteral): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/is_onboarding.py b/frogpilot/third_party/influxdb_client/domain/is_onboarding.py new file mode 100644 index 000000000..0e14abdb8 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/is_onboarding.py @@ -0,0 +1,111 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class IsOnboarding(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'allowed': 'bool' + } + + attribute_map = { + 'allowed': 'allowed' + } + + def __init__(self, allowed=None): # noqa: E501,D401,D403 + """IsOnboarding - a model defined in OpenAPI.""" # noqa: E501 + self._allowed = None + self.discriminator = None + + if allowed is not None: + self.allowed = allowed + + @property + def allowed(self): + """Get the allowed of this IsOnboarding. + + If `true`, the InfluxDB instance hasn't had initial setup; `false` otherwise. + + :return: The allowed of this IsOnboarding. + :rtype: bool + """ # noqa: E501 + return self._allowed + + @allowed.setter + def allowed(self, allowed): + """Set the allowed of this IsOnboarding. + + If `true`, the InfluxDB instance hasn't had initial setup; `false` otherwise. + + :param allowed: The allowed of this IsOnboarding. + :type: bool + """ # noqa: E501 + self._allowed = allowed + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, IsOnboarding): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/label.py b/frogpilot/third_party/influxdb_client/domain/label.py new file mode 100644 index 000000000..cceaab955 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/label.py @@ -0,0 +1,180 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Label(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'org_id': 'str', + 'name': 'str', + 'properties': 'dict(str, str)' + } + + attribute_map = { + 'id': 'id', + 'org_id': 'orgID', + 'name': 'name', + 'properties': 'properties' + } + + def __init__(self, id=None, org_id=None, name=None, properties=None): # noqa: E501,D401,D403 + """Label - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._org_id = None + self._name = None + self._properties = None + self.discriminator = None + + if id is not None: + self.id = id + if org_id is not None: + self.org_id = org_id + if name is not None: + self.name = name + if properties is not None: + self.properties = properties + + @property + def id(self): + """Get the id of this Label. + + :return: The id of this Label. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this Label. + + :param id: The id of this Label. + :type: str + """ # noqa: E501 + self._id = id + + @property + def org_id(self): + """Get the org_id of this Label. + + :return: The org_id of this Label. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this Label. + + :param org_id: The org_id of this Label. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def name(self): + """Get the name of this Label. + + :return: The name of this Label. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this Label. + + :param name: The name of this Label. + :type: str + """ # noqa: E501 + self._name = name + + @property + def properties(self): + """Get the properties of this Label. + + Key-value pairs associated with this label. To remove a property, send an update with an empty value (`""`) for the key. + + :return: The properties of this Label. + :rtype: dict(str, str) + """ # noqa: E501 + return self._properties + + @properties.setter + def properties(self, properties): + """Set the properties of this Label. + + Key-value pairs associated with this label. To remove a property, send an update with an empty value (`""`) for the key. + + :param properties: The properties of this Label. + :type: dict(str, str) + """ # noqa: E501 + self._properties = properties + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Label): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/label_create_request.py b/frogpilot/third_party/influxdb_client/domain/label_create_request.py new file mode 100644 index 000000000..73259eea6 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/label_create_request.py @@ -0,0 +1,159 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class LabelCreateRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'org_id': 'str', + 'name': 'str', + 'properties': 'dict(str, str)' + } + + attribute_map = { + 'org_id': 'orgID', + 'name': 'name', + 'properties': 'properties' + } + + def __init__(self, org_id=None, name=None, properties=None): # noqa: E501,D401,D403 + """LabelCreateRequest - a model defined in OpenAPI.""" # noqa: E501 + self._org_id = None + self._name = None + self._properties = None + self.discriminator = None + + self.org_id = org_id + self.name = name + if properties is not None: + self.properties = properties + + @property + def org_id(self): + """Get the org_id of this LabelCreateRequest. + + :return: The org_id of this LabelCreateRequest. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this LabelCreateRequest. + + :param org_id: The org_id of this LabelCreateRequest. + :type: str + """ # noqa: E501 + if org_id is None: + raise ValueError("Invalid value for `org_id`, must not be `None`") # noqa: E501 + self._org_id = org_id + + @property + def name(self): + """Get the name of this LabelCreateRequest. + + :return: The name of this LabelCreateRequest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this LabelCreateRequest. + + :param name: The name of this LabelCreateRequest. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def properties(self): + """Get the properties of this LabelCreateRequest. + + Key-value pairs associated with this label. To remove a property, send an update with an empty value (`""`) for the key. + + :return: The properties of this LabelCreateRequest. + :rtype: dict(str, str) + """ # noqa: E501 + return self._properties + + @properties.setter + def properties(self, properties): + """Set the properties of this LabelCreateRequest. + + Key-value pairs associated with this label. To remove a property, send an update with an empty value (`""`) for the key. + + :param properties: The properties of this LabelCreateRequest. + :type: dict(str, str) + """ # noqa: E501 + self._properties = properties + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, LabelCreateRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/label_mapping.py b/frogpilot/third_party/influxdb_client/domain/label_mapping.py new file mode 100644 index 000000000..909d1b38a --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/label_mapping.py @@ -0,0 +1,112 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class LabelMapping(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'label_id': 'str' + } + + attribute_map = { + 'label_id': 'labelID' + } + + def __init__(self, label_id=None): # noqa: E501,D401,D403 + """LabelMapping - a model defined in OpenAPI.""" # noqa: E501 + self._label_id = None + self.discriminator = None + + self.label_id = label_id + + @property + def label_id(self): + """Get the label_id of this LabelMapping. + + A label ID. Specifies the label to attach. + + :return: The label_id of this LabelMapping. + :rtype: str + """ # noqa: E501 + return self._label_id + + @label_id.setter + def label_id(self, label_id): + """Set the label_id of this LabelMapping. + + A label ID. Specifies the label to attach. + + :param label_id: The label_id of this LabelMapping. + :type: str + """ # noqa: E501 + if label_id is None: + raise ValueError("Invalid value for `label_id`, must not be `None`") # noqa: E501 + self._label_id = label_id + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, LabelMapping): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/label_response.py b/frogpilot/third_party/influxdb_client/domain/label_response.py new file mode 100644 index 000000000..8eed84067 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/label_response.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class LabelResponse(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'label': 'Label', + 'links': 'Links' + } + + attribute_map = { + 'label': 'label', + 'links': 'links' + } + + def __init__(self, label=None, links=None): # noqa: E501,D401,D403 + """LabelResponse - a model defined in OpenAPI.""" # noqa: E501 + self._label = None + self._links = None + self.discriminator = None + + if label is not None: + self.label = label + if links is not None: + self.links = links + + @property + def label(self): + """Get the label of this LabelResponse. + + :return: The label of this LabelResponse. + :rtype: Label + """ # noqa: E501 + return self._label + + @label.setter + def label(self, label): + """Set the label of this LabelResponse. + + :param label: The label of this LabelResponse. + :type: Label + """ # noqa: E501 + self._label = label + + @property + def links(self): + """Get the links of this LabelResponse. + + :return: The links of this LabelResponse. + :rtype: Links + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this LabelResponse. + + :param links: The links of this LabelResponse. + :type: Links + """ # noqa: E501 + self._links = links + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, LabelResponse): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/label_update.py b/frogpilot/third_party/influxdb_client/domain/label_update.py new file mode 100644 index 000000000..c1a7c7ee7 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/label_update.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class LabelUpdate(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'properties': 'dict(str, str)' + } + + attribute_map = { + 'name': 'name', + 'properties': 'properties' + } + + def __init__(self, name=None, properties=None): # noqa: E501,D401,D403 + """LabelUpdate - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._properties = None + self.discriminator = None + + if name is not None: + self.name = name + if properties is not None: + self.properties = properties + + @property + def name(self): + """Get the name of this LabelUpdate. + + :return: The name of this LabelUpdate. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this LabelUpdate. + + :param name: The name of this LabelUpdate. + :type: str + """ # noqa: E501 + self._name = name + + @property + def properties(self): + """Get the properties of this LabelUpdate. + + :return: The properties of this LabelUpdate. + :rtype: dict(str, str) + """ # noqa: E501 + return self._properties + + @properties.setter + def properties(self, properties): + """Set the properties of this LabelUpdate. + + :param properties: The properties of this LabelUpdate. + :type: dict(str, str) + """ # noqa: E501 + self._properties = properties + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, LabelUpdate): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/labels_response.py b/frogpilot/third_party/influxdb_client/domain/labels_response.py new file mode 100644 index 000000000..fee2fdc9c --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/labels_response.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class LabelsResponse(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'labels': 'list[Label]', + 'links': 'Links' + } + + attribute_map = { + 'labels': 'labels', + 'links': 'links' + } + + def __init__(self, labels=None, links=None): # noqa: E501,D401,D403 + """LabelsResponse - a model defined in OpenAPI.""" # noqa: E501 + self._labels = None + self._links = None + self.discriminator = None + + if labels is not None: + self.labels = labels + if links is not None: + self.links = links + + @property + def labels(self): + """Get the labels of this LabelsResponse. + + :return: The labels of this LabelsResponse. + :rtype: list[Label] + """ # noqa: E501 + return self._labels + + @labels.setter + def labels(self, labels): + """Set the labels of this LabelsResponse. + + :param labels: The labels of this LabelsResponse. + :type: list[Label] + """ # noqa: E501 + self._labels = labels + + @property + def links(self): + """Get the links of this LabelsResponse. + + :return: The links of this LabelsResponse. + :rtype: Links + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this LabelsResponse. + + :param links: The links of this LabelsResponse. + :type: Links + """ # noqa: E501 + self._links = links + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, LabelsResponse): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/language_request.py b/frogpilot/third_party/influxdb_client/domain/language_request.py new file mode 100644 index 000000000..083e70a22 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/language_request.py @@ -0,0 +1,112 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class LanguageRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'query': 'str' + } + + attribute_map = { + 'query': 'query' + } + + def __init__(self, query=None): # noqa: E501,D401,D403 + """LanguageRequest - a model defined in OpenAPI.""" # noqa: E501 + self._query = None + self.discriminator = None + + self.query = query + + @property + def query(self): + """Get the query of this LanguageRequest. + + The Flux query script to be analyzed. + + :return: The query of this LanguageRequest. + :rtype: str + """ # noqa: E501 + return self._query + + @query.setter + def query(self, query): + """Set the query of this LanguageRequest. + + The Flux query script to be analyzed. + + :param query: The query of this LanguageRequest. + :type: str + """ # noqa: E501 + if query is None: + raise ValueError("Invalid value for `query`, must not be `None`") # noqa: E501 + self._query = query + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, LanguageRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/legacy_authorization_post_request.py b/frogpilot/third_party/influxdb_client/domain/legacy_authorization_post_request.py new file mode 100644 index 000000000..2976671b4 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/legacy_authorization_post_request.py @@ -0,0 +1,200 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.authorization_update_request import AuthorizationUpdateRequest + + +class LegacyAuthorizationPostRequest(AuthorizationUpdateRequest): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'org_id': 'str', + 'user_id': 'str', + 'token': 'str', + 'permissions': 'list[Permission]', + 'status': 'str', + 'description': 'str' + } + + attribute_map = { + 'org_id': 'orgID', + 'user_id': 'userID', + 'token': 'token', + 'permissions': 'permissions', + 'status': 'status', + 'description': 'description' + } + + def __init__(self, org_id=None, user_id=None, token=None, permissions=None, status='active', description=None): # noqa: E501,D401,D403 + """LegacyAuthorizationPostRequest - a model defined in OpenAPI.""" # noqa: E501 + AuthorizationUpdateRequest.__init__(self, status=status, description=description) # noqa: E501 + + self._org_id = None + self._user_id = None + self._token = None + self._permissions = None + self.discriminator = None + + if org_id is not None: + self.org_id = org_id + if user_id is not None: + self.user_id = user_id + if token is not None: + self.token = token + if permissions is not None: + self.permissions = permissions + + @property + def org_id(self): + """Get the org_id of this LegacyAuthorizationPostRequest. + + ID of org that authorization is scoped to. + + :return: The org_id of this LegacyAuthorizationPostRequest. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this LegacyAuthorizationPostRequest. + + ID of org that authorization is scoped to. + + :param org_id: The org_id of this LegacyAuthorizationPostRequest. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def user_id(self): + """Get the user_id of this LegacyAuthorizationPostRequest. + + ID of user that authorization is scoped to. + + :return: The user_id of this LegacyAuthorizationPostRequest. + :rtype: str + """ # noqa: E501 + return self._user_id + + @user_id.setter + def user_id(self, user_id): + """Set the user_id of this LegacyAuthorizationPostRequest. + + ID of user that authorization is scoped to. + + :param user_id: The user_id of this LegacyAuthorizationPostRequest. + :type: str + """ # noqa: E501 + self._user_id = user_id + + @property + def token(self): + """Get the token of this LegacyAuthorizationPostRequest. + + Token (name) of the authorization + + :return: The token of this LegacyAuthorizationPostRequest. + :rtype: str + """ # noqa: E501 + return self._token + + @token.setter + def token(self, token): + """Set the token of this LegacyAuthorizationPostRequest. + + Token (name) of the authorization + + :param token: The token of this LegacyAuthorizationPostRequest. + :type: str + """ # noqa: E501 + self._token = token + + @property + def permissions(self): + """Get the permissions of this LegacyAuthorizationPostRequest. + + List of permissions for an auth. An auth must have at least one Permission. + + :return: The permissions of this LegacyAuthorizationPostRequest. + :rtype: list[Permission] + """ # noqa: E501 + return self._permissions + + @permissions.setter + def permissions(self, permissions): + """Set the permissions of this LegacyAuthorizationPostRequest. + + List of permissions for an auth. An auth must have at least one Permission. + + :param permissions: The permissions of this LegacyAuthorizationPostRequest. + :type: list[Permission] + """ # noqa: E501 + self._permissions = permissions + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, LegacyAuthorizationPostRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/lesser_threshold.py b/frogpilot/third_party/influxdb_client/domain/lesser_threshold.py new file mode 100644 index 000000000..a75a19e27 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/lesser_threshold.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.threshold_base import ThresholdBase + + +class LesserThreshold(ThresholdBase): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'value': 'float', + 'level': 'CheckStatusLevel', + 'all_values': 'bool' + } + + attribute_map = { + 'type': 'type', + 'value': 'value', + 'level': 'level', + 'all_values': 'allValues' + } + + def __init__(self, type="lesser", value=None, level=None, all_values=None): # noqa: E501,D401,D403 + """LesserThreshold - a model defined in OpenAPI.""" # noqa: E501 + ThresholdBase.__init__(self, level=level, all_values=all_values) # noqa: E501 + + self._type = None + self._value = None + self.discriminator = None + + self.type = type + self.value = value + + @property + def type(self): + """Get the type of this LesserThreshold. + + :return: The type of this LesserThreshold. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this LesserThreshold. + + :param type: The type of this LesserThreshold. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def value(self): + """Get the value of this LesserThreshold. + + :return: The value of this LesserThreshold. + :rtype: float + """ # noqa: E501 + return self._value + + @value.setter + def value(self, value): + """Set the value of this LesserThreshold. + + :param value: The value of this LesserThreshold. + :type: float + """ # noqa: E501 + if value is None: + raise ValueError("Invalid value for `value`, must not be `None`") # noqa: E501 + self._value = value + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, LesserThreshold): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/line_plus_single_stat_properties.py b/frogpilot/third_party/influxdb_client/domain/line_plus_single_stat_properties.py new file mode 100644 index 000000000..5196ba03f --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/line_plus_single_stat_properties.py @@ -0,0 +1,797 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.view_properties import ViewProperties + + +class LinePlusSingleStatProperties(ViewProperties): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'adaptive_zoom_hide': 'bool', + 'time_format': 'str', + 'type': 'str', + 'queries': 'list[DashboardQuery]', + 'colors': 'list[DashboardColor]', + 'shape': 'str', + 'note': 'str', + 'show_note_when_empty': 'bool', + 'axes': 'Axes', + 'static_legend': 'StaticLegend', + 'x_column': 'str', + 'generate_x_axis_ticks': 'list[str]', + 'x_total_ticks': 'int', + 'x_tick_start': 'float', + 'x_tick_step': 'float', + 'y_column': 'str', + 'generate_y_axis_ticks': 'list[str]', + 'y_total_ticks': 'int', + 'y_tick_start': 'float', + 'y_tick_step': 'float', + 'shade_below': 'bool', + 'hover_dimension': 'str', + 'position': 'str', + 'prefix': 'str', + 'suffix': 'str', + 'decimal_places': 'DecimalPlaces', + 'legend_colorize_rows': 'bool', + 'legend_hide': 'bool', + 'legend_opacity': 'float', + 'legend_orientation_threshold': 'int' + } + + attribute_map = { + 'adaptive_zoom_hide': 'adaptiveZoomHide', + 'time_format': 'timeFormat', + 'type': 'type', + 'queries': 'queries', + 'colors': 'colors', + 'shape': 'shape', + 'note': 'note', + 'show_note_when_empty': 'showNoteWhenEmpty', + 'axes': 'axes', + 'static_legend': 'staticLegend', + 'x_column': 'xColumn', + 'generate_x_axis_ticks': 'generateXAxisTicks', + 'x_total_ticks': 'xTotalTicks', + 'x_tick_start': 'xTickStart', + 'x_tick_step': 'xTickStep', + 'y_column': 'yColumn', + 'generate_y_axis_ticks': 'generateYAxisTicks', + 'y_total_ticks': 'yTotalTicks', + 'y_tick_start': 'yTickStart', + 'y_tick_step': 'yTickStep', + 'shade_below': 'shadeBelow', + 'hover_dimension': 'hoverDimension', + 'position': 'position', + 'prefix': 'prefix', + 'suffix': 'suffix', + 'decimal_places': 'decimalPlaces', + 'legend_colorize_rows': 'legendColorizeRows', + 'legend_hide': 'legendHide', + 'legend_opacity': 'legendOpacity', + 'legend_orientation_threshold': 'legendOrientationThreshold' + } + + def __init__(self, adaptive_zoom_hide=None, time_format=None, type=None, queries=None, colors=None, shape=None, note=None, show_note_when_empty=None, axes=None, static_legend=None, x_column=None, generate_x_axis_ticks=None, x_total_ticks=None, x_tick_start=None, x_tick_step=None, y_column=None, generate_y_axis_ticks=None, y_total_ticks=None, y_tick_start=None, y_tick_step=None, shade_below=None, hover_dimension=None, position=None, prefix=None, suffix=None, decimal_places=None, legend_colorize_rows=None, legend_hide=None, legend_opacity=None, legend_orientation_threshold=None): # noqa: E501,D401,D403 + """LinePlusSingleStatProperties - a model defined in OpenAPI.""" # noqa: E501 + ViewProperties.__init__(self) # noqa: E501 + + self._adaptive_zoom_hide = None + self._time_format = None + self._type = None + self._queries = None + self._colors = None + self._shape = None + self._note = None + self._show_note_when_empty = None + self._axes = None + self._static_legend = None + self._x_column = None + self._generate_x_axis_ticks = None + self._x_total_ticks = None + self._x_tick_start = None + self._x_tick_step = None + self._y_column = None + self._generate_y_axis_ticks = None + self._y_total_ticks = None + self._y_tick_start = None + self._y_tick_step = None + self._shade_below = None + self._hover_dimension = None + self._position = None + self._prefix = None + self._suffix = None + self._decimal_places = None + self._legend_colorize_rows = None + self._legend_hide = None + self._legend_opacity = None + self._legend_orientation_threshold = None + self.discriminator = None + + if adaptive_zoom_hide is not None: + self.adaptive_zoom_hide = adaptive_zoom_hide + if time_format is not None: + self.time_format = time_format + self.type = type + self.queries = queries + self.colors = colors + self.shape = shape + self.note = note + self.show_note_when_empty = show_note_when_empty + self.axes = axes + if static_legend is not None: + self.static_legend = static_legend + if x_column is not None: + self.x_column = x_column + if generate_x_axis_ticks is not None: + self.generate_x_axis_ticks = generate_x_axis_ticks + if x_total_ticks is not None: + self.x_total_ticks = x_total_ticks + if x_tick_start is not None: + self.x_tick_start = x_tick_start + if x_tick_step is not None: + self.x_tick_step = x_tick_step + if y_column is not None: + self.y_column = y_column + if generate_y_axis_ticks is not None: + self.generate_y_axis_ticks = generate_y_axis_ticks + if y_total_ticks is not None: + self.y_total_ticks = y_total_ticks + if y_tick_start is not None: + self.y_tick_start = y_tick_start + if y_tick_step is not None: + self.y_tick_step = y_tick_step + if shade_below is not None: + self.shade_below = shade_below + if hover_dimension is not None: + self.hover_dimension = hover_dimension + self.position = position + self.prefix = prefix + self.suffix = suffix + self.decimal_places = decimal_places + if legend_colorize_rows is not None: + self.legend_colorize_rows = legend_colorize_rows + if legend_hide is not None: + self.legend_hide = legend_hide + if legend_opacity is not None: + self.legend_opacity = legend_opacity + if legend_orientation_threshold is not None: + self.legend_orientation_threshold = legend_orientation_threshold + + @property + def adaptive_zoom_hide(self): + """Get the adaptive_zoom_hide of this LinePlusSingleStatProperties. + + :return: The adaptive_zoom_hide of this LinePlusSingleStatProperties. + :rtype: bool + """ # noqa: E501 + return self._adaptive_zoom_hide + + @adaptive_zoom_hide.setter + def adaptive_zoom_hide(self, adaptive_zoom_hide): + """Set the adaptive_zoom_hide of this LinePlusSingleStatProperties. + + :param adaptive_zoom_hide: The adaptive_zoom_hide of this LinePlusSingleStatProperties. + :type: bool + """ # noqa: E501 + self._adaptive_zoom_hide = adaptive_zoom_hide + + @property + def time_format(self): + """Get the time_format of this LinePlusSingleStatProperties. + + :return: The time_format of this LinePlusSingleStatProperties. + :rtype: str + """ # noqa: E501 + return self._time_format + + @time_format.setter + def time_format(self, time_format): + """Set the time_format of this LinePlusSingleStatProperties. + + :param time_format: The time_format of this LinePlusSingleStatProperties. + :type: str + """ # noqa: E501 + self._time_format = time_format + + @property + def type(self): + """Get the type of this LinePlusSingleStatProperties. + + :return: The type of this LinePlusSingleStatProperties. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this LinePlusSingleStatProperties. + + :param type: The type of this LinePlusSingleStatProperties. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def queries(self): + """Get the queries of this LinePlusSingleStatProperties. + + :return: The queries of this LinePlusSingleStatProperties. + :rtype: list[DashboardQuery] + """ # noqa: E501 + return self._queries + + @queries.setter + def queries(self, queries): + """Set the queries of this LinePlusSingleStatProperties. + + :param queries: The queries of this LinePlusSingleStatProperties. + :type: list[DashboardQuery] + """ # noqa: E501 + if queries is None: + raise ValueError("Invalid value for `queries`, must not be `None`") # noqa: E501 + self._queries = queries + + @property + def colors(self): + """Get the colors of this LinePlusSingleStatProperties. + + Colors define color encoding of data into a visualization + + :return: The colors of this LinePlusSingleStatProperties. + :rtype: list[DashboardColor] + """ # noqa: E501 + return self._colors + + @colors.setter + def colors(self, colors): + """Set the colors of this LinePlusSingleStatProperties. + + Colors define color encoding of data into a visualization + + :param colors: The colors of this LinePlusSingleStatProperties. + :type: list[DashboardColor] + """ # noqa: E501 + if colors is None: + raise ValueError("Invalid value for `colors`, must not be `None`") # noqa: E501 + self._colors = colors + + @property + def shape(self): + """Get the shape of this LinePlusSingleStatProperties. + + :return: The shape of this LinePlusSingleStatProperties. + :rtype: str + """ # noqa: E501 + return self._shape + + @shape.setter + def shape(self, shape): + """Set the shape of this LinePlusSingleStatProperties. + + :param shape: The shape of this LinePlusSingleStatProperties. + :type: str + """ # noqa: E501 + if shape is None: + raise ValueError("Invalid value for `shape`, must not be `None`") # noqa: E501 + self._shape = shape + + @property + def note(self): + """Get the note of this LinePlusSingleStatProperties. + + :return: The note of this LinePlusSingleStatProperties. + :rtype: str + """ # noqa: E501 + return self._note + + @note.setter + def note(self, note): + """Set the note of this LinePlusSingleStatProperties. + + :param note: The note of this LinePlusSingleStatProperties. + :type: str + """ # noqa: E501 + if note is None: + raise ValueError("Invalid value for `note`, must not be `None`") # noqa: E501 + self._note = note + + @property + def show_note_when_empty(self): + """Get the show_note_when_empty of this LinePlusSingleStatProperties. + + If true, will display note when empty + + :return: The show_note_when_empty of this LinePlusSingleStatProperties. + :rtype: bool + """ # noqa: E501 + return self._show_note_when_empty + + @show_note_when_empty.setter + def show_note_when_empty(self, show_note_when_empty): + """Set the show_note_when_empty of this LinePlusSingleStatProperties. + + If true, will display note when empty + + :param show_note_when_empty: The show_note_when_empty of this LinePlusSingleStatProperties. + :type: bool + """ # noqa: E501 + if show_note_when_empty is None: + raise ValueError("Invalid value for `show_note_when_empty`, must not be `None`") # noqa: E501 + self._show_note_when_empty = show_note_when_empty + + @property + def axes(self): + """Get the axes of this LinePlusSingleStatProperties. + + :return: The axes of this LinePlusSingleStatProperties. + :rtype: Axes + """ # noqa: E501 + return self._axes + + @axes.setter + def axes(self, axes): + """Set the axes of this LinePlusSingleStatProperties. + + :param axes: The axes of this LinePlusSingleStatProperties. + :type: Axes + """ # noqa: E501 + if axes is None: + raise ValueError("Invalid value for `axes`, must not be `None`") # noqa: E501 + self._axes = axes + + @property + def static_legend(self): + """Get the static_legend of this LinePlusSingleStatProperties. + + :return: The static_legend of this LinePlusSingleStatProperties. + :rtype: StaticLegend + """ # noqa: E501 + return self._static_legend + + @static_legend.setter + def static_legend(self, static_legend): + """Set the static_legend of this LinePlusSingleStatProperties. + + :param static_legend: The static_legend of this LinePlusSingleStatProperties. + :type: StaticLegend + """ # noqa: E501 + self._static_legend = static_legend + + @property + def x_column(self): + """Get the x_column of this LinePlusSingleStatProperties. + + :return: The x_column of this LinePlusSingleStatProperties. + :rtype: str + """ # noqa: E501 + return self._x_column + + @x_column.setter + def x_column(self, x_column): + """Set the x_column of this LinePlusSingleStatProperties. + + :param x_column: The x_column of this LinePlusSingleStatProperties. + :type: str + """ # noqa: E501 + self._x_column = x_column + + @property + def generate_x_axis_ticks(self): + """Get the generate_x_axis_ticks of this LinePlusSingleStatProperties. + + :return: The generate_x_axis_ticks of this LinePlusSingleStatProperties. + :rtype: list[str] + """ # noqa: E501 + return self._generate_x_axis_ticks + + @generate_x_axis_ticks.setter + def generate_x_axis_ticks(self, generate_x_axis_ticks): + """Set the generate_x_axis_ticks of this LinePlusSingleStatProperties. + + :param generate_x_axis_ticks: The generate_x_axis_ticks of this LinePlusSingleStatProperties. + :type: list[str] + """ # noqa: E501 + self._generate_x_axis_ticks = generate_x_axis_ticks + + @property + def x_total_ticks(self): + """Get the x_total_ticks of this LinePlusSingleStatProperties. + + :return: The x_total_ticks of this LinePlusSingleStatProperties. + :rtype: int + """ # noqa: E501 + return self._x_total_ticks + + @x_total_ticks.setter + def x_total_ticks(self, x_total_ticks): + """Set the x_total_ticks of this LinePlusSingleStatProperties. + + :param x_total_ticks: The x_total_ticks of this LinePlusSingleStatProperties. + :type: int + """ # noqa: E501 + self._x_total_ticks = x_total_ticks + + @property + def x_tick_start(self): + """Get the x_tick_start of this LinePlusSingleStatProperties. + + :return: The x_tick_start of this LinePlusSingleStatProperties. + :rtype: float + """ # noqa: E501 + return self._x_tick_start + + @x_tick_start.setter + def x_tick_start(self, x_tick_start): + """Set the x_tick_start of this LinePlusSingleStatProperties. + + :param x_tick_start: The x_tick_start of this LinePlusSingleStatProperties. + :type: float + """ # noqa: E501 + self._x_tick_start = x_tick_start + + @property + def x_tick_step(self): + """Get the x_tick_step of this LinePlusSingleStatProperties. + + :return: The x_tick_step of this LinePlusSingleStatProperties. + :rtype: float + """ # noqa: E501 + return self._x_tick_step + + @x_tick_step.setter + def x_tick_step(self, x_tick_step): + """Set the x_tick_step of this LinePlusSingleStatProperties. + + :param x_tick_step: The x_tick_step of this LinePlusSingleStatProperties. + :type: float + """ # noqa: E501 + self._x_tick_step = x_tick_step + + @property + def y_column(self): + """Get the y_column of this LinePlusSingleStatProperties. + + :return: The y_column of this LinePlusSingleStatProperties. + :rtype: str + """ # noqa: E501 + return self._y_column + + @y_column.setter + def y_column(self, y_column): + """Set the y_column of this LinePlusSingleStatProperties. + + :param y_column: The y_column of this LinePlusSingleStatProperties. + :type: str + """ # noqa: E501 + self._y_column = y_column + + @property + def generate_y_axis_ticks(self): + """Get the generate_y_axis_ticks of this LinePlusSingleStatProperties. + + :return: The generate_y_axis_ticks of this LinePlusSingleStatProperties. + :rtype: list[str] + """ # noqa: E501 + return self._generate_y_axis_ticks + + @generate_y_axis_ticks.setter + def generate_y_axis_ticks(self, generate_y_axis_ticks): + """Set the generate_y_axis_ticks of this LinePlusSingleStatProperties. + + :param generate_y_axis_ticks: The generate_y_axis_ticks of this LinePlusSingleStatProperties. + :type: list[str] + """ # noqa: E501 + self._generate_y_axis_ticks = generate_y_axis_ticks + + @property + def y_total_ticks(self): + """Get the y_total_ticks of this LinePlusSingleStatProperties. + + :return: The y_total_ticks of this LinePlusSingleStatProperties. + :rtype: int + """ # noqa: E501 + return self._y_total_ticks + + @y_total_ticks.setter + def y_total_ticks(self, y_total_ticks): + """Set the y_total_ticks of this LinePlusSingleStatProperties. + + :param y_total_ticks: The y_total_ticks of this LinePlusSingleStatProperties. + :type: int + """ # noqa: E501 + self._y_total_ticks = y_total_ticks + + @property + def y_tick_start(self): + """Get the y_tick_start of this LinePlusSingleStatProperties. + + :return: The y_tick_start of this LinePlusSingleStatProperties. + :rtype: float + """ # noqa: E501 + return self._y_tick_start + + @y_tick_start.setter + def y_tick_start(self, y_tick_start): + """Set the y_tick_start of this LinePlusSingleStatProperties. + + :param y_tick_start: The y_tick_start of this LinePlusSingleStatProperties. + :type: float + """ # noqa: E501 + self._y_tick_start = y_tick_start + + @property + def y_tick_step(self): + """Get the y_tick_step of this LinePlusSingleStatProperties. + + :return: The y_tick_step of this LinePlusSingleStatProperties. + :rtype: float + """ # noqa: E501 + return self._y_tick_step + + @y_tick_step.setter + def y_tick_step(self, y_tick_step): + """Set the y_tick_step of this LinePlusSingleStatProperties. + + :param y_tick_step: The y_tick_step of this LinePlusSingleStatProperties. + :type: float + """ # noqa: E501 + self._y_tick_step = y_tick_step + + @property + def shade_below(self): + """Get the shade_below of this LinePlusSingleStatProperties. + + :return: The shade_below of this LinePlusSingleStatProperties. + :rtype: bool + """ # noqa: E501 + return self._shade_below + + @shade_below.setter + def shade_below(self, shade_below): + """Set the shade_below of this LinePlusSingleStatProperties. + + :param shade_below: The shade_below of this LinePlusSingleStatProperties. + :type: bool + """ # noqa: E501 + self._shade_below = shade_below + + @property + def hover_dimension(self): + """Get the hover_dimension of this LinePlusSingleStatProperties. + + :return: The hover_dimension of this LinePlusSingleStatProperties. + :rtype: str + """ # noqa: E501 + return self._hover_dimension + + @hover_dimension.setter + def hover_dimension(self, hover_dimension): + """Set the hover_dimension of this LinePlusSingleStatProperties. + + :param hover_dimension: The hover_dimension of this LinePlusSingleStatProperties. + :type: str + """ # noqa: E501 + self._hover_dimension = hover_dimension + + @property + def position(self): + """Get the position of this LinePlusSingleStatProperties. + + :return: The position of this LinePlusSingleStatProperties. + :rtype: str + """ # noqa: E501 + return self._position + + @position.setter + def position(self, position): + """Set the position of this LinePlusSingleStatProperties. + + :param position: The position of this LinePlusSingleStatProperties. + :type: str + """ # noqa: E501 + if position is None: + raise ValueError("Invalid value for `position`, must not be `None`") # noqa: E501 + self._position = position + + @property + def prefix(self): + """Get the prefix of this LinePlusSingleStatProperties. + + :return: The prefix of this LinePlusSingleStatProperties. + :rtype: str + """ # noqa: E501 + return self._prefix + + @prefix.setter + def prefix(self, prefix): + """Set the prefix of this LinePlusSingleStatProperties. + + :param prefix: The prefix of this LinePlusSingleStatProperties. + :type: str + """ # noqa: E501 + if prefix is None: + raise ValueError("Invalid value for `prefix`, must not be `None`") # noqa: E501 + self._prefix = prefix + + @property + def suffix(self): + """Get the suffix of this LinePlusSingleStatProperties. + + :return: The suffix of this LinePlusSingleStatProperties. + :rtype: str + """ # noqa: E501 + return self._suffix + + @suffix.setter + def suffix(self, suffix): + """Set the suffix of this LinePlusSingleStatProperties. + + :param suffix: The suffix of this LinePlusSingleStatProperties. + :type: str + """ # noqa: E501 + if suffix is None: + raise ValueError("Invalid value for `suffix`, must not be `None`") # noqa: E501 + self._suffix = suffix + + @property + def decimal_places(self): + """Get the decimal_places of this LinePlusSingleStatProperties. + + :return: The decimal_places of this LinePlusSingleStatProperties. + :rtype: DecimalPlaces + """ # noqa: E501 + return self._decimal_places + + @decimal_places.setter + def decimal_places(self, decimal_places): + """Set the decimal_places of this LinePlusSingleStatProperties. + + :param decimal_places: The decimal_places of this LinePlusSingleStatProperties. + :type: DecimalPlaces + """ # noqa: E501 + if decimal_places is None: + raise ValueError("Invalid value for `decimal_places`, must not be `None`") # noqa: E501 + self._decimal_places = decimal_places + + @property + def legend_colorize_rows(self): + """Get the legend_colorize_rows of this LinePlusSingleStatProperties. + + :return: The legend_colorize_rows of this LinePlusSingleStatProperties. + :rtype: bool + """ # noqa: E501 + return self._legend_colorize_rows + + @legend_colorize_rows.setter + def legend_colorize_rows(self, legend_colorize_rows): + """Set the legend_colorize_rows of this LinePlusSingleStatProperties. + + :param legend_colorize_rows: The legend_colorize_rows of this LinePlusSingleStatProperties. + :type: bool + """ # noqa: E501 + self._legend_colorize_rows = legend_colorize_rows + + @property + def legend_hide(self): + """Get the legend_hide of this LinePlusSingleStatProperties. + + :return: The legend_hide of this LinePlusSingleStatProperties. + :rtype: bool + """ # noqa: E501 + return self._legend_hide + + @legend_hide.setter + def legend_hide(self, legend_hide): + """Set the legend_hide of this LinePlusSingleStatProperties. + + :param legend_hide: The legend_hide of this LinePlusSingleStatProperties. + :type: bool + """ # noqa: E501 + self._legend_hide = legend_hide + + @property + def legend_opacity(self): + """Get the legend_opacity of this LinePlusSingleStatProperties. + + :return: The legend_opacity of this LinePlusSingleStatProperties. + :rtype: float + """ # noqa: E501 + return self._legend_opacity + + @legend_opacity.setter + def legend_opacity(self, legend_opacity): + """Set the legend_opacity of this LinePlusSingleStatProperties. + + :param legend_opacity: The legend_opacity of this LinePlusSingleStatProperties. + :type: float + """ # noqa: E501 + self._legend_opacity = legend_opacity + + @property + def legend_orientation_threshold(self): + """Get the legend_orientation_threshold of this LinePlusSingleStatProperties. + + :return: The legend_orientation_threshold of this LinePlusSingleStatProperties. + :rtype: int + """ # noqa: E501 + return self._legend_orientation_threshold + + @legend_orientation_threshold.setter + def legend_orientation_threshold(self, legend_orientation_threshold): + """Set the legend_orientation_threshold of this LinePlusSingleStatProperties. + + :param legend_orientation_threshold: The legend_orientation_threshold of this LinePlusSingleStatProperties. + :type: int + """ # noqa: E501 + self._legend_orientation_threshold = legend_orientation_threshold + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, LinePlusSingleStatProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/line_protocol_error.py b/frogpilot/third_party/influxdb_client/domain/line_protocol_error.py new file mode 100644 index 000000000..2050a8b28 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/line_protocol_error.py @@ -0,0 +1,220 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class LineProtocolError(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'code': 'str', + 'message': 'str', + 'op': 'str', + 'err': 'str', + 'line': 'int' + } + + attribute_map = { + 'code': 'code', + 'message': 'message', + 'op': 'op', + 'err': 'err', + 'line': 'line' + } + + def __init__(self, code=None, message=None, op=None, err=None, line=None): # noqa: E501,D401,D403 + """LineProtocolError - a model defined in OpenAPI.""" # noqa: E501 + self._code = None + self._message = None + self._op = None + self._err = None + self._line = None + self.discriminator = None + + self.code = code + if message is not None: + self.message = message + if op is not None: + self.op = op + if err is not None: + self.err = err + if line is not None: + self.line = line + + @property + def code(self): + """Get the code of this LineProtocolError. + + Code is the machine-readable error code. + + :return: The code of this LineProtocolError. + :rtype: str + """ # noqa: E501 + return self._code + + @code.setter + def code(self, code): + """Set the code of this LineProtocolError. + + Code is the machine-readable error code. + + :param code: The code of this LineProtocolError. + :type: str + """ # noqa: E501 + if code is None: + raise ValueError("Invalid value for `code`, must not be `None`") # noqa: E501 + self._code = code + + @property + def message(self): + """Get the message of this LineProtocolError. + + Human-readable message. + + :return: The message of this LineProtocolError. + :rtype: str + """ # noqa: E501 + return self._message + + @message.setter + def message(self, message): + """Set the message of this LineProtocolError. + + Human-readable message. + + :param message: The message of this LineProtocolError. + :type: str + """ # noqa: E501 + self._message = message + + @property + def op(self): + """Get the op of this LineProtocolError. + + Describes the logical code operation when the error occurred. Useful for debugging. + + :return: The op of this LineProtocolError. + :rtype: str + """ # noqa: E501 + return self._op + + @op.setter + def op(self, op): + """Set the op of this LineProtocolError. + + Describes the logical code operation when the error occurred. Useful for debugging. + + :param op: The op of this LineProtocolError. + :type: str + """ # noqa: E501 + self._op = op + + @property + def err(self): + """Get the err of this LineProtocolError. + + Stack of errors that occurred during processing of the request. Useful for debugging. + + :return: The err of this LineProtocolError. + :rtype: str + """ # noqa: E501 + return self._err + + @err.setter + def err(self, err): + """Set the err of this LineProtocolError. + + Stack of errors that occurred during processing of the request. Useful for debugging. + + :param err: The err of this LineProtocolError. + :type: str + """ # noqa: E501 + self._err = err + + @property + def line(self): + """Get the line of this LineProtocolError. + + First line in the request body that contains malformed data. + + :return: The line of this LineProtocolError. + :rtype: int + """ # noqa: E501 + return self._line + + @line.setter + def line(self, line): + """Set the line of this LineProtocolError. + + First line in the request body that contains malformed data. + + :param line: The line of this LineProtocolError. + :type: int + """ # noqa: E501 + self._line = line + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, LineProtocolError): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/line_protocol_length_error.py b/frogpilot/third_party/influxdb_client/domain/line_protocol_length_error.py new file mode 100644 index 000000000..d40aa6ae4 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/line_protocol_length_error.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class LineProtocolLengthError(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'code': 'str', + 'message': 'str' + } + + attribute_map = { + 'code': 'code', + 'message': 'message' + } + + def __init__(self, code=None, message=None): # noqa: E501,D401,D403 + """LineProtocolLengthError - a model defined in OpenAPI.""" # noqa: E501 + self._code = None + self._message = None + self.discriminator = None + + self.code = code + self.message = message + + @property + def code(self): + """Get the code of this LineProtocolLengthError. + + Code is the machine-readable error code. + + :return: The code of this LineProtocolLengthError. + :rtype: str + """ # noqa: E501 + return self._code + + @code.setter + def code(self, code): + """Set the code of this LineProtocolLengthError. + + Code is the machine-readable error code. + + :param code: The code of this LineProtocolLengthError. + :type: str + """ # noqa: E501 + if code is None: + raise ValueError("Invalid value for `code`, must not be `None`") # noqa: E501 + self._code = code + + @property + def message(self): + """Get the message of this LineProtocolLengthError. + + Human-readable message. + + :return: The message of this LineProtocolLengthError. + :rtype: str + """ # noqa: E501 + return self._message + + @message.setter + def message(self, message): + """Set the message of this LineProtocolLengthError. + + Human-readable message. + + :param message: The message of this LineProtocolLengthError. + :type: str + """ # noqa: E501 + if message is None: + raise ValueError("Invalid value for `message`, must not be `None`") # noqa: E501 + self._message = message + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, LineProtocolLengthError): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/links.py b/frogpilot/third_party/influxdb_client/domain/links.py new file mode 100644 index 000000000..d9844c8b0 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/links.py @@ -0,0 +1,166 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Links(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'next': 'str', + '_self': 'str', + 'prev': 'str' + } + + attribute_map = { + 'next': 'next', + '_self': 'self', + 'prev': 'prev' + } + + def __init__(self, next=None, _self=None, prev=None): # noqa: E501,D401,D403 + """Links - a model defined in OpenAPI.""" # noqa: E501 + self._next = None + self.__self = None + self._prev = None + self.discriminator = None + + if next is not None: + self.next = next + self._self = _self + if prev is not None: + self.prev = prev + + @property + def next(self): + """Get the next of this Links. + + URI of resource. + + :return: The next of this Links. + :rtype: str + """ # noqa: E501 + return self._next + + @next.setter + def next(self, next): + """Set the next of this Links. + + URI of resource. + + :param next: The next of this Links. + :type: str + """ # noqa: E501 + self._next = next + + @property + def _self(self): + """Get the _self of this Links. + + URI of resource. + + :return: The _self of this Links. + :rtype: str + """ # noqa: E501 + return self.__self + + @_self.setter + def _self(self, _self): + """Set the _self of this Links. + + URI of resource. + + :param _self: The _self of this Links. + :type: str + """ # noqa: E501 + if _self is None: + raise ValueError("Invalid value for `_self`, must not be `None`") # noqa: E501 + self.__self = _self + + @property + def prev(self): + """Get the prev of this Links. + + URI of resource. + + :return: The prev of this Links. + :rtype: str + """ # noqa: E501 + return self._prev + + @prev.setter + def prev(self, prev): + """Set the prev of this Links. + + URI of resource. + + :param prev: The prev of this Links. + :type: str + """ # noqa: E501 + self._prev = prev + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Links): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/list_stacks_response.py b/frogpilot/third_party/influxdb_client/domain/list_stacks_response.py new file mode 100644 index 000000000..084e34024 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/list_stacks_response.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ListStacksResponse(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'stacks': 'list[Stack]' + } + + attribute_map = { + 'stacks': 'stacks' + } + + def __init__(self, stacks=None): # noqa: E501,D401,D403 + """ListStacksResponse - a model defined in OpenAPI.""" # noqa: E501 + self._stacks = None + self.discriminator = None + + if stacks is not None: + self.stacks = stacks + + @property + def stacks(self): + """Get the stacks of this ListStacksResponse. + + :return: The stacks of this ListStacksResponse. + :rtype: list[Stack] + """ # noqa: E501 + return self._stacks + + @stacks.setter + def stacks(self, stacks): + """Set the stacks of this ListStacksResponse. + + :param stacks: The stacks of this ListStacksResponse. + :type: list[Stack] + """ # noqa: E501 + self._stacks = stacks + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ListStacksResponse): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/log_event.py b/frogpilot/third_party/influxdb_client/domain/log_event.py new file mode 100644 index 000000000..336736e82 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/log_event.py @@ -0,0 +1,165 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class LogEvent(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'time': 'datetime', + 'message': 'str', + 'run_id': 'str' + } + + attribute_map = { + 'time': 'time', + 'message': 'message', + 'run_id': 'runID' + } + + def __init__(self, time=None, message=None, run_id=None): # noqa: E501,D401,D403 + """LogEvent - a model defined in OpenAPI.""" # noqa: E501 + self._time = None + self._message = None + self._run_id = None + self.discriminator = None + + if time is not None: + self.time = time + if message is not None: + self.message = message + if run_id is not None: + self.run_id = run_id + + @property + def time(self): + """Get the time of this LogEvent. + + The time ([RFC3339Nano date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339nano-timestamp)) that the event occurred. + + :return: The time of this LogEvent. + :rtype: datetime + """ # noqa: E501 + return self._time + + @time.setter + def time(self, time): + """Set the time of this LogEvent. + + The time ([RFC3339Nano date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339nano-timestamp)) that the event occurred. + + :param time: The time of this LogEvent. + :type: datetime + """ # noqa: E501 + self._time = time + + @property + def message(self): + """Get the message of this LogEvent. + + A description of the event that occurred. + + :return: The message of this LogEvent. + :rtype: str + """ # noqa: E501 + return self._message + + @message.setter + def message(self, message): + """Set the message of this LogEvent. + + A description of the event that occurred. + + :param message: The message of this LogEvent. + :type: str + """ # noqa: E501 + self._message = message + + @property + def run_id(self): + """Get the run_id of this LogEvent. + + The ID of the task run that generated the event. + + :return: The run_id of this LogEvent. + :rtype: str + """ # noqa: E501 + return self._run_id + + @run_id.setter + def run_id(self, run_id): + """Set the run_id of this LogEvent. + + The ID of the task run that generated the event. + + :param run_id: The run_id of this LogEvent. + :type: str + """ # noqa: E501 + self._run_id = run_id + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, LogEvent): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/logical_expression.py b/frogpilot/third_party/influxdb_client/domain/logical_expression.py new file mode 100644 index 000000000..25a1aa9b1 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/logical_expression.py @@ -0,0 +1,184 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class LogicalExpression(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'operator': 'str', + 'left': 'Expression', + 'right': 'Expression' + } + + attribute_map = { + 'type': 'type', + 'operator': 'operator', + 'left': 'left', + 'right': 'right' + } + + def __init__(self, type=None, operator=None, left=None, right=None): # noqa: E501,D401,D403 + """LogicalExpression - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._operator = None + self._left = None + self._right = None + self.discriminator = None + + if type is not None: + self.type = type + if operator is not None: + self.operator = operator + if left is not None: + self.left = left + if right is not None: + self.right = right + + @property + def type(self): + """Get the type of this LogicalExpression. + + Type of AST node + + :return: The type of this LogicalExpression. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this LogicalExpression. + + Type of AST node + + :param type: The type of this LogicalExpression. + :type: str + """ # noqa: E501 + self._type = type + + @property + def operator(self): + """Get the operator of this LogicalExpression. + + :return: The operator of this LogicalExpression. + :rtype: str + """ # noqa: E501 + return self._operator + + @operator.setter + def operator(self, operator): + """Set the operator of this LogicalExpression. + + :param operator: The operator of this LogicalExpression. + :type: str + """ # noqa: E501 + self._operator = operator + + @property + def left(self): + """Get the left of this LogicalExpression. + + :return: The left of this LogicalExpression. + :rtype: Expression + """ # noqa: E501 + return self._left + + @left.setter + def left(self, left): + """Set the left of this LogicalExpression. + + :param left: The left of this LogicalExpression. + :type: Expression + """ # noqa: E501 + self._left = left + + @property + def right(self): + """Get the right of this LogicalExpression. + + :return: The right of this LogicalExpression. + :rtype: Expression + """ # noqa: E501 + return self._right + + @right.setter + def right(self, right): + """Set the right of this LogicalExpression. + + :param right: The right of this LogicalExpression. + :type: Expression + """ # noqa: E501 + self._right = right + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, LogicalExpression): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/logs.py b/frogpilot/third_party/influxdb_client/domain/logs.py new file mode 100644 index 000000000..0dd2acfdc --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/logs.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Logs(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'events': 'list[LogEvent]' + } + + attribute_map = { + 'events': 'events' + } + + def __init__(self, events=None): # noqa: E501,D401,D403 + """Logs - a model defined in OpenAPI.""" # noqa: E501 + self._events = None + self.discriminator = None + + if events is not None: + self.events = events + + @property + def events(self): + """Get the events of this Logs. + + :return: The events of this Logs. + :rtype: list[LogEvent] + """ # noqa: E501 + return self._events + + @events.setter + def events(self, events): + """Set the events of this Logs. + + :param events: The events of this Logs. + :type: list[LogEvent] + """ # noqa: E501 + self._events = events + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Logs): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/map_variable_properties.py b/frogpilot/third_party/influxdb_client/domain/map_variable_properties.py new file mode 100644 index 000000000..8648d9cb9 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/map_variable_properties.py @@ -0,0 +1,134 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.variable_properties import VariableProperties + + +class MapVariableProperties(VariableProperties): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'values': 'dict(str, str)' + } + + attribute_map = { + 'type': 'type', + 'values': 'values' + } + + def __init__(self, type=None, values=None): # noqa: E501,D401,D403 + """MapVariableProperties - a model defined in OpenAPI.""" # noqa: E501 + VariableProperties.__init__(self) # noqa: E501 + + self._type = None + self._values = None + self.discriminator = None + + if type is not None: + self.type = type + if values is not None: + self.values = values + + @property + def type(self): + """Get the type of this MapVariableProperties. + + :return: The type of this MapVariableProperties. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this MapVariableProperties. + + :param type: The type of this MapVariableProperties. + :type: str + """ # noqa: E501 + self._type = type + + @property + def values(self): + """Get the values of this MapVariableProperties. + + :return: The values of this MapVariableProperties. + :rtype: dict(str, str) + """ # noqa: E501 + return self._values + + @values.setter + def values(self, values): + """Set the values of this MapVariableProperties. + + :param values: The values of this MapVariableProperties. + :type: dict(str, str) + """ # noqa: E501 + self._values = values + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, MapVariableProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/markdown_view_properties.py b/frogpilot/third_party/influxdb_client/domain/markdown_view_properties.py new file mode 100644 index 000000000..cc797f06d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/markdown_view_properties.py @@ -0,0 +1,160 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.view_properties import ViewProperties + + +class MarkdownViewProperties(ViewProperties): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'shape': 'str', + 'note': 'str' + } + + attribute_map = { + 'type': 'type', + 'shape': 'shape', + 'note': 'note' + } + + def __init__(self, type=None, shape=None, note=None): # noqa: E501,D401,D403 + """MarkdownViewProperties - a model defined in OpenAPI.""" # noqa: E501 + ViewProperties.__init__(self) # noqa: E501 + + self._type = None + self._shape = None + self._note = None + self.discriminator = None + + self.type = type + self.shape = shape + self.note = note + + @property + def type(self): + """Get the type of this MarkdownViewProperties. + + :return: The type of this MarkdownViewProperties. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this MarkdownViewProperties. + + :param type: The type of this MarkdownViewProperties. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def shape(self): + """Get the shape of this MarkdownViewProperties. + + :return: The shape of this MarkdownViewProperties. + :rtype: str + """ # noqa: E501 + return self._shape + + @shape.setter + def shape(self, shape): + """Set the shape of this MarkdownViewProperties. + + :param shape: The shape of this MarkdownViewProperties. + :type: str + """ # noqa: E501 + if shape is None: + raise ValueError("Invalid value for `shape`, must not be `None`") # noqa: E501 + self._shape = shape + + @property + def note(self): + """Get the note of this MarkdownViewProperties. + + :return: The note of this MarkdownViewProperties. + :rtype: str + """ # noqa: E501 + return self._note + + @note.setter + def note(self, note): + """Set the note of this MarkdownViewProperties. + + :param note: The note of this MarkdownViewProperties. + :type: str + """ # noqa: E501 + if note is None: + raise ValueError("Invalid value for `note`, must not be `None`") # noqa: E501 + self._note = note + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, MarkdownViewProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/measurement_schema.py b/frogpilot/third_party/influxdb_client/domain/measurement_schema.py new file mode 100644 index 000000000..f2a48faa1 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/measurement_schema.py @@ -0,0 +1,262 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class MeasurementSchema(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'org_id': 'str', + 'bucket_id': 'str', + 'name': 'str', + 'columns': 'list[MeasurementSchemaColumn]', + 'created_at': 'datetime', + 'updated_at': 'datetime' + } + + attribute_map = { + 'id': 'id', + 'org_id': 'orgID', + 'bucket_id': 'bucketID', + 'name': 'name', + 'columns': 'columns', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt' + } + + def __init__(self, id=None, org_id=None, bucket_id=None, name=None, columns=None, created_at=None, updated_at=None): # noqa: E501,D401,D403 + """MeasurementSchema - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._org_id = None + self._bucket_id = None + self._name = None + self._columns = None + self._created_at = None + self._updated_at = None + self.discriminator = None + + self.id = id + if org_id is not None: + self.org_id = org_id + if bucket_id is not None: + self.bucket_id = bucket_id + self.name = name + self.columns = columns + self.created_at = created_at + self.updated_at = updated_at + + @property + def id(self): + """Get the id of this MeasurementSchema. + + :return: The id of this MeasurementSchema. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this MeasurementSchema. + + :param id: The id of this MeasurementSchema. + :type: str + """ # noqa: E501 + if id is None: + raise ValueError("Invalid value for `id`, must not be `None`") # noqa: E501 + self._id = id + + @property + def org_id(self): + """Get the org_id of this MeasurementSchema. + + The ID of the organization. + + :return: The org_id of this MeasurementSchema. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this MeasurementSchema. + + The ID of the organization. + + :param org_id: The org_id of this MeasurementSchema. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def bucket_id(self): + """Get the bucket_id of this MeasurementSchema. + + The ID of the bucket that the measurement schema is associated with. + + :return: The bucket_id of this MeasurementSchema. + :rtype: str + """ # noqa: E501 + return self._bucket_id + + @bucket_id.setter + def bucket_id(self, bucket_id): + """Set the bucket_id of this MeasurementSchema. + + The ID of the bucket that the measurement schema is associated with. + + :param bucket_id: The bucket_id of this MeasurementSchema. + :type: str + """ # noqa: E501 + self._bucket_id = bucket_id + + @property + def name(self): + """Get the name of this MeasurementSchema. + + :return: The name of this MeasurementSchema. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this MeasurementSchema. + + :param name: The name of this MeasurementSchema. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def columns(self): + """Get the columns of this MeasurementSchema. + + Ordered collection of column definitions. + + :return: The columns of this MeasurementSchema. + :rtype: list[MeasurementSchemaColumn] + """ # noqa: E501 + return self._columns + + @columns.setter + def columns(self, columns): + """Set the columns of this MeasurementSchema. + + Ordered collection of column definitions. + + :param columns: The columns of this MeasurementSchema. + :type: list[MeasurementSchemaColumn] + """ # noqa: E501 + if columns is None: + raise ValueError("Invalid value for `columns`, must not be `None`") # noqa: E501 + self._columns = columns + + @property + def created_at(self): + """Get the created_at of this MeasurementSchema. + + :return: The created_at of this MeasurementSchema. + :rtype: datetime + """ # noqa: E501 + return self._created_at + + @created_at.setter + def created_at(self, created_at): + """Set the created_at of this MeasurementSchema. + + :param created_at: The created_at of this MeasurementSchema. + :type: datetime + """ # noqa: E501 + if created_at is None: + raise ValueError("Invalid value for `created_at`, must not be `None`") # noqa: E501 + self._created_at = created_at + + @property + def updated_at(self): + """Get the updated_at of this MeasurementSchema. + + :return: The updated_at of this MeasurementSchema. + :rtype: datetime + """ # noqa: E501 + return self._updated_at + + @updated_at.setter + def updated_at(self, updated_at): + """Set the updated_at of this MeasurementSchema. + + :param updated_at: The updated_at of this MeasurementSchema. + :type: datetime + """ # noqa: E501 + if updated_at is None: + raise ValueError("Invalid value for `updated_at`, must not be `None`") # noqa: E501 + self._updated_at = updated_at + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, MeasurementSchema): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/measurement_schema_column.py b/frogpilot/third_party/influxdb_client/domain/measurement_schema_column.py new file mode 100644 index 000000000..79ee3845f --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/measurement_schema_column.py @@ -0,0 +1,155 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class MeasurementSchemaColumn(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'type': 'ColumnSemanticType', + 'data_type': 'ColumnDataType' + } + + attribute_map = { + 'name': 'name', + 'type': 'type', + 'data_type': 'dataType' + } + + def __init__(self, name=None, type=None, data_type=None): # noqa: E501,D401,D403 + """MeasurementSchemaColumn - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._type = None + self._data_type = None + self.discriminator = None + + self.name = name + self.type = type + if data_type is not None: + self.data_type = data_type + + @property + def name(self): + """Get the name of this MeasurementSchemaColumn. + + :return: The name of this MeasurementSchemaColumn. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this MeasurementSchemaColumn. + + :param name: The name of this MeasurementSchemaColumn. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def type(self): + """Get the type of this MeasurementSchemaColumn. + + :return: The type of this MeasurementSchemaColumn. + :rtype: ColumnSemanticType + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this MeasurementSchemaColumn. + + :param type: The type of this MeasurementSchemaColumn. + :type: ColumnSemanticType + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def data_type(self): + """Get the data_type of this MeasurementSchemaColumn. + + :return: The data_type of this MeasurementSchemaColumn. + :rtype: ColumnDataType + """ # noqa: E501 + return self._data_type + + @data_type.setter + def data_type(self, data_type): + """Set the data_type of this MeasurementSchemaColumn. + + :param data_type: The data_type of this MeasurementSchemaColumn. + :type: ColumnDataType + """ # noqa: E501 + self._data_type = data_type + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, MeasurementSchemaColumn): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/measurement_schema_create_request.py b/frogpilot/third_party/influxdb_client/domain/measurement_schema_create_request.py new file mode 100644 index 000000000..1308a2daa --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/measurement_schema_create_request.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class MeasurementSchemaCreateRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'columns': 'list[MeasurementSchemaColumn]' + } + + attribute_map = { + 'name': 'name', + 'columns': 'columns' + } + + def __init__(self, name=None, columns=None): # noqa: E501,D401,D403 + """MeasurementSchemaCreateRequest - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._columns = None + self.discriminator = None + + self.name = name + self.columns = columns + + @property + def name(self): + """Get the name of this MeasurementSchemaCreateRequest. + + The [measurement](https://docs.influxdata.com/influxdb/cloud/reference/glossary/#measurement) name. + + :return: The name of this MeasurementSchemaCreateRequest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this MeasurementSchemaCreateRequest. + + The [measurement](https://docs.influxdata.com/influxdb/cloud/reference/glossary/#measurement) name. + + :param name: The name of this MeasurementSchemaCreateRequest. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def columns(self): + """Get the columns of this MeasurementSchemaCreateRequest. + + Ordered collection of column definitions. + + :return: The columns of this MeasurementSchemaCreateRequest. + :rtype: list[MeasurementSchemaColumn] + """ # noqa: E501 + return self._columns + + @columns.setter + def columns(self, columns): + """Set the columns of this MeasurementSchemaCreateRequest. + + Ordered collection of column definitions. + + :param columns: The columns of this MeasurementSchemaCreateRequest. + :type: list[MeasurementSchemaColumn] + """ # noqa: E501 + if columns is None: + raise ValueError("Invalid value for `columns`, must not be `None`") # noqa: E501 + self._columns = columns + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, MeasurementSchemaCreateRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/measurement_schema_list.py b/frogpilot/third_party/influxdb_client/domain/measurement_schema_list.py new file mode 100644 index 000000000..f8a83ddaa --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/measurement_schema_list.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class MeasurementSchemaList(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'measurement_schemas': 'list[MeasurementSchema]' + } + + attribute_map = { + 'measurement_schemas': 'measurementSchemas' + } + + def __init__(self, measurement_schemas=None): # noqa: E501,D401,D403 + """MeasurementSchemaList - a model defined in OpenAPI.""" # noqa: E501 + self._measurement_schemas = None + self.discriminator = None + + self.measurement_schemas = measurement_schemas + + @property + def measurement_schemas(self): + """Get the measurement_schemas of this MeasurementSchemaList. + + :return: The measurement_schemas of this MeasurementSchemaList. + :rtype: list[MeasurementSchema] + """ # noqa: E501 + return self._measurement_schemas + + @measurement_schemas.setter + def measurement_schemas(self, measurement_schemas): + """Set the measurement_schemas of this MeasurementSchemaList. + + :param measurement_schemas: The measurement_schemas of this MeasurementSchemaList. + :type: list[MeasurementSchema] + """ # noqa: E501 + if measurement_schemas is None: + raise ValueError("Invalid value for `measurement_schemas`, must not be `None`") # noqa: E501 + self._measurement_schemas = measurement_schemas + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, MeasurementSchemaList): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/measurement_schema_update_request.py b/frogpilot/third_party/influxdb_client/domain/measurement_schema_update_request.py new file mode 100644 index 000000000..bdfa19c29 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/measurement_schema_update_request.py @@ -0,0 +1,112 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class MeasurementSchemaUpdateRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'columns': 'list[MeasurementSchemaColumn]' + } + + attribute_map = { + 'columns': 'columns' + } + + def __init__(self, columns=None): # noqa: E501,D401,D403 + """MeasurementSchemaUpdateRequest - a model defined in OpenAPI.""" # noqa: E501 + self._columns = None + self.discriminator = None + + self.columns = columns + + @property + def columns(self): + """Get the columns of this MeasurementSchemaUpdateRequest. + + An ordered collection of column definitions + + :return: The columns of this MeasurementSchemaUpdateRequest. + :rtype: list[MeasurementSchemaColumn] + """ # noqa: E501 + return self._columns + + @columns.setter + def columns(self, columns): + """Set the columns of this MeasurementSchemaUpdateRequest. + + An ordered collection of column definitions + + :param columns: The columns of this MeasurementSchemaUpdateRequest. + :type: list[MeasurementSchemaColumn] + """ # noqa: E501 + if columns is None: + raise ValueError("Invalid value for `columns`, must not be `None`") # noqa: E501 + self._columns = columns + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, MeasurementSchemaUpdateRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/member_assignment.py b/frogpilot/third_party/influxdb_client/domain/member_assignment.py new file mode 100644 index 000000000..7773b0e40 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/member_assignment.py @@ -0,0 +1,161 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.statement import Statement + + +class MemberAssignment(Statement): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'member': 'MemberExpression', + 'init': 'Expression' + } + + attribute_map = { + 'type': 'type', + 'member': 'member', + 'init': 'init' + } + + def __init__(self, type=None, member=None, init=None): # noqa: E501,D401,D403 + """MemberAssignment - a model defined in OpenAPI.""" # noqa: E501 + Statement.__init__(self) # noqa: E501 + + self._type = None + self._member = None + self._init = None + self.discriminator = None + + if type is not None: + self.type = type + if member is not None: + self.member = member + if init is not None: + self.init = init + + @property + def type(self): + """Get the type of this MemberAssignment. + + Type of AST node + + :return: The type of this MemberAssignment. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this MemberAssignment. + + Type of AST node + + :param type: The type of this MemberAssignment. + :type: str + """ # noqa: E501 + self._type = type + + @property + def member(self): + """Get the member of this MemberAssignment. + + :return: The member of this MemberAssignment. + :rtype: MemberExpression + """ # noqa: E501 + return self._member + + @member.setter + def member(self, member): + """Set the member of this MemberAssignment. + + :param member: The member of this MemberAssignment. + :type: MemberExpression + """ # noqa: E501 + self._member = member + + @property + def init(self): + """Get the init of this MemberAssignment. + + :return: The init of this MemberAssignment. + :rtype: Expression + """ # noqa: E501 + return self._init + + @init.setter + def init(self, init): + """Set the init of this MemberAssignment. + + :param init: The init of this MemberAssignment. + :type: Expression + """ # noqa: E501 + self._init = init + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, MemberAssignment): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/member_expression.py b/frogpilot/third_party/influxdb_client/domain/member_expression.py new file mode 100644 index 000000000..decf2c48c --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/member_expression.py @@ -0,0 +1,161 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class MemberExpression(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'object': 'Expression', + '_property': 'PropertyKey' + } + + attribute_map = { + 'type': 'type', + 'object': 'object', + '_property': 'property' + } + + def __init__(self, type=None, object=None, _property=None): # noqa: E501,D401,D403 + """MemberExpression - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._object = None + self.__property = None + self.discriminator = None + + if type is not None: + self.type = type + if object is not None: + self.object = object + if _property is not None: + self._property = _property + + @property + def type(self): + """Get the type of this MemberExpression. + + Type of AST node + + :return: The type of this MemberExpression. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this MemberExpression. + + Type of AST node + + :param type: The type of this MemberExpression. + :type: str + """ # noqa: E501 + self._type = type + + @property + def object(self): + """Get the object of this MemberExpression. + + :return: The object of this MemberExpression. + :rtype: Expression + """ # noqa: E501 + return self._object + + @object.setter + def object(self, object): + """Set the object of this MemberExpression. + + :param object: The object of this MemberExpression. + :type: Expression + """ # noqa: E501 + self._object = object + + @property + def _property(self): + """Get the _property of this MemberExpression. + + :return: The _property of this MemberExpression. + :rtype: PropertyKey + """ # noqa: E501 + return self.__property + + @_property.setter + def _property(self, _property): + """Set the _property of this MemberExpression. + + :param _property: The _property of this MemberExpression. + :type: PropertyKey + """ # noqa: E501 + self.__property = _property + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, MemberExpression): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/metadata_backup.py b/frogpilot/third_party/influxdb_client/domain/metadata_backup.py new file mode 100644 index 000000000..ebe498fcb --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/metadata_backup.py @@ -0,0 +1,156 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class MetadataBackup(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'kv': 'file', + 'sql': 'file', + 'buckets': 'list[BucketMetadataManifest]' + } + + attribute_map = { + 'kv': 'kv', + 'sql': 'sql', + 'buckets': 'buckets' + } + + def __init__(self, kv=None, sql=None, buckets=None): # noqa: E501,D401,D403 + """MetadataBackup - a model defined in OpenAPI.""" # noqa: E501 + self._kv = None + self._sql = None + self._buckets = None + self.discriminator = None + + self.kv = kv + self.sql = sql + self.buckets = buckets + + @property + def kv(self): + """Get the kv of this MetadataBackup. + + :return: The kv of this MetadataBackup. + :rtype: file + """ # noqa: E501 + return self._kv + + @kv.setter + def kv(self, kv): + """Set the kv of this MetadataBackup. + + :param kv: The kv of this MetadataBackup. + :type: file + """ # noqa: E501 + if kv is None: + raise ValueError("Invalid value for `kv`, must not be `None`") # noqa: E501 + self._kv = kv + + @property + def sql(self): + """Get the sql of this MetadataBackup. + + :return: The sql of this MetadataBackup. + :rtype: file + """ # noqa: E501 + return self._sql + + @sql.setter + def sql(self, sql): + """Set the sql of this MetadataBackup. + + :param sql: The sql of this MetadataBackup. + :type: file + """ # noqa: E501 + if sql is None: + raise ValueError("Invalid value for `sql`, must not be `None`") # noqa: E501 + self._sql = sql + + @property + def buckets(self): + """Get the buckets of this MetadataBackup. + + :return: The buckets of this MetadataBackup. + :rtype: list[BucketMetadataManifest] + """ # noqa: E501 + return self._buckets + + @buckets.setter + def buckets(self, buckets): + """Set the buckets of this MetadataBackup. + + :param buckets: The buckets of this MetadataBackup. + :type: list[BucketMetadataManifest] + """ # noqa: E501 + if buckets is None: + raise ValueError("Invalid value for `buckets`, must not be `None`") # noqa: E501 + self._buckets = buckets + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, MetadataBackup): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/model_property.py b/frogpilot/third_party/influxdb_client/domain/model_property.py new file mode 100644 index 000000000..cbdcd249d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/model_property.py @@ -0,0 +1,157 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ModelProperty(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'key': 'PropertyKey', + 'value': 'Expression' + } + + attribute_map = { + 'type': 'type', + 'key': 'key', + 'value': 'value' + } + + def __init__(self, type=None, key=None, value=None): # noqa: E501,D401,D403 + """ModelProperty - a model defined in OpenAPI.""" # noqa: E501 + self._type = None + self._key = None + self._value = None + self.discriminator = None + + if type is not None: + self.type = type + if key is not None: + self.key = key + if value is not None: + self.value = value + + @property + def type(self): + """Get the type of this ModelProperty. + + Type of AST node + + :return: The type of this ModelProperty. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this ModelProperty. + + Type of AST node + + :param type: The type of this ModelProperty. + :type: str + """ # noqa: E501 + self._type = type + + @property + def key(self): + """Get the key of this ModelProperty. + + :return: The key of this ModelProperty. + :rtype: PropertyKey + """ # noqa: E501 + return self._key + + @key.setter + def key(self, key): + """Set the key of this ModelProperty. + + :param key: The key of this ModelProperty. + :type: PropertyKey + """ # noqa: E501 + self._key = key + + @property + def value(self): + """Get the value of this ModelProperty. + + :return: The value of this ModelProperty. + :rtype: Expression + """ # noqa: E501 + return self._value + + @value.setter + def value(self, value): + """Set the value of this ModelProperty. + + :param value: The value of this ModelProperty. + :type: Expression + """ # noqa: E501 + self._value = value + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ModelProperty): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/mosaic_view_properties.py b/frogpilot/third_party/influxdb_client/domain/mosaic_view_properties.py new file mode 100644 index 000000000..1ea889724 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/mosaic_view_properties.py @@ -0,0 +1,780 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.view_properties import ViewProperties + + +class MosaicViewProperties(ViewProperties): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'time_format': 'str', + 'type': 'str', + 'queries': 'list[DashboardQuery]', + 'colors': 'list[str]', + 'shape': 'str', + 'note': 'str', + 'show_note_when_empty': 'bool', + 'x_column': 'str', + 'generate_x_axis_ticks': 'list[str]', + 'x_total_ticks': 'int', + 'x_tick_start': 'float', + 'x_tick_step': 'float', + 'y_label_column_separator': 'str', + 'y_label_columns': 'list[str]', + 'y_series_columns': 'list[str]', + 'fill_columns': 'list[str]', + 'x_domain': 'list[float]', + 'y_domain': 'list[float]', + 'x_axis_label': 'str', + 'y_axis_label': 'str', + 'x_prefix': 'str', + 'x_suffix': 'str', + 'y_prefix': 'str', + 'y_suffix': 'str', + 'hover_dimension': 'str', + 'legend_colorize_rows': 'bool', + 'legend_hide': 'bool', + 'legend_opacity': 'float', + 'legend_orientation_threshold': 'int' + } + + attribute_map = { + 'time_format': 'timeFormat', + 'type': 'type', + 'queries': 'queries', + 'colors': 'colors', + 'shape': 'shape', + 'note': 'note', + 'show_note_when_empty': 'showNoteWhenEmpty', + 'x_column': 'xColumn', + 'generate_x_axis_ticks': 'generateXAxisTicks', + 'x_total_ticks': 'xTotalTicks', + 'x_tick_start': 'xTickStart', + 'x_tick_step': 'xTickStep', + 'y_label_column_separator': 'yLabelColumnSeparator', + 'y_label_columns': 'yLabelColumns', + 'y_series_columns': 'ySeriesColumns', + 'fill_columns': 'fillColumns', + 'x_domain': 'xDomain', + 'y_domain': 'yDomain', + 'x_axis_label': 'xAxisLabel', + 'y_axis_label': 'yAxisLabel', + 'x_prefix': 'xPrefix', + 'x_suffix': 'xSuffix', + 'y_prefix': 'yPrefix', + 'y_suffix': 'ySuffix', + 'hover_dimension': 'hoverDimension', + 'legend_colorize_rows': 'legendColorizeRows', + 'legend_hide': 'legendHide', + 'legend_opacity': 'legendOpacity', + 'legend_orientation_threshold': 'legendOrientationThreshold' + } + + def __init__(self, time_format=None, type=None, queries=None, colors=None, shape=None, note=None, show_note_when_empty=None, x_column=None, generate_x_axis_ticks=None, x_total_ticks=None, x_tick_start=None, x_tick_step=None, y_label_column_separator=None, y_label_columns=None, y_series_columns=None, fill_columns=None, x_domain=None, y_domain=None, x_axis_label=None, y_axis_label=None, x_prefix=None, x_suffix=None, y_prefix=None, y_suffix=None, hover_dimension=None, legend_colorize_rows=None, legend_hide=None, legend_opacity=None, legend_orientation_threshold=None): # noqa: E501,D401,D403 + """MosaicViewProperties - a model defined in OpenAPI.""" # noqa: E501 + ViewProperties.__init__(self) # noqa: E501 + + self._time_format = None + self._type = None + self._queries = None + self._colors = None + self._shape = None + self._note = None + self._show_note_when_empty = None + self._x_column = None + self._generate_x_axis_ticks = None + self._x_total_ticks = None + self._x_tick_start = None + self._x_tick_step = None + self._y_label_column_separator = None + self._y_label_columns = None + self._y_series_columns = None + self._fill_columns = None + self._x_domain = None + self._y_domain = None + self._x_axis_label = None + self._y_axis_label = None + self._x_prefix = None + self._x_suffix = None + self._y_prefix = None + self._y_suffix = None + self._hover_dimension = None + self._legend_colorize_rows = None + self._legend_hide = None + self._legend_opacity = None + self._legend_orientation_threshold = None + self.discriminator = None + + if time_format is not None: + self.time_format = time_format + self.type = type + self.queries = queries + self.colors = colors + self.shape = shape + self.note = note + self.show_note_when_empty = show_note_when_empty + self.x_column = x_column + if generate_x_axis_ticks is not None: + self.generate_x_axis_ticks = generate_x_axis_ticks + if x_total_ticks is not None: + self.x_total_ticks = x_total_ticks + if x_tick_start is not None: + self.x_tick_start = x_tick_start + if x_tick_step is not None: + self.x_tick_step = x_tick_step + if y_label_column_separator is not None: + self.y_label_column_separator = y_label_column_separator + if y_label_columns is not None: + self.y_label_columns = y_label_columns + self.y_series_columns = y_series_columns + self.fill_columns = fill_columns + self.x_domain = x_domain + self.y_domain = y_domain + self.x_axis_label = x_axis_label + self.y_axis_label = y_axis_label + self.x_prefix = x_prefix + self.x_suffix = x_suffix + self.y_prefix = y_prefix + self.y_suffix = y_suffix + if hover_dimension is not None: + self.hover_dimension = hover_dimension + if legend_colorize_rows is not None: + self.legend_colorize_rows = legend_colorize_rows + if legend_hide is not None: + self.legend_hide = legend_hide + if legend_opacity is not None: + self.legend_opacity = legend_opacity + if legend_orientation_threshold is not None: + self.legend_orientation_threshold = legend_orientation_threshold + + @property + def time_format(self): + """Get the time_format of this MosaicViewProperties. + + :return: The time_format of this MosaicViewProperties. + :rtype: str + """ # noqa: E501 + return self._time_format + + @time_format.setter + def time_format(self, time_format): + """Set the time_format of this MosaicViewProperties. + + :param time_format: The time_format of this MosaicViewProperties. + :type: str + """ # noqa: E501 + self._time_format = time_format + + @property + def type(self): + """Get the type of this MosaicViewProperties. + + :return: The type of this MosaicViewProperties. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this MosaicViewProperties. + + :param type: The type of this MosaicViewProperties. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def queries(self): + """Get the queries of this MosaicViewProperties. + + :return: The queries of this MosaicViewProperties. + :rtype: list[DashboardQuery] + """ # noqa: E501 + return self._queries + + @queries.setter + def queries(self, queries): + """Set the queries of this MosaicViewProperties. + + :param queries: The queries of this MosaicViewProperties. + :type: list[DashboardQuery] + """ # noqa: E501 + if queries is None: + raise ValueError("Invalid value for `queries`, must not be `None`") # noqa: E501 + self._queries = queries + + @property + def colors(self): + """Get the colors of this MosaicViewProperties. + + Colors define color encoding of data into a visualization + + :return: The colors of this MosaicViewProperties. + :rtype: list[str] + """ # noqa: E501 + return self._colors + + @colors.setter + def colors(self, colors): + """Set the colors of this MosaicViewProperties. + + Colors define color encoding of data into a visualization + + :param colors: The colors of this MosaicViewProperties. + :type: list[str] + """ # noqa: E501 + if colors is None: + raise ValueError("Invalid value for `colors`, must not be `None`") # noqa: E501 + self._colors = colors + + @property + def shape(self): + """Get the shape of this MosaicViewProperties. + + :return: The shape of this MosaicViewProperties. + :rtype: str + """ # noqa: E501 + return self._shape + + @shape.setter + def shape(self, shape): + """Set the shape of this MosaicViewProperties. + + :param shape: The shape of this MosaicViewProperties. + :type: str + """ # noqa: E501 + if shape is None: + raise ValueError("Invalid value for `shape`, must not be `None`") # noqa: E501 + self._shape = shape + + @property + def note(self): + """Get the note of this MosaicViewProperties. + + :return: The note of this MosaicViewProperties. + :rtype: str + """ # noqa: E501 + return self._note + + @note.setter + def note(self, note): + """Set the note of this MosaicViewProperties. + + :param note: The note of this MosaicViewProperties. + :type: str + """ # noqa: E501 + if note is None: + raise ValueError("Invalid value for `note`, must not be `None`") # noqa: E501 + self._note = note + + @property + def show_note_when_empty(self): + """Get the show_note_when_empty of this MosaicViewProperties. + + If true, will display note when empty + + :return: The show_note_when_empty of this MosaicViewProperties. + :rtype: bool + """ # noqa: E501 + return self._show_note_when_empty + + @show_note_when_empty.setter + def show_note_when_empty(self, show_note_when_empty): + """Set the show_note_when_empty of this MosaicViewProperties. + + If true, will display note when empty + + :param show_note_when_empty: The show_note_when_empty of this MosaicViewProperties. + :type: bool + """ # noqa: E501 + if show_note_when_empty is None: + raise ValueError("Invalid value for `show_note_when_empty`, must not be `None`") # noqa: E501 + self._show_note_when_empty = show_note_when_empty + + @property + def x_column(self): + """Get the x_column of this MosaicViewProperties. + + :return: The x_column of this MosaicViewProperties. + :rtype: str + """ # noqa: E501 + return self._x_column + + @x_column.setter + def x_column(self, x_column): + """Set the x_column of this MosaicViewProperties. + + :param x_column: The x_column of this MosaicViewProperties. + :type: str + """ # noqa: E501 + if x_column is None: + raise ValueError("Invalid value for `x_column`, must not be `None`") # noqa: E501 + self._x_column = x_column + + @property + def generate_x_axis_ticks(self): + """Get the generate_x_axis_ticks of this MosaicViewProperties. + + :return: The generate_x_axis_ticks of this MosaicViewProperties. + :rtype: list[str] + """ # noqa: E501 + return self._generate_x_axis_ticks + + @generate_x_axis_ticks.setter + def generate_x_axis_ticks(self, generate_x_axis_ticks): + """Set the generate_x_axis_ticks of this MosaicViewProperties. + + :param generate_x_axis_ticks: The generate_x_axis_ticks of this MosaicViewProperties. + :type: list[str] + """ # noqa: E501 + self._generate_x_axis_ticks = generate_x_axis_ticks + + @property + def x_total_ticks(self): + """Get the x_total_ticks of this MosaicViewProperties. + + :return: The x_total_ticks of this MosaicViewProperties. + :rtype: int + """ # noqa: E501 + return self._x_total_ticks + + @x_total_ticks.setter + def x_total_ticks(self, x_total_ticks): + """Set the x_total_ticks of this MosaicViewProperties. + + :param x_total_ticks: The x_total_ticks of this MosaicViewProperties. + :type: int + """ # noqa: E501 + self._x_total_ticks = x_total_ticks + + @property + def x_tick_start(self): + """Get the x_tick_start of this MosaicViewProperties. + + :return: The x_tick_start of this MosaicViewProperties. + :rtype: float + """ # noqa: E501 + return self._x_tick_start + + @x_tick_start.setter + def x_tick_start(self, x_tick_start): + """Set the x_tick_start of this MosaicViewProperties. + + :param x_tick_start: The x_tick_start of this MosaicViewProperties. + :type: float + """ # noqa: E501 + self._x_tick_start = x_tick_start + + @property + def x_tick_step(self): + """Get the x_tick_step of this MosaicViewProperties. + + :return: The x_tick_step of this MosaicViewProperties. + :rtype: float + """ # noqa: E501 + return self._x_tick_step + + @x_tick_step.setter + def x_tick_step(self, x_tick_step): + """Set the x_tick_step of this MosaicViewProperties. + + :param x_tick_step: The x_tick_step of this MosaicViewProperties. + :type: float + """ # noqa: E501 + self._x_tick_step = x_tick_step + + @property + def y_label_column_separator(self): + """Get the y_label_column_separator of this MosaicViewProperties. + + :return: The y_label_column_separator of this MosaicViewProperties. + :rtype: str + """ # noqa: E501 + return self._y_label_column_separator + + @y_label_column_separator.setter + def y_label_column_separator(self, y_label_column_separator): + """Set the y_label_column_separator of this MosaicViewProperties. + + :param y_label_column_separator: The y_label_column_separator of this MosaicViewProperties. + :type: str + """ # noqa: E501 + self._y_label_column_separator = y_label_column_separator + + @property + def y_label_columns(self): + """Get the y_label_columns of this MosaicViewProperties. + + :return: The y_label_columns of this MosaicViewProperties. + :rtype: list[str] + """ # noqa: E501 + return self._y_label_columns + + @y_label_columns.setter + def y_label_columns(self, y_label_columns): + """Set the y_label_columns of this MosaicViewProperties. + + :param y_label_columns: The y_label_columns of this MosaicViewProperties. + :type: list[str] + """ # noqa: E501 + self._y_label_columns = y_label_columns + + @property + def y_series_columns(self): + """Get the y_series_columns of this MosaicViewProperties. + + :return: The y_series_columns of this MosaicViewProperties. + :rtype: list[str] + """ # noqa: E501 + return self._y_series_columns + + @y_series_columns.setter + def y_series_columns(self, y_series_columns): + """Set the y_series_columns of this MosaicViewProperties. + + :param y_series_columns: The y_series_columns of this MosaicViewProperties. + :type: list[str] + """ # noqa: E501 + if y_series_columns is None: + raise ValueError("Invalid value for `y_series_columns`, must not be `None`") # noqa: E501 + self._y_series_columns = y_series_columns + + @property + def fill_columns(self): + """Get the fill_columns of this MosaicViewProperties. + + :return: The fill_columns of this MosaicViewProperties. + :rtype: list[str] + """ # noqa: E501 + return self._fill_columns + + @fill_columns.setter + def fill_columns(self, fill_columns): + """Set the fill_columns of this MosaicViewProperties. + + :param fill_columns: The fill_columns of this MosaicViewProperties. + :type: list[str] + """ # noqa: E501 + if fill_columns is None: + raise ValueError("Invalid value for `fill_columns`, must not be `None`") # noqa: E501 + self._fill_columns = fill_columns + + @property + def x_domain(self): + """Get the x_domain of this MosaicViewProperties. + + :return: The x_domain of this MosaicViewProperties. + :rtype: list[float] + """ # noqa: E501 + return self._x_domain + + @x_domain.setter + def x_domain(self, x_domain): + """Set the x_domain of this MosaicViewProperties. + + :param x_domain: The x_domain of this MosaicViewProperties. + :type: list[float] + """ # noqa: E501 + if x_domain is None: + raise ValueError("Invalid value for `x_domain`, must not be `None`") # noqa: E501 + self._x_domain = x_domain + + @property + def y_domain(self): + """Get the y_domain of this MosaicViewProperties. + + :return: The y_domain of this MosaicViewProperties. + :rtype: list[float] + """ # noqa: E501 + return self._y_domain + + @y_domain.setter + def y_domain(self, y_domain): + """Set the y_domain of this MosaicViewProperties. + + :param y_domain: The y_domain of this MosaicViewProperties. + :type: list[float] + """ # noqa: E501 + if y_domain is None: + raise ValueError("Invalid value for `y_domain`, must not be `None`") # noqa: E501 + self._y_domain = y_domain + + @property + def x_axis_label(self): + """Get the x_axis_label of this MosaicViewProperties. + + :return: The x_axis_label of this MosaicViewProperties. + :rtype: str + """ # noqa: E501 + return self._x_axis_label + + @x_axis_label.setter + def x_axis_label(self, x_axis_label): + """Set the x_axis_label of this MosaicViewProperties. + + :param x_axis_label: The x_axis_label of this MosaicViewProperties. + :type: str + """ # noqa: E501 + if x_axis_label is None: + raise ValueError("Invalid value for `x_axis_label`, must not be `None`") # noqa: E501 + self._x_axis_label = x_axis_label + + @property + def y_axis_label(self): + """Get the y_axis_label of this MosaicViewProperties. + + :return: The y_axis_label of this MosaicViewProperties. + :rtype: str + """ # noqa: E501 + return self._y_axis_label + + @y_axis_label.setter + def y_axis_label(self, y_axis_label): + """Set the y_axis_label of this MosaicViewProperties. + + :param y_axis_label: The y_axis_label of this MosaicViewProperties. + :type: str + """ # noqa: E501 + if y_axis_label is None: + raise ValueError("Invalid value for `y_axis_label`, must not be `None`") # noqa: E501 + self._y_axis_label = y_axis_label + + @property + def x_prefix(self): + """Get the x_prefix of this MosaicViewProperties. + + :return: The x_prefix of this MosaicViewProperties. + :rtype: str + """ # noqa: E501 + return self._x_prefix + + @x_prefix.setter + def x_prefix(self, x_prefix): + """Set the x_prefix of this MosaicViewProperties. + + :param x_prefix: The x_prefix of this MosaicViewProperties. + :type: str + """ # noqa: E501 + if x_prefix is None: + raise ValueError("Invalid value for `x_prefix`, must not be `None`") # noqa: E501 + self._x_prefix = x_prefix + + @property + def x_suffix(self): + """Get the x_suffix of this MosaicViewProperties. + + :return: The x_suffix of this MosaicViewProperties. + :rtype: str + """ # noqa: E501 + return self._x_suffix + + @x_suffix.setter + def x_suffix(self, x_suffix): + """Set the x_suffix of this MosaicViewProperties. + + :param x_suffix: The x_suffix of this MosaicViewProperties. + :type: str + """ # noqa: E501 + if x_suffix is None: + raise ValueError("Invalid value for `x_suffix`, must not be `None`") # noqa: E501 + self._x_suffix = x_suffix + + @property + def y_prefix(self): + """Get the y_prefix of this MosaicViewProperties. + + :return: The y_prefix of this MosaicViewProperties. + :rtype: str + """ # noqa: E501 + return self._y_prefix + + @y_prefix.setter + def y_prefix(self, y_prefix): + """Set the y_prefix of this MosaicViewProperties. + + :param y_prefix: The y_prefix of this MosaicViewProperties. + :type: str + """ # noqa: E501 + if y_prefix is None: + raise ValueError("Invalid value for `y_prefix`, must not be `None`") # noqa: E501 + self._y_prefix = y_prefix + + @property + def y_suffix(self): + """Get the y_suffix of this MosaicViewProperties. + + :return: The y_suffix of this MosaicViewProperties. + :rtype: str + """ # noqa: E501 + return self._y_suffix + + @y_suffix.setter + def y_suffix(self, y_suffix): + """Set the y_suffix of this MosaicViewProperties. + + :param y_suffix: The y_suffix of this MosaicViewProperties. + :type: str + """ # noqa: E501 + if y_suffix is None: + raise ValueError("Invalid value for `y_suffix`, must not be `None`") # noqa: E501 + self._y_suffix = y_suffix + + @property + def hover_dimension(self): + """Get the hover_dimension of this MosaicViewProperties. + + :return: The hover_dimension of this MosaicViewProperties. + :rtype: str + """ # noqa: E501 + return self._hover_dimension + + @hover_dimension.setter + def hover_dimension(self, hover_dimension): + """Set the hover_dimension of this MosaicViewProperties. + + :param hover_dimension: The hover_dimension of this MosaicViewProperties. + :type: str + """ # noqa: E501 + self._hover_dimension = hover_dimension + + @property + def legend_colorize_rows(self): + """Get the legend_colorize_rows of this MosaicViewProperties. + + :return: The legend_colorize_rows of this MosaicViewProperties. + :rtype: bool + """ # noqa: E501 + return self._legend_colorize_rows + + @legend_colorize_rows.setter + def legend_colorize_rows(self, legend_colorize_rows): + """Set the legend_colorize_rows of this MosaicViewProperties. + + :param legend_colorize_rows: The legend_colorize_rows of this MosaicViewProperties. + :type: bool + """ # noqa: E501 + self._legend_colorize_rows = legend_colorize_rows + + @property + def legend_hide(self): + """Get the legend_hide of this MosaicViewProperties. + + :return: The legend_hide of this MosaicViewProperties. + :rtype: bool + """ # noqa: E501 + return self._legend_hide + + @legend_hide.setter + def legend_hide(self, legend_hide): + """Set the legend_hide of this MosaicViewProperties. + + :param legend_hide: The legend_hide of this MosaicViewProperties. + :type: bool + """ # noqa: E501 + self._legend_hide = legend_hide + + @property + def legend_opacity(self): + """Get the legend_opacity of this MosaicViewProperties. + + :return: The legend_opacity of this MosaicViewProperties. + :rtype: float + """ # noqa: E501 + return self._legend_opacity + + @legend_opacity.setter + def legend_opacity(self, legend_opacity): + """Set the legend_opacity of this MosaicViewProperties. + + :param legend_opacity: The legend_opacity of this MosaicViewProperties. + :type: float + """ # noqa: E501 + self._legend_opacity = legend_opacity + + @property + def legend_orientation_threshold(self): + """Get the legend_orientation_threshold of this MosaicViewProperties. + + :return: The legend_orientation_threshold of this MosaicViewProperties. + :rtype: int + """ # noqa: E501 + return self._legend_orientation_threshold + + @legend_orientation_threshold.setter + def legend_orientation_threshold(self, legend_orientation_threshold): + """Set the legend_orientation_threshold of this MosaicViewProperties. + + :param legend_orientation_threshold: The legend_orientation_threshold of this MosaicViewProperties. + :type: int + """ # noqa: E501 + self._legend_orientation_threshold = legend_orientation_threshold + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, MosaicViewProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/node.py b/frogpilot/third_party/influxdb_client/domain/node.py new file mode 100644 index 000000000..c254c62a4 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/node.py @@ -0,0 +1,82 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Node(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """Node - a model defined in OpenAPI.""" # noqa: E501 self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Node): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/notification_endpoint.py b/frogpilot/third_party/influxdb_client/domain/notification_endpoint.py new file mode 100644 index 000000000..3d0a886ed --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/notification_endpoint.py @@ -0,0 +1,121 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class NotificationEndpoint(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'NotificationEndpointType' + } + + attribute_map = { + 'type': 'type' + } + + discriminator_value_class_map = { + 'slack': 'SlackNotificationEndpoint', + 'pagerduty': 'PagerDutyNotificationEndpoint', + 'http': 'HTTPNotificationEndpoint', + 'telegram': 'TelegramNotificationEndpoint' + } + + def __init__(self, type=None): # noqa: E501,D401,D403 + """NotificationEndpoint - a model defined in OpenAPI.""" # noqa: E501 + self._type = None + self.discriminator = 'type' + + self.type = type + + @property + def type(self): + """Get the type of this NotificationEndpoint. + + :return: The type of this NotificationEndpoint. + :rtype: NotificationEndpointType + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this NotificationEndpoint. + + :param type: The type of this NotificationEndpoint. + :type: NotificationEndpointType + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + def get_real_child_model(self, data): + """Return the real base class specified by the discriminator.""" + discriminator_key = self.attribute_map[self.discriminator] + discriminator_value = data[discriminator_key] + return self.discriminator_value_class_map.get(discriminator_value) + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, NotificationEndpoint): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/notification_endpoint_base.py b/frogpilot/third_party/influxdb_client/domain/notification_endpoint_base.py new file mode 100644 index 000000000..3ac9da021 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/notification_endpoint_base.py @@ -0,0 +1,347 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class NotificationEndpointBase(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'org_id': 'str', + 'user_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'description': 'str', + 'name': 'str', + 'status': 'str', + 'labels': 'list[Label]', + 'links': 'NotificationEndpointBaseLinks', + 'type': 'NotificationEndpointType' + } + + attribute_map = { + 'id': 'id', + 'org_id': 'orgID', + 'user_id': 'userID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'description': 'description', + 'name': 'name', + 'status': 'status', + 'labels': 'labels', + 'links': 'links', + 'type': 'type' + } + + def __init__(self, id=None, org_id=None, user_id=None, created_at=None, updated_at=None, description=None, name=None, status='active', labels=None, links=None, type=None): # noqa: E501,D401,D403 + """NotificationEndpointBase - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._org_id = None + self._user_id = None + self._created_at = None + self._updated_at = None + self._description = None + self._name = None + self._status = None + self._labels = None + self._links = None + self._type = None + self.discriminator = None + + if id is not None: + self.id = id + if org_id is not None: + self.org_id = org_id + if user_id is not None: + self.user_id = user_id + if created_at is not None: + self.created_at = created_at + if updated_at is not None: + self.updated_at = updated_at + if description is not None: + self.description = description + self.name = name + if status is not None: + self.status = status + if labels is not None: + self.labels = labels + if links is not None: + self.links = links + self.type = type + + @property + def id(self): + """Get the id of this NotificationEndpointBase. + + :return: The id of this NotificationEndpointBase. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this NotificationEndpointBase. + + :param id: The id of this NotificationEndpointBase. + :type: str + """ # noqa: E501 + self._id = id + + @property + def org_id(self): + """Get the org_id of this NotificationEndpointBase. + + :return: The org_id of this NotificationEndpointBase. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this NotificationEndpointBase. + + :param org_id: The org_id of this NotificationEndpointBase. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def user_id(self): + """Get the user_id of this NotificationEndpointBase. + + :return: The user_id of this NotificationEndpointBase. + :rtype: str + """ # noqa: E501 + return self._user_id + + @user_id.setter + def user_id(self, user_id): + """Set the user_id of this NotificationEndpointBase. + + :param user_id: The user_id of this NotificationEndpointBase. + :type: str + """ # noqa: E501 + self._user_id = user_id + + @property + def created_at(self): + """Get the created_at of this NotificationEndpointBase. + + :return: The created_at of this NotificationEndpointBase. + :rtype: datetime + """ # noqa: E501 + return self._created_at + + @created_at.setter + def created_at(self, created_at): + """Set the created_at of this NotificationEndpointBase. + + :param created_at: The created_at of this NotificationEndpointBase. + :type: datetime + """ # noqa: E501 + self._created_at = created_at + + @property + def updated_at(self): + """Get the updated_at of this NotificationEndpointBase. + + :return: The updated_at of this NotificationEndpointBase. + :rtype: datetime + """ # noqa: E501 + return self._updated_at + + @updated_at.setter + def updated_at(self, updated_at): + """Set the updated_at of this NotificationEndpointBase. + + :param updated_at: The updated_at of this NotificationEndpointBase. + :type: datetime + """ # noqa: E501 + self._updated_at = updated_at + + @property + def description(self): + """Get the description of this NotificationEndpointBase. + + An optional description of the notification endpoint. + + :return: The description of this NotificationEndpointBase. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this NotificationEndpointBase. + + An optional description of the notification endpoint. + + :param description: The description of this NotificationEndpointBase. + :type: str + """ # noqa: E501 + self._description = description + + @property + def name(self): + """Get the name of this NotificationEndpointBase. + + :return: The name of this NotificationEndpointBase. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this NotificationEndpointBase. + + :param name: The name of this NotificationEndpointBase. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def status(self): + """Get the status of this NotificationEndpointBase. + + The status of the endpoint. + + :return: The status of this NotificationEndpointBase. + :rtype: str + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this NotificationEndpointBase. + + The status of the endpoint. + + :param status: The status of this NotificationEndpointBase. + :type: str + """ # noqa: E501 + self._status = status + + @property + def labels(self): + """Get the labels of this NotificationEndpointBase. + + :return: The labels of this NotificationEndpointBase. + :rtype: list[Label] + """ # noqa: E501 + return self._labels + + @labels.setter + def labels(self, labels): + """Set the labels of this NotificationEndpointBase. + + :param labels: The labels of this NotificationEndpointBase. + :type: list[Label] + """ # noqa: E501 + self._labels = labels + + @property + def links(self): + """Get the links of this NotificationEndpointBase. + + :return: The links of this NotificationEndpointBase. + :rtype: NotificationEndpointBaseLinks + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this NotificationEndpointBase. + + :param links: The links of this NotificationEndpointBase. + :type: NotificationEndpointBaseLinks + """ # noqa: E501 + self._links = links + + @property + def type(self): + """Get the type of this NotificationEndpointBase. + + :return: The type of this NotificationEndpointBase. + :rtype: NotificationEndpointType + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this NotificationEndpointBase. + + :param type: The type of this NotificationEndpointBase. + :type: NotificationEndpointType + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, NotificationEndpointBase): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/notification_endpoint_base_links.py b/frogpilot/third_party/influxdb_client/domain/notification_endpoint_base_links.py new file mode 100644 index 000000000..4ff93cc7e --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/notification_endpoint_base_links.py @@ -0,0 +1,192 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class NotificationEndpointBaseLinks(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + '_self': 'str', + 'labels': 'str', + 'members': 'str', + 'owners': 'str' + } + + attribute_map = { + '_self': 'self', + 'labels': 'labels', + 'members': 'members', + 'owners': 'owners' + } + + def __init__(self, _self=None, labels=None, members=None, owners=None): # noqa: E501,D401,D403 + """NotificationEndpointBaseLinks - a model defined in OpenAPI.""" # noqa: E501 + self.__self = None + self._labels = None + self._members = None + self._owners = None + self.discriminator = None + + if _self is not None: + self._self = _self + if labels is not None: + self.labels = labels + if members is not None: + self.members = members + if owners is not None: + self.owners = owners + + @property + def _self(self): + """Get the _self of this NotificationEndpointBaseLinks. + + URI of resource. + + :return: The _self of this NotificationEndpointBaseLinks. + :rtype: str + """ # noqa: E501 + return self.__self + + @_self.setter + def _self(self, _self): + """Set the _self of this NotificationEndpointBaseLinks. + + URI of resource. + + :param _self: The _self of this NotificationEndpointBaseLinks. + :type: str + """ # noqa: E501 + self.__self = _self + + @property + def labels(self): + """Get the labels of this NotificationEndpointBaseLinks. + + URI of resource. + + :return: The labels of this NotificationEndpointBaseLinks. + :rtype: str + """ # noqa: E501 + return self._labels + + @labels.setter + def labels(self, labels): + """Set the labels of this NotificationEndpointBaseLinks. + + URI of resource. + + :param labels: The labels of this NotificationEndpointBaseLinks. + :type: str + """ # noqa: E501 + self._labels = labels + + @property + def members(self): + """Get the members of this NotificationEndpointBaseLinks. + + URI of resource. + + :return: The members of this NotificationEndpointBaseLinks. + :rtype: str + """ # noqa: E501 + return self._members + + @members.setter + def members(self, members): + """Set the members of this NotificationEndpointBaseLinks. + + URI of resource. + + :param members: The members of this NotificationEndpointBaseLinks. + :type: str + """ # noqa: E501 + self._members = members + + @property + def owners(self): + """Get the owners of this NotificationEndpointBaseLinks. + + URI of resource. + + :return: The owners of this NotificationEndpointBaseLinks. + :rtype: str + """ # noqa: E501 + return self._owners + + @owners.setter + def owners(self, owners): + """Set the owners of this NotificationEndpointBaseLinks. + + URI of resource. + + :param owners: The owners of this NotificationEndpointBaseLinks. + :type: str + """ # noqa: E501 + self._owners = owners + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, NotificationEndpointBaseLinks): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/notification_endpoint_discriminator.py b/frogpilot/third_party/influxdb_client/domain/notification_endpoint_discriminator.py new file mode 100644 index 000000000..b285c12d4 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/notification_endpoint_discriminator.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.notification_endpoint_base import NotificationEndpointBase + + +class NotificationEndpointDiscriminator(NotificationEndpointBase): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'org_id': 'str', + 'user_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'description': 'str', + 'name': 'str', + 'status': 'str', + 'labels': 'list[Label]', + 'links': 'NotificationEndpointBaseLinks', + 'type': 'NotificationEndpointType' + } + + attribute_map = { + 'id': 'id', + 'org_id': 'orgID', + 'user_id': 'userID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'description': 'description', + 'name': 'name', + 'status': 'status', + 'labels': 'labels', + 'links': 'links', + 'type': 'type' + } + + def __init__(self, id=None, org_id=None, user_id=None, created_at=None, updated_at=None, description=None, name=None, status='active', labels=None, links=None, type=None): # noqa: E501,D401,D403 + """NotificationEndpointDiscriminator - a model defined in OpenAPI.""" # noqa: E501 + NotificationEndpointBase.__init__(self, id=id, org_id=org_id, user_id=user_id, created_at=created_at, updated_at=updated_at, description=description, name=name, status=status, labels=labels, links=links, type=type) # noqa: E501 + self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, NotificationEndpointDiscriminator): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/notification_endpoint_type.py b/frogpilot/third_party/influxdb_client/domain/notification_endpoint_type.py new file mode 100644 index 000000000..50ae33821 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/notification_endpoint_type.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class NotificationEndpointType(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + SLACK = "slack" + PAGERDUTY = "pagerduty" + HTTP = "http" + TELEGRAM = "telegram" + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """NotificationEndpointType - a model defined in OpenAPI.""" # noqa: E501 self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, NotificationEndpointType): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/notification_endpoint_update.py b/frogpilot/third_party/influxdb_client/domain/notification_endpoint_update.py new file mode 100644 index 000000000..4e63b1ff6 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/notification_endpoint_update.py @@ -0,0 +1,153 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class NotificationEndpointUpdate(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'description': 'str', + 'status': 'str' + } + + attribute_map = { + 'name': 'name', + 'description': 'description', + 'status': 'status' + } + + def __init__(self, name=None, description=None, status=None): # noqa: E501,D401,D403 + """NotificationEndpointUpdate - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._description = None + self._status = None + self.discriminator = None + + if name is not None: + self.name = name + if description is not None: + self.description = description + if status is not None: + self.status = status + + @property + def name(self): + """Get the name of this NotificationEndpointUpdate. + + :return: The name of this NotificationEndpointUpdate. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this NotificationEndpointUpdate. + + :param name: The name of this NotificationEndpointUpdate. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this NotificationEndpointUpdate. + + :return: The description of this NotificationEndpointUpdate. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this NotificationEndpointUpdate. + + :param description: The description of this NotificationEndpointUpdate. + :type: str + """ # noqa: E501 + self._description = description + + @property + def status(self): + """Get the status of this NotificationEndpointUpdate. + + :return: The status of this NotificationEndpointUpdate. + :rtype: str + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this NotificationEndpointUpdate. + + :param status: The status of this NotificationEndpointUpdate. + :type: str + """ # noqa: E501 + self._status = status + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, NotificationEndpointUpdate): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/notification_endpoints.py b/frogpilot/third_party/influxdb_client/domain/notification_endpoints.py new file mode 100644 index 000000000..55c2ec932 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/notification_endpoints.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class NotificationEndpoints(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'notification_endpoints': 'list[NotificationEndpoint]', + 'links': 'Links' + } + + attribute_map = { + 'notification_endpoints': 'notificationEndpoints', + 'links': 'links' + } + + def __init__(self, notification_endpoints=None, links=None): # noqa: E501,D401,D403 + """NotificationEndpoints - a model defined in OpenAPI.""" # noqa: E501 + self._notification_endpoints = None + self._links = None + self.discriminator = None + + if notification_endpoints is not None: + self.notification_endpoints = notification_endpoints + if links is not None: + self.links = links + + @property + def notification_endpoints(self): + """Get the notification_endpoints of this NotificationEndpoints. + + :return: The notification_endpoints of this NotificationEndpoints. + :rtype: list[NotificationEndpoint] + """ # noqa: E501 + return self._notification_endpoints + + @notification_endpoints.setter + def notification_endpoints(self, notification_endpoints): + """Set the notification_endpoints of this NotificationEndpoints. + + :param notification_endpoints: The notification_endpoints of this NotificationEndpoints. + :type: list[NotificationEndpoint] + """ # noqa: E501 + self._notification_endpoints = notification_endpoints + + @property + def links(self): + """Get the links of this NotificationEndpoints. + + :return: The links of this NotificationEndpoints. + :rtype: Links + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this NotificationEndpoints. + + :param links: The links of this NotificationEndpoints. + :type: Links + """ # noqa: E501 + self._links = links + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, NotificationEndpoints): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/notification_rule.py b/frogpilot/third_party/influxdb_client/domain/notification_rule.py new file mode 100644 index 000000000..b22e53bbe --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/notification_rule.py @@ -0,0 +1,126 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class NotificationRule(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str' + } + + attribute_map = { + 'type': 'type' + } + + discriminator_value_class_map = { + 'slack': 'SlackNotificationRule', + 'pagerduty': 'PagerDutyNotificationRule', + 'smtp': 'SMTPNotificationRule', + 'http': 'HTTPNotificationRule', + 'telegram': 'TelegramNotificationRule' + } + + def __init__(self, type=None): # noqa: E501,D401,D403 + """NotificationRule - a model defined in OpenAPI.""" # noqa: E501 + self._type = None + self.discriminator = 'type' + + self.type = type + + @property + def type(self): + """Get the type of this NotificationRule. + + The discriminator between other types of notification rules is "telegram". + + :return: The type of this NotificationRule. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this NotificationRule. + + The discriminator between other types of notification rules is "telegram". + + :param type: The type of this NotificationRule. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + def get_real_child_model(self, data): + """Return the real base class specified by the discriminator.""" + discriminator_key = self.attribute_map[self.discriminator] + discriminator_value = data[discriminator_key] + return self.discriminator_value_class_map.get(discriminator_value) + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, NotificationRule): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/notification_rule_base.py b/frogpilot/third_party/influxdb_client/domain/notification_rule_base.py new file mode 100644 index 000000000..6f3de0027 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/notification_rule_base.py @@ -0,0 +1,666 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class NotificationRuleBase(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'latest_completed': 'datetime', + 'last_run_status': 'str', + 'last_run_error': 'str', + 'id': 'str', + 'endpoint_id': 'str', + 'org_id': 'str', + 'task_id': 'str', + 'owner_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'status': 'TaskStatusType', + 'name': 'str', + 'sleep_until': 'str', + 'every': 'str', + 'offset': 'str', + 'runbook_link': 'str', + 'limit_every': 'int', + 'limit': 'int', + 'tag_rules': 'list[TagRule]', + 'description': 'str', + 'status_rules': 'list[StatusRule]', + 'labels': 'list[Label]', + 'links': 'NotificationRuleBaseLinks' + } + + attribute_map = { + 'latest_completed': 'latestCompleted', + 'last_run_status': 'lastRunStatus', + 'last_run_error': 'lastRunError', + 'id': 'id', + 'endpoint_id': 'endpointID', + 'org_id': 'orgID', + 'task_id': 'taskID', + 'owner_id': 'ownerID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'status': 'status', + 'name': 'name', + 'sleep_until': 'sleepUntil', + 'every': 'every', + 'offset': 'offset', + 'runbook_link': 'runbookLink', + 'limit_every': 'limitEvery', + 'limit': 'limit', + 'tag_rules': 'tagRules', + 'description': 'description', + 'status_rules': 'statusRules', + 'labels': 'labels', + 'links': 'links' + } + + def __init__(self, latest_completed=None, last_run_status=None, last_run_error=None, id=None, endpoint_id=None, org_id=None, task_id=None, owner_id=None, created_at=None, updated_at=None, status=None, name=None, sleep_until=None, every=None, offset=None, runbook_link=None, limit_every=None, limit=None, tag_rules=None, description=None, status_rules=None, labels=None, links=None): # noqa: E501,D401,D403 + """NotificationRuleBase - a model defined in OpenAPI.""" # noqa: E501 + self._latest_completed = None + self._last_run_status = None + self._last_run_error = None + self._id = None + self._endpoint_id = None + self._org_id = None + self._task_id = None + self._owner_id = None + self._created_at = None + self._updated_at = None + self._status = None + self._name = None + self._sleep_until = None + self._every = None + self._offset = None + self._runbook_link = None + self._limit_every = None + self._limit = None + self._tag_rules = None + self._description = None + self._status_rules = None + self._labels = None + self._links = None + self.discriminator = None + + if latest_completed is not None: + self.latest_completed = latest_completed + if last_run_status is not None: + self.last_run_status = last_run_status + if last_run_error is not None: + self.last_run_error = last_run_error + if id is not None: + self.id = id + self.endpoint_id = endpoint_id + self.org_id = org_id + if task_id is not None: + self.task_id = task_id + if owner_id is not None: + self.owner_id = owner_id + if created_at is not None: + self.created_at = created_at + if updated_at is not None: + self.updated_at = updated_at + self.status = status + self.name = name + if sleep_until is not None: + self.sleep_until = sleep_until + if every is not None: + self.every = every + if offset is not None: + self.offset = offset + if runbook_link is not None: + self.runbook_link = runbook_link + if limit_every is not None: + self.limit_every = limit_every + if limit is not None: + self.limit = limit + if tag_rules is not None: + self.tag_rules = tag_rules + if description is not None: + self.description = description + self.status_rules = status_rules + if labels is not None: + self.labels = labels + if links is not None: + self.links = links + + @property + def latest_completed(self): + """Get the latest_completed of this NotificationRuleBase. + + A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp)) of the latest scheduled and completed run. + + :return: The latest_completed of this NotificationRuleBase. + :rtype: datetime + """ # noqa: E501 + return self._latest_completed + + @latest_completed.setter + def latest_completed(self, latest_completed): + """Set the latest_completed of this NotificationRuleBase. + + A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp)) of the latest scheduled and completed run. + + :param latest_completed: The latest_completed of this NotificationRuleBase. + :type: datetime + """ # noqa: E501 + self._latest_completed = latest_completed + + @property + def last_run_status(self): + """Get the last_run_status of this NotificationRuleBase. + + :return: The last_run_status of this NotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._last_run_status + + @last_run_status.setter + def last_run_status(self, last_run_status): + """Set the last_run_status of this NotificationRuleBase. + + :param last_run_status: The last_run_status of this NotificationRuleBase. + :type: str + """ # noqa: E501 + self._last_run_status = last_run_status + + @property + def last_run_error(self): + """Get the last_run_error of this NotificationRuleBase. + + :return: The last_run_error of this NotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._last_run_error + + @last_run_error.setter + def last_run_error(self, last_run_error): + """Set the last_run_error of this NotificationRuleBase. + + :param last_run_error: The last_run_error of this NotificationRuleBase. + :type: str + """ # noqa: E501 + self._last_run_error = last_run_error + + @property + def id(self): + """Get the id of this NotificationRuleBase. + + :return: The id of this NotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this NotificationRuleBase. + + :param id: The id of this NotificationRuleBase. + :type: str + """ # noqa: E501 + self._id = id + + @property + def endpoint_id(self): + """Get the endpoint_id of this NotificationRuleBase. + + :return: The endpoint_id of this NotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._endpoint_id + + @endpoint_id.setter + def endpoint_id(self, endpoint_id): + """Set the endpoint_id of this NotificationRuleBase. + + :param endpoint_id: The endpoint_id of this NotificationRuleBase. + :type: str + """ # noqa: E501 + if endpoint_id is None: + raise ValueError("Invalid value for `endpoint_id`, must not be `None`") # noqa: E501 + self._endpoint_id = endpoint_id + + @property + def org_id(self): + """Get the org_id of this NotificationRuleBase. + + The ID of the organization that owns this notification rule. + + :return: The org_id of this NotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this NotificationRuleBase. + + The ID of the organization that owns this notification rule. + + :param org_id: The org_id of this NotificationRuleBase. + :type: str + """ # noqa: E501 + if org_id is None: + raise ValueError("Invalid value for `org_id`, must not be `None`") # noqa: E501 + self._org_id = org_id + + @property + def task_id(self): + """Get the task_id of this NotificationRuleBase. + + The ID of the task associated with this notification rule. + + :return: The task_id of this NotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._task_id + + @task_id.setter + def task_id(self, task_id): + """Set the task_id of this NotificationRuleBase. + + The ID of the task associated with this notification rule. + + :param task_id: The task_id of this NotificationRuleBase. + :type: str + """ # noqa: E501 + self._task_id = task_id + + @property + def owner_id(self): + """Get the owner_id of this NotificationRuleBase. + + The ID of creator used to create this notification rule. + + :return: The owner_id of this NotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._owner_id + + @owner_id.setter + def owner_id(self, owner_id): + """Set the owner_id of this NotificationRuleBase. + + The ID of creator used to create this notification rule. + + :param owner_id: The owner_id of this NotificationRuleBase. + :type: str + """ # noqa: E501 + self._owner_id = owner_id + + @property + def created_at(self): + """Get the created_at of this NotificationRuleBase. + + :return: The created_at of this NotificationRuleBase. + :rtype: datetime + """ # noqa: E501 + return self._created_at + + @created_at.setter + def created_at(self, created_at): + """Set the created_at of this NotificationRuleBase. + + :param created_at: The created_at of this NotificationRuleBase. + :type: datetime + """ # noqa: E501 + self._created_at = created_at + + @property + def updated_at(self): + """Get the updated_at of this NotificationRuleBase. + + :return: The updated_at of this NotificationRuleBase. + :rtype: datetime + """ # noqa: E501 + return self._updated_at + + @updated_at.setter + def updated_at(self, updated_at): + """Set the updated_at of this NotificationRuleBase. + + :param updated_at: The updated_at of this NotificationRuleBase. + :type: datetime + """ # noqa: E501 + self._updated_at = updated_at + + @property + def status(self): + """Get the status of this NotificationRuleBase. + + :return: The status of this NotificationRuleBase. + :rtype: TaskStatusType + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this NotificationRuleBase. + + :param status: The status of this NotificationRuleBase. + :type: TaskStatusType + """ # noqa: E501 + if status is None: + raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 + self._status = status + + @property + def name(self): + """Get the name of this NotificationRuleBase. + + Human-readable name describing the notification rule. + + :return: The name of this NotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this NotificationRuleBase. + + Human-readable name describing the notification rule. + + :param name: The name of this NotificationRuleBase. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def sleep_until(self): + """Get the sleep_until of this NotificationRuleBase. + + :return: The sleep_until of this NotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._sleep_until + + @sleep_until.setter + def sleep_until(self, sleep_until): + """Set the sleep_until of this NotificationRuleBase. + + :param sleep_until: The sleep_until of this NotificationRuleBase. + :type: str + """ # noqa: E501 + self._sleep_until = sleep_until + + @property + def every(self): + """Get the every of this NotificationRuleBase. + + The notification repetition interval. + + :return: The every of this NotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._every + + @every.setter + def every(self, every): + """Set the every of this NotificationRuleBase. + + The notification repetition interval. + + :param every: The every of this NotificationRuleBase. + :type: str + """ # noqa: E501 + self._every = every + + @property + def offset(self): + """Get the offset of this NotificationRuleBase. + + Duration to delay after the schedule, before executing check. + + :return: The offset of this NotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._offset + + @offset.setter + def offset(self, offset): + """Set the offset of this NotificationRuleBase. + + Duration to delay after the schedule, before executing check. + + :param offset: The offset of this NotificationRuleBase. + :type: str + """ # noqa: E501 + self._offset = offset + + @property + def runbook_link(self): + """Get the runbook_link of this NotificationRuleBase. + + :return: The runbook_link of this NotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._runbook_link + + @runbook_link.setter + def runbook_link(self, runbook_link): + """Set the runbook_link of this NotificationRuleBase. + + :param runbook_link: The runbook_link of this NotificationRuleBase. + :type: str + """ # noqa: E501 + self._runbook_link = runbook_link + + @property + def limit_every(self): + """Get the limit_every of this NotificationRuleBase. + + Don't notify me more than times every seconds. If set, limit cannot be empty. + + :return: The limit_every of this NotificationRuleBase. + :rtype: int + """ # noqa: E501 + return self._limit_every + + @limit_every.setter + def limit_every(self, limit_every): + """Set the limit_every of this NotificationRuleBase. + + Don't notify me more than times every seconds. If set, limit cannot be empty. + + :param limit_every: The limit_every of this NotificationRuleBase. + :type: int + """ # noqa: E501 + self._limit_every = limit_every + + @property + def limit(self): + """Get the limit of this NotificationRuleBase. + + Don't notify me more than times every seconds. If set, limitEvery cannot be empty. + + :return: The limit of this NotificationRuleBase. + :rtype: int + """ # noqa: E501 + return self._limit + + @limit.setter + def limit(self, limit): + """Set the limit of this NotificationRuleBase. + + Don't notify me more than times every seconds. If set, limitEvery cannot be empty. + + :param limit: The limit of this NotificationRuleBase. + :type: int + """ # noqa: E501 + self._limit = limit + + @property + def tag_rules(self): + """Get the tag_rules of this NotificationRuleBase. + + List of tag rules the notification rule attempts to match. + + :return: The tag_rules of this NotificationRuleBase. + :rtype: list[TagRule] + """ # noqa: E501 + return self._tag_rules + + @tag_rules.setter + def tag_rules(self, tag_rules): + """Set the tag_rules of this NotificationRuleBase. + + List of tag rules the notification rule attempts to match. + + :param tag_rules: The tag_rules of this NotificationRuleBase. + :type: list[TagRule] + """ # noqa: E501 + self._tag_rules = tag_rules + + @property + def description(self): + """Get the description of this NotificationRuleBase. + + An optional description of the notification rule. + + :return: The description of this NotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this NotificationRuleBase. + + An optional description of the notification rule. + + :param description: The description of this NotificationRuleBase. + :type: str + """ # noqa: E501 + self._description = description + + @property + def status_rules(self): + """Get the status_rules of this NotificationRuleBase. + + List of status rules the notification rule attempts to match. + + :return: The status_rules of this NotificationRuleBase. + :rtype: list[StatusRule] + """ # noqa: E501 + return self._status_rules + + @status_rules.setter + def status_rules(self, status_rules): + """Set the status_rules of this NotificationRuleBase. + + List of status rules the notification rule attempts to match. + + :param status_rules: The status_rules of this NotificationRuleBase. + :type: list[StatusRule] + """ # noqa: E501 + if status_rules is None: + raise ValueError("Invalid value for `status_rules`, must not be `None`") # noqa: E501 + self._status_rules = status_rules + + @property + def labels(self): + """Get the labels of this NotificationRuleBase. + + :return: The labels of this NotificationRuleBase. + :rtype: list[Label] + """ # noqa: E501 + return self._labels + + @labels.setter + def labels(self, labels): + """Set the labels of this NotificationRuleBase. + + :param labels: The labels of this NotificationRuleBase. + :type: list[Label] + """ # noqa: E501 + self._labels = labels + + @property + def links(self): + """Get the links of this NotificationRuleBase. + + :return: The links of this NotificationRuleBase. + :rtype: NotificationRuleBaseLinks + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this NotificationRuleBase. + + :param links: The links of this NotificationRuleBase. + :type: NotificationRuleBaseLinks + """ # noqa: E501 + self._links = links + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, NotificationRuleBase): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/notification_rule_base_links.py b/frogpilot/third_party/influxdb_client/domain/notification_rule_base_links.py new file mode 100644 index 000000000..2f6e1c259 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/notification_rule_base_links.py @@ -0,0 +1,219 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class NotificationRuleBaseLinks(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + '_self': 'str', + 'labels': 'str', + 'members': 'str', + 'owners': 'str', + 'query': 'str' + } + + attribute_map = { + '_self': 'self', + 'labels': 'labels', + 'members': 'members', + 'owners': 'owners', + 'query': 'query' + } + + def __init__(self, _self=None, labels=None, members=None, owners=None, query=None): # noqa: E501,D401,D403 + """NotificationRuleBaseLinks - a model defined in OpenAPI.""" # noqa: E501 + self.__self = None + self._labels = None + self._members = None + self._owners = None + self._query = None + self.discriminator = None + + if _self is not None: + self._self = _self + if labels is not None: + self.labels = labels + if members is not None: + self.members = members + if owners is not None: + self.owners = owners + if query is not None: + self.query = query + + @property + def _self(self): + """Get the _self of this NotificationRuleBaseLinks. + + URI of resource. + + :return: The _self of this NotificationRuleBaseLinks. + :rtype: str + """ # noqa: E501 + return self.__self + + @_self.setter + def _self(self, _self): + """Set the _self of this NotificationRuleBaseLinks. + + URI of resource. + + :param _self: The _self of this NotificationRuleBaseLinks. + :type: str + """ # noqa: E501 + self.__self = _self + + @property + def labels(self): + """Get the labels of this NotificationRuleBaseLinks. + + URI of resource. + + :return: The labels of this NotificationRuleBaseLinks. + :rtype: str + """ # noqa: E501 + return self._labels + + @labels.setter + def labels(self, labels): + """Set the labels of this NotificationRuleBaseLinks. + + URI of resource. + + :param labels: The labels of this NotificationRuleBaseLinks. + :type: str + """ # noqa: E501 + self._labels = labels + + @property + def members(self): + """Get the members of this NotificationRuleBaseLinks. + + URI of resource. + + :return: The members of this NotificationRuleBaseLinks. + :rtype: str + """ # noqa: E501 + return self._members + + @members.setter + def members(self, members): + """Set the members of this NotificationRuleBaseLinks. + + URI of resource. + + :param members: The members of this NotificationRuleBaseLinks. + :type: str + """ # noqa: E501 + self._members = members + + @property + def owners(self): + """Get the owners of this NotificationRuleBaseLinks. + + URI of resource. + + :return: The owners of this NotificationRuleBaseLinks. + :rtype: str + """ # noqa: E501 + return self._owners + + @owners.setter + def owners(self, owners): + """Set the owners of this NotificationRuleBaseLinks. + + URI of resource. + + :param owners: The owners of this NotificationRuleBaseLinks. + :type: str + """ # noqa: E501 + self._owners = owners + + @property + def query(self): + """Get the query of this NotificationRuleBaseLinks. + + URI of resource. + + :return: The query of this NotificationRuleBaseLinks. + :rtype: str + """ # noqa: E501 + return self._query + + @query.setter + def query(self, query): + """Set the query of this NotificationRuleBaseLinks. + + URI of resource. + + :param query: The query of this NotificationRuleBaseLinks. + :type: str + """ # noqa: E501 + self._query = query + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, NotificationRuleBaseLinks): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/notification_rule_discriminator.py b/frogpilot/third_party/influxdb_client/domain/notification_rule_discriminator.py new file mode 100644 index 000000000..a677fa523 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/notification_rule_discriminator.py @@ -0,0 +1,132 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.notification_rule_base import NotificationRuleBase + + +class NotificationRuleDiscriminator(NotificationRuleBase): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'latest_completed': 'datetime', + 'last_run_status': 'str', + 'last_run_error': 'str', + 'id': 'str', + 'endpoint_id': 'str', + 'org_id': 'str', + 'task_id': 'str', + 'owner_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'status': 'TaskStatusType', + 'name': 'str', + 'sleep_until': 'str', + 'every': 'str', + 'offset': 'str', + 'runbook_link': 'str', + 'limit_every': 'int', + 'limit': 'int', + 'tag_rules': 'list[TagRule]', + 'description': 'str', + 'status_rules': 'list[StatusRule]', + 'labels': 'list[Label]', + 'links': 'NotificationRuleBaseLinks' + } + + attribute_map = { + 'latest_completed': 'latestCompleted', + 'last_run_status': 'lastRunStatus', + 'last_run_error': 'lastRunError', + 'id': 'id', + 'endpoint_id': 'endpointID', + 'org_id': 'orgID', + 'task_id': 'taskID', + 'owner_id': 'ownerID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'status': 'status', + 'name': 'name', + 'sleep_until': 'sleepUntil', + 'every': 'every', + 'offset': 'offset', + 'runbook_link': 'runbookLink', + 'limit_every': 'limitEvery', + 'limit': 'limit', + 'tag_rules': 'tagRules', + 'description': 'description', + 'status_rules': 'statusRules', + 'labels': 'labels', + 'links': 'links' + } + + def __init__(self, latest_completed=None, last_run_status=None, last_run_error=None, id=None, endpoint_id=None, org_id=None, task_id=None, owner_id=None, created_at=None, updated_at=None, status=None, name=None, sleep_until=None, every=None, offset=None, runbook_link=None, limit_every=None, limit=None, tag_rules=None, description=None, status_rules=None, labels=None, links=None): # noqa: E501,D401,D403 + """NotificationRuleDiscriminator - a model defined in OpenAPI.""" # noqa: E501 + NotificationRuleBase.__init__(self, latest_completed=latest_completed, last_run_status=last_run_status, last_run_error=last_run_error, id=id, endpoint_id=endpoint_id, org_id=org_id, task_id=task_id, owner_id=owner_id, created_at=created_at, updated_at=updated_at, status=status, name=name, sleep_until=sleep_until, every=every, offset=offset, runbook_link=runbook_link, limit_every=limit_every, limit=limit, tag_rules=tag_rules, description=description, status_rules=status_rules, labels=labels, links=links) # noqa: E501 + self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, NotificationRuleDiscriminator): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/notification_rule_update.py b/frogpilot/third_party/influxdb_client/domain/notification_rule_update.py new file mode 100644 index 000000000..a8e9fa1fc --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/notification_rule_update.py @@ -0,0 +1,153 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class NotificationRuleUpdate(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'description': 'str', + 'status': 'str' + } + + attribute_map = { + 'name': 'name', + 'description': 'description', + 'status': 'status' + } + + def __init__(self, name=None, description=None, status=None): # noqa: E501,D401,D403 + """NotificationRuleUpdate - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._description = None + self._status = None + self.discriminator = None + + if name is not None: + self.name = name + if description is not None: + self.description = description + if status is not None: + self.status = status + + @property + def name(self): + """Get the name of this NotificationRuleUpdate. + + :return: The name of this NotificationRuleUpdate. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this NotificationRuleUpdate. + + :param name: The name of this NotificationRuleUpdate. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this NotificationRuleUpdate. + + :return: The description of this NotificationRuleUpdate. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this NotificationRuleUpdate. + + :param description: The description of this NotificationRuleUpdate. + :type: str + """ # noqa: E501 + self._description = description + + @property + def status(self): + """Get the status of this NotificationRuleUpdate. + + :return: The status of this NotificationRuleUpdate. + :rtype: str + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this NotificationRuleUpdate. + + :param status: The status of this NotificationRuleUpdate. + :type: str + """ # noqa: E501 + self._status = status + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, NotificationRuleUpdate): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/notification_rules.py b/frogpilot/third_party/influxdb_client/domain/notification_rules.py new file mode 100644 index 000000000..08eaf6d80 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/notification_rules.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class NotificationRules(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'notification_rules': 'list[NotificationRule]', + 'links': 'Links' + } + + attribute_map = { + 'notification_rules': 'notificationRules', + 'links': 'links' + } + + def __init__(self, notification_rules=None, links=None): # noqa: E501,D401,D403 + """NotificationRules - a model defined in OpenAPI.""" # noqa: E501 + self._notification_rules = None + self._links = None + self.discriminator = None + + if notification_rules is not None: + self.notification_rules = notification_rules + if links is not None: + self.links = links + + @property + def notification_rules(self): + """Get the notification_rules of this NotificationRules. + + :return: The notification_rules of this NotificationRules. + :rtype: list[NotificationRule] + """ # noqa: E501 + return self._notification_rules + + @notification_rules.setter + def notification_rules(self, notification_rules): + """Set the notification_rules of this NotificationRules. + + :param notification_rules: The notification_rules of this NotificationRules. + :type: list[NotificationRule] + """ # noqa: E501 + self._notification_rules = notification_rules + + @property + def links(self): + """Get the links of this NotificationRules. + + :return: The links of this NotificationRules. + :rtype: Links + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this NotificationRules. + + :param links: The links of this NotificationRules. + :type: Links + """ # noqa: E501 + self._links = links + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, NotificationRules): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/object_expression.py b/frogpilot/third_party/influxdb_client/domain/object_expression.py new file mode 100644 index 000000000..05ca2a058 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/object_expression.py @@ -0,0 +1,142 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class ObjectExpression(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'properties': 'list[ModelProperty]' + } + + attribute_map = { + 'type': 'type', + 'properties': 'properties' + } + + def __init__(self, type=None, properties=None): # noqa: E501,D401,D403 + """ObjectExpression - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._properties = None + self.discriminator = None + + if type is not None: + self.type = type + if properties is not None: + self.properties = properties + + @property + def type(self): + """Get the type of this ObjectExpression. + + Type of AST node + + :return: The type of this ObjectExpression. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this ObjectExpression. + + Type of AST node + + :param type: The type of this ObjectExpression. + :type: str + """ # noqa: E501 + self._type = type + + @property + def properties(self): + """Get the properties of this ObjectExpression. + + Object properties + + :return: The properties of this ObjectExpression. + :rtype: list[ModelProperty] + """ # noqa: E501 + return self._properties + + @properties.setter + def properties(self, properties): + """Set the properties of this ObjectExpression. + + Object properties + + :param properties: The properties of this ObjectExpression. + :type: list[ModelProperty] + """ # noqa: E501 + self._properties = properties + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ObjectExpression): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/onboarding_request.py b/frogpilot/third_party/influxdb_client/domain/onboarding_request.py new file mode 100644 index 000000000..7ca4bf0ca --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/onboarding_request.py @@ -0,0 +1,256 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class OnboardingRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'username': 'str', + 'password': 'str', + 'org': 'str', + 'bucket': 'str', + 'retention_period_seconds': 'int', + 'retention_period_hrs': 'int', + 'token': 'str' + } + + attribute_map = { + 'username': 'username', + 'password': 'password', + 'org': 'org', + 'bucket': 'bucket', + 'retention_period_seconds': 'retentionPeriodSeconds', + 'retention_period_hrs': 'retentionPeriodHrs', + 'token': 'token' + } + + def __init__(self, username=None, password=None, org=None, bucket=None, retention_period_seconds=None, retention_period_hrs=None, token=None): # noqa: E501,D401,D403 + """OnboardingRequest - a model defined in OpenAPI.""" # noqa: E501 + self._username = None + self._password = None + self._org = None + self._bucket = None + self._retention_period_seconds = None + self._retention_period_hrs = None + self._token = None + self.discriminator = None + + self.username = username + if password is not None: + self.password = password + self.org = org + self.bucket = bucket + if retention_period_seconds is not None: + self.retention_period_seconds = retention_period_seconds + if retention_period_hrs is not None: + self.retention_period_hrs = retention_period_hrs + if token is not None: + self.token = token + + @property + def username(self): + """Get the username of this OnboardingRequest. + + :return: The username of this OnboardingRequest. + :rtype: str + """ # noqa: E501 + return self._username + + @username.setter + def username(self, username): + """Set the username of this OnboardingRequest. + + :param username: The username of this OnboardingRequest. + :type: str + """ # noqa: E501 + if username is None: + raise ValueError("Invalid value for `username`, must not be `None`") # noqa: E501 + self._username = username + + @property + def password(self): + """Get the password of this OnboardingRequest. + + :return: The password of this OnboardingRequest. + :rtype: str + """ # noqa: E501 + return self._password + + @password.setter + def password(self, password): + """Set the password of this OnboardingRequest. + + :param password: The password of this OnboardingRequest. + :type: str + """ # noqa: E501 + self._password = password + + @property + def org(self): + """Get the org of this OnboardingRequest. + + :return: The org of this OnboardingRequest. + :rtype: str + """ # noqa: E501 + return self._org + + @org.setter + def org(self, org): + """Set the org of this OnboardingRequest. + + :param org: The org of this OnboardingRequest. + :type: str + """ # noqa: E501 + if org is None: + raise ValueError("Invalid value for `org`, must not be `None`") # noqa: E501 + self._org = org + + @property + def bucket(self): + """Get the bucket of this OnboardingRequest. + + :return: The bucket of this OnboardingRequest. + :rtype: str + """ # noqa: E501 + return self._bucket + + @bucket.setter + def bucket(self, bucket): + """Set the bucket of this OnboardingRequest. + + :param bucket: The bucket of this OnboardingRequest. + :type: str + """ # noqa: E501 + if bucket is None: + raise ValueError("Invalid value for `bucket`, must not be `None`") # noqa: E501 + self._bucket = bucket + + @property + def retention_period_seconds(self): + """Get the retention_period_seconds of this OnboardingRequest. + + :return: The retention_period_seconds of this OnboardingRequest. + :rtype: int + """ # noqa: E501 + return self._retention_period_seconds + + @retention_period_seconds.setter + def retention_period_seconds(self, retention_period_seconds): + """Set the retention_period_seconds of this OnboardingRequest. + + :param retention_period_seconds: The retention_period_seconds of this OnboardingRequest. + :type: int + """ # noqa: E501 + self._retention_period_seconds = retention_period_seconds + + @property + def retention_period_hrs(self): + """Get the retention_period_hrs of this OnboardingRequest. + + Retention period *in nanoseconds* for the new bucket. This key's name has been misleading since OSS 2.0 GA, please transition to use `retentionPeriodSeconds` + + :return: The retention_period_hrs of this OnboardingRequest. + :rtype: int + """ # noqa: E501 + return self._retention_period_hrs + + @retention_period_hrs.setter + def retention_period_hrs(self, retention_period_hrs): + """Set the retention_period_hrs of this OnboardingRequest. + + Retention period *in nanoseconds* for the new bucket. This key's name has been misleading since OSS 2.0 GA, please transition to use `retentionPeriodSeconds` + + :param retention_period_hrs: The retention_period_hrs of this OnboardingRequest. + :type: int + """ # noqa: E501 + self._retention_period_hrs = retention_period_hrs + + @property + def token(self): + """Get the token of this OnboardingRequest. + + Authentication token to set on the initial user. If not specified, the server will generate a token. + + :return: The token of this OnboardingRequest. + :rtype: str + """ # noqa: E501 + return self._token + + @token.setter + def token(self, token): + """Set the token of this OnboardingRequest. + + Authentication token to set on the initial user. If not specified, the server will generate a token. + + :param token: The token of this OnboardingRequest. + :type: str + """ # noqa: E501 + self._token = token + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, OnboardingRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/onboarding_response.py b/frogpilot/third_party/influxdb_client/domain/onboarding_response.py new file mode 100644 index 000000000..62db52f5f --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/onboarding_response.py @@ -0,0 +1,176 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class OnboardingResponse(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'user': 'UserResponse', + 'org': 'Organization', + 'bucket': 'Bucket', + 'auth': 'Authorization' + } + + attribute_map = { + 'user': 'user', + 'org': 'org', + 'bucket': 'bucket', + 'auth': 'auth' + } + + def __init__(self, user=None, org=None, bucket=None, auth=None): # noqa: E501,D401,D403 + """OnboardingResponse - a model defined in OpenAPI.""" # noqa: E501 + self._user = None + self._org = None + self._bucket = None + self._auth = None + self.discriminator = None + + if user is not None: + self.user = user + if org is not None: + self.org = org + if bucket is not None: + self.bucket = bucket + if auth is not None: + self.auth = auth + + @property + def user(self): + """Get the user of this OnboardingResponse. + + :return: The user of this OnboardingResponse. + :rtype: UserResponse + """ # noqa: E501 + return self._user + + @user.setter + def user(self, user): + """Set the user of this OnboardingResponse. + + :param user: The user of this OnboardingResponse. + :type: UserResponse + """ # noqa: E501 + self._user = user + + @property + def org(self): + """Get the org of this OnboardingResponse. + + :return: The org of this OnboardingResponse. + :rtype: Organization + """ # noqa: E501 + return self._org + + @org.setter + def org(self, org): + """Set the org of this OnboardingResponse. + + :param org: The org of this OnboardingResponse. + :type: Organization + """ # noqa: E501 + self._org = org + + @property + def bucket(self): + """Get the bucket of this OnboardingResponse. + + :return: The bucket of this OnboardingResponse. + :rtype: Bucket + """ # noqa: E501 + return self._bucket + + @bucket.setter + def bucket(self, bucket): + """Set the bucket of this OnboardingResponse. + + :param bucket: The bucket of this OnboardingResponse. + :type: Bucket + """ # noqa: E501 + self._bucket = bucket + + @property + def auth(self): + """Get the auth of this OnboardingResponse. + + :return: The auth of this OnboardingResponse. + :rtype: Authorization + """ # noqa: E501 + return self._auth + + @auth.setter + def auth(self, auth): + """Set the auth of this OnboardingResponse. + + :param auth: The auth of this OnboardingResponse. + :type: Authorization + """ # noqa: E501 + self._auth = auth + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, OnboardingResponse): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/option_statement.py b/frogpilot/third_party/influxdb_client/domain/option_statement.py new file mode 100644 index 000000000..4ab156998 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/option_statement.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.statement import Statement + + +class OptionStatement(Statement): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'assignment': 'object' + } + + attribute_map = { + 'type': 'type', + 'assignment': 'assignment' + } + + def __init__(self, type=None, assignment=None): # noqa: E501,D401,D403 + """OptionStatement - a model defined in OpenAPI.""" # noqa: E501 + Statement.__init__(self) # noqa: E501 + + self._type = None + self._assignment = None + self.discriminator = None + + if type is not None: + self.type = type + if assignment is not None: + self.assignment = assignment + + @property + def type(self): + """Get the type of this OptionStatement. + + Type of AST node + + :return: The type of this OptionStatement. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this OptionStatement. + + Type of AST node + + :param type: The type of this OptionStatement. + :type: str + """ # noqa: E501 + self._type = type + + @property + def assignment(self): + """Get the assignment of this OptionStatement. + + :return: The assignment of this OptionStatement. + :rtype: object + """ # noqa: E501 + return self._assignment + + @assignment.setter + def assignment(self, assignment): + """Set the assignment of this OptionStatement. + + :param assignment: The assignment of this OptionStatement. + :type: object + """ # noqa: E501 + self._assignment = assignment + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, OptionStatement): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/organization.py b/frogpilot/third_party/influxdb_client/domain/organization.py new file mode 100644 index 000000000..4071964c1 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/organization.py @@ -0,0 +1,277 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Organization(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'links': 'OrganizationLinks', + 'id': 'str', + 'name': 'str', + 'default_storage_type': 'str', + 'description': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'status': 'str' + } + + attribute_map = { + 'links': 'links', + 'id': 'id', + 'name': 'name', + 'default_storage_type': 'defaultStorageType', + 'description': 'description', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'status': 'status' + } + + def __init__(self, links=None, id=None, name=None, default_storage_type=None, description=None, created_at=None, updated_at=None, status='active'): # noqa: E501,D401,D403 + """Organization - a model defined in OpenAPI.""" # noqa: E501 + self._links = None + self._id = None + self._name = None + self._default_storage_type = None + self._description = None + self._created_at = None + self._updated_at = None + self._status = None + self.discriminator = None + + if links is not None: + self.links = links + if id is not None: + self.id = id + self.name = name + if default_storage_type is not None: + self.default_storage_type = default_storage_type + if description is not None: + self.description = description + if created_at is not None: + self.created_at = created_at + if updated_at is not None: + self.updated_at = updated_at + if status is not None: + self.status = status + + @property + def links(self): + """Get the links of this Organization. + + :return: The links of this Organization. + :rtype: OrganizationLinks + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Organization. + + :param links: The links of this Organization. + :type: OrganizationLinks + """ # noqa: E501 + self._links = links + + @property + def id(self): + """Get the id of this Organization. + + :return: The id of this Organization. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this Organization. + + :param id: The id of this Organization. + :type: str + """ # noqa: E501 + self._id = id + + @property + def name(self): + """Get the name of this Organization. + + :return: The name of this Organization. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this Organization. + + :param name: The name of this Organization. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def default_storage_type(self): + """Get the default_storage_type of this Organization. + + Discloses whether the organization uses TSM or IOx. + + :return: The default_storage_type of this Organization. + :rtype: str + """ # noqa: E501 + return self._default_storage_type + + @default_storage_type.setter + def default_storage_type(self, default_storage_type): + """Set the default_storage_type of this Organization. + + Discloses whether the organization uses TSM or IOx. + + :param default_storage_type: The default_storage_type of this Organization. + :type: str + """ # noqa: E501 + self._default_storage_type = default_storage_type + + @property + def description(self): + """Get the description of this Organization. + + :return: The description of this Organization. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this Organization. + + :param description: The description of this Organization. + :type: str + """ # noqa: E501 + self._description = description + + @property + def created_at(self): + """Get the created_at of this Organization. + + :return: The created_at of this Organization. + :rtype: datetime + """ # noqa: E501 + return self._created_at + + @created_at.setter + def created_at(self, created_at): + """Set the created_at of this Organization. + + :param created_at: The created_at of this Organization. + :type: datetime + """ # noqa: E501 + self._created_at = created_at + + @property + def updated_at(self): + """Get the updated_at of this Organization. + + :return: The updated_at of this Organization. + :rtype: datetime + """ # noqa: E501 + return self._updated_at + + @updated_at.setter + def updated_at(self, updated_at): + """Set the updated_at of this Organization. + + :param updated_at: The updated_at of this Organization. + :type: datetime + """ # noqa: E501 + self._updated_at = updated_at + + @property + def status(self): + """Get the status of this Organization. + + If inactive, the organization is inactive. + + :return: The status of this Organization. + :rtype: str + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this Organization. + + If inactive, the organization is inactive. + + :param status: The status of this Organization. + :type: str + """ # noqa: E501 + self._status = status + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Organization): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/organization_links.py b/frogpilot/third_party/influxdb_client/domain/organization_links.py new file mode 100644 index 000000000..a2cca0424 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/organization_links.py @@ -0,0 +1,300 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class OrganizationLinks(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + '_self': 'str', + 'members': 'str', + 'owners': 'str', + 'labels': 'str', + 'secrets': 'str', + 'buckets': 'str', + 'tasks': 'str', + 'dashboards': 'str' + } + + attribute_map = { + '_self': 'self', + 'members': 'members', + 'owners': 'owners', + 'labels': 'labels', + 'secrets': 'secrets', + 'buckets': 'buckets', + 'tasks': 'tasks', + 'dashboards': 'dashboards' + } + + def __init__(self, _self=None, members=None, owners=None, labels=None, secrets=None, buckets=None, tasks=None, dashboards=None): # noqa: E501,D401,D403 + """OrganizationLinks - a model defined in OpenAPI.""" # noqa: E501 + self.__self = None + self._members = None + self._owners = None + self._labels = None + self._secrets = None + self._buckets = None + self._tasks = None + self._dashboards = None + self.discriminator = None + + if _self is not None: + self._self = _self + if members is not None: + self.members = members + if owners is not None: + self.owners = owners + if labels is not None: + self.labels = labels + if secrets is not None: + self.secrets = secrets + if buckets is not None: + self.buckets = buckets + if tasks is not None: + self.tasks = tasks + if dashboards is not None: + self.dashboards = dashboards + + @property + def _self(self): + """Get the _self of this OrganizationLinks. + + URI of resource. + + :return: The _self of this OrganizationLinks. + :rtype: str + """ # noqa: E501 + return self.__self + + @_self.setter + def _self(self, _self): + """Set the _self of this OrganizationLinks. + + URI of resource. + + :param _self: The _self of this OrganizationLinks. + :type: str + """ # noqa: E501 + self.__self = _self + + @property + def members(self): + """Get the members of this OrganizationLinks. + + URI of resource. + + :return: The members of this OrganizationLinks. + :rtype: str + """ # noqa: E501 + return self._members + + @members.setter + def members(self, members): + """Set the members of this OrganizationLinks. + + URI of resource. + + :param members: The members of this OrganizationLinks. + :type: str + """ # noqa: E501 + self._members = members + + @property + def owners(self): + """Get the owners of this OrganizationLinks. + + URI of resource. + + :return: The owners of this OrganizationLinks. + :rtype: str + """ # noqa: E501 + return self._owners + + @owners.setter + def owners(self, owners): + """Set the owners of this OrganizationLinks. + + URI of resource. + + :param owners: The owners of this OrganizationLinks. + :type: str + """ # noqa: E501 + self._owners = owners + + @property + def labels(self): + """Get the labels of this OrganizationLinks. + + URI of resource. + + :return: The labels of this OrganizationLinks. + :rtype: str + """ # noqa: E501 + return self._labels + + @labels.setter + def labels(self, labels): + """Set the labels of this OrganizationLinks. + + URI of resource. + + :param labels: The labels of this OrganizationLinks. + :type: str + """ # noqa: E501 + self._labels = labels + + @property + def secrets(self): + """Get the secrets of this OrganizationLinks. + + URI of resource. + + :return: The secrets of this OrganizationLinks. + :rtype: str + """ # noqa: E501 + return self._secrets + + @secrets.setter + def secrets(self, secrets): + """Set the secrets of this OrganizationLinks. + + URI of resource. + + :param secrets: The secrets of this OrganizationLinks. + :type: str + """ # noqa: E501 + self._secrets = secrets + + @property + def buckets(self): + """Get the buckets of this OrganizationLinks. + + URI of resource. + + :return: The buckets of this OrganizationLinks. + :rtype: str + """ # noqa: E501 + return self._buckets + + @buckets.setter + def buckets(self, buckets): + """Set the buckets of this OrganizationLinks. + + URI of resource. + + :param buckets: The buckets of this OrganizationLinks. + :type: str + """ # noqa: E501 + self._buckets = buckets + + @property + def tasks(self): + """Get the tasks of this OrganizationLinks. + + URI of resource. + + :return: The tasks of this OrganizationLinks. + :rtype: str + """ # noqa: E501 + return self._tasks + + @tasks.setter + def tasks(self, tasks): + """Set the tasks of this OrganizationLinks. + + URI of resource. + + :param tasks: The tasks of this OrganizationLinks. + :type: str + """ # noqa: E501 + self._tasks = tasks + + @property + def dashboards(self): + """Get the dashboards of this OrganizationLinks. + + URI of resource. + + :return: The dashboards of this OrganizationLinks. + :rtype: str + """ # noqa: E501 + return self._dashboards + + @dashboards.setter + def dashboards(self, dashboards): + """Set the dashboards of this OrganizationLinks. + + URI of resource. + + :param dashboards: The dashboards of this OrganizationLinks. + :type: str + """ # noqa: E501 + self._dashboards = dashboards + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, OrganizationLinks): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/organizations.py b/frogpilot/third_party/influxdb_client/domain/organizations.py new file mode 100644 index 000000000..844c7faab --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/organizations.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Organizations(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'links': 'Links', + 'orgs': 'list[Organization]' + } + + attribute_map = { + 'links': 'links', + 'orgs': 'orgs' + } + + def __init__(self, links=None, orgs=None): # noqa: E501,D401,D403 + """Organizations - a model defined in OpenAPI.""" # noqa: E501 + self._links = None + self._orgs = None + self.discriminator = None + + if links is not None: + self.links = links + if orgs is not None: + self.orgs = orgs + + @property + def links(self): + """Get the links of this Organizations. + + :return: The links of this Organizations. + :rtype: Links + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Organizations. + + :param links: The links of this Organizations. + :type: Links + """ # noqa: E501 + self._links = links + + @property + def orgs(self): + """Get the orgs of this Organizations. + + :return: The orgs of this Organizations. + :rtype: list[Organization] + """ # noqa: E501 + return self._orgs + + @orgs.setter + def orgs(self, orgs): + """Set the orgs of this Organizations. + + :param orgs: The orgs of this Organizations. + :type: list[Organization] + """ # noqa: E501 + self._orgs = orgs + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Organizations): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/package.py b/frogpilot/third_party/influxdb_client/domain/package.py new file mode 100644 index 000000000..9c328e6f7 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/package.py @@ -0,0 +1,192 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Package(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'path': 'str', + 'package': 'str', + 'files': 'list[File]' + } + + attribute_map = { + 'type': 'type', + 'path': 'path', + 'package': 'package', + 'files': 'files' + } + + def __init__(self, type=None, path=None, package=None, files=None): # noqa: E501,D401,D403 + """Package - a model defined in OpenAPI.""" # noqa: E501 + self._type = None + self._path = None + self._package = None + self._files = None + self.discriminator = None + + if type is not None: + self.type = type + if path is not None: + self.path = path + if package is not None: + self.package = package + if files is not None: + self.files = files + + @property + def type(self): + """Get the type of this Package. + + Type of AST node + + :return: The type of this Package. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this Package. + + Type of AST node + + :param type: The type of this Package. + :type: str + """ # noqa: E501 + self._type = type + + @property + def path(self): + """Get the path of this Package. + + Package import path + + :return: The path of this Package. + :rtype: str + """ # noqa: E501 + return self._path + + @path.setter + def path(self, path): + """Set the path of this Package. + + Package import path + + :param path: The path of this Package. + :type: str + """ # noqa: E501 + self._path = path + + @property + def package(self): + """Get the package of this Package. + + Package name + + :return: The package of this Package. + :rtype: str + """ # noqa: E501 + return self._package + + @package.setter + def package(self, package): + """Set the package of this Package. + + Package name + + :param package: The package of this Package. + :type: str + """ # noqa: E501 + self._package = package + + @property + def files(self): + """Get the files of this Package. + + Package files + + :return: The files of this Package. + :rtype: list[File] + """ # noqa: E501 + return self._files + + @files.setter + def files(self, files): + """Set the files of this Package. + + Package files + + :param files: The files of this Package. + :type: list[File] + """ # noqa: E501 + self._files = files + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Package): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/package_clause.py b/frogpilot/third_party/influxdb_client/domain/package_clause.py new file mode 100644 index 000000000..b9cb6abc6 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/package_clause.py @@ -0,0 +1,134 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class PackageClause(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'name': 'Identifier' + } + + attribute_map = { + 'type': 'type', + 'name': 'name' + } + + def __init__(self, type=None, name=None): # noqa: E501,D401,D403 + """PackageClause - a model defined in OpenAPI.""" # noqa: E501 + self._type = None + self._name = None + self.discriminator = None + + if type is not None: + self.type = type + if name is not None: + self.name = name + + @property + def type(self): + """Get the type of this PackageClause. + + Type of AST node + + :return: The type of this PackageClause. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this PackageClause. + + Type of AST node + + :param type: The type of this PackageClause. + :type: str + """ # noqa: E501 + self._type = type + + @property + def name(self): + """Get the name of this PackageClause. + + :return: The name of this PackageClause. + :rtype: Identifier + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this PackageClause. + + :param name: The name of this PackageClause. + :type: Identifier + """ # noqa: E501 + self._name = name + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PackageClause): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/pager_duty_notification_endpoint.py b/frogpilot/third_party/influxdb_client/domain/pager_duty_notification_endpoint.py new file mode 100644 index 000000000..f57b6c005 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/pager_duty_notification_endpoint.py @@ -0,0 +1,157 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.notification_endpoint_discriminator import NotificationEndpointDiscriminator + + +class PagerDutyNotificationEndpoint(NotificationEndpointDiscriminator): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'client_url': 'str', + 'routing_key': 'str', + 'id': 'str', + 'org_id': 'str', + 'user_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'description': 'str', + 'name': 'str', + 'status': 'str', + 'labels': 'list[Label]', + 'links': 'NotificationEndpointBaseLinks', + 'type': 'NotificationEndpointType' + } + + attribute_map = { + 'client_url': 'clientURL', + 'routing_key': 'routingKey', + 'id': 'id', + 'org_id': 'orgID', + 'user_id': 'userID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'description': 'description', + 'name': 'name', + 'status': 'status', + 'labels': 'labels', + 'links': 'links', + 'type': 'type' + } + + def __init__(self, client_url=None, routing_key=None, id=None, org_id=None, user_id=None, created_at=None, updated_at=None, description=None, name=None, status='active', labels=None, links=None, type="pagerduty"): # noqa: E501,D401,D403 + """PagerDutyNotificationEndpoint - a model defined in OpenAPI.""" # noqa: E501 + NotificationEndpointDiscriminator.__init__(self, id=id, org_id=org_id, user_id=user_id, created_at=created_at, updated_at=updated_at, description=description, name=name, status=status, labels=labels, links=links, type=type) # noqa: E501 + + self._client_url = None + self._routing_key = None + self.discriminator = None + + if client_url is not None: + self.client_url = client_url + self.routing_key = routing_key + + @property + def client_url(self): + """Get the client_url of this PagerDutyNotificationEndpoint. + + :return: The client_url of this PagerDutyNotificationEndpoint. + :rtype: str + """ # noqa: E501 + return self._client_url + + @client_url.setter + def client_url(self, client_url): + """Set the client_url of this PagerDutyNotificationEndpoint. + + :param client_url: The client_url of this PagerDutyNotificationEndpoint. + :type: str + """ # noqa: E501 + self._client_url = client_url + + @property + def routing_key(self): + """Get the routing_key of this PagerDutyNotificationEndpoint. + + :return: The routing_key of this PagerDutyNotificationEndpoint. + :rtype: str + """ # noqa: E501 + return self._routing_key + + @routing_key.setter + def routing_key(self, routing_key): + """Set the routing_key of this PagerDutyNotificationEndpoint. + + :param routing_key: The routing_key of this PagerDutyNotificationEndpoint. + :type: str + """ # noqa: E501 + if routing_key is None: + raise ValueError("Invalid value for `routing_key`, must not be `None`") # noqa: E501 + self._routing_key = routing_key + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PagerDutyNotificationEndpoint): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/pager_duty_notification_rule.py b/frogpilot/third_party/influxdb_client/domain/pager_duty_notification_rule.py new file mode 100644 index 000000000..8ccf2bd2b --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/pager_duty_notification_rule.py @@ -0,0 +1,136 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.pager_duty_notification_rule_base import PagerDutyNotificationRuleBase + + +class PagerDutyNotificationRule(PagerDutyNotificationRuleBase): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'message_template': 'str', + 'latest_completed': 'datetime', + 'last_run_status': 'str', + 'last_run_error': 'str', + 'id': 'str', + 'endpoint_id': 'str', + 'org_id': 'str', + 'task_id': 'str', + 'owner_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'status': 'TaskStatusType', + 'name': 'str', + 'sleep_until': 'str', + 'every': 'str', + 'offset': 'str', + 'runbook_link': 'str', + 'limit_every': 'int', + 'limit': 'int', + 'tag_rules': 'list[TagRule]', + 'description': 'str', + 'status_rules': 'list[StatusRule]', + 'labels': 'list[Label]', + 'links': 'NotificationRuleBaseLinks' + } + + attribute_map = { + 'type': 'type', + 'message_template': 'messageTemplate', + 'latest_completed': 'latestCompleted', + 'last_run_status': 'lastRunStatus', + 'last_run_error': 'lastRunError', + 'id': 'id', + 'endpoint_id': 'endpointID', + 'org_id': 'orgID', + 'task_id': 'taskID', + 'owner_id': 'ownerID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'status': 'status', + 'name': 'name', + 'sleep_until': 'sleepUntil', + 'every': 'every', + 'offset': 'offset', + 'runbook_link': 'runbookLink', + 'limit_every': 'limitEvery', + 'limit': 'limit', + 'tag_rules': 'tagRules', + 'description': 'description', + 'status_rules': 'statusRules', + 'labels': 'labels', + 'links': 'links' + } + + def __init__(self, type="pagerduty", message_template=None, latest_completed=None, last_run_status=None, last_run_error=None, id=None, endpoint_id=None, org_id=None, task_id=None, owner_id=None, created_at=None, updated_at=None, status=None, name=None, sleep_until=None, every=None, offset=None, runbook_link=None, limit_every=None, limit=None, tag_rules=None, description=None, status_rules=None, labels=None, links=None): # noqa: E501,D401,D403 + """PagerDutyNotificationRule - a model defined in OpenAPI.""" # noqa: E501 + PagerDutyNotificationRuleBase.__init__(self, type=type, message_template=message_template, latest_completed=latest_completed, last_run_status=last_run_status, last_run_error=last_run_error, id=id, endpoint_id=endpoint_id, org_id=org_id, task_id=task_id, owner_id=owner_id, created_at=created_at, updated_at=updated_at, status=status, name=name, sleep_until=sleep_until, every=every, offset=offset, runbook_link=runbook_link, limit_every=limit_every, limit=limit, tag_rules=tag_rules, description=description, status_rules=status_rules, labels=labels, links=links) # noqa: E501 + self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PagerDutyNotificationRule): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/pager_duty_notification_rule_base.py b/frogpilot/third_party/influxdb_client/domain/pager_duty_notification_rule_base.py new file mode 100644 index 000000000..8e447743b --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/pager_duty_notification_rule_base.py @@ -0,0 +1,182 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.notification_rule_discriminator import NotificationRuleDiscriminator + + +class PagerDutyNotificationRuleBase(NotificationRuleDiscriminator): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'message_template': 'str', + 'latest_completed': 'datetime', + 'last_run_status': 'str', + 'last_run_error': 'str', + 'id': 'str', + 'endpoint_id': 'str', + 'org_id': 'str', + 'task_id': 'str', + 'owner_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'status': 'TaskStatusType', + 'name': 'str', + 'sleep_until': 'str', + 'every': 'str', + 'offset': 'str', + 'runbook_link': 'str', + 'limit_every': 'int', + 'limit': 'int', + 'tag_rules': 'list[TagRule]', + 'description': 'str', + 'status_rules': 'list[StatusRule]', + 'labels': 'list[Label]', + 'links': 'NotificationRuleBaseLinks' + } + + attribute_map = { + 'type': 'type', + 'message_template': 'messageTemplate', + 'latest_completed': 'latestCompleted', + 'last_run_status': 'lastRunStatus', + 'last_run_error': 'lastRunError', + 'id': 'id', + 'endpoint_id': 'endpointID', + 'org_id': 'orgID', + 'task_id': 'taskID', + 'owner_id': 'ownerID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'status': 'status', + 'name': 'name', + 'sleep_until': 'sleepUntil', + 'every': 'every', + 'offset': 'offset', + 'runbook_link': 'runbookLink', + 'limit_every': 'limitEvery', + 'limit': 'limit', + 'tag_rules': 'tagRules', + 'description': 'description', + 'status_rules': 'statusRules', + 'labels': 'labels', + 'links': 'links' + } + + def __init__(self, type=None, message_template=None, latest_completed=None, last_run_status=None, last_run_error=None, id=None, endpoint_id=None, org_id=None, task_id=None, owner_id=None, created_at=None, updated_at=None, status=None, name=None, sleep_until=None, every=None, offset=None, runbook_link=None, limit_every=None, limit=None, tag_rules=None, description=None, status_rules=None, labels=None, links=None): # noqa: E501,D401,D403 + """PagerDutyNotificationRuleBase - a model defined in OpenAPI.""" # noqa: E501 + NotificationRuleDiscriminator.__init__(self, latest_completed=latest_completed, last_run_status=last_run_status, last_run_error=last_run_error, id=id, endpoint_id=endpoint_id, org_id=org_id, task_id=task_id, owner_id=owner_id, created_at=created_at, updated_at=updated_at, status=status, name=name, sleep_until=sleep_until, every=every, offset=offset, runbook_link=runbook_link, limit_every=limit_every, limit=limit, tag_rules=tag_rules, description=description, status_rules=status_rules, labels=labels, links=links) # noqa: E501 + + self._type = None + self._message_template = None + self.discriminator = None + + self.type = type + self.message_template = message_template + + @property + def type(self): + """Get the type of this PagerDutyNotificationRuleBase. + + :return: The type of this PagerDutyNotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this PagerDutyNotificationRuleBase. + + :param type: The type of this PagerDutyNotificationRuleBase. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def message_template(self): + """Get the message_template of this PagerDutyNotificationRuleBase. + + :return: The message_template of this PagerDutyNotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._message_template + + @message_template.setter + def message_template(self, message_template): + """Set the message_template of this PagerDutyNotificationRuleBase. + + :param message_template: The message_template of this PagerDutyNotificationRuleBase. + :type: str + """ # noqa: E501 + if message_template is None: + raise ValueError("Invalid value for `message_template`, must not be `None`") # noqa: E501 + self._message_template = message_template + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PagerDutyNotificationRuleBase): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/paren_expression.py b/frogpilot/third_party/influxdb_client/domain/paren_expression.py new file mode 100644 index 000000000..68bcfe03c --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/paren_expression.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class ParenExpression(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'expression': 'Expression' + } + + attribute_map = { + 'type': 'type', + 'expression': 'expression' + } + + def __init__(self, type=None, expression=None): # noqa: E501,D401,D403 + """ParenExpression - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._expression = None + self.discriminator = None + + if type is not None: + self.type = type + if expression is not None: + self.expression = expression + + @property + def type(self): + """Get the type of this ParenExpression. + + Type of AST node + + :return: The type of this ParenExpression. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this ParenExpression. + + Type of AST node + + :param type: The type of this ParenExpression. + :type: str + """ # noqa: E501 + self._type = type + + @property + def expression(self): + """Get the expression of this ParenExpression. + + :return: The expression of this ParenExpression. + :rtype: Expression + """ # noqa: E501 + return self._expression + + @expression.setter + def expression(self, expression): + """Set the expression of this ParenExpression. + + :param expression: The expression of this ParenExpression. + :type: Expression + """ # noqa: E501 + self._expression = expression + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ParenExpression): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/password_reset_body.py b/frogpilot/third_party/influxdb_client/domain/password_reset_body.py new file mode 100644 index 000000000..22dc5c974 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/password_reset_body.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class PasswordResetBody(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'password': 'str' + } + + attribute_map = { + 'password': 'password' + } + + def __init__(self, password=None): # noqa: E501,D401,D403 + """PasswordResetBody - a model defined in OpenAPI.""" # noqa: E501 + self._password = None + self.discriminator = None + + self.password = password + + @property + def password(self): + """Get the password of this PasswordResetBody. + + :return: The password of this PasswordResetBody. + :rtype: str + """ # noqa: E501 + return self._password + + @password.setter + def password(self, password): + """Set the password of this PasswordResetBody. + + :param password: The password of this PasswordResetBody. + :type: str + """ # noqa: E501 + if password is None: + raise ValueError("Invalid value for `password`, must not be `None`") # noqa: E501 + self._password = password + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PasswordResetBody): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/patch_bucket_request.py b/frogpilot/third_party/influxdb_client/domain/patch_bucket_request.py new file mode 100644 index 000000000..d2416a548 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/patch_bucket_request.py @@ -0,0 +1,165 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class PatchBucketRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'description': 'str', + 'retention_rules': 'list[PatchRetentionRule]' + } + + attribute_map = { + 'name': 'name', + 'description': 'description', + 'retention_rules': 'retentionRules' + } + + def __init__(self, name=None, description=None, retention_rules=None): # noqa: E501,D401,D403 + """PatchBucketRequest - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._description = None + self._retention_rules = None + self.discriminator = None + + if name is not None: + self.name = name + if description is not None: + self.description = description + if retention_rules is not None: + self.retention_rules = retention_rules + + @property + def name(self): + """Get the name of this PatchBucketRequest. + + The name of the bucket. + + :return: The name of this PatchBucketRequest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this PatchBucketRequest. + + The name of the bucket. + + :param name: The name of this PatchBucketRequest. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this PatchBucketRequest. + + A description of the bucket. + + :return: The description of this PatchBucketRequest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this PatchBucketRequest. + + A description of the bucket. + + :param description: The description of this PatchBucketRequest. + :type: str + """ # noqa: E501 + self._description = description + + @property + def retention_rules(self): + """Get the retention_rules of this PatchBucketRequest. + + Updates to rules to expire or retain data. No rules means no updates. + + :return: The retention_rules of this PatchBucketRequest. + :rtype: list[PatchRetentionRule] + """ # noqa: E501 + return self._retention_rules + + @retention_rules.setter + def retention_rules(self, retention_rules): + """Set the retention_rules of this PatchBucketRequest. + + Updates to rules to expire or retain data. No rules means no updates. + + :param retention_rules: The retention_rules of this PatchBucketRequest. + :type: list[PatchRetentionRule] + """ # noqa: E501 + self._retention_rules = retention_rules + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PatchBucketRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/patch_dashboard_request.py b/frogpilot/third_party/influxdb_client/domain/patch_dashboard_request.py new file mode 100644 index 000000000..8405c3b0f --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/patch_dashboard_request.py @@ -0,0 +1,161 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class PatchDashboardRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'description': 'str', + 'cells': 'CellWithViewProperties' + } + + attribute_map = { + 'name': 'name', + 'description': 'description', + 'cells': 'cells' + } + + def __init__(self, name=None, description=None, cells=None): # noqa: E501,D401,D403 + """PatchDashboardRequest - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._description = None + self._cells = None + self.discriminator = None + + if name is not None: + self.name = name + if description is not None: + self.description = description + if cells is not None: + self.cells = cells + + @property + def name(self): + """Get the name of this PatchDashboardRequest. + + optional, when provided will replace the name + + :return: The name of this PatchDashboardRequest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this PatchDashboardRequest. + + optional, when provided will replace the name + + :param name: The name of this PatchDashboardRequest. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this PatchDashboardRequest. + + optional, when provided will replace the description + + :return: The description of this PatchDashboardRequest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this PatchDashboardRequest. + + optional, when provided will replace the description + + :param description: The description of this PatchDashboardRequest. + :type: str + """ # noqa: E501 + self._description = description + + @property + def cells(self): + """Get the cells of this PatchDashboardRequest. + + :return: The cells of this PatchDashboardRequest. + :rtype: CellWithViewProperties + """ # noqa: E501 + return self._cells + + @cells.setter + def cells(self, cells): + """Set the cells of this PatchDashboardRequest. + + :param cells: The cells of this PatchDashboardRequest. + :type: CellWithViewProperties + """ # noqa: E501 + self._cells = cells + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PatchDashboardRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/patch_organization_request.py b/frogpilot/third_party/influxdb_client/domain/patch_organization_request.py new file mode 100644 index 000000000..ff74e17b0 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/patch_organization_request.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class PatchOrganizationRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'description': 'str' + } + + attribute_map = { + 'name': 'name', + 'description': 'description' + } + + def __init__(self, name=None, description=None): # noqa: E501,D401,D403 + """PatchOrganizationRequest - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._description = None + self.discriminator = None + + if name is not None: + self.name = name + if description is not None: + self.description = description + + @property + def name(self): + """Get the name of this PatchOrganizationRequest. + + The name of the organization. + + :return: The name of this PatchOrganizationRequest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this PatchOrganizationRequest. + + The name of the organization. + + :param name: The name of this PatchOrganizationRequest. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this PatchOrganizationRequest. + + The description of the organization. + + :return: The description of this PatchOrganizationRequest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this PatchOrganizationRequest. + + The description of the organization. + + :param description: The description of this PatchOrganizationRequest. + :type: str + """ # noqa: E501 + self._description = description + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PatchOrganizationRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/patch_retention_rule.py b/frogpilot/third_party/influxdb_client/domain/patch_retention_rule.py new file mode 100644 index 000000000..d02335a1d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/patch_retention_rule.py @@ -0,0 +1,164 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class PatchRetentionRule(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'every_seconds': 'int', + 'shard_group_duration_seconds': 'int' + } + + attribute_map = { + 'type': 'type', + 'every_seconds': 'everySeconds', + 'shard_group_duration_seconds': 'shardGroupDurationSeconds' + } + + def __init__(self, type='expire', every_seconds=2592000, shard_group_duration_seconds=None): # noqa: E501,D401,D403 + """PatchRetentionRule - a model defined in OpenAPI.""" # noqa: E501 + self._type = None + self._every_seconds = None + self._shard_group_duration_seconds = None + self.discriminator = None + + if type is not None: + self.type = type + self.every_seconds = every_seconds + if shard_group_duration_seconds is not None: + self.shard_group_duration_seconds = shard_group_duration_seconds + + @property + def type(self): + """Get the type of this PatchRetentionRule. + + :return: The type of this PatchRetentionRule. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this PatchRetentionRule. + + :param type: The type of this PatchRetentionRule. + :type: str + """ # noqa: E501 + self._type = type + + @property + def every_seconds(self): + """Get the every_seconds of this PatchRetentionRule. + + The number of seconds to keep data. Default duration is `2592000` (30 days). `0` represents infinite retention. + + :return: The every_seconds of this PatchRetentionRule. + :rtype: int + """ # noqa: E501 + return self._every_seconds + + @every_seconds.setter + def every_seconds(self, every_seconds): + """Set the every_seconds of this PatchRetentionRule. + + The number of seconds to keep data. Default duration is `2592000` (30 days). `0` represents infinite retention. + + :param every_seconds: The every_seconds of this PatchRetentionRule. + :type: int + """ # noqa: E501 + if every_seconds is None: + raise ValueError("Invalid value for `every_seconds`, must not be `None`") # noqa: E501 + if every_seconds is not None and every_seconds < 0: # noqa: E501 + raise ValueError("Invalid value for `every_seconds`, must be a value greater than or equal to `0`") # noqa: E501 + self._every_seconds = every_seconds + + @property + def shard_group_duration_seconds(self): + """Get the shard_group_duration_seconds of this PatchRetentionRule. + + The [shard group duration](https://docs.influxdata.com/influxdb/latest/reference/glossary/#shard). The number of seconds that each shard group covers. #### InfluxDB Cloud - Doesn't use `shardGroupDurationsSeconds`. #### InfluxDB OSS - Default value depends on the [bucket retention period](https://docs.influxdata.com/influxdb/latest/reference/internals/shards/#shard-group-duration). #### Related guides - InfluxDB [shards and shard groups](https://docs.influxdata.com/influxdb/latest/reference/internals/shards/) + + :return: The shard_group_duration_seconds of this PatchRetentionRule. + :rtype: int + """ # noqa: E501 + return self._shard_group_duration_seconds + + @shard_group_duration_seconds.setter + def shard_group_duration_seconds(self, shard_group_duration_seconds): + """Set the shard_group_duration_seconds of this PatchRetentionRule. + + The [shard group duration](https://docs.influxdata.com/influxdb/latest/reference/glossary/#shard). The number of seconds that each shard group covers. #### InfluxDB Cloud - Doesn't use `shardGroupDurationsSeconds`. #### InfluxDB OSS - Default value depends on the [bucket retention period](https://docs.influxdata.com/influxdb/latest/reference/internals/shards/#shard-group-duration). #### Related guides - InfluxDB [shards and shard groups](https://docs.influxdata.com/influxdb/latest/reference/internals/shards/) + + :param shard_group_duration_seconds: The shard_group_duration_seconds of this PatchRetentionRule. + :type: int + """ # noqa: E501 + self._shard_group_duration_seconds = shard_group_duration_seconds + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PatchRetentionRule): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/patch_stack_request.py b/frogpilot/third_party/influxdb_client/domain/patch_stack_request.py new file mode 100644 index 000000000..917cc3151 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/patch_stack_request.py @@ -0,0 +1,173 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class PatchStackRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'description': 'str', + 'template_ur_ls': 'list[str]', + 'additional_resources': 'list[PatchStackRequestAdditionalResources]' + } + + attribute_map = { + 'name': 'name', + 'description': 'description', + 'template_ur_ls': 'templateURLs', + 'additional_resources': 'additionalResources' + } + + def __init__(self, name=None, description=None, template_ur_ls=None, additional_resources=None): # noqa: E501,D401,D403 + """PatchStackRequest - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._description = None + self._template_ur_ls = None + self._additional_resources = None + self.discriminator = None + + self.name = name + self.description = description + self.template_ur_ls = template_ur_ls + if additional_resources is not None: + self.additional_resources = additional_resources + + @property + def name(self): + """Get the name of this PatchStackRequest. + + :return: The name of this PatchStackRequest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this PatchStackRequest. + + :param name: The name of this PatchStackRequest. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this PatchStackRequest. + + :return: The description of this PatchStackRequest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this PatchStackRequest. + + :param description: The description of this PatchStackRequest. + :type: str + """ # noqa: E501 + self._description = description + + @property + def template_ur_ls(self): + """Get the template_ur_ls of this PatchStackRequest. + + :return: The template_ur_ls of this PatchStackRequest. + :rtype: list[str] + """ # noqa: E501 + return self._template_ur_ls + + @template_ur_ls.setter + def template_ur_ls(self, template_ur_ls): + """Set the template_ur_ls of this PatchStackRequest. + + :param template_ur_ls: The template_ur_ls of this PatchStackRequest. + :type: list[str] + """ # noqa: E501 + self._template_ur_ls = template_ur_ls + + @property + def additional_resources(self): + """Get the additional_resources of this PatchStackRequest. + + :return: The additional_resources of this PatchStackRequest. + :rtype: list[PatchStackRequestAdditionalResources] + """ # noqa: E501 + return self._additional_resources + + @additional_resources.setter + def additional_resources(self, additional_resources): + """Set the additional_resources of this PatchStackRequest. + + :param additional_resources: The additional_resources of this PatchStackRequest. + :type: list[PatchStackRequestAdditionalResources] + """ # noqa: E501 + self._additional_resources = additional_resources + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PatchStackRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/patch_stack_request_additional_resources.py b/frogpilot/third_party/influxdb_client/domain/patch_stack_request_additional_resources.py new file mode 100644 index 000000000..6df857bbf --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/patch_stack_request_additional_resources.py @@ -0,0 +1,155 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class PatchStackRequestAdditionalResources(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'resource_id': 'str', + 'kind': 'str', + 'template_meta_name': 'str' + } + + attribute_map = { + 'resource_id': 'resourceID', + 'kind': 'kind', + 'template_meta_name': 'templateMetaName' + } + + def __init__(self, resource_id=None, kind=None, template_meta_name=None): # noqa: E501,D401,D403 + """PatchStackRequestAdditionalResources - a model defined in OpenAPI.""" # noqa: E501 + self._resource_id = None + self._kind = None + self._template_meta_name = None + self.discriminator = None + + self.resource_id = resource_id + self.kind = kind + if template_meta_name is not None: + self.template_meta_name = template_meta_name + + @property + def resource_id(self): + """Get the resource_id of this PatchStackRequestAdditionalResources. + + :return: The resource_id of this PatchStackRequestAdditionalResources. + :rtype: str + """ # noqa: E501 + return self._resource_id + + @resource_id.setter + def resource_id(self, resource_id): + """Set the resource_id of this PatchStackRequestAdditionalResources. + + :param resource_id: The resource_id of this PatchStackRequestAdditionalResources. + :type: str + """ # noqa: E501 + if resource_id is None: + raise ValueError("Invalid value for `resource_id`, must not be `None`") # noqa: E501 + self._resource_id = resource_id + + @property + def kind(self): + """Get the kind of this PatchStackRequestAdditionalResources. + + :return: The kind of this PatchStackRequestAdditionalResources. + :rtype: str + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this PatchStackRequestAdditionalResources. + + :param kind: The kind of this PatchStackRequestAdditionalResources. + :type: str + """ # noqa: E501 + if kind is None: + raise ValueError("Invalid value for `kind`, must not be `None`") # noqa: E501 + self._kind = kind + + @property + def template_meta_name(self): + """Get the template_meta_name of this PatchStackRequestAdditionalResources. + + :return: The template_meta_name of this PatchStackRequestAdditionalResources. + :rtype: str + """ # noqa: E501 + return self._template_meta_name + + @template_meta_name.setter + def template_meta_name(self, template_meta_name): + """Set the template_meta_name of this PatchStackRequestAdditionalResources. + + :param template_meta_name: The template_meta_name of this PatchStackRequestAdditionalResources. + :type: str + """ # noqa: E501 + self._template_meta_name = template_meta_name + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PatchStackRequestAdditionalResources): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/permission.py b/frogpilot/third_party/influxdb_client/domain/permission.py new file mode 100644 index 000000000..4d25db701 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/permission.py @@ -0,0 +1,132 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Permission(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'action': 'str', + 'resource': 'PermissionResource' + } + + attribute_map = { + 'action': 'action', + 'resource': 'resource' + } + + def __init__(self, action=None, resource=None): # noqa: E501,D401,D403 + """Permission - a model defined in OpenAPI.""" # noqa: E501 + self._action = None + self._resource = None + self.discriminator = None + + self.action = action + self.resource = resource + + @property + def action(self): + """Get the action of this Permission. + + :return: The action of this Permission. + :rtype: str + """ # noqa: E501 + return self._action + + @action.setter + def action(self, action): + """Set the action of this Permission. + + :param action: The action of this Permission. + :type: str + """ # noqa: E501 + if action is None: + raise ValueError("Invalid value for `action`, must not be `None`") # noqa: E501 + self._action = action + + @property + def resource(self): + """Get the resource of this Permission. + + :return: The resource of this Permission. + :rtype: PermissionResource + """ # noqa: E501 + return self._resource + + @resource.setter + def resource(self, resource): + """Set the resource of this Permission. + + :param resource: The resource of this Permission. + :type: PermissionResource + """ # noqa: E501 + if resource is None: + raise ValueError("Invalid value for `resource`, must not be `None`") # noqa: E501 + self._resource = resource + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Permission): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/permission_resource.py b/frogpilot/third_party/influxdb_client/domain/permission_resource.py new file mode 100644 index 000000000..07634a039 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/permission_resource.py @@ -0,0 +1,220 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class PermissionResource(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'id': 'str', + 'name': 'str', + 'org_id': 'str', + 'org': 'str' + } + + attribute_map = { + 'type': 'type', + 'id': 'id', + 'name': 'name', + 'org_id': 'orgID', + 'org': 'org' + } + + def __init__(self, type=None, id=None, name=None, org_id=None, org=None): # noqa: E501,D401,D403 + """PermissionResource - a model defined in OpenAPI.""" # noqa: E501 + self._type = None + self._id = None + self._name = None + self._org_id = None + self._org = None + self.discriminator = None + + self.type = type + if id is not None: + self.id = id + if name is not None: + self.name = name + if org_id is not None: + self.org_id = org_id + if org is not None: + self.org = org + + @property + def type(self): + """Get the type of this PermissionResource. + + A resource type. Identifies the API resource's type (or _kind_). + + :return: The type of this PermissionResource. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this PermissionResource. + + A resource type. Identifies the API resource's type (or _kind_). + + :param type: The type of this PermissionResource. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def id(self): + """Get the id of this PermissionResource. + + A resource ID. Identifies a specific resource. + + :return: The id of this PermissionResource. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this PermissionResource. + + A resource ID. Identifies a specific resource. + + :param id: The id of this PermissionResource. + :type: str + """ # noqa: E501 + self._id = id + + @property + def name(self): + """Get the name of this PermissionResource. + + The name of the resource. _Note: not all resource types have a `name` property_. + + :return: The name of this PermissionResource. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this PermissionResource. + + The name of the resource. _Note: not all resource types have a `name` property_. + + :param name: The name of this PermissionResource. + :type: str + """ # noqa: E501 + self._name = name + + @property + def org_id(self): + """Get the org_id of this PermissionResource. + + An organization ID. Identifies the organization that owns the resource. + + :return: The org_id of this PermissionResource. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this PermissionResource. + + An organization ID. Identifies the organization that owns the resource. + + :param org_id: The org_id of this PermissionResource. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def org(self): + """Get the org of this PermissionResource. + + An organization name. The organization that owns the resource. + + :return: The org of this PermissionResource. + :rtype: str + """ # noqa: E501 + return self._org + + @org.setter + def org(self, org): + """Set the org of this PermissionResource. + + An organization name. The organization that owns the resource. + + :param org: The org of this PermissionResource. + :type: str + """ # noqa: E501 + self._org = org + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PermissionResource): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/pipe_expression.py b/frogpilot/third_party/influxdb_client/domain/pipe_expression.py new file mode 100644 index 000000000..3f984113b --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/pipe_expression.py @@ -0,0 +1,161 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class PipeExpression(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'argument': 'Expression', + 'call': 'CallExpression' + } + + attribute_map = { + 'type': 'type', + 'argument': 'argument', + 'call': 'call' + } + + def __init__(self, type=None, argument=None, call=None): # noqa: E501,D401,D403 + """PipeExpression - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._argument = None + self._call = None + self.discriminator = None + + if type is not None: + self.type = type + if argument is not None: + self.argument = argument + if call is not None: + self.call = call + + @property + def type(self): + """Get the type of this PipeExpression. + + Type of AST node + + :return: The type of this PipeExpression. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this PipeExpression. + + Type of AST node + + :param type: The type of this PipeExpression. + :type: str + """ # noqa: E501 + self._type = type + + @property + def argument(self): + """Get the argument of this PipeExpression. + + :return: The argument of this PipeExpression. + :rtype: Expression + """ # noqa: E501 + return self._argument + + @argument.setter + def argument(self, argument): + """Set the argument of this PipeExpression. + + :param argument: The argument of this PipeExpression. + :type: Expression + """ # noqa: E501 + self._argument = argument + + @property + def call(self): + """Get the call of this PipeExpression. + + :return: The call of this PipeExpression. + :rtype: CallExpression + """ # noqa: E501 + return self._call + + @call.setter + def call(self, call): + """Set the call of this PipeExpression. + + :param call: The call of this PipeExpression. + :type: CallExpression + """ # noqa: E501 + self._call = call + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PipeExpression): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/pipe_literal.py b/frogpilot/third_party/influxdb_client/domain/pipe_literal.py new file mode 100644 index 000000000..eea02437e --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/pipe_literal.py @@ -0,0 +1,115 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class PipeLiteral(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str' + } + + attribute_map = { + 'type': 'type' + } + + def __init__(self, type=None): # noqa: E501,D401,D403 + """PipeLiteral - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self.discriminator = None + + if type is not None: + self.type = type + + @property + def type(self): + """Get the type of this PipeLiteral. + + Type of AST node + + :return: The type of this PipeLiteral. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this PipeLiteral. + + Type of AST node + + :param type: The type of this PipeLiteral. + :type: str + """ # noqa: E501 + self._type = type + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PipeLiteral): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/post_bucket_request.py b/frogpilot/third_party/influxdb_client/domain/post_bucket_request.py new file mode 100644 index 000000000..83215a70f --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/post_bucket_request.py @@ -0,0 +1,244 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class PostBucketRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'org_id': 'str', + 'name': 'str', + 'description': 'str', + 'rp': 'str', + 'retention_rules': 'list[BucketRetentionRules]', + 'schema_type': 'SchemaType' + } + + attribute_map = { + 'org_id': 'orgID', + 'name': 'name', + 'description': 'description', + 'rp': 'rp', + 'retention_rules': 'retentionRules', + 'schema_type': 'schemaType' + } + + def __init__(self, org_id=None, name=None, description=None, rp='0', retention_rules=None, schema_type=None): # noqa: E501,D401,D403 + """PostBucketRequest - a model defined in OpenAPI.""" # noqa: E501 + self._org_id = None + self._name = None + self._description = None + self._rp = None + self._retention_rules = None + self._schema_type = None + self.discriminator = None + + self.org_id = org_id + self.name = name + if description is not None: + self.description = description + if rp is not None: + self.rp = rp + if retention_rules is not None: + self.retention_rules = retention_rules + if schema_type is not None: + self.schema_type = schema_type + + @property + def org_id(self): + """Get the org_id of this PostBucketRequest. + + The organization ID. Specifies the organization that owns the bucket. + + :return: The org_id of this PostBucketRequest. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this PostBucketRequest. + + The organization ID. Specifies the organization that owns the bucket. + + :param org_id: The org_id of this PostBucketRequest. + :type: str + """ # noqa: E501 + if org_id is None: + raise ValueError("Invalid value for `org_id`, must not be `None`") # noqa: E501 + self._org_id = org_id + + @property + def name(self): + """Get the name of this PostBucketRequest. + + The bucket name. + + :return: The name of this PostBucketRequest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this PostBucketRequest. + + The bucket name. + + :param name: The name of this PostBucketRequest. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this PostBucketRequest. + + A description of the bucket. + + :return: The description of this PostBucketRequest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this PostBucketRequest. + + A description of the bucket. + + :param description: The description of this PostBucketRequest. + :type: str + """ # noqa: E501 + self._description = description + + @property + def rp(self): + """Get the rp of this PostBucketRequest. + + The retention policy for the bucket. For InfluxDB 1.x, specifies the duration of time that each data point in the retention policy persists. If you need compatibility with InfluxDB 1.x, specify a value for the `rp` property; otherwise, see the `retentionRules` property. [Retention policy](https://docs.influxdata.com/influxdb/v1.8/concepts/glossary/#retention-policy-rp) is an InfluxDB 1.x concept. The InfluxDB 2.x and Cloud equivalent is [retention period](https://docs.influxdata.com/influxdb/latest/reference/glossary/#retention-period). The InfluxDB `/api/v2` API uses `RetentionRules` to configure the retention period. + + :return: The rp of this PostBucketRequest. + :rtype: str + """ # noqa: E501 + return self._rp + + @rp.setter + def rp(self, rp): + """Set the rp of this PostBucketRequest. + + The retention policy for the bucket. For InfluxDB 1.x, specifies the duration of time that each data point in the retention policy persists. If you need compatibility with InfluxDB 1.x, specify a value for the `rp` property; otherwise, see the `retentionRules` property. [Retention policy](https://docs.influxdata.com/influxdb/v1.8/concepts/glossary/#retention-policy-rp) is an InfluxDB 1.x concept. The InfluxDB 2.x and Cloud equivalent is [retention period](https://docs.influxdata.com/influxdb/latest/reference/glossary/#retention-period). The InfluxDB `/api/v2` API uses `RetentionRules` to configure the retention period. + + :param rp: The rp of this PostBucketRequest. + :type: str + """ # noqa: E501 + self._rp = rp + + @property + def retention_rules(self): + """Get the retention_rules of this PostBucketRequest. + + Retention rules to expire or retain data. The InfluxDB `/api/v2` API uses `RetentionRules` to configure the [retention period](https://docs.influxdata.com/influxdb/latest/reference/glossary/#retention-period). #### InfluxDB Cloud - `retentionRules` is required. #### InfluxDB OSS - `retentionRules` isn't required. + + :return: The retention_rules of this PostBucketRequest. + :rtype: list[BucketRetentionRules] + """ # noqa: E501 + return self._retention_rules + + @retention_rules.setter + def retention_rules(self, retention_rules): + """Set the retention_rules of this PostBucketRequest. + + Retention rules to expire or retain data. The InfluxDB `/api/v2` API uses `RetentionRules` to configure the [retention period](https://docs.influxdata.com/influxdb/latest/reference/glossary/#retention-period). #### InfluxDB Cloud - `retentionRules` is required. #### InfluxDB OSS - `retentionRules` isn't required. + + :param retention_rules: The retention_rules of this PostBucketRequest. + :type: list[BucketRetentionRules] + """ # noqa: E501 + self._retention_rules = retention_rules + + @property + def schema_type(self): + """Get the schema_type of this PostBucketRequest. + + :return: The schema_type of this PostBucketRequest. + :rtype: SchemaType + """ # noqa: E501 + return self._schema_type + + @schema_type.setter + def schema_type(self, schema_type): + """Set the schema_type of this PostBucketRequest. + + :param schema_type: The schema_type of this PostBucketRequest. + :type: SchemaType + """ # noqa: E501 + self._schema_type = schema_type + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PostBucketRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/post_check.py b/frogpilot/third_party/influxdb_client/domain/post_check.py new file mode 100644 index 000000000..144a72e3a --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/post_check.py @@ -0,0 +1,120 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class PostCheck(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str' + } + + attribute_map = { + 'type': 'type' + } + + discriminator_value_class_map = { + 'deadman': 'DeadmanCheck', + 'custom': 'CustomCheck', + 'threshold': 'ThresholdCheck' + } + + def __init__(self, type=None): # noqa: E501,D401,D403 + """PostCheck - a model defined in OpenAPI.""" # noqa: E501 + self._type = None + self.discriminator = 'type' + + self.type = type + + @property + def type(self): + """Get the type of this PostCheck. + + :return: The type of this PostCheck. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this PostCheck. + + :param type: The type of this PostCheck. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + def get_real_child_model(self, data): + """Return the real base class specified by the discriminator.""" + discriminator_key = self.attribute_map[self.discriminator] + discriminator_value = data[discriminator_key] + return self.discriminator_value_class_map.get(discriminator_value) + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PostCheck): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/post_notification_endpoint.py b/frogpilot/third_party/influxdb_client/domain/post_notification_endpoint.py new file mode 100644 index 000000000..d2d0b3c85 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/post_notification_endpoint.py @@ -0,0 +1,121 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class PostNotificationEndpoint(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'NotificationEndpointType' + } + + attribute_map = { + 'type': 'type' + } + + discriminator_value_class_map = { + 'slack': 'SlackNotificationEndpoint', + 'pagerduty': 'PagerDutyNotificationEndpoint', + 'http': 'HTTPNotificationEndpoint', + 'telegram': 'TelegramNotificationEndpoint' + } + + def __init__(self, type=None): # noqa: E501,D401,D403 + """PostNotificationEndpoint - a model defined in OpenAPI.""" # noqa: E501 + self._type = None + self.discriminator = 'type' + + self.type = type + + @property + def type(self): + """Get the type of this PostNotificationEndpoint. + + :return: The type of this PostNotificationEndpoint. + :rtype: NotificationEndpointType + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this PostNotificationEndpoint. + + :param type: The type of this PostNotificationEndpoint. + :type: NotificationEndpointType + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + def get_real_child_model(self, data): + """Return the real base class specified by the discriminator.""" + discriminator_key = self.attribute_map[self.discriminator] + discriminator_value = data[discriminator_key] + return self.discriminator_value_class_map.get(discriminator_value) + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PostNotificationEndpoint): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/post_notification_rule.py b/frogpilot/third_party/influxdb_client/domain/post_notification_rule.py new file mode 100644 index 000000000..d0a54a0dd --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/post_notification_rule.py @@ -0,0 +1,126 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class PostNotificationRule(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str' + } + + attribute_map = { + 'type': 'type' + } + + discriminator_value_class_map = { + 'slack': 'SlackNotificationRule', + 'pagerduty': 'PagerDutyNotificationRule', + 'smtp': 'SMTPNotificationRule', + 'http': 'HTTPNotificationRule', + 'telegram': 'TelegramNotificationRule' + } + + def __init__(self, type=None): # noqa: E501,D401,D403 + """PostNotificationRule - a model defined in OpenAPI.""" # noqa: E501 + self._type = None + self.discriminator = 'type' + + self.type = type + + @property + def type(self): + """Get the type of this PostNotificationRule. + + The discriminator between other types of notification rules is "telegram". + + :return: The type of this PostNotificationRule. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this PostNotificationRule. + + The discriminator between other types of notification rules is "telegram". + + :param type: The type of this PostNotificationRule. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + def get_real_child_model(self, data): + """Return the real base class specified by the discriminator.""" + discriminator_key = self.attribute_map[self.discriminator] + discriminator_value = data[discriminator_key] + return self.discriminator_value_class_map.get(discriminator_value) + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PostNotificationRule): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/post_organization_request.py b/frogpilot/third_party/influxdb_client/domain/post_organization_request.py new file mode 100644 index 000000000..5e152d374 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/post_organization_request.py @@ -0,0 +1,139 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class PostOrganizationRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'description': 'str' + } + + attribute_map = { + 'name': 'name', + 'description': 'description' + } + + def __init__(self, name=None, description=None): # noqa: E501,D401,D403 + """PostOrganizationRequest - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._description = None + self.discriminator = None + + self.name = name + if description is not None: + self.description = description + + @property + def name(self): + """Get the name of this PostOrganizationRequest. + + The name of the organization. + + :return: The name of this PostOrganizationRequest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this PostOrganizationRequest. + + The name of the organization. + + :param name: The name of this PostOrganizationRequest. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this PostOrganizationRequest. + + The description of the organization. + + :return: The description of this PostOrganizationRequest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this PostOrganizationRequest. + + The description of the organization. + + :param description: The description of this PostOrganizationRequest. + :type: str + """ # noqa: E501 + self._description = description + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PostOrganizationRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/post_restore_kv_response.py b/frogpilot/third_party/influxdb_client/domain/post_restore_kv_response.py new file mode 100644 index 000000000..5cd5c166d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/post_restore_kv_response.py @@ -0,0 +1,111 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class PostRestoreKVResponse(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'token': 'str' + } + + attribute_map = { + 'token': 'token' + } + + def __init__(self, token=None): # noqa: E501,D401,D403 + """PostRestoreKVResponse - a model defined in OpenAPI.""" # noqa: E501 + self._token = None + self.discriminator = None + + if token is not None: + self.token = token + + @property + def token(self): + """Get the token of this PostRestoreKVResponse. + + token is the root token for the instance after restore (this is overwritten during the restore) + + :return: The token of this PostRestoreKVResponse. + :rtype: str + """ # noqa: E501 + return self._token + + @token.setter + def token(self, token): + """Set the token of this PostRestoreKVResponse. + + token is the root token for the instance after restore (this is overwritten during the restore) + + :param token: The token of this PostRestoreKVResponse. + :type: str + """ # noqa: E501 + self._token = token + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PostRestoreKVResponse): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/post_stack_request.py b/frogpilot/third_party/influxdb_client/domain/post_stack_request.py new file mode 100644 index 000000000..ce683035a --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/post_stack_request.py @@ -0,0 +1,176 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class PostStackRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'org_id': 'str', + 'name': 'str', + 'description': 'str', + 'urls': 'list[str]' + } + + attribute_map = { + 'org_id': 'orgID', + 'name': 'name', + 'description': 'description', + 'urls': 'urls' + } + + def __init__(self, org_id=None, name=None, description=None, urls=None): # noqa: E501,D401,D403 + """PostStackRequest - a model defined in OpenAPI.""" # noqa: E501 + self._org_id = None + self._name = None + self._description = None + self._urls = None + self.discriminator = None + + if org_id is not None: + self.org_id = org_id + if name is not None: + self.name = name + if description is not None: + self.description = description + if urls is not None: + self.urls = urls + + @property + def org_id(self): + """Get the org_id of this PostStackRequest. + + :return: The org_id of this PostStackRequest. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this PostStackRequest. + + :param org_id: The org_id of this PostStackRequest. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def name(self): + """Get the name of this PostStackRequest. + + :return: The name of this PostStackRequest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this PostStackRequest. + + :param name: The name of this PostStackRequest. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this PostStackRequest. + + :return: The description of this PostStackRequest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this PostStackRequest. + + :param description: The description of this PostStackRequest. + :type: str + """ # noqa: E501 + self._description = description + + @property + def urls(self): + """Get the urls of this PostStackRequest. + + :return: The urls of this PostStackRequest. + :rtype: list[str] + """ # noqa: E501 + return self._urls + + @urls.setter + def urls(self, urls): + """Set the urls of this PostStackRequest. + + :param urls: The urls of this PostStackRequest. + :type: list[str] + """ # noqa: E501 + self._urls = urls + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PostStackRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/property_key.py b/frogpilot/third_party/influxdb_client/domain/property_key.py new file mode 100644 index 000000000..e072527b5 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/property_key.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class PropertyKey(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """PropertyKey - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, PropertyKey): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/query.py b/frogpilot/third_party/influxdb_client/domain/query.py new file mode 100644 index 000000000..9b69972c6 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/query.py @@ -0,0 +1,239 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Query(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'extern': 'File', + 'query': 'str', + 'type': 'str', + 'params': 'dict(str, object)', + 'dialect': 'Dialect', + 'now': 'datetime' + } + + attribute_map = { + 'extern': 'extern', + 'query': 'query', + 'type': 'type', + 'params': 'params', + 'dialect': 'dialect', + 'now': 'now' + } + + def __init__(self, extern=None, query=None, type=None, params=None, dialect=None, now=None): # noqa: E501,D401,D403 + """Query - a model defined in OpenAPI.""" # noqa: E501 + self._extern = None + self._query = None + self._type = None + self._params = None + self._dialect = None + self._now = None + self.discriminator = None + + if extern is not None: + self.extern = extern + self.query = query + if type is not None: + self.type = type + if params is not None: + self.params = params + if dialect is not None: + self.dialect = dialect + if now is not None: + self.now = now + + @property + def extern(self): + """Get the extern of this Query. + + :return: The extern of this Query. + :rtype: File + """ # noqa: E501 + return self._extern + + @extern.setter + def extern(self, extern): + """Set the extern of this Query. + + :param extern: The extern of this Query. + :type: File + """ # noqa: E501 + self._extern = extern + + @property + def query(self): + """Get the query of this Query. + + The query script to execute. + + :return: The query of this Query. + :rtype: str + """ # noqa: E501 + return self._query + + @query.setter + def query(self, query): + """Set the query of this Query. + + The query script to execute. + + :param query: The query of this Query. + :type: str + """ # noqa: E501 + if query is None: + raise ValueError("Invalid value for `query`, must not be `None`") # noqa: E501 + self._query = query + + @property + def type(self): + """Get the type of this Query. + + The type of query. Must be "flux". + + :return: The type of this Query. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this Query. + + The type of query. Must be "flux". + + :param type: The type of this Query. + :type: str + """ # noqa: E501 + self._type = type + + @property + def params(self): + r"""Get the params of this Query. + + Key-value pairs passed as parameters during query execution. To use parameters in your query, pass a _`query`_ with `params` references (in dot notation)--for example: ```json query: "from(bucket: params.mybucket)\\ |> range(start: params.rangeStart) |> limit(n:1)" ``` and pass _`params`_ with the key-value pairs--for example: ```json params: { "mybucket": "environment", "rangeStart": "-30d" } ``` During query execution, InfluxDB passes _`params`_ to your script and substitutes the values. #### Limitations - If you use _`params`_, you can't use _`extern`_. + + :return: The params of this Query. + :rtype: dict(str, object) + """ # noqa: E501 + return self._params + + @params.setter + def params(self, params): + r"""Set the params of this Query. + + Key-value pairs passed as parameters during query execution. To use parameters in your query, pass a _`query`_ with `params` references (in dot notation)--for example: ```json query: "from(bucket: params.mybucket)\\ |> range(start: params.rangeStart) |> limit(n:1)" ``` and pass _`params`_ with the key-value pairs--for example: ```json params: { "mybucket": "environment", "rangeStart": "-30d" } ``` During query execution, InfluxDB passes _`params`_ to your script and substitutes the values. #### Limitations - If you use _`params`_, you can't use _`extern`_. + + :param params: The params of this Query. + :type: dict(str, object) + """ # noqa: E501 + self._params = params + + @property + def dialect(self): + """Get the dialect of this Query. + + :return: The dialect of this Query. + :rtype: Dialect + """ # noqa: E501 + return self._dialect + + @dialect.setter + def dialect(self, dialect): + """Set the dialect of this Query. + + :param dialect: The dialect of this Query. + :type: Dialect + """ # noqa: E501 + self._dialect = dialect + + @property + def now(self): + """Get the now of this Query. + + Specifies the time that should be reported as `now` in the query. Default is the server `now` time. + + :return: The now of this Query. + :rtype: datetime + """ # noqa: E501 + return self._now + + @now.setter + def now(self, now): + """Set the now of this Query. + + Specifies the time that should be reported as `now` in the query. Default is the server `now` time. + + :param now: The now of this Query. + :type: datetime + """ # noqa: E501 + self._now = now + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Query): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/query_edit_mode.py b/frogpilot/third_party/influxdb_client/domain/query_edit_mode.py new file mode 100644 index 000000000..8a7fba8b0 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/query_edit_mode.py @@ -0,0 +1,88 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class QueryEditMode(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + BUILDER = "builder" + ADVANCED = "advanced" + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """QueryEditMode - a model defined in OpenAPI.""" # noqa: E501 self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, QueryEditMode): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/query_variable_properties.py b/frogpilot/third_party/influxdb_client/domain/query_variable_properties.py new file mode 100644 index 000000000..143bb01e2 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/query_variable_properties.py @@ -0,0 +1,134 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.variable_properties import VariableProperties + + +class QueryVariableProperties(VariableProperties): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'values': 'QueryVariablePropertiesValues' + } + + attribute_map = { + 'type': 'type', + 'values': 'values' + } + + def __init__(self, type=None, values=None): # noqa: E501,D401,D403 + """QueryVariableProperties - a model defined in OpenAPI.""" # noqa: E501 + VariableProperties.__init__(self) # noqa: E501 + + self._type = None + self._values = None + self.discriminator = None + + if type is not None: + self.type = type + if values is not None: + self.values = values + + @property + def type(self): + """Get the type of this QueryVariableProperties. + + :return: The type of this QueryVariableProperties. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this QueryVariableProperties. + + :param type: The type of this QueryVariableProperties. + :type: str + """ # noqa: E501 + self._type = type + + @property + def values(self): + """Get the values of this QueryVariableProperties. + + :return: The values of this QueryVariableProperties. + :rtype: QueryVariablePropertiesValues + """ # noqa: E501 + return self._values + + @values.setter + def values(self, values): + """Set the values of this QueryVariableProperties. + + :param values: The values of this QueryVariableProperties. + :type: QueryVariablePropertiesValues + """ # noqa: E501 + self._values = values + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, QueryVariableProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/query_variable_properties_values.py b/frogpilot/third_party/influxdb_client/domain/query_variable_properties_values.py new file mode 100644 index 000000000..a06a174e8 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/query_variable_properties_values.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class QueryVariablePropertiesValues(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'query': 'str', + 'language': 'str' + } + + attribute_map = { + 'query': 'query', + 'language': 'language' + } + + def __init__(self, query=None, language=None): # noqa: E501,D401,D403 + """QueryVariablePropertiesValues - a model defined in OpenAPI.""" # noqa: E501 + self._query = None + self._language = None + self.discriminator = None + + if query is not None: + self.query = query + if language is not None: + self.language = language + + @property + def query(self): + """Get the query of this QueryVariablePropertiesValues. + + :return: The query of this QueryVariablePropertiesValues. + :rtype: str + """ # noqa: E501 + return self._query + + @query.setter + def query(self, query): + """Set the query of this QueryVariablePropertiesValues. + + :param query: The query of this QueryVariablePropertiesValues. + :type: str + """ # noqa: E501 + self._query = query + + @property + def language(self): + """Get the language of this QueryVariablePropertiesValues. + + :return: The language of this QueryVariablePropertiesValues. + :rtype: str + """ # noqa: E501 + return self._language + + @language.setter + def language(self, language): + """Set the language of this QueryVariablePropertiesValues. + + :param language: The language of this QueryVariablePropertiesValues. + :type: str + """ # noqa: E501 + self._language = language + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, QueryVariablePropertiesValues): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/range_threshold.py b/frogpilot/third_party/influxdb_client/domain/range_threshold.py new file mode 100644 index 000000000..68e19860c --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/range_threshold.py @@ -0,0 +1,188 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.threshold_base import ThresholdBase + + +class RangeThreshold(ThresholdBase): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'min': 'float', + 'max': 'float', + 'within': 'bool', + 'level': 'CheckStatusLevel', + 'all_values': 'bool' + } + + attribute_map = { + 'type': 'type', + 'min': 'min', + 'max': 'max', + 'within': 'within', + 'level': 'level', + 'all_values': 'allValues' + } + + def __init__(self, type="range", min=None, max=None, within=None, level=None, all_values=None): # noqa: E501,D401,D403 + """RangeThreshold - a model defined in OpenAPI.""" # noqa: E501 + ThresholdBase.__init__(self, level=level, all_values=all_values) # noqa: E501 + + self._type = None + self._min = None + self._max = None + self._within = None + self.discriminator = None + + self.type = type + self.min = min + self.max = max + self.within = within + + @property + def type(self): + """Get the type of this RangeThreshold. + + :return: The type of this RangeThreshold. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this RangeThreshold. + + :param type: The type of this RangeThreshold. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def min(self): + """Get the min of this RangeThreshold. + + :return: The min of this RangeThreshold. + :rtype: float + """ # noqa: E501 + return self._min + + @min.setter + def min(self, min): + """Set the min of this RangeThreshold. + + :param min: The min of this RangeThreshold. + :type: float + """ # noqa: E501 + if min is None: + raise ValueError("Invalid value for `min`, must not be `None`") # noqa: E501 + self._min = min + + @property + def max(self): + """Get the max of this RangeThreshold. + + :return: The max of this RangeThreshold. + :rtype: float + """ # noqa: E501 + return self._max + + @max.setter + def max(self, max): + """Set the max of this RangeThreshold. + + :param max: The max of this RangeThreshold. + :type: float + """ # noqa: E501 + if max is None: + raise ValueError("Invalid value for `max`, must not be `None`") # noqa: E501 + self._max = max + + @property + def within(self): + """Get the within of this RangeThreshold. + + :return: The within of this RangeThreshold. + :rtype: bool + """ # noqa: E501 + return self._within + + @within.setter + def within(self, within): + """Set the within of this RangeThreshold. + + :param within: The within of this RangeThreshold. + :type: bool + """ # noqa: E501 + if within is None: + raise ValueError("Invalid value for `within`, must not be `None`") # noqa: E501 + self._within = within + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, RangeThreshold): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/ready.py b/frogpilot/third_party/influxdb_client/domain/ready.py new file mode 100644 index 000000000..46c4d29bd --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/ready.py @@ -0,0 +1,153 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Ready(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'status': 'str', + 'started': 'datetime', + 'up': 'str' + } + + attribute_map = { + 'status': 'status', + 'started': 'started', + 'up': 'up' + } + + def __init__(self, status=None, started=None, up=None): # noqa: E501,D401,D403 + """Ready - a model defined in OpenAPI.""" # noqa: E501 + self._status = None + self._started = None + self._up = None + self.discriminator = None + + if status is not None: + self.status = status + if started is not None: + self.started = started + if up is not None: + self.up = up + + @property + def status(self): + """Get the status of this Ready. + + :return: The status of this Ready. + :rtype: str + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this Ready. + + :param status: The status of this Ready. + :type: str + """ # noqa: E501 + self._status = status + + @property + def started(self): + """Get the started of this Ready. + + :return: The started of this Ready. + :rtype: datetime + """ # noqa: E501 + return self._started + + @started.setter + def started(self, started): + """Set the started of this Ready. + + :param started: The started of this Ready. + :type: datetime + """ # noqa: E501 + self._started = started + + @property + def up(self): + """Get the up of this Ready. + + :return: The up of this Ready. + :rtype: str + """ # noqa: E501 + return self._up + + @up.setter + def up(self, up): + """Set the up of this Ready. + + :param up: The up of this Ready. + :type: str + """ # noqa: E501 + self._up = up + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Ready): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/regexp_literal.py b/frogpilot/third_party/influxdb_client/domain/regexp_literal.py new file mode 100644 index 000000000..95fe4cb16 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/regexp_literal.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class RegexpLiteral(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'value': 'str' + } + + attribute_map = { + 'type': 'type', + 'value': 'value' + } + + def __init__(self, type=None, value=None): # noqa: E501,D401,D403 + """RegexpLiteral - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._value = None + self.discriminator = None + + if type is not None: + self.type = type + if value is not None: + self.value = value + + @property + def type(self): + """Get the type of this RegexpLiteral. + + Type of AST node + + :return: The type of this RegexpLiteral. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this RegexpLiteral. + + Type of AST node + + :param type: The type of this RegexpLiteral. + :type: str + """ # noqa: E501 + self._type = type + + @property + def value(self): + """Get the value of this RegexpLiteral. + + :return: The value of this RegexpLiteral. + :rtype: str + """ # noqa: E501 + return self._value + + @value.setter + def value(self, value): + """Set the value of this RegexpLiteral. + + :param value: The value of this RegexpLiteral. + :type: str + """ # noqa: E501 + self._value = value + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, RegexpLiteral): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/remote_connection.py b/frogpilot/third_party/influxdb_client/domain/remote_connection.py new file mode 100644 index 000000000..e0c1785c3 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/remote_connection.py @@ -0,0 +1,250 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class RemoteConnection(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'name': 'str', + 'org_id': 'str', + 'description': 'str', + 'remote_url': 'str', + 'remote_org_id': 'str', + 'allow_insecure_tls': 'bool' + } + + attribute_map = { + 'id': 'id', + 'name': 'name', + 'org_id': 'orgID', + 'description': 'description', + 'remote_url': 'remoteURL', + 'remote_org_id': 'remoteOrgID', + 'allow_insecure_tls': 'allowInsecureTLS' + } + + def __init__(self, id=None, name=None, org_id=None, description=None, remote_url=None, remote_org_id=None, allow_insecure_tls=False): # noqa: E501,D401,D403 + """RemoteConnection - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._name = None + self._org_id = None + self._description = None + self._remote_url = None + self._remote_org_id = None + self._allow_insecure_tls = None + self.discriminator = None + + self.id = id + self.name = name + self.org_id = org_id + if description is not None: + self.description = description + self.remote_url = remote_url + if remote_org_id is not None: + self.remote_org_id = remote_org_id + self.allow_insecure_tls = allow_insecure_tls + + @property + def id(self): + """Get the id of this RemoteConnection. + + :return: The id of this RemoteConnection. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this RemoteConnection. + + :param id: The id of this RemoteConnection. + :type: str + """ # noqa: E501 + if id is None: + raise ValueError("Invalid value for `id`, must not be `None`") # noqa: E501 + self._id = id + + @property + def name(self): + """Get the name of this RemoteConnection. + + :return: The name of this RemoteConnection. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this RemoteConnection. + + :param name: The name of this RemoteConnection. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def org_id(self): + """Get the org_id of this RemoteConnection. + + :return: The org_id of this RemoteConnection. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this RemoteConnection. + + :param org_id: The org_id of this RemoteConnection. + :type: str + """ # noqa: E501 + if org_id is None: + raise ValueError("Invalid value for `org_id`, must not be `None`") # noqa: E501 + self._org_id = org_id + + @property + def description(self): + """Get the description of this RemoteConnection. + + :return: The description of this RemoteConnection. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this RemoteConnection. + + :param description: The description of this RemoteConnection. + :type: str + """ # noqa: E501 + self._description = description + + @property + def remote_url(self): + """Get the remote_url of this RemoteConnection. + + :return: The remote_url of this RemoteConnection. + :rtype: str + """ # noqa: E501 + return self._remote_url + + @remote_url.setter + def remote_url(self, remote_url): + """Set the remote_url of this RemoteConnection. + + :param remote_url: The remote_url of this RemoteConnection. + :type: str + """ # noqa: E501 + if remote_url is None: + raise ValueError("Invalid value for `remote_url`, must not be `None`") # noqa: E501 + self._remote_url = remote_url + + @property + def remote_org_id(self): + """Get the remote_org_id of this RemoteConnection. + + :return: The remote_org_id of this RemoteConnection. + :rtype: str + """ # noqa: E501 + return self._remote_org_id + + @remote_org_id.setter + def remote_org_id(self, remote_org_id): + """Set the remote_org_id of this RemoteConnection. + + :param remote_org_id: The remote_org_id of this RemoteConnection. + :type: str + """ # noqa: E501 + self._remote_org_id = remote_org_id + + @property + def allow_insecure_tls(self): + """Get the allow_insecure_tls of this RemoteConnection. + + :return: The allow_insecure_tls of this RemoteConnection. + :rtype: bool + """ # noqa: E501 + return self._allow_insecure_tls + + @allow_insecure_tls.setter + def allow_insecure_tls(self, allow_insecure_tls): + """Set the allow_insecure_tls of this RemoteConnection. + + :param allow_insecure_tls: The allow_insecure_tls of this RemoteConnection. + :type: bool + """ # noqa: E501 + if allow_insecure_tls is None: + raise ValueError("Invalid value for `allow_insecure_tls`, must not be `None`") # noqa: E501 + self._allow_insecure_tls = allow_insecure_tls + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, RemoteConnection): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/remote_connection_creation_request.py b/frogpilot/third_party/influxdb_client/domain/remote_connection_creation_request.py new file mode 100644 index 000000000..ba775362e --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/remote_connection_creation_request.py @@ -0,0 +1,250 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class RemoteConnectionCreationRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'description': 'str', + 'org_id': 'str', + 'remote_url': 'str', + 'remote_api_token': 'str', + 'remote_org_id': 'str', + 'allow_insecure_tls': 'bool' + } + + attribute_map = { + 'name': 'name', + 'description': 'description', + 'org_id': 'orgID', + 'remote_url': 'remoteURL', + 'remote_api_token': 'remoteAPIToken', + 'remote_org_id': 'remoteOrgID', + 'allow_insecure_tls': 'allowInsecureTLS' + } + + def __init__(self, name=None, description=None, org_id=None, remote_url=None, remote_api_token=None, remote_org_id=None, allow_insecure_tls=False): # noqa: E501,D401,D403 + """RemoteConnectionCreationRequest - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._description = None + self._org_id = None + self._remote_url = None + self._remote_api_token = None + self._remote_org_id = None + self._allow_insecure_tls = None + self.discriminator = None + + self.name = name + if description is not None: + self.description = description + self.org_id = org_id + self.remote_url = remote_url + self.remote_api_token = remote_api_token + if remote_org_id is not None: + self.remote_org_id = remote_org_id + self.allow_insecure_tls = allow_insecure_tls + + @property + def name(self): + """Get the name of this RemoteConnectionCreationRequest. + + :return: The name of this RemoteConnectionCreationRequest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this RemoteConnectionCreationRequest. + + :param name: The name of this RemoteConnectionCreationRequest. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this RemoteConnectionCreationRequest. + + :return: The description of this RemoteConnectionCreationRequest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this RemoteConnectionCreationRequest. + + :param description: The description of this RemoteConnectionCreationRequest. + :type: str + """ # noqa: E501 + self._description = description + + @property + def org_id(self): + """Get the org_id of this RemoteConnectionCreationRequest. + + :return: The org_id of this RemoteConnectionCreationRequest. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this RemoteConnectionCreationRequest. + + :param org_id: The org_id of this RemoteConnectionCreationRequest. + :type: str + """ # noqa: E501 + if org_id is None: + raise ValueError("Invalid value for `org_id`, must not be `None`") # noqa: E501 + self._org_id = org_id + + @property + def remote_url(self): + """Get the remote_url of this RemoteConnectionCreationRequest. + + :return: The remote_url of this RemoteConnectionCreationRequest. + :rtype: str + """ # noqa: E501 + return self._remote_url + + @remote_url.setter + def remote_url(self, remote_url): + """Set the remote_url of this RemoteConnectionCreationRequest. + + :param remote_url: The remote_url of this RemoteConnectionCreationRequest. + :type: str + """ # noqa: E501 + if remote_url is None: + raise ValueError("Invalid value for `remote_url`, must not be `None`") # noqa: E501 + self._remote_url = remote_url + + @property + def remote_api_token(self): + """Get the remote_api_token of this RemoteConnectionCreationRequest. + + :return: The remote_api_token of this RemoteConnectionCreationRequest. + :rtype: str + """ # noqa: E501 + return self._remote_api_token + + @remote_api_token.setter + def remote_api_token(self, remote_api_token): + """Set the remote_api_token of this RemoteConnectionCreationRequest. + + :param remote_api_token: The remote_api_token of this RemoteConnectionCreationRequest. + :type: str + """ # noqa: E501 + if remote_api_token is None: + raise ValueError("Invalid value for `remote_api_token`, must not be `None`") # noqa: E501 + self._remote_api_token = remote_api_token + + @property + def remote_org_id(self): + """Get the remote_org_id of this RemoteConnectionCreationRequest. + + :return: The remote_org_id of this RemoteConnectionCreationRequest. + :rtype: str + """ # noqa: E501 + return self._remote_org_id + + @remote_org_id.setter + def remote_org_id(self, remote_org_id): + """Set the remote_org_id of this RemoteConnectionCreationRequest. + + :param remote_org_id: The remote_org_id of this RemoteConnectionCreationRequest. + :type: str + """ # noqa: E501 + self._remote_org_id = remote_org_id + + @property + def allow_insecure_tls(self): + """Get the allow_insecure_tls of this RemoteConnectionCreationRequest. + + :return: The allow_insecure_tls of this RemoteConnectionCreationRequest. + :rtype: bool + """ # noqa: E501 + return self._allow_insecure_tls + + @allow_insecure_tls.setter + def allow_insecure_tls(self, allow_insecure_tls): + """Set the allow_insecure_tls of this RemoteConnectionCreationRequest. + + :param allow_insecure_tls: The allow_insecure_tls of this RemoteConnectionCreationRequest. + :type: bool + """ # noqa: E501 + if allow_insecure_tls is None: + raise ValueError("Invalid value for `allow_insecure_tls`, must not be `None`") # noqa: E501 + self._allow_insecure_tls = allow_insecure_tls + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, RemoteConnectionCreationRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/remote_connection_update_request.py b/frogpilot/third_party/influxdb_client/domain/remote_connection_update_request.py new file mode 100644 index 000000000..54fd9f1c7 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/remote_connection_update_request.py @@ -0,0 +1,222 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class RemoteConnectionUpdateRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'description': 'str', + 'remote_url': 'str', + 'remote_api_token': 'str', + 'remote_org_id': 'str', + 'allow_insecure_tls': 'bool' + } + + attribute_map = { + 'name': 'name', + 'description': 'description', + 'remote_url': 'remoteURL', + 'remote_api_token': 'remoteAPIToken', + 'remote_org_id': 'remoteOrgID', + 'allow_insecure_tls': 'allowInsecureTLS' + } + + def __init__(self, name=None, description=None, remote_url=None, remote_api_token=None, remote_org_id=None, allow_insecure_tls=False): # noqa: E501,D401,D403 + """RemoteConnectionUpdateRequest - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._description = None + self._remote_url = None + self._remote_api_token = None + self._remote_org_id = None + self._allow_insecure_tls = None + self.discriminator = None + + if name is not None: + self.name = name + if description is not None: + self.description = description + if remote_url is not None: + self.remote_url = remote_url + if remote_api_token is not None: + self.remote_api_token = remote_api_token + if remote_org_id is not None: + self.remote_org_id = remote_org_id + if allow_insecure_tls is not None: + self.allow_insecure_tls = allow_insecure_tls + + @property + def name(self): + """Get the name of this RemoteConnectionUpdateRequest. + + :return: The name of this RemoteConnectionUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this RemoteConnectionUpdateRequest. + + :param name: The name of this RemoteConnectionUpdateRequest. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this RemoteConnectionUpdateRequest. + + :return: The description of this RemoteConnectionUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this RemoteConnectionUpdateRequest. + + :param description: The description of this RemoteConnectionUpdateRequest. + :type: str + """ # noqa: E501 + self._description = description + + @property + def remote_url(self): + """Get the remote_url of this RemoteConnectionUpdateRequest. + + :return: The remote_url of this RemoteConnectionUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._remote_url + + @remote_url.setter + def remote_url(self, remote_url): + """Set the remote_url of this RemoteConnectionUpdateRequest. + + :param remote_url: The remote_url of this RemoteConnectionUpdateRequest. + :type: str + """ # noqa: E501 + self._remote_url = remote_url + + @property + def remote_api_token(self): + """Get the remote_api_token of this RemoteConnectionUpdateRequest. + + :return: The remote_api_token of this RemoteConnectionUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._remote_api_token + + @remote_api_token.setter + def remote_api_token(self, remote_api_token): + """Set the remote_api_token of this RemoteConnectionUpdateRequest. + + :param remote_api_token: The remote_api_token of this RemoteConnectionUpdateRequest. + :type: str + """ # noqa: E501 + self._remote_api_token = remote_api_token + + @property + def remote_org_id(self): + """Get the remote_org_id of this RemoteConnectionUpdateRequest. + + :return: The remote_org_id of this RemoteConnectionUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._remote_org_id + + @remote_org_id.setter + def remote_org_id(self, remote_org_id): + """Set the remote_org_id of this RemoteConnectionUpdateRequest. + + :param remote_org_id: The remote_org_id of this RemoteConnectionUpdateRequest. + :type: str + """ # noqa: E501 + self._remote_org_id = remote_org_id + + @property + def allow_insecure_tls(self): + """Get the allow_insecure_tls of this RemoteConnectionUpdateRequest. + + :return: The allow_insecure_tls of this RemoteConnectionUpdateRequest. + :rtype: bool + """ # noqa: E501 + return self._allow_insecure_tls + + @allow_insecure_tls.setter + def allow_insecure_tls(self, allow_insecure_tls): + """Set the allow_insecure_tls of this RemoteConnectionUpdateRequest. + + :param allow_insecure_tls: The allow_insecure_tls of this RemoteConnectionUpdateRequest. + :type: bool + """ # noqa: E501 + self._allow_insecure_tls = allow_insecure_tls + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, RemoteConnectionUpdateRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/remote_connections.py b/frogpilot/third_party/influxdb_client/domain/remote_connections.py new file mode 100644 index 000000000..ca6d30ce7 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/remote_connections.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class RemoteConnections(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'remotes': 'list[RemoteConnection]' + } + + attribute_map = { + 'remotes': 'remotes' + } + + def __init__(self, remotes=None): # noqa: E501,D401,D403 + """RemoteConnections - a model defined in OpenAPI.""" # noqa: E501 + self._remotes = None + self.discriminator = None + + if remotes is not None: + self.remotes = remotes + + @property + def remotes(self): + """Get the remotes of this RemoteConnections. + + :return: The remotes of this RemoteConnections. + :rtype: list[RemoteConnection] + """ # noqa: E501 + return self._remotes + + @remotes.setter + def remotes(self, remotes): + """Set the remotes of this RemoteConnections. + + :param remotes: The remotes of this RemoteConnections. + :type: list[RemoteConnection] + """ # noqa: E501 + self._remotes = remotes + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, RemoteConnections): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/renamable_field.py b/frogpilot/third_party/influxdb_client/domain/renamable_field.py new file mode 100644 index 000000000..088cea3db --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/renamable_field.py @@ -0,0 +1,165 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class RenamableField(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'internal_name': 'str', + 'display_name': 'str', + 'visible': 'bool' + } + + attribute_map = { + 'internal_name': 'internalName', + 'display_name': 'displayName', + 'visible': 'visible' + } + + def __init__(self, internal_name=None, display_name=None, visible=None): # noqa: E501,D401,D403 + """RenamableField - a model defined in OpenAPI.""" # noqa: E501 + self._internal_name = None + self._display_name = None + self._visible = None + self.discriminator = None + + if internal_name is not None: + self.internal_name = internal_name + if display_name is not None: + self.display_name = display_name + if visible is not None: + self.visible = visible + + @property + def internal_name(self): + """Get the internal_name of this RenamableField. + + The calculated name of a field. + + :return: The internal_name of this RenamableField. + :rtype: str + """ # noqa: E501 + return self._internal_name + + @internal_name.setter + def internal_name(self, internal_name): + """Set the internal_name of this RenamableField. + + The calculated name of a field. + + :param internal_name: The internal_name of this RenamableField. + :type: str + """ # noqa: E501 + self._internal_name = internal_name + + @property + def display_name(self): + """Get the display_name of this RenamableField. + + The name that a field is renamed to by the user. + + :return: The display_name of this RenamableField. + :rtype: str + """ # noqa: E501 + return self._display_name + + @display_name.setter + def display_name(self, display_name): + """Set the display_name of this RenamableField. + + The name that a field is renamed to by the user. + + :param display_name: The display_name of this RenamableField. + :type: str + """ # noqa: E501 + self._display_name = display_name + + @property + def visible(self): + """Get the visible of this RenamableField. + + Indicates whether this field should be visible on the table. + + :return: The visible of this RenamableField. + :rtype: bool + """ # noqa: E501 + return self._visible + + @visible.setter + def visible(self, visible): + """Set the visible of this RenamableField. + + Indicates whether this field should be visible on the table. + + :param visible: The visible of this RenamableField. + :type: bool + """ # noqa: E501 + self._visible = visible + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, RenamableField): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/replication.py b/frogpilot/third_party/influxdb_client/domain/replication.py new file mode 100644 index 000000000..fea45ca38 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/replication.py @@ -0,0 +1,412 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Replication(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'name': 'str', + 'description': 'str', + 'org_id': 'str', + 'remote_id': 'str', + 'local_bucket_id': 'str', + 'remote_bucket_id': 'str', + 'remote_bucket_name': 'str', + 'max_queue_size_bytes': 'int', + 'current_queue_size_bytes': 'int', + 'remaining_bytes_to_be_synced': 'int', + 'latest_response_code': 'int', + 'latest_error_message': 'str', + 'drop_non_retryable_data': 'bool' + } + + attribute_map = { + 'id': 'id', + 'name': 'name', + 'description': 'description', + 'org_id': 'orgID', + 'remote_id': 'remoteID', + 'local_bucket_id': 'localBucketID', + 'remote_bucket_id': 'remoteBucketID', + 'remote_bucket_name': 'remoteBucketName', + 'max_queue_size_bytes': 'maxQueueSizeBytes', + 'current_queue_size_bytes': 'currentQueueSizeBytes', + 'remaining_bytes_to_be_synced': 'remainingBytesToBeSynced', + 'latest_response_code': 'latestResponseCode', + 'latest_error_message': 'latestErrorMessage', + 'drop_non_retryable_data': 'dropNonRetryableData' + } + + def __init__(self, id=None, name=None, description=None, org_id=None, remote_id=None, local_bucket_id=None, remote_bucket_id=None, remote_bucket_name=None, max_queue_size_bytes=None, current_queue_size_bytes=None, remaining_bytes_to_be_synced=None, latest_response_code=None, latest_error_message=None, drop_non_retryable_data=None): # noqa: E501,D401,D403 + """Replication - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._name = None + self._description = None + self._org_id = None + self._remote_id = None + self._local_bucket_id = None + self._remote_bucket_id = None + self._remote_bucket_name = None + self._max_queue_size_bytes = None + self._current_queue_size_bytes = None + self._remaining_bytes_to_be_synced = None + self._latest_response_code = None + self._latest_error_message = None + self._drop_non_retryable_data = None + self.discriminator = None + + self.id = id + self.name = name + if description is not None: + self.description = description + self.org_id = org_id + self.remote_id = remote_id + self.local_bucket_id = local_bucket_id + if remote_bucket_id is not None: + self.remote_bucket_id = remote_bucket_id + if remote_bucket_name is not None: + self.remote_bucket_name = remote_bucket_name + self.max_queue_size_bytes = max_queue_size_bytes + if current_queue_size_bytes is not None: + self.current_queue_size_bytes = current_queue_size_bytes + if remaining_bytes_to_be_synced is not None: + self.remaining_bytes_to_be_synced = remaining_bytes_to_be_synced + if latest_response_code is not None: + self.latest_response_code = latest_response_code + if latest_error_message is not None: + self.latest_error_message = latest_error_message + if drop_non_retryable_data is not None: + self.drop_non_retryable_data = drop_non_retryable_data + + @property + def id(self): + """Get the id of this Replication. + + :return: The id of this Replication. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this Replication. + + :param id: The id of this Replication. + :type: str + """ # noqa: E501 + if id is None: + raise ValueError("Invalid value for `id`, must not be `None`") # noqa: E501 + self._id = id + + @property + def name(self): + """Get the name of this Replication. + + :return: The name of this Replication. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this Replication. + + :param name: The name of this Replication. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this Replication. + + :return: The description of this Replication. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this Replication. + + :param description: The description of this Replication. + :type: str + """ # noqa: E501 + self._description = description + + @property + def org_id(self): + """Get the org_id of this Replication. + + :return: The org_id of this Replication. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this Replication. + + :param org_id: The org_id of this Replication. + :type: str + """ # noqa: E501 + if org_id is None: + raise ValueError("Invalid value for `org_id`, must not be `None`") # noqa: E501 + self._org_id = org_id + + @property + def remote_id(self): + """Get the remote_id of this Replication. + + :return: The remote_id of this Replication. + :rtype: str + """ # noqa: E501 + return self._remote_id + + @remote_id.setter + def remote_id(self, remote_id): + """Set the remote_id of this Replication. + + :param remote_id: The remote_id of this Replication. + :type: str + """ # noqa: E501 + if remote_id is None: + raise ValueError("Invalid value for `remote_id`, must not be `None`") # noqa: E501 + self._remote_id = remote_id + + @property + def local_bucket_id(self): + """Get the local_bucket_id of this Replication. + + :return: The local_bucket_id of this Replication. + :rtype: str + """ # noqa: E501 + return self._local_bucket_id + + @local_bucket_id.setter + def local_bucket_id(self, local_bucket_id): + """Set the local_bucket_id of this Replication. + + :param local_bucket_id: The local_bucket_id of this Replication. + :type: str + """ # noqa: E501 + if local_bucket_id is None: + raise ValueError("Invalid value for `local_bucket_id`, must not be `None`") # noqa: E501 + self._local_bucket_id = local_bucket_id + + @property + def remote_bucket_id(self): + """Get the remote_bucket_id of this Replication. + + :return: The remote_bucket_id of this Replication. + :rtype: str + """ # noqa: E501 + return self._remote_bucket_id + + @remote_bucket_id.setter + def remote_bucket_id(self, remote_bucket_id): + """Set the remote_bucket_id of this Replication. + + :param remote_bucket_id: The remote_bucket_id of this Replication. + :type: str + """ # noqa: E501 + self._remote_bucket_id = remote_bucket_id + + @property + def remote_bucket_name(self): + """Get the remote_bucket_name of this Replication. + + :return: The remote_bucket_name of this Replication. + :rtype: str + """ # noqa: E501 + return self._remote_bucket_name + + @remote_bucket_name.setter + def remote_bucket_name(self, remote_bucket_name): + """Set the remote_bucket_name of this Replication. + + :param remote_bucket_name: The remote_bucket_name of this Replication. + :type: str + """ # noqa: E501 + self._remote_bucket_name = remote_bucket_name + + @property + def max_queue_size_bytes(self): + """Get the max_queue_size_bytes of this Replication. + + :return: The max_queue_size_bytes of this Replication. + :rtype: int + """ # noqa: E501 + return self._max_queue_size_bytes + + @max_queue_size_bytes.setter + def max_queue_size_bytes(self, max_queue_size_bytes): + """Set the max_queue_size_bytes of this Replication. + + :param max_queue_size_bytes: The max_queue_size_bytes of this Replication. + :type: int + """ # noqa: E501 + if max_queue_size_bytes is None: + raise ValueError("Invalid value for `max_queue_size_bytes`, must not be `None`") # noqa: E501 + self._max_queue_size_bytes = max_queue_size_bytes + + @property + def current_queue_size_bytes(self): + """Get the current_queue_size_bytes of this Replication. + + :return: The current_queue_size_bytes of this Replication. + :rtype: int + """ # noqa: E501 + return self._current_queue_size_bytes + + @current_queue_size_bytes.setter + def current_queue_size_bytes(self, current_queue_size_bytes): + """Set the current_queue_size_bytes of this Replication. + + :param current_queue_size_bytes: The current_queue_size_bytes of this Replication. + :type: int + """ # noqa: E501 + self._current_queue_size_bytes = current_queue_size_bytes + + @property + def remaining_bytes_to_be_synced(self): + """Get the remaining_bytes_to_be_synced of this Replication. + + :return: The remaining_bytes_to_be_synced of this Replication. + :rtype: int + """ # noqa: E501 + return self._remaining_bytes_to_be_synced + + @remaining_bytes_to_be_synced.setter + def remaining_bytes_to_be_synced(self, remaining_bytes_to_be_synced): + """Set the remaining_bytes_to_be_synced of this Replication. + + :param remaining_bytes_to_be_synced: The remaining_bytes_to_be_synced of this Replication. + :type: int + """ # noqa: E501 + self._remaining_bytes_to_be_synced = remaining_bytes_to_be_synced + + @property + def latest_response_code(self): + """Get the latest_response_code of this Replication. + + :return: The latest_response_code of this Replication. + :rtype: int + """ # noqa: E501 + return self._latest_response_code + + @latest_response_code.setter + def latest_response_code(self, latest_response_code): + """Set the latest_response_code of this Replication. + + :param latest_response_code: The latest_response_code of this Replication. + :type: int + """ # noqa: E501 + self._latest_response_code = latest_response_code + + @property + def latest_error_message(self): + """Get the latest_error_message of this Replication. + + :return: The latest_error_message of this Replication. + :rtype: str + """ # noqa: E501 + return self._latest_error_message + + @latest_error_message.setter + def latest_error_message(self, latest_error_message): + """Set the latest_error_message of this Replication. + + :param latest_error_message: The latest_error_message of this Replication. + :type: str + """ # noqa: E501 + self._latest_error_message = latest_error_message + + @property + def drop_non_retryable_data(self): + """Get the drop_non_retryable_data of this Replication. + + :return: The drop_non_retryable_data of this Replication. + :rtype: bool + """ # noqa: E501 + return self._drop_non_retryable_data + + @drop_non_retryable_data.setter + def drop_non_retryable_data(self, drop_non_retryable_data): + """Set the drop_non_retryable_data of this Replication. + + :param drop_non_retryable_data: The drop_non_retryable_data of this Replication. + :type: bool + """ # noqa: E501 + self._drop_non_retryable_data = drop_non_retryable_data + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Replication): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/replication_creation_request.py b/frogpilot/third_party/influxdb_client/domain/replication_creation_request.py new file mode 100644 index 000000000..946f2c96a --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/replication_creation_request.py @@ -0,0 +1,324 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ReplicationCreationRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'description': 'str', + 'org_id': 'str', + 'remote_id': 'str', + 'local_bucket_id': 'str', + 'remote_bucket_id': 'str', + 'remote_bucket_name': 'str', + 'max_queue_size_bytes': 'int', + 'drop_non_retryable_data': 'bool', + 'max_age_seconds': 'int' + } + + attribute_map = { + 'name': 'name', + 'description': 'description', + 'org_id': 'orgID', + 'remote_id': 'remoteID', + 'local_bucket_id': 'localBucketID', + 'remote_bucket_id': 'remoteBucketID', + 'remote_bucket_name': 'remoteBucketName', + 'max_queue_size_bytes': 'maxQueueSizeBytes', + 'drop_non_retryable_data': 'dropNonRetryableData', + 'max_age_seconds': 'maxAgeSeconds' + } + + def __init__(self, name=None, description=None, org_id=None, remote_id=None, local_bucket_id=None, remote_bucket_id=None, remote_bucket_name=None, max_queue_size_bytes=67108860, drop_non_retryable_data=False, max_age_seconds=604800): # noqa: E501,D401,D403 + """ReplicationCreationRequest - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._description = None + self._org_id = None + self._remote_id = None + self._local_bucket_id = None + self._remote_bucket_id = None + self._remote_bucket_name = None + self._max_queue_size_bytes = None + self._drop_non_retryable_data = None + self._max_age_seconds = None + self.discriminator = None + + self.name = name + if description is not None: + self.description = description + self.org_id = org_id + self.remote_id = remote_id + self.local_bucket_id = local_bucket_id + if remote_bucket_id is not None: + self.remote_bucket_id = remote_bucket_id + if remote_bucket_name is not None: + self.remote_bucket_name = remote_bucket_name + self.max_queue_size_bytes = max_queue_size_bytes + if drop_non_retryable_data is not None: + self.drop_non_retryable_data = drop_non_retryable_data + self.max_age_seconds = max_age_seconds + + @property + def name(self): + """Get the name of this ReplicationCreationRequest. + + :return: The name of this ReplicationCreationRequest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this ReplicationCreationRequest. + + :param name: The name of this ReplicationCreationRequest. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this ReplicationCreationRequest. + + :return: The description of this ReplicationCreationRequest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this ReplicationCreationRequest. + + :param description: The description of this ReplicationCreationRequest. + :type: str + """ # noqa: E501 + self._description = description + + @property + def org_id(self): + """Get the org_id of this ReplicationCreationRequest. + + :return: The org_id of this ReplicationCreationRequest. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this ReplicationCreationRequest. + + :param org_id: The org_id of this ReplicationCreationRequest. + :type: str + """ # noqa: E501 + if org_id is None: + raise ValueError("Invalid value for `org_id`, must not be `None`") # noqa: E501 + self._org_id = org_id + + @property + def remote_id(self): + """Get the remote_id of this ReplicationCreationRequest. + + :return: The remote_id of this ReplicationCreationRequest. + :rtype: str + """ # noqa: E501 + return self._remote_id + + @remote_id.setter + def remote_id(self, remote_id): + """Set the remote_id of this ReplicationCreationRequest. + + :param remote_id: The remote_id of this ReplicationCreationRequest. + :type: str + """ # noqa: E501 + if remote_id is None: + raise ValueError("Invalid value for `remote_id`, must not be `None`") # noqa: E501 + self._remote_id = remote_id + + @property + def local_bucket_id(self): + """Get the local_bucket_id of this ReplicationCreationRequest. + + :return: The local_bucket_id of this ReplicationCreationRequest. + :rtype: str + """ # noqa: E501 + return self._local_bucket_id + + @local_bucket_id.setter + def local_bucket_id(self, local_bucket_id): + """Set the local_bucket_id of this ReplicationCreationRequest. + + :param local_bucket_id: The local_bucket_id of this ReplicationCreationRequest. + :type: str + """ # noqa: E501 + if local_bucket_id is None: + raise ValueError("Invalid value for `local_bucket_id`, must not be `None`") # noqa: E501 + self._local_bucket_id = local_bucket_id + + @property + def remote_bucket_id(self): + """Get the remote_bucket_id of this ReplicationCreationRequest. + + :return: The remote_bucket_id of this ReplicationCreationRequest. + :rtype: str + """ # noqa: E501 + return self._remote_bucket_id + + @remote_bucket_id.setter + def remote_bucket_id(self, remote_bucket_id): + """Set the remote_bucket_id of this ReplicationCreationRequest. + + :param remote_bucket_id: The remote_bucket_id of this ReplicationCreationRequest. + :type: str + """ # noqa: E501 + self._remote_bucket_id = remote_bucket_id + + @property + def remote_bucket_name(self): + """Get the remote_bucket_name of this ReplicationCreationRequest. + + :return: The remote_bucket_name of this ReplicationCreationRequest. + :rtype: str + """ # noqa: E501 + return self._remote_bucket_name + + @remote_bucket_name.setter + def remote_bucket_name(self, remote_bucket_name): + """Set the remote_bucket_name of this ReplicationCreationRequest. + + :param remote_bucket_name: The remote_bucket_name of this ReplicationCreationRequest. + :type: str + """ # noqa: E501 + self._remote_bucket_name = remote_bucket_name + + @property + def max_queue_size_bytes(self): + """Get the max_queue_size_bytes of this ReplicationCreationRequest. + + :return: The max_queue_size_bytes of this ReplicationCreationRequest. + :rtype: int + """ # noqa: E501 + return self._max_queue_size_bytes + + @max_queue_size_bytes.setter + def max_queue_size_bytes(self, max_queue_size_bytes): + """Set the max_queue_size_bytes of this ReplicationCreationRequest. + + :param max_queue_size_bytes: The max_queue_size_bytes of this ReplicationCreationRequest. + :type: int + """ # noqa: E501 + if max_queue_size_bytes is None: + raise ValueError("Invalid value for `max_queue_size_bytes`, must not be `None`") # noqa: E501 + if max_queue_size_bytes is not None and max_queue_size_bytes < 33554430: # noqa: E501 + raise ValueError("Invalid value for `max_queue_size_bytes`, must be a value greater than or equal to `33554430`") # noqa: E501 + self._max_queue_size_bytes = max_queue_size_bytes + + @property + def drop_non_retryable_data(self): + """Get the drop_non_retryable_data of this ReplicationCreationRequest. + + :return: The drop_non_retryable_data of this ReplicationCreationRequest. + :rtype: bool + """ # noqa: E501 + return self._drop_non_retryable_data + + @drop_non_retryable_data.setter + def drop_non_retryable_data(self, drop_non_retryable_data): + """Set the drop_non_retryable_data of this ReplicationCreationRequest. + + :param drop_non_retryable_data: The drop_non_retryable_data of this ReplicationCreationRequest. + :type: bool + """ # noqa: E501 + self._drop_non_retryable_data = drop_non_retryable_data + + @property + def max_age_seconds(self): + """Get the max_age_seconds of this ReplicationCreationRequest. + + :return: The max_age_seconds of this ReplicationCreationRequest. + :rtype: int + """ # noqa: E501 + return self._max_age_seconds + + @max_age_seconds.setter + def max_age_seconds(self, max_age_seconds): + """Set the max_age_seconds of this ReplicationCreationRequest. + + :param max_age_seconds: The max_age_seconds of this ReplicationCreationRequest. + :type: int + """ # noqa: E501 + if max_age_seconds is None: + raise ValueError("Invalid value for `max_age_seconds`, must not be `None`") # noqa: E501 + if max_age_seconds is not None and max_age_seconds < 0: # noqa: E501 + raise ValueError("Invalid value for `max_age_seconds`, must be a value greater than or equal to `0`") # noqa: E501 + self._max_age_seconds = max_age_seconds + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ReplicationCreationRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/replication_update_request.py b/frogpilot/third_party/influxdb_client/domain/replication_update_request.py new file mode 100644 index 000000000..0c40c1173 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/replication_update_request.py @@ -0,0 +1,272 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ReplicationUpdateRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'description': 'str', + 'remote_id': 'str', + 'remote_bucket_id': 'str', + 'remote_bucket_name': 'str', + 'max_queue_size_bytes': 'int', + 'drop_non_retryable_data': 'bool', + 'max_age_seconds': 'int' + } + + attribute_map = { + 'name': 'name', + 'description': 'description', + 'remote_id': 'remoteID', + 'remote_bucket_id': 'remoteBucketID', + 'remote_bucket_name': 'remoteBucketName', + 'max_queue_size_bytes': 'maxQueueSizeBytes', + 'drop_non_retryable_data': 'dropNonRetryableData', + 'max_age_seconds': 'maxAgeSeconds' + } + + def __init__(self, name=None, description=None, remote_id=None, remote_bucket_id=None, remote_bucket_name=None, max_queue_size_bytes=None, drop_non_retryable_data=None, max_age_seconds=None): # noqa: E501,D401,D403 + """ReplicationUpdateRequest - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._description = None + self._remote_id = None + self._remote_bucket_id = None + self._remote_bucket_name = None + self._max_queue_size_bytes = None + self._drop_non_retryable_data = None + self._max_age_seconds = None + self.discriminator = None + + if name is not None: + self.name = name + if description is not None: + self.description = description + if remote_id is not None: + self.remote_id = remote_id + if remote_bucket_id is not None: + self.remote_bucket_id = remote_bucket_id + if remote_bucket_name is not None: + self.remote_bucket_name = remote_bucket_name + if max_queue_size_bytes is not None: + self.max_queue_size_bytes = max_queue_size_bytes + if drop_non_retryable_data is not None: + self.drop_non_retryable_data = drop_non_retryable_data + if max_age_seconds is not None: + self.max_age_seconds = max_age_seconds + + @property + def name(self): + """Get the name of this ReplicationUpdateRequest. + + :return: The name of this ReplicationUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this ReplicationUpdateRequest. + + :param name: The name of this ReplicationUpdateRequest. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this ReplicationUpdateRequest. + + :return: The description of this ReplicationUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this ReplicationUpdateRequest. + + :param description: The description of this ReplicationUpdateRequest. + :type: str + """ # noqa: E501 + self._description = description + + @property + def remote_id(self): + """Get the remote_id of this ReplicationUpdateRequest. + + :return: The remote_id of this ReplicationUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._remote_id + + @remote_id.setter + def remote_id(self, remote_id): + """Set the remote_id of this ReplicationUpdateRequest. + + :param remote_id: The remote_id of this ReplicationUpdateRequest. + :type: str + """ # noqa: E501 + self._remote_id = remote_id + + @property + def remote_bucket_id(self): + """Get the remote_bucket_id of this ReplicationUpdateRequest. + + :return: The remote_bucket_id of this ReplicationUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._remote_bucket_id + + @remote_bucket_id.setter + def remote_bucket_id(self, remote_bucket_id): + """Set the remote_bucket_id of this ReplicationUpdateRequest. + + :param remote_bucket_id: The remote_bucket_id of this ReplicationUpdateRequest. + :type: str + """ # noqa: E501 + self._remote_bucket_id = remote_bucket_id + + @property + def remote_bucket_name(self): + """Get the remote_bucket_name of this ReplicationUpdateRequest. + + :return: The remote_bucket_name of this ReplicationUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._remote_bucket_name + + @remote_bucket_name.setter + def remote_bucket_name(self, remote_bucket_name): + """Set the remote_bucket_name of this ReplicationUpdateRequest. + + :param remote_bucket_name: The remote_bucket_name of this ReplicationUpdateRequest. + :type: str + """ # noqa: E501 + self._remote_bucket_name = remote_bucket_name + + @property + def max_queue_size_bytes(self): + """Get the max_queue_size_bytes of this ReplicationUpdateRequest. + + :return: The max_queue_size_bytes of this ReplicationUpdateRequest. + :rtype: int + """ # noqa: E501 + return self._max_queue_size_bytes + + @max_queue_size_bytes.setter + def max_queue_size_bytes(self, max_queue_size_bytes): + """Set the max_queue_size_bytes of this ReplicationUpdateRequest. + + :param max_queue_size_bytes: The max_queue_size_bytes of this ReplicationUpdateRequest. + :type: int + """ # noqa: E501 + if max_queue_size_bytes is not None and max_queue_size_bytes < 33554430: # noqa: E501 + raise ValueError("Invalid value for `max_queue_size_bytes`, must be a value greater than or equal to `33554430`") # noqa: E501 + self._max_queue_size_bytes = max_queue_size_bytes + + @property + def drop_non_retryable_data(self): + """Get the drop_non_retryable_data of this ReplicationUpdateRequest. + + :return: The drop_non_retryable_data of this ReplicationUpdateRequest. + :rtype: bool + """ # noqa: E501 + return self._drop_non_retryable_data + + @drop_non_retryable_data.setter + def drop_non_retryable_data(self, drop_non_retryable_data): + """Set the drop_non_retryable_data of this ReplicationUpdateRequest. + + :param drop_non_retryable_data: The drop_non_retryable_data of this ReplicationUpdateRequest. + :type: bool + """ # noqa: E501 + self._drop_non_retryable_data = drop_non_retryable_data + + @property + def max_age_seconds(self): + """Get the max_age_seconds of this ReplicationUpdateRequest. + + :return: The max_age_seconds of this ReplicationUpdateRequest. + :rtype: int + """ # noqa: E501 + return self._max_age_seconds + + @max_age_seconds.setter + def max_age_seconds(self, max_age_seconds): + """Set the max_age_seconds of this ReplicationUpdateRequest. + + :param max_age_seconds: The max_age_seconds of this ReplicationUpdateRequest. + :type: int + """ # noqa: E501 + if max_age_seconds is not None and max_age_seconds < 0: # noqa: E501 + raise ValueError("Invalid value for `max_age_seconds`, must be a value greater than or equal to `0`") # noqa: E501 + self._max_age_seconds = max_age_seconds + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ReplicationUpdateRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/replications.py b/frogpilot/third_party/influxdb_client/domain/replications.py new file mode 100644 index 000000000..d81cd4539 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/replications.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Replications(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'replications': 'list[Replication]' + } + + attribute_map = { + 'replications': 'replications' + } + + def __init__(self, replications=None): # noqa: E501,D401,D403 + """Replications - a model defined in OpenAPI.""" # noqa: E501 + self._replications = None + self.discriminator = None + + if replications is not None: + self.replications = replications + + @property + def replications(self): + """Get the replications of this Replications. + + :return: The replications of this Replications. + :rtype: list[Replication] + """ # noqa: E501 + return self._replications + + @replications.setter + def replications(self, replications): + """Set the replications of this Replications. + + :param replications: The replications of this Replications. + :type: list[Replication] + """ # noqa: E501 + self._replications = replications + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Replications): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/resource_member.py b/frogpilot/third_party/influxdb_client/domain/resource_member.py new file mode 100644 index 000000000..26e26d732 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/resource_member.py @@ -0,0 +1,119 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.user_response import UserResponse + + +class ResourceMember(UserResponse): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'role': 'str', + 'id': 'str', + 'name': 'str', + 'status': 'str', + 'links': 'UserResponseLinks' + } + + attribute_map = { + 'role': 'role', + 'id': 'id', + 'name': 'name', + 'status': 'status', + 'links': 'links' + } + + def __init__(self, role='member', id=None, name=None, status='active', links=None): # noqa: E501,D401,D403 + """ResourceMember - a model defined in OpenAPI.""" # noqa: E501 + UserResponse.__init__(self, id=id, name=name, status=status, links=links) # noqa: E501 + + self._role = None + self.discriminator = None + + if role is not None: + self.role = role + + @property + def role(self): + """Get the role of this ResourceMember. + + :return: The role of this ResourceMember. + :rtype: str + """ # noqa: E501 + return self._role + + @role.setter + def role(self, role): + """Set the role of this ResourceMember. + + :param role: The role of this ResourceMember. + :type: str + """ # noqa: E501 + self._role = role + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ResourceMember): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/resource_members.py b/frogpilot/third_party/influxdb_client/domain/resource_members.py new file mode 100644 index 000000000..5fde29a9d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/resource_members.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ResourceMembers(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'links': 'ResourceMembersLinks', + 'users': 'list[ResourceMember]' + } + + attribute_map = { + 'links': 'links', + 'users': 'users' + } + + def __init__(self, links=None, users=None): # noqa: E501,D401,D403 + """ResourceMembers - a model defined in OpenAPI.""" # noqa: E501 + self._links = None + self._users = None + self.discriminator = None + + if links is not None: + self.links = links + if users is not None: + self.users = users + + @property + def links(self): + """Get the links of this ResourceMembers. + + :return: The links of this ResourceMembers. + :rtype: ResourceMembersLinks + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this ResourceMembers. + + :param links: The links of this ResourceMembers. + :type: ResourceMembersLinks + """ # noqa: E501 + self._links = links + + @property + def users(self): + """Get the users of this ResourceMembers. + + :return: The users of this ResourceMembers. + :rtype: list[ResourceMember] + """ # noqa: E501 + return self._users + + @users.setter + def users(self, users): + """Set the users of this ResourceMembers. + + :param users: The users of this ResourceMembers. + :type: list[ResourceMember] + """ # noqa: E501 + self._users = users + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ResourceMembers): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/resource_members_links.py b/frogpilot/third_party/influxdb_client/domain/resource_members_links.py new file mode 100644 index 000000000..26820bb5a --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/resource_members_links.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ResourceMembersLinks(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + '_self': 'str' + } + + attribute_map = { + '_self': 'self' + } + + def __init__(self, _self=None): # noqa: E501,D401,D403 + """ResourceMembersLinks - a model defined in OpenAPI.""" # noqa: E501 + self.__self = None + self.discriminator = None + + if _self is not None: + self._self = _self + + @property + def _self(self): + """Get the _self of this ResourceMembersLinks. + + :return: The _self of this ResourceMembersLinks. + :rtype: str + """ # noqa: E501 + return self.__self + + @_self.setter + def _self(self, _self): + """Set the _self of this ResourceMembersLinks. + + :param _self: The _self of this ResourceMembersLinks. + :type: str + """ # noqa: E501 + self.__self = _self + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ResourceMembersLinks): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/resource_owner.py b/frogpilot/third_party/influxdb_client/domain/resource_owner.py new file mode 100644 index 000000000..2f73cd7bf --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/resource_owner.py @@ -0,0 +1,119 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.user_response import UserResponse + + +class ResourceOwner(UserResponse): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'role': 'str', + 'id': 'str', + 'name': 'str', + 'status': 'str', + 'links': 'UserResponseLinks' + } + + attribute_map = { + 'role': 'role', + 'id': 'id', + 'name': 'name', + 'status': 'status', + 'links': 'links' + } + + def __init__(self, role='owner', id=None, name=None, status='active', links=None): # noqa: E501,D401,D403 + """ResourceOwner - a model defined in OpenAPI.""" # noqa: E501 + UserResponse.__init__(self, id=id, name=name, status=status, links=links) # noqa: E501 + + self._role = None + self.discriminator = None + + if role is not None: + self.role = role + + @property + def role(self): + """Get the role of this ResourceOwner. + + :return: The role of this ResourceOwner. + :rtype: str + """ # noqa: E501 + return self._role + + @role.setter + def role(self, role): + """Set the role of this ResourceOwner. + + :param role: The role of this ResourceOwner. + :type: str + """ # noqa: E501 + self._role = role + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ResourceOwner): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/resource_owners.py b/frogpilot/third_party/influxdb_client/domain/resource_owners.py new file mode 100644 index 000000000..84a85ff64 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/resource_owners.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ResourceOwners(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'links': 'ResourceMembersLinks', + 'users': 'list[ResourceOwner]' + } + + attribute_map = { + 'links': 'links', + 'users': 'users' + } + + def __init__(self, links=None, users=None): # noqa: E501,D401,D403 + """ResourceOwners - a model defined in OpenAPI.""" # noqa: E501 + self._links = None + self._users = None + self.discriminator = None + + if links is not None: + self.links = links + if users is not None: + self.users = users + + @property + def links(self): + """Get the links of this ResourceOwners. + + :return: The links of this ResourceOwners. + :rtype: ResourceMembersLinks + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this ResourceOwners. + + :param links: The links of this ResourceOwners. + :type: ResourceMembersLinks + """ # noqa: E501 + self._links = links + + @property + def users(self): + """Get the users of this ResourceOwners. + + :return: The users of this ResourceOwners. + :rtype: list[ResourceOwner] + """ # noqa: E501 + return self._users + + @users.setter + def users(self, users): + """Set the users of this ResourceOwners. + + :param users: The users of this ResourceOwners. + :type: list[ResourceOwner] + """ # noqa: E501 + self._users = users + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ResourceOwners): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/restored_bucket_mappings.py b/frogpilot/third_party/influxdb_client/domain/restored_bucket_mappings.py new file mode 100644 index 000000000..2059cbc82 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/restored_bucket_mappings.py @@ -0,0 +1,160 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class RestoredBucketMappings(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'name': 'str', + 'shard_mappings': 'list[BucketShardMapping]' + } + + attribute_map = { + 'id': 'id', + 'name': 'name', + 'shard_mappings': 'shardMappings' + } + + def __init__(self, id=None, name=None, shard_mappings=None): # noqa: E501,D401,D403 + """RestoredBucketMappings - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._name = None + self._shard_mappings = None + self.discriminator = None + + self.id = id + self.name = name + self.shard_mappings = shard_mappings + + @property + def id(self): + """Get the id of this RestoredBucketMappings. + + New ID of the restored bucket + + :return: The id of this RestoredBucketMappings. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this RestoredBucketMappings. + + New ID of the restored bucket + + :param id: The id of this RestoredBucketMappings. + :type: str + """ # noqa: E501 + if id is None: + raise ValueError("Invalid value for `id`, must not be `None`") # noqa: E501 + self._id = id + + @property + def name(self): + """Get the name of this RestoredBucketMappings. + + :return: The name of this RestoredBucketMappings. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this RestoredBucketMappings. + + :param name: The name of this RestoredBucketMappings. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def shard_mappings(self): + """Get the shard_mappings of this RestoredBucketMappings. + + :return: The shard_mappings of this RestoredBucketMappings. + :rtype: list[BucketShardMapping] + """ # noqa: E501 + return self._shard_mappings + + @shard_mappings.setter + def shard_mappings(self, shard_mappings): + """Set the shard_mappings of this RestoredBucketMappings. + + :param shard_mappings: The shard_mappings of this RestoredBucketMappings. + :type: list[BucketShardMapping] + """ # noqa: E501 + if shard_mappings is None: + raise ValueError("Invalid value for `shard_mappings`, must not be `None`") # noqa: E501 + self._shard_mappings = shard_mappings + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, RestoredBucketMappings): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/retention_policy_manifest.py b/frogpilot/third_party/influxdb_client/domain/retention_policy_manifest.py new file mode 100644 index 000000000..a0b314c86 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/retention_policy_manifest.py @@ -0,0 +1,228 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class RetentionPolicyManifest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'replica_n': 'int', + 'duration': 'int', + 'shard_group_duration': 'int', + 'shard_groups': 'list[ShardGroupManifest]', + 'subscriptions': 'list[SubscriptionManifest]' + } + + attribute_map = { + 'name': 'name', + 'replica_n': 'replicaN', + 'duration': 'duration', + 'shard_group_duration': 'shardGroupDuration', + 'shard_groups': 'shardGroups', + 'subscriptions': 'subscriptions' + } + + def __init__(self, name=None, replica_n=None, duration=None, shard_group_duration=None, shard_groups=None, subscriptions=None): # noqa: E501,D401,D403 + """RetentionPolicyManifest - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._replica_n = None + self._duration = None + self._shard_group_duration = None + self._shard_groups = None + self._subscriptions = None + self.discriminator = None + + self.name = name + self.replica_n = replica_n + self.duration = duration + self.shard_group_duration = shard_group_duration + self.shard_groups = shard_groups + self.subscriptions = subscriptions + + @property + def name(self): + """Get the name of this RetentionPolicyManifest. + + :return: The name of this RetentionPolicyManifest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this RetentionPolicyManifest. + + :param name: The name of this RetentionPolicyManifest. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def replica_n(self): + """Get the replica_n of this RetentionPolicyManifest. + + :return: The replica_n of this RetentionPolicyManifest. + :rtype: int + """ # noqa: E501 + return self._replica_n + + @replica_n.setter + def replica_n(self, replica_n): + """Set the replica_n of this RetentionPolicyManifest. + + :param replica_n: The replica_n of this RetentionPolicyManifest. + :type: int + """ # noqa: E501 + if replica_n is None: + raise ValueError("Invalid value for `replica_n`, must not be `None`") # noqa: E501 + self._replica_n = replica_n + + @property + def duration(self): + """Get the duration of this RetentionPolicyManifest. + + :return: The duration of this RetentionPolicyManifest. + :rtype: int + """ # noqa: E501 + return self._duration + + @duration.setter + def duration(self, duration): + """Set the duration of this RetentionPolicyManifest. + + :param duration: The duration of this RetentionPolicyManifest. + :type: int + """ # noqa: E501 + if duration is None: + raise ValueError("Invalid value for `duration`, must not be `None`") # noqa: E501 + self._duration = duration + + @property + def shard_group_duration(self): + """Get the shard_group_duration of this RetentionPolicyManifest. + + :return: The shard_group_duration of this RetentionPolicyManifest. + :rtype: int + """ # noqa: E501 + return self._shard_group_duration + + @shard_group_duration.setter + def shard_group_duration(self, shard_group_duration): + """Set the shard_group_duration of this RetentionPolicyManifest. + + :param shard_group_duration: The shard_group_duration of this RetentionPolicyManifest. + :type: int + """ # noqa: E501 + if shard_group_duration is None: + raise ValueError("Invalid value for `shard_group_duration`, must not be `None`") # noqa: E501 + self._shard_group_duration = shard_group_duration + + @property + def shard_groups(self): + """Get the shard_groups of this RetentionPolicyManifest. + + :return: The shard_groups of this RetentionPolicyManifest. + :rtype: list[ShardGroupManifest] + """ # noqa: E501 + return self._shard_groups + + @shard_groups.setter + def shard_groups(self, shard_groups): + """Set the shard_groups of this RetentionPolicyManifest. + + :param shard_groups: The shard_groups of this RetentionPolicyManifest. + :type: list[ShardGroupManifest] + """ # noqa: E501 + if shard_groups is None: + raise ValueError("Invalid value for `shard_groups`, must not be `None`") # noqa: E501 + self._shard_groups = shard_groups + + @property + def subscriptions(self): + """Get the subscriptions of this RetentionPolicyManifest. + + :return: The subscriptions of this RetentionPolicyManifest. + :rtype: list[SubscriptionManifest] + """ # noqa: E501 + return self._subscriptions + + @subscriptions.setter + def subscriptions(self, subscriptions): + """Set the subscriptions of this RetentionPolicyManifest. + + :param subscriptions: The subscriptions of this RetentionPolicyManifest. + :type: list[SubscriptionManifest] + """ # noqa: E501 + if subscriptions is None: + raise ValueError("Invalid value for `subscriptions`, must not be `None`") # noqa: E501 + self._subscriptions = subscriptions + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, RetentionPolicyManifest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/return_statement.py b/frogpilot/third_party/influxdb_client/domain/return_statement.py new file mode 100644 index 000000000..aa4b48d9b --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/return_statement.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.statement import Statement + + +class ReturnStatement(Statement): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'argument': 'Expression' + } + + attribute_map = { + 'type': 'type', + 'argument': 'argument' + } + + def __init__(self, type=None, argument=None): # noqa: E501,D401,D403 + """ReturnStatement - a model defined in OpenAPI.""" # noqa: E501 + Statement.__init__(self) # noqa: E501 + + self._type = None + self._argument = None + self.discriminator = None + + if type is not None: + self.type = type + if argument is not None: + self.argument = argument + + @property + def type(self): + """Get the type of this ReturnStatement. + + Type of AST node + + :return: The type of this ReturnStatement. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this ReturnStatement. + + Type of AST node + + :param type: The type of this ReturnStatement. + :type: str + """ # noqa: E501 + self._type = type + + @property + def argument(self): + """Get the argument of this ReturnStatement. + + :return: The argument of this ReturnStatement. + :rtype: Expression + """ # noqa: E501 + return self._argument + + @argument.setter + def argument(self, argument): + """Set the argument of this ReturnStatement. + + :param argument: The argument of this ReturnStatement. + :type: Expression + """ # noqa: E501 + self._argument = argument + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ReturnStatement): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/routes.py b/frogpilot/third_party/influxdb_client/domain/routes.py new file mode 100644 index 000000000..2a7a77e68 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/routes.py @@ -0,0 +1,498 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Routes(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'authorizations': 'str', + 'buckets': 'str', + 'dashboards': 'str', + 'external': 'RoutesExternal', + 'variables': 'str', + 'me': 'str', + 'flags': 'str', + 'orgs': 'str', + 'query': 'RoutesQuery', + 'setup': 'str', + 'signin': 'str', + 'signout': 'str', + 'sources': 'str', + 'system': 'RoutesSystem', + 'tasks': 'str', + 'telegrafs': 'str', + 'users': 'str', + 'write': 'str' + } + + attribute_map = { + 'authorizations': 'authorizations', + 'buckets': 'buckets', + 'dashboards': 'dashboards', + 'external': 'external', + 'variables': 'variables', + 'me': 'me', + 'flags': 'flags', + 'orgs': 'orgs', + 'query': 'query', + 'setup': 'setup', + 'signin': 'signin', + 'signout': 'signout', + 'sources': 'sources', + 'system': 'system', + 'tasks': 'tasks', + 'telegrafs': 'telegrafs', + 'users': 'users', + 'write': 'write' + } + + def __init__(self, authorizations=None, buckets=None, dashboards=None, external=None, variables=None, me=None, flags=None, orgs=None, query=None, setup=None, signin=None, signout=None, sources=None, system=None, tasks=None, telegrafs=None, users=None, write=None): # noqa: E501,D401,D403 + """Routes - a model defined in OpenAPI.""" # noqa: E501 + self._authorizations = None + self._buckets = None + self._dashboards = None + self._external = None + self._variables = None + self._me = None + self._flags = None + self._orgs = None + self._query = None + self._setup = None + self._signin = None + self._signout = None + self._sources = None + self._system = None + self._tasks = None + self._telegrafs = None + self._users = None + self._write = None + self.discriminator = None + + if authorizations is not None: + self.authorizations = authorizations + if buckets is not None: + self.buckets = buckets + if dashboards is not None: + self.dashboards = dashboards + if external is not None: + self.external = external + if variables is not None: + self.variables = variables + if me is not None: + self.me = me + if flags is not None: + self.flags = flags + if orgs is not None: + self.orgs = orgs + if query is not None: + self.query = query + if setup is not None: + self.setup = setup + if signin is not None: + self.signin = signin + if signout is not None: + self.signout = signout + if sources is not None: + self.sources = sources + if system is not None: + self.system = system + if tasks is not None: + self.tasks = tasks + if telegrafs is not None: + self.telegrafs = telegrafs + if users is not None: + self.users = users + if write is not None: + self.write = write + + @property + def authorizations(self): + """Get the authorizations of this Routes. + + :return: The authorizations of this Routes. + :rtype: str + """ # noqa: E501 + return self._authorizations + + @authorizations.setter + def authorizations(self, authorizations): + """Set the authorizations of this Routes. + + :param authorizations: The authorizations of this Routes. + :type: str + """ # noqa: E501 + self._authorizations = authorizations + + @property + def buckets(self): + """Get the buckets of this Routes. + + :return: The buckets of this Routes. + :rtype: str + """ # noqa: E501 + return self._buckets + + @buckets.setter + def buckets(self, buckets): + """Set the buckets of this Routes. + + :param buckets: The buckets of this Routes. + :type: str + """ # noqa: E501 + self._buckets = buckets + + @property + def dashboards(self): + """Get the dashboards of this Routes. + + :return: The dashboards of this Routes. + :rtype: str + """ # noqa: E501 + return self._dashboards + + @dashboards.setter + def dashboards(self, dashboards): + """Set the dashboards of this Routes. + + :param dashboards: The dashboards of this Routes. + :type: str + """ # noqa: E501 + self._dashboards = dashboards + + @property + def external(self): + """Get the external of this Routes. + + :return: The external of this Routes. + :rtype: RoutesExternal + """ # noqa: E501 + return self._external + + @external.setter + def external(self, external): + """Set the external of this Routes. + + :param external: The external of this Routes. + :type: RoutesExternal + """ # noqa: E501 + self._external = external + + @property + def variables(self): + """Get the variables of this Routes. + + :return: The variables of this Routes. + :rtype: str + """ # noqa: E501 + return self._variables + + @variables.setter + def variables(self, variables): + """Set the variables of this Routes. + + :param variables: The variables of this Routes. + :type: str + """ # noqa: E501 + self._variables = variables + + @property + def me(self): + """Get the me of this Routes. + + :return: The me of this Routes. + :rtype: str + """ # noqa: E501 + return self._me + + @me.setter + def me(self, me): + """Set the me of this Routes. + + :param me: The me of this Routes. + :type: str + """ # noqa: E501 + self._me = me + + @property + def flags(self): + """Get the flags of this Routes. + + :return: The flags of this Routes. + :rtype: str + """ # noqa: E501 + return self._flags + + @flags.setter + def flags(self, flags): + """Set the flags of this Routes. + + :param flags: The flags of this Routes. + :type: str + """ # noqa: E501 + self._flags = flags + + @property + def orgs(self): + """Get the orgs of this Routes. + + :return: The orgs of this Routes. + :rtype: str + """ # noqa: E501 + return self._orgs + + @orgs.setter + def orgs(self, orgs): + """Set the orgs of this Routes. + + :param orgs: The orgs of this Routes. + :type: str + """ # noqa: E501 + self._orgs = orgs + + @property + def query(self): + """Get the query of this Routes. + + :return: The query of this Routes. + :rtype: RoutesQuery + """ # noqa: E501 + return self._query + + @query.setter + def query(self, query): + """Set the query of this Routes. + + :param query: The query of this Routes. + :type: RoutesQuery + """ # noqa: E501 + self._query = query + + @property + def setup(self): + """Get the setup of this Routes. + + :return: The setup of this Routes. + :rtype: str + """ # noqa: E501 + return self._setup + + @setup.setter + def setup(self, setup): + """Set the setup of this Routes. + + :param setup: The setup of this Routes. + :type: str + """ # noqa: E501 + self._setup = setup + + @property + def signin(self): + """Get the signin of this Routes. + + :return: The signin of this Routes. + :rtype: str + """ # noqa: E501 + return self._signin + + @signin.setter + def signin(self, signin): + """Set the signin of this Routes. + + :param signin: The signin of this Routes. + :type: str + """ # noqa: E501 + self._signin = signin + + @property + def signout(self): + """Get the signout of this Routes. + + :return: The signout of this Routes. + :rtype: str + """ # noqa: E501 + return self._signout + + @signout.setter + def signout(self, signout): + """Set the signout of this Routes. + + :param signout: The signout of this Routes. + :type: str + """ # noqa: E501 + self._signout = signout + + @property + def sources(self): + """Get the sources of this Routes. + + :return: The sources of this Routes. + :rtype: str + """ # noqa: E501 + return self._sources + + @sources.setter + def sources(self, sources): + """Set the sources of this Routes. + + :param sources: The sources of this Routes. + :type: str + """ # noqa: E501 + self._sources = sources + + @property + def system(self): + """Get the system of this Routes. + + :return: The system of this Routes. + :rtype: RoutesSystem + """ # noqa: E501 + return self._system + + @system.setter + def system(self, system): + """Set the system of this Routes. + + :param system: The system of this Routes. + :type: RoutesSystem + """ # noqa: E501 + self._system = system + + @property + def tasks(self): + """Get the tasks of this Routes. + + :return: The tasks of this Routes. + :rtype: str + """ # noqa: E501 + return self._tasks + + @tasks.setter + def tasks(self, tasks): + """Set the tasks of this Routes. + + :param tasks: The tasks of this Routes. + :type: str + """ # noqa: E501 + self._tasks = tasks + + @property + def telegrafs(self): + """Get the telegrafs of this Routes. + + :return: The telegrafs of this Routes. + :rtype: str + """ # noqa: E501 + return self._telegrafs + + @telegrafs.setter + def telegrafs(self, telegrafs): + """Set the telegrafs of this Routes. + + :param telegrafs: The telegrafs of this Routes. + :type: str + """ # noqa: E501 + self._telegrafs = telegrafs + + @property + def users(self): + """Get the users of this Routes. + + :return: The users of this Routes. + :rtype: str + """ # noqa: E501 + return self._users + + @users.setter + def users(self, users): + """Set the users of this Routes. + + :param users: The users of this Routes. + :type: str + """ # noqa: E501 + self._users = users + + @property + def write(self): + """Get the write of this Routes. + + :return: The write of this Routes. + :rtype: str + """ # noqa: E501 + return self._write + + @write.setter + def write(self, write): + """Set the write of this Routes. + + :param write: The write of this Routes. + :type: str + """ # noqa: E501 + self._write = write + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Routes): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/routes_external.py b/frogpilot/third_party/influxdb_client/domain/routes_external.py new file mode 100644 index 000000000..87c49f980 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/routes_external.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class RoutesExternal(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'status_feed': 'str' + } + + attribute_map = { + 'status_feed': 'statusFeed' + } + + def __init__(self, status_feed=None): # noqa: E501,D401,D403 + """RoutesExternal - a model defined in OpenAPI.""" # noqa: E501 + self._status_feed = None + self.discriminator = None + + if status_feed is not None: + self.status_feed = status_feed + + @property + def status_feed(self): + """Get the status_feed of this RoutesExternal. + + :return: The status_feed of this RoutesExternal. + :rtype: str + """ # noqa: E501 + return self._status_feed + + @status_feed.setter + def status_feed(self, status_feed): + """Set the status_feed of this RoutesExternal. + + :param status_feed: The status_feed of this RoutesExternal. + :type: str + """ # noqa: E501 + self._status_feed = status_feed + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, RoutesExternal): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/routes_query.py b/frogpilot/third_party/influxdb_client/domain/routes_query.py new file mode 100644 index 000000000..82ae34e17 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/routes_query.py @@ -0,0 +1,176 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class RoutesQuery(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + '_self': 'str', + 'ast': 'str', + 'analyze': 'str', + 'suggestions': 'str' + } + + attribute_map = { + '_self': 'self', + 'ast': 'ast', + 'analyze': 'analyze', + 'suggestions': 'suggestions' + } + + def __init__(self, _self=None, ast=None, analyze=None, suggestions=None): # noqa: E501,D401,D403 + """RoutesQuery - a model defined in OpenAPI.""" # noqa: E501 + self.__self = None + self._ast = None + self._analyze = None + self._suggestions = None + self.discriminator = None + + if _self is not None: + self._self = _self + if ast is not None: + self.ast = ast + if analyze is not None: + self.analyze = analyze + if suggestions is not None: + self.suggestions = suggestions + + @property + def _self(self): + """Get the _self of this RoutesQuery. + + :return: The _self of this RoutesQuery. + :rtype: str + """ # noqa: E501 + return self.__self + + @_self.setter + def _self(self, _self): + """Set the _self of this RoutesQuery. + + :param _self: The _self of this RoutesQuery. + :type: str + """ # noqa: E501 + self.__self = _self + + @property + def ast(self): + """Get the ast of this RoutesQuery. + + :return: The ast of this RoutesQuery. + :rtype: str + """ # noqa: E501 + return self._ast + + @ast.setter + def ast(self, ast): + """Set the ast of this RoutesQuery. + + :param ast: The ast of this RoutesQuery. + :type: str + """ # noqa: E501 + self._ast = ast + + @property + def analyze(self): + """Get the analyze of this RoutesQuery. + + :return: The analyze of this RoutesQuery. + :rtype: str + """ # noqa: E501 + return self._analyze + + @analyze.setter + def analyze(self, analyze): + """Set the analyze of this RoutesQuery. + + :param analyze: The analyze of this RoutesQuery. + :type: str + """ # noqa: E501 + self._analyze = analyze + + @property + def suggestions(self): + """Get the suggestions of this RoutesQuery. + + :return: The suggestions of this RoutesQuery. + :rtype: str + """ # noqa: E501 + return self._suggestions + + @suggestions.setter + def suggestions(self, suggestions): + """Set the suggestions of this RoutesQuery. + + :param suggestions: The suggestions of this RoutesQuery. + :type: str + """ # noqa: E501 + self._suggestions = suggestions + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, RoutesQuery): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/routes_system.py b/frogpilot/third_party/influxdb_client/domain/routes_system.py new file mode 100644 index 000000000..73ac677b2 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/routes_system.py @@ -0,0 +1,153 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class RoutesSystem(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'metrics': 'str', + 'debug': 'str', + 'health': 'str' + } + + attribute_map = { + 'metrics': 'metrics', + 'debug': 'debug', + 'health': 'health' + } + + def __init__(self, metrics=None, debug=None, health=None): # noqa: E501,D401,D403 + """RoutesSystem - a model defined in OpenAPI.""" # noqa: E501 + self._metrics = None + self._debug = None + self._health = None + self.discriminator = None + + if metrics is not None: + self.metrics = metrics + if debug is not None: + self.debug = debug + if health is not None: + self.health = health + + @property + def metrics(self): + """Get the metrics of this RoutesSystem. + + :return: The metrics of this RoutesSystem. + :rtype: str + """ # noqa: E501 + return self._metrics + + @metrics.setter + def metrics(self, metrics): + """Set the metrics of this RoutesSystem. + + :param metrics: The metrics of this RoutesSystem. + :type: str + """ # noqa: E501 + self._metrics = metrics + + @property + def debug(self): + """Get the debug of this RoutesSystem. + + :return: The debug of this RoutesSystem. + :rtype: str + """ # noqa: E501 + return self._debug + + @debug.setter + def debug(self, debug): + """Set the debug of this RoutesSystem. + + :param debug: The debug of this RoutesSystem. + :type: str + """ # noqa: E501 + self._debug = debug + + @property + def health(self): + """Get the health of this RoutesSystem. + + :return: The health of this RoutesSystem. + :rtype: str + """ # noqa: E501 + return self._health + + @health.setter + def health(self, health): + """Set the health of this RoutesSystem. + + :param health: The health of this RoutesSystem. + :type: str + """ # noqa: E501 + self._health = health + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, RoutesSystem): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/rule_status_level.py b/frogpilot/third_party/influxdb_client/domain/rule_status_level.py new file mode 100644 index 000000000..9d9f4249e --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/rule_status_level.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class RuleStatusLevel(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + UNKNOWN = "UNKNOWN" + OK = "OK" + INFO = "INFO" + CRIT = "CRIT" + WARN = "WARN" + ANY = "ANY" + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """RuleStatusLevel - a model defined in OpenAPI.""" # noqa: E501 self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, RuleStatusLevel): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/run.py b/frogpilot/third_party/influxdb_client/domain/run.py new file mode 100644 index 000000000..32634aca6 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/run.py @@ -0,0 +1,338 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Run(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'task_id': 'str', + 'status': 'str', + 'scheduled_for': 'datetime', + 'log': 'list[LogEvent]', + 'flux': 'str', + 'started_at': 'datetime', + 'finished_at': 'datetime', + 'requested_at': 'datetime', + 'links': 'RunLinks' + } + + attribute_map = { + 'id': 'id', + 'task_id': 'taskID', + 'status': 'status', + 'scheduled_for': 'scheduledFor', + 'log': 'log', + 'flux': 'flux', + 'started_at': 'startedAt', + 'finished_at': 'finishedAt', + 'requested_at': 'requestedAt', + 'links': 'links' + } + + def __init__(self, id=None, task_id=None, status=None, scheduled_for=None, log=None, flux=None, started_at=None, finished_at=None, requested_at=None, links=None): # noqa: E501,D401,D403 + """Run - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._task_id = None + self._status = None + self._scheduled_for = None + self._log = None + self._flux = None + self._started_at = None + self._finished_at = None + self._requested_at = None + self._links = None + self.discriminator = None + + if id is not None: + self.id = id + if task_id is not None: + self.task_id = task_id + if status is not None: + self.status = status + if scheduled_for is not None: + self.scheduled_for = scheduled_for + if log is not None: + self.log = log + if flux is not None: + self.flux = flux + if started_at is not None: + self.started_at = started_at + if finished_at is not None: + self.finished_at = finished_at + if requested_at is not None: + self.requested_at = requested_at + if links is not None: + self.links = links + + @property + def id(self): + """Get the id of this Run. + + :return: The id of this Run. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this Run. + + :param id: The id of this Run. + :type: str + """ # noqa: E501 + self._id = id + + @property + def task_id(self): + """Get the task_id of this Run. + + :return: The task_id of this Run. + :rtype: str + """ # noqa: E501 + return self._task_id + + @task_id.setter + def task_id(self, task_id): + """Set the task_id of this Run. + + :param task_id: The task_id of this Run. + :type: str + """ # noqa: E501 + self._task_id = task_id + + @property + def status(self): + """Get the status of this Run. + + :return: The status of this Run. + :rtype: str + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this Run. + + :param status: The status of this Run. + :type: str + """ # noqa: E501 + self._status = status + + @property + def scheduled_for(self): + """Get the scheduled_for of this Run. + + The time [RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp) used for the run's `now` option. + + :return: The scheduled_for of this Run. + :rtype: datetime + """ # noqa: E501 + return self._scheduled_for + + @scheduled_for.setter + def scheduled_for(self, scheduled_for): + """Set the scheduled_for of this Run. + + The time [RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp) used for the run's `now` option. + + :param scheduled_for: The scheduled_for of this Run. + :type: datetime + """ # noqa: E501 + self._scheduled_for = scheduled_for + + @property + def log(self): + """Get the log of this Run. + + An array of logs associated with the run. + + :return: The log of this Run. + :rtype: list[LogEvent] + """ # noqa: E501 + return self._log + + @log.setter + def log(self, log): + """Set the log of this Run. + + An array of logs associated with the run. + + :param log: The log of this Run. + :type: list[LogEvent] + """ # noqa: E501 + self._log = log + + @property + def flux(self): + """Get the flux of this Run. + + Flux used for the task + + :return: The flux of this Run. + :rtype: str + """ # noqa: E501 + return self._flux + + @flux.setter + def flux(self, flux): + """Set the flux of this Run. + + Flux used for the task + + :param flux: The flux of this Run. + :type: str + """ # noqa: E501 + self._flux = flux + + @property + def started_at(self): + """Get the started_at of this Run. + + The time ([RFC3339Nano date/time format](https://go.dev/src/time/format.go)) the run started executing. + + :return: The started_at of this Run. + :rtype: datetime + """ # noqa: E501 + return self._started_at + + @started_at.setter + def started_at(self, started_at): + """Set the started_at of this Run. + + The time ([RFC3339Nano date/time format](https://go.dev/src/time/format.go)) the run started executing. + + :param started_at: The started_at of this Run. + :type: datetime + """ # noqa: E501 + self._started_at = started_at + + @property + def finished_at(self): + """Get the finished_at of this Run. + + The time ([RFC3339Nano date/time format](https://go.dev/src/time/format.go)) the run finished executing. + + :return: The finished_at of this Run. + :rtype: datetime + """ # noqa: E501 + return self._finished_at + + @finished_at.setter + def finished_at(self, finished_at): + """Set the finished_at of this Run. + + The time ([RFC3339Nano date/time format](https://go.dev/src/time/format.go)) the run finished executing. + + :param finished_at: The finished_at of this Run. + :type: datetime + """ # noqa: E501 + self._finished_at = finished_at + + @property + def requested_at(self): + """Get the requested_at of this Run. + + The time ([RFC3339Nano date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339nano-timestamp)) the run was manually requested. + + :return: The requested_at of this Run. + :rtype: datetime + """ # noqa: E501 + return self._requested_at + + @requested_at.setter + def requested_at(self, requested_at): + """Set the requested_at of this Run. + + The time ([RFC3339Nano date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339nano-timestamp)) the run was manually requested. + + :param requested_at: The requested_at of this Run. + :type: datetime + """ # noqa: E501 + self._requested_at = requested_at + + @property + def links(self): + """Get the links of this Run. + + :return: The links of this Run. + :rtype: RunLinks + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Run. + + :param links: The links of this Run. + :type: RunLinks + """ # noqa: E501 + self._links = links + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Run): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/run_links.py b/frogpilot/third_party/influxdb_client/domain/run_links.py new file mode 100644 index 000000000..08c0533f0 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/run_links.py @@ -0,0 +1,153 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class RunLinks(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + '_self': 'str', + 'task': 'str', + 'retry': 'str' + } + + attribute_map = { + '_self': 'self', + 'task': 'task', + 'retry': 'retry' + } + + def __init__(self, _self=None, task=None, retry=None): # noqa: E501,D401,D403 + """RunLinks - a model defined in OpenAPI.""" # noqa: E501 + self.__self = None + self._task = None + self._retry = None + self.discriminator = None + + if _self is not None: + self._self = _self + if task is not None: + self.task = task + if retry is not None: + self.retry = retry + + @property + def _self(self): + """Get the _self of this RunLinks. + + :return: The _self of this RunLinks. + :rtype: str + """ # noqa: E501 + return self.__self + + @_self.setter + def _self(self, _self): + """Set the _self of this RunLinks. + + :param _self: The _self of this RunLinks. + :type: str + """ # noqa: E501 + self.__self = _self + + @property + def task(self): + """Get the task of this RunLinks. + + :return: The task of this RunLinks. + :rtype: str + """ # noqa: E501 + return self._task + + @task.setter + def task(self, task): + """Set the task of this RunLinks. + + :param task: The task of this RunLinks. + :type: str + """ # noqa: E501 + self._task = task + + @property + def retry(self): + """Get the retry of this RunLinks. + + :return: The retry of this RunLinks. + :rtype: str + """ # noqa: E501 + return self._retry + + @retry.setter + def retry(self, retry): + """Set the retry of this RunLinks. + + :param retry: The retry of this RunLinks. + :type: str + """ # noqa: E501 + self._retry = retry + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, RunLinks): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/run_manually.py b/frogpilot/third_party/influxdb_client/domain/run_manually.py new file mode 100644 index 000000000..c32608319 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/run_manually.py @@ -0,0 +1,110 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class RunManually(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'scheduled_for': 'datetime' + } + + attribute_map = { + 'scheduled_for': 'scheduledFor' + } + + def __init__(self, scheduled_for=None): # noqa: E501,D401,D403 + """RunManually - a model defined in OpenAPI.""" # noqa: E501 + self._scheduled_for = None + self.discriminator = None + + self.scheduled_for = scheduled_for + + @property + def scheduled_for(self): + """Get the scheduled_for of this RunManually. + + The time [RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp) used for the run's `now` option. Default is the server _now_ time. + + :return: The scheduled_for of this RunManually. + :rtype: datetime + """ # noqa: E501 + return self._scheduled_for + + @scheduled_for.setter + def scheduled_for(self, scheduled_for): + """Set the scheduled_for of this RunManually. + + The time [RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp) used for the run's `now` option. Default is the server _now_ time. + + :param scheduled_for: The scheduled_for of this RunManually. + :type: datetime + """ # noqa: E501 + self._scheduled_for = scheduled_for + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, RunManually): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/runs.py b/frogpilot/third_party/influxdb_client/domain/runs.py new file mode 100644 index 000000000..5f926301e --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/runs.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Runs(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'links': 'Links', + 'runs': 'list[Run]' + } + + attribute_map = { + 'links': 'links', + 'runs': 'runs' + } + + def __init__(self, links=None, runs=None): # noqa: E501,D401,D403 + """Runs - a model defined in OpenAPI.""" # noqa: E501 + self._links = None + self._runs = None + self.discriminator = None + + if links is not None: + self.links = links + if runs is not None: + self.runs = runs + + @property + def links(self): + """Get the links of this Runs. + + :return: The links of this Runs. + :rtype: Links + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Runs. + + :param links: The links of this Runs. + :type: Links + """ # noqa: E501 + self._links = links + + @property + def runs(self): + """Get the runs of this Runs. + + :return: The runs of this Runs. + :rtype: list[Run] + """ # noqa: E501 + return self._runs + + @runs.setter + def runs(self, runs): + """Set the runs of this Runs. + + :param runs: The runs of this Runs. + :type: list[Run] + """ # noqa: E501 + self._runs = runs + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Runs): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/scatter_view_properties.py b/frogpilot/third_party/influxdb_client/domain/scatter_view_properties.py new file mode 100644 index 000000000..783a87cb7 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/scatter_view_properties.py @@ -0,0 +1,850 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.view_properties import ViewProperties + + +class ScatterViewProperties(ViewProperties): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'adaptive_zoom_hide': 'bool', + 'time_format': 'str', + 'type': 'str', + 'queries': 'list[DashboardQuery]', + 'colors': 'list[str]', + 'shape': 'str', + 'note': 'str', + 'show_note_when_empty': 'bool', + 'x_column': 'str', + 'generate_x_axis_ticks': 'list[str]', + 'x_total_ticks': 'int', + 'x_tick_start': 'float', + 'x_tick_step': 'float', + 'y_column': 'str', + 'generate_y_axis_ticks': 'list[str]', + 'y_total_ticks': 'int', + 'y_tick_start': 'float', + 'y_tick_step': 'float', + 'fill_columns': 'list[str]', + 'symbol_columns': 'list[str]', + 'x_domain': 'list[float]', + 'y_domain': 'list[float]', + 'x_axis_label': 'str', + 'y_axis_label': 'str', + 'x_prefix': 'str', + 'x_suffix': 'str', + 'y_prefix': 'str', + 'y_suffix': 'str', + 'legend_colorize_rows': 'bool', + 'legend_hide': 'bool', + 'legend_opacity': 'float', + 'legend_orientation_threshold': 'int' + } + + attribute_map = { + 'adaptive_zoom_hide': 'adaptiveZoomHide', + 'time_format': 'timeFormat', + 'type': 'type', + 'queries': 'queries', + 'colors': 'colors', + 'shape': 'shape', + 'note': 'note', + 'show_note_when_empty': 'showNoteWhenEmpty', + 'x_column': 'xColumn', + 'generate_x_axis_ticks': 'generateXAxisTicks', + 'x_total_ticks': 'xTotalTicks', + 'x_tick_start': 'xTickStart', + 'x_tick_step': 'xTickStep', + 'y_column': 'yColumn', + 'generate_y_axis_ticks': 'generateYAxisTicks', + 'y_total_ticks': 'yTotalTicks', + 'y_tick_start': 'yTickStart', + 'y_tick_step': 'yTickStep', + 'fill_columns': 'fillColumns', + 'symbol_columns': 'symbolColumns', + 'x_domain': 'xDomain', + 'y_domain': 'yDomain', + 'x_axis_label': 'xAxisLabel', + 'y_axis_label': 'yAxisLabel', + 'x_prefix': 'xPrefix', + 'x_suffix': 'xSuffix', + 'y_prefix': 'yPrefix', + 'y_suffix': 'ySuffix', + 'legend_colorize_rows': 'legendColorizeRows', + 'legend_hide': 'legendHide', + 'legend_opacity': 'legendOpacity', + 'legend_orientation_threshold': 'legendOrientationThreshold' + } + + def __init__(self, adaptive_zoom_hide=None, time_format=None, type=None, queries=None, colors=None, shape=None, note=None, show_note_when_empty=None, x_column=None, generate_x_axis_ticks=None, x_total_ticks=None, x_tick_start=None, x_tick_step=None, y_column=None, generate_y_axis_ticks=None, y_total_ticks=None, y_tick_start=None, y_tick_step=None, fill_columns=None, symbol_columns=None, x_domain=None, y_domain=None, x_axis_label=None, y_axis_label=None, x_prefix=None, x_suffix=None, y_prefix=None, y_suffix=None, legend_colorize_rows=None, legend_hide=None, legend_opacity=None, legend_orientation_threshold=None): # noqa: E501,D401,D403 + """ScatterViewProperties - a model defined in OpenAPI.""" # noqa: E501 + ViewProperties.__init__(self) # noqa: E501 + + self._adaptive_zoom_hide = None + self._time_format = None + self._type = None + self._queries = None + self._colors = None + self._shape = None + self._note = None + self._show_note_when_empty = None + self._x_column = None + self._generate_x_axis_ticks = None + self._x_total_ticks = None + self._x_tick_start = None + self._x_tick_step = None + self._y_column = None + self._generate_y_axis_ticks = None + self._y_total_ticks = None + self._y_tick_start = None + self._y_tick_step = None + self._fill_columns = None + self._symbol_columns = None + self._x_domain = None + self._y_domain = None + self._x_axis_label = None + self._y_axis_label = None + self._x_prefix = None + self._x_suffix = None + self._y_prefix = None + self._y_suffix = None + self._legend_colorize_rows = None + self._legend_hide = None + self._legend_opacity = None + self._legend_orientation_threshold = None + self.discriminator = None + + if adaptive_zoom_hide is not None: + self.adaptive_zoom_hide = adaptive_zoom_hide + if time_format is not None: + self.time_format = time_format + self.type = type + self.queries = queries + self.colors = colors + self.shape = shape + self.note = note + self.show_note_when_empty = show_note_when_empty + self.x_column = x_column + if generate_x_axis_ticks is not None: + self.generate_x_axis_ticks = generate_x_axis_ticks + if x_total_ticks is not None: + self.x_total_ticks = x_total_ticks + if x_tick_start is not None: + self.x_tick_start = x_tick_start + if x_tick_step is not None: + self.x_tick_step = x_tick_step + self.y_column = y_column + if generate_y_axis_ticks is not None: + self.generate_y_axis_ticks = generate_y_axis_ticks + if y_total_ticks is not None: + self.y_total_ticks = y_total_ticks + if y_tick_start is not None: + self.y_tick_start = y_tick_start + if y_tick_step is not None: + self.y_tick_step = y_tick_step + self.fill_columns = fill_columns + self.symbol_columns = symbol_columns + self.x_domain = x_domain + self.y_domain = y_domain + self.x_axis_label = x_axis_label + self.y_axis_label = y_axis_label + self.x_prefix = x_prefix + self.x_suffix = x_suffix + self.y_prefix = y_prefix + self.y_suffix = y_suffix + if legend_colorize_rows is not None: + self.legend_colorize_rows = legend_colorize_rows + if legend_hide is not None: + self.legend_hide = legend_hide + if legend_opacity is not None: + self.legend_opacity = legend_opacity + if legend_orientation_threshold is not None: + self.legend_orientation_threshold = legend_orientation_threshold + + @property + def adaptive_zoom_hide(self): + """Get the adaptive_zoom_hide of this ScatterViewProperties. + + :return: The adaptive_zoom_hide of this ScatterViewProperties. + :rtype: bool + """ # noqa: E501 + return self._adaptive_zoom_hide + + @adaptive_zoom_hide.setter + def adaptive_zoom_hide(self, adaptive_zoom_hide): + """Set the adaptive_zoom_hide of this ScatterViewProperties. + + :param adaptive_zoom_hide: The adaptive_zoom_hide of this ScatterViewProperties. + :type: bool + """ # noqa: E501 + self._adaptive_zoom_hide = adaptive_zoom_hide + + @property + def time_format(self): + """Get the time_format of this ScatterViewProperties. + + :return: The time_format of this ScatterViewProperties. + :rtype: str + """ # noqa: E501 + return self._time_format + + @time_format.setter + def time_format(self, time_format): + """Set the time_format of this ScatterViewProperties. + + :param time_format: The time_format of this ScatterViewProperties. + :type: str + """ # noqa: E501 + self._time_format = time_format + + @property + def type(self): + """Get the type of this ScatterViewProperties. + + :return: The type of this ScatterViewProperties. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this ScatterViewProperties. + + :param type: The type of this ScatterViewProperties. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def queries(self): + """Get the queries of this ScatterViewProperties. + + :return: The queries of this ScatterViewProperties. + :rtype: list[DashboardQuery] + """ # noqa: E501 + return self._queries + + @queries.setter + def queries(self, queries): + """Set the queries of this ScatterViewProperties. + + :param queries: The queries of this ScatterViewProperties. + :type: list[DashboardQuery] + """ # noqa: E501 + if queries is None: + raise ValueError("Invalid value for `queries`, must not be `None`") # noqa: E501 + self._queries = queries + + @property + def colors(self): + """Get the colors of this ScatterViewProperties. + + Colors define color encoding of data into a visualization + + :return: The colors of this ScatterViewProperties. + :rtype: list[str] + """ # noqa: E501 + return self._colors + + @colors.setter + def colors(self, colors): + """Set the colors of this ScatterViewProperties. + + Colors define color encoding of data into a visualization + + :param colors: The colors of this ScatterViewProperties. + :type: list[str] + """ # noqa: E501 + if colors is None: + raise ValueError("Invalid value for `colors`, must not be `None`") # noqa: E501 + self._colors = colors + + @property + def shape(self): + """Get the shape of this ScatterViewProperties. + + :return: The shape of this ScatterViewProperties. + :rtype: str + """ # noqa: E501 + return self._shape + + @shape.setter + def shape(self, shape): + """Set the shape of this ScatterViewProperties. + + :param shape: The shape of this ScatterViewProperties. + :type: str + """ # noqa: E501 + if shape is None: + raise ValueError("Invalid value for `shape`, must not be `None`") # noqa: E501 + self._shape = shape + + @property + def note(self): + """Get the note of this ScatterViewProperties. + + :return: The note of this ScatterViewProperties. + :rtype: str + """ # noqa: E501 + return self._note + + @note.setter + def note(self, note): + """Set the note of this ScatterViewProperties. + + :param note: The note of this ScatterViewProperties. + :type: str + """ # noqa: E501 + if note is None: + raise ValueError("Invalid value for `note`, must not be `None`") # noqa: E501 + self._note = note + + @property + def show_note_when_empty(self): + """Get the show_note_when_empty of this ScatterViewProperties. + + If true, will display note when empty + + :return: The show_note_when_empty of this ScatterViewProperties. + :rtype: bool + """ # noqa: E501 + return self._show_note_when_empty + + @show_note_when_empty.setter + def show_note_when_empty(self, show_note_when_empty): + """Set the show_note_when_empty of this ScatterViewProperties. + + If true, will display note when empty + + :param show_note_when_empty: The show_note_when_empty of this ScatterViewProperties. + :type: bool + """ # noqa: E501 + if show_note_when_empty is None: + raise ValueError("Invalid value for `show_note_when_empty`, must not be `None`") # noqa: E501 + self._show_note_when_empty = show_note_when_empty + + @property + def x_column(self): + """Get the x_column of this ScatterViewProperties. + + :return: The x_column of this ScatterViewProperties. + :rtype: str + """ # noqa: E501 + return self._x_column + + @x_column.setter + def x_column(self, x_column): + """Set the x_column of this ScatterViewProperties. + + :param x_column: The x_column of this ScatterViewProperties. + :type: str + """ # noqa: E501 + if x_column is None: + raise ValueError("Invalid value for `x_column`, must not be `None`") # noqa: E501 + self._x_column = x_column + + @property + def generate_x_axis_ticks(self): + """Get the generate_x_axis_ticks of this ScatterViewProperties. + + :return: The generate_x_axis_ticks of this ScatterViewProperties. + :rtype: list[str] + """ # noqa: E501 + return self._generate_x_axis_ticks + + @generate_x_axis_ticks.setter + def generate_x_axis_ticks(self, generate_x_axis_ticks): + """Set the generate_x_axis_ticks of this ScatterViewProperties. + + :param generate_x_axis_ticks: The generate_x_axis_ticks of this ScatterViewProperties. + :type: list[str] + """ # noqa: E501 + self._generate_x_axis_ticks = generate_x_axis_ticks + + @property + def x_total_ticks(self): + """Get the x_total_ticks of this ScatterViewProperties. + + :return: The x_total_ticks of this ScatterViewProperties. + :rtype: int + """ # noqa: E501 + return self._x_total_ticks + + @x_total_ticks.setter + def x_total_ticks(self, x_total_ticks): + """Set the x_total_ticks of this ScatterViewProperties. + + :param x_total_ticks: The x_total_ticks of this ScatterViewProperties. + :type: int + """ # noqa: E501 + self._x_total_ticks = x_total_ticks + + @property + def x_tick_start(self): + """Get the x_tick_start of this ScatterViewProperties. + + :return: The x_tick_start of this ScatterViewProperties. + :rtype: float + """ # noqa: E501 + return self._x_tick_start + + @x_tick_start.setter + def x_tick_start(self, x_tick_start): + """Set the x_tick_start of this ScatterViewProperties. + + :param x_tick_start: The x_tick_start of this ScatterViewProperties. + :type: float + """ # noqa: E501 + self._x_tick_start = x_tick_start + + @property + def x_tick_step(self): + """Get the x_tick_step of this ScatterViewProperties. + + :return: The x_tick_step of this ScatterViewProperties. + :rtype: float + """ # noqa: E501 + return self._x_tick_step + + @x_tick_step.setter + def x_tick_step(self, x_tick_step): + """Set the x_tick_step of this ScatterViewProperties. + + :param x_tick_step: The x_tick_step of this ScatterViewProperties. + :type: float + """ # noqa: E501 + self._x_tick_step = x_tick_step + + @property + def y_column(self): + """Get the y_column of this ScatterViewProperties. + + :return: The y_column of this ScatterViewProperties. + :rtype: str + """ # noqa: E501 + return self._y_column + + @y_column.setter + def y_column(self, y_column): + """Set the y_column of this ScatterViewProperties. + + :param y_column: The y_column of this ScatterViewProperties. + :type: str + """ # noqa: E501 + if y_column is None: + raise ValueError("Invalid value for `y_column`, must not be `None`") # noqa: E501 + self._y_column = y_column + + @property + def generate_y_axis_ticks(self): + """Get the generate_y_axis_ticks of this ScatterViewProperties. + + :return: The generate_y_axis_ticks of this ScatterViewProperties. + :rtype: list[str] + """ # noqa: E501 + return self._generate_y_axis_ticks + + @generate_y_axis_ticks.setter + def generate_y_axis_ticks(self, generate_y_axis_ticks): + """Set the generate_y_axis_ticks of this ScatterViewProperties. + + :param generate_y_axis_ticks: The generate_y_axis_ticks of this ScatterViewProperties. + :type: list[str] + """ # noqa: E501 + self._generate_y_axis_ticks = generate_y_axis_ticks + + @property + def y_total_ticks(self): + """Get the y_total_ticks of this ScatterViewProperties. + + :return: The y_total_ticks of this ScatterViewProperties. + :rtype: int + """ # noqa: E501 + return self._y_total_ticks + + @y_total_ticks.setter + def y_total_ticks(self, y_total_ticks): + """Set the y_total_ticks of this ScatterViewProperties. + + :param y_total_ticks: The y_total_ticks of this ScatterViewProperties. + :type: int + """ # noqa: E501 + self._y_total_ticks = y_total_ticks + + @property + def y_tick_start(self): + """Get the y_tick_start of this ScatterViewProperties. + + :return: The y_tick_start of this ScatterViewProperties. + :rtype: float + """ # noqa: E501 + return self._y_tick_start + + @y_tick_start.setter + def y_tick_start(self, y_tick_start): + """Set the y_tick_start of this ScatterViewProperties. + + :param y_tick_start: The y_tick_start of this ScatterViewProperties. + :type: float + """ # noqa: E501 + self._y_tick_start = y_tick_start + + @property + def y_tick_step(self): + """Get the y_tick_step of this ScatterViewProperties. + + :return: The y_tick_step of this ScatterViewProperties. + :rtype: float + """ # noqa: E501 + return self._y_tick_step + + @y_tick_step.setter + def y_tick_step(self, y_tick_step): + """Set the y_tick_step of this ScatterViewProperties. + + :param y_tick_step: The y_tick_step of this ScatterViewProperties. + :type: float + """ # noqa: E501 + self._y_tick_step = y_tick_step + + @property + def fill_columns(self): + """Get the fill_columns of this ScatterViewProperties. + + :return: The fill_columns of this ScatterViewProperties. + :rtype: list[str] + """ # noqa: E501 + return self._fill_columns + + @fill_columns.setter + def fill_columns(self, fill_columns): + """Set the fill_columns of this ScatterViewProperties. + + :param fill_columns: The fill_columns of this ScatterViewProperties. + :type: list[str] + """ # noqa: E501 + if fill_columns is None: + raise ValueError("Invalid value for `fill_columns`, must not be `None`") # noqa: E501 + self._fill_columns = fill_columns + + @property + def symbol_columns(self): + """Get the symbol_columns of this ScatterViewProperties. + + :return: The symbol_columns of this ScatterViewProperties. + :rtype: list[str] + """ # noqa: E501 + return self._symbol_columns + + @symbol_columns.setter + def symbol_columns(self, symbol_columns): + """Set the symbol_columns of this ScatterViewProperties. + + :param symbol_columns: The symbol_columns of this ScatterViewProperties. + :type: list[str] + """ # noqa: E501 + if symbol_columns is None: + raise ValueError("Invalid value for `symbol_columns`, must not be `None`") # noqa: E501 + self._symbol_columns = symbol_columns + + @property + def x_domain(self): + """Get the x_domain of this ScatterViewProperties. + + :return: The x_domain of this ScatterViewProperties. + :rtype: list[float] + """ # noqa: E501 + return self._x_domain + + @x_domain.setter + def x_domain(self, x_domain): + """Set the x_domain of this ScatterViewProperties. + + :param x_domain: The x_domain of this ScatterViewProperties. + :type: list[float] + """ # noqa: E501 + if x_domain is None: + raise ValueError("Invalid value for `x_domain`, must not be `None`") # noqa: E501 + self._x_domain = x_domain + + @property + def y_domain(self): + """Get the y_domain of this ScatterViewProperties. + + :return: The y_domain of this ScatterViewProperties. + :rtype: list[float] + """ # noqa: E501 + return self._y_domain + + @y_domain.setter + def y_domain(self, y_domain): + """Set the y_domain of this ScatterViewProperties. + + :param y_domain: The y_domain of this ScatterViewProperties. + :type: list[float] + """ # noqa: E501 + if y_domain is None: + raise ValueError("Invalid value for `y_domain`, must not be `None`") # noqa: E501 + self._y_domain = y_domain + + @property + def x_axis_label(self): + """Get the x_axis_label of this ScatterViewProperties. + + :return: The x_axis_label of this ScatterViewProperties. + :rtype: str + """ # noqa: E501 + return self._x_axis_label + + @x_axis_label.setter + def x_axis_label(self, x_axis_label): + """Set the x_axis_label of this ScatterViewProperties. + + :param x_axis_label: The x_axis_label of this ScatterViewProperties. + :type: str + """ # noqa: E501 + if x_axis_label is None: + raise ValueError("Invalid value for `x_axis_label`, must not be `None`") # noqa: E501 + self._x_axis_label = x_axis_label + + @property + def y_axis_label(self): + """Get the y_axis_label of this ScatterViewProperties. + + :return: The y_axis_label of this ScatterViewProperties. + :rtype: str + """ # noqa: E501 + return self._y_axis_label + + @y_axis_label.setter + def y_axis_label(self, y_axis_label): + """Set the y_axis_label of this ScatterViewProperties. + + :param y_axis_label: The y_axis_label of this ScatterViewProperties. + :type: str + """ # noqa: E501 + if y_axis_label is None: + raise ValueError("Invalid value for `y_axis_label`, must not be `None`") # noqa: E501 + self._y_axis_label = y_axis_label + + @property + def x_prefix(self): + """Get the x_prefix of this ScatterViewProperties. + + :return: The x_prefix of this ScatterViewProperties. + :rtype: str + """ # noqa: E501 + return self._x_prefix + + @x_prefix.setter + def x_prefix(self, x_prefix): + """Set the x_prefix of this ScatterViewProperties. + + :param x_prefix: The x_prefix of this ScatterViewProperties. + :type: str + """ # noqa: E501 + if x_prefix is None: + raise ValueError("Invalid value for `x_prefix`, must not be `None`") # noqa: E501 + self._x_prefix = x_prefix + + @property + def x_suffix(self): + """Get the x_suffix of this ScatterViewProperties. + + :return: The x_suffix of this ScatterViewProperties. + :rtype: str + """ # noqa: E501 + return self._x_suffix + + @x_suffix.setter + def x_suffix(self, x_suffix): + """Set the x_suffix of this ScatterViewProperties. + + :param x_suffix: The x_suffix of this ScatterViewProperties. + :type: str + """ # noqa: E501 + if x_suffix is None: + raise ValueError("Invalid value for `x_suffix`, must not be `None`") # noqa: E501 + self._x_suffix = x_suffix + + @property + def y_prefix(self): + """Get the y_prefix of this ScatterViewProperties. + + :return: The y_prefix of this ScatterViewProperties. + :rtype: str + """ # noqa: E501 + return self._y_prefix + + @y_prefix.setter + def y_prefix(self, y_prefix): + """Set the y_prefix of this ScatterViewProperties. + + :param y_prefix: The y_prefix of this ScatterViewProperties. + :type: str + """ # noqa: E501 + if y_prefix is None: + raise ValueError("Invalid value for `y_prefix`, must not be `None`") # noqa: E501 + self._y_prefix = y_prefix + + @property + def y_suffix(self): + """Get the y_suffix of this ScatterViewProperties. + + :return: The y_suffix of this ScatterViewProperties. + :rtype: str + """ # noqa: E501 + return self._y_suffix + + @y_suffix.setter + def y_suffix(self, y_suffix): + """Set the y_suffix of this ScatterViewProperties. + + :param y_suffix: The y_suffix of this ScatterViewProperties. + :type: str + """ # noqa: E501 + if y_suffix is None: + raise ValueError("Invalid value for `y_suffix`, must not be `None`") # noqa: E501 + self._y_suffix = y_suffix + + @property + def legend_colorize_rows(self): + """Get the legend_colorize_rows of this ScatterViewProperties. + + :return: The legend_colorize_rows of this ScatterViewProperties. + :rtype: bool + """ # noqa: E501 + return self._legend_colorize_rows + + @legend_colorize_rows.setter + def legend_colorize_rows(self, legend_colorize_rows): + """Set the legend_colorize_rows of this ScatterViewProperties. + + :param legend_colorize_rows: The legend_colorize_rows of this ScatterViewProperties. + :type: bool + """ # noqa: E501 + self._legend_colorize_rows = legend_colorize_rows + + @property + def legend_hide(self): + """Get the legend_hide of this ScatterViewProperties. + + :return: The legend_hide of this ScatterViewProperties. + :rtype: bool + """ # noqa: E501 + return self._legend_hide + + @legend_hide.setter + def legend_hide(self, legend_hide): + """Set the legend_hide of this ScatterViewProperties. + + :param legend_hide: The legend_hide of this ScatterViewProperties. + :type: bool + """ # noqa: E501 + self._legend_hide = legend_hide + + @property + def legend_opacity(self): + """Get the legend_opacity of this ScatterViewProperties. + + :return: The legend_opacity of this ScatterViewProperties. + :rtype: float + """ # noqa: E501 + return self._legend_opacity + + @legend_opacity.setter + def legend_opacity(self, legend_opacity): + """Set the legend_opacity of this ScatterViewProperties. + + :param legend_opacity: The legend_opacity of this ScatterViewProperties. + :type: float + """ # noqa: E501 + self._legend_opacity = legend_opacity + + @property + def legend_orientation_threshold(self): + """Get the legend_orientation_threshold of this ScatterViewProperties. + + :return: The legend_orientation_threshold of this ScatterViewProperties. + :rtype: int + """ # noqa: E501 + return self._legend_orientation_threshold + + @legend_orientation_threshold.setter + def legend_orientation_threshold(self, legend_orientation_threshold): + """Set the legend_orientation_threshold of this ScatterViewProperties. + + :param legend_orientation_threshold: The legend_orientation_threshold of this ScatterViewProperties. + :type: int + """ # noqa: E501 + self._legend_orientation_threshold = legend_orientation_threshold + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ScatterViewProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/schema_type.py b/frogpilot/third_party/influxdb_client/domain/schema_type.py new file mode 100644 index 000000000..c8612b55d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/schema_type.py @@ -0,0 +1,88 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class SchemaType(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + IMPLICIT = "implicit" + EXPLICIT = "explicit" + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """SchemaType - a model defined in OpenAPI.""" # noqa: E501 self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, SchemaType): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/scraper_target_request.py b/frogpilot/third_party/influxdb_client/domain/scraper_target_request.py new file mode 100644 index 000000000..ae9606789 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/scraper_target_request.py @@ -0,0 +1,246 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ScraperTargetRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'type': 'str', + 'url': 'str', + 'org_id': 'str', + 'bucket_id': 'str', + 'allow_insecure': 'bool' + } + + attribute_map = { + 'name': 'name', + 'type': 'type', + 'url': 'url', + 'org_id': 'orgID', + 'bucket_id': 'bucketID', + 'allow_insecure': 'allowInsecure' + } + + def __init__(self, name=None, type=None, url=None, org_id=None, bucket_id=None, allow_insecure=False): # noqa: E501,D401,D403 + """ScraperTargetRequest - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._type = None + self._url = None + self._org_id = None + self._bucket_id = None + self._allow_insecure = None + self.discriminator = None + + if name is not None: + self.name = name + if type is not None: + self.type = type + if url is not None: + self.url = url + if org_id is not None: + self.org_id = org_id + if bucket_id is not None: + self.bucket_id = bucket_id + if allow_insecure is not None: + self.allow_insecure = allow_insecure + + @property + def name(self): + """Get the name of this ScraperTargetRequest. + + The name of the scraper target. + + :return: The name of this ScraperTargetRequest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this ScraperTargetRequest. + + The name of the scraper target. + + :param name: The name of this ScraperTargetRequest. + :type: str + """ # noqa: E501 + self._name = name + + @property + def type(self): + """Get the type of this ScraperTargetRequest. + + The type of the metrics to be parsed. + + :return: The type of this ScraperTargetRequest. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this ScraperTargetRequest. + + The type of the metrics to be parsed. + + :param type: The type of this ScraperTargetRequest. + :type: str + """ # noqa: E501 + self._type = type + + @property + def url(self): + """Get the url of this ScraperTargetRequest. + + The URL of the metrics endpoint. + + :return: The url of this ScraperTargetRequest. + :rtype: str + """ # noqa: E501 + return self._url + + @url.setter + def url(self, url): + """Set the url of this ScraperTargetRequest. + + The URL of the metrics endpoint. + + :param url: The url of this ScraperTargetRequest. + :type: str + """ # noqa: E501 + self._url = url + + @property + def org_id(self): + """Get the org_id of this ScraperTargetRequest. + + The organization ID. + + :return: The org_id of this ScraperTargetRequest. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this ScraperTargetRequest. + + The organization ID. + + :param org_id: The org_id of this ScraperTargetRequest. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def bucket_id(self): + """Get the bucket_id of this ScraperTargetRequest. + + The ID of the bucket to write to. + + :return: The bucket_id of this ScraperTargetRequest. + :rtype: str + """ # noqa: E501 + return self._bucket_id + + @bucket_id.setter + def bucket_id(self, bucket_id): + """Set the bucket_id of this ScraperTargetRequest. + + The ID of the bucket to write to. + + :param bucket_id: The bucket_id of this ScraperTargetRequest. + :type: str + """ # noqa: E501 + self._bucket_id = bucket_id + + @property + def allow_insecure(self): + """Get the allow_insecure of this ScraperTargetRequest. + + Skip TLS verification on endpoint. + + :return: The allow_insecure of this ScraperTargetRequest. + :rtype: bool + """ # noqa: E501 + return self._allow_insecure + + @allow_insecure.setter + def allow_insecure(self, allow_insecure): + """Set the allow_insecure of this ScraperTargetRequest. + + Skip TLS verification on endpoint. + + :param allow_insecure: The allow_insecure of this ScraperTargetRequest. + :type: bool + """ # noqa: E501 + self._allow_insecure = allow_insecure + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ScraperTargetRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/scraper_target_response.py b/frogpilot/third_party/influxdb_client/domain/scraper_target_response.py new file mode 100644 index 000000000..8f40ae0da --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/scraper_target_response.py @@ -0,0 +1,200 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.scraper_target_request import ScraperTargetRequest + + +class ScraperTargetResponse(ScraperTargetRequest): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'org': 'str', + 'bucket': 'str', + 'links': 'object', + 'name': 'str', + 'type': 'str', + 'url': 'str', + 'org_id': 'str', + 'bucket_id': 'str', + 'allow_insecure': 'bool' + } + + attribute_map = { + 'id': 'id', + 'org': 'org', + 'bucket': 'bucket', + 'links': 'links', + 'name': 'name', + 'type': 'type', + 'url': 'url', + 'org_id': 'orgID', + 'bucket_id': 'bucketID', + 'allow_insecure': 'allowInsecure' + } + + def __init__(self, id=None, org=None, bucket=None, links=None, name=None, type=None, url=None, org_id=None, bucket_id=None, allow_insecure=False): # noqa: E501,D401,D403 + """ScraperTargetResponse - a model defined in OpenAPI.""" # noqa: E501 + ScraperTargetRequest.__init__(self, name=name, type=type, url=url, org_id=org_id, bucket_id=bucket_id, allow_insecure=allow_insecure) # noqa: E501 + + self._id = None + self._org = None + self._bucket = None + self._links = None + self.discriminator = None + + if id is not None: + self.id = id + if org is not None: + self.org = org + if bucket is not None: + self.bucket = bucket + if links is not None: + self.links = links + + @property + def id(self): + """Get the id of this ScraperTargetResponse. + + :return: The id of this ScraperTargetResponse. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this ScraperTargetResponse. + + :param id: The id of this ScraperTargetResponse. + :type: str + """ # noqa: E501 + self._id = id + + @property + def org(self): + """Get the org of this ScraperTargetResponse. + + The name of the organization. + + :return: The org of this ScraperTargetResponse. + :rtype: str + """ # noqa: E501 + return self._org + + @org.setter + def org(self, org): + """Set the org of this ScraperTargetResponse. + + The name of the organization. + + :param org: The org of this ScraperTargetResponse. + :type: str + """ # noqa: E501 + self._org = org + + @property + def bucket(self): + """Get the bucket of this ScraperTargetResponse. + + The bucket name. + + :return: The bucket of this ScraperTargetResponse. + :rtype: str + """ # noqa: E501 + return self._bucket + + @bucket.setter + def bucket(self, bucket): + """Set the bucket of this ScraperTargetResponse. + + The bucket name. + + :param bucket: The bucket of this ScraperTargetResponse. + :type: str + """ # noqa: E501 + self._bucket = bucket + + @property + def links(self): + """Get the links of this ScraperTargetResponse. + + :return: The links of this ScraperTargetResponse. + :rtype: object + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this ScraperTargetResponse. + + :param links: The links of this ScraperTargetResponse. + :type: object + """ # noqa: E501 + self._links = links + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ScraperTargetResponse): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/scraper_target_responses.py b/frogpilot/third_party/influxdb_client/domain/scraper_target_responses.py new file mode 100644 index 000000000..7e4e477e9 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/scraper_target_responses.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ScraperTargetResponses(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'configurations': 'list[ScraperTargetResponse]' + } + + attribute_map = { + 'configurations': 'configurations' + } + + def __init__(self, configurations=None): # noqa: E501,D401,D403 + """ScraperTargetResponses - a model defined in OpenAPI.""" # noqa: E501 + self._configurations = None + self.discriminator = None + + if configurations is not None: + self.configurations = configurations + + @property + def configurations(self): + """Get the configurations of this ScraperTargetResponses. + + :return: The configurations of this ScraperTargetResponses. + :rtype: list[ScraperTargetResponse] + """ # noqa: E501 + return self._configurations + + @configurations.setter + def configurations(self, configurations): + """Set the configurations of this ScraperTargetResponses. + + :param configurations: The configurations of this ScraperTargetResponses. + :type: list[ScraperTargetResponse] + """ # noqa: E501 + self._configurations = configurations + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ScraperTargetResponses): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/script.py b/frogpilot/third_party/influxdb_client/domain/script.py new file mode 100644 index 000000000..ea2296f70 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/script.py @@ -0,0 +1,302 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Script(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'name': 'str', + 'description': 'str', + 'org_id': 'str', + 'script': 'str', + 'language': 'ScriptLanguage', + 'url': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime' + } + + attribute_map = { + 'id': 'id', + 'name': 'name', + 'description': 'description', + 'org_id': 'orgID', + 'script': 'script', + 'language': 'language', + 'url': 'url', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt' + } + + def __init__(self, id=None, name=None, description=None, org_id=None, script=None, language=None, url=None, created_at=None, updated_at=None): # noqa: E501,D401,D403 + """Script - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._name = None + self._description = None + self._org_id = None + self._script = None + self._language = None + self._url = None + self._created_at = None + self._updated_at = None + self.discriminator = None + + if id is not None: + self.id = id + self.name = name + if description is not None: + self.description = description + self.org_id = org_id + self.script = script + if language is not None: + self.language = language + if url is not None: + self.url = url + if created_at is not None: + self.created_at = created_at + if updated_at is not None: + self.updated_at = updated_at + + @property + def id(self): + """Get the id of this Script. + + :return: The id of this Script. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this Script. + + :param id: The id of this Script. + :type: str + """ # noqa: E501 + self._id = id + + @property + def name(self): + """Get the name of this Script. + + :return: The name of this Script. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this Script. + + :param name: The name of this Script. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this Script. + + :return: The description of this Script. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this Script. + + :param description: The description of this Script. + :type: str + """ # noqa: E501 + self._description = description + + @property + def org_id(self): + """Get the org_id of this Script. + + :return: The org_id of this Script. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this Script. + + :param org_id: The org_id of this Script. + :type: str + """ # noqa: E501 + if org_id is None: + raise ValueError("Invalid value for `org_id`, must not be `None`") # noqa: E501 + self._org_id = org_id + + @property + def script(self): + """Get the script of this Script. + + The script to execute. + + :return: The script of this Script. + :rtype: str + """ # noqa: E501 + return self._script + + @script.setter + def script(self, script): + """Set the script of this Script. + + The script to execute. + + :param script: The script of this Script. + :type: str + """ # noqa: E501 + if script is None: + raise ValueError("Invalid value for `script`, must not be `None`") # noqa: E501 + self._script = script + + @property + def language(self): + """Get the language of this Script. + + :return: The language of this Script. + :rtype: ScriptLanguage + """ # noqa: E501 + return self._language + + @language.setter + def language(self, language): + """Set the language of this Script. + + :param language: The language of this Script. + :type: ScriptLanguage + """ # noqa: E501 + self._language = language + + @property + def url(self): + """Get the url of this Script. + + The invocation endpoint address. + + :return: The url of this Script. + :rtype: str + """ # noqa: E501 + return self._url + + @url.setter + def url(self, url): + """Set the url of this Script. + + The invocation endpoint address. + + :param url: The url of this Script. + :type: str + """ # noqa: E501 + self._url = url + + @property + def created_at(self): + """Get the created_at of this Script. + + :return: The created_at of this Script. + :rtype: datetime + """ # noqa: E501 + return self._created_at + + @created_at.setter + def created_at(self, created_at): + """Set the created_at of this Script. + + :param created_at: The created_at of this Script. + :type: datetime + """ # noqa: E501 + self._created_at = created_at + + @property + def updated_at(self): + """Get the updated_at of this Script. + + :return: The updated_at of this Script. + :rtype: datetime + """ # noqa: E501 + return self._updated_at + + @updated_at.setter + def updated_at(self, updated_at): + """Set the updated_at of this Script. + + :param updated_at: The updated_at of this Script. + :type: datetime + """ # noqa: E501 + self._updated_at = updated_at + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Script): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/script_create_request.py b/frogpilot/third_party/influxdb_client/domain/script_create_request.py new file mode 100644 index 000000000..5af2b5d13 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/script_create_request.py @@ -0,0 +1,192 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ScriptCreateRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'description': 'str', + 'script': 'str', + 'language': 'ScriptLanguage' + } + + attribute_map = { + 'name': 'name', + 'description': 'description', + 'script': 'script', + 'language': 'language' + } + + def __init__(self, name=None, description=None, script=None, language=None): # noqa: E501,D401,D403 + """ScriptCreateRequest - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._description = None + self._script = None + self._language = None + self.discriminator = None + + self.name = name + self.description = description + self.script = script + self.language = language + + @property + def name(self): + """Get the name of this ScriptCreateRequest. + + Script name. The name must be unique within the organization. + + :return: The name of this ScriptCreateRequest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this ScriptCreateRequest. + + Script name. The name must be unique within the organization. + + :param name: The name of this ScriptCreateRequest. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this ScriptCreateRequest. + + Script description. A description of the script. + + :return: The description of this ScriptCreateRequest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this ScriptCreateRequest. + + Script description. A description of the script. + + :param description: The description of this ScriptCreateRequest. + :type: str + """ # noqa: E501 + if description is None: + raise ValueError("Invalid value for `description`, must not be `None`") # noqa: E501 + self._description = description + + @property + def script(self): + """Get the script of this ScriptCreateRequest. + + The script to execute. + + :return: The script of this ScriptCreateRequest. + :rtype: str + """ # noqa: E501 + return self._script + + @script.setter + def script(self, script): + """Set the script of this ScriptCreateRequest. + + The script to execute. + + :param script: The script of this ScriptCreateRequest. + :type: str + """ # noqa: E501 + if script is None: + raise ValueError("Invalid value for `script`, must not be `None`") # noqa: E501 + self._script = script + + @property + def language(self): + """Get the language of this ScriptCreateRequest. + + :return: The language of this ScriptCreateRequest. + :rtype: ScriptLanguage + """ # noqa: E501 + return self._language + + @language.setter + def language(self, language): + """Set the language of this ScriptCreateRequest. + + :param language: The language of this ScriptCreateRequest. + :type: ScriptLanguage + """ # noqa: E501 + if language is None: + raise ValueError("Invalid value for `language`, must not be `None`") # noqa: E501 + self._language = language + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ScriptCreateRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/script_invocation_params.py b/frogpilot/third_party/influxdb_client/domain/script_invocation_params.py new file mode 100644 index 000000000..1849280f1 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/script_invocation_params.py @@ -0,0 +1,111 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ScriptInvocationParams(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'params': 'dict(str, object)' + } + + attribute_map = { + 'params': 'params' + } + + def __init__(self, params=None): # noqa: E501,D401,D403 + """ScriptInvocationParams - a model defined in OpenAPI.""" # noqa: E501 + self._params = None + self.discriminator = None + + if params is not None: + self.params = params + + @property + def params(self): + """Get the params of this ScriptInvocationParams. + + The script parameters. `params` contains key-value pairs that map values to the **params.keys** in a script. When you invoke a script with `params`, InfluxDB passes the values as invocation parameters to the script. + + :return: The params of this ScriptInvocationParams. + :rtype: dict(str, object) + """ # noqa: E501 + return self._params + + @params.setter + def params(self, params): + """Set the params of this ScriptInvocationParams. + + The script parameters. `params` contains key-value pairs that map values to the **params.keys** in a script. When you invoke a script with `params`, InfluxDB passes the values as invocation parameters to the script. + + :param params: The params of this ScriptInvocationParams. + :type: dict(str, object) + """ # noqa: E501 + self._params = params + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ScriptInvocationParams): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/script_language.py b/frogpilot/third_party/influxdb_client/domain/script_language.py new file mode 100644 index 000000000..473055e0c --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/script_language.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ScriptLanguage(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + FLUX = "flux" + SQL = "sql" + INFLUXQL = "influxql" + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """ScriptLanguage - a model defined in OpenAPI.""" # noqa: E501 self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ScriptLanguage): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/script_update_request.py b/frogpilot/third_party/influxdb_client/domain/script_update_request.py new file mode 100644 index 000000000..36444c710 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/script_update_request.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ScriptUpdateRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'description': 'str', + 'script': 'str' + } + + attribute_map = { + 'description': 'description', + 'script': 'script' + } + + def __init__(self, description=None, script=None): # noqa: E501,D401,D403 + """ScriptUpdateRequest - a model defined in OpenAPI.""" # noqa: E501 + self._description = None + self._script = None + self.discriminator = None + + if description is not None: + self.description = description + if script is not None: + self.script = script + + @property + def description(self): + """Get the description of this ScriptUpdateRequest. + + A description of the script. + + :return: The description of this ScriptUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this ScriptUpdateRequest. + + A description of the script. + + :param description: The description of this ScriptUpdateRequest. + :type: str + """ # noqa: E501 + self._description = description + + @property + def script(self): + """Get the script of this ScriptUpdateRequest. + + The script to execute. + + :return: The script of this ScriptUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._script + + @script.setter + def script(self, script): + """Set the script of this ScriptUpdateRequest. + + The script to execute. + + :param script: The script of this ScriptUpdateRequest. + :type: str + """ # noqa: E501 + self._script = script + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ScriptUpdateRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/scripts.py b/frogpilot/third_party/influxdb_client/domain/scripts.py new file mode 100644 index 000000000..03ca492b8 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/scripts.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Scripts(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'scripts': 'list[Script]' + } + + attribute_map = { + 'scripts': 'scripts' + } + + def __init__(self, scripts=None): # noqa: E501,D401,D403 + """Scripts - a model defined in OpenAPI.""" # noqa: E501 + self._scripts = None + self.discriminator = None + + if scripts is not None: + self.scripts = scripts + + @property + def scripts(self): + """Get the scripts of this Scripts. + + :return: The scripts of this Scripts. + :rtype: list[Script] + """ # noqa: E501 + return self._scripts + + @scripts.setter + def scripts(self, scripts): + """Set the scripts of this Scripts. + + :param scripts: The scripts of this Scripts. + :type: list[Script] + """ # noqa: E501 + self._scripts = scripts + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Scripts): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/secret_keys.py b/frogpilot/third_party/influxdb_client/domain/secret_keys.py new file mode 100644 index 000000000..b935a61f8 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/secret_keys.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class SecretKeys(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'secrets': 'list[str]' + } + + attribute_map = { + 'secrets': 'secrets' + } + + def __init__(self, secrets=None): # noqa: E501,D401,D403 + """SecretKeys - a model defined in OpenAPI.""" # noqa: E501 + self._secrets = None + self.discriminator = None + + if secrets is not None: + self.secrets = secrets + + @property + def secrets(self): + """Get the secrets of this SecretKeys. + + :return: The secrets of this SecretKeys. + :rtype: list[str] + """ # noqa: E501 + return self._secrets + + @secrets.setter + def secrets(self, secrets): + """Set the secrets of this SecretKeys. + + :param secrets: The secrets of this SecretKeys. + :type: list[str] + """ # noqa: E501 + self._secrets = secrets + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, SecretKeys): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/secret_keys_response.py b/frogpilot/third_party/influxdb_client/domain/secret_keys_response.py new file mode 100644 index 000000000..c9686cf3e --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/secret_keys_response.py @@ -0,0 +1,113 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.secret_keys import SecretKeys + + +class SecretKeysResponse(SecretKeys): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'links': 'object', + 'secrets': 'list[str]' + } + + attribute_map = { + 'links': 'links', + 'secrets': 'secrets' + } + + def __init__(self, links=None, secrets=None): # noqa: E501,D401,D403 + """SecretKeysResponse - a model defined in OpenAPI.""" # noqa: E501 + SecretKeys.__init__(self, secrets=secrets) # noqa: E501 + + self._links = None + self.discriminator = None + + if links is not None: + self.links = links + + @property + def links(self): + """Get the links of this SecretKeysResponse. + + :return: The links of this SecretKeysResponse. + :rtype: object + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this SecretKeysResponse. + + :param links: The links of this SecretKeysResponse. + :type: object + """ # noqa: E501 + self._links = links + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, SecretKeysResponse): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/shard_group_manifest.py b/frogpilot/third_party/influxdb_client/domain/shard_group_manifest.py new file mode 100644 index 000000000..cd644444b --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/shard_group_manifest.py @@ -0,0 +1,226 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ShardGroupManifest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'int', + 'start_time': 'datetime', + 'end_time': 'datetime', + 'deleted_at': 'datetime', + 'truncated_at': 'datetime', + 'shards': 'list[ShardManifest]' + } + + attribute_map = { + 'id': 'id', + 'start_time': 'startTime', + 'end_time': 'endTime', + 'deleted_at': 'deletedAt', + 'truncated_at': 'truncatedAt', + 'shards': 'shards' + } + + def __init__(self, id=None, start_time=None, end_time=None, deleted_at=None, truncated_at=None, shards=None): # noqa: E501,D401,D403 + """ShardGroupManifest - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._start_time = None + self._end_time = None + self._deleted_at = None + self._truncated_at = None + self._shards = None + self.discriminator = None + + self.id = id + self.start_time = start_time + self.end_time = end_time + if deleted_at is not None: + self.deleted_at = deleted_at + if truncated_at is not None: + self.truncated_at = truncated_at + self.shards = shards + + @property + def id(self): + """Get the id of this ShardGroupManifest. + + :return: The id of this ShardGroupManifest. + :rtype: int + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this ShardGroupManifest. + + :param id: The id of this ShardGroupManifest. + :type: int + """ # noqa: E501 + if id is None: + raise ValueError("Invalid value for `id`, must not be `None`") # noqa: E501 + self._id = id + + @property + def start_time(self): + """Get the start_time of this ShardGroupManifest. + + :return: The start_time of this ShardGroupManifest. + :rtype: datetime + """ # noqa: E501 + return self._start_time + + @start_time.setter + def start_time(self, start_time): + """Set the start_time of this ShardGroupManifest. + + :param start_time: The start_time of this ShardGroupManifest. + :type: datetime + """ # noqa: E501 + if start_time is None: + raise ValueError("Invalid value for `start_time`, must not be `None`") # noqa: E501 + self._start_time = start_time + + @property + def end_time(self): + """Get the end_time of this ShardGroupManifest. + + :return: The end_time of this ShardGroupManifest. + :rtype: datetime + """ # noqa: E501 + return self._end_time + + @end_time.setter + def end_time(self, end_time): + """Set the end_time of this ShardGroupManifest. + + :param end_time: The end_time of this ShardGroupManifest. + :type: datetime + """ # noqa: E501 + if end_time is None: + raise ValueError("Invalid value for `end_time`, must not be `None`") # noqa: E501 + self._end_time = end_time + + @property + def deleted_at(self): + """Get the deleted_at of this ShardGroupManifest. + + :return: The deleted_at of this ShardGroupManifest. + :rtype: datetime + """ # noqa: E501 + return self._deleted_at + + @deleted_at.setter + def deleted_at(self, deleted_at): + """Set the deleted_at of this ShardGroupManifest. + + :param deleted_at: The deleted_at of this ShardGroupManifest. + :type: datetime + """ # noqa: E501 + self._deleted_at = deleted_at + + @property + def truncated_at(self): + """Get the truncated_at of this ShardGroupManifest. + + :return: The truncated_at of this ShardGroupManifest. + :rtype: datetime + """ # noqa: E501 + return self._truncated_at + + @truncated_at.setter + def truncated_at(self, truncated_at): + """Set the truncated_at of this ShardGroupManifest. + + :param truncated_at: The truncated_at of this ShardGroupManifest. + :type: datetime + """ # noqa: E501 + self._truncated_at = truncated_at + + @property + def shards(self): + """Get the shards of this ShardGroupManifest. + + :return: The shards of this ShardGroupManifest. + :rtype: list[ShardManifest] + """ # noqa: E501 + return self._shards + + @shards.setter + def shards(self, shards): + """Set the shards of this ShardGroupManifest. + + :param shards: The shards of this ShardGroupManifest. + :type: list[ShardManifest] + """ # noqa: E501 + if shards is None: + raise ValueError("Invalid value for `shards`, must not be `None`") # noqa: E501 + self._shards = shards + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ShardGroupManifest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/shard_manifest.py b/frogpilot/third_party/influxdb_client/domain/shard_manifest.py new file mode 100644 index 000000000..1d1834655 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/shard_manifest.py @@ -0,0 +1,132 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ShardManifest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'int', + 'shard_owners': 'list[ShardOwner]' + } + + attribute_map = { + 'id': 'id', + 'shard_owners': 'shardOwners' + } + + def __init__(self, id=None, shard_owners=None): # noqa: E501,D401,D403 + """ShardManifest - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._shard_owners = None + self.discriminator = None + + self.id = id + self.shard_owners = shard_owners + + @property + def id(self): + """Get the id of this ShardManifest. + + :return: The id of this ShardManifest. + :rtype: int + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this ShardManifest. + + :param id: The id of this ShardManifest. + :type: int + """ # noqa: E501 + if id is None: + raise ValueError("Invalid value for `id`, must not be `None`") # noqa: E501 + self._id = id + + @property + def shard_owners(self): + """Get the shard_owners of this ShardManifest. + + :return: The shard_owners of this ShardManifest. + :rtype: list[ShardOwner] + """ # noqa: E501 + return self._shard_owners + + @shard_owners.setter + def shard_owners(self, shard_owners): + """Set the shard_owners of this ShardManifest. + + :param shard_owners: The shard_owners of this ShardManifest. + :type: list[ShardOwner] + """ # noqa: E501 + if shard_owners is None: + raise ValueError("Invalid value for `shard_owners`, must not be `None`") # noqa: E501 + self._shard_owners = shard_owners + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ShardManifest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/shard_owner.py b/frogpilot/third_party/influxdb_client/domain/shard_owner.py new file mode 100644 index 000000000..3c8232a21 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/shard_owner.py @@ -0,0 +1,112 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ShardOwner(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'node_id': 'int' + } + + attribute_map = { + 'node_id': 'nodeID' + } + + def __init__(self, node_id=None): # noqa: E501,D401,D403 + """ShardOwner - a model defined in OpenAPI.""" # noqa: E501 + self._node_id = None + self.discriminator = None + + self.node_id = node_id + + @property + def node_id(self): + """Get the node_id of this ShardOwner. + + The ID of the node that owns the shard. + + :return: The node_id of this ShardOwner. + :rtype: int + """ # noqa: E501 + return self._node_id + + @node_id.setter + def node_id(self, node_id): + """Set the node_id of this ShardOwner. + + The ID of the node that owns the shard. + + :param node_id: The node_id of this ShardOwner. + :type: int + """ # noqa: E501 + if node_id is None: + raise ValueError("Invalid value for `node_id`, must not be `None`") # noqa: E501 + self._node_id = node_id + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ShardOwner): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/simple_table_view_properties.py b/frogpilot/third_party/influxdb_client/domain/simple_table_view_properties.py new file mode 100644 index 000000000..670be2091 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/simple_table_view_properties.py @@ -0,0 +1,236 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.view_properties import ViewProperties + + +class SimpleTableViewProperties(ViewProperties): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'show_all': 'bool', + 'queries': 'list[DashboardQuery]', + 'shape': 'str', + 'note': 'str', + 'show_note_when_empty': 'bool' + } + + attribute_map = { + 'type': 'type', + 'show_all': 'showAll', + 'queries': 'queries', + 'shape': 'shape', + 'note': 'note', + 'show_note_when_empty': 'showNoteWhenEmpty' + } + + def __init__(self, type=None, show_all=None, queries=None, shape=None, note=None, show_note_when_empty=None): # noqa: E501,D401,D403 + """SimpleTableViewProperties - a model defined in OpenAPI.""" # noqa: E501 + ViewProperties.__init__(self) # noqa: E501 + + self._type = None + self._show_all = None + self._queries = None + self._shape = None + self._note = None + self._show_note_when_empty = None + self.discriminator = None + + self.type = type + self.show_all = show_all + self.queries = queries + self.shape = shape + self.note = note + self.show_note_when_empty = show_note_when_empty + + @property + def type(self): + """Get the type of this SimpleTableViewProperties. + + :return: The type of this SimpleTableViewProperties. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this SimpleTableViewProperties. + + :param type: The type of this SimpleTableViewProperties. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def show_all(self): + """Get the show_all of this SimpleTableViewProperties. + + :return: The show_all of this SimpleTableViewProperties. + :rtype: bool + """ # noqa: E501 + return self._show_all + + @show_all.setter + def show_all(self, show_all): + """Set the show_all of this SimpleTableViewProperties. + + :param show_all: The show_all of this SimpleTableViewProperties. + :type: bool + """ # noqa: E501 + if show_all is None: + raise ValueError("Invalid value for `show_all`, must not be `None`") # noqa: E501 + self._show_all = show_all + + @property + def queries(self): + """Get the queries of this SimpleTableViewProperties. + + :return: The queries of this SimpleTableViewProperties. + :rtype: list[DashboardQuery] + """ # noqa: E501 + return self._queries + + @queries.setter + def queries(self, queries): + """Set the queries of this SimpleTableViewProperties. + + :param queries: The queries of this SimpleTableViewProperties. + :type: list[DashboardQuery] + """ # noqa: E501 + if queries is None: + raise ValueError("Invalid value for `queries`, must not be `None`") # noqa: E501 + self._queries = queries + + @property + def shape(self): + """Get the shape of this SimpleTableViewProperties. + + :return: The shape of this SimpleTableViewProperties. + :rtype: str + """ # noqa: E501 + return self._shape + + @shape.setter + def shape(self, shape): + """Set the shape of this SimpleTableViewProperties. + + :param shape: The shape of this SimpleTableViewProperties. + :type: str + """ # noqa: E501 + if shape is None: + raise ValueError("Invalid value for `shape`, must not be `None`") # noqa: E501 + self._shape = shape + + @property + def note(self): + """Get the note of this SimpleTableViewProperties. + + :return: The note of this SimpleTableViewProperties. + :rtype: str + """ # noqa: E501 + return self._note + + @note.setter + def note(self, note): + """Set the note of this SimpleTableViewProperties. + + :param note: The note of this SimpleTableViewProperties. + :type: str + """ # noqa: E501 + if note is None: + raise ValueError("Invalid value for `note`, must not be `None`") # noqa: E501 + self._note = note + + @property + def show_note_when_empty(self): + """Get the show_note_when_empty of this SimpleTableViewProperties. + + If true, will display note when empty + + :return: The show_note_when_empty of this SimpleTableViewProperties. + :rtype: bool + """ # noqa: E501 + return self._show_note_when_empty + + @show_note_when_empty.setter + def show_note_when_empty(self, show_note_when_empty): + """Set the show_note_when_empty of this SimpleTableViewProperties. + + If true, will display note when empty + + :param show_note_when_empty: The show_note_when_empty of this SimpleTableViewProperties. + :type: bool + """ # noqa: E501 + if show_note_when_empty is None: + raise ValueError("Invalid value for `show_note_when_empty`, must not be `None`") # noqa: E501 + self._show_note_when_empty = show_note_when_empty + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, SimpleTableViewProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/single_stat_view_properties.py b/frogpilot/third_party/influxdb_client/domain/single_stat_view_properties.py new file mode 100644 index 000000000..cc46240f2 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/single_stat_view_properties.py @@ -0,0 +1,383 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.view_properties import ViewProperties + + +class SingleStatViewProperties(ViewProperties): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'queries': 'list[DashboardQuery]', + 'colors': 'list[DashboardColor]', + 'shape': 'str', + 'note': 'str', + 'show_note_when_empty': 'bool', + 'prefix': 'str', + 'tick_prefix': 'str', + 'suffix': 'str', + 'tick_suffix': 'str', + 'static_legend': 'StaticLegend', + 'decimal_places': 'DecimalPlaces' + } + + attribute_map = { + 'type': 'type', + 'queries': 'queries', + 'colors': 'colors', + 'shape': 'shape', + 'note': 'note', + 'show_note_when_empty': 'showNoteWhenEmpty', + 'prefix': 'prefix', + 'tick_prefix': 'tickPrefix', + 'suffix': 'suffix', + 'tick_suffix': 'tickSuffix', + 'static_legend': 'staticLegend', + 'decimal_places': 'decimalPlaces' + } + + def __init__(self, type=None, queries=None, colors=None, shape=None, note=None, show_note_when_empty=None, prefix=None, tick_prefix=None, suffix=None, tick_suffix=None, static_legend=None, decimal_places=None): # noqa: E501,D401,D403 + """SingleStatViewProperties - a model defined in OpenAPI.""" # noqa: E501 + ViewProperties.__init__(self) # noqa: E501 + + self._type = None + self._queries = None + self._colors = None + self._shape = None + self._note = None + self._show_note_when_empty = None + self._prefix = None + self._tick_prefix = None + self._suffix = None + self._tick_suffix = None + self._static_legend = None + self._decimal_places = None + self.discriminator = None + + self.type = type + self.queries = queries + self.colors = colors + self.shape = shape + self.note = note + self.show_note_when_empty = show_note_when_empty + self.prefix = prefix + self.tick_prefix = tick_prefix + self.suffix = suffix + self.tick_suffix = tick_suffix + if static_legend is not None: + self.static_legend = static_legend + self.decimal_places = decimal_places + + @property + def type(self): + """Get the type of this SingleStatViewProperties. + + :return: The type of this SingleStatViewProperties. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this SingleStatViewProperties. + + :param type: The type of this SingleStatViewProperties. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def queries(self): + """Get the queries of this SingleStatViewProperties. + + :return: The queries of this SingleStatViewProperties. + :rtype: list[DashboardQuery] + """ # noqa: E501 + return self._queries + + @queries.setter + def queries(self, queries): + """Set the queries of this SingleStatViewProperties. + + :param queries: The queries of this SingleStatViewProperties. + :type: list[DashboardQuery] + """ # noqa: E501 + if queries is None: + raise ValueError("Invalid value for `queries`, must not be `None`") # noqa: E501 + self._queries = queries + + @property + def colors(self): + """Get the colors of this SingleStatViewProperties. + + Colors define color encoding of data into a visualization + + :return: The colors of this SingleStatViewProperties. + :rtype: list[DashboardColor] + """ # noqa: E501 + return self._colors + + @colors.setter + def colors(self, colors): + """Set the colors of this SingleStatViewProperties. + + Colors define color encoding of data into a visualization + + :param colors: The colors of this SingleStatViewProperties. + :type: list[DashboardColor] + """ # noqa: E501 + if colors is None: + raise ValueError("Invalid value for `colors`, must not be `None`") # noqa: E501 + self._colors = colors + + @property + def shape(self): + """Get the shape of this SingleStatViewProperties. + + :return: The shape of this SingleStatViewProperties. + :rtype: str + """ # noqa: E501 + return self._shape + + @shape.setter + def shape(self, shape): + """Set the shape of this SingleStatViewProperties. + + :param shape: The shape of this SingleStatViewProperties. + :type: str + """ # noqa: E501 + if shape is None: + raise ValueError("Invalid value for `shape`, must not be `None`") # noqa: E501 + self._shape = shape + + @property + def note(self): + """Get the note of this SingleStatViewProperties. + + :return: The note of this SingleStatViewProperties. + :rtype: str + """ # noqa: E501 + return self._note + + @note.setter + def note(self, note): + """Set the note of this SingleStatViewProperties. + + :param note: The note of this SingleStatViewProperties. + :type: str + """ # noqa: E501 + if note is None: + raise ValueError("Invalid value for `note`, must not be `None`") # noqa: E501 + self._note = note + + @property + def show_note_when_empty(self): + """Get the show_note_when_empty of this SingleStatViewProperties. + + If true, will display note when empty + + :return: The show_note_when_empty of this SingleStatViewProperties. + :rtype: bool + """ # noqa: E501 + return self._show_note_when_empty + + @show_note_when_empty.setter + def show_note_when_empty(self, show_note_when_empty): + """Set the show_note_when_empty of this SingleStatViewProperties. + + If true, will display note when empty + + :param show_note_when_empty: The show_note_when_empty of this SingleStatViewProperties. + :type: bool + """ # noqa: E501 + if show_note_when_empty is None: + raise ValueError("Invalid value for `show_note_when_empty`, must not be `None`") # noqa: E501 + self._show_note_when_empty = show_note_when_empty + + @property + def prefix(self): + """Get the prefix of this SingleStatViewProperties. + + :return: The prefix of this SingleStatViewProperties. + :rtype: str + """ # noqa: E501 + return self._prefix + + @prefix.setter + def prefix(self, prefix): + """Set the prefix of this SingleStatViewProperties. + + :param prefix: The prefix of this SingleStatViewProperties. + :type: str + """ # noqa: E501 + if prefix is None: + raise ValueError("Invalid value for `prefix`, must not be `None`") # noqa: E501 + self._prefix = prefix + + @property + def tick_prefix(self): + """Get the tick_prefix of this SingleStatViewProperties. + + :return: The tick_prefix of this SingleStatViewProperties. + :rtype: str + """ # noqa: E501 + return self._tick_prefix + + @tick_prefix.setter + def tick_prefix(self, tick_prefix): + """Set the tick_prefix of this SingleStatViewProperties. + + :param tick_prefix: The tick_prefix of this SingleStatViewProperties. + :type: str + """ # noqa: E501 + if tick_prefix is None: + raise ValueError("Invalid value for `tick_prefix`, must not be `None`") # noqa: E501 + self._tick_prefix = tick_prefix + + @property + def suffix(self): + """Get the suffix of this SingleStatViewProperties. + + :return: The suffix of this SingleStatViewProperties. + :rtype: str + """ # noqa: E501 + return self._suffix + + @suffix.setter + def suffix(self, suffix): + """Set the suffix of this SingleStatViewProperties. + + :param suffix: The suffix of this SingleStatViewProperties. + :type: str + """ # noqa: E501 + if suffix is None: + raise ValueError("Invalid value for `suffix`, must not be `None`") # noqa: E501 + self._suffix = suffix + + @property + def tick_suffix(self): + """Get the tick_suffix of this SingleStatViewProperties. + + :return: The tick_suffix of this SingleStatViewProperties. + :rtype: str + """ # noqa: E501 + return self._tick_suffix + + @tick_suffix.setter + def tick_suffix(self, tick_suffix): + """Set the tick_suffix of this SingleStatViewProperties. + + :param tick_suffix: The tick_suffix of this SingleStatViewProperties. + :type: str + """ # noqa: E501 + if tick_suffix is None: + raise ValueError("Invalid value for `tick_suffix`, must not be `None`") # noqa: E501 + self._tick_suffix = tick_suffix + + @property + def static_legend(self): + """Get the static_legend of this SingleStatViewProperties. + + :return: The static_legend of this SingleStatViewProperties. + :rtype: StaticLegend + """ # noqa: E501 + return self._static_legend + + @static_legend.setter + def static_legend(self, static_legend): + """Set the static_legend of this SingleStatViewProperties. + + :param static_legend: The static_legend of this SingleStatViewProperties. + :type: StaticLegend + """ # noqa: E501 + self._static_legend = static_legend + + @property + def decimal_places(self): + """Get the decimal_places of this SingleStatViewProperties. + + :return: The decimal_places of this SingleStatViewProperties. + :rtype: DecimalPlaces + """ # noqa: E501 + return self._decimal_places + + @decimal_places.setter + def decimal_places(self, decimal_places): + """Set the decimal_places of this SingleStatViewProperties. + + :param decimal_places: The decimal_places of this SingleStatViewProperties. + :type: DecimalPlaces + """ # noqa: E501 + if decimal_places is None: + raise ValueError("Invalid value for `decimal_places`, must not be `None`") # noqa: E501 + self._decimal_places = decimal_places + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, SingleStatViewProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/slack_notification_endpoint.py b/frogpilot/third_party/influxdb_client/domain/slack_notification_endpoint.py new file mode 100644 index 000000000..d619a4c89 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/slack_notification_endpoint.py @@ -0,0 +1,164 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.notification_endpoint_discriminator import NotificationEndpointDiscriminator + + +class SlackNotificationEndpoint(NotificationEndpointDiscriminator): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'url': 'str', + 'token': 'str', + 'id': 'str', + 'org_id': 'str', + 'user_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'description': 'str', + 'name': 'str', + 'status': 'str', + 'labels': 'list[Label]', + 'links': 'NotificationEndpointBaseLinks', + 'type': 'NotificationEndpointType' + } + + attribute_map = { + 'url': 'url', + 'token': 'token', + 'id': 'id', + 'org_id': 'orgID', + 'user_id': 'userID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'description': 'description', + 'name': 'name', + 'status': 'status', + 'labels': 'labels', + 'links': 'links', + 'type': 'type' + } + + def __init__(self, url=None, token=None, id=None, org_id=None, user_id=None, created_at=None, updated_at=None, description=None, name=None, status='active', labels=None, links=None, type="slack"): # noqa: E501,D401,D403 + """SlackNotificationEndpoint - a model defined in OpenAPI.""" # noqa: E501 + NotificationEndpointDiscriminator.__init__(self, id=id, org_id=org_id, user_id=user_id, created_at=created_at, updated_at=updated_at, description=description, name=name, status=status, labels=labels, links=links, type=type) # noqa: E501 + + self._url = None + self._token = None + self.discriminator = None + + if url is not None: + self.url = url + if token is not None: + self.token = token + + @property + def url(self): + """Get the url of this SlackNotificationEndpoint. + + Specifies the URL of the Slack endpoint. Specify either `URL` or `Token`. + + :return: The url of this SlackNotificationEndpoint. + :rtype: str + """ # noqa: E501 + return self._url + + @url.setter + def url(self, url): + """Set the url of this SlackNotificationEndpoint. + + Specifies the URL of the Slack endpoint. Specify either `URL` or `Token`. + + :param url: The url of this SlackNotificationEndpoint. + :type: str + """ # noqa: E501 + self._url = url + + @property + def token(self): + """Get the token of this SlackNotificationEndpoint. + + Specifies the API token string. Specify either `URL` or `Token`. + + :return: The token of this SlackNotificationEndpoint. + :rtype: str + """ # noqa: E501 + return self._token + + @token.setter + def token(self, token): + """Set the token of this SlackNotificationEndpoint. + + Specifies the API token string. Specify either `URL` or `Token`. + + :param token: The token of this SlackNotificationEndpoint. + :type: str + """ # noqa: E501 + self._token = token + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, SlackNotificationEndpoint): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/slack_notification_rule.py b/frogpilot/third_party/influxdb_client/domain/slack_notification_rule.py new file mode 100644 index 000000000..c7cd5b292 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/slack_notification_rule.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.slack_notification_rule_base import SlackNotificationRuleBase + + +class SlackNotificationRule(SlackNotificationRuleBase): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'channel': 'str', + 'message_template': 'str', + 'latest_completed': 'datetime', + 'last_run_status': 'str', + 'last_run_error': 'str', + 'id': 'str', + 'endpoint_id': 'str', + 'org_id': 'str', + 'task_id': 'str', + 'owner_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'status': 'TaskStatusType', + 'name': 'str', + 'sleep_until': 'str', + 'every': 'str', + 'offset': 'str', + 'runbook_link': 'str', + 'limit_every': 'int', + 'limit': 'int', + 'tag_rules': 'list[TagRule]', + 'description': 'str', + 'status_rules': 'list[StatusRule]', + 'labels': 'list[Label]', + 'links': 'NotificationRuleBaseLinks' + } + + attribute_map = { + 'type': 'type', + 'channel': 'channel', + 'message_template': 'messageTemplate', + 'latest_completed': 'latestCompleted', + 'last_run_status': 'lastRunStatus', + 'last_run_error': 'lastRunError', + 'id': 'id', + 'endpoint_id': 'endpointID', + 'org_id': 'orgID', + 'task_id': 'taskID', + 'owner_id': 'ownerID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'status': 'status', + 'name': 'name', + 'sleep_until': 'sleepUntil', + 'every': 'every', + 'offset': 'offset', + 'runbook_link': 'runbookLink', + 'limit_every': 'limitEvery', + 'limit': 'limit', + 'tag_rules': 'tagRules', + 'description': 'description', + 'status_rules': 'statusRules', + 'labels': 'labels', + 'links': 'links' + } + + def __init__(self, type="slack", channel=None, message_template=None, latest_completed=None, last_run_status=None, last_run_error=None, id=None, endpoint_id=None, org_id=None, task_id=None, owner_id=None, created_at=None, updated_at=None, status=None, name=None, sleep_until=None, every=None, offset=None, runbook_link=None, limit_every=None, limit=None, tag_rules=None, description=None, status_rules=None, labels=None, links=None): # noqa: E501,D401,D403 + """SlackNotificationRule - a model defined in OpenAPI.""" # noqa: E501 + SlackNotificationRuleBase.__init__(self, type=type, channel=channel, message_template=message_template, latest_completed=latest_completed, last_run_status=last_run_status, last_run_error=last_run_error, id=id, endpoint_id=endpoint_id, org_id=org_id, task_id=task_id, owner_id=owner_id, created_at=created_at, updated_at=updated_at, status=status, name=name, sleep_until=sleep_until, every=every, offset=offset, runbook_link=runbook_link, limit_every=limit_every, limit=limit, tag_rules=tag_rules, description=description, status_rules=status_rules, labels=labels, links=links) # noqa: E501 + self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, SlackNotificationRule): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/slack_notification_rule_base.py b/frogpilot/third_party/influxdb_client/domain/slack_notification_rule_base.py new file mode 100644 index 000000000..923a5dfef --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/slack_notification_rule_base.py @@ -0,0 +1,205 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.notification_rule_discriminator import NotificationRuleDiscriminator + + +class SlackNotificationRuleBase(NotificationRuleDiscriminator): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'channel': 'str', + 'message_template': 'str', + 'latest_completed': 'datetime', + 'last_run_status': 'str', + 'last_run_error': 'str', + 'id': 'str', + 'endpoint_id': 'str', + 'org_id': 'str', + 'task_id': 'str', + 'owner_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'status': 'TaskStatusType', + 'name': 'str', + 'sleep_until': 'str', + 'every': 'str', + 'offset': 'str', + 'runbook_link': 'str', + 'limit_every': 'int', + 'limit': 'int', + 'tag_rules': 'list[TagRule]', + 'description': 'str', + 'status_rules': 'list[StatusRule]', + 'labels': 'list[Label]', + 'links': 'NotificationRuleBaseLinks' + } + + attribute_map = { + 'type': 'type', + 'channel': 'channel', + 'message_template': 'messageTemplate', + 'latest_completed': 'latestCompleted', + 'last_run_status': 'lastRunStatus', + 'last_run_error': 'lastRunError', + 'id': 'id', + 'endpoint_id': 'endpointID', + 'org_id': 'orgID', + 'task_id': 'taskID', + 'owner_id': 'ownerID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'status': 'status', + 'name': 'name', + 'sleep_until': 'sleepUntil', + 'every': 'every', + 'offset': 'offset', + 'runbook_link': 'runbookLink', + 'limit_every': 'limitEvery', + 'limit': 'limit', + 'tag_rules': 'tagRules', + 'description': 'description', + 'status_rules': 'statusRules', + 'labels': 'labels', + 'links': 'links' + } + + def __init__(self, type=None, channel=None, message_template=None, latest_completed=None, last_run_status=None, last_run_error=None, id=None, endpoint_id=None, org_id=None, task_id=None, owner_id=None, created_at=None, updated_at=None, status=None, name=None, sleep_until=None, every=None, offset=None, runbook_link=None, limit_every=None, limit=None, tag_rules=None, description=None, status_rules=None, labels=None, links=None): # noqa: E501,D401,D403 + """SlackNotificationRuleBase - a model defined in OpenAPI.""" # noqa: E501 + NotificationRuleDiscriminator.__init__(self, latest_completed=latest_completed, last_run_status=last_run_status, last_run_error=last_run_error, id=id, endpoint_id=endpoint_id, org_id=org_id, task_id=task_id, owner_id=owner_id, created_at=created_at, updated_at=updated_at, status=status, name=name, sleep_until=sleep_until, every=every, offset=offset, runbook_link=runbook_link, limit_every=limit_every, limit=limit, tag_rules=tag_rules, description=description, status_rules=status_rules, labels=labels, links=links) # noqa: E501 + + self._type = None + self._channel = None + self._message_template = None + self.discriminator = None + + self.type = type + if channel is not None: + self.channel = channel + self.message_template = message_template + + @property + def type(self): + """Get the type of this SlackNotificationRuleBase. + + :return: The type of this SlackNotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this SlackNotificationRuleBase. + + :param type: The type of this SlackNotificationRuleBase. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def channel(self): + """Get the channel of this SlackNotificationRuleBase. + + :return: The channel of this SlackNotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._channel + + @channel.setter + def channel(self, channel): + """Set the channel of this SlackNotificationRuleBase. + + :param channel: The channel of this SlackNotificationRuleBase. + :type: str + """ # noqa: E501 + self._channel = channel + + @property + def message_template(self): + """Get the message_template of this SlackNotificationRuleBase. + + :return: The message_template of this SlackNotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._message_template + + @message_template.setter + def message_template(self, message_template): + """Set the message_template of this SlackNotificationRuleBase. + + :param message_template: The message_template of this SlackNotificationRuleBase. + :type: str + """ # noqa: E501 + if message_template is None: + raise ValueError("Invalid value for `message_template`, must not be `None`") # noqa: E501 + self._message_template = message_template + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, SlackNotificationRuleBase): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/smtp_notification_rule.py b/frogpilot/third_party/influxdb_client/domain/smtp_notification_rule.py new file mode 100644 index 000000000..d91073277 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/smtp_notification_rule.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.smtp_notification_rule_base import SMTPNotificationRuleBase + + +class SMTPNotificationRule(SMTPNotificationRuleBase): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'subject_template': 'str', + 'body_template': 'str', + 'to': 'str', + 'latest_completed': 'datetime', + 'last_run_status': 'str', + 'last_run_error': 'str', + 'id': 'str', + 'endpoint_id': 'str', + 'org_id': 'str', + 'task_id': 'str', + 'owner_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'status': 'TaskStatusType', + 'name': 'str', + 'sleep_until': 'str', + 'every': 'str', + 'offset': 'str', + 'runbook_link': 'str', + 'limit_every': 'int', + 'limit': 'int', + 'tag_rules': 'list[TagRule]', + 'description': 'str', + 'status_rules': 'list[StatusRule]', + 'labels': 'list[Label]', + 'links': 'NotificationRuleBaseLinks' + } + + attribute_map = { + 'type': 'type', + 'subject_template': 'subjectTemplate', + 'body_template': 'bodyTemplate', + 'to': 'to', + 'latest_completed': 'latestCompleted', + 'last_run_status': 'lastRunStatus', + 'last_run_error': 'lastRunError', + 'id': 'id', + 'endpoint_id': 'endpointID', + 'org_id': 'orgID', + 'task_id': 'taskID', + 'owner_id': 'ownerID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'status': 'status', + 'name': 'name', + 'sleep_until': 'sleepUntil', + 'every': 'every', + 'offset': 'offset', + 'runbook_link': 'runbookLink', + 'limit_every': 'limitEvery', + 'limit': 'limit', + 'tag_rules': 'tagRules', + 'description': 'description', + 'status_rules': 'statusRules', + 'labels': 'labels', + 'links': 'links' + } + + def __init__(self, type="smtp", subject_template=None, body_template=None, to=None, latest_completed=None, last_run_status=None, last_run_error=None, id=None, endpoint_id=None, org_id=None, task_id=None, owner_id=None, created_at=None, updated_at=None, status=None, name=None, sleep_until=None, every=None, offset=None, runbook_link=None, limit_every=None, limit=None, tag_rules=None, description=None, status_rules=None, labels=None, links=None): # noqa: E501,D401,D403 + """SMTPNotificationRule - a model defined in OpenAPI.""" # noqa: E501 + SMTPNotificationRuleBase.__init__(self, type=type, subject_template=subject_template, body_template=body_template, to=to, latest_completed=latest_completed, last_run_status=last_run_status, last_run_error=last_run_error, id=id, endpoint_id=endpoint_id, org_id=org_id, task_id=task_id, owner_id=owner_id, created_at=created_at, updated_at=updated_at, status=status, name=name, sleep_until=sleep_until, every=every, offset=offset, runbook_link=runbook_link, limit_every=limit_every, limit=limit, tag_rules=tag_rules, description=description, status_rules=status_rules, labels=labels, links=links) # noqa: E501 + self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, SMTPNotificationRule): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/smtp_notification_rule_base.py b/frogpilot/third_party/influxdb_client/domain/smtp_notification_rule_base.py new file mode 100644 index 000000000..18cbae11b --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/smtp_notification_rule_base.py @@ -0,0 +1,229 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.notification_rule_discriminator import NotificationRuleDiscriminator + + +class SMTPNotificationRuleBase(NotificationRuleDiscriminator): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'subject_template': 'str', + 'body_template': 'str', + 'to': 'str', + 'latest_completed': 'datetime', + 'last_run_status': 'str', + 'last_run_error': 'str', + 'id': 'str', + 'endpoint_id': 'str', + 'org_id': 'str', + 'task_id': 'str', + 'owner_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'status': 'TaskStatusType', + 'name': 'str', + 'sleep_until': 'str', + 'every': 'str', + 'offset': 'str', + 'runbook_link': 'str', + 'limit_every': 'int', + 'limit': 'int', + 'tag_rules': 'list[TagRule]', + 'description': 'str', + 'status_rules': 'list[StatusRule]', + 'labels': 'list[Label]', + 'links': 'NotificationRuleBaseLinks' + } + + attribute_map = { + 'type': 'type', + 'subject_template': 'subjectTemplate', + 'body_template': 'bodyTemplate', + 'to': 'to', + 'latest_completed': 'latestCompleted', + 'last_run_status': 'lastRunStatus', + 'last_run_error': 'lastRunError', + 'id': 'id', + 'endpoint_id': 'endpointID', + 'org_id': 'orgID', + 'task_id': 'taskID', + 'owner_id': 'ownerID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'status': 'status', + 'name': 'name', + 'sleep_until': 'sleepUntil', + 'every': 'every', + 'offset': 'offset', + 'runbook_link': 'runbookLink', + 'limit_every': 'limitEvery', + 'limit': 'limit', + 'tag_rules': 'tagRules', + 'description': 'description', + 'status_rules': 'statusRules', + 'labels': 'labels', + 'links': 'links' + } + + def __init__(self, type=None, subject_template=None, body_template=None, to=None, latest_completed=None, last_run_status=None, last_run_error=None, id=None, endpoint_id=None, org_id=None, task_id=None, owner_id=None, created_at=None, updated_at=None, status=None, name=None, sleep_until=None, every=None, offset=None, runbook_link=None, limit_every=None, limit=None, tag_rules=None, description=None, status_rules=None, labels=None, links=None): # noqa: E501,D401,D403 + """SMTPNotificationRuleBase - a model defined in OpenAPI.""" # noqa: E501 + NotificationRuleDiscriminator.__init__(self, latest_completed=latest_completed, last_run_status=last_run_status, last_run_error=last_run_error, id=id, endpoint_id=endpoint_id, org_id=org_id, task_id=task_id, owner_id=owner_id, created_at=created_at, updated_at=updated_at, status=status, name=name, sleep_until=sleep_until, every=every, offset=offset, runbook_link=runbook_link, limit_every=limit_every, limit=limit, tag_rules=tag_rules, description=description, status_rules=status_rules, labels=labels, links=links) # noqa: E501 + + self._type = None + self._subject_template = None + self._body_template = None + self._to = None + self.discriminator = None + + self.type = type + self.subject_template = subject_template + if body_template is not None: + self.body_template = body_template + self.to = to + + @property + def type(self): + """Get the type of this SMTPNotificationRuleBase. + + :return: The type of this SMTPNotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this SMTPNotificationRuleBase. + + :param type: The type of this SMTPNotificationRuleBase. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def subject_template(self): + """Get the subject_template of this SMTPNotificationRuleBase. + + :return: The subject_template of this SMTPNotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._subject_template + + @subject_template.setter + def subject_template(self, subject_template): + """Set the subject_template of this SMTPNotificationRuleBase. + + :param subject_template: The subject_template of this SMTPNotificationRuleBase. + :type: str + """ # noqa: E501 + if subject_template is None: + raise ValueError("Invalid value for `subject_template`, must not be `None`") # noqa: E501 + self._subject_template = subject_template + + @property + def body_template(self): + """Get the body_template of this SMTPNotificationRuleBase. + + :return: The body_template of this SMTPNotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._body_template + + @body_template.setter + def body_template(self, body_template): + """Set the body_template of this SMTPNotificationRuleBase. + + :param body_template: The body_template of this SMTPNotificationRuleBase. + :type: str + """ # noqa: E501 + self._body_template = body_template + + @property + def to(self): + """Get the to of this SMTPNotificationRuleBase. + + :return: The to of this SMTPNotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._to + + @to.setter + def to(self, to): + """Set the to of this SMTPNotificationRuleBase. + + :param to: The to of this SMTPNotificationRuleBase. + :type: str + """ # noqa: E501 + if to is None: + raise ValueError("Invalid value for `to`, must not be `None`") # noqa: E501 + self._to = to + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, SMTPNotificationRuleBase): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/source.py b/frogpilot/third_party/influxdb_client/domain/source.py new file mode 100644 index 000000000..c45cb12aa --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/source.py @@ -0,0 +1,459 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Source(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'links': 'SourceLinks', + 'id': 'str', + 'org_id': 'str', + 'default': 'bool', + 'name': 'str', + 'type': 'str', + 'url': 'str', + 'insecure_skip_verify': 'bool', + 'telegraf': 'str', + 'token': 'str', + 'username': 'str', + 'password': 'str', + 'shared_secret': 'str', + 'meta_url': 'str', + 'default_rp': 'str', + 'languages': 'list[str]' + } + + attribute_map = { + 'links': 'links', + 'id': 'id', + 'org_id': 'orgID', + 'default': 'default', + 'name': 'name', + 'type': 'type', + 'url': 'url', + 'insecure_skip_verify': 'insecureSkipVerify', + 'telegraf': 'telegraf', + 'token': 'token', + 'username': 'username', + 'password': 'password', + 'shared_secret': 'sharedSecret', + 'meta_url': 'metaUrl', + 'default_rp': 'defaultRP', + 'languages': 'languages' + } + + def __init__(self, links=None, id=None, org_id=None, default=None, name=None, type=None, url=None, insecure_skip_verify=None, telegraf=None, token=None, username=None, password=None, shared_secret=None, meta_url=None, default_rp=None, languages=None): # noqa: E501,D401,D403 + """Source - a model defined in OpenAPI.""" # noqa: E501 + self._links = None + self._id = None + self._org_id = None + self._default = None + self._name = None + self._type = None + self._url = None + self._insecure_skip_verify = None + self._telegraf = None + self._token = None + self._username = None + self._password = None + self._shared_secret = None + self._meta_url = None + self._default_rp = None + self._languages = None + self.discriminator = None + + if links is not None: + self.links = links + if id is not None: + self.id = id + if org_id is not None: + self.org_id = org_id + if default is not None: + self.default = default + if name is not None: + self.name = name + if type is not None: + self.type = type + if url is not None: + self.url = url + if insecure_skip_verify is not None: + self.insecure_skip_verify = insecure_skip_verify + if telegraf is not None: + self.telegraf = telegraf + if token is not None: + self.token = token + if username is not None: + self.username = username + if password is not None: + self.password = password + if shared_secret is not None: + self.shared_secret = shared_secret + if meta_url is not None: + self.meta_url = meta_url + if default_rp is not None: + self.default_rp = default_rp + if languages is not None: + self.languages = languages + + @property + def links(self): + """Get the links of this Source. + + :return: The links of this Source. + :rtype: SourceLinks + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Source. + + :param links: The links of this Source. + :type: SourceLinks + """ # noqa: E501 + self._links = links + + @property + def id(self): + """Get the id of this Source. + + :return: The id of this Source. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this Source. + + :param id: The id of this Source. + :type: str + """ # noqa: E501 + self._id = id + + @property + def org_id(self): + """Get the org_id of this Source. + + :return: The org_id of this Source. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this Source. + + :param org_id: The org_id of this Source. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def default(self): + """Get the default of this Source. + + :return: The default of this Source. + :rtype: bool + """ # noqa: E501 + return self._default + + @default.setter + def default(self, default): + """Set the default of this Source. + + :param default: The default of this Source. + :type: bool + """ # noqa: E501 + self._default = default + + @property + def name(self): + """Get the name of this Source. + + :return: The name of this Source. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this Source. + + :param name: The name of this Source. + :type: str + """ # noqa: E501 + self._name = name + + @property + def type(self): + """Get the type of this Source. + + :return: The type of this Source. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this Source. + + :param type: The type of this Source. + :type: str + """ # noqa: E501 + self._type = type + + @property + def url(self): + """Get the url of this Source. + + :return: The url of this Source. + :rtype: str + """ # noqa: E501 + return self._url + + @url.setter + def url(self, url): + """Set the url of this Source. + + :param url: The url of this Source. + :type: str + """ # noqa: E501 + self._url = url + + @property + def insecure_skip_verify(self): + """Get the insecure_skip_verify of this Source. + + :return: The insecure_skip_verify of this Source. + :rtype: bool + """ # noqa: E501 + return self._insecure_skip_verify + + @insecure_skip_verify.setter + def insecure_skip_verify(self, insecure_skip_verify): + """Set the insecure_skip_verify of this Source. + + :param insecure_skip_verify: The insecure_skip_verify of this Source. + :type: bool + """ # noqa: E501 + self._insecure_skip_verify = insecure_skip_verify + + @property + def telegraf(self): + """Get the telegraf of this Source. + + :return: The telegraf of this Source. + :rtype: str + """ # noqa: E501 + return self._telegraf + + @telegraf.setter + def telegraf(self, telegraf): + """Set the telegraf of this Source. + + :param telegraf: The telegraf of this Source. + :type: str + """ # noqa: E501 + self._telegraf = telegraf + + @property + def token(self): + """Get the token of this Source. + + :return: The token of this Source. + :rtype: str + """ # noqa: E501 + return self._token + + @token.setter + def token(self, token): + """Set the token of this Source. + + :param token: The token of this Source. + :type: str + """ # noqa: E501 + self._token = token + + @property + def username(self): + """Get the username of this Source. + + :return: The username of this Source. + :rtype: str + """ # noqa: E501 + return self._username + + @username.setter + def username(self, username): + """Set the username of this Source. + + :param username: The username of this Source. + :type: str + """ # noqa: E501 + self._username = username + + @property + def password(self): + """Get the password of this Source. + + :return: The password of this Source. + :rtype: str + """ # noqa: E501 + return self._password + + @password.setter + def password(self, password): + """Set the password of this Source. + + :param password: The password of this Source. + :type: str + """ # noqa: E501 + self._password = password + + @property + def shared_secret(self): + """Get the shared_secret of this Source. + + :return: The shared_secret of this Source. + :rtype: str + """ # noqa: E501 + return self._shared_secret + + @shared_secret.setter + def shared_secret(self, shared_secret): + """Set the shared_secret of this Source. + + :param shared_secret: The shared_secret of this Source. + :type: str + """ # noqa: E501 + self._shared_secret = shared_secret + + @property + def meta_url(self): + """Get the meta_url of this Source. + + :return: The meta_url of this Source. + :rtype: str + """ # noqa: E501 + return self._meta_url + + @meta_url.setter + def meta_url(self, meta_url): + """Set the meta_url of this Source. + + :param meta_url: The meta_url of this Source. + :type: str + """ # noqa: E501 + self._meta_url = meta_url + + @property + def default_rp(self): + """Get the default_rp of this Source. + + :return: The default_rp of this Source. + :rtype: str + """ # noqa: E501 + return self._default_rp + + @default_rp.setter + def default_rp(self, default_rp): + """Set the default_rp of this Source. + + :param default_rp: The default_rp of this Source. + :type: str + """ # noqa: E501 + self._default_rp = default_rp + + @property + def languages(self): + """Get the languages of this Source. + + :return: The languages of this Source. + :rtype: list[str] + """ # noqa: E501 + return self._languages + + @languages.setter + def languages(self, languages): + """Set the languages of this Source. + + :param languages: The languages of this Source. + :type: list[str] + """ # noqa: E501 + allowed_values = ["flux", "influxql"] # noqa: E501 + if not set(languages).issubset(set(allowed_values)): + raise ValueError( + "Invalid values for `languages` [{0}], must be a subset of [{1}]" # noqa: E501 + .format(", ".join(map(str, set(languages) - set(allowed_values))), # noqa: E501 + ", ".join(map(str, allowed_values))) + ) + self._languages = languages + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Source): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/source_links.py b/frogpilot/third_party/influxdb_client/domain/source_links.py new file mode 100644 index 000000000..baffe913c --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/source_links.py @@ -0,0 +1,176 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class SourceLinks(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + '_self': 'str', + 'query': 'str', + 'health': 'str', + 'buckets': 'str' + } + + attribute_map = { + '_self': 'self', + 'query': 'query', + 'health': 'health', + 'buckets': 'buckets' + } + + def __init__(self, _self=None, query=None, health=None, buckets=None): # noqa: E501,D401,D403 + """SourceLinks - a model defined in OpenAPI.""" # noqa: E501 + self.__self = None + self._query = None + self._health = None + self._buckets = None + self.discriminator = None + + if _self is not None: + self._self = _self + if query is not None: + self.query = query + if health is not None: + self.health = health + if buckets is not None: + self.buckets = buckets + + @property + def _self(self): + """Get the _self of this SourceLinks. + + :return: The _self of this SourceLinks. + :rtype: str + """ # noqa: E501 + return self.__self + + @_self.setter + def _self(self, _self): + """Set the _self of this SourceLinks. + + :param _self: The _self of this SourceLinks. + :type: str + """ # noqa: E501 + self.__self = _self + + @property + def query(self): + """Get the query of this SourceLinks. + + :return: The query of this SourceLinks. + :rtype: str + """ # noqa: E501 + return self._query + + @query.setter + def query(self, query): + """Set the query of this SourceLinks. + + :param query: The query of this SourceLinks. + :type: str + """ # noqa: E501 + self._query = query + + @property + def health(self): + """Get the health of this SourceLinks. + + :return: The health of this SourceLinks. + :rtype: str + """ # noqa: E501 + return self._health + + @health.setter + def health(self, health): + """Set the health of this SourceLinks. + + :param health: The health of this SourceLinks. + :type: str + """ # noqa: E501 + self._health = health + + @property + def buckets(self): + """Get the buckets of this SourceLinks. + + :return: The buckets of this SourceLinks. + :rtype: str + """ # noqa: E501 + return self._buckets + + @buckets.setter + def buckets(self, buckets): + """Set the buckets of this SourceLinks. + + :param buckets: The buckets of this SourceLinks. + :type: str + """ # noqa: E501 + self._buckets = buckets + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, SourceLinks): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/sources.py b/frogpilot/third_party/influxdb_client/domain/sources.py new file mode 100644 index 000000000..c368f13d3 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/sources.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Sources(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'links': 'ResourceMembersLinks', + 'sources': 'list[Source]' + } + + attribute_map = { + 'links': 'links', + 'sources': 'sources' + } + + def __init__(self, links=None, sources=None): # noqa: E501,D401,D403 + """Sources - a model defined in OpenAPI.""" # noqa: E501 + self._links = None + self._sources = None + self.discriminator = None + + if links is not None: + self.links = links + if sources is not None: + self.sources = sources + + @property + def links(self): + """Get the links of this Sources. + + :return: The links of this Sources. + :rtype: ResourceMembersLinks + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Sources. + + :param links: The links of this Sources. + :type: ResourceMembersLinks + """ # noqa: E501 + self._links = links + + @property + def sources(self): + """Get the sources of this Sources. + + :return: The sources of this Sources. + :rtype: list[Source] + """ # noqa: E501 + return self._sources + + @sources.setter + def sources(self, sources): + """Set the sources of this Sources. + + :param sources: The sources of this Sources. + :type: list[Source] + """ # noqa: E501 + self._sources = sources + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Sources): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/stack.py b/frogpilot/third_party/influxdb_client/domain/stack.py new file mode 100644 index 000000000..cdae5a358 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/stack.py @@ -0,0 +1,176 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Stack(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'org_id': 'str', + 'created_at': 'datetime', + 'events': 'list[StackEvents]' + } + + attribute_map = { + 'id': 'id', + 'org_id': 'orgID', + 'created_at': 'createdAt', + 'events': 'events' + } + + def __init__(self, id=None, org_id=None, created_at=None, events=None): # noqa: E501,D401,D403 + """Stack - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._org_id = None + self._created_at = None + self._events = None + self.discriminator = None + + if id is not None: + self.id = id + if org_id is not None: + self.org_id = org_id + if created_at is not None: + self.created_at = created_at + if events is not None: + self.events = events + + @property + def id(self): + """Get the id of this Stack. + + :return: The id of this Stack. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this Stack. + + :param id: The id of this Stack. + :type: str + """ # noqa: E501 + self._id = id + + @property + def org_id(self): + """Get the org_id of this Stack. + + :return: The org_id of this Stack. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this Stack. + + :param org_id: The org_id of this Stack. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def created_at(self): + """Get the created_at of this Stack. + + :return: The created_at of this Stack. + :rtype: datetime + """ # noqa: E501 + return self._created_at + + @created_at.setter + def created_at(self, created_at): + """Set the created_at of this Stack. + + :param created_at: The created_at of this Stack. + :type: datetime + """ # noqa: E501 + self._created_at = created_at + + @property + def events(self): + """Get the events of this Stack. + + :return: The events of this Stack. + :rtype: list[StackEvents] + """ # noqa: E501 + return self._events + + @events.setter + def events(self, events): + """Set the events of this Stack. + + :param events: The events of this Stack. + :type: list[StackEvents] + """ # noqa: E501 + self._events = events + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Stack): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/stack_associations.py b/frogpilot/third_party/influxdb_client/domain/stack_associations.py new file mode 100644 index 000000000..7e3191b36 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/stack_associations.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class StackAssociations(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'kind': 'TemplateKind', + 'meta_name': 'str' + } + + attribute_map = { + 'kind': 'kind', + 'meta_name': 'metaName' + } + + def __init__(self, kind=None, meta_name=None): # noqa: E501,D401,D403 + """StackAssociations - a model defined in OpenAPI.""" # noqa: E501 + self._kind = None + self._meta_name = None + self.discriminator = None + + if kind is not None: + self.kind = kind + if meta_name is not None: + self.meta_name = meta_name + + @property + def kind(self): + """Get the kind of this StackAssociations. + + :return: The kind of this StackAssociations. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this StackAssociations. + + :param kind: The kind of this StackAssociations. + :type: TemplateKind + """ # noqa: E501 + self._kind = kind + + @property + def meta_name(self): + """Get the meta_name of this StackAssociations. + + :return: The meta_name of this StackAssociations. + :rtype: str + """ # noqa: E501 + return self._meta_name + + @meta_name.setter + def meta_name(self, meta_name): + """Set the meta_name of this StackAssociations. + + :param meta_name: The meta_name of this StackAssociations. + :type: str + """ # noqa: E501 + self._meta_name = meta_name + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, StackAssociations): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/stack_events.py b/frogpilot/third_party/influxdb_client/domain/stack_events.py new file mode 100644 index 000000000..854a3ab4c --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/stack_events.py @@ -0,0 +1,245 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class StackEvents(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'event_type': 'str', + 'name': 'str', + 'description': 'str', + 'sources': 'list[str]', + 'resources': 'list[StackResources]', + 'urls': 'list[str]', + 'updated_at': 'datetime' + } + + attribute_map = { + 'event_type': 'eventType', + 'name': 'name', + 'description': 'description', + 'sources': 'sources', + 'resources': 'resources', + 'urls': 'urls', + 'updated_at': 'updatedAt' + } + + def __init__(self, event_type=None, name=None, description=None, sources=None, resources=None, urls=None, updated_at=None): # noqa: E501,D401,D403 + """StackEvents - a model defined in OpenAPI.""" # noqa: E501 + self._event_type = None + self._name = None + self._description = None + self._sources = None + self._resources = None + self._urls = None + self._updated_at = None + self.discriminator = None + + if event_type is not None: + self.event_type = event_type + if name is not None: + self.name = name + if description is not None: + self.description = description + if sources is not None: + self.sources = sources + if resources is not None: + self.resources = resources + if urls is not None: + self.urls = urls + if updated_at is not None: + self.updated_at = updated_at + + @property + def event_type(self): + """Get the event_type of this StackEvents. + + :return: The event_type of this StackEvents. + :rtype: str + """ # noqa: E501 + return self._event_type + + @event_type.setter + def event_type(self, event_type): + """Set the event_type of this StackEvents. + + :param event_type: The event_type of this StackEvents. + :type: str + """ # noqa: E501 + self._event_type = event_type + + @property + def name(self): + """Get the name of this StackEvents. + + :return: The name of this StackEvents. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this StackEvents. + + :param name: The name of this StackEvents. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this StackEvents. + + :return: The description of this StackEvents. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this StackEvents. + + :param description: The description of this StackEvents. + :type: str + """ # noqa: E501 + self._description = description + + @property + def sources(self): + """Get the sources of this StackEvents. + + :return: The sources of this StackEvents. + :rtype: list[str] + """ # noqa: E501 + return self._sources + + @sources.setter + def sources(self, sources): + """Set the sources of this StackEvents. + + :param sources: The sources of this StackEvents. + :type: list[str] + """ # noqa: E501 + self._sources = sources + + @property + def resources(self): + """Get the resources of this StackEvents. + + :return: The resources of this StackEvents. + :rtype: list[StackResources] + """ # noqa: E501 + return self._resources + + @resources.setter + def resources(self, resources): + """Set the resources of this StackEvents. + + :param resources: The resources of this StackEvents. + :type: list[StackResources] + """ # noqa: E501 + self._resources = resources + + @property + def urls(self): + """Get the urls of this StackEvents. + + :return: The urls of this StackEvents. + :rtype: list[str] + """ # noqa: E501 + return self._urls + + @urls.setter + def urls(self, urls): + """Set the urls of this StackEvents. + + :param urls: The urls of this StackEvents. + :type: list[str] + """ # noqa: E501 + self._urls = urls + + @property + def updated_at(self): + """Get the updated_at of this StackEvents. + + :return: The updated_at of this StackEvents. + :rtype: datetime + """ # noqa: E501 + return self._updated_at + + @updated_at.setter + def updated_at(self, updated_at): + """Set the updated_at of this StackEvents. + + :param updated_at: The updated_at of this StackEvents. + :type: datetime + """ # noqa: E501 + self._updated_at = updated_at + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, StackEvents): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/stack_links.py b/frogpilot/third_party/influxdb_client/domain/stack_links.py new file mode 100644 index 000000000..f3c733546 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/stack_links.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class StackLinks(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + '_self': 'str' + } + + attribute_map = { + '_self': 'self' + } + + def __init__(self, _self=None): # noqa: E501,D401,D403 + """StackLinks - a model defined in OpenAPI.""" # noqa: E501 + self.__self = None + self.discriminator = None + + if _self is not None: + self._self = _self + + @property + def _self(self): + """Get the _self of this StackLinks. + + :return: The _self of this StackLinks. + :rtype: str + """ # noqa: E501 + return self.__self + + @_self.setter + def _self(self, _self): + """Set the _self of this StackLinks. + + :param _self: The _self of this StackLinks. + :type: str + """ # noqa: E501 + self.__self = _self + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, StackLinks): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/stack_resources.py b/frogpilot/third_party/influxdb_client/domain/stack_resources.py new file mode 100644 index 000000000..3cd5f9891 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/stack_resources.py @@ -0,0 +1,222 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class StackResources(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'api_version': 'str', + 'resource_id': 'str', + 'kind': 'TemplateKind', + 'template_meta_name': 'str', + 'associations': 'list[StackAssociations]', + 'links': 'StackLinks' + } + + attribute_map = { + 'api_version': 'apiVersion', + 'resource_id': 'resourceID', + 'kind': 'kind', + 'template_meta_name': 'templateMetaName', + 'associations': 'associations', + 'links': 'links' + } + + def __init__(self, api_version=None, resource_id=None, kind=None, template_meta_name=None, associations=None, links=None): # noqa: E501,D401,D403 + """StackResources - a model defined in OpenAPI.""" # noqa: E501 + self._api_version = None + self._resource_id = None + self._kind = None + self._template_meta_name = None + self._associations = None + self._links = None + self.discriminator = None + + if api_version is not None: + self.api_version = api_version + if resource_id is not None: + self.resource_id = resource_id + if kind is not None: + self.kind = kind + if template_meta_name is not None: + self.template_meta_name = template_meta_name + if associations is not None: + self.associations = associations + if links is not None: + self.links = links + + @property + def api_version(self): + """Get the api_version of this StackResources. + + :return: The api_version of this StackResources. + :rtype: str + """ # noqa: E501 + return self._api_version + + @api_version.setter + def api_version(self, api_version): + """Set the api_version of this StackResources. + + :param api_version: The api_version of this StackResources. + :type: str + """ # noqa: E501 + self._api_version = api_version + + @property + def resource_id(self): + """Get the resource_id of this StackResources. + + :return: The resource_id of this StackResources. + :rtype: str + """ # noqa: E501 + return self._resource_id + + @resource_id.setter + def resource_id(self, resource_id): + """Set the resource_id of this StackResources. + + :param resource_id: The resource_id of this StackResources. + :type: str + """ # noqa: E501 + self._resource_id = resource_id + + @property + def kind(self): + """Get the kind of this StackResources. + + :return: The kind of this StackResources. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this StackResources. + + :param kind: The kind of this StackResources. + :type: TemplateKind + """ # noqa: E501 + self._kind = kind + + @property + def template_meta_name(self): + """Get the template_meta_name of this StackResources. + + :return: The template_meta_name of this StackResources. + :rtype: str + """ # noqa: E501 + return self._template_meta_name + + @template_meta_name.setter + def template_meta_name(self, template_meta_name): + """Set the template_meta_name of this StackResources. + + :param template_meta_name: The template_meta_name of this StackResources. + :type: str + """ # noqa: E501 + self._template_meta_name = template_meta_name + + @property + def associations(self): + """Get the associations of this StackResources. + + :return: The associations of this StackResources. + :rtype: list[StackAssociations] + """ # noqa: E501 + return self._associations + + @associations.setter + def associations(self, associations): + """Set the associations of this StackResources. + + :param associations: The associations of this StackResources. + :type: list[StackAssociations] + """ # noqa: E501 + self._associations = associations + + @property + def links(self): + """Get the links of this StackResources. + + :return: The links of this StackResources. + :rtype: StackLinks + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this StackResources. + + :param links: The links of this StackResources. + :type: StackLinks + """ # noqa: E501 + self._links = links + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, StackResources): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/statement.py b/frogpilot/third_party/influxdb_client/domain/statement.py new file mode 100644 index 000000000..bb19fc356 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/statement.py @@ -0,0 +1,82 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Statement(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """Statement - a model defined in OpenAPI.""" # noqa: E501 self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Statement): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/static_legend.py b/frogpilot/third_party/influxdb_client/domain/static_legend.py new file mode 100644 index 000000000..cff694394 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/static_legend.py @@ -0,0 +1,245 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class StaticLegend(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'colorize_rows': 'bool', + 'height_ratio': 'float', + 'show': 'bool', + 'opacity': 'float', + 'orientation_threshold': 'int', + 'value_axis': 'str', + 'width_ratio': 'float' + } + + attribute_map = { + 'colorize_rows': 'colorizeRows', + 'height_ratio': 'heightRatio', + 'show': 'show', + 'opacity': 'opacity', + 'orientation_threshold': 'orientationThreshold', + 'value_axis': 'valueAxis', + 'width_ratio': 'widthRatio' + } + + def __init__(self, colorize_rows=None, height_ratio=None, show=None, opacity=None, orientation_threshold=None, value_axis=None, width_ratio=None): # noqa: E501,D401,D403 + """StaticLegend - a model defined in OpenAPI.""" # noqa: E501 + self._colorize_rows = None + self._height_ratio = None + self._show = None + self._opacity = None + self._orientation_threshold = None + self._value_axis = None + self._width_ratio = None + self.discriminator = None + + if colorize_rows is not None: + self.colorize_rows = colorize_rows + if height_ratio is not None: + self.height_ratio = height_ratio + if show is not None: + self.show = show + if opacity is not None: + self.opacity = opacity + if orientation_threshold is not None: + self.orientation_threshold = orientation_threshold + if value_axis is not None: + self.value_axis = value_axis + if width_ratio is not None: + self.width_ratio = width_ratio + + @property + def colorize_rows(self): + """Get the colorize_rows of this StaticLegend. + + :return: The colorize_rows of this StaticLegend. + :rtype: bool + """ # noqa: E501 + return self._colorize_rows + + @colorize_rows.setter + def colorize_rows(self, colorize_rows): + """Set the colorize_rows of this StaticLegend. + + :param colorize_rows: The colorize_rows of this StaticLegend. + :type: bool + """ # noqa: E501 + self._colorize_rows = colorize_rows + + @property + def height_ratio(self): + """Get the height_ratio of this StaticLegend. + + :return: The height_ratio of this StaticLegend. + :rtype: float + """ # noqa: E501 + return self._height_ratio + + @height_ratio.setter + def height_ratio(self, height_ratio): + """Set the height_ratio of this StaticLegend. + + :param height_ratio: The height_ratio of this StaticLegend. + :type: float + """ # noqa: E501 + self._height_ratio = height_ratio + + @property + def show(self): + """Get the show of this StaticLegend. + + :return: The show of this StaticLegend. + :rtype: bool + """ # noqa: E501 + return self._show + + @show.setter + def show(self, show): + """Set the show of this StaticLegend. + + :param show: The show of this StaticLegend. + :type: bool + """ # noqa: E501 + self._show = show + + @property + def opacity(self): + """Get the opacity of this StaticLegend. + + :return: The opacity of this StaticLegend. + :rtype: float + """ # noqa: E501 + return self._opacity + + @opacity.setter + def opacity(self, opacity): + """Set the opacity of this StaticLegend. + + :param opacity: The opacity of this StaticLegend. + :type: float + """ # noqa: E501 + self._opacity = opacity + + @property + def orientation_threshold(self): + """Get the orientation_threshold of this StaticLegend. + + :return: The orientation_threshold of this StaticLegend. + :rtype: int + """ # noqa: E501 + return self._orientation_threshold + + @orientation_threshold.setter + def orientation_threshold(self, orientation_threshold): + """Set the orientation_threshold of this StaticLegend. + + :param orientation_threshold: The orientation_threshold of this StaticLegend. + :type: int + """ # noqa: E501 + self._orientation_threshold = orientation_threshold + + @property + def value_axis(self): + """Get the value_axis of this StaticLegend. + + :return: The value_axis of this StaticLegend. + :rtype: str + """ # noqa: E501 + return self._value_axis + + @value_axis.setter + def value_axis(self, value_axis): + """Set the value_axis of this StaticLegend. + + :param value_axis: The value_axis of this StaticLegend. + :type: str + """ # noqa: E501 + self._value_axis = value_axis + + @property + def width_ratio(self): + """Get the width_ratio of this StaticLegend. + + :return: The width_ratio of this StaticLegend. + :rtype: float + """ # noqa: E501 + return self._width_ratio + + @width_ratio.setter + def width_ratio(self, width_ratio): + """Set the width_ratio of this StaticLegend. + + :param width_ratio: The width_ratio of this StaticLegend. + :type: float + """ # noqa: E501 + self._width_ratio = width_ratio + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, StaticLegend): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/status_rule.py b/frogpilot/third_party/influxdb_client/domain/status_rule.py new file mode 100644 index 000000000..bac05845a --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/status_rule.py @@ -0,0 +1,176 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class StatusRule(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'current_level': 'RuleStatusLevel', + 'previous_level': 'RuleStatusLevel', + 'count': 'int', + 'period': 'str' + } + + attribute_map = { + 'current_level': 'currentLevel', + 'previous_level': 'previousLevel', + 'count': 'count', + 'period': 'period' + } + + def __init__(self, current_level=None, previous_level=None, count=None, period=None): # noqa: E501,D401,D403 + """StatusRule - a model defined in OpenAPI.""" # noqa: E501 + self._current_level = None + self._previous_level = None + self._count = None + self._period = None + self.discriminator = None + + if current_level is not None: + self.current_level = current_level + if previous_level is not None: + self.previous_level = previous_level + if count is not None: + self.count = count + if period is not None: + self.period = period + + @property + def current_level(self): + """Get the current_level of this StatusRule. + + :return: The current_level of this StatusRule. + :rtype: RuleStatusLevel + """ # noqa: E501 + return self._current_level + + @current_level.setter + def current_level(self, current_level): + """Set the current_level of this StatusRule. + + :param current_level: The current_level of this StatusRule. + :type: RuleStatusLevel + """ # noqa: E501 + self._current_level = current_level + + @property + def previous_level(self): + """Get the previous_level of this StatusRule. + + :return: The previous_level of this StatusRule. + :rtype: RuleStatusLevel + """ # noqa: E501 + return self._previous_level + + @previous_level.setter + def previous_level(self, previous_level): + """Set the previous_level of this StatusRule. + + :param previous_level: The previous_level of this StatusRule. + :type: RuleStatusLevel + """ # noqa: E501 + self._previous_level = previous_level + + @property + def count(self): + """Get the count of this StatusRule. + + :return: The count of this StatusRule. + :rtype: int + """ # noqa: E501 + return self._count + + @count.setter + def count(self, count): + """Set the count of this StatusRule. + + :param count: The count of this StatusRule. + :type: int + """ # noqa: E501 + self._count = count + + @property + def period(self): + """Get the period of this StatusRule. + + :return: The period of this StatusRule. + :rtype: str + """ # noqa: E501 + return self._period + + @period.setter + def period(self, period): + """Set the period of this StatusRule. + + :param period: The period of this StatusRule. + :type: str + """ # noqa: E501 + self._period = period + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, StatusRule): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/string_literal.py b/frogpilot/third_party/influxdb_client/domain/string_literal.py new file mode 100644 index 000000000..643ca4254 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/string_literal.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.property_key import PropertyKey + + +class StringLiteral(PropertyKey): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'value': 'str' + } + + attribute_map = { + 'type': 'type', + 'value': 'value' + } + + def __init__(self, type=None, value=None): # noqa: E501,D401,D403 + """StringLiteral - a model defined in OpenAPI.""" # noqa: E501 + PropertyKey.__init__(self) # noqa: E501 + + self._type = None + self._value = None + self.discriminator = None + + if type is not None: + self.type = type + if value is not None: + self.value = value + + @property + def type(self): + """Get the type of this StringLiteral. + + Type of AST node + + :return: The type of this StringLiteral. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this StringLiteral. + + Type of AST node + + :param type: The type of this StringLiteral. + :type: str + """ # noqa: E501 + self._type = type + + @property + def value(self): + """Get the value of this StringLiteral. + + :return: The value of this StringLiteral. + :rtype: str + """ # noqa: E501 + return self._value + + @value.setter + def value(self, value): + """Set the value of this StringLiteral. + + :param value: The value of this StringLiteral. + :type: str + """ # noqa: E501 + self._value = value + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, StringLiteral): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/subscription_manifest.py b/frogpilot/third_party/influxdb_client/domain/subscription_manifest.py new file mode 100644 index 000000000..7366561e8 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/subscription_manifest.py @@ -0,0 +1,156 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class SubscriptionManifest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'mode': 'str', + 'destinations': 'list[str]' + } + + attribute_map = { + 'name': 'name', + 'mode': 'mode', + 'destinations': 'destinations' + } + + def __init__(self, name=None, mode=None, destinations=None): # noqa: E501,D401,D403 + """SubscriptionManifest - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._mode = None + self._destinations = None + self.discriminator = None + + self.name = name + self.mode = mode + self.destinations = destinations + + @property + def name(self): + """Get the name of this SubscriptionManifest. + + :return: The name of this SubscriptionManifest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this SubscriptionManifest. + + :param name: The name of this SubscriptionManifest. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def mode(self): + """Get the mode of this SubscriptionManifest. + + :return: The mode of this SubscriptionManifest. + :rtype: str + """ # noqa: E501 + return self._mode + + @mode.setter + def mode(self, mode): + """Set the mode of this SubscriptionManifest. + + :param mode: The mode of this SubscriptionManifest. + :type: str + """ # noqa: E501 + if mode is None: + raise ValueError("Invalid value for `mode`, must not be `None`") # noqa: E501 + self._mode = mode + + @property + def destinations(self): + """Get the destinations of this SubscriptionManifest. + + :return: The destinations of this SubscriptionManifest. + :rtype: list[str] + """ # noqa: E501 + return self._destinations + + @destinations.setter + def destinations(self, destinations): + """Set the destinations of this SubscriptionManifest. + + :param destinations: The destinations of this SubscriptionManifest. + :type: list[str] + """ # noqa: E501 + if destinations is None: + raise ValueError("Invalid value for `destinations`, must not be `None`") # noqa: E501 + self._destinations = destinations + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, SubscriptionManifest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/table_view_properties.py b/frogpilot/third_party/influxdb_client/domain/table_view_properties.py new file mode 100644 index 000000000..bd8ec0d99 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/table_view_properties.py @@ -0,0 +1,344 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.view_properties import ViewProperties + + +class TableViewProperties(ViewProperties): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'queries': 'list[DashboardQuery]', + 'colors': 'list[DashboardColor]', + 'shape': 'str', + 'note': 'str', + 'show_note_when_empty': 'bool', + 'table_options': 'TableViewPropertiesTableOptions', + 'field_options': 'list[RenamableField]', + 'time_format': 'str', + 'decimal_places': 'DecimalPlaces' + } + + attribute_map = { + 'type': 'type', + 'queries': 'queries', + 'colors': 'colors', + 'shape': 'shape', + 'note': 'note', + 'show_note_when_empty': 'showNoteWhenEmpty', + 'table_options': 'tableOptions', + 'field_options': 'fieldOptions', + 'time_format': 'timeFormat', + 'decimal_places': 'decimalPlaces' + } + + def __init__(self, type=None, queries=None, colors=None, shape=None, note=None, show_note_when_empty=None, table_options=None, field_options=None, time_format=None, decimal_places=None): # noqa: E501,D401,D403 + """TableViewProperties - a model defined in OpenAPI.""" # noqa: E501 + ViewProperties.__init__(self) # noqa: E501 + + self._type = None + self._queries = None + self._colors = None + self._shape = None + self._note = None + self._show_note_when_empty = None + self._table_options = None + self._field_options = None + self._time_format = None + self._decimal_places = None + self.discriminator = None + + self.type = type + self.queries = queries + self.colors = colors + self.shape = shape + self.note = note + self.show_note_when_empty = show_note_when_empty + self.table_options = table_options + self.field_options = field_options + self.time_format = time_format + self.decimal_places = decimal_places + + @property + def type(self): + """Get the type of this TableViewProperties. + + :return: The type of this TableViewProperties. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this TableViewProperties. + + :param type: The type of this TableViewProperties. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def queries(self): + """Get the queries of this TableViewProperties. + + :return: The queries of this TableViewProperties. + :rtype: list[DashboardQuery] + """ # noqa: E501 + return self._queries + + @queries.setter + def queries(self, queries): + """Set the queries of this TableViewProperties. + + :param queries: The queries of this TableViewProperties. + :type: list[DashboardQuery] + """ # noqa: E501 + if queries is None: + raise ValueError("Invalid value for `queries`, must not be `None`") # noqa: E501 + self._queries = queries + + @property + def colors(self): + """Get the colors of this TableViewProperties. + + Colors define color encoding of data into a visualization + + :return: The colors of this TableViewProperties. + :rtype: list[DashboardColor] + """ # noqa: E501 + return self._colors + + @colors.setter + def colors(self, colors): + """Set the colors of this TableViewProperties. + + Colors define color encoding of data into a visualization + + :param colors: The colors of this TableViewProperties. + :type: list[DashboardColor] + """ # noqa: E501 + if colors is None: + raise ValueError("Invalid value for `colors`, must not be `None`") # noqa: E501 + self._colors = colors + + @property + def shape(self): + """Get the shape of this TableViewProperties. + + :return: The shape of this TableViewProperties. + :rtype: str + """ # noqa: E501 + return self._shape + + @shape.setter + def shape(self, shape): + """Set the shape of this TableViewProperties. + + :param shape: The shape of this TableViewProperties. + :type: str + """ # noqa: E501 + if shape is None: + raise ValueError("Invalid value for `shape`, must not be `None`") # noqa: E501 + self._shape = shape + + @property + def note(self): + """Get the note of this TableViewProperties. + + :return: The note of this TableViewProperties. + :rtype: str + """ # noqa: E501 + return self._note + + @note.setter + def note(self, note): + """Set the note of this TableViewProperties. + + :param note: The note of this TableViewProperties. + :type: str + """ # noqa: E501 + if note is None: + raise ValueError("Invalid value for `note`, must not be `None`") # noqa: E501 + self._note = note + + @property + def show_note_when_empty(self): + """Get the show_note_when_empty of this TableViewProperties. + + If true, will display note when empty + + :return: The show_note_when_empty of this TableViewProperties. + :rtype: bool + """ # noqa: E501 + return self._show_note_when_empty + + @show_note_when_empty.setter + def show_note_when_empty(self, show_note_when_empty): + """Set the show_note_when_empty of this TableViewProperties. + + If true, will display note when empty + + :param show_note_when_empty: The show_note_when_empty of this TableViewProperties. + :type: bool + """ # noqa: E501 + if show_note_when_empty is None: + raise ValueError("Invalid value for `show_note_when_empty`, must not be `None`") # noqa: E501 + self._show_note_when_empty = show_note_when_empty + + @property + def table_options(self): + """Get the table_options of this TableViewProperties. + + :return: The table_options of this TableViewProperties. + :rtype: TableViewPropertiesTableOptions + """ # noqa: E501 + return self._table_options + + @table_options.setter + def table_options(self, table_options): + """Set the table_options of this TableViewProperties. + + :param table_options: The table_options of this TableViewProperties. + :type: TableViewPropertiesTableOptions + """ # noqa: E501 + if table_options is None: + raise ValueError("Invalid value for `table_options`, must not be `None`") # noqa: E501 + self._table_options = table_options + + @property + def field_options(self): + """Get the field_options of this TableViewProperties. + + fieldOptions represent the fields retrieved by the query with customization options + + :return: The field_options of this TableViewProperties. + :rtype: list[RenamableField] + """ # noqa: E501 + return self._field_options + + @field_options.setter + def field_options(self, field_options): + """Set the field_options of this TableViewProperties. + + fieldOptions represent the fields retrieved by the query with customization options + + :param field_options: The field_options of this TableViewProperties. + :type: list[RenamableField] + """ # noqa: E501 + if field_options is None: + raise ValueError("Invalid value for `field_options`, must not be `None`") # noqa: E501 + self._field_options = field_options + + @property + def time_format(self): + """Get the time_format of this TableViewProperties. + + timeFormat describes the display format for time values according to moment.js date formatting + + :return: The time_format of this TableViewProperties. + :rtype: str + """ # noqa: E501 + return self._time_format + + @time_format.setter + def time_format(self, time_format): + """Set the time_format of this TableViewProperties. + + timeFormat describes the display format for time values according to moment.js date formatting + + :param time_format: The time_format of this TableViewProperties. + :type: str + """ # noqa: E501 + if time_format is None: + raise ValueError("Invalid value for `time_format`, must not be `None`") # noqa: E501 + self._time_format = time_format + + @property + def decimal_places(self): + """Get the decimal_places of this TableViewProperties. + + :return: The decimal_places of this TableViewProperties. + :rtype: DecimalPlaces + """ # noqa: E501 + return self._decimal_places + + @decimal_places.setter + def decimal_places(self, decimal_places): + """Set the decimal_places of this TableViewProperties. + + :param decimal_places: The decimal_places of this TableViewProperties. + :type: DecimalPlaces + """ # noqa: E501 + if decimal_places is None: + raise ValueError("Invalid value for `decimal_places`, must not be `None`") # noqa: E501 + self._decimal_places = decimal_places + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TableViewProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/table_view_properties_table_options.py b/frogpilot/third_party/influxdb_client/domain/table_view_properties_table_options.py new file mode 100644 index 000000000..71193ca95 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/table_view_properties_table_options.py @@ -0,0 +1,188 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TableViewPropertiesTableOptions(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'vertical_time_axis': 'bool', + 'sort_by': 'RenamableField', + 'wrapping': 'str', + 'fix_first_column': 'bool' + } + + attribute_map = { + 'vertical_time_axis': 'verticalTimeAxis', + 'sort_by': 'sortBy', + 'wrapping': 'wrapping', + 'fix_first_column': 'fixFirstColumn' + } + + def __init__(self, vertical_time_axis=None, sort_by=None, wrapping=None, fix_first_column=None): # noqa: E501,D401,D403 + """TableViewPropertiesTableOptions - a model defined in OpenAPI.""" # noqa: E501 + self._vertical_time_axis = None + self._sort_by = None + self._wrapping = None + self._fix_first_column = None + self.discriminator = None + + if vertical_time_axis is not None: + self.vertical_time_axis = vertical_time_axis + if sort_by is not None: + self.sort_by = sort_by + if wrapping is not None: + self.wrapping = wrapping + if fix_first_column is not None: + self.fix_first_column = fix_first_column + + @property + def vertical_time_axis(self): + """Get the vertical_time_axis of this TableViewPropertiesTableOptions. + + verticalTimeAxis describes the orientation of the table by indicating whether the time axis will be displayed vertically + + :return: The vertical_time_axis of this TableViewPropertiesTableOptions. + :rtype: bool + """ # noqa: E501 + return self._vertical_time_axis + + @vertical_time_axis.setter + def vertical_time_axis(self, vertical_time_axis): + """Set the vertical_time_axis of this TableViewPropertiesTableOptions. + + verticalTimeAxis describes the orientation of the table by indicating whether the time axis will be displayed vertically + + :param vertical_time_axis: The vertical_time_axis of this TableViewPropertiesTableOptions. + :type: bool + """ # noqa: E501 + self._vertical_time_axis = vertical_time_axis + + @property + def sort_by(self): + """Get the sort_by of this TableViewPropertiesTableOptions. + + :return: The sort_by of this TableViewPropertiesTableOptions. + :rtype: RenamableField + """ # noqa: E501 + return self._sort_by + + @sort_by.setter + def sort_by(self, sort_by): + """Set the sort_by of this TableViewPropertiesTableOptions. + + :param sort_by: The sort_by of this TableViewPropertiesTableOptions. + :type: RenamableField + """ # noqa: E501 + self._sort_by = sort_by + + @property + def wrapping(self): + """Get the wrapping of this TableViewPropertiesTableOptions. + + Wrapping describes the text wrapping style to be used in table views + + :return: The wrapping of this TableViewPropertiesTableOptions. + :rtype: str + """ # noqa: E501 + return self._wrapping + + @wrapping.setter + def wrapping(self, wrapping): + """Set the wrapping of this TableViewPropertiesTableOptions. + + Wrapping describes the text wrapping style to be used in table views + + :param wrapping: The wrapping of this TableViewPropertiesTableOptions. + :type: str + """ # noqa: E501 + self._wrapping = wrapping + + @property + def fix_first_column(self): + """Get the fix_first_column of this TableViewPropertiesTableOptions. + + fixFirstColumn indicates whether the first column of the table should be locked + + :return: The fix_first_column of this TableViewPropertiesTableOptions. + :rtype: bool + """ # noqa: E501 + return self._fix_first_column + + @fix_first_column.setter + def fix_first_column(self, fix_first_column): + """Set the fix_first_column of this TableViewPropertiesTableOptions. + + fixFirstColumn indicates whether the first column of the table should be locked + + :param fix_first_column: The fix_first_column of this TableViewPropertiesTableOptions. + :type: bool + """ # noqa: E501 + self._fix_first_column = fix_first_column + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TableViewPropertiesTableOptions): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/tag_rule.py b/frogpilot/third_party/influxdb_client/domain/tag_rule.py new file mode 100644 index 000000000..9683856d9 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/tag_rule.py @@ -0,0 +1,153 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TagRule(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'key': 'str', + 'value': 'str', + 'operator': 'str' + } + + attribute_map = { + 'key': 'key', + 'value': 'value', + 'operator': 'operator' + } + + def __init__(self, key=None, value=None, operator=None): # noqa: E501,D401,D403 + """TagRule - a model defined in OpenAPI.""" # noqa: E501 + self._key = None + self._value = None + self._operator = None + self.discriminator = None + + if key is not None: + self.key = key + if value is not None: + self.value = value + if operator is not None: + self.operator = operator + + @property + def key(self): + """Get the key of this TagRule. + + :return: The key of this TagRule. + :rtype: str + """ # noqa: E501 + return self._key + + @key.setter + def key(self, key): + """Set the key of this TagRule. + + :param key: The key of this TagRule. + :type: str + """ # noqa: E501 + self._key = key + + @property + def value(self): + """Get the value of this TagRule. + + :return: The value of this TagRule. + :rtype: str + """ # noqa: E501 + return self._value + + @value.setter + def value(self, value): + """Set the value of this TagRule. + + :param value: The value of this TagRule. + :type: str + """ # noqa: E501 + self._value = value + + @property + def operator(self): + """Get the operator of this TagRule. + + :return: The operator of this TagRule. + :rtype: str + """ # noqa: E501 + return self._operator + + @operator.setter + def operator(self, operator): + """Set the operator of this TagRule. + + :param operator: The operator of this TagRule. + :type: str + """ # noqa: E501 + self._operator = operator + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TagRule): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/task.py b/frogpilot/third_party/influxdb_client/domain/task.py new file mode 100644 index 000000000..531babca3 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/task.py @@ -0,0 +1,569 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Task(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'org_id': 'str', + 'org': 'str', + 'name': 'str', + 'owner_id': 'str', + 'description': 'str', + 'status': 'TaskStatusType', + 'labels': 'list[Label]', + 'authorization_id': 'str', + 'flux': 'str', + 'every': 'str', + 'cron': 'str', + 'offset': 'str', + 'latest_completed': 'datetime', + 'last_run_status': 'str', + 'last_run_error': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'links': 'TaskLinks' + } + + attribute_map = { + 'id': 'id', + 'org_id': 'orgID', + 'org': 'org', + 'name': 'name', + 'owner_id': 'ownerID', + 'description': 'description', + 'status': 'status', + 'labels': 'labels', + 'authorization_id': 'authorizationID', + 'flux': 'flux', + 'every': 'every', + 'cron': 'cron', + 'offset': 'offset', + 'latest_completed': 'latestCompleted', + 'last_run_status': 'lastRunStatus', + 'last_run_error': 'lastRunError', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'links': 'links' + } + + def __init__(self, id=None, org_id=None, org=None, name=None, owner_id=None, description=None, status=None, labels=None, authorization_id=None, flux=None, every=None, cron=None, offset=None, latest_completed=None, last_run_status=None, last_run_error=None, created_at=None, updated_at=None, links=None): # noqa: E501,D401,D403 + """Task - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._org_id = None + self._org = None + self._name = None + self._owner_id = None + self._description = None + self._status = None + self._labels = None + self._authorization_id = None + self._flux = None + self._every = None + self._cron = None + self._offset = None + self._latest_completed = None + self._last_run_status = None + self._last_run_error = None + self._created_at = None + self._updated_at = None + self._links = None + self.discriminator = None + + self.id = id + self.org_id = org_id + if org is not None: + self.org = org + self.name = name + if owner_id is not None: + self.owner_id = owner_id + if description is not None: + self.description = description + if status is not None: + self.status = status + if labels is not None: + self.labels = labels + if authorization_id is not None: + self.authorization_id = authorization_id + self.flux = flux + if every is not None: + self.every = every + if cron is not None: + self.cron = cron + if offset is not None: + self.offset = offset + if latest_completed is not None: + self.latest_completed = latest_completed + if last_run_status is not None: + self.last_run_status = last_run_status + if last_run_error is not None: + self.last_run_error = last_run_error + if created_at is not None: + self.created_at = created_at + if updated_at is not None: + self.updated_at = updated_at + if links is not None: + self.links = links + + @property + def id(self): + """Get the id of this Task. + + :return: The id of this Task. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this Task. + + :param id: The id of this Task. + :type: str + """ # noqa: E501 + if id is None: + raise ValueError("Invalid value for `id`, must not be `None`") # noqa: E501 + self._id = id + + @property + def org_id(self): + """Get the org_id of this Task. + + An [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) ID. Specifies the organization that owns the task. + + :return: The org_id of this Task. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this Task. + + An [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) ID. Specifies the organization that owns the task. + + :param org_id: The org_id of this Task. + :type: str + """ # noqa: E501 + if org_id is None: + raise ValueError("Invalid value for `org_id`, must not be `None`") # noqa: E501 + self._org_id = org_id + + @property + def org(self): + """Get the org of this Task. + + An [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) name. Specifies the organization that owns the task. + + :return: The org of this Task. + :rtype: str + """ # noqa: E501 + return self._org + + @org.setter + def org(self, org): + """Set the org of this Task. + + An [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) name. Specifies the organization that owns the task. + + :param org: The org of this Task. + :type: str + """ # noqa: E501 + self._org = org + + @property + def name(self): + """Get the name of this Task. + + The name of the task. + + :return: The name of this Task. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this Task. + + The name of the task. + + :param name: The name of this Task. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def owner_id(self): + """Get the owner_id of this Task. + + A [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) ID. Specifies the owner of the task. To find a user ID, you can use the [`GET /api/v2/users` endpoint](#operation/GetUsers) to list users. + + :return: The owner_id of this Task. + :rtype: str + """ # noqa: E501 + return self._owner_id + + @owner_id.setter + def owner_id(self, owner_id): + """Set the owner_id of this Task. + + A [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) ID. Specifies the owner of the task. To find a user ID, you can use the [`GET /api/v2/users` endpoint](#operation/GetUsers) to list users. + + :param owner_id: The owner_id of this Task. + :type: str + """ # noqa: E501 + self._owner_id = owner_id + + @property + def description(self): + """Get the description of this Task. + + A description of the task. + + :return: The description of this Task. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this Task. + + A description of the task. + + :param description: The description of this Task. + :type: str + """ # noqa: E501 + self._description = description + + @property + def status(self): + """Get the status of this Task. + + :return: The status of this Task. + :rtype: TaskStatusType + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this Task. + + :param status: The status of this Task. + :type: TaskStatusType + """ # noqa: E501 + self._status = status + + @property + def labels(self): + """Get the labels of this Task. + + :return: The labels of this Task. + :rtype: list[Label] + """ # noqa: E501 + return self._labels + + @labels.setter + def labels(self, labels): + """Set the labels of this Task. + + :param labels: The labels of this Task. + :type: list[Label] + """ # noqa: E501 + self._labels = labels + + @property + def authorization_id(self): + """Get the authorization_id of this Task. + + An authorization ID. Specifies the authorization used when the task communicates with the query engine. To find an authorization ID, use the [`GET /api/v2/authorizations` endpoint](#operation/GetAuthorizations) to list authorizations. + + :return: The authorization_id of this Task. + :rtype: str + """ # noqa: E501 + return self._authorization_id + + @authorization_id.setter + def authorization_id(self, authorization_id): + """Set the authorization_id of this Task. + + An authorization ID. Specifies the authorization used when the task communicates with the query engine. To find an authorization ID, use the [`GET /api/v2/authorizations` endpoint](#operation/GetAuthorizations) to list authorizations. + + :param authorization_id: The authorization_id of this Task. + :type: str + """ # noqa: E501 + self._authorization_id = authorization_id + + @property + def flux(self): + """Get the flux of this Task. + + The Flux script that the task executes. + + :return: The flux of this Task. + :rtype: str + """ # noqa: E501 + return self._flux + + @flux.setter + def flux(self, flux): + """Set the flux of this Task. + + The Flux script that the task executes. + + :param flux: The flux of this Task. + :type: str + """ # noqa: E501 + if flux is None: + raise ValueError("Invalid value for `flux`, must not be `None`") # noqa: E501 + self._flux = flux + + @property + def every(self): + """Get the every of this Task. + + The interval ([duration literal](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp)) at which the task runs. `every` also determines when the task first runs, depending on the specified time. + + :return: The every of this Task. + :rtype: str + """ # noqa: E501 + return self._every + + @every.setter + def every(self, every): + """Set the every of this Task. + + The interval ([duration literal](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp)) at which the task runs. `every` also determines when the task first runs, depending on the specified time. + + :param every: The every of this Task. + :type: str + """ # noqa: E501 + self._every = every + + @property + def cron(self): + """Get the cron of this Task. + + A [Cron expression](https://en.wikipedia.org/wiki/Cron#Overview) that defines the schedule on which the task runs. InfluxDB uses the system time when evaluating Cron expressions. + + :return: The cron of this Task. + :rtype: str + """ # noqa: E501 + return self._cron + + @cron.setter + def cron(self, cron): + """Set the cron of this Task. + + A [Cron expression](https://en.wikipedia.org/wiki/Cron#Overview) that defines the schedule on which the task runs. InfluxDB uses the system time when evaluating Cron expressions. + + :param cron: The cron of this Task. + :type: str + """ # noqa: E501 + self._cron = cron + + @property + def offset(self): + """Get the offset of this Task. + + A [duration](https://docs.influxdata.com/flux/v0.x/spec/lexical-elements/#duration-literals) to delay execution of the task after the scheduled time has elapsed. `0` removes the offset. + + :return: The offset of this Task. + :rtype: str + """ # noqa: E501 + return self._offset + + @offset.setter + def offset(self, offset): + """Set the offset of this Task. + + A [duration](https://docs.influxdata.com/flux/v0.x/spec/lexical-elements/#duration-literals) to delay execution of the task after the scheduled time has elapsed. `0` removes the offset. + + :param offset: The offset of this Task. + :type: str + """ # noqa: E501 + self._offset = offset + + @property + def latest_completed(self): + """Get the latest_completed of this Task. + + A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp)) of the latest scheduled and completed run. + + :return: The latest_completed of this Task. + :rtype: datetime + """ # noqa: E501 + return self._latest_completed + + @latest_completed.setter + def latest_completed(self, latest_completed): + """Set the latest_completed of this Task. + + A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp)) of the latest scheduled and completed run. + + :param latest_completed: The latest_completed of this Task. + :type: datetime + """ # noqa: E501 + self._latest_completed = latest_completed + + @property + def last_run_status(self): + """Get the last_run_status of this Task. + + :return: The last_run_status of this Task. + :rtype: str + """ # noqa: E501 + return self._last_run_status + + @last_run_status.setter + def last_run_status(self, last_run_status): + """Set the last_run_status of this Task. + + :param last_run_status: The last_run_status of this Task. + :type: str + """ # noqa: E501 + self._last_run_status = last_run_status + + @property + def last_run_error(self): + """Get the last_run_error of this Task. + + :return: The last_run_error of this Task. + :rtype: str + """ # noqa: E501 + return self._last_run_error + + @last_run_error.setter + def last_run_error(self, last_run_error): + """Set the last_run_error of this Task. + + :param last_run_error: The last_run_error of this Task. + :type: str + """ # noqa: E501 + self._last_run_error = last_run_error + + @property + def created_at(self): + """Get the created_at of this Task. + + :return: The created_at of this Task. + :rtype: datetime + """ # noqa: E501 + return self._created_at + + @created_at.setter + def created_at(self, created_at): + """Set the created_at of this Task. + + :param created_at: The created_at of this Task. + :type: datetime + """ # noqa: E501 + self._created_at = created_at + + @property + def updated_at(self): + """Get the updated_at of this Task. + + :return: The updated_at of this Task. + :rtype: datetime + """ # noqa: E501 + return self._updated_at + + @updated_at.setter + def updated_at(self, updated_at): + """Set the updated_at of this Task. + + :param updated_at: The updated_at of this Task. + :type: datetime + """ # noqa: E501 + self._updated_at = updated_at + + @property + def links(self): + """Get the links of this Task. + + :return: The links of this Task. + :rtype: TaskLinks + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Task. + + :param links: The links of this Task. + :type: TaskLinks + """ # noqa: E501 + self._links = links + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Task): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/task_create_request.py b/frogpilot/third_party/influxdb_client/domain/task_create_request.py new file mode 100644 index 000000000..462c008f5 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/task_create_request.py @@ -0,0 +1,216 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TaskCreateRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'org_id': 'str', + 'org': 'str', + 'status': 'TaskStatusType', + 'flux': 'str', + 'description': 'str' + } + + attribute_map = { + 'org_id': 'orgID', + 'org': 'org', + 'status': 'status', + 'flux': 'flux', + 'description': 'description' + } + + def __init__(self, org_id=None, org=None, status=None, flux=None, description=None): # noqa: E501,D401,D403 + """TaskCreateRequest - a model defined in OpenAPI.""" # noqa: E501 + self._org_id = None + self._org = None + self._status = None + self._flux = None + self._description = None + self.discriminator = None + + if org_id is not None: + self.org_id = org_id + if org is not None: + self.org = org + if status is not None: + self.status = status + self.flux = flux + if description is not None: + self.description = description + + @property + def org_id(self): + """Get the org_id of this TaskCreateRequest. + + The ID of the organization that owns this Task. + + :return: The org_id of this TaskCreateRequest. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this TaskCreateRequest. + + The ID of the organization that owns this Task. + + :param org_id: The org_id of this TaskCreateRequest. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def org(self): + """Get the org of this TaskCreateRequest. + + The name of the organization that owns this Task. + + :return: The org of this TaskCreateRequest. + :rtype: str + """ # noqa: E501 + return self._org + + @org.setter + def org(self, org): + """Set the org of this TaskCreateRequest. + + The name of the organization that owns this Task. + + :param org: The org of this TaskCreateRequest. + :type: str + """ # noqa: E501 + self._org = org + + @property + def status(self): + """Get the status of this TaskCreateRequest. + + :return: The status of this TaskCreateRequest. + :rtype: TaskStatusType + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this TaskCreateRequest. + + :param status: The status of this TaskCreateRequest. + :type: TaskStatusType + """ # noqa: E501 + self._status = status + + @property + def flux(self): + """Get the flux of this TaskCreateRequest. + + The Flux script to run for this task. + + :return: The flux of this TaskCreateRequest. + :rtype: str + """ # noqa: E501 + return self._flux + + @flux.setter + def flux(self, flux): + """Set the flux of this TaskCreateRequest. + + The Flux script to run for this task. + + :param flux: The flux of this TaskCreateRequest. + :type: str + """ # noqa: E501 + if flux is None: + raise ValueError("Invalid value for `flux`, must not be `None`") # noqa: E501 + self._flux = flux + + @property + def description(self): + """Get the description of this TaskCreateRequest. + + An optional description of the task. + + :return: The description of this TaskCreateRequest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this TaskCreateRequest. + + An optional description of the task. + + :param description: The description of this TaskCreateRequest. + :type: str + """ # noqa: E501 + self._description = description + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TaskCreateRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/task_links.py b/frogpilot/third_party/influxdb_client/domain/task_links.py new file mode 100644 index 000000000..86465f09e --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/task_links.py @@ -0,0 +1,246 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TaskLinks(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + '_self': 'str', + 'owners': 'str', + 'members': 'str', + 'runs': 'str', + 'logs': 'str', + 'labels': 'str' + } + + attribute_map = { + '_self': 'self', + 'owners': 'owners', + 'members': 'members', + 'runs': 'runs', + 'logs': 'logs', + 'labels': 'labels' + } + + def __init__(self, _self=None, owners=None, members=None, runs=None, logs=None, labels=None): # noqa: E501,D401,D403 + """TaskLinks - a model defined in OpenAPI.""" # noqa: E501 + self.__self = None + self._owners = None + self._members = None + self._runs = None + self._logs = None + self._labels = None + self.discriminator = None + + if _self is not None: + self._self = _self + if owners is not None: + self.owners = owners + if members is not None: + self.members = members + if runs is not None: + self.runs = runs + if logs is not None: + self.logs = logs + if labels is not None: + self.labels = labels + + @property + def _self(self): + """Get the _self of this TaskLinks. + + URI of resource. + + :return: The _self of this TaskLinks. + :rtype: str + """ # noqa: E501 + return self.__self + + @_self.setter + def _self(self, _self): + """Set the _self of this TaskLinks. + + URI of resource. + + :param _self: The _self of this TaskLinks. + :type: str + """ # noqa: E501 + self.__self = _self + + @property + def owners(self): + """Get the owners of this TaskLinks. + + URI of resource. + + :return: The owners of this TaskLinks. + :rtype: str + """ # noqa: E501 + return self._owners + + @owners.setter + def owners(self, owners): + """Set the owners of this TaskLinks. + + URI of resource. + + :param owners: The owners of this TaskLinks. + :type: str + """ # noqa: E501 + self._owners = owners + + @property + def members(self): + """Get the members of this TaskLinks. + + URI of resource. + + :return: The members of this TaskLinks. + :rtype: str + """ # noqa: E501 + return self._members + + @members.setter + def members(self, members): + """Set the members of this TaskLinks. + + URI of resource. + + :param members: The members of this TaskLinks. + :type: str + """ # noqa: E501 + self._members = members + + @property + def runs(self): + """Get the runs of this TaskLinks. + + URI of resource. + + :return: The runs of this TaskLinks. + :rtype: str + """ # noqa: E501 + return self._runs + + @runs.setter + def runs(self, runs): + """Set the runs of this TaskLinks. + + URI of resource. + + :param runs: The runs of this TaskLinks. + :type: str + """ # noqa: E501 + self._runs = runs + + @property + def logs(self): + """Get the logs of this TaskLinks. + + URI of resource. + + :return: The logs of this TaskLinks. + :rtype: str + """ # noqa: E501 + return self._logs + + @logs.setter + def logs(self, logs): + """Set the logs of this TaskLinks. + + URI of resource. + + :param logs: The logs of this TaskLinks. + :type: str + """ # noqa: E501 + self._logs = logs + + @property + def labels(self): + """Get the labels of this TaskLinks. + + URI of resource. + + :return: The labels of this TaskLinks. + :rtype: str + """ # noqa: E501 + return self._labels + + @labels.setter + def labels(self, labels): + """Set the labels of this TaskLinks. + + URI of resource. + + :param labels: The labels of this TaskLinks. + :type: str + """ # noqa: E501 + self._labels = labels + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TaskLinks): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/task_status_type.py b/frogpilot/third_party/influxdb_client/domain/task_status_type.py new file mode 100644 index 000000000..c775c39c0 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/task_status_type.py @@ -0,0 +1,88 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TaskStatusType(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + ACTIVE = "active" + INACTIVE = "inactive" + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """TaskStatusType - a model defined in OpenAPI.""" # noqa: E501 self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TaskStatusType): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/task_update_request.py b/frogpilot/third_party/influxdb_client/domain/task_update_request.py new file mode 100644 index 000000000..1755a43fc --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/task_update_request.py @@ -0,0 +1,269 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TaskUpdateRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'status': 'TaskStatusType', + 'flux': 'str', + 'name': 'str', + 'every': 'str', + 'cron': 'str', + 'offset': 'str', + 'description': 'str' + } + + attribute_map = { + 'status': 'status', + 'flux': 'flux', + 'name': 'name', + 'every': 'every', + 'cron': 'cron', + 'offset': 'offset', + 'description': 'description' + } + + def __init__(self, status=None, flux=None, name=None, every=None, cron=None, offset=None, description=None): # noqa: E501,D401,D403 + """TaskUpdateRequest - a model defined in OpenAPI.""" # noqa: E501 + self._status = None + self._flux = None + self._name = None + self._every = None + self._cron = None + self._offset = None + self._description = None + self.discriminator = None + + if status is not None: + self.status = status + if flux is not None: + self.flux = flux + if name is not None: + self.name = name + if every is not None: + self.every = every + if cron is not None: + self.cron = cron + if offset is not None: + self.offset = offset + if description is not None: + self.description = description + + @property + def status(self): + """Get the status of this TaskUpdateRequest. + + :return: The status of this TaskUpdateRequest. + :rtype: TaskStatusType + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this TaskUpdateRequest. + + :param status: The status of this TaskUpdateRequest. + :type: TaskStatusType + """ # noqa: E501 + self._status = status + + @property + def flux(self): + """Get the flux of this TaskUpdateRequest. + + The Flux script that the task runs. + + :return: The flux of this TaskUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._flux + + @flux.setter + def flux(self, flux): + """Set the flux of this TaskUpdateRequest. + + The Flux script that the task runs. + + :param flux: The flux of this TaskUpdateRequest. + :type: str + """ # noqa: E501 + self._flux = flux + + @property + def name(self): + """Get the name of this TaskUpdateRequest. + + Update the 'name' option in the flux script. + + :return: The name of this TaskUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this TaskUpdateRequest. + + Update the 'name' option in the flux script. + + :param name: The name of this TaskUpdateRequest. + :type: str + """ # noqa: E501 + self._name = name + + @property + def every(self): + """Get the every of this TaskUpdateRequest. + + Update the 'every' option in the flux script. + + :return: The every of this TaskUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._every + + @every.setter + def every(self, every): + """Set the every of this TaskUpdateRequest. + + Update the 'every' option in the flux script. + + :param every: The every of this TaskUpdateRequest. + :type: str + """ # noqa: E501 + self._every = every + + @property + def cron(self): + """Get the cron of this TaskUpdateRequest. + + Update the 'cron' option in the flux script. + + :return: The cron of this TaskUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._cron + + @cron.setter + def cron(self, cron): + """Set the cron of this TaskUpdateRequest. + + Update the 'cron' option in the flux script. + + :param cron: The cron of this TaskUpdateRequest. + :type: str + """ # noqa: E501 + self._cron = cron + + @property + def offset(self): + """Get the offset of this TaskUpdateRequest. + + Update the 'offset' option in the flux script. + + :return: The offset of this TaskUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._offset + + @offset.setter + def offset(self, offset): + """Set the offset of this TaskUpdateRequest. + + Update the 'offset' option in the flux script. + + :param offset: The offset of this TaskUpdateRequest. + :type: str + """ # noqa: E501 + self._offset = offset + + @property + def description(self): + """Get the description of this TaskUpdateRequest. + + Update the description of the task. + + :return: The description of this TaskUpdateRequest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this TaskUpdateRequest. + + Update the description of the task. + + :param description: The description of this TaskUpdateRequest. + :type: str + """ # noqa: E501 + self._description = description + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TaskUpdateRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/tasks.py b/frogpilot/third_party/influxdb_client/domain/tasks.py new file mode 100644 index 000000000..4174b04e2 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/tasks.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Tasks(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'links': 'Links', + 'tasks': 'list[Task]' + } + + attribute_map = { + 'links': 'links', + 'tasks': 'tasks' + } + + def __init__(self, links=None, tasks=None): # noqa: E501,D401,D403 + """Tasks - a model defined in OpenAPI.""" # noqa: E501 + self._links = None + self._tasks = None + self.discriminator = None + + if links is not None: + self.links = links + if tasks is not None: + self.tasks = tasks + + @property + def links(self): + """Get the links of this Tasks. + + :return: The links of this Tasks. + :rtype: Links + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Tasks. + + :param links: The links of this Tasks. + :type: Links + """ # noqa: E501 + self._links = links + + @property + def tasks(self): + """Get the tasks of this Tasks. + + :return: The tasks of this Tasks. + :rtype: list[Task] + """ # noqa: E501 + return self._tasks + + @tasks.setter + def tasks(self, tasks): + """Set the tasks of this Tasks. + + :param tasks: The tasks of this Tasks. + :type: list[Task] + """ # noqa: E501 + self._tasks = tasks + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Tasks): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/telegraf.py b/frogpilot/third_party/influxdb_client/domain/telegraf.py new file mode 100644 index 000000000..05e2a412b --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/telegraf.py @@ -0,0 +1,167 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.telegraf_request import TelegrafRequest + + +class Telegraf(TelegrafRequest): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'links': 'object', + 'labels': 'list[Label]', + 'name': 'str', + 'description': 'str', + 'metadata': 'TelegrafRequestMetadata', + 'config': 'str', + 'org_id': 'str' + } + + attribute_map = { + 'id': 'id', + 'links': 'links', + 'labels': 'labels', + 'name': 'name', + 'description': 'description', + 'metadata': 'metadata', + 'config': 'config', + 'org_id': 'orgID' + } + + def __init__(self, id=None, links=None, labels=None, name=None, description=None, metadata=None, config=None, org_id=None): # noqa: E501,D401,D403 + """Telegraf - a model defined in OpenAPI.""" # noqa: E501 + TelegrafRequest.__init__(self, name=name, description=description, metadata=metadata, config=config, org_id=org_id) # noqa: E501 + + self._id = None + self._links = None + self._labels = None + self.discriminator = None + + if id is not None: + self.id = id + if links is not None: + self.links = links + if labels is not None: + self.labels = labels + + @property + def id(self): + """Get the id of this Telegraf. + + :return: The id of this Telegraf. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this Telegraf. + + :param id: The id of this Telegraf. + :type: str + """ # noqa: E501 + self._id = id + + @property + def links(self): + """Get the links of this Telegraf. + + :return: The links of this Telegraf. + :rtype: object + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Telegraf. + + :param links: The links of this Telegraf. + :type: object + """ # noqa: E501 + self._links = links + + @property + def labels(self): + """Get the labels of this Telegraf. + + :return: The labels of this Telegraf. + :rtype: list[Label] + """ # noqa: E501 + return self._labels + + @labels.setter + def labels(self, labels): + """Set the labels of this Telegraf. + + :param labels: The labels of this Telegraf. + :type: list[Label] + """ # noqa: E501 + self._labels = labels + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Telegraf): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/telegraf_plugin.py b/frogpilot/third_party/influxdb_client/domain/telegraf_plugin.py new file mode 100644 index 000000000..a01c2ef71 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/telegraf_plugin.py @@ -0,0 +1,176 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TelegrafPlugin(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'name': 'str', + 'description': 'str', + 'config': 'dict(str, object)' + } + + attribute_map = { + 'type': 'type', + 'name': 'name', + 'description': 'description', + 'config': 'config' + } + + def __init__(self, type=None, name=None, description=None, config=None): # noqa: E501,D401,D403 + """TelegrafPlugin - a model defined in OpenAPI.""" # noqa: E501 + self._type = None + self._name = None + self._description = None + self._config = None + self.discriminator = None + + if type is not None: + self.type = type + if name is not None: + self.name = name + if description is not None: + self.description = description + if config is not None: + self.config = config + + @property + def type(self): + """Get the type of this TelegrafPlugin. + + :return: The type of this TelegrafPlugin. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this TelegrafPlugin. + + :param type: The type of this TelegrafPlugin. + :type: str + """ # noqa: E501 + self._type = type + + @property + def name(self): + """Get the name of this TelegrafPlugin. + + :return: The name of this TelegrafPlugin. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this TelegrafPlugin. + + :param name: The name of this TelegrafPlugin. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this TelegrafPlugin. + + :return: The description of this TelegrafPlugin. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this TelegrafPlugin. + + :param description: The description of this TelegrafPlugin. + :type: str + """ # noqa: E501 + self._description = description + + @property + def config(self): + """Get the config of this TelegrafPlugin. + + :return: The config of this TelegrafPlugin. + :rtype: dict(str, object) + """ # noqa: E501 + return self._config + + @config.setter + def config(self, config): + """Set the config of this TelegrafPlugin. + + :param config: The config of this TelegrafPlugin. + :type: dict(str, object) + """ # noqa: E501 + self._config = config + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TelegrafPlugin): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/telegraf_plugin_request.py b/frogpilot/third_party/influxdb_client/domain/telegraf_plugin_request.py new file mode 100644 index 000000000..79287c334 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/telegraf_plugin_request.py @@ -0,0 +1,222 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TelegrafPluginRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'description': 'str', + 'plugins': 'list[TelegrafPluginRequestPlugins]', + 'metadata': 'TelegrafRequestMetadata', + 'config': 'str', + 'org_id': 'str' + } + + attribute_map = { + 'name': 'name', + 'description': 'description', + 'plugins': 'plugins', + 'metadata': 'metadata', + 'config': 'config', + 'org_id': 'orgID' + } + + def __init__(self, name=None, description=None, plugins=None, metadata=None, config=None, org_id=None): # noqa: E501,D401,D403 + """TelegrafPluginRequest - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._description = None + self._plugins = None + self._metadata = None + self._config = None + self._org_id = None + self.discriminator = None + + if name is not None: + self.name = name + if description is not None: + self.description = description + if plugins is not None: + self.plugins = plugins + if metadata is not None: + self.metadata = metadata + if config is not None: + self.config = config + if org_id is not None: + self.org_id = org_id + + @property + def name(self): + """Get the name of this TelegrafPluginRequest. + + :return: The name of this TelegrafPluginRequest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this TelegrafPluginRequest. + + :param name: The name of this TelegrafPluginRequest. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this TelegrafPluginRequest. + + :return: The description of this TelegrafPluginRequest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this TelegrafPluginRequest. + + :param description: The description of this TelegrafPluginRequest. + :type: str + """ # noqa: E501 + self._description = description + + @property + def plugins(self): + """Get the plugins of this TelegrafPluginRequest. + + :return: The plugins of this TelegrafPluginRequest. + :rtype: list[TelegrafPluginRequestPlugins] + """ # noqa: E501 + return self._plugins + + @plugins.setter + def plugins(self, plugins): + """Set the plugins of this TelegrafPluginRequest. + + :param plugins: The plugins of this TelegrafPluginRequest. + :type: list[TelegrafPluginRequestPlugins] + """ # noqa: E501 + self._plugins = plugins + + @property + def metadata(self): + """Get the metadata of this TelegrafPluginRequest. + + :return: The metadata of this TelegrafPluginRequest. + :rtype: TelegrafRequestMetadata + """ # noqa: E501 + return self._metadata + + @metadata.setter + def metadata(self, metadata): + """Set the metadata of this TelegrafPluginRequest. + + :param metadata: The metadata of this TelegrafPluginRequest. + :type: TelegrafRequestMetadata + """ # noqa: E501 + self._metadata = metadata + + @property + def config(self): + """Get the config of this TelegrafPluginRequest. + + :return: The config of this TelegrafPluginRequest. + :rtype: str + """ # noqa: E501 + return self._config + + @config.setter + def config(self, config): + """Set the config of this TelegrafPluginRequest. + + :param config: The config of this TelegrafPluginRequest. + :type: str + """ # noqa: E501 + self._config = config + + @property + def org_id(self): + """Get the org_id of this TelegrafPluginRequest. + + :return: The org_id of this TelegrafPluginRequest. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this TelegrafPluginRequest. + + :param org_id: The org_id of this TelegrafPluginRequest. + :type: str + """ # noqa: E501 + self._org_id = org_id + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TelegrafPluginRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/telegraf_plugin_request_plugins.py b/frogpilot/third_party/influxdb_client/domain/telegraf_plugin_request_plugins.py new file mode 100644 index 000000000..1ccf0dbf8 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/telegraf_plugin_request_plugins.py @@ -0,0 +1,199 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TelegrafPluginRequestPlugins(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'name': 'str', + 'alias': 'str', + 'description': 'str', + 'config': 'dict(str, object)' + } + + attribute_map = { + 'type': 'type', + 'name': 'name', + 'alias': 'alias', + 'description': 'description', + 'config': 'config' + } + + def __init__(self, type=None, name=None, alias=None, description=None, config=None): # noqa: E501,D401,D403 + """TelegrafPluginRequestPlugins - a model defined in OpenAPI.""" # noqa: E501 + self._type = None + self._name = None + self._alias = None + self._description = None + self._config = None + self.discriminator = None + + if type is not None: + self.type = type + if name is not None: + self.name = name + if alias is not None: + self.alias = alias + if description is not None: + self.description = description + if config is not None: + self.config = config + + @property + def type(self): + """Get the type of this TelegrafPluginRequestPlugins. + + :return: The type of this TelegrafPluginRequestPlugins. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this TelegrafPluginRequestPlugins. + + :param type: The type of this TelegrafPluginRequestPlugins. + :type: str + """ # noqa: E501 + self._type = type + + @property + def name(self): + """Get the name of this TelegrafPluginRequestPlugins. + + :return: The name of this TelegrafPluginRequestPlugins. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this TelegrafPluginRequestPlugins. + + :param name: The name of this TelegrafPluginRequestPlugins. + :type: str + """ # noqa: E501 + self._name = name + + @property + def alias(self): + """Get the alias of this TelegrafPluginRequestPlugins. + + :return: The alias of this TelegrafPluginRequestPlugins. + :rtype: str + """ # noqa: E501 + return self._alias + + @alias.setter + def alias(self, alias): + """Set the alias of this TelegrafPluginRequestPlugins. + + :param alias: The alias of this TelegrafPluginRequestPlugins. + :type: str + """ # noqa: E501 + self._alias = alias + + @property + def description(self): + """Get the description of this TelegrafPluginRequestPlugins. + + :return: The description of this TelegrafPluginRequestPlugins. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this TelegrafPluginRequestPlugins. + + :param description: The description of this TelegrafPluginRequestPlugins. + :type: str + """ # noqa: E501 + self._description = description + + @property + def config(self): + """Get the config of this TelegrafPluginRequestPlugins. + + :return: The config of this TelegrafPluginRequestPlugins. + :rtype: dict(str, object) + """ # noqa: E501 + return self._config + + @config.setter + def config(self, config): + """Set the config of this TelegrafPluginRequestPlugins. + + :param config: The config of this TelegrafPluginRequestPlugins. + :type: dict(str, object) + """ # noqa: E501 + self._config = config + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TelegrafPluginRequestPlugins): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/telegraf_plugins.py b/frogpilot/third_party/influxdb_client/domain/telegraf_plugins.py new file mode 100644 index 000000000..80a1842eb --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/telegraf_plugins.py @@ -0,0 +1,153 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TelegrafPlugins(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'version': 'str', + 'os': 'str', + 'plugins': 'list[TelegrafPlugin]' + } + + attribute_map = { + 'version': 'version', + 'os': 'os', + 'plugins': 'plugins' + } + + def __init__(self, version=None, os=None, plugins=None): # noqa: E501,D401,D403 + """TelegrafPlugins - a model defined in OpenAPI.""" # noqa: E501 + self._version = None + self._os = None + self._plugins = None + self.discriminator = None + + if version is not None: + self.version = version + if os is not None: + self.os = os + if plugins is not None: + self.plugins = plugins + + @property + def version(self): + """Get the version of this TelegrafPlugins. + + :return: The version of this TelegrafPlugins. + :rtype: str + """ # noqa: E501 + return self._version + + @version.setter + def version(self, version): + """Set the version of this TelegrafPlugins. + + :param version: The version of this TelegrafPlugins. + :type: str + """ # noqa: E501 + self._version = version + + @property + def os(self): + """Get the os of this TelegrafPlugins. + + :return: The os of this TelegrafPlugins. + :rtype: str + """ # noqa: E501 + return self._os + + @os.setter + def os(self, os): + """Set the os of this TelegrafPlugins. + + :param os: The os of this TelegrafPlugins. + :type: str + """ # noqa: E501 + self._os = os + + @property + def plugins(self): + """Get the plugins of this TelegrafPlugins. + + :return: The plugins of this TelegrafPlugins. + :rtype: list[TelegrafPlugin] + """ # noqa: E501 + return self._plugins + + @plugins.setter + def plugins(self, plugins): + """Set the plugins of this TelegrafPlugins. + + :param plugins: The plugins of this TelegrafPlugins. + :type: list[TelegrafPlugin] + """ # noqa: E501 + self._plugins = plugins + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TelegrafPlugins): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/telegraf_request.py b/frogpilot/third_party/influxdb_client/domain/telegraf_request.py new file mode 100644 index 000000000..898deb88e --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/telegraf_request.py @@ -0,0 +1,199 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TelegrafRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'description': 'str', + 'metadata': 'TelegrafRequestMetadata', + 'config': 'str', + 'org_id': 'str' + } + + attribute_map = { + 'name': 'name', + 'description': 'description', + 'metadata': 'metadata', + 'config': 'config', + 'org_id': 'orgID' + } + + def __init__(self, name=None, description=None, metadata=None, config=None, org_id=None): # noqa: E501,D401,D403 + """TelegrafRequest - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._description = None + self._metadata = None + self._config = None + self._org_id = None + self.discriminator = None + + if name is not None: + self.name = name + if description is not None: + self.description = description + if metadata is not None: + self.metadata = metadata + if config is not None: + self.config = config + if org_id is not None: + self.org_id = org_id + + @property + def name(self): + """Get the name of this TelegrafRequest. + + :return: The name of this TelegrafRequest. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this TelegrafRequest. + + :param name: The name of this TelegrafRequest. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this TelegrafRequest. + + :return: The description of this TelegrafRequest. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this TelegrafRequest. + + :param description: The description of this TelegrafRequest. + :type: str + """ # noqa: E501 + self._description = description + + @property + def metadata(self): + """Get the metadata of this TelegrafRequest. + + :return: The metadata of this TelegrafRequest. + :rtype: TelegrafRequestMetadata + """ # noqa: E501 + return self._metadata + + @metadata.setter + def metadata(self, metadata): + """Set the metadata of this TelegrafRequest. + + :param metadata: The metadata of this TelegrafRequest. + :type: TelegrafRequestMetadata + """ # noqa: E501 + self._metadata = metadata + + @property + def config(self): + """Get the config of this TelegrafRequest. + + :return: The config of this TelegrafRequest. + :rtype: str + """ # noqa: E501 + return self._config + + @config.setter + def config(self, config): + """Set the config of this TelegrafRequest. + + :param config: The config of this TelegrafRequest. + :type: str + """ # noqa: E501 + self._config = config + + @property + def org_id(self): + """Get the org_id of this TelegrafRequest. + + :return: The org_id of this TelegrafRequest. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this TelegrafRequest. + + :param org_id: The org_id of this TelegrafRequest. + :type: str + """ # noqa: E501 + self._org_id = org_id + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TelegrafRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/telegraf_request_metadata.py b/frogpilot/third_party/influxdb_client/domain/telegraf_request_metadata.py new file mode 100644 index 000000000..e7a9f813d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/telegraf_request_metadata.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TelegrafRequestMetadata(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'buckets': 'list[str]' + } + + attribute_map = { + 'buckets': 'buckets' + } + + def __init__(self, buckets=None): # noqa: E501,D401,D403 + """TelegrafRequestMetadata - a model defined in OpenAPI.""" # noqa: E501 + self._buckets = None + self.discriminator = None + + if buckets is not None: + self.buckets = buckets + + @property + def buckets(self): + """Get the buckets of this TelegrafRequestMetadata. + + :return: The buckets of this TelegrafRequestMetadata. + :rtype: list[str] + """ # noqa: E501 + return self._buckets + + @buckets.setter + def buckets(self, buckets): + """Set the buckets of this TelegrafRequestMetadata. + + :param buckets: The buckets of this TelegrafRequestMetadata. + :type: list[str] + """ # noqa: E501 + self._buckets = buckets + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TelegrafRequestMetadata): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/telegrafs.py b/frogpilot/third_party/influxdb_client/domain/telegrafs.py new file mode 100644 index 000000000..17d7760e0 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/telegrafs.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Telegrafs(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'configurations': 'list[Telegraf]' + } + + attribute_map = { + 'configurations': 'configurations' + } + + def __init__(self, configurations=None): # noqa: E501,D401,D403 + """Telegrafs - a model defined in OpenAPI.""" # noqa: E501 + self._configurations = None + self.discriminator = None + + if configurations is not None: + self.configurations = configurations + + @property + def configurations(self): + """Get the configurations of this Telegrafs. + + :return: The configurations of this Telegrafs. + :rtype: list[Telegraf] + """ # noqa: E501 + return self._configurations + + @configurations.setter + def configurations(self, configurations): + """Set the configurations of this Telegrafs. + + :param configurations: The configurations of this Telegrafs. + :type: list[Telegraf] + """ # noqa: E501 + self._configurations = configurations + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Telegrafs): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/telegram_notification_endpoint.py b/frogpilot/third_party/influxdb_client/domain/telegram_notification_endpoint.py new file mode 100644 index 000000000..44c22dff4 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/telegram_notification_endpoint.py @@ -0,0 +1,166 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.notification_endpoint_discriminator import NotificationEndpointDiscriminator + + +class TelegramNotificationEndpoint(NotificationEndpointDiscriminator): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'token': 'str', + 'channel': 'str', + 'id': 'str', + 'org_id': 'str', + 'user_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'description': 'str', + 'name': 'str', + 'status': 'str', + 'labels': 'list[Label]', + 'links': 'NotificationEndpointBaseLinks', + 'type': 'NotificationEndpointType' + } + + attribute_map = { + 'token': 'token', + 'channel': 'channel', + 'id': 'id', + 'org_id': 'orgID', + 'user_id': 'userID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'description': 'description', + 'name': 'name', + 'status': 'status', + 'labels': 'labels', + 'links': 'links', + 'type': 'type' + } + + def __init__(self, token=None, channel=None, id=None, org_id=None, user_id=None, created_at=None, updated_at=None, description=None, name=None, status='active', labels=None, links=None, type="telegram"): # noqa: E501,D401,D403 + """TelegramNotificationEndpoint - a model defined in OpenAPI.""" # noqa: E501 + NotificationEndpointDiscriminator.__init__(self, id=id, org_id=org_id, user_id=user_id, created_at=created_at, updated_at=updated_at, description=description, name=name, status=status, labels=labels, links=links, type=type) # noqa: E501 + + self._token = None + self._channel = None + self.discriminator = None + + self.token = token + self.channel = channel + + @property + def token(self): + """Get the token of this TelegramNotificationEndpoint. + + Specifies the Telegram bot token. See https://core.telegram.org/bots#creating-a-new-bot . + + :return: The token of this TelegramNotificationEndpoint. + :rtype: str + """ # noqa: E501 + return self._token + + @token.setter + def token(self, token): + """Set the token of this TelegramNotificationEndpoint. + + Specifies the Telegram bot token. See https://core.telegram.org/bots#creating-a-new-bot . + + :param token: The token of this TelegramNotificationEndpoint. + :type: str + """ # noqa: E501 + if token is None: + raise ValueError("Invalid value for `token`, must not be `None`") # noqa: E501 + self._token = token + + @property + def channel(self): + """Get the channel of this TelegramNotificationEndpoint. + + The ID of the telegram channel; a chat_id in https://core.telegram.org/bots/api#sendmessage . + + :return: The channel of this TelegramNotificationEndpoint. + :rtype: str + """ # noqa: E501 + return self._channel + + @channel.setter + def channel(self, channel): + """Set the channel of this TelegramNotificationEndpoint. + + The ID of the telegram channel; a chat_id in https://core.telegram.org/bots/api#sendmessage . + + :param channel: The channel of this TelegramNotificationEndpoint. + :type: str + """ # noqa: E501 + if channel is None: + raise ValueError("Invalid value for `channel`, must not be `None`") # noqa: E501 + self._channel = channel + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TelegramNotificationEndpoint): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/telegram_notification_rule.py b/frogpilot/third_party/influxdb_client/domain/telegram_notification_rule.py new file mode 100644 index 000000000..2238909cb --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/telegram_notification_rule.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.telegram_notification_rule_base import TelegramNotificationRuleBase + + +class TelegramNotificationRule(TelegramNotificationRuleBase): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'message_template': 'str', + 'parse_mode': 'str', + 'disable_web_page_preview': 'bool', + 'latest_completed': 'datetime', + 'last_run_status': 'str', + 'last_run_error': 'str', + 'id': 'str', + 'endpoint_id': 'str', + 'org_id': 'str', + 'task_id': 'str', + 'owner_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'status': 'TaskStatusType', + 'name': 'str', + 'sleep_until': 'str', + 'every': 'str', + 'offset': 'str', + 'runbook_link': 'str', + 'limit_every': 'int', + 'limit': 'int', + 'tag_rules': 'list[TagRule]', + 'description': 'str', + 'status_rules': 'list[StatusRule]', + 'labels': 'list[Label]', + 'links': 'NotificationRuleBaseLinks' + } + + attribute_map = { + 'type': 'type', + 'message_template': 'messageTemplate', + 'parse_mode': 'parseMode', + 'disable_web_page_preview': 'disableWebPagePreview', + 'latest_completed': 'latestCompleted', + 'last_run_status': 'lastRunStatus', + 'last_run_error': 'lastRunError', + 'id': 'id', + 'endpoint_id': 'endpointID', + 'org_id': 'orgID', + 'task_id': 'taskID', + 'owner_id': 'ownerID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'status': 'status', + 'name': 'name', + 'sleep_until': 'sleepUntil', + 'every': 'every', + 'offset': 'offset', + 'runbook_link': 'runbookLink', + 'limit_every': 'limitEvery', + 'limit': 'limit', + 'tag_rules': 'tagRules', + 'description': 'description', + 'status_rules': 'statusRules', + 'labels': 'labels', + 'links': 'links' + } + + def __init__(self, type="telegram", message_template=None, parse_mode=None, disable_web_page_preview=None, latest_completed=None, last_run_status=None, last_run_error=None, id=None, endpoint_id=None, org_id=None, task_id=None, owner_id=None, created_at=None, updated_at=None, status=None, name=None, sleep_until=None, every=None, offset=None, runbook_link=None, limit_every=None, limit=None, tag_rules=None, description=None, status_rules=None, labels=None, links=None): # noqa: E501,D401,D403 + """TelegramNotificationRule - a model defined in OpenAPI.""" # noqa: E501 + TelegramNotificationRuleBase.__init__(self, type=type, message_template=message_template, parse_mode=parse_mode, disable_web_page_preview=disable_web_page_preview, latest_completed=latest_completed, last_run_status=last_run_status, last_run_error=last_run_error, id=id, endpoint_id=endpoint_id, org_id=org_id, task_id=task_id, owner_id=owner_id, created_at=created_at, updated_at=updated_at, status=status, name=name, sleep_until=sleep_until, every=every, offset=offset, runbook_link=runbook_link, limit_every=limit_every, limit=limit, tag_rules=tag_rules, description=description, status_rules=status_rules, labels=labels, links=links) # noqa: E501 + self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TelegramNotificationRule): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/telegram_notification_rule_base.py b/frogpilot/third_party/influxdb_client/domain/telegram_notification_rule_base.py new file mode 100644 index 000000000..8d3aeb1b3 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/telegram_notification_rule_base.py @@ -0,0 +1,244 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.notification_rule_discriminator import NotificationRuleDiscriminator + + +class TelegramNotificationRuleBase(NotificationRuleDiscriminator): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'message_template': 'str', + 'parse_mode': 'str', + 'disable_web_page_preview': 'bool', + 'latest_completed': 'datetime', + 'last_run_status': 'str', + 'last_run_error': 'str', + 'id': 'str', + 'endpoint_id': 'str', + 'org_id': 'str', + 'task_id': 'str', + 'owner_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'status': 'TaskStatusType', + 'name': 'str', + 'sleep_until': 'str', + 'every': 'str', + 'offset': 'str', + 'runbook_link': 'str', + 'limit_every': 'int', + 'limit': 'int', + 'tag_rules': 'list[TagRule]', + 'description': 'str', + 'status_rules': 'list[StatusRule]', + 'labels': 'list[Label]', + 'links': 'NotificationRuleBaseLinks' + } + + attribute_map = { + 'type': 'type', + 'message_template': 'messageTemplate', + 'parse_mode': 'parseMode', + 'disable_web_page_preview': 'disableWebPagePreview', + 'latest_completed': 'latestCompleted', + 'last_run_status': 'lastRunStatus', + 'last_run_error': 'lastRunError', + 'id': 'id', + 'endpoint_id': 'endpointID', + 'org_id': 'orgID', + 'task_id': 'taskID', + 'owner_id': 'ownerID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'status': 'status', + 'name': 'name', + 'sleep_until': 'sleepUntil', + 'every': 'every', + 'offset': 'offset', + 'runbook_link': 'runbookLink', + 'limit_every': 'limitEvery', + 'limit': 'limit', + 'tag_rules': 'tagRules', + 'description': 'description', + 'status_rules': 'statusRules', + 'labels': 'labels', + 'links': 'links' + } + + def __init__(self, type=None, message_template=None, parse_mode=None, disable_web_page_preview=None, latest_completed=None, last_run_status=None, last_run_error=None, id=None, endpoint_id=None, org_id=None, task_id=None, owner_id=None, created_at=None, updated_at=None, status=None, name=None, sleep_until=None, every=None, offset=None, runbook_link=None, limit_every=None, limit=None, tag_rules=None, description=None, status_rules=None, labels=None, links=None): # noqa: E501,D401,D403 + """TelegramNotificationRuleBase - a model defined in OpenAPI.""" # noqa: E501 + NotificationRuleDiscriminator.__init__(self, latest_completed=latest_completed, last_run_status=last_run_status, last_run_error=last_run_error, id=id, endpoint_id=endpoint_id, org_id=org_id, task_id=task_id, owner_id=owner_id, created_at=created_at, updated_at=updated_at, status=status, name=name, sleep_until=sleep_until, every=every, offset=offset, runbook_link=runbook_link, limit_every=limit_every, limit=limit, tag_rules=tag_rules, description=description, status_rules=status_rules, labels=labels, links=links) # noqa: E501 + + self._type = None + self._message_template = None + self._parse_mode = None + self._disable_web_page_preview = None + self.discriminator = None + + self.type = type + self.message_template = message_template + if parse_mode is not None: + self.parse_mode = parse_mode + if disable_web_page_preview is not None: + self.disable_web_page_preview = disable_web_page_preview + + @property + def type(self): + """Get the type of this TelegramNotificationRuleBase. + + The discriminator between other types of notification rules is "telegram". + + :return: The type of this TelegramNotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this TelegramNotificationRuleBase. + + The discriminator between other types of notification rules is "telegram". + + :param type: The type of this TelegramNotificationRuleBase. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def message_template(self): + """Get the message_template of this TelegramNotificationRuleBase. + + The message template as a flux interpolated string. + + :return: The message_template of this TelegramNotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._message_template + + @message_template.setter + def message_template(self, message_template): + """Set the message_template of this TelegramNotificationRuleBase. + + The message template as a flux interpolated string. + + :param message_template: The message_template of this TelegramNotificationRuleBase. + :type: str + """ # noqa: E501 + if message_template is None: + raise ValueError("Invalid value for `message_template`, must not be `None`") # noqa: E501 + self._message_template = message_template + + @property + def parse_mode(self): + """Get the parse_mode of this TelegramNotificationRuleBase. + + Parse mode of the message text per https://core.telegram.org/bots/api#formatting-options. Defaults to "MarkdownV2". + + :return: The parse_mode of this TelegramNotificationRuleBase. + :rtype: str + """ # noqa: E501 + return self._parse_mode + + @parse_mode.setter + def parse_mode(self, parse_mode): + """Set the parse_mode of this TelegramNotificationRuleBase. + + Parse mode of the message text per https://core.telegram.org/bots/api#formatting-options. Defaults to "MarkdownV2". + + :param parse_mode: The parse_mode of this TelegramNotificationRuleBase. + :type: str + """ # noqa: E501 + self._parse_mode = parse_mode + + @property + def disable_web_page_preview(self): + """Get the disable_web_page_preview of this TelegramNotificationRuleBase. + + Disables preview of web links in the sent messages when "true". Defaults to "false". + + :return: The disable_web_page_preview of this TelegramNotificationRuleBase. + :rtype: bool + """ # noqa: E501 + return self._disable_web_page_preview + + @disable_web_page_preview.setter + def disable_web_page_preview(self, disable_web_page_preview): + """Set the disable_web_page_preview of this TelegramNotificationRuleBase. + + Disables preview of web links in the sent messages when "true". Defaults to "false". + + :param disable_web_page_preview: The disable_web_page_preview of this TelegramNotificationRuleBase. + :type: bool + """ # noqa: E501 + self._disable_web_page_preview = disable_web_page_preview + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TelegramNotificationRuleBase): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_apply.py b/frogpilot/third_party/influxdb_client/domain/template_apply.py new file mode 100644 index 000000000..6f8d5e404 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_apply.py @@ -0,0 +1,323 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateApply(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'dry_run': 'bool', + 'org_id': 'str', + 'stack_id': 'str', + 'template': 'TemplateApplyTemplate', + 'templates': 'list[TemplateApplyTemplate]', + 'env_refs': 'dict(str, object)', + 'secrets': 'dict(str, str)', + 'remotes': 'list[TemplateApplyRemotes]', + 'actions': 'list[object]' + } + + attribute_map = { + 'dry_run': 'dryRun', + 'org_id': 'orgID', + 'stack_id': 'stackID', + 'template': 'template', + 'templates': 'templates', + 'env_refs': 'envRefs', + 'secrets': 'secrets', + 'remotes': 'remotes', + 'actions': 'actions' + } + + def __init__(self, dry_run=None, org_id=None, stack_id=None, template=None, templates=None, env_refs=None, secrets=None, remotes=None, actions=None): # noqa: E501,D401,D403 + """TemplateApply - a model defined in OpenAPI.""" # noqa: E501 + self._dry_run = None + self._org_id = None + self._stack_id = None + self._template = None + self._templates = None + self._env_refs = None + self._secrets = None + self._remotes = None + self._actions = None + self.discriminator = None + + if dry_run is not None: + self.dry_run = dry_run + if org_id is not None: + self.org_id = org_id + if stack_id is not None: + self.stack_id = stack_id + if template is not None: + self.template = template + if templates is not None: + self.templates = templates + if env_refs is not None: + self.env_refs = env_refs + if secrets is not None: + self.secrets = secrets + if remotes is not None: + self.remotes = remotes + if actions is not None: + self.actions = actions + + @property + def dry_run(self): + """Get the dry_run of this TemplateApply. + + Only applies a dry run of the templates passed in the request. - Validates the template and generates a resource diff and summary. - Doesn't install templates or make changes to the InfluxDB instance. + + :return: The dry_run of this TemplateApply. + :rtype: bool + """ # noqa: E501 + return self._dry_run + + @dry_run.setter + def dry_run(self, dry_run): + """Set the dry_run of this TemplateApply. + + Only applies a dry run of the templates passed in the request. - Validates the template and generates a resource diff and summary. - Doesn't install templates or make changes to the InfluxDB instance. + + :param dry_run: The dry_run of this TemplateApply. + :type: bool + """ # noqa: E501 + self._dry_run = dry_run + + @property + def org_id(self): + """Get the org_id of this TemplateApply. + + Organization ID. InfluxDB applies templates to this organization. The organization owns all resources created by the template. To find your organization, see how to [view organizations](https://docs.influxdata.com/influxdb/latest/organizations/view-orgs/). + + :return: The org_id of this TemplateApply. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this TemplateApply. + + Organization ID. InfluxDB applies templates to this organization. The organization owns all resources created by the template. To find your organization, see how to [view organizations](https://docs.influxdata.com/influxdb/latest/organizations/view-orgs/). + + :param org_id: The org_id of this TemplateApply. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def stack_id(self): + """Get the stack_id of this TemplateApply. + + ID of the stack to update. To apply templates to an existing stack in the organization, use the `stackID` parameter. If you apply templates without providing a stack ID, InfluxDB initializes a new stack with all new resources. To find a stack ID, use the InfluxDB [`/api/v2/stacks` API endpoint](#operation/ListStacks) to list stacks. #### Related guides - [Stacks](https://docs.influxdata.com/influxdb/latest/influxdb-templates/stacks/) - [View stacks](https://docs.influxdata.com/influxdb/latest/influxdb-templates/stacks/view/) + + :return: The stack_id of this TemplateApply. + :rtype: str + """ # noqa: E501 + return self._stack_id + + @stack_id.setter + def stack_id(self, stack_id): + """Set the stack_id of this TemplateApply. + + ID of the stack to update. To apply templates to an existing stack in the organization, use the `stackID` parameter. If you apply templates without providing a stack ID, InfluxDB initializes a new stack with all new resources. To find a stack ID, use the InfluxDB [`/api/v2/stacks` API endpoint](#operation/ListStacks) to list stacks. #### Related guides - [Stacks](https://docs.influxdata.com/influxdb/latest/influxdb-templates/stacks/) - [View stacks](https://docs.influxdata.com/influxdb/latest/influxdb-templates/stacks/view/) + + :param stack_id: The stack_id of this TemplateApply. + :type: str + """ # noqa: E501 + self._stack_id = stack_id + + @property + def template(self): + """Get the template of this TemplateApply. + + :return: The template of this TemplateApply. + :rtype: TemplateApplyTemplate + """ # noqa: E501 + return self._template + + @template.setter + def template(self, template): + """Set the template of this TemplateApply. + + :param template: The template of this TemplateApply. + :type: TemplateApplyTemplate + """ # noqa: E501 + self._template = template + + @property + def templates(self): + """Get the templates of this TemplateApply. + + A list of template objects to apply. A template object has a `contents` property with an array of InfluxDB resource configurations. Use the `templates` parameter to apply multiple template objects. If you use `templates`, you can't use the `template` parameter. + + :return: The templates of this TemplateApply. + :rtype: list[TemplateApplyTemplate] + """ # noqa: E501 + return self._templates + + @templates.setter + def templates(self, templates): + """Set the templates of this TemplateApply. + + A list of template objects to apply. A template object has a `contents` property with an array of InfluxDB resource configurations. Use the `templates` parameter to apply multiple template objects. If you use `templates`, you can't use the `template` parameter. + + :param templates: The templates of this TemplateApply. + :type: list[TemplateApplyTemplate] + """ # noqa: E501 + self._templates = templates + + @property + def env_refs(self): + """Get the env_refs of this TemplateApply. + + An object with key-value pairs that map to **environment references** in templates. Environment references in templates are `envRef` objects with an `envRef.key` property. To substitute a custom environment reference value when applying templates, pass `envRefs` with the `envRef.key` and the value. When you apply a template, InfluxDB replaces `envRef` objects in the template with the values that you provide in the `envRefs` parameter. For more examples, see how to [define environment references](https://docs.influxdata.com/influxdb/latest/influxdb-templates/use/#define-environment-references). The following template fields may use environment references: - `metadata.name` - `spec.endpointName` - `spec.associations.name` For more information about including environment references in template fields, see how to [include user-definable resource names](https://docs.influxdata.com/influxdb/latest/influxdb-templates/create/#include-user-definable-resource-names). + + :return: The env_refs of this TemplateApply. + :rtype: dict(str, object) + """ # noqa: E501 + return self._env_refs + + @env_refs.setter + def env_refs(self, env_refs): + """Set the env_refs of this TemplateApply. + + An object with key-value pairs that map to **environment references** in templates. Environment references in templates are `envRef` objects with an `envRef.key` property. To substitute a custom environment reference value when applying templates, pass `envRefs` with the `envRef.key` and the value. When you apply a template, InfluxDB replaces `envRef` objects in the template with the values that you provide in the `envRefs` parameter. For more examples, see how to [define environment references](https://docs.influxdata.com/influxdb/latest/influxdb-templates/use/#define-environment-references). The following template fields may use environment references: - `metadata.name` - `spec.endpointName` - `spec.associations.name` For more information about including environment references in template fields, see how to [include user-definable resource names](https://docs.influxdata.com/influxdb/latest/influxdb-templates/create/#include-user-definable-resource-names). + + :param env_refs: The env_refs of this TemplateApply. + :type: dict(str, object) + """ # noqa: E501 + self._env_refs = env_refs + + @property + def secrets(self): + """Get the secrets of this TemplateApply. + + An object with key-value pairs that map to **secrets** in queries. Queries may reference secrets stored in InfluxDB--for example, the following Flux script retrieves `POSTGRES_USERNAME` and `POSTGRES_PASSWORD` secrets and then uses them to connect to a PostgreSQL database: ```js import "sql" import "influxdata/influxdb/secrets" username = secrets.get(key: "POSTGRES_USERNAME") password = secrets.get(key: "POSTGRES_PASSWORD") sql.from( driverName: "postgres", dataSourceName: "postgresql://${username}:${password}@localhost:5432", query: "SELECT * FROM example_table", ) ``` To define secret values in your `/api/v2/templates/apply` request, pass the `secrets` parameter with key-value pairs--for example: ```json { ... "secrets": { "POSTGRES_USERNAME": "pguser", "POSTGRES_PASSWORD": "foo" } ... } ``` InfluxDB stores the key-value pairs as secrets that you can access with `secrets.get()`. Once stored, you can't view secret values in InfluxDB. #### Related guides - [How to pass secrets when installing a template](https://docs.influxdata.com/influxdb/latest/influxdb-templates/use/#pass-secrets-when-installing-a-template) + + :return: The secrets of this TemplateApply. + :rtype: dict(str, str) + """ # noqa: E501 + return self._secrets + + @secrets.setter + def secrets(self, secrets): + """Set the secrets of this TemplateApply. + + An object with key-value pairs that map to **secrets** in queries. Queries may reference secrets stored in InfluxDB--for example, the following Flux script retrieves `POSTGRES_USERNAME` and `POSTGRES_PASSWORD` secrets and then uses them to connect to a PostgreSQL database: ```js import "sql" import "influxdata/influxdb/secrets" username = secrets.get(key: "POSTGRES_USERNAME") password = secrets.get(key: "POSTGRES_PASSWORD") sql.from( driverName: "postgres", dataSourceName: "postgresql://${username}:${password}@localhost:5432", query: "SELECT * FROM example_table", ) ``` To define secret values in your `/api/v2/templates/apply` request, pass the `secrets` parameter with key-value pairs--for example: ```json { ... "secrets": { "POSTGRES_USERNAME": "pguser", "POSTGRES_PASSWORD": "foo" } ... } ``` InfluxDB stores the key-value pairs as secrets that you can access with `secrets.get()`. Once stored, you can't view secret values in InfluxDB. #### Related guides - [How to pass secrets when installing a template](https://docs.influxdata.com/influxdb/latest/influxdb-templates/use/#pass-secrets-when-installing-a-template) + + :param secrets: The secrets of this TemplateApply. + :type: dict(str, str) + """ # noqa: E501 + self._secrets = secrets + + @property + def remotes(self): + """Get the remotes of this TemplateApply. + + A list of URLs for template files. To apply a template manifest file located at a URL, pass `remotes` with an array that contains the URL. + + :return: The remotes of this TemplateApply. + :rtype: list[TemplateApplyRemotes] + """ # noqa: E501 + return self._remotes + + @remotes.setter + def remotes(self, remotes): + """Set the remotes of this TemplateApply. + + A list of URLs for template files. To apply a template manifest file located at a URL, pass `remotes` with an array that contains the URL. + + :param remotes: The remotes of this TemplateApply. + :type: list[TemplateApplyRemotes] + """ # noqa: E501 + self._remotes = remotes + + @property + def actions(self): + """Get the actions of this TemplateApply. + + A list of `action` objects. Actions let you customize how InfluxDB applies templates in the request. You can use the following actions to prevent creating or updating resources: - A `skipKind` action skips template resources of a specified `kind`. - A `skipResource` action skips template resources with a specified `metadata.name` and `kind`. + + :return: The actions of this TemplateApply. + :rtype: list[object] + """ # noqa: E501 + return self._actions + + @actions.setter + def actions(self, actions): + """Set the actions of this TemplateApply. + + A list of `action` objects. Actions let you customize how InfluxDB applies templates in the request. You can use the following actions to prevent creating or updating resources: - A `skipKind` action skips template resources of a specified `kind`. - A `skipResource` action skips template resources with a specified `metadata.name` and `kind`. + + :param actions: The actions of this TemplateApply. + :type: list[object] + """ # noqa: E501 + self._actions = actions + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateApply): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_apply_remotes.py b/frogpilot/third_party/influxdb_client/domain/template_apply_remotes.py new file mode 100644 index 000000000..bdb835bc0 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_apply_remotes.py @@ -0,0 +1,131 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateApplyRemotes(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'url': 'str', + 'content_type': 'str' + } + + attribute_map = { + 'url': 'url', + 'content_type': 'contentType' + } + + def __init__(self, url=None, content_type=None): # noqa: E501,D401,D403 + """TemplateApplyRemotes - a model defined in OpenAPI.""" # noqa: E501 + self._url = None + self._content_type = None + self.discriminator = None + + self.url = url + if content_type is not None: + self.content_type = content_type + + @property + def url(self): + """Get the url of this TemplateApplyRemotes. + + :return: The url of this TemplateApplyRemotes. + :rtype: str + """ # noqa: E501 + return self._url + + @url.setter + def url(self, url): + """Set the url of this TemplateApplyRemotes. + + :param url: The url of this TemplateApplyRemotes. + :type: str + """ # noqa: E501 + if url is None: + raise ValueError("Invalid value for `url`, must not be `None`") # noqa: E501 + self._url = url + + @property + def content_type(self): + """Get the content_type of this TemplateApplyRemotes. + + :return: The content_type of this TemplateApplyRemotes. + :rtype: str + """ # noqa: E501 + return self._content_type + + @content_type.setter + def content_type(self, content_type): + """Set the content_type of this TemplateApplyRemotes. + + :param content_type: The content_type of this TemplateApplyRemotes. + :type: str + """ # noqa: E501 + self._content_type = content_type + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateApplyRemotes): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_apply_template.py b/frogpilot/third_party/influxdb_client/domain/template_apply_template.py new file mode 100644 index 000000000..0fee8e97c --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_apply_template.py @@ -0,0 +1,153 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateApplyTemplate(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'content_type': 'str', + 'sources': 'list[str]', + 'contents': 'list[object]' + } + + attribute_map = { + 'content_type': 'contentType', + 'sources': 'sources', + 'contents': 'contents' + } + + def __init__(self, content_type=None, sources=None, contents=None): # noqa: E501,D401,D403 + """TemplateApplyTemplate - a model defined in OpenAPI.""" # noqa: E501 + self._content_type = None + self._sources = None + self._contents = None + self.discriminator = None + + if content_type is not None: + self.content_type = content_type + if sources is not None: + self.sources = sources + if contents is not None: + self.contents = contents + + @property + def content_type(self): + """Get the content_type of this TemplateApplyTemplate. + + :return: The content_type of this TemplateApplyTemplate. + :rtype: str + """ # noqa: E501 + return self._content_type + + @content_type.setter + def content_type(self, content_type): + """Set the content_type of this TemplateApplyTemplate. + + :param content_type: The content_type of this TemplateApplyTemplate. + :type: str + """ # noqa: E501 + self._content_type = content_type + + @property + def sources(self): + """Get the sources of this TemplateApplyTemplate. + + :return: The sources of this TemplateApplyTemplate. + :rtype: list[str] + """ # noqa: E501 + return self._sources + + @sources.setter + def sources(self, sources): + """Set the sources of this TemplateApplyTemplate. + + :param sources: The sources of this TemplateApplyTemplate. + :type: list[str] + """ # noqa: E501 + self._sources = sources + + @property + def contents(self): + """Get the contents of this TemplateApplyTemplate. + + :return: The contents of this TemplateApplyTemplate. + :rtype: list[object] + """ # noqa: E501 + return self._contents + + @contents.setter + def contents(self, contents): + """Set the contents of this TemplateApplyTemplate. + + :param contents: The contents of this TemplateApplyTemplate. + :type: list[object] + """ # noqa: E501 + self._contents = contents + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateApplyTemplate): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_chart.py b/frogpilot/third_party/influxdb_client/domain/template_chart.py new file mode 100644 index 000000000..7ae7b357a --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_chart.py @@ -0,0 +1,199 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateChart(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'x_pos': 'int', + 'y_pos': 'int', + 'height': 'int', + 'width': 'int', + 'properties': 'ViewProperties' + } + + attribute_map = { + 'x_pos': 'xPos', + 'y_pos': 'yPos', + 'height': 'height', + 'width': 'width', + 'properties': 'properties' + } + + def __init__(self, x_pos=None, y_pos=None, height=None, width=None, properties=None): # noqa: E501,D401,D403 + """TemplateChart - a model defined in OpenAPI.""" # noqa: E501 + self._x_pos = None + self._y_pos = None + self._height = None + self._width = None + self._properties = None + self.discriminator = None + + if x_pos is not None: + self.x_pos = x_pos + if y_pos is not None: + self.y_pos = y_pos + if height is not None: + self.height = height + if width is not None: + self.width = width + if properties is not None: + self.properties = properties + + @property + def x_pos(self): + """Get the x_pos of this TemplateChart. + + :return: The x_pos of this TemplateChart. + :rtype: int + """ # noqa: E501 + return self._x_pos + + @x_pos.setter + def x_pos(self, x_pos): + """Set the x_pos of this TemplateChart. + + :param x_pos: The x_pos of this TemplateChart. + :type: int + """ # noqa: E501 + self._x_pos = x_pos + + @property + def y_pos(self): + """Get the y_pos of this TemplateChart. + + :return: The y_pos of this TemplateChart. + :rtype: int + """ # noqa: E501 + return self._y_pos + + @y_pos.setter + def y_pos(self, y_pos): + """Set the y_pos of this TemplateChart. + + :param y_pos: The y_pos of this TemplateChart. + :type: int + """ # noqa: E501 + self._y_pos = y_pos + + @property + def height(self): + """Get the height of this TemplateChart. + + :return: The height of this TemplateChart. + :rtype: int + """ # noqa: E501 + return self._height + + @height.setter + def height(self, height): + """Set the height of this TemplateChart. + + :param height: The height of this TemplateChart. + :type: int + """ # noqa: E501 + self._height = height + + @property + def width(self): + """Get the width of this TemplateChart. + + :return: The width of this TemplateChart. + :rtype: int + """ # noqa: E501 + return self._width + + @width.setter + def width(self, width): + """Set the width of this TemplateChart. + + :param width: The width of this TemplateChart. + :type: int + """ # noqa: E501 + self._width = width + + @property + def properties(self): + """Get the properties of this TemplateChart. + + :return: The properties of this TemplateChart. + :rtype: ViewProperties + """ # noqa: E501 + return self._properties + + @properties.setter + def properties(self, properties): + """Set the properties of this TemplateChart. + + :param properties: The properties of this TemplateChart. + :type: ViewProperties + """ # noqa: E501 + self._properties = properties + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateChart): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_export_by_id.py b/frogpilot/third_party/influxdb_client/domain/template_export_by_id.py new file mode 100644 index 000000000..7b5f21234 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_export_by_id.py @@ -0,0 +1,153 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateExportByID(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'stack_id': 'str', + 'org_ids': 'list[TemplateExportByIDOrgIDs]', + 'resources': 'list[TemplateExportByIDResources]' + } + + attribute_map = { + 'stack_id': 'stackID', + 'org_ids': 'orgIDs', + 'resources': 'resources' + } + + def __init__(self, stack_id=None, org_ids=None, resources=None): # noqa: E501,D401,D403 + """TemplateExportByID - a model defined in OpenAPI.""" # noqa: E501 + self._stack_id = None + self._org_ids = None + self._resources = None + self.discriminator = None + + if stack_id is not None: + self.stack_id = stack_id + if org_ids is not None: + self.org_ids = org_ids + if resources is not None: + self.resources = resources + + @property + def stack_id(self): + """Get the stack_id of this TemplateExportByID. + + :return: The stack_id of this TemplateExportByID. + :rtype: str + """ # noqa: E501 + return self._stack_id + + @stack_id.setter + def stack_id(self, stack_id): + """Set the stack_id of this TemplateExportByID. + + :param stack_id: The stack_id of this TemplateExportByID. + :type: str + """ # noqa: E501 + self._stack_id = stack_id + + @property + def org_ids(self): + """Get the org_ids of this TemplateExportByID. + + :return: The org_ids of this TemplateExportByID. + :rtype: list[TemplateExportByIDOrgIDs] + """ # noqa: E501 + return self._org_ids + + @org_ids.setter + def org_ids(self, org_ids): + """Set the org_ids of this TemplateExportByID. + + :param org_ids: The org_ids of this TemplateExportByID. + :type: list[TemplateExportByIDOrgIDs] + """ # noqa: E501 + self._org_ids = org_ids + + @property + def resources(self): + """Get the resources of this TemplateExportByID. + + :return: The resources of this TemplateExportByID. + :rtype: list[TemplateExportByIDResources] + """ # noqa: E501 + return self._resources + + @resources.setter + def resources(self, resources): + """Set the resources of this TemplateExportByID. + + :param resources: The resources of this TemplateExportByID. + :type: list[TemplateExportByIDResources] + """ # noqa: E501 + self._resources = resources + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateExportByID): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_export_by_id_org_ids.py b/frogpilot/third_party/influxdb_client/domain/template_export_by_id_org_ids.py new file mode 100644 index 000000000..f29886e50 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_export_by_id_org_ids.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateExportByIDOrgIDs(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'org_id': 'str', + 'resource_filters': 'TemplateExportByIDResourceFilters' + } + + attribute_map = { + 'org_id': 'orgID', + 'resource_filters': 'resourceFilters' + } + + def __init__(self, org_id=None, resource_filters=None): # noqa: E501,D401,D403 + """TemplateExportByIDOrgIDs - a model defined in OpenAPI.""" # noqa: E501 + self._org_id = None + self._resource_filters = None + self.discriminator = None + + if org_id is not None: + self.org_id = org_id + if resource_filters is not None: + self.resource_filters = resource_filters + + @property + def org_id(self): + """Get the org_id of this TemplateExportByIDOrgIDs. + + :return: The org_id of this TemplateExportByIDOrgIDs. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this TemplateExportByIDOrgIDs. + + :param org_id: The org_id of this TemplateExportByIDOrgIDs. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def resource_filters(self): + """Get the resource_filters of this TemplateExportByIDOrgIDs. + + :return: The resource_filters of this TemplateExportByIDOrgIDs. + :rtype: TemplateExportByIDResourceFilters + """ # noqa: E501 + return self._resource_filters + + @resource_filters.setter + def resource_filters(self, resource_filters): + """Set the resource_filters of this TemplateExportByIDOrgIDs. + + :param resource_filters: The resource_filters of this TemplateExportByIDOrgIDs. + :type: TemplateExportByIDResourceFilters + """ # noqa: E501 + self._resource_filters = resource_filters + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateExportByIDOrgIDs): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_export_by_id_resource_filters.py b/frogpilot/third_party/influxdb_client/domain/template_export_by_id_resource_filters.py new file mode 100644 index 000000000..33cd9f769 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_export_by_id_resource_filters.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateExportByIDResourceFilters(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'by_label': 'list[str]', + 'by_resource_kind': 'list[TemplateKind]' + } + + attribute_map = { + 'by_label': 'byLabel', + 'by_resource_kind': 'byResourceKind' + } + + def __init__(self, by_label=None, by_resource_kind=None): # noqa: E501,D401,D403 + """TemplateExportByIDResourceFilters - a model defined in OpenAPI.""" # noqa: E501 + self._by_label = None + self._by_resource_kind = None + self.discriminator = None + + if by_label is not None: + self.by_label = by_label + if by_resource_kind is not None: + self.by_resource_kind = by_resource_kind + + @property + def by_label(self): + """Get the by_label of this TemplateExportByIDResourceFilters. + + :return: The by_label of this TemplateExportByIDResourceFilters. + :rtype: list[str] + """ # noqa: E501 + return self._by_label + + @by_label.setter + def by_label(self, by_label): + """Set the by_label of this TemplateExportByIDResourceFilters. + + :param by_label: The by_label of this TemplateExportByIDResourceFilters. + :type: list[str] + """ # noqa: E501 + self._by_label = by_label + + @property + def by_resource_kind(self): + """Get the by_resource_kind of this TemplateExportByIDResourceFilters. + + :return: The by_resource_kind of this TemplateExportByIDResourceFilters. + :rtype: list[TemplateKind] + """ # noqa: E501 + return self._by_resource_kind + + @by_resource_kind.setter + def by_resource_kind(self, by_resource_kind): + """Set the by_resource_kind of this TemplateExportByIDResourceFilters. + + :param by_resource_kind: The by_resource_kind of this TemplateExportByIDResourceFilters. + :type: list[TemplateKind] + """ # noqa: E501 + self._by_resource_kind = by_resource_kind + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateExportByIDResourceFilters): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_export_by_id_resources.py b/frogpilot/third_party/influxdb_client/domain/template_export_by_id_resources.py new file mode 100644 index 000000000..ddbc0b42a --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_export_by_id_resources.py @@ -0,0 +1,159 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateExportByIDResources(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'kind': 'TemplateKind', + 'name': 'str' + } + + attribute_map = { + 'id': 'id', + 'kind': 'kind', + 'name': 'name' + } + + def __init__(self, id=None, kind=None, name=None): # noqa: E501,D401,D403 + """TemplateExportByIDResources - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._kind = None + self._name = None + self.discriminator = None + + self.id = id + self.kind = kind + if name is not None: + self.name = name + + @property + def id(self): + """Get the id of this TemplateExportByIDResources. + + :return: The id of this TemplateExportByIDResources. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this TemplateExportByIDResources. + + :param id: The id of this TemplateExportByIDResources. + :type: str + """ # noqa: E501 + if id is None: + raise ValueError("Invalid value for `id`, must not be `None`") # noqa: E501 + self._id = id + + @property + def kind(self): + """Get the kind of this TemplateExportByIDResources. + + :return: The kind of this TemplateExportByIDResources. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this TemplateExportByIDResources. + + :param kind: The kind of this TemplateExportByIDResources. + :type: TemplateKind + """ # noqa: E501 + if kind is None: + raise ValueError("Invalid value for `kind`, must not be `None`") # noqa: E501 + self._kind = kind + + @property + def name(self): + """Get the name of this TemplateExportByIDResources. + + if defined with id, name is used for resource exported by id. if defined independently, resources strictly matching name are exported + + :return: The name of this TemplateExportByIDResources. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this TemplateExportByIDResources. + + if defined with id, name is used for resource exported by id. if defined independently, resources strictly matching name are exported + + :param name: The name of this TemplateExportByIDResources. + :type: str + """ # noqa: E501 + self._name = name + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateExportByIDResources): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_export_by_name.py b/frogpilot/third_party/influxdb_client/domain/template_export_by_name.py new file mode 100644 index 000000000..aa096dea9 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_export_by_name.py @@ -0,0 +1,153 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateExportByName(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'stack_id': 'str', + 'org_ids': 'list[TemplateExportByIDOrgIDs]', + 'resources': 'list[TemplateExportByNameResources]' + } + + attribute_map = { + 'stack_id': 'stackID', + 'org_ids': 'orgIDs', + 'resources': 'resources' + } + + def __init__(self, stack_id=None, org_ids=None, resources=None): # noqa: E501,D401,D403 + """TemplateExportByName - a model defined in OpenAPI.""" # noqa: E501 + self._stack_id = None + self._org_ids = None + self._resources = None + self.discriminator = None + + if stack_id is not None: + self.stack_id = stack_id + if org_ids is not None: + self.org_ids = org_ids + if resources is not None: + self.resources = resources + + @property + def stack_id(self): + """Get the stack_id of this TemplateExportByName. + + :return: The stack_id of this TemplateExportByName. + :rtype: str + """ # noqa: E501 + return self._stack_id + + @stack_id.setter + def stack_id(self, stack_id): + """Set the stack_id of this TemplateExportByName. + + :param stack_id: The stack_id of this TemplateExportByName. + :type: str + """ # noqa: E501 + self._stack_id = stack_id + + @property + def org_ids(self): + """Get the org_ids of this TemplateExportByName. + + :return: The org_ids of this TemplateExportByName. + :rtype: list[TemplateExportByIDOrgIDs] + """ # noqa: E501 + return self._org_ids + + @org_ids.setter + def org_ids(self, org_ids): + """Set the org_ids of this TemplateExportByName. + + :param org_ids: The org_ids of this TemplateExportByName. + :type: list[TemplateExportByIDOrgIDs] + """ # noqa: E501 + self._org_ids = org_ids + + @property + def resources(self): + """Get the resources of this TemplateExportByName. + + :return: The resources of this TemplateExportByName. + :rtype: list[TemplateExportByNameResources] + """ # noqa: E501 + return self._resources + + @resources.setter + def resources(self, resources): + """Set the resources of this TemplateExportByName. + + :param resources: The resources of this TemplateExportByName. + :type: list[TemplateExportByNameResources] + """ # noqa: E501 + self._resources = resources + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateExportByName): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_export_by_name_resources.py b/frogpilot/third_party/influxdb_client/domain/template_export_by_name_resources.py new file mode 100644 index 000000000..35e955b39 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_export_by_name_resources.py @@ -0,0 +1,132 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateExportByNameResources(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'kind': 'TemplateKind', + 'name': 'str' + } + + attribute_map = { + 'kind': 'kind', + 'name': 'name' + } + + def __init__(self, kind=None, name=None): # noqa: E501,D401,D403 + """TemplateExportByNameResources - a model defined in OpenAPI.""" # noqa: E501 + self._kind = None + self._name = None + self.discriminator = None + + self.kind = kind + self.name = name + + @property + def kind(self): + """Get the kind of this TemplateExportByNameResources. + + :return: The kind of this TemplateExportByNameResources. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this TemplateExportByNameResources. + + :param kind: The kind of this TemplateExportByNameResources. + :type: TemplateKind + """ # noqa: E501 + if kind is None: + raise ValueError("Invalid value for `kind`, must not be `None`") # noqa: E501 + self._kind = kind + + @property + def name(self): + """Get the name of this TemplateExportByNameResources. + + :return: The name of this TemplateExportByNameResources. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this TemplateExportByNameResources. + + :param name: The name of this TemplateExportByNameResources. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateExportByNameResources): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_kind.py b/frogpilot/third_party/influxdb_client/domain/template_kind.py new file mode 100644 index 000000000..256408a54 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_kind.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateKind(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + BUCKET = "Bucket" + CHECK = "Check" + CHECKDEADMAN = "CheckDeadman" + CHECKTHRESHOLD = "CheckThreshold" + DASHBOARD = "Dashboard" + LABEL = "Label" + NOTIFICATIONENDPOINT = "NotificationEndpoint" + NOTIFICATIONENDPOINTHTTP = "NotificationEndpointHTTP" + NOTIFICATIONENDPOINTPAGERDUTY = "NotificationEndpointPagerDuty" + NOTIFICATIONENDPOINTSLACK = "NotificationEndpointSlack" + NOTIFICATIONRULE = "NotificationRule" + TASK = "Task" + TELEGRAF = "Telegraf" + VARIABLE = "Variable" + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """TemplateKind - a model defined in OpenAPI.""" # noqa: E501 self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateKind): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary.py b/frogpilot/third_party/influxdb_client/domain/template_summary.py new file mode 100644 index 000000000..bdb2e20a3 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary.py @@ -0,0 +1,199 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummary(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'sources': 'list[str]', + 'stack_id': 'str', + 'summary': 'TemplateSummarySummary', + 'diff': 'TemplateSummaryDiff', + 'errors': 'list[TemplateSummaryErrors]' + } + + attribute_map = { + 'sources': 'sources', + 'stack_id': 'stackID', + 'summary': 'summary', + 'diff': 'diff', + 'errors': 'errors' + } + + def __init__(self, sources=None, stack_id=None, summary=None, diff=None, errors=None): # noqa: E501,D401,D403 + """TemplateSummary - a model defined in OpenAPI.""" # noqa: E501 + self._sources = None + self._stack_id = None + self._summary = None + self._diff = None + self._errors = None + self.discriminator = None + + if sources is not None: + self.sources = sources + if stack_id is not None: + self.stack_id = stack_id + if summary is not None: + self.summary = summary + if diff is not None: + self.diff = diff + if errors is not None: + self.errors = errors + + @property + def sources(self): + """Get the sources of this TemplateSummary. + + :return: The sources of this TemplateSummary. + :rtype: list[str] + """ # noqa: E501 + return self._sources + + @sources.setter + def sources(self, sources): + """Set the sources of this TemplateSummary. + + :param sources: The sources of this TemplateSummary. + :type: list[str] + """ # noqa: E501 + self._sources = sources + + @property + def stack_id(self): + """Get the stack_id of this TemplateSummary. + + :return: The stack_id of this TemplateSummary. + :rtype: str + """ # noqa: E501 + return self._stack_id + + @stack_id.setter + def stack_id(self, stack_id): + """Set the stack_id of this TemplateSummary. + + :param stack_id: The stack_id of this TemplateSummary. + :type: str + """ # noqa: E501 + self._stack_id = stack_id + + @property + def summary(self): + """Get the summary of this TemplateSummary. + + :return: The summary of this TemplateSummary. + :rtype: TemplateSummarySummary + """ # noqa: E501 + return self._summary + + @summary.setter + def summary(self, summary): + """Set the summary of this TemplateSummary. + + :param summary: The summary of this TemplateSummary. + :type: TemplateSummarySummary + """ # noqa: E501 + self._summary = summary + + @property + def diff(self): + """Get the diff of this TemplateSummary. + + :return: The diff of this TemplateSummary. + :rtype: TemplateSummaryDiff + """ # noqa: E501 + return self._diff + + @diff.setter + def diff(self, diff): + """Set the diff of this TemplateSummary. + + :param diff: The diff of this TemplateSummary. + :type: TemplateSummaryDiff + """ # noqa: E501 + self._diff = diff + + @property + def errors(self): + """Get the errors of this TemplateSummary. + + :return: The errors of this TemplateSummary. + :rtype: list[TemplateSummaryErrors] + """ # noqa: E501 + return self._errors + + @errors.setter + def errors(self, errors): + """Set the errors of this TemplateSummary. + + :param errors: The errors of this TemplateSummary. + :type: list[TemplateSummaryErrors] + """ # noqa: E501 + self._errors = errors + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummary): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_diff.py b/frogpilot/third_party/influxdb_client/domain/template_summary_diff.py new file mode 100644 index 000000000..468fd4f82 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_diff.py @@ -0,0 +1,314 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryDiff(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'buckets': 'list[TemplateSummaryDiffBuckets]', + 'checks': 'list[TemplateSummaryDiffChecks]', + 'dashboards': 'list[TemplateSummaryDiffDashboards]', + 'labels': 'list[TemplateSummaryDiffLabels]', + 'label_mappings': 'list[TemplateSummaryDiffLabelMappings]', + 'notification_endpoints': 'list[TemplateSummaryDiffNotificationEndpoints]', + 'notification_rules': 'list[TemplateSummaryDiffNotificationRules]', + 'tasks': 'list[TemplateSummaryDiffTasks]', + 'telegraf_configs': 'list[TemplateSummaryDiffTelegrafConfigs]', + 'variables': 'list[TemplateSummaryDiffVariables]' + } + + attribute_map = { + 'buckets': 'buckets', + 'checks': 'checks', + 'dashboards': 'dashboards', + 'labels': 'labels', + 'label_mappings': 'labelMappings', + 'notification_endpoints': 'notificationEndpoints', + 'notification_rules': 'notificationRules', + 'tasks': 'tasks', + 'telegraf_configs': 'telegrafConfigs', + 'variables': 'variables' + } + + def __init__(self, buckets=None, checks=None, dashboards=None, labels=None, label_mappings=None, notification_endpoints=None, notification_rules=None, tasks=None, telegraf_configs=None, variables=None): # noqa: E501,D401,D403 + """TemplateSummaryDiff - a model defined in OpenAPI.""" # noqa: E501 + self._buckets = None + self._checks = None + self._dashboards = None + self._labels = None + self._label_mappings = None + self._notification_endpoints = None + self._notification_rules = None + self._tasks = None + self._telegraf_configs = None + self._variables = None + self.discriminator = None + + if buckets is not None: + self.buckets = buckets + if checks is not None: + self.checks = checks + if dashboards is not None: + self.dashboards = dashboards + if labels is not None: + self.labels = labels + if label_mappings is not None: + self.label_mappings = label_mappings + if notification_endpoints is not None: + self.notification_endpoints = notification_endpoints + if notification_rules is not None: + self.notification_rules = notification_rules + if tasks is not None: + self.tasks = tasks + if telegraf_configs is not None: + self.telegraf_configs = telegraf_configs + if variables is not None: + self.variables = variables + + @property + def buckets(self): + """Get the buckets of this TemplateSummaryDiff. + + :return: The buckets of this TemplateSummaryDiff. + :rtype: list[TemplateSummaryDiffBuckets] + """ # noqa: E501 + return self._buckets + + @buckets.setter + def buckets(self, buckets): + """Set the buckets of this TemplateSummaryDiff. + + :param buckets: The buckets of this TemplateSummaryDiff. + :type: list[TemplateSummaryDiffBuckets] + """ # noqa: E501 + self._buckets = buckets + + @property + def checks(self): + """Get the checks of this TemplateSummaryDiff. + + :return: The checks of this TemplateSummaryDiff. + :rtype: list[TemplateSummaryDiffChecks] + """ # noqa: E501 + return self._checks + + @checks.setter + def checks(self, checks): + """Set the checks of this TemplateSummaryDiff. + + :param checks: The checks of this TemplateSummaryDiff. + :type: list[TemplateSummaryDiffChecks] + """ # noqa: E501 + self._checks = checks + + @property + def dashboards(self): + """Get the dashboards of this TemplateSummaryDiff. + + :return: The dashboards of this TemplateSummaryDiff. + :rtype: list[TemplateSummaryDiffDashboards] + """ # noqa: E501 + return self._dashboards + + @dashboards.setter + def dashboards(self, dashboards): + """Set the dashboards of this TemplateSummaryDiff. + + :param dashboards: The dashboards of this TemplateSummaryDiff. + :type: list[TemplateSummaryDiffDashboards] + """ # noqa: E501 + self._dashboards = dashboards + + @property + def labels(self): + """Get the labels of this TemplateSummaryDiff. + + :return: The labels of this TemplateSummaryDiff. + :rtype: list[TemplateSummaryDiffLabels] + """ # noqa: E501 + return self._labels + + @labels.setter + def labels(self, labels): + """Set the labels of this TemplateSummaryDiff. + + :param labels: The labels of this TemplateSummaryDiff. + :type: list[TemplateSummaryDiffLabels] + """ # noqa: E501 + self._labels = labels + + @property + def label_mappings(self): + """Get the label_mappings of this TemplateSummaryDiff. + + :return: The label_mappings of this TemplateSummaryDiff. + :rtype: list[TemplateSummaryDiffLabelMappings] + """ # noqa: E501 + return self._label_mappings + + @label_mappings.setter + def label_mappings(self, label_mappings): + """Set the label_mappings of this TemplateSummaryDiff. + + :param label_mappings: The label_mappings of this TemplateSummaryDiff. + :type: list[TemplateSummaryDiffLabelMappings] + """ # noqa: E501 + self._label_mappings = label_mappings + + @property + def notification_endpoints(self): + """Get the notification_endpoints of this TemplateSummaryDiff. + + :return: The notification_endpoints of this TemplateSummaryDiff. + :rtype: list[TemplateSummaryDiffNotificationEndpoints] + """ # noqa: E501 + return self._notification_endpoints + + @notification_endpoints.setter + def notification_endpoints(self, notification_endpoints): + """Set the notification_endpoints of this TemplateSummaryDiff. + + :param notification_endpoints: The notification_endpoints of this TemplateSummaryDiff. + :type: list[TemplateSummaryDiffNotificationEndpoints] + """ # noqa: E501 + self._notification_endpoints = notification_endpoints + + @property + def notification_rules(self): + """Get the notification_rules of this TemplateSummaryDiff. + + :return: The notification_rules of this TemplateSummaryDiff. + :rtype: list[TemplateSummaryDiffNotificationRules] + """ # noqa: E501 + return self._notification_rules + + @notification_rules.setter + def notification_rules(self, notification_rules): + """Set the notification_rules of this TemplateSummaryDiff. + + :param notification_rules: The notification_rules of this TemplateSummaryDiff. + :type: list[TemplateSummaryDiffNotificationRules] + """ # noqa: E501 + self._notification_rules = notification_rules + + @property + def tasks(self): + """Get the tasks of this TemplateSummaryDiff. + + :return: The tasks of this TemplateSummaryDiff. + :rtype: list[TemplateSummaryDiffTasks] + """ # noqa: E501 + return self._tasks + + @tasks.setter + def tasks(self, tasks): + """Set the tasks of this TemplateSummaryDiff. + + :param tasks: The tasks of this TemplateSummaryDiff. + :type: list[TemplateSummaryDiffTasks] + """ # noqa: E501 + self._tasks = tasks + + @property + def telegraf_configs(self): + """Get the telegraf_configs of this TemplateSummaryDiff. + + :return: The telegraf_configs of this TemplateSummaryDiff. + :rtype: list[TemplateSummaryDiffTelegrafConfigs] + """ # noqa: E501 + return self._telegraf_configs + + @telegraf_configs.setter + def telegraf_configs(self, telegraf_configs): + """Set the telegraf_configs of this TemplateSummaryDiff. + + :param telegraf_configs: The telegraf_configs of this TemplateSummaryDiff. + :type: list[TemplateSummaryDiffTelegrafConfigs] + """ # noqa: E501 + self._telegraf_configs = telegraf_configs + + @property + def variables(self): + """Get the variables of this TemplateSummaryDiff. + + :return: The variables of this TemplateSummaryDiff. + :rtype: list[TemplateSummaryDiffVariables] + """ # noqa: E501 + return self._variables + + @variables.setter + def variables(self, variables): + """Set the variables of this TemplateSummaryDiff. + + :param variables: The variables of this TemplateSummaryDiff. + :type: list[TemplateSummaryDiffVariables] + """ # noqa: E501 + self._variables = variables + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryDiff): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_diff_buckets.py b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_buckets.py new file mode 100644 index 000000000..48e1c0469 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_buckets.py @@ -0,0 +1,222 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryDiffBuckets(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'kind': 'TemplateKind', + 'state_status': 'str', + 'id': 'str', + 'template_meta_name': 'str', + 'new': 'TemplateSummaryDiffBucketsNewOld', + 'old': 'TemplateSummaryDiffBucketsNewOld' + } + + attribute_map = { + 'kind': 'kind', + 'state_status': 'stateStatus', + 'id': 'id', + 'template_meta_name': 'templateMetaName', + 'new': 'new', + 'old': 'old' + } + + def __init__(self, kind=None, state_status=None, id=None, template_meta_name=None, new=None, old=None): # noqa: E501,D401,D403 + """TemplateSummaryDiffBuckets - a model defined in OpenAPI.""" # noqa: E501 + self._kind = None + self._state_status = None + self._id = None + self._template_meta_name = None + self._new = None + self._old = None + self.discriminator = None + + if kind is not None: + self.kind = kind + if state_status is not None: + self.state_status = state_status + if id is not None: + self.id = id + if template_meta_name is not None: + self.template_meta_name = template_meta_name + if new is not None: + self.new = new + if old is not None: + self.old = old + + @property + def kind(self): + """Get the kind of this TemplateSummaryDiffBuckets. + + :return: The kind of this TemplateSummaryDiffBuckets. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this TemplateSummaryDiffBuckets. + + :param kind: The kind of this TemplateSummaryDiffBuckets. + :type: TemplateKind + """ # noqa: E501 + self._kind = kind + + @property + def state_status(self): + """Get the state_status of this TemplateSummaryDiffBuckets. + + :return: The state_status of this TemplateSummaryDiffBuckets. + :rtype: str + """ # noqa: E501 + return self._state_status + + @state_status.setter + def state_status(self, state_status): + """Set the state_status of this TemplateSummaryDiffBuckets. + + :param state_status: The state_status of this TemplateSummaryDiffBuckets. + :type: str + """ # noqa: E501 + self._state_status = state_status + + @property + def id(self): + """Get the id of this TemplateSummaryDiffBuckets. + + :return: The id of this TemplateSummaryDiffBuckets. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this TemplateSummaryDiffBuckets. + + :param id: The id of this TemplateSummaryDiffBuckets. + :type: str + """ # noqa: E501 + self._id = id + + @property + def template_meta_name(self): + """Get the template_meta_name of this TemplateSummaryDiffBuckets. + + :return: The template_meta_name of this TemplateSummaryDiffBuckets. + :rtype: str + """ # noqa: E501 + return self._template_meta_name + + @template_meta_name.setter + def template_meta_name(self, template_meta_name): + """Set the template_meta_name of this TemplateSummaryDiffBuckets. + + :param template_meta_name: The template_meta_name of this TemplateSummaryDiffBuckets. + :type: str + """ # noqa: E501 + self._template_meta_name = template_meta_name + + @property + def new(self): + """Get the new of this TemplateSummaryDiffBuckets. + + :return: The new of this TemplateSummaryDiffBuckets. + :rtype: TemplateSummaryDiffBucketsNewOld + """ # noqa: E501 + return self._new + + @new.setter + def new(self, new): + """Set the new of this TemplateSummaryDiffBuckets. + + :param new: The new of this TemplateSummaryDiffBuckets. + :type: TemplateSummaryDiffBucketsNewOld + """ # noqa: E501 + self._new = new + + @property + def old(self): + """Get the old of this TemplateSummaryDiffBuckets. + + :return: The old of this TemplateSummaryDiffBuckets. + :rtype: TemplateSummaryDiffBucketsNewOld + """ # noqa: E501 + return self._old + + @old.setter + def old(self, old): + """Set the old of this TemplateSummaryDiffBuckets. + + :param old: The old of this TemplateSummaryDiffBuckets. + :type: TemplateSummaryDiffBucketsNewOld + """ # noqa: E501 + self._old = old + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryDiffBuckets): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_diff_buckets_new_old.py b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_buckets_new_old.py new file mode 100644 index 000000000..7caf27911 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_buckets_new_old.py @@ -0,0 +1,157 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryDiffBucketsNewOld(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'description': 'str', + 'retention_rules': 'list[BucketRetentionRules]' + } + + attribute_map = { + 'name': 'name', + 'description': 'description', + 'retention_rules': 'retentionRules' + } + + def __init__(self, name=None, description=None, retention_rules=None): # noqa: E501,D401,D403 + """TemplateSummaryDiffBucketsNewOld - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._description = None + self._retention_rules = None + self.discriminator = None + + if name is not None: + self.name = name + if description is not None: + self.description = description + if retention_rules is not None: + self.retention_rules = retention_rules + + @property + def name(self): + """Get the name of this TemplateSummaryDiffBucketsNewOld. + + :return: The name of this TemplateSummaryDiffBucketsNewOld. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this TemplateSummaryDiffBucketsNewOld. + + :param name: The name of this TemplateSummaryDiffBucketsNewOld. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this TemplateSummaryDiffBucketsNewOld. + + :return: The description of this TemplateSummaryDiffBucketsNewOld. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this TemplateSummaryDiffBucketsNewOld. + + :param description: The description of this TemplateSummaryDiffBucketsNewOld. + :type: str + """ # noqa: E501 + self._description = description + + @property + def retention_rules(self): + """Get the retention_rules of this TemplateSummaryDiffBucketsNewOld. + + Retention rules to expire or retain data. The InfluxDB `/api/v2` API uses `RetentionRules` to configure the [retention period](https://docs.influxdata.com/influxdb/latest/reference/glossary/#retention-period). #### InfluxDB Cloud - `retentionRules` is required. #### InfluxDB OSS - `retentionRules` isn't required. + + :return: The retention_rules of this TemplateSummaryDiffBucketsNewOld. + :rtype: list[BucketRetentionRules] + """ # noqa: E501 + return self._retention_rules + + @retention_rules.setter + def retention_rules(self, retention_rules): + """Set the retention_rules of this TemplateSummaryDiffBucketsNewOld. + + Retention rules to expire or retain data. The InfluxDB `/api/v2` API uses `RetentionRules` to configure the [retention period](https://docs.influxdata.com/influxdb/latest/reference/glossary/#retention-period). #### InfluxDB Cloud - `retentionRules` is required. #### InfluxDB OSS - `retentionRules` isn't required. + + :param retention_rules: The retention_rules of this TemplateSummaryDiffBucketsNewOld. + :type: list[BucketRetentionRules] + """ # noqa: E501 + self._retention_rules = retention_rules + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryDiffBucketsNewOld): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_diff_checks.py b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_checks.py new file mode 100644 index 000000000..3617fa36e --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_checks.py @@ -0,0 +1,222 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryDiffChecks(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'kind': 'TemplateKind', + 'state_status': 'str', + 'id': 'str', + 'template_meta_name': 'str', + 'new': 'CheckDiscriminator', + 'old': 'CheckDiscriminator' + } + + attribute_map = { + 'kind': 'kind', + 'state_status': 'stateStatus', + 'id': 'id', + 'template_meta_name': 'templateMetaName', + 'new': 'new', + 'old': 'old' + } + + def __init__(self, kind=None, state_status=None, id=None, template_meta_name=None, new=None, old=None): # noqa: E501,D401,D403 + """TemplateSummaryDiffChecks - a model defined in OpenAPI.""" # noqa: E501 + self._kind = None + self._state_status = None + self._id = None + self._template_meta_name = None + self._new = None + self._old = None + self.discriminator = None + + if kind is not None: + self.kind = kind + if state_status is not None: + self.state_status = state_status + if id is not None: + self.id = id + if template_meta_name is not None: + self.template_meta_name = template_meta_name + if new is not None: + self.new = new + if old is not None: + self.old = old + + @property + def kind(self): + """Get the kind of this TemplateSummaryDiffChecks. + + :return: The kind of this TemplateSummaryDiffChecks. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this TemplateSummaryDiffChecks. + + :param kind: The kind of this TemplateSummaryDiffChecks. + :type: TemplateKind + """ # noqa: E501 + self._kind = kind + + @property + def state_status(self): + """Get the state_status of this TemplateSummaryDiffChecks. + + :return: The state_status of this TemplateSummaryDiffChecks. + :rtype: str + """ # noqa: E501 + return self._state_status + + @state_status.setter + def state_status(self, state_status): + """Set the state_status of this TemplateSummaryDiffChecks. + + :param state_status: The state_status of this TemplateSummaryDiffChecks. + :type: str + """ # noqa: E501 + self._state_status = state_status + + @property + def id(self): + """Get the id of this TemplateSummaryDiffChecks. + + :return: The id of this TemplateSummaryDiffChecks. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this TemplateSummaryDiffChecks. + + :param id: The id of this TemplateSummaryDiffChecks. + :type: str + """ # noqa: E501 + self._id = id + + @property + def template_meta_name(self): + """Get the template_meta_name of this TemplateSummaryDiffChecks. + + :return: The template_meta_name of this TemplateSummaryDiffChecks. + :rtype: str + """ # noqa: E501 + return self._template_meta_name + + @template_meta_name.setter + def template_meta_name(self, template_meta_name): + """Set the template_meta_name of this TemplateSummaryDiffChecks. + + :param template_meta_name: The template_meta_name of this TemplateSummaryDiffChecks. + :type: str + """ # noqa: E501 + self._template_meta_name = template_meta_name + + @property + def new(self): + """Get the new of this TemplateSummaryDiffChecks. + + :return: The new of this TemplateSummaryDiffChecks. + :rtype: CheckDiscriminator + """ # noqa: E501 + return self._new + + @new.setter + def new(self, new): + """Set the new of this TemplateSummaryDiffChecks. + + :param new: The new of this TemplateSummaryDiffChecks. + :type: CheckDiscriminator + """ # noqa: E501 + self._new = new + + @property + def old(self): + """Get the old of this TemplateSummaryDiffChecks. + + :return: The old of this TemplateSummaryDiffChecks. + :rtype: CheckDiscriminator + """ # noqa: E501 + return self._old + + @old.setter + def old(self, old): + """Set the old of this TemplateSummaryDiffChecks. + + :param old: The old of this TemplateSummaryDiffChecks. + :type: CheckDiscriminator + """ # noqa: E501 + self._old = old + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryDiffChecks): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_diff_dashboards.py b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_dashboards.py new file mode 100644 index 000000000..748b2a097 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_dashboards.py @@ -0,0 +1,222 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryDiffDashboards(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'state_status': 'str', + 'id': 'str', + 'kind': 'TemplateKind', + 'template_meta_name': 'str', + 'new': 'TemplateSummaryDiffDashboardsNewOld', + 'old': 'TemplateSummaryDiffDashboardsNewOld' + } + + attribute_map = { + 'state_status': 'stateStatus', + 'id': 'id', + 'kind': 'kind', + 'template_meta_name': 'templateMetaName', + 'new': 'new', + 'old': 'old' + } + + def __init__(self, state_status=None, id=None, kind=None, template_meta_name=None, new=None, old=None): # noqa: E501,D401,D403 + """TemplateSummaryDiffDashboards - a model defined in OpenAPI.""" # noqa: E501 + self._state_status = None + self._id = None + self._kind = None + self._template_meta_name = None + self._new = None + self._old = None + self.discriminator = None + + if state_status is not None: + self.state_status = state_status + if id is not None: + self.id = id + if kind is not None: + self.kind = kind + if template_meta_name is not None: + self.template_meta_name = template_meta_name + if new is not None: + self.new = new + if old is not None: + self.old = old + + @property + def state_status(self): + """Get the state_status of this TemplateSummaryDiffDashboards. + + :return: The state_status of this TemplateSummaryDiffDashboards. + :rtype: str + """ # noqa: E501 + return self._state_status + + @state_status.setter + def state_status(self, state_status): + """Set the state_status of this TemplateSummaryDiffDashboards. + + :param state_status: The state_status of this TemplateSummaryDiffDashboards. + :type: str + """ # noqa: E501 + self._state_status = state_status + + @property + def id(self): + """Get the id of this TemplateSummaryDiffDashboards. + + :return: The id of this TemplateSummaryDiffDashboards. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this TemplateSummaryDiffDashboards. + + :param id: The id of this TemplateSummaryDiffDashboards. + :type: str + """ # noqa: E501 + self._id = id + + @property + def kind(self): + """Get the kind of this TemplateSummaryDiffDashboards. + + :return: The kind of this TemplateSummaryDiffDashboards. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this TemplateSummaryDiffDashboards. + + :param kind: The kind of this TemplateSummaryDiffDashboards. + :type: TemplateKind + """ # noqa: E501 + self._kind = kind + + @property + def template_meta_name(self): + """Get the template_meta_name of this TemplateSummaryDiffDashboards. + + :return: The template_meta_name of this TemplateSummaryDiffDashboards. + :rtype: str + """ # noqa: E501 + return self._template_meta_name + + @template_meta_name.setter + def template_meta_name(self, template_meta_name): + """Set the template_meta_name of this TemplateSummaryDiffDashboards. + + :param template_meta_name: The template_meta_name of this TemplateSummaryDiffDashboards. + :type: str + """ # noqa: E501 + self._template_meta_name = template_meta_name + + @property + def new(self): + """Get the new of this TemplateSummaryDiffDashboards. + + :return: The new of this TemplateSummaryDiffDashboards. + :rtype: TemplateSummaryDiffDashboardsNewOld + """ # noqa: E501 + return self._new + + @new.setter + def new(self, new): + """Set the new of this TemplateSummaryDiffDashboards. + + :param new: The new of this TemplateSummaryDiffDashboards. + :type: TemplateSummaryDiffDashboardsNewOld + """ # noqa: E501 + self._new = new + + @property + def old(self): + """Get the old of this TemplateSummaryDiffDashboards. + + :return: The old of this TemplateSummaryDiffDashboards. + :rtype: TemplateSummaryDiffDashboardsNewOld + """ # noqa: E501 + return self._old + + @old.setter + def old(self, old): + """Set the old of this TemplateSummaryDiffDashboards. + + :param old: The old of this TemplateSummaryDiffDashboards. + :type: TemplateSummaryDiffDashboardsNewOld + """ # noqa: E501 + self._old = old + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryDiffDashboards): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_diff_dashboards_new_old.py b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_dashboards_new_old.py new file mode 100644 index 000000000..a2b727d4a --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_dashboards_new_old.py @@ -0,0 +1,153 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryDiffDashboardsNewOld(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'description': 'str', + 'charts': 'list[TemplateChart]' + } + + attribute_map = { + 'name': 'name', + 'description': 'description', + 'charts': 'charts' + } + + def __init__(self, name=None, description=None, charts=None): # noqa: E501,D401,D403 + """TemplateSummaryDiffDashboardsNewOld - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._description = None + self._charts = None + self.discriminator = None + + if name is not None: + self.name = name + if description is not None: + self.description = description + if charts is not None: + self.charts = charts + + @property + def name(self): + """Get the name of this TemplateSummaryDiffDashboardsNewOld. + + :return: The name of this TemplateSummaryDiffDashboardsNewOld. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this TemplateSummaryDiffDashboardsNewOld. + + :param name: The name of this TemplateSummaryDiffDashboardsNewOld. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this TemplateSummaryDiffDashboardsNewOld. + + :return: The description of this TemplateSummaryDiffDashboardsNewOld. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this TemplateSummaryDiffDashboardsNewOld. + + :param description: The description of this TemplateSummaryDiffDashboardsNewOld. + :type: str + """ # noqa: E501 + self._description = description + + @property + def charts(self): + """Get the charts of this TemplateSummaryDiffDashboardsNewOld. + + :return: The charts of this TemplateSummaryDiffDashboardsNewOld. + :rtype: list[TemplateChart] + """ # noqa: E501 + return self._charts + + @charts.setter + def charts(self, charts): + """Set the charts of this TemplateSummaryDiffDashboardsNewOld. + + :param charts: The charts of this TemplateSummaryDiffDashboardsNewOld. + :type: list[TemplateChart] + """ # noqa: E501 + self._charts = charts + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryDiffDashboardsNewOld): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_diff_label_mappings.py b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_label_mappings.py new file mode 100644 index 000000000..2abb3dd7f --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_label_mappings.py @@ -0,0 +1,268 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryDiffLabelMappings(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'status': 'str', + 'resource_type': 'str', + 'resource_id': 'str', + 'resource_template_meta_name': 'str', + 'resource_name': 'str', + 'label_id': 'str', + 'label_template_meta_name': 'str', + 'label_name': 'str' + } + + attribute_map = { + 'status': 'status', + 'resource_type': 'resourceType', + 'resource_id': 'resourceID', + 'resource_template_meta_name': 'resourceTemplateMetaName', + 'resource_name': 'resourceName', + 'label_id': 'labelID', + 'label_template_meta_name': 'labelTemplateMetaName', + 'label_name': 'labelName' + } + + def __init__(self, status=None, resource_type=None, resource_id=None, resource_template_meta_name=None, resource_name=None, label_id=None, label_template_meta_name=None, label_name=None): # noqa: E501,D401,D403 + """TemplateSummaryDiffLabelMappings - a model defined in OpenAPI.""" # noqa: E501 + self._status = None + self._resource_type = None + self._resource_id = None + self._resource_template_meta_name = None + self._resource_name = None + self._label_id = None + self._label_template_meta_name = None + self._label_name = None + self.discriminator = None + + if status is not None: + self.status = status + if resource_type is not None: + self.resource_type = resource_type + if resource_id is not None: + self.resource_id = resource_id + if resource_template_meta_name is not None: + self.resource_template_meta_name = resource_template_meta_name + if resource_name is not None: + self.resource_name = resource_name + if label_id is not None: + self.label_id = label_id + if label_template_meta_name is not None: + self.label_template_meta_name = label_template_meta_name + if label_name is not None: + self.label_name = label_name + + @property + def status(self): + """Get the status of this TemplateSummaryDiffLabelMappings. + + :return: The status of this TemplateSummaryDiffLabelMappings. + :rtype: str + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this TemplateSummaryDiffLabelMappings. + + :param status: The status of this TemplateSummaryDiffLabelMappings. + :type: str + """ # noqa: E501 + self._status = status + + @property + def resource_type(self): + """Get the resource_type of this TemplateSummaryDiffLabelMappings. + + :return: The resource_type of this TemplateSummaryDiffLabelMappings. + :rtype: str + """ # noqa: E501 + return self._resource_type + + @resource_type.setter + def resource_type(self, resource_type): + """Set the resource_type of this TemplateSummaryDiffLabelMappings. + + :param resource_type: The resource_type of this TemplateSummaryDiffLabelMappings. + :type: str + """ # noqa: E501 + self._resource_type = resource_type + + @property + def resource_id(self): + """Get the resource_id of this TemplateSummaryDiffLabelMappings. + + :return: The resource_id of this TemplateSummaryDiffLabelMappings. + :rtype: str + """ # noqa: E501 + return self._resource_id + + @resource_id.setter + def resource_id(self, resource_id): + """Set the resource_id of this TemplateSummaryDiffLabelMappings. + + :param resource_id: The resource_id of this TemplateSummaryDiffLabelMappings. + :type: str + """ # noqa: E501 + self._resource_id = resource_id + + @property + def resource_template_meta_name(self): + """Get the resource_template_meta_name of this TemplateSummaryDiffLabelMappings. + + :return: The resource_template_meta_name of this TemplateSummaryDiffLabelMappings. + :rtype: str + """ # noqa: E501 + return self._resource_template_meta_name + + @resource_template_meta_name.setter + def resource_template_meta_name(self, resource_template_meta_name): + """Set the resource_template_meta_name of this TemplateSummaryDiffLabelMappings. + + :param resource_template_meta_name: The resource_template_meta_name of this TemplateSummaryDiffLabelMappings. + :type: str + """ # noqa: E501 + self._resource_template_meta_name = resource_template_meta_name + + @property + def resource_name(self): + """Get the resource_name of this TemplateSummaryDiffLabelMappings. + + :return: The resource_name of this TemplateSummaryDiffLabelMappings. + :rtype: str + """ # noqa: E501 + return self._resource_name + + @resource_name.setter + def resource_name(self, resource_name): + """Set the resource_name of this TemplateSummaryDiffLabelMappings. + + :param resource_name: The resource_name of this TemplateSummaryDiffLabelMappings. + :type: str + """ # noqa: E501 + self._resource_name = resource_name + + @property + def label_id(self): + """Get the label_id of this TemplateSummaryDiffLabelMappings. + + :return: The label_id of this TemplateSummaryDiffLabelMappings. + :rtype: str + """ # noqa: E501 + return self._label_id + + @label_id.setter + def label_id(self, label_id): + """Set the label_id of this TemplateSummaryDiffLabelMappings. + + :param label_id: The label_id of this TemplateSummaryDiffLabelMappings. + :type: str + """ # noqa: E501 + self._label_id = label_id + + @property + def label_template_meta_name(self): + """Get the label_template_meta_name of this TemplateSummaryDiffLabelMappings. + + :return: The label_template_meta_name of this TemplateSummaryDiffLabelMappings. + :rtype: str + """ # noqa: E501 + return self._label_template_meta_name + + @label_template_meta_name.setter + def label_template_meta_name(self, label_template_meta_name): + """Set the label_template_meta_name of this TemplateSummaryDiffLabelMappings. + + :param label_template_meta_name: The label_template_meta_name of this TemplateSummaryDiffLabelMappings. + :type: str + """ # noqa: E501 + self._label_template_meta_name = label_template_meta_name + + @property + def label_name(self): + """Get the label_name of this TemplateSummaryDiffLabelMappings. + + :return: The label_name of this TemplateSummaryDiffLabelMappings. + :rtype: str + """ # noqa: E501 + return self._label_name + + @label_name.setter + def label_name(self, label_name): + """Set the label_name of this TemplateSummaryDiffLabelMappings. + + :param label_name: The label_name of this TemplateSummaryDiffLabelMappings. + :type: str + """ # noqa: E501 + self._label_name = label_name + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryDiffLabelMappings): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_diff_labels.py b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_labels.py new file mode 100644 index 000000000..ab6b9c065 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_labels.py @@ -0,0 +1,222 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryDiffLabels(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'state_status': 'str', + 'kind': 'TemplateKind', + 'id': 'str', + 'template_meta_name': 'str', + 'new': 'TemplateSummaryDiffLabelsNewOld', + 'old': 'TemplateSummaryDiffLabelsNewOld' + } + + attribute_map = { + 'state_status': 'stateStatus', + 'kind': 'kind', + 'id': 'id', + 'template_meta_name': 'templateMetaName', + 'new': 'new', + 'old': 'old' + } + + def __init__(self, state_status=None, kind=None, id=None, template_meta_name=None, new=None, old=None): # noqa: E501,D401,D403 + """TemplateSummaryDiffLabels - a model defined in OpenAPI.""" # noqa: E501 + self._state_status = None + self._kind = None + self._id = None + self._template_meta_name = None + self._new = None + self._old = None + self.discriminator = None + + if state_status is not None: + self.state_status = state_status + if kind is not None: + self.kind = kind + if id is not None: + self.id = id + if template_meta_name is not None: + self.template_meta_name = template_meta_name + if new is not None: + self.new = new + if old is not None: + self.old = old + + @property + def state_status(self): + """Get the state_status of this TemplateSummaryDiffLabels. + + :return: The state_status of this TemplateSummaryDiffLabels. + :rtype: str + """ # noqa: E501 + return self._state_status + + @state_status.setter + def state_status(self, state_status): + """Set the state_status of this TemplateSummaryDiffLabels. + + :param state_status: The state_status of this TemplateSummaryDiffLabels. + :type: str + """ # noqa: E501 + self._state_status = state_status + + @property + def kind(self): + """Get the kind of this TemplateSummaryDiffLabels. + + :return: The kind of this TemplateSummaryDiffLabels. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this TemplateSummaryDiffLabels. + + :param kind: The kind of this TemplateSummaryDiffLabels. + :type: TemplateKind + """ # noqa: E501 + self._kind = kind + + @property + def id(self): + """Get the id of this TemplateSummaryDiffLabels. + + :return: The id of this TemplateSummaryDiffLabels. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this TemplateSummaryDiffLabels. + + :param id: The id of this TemplateSummaryDiffLabels. + :type: str + """ # noqa: E501 + self._id = id + + @property + def template_meta_name(self): + """Get the template_meta_name of this TemplateSummaryDiffLabels. + + :return: The template_meta_name of this TemplateSummaryDiffLabels. + :rtype: str + """ # noqa: E501 + return self._template_meta_name + + @template_meta_name.setter + def template_meta_name(self, template_meta_name): + """Set the template_meta_name of this TemplateSummaryDiffLabels. + + :param template_meta_name: The template_meta_name of this TemplateSummaryDiffLabels. + :type: str + """ # noqa: E501 + self._template_meta_name = template_meta_name + + @property + def new(self): + """Get the new of this TemplateSummaryDiffLabels. + + :return: The new of this TemplateSummaryDiffLabels. + :rtype: TemplateSummaryDiffLabelsNewOld + """ # noqa: E501 + return self._new + + @new.setter + def new(self, new): + """Set the new of this TemplateSummaryDiffLabels. + + :param new: The new of this TemplateSummaryDiffLabels. + :type: TemplateSummaryDiffLabelsNewOld + """ # noqa: E501 + self._new = new + + @property + def old(self): + """Get the old of this TemplateSummaryDiffLabels. + + :return: The old of this TemplateSummaryDiffLabels. + :rtype: TemplateSummaryDiffLabelsNewOld + """ # noqa: E501 + return self._old + + @old.setter + def old(self, old): + """Set the old of this TemplateSummaryDiffLabels. + + :param old: The old of this TemplateSummaryDiffLabels. + :type: TemplateSummaryDiffLabelsNewOld + """ # noqa: E501 + self._old = old + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryDiffLabels): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_diff_labels_new_old.py b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_labels_new_old.py new file mode 100644 index 000000000..27e7bdd1d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_labels_new_old.py @@ -0,0 +1,153 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryDiffLabelsNewOld(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'color': 'str', + 'description': 'str' + } + + attribute_map = { + 'name': 'name', + 'color': 'color', + 'description': 'description' + } + + def __init__(self, name=None, color=None, description=None): # noqa: E501,D401,D403 + """TemplateSummaryDiffLabelsNewOld - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._color = None + self._description = None + self.discriminator = None + + if name is not None: + self.name = name + if color is not None: + self.color = color + if description is not None: + self.description = description + + @property + def name(self): + """Get the name of this TemplateSummaryDiffLabelsNewOld. + + :return: The name of this TemplateSummaryDiffLabelsNewOld. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this TemplateSummaryDiffLabelsNewOld. + + :param name: The name of this TemplateSummaryDiffLabelsNewOld. + :type: str + """ # noqa: E501 + self._name = name + + @property + def color(self): + """Get the color of this TemplateSummaryDiffLabelsNewOld. + + :return: The color of this TemplateSummaryDiffLabelsNewOld. + :rtype: str + """ # noqa: E501 + return self._color + + @color.setter + def color(self, color): + """Set the color of this TemplateSummaryDiffLabelsNewOld. + + :param color: The color of this TemplateSummaryDiffLabelsNewOld. + :type: str + """ # noqa: E501 + self._color = color + + @property + def description(self): + """Get the description of this TemplateSummaryDiffLabelsNewOld. + + :return: The description of this TemplateSummaryDiffLabelsNewOld. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this TemplateSummaryDiffLabelsNewOld. + + :param description: The description of this TemplateSummaryDiffLabelsNewOld. + :type: str + """ # noqa: E501 + self._description = description + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryDiffLabelsNewOld): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_diff_notification_endpoints.py b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_notification_endpoints.py new file mode 100644 index 000000000..47dc4caf0 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_notification_endpoints.py @@ -0,0 +1,222 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryDiffNotificationEndpoints(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'kind': 'TemplateKind', + 'state_status': 'str', + 'id': 'str', + 'template_meta_name': 'str', + 'new': 'NotificationEndpointDiscriminator', + 'old': 'NotificationEndpointDiscriminator' + } + + attribute_map = { + 'kind': 'kind', + 'state_status': 'stateStatus', + 'id': 'id', + 'template_meta_name': 'templateMetaName', + 'new': 'new', + 'old': 'old' + } + + def __init__(self, kind=None, state_status=None, id=None, template_meta_name=None, new=None, old=None): # noqa: E501,D401,D403 + """TemplateSummaryDiffNotificationEndpoints - a model defined in OpenAPI.""" # noqa: E501 + self._kind = None + self._state_status = None + self._id = None + self._template_meta_name = None + self._new = None + self._old = None + self.discriminator = None + + if kind is not None: + self.kind = kind + if state_status is not None: + self.state_status = state_status + if id is not None: + self.id = id + if template_meta_name is not None: + self.template_meta_name = template_meta_name + if new is not None: + self.new = new + if old is not None: + self.old = old + + @property + def kind(self): + """Get the kind of this TemplateSummaryDiffNotificationEndpoints. + + :return: The kind of this TemplateSummaryDiffNotificationEndpoints. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this TemplateSummaryDiffNotificationEndpoints. + + :param kind: The kind of this TemplateSummaryDiffNotificationEndpoints. + :type: TemplateKind + """ # noqa: E501 + self._kind = kind + + @property + def state_status(self): + """Get the state_status of this TemplateSummaryDiffNotificationEndpoints. + + :return: The state_status of this TemplateSummaryDiffNotificationEndpoints. + :rtype: str + """ # noqa: E501 + return self._state_status + + @state_status.setter + def state_status(self, state_status): + """Set the state_status of this TemplateSummaryDiffNotificationEndpoints. + + :param state_status: The state_status of this TemplateSummaryDiffNotificationEndpoints. + :type: str + """ # noqa: E501 + self._state_status = state_status + + @property + def id(self): + """Get the id of this TemplateSummaryDiffNotificationEndpoints. + + :return: The id of this TemplateSummaryDiffNotificationEndpoints. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this TemplateSummaryDiffNotificationEndpoints. + + :param id: The id of this TemplateSummaryDiffNotificationEndpoints. + :type: str + """ # noqa: E501 + self._id = id + + @property + def template_meta_name(self): + """Get the template_meta_name of this TemplateSummaryDiffNotificationEndpoints. + + :return: The template_meta_name of this TemplateSummaryDiffNotificationEndpoints. + :rtype: str + """ # noqa: E501 + return self._template_meta_name + + @template_meta_name.setter + def template_meta_name(self, template_meta_name): + """Set the template_meta_name of this TemplateSummaryDiffNotificationEndpoints. + + :param template_meta_name: The template_meta_name of this TemplateSummaryDiffNotificationEndpoints. + :type: str + """ # noqa: E501 + self._template_meta_name = template_meta_name + + @property + def new(self): + """Get the new of this TemplateSummaryDiffNotificationEndpoints. + + :return: The new of this TemplateSummaryDiffNotificationEndpoints. + :rtype: NotificationEndpointDiscriminator + """ # noqa: E501 + return self._new + + @new.setter + def new(self, new): + """Set the new of this TemplateSummaryDiffNotificationEndpoints. + + :param new: The new of this TemplateSummaryDiffNotificationEndpoints. + :type: NotificationEndpointDiscriminator + """ # noqa: E501 + self._new = new + + @property + def old(self): + """Get the old of this TemplateSummaryDiffNotificationEndpoints. + + :return: The old of this TemplateSummaryDiffNotificationEndpoints. + :rtype: NotificationEndpointDiscriminator + """ # noqa: E501 + return self._old + + @old.setter + def old(self, old): + """Set the old of this TemplateSummaryDiffNotificationEndpoints. + + :param old: The old of this TemplateSummaryDiffNotificationEndpoints. + :type: NotificationEndpointDiscriminator + """ # noqa: E501 + self._old = old + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryDiffNotificationEndpoints): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_diff_notification_rules.py b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_notification_rules.py new file mode 100644 index 000000000..cc4ab1ea5 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_notification_rules.py @@ -0,0 +1,222 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryDiffNotificationRules(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'kind': 'TemplateKind', + 'state_status': 'str', + 'id': 'str', + 'template_meta_name': 'str', + 'new': 'TemplateSummaryDiffNotificationRulesNewOld', + 'old': 'TemplateSummaryDiffNotificationRulesNewOld' + } + + attribute_map = { + 'kind': 'kind', + 'state_status': 'stateStatus', + 'id': 'id', + 'template_meta_name': 'templateMetaName', + 'new': 'new', + 'old': 'old' + } + + def __init__(self, kind=None, state_status=None, id=None, template_meta_name=None, new=None, old=None): # noqa: E501,D401,D403 + """TemplateSummaryDiffNotificationRules - a model defined in OpenAPI.""" # noqa: E501 + self._kind = None + self._state_status = None + self._id = None + self._template_meta_name = None + self._new = None + self._old = None + self.discriminator = None + + if kind is not None: + self.kind = kind + if state_status is not None: + self.state_status = state_status + if id is not None: + self.id = id + if template_meta_name is not None: + self.template_meta_name = template_meta_name + if new is not None: + self.new = new + if old is not None: + self.old = old + + @property + def kind(self): + """Get the kind of this TemplateSummaryDiffNotificationRules. + + :return: The kind of this TemplateSummaryDiffNotificationRules. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this TemplateSummaryDiffNotificationRules. + + :param kind: The kind of this TemplateSummaryDiffNotificationRules. + :type: TemplateKind + """ # noqa: E501 + self._kind = kind + + @property + def state_status(self): + """Get the state_status of this TemplateSummaryDiffNotificationRules. + + :return: The state_status of this TemplateSummaryDiffNotificationRules. + :rtype: str + """ # noqa: E501 + return self._state_status + + @state_status.setter + def state_status(self, state_status): + """Set the state_status of this TemplateSummaryDiffNotificationRules. + + :param state_status: The state_status of this TemplateSummaryDiffNotificationRules. + :type: str + """ # noqa: E501 + self._state_status = state_status + + @property + def id(self): + """Get the id of this TemplateSummaryDiffNotificationRules. + + :return: The id of this TemplateSummaryDiffNotificationRules. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this TemplateSummaryDiffNotificationRules. + + :param id: The id of this TemplateSummaryDiffNotificationRules. + :type: str + """ # noqa: E501 + self._id = id + + @property + def template_meta_name(self): + """Get the template_meta_name of this TemplateSummaryDiffNotificationRules. + + :return: The template_meta_name of this TemplateSummaryDiffNotificationRules. + :rtype: str + """ # noqa: E501 + return self._template_meta_name + + @template_meta_name.setter + def template_meta_name(self, template_meta_name): + """Set the template_meta_name of this TemplateSummaryDiffNotificationRules. + + :param template_meta_name: The template_meta_name of this TemplateSummaryDiffNotificationRules. + :type: str + """ # noqa: E501 + self._template_meta_name = template_meta_name + + @property + def new(self): + """Get the new of this TemplateSummaryDiffNotificationRules. + + :return: The new of this TemplateSummaryDiffNotificationRules. + :rtype: TemplateSummaryDiffNotificationRulesNewOld + """ # noqa: E501 + return self._new + + @new.setter + def new(self, new): + """Set the new of this TemplateSummaryDiffNotificationRules. + + :param new: The new of this TemplateSummaryDiffNotificationRules. + :type: TemplateSummaryDiffNotificationRulesNewOld + """ # noqa: E501 + self._new = new + + @property + def old(self): + """Get the old of this TemplateSummaryDiffNotificationRules. + + :return: The old of this TemplateSummaryDiffNotificationRules. + :rtype: TemplateSummaryDiffNotificationRulesNewOld + """ # noqa: E501 + return self._old + + @old.setter + def old(self, old): + """Set the old of this TemplateSummaryDiffNotificationRules. + + :param old: The old of this TemplateSummaryDiffNotificationRules. + :type: TemplateSummaryDiffNotificationRulesNewOld + """ # noqa: E501 + self._old = old + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryDiffNotificationRules): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_diff_notification_rules_new_old.py b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_notification_rules_new_old.py new file mode 100644 index 000000000..b769118f3 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_notification_rules_new_old.py @@ -0,0 +1,337 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryDiffNotificationRulesNewOld(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'description': 'str', + 'endpoint_name': 'str', + 'endpoint_id': 'str', + 'endpoint_type': 'str', + 'every': 'str', + 'offset': 'str', + 'message_template': 'str', + 'status': 'str', + 'status_rules': 'list[TemplateSummarySummaryStatusRules]', + 'tag_rules': 'list[TemplateSummarySummaryTagRules]' + } + + attribute_map = { + 'name': 'name', + 'description': 'description', + 'endpoint_name': 'endpointName', + 'endpoint_id': 'endpointID', + 'endpoint_type': 'endpointType', + 'every': 'every', + 'offset': 'offset', + 'message_template': 'messageTemplate', + 'status': 'status', + 'status_rules': 'statusRules', + 'tag_rules': 'tagRules' + } + + def __init__(self, name=None, description=None, endpoint_name=None, endpoint_id=None, endpoint_type=None, every=None, offset=None, message_template=None, status=None, status_rules=None, tag_rules=None): # noqa: E501,D401,D403 + """TemplateSummaryDiffNotificationRulesNewOld - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._description = None + self._endpoint_name = None + self._endpoint_id = None + self._endpoint_type = None + self._every = None + self._offset = None + self._message_template = None + self._status = None + self._status_rules = None + self._tag_rules = None + self.discriminator = None + + if name is not None: + self.name = name + if description is not None: + self.description = description + if endpoint_name is not None: + self.endpoint_name = endpoint_name + if endpoint_id is not None: + self.endpoint_id = endpoint_id + if endpoint_type is not None: + self.endpoint_type = endpoint_type + if every is not None: + self.every = every + if offset is not None: + self.offset = offset + if message_template is not None: + self.message_template = message_template + if status is not None: + self.status = status + if status_rules is not None: + self.status_rules = status_rules + if tag_rules is not None: + self.tag_rules = tag_rules + + @property + def name(self): + """Get the name of this TemplateSummaryDiffNotificationRulesNewOld. + + :return: The name of this TemplateSummaryDiffNotificationRulesNewOld. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this TemplateSummaryDiffNotificationRulesNewOld. + + :param name: The name of this TemplateSummaryDiffNotificationRulesNewOld. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this TemplateSummaryDiffNotificationRulesNewOld. + + :return: The description of this TemplateSummaryDiffNotificationRulesNewOld. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this TemplateSummaryDiffNotificationRulesNewOld. + + :param description: The description of this TemplateSummaryDiffNotificationRulesNewOld. + :type: str + """ # noqa: E501 + self._description = description + + @property + def endpoint_name(self): + """Get the endpoint_name of this TemplateSummaryDiffNotificationRulesNewOld. + + :return: The endpoint_name of this TemplateSummaryDiffNotificationRulesNewOld. + :rtype: str + """ # noqa: E501 + return self._endpoint_name + + @endpoint_name.setter + def endpoint_name(self, endpoint_name): + """Set the endpoint_name of this TemplateSummaryDiffNotificationRulesNewOld. + + :param endpoint_name: The endpoint_name of this TemplateSummaryDiffNotificationRulesNewOld. + :type: str + """ # noqa: E501 + self._endpoint_name = endpoint_name + + @property + def endpoint_id(self): + """Get the endpoint_id of this TemplateSummaryDiffNotificationRulesNewOld. + + :return: The endpoint_id of this TemplateSummaryDiffNotificationRulesNewOld. + :rtype: str + """ # noqa: E501 + return self._endpoint_id + + @endpoint_id.setter + def endpoint_id(self, endpoint_id): + """Set the endpoint_id of this TemplateSummaryDiffNotificationRulesNewOld. + + :param endpoint_id: The endpoint_id of this TemplateSummaryDiffNotificationRulesNewOld. + :type: str + """ # noqa: E501 + self._endpoint_id = endpoint_id + + @property + def endpoint_type(self): + """Get the endpoint_type of this TemplateSummaryDiffNotificationRulesNewOld. + + :return: The endpoint_type of this TemplateSummaryDiffNotificationRulesNewOld. + :rtype: str + """ # noqa: E501 + return self._endpoint_type + + @endpoint_type.setter + def endpoint_type(self, endpoint_type): + """Set the endpoint_type of this TemplateSummaryDiffNotificationRulesNewOld. + + :param endpoint_type: The endpoint_type of this TemplateSummaryDiffNotificationRulesNewOld. + :type: str + """ # noqa: E501 + self._endpoint_type = endpoint_type + + @property + def every(self): + """Get the every of this TemplateSummaryDiffNotificationRulesNewOld. + + :return: The every of this TemplateSummaryDiffNotificationRulesNewOld. + :rtype: str + """ # noqa: E501 + return self._every + + @every.setter + def every(self, every): + """Set the every of this TemplateSummaryDiffNotificationRulesNewOld. + + :param every: The every of this TemplateSummaryDiffNotificationRulesNewOld. + :type: str + """ # noqa: E501 + self._every = every + + @property + def offset(self): + """Get the offset of this TemplateSummaryDiffNotificationRulesNewOld. + + :return: The offset of this TemplateSummaryDiffNotificationRulesNewOld. + :rtype: str + """ # noqa: E501 + return self._offset + + @offset.setter + def offset(self, offset): + """Set the offset of this TemplateSummaryDiffNotificationRulesNewOld. + + :param offset: The offset of this TemplateSummaryDiffNotificationRulesNewOld. + :type: str + """ # noqa: E501 + self._offset = offset + + @property + def message_template(self): + """Get the message_template of this TemplateSummaryDiffNotificationRulesNewOld. + + :return: The message_template of this TemplateSummaryDiffNotificationRulesNewOld. + :rtype: str + """ # noqa: E501 + return self._message_template + + @message_template.setter + def message_template(self, message_template): + """Set the message_template of this TemplateSummaryDiffNotificationRulesNewOld. + + :param message_template: The message_template of this TemplateSummaryDiffNotificationRulesNewOld. + :type: str + """ # noqa: E501 + self._message_template = message_template + + @property + def status(self): + """Get the status of this TemplateSummaryDiffNotificationRulesNewOld. + + :return: The status of this TemplateSummaryDiffNotificationRulesNewOld. + :rtype: str + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this TemplateSummaryDiffNotificationRulesNewOld. + + :param status: The status of this TemplateSummaryDiffNotificationRulesNewOld. + :type: str + """ # noqa: E501 + self._status = status + + @property + def status_rules(self): + """Get the status_rules of this TemplateSummaryDiffNotificationRulesNewOld. + + :return: The status_rules of this TemplateSummaryDiffNotificationRulesNewOld. + :rtype: list[TemplateSummarySummaryStatusRules] + """ # noqa: E501 + return self._status_rules + + @status_rules.setter + def status_rules(self, status_rules): + """Set the status_rules of this TemplateSummaryDiffNotificationRulesNewOld. + + :param status_rules: The status_rules of this TemplateSummaryDiffNotificationRulesNewOld. + :type: list[TemplateSummarySummaryStatusRules] + """ # noqa: E501 + self._status_rules = status_rules + + @property + def tag_rules(self): + """Get the tag_rules of this TemplateSummaryDiffNotificationRulesNewOld. + + :return: The tag_rules of this TemplateSummaryDiffNotificationRulesNewOld. + :rtype: list[TemplateSummarySummaryTagRules] + """ # noqa: E501 + return self._tag_rules + + @tag_rules.setter + def tag_rules(self, tag_rules): + """Set the tag_rules of this TemplateSummaryDiffNotificationRulesNewOld. + + :param tag_rules: The tag_rules of this TemplateSummaryDiffNotificationRulesNewOld. + :type: list[TemplateSummarySummaryTagRules] + """ # noqa: E501 + self._tag_rules = tag_rules + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryDiffNotificationRulesNewOld): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_diff_tasks.py b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_tasks.py new file mode 100644 index 000000000..8dca893c8 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_tasks.py @@ -0,0 +1,222 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryDiffTasks(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'kind': 'TemplateKind', + 'state_status': 'str', + 'id': 'str', + 'template_meta_name': 'str', + 'new': 'TemplateSummaryDiffTasksNewOld', + 'old': 'TemplateSummaryDiffTasksNewOld' + } + + attribute_map = { + 'kind': 'kind', + 'state_status': 'stateStatus', + 'id': 'id', + 'template_meta_name': 'templateMetaName', + 'new': 'new', + 'old': 'old' + } + + def __init__(self, kind=None, state_status=None, id=None, template_meta_name=None, new=None, old=None): # noqa: E501,D401,D403 + """TemplateSummaryDiffTasks - a model defined in OpenAPI.""" # noqa: E501 + self._kind = None + self._state_status = None + self._id = None + self._template_meta_name = None + self._new = None + self._old = None + self.discriminator = None + + if kind is not None: + self.kind = kind + if state_status is not None: + self.state_status = state_status + if id is not None: + self.id = id + if template_meta_name is not None: + self.template_meta_name = template_meta_name + if new is not None: + self.new = new + if old is not None: + self.old = old + + @property + def kind(self): + """Get the kind of this TemplateSummaryDiffTasks. + + :return: The kind of this TemplateSummaryDiffTasks. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this TemplateSummaryDiffTasks. + + :param kind: The kind of this TemplateSummaryDiffTasks. + :type: TemplateKind + """ # noqa: E501 + self._kind = kind + + @property + def state_status(self): + """Get the state_status of this TemplateSummaryDiffTasks. + + :return: The state_status of this TemplateSummaryDiffTasks. + :rtype: str + """ # noqa: E501 + return self._state_status + + @state_status.setter + def state_status(self, state_status): + """Set the state_status of this TemplateSummaryDiffTasks. + + :param state_status: The state_status of this TemplateSummaryDiffTasks. + :type: str + """ # noqa: E501 + self._state_status = state_status + + @property + def id(self): + """Get the id of this TemplateSummaryDiffTasks. + + :return: The id of this TemplateSummaryDiffTasks. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this TemplateSummaryDiffTasks. + + :param id: The id of this TemplateSummaryDiffTasks. + :type: str + """ # noqa: E501 + self._id = id + + @property + def template_meta_name(self): + """Get the template_meta_name of this TemplateSummaryDiffTasks. + + :return: The template_meta_name of this TemplateSummaryDiffTasks. + :rtype: str + """ # noqa: E501 + return self._template_meta_name + + @template_meta_name.setter + def template_meta_name(self, template_meta_name): + """Set the template_meta_name of this TemplateSummaryDiffTasks. + + :param template_meta_name: The template_meta_name of this TemplateSummaryDiffTasks. + :type: str + """ # noqa: E501 + self._template_meta_name = template_meta_name + + @property + def new(self): + """Get the new of this TemplateSummaryDiffTasks. + + :return: The new of this TemplateSummaryDiffTasks. + :rtype: TemplateSummaryDiffTasksNewOld + """ # noqa: E501 + return self._new + + @new.setter + def new(self, new): + """Set the new of this TemplateSummaryDiffTasks. + + :param new: The new of this TemplateSummaryDiffTasks. + :type: TemplateSummaryDiffTasksNewOld + """ # noqa: E501 + self._new = new + + @property + def old(self): + """Get the old of this TemplateSummaryDiffTasks. + + :return: The old of this TemplateSummaryDiffTasks. + :rtype: TemplateSummaryDiffTasksNewOld + """ # noqa: E501 + return self._old + + @old.setter + def old(self, old): + """Set the old of this TemplateSummaryDiffTasks. + + :param old: The old of this TemplateSummaryDiffTasks. + :type: TemplateSummaryDiffTasksNewOld + """ # noqa: E501 + self._old = old + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryDiffTasks): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_diff_tasks_new_old.py b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_tasks_new_old.py new file mode 100644 index 000000000..57a83e8a0 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_tasks_new_old.py @@ -0,0 +1,245 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryDiffTasksNewOld(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'cron': 'str', + 'description': 'str', + 'every': 'str', + 'offset': 'str', + 'query': 'str', + 'status': 'str' + } + + attribute_map = { + 'name': 'name', + 'cron': 'cron', + 'description': 'description', + 'every': 'every', + 'offset': 'offset', + 'query': 'query', + 'status': 'status' + } + + def __init__(self, name=None, cron=None, description=None, every=None, offset=None, query=None, status=None): # noqa: E501,D401,D403 + """TemplateSummaryDiffTasksNewOld - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._cron = None + self._description = None + self._every = None + self._offset = None + self._query = None + self._status = None + self.discriminator = None + + if name is not None: + self.name = name + if cron is not None: + self.cron = cron + if description is not None: + self.description = description + if every is not None: + self.every = every + if offset is not None: + self.offset = offset + if query is not None: + self.query = query + if status is not None: + self.status = status + + @property + def name(self): + """Get the name of this TemplateSummaryDiffTasksNewOld. + + :return: The name of this TemplateSummaryDiffTasksNewOld. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this TemplateSummaryDiffTasksNewOld. + + :param name: The name of this TemplateSummaryDiffTasksNewOld. + :type: str + """ # noqa: E501 + self._name = name + + @property + def cron(self): + """Get the cron of this TemplateSummaryDiffTasksNewOld. + + :return: The cron of this TemplateSummaryDiffTasksNewOld. + :rtype: str + """ # noqa: E501 + return self._cron + + @cron.setter + def cron(self, cron): + """Set the cron of this TemplateSummaryDiffTasksNewOld. + + :param cron: The cron of this TemplateSummaryDiffTasksNewOld. + :type: str + """ # noqa: E501 + self._cron = cron + + @property + def description(self): + """Get the description of this TemplateSummaryDiffTasksNewOld. + + :return: The description of this TemplateSummaryDiffTasksNewOld. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this TemplateSummaryDiffTasksNewOld. + + :param description: The description of this TemplateSummaryDiffTasksNewOld. + :type: str + """ # noqa: E501 + self._description = description + + @property + def every(self): + """Get the every of this TemplateSummaryDiffTasksNewOld. + + :return: The every of this TemplateSummaryDiffTasksNewOld. + :rtype: str + """ # noqa: E501 + return self._every + + @every.setter + def every(self, every): + """Set the every of this TemplateSummaryDiffTasksNewOld. + + :param every: The every of this TemplateSummaryDiffTasksNewOld. + :type: str + """ # noqa: E501 + self._every = every + + @property + def offset(self): + """Get the offset of this TemplateSummaryDiffTasksNewOld. + + :return: The offset of this TemplateSummaryDiffTasksNewOld. + :rtype: str + """ # noqa: E501 + return self._offset + + @offset.setter + def offset(self, offset): + """Set the offset of this TemplateSummaryDiffTasksNewOld. + + :param offset: The offset of this TemplateSummaryDiffTasksNewOld. + :type: str + """ # noqa: E501 + self._offset = offset + + @property + def query(self): + """Get the query of this TemplateSummaryDiffTasksNewOld. + + :return: The query of this TemplateSummaryDiffTasksNewOld. + :rtype: str + """ # noqa: E501 + return self._query + + @query.setter + def query(self, query): + """Set the query of this TemplateSummaryDiffTasksNewOld. + + :param query: The query of this TemplateSummaryDiffTasksNewOld. + :type: str + """ # noqa: E501 + self._query = query + + @property + def status(self): + """Get the status of this TemplateSummaryDiffTasksNewOld. + + :return: The status of this TemplateSummaryDiffTasksNewOld. + :rtype: str + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this TemplateSummaryDiffTasksNewOld. + + :param status: The status of this TemplateSummaryDiffTasksNewOld. + :type: str + """ # noqa: E501 + self._status = status + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryDiffTasksNewOld): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_diff_telegraf_configs.py b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_telegraf_configs.py new file mode 100644 index 000000000..2aa8ef868 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_telegraf_configs.py @@ -0,0 +1,222 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryDiffTelegrafConfigs(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'kind': 'TemplateKind', + 'state_status': 'str', + 'id': 'str', + 'template_meta_name': 'str', + 'new': 'TelegrafRequest', + 'old': 'TelegrafRequest' + } + + attribute_map = { + 'kind': 'kind', + 'state_status': 'stateStatus', + 'id': 'id', + 'template_meta_name': 'templateMetaName', + 'new': 'new', + 'old': 'old' + } + + def __init__(self, kind=None, state_status=None, id=None, template_meta_name=None, new=None, old=None): # noqa: E501,D401,D403 + """TemplateSummaryDiffTelegrafConfigs - a model defined in OpenAPI.""" # noqa: E501 + self._kind = None + self._state_status = None + self._id = None + self._template_meta_name = None + self._new = None + self._old = None + self.discriminator = None + + if kind is not None: + self.kind = kind + if state_status is not None: + self.state_status = state_status + if id is not None: + self.id = id + if template_meta_name is not None: + self.template_meta_name = template_meta_name + if new is not None: + self.new = new + if old is not None: + self.old = old + + @property + def kind(self): + """Get the kind of this TemplateSummaryDiffTelegrafConfigs. + + :return: The kind of this TemplateSummaryDiffTelegrafConfigs. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this TemplateSummaryDiffTelegrafConfigs. + + :param kind: The kind of this TemplateSummaryDiffTelegrafConfigs. + :type: TemplateKind + """ # noqa: E501 + self._kind = kind + + @property + def state_status(self): + """Get the state_status of this TemplateSummaryDiffTelegrafConfigs. + + :return: The state_status of this TemplateSummaryDiffTelegrafConfigs. + :rtype: str + """ # noqa: E501 + return self._state_status + + @state_status.setter + def state_status(self, state_status): + """Set the state_status of this TemplateSummaryDiffTelegrafConfigs. + + :param state_status: The state_status of this TemplateSummaryDiffTelegrafConfigs. + :type: str + """ # noqa: E501 + self._state_status = state_status + + @property + def id(self): + """Get the id of this TemplateSummaryDiffTelegrafConfigs. + + :return: The id of this TemplateSummaryDiffTelegrafConfigs. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this TemplateSummaryDiffTelegrafConfigs. + + :param id: The id of this TemplateSummaryDiffTelegrafConfigs. + :type: str + """ # noqa: E501 + self._id = id + + @property + def template_meta_name(self): + """Get the template_meta_name of this TemplateSummaryDiffTelegrafConfigs. + + :return: The template_meta_name of this TemplateSummaryDiffTelegrafConfigs. + :rtype: str + """ # noqa: E501 + return self._template_meta_name + + @template_meta_name.setter + def template_meta_name(self, template_meta_name): + """Set the template_meta_name of this TemplateSummaryDiffTelegrafConfigs. + + :param template_meta_name: The template_meta_name of this TemplateSummaryDiffTelegrafConfigs. + :type: str + """ # noqa: E501 + self._template_meta_name = template_meta_name + + @property + def new(self): + """Get the new of this TemplateSummaryDiffTelegrafConfigs. + + :return: The new of this TemplateSummaryDiffTelegrafConfigs. + :rtype: TelegrafRequest + """ # noqa: E501 + return self._new + + @new.setter + def new(self, new): + """Set the new of this TemplateSummaryDiffTelegrafConfigs. + + :param new: The new of this TemplateSummaryDiffTelegrafConfigs. + :type: TelegrafRequest + """ # noqa: E501 + self._new = new + + @property + def old(self): + """Get the old of this TemplateSummaryDiffTelegrafConfigs. + + :return: The old of this TemplateSummaryDiffTelegrafConfigs. + :rtype: TelegrafRequest + """ # noqa: E501 + return self._old + + @old.setter + def old(self, old): + """Set the old of this TemplateSummaryDiffTelegrafConfigs. + + :param old: The old of this TemplateSummaryDiffTelegrafConfigs. + :type: TelegrafRequest + """ # noqa: E501 + self._old = old + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryDiffTelegrafConfigs): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_diff_variables.py b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_variables.py new file mode 100644 index 000000000..3d4712ebb --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_variables.py @@ -0,0 +1,222 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryDiffVariables(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'kind': 'TemplateKind', + 'state_status': 'str', + 'id': 'str', + 'template_meta_name': 'str', + 'new': 'TemplateSummaryDiffVariablesNewOld', + 'old': 'TemplateSummaryDiffVariablesNewOld' + } + + attribute_map = { + 'kind': 'kind', + 'state_status': 'stateStatus', + 'id': 'id', + 'template_meta_name': 'templateMetaName', + 'new': 'new', + 'old': 'old' + } + + def __init__(self, kind=None, state_status=None, id=None, template_meta_name=None, new=None, old=None): # noqa: E501,D401,D403 + """TemplateSummaryDiffVariables - a model defined in OpenAPI.""" # noqa: E501 + self._kind = None + self._state_status = None + self._id = None + self._template_meta_name = None + self._new = None + self._old = None + self.discriminator = None + + if kind is not None: + self.kind = kind + if state_status is not None: + self.state_status = state_status + if id is not None: + self.id = id + if template_meta_name is not None: + self.template_meta_name = template_meta_name + if new is not None: + self.new = new + if old is not None: + self.old = old + + @property + def kind(self): + """Get the kind of this TemplateSummaryDiffVariables. + + :return: The kind of this TemplateSummaryDiffVariables. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this TemplateSummaryDiffVariables. + + :param kind: The kind of this TemplateSummaryDiffVariables. + :type: TemplateKind + """ # noqa: E501 + self._kind = kind + + @property + def state_status(self): + """Get the state_status of this TemplateSummaryDiffVariables. + + :return: The state_status of this TemplateSummaryDiffVariables. + :rtype: str + """ # noqa: E501 + return self._state_status + + @state_status.setter + def state_status(self, state_status): + """Set the state_status of this TemplateSummaryDiffVariables. + + :param state_status: The state_status of this TemplateSummaryDiffVariables. + :type: str + """ # noqa: E501 + self._state_status = state_status + + @property + def id(self): + """Get the id of this TemplateSummaryDiffVariables. + + :return: The id of this TemplateSummaryDiffVariables. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this TemplateSummaryDiffVariables. + + :param id: The id of this TemplateSummaryDiffVariables. + :type: str + """ # noqa: E501 + self._id = id + + @property + def template_meta_name(self): + """Get the template_meta_name of this TemplateSummaryDiffVariables. + + :return: The template_meta_name of this TemplateSummaryDiffVariables. + :rtype: str + """ # noqa: E501 + return self._template_meta_name + + @template_meta_name.setter + def template_meta_name(self, template_meta_name): + """Set the template_meta_name of this TemplateSummaryDiffVariables. + + :param template_meta_name: The template_meta_name of this TemplateSummaryDiffVariables. + :type: str + """ # noqa: E501 + self._template_meta_name = template_meta_name + + @property + def new(self): + """Get the new of this TemplateSummaryDiffVariables. + + :return: The new of this TemplateSummaryDiffVariables. + :rtype: TemplateSummaryDiffVariablesNewOld + """ # noqa: E501 + return self._new + + @new.setter + def new(self, new): + """Set the new of this TemplateSummaryDiffVariables. + + :param new: The new of this TemplateSummaryDiffVariables. + :type: TemplateSummaryDiffVariablesNewOld + """ # noqa: E501 + self._new = new + + @property + def old(self): + """Get the old of this TemplateSummaryDiffVariables. + + :return: The old of this TemplateSummaryDiffVariables. + :rtype: TemplateSummaryDiffVariablesNewOld + """ # noqa: E501 + return self._old + + @old.setter + def old(self, old): + """Set the old of this TemplateSummaryDiffVariables. + + :param old: The old of this TemplateSummaryDiffVariables. + :type: TemplateSummaryDiffVariablesNewOld + """ # noqa: E501 + self._old = old + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryDiffVariables): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_diff_variables_new_old.py b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_variables_new_old.py new file mode 100644 index 000000000..1537e5daf --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_diff_variables_new_old.py @@ -0,0 +1,153 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryDiffVariablesNewOld(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'name': 'str', + 'description': 'str', + 'args': 'VariableProperties' + } + + attribute_map = { + 'name': 'name', + 'description': 'description', + 'args': 'args' + } + + def __init__(self, name=None, description=None, args=None): # noqa: E501,D401,D403 + """TemplateSummaryDiffVariablesNewOld - a model defined in OpenAPI.""" # noqa: E501 + self._name = None + self._description = None + self._args = None + self.discriminator = None + + if name is not None: + self.name = name + if description is not None: + self.description = description + if args is not None: + self.args = args + + @property + def name(self): + """Get the name of this TemplateSummaryDiffVariablesNewOld. + + :return: The name of this TemplateSummaryDiffVariablesNewOld. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this TemplateSummaryDiffVariablesNewOld. + + :param name: The name of this TemplateSummaryDiffVariablesNewOld. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this TemplateSummaryDiffVariablesNewOld. + + :return: The description of this TemplateSummaryDiffVariablesNewOld. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this TemplateSummaryDiffVariablesNewOld. + + :param description: The description of this TemplateSummaryDiffVariablesNewOld. + :type: str + """ # noqa: E501 + self._description = description + + @property + def args(self): + """Get the args of this TemplateSummaryDiffVariablesNewOld. + + :return: The args of this TemplateSummaryDiffVariablesNewOld. + :rtype: VariableProperties + """ # noqa: E501 + return self._args + + @args.setter + def args(self, args): + """Set the args of this TemplateSummaryDiffVariablesNewOld. + + :param args: The args of this TemplateSummaryDiffVariablesNewOld. + :type: VariableProperties + """ # noqa: E501 + self._args = args + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryDiffVariablesNewOld): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_errors.py b/frogpilot/third_party/influxdb_client/domain/template_summary_errors.py new file mode 100644 index 000000000..3d41ef4eb --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_errors.py @@ -0,0 +1,176 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryErrors(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'kind': 'TemplateKind', + 'reason': 'str', + 'fields': 'list[str]', + 'indexes': 'list[int]' + } + + attribute_map = { + 'kind': 'kind', + 'reason': 'reason', + 'fields': 'fields', + 'indexes': 'indexes' + } + + def __init__(self, kind=None, reason=None, fields=None, indexes=None): # noqa: E501,D401,D403 + """TemplateSummaryErrors - a model defined in OpenAPI.""" # noqa: E501 + self._kind = None + self._reason = None + self._fields = None + self._indexes = None + self.discriminator = None + + if kind is not None: + self.kind = kind + if reason is not None: + self.reason = reason + if fields is not None: + self.fields = fields + if indexes is not None: + self.indexes = indexes + + @property + def kind(self): + """Get the kind of this TemplateSummaryErrors. + + :return: The kind of this TemplateSummaryErrors. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this TemplateSummaryErrors. + + :param kind: The kind of this TemplateSummaryErrors. + :type: TemplateKind + """ # noqa: E501 + self._kind = kind + + @property + def reason(self): + """Get the reason of this TemplateSummaryErrors. + + :return: The reason of this TemplateSummaryErrors. + :rtype: str + """ # noqa: E501 + return self._reason + + @reason.setter + def reason(self, reason): + """Set the reason of this TemplateSummaryErrors. + + :param reason: The reason of this TemplateSummaryErrors. + :type: str + """ # noqa: E501 + self._reason = reason + + @property + def fields(self): + """Get the fields of this TemplateSummaryErrors. + + :return: The fields of this TemplateSummaryErrors. + :rtype: list[str] + """ # noqa: E501 + return self._fields + + @fields.setter + def fields(self, fields): + """Set the fields of this TemplateSummaryErrors. + + :param fields: The fields of this TemplateSummaryErrors. + :type: list[str] + """ # noqa: E501 + self._fields = fields + + @property + def indexes(self): + """Get the indexes of this TemplateSummaryErrors. + + :return: The indexes of this TemplateSummaryErrors. + :rtype: list[int] + """ # noqa: E501 + return self._indexes + + @indexes.setter + def indexes(self, indexes): + """Set the indexes of this TemplateSummaryErrors. + + :param indexes: The indexes of this TemplateSummaryErrors. + :type: list[int] + """ # noqa: E501 + self._indexes = indexes + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryErrors): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_label.py b/frogpilot/third_party/influxdb_client/domain/template_summary_label.py new file mode 100644 index 000000000..727260ad7 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_label.py @@ -0,0 +1,245 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryLabel(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'org_id': 'str', + 'kind': 'TemplateKind', + 'template_meta_name': 'str', + 'name': 'str', + 'properties': 'TemplateSummaryLabelProperties', + 'env_references': 'list[object]' + } + + attribute_map = { + 'id': 'id', + 'org_id': 'orgID', + 'kind': 'kind', + 'template_meta_name': 'templateMetaName', + 'name': 'name', + 'properties': 'properties', + 'env_references': 'envReferences' + } + + def __init__(self, id=None, org_id=None, kind=None, template_meta_name=None, name=None, properties=None, env_references=None): # noqa: E501,D401,D403 + """TemplateSummaryLabel - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._org_id = None + self._kind = None + self._template_meta_name = None + self._name = None + self._properties = None + self._env_references = None + self.discriminator = None + + if id is not None: + self.id = id + if org_id is not None: + self.org_id = org_id + if kind is not None: + self.kind = kind + if template_meta_name is not None: + self.template_meta_name = template_meta_name + if name is not None: + self.name = name + if properties is not None: + self.properties = properties + if env_references is not None: + self.env_references = env_references + + @property + def id(self): + """Get the id of this TemplateSummaryLabel. + + :return: The id of this TemplateSummaryLabel. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this TemplateSummaryLabel. + + :param id: The id of this TemplateSummaryLabel. + :type: str + """ # noqa: E501 + self._id = id + + @property + def org_id(self): + """Get the org_id of this TemplateSummaryLabel. + + :return: The org_id of this TemplateSummaryLabel. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this TemplateSummaryLabel. + + :param org_id: The org_id of this TemplateSummaryLabel. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def kind(self): + """Get the kind of this TemplateSummaryLabel. + + :return: The kind of this TemplateSummaryLabel. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this TemplateSummaryLabel. + + :param kind: The kind of this TemplateSummaryLabel. + :type: TemplateKind + """ # noqa: E501 + self._kind = kind + + @property + def template_meta_name(self): + """Get the template_meta_name of this TemplateSummaryLabel. + + :return: The template_meta_name of this TemplateSummaryLabel. + :rtype: str + """ # noqa: E501 + return self._template_meta_name + + @template_meta_name.setter + def template_meta_name(self, template_meta_name): + """Set the template_meta_name of this TemplateSummaryLabel. + + :param template_meta_name: The template_meta_name of this TemplateSummaryLabel. + :type: str + """ # noqa: E501 + self._template_meta_name = template_meta_name + + @property + def name(self): + """Get the name of this TemplateSummaryLabel. + + :return: The name of this TemplateSummaryLabel. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this TemplateSummaryLabel. + + :param name: The name of this TemplateSummaryLabel. + :type: str + """ # noqa: E501 + self._name = name + + @property + def properties(self): + """Get the properties of this TemplateSummaryLabel. + + :return: The properties of this TemplateSummaryLabel. + :rtype: TemplateSummaryLabelProperties + """ # noqa: E501 + return self._properties + + @properties.setter + def properties(self, properties): + """Set the properties of this TemplateSummaryLabel. + + :param properties: The properties of this TemplateSummaryLabel. + :type: TemplateSummaryLabelProperties + """ # noqa: E501 + self._properties = properties + + @property + def env_references(self): + """Get the env_references of this TemplateSummaryLabel. + + :return: The env_references of this TemplateSummaryLabel. + :rtype: list[object] + """ # noqa: E501 + return self._env_references + + @env_references.setter + def env_references(self, env_references): + """Set the env_references of this TemplateSummaryLabel. + + :param env_references: The env_references of this TemplateSummaryLabel. + :type: list[object] + """ # noqa: E501 + self._env_references = env_references + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryLabel): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_label_properties.py b/frogpilot/third_party/influxdb_client/domain/template_summary_label_properties.py new file mode 100644 index 000000000..82bab1e72 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_label_properties.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummaryLabelProperties(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'color': 'str', + 'description': 'str' + } + + attribute_map = { + 'color': 'color', + 'description': 'description' + } + + def __init__(self, color=None, description=None): # noqa: E501,D401,D403 + """TemplateSummaryLabelProperties - a model defined in OpenAPI.""" # noqa: E501 + self._color = None + self._description = None + self.discriminator = None + + if color is not None: + self.color = color + if description is not None: + self.description = description + + @property + def color(self): + """Get the color of this TemplateSummaryLabelProperties. + + :return: The color of this TemplateSummaryLabelProperties. + :rtype: str + """ # noqa: E501 + return self._color + + @color.setter + def color(self, color): + """Set the color of this TemplateSummaryLabelProperties. + + :param color: The color of this TemplateSummaryLabelProperties. + :type: str + """ # noqa: E501 + self._color = color + + @property + def description(self): + """Get the description of this TemplateSummaryLabelProperties. + + :return: The description of this TemplateSummaryLabelProperties. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this TemplateSummaryLabelProperties. + + :param description: The description of this TemplateSummaryLabelProperties. + :type: str + """ # noqa: E501 + self._description = description + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummaryLabelProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_summary.py b/frogpilot/third_party/influxdb_client/domain/template_summary_summary.py new file mode 100644 index 000000000..5ca10021a --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_summary.py @@ -0,0 +1,360 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummarySummary(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'buckets': 'list[TemplateSummarySummaryBuckets]', + 'checks': 'list[CheckDiscriminator]', + 'dashboards': 'list[TemplateSummarySummaryDashboards]', + 'labels': 'list[TemplateSummaryLabel]', + 'label_mappings': 'list[TemplateSummarySummaryLabelMappings]', + 'missing_env_refs': 'list[str]', + 'missing_secrets': 'list[str]', + 'notification_endpoints': 'list[NotificationEndpointDiscriminator]', + 'notification_rules': 'list[TemplateSummarySummaryNotificationRules]', + 'tasks': 'list[TemplateSummarySummaryTasks]', + 'telegraf_configs': 'list[TelegrafRequest]', + 'variables': 'list[TemplateSummarySummaryVariables]' + } + + attribute_map = { + 'buckets': 'buckets', + 'checks': 'checks', + 'dashboards': 'dashboards', + 'labels': 'labels', + 'label_mappings': 'labelMappings', + 'missing_env_refs': 'missingEnvRefs', + 'missing_secrets': 'missingSecrets', + 'notification_endpoints': 'notificationEndpoints', + 'notification_rules': 'notificationRules', + 'tasks': 'tasks', + 'telegraf_configs': 'telegrafConfigs', + 'variables': 'variables' + } + + def __init__(self, buckets=None, checks=None, dashboards=None, labels=None, label_mappings=None, missing_env_refs=None, missing_secrets=None, notification_endpoints=None, notification_rules=None, tasks=None, telegraf_configs=None, variables=None): # noqa: E501,D401,D403 + """TemplateSummarySummary - a model defined in OpenAPI.""" # noqa: E501 + self._buckets = None + self._checks = None + self._dashboards = None + self._labels = None + self._label_mappings = None + self._missing_env_refs = None + self._missing_secrets = None + self._notification_endpoints = None + self._notification_rules = None + self._tasks = None + self._telegraf_configs = None + self._variables = None + self.discriminator = None + + if buckets is not None: + self.buckets = buckets + if checks is not None: + self.checks = checks + if dashboards is not None: + self.dashboards = dashboards + if labels is not None: + self.labels = labels + if label_mappings is not None: + self.label_mappings = label_mappings + if missing_env_refs is not None: + self.missing_env_refs = missing_env_refs + if missing_secrets is not None: + self.missing_secrets = missing_secrets + if notification_endpoints is not None: + self.notification_endpoints = notification_endpoints + if notification_rules is not None: + self.notification_rules = notification_rules + if tasks is not None: + self.tasks = tasks + if telegraf_configs is not None: + self.telegraf_configs = telegraf_configs + if variables is not None: + self.variables = variables + + @property + def buckets(self): + """Get the buckets of this TemplateSummarySummary. + + :return: The buckets of this TemplateSummarySummary. + :rtype: list[TemplateSummarySummaryBuckets] + """ # noqa: E501 + return self._buckets + + @buckets.setter + def buckets(self, buckets): + """Set the buckets of this TemplateSummarySummary. + + :param buckets: The buckets of this TemplateSummarySummary. + :type: list[TemplateSummarySummaryBuckets] + """ # noqa: E501 + self._buckets = buckets + + @property + def checks(self): + """Get the checks of this TemplateSummarySummary. + + :return: The checks of this TemplateSummarySummary. + :rtype: list[CheckDiscriminator] + """ # noqa: E501 + return self._checks + + @checks.setter + def checks(self, checks): + """Set the checks of this TemplateSummarySummary. + + :param checks: The checks of this TemplateSummarySummary. + :type: list[CheckDiscriminator] + """ # noqa: E501 + self._checks = checks + + @property + def dashboards(self): + """Get the dashboards of this TemplateSummarySummary. + + :return: The dashboards of this TemplateSummarySummary. + :rtype: list[TemplateSummarySummaryDashboards] + """ # noqa: E501 + return self._dashboards + + @dashboards.setter + def dashboards(self, dashboards): + """Set the dashboards of this TemplateSummarySummary. + + :param dashboards: The dashboards of this TemplateSummarySummary. + :type: list[TemplateSummarySummaryDashboards] + """ # noqa: E501 + self._dashboards = dashboards + + @property + def labels(self): + """Get the labels of this TemplateSummarySummary. + + :return: The labels of this TemplateSummarySummary. + :rtype: list[TemplateSummaryLabel] + """ # noqa: E501 + return self._labels + + @labels.setter + def labels(self, labels): + """Set the labels of this TemplateSummarySummary. + + :param labels: The labels of this TemplateSummarySummary. + :type: list[TemplateSummaryLabel] + """ # noqa: E501 + self._labels = labels + + @property + def label_mappings(self): + """Get the label_mappings of this TemplateSummarySummary. + + :return: The label_mappings of this TemplateSummarySummary. + :rtype: list[TemplateSummarySummaryLabelMappings] + """ # noqa: E501 + return self._label_mappings + + @label_mappings.setter + def label_mappings(self, label_mappings): + """Set the label_mappings of this TemplateSummarySummary. + + :param label_mappings: The label_mappings of this TemplateSummarySummary. + :type: list[TemplateSummarySummaryLabelMappings] + """ # noqa: E501 + self._label_mappings = label_mappings + + @property + def missing_env_refs(self): + """Get the missing_env_refs of this TemplateSummarySummary. + + :return: The missing_env_refs of this TemplateSummarySummary. + :rtype: list[str] + """ # noqa: E501 + return self._missing_env_refs + + @missing_env_refs.setter + def missing_env_refs(self, missing_env_refs): + """Set the missing_env_refs of this TemplateSummarySummary. + + :param missing_env_refs: The missing_env_refs of this TemplateSummarySummary. + :type: list[str] + """ # noqa: E501 + self._missing_env_refs = missing_env_refs + + @property + def missing_secrets(self): + """Get the missing_secrets of this TemplateSummarySummary. + + :return: The missing_secrets of this TemplateSummarySummary. + :rtype: list[str] + """ # noqa: E501 + return self._missing_secrets + + @missing_secrets.setter + def missing_secrets(self, missing_secrets): + """Set the missing_secrets of this TemplateSummarySummary. + + :param missing_secrets: The missing_secrets of this TemplateSummarySummary. + :type: list[str] + """ # noqa: E501 + self._missing_secrets = missing_secrets + + @property + def notification_endpoints(self): + """Get the notification_endpoints of this TemplateSummarySummary. + + :return: The notification_endpoints of this TemplateSummarySummary. + :rtype: list[NotificationEndpointDiscriminator] + """ # noqa: E501 + return self._notification_endpoints + + @notification_endpoints.setter + def notification_endpoints(self, notification_endpoints): + """Set the notification_endpoints of this TemplateSummarySummary. + + :param notification_endpoints: The notification_endpoints of this TemplateSummarySummary. + :type: list[NotificationEndpointDiscriminator] + """ # noqa: E501 + self._notification_endpoints = notification_endpoints + + @property + def notification_rules(self): + """Get the notification_rules of this TemplateSummarySummary. + + :return: The notification_rules of this TemplateSummarySummary. + :rtype: list[TemplateSummarySummaryNotificationRules] + """ # noqa: E501 + return self._notification_rules + + @notification_rules.setter + def notification_rules(self, notification_rules): + """Set the notification_rules of this TemplateSummarySummary. + + :param notification_rules: The notification_rules of this TemplateSummarySummary. + :type: list[TemplateSummarySummaryNotificationRules] + """ # noqa: E501 + self._notification_rules = notification_rules + + @property + def tasks(self): + """Get the tasks of this TemplateSummarySummary. + + :return: The tasks of this TemplateSummarySummary. + :rtype: list[TemplateSummarySummaryTasks] + """ # noqa: E501 + return self._tasks + + @tasks.setter + def tasks(self, tasks): + """Set the tasks of this TemplateSummarySummary. + + :param tasks: The tasks of this TemplateSummarySummary. + :type: list[TemplateSummarySummaryTasks] + """ # noqa: E501 + self._tasks = tasks + + @property + def telegraf_configs(self): + """Get the telegraf_configs of this TemplateSummarySummary. + + :return: The telegraf_configs of this TemplateSummarySummary. + :rtype: list[TelegrafRequest] + """ # noqa: E501 + return self._telegraf_configs + + @telegraf_configs.setter + def telegraf_configs(self, telegraf_configs): + """Set the telegraf_configs of this TemplateSummarySummary. + + :param telegraf_configs: The telegraf_configs of this TemplateSummarySummary. + :type: list[TelegrafRequest] + """ # noqa: E501 + self._telegraf_configs = telegraf_configs + + @property + def variables(self): + """Get the variables of this TemplateSummarySummary. + + :return: The variables of this TemplateSummarySummary. + :rtype: list[TemplateSummarySummaryVariables] + """ # noqa: E501 + return self._variables + + @variables.setter + def variables(self, variables): + """Set the variables of this TemplateSummarySummary. + + :param variables: The variables of this TemplateSummarySummary. + :type: list[TemplateSummarySummaryVariables] + """ # noqa: E501 + self._variables = variables + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummarySummary): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_summary_buckets.py b/frogpilot/third_party/influxdb_client/domain/template_summary_summary_buckets.py new file mode 100644 index 000000000..ba43e8ca1 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_summary_buckets.py @@ -0,0 +1,291 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummarySummaryBuckets(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'org_id': 'str', + 'kind': 'TemplateKind', + 'template_meta_name': 'str', + 'name': 'str', + 'description': 'str', + 'retention_period': 'int', + 'label_associations': 'list[TemplateSummaryLabel]', + 'env_references': 'list[object]' + } + + attribute_map = { + 'id': 'id', + 'org_id': 'orgID', + 'kind': 'kind', + 'template_meta_name': 'templateMetaName', + 'name': 'name', + 'description': 'description', + 'retention_period': 'retentionPeriod', + 'label_associations': 'labelAssociations', + 'env_references': 'envReferences' + } + + def __init__(self, id=None, org_id=None, kind=None, template_meta_name=None, name=None, description=None, retention_period=None, label_associations=None, env_references=None): # noqa: E501,D401,D403 + """TemplateSummarySummaryBuckets - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._org_id = None + self._kind = None + self._template_meta_name = None + self._name = None + self._description = None + self._retention_period = None + self._label_associations = None + self._env_references = None + self.discriminator = None + + if id is not None: + self.id = id + if org_id is not None: + self.org_id = org_id + if kind is not None: + self.kind = kind + if template_meta_name is not None: + self.template_meta_name = template_meta_name + if name is not None: + self.name = name + if description is not None: + self.description = description + if retention_period is not None: + self.retention_period = retention_period + if label_associations is not None: + self.label_associations = label_associations + if env_references is not None: + self.env_references = env_references + + @property + def id(self): + """Get the id of this TemplateSummarySummaryBuckets. + + :return: The id of this TemplateSummarySummaryBuckets. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this TemplateSummarySummaryBuckets. + + :param id: The id of this TemplateSummarySummaryBuckets. + :type: str + """ # noqa: E501 + self._id = id + + @property + def org_id(self): + """Get the org_id of this TemplateSummarySummaryBuckets. + + :return: The org_id of this TemplateSummarySummaryBuckets. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this TemplateSummarySummaryBuckets. + + :param org_id: The org_id of this TemplateSummarySummaryBuckets. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def kind(self): + """Get the kind of this TemplateSummarySummaryBuckets. + + :return: The kind of this TemplateSummarySummaryBuckets. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this TemplateSummarySummaryBuckets. + + :param kind: The kind of this TemplateSummarySummaryBuckets. + :type: TemplateKind + """ # noqa: E501 + self._kind = kind + + @property + def template_meta_name(self): + """Get the template_meta_name of this TemplateSummarySummaryBuckets. + + :return: The template_meta_name of this TemplateSummarySummaryBuckets. + :rtype: str + """ # noqa: E501 + return self._template_meta_name + + @template_meta_name.setter + def template_meta_name(self, template_meta_name): + """Set the template_meta_name of this TemplateSummarySummaryBuckets. + + :param template_meta_name: The template_meta_name of this TemplateSummarySummaryBuckets. + :type: str + """ # noqa: E501 + self._template_meta_name = template_meta_name + + @property + def name(self): + """Get the name of this TemplateSummarySummaryBuckets. + + :return: The name of this TemplateSummarySummaryBuckets. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this TemplateSummarySummaryBuckets. + + :param name: The name of this TemplateSummarySummaryBuckets. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this TemplateSummarySummaryBuckets. + + :return: The description of this TemplateSummarySummaryBuckets. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this TemplateSummarySummaryBuckets. + + :param description: The description of this TemplateSummarySummaryBuckets. + :type: str + """ # noqa: E501 + self._description = description + + @property + def retention_period(self): + """Get the retention_period of this TemplateSummarySummaryBuckets. + + :return: The retention_period of this TemplateSummarySummaryBuckets. + :rtype: int + """ # noqa: E501 + return self._retention_period + + @retention_period.setter + def retention_period(self, retention_period): + """Set the retention_period of this TemplateSummarySummaryBuckets. + + :param retention_period: The retention_period of this TemplateSummarySummaryBuckets. + :type: int + """ # noqa: E501 + self._retention_period = retention_period + + @property + def label_associations(self): + """Get the label_associations of this TemplateSummarySummaryBuckets. + + :return: The label_associations of this TemplateSummarySummaryBuckets. + :rtype: list[TemplateSummaryLabel] + """ # noqa: E501 + return self._label_associations + + @label_associations.setter + def label_associations(self, label_associations): + """Set the label_associations of this TemplateSummarySummaryBuckets. + + :param label_associations: The label_associations of this TemplateSummarySummaryBuckets. + :type: list[TemplateSummaryLabel] + """ # noqa: E501 + self._label_associations = label_associations + + @property + def env_references(self): + """Get the env_references of this TemplateSummarySummaryBuckets. + + :return: The env_references of this TemplateSummarySummaryBuckets. + :rtype: list[object] + """ # noqa: E501 + return self._env_references + + @env_references.setter + def env_references(self, env_references): + """Set the env_references of this TemplateSummarySummaryBuckets. + + :param env_references: The env_references of this TemplateSummarySummaryBuckets. + :type: list[object] + """ # noqa: E501 + self._env_references = env_references + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummarySummaryBuckets): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_summary_dashboards.py b/frogpilot/third_party/influxdb_client/domain/template_summary_summary_dashboards.py new file mode 100644 index 000000000..91a548494 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_summary_dashboards.py @@ -0,0 +1,291 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummarySummaryDashboards(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'org_id': 'str', + 'kind': 'TemplateKind', + 'template_meta_name': 'str', + 'name': 'str', + 'description': 'str', + 'label_associations': 'list[TemplateSummaryLabel]', + 'charts': 'list[TemplateChart]', + 'env_references': 'list[object]' + } + + attribute_map = { + 'id': 'id', + 'org_id': 'orgID', + 'kind': 'kind', + 'template_meta_name': 'templateMetaName', + 'name': 'name', + 'description': 'description', + 'label_associations': 'labelAssociations', + 'charts': 'charts', + 'env_references': 'envReferences' + } + + def __init__(self, id=None, org_id=None, kind=None, template_meta_name=None, name=None, description=None, label_associations=None, charts=None, env_references=None): # noqa: E501,D401,D403 + """TemplateSummarySummaryDashboards - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._org_id = None + self._kind = None + self._template_meta_name = None + self._name = None + self._description = None + self._label_associations = None + self._charts = None + self._env_references = None + self.discriminator = None + + if id is not None: + self.id = id + if org_id is not None: + self.org_id = org_id + if kind is not None: + self.kind = kind + if template_meta_name is not None: + self.template_meta_name = template_meta_name + if name is not None: + self.name = name + if description is not None: + self.description = description + if label_associations is not None: + self.label_associations = label_associations + if charts is not None: + self.charts = charts + if env_references is not None: + self.env_references = env_references + + @property + def id(self): + """Get the id of this TemplateSummarySummaryDashboards. + + :return: The id of this TemplateSummarySummaryDashboards. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this TemplateSummarySummaryDashboards. + + :param id: The id of this TemplateSummarySummaryDashboards. + :type: str + """ # noqa: E501 + self._id = id + + @property + def org_id(self): + """Get the org_id of this TemplateSummarySummaryDashboards. + + :return: The org_id of this TemplateSummarySummaryDashboards. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this TemplateSummarySummaryDashboards. + + :param org_id: The org_id of this TemplateSummarySummaryDashboards. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def kind(self): + """Get the kind of this TemplateSummarySummaryDashboards. + + :return: The kind of this TemplateSummarySummaryDashboards. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this TemplateSummarySummaryDashboards. + + :param kind: The kind of this TemplateSummarySummaryDashboards. + :type: TemplateKind + """ # noqa: E501 + self._kind = kind + + @property + def template_meta_name(self): + """Get the template_meta_name of this TemplateSummarySummaryDashboards. + + :return: The template_meta_name of this TemplateSummarySummaryDashboards. + :rtype: str + """ # noqa: E501 + return self._template_meta_name + + @template_meta_name.setter + def template_meta_name(self, template_meta_name): + """Set the template_meta_name of this TemplateSummarySummaryDashboards. + + :param template_meta_name: The template_meta_name of this TemplateSummarySummaryDashboards. + :type: str + """ # noqa: E501 + self._template_meta_name = template_meta_name + + @property + def name(self): + """Get the name of this TemplateSummarySummaryDashboards. + + :return: The name of this TemplateSummarySummaryDashboards. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this TemplateSummarySummaryDashboards. + + :param name: The name of this TemplateSummarySummaryDashboards. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this TemplateSummarySummaryDashboards. + + :return: The description of this TemplateSummarySummaryDashboards. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this TemplateSummarySummaryDashboards. + + :param description: The description of this TemplateSummarySummaryDashboards. + :type: str + """ # noqa: E501 + self._description = description + + @property + def label_associations(self): + """Get the label_associations of this TemplateSummarySummaryDashboards. + + :return: The label_associations of this TemplateSummarySummaryDashboards. + :rtype: list[TemplateSummaryLabel] + """ # noqa: E501 + return self._label_associations + + @label_associations.setter + def label_associations(self, label_associations): + """Set the label_associations of this TemplateSummarySummaryDashboards. + + :param label_associations: The label_associations of this TemplateSummarySummaryDashboards. + :type: list[TemplateSummaryLabel] + """ # noqa: E501 + self._label_associations = label_associations + + @property + def charts(self): + """Get the charts of this TemplateSummarySummaryDashboards. + + :return: The charts of this TemplateSummarySummaryDashboards. + :rtype: list[TemplateChart] + """ # noqa: E501 + return self._charts + + @charts.setter + def charts(self, charts): + """Set the charts of this TemplateSummarySummaryDashboards. + + :param charts: The charts of this TemplateSummarySummaryDashboards. + :type: list[TemplateChart] + """ # noqa: E501 + self._charts = charts + + @property + def env_references(self): + """Get the env_references of this TemplateSummarySummaryDashboards. + + :return: The env_references of this TemplateSummarySummaryDashboards. + :rtype: list[object] + """ # noqa: E501 + return self._env_references + + @env_references.setter + def env_references(self, env_references): + """Set the env_references of this TemplateSummarySummaryDashboards. + + :param env_references: The env_references of this TemplateSummarySummaryDashboards. + :type: list[object] + """ # noqa: E501 + self._env_references = env_references + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummarySummaryDashboards): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_summary_label_mappings.py b/frogpilot/third_party/influxdb_client/domain/template_summary_summary_label_mappings.py new file mode 100644 index 000000000..9051866ce --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_summary_label_mappings.py @@ -0,0 +1,268 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummarySummaryLabelMappings(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'status': 'str', + 'resource_template_meta_name': 'str', + 'resource_name': 'str', + 'resource_id': 'str', + 'resource_type': 'str', + 'label_template_meta_name': 'str', + 'label_name': 'str', + 'label_id': 'str' + } + + attribute_map = { + 'status': 'status', + 'resource_template_meta_name': 'resourceTemplateMetaName', + 'resource_name': 'resourceName', + 'resource_id': 'resourceID', + 'resource_type': 'resourceType', + 'label_template_meta_name': 'labelTemplateMetaName', + 'label_name': 'labelName', + 'label_id': 'labelID' + } + + def __init__(self, status=None, resource_template_meta_name=None, resource_name=None, resource_id=None, resource_type=None, label_template_meta_name=None, label_name=None, label_id=None): # noqa: E501,D401,D403 + """TemplateSummarySummaryLabelMappings - a model defined in OpenAPI.""" # noqa: E501 + self._status = None + self._resource_template_meta_name = None + self._resource_name = None + self._resource_id = None + self._resource_type = None + self._label_template_meta_name = None + self._label_name = None + self._label_id = None + self.discriminator = None + + if status is not None: + self.status = status + if resource_template_meta_name is not None: + self.resource_template_meta_name = resource_template_meta_name + if resource_name is not None: + self.resource_name = resource_name + if resource_id is not None: + self.resource_id = resource_id + if resource_type is not None: + self.resource_type = resource_type + if label_template_meta_name is not None: + self.label_template_meta_name = label_template_meta_name + if label_name is not None: + self.label_name = label_name + if label_id is not None: + self.label_id = label_id + + @property + def status(self): + """Get the status of this TemplateSummarySummaryLabelMappings. + + :return: The status of this TemplateSummarySummaryLabelMappings. + :rtype: str + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this TemplateSummarySummaryLabelMappings. + + :param status: The status of this TemplateSummarySummaryLabelMappings. + :type: str + """ # noqa: E501 + self._status = status + + @property + def resource_template_meta_name(self): + """Get the resource_template_meta_name of this TemplateSummarySummaryLabelMappings. + + :return: The resource_template_meta_name of this TemplateSummarySummaryLabelMappings. + :rtype: str + """ # noqa: E501 + return self._resource_template_meta_name + + @resource_template_meta_name.setter + def resource_template_meta_name(self, resource_template_meta_name): + """Set the resource_template_meta_name of this TemplateSummarySummaryLabelMappings. + + :param resource_template_meta_name: The resource_template_meta_name of this TemplateSummarySummaryLabelMappings. + :type: str + """ # noqa: E501 + self._resource_template_meta_name = resource_template_meta_name + + @property + def resource_name(self): + """Get the resource_name of this TemplateSummarySummaryLabelMappings. + + :return: The resource_name of this TemplateSummarySummaryLabelMappings. + :rtype: str + """ # noqa: E501 + return self._resource_name + + @resource_name.setter + def resource_name(self, resource_name): + """Set the resource_name of this TemplateSummarySummaryLabelMappings. + + :param resource_name: The resource_name of this TemplateSummarySummaryLabelMappings. + :type: str + """ # noqa: E501 + self._resource_name = resource_name + + @property + def resource_id(self): + """Get the resource_id of this TemplateSummarySummaryLabelMappings. + + :return: The resource_id of this TemplateSummarySummaryLabelMappings. + :rtype: str + """ # noqa: E501 + return self._resource_id + + @resource_id.setter + def resource_id(self, resource_id): + """Set the resource_id of this TemplateSummarySummaryLabelMappings. + + :param resource_id: The resource_id of this TemplateSummarySummaryLabelMappings. + :type: str + """ # noqa: E501 + self._resource_id = resource_id + + @property + def resource_type(self): + """Get the resource_type of this TemplateSummarySummaryLabelMappings. + + :return: The resource_type of this TemplateSummarySummaryLabelMappings. + :rtype: str + """ # noqa: E501 + return self._resource_type + + @resource_type.setter + def resource_type(self, resource_type): + """Set the resource_type of this TemplateSummarySummaryLabelMappings. + + :param resource_type: The resource_type of this TemplateSummarySummaryLabelMappings. + :type: str + """ # noqa: E501 + self._resource_type = resource_type + + @property + def label_template_meta_name(self): + """Get the label_template_meta_name of this TemplateSummarySummaryLabelMappings. + + :return: The label_template_meta_name of this TemplateSummarySummaryLabelMappings. + :rtype: str + """ # noqa: E501 + return self._label_template_meta_name + + @label_template_meta_name.setter + def label_template_meta_name(self, label_template_meta_name): + """Set the label_template_meta_name of this TemplateSummarySummaryLabelMappings. + + :param label_template_meta_name: The label_template_meta_name of this TemplateSummarySummaryLabelMappings. + :type: str + """ # noqa: E501 + self._label_template_meta_name = label_template_meta_name + + @property + def label_name(self): + """Get the label_name of this TemplateSummarySummaryLabelMappings. + + :return: The label_name of this TemplateSummarySummaryLabelMappings. + :rtype: str + """ # noqa: E501 + return self._label_name + + @label_name.setter + def label_name(self, label_name): + """Set the label_name of this TemplateSummarySummaryLabelMappings. + + :param label_name: The label_name of this TemplateSummarySummaryLabelMappings. + :type: str + """ # noqa: E501 + self._label_name = label_name + + @property + def label_id(self): + """Get the label_id of this TemplateSummarySummaryLabelMappings. + + :return: The label_id of this TemplateSummarySummaryLabelMappings. + :rtype: str + """ # noqa: E501 + return self._label_id + + @label_id.setter + def label_id(self, label_id): + """Set the label_id of this TemplateSummarySummaryLabelMappings. + + :param label_id: The label_id of this TemplateSummarySummaryLabelMappings. + :type: str + """ # noqa: E501 + self._label_id = label_id + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummarySummaryLabelMappings): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_summary_notification_rules.py b/frogpilot/third_party/influxdb_client/domain/template_summary_summary_notification_rules.py new file mode 100644 index 000000000..63168ed0e --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_summary_notification_rules.py @@ -0,0 +1,429 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummarySummaryNotificationRules(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'kind': 'TemplateKind', + 'template_meta_name': 'str', + 'name': 'str', + 'description': 'str', + 'endpoint_template_meta_name': 'str', + 'endpoint_id': 'str', + 'endpoint_type': 'str', + 'every': 'str', + 'offset': 'str', + 'message_template': 'str', + 'status': 'str', + 'status_rules': 'list[TemplateSummarySummaryStatusRules]', + 'tag_rules': 'list[TemplateSummarySummaryTagRules]', + 'label_associations': 'list[TemplateSummaryLabel]', + 'env_references': 'list[object]' + } + + attribute_map = { + 'kind': 'kind', + 'template_meta_name': 'templateMetaName', + 'name': 'name', + 'description': 'description', + 'endpoint_template_meta_name': 'endpointTemplateMetaName', + 'endpoint_id': 'endpointID', + 'endpoint_type': 'endpointType', + 'every': 'every', + 'offset': 'offset', + 'message_template': 'messageTemplate', + 'status': 'status', + 'status_rules': 'statusRules', + 'tag_rules': 'tagRules', + 'label_associations': 'labelAssociations', + 'env_references': 'envReferences' + } + + def __init__(self, kind=None, template_meta_name=None, name=None, description=None, endpoint_template_meta_name=None, endpoint_id=None, endpoint_type=None, every=None, offset=None, message_template=None, status=None, status_rules=None, tag_rules=None, label_associations=None, env_references=None): # noqa: E501,D401,D403 + """TemplateSummarySummaryNotificationRules - a model defined in OpenAPI.""" # noqa: E501 + self._kind = None + self._template_meta_name = None + self._name = None + self._description = None + self._endpoint_template_meta_name = None + self._endpoint_id = None + self._endpoint_type = None + self._every = None + self._offset = None + self._message_template = None + self._status = None + self._status_rules = None + self._tag_rules = None + self._label_associations = None + self._env_references = None + self.discriminator = None + + if kind is not None: + self.kind = kind + if template_meta_name is not None: + self.template_meta_name = template_meta_name + if name is not None: + self.name = name + if description is not None: + self.description = description + if endpoint_template_meta_name is not None: + self.endpoint_template_meta_name = endpoint_template_meta_name + if endpoint_id is not None: + self.endpoint_id = endpoint_id + if endpoint_type is not None: + self.endpoint_type = endpoint_type + if every is not None: + self.every = every + if offset is not None: + self.offset = offset + if message_template is not None: + self.message_template = message_template + if status is not None: + self.status = status + if status_rules is not None: + self.status_rules = status_rules + if tag_rules is not None: + self.tag_rules = tag_rules + if label_associations is not None: + self.label_associations = label_associations + if env_references is not None: + self.env_references = env_references + + @property + def kind(self): + """Get the kind of this TemplateSummarySummaryNotificationRules. + + :return: The kind of this TemplateSummarySummaryNotificationRules. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this TemplateSummarySummaryNotificationRules. + + :param kind: The kind of this TemplateSummarySummaryNotificationRules. + :type: TemplateKind + """ # noqa: E501 + self._kind = kind + + @property + def template_meta_name(self): + """Get the template_meta_name of this TemplateSummarySummaryNotificationRules. + + :return: The template_meta_name of this TemplateSummarySummaryNotificationRules. + :rtype: str + """ # noqa: E501 + return self._template_meta_name + + @template_meta_name.setter + def template_meta_name(self, template_meta_name): + """Set the template_meta_name of this TemplateSummarySummaryNotificationRules. + + :param template_meta_name: The template_meta_name of this TemplateSummarySummaryNotificationRules. + :type: str + """ # noqa: E501 + self._template_meta_name = template_meta_name + + @property + def name(self): + """Get the name of this TemplateSummarySummaryNotificationRules. + + :return: The name of this TemplateSummarySummaryNotificationRules. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this TemplateSummarySummaryNotificationRules. + + :param name: The name of this TemplateSummarySummaryNotificationRules. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this TemplateSummarySummaryNotificationRules. + + :return: The description of this TemplateSummarySummaryNotificationRules. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this TemplateSummarySummaryNotificationRules. + + :param description: The description of this TemplateSummarySummaryNotificationRules. + :type: str + """ # noqa: E501 + self._description = description + + @property + def endpoint_template_meta_name(self): + """Get the endpoint_template_meta_name of this TemplateSummarySummaryNotificationRules. + + :return: The endpoint_template_meta_name of this TemplateSummarySummaryNotificationRules. + :rtype: str + """ # noqa: E501 + return self._endpoint_template_meta_name + + @endpoint_template_meta_name.setter + def endpoint_template_meta_name(self, endpoint_template_meta_name): + """Set the endpoint_template_meta_name of this TemplateSummarySummaryNotificationRules. + + :param endpoint_template_meta_name: The endpoint_template_meta_name of this TemplateSummarySummaryNotificationRules. + :type: str + """ # noqa: E501 + self._endpoint_template_meta_name = endpoint_template_meta_name + + @property + def endpoint_id(self): + """Get the endpoint_id of this TemplateSummarySummaryNotificationRules. + + :return: The endpoint_id of this TemplateSummarySummaryNotificationRules. + :rtype: str + """ # noqa: E501 + return self._endpoint_id + + @endpoint_id.setter + def endpoint_id(self, endpoint_id): + """Set the endpoint_id of this TemplateSummarySummaryNotificationRules. + + :param endpoint_id: The endpoint_id of this TemplateSummarySummaryNotificationRules. + :type: str + """ # noqa: E501 + self._endpoint_id = endpoint_id + + @property + def endpoint_type(self): + """Get the endpoint_type of this TemplateSummarySummaryNotificationRules. + + :return: The endpoint_type of this TemplateSummarySummaryNotificationRules. + :rtype: str + """ # noqa: E501 + return self._endpoint_type + + @endpoint_type.setter + def endpoint_type(self, endpoint_type): + """Set the endpoint_type of this TemplateSummarySummaryNotificationRules. + + :param endpoint_type: The endpoint_type of this TemplateSummarySummaryNotificationRules. + :type: str + """ # noqa: E501 + self._endpoint_type = endpoint_type + + @property + def every(self): + """Get the every of this TemplateSummarySummaryNotificationRules. + + :return: The every of this TemplateSummarySummaryNotificationRules. + :rtype: str + """ # noqa: E501 + return self._every + + @every.setter + def every(self, every): + """Set the every of this TemplateSummarySummaryNotificationRules. + + :param every: The every of this TemplateSummarySummaryNotificationRules. + :type: str + """ # noqa: E501 + self._every = every + + @property + def offset(self): + """Get the offset of this TemplateSummarySummaryNotificationRules. + + :return: The offset of this TemplateSummarySummaryNotificationRules. + :rtype: str + """ # noqa: E501 + return self._offset + + @offset.setter + def offset(self, offset): + """Set the offset of this TemplateSummarySummaryNotificationRules. + + :param offset: The offset of this TemplateSummarySummaryNotificationRules. + :type: str + """ # noqa: E501 + self._offset = offset + + @property + def message_template(self): + """Get the message_template of this TemplateSummarySummaryNotificationRules. + + :return: The message_template of this TemplateSummarySummaryNotificationRules. + :rtype: str + """ # noqa: E501 + return self._message_template + + @message_template.setter + def message_template(self, message_template): + """Set the message_template of this TemplateSummarySummaryNotificationRules. + + :param message_template: The message_template of this TemplateSummarySummaryNotificationRules. + :type: str + """ # noqa: E501 + self._message_template = message_template + + @property + def status(self): + """Get the status of this TemplateSummarySummaryNotificationRules. + + :return: The status of this TemplateSummarySummaryNotificationRules. + :rtype: str + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this TemplateSummarySummaryNotificationRules. + + :param status: The status of this TemplateSummarySummaryNotificationRules. + :type: str + """ # noqa: E501 + self._status = status + + @property + def status_rules(self): + """Get the status_rules of this TemplateSummarySummaryNotificationRules. + + :return: The status_rules of this TemplateSummarySummaryNotificationRules. + :rtype: list[TemplateSummarySummaryStatusRules] + """ # noqa: E501 + return self._status_rules + + @status_rules.setter + def status_rules(self, status_rules): + """Set the status_rules of this TemplateSummarySummaryNotificationRules. + + :param status_rules: The status_rules of this TemplateSummarySummaryNotificationRules. + :type: list[TemplateSummarySummaryStatusRules] + """ # noqa: E501 + self._status_rules = status_rules + + @property + def tag_rules(self): + """Get the tag_rules of this TemplateSummarySummaryNotificationRules. + + :return: The tag_rules of this TemplateSummarySummaryNotificationRules. + :rtype: list[TemplateSummarySummaryTagRules] + """ # noqa: E501 + return self._tag_rules + + @tag_rules.setter + def tag_rules(self, tag_rules): + """Set the tag_rules of this TemplateSummarySummaryNotificationRules. + + :param tag_rules: The tag_rules of this TemplateSummarySummaryNotificationRules. + :type: list[TemplateSummarySummaryTagRules] + """ # noqa: E501 + self._tag_rules = tag_rules + + @property + def label_associations(self): + """Get the label_associations of this TemplateSummarySummaryNotificationRules. + + :return: The label_associations of this TemplateSummarySummaryNotificationRules. + :rtype: list[TemplateSummaryLabel] + """ # noqa: E501 + return self._label_associations + + @label_associations.setter + def label_associations(self, label_associations): + """Set the label_associations of this TemplateSummarySummaryNotificationRules. + + :param label_associations: The label_associations of this TemplateSummarySummaryNotificationRules. + :type: list[TemplateSummaryLabel] + """ # noqa: E501 + self._label_associations = label_associations + + @property + def env_references(self): + """Get the env_references of this TemplateSummarySummaryNotificationRules. + + :return: The env_references of this TemplateSummarySummaryNotificationRules. + :rtype: list[object] + """ # noqa: E501 + return self._env_references + + @env_references.setter + def env_references(self, env_references): + """Set the env_references of this TemplateSummarySummaryNotificationRules. + + :param env_references: The env_references of this TemplateSummarySummaryNotificationRules. + :type: list[object] + """ # noqa: E501 + self._env_references = env_references + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummarySummaryNotificationRules): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_summary_status_rules.py b/frogpilot/third_party/influxdb_client/domain/template_summary_summary_status_rules.py new file mode 100644 index 000000000..90a7c5a9c --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_summary_status_rules.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummarySummaryStatusRules(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'current_level': 'str', + 'previous_level': 'str' + } + + attribute_map = { + 'current_level': 'currentLevel', + 'previous_level': 'previousLevel' + } + + def __init__(self, current_level=None, previous_level=None): # noqa: E501,D401,D403 + """TemplateSummarySummaryStatusRules - a model defined in OpenAPI.""" # noqa: E501 + self._current_level = None + self._previous_level = None + self.discriminator = None + + if current_level is not None: + self.current_level = current_level + if previous_level is not None: + self.previous_level = previous_level + + @property + def current_level(self): + """Get the current_level of this TemplateSummarySummaryStatusRules. + + :return: The current_level of this TemplateSummarySummaryStatusRules. + :rtype: str + """ # noqa: E501 + return self._current_level + + @current_level.setter + def current_level(self, current_level): + """Set the current_level of this TemplateSummarySummaryStatusRules. + + :param current_level: The current_level of this TemplateSummarySummaryStatusRules. + :type: str + """ # noqa: E501 + self._current_level = current_level + + @property + def previous_level(self): + """Get the previous_level of this TemplateSummarySummaryStatusRules. + + :return: The previous_level of this TemplateSummarySummaryStatusRules. + :rtype: str + """ # noqa: E501 + return self._previous_level + + @previous_level.setter + def previous_level(self, previous_level): + """Set the previous_level of this TemplateSummarySummaryStatusRules. + + :param previous_level: The previous_level of this TemplateSummarySummaryStatusRules. + :type: str + """ # noqa: E501 + self._previous_level = previous_level + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummarySummaryStatusRules): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_summary_tag_rules.py b/frogpilot/third_party/influxdb_client/domain/template_summary_summary_tag_rules.py new file mode 100644 index 000000000..3c1a4475c --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_summary_tag_rules.py @@ -0,0 +1,153 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummarySummaryTagRules(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'key': 'str', + 'value': 'str', + 'operator': 'str' + } + + attribute_map = { + 'key': 'key', + 'value': 'value', + 'operator': 'operator' + } + + def __init__(self, key=None, value=None, operator=None): # noqa: E501,D401,D403 + """TemplateSummarySummaryTagRules - a model defined in OpenAPI.""" # noqa: E501 + self._key = None + self._value = None + self._operator = None + self.discriminator = None + + if key is not None: + self.key = key + if value is not None: + self.value = value + if operator is not None: + self.operator = operator + + @property + def key(self): + """Get the key of this TemplateSummarySummaryTagRules. + + :return: The key of this TemplateSummarySummaryTagRules. + :rtype: str + """ # noqa: E501 + return self._key + + @key.setter + def key(self, key): + """Set the key of this TemplateSummarySummaryTagRules. + + :param key: The key of this TemplateSummarySummaryTagRules. + :type: str + """ # noqa: E501 + self._key = key + + @property + def value(self): + """Get the value of this TemplateSummarySummaryTagRules. + + :return: The value of this TemplateSummarySummaryTagRules. + :rtype: str + """ # noqa: E501 + return self._value + + @value.setter + def value(self, value): + """Set the value of this TemplateSummarySummaryTagRules. + + :param value: The value of this TemplateSummarySummaryTagRules. + :type: str + """ # noqa: E501 + self._value = value + + @property + def operator(self): + """Get the operator of this TemplateSummarySummaryTagRules. + + :return: The operator of this TemplateSummarySummaryTagRules. + :rtype: str + """ # noqa: E501 + return self._operator + + @operator.setter + def operator(self, operator): + """Set the operator of this TemplateSummarySummaryTagRules. + + :param operator: The operator of this TemplateSummarySummaryTagRules. + :type: str + """ # noqa: E501 + self._operator = operator + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummarySummaryTagRules): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_summary_tasks.py b/frogpilot/third_party/influxdb_client/domain/template_summary_summary_tasks.py new file mode 100644 index 000000000..7b8db7518 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_summary_tasks.py @@ -0,0 +1,337 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummarySummaryTasks(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'kind': 'TemplateKind', + 'template_meta_name': 'str', + 'id': 'str', + 'name': 'str', + 'cron': 'str', + 'description': 'str', + 'every': 'str', + 'offset': 'str', + 'query': 'str', + 'status': 'str', + 'env_references': 'list[object]' + } + + attribute_map = { + 'kind': 'kind', + 'template_meta_name': 'templateMetaName', + 'id': 'id', + 'name': 'name', + 'cron': 'cron', + 'description': 'description', + 'every': 'every', + 'offset': 'offset', + 'query': 'query', + 'status': 'status', + 'env_references': 'envReferences' + } + + def __init__(self, kind=None, template_meta_name=None, id=None, name=None, cron=None, description=None, every=None, offset=None, query=None, status=None, env_references=None): # noqa: E501,D401,D403 + """TemplateSummarySummaryTasks - a model defined in OpenAPI.""" # noqa: E501 + self._kind = None + self._template_meta_name = None + self._id = None + self._name = None + self._cron = None + self._description = None + self._every = None + self._offset = None + self._query = None + self._status = None + self._env_references = None + self.discriminator = None + + if kind is not None: + self.kind = kind + if template_meta_name is not None: + self.template_meta_name = template_meta_name + if id is not None: + self.id = id + if name is not None: + self.name = name + if cron is not None: + self.cron = cron + if description is not None: + self.description = description + if every is not None: + self.every = every + if offset is not None: + self.offset = offset + if query is not None: + self.query = query + if status is not None: + self.status = status + if env_references is not None: + self.env_references = env_references + + @property + def kind(self): + """Get the kind of this TemplateSummarySummaryTasks. + + :return: The kind of this TemplateSummarySummaryTasks. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this TemplateSummarySummaryTasks. + + :param kind: The kind of this TemplateSummarySummaryTasks. + :type: TemplateKind + """ # noqa: E501 + self._kind = kind + + @property + def template_meta_name(self): + """Get the template_meta_name of this TemplateSummarySummaryTasks. + + :return: The template_meta_name of this TemplateSummarySummaryTasks. + :rtype: str + """ # noqa: E501 + return self._template_meta_name + + @template_meta_name.setter + def template_meta_name(self, template_meta_name): + """Set the template_meta_name of this TemplateSummarySummaryTasks. + + :param template_meta_name: The template_meta_name of this TemplateSummarySummaryTasks. + :type: str + """ # noqa: E501 + self._template_meta_name = template_meta_name + + @property + def id(self): + """Get the id of this TemplateSummarySummaryTasks. + + :return: The id of this TemplateSummarySummaryTasks. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this TemplateSummarySummaryTasks. + + :param id: The id of this TemplateSummarySummaryTasks. + :type: str + """ # noqa: E501 + self._id = id + + @property + def name(self): + """Get the name of this TemplateSummarySummaryTasks. + + :return: The name of this TemplateSummarySummaryTasks. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this TemplateSummarySummaryTasks. + + :param name: The name of this TemplateSummarySummaryTasks. + :type: str + """ # noqa: E501 + self._name = name + + @property + def cron(self): + """Get the cron of this TemplateSummarySummaryTasks. + + :return: The cron of this TemplateSummarySummaryTasks. + :rtype: str + """ # noqa: E501 + return self._cron + + @cron.setter + def cron(self, cron): + """Set the cron of this TemplateSummarySummaryTasks. + + :param cron: The cron of this TemplateSummarySummaryTasks. + :type: str + """ # noqa: E501 + self._cron = cron + + @property + def description(self): + """Get the description of this TemplateSummarySummaryTasks. + + :return: The description of this TemplateSummarySummaryTasks. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this TemplateSummarySummaryTasks. + + :param description: The description of this TemplateSummarySummaryTasks. + :type: str + """ # noqa: E501 + self._description = description + + @property + def every(self): + """Get the every of this TemplateSummarySummaryTasks. + + :return: The every of this TemplateSummarySummaryTasks. + :rtype: str + """ # noqa: E501 + return self._every + + @every.setter + def every(self, every): + """Set the every of this TemplateSummarySummaryTasks. + + :param every: The every of this TemplateSummarySummaryTasks. + :type: str + """ # noqa: E501 + self._every = every + + @property + def offset(self): + """Get the offset of this TemplateSummarySummaryTasks. + + :return: The offset of this TemplateSummarySummaryTasks. + :rtype: str + """ # noqa: E501 + return self._offset + + @offset.setter + def offset(self, offset): + """Set the offset of this TemplateSummarySummaryTasks. + + :param offset: The offset of this TemplateSummarySummaryTasks. + :type: str + """ # noqa: E501 + self._offset = offset + + @property + def query(self): + """Get the query of this TemplateSummarySummaryTasks. + + :return: The query of this TemplateSummarySummaryTasks. + :rtype: str + """ # noqa: E501 + return self._query + + @query.setter + def query(self, query): + """Set the query of this TemplateSummarySummaryTasks. + + :param query: The query of this TemplateSummarySummaryTasks. + :type: str + """ # noqa: E501 + self._query = query + + @property + def status(self): + """Get the status of this TemplateSummarySummaryTasks. + + :return: The status of this TemplateSummarySummaryTasks. + :rtype: str + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this TemplateSummarySummaryTasks. + + :param status: The status of this TemplateSummarySummaryTasks. + :type: str + """ # noqa: E501 + self._status = status + + @property + def env_references(self): + """Get the env_references of this TemplateSummarySummaryTasks. + + :return: The env_references of this TemplateSummarySummaryTasks. + :rtype: list[object] + """ # noqa: E501 + return self._env_references + + @env_references.setter + def env_references(self, env_references): + """Set the env_references of this TemplateSummarySummaryTasks. + + :param env_references: The env_references of this TemplateSummarySummaryTasks. + :type: list[object] + """ # noqa: E501 + self._env_references = env_references + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummarySummaryTasks): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/template_summary_summary_variables.py b/frogpilot/third_party/influxdb_client/domain/template_summary_summary_variables.py new file mode 100644 index 000000000..458ea473d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/template_summary_summary_variables.py @@ -0,0 +1,291 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class TemplateSummarySummaryVariables(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'kind': 'TemplateKind', + 'template_meta_name': 'str', + 'id': 'str', + 'org_id': 'str', + 'name': 'str', + 'description': 'str', + 'arguments': 'VariableProperties', + 'label_associations': 'list[TemplateSummaryLabel]', + 'env_references': 'list[object]' + } + + attribute_map = { + 'kind': 'kind', + 'template_meta_name': 'templateMetaName', + 'id': 'id', + 'org_id': 'orgID', + 'name': 'name', + 'description': 'description', + 'arguments': 'arguments', + 'label_associations': 'labelAssociations', + 'env_references': 'envReferences' + } + + def __init__(self, kind=None, template_meta_name=None, id=None, org_id=None, name=None, description=None, arguments=None, label_associations=None, env_references=None): # noqa: E501,D401,D403 + """TemplateSummarySummaryVariables - a model defined in OpenAPI.""" # noqa: E501 + self._kind = None + self._template_meta_name = None + self._id = None + self._org_id = None + self._name = None + self._description = None + self._arguments = None + self._label_associations = None + self._env_references = None + self.discriminator = None + + if kind is not None: + self.kind = kind + if template_meta_name is not None: + self.template_meta_name = template_meta_name + if id is not None: + self.id = id + if org_id is not None: + self.org_id = org_id + if name is not None: + self.name = name + if description is not None: + self.description = description + if arguments is not None: + self.arguments = arguments + if label_associations is not None: + self.label_associations = label_associations + if env_references is not None: + self.env_references = env_references + + @property + def kind(self): + """Get the kind of this TemplateSummarySummaryVariables. + + :return: The kind of this TemplateSummarySummaryVariables. + :rtype: TemplateKind + """ # noqa: E501 + return self._kind + + @kind.setter + def kind(self, kind): + """Set the kind of this TemplateSummarySummaryVariables. + + :param kind: The kind of this TemplateSummarySummaryVariables. + :type: TemplateKind + """ # noqa: E501 + self._kind = kind + + @property + def template_meta_name(self): + """Get the template_meta_name of this TemplateSummarySummaryVariables. + + :return: The template_meta_name of this TemplateSummarySummaryVariables. + :rtype: str + """ # noqa: E501 + return self._template_meta_name + + @template_meta_name.setter + def template_meta_name(self, template_meta_name): + """Set the template_meta_name of this TemplateSummarySummaryVariables. + + :param template_meta_name: The template_meta_name of this TemplateSummarySummaryVariables. + :type: str + """ # noqa: E501 + self._template_meta_name = template_meta_name + + @property + def id(self): + """Get the id of this TemplateSummarySummaryVariables. + + :return: The id of this TemplateSummarySummaryVariables. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this TemplateSummarySummaryVariables. + + :param id: The id of this TemplateSummarySummaryVariables. + :type: str + """ # noqa: E501 + self._id = id + + @property + def org_id(self): + """Get the org_id of this TemplateSummarySummaryVariables. + + :return: The org_id of this TemplateSummarySummaryVariables. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this TemplateSummarySummaryVariables. + + :param org_id: The org_id of this TemplateSummarySummaryVariables. + :type: str + """ # noqa: E501 + self._org_id = org_id + + @property + def name(self): + """Get the name of this TemplateSummarySummaryVariables. + + :return: The name of this TemplateSummarySummaryVariables. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this TemplateSummarySummaryVariables. + + :param name: The name of this TemplateSummarySummaryVariables. + :type: str + """ # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this TemplateSummarySummaryVariables. + + :return: The description of this TemplateSummarySummaryVariables. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this TemplateSummarySummaryVariables. + + :param description: The description of this TemplateSummarySummaryVariables. + :type: str + """ # noqa: E501 + self._description = description + + @property + def arguments(self): + """Get the arguments of this TemplateSummarySummaryVariables. + + :return: The arguments of this TemplateSummarySummaryVariables. + :rtype: VariableProperties + """ # noqa: E501 + return self._arguments + + @arguments.setter + def arguments(self, arguments): + """Set the arguments of this TemplateSummarySummaryVariables. + + :param arguments: The arguments of this TemplateSummarySummaryVariables. + :type: VariableProperties + """ # noqa: E501 + self._arguments = arguments + + @property + def label_associations(self): + """Get the label_associations of this TemplateSummarySummaryVariables. + + :return: The label_associations of this TemplateSummarySummaryVariables. + :rtype: list[TemplateSummaryLabel] + """ # noqa: E501 + return self._label_associations + + @label_associations.setter + def label_associations(self, label_associations): + """Set the label_associations of this TemplateSummarySummaryVariables. + + :param label_associations: The label_associations of this TemplateSummarySummaryVariables. + :type: list[TemplateSummaryLabel] + """ # noqa: E501 + self._label_associations = label_associations + + @property + def env_references(self): + """Get the env_references of this TemplateSummarySummaryVariables. + + :return: The env_references of this TemplateSummarySummaryVariables. + :rtype: list[object] + """ # noqa: E501 + return self._env_references + + @env_references.setter + def env_references(self, env_references): + """Set the env_references of this TemplateSummarySummaryVariables. + + :param env_references: The env_references of this TemplateSummarySummaryVariables. + :type: list[object] + """ # noqa: E501 + self._env_references = env_references + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TemplateSummarySummaryVariables): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/test_statement.py b/frogpilot/third_party/influxdb_client/domain/test_statement.py new file mode 100644 index 000000000..e95753659 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/test_statement.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.statement import Statement + + +class TestStatement(Statement): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'assignment': 'VariableAssignment' + } + + attribute_map = { + 'type': 'type', + 'assignment': 'assignment' + } + + def __init__(self, type=None, assignment=None): # noqa: E501,D401,D403 + """TestStatement - a model defined in OpenAPI.""" # noqa: E501 + Statement.__init__(self) # noqa: E501 + + self._type = None + self._assignment = None + self.discriminator = None + + if type is not None: + self.type = type + if assignment is not None: + self.assignment = assignment + + @property + def type(self): + """Get the type of this TestStatement. + + Type of AST node + + :return: The type of this TestStatement. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this TestStatement. + + Type of AST node + + :param type: The type of this TestStatement. + :type: str + """ # noqa: E501 + self._type = type + + @property + def assignment(self): + """Get the assignment of this TestStatement. + + :return: The assignment of this TestStatement. + :rtype: VariableAssignment + """ # noqa: E501 + return self._assignment + + @assignment.setter + def assignment(self, assignment): + """Set the assignment of this TestStatement. + + :param assignment: The assignment of this TestStatement. + :type: VariableAssignment + """ # noqa: E501 + self._assignment = assignment + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, TestStatement): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/threshold.py b/frogpilot/third_party/influxdb_client/domain/threshold.py new file mode 100644 index 000000000..0999dc79c --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/threshold.py @@ -0,0 +1,120 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Threshold(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + } + + attribute_map = { + 'type': 'type', + } + + discriminator_value_class_map = { + 'greater': 'GreaterThreshold', + 'lesser': 'LesserThreshold', + 'range': 'RangeThreshold' + } + + def __init__(self, type=None): # noqa: E501,D401,D403 + """Threshold - a model defined in OpenAPI.""" # noqa: E501 + self._type = None + self.discriminator = 'type' + + self.type = type + + @property + def type(self): + """Get the type of this Threshold. + + :return: The type of this Threshold. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this Threshold. + + :param type: The type of this Threshold. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + def get_real_child_model(self, data): + """Return the real base class specified by the discriminator.""" + discriminator_key = self.attribute_map[self.discriminator] + discriminator_value = data[discriminator_key] + return self.discriminator_value_class_map.get(discriminator_value) + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Threshold): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/threshold_base.py b/frogpilot/third_party/influxdb_client/domain/threshold_base.py new file mode 100644 index 000000000..dad715ca0 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/threshold_base.py @@ -0,0 +1,134 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ThresholdBase(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'level': 'CheckStatusLevel', + 'all_values': 'bool' + } + + attribute_map = { + 'level': 'level', + 'all_values': 'allValues' + } + + def __init__(self, level=None, all_values=None): # noqa: E501,D401,D403 + """ThresholdBase - a model defined in OpenAPI.""" # noqa: E501 + self._level = None + self._all_values = None + self.discriminator = None + + if level is not None: + self.level = level + if all_values is not None: + self.all_values = all_values + + @property + def level(self): + """Get the level of this ThresholdBase. + + :return: The level of this ThresholdBase. + :rtype: CheckStatusLevel + """ # noqa: E501 + return self._level + + @level.setter + def level(self, level): + """Set the level of this ThresholdBase. + + :param level: The level of this ThresholdBase. + :type: CheckStatusLevel + """ # noqa: E501 + self._level = level + + @property + def all_values(self): + """Get the all_values of this ThresholdBase. + + If true, only alert if all values meet threshold. + + :return: The all_values of this ThresholdBase. + :rtype: bool + """ # noqa: E501 + return self._all_values + + @all_values.setter + def all_values(self, all_values): + """Set the all_values of this ThresholdBase. + + If true, only alert if all values meet threshold. + + :param all_values: The all_values of this ThresholdBase. + :type: bool + """ # noqa: E501 + self._all_values = all_values + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ThresholdBase): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/threshold_check.py b/frogpilot/third_party/influxdb_client/domain/threshold_check.py new file mode 100644 index 000000000..30504cb02 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/threshold_check.py @@ -0,0 +1,273 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.check_discriminator import CheckDiscriminator + + +class ThresholdCheck(CheckDiscriminator): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'thresholds': 'list[Threshold]', + 'every': 'str', + 'offset': 'str', + 'tags': 'list[object]', + 'status_message_template': 'str', + 'id': 'str', + 'name': 'str', + 'org_id': 'str', + 'task_id': 'str', + 'owner_id': 'str', + 'created_at': 'datetime', + 'updated_at': 'datetime', + 'query': 'DashboardQuery', + 'status': 'TaskStatusType', + 'description': 'str', + 'latest_completed': 'datetime', + 'last_run_status': 'str', + 'last_run_error': 'str', + 'labels': 'list[Label]', + 'links': 'CheckBaseLinks' + } + + attribute_map = { + 'type': 'type', + 'thresholds': 'thresholds', + 'every': 'every', + 'offset': 'offset', + 'tags': 'tags', + 'status_message_template': 'statusMessageTemplate', + 'id': 'id', + 'name': 'name', + 'org_id': 'orgID', + 'task_id': 'taskID', + 'owner_id': 'ownerID', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt', + 'query': 'query', + 'status': 'status', + 'description': 'description', + 'latest_completed': 'latestCompleted', + 'last_run_status': 'lastRunStatus', + 'last_run_error': 'lastRunError', + 'labels': 'labels', + 'links': 'links' + } + + def __init__(self, type="threshold", thresholds=None, every=None, offset=None, tags=None, status_message_template=None, id=None, name=None, org_id=None, task_id=None, owner_id=None, created_at=None, updated_at=None, query=None, status=None, description=None, latest_completed=None, last_run_status=None, last_run_error=None, labels=None, links=None): # noqa: E501,D401,D403 + """ThresholdCheck - a model defined in OpenAPI.""" # noqa: E501 + CheckDiscriminator.__init__(self, id=id, name=name, org_id=org_id, task_id=task_id, owner_id=owner_id, created_at=created_at, updated_at=updated_at, query=query, status=status, description=description, latest_completed=latest_completed, last_run_status=last_run_status, last_run_error=last_run_error, labels=labels, links=links) # noqa: E501 + + self._type = None + self._thresholds = None + self._every = None + self._offset = None + self._tags = None + self._status_message_template = None + self.discriminator = None + + self.type = type + if thresholds is not None: + self.thresholds = thresholds + if every is not None: + self.every = every + if offset is not None: + self.offset = offset + if tags is not None: + self.tags = tags + if status_message_template is not None: + self.status_message_template = status_message_template + + @property + def type(self): + """Get the type of this ThresholdCheck. + + :return: The type of this ThresholdCheck. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this ThresholdCheck. + + :param type: The type of this ThresholdCheck. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def thresholds(self): + """Get the thresholds of this ThresholdCheck. + + :return: The thresholds of this ThresholdCheck. + :rtype: list[Threshold] + """ # noqa: E501 + return self._thresholds + + @thresholds.setter + def thresholds(self, thresholds): + """Set the thresholds of this ThresholdCheck. + + :param thresholds: The thresholds of this ThresholdCheck. + :type: list[Threshold] + """ # noqa: E501 + self._thresholds = thresholds + + @property + def every(self): + """Get the every of this ThresholdCheck. + + Check repetition interval. + + :return: The every of this ThresholdCheck. + :rtype: str + """ # noqa: E501 + return self._every + + @every.setter + def every(self, every): + """Set the every of this ThresholdCheck. + + Check repetition interval. + + :param every: The every of this ThresholdCheck. + :type: str + """ # noqa: E501 + self._every = every + + @property + def offset(self): + """Get the offset of this ThresholdCheck. + + Duration to delay after the schedule, before executing check. + + :return: The offset of this ThresholdCheck. + :rtype: str + """ # noqa: E501 + return self._offset + + @offset.setter + def offset(self, offset): + """Set the offset of this ThresholdCheck. + + Duration to delay after the schedule, before executing check. + + :param offset: The offset of this ThresholdCheck. + :type: str + """ # noqa: E501 + self._offset = offset + + @property + def tags(self): + """Get the tags of this ThresholdCheck. + + List of tags to write to each status. + + :return: The tags of this ThresholdCheck. + :rtype: list[object] + """ # noqa: E501 + return self._tags + + @tags.setter + def tags(self, tags): + """Set the tags of this ThresholdCheck. + + List of tags to write to each status. + + :param tags: The tags of this ThresholdCheck. + :type: list[object] + """ # noqa: E501 + self._tags = tags + + @property + def status_message_template(self): + """Get the status_message_template of this ThresholdCheck. + + The template used to generate and write a status message. + + :return: The status_message_template of this ThresholdCheck. + :rtype: str + """ # noqa: E501 + return self._status_message_template + + @status_message_template.setter + def status_message_template(self, status_message_template): + """Set the status_message_template of this ThresholdCheck. + + The template used to generate and write a status message. + + :param status_message_template: The status_message_template of this ThresholdCheck. + :type: str + """ # noqa: E501 + self._status_message_template = status_message_template + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ThresholdCheck): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/unary_expression.py b/frogpilot/third_party/influxdb_client/domain/unary_expression.py new file mode 100644 index 000000000..0d6fae08a --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/unary_expression.py @@ -0,0 +1,161 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class UnaryExpression(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'operator': 'str', + 'argument': 'Expression' + } + + attribute_map = { + 'type': 'type', + 'operator': 'operator', + 'argument': 'argument' + } + + def __init__(self, type=None, operator=None, argument=None): # noqa: E501,D401,D403 + """UnaryExpression - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._operator = None + self._argument = None + self.discriminator = None + + if type is not None: + self.type = type + if operator is not None: + self.operator = operator + if argument is not None: + self.argument = argument + + @property + def type(self): + """Get the type of this UnaryExpression. + + Type of AST node + + :return: The type of this UnaryExpression. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this UnaryExpression. + + Type of AST node + + :param type: The type of this UnaryExpression. + :type: str + """ # noqa: E501 + self._type = type + + @property + def operator(self): + """Get the operator of this UnaryExpression. + + :return: The operator of this UnaryExpression. + :rtype: str + """ # noqa: E501 + return self._operator + + @operator.setter + def operator(self, operator): + """Set the operator of this UnaryExpression. + + :param operator: The operator of this UnaryExpression. + :type: str + """ # noqa: E501 + self._operator = operator + + @property + def argument(self): + """Get the argument of this UnaryExpression. + + :return: The argument of this UnaryExpression. + :rtype: Expression + """ # noqa: E501 + return self._argument + + @argument.setter + def argument(self, argument): + """Set the argument of this UnaryExpression. + + :param argument: The argument of this UnaryExpression. + :type: Expression + """ # noqa: E501 + self._argument = argument + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, UnaryExpression): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/unsigned_integer_literal.py b/frogpilot/third_party/influxdb_client/domain/unsigned_integer_literal.py new file mode 100644 index 000000000..b7692a15f --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/unsigned_integer_literal.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.expression import Expression + + +class UnsignedIntegerLiteral(Expression): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'value': 'str' + } + + attribute_map = { + 'type': 'type', + 'value': 'value' + } + + def __init__(self, type=None, value=None): # noqa: E501,D401,D403 + """UnsignedIntegerLiteral - a model defined in OpenAPI.""" # noqa: E501 + Expression.__init__(self) # noqa: E501 + + self._type = None + self._value = None + self.discriminator = None + + if type is not None: + self.type = type + if value is not None: + self.value = value + + @property + def type(self): + """Get the type of this UnsignedIntegerLiteral. + + Type of AST node + + :return: The type of this UnsignedIntegerLiteral. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this UnsignedIntegerLiteral. + + Type of AST node + + :param type: The type of this UnsignedIntegerLiteral. + :type: str + """ # noqa: E501 + self._type = type + + @property + def value(self): + """Get the value of this UnsignedIntegerLiteral. + + :return: The value of this UnsignedIntegerLiteral. + :rtype: str + """ # noqa: E501 + return self._value + + @value.setter + def value(self, value): + """Set the value of this UnsignedIntegerLiteral. + + :param value: The value of this UnsignedIntegerLiteral. + :type: str + """ # noqa: E501 + self._value = value + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, UnsignedIntegerLiteral): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/user.py b/frogpilot/third_party/influxdb_client/domain/user.py new file mode 100644 index 000000000..6b7a28c68 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/user.py @@ -0,0 +1,166 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class User(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'name': 'str', + 'status': 'str' + } + + attribute_map = { + 'id': 'id', + 'name': 'name', + 'status': 'status' + } + + def __init__(self, id=None, name=None, status='active'): # noqa: E501,D401,D403 + """User - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._name = None + self._status = None + self.discriminator = None + + if id is not None: + self.id = id + self.name = name + if status is not None: + self.status = status + + @property + def id(self): + """Get the id of this User. + + The user ID. + + :return: The id of this User. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this User. + + The user ID. + + :param id: The id of this User. + :type: str + """ # noqa: E501 + self._id = id + + @property + def name(self): + """Get the name of this User. + + The user name. + + :return: The name of this User. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this User. + + The user name. + + :param name: The name of this User. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def status(self): + """Get the status of this User. + + If `inactive`, the user is inactive. Default is `active`. + + :return: The status of this User. + :rtype: str + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this User. + + If `inactive`, the user is inactive. Default is `active`. + + :param status: The status of this User. + :type: str + """ # noqa: E501 + self._status = status + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, User): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/user_response.py b/frogpilot/third_party/influxdb_client/domain/user_response.py new file mode 100644 index 000000000..a4a163f78 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/user_response.py @@ -0,0 +1,189 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class UserResponse(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'id': 'str', + 'name': 'str', + 'status': 'str', + 'links': 'UserResponseLinks' + } + + attribute_map = { + 'id': 'id', + 'name': 'name', + 'status': 'status', + 'links': 'links' + } + + def __init__(self, id=None, name=None, status='active', links=None): # noqa: E501,D401,D403 + """UserResponse - a model defined in OpenAPI.""" # noqa: E501 + self._id = None + self._name = None + self._status = None + self._links = None + self.discriminator = None + + if id is not None: + self.id = id + self.name = name + if status is not None: + self.status = status + if links is not None: + self.links = links + + @property + def id(self): + """Get the id of this UserResponse. + + The user ID. + + :return: The id of this UserResponse. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this UserResponse. + + The user ID. + + :param id: The id of this UserResponse. + :type: str + """ # noqa: E501 + self._id = id + + @property + def name(self): + """Get the name of this UserResponse. + + The user name. + + :return: The name of this UserResponse. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this UserResponse. + + The user name. + + :param name: The name of this UserResponse. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def status(self): + """Get the status of this UserResponse. + + The status of a user. An inactive user can't read or write resources. + + :return: The status of this UserResponse. + :rtype: str + """ # noqa: E501 + return self._status + + @status.setter + def status(self, status): + """Set the status of this UserResponse. + + The status of a user. An inactive user can't read or write resources. + + :param status: The status of this UserResponse. + :type: str + """ # noqa: E501 + self._status = status + + @property + def links(self): + """Get the links of this UserResponse. + + :return: The links of this UserResponse. + :rtype: UserResponseLinks + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this UserResponse. + + :param links: The links of this UserResponse. + :type: UserResponseLinks + """ # noqa: E501 + self._links = links + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, UserResponse): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/user_response_links.py b/frogpilot/third_party/influxdb_client/domain/user_response_links.py new file mode 100644 index 000000000..bf825cf2b --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/user_response_links.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class UserResponseLinks(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + '_self': 'str' + } + + attribute_map = { + '_self': 'self' + } + + def __init__(self, _self=None): # noqa: E501,D401,D403 + """UserResponseLinks - a model defined in OpenAPI.""" # noqa: E501 + self.__self = None + self.discriminator = None + + if _self is not None: + self._self = _self + + @property + def _self(self): + """Get the _self of this UserResponseLinks. + + :return: The _self of this UserResponseLinks. + :rtype: str + """ # noqa: E501 + return self.__self + + @_self.setter + def _self(self, _self): + """Set the _self of this UserResponseLinks. + + :param _self: The _self of this UserResponseLinks. + :type: str + """ # noqa: E501 + self.__self = _self + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, UserResponseLinks): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/users.py b/frogpilot/third_party/influxdb_client/domain/users.py new file mode 100644 index 000000000..067116c98 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/users.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Users(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'links': 'ResourceMembersLinks', + 'users': 'list[UserResponse]' + } + + attribute_map = { + 'links': 'links', + 'users': 'users' + } + + def __init__(self, links=None, users=None): # noqa: E501,D401,D403 + """Users - a model defined in OpenAPI.""" # noqa: E501 + self._links = None + self._users = None + self.discriminator = None + + if links is not None: + self.links = links + if users is not None: + self.users = users + + @property + def links(self): + """Get the links of this Users. + + :return: The links of this Users. + :rtype: ResourceMembersLinks + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Users. + + :param links: The links of this Users. + :type: ResourceMembersLinks + """ # noqa: E501 + self._links = links + + @property + def users(self): + """Get the users of this Users. + + :return: The users of this Users. + :rtype: list[UserResponse] + """ # noqa: E501 + return self._users + + @users.setter + def users(self, users): + """Set the users of this Users. + + :param users: The users of this Users. + :type: list[UserResponse] + """ # noqa: E501 + self._users = users + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Users): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/variable.py b/frogpilot/third_party/influxdb_client/domain/variable.py new file mode 100644 index 000000000..4c1b2800f --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/variable.py @@ -0,0 +1,317 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Variable(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'links': 'VariableLinks', + 'id': 'str', + 'org_id': 'str', + 'name': 'str', + 'description': 'str', + 'selected': 'list[str]', + 'labels': 'list[Label]', + 'arguments': 'VariableProperties', + 'created_at': 'datetime', + 'updated_at': 'datetime' + } + + attribute_map = { + 'links': 'links', + 'id': 'id', + 'org_id': 'orgID', + 'name': 'name', + 'description': 'description', + 'selected': 'selected', + 'labels': 'labels', + 'arguments': 'arguments', + 'created_at': 'createdAt', + 'updated_at': 'updatedAt' + } + + def __init__(self, links=None, id=None, org_id=None, name=None, description=None, selected=None, labels=None, arguments=None, created_at=None, updated_at=None): # noqa: E501,D401,D403 + """Variable - a model defined in OpenAPI.""" # noqa: E501 + self._links = None + self._id = None + self._org_id = None + self._name = None + self._description = None + self._selected = None + self._labels = None + self._arguments = None + self._created_at = None + self._updated_at = None + self.discriminator = None + + if links is not None: + self.links = links + if id is not None: + self.id = id + self.org_id = org_id + self.name = name + if description is not None: + self.description = description + if selected is not None: + self.selected = selected + if labels is not None: + self.labels = labels + self.arguments = arguments + if created_at is not None: + self.created_at = created_at + if updated_at is not None: + self.updated_at = updated_at + + @property + def links(self): + """Get the links of this Variable. + + :return: The links of this Variable. + :rtype: VariableLinks + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Variable. + + :param links: The links of this Variable. + :type: VariableLinks + """ # noqa: E501 + self._links = links + + @property + def id(self): + """Get the id of this Variable. + + :return: The id of this Variable. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this Variable. + + :param id: The id of this Variable. + :type: str + """ # noqa: E501 + self._id = id + + @property + def org_id(self): + """Get the org_id of this Variable. + + :return: The org_id of this Variable. + :rtype: str + """ # noqa: E501 + return self._org_id + + @org_id.setter + def org_id(self, org_id): + """Set the org_id of this Variable. + + :param org_id: The org_id of this Variable. + :type: str + """ # noqa: E501 + if org_id is None: + raise ValueError("Invalid value for `org_id`, must not be `None`") # noqa: E501 + self._org_id = org_id + + @property + def name(self): + """Get the name of this Variable. + + :return: The name of this Variable. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this Variable. + + :param name: The name of this Variable. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def description(self): + """Get the description of this Variable. + + :return: The description of this Variable. + :rtype: str + """ # noqa: E501 + return self._description + + @description.setter + def description(self, description): + """Set the description of this Variable. + + :param description: The description of this Variable. + :type: str + """ # noqa: E501 + self._description = description + + @property + def selected(self): + """Get the selected of this Variable. + + :return: The selected of this Variable. + :rtype: list[str] + """ # noqa: E501 + return self._selected + + @selected.setter + def selected(self, selected): + """Set the selected of this Variable. + + :param selected: The selected of this Variable. + :type: list[str] + """ # noqa: E501 + self._selected = selected + + @property + def labels(self): + """Get the labels of this Variable. + + :return: The labels of this Variable. + :rtype: list[Label] + """ # noqa: E501 + return self._labels + + @labels.setter + def labels(self, labels): + """Set the labels of this Variable. + + :param labels: The labels of this Variable. + :type: list[Label] + """ # noqa: E501 + self._labels = labels + + @property + def arguments(self): + """Get the arguments of this Variable. + + :return: The arguments of this Variable. + :rtype: VariableProperties + """ # noqa: E501 + return self._arguments + + @arguments.setter + def arguments(self, arguments): + """Set the arguments of this Variable. + + :param arguments: The arguments of this Variable. + :type: VariableProperties + """ # noqa: E501 + if arguments is None: + raise ValueError("Invalid value for `arguments`, must not be `None`") # noqa: E501 + self._arguments = arguments + + @property + def created_at(self): + """Get the created_at of this Variable. + + :return: The created_at of this Variable. + :rtype: datetime + """ # noqa: E501 + return self._created_at + + @created_at.setter + def created_at(self, created_at): + """Set the created_at of this Variable. + + :param created_at: The created_at of this Variable. + :type: datetime + """ # noqa: E501 + self._created_at = created_at + + @property + def updated_at(self): + """Get the updated_at of this Variable. + + :return: The updated_at of this Variable. + :rtype: datetime + """ # noqa: E501 + return self._updated_at + + @updated_at.setter + def updated_at(self, updated_at): + """Set the updated_at of this Variable. + + :param updated_at: The updated_at of this Variable. + :type: datetime + """ # noqa: E501 + self._updated_at = updated_at + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Variable): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/variable_assignment.py b/frogpilot/third_party/influxdb_client/domain/variable_assignment.py new file mode 100644 index 000000000..c13e54939 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/variable_assignment.py @@ -0,0 +1,161 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.statement import Statement + + +class VariableAssignment(Statement): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'type': 'str', + 'id': 'Identifier', + 'init': 'Expression' + } + + attribute_map = { + 'type': 'type', + 'id': 'id', + 'init': 'init' + } + + def __init__(self, type=None, id=None, init=None): # noqa: E501,D401,D403 + """VariableAssignment - a model defined in OpenAPI.""" # noqa: E501 + Statement.__init__(self) # noqa: E501 + + self._type = None + self._id = None + self._init = None + self.discriminator = None + + if type is not None: + self.type = type + if id is not None: + self.id = id + if init is not None: + self.init = init + + @property + def type(self): + """Get the type of this VariableAssignment. + + Type of AST node + + :return: The type of this VariableAssignment. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this VariableAssignment. + + Type of AST node + + :param type: The type of this VariableAssignment. + :type: str + """ # noqa: E501 + self._type = type + + @property + def id(self): + """Get the id of this VariableAssignment. + + :return: The id of this VariableAssignment. + :rtype: Identifier + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this VariableAssignment. + + :param id: The id of this VariableAssignment. + :type: Identifier + """ # noqa: E501 + self._id = id + + @property + def init(self): + """Get the init of this VariableAssignment. + + :return: The init of this VariableAssignment. + :rtype: Expression + """ # noqa: E501 + return self._init + + @init.setter + def init(self, init): + """Set the init of this VariableAssignment. + + :param init: The init of this VariableAssignment. + :type: Expression + """ # noqa: E501 + self._init = init + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, VariableAssignment): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/variable_links.py b/frogpilot/third_party/influxdb_client/domain/variable_links.py new file mode 100644 index 000000000..44a8237d1 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/variable_links.py @@ -0,0 +1,153 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class VariableLinks(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + '_self': 'str', + 'org': 'str', + 'labels': 'str' + } + + attribute_map = { + '_self': 'self', + 'org': 'org', + 'labels': 'labels' + } + + def __init__(self, _self=None, org=None, labels=None): # noqa: E501,D401,D403 + """VariableLinks - a model defined in OpenAPI.""" # noqa: E501 + self.__self = None + self._org = None + self._labels = None + self.discriminator = None + + if _self is not None: + self._self = _self + if org is not None: + self.org = org + if labels is not None: + self.labels = labels + + @property + def _self(self): + """Get the _self of this VariableLinks. + + :return: The _self of this VariableLinks. + :rtype: str + """ # noqa: E501 + return self.__self + + @_self.setter + def _self(self, _self): + """Set the _self of this VariableLinks. + + :param _self: The _self of this VariableLinks. + :type: str + """ # noqa: E501 + self.__self = _self + + @property + def org(self): + """Get the org of this VariableLinks. + + :return: The org of this VariableLinks. + :rtype: str + """ # noqa: E501 + return self._org + + @org.setter + def org(self, org): + """Set the org of this VariableLinks. + + :param org: The org of this VariableLinks. + :type: str + """ # noqa: E501 + self._org = org + + @property + def labels(self): + """Get the labels of this VariableLinks. + + :return: The labels of this VariableLinks. + :rtype: str + """ # noqa: E501 + return self._labels + + @labels.setter + def labels(self, labels): + """Set the labels of this VariableLinks. + + :param labels: The labels of this VariableLinks. + :type: str + """ # noqa: E501 + self._labels = labels + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, VariableLinks): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/variable_properties.py b/frogpilot/third_party/influxdb_client/domain/variable_properties.py new file mode 100644 index 000000000..c9d9d1532 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/variable_properties.py @@ -0,0 +1,82 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class VariableProperties(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """VariableProperties - a model defined in OpenAPI.""" # noqa: E501 self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, VariableProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/variables.py b/frogpilot/third_party/influxdb_client/domain/variables.py new file mode 100644 index 000000000..50ebbf3c6 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/variables.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Variables(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'variables': 'list[Variable]' + } + + attribute_map = { + 'variables': 'variables' + } + + def __init__(self, variables=None): # noqa: E501,D401,D403 + """Variables - a model defined in OpenAPI.""" # noqa: E501 + self._variables = None + self.discriminator = None + + if variables is not None: + self.variables = variables + + @property + def variables(self): + """Get the variables of this Variables. + + :return: The variables of this Variables. + :rtype: list[Variable] + """ # noqa: E501 + return self._variables + + @variables.setter + def variables(self, variables): + """Set the variables of this Variables. + + :param variables: The variables of this Variables. + :type: list[Variable] + """ # noqa: E501 + self._variables = variables + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Variables): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/view.py b/frogpilot/third_party/influxdb_client/domain/view.py new file mode 100644 index 000000000..567125364 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/view.py @@ -0,0 +1,178 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class View(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'links': 'ViewLinks', + 'id': 'str', + 'name': 'str', + 'properties': 'ViewProperties' + } + + attribute_map = { + 'links': 'links', + 'id': 'id', + 'name': 'name', + 'properties': 'properties' + } + + def __init__(self, links=None, id=None, name=None, properties=None): # noqa: E501,D401,D403 + """View - a model defined in OpenAPI.""" # noqa: E501 + self._links = None + self._id = None + self._name = None + self._properties = None + self.discriminator = None + + if links is not None: + self.links = links + if id is not None: + self.id = id + self.name = name + self.properties = properties + + @property + def links(self): + """Get the links of this View. + + :return: The links of this View. + :rtype: ViewLinks + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this View. + + :param links: The links of this View. + :type: ViewLinks + """ # noqa: E501 + self._links = links + + @property + def id(self): + """Get the id of this View. + + :return: The id of this View. + :rtype: str + """ # noqa: E501 + return self._id + + @id.setter + def id(self, id): + """Set the id of this View. + + :param id: The id of this View. + :type: str + """ # noqa: E501 + self._id = id + + @property + def name(self): + """Get the name of this View. + + :return: The name of this View. + :rtype: str + """ # noqa: E501 + return self._name + + @name.setter + def name(self, name): + """Set the name of this View. + + :param name: The name of this View. + :type: str + """ # noqa: E501 + if name is None: + raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 + self._name = name + + @property + def properties(self): + """Get the properties of this View. + + :return: The properties of this View. + :rtype: ViewProperties + """ # noqa: E501 + return self._properties + + @properties.setter + def properties(self, properties): + """Set the properties of this View. + + :param properties: The properties of this View. + :type: ViewProperties + """ # noqa: E501 + if properties is None: + raise ValueError("Invalid value for `properties`, must not be `None`") # noqa: E501 + self._properties = properties + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, View): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/view_links.py b/frogpilot/third_party/influxdb_client/domain/view_links.py new file mode 100644 index 000000000..8705bc1f4 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/view_links.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ViewLinks(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + '_self': 'str' + } + + attribute_map = { + '_self': 'self' + } + + def __init__(self, _self=None): # noqa: E501,D401,D403 + """ViewLinks - a model defined in OpenAPI.""" # noqa: E501 + self.__self = None + self.discriminator = None + + if _self is not None: + self._self = _self + + @property + def _self(self): + """Get the _self of this ViewLinks. + + :return: The _self of this ViewLinks. + :rtype: str + """ # noqa: E501 + return self.__self + + @_self.setter + def _self(self, _self): + """Set the _self of this ViewLinks. + + :param _self: The _self of this ViewLinks. + :type: str + """ # noqa: E501 + self.__self = _self + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ViewLinks): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/view_properties.py b/frogpilot/third_party/influxdb_client/domain/view_properties.py new file mode 100644 index 000000000..e08c354ae --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/view_properties.py @@ -0,0 +1,82 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class ViewProperties(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """ViewProperties - a model defined in OpenAPI.""" # noqa: E501 self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, ViewProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/views.py b/frogpilot/third_party/influxdb_client/domain/views.py new file mode 100644 index 000000000..a9bbb6490 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/views.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class Views(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'links': 'ViewLinks', + 'views': 'list[View]' + } + + attribute_map = { + 'links': 'links', + 'views': 'views' + } + + def __init__(self, links=None, views=None): # noqa: E501,D401,D403 + """Views - a model defined in OpenAPI.""" # noqa: E501 + self._links = None + self._views = None + self.discriminator = None + + if links is not None: + self.links = links + if views is not None: + self.views = views + + @property + def links(self): + """Get the links of this Views. + + :return: The links of this Views. + :rtype: ViewLinks + """ # noqa: E501 + return self._links + + @links.setter + def links(self, links): + """Set the links of this Views. + + :param links: The links of this Views. + :type: ViewLinks + """ # noqa: E501 + self._links = links + + @property + def views(self): + """Get the views of this Views. + + :return: The views of this Views. + :rtype: list[View] + """ # noqa: E501 + return self._views + + @views.setter + def views(self, views): + """Set the views of this Views. + + :param views: The views of this Views. + :type: list[View] + """ # noqa: E501 + self._views = views + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, Views): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/write_precision.py b/frogpilot/third_party/influxdb_client/domain/write_precision.py new file mode 100644 index 000000000..41a0db934 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/write_precision.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class WritePrecision(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + MS = "ms" + S = "s" + US = "us" + NS = "ns" + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """WritePrecision - a model defined in OpenAPI.""" # noqa: E501 self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, WritePrecision): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/xy_geom.py b/frogpilot/third_party/influxdb_client/domain/xy_geom.py new file mode 100644 index 000000000..367806b4e --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/xy_geom.py @@ -0,0 +1,93 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + + +class XYGeom(object): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + LINE = "line" + STEP = "step" + STACKED = "stacked" + BAR = "bar" + MONOTONEX = "monotoneX" + STEPBEFORE = "stepBefore" + STEPAFTER = "stepAfter" + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501,D401,D403 + """XYGeom - a model defined in OpenAPI.""" # noqa: E501 self.discriminator = None + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, XYGeom): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/domain/xy_view_properties.py b/frogpilot/third_party/influxdb_client/domain/xy_view_properties.py new file mode 100644 index 000000000..817967c21 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/domain/xy_view_properties.py @@ -0,0 +1,776 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +from influxdb_client.domain.view_properties import ViewProperties + + +class XYViewProperties(ViewProperties): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'adaptive_zoom_hide': 'bool', + 'time_format': 'str', + 'type': 'str', + 'queries': 'list[DashboardQuery]', + 'colors': 'list[DashboardColor]', + 'color_mapping': 'dict(str, str)', + 'shape': 'str', + 'note': 'str', + 'show_note_when_empty': 'bool', + 'axes': 'Axes', + 'static_legend': 'StaticLegend', + 'x_column': 'str', + 'generate_x_axis_ticks': 'list[str]', + 'x_total_ticks': 'int', + 'x_tick_start': 'float', + 'x_tick_step': 'float', + 'y_column': 'str', + 'generate_y_axis_ticks': 'list[str]', + 'y_total_ticks': 'int', + 'y_tick_start': 'float', + 'y_tick_step': 'float', + 'shade_below': 'bool', + 'hover_dimension': 'str', + 'position': 'str', + 'geom': 'XYGeom', + 'legend_colorize_rows': 'bool', + 'legend_hide': 'bool', + 'legend_opacity': 'float', + 'legend_orientation_threshold': 'int' + } + + attribute_map = { + 'adaptive_zoom_hide': 'adaptiveZoomHide', + 'time_format': 'timeFormat', + 'type': 'type', + 'queries': 'queries', + 'colors': 'colors', + 'color_mapping': 'colorMapping', + 'shape': 'shape', + 'note': 'note', + 'show_note_when_empty': 'showNoteWhenEmpty', + 'axes': 'axes', + 'static_legend': 'staticLegend', + 'x_column': 'xColumn', + 'generate_x_axis_ticks': 'generateXAxisTicks', + 'x_total_ticks': 'xTotalTicks', + 'x_tick_start': 'xTickStart', + 'x_tick_step': 'xTickStep', + 'y_column': 'yColumn', + 'generate_y_axis_ticks': 'generateYAxisTicks', + 'y_total_ticks': 'yTotalTicks', + 'y_tick_start': 'yTickStart', + 'y_tick_step': 'yTickStep', + 'shade_below': 'shadeBelow', + 'hover_dimension': 'hoverDimension', + 'position': 'position', + 'geom': 'geom', + 'legend_colorize_rows': 'legendColorizeRows', + 'legend_hide': 'legendHide', + 'legend_opacity': 'legendOpacity', + 'legend_orientation_threshold': 'legendOrientationThreshold' + } + + def __init__(self, adaptive_zoom_hide=None, time_format=None, type=None, queries=None, colors=None, color_mapping=None, shape=None, note=None, show_note_when_empty=None, axes=None, static_legend=None, x_column=None, generate_x_axis_ticks=None, x_total_ticks=None, x_tick_start=None, x_tick_step=None, y_column=None, generate_y_axis_ticks=None, y_total_ticks=None, y_tick_start=None, y_tick_step=None, shade_below=None, hover_dimension=None, position=None, geom=None, legend_colorize_rows=None, legend_hide=None, legend_opacity=None, legend_orientation_threshold=None): # noqa: E501,D401,D403 + """XYViewProperties - a model defined in OpenAPI.""" # noqa: E501 + ViewProperties.__init__(self) # noqa: E501 + + self._adaptive_zoom_hide = None + self._time_format = None + self._type = None + self._queries = None + self._colors = None + self._color_mapping = None + self._shape = None + self._note = None + self._show_note_when_empty = None + self._axes = None + self._static_legend = None + self._x_column = None + self._generate_x_axis_ticks = None + self._x_total_ticks = None + self._x_tick_start = None + self._x_tick_step = None + self._y_column = None + self._generate_y_axis_ticks = None + self._y_total_ticks = None + self._y_tick_start = None + self._y_tick_step = None + self._shade_below = None + self._hover_dimension = None + self._position = None + self._geom = None + self._legend_colorize_rows = None + self._legend_hide = None + self._legend_opacity = None + self._legend_orientation_threshold = None + self.discriminator = None + + if adaptive_zoom_hide is not None: + self.adaptive_zoom_hide = adaptive_zoom_hide + if time_format is not None: + self.time_format = time_format + self.type = type + self.queries = queries + self.colors = colors + if color_mapping is not None: + self.color_mapping = color_mapping + self.shape = shape + self.note = note + self.show_note_when_empty = show_note_when_empty + self.axes = axes + if static_legend is not None: + self.static_legend = static_legend + if x_column is not None: + self.x_column = x_column + if generate_x_axis_ticks is not None: + self.generate_x_axis_ticks = generate_x_axis_ticks + if x_total_ticks is not None: + self.x_total_ticks = x_total_ticks + if x_tick_start is not None: + self.x_tick_start = x_tick_start + if x_tick_step is not None: + self.x_tick_step = x_tick_step + if y_column is not None: + self.y_column = y_column + if generate_y_axis_ticks is not None: + self.generate_y_axis_ticks = generate_y_axis_ticks + if y_total_ticks is not None: + self.y_total_ticks = y_total_ticks + if y_tick_start is not None: + self.y_tick_start = y_tick_start + if y_tick_step is not None: + self.y_tick_step = y_tick_step + if shade_below is not None: + self.shade_below = shade_below + if hover_dimension is not None: + self.hover_dimension = hover_dimension + self.position = position + self.geom = geom + if legend_colorize_rows is not None: + self.legend_colorize_rows = legend_colorize_rows + if legend_hide is not None: + self.legend_hide = legend_hide + if legend_opacity is not None: + self.legend_opacity = legend_opacity + if legend_orientation_threshold is not None: + self.legend_orientation_threshold = legend_orientation_threshold + + @property + def adaptive_zoom_hide(self): + """Get the adaptive_zoom_hide of this XYViewProperties. + + :return: The adaptive_zoom_hide of this XYViewProperties. + :rtype: bool + """ # noqa: E501 + return self._adaptive_zoom_hide + + @adaptive_zoom_hide.setter + def adaptive_zoom_hide(self, adaptive_zoom_hide): + """Set the adaptive_zoom_hide of this XYViewProperties. + + :param adaptive_zoom_hide: The adaptive_zoom_hide of this XYViewProperties. + :type: bool + """ # noqa: E501 + self._adaptive_zoom_hide = adaptive_zoom_hide + + @property + def time_format(self): + """Get the time_format of this XYViewProperties. + + :return: The time_format of this XYViewProperties. + :rtype: str + """ # noqa: E501 + return self._time_format + + @time_format.setter + def time_format(self, time_format): + """Set the time_format of this XYViewProperties. + + :param time_format: The time_format of this XYViewProperties. + :type: str + """ # noqa: E501 + self._time_format = time_format + + @property + def type(self): + """Get the type of this XYViewProperties. + + :return: The type of this XYViewProperties. + :rtype: str + """ # noqa: E501 + return self._type + + @type.setter + def type(self, type): + """Set the type of this XYViewProperties. + + :param type: The type of this XYViewProperties. + :type: str + """ # noqa: E501 + if type is None: + raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 + self._type = type + + @property + def queries(self): + """Get the queries of this XYViewProperties. + + :return: The queries of this XYViewProperties. + :rtype: list[DashboardQuery] + """ # noqa: E501 + return self._queries + + @queries.setter + def queries(self, queries): + """Set the queries of this XYViewProperties. + + :param queries: The queries of this XYViewProperties. + :type: list[DashboardQuery] + """ # noqa: E501 + if queries is None: + raise ValueError("Invalid value for `queries`, must not be `None`") # noqa: E501 + self._queries = queries + + @property + def colors(self): + """Get the colors of this XYViewProperties. + + Colors define color encoding of data into a visualization + + :return: The colors of this XYViewProperties. + :rtype: list[DashboardColor] + """ # noqa: E501 + return self._colors + + @colors.setter + def colors(self, colors): + """Set the colors of this XYViewProperties. + + Colors define color encoding of data into a visualization + + :param colors: The colors of this XYViewProperties. + :type: list[DashboardColor] + """ # noqa: E501 + if colors is None: + raise ValueError("Invalid value for `colors`, must not be `None`") # noqa: E501 + self._colors = colors + + @property + def color_mapping(self): + """Get the color_mapping of this XYViewProperties. + + A color mapping is an object that maps time series data to a UI color scheme to allow the UI to render graphs consistent colors across reloads. + + :return: The color_mapping of this XYViewProperties. + :rtype: dict(str, str) + """ # noqa: E501 + return self._color_mapping + + @color_mapping.setter + def color_mapping(self, color_mapping): + """Set the color_mapping of this XYViewProperties. + + A color mapping is an object that maps time series data to a UI color scheme to allow the UI to render graphs consistent colors across reloads. + + :param color_mapping: The color_mapping of this XYViewProperties. + :type: dict(str, str) + """ # noqa: E501 + self._color_mapping = color_mapping + + @property + def shape(self): + """Get the shape of this XYViewProperties. + + :return: The shape of this XYViewProperties. + :rtype: str + """ # noqa: E501 + return self._shape + + @shape.setter + def shape(self, shape): + """Set the shape of this XYViewProperties. + + :param shape: The shape of this XYViewProperties. + :type: str + """ # noqa: E501 + if shape is None: + raise ValueError("Invalid value for `shape`, must not be `None`") # noqa: E501 + self._shape = shape + + @property + def note(self): + """Get the note of this XYViewProperties. + + :return: The note of this XYViewProperties. + :rtype: str + """ # noqa: E501 + return self._note + + @note.setter + def note(self, note): + """Set the note of this XYViewProperties. + + :param note: The note of this XYViewProperties. + :type: str + """ # noqa: E501 + if note is None: + raise ValueError("Invalid value for `note`, must not be `None`") # noqa: E501 + self._note = note + + @property + def show_note_when_empty(self): + """Get the show_note_when_empty of this XYViewProperties. + + If true, will display note when empty + + :return: The show_note_when_empty of this XYViewProperties. + :rtype: bool + """ # noqa: E501 + return self._show_note_when_empty + + @show_note_when_empty.setter + def show_note_when_empty(self, show_note_when_empty): + """Set the show_note_when_empty of this XYViewProperties. + + If true, will display note when empty + + :param show_note_when_empty: The show_note_when_empty of this XYViewProperties. + :type: bool + """ # noqa: E501 + if show_note_when_empty is None: + raise ValueError("Invalid value for `show_note_when_empty`, must not be `None`") # noqa: E501 + self._show_note_when_empty = show_note_when_empty + + @property + def axes(self): + """Get the axes of this XYViewProperties. + + :return: The axes of this XYViewProperties. + :rtype: Axes + """ # noqa: E501 + return self._axes + + @axes.setter + def axes(self, axes): + """Set the axes of this XYViewProperties. + + :param axes: The axes of this XYViewProperties. + :type: Axes + """ # noqa: E501 + if axes is None: + raise ValueError("Invalid value for `axes`, must not be `None`") # noqa: E501 + self._axes = axes + + @property + def static_legend(self): + """Get the static_legend of this XYViewProperties. + + :return: The static_legend of this XYViewProperties. + :rtype: StaticLegend + """ # noqa: E501 + return self._static_legend + + @static_legend.setter + def static_legend(self, static_legend): + """Set the static_legend of this XYViewProperties. + + :param static_legend: The static_legend of this XYViewProperties. + :type: StaticLegend + """ # noqa: E501 + self._static_legend = static_legend + + @property + def x_column(self): + """Get the x_column of this XYViewProperties. + + :return: The x_column of this XYViewProperties. + :rtype: str + """ # noqa: E501 + return self._x_column + + @x_column.setter + def x_column(self, x_column): + """Set the x_column of this XYViewProperties. + + :param x_column: The x_column of this XYViewProperties. + :type: str + """ # noqa: E501 + self._x_column = x_column + + @property + def generate_x_axis_ticks(self): + """Get the generate_x_axis_ticks of this XYViewProperties. + + :return: The generate_x_axis_ticks of this XYViewProperties. + :rtype: list[str] + """ # noqa: E501 + return self._generate_x_axis_ticks + + @generate_x_axis_ticks.setter + def generate_x_axis_ticks(self, generate_x_axis_ticks): + """Set the generate_x_axis_ticks of this XYViewProperties. + + :param generate_x_axis_ticks: The generate_x_axis_ticks of this XYViewProperties. + :type: list[str] + """ # noqa: E501 + self._generate_x_axis_ticks = generate_x_axis_ticks + + @property + def x_total_ticks(self): + """Get the x_total_ticks of this XYViewProperties. + + :return: The x_total_ticks of this XYViewProperties. + :rtype: int + """ # noqa: E501 + return self._x_total_ticks + + @x_total_ticks.setter + def x_total_ticks(self, x_total_ticks): + """Set the x_total_ticks of this XYViewProperties. + + :param x_total_ticks: The x_total_ticks of this XYViewProperties. + :type: int + """ # noqa: E501 + self._x_total_ticks = x_total_ticks + + @property + def x_tick_start(self): + """Get the x_tick_start of this XYViewProperties. + + :return: The x_tick_start of this XYViewProperties. + :rtype: float + """ # noqa: E501 + return self._x_tick_start + + @x_tick_start.setter + def x_tick_start(self, x_tick_start): + """Set the x_tick_start of this XYViewProperties. + + :param x_tick_start: The x_tick_start of this XYViewProperties. + :type: float + """ # noqa: E501 + self._x_tick_start = x_tick_start + + @property + def x_tick_step(self): + """Get the x_tick_step of this XYViewProperties. + + :return: The x_tick_step of this XYViewProperties. + :rtype: float + """ # noqa: E501 + return self._x_tick_step + + @x_tick_step.setter + def x_tick_step(self, x_tick_step): + """Set the x_tick_step of this XYViewProperties. + + :param x_tick_step: The x_tick_step of this XYViewProperties. + :type: float + """ # noqa: E501 + self._x_tick_step = x_tick_step + + @property + def y_column(self): + """Get the y_column of this XYViewProperties. + + :return: The y_column of this XYViewProperties. + :rtype: str + """ # noqa: E501 + return self._y_column + + @y_column.setter + def y_column(self, y_column): + """Set the y_column of this XYViewProperties. + + :param y_column: The y_column of this XYViewProperties. + :type: str + """ # noqa: E501 + self._y_column = y_column + + @property + def generate_y_axis_ticks(self): + """Get the generate_y_axis_ticks of this XYViewProperties. + + :return: The generate_y_axis_ticks of this XYViewProperties. + :rtype: list[str] + """ # noqa: E501 + return self._generate_y_axis_ticks + + @generate_y_axis_ticks.setter + def generate_y_axis_ticks(self, generate_y_axis_ticks): + """Set the generate_y_axis_ticks of this XYViewProperties. + + :param generate_y_axis_ticks: The generate_y_axis_ticks of this XYViewProperties. + :type: list[str] + """ # noqa: E501 + self._generate_y_axis_ticks = generate_y_axis_ticks + + @property + def y_total_ticks(self): + """Get the y_total_ticks of this XYViewProperties. + + :return: The y_total_ticks of this XYViewProperties. + :rtype: int + """ # noqa: E501 + return self._y_total_ticks + + @y_total_ticks.setter + def y_total_ticks(self, y_total_ticks): + """Set the y_total_ticks of this XYViewProperties. + + :param y_total_ticks: The y_total_ticks of this XYViewProperties. + :type: int + """ # noqa: E501 + self._y_total_ticks = y_total_ticks + + @property + def y_tick_start(self): + """Get the y_tick_start of this XYViewProperties. + + :return: The y_tick_start of this XYViewProperties. + :rtype: float + """ # noqa: E501 + return self._y_tick_start + + @y_tick_start.setter + def y_tick_start(self, y_tick_start): + """Set the y_tick_start of this XYViewProperties. + + :param y_tick_start: The y_tick_start of this XYViewProperties. + :type: float + """ # noqa: E501 + self._y_tick_start = y_tick_start + + @property + def y_tick_step(self): + """Get the y_tick_step of this XYViewProperties. + + :return: The y_tick_step of this XYViewProperties. + :rtype: float + """ # noqa: E501 + return self._y_tick_step + + @y_tick_step.setter + def y_tick_step(self, y_tick_step): + """Set the y_tick_step of this XYViewProperties. + + :param y_tick_step: The y_tick_step of this XYViewProperties. + :type: float + """ # noqa: E501 + self._y_tick_step = y_tick_step + + @property + def shade_below(self): + """Get the shade_below of this XYViewProperties. + + :return: The shade_below of this XYViewProperties. + :rtype: bool + """ # noqa: E501 + return self._shade_below + + @shade_below.setter + def shade_below(self, shade_below): + """Set the shade_below of this XYViewProperties. + + :param shade_below: The shade_below of this XYViewProperties. + :type: bool + """ # noqa: E501 + self._shade_below = shade_below + + @property + def hover_dimension(self): + """Get the hover_dimension of this XYViewProperties. + + :return: The hover_dimension of this XYViewProperties. + :rtype: str + """ # noqa: E501 + return self._hover_dimension + + @hover_dimension.setter + def hover_dimension(self, hover_dimension): + """Set the hover_dimension of this XYViewProperties. + + :param hover_dimension: The hover_dimension of this XYViewProperties. + :type: str + """ # noqa: E501 + self._hover_dimension = hover_dimension + + @property + def position(self): + """Get the position of this XYViewProperties. + + :return: The position of this XYViewProperties. + :rtype: str + """ # noqa: E501 + return self._position + + @position.setter + def position(self, position): + """Set the position of this XYViewProperties. + + :param position: The position of this XYViewProperties. + :type: str + """ # noqa: E501 + if position is None: + raise ValueError("Invalid value for `position`, must not be `None`") # noqa: E501 + self._position = position + + @property + def geom(self): + """Get the geom of this XYViewProperties. + + :return: The geom of this XYViewProperties. + :rtype: XYGeom + """ # noqa: E501 + return self._geom + + @geom.setter + def geom(self, geom): + """Set the geom of this XYViewProperties. + + :param geom: The geom of this XYViewProperties. + :type: XYGeom + """ # noqa: E501 + if geom is None: + raise ValueError("Invalid value for `geom`, must not be `None`") # noqa: E501 + self._geom = geom + + @property + def legend_colorize_rows(self): + """Get the legend_colorize_rows of this XYViewProperties. + + :return: The legend_colorize_rows of this XYViewProperties. + :rtype: bool + """ # noqa: E501 + return self._legend_colorize_rows + + @legend_colorize_rows.setter + def legend_colorize_rows(self, legend_colorize_rows): + """Set the legend_colorize_rows of this XYViewProperties. + + :param legend_colorize_rows: The legend_colorize_rows of this XYViewProperties. + :type: bool + """ # noqa: E501 + self._legend_colorize_rows = legend_colorize_rows + + @property + def legend_hide(self): + """Get the legend_hide of this XYViewProperties. + + :return: The legend_hide of this XYViewProperties. + :rtype: bool + """ # noqa: E501 + return self._legend_hide + + @legend_hide.setter + def legend_hide(self, legend_hide): + """Set the legend_hide of this XYViewProperties. + + :param legend_hide: The legend_hide of this XYViewProperties. + :type: bool + """ # noqa: E501 + self._legend_hide = legend_hide + + @property + def legend_opacity(self): + """Get the legend_opacity of this XYViewProperties. + + :return: The legend_opacity of this XYViewProperties. + :rtype: float + """ # noqa: E501 + return self._legend_opacity + + @legend_opacity.setter + def legend_opacity(self, legend_opacity): + """Set the legend_opacity of this XYViewProperties. + + :param legend_opacity: The legend_opacity of this XYViewProperties. + :type: float + """ # noqa: E501 + self._legend_opacity = legend_opacity + + @property + def legend_orientation_threshold(self): + """Get the legend_orientation_threshold of this XYViewProperties. + + :return: The legend_orientation_threshold of this XYViewProperties. + :rtype: int + """ # noqa: E501 + return self._legend_orientation_threshold + + @legend_orientation_threshold.setter + def legend_orientation_threshold(self, legend_orientation_threshold): + """Set the legend_orientation_threshold of this XYViewProperties. + + :param legend_orientation_threshold: The legend_orientation_threshold of this XYViewProperties. + :type: int + """ # noqa: E501 + self._legend_orientation_threshold = legend_orientation_threshold + + def to_dict(self): + """Return the model properties as a dict.""" + result = {} + + for attr, _ in self.openapi_types.items(): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Return the string representation of the model.""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`.""" + return self.to_str() + + def __eq__(self, other): + """Return true if both objects are equal.""" + if not isinstance(other, XYViewProperties): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Return true if both objects are not equal.""" + return not self == other diff --git a/frogpilot/third_party/influxdb_client/extras.py b/frogpilot/third_party/influxdb_client/extras.py new file mode 100644 index 000000000..63ceb3b34 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/extras.py @@ -0,0 +1,13 @@ +"""Extras to selectively import Pandas or NumPy.""" + +try: + import pandas as pd +except ModuleNotFoundError as err: + raise ImportError(f"`query_data_frame` requires Pandas which couldn't be imported due: {err}") + +try: + import numpy as np +except ModuleNotFoundError as err: + raise ImportError(f"`data_frame` requires numpy which couldn't be imported due: {err}") + +__all__ = ['pd', 'np'] diff --git a/frogpilot/third_party/influxdb_client/py.typed b/frogpilot/third_party/influxdb_client/py.typed new file mode 100644 index 000000000..e69de29bb diff --git a/frogpilot/third_party/influxdb_client/rest.py b/frogpilot/third_party/influxdb_client/rest.py new file mode 100644 index 000000000..cd4dbff45 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/rest.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + +from __future__ import absolute_import + +import logging +from typing import Dict +from urllib3 import HTTPResponse +from influxdb_client.client.exceptions import InfluxDBError +from influxdb_client.configuration import Configuration + +_UTF_8_encoding = 'utf-8' + + +class ApiException(InfluxDBError): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + Do not edit the class manually. + """ + + def __init__(self, status=None, reason=None, http_resp=None): + """Initialize with HTTP response.""" + super().__init__(response=http_resp) + if http_resp: + self.status = http_resp.status + self.reason = http_resp.reason + self.body = http_resp.data + if isinstance(http_resp, HTTPResponse): # response is HTTPResponse + self.headers = http_resp.headers + else: # response is RESTResponse + self.headers = http_resp.getheaders() + else: + self.status = status + self.reason = reason + self.body = None + self.headers = None + + def __str__(self): + """Get custom error messages for exception.""" + error_message = "({0})\n" \ + "Reason: {1}\n".format(self.status, self.reason) + if self.headers: + error_message += "HTTP response headers: {0}\n".format( + self.headers) + + if self.body: + error_message += "HTTP response body: {0}\n".format(self.body) + + return error_message + + +class _BaseRESTClient(object): + logger = logging.getLogger('influxdb_client.client.http') + + @staticmethod + def log_request(method: str, url: str): + _BaseRESTClient.logger.debug(f">>> Request: '{method} {url}'") + + @staticmethod + def log_response(status: str): + _BaseRESTClient.logger.debug(f"<<< Response: {status}") + + @staticmethod + def log_body(body: object, prefix: str): + _BaseRESTClient.logger.debug(f"{prefix} Body: {body}") + + @staticmethod + def log_headers(headers: Dict[str, str], prefix: str): + for key, v in headers.items(): + value = v + if 'authorization' == key.lower(): + value = '***' + _BaseRESTClient.logger.debug(f"{prefix} {key}: {value}") + + +def _requires_create_user_session(configuration: Configuration, cookie: str, resource_path: str): + _unauthorized = ['/api/v2/signin', '/api/v2/signout'] + return configuration.username and configuration.password and not cookie and resource_path not in _unauthorized + + +def _requires_expire_user_session(configuration: Configuration, cookie: str): + return configuration.username and configuration.password and cookie diff --git a/frogpilot/third_party/influxdb_client/service/__init__.py b/frogpilot/third_party/influxdb_client/service/__init__.py new file mode 100644 index 000000000..0d21a4384 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/__init__.py @@ -0,0 +1,56 @@ +# flake8: noqa + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +# import apis into api package +from influxdb_client.service.authorizations_service import AuthorizationsService +from influxdb_client.service.backup_service import BackupService +from influxdb_client.service.bucket_schemas_service import BucketSchemasService +from influxdb_client.service.buckets_service import BucketsService +from influxdb_client.service.cells_service import CellsService +from influxdb_client.service.checks_service import ChecksService +from influxdb_client.service.config_service import ConfigService +from influxdb_client.service.dbr_ps_service import DBRPsService +from influxdb_client.service.dashboards_service import DashboardsService +from influxdb_client.service.delete_service import DeleteService +from influxdb_client.service.health_service import HealthService +from influxdb_client.service.invokable_scripts_service import InvokableScriptsService +from influxdb_client.service.labels_service import LabelsService +from influxdb_client.service.legacy_authorizations_service import LegacyAuthorizationsService +from influxdb_client.service.metrics_service import MetricsService +from influxdb_client.service.notification_endpoints_service import NotificationEndpointsService +from influxdb_client.service.notification_rules_service import NotificationRulesService +from influxdb_client.service.organizations_service import OrganizationsService +from influxdb_client.service.ping_service import PingService +from influxdb_client.service.query_service import QueryService +from influxdb_client.service.ready_service import ReadyService +from influxdb_client.service.remote_connections_service import RemoteConnectionsService +from influxdb_client.service.replications_service import ReplicationsService +from influxdb_client.service.resources_service import ResourcesService +from influxdb_client.service.restore_service import RestoreService +from influxdb_client.service.routes_service import RoutesService +from influxdb_client.service.rules_service import RulesService +from influxdb_client.service.scraper_targets_service import ScraperTargetsService +from influxdb_client.service.secrets_service import SecretsService +from influxdb_client.service.setup_service import SetupService +from influxdb_client.service.signin_service import SigninService +from influxdb_client.service.signout_service import SignoutService +from influxdb_client.service.sources_service import SourcesService +from influxdb_client.service.tasks_service import TasksService +from influxdb_client.service.telegraf_plugins_service import TelegrafPluginsService +from influxdb_client.service.telegrafs_service import TelegrafsService +from influxdb_client.service.templates_service import TemplatesService +from influxdb_client.service.users_service import UsersService +from influxdb_client.service.variables_service import VariablesService +from influxdb_client.service.views_service import ViewsService +from influxdb_client.service.write_service import WriteService diff --git a/frogpilot/third_party/influxdb_client/service/_base_service.py b/frogpilot/third_party/influxdb_client/service/_base_service.py new file mode 100644 index 000000000..d3e8f9955 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/_base_service.py @@ -0,0 +1,67 @@ + + +# noinspection PyMethodMayBeStatic +class _BaseService(object): + + def __init__(self, api_client=None): + """Init common services operation.""" + if api_client is None: + raise ValueError("Invalid value for `api_client`, must be defined.") + self.api_client = api_client + self._build_type = None + + def _check_operation_params(self, operation_id, supported_params, local_params): + supported_params.append('async_req') + supported_params.append('_return_http_data_only') + supported_params.append('_preload_content') + supported_params.append('_request_timeout') + supported_params.append('urlopen_kw') + for key, val in local_params['kwargs'].items(): + if key not in supported_params: + raise TypeError( + f"Got an unexpected keyword argument '{key}'" + f" to method {operation_id}" + ) + local_params[key] = val + del local_params['kwargs'] + + def _is_cloud_instance(self) -> bool: + if not self._build_type: + self._build_type = self.build_type() + return 'cloud' in self._build_type.lower() + + async def _is_cloud_instance_async(self) -> bool: + if not self._build_type: + self._build_type = await self.build_type_async() + return 'cloud' in self._build_type.lower() + + def build_type(self) -> str: + """ + Return the build type of the connected InfluxDB Server. + + :return: The type of InfluxDB build. + """ + from influxdb_client import PingService + ping_service = PingService(self.api_client) + + response = ping_service.get_ping_with_http_info(_return_http_data_only=False) + return self.response_header(response, header_name='X-Influxdb-Build') + + async def build_type_async(self) -> str: + """ + Return the build type of the connected InfluxDB Server. + + :return: The type of InfluxDB build. + """ + from influxdb_client import PingService + ping_service = PingService(self.api_client) + + response = await ping_service.get_ping_async(_return_http_data_only=False) + return self.response_header(response, header_name='X-Influxdb-Build') + + def response_header(self, response, header_name='X-Influxdb-Version') -> str: + if response is not None and len(response) >= 3: + if header_name in response[2]: + return response[2][header_name] + + return "unknown" diff --git a/frogpilot/third_party/influxdb_client/service/authorizations_service.py b/frogpilot/third_party/influxdb_client/service/authorizations_service.py new file mode 100644 index 000000000..100160e29 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/authorizations_service.py @@ -0,0 +1,658 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class AuthorizationsService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """AuthorizationsService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def delete_authorizations_id(self, auth_id, **kwargs): # noqa: E501,D401,D403 + """Delete an authorization. + + Deletes an authorization. Use the endpoint to delete an API token. If you want to disable an API token instead of delete it, [update the authorization's status to `inactive`](#operation/PatchAuthorizationsID). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_authorizations_id(auth_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str auth_id: An authorization ID. Specifies the authorization to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_authorizations_id_with_http_info(auth_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_authorizations_id_with_http_info(auth_id, **kwargs) # noqa: E501 + return data + + def delete_authorizations_id_with_http_info(self, auth_id, **kwargs): # noqa: E501,D401,D403 + """Delete an authorization. + + Deletes an authorization. Use the endpoint to delete an API token. If you want to disable an API token instead of delete it, [update the authorization's status to `inactive`](#operation/PatchAuthorizationsID). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_authorizations_id_with_http_info(auth_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str auth_id: An authorization ID. Specifies the authorization to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_authorizations_id_prepare(auth_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/authorizations/{authID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_authorizations_id_async(self, auth_id, **kwargs): # noqa: E501,D401,D403 + """Delete an authorization. + + Deletes an authorization. Use the endpoint to delete an API token. If you want to disable an API token instead of delete it, [update the authorization's status to `inactive`](#operation/PatchAuthorizationsID). + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str auth_id: An authorization ID. Specifies the authorization to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_authorizations_id_prepare(auth_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/authorizations/{authID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_authorizations_id_prepare(self, auth_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['auth_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_authorizations_id', all_params, local_var_params) + # verify the required parameter 'auth_id' is set + if ('auth_id' not in local_var_params or + local_var_params['auth_id'] is None): + raise ValueError("Missing the required parameter `auth_id` when calling `delete_authorizations_id`") # noqa: E501 + + path_params = {} + if 'auth_id' in local_var_params: + path_params['authID'] = local_var_params['auth_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_authorizations(self, **kwargs): # noqa: E501,D401,D403 + """List authorizations. + + Lists authorizations. To limit which authorizations are returned, pass query parameters in your request. If no query parameters are passed, InfluxDB returns all authorizations. #### InfluxDB Cloud - InfluxDB Cloud doesn't expose [API token](https://docs.influxdata.com/influxdb/latest/reference/glossary/#token) values in `GET /api/v2/authorizations` responses; returns `token: redacted` for all authorizations. #### Required permissions To retrieve an authorization, the request must use an API token that has the following permissions: - `read-authorizations` - `read-user` for the user that the authorization is scoped to #### Related guides - [View tokens](https://docs.influxdata.com/influxdb/latest/security/tokens/view-tokens/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_authorizations(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str user_id: A user ID. Only returns authorizations scoped to the specified [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). + :param str user: A user name. Only returns authorizations scoped to the specified [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). + :param str org_id: An organization ID. Only returns authorizations that belong to the specified [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization). + :param str org: An organization name. Only returns authorizations that belong to the specified [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization). + :param str token: An API [token](https://docs.influxdata.com/influxdb/latest/reference/glossary/#token) value. Specifies an authorization by its `token` property value and returns the authorization. #### InfluxDB OSS - Doesn't support this parameter. InfluxDB OSS ignores the `token=` parameter, applies other parameters, and then returns the result. #### Limitations - The parameter is non-repeatable. If you specify more than one, only the first one is used. If a resource with the specified property value doesn't exist, then the response body contains an empty list. + :return: Authorizations + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_authorizations_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_authorizations_with_http_info(**kwargs) # noqa: E501 + return data + + def get_authorizations_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """List authorizations. + + Lists authorizations. To limit which authorizations are returned, pass query parameters in your request. If no query parameters are passed, InfluxDB returns all authorizations. #### InfluxDB Cloud - InfluxDB Cloud doesn't expose [API token](https://docs.influxdata.com/influxdb/latest/reference/glossary/#token) values in `GET /api/v2/authorizations` responses; returns `token: redacted` for all authorizations. #### Required permissions To retrieve an authorization, the request must use an API token that has the following permissions: - `read-authorizations` - `read-user` for the user that the authorization is scoped to #### Related guides - [View tokens](https://docs.influxdata.com/influxdb/latest/security/tokens/view-tokens/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_authorizations_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str user_id: A user ID. Only returns authorizations scoped to the specified [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). + :param str user: A user name. Only returns authorizations scoped to the specified [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). + :param str org_id: An organization ID. Only returns authorizations that belong to the specified [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization). + :param str org: An organization name. Only returns authorizations that belong to the specified [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization). + :param str token: An API [token](https://docs.influxdata.com/influxdb/latest/reference/glossary/#token) value. Specifies an authorization by its `token` property value and returns the authorization. #### InfluxDB OSS - Doesn't support this parameter. InfluxDB OSS ignores the `token=` parameter, applies other parameters, and then returns the result. #### Limitations - The parameter is non-repeatable. If you specify more than one, only the first one is used. If a resource with the specified property value doesn't exist, then the response body contains an empty list. + :return: Authorizations + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_authorizations_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/authorizations', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Authorizations', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_authorizations_async(self, **kwargs): # noqa: E501,D401,D403 + """List authorizations. + + Lists authorizations. To limit which authorizations are returned, pass query parameters in your request. If no query parameters are passed, InfluxDB returns all authorizations. #### InfluxDB Cloud - InfluxDB Cloud doesn't expose [API token](https://docs.influxdata.com/influxdb/latest/reference/glossary/#token) values in `GET /api/v2/authorizations` responses; returns `token: redacted` for all authorizations. #### Required permissions To retrieve an authorization, the request must use an API token that has the following permissions: - `read-authorizations` - `read-user` for the user that the authorization is scoped to #### Related guides - [View tokens](https://docs.influxdata.com/influxdb/latest/security/tokens/view-tokens/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str user_id: A user ID. Only returns authorizations scoped to the specified [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). + :param str user: A user name. Only returns authorizations scoped to the specified [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). + :param str org_id: An organization ID. Only returns authorizations that belong to the specified [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization). + :param str org: An organization name. Only returns authorizations that belong to the specified [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization). + :param str token: An API [token](https://docs.influxdata.com/influxdb/latest/reference/glossary/#token) value. Specifies an authorization by its `token` property value and returns the authorization. #### InfluxDB OSS - Doesn't support this parameter. InfluxDB OSS ignores the `token=` parameter, applies other parameters, and then returns the result. #### Limitations - The parameter is non-repeatable. If you specify more than one, only the first one is used. If a resource with the specified property value doesn't exist, then the response body contains an empty list. + :return: Authorizations + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_authorizations_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/authorizations', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Authorizations', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_authorizations_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span', 'user_id', 'user', 'org_id', 'org', 'token'] # noqa: E501 + self._check_operation_params('get_authorizations', all_params, local_var_params) + + path_params = {} + + query_params = [] + if 'user_id' in local_var_params: + query_params.append(('userID', local_var_params['user_id'])) # noqa: E501 + if 'user' in local_var_params: + query_params.append(('user', local_var_params['user'])) # noqa: E501 + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + if 'token' in local_var_params: + query_params.append(('token', local_var_params['token'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_authorizations_id(self, auth_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve an authorization. + + Retrieves an authorization. Use this endpoint to retrieve information about an API token, including the token's permissions and the user that the token is scoped to. #### InfluxDB OSS - InfluxDB OSS returns [API token](https://docs.influxdata.com/influxdb/latest/reference/glossary/#token) values in authorizations. - If the request uses an _[operator token](https://docs.influxdata.com/influxdb/latest/security/tokens/#operator-token)_, InfluxDB OSS returns authorizations for all organizations in the instance. #### Related guides - [View tokens](https://docs.influxdata.com/influxdb/latest/security/tokens/view-tokens/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_authorizations_id(auth_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str auth_id: An authorization ID. Specifies the authorization to retrieve. (required) + :param str zap_trace_span: OpenTracing span context + :return: Authorization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_authorizations_id_with_http_info(auth_id, **kwargs) # noqa: E501 + else: + (data) = self.get_authorizations_id_with_http_info(auth_id, **kwargs) # noqa: E501 + return data + + def get_authorizations_id_with_http_info(self, auth_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve an authorization. + + Retrieves an authorization. Use this endpoint to retrieve information about an API token, including the token's permissions and the user that the token is scoped to. #### InfluxDB OSS - InfluxDB OSS returns [API token](https://docs.influxdata.com/influxdb/latest/reference/glossary/#token) values in authorizations. - If the request uses an _[operator token](https://docs.influxdata.com/influxdb/latest/security/tokens/#operator-token)_, InfluxDB OSS returns authorizations for all organizations in the instance. #### Related guides - [View tokens](https://docs.influxdata.com/influxdb/latest/security/tokens/view-tokens/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_authorizations_id_with_http_info(auth_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str auth_id: An authorization ID. Specifies the authorization to retrieve. (required) + :param str zap_trace_span: OpenTracing span context + :return: Authorization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_authorizations_id_prepare(auth_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/authorizations/{authID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Authorization', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_authorizations_id_async(self, auth_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve an authorization. + + Retrieves an authorization. Use this endpoint to retrieve information about an API token, including the token's permissions and the user that the token is scoped to. #### InfluxDB OSS - InfluxDB OSS returns [API token](https://docs.influxdata.com/influxdb/latest/reference/glossary/#token) values in authorizations. - If the request uses an _[operator token](https://docs.influxdata.com/influxdb/latest/security/tokens/#operator-token)_, InfluxDB OSS returns authorizations for all organizations in the instance. #### Related guides - [View tokens](https://docs.influxdata.com/influxdb/latest/security/tokens/view-tokens/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str auth_id: An authorization ID. Specifies the authorization to retrieve. (required) + :param str zap_trace_span: OpenTracing span context + :return: Authorization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_authorizations_id_prepare(auth_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/authorizations/{authID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Authorization', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_authorizations_id_prepare(self, auth_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['auth_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_authorizations_id', all_params, local_var_params) + # verify the required parameter 'auth_id' is set + if ('auth_id' not in local_var_params or + local_var_params['auth_id'] is None): + raise ValueError("Missing the required parameter `auth_id` when calling `get_authorizations_id`") # noqa: E501 + + path_params = {} + if 'auth_id' in local_var_params: + path_params['authID'] = local_var_params['auth_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_authorizations_id(self, auth_id, authorization_update_request, **kwargs): # noqa: E501,D401,D403 + """Update an API token to be active or inactive. + + Updates an authorization. Use this endpoint to set an API token's status to be _active_ or _inactive_. InfluxDB rejects requests that use inactive API tokens. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_authorizations_id(auth_id, authorization_update_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str auth_id: An authorization ID. Specifies the authorization to update. (required) + :param AuthorizationUpdateRequest authorization_update_request: In the request body, provide the authorization properties to update. (required) + :param str zap_trace_span: OpenTracing span context + :return: Authorization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_authorizations_id_with_http_info(auth_id, authorization_update_request, **kwargs) # noqa: E501 + else: + (data) = self.patch_authorizations_id_with_http_info(auth_id, authorization_update_request, **kwargs) # noqa: E501 + return data + + def patch_authorizations_id_with_http_info(self, auth_id, authorization_update_request, **kwargs): # noqa: E501,D401,D403 + """Update an API token to be active or inactive. + + Updates an authorization. Use this endpoint to set an API token's status to be _active_ or _inactive_. InfluxDB rejects requests that use inactive API tokens. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_authorizations_id_with_http_info(auth_id, authorization_update_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str auth_id: An authorization ID. Specifies the authorization to update. (required) + :param AuthorizationUpdateRequest authorization_update_request: In the request body, provide the authorization properties to update. (required) + :param str zap_trace_span: OpenTracing span context + :return: Authorization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_authorizations_id_prepare(auth_id, authorization_update_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/authorizations/{authID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Authorization', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_authorizations_id_async(self, auth_id, authorization_update_request, **kwargs): # noqa: E501,D401,D403 + """Update an API token to be active or inactive. + + Updates an authorization. Use this endpoint to set an API token's status to be _active_ or _inactive_. InfluxDB rejects requests that use inactive API tokens. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str auth_id: An authorization ID. Specifies the authorization to update. (required) + :param AuthorizationUpdateRequest authorization_update_request: In the request body, provide the authorization properties to update. (required) + :param str zap_trace_span: OpenTracing span context + :return: Authorization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_authorizations_id_prepare(auth_id, authorization_update_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/authorizations/{authID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Authorization', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_authorizations_id_prepare(self, auth_id, authorization_update_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['auth_id', 'authorization_update_request', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_authorizations_id', all_params, local_var_params) + # verify the required parameter 'auth_id' is set + if ('auth_id' not in local_var_params or + local_var_params['auth_id'] is None): + raise ValueError("Missing the required parameter `auth_id` when calling `patch_authorizations_id`") # noqa: E501 + # verify the required parameter 'authorization_update_request' is set + if ('authorization_update_request' not in local_var_params or + local_var_params['authorization_update_request'] is None): + raise ValueError("Missing the required parameter `authorization_update_request` when calling `patch_authorizations_id`") # noqa: E501 + + path_params = {} + if 'auth_id' in local_var_params: + path_params['authID'] = local_var_params['auth_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'authorization_update_request' in local_var_params: + body_params = local_var_params['authorization_update_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_authorizations(self, authorization_post_request, **kwargs): # noqa: E501,D401,D403 + """Create an authorization. + + Creates an authorization and returns the authorization with the generated API [token](https://docs.influxdata.com/influxdb/latest/reference/glossary/#token). Use this endpoint to create an authorization, which generates an API token with permissions to `read` or `write` to a specific resource or `type` of resource. The API token is the authorization's `token` property value. To follow best practices for secure API token generation and retrieval, InfluxDB enforces access restrictions on API tokens. - InfluxDB allows access to the API token value immediately after the authorization is created. - You canโ€™t change access (read/write) permissions for an API token after itโ€™s created. - Tokens stop working when the user who created the token is deleted. We recommend the following for managing your tokens: - Create a generic user to create and manage tokens for writing data. - Store your tokens in a secure password vault for future access. #### Required permissions - `write-authorizations` - `write-user` for the user that the authorization is scoped to #### Related guides - [Create a token](https://docs.influxdata.com/influxdb/latest/security/tokens/create-token/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_authorizations(authorization_post_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param AuthorizationPostRequest authorization_post_request: The authorization to create. (required) + :param str zap_trace_span: OpenTracing span context + :return: Authorization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_authorizations_with_http_info(authorization_post_request, **kwargs) # noqa: E501 + else: + (data) = self.post_authorizations_with_http_info(authorization_post_request, **kwargs) # noqa: E501 + return data + + def post_authorizations_with_http_info(self, authorization_post_request, **kwargs): # noqa: E501,D401,D403 + """Create an authorization. + + Creates an authorization and returns the authorization with the generated API [token](https://docs.influxdata.com/influxdb/latest/reference/glossary/#token). Use this endpoint to create an authorization, which generates an API token with permissions to `read` or `write` to a specific resource or `type` of resource. The API token is the authorization's `token` property value. To follow best practices for secure API token generation and retrieval, InfluxDB enforces access restrictions on API tokens. - InfluxDB allows access to the API token value immediately after the authorization is created. - You canโ€™t change access (read/write) permissions for an API token after itโ€™s created. - Tokens stop working when the user who created the token is deleted. We recommend the following for managing your tokens: - Create a generic user to create and manage tokens for writing data. - Store your tokens in a secure password vault for future access. #### Required permissions - `write-authorizations` - `write-user` for the user that the authorization is scoped to #### Related guides - [Create a token](https://docs.influxdata.com/influxdb/latest/security/tokens/create-token/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_authorizations_with_http_info(authorization_post_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param AuthorizationPostRequest authorization_post_request: The authorization to create. (required) + :param str zap_trace_span: OpenTracing span context + :return: Authorization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_authorizations_prepare(authorization_post_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/authorizations', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Authorization', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_authorizations_async(self, authorization_post_request, **kwargs): # noqa: E501,D401,D403 + """Create an authorization. + + Creates an authorization and returns the authorization with the generated API [token](https://docs.influxdata.com/influxdb/latest/reference/glossary/#token). Use this endpoint to create an authorization, which generates an API token with permissions to `read` or `write` to a specific resource or `type` of resource. The API token is the authorization's `token` property value. To follow best practices for secure API token generation and retrieval, InfluxDB enforces access restrictions on API tokens. - InfluxDB allows access to the API token value immediately after the authorization is created. - You canโ€™t change access (read/write) permissions for an API token after itโ€™s created. - Tokens stop working when the user who created the token is deleted. We recommend the following for managing your tokens: - Create a generic user to create and manage tokens for writing data. - Store your tokens in a secure password vault for future access. #### Required permissions - `write-authorizations` - `write-user` for the user that the authorization is scoped to #### Related guides - [Create a token](https://docs.influxdata.com/influxdb/latest/security/tokens/create-token/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param AuthorizationPostRequest authorization_post_request: The authorization to create. (required) + :param str zap_trace_span: OpenTracing span context + :return: Authorization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_authorizations_prepare(authorization_post_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/authorizations', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Authorization', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_authorizations_prepare(self, authorization_post_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['authorization_post_request', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_authorizations', all_params, local_var_params) + # verify the required parameter 'authorization_post_request' is set + if ('authorization_post_request' not in local_var_params or + local_var_params['authorization_post_request'] is None): + raise ValueError("Missing the required parameter `authorization_post_request` when calling `post_authorizations`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'authorization_post_request' in local_var_params: + body_params = local_var_params['authorization_post_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/backup_service.py b/frogpilot/third_party/influxdb_client/service/backup_service.py new file mode 100644 index 000000000..0bc520c9f --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/backup_service.py @@ -0,0 +1,378 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class BackupService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """BackupService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def get_backup_kv(self, **kwargs): # noqa: E501,D401,D403 + """Download snapshot of metadata stored in the server's embedded KV store. Don't use with InfluxDB versions greater than InfluxDB 2.1.x.. + + Retrieves a snapshot of metadata stored in the server's embedded KV store. InfluxDB versions greater than 2.1.x don't include metadata stored in embedded SQL; avoid using this endpoint with versions greater than 2.1.x. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_backup_kv(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: file + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_backup_kv_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_backup_kv_with_http_info(**kwargs) # noqa: E501 + return data + + def get_backup_kv_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """Download snapshot of metadata stored in the server's embedded KV store. Don't use with InfluxDB versions greater than InfluxDB 2.1.x.. + + Retrieves a snapshot of metadata stored in the server's embedded KV store. InfluxDB versions greater than 2.1.x don't include metadata stored in embedded SQL; avoid using this endpoint with versions greater than 2.1.x. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_backup_kv_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: file + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_backup_kv_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/backup/kv', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='file', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_backup_kv_async(self, **kwargs): # noqa: E501,D401,D403 + """Download snapshot of metadata stored in the server's embedded KV store. Don't use with InfluxDB versions greater than InfluxDB 2.1.x.. + + Retrieves a snapshot of metadata stored in the server's embedded KV store. InfluxDB versions greater than 2.1.x don't include metadata stored in embedded SQL; avoid using this endpoint with versions greater than 2.1.x. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: file + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_backup_kv_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/backup/kv', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='file', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_backup_kv_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span'] # noqa: E501 + self._check_operation_params('get_backup_kv', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/octet-stream', 'application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_backup_metadata(self, **kwargs): # noqa: E501,D401,D403 + """Download snapshot of all metadata in the server. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_backup_metadata(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str accept_encoding: Indicates the content encoding (usually a compression algorithm) that the client can understand. + :return: MetadataBackup + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_backup_metadata_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_backup_metadata_with_http_info(**kwargs) # noqa: E501 + return data + + def get_backup_metadata_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """Download snapshot of all metadata in the server. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_backup_metadata_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str accept_encoding: Indicates the content encoding (usually a compression algorithm) that the client can understand. + :return: MetadataBackup + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_backup_metadata_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/backup/metadata', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='MetadataBackup', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_backup_metadata_async(self, **kwargs): # noqa: E501,D401,D403 + """Download snapshot of all metadata in the server. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str accept_encoding: Indicates the content encoding (usually a compression algorithm) that the client can understand. + :return: MetadataBackup + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_backup_metadata_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/backup/metadata', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='MetadataBackup', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_backup_metadata_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span', 'accept_encoding'] # noqa: E501 + self._check_operation_params('get_backup_metadata', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + if 'accept_encoding' in local_var_params: + header_params['Accept-Encoding'] = local_var_params['accept_encoding'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['multipart/mixed', 'application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_backup_shard_id(self, shard_id, **kwargs): # noqa: E501,D401,D403 + """Download snapshot of all TSM data in a shard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_backup_shard_id(shard_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param int shard_id: The shard ID. (required) + :param str zap_trace_span: OpenTracing span context + :param str accept_encoding: Indicates the content encoding (usually a compression algorithm) that the client can understand. + :param datetime since: The earliest time [RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp) to include in the snapshot. + :return: file + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_backup_shard_id_with_http_info(shard_id, **kwargs) # noqa: E501 + else: + (data) = self.get_backup_shard_id_with_http_info(shard_id, **kwargs) # noqa: E501 + return data + + def get_backup_shard_id_with_http_info(self, shard_id, **kwargs): # noqa: E501,D401,D403 + """Download snapshot of all TSM data in a shard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_backup_shard_id_with_http_info(shard_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param int shard_id: The shard ID. (required) + :param str zap_trace_span: OpenTracing span context + :param str accept_encoding: Indicates the content encoding (usually a compression algorithm) that the client can understand. + :param datetime since: The earliest time [RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp) to include in the snapshot. + :return: file + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_backup_shard_id_prepare(shard_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/backup/shards/{shardID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='file', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_backup_shard_id_async(self, shard_id, **kwargs): # noqa: E501,D401,D403 + """Download snapshot of all TSM data in a shard. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param int shard_id: The shard ID. (required) + :param str zap_trace_span: OpenTracing span context + :param str accept_encoding: Indicates the content encoding (usually a compression algorithm) that the client can understand. + :param datetime since: The earliest time [RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp) to include in the snapshot. + :return: file + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_backup_shard_id_prepare(shard_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/backup/shards/{shardID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='file', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_backup_shard_id_prepare(self, shard_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['shard_id', 'zap_trace_span', 'accept_encoding', 'since'] # noqa: E501 + self._check_operation_params('get_backup_shard_id', all_params, local_var_params) + # verify the required parameter 'shard_id' is set + if ('shard_id' not in local_var_params or + local_var_params['shard_id'] is None): + raise ValueError("Missing the required parameter `shard_id` when calling `get_backup_shard_id`") # noqa: E501 + + path_params = {} + if 'shard_id' in local_var_params: + path_params['shardID'] = local_var_params['shard_id'] # noqa: E501 + + query_params = [] + if 'since' in local_var_params: + query_params.append(('since', local_var_params['since'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + if 'accept_encoding' in local_var_params: + header_params['Accept-Encoding'] = local_var_params['accept_encoding'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/octet-stream', 'application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/bucket_schemas_service.py b/frogpilot/third_party/influxdb_client/service/bucket_schemas_service.py new file mode 100644 index 000000000..7a25338c3 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/bucket_schemas_service.py @@ -0,0 +1,607 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class BucketSchemasService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """BucketSchemasService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def create_measurement_schema(self, bucket_id, measurement_schema_create_request, **kwargs): # noqa: E501,D401,D403 + """Create a measurement schema for a bucket. + + Creates an _explict_ measurement [schema](https://docs.influxdata.com/influxdb/cloud/reference/glossary/#schema) for a bucket. _Explicit_ schemas are used to enforce column names, tags, fields, and data types for your data. By default, buckets have an _implicit_ schema-type (`"schemaType": "implicit"`) that conforms to your data. Use this endpoint to create schemas that prevent non-conforming write requests. #### Limitations - Buckets must be created with the "explict" `schemaType` in order to use schemas. #### Related guides - [Manage bucket schemas](https://docs.influxdata.com/influxdb/cloud/organizations/buckets/bucket-schema/). - [Create a bucket with an explicit schema](https://docs.influxdata.com/influxdb/cloud/organizations/buckets/create-bucket/#create-a-bucket-with-an-explicit-schema) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.create_measurement_schema(bucket_id, measurement_schema_create_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: A bucket ID. Adds a schema for the specified bucket. (required) + :param MeasurementSchemaCreateRequest measurement_schema_create_request: (required) + :param str org: An organization name. Specifies the organization that owns the schema. + :param str org_id: An organization ID. Specifies the organization that owns the schema. + :return: MeasurementSchema + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.create_measurement_schema_with_http_info(bucket_id, measurement_schema_create_request, **kwargs) # noqa: E501 + else: + (data) = self.create_measurement_schema_with_http_info(bucket_id, measurement_schema_create_request, **kwargs) # noqa: E501 + return data + + def create_measurement_schema_with_http_info(self, bucket_id, measurement_schema_create_request, **kwargs): # noqa: E501,D401,D403 + """Create a measurement schema for a bucket. + + Creates an _explict_ measurement [schema](https://docs.influxdata.com/influxdb/cloud/reference/glossary/#schema) for a bucket. _Explicit_ schemas are used to enforce column names, tags, fields, and data types for your data. By default, buckets have an _implicit_ schema-type (`"schemaType": "implicit"`) that conforms to your data. Use this endpoint to create schemas that prevent non-conforming write requests. #### Limitations - Buckets must be created with the "explict" `schemaType` in order to use schemas. #### Related guides - [Manage bucket schemas](https://docs.influxdata.com/influxdb/cloud/organizations/buckets/bucket-schema/). - [Create a bucket with an explicit schema](https://docs.influxdata.com/influxdb/cloud/organizations/buckets/create-bucket/#create-a-bucket-with-an-explicit-schema) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.create_measurement_schema_with_http_info(bucket_id, measurement_schema_create_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: A bucket ID. Adds a schema for the specified bucket. (required) + :param MeasurementSchemaCreateRequest measurement_schema_create_request: (required) + :param str org: An organization name. Specifies the organization that owns the schema. + :param str org_id: An organization ID. Specifies the organization that owns the schema. + :return: MeasurementSchema + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not self._is_cloud_instance(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('BucketSchemasService', + 'https://docs.influxdata.com/influxdb/cloud/organizations/buckets/bucket-schema/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._create_measurement_schema_prepare(bucket_id, measurement_schema_create_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/buckets/{bucketID}/schema/measurements', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='MeasurementSchema', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def create_measurement_schema_async(self, bucket_id, measurement_schema_create_request, **kwargs): # noqa: E501,D401,D403 + """Create a measurement schema for a bucket. + + Creates an _explict_ measurement [schema](https://docs.influxdata.com/influxdb/cloud/reference/glossary/#schema) for a bucket. _Explicit_ schemas are used to enforce column names, tags, fields, and data types for your data. By default, buckets have an _implicit_ schema-type (`"schemaType": "implicit"`) that conforms to your data. Use this endpoint to create schemas that prevent non-conforming write requests. #### Limitations - Buckets must be created with the "explict" `schemaType` in order to use schemas. #### Related guides - [Manage bucket schemas](https://docs.influxdata.com/influxdb/cloud/organizations/buckets/bucket-schema/). - [Create a bucket with an explicit schema](https://docs.influxdata.com/influxdb/cloud/organizations/buckets/create-bucket/#create-a-bucket-with-an-explicit-schema) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str bucket_id: A bucket ID. Adds a schema for the specified bucket. (required) + :param MeasurementSchemaCreateRequest measurement_schema_create_request: (required) + :param str org: An organization name. Specifies the organization that owns the schema. + :param str org_id: An organization ID. Specifies the organization that owns the schema. + :return: MeasurementSchema + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not await self._is_cloud_instance_async(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('BucketSchemasService', + 'https://docs.influxdata.com/influxdb/cloud/organizations/buckets/bucket-schema/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._create_measurement_schema_prepare(bucket_id, measurement_schema_create_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/buckets/{bucketID}/schema/measurements', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='MeasurementSchema', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _create_measurement_schema_prepare(self, bucket_id, measurement_schema_create_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['bucket_id', 'measurement_schema_create_request', 'org', 'org_id'] # noqa: E501 + self._check_operation_params('create_measurement_schema', all_params, local_var_params) + # verify the required parameter 'bucket_id' is set + if ('bucket_id' not in local_var_params or + local_var_params['bucket_id'] is None): + raise ValueError("Missing the required parameter `bucket_id` when calling `create_measurement_schema`") # noqa: E501 + # verify the required parameter 'measurement_schema_create_request' is set + if ('measurement_schema_create_request' not in local_var_params or + local_var_params['measurement_schema_create_request'] is None): + raise ValueError("Missing the required parameter `measurement_schema_create_request` when calling `create_measurement_schema`") # noqa: E501 + + path_params = {} + if 'bucket_id' in local_var_params: + path_params['bucketID'] = local_var_params['bucket_id'] # noqa: E501 + + query_params = [] + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + + header_params = {} + + body_params = None + if 'measurement_schema_create_request' in local_var_params: + body_params = local_var_params['measurement_schema_create_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_measurement_schema(self, bucket_id, measurement_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a measurement schema. + + Retrieves an explicit measurement [schema](https://docs.influxdata.com/influxdb/cloud/reference/glossary/#schema). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_measurement_schema(bucket_id, measurement_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: A bucket ID. Retrieves schemas for the specified bucket. (required) + :param str measurement_id: The measurement schema ID. Specifies the measurement schema to retrieve. (required) + :param str org: Organization name. Specifies the organization that owns the schema. + :param str org_id: Organization ID. Specifies the organization that owns the schema. + :return: MeasurementSchema + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_measurement_schema_with_http_info(bucket_id, measurement_id, **kwargs) # noqa: E501 + else: + (data) = self.get_measurement_schema_with_http_info(bucket_id, measurement_id, **kwargs) # noqa: E501 + return data + + def get_measurement_schema_with_http_info(self, bucket_id, measurement_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a measurement schema. + + Retrieves an explicit measurement [schema](https://docs.influxdata.com/influxdb/cloud/reference/glossary/#schema). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_measurement_schema_with_http_info(bucket_id, measurement_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: A bucket ID. Retrieves schemas for the specified bucket. (required) + :param str measurement_id: The measurement schema ID. Specifies the measurement schema to retrieve. (required) + :param str org: Organization name. Specifies the organization that owns the schema. + :param str org_id: Organization ID. Specifies the organization that owns the schema. + :return: MeasurementSchema + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not self._is_cloud_instance(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('BucketSchemasService', + 'https://docs.influxdata.com/influxdb/cloud/organizations/buckets/bucket-schema/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_measurement_schema_prepare(bucket_id, measurement_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/buckets/{bucketID}/schema/measurements/{measurementID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='MeasurementSchema', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_measurement_schema_async(self, bucket_id, measurement_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a measurement schema. + + Retrieves an explicit measurement [schema](https://docs.influxdata.com/influxdb/cloud/reference/glossary/#schema). + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str bucket_id: A bucket ID. Retrieves schemas for the specified bucket. (required) + :param str measurement_id: The measurement schema ID. Specifies the measurement schema to retrieve. (required) + :param str org: Organization name. Specifies the organization that owns the schema. + :param str org_id: Organization ID. Specifies the organization that owns the schema. + :return: MeasurementSchema + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not await self._is_cloud_instance_async(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('BucketSchemasService', + 'https://docs.influxdata.com/influxdb/cloud/organizations/buckets/bucket-schema/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_measurement_schema_prepare(bucket_id, measurement_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/buckets/{bucketID}/schema/measurements/{measurementID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='MeasurementSchema', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_measurement_schema_prepare(self, bucket_id, measurement_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['bucket_id', 'measurement_id', 'org', 'org_id'] # noqa: E501 + self._check_operation_params('get_measurement_schema', all_params, local_var_params) + # verify the required parameter 'bucket_id' is set + if ('bucket_id' not in local_var_params or + local_var_params['bucket_id'] is None): + raise ValueError("Missing the required parameter `bucket_id` when calling `get_measurement_schema`") # noqa: E501 + # verify the required parameter 'measurement_id' is set + if ('measurement_id' not in local_var_params or + local_var_params['measurement_id'] is None): + raise ValueError("Missing the required parameter `measurement_id` when calling `get_measurement_schema`") # noqa: E501 + + path_params = {} + if 'bucket_id' in local_var_params: + path_params['bucketID'] = local_var_params['bucket_id'] # noqa: E501 + if 'measurement_id' in local_var_params: + path_params['measurementID'] = local_var_params['measurement_id'] # noqa: E501 + + query_params = [] + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + + header_params = {} + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_measurement_schemas(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + """List measurement schemas of a bucket. + + Lists _explicit_ [schemas](https://docs.influxdata.com/influxdb/cloud/reference/glossary/#schema) (`"schemaType": "explicit"`) for a bucket. _Explicit_ schemas are used to enforce column names, tags, fields, and data types for your data. By default, buckets have an _implicit_ schema-type (`"schemaType": "implicit"`) that conforms to your data. #### Related guides - [Using bucket schemas](https://www.influxdata.com/blog/new-bucket-schema-option-protect-from-unwanted-schema-changes/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_measurement_schemas(bucket_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: A bucket ID. Lists measurement schemas for the specified bucket. (required) + :param str org: An organization name. Specifies the organization that owns the schema. + :param str org_id: An organization ID. Specifies the organization that owns the schema. + :param str name: A measurement name. Only returns measurement schemas with the specified name. + :return: MeasurementSchemaList + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_measurement_schemas_with_http_info(bucket_id, **kwargs) # noqa: E501 + else: + (data) = self.get_measurement_schemas_with_http_info(bucket_id, **kwargs) # noqa: E501 + return data + + def get_measurement_schemas_with_http_info(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + """List measurement schemas of a bucket. + + Lists _explicit_ [schemas](https://docs.influxdata.com/influxdb/cloud/reference/glossary/#schema) (`"schemaType": "explicit"`) for a bucket. _Explicit_ schemas are used to enforce column names, tags, fields, and data types for your data. By default, buckets have an _implicit_ schema-type (`"schemaType": "implicit"`) that conforms to your data. #### Related guides - [Using bucket schemas](https://www.influxdata.com/blog/new-bucket-schema-option-protect-from-unwanted-schema-changes/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_measurement_schemas_with_http_info(bucket_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: A bucket ID. Lists measurement schemas for the specified bucket. (required) + :param str org: An organization name. Specifies the organization that owns the schema. + :param str org_id: An organization ID. Specifies the organization that owns the schema. + :param str name: A measurement name. Only returns measurement schemas with the specified name. + :return: MeasurementSchemaList + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not self._is_cloud_instance(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('BucketSchemasService', + 'https://docs.influxdata.com/influxdb/cloud/organizations/buckets/bucket-schema/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_measurement_schemas_prepare(bucket_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/buckets/{bucketID}/schema/measurements', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='MeasurementSchemaList', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_measurement_schemas_async(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + """List measurement schemas of a bucket. + + Lists _explicit_ [schemas](https://docs.influxdata.com/influxdb/cloud/reference/glossary/#schema) (`"schemaType": "explicit"`) for a bucket. _Explicit_ schemas are used to enforce column names, tags, fields, and data types for your data. By default, buckets have an _implicit_ schema-type (`"schemaType": "implicit"`) that conforms to your data. #### Related guides - [Using bucket schemas](https://www.influxdata.com/blog/new-bucket-schema-option-protect-from-unwanted-schema-changes/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str bucket_id: A bucket ID. Lists measurement schemas for the specified bucket. (required) + :param str org: An organization name. Specifies the organization that owns the schema. + :param str org_id: An organization ID. Specifies the organization that owns the schema. + :param str name: A measurement name. Only returns measurement schemas with the specified name. + :return: MeasurementSchemaList + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not await self._is_cloud_instance_async(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('BucketSchemasService', + 'https://docs.influxdata.com/influxdb/cloud/organizations/buckets/bucket-schema/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_measurement_schemas_prepare(bucket_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/buckets/{bucketID}/schema/measurements', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='MeasurementSchemaList', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_measurement_schemas_prepare(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['bucket_id', 'org', 'org_id', 'name'] # noqa: E501 + self._check_operation_params('get_measurement_schemas', all_params, local_var_params) + # verify the required parameter 'bucket_id' is set + if ('bucket_id' not in local_var_params or + local_var_params['bucket_id'] is None): + raise ValueError("Missing the required parameter `bucket_id` when calling `get_measurement_schemas`") # noqa: E501 + + path_params = {} + if 'bucket_id' in local_var_params: + path_params['bucketID'] = local_var_params['bucket_id'] # noqa: E501 + + query_params = [] + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + if 'name' in local_var_params: + query_params.append(('name', local_var_params['name'])) # noqa: E501 + + header_params = {} + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def update_measurement_schema(self, bucket_id, measurement_id, measurement_schema_update_request, **kwargs): # noqa: E501,D401,D403 + """Update a measurement schema. + + Updates a measurement [schema](https://docs.influxdata.com/influxdb/cloud/reference/glossary/#schema). Use this endpoint to update the fields (`name`, `type`, and `dataType`) of a measurement schema. #### Limitations - You can't update the `name` of a measurement. #### Related guides - [Manage bucket schemas](https://docs.influxdata.com/influxdb/cloud/organizations/buckets/bucket-schema/). - [Using bucket schemas](https://www.influxdata.com/blog/new-bucket-schema-option-protect-from-unwanted-schema-changes/). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.update_measurement_schema(bucket_id, measurement_id, measurement_schema_update_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: A bucket ID. Specifies the bucket to retrieve schemas for. (required) + :param str measurement_id: A measurement schema ID. Retrieves the specified measurement schema. (required) + :param MeasurementSchemaUpdateRequest measurement_schema_update_request: (required) + :param str org: An organization name. Specifies the organization that owns the schema. + :param str org_id: An organization ID. Specifies the organization that owns the schema. + :return: MeasurementSchema + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.update_measurement_schema_with_http_info(bucket_id, measurement_id, measurement_schema_update_request, **kwargs) # noqa: E501 + else: + (data) = self.update_measurement_schema_with_http_info(bucket_id, measurement_id, measurement_schema_update_request, **kwargs) # noqa: E501 + return data + + def update_measurement_schema_with_http_info(self, bucket_id, measurement_id, measurement_schema_update_request, **kwargs): # noqa: E501,D401,D403 + """Update a measurement schema. + + Updates a measurement [schema](https://docs.influxdata.com/influxdb/cloud/reference/glossary/#schema). Use this endpoint to update the fields (`name`, `type`, and `dataType`) of a measurement schema. #### Limitations - You can't update the `name` of a measurement. #### Related guides - [Manage bucket schemas](https://docs.influxdata.com/influxdb/cloud/organizations/buckets/bucket-schema/). - [Using bucket schemas](https://www.influxdata.com/blog/new-bucket-schema-option-protect-from-unwanted-schema-changes/). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.update_measurement_schema_with_http_info(bucket_id, measurement_id, measurement_schema_update_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: A bucket ID. Specifies the bucket to retrieve schemas for. (required) + :param str measurement_id: A measurement schema ID. Retrieves the specified measurement schema. (required) + :param MeasurementSchemaUpdateRequest measurement_schema_update_request: (required) + :param str org: An organization name. Specifies the organization that owns the schema. + :param str org_id: An organization ID. Specifies the organization that owns the schema. + :return: MeasurementSchema + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not self._is_cloud_instance(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('BucketSchemasService', + 'https://docs.influxdata.com/influxdb/cloud/organizations/buckets/bucket-schema/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._update_measurement_schema_prepare(bucket_id, measurement_id, measurement_schema_update_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/buckets/{bucketID}/schema/measurements/{measurementID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='MeasurementSchema', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def update_measurement_schema_async(self, bucket_id, measurement_id, measurement_schema_update_request, **kwargs): # noqa: E501,D401,D403 + """Update a measurement schema. + + Updates a measurement [schema](https://docs.influxdata.com/influxdb/cloud/reference/glossary/#schema). Use this endpoint to update the fields (`name`, `type`, and `dataType`) of a measurement schema. #### Limitations - You can't update the `name` of a measurement. #### Related guides - [Manage bucket schemas](https://docs.influxdata.com/influxdb/cloud/organizations/buckets/bucket-schema/). - [Using bucket schemas](https://www.influxdata.com/blog/new-bucket-schema-option-protect-from-unwanted-schema-changes/). + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str bucket_id: A bucket ID. Specifies the bucket to retrieve schemas for. (required) + :param str measurement_id: A measurement schema ID. Retrieves the specified measurement schema. (required) + :param MeasurementSchemaUpdateRequest measurement_schema_update_request: (required) + :param str org: An organization name. Specifies the organization that owns the schema. + :param str org_id: An organization ID. Specifies the organization that owns the schema. + :return: MeasurementSchema + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not await self._is_cloud_instance_async(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('BucketSchemasService', + 'https://docs.influxdata.com/influxdb/cloud/organizations/buckets/bucket-schema/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._update_measurement_schema_prepare(bucket_id, measurement_id, measurement_schema_update_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/buckets/{bucketID}/schema/measurements/{measurementID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='MeasurementSchema', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _update_measurement_schema_prepare(self, bucket_id, measurement_id, measurement_schema_update_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['bucket_id', 'measurement_id', 'measurement_schema_update_request', 'org', 'org_id'] # noqa: E501 + self._check_operation_params('update_measurement_schema', all_params, local_var_params) + # verify the required parameter 'bucket_id' is set + if ('bucket_id' not in local_var_params or + local_var_params['bucket_id'] is None): + raise ValueError("Missing the required parameter `bucket_id` when calling `update_measurement_schema`") # noqa: E501 + # verify the required parameter 'measurement_id' is set + if ('measurement_id' not in local_var_params or + local_var_params['measurement_id'] is None): + raise ValueError("Missing the required parameter `measurement_id` when calling `update_measurement_schema`") # noqa: E501 + # verify the required parameter 'measurement_schema_update_request' is set + if ('measurement_schema_update_request' not in local_var_params or + local_var_params['measurement_schema_update_request'] is None): + raise ValueError("Missing the required parameter `measurement_schema_update_request` when calling `update_measurement_schema`") # noqa: E501 + + path_params = {} + if 'bucket_id' in local_var_params: + path_params['bucketID'] = local_var_params['bucket_id'] # noqa: E501 + if 'measurement_id' in local_var_params: + path_params['measurementID'] = local_var_params['measurement_id'] # noqa: E501 + + query_params = [] + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + + header_params = {} + + body_params = None + if 'measurement_schema_update_request' in local_var_params: + body_params = local_var_params['measurement_schema_update_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/buckets_service.py b/frogpilot/third_party/influxdb_client/service/buckets_service.py new file mode 100644 index 000000000..05cf0e1f8 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/buckets_service.py @@ -0,0 +1,1929 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class BucketsService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """BucketsService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def delete_buckets_id(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + """Delete a bucket. + + Deletes a bucket and all associated records. #### InfluxDB Cloud - Does the following when you send a delete request: 1. Validates the request and queues the delete. 2. Returns an HTTP `204` status code if queued; _error_ otherwise. 3. Handles the delete asynchronously. #### InfluxDB OSS - Validates the request, handles the delete synchronously, and then responds with success or failure. #### Limitations - Only one bucket can be deleted per request. #### Related Guides - [Delete a bucket](https://docs.influxdata.com/influxdb/latest/organizations/buckets/delete-bucket/#delete-a-bucket-in-the-influxdb-ui) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_buckets_id(bucket_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: Bucket ID. The ID of the bucket to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_buckets_id_with_http_info(bucket_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_buckets_id_with_http_info(bucket_id, **kwargs) # noqa: E501 + return data + + def delete_buckets_id_with_http_info(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + """Delete a bucket. + + Deletes a bucket and all associated records. #### InfluxDB Cloud - Does the following when you send a delete request: 1. Validates the request and queues the delete. 2. Returns an HTTP `204` status code if queued; _error_ otherwise. 3. Handles the delete asynchronously. #### InfluxDB OSS - Validates the request, handles the delete synchronously, and then responds with success or failure. #### Limitations - Only one bucket can be deleted per request. #### Related Guides - [Delete a bucket](https://docs.influxdata.com/influxdb/latest/organizations/buckets/delete-bucket/#delete-a-bucket-in-the-influxdb-ui) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_buckets_id_with_http_info(bucket_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: Bucket ID. The ID of the bucket to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_buckets_id_prepare(bucket_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/buckets/{bucketID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_buckets_id_async(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + """Delete a bucket. + + Deletes a bucket and all associated records. #### InfluxDB Cloud - Does the following when you send a delete request: 1. Validates the request and queues the delete. 2. Returns an HTTP `204` status code if queued; _error_ otherwise. 3. Handles the delete asynchronously. #### InfluxDB OSS - Validates the request, handles the delete synchronously, and then responds with success or failure. #### Limitations - Only one bucket can be deleted per request. #### Related Guides - [Delete a bucket](https://docs.influxdata.com/influxdb/latest/organizations/buckets/delete-bucket/#delete-a-bucket-in-the-influxdb-ui) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str bucket_id: Bucket ID. The ID of the bucket to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_buckets_id_prepare(bucket_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/buckets/{bucketID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_buckets_id_prepare(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['bucket_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_buckets_id', all_params, local_var_params) + # verify the required parameter 'bucket_id' is set + if ('bucket_id' not in local_var_params or + local_var_params['bucket_id'] is None): + raise ValueError("Missing the required parameter `bucket_id` when calling `delete_buckets_id`") # noqa: E501 + + path_params = {} + if 'bucket_id' in local_var_params: + path_params['bucketID'] = local_var_params['bucket_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_buckets_id_labels_id(self, bucket_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a bucket. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_buckets_id_labels_id(bucket_id, label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: The bucket ID. (required) + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_buckets_id_labels_id_with_http_info(bucket_id, label_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_buckets_id_labels_id_with_http_info(bucket_id, label_id, **kwargs) # noqa: E501 + return data + + def delete_buckets_id_labels_id_with_http_info(self, bucket_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a bucket. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_buckets_id_labels_id_with_http_info(bucket_id, label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: The bucket ID. (required) + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_buckets_id_labels_id_prepare(bucket_id, label_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/buckets/{bucketID}/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_buckets_id_labels_id_async(self, bucket_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a bucket. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str bucket_id: The bucket ID. (required) + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_buckets_id_labels_id_prepare(bucket_id, label_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/buckets/{bucketID}/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_buckets_id_labels_id_prepare(self, bucket_id, label_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['bucket_id', 'label_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_buckets_id_labels_id', all_params, local_var_params) + # verify the required parameter 'bucket_id' is set + if ('bucket_id' not in local_var_params or + local_var_params['bucket_id'] is None): + raise ValueError("Missing the required parameter `bucket_id` when calling `delete_buckets_id_labels_id`") # noqa: E501 + # verify the required parameter 'label_id' is set + if ('label_id' not in local_var_params or + local_var_params['label_id'] is None): + raise ValueError("Missing the required parameter `label_id` when calling `delete_buckets_id_labels_id`") # noqa: E501 + + path_params = {} + if 'bucket_id' in local_var_params: + path_params['bucketID'] = local_var_params['bucket_id'] # noqa: E501 + if 'label_id' in local_var_params: + path_params['labelID'] = local_var_params['label_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_buckets_id_members_id(self, user_id, bucket_id, **kwargs): # noqa: E501,D401,D403 + """Remove a member from a bucket. + + Removes a member from a bucket. Use this endpoint to remove a user's member privileges from a bucket. This removes the user's `read` and `write` permissions for the bucket. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) - [Manage members](https://docs.influxdata.com/influxdb/latest/organizations/members/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_buckets_id_members_id(user_id, bucket_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the user to remove. (required) + :param str bucket_id: The ID of the bucket to remove a user from. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_buckets_id_members_id_with_http_info(user_id, bucket_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_buckets_id_members_id_with_http_info(user_id, bucket_id, **kwargs) # noqa: E501 + return data + + def delete_buckets_id_members_id_with_http_info(self, user_id, bucket_id, **kwargs): # noqa: E501,D401,D403 + """Remove a member from a bucket. + + Removes a member from a bucket. Use this endpoint to remove a user's member privileges from a bucket. This removes the user's `read` and `write` permissions for the bucket. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) - [Manage members](https://docs.influxdata.com/influxdb/latest/organizations/members/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_buckets_id_members_id_with_http_info(user_id, bucket_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the user to remove. (required) + :param str bucket_id: The ID of the bucket to remove a user from. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_buckets_id_members_id_prepare(user_id, bucket_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/buckets/{bucketID}/members/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_buckets_id_members_id_async(self, user_id, bucket_id, **kwargs): # noqa: E501,D401,D403 + """Remove a member from a bucket. + + Removes a member from a bucket. Use this endpoint to remove a user's member privileges from a bucket. This removes the user's `read` and `write` permissions for the bucket. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) - [Manage members](https://docs.influxdata.com/influxdb/latest/organizations/members/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str user_id: The ID of the user to remove. (required) + :param str bucket_id: The ID of the bucket to remove a user from. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_buckets_id_members_id_prepare(user_id, bucket_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/buckets/{bucketID}/members/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_buckets_id_members_id_prepare(self, user_id, bucket_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['user_id', 'bucket_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_buckets_id_members_id', all_params, local_var_params) + # verify the required parameter 'user_id' is set + if ('user_id' not in local_var_params or + local_var_params['user_id'] is None): + raise ValueError("Missing the required parameter `user_id` when calling `delete_buckets_id_members_id`") # noqa: E501 + # verify the required parameter 'bucket_id' is set + if ('bucket_id' not in local_var_params or + local_var_params['bucket_id'] is None): + raise ValueError("Missing the required parameter `bucket_id` when calling `delete_buckets_id_members_id`") # noqa: E501 + + path_params = {} + if 'user_id' in local_var_params: + path_params['userID'] = local_var_params['user_id'] # noqa: E501 + if 'bucket_id' in local_var_params: + path_params['bucketID'] = local_var_params['bucket_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_buckets_id_owners_id(self, user_id, bucket_id, **kwargs): # noqa: E501,D401,D403 + """Remove an owner from a bucket. + + Removes an owner from a bucket. Use this endpoint to remove a user's `owner` role for a bucket. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Owner permissions are separate from API token permissions. - Owner permissions are used in the context of the InfluxDB UI. #### Required permissions - `write-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to remove an owner from. #### Related endpoints - [Authorizations](#tag/Authorizations-(API-tokens)) #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_buckets_id_owners_id(user_id, bucket_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the owner to remove. (required) + :param str bucket_id: The ID of the bucket to remove an owner from. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_buckets_id_owners_id_with_http_info(user_id, bucket_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_buckets_id_owners_id_with_http_info(user_id, bucket_id, **kwargs) # noqa: E501 + return data + + def delete_buckets_id_owners_id_with_http_info(self, user_id, bucket_id, **kwargs): # noqa: E501,D401,D403 + """Remove an owner from a bucket. + + Removes an owner from a bucket. Use this endpoint to remove a user's `owner` role for a bucket. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Owner permissions are separate from API token permissions. - Owner permissions are used in the context of the InfluxDB UI. #### Required permissions - `write-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to remove an owner from. #### Related endpoints - [Authorizations](#tag/Authorizations-(API-tokens)) #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_buckets_id_owners_id_with_http_info(user_id, bucket_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the owner to remove. (required) + :param str bucket_id: The ID of the bucket to remove an owner from. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_buckets_id_owners_id_prepare(user_id, bucket_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/buckets/{bucketID}/owners/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_buckets_id_owners_id_async(self, user_id, bucket_id, **kwargs): # noqa: E501,D401,D403 + """Remove an owner from a bucket. + + Removes an owner from a bucket. Use this endpoint to remove a user's `owner` role for a bucket. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Owner permissions are separate from API token permissions. - Owner permissions are used in the context of the InfluxDB UI. #### Required permissions - `write-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to remove an owner from. #### Related endpoints - [Authorizations](#tag/Authorizations-(API-tokens)) #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str user_id: The ID of the owner to remove. (required) + :param str bucket_id: The ID of the bucket to remove an owner from. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_buckets_id_owners_id_prepare(user_id, bucket_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/buckets/{bucketID}/owners/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_buckets_id_owners_id_prepare(self, user_id, bucket_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['user_id', 'bucket_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_buckets_id_owners_id', all_params, local_var_params) + # verify the required parameter 'user_id' is set + if ('user_id' not in local_var_params or + local_var_params['user_id'] is None): + raise ValueError("Missing the required parameter `user_id` when calling `delete_buckets_id_owners_id`") # noqa: E501 + # verify the required parameter 'bucket_id' is set + if ('bucket_id' not in local_var_params or + local_var_params['bucket_id'] is None): + raise ValueError("Missing the required parameter `bucket_id` when calling `delete_buckets_id_owners_id`") # noqa: E501 + + path_params = {} + if 'user_id' in local_var_params: + path_params['userID'] = local_var_params['user_id'] # noqa: E501 + if 'bucket_id' in local_var_params: + path_params['bucketID'] = local_var_params['bucket_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_buckets(self, **kwargs): # noqa: E501,D401,D403 + """List buckets. + + Lists [buckets](https://docs.influxdata.com/influxdb/latest/reference/glossary/#bucket). InfluxDB retrieves buckets owned by the [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) associated with the authorization ([API token](https://docs.influxdata.com/influxdb/latest/reference/glossary/#token)). To limit which buckets are returned, pass query parameters in your request. If no query parameters are passed, InfluxDB returns all buckets up to the default `limit`. #### InfluxDB OSS - If you use an _[operator token](https://docs.influxdata.com/influxdb/latest/security/tokens/#operator-token)_ to authenticate your request, InfluxDB retrieves resources for _all organizations_ in the instance. To retrieve resources for only a specific organization, use the `org` parameter or the `orgID` parameter to specify the organization. #### Required permissions | Action | Permission required | |:--------------------------|:--------------------| | Retrieve _user buckets_ | `read-buckets` | | Retrieve [_system buckets_](https://docs.influxdata.com/influxdb/latest/reference/internals/system-buckets/) | `read-orgs` | #### Related Guides - [Manage buckets](https://docs.influxdata.com/influxdb/latest/organizations/buckets/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_buckets(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :param str after: A resource ID to seek from. Returns records created after the specified record; results don't include the specified record. Use `after` instead of the `offset` parameter. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param str org: An organization name. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Lists buckets for the organization associated with the authorization (API token). #### InfluxDB OSS - Lists buckets for the specified organization. + :param str org_id: An organization ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Lists buckets for the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or `orgID` parameter. - Lists buckets for the specified organization. + :param str name: A bucket name. Only returns buckets with the specified name. + :param str id: A bucket ID. Only returns the bucket with the specified ID. + :return: Buckets + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_buckets_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_buckets_with_http_info(**kwargs) # noqa: E501 + return data + + def get_buckets_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """List buckets. + + Lists [buckets](https://docs.influxdata.com/influxdb/latest/reference/glossary/#bucket). InfluxDB retrieves buckets owned by the [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) associated with the authorization ([API token](https://docs.influxdata.com/influxdb/latest/reference/glossary/#token)). To limit which buckets are returned, pass query parameters in your request. If no query parameters are passed, InfluxDB returns all buckets up to the default `limit`. #### InfluxDB OSS - If you use an _[operator token](https://docs.influxdata.com/influxdb/latest/security/tokens/#operator-token)_ to authenticate your request, InfluxDB retrieves resources for _all organizations_ in the instance. To retrieve resources for only a specific organization, use the `org` parameter or the `orgID` parameter to specify the organization. #### Required permissions | Action | Permission required | |:--------------------------|:--------------------| | Retrieve _user buckets_ | `read-buckets` | | Retrieve [_system buckets_](https://docs.influxdata.com/influxdb/latest/reference/internals/system-buckets/) | `read-orgs` | #### Related Guides - [Manage buckets](https://docs.influxdata.com/influxdb/latest/organizations/buckets/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_buckets_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :param str after: A resource ID to seek from. Returns records created after the specified record; results don't include the specified record. Use `after` instead of the `offset` parameter. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param str org: An organization name. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Lists buckets for the organization associated with the authorization (API token). #### InfluxDB OSS - Lists buckets for the specified organization. + :param str org_id: An organization ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Lists buckets for the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or `orgID` parameter. - Lists buckets for the specified organization. + :param str name: A bucket name. Only returns buckets with the specified name. + :param str id: A bucket ID. Only returns the bucket with the specified ID. + :return: Buckets + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_buckets_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/buckets', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Buckets', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_buckets_async(self, **kwargs): # noqa: E501,D401,D403 + """List buckets. + + Lists [buckets](https://docs.influxdata.com/influxdb/latest/reference/glossary/#bucket). InfluxDB retrieves buckets owned by the [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) associated with the authorization ([API token](https://docs.influxdata.com/influxdb/latest/reference/glossary/#token)). To limit which buckets are returned, pass query parameters in your request. If no query parameters are passed, InfluxDB returns all buckets up to the default `limit`. #### InfluxDB OSS - If you use an _[operator token](https://docs.influxdata.com/influxdb/latest/security/tokens/#operator-token)_ to authenticate your request, InfluxDB retrieves resources for _all organizations_ in the instance. To retrieve resources for only a specific organization, use the `org` parameter or the `orgID` parameter to specify the organization. #### Required permissions | Action | Permission required | |:--------------------------|:--------------------| | Retrieve _user buckets_ | `read-buckets` | | Retrieve [_system buckets_](https://docs.influxdata.com/influxdb/latest/reference/internals/system-buckets/) | `read-orgs` | #### Related Guides - [Manage buckets](https://docs.influxdata.com/influxdb/latest/organizations/buckets/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :param str after: A resource ID to seek from. Returns records created after the specified record; results don't include the specified record. Use `after` instead of the `offset` parameter. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param str org: An organization name. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Lists buckets for the organization associated with the authorization (API token). #### InfluxDB OSS - Lists buckets for the specified organization. + :param str org_id: An organization ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Lists buckets for the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or `orgID` parameter. - Lists buckets for the specified organization. + :param str name: A bucket name. Only returns buckets with the specified name. + :param str id: A bucket ID. Only returns the bucket with the specified ID. + :return: Buckets + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_buckets_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/buckets', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Buckets', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_buckets_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span', 'offset', 'limit', 'after', 'org', 'org_id', 'name', 'id'] # noqa: E501 + self._check_operation_params('get_buckets', all_params, local_var_params) + + if 'offset' in local_var_params and local_var_params['offset'] < 0: # noqa: E501 + raise ValueError("Invalid value for parameter `offset` when calling `get_buckets`, must be a value greater than or equal to `0`") # noqa: E501 + if 'limit' in local_var_params and local_var_params['limit'] > 100: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_buckets`, must be a value less than or equal to `100`") # noqa: E501 + if 'limit' in local_var_params and local_var_params['limit'] < 1: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_buckets`, must be a value greater than or equal to `1`") # noqa: E501 + path_params = {} + + query_params = [] + if 'offset' in local_var_params: + query_params.append(('offset', local_var_params['offset'])) # noqa: E501 + if 'limit' in local_var_params: + query_params.append(('limit', local_var_params['limit'])) # noqa: E501 + if 'after' in local_var_params: + query_params.append(('after', local_var_params['after'])) # noqa: E501 + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + if 'name' in local_var_params: + query_params.append(('name', local_var_params['name'])) # noqa: E501 + if 'id' in local_var_params: + query_params.append(('id', local_var_params['id'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_buckets_id(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a bucket. + + Retrieves a bucket. Use this endpoint to retrieve information for a specific bucket. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_buckets_id(bucket_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: The ID of the bucket to retrieve. (required) + :param str zap_trace_span: OpenTracing span context + :return: Bucket + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_buckets_id_with_http_info(bucket_id, **kwargs) # noqa: E501 + else: + (data) = self.get_buckets_id_with_http_info(bucket_id, **kwargs) # noqa: E501 + return data + + def get_buckets_id_with_http_info(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a bucket. + + Retrieves a bucket. Use this endpoint to retrieve information for a specific bucket. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_buckets_id_with_http_info(bucket_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: The ID of the bucket to retrieve. (required) + :param str zap_trace_span: OpenTracing span context + :return: Bucket + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_buckets_id_prepare(bucket_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/buckets/{bucketID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Bucket', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_buckets_id_async(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a bucket. + + Retrieves a bucket. Use this endpoint to retrieve information for a specific bucket. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str bucket_id: The ID of the bucket to retrieve. (required) + :param str zap_trace_span: OpenTracing span context + :return: Bucket + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_buckets_id_prepare(bucket_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/buckets/{bucketID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Bucket', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_buckets_id_prepare(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['bucket_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_buckets_id', all_params, local_var_params) + # verify the required parameter 'bucket_id' is set + if ('bucket_id' not in local_var_params or + local_var_params['bucket_id'] is None): + raise ValueError("Missing the required parameter `bucket_id` when calling `get_buckets_id`") # noqa: E501 + + path_params = {} + if 'bucket_id' in local_var_params: + path_params['bucketID'] = local_var_params['bucket_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_buckets_id_labels(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a bucket. + + Lists all labels for a bucket. Labels are objects that contain `labelID`, `name`, `description`, and `color` key-value pairs. They may be used for grouping and filtering InfluxDB resources. Labels are also capable of grouping across different resources--for example, you can apply a label named `air_sensor` to a bucket and a task to quickly organize resources. #### Related guides - Use the [`/api/v2/labels` InfluxDB API endpoint](#tag/Labels) to retrieve and manage labels. - [Manage labels in the InfluxDB UI](https://docs.influxdata.com/influxdb/latest/visualize-data/labels/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_buckets_id_labels(bucket_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: The ID of the bucket to retrieve labels for. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_buckets_id_labels_with_http_info(bucket_id, **kwargs) # noqa: E501 + else: + (data) = self.get_buckets_id_labels_with_http_info(bucket_id, **kwargs) # noqa: E501 + return data + + def get_buckets_id_labels_with_http_info(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a bucket. + + Lists all labels for a bucket. Labels are objects that contain `labelID`, `name`, `description`, and `color` key-value pairs. They may be used for grouping and filtering InfluxDB resources. Labels are also capable of grouping across different resources--for example, you can apply a label named `air_sensor` to a bucket and a task to quickly organize resources. #### Related guides - Use the [`/api/v2/labels` InfluxDB API endpoint](#tag/Labels) to retrieve and manage labels. - [Manage labels in the InfluxDB UI](https://docs.influxdata.com/influxdb/latest/visualize-data/labels/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_buckets_id_labels_with_http_info(bucket_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: The ID of the bucket to retrieve labels for. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_buckets_id_labels_prepare(bucket_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/buckets/{bucketID}/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_buckets_id_labels_async(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a bucket. + + Lists all labels for a bucket. Labels are objects that contain `labelID`, `name`, `description`, and `color` key-value pairs. They may be used for grouping and filtering InfluxDB resources. Labels are also capable of grouping across different resources--for example, you can apply a label named `air_sensor` to a bucket and a task to quickly organize resources. #### Related guides - Use the [`/api/v2/labels` InfluxDB API endpoint](#tag/Labels) to retrieve and manage labels. - [Manage labels in the InfluxDB UI](https://docs.influxdata.com/influxdb/latest/visualize-data/labels/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str bucket_id: The ID of the bucket to retrieve labels for. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_buckets_id_labels_prepare(bucket_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/buckets/{bucketID}/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_buckets_id_labels_prepare(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['bucket_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_buckets_id_labels', all_params, local_var_params) + # verify the required parameter 'bucket_id' is set + if ('bucket_id' not in local_var_params or + local_var_params['bucket_id'] is None): + raise ValueError("Missing the required parameter `bucket_id` when calling `get_buckets_id_labels`") # noqa: E501 + + path_params = {} + if 'bucket_id' in local_var_params: + path_params['bucketID'] = local_var_params['bucket_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_buckets_id_members(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + """List all users with member privileges for a bucket. + + Lists all users for a bucket. InfluxDB [users](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) have permission to access InfluxDB. [Members](https://docs.influxdata.com/influxdb/latest/reference/glossary/#member) are users in an organization with access to the specified resource. Use this endpoint to retrieve all users with access to a bucket. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) - [Manage members](https://docs.influxdata.com/influxdb/latest/organizations/members/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_buckets_id_members(bucket_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: The ID of the bucket to retrieve users for. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMembers + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_buckets_id_members_with_http_info(bucket_id, **kwargs) # noqa: E501 + else: + (data) = self.get_buckets_id_members_with_http_info(bucket_id, **kwargs) # noqa: E501 + return data + + def get_buckets_id_members_with_http_info(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + """List all users with member privileges for a bucket. + + Lists all users for a bucket. InfluxDB [users](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) have permission to access InfluxDB. [Members](https://docs.influxdata.com/influxdb/latest/reference/glossary/#member) are users in an organization with access to the specified resource. Use this endpoint to retrieve all users with access to a bucket. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) - [Manage members](https://docs.influxdata.com/influxdb/latest/organizations/members/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_buckets_id_members_with_http_info(bucket_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: The ID of the bucket to retrieve users for. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMembers + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_buckets_id_members_prepare(bucket_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/buckets/{bucketID}/members', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMembers', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_buckets_id_members_async(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + """List all users with member privileges for a bucket. + + Lists all users for a bucket. InfluxDB [users](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) have permission to access InfluxDB. [Members](https://docs.influxdata.com/influxdb/latest/reference/glossary/#member) are users in an organization with access to the specified resource. Use this endpoint to retrieve all users with access to a bucket. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) - [Manage members](https://docs.influxdata.com/influxdb/latest/organizations/members/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str bucket_id: The ID of the bucket to retrieve users for. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMembers + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_buckets_id_members_prepare(bucket_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/buckets/{bucketID}/members', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMembers', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_buckets_id_members_prepare(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['bucket_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_buckets_id_members', all_params, local_var_params) + # verify the required parameter 'bucket_id' is set + if ('bucket_id' not in local_var_params or + local_var_params['bucket_id'] is None): + raise ValueError("Missing the required parameter `bucket_id` when calling `get_buckets_id_members`") # noqa: E501 + + path_params = {} + if 'bucket_id' in local_var_params: + path_params['bucketID'] = local_var_params['bucket_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_buckets_id_owners(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + """List all owners of a bucket. + + Lists all [owners](https://docs.influxdata.com/influxdb/latest/reference/glossary/#owner) of a bucket. Bucket owners have permission to delete buckets and remove user and member permissions from the bucket. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Owner permissions are separate from API token permissions. - Owner permissions are used in the context of the InfluxDB UI. #### Required permissions - `read-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to retrieve a list of owners for. #### Related endpoints - [Authorizations](#tag/Authorizations-(API-tokens)) #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_buckets_id_owners(bucket_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: The ID of the bucket to retrieve owners for. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwners + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_buckets_id_owners_with_http_info(bucket_id, **kwargs) # noqa: E501 + else: + (data) = self.get_buckets_id_owners_with_http_info(bucket_id, **kwargs) # noqa: E501 + return data + + def get_buckets_id_owners_with_http_info(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + """List all owners of a bucket. + + Lists all [owners](https://docs.influxdata.com/influxdb/latest/reference/glossary/#owner) of a bucket. Bucket owners have permission to delete buckets and remove user and member permissions from the bucket. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Owner permissions are separate from API token permissions. - Owner permissions are used in the context of the InfluxDB UI. #### Required permissions - `read-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to retrieve a list of owners for. #### Related endpoints - [Authorizations](#tag/Authorizations-(API-tokens)) #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_buckets_id_owners_with_http_info(bucket_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: The ID of the bucket to retrieve owners for. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwners + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_buckets_id_owners_prepare(bucket_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/buckets/{bucketID}/owners', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwners', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_buckets_id_owners_async(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + """List all owners of a bucket. + + Lists all [owners](https://docs.influxdata.com/influxdb/latest/reference/glossary/#owner) of a bucket. Bucket owners have permission to delete buckets and remove user and member permissions from the bucket. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Owner permissions are separate from API token permissions. - Owner permissions are used in the context of the InfluxDB UI. #### Required permissions - `read-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to retrieve a list of owners for. #### Related endpoints - [Authorizations](#tag/Authorizations-(API-tokens)) #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str bucket_id: The ID of the bucket to retrieve owners for. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwners + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_buckets_id_owners_prepare(bucket_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/buckets/{bucketID}/owners', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwners', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_buckets_id_owners_prepare(self, bucket_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['bucket_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_buckets_id_owners', all_params, local_var_params) + # verify the required parameter 'bucket_id' is set + if ('bucket_id' not in local_var_params or + local_var_params['bucket_id'] is None): + raise ValueError("Missing the required parameter `bucket_id` when calling `get_buckets_id_owners`") # noqa: E501 + + path_params = {} + if 'bucket_id' in local_var_params: + path_params['bucketID'] = local_var_params['bucket_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_sources_id_buckets(self, source_id, **kwargs): # noqa: E501,D401,D403 + """Get buckets in a source. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_sources_id_buckets(source_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str source_id: The source ID. (required) + :param str zap_trace_span: OpenTracing span context + :param str org: The name of the organization. + :return: Buckets + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_sources_id_buckets_with_http_info(source_id, **kwargs) # noqa: E501 + else: + (data) = self.get_sources_id_buckets_with_http_info(source_id, **kwargs) # noqa: E501 + return data + + def get_sources_id_buckets_with_http_info(self, source_id, **kwargs): # noqa: E501,D401,D403 + """Get buckets in a source. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_sources_id_buckets_with_http_info(source_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str source_id: The source ID. (required) + :param str zap_trace_span: OpenTracing span context + :param str org: The name of the organization. + :return: Buckets + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_sources_id_buckets_prepare(source_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/sources/{sourceID}/buckets', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Buckets', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_sources_id_buckets_async(self, source_id, **kwargs): # noqa: E501,D401,D403 + """Get buckets in a source. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str source_id: The source ID. (required) + :param str zap_trace_span: OpenTracing span context + :param str org: The name of the organization. + :return: Buckets + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_sources_id_buckets_prepare(source_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/sources/{sourceID}/buckets', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Buckets', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_sources_id_buckets_prepare(self, source_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['source_id', 'zap_trace_span', 'org'] # noqa: E501 + self._check_operation_params('get_sources_id_buckets', all_params, local_var_params) + # verify the required parameter 'source_id' is set + if ('source_id' not in local_var_params or + local_var_params['source_id'] is None): + raise ValueError("Missing the required parameter `source_id` when calling `get_sources_id_buckets`") # noqa: E501 + + path_params = {} + if 'source_id' in local_var_params: + path_params['sourceID'] = local_var_params['source_id'] # noqa: E501 + + query_params = [] + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_buckets_id(self, bucket_id, patch_bucket_request, **kwargs): # noqa: E501,D401,D403 + """Update a bucket. + + Updates a bucket. Use this endpoint to update properties (`name`, `description`, and `retentionRules`) of a bucket. #### InfluxDB Cloud - Requires the `retentionRules` property in the request body. If you don't provide `retentionRules`, InfluxDB responds with an HTTP `403` status code. #### InfluxDB OSS - Doesn't require `retentionRules`. #### Related Guides - [Update a bucket](https://docs.influxdata.com/influxdb/latest/organizations/buckets/update-bucket/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_buckets_id(bucket_id, patch_bucket_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: The bucket ID. (required) + :param PatchBucketRequest patch_bucket_request: The bucket update to apply. (required) + :param str zap_trace_span: OpenTracing span context + :return: Bucket + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_buckets_id_with_http_info(bucket_id, patch_bucket_request, **kwargs) # noqa: E501 + else: + (data) = self.patch_buckets_id_with_http_info(bucket_id, patch_bucket_request, **kwargs) # noqa: E501 + return data + + def patch_buckets_id_with_http_info(self, bucket_id, patch_bucket_request, **kwargs): # noqa: E501,D401,D403 + """Update a bucket. + + Updates a bucket. Use this endpoint to update properties (`name`, `description`, and `retentionRules`) of a bucket. #### InfluxDB Cloud - Requires the `retentionRules` property in the request body. If you don't provide `retentionRules`, InfluxDB responds with an HTTP `403` status code. #### InfluxDB OSS - Doesn't require `retentionRules`. #### Related Guides - [Update a bucket](https://docs.influxdata.com/influxdb/latest/organizations/buckets/update-bucket/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_buckets_id_with_http_info(bucket_id, patch_bucket_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: The bucket ID. (required) + :param PatchBucketRequest patch_bucket_request: The bucket update to apply. (required) + :param str zap_trace_span: OpenTracing span context + :return: Bucket + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_buckets_id_prepare(bucket_id, patch_bucket_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/buckets/{bucketID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Bucket', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_buckets_id_async(self, bucket_id, patch_bucket_request, **kwargs): # noqa: E501,D401,D403 + """Update a bucket. + + Updates a bucket. Use this endpoint to update properties (`name`, `description`, and `retentionRules`) of a bucket. #### InfluxDB Cloud - Requires the `retentionRules` property in the request body. If you don't provide `retentionRules`, InfluxDB responds with an HTTP `403` status code. #### InfluxDB OSS - Doesn't require `retentionRules`. #### Related Guides - [Update a bucket](https://docs.influxdata.com/influxdb/latest/organizations/buckets/update-bucket/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str bucket_id: The bucket ID. (required) + :param PatchBucketRequest patch_bucket_request: The bucket update to apply. (required) + :param str zap_trace_span: OpenTracing span context + :return: Bucket + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_buckets_id_prepare(bucket_id, patch_bucket_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/buckets/{bucketID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Bucket', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_buckets_id_prepare(self, bucket_id, patch_bucket_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['bucket_id', 'patch_bucket_request', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_buckets_id', all_params, local_var_params) + # verify the required parameter 'bucket_id' is set + if ('bucket_id' not in local_var_params or + local_var_params['bucket_id'] is None): + raise ValueError("Missing the required parameter `bucket_id` when calling `patch_buckets_id`") # noqa: E501 + # verify the required parameter 'patch_bucket_request' is set + if ('patch_bucket_request' not in local_var_params or + local_var_params['patch_bucket_request'] is None): + raise ValueError("Missing the required parameter `patch_bucket_request` when calling `patch_buckets_id`") # noqa: E501 + + path_params = {} + if 'bucket_id' in local_var_params: + path_params['bucketID'] = local_var_params['bucket_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'patch_bucket_request' in local_var_params: + body_params = local_var_params['patch_bucket_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_buckets(self, post_bucket_request, **kwargs): # noqa: E501,D401,D403 + """Create a bucket. + + Creates a [bucket](https://docs.influxdata.com/influxdb/latest/reference/glossary/#bucket) and returns the bucket resource. The default data [retention period](https://docs.influxdata.com/influxdb/latest/reference/glossary/#retention-period) is 30 days. #### InfluxDB OSS - A single InfluxDB OSS instance supports active writes or queries for approximately 20 buckets across all organizations at a given time. Reading or writing to more than 20 buckets at a time can adversely affect performance. #### Limitations - InfluxDB Cloud Free Plan allows users to create up to two buckets. Exceeding the bucket quota will result in an HTTP `403` status code. For additional information regarding InfluxDB Cloud offerings, see [InfluxDB Cloud Pricing](https://www.influxdata.com/influxdb-cloud-pricing/). #### Related Guides - [Create a bucket](https://docs.influxdata.com/influxdb/latest/organizations/buckets/create-bucket/) - [Create bucket CLI reference](https://docs.influxdata.com/influxdb/latest/reference/cli/influx/bucket/create) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_buckets(post_bucket_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param PostBucketRequest post_bucket_request: The bucket to create. (required) + :param str zap_trace_span: OpenTracing span context + :return: Bucket + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_buckets_with_http_info(post_bucket_request, **kwargs) # noqa: E501 + else: + (data) = self.post_buckets_with_http_info(post_bucket_request, **kwargs) # noqa: E501 + return data + + def post_buckets_with_http_info(self, post_bucket_request, **kwargs): # noqa: E501,D401,D403 + """Create a bucket. + + Creates a [bucket](https://docs.influxdata.com/influxdb/latest/reference/glossary/#bucket) and returns the bucket resource. The default data [retention period](https://docs.influxdata.com/influxdb/latest/reference/glossary/#retention-period) is 30 days. #### InfluxDB OSS - A single InfluxDB OSS instance supports active writes or queries for approximately 20 buckets across all organizations at a given time. Reading or writing to more than 20 buckets at a time can adversely affect performance. #### Limitations - InfluxDB Cloud Free Plan allows users to create up to two buckets. Exceeding the bucket quota will result in an HTTP `403` status code. For additional information regarding InfluxDB Cloud offerings, see [InfluxDB Cloud Pricing](https://www.influxdata.com/influxdb-cloud-pricing/). #### Related Guides - [Create a bucket](https://docs.influxdata.com/influxdb/latest/organizations/buckets/create-bucket/) - [Create bucket CLI reference](https://docs.influxdata.com/influxdb/latest/reference/cli/influx/bucket/create) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_buckets_with_http_info(post_bucket_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param PostBucketRequest post_bucket_request: The bucket to create. (required) + :param str zap_trace_span: OpenTracing span context + :return: Bucket + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_buckets_prepare(post_bucket_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/buckets', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Bucket', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_buckets_async(self, post_bucket_request, **kwargs): # noqa: E501,D401,D403 + """Create a bucket. + + Creates a [bucket](https://docs.influxdata.com/influxdb/latest/reference/glossary/#bucket) and returns the bucket resource. The default data [retention period](https://docs.influxdata.com/influxdb/latest/reference/glossary/#retention-period) is 30 days. #### InfluxDB OSS - A single InfluxDB OSS instance supports active writes or queries for approximately 20 buckets across all organizations at a given time. Reading or writing to more than 20 buckets at a time can adversely affect performance. #### Limitations - InfluxDB Cloud Free Plan allows users to create up to two buckets. Exceeding the bucket quota will result in an HTTP `403` status code. For additional information regarding InfluxDB Cloud offerings, see [InfluxDB Cloud Pricing](https://www.influxdata.com/influxdb-cloud-pricing/). #### Related Guides - [Create a bucket](https://docs.influxdata.com/influxdb/latest/organizations/buckets/create-bucket/) - [Create bucket CLI reference](https://docs.influxdata.com/influxdb/latest/reference/cli/influx/bucket/create) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param PostBucketRequest post_bucket_request: The bucket to create. (required) + :param str zap_trace_span: OpenTracing span context + :return: Bucket + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_buckets_prepare(post_bucket_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/buckets', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Bucket', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_buckets_prepare(self, post_bucket_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['post_bucket_request', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_buckets', all_params, local_var_params) + # verify the required parameter 'post_bucket_request' is set + if ('post_bucket_request' not in local_var_params or + local_var_params['post_bucket_request'] is None): + raise ValueError("Missing the required parameter `post_bucket_request` when calling `post_buckets`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'post_bucket_request' in local_var_params: + body_params = local_var_params['post_bucket_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_buckets_id_labels(self, bucket_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a bucket. + + Adds a label to a bucket and returns the new label information. Labels are objects that contain `labelID`, `name`, `description`, and `color` key-value pairs. They may be used for grouping and filtering across one or more kinds of **resources**--for example, you can apply a label named `air_sensor` to a bucket and a task to quickly organize resources. #### Limitations - Before adding a label to a bucket, you must create the label if you haven't already. To create a label with the InfluxDB API, send a `POST` request to the [`/api/v2/labels` endpoint](#operation/PostLabels)). #### Related guides - Use the [`/api/v2/labels` InfluxDB API endpoint](#tag/Labels) to retrieve and manage labels. - [Manage labels in the InfluxDB UI](https://docs.influxdata.com/influxdb/latest/visualize-data/labels/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_buckets_id_labels(bucket_id, label_mapping, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: Bucket ID. The ID of the bucket to label. (required) + :param LabelMapping label_mapping: An object that contains a _`labelID`_ to add to the bucket. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_buckets_id_labels_with_http_info(bucket_id, label_mapping, **kwargs) # noqa: E501 + else: + (data) = self.post_buckets_id_labels_with_http_info(bucket_id, label_mapping, **kwargs) # noqa: E501 + return data + + def post_buckets_id_labels_with_http_info(self, bucket_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a bucket. + + Adds a label to a bucket and returns the new label information. Labels are objects that contain `labelID`, `name`, `description`, and `color` key-value pairs. They may be used for grouping and filtering across one or more kinds of **resources**--for example, you can apply a label named `air_sensor` to a bucket and a task to quickly organize resources. #### Limitations - Before adding a label to a bucket, you must create the label if you haven't already. To create a label with the InfluxDB API, send a `POST` request to the [`/api/v2/labels` endpoint](#operation/PostLabels)). #### Related guides - Use the [`/api/v2/labels` InfluxDB API endpoint](#tag/Labels) to retrieve and manage labels. - [Manage labels in the InfluxDB UI](https://docs.influxdata.com/influxdb/latest/visualize-data/labels/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_buckets_id_labels_with_http_info(bucket_id, label_mapping, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: Bucket ID. The ID of the bucket to label. (required) + :param LabelMapping label_mapping: An object that contains a _`labelID`_ to add to the bucket. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_buckets_id_labels_prepare(bucket_id, label_mapping, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/buckets/{bucketID}/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_buckets_id_labels_async(self, bucket_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a bucket. + + Adds a label to a bucket and returns the new label information. Labels are objects that contain `labelID`, `name`, `description`, and `color` key-value pairs. They may be used for grouping and filtering across one or more kinds of **resources**--for example, you can apply a label named `air_sensor` to a bucket and a task to quickly organize resources. #### Limitations - Before adding a label to a bucket, you must create the label if you haven't already. To create a label with the InfluxDB API, send a `POST` request to the [`/api/v2/labels` endpoint](#operation/PostLabels)). #### Related guides - Use the [`/api/v2/labels` InfluxDB API endpoint](#tag/Labels) to retrieve and manage labels. - [Manage labels in the InfluxDB UI](https://docs.influxdata.com/influxdb/latest/visualize-data/labels/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str bucket_id: Bucket ID. The ID of the bucket to label. (required) + :param LabelMapping label_mapping: An object that contains a _`labelID`_ to add to the bucket. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_buckets_id_labels_prepare(bucket_id, label_mapping, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/buckets/{bucketID}/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_buckets_id_labels_prepare(self, bucket_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['bucket_id', 'label_mapping', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_buckets_id_labels', all_params, local_var_params) + # verify the required parameter 'bucket_id' is set + if ('bucket_id' not in local_var_params or + local_var_params['bucket_id'] is None): + raise ValueError("Missing the required parameter `bucket_id` when calling `post_buckets_id_labels`") # noqa: E501 + # verify the required parameter 'label_mapping' is set + if ('label_mapping' not in local_var_params or + local_var_params['label_mapping'] is None): + raise ValueError("Missing the required parameter `label_mapping` when calling `post_buckets_id_labels`") # noqa: E501 + + path_params = {} + if 'bucket_id' in local_var_params: + path_params['bucketID'] = local_var_params['bucket_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'label_mapping' in local_var_params: + body_params = local_var_params['label_mapping'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_buckets_id_members(self, bucket_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add a member to a bucket. + + Add a user to a bucket and return the new user information. InfluxDB [users](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) have permission to access InfluxDB. [Members](https://docs.influxdata.com/influxdb/latest/reference/glossary/#member) are users in an organization. Use this endpoint to give a user member privileges to a bucket. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) - [Manage members](https://docs.influxdata.com/influxdb/latest/organizations/members/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_buckets_id_members(bucket_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: The ID of the bucket to retrieve users for. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: A user to add as a member to the bucket. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMember + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_buckets_id_members_with_http_info(bucket_id, add_resource_member_request_body, **kwargs) # noqa: E501 + else: + (data) = self.post_buckets_id_members_with_http_info(bucket_id, add_resource_member_request_body, **kwargs) # noqa: E501 + return data + + def post_buckets_id_members_with_http_info(self, bucket_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add a member to a bucket. + + Add a user to a bucket and return the new user information. InfluxDB [users](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) have permission to access InfluxDB. [Members](https://docs.influxdata.com/influxdb/latest/reference/glossary/#member) are users in an organization. Use this endpoint to give a user member privileges to a bucket. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) - [Manage members](https://docs.influxdata.com/influxdb/latest/organizations/members/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_buckets_id_members_with_http_info(bucket_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: The ID of the bucket to retrieve users for. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: A user to add as a member to the bucket. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMember + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_buckets_id_members_prepare(bucket_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/buckets/{bucketID}/members', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMember', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_buckets_id_members_async(self, bucket_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add a member to a bucket. + + Add a user to a bucket and return the new user information. InfluxDB [users](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) have permission to access InfluxDB. [Members](https://docs.influxdata.com/influxdb/latest/reference/glossary/#member) are users in an organization. Use this endpoint to give a user member privileges to a bucket. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) - [Manage members](https://docs.influxdata.com/influxdb/latest/organizations/members/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str bucket_id: The ID of the bucket to retrieve users for. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: A user to add as a member to the bucket. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMember + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_buckets_id_members_prepare(bucket_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/buckets/{bucketID}/members', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMember', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_buckets_id_members_prepare(self, bucket_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['bucket_id', 'add_resource_member_request_body', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_buckets_id_members', all_params, local_var_params) + # verify the required parameter 'bucket_id' is set + if ('bucket_id' not in local_var_params or + local_var_params['bucket_id'] is None): + raise ValueError("Missing the required parameter `bucket_id` when calling `post_buckets_id_members`") # noqa: E501 + # verify the required parameter 'add_resource_member_request_body' is set + if ('add_resource_member_request_body' not in local_var_params or + local_var_params['add_resource_member_request_body'] is None): + raise ValueError("Missing the required parameter `add_resource_member_request_body` when calling `post_buckets_id_members`") # noqa: E501 + + path_params = {} + if 'bucket_id' in local_var_params: + path_params['bucketID'] = local_var_params['bucket_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'add_resource_member_request_body' in local_var_params: + body_params = local_var_params['add_resource_member_request_body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_buckets_id_owners(self, bucket_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add an owner to a bucket. + + Adds an owner to a bucket and returns the [owners](https://docs.influxdata.com/influxdb/latest/reference/glossary/#owner) with role and user detail. Use this endpoint to create a _resource owner_ for the bucket. Bucket owners have permission to delete buckets and remove user and member permissions from the bucket. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Owner permissions are separate from API token permissions. - Owner permissions are used in the context of the InfluxDB UI. #### Required permissions - `write-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to add an owner for. #### Related endpoints - [Authorizations](#tag/Authorizations-(API-tokens)) #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_buckets_id_owners(bucket_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: The ID of the bucket to add an owner for. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: A user to add as an owner for the bucket. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwner + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_buckets_id_owners_with_http_info(bucket_id, add_resource_member_request_body, **kwargs) # noqa: E501 + else: + (data) = self.post_buckets_id_owners_with_http_info(bucket_id, add_resource_member_request_body, **kwargs) # noqa: E501 + return data + + def post_buckets_id_owners_with_http_info(self, bucket_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add an owner to a bucket. + + Adds an owner to a bucket and returns the [owners](https://docs.influxdata.com/influxdb/latest/reference/glossary/#owner) with role and user detail. Use this endpoint to create a _resource owner_ for the bucket. Bucket owners have permission to delete buckets and remove user and member permissions from the bucket. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Owner permissions are separate from API token permissions. - Owner permissions are used in the context of the InfluxDB UI. #### Required permissions - `write-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to add an owner for. #### Related endpoints - [Authorizations](#tag/Authorizations-(API-tokens)) #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_buckets_id_owners_with_http_info(bucket_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: The ID of the bucket to add an owner for. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: A user to add as an owner for the bucket. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwner + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_buckets_id_owners_prepare(bucket_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/buckets/{bucketID}/owners', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwner', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_buckets_id_owners_async(self, bucket_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add an owner to a bucket. + + Adds an owner to a bucket and returns the [owners](https://docs.influxdata.com/influxdb/latest/reference/glossary/#owner) with role and user detail. Use this endpoint to create a _resource owner_ for the bucket. Bucket owners have permission to delete buckets and remove user and member permissions from the bucket. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Owner permissions are separate from API token permissions. - Owner permissions are used in the context of the InfluxDB UI. #### Required permissions - `write-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to add an owner for. #### Related endpoints - [Authorizations](#tag/Authorizations-(API-tokens)) #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str bucket_id: The ID of the bucket to add an owner for. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: A user to add as an owner for the bucket. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwner + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_buckets_id_owners_prepare(bucket_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/buckets/{bucketID}/owners', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwner', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_buckets_id_owners_prepare(self, bucket_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['bucket_id', 'add_resource_member_request_body', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_buckets_id_owners', all_params, local_var_params) + # verify the required parameter 'bucket_id' is set + if ('bucket_id' not in local_var_params or + local_var_params['bucket_id'] is None): + raise ValueError("Missing the required parameter `bucket_id` when calling `post_buckets_id_owners`") # noqa: E501 + # verify the required parameter 'add_resource_member_request_body' is set + if ('add_resource_member_request_body' not in local_var_params or + local_var_params['add_resource_member_request_body'] is None): + raise ValueError("Missing the required parameter `add_resource_member_request_body` when calling `post_buckets_id_owners`") # noqa: E501 + + path_params = {} + if 'bucket_id' in local_var_params: + path_params['bucketID'] = local_var_params['bucket_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'add_resource_member_request_body' in local_var_params: + body_params = local_var_params['add_resource_member_request_body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/cells_service.py b/frogpilot/third_party/influxdb_client/service/cells_service.py new file mode 100644 index 000000000..13c811b5d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/cells_service.py @@ -0,0 +1,820 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class CellsService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """CellsService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def delete_dashboards_id_cells_id(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + """Delete a dashboard cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_dashboards_id_cells_id(dashboard_id, cell_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to delete. (required) + :param str cell_id: The ID of the cell to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_dashboards_id_cells_id_with_http_info(dashboard_id, cell_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_dashboards_id_cells_id_with_http_info(dashboard_id, cell_id, **kwargs) # noqa: E501 + return data + + def delete_dashboards_id_cells_id_with_http_info(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + """Delete a dashboard cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_dashboards_id_cells_id_with_http_info(dashboard_id, cell_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to delete. (required) + :param str cell_id: The ID of the cell to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_dashboards_id_cells_id_prepare(dashboard_id, cell_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_dashboards_id_cells_id_async(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + """Delete a dashboard cell. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to delete. (required) + :param str cell_id: The ID of the cell to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_dashboards_id_cells_id_prepare(dashboard_id, cell_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_dashboards_id_cells_id_prepare(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'cell_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_dashboards_id_cells_id', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `delete_dashboards_id_cells_id`") # noqa: E501 + # verify the required parameter 'cell_id' is set + if ('cell_id' not in local_var_params or + local_var_params['cell_id'] is None): + raise ValueError("Missing the required parameter `cell_id` when calling `delete_dashboards_id_cells_id`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + if 'cell_id' in local_var_params: + path_params['cellID'] = local_var_params['cell_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_dashboards_id_cells_id_view(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve the view for a cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dashboards_id_cells_id_view(dashboard_id, cell_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str cell_id: The cell ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: View + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_dashboards_id_cells_id_view_with_http_info(dashboard_id, cell_id, **kwargs) # noqa: E501 + else: + (data) = self.get_dashboards_id_cells_id_view_with_http_info(dashboard_id, cell_id, **kwargs) # noqa: E501 + return data + + def get_dashboards_id_cells_id_view_with_http_info(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve the view for a cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dashboards_id_cells_id_view_with_http_info(dashboard_id, cell_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str cell_id: The cell ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: View + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dashboards_id_cells_id_view_prepare(dashboard_id, cell_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}/view', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='View', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_dashboards_id_cells_id_view_async(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve the view for a cell. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str cell_id: The cell ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: View + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dashboards_id_cells_id_view_prepare(dashboard_id, cell_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}/view', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='View', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_dashboards_id_cells_id_view_prepare(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'cell_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_dashboards_id_cells_id_view', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `get_dashboards_id_cells_id_view`") # noqa: E501 + # verify the required parameter 'cell_id' is set + if ('cell_id' not in local_var_params or + local_var_params['cell_id'] is None): + raise ValueError("Missing the required parameter `cell_id` when calling `get_dashboards_id_cells_id_view`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + if 'cell_id' in local_var_params: + path_params['cellID'] = local_var_params['cell_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_dashboards_id_cells_id(self, dashboard_id, cell_id, cell_update, **kwargs): # noqa: E501,D401,D403 + """Update the non-positional information related to a cell. + + Updates the non positional information related to a cell. Updates to a single cell's positional data could cause grid conflicts. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_dashboards_id_cells_id(dashboard_id, cell_id, cell_update, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str cell_id: The ID of the cell to update. (required) + :param CellUpdate cell_update: (required) + :param str zap_trace_span: OpenTracing span context + :return: Cell + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_dashboards_id_cells_id_with_http_info(dashboard_id, cell_id, cell_update, **kwargs) # noqa: E501 + else: + (data) = self.patch_dashboards_id_cells_id_with_http_info(dashboard_id, cell_id, cell_update, **kwargs) # noqa: E501 + return data + + def patch_dashboards_id_cells_id_with_http_info(self, dashboard_id, cell_id, cell_update, **kwargs): # noqa: E501,D401,D403 + """Update the non-positional information related to a cell. + + Updates the non positional information related to a cell. Updates to a single cell's positional data could cause grid conflicts. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_dashboards_id_cells_id_with_http_info(dashboard_id, cell_id, cell_update, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str cell_id: The ID of the cell to update. (required) + :param CellUpdate cell_update: (required) + :param str zap_trace_span: OpenTracing span context + :return: Cell + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_dashboards_id_cells_id_prepare(dashboard_id, cell_id, cell_update, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Cell', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_dashboards_id_cells_id_async(self, dashboard_id, cell_id, cell_update, **kwargs): # noqa: E501,D401,D403 + """Update the non-positional information related to a cell. + + Updates the non positional information related to a cell. Updates to a single cell's positional data could cause grid conflicts. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str cell_id: The ID of the cell to update. (required) + :param CellUpdate cell_update: (required) + :param str zap_trace_span: OpenTracing span context + :return: Cell + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_dashboards_id_cells_id_prepare(dashboard_id, cell_id, cell_update, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Cell', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_dashboards_id_cells_id_prepare(self, dashboard_id, cell_id, cell_update, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'cell_id', 'cell_update', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_dashboards_id_cells_id', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `patch_dashboards_id_cells_id`") # noqa: E501 + # verify the required parameter 'cell_id' is set + if ('cell_id' not in local_var_params or + local_var_params['cell_id'] is None): + raise ValueError("Missing the required parameter `cell_id` when calling `patch_dashboards_id_cells_id`") # noqa: E501 + # verify the required parameter 'cell_update' is set + if ('cell_update' not in local_var_params or + local_var_params['cell_update'] is None): + raise ValueError("Missing the required parameter `cell_update` when calling `patch_dashboards_id_cells_id`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + if 'cell_id' in local_var_params: + path_params['cellID'] = local_var_params['cell_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'cell_update' in local_var_params: + body_params = local_var_params['cell_update'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_dashboards_id_cells_id_view(self, dashboard_id, cell_id, view, **kwargs): # noqa: E501,D401,D403 + """Update the view for a cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_dashboards_id_cells_id_view(dashboard_id, cell_id, view, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str cell_id: The ID of the cell to update. (required) + :param View view: (required) + :param str zap_trace_span: OpenTracing span context + :return: View + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_dashboards_id_cells_id_view_with_http_info(dashboard_id, cell_id, view, **kwargs) # noqa: E501 + else: + (data) = self.patch_dashboards_id_cells_id_view_with_http_info(dashboard_id, cell_id, view, **kwargs) # noqa: E501 + return data + + def patch_dashboards_id_cells_id_view_with_http_info(self, dashboard_id, cell_id, view, **kwargs): # noqa: E501,D401,D403 + """Update the view for a cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_dashboards_id_cells_id_view_with_http_info(dashboard_id, cell_id, view, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str cell_id: The ID of the cell to update. (required) + :param View view: (required) + :param str zap_trace_span: OpenTracing span context + :return: View + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_dashboards_id_cells_id_view_prepare(dashboard_id, cell_id, view, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}/view', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='View', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_dashboards_id_cells_id_view_async(self, dashboard_id, cell_id, view, **kwargs): # noqa: E501,D401,D403 + """Update the view for a cell. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str cell_id: The ID of the cell to update. (required) + :param View view: (required) + :param str zap_trace_span: OpenTracing span context + :return: View + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_dashboards_id_cells_id_view_prepare(dashboard_id, cell_id, view, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}/view', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='View', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_dashboards_id_cells_id_view_prepare(self, dashboard_id, cell_id, view, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'cell_id', 'view', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_dashboards_id_cells_id_view', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `patch_dashboards_id_cells_id_view`") # noqa: E501 + # verify the required parameter 'cell_id' is set + if ('cell_id' not in local_var_params or + local_var_params['cell_id'] is None): + raise ValueError("Missing the required parameter `cell_id` when calling `patch_dashboards_id_cells_id_view`") # noqa: E501 + # verify the required parameter 'view' is set + if ('view' not in local_var_params or + local_var_params['view'] is None): + raise ValueError("Missing the required parameter `view` when calling `patch_dashboards_id_cells_id_view`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + if 'cell_id' in local_var_params: + path_params['cellID'] = local_var_params['cell_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'view' in local_var_params: + body_params = local_var_params['view'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_dashboards_id_cells(self, dashboard_id, create_cell, **kwargs): # noqa: E501,D401,D403 + """Create a dashboard cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_dashboards_id_cells(dashboard_id, create_cell, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param CreateCell create_cell: Cell that will be added (required) + :param str zap_trace_span: OpenTracing span context + :return: Cell + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_dashboards_id_cells_with_http_info(dashboard_id, create_cell, **kwargs) # noqa: E501 + else: + (data) = self.post_dashboards_id_cells_with_http_info(dashboard_id, create_cell, **kwargs) # noqa: E501 + return data + + def post_dashboards_id_cells_with_http_info(self, dashboard_id, create_cell, **kwargs): # noqa: E501,D401,D403 + """Create a dashboard cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_dashboards_id_cells_with_http_info(dashboard_id, create_cell, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param CreateCell create_cell: Cell that will be added (required) + :param str zap_trace_span: OpenTracing span context + :return: Cell + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_dashboards_id_cells_prepare(dashboard_id, create_cell, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Cell', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_dashboards_id_cells_async(self, dashboard_id, create_cell, **kwargs): # noqa: E501,D401,D403 + """Create a dashboard cell. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param CreateCell create_cell: Cell that will be added (required) + :param str zap_trace_span: OpenTracing span context + :return: Cell + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_dashboards_id_cells_prepare(dashboard_id, create_cell, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Cell', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_dashboards_id_cells_prepare(self, dashboard_id, create_cell, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'create_cell', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_dashboards_id_cells', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `post_dashboards_id_cells`") # noqa: E501 + # verify the required parameter 'create_cell' is set + if ('create_cell' not in local_var_params or + local_var_params['create_cell'] is None): + raise ValueError("Missing the required parameter `create_cell` when calling `post_dashboards_id_cells`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'create_cell' in local_var_params: + body_params = local_var_params['create_cell'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def put_dashboards_id_cells(self, dashboard_id, cell, **kwargs): # noqa: E501,D401,D403 + """Replace cells in a dashboard. + + Replaces all cells in a dashboard. This is used primarily to update the positional information of all cells. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.put_dashboards_id_cells(dashboard_id, cell, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param list[Cell] cell: (required) + :param str zap_trace_span: OpenTracing span context + :return: Dashboard + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.put_dashboards_id_cells_with_http_info(dashboard_id, cell, **kwargs) # noqa: E501 + else: + (data) = self.put_dashboards_id_cells_with_http_info(dashboard_id, cell, **kwargs) # noqa: E501 + return data + + def put_dashboards_id_cells_with_http_info(self, dashboard_id, cell, **kwargs): # noqa: E501,D401,D403 + """Replace cells in a dashboard. + + Replaces all cells in a dashboard. This is used primarily to update the positional information of all cells. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.put_dashboards_id_cells_with_http_info(dashboard_id, cell, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param list[Cell] cell: (required) + :param str zap_trace_span: OpenTracing span context + :return: Dashboard + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._put_dashboards_id_cells_prepare(dashboard_id, cell, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells', 'PUT', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Dashboard', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def put_dashboards_id_cells_async(self, dashboard_id, cell, **kwargs): # noqa: E501,D401,D403 + """Replace cells in a dashboard. + + Replaces all cells in a dashboard. This is used primarily to update the positional information of all cells. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param list[Cell] cell: (required) + :param str zap_trace_span: OpenTracing span context + :return: Dashboard + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._put_dashboards_id_cells_prepare(dashboard_id, cell, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells', 'PUT', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Dashboard', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _put_dashboards_id_cells_prepare(self, dashboard_id, cell, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'cell', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('put_dashboards_id_cells', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `put_dashboards_id_cells`") # noqa: E501 + # verify the required parameter 'cell' is set + if ('cell' not in local_var_params or + local_var_params['cell'] is None): + raise ValueError("Missing the required parameter `cell` when calling `put_dashboards_id_cells`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'cell' in local_var_params: + body_params = local_var_params['cell'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/checks_service.py b/frogpilot/third_party/influxdb_client/service/checks_service.py new file mode 100644 index 000000000..2c780f351 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/checks_service.py @@ -0,0 +1,1253 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class ChecksService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """ChecksService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def create_check(self, post_check, **kwargs): # noqa: E501,D401,D403 + """Add new check. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.create_check(post_check, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param PostCheck post_check: Check to create (required) + :return: Check + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.create_check_with_http_info(post_check, **kwargs) # noqa: E501 + else: + (data) = self.create_check_with_http_info(post_check, **kwargs) # noqa: E501 + return data + + def create_check_with_http_info(self, post_check, **kwargs): # noqa: E501,D401,D403 + """Add new check. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.create_check_with_http_info(post_check, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param PostCheck post_check: Check to create (required) + :return: Check + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._create_check_prepare(post_check, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/checks', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Check', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def create_check_async(self, post_check, **kwargs): # noqa: E501,D401,D403 + """Add new check. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param PostCheck post_check: Check to create (required) + :return: Check + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._create_check_prepare(post_check, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/checks', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Check', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _create_check_prepare(self, post_check, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['post_check'] # noqa: E501 + self._check_operation_params('create_check', all_params, local_var_params) + # verify the required parameter 'post_check' is set + if ('post_check' not in local_var_params or + local_var_params['post_check'] is None): + raise ValueError("Missing the required parameter `post_check` when calling `create_check`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + + body_params = None + if 'post_check' in local_var_params: + body_params = local_var_params['post_check'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_checks_id(self, check_id, **kwargs): # noqa: E501,D401,D403 + """Delete a check. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_checks_id(check_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str check_id: The check ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_checks_id_with_http_info(check_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_checks_id_with_http_info(check_id, **kwargs) # noqa: E501 + return data + + def delete_checks_id_with_http_info(self, check_id, **kwargs): # noqa: E501,D401,D403 + """Delete a check. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_checks_id_with_http_info(check_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str check_id: The check ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_checks_id_prepare(check_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/checks/{checkID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_checks_id_async(self, check_id, **kwargs): # noqa: E501,D401,D403 + """Delete a check. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str check_id: The check ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_checks_id_prepare(check_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/checks/{checkID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_checks_id_prepare(self, check_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['check_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_checks_id', all_params, local_var_params) + # verify the required parameter 'check_id' is set + if ('check_id' not in local_var_params or + local_var_params['check_id'] is None): + raise ValueError("Missing the required parameter `check_id` when calling `delete_checks_id`") # noqa: E501 + + path_params = {} + if 'check_id' in local_var_params: + path_params['checkID'] = local_var_params['check_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_checks_id_labels_id(self, check_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete label from a check. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_checks_id_labels_id(check_id, label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str check_id: The check ID. (required) + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_checks_id_labels_id_with_http_info(check_id, label_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_checks_id_labels_id_with_http_info(check_id, label_id, **kwargs) # noqa: E501 + return data + + def delete_checks_id_labels_id_with_http_info(self, check_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete label from a check. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_checks_id_labels_id_with_http_info(check_id, label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str check_id: The check ID. (required) + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_checks_id_labels_id_prepare(check_id, label_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/checks/{checkID}/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_checks_id_labels_id_async(self, check_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete label from a check. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str check_id: The check ID. (required) + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_checks_id_labels_id_prepare(check_id, label_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/checks/{checkID}/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_checks_id_labels_id_prepare(self, check_id, label_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['check_id', 'label_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_checks_id_labels_id', all_params, local_var_params) + # verify the required parameter 'check_id' is set + if ('check_id' not in local_var_params or + local_var_params['check_id'] is None): + raise ValueError("Missing the required parameter `check_id` when calling `delete_checks_id_labels_id`") # noqa: E501 + # verify the required parameter 'label_id' is set + if ('label_id' not in local_var_params or + local_var_params['label_id'] is None): + raise ValueError("Missing the required parameter `label_id` when calling `delete_checks_id_labels_id`") # noqa: E501 + + path_params = {} + if 'check_id' in local_var_params: + path_params['checkID'] = local_var_params['check_id'] # noqa: E501 + if 'label_id' in local_var_params: + path_params['labelID'] = local_var_params['label_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_checks(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all checks. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_checks(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: Only show checks that belong to a specific organization ID. (required) + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :return: Checks + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_checks_with_http_info(org_id, **kwargs) # noqa: E501 + else: + (data) = self.get_checks_with_http_info(org_id, **kwargs) # noqa: E501 + return data + + def get_checks_with_http_info(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all checks. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_checks_with_http_info(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: Only show checks that belong to a specific organization ID. (required) + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :return: Checks + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_checks_prepare(org_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/checks', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Checks', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_checks_async(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all checks. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str org_id: Only show checks that belong to a specific organization ID. (required) + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :return: Checks + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_checks_prepare(org_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/checks', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Checks', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_checks_prepare(self, org_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['org_id', 'zap_trace_span', 'offset', 'limit'] # noqa: E501 + self._check_operation_params('get_checks', all_params, local_var_params) + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `get_checks`") # noqa: E501 + + if 'offset' in local_var_params and local_var_params['offset'] < 0: # noqa: E501 + raise ValueError("Invalid value for parameter `offset` when calling `get_checks`, must be a value greater than or equal to `0`") # noqa: E501 + if 'limit' in local_var_params and local_var_params['limit'] > 100: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_checks`, must be a value less than or equal to `100`") # noqa: E501 + if 'limit' in local_var_params and local_var_params['limit'] < 1: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_checks`, must be a value greater than or equal to `1`") # noqa: E501 + path_params = {} + + query_params = [] + if 'offset' in local_var_params: + query_params.append(('offset', local_var_params['offset'])) # noqa: E501 + if 'limit' in local_var_params: + query_params.append(('limit', local_var_params['limit'])) # noqa: E501 + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_checks_id(self, check_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a check. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_checks_id(check_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str check_id: The check ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: Check + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_checks_id_with_http_info(check_id, **kwargs) # noqa: E501 + else: + (data) = self.get_checks_id_with_http_info(check_id, **kwargs) # noqa: E501 + return data + + def get_checks_id_with_http_info(self, check_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a check. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_checks_id_with_http_info(check_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str check_id: The check ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: Check + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_checks_id_prepare(check_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/checks/{checkID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Check', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_checks_id_async(self, check_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a check. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str check_id: The check ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: Check + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_checks_id_prepare(check_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/checks/{checkID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Check', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_checks_id_prepare(self, check_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['check_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_checks_id', all_params, local_var_params) + # verify the required parameter 'check_id' is set + if ('check_id' not in local_var_params or + local_var_params['check_id'] is None): + raise ValueError("Missing the required parameter `check_id` when calling `get_checks_id`") # noqa: E501 + + path_params = {} + if 'check_id' in local_var_params: + path_params['checkID'] = local_var_params['check_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_checks_id_labels(self, check_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a check. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_checks_id_labels(check_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str check_id: The check ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_checks_id_labels_with_http_info(check_id, **kwargs) # noqa: E501 + else: + (data) = self.get_checks_id_labels_with_http_info(check_id, **kwargs) # noqa: E501 + return data + + def get_checks_id_labels_with_http_info(self, check_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a check. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_checks_id_labels_with_http_info(check_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str check_id: The check ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_checks_id_labels_prepare(check_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/checks/{checkID}/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_checks_id_labels_async(self, check_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a check. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str check_id: The check ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_checks_id_labels_prepare(check_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/checks/{checkID}/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_checks_id_labels_prepare(self, check_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['check_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_checks_id_labels', all_params, local_var_params) + # verify the required parameter 'check_id' is set + if ('check_id' not in local_var_params or + local_var_params['check_id'] is None): + raise ValueError("Missing the required parameter `check_id` when calling `get_checks_id_labels`") # noqa: E501 + + path_params = {} + if 'check_id' in local_var_params: + path_params['checkID'] = local_var_params['check_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_checks_id_query(self, check_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a check query. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_checks_id_query(check_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str check_id: The check ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: FluxResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_checks_id_query_with_http_info(check_id, **kwargs) # noqa: E501 + else: + (data) = self.get_checks_id_query_with_http_info(check_id, **kwargs) # noqa: E501 + return data + + def get_checks_id_query_with_http_info(self, check_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a check query. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_checks_id_query_with_http_info(check_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str check_id: The check ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: FluxResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_checks_id_query_prepare(check_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/checks/{checkID}/query', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='FluxResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_checks_id_query_async(self, check_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a check query. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str check_id: The check ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: FluxResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_checks_id_query_prepare(check_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/checks/{checkID}/query', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='FluxResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_checks_id_query_prepare(self, check_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['check_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_checks_id_query', all_params, local_var_params) + # verify the required parameter 'check_id' is set + if ('check_id' not in local_var_params or + local_var_params['check_id'] is None): + raise ValueError("Missing the required parameter `check_id` when calling `get_checks_id_query`") # noqa: E501 + + path_params = {} + if 'check_id' in local_var_params: + path_params['checkID'] = local_var_params['check_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_checks_id(self, check_id, check_patch, **kwargs): # noqa: E501,D401,D403 + """Update a check. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_checks_id(check_id, check_patch, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str check_id: The check ID. (required) + :param CheckPatch check_patch: Check update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: Check + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_checks_id_with_http_info(check_id, check_patch, **kwargs) # noqa: E501 + else: + (data) = self.patch_checks_id_with_http_info(check_id, check_patch, **kwargs) # noqa: E501 + return data + + def patch_checks_id_with_http_info(self, check_id, check_patch, **kwargs): # noqa: E501,D401,D403 + """Update a check. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_checks_id_with_http_info(check_id, check_patch, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str check_id: The check ID. (required) + :param CheckPatch check_patch: Check update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: Check + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_checks_id_prepare(check_id, check_patch, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/checks/{checkID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Check', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_checks_id_async(self, check_id, check_patch, **kwargs): # noqa: E501,D401,D403 + """Update a check. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str check_id: The check ID. (required) + :param CheckPatch check_patch: Check update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: Check + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_checks_id_prepare(check_id, check_patch, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/checks/{checkID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Check', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_checks_id_prepare(self, check_id, check_patch, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['check_id', 'check_patch', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_checks_id', all_params, local_var_params) + # verify the required parameter 'check_id' is set + if ('check_id' not in local_var_params or + local_var_params['check_id'] is None): + raise ValueError("Missing the required parameter `check_id` when calling `patch_checks_id`") # noqa: E501 + # verify the required parameter 'check_patch' is set + if ('check_patch' not in local_var_params or + local_var_params['check_patch'] is None): + raise ValueError("Missing the required parameter `check_patch` when calling `patch_checks_id`") # noqa: E501 + + path_params = {} + if 'check_id' in local_var_params: + path_params['checkID'] = local_var_params['check_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'check_patch' in local_var_params: + body_params = local_var_params['check_patch'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_checks_id_labels(self, check_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a check. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_checks_id_labels(check_id, label_mapping, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str check_id: The check ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_checks_id_labels_with_http_info(check_id, label_mapping, **kwargs) # noqa: E501 + else: + (data) = self.post_checks_id_labels_with_http_info(check_id, label_mapping, **kwargs) # noqa: E501 + return data + + def post_checks_id_labels_with_http_info(self, check_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a check. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_checks_id_labels_with_http_info(check_id, label_mapping, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str check_id: The check ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_checks_id_labels_prepare(check_id, label_mapping, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/checks/{checkID}/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_checks_id_labels_async(self, check_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a check. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str check_id: The check ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_checks_id_labels_prepare(check_id, label_mapping, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/checks/{checkID}/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_checks_id_labels_prepare(self, check_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['check_id', 'label_mapping', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_checks_id_labels', all_params, local_var_params) + # verify the required parameter 'check_id' is set + if ('check_id' not in local_var_params or + local_var_params['check_id'] is None): + raise ValueError("Missing the required parameter `check_id` when calling `post_checks_id_labels`") # noqa: E501 + # verify the required parameter 'label_mapping' is set + if ('label_mapping' not in local_var_params or + local_var_params['label_mapping'] is None): + raise ValueError("Missing the required parameter `label_mapping` when calling `post_checks_id_labels`") # noqa: E501 + + path_params = {} + if 'check_id' in local_var_params: + path_params['checkID'] = local_var_params['check_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'label_mapping' in local_var_params: + body_params = local_var_params['label_mapping'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def put_checks_id(self, check_id, check, **kwargs): # noqa: E501,D401,D403 + """Update a check. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.put_checks_id(check_id, check, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str check_id: The check ID. (required) + :param Check check: Check update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: Check + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.put_checks_id_with_http_info(check_id, check, **kwargs) # noqa: E501 + else: + (data) = self.put_checks_id_with_http_info(check_id, check, **kwargs) # noqa: E501 + return data + + def put_checks_id_with_http_info(self, check_id, check, **kwargs): # noqa: E501,D401,D403 + """Update a check. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.put_checks_id_with_http_info(check_id, check, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str check_id: The check ID. (required) + :param Check check: Check update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: Check + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._put_checks_id_prepare(check_id, check, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/checks/{checkID}', 'PUT', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Check', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def put_checks_id_async(self, check_id, check, **kwargs): # noqa: E501,D401,D403 + """Update a check. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str check_id: The check ID. (required) + :param Check check: Check update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: Check + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._put_checks_id_prepare(check_id, check, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/checks/{checkID}', 'PUT', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Check', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _put_checks_id_prepare(self, check_id, check, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['check_id', 'check', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('put_checks_id', all_params, local_var_params) + # verify the required parameter 'check_id' is set + if ('check_id' not in local_var_params or + local_var_params['check_id'] is None): + raise ValueError("Missing the required parameter `check_id` when calling `put_checks_id`") # noqa: E501 + # verify the required parameter 'check' is set + if ('check' not in local_var_params or + local_var_params['check'] is None): + raise ValueError("Missing the required parameter `check` when calling `put_checks_id`") # noqa: E501 + + path_params = {} + if 'check_id' in local_var_params: + path_params['checkID'] = local_var_params['check_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'check' in local_var_params: + body_params = local_var_params['check'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/config_service.py b/frogpilot/third_party/influxdb_client/service/config_service.py new file mode 100644 index 000000000..2dd85d670 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/config_service.py @@ -0,0 +1,250 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class ConfigService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """ConfigService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def get_config(self, **kwargs): # noqa: E501,D401,D403 + """Retrieve runtime configuration. + + Returns the active runtime configuration of the InfluxDB instance. In InfluxDB v2.2+, use this endpoint to view your active runtime configuration, including flags and environment variables. #### Related guides - [View your runtime server configuration](https://docs.influxdata.com/influxdb/latest/reference/config-options/#view-your-runtime-server-configuration) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_config(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: Config + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_config_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_config_with_http_info(**kwargs) # noqa: E501 + return data + + def get_config_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """Retrieve runtime configuration. + + Returns the active runtime configuration of the InfluxDB instance. In InfluxDB v2.2+, use this endpoint to view your active runtime configuration, including flags and environment variables. #### Related guides - [View your runtime server configuration](https://docs.influxdata.com/influxdb/latest/reference/config-options/#view-your-runtime-server-configuration) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_config_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: Config + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_config_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/config', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Config', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_config_async(self, **kwargs): # noqa: E501,D401,D403 + """Retrieve runtime configuration. + + Returns the active runtime configuration of the InfluxDB instance. In InfluxDB v2.2+, use this endpoint to view your active runtime configuration, including flags and environment variables. #### Related guides - [View your runtime server configuration](https://docs.influxdata.com/influxdb/latest/reference/config-options/#view-your-runtime-server-configuration) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: Config + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_config_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/config', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Config', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_config_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span'] # noqa: E501 + self._check_operation_params('get_config', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_flags(self, **kwargs): # noqa: E501,D401,D403 + """Retrieve feature flags. + + Retrieves the feature flag key-value pairs configured for the InfluxDB instance. _Feature flags_ are configuration options used to develop and test experimental InfluxDB features and are intended for internal use only. This endpoint represents the first step in the following three-step process to configure feature flags: 1. Use [token authentication](#section/Authentication/TokenAuthentication) or a [user session](#tag/Signin) with this endpoint to retrieve feature flags and their values. 2. Follow the instructions to [enable, disable, or override values for feature flags](https://docs.influxdata.com/influxdb/latest/reference/config-options/#feature-flags). 3. **Optional**: To confirm that your change is applied, do one of the following: - Send a request to this endpoint to retrieve the current feature flag values. - Send a request to the [`GET /api/v2/config` endpoint](#operation/GetConfig) to retrieve the current runtime server configuration. #### Related guides - [InfluxDB configuration options](https://docs.influxdata.com/influxdb/latest/reference/config-options/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_flags(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: dict(str, object) + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_flags_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_flags_with_http_info(**kwargs) # noqa: E501 + return data + + def get_flags_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """Retrieve feature flags. + + Retrieves the feature flag key-value pairs configured for the InfluxDB instance. _Feature flags_ are configuration options used to develop and test experimental InfluxDB features and are intended for internal use only. This endpoint represents the first step in the following three-step process to configure feature flags: 1. Use [token authentication](#section/Authentication/TokenAuthentication) or a [user session](#tag/Signin) with this endpoint to retrieve feature flags and their values. 2. Follow the instructions to [enable, disable, or override values for feature flags](https://docs.influxdata.com/influxdb/latest/reference/config-options/#feature-flags). 3. **Optional**: To confirm that your change is applied, do one of the following: - Send a request to this endpoint to retrieve the current feature flag values. - Send a request to the [`GET /api/v2/config` endpoint](#operation/GetConfig) to retrieve the current runtime server configuration. #### Related guides - [InfluxDB configuration options](https://docs.influxdata.com/influxdb/latest/reference/config-options/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_flags_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: dict(str, object) + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_flags_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/flags', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='dict(str, object)', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_flags_async(self, **kwargs): # noqa: E501,D401,D403 + """Retrieve feature flags. + + Retrieves the feature flag key-value pairs configured for the InfluxDB instance. _Feature flags_ are configuration options used to develop and test experimental InfluxDB features and are intended for internal use only. This endpoint represents the first step in the following three-step process to configure feature flags: 1. Use [token authentication](#section/Authentication/TokenAuthentication) or a [user session](#tag/Signin) with this endpoint to retrieve feature flags and their values. 2. Follow the instructions to [enable, disable, or override values for feature flags](https://docs.influxdata.com/influxdb/latest/reference/config-options/#feature-flags). 3. **Optional**: To confirm that your change is applied, do one of the following: - Send a request to this endpoint to retrieve the current feature flag values. - Send a request to the [`GET /api/v2/config` endpoint](#operation/GetConfig) to retrieve the current runtime server configuration. #### Related guides - [InfluxDB configuration options](https://docs.influxdata.com/influxdb/latest/reference/config-options/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: dict(str, object) + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_flags_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/flags', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='dict(str, object)', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_flags_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span'] # noqa: E501 + self._check_operation_params('get_flags', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/dashboards_service.py b/frogpilot/third_party/influxdb_client/service/dashboards_service.py new file mode 100644 index 000000000..801c6c76f --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/dashboards_service.py @@ -0,0 +1,2568 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class DashboardsService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """DashboardsService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def delete_dashboards_id(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """Delete a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_dashboards_id(dashboard_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_dashboards_id_with_http_info(dashboard_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_dashboards_id_with_http_info(dashboard_id, **kwargs) # noqa: E501 + return data + + def delete_dashboards_id_with_http_info(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """Delete a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_dashboards_id_with_http_info(dashboard_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_dashboards_id_prepare(dashboard_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_dashboards_id_async(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """Delete a dashboard. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_dashboards_id_prepare(dashboard_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_dashboards_id_prepare(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_dashboards_id', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `delete_dashboards_id`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_dashboards_id_cells_id(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + """Delete a dashboard cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_dashboards_id_cells_id(dashboard_id, cell_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to delete. (required) + :param str cell_id: The ID of the cell to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_dashboards_id_cells_id_with_http_info(dashboard_id, cell_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_dashboards_id_cells_id_with_http_info(dashboard_id, cell_id, **kwargs) # noqa: E501 + return data + + def delete_dashboards_id_cells_id_with_http_info(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + """Delete a dashboard cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_dashboards_id_cells_id_with_http_info(dashboard_id, cell_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to delete. (required) + :param str cell_id: The ID of the cell to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_dashboards_id_cells_id_prepare(dashboard_id, cell_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_dashboards_id_cells_id_async(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + """Delete a dashboard cell. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to delete. (required) + :param str cell_id: The ID of the cell to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_dashboards_id_cells_id_prepare(dashboard_id, cell_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_dashboards_id_cells_id_prepare(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'cell_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_dashboards_id_cells_id', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `delete_dashboards_id_cells_id`") # noqa: E501 + # verify the required parameter 'cell_id' is set + if ('cell_id' not in local_var_params or + local_var_params['cell_id'] is None): + raise ValueError("Missing the required parameter `cell_id` when calling `delete_dashboards_id_cells_id`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + if 'cell_id' in local_var_params: + path_params['cellID'] = local_var_params['cell_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_dashboards_id_labels_id(self, dashboard_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_dashboards_id_labels_id(dashboard_id, label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_dashboards_id_labels_id_with_http_info(dashboard_id, label_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_dashboards_id_labels_id_with_http_info(dashboard_id, label_id, **kwargs) # noqa: E501 + return data + + def delete_dashboards_id_labels_id_with_http_info(self, dashboard_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_dashboards_id_labels_id_with_http_info(dashboard_id, label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_dashboards_id_labels_id_prepare(dashboard_id, label_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_dashboards_id_labels_id_async(self, dashboard_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a dashboard. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_dashboards_id_labels_id_prepare(dashboard_id, label_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_dashboards_id_labels_id_prepare(self, dashboard_id, label_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'label_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_dashboards_id_labels_id', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `delete_dashboards_id_labels_id`") # noqa: E501 + # verify the required parameter 'label_id' is set + if ('label_id' not in local_var_params or + local_var_params['label_id'] is None): + raise ValueError("Missing the required parameter `label_id` when calling `delete_dashboards_id_labels_id`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + if 'label_id' in local_var_params: + path_params['labelID'] = local_var_params['label_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_dashboards_id_members_id(self, user_id, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """Remove a member from a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_dashboards_id_members_id(user_id, dashboard_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the member to remove. (required) + :param str dashboard_id: The dashboard ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_dashboards_id_members_id_with_http_info(user_id, dashboard_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_dashboards_id_members_id_with_http_info(user_id, dashboard_id, **kwargs) # noqa: E501 + return data + + def delete_dashboards_id_members_id_with_http_info(self, user_id, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """Remove a member from a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_dashboards_id_members_id_with_http_info(user_id, dashboard_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the member to remove. (required) + :param str dashboard_id: The dashboard ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_dashboards_id_members_id_prepare(user_id, dashboard_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/members/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_dashboards_id_members_id_async(self, user_id, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """Remove a member from a dashboard. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str user_id: The ID of the member to remove. (required) + :param str dashboard_id: The dashboard ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_dashboards_id_members_id_prepare(user_id, dashboard_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/members/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_dashboards_id_members_id_prepare(self, user_id, dashboard_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['user_id', 'dashboard_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_dashboards_id_members_id', all_params, local_var_params) + # verify the required parameter 'user_id' is set + if ('user_id' not in local_var_params or + local_var_params['user_id'] is None): + raise ValueError("Missing the required parameter `user_id` when calling `delete_dashboards_id_members_id`") # noqa: E501 + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `delete_dashboards_id_members_id`") # noqa: E501 + + path_params = {} + if 'user_id' in local_var_params: + path_params['userID'] = local_var_params['user_id'] # noqa: E501 + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_dashboards_id_owners_id(self, user_id, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """Remove an owner from a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_dashboards_id_owners_id(user_id, dashboard_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the owner to remove. (required) + :param str dashboard_id: The dashboard ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_dashboards_id_owners_id_with_http_info(user_id, dashboard_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_dashboards_id_owners_id_with_http_info(user_id, dashboard_id, **kwargs) # noqa: E501 + return data + + def delete_dashboards_id_owners_id_with_http_info(self, user_id, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """Remove an owner from a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_dashboards_id_owners_id_with_http_info(user_id, dashboard_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the owner to remove. (required) + :param str dashboard_id: The dashboard ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_dashboards_id_owners_id_prepare(user_id, dashboard_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/owners/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_dashboards_id_owners_id_async(self, user_id, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """Remove an owner from a dashboard. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str user_id: The ID of the owner to remove. (required) + :param str dashboard_id: The dashboard ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_dashboards_id_owners_id_prepare(user_id, dashboard_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/owners/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_dashboards_id_owners_id_prepare(self, user_id, dashboard_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['user_id', 'dashboard_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_dashboards_id_owners_id', all_params, local_var_params) + # verify the required parameter 'user_id' is set + if ('user_id' not in local_var_params or + local_var_params['user_id'] is None): + raise ValueError("Missing the required parameter `user_id` when calling `delete_dashboards_id_owners_id`") # noqa: E501 + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `delete_dashboards_id_owners_id`") # noqa: E501 + + path_params = {} + if 'user_id' in local_var_params: + path_params['userID'] = local_var_params['user_id'] # noqa: E501 + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_dashboards(self, **kwargs): # noqa: E501,D401,D403 + """List dashboards. + + Lists [dashboards](https://docs.influxdata.com/influxdb/latest/reference/glossary/#dashboard). #### Related guides - [Manage dashboards](https://docs.influxdata.com/influxdb/latest/visualize-data/dashboards/). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dashboards(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :param bool descending: + :param str owner: A user ID. Only returns [dashboards](https://docs.influxdata.com/influxdb/latest/reference/glossary/#dashboard) where the specified user has the `owner` role. + :param str sort_by: The column to sort by. + :param list[str] id: A list of dashboard IDs. Returns only the specified [dashboards](https://docs.influxdata.com/influxdb/latest/reference/glossary/#dashboard). If you specify `id` and `owner`, only `id` is used. + :param str org_id: An organization ID. Only returns [dashboards](https://docs.influxdata.com/influxdb/latest/reference/glossary/#dashboard) that belong to the specified [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization). + :param str org: An organization name. Only returns [dashboards](https://docs.influxdata.com/influxdb/latest/reference/glossary/#dashboard) that belong to the specified [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization). + :return: Dashboards + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_dashboards_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_dashboards_with_http_info(**kwargs) # noqa: E501 + return data + + def get_dashboards_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """List dashboards. + + Lists [dashboards](https://docs.influxdata.com/influxdb/latest/reference/glossary/#dashboard). #### Related guides - [Manage dashboards](https://docs.influxdata.com/influxdb/latest/visualize-data/dashboards/). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dashboards_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :param bool descending: + :param str owner: A user ID. Only returns [dashboards](https://docs.influxdata.com/influxdb/latest/reference/glossary/#dashboard) where the specified user has the `owner` role. + :param str sort_by: The column to sort by. + :param list[str] id: A list of dashboard IDs. Returns only the specified [dashboards](https://docs.influxdata.com/influxdb/latest/reference/glossary/#dashboard). If you specify `id` and `owner`, only `id` is used. + :param str org_id: An organization ID. Only returns [dashboards](https://docs.influxdata.com/influxdb/latest/reference/glossary/#dashboard) that belong to the specified [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization). + :param str org: An organization name. Only returns [dashboards](https://docs.influxdata.com/influxdb/latest/reference/glossary/#dashboard) that belong to the specified [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization). + :return: Dashboards + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dashboards_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Dashboards', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_dashboards_async(self, **kwargs): # noqa: E501,D401,D403 + """List dashboards. + + Lists [dashboards](https://docs.influxdata.com/influxdb/latest/reference/glossary/#dashboard). #### Related guides - [Manage dashboards](https://docs.influxdata.com/influxdb/latest/visualize-data/dashboards/). + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :param bool descending: + :param str owner: A user ID. Only returns [dashboards](https://docs.influxdata.com/influxdb/latest/reference/glossary/#dashboard) where the specified user has the `owner` role. + :param str sort_by: The column to sort by. + :param list[str] id: A list of dashboard IDs. Returns only the specified [dashboards](https://docs.influxdata.com/influxdb/latest/reference/glossary/#dashboard). If you specify `id` and `owner`, only `id` is used. + :param str org_id: An organization ID. Only returns [dashboards](https://docs.influxdata.com/influxdb/latest/reference/glossary/#dashboard) that belong to the specified [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization). + :param str org: An organization name. Only returns [dashboards](https://docs.influxdata.com/influxdb/latest/reference/glossary/#dashboard) that belong to the specified [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization). + :return: Dashboards + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dashboards_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Dashboards', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_dashboards_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span', 'offset', 'limit', 'descending', 'owner', 'sort_by', 'id', 'org_id', 'org'] # noqa: E501 + self._check_operation_params('get_dashboards', all_params, local_var_params) + + if 'offset' in local_var_params and local_var_params['offset'] < 0: # noqa: E501 + raise ValueError("Invalid value for parameter `offset` when calling `get_dashboards`, must be a value greater than or equal to `0`") # noqa: E501 + if 'limit' in local_var_params and local_var_params['limit'] > 100: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_dashboards`, must be a value less than or equal to `100`") # noqa: E501 + if 'limit' in local_var_params and local_var_params['limit'] < 1: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_dashboards`, must be a value greater than or equal to `1`") # noqa: E501 + path_params = {} + + query_params = [] + if 'offset' in local_var_params: + query_params.append(('offset', local_var_params['offset'])) # noqa: E501 + if 'limit' in local_var_params: + query_params.append(('limit', local_var_params['limit'])) # noqa: E501 + if 'descending' in local_var_params: + query_params.append(('descending', local_var_params['descending'])) # noqa: E501 + if 'owner' in local_var_params: + query_params.append(('owner', local_var_params['owner'])) # noqa: E501 + if 'sort_by' in local_var_params: + query_params.append(('sortBy', local_var_params['sort_by'])) # noqa: E501 + if 'id' in local_var_params: + query_params.append(('id', local_var_params['id'])) # noqa: E501 + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_dashboards_id(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dashboards_id(dashboard_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str zap_trace_span: OpenTracing span context + :param str include: If `properties`, includes the cell view properties in the response. + :return: DashboardWithViewProperties + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_dashboards_id_with_http_info(dashboard_id, **kwargs) # noqa: E501 + else: + (data) = self.get_dashboards_id_with_http_info(dashboard_id, **kwargs) # noqa: E501 + return data + + def get_dashboards_id_with_http_info(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dashboards_id_with_http_info(dashboard_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str zap_trace_span: OpenTracing span context + :param str include: If `properties`, includes the cell view properties in the response. + :return: DashboardWithViewProperties + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dashboards_id_prepare(dashboard_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='DashboardWithViewProperties', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_dashboards_id_async(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a dashboard. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str zap_trace_span: OpenTracing span context + :param str include: If `properties`, includes the cell view properties in the response. + :return: DashboardWithViewProperties + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dashboards_id_prepare(dashboard_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='DashboardWithViewProperties', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_dashboards_id_prepare(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'zap_trace_span', 'include'] # noqa: E501 + self._check_operation_params('get_dashboards_id', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `get_dashboards_id`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + + query_params = [] + if 'include' in local_var_params: + query_params.append(('include', local_var_params['include'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_dashboards_id_cells_id_view(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve the view for a cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dashboards_id_cells_id_view(dashboard_id, cell_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str cell_id: The cell ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: View + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_dashboards_id_cells_id_view_with_http_info(dashboard_id, cell_id, **kwargs) # noqa: E501 + else: + (data) = self.get_dashboards_id_cells_id_view_with_http_info(dashboard_id, cell_id, **kwargs) # noqa: E501 + return data + + def get_dashboards_id_cells_id_view_with_http_info(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve the view for a cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dashboards_id_cells_id_view_with_http_info(dashboard_id, cell_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str cell_id: The cell ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: View + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dashboards_id_cells_id_view_prepare(dashboard_id, cell_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}/view', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='View', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_dashboards_id_cells_id_view_async(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve the view for a cell. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str cell_id: The cell ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: View + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dashboards_id_cells_id_view_prepare(dashboard_id, cell_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}/view', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='View', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_dashboards_id_cells_id_view_prepare(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'cell_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_dashboards_id_cells_id_view', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `get_dashboards_id_cells_id_view`") # noqa: E501 + # verify the required parameter 'cell_id' is set + if ('cell_id' not in local_var_params or + local_var_params['cell_id'] is None): + raise ValueError("Missing the required parameter `cell_id` when calling `get_dashboards_id_cells_id_view`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + if 'cell_id' in local_var_params: + path_params['cellID'] = local_var_params['cell_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_dashboards_id_labels(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dashboards_id_labels(dashboard_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_dashboards_id_labels_with_http_info(dashboard_id, **kwargs) # noqa: E501 + else: + (data) = self.get_dashboards_id_labels_with_http_info(dashboard_id, **kwargs) # noqa: E501 + return data + + def get_dashboards_id_labels_with_http_info(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dashboards_id_labels_with_http_info(dashboard_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dashboards_id_labels_prepare(dashboard_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_dashboards_id_labels_async(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a dashboard. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dashboards_id_labels_prepare(dashboard_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_dashboards_id_labels_prepare(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_dashboards_id_labels', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `get_dashboards_id_labels`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_dashboards_id_members(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """List all dashboard members. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dashboards_id_members(dashboard_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMembers + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_dashboards_id_members_with_http_info(dashboard_id, **kwargs) # noqa: E501 + else: + (data) = self.get_dashboards_id_members_with_http_info(dashboard_id, **kwargs) # noqa: E501 + return data + + def get_dashboards_id_members_with_http_info(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """List all dashboard members. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dashboards_id_members_with_http_info(dashboard_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMembers + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dashboards_id_members_prepare(dashboard_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/members', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMembers', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_dashboards_id_members_async(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """List all dashboard members. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMembers + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dashboards_id_members_prepare(dashboard_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/members', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMembers', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_dashboards_id_members_prepare(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_dashboards_id_members', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `get_dashboards_id_members`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_dashboards_id_owners(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """List all dashboard owners. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dashboards_id_owners(dashboard_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwners + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_dashboards_id_owners_with_http_info(dashboard_id, **kwargs) # noqa: E501 + else: + (data) = self.get_dashboards_id_owners_with_http_info(dashboard_id, **kwargs) # noqa: E501 + return data + + def get_dashboards_id_owners_with_http_info(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """List all dashboard owners. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dashboards_id_owners_with_http_info(dashboard_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwners + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dashboards_id_owners_prepare(dashboard_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/owners', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwners', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_dashboards_id_owners_async(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """List all dashboard owners. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwners + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dashboards_id_owners_prepare(dashboard_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/owners', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwners', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_dashboards_id_owners_prepare(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_dashboards_id_owners', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `get_dashboards_id_owners`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_dashboards_id(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """Update a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_dashboards_id(dashboard_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str zap_trace_span: OpenTracing span context + :param PatchDashboardRequest patch_dashboard_request: + :return: Dashboard + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_dashboards_id_with_http_info(dashboard_id, **kwargs) # noqa: E501 + else: + (data) = self.patch_dashboards_id_with_http_info(dashboard_id, **kwargs) # noqa: E501 + return data + + def patch_dashboards_id_with_http_info(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """Update a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_dashboards_id_with_http_info(dashboard_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str zap_trace_span: OpenTracing span context + :param PatchDashboardRequest patch_dashboard_request: + :return: Dashboard + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_dashboards_id_prepare(dashboard_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Dashboard', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_dashboards_id_async(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + """Update a dashboard. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str zap_trace_span: OpenTracing span context + :param PatchDashboardRequest patch_dashboard_request: + :return: Dashboard + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_dashboards_id_prepare(dashboard_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Dashboard', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_dashboards_id_prepare(self, dashboard_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'zap_trace_span', 'patch_dashboard_request'] # noqa: E501 + self._check_operation_params('patch_dashboards_id', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `patch_dashboards_id`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'patch_dashboard_request' in local_var_params: + body_params = local_var_params['patch_dashboard_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_dashboards_id_cells_id(self, dashboard_id, cell_id, cell_update, **kwargs): # noqa: E501,D401,D403 + """Update the non-positional information related to a cell. + + Updates the non positional information related to a cell. Updates to a single cell's positional data could cause grid conflicts. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_dashboards_id_cells_id(dashboard_id, cell_id, cell_update, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str cell_id: The ID of the cell to update. (required) + :param CellUpdate cell_update: (required) + :param str zap_trace_span: OpenTracing span context + :return: Cell + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_dashboards_id_cells_id_with_http_info(dashboard_id, cell_id, cell_update, **kwargs) # noqa: E501 + else: + (data) = self.patch_dashboards_id_cells_id_with_http_info(dashboard_id, cell_id, cell_update, **kwargs) # noqa: E501 + return data + + def patch_dashboards_id_cells_id_with_http_info(self, dashboard_id, cell_id, cell_update, **kwargs): # noqa: E501,D401,D403 + """Update the non-positional information related to a cell. + + Updates the non positional information related to a cell. Updates to a single cell's positional data could cause grid conflicts. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_dashboards_id_cells_id_with_http_info(dashboard_id, cell_id, cell_update, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str cell_id: The ID of the cell to update. (required) + :param CellUpdate cell_update: (required) + :param str zap_trace_span: OpenTracing span context + :return: Cell + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_dashboards_id_cells_id_prepare(dashboard_id, cell_id, cell_update, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Cell', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_dashboards_id_cells_id_async(self, dashboard_id, cell_id, cell_update, **kwargs): # noqa: E501,D401,D403 + """Update the non-positional information related to a cell. + + Updates the non positional information related to a cell. Updates to a single cell's positional data could cause grid conflicts. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str cell_id: The ID of the cell to update. (required) + :param CellUpdate cell_update: (required) + :param str zap_trace_span: OpenTracing span context + :return: Cell + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_dashboards_id_cells_id_prepare(dashboard_id, cell_id, cell_update, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Cell', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_dashboards_id_cells_id_prepare(self, dashboard_id, cell_id, cell_update, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'cell_id', 'cell_update', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_dashboards_id_cells_id', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `patch_dashboards_id_cells_id`") # noqa: E501 + # verify the required parameter 'cell_id' is set + if ('cell_id' not in local_var_params or + local_var_params['cell_id'] is None): + raise ValueError("Missing the required parameter `cell_id` when calling `patch_dashboards_id_cells_id`") # noqa: E501 + # verify the required parameter 'cell_update' is set + if ('cell_update' not in local_var_params or + local_var_params['cell_update'] is None): + raise ValueError("Missing the required parameter `cell_update` when calling `patch_dashboards_id_cells_id`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + if 'cell_id' in local_var_params: + path_params['cellID'] = local_var_params['cell_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'cell_update' in local_var_params: + body_params = local_var_params['cell_update'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_dashboards_id_cells_id_view(self, dashboard_id, cell_id, view, **kwargs): # noqa: E501,D401,D403 + """Update the view for a cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_dashboards_id_cells_id_view(dashboard_id, cell_id, view, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str cell_id: The ID of the cell to update. (required) + :param View view: (required) + :param str zap_trace_span: OpenTracing span context + :return: View + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_dashboards_id_cells_id_view_with_http_info(dashboard_id, cell_id, view, **kwargs) # noqa: E501 + else: + (data) = self.patch_dashboards_id_cells_id_view_with_http_info(dashboard_id, cell_id, view, **kwargs) # noqa: E501 + return data + + def patch_dashboards_id_cells_id_view_with_http_info(self, dashboard_id, cell_id, view, **kwargs): # noqa: E501,D401,D403 + """Update the view for a cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_dashboards_id_cells_id_view_with_http_info(dashboard_id, cell_id, view, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str cell_id: The ID of the cell to update. (required) + :param View view: (required) + :param str zap_trace_span: OpenTracing span context + :return: View + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_dashboards_id_cells_id_view_prepare(dashboard_id, cell_id, view, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}/view', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='View', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_dashboards_id_cells_id_view_async(self, dashboard_id, cell_id, view, **kwargs): # noqa: E501,D401,D403 + """Update the view for a cell. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str cell_id: The ID of the cell to update. (required) + :param View view: (required) + :param str zap_trace_span: OpenTracing span context + :return: View + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_dashboards_id_cells_id_view_prepare(dashboard_id, cell_id, view, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}/view', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='View', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_dashboards_id_cells_id_view_prepare(self, dashboard_id, cell_id, view, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'cell_id', 'view', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_dashboards_id_cells_id_view', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `patch_dashboards_id_cells_id_view`") # noqa: E501 + # verify the required parameter 'cell_id' is set + if ('cell_id' not in local_var_params or + local_var_params['cell_id'] is None): + raise ValueError("Missing the required parameter `cell_id` when calling `patch_dashboards_id_cells_id_view`") # noqa: E501 + # verify the required parameter 'view' is set + if ('view' not in local_var_params or + local_var_params['view'] is None): + raise ValueError("Missing the required parameter `view` when calling `patch_dashboards_id_cells_id_view`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + if 'cell_id' in local_var_params: + path_params['cellID'] = local_var_params['cell_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'view' in local_var_params: + body_params = local_var_params['view'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_dashboards(self, create_dashboard_request, **kwargs): # noqa: E501,D401,D403 + """Create a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_dashboards(create_dashboard_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param CreateDashboardRequest create_dashboard_request: Dashboard to create (required) + :param str zap_trace_span: OpenTracing span context + :return: Dashboard + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_dashboards_with_http_info(create_dashboard_request, **kwargs) # noqa: E501 + else: + (data) = self.post_dashboards_with_http_info(create_dashboard_request, **kwargs) # noqa: E501 + return data + + def post_dashboards_with_http_info(self, create_dashboard_request, **kwargs): # noqa: E501,D401,D403 + """Create a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_dashboards_with_http_info(create_dashboard_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param CreateDashboardRequest create_dashboard_request: Dashboard to create (required) + :param str zap_trace_span: OpenTracing span context + :return: Dashboard + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_dashboards_prepare(create_dashboard_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Dashboard', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_dashboards_async(self, create_dashboard_request, **kwargs): # noqa: E501,D401,D403 + """Create a dashboard. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param CreateDashboardRequest create_dashboard_request: Dashboard to create (required) + :param str zap_trace_span: OpenTracing span context + :return: Dashboard + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_dashboards_prepare(create_dashboard_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Dashboard', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_dashboards_prepare(self, create_dashboard_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['create_dashboard_request', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_dashboards', all_params, local_var_params) + # verify the required parameter 'create_dashboard_request' is set + if ('create_dashboard_request' not in local_var_params or + local_var_params['create_dashboard_request'] is None): + raise ValueError("Missing the required parameter `create_dashboard_request` when calling `post_dashboards`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'create_dashboard_request' in local_var_params: + body_params = local_var_params['create_dashboard_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_dashboards_id_cells(self, dashboard_id, create_cell, **kwargs): # noqa: E501,D401,D403 + """Create a dashboard cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_dashboards_id_cells(dashboard_id, create_cell, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param CreateCell create_cell: Cell that will be added (required) + :param str zap_trace_span: OpenTracing span context + :return: Cell + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_dashboards_id_cells_with_http_info(dashboard_id, create_cell, **kwargs) # noqa: E501 + else: + (data) = self.post_dashboards_id_cells_with_http_info(dashboard_id, create_cell, **kwargs) # noqa: E501 + return data + + def post_dashboards_id_cells_with_http_info(self, dashboard_id, create_cell, **kwargs): # noqa: E501,D401,D403 + """Create a dashboard cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_dashboards_id_cells_with_http_info(dashboard_id, create_cell, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param CreateCell create_cell: Cell that will be added (required) + :param str zap_trace_span: OpenTracing span context + :return: Cell + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_dashboards_id_cells_prepare(dashboard_id, create_cell, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Cell', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_dashboards_id_cells_async(self, dashboard_id, create_cell, **kwargs): # noqa: E501,D401,D403 + """Create a dashboard cell. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param CreateCell create_cell: Cell that will be added (required) + :param str zap_trace_span: OpenTracing span context + :return: Cell + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_dashboards_id_cells_prepare(dashboard_id, create_cell, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Cell', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_dashboards_id_cells_prepare(self, dashboard_id, create_cell, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'create_cell', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_dashboards_id_cells', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `post_dashboards_id_cells`") # noqa: E501 + # verify the required parameter 'create_cell' is set + if ('create_cell' not in local_var_params or + local_var_params['create_cell'] is None): + raise ValueError("Missing the required parameter `create_cell` when calling `post_dashboards_id_cells`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'create_cell' in local_var_params: + body_params = local_var_params['create_cell'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_dashboards_id_labels(self, dashboard_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_dashboards_id_labels(dashboard_id, label_mapping, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_dashboards_id_labels_with_http_info(dashboard_id, label_mapping, **kwargs) # noqa: E501 + else: + (data) = self.post_dashboards_id_labels_with_http_info(dashboard_id, label_mapping, **kwargs) # noqa: E501 + return data + + def post_dashboards_id_labels_with_http_info(self, dashboard_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_dashboards_id_labels_with_http_info(dashboard_id, label_mapping, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_dashboards_id_labels_prepare(dashboard_id, label_mapping, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_dashboards_id_labels_async(self, dashboard_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a dashboard. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_dashboards_id_labels_prepare(dashboard_id, label_mapping, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_dashboards_id_labels_prepare(self, dashboard_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'label_mapping', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_dashboards_id_labels', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `post_dashboards_id_labels`") # noqa: E501 + # verify the required parameter 'label_mapping' is set + if ('label_mapping' not in local_var_params or + local_var_params['label_mapping'] is None): + raise ValueError("Missing the required parameter `label_mapping` when calling `post_dashboards_id_labels`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'label_mapping' in local_var_params: + body_params = local_var_params['label_mapping'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_dashboards_id_members(self, dashboard_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add a member to a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_dashboards_id_members(dashboard_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: User to add as member (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMember + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_dashboards_id_members_with_http_info(dashboard_id, add_resource_member_request_body, **kwargs) # noqa: E501 + else: + (data) = self.post_dashboards_id_members_with_http_info(dashboard_id, add_resource_member_request_body, **kwargs) # noqa: E501 + return data + + def post_dashboards_id_members_with_http_info(self, dashboard_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add a member to a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_dashboards_id_members_with_http_info(dashboard_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: User to add as member (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMember + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_dashboards_id_members_prepare(dashboard_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/members', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMember', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_dashboards_id_members_async(self, dashboard_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add a member to a dashboard. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: User to add as member (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMember + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_dashboards_id_members_prepare(dashboard_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/members', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMember', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_dashboards_id_members_prepare(self, dashboard_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'add_resource_member_request_body', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_dashboards_id_members', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `post_dashboards_id_members`") # noqa: E501 + # verify the required parameter 'add_resource_member_request_body' is set + if ('add_resource_member_request_body' not in local_var_params or + local_var_params['add_resource_member_request_body'] is None): + raise ValueError("Missing the required parameter `add_resource_member_request_body` when calling `post_dashboards_id_members`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'add_resource_member_request_body' in local_var_params: + body_params = local_var_params['add_resource_member_request_body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_dashboards_id_owners(self, dashboard_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add an owner to a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_dashboards_id_owners(dashboard_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: User to add as owner (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwner + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_dashboards_id_owners_with_http_info(dashboard_id, add_resource_member_request_body, **kwargs) # noqa: E501 + else: + (data) = self.post_dashboards_id_owners_with_http_info(dashboard_id, add_resource_member_request_body, **kwargs) # noqa: E501 + return data + + def post_dashboards_id_owners_with_http_info(self, dashboard_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add an owner to a dashboard. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_dashboards_id_owners_with_http_info(dashboard_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: User to add as owner (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwner + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_dashboards_id_owners_prepare(dashboard_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/owners', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwner', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_dashboards_id_owners_async(self, dashboard_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add an owner to a dashboard. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: User to add as owner (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwner + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_dashboards_id_owners_prepare(dashboard_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/owners', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwner', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_dashboards_id_owners_prepare(self, dashboard_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'add_resource_member_request_body', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_dashboards_id_owners', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `post_dashboards_id_owners`") # noqa: E501 + # verify the required parameter 'add_resource_member_request_body' is set + if ('add_resource_member_request_body' not in local_var_params or + local_var_params['add_resource_member_request_body'] is None): + raise ValueError("Missing the required parameter `add_resource_member_request_body` when calling `post_dashboards_id_owners`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'add_resource_member_request_body' in local_var_params: + body_params = local_var_params['add_resource_member_request_body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def put_dashboards_id_cells(self, dashboard_id, cell, **kwargs): # noqa: E501,D401,D403 + """Replace cells in a dashboard. + + Replaces all cells in a dashboard. This is used primarily to update the positional information of all cells. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.put_dashboards_id_cells(dashboard_id, cell, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param list[Cell] cell: (required) + :param str zap_trace_span: OpenTracing span context + :return: Dashboard + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.put_dashboards_id_cells_with_http_info(dashboard_id, cell, **kwargs) # noqa: E501 + else: + (data) = self.put_dashboards_id_cells_with_http_info(dashboard_id, cell, **kwargs) # noqa: E501 + return data + + def put_dashboards_id_cells_with_http_info(self, dashboard_id, cell, **kwargs): # noqa: E501,D401,D403 + """Replace cells in a dashboard. + + Replaces all cells in a dashboard. This is used primarily to update the positional information of all cells. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.put_dashboards_id_cells_with_http_info(dashboard_id, cell, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param list[Cell] cell: (required) + :param str zap_trace_span: OpenTracing span context + :return: Dashboard + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._put_dashboards_id_cells_prepare(dashboard_id, cell, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells', 'PUT', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Dashboard', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def put_dashboards_id_cells_async(self, dashboard_id, cell, **kwargs): # noqa: E501,D401,D403 + """Replace cells in a dashboard. + + Replaces all cells in a dashboard. This is used primarily to update the positional information of all cells. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param list[Cell] cell: (required) + :param str zap_trace_span: OpenTracing span context + :return: Dashboard + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._put_dashboards_id_cells_prepare(dashboard_id, cell, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells', 'PUT', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Dashboard', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _put_dashboards_id_cells_prepare(self, dashboard_id, cell, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'cell', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('put_dashboards_id_cells', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `put_dashboards_id_cells`") # noqa: E501 + # verify the required parameter 'cell' is set + if ('cell' not in local_var_params or + local_var_params['cell'] is None): + raise ValueError("Missing the required parameter `cell` when calling `put_dashboards_id_cells`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'cell' in local_var_params: + body_params = local_var_params['cell'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/dbr_ps_service.py b/frogpilot/third_party/influxdb_client/service/dbr_ps_service.py new file mode 100644 index 000000000..4fb20aef3 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/dbr_ps_service.py @@ -0,0 +1,695 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class DBRPsService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """DBRPsService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def delete_dbrpid(self, dbrp_id, **kwargs): # noqa: E501,D401,D403 + """Delete a database retention policy. + + Deletes the specified database retention policy (DBRP) mapping. #### Related guide - [Database and retention policy mapping](https://docs.influxdata.com/influxdb/latest/reference/api/influxdb-1x/dbrp/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_dbrpid(dbrp_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dbrp_id: A DBRP mapping ID. Only returns the specified DBRP mapping. (required) + :param str zap_trace_span: OpenTracing span context + :param str org_id: An organization ID. Specifies the organization that owns the DBRP mapping. + :param str org: An organization name. Specifies the organization that owns the DBRP mapping. + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_dbrpid_with_http_info(dbrp_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_dbrpid_with_http_info(dbrp_id, **kwargs) # noqa: E501 + return data + + def delete_dbrpid_with_http_info(self, dbrp_id, **kwargs): # noqa: E501,D401,D403 + """Delete a database retention policy. + + Deletes the specified database retention policy (DBRP) mapping. #### Related guide - [Database and retention policy mapping](https://docs.influxdata.com/influxdb/latest/reference/api/influxdb-1x/dbrp/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_dbrpid_with_http_info(dbrp_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dbrp_id: A DBRP mapping ID. Only returns the specified DBRP mapping. (required) + :param str zap_trace_span: OpenTracing span context + :param str org_id: An organization ID. Specifies the organization that owns the DBRP mapping. + :param str org: An organization name. Specifies the organization that owns the DBRP mapping. + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_dbrpid_prepare(dbrp_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dbrps/{dbrpID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_dbrpid_async(self, dbrp_id, **kwargs): # noqa: E501,D401,D403 + """Delete a database retention policy. + + Deletes the specified database retention policy (DBRP) mapping. #### Related guide - [Database and retention policy mapping](https://docs.influxdata.com/influxdb/latest/reference/api/influxdb-1x/dbrp/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dbrp_id: A DBRP mapping ID. Only returns the specified DBRP mapping. (required) + :param str zap_trace_span: OpenTracing span context + :param str org_id: An organization ID. Specifies the organization that owns the DBRP mapping. + :param str org: An organization name. Specifies the organization that owns the DBRP mapping. + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_dbrpid_prepare(dbrp_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dbrps/{dbrpID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_dbrpid_prepare(self, dbrp_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dbrp_id', 'zap_trace_span', 'org_id', 'org'] # noqa: E501 + self._check_operation_params('delete_dbrpid', all_params, local_var_params) + # verify the required parameter 'dbrp_id' is set + if ('dbrp_id' not in local_var_params or + local_var_params['dbrp_id'] is None): + raise ValueError("Missing the required parameter `dbrp_id` when calling `delete_dbrpid`") # noqa: E501 + + path_params = {} + if 'dbrp_id' in local_var_params: + path_params['dbrpID'] = local_var_params['dbrp_id'] # noqa: E501 + + query_params = [] + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_dbr_ps(self, **kwargs): # noqa: E501,D401,D403 + """List database retention policy mappings. + + Lists database retention policy (DBRP) mappings. #### Related guide - [Database and retention policy mapping](https://docs.influxdata.com/influxdb/latest/reference/api/influxdb-1x/dbrp/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dbr_ps(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str org_id: An organization ID. Only returns DBRP mappings for the specified organization. + :param str org: An organization name. Only returns DBRP mappings for the specified organization. + :param str id: A DBPR mapping ID. Only returns the specified DBRP mapping. + :param str bucket_id: A bucket ID. Only returns DBRP mappings that belong to the specified bucket. + :param bool default: Specifies filtering on default + :param str db: A database. Only returns DBRP mappings that belong to the 1.x database. + :param str rp: A [retention policy](https://docs.influxdata.com/influxdb/v1.8/concepts/glossary/#retention-policy-rp). Specifies the 1.x retention policy to filter on. + :return: DBRPs + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_dbr_ps_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_dbr_ps_with_http_info(**kwargs) # noqa: E501 + return data + + def get_dbr_ps_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """List database retention policy mappings. + + Lists database retention policy (DBRP) mappings. #### Related guide - [Database and retention policy mapping](https://docs.influxdata.com/influxdb/latest/reference/api/influxdb-1x/dbrp/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dbr_ps_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str org_id: An organization ID. Only returns DBRP mappings for the specified organization. + :param str org: An organization name. Only returns DBRP mappings for the specified organization. + :param str id: A DBPR mapping ID. Only returns the specified DBRP mapping. + :param str bucket_id: A bucket ID. Only returns DBRP mappings that belong to the specified bucket. + :param bool default: Specifies filtering on default + :param str db: A database. Only returns DBRP mappings that belong to the 1.x database. + :param str rp: A [retention policy](https://docs.influxdata.com/influxdb/v1.8/concepts/glossary/#retention-policy-rp). Specifies the 1.x retention policy to filter on. + :return: DBRPs + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dbr_ps_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dbrps', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='DBRPs', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_dbr_ps_async(self, **kwargs): # noqa: E501,D401,D403 + """List database retention policy mappings. + + Lists database retention policy (DBRP) mappings. #### Related guide - [Database and retention policy mapping](https://docs.influxdata.com/influxdb/latest/reference/api/influxdb-1x/dbrp/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str org_id: An organization ID. Only returns DBRP mappings for the specified organization. + :param str org: An organization name. Only returns DBRP mappings for the specified organization. + :param str id: A DBPR mapping ID. Only returns the specified DBRP mapping. + :param str bucket_id: A bucket ID. Only returns DBRP mappings that belong to the specified bucket. + :param bool default: Specifies filtering on default + :param str db: A database. Only returns DBRP mappings that belong to the 1.x database. + :param str rp: A [retention policy](https://docs.influxdata.com/influxdb/v1.8/concepts/glossary/#retention-policy-rp). Specifies the 1.x retention policy to filter on. + :return: DBRPs + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dbr_ps_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dbrps', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='DBRPs', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_dbr_ps_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span', 'org_id', 'org', 'id', 'bucket_id', 'default', 'db', 'rp'] # noqa: E501 + self._check_operation_params('get_dbr_ps', all_params, local_var_params) + + path_params = {} + + query_params = [] + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + if 'id' in local_var_params: + query_params.append(('id', local_var_params['id'])) # noqa: E501 + if 'bucket_id' in local_var_params: + query_params.append(('bucketID', local_var_params['bucket_id'])) # noqa: E501 + if 'default' in local_var_params: + query_params.append(('default', local_var_params['default'])) # noqa: E501 + if 'db' in local_var_params: + query_params.append(('db', local_var_params['db'])) # noqa: E501 + if 'rp' in local_var_params: + query_params.append(('rp', local_var_params['rp'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_dbr_ps_id(self, dbrp_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a database retention policy mapping. + + Retrieves the specified retention policy (DBRP) mapping. #### Related guide - [Database and retention policy mapping](https://docs.influxdata.com/influxdb/latest/reference/api/influxdb-1x/dbrp/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dbr_ps_id(dbrp_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dbrp_id: A DBRP mapping ID. Specifies the DBRP mapping. (required) + :param str zap_trace_span: OpenTracing span context + :param str org_id: An organization ID. Specifies the organization that owns the DBRP mapping. + :param str org: An organization name. Specifies the organization that owns the DBRP mapping. + :return: DBRPGet + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_dbr_ps_id_with_http_info(dbrp_id, **kwargs) # noqa: E501 + else: + (data) = self.get_dbr_ps_id_with_http_info(dbrp_id, **kwargs) # noqa: E501 + return data + + def get_dbr_ps_id_with_http_info(self, dbrp_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a database retention policy mapping. + + Retrieves the specified retention policy (DBRP) mapping. #### Related guide - [Database and retention policy mapping](https://docs.influxdata.com/influxdb/latest/reference/api/influxdb-1x/dbrp/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dbr_ps_id_with_http_info(dbrp_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dbrp_id: A DBRP mapping ID. Specifies the DBRP mapping. (required) + :param str zap_trace_span: OpenTracing span context + :param str org_id: An organization ID. Specifies the organization that owns the DBRP mapping. + :param str org: An organization name. Specifies the organization that owns the DBRP mapping. + :return: DBRPGet + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dbr_ps_id_prepare(dbrp_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dbrps/{dbrpID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='DBRPGet', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_dbr_ps_id_async(self, dbrp_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a database retention policy mapping. + + Retrieves the specified retention policy (DBRP) mapping. #### Related guide - [Database and retention policy mapping](https://docs.influxdata.com/influxdb/latest/reference/api/influxdb-1x/dbrp/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dbrp_id: A DBRP mapping ID. Specifies the DBRP mapping. (required) + :param str zap_trace_span: OpenTracing span context + :param str org_id: An organization ID. Specifies the organization that owns the DBRP mapping. + :param str org: An organization name. Specifies the organization that owns the DBRP mapping. + :return: DBRPGet + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dbr_ps_id_prepare(dbrp_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dbrps/{dbrpID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='DBRPGet', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_dbr_ps_id_prepare(self, dbrp_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dbrp_id', 'zap_trace_span', 'org_id', 'org'] # noqa: E501 + self._check_operation_params('get_dbr_ps_id', all_params, local_var_params) + # verify the required parameter 'dbrp_id' is set + if ('dbrp_id' not in local_var_params or + local_var_params['dbrp_id'] is None): + raise ValueError("Missing the required parameter `dbrp_id` when calling `get_dbr_ps_id`") # noqa: E501 + + path_params = {} + if 'dbrp_id' in local_var_params: + path_params['dbrpID'] = local_var_params['dbrp_id'] # noqa: E501 + + query_params = [] + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_dbrpid(self, dbrp_id, dbrp_update, **kwargs): # noqa: E501,D401,D403 + """Update a database retention policy mapping. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_dbrpid(dbrp_id, dbrp_update, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dbrp_id: A DBRP mapping ID. Specifies the DBRP mapping. (required) + :param DBRPUpdate dbrp_update: Updates the database retention policy (DBRP) mapping and returns the mapping. Use this endpoint to modify the _retention policy_ (`retention_policy` property) of a DBRP mapping. #### Related guide - [Database and retention policy mapping](https://docs.influxdata.com/influxdb/latest/reference/api/influxdb-1x/dbrp/) (required) + :param str zap_trace_span: OpenTracing span context + :param str org_id: An organization ID. Specifies the organization that owns the DBRP mapping. + :param str org: An organization name. Specifies the organization that owns the DBRP mapping. + :return: DBRPGet + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_dbrpid_with_http_info(dbrp_id, dbrp_update, **kwargs) # noqa: E501 + else: + (data) = self.patch_dbrpid_with_http_info(dbrp_id, dbrp_update, **kwargs) # noqa: E501 + return data + + def patch_dbrpid_with_http_info(self, dbrp_id, dbrp_update, **kwargs): # noqa: E501,D401,D403 + """Update a database retention policy mapping. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_dbrpid_with_http_info(dbrp_id, dbrp_update, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dbrp_id: A DBRP mapping ID. Specifies the DBRP mapping. (required) + :param DBRPUpdate dbrp_update: Updates the database retention policy (DBRP) mapping and returns the mapping. Use this endpoint to modify the _retention policy_ (`retention_policy` property) of a DBRP mapping. #### Related guide - [Database and retention policy mapping](https://docs.influxdata.com/influxdb/latest/reference/api/influxdb-1x/dbrp/) (required) + :param str zap_trace_span: OpenTracing span context + :param str org_id: An organization ID. Specifies the organization that owns the DBRP mapping. + :param str org: An organization name. Specifies the organization that owns the DBRP mapping. + :return: DBRPGet + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_dbrpid_prepare(dbrp_id, dbrp_update, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dbrps/{dbrpID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='DBRPGet', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_dbrpid_async(self, dbrp_id, dbrp_update, **kwargs): # noqa: E501,D401,D403 + """Update a database retention policy mapping. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dbrp_id: A DBRP mapping ID. Specifies the DBRP mapping. (required) + :param DBRPUpdate dbrp_update: Updates the database retention policy (DBRP) mapping and returns the mapping. Use this endpoint to modify the _retention policy_ (`retention_policy` property) of a DBRP mapping. #### Related guide - [Database and retention policy mapping](https://docs.influxdata.com/influxdb/latest/reference/api/influxdb-1x/dbrp/) (required) + :param str zap_trace_span: OpenTracing span context + :param str org_id: An organization ID. Specifies the organization that owns the DBRP mapping. + :param str org: An organization name. Specifies the organization that owns the DBRP mapping. + :return: DBRPGet + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_dbrpid_prepare(dbrp_id, dbrp_update, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dbrps/{dbrpID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='DBRPGet', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_dbrpid_prepare(self, dbrp_id, dbrp_update, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dbrp_id', 'dbrp_update', 'zap_trace_span', 'org_id', 'org'] # noqa: E501 + self._check_operation_params('patch_dbrpid', all_params, local_var_params) + # verify the required parameter 'dbrp_id' is set + if ('dbrp_id' not in local_var_params or + local_var_params['dbrp_id'] is None): + raise ValueError("Missing the required parameter `dbrp_id` when calling `patch_dbrpid`") # noqa: E501 + # verify the required parameter 'dbrp_update' is set + if ('dbrp_update' not in local_var_params or + local_var_params['dbrp_update'] is None): + raise ValueError("Missing the required parameter `dbrp_update` when calling `patch_dbrpid`") # noqa: E501 + + path_params = {} + if 'dbrp_id' in local_var_params: + path_params['dbrpID'] = local_var_params['dbrp_id'] # noqa: E501 + + query_params = [] + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'dbrp_update' in local_var_params: + body_params = local_var_params['dbrp_update'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_dbrp(self, dbrp_create, **kwargs): # noqa: E501,D401,D403 + """Add a database retention policy mapping. + + Creates a database retention policy (DBRP) mapping and returns the mapping. Use this endpoint to add InfluxDB 1.x API compatibility to your InfluxDB Cloud or InfluxDB OSS 2.x buckets. Your buckets must contain a DBRP mapping in order to query and write using the InfluxDB 1.x API. object. #### Related guide - [Database and retention policy mapping](https://docs.influxdata.com/influxdb/latest/reference/api/influxdb-1x/dbrp/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_dbrp(dbrp_create, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param DBRPCreate dbrp_create: The database retention policy mapping to add. Note that _`retention_policy`_ is a required parameter in the request body. The value of _`retention_policy`_ can be any arbitrary `string` name or value, with the default value commonly set as `autogen`. The value of _`retention_policy`_ isn't a [retention_policy](https://docs.influxdata.com/influxdb/latest/reference/glossary/#retention-policy-rp) (required) + :param str zap_trace_span: OpenTracing span context + :return: DBRP + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_dbrp_with_http_info(dbrp_create, **kwargs) # noqa: E501 + else: + (data) = self.post_dbrp_with_http_info(dbrp_create, **kwargs) # noqa: E501 + return data + + def post_dbrp_with_http_info(self, dbrp_create, **kwargs): # noqa: E501,D401,D403 + """Add a database retention policy mapping. + + Creates a database retention policy (DBRP) mapping and returns the mapping. Use this endpoint to add InfluxDB 1.x API compatibility to your InfluxDB Cloud or InfluxDB OSS 2.x buckets. Your buckets must contain a DBRP mapping in order to query and write using the InfluxDB 1.x API. object. #### Related guide - [Database and retention policy mapping](https://docs.influxdata.com/influxdb/latest/reference/api/influxdb-1x/dbrp/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_dbrp_with_http_info(dbrp_create, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param DBRPCreate dbrp_create: The database retention policy mapping to add. Note that _`retention_policy`_ is a required parameter in the request body. The value of _`retention_policy`_ can be any arbitrary `string` name or value, with the default value commonly set as `autogen`. The value of _`retention_policy`_ isn't a [retention_policy](https://docs.influxdata.com/influxdb/latest/reference/glossary/#retention-policy-rp) (required) + :param str zap_trace_span: OpenTracing span context + :return: DBRP + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_dbrp_prepare(dbrp_create, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dbrps', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='DBRP', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_dbrp_async(self, dbrp_create, **kwargs): # noqa: E501,D401,D403 + """Add a database retention policy mapping. + + Creates a database retention policy (DBRP) mapping and returns the mapping. Use this endpoint to add InfluxDB 1.x API compatibility to your InfluxDB Cloud or InfluxDB OSS 2.x buckets. Your buckets must contain a DBRP mapping in order to query and write using the InfluxDB 1.x API. object. #### Related guide - [Database and retention policy mapping](https://docs.influxdata.com/influxdb/latest/reference/api/influxdb-1x/dbrp/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param DBRPCreate dbrp_create: The database retention policy mapping to add. Note that _`retention_policy`_ is a required parameter in the request body. The value of _`retention_policy`_ can be any arbitrary `string` name or value, with the default value commonly set as `autogen`. The value of _`retention_policy`_ isn't a [retention_policy](https://docs.influxdata.com/influxdb/latest/reference/glossary/#retention-policy-rp) (required) + :param str zap_trace_span: OpenTracing span context + :return: DBRP + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_dbrp_prepare(dbrp_create, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dbrps', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='DBRP', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_dbrp_prepare(self, dbrp_create, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dbrp_create', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_dbrp', all_params, local_var_params) + # verify the required parameter 'dbrp_create' is set + if ('dbrp_create' not in local_var_params or + local_var_params['dbrp_create'] is None): + raise ValueError("Missing the required parameter `dbrp_create` when calling `post_dbrp`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'dbrp_create' in local_var_params: + body_params = local_var_params['dbrp_create'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/delete_service.py b/frogpilot/third_party/influxdb_client/service/delete_service.py new file mode 100644 index 000000000..7fef4ea94 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/delete_service.py @@ -0,0 +1,173 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class DeleteService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """DeleteService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def post_delete(self, delete_predicate_request, **kwargs): # noqa: E501,D401,D403 + """Delete data. + + Deletes data from a bucket. Use this endpoint to delete points from a bucket in a specified time range. #### InfluxDB Cloud - Does the following when you send a delete request: 1. Validates the request and queues the delete. 2. If queued, responds with _success_ (HTTP `2xx` status code); _error_ otherwise. 3. Handles the delete asynchronously and reaches eventual consistency. To ensure that InfluxDB Cloud handles writes and deletes in the order you request them, wait for a success response (HTTP `2xx` status code) before you send the next request. Because writes and deletes are asynchronous, your change might not yet be readable when you receive the response. #### InfluxDB OSS - Validates the request, handles the delete synchronously, and then responds with success or failure. #### Required permissions - `write-buckets` or `write-bucket BUCKET_ID`. *`BUCKET_ID`* is the ID of the destination bucket. #### Rate limits (with InfluxDB Cloud) `write` rate limits apply. For more information, see [limits and adjustable quotas](https://docs.influxdata.com/influxdb/cloud/account-management/limits/). #### Related guides - [Delete data](https://docs.influxdata.com/influxdb/latest/write-data/delete-data/) - Learn how to use [delete predicate syntax](https://docs.influxdata.com/influxdb/latest/reference/syntax/delete-predicate/). - Learn how InfluxDB handles [deleted tags](https://docs.influxdata.com/flux/v0.x/stdlib/influxdata/influxdb/schema/measurementtagkeys/) and [deleted fields](https://docs.influxdata.com/flux/v0.x/stdlib/influxdata/influxdb/schema/measurementfieldkeys/). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_delete(delete_predicate_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param DeletePredicateRequest delete_predicate_request: Time range parameters and an optional **delete predicate expression**. To select points to delete within the specified time range, pass a **delete predicate expression** in the `predicate` property of the request body. If you don't pass a `predicate`, InfluxDB deletes all data with timestamps in the specified time range. #### Related guides - [Delete data](https://docs.influxdata.com/influxdb/latest/write-data/delete-data/) - Learn how to use [delete predicate syntax](https://docs.influxdata.com/influxdb/latest/reference/syntax/delete-predicate/). (required) + :param str zap_trace_span: OpenTracing span context + :param str org: An organization name or ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Deletes data from the bucket in the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or the `orgID` parameter. - Deletes data from the bucket in the specified organization. - If you pass both `orgID` and `org`, they must both be valid. + :param str bucket: A bucket name or ID. Specifies the bucket to delete data from. If you pass both `bucket` and `bucketID`, `bucketID` takes precedence. + :param str org_id: An organization ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Deletes data from the bucket in the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or the `orgID` parameter. - Deletes data from the bucket in the specified organization. - If you pass both `orgID` and `org`, they must both be valid. + :param str bucket_id: A bucket ID. Specifies the bucket to delete data from. If you pass both `bucket` and `bucketID`, `bucketID` takes precedence. + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_delete_with_http_info(delete_predicate_request, **kwargs) # noqa: E501 + else: + (data) = self.post_delete_with_http_info(delete_predicate_request, **kwargs) # noqa: E501 + return data + + def post_delete_with_http_info(self, delete_predicate_request, **kwargs): # noqa: E501,D401,D403 + """Delete data. + + Deletes data from a bucket. Use this endpoint to delete points from a bucket in a specified time range. #### InfluxDB Cloud - Does the following when you send a delete request: 1. Validates the request and queues the delete. 2. If queued, responds with _success_ (HTTP `2xx` status code); _error_ otherwise. 3. Handles the delete asynchronously and reaches eventual consistency. To ensure that InfluxDB Cloud handles writes and deletes in the order you request them, wait for a success response (HTTP `2xx` status code) before you send the next request. Because writes and deletes are asynchronous, your change might not yet be readable when you receive the response. #### InfluxDB OSS - Validates the request, handles the delete synchronously, and then responds with success or failure. #### Required permissions - `write-buckets` or `write-bucket BUCKET_ID`. *`BUCKET_ID`* is the ID of the destination bucket. #### Rate limits (with InfluxDB Cloud) `write` rate limits apply. For more information, see [limits and adjustable quotas](https://docs.influxdata.com/influxdb/cloud/account-management/limits/). #### Related guides - [Delete data](https://docs.influxdata.com/influxdb/latest/write-data/delete-data/) - Learn how to use [delete predicate syntax](https://docs.influxdata.com/influxdb/latest/reference/syntax/delete-predicate/). - Learn how InfluxDB handles [deleted tags](https://docs.influxdata.com/flux/v0.x/stdlib/influxdata/influxdb/schema/measurementtagkeys/) and [deleted fields](https://docs.influxdata.com/flux/v0.x/stdlib/influxdata/influxdb/schema/measurementfieldkeys/). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_delete_with_http_info(delete_predicate_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param DeletePredicateRequest delete_predicate_request: Time range parameters and an optional **delete predicate expression**. To select points to delete within the specified time range, pass a **delete predicate expression** in the `predicate` property of the request body. If you don't pass a `predicate`, InfluxDB deletes all data with timestamps in the specified time range. #### Related guides - [Delete data](https://docs.influxdata.com/influxdb/latest/write-data/delete-data/) - Learn how to use [delete predicate syntax](https://docs.influxdata.com/influxdb/latest/reference/syntax/delete-predicate/). (required) + :param str zap_trace_span: OpenTracing span context + :param str org: An organization name or ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Deletes data from the bucket in the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or the `orgID` parameter. - Deletes data from the bucket in the specified organization. - If you pass both `orgID` and `org`, they must both be valid. + :param str bucket: A bucket name or ID. Specifies the bucket to delete data from. If you pass both `bucket` and `bucketID`, `bucketID` takes precedence. + :param str org_id: An organization ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Deletes data from the bucket in the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or the `orgID` parameter. - Deletes data from the bucket in the specified organization. - If you pass both `orgID` and `org`, they must both be valid. + :param str bucket_id: A bucket ID. Specifies the bucket to delete data from. If you pass both `bucket` and `bucketID`, `bucketID` takes precedence. + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_delete_prepare(delete_predicate_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/delete', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_delete_async(self, delete_predicate_request, **kwargs): # noqa: E501,D401,D403 + """Delete data. + + Deletes data from a bucket. Use this endpoint to delete points from a bucket in a specified time range. #### InfluxDB Cloud - Does the following when you send a delete request: 1. Validates the request and queues the delete. 2. If queued, responds with _success_ (HTTP `2xx` status code); _error_ otherwise. 3. Handles the delete asynchronously and reaches eventual consistency. To ensure that InfluxDB Cloud handles writes and deletes in the order you request them, wait for a success response (HTTP `2xx` status code) before you send the next request. Because writes and deletes are asynchronous, your change might not yet be readable when you receive the response. #### InfluxDB OSS - Validates the request, handles the delete synchronously, and then responds with success or failure. #### Required permissions - `write-buckets` or `write-bucket BUCKET_ID`. *`BUCKET_ID`* is the ID of the destination bucket. #### Rate limits (with InfluxDB Cloud) `write` rate limits apply. For more information, see [limits and adjustable quotas](https://docs.influxdata.com/influxdb/cloud/account-management/limits/). #### Related guides - [Delete data](https://docs.influxdata.com/influxdb/latest/write-data/delete-data/) - Learn how to use [delete predicate syntax](https://docs.influxdata.com/influxdb/latest/reference/syntax/delete-predicate/). - Learn how InfluxDB handles [deleted tags](https://docs.influxdata.com/flux/v0.x/stdlib/influxdata/influxdb/schema/measurementtagkeys/) and [deleted fields](https://docs.influxdata.com/flux/v0.x/stdlib/influxdata/influxdb/schema/measurementfieldkeys/). + This method makes an asynchronous HTTP request. + + :param async_req bool + :param DeletePredicateRequest delete_predicate_request: Time range parameters and an optional **delete predicate expression**. To select points to delete within the specified time range, pass a **delete predicate expression** in the `predicate` property of the request body. If you don't pass a `predicate`, InfluxDB deletes all data with timestamps in the specified time range. #### Related guides - [Delete data](https://docs.influxdata.com/influxdb/latest/write-data/delete-data/) - Learn how to use [delete predicate syntax](https://docs.influxdata.com/influxdb/latest/reference/syntax/delete-predicate/). (required) + :param str zap_trace_span: OpenTracing span context + :param str org: An organization name or ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Deletes data from the bucket in the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or the `orgID` parameter. - Deletes data from the bucket in the specified organization. - If you pass both `orgID` and `org`, they must both be valid. + :param str bucket: A bucket name or ID. Specifies the bucket to delete data from. If you pass both `bucket` and `bucketID`, `bucketID` takes precedence. + :param str org_id: An organization ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Deletes data from the bucket in the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or the `orgID` parameter. - Deletes data from the bucket in the specified organization. - If you pass both `orgID` and `org`, they must both be valid. + :param str bucket_id: A bucket ID. Specifies the bucket to delete data from. If you pass both `bucket` and `bucketID`, `bucketID` takes precedence. + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_delete_prepare(delete_predicate_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/delete', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_delete_prepare(self, delete_predicate_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['delete_predicate_request', 'zap_trace_span', 'org', 'bucket', 'org_id', 'bucket_id'] # noqa: E501 + self._check_operation_params('post_delete', all_params, local_var_params) + # verify the required parameter 'delete_predicate_request' is set + if ('delete_predicate_request' not in local_var_params or + local_var_params['delete_predicate_request'] is None): + raise ValueError("Missing the required parameter `delete_predicate_request` when calling `post_delete`") # noqa: E501 + + path_params = {} + + query_params = [] + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + if 'bucket' in local_var_params: + query_params.append(('bucket', local_var_params['bucket'])) # noqa: E501 + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + if 'bucket_id' in local_var_params: + query_params.append(('bucketID', local_var_params['bucket_id'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'delete_predicate_request' in local_var_params: + body_params = local_var_params['delete_predicate_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/health_service.py b/frogpilot/third_party/influxdb_client/service/health_service.py new file mode 100644 index 000000000..6a87da7a4 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/health_service.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class HealthService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """HealthService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def get_health(self, **kwargs): # noqa: E501,D401,D403 + """Retrieve the health of the instance. + + Returns the health of the instance. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_health(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: HealthCheck + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_health_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_health_with_http_info(**kwargs) # noqa: E501 + return data + + def get_health_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """Retrieve the health of the instance. + + Returns the health of the instance. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_health_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: HealthCheck + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_health_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/health', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='HealthCheck', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_health_async(self, **kwargs): # noqa: E501,D401,D403 + """Retrieve the health of the instance. + + Returns the health of the instance. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: HealthCheck + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_health_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/health', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='HealthCheck', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_health_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span'] # noqa: E501 + self._check_operation_params('get_health', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/invokable_scripts_service.py b/frogpilot/third_party/influxdb_client/service/invokable_scripts_service.py new file mode 100644 index 000000000..9c84503d7 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/invokable_scripts_service.py @@ -0,0 +1,922 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class InvokableScriptsService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """InvokableScriptsService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def delete_scripts_id(self, script_id, **kwargs): # noqa: E501,D401,D403 + """Delete a script. + + Deletes a [script](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) and all associated records. #### Limitations - You can delete only one script per request. - If the script ID you provide doesn't exist for the organization, InfluxDB responds with an HTTP `204` status code. #### Related Guides - [Invoke custom scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_scripts_id(script_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str script_id: A script ID. Deletes the specified script. (required) + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_scripts_id_with_http_info(script_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_scripts_id_with_http_info(script_id, **kwargs) # noqa: E501 + return data + + def delete_scripts_id_with_http_info(self, script_id, **kwargs): # noqa: E501,D401,D403 + """Delete a script. + + Deletes a [script](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) and all associated records. #### Limitations - You can delete only one script per request. - If the script ID you provide doesn't exist for the organization, InfluxDB responds with an HTTP `204` status code. #### Related Guides - [Invoke custom scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_scripts_id_with_http_info(script_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str script_id: A script ID. Deletes the specified script. (required) + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not self._is_cloud_instance(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('InvokableScriptsService', + 'https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_scripts_id_prepare(script_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scripts/{scriptID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_scripts_id_async(self, script_id, **kwargs): # noqa: E501,D401,D403 + """Delete a script. + + Deletes a [script](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) and all associated records. #### Limitations - You can delete only one script per request. - If the script ID you provide doesn't exist for the organization, InfluxDB responds with an HTTP `204` status code. #### Related Guides - [Invoke custom scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str script_id: A script ID. Deletes the specified script. (required) + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not await self._is_cloud_instance_async(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('InvokableScriptsService', + 'https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_scripts_id_prepare(script_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scripts/{scriptID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_scripts_id_prepare(self, script_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['script_id'] # noqa: E501 + self._check_operation_params('delete_scripts_id', all_params, local_var_params) + # verify the required parameter 'script_id' is set + if ('script_id' not in local_var_params or + local_var_params['script_id'] is None): + raise ValueError("Missing the required parameter `script_id` when calling `delete_scripts_id`") # noqa: E501 + + path_params = {} + if 'script_id' in local_var_params: + path_params['scriptID'] = local_var_params['script_id'] # noqa: E501 + + query_params = [] + + header_params = {} + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_scripts(self, **kwargs): # noqa: E501,D401,D403 + """List scripts. + + Lists [scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/). #### Related guides - [Invoke custom scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_scripts(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination]({{% INFLUXDB_DOCS_URL %}}/api/#tag/Pagination). + :param int limit: The maximum number of scripts to return. Default is `100`. + :param str name: The script name. Lists scripts with the specified name. + :return: Scripts + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_scripts_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_scripts_with_http_info(**kwargs) # noqa: E501 + return data + + def get_scripts_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """List scripts. + + Lists [scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/). #### Related guides - [Invoke custom scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_scripts_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination]({{% INFLUXDB_DOCS_URL %}}/api/#tag/Pagination). + :param int limit: The maximum number of scripts to return. Default is `100`. + :param str name: The script name. Lists scripts with the specified name. + :return: Scripts + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not self._is_cloud_instance(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('InvokableScriptsService', + 'https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_scripts_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scripts', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Scripts', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_scripts_async(self, **kwargs): # noqa: E501,D401,D403 + """List scripts. + + Lists [scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/). #### Related guides - [Invoke custom scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination]({{% INFLUXDB_DOCS_URL %}}/api/#tag/Pagination). + :param int limit: The maximum number of scripts to return. Default is `100`. + :param str name: The script name. Lists scripts with the specified name. + :return: Scripts + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not await self._is_cloud_instance_async(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('InvokableScriptsService', + 'https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_scripts_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scripts', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Scripts', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_scripts_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['offset', 'limit', 'name'] # noqa: E501 + self._check_operation_params('get_scripts', all_params, local_var_params) + + if 'offset' in local_var_params and local_var_params['offset'] < 0: # noqa: E501 + raise ValueError("Invalid value for parameter `offset` when calling `get_scripts`, must be a value greater than or equal to `0`") # noqa: E501 + if 'limit' in local_var_params and local_var_params['limit'] > 500: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_scripts`, must be a value less than or equal to `500`") # noqa: E501 + if 'limit' in local_var_params and local_var_params['limit'] < 0: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_scripts`, must be a value greater than or equal to `0`") # noqa: E501 + path_params = {} + + query_params = [] + if 'offset' in local_var_params: + query_params.append(('offset', local_var_params['offset'])) # noqa: E501 + if 'limit' in local_var_params: + query_params.append(('limit', local_var_params['limit'])) # noqa: E501 + if 'name' in local_var_params: + query_params.append(('name', local_var_params['name'])) # noqa: E501 + + header_params = {} + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_scripts_id(self, script_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a script. + + Retrieves a [script](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/). #### Related Guides - [Invoke custom scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_scripts_id(script_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str script_id: A script ID. Retrieves the specified script. (required) + :return: Script + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_scripts_id_with_http_info(script_id, **kwargs) # noqa: E501 + else: + (data) = self.get_scripts_id_with_http_info(script_id, **kwargs) # noqa: E501 + return data + + def get_scripts_id_with_http_info(self, script_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a script. + + Retrieves a [script](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/). #### Related Guides - [Invoke custom scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_scripts_id_with_http_info(script_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str script_id: A script ID. Retrieves the specified script. (required) + :return: Script + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not self._is_cloud_instance(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('InvokableScriptsService', + 'https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_scripts_id_prepare(script_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scripts/{scriptID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Script', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_scripts_id_async(self, script_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a script. + + Retrieves a [script](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/). #### Related Guides - [Invoke custom scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str script_id: A script ID. Retrieves the specified script. (required) + :return: Script + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not await self._is_cloud_instance_async(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('InvokableScriptsService', + 'https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_scripts_id_prepare(script_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scripts/{scriptID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Script', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_scripts_id_prepare(self, script_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['script_id'] # noqa: E501 + self._check_operation_params('get_scripts_id', all_params, local_var_params) + # verify the required parameter 'script_id' is set + if ('script_id' not in local_var_params or + local_var_params['script_id'] is None): + raise ValueError("Missing the required parameter `script_id` when calling `get_scripts_id`") # noqa: E501 + + path_params = {} + if 'script_id' in local_var_params: + path_params['scriptID'] = local_var_params['script_id'] # noqa: E501 + + query_params = [] + + header_params = {} + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_scripts_id_params(self, script_id, **kwargs): # noqa: E501,D401,D403 + """Find script parameters.. + + Analyzes a script and determines required parameters. Find all `params` keys referenced in a script and return a list of keys. If it is possible to determine the type of the value from the context then the type is also returned -- for example: The following sample script contains a _`mybucket`_ parameter : ```json "script": "from(bucket: params.mybucket) |> range(start: -7d) |> limit(n:1)" ``` Requesting the parameters using `GET /api/v2/scripts/SCRIPT_ID/params` returns the following: ```json { "params": { "mybucket": "string" } } ``` The type name returned for a parameter will be one of: - `any` - `bool` - `duration` - `float` - `int` - `string` - `time` - `uint` The type name `any` is used when the type of a parameter cannot be determined from the context, or the type is determined to be a structured type such as an array or record. #### Related guides - [Invoke custom scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_scripts_id_params(script_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str script_id: A script ID. The script to analyze for params. (required) + :return: Params + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_scripts_id_params_with_http_info(script_id, **kwargs) # noqa: E501 + else: + (data) = self.get_scripts_id_params_with_http_info(script_id, **kwargs) # noqa: E501 + return data + + def get_scripts_id_params_with_http_info(self, script_id, **kwargs): # noqa: E501,D401,D403 + """Find script parameters.. + + Analyzes a script and determines required parameters. Find all `params` keys referenced in a script and return a list of keys. If it is possible to determine the type of the value from the context then the type is also returned -- for example: The following sample script contains a _`mybucket`_ parameter : ```json "script": "from(bucket: params.mybucket) |> range(start: -7d) |> limit(n:1)" ``` Requesting the parameters using `GET /api/v2/scripts/SCRIPT_ID/params` returns the following: ```json { "params": { "mybucket": "string" } } ``` The type name returned for a parameter will be one of: - `any` - `bool` - `duration` - `float` - `int` - `string` - `time` - `uint` The type name `any` is used when the type of a parameter cannot be determined from the context, or the type is determined to be a structured type such as an array or record. #### Related guides - [Invoke custom scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_scripts_id_params_with_http_info(script_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str script_id: A script ID. The script to analyze for params. (required) + :return: Params + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not self._is_cloud_instance(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('InvokableScriptsService', + 'https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_scripts_id_params_prepare(script_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scripts/{scriptID}/params', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Params', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_scripts_id_params_async(self, script_id, **kwargs): # noqa: E501,D401,D403 + """Find script parameters.. + + Analyzes a script and determines required parameters. Find all `params` keys referenced in a script and return a list of keys. If it is possible to determine the type of the value from the context then the type is also returned -- for example: The following sample script contains a _`mybucket`_ parameter : ```json "script": "from(bucket: params.mybucket) |> range(start: -7d) |> limit(n:1)" ``` Requesting the parameters using `GET /api/v2/scripts/SCRIPT_ID/params` returns the following: ```json { "params": { "mybucket": "string" } } ``` The type name returned for a parameter will be one of: - `any` - `bool` - `duration` - `float` - `int` - `string` - `time` - `uint` The type name `any` is used when the type of a parameter cannot be determined from the context, or the type is determined to be a structured type such as an array or record. #### Related guides - [Invoke custom scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str script_id: A script ID. The script to analyze for params. (required) + :return: Params + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not await self._is_cloud_instance_async(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('InvokableScriptsService', + 'https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_scripts_id_params_prepare(script_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scripts/{scriptID}/params', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Params', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_scripts_id_params_prepare(self, script_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['script_id'] # noqa: E501 + self._check_operation_params('get_scripts_id_params', all_params, local_var_params) + # verify the required parameter 'script_id' is set + if ('script_id' not in local_var_params or + local_var_params['script_id'] is None): + raise ValueError("Missing the required parameter `script_id` when calling `get_scripts_id_params`") # noqa: E501 + + path_params = {} + if 'script_id' in local_var_params: + path_params['scriptID'] = local_var_params['script_id'] # noqa: E501 + + query_params = [] + + header_params = {} + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_scripts_id(self, script_id, script_update_request, **kwargs): # noqa: E501,D401,D403 + """Update a script. + + Updates an invokable script. Use this endpoint to modify values for script properties (`description` and `script`). To update a script, pass an object that contains the updated key-value pairs. #### Limitations - If you send an empty request body, the script will neither update nor store an empty script, but InfluxDB will respond with an HTTP `200` status code. #### Related Guides - [Invoke custom scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_scripts_id(script_id, script_update_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str script_id: A script ID. Updates the specified script. (required) + :param ScriptUpdateRequest script_update_request: An object that contains the updated script properties to apply. (required) + :return: Script + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_scripts_id_with_http_info(script_id, script_update_request, **kwargs) # noqa: E501 + else: + (data) = self.patch_scripts_id_with_http_info(script_id, script_update_request, **kwargs) # noqa: E501 + return data + + def patch_scripts_id_with_http_info(self, script_id, script_update_request, **kwargs): # noqa: E501,D401,D403 + """Update a script. + + Updates an invokable script. Use this endpoint to modify values for script properties (`description` and `script`). To update a script, pass an object that contains the updated key-value pairs. #### Limitations - If you send an empty request body, the script will neither update nor store an empty script, but InfluxDB will respond with an HTTP `200` status code. #### Related Guides - [Invoke custom scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_scripts_id_with_http_info(script_id, script_update_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str script_id: A script ID. Updates the specified script. (required) + :param ScriptUpdateRequest script_update_request: An object that contains the updated script properties to apply. (required) + :return: Script + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not self._is_cloud_instance(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('InvokableScriptsService', + 'https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_scripts_id_prepare(script_id, script_update_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scripts/{scriptID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Script', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_scripts_id_async(self, script_id, script_update_request, **kwargs): # noqa: E501,D401,D403 + """Update a script. + + Updates an invokable script. Use this endpoint to modify values for script properties (`description` and `script`). To update a script, pass an object that contains the updated key-value pairs. #### Limitations - If you send an empty request body, the script will neither update nor store an empty script, but InfluxDB will respond with an HTTP `200` status code. #### Related Guides - [Invoke custom scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str script_id: A script ID. Updates the specified script. (required) + :param ScriptUpdateRequest script_update_request: An object that contains the updated script properties to apply. (required) + :return: Script + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not await self._is_cloud_instance_async(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('InvokableScriptsService', + 'https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_scripts_id_prepare(script_id, script_update_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scripts/{scriptID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Script', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_scripts_id_prepare(self, script_id, script_update_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['script_id', 'script_update_request'] # noqa: E501 + self._check_operation_params('patch_scripts_id', all_params, local_var_params) + # verify the required parameter 'script_id' is set + if ('script_id' not in local_var_params or + local_var_params['script_id'] is None): + raise ValueError("Missing the required parameter `script_id` when calling `patch_scripts_id`") # noqa: E501 + # verify the required parameter 'script_update_request' is set + if ('script_update_request' not in local_var_params or + local_var_params['script_update_request'] is None): + raise ValueError("Missing the required parameter `script_update_request` when calling `patch_scripts_id`") # noqa: E501 + + path_params = {} + if 'script_id' in local_var_params: + path_params['scriptID'] = local_var_params['script_id'] # noqa: E501 + + query_params = [] + + header_params = {} + + body_params = None + if 'script_update_request' in local_var_params: + body_params = local_var_params['script_update_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_scripts(self, script_create_request, **kwargs): # noqa: E501,D401,D403 + """Create a script. + + Creates an [invokable script](https://docs.influxdata.com/resources/videos/api-invokable-scripts/) and returns the script. #### Related guides - [Invokable scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) - [Creating custom InfluxDB endpoints](https://docs.influxdata.com/resources/videos/api-invokable-scripts/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_scripts(script_create_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param ScriptCreateRequest script_create_request: The script to create. (required) + :return: Script + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_scripts_with_http_info(script_create_request, **kwargs) # noqa: E501 + else: + (data) = self.post_scripts_with_http_info(script_create_request, **kwargs) # noqa: E501 + return data + + def post_scripts_with_http_info(self, script_create_request, **kwargs): # noqa: E501,D401,D403 + """Create a script. + + Creates an [invokable script](https://docs.influxdata.com/resources/videos/api-invokable-scripts/) and returns the script. #### Related guides - [Invokable scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) - [Creating custom InfluxDB endpoints](https://docs.influxdata.com/resources/videos/api-invokable-scripts/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_scripts_with_http_info(script_create_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param ScriptCreateRequest script_create_request: The script to create. (required) + :return: Script + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not self._is_cloud_instance(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('InvokableScriptsService', + 'https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_scripts_prepare(script_create_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scripts', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Script', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_scripts_async(self, script_create_request, **kwargs): # noqa: E501,D401,D403 + """Create a script. + + Creates an [invokable script](https://docs.influxdata.com/resources/videos/api-invokable-scripts/) and returns the script. #### Related guides - [Invokable scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) - [Creating custom InfluxDB endpoints](https://docs.influxdata.com/resources/videos/api-invokable-scripts/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param ScriptCreateRequest script_create_request: The script to create. (required) + :return: Script + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not await self._is_cloud_instance_async(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('InvokableScriptsService', + 'https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_scripts_prepare(script_create_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scripts', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Script', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_scripts_prepare(self, script_create_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['script_create_request'] # noqa: E501 + self._check_operation_params('post_scripts', all_params, local_var_params) + # verify the required parameter 'script_create_request' is set + if ('script_create_request' not in local_var_params or + local_var_params['script_create_request'] is None): + raise ValueError("Missing the required parameter `script_create_request` when calling `post_scripts`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + + body_params = None + if 'script_create_request' in local_var_params: + body_params = local_var_params['script_create_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_scripts_id_invoke(self, script_id, **kwargs): # noqa: E501,D401,D403 + """Invoke a script. + + Runs a script and returns the result. When the script runs, InfluxDB replaces `params` keys referenced in the script with `params` key-values passed in the request body--for example: The following sample script contains a _`mybucket`_ parameter : ```json "script": "from(bucket: params.mybucket) |> range(start: -7d) |> limit(n:1)" ``` The following example `POST /api/v2/scripts/SCRIPT_ID/invoke` request body passes a value for the _`mybucket`_ parameter: ```json { "params": { "mybucket": "air_sensor" } } ``` #### Related guides - [Invoke custom scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_scripts_id_invoke(script_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str script_id: A script ID. Runs the specified script. (required) + :param ScriptInvocationParams script_invocation_params: + :return: file + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_scripts_id_invoke_with_http_info(script_id, **kwargs) # noqa: E501 + else: + (data) = self.post_scripts_id_invoke_with_http_info(script_id, **kwargs) # noqa: E501 + return data + + def post_scripts_id_invoke_with_http_info(self, script_id, **kwargs): # noqa: E501,D401,D403 + """Invoke a script. + + Runs a script and returns the result. When the script runs, InfluxDB replaces `params` keys referenced in the script with `params` key-values passed in the request body--for example: The following sample script contains a _`mybucket`_ parameter : ```json "script": "from(bucket: params.mybucket) |> range(start: -7d) |> limit(n:1)" ``` The following example `POST /api/v2/scripts/SCRIPT_ID/invoke` request body passes a value for the _`mybucket`_ parameter: ```json { "params": { "mybucket": "air_sensor" } } ``` #### Related guides - [Invoke custom scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_scripts_id_invoke_with_http_info(script_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str script_id: A script ID. Runs the specified script. (required) + :param ScriptInvocationParams script_invocation_params: + :return: file + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not self._is_cloud_instance(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('InvokableScriptsService', + 'https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_scripts_id_invoke_prepare(script_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scripts/{scriptID}/invoke', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='file', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_scripts_id_invoke_async(self, script_id, **kwargs): # noqa: E501,D401,D403 + """Invoke a script. + + Runs a script and returns the result. When the script runs, InfluxDB replaces `params` keys referenced in the script with `params` key-values passed in the request body--for example: The following sample script contains a _`mybucket`_ parameter : ```json "script": "from(bucket: params.mybucket) |> range(start: -7d) |> limit(n:1)" ``` The following example `POST /api/v2/scripts/SCRIPT_ID/invoke` request body passes a value for the _`mybucket`_ parameter: ```json { "params": { "mybucket": "air_sensor" } } ``` #### Related guides - [Invoke custom scripts](https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str script_id: A script ID. Runs the specified script. (required) + :param ScriptInvocationParams script_invocation_params: + :return: file + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + if not await self._is_cloud_instance_async(): + from influxdb_client.client.warnings import CloudOnlyWarning + CloudOnlyWarning.print_warning('InvokableScriptsService', + 'https://docs.influxdata.com/influxdb/cloud/api-guide/api-invokable-scripts/') # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_scripts_id_invoke_prepare(script_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scripts/{scriptID}/invoke', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='file', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_scripts_id_invoke_prepare(self, script_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['script_id', 'script_invocation_params'] # noqa: E501 + self._check_operation_params('post_scripts_id_invoke', all_params, local_var_params) + # verify the required parameter 'script_id' is set + if ('script_id' not in local_var_params or + local_var_params['script_id'] is None): + raise ValueError("Missing the required parameter `script_id` when calling `post_scripts_id_invoke`") # noqa: E501 + + path_params = {} + if 'script_id' in local_var_params: + path_params['scriptID'] = local_var_params['script_id'] # noqa: E501 + + query_params = [] + + header_params = {} + + body_params = None + if 'script_invocation_params' in local_var_params: + body_params = local_var_params['script_invocation_params'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['text/csv', 'application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/labels_service.py b/frogpilot/third_party/influxdb_client/service/labels_service.py new file mode 100644 index 000000000..aa88f41d3 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/labels_service.py @@ -0,0 +1,618 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class LabelsService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """LabelsService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def delete_labels_id(self, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_labels_id(label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_labels_id_with_http_info(label_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_labels_id_with_http_info(label_id, **kwargs) # noqa: E501 + return data + + def delete_labels_id_with_http_info(self, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_labels_id_with_http_info(label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_labels_id_prepare(label_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_labels_id_async(self, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_labels_id_prepare(label_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_labels_id_prepare(self, label_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['label_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_labels_id', all_params, local_var_params) + # verify the required parameter 'label_id' is set + if ('label_id' not in local_var_params or + local_var_params['label_id'] is None): + raise ValueError("Missing the required parameter `label_id` when calling `delete_labels_id`") # noqa: E501 + + path_params = {} + if 'label_id' in local_var_params: + path_params['labelID'] = local_var_params['label_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_labels(self, **kwargs): # noqa: E501,D401,D403 + """List all labels. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_labels(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str org_id: The organization ID. + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_labels_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_labels_with_http_info(**kwargs) # noqa: E501 + return data + + def get_labels_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """List all labels. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_labels_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str org_id: The organization ID. + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_labels_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_labels_async(self, **kwargs): # noqa: E501,D401,D403 + """List all labels. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str org_id: The organization ID. + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_labels_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_labels_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span', 'org_id'] # noqa: E501 + self._check_operation_params('get_labels', all_params, local_var_params) + + path_params = {} + + query_params = [] + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_labels_id(self, label_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a label. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_labels_id(label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str label_id: The ID of the label to update. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_labels_id_with_http_info(label_id, **kwargs) # noqa: E501 + else: + (data) = self.get_labels_id_with_http_info(label_id, **kwargs) # noqa: E501 + return data + + def get_labels_id_with_http_info(self, label_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a label. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_labels_id_with_http_info(label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str label_id: The ID of the label to update. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_labels_id_prepare(label_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/labels/{labelID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_labels_id_async(self, label_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a label. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str label_id: The ID of the label to update. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_labels_id_prepare(label_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/labels/{labelID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_labels_id_prepare(self, label_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['label_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_labels_id', all_params, local_var_params) + # verify the required parameter 'label_id' is set + if ('label_id' not in local_var_params or + local_var_params['label_id'] is None): + raise ValueError("Missing the required parameter `label_id` when calling `get_labels_id`") # noqa: E501 + + path_params = {} + if 'label_id' in local_var_params: + path_params['labelID'] = local_var_params['label_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_labels_id(self, label_id, label_update, **kwargs): # noqa: E501,D401,D403 + """Update a label. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_labels_id(label_id, label_update, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str label_id: The ID of the label to update. (required) + :param LabelUpdate label_update: A label update. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_labels_id_with_http_info(label_id, label_update, **kwargs) # noqa: E501 + else: + (data) = self.patch_labels_id_with_http_info(label_id, label_update, **kwargs) # noqa: E501 + return data + + def patch_labels_id_with_http_info(self, label_id, label_update, **kwargs): # noqa: E501,D401,D403 + """Update a label. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_labels_id_with_http_info(label_id, label_update, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str label_id: The ID of the label to update. (required) + :param LabelUpdate label_update: A label update. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_labels_id_prepare(label_id, label_update, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/labels/{labelID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_labels_id_async(self, label_id, label_update, **kwargs): # noqa: E501,D401,D403 + """Update a label. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str label_id: The ID of the label to update. (required) + :param LabelUpdate label_update: A label update. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_labels_id_prepare(label_id, label_update, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/labels/{labelID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_labels_id_prepare(self, label_id, label_update, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['label_id', 'label_update', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_labels_id', all_params, local_var_params) + # verify the required parameter 'label_id' is set + if ('label_id' not in local_var_params or + local_var_params['label_id'] is None): + raise ValueError("Missing the required parameter `label_id` when calling `patch_labels_id`") # noqa: E501 + # verify the required parameter 'label_update' is set + if ('label_update' not in local_var_params or + local_var_params['label_update'] is None): + raise ValueError("Missing the required parameter `label_update` when calling `patch_labels_id`") # noqa: E501 + + path_params = {} + if 'label_id' in local_var_params: + path_params['labelID'] = local_var_params['label_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'label_update' in local_var_params: + body_params = local_var_params['label_update'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_labels(self, label_create_request, **kwargs): # noqa: E501,D401,D403 + """Create a label. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_labels(label_create_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param LabelCreateRequest label_create_request: The label to create. (required) + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_labels_with_http_info(label_create_request, **kwargs) # noqa: E501 + else: + (data) = self.post_labels_with_http_info(label_create_request, **kwargs) # noqa: E501 + return data + + def post_labels_with_http_info(self, label_create_request, **kwargs): # noqa: E501,D401,D403 + """Create a label. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_labels_with_http_info(label_create_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param LabelCreateRequest label_create_request: The label to create. (required) + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_labels_prepare(label_create_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_labels_async(self, label_create_request, **kwargs): # noqa: E501,D401,D403 + """Create a label. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param LabelCreateRequest label_create_request: The label to create. (required) + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_labels_prepare(label_create_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_labels_prepare(self, label_create_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['label_create_request'] # noqa: E501 + self._check_operation_params('post_labels', all_params, local_var_params) + # verify the required parameter 'label_create_request' is set + if ('label_create_request' not in local_var_params or + local_var_params['label_create_request'] is None): + raise ValueError("Missing the required parameter `label_create_request` when calling `post_labels`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + + body_params = None + if 'label_create_request' in local_var_params: + body_params = local_var_params['label_create_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/legacy_authorizations_service.py b/frogpilot/third_party/influxdb_client/service/legacy_authorizations_service.py new file mode 100644 index 000000000..622ef49c6 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/legacy_authorizations_service.py @@ -0,0 +1,777 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class LegacyAuthorizationsService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """LegacyAuthorizationsService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def delete_legacy_authorizations_id(self, auth_id, **kwargs): # noqa: E501,D401,D403 + """Delete a legacy authorization. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_legacy_authorizations_id(auth_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str auth_id: The ID of the legacy authorization to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_legacy_authorizations_id_with_http_info(auth_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_legacy_authorizations_id_with_http_info(auth_id, **kwargs) # noqa: E501 + return data + + def delete_legacy_authorizations_id_with_http_info(self, auth_id, **kwargs): # noqa: E501,D401,D403 + """Delete a legacy authorization. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_legacy_authorizations_id_with_http_info(auth_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str auth_id: The ID of the legacy authorization to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_legacy_authorizations_id_prepare(auth_id, **kwargs) + + return self.api_client.call_api( + '/private/legacy/authorizations/{authID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_legacy_authorizations_id_async(self, auth_id, **kwargs): # noqa: E501,D401,D403 + """Delete a legacy authorization. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str auth_id: The ID of the legacy authorization to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_legacy_authorizations_id_prepare(auth_id, **kwargs) + + return await self.api_client.call_api( + '/private/legacy/authorizations/{authID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_legacy_authorizations_id_prepare(self, auth_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['auth_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_legacy_authorizations_id', all_params, local_var_params) + # verify the required parameter 'auth_id' is set + if ('auth_id' not in local_var_params or + local_var_params['auth_id'] is None): + raise ValueError("Missing the required parameter `auth_id` when calling `delete_legacy_authorizations_id`") # noqa: E501 + + path_params = {} + if 'auth_id' in local_var_params: + path_params['authID'] = local_var_params['auth_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_legacy_authorizations(self, **kwargs): # noqa: E501,D401,D403 + """List all legacy authorizations. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_legacy_authorizations(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str user_id: Only show legacy authorizations that belong to a user ID. + :param str user: Only show legacy authorizations that belong to a user name. + :param str org_id: Only show legacy authorizations that belong to an organization ID. + :param str org: Only show legacy authorizations that belong to a organization name. + :param str token: Only show legacy authorizations with a specified token (auth name). + :param str auth_id: Only show legacy authorizations with a specified auth ID. + :return: Authorizations + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_legacy_authorizations_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_legacy_authorizations_with_http_info(**kwargs) # noqa: E501 + return data + + def get_legacy_authorizations_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """List all legacy authorizations. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_legacy_authorizations_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str user_id: Only show legacy authorizations that belong to a user ID. + :param str user: Only show legacy authorizations that belong to a user name. + :param str org_id: Only show legacy authorizations that belong to an organization ID. + :param str org: Only show legacy authorizations that belong to a organization name. + :param str token: Only show legacy authorizations with a specified token (auth name). + :param str auth_id: Only show legacy authorizations with a specified auth ID. + :return: Authorizations + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_legacy_authorizations_prepare(**kwargs) + + return self.api_client.call_api( + '/private/legacy/authorizations', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Authorizations', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_legacy_authorizations_async(self, **kwargs): # noqa: E501,D401,D403 + """List all legacy authorizations. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str user_id: Only show legacy authorizations that belong to a user ID. + :param str user: Only show legacy authorizations that belong to a user name. + :param str org_id: Only show legacy authorizations that belong to an organization ID. + :param str org: Only show legacy authorizations that belong to a organization name. + :param str token: Only show legacy authorizations with a specified token (auth name). + :param str auth_id: Only show legacy authorizations with a specified auth ID. + :return: Authorizations + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_legacy_authorizations_prepare(**kwargs) + + return await self.api_client.call_api( + '/private/legacy/authorizations', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Authorizations', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_legacy_authorizations_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span', 'user_id', 'user', 'org_id', 'org', 'token', 'auth_id'] # noqa: E501 + self._check_operation_params('get_legacy_authorizations', all_params, local_var_params) + + path_params = {} + + query_params = [] + if 'user_id' in local_var_params: + query_params.append(('userID', local_var_params['user_id'])) # noqa: E501 + if 'user' in local_var_params: + query_params.append(('user', local_var_params['user'])) # noqa: E501 + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + if 'token' in local_var_params: + query_params.append(('token', local_var_params['token'])) # noqa: E501 + if 'auth_id' in local_var_params: + query_params.append(('authID', local_var_params['auth_id'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_legacy_authorizations_id(self, auth_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a legacy authorization. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_legacy_authorizations_id(auth_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str auth_id: The ID of the legacy authorization to get. (required) + :param str zap_trace_span: OpenTracing span context + :return: Authorization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_legacy_authorizations_id_with_http_info(auth_id, **kwargs) # noqa: E501 + else: + (data) = self.get_legacy_authorizations_id_with_http_info(auth_id, **kwargs) # noqa: E501 + return data + + def get_legacy_authorizations_id_with_http_info(self, auth_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a legacy authorization. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_legacy_authorizations_id_with_http_info(auth_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str auth_id: The ID of the legacy authorization to get. (required) + :param str zap_trace_span: OpenTracing span context + :return: Authorization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_legacy_authorizations_id_prepare(auth_id, **kwargs) + + return self.api_client.call_api( + '/private/legacy/authorizations/{authID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Authorization', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_legacy_authorizations_id_async(self, auth_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a legacy authorization. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str auth_id: The ID of the legacy authorization to get. (required) + :param str zap_trace_span: OpenTracing span context + :return: Authorization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_legacy_authorizations_id_prepare(auth_id, **kwargs) + + return await self.api_client.call_api( + '/private/legacy/authorizations/{authID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Authorization', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_legacy_authorizations_id_prepare(self, auth_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['auth_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_legacy_authorizations_id', all_params, local_var_params) + # verify the required parameter 'auth_id' is set + if ('auth_id' not in local_var_params or + local_var_params['auth_id'] is None): + raise ValueError("Missing the required parameter `auth_id` when calling `get_legacy_authorizations_id`") # noqa: E501 + + path_params = {} + if 'auth_id' in local_var_params: + path_params['authID'] = local_var_params['auth_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_legacy_authorizations_id(self, auth_id, authorization_update_request, **kwargs): # noqa: E501,D401,D403 + """Update a legacy authorization to be active or inactive. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_legacy_authorizations_id(auth_id, authorization_update_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str auth_id: The ID of the legacy authorization to update. (required) + :param AuthorizationUpdateRequest authorization_update_request: Legacy authorization to update (required) + :param str zap_trace_span: OpenTracing span context + :return: Authorization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_legacy_authorizations_id_with_http_info(auth_id, authorization_update_request, **kwargs) # noqa: E501 + else: + (data) = self.patch_legacy_authorizations_id_with_http_info(auth_id, authorization_update_request, **kwargs) # noqa: E501 + return data + + def patch_legacy_authorizations_id_with_http_info(self, auth_id, authorization_update_request, **kwargs): # noqa: E501,D401,D403 + """Update a legacy authorization to be active or inactive. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_legacy_authorizations_id_with_http_info(auth_id, authorization_update_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str auth_id: The ID of the legacy authorization to update. (required) + :param AuthorizationUpdateRequest authorization_update_request: Legacy authorization to update (required) + :param str zap_trace_span: OpenTracing span context + :return: Authorization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_legacy_authorizations_id_prepare(auth_id, authorization_update_request, **kwargs) + + return self.api_client.call_api( + '/private/legacy/authorizations/{authID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Authorization', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_legacy_authorizations_id_async(self, auth_id, authorization_update_request, **kwargs): # noqa: E501,D401,D403 + """Update a legacy authorization to be active or inactive. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str auth_id: The ID of the legacy authorization to update. (required) + :param AuthorizationUpdateRequest authorization_update_request: Legacy authorization to update (required) + :param str zap_trace_span: OpenTracing span context + :return: Authorization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_legacy_authorizations_id_prepare(auth_id, authorization_update_request, **kwargs) + + return await self.api_client.call_api( + '/private/legacy/authorizations/{authID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Authorization', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_legacy_authorizations_id_prepare(self, auth_id, authorization_update_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['auth_id', 'authorization_update_request', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_legacy_authorizations_id', all_params, local_var_params) + # verify the required parameter 'auth_id' is set + if ('auth_id' not in local_var_params or + local_var_params['auth_id'] is None): + raise ValueError("Missing the required parameter `auth_id` when calling `patch_legacy_authorizations_id`") # noqa: E501 + # verify the required parameter 'authorization_update_request' is set + if ('authorization_update_request' not in local_var_params or + local_var_params['authorization_update_request'] is None): + raise ValueError("Missing the required parameter `authorization_update_request` when calling `patch_legacy_authorizations_id`") # noqa: E501 + + path_params = {} + if 'auth_id' in local_var_params: + path_params['authID'] = local_var_params['auth_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'authorization_update_request' in local_var_params: + body_params = local_var_params['authorization_update_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_legacy_authorizations(self, legacy_authorization_post_request, **kwargs): # noqa: E501,D401,D403 + """Create a legacy authorization. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_legacy_authorizations(legacy_authorization_post_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param LegacyAuthorizationPostRequest legacy_authorization_post_request: Legacy authorization to create (required) + :param str zap_trace_span: OpenTracing span context + :return: Authorization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_legacy_authorizations_with_http_info(legacy_authorization_post_request, **kwargs) # noqa: E501 + else: + (data) = self.post_legacy_authorizations_with_http_info(legacy_authorization_post_request, **kwargs) # noqa: E501 + return data + + def post_legacy_authorizations_with_http_info(self, legacy_authorization_post_request, **kwargs): # noqa: E501,D401,D403 + """Create a legacy authorization. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_legacy_authorizations_with_http_info(legacy_authorization_post_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param LegacyAuthorizationPostRequest legacy_authorization_post_request: Legacy authorization to create (required) + :param str zap_trace_span: OpenTracing span context + :return: Authorization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_legacy_authorizations_prepare(legacy_authorization_post_request, **kwargs) + + return self.api_client.call_api( + '/private/legacy/authorizations', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Authorization', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_legacy_authorizations_async(self, legacy_authorization_post_request, **kwargs): # noqa: E501,D401,D403 + """Create a legacy authorization. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param LegacyAuthorizationPostRequest legacy_authorization_post_request: Legacy authorization to create (required) + :param str zap_trace_span: OpenTracing span context + :return: Authorization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_legacy_authorizations_prepare(legacy_authorization_post_request, **kwargs) + + return await self.api_client.call_api( + '/private/legacy/authorizations', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Authorization', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_legacy_authorizations_prepare(self, legacy_authorization_post_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['legacy_authorization_post_request', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_legacy_authorizations', all_params, local_var_params) + # verify the required parameter 'legacy_authorization_post_request' is set + if ('legacy_authorization_post_request' not in local_var_params or + local_var_params['legacy_authorization_post_request'] is None): + raise ValueError("Missing the required parameter `legacy_authorization_post_request` when calling `post_legacy_authorizations`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'legacy_authorization_post_request' in local_var_params: + body_params = local_var_params['legacy_authorization_post_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_legacy_authorizations_id_password(self, auth_id, password_reset_body, **kwargs): # noqa: E501,D401,D403 + """Set a legacy authorization password. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_legacy_authorizations_id_password(auth_id, password_reset_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str auth_id: The ID of the legacy authorization to update. (required) + :param PasswordResetBody password_reset_body: New password (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_legacy_authorizations_id_password_with_http_info(auth_id, password_reset_body, **kwargs) # noqa: E501 + else: + (data) = self.post_legacy_authorizations_id_password_with_http_info(auth_id, password_reset_body, **kwargs) # noqa: E501 + return data + + def post_legacy_authorizations_id_password_with_http_info(self, auth_id, password_reset_body, **kwargs): # noqa: E501,D401,D403 + """Set a legacy authorization password. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_legacy_authorizations_id_password_with_http_info(auth_id, password_reset_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str auth_id: The ID of the legacy authorization to update. (required) + :param PasswordResetBody password_reset_body: New password (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_legacy_authorizations_id_password_prepare(auth_id, password_reset_body, **kwargs) + + return self.api_client.call_api( + '/private/legacy/authorizations/{authID}/password', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_legacy_authorizations_id_password_async(self, auth_id, password_reset_body, **kwargs): # noqa: E501,D401,D403 + """Set a legacy authorization password. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str auth_id: The ID of the legacy authorization to update. (required) + :param PasswordResetBody password_reset_body: New password (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_legacy_authorizations_id_password_prepare(auth_id, password_reset_body, **kwargs) + + return await self.api_client.call_api( + '/private/legacy/authorizations/{authID}/password', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_legacy_authorizations_id_password_prepare(self, auth_id, password_reset_body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['auth_id', 'password_reset_body', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_legacy_authorizations_id_password', all_params, local_var_params) + # verify the required parameter 'auth_id' is set + if ('auth_id' not in local_var_params or + local_var_params['auth_id'] is None): + raise ValueError("Missing the required parameter `auth_id` when calling `post_legacy_authorizations_id_password`") # noqa: E501 + # verify the required parameter 'password_reset_body' is set + if ('password_reset_body' not in local_var_params or + local_var_params['password_reset_body'] is None): + raise ValueError("Missing the required parameter `password_reset_body` when calling `post_legacy_authorizations_id_password`") # noqa: E501 + + path_params = {} + if 'auth_id' in local_var_params: + path_params['authID'] = local_var_params['auth_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'password_reset_body' in local_var_params: + body_params = local_var_params['password_reset_body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/metrics_service.py b/frogpilot/third_party/influxdb_client/service/metrics_service.py new file mode 100644 index 000000000..9e99de033 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/metrics_service.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class MetricsService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """MetricsService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def get_metrics(self, **kwargs): # noqa: E501,D401,D403 + """Retrieve workload performance metrics. + + Returns metrics about the workload performance of an InfluxDB instance. Use this endpoint to get performance, resource, and usage metrics. #### Related guides - For the list of metrics categories, see [InfluxDB OSS metrics](https://docs.influxdata.com/influxdb/latest/reference/internals/metrics/). - Learn how to use InfluxDB to [scrape Prometheus metrics](https://docs.influxdata.com/influxdb/latest/write-data/developer-tools/scrape-prometheus-metrics/). - Learn how InfluxDB [parses the Prometheus exposition format](https://docs.influxdata.com/influxdb/latest/reference/prometheus-metrics/). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_metrics(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: str + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_metrics_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_metrics_with_http_info(**kwargs) # noqa: E501 + return data + + def get_metrics_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """Retrieve workload performance metrics. + + Returns metrics about the workload performance of an InfluxDB instance. Use this endpoint to get performance, resource, and usage metrics. #### Related guides - For the list of metrics categories, see [InfluxDB OSS metrics](https://docs.influxdata.com/influxdb/latest/reference/internals/metrics/). - Learn how to use InfluxDB to [scrape Prometheus metrics](https://docs.influxdata.com/influxdb/latest/write-data/developer-tools/scrape-prometheus-metrics/). - Learn how InfluxDB [parses the Prometheus exposition format](https://docs.influxdata.com/influxdb/latest/reference/prometheus-metrics/). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_metrics_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: str + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_metrics_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/metrics', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='str', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_metrics_async(self, **kwargs): # noqa: E501,D401,D403 + """Retrieve workload performance metrics. + + Returns metrics about the workload performance of an InfluxDB instance. Use this endpoint to get performance, resource, and usage metrics. #### Related guides - For the list of metrics categories, see [InfluxDB OSS metrics](https://docs.influxdata.com/influxdb/latest/reference/internals/metrics/). - Learn how to use InfluxDB to [scrape Prometheus metrics](https://docs.influxdata.com/influxdb/latest/write-data/developer-tools/scrape-prometheus-metrics/). - Learn how InfluxDB [parses the Prometheus exposition format](https://docs.influxdata.com/influxdb/latest/reference/prometheus-metrics/). + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: str + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_metrics_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/metrics', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='str', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_metrics_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span'] # noqa: E501 + self._check_operation_params('get_metrics', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['text/plain', 'application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/notification_endpoints_service.py b/frogpilot/third_party/influxdb_client/service/notification_endpoints_service.py new file mode 100644 index 000000000..151b486a0 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/notification_endpoints_service.py @@ -0,0 +1,1137 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class NotificationEndpointsService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """NotificationEndpointsService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def create_notification_endpoint(self, post_notification_endpoint, **kwargs): # noqa: E501,D401,D403 + """Add a notification endpoint. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.create_notification_endpoint(post_notification_endpoint, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param PostNotificationEndpoint post_notification_endpoint: Notification endpoint to create (required) + :return: NotificationEndpoint + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.create_notification_endpoint_with_http_info(post_notification_endpoint, **kwargs) # noqa: E501 + else: + (data) = self.create_notification_endpoint_with_http_info(post_notification_endpoint, **kwargs) # noqa: E501 + return data + + def create_notification_endpoint_with_http_info(self, post_notification_endpoint, **kwargs): # noqa: E501,D401,D403 + """Add a notification endpoint. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.create_notification_endpoint_with_http_info(post_notification_endpoint, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param PostNotificationEndpoint post_notification_endpoint: Notification endpoint to create (required) + :return: NotificationEndpoint + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._create_notification_endpoint_prepare(post_notification_endpoint, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/notificationEndpoints', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationEndpoint', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def create_notification_endpoint_async(self, post_notification_endpoint, **kwargs): # noqa: E501,D401,D403 + """Add a notification endpoint. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param PostNotificationEndpoint post_notification_endpoint: Notification endpoint to create (required) + :return: NotificationEndpoint + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._create_notification_endpoint_prepare(post_notification_endpoint, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/notificationEndpoints', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationEndpoint', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _create_notification_endpoint_prepare(self, post_notification_endpoint, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['post_notification_endpoint'] # noqa: E501 + self._check_operation_params('create_notification_endpoint', all_params, local_var_params) + # verify the required parameter 'post_notification_endpoint' is set + if ('post_notification_endpoint' not in local_var_params or + local_var_params['post_notification_endpoint'] is None): + raise ValueError("Missing the required parameter `post_notification_endpoint` when calling `create_notification_endpoint`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + + body_params = None + if 'post_notification_endpoint' in local_var_params: + body_params = local_var_params['post_notification_endpoint'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_notification_endpoints_id(self, endpoint_id, **kwargs): # noqa: E501,D401,D403 + """Delete a notification endpoint. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_notification_endpoints_id(endpoint_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_notification_endpoints_id_with_http_info(endpoint_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_notification_endpoints_id_with_http_info(endpoint_id, **kwargs) # noqa: E501 + return data + + def delete_notification_endpoints_id_with_http_info(self, endpoint_id, **kwargs): # noqa: E501,D401,D403 + """Delete a notification endpoint. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_notification_endpoints_id_with_http_info(endpoint_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_notification_endpoints_id_prepare(endpoint_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/notificationEndpoints/{endpointID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_notification_endpoints_id_async(self, endpoint_id, **kwargs): # noqa: E501,D401,D403 + """Delete a notification endpoint. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_notification_endpoints_id_prepare(endpoint_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/notificationEndpoints/{endpointID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_notification_endpoints_id_prepare(self, endpoint_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['endpoint_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_notification_endpoints_id', all_params, local_var_params) + # verify the required parameter 'endpoint_id' is set + if ('endpoint_id' not in local_var_params or + local_var_params['endpoint_id'] is None): + raise ValueError("Missing the required parameter `endpoint_id` when calling `delete_notification_endpoints_id`") # noqa: E501 + + path_params = {} + if 'endpoint_id' in local_var_params: + path_params['endpointID'] = local_var_params['endpoint_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_notification_endpoints_id_labels_id(self, endpoint_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a notification endpoint. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_notification_endpoints_id_labels_id(endpoint_id, label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_notification_endpoints_id_labels_id_with_http_info(endpoint_id, label_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_notification_endpoints_id_labels_id_with_http_info(endpoint_id, label_id, **kwargs) # noqa: E501 + return data + + def delete_notification_endpoints_id_labels_id_with_http_info(self, endpoint_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a notification endpoint. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_notification_endpoints_id_labels_id_with_http_info(endpoint_id, label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_notification_endpoints_id_labels_id_prepare(endpoint_id, label_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/notificationEndpoints/{endpointID}/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_notification_endpoints_id_labels_id_async(self, endpoint_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a notification endpoint. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_notification_endpoints_id_labels_id_prepare(endpoint_id, label_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/notificationEndpoints/{endpointID}/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_notification_endpoints_id_labels_id_prepare(self, endpoint_id, label_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['endpoint_id', 'label_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_notification_endpoints_id_labels_id', all_params, local_var_params) + # verify the required parameter 'endpoint_id' is set + if ('endpoint_id' not in local_var_params or + local_var_params['endpoint_id'] is None): + raise ValueError("Missing the required parameter `endpoint_id` when calling `delete_notification_endpoints_id_labels_id`") # noqa: E501 + # verify the required parameter 'label_id' is set + if ('label_id' not in local_var_params or + local_var_params['label_id'] is None): + raise ValueError("Missing the required parameter `label_id` when calling `delete_notification_endpoints_id_labels_id`") # noqa: E501 + + path_params = {} + if 'endpoint_id' in local_var_params: + path_params['endpointID'] = local_var_params['endpoint_id'] # noqa: E501 + if 'label_id' in local_var_params: + path_params['labelID'] = local_var_params['label_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_notification_endpoints(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all notification endpoints. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_notification_endpoints(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: Only show notification endpoints that belong to specific organization ID. (required) + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :return: NotificationEndpoints + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_notification_endpoints_with_http_info(org_id, **kwargs) # noqa: E501 + else: + (data) = self.get_notification_endpoints_with_http_info(org_id, **kwargs) # noqa: E501 + return data + + def get_notification_endpoints_with_http_info(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all notification endpoints. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_notification_endpoints_with_http_info(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: Only show notification endpoints that belong to specific organization ID. (required) + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :return: NotificationEndpoints + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_notification_endpoints_prepare(org_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/notificationEndpoints', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationEndpoints', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_notification_endpoints_async(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all notification endpoints. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str org_id: Only show notification endpoints that belong to specific organization ID. (required) + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :return: NotificationEndpoints + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_notification_endpoints_prepare(org_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/notificationEndpoints', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationEndpoints', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_notification_endpoints_prepare(self, org_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['org_id', 'zap_trace_span', 'offset', 'limit'] # noqa: E501 + self._check_operation_params('get_notification_endpoints', all_params, local_var_params) + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `get_notification_endpoints`") # noqa: E501 + + if 'offset' in local_var_params and local_var_params['offset'] < 0: # noqa: E501 + raise ValueError("Invalid value for parameter `offset` when calling `get_notification_endpoints`, must be a value greater than or equal to `0`") # noqa: E501 + if 'limit' in local_var_params and local_var_params['limit'] > 100: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_notification_endpoints`, must be a value less than or equal to `100`") # noqa: E501 + if 'limit' in local_var_params and local_var_params['limit'] < 1: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_notification_endpoints`, must be a value greater than or equal to `1`") # noqa: E501 + path_params = {} + + query_params = [] + if 'offset' in local_var_params: + query_params.append(('offset', local_var_params['offset'])) # noqa: E501 + if 'limit' in local_var_params: + query_params.append(('limit', local_var_params['limit'])) # noqa: E501 + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_notification_endpoints_id(self, endpoint_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a notification endpoint. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_notification_endpoints_id(endpoint_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: NotificationEndpoint + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_notification_endpoints_id_with_http_info(endpoint_id, **kwargs) # noqa: E501 + else: + (data) = self.get_notification_endpoints_id_with_http_info(endpoint_id, **kwargs) # noqa: E501 + return data + + def get_notification_endpoints_id_with_http_info(self, endpoint_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a notification endpoint. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_notification_endpoints_id_with_http_info(endpoint_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: NotificationEndpoint + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_notification_endpoints_id_prepare(endpoint_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/notificationEndpoints/{endpointID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationEndpoint', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_notification_endpoints_id_async(self, endpoint_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a notification endpoint. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: NotificationEndpoint + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_notification_endpoints_id_prepare(endpoint_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/notificationEndpoints/{endpointID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationEndpoint', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_notification_endpoints_id_prepare(self, endpoint_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['endpoint_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_notification_endpoints_id', all_params, local_var_params) + # verify the required parameter 'endpoint_id' is set + if ('endpoint_id' not in local_var_params or + local_var_params['endpoint_id'] is None): + raise ValueError("Missing the required parameter `endpoint_id` when calling `get_notification_endpoints_id`") # noqa: E501 + + path_params = {} + if 'endpoint_id' in local_var_params: + path_params['endpointID'] = local_var_params['endpoint_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_notification_endpoints_id_labels(self, endpoint_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a notification endpoint. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_notification_endpoints_id_labels(endpoint_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_notification_endpoints_id_labels_with_http_info(endpoint_id, **kwargs) # noqa: E501 + else: + (data) = self.get_notification_endpoints_id_labels_with_http_info(endpoint_id, **kwargs) # noqa: E501 + return data + + def get_notification_endpoints_id_labels_with_http_info(self, endpoint_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a notification endpoint. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_notification_endpoints_id_labels_with_http_info(endpoint_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_notification_endpoints_id_labels_prepare(endpoint_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/notificationEndpoints/{endpointID}/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_notification_endpoints_id_labels_async(self, endpoint_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a notification endpoint. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_notification_endpoints_id_labels_prepare(endpoint_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/notificationEndpoints/{endpointID}/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_notification_endpoints_id_labels_prepare(self, endpoint_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['endpoint_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_notification_endpoints_id_labels', all_params, local_var_params) + # verify the required parameter 'endpoint_id' is set + if ('endpoint_id' not in local_var_params or + local_var_params['endpoint_id'] is None): + raise ValueError("Missing the required parameter `endpoint_id` when calling `get_notification_endpoints_id_labels`") # noqa: E501 + + path_params = {} + if 'endpoint_id' in local_var_params: + path_params['endpointID'] = local_var_params['endpoint_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_notification_endpoints_id(self, endpoint_id, notification_endpoint_update, **kwargs): # noqa: E501,D401,D403 + """Update a notification endpoint. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_notification_endpoints_id(endpoint_id, notification_endpoint_update, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param NotificationEndpointUpdate notification_endpoint_update: Check update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: NotificationEndpoint + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_notification_endpoints_id_with_http_info(endpoint_id, notification_endpoint_update, **kwargs) # noqa: E501 + else: + (data) = self.patch_notification_endpoints_id_with_http_info(endpoint_id, notification_endpoint_update, **kwargs) # noqa: E501 + return data + + def patch_notification_endpoints_id_with_http_info(self, endpoint_id, notification_endpoint_update, **kwargs): # noqa: E501,D401,D403 + """Update a notification endpoint. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_notification_endpoints_id_with_http_info(endpoint_id, notification_endpoint_update, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param NotificationEndpointUpdate notification_endpoint_update: Check update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: NotificationEndpoint + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_notification_endpoints_id_prepare(endpoint_id, notification_endpoint_update, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/notificationEndpoints/{endpointID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationEndpoint', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_notification_endpoints_id_async(self, endpoint_id, notification_endpoint_update, **kwargs): # noqa: E501,D401,D403 + """Update a notification endpoint. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param NotificationEndpointUpdate notification_endpoint_update: Check update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: NotificationEndpoint + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_notification_endpoints_id_prepare(endpoint_id, notification_endpoint_update, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/notificationEndpoints/{endpointID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationEndpoint', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_notification_endpoints_id_prepare(self, endpoint_id, notification_endpoint_update, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['endpoint_id', 'notification_endpoint_update', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_notification_endpoints_id', all_params, local_var_params) + # verify the required parameter 'endpoint_id' is set + if ('endpoint_id' not in local_var_params or + local_var_params['endpoint_id'] is None): + raise ValueError("Missing the required parameter `endpoint_id` when calling `patch_notification_endpoints_id`") # noqa: E501 + # verify the required parameter 'notification_endpoint_update' is set + if ('notification_endpoint_update' not in local_var_params or + local_var_params['notification_endpoint_update'] is None): + raise ValueError("Missing the required parameter `notification_endpoint_update` when calling `patch_notification_endpoints_id`") # noqa: E501 + + path_params = {} + if 'endpoint_id' in local_var_params: + path_params['endpointID'] = local_var_params['endpoint_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'notification_endpoint_update' in local_var_params: + body_params = local_var_params['notification_endpoint_update'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_notification_endpoint_id_labels(self, endpoint_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a notification endpoint. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_notification_endpoint_id_labels(endpoint_id, label_mapping, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_notification_endpoint_id_labels_with_http_info(endpoint_id, label_mapping, **kwargs) # noqa: E501 + else: + (data) = self.post_notification_endpoint_id_labels_with_http_info(endpoint_id, label_mapping, **kwargs) # noqa: E501 + return data + + def post_notification_endpoint_id_labels_with_http_info(self, endpoint_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a notification endpoint. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_notification_endpoint_id_labels_with_http_info(endpoint_id, label_mapping, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_notification_endpoint_id_labels_prepare(endpoint_id, label_mapping, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/notificationEndpoints/{endpointID}/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_notification_endpoint_id_labels_async(self, endpoint_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a notification endpoint. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_notification_endpoint_id_labels_prepare(endpoint_id, label_mapping, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/notificationEndpoints/{endpointID}/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_notification_endpoint_id_labels_prepare(self, endpoint_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['endpoint_id', 'label_mapping', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_notification_endpoint_id_labels', all_params, local_var_params) + # verify the required parameter 'endpoint_id' is set + if ('endpoint_id' not in local_var_params or + local_var_params['endpoint_id'] is None): + raise ValueError("Missing the required parameter `endpoint_id` when calling `post_notification_endpoint_id_labels`") # noqa: E501 + # verify the required parameter 'label_mapping' is set + if ('label_mapping' not in local_var_params or + local_var_params['label_mapping'] is None): + raise ValueError("Missing the required parameter `label_mapping` when calling `post_notification_endpoint_id_labels`") # noqa: E501 + + path_params = {} + if 'endpoint_id' in local_var_params: + path_params['endpointID'] = local_var_params['endpoint_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'label_mapping' in local_var_params: + body_params = local_var_params['label_mapping'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def put_notification_endpoints_id(self, endpoint_id, notification_endpoint, **kwargs): # noqa: E501,D401,D403 + """Update a notification endpoint. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.put_notification_endpoints_id(endpoint_id, notification_endpoint, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param NotificationEndpoint notification_endpoint: A new notification endpoint to replace the existing endpoint with (required) + :param str zap_trace_span: OpenTracing span context + :return: NotificationEndpoint + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.put_notification_endpoints_id_with_http_info(endpoint_id, notification_endpoint, **kwargs) # noqa: E501 + else: + (data) = self.put_notification_endpoints_id_with_http_info(endpoint_id, notification_endpoint, **kwargs) # noqa: E501 + return data + + def put_notification_endpoints_id_with_http_info(self, endpoint_id, notification_endpoint, **kwargs): # noqa: E501,D401,D403 + """Update a notification endpoint. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.put_notification_endpoints_id_with_http_info(endpoint_id, notification_endpoint, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param NotificationEndpoint notification_endpoint: A new notification endpoint to replace the existing endpoint with (required) + :param str zap_trace_span: OpenTracing span context + :return: NotificationEndpoint + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._put_notification_endpoints_id_prepare(endpoint_id, notification_endpoint, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/notificationEndpoints/{endpointID}', 'PUT', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationEndpoint', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def put_notification_endpoints_id_async(self, endpoint_id, notification_endpoint, **kwargs): # noqa: E501,D401,D403 + """Update a notification endpoint. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str endpoint_id: The notification endpoint ID. (required) + :param NotificationEndpoint notification_endpoint: A new notification endpoint to replace the existing endpoint with (required) + :param str zap_trace_span: OpenTracing span context + :return: NotificationEndpoint + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._put_notification_endpoints_id_prepare(endpoint_id, notification_endpoint, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/notificationEndpoints/{endpointID}', 'PUT', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationEndpoint', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _put_notification_endpoints_id_prepare(self, endpoint_id, notification_endpoint, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['endpoint_id', 'notification_endpoint', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('put_notification_endpoints_id', all_params, local_var_params) + # verify the required parameter 'endpoint_id' is set + if ('endpoint_id' not in local_var_params or + local_var_params['endpoint_id'] is None): + raise ValueError("Missing the required parameter `endpoint_id` when calling `put_notification_endpoints_id`") # noqa: E501 + # verify the required parameter 'notification_endpoint' is set + if ('notification_endpoint' not in local_var_params or + local_var_params['notification_endpoint'] is None): + raise ValueError("Missing the required parameter `notification_endpoint` when calling `put_notification_endpoints_id`") # noqa: E501 + + path_params = {} + if 'endpoint_id' in local_var_params: + path_params['endpointID'] = local_var_params['endpoint_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'notification_endpoint' in local_var_params: + body_params = local_var_params['notification_endpoint'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/notification_rules_service.py b/frogpilot/third_party/influxdb_client/service/notification_rules_service.py new file mode 100644 index 000000000..208feebbc --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/notification_rules_service.py @@ -0,0 +1,1149 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class NotificationRulesService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """NotificationRulesService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def create_notification_rule(self, post_notification_rule, **kwargs): # noqa: E501,D401,D403 + """Add a notification rule. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.create_notification_rule(post_notification_rule, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param PostNotificationRule post_notification_rule: Notification rule to create (required) + :return: NotificationRule + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.create_notification_rule_with_http_info(post_notification_rule, **kwargs) # noqa: E501 + else: + (data) = self.create_notification_rule_with_http_info(post_notification_rule, **kwargs) # noqa: E501 + return data + + def create_notification_rule_with_http_info(self, post_notification_rule, **kwargs): # noqa: E501,D401,D403 + """Add a notification rule. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.create_notification_rule_with_http_info(post_notification_rule, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param PostNotificationRule post_notification_rule: Notification rule to create (required) + :return: NotificationRule + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._create_notification_rule_prepare(post_notification_rule, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/notificationRules', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationRule', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def create_notification_rule_async(self, post_notification_rule, **kwargs): # noqa: E501,D401,D403 + """Add a notification rule. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param PostNotificationRule post_notification_rule: Notification rule to create (required) + :return: NotificationRule + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._create_notification_rule_prepare(post_notification_rule, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/notificationRules', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationRule', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _create_notification_rule_prepare(self, post_notification_rule, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['post_notification_rule'] # noqa: E501 + self._check_operation_params('create_notification_rule', all_params, local_var_params) + # verify the required parameter 'post_notification_rule' is set + if ('post_notification_rule' not in local_var_params or + local_var_params['post_notification_rule'] is None): + raise ValueError("Missing the required parameter `post_notification_rule` when calling `create_notification_rule`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + + body_params = None + if 'post_notification_rule' in local_var_params: + body_params = local_var_params['post_notification_rule'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_notification_rules_id(self, rule_id, **kwargs): # noqa: E501,D401,D403 + """Delete a notification rule. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_notification_rules_id(rule_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_notification_rules_id_with_http_info(rule_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_notification_rules_id_with_http_info(rule_id, **kwargs) # noqa: E501 + return data + + def delete_notification_rules_id_with_http_info(self, rule_id, **kwargs): # noqa: E501,D401,D403 + """Delete a notification rule. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_notification_rules_id_with_http_info(rule_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_notification_rules_id_prepare(rule_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/notificationRules/{ruleID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_notification_rules_id_async(self, rule_id, **kwargs): # noqa: E501,D401,D403 + """Delete a notification rule. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_notification_rules_id_prepare(rule_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/notificationRules/{ruleID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_notification_rules_id_prepare(self, rule_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['rule_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_notification_rules_id', all_params, local_var_params) + # verify the required parameter 'rule_id' is set + if ('rule_id' not in local_var_params or + local_var_params['rule_id'] is None): + raise ValueError("Missing the required parameter `rule_id` when calling `delete_notification_rules_id`") # noqa: E501 + + path_params = {} + if 'rule_id' in local_var_params: + path_params['ruleID'] = local_var_params['rule_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_notification_rules_id_labels_id(self, rule_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete label from a notification rule. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_notification_rules_id_labels_id(rule_id, label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_notification_rules_id_labels_id_with_http_info(rule_id, label_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_notification_rules_id_labels_id_with_http_info(rule_id, label_id, **kwargs) # noqa: E501 + return data + + def delete_notification_rules_id_labels_id_with_http_info(self, rule_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete label from a notification rule. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_notification_rules_id_labels_id_with_http_info(rule_id, label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_notification_rules_id_labels_id_prepare(rule_id, label_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/notificationRules/{ruleID}/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_notification_rules_id_labels_id_async(self, rule_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete label from a notification rule. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_notification_rules_id_labels_id_prepare(rule_id, label_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/notificationRules/{ruleID}/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_notification_rules_id_labels_id_prepare(self, rule_id, label_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['rule_id', 'label_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_notification_rules_id_labels_id', all_params, local_var_params) + # verify the required parameter 'rule_id' is set + if ('rule_id' not in local_var_params or + local_var_params['rule_id'] is None): + raise ValueError("Missing the required parameter `rule_id` when calling `delete_notification_rules_id_labels_id`") # noqa: E501 + # verify the required parameter 'label_id' is set + if ('label_id' not in local_var_params or + local_var_params['label_id'] is None): + raise ValueError("Missing the required parameter `label_id` when calling `delete_notification_rules_id_labels_id`") # noqa: E501 + + path_params = {} + if 'rule_id' in local_var_params: + path_params['ruleID'] = local_var_params['rule_id'] # noqa: E501 + if 'label_id' in local_var_params: + path_params['labelID'] = local_var_params['label_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_notification_rules(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all notification rules. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_notification_rules(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: Only show notification rules that belong to a specific organization ID. (required) + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :param str check_id: Only show notifications that belong to the specific check ID. + :param str tag: Only return notification rules that "would match" statuses which contain the tag key value pairs provided. + :return: NotificationRules + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_notification_rules_with_http_info(org_id, **kwargs) # noqa: E501 + else: + (data) = self.get_notification_rules_with_http_info(org_id, **kwargs) # noqa: E501 + return data + + def get_notification_rules_with_http_info(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all notification rules. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_notification_rules_with_http_info(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: Only show notification rules that belong to a specific organization ID. (required) + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :param str check_id: Only show notifications that belong to the specific check ID. + :param str tag: Only return notification rules that "would match" statuses which contain the tag key value pairs provided. + :return: NotificationRules + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_notification_rules_prepare(org_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/notificationRules', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationRules', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_notification_rules_async(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all notification rules. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str org_id: Only show notification rules that belong to a specific organization ID. (required) + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :param str check_id: Only show notifications that belong to the specific check ID. + :param str tag: Only return notification rules that "would match" statuses which contain the tag key value pairs provided. + :return: NotificationRules + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_notification_rules_prepare(org_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/notificationRules', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationRules', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_notification_rules_prepare(self, org_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['org_id', 'zap_trace_span', 'offset', 'limit', 'check_id', 'tag'] # noqa: E501 + self._check_operation_params('get_notification_rules', all_params, local_var_params) + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `get_notification_rules`") # noqa: E501 + + if 'offset' in local_var_params and local_var_params['offset'] < 0: # noqa: E501 + raise ValueError("Invalid value for parameter `offset` when calling `get_notification_rules`, must be a value greater than or equal to `0`") # noqa: E501 + if 'limit' in local_var_params and local_var_params['limit'] > 100: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_notification_rules`, must be a value less than or equal to `100`") # noqa: E501 + if 'limit' in local_var_params and local_var_params['limit'] < 1: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_notification_rules`, must be a value greater than or equal to `1`") # noqa: E501 + if 'tag' in local_var_params and not re.search(r'^[a-zA-Z0-9_]+:[a-zA-Z0-9_]+$', local_var_params['tag']): # noqa: E501 + raise ValueError("Invalid value for parameter `tag` when calling `get_notification_rules`, must conform to the pattern `/^[a-zA-Z0-9_]+:[a-zA-Z0-9_]+$/`") # noqa: E501 + path_params = {} + + query_params = [] + if 'offset' in local_var_params: + query_params.append(('offset', local_var_params['offset'])) # noqa: E501 + if 'limit' in local_var_params: + query_params.append(('limit', local_var_params['limit'])) # noqa: E501 + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + if 'check_id' in local_var_params: + query_params.append(('checkID', local_var_params['check_id'])) # noqa: E501 + if 'tag' in local_var_params: + query_params.append(('tag', local_var_params['tag'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_notification_rules_id(self, rule_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a notification rule. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_notification_rules_id(rule_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: NotificationRule + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_notification_rules_id_with_http_info(rule_id, **kwargs) # noqa: E501 + else: + (data) = self.get_notification_rules_id_with_http_info(rule_id, **kwargs) # noqa: E501 + return data + + def get_notification_rules_id_with_http_info(self, rule_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a notification rule. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_notification_rules_id_with_http_info(rule_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: NotificationRule + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_notification_rules_id_prepare(rule_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/notificationRules/{ruleID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationRule', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_notification_rules_id_async(self, rule_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a notification rule. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: NotificationRule + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_notification_rules_id_prepare(rule_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/notificationRules/{ruleID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationRule', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_notification_rules_id_prepare(self, rule_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['rule_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_notification_rules_id', all_params, local_var_params) + # verify the required parameter 'rule_id' is set + if ('rule_id' not in local_var_params or + local_var_params['rule_id'] is None): + raise ValueError("Missing the required parameter `rule_id` when calling `get_notification_rules_id`") # noqa: E501 + + path_params = {} + if 'rule_id' in local_var_params: + path_params['ruleID'] = local_var_params['rule_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_notification_rules_id_labels(self, rule_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a notification rule. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_notification_rules_id_labels(rule_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_notification_rules_id_labels_with_http_info(rule_id, **kwargs) # noqa: E501 + else: + (data) = self.get_notification_rules_id_labels_with_http_info(rule_id, **kwargs) # noqa: E501 + return data + + def get_notification_rules_id_labels_with_http_info(self, rule_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a notification rule. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_notification_rules_id_labels_with_http_info(rule_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_notification_rules_id_labels_prepare(rule_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/notificationRules/{ruleID}/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_notification_rules_id_labels_async(self, rule_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a notification rule. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_notification_rules_id_labels_prepare(rule_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/notificationRules/{ruleID}/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_notification_rules_id_labels_prepare(self, rule_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['rule_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_notification_rules_id_labels', all_params, local_var_params) + # verify the required parameter 'rule_id' is set + if ('rule_id' not in local_var_params or + local_var_params['rule_id'] is None): + raise ValueError("Missing the required parameter `rule_id` when calling `get_notification_rules_id_labels`") # noqa: E501 + + path_params = {} + if 'rule_id' in local_var_params: + path_params['ruleID'] = local_var_params['rule_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_notification_rules_id(self, rule_id, notification_rule_update, **kwargs): # noqa: E501,D401,D403 + """Update a notification rule. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_notification_rules_id(rule_id, notification_rule_update, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param NotificationRuleUpdate notification_rule_update: Notification rule update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: NotificationRule + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_notification_rules_id_with_http_info(rule_id, notification_rule_update, **kwargs) # noqa: E501 + else: + (data) = self.patch_notification_rules_id_with_http_info(rule_id, notification_rule_update, **kwargs) # noqa: E501 + return data + + def patch_notification_rules_id_with_http_info(self, rule_id, notification_rule_update, **kwargs): # noqa: E501,D401,D403 + """Update a notification rule. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_notification_rules_id_with_http_info(rule_id, notification_rule_update, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param NotificationRuleUpdate notification_rule_update: Notification rule update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: NotificationRule + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_notification_rules_id_prepare(rule_id, notification_rule_update, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/notificationRules/{ruleID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationRule', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_notification_rules_id_async(self, rule_id, notification_rule_update, **kwargs): # noqa: E501,D401,D403 + """Update a notification rule. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param NotificationRuleUpdate notification_rule_update: Notification rule update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: NotificationRule + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_notification_rules_id_prepare(rule_id, notification_rule_update, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/notificationRules/{ruleID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationRule', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_notification_rules_id_prepare(self, rule_id, notification_rule_update, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['rule_id', 'notification_rule_update', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_notification_rules_id', all_params, local_var_params) + # verify the required parameter 'rule_id' is set + if ('rule_id' not in local_var_params or + local_var_params['rule_id'] is None): + raise ValueError("Missing the required parameter `rule_id` when calling `patch_notification_rules_id`") # noqa: E501 + # verify the required parameter 'notification_rule_update' is set + if ('notification_rule_update' not in local_var_params or + local_var_params['notification_rule_update'] is None): + raise ValueError("Missing the required parameter `notification_rule_update` when calling `patch_notification_rules_id`") # noqa: E501 + + path_params = {} + if 'rule_id' in local_var_params: + path_params['ruleID'] = local_var_params['rule_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'notification_rule_update' in local_var_params: + body_params = local_var_params['notification_rule_update'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_notification_rule_id_labels(self, rule_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a notification rule. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_notification_rule_id_labels(rule_id, label_mapping, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_notification_rule_id_labels_with_http_info(rule_id, label_mapping, **kwargs) # noqa: E501 + else: + (data) = self.post_notification_rule_id_labels_with_http_info(rule_id, label_mapping, **kwargs) # noqa: E501 + return data + + def post_notification_rule_id_labels_with_http_info(self, rule_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a notification rule. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_notification_rule_id_labels_with_http_info(rule_id, label_mapping, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_notification_rule_id_labels_prepare(rule_id, label_mapping, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/notificationRules/{ruleID}/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_notification_rule_id_labels_async(self, rule_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a notification rule. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_notification_rule_id_labels_prepare(rule_id, label_mapping, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/notificationRules/{ruleID}/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_notification_rule_id_labels_prepare(self, rule_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['rule_id', 'label_mapping', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_notification_rule_id_labels', all_params, local_var_params) + # verify the required parameter 'rule_id' is set + if ('rule_id' not in local_var_params or + local_var_params['rule_id'] is None): + raise ValueError("Missing the required parameter `rule_id` when calling `post_notification_rule_id_labels`") # noqa: E501 + # verify the required parameter 'label_mapping' is set + if ('label_mapping' not in local_var_params or + local_var_params['label_mapping'] is None): + raise ValueError("Missing the required parameter `label_mapping` when calling `post_notification_rule_id_labels`") # noqa: E501 + + path_params = {} + if 'rule_id' in local_var_params: + path_params['ruleID'] = local_var_params['rule_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'label_mapping' in local_var_params: + body_params = local_var_params['label_mapping'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def put_notification_rules_id(self, rule_id, notification_rule, **kwargs): # noqa: E501,D401,D403 + """Update a notification rule. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.put_notification_rules_id(rule_id, notification_rule, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param NotificationRule notification_rule: Notification rule update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: NotificationRule + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.put_notification_rules_id_with_http_info(rule_id, notification_rule, **kwargs) # noqa: E501 + else: + (data) = self.put_notification_rules_id_with_http_info(rule_id, notification_rule, **kwargs) # noqa: E501 + return data + + def put_notification_rules_id_with_http_info(self, rule_id, notification_rule, **kwargs): # noqa: E501,D401,D403 + """Update a notification rule. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.put_notification_rules_id_with_http_info(rule_id, notification_rule, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param NotificationRule notification_rule: Notification rule update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: NotificationRule + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._put_notification_rules_id_prepare(rule_id, notification_rule, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/notificationRules/{ruleID}', 'PUT', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationRule', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def put_notification_rules_id_async(self, rule_id, notification_rule, **kwargs): # noqa: E501,D401,D403 + """Update a notification rule. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param NotificationRule notification_rule: Notification rule update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: NotificationRule + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._put_notification_rules_id_prepare(rule_id, notification_rule, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/notificationRules/{ruleID}', 'PUT', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='NotificationRule', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _put_notification_rules_id_prepare(self, rule_id, notification_rule, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['rule_id', 'notification_rule', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('put_notification_rules_id', all_params, local_var_params) + # verify the required parameter 'rule_id' is set + if ('rule_id' not in local_var_params or + local_var_params['rule_id'] is None): + raise ValueError("Missing the required parameter `rule_id` when calling `put_notification_rules_id`") # noqa: E501 + # verify the required parameter 'notification_rule' is set + if ('notification_rule' not in local_var_params or + local_var_params['notification_rule'] is None): + raise ValueError("Missing the required parameter `notification_rule` when calling `put_notification_rules_id`") # noqa: E501 + + path_params = {} + if 'rule_id' in local_var_params: + path_params['ruleID'] = local_var_params['rule_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'notification_rule' in local_var_params: + body_params = local_var_params['notification_rule'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/organizations_service.py b/frogpilot/third_party/influxdb_client/service/organizations_service.py new file mode 100644 index 000000000..6d845a318 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/organizations_service.py @@ -0,0 +1,1427 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class OrganizationsService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """OrganizationsService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def delete_orgs_id(self, org_id, **kwargs): # noqa: E501,D401,D403 + """Delete an organization. + + Deletes an organization. Deleting an organization from InfluxDB Cloud can't be undone. Once deleted, all data associated with the organization is removed. #### InfluxDB Cloud - Does the following when you send a delete request: 1. Validates the request and queues the delete. 2. Returns an HTTP `204` status code if queued; _error_ otherwise. 3. Handles the delete asynchronously. #### InfluxDB OSS - Validates the request, handles the delete synchronously, and then responds with success or failure. #### Limitations - Only one organization can be deleted per request. #### Related guides - [Delete organizations](https://docs.influxdata.com/influxdb/latest/organizations/delete-orgs/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_orgs_id(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The ID of the organization to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_orgs_id_with_http_info(org_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_orgs_id_with_http_info(org_id, **kwargs) # noqa: E501 + return data + + def delete_orgs_id_with_http_info(self, org_id, **kwargs): # noqa: E501,D401,D403 + """Delete an organization. + + Deletes an organization. Deleting an organization from InfluxDB Cloud can't be undone. Once deleted, all data associated with the organization is removed. #### InfluxDB Cloud - Does the following when you send a delete request: 1. Validates the request and queues the delete. 2. Returns an HTTP `204` status code if queued; _error_ otherwise. 3. Handles the delete asynchronously. #### InfluxDB OSS - Validates the request, handles the delete synchronously, and then responds with success or failure. #### Limitations - Only one organization can be deleted per request. #### Related guides - [Delete organizations](https://docs.influxdata.com/influxdb/latest/organizations/delete-orgs/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_orgs_id_with_http_info(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The ID of the organization to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_orgs_id_prepare(org_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/orgs/{orgID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_orgs_id_async(self, org_id, **kwargs): # noqa: E501,D401,D403 + """Delete an organization. + + Deletes an organization. Deleting an organization from InfluxDB Cloud can't be undone. Once deleted, all data associated with the organization is removed. #### InfluxDB Cloud - Does the following when you send a delete request: 1. Validates the request and queues the delete. 2. Returns an HTTP `204` status code if queued; _error_ otherwise. 3. Handles the delete asynchronously. #### InfluxDB OSS - Validates the request, handles the delete synchronously, and then responds with success or failure. #### Limitations - Only one organization can be deleted per request. #### Related guides - [Delete organizations](https://docs.influxdata.com/influxdb/latest/organizations/delete-orgs/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str org_id: The ID of the organization to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_orgs_id_prepare(org_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/orgs/{orgID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_orgs_id_prepare(self, org_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['org_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_orgs_id', all_params, local_var_params) + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `delete_orgs_id`") # noqa: E501 + + path_params = {} + if 'org_id' in local_var_params: + path_params['orgID'] = local_var_params['org_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_orgs_id_members_id(self, user_id, org_id, **kwargs): # noqa: E501,D401,D403 + """Remove a member from an organization. + + Removes a member from an organization. Use this endpoint to remove a user's member privileges for an organization. Removing member privileges removes the user's `read` and `write` permissions from the organization. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Member permissions are separate from API token permissions. - Member permissions are used in the context of the InfluxDB UI. #### Required permissions - `write-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to remove an owner from. #### Related guides - [Manage members](https://docs.influxdata.com/influxdb/latest/organizations/members/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_orgs_id_members_id(user_id, org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the user to remove. (required) + :param str org_id: The ID of the organization to remove a user from. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_orgs_id_members_id_with_http_info(user_id, org_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_orgs_id_members_id_with_http_info(user_id, org_id, **kwargs) # noqa: E501 + return data + + def delete_orgs_id_members_id_with_http_info(self, user_id, org_id, **kwargs): # noqa: E501,D401,D403 + """Remove a member from an organization. + + Removes a member from an organization. Use this endpoint to remove a user's member privileges for an organization. Removing member privileges removes the user's `read` and `write` permissions from the organization. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Member permissions are separate from API token permissions. - Member permissions are used in the context of the InfluxDB UI. #### Required permissions - `write-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to remove an owner from. #### Related guides - [Manage members](https://docs.influxdata.com/influxdb/latest/organizations/members/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_orgs_id_members_id_with_http_info(user_id, org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the user to remove. (required) + :param str org_id: The ID of the organization to remove a user from. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_orgs_id_members_id_prepare(user_id, org_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/orgs/{orgID}/members/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_orgs_id_members_id_async(self, user_id, org_id, **kwargs): # noqa: E501,D401,D403 + """Remove a member from an organization. + + Removes a member from an organization. Use this endpoint to remove a user's member privileges for an organization. Removing member privileges removes the user's `read` and `write` permissions from the organization. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Member permissions are separate from API token permissions. - Member permissions are used in the context of the InfluxDB UI. #### Required permissions - `write-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to remove an owner from. #### Related guides - [Manage members](https://docs.influxdata.com/influxdb/latest/organizations/members/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str user_id: The ID of the user to remove. (required) + :param str org_id: The ID of the organization to remove a user from. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_orgs_id_members_id_prepare(user_id, org_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/orgs/{orgID}/members/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_orgs_id_members_id_prepare(self, user_id, org_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['user_id', 'org_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_orgs_id_members_id', all_params, local_var_params) + # verify the required parameter 'user_id' is set + if ('user_id' not in local_var_params or + local_var_params['user_id'] is None): + raise ValueError("Missing the required parameter `user_id` when calling `delete_orgs_id_members_id`") # noqa: E501 + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `delete_orgs_id_members_id`") # noqa: E501 + + path_params = {} + if 'user_id' in local_var_params: + path_params['userID'] = local_var_params['user_id'] # noqa: E501 + if 'org_id' in local_var_params: + path_params['orgID'] = local_var_params['org_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_orgs_id_owners_id(self, user_id, org_id, **kwargs): # noqa: E501,D401,D403 + """Remove an owner from an organization. + + Removes an [owner](https://docs.influxdata.com/influxdb/latest/reference/glossary/#owner) from the organization. Organization owners have permission to delete organizations and remove user and member permissions from the organization. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Owner permissions are separate from API token permissions. - Owner permissions are used in the context of the InfluxDB UI. #### Required permissions - `write-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to remove an owner from. #### Related endpoints - [Authorizations](#tag/Authorizations-(API-tokens)) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_orgs_id_owners_id(user_id, org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the user to remove. (required) + :param str org_id: The ID of the organization to remove an owner from. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_orgs_id_owners_id_with_http_info(user_id, org_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_orgs_id_owners_id_with_http_info(user_id, org_id, **kwargs) # noqa: E501 + return data + + def delete_orgs_id_owners_id_with_http_info(self, user_id, org_id, **kwargs): # noqa: E501,D401,D403 + """Remove an owner from an organization. + + Removes an [owner](https://docs.influxdata.com/influxdb/latest/reference/glossary/#owner) from the organization. Organization owners have permission to delete organizations and remove user and member permissions from the organization. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Owner permissions are separate from API token permissions. - Owner permissions are used in the context of the InfluxDB UI. #### Required permissions - `write-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to remove an owner from. #### Related endpoints - [Authorizations](#tag/Authorizations-(API-tokens)) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_orgs_id_owners_id_with_http_info(user_id, org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the user to remove. (required) + :param str org_id: The ID of the organization to remove an owner from. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_orgs_id_owners_id_prepare(user_id, org_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/orgs/{orgID}/owners/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_orgs_id_owners_id_async(self, user_id, org_id, **kwargs): # noqa: E501,D401,D403 + """Remove an owner from an organization. + + Removes an [owner](https://docs.influxdata.com/influxdb/latest/reference/glossary/#owner) from the organization. Organization owners have permission to delete organizations and remove user and member permissions from the organization. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Owner permissions are separate from API token permissions. - Owner permissions are used in the context of the InfluxDB UI. #### Required permissions - `write-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to remove an owner from. #### Related endpoints - [Authorizations](#tag/Authorizations-(API-tokens)) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str user_id: The ID of the user to remove. (required) + :param str org_id: The ID of the organization to remove an owner from. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_orgs_id_owners_id_prepare(user_id, org_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/orgs/{orgID}/owners/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_orgs_id_owners_id_prepare(self, user_id, org_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['user_id', 'org_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_orgs_id_owners_id', all_params, local_var_params) + # verify the required parameter 'user_id' is set + if ('user_id' not in local_var_params or + local_var_params['user_id'] is None): + raise ValueError("Missing the required parameter `user_id` when calling `delete_orgs_id_owners_id`") # noqa: E501 + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `delete_orgs_id_owners_id`") # noqa: E501 + + path_params = {} + if 'user_id' in local_var_params: + path_params['userID'] = local_var_params['user_id'] # noqa: E501 + if 'org_id' in local_var_params: + path_params['orgID'] = local_var_params['org_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_orgs(self, **kwargs): # noqa: E501,D401,D403 + """List organizations. + + Lists [organizations](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization/). To limit which organizations are returned, pass query parameters in your request. If no query parameters are passed, InfluxDB returns all organizations up to the default `limit`. #### InfluxDB Cloud - Only returns the organization that owns the token passed in the request. #### Related guides - [View organizations](https://docs.influxdata.com/influxdb/latest/organizations/view-orgs/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_orgs(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :param bool descending: + :param str org: An organization name. Only returns the specified organization. + :param str org_id: An organization ID. Only returns the specified organization. + :param str user_id: A user ID. Only returns organizations where the specified user is a member or owner. + :return: Organizations + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_orgs_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_orgs_with_http_info(**kwargs) # noqa: E501 + return data + + def get_orgs_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """List organizations. + + Lists [organizations](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization/). To limit which organizations are returned, pass query parameters in your request. If no query parameters are passed, InfluxDB returns all organizations up to the default `limit`. #### InfluxDB Cloud - Only returns the organization that owns the token passed in the request. #### Related guides - [View organizations](https://docs.influxdata.com/influxdb/latest/organizations/view-orgs/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_orgs_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :param bool descending: + :param str org: An organization name. Only returns the specified organization. + :param str org_id: An organization ID. Only returns the specified organization. + :param str user_id: A user ID. Only returns organizations where the specified user is a member or owner. + :return: Organizations + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_orgs_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/orgs', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Organizations', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_orgs_async(self, **kwargs): # noqa: E501,D401,D403 + """List organizations. + + Lists [organizations](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization/). To limit which organizations are returned, pass query parameters in your request. If no query parameters are passed, InfluxDB returns all organizations up to the default `limit`. #### InfluxDB Cloud - Only returns the organization that owns the token passed in the request. #### Related guides - [View organizations](https://docs.influxdata.com/influxdb/latest/organizations/view-orgs/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :param bool descending: + :param str org: An organization name. Only returns the specified organization. + :param str org_id: An organization ID. Only returns the specified organization. + :param str user_id: A user ID. Only returns organizations where the specified user is a member or owner. + :return: Organizations + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_orgs_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/orgs', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Organizations', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_orgs_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span', 'offset', 'limit', 'descending', 'org', 'org_id', 'user_id'] # noqa: E501 + self._check_operation_params('get_orgs', all_params, local_var_params) + + if 'offset' in local_var_params and local_var_params['offset'] < 0: # noqa: E501 + raise ValueError("Invalid value for parameter `offset` when calling `get_orgs`, must be a value greater than or equal to `0`") # noqa: E501 + if 'limit' in local_var_params and local_var_params['limit'] > 100: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_orgs`, must be a value less than or equal to `100`") # noqa: E501 + if 'limit' in local_var_params and local_var_params['limit'] < 1: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_orgs`, must be a value greater than or equal to `1`") # noqa: E501 + path_params = {} + + query_params = [] + if 'offset' in local_var_params: + query_params.append(('offset', local_var_params['offset'])) # noqa: E501 + if 'limit' in local_var_params: + query_params.append(('limit', local_var_params['limit'])) # noqa: E501 + if 'descending' in local_var_params: + query_params.append(('descending', local_var_params['descending'])) # noqa: E501 + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + if 'user_id' in local_var_params: + query_params.append(('userID', local_var_params['user_id'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_orgs_id(self, org_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve an organization. + + Retrieves an organization. Use this endpoint to retrieve information for a specific organization. #### Related guides - [View organizations](https://docs.influxdata.com/influxdb/latest/organizations/view-orgs/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_orgs_id(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The ID of the organization to retrieve. (required) + :param str zap_trace_span: OpenTracing span context + :return: Organization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_orgs_id_with_http_info(org_id, **kwargs) # noqa: E501 + else: + (data) = self.get_orgs_id_with_http_info(org_id, **kwargs) # noqa: E501 + return data + + def get_orgs_id_with_http_info(self, org_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve an organization. + + Retrieves an organization. Use this endpoint to retrieve information for a specific organization. #### Related guides - [View organizations](https://docs.influxdata.com/influxdb/latest/organizations/view-orgs/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_orgs_id_with_http_info(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The ID of the organization to retrieve. (required) + :param str zap_trace_span: OpenTracing span context + :return: Organization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_orgs_id_prepare(org_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/orgs/{orgID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Organization', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_orgs_id_async(self, org_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve an organization. + + Retrieves an organization. Use this endpoint to retrieve information for a specific organization. #### Related guides - [View organizations](https://docs.influxdata.com/influxdb/latest/organizations/view-orgs/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str org_id: The ID of the organization to retrieve. (required) + :param str zap_trace_span: OpenTracing span context + :return: Organization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_orgs_id_prepare(org_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/orgs/{orgID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Organization', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_orgs_id_prepare(self, org_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['org_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_orgs_id', all_params, local_var_params) + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `get_orgs_id`") # noqa: E501 + + path_params = {} + if 'org_id' in local_var_params: + path_params['orgID'] = local_var_params['org_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_orgs_id_members(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all members of an organization. + + Lists all users that belong to an organization. InfluxDB [users](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) have permission to access InfluxDB. [Members](https://docs.influxdata.com/influxdb/latest/reference/glossary/#member) are users within the organization. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Member permissions are separate from API token permissions. - Member permissions are used in the context of the InfluxDB UI. #### Required permissions - `read-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to retrieve members for. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) - [Manage members](https://docs.influxdata.com/influxdb/latest/organizations/members/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_orgs_id_members(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The ID of the organization to retrieve users for. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMembers + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_orgs_id_members_with_http_info(org_id, **kwargs) # noqa: E501 + else: + (data) = self.get_orgs_id_members_with_http_info(org_id, **kwargs) # noqa: E501 + return data + + def get_orgs_id_members_with_http_info(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all members of an organization. + + Lists all users that belong to an organization. InfluxDB [users](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) have permission to access InfluxDB. [Members](https://docs.influxdata.com/influxdb/latest/reference/glossary/#member) are users within the organization. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Member permissions are separate from API token permissions. - Member permissions are used in the context of the InfluxDB UI. #### Required permissions - `read-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to retrieve members for. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) - [Manage members](https://docs.influxdata.com/influxdb/latest/organizations/members/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_orgs_id_members_with_http_info(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The ID of the organization to retrieve users for. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMembers + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_orgs_id_members_prepare(org_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/orgs/{orgID}/members', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMembers', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_orgs_id_members_async(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all members of an organization. + + Lists all users that belong to an organization. InfluxDB [users](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) have permission to access InfluxDB. [Members](https://docs.influxdata.com/influxdb/latest/reference/glossary/#member) are users within the organization. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Member permissions are separate from API token permissions. - Member permissions are used in the context of the InfluxDB UI. #### Required permissions - `read-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to retrieve members for. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) - [Manage members](https://docs.influxdata.com/influxdb/latest/organizations/members/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str org_id: The ID of the organization to retrieve users for. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMembers + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_orgs_id_members_prepare(org_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/orgs/{orgID}/members', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMembers', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_orgs_id_members_prepare(self, org_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['org_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_orgs_id_members', all_params, local_var_params) + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `get_orgs_id_members`") # noqa: E501 + + path_params = {} + if 'org_id' in local_var_params: + path_params['orgID'] = local_var_params['org_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_orgs_id_owners(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all owners of an organization. + + Lists all owners of an organization. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Required permissions - `read-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to retrieve a list of owners from. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_orgs_id_owners(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The ID of the organization to list owners for. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwners + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_orgs_id_owners_with_http_info(org_id, **kwargs) # noqa: E501 + else: + (data) = self.get_orgs_id_owners_with_http_info(org_id, **kwargs) # noqa: E501 + return data + + def get_orgs_id_owners_with_http_info(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all owners of an organization. + + Lists all owners of an organization. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Required permissions - `read-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to retrieve a list of owners from. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_orgs_id_owners_with_http_info(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The ID of the organization to list owners for. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwners + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_orgs_id_owners_prepare(org_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/orgs/{orgID}/owners', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwners', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_orgs_id_owners_async(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all owners of an organization. + + Lists all owners of an organization. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Required permissions - `read-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to retrieve a list of owners from. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str org_id: The ID of the organization to list owners for. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwners + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_orgs_id_owners_prepare(org_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/orgs/{orgID}/owners', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwners', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_orgs_id_owners_prepare(self, org_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['org_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_orgs_id_owners', all_params, local_var_params) + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `get_orgs_id_owners`") # noqa: E501 + + path_params = {} + if 'org_id' in local_var_params: + path_params['orgID'] = local_var_params['org_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_orgs_id(self, org_id, patch_organization_request, **kwargs): # noqa: E501,D401,D403 + """Update an organization. + + Updates an organization. Use this endpoint to update properties (`name`, `description`) of an organization. Updating an organizationโ€™s name affects all resources that reference the organization by name, including the following: - Queries - Dashboards - Tasks - Telegraf configurations - Templates If you change an organization name, be sure to update the organization name in these resources as well. #### Related Guides - [Update an organization](https://docs.influxdata.com/influxdb/latest/organizations/update-org/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_orgs_id(org_id, patch_organization_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The ID of the organization to update. (required) + :param PatchOrganizationRequest patch_organization_request: The organization update to apply. (required) + :param str zap_trace_span: OpenTracing span context + :return: Organization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_orgs_id_with_http_info(org_id, patch_organization_request, **kwargs) # noqa: E501 + else: + (data) = self.patch_orgs_id_with_http_info(org_id, patch_organization_request, **kwargs) # noqa: E501 + return data + + def patch_orgs_id_with_http_info(self, org_id, patch_organization_request, **kwargs): # noqa: E501,D401,D403 + """Update an organization. + + Updates an organization. Use this endpoint to update properties (`name`, `description`) of an organization. Updating an organizationโ€™s name affects all resources that reference the organization by name, including the following: - Queries - Dashboards - Tasks - Telegraf configurations - Templates If you change an organization name, be sure to update the organization name in these resources as well. #### Related Guides - [Update an organization](https://docs.influxdata.com/influxdb/latest/organizations/update-org/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_orgs_id_with_http_info(org_id, patch_organization_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The ID of the organization to update. (required) + :param PatchOrganizationRequest patch_organization_request: The organization update to apply. (required) + :param str zap_trace_span: OpenTracing span context + :return: Organization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_orgs_id_prepare(org_id, patch_organization_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/orgs/{orgID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Organization', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_orgs_id_async(self, org_id, patch_organization_request, **kwargs): # noqa: E501,D401,D403 + """Update an organization. + + Updates an organization. Use this endpoint to update properties (`name`, `description`) of an organization. Updating an organizationโ€™s name affects all resources that reference the organization by name, including the following: - Queries - Dashboards - Tasks - Telegraf configurations - Templates If you change an organization name, be sure to update the organization name in these resources as well. #### Related Guides - [Update an organization](https://docs.influxdata.com/influxdb/latest/organizations/update-org/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str org_id: The ID of the organization to update. (required) + :param PatchOrganizationRequest patch_organization_request: The organization update to apply. (required) + :param str zap_trace_span: OpenTracing span context + :return: Organization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_orgs_id_prepare(org_id, patch_organization_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/orgs/{orgID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Organization', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_orgs_id_prepare(self, org_id, patch_organization_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['org_id', 'patch_organization_request', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_orgs_id', all_params, local_var_params) + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `patch_orgs_id`") # noqa: E501 + # verify the required parameter 'patch_organization_request' is set + if ('patch_organization_request' not in local_var_params or + local_var_params['patch_organization_request'] is None): + raise ValueError("Missing the required parameter `patch_organization_request` when calling `patch_orgs_id`") # noqa: E501 + + path_params = {} + if 'org_id' in local_var_params: + path_params['orgID'] = local_var_params['org_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'patch_organization_request' in local_var_params: + body_params = local_var_params['patch_organization_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_orgs(self, post_organization_request, **kwargs): # noqa: E501,D401,D403 + """Create an organization. + + Creates an [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) and returns the newly created organization. #### InfluxDB Cloud - Doesn't allow you to use this endpoint to create organizations. #### Related guides - [Manage organizations](https://docs.influxdata.com/influxdb/latest/organizations) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_orgs(post_organization_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param PostOrganizationRequest post_organization_request: The organization to create. (required) + :param str zap_trace_span: OpenTracing span context + :return: Organization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_orgs_with_http_info(post_organization_request, **kwargs) # noqa: E501 + else: + (data) = self.post_orgs_with_http_info(post_organization_request, **kwargs) # noqa: E501 + return data + + def post_orgs_with_http_info(self, post_organization_request, **kwargs): # noqa: E501,D401,D403 + """Create an organization. + + Creates an [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) and returns the newly created organization. #### InfluxDB Cloud - Doesn't allow you to use this endpoint to create organizations. #### Related guides - [Manage organizations](https://docs.influxdata.com/influxdb/latest/organizations) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_orgs_with_http_info(post_organization_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param PostOrganizationRequest post_organization_request: The organization to create. (required) + :param str zap_trace_span: OpenTracing span context + :return: Organization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_orgs_prepare(post_organization_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/orgs', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Organization', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_orgs_async(self, post_organization_request, **kwargs): # noqa: E501,D401,D403 + """Create an organization. + + Creates an [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) and returns the newly created organization. #### InfluxDB Cloud - Doesn't allow you to use this endpoint to create organizations. #### Related guides - [Manage organizations](https://docs.influxdata.com/influxdb/latest/organizations) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param PostOrganizationRequest post_organization_request: The organization to create. (required) + :param str zap_trace_span: OpenTracing span context + :return: Organization + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_orgs_prepare(post_organization_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/orgs', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Organization', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_orgs_prepare(self, post_organization_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['post_organization_request', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_orgs', all_params, local_var_params) + # verify the required parameter 'post_organization_request' is set + if ('post_organization_request' not in local_var_params or + local_var_params['post_organization_request'] is None): + raise ValueError("Missing the required parameter `post_organization_request` when calling `post_orgs`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'post_organization_request' in local_var_params: + body_params = local_var_params['post_organization_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_orgs_id_members(self, org_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add a member to an organization. + + Add a user to an organization. InfluxDB [users](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) have permission to access InfluxDB. [Members](https://docs.influxdata.com/influxdb/latest/reference/glossary/#member) are users within the organization. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Member permissions are separate from API token permissions. - Member permissions are used in the context of the InfluxDB UI. #### Required permissions - `write-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to add a member to. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) - [Manage members](https://docs.influxdata.com/influxdb/latest/organizations/members/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_orgs_id_members(org_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The ID of the organization. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: The user to add to the organization. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMember + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_orgs_id_members_with_http_info(org_id, add_resource_member_request_body, **kwargs) # noqa: E501 + else: + (data) = self.post_orgs_id_members_with_http_info(org_id, add_resource_member_request_body, **kwargs) # noqa: E501 + return data + + def post_orgs_id_members_with_http_info(self, org_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add a member to an organization. + + Add a user to an organization. InfluxDB [users](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) have permission to access InfluxDB. [Members](https://docs.influxdata.com/influxdb/latest/reference/glossary/#member) are users within the organization. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Member permissions are separate from API token permissions. - Member permissions are used in the context of the InfluxDB UI. #### Required permissions - `write-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to add a member to. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) - [Manage members](https://docs.influxdata.com/influxdb/latest/organizations/members/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_orgs_id_members_with_http_info(org_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The ID of the organization. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: The user to add to the organization. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMember + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_orgs_id_members_prepare(org_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/orgs/{orgID}/members', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMember', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_orgs_id_members_async(self, org_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add a member to an organization. + + Add a user to an organization. InfluxDB [users](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) have permission to access InfluxDB. [Members](https://docs.influxdata.com/influxdb/latest/reference/glossary/#member) are users within the organization. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Limitations - Member permissions are separate from API token permissions. - Member permissions are used in the context of the InfluxDB UI. #### Required permissions - `write-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to add a member to. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/users/) - [Manage members](https://docs.influxdata.com/influxdb/latest/organizations/members/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str org_id: The ID of the organization. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: The user to add to the organization. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMember + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_orgs_id_members_prepare(org_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/orgs/{orgID}/members', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMember', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_orgs_id_members_prepare(self, org_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['org_id', 'add_resource_member_request_body', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_orgs_id_members', all_params, local_var_params) + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `post_orgs_id_members`") # noqa: E501 + # verify the required parameter 'add_resource_member_request_body' is set + if ('add_resource_member_request_body' not in local_var_params or + local_var_params['add_resource_member_request_body'] is None): + raise ValueError("Missing the required parameter `add_resource_member_request_body` when calling `post_orgs_id_members`") # noqa: E501 + + path_params = {} + if 'org_id' in local_var_params: + path_params['orgID'] = local_var_params['org_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'add_resource_member_request_body' in local_var_params: + body_params = local_var_params['add_resource_member_request_body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_orgs_id_owners(self, org_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add an owner to an organization. + + Adds an owner to an organization. Use this endpoint to assign the organization `owner` role to a user. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Required permissions - `write-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to add an owner for. #### Related endpoints - [Authorizations](#tag/Authorizations-(API-tokens)) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_orgs_id_owners(org_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The ID of the organization that you want to add an owner for. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: The user to add as an owner of the organization. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwner + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_orgs_id_owners_with_http_info(org_id, add_resource_member_request_body, **kwargs) # noqa: E501 + else: + (data) = self.post_orgs_id_owners_with_http_info(org_id, add_resource_member_request_body, **kwargs) # noqa: E501 + return data + + def post_orgs_id_owners_with_http_info(self, org_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add an owner to an organization. + + Adds an owner to an organization. Use this endpoint to assign the organization `owner` role to a user. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Required permissions - `write-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to add an owner for. #### Related endpoints - [Authorizations](#tag/Authorizations-(API-tokens)) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_orgs_id_owners_with_http_info(org_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The ID of the organization that you want to add an owner for. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: The user to add as an owner of the organization. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwner + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_orgs_id_owners_prepare(org_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/orgs/{orgID}/owners', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwner', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_orgs_id_owners_async(self, org_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add an owner to an organization. + + Adds an owner to an organization. Use this endpoint to assign the organization `owner` role to a user. #### InfluxDB Cloud - Doesn't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. #### Required permissions - `write-orgs INFLUX_ORG_ID` *`INFLUX_ORG_ID`* is the ID of the organization that you want to add an owner for. #### Related endpoints - [Authorizations](#tag/Authorizations-(API-tokens)) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str org_id: The ID of the organization that you want to add an owner for. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: The user to add as an owner of the organization. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwner + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_orgs_id_owners_prepare(org_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/orgs/{orgID}/owners', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwner', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_orgs_id_owners_prepare(self, org_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['org_id', 'add_resource_member_request_body', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_orgs_id_owners', all_params, local_var_params) + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `post_orgs_id_owners`") # noqa: E501 + # verify the required parameter 'add_resource_member_request_body' is set + if ('add_resource_member_request_body' not in local_var_params or + local_var_params['add_resource_member_request_body'] is None): + raise ValueError("Missing the required parameter `add_resource_member_request_body` when calling `post_orgs_id_owners`") # noqa: E501 + + path_params = {} + if 'org_id' in local_var_params: + path_params['orgID'] = local_var_params['org_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'add_resource_member_request_body' in local_var_params: + body_params = local_var_params['add_resource_member_request_body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/ping_service.py b/frogpilot/third_party/influxdb_client/service/ping_service.py new file mode 100644 index 000000000..2d89a745d --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/ping_service.py @@ -0,0 +1,232 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class PingService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """PingService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def get_ping(self, **kwargs): # noqa: E501,D401,D403 + """Get the status of the instance. + + Retrieves the status and InfluxDB version of the instance. Use this endpoint to monitor uptime for the InfluxDB instance. The response returns a HTTP `204` status code to inform you the instance is available. #### InfluxDB Cloud - Isn't versioned and doesn't return `X-Influxdb-Version` in the headers. #### Related guides - [Influx ping](https://docs.influxdata.com/influxdb/latest/reference/cli/influx/ping/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_ping(async_req=True) + >>> result = thread.get() + + :param async_req bool + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_ping_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_ping_with_http_info(**kwargs) # noqa: E501 + return data + + def get_ping_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """Get the status of the instance. + + Retrieves the status and InfluxDB version of the instance. Use this endpoint to monitor uptime for the InfluxDB instance. The response returns a HTTP `204` status code to inform you the instance is available. #### InfluxDB Cloud - Isn't versioned and doesn't return `X-Influxdb-Version` in the headers. #### Related guides - [Influx ping](https://docs.influxdata.com/influxdb/latest/reference/cli/influx/ping/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_ping_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_ping_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/ping', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_ping_async(self, **kwargs): # noqa: E501,D401,D403 + """Get the status of the instance. + + Retrieves the status and InfluxDB version of the instance. Use this endpoint to monitor uptime for the InfluxDB instance. The response returns a HTTP `204` status code to inform you the instance is available. #### InfluxDB Cloud - Isn't versioned and doesn't return `X-Influxdb-Version` in the headers. #### Related guides - [Influx ping](https://docs.influxdata.com/influxdb/latest/reference/cli/influx/ping/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_ping_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/ping', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_ping_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = [] # noqa: E501 + self._check_operation_params('get_ping', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + + body_params = None + return local_var_params, path_params, query_params, header_params, body_params + + def head_ping(self, **kwargs): # noqa: E501,D401,D403 + """Get the status of the instance. + + Returns the status and InfluxDB version of the instance. Use this endpoint to monitor uptime for the InfluxDB instance. The response returns a HTTP `204` status code to inform you the instance is available. #### InfluxDB Cloud - Isn't versioned and doesn't return `X-Influxdb-Version` in the headers. #### Related guides - [Influx ping](https://docs.influxdata.com/influxdb/latest/reference/cli/influx/ping/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.head_ping(async_req=True) + >>> result = thread.get() + + :param async_req bool + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.head_ping_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.head_ping_with_http_info(**kwargs) # noqa: E501 + return data + + def head_ping_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """Get the status of the instance. + + Returns the status and InfluxDB version of the instance. Use this endpoint to monitor uptime for the InfluxDB instance. The response returns a HTTP `204` status code to inform you the instance is available. #### InfluxDB Cloud - Isn't versioned and doesn't return `X-Influxdb-Version` in the headers. #### Related guides - [Influx ping](https://docs.influxdata.com/influxdb/latest/reference/cli/influx/ping/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.head_ping_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._head_ping_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/ping', 'HEAD', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def head_ping_async(self, **kwargs): # noqa: E501,D401,D403 + """Get the status of the instance. + + Returns the status and InfluxDB version of the instance. Use this endpoint to monitor uptime for the InfluxDB instance. The response returns a HTTP `204` status code to inform you the instance is available. #### InfluxDB Cloud - Isn't versioned and doesn't return `X-Influxdb-Version` in the headers. #### Related guides - [Influx ping](https://docs.influxdata.com/influxdb/latest/reference/cli/influx/ping/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._head_ping_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/ping', 'HEAD', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _head_ping_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = [] # noqa: E501 + self._check_operation_params('head_ping', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + + body_params = None + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/query_service.py b/frogpilot/third_party/influxdb_client/service/query_service.py new file mode 100644 index 000000000..0be81222a --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/query_service.py @@ -0,0 +1,646 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class QueryService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """QueryService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def get_query_suggestions(self, **kwargs): # noqa: E501,D401,D403 + """List Flux query suggestions. + + Lists Flux query suggestions. Each suggestion contains a [Flux function](https://docs.influxdata.com/flux/v0.x/stdlib/all-functions/) name and parameters. Use this endpoint to retrieve a list of Flux query suggestions used in the InfluxDB Flux Query Builder. #### Limitations - When writing a query, avoid using `_functionName()` helper functions exposed by this endpoint. Helper function names have an underscore (`_`) prefix and aren't meant to be used directly in queries--for example: - To sort on a column and keep the top n records, use the `top(n, columns=["_value"], tables=<-)` function instead of the `_sortLimit` helper function. `top` uses `_sortLimit`. #### Related Guides - [List of all Flux functions](https://docs.influxdata.com/flux/v0.x/stdlib/all-functions/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_query_suggestions(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: FluxSuggestions + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_query_suggestions_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_query_suggestions_with_http_info(**kwargs) # noqa: E501 + return data + + def get_query_suggestions_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """List Flux query suggestions. + + Lists Flux query suggestions. Each suggestion contains a [Flux function](https://docs.influxdata.com/flux/v0.x/stdlib/all-functions/) name and parameters. Use this endpoint to retrieve a list of Flux query suggestions used in the InfluxDB Flux Query Builder. #### Limitations - When writing a query, avoid using `_functionName()` helper functions exposed by this endpoint. Helper function names have an underscore (`_`) prefix and aren't meant to be used directly in queries--for example: - To sort on a column and keep the top n records, use the `top(n, columns=["_value"], tables=<-)` function instead of the `_sortLimit` helper function. `top` uses `_sortLimit`. #### Related Guides - [List of all Flux functions](https://docs.influxdata.com/flux/v0.x/stdlib/all-functions/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_query_suggestions_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: FluxSuggestions + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_query_suggestions_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/query/suggestions', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='FluxSuggestions', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_query_suggestions_async(self, **kwargs): # noqa: E501,D401,D403 + """List Flux query suggestions. + + Lists Flux query suggestions. Each suggestion contains a [Flux function](https://docs.influxdata.com/flux/v0.x/stdlib/all-functions/) name and parameters. Use this endpoint to retrieve a list of Flux query suggestions used in the InfluxDB Flux Query Builder. #### Limitations - When writing a query, avoid using `_functionName()` helper functions exposed by this endpoint. Helper function names have an underscore (`_`) prefix and aren't meant to be used directly in queries--for example: - To sort on a column and keep the top n records, use the `top(n, columns=["_value"], tables=<-)` function instead of the `_sortLimit` helper function. `top` uses `_sortLimit`. #### Related Guides - [List of all Flux functions](https://docs.influxdata.com/flux/v0.x/stdlib/all-functions/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: FluxSuggestions + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_query_suggestions_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/query/suggestions', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='FluxSuggestions', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_query_suggestions_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span'] # noqa: E501 + self._check_operation_params('get_query_suggestions', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json', 'text/html']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_query_suggestions_name(self, name, **kwargs): # noqa: E501,D401,D403 + """Retrieve a query suggestion for a branching suggestion. + + Retrieves a query suggestion that contains the name and parameters of the requested function. Use this endpoint to pass a branching suggestion (a Flux function name) and retrieve the parameters of the requested function. #### Limitations - Use `/api/v2/query/suggestions/{name}` (without a trailing slash). `/api/v2/query/suggestions/{name}/` (note the trailing slash) results in a HTTP `301 Moved Permanently` status. - The function `name` must exist and must be spelled correctly. #### Related Guides - [List of all Flux functions](https://docs.influxdata.com/flux/v0.x/stdlib/all-functions/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_query_suggestions_name(name, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str name: A [Flux function](https://docs.influxdata.com/flux/v0.x/stdlib/all-functions/) name. (required) + :param str zap_trace_span: OpenTracing span context + :return: FluxSuggestion + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_query_suggestions_name_with_http_info(name, **kwargs) # noqa: E501 + else: + (data) = self.get_query_suggestions_name_with_http_info(name, **kwargs) # noqa: E501 + return data + + def get_query_suggestions_name_with_http_info(self, name, **kwargs): # noqa: E501,D401,D403 + """Retrieve a query suggestion for a branching suggestion. + + Retrieves a query suggestion that contains the name and parameters of the requested function. Use this endpoint to pass a branching suggestion (a Flux function name) and retrieve the parameters of the requested function. #### Limitations - Use `/api/v2/query/suggestions/{name}` (without a trailing slash). `/api/v2/query/suggestions/{name}/` (note the trailing slash) results in a HTTP `301 Moved Permanently` status. - The function `name` must exist and must be spelled correctly. #### Related Guides - [List of all Flux functions](https://docs.influxdata.com/flux/v0.x/stdlib/all-functions/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_query_suggestions_name_with_http_info(name, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str name: A [Flux function](https://docs.influxdata.com/flux/v0.x/stdlib/all-functions/) name. (required) + :param str zap_trace_span: OpenTracing span context + :return: FluxSuggestion + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_query_suggestions_name_prepare(name, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/query/suggestions/{name}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='FluxSuggestion', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_query_suggestions_name_async(self, name, **kwargs): # noqa: E501,D401,D403 + """Retrieve a query suggestion for a branching suggestion. + + Retrieves a query suggestion that contains the name and parameters of the requested function. Use this endpoint to pass a branching suggestion (a Flux function name) and retrieve the parameters of the requested function. #### Limitations - Use `/api/v2/query/suggestions/{name}` (without a trailing slash). `/api/v2/query/suggestions/{name}/` (note the trailing slash) results in a HTTP `301 Moved Permanently` status. - The function `name` must exist and must be spelled correctly. #### Related Guides - [List of all Flux functions](https://docs.influxdata.com/flux/v0.x/stdlib/all-functions/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str name: A [Flux function](https://docs.influxdata.com/flux/v0.x/stdlib/all-functions/) name. (required) + :param str zap_trace_span: OpenTracing span context + :return: FluxSuggestion + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_query_suggestions_name_prepare(name, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/query/suggestions/{name}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='FluxSuggestion', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_query_suggestions_name_prepare(self, name, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['name', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_query_suggestions_name', all_params, local_var_params) + # verify the required parameter 'name' is set + if ('name' not in local_var_params or + local_var_params['name'] is None): + raise ValueError("Missing the required parameter `name` when calling `get_query_suggestions_name`") # noqa: E501 + + path_params = {} + if 'name' in local_var_params: + path_params['name'] = local_var_params['name'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_query(self, **kwargs): # noqa: E501,D401,D403 + """Query data. + + Retrieves data from buckets. Use this endpoint to send a Flux query request and retrieve data from a bucket. #### Rate limits (with InfluxDB Cloud) `read` rate limits apply. For more information, see [limits and adjustable quotas](https://docs.influxdata.com/influxdb/cloud/account-management/limits/). #### Related guides - [Query with the InfluxDB API](https://docs.influxdata.com/influxdb/latest/query-data/execute-queries/influx-api/) - [Get started with Flux](https://docs.influxdata.com/flux/v0.x/get-started/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_query(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str accept_encoding: The content encoding (usually a compression algorithm) that the client can understand. + :param str content_type: + :param str org: An organization name or ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Queries the bucket in the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or `orgID` parameter. - Queries the bucket in the specified organization. + :param str org_id: An organization ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Queries the bucket in the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or `orgID` parameter. - Queries the bucket in the specified organization. + :param Query query: Flux query or specification to execute + :return: str + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_query_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.post_query_with_http_info(**kwargs) # noqa: E501 + return data + + def post_query_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """Query data. + + Retrieves data from buckets. Use this endpoint to send a Flux query request and retrieve data from a bucket. #### Rate limits (with InfluxDB Cloud) `read` rate limits apply. For more information, see [limits and adjustable quotas](https://docs.influxdata.com/influxdb/cloud/account-management/limits/). #### Related guides - [Query with the InfluxDB API](https://docs.influxdata.com/influxdb/latest/query-data/execute-queries/influx-api/) - [Get started with Flux](https://docs.influxdata.com/flux/v0.x/get-started/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_query_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str accept_encoding: The content encoding (usually a compression algorithm) that the client can understand. + :param str content_type: + :param str org: An organization name or ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Queries the bucket in the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or `orgID` parameter. - Queries the bucket in the specified organization. + :param str org_id: An organization ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Queries the bucket in the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or `orgID` parameter. - Queries the bucket in the specified organization. + :param Query query: Flux query or specification to execute + :return: str + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_query_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/query', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='str', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_query_async(self, **kwargs): # noqa: E501,D401,D403 + """Query data. + + Retrieves data from buckets. Use this endpoint to send a Flux query request and retrieve data from a bucket. #### Rate limits (with InfluxDB Cloud) `read` rate limits apply. For more information, see [limits and adjustable quotas](https://docs.influxdata.com/influxdb/cloud/account-management/limits/). #### Related guides - [Query with the InfluxDB API](https://docs.influxdata.com/influxdb/latest/query-data/execute-queries/influx-api/) - [Get started with Flux](https://docs.influxdata.com/flux/v0.x/get-started/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str accept_encoding: The content encoding (usually a compression algorithm) that the client can understand. + :param str content_type: + :param str org: An organization name or ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Queries the bucket in the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or `orgID` parameter. - Queries the bucket in the specified organization. + :param str org_id: An organization ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Queries the bucket in the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or `orgID` parameter. - Queries the bucket in the specified organization. + :param Query query: Flux query or specification to execute + :return: str + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_query_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/query', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='str', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_query_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span', 'accept_encoding', 'content_type', 'org', 'org_id', 'query'] # noqa: E501 + self._check_operation_params('post_query', all_params, local_var_params) + + path_params = {} + + query_params = [] + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + if 'accept_encoding' in local_var_params: + header_params['Accept-Encoding'] = local_var_params['accept_encoding'] # noqa: E501 + if 'content_type' in local_var_params: + header_params['Content-Type'] = local_var_params['content_type'] # noqa: E501 + + body_params = None + if 'query' in local_var_params: + body_params = local_var_params['query'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/csv', 'application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json', 'application/vnd.flux']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_query_analyze(self, **kwargs): # noqa: E501,D401,D403 + r"""Analyze a Flux query. + + Analyzes a [Flux query](https://docs.influxdata.com/flux/v0.x/) for syntax errors and returns the list of errors. In the following sample query, `from()` is missing the property key. ```json { "query": "from(: \\"iot_center\\")\\ |> range(start: -90d)\\ |> filter(fn: (r) => r._measurement == \\"environment\\")", "type": "flux" } ``` If you pass this in a request to the `/api/v2/analyze` endpoint, InfluxDB returns an `errors` list that contains an error object for the missing key. #### Limitations - The endpoint doesn't validate values in the query--for example: - The following sample query has correct syntax, but contains an incorrect `from()` property key: ```json { "query": "from(foo: \\"iot_center\\")\\ |> range(start: -90d)\\ |> filter(fn: (r) => r._measurement == \\"environment\\")", "type": "flux" } ``` If you pass this in a request to the `/api/v2/analyze` endpoint, InfluxDB returns an empty `errors` list. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_query_analyze(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str content_type: + :param Query query: Flux query to analyze + :return: AnalyzeQueryResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_query_analyze_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.post_query_analyze_with_http_info(**kwargs) # noqa: E501 + return data + + def post_query_analyze_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + r"""Analyze a Flux query. + + Analyzes a [Flux query](https://docs.influxdata.com/flux/v0.x/) for syntax errors and returns the list of errors. In the following sample query, `from()` is missing the property key. ```json { "query": "from(: \\"iot_center\\")\\ |> range(start: -90d)\\ |> filter(fn: (r) => r._measurement == \\"environment\\")", "type": "flux" } ``` If you pass this in a request to the `/api/v2/analyze` endpoint, InfluxDB returns an `errors` list that contains an error object for the missing key. #### Limitations - The endpoint doesn't validate values in the query--for example: - The following sample query has correct syntax, but contains an incorrect `from()` property key: ```json { "query": "from(foo: \\"iot_center\\")\\ |> range(start: -90d)\\ |> filter(fn: (r) => r._measurement == \\"environment\\")", "type": "flux" } ``` If you pass this in a request to the `/api/v2/analyze` endpoint, InfluxDB returns an empty `errors` list. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_query_analyze_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str content_type: + :param Query query: Flux query to analyze + :return: AnalyzeQueryResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_query_analyze_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/query/analyze', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='AnalyzeQueryResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_query_analyze_async(self, **kwargs): # noqa: E501,D401,D403 + r"""Analyze a Flux query. + + Analyzes a [Flux query](https://docs.influxdata.com/flux/v0.x/) for syntax errors and returns the list of errors. In the following sample query, `from()` is missing the property key. ```json { "query": "from(: \\"iot_center\\")\\ |> range(start: -90d)\\ |> filter(fn: (r) => r._measurement == \\"environment\\")", "type": "flux" } ``` If you pass this in a request to the `/api/v2/analyze` endpoint, InfluxDB returns an `errors` list that contains an error object for the missing key. #### Limitations - The endpoint doesn't validate values in the query--for example: - The following sample query has correct syntax, but contains an incorrect `from()` property key: ```json { "query": "from(foo: \\"iot_center\\")\\ |> range(start: -90d)\\ |> filter(fn: (r) => r._measurement == \\"environment\\")", "type": "flux" } ``` If you pass this in a request to the `/api/v2/analyze` endpoint, InfluxDB returns an empty `errors` list. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str content_type: + :param Query query: Flux query to analyze + :return: AnalyzeQueryResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_query_analyze_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/query/analyze', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='AnalyzeQueryResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_query_analyze_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span', 'content_type', 'query'] # noqa: E501 + self._check_operation_params('post_query_analyze', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + if 'content_type' in local_var_params: + header_params['Content-Type'] = local_var_params['content_type'] # noqa: E501 + + body_params = None + if 'query' in local_var_params: + body_params = local_var_params['query'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_query_ast(self, **kwargs): # noqa: E501,D401,D403 + r"""Generate a query Abstract Syntax Tree (AST). + + Analyzes a Flux query and returns a complete package source [Abstract Syntax Tree (AST)](https://docs.influxdata.com/influxdb/latest/reference/glossary/#abstract-syntax-tree-ast) for the query. Use this endpoint for deep query analysis such as debugging unexpected query results. A Flux query AST provides a semantic, tree-like representation with contextual information about the query. The AST illustrates how the query is distributed into different components for execution. #### Limitations - The endpoint doesn't validate values in the query--for example: The following sample Flux query has correct syntax, but contains an incorrect `from()` property key: ```js from(foo: "iot_center") |> range(start: -90d) |> filter(fn: (r) => r._measurement == "environment") ``` The following sample JSON shows how to pass the query in the request body: ```js from(foo: "iot_center") |> range(start: -90d) |> filter(fn: (r) => r._measurement == "environment") ``` The following code sample shows how to pass the query as JSON in the request body: ```json { "query": "from(foo: \\"iot_center\\")\\ |> range(start: -90d)\\ |> filter(fn: (r) => r._measurement == \\"environment\\")" } ``` Passing this to `/api/v2/query/ast` will return a successful response with a generated AST. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_query_ast(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str content_type: + :param LanguageRequest language_request: The Flux query to analyze. + :return: ASTResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_query_ast_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.post_query_ast_with_http_info(**kwargs) # noqa: E501 + return data + + def post_query_ast_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + r"""Generate a query Abstract Syntax Tree (AST). + + Analyzes a Flux query and returns a complete package source [Abstract Syntax Tree (AST)](https://docs.influxdata.com/influxdb/latest/reference/glossary/#abstract-syntax-tree-ast) for the query. Use this endpoint for deep query analysis such as debugging unexpected query results. A Flux query AST provides a semantic, tree-like representation with contextual information about the query. The AST illustrates how the query is distributed into different components for execution. #### Limitations - The endpoint doesn't validate values in the query--for example: The following sample Flux query has correct syntax, but contains an incorrect `from()` property key: ```js from(foo: "iot_center") |> range(start: -90d) |> filter(fn: (r) => r._measurement == "environment") ``` The following sample JSON shows how to pass the query in the request body: ```js from(foo: "iot_center") |> range(start: -90d) |> filter(fn: (r) => r._measurement == "environment") ``` The following code sample shows how to pass the query as JSON in the request body: ```json { "query": "from(foo: \\"iot_center\\")\\ |> range(start: -90d)\\ |> filter(fn: (r) => r._measurement == \\"environment\\")" } ``` Passing this to `/api/v2/query/ast` will return a successful response with a generated AST. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_query_ast_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str content_type: + :param LanguageRequest language_request: The Flux query to analyze. + :return: ASTResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_query_ast_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/query/ast', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ASTResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_query_ast_async(self, **kwargs): # noqa: E501,D401,D403 + r"""Generate a query Abstract Syntax Tree (AST). + + Analyzes a Flux query and returns a complete package source [Abstract Syntax Tree (AST)](https://docs.influxdata.com/influxdb/latest/reference/glossary/#abstract-syntax-tree-ast) for the query. Use this endpoint for deep query analysis such as debugging unexpected query results. A Flux query AST provides a semantic, tree-like representation with contextual information about the query. The AST illustrates how the query is distributed into different components for execution. #### Limitations - The endpoint doesn't validate values in the query--for example: The following sample Flux query has correct syntax, but contains an incorrect `from()` property key: ```js from(foo: "iot_center") |> range(start: -90d) |> filter(fn: (r) => r._measurement == "environment") ``` The following sample JSON shows how to pass the query in the request body: ```js from(foo: "iot_center") |> range(start: -90d) |> filter(fn: (r) => r._measurement == "environment") ``` The following code sample shows how to pass the query as JSON in the request body: ```json { "query": "from(foo: \\"iot_center\\")\\ |> range(start: -90d)\\ |> filter(fn: (r) => r._measurement == \\"environment\\")" } ``` Passing this to `/api/v2/query/ast` will return a successful response with a generated AST. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str content_type: + :param LanguageRequest language_request: The Flux query to analyze. + :return: ASTResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_query_ast_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/query/ast', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ASTResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_query_ast_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span', 'content_type', 'language_request'] # noqa: E501 + self._check_operation_params('post_query_ast', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + if 'content_type' in local_var_params: + header_params['Content-Type'] = local_var_params['content_type'] # noqa: E501 + + body_params = None + if 'language_request' in local_var_params: + body_params = local_var_params['language_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/ready_service.py b/frogpilot/third_party/influxdb_client/service/ready_service.py new file mode 100644 index 000000000..407435ba7 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/ready_service.py @@ -0,0 +1,137 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class ReadyService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """ReadyService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def get_ready(self, **kwargs): # noqa: E501,D401,D403 + """Get the readiness of an instance at startup. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_ready(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: Ready + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_ready_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_ready_with_http_info(**kwargs) # noqa: E501 + return data + + def get_ready_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """Get the readiness of an instance at startup. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_ready_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: Ready + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_ready_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/ready', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Ready', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_ready_async(self, **kwargs): # noqa: E501,D401,D403 + """Get the readiness of an instance at startup. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: Ready + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_ready_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/ready', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Ready', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_ready_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span'] # noqa: E501 + self._check_operation_params('get_ready', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/remote_connections_service.py b/frogpilot/third_party/influxdb_client/service/remote_connections_service.py new file mode 100644 index 000000000..7c591078a --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/remote_connections_service.py @@ -0,0 +1,632 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class RemoteConnectionsService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """RemoteConnectionsService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def delete_remote_connection_by_id(self, remote_id, **kwargs): # noqa: E501,D401,D403 + """Delete a remote connection. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_remote_connection_by_id(remote_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str remote_id: (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_remote_connection_by_id_with_http_info(remote_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_remote_connection_by_id_with_http_info(remote_id, **kwargs) # noqa: E501 + return data + + def delete_remote_connection_by_id_with_http_info(self, remote_id, **kwargs): # noqa: E501,D401,D403 + """Delete a remote connection. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_remote_connection_by_id_with_http_info(remote_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str remote_id: (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_remote_connection_by_id_prepare(remote_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/remotes/{remoteID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_remote_connection_by_id_async(self, remote_id, **kwargs): # noqa: E501,D401,D403 + """Delete a remote connection. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str remote_id: (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_remote_connection_by_id_prepare(remote_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/remotes/{remoteID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_remote_connection_by_id_prepare(self, remote_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['remote_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_remote_connection_by_id', all_params, local_var_params) + # verify the required parameter 'remote_id' is set + if ('remote_id' not in local_var_params or + local_var_params['remote_id'] is None): + raise ValueError("Missing the required parameter `remote_id` when calling `delete_remote_connection_by_id`") # noqa: E501 + + path_params = {} + if 'remote_id' in local_var_params: + path_params['remoteID'] = local_var_params['remote_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_remote_connection_by_id(self, remote_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a remote connection. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_remote_connection_by_id(remote_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str remote_id: (required) + :param str zap_trace_span: OpenTracing span context + :return: RemoteConnection + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_remote_connection_by_id_with_http_info(remote_id, **kwargs) # noqa: E501 + else: + (data) = self.get_remote_connection_by_id_with_http_info(remote_id, **kwargs) # noqa: E501 + return data + + def get_remote_connection_by_id_with_http_info(self, remote_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a remote connection. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_remote_connection_by_id_with_http_info(remote_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str remote_id: (required) + :param str zap_trace_span: OpenTracing span context + :return: RemoteConnection + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_remote_connection_by_id_prepare(remote_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/remotes/{remoteID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='RemoteConnection', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_remote_connection_by_id_async(self, remote_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a remote connection. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str remote_id: (required) + :param str zap_trace_span: OpenTracing span context + :return: RemoteConnection + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_remote_connection_by_id_prepare(remote_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/remotes/{remoteID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='RemoteConnection', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_remote_connection_by_id_prepare(self, remote_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['remote_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_remote_connection_by_id', all_params, local_var_params) + # verify the required parameter 'remote_id' is set + if ('remote_id' not in local_var_params or + local_var_params['remote_id'] is None): + raise ValueError("Missing the required parameter `remote_id` when calling `get_remote_connection_by_id`") # noqa: E501 + + path_params = {} + if 'remote_id' in local_var_params: + path_params['remoteID'] = local_var_params['remote_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_remote_connections(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all remote connections. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_remote_connections(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The organization ID. (required) + :param str zap_trace_span: OpenTracing span context + :param str name: + :param str remote_url: + :return: RemoteConnections + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_remote_connections_with_http_info(org_id, **kwargs) # noqa: E501 + else: + (data) = self.get_remote_connections_with_http_info(org_id, **kwargs) # noqa: E501 + return data + + def get_remote_connections_with_http_info(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all remote connections. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_remote_connections_with_http_info(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The organization ID. (required) + :param str zap_trace_span: OpenTracing span context + :param str name: + :param str remote_url: + :return: RemoteConnections + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_remote_connections_prepare(org_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/remotes', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='RemoteConnections', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_remote_connections_async(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all remote connections. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str org_id: The organization ID. (required) + :param str zap_trace_span: OpenTracing span context + :param str name: + :param str remote_url: + :return: RemoteConnections + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_remote_connections_prepare(org_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/remotes', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='RemoteConnections', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_remote_connections_prepare(self, org_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['org_id', 'zap_trace_span', 'name', 'remote_url'] # noqa: E501 + self._check_operation_params('get_remote_connections', all_params, local_var_params) + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `get_remote_connections`") # noqa: E501 + + path_params = {} + + query_params = [] + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + if 'name' in local_var_params: + query_params.append(('name', local_var_params['name'])) # noqa: E501 + if 'remote_url' in local_var_params: + query_params.append(('remoteURL', local_var_params['remote_url'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_remote_connection_by_id(self, remote_id, remote_connection_update_request, **kwargs): # noqa: E501,D401,D403 + """Update a remote connection. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_remote_connection_by_id(remote_id, remote_connection_update_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str remote_id: (required) + :param RemoteConnectionUpdateRequest remote_connection_update_request: (required) + :param str zap_trace_span: OpenTracing span context + :return: RemoteConnection + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_remote_connection_by_id_with_http_info(remote_id, remote_connection_update_request, **kwargs) # noqa: E501 + else: + (data) = self.patch_remote_connection_by_id_with_http_info(remote_id, remote_connection_update_request, **kwargs) # noqa: E501 + return data + + def patch_remote_connection_by_id_with_http_info(self, remote_id, remote_connection_update_request, **kwargs): # noqa: E501,D401,D403 + """Update a remote connection. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_remote_connection_by_id_with_http_info(remote_id, remote_connection_update_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str remote_id: (required) + :param RemoteConnectionUpdateRequest remote_connection_update_request: (required) + :param str zap_trace_span: OpenTracing span context + :return: RemoteConnection + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_remote_connection_by_id_prepare(remote_id, remote_connection_update_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/remotes/{remoteID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='RemoteConnection', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_remote_connection_by_id_async(self, remote_id, remote_connection_update_request, **kwargs): # noqa: E501,D401,D403 + """Update a remote connection. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str remote_id: (required) + :param RemoteConnectionUpdateRequest remote_connection_update_request: (required) + :param str zap_trace_span: OpenTracing span context + :return: RemoteConnection + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_remote_connection_by_id_prepare(remote_id, remote_connection_update_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/remotes/{remoteID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='RemoteConnection', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_remote_connection_by_id_prepare(self, remote_id, remote_connection_update_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['remote_id', 'remote_connection_update_request', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_remote_connection_by_id', all_params, local_var_params) + # verify the required parameter 'remote_id' is set + if ('remote_id' not in local_var_params or + local_var_params['remote_id'] is None): + raise ValueError("Missing the required parameter `remote_id` when calling `patch_remote_connection_by_id`") # noqa: E501 + # verify the required parameter 'remote_connection_update_request' is set + if ('remote_connection_update_request' not in local_var_params or + local_var_params['remote_connection_update_request'] is None): + raise ValueError("Missing the required parameter `remote_connection_update_request` when calling `patch_remote_connection_by_id`") # noqa: E501 + + path_params = {} + if 'remote_id' in local_var_params: + path_params['remoteID'] = local_var_params['remote_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'remote_connection_update_request' in local_var_params: + body_params = local_var_params['remote_connection_update_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_remote_connection(self, remote_connection_creation_request, **kwargs): # noqa: E501,D401,D403 + """Register a new remote connection. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_remote_connection(remote_connection_creation_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param RemoteConnectionCreationRequest remote_connection_creation_request: (required) + :return: RemoteConnection + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_remote_connection_with_http_info(remote_connection_creation_request, **kwargs) # noqa: E501 + else: + (data) = self.post_remote_connection_with_http_info(remote_connection_creation_request, **kwargs) # noqa: E501 + return data + + def post_remote_connection_with_http_info(self, remote_connection_creation_request, **kwargs): # noqa: E501,D401,D403 + """Register a new remote connection. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_remote_connection_with_http_info(remote_connection_creation_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param RemoteConnectionCreationRequest remote_connection_creation_request: (required) + :return: RemoteConnection + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_remote_connection_prepare(remote_connection_creation_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/remotes', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='RemoteConnection', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_remote_connection_async(self, remote_connection_creation_request, **kwargs): # noqa: E501,D401,D403 + """Register a new remote connection. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param RemoteConnectionCreationRequest remote_connection_creation_request: (required) + :return: RemoteConnection + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_remote_connection_prepare(remote_connection_creation_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/remotes', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='RemoteConnection', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_remote_connection_prepare(self, remote_connection_creation_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['remote_connection_creation_request'] # noqa: E501 + self._check_operation_params('post_remote_connection', all_params, local_var_params) + # verify the required parameter 'remote_connection_creation_request' is set + if ('remote_connection_creation_request' not in local_var_params or + local_var_params['remote_connection_creation_request'] is None): + raise ValueError("Missing the required parameter `remote_connection_creation_request` when calling `post_remote_connection`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + + body_params = None + if 'remote_connection_creation_request' in local_var_params: + body_params = local_var_params['remote_connection_creation_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/replications_service.py b/frogpilot/third_party/influxdb_client/service/replications_service.py new file mode 100644 index 000000000..2130490ab --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/replications_service.py @@ -0,0 +1,768 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class ReplicationsService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """ReplicationsService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def delete_replication_by_id(self, replication_id, **kwargs): # noqa: E501,D401,D403 + """Delete a replication. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_replication_by_id(replication_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str replication_id: (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_replication_by_id_with_http_info(replication_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_replication_by_id_with_http_info(replication_id, **kwargs) # noqa: E501 + return data + + def delete_replication_by_id_with_http_info(self, replication_id, **kwargs): # noqa: E501,D401,D403 + """Delete a replication. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_replication_by_id_with_http_info(replication_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str replication_id: (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_replication_by_id_prepare(replication_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/replications/{replicationID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_replication_by_id_async(self, replication_id, **kwargs): # noqa: E501,D401,D403 + """Delete a replication. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str replication_id: (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_replication_by_id_prepare(replication_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/replications/{replicationID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_replication_by_id_prepare(self, replication_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['replication_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_replication_by_id', all_params, local_var_params) + # verify the required parameter 'replication_id' is set + if ('replication_id' not in local_var_params or + local_var_params['replication_id'] is None): + raise ValueError("Missing the required parameter `replication_id` when calling `delete_replication_by_id`") # noqa: E501 + + path_params = {} + if 'replication_id' in local_var_params: + path_params['replicationID'] = local_var_params['replication_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_replication_by_id(self, replication_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a replication. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_replication_by_id(replication_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str replication_id: (required) + :param str zap_trace_span: OpenTracing span context + :return: Replication + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_replication_by_id_with_http_info(replication_id, **kwargs) # noqa: E501 + else: + (data) = self.get_replication_by_id_with_http_info(replication_id, **kwargs) # noqa: E501 + return data + + def get_replication_by_id_with_http_info(self, replication_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a replication. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_replication_by_id_with_http_info(replication_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str replication_id: (required) + :param str zap_trace_span: OpenTracing span context + :return: Replication + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_replication_by_id_prepare(replication_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/replications/{replicationID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Replication', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_replication_by_id_async(self, replication_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a replication. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str replication_id: (required) + :param str zap_trace_span: OpenTracing span context + :return: Replication + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_replication_by_id_prepare(replication_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/replications/{replicationID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Replication', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_replication_by_id_prepare(self, replication_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['replication_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_replication_by_id', all_params, local_var_params) + # verify the required parameter 'replication_id' is set + if ('replication_id' not in local_var_params or + local_var_params['replication_id'] is None): + raise ValueError("Missing the required parameter `replication_id` when calling `get_replication_by_id`") # noqa: E501 + + path_params = {} + if 'replication_id' in local_var_params: + path_params['replicationID'] = local_var_params['replication_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_replications(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all replications. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_replications(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The organization ID. (required) + :param str zap_trace_span: OpenTracing span context + :param str name: + :param str remote_id: + :param str local_bucket_id: + :return: Replications + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_replications_with_http_info(org_id, **kwargs) # noqa: E501 + else: + (data) = self.get_replications_with_http_info(org_id, **kwargs) # noqa: E501 + return data + + def get_replications_with_http_info(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all replications. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_replications_with_http_info(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The organization ID. (required) + :param str zap_trace_span: OpenTracing span context + :param str name: + :param str remote_id: + :param str local_bucket_id: + :return: Replications + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_replications_prepare(org_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/replications', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Replications', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_replications_async(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all replications. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str org_id: The organization ID. (required) + :param str zap_trace_span: OpenTracing span context + :param str name: + :param str remote_id: + :param str local_bucket_id: + :return: Replications + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_replications_prepare(org_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/replications', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Replications', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_replications_prepare(self, org_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['org_id', 'zap_trace_span', 'name', 'remote_id', 'local_bucket_id'] # noqa: E501 + self._check_operation_params('get_replications', all_params, local_var_params) + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `get_replications`") # noqa: E501 + + path_params = {} + + query_params = [] + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + if 'name' in local_var_params: + query_params.append(('name', local_var_params['name'])) # noqa: E501 + if 'remote_id' in local_var_params: + query_params.append(('remoteID', local_var_params['remote_id'])) # noqa: E501 + if 'local_bucket_id' in local_var_params: + query_params.append(('localBucketID', local_var_params['local_bucket_id'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_replication_by_id(self, replication_id, replication_update_request, **kwargs): # noqa: E501,D401,D403 + """Update a replication. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_replication_by_id(replication_id, replication_update_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str replication_id: (required) + :param ReplicationUpdateRequest replication_update_request: (required) + :param str zap_trace_span: OpenTracing span context + :param bool validate: If true, validate the updated information, but don't save it. + :return: Replication + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_replication_by_id_with_http_info(replication_id, replication_update_request, **kwargs) # noqa: E501 + else: + (data) = self.patch_replication_by_id_with_http_info(replication_id, replication_update_request, **kwargs) # noqa: E501 + return data + + def patch_replication_by_id_with_http_info(self, replication_id, replication_update_request, **kwargs): # noqa: E501,D401,D403 + """Update a replication. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_replication_by_id_with_http_info(replication_id, replication_update_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str replication_id: (required) + :param ReplicationUpdateRequest replication_update_request: (required) + :param str zap_trace_span: OpenTracing span context + :param bool validate: If true, validate the updated information, but don't save it. + :return: Replication + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_replication_by_id_prepare(replication_id, replication_update_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/replications/{replicationID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Replication', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_replication_by_id_async(self, replication_id, replication_update_request, **kwargs): # noqa: E501,D401,D403 + """Update a replication. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str replication_id: (required) + :param ReplicationUpdateRequest replication_update_request: (required) + :param str zap_trace_span: OpenTracing span context + :param bool validate: If true, validate the updated information, but don't save it. + :return: Replication + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_replication_by_id_prepare(replication_id, replication_update_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/replications/{replicationID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Replication', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_replication_by_id_prepare(self, replication_id, replication_update_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['replication_id', 'replication_update_request', 'zap_trace_span', 'validate'] # noqa: E501 + self._check_operation_params('patch_replication_by_id', all_params, local_var_params) + # verify the required parameter 'replication_id' is set + if ('replication_id' not in local_var_params or + local_var_params['replication_id'] is None): + raise ValueError("Missing the required parameter `replication_id` when calling `patch_replication_by_id`") # noqa: E501 + # verify the required parameter 'replication_update_request' is set + if ('replication_update_request' not in local_var_params or + local_var_params['replication_update_request'] is None): + raise ValueError("Missing the required parameter `replication_update_request` when calling `patch_replication_by_id`") # noqa: E501 + + path_params = {} + if 'replication_id' in local_var_params: + path_params['replicationID'] = local_var_params['replication_id'] # noqa: E501 + + query_params = [] + if 'validate' in local_var_params: + query_params.append(('validate', local_var_params['validate'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'replication_update_request' in local_var_params: + body_params = local_var_params['replication_update_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_replication(self, replication_creation_request, **kwargs): # noqa: E501,D401,D403 + """Register a new replication. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_replication(replication_creation_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param ReplicationCreationRequest replication_creation_request: (required) + :param str zap_trace_span: OpenTracing span context + :param bool validate: If true, validate the replication, but don't save it. + :return: Replication + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_replication_with_http_info(replication_creation_request, **kwargs) # noqa: E501 + else: + (data) = self.post_replication_with_http_info(replication_creation_request, **kwargs) # noqa: E501 + return data + + def post_replication_with_http_info(self, replication_creation_request, **kwargs): # noqa: E501,D401,D403 + """Register a new replication. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_replication_with_http_info(replication_creation_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param ReplicationCreationRequest replication_creation_request: (required) + :param str zap_trace_span: OpenTracing span context + :param bool validate: If true, validate the replication, but don't save it. + :return: Replication + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_replication_prepare(replication_creation_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/replications', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Replication', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_replication_async(self, replication_creation_request, **kwargs): # noqa: E501,D401,D403 + """Register a new replication. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param ReplicationCreationRequest replication_creation_request: (required) + :param str zap_trace_span: OpenTracing span context + :param bool validate: If true, validate the replication, but don't save it. + :return: Replication + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_replication_prepare(replication_creation_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/replications', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Replication', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_replication_prepare(self, replication_creation_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['replication_creation_request', 'zap_trace_span', 'validate'] # noqa: E501 + self._check_operation_params('post_replication', all_params, local_var_params) + # verify the required parameter 'replication_creation_request' is set + if ('replication_creation_request' not in local_var_params or + local_var_params['replication_creation_request'] is None): + raise ValueError("Missing the required parameter `replication_creation_request` when calling `post_replication`") # noqa: E501 + + path_params = {} + + query_params = [] + if 'validate' in local_var_params: + query_params.append(('validate', local_var_params['validate'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'replication_creation_request' in local_var_params: + body_params = local_var_params['replication_creation_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_validate_replication_by_id(self, replication_id, **kwargs): # noqa: E501,D401,D403 + """Validate a replication. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_validate_replication_by_id(replication_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str replication_id: (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_validate_replication_by_id_with_http_info(replication_id, **kwargs) # noqa: E501 + else: + (data) = self.post_validate_replication_by_id_with_http_info(replication_id, **kwargs) # noqa: E501 + return data + + def post_validate_replication_by_id_with_http_info(self, replication_id, **kwargs): # noqa: E501,D401,D403 + """Validate a replication. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_validate_replication_by_id_with_http_info(replication_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str replication_id: (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_validate_replication_by_id_prepare(replication_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/replications/{replicationID}/validate', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_validate_replication_by_id_async(self, replication_id, **kwargs): # noqa: E501,D401,D403 + """Validate a replication. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str replication_id: (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_validate_replication_by_id_prepare(replication_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/replications/{replicationID}/validate', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_validate_replication_by_id_prepare(self, replication_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['replication_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_validate_replication_by_id', all_params, local_var_params) + # verify the required parameter 'replication_id' is set + if ('replication_id' not in local_var_params or + local_var_params['replication_id'] is None): + raise ValueError("Missing the required parameter `replication_id` when calling `post_validate_replication_by_id`") # noqa: E501 + + path_params = {} + if 'replication_id' in local_var_params: + path_params['replicationID'] = local_var_params['replication_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/resources_service.py b/frogpilot/third_party/influxdb_client/service/resources_service.py new file mode 100644 index 000000000..d86cfe393 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/resources_service.py @@ -0,0 +1,137 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class ResourcesService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """ResourcesService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def get_resources(self, **kwargs): # noqa: E501,D401,D403 + """List all known resources. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_resources(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: list[str] + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_resources_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_resources_with_http_info(**kwargs) # noqa: E501 + return data + + def get_resources_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """List all known resources. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_resources_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: list[str] + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_resources_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/resources', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='list[str]', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_resources_async(self, **kwargs): # noqa: E501,D401,D403 + """List all known resources. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: list[str] + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_resources_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/resources', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='list[str]', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_resources_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span'] # noqa: E501 + self._check_operation_params('get_resources', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/restore_service.py b/frogpilot/third_party/influxdb_client/service/restore_service.py new file mode 100644 index 000000000..6275ed018 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/restore_service.py @@ -0,0 +1,683 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class RestoreService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """RestoreService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def post_restore_bucket_id(self, bucket_id, body, **kwargs): # noqa: E501,D401,D403 + """Overwrite storage metadata for a bucket with shard info from a backup.. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_restore_bucket_id(bucket_id, body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: The bucket ID. (required) + :param str body: Database info serialized as protobuf. (required) + :param str zap_trace_span: OpenTracing span context + :param str content_type: + :return: str + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_restore_bucket_id_with_http_info(bucket_id, body, **kwargs) # noqa: E501 + else: + (data) = self.post_restore_bucket_id_with_http_info(bucket_id, body, **kwargs) # noqa: E501 + return data + + def post_restore_bucket_id_with_http_info(self, bucket_id, body, **kwargs): # noqa: E501,D401,D403 + """Overwrite storage metadata for a bucket with shard info from a backup.. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_restore_bucket_id_with_http_info(bucket_id, body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str bucket_id: The bucket ID. (required) + :param str body: Database info serialized as protobuf. (required) + :param str zap_trace_span: OpenTracing span context + :param str content_type: + :return: str + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_restore_bucket_id_prepare(bucket_id, body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/restore/bucket/{bucketID}', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='str', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_restore_bucket_id_async(self, bucket_id, body, **kwargs): # noqa: E501,D401,D403 + """Overwrite storage metadata for a bucket with shard info from a backup.. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str bucket_id: The bucket ID. (required) + :param str body: Database info serialized as protobuf. (required) + :param str zap_trace_span: OpenTracing span context + :param str content_type: + :return: str + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_restore_bucket_id_prepare(bucket_id, body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/restore/bucket/{bucketID}', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='str', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_restore_bucket_id_prepare(self, bucket_id, body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['bucket_id', 'body', 'zap_trace_span', 'content_type'] # noqa: E501 + self._check_operation_params('post_restore_bucket_id', all_params, local_var_params) + # verify the required parameter 'bucket_id' is set + if ('bucket_id' not in local_var_params or + local_var_params['bucket_id'] is None): + raise ValueError("Missing the required parameter `bucket_id` when calling `post_restore_bucket_id`") # noqa: E501 + # verify the required parameter 'body' is set + if ('body' not in local_var_params or + local_var_params['body'] is None): + raise ValueError("Missing the required parameter `body` when calling `post_restore_bucket_id`") # noqa: E501 + + path_params = {} + if 'bucket_id' in local_var_params: + path_params['bucketID'] = local_var_params['bucket_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + if 'content_type' in local_var_params: + header_params['Content-Type'] = local_var_params['content_type'] # noqa: E501 + + body_params = None + if 'body' in local_var_params: + body_params = local_var_params['body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['text/plain']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_restore_bucket_metadata(self, bucket_metadata_manifest, **kwargs): # noqa: E501,D401,D403 + """Create a new bucket pre-seeded with shard info from a backup.. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_restore_bucket_metadata(bucket_metadata_manifest, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param BucketMetadataManifest bucket_metadata_manifest: Metadata manifest for a bucket. (required) + :param str zap_trace_span: OpenTracing span context + :return: RestoredBucketMappings + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_restore_bucket_metadata_with_http_info(bucket_metadata_manifest, **kwargs) # noqa: E501 + else: + (data) = self.post_restore_bucket_metadata_with_http_info(bucket_metadata_manifest, **kwargs) # noqa: E501 + return data + + def post_restore_bucket_metadata_with_http_info(self, bucket_metadata_manifest, **kwargs): # noqa: E501,D401,D403 + """Create a new bucket pre-seeded with shard info from a backup.. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_restore_bucket_metadata_with_http_info(bucket_metadata_manifest, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param BucketMetadataManifest bucket_metadata_manifest: Metadata manifest for a bucket. (required) + :param str zap_trace_span: OpenTracing span context + :return: RestoredBucketMappings + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_restore_bucket_metadata_prepare(bucket_metadata_manifest, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/restore/bucketMetadata', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='RestoredBucketMappings', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_restore_bucket_metadata_async(self, bucket_metadata_manifest, **kwargs): # noqa: E501,D401,D403 + """Create a new bucket pre-seeded with shard info from a backup.. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param BucketMetadataManifest bucket_metadata_manifest: Metadata manifest for a bucket. (required) + :param str zap_trace_span: OpenTracing span context + :return: RestoredBucketMappings + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_restore_bucket_metadata_prepare(bucket_metadata_manifest, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/restore/bucketMetadata', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='RestoredBucketMappings', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_restore_bucket_metadata_prepare(self, bucket_metadata_manifest, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['bucket_metadata_manifest', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_restore_bucket_metadata', all_params, local_var_params) + # verify the required parameter 'bucket_metadata_manifest' is set + if ('bucket_metadata_manifest' not in local_var_params or + local_var_params['bucket_metadata_manifest'] is None): + raise ValueError("Missing the required parameter `bucket_metadata_manifest` when calling `post_restore_bucket_metadata`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'bucket_metadata_manifest' in local_var_params: + body_params = local_var_params['bucket_metadata_manifest'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_restore_kv(self, body, **kwargs): # noqa: E501,D401,D403 + """Overwrite the embedded KV store on the server with a backed-up snapshot.. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_restore_kv(body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param file body: Full KV snapshot. (required) + :param str zap_trace_span: OpenTracing span context + :param str content_encoding: The value tells InfluxDB what compression is applied to the line protocol in the request payload. To make an API request with a GZIP payload, send `Content-Encoding: gzip` as a request header. + :param str content_type: + :return: PostRestoreKVResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_restore_kv_with_http_info(body, **kwargs) # noqa: E501 + else: + (data) = self.post_restore_kv_with_http_info(body, **kwargs) # noqa: E501 + return data + + def post_restore_kv_with_http_info(self, body, **kwargs): # noqa: E501,D401,D403 + """Overwrite the embedded KV store on the server with a backed-up snapshot.. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_restore_kv_with_http_info(body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param file body: Full KV snapshot. (required) + :param str zap_trace_span: OpenTracing span context + :param str content_encoding: The value tells InfluxDB what compression is applied to the line protocol in the request payload. To make an API request with a GZIP payload, send `Content-Encoding: gzip` as a request header. + :param str content_type: + :return: PostRestoreKVResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_restore_kv_prepare(body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/restore/kv', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='PostRestoreKVResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_restore_kv_async(self, body, **kwargs): # noqa: E501,D401,D403 + """Overwrite the embedded KV store on the server with a backed-up snapshot.. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param file body: Full KV snapshot. (required) + :param str zap_trace_span: OpenTracing span context + :param str content_encoding: The value tells InfluxDB what compression is applied to the line protocol in the request payload. To make an API request with a GZIP payload, send `Content-Encoding: gzip` as a request header. + :param str content_type: + :return: PostRestoreKVResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_restore_kv_prepare(body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/restore/kv', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='PostRestoreKVResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_restore_kv_prepare(self, body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['body', 'zap_trace_span', 'content_encoding', 'content_type'] # noqa: E501 + self._check_operation_params('post_restore_kv', all_params, local_var_params) + # verify the required parameter 'body' is set + if ('body' not in local_var_params or + local_var_params['body'] is None): + raise ValueError("Missing the required parameter `body` when calling `post_restore_kv`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + if 'content_encoding' in local_var_params: + header_params['Content-Encoding'] = local_var_params['content_encoding'] # noqa: E501 + if 'content_type' in local_var_params: + header_params['Content-Type'] = local_var_params['content_type'] # noqa: E501 + + body_params = None + if 'body' in local_var_params: + body_params = local_var_params['body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['text/plain']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_restore_shard_id(self, shard_id, body, **kwargs): # noqa: E501,D401,D403 + """Restore a TSM snapshot into a shard.. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_restore_shard_id(shard_id, body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str shard_id: The shard ID. (required) + :param file body: TSM snapshot. (required) + :param str zap_trace_span: OpenTracing span context + :param str content_encoding: The value tells InfluxDB what compression is applied to the line protocol in the request payload. To make an API request with a GZIP payload, send `Content-Encoding: gzip` as a request header. + :param str content_type: + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_restore_shard_id_with_http_info(shard_id, body, **kwargs) # noqa: E501 + else: + (data) = self.post_restore_shard_id_with_http_info(shard_id, body, **kwargs) # noqa: E501 + return data + + def post_restore_shard_id_with_http_info(self, shard_id, body, **kwargs): # noqa: E501,D401,D403 + """Restore a TSM snapshot into a shard.. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_restore_shard_id_with_http_info(shard_id, body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str shard_id: The shard ID. (required) + :param file body: TSM snapshot. (required) + :param str zap_trace_span: OpenTracing span context + :param str content_encoding: The value tells InfluxDB what compression is applied to the line protocol in the request payload. To make an API request with a GZIP payload, send `Content-Encoding: gzip` as a request header. + :param str content_type: + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_restore_shard_id_prepare(shard_id, body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/restore/shards/{shardID}', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_restore_shard_id_async(self, shard_id, body, **kwargs): # noqa: E501,D401,D403 + """Restore a TSM snapshot into a shard.. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str shard_id: The shard ID. (required) + :param file body: TSM snapshot. (required) + :param str zap_trace_span: OpenTracing span context + :param str content_encoding: The value tells InfluxDB what compression is applied to the line protocol in the request payload. To make an API request with a GZIP payload, send `Content-Encoding: gzip` as a request header. + :param str content_type: + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_restore_shard_id_prepare(shard_id, body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/restore/shards/{shardID}', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_restore_shard_id_prepare(self, shard_id, body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['shard_id', 'body', 'zap_trace_span', 'content_encoding', 'content_type'] # noqa: E501 + self._check_operation_params('post_restore_shard_id', all_params, local_var_params) + # verify the required parameter 'shard_id' is set + if ('shard_id' not in local_var_params or + local_var_params['shard_id'] is None): + raise ValueError("Missing the required parameter `shard_id` when calling `post_restore_shard_id`") # noqa: E501 + # verify the required parameter 'body' is set + if ('body' not in local_var_params or + local_var_params['body'] is None): + raise ValueError("Missing the required parameter `body` when calling `post_restore_shard_id`") # noqa: E501 + + path_params = {} + if 'shard_id' in local_var_params: + path_params['shardID'] = local_var_params['shard_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + if 'content_encoding' in local_var_params: + header_params['Content-Encoding'] = local_var_params['content_encoding'] # noqa: E501 + if 'content_type' in local_var_params: + header_params['Content-Type'] = local_var_params['content_type'] # noqa: E501 + + body_params = None + if 'body' in local_var_params: + body_params = local_var_params['body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['text/plain']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_restore_sql(self, body, **kwargs): # noqa: E501,D401,D403 + """Overwrite the embedded SQL store on the server with a backed-up snapshot.. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_restore_sql(body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param file body: Full SQL snapshot. (required) + :param str zap_trace_span: OpenTracing span context + :param str content_encoding: The value tells InfluxDB what compression is applied to the line protocol in the request payload. To make an API request with a GZIP payload, send `Content-Encoding: gzip` as a request header. + :param str content_type: + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_restore_sql_with_http_info(body, **kwargs) # noqa: E501 + else: + (data) = self.post_restore_sql_with_http_info(body, **kwargs) # noqa: E501 + return data + + def post_restore_sql_with_http_info(self, body, **kwargs): # noqa: E501,D401,D403 + """Overwrite the embedded SQL store on the server with a backed-up snapshot.. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_restore_sql_with_http_info(body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param file body: Full SQL snapshot. (required) + :param str zap_trace_span: OpenTracing span context + :param str content_encoding: The value tells InfluxDB what compression is applied to the line protocol in the request payload. To make an API request with a GZIP payload, send `Content-Encoding: gzip` as a request header. + :param str content_type: + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_restore_sql_prepare(body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/restore/sql', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_restore_sql_async(self, body, **kwargs): # noqa: E501,D401,D403 + """Overwrite the embedded SQL store on the server with a backed-up snapshot.. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param file body: Full SQL snapshot. (required) + :param str zap_trace_span: OpenTracing span context + :param str content_encoding: The value tells InfluxDB what compression is applied to the line protocol in the request payload. To make an API request with a GZIP payload, send `Content-Encoding: gzip` as a request header. + :param str content_type: + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_restore_sql_prepare(body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/restore/sql', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_restore_sql_prepare(self, body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['body', 'zap_trace_span', 'content_encoding', 'content_type'] # noqa: E501 + self._check_operation_params('post_restore_sql', all_params, local_var_params) + # verify the required parameter 'body' is set + if ('body' not in local_var_params or + local_var_params['body'] is None): + raise ValueError("Missing the required parameter `body` when calling `post_restore_sql`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + if 'content_encoding' in local_var_params: + header_params['Content-Encoding'] = local_var_params['content_encoding'] # noqa: E501 + if 'content_type' in local_var_params: + header_params['Content-Type'] = local_var_params['content_type'] # noqa: E501 + + body_params = None + if 'body' in local_var_params: + body_params = local_var_params['body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['text/plain']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/routes_service.py b/frogpilot/third_party/influxdb_client/service/routes_service.py new file mode 100644 index 000000000..8b79c4f67 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/routes_service.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class RoutesService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """RoutesService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def get_routes(self, **kwargs): # noqa: E501,D401,D403 + """List all top level routes. + + Retrieves all the top level routes for the InfluxDB API. #### Limitations - Only returns top level routes--for example, the response contains `"tasks":"/api/v2/tasks"`, and doesn't contain resource-specific routes for tasks (`/api/v2/tasks/TASK_ID/...`). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_routes(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: Routes + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_routes_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_routes_with_http_info(**kwargs) # noqa: E501 + return data + + def get_routes_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """List all top level routes. + + Retrieves all the top level routes for the InfluxDB API. #### Limitations - Only returns top level routes--for example, the response contains `"tasks":"/api/v2/tasks"`, and doesn't contain resource-specific routes for tasks (`/api/v2/tasks/TASK_ID/...`). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_routes_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: Routes + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_routes_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Routes', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_routes_async(self, **kwargs): # noqa: E501,D401,D403 + """List all top level routes. + + Retrieves all the top level routes for the InfluxDB API. #### Limitations - Only returns top level routes--for example, the response contains `"tasks":"/api/v2/tasks"`, and doesn't contain resource-specific routes for tasks (`/api/v2/tasks/TASK_ID/...`). + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: Routes + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_routes_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Routes', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_routes_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span'] # noqa: E501 + self._check_operation_params('get_routes', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/rules_service.py b/frogpilot/third_party/influxdb_client/service/rules_service.py new file mode 100644 index 000000000..38a74f4a6 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/rules_service.py @@ -0,0 +1,146 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class RulesService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """RulesService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def get_notification_rules_id_query(self, rule_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a notification rule query. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_notification_rules_id_query(rule_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: FluxResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_notification_rules_id_query_with_http_info(rule_id, **kwargs) # noqa: E501 + else: + (data) = self.get_notification_rules_id_query_with_http_info(rule_id, **kwargs) # noqa: E501 + return data + + def get_notification_rules_id_query_with_http_info(self, rule_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a notification rule query. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_notification_rules_id_query_with_http_info(rule_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: FluxResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_notification_rules_id_query_prepare(rule_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/notificationRules/{ruleID}/query', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='FluxResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_notification_rules_id_query_async(self, rule_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a notification rule query. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str rule_id: The notification rule ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: FluxResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_notification_rules_id_query_prepare(rule_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/notificationRules/{ruleID}/query', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='FluxResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_notification_rules_id_query_prepare(self, rule_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['rule_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_notification_rules_id_query', all_params, local_var_params) + # verify the required parameter 'rule_id' is set + if ('rule_id' not in local_var_params or + local_var_params['rule_id'] is None): + raise ValueError("Missing the required parameter `rule_id` when calling `get_notification_rules_id_query`") # noqa: E501 + + path_params = {} + if 'rule_id' in local_var_params: + path_params['ruleID'] = local_var_params['rule_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/scraper_targets_service.py b/frogpilot/third_party/influxdb_client/service/scraper_targets_service.py new file mode 100644 index 000000000..144a39314 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/scraper_targets_service.py @@ -0,0 +1,1748 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class ScraperTargetsService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """ScraperTargetsService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def delete_scrapers_id(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """Delete a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_scrapers_id(scraper_target_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The identifier of the scraper target. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_scrapers_id_with_http_info(scraper_target_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_scrapers_id_with_http_info(scraper_target_id, **kwargs) # noqa: E501 + return data + + def delete_scrapers_id_with_http_info(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """Delete a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_scrapers_id_with_http_info(scraper_target_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The identifier of the scraper target. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_scrapers_id_prepare(scraper_target_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_scrapers_id_async(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """Delete a scraper target. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str scraper_target_id: The identifier of the scraper target. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_scrapers_id_prepare(scraper_target_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_scrapers_id_prepare(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['scraper_target_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_scrapers_id', all_params, local_var_params) + # verify the required parameter 'scraper_target_id' is set + if ('scraper_target_id' not in local_var_params or + local_var_params['scraper_target_id'] is None): + raise ValueError("Missing the required parameter `scraper_target_id` when calling `delete_scrapers_id`") # noqa: E501 + + path_params = {} + if 'scraper_target_id' in local_var_params: + path_params['scraperTargetID'] = local_var_params['scraper_target_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_scrapers_id_labels_id(self, scraper_target_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_scrapers_id_labels_id(scraper_target_id, label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param str label_id: The label ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_scrapers_id_labels_id_with_http_info(scraper_target_id, label_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_scrapers_id_labels_id_with_http_info(scraper_target_id, label_id, **kwargs) # noqa: E501 + return data + + def delete_scrapers_id_labels_id_with_http_info(self, scraper_target_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_scrapers_id_labels_id_with_http_info(scraper_target_id, label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param str label_id: The label ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_scrapers_id_labels_id_prepare(scraper_target_id, label_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_scrapers_id_labels_id_async(self, scraper_target_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a scraper target. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param str label_id: The label ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_scrapers_id_labels_id_prepare(scraper_target_id, label_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_scrapers_id_labels_id_prepare(self, scraper_target_id, label_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['scraper_target_id', 'label_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_scrapers_id_labels_id', all_params, local_var_params) + # verify the required parameter 'scraper_target_id' is set + if ('scraper_target_id' not in local_var_params or + local_var_params['scraper_target_id'] is None): + raise ValueError("Missing the required parameter `scraper_target_id` when calling `delete_scrapers_id_labels_id`") # noqa: E501 + # verify the required parameter 'label_id' is set + if ('label_id' not in local_var_params or + local_var_params['label_id'] is None): + raise ValueError("Missing the required parameter `label_id` when calling `delete_scrapers_id_labels_id`") # noqa: E501 + + path_params = {} + if 'scraper_target_id' in local_var_params: + path_params['scraperTargetID'] = local_var_params['scraper_target_id'] # noqa: E501 + if 'label_id' in local_var_params: + path_params['labelID'] = local_var_params['label_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_scrapers_id_members_id(self, user_id, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """Remove a member from a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_scrapers_id_members_id(user_id, scraper_target_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of member to remove. (required) + :param str scraper_target_id: The scraper target ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_scrapers_id_members_id_with_http_info(user_id, scraper_target_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_scrapers_id_members_id_with_http_info(user_id, scraper_target_id, **kwargs) # noqa: E501 + return data + + def delete_scrapers_id_members_id_with_http_info(self, user_id, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """Remove a member from a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_scrapers_id_members_id_with_http_info(user_id, scraper_target_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of member to remove. (required) + :param str scraper_target_id: The scraper target ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_scrapers_id_members_id_prepare(user_id, scraper_target_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}/members/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_scrapers_id_members_id_async(self, user_id, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """Remove a member from a scraper target. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str user_id: The ID of member to remove. (required) + :param str scraper_target_id: The scraper target ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_scrapers_id_members_id_prepare(user_id, scraper_target_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}/members/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_scrapers_id_members_id_prepare(self, user_id, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['user_id', 'scraper_target_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_scrapers_id_members_id', all_params, local_var_params) + # verify the required parameter 'user_id' is set + if ('user_id' not in local_var_params or + local_var_params['user_id'] is None): + raise ValueError("Missing the required parameter `user_id` when calling `delete_scrapers_id_members_id`") # noqa: E501 + # verify the required parameter 'scraper_target_id' is set + if ('scraper_target_id' not in local_var_params or + local_var_params['scraper_target_id'] is None): + raise ValueError("Missing the required parameter `scraper_target_id` when calling `delete_scrapers_id_members_id`") # noqa: E501 + + path_params = {} + if 'user_id' in local_var_params: + path_params['userID'] = local_var_params['user_id'] # noqa: E501 + if 'scraper_target_id' in local_var_params: + path_params['scraperTargetID'] = local_var_params['scraper_target_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_scrapers_id_owners_id(self, user_id, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """Remove an owner from a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_scrapers_id_owners_id(user_id, scraper_target_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of owner to remove. (required) + :param str scraper_target_id: The scraper target ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_scrapers_id_owners_id_with_http_info(user_id, scraper_target_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_scrapers_id_owners_id_with_http_info(user_id, scraper_target_id, **kwargs) # noqa: E501 + return data + + def delete_scrapers_id_owners_id_with_http_info(self, user_id, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """Remove an owner from a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_scrapers_id_owners_id_with_http_info(user_id, scraper_target_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of owner to remove. (required) + :param str scraper_target_id: The scraper target ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_scrapers_id_owners_id_prepare(user_id, scraper_target_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}/owners/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_scrapers_id_owners_id_async(self, user_id, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """Remove an owner from a scraper target. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str user_id: The ID of owner to remove. (required) + :param str scraper_target_id: The scraper target ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_scrapers_id_owners_id_prepare(user_id, scraper_target_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}/owners/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_scrapers_id_owners_id_prepare(self, user_id, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['user_id', 'scraper_target_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_scrapers_id_owners_id', all_params, local_var_params) + # verify the required parameter 'user_id' is set + if ('user_id' not in local_var_params or + local_var_params['user_id'] is None): + raise ValueError("Missing the required parameter `user_id` when calling `delete_scrapers_id_owners_id`") # noqa: E501 + # verify the required parameter 'scraper_target_id' is set + if ('scraper_target_id' not in local_var_params or + local_var_params['scraper_target_id'] is None): + raise ValueError("Missing the required parameter `scraper_target_id` when calling `delete_scrapers_id_owners_id`") # noqa: E501 + + path_params = {} + if 'user_id' in local_var_params: + path_params['userID'] = local_var_params['user_id'] # noqa: E501 + if 'scraper_target_id' in local_var_params: + path_params['scraperTargetID'] = local_var_params['scraper_target_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_scrapers(self, **kwargs): # noqa: E501,D401,D403 + """List all scraper targets. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_scrapers(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str name: Specifies the name of the scraper target. + :param list[str] id: List of scraper target IDs to return. If both `id` and `owner` are specified, only `id` is used. + :param str org_id: Specifies the organization ID of the scraper target. + :param str org: Specifies the organization name of the scraper target. + :return: ScraperTargetResponses + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_scrapers_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_scrapers_with_http_info(**kwargs) # noqa: E501 + return data + + def get_scrapers_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """List all scraper targets. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_scrapers_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str name: Specifies the name of the scraper target. + :param list[str] id: List of scraper target IDs to return. If both `id` and `owner` are specified, only `id` is used. + :param str org_id: Specifies the organization ID of the scraper target. + :param str org: Specifies the organization name of the scraper target. + :return: ScraperTargetResponses + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_scrapers_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scrapers', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ScraperTargetResponses', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_scrapers_async(self, **kwargs): # noqa: E501,D401,D403 + """List all scraper targets. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str name: Specifies the name of the scraper target. + :param list[str] id: List of scraper target IDs to return. If both `id` and `owner` are specified, only `id` is used. + :param str org_id: Specifies the organization ID of the scraper target. + :param str org: Specifies the organization name of the scraper target. + :return: ScraperTargetResponses + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_scrapers_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scrapers', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ScraperTargetResponses', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_scrapers_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span', 'name', 'id', 'org_id', 'org'] # noqa: E501 + self._check_operation_params('get_scrapers', all_params, local_var_params) + + path_params = {} + + query_params = [] + if 'name' in local_var_params: + query_params.append(('name', local_var_params['name'])) # noqa: E501 + if 'id' in local_var_params: + query_params.append(('id', local_var_params['id'])) # noqa: E501 + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_scrapers_id(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_scrapers_id(scraper_target_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The identifier of the scraper target. (required) + :param str zap_trace_span: OpenTracing span context + :return: ScraperTargetResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_scrapers_id_with_http_info(scraper_target_id, **kwargs) # noqa: E501 + else: + (data) = self.get_scrapers_id_with_http_info(scraper_target_id, **kwargs) # noqa: E501 + return data + + def get_scrapers_id_with_http_info(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_scrapers_id_with_http_info(scraper_target_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The identifier of the scraper target. (required) + :param str zap_trace_span: OpenTracing span context + :return: ScraperTargetResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_scrapers_id_prepare(scraper_target_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ScraperTargetResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_scrapers_id_async(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a scraper target. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str scraper_target_id: The identifier of the scraper target. (required) + :param str zap_trace_span: OpenTracing span context + :return: ScraperTargetResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_scrapers_id_prepare(scraper_target_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ScraperTargetResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_scrapers_id_prepare(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['scraper_target_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_scrapers_id', all_params, local_var_params) + # verify the required parameter 'scraper_target_id' is set + if ('scraper_target_id' not in local_var_params or + local_var_params['scraper_target_id'] is None): + raise ValueError("Missing the required parameter `scraper_target_id` when calling `get_scrapers_id`") # noqa: E501 + + path_params = {} + if 'scraper_target_id' in local_var_params: + path_params['scraperTargetID'] = local_var_params['scraper_target_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_scrapers_id_labels(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_scrapers_id_labels(scraper_target_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_scrapers_id_labels_with_http_info(scraper_target_id, **kwargs) # noqa: E501 + else: + (data) = self.get_scrapers_id_labels_with_http_info(scraper_target_id, **kwargs) # noqa: E501 + return data + + def get_scrapers_id_labels_with_http_info(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_scrapers_id_labels_with_http_info(scraper_target_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_scrapers_id_labels_prepare(scraper_target_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_scrapers_id_labels_async(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a scraper target. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_scrapers_id_labels_prepare(scraper_target_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_scrapers_id_labels_prepare(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['scraper_target_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_scrapers_id_labels', all_params, local_var_params) + # verify the required parameter 'scraper_target_id' is set + if ('scraper_target_id' not in local_var_params or + local_var_params['scraper_target_id'] is None): + raise ValueError("Missing the required parameter `scraper_target_id` when calling `get_scrapers_id_labels`") # noqa: E501 + + path_params = {} + if 'scraper_target_id' in local_var_params: + path_params['scraperTargetID'] = local_var_params['scraper_target_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_scrapers_id_members(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """List all users with member privileges for a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_scrapers_id_members(scraper_target_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMembers + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_scrapers_id_members_with_http_info(scraper_target_id, **kwargs) # noqa: E501 + else: + (data) = self.get_scrapers_id_members_with_http_info(scraper_target_id, **kwargs) # noqa: E501 + return data + + def get_scrapers_id_members_with_http_info(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """List all users with member privileges for a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_scrapers_id_members_with_http_info(scraper_target_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMembers + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_scrapers_id_members_prepare(scraper_target_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}/members', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMembers', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_scrapers_id_members_async(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """List all users with member privileges for a scraper target. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMembers + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_scrapers_id_members_prepare(scraper_target_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}/members', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMembers', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_scrapers_id_members_prepare(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['scraper_target_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_scrapers_id_members', all_params, local_var_params) + # verify the required parameter 'scraper_target_id' is set + if ('scraper_target_id' not in local_var_params or + local_var_params['scraper_target_id'] is None): + raise ValueError("Missing the required parameter `scraper_target_id` when calling `get_scrapers_id_members`") # noqa: E501 + + path_params = {} + if 'scraper_target_id' in local_var_params: + path_params['scraperTargetID'] = local_var_params['scraper_target_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_scrapers_id_owners(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """List all owners of a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_scrapers_id_owners(scraper_target_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwners + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_scrapers_id_owners_with_http_info(scraper_target_id, **kwargs) # noqa: E501 + else: + (data) = self.get_scrapers_id_owners_with_http_info(scraper_target_id, **kwargs) # noqa: E501 + return data + + def get_scrapers_id_owners_with_http_info(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """List all owners of a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_scrapers_id_owners_with_http_info(scraper_target_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwners + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_scrapers_id_owners_prepare(scraper_target_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}/owners', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwners', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_scrapers_id_owners_async(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + """List all owners of a scraper target. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwners + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_scrapers_id_owners_prepare(scraper_target_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}/owners', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwners', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_scrapers_id_owners_prepare(self, scraper_target_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['scraper_target_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_scrapers_id_owners', all_params, local_var_params) + # verify the required parameter 'scraper_target_id' is set + if ('scraper_target_id' not in local_var_params or + local_var_params['scraper_target_id'] is None): + raise ValueError("Missing the required parameter `scraper_target_id` when calling `get_scrapers_id_owners`") # noqa: E501 + + path_params = {} + if 'scraper_target_id' in local_var_params: + path_params['scraperTargetID'] = local_var_params['scraper_target_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_scrapers_id(self, scraper_target_id, scraper_target_request, **kwargs): # noqa: E501,D401,D403 + """Update a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_scrapers_id(scraper_target_id, scraper_target_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The identifier of the scraper target. (required) + :param ScraperTargetRequest scraper_target_request: Scraper target update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: ScraperTargetResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_scrapers_id_with_http_info(scraper_target_id, scraper_target_request, **kwargs) # noqa: E501 + else: + (data) = self.patch_scrapers_id_with_http_info(scraper_target_id, scraper_target_request, **kwargs) # noqa: E501 + return data + + def patch_scrapers_id_with_http_info(self, scraper_target_id, scraper_target_request, **kwargs): # noqa: E501,D401,D403 + """Update a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_scrapers_id_with_http_info(scraper_target_id, scraper_target_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The identifier of the scraper target. (required) + :param ScraperTargetRequest scraper_target_request: Scraper target update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: ScraperTargetResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_scrapers_id_prepare(scraper_target_id, scraper_target_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ScraperTargetResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_scrapers_id_async(self, scraper_target_id, scraper_target_request, **kwargs): # noqa: E501,D401,D403 + """Update a scraper target. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str scraper_target_id: The identifier of the scraper target. (required) + :param ScraperTargetRequest scraper_target_request: Scraper target update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: ScraperTargetResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_scrapers_id_prepare(scraper_target_id, scraper_target_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ScraperTargetResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_scrapers_id_prepare(self, scraper_target_id, scraper_target_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['scraper_target_id', 'scraper_target_request', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_scrapers_id', all_params, local_var_params) + # verify the required parameter 'scraper_target_id' is set + if ('scraper_target_id' not in local_var_params or + local_var_params['scraper_target_id'] is None): + raise ValueError("Missing the required parameter `scraper_target_id` when calling `patch_scrapers_id`") # noqa: E501 + # verify the required parameter 'scraper_target_request' is set + if ('scraper_target_request' not in local_var_params or + local_var_params['scraper_target_request'] is None): + raise ValueError("Missing the required parameter `scraper_target_request` when calling `patch_scrapers_id`") # noqa: E501 + + path_params = {} + if 'scraper_target_id' in local_var_params: + path_params['scraperTargetID'] = local_var_params['scraper_target_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'scraper_target_request' in local_var_params: + body_params = local_var_params['scraper_target_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_scrapers(self, scraper_target_request, **kwargs): # noqa: E501,D401,D403 + """Create a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_scrapers(scraper_target_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param ScraperTargetRequest scraper_target_request: Scraper target to create (required) + :param str zap_trace_span: OpenTracing span context + :return: ScraperTargetResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_scrapers_with_http_info(scraper_target_request, **kwargs) # noqa: E501 + else: + (data) = self.post_scrapers_with_http_info(scraper_target_request, **kwargs) # noqa: E501 + return data + + def post_scrapers_with_http_info(self, scraper_target_request, **kwargs): # noqa: E501,D401,D403 + """Create a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_scrapers_with_http_info(scraper_target_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param ScraperTargetRequest scraper_target_request: Scraper target to create (required) + :param str zap_trace_span: OpenTracing span context + :return: ScraperTargetResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_scrapers_prepare(scraper_target_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scrapers', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ScraperTargetResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_scrapers_async(self, scraper_target_request, **kwargs): # noqa: E501,D401,D403 + """Create a scraper target. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param ScraperTargetRequest scraper_target_request: Scraper target to create (required) + :param str zap_trace_span: OpenTracing span context + :return: ScraperTargetResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_scrapers_prepare(scraper_target_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scrapers', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ScraperTargetResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_scrapers_prepare(self, scraper_target_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['scraper_target_request', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_scrapers', all_params, local_var_params) + # verify the required parameter 'scraper_target_request' is set + if ('scraper_target_request' not in local_var_params or + local_var_params['scraper_target_request'] is None): + raise ValueError("Missing the required parameter `scraper_target_request` when calling `post_scrapers`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'scraper_target_request' in local_var_params: + body_params = local_var_params['scraper_target_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_scrapers_id_labels(self, scraper_target_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_scrapers_id_labels(scraper_target_id, label_mapping, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_scrapers_id_labels_with_http_info(scraper_target_id, label_mapping, **kwargs) # noqa: E501 + else: + (data) = self.post_scrapers_id_labels_with_http_info(scraper_target_id, label_mapping, **kwargs) # noqa: E501 + return data + + def post_scrapers_id_labels_with_http_info(self, scraper_target_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_scrapers_id_labels_with_http_info(scraper_target_id, label_mapping, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_scrapers_id_labels_prepare(scraper_target_id, label_mapping, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_scrapers_id_labels_async(self, scraper_target_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a scraper target. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_scrapers_id_labels_prepare(scraper_target_id, label_mapping, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_scrapers_id_labels_prepare(self, scraper_target_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['scraper_target_id', 'label_mapping', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_scrapers_id_labels', all_params, local_var_params) + # verify the required parameter 'scraper_target_id' is set + if ('scraper_target_id' not in local_var_params or + local_var_params['scraper_target_id'] is None): + raise ValueError("Missing the required parameter `scraper_target_id` when calling `post_scrapers_id_labels`") # noqa: E501 + # verify the required parameter 'label_mapping' is set + if ('label_mapping' not in local_var_params or + local_var_params['label_mapping'] is None): + raise ValueError("Missing the required parameter `label_mapping` when calling `post_scrapers_id_labels`") # noqa: E501 + + path_params = {} + if 'scraper_target_id' in local_var_params: + path_params['scraperTargetID'] = local_var_params['scraper_target_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'label_mapping' in local_var_params: + body_params = local_var_params['label_mapping'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_scrapers_id_members(self, scraper_target_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add a member to a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_scrapers_id_members(scraper_target_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: User to add as member (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMember + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_scrapers_id_members_with_http_info(scraper_target_id, add_resource_member_request_body, **kwargs) # noqa: E501 + else: + (data) = self.post_scrapers_id_members_with_http_info(scraper_target_id, add_resource_member_request_body, **kwargs) # noqa: E501 + return data + + def post_scrapers_id_members_with_http_info(self, scraper_target_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add a member to a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_scrapers_id_members_with_http_info(scraper_target_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: User to add as member (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMember + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_scrapers_id_members_prepare(scraper_target_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}/members', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMember', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_scrapers_id_members_async(self, scraper_target_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add a member to a scraper target. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: User to add as member (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMember + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_scrapers_id_members_prepare(scraper_target_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}/members', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMember', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_scrapers_id_members_prepare(self, scraper_target_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['scraper_target_id', 'add_resource_member_request_body', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_scrapers_id_members', all_params, local_var_params) + # verify the required parameter 'scraper_target_id' is set + if ('scraper_target_id' not in local_var_params or + local_var_params['scraper_target_id'] is None): + raise ValueError("Missing the required parameter `scraper_target_id` when calling `post_scrapers_id_members`") # noqa: E501 + # verify the required parameter 'add_resource_member_request_body' is set + if ('add_resource_member_request_body' not in local_var_params or + local_var_params['add_resource_member_request_body'] is None): + raise ValueError("Missing the required parameter `add_resource_member_request_body` when calling `post_scrapers_id_members`") # noqa: E501 + + path_params = {} + if 'scraper_target_id' in local_var_params: + path_params['scraperTargetID'] = local_var_params['scraper_target_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'add_resource_member_request_body' in local_var_params: + body_params = local_var_params['add_resource_member_request_body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_scrapers_id_owners(self, scraper_target_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add an owner to a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_scrapers_id_owners(scraper_target_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: User to add as owner (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwner + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_scrapers_id_owners_with_http_info(scraper_target_id, add_resource_member_request_body, **kwargs) # noqa: E501 + else: + (data) = self.post_scrapers_id_owners_with_http_info(scraper_target_id, add_resource_member_request_body, **kwargs) # noqa: E501 + return data + + def post_scrapers_id_owners_with_http_info(self, scraper_target_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add an owner to a scraper target. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_scrapers_id_owners_with_http_info(scraper_target_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: User to add as owner (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwner + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_scrapers_id_owners_prepare(scraper_target_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}/owners', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwner', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_scrapers_id_owners_async(self, scraper_target_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add an owner to a scraper target. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str scraper_target_id: The scraper target ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: User to add as owner (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwner + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_scrapers_id_owners_prepare(scraper_target_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/scrapers/{scraperTargetID}/owners', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwner', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_scrapers_id_owners_prepare(self, scraper_target_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['scraper_target_id', 'add_resource_member_request_body', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_scrapers_id_owners', all_params, local_var_params) + # verify the required parameter 'scraper_target_id' is set + if ('scraper_target_id' not in local_var_params or + local_var_params['scraper_target_id'] is None): + raise ValueError("Missing the required parameter `scraper_target_id` when calling `post_scrapers_id_owners`") # noqa: E501 + # verify the required parameter 'add_resource_member_request_body' is set + if ('add_resource_member_request_body' not in local_var_params or + local_var_params['add_resource_member_request_body'] is None): + raise ValueError("Missing the required parameter `add_resource_member_request_body` when calling `post_scrapers_id_owners`") # noqa: E501 + + path_params = {} + if 'scraper_target_id' in local_var_params: + path_params['scraperTargetID'] = local_var_params['scraper_target_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'add_resource_member_request_body' in local_var_params: + body_params = local_var_params['add_resource_member_request_body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/secrets_service.py b/frogpilot/third_party/influxdb_client/service/secrets_service.py new file mode 100644 index 000000000..495ac9520 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/secrets_service.py @@ -0,0 +1,529 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class SecretsService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """SecretsService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def delete_orgs_id_secrets_id(self, org_id, secret_id, **kwargs): # noqa: E501,D401,D403 + """Delete a secret from an organization. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_orgs_id_secrets_id(org_id, secret_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The organization ID. (required) + :param str secret_id: The secret ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_orgs_id_secrets_id_with_http_info(org_id, secret_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_orgs_id_secrets_id_with_http_info(org_id, secret_id, **kwargs) # noqa: E501 + return data + + def delete_orgs_id_secrets_id_with_http_info(self, org_id, secret_id, **kwargs): # noqa: E501,D401,D403 + """Delete a secret from an organization. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_orgs_id_secrets_id_with_http_info(org_id, secret_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The organization ID. (required) + :param str secret_id: The secret ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_orgs_id_secrets_id_prepare(org_id, secret_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/orgs/{orgID}/secrets/{secretID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_orgs_id_secrets_id_async(self, org_id, secret_id, **kwargs): # noqa: E501,D401,D403 + """Delete a secret from an organization. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str org_id: The organization ID. (required) + :param str secret_id: The secret ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_orgs_id_secrets_id_prepare(org_id, secret_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/orgs/{orgID}/secrets/{secretID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_orgs_id_secrets_id_prepare(self, org_id, secret_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['org_id', 'secret_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_orgs_id_secrets_id', all_params, local_var_params) + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `delete_orgs_id_secrets_id`") # noqa: E501 + # verify the required parameter 'secret_id' is set + if ('secret_id' not in local_var_params or + local_var_params['secret_id'] is None): + raise ValueError("Missing the required parameter `secret_id` when calling `delete_orgs_id_secrets_id`") # noqa: E501 + + path_params = {} + if 'org_id' in local_var_params: + path_params['orgID'] = local_var_params['org_id'] # noqa: E501 + if 'secret_id' in local_var_params: + path_params['secretID'] = local_var_params['secret_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_orgs_id_secrets(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all secret keys for an organization. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_orgs_id_secrets(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The organization ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: SecretKeysResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_orgs_id_secrets_with_http_info(org_id, **kwargs) # noqa: E501 + else: + (data) = self.get_orgs_id_secrets_with_http_info(org_id, **kwargs) # noqa: E501 + return data + + def get_orgs_id_secrets_with_http_info(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all secret keys for an organization. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_orgs_id_secrets_with_http_info(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The organization ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: SecretKeysResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_orgs_id_secrets_prepare(org_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/orgs/{orgID}/secrets', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='SecretKeysResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_orgs_id_secrets_async(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List all secret keys for an organization. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str org_id: The organization ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: SecretKeysResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_orgs_id_secrets_prepare(org_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/orgs/{orgID}/secrets', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='SecretKeysResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_orgs_id_secrets_prepare(self, org_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['org_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_orgs_id_secrets', all_params, local_var_params) + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `get_orgs_id_secrets`") # noqa: E501 + + path_params = {} + if 'org_id' in local_var_params: + path_params['orgID'] = local_var_params['org_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_orgs_id_secrets(self, org_id, request_body, **kwargs): # noqa: E501,D401,D403 + """Update secrets in an organization. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_orgs_id_secrets(org_id, request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The organization ID. (required) + :param dict(str, str) request_body: Secret key value pairs to update/add (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_orgs_id_secrets_with_http_info(org_id, request_body, **kwargs) # noqa: E501 + else: + (data) = self.patch_orgs_id_secrets_with_http_info(org_id, request_body, **kwargs) # noqa: E501 + return data + + def patch_orgs_id_secrets_with_http_info(self, org_id, request_body, **kwargs): # noqa: E501,D401,D403 + """Update secrets in an organization. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_orgs_id_secrets_with_http_info(org_id, request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The organization ID. (required) + :param dict(str, str) request_body: Secret key value pairs to update/add (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_orgs_id_secrets_prepare(org_id, request_body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/orgs/{orgID}/secrets', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_orgs_id_secrets_async(self, org_id, request_body, **kwargs): # noqa: E501,D401,D403 + """Update secrets in an organization. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str org_id: The organization ID. (required) + :param dict(str, str) request_body: Secret key value pairs to update/add (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_orgs_id_secrets_prepare(org_id, request_body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/orgs/{orgID}/secrets', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_orgs_id_secrets_prepare(self, org_id, request_body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['org_id', 'request_body', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_orgs_id_secrets', all_params, local_var_params) + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `patch_orgs_id_secrets`") # noqa: E501 + # verify the required parameter 'request_body' is set + if ('request_body' not in local_var_params or + local_var_params['request_body'] is None): + raise ValueError("Missing the required parameter `request_body` when calling `patch_orgs_id_secrets`") # noqa: E501 + + path_params = {} + if 'org_id' in local_var_params: + path_params['orgID'] = local_var_params['org_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'request_body' in local_var_params: + body_params = local_var_params['request_body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_orgs_id_secrets(self, org_id, secret_keys, **kwargs): # noqa: E501,D401,D403 + """Delete secrets from an organization. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_orgs_id_secrets(org_id, secret_keys, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The organization ID. (required) + :param SecretKeys secret_keys: Secret key to delete (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_orgs_id_secrets_with_http_info(org_id, secret_keys, **kwargs) # noqa: E501 + else: + (data) = self.post_orgs_id_secrets_with_http_info(org_id, secret_keys, **kwargs) # noqa: E501 + return data + + def post_orgs_id_secrets_with_http_info(self, org_id, secret_keys, **kwargs): # noqa: E501,D401,D403 + """Delete secrets from an organization. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_orgs_id_secrets_with_http_info(org_id, secret_keys, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: The organization ID. (required) + :param SecretKeys secret_keys: Secret key to delete (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_orgs_id_secrets_prepare(org_id, secret_keys, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/orgs/{orgID}/secrets/delete', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_orgs_id_secrets_async(self, org_id, secret_keys, **kwargs): # noqa: E501,D401,D403 + """Delete secrets from an organization. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str org_id: The organization ID. (required) + :param SecretKeys secret_keys: Secret key to delete (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_orgs_id_secrets_prepare(org_id, secret_keys, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/orgs/{orgID}/secrets/delete', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_orgs_id_secrets_prepare(self, org_id, secret_keys, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['org_id', 'secret_keys', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_orgs_id_secrets', all_params, local_var_params) + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `post_orgs_id_secrets`") # noqa: E501 + # verify the required parameter 'secret_keys' is set + if ('secret_keys' not in local_var_params or + local_var_params['secret_keys'] is None): + raise ValueError("Missing the required parameter `secret_keys` when calling `post_orgs_id_secrets`") # noqa: E501 + + path_params = {} + if 'org_id' in local_var_params: + path_params['orgID'] = local_var_params['org_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'secret_keys' in local_var_params: + body_params = local_var_params['secret_keys'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/setup_service.py b/frogpilot/third_party/influxdb_client/service/setup_service.py new file mode 100644 index 000000000..ed12bde0c --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/setup_service.py @@ -0,0 +1,263 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class SetupService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """SetupService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def get_setup(self, **kwargs): # noqa: E501,D401,D403 + """Check if database has default user, org, bucket. + + Returns `true` if no default user, organization, or bucket has been created. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_setup(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: IsOnboarding + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_setup_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_setup_with_http_info(**kwargs) # noqa: E501 + return data + + def get_setup_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """Check if database has default user, org, bucket. + + Returns `true` if no default user, organization, or bucket has been created. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_setup_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: IsOnboarding + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_setup_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/setup', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='IsOnboarding', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_setup_async(self, **kwargs): # noqa: E501,D401,D403 + """Check if database has default user, org, bucket. + + Returns `true` if no default user, organization, or bucket has been created. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: IsOnboarding + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_setup_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/setup', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='IsOnboarding', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_setup_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span'] # noqa: E501 + self._check_operation_params('get_setup', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_setup(self, onboarding_request, **kwargs): # noqa: E501,D401,D403 + """Set up initial user, org and bucket. + + Post an onboarding request to set up initial user, org and bucket. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_setup(onboarding_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param OnboardingRequest onboarding_request: Source to create (required) + :param str zap_trace_span: OpenTracing span context + :return: OnboardingResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_setup_with_http_info(onboarding_request, **kwargs) # noqa: E501 + else: + (data) = self.post_setup_with_http_info(onboarding_request, **kwargs) # noqa: E501 + return data + + def post_setup_with_http_info(self, onboarding_request, **kwargs): # noqa: E501,D401,D403 + """Set up initial user, org and bucket. + + Post an onboarding request to set up initial user, org and bucket. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_setup_with_http_info(onboarding_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param OnboardingRequest onboarding_request: Source to create (required) + :param str zap_trace_span: OpenTracing span context + :return: OnboardingResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_setup_prepare(onboarding_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/setup', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='OnboardingResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_setup_async(self, onboarding_request, **kwargs): # noqa: E501,D401,D403 + """Set up initial user, org and bucket. + + Post an onboarding request to set up initial user, org and bucket. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param OnboardingRequest onboarding_request: Source to create (required) + :param str zap_trace_span: OpenTracing span context + :return: OnboardingResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_setup_prepare(onboarding_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/setup', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='OnboardingResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_setup_prepare(self, onboarding_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['onboarding_request', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_setup', all_params, local_var_params) + # verify the required parameter 'onboarding_request' is set + if ('onboarding_request' not in local_var_params or + local_var_params['onboarding_request'] is None): + raise ValueError("Missing the required parameter `onboarding_request` when calling `post_setup`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'onboarding_request' in local_var_params: + body_params = local_var_params['onboarding_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/signin_service.py b/frogpilot/third_party/influxdb_client/service/signin_service.py new file mode 100644 index 000000000..f3ca698a5 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/signin_service.py @@ -0,0 +1,145 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class SigninService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """SigninService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def post_signin(self, **kwargs): # noqa: E501,D401,D403 + """Create a user session.. + + Authenticates [Basic authentication credentials](#section/Authentication/BasicAuthentication) for a [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user), and then, if successful, generates a user session. To authenticate a user, pass the HTTP `Authorization` header with the `Basic` scheme and the base64-encoded username and password. For syntax and more information, see [Basic Authentication](#section/Authentication/BasicAuthentication) for syntax and more information. If authentication is successful, InfluxDB creates a new session for the user and then returns the session cookie in the `Set-Cookie` response header. InfluxDB stores user sessions in memory only. They expire within ten minutes and during restarts of the InfluxDB instance. #### User sessions with authorizations - In InfluxDB Cloud, a user session inherits all the user's permissions for the organization. - In InfluxDB OSS, a user session inherits all the user's permissions for all the organizations that the user belongs to. #### Related endpoints - [Signout](#tag/Signout) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_signin(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str authorization: An auth credential for the Basic scheme + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_signin_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.post_signin_with_http_info(**kwargs) # noqa: E501 + return data + + def post_signin_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """Create a user session.. + + Authenticates [Basic authentication credentials](#section/Authentication/BasicAuthentication) for a [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user), and then, if successful, generates a user session. To authenticate a user, pass the HTTP `Authorization` header with the `Basic` scheme and the base64-encoded username and password. For syntax and more information, see [Basic Authentication](#section/Authentication/BasicAuthentication) for syntax and more information. If authentication is successful, InfluxDB creates a new session for the user and then returns the session cookie in the `Set-Cookie` response header. InfluxDB stores user sessions in memory only. They expire within ten minutes and during restarts of the InfluxDB instance. #### User sessions with authorizations - In InfluxDB Cloud, a user session inherits all the user's permissions for the organization. - In InfluxDB OSS, a user session inherits all the user's permissions for all the organizations that the user belongs to. #### Related endpoints - [Signout](#tag/Signout) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_signin_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str authorization: An auth credential for the Basic scheme + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_signin_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/signin', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=['BasicAuthentication'], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_signin_async(self, **kwargs): # noqa: E501,D401,D403 + """Create a user session.. + + Authenticates [Basic authentication credentials](#section/Authentication/BasicAuthentication) for a [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user), and then, if successful, generates a user session. To authenticate a user, pass the HTTP `Authorization` header with the `Basic` scheme and the base64-encoded username and password. For syntax and more information, see [Basic Authentication](#section/Authentication/BasicAuthentication) for syntax and more information. If authentication is successful, InfluxDB creates a new session for the user and then returns the session cookie in the `Set-Cookie` response header. InfluxDB stores user sessions in memory only. They expire within ten minutes and during restarts of the InfluxDB instance. #### User sessions with authorizations - In InfluxDB Cloud, a user session inherits all the user's permissions for the organization. - In InfluxDB OSS, a user session inherits all the user's permissions for all the organizations that the user belongs to. #### Related endpoints - [Signout](#tag/Signout) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str authorization: An auth credential for the Basic scheme + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_signin_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/signin', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=['BasicAuthentication'], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_signin_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span', 'authorization'] # noqa: E501 + self._check_operation_params('post_signin', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + if 'authorization' in local_var_params: + header_params['Authorization'] = local_var_params['authorization'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/signout_service.py b/frogpilot/third_party/influxdb_client/service/signout_service.py new file mode 100644 index 000000000..882e78732 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/signout_service.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class SignoutService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """SignoutService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def post_signout(self, **kwargs): # noqa: E501,D401,D403 + """Expire a user session. + + Expires a user session specified by a session cookie. Use this endpoint to expire a user session that was generated when the user authenticated with the InfluxDB Developer Console (UI) or the `POST /api/v2/signin` endpoint. For example, the `POST /api/v2/signout` endpoint represents the third step in the following three-step process to authenticate a user, retrieve the `user` resource, and then expire the session: 1. Send a request with the user's [Basic authentication credentials](#section/Authentication/BasicAuthentication) to the `POST /api/v2/signin` endpoint to create a user session and generate a session cookie. 2. Send a request to the `GET /api/v2/me` endpoint, passing the stored session cookie from step 1 to retrieve user information. 3. Send a request to the `POST /api/v2/signout` endpoint, passing the stored session cookie to expire the session. _See the complete example in request samples._ InfluxDB stores user sessions in memory only. If a user doesn't sign out, then the user session automatically expires within ten minutes or during a restart of the InfluxDB instance. To learn more about cookies in HTTP requests, see [Mozilla Developer Network (MDN) Web Docs, HTTP cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies). #### Related endpoints - [Signin](#tag/Signin) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_signout(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_signout_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.post_signout_with_http_info(**kwargs) # noqa: E501 + return data + + def post_signout_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """Expire a user session. + + Expires a user session specified by a session cookie. Use this endpoint to expire a user session that was generated when the user authenticated with the InfluxDB Developer Console (UI) or the `POST /api/v2/signin` endpoint. For example, the `POST /api/v2/signout` endpoint represents the third step in the following three-step process to authenticate a user, retrieve the `user` resource, and then expire the session: 1. Send a request with the user's [Basic authentication credentials](#section/Authentication/BasicAuthentication) to the `POST /api/v2/signin` endpoint to create a user session and generate a session cookie. 2. Send a request to the `GET /api/v2/me` endpoint, passing the stored session cookie from step 1 to retrieve user information. 3. Send a request to the `POST /api/v2/signout` endpoint, passing the stored session cookie to expire the session. _See the complete example in request samples._ InfluxDB stores user sessions in memory only. If a user doesn't sign out, then the user session automatically expires within ten minutes or during a restart of the InfluxDB instance. To learn more about cookies in HTTP requests, see [Mozilla Developer Network (MDN) Web Docs, HTTP cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies). #### Related endpoints - [Signin](#tag/Signin) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_signout_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_signout_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/signout', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_signout_async(self, **kwargs): # noqa: E501,D401,D403 + """Expire a user session. + + Expires a user session specified by a session cookie. Use this endpoint to expire a user session that was generated when the user authenticated with the InfluxDB Developer Console (UI) or the `POST /api/v2/signin` endpoint. For example, the `POST /api/v2/signout` endpoint represents the third step in the following three-step process to authenticate a user, retrieve the `user` resource, and then expire the session: 1. Send a request with the user's [Basic authentication credentials](#section/Authentication/BasicAuthentication) to the `POST /api/v2/signin` endpoint to create a user session and generate a session cookie. 2. Send a request to the `GET /api/v2/me` endpoint, passing the stored session cookie from step 1 to retrieve user information. 3. Send a request to the `POST /api/v2/signout` endpoint, passing the stored session cookie to expire the session. _See the complete example in request samples._ InfluxDB stores user sessions in memory only. If a user doesn't sign out, then the user session automatically expires within ten minutes or during a restart of the InfluxDB instance. To learn more about cookies in HTTP requests, see [Mozilla Developer Network (MDN) Web Docs, HTTP cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies). #### Related endpoints - [Signin](#tag/Signin) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_signout_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/signout', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_signout_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span'] # noqa: E501 + self._check_operation_params('post_signout', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/sources_service.py b/frogpilot/third_party/influxdb_client/service/sources_service.py new file mode 100644 index 000000000..5bb381f15 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/sources_service.py @@ -0,0 +1,860 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class SourcesService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """SourcesService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def delete_sources_id(self, source_id, **kwargs): # noqa: E501,D401,D403 + """Delete a source. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_sources_id(source_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str source_id: The source ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_sources_id_with_http_info(source_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_sources_id_with_http_info(source_id, **kwargs) # noqa: E501 + return data + + def delete_sources_id_with_http_info(self, source_id, **kwargs): # noqa: E501,D401,D403 + """Delete a source. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_sources_id_with_http_info(source_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str source_id: The source ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_sources_id_prepare(source_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/sources/{sourceID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_sources_id_async(self, source_id, **kwargs): # noqa: E501,D401,D403 + """Delete a source. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str source_id: The source ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_sources_id_prepare(source_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/sources/{sourceID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_sources_id_prepare(self, source_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['source_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_sources_id', all_params, local_var_params) + # verify the required parameter 'source_id' is set + if ('source_id' not in local_var_params or + local_var_params['source_id'] is None): + raise ValueError("Missing the required parameter `source_id` when calling `delete_sources_id`") # noqa: E501 + + path_params = {} + if 'source_id' in local_var_params: + path_params['sourceID'] = local_var_params['source_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_sources(self, **kwargs): # noqa: E501,D401,D403 + """List all sources. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_sources(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str org: The name of the organization. + :return: Sources + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_sources_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_sources_with_http_info(**kwargs) # noqa: E501 + return data + + def get_sources_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """List all sources. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_sources_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str org: The name of the organization. + :return: Sources + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_sources_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/sources', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Sources', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_sources_async(self, **kwargs): # noqa: E501,D401,D403 + """List all sources. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str org: The name of the organization. + :return: Sources + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_sources_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/sources', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Sources', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_sources_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span', 'org'] # noqa: E501 + self._check_operation_params('get_sources', all_params, local_var_params) + + path_params = {} + + query_params = [] + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_sources_id(self, source_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a source. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_sources_id(source_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str source_id: The source ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: Source + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_sources_id_with_http_info(source_id, **kwargs) # noqa: E501 + else: + (data) = self.get_sources_id_with_http_info(source_id, **kwargs) # noqa: E501 + return data + + def get_sources_id_with_http_info(self, source_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a source. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_sources_id_with_http_info(source_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str source_id: The source ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: Source + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_sources_id_prepare(source_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/sources/{sourceID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Source', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_sources_id_async(self, source_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a source. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str source_id: The source ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: Source + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_sources_id_prepare(source_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/sources/{sourceID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Source', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_sources_id_prepare(self, source_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['source_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_sources_id', all_params, local_var_params) + # verify the required parameter 'source_id' is set + if ('source_id' not in local_var_params or + local_var_params['source_id'] is None): + raise ValueError("Missing the required parameter `source_id` when calling `get_sources_id`") # noqa: E501 + + path_params = {} + if 'source_id' in local_var_params: + path_params['sourceID'] = local_var_params['source_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_sources_id_buckets(self, source_id, **kwargs): # noqa: E501,D401,D403 + """Get buckets in a source. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_sources_id_buckets(source_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str source_id: The source ID. (required) + :param str zap_trace_span: OpenTracing span context + :param str org: The name of the organization. + :return: Buckets + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_sources_id_buckets_with_http_info(source_id, **kwargs) # noqa: E501 + else: + (data) = self.get_sources_id_buckets_with_http_info(source_id, **kwargs) # noqa: E501 + return data + + def get_sources_id_buckets_with_http_info(self, source_id, **kwargs): # noqa: E501,D401,D403 + """Get buckets in a source. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_sources_id_buckets_with_http_info(source_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str source_id: The source ID. (required) + :param str zap_trace_span: OpenTracing span context + :param str org: The name of the organization. + :return: Buckets + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_sources_id_buckets_prepare(source_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/sources/{sourceID}/buckets', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Buckets', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_sources_id_buckets_async(self, source_id, **kwargs): # noqa: E501,D401,D403 + """Get buckets in a source. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str source_id: The source ID. (required) + :param str zap_trace_span: OpenTracing span context + :param str org: The name of the organization. + :return: Buckets + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_sources_id_buckets_prepare(source_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/sources/{sourceID}/buckets', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Buckets', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_sources_id_buckets_prepare(self, source_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['source_id', 'zap_trace_span', 'org'] # noqa: E501 + self._check_operation_params('get_sources_id_buckets', all_params, local_var_params) + # verify the required parameter 'source_id' is set + if ('source_id' not in local_var_params or + local_var_params['source_id'] is None): + raise ValueError("Missing the required parameter `source_id` when calling `get_sources_id_buckets`") # noqa: E501 + + path_params = {} + if 'source_id' in local_var_params: + path_params['sourceID'] = local_var_params['source_id'] # noqa: E501 + + query_params = [] + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_sources_id_health(self, source_id, **kwargs): # noqa: E501,D401,D403 + """Get the health of a source. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_sources_id_health(source_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str source_id: The source ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: HealthCheck + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_sources_id_health_with_http_info(source_id, **kwargs) # noqa: E501 + else: + (data) = self.get_sources_id_health_with_http_info(source_id, **kwargs) # noqa: E501 + return data + + def get_sources_id_health_with_http_info(self, source_id, **kwargs): # noqa: E501,D401,D403 + """Get the health of a source. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_sources_id_health_with_http_info(source_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str source_id: The source ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: HealthCheck + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_sources_id_health_prepare(source_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/sources/{sourceID}/health', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='HealthCheck', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_sources_id_health_async(self, source_id, **kwargs): # noqa: E501,D401,D403 + """Get the health of a source. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str source_id: The source ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: HealthCheck + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_sources_id_health_prepare(source_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/sources/{sourceID}/health', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='HealthCheck', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_sources_id_health_prepare(self, source_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['source_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_sources_id_health', all_params, local_var_params) + # verify the required parameter 'source_id' is set + if ('source_id' not in local_var_params or + local_var_params['source_id'] is None): + raise ValueError("Missing the required parameter `source_id` when calling `get_sources_id_health`") # noqa: E501 + + path_params = {} + if 'source_id' in local_var_params: + path_params['sourceID'] = local_var_params['source_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_sources_id(self, source_id, source, **kwargs): # noqa: E501,D401,D403 + """Update a Source. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_sources_id(source_id, source, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str source_id: The source ID. (required) + :param Source source: Source update (required) + :param str zap_trace_span: OpenTracing span context + :return: Source + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_sources_id_with_http_info(source_id, source, **kwargs) # noqa: E501 + else: + (data) = self.patch_sources_id_with_http_info(source_id, source, **kwargs) # noqa: E501 + return data + + def patch_sources_id_with_http_info(self, source_id, source, **kwargs): # noqa: E501,D401,D403 + """Update a Source. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_sources_id_with_http_info(source_id, source, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str source_id: The source ID. (required) + :param Source source: Source update (required) + :param str zap_trace_span: OpenTracing span context + :return: Source + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_sources_id_prepare(source_id, source, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/sources/{sourceID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Source', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_sources_id_async(self, source_id, source, **kwargs): # noqa: E501,D401,D403 + """Update a Source. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str source_id: The source ID. (required) + :param Source source: Source update (required) + :param str zap_trace_span: OpenTracing span context + :return: Source + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_sources_id_prepare(source_id, source, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/sources/{sourceID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Source', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_sources_id_prepare(self, source_id, source, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['source_id', 'source', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_sources_id', all_params, local_var_params) + # verify the required parameter 'source_id' is set + if ('source_id' not in local_var_params or + local_var_params['source_id'] is None): + raise ValueError("Missing the required parameter `source_id` when calling `patch_sources_id`") # noqa: E501 + # verify the required parameter 'source' is set + if ('source' not in local_var_params or + local_var_params['source'] is None): + raise ValueError("Missing the required parameter `source` when calling `patch_sources_id`") # noqa: E501 + + path_params = {} + if 'source_id' in local_var_params: + path_params['sourceID'] = local_var_params['source_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'source' in local_var_params: + body_params = local_var_params['source'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_sources(self, source, **kwargs): # noqa: E501,D401,D403 + """Create a source. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_sources(source, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param Source source: Source to create (required) + :param str zap_trace_span: OpenTracing span context + :return: Source + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_sources_with_http_info(source, **kwargs) # noqa: E501 + else: + (data) = self.post_sources_with_http_info(source, **kwargs) # noqa: E501 + return data + + def post_sources_with_http_info(self, source, **kwargs): # noqa: E501,D401,D403 + """Create a source. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_sources_with_http_info(source, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param Source source: Source to create (required) + :param str zap_trace_span: OpenTracing span context + :return: Source + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_sources_prepare(source, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/sources', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Source', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_sources_async(self, source, **kwargs): # noqa: E501,D401,D403 + """Create a source. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param Source source: Source to create (required) + :param str zap_trace_span: OpenTracing span context + :return: Source + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_sources_prepare(source, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/sources', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Source', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_sources_prepare(self, source, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['source', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_sources', all_params, local_var_params) + # verify the required parameter 'source' is set + if ('source' not in local_var_params or + local_var_params['source'] is None): + raise ValueError("Missing the required parameter `source` when calling `post_sources`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'source' in local_var_params: + body_params = local_var_params['source'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/tasks_service.py b/frogpilot/third_party/influxdb_client/service/tasks_service.py new file mode 100644 index 000000000..914295141 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/tasks_service.py @@ -0,0 +1,2725 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class TasksService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """TasksService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def delete_tasks_id(self, task_id, **kwargs): # noqa: E501,D401,D403 + """Delete a task. + + Deletes a task and associated records. Use this endpoint to delete a task and all associated records (task runs, logs, and labels). Once the task is deleted, InfluxDB cancels all scheduled runs of the task. If you want to disable a task instead of delete it, [update the task status to `inactive`](#operation/PatchTasksID). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_tasks_id(task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_tasks_id_with_http_info(task_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_tasks_id_with_http_info(task_id, **kwargs) # noqa: E501 + return data + + def delete_tasks_id_with_http_info(self, task_id, **kwargs): # noqa: E501,D401,D403 + """Delete a task. + + Deletes a task and associated records. Use this endpoint to delete a task and all associated records (task runs, logs, and labels). Once the task is deleted, InfluxDB cancels all scheduled runs of the task. If you want to disable a task instead of delete it, [update the task status to `inactive`](#operation/PatchTasksID). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_tasks_id_with_http_info(task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_tasks_id_prepare(task_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks/{taskID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_tasks_id_async(self, task_id, **kwargs): # noqa: E501,D401,D403 + """Delete a task. + + Deletes a task and associated records. Use this endpoint to delete a task and all associated records (task runs, logs, and labels). Once the task is deleted, InfluxDB cancels all scheduled runs of the task. If you want to disable a task instead of delete it, [update the task status to `inactive`](#operation/PatchTasksID). + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str task_id: The ID of the task to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_tasks_id_prepare(task_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks/{taskID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_tasks_id_prepare(self, task_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['task_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_tasks_id', all_params, local_var_params) + # verify the required parameter 'task_id' is set + if ('task_id' not in local_var_params or + local_var_params['task_id'] is None): + raise ValueError("Missing the required parameter `task_id` when calling `delete_tasks_id`") # noqa: E501 + + path_params = {} + if 'task_id' in local_var_params: + path_params['taskID'] = local_var_params['task_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_tasks_id_labels_id(self, task_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a task. + + Deletes a label from a task. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_tasks_id_labels_id(task_id, label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to delete the label from. (required) + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_tasks_id_labels_id_with_http_info(task_id, label_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_tasks_id_labels_id_with_http_info(task_id, label_id, **kwargs) # noqa: E501 + return data + + def delete_tasks_id_labels_id_with_http_info(self, task_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a task. + + Deletes a label from a task. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_tasks_id_labels_id_with_http_info(task_id, label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to delete the label from. (required) + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_tasks_id_labels_id_prepare(task_id, label_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks/{taskID}/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_tasks_id_labels_id_async(self, task_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a task. + + Deletes a label from a task. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str task_id: The ID of the task to delete the label from. (required) + :param str label_id: The ID of the label to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_tasks_id_labels_id_prepare(task_id, label_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks/{taskID}/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_tasks_id_labels_id_prepare(self, task_id, label_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['task_id', 'label_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_tasks_id_labels_id', all_params, local_var_params) + # verify the required parameter 'task_id' is set + if ('task_id' not in local_var_params or + local_var_params['task_id'] is None): + raise ValueError("Missing the required parameter `task_id` when calling `delete_tasks_id_labels_id`") # noqa: E501 + # verify the required parameter 'label_id' is set + if ('label_id' not in local_var_params or + local_var_params['label_id'] is None): + raise ValueError("Missing the required parameter `label_id` when calling `delete_tasks_id_labels_id`") # noqa: E501 + + path_params = {} + if 'task_id' in local_var_params: + path_params['taskID'] = local_var_params['task_id'] # noqa: E501 + if 'label_id' in local_var_params: + path_params['labelID'] = local_var_params['label_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_tasks_id_members_id(self, user_id, task_id, **kwargs): # noqa: E501,D401,D403 + """Remove a member from a task. + + **Deprecated**: Tasks don't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. Removes a member from a [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_tasks_id_members_id(user_id, task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the member to remove. (required) + :param str task_id: The task ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_tasks_id_members_id_with_http_info(user_id, task_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_tasks_id_members_id_with_http_info(user_id, task_id, **kwargs) # noqa: E501 + return data + + def delete_tasks_id_members_id_with_http_info(self, user_id, task_id, **kwargs): # noqa: E501,D401,D403 + """Remove a member from a task. + + **Deprecated**: Tasks don't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. Removes a member from a [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_tasks_id_members_id_with_http_info(user_id, task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the member to remove. (required) + :param str task_id: The task ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_tasks_id_members_id_prepare(user_id, task_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks/{taskID}/members/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_tasks_id_members_id_async(self, user_id, task_id, **kwargs): # noqa: E501,D401,D403 + """Remove a member from a task. + + **Deprecated**: Tasks don't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. Removes a member from a [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str user_id: The ID of the member to remove. (required) + :param str task_id: The task ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_tasks_id_members_id_prepare(user_id, task_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks/{taskID}/members/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_tasks_id_members_id_prepare(self, user_id, task_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['user_id', 'task_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_tasks_id_members_id', all_params, local_var_params) + # verify the required parameter 'user_id' is set + if ('user_id' not in local_var_params or + local_var_params['user_id'] is None): + raise ValueError("Missing the required parameter `user_id` when calling `delete_tasks_id_members_id`") # noqa: E501 + # verify the required parameter 'task_id' is set + if ('task_id' not in local_var_params or + local_var_params['task_id'] is None): + raise ValueError("Missing the required parameter `task_id` when calling `delete_tasks_id_members_id`") # noqa: E501 + + path_params = {} + if 'user_id' in local_var_params: + path_params['userID'] = local_var_params['user_id'] # noqa: E501 + if 'task_id' in local_var_params: + path_params['taskID'] = local_var_params['task_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_tasks_id_owners_id(self, user_id, task_id, **kwargs): # noqa: E501,D401,D403 + """Remove an owner from a task. + + **Deprecated**: Tasks don't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_tasks_id_owners_id(user_id, task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the owner to remove. (required) + :param str task_id: The task ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_tasks_id_owners_id_with_http_info(user_id, task_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_tasks_id_owners_id_with_http_info(user_id, task_id, **kwargs) # noqa: E501 + return data + + def delete_tasks_id_owners_id_with_http_info(self, user_id, task_id, **kwargs): # noqa: E501,D401,D403 + """Remove an owner from a task. + + **Deprecated**: Tasks don't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_tasks_id_owners_id_with_http_info(user_id, task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the owner to remove. (required) + :param str task_id: The task ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_tasks_id_owners_id_prepare(user_id, task_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks/{taskID}/owners/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_tasks_id_owners_id_async(self, user_id, task_id, **kwargs): # noqa: E501,D401,D403 + """Remove an owner from a task. + + **Deprecated**: Tasks don't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str user_id: The ID of the owner to remove. (required) + :param str task_id: The task ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_tasks_id_owners_id_prepare(user_id, task_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks/{taskID}/owners/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_tasks_id_owners_id_prepare(self, user_id, task_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['user_id', 'task_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_tasks_id_owners_id', all_params, local_var_params) + # verify the required parameter 'user_id' is set + if ('user_id' not in local_var_params or + local_var_params['user_id'] is None): + raise ValueError("Missing the required parameter `user_id` when calling `delete_tasks_id_owners_id`") # noqa: E501 + # verify the required parameter 'task_id' is set + if ('task_id' not in local_var_params or + local_var_params['task_id'] is None): + raise ValueError("Missing the required parameter `task_id` when calling `delete_tasks_id_owners_id`") # noqa: E501 + + path_params = {} + if 'user_id' in local_var_params: + path_params['userID'] = local_var_params['user_id'] # noqa: E501 + if 'task_id' in local_var_params: + path_params['taskID'] = local_var_params['task_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_tasks_id_runs_id(self, task_id, run_id, **kwargs): # noqa: E501,D401,D403 + """Cancel a running task. + + Cancels a running [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). Use this endpoint with InfluxDB OSS to cancel a running task. #### InfluxDB Cloud - Doesn't support this operation. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_tasks_id_runs_id(task_id, run_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to cancel. (required) + :param str run_id: The ID of the task run to cancel. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_tasks_id_runs_id_with_http_info(task_id, run_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_tasks_id_runs_id_with_http_info(task_id, run_id, **kwargs) # noqa: E501 + return data + + def delete_tasks_id_runs_id_with_http_info(self, task_id, run_id, **kwargs): # noqa: E501,D401,D403 + """Cancel a running task. + + Cancels a running [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). Use this endpoint with InfluxDB OSS to cancel a running task. #### InfluxDB Cloud - Doesn't support this operation. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_tasks_id_runs_id_with_http_info(task_id, run_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to cancel. (required) + :param str run_id: The ID of the task run to cancel. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_tasks_id_runs_id_prepare(task_id, run_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks/{taskID}/runs/{runID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_tasks_id_runs_id_async(self, task_id, run_id, **kwargs): # noqa: E501,D401,D403 + """Cancel a running task. + + Cancels a running [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). Use this endpoint with InfluxDB OSS to cancel a running task. #### InfluxDB Cloud - Doesn't support this operation. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str task_id: The ID of the task to cancel. (required) + :param str run_id: The ID of the task run to cancel. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_tasks_id_runs_id_prepare(task_id, run_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks/{taskID}/runs/{runID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_tasks_id_runs_id_prepare(self, task_id, run_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['task_id', 'run_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_tasks_id_runs_id', all_params, local_var_params) + # verify the required parameter 'task_id' is set + if ('task_id' not in local_var_params or + local_var_params['task_id'] is None): + raise ValueError("Missing the required parameter `task_id` when calling `delete_tasks_id_runs_id`") # noqa: E501 + # verify the required parameter 'run_id' is set + if ('run_id' not in local_var_params or + local_var_params['run_id'] is None): + raise ValueError("Missing the required parameter `run_id` when calling `delete_tasks_id_runs_id`") # noqa: E501 + + path_params = {} + if 'task_id' in local_var_params: + path_params['taskID'] = local_var_params['task_id'] # noqa: E501 + if 'run_id' in local_var_params: + path_params['runID'] = local_var_params['run_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_tasks(self, **kwargs): # noqa: E501,D401,D403 + """List tasks. + + Retrieves a list of [tasks](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). To limit which tasks are returned, pass query parameters in your request. If no query parameters are passed, InfluxDB returns all tasks up to the default `limit`. #### Related guide - [Process data with InfluxDB tasks](https://docs.influxdata.com/influxdb/latest/process-data/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_tasks(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str name: A [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) name. Only returns tasks with the specified name. Different tasks may have the same name. + :param str after: A [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) ID. Only returns tasks created after the specified task. + :param str user: A [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) ID. Only returns tasks owned by the specified user. + :param str org: An [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) name. Only returns tasks owned by the specified organization. + :param str org_id: An [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) ID. Only returns tasks owned by the specified organization. + :param str status: A [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) status. Only returns tasks that have the specified status (`active` or `inactive`). + :param int limit: The maximum number of [tasks](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) to return. Default is `100`. The minimum is `1` and the maximum is `500`. To reduce the payload size, combine _`type=basic`_ and _`limit`_ (see _Request samples_). For more information about the `basic` response, see the _`type`_ parameter. + :param str type: A [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) type (`basic` or `system`). Default is `system`. Specifies the level of detail for tasks in the response. The default (`system`) response contains all the metadata properties for tasks. To reduce the response size, pass `basic` to omit some task properties (`flux`, `createdAt`, `updatedAt`). + :return: Tasks + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_tasks_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_tasks_with_http_info(**kwargs) # noqa: E501 + return data + + def get_tasks_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """List tasks. + + Retrieves a list of [tasks](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). To limit which tasks are returned, pass query parameters in your request. If no query parameters are passed, InfluxDB returns all tasks up to the default `limit`. #### Related guide - [Process data with InfluxDB tasks](https://docs.influxdata.com/influxdb/latest/process-data/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_tasks_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str name: A [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) name. Only returns tasks with the specified name. Different tasks may have the same name. + :param str after: A [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) ID. Only returns tasks created after the specified task. + :param str user: A [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) ID. Only returns tasks owned by the specified user. + :param str org: An [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) name. Only returns tasks owned by the specified organization. + :param str org_id: An [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) ID. Only returns tasks owned by the specified organization. + :param str status: A [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) status. Only returns tasks that have the specified status (`active` or `inactive`). + :param int limit: The maximum number of [tasks](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) to return. Default is `100`. The minimum is `1` and the maximum is `500`. To reduce the payload size, combine _`type=basic`_ and _`limit`_ (see _Request samples_). For more information about the `basic` response, see the _`type`_ parameter. + :param str type: A [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) type (`basic` or `system`). Default is `system`. Specifies the level of detail for tasks in the response. The default (`system`) response contains all the metadata properties for tasks. To reduce the response size, pass `basic` to omit some task properties (`flux`, `createdAt`, `updatedAt`). + :return: Tasks + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_tasks_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Tasks', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_tasks_async(self, **kwargs): # noqa: E501,D401,D403 + """List tasks. + + Retrieves a list of [tasks](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). To limit which tasks are returned, pass query parameters in your request. If no query parameters are passed, InfluxDB returns all tasks up to the default `limit`. #### Related guide - [Process data with InfluxDB tasks](https://docs.influxdata.com/influxdb/latest/process-data/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str name: A [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) name. Only returns tasks with the specified name. Different tasks may have the same name. + :param str after: A [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) ID. Only returns tasks created after the specified task. + :param str user: A [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) ID. Only returns tasks owned by the specified user. + :param str org: An [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) name. Only returns tasks owned by the specified organization. + :param str org_id: An [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization) ID. Only returns tasks owned by the specified organization. + :param str status: A [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) status. Only returns tasks that have the specified status (`active` or `inactive`). + :param int limit: The maximum number of [tasks](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) to return. Default is `100`. The minimum is `1` and the maximum is `500`. To reduce the payload size, combine _`type=basic`_ and _`limit`_ (see _Request samples_). For more information about the `basic` response, see the _`type`_ parameter. + :param str type: A [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) type (`basic` or `system`). Default is `system`. Specifies the level of detail for tasks in the response. The default (`system`) response contains all the metadata properties for tasks. To reduce the response size, pass `basic` to omit some task properties (`flux`, `createdAt`, `updatedAt`). + :return: Tasks + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_tasks_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Tasks', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_tasks_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span', 'name', 'after', 'user', 'org', 'org_id', 'status', 'limit', 'type'] # noqa: E501 + self._check_operation_params('get_tasks', all_params, local_var_params) + + if 'limit' in local_var_params and local_var_params['limit'] > 500: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_tasks`, must be a value less than or equal to `500`") # noqa: E501 + if 'limit' in local_var_params and local_var_params['limit'] < 1: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_tasks`, must be a value greater than or equal to `1`") # noqa: E501 + path_params = {} + + query_params = [] + if 'name' in local_var_params: + query_params.append(('name', local_var_params['name'])) # noqa: E501 + if 'after' in local_var_params: + query_params.append(('after', local_var_params['after'])) # noqa: E501 + if 'user' in local_var_params: + query_params.append(('user', local_var_params['user'])) # noqa: E501 + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + if 'status' in local_var_params: + query_params.append(('status', local_var_params['status'])) # noqa: E501 + if 'limit' in local_var_params: + query_params.append(('limit', local_var_params['limit'])) # noqa: E501 + if 'type' in local_var_params: + query_params.append(('type', local_var_params['type'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_tasks_id(self, task_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a task. + + Retrieves a [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_tasks_id(task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to retrieve. (required) + :param str zap_trace_span: OpenTracing span context + :return: Task + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_tasks_id_with_http_info(task_id, **kwargs) # noqa: E501 + else: + (data) = self.get_tasks_id_with_http_info(task_id, **kwargs) # noqa: E501 + return data + + def get_tasks_id_with_http_info(self, task_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a task. + + Retrieves a [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_tasks_id_with_http_info(task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to retrieve. (required) + :param str zap_trace_span: OpenTracing span context + :return: Task + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_tasks_id_prepare(task_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks/{taskID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Task', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_tasks_id_async(self, task_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a task. + + Retrieves a [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str task_id: The ID of the task to retrieve. (required) + :param str zap_trace_span: OpenTracing span context + :return: Task + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_tasks_id_prepare(task_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks/{taskID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Task', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_tasks_id_prepare(self, task_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['task_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_tasks_id', all_params, local_var_params) + # verify the required parameter 'task_id' is set + if ('task_id' not in local_var_params or + local_var_params['task_id'] is None): + raise ValueError("Missing the required parameter `task_id` when calling `get_tasks_id`") # noqa: E501 + + path_params = {} + if 'task_id' in local_var_params: + path_params['taskID'] = local_var_params['task_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_tasks_id_labels(self, task_id, **kwargs): # noqa: E501,D401,D403 + """List labels for a task. + + Retrieves a list of all labels for a task. Labels may be used for grouping and filtering tasks. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_tasks_id_labels(task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to retrieve labels for. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_tasks_id_labels_with_http_info(task_id, **kwargs) # noqa: E501 + else: + (data) = self.get_tasks_id_labels_with_http_info(task_id, **kwargs) # noqa: E501 + return data + + def get_tasks_id_labels_with_http_info(self, task_id, **kwargs): # noqa: E501,D401,D403 + """List labels for a task. + + Retrieves a list of all labels for a task. Labels may be used for grouping and filtering tasks. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_tasks_id_labels_with_http_info(task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to retrieve labels for. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_tasks_id_labels_prepare(task_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks/{taskID}/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_tasks_id_labels_async(self, task_id, **kwargs): # noqa: E501,D401,D403 + """List labels for a task. + + Retrieves a list of all labels for a task. Labels may be used for grouping and filtering tasks. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str task_id: The ID of the task to retrieve labels for. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_tasks_id_labels_prepare(task_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks/{taskID}/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_tasks_id_labels_prepare(self, task_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['task_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_tasks_id_labels', all_params, local_var_params) + # verify the required parameter 'task_id' is set + if ('task_id' not in local_var_params or + local_var_params['task_id'] is None): + raise ValueError("Missing the required parameter `task_id` when calling `get_tasks_id_labels`") # noqa: E501 + + path_params = {} + if 'task_id' in local_var_params: + path_params['taskID'] = local_var_params['task_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_tasks_id_logs(self, task_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve all logs for a task. + + Retrieves a list of all logs for a [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). When an InfluxDB task runs, a โ€œrunโ€ record is created in the taskโ€™s history. Logs associated with each run provide relevant log messages, timestamps, and the exit status of the run attempt. Use this endpoint to retrieve only the log events for a task, without additional task metadata. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_tasks_id_logs(task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The task ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: Logs + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_tasks_id_logs_with_http_info(task_id, **kwargs) # noqa: E501 + else: + (data) = self.get_tasks_id_logs_with_http_info(task_id, **kwargs) # noqa: E501 + return data + + def get_tasks_id_logs_with_http_info(self, task_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve all logs for a task. + + Retrieves a list of all logs for a [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). When an InfluxDB task runs, a โ€œrunโ€ record is created in the taskโ€™s history. Logs associated with each run provide relevant log messages, timestamps, and the exit status of the run attempt. Use this endpoint to retrieve only the log events for a task, without additional task metadata. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_tasks_id_logs_with_http_info(task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The task ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: Logs + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_tasks_id_logs_prepare(task_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks/{taskID}/logs', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Logs', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_tasks_id_logs_async(self, task_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve all logs for a task. + + Retrieves a list of all logs for a [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). When an InfluxDB task runs, a โ€œrunโ€ record is created in the taskโ€™s history. Logs associated with each run provide relevant log messages, timestamps, and the exit status of the run attempt. Use this endpoint to retrieve only the log events for a task, without additional task metadata. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str task_id: The task ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: Logs + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_tasks_id_logs_prepare(task_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks/{taskID}/logs', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Logs', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_tasks_id_logs_prepare(self, task_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['task_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_tasks_id_logs', all_params, local_var_params) + # verify the required parameter 'task_id' is set + if ('task_id' not in local_var_params or + local_var_params['task_id'] is None): + raise ValueError("Missing the required parameter `task_id` when calling `get_tasks_id_logs`") # noqa: E501 + + path_params = {} + if 'task_id' in local_var_params: + path_params['taskID'] = local_var_params['task_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_tasks_id_members(self, task_id, **kwargs): # noqa: E501,D401,D403 + """List all task members. + + **Deprecated**: Tasks don't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. Lists all users that have the `member` role for the specified [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_tasks_id_members(task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The task ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMembers + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_tasks_id_members_with_http_info(task_id, **kwargs) # noqa: E501 + else: + (data) = self.get_tasks_id_members_with_http_info(task_id, **kwargs) # noqa: E501 + return data + + def get_tasks_id_members_with_http_info(self, task_id, **kwargs): # noqa: E501,D401,D403 + """List all task members. + + **Deprecated**: Tasks don't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. Lists all users that have the `member` role for the specified [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_tasks_id_members_with_http_info(task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The task ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMembers + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_tasks_id_members_prepare(task_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks/{taskID}/members', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMembers', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_tasks_id_members_async(self, task_id, **kwargs): # noqa: E501,D401,D403 + """List all task members. + + **Deprecated**: Tasks don't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. Lists all users that have the `member` role for the specified [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str task_id: The task ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMembers + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_tasks_id_members_prepare(task_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks/{taskID}/members', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMembers', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_tasks_id_members_prepare(self, task_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['task_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_tasks_id_members', all_params, local_var_params) + # verify the required parameter 'task_id' is set + if ('task_id' not in local_var_params or + local_var_params['task_id'] is None): + raise ValueError("Missing the required parameter `task_id` when calling `get_tasks_id_members`") # noqa: E501 + + path_params = {} + if 'task_id' in local_var_params: + path_params['taskID'] = local_var_params['task_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_tasks_id_owners(self, task_id, **kwargs): # noqa: E501,D401,D403 + """List all owners of a task. + + **Deprecated**: Tasks don't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. Retrieves all users that have owner permission for a task. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_tasks_id_owners(task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to retrieve owners for. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwners + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_tasks_id_owners_with_http_info(task_id, **kwargs) # noqa: E501 + else: + (data) = self.get_tasks_id_owners_with_http_info(task_id, **kwargs) # noqa: E501 + return data + + def get_tasks_id_owners_with_http_info(self, task_id, **kwargs): # noqa: E501,D401,D403 + """List all owners of a task. + + **Deprecated**: Tasks don't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. Retrieves all users that have owner permission for a task. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_tasks_id_owners_with_http_info(task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to retrieve owners for. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwners + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_tasks_id_owners_prepare(task_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks/{taskID}/owners', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwners', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_tasks_id_owners_async(self, task_id, **kwargs): # noqa: E501,D401,D403 + """List all owners of a task. + + **Deprecated**: Tasks don't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. Retrieves all users that have owner permission for a task. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str task_id: The ID of the task to retrieve owners for. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwners + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_tasks_id_owners_prepare(task_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks/{taskID}/owners', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwners', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_tasks_id_owners_prepare(self, task_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['task_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_tasks_id_owners', all_params, local_var_params) + # verify the required parameter 'task_id' is set + if ('task_id' not in local_var_params or + local_var_params['task_id'] is None): + raise ValueError("Missing the required parameter `task_id` when calling `get_tasks_id_owners`") # noqa: E501 + + path_params = {} + if 'task_id' in local_var_params: + path_params['taskID'] = local_var_params['task_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_tasks_id_runs(self, task_id, **kwargs): # noqa: E501,D401,D403 + """List runs for a task. + + Retrieves a list of runs for a [task](https://docs.influxdata.com/influxdb/latest/process-data/). To limit which task runs are returned, pass query parameters in your request. If no query parameters are passed, InfluxDB returns all task runs up to the default `limit`. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_tasks_id_runs(task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to get runs for. Only returns runs for this task. (required) + :param str zap_trace_span: OpenTracing span context + :param str after: A task run ID. Only returns runs created after this run. + :param int limit: Limits the number of task runs returned. Default is `100`. + :param datetime after_time: A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp)). Only returns runs scheduled after this time. + :param datetime before_time: A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp)). Only returns runs scheduled before this time. + :return: Runs + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_tasks_id_runs_with_http_info(task_id, **kwargs) # noqa: E501 + else: + (data) = self.get_tasks_id_runs_with_http_info(task_id, **kwargs) # noqa: E501 + return data + + def get_tasks_id_runs_with_http_info(self, task_id, **kwargs): # noqa: E501,D401,D403 + """List runs for a task. + + Retrieves a list of runs for a [task](https://docs.influxdata.com/influxdb/latest/process-data/). To limit which task runs are returned, pass query parameters in your request. If no query parameters are passed, InfluxDB returns all task runs up to the default `limit`. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_tasks_id_runs_with_http_info(task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to get runs for. Only returns runs for this task. (required) + :param str zap_trace_span: OpenTracing span context + :param str after: A task run ID. Only returns runs created after this run. + :param int limit: Limits the number of task runs returned. Default is `100`. + :param datetime after_time: A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp)). Only returns runs scheduled after this time. + :param datetime before_time: A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp)). Only returns runs scheduled before this time. + :return: Runs + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_tasks_id_runs_prepare(task_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks/{taskID}/runs', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Runs', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_tasks_id_runs_async(self, task_id, **kwargs): # noqa: E501,D401,D403 + """List runs for a task. + + Retrieves a list of runs for a [task](https://docs.influxdata.com/influxdb/latest/process-data/). To limit which task runs are returned, pass query parameters in your request. If no query parameters are passed, InfluxDB returns all task runs up to the default `limit`. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str task_id: The ID of the task to get runs for. Only returns runs for this task. (required) + :param str zap_trace_span: OpenTracing span context + :param str after: A task run ID. Only returns runs created after this run. + :param int limit: Limits the number of task runs returned. Default is `100`. + :param datetime after_time: A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp)). Only returns runs scheduled after this time. + :param datetime before_time: A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/latest/reference/glossary/#rfc3339-timestamp)). Only returns runs scheduled before this time. + :return: Runs + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_tasks_id_runs_prepare(task_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks/{taskID}/runs', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Runs', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_tasks_id_runs_prepare(self, task_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['task_id', 'zap_trace_span', 'after', 'limit', 'after_time', 'before_time'] # noqa: E501 + self._check_operation_params('get_tasks_id_runs', all_params, local_var_params) + # verify the required parameter 'task_id' is set + if ('task_id' not in local_var_params or + local_var_params['task_id'] is None): + raise ValueError("Missing the required parameter `task_id` when calling `get_tasks_id_runs`") # noqa: E501 + + if 'limit' in local_var_params and local_var_params['limit'] > 500: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_tasks_id_runs`, must be a value less than or equal to `500`") # noqa: E501 + if 'limit' in local_var_params and local_var_params['limit'] < 1: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_tasks_id_runs`, must be a value greater than or equal to `1`") # noqa: E501 + path_params = {} + if 'task_id' in local_var_params: + path_params['taskID'] = local_var_params['task_id'] # noqa: E501 + + query_params = [] + if 'after' in local_var_params: + query_params.append(('after', local_var_params['after'])) # noqa: E501 + if 'limit' in local_var_params: + query_params.append(('limit', local_var_params['limit'])) # noqa: E501 + if 'after_time' in local_var_params: + query_params.append(('afterTime', local_var_params['after_time'])) # noqa: E501 + if 'before_time' in local_var_params: + query_params.append(('beforeTime', local_var_params['before_time'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_tasks_id_runs_id(self, task_id, run_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a run for a task.. + + Retrieves a specific run for a [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). Use this endpoint to retrieve detail and logs for a specific task run. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_tasks_id_runs_id(task_id, run_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to retrieve runs for. (required) + :param str run_id: The ID of the run to retrieve. (required) + :param str zap_trace_span: OpenTracing span context + :return: Run + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_tasks_id_runs_id_with_http_info(task_id, run_id, **kwargs) # noqa: E501 + else: + (data) = self.get_tasks_id_runs_id_with_http_info(task_id, run_id, **kwargs) # noqa: E501 + return data + + def get_tasks_id_runs_id_with_http_info(self, task_id, run_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a run for a task.. + + Retrieves a specific run for a [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). Use this endpoint to retrieve detail and logs for a specific task run. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_tasks_id_runs_id_with_http_info(task_id, run_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to retrieve runs for. (required) + :param str run_id: The ID of the run to retrieve. (required) + :param str zap_trace_span: OpenTracing span context + :return: Run + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_tasks_id_runs_id_prepare(task_id, run_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks/{taskID}/runs/{runID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Run', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_tasks_id_runs_id_async(self, task_id, run_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a run for a task.. + + Retrieves a specific run for a [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task). Use this endpoint to retrieve detail and logs for a specific task run. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str task_id: The ID of the task to retrieve runs for. (required) + :param str run_id: The ID of the run to retrieve. (required) + :param str zap_trace_span: OpenTracing span context + :return: Run + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_tasks_id_runs_id_prepare(task_id, run_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks/{taskID}/runs/{runID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Run', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_tasks_id_runs_id_prepare(self, task_id, run_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['task_id', 'run_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_tasks_id_runs_id', all_params, local_var_params) + # verify the required parameter 'task_id' is set + if ('task_id' not in local_var_params or + local_var_params['task_id'] is None): + raise ValueError("Missing the required parameter `task_id` when calling `get_tasks_id_runs_id`") # noqa: E501 + # verify the required parameter 'run_id' is set + if ('run_id' not in local_var_params or + local_var_params['run_id'] is None): + raise ValueError("Missing the required parameter `run_id` when calling `get_tasks_id_runs_id`") # noqa: E501 + + path_params = {} + if 'task_id' in local_var_params: + path_params['taskID'] = local_var_params['task_id'] # noqa: E501 + if 'run_id' in local_var_params: + path_params['runID'] = local_var_params['run_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_tasks_id_runs_id_logs(self, task_id, run_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve all logs for a run. + + Retrieves all logs for a task run. A log is a list of run events with `runID`, `time`, and `message` properties. Use this endpoint to help analyze task performance and troubleshoot failed task runs. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_tasks_id_runs_id_logs(task_id, run_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to get logs for. (required) + :param str run_id: The ID of the run to get logs for. (required) + :param str zap_trace_span: OpenTracing span context + :return: Logs + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_tasks_id_runs_id_logs_with_http_info(task_id, run_id, **kwargs) # noqa: E501 + else: + (data) = self.get_tasks_id_runs_id_logs_with_http_info(task_id, run_id, **kwargs) # noqa: E501 + return data + + def get_tasks_id_runs_id_logs_with_http_info(self, task_id, run_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve all logs for a run. + + Retrieves all logs for a task run. A log is a list of run events with `runID`, `time`, and `message` properties. Use this endpoint to help analyze task performance and troubleshoot failed task runs. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_tasks_id_runs_id_logs_with_http_info(task_id, run_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to get logs for. (required) + :param str run_id: The ID of the run to get logs for. (required) + :param str zap_trace_span: OpenTracing span context + :return: Logs + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_tasks_id_runs_id_logs_prepare(task_id, run_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks/{taskID}/runs/{runID}/logs', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Logs', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_tasks_id_runs_id_logs_async(self, task_id, run_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve all logs for a run. + + Retrieves all logs for a task run. A log is a list of run events with `runID`, `time`, and `message` properties. Use this endpoint to help analyze task performance and troubleshoot failed task runs. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str task_id: The ID of the task to get logs for. (required) + :param str run_id: The ID of the run to get logs for. (required) + :param str zap_trace_span: OpenTracing span context + :return: Logs + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_tasks_id_runs_id_logs_prepare(task_id, run_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks/{taskID}/runs/{runID}/logs', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Logs', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_tasks_id_runs_id_logs_prepare(self, task_id, run_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['task_id', 'run_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_tasks_id_runs_id_logs', all_params, local_var_params) + # verify the required parameter 'task_id' is set + if ('task_id' not in local_var_params or + local_var_params['task_id'] is None): + raise ValueError("Missing the required parameter `task_id` when calling `get_tasks_id_runs_id_logs`") # noqa: E501 + # verify the required parameter 'run_id' is set + if ('run_id' not in local_var_params or + local_var_params['run_id'] is None): + raise ValueError("Missing the required parameter `run_id` when calling `get_tasks_id_runs_id_logs`") # noqa: E501 + + path_params = {} + if 'task_id' in local_var_params: + path_params['taskID'] = local_var_params['task_id'] # noqa: E501 + if 'run_id' in local_var_params: + path_params['runID'] = local_var_params['run_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_tasks_id(self, task_id, task_update_request, **kwargs): # noqa: E501,D401,D403 + """Update a task. + + Updates a task and then cancels all scheduled runs of the task. Use this endpoint to set, modify, and clear task properties (for example: `cron`, `name`, `flux`, `status`). Once InfluxDB applies the update, it cancels all previously scheduled runs of the task. To update a task, pass an object that contains the updated key-value pairs. To activate or inactivate a task, set the `status` property. _`"status": "inactive"`_ cancels scheduled runs and prevents manual runs of the task. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_tasks_id(task_id, task_update_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to update. (required) + :param TaskUpdateRequest task_update_request: An object that contains updated task properties to apply. (required) + :param str zap_trace_span: OpenTracing span context + :return: Task + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_tasks_id_with_http_info(task_id, task_update_request, **kwargs) # noqa: E501 + else: + (data) = self.patch_tasks_id_with_http_info(task_id, task_update_request, **kwargs) # noqa: E501 + return data + + def patch_tasks_id_with_http_info(self, task_id, task_update_request, **kwargs): # noqa: E501,D401,D403 + """Update a task. + + Updates a task and then cancels all scheduled runs of the task. Use this endpoint to set, modify, and clear task properties (for example: `cron`, `name`, `flux`, `status`). Once InfluxDB applies the update, it cancels all previously scheduled runs of the task. To update a task, pass an object that contains the updated key-value pairs. To activate or inactivate a task, set the `status` property. _`"status": "inactive"`_ cancels scheduled runs and prevents manual runs of the task. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_tasks_id_with_http_info(task_id, task_update_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to update. (required) + :param TaskUpdateRequest task_update_request: An object that contains updated task properties to apply. (required) + :param str zap_trace_span: OpenTracing span context + :return: Task + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_tasks_id_prepare(task_id, task_update_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks/{taskID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Task', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_tasks_id_async(self, task_id, task_update_request, **kwargs): # noqa: E501,D401,D403 + """Update a task. + + Updates a task and then cancels all scheduled runs of the task. Use this endpoint to set, modify, and clear task properties (for example: `cron`, `name`, `flux`, `status`). Once InfluxDB applies the update, it cancels all previously scheduled runs of the task. To update a task, pass an object that contains the updated key-value pairs. To activate or inactivate a task, set the `status` property. _`"status": "inactive"`_ cancels scheduled runs and prevents manual runs of the task. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str task_id: The ID of the task to update. (required) + :param TaskUpdateRequest task_update_request: An object that contains updated task properties to apply. (required) + :param str zap_trace_span: OpenTracing span context + :return: Task + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_tasks_id_prepare(task_id, task_update_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks/{taskID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Task', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_tasks_id_prepare(self, task_id, task_update_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['task_id', 'task_update_request', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_tasks_id', all_params, local_var_params) + # verify the required parameter 'task_id' is set + if ('task_id' not in local_var_params or + local_var_params['task_id'] is None): + raise ValueError("Missing the required parameter `task_id` when calling `patch_tasks_id`") # noqa: E501 + # verify the required parameter 'task_update_request' is set + if ('task_update_request' not in local_var_params or + local_var_params['task_update_request'] is None): + raise ValueError("Missing the required parameter `task_update_request` when calling `patch_tasks_id`") # noqa: E501 + + path_params = {} + if 'task_id' in local_var_params: + path_params['taskID'] = local_var_params['task_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'task_update_request' in local_var_params: + body_params = local_var_params['task_update_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_tasks(self, task_create_request, **kwargs): # noqa: E501,D401,D403 + """Create a task. + + Creates a [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) and returns the task. #### Related guides - [Get started with tasks](https://docs.influxdata.com/influxdb/latest/process-data/get-started/) - [Create a task](https://docs.influxdata.com/influxdb/latest/process-data/manage-tasks/create-task/) - [Common tasks](https://docs.influxdata.com/influxdb/latest/process-data/common-tasks/) - [Task configuration options](https://docs.influxdata.com/influxdb/latest/process-data/task-options/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_tasks(task_create_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param TaskCreateRequest task_create_request: The task to create. (required) + :param str zap_trace_span: OpenTracing span context + :return: Task + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_tasks_with_http_info(task_create_request, **kwargs) # noqa: E501 + else: + (data) = self.post_tasks_with_http_info(task_create_request, **kwargs) # noqa: E501 + return data + + def post_tasks_with_http_info(self, task_create_request, **kwargs): # noqa: E501,D401,D403 + """Create a task. + + Creates a [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) and returns the task. #### Related guides - [Get started with tasks](https://docs.influxdata.com/influxdb/latest/process-data/get-started/) - [Create a task](https://docs.influxdata.com/influxdb/latest/process-data/manage-tasks/create-task/) - [Common tasks](https://docs.influxdata.com/influxdb/latest/process-data/common-tasks/) - [Task configuration options](https://docs.influxdata.com/influxdb/latest/process-data/task-options/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_tasks_with_http_info(task_create_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param TaskCreateRequest task_create_request: The task to create. (required) + :param str zap_trace_span: OpenTracing span context + :return: Task + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_tasks_prepare(task_create_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Task', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_tasks_async(self, task_create_request, **kwargs): # noqa: E501,D401,D403 + """Create a task. + + Creates a [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) and returns the task. #### Related guides - [Get started with tasks](https://docs.influxdata.com/influxdb/latest/process-data/get-started/) - [Create a task](https://docs.influxdata.com/influxdb/latest/process-data/manage-tasks/create-task/) - [Common tasks](https://docs.influxdata.com/influxdb/latest/process-data/common-tasks/) - [Task configuration options](https://docs.influxdata.com/influxdb/latest/process-data/task-options/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param TaskCreateRequest task_create_request: The task to create. (required) + :param str zap_trace_span: OpenTracing span context + :return: Task + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_tasks_prepare(task_create_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Task', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_tasks_prepare(self, task_create_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['task_create_request', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_tasks', all_params, local_var_params) + # verify the required parameter 'task_create_request' is set + if ('task_create_request' not in local_var_params or + local_var_params['task_create_request'] is None): + raise ValueError("Missing the required parameter `task_create_request` when calling `post_tasks`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'task_create_request' in local_var_params: + body_params = local_var_params['task_create_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_tasks_id_labels(self, task_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a task. + + Adds a label to a task. Use this endpoint to add a label that you can use to filter tasks in the InfluxDB UI. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_tasks_id_labels(task_id, label_mapping, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to label. (required) + :param LabelMapping label_mapping: An object that contains a _`labelID`_ to add to the task. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_tasks_id_labels_with_http_info(task_id, label_mapping, **kwargs) # noqa: E501 + else: + (data) = self.post_tasks_id_labels_with_http_info(task_id, label_mapping, **kwargs) # noqa: E501 + return data + + def post_tasks_id_labels_with_http_info(self, task_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a task. + + Adds a label to a task. Use this endpoint to add a label that you can use to filter tasks in the InfluxDB UI. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_tasks_id_labels_with_http_info(task_id, label_mapping, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The ID of the task to label. (required) + :param LabelMapping label_mapping: An object that contains a _`labelID`_ to add to the task. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_tasks_id_labels_prepare(task_id, label_mapping, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks/{taskID}/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_tasks_id_labels_async(self, task_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a task. + + Adds a label to a task. Use this endpoint to add a label that you can use to filter tasks in the InfluxDB UI. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str task_id: The ID of the task to label. (required) + :param LabelMapping label_mapping: An object that contains a _`labelID`_ to add to the task. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_tasks_id_labels_prepare(task_id, label_mapping, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks/{taskID}/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_tasks_id_labels_prepare(self, task_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['task_id', 'label_mapping', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_tasks_id_labels', all_params, local_var_params) + # verify the required parameter 'task_id' is set + if ('task_id' not in local_var_params or + local_var_params['task_id'] is None): + raise ValueError("Missing the required parameter `task_id` when calling `post_tasks_id_labels`") # noqa: E501 + # verify the required parameter 'label_mapping' is set + if ('label_mapping' not in local_var_params or + local_var_params['label_mapping'] is None): + raise ValueError("Missing the required parameter `label_mapping` when calling `post_tasks_id_labels`") # noqa: E501 + + path_params = {} + if 'task_id' in local_var_params: + path_params['taskID'] = local_var_params['task_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'label_mapping' in local_var_params: + body_params = local_var_params['label_mapping'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_tasks_id_members(self, task_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add a member to a task. + + **Deprecated**: Tasks don't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. Adds a user to members of a task and returns the member. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_tasks_id_members(task_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The task ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: A user to add as a member of the task. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMember + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_tasks_id_members_with_http_info(task_id, add_resource_member_request_body, **kwargs) # noqa: E501 + else: + (data) = self.post_tasks_id_members_with_http_info(task_id, add_resource_member_request_body, **kwargs) # noqa: E501 + return data + + def post_tasks_id_members_with_http_info(self, task_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add a member to a task. + + **Deprecated**: Tasks don't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. Adds a user to members of a task and returns the member. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_tasks_id_members_with_http_info(task_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The task ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: A user to add as a member of the task. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMember + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_tasks_id_members_prepare(task_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks/{taskID}/members', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMember', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_tasks_id_members_async(self, task_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add a member to a task. + + **Deprecated**: Tasks don't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. Adds a user to members of a task and returns the member. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str task_id: The task ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: A user to add as a member of the task. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMember + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_tasks_id_members_prepare(task_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks/{taskID}/members', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMember', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_tasks_id_members_prepare(self, task_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['task_id', 'add_resource_member_request_body', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_tasks_id_members', all_params, local_var_params) + # verify the required parameter 'task_id' is set + if ('task_id' not in local_var_params or + local_var_params['task_id'] is None): + raise ValueError("Missing the required parameter `task_id` when calling `post_tasks_id_members`") # noqa: E501 + # verify the required parameter 'add_resource_member_request_body' is set + if ('add_resource_member_request_body' not in local_var_params or + local_var_params['add_resource_member_request_body'] is None): + raise ValueError("Missing the required parameter `add_resource_member_request_body` when calling `post_tasks_id_members`") # noqa: E501 + + path_params = {} + if 'task_id' in local_var_params: + path_params['taskID'] = local_var_params['task_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'add_resource_member_request_body' in local_var_params: + body_params = local_var_params['add_resource_member_request_body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_tasks_id_owners(self, task_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add an owner for a task. + + **Deprecated**: Tasks don't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. Assigns a task `owner` role to a user. Use this endpoint to create a _resource owner_ for the task. A _resource owner_ is a user with `role: owner` for a specific resource. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_tasks_id_owners(task_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The task ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: A user to add as an owner of the task. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwner + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_tasks_id_owners_with_http_info(task_id, add_resource_member_request_body, **kwargs) # noqa: E501 + else: + (data) = self.post_tasks_id_owners_with_http_info(task_id, add_resource_member_request_body, **kwargs) # noqa: E501 + return data + + def post_tasks_id_owners_with_http_info(self, task_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add an owner for a task. + + **Deprecated**: Tasks don't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. Assigns a task `owner` role to a user. Use this endpoint to create a _resource owner_ for the task. A _resource owner_ is a user with `role: owner` for a specific resource. + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_tasks_id_owners_with_http_info(task_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: The task ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: A user to add as an owner of the task. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwner + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_tasks_id_owners_prepare(task_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks/{taskID}/owners', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwner', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_tasks_id_owners_async(self, task_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add an owner for a task. + + **Deprecated**: Tasks don't use `owner` and `member` roles. Use [`/api/v2/authorizations`](#tag/Authorizations-(API-tokens)) to assign user permissions. Assigns a task `owner` role to a user. Use this endpoint to create a _resource owner_ for the task. A _resource owner_ is a user with `role: owner` for a specific resource. + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str task_id: The task ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: A user to add as an owner of the task. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwner + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_tasks_id_owners_prepare(task_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks/{taskID}/owners', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwner', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_tasks_id_owners_prepare(self, task_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['task_id', 'add_resource_member_request_body', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_tasks_id_owners', all_params, local_var_params) + # verify the required parameter 'task_id' is set + if ('task_id' not in local_var_params or + local_var_params['task_id'] is None): + raise ValueError("Missing the required parameter `task_id` when calling `post_tasks_id_owners`") # noqa: E501 + # verify the required parameter 'add_resource_member_request_body' is set + if ('add_resource_member_request_body' not in local_var_params or + local_var_params['add_resource_member_request_body'] is None): + raise ValueError("Missing the required parameter `add_resource_member_request_body` when calling `post_tasks_id_owners`") # noqa: E501 + + path_params = {} + if 'task_id' in local_var_params: + path_params['taskID'] = local_var_params['task_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'add_resource_member_request_body' in local_var_params: + body_params = local_var_params['add_resource_member_request_body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_tasks_id_runs(self, task_id, **kwargs): # noqa: E501,D401,D403 + """Start a task run, overriding the schedule. + + Schedules a task run to start immediately, ignoring scheduled runs. Use this endpoint to manually start a task run. Scheduled runs will continue to run as scheduled. This may result in concurrently running tasks. To _retry_ a previous run (and avoid creating a new run), use the [`POST /api/v2/tasks/{taskID}/runs/{runID}/retry` endpoint](#operation/PostTasksIDRunsIDRetry). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_tasks_id_runs(task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: (required) + :param str zap_trace_span: OpenTracing span context + :param RunManually run_manually: + :return: Run + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_tasks_id_runs_with_http_info(task_id, **kwargs) # noqa: E501 + else: + (data) = self.post_tasks_id_runs_with_http_info(task_id, **kwargs) # noqa: E501 + return data + + def post_tasks_id_runs_with_http_info(self, task_id, **kwargs): # noqa: E501,D401,D403 + """Start a task run, overriding the schedule. + + Schedules a task run to start immediately, ignoring scheduled runs. Use this endpoint to manually start a task run. Scheduled runs will continue to run as scheduled. This may result in concurrently running tasks. To _retry_ a previous run (and avoid creating a new run), use the [`POST /api/v2/tasks/{taskID}/runs/{runID}/retry` endpoint](#operation/PostTasksIDRunsIDRetry). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_tasks_id_runs_with_http_info(task_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: (required) + :param str zap_trace_span: OpenTracing span context + :param RunManually run_manually: + :return: Run + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_tasks_id_runs_prepare(task_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks/{taskID}/runs', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Run', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_tasks_id_runs_async(self, task_id, **kwargs): # noqa: E501,D401,D403 + """Start a task run, overriding the schedule. + + Schedules a task run to start immediately, ignoring scheduled runs. Use this endpoint to manually start a task run. Scheduled runs will continue to run as scheduled. This may result in concurrently running tasks. To _retry_ a previous run (and avoid creating a new run), use the [`POST /api/v2/tasks/{taskID}/runs/{runID}/retry` endpoint](#operation/PostTasksIDRunsIDRetry). + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str task_id: (required) + :param str zap_trace_span: OpenTracing span context + :param RunManually run_manually: + :return: Run + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_tasks_id_runs_prepare(task_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks/{taskID}/runs', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Run', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_tasks_id_runs_prepare(self, task_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['task_id', 'zap_trace_span', 'run_manually'] # noqa: E501 + self._check_operation_params('post_tasks_id_runs', all_params, local_var_params) + # verify the required parameter 'task_id' is set + if ('task_id' not in local_var_params or + local_var_params['task_id'] is None): + raise ValueError("Missing the required parameter `task_id` when calling `post_tasks_id_runs`") # noqa: E501 + + path_params = {} + if 'task_id' in local_var_params: + path_params['taskID'] = local_var_params['task_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'run_manually' in local_var_params: + body_params = local_var_params['run_manually'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_tasks_id_runs_id_retry(self, task_id, run_id, **kwargs): # noqa: E501,D401,D403 + """Retry a task run. + + Queues a [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) run to retry and returns the scheduled run. To manually start a _new_ task run, use the [`POST /api/v2/tasks/{taskID}/runs` endpoint](#operation/PostTasksIDRuns). #### Limitations - The task must be _active_ (`status: "active"`). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_tasks_id_runs_id_retry(task_id, run_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: A [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) ID. Specifies the task to retry. (required) + :param str run_id: A [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) run ID. Specifies the task run to retry. To find a task run ID, use the [`GET /api/v2/tasks/{taskID}/runs` endpoint](#operation/GetTasksIDRuns) to list task runs. (required) + :param str zap_trace_span: OpenTracing span context + :param str body: + :return: Run + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_tasks_id_runs_id_retry_with_http_info(task_id, run_id, **kwargs) # noqa: E501 + else: + (data) = self.post_tasks_id_runs_id_retry_with_http_info(task_id, run_id, **kwargs) # noqa: E501 + return data + + def post_tasks_id_runs_id_retry_with_http_info(self, task_id, run_id, **kwargs): # noqa: E501,D401,D403 + """Retry a task run. + + Queues a [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) run to retry and returns the scheduled run. To manually start a _new_ task run, use the [`POST /api/v2/tasks/{taskID}/runs` endpoint](#operation/PostTasksIDRuns). #### Limitations - The task must be _active_ (`status: "active"`). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_tasks_id_runs_id_retry_with_http_info(task_id, run_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str task_id: A [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) ID. Specifies the task to retry. (required) + :param str run_id: A [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) run ID. Specifies the task run to retry. To find a task run ID, use the [`GET /api/v2/tasks/{taskID}/runs` endpoint](#operation/GetTasksIDRuns) to list task runs. (required) + :param str zap_trace_span: OpenTracing span context + :param str body: + :return: Run + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_tasks_id_runs_id_retry_prepare(task_id, run_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/tasks/{taskID}/runs/{runID}/retry', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Run', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_tasks_id_runs_id_retry_async(self, task_id, run_id, **kwargs): # noqa: E501,D401,D403 + """Retry a task run. + + Queues a [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) run to retry and returns the scheduled run. To manually start a _new_ task run, use the [`POST /api/v2/tasks/{taskID}/runs` endpoint](#operation/PostTasksIDRuns). #### Limitations - The task must be _active_ (`status: "active"`). + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str task_id: A [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) ID. Specifies the task to retry. (required) + :param str run_id: A [task](https://docs.influxdata.com/influxdb/latest/reference/glossary/#task) run ID. Specifies the task run to retry. To find a task run ID, use the [`GET /api/v2/tasks/{taskID}/runs` endpoint](#operation/GetTasksIDRuns) to list task runs. (required) + :param str zap_trace_span: OpenTracing span context + :param str body: + :return: Run + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_tasks_id_runs_id_retry_prepare(task_id, run_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/tasks/{taskID}/runs/{runID}/retry', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Run', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_tasks_id_runs_id_retry_prepare(self, task_id, run_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['task_id', 'run_id', 'zap_trace_span', 'body'] # noqa: E501 + self._check_operation_params('post_tasks_id_runs_id_retry', all_params, local_var_params) + # verify the required parameter 'task_id' is set + if ('task_id' not in local_var_params or + local_var_params['task_id'] is None): + raise ValueError("Missing the required parameter `task_id` when calling `post_tasks_id_runs_id_retry`") # noqa: E501 + # verify the required parameter 'run_id' is set + if ('run_id' not in local_var_params or + local_var_params['run_id'] is None): + raise ValueError("Missing the required parameter `run_id` when calling `post_tasks_id_runs_id_retry`") # noqa: E501 + + path_params = {} + if 'task_id' in local_var_params: + path_params['taskID'] = local_var_params['task_id'] # noqa: E501 + if 'run_id' in local_var_params: + path_params['runID'] = local_var_params['run_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'body' in local_var_params: + body_params = local_var_params['body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json; charset=utf-8']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/telegraf_plugins_service.py b/frogpilot/third_party/influxdb_client/service/telegraf_plugins_service.py new file mode 100644 index 000000000..905fdd343 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/telegraf_plugins_service.py @@ -0,0 +1,142 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class TelegrafPluginsService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """TelegrafPluginsService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def get_telegraf_plugins(self, **kwargs): # noqa: E501,D401,D403 + """List all Telegraf plugins. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_telegraf_plugins(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str type: The type of plugin desired. + :return: TelegrafPlugins + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_telegraf_plugins_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_telegraf_plugins_with_http_info(**kwargs) # noqa: E501 + return data + + def get_telegraf_plugins_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """List all Telegraf plugins. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_telegraf_plugins_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str type: The type of plugin desired. + :return: TelegrafPlugins + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_telegraf_plugins_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/telegraf/plugins', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='TelegrafPlugins', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_telegraf_plugins_async(self, **kwargs): # noqa: E501,D401,D403 + """List all Telegraf plugins. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str type: The type of plugin desired. + :return: TelegrafPlugins + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_telegraf_plugins_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/telegraf/plugins', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='TelegrafPlugins', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_telegraf_plugins_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span', 'type'] # noqa: E501 + self._check_operation_params('get_telegraf_plugins', all_params, local_var_params) + + path_params = {} + + query_params = [] + if 'type' in local_var_params: + query_params.append(('type', local_var_params['type'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/telegrafs_service.py b/frogpilot/third_party/influxdb_client/service/telegrafs_service.py new file mode 100644 index 000000000..4c3bfe9ee --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/telegrafs_service.py @@ -0,0 +1,1738 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class TelegrafsService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """TelegrafsService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def delete_telegrafs_id(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """Delete a Telegraf configuration. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_telegrafs_id(telegraf_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf configuration ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_telegrafs_id_with_http_info(telegraf_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_telegrafs_id_with_http_info(telegraf_id, **kwargs) # noqa: E501 + return data + + def delete_telegrafs_id_with_http_info(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """Delete a Telegraf configuration. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_telegrafs_id_with_http_info(telegraf_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf configuration ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_telegrafs_id_prepare(telegraf_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_telegrafs_id_async(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """Delete a Telegraf configuration. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str telegraf_id: The Telegraf configuration ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_telegrafs_id_prepare(telegraf_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_telegrafs_id_prepare(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['telegraf_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_telegrafs_id', all_params, local_var_params) + # verify the required parameter 'telegraf_id' is set + if ('telegraf_id' not in local_var_params or + local_var_params['telegraf_id'] is None): + raise ValueError("Missing the required parameter `telegraf_id` when calling `delete_telegrafs_id`") # noqa: E501 + + path_params = {} + if 'telegraf_id' in local_var_params: + path_params['telegrafID'] = local_var_params['telegraf_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_telegrafs_id_labels_id(self, telegraf_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a Telegraf config. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_telegrafs_id_labels_id(telegraf_id, label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf config ID. (required) + :param str label_id: The label ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_telegrafs_id_labels_id_with_http_info(telegraf_id, label_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_telegrafs_id_labels_id_with_http_info(telegraf_id, label_id, **kwargs) # noqa: E501 + return data + + def delete_telegrafs_id_labels_id_with_http_info(self, telegraf_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a Telegraf config. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_telegrafs_id_labels_id_with_http_info(telegraf_id, label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf config ID. (required) + :param str label_id: The label ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_telegrafs_id_labels_id_prepare(telegraf_id, label_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_telegrafs_id_labels_id_async(self, telegraf_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a Telegraf config. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str telegraf_id: The Telegraf config ID. (required) + :param str label_id: The label ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_telegrafs_id_labels_id_prepare(telegraf_id, label_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_telegrafs_id_labels_id_prepare(self, telegraf_id, label_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['telegraf_id', 'label_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_telegrafs_id_labels_id', all_params, local_var_params) + # verify the required parameter 'telegraf_id' is set + if ('telegraf_id' not in local_var_params or + local_var_params['telegraf_id'] is None): + raise ValueError("Missing the required parameter `telegraf_id` when calling `delete_telegrafs_id_labels_id`") # noqa: E501 + # verify the required parameter 'label_id' is set + if ('label_id' not in local_var_params or + local_var_params['label_id'] is None): + raise ValueError("Missing the required parameter `label_id` when calling `delete_telegrafs_id_labels_id`") # noqa: E501 + + path_params = {} + if 'telegraf_id' in local_var_params: + path_params['telegrafID'] = local_var_params['telegraf_id'] # noqa: E501 + if 'label_id' in local_var_params: + path_params['labelID'] = local_var_params['label_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_telegrafs_id_members_id(self, user_id, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """Remove a member from a Telegraf config. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_telegrafs_id_members_id(user_id, telegraf_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the member to remove. (required) + :param str telegraf_id: The Telegraf config ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_telegrafs_id_members_id_with_http_info(user_id, telegraf_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_telegrafs_id_members_id_with_http_info(user_id, telegraf_id, **kwargs) # noqa: E501 + return data + + def delete_telegrafs_id_members_id_with_http_info(self, user_id, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """Remove a member from a Telegraf config. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_telegrafs_id_members_id_with_http_info(user_id, telegraf_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the member to remove. (required) + :param str telegraf_id: The Telegraf config ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_telegrafs_id_members_id_prepare(user_id, telegraf_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}/members/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_telegrafs_id_members_id_async(self, user_id, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """Remove a member from a Telegraf config. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str user_id: The ID of the member to remove. (required) + :param str telegraf_id: The Telegraf config ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_telegrafs_id_members_id_prepare(user_id, telegraf_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}/members/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_telegrafs_id_members_id_prepare(self, user_id, telegraf_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['user_id', 'telegraf_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_telegrafs_id_members_id', all_params, local_var_params) + # verify the required parameter 'user_id' is set + if ('user_id' not in local_var_params or + local_var_params['user_id'] is None): + raise ValueError("Missing the required parameter `user_id` when calling `delete_telegrafs_id_members_id`") # noqa: E501 + # verify the required parameter 'telegraf_id' is set + if ('telegraf_id' not in local_var_params or + local_var_params['telegraf_id'] is None): + raise ValueError("Missing the required parameter `telegraf_id` when calling `delete_telegrafs_id_members_id`") # noqa: E501 + + path_params = {} + if 'user_id' in local_var_params: + path_params['userID'] = local_var_params['user_id'] # noqa: E501 + if 'telegraf_id' in local_var_params: + path_params['telegrafID'] = local_var_params['telegraf_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_telegrafs_id_owners_id(self, user_id, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """Remove an owner from a Telegraf config. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_telegrafs_id_owners_id(user_id, telegraf_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the owner to remove. (required) + :param str telegraf_id: The Telegraf config ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_telegrafs_id_owners_id_with_http_info(user_id, telegraf_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_telegrafs_id_owners_id_with_http_info(user_id, telegraf_id, **kwargs) # noqa: E501 + return data + + def delete_telegrafs_id_owners_id_with_http_info(self, user_id, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """Remove an owner from a Telegraf config. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_telegrafs_id_owners_id_with_http_info(user_id, telegraf_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the owner to remove. (required) + :param str telegraf_id: The Telegraf config ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_telegrafs_id_owners_id_prepare(user_id, telegraf_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}/owners/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_telegrafs_id_owners_id_async(self, user_id, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """Remove an owner from a Telegraf config. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str user_id: The ID of the owner to remove. (required) + :param str telegraf_id: The Telegraf config ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_telegrafs_id_owners_id_prepare(user_id, telegraf_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}/owners/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_telegrafs_id_owners_id_prepare(self, user_id, telegraf_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['user_id', 'telegraf_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_telegrafs_id_owners_id', all_params, local_var_params) + # verify the required parameter 'user_id' is set + if ('user_id' not in local_var_params or + local_var_params['user_id'] is None): + raise ValueError("Missing the required parameter `user_id` when calling `delete_telegrafs_id_owners_id`") # noqa: E501 + # verify the required parameter 'telegraf_id' is set + if ('telegraf_id' not in local_var_params or + local_var_params['telegraf_id'] is None): + raise ValueError("Missing the required parameter `telegraf_id` when calling `delete_telegrafs_id_owners_id`") # noqa: E501 + + path_params = {} + if 'user_id' in local_var_params: + path_params['userID'] = local_var_params['user_id'] # noqa: E501 + if 'telegraf_id' in local_var_params: + path_params['telegrafID'] = local_var_params['telegraf_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_telegrafs(self, **kwargs): # noqa: E501,D401,D403 + """List all Telegraf configurations. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_telegrafs(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str org_id: The organization ID the Telegraf config belongs to. + :return: Telegrafs + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_telegrafs_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_telegrafs_with_http_info(**kwargs) # noqa: E501 + return data + + def get_telegrafs_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """List all Telegraf configurations. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_telegrafs_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str org_id: The organization ID the Telegraf config belongs to. + :return: Telegrafs + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_telegrafs_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/telegrafs', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Telegrafs', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_telegrafs_async(self, **kwargs): # noqa: E501,D401,D403 + """List all Telegraf configurations. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str org_id: The organization ID the Telegraf config belongs to. + :return: Telegrafs + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_telegrafs_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/telegrafs', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Telegrafs', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_telegrafs_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span', 'org_id'] # noqa: E501 + self._check_operation_params('get_telegrafs', all_params, local_var_params) + + path_params = {} + + query_params = [] + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_telegrafs_id(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a Telegraf configuration. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_telegrafs_id(telegraf_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf configuration ID. (required) + :param str zap_trace_span: OpenTracing span context + :param str accept: + :return: str + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_telegrafs_id_with_http_info(telegraf_id, **kwargs) # noqa: E501 + else: + (data) = self.get_telegrafs_id_with_http_info(telegraf_id, **kwargs) # noqa: E501 + return data + + def get_telegrafs_id_with_http_info(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a Telegraf configuration. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_telegrafs_id_with_http_info(telegraf_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf configuration ID. (required) + :param str zap_trace_span: OpenTracing span context + :param str accept: + :return: str + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_telegrafs_id_prepare(telegraf_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='str', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_telegrafs_id_async(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a Telegraf configuration. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str telegraf_id: The Telegraf configuration ID. (required) + :param str zap_trace_span: OpenTracing span context + :param str accept: + :return: str + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_telegrafs_id_prepare(telegraf_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='str', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_telegrafs_id_prepare(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['telegraf_id', 'zap_trace_span', 'accept'] # noqa: E501 + self._check_operation_params('get_telegrafs_id', all_params, local_var_params) + # verify the required parameter 'telegraf_id' is set + if ('telegraf_id' not in local_var_params or + local_var_params['telegraf_id'] is None): + raise ValueError("Missing the required parameter `telegraf_id` when calling `get_telegrafs_id`") # noqa: E501 + + path_params = {} + if 'telegraf_id' in local_var_params: + path_params['telegrafID'] = local_var_params['telegraf_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + if 'accept' in local_var_params: + header_params['Accept'] = local_var_params['accept'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/toml', 'application/json', 'application/octet-stream']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_telegrafs_id_labels(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a Telegraf config. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_telegrafs_id_labels(telegraf_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf config ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_telegrafs_id_labels_with_http_info(telegraf_id, **kwargs) # noqa: E501 + else: + (data) = self.get_telegrafs_id_labels_with_http_info(telegraf_id, **kwargs) # noqa: E501 + return data + + def get_telegrafs_id_labels_with_http_info(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a Telegraf config. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_telegrafs_id_labels_with_http_info(telegraf_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf config ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_telegrafs_id_labels_prepare(telegraf_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_telegrafs_id_labels_async(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a Telegraf config. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str telegraf_id: The Telegraf config ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_telegrafs_id_labels_prepare(telegraf_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_telegrafs_id_labels_prepare(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['telegraf_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_telegrafs_id_labels', all_params, local_var_params) + # verify the required parameter 'telegraf_id' is set + if ('telegraf_id' not in local_var_params or + local_var_params['telegraf_id'] is None): + raise ValueError("Missing the required parameter `telegraf_id` when calling `get_telegrafs_id_labels`") # noqa: E501 + + path_params = {} + if 'telegraf_id' in local_var_params: + path_params['telegrafID'] = local_var_params['telegraf_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_telegrafs_id_members(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """List all users with member privileges for a Telegraf config. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_telegrafs_id_members(telegraf_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf config ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMembers + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_telegrafs_id_members_with_http_info(telegraf_id, **kwargs) # noqa: E501 + else: + (data) = self.get_telegrafs_id_members_with_http_info(telegraf_id, **kwargs) # noqa: E501 + return data + + def get_telegrafs_id_members_with_http_info(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """List all users with member privileges for a Telegraf config. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_telegrafs_id_members_with_http_info(telegraf_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf config ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMembers + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_telegrafs_id_members_prepare(telegraf_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}/members', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMembers', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_telegrafs_id_members_async(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """List all users with member privileges for a Telegraf config. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str telegraf_id: The Telegraf config ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMembers + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_telegrafs_id_members_prepare(telegraf_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}/members', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMembers', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_telegrafs_id_members_prepare(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['telegraf_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_telegrafs_id_members', all_params, local_var_params) + # verify the required parameter 'telegraf_id' is set + if ('telegraf_id' not in local_var_params or + local_var_params['telegraf_id'] is None): + raise ValueError("Missing the required parameter `telegraf_id` when calling `get_telegrafs_id_members`") # noqa: E501 + + path_params = {} + if 'telegraf_id' in local_var_params: + path_params['telegrafID'] = local_var_params['telegraf_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_telegrafs_id_owners(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """List all owners of a Telegraf configuration. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_telegrafs_id_owners(telegraf_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf configuration ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwners + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_telegrafs_id_owners_with_http_info(telegraf_id, **kwargs) # noqa: E501 + else: + (data) = self.get_telegrafs_id_owners_with_http_info(telegraf_id, **kwargs) # noqa: E501 + return data + + def get_telegrafs_id_owners_with_http_info(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """List all owners of a Telegraf configuration. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_telegrafs_id_owners_with_http_info(telegraf_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf configuration ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwners + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_telegrafs_id_owners_prepare(telegraf_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}/owners', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwners', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_telegrafs_id_owners_async(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + """List all owners of a Telegraf configuration. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str telegraf_id: The Telegraf configuration ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwners + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_telegrafs_id_owners_prepare(telegraf_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}/owners', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwners', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_telegrafs_id_owners_prepare(self, telegraf_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['telegraf_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_telegrafs_id_owners', all_params, local_var_params) + # verify the required parameter 'telegraf_id' is set + if ('telegraf_id' not in local_var_params or + local_var_params['telegraf_id'] is None): + raise ValueError("Missing the required parameter `telegraf_id` when calling `get_telegrafs_id_owners`") # noqa: E501 + + path_params = {} + if 'telegraf_id' in local_var_params: + path_params['telegrafID'] = local_var_params['telegraf_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_telegrafs(self, telegraf_plugin_request, **kwargs): # noqa: E501,D401,D403 + """Create a Telegraf configuration. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_telegrafs(telegraf_plugin_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param TelegrafPluginRequest telegraf_plugin_request: Telegraf configuration to create (required) + :param str zap_trace_span: OpenTracing span context + :return: Telegraf + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_telegrafs_with_http_info(telegraf_plugin_request, **kwargs) # noqa: E501 + else: + (data) = self.post_telegrafs_with_http_info(telegraf_plugin_request, **kwargs) # noqa: E501 + return data + + def post_telegrafs_with_http_info(self, telegraf_plugin_request, **kwargs): # noqa: E501,D401,D403 + """Create a Telegraf configuration. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_telegrafs_with_http_info(telegraf_plugin_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param TelegrafPluginRequest telegraf_plugin_request: Telegraf configuration to create (required) + :param str zap_trace_span: OpenTracing span context + :return: Telegraf + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_telegrafs_prepare(telegraf_plugin_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/telegrafs', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Telegraf', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_telegrafs_async(self, telegraf_plugin_request, **kwargs): # noqa: E501,D401,D403 + """Create a Telegraf configuration. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param TelegrafPluginRequest telegraf_plugin_request: Telegraf configuration to create (required) + :param str zap_trace_span: OpenTracing span context + :return: Telegraf + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_telegrafs_prepare(telegraf_plugin_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/telegrafs', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Telegraf', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_telegrafs_prepare(self, telegraf_plugin_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['telegraf_plugin_request', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_telegrafs', all_params, local_var_params) + # verify the required parameter 'telegraf_plugin_request' is set + if ('telegraf_plugin_request' not in local_var_params or + local_var_params['telegraf_plugin_request'] is None): + raise ValueError("Missing the required parameter `telegraf_plugin_request` when calling `post_telegrafs`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'telegraf_plugin_request' in local_var_params: + body_params = local_var_params['telegraf_plugin_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_telegrafs_id_labels(self, telegraf_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a Telegraf config. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_telegrafs_id_labels(telegraf_id, label_mapping, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf config ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_telegrafs_id_labels_with_http_info(telegraf_id, label_mapping, **kwargs) # noqa: E501 + else: + (data) = self.post_telegrafs_id_labels_with_http_info(telegraf_id, label_mapping, **kwargs) # noqa: E501 + return data + + def post_telegrafs_id_labels_with_http_info(self, telegraf_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a Telegraf config. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_telegrafs_id_labels_with_http_info(telegraf_id, label_mapping, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf config ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_telegrafs_id_labels_prepare(telegraf_id, label_mapping, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_telegrafs_id_labels_async(self, telegraf_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a Telegraf config. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str telegraf_id: The Telegraf config ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_telegrafs_id_labels_prepare(telegraf_id, label_mapping, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_telegrafs_id_labels_prepare(self, telegraf_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['telegraf_id', 'label_mapping', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_telegrafs_id_labels', all_params, local_var_params) + # verify the required parameter 'telegraf_id' is set + if ('telegraf_id' not in local_var_params or + local_var_params['telegraf_id'] is None): + raise ValueError("Missing the required parameter `telegraf_id` when calling `post_telegrafs_id_labels`") # noqa: E501 + # verify the required parameter 'label_mapping' is set + if ('label_mapping' not in local_var_params or + local_var_params['label_mapping'] is None): + raise ValueError("Missing the required parameter `label_mapping` when calling `post_telegrafs_id_labels`") # noqa: E501 + + path_params = {} + if 'telegraf_id' in local_var_params: + path_params['telegrafID'] = local_var_params['telegraf_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'label_mapping' in local_var_params: + body_params = local_var_params['label_mapping'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_telegrafs_id_members(self, telegraf_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add a member to a Telegraf config. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_telegrafs_id_members(telegraf_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf config ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: User to add as member (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMember + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_telegrafs_id_members_with_http_info(telegraf_id, add_resource_member_request_body, **kwargs) # noqa: E501 + else: + (data) = self.post_telegrafs_id_members_with_http_info(telegraf_id, add_resource_member_request_body, **kwargs) # noqa: E501 + return data + + def post_telegrafs_id_members_with_http_info(self, telegraf_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add a member to a Telegraf config. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_telegrafs_id_members_with_http_info(telegraf_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf config ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: User to add as member (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMember + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_telegrafs_id_members_prepare(telegraf_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}/members', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMember', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_telegrafs_id_members_async(self, telegraf_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add a member to a Telegraf config. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str telegraf_id: The Telegraf config ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: User to add as member (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceMember + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_telegrafs_id_members_prepare(telegraf_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}/members', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceMember', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_telegrafs_id_members_prepare(self, telegraf_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['telegraf_id', 'add_resource_member_request_body', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_telegrafs_id_members', all_params, local_var_params) + # verify the required parameter 'telegraf_id' is set + if ('telegraf_id' not in local_var_params or + local_var_params['telegraf_id'] is None): + raise ValueError("Missing the required parameter `telegraf_id` when calling `post_telegrafs_id_members`") # noqa: E501 + # verify the required parameter 'add_resource_member_request_body' is set + if ('add_resource_member_request_body' not in local_var_params or + local_var_params['add_resource_member_request_body'] is None): + raise ValueError("Missing the required parameter `add_resource_member_request_body` when calling `post_telegrafs_id_members`") # noqa: E501 + + path_params = {} + if 'telegraf_id' in local_var_params: + path_params['telegrafID'] = local_var_params['telegraf_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'add_resource_member_request_body' in local_var_params: + body_params = local_var_params['add_resource_member_request_body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_telegrafs_id_owners(self, telegraf_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add an owner to a Telegraf configuration. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_telegrafs_id_owners(telegraf_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf configuration ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: User to add as owner (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwner + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_telegrafs_id_owners_with_http_info(telegraf_id, add_resource_member_request_body, **kwargs) # noqa: E501 + else: + (data) = self.post_telegrafs_id_owners_with_http_info(telegraf_id, add_resource_member_request_body, **kwargs) # noqa: E501 + return data + + def post_telegrafs_id_owners_with_http_info(self, telegraf_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add an owner to a Telegraf configuration. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_telegrafs_id_owners_with_http_info(telegraf_id, add_resource_member_request_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf configuration ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: User to add as owner (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwner + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_telegrafs_id_owners_prepare(telegraf_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}/owners', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwner', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_telegrafs_id_owners_async(self, telegraf_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + """Add an owner to a Telegraf configuration. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str telegraf_id: The Telegraf configuration ID. (required) + :param AddResourceMemberRequestBody add_resource_member_request_body: User to add as owner (required) + :param str zap_trace_span: OpenTracing span context + :return: ResourceOwner + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_telegrafs_id_owners_prepare(telegraf_id, add_resource_member_request_body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}/owners', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ResourceOwner', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_telegrafs_id_owners_prepare(self, telegraf_id, add_resource_member_request_body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['telegraf_id', 'add_resource_member_request_body', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_telegrafs_id_owners', all_params, local_var_params) + # verify the required parameter 'telegraf_id' is set + if ('telegraf_id' not in local_var_params or + local_var_params['telegraf_id'] is None): + raise ValueError("Missing the required parameter `telegraf_id` when calling `post_telegrafs_id_owners`") # noqa: E501 + # verify the required parameter 'add_resource_member_request_body' is set + if ('add_resource_member_request_body' not in local_var_params or + local_var_params['add_resource_member_request_body'] is None): + raise ValueError("Missing the required parameter `add_resource_member_request_body` when calling `post_telegrafs_id_owners`") # noqa: E501 + + path_params = {} + if 'telegraf_id' in local_var_params: + path_params['telegrafID'] = local_var_params['telegraf_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'add_resource_member_request_body' in local_var_params: + body_params = local_var_params['add_resource_member_request_body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def put_telegrafs_id(self, telegraf_id, telegraf_plugin_request, **kwargs): # noqa: E501,D401,D403 + """Update a Telegraf configuration. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.put_telegrafs_id(telegraf_id, telegraf_plugin_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf config ID. (required) + :param TelegrafPluginRequest telegraf_plugin_request: Telegraf configuration update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: Telegraf + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.put_telegrafs_id_with_http_info(telegraf_id, telegraf_plugin_request, **kwargs) # noqa: E501 + else: + (data) = self.put_telegrafs_id_with_http_info(telegraf_id, telegraf_plugin_request, **kwargs) # noqa: E501 + return data + + def put_telegrafs_id_with_http_info(self, telegraf_id, telegraf_plugin_request, **kwargs): # noqa: E501,D401,D403 + """Update a Telegraf configuration. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.put_telegrafs_id_with_http_info(telegraf_id, telegraf_plugin_request, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str telegraf_id: The Telegraf config ID. (required) + :param TelegrafPluginRequest telegraf_plugin_request: Telegraf configuration update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: Telegraf + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._put_telegrafs_id_prepare(telegraf_id, telegraf_plugin_request, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}', 'PUT', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Telegraf', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def put_telegrafs_id_async(self, telegraf_id, telegraf_plugin_request, **kwargs): # noqa: E501,D401,D403 + """Update a Telegraf configuration. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str telegraf_id: The Telegraf config ID. (required) + :param TelegrafPluginRequest telegraf_plugin_request: Telegraf configuration update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: Telegraf + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._put_telegrafs_id_prepare(telegraf_id, telegraf_plugin_request, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/telegrafs/{telegrafID}', 'PUT', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Telegraf', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _put_telegrafs_id_prepare(self, telegraf_id, telegraf_plugin_request, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['telegraf_id', 'telegraf_plugin_request', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('put_telegrafs_id', all_params, local_var_params) + # verify the required parameter 'telegraf_id' is set + if ('telegraf_id' not in local_var_params or + local_var_params['telegraf_id'] is None): + raise ValueError("Missing the required parameter `telegraf_id` when calling `put_telegrafs_id`") # noqa: E501 + # verify the required parameter 'telegraf_plugin_request' is set + if ('telegraf_plugin_request' not in local_var_params or + local_var_params['telegraf_plugin_request'] is None): + raise ValueError("Missing the required parameter `telegraf_plugin_request` when calling `put_telegrafs_id`") # noqa: E501 + + path_params = {} + if 'telegraf_id' in local_var_params: + path_params['telegrafID'] = local_var_params['telegraf_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'telegraf_plugin_request' in local_var_params: + body_params = local_var_params['telegraf_plugin_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/templates_service.py b/frogpilot/third_party/influxdb_client/service/templates_service.py new file mode 100644 index 000000000..92780a0ca --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/templates_service.py @@ -0,0 +1,959 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class TemplatesService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """TemplatesService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def apply_template(self, template_apply, **kwargs): # noqa: E501,D401,D403 + """Apply or dry-run a template. + + Applies a template to create or update a [stack](https://docs.influxdata.com/influxdb/latest/influxdb-templates/stacks/) of InfluxDB [resources](https://docs.influxdata.com/influxdb/latest/reference/cli/influx/export/all/#resources). The response contains the diff of changes and the stack ID. Use this endpoint to install an InfluxDB template to an organization. Provide template URLs or template objects in your request. To customize which template resources are installed, use the `actions` parameter. By default, when you apply a template, InfluxDB installs the template to create and update stack resources and then generates a diff of the changes. If you pass `dryRun: true` in the request body, InfluxDB validates the template and generates the resource diff, but doesnโ€™t make any changes to your instance. #### Custom values for templates - Some templates may contain [environment references](https://docs.influxdata.com/influxdb/latest/influxdb-templates/create/#include-user-definable-resource-names) for custom metadata. To provide custom values for environment references, pass the _`envRefs`_ property in the request body. For more information and examples, see how to [define environment references](https://docs.influxdata.com/influxdb/latest/influxdb-templates/use/#define-environment-references). - Some templates may contain queries that use [secrets](https://docs.influxdata.com/influxdb/latest/security/secrets/). To provide custom secret values, pass the _`secrets`_ property in the request body. Don't expose secret values in templates. For more information, see [how to pass secrets when installing a template](https://docs.influxdata.com/influxdb/latest/influxdb-templates/use/#pass-secrets-when-installing-a-template). #### Required permissions - `write` permissions for resource types in the template. #### Rate limits (with InfluxDB Cloud) - Adjustable service quotas apply. For more information, see [limits and adjustable quotas](https://docs.influxdata.com/influxdb/cloud/account-management/limits/). #### Related guides - [Use templates](https://docs.influxdata.com/influxdb/latest/influxdb-templates/use/) - [Stacks](https://docs.influxdata.com/influxdb/latest/influxdb-templates/stacks/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.apply_template(template_apply, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param TemplateApply template_apply: Parameters for applying templates. (required) + :return: TemplateSummary + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.apply_template_with_http_info(template_apply, **kwargs) # noqa: E501 + else: + (data) = self.apply_template_with_http_info(template_apply, **kwargs) # noqa: E501 + return data + + def apply_template_with_http_info(self, template_apply, **kwargs): # noqa: E501,D401,D403 + """Apply or dry-run a template. + + Applies a template to create or update a [stack](https://docs.influxdata.com/influxdb/latest/influxdb-templates/stacks/) of InfluxDB [resources](https://docs.influxdata.com/influxdb/latest/reference/cli/influx/export/all/#resources). The response contains the diff of changes and the stack ID. Use this endpoint to install an InfluxDB template to an organization. Provide template URLs or template objects in your request. To customize which template resources are installed, use the `actions` parameter. By default, when you apply a template, InfluxDB installs the template to create and update stack resources and then generates a diff of the changes. If you pass `dryRun: true` in the request body, InfluxDB validates the template and generates the resource diff, but doesnโ€™t make any changes to your instance. #### Custom values for templates - Some templates may contain [environment references](https://docs.influxdata.com/influxdb/latest/influxdb-templates/create/#include-user-definable-resource-names) for custom metadata. To provide custom values for environment references, pass the _`envRefs`_ property in the request body. For more information and examples, see how to [define environment references](https://docs.influxdata.com/influxdb/latest/influxdb-templates/use/#define-environment-references). - Some templates may contain queries that use [secrets](https://docs.influxdata.com/influxdb/latest/security/secrets/). To provide custom secret values, pass the _`secrets`_ property in the request body. Don't expose secret values in templates. For more information, see [how to pass secrets when installing a template](https://docs.influxdata.com/influxdb/latest/influxdb-templates/use/#pass-secrets-when-installing-a-template). #### Required permissions - `write` permissions for resource types in the template. #### Rate limits (with InfluxDB Cloud) - Adjustable service quotas apply. For more information, see [limits and adjustable quotas](https://docs.influxdata.com/influxdb/cloud/account-management/limits/). #### Related guides - [Use templates](https://docs.influxdata.com/influxdb/latest/influxdb-templates/use/) - [Stacks](https://docs.influxdata.com/influxdb/latest/influxdb-templates/stacks/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.apply_template_with_http_info(template_apply, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param TemplateApply template_apply: Parameters for applying templates. (required) + :return: TemplateSummary + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._apply_template_prepare(template_apply, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/templates/apply', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='TemplateSummary', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def apply_template_async(self, template_apply, **kwargs): # noqa: E501,D401,D403 + """Apply or dry-run a template. + + Applies a template to create or update a [stack](https://docs.influxdata.com/influxdb/latest/influxdb-templates/stacks/) of InfluxDB [resources](https://docs.influxdata.com/influxdb/latest/reference/cli/influx/export/all/#resources). The response contains the diff of changes and the stack ID. Use this endpoint to install an InfluxDB template to an organization. Provide template URLs or template objects in your request. To customize which template resources are installed, use the `actions` parameter. By default, when you apply a template, InfluxDB installs the template to create and update stack resources and then generates a diff of the changes. If you pass `dryRun: true` in the request body, InfluxDB validates the template and generates the resource diff, but doesnโ€™t make any changes to your instance. #### Custom values for templates - Some templates may contain [environment references](https://docs.influxdata.com/influxdb/latest/influxdb-templates/create/#include-user-definable-resource-names) for custom metadata. To provide custom values for environment references, pass the _`envRefs`_ property in the request body. For more information and examples, see how to [define environment references](https://docs.influxdata.com/influxdb/latest/influxdb-templates/use/#define-environment-references). - Some templates may contain queries that use [secrets](https://docs.influxdata.com/influxdb/latest/security/secrets/). To provide custom secret values, pass the _`secrets`_ property in the request body. Don't expose secret values in templates. For more information, see [how to pass secrets when installing a template](https://docs.influxdata.com/influxdb/latest/influxdb-templates/use/#pass-secrets-when-installing-a-template). #### Required permissions - `write` permissions for resource types in the template. #### Rate limits (with InfluxDB Cloud) - Adjustable service quotas apply. For more information, see [limits and adjustable quotas](https://docs.influxdata.com/influxdb/cloud/account-management/limits/). #### Related guides - [Use templates](https://docs.influxdata.com/influxdb/latest/influxdb-templates/use/) - [Stacks](https://docs.influxdata.com/influxdb/latest/influxdb-templates/stacks/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param TemplateApply template_apply: Parameters for applying templates. (required) + :return: TemplateSummary + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._apply_template_prepare(template_apply, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/templates/apply', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='TemplateSummary', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _apply_template_prepare(self, template_apply, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['template_apply'] # noqa: E501 + self._check_operation_params('apply_template', all_params, local_var_params) + # verify the required parameter 'template_apply' is set + if ('template_apply' not in local_var_params or + local_var_params['template_apply'] is None): + raise ValueError("Missing the required parameter `template_apply` when calling `apply_template`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + + body_params = None + if 'template_apply' in local_var_params: + body_params = local_var_params['template_apply'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json', 'application/x-jsonnet', 'text/yml']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def create_stack(self, **kwargs): # noqa: E501,D401,D403 + """Create a stack. + + Creates or initializes a stack. Use this endpoint to _manually_ initialize a new stack with the following optional information: - Stack name - Stack description - URLs for template manifest files To automatically create a stack when applying templates, use the [/api/v2/templates/apply endpoint](#operation/ApplyTemplate). #### Required permissions - `write` permission for the organization #### Related guides - [Initialize an InfluxDB stack](https://docs.influxdata.com/influxdb/latest/influxdb-templates/stacks/init/). - [Use InfluxDB templates](https://docs.influxdata.com/influxdb/latest/influxdb-templates/use/#apply-templates-to-an-influxdb-instance). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.create_stack(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param PostStackRequest post_stack_request: + :return: Stack + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.create_stack_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.create_stack_with_http_info(**kwargs) # noqa: E501 + return data + + def create_stack_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """Create a stack. + + Creates or initializes a stack. Use this endpoint to _manually_ initialize a new stack with the following optional information: - Stack name - Stack description - URLs for template manifest files To automatically create a stack when applying templates, use the [/api/v2/templates/apply endpoint](#operation/ApplyTemplate). #### Required permissions - `write` permission for the organization #### Related guides - [Initialize an InfluxDB stack](https://docs.influxdata.com/influxdb/latest/influxdb-templates/stacks/init/). - [Use InfluxDB templates](https://docs.influxdata.com/influxdb/latest/influxdb-templates/use/#apply-templates-to-an-influxdb-instance). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.create_stack_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param PostStackRequest post_stack_request: + :return: Stack + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._create_stack_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/stacks', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Stack', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def create_stack_async(self, **kwargs): # noqa: E501,D401,D403 + """Create a stack. + + Creates or initializes a stack. Use this endpoint to _manually_ initialize a new stack with the following optional information: - Stack name - Stack description - URLs for template manifest files To automatically create a stack when applying templates, use the [/api/v2/templates/apply endpoint](#operation/ApplyTemplate). #### Required permissions - `write` permission for the organization #### Related guides - [Initialize an InfluxDB stack](https://docs.influxdata.com/influxdb/latest/influxdb-templates/stacks/init/). - [Use InfluxDB templates](https://docs.influxdata.com/influxdb/latest/influxdb-templates/use/#apply-templates-to-an-influxdb-instance). + This method makes an asynchronous HTTP request. + + :param async_req bool + :param PostStackRequest post_stack_request: + :return: Stack + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._create_stack_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/stacks', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Stack', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _create_stack_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['post_stack_request'] # noqa: E501 + self._check_operation_params('create_stack', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + + body_params = None + if 'post_stack_request' in local_var_params: + body_params = local_var_params['post_stack_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_stack(self, stack_id, org_id, **kwargs): # noqa: E501,D401,D403 + """Delete a stack and associated resources. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_stack(stack_id, org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str stack_id: The identifier of the stack. (required) + :param str org_id: The identifier of the organization. (required) + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_stack_with_http_info(stack_id, org_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_stack_with_http_info(stack_id, org_id, **kwargs) # noqa: E501 + return data + + def delete_stack_with_http_info(self, stack_id, org_id, **kwargs): # noqa: E501,D401,D403 + """Delete a stack and associated resources. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_stack_with_http_info(stack_id, org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str stack_id: The identifier of the stack. (required) + :param str org_id: The identifier of the organization. (required) + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_stack_prepare(stack_id, org_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/stacks/{stack_id}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_stack_async(self, stack_id, org_id, **kwargs): # noqa: E501,D401,D403 + """Delete a stack and associated resources. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str stack_id: The identifier of the stack. (required) + :param str org_id: The identifier of the organization. (required) + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_stack_prepare(stack_id, org_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/stacks/{stack_id}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_stack_prepare(self, stack_id, org_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['stack_id', 'org_id'] # noqa: E501 + self._check_operation_params('delete_stack', all_params, local_var_params) + # verify the required parameter 'stack_id' is set + if ('stack_id' not in local_var_params or + local_var_params['stack_id'] is None): + raise ValueError("Missing the required parameter `stack_id` when calling `delete_stack`") # noqa: E501 + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `delete_stack`") # noqa: E501 + + path_params = {} + if 'stack_id' in local_var_params: + path_params['stack_id'] = local_var_params['stack_id'] # noqa: E501 + + query_params = [] + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + + header_params = {} + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def export_template(self, **kwargs): # noqa: E501,D401,D403 + """Export a new template. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.export_template(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param TemplateExportByID template_export_by_id: Export resources as an InfluxDB template. + :return: list[object] + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.export_template_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.export_template_with_http_info(**kwargs) # noqa: E501 + return data + + def export_template_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """Export a new template. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.export_template_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param TemplateExportByID template_export_by_id: Export resources as an InfluxDB template. + :return: list[object] + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._export_template_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/templates/export', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='list[object]', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def export_template_async(self, **kwargs): # noqa: E501,D401,D403 + """Export a new template. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param TemplateExportByID template_export_by_id: Export resources as an InfluxDB template. + :return: list[object] + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._export_template_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/templates/export', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='list[object]', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _export_template_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['template_export_by_id'] # noqa: E501 + self._check_operation_params('export_template', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + + body_params = None + if 'template_export_by_id' in local_var_params: + body_params = local_var_params['template_export_by_id'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json', 'application/x-yaml']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def list_stacks(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List installed stacks. + + Lists installed InfluxDB stacks. To limit stacks in the response, pass query parameters in your request. If no query parameters are passed, InfluxDB returns all installed stacks for the organization. #### Related guides - [View InfluxDB stacks](https://docs.influxdata.com/influxdb/latest/influxdb-templates/stacks/). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.list_stacks(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: An organization ID. Only returns stacks owned by the specified [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization). #### InfluxDB Cloud - Doesn't require this parameter; InfluxDB only returns resources allowed by the API token. (required) + :param str name: A stack name. Finds stack `events` with this name and returns the stacks. Repeatable. To filter for more than one stack name, repeat this parameter with each name--for example: - `INFLUX_URL/api/v2/stacks?&orgID=INFLUX_ORG_ID&name=project-stack-0&name=project-stack-1` + :param str stack_id: A stack ID. Only returns the specified stack. Repeatable. To filter for more than one stack ID, repeat this parameter with each ID--for example: - `INFLUX_URL/api/v2/stacks?&orgID=INFLUX_ORG_ID&stackID=09bd87cd33be3000&stackID=09bef35081fe3000` + :return: ListStacksResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.list_stacks_with_http_info(org_id, **kwargs) # noqa: E501 + else: + (data) = self.list_stacks_with_http_info(org_id, **kwargs) # noqa: E501 + return data + + def list_stacks_with_http_info(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List installed stacks. + + Lists installed InfluxDB stacks. To limit stacks in the response, pass query parameters in your request. If no query parameters are passed, InfluxDB returns all installed stacks for the organization. #### Related guides - [View InfluxDB stacks](https://docs.influxdata.com/influxdb/latest/influxdb-templates/stacks/). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.list_stacks_with_http_info(org_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org_id: An organization ID. Only returns stacks owned by the specified [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization). #### InfluxDB Cloud - Doesn't require this parameter; InfluxDB only returns resources allowed by the API token. (required) + :param str name: A stack name. Finds stack `events` with this name and returns the stacks. Repeatable. To filter for more than one stack name, repeat this parameter with each name--for example: - `INFLUX_URL/api/v2/stacks?&orgID=INFLUX_ORG_ID&name=project-stack-0&name=project-stack-1` + :param str stack_id: A stack ID. Only returns the specified stack. Repeatable. To filter for more than one stack ID, repeat this parameter with each ID--for example: - `INFLUX_URL/api/v2/stacks?&orgID=INFLUX_ORG_ID&stackID=09bd87cd33be3000&stackID=09bef35081fe3000` + :return: ListStacksResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._list_stacks_prepare(org_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/stacks', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ListStacksResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def list_stacks_async(self, org_id, **kwargs): # noqa: E501,D401,D403 + """List installed stacks. + + Lists installed InfluxDB stacks. To limit stacks in the response, pass query parameters in your request. If no query parameters are passed, InfluxDB returns all installed stacks for the organization. #### Related guides - [View InfluxDB stacks](https://docs.influxdata.com/influxdb/latest/influxdb-templates/stacks/). + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str org_id: An organization ID. Only returns stacks owned by the specified [organization](https://docs.influxdata.com/influxdb/latest/reference/glossary/#organization). #### InfluxDB Cloud - Doesn't require this parameter; InfluxDB only returns resources allowed by the API token. (required) + :param str name: A stack name. Finds stack `events` with this name and returns the stacks. Repeatable. To filter for more than one stack name, repeat this parameter with each name--for example: - `INFLUX_URL/api/v2/stacks?&orgID=INFLUX_ORG_ID&name=project-stack-0&name=project-stack-1` + :param str stack_id: A stack ID. Only returns the specified stack. Repeatable. To filter for more than one stack ID, repeat this parameter with each ID--for example: - `INFLUX_URL/api/v2/stacks?&orgID=INFLUX_ORG_ID&stackID=09bd87cd33be3000&stackID=09bef35081fe3000` + :return: ListStacksResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._list_stacks_prepare(org_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/stacks', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='ListStacksResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _list_stacks_prepare(self, org_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['org_id', 'name', 'stack_id'] # noqa: E501 + self._check_operation_params('list_stacks', all_params, local_var_params) + # verify the required parameter 'org_id' is set + if ('org_id' not in local_var_params or + local_var_params['org_id'] is None): + raise ValueError("Missing the required parameter `org_id` when calling `list_stacks`") # noqa: E501 + + path_params = {} + + query_params = [] + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + if 'name' in local_var_params: + query_params.append(('name', local_var_params['name'])) # noqa: E501 + if 'stack_id' in local_var_params: + query_params.append(('stackID', local_var_params['stack_id'])) # noqa: E501 + + header_params = {} + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def read_stack(self, stack_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a stack. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.read_stack(stack_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str stack_id: The identifier of the stack. (required) + :return: Stack + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.read_stack_with_http_info(stack_id, **kwargs) # noqa: E501 + else: + (data) = self.read_stack_with_http_info(stack_id, **kwargs) # noqa: E501 + return data + + def read_stack_with_http_info(self, stack_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a stack. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.read_stack_with_http_info(stack_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str stack_id: The identifier of the stack. (required) + :return: Stack + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._read_stack_prepare(stack_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/stacks/{stack_id}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Stack', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def read_stack_async(self, stack_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a stack. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str stack_id: The identifier of the stack. (required) + :return: Stack + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._read_stack_prepare(stack_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/stacks/{stack_id}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Stack', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _read_stack_prepare(self, stack_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['stack_id'] # noqa: E501 + self._check_operation_params('read_stack', all_params, local_var_params) + # verify the required parameter 'stack_id' is set + if ('stack_id' not in local_var_params or + local_var_params['stack_id'] is None): + raise ValueError("Missing the required parameter `stack_id` when calling `read_stack`") # noqa: E501 + + path_params = {} + if 'stack_id' in local_var_params: + path_params['stack_id'] = local_var_params['stack_id'] # noqa: E501 + + query_params = [] + + header_params = {} + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def uninstall_stack(self, stack_id, **kwargs): # noqa: E501,D401,D403 + """Uninstall a stack. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.uninstall_stack(stack_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str stack_id: The identifier of the stack. (required) + :return: Stack + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.uninstall_stack_with_http_info(stack_id, **kwargs) # noqa: E501 + else: + (data) = self.uninstall_stack_with_http_info(stack_id, **kwargs) # noqa: E501 + return data + + def uninstall_stack_with_http_info(self, stack_id, **kwargs): # noqa: E501,D401,D403 + """Uninstall a stack. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.uninstall_stack_with_http_info(stack_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str stack_id: The identifier of the stack. (required) + :return: Stack + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._uninstall_stack_prepare(stack_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/stacks/{stack_id}/uninstall', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Stack', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def uninstall_stack_async(self, stack_id, **kwargs): # noqa: E501,D401,D403 + """Uninstall a stack. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str stack_id: The identifier of the stack. (required) + :return: Stack + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._uninstall_stack_prepare(stack_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/stacks/{stack_id}/uninstall', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Stack', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _uninstall_stack_prepare(self, stack_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['stack_id'] # noqa: E501 + self._check_operation_params('uninstall_stack', all_params, local_var_params) + # verify the required parameter 'stack_id' is set + if ('stack_id' not in local_var_params or + local_var_params['stack_id'] is None): + raise ValueError("Missing the required parameter `stack_id` when calling `uninstall_stack`") # noqa: E501 + + path_params = {} + if 'stack_id' in local_var_params: + path_params['stack_id'] = local_var_params['stack_id'] # noqa: E501 + + query_params = [] + + header_params = {} + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def update_stack(self, stack_id, **kwargs): # noqa: E501,D401,D403 + """Update a stack. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.update_stack(stack_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str stack_id: The identifier of the stack. (required) + :param PatchStackRequest patch_stack_request: + :return: Stack + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.update_stack_with_http_info(stack_id, **kwargs) # noqa: E501 + else: + (data) = self.update_stack_with_http_info(stack_id, **kwargs) # noqa: E501 + return data + + def update_stack_with_http_info(self, stack_id, **kwargs): # noqa: E501,D401,D403 + """Update a stack. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.update_stack_with_http_info(stack_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str stack_id: The identifier of the stack. (required) + :param PatchStackRequest patch_stack_request: + :return: Stack + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._update_stack_prepare(stack_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/stacks/{stack_id}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Stack', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def update_stack_async(self, stack_id, **kwargs): # noqa: E501,D401,D403 + """Update a stack. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str stack_id: The identifier of the stack. (required) + :param PatchStackRequest patch_stack_request: + :return: Stack + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._update_stack_prepare(stack_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/stacks/{stack_id}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Stack', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _update_stack_prepare(self, stack_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['stack_id', 'patch_stack_request'] # noqa: E501 + self._check_operation_params('update_stack', all_params, local_var_params) + # verify the required parameter 'stack_id' is set + if ('stack_id' not in local_var_params or + local_var_params['stack_id'] is None): + raise ValueError("Missing the required parameter `stack_id` when calling `update_stack`") # noqa: E501 + + path_params = {} + if 'stack_id' in local_var_params: + path_params['stack_id'] = local_var_params['stack_id'] # noqa: E501 + + query_params = [] + + header_params = {} + + body_params = None + if 'patch_stack_request' in local_var_params: + body_params = local_var_params['patch_stack_request'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/users_service.py b/frogpilot/third_party/influxdb_client/service/users_service.py new file mode 100644 index 000000000..b53232446 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/users_service.py @@ -0,0 +1,1168 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class UsersService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """UsersService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def delete_users_id(self, user_id, **kwargs): # noqa: E501,D401,D403 + """Delete a user. + + Deletes a [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). #### Required permissions | Action | Permission required | |:------------|:-----------------------------------------------| | Delete a user | `write-users` or `write-user USER_ID` | *`USER_ID`* is the ID of the user that you want to delete. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/organizations/users/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_users_id(user_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: A user ID. Specifies the [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_users_id_with_http_info(user_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_users_id_with_http_info(user_id, **kwargs) # noqa: E501 + return data + + def delete_users_id_with_http_info(self, user_id, **kwargs): # noqa: E501,D401,D403 + """Delete a user. + + Deletes a [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). #### Required permissions | Action | Permission required | |:------------|:-----------------------------------------------| | Delete a user | `write-users` or `write-user USER_ID` | *`USER_ID`* is the ID of the user that you want to delete. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/organizations/users/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_users_id_with_http_info(user_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: A user ID. Specifies the [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_users_id_prepare(user_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/users/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_users_id_async(self, user_id, **kwargs): # noqa: E501,D401,D403 + """Delete a user. + + Deletes a [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). #### Required permissions | Action | Permission required | |:------------|:-----------------------------------------------| | Delete a user | `write-users` or `write-user USER_ID` | *`USER_ID`* is the ID of the user that you want to delete. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/organizations/users/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str user_id: A user ID. Specifies the [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_users_id_prepare(user_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/users/{userID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_users_id_prepare(self, user_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['user_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_users_id', all_params, local_var_params) + # verify the required parameter 'user_id' is set + if ('user_id' not in local_var_params or + local_var_params['user_id'] is None): + raise ValueError("Missing the required parameter `user_id` when calling `delete_users_id`") # noqa: E501 + + path_params = {} + if 'user_id' in local_var_params: + path_params['userID'] = local_var_params['user_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_me(self, **kwargs): # noqa: E501,D401,D403 + """Retrieve the currently authenticated user. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_me(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: UserResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_me_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_me_with_http_info(**kwargs) # noqa: E501 + return data + + def get_me_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """Retrieve the currently authenticated user. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_me_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: UserResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_me_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/me', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='UserResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_me_async(self, **kwargs): # noqa: E501,D401,D403 + """Retrieve the currently authenticated user. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :return: UserResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_me_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/me', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='UserResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_me_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span'] # noqa: E501 + self._check_operation_params('get_me', all_params, local_var_params) + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_users(self, **kwargs): # noqa: E501,D401,D403 + """List users. + + Lists [users](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). Default limit is `20`. To limit which users are returned, pass query parameters in your request. #### Required permissions for InfluxDB OSS | Action | Permission required | Restriction | |:-------|:--------------------|:------------| | List all users | _[Operator token](https://docs.influxdata.com/influxdb/latest/security/tokens/#operator-token)_ | | | List a specific user | `read-users` or `read-user USER_ID` | | *`USER_ID`* is the ID of the user that you want to retrieve. #### Related guides - [View users](https://docs.influxdata.com/influxdb/latest/users/view-users/). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_users(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :param str after: A resource ID to seek from. Returns records created after the specified record; results don't include the specified record. Use `after` instead of the `offset` parameter. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param str name: A user name. Only lists the specified [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). + :param str id: A user ID. Only lists the specified [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). + :return: Users + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_users_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_users_with_http_info(**kwargs) # noqa: E501 + return data + + def get_users_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """List users. + + Lists [users](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). Default limit is `20`. To limit which users are returned, pass query parameters in your request. #### Required permissions for InfluxDB OSS | Action | Permission required | Restriction | |:-------|:--------------------|:------------| | List all users | _[Operator token](https://docs.influxdata.com/influxdb/latest/security/tokens/#operator-token)_ | | | List a specific user | `read-users` or `read-user USER_ID` | | *`USER_ID`* is the ID of the user that you want to retrieve. #### Related guides - [View users](https://docs.influxdata.com/influxdb/latest/users/view-users/). + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_users_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :param str after: A resource ID to seek from. Returns records created after the specified record; results don't include the specified record. Use `after` instead of the `offset` parameter. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param str name: A user name. Only lists the specified [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). + :param str id: A user ID. Only lists the specified [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). + :return: Users + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_users_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/users', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Users', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_users_async(self, **kwargs): # noqa: E501,D401,D403 + """List users. + + Lists [users](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). Default limit is `20`. To limit which users are returned, pass query parameters in your request. #### Required permissions for InfluxDB OSS | Action | Permission required | Restriction | |:-------|:--------------------|:------------| | List all users | _[Operator token](https://docs.influxdata.com/influxdb/latest/security/tokens/#operator-token)_ | | | List a specific user | `read-users` or `read-user USER_ID` | | *`USER_ID`* is the ID of the user that you want to retrieve. #### Related guides - [View users](https://docs.influxdata.com/influxdb/latest/users/view-users/). + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param int limit: Limits the number of records returned. Default is `20`. + :param str after: A resource ID to seek from. Returns records created after the specified record; results don't include the specified record. Use `after` instead of the `offset` parameter. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). + :param str name: A user name. Only lists the specified [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). + :param str id: A user ID. Only lists the specified [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). + :return: Users + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_users_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/users', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Users', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_users_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span', 'offset', 'limit', 'after', 'name', 'id'] # noqa: E501 + self._check_operation_params('get_users', all_params, local_var_params) + + if 'offset' in local_var_params and local_var_params['offset'] < 0: # noqa: E501 + raise ValueError("Invalid value for parameter `offset` when calling `get_users`, must be a value greater than or equal to `0`") # noqa: E501 + if 'limit' in local_var_params and local_var_params['limit'] > 100: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_users`, must be a value less than or equal to `100`") # noqa: E501 + if 'limit' in local_var_params and local_var_params['limit'] < 1: # noqa: E501 + raise ValueError("Invalid value for parameter `limit` when calling `get_users`, must be a value greater than or equal to `1`") # noqa: E501 + path_params = {} + + query_params = [] + if 'offset' in local_var_params: + query_params.append(('offset', local_var_params['offset'])) # noqa: E501 + if 'limit' in local_var_params: + query_params.append(('limit', local_var_params['limit'])) # noqa: E501 + if 'after' in local_var_params: + query_params.append(('after', local_var_params['after'])) # noqa: E501 + if 'name' in local_var_params: + query_params.append(('name', local_var_params['name'])) # noqa: E501 + if 'id' in local_var_params: + query_params.append(('id', local_var_params['id'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_users_id(self, user_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a user. + + Retrieves a [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/organizations/users/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_users_id(user_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: A user ID. Retrieves the specified [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). (required) + :param str zap_trace_span: OpenTracing span context + :return: UserResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_users_id_with_http_info(user_id, **kwargs) # noqa: E501 + else: + (data) = self.get_users_id_with_http_info(user_id, **kwargs) # noqa: E501 + return data + + def get_users_id_with_http_info(self, user_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a user. + + Retrieves a [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/organizations/users/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_users_id_with_http_info(user_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: A user ID. Retrieves the specified [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). (required) + :param str zap_trace_span: OpenTracing span context + :return: UserResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_users_id_prepare(user_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/users/{userID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='UserResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_users_id_async(self, user_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a user. + + Retrieves a [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/organizations/users/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str user_id: A user ID. Retrieves the specified [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). (required) + :param str zap_trace_span: OpenTracing span context + :return: UserResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_users_id_prepare(user_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/users/{userID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='UserResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_users_id_prepare(self, user_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['user_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_users_id', all_params, local_var_params) + # verify the required parameter 'user_id' is set + if ('user_id' not in local_var_params or + local_var_params['user_id'] is None): + raise ValueError("Missing the required parameter `user_id` when calling `get_users_id`") # noqa: E501 + + path_params = {} + if 'user_id' in local_var_params: + path_params['userID'] = local_var_params['user_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_users_id(self, user_id, user, **kwargs): # noqa: E501,D401,D403 + """Update a user. + + Updates a [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) and returns the user. #### Required permissions | Action | Permission required | |:------------|:-----------------------------------------------| | Update a user | `write-users` or `write-user USER_ID` | *`USER_ID`* is the ID of the user that you want to update. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/organizations/users/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_users_id(user_id, user, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: A user ID. Specifies the [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) to update. (required) + :param User user: In the request body, provide the user properties to update. (required) + :param str zap_trace_span: OpenTracing span context + :return: UserResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_users_id_with_http_info(user_id, user, **kwargs) # noqa: E501 + else: + (data) = self.patch_users_id_with_http_info(user_id, user, **kwargs) # noqa: E501 + return data + + def patch_users_id_with_http_info(self, user_id, user, **kwargs): # noqa: E501,D401,D403 + """Update a user. + + Updates a [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) and returns the user. #### Required permissions | Action | Permission required | |:------------|:-----------------------------------------------| | Update a user | `write-users` or `write-user USER_ID` | *`USER_ID`* is the ID of the user that you want to update. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/organizations/users/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_users_id_with_http_info(user_id, user, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: A user ID. Specifies the [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) to update. (required) + :param User user: In the request body, provide the user properties to update. (required) + :param str zap_trace_span: OpenTracing span context + :return: UserResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_users_id_prepare(user_id, user, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/users/{userID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='UserResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_users_id_async(self, user_id, user, **kwargs): # noqa: E501,D401,D403 + """Update a user. + + Updates a [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) and returns the user. #### Required permissions | Action | Permission required | |:------------|:-----------------------------------------------| | Update a user | `write-users` or `write-user USER_ID` | *`USER_ID`* is the ID of the user that you want to update. #### Related guides - [Manage users](https://docs.influxdata.com/influxdb/latest/organizations/users/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str user_id: A user ID. Specifies the [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) to update. (required) + :param User user: In the request body, provide the user properties to update. (required) + :param str zap_trace_span: OpenTracing span context + :return: UserResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_users_id_prepare(user_id, user, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/users/{userID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='UserResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_users_id_prepare(self, user_id, user, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['user_id', 'user', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_users_id', all_params, local_var_params) + # verify the required parameter 'user_id' is set + if ('user_id' not in local_var_params or + local_var_params['user_id'] is None): + raise ValueError("Missing the required parameter `user_id` when calling `patch_users_id`") # noqa: E501 + # verify the required parameter 'user' is set + if ('user' not in local_var_params or + local_var_params['user'] is None): + raise ValueError("Missing the required parameter `user` when calling `patch_users_id`") # noqa: E501 + + path_params = {} + if 'user_id' in local_var_params: + path_params['userID'] = local_var_params['user_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'user' in local_var_params: + body_params = local_var_params['user'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_users(self, user, **kwargs): # noqa: E501,D401,D403 + """Create a user. + + Creates a [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) that can access InfluxDB. Returns the user. Use this endpoint to create a user that can sign in to start a user session through one of the following interfaces: - InfluxDB UI - `/api/v2/signin` InfluxDB API endpoint - InfluxDB CLI This endpoint represents the first two steps in a four-step process to allow a user to authenticate with a username and password, and then access data in an organization: 1. Create a user: send a `POST` request to `POST /api/v2/users`. The `name` property is required. 2. Extract the user ID (`id` property) value from the API response for _step 1_. 3. Create an authorization (and API token) for the user: send a `POST` request to [`POST /api/v2/authorizations`](#operation/PostAuthorizations), passing the user ID (`id`) from _step 2_. 4. Create a password for the user: send a `POST` request to [`POST /api/v2/users/USER_ID/password`](#operation/PostUsersIDPassword), passing the user ID from _step 2_. #### Required permissions | Action | Permission required | Restriction | |:-------|:--------------------|:------------| | Create a user | _[Operator token](https://docs.influxdata.com/influxdb/latest/security/tokens/#operator-token)_ | | #### Related guides - [Create a user](https://docs.influxdata.com/influxdb/latest/users/create-user/) - [Create an API token scoped to a user](https://docs.influxdata.com/influxdb/latest/security/tokens/create-token/#create-a-token-scoped-to-a-user) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_users(user, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param User user: The user to create. (required) + :param str zap_trace_span: OpenTracing span context + :return: UserResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_users_with_http_info(user, **kwargs) # noqa: E501 + else: + (data) = self.post_users_with_http_info(user, **kwargs) # noqa: E501 + return data + + def post_users_with_http_info(self, user, **kwargs): # noqa: E501,D401,D403 + """Create a user. + + Creates a [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) that can access InfluxDB. Returns the user. Use this endpoint to create a user that can sign in to start a user session through one of the following interfaces: - InfluxDB UI - `/api/v2/signin` InfluxDB API endpoint - InfluxDB CLI This endpoint represents the first two steps in a four-step process to allow a user to authenticate with a username and password, and then access data in an organization: 1. Create a user: send a `POST` request to `POST /api/v2/users`. The `name` property is required. 2. Extract the user ID (`id` property) value from the API response for _step 1_. 3. Create an authorization (and API token) for the user: send a `POST` request to [`POST /api/v2/authorizations`](#operation/PostAuthorizations), passing the user ID (`id`) from _step 2_. 4. Create a password for the user: send a `POST` request to [`POST /api/v2/users/USER_ID/password`](#operation/PostUsersIDPassword), passing the user ID from _step 2_. #### Required permissions | Action | Permission required | Restriction | |:-------|:--------------------|:------------| | Create a user | _[Operator token](https://docs.influxdata.com/influxdb/latest/security/tokens/#operator-token)_ | | #### Related guides - [Create a user](https://docs.influxdata.com/influxdb/latest/users/create-user/) - [Create an API token scoped to a user](https://docs.influxdata.com/influxdb/latest/security/tokens/create-token/#create-a-token-scoped-to-a-user) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_users_with_http_info(user, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param User user: The user to create. (required) + :param str zap_trace_span: OpenTracing span context + :return: UserResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_users_prepare(user, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/users', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='UserResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_users_async(self, user, **kwargs): # noqa: E501,D401,D403 + """Create a user. + + Creates a [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user) that can access InfluxDB. Returns the user. Use this endpoint to create a user that can sign in to start a user session through one of the following interfaces: - InfluxDB UI - `/api/v2/signin` InfluxDB API endpoint - InfluxDB CLI This endpoint represents the first two steps in a four-step process to allow a user to authenticate with a username and password, and then access data in an organization: 1. Create a user: send a `POST` request to `POST /api/v2/users`. The `name` property is required. 2. Extract the user ID (`id` property) value from the API response for _step 1_. 3. Create an authorization (and API token) for the user: send a `POST` request to [`POST /api/v2/authorizations`](#operation/PostAuthorizations), passing the user ID (`id`) from _step 2_. 4. Create a password for the user: send a `POST` request to [`POST /api/v2/users/USER_ID/password`](#operation/PostUsersIDPassword), passing the user ID from _step 2_. #### Required permissions | Action | Permission required | Restriction | |:-------|:--------------------|:------------| | Create a user | _[Operator token](https://docs.influxdata.com/influxdb/latest/security/tokens/#operator-token)_ | | #### Related guides - [Create a user](https://docs.influxdata.com/influxdb/latest/users/create-user/) - [Create an API token scoped to a user](https://docs.influxdata.com/influxdb/latest/security/tokens/create-token/#create-a-token-scoped-to-a-user) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param User user: The user to create. (required) + :param str zap_trace_span: OpenTracing span context + :return: UserResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_users_prepare(user, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/users', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='UserResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_users_prepare(self, user, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['user', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_users', all_params, local_var_params) + # verify the required parameter 'user' is set + if ('user' not in local_var_params or + local_var_params['user'] is None): + raise ValueError("Missing the required parameter `user` when calling `post_users`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'user' in local_var_params: + body_params = local_var_params['user'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_users_id_password(self, user_id, password_reset_body, **kwargs): # noqa: E501,D401,D403 + """Update a password. + + Updates a user password. #### InfluxDB Cloud - Doesn't allow you to manage user passwords through the API. Use the InfluxDB Cloud user interface (UI) to update a password. #### Related guides - [InfluxDB Cloud - Change your password](https://docs.influxdata.com/influxdb/cloud/account-management/change-password/) - [InfluxDB OSS - Change your password](https://docs.influxdata.com/influxdb/latest/users/change-password/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_users_id_password(user_id, password_reset_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the user to set the password for. (required) + :param PasswordResetBody password_reset_body: The new password to set for the user. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_users_id_password_with_http_info(user_id, password_reset_body, **kwargs) # noqa: E501 + else: + (data) = self.post_users_id_password_with_http_info(user_id, password_reset_body, **kwargs) # noqa: E501 + return data + + def post_users_id_password_with_http_info(self, user_id, password_reset_body, **kwargs): # noqa: E501,D401,D403 + """Update a password. + + Updates a user password. #### InfluxDB Cloud - Doesn't allow you to manage user passwords through the API. Use the InfluxDB Cloud user interface (UI) to update a password. #### Related guides - [InfluxDB Cloud - Change your password](https://docs.influxdata.com/influxdb/cloud/account-management/change-password/) - [InfluxDB OSS - Change your password](https://docs.influxdata.com/influxdb/latest/users/change-password/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_users_id_password_with_http_info(user_id, password_reset_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the user to set the password for. (required) + :param PasswordResetBody password_reset_body: The new password to set for the user. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_users_id_password_prepare(user_id, password_reset_body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/users/{userID}/password', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_users_id_password_async(self, user_id, password_reset_body, **kwargs): # noqa: E501,D401,D403 + """Update a password. + + Updates a user password. #### InfluxDB Cloud - Doesn't allow you to manage user passwords through the API. Use the InfluxDB Cloud user interface (UI) to update a password. #### Related guides - [InfluxDB Cloud - Change your password](https://docs.influxdata.com/influxdb/cloud/account-management/change-password/) - [InfluxDB OSS - Change your password](https://docs.influxdata.com/influxdb/latest/users/change-password/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str user_id: The ID of the user to set the password for. (required) + :param PasswordResetBody password_reset_body: The new password to set for the user. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_users_id_password_prepare(user_id, password_reset_body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/users/{userID}/password', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_users_id_password_prepare(self, user_id, password_reset_body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['user_id', 'password_reset_body', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_users_id_password', all_params, local_var_params) + # verify the required parameter 'user_id' is set + if ('user_id' not in local_var_params or + local_var_params['user_id'] is None): + raise ValueError("Missing the required parameter `user_id` when calling `post_users_id_password`") # noqa: E501 + # verify the required parameter 'password_reset_body' is set + if ('password_reset_body' not in local_var_params or + local_var_params['password_reset_body'] is None): + raise ValueError("Missing the required parameter `password_reset_body` when calling `post_users_id_password`") # noqa: E501 + + path_params = {} + if 'user_id' in local_var_params: + path_params['userID'] = local_var_params['user_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'password_reset_body' in local_var_params: + body_params = local_var_params['password_reset_body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def put_me_password(self, password_reset_body, **kwargs): # noqa: E501,D401,D403 + """Update a password. + + Updates the password for the signed-in [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). This endpoint represents the third step in the following three-step process to let a user with a user session update their password: 1. Pass the user's [Basic authentication credentials](#section/Authentication/BasicAuthentication) to the `POST /api/v2/signin` endpoint to create a user session and generate a session cookie. 2. From the response in the first step, extract the session cookie (`Set-Cookie`) header. 3. Pass the following in a request to the `PUT /api/v2/me/password` endpoint: - The `Set-Cookie` header from the second step - The `Authorization Basic` header with the user's _Basic authentication_ credentials - `{"password": "NEW_PASSWORD"}` in the request body #### InfluxDB Cloud - Doesn't let you manage user passwords through the API. Use the InfluxDB Cloud user interface (UI) to update your password. #### Related endpoints - [Signin](#tag/Signin) - [Signout](#tag/Signout) - [Users](#tag/Users) #### Related guides - [InfluxDB Cloud - Change your password](https://docs.influxdata.com/influxdb/cloud/account-management/change-password/) - [InfluxDB OSS - Change your password](https://docs.influxdata.com/influxdb/latest/users/change-password/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.put_me_password(password_reset_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param PasswordResetBody password_reset_body: The new password. (required) + :param str zap_trace_span: OpenTracing span context + :param str authorization: An auth credential for the Basic scheme + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.put_me_password_with_http_info(password_reset_body, **kwargs) # noqa: E501 + else: + (data) = self.put_me_password_with_http_info(password_reset_body, **kwargs) # noqa: E501 + return data + + def put_me_password_with_http_info(self, password_reset_body, **kwargs): # noqa: E501,D401,D403 + """Update a password. + + Updates the password for the signed-in [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). This endpoint represents the third step in the following three-step process to let a user with a user session update their password: 1. Pass the user's [Basic authentication credentials](#section/Authentication/BasicAuthentication) to the `POST /api/v2/signin` endpoint to create a user session and generate a session cookie. 2. From the response in the first step, extract the session cookie (`Set-Cookie`) header. 3. Pass the following in a request to the `PUT /api/v2/me/password` endpoint: - The `Set-Cookie` header from the second step - The `Authorization Basic` header with the user's _Basic authentication_ credentials - `{"password": "NEW_PASSWORD"}` in the request body #### InfluxDB Cloud - Doesn't let you manage user passwords through the API. Use the InfluxDB Cloud user interface (UI) to update your password. #### Related endpoints - [Signin](#tag/Signin) - [Signout](#tag/Signout) - [Users](#tag/Users) #### Related guides - [InfluxDB Cloud - Change your password](https://docs.influxdata.com/influxdb/cloud/account-management/change-password/) - [InfluxDB OSS - Change your password](https://docs.influxdata.com/influxdb/latest/users/change-password/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.put_me_password_with_http_info(password_reset_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param PasswordResetBody password_reset_body: The new password. (required) + :param str zap_trace_span: OpenTracing span context + :param str authorization: An auth credential for the Basic scheme + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._put_me_password_prepare(password_reset_body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/me/password', 'PUT', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=['BasicAuthentication'], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def put_me_password_async(self, password_reset_body, **kwargs): # noqa: E501,D401,D403 + """Update a password. + + Updates the password for the signed-in [user](https://docs.influxdata.com/influxdb/latest/reference/glossary/#user). This endpoint represents the third step in the following three-step process to let a user with a user session update their password: 1. Pass the user's [Basic authentication credentials](#section/Authentication/BasicAuthentication) to the `POST /api/v2/signin` endpoint to create a user session and generate a session cookie. 2. From the response in the first step, extract the session cookie (`Set-Cookie`) header. 3. Pass the following in a request to the `PUT /api/v2/me/password` endpoint: - The `Set-Cookie` header from the second step - The `Authorization Basic` header with the user's _Basic authentication_ credentials - `{"password": "NEW_PASSWORD"}` in the request body #### InfluxDB Cloud - Doesn't let you manage user passwords through the API. Use the InfluxDB Cloud user interface (UI) to update your password. #### Related endpoints - [Signin](#tag/Signin) - [Signout](#tag/Signout) - [Users](#tag/Users) #### Related guides - [InfluxDB Cloud - Change your password](https://docs.influxdata.com/influxdb/cloud/account-management/change-password/) - [InfluxDB OSS - Change your password](https://docs.influxdata.com/influxdb/latest/users/change-password/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param PasswordResetBody password_reset_body: The new password. (required) + :param str zap_trace_span: OpenTracing span context + :param str authorization: An auth credential for the Basic scheme + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._put_me_password_prepare(password_reset_body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/me/password', 'PUT', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=['BasicAuthentication'], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _put_me_password_prepare(self, password_reset_body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['password_reset_body', 'zap_trace_span', 'authorization'] # noqa: E501 + self._check_operation_params('put_me_password', all_params, local_var_params) + # verify the required parameter 'password_reset_body' is set + if ('password_reset_body' not in local_var_params or + local_var_params['password_reset_body'] is None): + raise ValueError("Missing the required parameter `password_reset_body` when calling `put_me_password`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + if 'authorization' in local_var_params: + header_params['Authorization'] = local_var_params['authorization'] # noqa: E501 + + body_params = None + if 'password_reset_body' in local_var_params: + body_params = local_var_params['password_reset_body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def put_users_id_password(self, user_id, password_reset_body, **kwargs): # noqa: E501,D401,D403 + """Update a password. + + Updates a user password. Use this endpoint to let a user authenticate with [Basic authentication credentials](#section/Authentication/BasicAuthentication) and set a new password. #### InfluxDB Cloud - Doesn't allow you to manage user passwords through the API. Use the InfluxDB Cloud user interface (UI) to update a password. #### Related guides - [InfluxDB Cloud - Change your password](https://docs.influxdata.com/influxdb/cloud/account-management/change-password/) - [InfluxDB OSS - Change your password](https://docs.influxdata.com/influxdb/latest/users/change-password/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.put_users_id_password(user_id, password_reset_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the user to set the password for. (required) + :param PasswordResetBody password_reset_body: The new password to set for the user. (required) + :param str zap_trace_span: OpenTracing span context + :param str authorization: An auth credential for the Basic scheme + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.put_users_id_password_with_http_info(user_id, password_reset_body, **kwargs) # noqa: E501 + else: + (data) = self.put_users_id_password_with_http_info(user_id, password_reset_body, **kwargs) # noqa: E501 + return data + + def put_users_id_password_with_http_info(self, user_id, password_reset_body, **kwargs): # noqa: E501,D401,D403 + """Update a password. + + Updates a user password. Use this endpoint to let a user authenticate with [Basic authentication credentials](#section/Authentication/BasicAuthentication) and set a new password. #### InfluxDB Cloud - Doesn't allow you to manage user passwords through the API. Use the InfluxDB Cloud user interface (UI) to update a password. #### Related guides - [InfluxDB Cloud - Change your password](https://docs.influxdata.com/influxdb/cloud/account-management/change-password/) - [InfluxDB OSS - Change your password](https://docs.influxdata.com/influxdb/latest/users/change-password/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.put_users_id_password_with_http_info(user_id, password_reset_body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str user_id: The ID of the user to set the password for. (required) + :param PasswordResetBody password_reset_body: The new password to set for the user. (required) + :param str zap_trace_span: OpenTracing span context + :param str authorization: An auth credential for the Basic scheme + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._put_users_id_password_prepare(user_id, password_reset_body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/users/{userID}/password', 'PUT', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=['BasicAuthentication'], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def put_users_id_password_async(self, user_id, password_reset_body, **kwargs): # noqa: E501,D401,D403 + """Update a password. + + Updates a user password. Use this endpoint to let a user authenticate with [Basic authentication credentials](#section/Authentication/BasicAuthentication) and set a new password. #### InfluxDB Cloud - Doesn't allow you to manage user passwords through the API. Use the InfluxDB Cloud user interface (UI) to update a password. #### Related guides - [InfluxDB Cloud - Change your password](https://docs.influxdata.com/influxdb/cloud/account-management/change-password/) - [InfluxDB OSS - Change your password](https://docs.influxdata.com/influxdb/latest/users/change-password/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str user_id: The ID of the user to set the password for. (required) + :param PasswordResetBody password_reset_body: The new password to set for the user. (required) + :param str zap_trace_span: OpenTracing span context + :param str authorization: An auth credential for the Basic scheme + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._put_users_id_password_prepare(user_id, password_reset_body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/users/{userID}/password', 'PUT', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=['BasicAuthentication'], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _put_users_id_password_prepare(self, user_id, password_reset_body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['user_id', 'password_reset_body', 'zap_trace_span', 'authorization'] # noqa: E501 + self._check_operation_params('put_users_id_password', all_params, local_var_params) + # verify the required parameter 'user_id' is set + if ('user_id' not in local_var_params or + local_var_params['user_id'] is None): + raise ValueError("Missing the required parameter `user_id` when calling `put_users_id_password`") # noqa: E501 + # verify the required parameter 'password_reset_body' is set + if ('password_reset_body' not in local_var_params or + local_var_params['password_reset_body'] is None): + raise ValueError("Missing the required parameter `password_reset_body` when calling `put_users_id_password`") # noqa: E501 + + path_params = {} + if 'user_id' in local_var_params: + path_params['userID'] = local_var_params['user_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + if 'authorization' in local_var_params: + header_params['Authorization'] = local_var_params['authorization'] # noqa: E501 + + body_params = None + if 'password_reset_body' in local_var_params: + body_params = local_var_params['password_reset_body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/variables_service.py b/frogpilot/third_party/influxdb_client/service/variables_service.py new file mode 100644 index 000000000..143bd7cc6 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/variables_service.py @@ -0,0 +1,1127 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class VariablesService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """VariablesService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def delete_variables_id(self, variable_id, **kwargs): # noqa: E501,D401,D403 + """Delete a variable. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_variables_id(variable_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_variables_id_with_http_info(variable_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_variables_id_with_http_info(variable_id, **kwargs) # noqa: E501 + return data + + def delete_variables_id_with_http_info(self, variable_id, **kwargs): # noqa: E501,D401,D403 + """Delete a variable. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_variables_id_with_http_info(variable_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_variables_id_prepare(variable_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/variables/{variableID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_variables_id_async(self, variable_id, **kwargs): # noqa: E501,D401,D403 + """Delete a variable. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_variables_id_prepare(variable_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/variables/{variableID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_variables_id_prepare(self, variable_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['variable_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_variables_id', all_params, local_var_params) + # verify the required parameter 'variable_id' is set + if ('variable_id' not in local_var_params or + local_var_params['variable_id'] is None): + raise ValueError("Missing the required parameter `variable_id` when calling `delete_variables_id`") # noqa: E501 + + path_params = {} + if 'variable_id' in local_var_params: + path_params['variableID'] = local_var_params['variable_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def delete_variables_id_labels_id(self, variable_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a variable. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_variables_id_labels_id(variable_id, label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param str label_id: The label ID to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.delete_variables_id_labels_id_with_http_info(variable_id, label_id, **kwargs) # noqa: E501 + else: + (data) = self.delete_variables_id_labels_id_with_http_info(variable_id, label_id, **kwargs) # noqa: E501 + return data + + def delete_variables_id_labels_id_with_http_info(self, variable_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a variable. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.delete_variables_id_labels_id_with_http_info(variable_id, label_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param str label_id: The label ID to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_variables_id_labels_id_prepare(variable_id, label_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/variables/{variableID}/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def delete_variables_id_labels_id_async(self, variable_id, label_id, **kwargs): # noqa: E501,D401,D403 + """Delete a label from a variable. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param str label_id: The label ID to delete. (required) + :param str zap_trace_span: OpenTracing span context + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._delete_variables_id_labels_id_prepare(variable_id, label_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/variables/{variableID}/labels/{labelID}', 'DELETE', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _delete_variables_id_labels_id_prepare(self, variable_id, label_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['variable_id', 'label_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('delete_variables_id_labels_id', all_params, local_var_params) + # verify the required parameter 'variable_id' is set + if ('variable_id' not in local_var_params or + local_var_params['variable_id'] is None): + raise ValueError("Missing the required parameter `variable_id` when calling `delete_variables_id_labels_id`") # noqa: E501 + # verify the required parameter 'label_id' is set + if ('label_id' not in local_var_params or + local_var_params['label_id'] is None): + raise ValueError("Missing the required parameter `label_id` when calling `delete_variables_id_labels_id`") # noqa: E501 + + path_params = {} + if 'variable_id' in local_var_params: + path_params['variableID'] = local_var_params['variable_id'] # noqa: E501 + if 'label_id' in local_var_params: + path_params['labelID'] = local_var_params['label_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_variables(self, **kwargs): # noqa: E501,D401,D403 + """List all variables. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_variables(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str org: The name of the organization. + :param str org_id: The organization ID. + :return: Variables + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_variables_with_http_info(**kwargs) # noqa: E501 + else: + (data) = self.get_variables_with_http_info(**kwargs) # noqa: E501 + return data + + def get_variables_with_http_info(self, **kwargs): # noqa: E501,D401,D403 + """List all variables. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_variables_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str org: The name of the organization. + :param str org_id: The organization ID. + :return: Variables + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_variables_prepare(**kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/variables', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Variables', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_variables_async(self, **kwargs): # noqa: E501,D401,D403 + """List all variables. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str zap_trace_span: OpenTracing span context + :param str org: The name of the organization. + :param str org_id: The organization ID. + :return: Variables + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_variables_prepare(**kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/variables', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Variables', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_variables_prepare(self, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['zap_trace_span', 'org', 'org_id'] # noqa: E501 + self._check_operation_params('get_variables', all_params, local_var_params) + + path_params = {} + + query_params = [] + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_variables_id(self, variable_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a variable. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_variables_id(variable_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: Variable + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_variables_id_with_http_info(variable_id, **kwargs) # noqa: E501 + else: + (data) = self.get_variables_id_with_http_info(variable_id, **kwargs) # noqa: E501 + return data + + def get_variables_id_with_http_info(self, variable_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a variable. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_variables_id_with_http_info(variable_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: Variable + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_variables_id_prepare(variable_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/variables/{variableID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Variable', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_variables_id_async(self, variable_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve a variable. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: Variable + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_variables_id_prepare(variable_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/variables/{variableID}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Variable', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_variables_id_prepare(self, variable_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['variable_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_variables_id', all_params, local_var_params) + # verify the required parameter 'variable_id' is set + if ('variable_id' not in local_var_params or + local_var_params['variable_id'] is None): + raise ValueError("Missing the required parameter `variable_id` when calling `get_variables_id`") # noqa: E501 + + path_params = {} + if 'variable_id' in local_var_params: + path_params['variableID'] = local_var_params['variable_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def get_variables_id_labels(self, variable_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a variable. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_variables_id_labels(variable_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_variables_id_labels_with_http_info(variable_id, **kwargs) # noqa: E501 + else: + (data) = self.get_variables_id_labels_with_http_info(variable_id, **kwargs) # noqa: E501 + return data + + def get_variables_id_labels_with_http_info(self, variable_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a variable. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_variables_id_labels_with_http_info(variable_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_variables_id_labels_prepare(variable_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/variables/{variableID}/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_variables_id_labels_async(self, variable_id, **kwargs): # noqa: E501,D401,D403 + """List all labels for a variable. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelsResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_variables_id_labels_prepare(variable_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/variables/{variableID}/labels', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelsResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_variables_id_labels_prepare(self, variable_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['variable_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_variables_id_labels', all_params, local_var_params) + # verify the required parameter 'variable_id' is set + if ('variable_id' not in local_var_params or + local_var_params['variable_id'] is None): + raise ValueError("Missing the required parameter `variable_id` when calling `get_variables_id_labels`") # noqa: E501 + + path_params = {} + if 'variable_id' in local_var_params: + path_params['variableID'] = local_var_params['variable_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_variables_id(self, variable_id, variable, **kwargs): # noqa: E501,D401,D403 + """Update a variable. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_variables_id(variable_id, variable, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param Variable variable: Variable update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: Variable + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_variables_id_with_http_info(variable_id, variable, **kwargs) # noqa: E501 + else: + (data) = self.patch_variables_id_with_http_info(variable_id, variable, **kwargs) # noqa: E501 + return data + + def patch_variables_id_with_http_info(self, variable_id, variable, **kwargs): # noqa: E501,D401,D403 + """Update a variable. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_variables_id_with_http_info(variable_id, variable, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param Variable variable: Variable update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: Variable + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_variables_id_prepare(variable_id, variable, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/variables/{variableID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Variable', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_variables_id_async(self, variable_id, variable, **kwargs): # noqa: E501,D401,D403 + """Update a variable. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param Variable variable: Variable update to apply (required) + :param str zap_trace_span: OpenTracing span context + :return: Variable + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_variables_id_prepare(variable_id, variable, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/variables/{variableID}', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Variable', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_variables_id_prepare(self, variable_id, variable, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['variable_id', 'variable', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_variables_id', all_params, local_var_params) + # verify the required parameter 'variable_id' is set + if ('variable_id' not in local_var_params or + local_var_params['variable_id'] is None): + raise ValueError("Missing the required parameter `variable_id` when calling `patch_variables_id`") # noqa: E501 + # verify the required parameter 'variable' is set + if ('variable' not in local_var_params or + local_var_params['variable'] is None): + raise ValueError("Missing the required parameter `variable` when calling `patch_variables_id`") # noqa: E501 + + path_params = {} + if 'variable_id' in local_var_params: + path_params['variableID'] = local_var_params['variable_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'variable' in local_var_params: + body_params = local_var_params['variable'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_variables(self, variable, **kwargs): # noqa: E501,D401,D403 + """Create a variable. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_variables(variable, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param Variable variable: Variable to create (required) + :param str zap_trace_span: OpenTracing span context + :return: Variable + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_variables_with_http_info(variable, **kwargs) # noqa: E501 + else: + (data) = self.post_variables_with_http_info(variable, **kwargs) # noqa: E501 + return data + + def post_variables_with_http_info(self, variable, **kwargs): # noqa: E501,D401,D403 + """Create a variable. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_variables_with_http_info(variable, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param Variable variable: Variable to create (required) + :param str zap_trace_span: OpenTracing span context + :return: Variable + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_variables_prepare(variable, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/variables', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Variable', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_variables_async(self, variable, **kwargs): # noqa: E501,D401,D403 + """Create a variable. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param Variable variable: Variable to create (required) + :param str zap_trace_span: OpenTracing span context + :return: Variable + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_variables_prepare(variable, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/variables', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Variable', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_variables_prepare(self, variable, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['variable', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_variables', all_params, local_var_params) + # verify the required parameter 'variable' is set + if ('variable' not in local_var_params or + local_var_params['variable'] is None): + raise ValueError("Missing the required parameter `variable` when calling `post_variables`") # noqa: E501 + + path_params = {} + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'variable' in local_var_params: + body_params = local_var_params['variable'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def post_variables_id_labels(self, variable_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a variable. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_variables_id_labels(variable_id, label_mapping, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_variables_id_labels_with_http_info(variable_id, label_mapping, **kwargs) # noqa: E501 + else: + (data) = self.post_variables_id_labels_with_http_info(variable_id, label_mapping, **kwargs) # noqa: E501 + return data + + def post_variables_id_labels_with_http_info(self, variable_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a variable. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_variables_id_labels_with_http_info(variable_id, label_mapping, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_variables_id_labels_prepare(variable_id, label_mapping, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/variables/{variableID}/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_variables_id_labels_async(self, variable_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + """Add a label to a variable. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param LabelMapping label_mapping: Label to add (required) + :param str zap_trace_span: OpenTracing span context + :return: LabelResponse + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_variables_id_labels_prepare(variable_id, label_mapping, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/variables/{variableID}/labels', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='LabelResponse', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_variables_id_labels_prepare(self, variable_id, label_mapping, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['variable_id', 'label_mapping', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('post_variables_id_labels', all_params, local_var_params) + # verify the required parameter 'variable_id' is set + if ('variable_id' not in local_var_params or + local_var_params['variable_id'] is None): + raise ValueError("Missing the required parameter `variable_id` when calling `post_variables_id_labels`") # noqa: E501 + # verify the required parameter 'label_mapping' is set + if ('label_mapping' not in local_var_params or + local_var_params['label_mapping'] is None): + raise ValueError("Missing the required parameter `label_mapping` when calling `post_variables_id_labels`") # noqa: E501 + + path_params = {} + if 'variable_id' in local_var_params: + path_params['variableID'] = local_var_params['variable_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'label_mapping' in local_var_params: + body_params = local_var_params['label_mapping'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def put_variables_id(self, variable_id, variable, **kwargs): # noqa: E501,D401,D403 + """Replace a variable. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.put_variables_id(variable_id, variable, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param Variable variable: Variable to replace (required) + :param str zap_trace_span: OpenTracing span context + :return: Variable + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.put_variables_id_with_http_info(variable_id, variable, **kwargs) # noqa: E501 + else: + (data) = self.put_variables_id_with_http_info(variable_id, variable, **kwargs) # noqa: E501 + return data + + def put_variables_id_with_http_info(self, variable_id, variable, **kwargs): # noqa: E501,D401,D403 + """Replace a variable. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.put_variables_id_with_http_info(variable_id, variable, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param Variable variable: Variable to replace (required) + :param str zap_trace_span: OpenTracing span context + :return: Variable + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._put_variables_id_prepare(variable_id, variable, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/variables/{variableID}', 'PUT', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Variable', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def put_variables_id_async(self, variable_id, variable, **kwargs): # noqa: E501,D401,D403 + """Replace a variable. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str variable_id: The variable ID. (required) + :param Variable variable: Variable to replace (required) + :param str zap_trace_span: OpenTracing span context + :return: Variable + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._put_variables_id_prepare(variable_id, variable, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/variables/{variableID}', 'PUT', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='Variable', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _put_variables_id_prepare(self, variable_id, variable, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['variable_id', 'variable', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('put_variables_id', all_params, local_var_params) + # verify the required parameter 'variable_id' is set + if ('variable_id' not in local_var_params or + local_var_params['variable_id'] is None): + raise ValueError("Missing the required parameter `variable_id` when calling `put_variables_id`") # noqa: E501 + # verify the required parameter 'variable' is set + if ('variable' not in local_var_params or + local_var_params['variable'] is None): + raise ValueError("Missing the required parameter `variable` when calling `put_variables_id`") # noqa: E501 + + path_params = {} + if 'variable_id' in local_var_params: + path_params['variableID'] = local_var_params['variable_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'variable' in local_var_params: + body_params = local_var_params['variable'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/views_service.py b/frogpilot/third_party/influxdb_client/service/views_service.py new file mode 100644 index 000000000..203f6c640 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/views_service.py @@ -0,0 +1,293 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class ViewsService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """ViewsService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def get_dashboards_id_cells_id_view(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve the view for a cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dashboards_id_cells_id_view(dashboard_id, cell_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str cell_id: The cell ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: View + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_dashboards_id_cells_id_view_with_http_info(dashboard_id, cell_id, **kwargs) # noqa: E501 + else: + (data) = self.get_dashboards_id_cells_id_view_with_http_info(dashboard_id, cell_id, **kwargs) # noqa: E501 + return data + + def get_dashboards_id_cells_id_view_with_http_info(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve the view for a cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_dashboards_id_cells_id_view_with_http_info(dashboard_id, cell_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str cell_id: The cell ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: View + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dashboards_id_cells_id_view_prepare(dashboard_id, cell_id, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}/view', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='View', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def get_dashboards_id_cells_id_view_async(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + """Retrieve the view for a cell. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The dashboard ID. (required) + :param str cell_id: The cell ID. (required) + :param str zap_trace_span: OpenTracing span context + :return: View + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._get_dashboards_id_cells_id_view_prepare(dashboard_id, cell_id, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}/view', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='View', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _get_dashboards_id_cells_id_view_prepare(self, dashboard_id, cell_id, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'cell_id', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('get_dashboards_id_cells_id_view', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `get_dashboards_id_cells_id_view`") # noqa: E501 + # verify the required parameter 'cell_id' is set + if ('cell_id' not in local_var_params or + local_var_params['cell_id'] is None): + raise ValueError("Missing the required parameter `cell_id` when calling `get_dashboards_id_cells_id_view`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + if 'cell_id' in local_var_params: + path_params['cellID'] = local_var_params['cell_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params + + def patch_dashboards_id_cells_id_view(self, dashboard_id, cell_id, view, **kwargs): # noqa: E501,D401,D403 + """Update the view for a cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_dashboards_id_cells_id_view(dashboard_id, cell_id, view, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str cell_id: The ID of the cell to update. (required) + :param View view: (required) + :param str zap_trace_span: OpenTracing span context + :return: View + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.patch_dashboards_id_cells_id_view_with_http_info(dashboard_id, cell_id, view, **kwargs) # noqa: E501 + else: + (data) = self.patch_dashboards_id_cells_id_view_with_http_info(dashboard_id, cell_id, view, **kwargs) # noqa: E501 + return data + + def patch_dashboards_id_cells_id_view_with_http_info(self, dashboard_id, cell_id, view, **kwargs): # noqa: E501,D401,D403 + """Update the view for a cell. + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.patch_dashboards_id_cells_id_view_with_http_info(dashboard_id, cell_id, view, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str cell_id: The ID of the cell to update. (required) + :param View view: (required) + :param str zap_trace_span: OpenTracing span context + :return: View + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_dashboards_id_cells_id_view_prepare(dashboard_id, cell_id, view, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}/view', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='View', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def patch_dashboards_id_cells_id_view_async(self, dashboard_id, cell_id, view, **kwargs): # noqa: E501,D401,D403 + """Update the view for a cell. + + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str dashboard_id: The ID of the dashboard to update. (required) + :param str cell_id: The ID of the cell to update. (required) + :param View view: (required) + :param str zap_trace_span: OpenTracing span context + :return: View + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._patch_dashboards_id_cells_id_view_prepare(dashboard_id, cell_id, view, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/dashboards/{dashboardID}/cells/{cellID}/view', 'PATCH', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type='View', # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _patch_dashboards_id_cells_id_view_prepare(self, dashboard_id, cell_id, view, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['dashboard_id', 'cell_id', 'view', 'zap_trace_span'] # noqa: E501 + self._check_operation_params('patch_dashboards_id_cells_id_view', all_params, local_var_params) + # verify the required parameter 'dashboard_id' is set + if ('dashboard_id' not in local_var_params or + local_var_params['dashboard_id'] is None): + raise ValueError("Missing the required parameter `dashboard_id` when calling `patch_dashboards_id_cells_id_view`") # noqa: E501 + # verify the required parameter 'cell_id' is set + if ('cell_id' not in local_var_params or + local_var_params['cell_id'] is None): + raise ValueError("Missing the required parameter `cell_id` when calling `patch_dashboards_id_cells_id_view`") # noqa: E501 + # verify the required parameter 'view' is set + if ('view' not in local_var_params or + local_var_params['view'] is None): + raise ValueError("Missing the required parameter `view` when calling `patch_dashboards_id_cells_id_view`") # noqa: E501 + + path_params = {} + if 'dashboard_id' in local_var_params: + path_params['dashboardID'] = local_var_params['dashboard_id'] # noqa: E501 + if 'cell_id' in local_var_params: + path_params['cellID'] = local_var_params['cell_id'] # noqa: E501 + + query_params = [] + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + + body_params = None + if 'view' in local_var_params: + body_params = local_var_params['view'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/service/write_service.py b/frogpilot/third_party/influxdb_client/service/write_service.py new file mode 100644 index 000000000..bcd970dbb --- /dev/null +++ b/frogpilot/third_party/influxdb_client/service/write_service.py @@ -0,0 +1,201 @@ +# coding: utf-8 + +""" +InfluxDB OSS API Service. + +The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 + +OpenAPI spec version: 2.0.0 +Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +from influxdb_client.service._base_service import _BaseService + + +class WriteService(_BaseService): + """NOTE: This class is auto generated by OpenAPI Generator. + + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): # noqa: E501,D401,D403 + """WriteService - a operation defined in OpenAPI.""" + super().__init__(api_client) + + def post_write(self, org, bucket, body, **kwargs): # noqa: E501,D401,D403 + """Write data. + + Writes data to a bucket. Use this endpoint to send data in [line protocol](https://docs.influxdata.com/influxdb/latest/reference/syntax/line-protocol/) format to InfluxDB. #### InfluxDB Cloud - Does the following when you send a write request: 1. Validates the request and queues the write. 2. If queued, responds with _success_ (HTTP `2xx` status code); _error_ otherwise. 3. Handles the delete asynchronously and reaches eventual consistency. To ensure that InfluxDB Cloud handles writes and deletes in the order you request them, wait for a success response (HTTP `2xx` status code) before you send the next request. Because writes and deletes are asynchronous, your change might not yet be readable when you receive the response. #### InfluxDB OSS - Validates the request and handles the write synchronously. - If all points were written successfully, responds with HTTP `2xx` status code; otherwise, returns the first line that failed. #### Required permissions - `write-buckets` or `write-bucket BUCKET_ID`. *`BUCKET_ID`* is the ID of the destination bucket. #### Rate limits (with InfluxDB Cloud) `write` rate limits apply. For more information, see [limits and adjustable quotas](https://docs.influxdata.com/influxdb/cloud/account-management/limits/). #### Related guides - [Write data with the InfluxDB API](https://docs.influxdata.com/influxdb/latest/write-data/developer-tools/api) - [Optimize writes to InfluxDB](https://docs.influxdata.com/influxdb/latest/write-data/best-practices/optimize-writes/) - [Troubleshoot issues writing data](https://docs.influxdata.com/influxdb/latest/write-data/troubleshoot/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_write(org, bucket, body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org: An organization name or ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Writes data to the bucket in the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or the `orgID` parameter. - If you pass both `orgID` and `org`, they must both be valid. - Writes data to the bucket in the specified organization. (required) + :param str bucket: A bucket name or ID. InfluxDB writes all points in the batch to the specified bucket. (required) + :param str body: In the request body, provide data in [line protocol format](https://docs.influxdata.com/influxdb/latest/reference/syntax/line-protocol/). To send compressed data, do the following: 1. Use [GZIP](https://www.gzip.org/) to compress the line protocol data. 2. In your request, send the compressed data and the `Content-Encoding: gzip` header. #### Related guides - [Best practices for optimizing writes](https://docs.influxdata.com/influxdb/latest/write-data/best-practices/optimize-writes/) (required) + :param str zap_trace_span: OpenTracing span context + :param str content_encoding: The compression applied to the line protocol in the request payload. To send a GZIP payload, pass `Content-Encoding: gzip` header. + :param str content_type: The format of the data in the request body. To send a line protocol payload, pass `Content-Type: text/plain; charset=utf-8`. + :param int content_length: The size of the entity-body, in bytes, sent to InfluxDB. If the length is greater than the `max body` configuration option, the server responds with status code `413`. + :param str accept: The content type that the client can understand. Writes only return a response body if they fail--for example, due to a formatting problem or quota limit. #### InfluxDB Cloud - Returns only `application/json` for format and limit errors. - Returns only `text/html` for some quota limit errors. #### InfluxDB OSS - Returns only `application/json` for format and limit errors. #### Related guides - [Troubleshoot issues writing data](https://docs.influxdata.com/influxdb/latest/write-data/troubleshoot/) + :param str org_id: An organization ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Writes data to the bucket in the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or the `orgID` parameter. - If you pass both `orgID` and `org`, they must both be valid. - Writes data to the bucket in the specified organization. + :param WritePrecision precision: The precision for unix timestamps in the line protocol batch. + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.post_write_with_http_info(org, bucket, body, **kwargs) # noqa: E501 + else: + (data) = self.post_write_with_http_info(org, bucket, body, **kwargs) # noqa: E501 + return data + + def post_write_with_http_info(self, org, bucket, body, **kwargs): # noqa: E501,D401,D403 + """Write data. + + Writes data to a bucket. Use this endpoint to send data in [line protocol](https://docs.influxdata.com/influxdb/latest/reference/syntax/line-protocol/) format to InfluxDB. #### InfluxDB Cloud - Does the following when you send a write request: 1. Validates the request and queues the write. 2. If queued, responds with _success_ (HTTP `2xx` status code); _error_ otherwise. 3. Handles the delete asynchronously and reaches eventual consistency. To ensure that InfluxDB Cloud handles writes and deletes in the order you request them, wait for a success response (HTTP `2xx` status code) before you send the next request. Because writes and deletes are asynchronous, your change might not yet be readable when you receive the response. #### InfluxDB OSS - Validates the request and handles the write synchronously. - If all points were written successfully, responds with HTTP `2xx` status code; otherwise, returns the first line that failed. #### Required permissions - `write-buckets` or `write-bucket BUCKET_ID`. *`BUCKET_ID`* is the ID of the destination bucket. #### Rate limits (with InfluxDB Cloud) `write` rate limits apply. For more information, see [limits and adjustable quotas](https://docs.influxdata.com/influxdb/cloud/account-management/limits/). #### Related guides - [Write data with the InfluxDB API](https://docs.influxdata.com/influxdb/latest/write-data/developer-tools/api) - [Optimize writes to InfluxDB](https://docs.influxdata.com/influxdb/latest/write-data/best-practices/optimize-writes/) - [Troubleshoot issues writing data](https://docs.influxdata.com/influxdb/latest/write-data/troubleshoot/) + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.post_write_with_http_info(org, bucket, body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str org: An organization name or ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Writes data to the bucket in the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or the `orgID` parameter. - If you pass both `orgID` and `org`, they must both be valid. - Writes data to the bucket in the specified organization. (required) + :param str bucket: A bucket name or ID. InfluxDB writes all points in the batch to the specified bucket. (required) + :param str body: In the request body, provide data in [line protocol format](https://docs.influxdata.com/influxdb/latest/reference/syntax/line-protocol/). To send compressed data, do the following: 1. Use [GZIP](https://www.gzip.org/) to compress the line protocol data. 2. In your request, send the compressed data and the `Content-Encoding: gzip` header. #### Related guides - [Best practices for optimizing writes](https://docs.influxdata.com/influxdb/latest/write-data/best-practices/optimize-writes/) (required) + :param str zap_trace_span: OpenTracing span context + :param str content_encoding: The compression applied to the line protocol in the request payload. To send a GZIP payload, pass `Content-Encoding: gzip` header. + :param str content_type: The format of the data in the request body. To send a line protocol payload, pass `Content-Type: text/plain; charset=utf-8`. + :param int content_length: The size of the entity-body, in bytes, sent to InfluxDB. If the length is greater than the `max body` configuration option, the server responds with status code `413`. + :param str accept: The content type that the client can understand. Writes only return a response body if they fail--for example, due to a formatting problem or quota limit. #### InfluxDB Cloud - Returns only `application/json` for format and limit errors. - Returns only `text/html` for some quota limit errors. #### InfluxDB OSS - Returns only `application/json` for format and limit errors. #### Related guides - [Troubleshoot issues writing data](https://docs.influxdata.com/influxdb/latest/write-data/troubleshoot/) + :param str org_id: An organization ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Writes data to the bucket in the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or the `orgID` parameter. - If you pass both `orgID` and `org`, they must both be valid. - Writes data to the bucket in the specified organization. + :param WritePrecision precision: The precision for unix timestamps in the line protocol batch. + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_write_prepare(org, bucket, body, **kwargs) # noqa: E501 + + return self.api_client.call_api( + '/api/v2/write', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + async def post_write_async(self, org, bucket, body, **kwargs): # noqa: E501,D401,D403 + """Write data. + + Writes data to a bucket. Use this endpoint to send data in [line protocol](https://docs.influxdata.com/influxdb/latest/reference/syntax/line-protocol/) format to InfluxDB. #### InfluxDB Cloud - Does the following when you send a write request: 1. Validates the request and queues the write. 2. If queued, responds with _success_ (HTTP `2xx` status code); _error_ otherwise. 3. Handles the delete asynchronously and reaches eventual consistency. To ensure that InfluxDB Cloud handles writes and deletes in the order you request them, wait for a success response (HTTP `2xx` status code) before you send the next request. Because writes and deletes are asynchronous, your change might not yet be readable when you receive the response. #### InfluxDB OSS - Validates the request and handles the write synchronously. - If all points were written successfully, responds with HTTP `2xx` status code; otherwise, returns the first line that failed. #### Required permissions - `write-buckets` or `write-bucket BUCKET_ID`. *`BUCKET_ID`* is the ID of the destination bucket. #### Rate limits (with InfluxDB Cloud) `write` rate limits apply. For more information, see [limits and adjustable quotas](https://docs.influxdata.com/influxdb/cloud/account-management/limits/). #### Related guides - [Write data with the InfluxDB API](https://docs.influxdata.com/influxdb/latest/write-data/developer-tools/api) - [Optimize writes to InfluxDB](https://docs.influxdata.com/influxdb/latest/write-data/best-practices/optimize-writes/) - [Troubleshoot issues writing data](https://docs.influxdata.com/influxdb/latest/write-data/troubleshoot/) + This method makes an asynchronous HTTP request. + + :param async_req bool + :param str org: An organization name or ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Writes data to the bucket in the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or the `orgID` parameter. - If you pass both `orgID` and `org`, they must both be valid. - Writes data to the bucket in the specified organization. (required) + :param str bucket: A bucket name or ID. InfluxDB writes all points in the batch to the specified bucket. (required) + :param str body: In the request body, provide data in [line protocol format](https://docs.influxdata.com/influxdb/latest/reference/syntax/line-protocol/). To send compressed data, do the following: 1. Use [GZIP](https://www.gzip.org/) to compress the line protocol data. 2. In your request, send the compressed data and the `Content-Encoding: gzip` header. #### Related guides - [Best practices for optimizing writes](https://docs.influxdata.com/influxdb/latest/write-data/best-practices/optimize-writes/) (required) + :param str zap_trace_span: OpenTracing span context + :param str content_encoding: The compression applied to the line protocol in the request payload. To send a GZIP payload, pass `Content-Encoding: gzip` header. + :param str content_type: The format of the data in the request body. To send a line protocol payload, pass `Content-Type: text/plain; charset=utf-8`. + :param int content_length: The size of the entity-body, in bytes, sent to InfluxDB. If the length is greater than the `max body` configuration option, the server responds with status code `413`. + :param str accept: The content type that the client can understand. Writes only return a response body if they fail--for example, due to a formatting problem or quota limit. #### InfluxDB Cloud - Returns only `application/json` for format and limit errors. - Returns only `text/html` for some quota limit errors. #### InfluxDB OSS - Returns only `application/json` for format and limit errors. #### Related guides - [Troubleshoot issues writing data](https://docs.influxdata.com/influxdb/latest/write-data/troubleshoot/) + :param str org_id: An organization ID. #### InfluxDB Cloud - Doesn't use the `org` parameter or `orgID` parameter. - Writes data to the bucket in the organization associated with the authorization (API token). #### InfluxDB OSS - Requires either the `org` parameter or the `orgID` parameter. - If you pass both `orgID` and `org`, they must both be valid. - Writes data to the bucket in the specified organization. + :param WritePrecision precision: The precision for unix timestamps in the line protocol batch. + :return: None + If the method is called asynchronously, + returns the request thread. + """ # noqa: E501 + local_var_params, path_params, query_params, header_params, body_params = \ + self._post_write_prepare(org, bucket, body, **kwargs) # noqa: E501 + + return await self.api_client.call_api( + '/api/v2/write', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=[], + files={}, + response_type=None, # noqa: E501 + auth_settings=[], + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats={}, + urlopen_kw=kwargs.get('urlopen_kw', None)) + + def _post_write_prepare(self, org, bucket, body, **kwargs): # noqa: E501,D401,D403 + local_var_params = locals() + + all_params = ['org', 'bucket', 'body', 'zap_trace_span', 'content_encoding', 'content_type', 'content_length', 'accept', 'org_id', 'precision'] # noqa: E501 + self._check_operation_params('post_write', all_params, local_var_params) + # verify the required parameter 'org' is set + if ('org' not in local_var_params or + local_var_params['org'] is None): + raise ValueError("Missing the required parameter `org` when calling `post_write`") # noqa: E501 + # verify the required parameter 'bucket' is set + if ('bucket' not in local_var_params or + local_var_params['bucket'] is None): + raise ValueError("Missing the required parameter `bucket` when calling `post_write`") # noqa: E501 + # verify the required parameter 'body' is set + if ('body' not in local_var_params or + local_var_params['body'] is None): + raise ValueError("Missing the required parameter `body` when calling `post_write`") # noqa: E501 + + path_params = {} + + query_params = [] + if 'org' in local_var_params: + query_params.append(('org', local_var_params['org'])) # noqa: E501 + if 'org_id' in local_var_params: + query_params.append(('orgID', local_var_params['org_id'])) # noqa: E501 + if 'bucket' in local_var_params: + query_params.append(('bucket', local_var_params['bucket'])) # noqa: E501 + if 'precision' in local_var_params: + query_params.append(('precision', local_var_params['precision'])) # noqa: E501 + + header_params = {} + if 'zap_trace_span' in local_var_params: + header_params['Zap-Trace-Span'] = local_var_params['zap_trace_span'] # noqa: E501 + if 'content_encoding' in local_var_params: + header_params['Content-Encoding'] = local_var_params['content_encoding'] # noqa: E501 + if 'content_type' in local_var_params: + header_params['Content-Type'] = local_var_params['content_type'] # noqa: E501 + if 'content_length' in local_var_params: + header_params['Content-Length'] = local_var_params['content_length'] # noqa: E501 + if 'accept' in local_var_params: + header_params['Accept'] = local_var_params['accept'] # noqa: E501 + + body_params = None + if 'body' in local_var_params: + body_params = local_var_params['body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json', 'text/html', ]) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['text/plain']) # noqa: E501 + + return local_var_params, path_params, query_params, header_params, body_params diff --git a/frogpilot/third_party/influxdb_client/version.py b/frogpilot/third_party/influxdb_client/version.py new file mode 100644 index 000000000..9c626c0c8 --- /dev/null +++ b/frogpilot/third_party/influxdb_client/version.py @@ -0,0 +1,3 @@ +"""Version of the Client that is used in User-Agent header.""" + +VERSION = '1.49.0' diff --git a/frogpilot/third_party/reactivex/__init__.py b/frogpilot/third_party/reactivex/__init__.py new file mode 100644 index 000000000..a707f978c --- /dev/null +++ b/frogpilot/third_party/reactivex/__init__.py @@ -0,0 +1,1339 @@ +# pylint: disable=too-many-lines,redefined-outer-name,redefined-builtin + +from asyncio import Future +from typing import ( + Any, + Callable, + Iterable, + Mapping, + Optional, + Tuple, + TypeVar, + Union, + overload, +) + +from . import abc, typing +from ._version import __version__ +from .internal.utils import alias +from .notification import Notification +from .observable import ConnectableObservable, GroupedObservable, Observable +from .observer import Observer +from .pipe import compose, pipe +from .subject import Subject + +_T = TypeVar("_T") +_T1 = TypeVar("_T1") +_T2 = TypeVar("_T2") +_TKey = TypeVar("_TKey") +_TState = TypeVar("_TState") + +_A = TypeVar("_A") +_B = TypeVar("_B") +_C = TypeVar("_C") +_D = TypeVar("_D") +_E = TypeVar("_E") +_F = TypeVar("_F") +_G = TypeVar("_G") + + +def amb(*sources: Observable[_T]) -> Observable[_T]: + """Propagates the observable sequence that emits first. + + .. marble:: + :alt: amb + + ---8--6--9-----------| + --1--2--3---5--------| + ----------10-20-30---| + [ amb() ] + --1--2--3---5--------| + + Example: + >>> winner = reactivex.amb(xs, ys, zs) + + Args: + sources: Sequence of observables to monitor for first emission. + + Returns: + An observable sequence that surfaces any of the given sequences, + whichever emitted the first element. + """ + + from .observable.amb import amb_ as amb_ + + return amb_(*sources) + + +def case( + mapper: Callable[[], _TKey], + sources: Mapping[_TKey, Observable[_T]], + default_source: Optional[Union[Observable[_T], "Future[_T]"]] = None, +) -> Observable[_T]: + """Uses mapper to determine which source in sources to use. + + .. marble:: + :alt: case + + --1---------------| + a--1--2--3--4--| + b--10-20-30---| + [case(mapper, { 1: a, 2: b })] + ---1--2--3--4--| + + Examples: + >>> res = reactivex.case(mapper, { '1': obs1, '2': obs2 }) + >>> res = reactivex.case(mapper, { '1': obs1, '2': obs2 }, obs0) + + Args: + mapper: The function which extracts the value for to test in a + case statement. + sources: An object which has keys which correspond to the case + statement labels. + default_source: [Optional] The observable sequence or Future that will + be run if the sources are not matched. If this is not provided, + it defaults to :func:`empty`. + + Returns: + An observable sequence which is determined by a case statement. + """ + + from .observable.case import case_ + + return case_(mapper, sources, default_source) + + +def catch(*sources: Observable[_T]) -> Observable[_T]: + """Continues observable sequences which are terminated with an + exception by switching over to the next observable sequence. + + .. marble:: + :alt: catch + + ---1---2---3-* + a-7-8-| + [ catch(a) ] + ---1---2---3---7-8-| + + Examples: + >>> res = reactivex.catch(xs, ys, zs) + + Args: + sources: Sequence of observables. + + Returns: + An observable sequence containing elements from consecutive observables + from the sequence of sources until one of them terminates successfully. + """ + + from .observable.catch import catch_with_iterable_ + + return catch_with_iterable_(sources) + + +def catch_with_iterable(sources: Iterable[Observable[_T]]) -> Observable[_T]: + """Continues observable sequences that are terminated with an + exception by switching over to the next observable sequence. + + .. marble:: + :alt: catch + + ---1---2---3-* + a-7-8-| + [ catch(a) ] + ---1---2---3---7-8-| + + Examples: + >>> res = reactivex.catch([xs, ys, zs]) + >>> res = reactivex.catch(src for src in [xs, ys, zs]) + + Args: + sources: An Iterable of observables; thus, a generator can also + be used here. + + Returns: + An observable sequence containing elements from consecutive observables + from the sequence of sources until one of them terminates successfully. + """ + + from .observable.catch import catch_with_iterable_ + + return catch_with_iterable_(sources) + + +def create(subscribe: typing.Subscription[_T]) -> Observable[_T]: + """Creates an observable sequence object from the specified + subscription function. + + .. marble:: + :alt: create + + [ create(a) ] + ---1---2---3---4---| + + Args: + subscribe: Subscription function. + + Returns: + An observable sequence that can be subscribed to via the given + subscription function. + """ + + return Observable(subscribe) + + +@overload +def combine_latest( + __a: Observable[_A], __b: Observable[_B] +) -> Observable[Tuple[_A, _B]]: + ... + + +@overload +def combine_latest( + __a: Observable[_A], __b: Observable[_B], __c: Observable[_C] +) -> Observable[Tuple[_A, _B, _C]]: + ... + + +@overload +def combine_latest( + __a: Observable[_A], __b: Observable[_B], __c: Observable[_C], __d: Observable[_D] +) -> Observable[Tuple[_A, _B, _C, _D]]: + ... + + +def combine_latest(*__sources: Observable[Any]) -> Observable[Any]: + """Merges the specified observable sequences into one observable + sequence by creating a tuple whenever any of the observable + sequences emits an element. + + .. marble:: + :alt: combine_latest + + ---a-----b--c------| + --1---2--------3---| + [ combine_latest() ] + ---a1-a2-b2-c2-c3--| + + Examples: + >>> obs = rx.combine_latest(obs1, obs2, obs3) + + Args: + sources: Sequence of observables. + + Returns: + An observable sequence containing the result of combining elements from + each source in given sequence. + """ + + from .observable.combinelatest import combine_latest_ + + return combine_latest_(*__sources) + + +def concat(*sources: Observable[_T]) -> Observable[_T]: + """Concatenates all of the specified observable sequences. + + .. marble:: + :alt: concat + + ---1--2--3--| + --6--8--| + [ concat() ] + ---1--2--3----6--8-| + + Examples: + >>> res = reactivex.concat(xs, ys, zs) + + Args: + sources: Sequence of observables. + + Returns: + An observable sequence that contains the elements of each source in + the given sequence, in sequential order. + """ + + from .observable.concat import concat_with_iterable_ + + return concat_with_iterable_(sources) + + +def concat_with_iterable(sources: Iterable[Observable[_T]]) -> Observable[_T]: + """Concatenates all of the specified observable sequences. + + .. marble:: + :alt: concat + + ---1--2--3--| + --6--8--| + [ concat() ] + ---1--2--3----6--8-| + + Examples: + >>> res = reactivex.concat_with_iterable([xs, ys, zs]) + >>> res = reactivex.concat_with_iterable(for src in [xs, ys, zs]) + + Args: + sources: An Iterable of observables; thus, a generator can also + be used here. + + Returns: + An observable sequence that contains the elements of each given + sequence, in sequential order. + """ + + from .observable.concat import concat_with_iterable_ + + return concat_with_iterable_(sources) + + +def defer( + factory: Callable[[abc.SchedulerBase], Union[Observable[_T], "Future[_T]"]] +) -> Observable[_T]: + """Returns an observable sequence that invokes the specified + factory function whenever a new observer subscribes. + + .. marble:: + :alt: defer + + [ defer(1,2,3) ] + ---1--2--3--| + ---1--2--3--| + + Example: + >>> res = reactivex.defer(lambda scheduler: of(1, 2, 3)) + + Args: + factory: Observable factory function to invoke for each observer + which invokes :func:`subscribe() + ` on the resulting sequence. + The factory takes a single argument, the scheduler used. + + Returns: + An observable sequence whose observers trigger an invocation + of the given factory function. + """ + + from .observable.defer import defer_ + + return defer_(factory) + + +def empty(scheduler: Optional[abc.SchedulerBase] = None) -> Observable[Any]: + """Returns an empty observable sequence. + + .. marble:: + :alt: empty + + [ empty() ] + --| + + Example: + >>> obs = reactivex.empty() + + Args: + scheduler: [Optional] Scheduler instance to send the termination call + on. By default, this will use an instance of + :class:`ImmediateScheduler `. + + Returns: + An observable sequence with no elements. + """ + + from .observable.empty import empty_ + + return empty_(scheduler) + + +def for_in( + values: Iterable[_T1], mapper: typing.Mapper[_T1, Observable[_T2]] +) -> Observable[_T2]: + """Concatenates the observable sequences obtained by running the + specified result mapper for each element in the specified values. + + .. marble:: + :alt: for_in + + a--1--2-| + b--10--20-| + [for_in((a, b), lambda i: i+1)] + ---2--3--11--21-| + + + Note: + This is just a wrapper for + :func:`reactivex.concat(map(mapper, values)) ` + + Args: + values: An Iterable of values to turn into an observable + source. + mapper: A function to apply to each item in the values list to turn + it into an observable sequence; this should return instances of + :class:`reactivex.Observable`. + + Returns: + An observable sequence from the concatenated observable + sequences. + """ + + mapped: Iterable[Observable[_T2]] = map(mapper, values) + return concat_with_iterable(mapped) + + +@overload +def fork_join(__a: Observable[_A], __b: Observable[_B]) -> Observable[Tuple[_A, _B]]: + ... + + +@overload +def fork_join( + __a: Observable[_A], __b: Observable[_B], __c: Observable[_C] +) -> Observable[Tuple[_A, _B, _C]]: + ... + + +@overload +def fork_join( + __a: Observable[_A], __b: Observable[_B], __c: Observable[_C], __d: Observable[_D] +) -> Observable[Tuple[_A, _B, _C, _D]]: + ... + + +@overload +def fork_join( + __a: Observable[_A], + __b: Observable[_B], + __c: Observable[_C], + __d: Observable[_D], + __e: Observable[_E], +) -> Observable[Tuple[_A, _B, _C, _D, _E]]: + ... + + +def fork_join(*sources: Observable[Any]) -> Observable[Any]: + """Wait for observables to complete and then combine last values + they emitted into a tuple. Whenever any of that observables completes + without emitting any value, result sequence will complete at that moment as well. + + .. marble:: + :alt: fork_join + + ---a-----b--c---d-| + --1---2------3-4---| + -a---------b---| + [ fork_join() ] + --------------------d4b| + + Examples: + >>> obs = reactivex.fork_join(obs1, obs2, obs3) + + Args: + sources: Sequence of observables. + + Returns: + An observable sequence containing the result of combining last element from + each source in given sequence. + """ + + from .observable.forkjoin import fork_join_ + + return fork_join_(*sources) + + +def from_callable( + supplier: Callable[[], _T], scheduler: Optional[abc.SchedulerBase] = None +) -> Observable[_T]: + """Returns an observable sequence that contains a single element generated + by the given supplier, using the specified scheduler to send out observer + messages. + + .. marble:: + :alt: from_callable + + [ from_callable() ] + --1--| + + Examples: + >>> res = reactivex.from_callable(lambda: calculate_value()) + >>> res = reactivex.from_callable(lambda: 1 / 0) # emits an error + + Args: + supplier: Function which is invoked to obtain the single element. + scheduler: [Optional] Scheduler instance to schedule the values on. + If not specified, the default is to use an instance of + :class:`CurrentThreadScheduler + `. + + Returns: + An observable sequence containing the single element obtained by + invoking the given supplier function. + """ + + from .observable.returnvalue import from_callable_ + + return from_callable_(supplier, scheduler) + + +def from_callback( + func: Callable[..., Callable[..., None]], + mapper: Optional[typing.Mapper[Any, Any]] = None, +) -> Callable[[], Observable[Any]]: + """Converts a callback function to an observable sequence. + + Args: + func: Function with a callback as the last argument to + convert to an Observable sequence. + mapper: [Optional] A mapper which takes the arguments + from the callback to produce a single item to yield on + next. + + Returns: + A function, when executed with the required arguments minus + the callback, produces an Observable sequence with a single + value of the arguments to the callback as a list. + """ + from .observable.fromcallback import from_callback_ + + return from_callback_(func, mapper) + + +def from_future(future: "Future[_T]") -> Observable[_T]: + """Converts a Future to an Observable sequence + + .. marble:: + :alt: from_future + + [ from_future() ] + ------1| + + Args: + future: A Python 3 compatible future. + https://docs.python.org/3/library/asyncio-task.html#future + + Returns: + An observable sequence which wraps the existing future success + and failure. + """ + from .observable.fromfuture import from_future_ + + return from_future_(future) + + +def from_iterable( + iterable: Iterable[_T], scheduler: Optional[abc.SchedulerBase] = None +) -> Observable[_T]: + """Converts an iterable to an observable sequence. + + .. marble:: + :alt: from_iterable + + [ from_iterable(1,2,3) ] + ---1--2--3--| + + + Example: + >>> reactivex.from_iterable([1,2,3]) + + Args: + iterable: An Iterable to change into an observable sequence. + scheduler: [Optional] Scheduler instance to schedule the values on. + If not specified, the default is to use an instance of + :class:`CurrentThreadScheduler + `. + + Returns: + The observable sequence whose elements are pulled from the + given iterable sequence. + """ + from .observable.fromiterable import from_iterable_ as from_iterable_ + + return from_iterable_(iterable, scheduler) + + +from_ = alias("from_", "Alias for :func:`reactivex.from_iterable`.", from_iterable) +from_list = alias( + "from_list", "Alias for :func:`reactivex.from_iterable`.", from_iterable +) + + +def from_marbles( + string: str, + timespan: typing.RelativeTime = 0.1, + scheduler: Optional[abc.SchedulerBase] = None, + lookup: Optional[Mapping[Union[str, float], Any]] = None, + error: Optional[Exception] = None, +) -> Observable[Any]: + """Convert a marble diagram string to a cold observable sequence, using + an optional scheduler to enumerate the events. + + .. marble:: + :alt: from_marbles + + [ from_marbles(-1-2-3-) ] + -1-2-3-| + + Each character in the string will advance time by timespan + (except for space). Characters that are not special (see the table below) + will be interpreted as a value to be emitted. Numbers will be cast + to int or float. + + Special characters: + +------------+--------------------------------------------------------+ + | :code:`-` | advance time by timespan | + +------------+--------------------------------------------------------+ + | :code:`#` | on_error() | + +------------+--------------------------------------------------------+ + | :code:`|` | on_completed() | + +------------+--------------------------------------------------------+ + | :code:`(` | open a group of marbles sharing the same timestamp | + +------------+--------------------------------------------------------+ + | :code:`)` | close a group of marbles | + +------------+--------------------------------------------------------+ + | :code:`,` | separate elements in a group | + +------------+--------------------------------------------------------+ + | | used to align multiple diagrams, does not advance time | + +------------+--------------------------------------------------------+ + + In a group of elements, the position of the initial :code:`(` determines the + timestamp at which grouped elements will be emitted. + E.g. :code:`--(12,3,4)--` will emit 12, 3, 4 at 2 * timespan and then + advance virtual time by 8 * timespan. + + Examples: + >>> from_marbles('--1--(2,3)-4--|') + >>> from_marbles('a--b--c-', lookup={'a': 1, 'b': 2, 'c': 3}) + >>> from_marbles('a--b---#', error=ValueError('foo')) + + Args: + string: String with marble diagram + timespan: [Optional] Duration of each character in seconds. + If not specified, defaults to :code:`0.1`. + scheduler: [Optional] Scheduler to run the the input sequence + on. If not specified, defaults to the subscribe scheduler + if defined, else to an instance of + :class:`NewThreadScheduler Observable[_TState]: + """Generates an observable sequence by iterating a state from an + initial state until the condition fails. + + .. marble:: + :alt: generate_with_relative_time + + [generate_with_relative_time()] + -1-2-3-4-| + + Example: + >>> res = reactivex.generate_with_relative_time( + 0, lambda x: True, lambda x: x + 1, lambda x: 0.5 + ) + + Args: + initial_state: Initial state. + condition: Condition to terminate generation (upon returning + :code:`False`). + iterate: Iteration step function. + time_mapper: Time mapper function to control the speed of + values being produced each iteration, returning relative times, i.e. + either a :class:`float` denoting seconds, or an instance of + :class:`timedelta`. + + Returns: + The generated sequence. + """ + from .observable.generatewithrelativetime import generate_with_relative_time_ + + return generate_with_relative_time_(initial_state, condition, iterate, time_mapper) + + +def generate( + initial_state: _TState, + condition: typing.Predicate[_TState], + iterate: typing.Mapper[_TState, _TState], +) -> Observable[_TState]: + """Generates an observable sequence by running a state-driven loop + producing the sequence's elements. + + .. marble:: + :alt: generate + + [ generate() ] + -1-2-3-4-| + + Example: + >>> res = reactivex.generate(0, lambda x: x < 10, lambda x: x + 1) + + Args: + initial_state: Initial state. + condition: Condition to terminate generation (upon returning + :code:`False`). + iterate: Iteration step function. + + Returns: + The generated sequence. + """ + from .observable.generate import generate_ + + return generate_(initial_state, condition, iterate) + + +def hot( + string: str, + timespan: typing.RelativeTime = 0.1, + duetime: typing.AbsoluteOrRelativeTime = 0.0, + scheduler: Optional[abc.SchedulerBase] = None, + lookup: Optional[Mapping[Union[str, float], Any]] = None, + error: Optional[Exception] = None, +) -> Observable[Any]: + """Convert a marble diagram string to a hot observable sequence, using + an optional scheduler to enumerate the events. + + .. marble:: + :alt: hot + + [ from_marbles(-1-2-3-) ] + -1-2-3-| + -2-3-| + + Each character in the string will advance time by timespan + (except for space). Characters that are not special (see the table below) + will be interpreted as a value to be emitted. Numbers will be cast + to int or float. + + Special characters: + +------------+--------------------------------------------------------+ + | :code:`-` | advance time by timespan | + +------------+--------------------------------------------------------+ + | :code:`#` | on_error() | + +------------+--------------------------------------------------------+ + | :code:`|` | on_completed() | + +------------+--------------------------------------------------------+ + | :code:`(` | open a group of elements sharing the same timestamp | + +------------+--------------------------------------------------------+ + | :code:`)` | close a group of elements | + +------------+--------------------------------------------------------+ + | :code:`,` | separate elements in a group | + +------------+--------------------------------------------------------+ + | | used to align multiple diagrams, does not advance time | + +------------+--------------------------------------------------------+ + + In a group of elements, the position of the initial :code:`(` determines the + timestamp at which grouped elements will be emitted. + E.g. :code:`--(12,3,4)--` will emit 12, 3, 4 at 2 * timespan and then + advance virtual time by 8 * timespan. + + Examples: + >>> hot("--1--(2,3)-4--|") + >>> hot("a--b--c-", lookup={'a': 1, 'b': 2, 'c': 3}) + >>> hot("a--b---#", error=ValueError("foo")) + + Args: + string: String with marble diagram + timespan: [Optional] Duration of each character in seconds. + If not specified, defaults to :code:`0.1`. + duetime: [Optional] Absolute datetime or timedelta from now that + determines when to start the emission of elements. + scheduler: [Optional] Scheduler to run the the input sequence + on. If not specified, defaults to an instance of + :class:`NewThreadScheduler `. + lookup: [Optional] A dict used to convert an element into a specified + value. If not specified, defaults to :code:`{}`. + error: [Optional] Exception that will be use in place of the :code:`#` + symbol. If not specified, defaults to :code:`Exception('error')`. + + Returns: + The observable sequence whose elements are pulled from the + given marble diagram string. + """ + + from .observable.marbles import hot as _hot + + return _hot( + string, timespan, duetime, lookup=lookup, error=error, scheduler=scheduler + ) + + +def if_then( + condition: Callable[[], bool], + then_source: Union[Observable[_T], "Future[_T]"], + else_source: Union[None, Observable[_T], "Future[_T]"] = None, +) -> Observable[_T]: + """Determines whether an observable collection contains values. + + .. marble:: + :alt: if_then + + ---1--2--3--| + --6--8--| + [ if_then() ] + ---1--2--3--| + + + Examples: + >>> res = reactivex.if_then(condition, obs1) + >>> res = reactivex.if_then(condition, obs1, obs2) + + Args: + condition: The condition which determines if the then_source or + else_source will be run. + then_source: The observable sequence or :class:`Future` that + will be run if the condition function returns :code:`True`. + else_source: [Optional] The observable sequence or :class:`Future` + that will be run if the condition function returns :code:`False`. + If this is not provided, it defaults to :func:`empty() `. + + Returns: + An observable sequence which is either the then_source or + else_source. + """ + from .observable.ifthen import if_then_ + + return if_then_(condition, then_source, else_source) + + +def interval( + period: typing.RelativeTime, scheduler: Optional[abc.SchedulerBase] = None +) -> Observable[int]: + """Returns an observable sequence that produces a value after each period. + + .. marble:: + :alt: interval + + [ interval() ] + ---1---2---3---4---> + + Example: + >>> res = reactivex.interval(1.0) + + Args: + period: Period for producing the values in the resulting sequence + (specified as a :class:`float` denoting seconds or an instance of + :class:`timedelta`). + scheduler: Scheduler to run the interval on. If not specified, an + instance of :class:`TimeoutScheduler ` + is used. + + Returns: + An observable sequence that produces a value after each period. + """ + from .observable.interval import interval_ + + return interval_(period, scheduler) + + +def merge(*sources: Observable[Any]) -> Observable[Any]: + """Merges all the observable sequences into a single observable sequence. + + .. marble:: + :alt: merge + + ---1---2---3---4-| + -a---b---c---d--| + [ merge() ] + -a-1-b-2-c-3-d-4-| + + Example: + >>> res = reactivex.merge(obs1, obs2, obs3) + + Args: + sources: Sequence of observables. + + Returns: + The observable sequence that merges the elements of the + observable sequences. + """ + from .observable.merge import merge_ + + return merge_(*sources) + + +def never() -> Observable[Any]: + """Returns a non-terminating observable sequence, which can be used + to denote an infinite duration (e.g. when using reactive joins). + + .. marble:: + :alt: never + + [ never() ] + --> + + Returns: + An observable sequence whose observers will never get called. + """ + from .observable.never import never_ + + return never_() + + +def of(*args: _T) -> Observable[_T]: + """This method creates a new observable sequence whose elements are taken + from the arguments. + + .. marble:: + :alt: of + + [ of(1,2,3) ] + ---1--2--3--| + + Note: + This is just a wrapper for + :func:`reactivex.from_iterable(args) ` + + Example: + >>> res = reactivex.of(1,2,3) + + Args: + args: The variable number elements to emit from the observable. + + Returns: + The observable sequence whose elements are pulled from the + given arguments + """ + return from_iterable(args) + + +def on_error_resume_next( + *sources: Union[ + Observable[_T], "Future[_T]", Callable[[Optional[Exception]], Observable[_T]] + ] +) -> Observable[_T]: + """Continues an observable sequence that is terminated normally or + by an exception with the next observable sequence. + + .. marble:: + :alt: on_error_resume_next + + --1--2--* + a--3--4--* + b--6-| + [on_error_resume_next(a,b)] + --1--2----3--4----6-| + + Examples: + >>> res = reactivex.on_error_resume_next(xs, ys, zs) + + Args: + sources: Sequence of sources, each of which is expected to be an + instance of either :class:`Observable` or :class:`Future`. + + Returns: + An observable sequence that concatenates the source sequences, + even if a sequence terminates with an exception. + """ + from .observable.onerrorresumenext import on_error_resume_next_ + + return on_error_resume_next_(*sources) + + +def range( + start: int, + stop: Optional[int] = None, + step: Optional[int] = None, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Observable[int]: + """Generates an observable sequence of integral numbers within a + specified range, using the specified scheduler to send out observer + messages. + + .. marble:: + :alt: range + + [ range(4) ] + --0--1--2--3--| + + Examples: + >>> res = reactivex.range(10) + >>> res = reactivex.range(0, 10) + >>> res = reactivex.range(0, 10, 1) + + Args: + start: The value of the first integer in the sequence. + stop: [Optional] Generate number up to (exclusive) the stop + value. Default is `sys.maxsize`. + step: [Optional] The step to be used (default is 1). + scheduler: [Optional] The scheduler to schedule the values on. + If not specified, the default is to use an instance of + :class:`CurrentThreadScheduler + `. + + Returns: + An observable sequence that contains a range of sequential + integral numbers. + """ + from .observable.range import range_ + + return range_(start, stop, step, scheduler) + + +def return_value( + value: _T, scheduler: Optional[abc.SchedulerBase] = None +) -> Observable[_T]: + """Returns an observable sequence that contains a single element, + using the specified scheduler to send out observer messages. + There is an alias called 'just'. + + .. marble:: + :alt: return_value + + [ return_value(4) ] + -4-| + + Examples: + >>> res = reactivex.return_value(42) + >>> res = reactivex.return_value(42, timeout_scheduler) + + Args: + value: Single element in the resulting observable sequence. + + Returns: + An observable sequence containing the single specified element. + """ + from .observable.returnvalue import return_value_ + + return return_value_(value, scheduler) + + +just = alias("just", "Alias for :func:`reactivex.return_value`.", return_value) + + +def repeat_value(value: _T, repeat_count: Optional[int] = None) -> Observable[_T]: + """Generates an observable sequence that repeats the given element + the specified number of times. + + .. marble:: + :alt: repeat_value + + [ repeat_value(4) ] + -4-4-4-4-> + + Examples: + >>> res = reactivex.repeat_value(42) + >>> res = reactivex.repeat_value(42, 4) + + Args: + value: Element to repeat. + repeat_count: [Optional] Number of times to repeat the element. + If not specified, repeats indefinitely. + + Returns: + An observable sequence that repeats the given element the + specified number of times. + """ + from .observable.repeat import repeat_value_ + + return repeat_value_(value, repeat_count) + + +def start( + func: Callable[[], _T], scheduler: Optional[abc.SchedulerBase] = None +) -> Observable[_T]: + """Invokes the specified function asynchronously on the specified + scheduler, surfacing the result through an observable sequence. + + .. marble:: + :alt: start + + [ start(lambda i: return 4) ] + -4-| + -4-| + + Note: + The function is called immediately, not during the subscription + of the resulting sequence. Multiple subscriptions to the + resulting sequence can observe the function's result. + + Example: + >>> res = reactivex.start(lambda: pprint('hello')) + >>> res = reactivex.start(lambda: pprint('hello'), rx.Scheduler.timeout) + + Args: + func: Function to run asynchronously. + scheduler: [Optional] Scheduler to run the function on. If + not specified, defaults to an instance of + :class:`TimeoutScheduler `. + + Returns: + An observable sequence exposing the function's result value, + or an exception. + """ + from .observable.start import start_ + + return start_(func, scheduler) + + +def start_async(function_async: Callable[[], "Future[_T]"]) -> Observable[_T]: + """Invokes the asynchronous function, surfacing the result through + an observable sequence. + + .. marble:: + :alt: start_async + + [ start_async() ] + ------1| + + Args: + function_async: Asynchronous function which returns a :class:`Future` + to run. + + Returns: + An observable sequence exposing the function's result value, + or an exception. + """ + from .observable.startasync import start_async_ + + return start_async_(function_async) + + +def throw( + exception: Union[str, Exception], scheduler: Optional[abc.SchedulerBase] = None +) -> Observable[Any]: + """Returns an observable sequence that terminates with an exception, + using the specified scheduler to send out the single OnError message. + + .. marble:: + :alt: throw + + [ throw() ] + -* + + Example: + >>> res = reactivex.throw(Exception('Error')) + + Args: + exception: An object used for the sequence's termination. + scheduler: [Optional] Scheduler to schedule the error notification on. + If not specified, the default is to use an instance of + :class:`ImmediateScheduler `. + + Returns: + The observable sequence that terminates exceptionally with the + specified exception object. + """ + from .observable.throw import throw_ + + return throw_(exception, scheduler) + + +def timer( + duetime: typing.AbsoluteOrRelativeTime, + period: Optional[typing.RelativeTime] = None, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Observable[int]: + """Returns an observable sequence that produces a value after + duetime has elapsed and then after each period. + + .. marble:: + :alt: timer + + [ timer(2) ] + --0-| + + Examples: + >>> res = reactivex.timer(datetime(...)) + >>> res = reactivex.timer(datetime(...), 0.1) + >>> res = reactivex.timer(5.0) + >>> res = reactivex.timer(5.0, 1.0) + + Args: + duetime: Absolute (specified as a datetime object) or relative time + (specified as a float denoting seconds or an instance of timedelta) + at which to produce the first value. + period: [Optional] Period to produce subsequent values (specified as a + float denoting seconds or an instance of timedelta). + If not specified, the resulting timer is not recurring. + scheduler: [Optional] Scheduler to run the timer on. If not specified, + the default is to use an instance of + :class:`TimeoutScheduler `. + + Returns: + An observable sequence that produces a value after due time has + elapsed and then each period. + """ + from .observable.timer import timer_ + + return timer_(duetime, period, scheduler) + + +def to_async( + func: Callable[..., _T], scheduler: Optional[abc.SchedulerBase] = None +) -> Callable[..., Observable[_T]]: + """Converts the function into an asynchronous function. Each + invocation of the resulting asynchronous function causes an + invocation of the original synchronous function on the specified + scheduler. + + .. marble:: + :alt: to_async + + [ to_async()() ] + ------1| + + Examples: + >>> res = reactivex.to_async(lambda x, y: x + y)(4, 3) + >>> res = reactivex.to_async(lambda x, y: x + y, Scheduler.timeout)(4, 3) + >>> res = reactivex.to_async(lambda x: log.debug(x), Scheduler.timeout)('hello') + + Args: + func: Function to convert to an asynchronous function. + scheduler: [Optional] Scheduler to run the function on. If not + specified, defaults to an instance of + :class:`TimeoutScheduler `. + + Returns: + Asynchronous function. + """ + from .observable.toasync import to_async_ + + return to_async_(func, scheduler) + + +def using( + resource_factory: Callable[[], abc.DisposableBase], + observable_factory: Callable[[abc.DisposableBase], Observable[_T]], +) -> Observable[_T]: + """Constructs an observable sequence that depends on a resource + object, whose lifetime is tied to the resulting observable + sequence's lifetime. + + Example: + >>> res = reactivex.using(lambda: AsyncSubject(), lambda: s: s) + + Args: + resource_factory: Factory function to obtain a resource object. + observable_factory: Factory function to obtain an observable + sequence that depends on the obtained resource. + + Returns: + An observable sequence whose lifetime controls the lifetime + of the dependent resource object. + """ + from .observable.using import using_ + + return using_(resource_factory, observable_factory) + + +def with_latest_from(*sources: Observable[Any]) -> Observable[Tuple[Any, ...]]: + """Merges the specified observable sequences into one observable + sequence by creating a :class:`tuple` only when the first + observable sequence produces an element. + + .. marble:: + :alt: with_latest_from + + ---1---2---3----4-| + --a-----b----c-d----| + [with_latest_from() ] + ---1,a-2,a-3,b--4,d-| + + Examples: + >>> obs = rx.with_latest_from(obs1) + >>> obs = rx.with_latest_from([obs1, obs2, obs3]) + + Args: + sources: Sequence of observables. + + Returns: + An observable sequence containing the result of combining + elements of the sources into a :class:`tuple`. + """ + from .observable.withlatestfrom import with_latest_from_ + + return with_latest_from_(*sources) + + +def zip(*args: Observable[Any]) -> Observable[Tuple[Any, ...]]: + """Merges the specified observable sequences into one observable + sequence by creating a :class:`tuple` whenever all of the + observable sequences have produced an element at a corresponding + index. + + .. marble:: + :alt: zip + + --1--2---3-----4---| + -a----b----c-d------| + [ zip() ] + --1,a-2,b--3,c-4,d-| + + Example: + >>> res = rx.zip(obs1, obs2) + + Args: + args: Observable sources to zip. + + Returns: + An observable sequence containing the result of combining + elements of the sources as a :class:`tuple`. + """ + from .observable.zip import zip_ + + return zip_(*args) + + +__all__ = [ + "abc", + "amb", + "case", + "catch", + "catch_with_iterable", + "create", + "combine_latest", + "compose", + "concat", + "concat_with_iterable", + "ConnectableObservable", + "defer", + "empty", + "fork_join", + "from_callable", + "from_callback", + "from_future", + "from_iterable", + "GroupedObservable", + "never", + "Notification", + "on_error_resume_next", + "of", + "Observable", + "Observer", + "return_value", + "pipe", + "range", + "repeat_value", + "Subject", + "start", + "start_async", + "throw", + "timer", + "typing", + "to_async", + "using", + "with_latest_from", + "zip", + "__version__", +] diff --git a/frogpilot/third_party/reactivex/_version.py b/frogpilot/third_party/reactivex/_version.py new file mode 100644 index 000000000..4b56dfc53 --- /dev/null +++ b/frogpilot/third_party/reactivex/_version.py @@ -0,0 +1 @@ +__version__ = "4.0.4" diff --git a/frogpilot/third_party/reactivex/abc/__init__.py b/frogpilot/third_party/reactivex/abc/__init__.py new file mode 100644 index 000000000..954d5d761 --- /dev/null +++ b/frogpilot/third_party/reactivex/abc/__init__.py @@ -0,0 +1,22 @@ +from .disposable import DisposableBase +from .observable import ObservableBase, Subscription +from .observer import ObserverBase, OnCompleted, OnError, OnNext +from .periodicscheduler import PeriodicSchedulerBase +from .scheduler import ScheduledAction, SchedulerBase +from .startable import StartableBase +from .subject import SubjectBase + +__all__ = [ + "DisposableBase", + "ObserverBase", + "ObservableBase", + "OnCompleted", + "OnError", + "OnNext", + "SchedulerBase", + "PeriodicSchedulerBase", + "SubjectBase", + "Subscription", + "ScheduledAction", + "StartableBase", +] diff --git a/frogpilot/third_party/reactivex/abc/disposable.py b/frogpilot/third_party/reactivex/abc/disposable.py new file mode 100644 index 000000000..56ffa84af --- /dev/null +++ b/frogpilot/third_party/reactivex/abc/disposable.py @@ -0,0 +1,34 @@ +from __future__ import annotations + +from abc import ABC, abstractmethod +from types import TracebackType +from typing import Optional, Type + + +class DisposableBase(ABC): + """Disposable abstract base class.""" + + __slots__ = () + + @abstractmethod + def dispose(self) -> None: + """Dispose the object: stop whatever we're doing and release all of the + resources we might be using. + """ + raise NotImplementedError + + def __enter__(self) -> DisposableBase: + """Context management protocol.""" + return self + + def __exit__( + self, + exctype: Optional[Type[BaseException]], + excinst: Optional[BaseException], + exctb: Optional[TracebackType], + ) -> None: + """Context management protocol.""" + self.dispose() + + +__all__ = ["DisposableBase"] diff --git a/frogpilot/third_party/reactivex/abc/observable.py b/frogpilot/third_party/reactivex/abc/observable.py new file mode 100644 index 000000000..e15657957 --- /dev/null +++ b/frogpilot/third_party/reactivex/abc/observable.py @@ -0,0 +1,45 @@ +from abc import ABC, abstractmethod +from typing import Callable, Generic, Optional, TypeVar, Union + +from .disposable import DisposableBase +from .observer import ObserverBase, OnCompleted, OnError, OnNext +from .scheduler import SchedulerBase + +_T_out = TypeVar("_T_out", covariant=True) + + +class ObservableBase(Generic[_T_out], ABC): + """Observable abstract base class. + + Represents a push-style collection.""" + + __slots__ = () + + @abstractmethod + def subscribe( + self, + on_next: Optional[Union[OnNext[_T_out], ObserverBase[_T_out]]] = None, + on_error: Optional[OnError] = None, + on_completed: Optional[OnCompleted] = None, + *, + scheduler: Optional[SchedulerBase] = None, + ) -> DisposableBase: + """Subscribe an observer to the observable sequence. + + Args: + observer: [Optional] The object that is to receive + notifications. + scheduler: [Optional] The default scheduler to use for this + subscription. + + Returns: + Disposable object representing an observer's subscription + to the observable sequence. + """ + + raise NotImplementedError + + +Subscription = Callable[[ObserverBase[_T_out], Optional[SchedulerBase]], DisposableBase] + +__all__ = ["ObservableBase", "Subscription"] diff --git a/frogpilot/third_party/reactivex/abc/observer.py b/frogpilot/third_party/reactivex/abc/observer.py new file mode 100644 index 000000000..31e484079 --- /dev/null +++ b/frogpilot/third_party/reactivex/abc/observer.py @@ -0,0 +1,48 @@ +from abc import ABC, abstractmethod +from typing import Callable, Generic, TypeVar + +_T = TypeVar("_T") +_T_in = TypeVar("_T_in", contravariant=True) + +OnNext = Callable[[_T], None] +OnError = Callable[[Exception], None] +OnCompleted = Callable[[], None] + + +class ObserverBase(Generic[_T_in], ABC): + """Observer abstract base class + + An Observer is the entity that receives all emissions of a + subscribed Observable. + """ + + __slots__ = () + + @abstractmethod + def on_next(self, value: _T_in) -> None: + """Notifies the observer of a new element in the sequence. + + Args: + value: The received element. + """ + + raise NotImplementedError + + @abstractmethod + def on_error(self, error: Exception) -> None: + """Notifies the observer that an exception has occurred. + + Args: + error: The error that has occurred. + """ + + raise NotImplementedError + + @abstractmethod + def on_completed(self) -> None: + """Notifies the observer of the end of the sequence.""" + + raise NotImplementedError + + +__all__ = ["ObserverBase", "OnNext", "OnError", "OnCompleted"] diff --git a/frogpilot/third_party/reactivex/abc/periodicscheduler.py b/frogpilot/third_party/reactivex/abc/periodicscheduler.py new file mode 100644 index 000000000..5d19bc7de --- /dev/null +++ b/frogpilot/third_party/reactivex/abc/periodicscheduler.py @@ -0,0 +1,49 @@ +from abc import ABC, abstractmethod +from typing import Callable, Optional, TypeVar, Union + +from .disposable import DisposableBase +from .scheduler import RelativeTime, ScheduledAction + +_TState = TypeVar("_TState") # Can be anything + +ScheduledPeriodicAction = Callable[[Optional[_TState]], Optional[_TState]] +ScheduledSingleOrPeriodicAction = Union[ + ScheduledAction[_TState], ScheduledPeriodicAction[_TState] +] + + +class PeriodicSchedulerBase(ABC): + """PeriodicScheduler abstract base class.""" + + __slots__ = () + + @abstractmethod + def schedule_periodic( + self, + period: RelativeTime, + action: ScheduledPeriodicAction[_TState], + state: Optional[_TState] = None, + ) -> DisposableBase: + """Schedules a periodic piece of work. + + Args: + period: Period in seconds or timedelta for running the + work periodically. + action: Action to be executed. + state: [Optional] Initial state passed to the action upon + the first iteration. + + Returns: + The disposable object used to cancel the scheduled + recurring action (best effort). + """ + + return NotImplemented + + +__all__ = [ + "PeriodicSchedulerBase", + "ScheduledPeriodicAction", + "ScheduledSingleOrPeriodicAction", + "RelativeTime", +] diff --git a/frogpilot/third_party/reactivex/abc/scheduler.py b/frogpilot/third_party/reactivex/abc/scheduler.py new file mode 100644 index 000000000..14f2ef904 --- /dev/null +++ b/frogpilot/third_party/reactivex/abc/scheduler.py @@ -0,0 +1,152 @@ +from abc import ABC, abstractmethod +from datetime import datetime, timedelta +from typing import Callable, Optional, TypeVar, Union + +from .disposable import DisposableBase + +_TState = TypeVar("_TState") # Can be anything + +AbsoluteTime = Union[datetime, float] +RelativeTime = Union[timedelta, float] +AbsoluteOrRelativeTime = Union[datetime, timedelta, float] +ScheduledAction = Callable[ + ["SchedulerBase", Optional[_TState]], + Optional[DisposableBase], +] + + +class SchedulerBase(ABC): + """Scheduler abstract base class.""" + + __slots__ = () + + @property + @abstractmethod + def now(self) -> datetime: + """Represents a notion of time for this scheduler. Tasks being + scheduled on a scheduler will adhere to the time denoted by this + property. + + Returns: + The scheduler's current time, as a datetime instance. + """ + + return NotImplemented + + @abstractmethod + def schedule( + self, action: ScheduledAction[_TState], state: Optional[_TState] = None + ) -> DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + return NotImplemented + + @abstractmethod + def schedule_relative( + self, + duetime: RelativeTime, + action: ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> DisposableBase: + """Schedules an action to be executed after duetime. + + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + return NotImplemented + + @abstractmethod + def schedule_absolute( + self, + duetime: AbsoluteTime, + action: ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + return NotImplemented + + @classmethod + @abstractmethod + def to_seconds(cls, value: AbsoluteOrRelativeTime) -> float: + """Converts time value to seconds. This method handles both absolute + (datetime) and relative (timedelta) values. If the argument is already + a float, it is simply returned unchanged. + + Args: + value: the time value to convert to seconds. + + Returns: + The value converted to seconds. + """ + + return NotImplemented + + @classmethod + @abstractmethod + def to_datetime(cls, value: AbsoluteOrRelativeTime) -> datetime: + """Converts time value to datetime. This method handles both absolute + (float) and relative (timedelta) values. If the argument is already + a datetime, it is simply returned unchanged. + + Args: + value: the time value to convert to datetime. + + Returns: + The value converted to datetime. + """ + + return NotImplemented + + @classmethod + @abstractmethod + def to_timedelta(cls, value: AbsoluteOrRelativeTime) -> timedelta: + """Converts time value to timedelta. This method handles both absolute + (datetime) and relative (float) values. If the argument is already + a timedelta, it is simply returned unchanged. If the argument is an + absolute time, the result value will be the timedelta since the epoch, + January 1st, 1970, 00:00:00. + + Args: + value: the time value to convert to timedelta. + + Returns: + The value converted to timedelta. + """ + + return NotImplemented + + +__all__ = [ + "SchedulerBase", + "AbsoluteTime", + "RelativeTime", + "AbsoluteOrRelativeTime", + "ScheduledAction", +] diff --git a/frogpilot/third_party/reactivex/abc/startable.py b/frogpilot/third_party/reactivex/abc/startable.py new file mode 100644 index 000000000..031bbf1a0 --- /dev/null +++ b/frogpilot/third_party/reactivex/abc/startable.py @@ -0,0 +1,14 @@ +from abc import ABC, abstractmethod + + +class StartableBase(ABC): + """Abstract base class for Thread- and Process-like objects.""" + + __slots__ = () + + @abstractmethod + def start(self) -> None: + raise NotImplementedError + + +__all__ = ["StartableBase"] diff --git a/frogpilot/third_party/reactivex/abc/subject.py b/frogpilot/third_party/reactivex/abc/subject.py new file mode 100644 index 000000000..9ffef35e4 --- /dev/null +++ b/frogpilot/third_party/reactivex/abc/subject.py @@ -0,0 +1,72 @@ +from abc import abstractmethod +from typing import Optional, TypeVar, Union + +from .disposable import DisposableBase +from .observable import ObservableBase +from .observer import ObserverBase, OnCompleted, OnError, OnNext +from .scheduler import SchedulerBase + +_T = TypeVar("_T") + + +class SubjectBase(ObserverBase[_T], ObservableBase[_T]): + """Subject abstract base class. + + Represents an object that is both an observable sequence as well + as an observer. + """ + + __slots__ = () + + @abstractmethod + def subscribe( + self, + on_next: Optional[Union[OnNext[_T], ObserverBase[_T]]] = None, + on_error: Optional[OnError] = None, + on_completed: Optional[OnCompleted] = None, + *, + scheduler: Optional[SchedulerBase] = None, + ) -> DisposableBase: + """Subscribe an observer to the observable sequence. + + Args: + observer: [Optional] The object that is to receive + notifications. + scheduler: [Optional] The default scheduler to use for this + subscription. + + Returns: + Disposable object representing an observer's subscription + to the observable sequence. + """ + + raise NotImplementedError + + @abstractmethod + def on_next(self, value: _T) -> None: + """Notifies the observer of a new element in the sequence. + + Args: + value: The received element. + """ + + raise NotImplementedError + + @abstractmethod + def on_error(self, error: Exception) -> None: + """Notifies the observer that an exception has occurred. + + Args: + error: The error that has occurred. + """ + + raise NotImplementedError + + @abstractmethod + def on_completed(self) -> None: + """Notifies the observer of the end of the sequence.""" + + raise NotImplementedError + + +__all__ = ["SubjectBase"] diff --git a/frogpilot/third_party/reactivex/disposable/__init__.py b/frogpilot/third_party/reactivex/disposable/__init__.py new file mode 100644 index 000000000..a1cbfc758 --- /dev/null +++ b/frogpilot/third_party/reactivex/disposable/__init__.py @@ -0,0 +1,19 @@ +from .booleandisposable import BooleanDisposable +from .compositedisposable import CompositeDisposable +from .disposable import Disposable +from .multipleassignmentdisposable import MultipleAssignmentDisposable +from .refcountdisposable import RefCountDisposable +from .scheduleddisposable import ScheduledDisposable +from .serialdisposable import SerialDisposable +from .singleassignmentdisposable import SingleAssignmentDisposable + +__all__ = [ + "BooleanDisposable", + "CompositeDisposable", + "Disposable", + "MultipleAssignmentDisposable", + "RefCountDisposable", + "ScheduledDisposable", + "SerialDisposable", + "SingleAssignmentDisposable", +] diff --git a/frogpilot/third_party/reactivex/disposable/booleandisposable.py b/frogpilot/third_party/reactivex/disposable/booleandisposable.py new file mode 100644 index 000000000..578da2e91 --- /dev/null +++ b/frogpilot/third_party/reactivex/disposable/booleandisposable.py @@ -0,0 +1,20 @@ +from threading import RLock + +from reactivex.abc import DisposableBase + + +class BooleanDisposable(DisposableBase): + """Represents a Disposable that can be checked for status.""" + + def __init__(self) -> None: + """Initializes a new instance of the BooleanDisposable class.""" + + self.is_disposed = False + self.lock = RLock() + + super().__init__() + + def dispose(self) -> None: + """Sets the status to disposed""" + + self.is_disposed = True diff --git a/frogpilot/third_party/reactivex/disposable/compositedisposable.py b/frogpilot/third_party/reactivex/disposable/compositedisposable.py new file mode 100644 index 000000000..38d8ac5fe --- /dev/null +++ b/frogpilot/third_party/reactivex/disposable/compositedisposable.py @@ -0,0 +1,103 @@ +from threading import RLock +from typing import Any, List + +from reactivex import abc + + +class CompositeDisposable(abc.DisposableBase): + """Represents a group of disposable resources that are disposed + together""" + + def __init__(self, *args: Any): + if args and isinstance(args[0], list): + self.disposable: List[abc.DisposableBase] = args[0] + else: + self.disposable = list(args) + + self.is_disposed = False + self.lock = RLock() + super(CompositeDisposable, self).__init__() + + def add(self, item: abc.DisposableBase) -> None: + """Adds a disposable to the CompositeDisposable or disposes the + disposable if the CompositeDisposable is disposed + + Args: + item: Disposable to add.""" + + should_dispose = False + with self.lock: + if self.is_disposed: + should_dispose = True + else: + self.disposable.append(item) + + if should_dispose: + item.dispose() + + def remove(self, item: abc.DisposableBase) -> bool: + """Removes and disposes the first occurrence of a disposable + from the CompositeDisposable.""" + + if self.is_disposed: + return False + + should_dispose = False + with self.lock: + if item in self.disposable: + self.disposable.remove(item) + should_dispose = True + + if should_dispose: + item.dispose() + + return should_dispose + + def dispose(self) -> None: + """Disposes all disposable in the group and removes them from + the group.""" + + if self.is_disposed: + return + + with self.lock: + self.is_disposed = True + current_disposable = self.disposable + self.disposable = [] + + for disp in current_disposable: + disp.dispose() + + def clear(self) -> None: + """Removes and disposes all disposable from the + CompositeDisposable, but does not dispose the + CompositeDisposable.""" + + with self.lock: + current_disposable = self.disposable + self.disposable = [] + + for disposable in current_disposable: + disposable.dispose() + + def contains(self, item: abc.DisposableBase) -> bool: + """Determines whether the CompositeDisposable contains a specific + disposable. + + Args: + item: Disposable to search for + + Returns: + True if the disposable was found; otherwise, False""" + + return item in self.disposable + + def to_list(self) -> List[abc.DisposableBase]: + return self.disposable[:] + + def __len__(self) -> int: + return len(self.disposable) + + @property + def length(self) -> int: + return len(self.disposable) diff --git a/frogpilot/third_party/reactivex/disposable/disposable.py b/frogpilot/third_party/reactivex/disposable/disposable.py new file mode 100644 index 000000000..625e2ee0a --- /dev/null +++ b/frogpilot/third_party/reactivex/disposable/disposable.py @@ -0,0 +1,43 @@ +from threading import RLock +from typing import Optional + +from reactivex import typing +from reactivex.abc import DisposableBase +from reactivex.internal import noop +from reactivex.typing import Action + + +class Disposable(DisposableBase): + """Main disposable class""" + + def __init__(self, action: Optional[typing.Action] = None) -> None: + """Creates a disposable object that invokes the specified + action when disposed. + + Args: + action: Action to run during the first call to dispose. + The action is guaranteed to be run at most once. + + Returns: + The disposable object that runs the given action upon + disposal. + """ + + self.is_disposed = False + self.action: Action = action or noop + + self.lock = RLock() + + super().__init__() + + def dispose(self) -> None: + """Performs the task of cleaning up resources.""" + + dispose = False + with self.lock: + if not self.is_disposed: + dispose = True + self.is_disposed = True + + if dispose: + self.action() diff --git a/frogpilot/third_party/reactivex/disposable/multipleassignmentdisposable.py b/frogpilot/third_party/reactivex/disposable/multipleassignmentdisposable.py new file mode 100644 index 000000000..14ead482e --- /dev/null +++ b/frogpilot/third_party/reactivex/disposable/multipleassignmentdisposable.py @@ -0,0 +1,49 @@ +from threading import RLock +from typing import Optional + +from reactivex.abc import DisposableBase + + +class MultipleAssignmentDisposable(DisposableBase): + """Represents a disposable resource whose underlying disposable + resource can be replaced by another disposable resource.""" + + def __init__(self) -> None: + self.current: Optional[DisposableBase] = None + self.is_disposed = False + self.lock = RLock() + + super().__init__() + + def get_disposable(self) -> Optional[DisposableBase]: + return self.current + + def set_disposable(self, value: DisposableBase) -> None: + """If the MultipleAssignmentDisposable has already been + disposed, assignment to this property causes immediate disposal + of the given disposable object.""" + + with self.lock: + should_dispose = self.is_disposed + if not should_dispose: + self.current = value + + if should_dispose and value is not None: + value.dispose() + + disposable = property(get_disposable, set_disposable) + + def dispose(self) -> None: + """Disposes the underlying disposable as well as all future + replacements.""" + + old = None + + with self.lock: + if not self.is_disposed: + self.is_disposed = True + old = self.current + self.current = None + + if old is not None: + old.dispose() diff --git a/frogpilot/third_party/reactivex/disposable/refcountdisposable.py b/frogpilot/third_party/reactivex/disposable/refcountdisposable.py new file mode 100644 index 000000000..d86dede99 --- /dev/null +++ b/frogpilot/third_party/reactivex/disposable/refcountdisposable.py @@ -0,0 +1,82 @@ +from threading import RLock +from typing import Optional + +from reactivex.abc import DisposableBase + +from .disposable import Disposable + + +class RefCountDisposable(DisposableBase): + """Represents a disposable resource that only disposes its underlying + disposable resource when all dependent disposable objects have been + disposed.""" + + class InnerDisposable(DisposableBase): + def __init__(self, parent: "RefCountDisposable") -> None: + self.parent: Optional[RefCountDisposable] = parent + self.is_disposed = False + self.lock = RLock() + + def dispose(self) -> None: + with self.lock: + parent = self.parent + self.parent = None + + if parent is not None: + parent.release() + + def __init__(self, disposable: DisposableBase) -> None: + """Initializes a new instance of the RefCountDisposable class with the + specified disposable.""" + + self.underlying_disposable = disposable + self.is_primary_disposed = False + self.is_disposed = False + self.lock = RLock() + self.count = 0 + + super().__init__() + + def dispose(self) -> None: + """Disposes the underlying disposable only when all dependent + disposable have been disposed.""" + + if self.is_disposed: + return + + underlying_disposable = None + with self.lock: + if not self.is_primary_disposed: + self.is_primary_disposed = True + if not self.count: + self.is_disposed = True + underlying_disposable = self.underlying_disposable + + if underlying_disposable is not None: + underlying_disposable.dispose() + + def release(self) -> None: + if self.is_disposed: + return + + should_dispose = False + with self.lock: + self.count -= 1 + if not self.count and self.is_primary_disposed: + self.is_disposed = True + should_dispose = True + + if should_dispose: + self.underlying_disposable.dispose() + + @property + def disposable(self) -> DisposableBase: + """Returns a dependent disposable that when disposed decreases the + refcount on the underlying disposable.""" + + with self.lock: + if self.is_disposed: + return Disposable() + + self.count += 1 + return self.InnerDisposable(self) diff --git a/frogpilot/third_party/reactivex/disposable/scheduleddisposable.py b/frogpilot/third_party/reactivex/disposable/scheduleddisposable.py new file mode 100644 index 000000000..067d86676 --- /dev/null +++ b/frogpilot/third_party/reactivex/disposable/scheduleddisposable.py @@ -0,0 +1,38 @@ +from threading import RLock +from typing import Any + +from reactivex import abc + +from .singleassignmentdisposable import SingleAssignmentDisposable + + +class ScheduledDisposable(abc.DisposableBase): + """Represents a disposable resource whose disposal invocation will + be scheduled on the specified Scheduler""" + + def __init__( + self, scheduler: abc.SchedulerBase, disposable: abc.DisposableBase + ) -> None: + """Initializes a new instance of the ScheduledDisposable class + that uses a Scheduler on which to dispose the disposable.""" + + self.scheduler = scheduler + self.disposable = SingleAssignmentDisposable() + self.disposable.disposable = disposable + self.lock = RLock() + + super().__init__() + + @property + def is_disposed(self) -> bool: + return self.disposable.is_disposed + + def dispose(self) -> None: + """Disposes the wrapped disposable on the provided scheduler.""" + + def action(scheduler: abc.SchedulerBase, state: Any) -> None: + """Scheduled dispose action""" + + self.disposable.dispose() + + self.scheduler.schedule(action) diff --git a/frogpilot/third_party/reactivex/disposable/serialdisposable.py b/frogpilot/third_party/reactivex/disposable/serialdisposable.py new file mode 100644 index 000000000..bb51121df --- /dev/null +++ b/frogpilot/third_party/reactivex/disposable/serialdisposable.py @@ -0,0 +1,58 @@ +from threading import RLock +from typing import Optional + +from reactivex import abc + + +class SerialDisposable(abc.DisposableBase): + """Represents a disposable resource whose underlying disposable + resource can be replaced by another disposable resource, causing + automatic disposal of the previous underlying disposable resource. + """ + + def __init__(self) -> None: + self.current: Optional[abc.DisposableBase] = None + self.is_disposed = False + self.lock = RLock() + + super().__init__() + + def get_disposable(self) -> Optional[abc.DisposableBase]: + return self.current + + def set_disposable(self, value: abc.DisposableBase) -> None: + """If the SerialDisposable has already been disposed, assignment + to this property causes immediate disposal of the given + disposable object. Assigning this property disposes the previous + disposable object.""" + + old: Optional[abc.DisposableBase] = None + + with self.lock: + should_dispose = self.is_disposed + if not should_dispose: + old = self.current + self.current = value + + if old is not None: + old.dispose() + + if should_dispose and value is not None: + value.dispose() + + disposable = property(get_disposable, set_disposable) + + def dispose(self) -> None: + """Disposes the underlying disposable as well as all future + replacements.""" + + old: Optional[abc.DisposableBase] = None + + with self.lock: + if not self.is_disposed: + self.is_disposed = True + old = self.current + self.current = None + + if old is not None: + old.dispose() diff --git a/frogpilot/third_party/reactivex/disposable/singleassignmentdisposable.py b/frogpilot/third_party/reactivex/disposable/singleassignmentdisposable.py new file mode 100644 index 000000000..a1c84039a --- /dev/null +++ b/frogpilot/third_party/reactivex/disposable/singleassignmentdisposable.py @@ -0,0 +1,53 @@ +from threading import RLock +from typing import Optional + +from reactivex.abc import DisposableBase + + +class SingleAssignmentDisposable(DisposableBase): + """Single assignment disposable. + + Represents a disposable resource which only allows a single + assignment of its underlying disposable resource. If an underlying + disposable resource has already been set, future attempts to set the + underlying disposable resource will throw an Error.""" + + def __init__(self) -> None: + """Initializes a new instance of the SingleAssignmentDisposable + class. + """ + self.is_disposed: bool = False + self.current: Optional[DisposableBase] = None + self.lock = RLock() + + super().__init__() + + def get_disposable(self) -> Optional[DisposableBase]: + return self.current + + def set_disposable(self, value: DisposableBase) -> None: + if self.current: + raise Exception("Disposable has already been assigned") + + with self.lock: + should_dispose = self.is_disposed + if not should_dispose: + self.current = value + + if self.is_disposed and value: + value.dispose() + + disposable = property(get_disposable, set_disposable) + + def dispose(self) -> None: + """Sets the status to disposed""" + old: Optional[DisposableBase] = None + + with self.lock: + if not self.is_disposed: + self.is_disposed = True + old = self.current + self.current = None + + if old is not None: + old.dispose() diff --git a/frogpilot/third_party/reactivex/internal/__init__.py b/frogpilot/third_party/reactivex/internal/__init__.py new file mode 100644 index 000000000..029864297 --- /dev/null +++ b/frogpilot/third_party/reactivex/internal/__init__.py @@ -0,0 +1,29 @@ +from .basic import default_comparer, default_error, noop +from .concurrency import default_thread_factory, synchronized +from .constants import DELTA_ZERO, UTC_ZERO +from .exceptions import ( + ArgumentOutOfRangeException, + DisposedException, + SequenceContainsNoElementsError, +) +from .priorityqueue import PriorityQueue +from .utils import NotSet, add_ref, alias, infinite + +__all__ = [ + "add_ref", + "alias", + "ArgumentOutOfRangeException", + "DisposedException", + "default_comparer", + "default_error", + "infinite", + "noop", + "NotSet", + "SequenceContainsNoElementsError", + "concurrency", + "DELTA_ZERO", + "UTC_ZERO", + "synchronized", + "default_thread_factory", + "PriorityQueue", +] diff --git a/frogpilot/third_party/reactivex/internal/basic.py b/frogpilot/third_party/reactivex/internal/basic.py new file mode 100644 index 000000000..bb59e8f9e --- /dev/null +++ b/frogpilot/third_party/reactivex/internal/basic.py @@ -0,0 +1,36 @@ +from datetime import datetime +from typing import Any, NoReturn, TypeVar, Union + +_T = TypeVar("_T") + + +def noop(*args: Any, **kw: Any) -> None: + """No operation. Returns nothing""" + + +def identity(x: _T) -> _T: + """Returns argument x""" + return x + + +def default_now() -> datetime: + return datetime.utcnow() + + +def default_comparer(x: _T, y: _T) -> bool: + return x == y + + +def default_sub_comparer(x: Any, y: Any) -> Any: + return x - y + + +def default_key_serializer(x: Any) -> str: + return str(x) + + +def default_error(err: Union[Exception, str]) -> NoReturn: + if isinstance(err, BaseException): + raise err + + raise Exception(err) diff --git a/frogpilot/third_party/reactivex/internal/concurrency.py b/frogpilot/third_party/reactivex/internal/concurrency.py new file mode 100644 index 000000000..12db952ff --- /dev/null +++ b/frogpilot/third_party/reactivex/internal/concurrency.py @@ -0,0 +1,26 @@ +from threading import RLock, Thread +from typing import Any, Callable, TypeVar + +from typing_extensions import ParamSpec + +from reactivex.typing import StartableTarget + +_T = TypeVar("_T") +_P = ParamSpec("_P") + + +def default_thread_factory(target: StartableTarget) -> Thread: + return Thread(target=target, daemon=True) + + +def synchronized(lock: RLock) -> Callable[[Callable[_P, _T]], Callable[_P, _T]]: + """A decorator for synchronizing access to a given function.""" + + def wrapper(fn: Callable[_P, _T]) -> Callable[_P, _T]: + def inner(*args: _P.args, **kw: _P.kwargs) -> Any: + with lock: + return fn(*args, **kw) + + return inner + + return wrapper diff --git a/frogpilot/third_party/reactivex/internal/constants.py b/frogpilot/third_party/reactivex/internal/constants.py new file mode 100644 index 000000000..1062d06ab --- /dev/null +++ b/frogpilot/third_party/reactivex/internal/constants.py @@ -0,0 +1,4 @@ +from datetime import datetime, timedelta + +DELTA_ZERO = timedelta(0) +UTC_ZERO = datetime.utcfromtimestamp(0) diff --git a/frogpilot/third_party/reactivex/internal/exceptions.py b/frogpilot/third_party/reactivex/internal/exceptions.py new file mode 100644 index 000000000..53b18a856 --- /dev/null +++ b/frogpilot/third_party/reactivex/internal/exceptions.py @@ -0,0 +1,36 @@ +# Rx Exceptions + + +from typing import Optional + + +class SequenceContainsNoElementsError(Exception): + def __init__(self, msg: Optional[str] = None): + super().__init__(msg or "Sequence contains no elements") + + +class ArgumentOutOfRangeException(ValueError): + def __init__(self, msg: Optional[str] = None): + super(ArgumentOutOfRangeException, self).__init__( + msg or "Argument out of range" + ) + + +class DisposedException(Exception): + def __init__(self, msg: Optional[str] = None): + super().__init__(msg or "Object has been disposed") + + +class ReEntracyException(Exception): + def __init__(self, msg: Optional[str] = None): + super().__init__(msg or "Re-entrancy detected") + + +class CompletedException(Exception): + def __init__(self, msg: Optional[str] = None): + super().__init__(msg or "Observer completed") + + +class WouldBlockException(Exception): + def __init__(self, msg: Optional[str] = None): + super().__init__(msg or "Would block") diff --git a/frogpilot/third_party/reactivex/internal/priorityqueue.py b/frogpilot/third_party/reactivex/internal/priorityqueue.py new file mode 100644 index 000000000..83a4c8ac2 --- /dev/null +++ b/frogpilot/third_party/reactivex/internal/priorityqueue.py @@ -0,0 +1,54 @@ +import heapq +from sys import maxsize +from typing import Generic, List, Tuple, TypeVar + +_T1 = TypeVar("_T1") + + +class PriorityQueue(Generic[_T1]): + """Priority queue for scheduling. Note that methods aren't thread-safe.""" + + MIN_COUNT = ~maxsize + + def __init__(self) -> None: + self.items: List[Tuple[_T1, int]] = [] + self.count = PriorityQueue.MIN_COUNT # Monotonic increasing for sort stability + + def __len__(self) -> int: + """Returns length of queue""" + + return len(self.items) + + def peek(self) -> _T1: + """Returns first item in queue without removing it""" + return self.items[0][0] + + def dequeue(self) -> _T1: + """Returns and removes item with lowest priority from queue""" + + item: _T1 = heapq.heappop(self.items)[0] + if not self.items: + self.count = PriorityQueue.MIN_COUNT + return item + + def enqueue(self, item: _T1) -> None: + """Adds item to queue""" + + heapq.heappush(self.items, (item, self.count)) + self.count += 1 + + def remove(self, item: _T1) -> bool: + """Remove given item from queue""" + + for index, _item in enumerate(self.items): + if _item[0] == item: + self.items.pop(index) + heapq.heapify(self.items) + return True + + return False + + def clear(self) -> None: + """Remove all items from the queue.""" + self.items = [] + self.count = PriorityQueue.MIN_COUNT diff --git a/frogpilot/third_party/reactivex/internal/utils.py b/frogpilot/third_party/reactivex/internal/utils.py new file mode 100644 index 000000000..109717d84 --- /dev/null +++ b/frogpilot/third_party/reactivex/internal/utils.py @@ -0,0 +1,61 @@ +from functools import update_wrapper +from types import FunctionType +from typing import TYPE_CHECKING, Any, Callable, Iterable, Optional, TypeVar, cast + +from typing_extensions import ParamSpec + +from reactivex import abc +from reactivex.disposable import CompositeDisposable +from reactivex.disposable.refcountdisposable import RefCountDisposable + +if TYPE_CHECKING: + from reactivex import Observable + +_T = TypeVar("_T") +_P = ParamSpec("_P") + + +def add_ref(xs: "Observable[_T]", r: RefCountDisposable) -> "Observable[_T]": + from reactivex import Observable + + def subscribe( + observer: abc.ObserverBase[Any], scheduler: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + return CompositeDisposable(r.disposable, xs.subscribe(observer)) + + return Observable(subscribe) + + +def infinite() -> Iterable[int]: + n = 0 + while True: + yield n + n += 1 + + +def alias(name: str, doc: str, fun: Callable[_P, _T]) -> Callable[_P, _T]: + # Adapted from + # https://stackoverflow.com/questions/13503079/how-to-create-a-copy-of-a-python-function# + # See also help(type(lambda: 0)) + _fun = cast(FunctionType, fun) + args = (_fun.__code__, _fun.__globals__) + kwargs = {"name": name, "argdefs": _fun.__defaults__, "closure": _fun.__closure__} + alias_ = FunctionType(*args, **kwargs) # type: ignore + alias_ = update_wrapper(alias_, _fun) + alias_.__kwdefaults__ = _fun.__kwdefaults__ + alias_.__doc__ = doc + alias_.__annotations__ = _fun.__annotations__ + return cast(Callable[_P, _T], alias_) + + +class NotSet: + """Sentinel value.""" + + def __eq__(self, other: Any) -> bool: + return self is other + + def __repr__(self) -> str: + return "NotSet" + + +__all__ = ["add_ref", "infinite", "alias", "NotSet"] diff --git a/frogpilot/third_party/reactivex/notification.py b/frogpilot/third_party/reactivex/notification.py new file mode 100644 index 000000000..10627a8cf --- /dev/null +++ b/frogpilot/third_party/reactivex/notification.py @@ -0,0 +1,205 @@ +from abc import abstractmethod +from typing import Any, Callable, Generic, Optional, TypeVar, Union + +from reactivex import abc, typing +from reactivex.scheduler import ImmediateScheduler + +from .observable import Observable +from .observer import Observer + +_T = TypeVar("_T") + + +class Notification(Generic[_T]): + """Represents a notification to an observer.""" + + def __init__(self) -> None: + """Default constructor used by derived types.""" + self.has_value = False + self.value: Optional[_T] = None + self.kind: str = "" + + def accept( + self, + on_next: Union[typing.OnNext[_T], abc.ObserverBase[_T]], + on_error: Optional[typing.OnError] = None, + on_completed: Optional[typing.OnCompleted] = None, + ) -> None: + """Invokes the delegate corresponding to the notification or an + observer and returns the produced result. + + Examples: + >>> notification.accept(observer) + >>> notification.accept(on_next, on_error, on_completed) + + Args: + on_next: Delegate to invoke for an OnNext notification. + on_error: [Optional] Delegate to invoke for an OnError + notification. + on_completed: [Optional] Delegate to invoke for an + OnCompleted notification. + + Returns: + Result produced by the observation.""" + + if isinstance(on_next, abc.ObserverBase): + return self._accept_observer(on_next) + + return self._accept(on_next, on_error, on_completed) + + @abstractmethod + def _accept( + self, + on_next: typing.OnNext[_T], + on_error: Optional[typing.OnError], + on_completed: Optional[typing.OnCompleted], + ) -> None: + raise NotImplementedError + + @abstractmethod + def _accept_observer(self, observer: abc.ObserverBase[_T]) -> None: + raise NotImplementedError + + def to_observable( + self, scheduler: Optional[abc.SchedulerBase] = None + ) -> abc.ObservableBase[_T]: + """Returns an observable sequence with a single notification, + using the specified scheduler, else the immediate scheduler. + + Args: + scheduler: [Optional] Scheduler to send out the + notification calls on. + + Returns: + An observable sequence that surfaces the behavior of the + notification upon subscription. + """ + + _scheduler = scheduler or ImmediateScheduler.singleton() + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + def action(scheduler: abc.SchedulerBase, state: Any) -> None: + self._accept_observer(observer) + if self.kind == "N": + observer.on_completed() + + __scheduler = scheduler or _scheduler + return __scheduler.schedule(action) + + return Observable(subscribe) + + def equals(self, other: "Notification[_T]") -> bool: + """Indicates whether this instance and a specified object are + equal.""" + + other_string = "" if not other else str(other) + return str(self) == other_string + + def __eq__(self, other: Any) -> bool: + return self.equals(other) + + +class OnNext(Notification[_T]): + """Represents an OnNext notification to an observer.""" + + def __init__(self, value: _T) -> None: + """Constructs a notification of a new value.""" + + super(OnNext, self).__init__() + self.value: _T = value + self.has_value: bool = True + self.kind: str = "N" + + def _accept( + self, + on_next: typing.OnNext[_T], + on_error: Optional[typing.OnError] = None, + on_completed: Optional[typing.OnCompleted] = None, + ) -> None: + return on_next(self.value) + + def _accept_observer(self, observer: abc.ObserverBase[_T]) -> None: + return observer.on_next(self.value) + + def __str__(self) -> str: + val: Any = self.value + if isinstance(val, int): + val = float(val) + return "OnNext(%s)" % str(val) + + +class OnError(Notification[_T]): + """Represents an OnError notification to an observer.""" + + def __init__(self, error: Union[Exception, str]) -> None: + """Constructs a notification of an exception.""" + + super(OnError, self).__init__() + self.exception: Exception = ( + error if isinstance(error, Exception) else Exception(error) + ) + self.kind = "E" + + def _accept( + self, + on_next: typing.OnNext[_T], + on_error: Optional[typing.OnError], + on_completed: Optional[typing.OnCompleted], + ) -> None: + return on_error(self.exception) if on_error else None + + def _accept_observer(self, observer: abc.ObserverBase[_T]) -> None: + return observer.on_error(self.exception) + + def __str__(self) -> str: + return "OnError(%s)" % str(self.exception) + + +class OnCompleted(Notification[_T]): + """Represents an OnCompleted notification to an observer.""" + + def __init__(self) -> None: + """Constructs a notification of the end of a sequence.""" + + super(OnCompleted, self).__init__() + self.kind = "C" + + def _accept( + self, + on_next: typing.OnNext[_T], + on_error: Optional[typing.OnError], + on_completed: Optional[typing.OnCompleted], + ) -> None: + return on_completed() if on_completed else None + + def _accept_observer(self, observer: abc.ObserverBase[_T]) -> None: + return observer.on_completed() + + def __str__(self) -> str: + return "OnCompleted()" + + +def from_notifier(handler: Callable[[Notification[_T]], None]) -> Observer[_T]: + """Creates an observer from a notification callback. + + Args: + handler: Action that handles a notification. + + Returns: + The observer object that invokes the specified handler using + a notification corresponding to each message it receives. + """ + + def _on_next(value: _T) -> None: + return handler(OnNext(value)) + + def _on_error(error: Exception) -> None: + return handler(OnError(error)) + + def _on_completed() -> None: + return handler(OnCompleted()) + + return Observer(_on_next, _on_error, _on_completed) diff --git a/frogpilot/third_party/reactivex/observable/__init__.py b/frogpilot/third_party/reactivex/observable/__init__.py new file mode 100644 index 000000000..a48725738 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/__init__.py @@ -0,0 +1,5 @@ +from .connectableobservable import ConnectableObservable +from .groupedobservable import GroupedObservable +from .observable import Observable + +__all__ = ["Observable", "ConnectableObservable", "GroupedObservable"] diff --git a/frogpilot/third_party/reactivex/observable/amb.py b/frogpilot/third_party/reactivex/observable/amb.py new file mode 100644 index 000000000..cc9de245f --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/amb.py @@ -0,0 +1,31 @@ +from typing import TypeVar + +from reactivex import Observable, never +from reactivex import operators as _ + +_T = TypeVar("_T") + + +def amb_(*sources: Observable[_T]) -> Observable[_T]: + """Propagates the observable sequence that reacts first. + + Example: + >>> winner = amb(xs, ys, zs) + + Returns: + An observable sequence that surfaces any of the given sequences, + whichever reacted first. + """ + + acc: Observable[_T] = never() + + def func(previous: Observable[_T], current: Observable[_T]) -> Observable[_T]: + return _.amb(previous)(current) + + for source in sources: + acc = func(acc, source) + + return acc + + +__all__ = ["amb_"] diff --git a/frogpilot/third_party/reactivex/observable/case.py b/frogpilot/third_party/reactivex/observable/case.py new file mode 100644 index 000000000..c50adde04 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/case.py @@ -0,0 +1,35 @@ +from asyncio import Future +from typing import Callable, Mapping, Optional, TypeVar, Union + +from reactivex import Observable, abc, defer, empty, from_future + +_Key = TypeVar("_Key") +_T = TypeVar("_T") + + +def case_( + mapper: Callable[[], _Key], + sources: Mapping[_Key, Observable[_T]], + default_source: Optional[Union[Observable[_T], "Future[_T]"]] = None, +) -> Observable[_T]: + + default_source_: Union[Observable[_T], "Future[_T]"] = default_source or empty() + + def factory(_: abc.SchedulerBase) -> Observable[_T]: + try: + result: Union[Observable[_T], "Future[_T]"] = sources[mapper()] + except KeyError: + result = default_source_ + + if isinstance(result, Future): + + result_: Observable[_T] = from_future(result) + else: + result_ = result + + return result_ + + return defer(factory) + + +__all__ = ["case_"] diff --git a/frogpilot/third_party/reactivex/observable/catch.py b/frogpilot/third_party/reactivex/observable/catch.py new file mode 100644 index 000000000..0266f642f --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/catch.py @@ -0,0 +1,84 @@ +from typing import Any, Iterable, Optional, TypeVar + +from reactivex import Observable, abc +from reactivex.disposable import ( + CompositeDisposable, + Disposable, + SerialDisposable, + SingleAssignmentDisposable, +) +from reactivex.scheduler import CurrentThreadScheduler + +_T = TypeVar("_T") + + +def catch_with_iterable_(sources: Iterable[Observable[_T]]) -> Observable[_T]: + + """Continues an observable sequence that is terminated by an + exception with the next observable sequence. + + Examples: + >>> res = catch([xs, ys, zs]) + >>> res = reactivex.catch(src for src in [xs, ys, zs]) + + Args: + sources: an Iterable of observables. Thus a generator is accepted. + + Returns: + An observable sequence containing elements from consecutive + source sequences until a source sequence terminates + successfully. + """ + + sources_ = iter(sources) + + def subscribe( + observer: abc.ObserverBase[_T], scheduler_: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + _scheduler = scheduler_ or CurrentThreadScheduler.singleton() + + subscription = SerialDisposable() + cancelable = SerialDisposable() + last_exception = None + is_disposed = False + + def action(scheduler: abc.SchedulerBase, state: Any = None) -> None: + def on_error(exn: Exception) -> None: + nonlocal last_exception + last_exception = exn + cancelable.disposable = _scheduler.schedule(action) + + if is_disposed: + return + + try: + current = next(sources_) + except StopIteration: + if last_exception: + observer.on_error(last_exception) + else: + observer.on_completed() + except Exception as ex: # pylint: disable=broad-except + observer.on_error(ex) + else: + d = SingleAssignmentDisposable() + subscription.disposable = d + d.disposable = current.subscribe( + observer.on_next, + on_error, + observer.on_completed, + scheduler=scheduler_, + ) + + cancelable.disposable = _scheduler.schedule(action) + + def dispose() -> None: + nonlocal is_disposed + is_disposed = True + + return CompositeDisposable(subscription, cancelable, Disposable(dispose)) + + return Observable(subscribe) + + +__all__ = ["catch_with_iterable_"] diff --git a/frogpilot/third_party/reactivex/observable/combinelatest.py b/frogpilot/third_party/reactivex/observable/combinelatest.py new file mode 100644 index 000000000..ff3c5c0bc --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/combinelatest.py @@ -0,0 +1,76 @@ +from typing import Any, List, Optional, Tuple + +from reactivex import Observable, abc +from reactivex.disposable import CompositeDisposable, SingleAssignmentDisposable + + +def combine_latest_(*sources: Observable[Any]) -> Observable[Tuple[Any, ...]]: + """Merges the specified observable sequences into one observable + sequence by creating a tuple whenever any of the + observable sequences produces an element. + + Examples: + >>> obs = combine_latest(obs1, obs2, obs3) + + Returns: + An observable sequence containing the result of combining + elements of the sources into a tuple. + """ + + parent = sources[0] + + def subscribe( + observer: abc.ObserverBase[Any], scheduler: Optional[abc.SchedulerBase] = None + ) -> CompositeDisposable: + + n = len(sources) + has_value = [False] * n + has_value_all = [False] + is_done = [False] * n + values = [None] * n + + def _next(i: Any) -> None: + has_value[i] = True + + if has_value_all[0] or all(has_value): + res = tuple(values) + observer.on_next(res) + + elif all([x for j, x in enumerate(is_done) if j != i]): + observer.on_completed() + + has_value_all[0] = all(has_value) + + def done(i: Any) -> None: + is_done[i] = True + if all(is_done): + observer.on_completed() + + subscriptions: List[Optional[SingleAssignmentDisposable]] = [None] * n + + def func(i: int) -> None: + subscriptions[i] = SingleAssignmentDisposable() + + def on_next(x: Any) -> None: + with parent.lock: + values[i] = x + _next(i) + + def on_completed() -> None: + with parent.lock: + done(i) + + subscription = subscriptions[i] + assert subscription + subscription.disposable = sources[i].subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + + for idx in range(n): + func(idx) + return CompositeDisposable(subscriptions) + + return Observable(subscribe) + + +__all__ = ["combine_latest_"] diff --git a/frogpilot/third_party/reactivex/observable/concat.py b/frogpilot/third_party/reactivex/observable/concat.py new file mode 100644 index 000000000..7e2773ee9 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/concat.py @@ -0,0 +1,62 @@ +from typing import Any, Iterable, Optional, TypeVar + +from reactivex import Observable, abc +from reactivex.disposable import ( + CompositeDisposable, + Disposable, + SerialDisposable, + SingleAssignmentDisposable, +) +from reactivex.scheduler import CurrentThreadScheduler + +_T = TypeVar("_T") + + +def concat_with_iterable_(sources: Iterable[Observable[_T]]) -> Observable[_T]: + def subscribe( + observer: abc.ObserverBase[_T], scheduler_: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + _scheduler = scheduler_ or CurrentThreadScheduler.singleton() + + sources_ = iter(sources) + + subscription = SerialDisposable() + cancelable = SerialDisposable() + is_disposed = False + + def action(scheduler: abc.SchedulerBase, state: Any = None) -> None: + nonlocal is_disposed + if is_disposed: + return + + def on_completed() -> None: + cancelable.disposable = _scheduler.schedule(action) + + try: + current = next(sources_) + except StopIteration: + observer.on_completed() + except Exception as ex: # pylint: disable=broad-except + observer.on_error(ex) + else: + d = SingleAssignmentDisposable() + subscription.disposable = d + d.disposable = current.subscribe( + observer.on_next, + observer.on_error, + on_completed, + scheduler=scheduler_, + ) + + cancelable.disposable = _scheduler.schedule(action) + + def dispose() -> None: + nonlocal is_disposed + is_disposed = True + + return CompositeDisposable(subscription, cancelable, Disposable(dispose)) + + return Observable(subscribe) + + +__all__ = ["concat_with_iterable_"] diff --git a/frogpilot/third_party/reactivex/observable/connectableobservable.py b/frogpilot/third_party/reactivex/observable/connectableobservable.py new file mode 100644 index 000000000..806b0dfb7 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/connectableobservable.py @@ -0,0 +1,82 @@ +from typing import List, Optional, TypeVar + +from reactivex import abc +from reactivex.disposable import CompositeDisposable, Disposable + +from .observable import Observable + +_T = TypeVar("_T") + + +class ConnectableObservable(Observable[_T]): + """Represents an observable that can be connected and + disconnected.""" + + def __init__(self, source: abc.ObservableBase[_T], subject: abc.SubjectBase[_T]): + self.subject = subject + self.has_subscription = False + self.subscription: Optional[abc.DisposableBase] = None + self.source = source + + super().__init__() + + def _subscribe_core( + self, + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + return self.subject.subscribe(observer, scheduler=scheduler) + + def connect( + self, scheduler: Optional[abc.SchedulerBase] = None + ) -> Optional[abc.DisposableBase]: + """Connects the observable.""" + + if not self.has_subscription: + self.has_subscription = True + + def dispose() -> None: + self.has_subscription = False + + subscription = self.source.subscribe(self.subject, scheduler=scheduler) + self.subscription = CompositeDisposable(subscription, Disposable(dispose)) + + return self.subscription + + def auto_connect(self, subscriber_count: int = 1) -> Observable[_T]: + """Returns an observable sequence that stays connected to the + source indefinitely to the observable sequence. + Providing a subscriber_count will cause it to connect() after + that many subscriptions occur. A subscriber_count of 0 will + result in emissions firing immediately without waiting for + subscribers. + """ + + connectable_subscription: List[Optional[abc.DisposableBase]] = [None] + count = [0] + source = self + is_connected = [False] + + if subscriber_count == 0: + connectable_subscription[0] = source.connect() + is_connected[0] = True + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + count[0] += 1 + should_connect = count[0] == subscriber_count and not is_connected[0] + subscription = source.subscribe(observer) + if should_connect: + connectable_subscription[0] = source.connect(scheduler) + is_connected[0] = True + + def dispose() -> None: + subscription.dispose() + count[0] -= 1 + is_connected[0] = False + + return Disposable(dispose) + + return Observable(subscribe) diff --git a/frogpilot/third_party/reactivex/observable/defer.py b/frogpilot/third_party/reactivex/observable/defer.py new file mode 100644 index 000000000..0a3407aa5 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/defer.py @@ -0,0 +1,43 @@ +from asyncio import Future +from typing import Callable, Optional, TypeVar, Union + +from reactivex import Observable, abc, from_future, throw +from reactivex.scheduler import ImmediateScheduler + +_T = TypeVar("_T") + + +def defer_( + factory: Callable[[abc.SchedulerBase], Union[Observable[_T], "Future[_T]"]] +) -> Observable[_T]: + """Returns an observable sequence that invokes the specified factory + function whenever a new observer subscribes. + + Example: + >>> res = defer(lambda scheduler: of(1, 2, 3)) + + Args: + observable_factory: Observable factory function to invoke for + each observer that subscribes to the resulting sequence. The + factory takes a single argument, the scheduler used. + + Returns: + An observable sequence whose observers trigger an invocation + of the given observable factory function. + """ + + def subscribe( + observer: abc.ObserverBase[_T], scheduler: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + try: + result = factory(scheduler or ImmediateScheduler.singleton()) + except Exception as ex: # By design. pylint: disable=W0703 + return throw(ex).subscribe(observer) + + result = from_future(result) if isinstance(result, Future) else result + return result.subscribe(observer, scheduler=scheduler) + + return Observable(subscribe) + + +__all__ = ["defer_"] diff --git a/frogpilot/third_party/reactivex/observable/empty.py b/frogpilot/third_party/reactivex/observable/empty.py new file mode 100644 index 000000000..bdbdb3c0f --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/empty.py @@ -0,0 +1,22 @@ +from typing import Any, Optional + +from reactivex import Observable, abc +from reactivex.scheduler import ImmediateScheduler + + +def empty_(scheduler: Optional[abc.SchedulerBase] = None) -> Observable[Any]: + def subscribe( + observer: abc.ObserverBase[Any], scheduler_: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + + _scheduler = scheduler or scheduler_ or ImmediateScheduler.singleton() + + def action(_: abc.SchedulerBase, __: Any) -> None: + observer.on_completed() + + return _scheduler.schedule(action) + + return Observable(subscribe) + + +__all__ = ["empty_"] diff --git a/frogpilot/third_party/reactivex/observable/forkjoin.py b/frogpilot/third_party/reactivex/observable/forkjoin.py new file mode 100644 index 000000000..33a74388e --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/forkjoin.py @@ -0,0 +1,72 @@ +from typing import Any, List, Optional, Tuple, cast + +from reactivex import Observable, abc +from reactivex.disposable import CompositeDisposable, SingleAssignmentDisposable + + +def fork_join_(*sources: Observable[Any]) -> Observable[Tuple[Any, ...]]: + """Wait for observables to complete and then combine last values + they emitted into a tuple. Whenever any of that observables completes + without emitting any value, result sequence will complete at that moment as well. + + Examples: + >>> obs = reactivex.fork_join(obs1, obs2, obs3) + + Returns: + An observable sequence containing the result of combining last element from + each source in given sequence. + """ + + parent = sources[0] + + def subscribe( + observer: abc.ObserverBase[Tuple[Any, ...]], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + n = len(sources) + values = [None] * n + is_done = [False] * n + has_value = [False] * n + + def done(i: int) -> None: + is_done[i] = True + + if not has_value[i]: + observer.on_completed() + return + + if all(is_done): + if all(has_value): + observer.on_next(tuple(values)) + observer.on_completed() + else: + observer.on_completed() + + subscriptions: List[SingleAssignmentDisposable] = [ + cast(SingleAssignmentDisposable, None) + ] * n + + def _subscribe(i: int) -> None: + subscriptions[i] = SingleAssignmentDisposable() + + def on_next(value: Any) -> None: + with parent.lock: + values[i] = value + has_value[i] = True + + def on_completed() -> None: + with parent.lock: + done(i) + + subscriptions[i].disposable = sources[i].subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + + for i in range(n): + _subscribe(i) + return CompositeDisposable(subscriptions) + + return Observable(subscribe) + + +__all__ = ["fork_join_"] diff --git a/frogpilot/third_party/reactivex/observable/fromcallback.py b/frogpilot/third_party/reactivex/observable/fromcallback.py new file mode 100644 index 000000000..f7229abe4 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/fromcallback.py @@ -0,0 +1,59 @@ +from typing import Any, Callable, Optional + +from reactivex import Observable, abc, typing +from reactivex.disposable import Disposable + + +def from_callback_( + func: Callable[..., Callable[..., None]], + mapper: Optional[typing.Mapper[Any, Any]] = None, +) -> Callable[[], Observable[Any]]: + """Converts a callback function to an observable sequence. + + Args: + func: Function with a callback as the last argument to + convert to an Observable sequence. + mapper: [Optional] A mapper which takes the arguments + from the callback to produce a single item to yield on next. + + Returns: + A function, when executed with the required arguments minus + the callback, produces an Observable sequence with a single value of + the arguments to the callback as a list. + """ + + def function(*args: Any) -> Observable[Any]: + arguments = list(args) + + def subscribe( + observer: abc.ObserverBase[Any], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + def handler(*args: Any) -> None: + results = list(args) + if mapper: + try: + results = mapper(args) + except Exception as err: # pylint: disable=broad-except + observer.on_error(err) + return + + observer.on_next(results) + else: + if len(results) <= 1: + observer.on_next(*results) + else: + observer.on_next(results) + + observer.on_completed() + + arguments.append(handler) + func(*arguments) + return Disposable() + + return Observable(subscribe) + + return function + + +__all__ = ["from_callback_"] diff --git a/frogpilot/third_party/reactivex/observable/fromfuture.py b/frogpilot/third_party/reactivex/observable/fromfuture.py new file mode 100644 index 000000000..caabebf55 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/fromfuture.py @@ -0,0 +1,49 @@ +import asyncio +from asyncio import Future +from typing import Any, Optional, TypeVar, cast + +from reactivex import Observable, abc +from reactivex.disposable import Disposable + +_T = TypeVar("_T") + + +def from_future_(future: "Future[_T]") -> Observable[_T]: + """Converts a Future to an Observable sequence + + Args: + future -- A Python 3 compatible future. + https://docs.python.org/3/library/asyncio-task.html#future + + Returns: + An Observable sequence which wraps the existing future success + and failure. + """ + + def subscribe( + observer: abc.ObserverBase[Any], scheduler: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + def done(future: "Future[_T]") -> None: + try: + value: Any = future.result() + except Exception as ex: + observer.on_error(ex) + except asyncio.CancelledError as ex: # pylint: disable=broad-except + # asyncio.CancelledError is a BaseException, so need to cast + observer.on_error(cast(Exception, ex)) + else: + observer.on_next(value) + observer.on_completed() + + future.add_done_callback(done) + + def dispose() -> None: + if future: + future.cancel() + + return Disposable(dispose) + + return Observable(subscribe) + + +__all__ = ["from_future_"] diff --git a/frogpilot/third_party/reactivex/observable/fromiterable.py b/frogpilot/third_party/reactivex/observable/fromiterable.py new file mode 100644 index 000000000..4166bd85c --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/fromiterable.py @@ -0,0 +1,56 @@ +from typing import Any, Iterable, Optional, TypeVar + +from reactivex import Observable, abc +from reactivex.disposable import CompositeDisposable, Disposable +from reactivex.scheduler import CurrentThreadScheduler + +_T = TypeVar("_T") + + +def from_iterable_( + iterable: Iterable[_T], scheduler: Optional[abc.SchedulerBase] = None +) -> Observable[_T]: + """Converts an iterable to an observable sequence. + + Example: + >>> from_iterable([1,2,3]) + + Args: + iterable: A Python iterable + scheduler: An optional scheduler to schedule the values on. + + Returns: + The observable sequence whose elements are pulled from the + given iterable sequence. + """ + + def subscribe( + observer: abc.ObserverBase[_T], scheduler_: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + _scheduler = scheduler or scheduler_ or CurrentThreadScheduler.singleton() + iterator = iter(iterable) + disposed = False + + def action(_: abc.SchedulerBase, __: Any = None) -> None: + nonlocal disposed + + try: + while not disposed: + value = next(iterator) + observer.on_next(value) + except StopIteration: + observer.on_completed() + except Exception as error: # pylint: disable=broad-except + observer.on_error(error) + + def dispose() -> None: + nonlocal disposed + disposed = True + + disp = Disposable(dispose) + return CompositeDisposable(_scheduler.schedule(action), disp) + + return Observable(subscribe) + + +__all__ = ["from_iterable_"] diff --git a/frogpilot/third_party/reactivex/observable/generate.py b/frogpilot/third_party/reactivex/observable/generate.py new file mode 100644 index 000000000..04fb8c3ed --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/generate.py @@ -0,0 +1,57 @@ +from typing import Any, Optional, TypeVar, cast + +from reactivex import Observable, abc, typing +from reactivex.disposable import MultipleAssignmentDisposable +from reactivex.scheduler import CurrentThreadScheduler + +_TState = TypeVar("_TState") + + +def generate_( + initial_state: _TState, + condition: typing.Predicate[_TState], + iterate: typing.Mapper[_TState, _TState], +) -> Observable[_TState]: + def subscribe( + observer: abc.ObserverBase[_TState], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + scheduler = scheduler or CurrentThreadScheduler.singleton() + first = True + state = initial_state + mad = MultipleAssignmentDisposable() + + def action(scheduler: abc.SchedulerBase, state1: Any = None) -> None: + nonlocal first + nonlocal state + + has_result = False + result: _TState = cast(_TState, None) + + try: + if first: + first = False + else: + state = iterate(state) + + has_result = condition(state) + if has_result: + result = state + + except Exception as exception: # pylint: disable=broad-except + observer.on_error(exception) + return + + if has_result: + observer.on_next(result) + mad.disposable = scheduler.schedule(action) + else: + observer.on_completed() + + mad.disposable = scheduler.schedule(action) + return mad + + return Observable(subscribe) + + +__all__ = ["generate_"] diff --git a/frogpilot/third_party/reactivex/observable/generatewithrelativetime.py b/frogpilot/third_party/reactivex/observable/generatewithrelativetime.py new file mode 100644 index 000000000..2180c76bd --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/generatewithrelativetime.py @@ -0,0 +1,89 @@ +from typing import Any, Callable, Optional, TypeVar, cast + +from reactivex import Observable, abc +from reactivex.disposable import MultipleAssignmentDisposable +from reactivex.scheduler import TimeoutScheduler +from reactivex.typing import Mapper, Predicate, RelativeTime + +_TState = TypeVar("_TState") + + +def generate_with_relative_time_( + initial_state: _TState, + condition: Predicate[_TState], + iterate: Mapper[_TState, _TState], + time_mapper: Callable[[_TState], RelativeTime], +) -> Observable[_TState]: + """Generates an observable sequence by iterating a state from an + initial state until the condition fails. + + Example: + res = source.generate_with_relative_time( + 0, lambda x: True, lambda x: x + 1, lambda x: 0.5 + ) + + Args: + initial_state: Initial state. + condition: Condition to terminate generation (upon returning + false). + iterate: Iteration step function. + time_mapper: Time mapper function to control the speed of + values being produced each iteration, returning relative + times, i.e. either floats denoting seconds or instances of + timedelta. + + Returns: + The generated sequence. + """ + + def subscribe( + observer: abc.ObserverBase[_TState], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + scheduler = scheduler or TimeoutScheduler.singleton() + mad = MultipleAssignmentDisposable() + state = initial_state + has_result = False + result: _TState = cast(_TState, None) + first = True + time: Optional[RelativeTime] = None + + def action(scheduler: abc.SchedulerBase, _: Any) -> None: + nonlocal state + nonlocal has_result + nonlocal result + nonlocal first + nonlocal time + + if has_result: + observer.on_next(result) + + try: + if first: + first = False + else: + state = iterate(state) + + has_result = condition(state) + + if has_result: + result = state + time = time_mapper(state) + + except Exception as e: # pylint: disable=broad-except + observer.on_error(e) + return + + if has_result: + assert time + mad.disposable = scheduler.schedule_relative(time, action) + else: + observer.on_completed() + + mad.disposable = scheduler.schedule_relative(0, action) + return mad + + return Observable(subscribe) + + +__all__ = ["generate_with_relative_time_"] diff --git a/frogpilot/third_party/reactivex/observable/groupedobservable.py b/frogpilot/third_party/reactivex/observable/groupedobservable.py new file mode 100644 index 000000000..a49f717f3 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/groupedobservable.py @@ -0,0 +1,40 @@ +from typing import Generic, Optional, TypeVar + +from reactivex import abc +from reactivex.disposable import CompositeDisposable, Disposable, RefCountDisposable + +from .observable import Observable + +_T = TypeVar("_T") +_TKey = TypeVar("_TKey") + + +class GroupedObservable(Generic[_TKey, _T], Observable[_T]): + def __init__( + self, + key: _TKey, + underlying_observable: Observable[_T], + merged_disposable: Optional[RefCountDisposable] = None, + ): + super().__init__() + self.key = key + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + return CompositeDisposable( + merged_disposable.disposable if merged_disposable else Disposable(), + underlying_observable.subscribe(observer, scheduler=scheduler), + ) + + self.underlying_observable = ( + underlying_observable if not merged_disposable else Observable(subscribe) + ) + + def _subscribe_core( + self, + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + return self.underlying_observable.subscribe(observer, scheduler=scheduler) diff --git a/frogpilot/third_party/reactivex/observable/ifthen.py b/frogpilot/third_party/reactivex/observable/ifthen.py new file mode 100644 index 000000000..007598851 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/ifthen.py @@ -0,0 +1,55 @@ +from asyncio import Future +from typing import Callable, TypeVar, Union + +import reactivex +from reactivex import Observable, abc + +_T = TypeVar("_T") + + +def if_then_( + condition: Callable[[], bool], + then_source: Union[Observable[_T], "Future[_T]"], + else_source: Union[None, Observable[_T], "Future[_T]"] = None, +) -> Observable[_T]: + """Determines whether an observable collection contains values. + + Example: + 1 - res = reactivex.if_then(condition, obs1) + 2 - res = reactivex.if_then(condition, obs1, obs2) + + Args: + condition: The condition which determines if the then_source or + else_source will be run. + then_source: The observable sequence or Promise that + will be run if the condition function returns true. + else_source: [Optional] The observable sequence or + Promise that will be run if the condition function returns + False. If this is not provided, it defaults to + reactivex.empty + + Returns: + An observable sequence which is either the then_source or + else_source. + """ + + else_source_: Union[Observable[_T], "Future[_T]"] = else_source or reactivex.empty() + + then_source = ( + reactivex.from_future(then_source) + if isinstance(then_source, Future) + else then_source + ) + else_source_ = ( + reactivex.from_future(else_source_) + if isinstance(else_source_, Future) + else else_source_ + ) + + def factory(_: abc.SchedulerBase) -> Union[Observable[_T], "Future[_T]"]: + return then_source if condition() else else_source_ + + return reactivex.defer(factory) + + +__all__ = ["if_then_"] diff --git a/frogpilot/third_party/reactivex/observable/interval.py b/frogpilot/third_party/reactivex/observable/interval.py new file mode 100644 index 000000000..cf05a6109 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/interval.py @@ -0,0 +1,13 @@ +from typing import Optional + +from reactivex import Observable, abc, timer, typing + + +def interval_( + period: typing.RelativeTime, scheduler: Optional[abc.SchedulerBase] = None +) -> Observable[int]: + + return timer(period, period, scheduler) + + +__all__ = ["interval_"] diff --git a/frogpilot/third_party/reactivex/observable/marbles.py b/frogpilot/third_party/reactivex/observable/marbles.py new file mode 100644 index 000000000..209459db8 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/marbles.py @@ -0,0 +1,273 @@ +import re +import threading +from datetime import datetime, timedelta +from typing import Any, List, Mapping, Optional, Tuple, Union + +from reactivex import Notification, Observable, abc, notification, typing +from reactivex.disposable import CompositeDisposable, Disposable +from reactivex.scheduler import NewThreadScheduler + +new_thread_scheduler = NewThreadScheduler() + +# tokens will be searched in the order below using pipe +# group of elements: match any characters surrounded by () +pattern_group = r"(\(.*?\))" +# timespan: match one or multiple hyphens +pattern_ticks = r"(-+)" +# comma err: match any comma which is not in a group +pattern_comma_error = r"(,)" +# element: match | or # or one or more characters which are not - | # ( ) , +pattern_element = r"(#|\||[^-,()#\|]+)" + +pattern = r"|".join( + [ + pattern_group, + pattern_ticks, + pattern_comma_error, + pattern_element, + ] +) +tokens = re.compile(pattern) + + +def hot( + string: str, + timespan: typing.RelativeTime = 0.1, + duetime: typing.AbsoluteOrRelativeTime = 0.0, + lookup: Optional[Mapping[Union[str, float], Any]] = None, + error: Optional[Exception] = None, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Observable[Any]: + _scheduler = scheduler or new_thread_scheduler + + if isinstance(duetime, datetime): + duetime = duetime - _scheduler.now + + messages = parse( + string, + timespan=timespan, + time_shift=duetime, + lookup=lookup, + error=error, + raise_stopped=True, + ) + + lock = threading.RLock() + is_stopped = False + observers: List[abc.ObserverBase[Any]] = [] + + def subscribe( + observer: abc.ObserverBase[Any], scheduler: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + # should a hot observable already completed or on error + # re-push on_completed/on_error at subscription time? + if not is_stopped: + with lock: + observers.append(observer) + + def dispose() -> None: + with lock: + try: + observers.remove(observer) + except ValueError: + pass + + return Disposable(dispose) + + def create_action(notification: Notification[Any]) -> typing.ScheduledAction[Any]: + def action(scheduler: abc.SchedulerBase, state: Any = None) -> None: + nonlocal is_stopped + + with lock: + for observer in observers: + notification.accept(observer) + + if notification.kind in ("C", "E"): + is_stopped = True + + return action + + for message in messages: + timespan, notification = message + action = create_action(notification) + + # Don't make closures within a loop + _scheduler.schedule_relative(timespan, action) + + return Observable(subscribe) + + +def from_marbles( + string: str, + timespan: typing.RelativeTime = 0.1, + lookup: Optional[Mapping[Union[str, float], Any]] = None, + error: Optional[Exception] = None, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Observable[Any]: + messages = parse( + string, timespan=timespan, lookup=lookup, error=error, raise_stopped=True + ) + + def subscribe( + observer: abc.ObserverBase[Any], scheduler_: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + _scheduler = scheduler or scheduler_ or new_thread_scheduler + disp = CompositeDisposable() + + def schedule_msg( + message: Tuple[typing.RelativeTime, Notification[Any]] + ) -> None: + duetime, notification = message + + def action(scheduler: abc.SchedulerBase, state: Any = None) -> None: + notification.accept(observer) + + disp.add(_scheduler.schedule_relative(duetime, action)) + + for message in messages: + # Don't make closures within a loop + schedule_msg(message) + + return disp + + return Observable(subscribe) + + +def parse( + string: str, + timespan: typing.RelativeTime = 1.0, + time_shift: typing.RelativeTime = 0.0, + lookup: Optional[Mapping[Union[str, float], Any]] = None, + error: Optional[Exception] = None, + raise_stopped: bool = False, +) -> List[Tuple[typing.RelativeTime, notification.Notification[Any]]]: + """Convert a marble diagram string to a list of messages. + + Each character in the string will advance time by timespan + (exept for space). Characters that are not special (see the table below) + will be interpreted as a value to be emitted. numbers will be cast + to int or float. + + Special characters: + +--------+--------------------------------------------------------+ + | `-` | advance time by timespan | + +--------+--------------------------------------------------------+ + | `#` | on_error() | + +--------+--------------------------------------------------------+ + | `|` | on_completed() | + +--------+--------------------------------------------------------+ + | `(` | open a group of elements sharing the same timestamp | + +--------+--------------------------------------------------------+ + | `)` | close a group of elements | + +--------+--------------------------------------------------------+ + | `,` | separate elements in a group | + +--------+--------------------------------------------------------+ + | space | used to align multiple diagrams, does not advance time | + +--------+--------------------------------------------------------+ + + In a group of elements, the position of the initial `(` determines the + timestamp at which grouped elements will be emitted. E.g. `--(12,3,4)--` + will emit 12, 3, 4 at 2 * timespan and then advance virtual time + by 8 * timespan. + + Examples: + >>> parse("--1--(2,3)-4--|") + >>> parse("a--b--c-", lookup={'a': 1, 'b': 2, 'c': 3}) + >>> parse("a--b---#", error=ValueError("foo")) + + Args: + string: String with marble diagram + + timespan: [Optional] duration of each character in second. + If not specified, defaults to 0.1s. + + lookup: [Optional] dict used to convert an element into a specified + value. If not specified, defaults to {}. + + time_shift: [Optional] time used to delay every elements. + If not specified, defaults to 0.0s. + + error: [Optional] exception that will be use in place of the # symbol. + If not specified, defaults to Exception('error'). + + raise_finished: [optional] raise ValueError if elements are + declared after on_completed or on_error symbol. + + Returns: + A list of messages defined as a tuple of (timespan, notification). + + """ + + error_ = error or Exception("error") + lookup_ = lookup or {} + + if isinstance(timespan, timedelta): + timespan = timespan.total_seconds() + if isinstance(time_shift, timedelta): + time_shift = time_shift.total_seconds() + + string = string.replace(" ", "") + + # try to cast a string to an int, then to a float + def try_number(element: str) -> Union[float, str]: + try: + return int(element) + except ValueError: + try: + return float(element) + except ValueError: + return element + + def map_element( + time: typing.RelativeTime, element: str + ) -> Tuple[typing.RelativeTime, Notification[Any]]: + if element == "|": + return (time, notification.OnCompleted()) + elif element == "#": + return (time, notification.OnError(error_)) + else: + value = try_number(element) + value = lookup_.get(value, value) + return (time, notification.OnNext(value)) + + is_stopped = False + + def check_stopped(element: str) -> None: + nonlocal is_stopped + if raise_stopped: + if is_stopped: + raise ValueError("Elements cannot be declared after a # or | symbol.") + + if element in ("#", "|"): + is_stopped = True + + iframe = 0 + messages: List[Tuple[typing.RelativeTime, Notification[Any]]] = [] + + for results in tokens.findall(string): + timestamp = iframe * timespan + time_shift + group, ticks, comma_error, element = results + + if group: + elements = group[1:-1].split(",") + for elm in elements: + check_stopped(elm) + grp_messages = [ + map_element(timestamp, elm) for elm in elements if elm != "" + ] + messages.extend(grp_messages) + iframe += len(group) + + if ticks: + iframe += len(ticks) + + if comma_error: + raise ValueError("Comma is only allowed in group of elements.") + + if element: + check_stopped(element) + message = map_element(timestamp, element) + messages.append(message) + iframe += len(element) + + return messages diff --git a/frogpilot/third_party/reactivex/observable/merge.py b/frogpilot/third_party/reactivex/observable/merge.py new file mode 100644 index 000000000..0b5c97456 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/merge.py @@ -0,0 +1,14 @@ +from typing import TypeVar + +import reactivex +from reactivex import Observable +from reactivex import operators as ops + +_T = TypeVar("_T") + + +def merge_(*sources: Observable[_T]) -> Observable[_T]: + return reactivex.from_iterable(sources).pipe(ops.merge_all()) + + +__all__ = ["merge_"] diff --git a/frogpilot/third_party/reactivex/observable/never.py b/frogpilot/third_party/reactivex/observable/never.py new file mode 100644 index 000000000..74e283164 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/never.py @@ -0,0 +1,23 @@ +from typing import Any, Optional + +from reactivex import Observable, abc +from reactivex.disposable import Disposable + + +def never_() -> Observable[Any]: + """Returns a non-terminating observable sequence, which can be used + to denote an infinite duration (e.g. when using reactive joins). + + Returns: + An observable sequence whose observers will never get called. + """ + + def subscribe( + observer: abc.ObserverBase[Any], scheduler: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + return Disposable() + + return Observable(subscribe) + + +__all__ = ["never_"] diff --git a/frogpilot/third_party/reactivex/observable/observable.py b/frogpilot/third_party/reactivex/observable/observable.py new file mode 100644 index 000000000..b32e237e6 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/observable.py @@ -0,0 +1,357 @@ +# By design, pylint: disable=C0302 +from __future__ import annotations + +import asyncio +import threading +from typing import Any, Callable, Generator, Optional, TypeVar, Union, cast, overload + +from reactivex import abc +from reactivex.disposable import Disposable +from reactivex.scheduler import CurrentThreadScheduler +from reactivex.scheduler.eventloop import AsyncIOScheduler + +from ..observer import AutoDetachObserver + +_A = TypeVar("_A") +_B = TypeVar("_B") +_C = TypeVar("_C") +_D = TypeVar("_D") +_E = TypeVar("_E") +_F = TypeVar("_F") +_G = TypeVar("_G") + +_T_out = TypeVar("_T_out", covariant=True) + + +class Observable(abc.ObservableBase[_T_out]): + """Observable base class. + + Represents a push-style collection, which you can :func:`pipe ` into + :mod:`operators `.""" + + def __init__(self, subscribe: Optional[abc.Subscription[_T_out]] = None) -> None: + """Creates an observable sequence object from the specified + subscription function. + + Args: + subscribe: [Optional] Subscription function + """ + super().__init__() + + self.lock = threading.RLock() + self._subscribe = subscribe + + def _subscribe_core( + self, + observer: abc.ObserverBase[_T_out], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + return self._subscribe(observer, scheduler) if self._subscribe else Disposable() + + def subscribe( + self, + on_next: Optional[ + Union[abc.ObserverBase[_T_out], abc.OnNext[_T_out], None] + ] = None, + on_error: Optional[abc.OnError] = None, + on_completed: Optional[abc.OnCompleted] = None, + *, + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + """Subscribe an observer to the observable sequence. + + You may subscribe using an observer or callbacks, not both; if the first + argument is an instance of :class:`Observer <..abc.ObserverBase>` or if + it has a (callable) attribute named :code:`on_next`, then any callback + arguments will be ignored. + + Examples: + >>> source.subscribe() + >>> source.subscribe(observer) + >>> source.subscribe(observer, scheduler=scheduler) + >>> source.subscribe(on_next) + >>> source.subscribe(on_next, on_error) + >>> source.subscribe(on_next, on_error, on_completed) + >>> source.subscribe(on_next, on_error, on_completed, scheduler=scheduler) + + Args: + observer: [Optional] The object that is to receive + notifications. + on_error: [Optional] Action to invoke upon exceptional termination + of the observable sequence. + on_completed: [Optional] Action to invoke upon graceful termination + of the observable sequence. + on_next: [Optional] Action to invoke for each element in the + observable sequence. + scheduler: [Optional] The default scheduler to use for this + subscription. + + Returns: + Disposable object representing an observer's subscription to + the observable sequence. + """ + if ( + isinstance(on_next, abc.ObserverBase) + or hasattr(on_next, "on_next") + and callable(getattr(on_next, "on_next")) + ): + obv = cast(abc.ObserverBase[_T_out], on_next) + on_next = obv.on_next + on_error = obv.on_error + on_completed = obv.on_completed + + auto_detach_observer: AutoDetachObserver[_T_out] = AutoDetachObserver( + on_next, on_error, on_completed + ) + + def fix_subscriber( + subscriber: Union[abc.DisposableBase, Callable[[], None]] + ) -> abc.DisposableBase: + """Fixes subscriber to make sure it returns a Disposable instead + of None or a dispose function""" + + if isinstance(subscriber, abc.DisposableBase) or hasattr( + subscriber, "dispose" + ): + # Note: cast can be avoided using Protocols (Python 3.9) + return cast(abc.DisposableBase, subscriber) + + return Disposable(subscriber) + + def set_disposable( + _: Optional[abc.SchedulerBase] = None, __: Any = None + ) -> None: + try: + subscriber = self._subscribe_core(auto_detach_observer, scheduler) + except Exception as ex: # By design. pylint: disable=W0703 + if not auto_detach_observer.fail(ex): + raise + else: + auto_detach_observer.subscription = fix_subscriber(subscriber) + + # Subscribe needs to set up the trampoline before for subscribing. + # Actually, the first call to Subscribe creates the trampoline so + # that it may assign its disposable before any observer executes + # OnNext over the CurrentThreadScheduler. This enables single- + # threaded cancellation + # https://social.msdn.microsoft.com/Forums/en-US/eb82f593-9684-4e27- + # 97b9-8b8886da5c33/whats-the-rationale-behind-how-currentthreadsche + # dulerschedulerequired-behaves?forum=rx + current_thread_scheduler = CurrentThreadScheduler.singleton() + if current_thread_scheduler.schedule_required(): + current_thread_scheduler.schedule(set_disposable) + else: + set_disposable() + + # Hide the identity of the auto detach observer + return Disposable(auto_detach_observer.dispose) + + @overload + def pipe(self, __op1: Callable[[Observable[_T_out]], _A]) -> _A: + ... + + @overload + def pipe( + self, + __op1: Callable[[Observable[_T_out]], _A], + __op2: Callable[[_A], _B], + ) -> _B: + ... + + @overload + def pipe( + self, + __op1: Callable[[Observable[_T_out]], _A], + __op2: Callable[[_A], _B], + __op3: Callable[[_B], _C], + ) -> _C: + ... + + @overload + def pipe( + self, + __op1: Callable[[Observable[_T_out]], _A], + __op2: Callable[[_A], _B], + __op3: Callable[[_B], _C], + __op4: Callable[[_C], _D], + ) -> _D: + ... + + @overload + def pipe( + self, + __op1: Callable[[Observable[_T_out]], _A], + __op2: Callable[[_A], _B], + __op3: Callable[[_B], _C], + __op4: Callable[[_C], _D], + __op5: Callable[[_D], _E], + ) -> _E: + ... + + @overload + def pipe( + self, + __op1: Callable[[Observable[_T_out]], _A], + __op2: Callable[[_A], _B], + __op3: Callable[[_B], _C], + __op4: Callable[[_C], _D], + __op5: Callable[[_D], _E], + __op6: Callable[[_E], _F], + ) -> _F: + ... + + @overload + def pipe( + self, + __op1: Callable[[Observable[_T_out]], _A], + __op2: Callable[[_A], _B], + __op3: Callable[[_B], _C], + __op4: Callable[[_C], _D], + __op5: Callable[[_D], _E], + __op6: Callable[[_E], _F], + __op7: Callable[[_F], _G], + ) -> _G: + ... + + def pipe(self, *operators: Callable[[Any], Any]) -> Any: + """Compose multiple operators left to right. + + Composes zero or more operators into a functional composition. + The operators are composed from left to right. A composition of zero + operators gives back the original source. + + Examples: + >>> source.pipe() == source + >>> source.pipe(f) == f(source) + >>> source.pipe(g, f) == f(g(source)) + >>> source.pipe(h, g, f) == f(g(h(source))) + + Args: + operators: Sequence of operators. + + Returns: + The composed observable. + """ + from ..pipe import pipe as pipe_ + + return pipe_(self, *operators) + + def run(self) -> Any: + """Run source synchronously. + + Subscribes to the observable source. Then blocks and waits for the + observable source to either complete or error. Returns the + last value emitted, or throws exception if any error occurred. + + Examples: + >>> result = run(source) + + Raises: + SequenceContainsNoElementsError: if observable completes + (on_completed) without any values being emitted. + Exception: raises exception if any error (on_error) occurred. + + Returns: + The last element emitted from the observable. + """ + from ..run import run + + return run(self) + + def __await__(self) -> Generator[Any, None, _T_out]: + """Awaits the given observable. + + Returns: + The last item of the observable sequence. + """ + from ..operators._tofuture import to_future_ + + loop = asyncio.get_event_loop() + future: asyncio.Future[_T_out] = self.pipe( + to_future_(scheduler=AsyncIOScheduler(loop=loop)) + ) + return future.__await__() + + def __add__(self, other: Observable[_T_out]) -> Observable[_T_out]: + """Pythonic version of :func:`concat `. + + Example: + >>> zs = xs + ys + + Args: + other: The second observable sequence in the concatenation. + + Returns: + Concatenated observable sequence. + """ + from reactivex import concat + + return concat(self, other) + + def __iadd__(self, other: Observable[_T_out]) -> "Observable[_T_out]": + """Pythonic use of :func:`concat `. + + Example: + >>> xs += ys + + Args: + other: The second observable sequence in the concatenation. + + Returns: + Concatenated observable sequence. + """ + from reactivex import concat + + return concat(self, other) + + def __getitem__(self, key: Union[slice, int]) -> Observable[_T_out]: + """ + Pythonic version of :func:`slice `. + + Slices the given observable using Python slice notation. The arguments + to slice are `start`, `stop` and `step` given within brackets `[]` and + separated by the colons `:`. + + It is basically a wrapper around the operators + :func:`skip `, + :func:`skip_last `, + :func:`take `, + :func:`take_last ` and + :func:`filter `. + + The following diagram helps you remember how slices works with streams. + Positive numbers are relative to the start of the events, while negative + numbers are relative to the end (close) of the stream. + + .. code:: + + r---e---a---c---t---i---v---e---! + 0 1 2 3 4 5 6 7 8 + -8 -7 -6 -5 -4 -3 -2 -1 0 + + Examples: + >>> result = source[1:10] + >>> result = source[1:-2] + >>> result = source[1:-1:2] + + Args: + key: Slice object + + Returns: + Sliced observable sequence. + + Raises: + TypeError: If key is not of type :code:`int` or :code:`slice` + """ + + if isinstance(key, slice): + start, stop, step = key.start, key.stop, key.step + else: + start, stop, step = key, key + 1, 1 + + from ..operators._slice import slice_ + + return slice_(start, stop, step)(self) + + +__all__ = ["Observable"] diff --git a/frogpilot/third_party/reactivex/observable/onerrorresumenext.py b/frogpilot/third_party/reactivex/observable/onerrorresumenext.py new file mode 100644 index 000000000..f4e28c6f8 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/onerrorresumenext.py @@ -0,0 +1,73 @@ +from asyncio import Future +from typing import Callable, Optional, TypeVar, Union + +import reactivex +from reactivex import Observable, abc +from reactivex.disposable import ( + CompositeDisposable, + SerialDisposable, + SingleAssignmentDisposable, +) +from reactivex.scheduler import CurrentThreadScheduler + +_T = TypeVar("_T") + + +def on_error_resume_next_( + *sources: Union[ + Observable[_T], "Future[_T]", Callable[[Optional[Exception]], Observable[_T]] + ] +) -> Observable[_T]: + """Continues an observable sequence that is terminated normally or + by an exception with the next observable sequence. + + Examples: + >>> res = reactivex.on_error_resume_next(xs, ys, zs) + + Returns: + An observable sequence that concatenates the source sequences, + even if a sequence terminates exceptionally. + """ + + sources_ = iter(sources) + + def subscribe( + observer: abc.ObserverBase[_T], scheduler: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + scheduler = scheduler or CurrentThreadScheduler.singleton() + + subscription = SerialDisposable() + cancelable = SerialDisposable() + + def action( + scheduler: abc.SchedulerBase, state: Optional[Exception] = None + ) -> None: + try: + source = next(sources_) + except StopIteration: + observer.on_completed() + return + + # Allow source to be a factory method taking an error + source = source(state) if callable(source) else source + current = ( + reactivex.from_future(source) if isinstance(source, Future) else source + ) + + d = SingleAssignmentDisposable() + subscription.disposable = d + + def on_resume(state: Optional[Exception] = None) -> None: + scheduler.schedule(action, state) + + d.disposable = current.subscribe( + observer.on_next, on_resume, on_resume, scheduler=scheduler + ) + + cancelable.disposable = scheduler.schedule(action) + return CompositeDisposable(subscription, cancelable) + + return Observable(subscribe) + + +__all__ = ["on_error_resume_next_"] diff --git a/frogpilot/third_party/reactivex/observable/range.py b/frogpilot/third_party/reactivex/observable/range.py new file mode 100644 index 000000000..e7bada735 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/range.py @@ -0,0 +1,70 @@ +from sys import maxsize +from typing import Iterator, Optional + +from reactivex import Observable, abc +from reactivex.disposable import MultipleAssignmentDisposable +from reactivex.scheduler import CurrentThreadScheduler + + +def range_( + start: int, + stop: Optional[int] = None, + step: Optional[int] = None, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Observable[int]: + """Generates an observable sequence of integral numbers within a + specified range, using the specified scheduler to send out observer + messages. + + Examples: + >>> res = range(10) + >>> res = range(0, 10) + >>> res = range(0, 10, 1) + + Args: + start: The value of the first integer in the sequence. + stop: [Optional] Generate number up to (exclusive) the stop + value. Default is `sys.maxsize`. + step: [Optional] The step to be used (default is 1). + scheduler: The scheduler to schedule the values on. + + Returns: + An observable sequence that contains a range of sequential + integral numbers. + """ + + _stop: int = maxsize if stop is None else stop + _step: int = 1 if step is None else step + + if step is None and stop is None: + range_t = range(start) + elif step is None: + range_t = range(start, _stop) + else: + range_t = range(start, _stop, _step) + + def subscribe( + observer: abc.ObserverBase[int], scheduler_: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + nonlocal range_t + + _scheduler = scheduler or scheduler_ or CurrentThreadScheduler.singleton() + sd = MultipleAssignmentDisposable() + + def action( + scheduler: abc.SchedulerBase, iterator: Optional[Iterator[int]] + ) -> None: + try: + assert iterator + observer.on_next(next(iterator)) + sd.disposable = _scheduler.schedule(action, state=iterator) + except StopIteration: + observer.on_completed() + + sd.disposable = _scheduler.schedule(action, iter(range_t)) + return sd + + return Observable(subscribe) + + +__all__ = ["range_"] diff --git a/frogpilot/third_party/reactivex/observable/repeat.py b/frogpilot/third_party/reactivex/observable/repeat.py new file mode 100644 index 000000000..a3ecf9aa1 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/repeat.py @@ -0,0 +1,35 @@ +from typing import Optional, TypeVar + +import reactivex +from reactivex import Observable +from reactivex import operators as ops + +_T = TypeVar("_T") + + +def repeat_value_(value: _T, repeat_count: Optional[int] = None) -> Observable[_T]: + """Generates an observable sequence that repeats the given element + the specified number of times. + + Examples: + 1 - res = repeat_value(42) + 2 - res = repeat_value(42, 4) + + Args: + value: Element to repeat. + repeat_count: [Optional] Number of times to repeat the element. + If not specified, repeats indefinitely. + + Returns: + An observable sequence that repeats the given element the + specified number of times. + """ + + if repeat_count == -1: + repeat_count = None + + xs = reactivex.return_value(value) + return xs.pipe(ops.repeat(repeat_count)) + + +__all__ = ["repeat_value_"] diff --git a/frogpilot/third_party/reactivex/observable/returnvalue.py b/frogpilot/third_party/reactivex/observable/returnvalue.py new file mode 100644 index 000000000..f4238ae59 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/returnvalue.py @@ -0,0 +1,64 @@ +from typing import Any, Callable, Optional, TypeVar + +from reactivex import Observable, abc +from reactivex.scheduler import CurrentThreadScheduler + +_T = TypeVar("_T") + + +def return_value_( + value: _T, scheduler: Optional[abc.SchedulerBase] = None +) -> Observable[_T]: + """Returns an observable sequence that contains a single element, + using the specified scheduler to send out observer messages. + There is an alias called 'just'. + + Examples: + >>> res = return(42) + >>> res = return(42, rx.Scheduler.timeout) + + Args: + value: Single element in the resulting observable sequence. + + Returns: + An observable sequence containing the single specified + element. + """ + + def subscribe( + observer: abc.ObserverBase[_T], scheduler_: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + _scheduler = scheduler or scheduler_ or CurrentThreadScheduler.singleton() + + def action(scheduler: abc.SchedulerBase, state: Any = None) -> None: + observer.on_next(value) + observer.on_completed() + + return _scheduler.schedule(action) + + return Observable(subscribe) + + +def from_callable_( + supplier: Callable[[], _T], scheduler: Optional[abc.SchedulerBase] = None +) -> Observable[_T]: + def subscribe( + observer: abc.ObserverBase[_T], scheduler_: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + _scheduler = scheduler or scheduler_ or CurrentThreadScheduler.singleton() + + def action(_: abc.SchedulerBase, __: Any = None) -> None: + nonlocal observer + + try: + observer.on_next(supplier()) + observer.on_completed() + except Exception as e: # pylint: disable=broad-except + observer.on_error(e) + + return _scheduler.schedule(action) + + return Observable(subscribe) + + +__all__ = ["return_value_", "from_callable_"] diff --git a/frogpilot/third_party/reactivex/observable/start.py b/frogpilot/third_party/reactivex/observable/start.py new file mode 100644 index 000000000..e25ade485 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/start.py @@ -0,0 +1,36 @@ +from typing import Callable, Optional, TypeVar + +from reactivex import Observable, abc, to_async + +_T = TypeVar("_T") + + +def start_( + func: Callable[[], _T], scheduler: Optional[abc.SchedulerBase] = None +) -> Observable[_T]: + """Invokes the specified function asynchronously on the specified + scheduler, surfacing the result through an observable sequence. + + Example: + >>> res = reactivex.start(lambda: pprint('hello')) + >>> res = reactivex.start(lambda: pprint('hello'), rx.Scheduler.timeout) + + Args: + func: Function to run asynchronously. + scheduler: [Optional] Scheduler to run the function on. If + not specified, defaults to Scheduler.timeout. + + Remarks: + The function is called immediately, not during the subscription + of the resulting sequence. Multiple subscriptions to the + resulting sequence can observe the function's result. + + Returns: + An observable sequence exposing the function's result value, + or an exception. + """ + + return to_async(func, scheduler)() + + +__all__ = ["start_"] diff --git a/frogpilot/third_party/reactivex/observable/startasync.py b/frogpilot/third_party/reactivex/observable/startasync.py new file mode 100644 index 000000000..458acf763 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/startasync.py @@ -0,0 +1,18 @@ +from asyncio import Future +from typing import Callable, TypeVar + +from reactivex import Observable, from_future, throw + +_T = TypeVar("_T") + + +def start_async_(function_async: Callable[[], "Future[_T]"]) -> Observable[_T]: + try: + future = function_async() + except Exception as ex: # pylint: disable=broad-except + return throw(ex) + + return from_future(future) + + +__all__ = ["start_async_"] diff --git a/frogpilot/third_party/reactivex/observable/throw.py b/frogpilot/third_party/reactivex/observable/throw.py new file mode 100644 index 000000000..1e90cb250 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/throw.py @@ -0,0 +1,25 @@ +from typing import Any, Optional, Union + +from reactivex import Observable, abc +from reactivex.scheduler import ImmediateScheduler + + +def throw_( + exception: Union[str, Exception], scheduler: Optional[abc.SchedulerBase] = None +) -> Observable[Any]: + exception_ = exception if isinstance(exception, Exception) else Exception(exception) + + def subscribe( + observer: abc.ObserverBase[Any], scheduler: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + _scheduler = scheduler or ImmediateScheduler.singleton() + + def action(scheduler: abc.SchedulerBase, state: Any) -> None: + observer.on_error(exception_) + + return _scheduler.schedule(action) + + return Observable(subscribe) + + +__all__ = ["throw_"] diff --git a/frogpilot/third_party/reactivex/observable/timer.py b/frogpilot/third_party/reactivex/observable/timer.py new file mode 100644 index 000000000..3bde5f406 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/timer.py @@ -0,0 +1,134 @@ +from datetime import datetime +from typing import Any, Optional + +from reactivex import Observable, abc, typing +from reactivex.disposable import MultipleAssignmentDisposable +from reactivex.scheduler import TimeoutScheduler +from reactivex.scheduler.periodicscheduler import PeriodicScheduler + + +def observable_timer_date( + duetime: typing.AbsoluteTime, scheduler: Optional[abc.SchedulerBase] = None +) -> Observable[int]: + def subscribe( + observer: abc.ObserverBase[int], scheduler_: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + _scheduler: abc.SchedulerBase = ( + scheduler or scheduler_ or TimeoutScheduler.singleton() + ) + + def action(scheduler: abc.SchedulerBase, state: Any) -> None: + observer.on_next(0) + observer.on_completed() + + return _scheduler.schedule_absolute(duetime, action) + + return Observable(subscribe) + + +def observable_timer_duetime_and_period( + duetime: typing.AbsoluteOrRelativeTime, + period: typing.AbsoluteOrRelativeTime, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Observable[int]: + def subscribe( + observer: abc.ObserverBase[int], scheduler_: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + _scheduler = scheduler or scheduler_ or TimeoutScheduler.singleton() + nonlocal duetime + + if not isinstance(duetime, datetime): + duetime = _scheduler.now + _scheduler.to_timedelta(duetime) + + p = max(0.0, _scheduler.to_seconds(period)) + mad = MultipleAssignmentDisposable() + dt = duetime + count = 0 + + def action(scheduler: abc.SchedulerBase, state: Any) -> None: + nonlocal dt + nonlocal count + + if p > 0.0: + now = scheduler.now + dt = dt + scheduler.to_timedelta(p) + if dt <= now: + dt = now + scheduler.to_timedelta(p) + + observer.on_next(count) + count += 1 + mad.disposable = scheduler.schedule_absolute(dt, action) + + mad.disposable = _scheduler.schedule_absolute(dt, action) + return mad + + return Observable(subscribe) + + +def observable_timer_timespan( + duetime: typing.RelativeTime, scheduler: Optional[abc.SchedulerBase] = None +) -> Observable[int]: + def subscribe( + observer: abc.ObserverBase[int], scheduler_: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + _scheduler = scheduler or scheduler_ or TimeoutScheduler.singleton() + d = _scheduler.to_seconds(duetime) + + def action(scheduler: abc.SchedulerBase, state: Any) -> None: + observer.on_next(0) + observer.on_completed() + + if d <= 0.0: + return _scheduler.schedule(action) + return _scheduler.schedule_relative(d, action) + + return Observable(subscribe) + + +def observable_timer_timespan_and_period( + duetime: typing.RelativeTime, + period: typing.RelativeTime, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Observable[int]: + if duetime == period: + + def subscribe( + observer: abc.ObserverBase[int], + scheduler_: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + _scheduler: abc.SchedulerBase = ( + scheduler or scheduler_ or TimeoutScheduler.singleton() + ) + + def action(count: Optional[int] = None) -> Optional[int]: + if count is not None: + observer.on_next(count) + return count + 1 + return None + + if not isinstance(_scheduler, PeriodicScheduler): + raise ValueError("Sceduler must be PeriodicScheduler") + return _scheduler.schedule_periodic(period, action, state=0) + + return Observable(subscribe) + return observable_timer_duetime_and_period(duetime, period, scheduler) + + +def timer_( + duetime: typing.AbsoluteOrRelativeTime, + period: Optional[typing.RelativeTime] = None, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Observable[int]: + if isinstance(duetime, datetime): + if period is None: + return observable_timer_date(duetime, scheduler) + else: + return observable_timer_duetime_and_period(duetime, period, scheduler) + + if period is None: + return observable_timer_timespan(duetime, scheduler) + + return observable_timer_timespan_and_period(duetime, period, scheduler) + + +__all__ = ["timer_"] diff --git a/frogpilot/third_party/reactivex/observable/toasync.py b/frogpilot/third_party/reactivex/observable/toasync.py new file mode 100644 index 000000000..72164fe1e --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/toasync.py @@ -0,0 +1,54 @@ +from typing import Any, Callable, Optional, TypeVar + +from reactivex import Observable, abc +from reactivex import operators as ops +from reactivex.scheduler import TimeoutScheduler +from reactivex.subject import AsyncSubject + +_T = TypeVar("_T") + + +def to_async_( + func: Callable[..., _T], scheduler: Optional[abc.SchedulerBase] = None +) -> Callable[..., Observable[_T]]: + """Converts the function into an asynchronous function. Each + invocation of the resulting asynchronous function causes an + invocation of the original synchronous function on the specified + scheduler. + + Examples: + res = reactivex.to_async(lambda x, y: x + y)(4, 3) + res = reactivex.to_async(lambda x, y: x + y, Scheduler.timeout)(4, 3) + res = reactivex.to_async(lambda x: log.debug(x), Scheduler.timeout)('hello') + + Args: + func: Function to convert to an asynchronous function. + scheduler: [Optional] Scheduler to run the function on. If not + specified, defaults to Scheduler.timeout. + + Returns: + Aynchronous function. + """ + + _scheduler = scheduler or TimeoutScheduler.singleton() + + def wrapper(*args: Any) -> Observable[_T]: + subject: AsyncSubject[_T] = AsyncSubject() + + def action(scheduler: abc.SchedulerBase, state: Any = None) -> None: + try: + result = func(*args) + except Exception as ex: # pylint: disable=broad-except + subject.on_error(ex) + return + + subject.on_next(result) + subject.on_completed() + + _scheduler.schedule(action) + return subject.pipe(ops.as_observable()) + + return wrapper + + +__all__ = ["to_async_"] diff --git a/frogpilot/third_party/reactivex/observable/using.py b/frogpilot/third_party/reactivex/observable/using.py new file mode 100644 index 000000000..ba63f17a7 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/using.py @@ -0,0 +1,53 @@ +from typing import Callable, Optional, TypeVar + +import reactivex +from reactivex import Observable, abc +from reactivex.disposable import CompositeDisposable, Disposable + +_T = TypeVar("_T") + + +def using_( + resource_factory: Callable[[], abc.DisposableBase], + observable_factory: Callable[[abc.DisposableBase], Observable[_T]], +) -> Observable[_T]: + """Constructs an observable sequence that depends on a resource + object, whose lifetime is tied to the resulting observable + sequence's lifetime. + + Example: + >>> res = reactivex.using(lambda: AsyncSubject(), lambda: s: s) + + Args: + resource_factory: Factory function to obtain a resource object. + observable_factory: Factory function to obtain an observable + sequence that depends on the obtained resource. + + Returns: + An observable sequence whose lifetime controls the lifetime + of the dependent resource object. + """ + + def subscribe( + observer: abc.ObserverBase[_T], scheduler: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + disp: abc.DisposableBase = Disposable() + + try: + resource = resource_factory() + if resource is not None: + disp = resource + + source = observable_factory(resource) + except Exception as exception: # pylint: disable=broad-except + d = reactivex.throw(exception).subscribe(observer, scheduler=scheduler) + return CompositeDisposable(d, disp) + + return CompositeDisposable( + source.subscribe(observer, scheduler=scheduler), disp + ) + + return Observable(subscribe) + + +__all__ = ["using_"] diff --git a/frogpilot/third_party/reactivex/observable/withlatestfrom.py b/frogpilot/third_party/reactivex/observable/withlatestfrom.py new file mode 100644 index 000000000..8aff8721f --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/withlatestfrom.py @@ -0,0 +1,59 @@ +from typing import Any, List, Optional, Tuple + +from reactivex import Observable, abc +from reactivex.disposable import CompositeDisposable, SingleAssignmentDisposable +from reactivex.internal.utils import NotSet + + +def with_latest_from_( + parent: Observable[Any], *sources: Observable[Any] +) -> Observable[Tuple[Any, ...]]: + NO_VALUE = NotSet() + + def subscribe( + observer: abc.ObserverBase[Any], scheduler: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + def subscribeall( + parent: Observable[Any], *children: Observable[Any] + ) -> List[SingleAssignmentDisposable]: + + values = [NO_VALUE for _ in children] + + def subscribechild( + i: int, child: Observable[Any] + ) -> SingleAssignmentDisposable: + subscription = SingleAssignmentDisposable() + + def on_next(value: Any) -> None: + with parent.lock: + values[i] = value + + subscription.disposable = child.subscribe( + on_next, observer.on_error, scheduler=scheduler + ) + return subscription + + parent_subscription = SingleAssignmentDisposable() + + def on_next(value: Any) -> None: + with parent.lock: + if NO_VALUE not in values: + result = (value,) + tuple(values) + observer.on_next(result) + + children_subscription = [ + subscribechild(i, child) for i, child in enumerate(children) + ] + disp = parent.subscribe( + on_next, observer.on_error, observer.on_completed, scheduler=scheduler + ) + parent_subscription.disposable = disp + + return [parent_subscription] + children_subscription + + return CompositeDisposable(subscribeall(parent, *sources)) + + return Observable(subscribe) + + +__all__ = ["with_latest_from_"] diff --git a/frogpilot/third_party/reactivex/observable/zip.py b/frogpilot/third_party/reactivex/observable/zip.py new file mode 100644 index 000000000..a8d1baa60 --- /dev/null +++ b/frogpilot/third_party/reactivex/observable/zip.py @@ -0,0 +1,90 @@ +from asyncio import Future +from threading import RLock +from typing import Any, List, Optional, Tuple + +from reactivex import Observable, abc, from_future +from reactivex.disposable import CompositeDisposable, SingleAssignmentDisposable +from reactivex.internal import synchronized + + +def zip_(*args: Observable[Any]) -> Observable[Tuple[Any, ...]]: + """Merges the specified observable sequences into one observable + sequence by creating a tuple whenever all of the + observable sequences have produced an element at a corresponding + index. + + Example: + >>> res = zip(obs1, obs2) + + Args: + args: Observable sources to zip. + + Returns: + An observable sequence containing the result of combining + elements of the sources as tuple. + """ + + sources = list(args) + + def subscribe( + observer: abc.ObserverBase[Any], scheduler: Optional[abc.SchedulerBase] = None + ) -> CompositeDisposable: + n = len(sources) + queues: List[List[Any]] = [[] for _ in range(n)] + lock = RLock() + is_completed = [False] * n + + @synchronized(lock) + def next_(i: int) -> None: + if all(len(q) for q in queues): + try: + queued_values = [x.pop(0) for x in queues] + res = tuple(queued_values) + except Exception as ex: # pylint: disable=broad-except + observer.on_error(ex) + return + + observer.on_next(res) + + # after sending the zipped values, complete the observer if at least one + # upstream observable is completed and its queue has length zero + if any( + ( + done + for queue, done in zip(queues, is_completed) + if len(queue) == 0 + ) + ): + observer.on_completed() + + def completed(i: int) -> None: + is_completed[i] = True + if len(queues[i]) == 0: + observer.on_completed() + + subscriptions: List[Optional[abc.DisposableBase]] = [None] * n + + def func(i: int) -> None: + source: Observable[Any] = sources[i] + if isinstance(source, Future): + source = from_future(source) + + sad = SingleAssignmentDisposable() + + def on_next(x: Any) -> None: + queues[i].append(x) + next_(i) + + sad.disposable = source.subscribe( + on_next, observer.on_error, lambda: completed(i), scheduler=scheduler + ) + subscriptions[i] = sad + + for idx in range(n): + func(idx) + return CompositeDisposable(subscriptions) + + return Observable(subscribe) + + +__all__ = ["zip_"] diff --git a/frogpilot/third_party/reactivex/observer/__init__.py b/frogpilot/third_party/reactivex/observer/__init__.py new file mode 100644 index 000000000..d68f8991e --- /dev/null +++ b/frogpilot/third_party/reactivex/observer/__init__.py @@ -0,0 +1,6 @@ +from .autodetachobserver import AutoDetachObserver +from .observeonobserver import ObserveOnObserver +from .observer import Observer +from .scheduledobserver import ScheduledObserver + +__all__ = ["AutoDetachObserver", "ObserveOnObserver", "Observer", "ScheduledObserver"] diff --git a/frogpilot/third_party/reactivex/observer/autodetachobserver.py b/frogpilot/third_party/reactivex/observer/autodetachobserver.py new file mode 100644 index 000000000..ca6152873 --- /dev/null +++ b/frogpilot/third_party/reactivex/observer/autodetachobserver.py @@ -0,0 +1,65 @@ +from typing import Optional, TypeVar + +from reactivex.disposable import SingleAssignmentDisposable +from reactivex.internal import default_error, noop + +from .. import abc, typing + +_T_in = TypeVar("_T_in", contravariant=True) + + +class AutoDetachObserver(abc.ObserverBase[_T_in]): + def __init__( + self, + on_next: Optional[typing.OnNext[_T_in]] = None, + on_error: Optional[typing.OnError] = None, + on_completed: Optional[typing.OnCompleted] = None, + ) -> None: + self._on_next = on_next or noop + self._on_error = on_error or default_error + self._on_completed = on_completed or noop + + self._subscription = SingleAssignmentDisposable() + self.is_stopped = False + + def on_next(self, value: _T_in) -> None: + if self.is_stopped: + return + self._on_next(value) + + def on_error(self, error: Exception) -> None: + if self.is_stopped: + return + self.is_stopped = True + + try: + self._on_error(error) + finally: + self.dispose() + + def on_completed(self) -> None: + if self.is_stopped: + return + self.is_stopped = True + + try: + self._on_completed() + finally: + self.dispose() + + def set_disposable(self, value: abc.DisposableBase) -> None: + self._subscription.disposable = value + + subscription = property(fset=set_disposable) + + def dispose(self) -> None: + self.is_stopped = True + self._subscription.dispose() + + def fail(self, exn: Exception) -> bool: + if self.is_stopped: + return False + + self.is_stopped = True + self._on_error(exn) + return True diff --git a/frogpilot/third_party/reactivex/observer/observeonobserver.py b/frogpilot/third_party/reactivex/observer/observeonobserver.py new file mode 100644 index 000000000..8c4a20b96 --- /dev/null +++ b/frogpilot/third_party/reactivex/observer/observeonobserver.py @@ -0,0 +1,19 @@ +from typing import TypeVar + +from .scheduledobserver import ScheduledObserver + +_T = TypeVar("_T") + + +class ObserveOnObserver(ScheduledObserver[_T]): + def _on_next_core(self, value: _T) -> None: + super()._on_next_core(value) + self.ensure_active() + + def _on_error_core(self, error: Exception) -> None: + super()._on_error_core(error) + self.ensure_active() + + def _on_completed_core(self) -> None: + super()._on_completed_core() + self.ensure_active() diff --git a/frogpilot/third_party/reactivex/observer/observer.py b/frogpilot/third_party/reactivex/observer/observer.py new file mode 100644 index 000000000..11ec0e096 --- /dev/null +++ b/frogpilot/third_party/reactivex/observer/observer.py @@ -0,0 +1,113 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, Callable, Optional, TypeVar + +from reactivex import abc +from reactivex.internal.basic import default_error, noop +from reactivex.typing import OnCompleted, OnError, OnNext + +_T_in = TypeVar("_T_in", contravariant=True) + +if TYPE_CHECKING: + from reactivex.notification import Notification +else: + + class Notification: + pass + + +class Observer(abc.ObserverBase[_T_in], abc.DisposableBase): + """Base class for implementations of the Observer class. This base + class enforces the grammar of observers where OnError and + OnCompleted are terminal messages. + """ + + def __init__( + self, + on_next: Optional[OnNext[_T_in]] = None, + on_error: Optional[OnError] = None, + on_completed: Optional[OnCompleted] = None, + ) -> None: + self.is_stopped = False + self._handler_on_next: OnNext[_T_in] = on_next or noop + self._handler_on_error: OnError = on_error or default_error + self._handler_on_completed: OnCompleted = on_completed or noop + + def on_next(self, value: _T_in) -> None: + """Notify the observer of a new element in the sequence.""" + if not self.is_stopped: + self._on_next_core(value) + + def _on_next_core(self, value: _T_in) -> None: + """For Subclassing purpose. This method is called by `on_next()` + method until the observer is stopped. + """ + self._handler_on_next(value) + + def on_error(self, error: Exception) -> None: + """Notify the observer that an exception has occurred. + + Args: + error: The error that occurred. + """ + + if not self.is_stopped: + self.is_stopped = True + self._on_error_core(error) + + def _on_error_core(self, error: Exception) -> None: + """For Subclassing purpose. This method is called by `on_error()` + method until the observer is stopped. + """ + self._handler_on_error(error) + + def on_completed(self) -> None: + """Notifies the observer of the end of the sequence.""" + + if not self.is_stopped: + self.is_stopped = True + self._on_completed_core() + + def _on_completed_core(self) -> None: + """For Subclassing purpose. This method is called by `on_completed()` + method until the observer is stopped. + """ + self._handler_on_completed() + + def dispose(self) -> None: + """Disposes the observer, causing it to transition to the + stopped state.""" + self.is_stopped = True + + def fail(self, exn: Exception) -> bool: + if not self.is_stopped: + self.is_stopped = True + self._on_error_core(exn) + return True + + return False + + def throw(self, error: Exception) -> None: + import traceback + + traceback.print_stack() + raise error + + def to_notifier(self) -> Callable[[Notification[_T_in]], None]: + """Creates a notification callback from an observer. + + Returns the action that forwards its input notification to the + underlying observer.""" + + def func(notifier: Notification[_T_in]) -> None: + return notifier.accept(self) + + return func + + def as_observer(self) -> abc.ObserverBase[_T_in]: + """Hides the identity of an observer. + + Returns an observer that hides the identity of the specified + observer. + """ + return Observer(self.on_next, self.on_error, self.on_completed) diff --git a/frogpilot/third_party/reactivex/observer/scheduledobserver.py b/frogpilot/third_party/reactivex/observer/scheduledobserver.py new file mode 100644 index 000000000..744a7699b --- /dev/null +++ b/frogpilot/third_party/reactivex/observer/scheduledobserver.py @@ -0,0 +1,81 @@ +import threading +from typing import Any, List, TypeVar + +from reactivex import abc, typing +from reactivex.disposable import SerialDisposable + +from .observer import Observer + +_T_in = TypeVar("_T_in", contravariant=True) + + +class ScheduledObserver(Observer[_T_in]): + def __init__( + self, scheduler: abc.SchedulerBase, observer: abc.ObserverBase[_T_in] + ) -> None: + super().__init__() + + self.scheduler = scheduler + self.observer = observer + + self.lock = threading.RLock() + self.is_acquired = False + self.has_faulted = False + self.queue: List[typing.Action] = [] + self.disposable = SerialDisposable() + + # Note to self: list append is thread safe + # http://effbot.org/pyfaq/what-kinds-of-global-value-mutation-are-thread-safe.htm + + def _on_next_core(self, value: Any) -> None: + def action() -> None: + self.observer.on_next(value) + + self.queue.append(action) + + def _on_error_core(self, error: Exception) -> None: + def action() -> None: + self.observer.on_error(error) + + self.queue.append(action) + + def _on_completed_core(self) -> None: + def action() -> None: + self.observer.on_completed() + + self.queue.append(action) + + def ensure_active(self) -> None: + is_owner = False + + with self.lock: + if not self.has_faulted and self.queue: + is_owner = not self.is_acquired + self.is_acquired = True + + if is_owner: + self.disposable.disposable = self.scheduler.schedule(self.run) + + def run(self, scheduler: abc.SchedulerBase, state: Any) -> None: + parent = self + + with self.lock: + if parent.queue: + work = parent.queue.pop(0) + else: + parent.is_acquired = False + return + + try: + work() + except Exception: + with self.lock: + parent.queue = [] + parent.has_faulted = True + raise + + self.scheduler.schedule(self.run) + + def dispose(self) -> None: + super().dispose() + self.disposable.dispose() diff --git a/frogpilot/third_party/reactivex/operators/__init__.py b/frogpilot/third_party/reactivex/operators/__init__.py new file mode 100644 index 000000000..0851b22fd --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/__init__.py @@ -0,0 +1,4308 @@ +# pylint: disable=too-many-lines,redefined-builtin,import-outside-toplevel + + +from asyncio import Future +from typing import ( + TYPE_CHECKING, + Any, + Callable, + Dict, + Iterable, + List, + Optional, + Set, + Tuple, + Type, + TypeVar, + Union, + cast, + overload, +) + +from reactivex import ( + ConnectableObservable, + GroupedObservable, + Notification, + Observable, + abc, + compose, + typing, +) +from reactivex.internal.basic import identity +from reactivex.internal.utils import NotSet +from reactivex.subject import Subject +from reactivex.typing import ( + Accumulator, + Comparer, + Mapper, + MapperIndexed, + Predicate, + PredicateIndexed, +) + +_T = TypeVar("_T") +_T1 = TypeVar("_T1") +_T2 = TypeVar("_T2") +_TKey = TypeVar("_TKey") +_TState = TypeVar("_TState") +_TValue = TypeVar("_TValue") +_TRight = TypeVar("_TRight") +_TLeft = TypeVar("_TLeft") + +_A = TypeVar("_A") +_B = TypeVar("_B") +_C = TypeVar("_C") +_D = TypeVar("_D") + + +def all(predicate: Predicate[_T]) -> Callable[[Observable[_T]], Observable[bool]]: + """Determines whether all elements of an observable sequence satisfy + a condition. + + .. marble:: + :alt: all + + --1--2--3--4--5-| + [ all(i: i<10) ] + ----------------true-| + + Example: + >>> op = all(lambda value: value.length > 3) + + Args: + predicate: A function to test each element for a condition. + + Returns: + An operator function that takes an observable source and + returns an observable sequence containing a single element + determining whether all elements in the source sequence pass + the test in the specified predicate. + """ + from ._all import all_ + + return all_(predicate) + + +def amb(right_source: Observable[_T]) -> Callable[[Observable[_T]], Observable[_T]]: + """Propagates the observable sequence that reacts first. + + .. marble:: + :alt: amb + + ---8--6--9-----------| + --1--2--3---5--------| + ----------10-20-30---| + [ amb() ] + --1--2--3---5--------| + + Example: + >>> op = amb(ys) + + Returns: + An operator function that takes an observable source and + returns an observable sequence that surfaces any of the given + sequences, whichever reacted first. + """ + from ._amb import amb_ + + return amb_(right_source) + + +def as_observable() -> Callable[[Observable[_T]], Observable[_T]]: + """Hides the identity of an observable sequence. + + Returns: + An operator function that takes an observable source and + returns and observable sequence that hides the identity of the + source sequence. + """ + from ._asobservable import as_observable_ + + return as_observable_() + + +def average( + key_mapper: Optional[Mapper[_T, float]] = None +) -> Callable[[Observable[_T]], Observable[float]]: + """The average operator. + + Computes the average of an observable sequence of values that + are in the sequence or obtained by invoking a transform function on + each element of the input sequence if present. + + .. marble:: + :alt: average + + ---1--2--3--4----| + [ average() ] + -----------------2.5-| + + Examples: + >>> op = average() + >>> op = average(lambda x: x.value) + + Args: + key_mapper: [Optional] A transform function to apply to each element. + + Returns: + An operator function that takes an observable source and + returns an observable sequence containing a single element with + the average of the sequence of values. + """ + from ._average import average_ + + return average_(key_mapper) + + +def buffer( + boundaries: Observable[Any], +) -> Callable[[Observable[_T]], Observable[List[_T]]]: + """Projects each element of an observable sequence into zero or + more buffers. + + .. marble:: + :alt: buffer + + ---a-----b-----c--------| + --1--2--3--4--5--6--7---| + [ buffer() ] + ---1-----2,3---4,5------| + + Examples: + >>> res = buffer(reactivex.interval(1.0)) + + Args: + boundaries: Observable sequence whose elements denote the + creation and completion of buffers. + + Returns: + A function that takes an observable source and returns an + observable sequence of buffers. + """ + from ._buffer import buffer_ + + return buffer_(boundaries) + + +def buffer_when( + closing_mapper: Callable[[], Observable[Any]] +) -> Callable[[Observable[_T]], Observable[List[_T]]]: + """Projects each element of an observable sequence into zero or + more buffers. + + .. marble:: + :alt: buffer_when + + --------c-| + --------c-| + --------c-| + ---1--2--3--4--5--6-------| + [ buffer_when() ] + +-------1,2-----3,4,5---6-| + + Examples: + >>> res = buffer_when(lambda: reactivex.timer(0.5)) + + Args: + closing_mapper: A function invoked to define the closing of each + produced buffer. A buffer is started when the previous one is + closed, resulting in non-overlapping buffers. The buffer is closed + when one item is emitted or when the observable completes. + + Returns: + A function that takes an observable source and returns an + observable sequence of windows. + """ + from ._buffer import buffer_when_ + + return buffer_when_(closing_mapper) + + +def buffer_toggle( + openings: Observable[Any], closing_mapper: Callable[[Any], Observable[Any]] +) -> Callable[[Observable[_T]], Observable[List[_T]]]: + """Projects each element of an observable sequence into zero or + more buffers. + + .. marble:: + :alt: buffer_toggle + + ---a-----------b--------------| + ---d--| + --------e--| + ----1--2--3--4--5--6--7--8----| + [ buffer_toggle() ] + ------1----------------5,6,7--| + + >>> res = buffer_toggle(reactivex.interval(0.5), lambda i: reactivex.timer(i)) + + Args: + openings: Observable sequence whose elements denote the + creation of buffers. + closing_mapper: A function invoked to define the closing of each + produced buffer. Value from openings Observable that initiated + the associated buffer is provided as argument to the function. The + buffer is closed when one item is emitted or when the observable + completes. + + Returns: + A function that takes an observable source and returns an + observable sequence of windows. + """ + from ._buffer import buffer_toggle_ + + return buffer_toggle_(openings, closing_mapper) + + +def buffer_with_count( + count: int, skip: Optional[int] = None +) -> Callable[[Observable[_T]], Observable[List[_T]]]: + """Projects each element of an observable sequence into zero or more + buffers which are produced based on element count information. + + .. marble:: + :alt: buffer_with_count + + ----1-2-3-4-5-6------| + [buffer_with_count(3)] + --------1,2,3-4,5,6--| + + Examples: + >>> res = buffer_with_count(10)(xs) + >>> res = buffer_with_count(10, 1)(xs) + + Args: + count: Length of each buffer. + skip: [Optional] Number of elements to skip between + creation of consecutive buffers. If not provided, defaults to + the count. + + Returns: + A function that takes an observable source and returns an + observable sequence of buffers. + """ + from ._buffer import buffer_with_count_ + + return buffer_with_count_(count, skip) + + +def buffer_with_time( + timespan: typing.RelativeTime, + timeshift: Optional[typing.RelativeTime] = None, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[List[_T]]]: + """Projects each element of an observable sequence into zero or more + buffers which are produced based on timing information. + + .. marble:: + :alt: buffer_with_time + + ---1-2-3-4-5-6-----| + [buffer_with_time()] + -------1,2,3-4,5,6-| + + Examples: + >>> # non-overlapping segments of 1 second + >>> res = buffer_with_time(1.0) + >>> # segments of 1 second with time shift 0.5 seconds + >>> res = buffer_with_time(1.0, 0.5) + + Args: + timespan: Length of each buffer (specified as a float denoting seconds + or an instance of timedelta). + timeshift: [Optional] Interval between creation of consecutive buffers + (specified as a float denoting seconds or an instance of timedelta). + If not specified, the timeshift will be the same as the timespan + argument, resulting in non-overlapping adjacent buffers. + scheduler: [Optional] Scheduler to run the timer on. If not specified, + the timeout scheduler is used + + Returns: + An operator function that takes an observable source and + returns an observable sequence of buffers. + """ + from ._bufferwithtime import buffer_with_time_ + + return buffer_with_time_(timespan, timeshift, scheduler) + + +def buffer_with_time_or_count( + timespan: typing.RelativeTime, + count: int, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[List[_T]]]: + """Projects each element of an observable sequence into a buffer + that is completed when either it's full or a given amount of time + has elapsed. + + .. marble:: + :alt: buffer_with_time_or_count + + --1-2-3-4-5-6------| + [ buffer() ] + ------1,2,3-4,5,6--| + + Examples: + >>> # 5s or 50 items in an array + >>> res = source._buffer_with_time_or_count(5.0, 50) + >>> # 5s or 50 items in an array + >>> res = source._buffer_with_time_or_count(5.0, 50, Scheduler.timeout) + + Args: + timespan: Maximum time length of a buffer. + count: Maximum element count of a buffer. + scheduler: [Optional] Scheduler to run buffering timers on. If + not specified, the timeout scheduler is used. + + Returns: + An operator function that takes an observable source and + returns an observable sequence of buffers. + """ + from ._bufferwithtimeorcount import buffer_with_time_or_count_ + + return buffer_with_time_or_count_(timespan, count, scheduler) + + +def catch( + handler: Union[ + Observable[_T], Callable[[Exception, Observable[_T]], Observable[_T]] + ] +) -> Callable[[Observable[_T]], Observable[_T]]: + """Continues an observable sequence that is terminated by an + exception with the next observable sequence. + + .. marble:: + :alt: catch + + ---1---2---3-* + a-7-8-| + [ catch(a) ] + ---1---2---3---7-8-| + + Examples: + >>> op = catch(ys) + >>> op = catch(lambda ex, src: ys(ex)) + + Args: + handler: Second observable sequence used to produce + results when an error occurred in the first sequence, or an + exception handler function that returns an observable sequence + given the error and source observable that occurred in the + first sequence. + + Returns: + A function taking an observable source and returns an + observable sequence containing the first sequence's elements, + followed by the elements of the handler sequence in case an + exception occurred. + """ + from ._catch import catch_ + + return catch_(handler) + + +def combine_latest( + *others: Observable[Any], +) -> Callable[[Observable[Any]], Observable[Any]]: + """Merges the specified observable sequences into one observable + sequence by creating a tuple whenever any of the + observable sequences produces an element. + + .. marble:: + :alt: combine_latest + + ---a-----b--c------| + --1---2--------3---| + [ combine_latest() ] + ---a1-a2-b2-c2-c3--| + + Examples: + >>> obs = combine_latest(other) + >>> obs = combine_latest(obs1, obs2, obs3) + + Returns: + An operator function that takes an observable sources and + returns an observable sequence containing the result of + combining elements of the sources into a tuple. + """ + from ._combinelatest import combine_latest_ + + return combine_latest_(*others) + + +def concat(*sources: Observable[_T]) -> Callable[[Observable[_T]], Observable[_T]]: + """Concatenates all the observable sequences. + + .. marble:: + :alt: concat + + ---1--2--3--| + --6--8--| + [ concat() ] + ---1--2--3----6--8-| + + Examples: + >>> op = concat(xs, ys, zs) + + Returns: + An operator function that takes one or more observable sources and + returns an observable sequence that contains the elements of + each given sequence, in sequential order. + """ + from ._concat import concat_ + + return concat_(*sources) + + +def contains( + value: _T, comparer: Optional[typing.Comparer[_T]] = None +) -> Callable[[Observable[_T]], Observable[bool]]: + """Determines whether an observable sequence contains a specified + element with an optional equality comparer. + + .. marble:: + :alt: contains + + --1--2--3--4--| + [ contains(3) ] + --------------true-| + + Examples: + >>> op = contains(42) + >>> op = contains({ "value": 42 }, lambda x, y: x["value"] == y["value"]) + + Args: + value: The value to locate in the source sequence. + comparer: [Optional] An equality comparer to compare elements. + + Returns: + A function that takes a source observable that returns an + observable sequence containing a single element determining + whether the source sequence contains an element that has the + specified value. + """ + from ._contains import contains_ + + return contains_(value, comparer) + + +def count( + predicate: Optional[typing.Predicate[_T]] = None, +) -> Callable[[Observable[_T]], Observable[int]]: + """Returns an observable sequence containing a value that + represents how many elements in the specified observable sequence + satisfy a condition if provided, else the count of items. + + .. marble:: + :alt: count + + --1--2--3--4--| + [ count(i: i>2) ] + --------------2-| + + Examples: + >>> op = count() + >>> op = count(lambda x: x > 3) + + Args: + predicate: A function to test each element for a condition. + + Returns: + An operator function that takes an observable source and + returns an observable sequence containing a single element with + a number that represents how many elements in the input + sequence satisfy the condition in the predicate function if + provided, else the count of items in the sequence. + """ + + from ._count import count_ + + return count_(predicate) + + +def debounce( + duetime: typing.RelativeTime, scheduler: Optional[abc.SchedulerBase] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + """Ignores values from an observable sequence which are followed by + another value before duetime. + + .. marble:: + :alt: debounce + + --1--2-3-4--5------| + [ debounce() ] + ----1------4---5---| + + Example: + >>> res = debounce(5.0) # 5 seconds + + Args: + duetime: Duration of the throttle period for each value + (specified as a float denoting seconds or an instance of timedelta). + scheduler: Scheduler to debounce values on. + + Returns: + An operator function that takes the source observable and + returns the debounced observable sequence. + """ + from ._debounce import debounce_ + + return debounce_(duetime, scheduler) + + +throttle_with_timeout = debounce + + +@overload +def default_if_empty( + default_value: _T, +) -> Callable[[Observable[_T]], Observable[_T]]: + ... + + +@overload +def default_if_empty() -> Callable[[Observable[_T]], Observable[Optional[_T]]]: + ... + + +def default_if_empty( + default_value: Any = None, +) -> Callable[[Observable[Any]], Observable[Any]]: + """Returns the elements of the specified sequence or the specified + value in a singleton sequence if the sequence is empty. + + .. marble:: + :alt: default_if_empty + + ----------| + [default_if_empty(42)] + ----------42-| + + Examples: + >>> res = obs = default_if_empty() + >>> obs = default_if_empty(False) + + Args: + default_value: The value to return if the sequence is empty. If + not provided, this defaults to None. + + Returns: + An operator function that takes an observable source and + returns an observable sequence that contains the specified + default value if the source is empty otherwise, the elements of + the source. + """ + from ._defaultifempty import default_if_empty_ + + return default_if_empty_(default_value) + + +def delay_subscription( + duetime: typing.AbsoluteOrRelativeTime, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Time shifts the observable sequence by delaying the + subscription. + + .. marble:: + :alt: delay_subscription + + ----1--2--3--4-----| + [ delay() ] + --------1--2--3--4-| + + Example: + >>> res = delay_subscription(5.0) # 5s + + Args: + duetime: Absolute or relative time to perform the subscription + at. + scheduler: Scheduler to delay subscription on. + + Returns: + A function that take a source observable and returns a + time-shifted observable sequence. + """ + from ._delaysubscription import delay_subscription_ + + return delay_subscription_(duetime, scheduler=scheduler) + + +def delay_with_mapper( + subscription_delay: Union[ + Observable[Any], + typing.Mapper[Any, Observable[Any]], + None, + ] = None, + delay_duration_mapper: Optional[typing.Mapper[_T, Observable[Any]]] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Time shifts the observable sequence based on a subscription + delay and a delay mapper function for each element. + + .. marble:: + :alt: delay_with_mapper + + ----1--2--3--4-----| + [ delay() ] + --------1--2--3--4-| + + Examples: + >>> # with mapper only + >>> res = source.delay_with_mapper(lambda x: Scheduler.timer(5.0)) + >>> # with delay and mapper + >>> res = source.delay_with_mapper( + reactivex.timer(2.0), lambda x: reactivex.timer(x) + ) + + Args: + subscription_delay: [Optional] Sequence indicating the delay + for the subscription to the source. + delay_duration_mapper: [Optional] Selector function to retrieve + a sequence indicating the delay for each given element. + + Returns: + A function that takes an observable source and returns a + time-shifted observable sequence. + """ + from ._delaywithmapper import delay_with_mapper_ + + return delay_with_mapper_(subscription_delay, delay_duration_mapper) + + +def dematerialize() -> Callable[[Observable[Notification[_T]]], Observable[_T]]: + """Dematerialize operator. + + Dematerializes the explicit notification values of an + observable sequence as implicit notifications. + + Returns: + An observable sequence exhibiting the behavior + corresponding to the source sequence's notification values. + """ + from ._dematerialize import dematerialize_ + + return dematerialize_() + + +def delay( + duetime: typing.RelativeTime, scheduler: Optional[abc.SchedulerBase] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + """The delay operator. + + .. marble:: + :alt: delay + + ----1--2--3--4-----| + [ delay() ] + --------1--2--3--4-| + + Time shifts the observable sequence by duetime. The relative time + intervals between the values are preserved. + + Examples: + >>> res = delay(timedelta(seconds=10)) + >>> res = delay(5.0) + + Args: + duetime: Relative time, specified as a float denoting seconds or an + instance of timedelta, by which to shift the observable sequence. + scheduler: [Optional] Scheduler to run the delay timers on. + If not specified, the timeout scheduler is used. + + Returns: + A partially applied operator function that takes the source + observable and returns a time-shifted sequence. + """ + from ._delay import delay_ + + return delay_(duetime, scheduler) + + +def distinct( + key_mapper: Optional[Mapper[_T, _TKey]] = None, + comparer: Optional[Comparer[_TKey]] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns an observable sequence that contains only distinct + elements according to the key_mapper and the comparer. Usage of + this operator should be considered carefully due to the maintenance + of an internal lookup structure which can grow large. + + .. marble:: + :alt: distinct + + -0-1-2-1-3-4-2-0---| + [ distinct() ] + -0-1-2---3-4-------| + + + Examples: + >>> res = obs = xs.distinct() + >>> obs = xs.distinct(lambda x: x.id) + >>> obs = xs.distinct(lambda x: x.id, lambda a,b: a == b) + + Args: + key_mapper: [Optional] A function to compute the comparison + key for each element. + comparer: [Optional] Used to compare items in the collection. + + Returns: + An operator function that takes an observable source and + returns an observable sequence only containing the distinct + elements, based on a computed key value, from the source + sequence. + """ + from ._distinct import distinct_ + + return distinct_(key_mapper, comparer) + + +def distinct_until_changed( + key_mapper: Optional[Mapper[_T, _TKey]] = None, + comparer: Optional[Comparer[_TKey]] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns an observable sequence that contains only distinct + contiguous elements according to the key_mapper and the comparer. + + .. marble:: + :alt: distinct_until_changed + + -0-1-1-2-3-1-2-2-3-| + [ distinct() ] + -0-1---2-3-1-2---3-| + + + Examples: + >>> op = distinct_until_changed(); + >>> op = distinct_until_changed(lambda x: x.id) + >>> op = distinct_until_changed(lambda x: x.id, lambda x, y: x == y) + + Args: + key_mapper: [Optional] A function to compute the comparison key + for each element. If not provided, it projects the value. + comparer: [Optional] Equality comparer for computed key values. + If not provided, defaults to an equality comparer function. + + Returns: + An operator function that takes an observable source and + returns an observable sequence only containing the distinct + contiguous elements, based on a computed key value, from the + source sequence. + """ + from ._distinctuntilchanged import distinct_until_changed_ + + return distinct_until_changed_(key_mapper, comparer) + + +def do(observer: abc.ObserverBase[_T]) -> Callable[[Observable[_T]], Observable[_T]]: + """Invokes an action for each element in the observable sequence + and invokes an action on graceful or exceptional termination of the + observable sequence. This method can be used for debugging, + logging, etc. of query behavior by intercepting the message stream + to run arbitrary actions for messages on the pipeline. + + .. marble:: + :alt: do + + ----1---2---3---4---| + [ do(i: foo()) ] + ----1---2---3---4---| + + + >>> do(observer) + + Args: + observer: Observer + + Returns: + An operator function that takes the source observable and + returns the source sequence with the side-effecting behavior + applied. + """ + from ._do import do_ + + return do_(observer) + + +def do_action( + on_next: Optional[typing.OnNext[_T]] = None, + on_error: Optional[typing.OnError] = None, + on_completed: Optional[typing.OnCompleted] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Invokes an action for each element in the observable sequence + and invokes an action on graceful or exceptional termination of the + observable sequence. This method can be used for debugging, + logging, etc. of query behavior by intercepting the message stream + to run arbitrary actions for messages on the pipeline. + + .. marble:: + :alt: do_action + + ----1---2---3---4---| + [do_action(i: foo())] + ----1---2---3---4---| + + Examples: + >>> do_action(send) + >>> do_action(on_next, on_error) + >>> do_action(on_next, on_error, on_completed) + + Args: + on_next: [Optional] Action to invoke for each element in the + observable sequence. + on_error: [Optional] Action to invoke on exceptional + termination of the observable sequence. + on_completed: [Optional] Action to invoke on graceful + termination of the observable sequence. + + Returns: + An operator function that takes the source observable an + returns the source sequence with the side-effecting behavior + applied. + """ + from ._do import do_action_ + + return do_action_(on_next, on_error, on_completed) + + +def do_while( + condition: Predicate[Observable[_T]], +) -> Callable[[Observable[_T]], Observable[_T]]: + """Repeats source as long as condition holds emulating a do while + loop. + + .. marble:: + :alt: do_while + + --1--2--| + [ do_while() ] + --1--2--1--2--1--2--| + + + Args: + condition: The condition which determines if the source will be + repeated. + + Returns: + An observable sequence which is repeated as long + as the condition holds. + """ + from ._dowhile import do_while_ + + return do_while_(condition) + + +def element_at(index: int) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns the element at a specified index in a sequence. + + .. marble:: + :alt: element_at + + ----1---2---3---4---| + [ element_at(2) ] + ------------3-| + + Example: + >>> res = source.element_at(5) + + Args: + index: The zero-based index of the element to retrieve. + + Returns: + An operator function that takes an observable source and + returns an observable sequence that produces the element at + the specified position in the source sequence. + """ + from ._elementatordefault import element_at_or_default_ + + return element_at_or_default_(index, False) + + +def element_at_or_default( + index: int, default_value: Optional[_T] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns the element at a specified index in a sequence or a + default value if the index is out of range. + + .. marble:: + :alt: element_at_or_default + + --1---2---3---4-| + [ element_at(6, a) ] + ----------------a-| + + Example: + >>> res = source.element_at_or_default(5) + >>> res = source.element_at_or_default(5, 0) + + Args: + index: The zero-based index of the element to retrieve. + default_value: [Optional] The default value if the index is + outside the bounds of the source sequence. + + Returns: + A function that takes an observable source and returns an + observable sequence that produces the element at the + specified position in the source sequence, or a default value if + the index is outside the bounds of the source sequence. + """ + from ._elementatordefault import element_at_or_default_ + + return element_at_or_default_(index, True, default_value) + + +def exclusive() -> Callable[[Observable[Observable[_T]]], Observable[_T]]: + """Performs a exclusive waiting for the first to finish before + subscribing to another observable. Observables that come in between + subscriptions will be dropped on the floor. + + .. marble:: + :alt: exclusive + + -+---+-----+-------| + +-7-8-9-| + +-4-5-6-| + +-1-2-3-| + [ exclusive() ] + ---1-2-3-----7-8-9-| + + + Returns: + An exclusive observable with only the results that + happen when subscribed. + """ + from ._exclusive import exclusive_ + + return exclusive_() + + +def expand( + mapper: typing.Mapper[_T, Observable[_T]] +) -> Callable[[Observable[_T]], Observable[_T]]: + """Expands an observable sequence by recursively invoking mapper. + + Args: + mapper: Mapper function to invoke for each produced element, + resulting in another sequence to which the mapper will be + invoked recursively again. + + Returns: + An observable sequence containing all the elements produced + by the recursive expansion. + """ + from ._expand import expand_ + + return expand_(mapper) + + +def filter(predicate: Predicate[_T]) -> Callable[[Observable[_T]], Observable[_T]]: + """Filters the elements of an observable sequence based on a + predicate. + + .. marble:: + :alt: filter + + ----1---2---3---4---| + [ filter(i: i>2) ] + ------------3---4---| + + Example: + >>> op = filter(lambda value: value < 10) + + Args: + predicate: A function to test each source element for a + condition. + + Returns: + An operator function that takes an observable source and + returns an observable sequence that contains elements from the + input sequence that satisfy the condition. + """ + from ._filter import filter_ + + return filter_(predicate) + + +def filter_indexed( + predicate_indexed: Optional[PredicateIndexed[_T]] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Filters the elements of an observable sequence based on a + predicate by incorporating the element's index. + + .. marble:: + :alt: filter_indexed + + ----1---2---3---4---| + [ filter(i,id: id>2)] + ----------------4---| + + Example: + >>> op = filter_indexed(lambda value, index: (value + index) < 10) + + Args: + predicate: A function to test each source element for a + condition; the second parameter of the function represents + the index of the source element. + + Returns: + An operator function that takes an observable source and + returns an observable sequence that contains elements from the + input sequence that satisfy the condition. + """ + from ._filter import filter_indexed_ + + return filter_indexed_(predicate_indexed) + + +def finally_action(action: typing.Action) -> Callable[[Observable[_T]], Observable[_T]]: + """Invokes a specified action after the source observable sequence + terminates gracefully or exceptionally. + + .. marble:: + :alt: finally_action + + --1--2--3--4--| + a-6-7-| + [finally_action(a)] + --1--2--3--4--6-7-| + + Example: + >>> res = finally_action(lambda: print('sequence ended') + + Args: + action: Action to invoke after the source observable sequence + terminates. + + Returns: + An operator function that takes an observable source and + returns an observable sequence with the action-invoking + termination behavior applied. + """ + from ._finallyaction import finally_action_ + + return finally_action_(action) + + +def find( + predicate: Callable[[_T, int, Observable[_T]], bool] +) -> Callable[[Observable[_T]], Observable[Union[_T, None]]]: + """Searches for an element that matches the conditions defined by + the specified predicate, and returns the first occurrence within + the entire Observable sequence. + + .. marble:: + :alt: find + + --1--2--3--4--3--2--| + [ find(3) ] + --------3-| + + Args: + predicate: The predicate that defines the conditions of the + element to search for. + + Returns: + An operator function that takes an observable source and + returns an observable sequence with the first element that + matches the conditions defined by the specified predicate, if + found otherwise, None. + """ + from ._find import find_value_ + + return cast( + Callable[[Observable[_T]], Observable[Union[_T, None]]], + find_value_(predicate, False), + ) + + +def find_index( + predicate: Callable[[_T, int, Observable[_T]], bool] +) -> Callable[[Observable[_T]], Observable[Union[int, None]]]: + """Searches for an element that matches the conditions defined by + the specified predicate, and returns an Observable sequence with the + zero-based index of the first occurrence within the entire + Observable sequence. + + .. marble:: + :alt: find_index + + --1--2--3--4--3--2--| + [ find_index(3) ] + --------2-| + + Args: + predicate: The predicate that defines the conditions of the + element to search for. + + Returns: + An operator function that takes an observable source and + returns an observable sequence with the zero-based index of the + first occurrence of an element that matches the conditions + defined by match, if found; otherwise, -1. + """ + from ._find import find_value_ + + return cast( + Callable[[Observable[_T]], Observable[Union[int, None]]], + find_value_(predicate, True), + ) + + +def first( + predicate: Optional[Predicate[_T]] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns the first element of an observable sequence that + satisfies the condition in the predicate if present else the first + item in the sequence. + + .. marble:: + :alt: first + + ---1---2---3---4----| + [ first(i: i>1) ] + -------2-| + + + Examples: + >>> res = res = first() + >>> res = res = first(lambda x: x > 3) + + Args: + predicate: [Optional] A predicate function to evaluate for + elements in the source sequence. + + Returns: + A function that takes an observable source and returns an + observable sequence containing the first element in the + observable sequence that satisfies the condition in the + predicate if provided, else the first item in the sequence. + """ + from ._first import first_ + + return first_(predicate) + + +def first_or_default( + predicate: Optional[Predicate[_T]] = None, default_value: Optional[_T] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns the first element of an observable sequence that + satisfies the condition in the predicate, or a default value if no + such element exists. + + .. marble:: + :alt: first_or_default + + --1--2--3--4-| + [first(i: i>10, 42)] + -------------42-| + + Examples: + >>> res = first_or_default() + >>> res = first_or_default(lambda x: x > 3) + >>> res = first_or_default(lambda x: x > 3, 0) + >>> res = first_or_default(None, 0) + + Args: + predicate: [optional] A predicate function to evaluate for + elements in the source sequence. + default_value: [Optional] The default value if no such element + exists. If not specified, defaults to None. + + Returns: + A function that takes an observable source and returns an + observable sequence containing the first element in the + observable sequence that satisfies the condition in the + predicate, or a default value if no such element exists. + """ + from ._firstordefault import first_or_default_ + + return first_or_default_(predicate, default_value) + + +@overload +def flat_map( + mapper: Optional[Iterable[_T2]] = None, +) -> Callable[[Observable[Any]], Observable[_T2]]: + ... + + +@overload +def flat_map( + mapper: Optional[Observable[_T2]] = None, +) -> Callable[[Observable[Any]], Observable[_T2]]: + ... + + +@overload +def flat_map( + mapper: Optional[Mapper[_T1, Iterable[_T2]]] = None +) -> Callable[[Observable[_T1]], Observable[_T2]]: + ... + + +@overload +def flat_map( + mapper: Optional[Mapper[_T1, Observable[_T2]]] = None +) -> Callable[[Observable[_T1]], Observable[_T2]]: + ... + + +def flat_map( + mapper: Optional[Any] = None, +) -> Callable[[Observable[Any]], Observable[Any]]: + """The flat_map operator. + + .. marble:: + :alt: flat_map + + --1-2-3-| + [ flat_map(range) ] + --0-0-1-0-1-2-| + + + One of the Following: + Projects each element of an observable sequence to an observable + sequence and merges the resulting observable sequences into one + observable sequence. + + Example: + >>> flat_map(lambda x: Observable.range(0, x)) + + Or: + Projects each element of the source observable sequence to the + other observable sequence and merges the resulting observable + sequences into one observable sequence. + + Example: + >>> flat_map(Observable.of(1, 2, 3)) + + Args: + mapper: A transform function to apply to each element or an + observable sequence to project each element from the source + sequence onto. + + Returns: + An operator function that takes a source observable and returns + an observable sequence whose elements are the result of + invoking the one-to-many transform function on each element of + the input sequence. + """ + from ._flatmap import flat_map_ + + return flat_map_(mapper) + + +@overload +def flat_map_indexed( + mapper_indexed: Optional[Iterable[_T2]] = None, +) -> Callable[[Observable[Any]], Observable[_T2]]: + ... + + +@overload +def flat_map_indexed( + mapper_indexed: Optional[Observable[_T2]] = None, +) -> Callable[[Observable[Any]], Observable[_T2]]: + ... + + +@overload +def flat_map_indexed( + mapper_indexed: Optional[MapperIndexed[_T1, Iterable[_T2]]] = None +) -> Callable[[Observable[_T1]], Observable[_T2]]: + ... + + +@overload +def flat_map_indexed( + mapper_indexed: Optional[MapperIndexed[_T1, Observable[_T2]]] = None +) -> Callable[[Observable[_T1]], Observable[_T2]]: + ... + + +def flat_map_indexed( + mapper_indexed: Any = None, +) -> Callable[[Observable[Any]], Observable[Any]]: + """The `flat_map_indexed` operator. + + One of the Following: + Projects each element of an observable sequence to an observable + sequence and merges the resulting observable sequences into one + observable sequence. + + .. marble:: + :alt: flat_map_indexed + + --1-2-3-| + [ flat_map(range) ] + --0-0-1-0-1-2-| + + Example: + >>> source.flat_map_indexed(lambda x, i: Observable.range(0, x)) + + Or: + Projects each element of the source observable sequence to the + other observable sequence and merges the resulting observable + sequences into one observable sequence. + + Example: + >>> source.flat_map_indexed(Observable.of(1, 2, 3)) + + Args: + mapper_indexed: [Optional] A transform function to apply to + each element or an observable sequence to project each + element from the source sequence onto. + + Returns: + An operator function that takes an observable source and + returns an observable sequence whose elements are the result of + invoking the one-to-many transform function on each element of + the input sequence. + """ + from ._flatmap import flat_map_indexed_ + + return flat_map_indexed_(mapper_indexed) + + +def flat_map_latest( + mapper: Mapper[_T1, Union[Observable[_T2], "Future[_T2]"]] +) -> Callable[[Observable[_T1]], Observable[_T2]]: + """Projects each element of an observable sequence into a new + sequence of observable sequences by incorporating the element's + index and then transforms an observable sequence of observable + sequences into an observable sequence producing values only from + the most recent observable sequence. + + Args: + mapper: A transform function to apply to each source element. + The second parameter of the function represents the index + of the source element. + + Returns: + An operator function that takes an observable source and + returns an observable sequence whose elements are the result of + invoking the transform function on each element of source + producing an observable of Observable sequences and that at any + point in time produces the elements of the most recent inner + observable sequence that has been received. + """ + from ._flatmap import flat_map_latest_ + + return flat_map_latest_(mapper) + + +def fork_join( + *others: Observable[Any], +) -> Callable[[Observable[Any]], Observable[Tuple[Any, ...]]]: + """Wait for observables to complete and then combine last values + they emitted into a tuple. Whenever any of that observables completes + without emitting any value, result sequence will complete at that moment as well. + + .. marble:: + :alt: fork_join + + ---a-----b--c---d-| + --1---2------3-4---| + -a---------b---| + [ fork_join() ] + --------------------d4b| + + Examples: + >>> res = fork_join(obs1) + >>> res = fork_join(obs1, obs2, obs3) + + Returns: + An operator function that takes an observable source and + return an observable sequence containing the result + of combining last element from each source in given sequence. + """ + from ._forkjoin import fork_join_ + + return fork_join_(*others) + + +def group_by( + key_mapper: Mapper[_T, _TKey], + element_mapper: Optional[Mapper[_T, _TValue]] = None, + subject_mapper: Optional[Callable[[], Subject[_TValue]]] = None, +) -> Callable[[Observable[_T]], Observable[GroupedObservable[_TKey, _TValue]]]: + """Groups the elements of an observable sequence according to a + specified key mapper function and comparer and selects the + resulting elements by using a specified function. + + .. marble:: + :alt: group_by + + --1--2--a--3--b--c-| + [ group_by() ] + -+-----+-----------| + +a-----b--c-| + +1--2-----3-------| + + Examples: + >>> group_by(lambda x: x.id) + >>> group_by(lambda x: x.id, lambda x: x.name) + >>> group_by(lambda x: x.id, lambda x: x.name, lambda: ReplaySubject()) + + Keyword arguments: + key_mapper: A function to extract the key for each element. + element_mapper: [Optional] A function to map each source + element to an element in an observable group. + subject_mapper: A function that returns a subject used to initiate + a grouped observable. Default mapper returns a Subject object. + + Returns: + An operator function that takes an observable source and + returns a sequence of observable groups, each of which + corresponds to a unique key value, containing all elements that + share that same key value. + """ + from ._groupby import group_by_ + + return group_by_(key_mapper, element_mapper, subject_mapper) + + +def group_by_until( + key_mapper: Mapper[_T, _TKey], + element_mapper: Optional[Mapper[_T, _TValue]], + duration_mapper: Callable[[GroupedObservable[_TKey, _TValue]], Observable[Any]], + subject_mapper: Optional[Callable[[], Subject[_TValue]]] = None, +) -> Callable[[Observable[_T]], Observable[GroupedObservable[_TKey, _TValue]]]: + """Groups the elements of an observable sequence according to a + specified key mapper function. A duration mapper function is used + to control the lifetime of groups. When a group expires, it + receives an OnCompleted notification. When a new element with the + same key value as a reclaimed group occurs, the group will be + reborn with a new lifetime request. + + .. marble:: + :alt: group_by_until + + --1--2--a--3--b--c-| + [ group_by_until() ] + -+-----+-----------| + +a-----b--c-| + +1--2-----3-------| + + Examples: + >>> group_by_until(lambda x: x.id, None, lambda : reactivex.never()) + >>> group_by_until( + lambda x: x.id, lambda x: x.name, lambda grp: reactivex.never() + ) + >>> group_by_until( + lambda x: x.id, + lambda x: x.name, + lambda grp: reactivex.never(), + lambda: ReplaySubject() + ) + + Args: + key_mapper: A function to extract the key for each element. + element_mapper: A function to map each source element to an element in + an observable group. + duration_mapper: A function to signal the expiration of a group. + subject_mapper: A function that returns a subject used to initiate + a grouped observable. Default mapper returns a Subject object. + + Returns: + An operator function that takes an observable source and + returns a sequence of observable groups, each of which + corresponds to a unique key value, containing all elements that + share that same key value. If a group's lifetime expires, a new + group with the same key value can be created once an element + with such a key value is encountered. + """ + from ._groupbyuntil import group_by_until_ + + return group_by_until_(key_mapper, element_mapper, duration_mapper, subject_mapper) + + +def group_join( + right: Observable[_TRight], + left_duration_mapper: Callable[[_TLeft], Observable[Any]], + right_duration_mapper: Callable[[_TRight], Observable[Any]], +) -> Callable[[Observable[_TLeft]], Observable[Tuple[_TLeft, Observable[_TRight]]]]: + """Correlates the elements of two sequences based on overlapping + durations, and groups the results. + + .. marble:: + :alt: group_join + + -1---2----3---4----> + --a--------b-----c-> + [ group_join() ] + --a1-a2----b3-b4-c4| + + Args: + right: The right observable sequence to join elements for. + left_duration_mapper: A function to select the duration + (expressed as an observable sequence) of each element of + the left observable sequence, used to determine overlap. + right_duration_mapper: A function to select the duration + (expressed as an observable sequence) of each element of + the right observable sequence, used to determine overlap. + + + Returns: + An operator function that takes an observable source and + returns an observable sequence that contains elements combined into + a tuple from source elements that have an overlapping + duration. + """ + from ._groupjoin import group_join_ + + return group_join_(right, left_duration_mapper, right_duration_mapper) + + +def ignore_elements() -> Callable[[Observable[_T]], Observable[_T]]: + """Ignores all elements in an observable sequence leaving only the + termination messages. + + .. marble:: + :alt: ignore_elements + + ---1---2---3---4---| + [ ignore_elements()] + -------------------| + + Returns: + An operator function that takes an observable source and + returns an empty observable sequence that signals termination, + successful or exceptional, of the source sequence. + """ + from ._ignoreelements import ignore_elements_ + + return ignore_elements_() + + +def is_empty() -> Callable[[Observable[Any]], Observable[bool]]: + """Determines whether an observable sequence is empty. + + .. marble:: + :alt: is_empty + + -------| + [ is_empty() ] + -------True-| + + + Returns: + An operator function that takes an observable source and + returns an observable sequence containing a single element + determining whether the source sequence is empty. + """ + from ._isempty import is_empty_ + + return is_empty_() + + +def join( + right: Observable[_T2], + left_duration_mapper: Callable[[Any], Observable[Any]], + right_duration_mapper: Callable[[Any], Observable[Any]], +) -> Callable[[Observable[_T1]], Observable[Tuple[_T1, _T2]]]: + """Correlates the elements of two sequences based on overlapping + durations. + + .. marble:: + :alt: join + + -1---2----3---4----> + --a--------b-----c-> + [ join() ] + --a1-a2----b3-b4-c4| + + Args: + right: The right observable sequence to join elements for. + left_duration_mapper: A function to select the duration + (expressed as an observable sequence) of each element of + the left observable sequence, used to determine overlap. + right_duration_mapper: A function to select the duration + (expressed as an observable sequence) of each element of + the right observable sequence, used to determine overlap. + + Return: + An operator function that takes an observable source and + returns an observable sequence that contains elements combined + into a tuple from source elements that have an overlapping + duration. + """ + from ._join import join_ + + return join_(right, left_duration_mapper, right_duration_mapper) + + +def last( + predicate: Optional[Predicate[_T]] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """The last operator. + + Returns the last element of an observable sequence that satisfies + the condition in the predicate if specified, else the last element. + + .. marble:: + :alt: last + + ---1--2--3--4-| + [ last() ] + ------------4-| + + Examples: + >>> op = last() + >>> op = last(lambda x: x > 3) + + Args: + predicate: [Optional] A predicate function to evaluate for + elements in the source sequence. + + Returns: + An operator function that takes an observable source and + returns an observable sequence containing the last element in + the observable sequence that satisfies the condition in the + predicate. + """ + from ._last import last_ + + return last_(predicate) + + +@overload +def last_or_default() -> Callable[[Observable[_T]], Observable[Optional[_T]]]: + ... + + +@overload +def last_or_default( + default_value: _T, +) -> Callable[[Observable[_T]], Observable[_T]]: + ... + + +@overload +def last_or_default( + default_value: _T, + predicate: Predicate[_T], +) -> Callable[[Observable[_T]], Observable[_T]]: + ... + + +def last_or_default( + default_value: Any = None, + predicate: Optional[Predicate[_T]] = None, +) -> Callable[[Observable[_T]], Observable[Any]]: + """The last_or_default operator. + + Returns the last element of an observable sequence that satisfies + the condition in the predicate, or a default value if no such + element exists. + + .. marble:: + :alt: last + + ---1--2--3--4-| + [last_or_default(8)] + --------------8-| + + + Examples: + >>> res = last_or_default() + >>> res = last_or_default(lambda x: x > 3) + >>> res = last_or_default(lambda x: x > 3, 0) + >>> res = last_or_default(None, 0) + + Args: + predicate: [Optional] A predicate function to evaluate for + elements in the source sequence. + default_value: [Optional] The default value if no such element + exists. If not specified, defaults to None. + + Returns: + An operator function that takes an observable source and + returns an observable sequence containing the last element in + the observable sequence that satisfies the condition in the + predicate, or a default value if no such element exists. + """ + from ._lastordefault import last_or_default + + return last_or_default(default_value, predicate) + + +def map( + mapper: Optional[Mapper[_T1, _T2]] = None +) -> Callable[[Observable[_T1]], Observable[_T2]]: + """The map operator. + + Project each element of an observable sequence into a new form. + + .. marble:: + :alt: map + + ---1---2---3---4---> + [ map(i: i*2) ] + ---2---4---6---8---> + + + Example: + >>> map(lambda value: value * 10) + + Args: + mapper: A transform function to apply to each source element. + + Returns: + A partially applied operator function that takes an observable + source and returns an observable sequence whose elements are + the result of invoking the transform function on each element + of the source. + """ + from ._map import map_ + + return map_(mapper) + + +def map_indexed( + mapper_indexed: Optional[MapperIndexed[_T1, _T2]] = None +) -> Callable[[Observable[_T1]], Observable[_T2]]: + """Project each element of an observable sequence into a new form + by incorporating the element's index. + + .. marble:: + :alt: map_indexed + + ---1---2---3---4---> + [ map(i,id: i*2) ] + ---2---4---6---8---> + + Example: + >>> ret = map_indexed(lambda value, index: value * value + index) + + Args: + mapper_indexed: A transform function to apply to each source + element. The second parameter of the function represents + the index of the source element. + + Returns: + A partially applied operator function that takes an observable + source and returns an observable sequence whose elements are + the result of invoking the transform function on each element + of the source. + """ + from ._map import map_indexed_ + + return map_indexed_(mapper_indexed) + + +def materialize() -> Callable[[Observable[_T]], Observable[Notification[_T]]]: + """Materializes the implicit notifications of an observable + sequence as explicit notification values. + + Returns: + An operator function that takes an observable source and + returns an observable sequence containing the materialized + notification values from the source sequence. + """ + from ._materialize import materialize + + return materialize() + + +def max( + comparer: Optional[Comparer[_T]] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns the maximum value in an observable sequence according to + the specified comparer. + + .. marble:: + :alt: max + + ---1--2--3--4-| + [ max() ] + --------------4-| + + Examples: + >>> op = max() + >>> op = max(lambda x, y: x.value - y.value) + + Args: + comparer: [Optional] Comparer used to compare elements. + + Returns: + A partially applied operator function that takes an observable + source and returns an observable sequence containing a single + element with the maximum element in the source sequence. + """ + from ._max import max_ + + return max_(comparer) + + +def max_by( + key_mapper: Mapper[_T, _TKey], comparer: Optional[Comparer[_TKey]] = None +) -> Callable[[Observable[_T]], Observable[List[_T]]]: + """The max_by operator. + + Returns the elements in an observable sequence with the maximum + key value according to the specified comparer. + + .. marble:: + :alt: max_by + + ---1--2--3--4-| + [ max_by() ] + --------------4-| + + Examples: + >>> res = max_by(lambda x: x.value) + >>> res = max_by(lambda x: x.value, lambda x, y: x - y) + + Args: + key_mapper: Key mapper function. + comparer: [Optional] Comparer used to compare key values. + + Returns: + A partially applied operator function that takes an observable + source and return an observable sequence containing a list of + zero or more elements that have a maximum key value. + """ + from ._maxby import max_by_ + + return max_by_(key_mapper, comparer) + + +def merge( + *sources: Observable[Any], max_concurrent: Optional[int] = None +) -> Callable[[Observable[Any]], Observable[Any]]: + """Merges an observable sequence of observable sequences into an + observable sequence, limiting the number of concurrent + subscriptions to inner sequences. Or merges two observable + sequences into a single observable sequence. + + .. marble:: + :alt: merge + + ---1---2---3---4-| + -a---b---c---d--| + [ merge() ] + -a-1-b-2-c-3-d-4-| + + Examples: + >>> op = merge(max_concurrent=1) + >>> op = merge(other_source) + + Args: + max_concurrent: [Optional] Maximum number of inner observable + sequences being subscribed to concurrently or the second + observable sequence. + + Returns: + An operator function that takes an observable source and + returns the observable sequence that merges the elements of the + inner sequences. + """ + from ._merge import merge_ + + return merge_(*sources, max_concurrent=max_concurrent) + + +def merge_all() -> Callable[[Observable[Observable[_T]]], Observable[_T]]: + """The merge_all operator. + + Merges an observable sequence of observable sequences into an + observable sequence. + + .. marble:: + :alt: merge_all + + ---1---2---3---4-| + -a---b---c---d--| + [ merge_all() ] + -a-1-b-2-c-3-d-4-| + + Returns: + A partially applied operator function that takes an observable + source and returns the observable sequence that merges the + elements of the inner sequences. + """ + from ._merge import merge_all_ + + return merge_all_() + + +def min( + comparer: Optional[Comparer[_T]] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """The `min` operator. + + Returns the minimum element in an observable sequence according to + the optional comparer else a default greater than less than check. + + .. marble:: + :alt: min + + ---1--2--3--4-| + [ min() ] + --------------1-| + + Examples: + >>> res = source.min() + >>> res = source.min(lambda x, y: x.value - y.value) + + Args: + comparer: [Optional] Comparer used to compare elements. + + Returns: + An operator function that takes an observable source and + returns an observable sequence containing a single element + with the minimum element in the source sequence. + """ + from ._min import min_ + + return min_(comparer) + + +def min_by( + key_mapper: Mapper[_T, _TKey], comparer: Optional[Comparer[_TKey]] = None +) -> Callable[[Observable[_T]], Observable[List[_T]]]: + """The `min_by` operator. + + Returns the elements in an observable sequence with the minimum key + value according to the specified comparer. + + .. marble:: + :alt: min_by + + ---1--2--3--4-| + [ min_by() ] + --------------1-| + + Examples: + >>> res = min_by(lambda x: x.value) + >>> res = min_by(lambda x: x.value, lambda x, y: x - y) + + Args: + key_mapper: Key mapper function. + comparer: [Optional] Comparer used to compare key values. + + Returns: + An operator function that takes an observable source and + reuturns an observable sequence containing a list of zero + or more elements that have a minimum key value. + """ + from ._minby import min_by_ + + return min_by_(key_mapper, comparer) + + +@overload +def multicast() -> Callable[[Observable[_T]], ConnectableObservable[_T]]: + ... + + +@overload +def multicast( + subject: abc.SubjectBase[_T], +) -> Callable[[Observable[_T]], ConnectableObservable[_T]]: + ... + + +@overload +def multicast( + *, + subject_factory: Callable[[Optional[abc.SchedulerBase]], abc.SubjectBase[_T]], + mapper: Optional[Callable[[Observable[_T]], Observable[_T2]]] = None, +) -> Callable[[Observable[_T]], Observable[_T2]]: + ... + + +def multicast( + subject: Optional[abc.SubjectBase[_T]] = None, + *, + subject_factory: Optional[ + Callable[[Optional[abc.SchedulerBase]], abc.SubjectBase[_T]] + ] = None, + mapper: Optional[Callable[[Observable[_T]], Observable[_T2]]] = None, +) -> Callable[[Observable[_T]], Union[Observable[_T2], ConnectableObservable[_T]]]: + """Multicasts the source sequence notifications through an + instantiated subject into all uses of the sequence within a mapper + function. Each subscription to the resulting sequence causes a + separate multicast invocation, exposing the sequence resulting from + the mapper function's invocation. For specializations with fixed + subject types, see Publish, PublishLast, and Replay. + + Examples: + >>> res = multicast(observable) + >>> res = multicast( + subject_factory=lambda scheduler: Subject(), mapper=lambda x: x + ) + + Args: + subject_factory: Factory function to create an intermediate + subject through which the source sequence's elements will + be multicast to the mapper function. + subject: Subject to push source elements into. + mapper: [Optional] Mapper function which can use the + multicasted source sequence subject to the policies + enforced by the created subject. Specified only if + subject_factory" is a factory function. + + Returns: + An operator function that takes an observable source and + returns an observable sequence that contains the elements of a + sequence produced by multicasting the source sequence within a + mapper function. + """ + from ._multicast import multicast_ + + return multicast_(subject, subject_factory=subject_factory, mapper=mapper) + + +def observe_on( + scheduler: abc.SchedulerBase, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Wraps the source sequence in order to run its observer callbacks + on the specified scheduler. + + Args: + scheduler: Scheduler to notify observers on. + + This only invokes observer callbacks on a scheduler. In case the + subscription and/or unsubscription actions have side-effects + that require to be run on a scheduler, use subscribe_on. + + Returns: + An operator function that takes an observable source and + returns the source sequence whose observations happen on the + specified scheduler. + """ + from ._observeon import observe_on_ + + return observe_on_(scheduler) + + +def on_error_resume_next( + second: Observable[_T], +) -> Callable[[Observable[_T]], Observable[_T]]: + """Continues an observable sequence that is terminated normally + or by an exception with the next observable sequence. + + .. marble:: + :alt: on_error + + ---1--2--3--4-* + e-a--b-| + [ on_error(e) ] + -1--2--3--4-a--b-| + + Keyword arguments: + second: Second observable sequence used to produce results + after the first sequence terminates. + + + Returns: + An observable sequence that concatenates the first and + second sequence, even if the first sequence terminates + exceptionally. + """ + + from ._onerrorresumenext import on_error_resume_next_ + + return on_error_resume_next_(second) + + +def pairwise() -> Callable[[Observable[_T]], Observable[Tuple[_T, _T]]]: + """The pairwise operator. + + Returns a new observable that triggers on the second and subsequent + triggerings of the input observable. The Nth triggering of the + input observable passes the arguments from the N-1th and Nth + triggering as a pair. The argument passed to the N-1th triggering + is held in hidden internal state until the Nth triggering occurs. + + Returns: + An operator function that takes an observable source and + returns an observable that triggers on successive pairs of + observations from the input observable as an array. + """ + from ._pairwise import pairwise_ + + return pairwise_() + + +def partition( + predicate: Predicate[_T], +) -> Callable[[Observable[_T]], List[Observable[_T]]]: + """Returns two observables which partition the observations of the + source by the given function. The first will trigger observations + for those values for which the predicate returns true. The second + will trigger observations for those values where the predicate + returns false. The predicate is executed once for each subscribed + observer. Both also propagate all error observations arising from + the source and each completes when the source completes. + + .. marble:: + :alt: partition + + ---1--2--3--4--| + [ partition(even) ] + ---1-----3-----| + ------2-----4--| + + Args: + predicate: The function to determine which output Observable + will trigger a particular observation. + + Returns: + An operator function that takes an observable source and + returns a list of observables. The first triggers when the + predicate returns True, and the second triggers when the + predicate returns False. + """ + from ._partition import partition_ + + return partition_(predicate) + + +def partition_indexed( + predicate_indexed: PredicateIndexed[_T], +) -> Callable[[Observable[_T]], List[Observable[_T]]]: + """The indexed partition operator. + + Returns two observables which partition the observations of the + source by the given function. The first will trigger observations + for those values for which the predicate returns true. The second + will trigger observations for those values where the predicate + returns false. The predicate is executed once for each subscribed + observer. Both also propagate all error observations arising from + the source and each completes when the source completes. + + .. marble:: + :alt: partition_indexed + + ---1--2--3--4--| + [ partition(even) ] + ---1-----3-----| + ------2-----4--| + + Args: + predicate: The function to determine which output Observable + will trigger a particular observation. + + Returns: + A list of observables. The first triggers when the predicate + returns True, and the second triggers when the predicate + returns False. + """ + from ._partition import partition_indexed_ + + return partition_indexed_(predicate_indexed) + + +def pluck( + key: _TKey, +) -> Callable[[Observable[Dict[_TKey, _TValue]]], Observable[_TValue]]: + """Retrieves the value of a specified key using dict-like access (as in + element[key]) from all elements in the Observable sequence. + + To pluck an attribute of each element, use pluck_attr. + + Args: + key: The key to pluck. + + Returns: + An operator function that takes an observable source and + returns a new observable sequence of key values. + """ + from ._pluck import pluck_ + + return pluck_(key) + + +def pluck_attr(prop: str) -> Callable[[Observable[Any]], Observable[Any]]: + """Retrieves the value of a specified property (using getattr) from + all elements in the Observable sequence. + + To pluck values using dict-like access (as in element[key]) on each + element, use pluck. + + Args: + property: The property to pluck. + + Returns: + An operator function that takes an observable source and + returns a new observable sequence of property values. + """ + from ._pluck import pluck_attr_ + + return pluck_attr_(prop) + + +@overload +def publish() -> Callable[[Observable[_T1]], ConnectableObservable[_T1]]: + ... + + +@overload +def publish( + mapper: Mapper[Observable[_T1], Observable[_T2]], +) -> Callable[[Observable[_T1]], Observable[_T2]]: + ... + + +def publish( + mapper: Optional[Mapper[Observable[_T1], Observable[_T2]]] = None, +) -> Callable[[Observable[_T1]], Union[Observable[_T2], ConnectableObservable[_T1]]]: + """The `publish` operator. + + Returns an observable sequence that is the result of invoking the + mapper on a connectable observable sequence that shares a single + subscription to the underlying sequence. This operator is a + specialization of Multicast using a regular Subject. + + Example: + >>> res = publish() + >>> res = publish(lambda x: x) + + Args: + mapper: [Optional] Selector function which can use the + multicasted source sequence as many times as needed, + without causing multiple subscriptions to the source + sequence. Subscribers to the given source will receive all + notifications of the source from the time of the + subscription on. + + Returns: + An operator function that takes an observable source and + returns an observable sequence that contains the elements of a + sequence produced by multicasting the source sequence within a + mapper function. + """ + from ._publish import publish_ + + return publish_(mapper) + + +@overload +def publish_value( + initial_value: _T1, +) -> Callable[[Observable[_T1]], ConnectableObservable[_T1]]: + ... + + +@overload +def publish_value( + initial_value: _T1, + mapper: Mapper[Observable[_T1], Observable[_T2]], +) -> Callable[[Observable[_T1]], Observable[_T2]]: + ... + + +def publish_value( + initial_value: _T1, + mapper: Optional[Mapper[Observable[_T1], Observable[_T2]]] = None, +) -> Callable[[Observable[_T1]], Union[Observable[_T2], ConnectableObservable[_T1]]]: + """Returns an observable sequence that is the result of invoking + the mapper on a connectable observable sequence that shares a + single subscription to the underlying sequence and starts with + initial_value. + + This operator is a specialization of Multicast using a + BehaviorSubject. + + Examples: + >>> res = source.publish_value(42) + >>> res = source.publish_value(42, lambda x: x.map(lambda y: y * y)) + + Args: + initial_value: Initial value received by observers upon + subscription. + mapper: [Optional] Optional mapper function which can use the + multicasted source sequence as many times as needed, + without causing multiple subscriptions to the source + sequence. Subscribers to the given source will receive + immediately receive the initial value, followed by all + notifications of the source from the time of the + subscription on. + + Returns: + An operator function that takes an observable source and returns + an observable sequence that contains the elements of a + sequence produced by multicasting the source sequence within a + mapper function. + """ + from ._publishvalue import publish_value_ + + return publish_value_(initial_value, mapper) + + +@overload +def reduce( + accumulator: Accumulator[_TState, _T] +) -> Callable[[Observable[_T]], Observable[_T]]: + ... + + +@overload +def reduce( + accumulator: Accumulator[_TState, _T], seed: _TState +) -> Callable[[Observable[_T]], Observable[_TState]]: + ... + + +def reduce( + accumulator: Accumulator[_TState, _T], seed: Union[_TState, Type[NotSet]] = NotSet +) -> Callable[[Observable[_T]], Observable[Any]]: + """The reduce operator. + + Applies an accumulator function over an observable sequence, + returning the result of the aggregation as a single element in the + result sequence. The specified seed value is used as the initial + accumulator value. + + For aggregation behavior with incremental intermediate results, + see `scan`. + + .. marble:: + :alt: reduce + + ---1--2--3--4--| + [reduce(acc,i: acc+i)] + ---------------10-| + + Examples: + >>> res = reduce(lambda acc, x: acc + x) + >>> res = reduce(lambda acc, x: acc + x, 0) + + Args: + accumulator: An accumulator function to be invoked on each + element. + seed: Optional initial accumulator value. + + Returns: + A partially applied operator function that takes an observable + source and returns an observable sequence containing a single + element with the final accumulator value. + """ + from ._reduce import reduce_ + + return reduce_(accumulator, seed) + + +def ref_count() -> Callable[[ConnectableObservable[_T]], Observable[_T]]: + """Returns an observable sequence that stays connected to the + source as long as there is at least one subscription to the + observable sequence. + """ + from .connectable._refcount import ref_count_ + + return ref_count_() + + +def repeat( + repeat_count: Optional[int] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Repeats the observable sequence a specified number of times. + If the repeat count is not specified, the sequence repeats + indefinitely. + + .. marble:: + :alt: repeat + + -1--2-| + [ repeat(3) ] + -1--2--1--2--1--2-| + + + Examples: + >>> repeated = repeat() + >>> repeated = repeat(42) + Args: + repeat_count: Number of times to repeat the sequence. If not + provided, repeats the sequence indefinitely. + + Returns: + An operator function that takes an observable sources and + returns an observable sequence producing the elements of the + given sequence repeatedly. + """ + from ._repeat import repeat_ + + return repeat_(repeat_count) + + +@overload +def replay( + buffer_size: Optional[int] = None, + window: Optional[typing.RelativeTime] = None, + *, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T1]], ConnectableObservable[_T1]]: + ... + + +@overload +def replay( + buffer_size: Optional[int] = None, + window: Optional[typing.RelativeTime] = None, + *, + mapper: Optional[Mapper[Observable[_T1], Observable[_T2]]], + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T1]], Observable[_T2]]: + ... + + +def replay( + buffer_size: Optional[int] = None, + window: Optional[typing.RelativeTime] = None, + *, + mapper: Optional[Mapper[Observable[_T1], Observable[_T2]]] = None, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T1]], Union[Observable[_T2], ConnectableObservable[_T1]]]: + """The `replay` operator. + + Returns an observable sequence that is the result of invoking the + mapper on a connectable observable sequence that shares a single + subscription to the underlying sequence replaying notifications + subject to a maximum time length for the replay buffer. + + This operator is a specialization of Multicast using a + ReplaySubject. + + Examples: + >>> res = replay(buffer_size=3) + >>> res = replay(buffer_size=3, window=0.5) + >>> res = replay(None, 3, 0.5) + >>> res = replay(lambda x: x.take(6).repeat(), 3, 0.5) + + Args: + mapper: [Optional] Selector function which can use the + multicasted source sequence as many times as needed, + without causing multiple subscriptions to the source + sequence. Subscribers to the given source will receive all + the notifications of the source subject to the specified + replay buffer trimming policy. + buffer_size: [Optional] Maximum element count of the replay + buffer. + window: [Optional] Maximum time length of the replay buffer. + scheduler: [Optional] Scheduler the observers are invoked on. + + Returns: + An operator function that takes an observable source and + returns an observable sequence that contains the elements of a + sequence produced by multicasting the source sequence within a + mapper function. + """ + from ._replay import replay_ + + return replay_(mapper, buffer_size, window, scheduler=scheduler) + + +def retry( + retry_count: Optional[int] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Repeats the source observable sequence the specified number of + times or until it successfully terminates. If the retry count is + not specified, it retries indefinitely. + + Examples: + >>> retried = retry() + >>> retried = retry(42) + + Args: + retry_count: [Optional] Number of times to retry the sequence. + If not provided, retry the sequence indefinitely. + + Returns: + An observable sequence producing the elements of the given + sequence repeatedly until it terminates successfully. + """ + from ._retry import retry_ + + return retry_(retry_count) + + +def sample( + sampler: Union[typing.RelativeTime, Observable[Any]], + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Samples the observable sequence at each interval. + + .. marble:: + :alt: sample + + ---1-2-3-4------| + [ sample(4) ] + ----1---3---4---| + + Examples: + >>> res = sample(sample_observable) # Sampler tick sequence + >>> res = sample(5.0) # 5 seconds + + Args: + sampler: Observable used to sample the source observable **or** time + interval at which to sample (specified as a float denoting + seconds or an instance of timedelta). + scheduler: Scheduler to use only when a time interval is given. + + Returns: + An operator function that takes an observable source and + returns a sampled observable sequence. + """ + from ._sample import sample_ + + return sample_(sampler, scheduler) + + +@overload +def scan( + accumulator: Accumulator[_T, _T] +) -> Callable[[Observable[_T]], Observable[_T]]: + ... + + +@overload +def scan( + accumulator: Accumulator[_TState, _T], seed: Union[_TState, Type[NotSet]] +) -> Callable[[Observable[_T]], Observable[_TState]]: + ... + + +def scan( + accumulator: Accumulator[_TState, _T], seed: Union[_TState, Type[NotSet]] = NotSet +) -> Callable[[Observable[_T]], Observable[_TState]]: + """The scan operator. + + Applies an accumulator function over an observable sequence and + returns each intermediate result. The optional seed value is used + as the initial accumulator value. For aggregation behavior with no + intermediate results, see `aggregate()` or `Observable()`. + + .. marble:: + :alt: scan + + ----1--2--3--4-----| + [scan(acc,i: acc+i)] + ----1--3--6--10----| + + Examples: + >>> scanned = source.scan(lambda acc, x: acc + x) + >>> scanned = source.scan(lambda acc, x: acc + x, 0) + + Args: + accumulator: An accumulator function to be invoked on each + element. + seed: [Optional] The initial accumulator value. + + Returns: + A partially applied operator function that takes an observable + source and returns an observable sequence containing the + accumulated values. + """ + from ._scan import scan_ + + return scan_(accumulator, seed) + + +def sequence_equal( + second: Union[Observable[_T], Iterable[_T]], comparer: Optional[Comparer[_T]] = None +) -> Callable[[Observable[_T]], Observable[bool]]: + """Determines whether two sequences are equal by comparing the + elements pairwise using a specified equality comparer. + + .. marble:: + :alt: scan + + -1--2--3--4----| + ----1--2--3--4-| + [ sequence_equal() ] + ---------------True| + + Examples: + >>> res = sequence_equal([1,2,3]) + >>> res = sequence_equal([{ "value": 42 }], lambda x, y: x.value == y.value) + >>> res = sequence_equal(reactivex.return_value(42)) + >>> res = sequence_equal( + reactivex.return_value({ "value": 42 }), lambda x, y: x.value == y.value) + + Args: + second: Second observable sequence or iterable to compare. + comparer: [Optional] Comparer used to compare elements of both + sequences. No guarantees on order of comparer arguments. + + Returns: + An operator function that takes an observable source and + returns an observable sequence that contains a single element + which indicates whether both sequences are of equal length and + their corresponding elements are equal according to the + specified equality comparer. + """ + from ._sequenceequal import sequence_equal_ + + return sequence_equal_(second, comparer) + + +def share() -> Callable[[Observable[_T]], Observable[_T]]: + """Share a single subscription among multiple observers. + + This is an alias for a composed publish() and ref_count(). + + Returns: + An operator function that takes an observable source and + returns a new Observable that multicasts (shares) the original + Observable. As long as there is at least one Subscriber this + Observable will be subscribed and emitting data. When all + subscribers have unsubscribed it will unsubscribe from the + source + Observable. + """ + from ._publish import share_ + + return share_() + + +def single( + predicate: Optional[Predicate[_T]] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """The single operator. + + Returns the only element of an observable sequence that satisfies + the condition in the optional predicate, and reports an exception + if there is not exactly one element in the observable sequence. + + .. marble:: + :alt: single + + ----1--2--3--4-----| + [ single(3) ] + ----------3--------| + + Example: + >>> res = single() + >>> res = single(lambda x: x == 42) + + Args: + predicate: [Optional] A predicate function to evaluate for + elements in the source sequence. + + Returns: + An operator function that takes an observable source and + returns an observable sequence containing the single element in + the observable sequence that satisfies the condition in the + predicate. + """ + from ._single import single_ + + return single_(predicate) + + +def single_or_default( + predicate: Optional[Predicate[_T]] = None, default_value: Any = None +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns the only element of an observable sequence that matches + the predicate, or a default value if no such element exists this + method reports an exception if there is more than one element in + the observable sequence. + + .. marble:: + :alt: single_or_default + + ----1--2--3--4--| + [ single(8,42) ] + ----------------42-| + + Examples: + >>> res = single_or_default() + >>> res = single_or_default(lambda x: x == 42) + >>> res = single_or_default(lambda x: x == 42, 0) + >>> res = single_or_default(None, 0) + + Args: + predicate: [Optional] A predicate function to evaluate for + elements in the source sequence. + default_value: [Optional] The default value if the index is + outside the bounds of the source sequence. + + Returns: + An operator function that takes an observable source and + returns an observable sequence containing the single element in + the observable sequence that satisfies the condition in the + predicate, or a default value if no such element exists. + """ + from ._singleordefault import single_or_default_ + + return single_or_default_(predicate, default_value) + + +def single_or_default_async( + has_default: bool = False, default_value: _T = None +) -> Callable[[Observable[_T]], Observable[_T]]: + from ._singleordefault import single_or_default_async_ + + return single_or_default_async_(has_default, default_value) + + +def skip(count: int) -> Callable[[Observable[_T]], Observable[_T]]: + """The skip operator. + + Bypasses a specified number of elements in an observable sequence + and then returns the remaining elements. + + .. marble:: + :alt: skip + + ----1--2--3--4-----| + [ skip(2) ] + ----------3--4-----| + + + Args: + count: The number of elements to skip before returning the + remaining elements. + + Returns: + An operator function that takes an observable source and + returns an observable sequence that contains the elements that + occur after the specified index in the input sequence. + """ + from ._skip import skip_ + + return skip_(count) + + +def skip_last(count: int) -> Callable[[Observable[_T]], Observable[_T]]: + """The skip_last operator. + + .. marble:: + :alt: skip_last + + ----1--2--3--4-----| + [ skip_last(1) ] + -------1--2--3-----| + + + Bypasses a specified number of elements at the end of an observable + sequence. + + This operator accumulates a queue with a length enough to store the + first `count` elements. As more elements are received, elements are + taken from the front of the queue and produced on the result + sequence. This causes elements to be delayed. + + Args: + count: Number of elements to bypass at the end of the source + sequence. + + Returns: + An operator function that takes an observable source and + returns an observable sequence containing the source sequence + elements except for the bypassed ones at the end. + """ + from ._skiplast import skip_last_ + + return skip_last_(count) + + +def skip_last_with_time( + duration: typing.RelativeTime, scheduler: Optional[abc.SchedulerBase] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + """Skips elements for the specified duration from the end of the + observable source sequence. + + Example: + >>> res = skip_last_with_time(5.0) + + This operator accumulates a queue with a length enough to store + elements received during the initial duration window. As more + elements are received, elements older than the specified duration + are taken from the queue and produced on the result sequence. This + causes elements to be delayed with duration. + + Args: + duration: Duration for skipping elements from the end of the + sequence. + scheduler: Scheduler to use for time handling. + + Returns: + An observable sequence with the elements skipped during the + specified duration from the end of the source sequence. + """ + from ._skiplastwithtime import skip_last_with_time_ + + return skip_last_with_time_(duration, scheduler=scheduler) + + +def skip_until( + other: Union[Observable[Any], "Future[Any]"] +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns the values from the source observable sequence only + after the other observable sequence produces a value. + + .. marble:: + :alt: skip_until + + ----1--2--3--4-----| + ---------1---------| + [ skip_until() ] + ----------3--4-----| + + Args: + other: The observable sequence that triggers propagation of + elements of the source sequence. + + Returns: + An operator function that takes an observable source and + returns an observable sequence containing the elements of the + source sequence starting from the point the other sequence + triggered propagation. + """ + from ._skipuntil import skip_until_ + + return skip_until_(other) + + +def skip_until_with_time( + start_time: typing.AbsoluteOrRelativeTime, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Skips elements from the observable source sequence until the + specified start time. + Errors produced by the source sequence are always forwarded to the + result sequence, even if the error occurs before the start time. + + .. marble:: + :alt: skip_until + + ------1--2--3--4-------| + [skip_until_with_time()] + ------------3--4-------| + + Examples: + >>> res = skip_until_with_time(datetime()) + >>> res = skip_until_with_time(5.0) + + Args: + start_time: Time to start taking elements from the source + sequence. If this value is less than or equal to + `datetime.utcnow()`, no elements will be skipped. + + Returns: + An operator function that takes an observable source and + returns an observable sequence with the elements skipped + until the specified start time. + """ + from ._skipuntilwithtime import skip_until_with_time_ + + return skip_until_with_time_(start_time, scheduler=scheduler) + + +def skip_while( + predicate: typing.Predicate[_T], +) -> Callable[[Observable[_T]], Observable[_T]]: + """The `skip_while` operator. + + Bypasses elements in an observable sequence as long as a specified + condition is true and then returns the remaining elements. The + element's index is used in the logic of the predicate function. + + .. marble:: + :alt: skip_while + + ----1--2--3--4-----| + [skip_while(i: i<3)] + ----------3--4-----| + + Example: + >>> skip_while(lambda value: value < 10) + + Args: + predicate: A function to test each element for a condition; the + second parameter of the function represents the index of + the source element. + + Returns: + An operator function that takes an observable source and + returns an observable sequence that contains the elements from + the input sequence starting at the first element in the linear + series that does not pass the test specified by predicate. + """ + from ._skipwhile import skip_while_ + + return skip_while_(predicate) + + +def skip_while_indexed( + predicate: typing.PredicateIndexed[_T], +) -> Callable[[Observable[_T]], Observable[_T]]: + """Bypasses elements in an observable sequence as long as a + specified condition is true and then returns the remaining + elements. The element's index is used in the logic of the predicate + function. + + .. marble:: + :alt: skip_while_indexed + + ----1--2--3--4-----| + [skip_while(i: i<3)] + ----------3--4-----| + + Example: + >>> skip_while(lambda value, index: value < 10 or index < 10) + + Args: + predicate: A function to test each element for a condition; the + second parameter of the function represents the index of + the source element. + + Returns: + An operator function that takes an observable source and + returns an observable sequence that contains the elements from + the input sequence starting at the first element in the linear + series that does not pass the test specified by predicate. + """ + from ._skipwhile import skip_while_indexed_ + + return skip_while_indexed_(predicate) + + +def skip_with_time( + duration: typing.RelativeTime, scheduler: Optional[abc.SchedulerBase] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + """Skips elements for the specified duration from the start of the + observable source sequence. + + .. marble:: + :alt: skip_with_time + + ----1--2--3--4-----| + [ skip_with_time() ] + ----------3--4-----| + + Args: + >>> res = skip_with_time(5.0) + + Specifying a zero value for duration doesn't guarantee no elements + will be dropped from the start of the source sequence. This is a + side-effect of the asynchrony introduced by the scheduler, where + the action that causes callbacks from the source sequence to be + forwarded may not execute immediately, despite the zero due time. + + Errors produced by the source sequence are always forwarded to the + result sequence, even if the error occurs before the duration. + + Args: + duration: Duration for skipping elements from the start of the + sequence. + + Returns: + An operator function that takes an observable source and + returns an observable sequence with the elements skipped during + the specified duration from the start of the source sequence. + """ + from ._skipwithtime import skip_with_time_ + + return skip_with_time_(duration, scheduler=scheduler) + + +def slice( + start: Optional[int] = None, stop: Optional[int] = None, step: Optional[int] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + """The slice operator. + + Slices the given observable. It is basically a wrapper around the operators + :func:`skip `, + :func:`skip_last `, + :func:`take `, + :func:`take_last ` and + :func:`filter `. + + .. marble:: + :alt: slice + + ----1--2--3--4-----| + [ slice(1, 2) ] + -------2--3--------| + + Examples: + >>> result = source.slice(1, 10) + >>> result = source.slice(1, -2) + >>> result = source.slice(1, -1, 2) + + Args: + start: First element to take of skip last + stop: Last element to take of skip last + step: Takes every step element. Must be larger than zero + + Returns: + An operator function that takes an observable source and + returns a sliced observable sequence. + """ + from ._slice import slice_ + + return slice_(start, stop, step) + + +def some( + predicate: Optional[Predicate[_T]] = None, +) -> Callable[[Observable[_T]], Observable[bool]]: + """The some operator. + + Determines whether some element of an observable sequence + satisfies a condition if present, else if some items are in the + sequence. + + .. marble:: + :alt: some + + ----1--2--3--4-----| + [ some(i: i>3) ] + -------------True--| + + Examples: + >>> result = source.some() + >>> result = source.some(lambda x: x > 3) + + Args: + predicate: A function to test each element for a condition. + + Returns: + An operator function that takes an observable source and + returns an observable sequence containing a single element + determining whether some elements in the source sequence + pass the test in the specified predicate if given, else if some + items are in the sequence. + """ + from ._some import some_ + + return some_(predicate) + + +@overload +def starmap( + mapper: Callable[[_A, _B], _T] +) -> Callable[[Observable[Tuple[_A, _B]]], Observable[_T]]: + ... + + +@overload +def starmap( + mapper: Callable[[_A, _B, _C], _T] +) -> Callable[[Observable[Tuple[_A, _B, _C]]], Observable[_T]]: + ... + + +@overload +def starmap( + mapper: Callable[[_A, _B, _C, _D], _T] +) -> Callable[[Observable[Tuple[_A, _B, _C, _D]]], Observable[_T]]: + ... + + +def starmap( + mapper: Optional[Callable[..., Any]] = None +) -> Callable[[Observable[Any]], Observable[Any]]: + """The starmap operator. + + Unpack arguments grouped as tuple elements of an observable + sequence and return an observable sequence of values by invoking + the mapper function with star applied unpacked elements as + positional arguments. + + Use instead of `map()` when the the arguments to the mapper is + grouped as tuples and the mapper function takes multiple arguments. + + .. marble:: + :alt: starmap + + -----1,2---3,4-----| + [ starmap(add) ] + -----3-----7-------| + + Example: + >>> starmap(lambda x, y: x + y) + + Args: + mapper: A transform function to invoke with unpacked elements + as arguments. + + Returns: + An operator function that takes an observable source and + returns an observable sequence containing the results of + invoking the mapper function with unpacked elements of the + source. + """ + + if mapper is None: + return compose(identity) + + def starred(values: Tuple[Any, ...]) -> Any: + assert mapper # mypy is paranoid + return mapper(*values) + + return compose(map(starred)) + + +@overload +def starmap_indexed( + mapper: Callable[[_A, int], _T] +) -> Callable[[Observable[_A]], Observable[_T]]: + ... + + +@overload +def starmap_indexed( + mapper: Callable[[_A, _B, int], _T] +) -> Callable[[Observable[Tuple[_A, _B]]], Observable[_T]]: + ... + + +@overload +def starmap_indexed( + mapper: Callable[[_A, _B, _C, int], _T] +) -> Callable[[Observable[Tuple[_A, _B, _C]]], Observable[_T]]: + ... + + +@overload +def starmap_indexed( + mapper: Callable[[_A, _B, _C, _D, int], _T] +) -> Callable[[Observable[Tuple[_A, _B, _C, _D]]], Observable[_T]]: + ... + + +def starmap_indexed( + mapper: Optional[Callable[..., Any]] = None +) -> Callable[[Observable[Any]], Observable[Any]]: + """Variant of :func:`starmap` which accepts an indexed mapper. + + .. marble:: + :alt: starmap_indexed + + ---------1,2---3,4---------| + [ starmap_indexed(sum) ] + ---------3-----8-----------| + + Example: + >>> starmap_indexed(lambda x, y, i: x + y + i) + + Args: + mapper: A transform function to invoke with unpacked elements + as arguments. + + Returns: + An operator function that takes an observable source and + returns an observable sequence containing the results of + invoking the indexed mapper function with unpacked elements + of the source. + """ + from ._map import map_ + + if mapper is None: + return compose(identity) + + def starred(values: Tuple[Any, ...]) -> Any: + assert mapper # mypy is paranoid + return mapper(*values) + + return compose(map_(starred)) + + +def start_with(*args: _T) -> Callable[[Observable[_T]], Observable[_T]]: + """Prepends a sequence of values to an observable sequence. + + .. marble:: + :alt: start_with + + -----1--2--3--4----| + [ start_with(7,8) ] + -7-8-1--2--3--4----| + + Example: + >>> start_with(1, 2, 3) + + Returns: + An operator function that takes a source observable and returns + the source sequence prepended with the specified values. + """ + from ._startswith import start_with_ + + return start_with_(*args) + + +def subscribe_on( + scheduler: abc.SchedulerBase, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Subscribe on the specified scheduler. + + Wrap the source sequence in order to run its subscription and + unsubscription logic on the specified scheduler. This operation is + not commonly used; see the remarks section for more information on + the distinction between subscribe_on and observe_on. + + This only performs the side-effects of subscription and + unsubscription on the specified scheduler. In order to invoke + observer callbacks on a scheduler, use observe_on. + + Args: + scheduler: Scheduler to perform subscription and unsubscription + actions on. + + Returns: + An operator function that takes an observable source and + returns the source sequence whose subscriptions and + un-subscriptions happen on the specified scheduler. + """ + from ._subscribeon import subscribe_on_ + + return subscribe_on_(scheduler) + + +@overload +def sum() -> Callable[[Observable[float]], Observable[float]]: + ... + + +@overload +def sum(key_mapper: Mapper[_T, float]) -> Callable[[Observable[_T]], Observable[float]]: + ... + + +def sum( + key_mapper: Optional[Mapper[Any, float]] = None +) -> Callable[[Observable[Any]], Observable[float]]: + """Computes the sum of a sequence of values that are obtained by + invoking an optional transform function on each element of the + input sequence, else if not specified computes the sum on each item + in the sequence. + + .. marble:: + :alt: sum + + -----1--2--3--4-| + [ sum() ] + ----------------10-| + + Examples: + >>> res = sum() + >>> res = sum(lambda x: x.value) + + Args: + key_mapper: [Optional] A transform function to apply to each + element. + + Returns: + An operator function that takes a source observable and returns + an observable sequence containing a single element with the sum + of the values in the source sequence. + """ + from ._sum import sum_ + + return sum_(key_mapper) + + +def switch_latest() -> Callable[ + [Observable[Union[Observable[_T], "Future[_T]"]]], Observable[_T] +]: + """The switch_latest operator. + + Transforms an observable sequence of observable sequences into an + observable sequence producing values only from the most recent + observable sequence. + + .. marble:: + :alt: switch_latest + + -+------+----------| + +--a--b--c-| + +--1--2--3--4--| + [ switch_latest() ] + ----1--2---a--b--c-| + + Returns: + A partially applied operator function that takes an observable + source and returns the observable sequence that at any point in + time produces the elements of the most recent inner observable + sequence that has been received. + """ + from ._switchlatest import switch_latest_ + + return switch_latest_() + + +def take(count: int) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns a specified number of contiguous elements from the start + of an observable sequence. + + .. marble:: + :alt: take + + -----1--2--3--4----| + [ take(2) ] + -----1--2-| + + Example: + >>> op = take(5) + + Args: + count: The number of elements to return. + + Returns: + An operator function that takes an observable source and + returns an observable sequence that contains the specified + number of elements from the start of the input sequence. + """ + from ._take import take_ + + return take_(count) + + +def take_last(count: int) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns a specified number of contiguous elements from the end + of an observable sequence. + + .. marble:: + :alt: take_last + + -1--2--3--4-| + [ take_last(2) ] + ------------3--4-| + + Example: + >>> res = take_last(5) + + This operator accumulates a buffer with a length enough to store + elements count elements. Upon completion of the source sequence, + this buffer is drained on the result sequence. This causes the + elements to be delayed. + + Args: + count: Number of elements to take from the end of the source + sequence. + + Returns: + An operator function that takes an observable source and + returns an observable sequence containing the specified number + of elements from the end of the source sequence. + """ + from ._takelast import take_last_ + + return take_last_(count) + + +def take_last_buffer(count: int) -> Callable[[Observable[_T]], Observable[List[_T]]]: + """The `take_last_buffer` operator. + + Returns an array with the specified number of contiguous elements + from the end of an observable sequence. + + .. marble:: + :alt: take_last_buffer + + -----1--2--3--4-| + [take_last_buffer(2)] + ----------------3,4-| + + Example: + >>> res = source.take_last(5) + + This operator accumulates a buffer with a length enough to store + elements count elements. Upon completion of the source sequence, + this buffer is drained on the result sequence. This causes the + elements to be delayed. + + Args: + count: Number of elements to take from the end of the source + sequence. + + Returns: + An operator function that takes an observable source and + returns an observable sequence containing a single list with + the specified number of elements from the end of the source + sequence. + """ + from ._takelastbuffer import take_last_buffer_ + + return take_last_buffer_(count) + + +def take_last_with_time( + duration: typing.RelativeTime, scheduler: Optional[abc.SchedulerBase] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns elements within the specified duration from the end of + the observable source sequence. + + .. marble:: + :alt: take_last_with_time + + -----1--2--3--4-| + [take_last_with_time(3)] + ----------------4-| + + Example: + >>> res = take_last_with_time(5.0) + + This operator accumulates a queue with a length enough to store + elements received during the initial duration window. As more + elements are received, elements older than the specified duration + are taken from the queue and produced on the result sequence. This + causes elements to be delayed with duration. + + Args: + duration: Duration for taking elements from the end of the + sequence. + + Returns: + An operator function that takes an observable source and + returns an observable sequence with the elements taken + during the specified duration from the end of the source + sequence. + """ + from ._takelastwithtime import take_last_with_time_ + + return take_last_with_time_(duration, scheduler=scheduler) + + +def take_until(other: Observable[Any]) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns the values from the source observable sequence until the + other observable sequence produces a value. + + .. marble:: + :alt: take_until + + -----1--2--3--4----| + -------------a-| + [ take_until(2) ] + -----1--2--3-------| + + Args: + other: Observable sequence that terminates propagation of + elements of the source sequence. + + Returns: + An operator function that takes an observable source and + returns as observable sequence containing the elements of the + source sequence up to the point the other sequence interrupted + further propagation. + """ + from ._takeuntil import take_until_ + + return take_until_(other) + + +def take_until_with_time( + end_time: typing.AbsoluteOrRelativeTime, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Takes elements for the specified duration until the specified + end time, using the specified scheduler to run timers. + + .. marble:: + :alt: take_until_with_time + + -----1--2--3--4--------| + [take_until_with_time()] + -----1--2--3-----------| + + Examples: + >>> res = take_until_with_time(dt, [optional scheduler]) + >>> res = take_until_with_time(5.0, [optional scheduler]) + + Args: + end_time: Time to stop taking elements from the source + sequence. If this value is less than or equal to + `datetime.utcnow()`, the result stream will complete + immediately. + scheduler: Scheduler to run the timer on. + + Returns: + An operator function that takes an observable source and + returns an observable sequence with the elements taken until + the specified end time. + """ + from ._takeuntilwithtime import take_until_with_time_ + + return take_until_with_time_(end_time, scheduler=scheduler) + + +def take_while( + predicate: Predicate[_T], inclusive: bool = False +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns elements from an observable sequence as long as a + specified condition is true. + + .. marble:: + :alt: take_while + + -----1--2--3--4----| + [take_while(i: i<3)] + -----1--2----------| + + Example: + >>> take_while(lambda value: value < 10) + + Args: + predicate: A function to test each element for a condition. + inclusive: [Optional] When set to True the value that caused + the predicate function to return False will also be emitted. + If not specified, defaults to False. + + Returns: + An operator function that takes an observable source and + returns an observable sequence that contains the elements from + the input sequence that occur before the element at which the + test no longer passes. + """ + from ._takewhile import take_while_ + + return take_while_(predicate, inclusive) + + +def take_while_indexed( + predicate: PredicateIndexed[_T], inclusive: bool = False +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns elements from an observable sequence as long as a + specified condition is true. The element's index is used in the + logic of the predicate function. + + .. marble:: + :alt: take_while_indexed + + --------1------2------3------4-------| + [take_while_indexed(v, i: v<4 or i<3)] + --------1------2---------------------| + + Example: + >>> take_while_indexed(lambda value, index: value < 10 or index < 10) + + Args: + predicate: A function to test each element for a condition; the + second parameter of the function represents the index of the + source element. + inclusive: [Optional] When set to True the value that caused + the predicate function to return False will also be emitted. + If not specified, defaults to False. + + Returns: + An observable sequence that contains the elements from the + input sequence that occur before the element at which the test no + longer passes. + """ + from ._takewhile import take_while_indexed_ + + return take_while_indexed_(predicate, inclusive) + + +def take_with_time( + duration: typing.RelativeTime, scheduler: Optional[abc.SchedulerBase] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + """Takes elements for the specified duration from the start of the + observable source sequence. + + .. marble:: + :alt: take_with_time + + -----1--2--3--4----| + [ take_with_time() ] + -----1--2----------| + + Example: + >>> res = take_with_time(5.0) + + This operator accumulates a queue with a length enough to store + elements received during the initial duration window. As more + elements are received, elements older than the specified duration + are taken from the queue and produced on the result sequence. This + causes elements to be delayed with duration. + + Args: + duration: Duration for taking elements from the start of the + sequence. + + Returns: + An operator function that takes an observable source and + returns an observable sequence with the elements taken during + the specified duration from the start of the source sequence. + """ + from ._takewithtime import take_with_time_ + + return take_with_time_(duration, scheduler=scheduler) + + +def throttle_first( + window_duration: typing.RelativeTime, scheduler: Optional[abc.SchedulerBase] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns an Observable that emits only the first item emitted by + the source Observable during sequential time windows of a specified + duration. + + Args: + window_duration: time to wait before emitting another item + after emitting the last item. + + Returns: + An operator function that takes an observable source and + returns an observable that performs the throttle operation. + """ + from ._throttlefirst import throttle_first_ + + return throttle_first_(window_duration, scheduler) + + +def throttle_with_mapper( + throttle_duration_mapper: Callable[[Any], Observable[Any]] +) -> Callable[[Observable[_T]], Observable[_T]]: + """The throttle_with_mapper operator. + + Ignores values from an observable sequence which are followed by + another value within a computed throttle duration. + + Example: + >>> op = throttle_with_mapper(lambda x: rx.Scheduler.timer(x+x)) + + Args: + throttle_duration_mapper: Mapper function to retrieve an + observable sequence indicating the throttle duration for each + given element. + + Returns: + A partially applied operator function that takes an observable + source and returns the throttled observable sequence. + """ + from ._debounce import throttle_with_mapper_ + + return throttle_with_mapper_(throttle_duration_mapper) + + +if TYPE_CHECKING: + from ._timestamp import Timestamp + + +def timestamp( + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable["Timestamp[_T]"]]: + """The timestamp operator. + + Records the timestamp for each value in an observable sequence. + + Examples: + >>> timestamp() + + Produces objects with attributes `value` and `timestamp`, where + value is the original value. + + Returns: + A partially applied operator function that takes an observable + source and returns an observable sequence with timestamp + information on values. + """ + from ._timestamp import timestamp_ + + return timestamp_(scheduler=scheduler) + + +def timeout( + duetime: typing.AbsoluteOrRelativeTime, + other: Optional[Observable[_T]] = None, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns the source observable sequence or the other observable + sequence if duetime elapses. + + .. marble:: + :alt: timeout + + -1--2--------3--4--| + o-6--7-| + [ timeout(3,o) ] + -1--2---6--7----------| + + Examples: + >>> res = timeout(5.0) + >>> res = timeout(datetime(), return_value(42)) + >>> res = timeout(5.0, return_value(42)) + + Args: + duetime: Absolute (specified as a datetime object) or relative time + (specified as a float denoting seconds or an instance of timedetla) + when a timeout occurs. + other: Sequence to return in case of a timeout. If not + specified, a timeout error throwing sequence will be used. + scheduler: + + Returns: + An operator function that takes and observable source and + returns the source sequence switching to the other sequence in + case of a timeout. + """ + from ._timeout import timeout_ + + return timeout_(duetime, other, scheduler) + + +def timeout_with_mapper( + first_timeout: Optional[Observable[Any]] = None, + timeout_duration_mapper: Optional[Callable[[_T], Observable[Any]]] = None, + other: Optional[Observable[_T]] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns the source observable sequence, switching to the other + observable sequence if a timeout is signaled. + + Examples: + >>> res = timeout_with_mapper(reactivex.timer(0.5)) + >>> res = timeout_with_mapper( + reactivex.timer(0.5), lambda x: reactivex.timer(0.2) + ) + >>> res = timeout_with_mapper( + reactivex.timer(0.5), + lambda x: reactivex.timer(0.2), + reactivex.return_value(42) + ) + + Args: + first_timeout: [Optional] Observable sequence that represents + the timeout for the first element. If not provided, this + defaults to reactivex.never(). + timeout_duration_mapper: [Optional] Selector to retrieve an + observable sequence that represents the timeout between the + current element and the next element. + other: [Optional] Sequence to return in case of a timeout. If + not provided, this is set to reactivex.throw(). + + Returns: + An operator function that takes an observable source and + returns the source sequence switching to the other sequence in + case of a timeout. + """ + from ._timeoutwithmapper import timeout_with_mapper_ + + return timeout_with_mapper_(first_timeout, timeout_duration_mapper, other) + + +if TYPE_CHECKING: + from ._timeinterval import TimeInterval + + +def time_interval( + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable["TimeInterval[_T]"]]: + """Records the time interval between consecutive values in an + observable sequence. + + .. marble:: + :alt: time_interval + + --1--2-----3---4--| + [ time_interval() ] + -----2-----5---5---| + + Examples: + >>> res = time_interval() + + Return: + An operator function that takes an observable source and + returns an observable sequence with time interval information + on values. + """ + from ._timeinterval import time_interval_ + + return time_interval_(scheduler=scheduler) + + +def to_dict( + key_mapper: Mapper[_T, _TKey], element_mapper: Optional[Mapper[_T, _TValue]] = None +) -> Callable[[Observable[_T]], Observable[Dict[_TKey, _TValue]]]: + """Converts the observable sequence to a Map if it exists. + + Args: + key_mapper: A function which produces the key for the + dictionary. + element_mapper: [Optional] An optional function which produces + the element for the dictionary. If not present, defaults to + the value from the observable sequence. + + Returns: + An operator function that takes an observable source and + returns an observable sequence with a single value of a + dictionary containing the values from the observable sequence. + """ + from ._todict import to_dict_ + + return to_dict_(key_mapper, element_mapper) + + +def to_future( + future_ctor: Optional[Callable[[], "Future[_T]"]] = None +) -> Callable[[Observable[_T]], "Future[_T]"]: + """Converts an existing observable sequence to a Future. + + Example: + op = to_future(asyncio.Future); + + Args: + future_ctor: [Optional] The constructor of the future. + + Returns: + An operator function that takes an observable source and returns + a future with the last value from the observable sequence. + """ + from ._tofuture import to_future_ + + return to_future_(future_ctor) + + +def to_iterable() -> Callable[[Observable[_T]], Observable[List[_T]]]: + """Creates an iterable from an observable sequence. + + There is also an alias called ``to_list``. + + Returns: + An operator function that takes an obserable source and + returns an observable sequence containing a single element with + an iterable containing all the elements of the source sequence. + """ + from ._toiterable import to_iterable_ + + return to_iterable_() + + +to_list = to_iterable + + +def to_marbles( + timespan: typing.RelativeTime = 0.1, scheduler: Optional[abc.SchedulerBase] = None +) -> Callable[[Observable[Any]], Observable[str]]: + """Convert an observable sequence into a marble diagram string. + + Args: + timespan: [Optional] duration of each character in second. + If not specified, defaults to 0.1s. + scheduler: [Optional] The scheduler used to run the the input + sequence on. + + Returns: + Observable stream. + """ + from ._tomarbles import to_marbles + + return to_marbles(scheduler=scheduler, timespan=timespan) + + +def to_set() -> Callable[[Observable[_T]], Observable[Set[_T]]]: + """Converts the observable sequence to a set. + + Returns: + An operator function that takes an observable source and + returns an observable sequence with a single value of a set + containing the values from the observable sequence. + """ + from ._toset import to_set_ + + return to_set_() + + +def while_do( + condition: Predicate[Observable[_T]], +) -> Callable[[Observable[_T]], Observable[_T]]: + """Repeats source as long as condition holds emulating a while + loop. + + Args: + condition: The condition which determines if the source will be + repeated. + + Returns: + An operator function that takes an observable source and + returns an observable sequence which is repeated as long as the + condition holds. + """ + from ._whiledo import while_do_ + + return while_do_(condition) + + +def window( + boundaries: Observable[Any], +) -> Callable[[Observable[_T]], Observable[Observable[_T]]]: + """Projects each element of an observable sequence into zero or + more windows. + + .. marble:: + :alt: window + + ---a-----b-----c--------| + ----1--2--3--4--5--6--7-| + [ window(open) ] + +--+-----+-----+--------| + +5--6--7-| + +3--4-| + +1--2-| + +--| + + Examples: + >>> res = window(reactivex.interval(1.0)) + + Args: + boundaries: Observable sequence whose elements denote the + creation and completion of non-overlapping windows. + + Returns: + An operator function that takes an observable source and + returns an observable sequence of windows. + + """ + from ._window import window_ + + return window_(boundaries) + + +def window_when( + closing_mapper: Callable[[], Observable[Any]] +) -> Callable[[Observable[_T]], Observable[Observable[_T]]]: + """Projects each element of an observable sequence into zero or + more windows. + + .. marble:: + :alt: window + + ------c| + ------c| + ------c| + ----1--2--3--4--5-| + [ window(close) ] + +-----+-----+-----+| + +4--5-| + +2--3-| + +----1| + + Examples: + >>> res = window(lambda: reactivex.timer(0.5)) + + Args: + closing_mapper: A function invoked to define + the closing of each produced window. It defines the + boundaries of the produced windows (a window is started + when the previous one is closed, resulting in + non-overlapping windows). + + Returns: + An operator function that takes an observable source and + returns an observable sequence of windows. + """ + from ._window import window_when_ + + return window_when_(closing_mapper) + + +def window_toggle( + openings: Observable[Any], closing_mapper: Callable[[Any], Observable[Any]] +) -> Callable[[Observable[_T]], Observable[Observable[_T]]]: + """Projects each element of an observable sequence into zero or + more windows. + + .. marble:: + :alt: window + + ---a-----------b------------| + ---d--| + --------e-| + ----1--2--3--4--5--6--7--8--| + [ window(open, close) ] + ---+-----------+------------| + +5--6--7| + +1-| + + >>> res = window(reactivex.interval(0.5), lambda i: reactivex.timer(i)) + + Args: + openings: Observable sequence whose elements denote the + creation of windows. + closing_mapper: A function invoked to define the closing of each + produced window. Value from openings Observable that initiated + the associated window is provided as argument to the function. + + Returns: + An operator function that takes an observable source and + returns an observable sequence of windows. + """ + from ._window import window_toggle_ + + return window_toggle_(openings, closing_mapper) + + +def window_with_count( + count: int, skip: Optional[int] = None +) -> Callable[[Observable[_T]], Observable[Observable[_T]]]: + """Projects each element of an observable sequence into zero or more + windows which are produced based on element count information. + + .. marble:: + :alt: window_with_count + + ---1-2-3---4-5-6---> + [ window(3) ] + --+-------+--------> + +4-5-6-| + +1-2-3-| + + Examples: + >>> window_with_count(10) + >>> window_with_count(10, 1) + + Args: + count: Length of each window. + skip: [Optional] Number of elements to skip between creation of + consecutive windows. If not specified, defaults to the + count. + + Returns: + An observable sequence of windows. + """ + from ._windowwithcount import window_with_count_ + + return window_with_count_(count, skip) + + +def window_with_time( + timespan: typing.RelativeTime, + timeshift: Optional[typing.RelativeTime] = None, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[Observable[_T]]]: + from ._windowwithtime import window_with_time_ + + return window_with_time_(timespan, timeshift, scheduler) + + +def window_with_time_or_count( + timespan: typing.RelativeTime, + count: int, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[Observable[_T]]]: + from ._windowwithtimeorcount import window_with_time_or_count_ + + return window_with_time_or_count_(timespan, count, scheduler) + + +def with_latest_from( + *sources: Observable[Any], +) -> Callable[[Observable[Any]], Observable[Any]]: + """The `with_latest_from` operator. + + Merges the specified observable sequences into one observable + sequence by creating a tuple only when the first + observable sequence produces an element. The observables can be + passed either as separate arguments or as a list. + + .. marble:: + :alt: with_latest_from + + ---1---2---3----4-| + --a-----b----c-d----| + [with_latest_from() ] + ---1,a-2,a-3,b--4,d-| + + Examples: + >>> op = with_latest_from(obs1) + >>> op = with_latest_from([obs1, obs2, obs3]) + + Returns: + An operator function that takes an observable source and + returns an observable sequence containing the result of + combining elements of the sources into a tuple. + """ + from ._withlatestfrom import with_latest_from_ + + return with_latest_from_(*sources) + + +def zip(*args: Observable[Any]) -> Callable[[Observable[Any]], Observable[Any]]: + """Merges the specified observable sequences into one observable + sequence by creating a tuple whenever all of the + observable sequences have produced an element at a corresponding + index. + + .. marble:: + :alt: zip + + --1--2---3-----4---| + -a----b----c-d------| + [ zip() ] + --1,a-2,b--3,c-4,d-| + + + Example: + >>> res = zip(obs1, obs2) + + Args: + args: Observable sources to zip. + + Returns: + An operator function that takes an observable source and + returns an observable sequence containing the result of + combining elements of the sources as a tuple. + """ + from ._zip import zip_ + + return zip_(*args) + + +def zip_with_iterable( + second: Iterable[_T2], +) -> Callable[[Observable[_T1]], Observable[Tuple[_T1, _T2]]]: + """Merges the specified observable sequence and list into one + observable sequence by creating a tuple whenever all of + the observable sequences have produced an element at a + corresponding index. + + .. marble:: + :alt: zip_with_iterable + + --1---2----3---4---| + [ zip(a,b,c,b) ] + --1,a-2,b--3,c-4,d-| + + Example + >>> res = zip([1,2,3]) + + Args: + second: Iterable to zip with the source observable.. + + Returns: + An operator function that takes and observable source and + returns an observable sequence containing the result of + combining elements of the sources as a tuple. + """ + from ._zip import zip_with_iterable_ + + return zip_with_iterable_(second) + + +zip_with_list = zip_with_iterable + +__all__ = [ + "all", + "amb", + "as_observable", + "average", + "buffer", + "buffer_when", + "buffer_toggle", + "buffer_with_count", + "buffer_with_time", + "buffer_with_time_or_count", + "catch", + "combine_latest", + "concat", + "contains", + "count", + "debounce", + "throttle_with_timeout", + "default_if_empty", + "delay_subscription", + "delay_with_mapper", + "dematerialize", + "delay", + "distinct", + "distinct_until_changed", + "do", + "do_action", + "do_while", + "element_at", + "element_at_or_default", + "exclusive", + "expand", + "filter", + "filter_indexed", + "finally_action", + "find", + "find_index", + "first", + "first_or_default", + "flat_map", + "flat_map_indexed", + "flat_map_latest", + "fork_join", + "group_by", + "group_by_until", + "group_join", + "ignore_elements", + "is_empty", + "join", + "last", + "last_or_default", + "map", + "map_indexed", + "materialize", + "max", + "max_by", + "merge", + "merge_all", + "min", + "min_by", + "multicast", + "observe_on", + "on_error_resume_next", + "pairwise", + "partition", + "partition_indexed", + "pluck", + "pluck_attr", + "publish", + "publish_value", + "reduce", + "ref_count", + "repeat", + "replay", + "retry", + "sample", + "scan", + "sequence_equal", + "share", + "single", + "single_or_default", + "single_or_default_async", + "skip", + "skip_last", + "skip_last_with_time", + "skip_until", + "skip_until_with_time", + "skip_while", + "skip_while_indexed", + "skip_with_time", + "slice", + "some", + "starmap", + "starmap_indexed", + "start_with", + "subscribe_on", + "sum", + "switch_latest", + "take", + "take_last", + "take_last_buffer", + "take_last_with_time", + "take_until", + "take_until_with_time", + "take_while", + "take_while_indexed", + "take_with_time", + "throttle_first", + "throttle_with_mapper", + "timestamp", + "timeout", + "timeout_with_mapper", + "time_interval", + "to_dict", + "to_future", + "to_iterable", + "to_list", + "to_marbles", + "to_set", + "while_do", + "window", + "window_when", + "window_toggle", + "window_with_count", + "window_with_time", + "window_with_time_or_count", + "with_latest_from", + "zip", + "zip_with_list", + "zip_with_iterable", + "zip_with_list", +] diff --git a/frogpilot/third_party/reactivex/operators/_all.py b/frogpilot/third_party/reactivex/operators/_all.py new file mode 100644 index 000000000..45d1d9f56 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_all.py @@ -0,0 +1,24 @@ +from typing import Callable, TypeVar + +from reactivex import Observable, compose +from reactivex import operators as ops +from reactivex.typing import Predicate + +_T = TypeVar("_T") + + +def all_(predicate: Predicate[_T]) -> Callable[[Observable[_T]], Observable[bool]]: + def filter(v: _T): + return not predicate(v) + + def mapping(b: bool) -> bool: + return not b + + return compose( + ops.filter(filter), + ops.some(), + ops.map(mapping), + ) + + +__all__ = ["all_"] diff --git a/frogpilot/third_party/reactivex/operators/_amb.py b/frogpilot/third_party/reactivex/operators/_amb.py new file mode 100644 index 000000000..49bf94ad7 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_amb.py @@ -0,0 +1,92 @@ +from asyncio import Future +from typing import Callable, List, Optional, TypeVar, Union + +from reactivex import Observable, abc, from_future +from reactivex.disposable import CompositeDisposable, SingleAssignmentDisposable + +_T = TypeVar("_T") + + +def amb_( + right_source: Union[Observable[_T], "Future[_T]"] +) -> Callable[[Observable[_T]], Observable[_T]]: + + if isinstance(right_source, Future): + obs: Observable[_T] = from_future(right_source) + else: + obs = right_source + + def amb(left_source: Observable[_T]) -> Observable[_T]: + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + choice: List[Optional[str]] = [None] + left_choice = "L" + right_choice = "R" + left_subscription = SingleAssignmentDisposable() + right_subscription = SingleAssignmentDisposable() + + def choice_left(): + if not choice[0]: + choice[0] = left_choice + right_subscription.dispose() + + def choice_right(): + if not choice[0]: + choice[0] = right_choice + left_subscription.dispose() + + def on_next_left(value: _T) -> None: + with left_source.lock: + choice_left() + if choice[0] == left_choice: + observer.on_next(value) + + def on_error_left(err: Exception) -> None: + with left_source.lock: + choice_left() + if choice[0] == left_choice: + observer.on_error(err) + + def on_completed_left() -> None: + with left_source.lock: + choice_left() + if choice[0] == left_choice: + observer.on_completed() + + left_d = left_source.subscribe( + on_next_left, on_error_left, on_completed_left, scheduler=scheduler + ) + left_subscription.disposable = left_d + + def send_right(value: _T) -> None: + with left_source.lock: + choice_right() + if choice[0] == right_choice: + observer.on_next(value) + + def on_error_right(err: Exception) -> None: + with left_source.lock: + choice_right() + if choice[0] == right_choice: + observer.on_error(err) + + def on_completed_right() -> None: + with left_source.lock: + choice_right() + if choice[0] == right_choice: + observer.on_completed() + + right_d = obs.subscribe( + send_right, on_error_right, on_completed_right, scheduler=scheduler + ) + right_subscription.disposable = right_d + return CompositeDisposable(left_subscription, right_subscription) + + return Observable(subscribe) + + return amb + + +__all__ = ["amb_"] diff --git a/frogpilot/third_party/reactivex/operators/_asobservable.py b/frogpilot/third_party/reactivex/operators/_asobservable.py new file mode 100644 index 000000000..8a306dafe --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_asobservable.py @@ -0,0 +1,31 @@ +from typing import Callable, Optional, TypeVar + +from reactivex import Observable, abc + +_T = TypeVar("_T") + + +def as_observable_() -> Callable[[Observable[_T]], Observable[_T]]: + def as_observable(source: Observable[_T]) -> Observable[_T]: + """Hides the identity of an observable sequence. + + Args: + source: Observable source to hide identity from. + + Returns: + An observable sequence that hides the identity of the + source sequence. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + return source.subscribe(observer, scheduler=scheduler) + + return Observable(subscribe) + + return as_observable + + +__all__ = ["as_observable_"] diff --git a/frogpilot/third_party/reactivex/operators/_average.py b/frogpilot/third_party/reactivex/operators/_average.py new file mode 100644 index 000000000..99ab672ee --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_average.py @@ -0,0 +1,62 @@ +from dataclasses import dataclass +from typing import Any, Callable, Optional, TypeVar, cast + +from reactivex import Observable, operators, typing + +_T = TypeVar("_T") + + +@dataclass +class AverageValue: + sum: float + count: int + + +def average_( + key_mapper: Optional[typing.Mapper[_T, float]] = None, +) -> Callable[[Observable[_T]], Observable[float]]: + def average(source: Observable[Any]) -> Observable[float]: + """Partially applied average operator. + + Computes the average of an observable sequence of values that + are in the sequence or obtained by invoking a transform + function on each element of the input sequence if present. + + Examples: + >>> res = average(source) + + Args: + source: Source observable to average. + + Returns: + An observable sequence containing a single element with the + average of the sequence of values. + """ + + key_mapper_: typing.Mapper[_T, float] = key_mapper or ( + lambda x: float(cast(Any, x)) + ) + + def accumulator(prev: AverageValue, cur: float) -> AverageValue: + return AverageValue(sum=prev.sum + cur, count=prev.count + 1) + + def mapper(s: AverageValue) -> float: + if s.count == 0: + raise Exception("The input sequence was empty") + + return s.sum / float(s.count) + + seed = AverageValue(sum=0, count=0) + + ret = source.pipe( + operators.map(key_mapper_), + operators.scan(accumulator, seed), + operators.last(), + operators.map(mapper), + ) + return ret + + return average + + +__all__ = ["average_"] diff --git a/frogpilot/third_party/reactivex/operators/_buffer.py b/frogpilot/third_party/reactivex/operators/_buffer.py new file mode 100644 index 000000000..a8920add7 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_buffer.py @@ -0,0 +1,80 @@ +from typing import Any, Callable, List, Optional, TypeVar + +from reactivex import Observable, compose +from reactivex import operators as ops + +_T = TypeVar("_T") + + +def buffer_( + boundaries: Observable[Any], +) -> Callable[[Observable[_T]], Observable[List[_T]]]: + return compose( + ops.window(boundaries), + ops.flat_map(ops.to_list()), + ) + + +def buffer_when_( + closing_mapper: Callable[[], Observable[Any]] +) -> Callable[[Observable[_T]], Observable[List[_T]]]: + return compose( + ops.window_when(closing_mapper), + ops.flat_map(ops.to_list()), + ) + + +def buffer_toggle_( + openings: Observable[Any], closing_mapper: Callable[[Any], Observable[Any]] +) -> Callable[[Observable[_T]], Observable[List[_T]]]: + return compose( + ops.window_toggle(openings, closing_mapper), + ops.flat_map(ops.to_list()), + ) + + +def buffer_with_count_( + count: int, skip: Optional[int] = None +) -> Callable[[Observable[_T]], Observable[List[_T]]]: + """Projects each element of an observable sequence into zero or more + buffers which are produced based on element count information. + + Examples: + >>> res = buffer_with_count(10)(xs) + >>> res = buffer_with_count(10, 1)(xs) + + Args: + count: Length of each buffer. + skip: [Optional] Number of elements to skip between + creation of consecutive buffers. If not provided, defaults to + the count. + + Returns: + A function that takes an observable source and returns an + observable sequence of buffers. + """ + + def buffer_with_count(source: Observable[_T]) -> Observable[List[_T]]: + nonlocal skip + + if skip is None: + skip = count + + def mapper(value: Observable[_T]) -> Observable[List[_T]]: + return value.pipe( + ops.to_list(), + ) + + def predicate(value: List[_T]) -> bool: + return len(value) > 0 + + return source.pipe( + ops.window_with_count(count, skip), + ops.flat_map(mapper), + ops.filter(predicate), + ) + + return buffer_with_count + + +__all__ = ["buffer_", "buffer_with_count_", "buffer_when_", "buffer_toggle_"] diff --git a/frogpilot/third_party/reactivex/operators/_bufferwithtime.py b/frogpilot/third_party/reactivex/operators/_bufferwithtime.py new file mode 100644 index 000000000..e6bc191e3 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_bufferwithtime.py @@ -0,0 +1,24 @@ +from typing import Callable, List, Optional, TypeVar + +from reactivex import Observable, abc, compose +from reactivex import operators as ops +from reactivex import typing + +_T = TypeVar("_T") + + +def buffer_with_time_( + timespan: typing.RelativeTime, + timeshift: Optional[typing.RelativeTime] = None, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[List[_T]]]: + if not timeshift: + timeshift = timespan + + return compose( + ops.window_with_time(timespan, timeshift, scheduler), + ops.flat_map(ops.to_list()), + ) + + +__all__ = ["buffer_with_time_"] diff --git a/frogpilot/third_party/reactivex/operators/_bufferwithtimeorcount.py b/frogpilot/third_party/reactivex/operators/_bufferwithtimeorcount.py new file mode 100644 index 000000000..f20cc56d0 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_bufferwithtimeorcount.py @@ -0,0 +1,21 @@ +from typing import Callable, List, Optional, TypeVar + +from reactivex import Observable, abc, compose +from reactivex import operators as ops +from reactivex import typing + +_T = TypeVar("_T") + + +def buffer_with_time_or_count_( + timespan: typing.RelativeTime, + count: int, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[List[_T]]]: + return compose( + ops.window_with_time_or_count(timespan, count, scheduler), + ops.flat_map(ops.to_iterable()), + ) + + +__all__ = ["buffer_with_time_or_count_"] diff --git a/frogpilot/third_party/reactivex/operators/_catch.py b/frogpilot/third_party/reactivex/operators/_catch.py new file mode 100644 index 000000000..e6f753218 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_catch.py @@ -0,0 +1,78 @@ +from asyncio import Future +from typing import Callable, Optional, TypeVar, Union + +import reactivex +from reactivex import Observable, abc +from reactivex.disposable import SerialDisposable, SingleAssignmentDisposable + +_T = TypeVar("_T") + + +def catch_handler( + source: Observable[_T], + handler: Callable[[Exception, Observable[_T]], Union[Observable[_T], "Future[_T]"]], +) -> Observable[_T]: + def subscribe( + observer: abc.ObserverBase[_T], scheduler: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + d1 = SingleAssignmentDisposable() + subscription = SerialDisposable() + + subscription.disposable = d1 + + def on_error(exception: Exception) -> None: + try: + result = handler(exception, source) + except Exception as ex: # By design. pylint: disable=W0703 + observer.on_error(ex) + return + + result = ( + reactivex.from_future(result) if isinstance(result, Future) else result + ) + d = SingleAssignmentDisposable() + subscription.disposable = d + d.disposable = result.subscribe(observer, scheduler=scheduler) + + d1.disposable = source.subscribe( + observer.on_next, on_error, observer.on_completed, scheduler=scheduler + ) + return subscription + + return Observable(subscribe) + + +def catch_( + handler: Union[ + Observable[_T], Callable[[Exception, Observable[_T]], Observable[_T]] + ] +) -> Callable[[Observable[_T]], Observable[_T]]: + def catch(source: Observable[_T]) -> Observable[_T]: + """Continues an observable sequence that is terminated by an + exception with the next observable sequence. + + Examples: + >>> op = catch(ys) + >>> op = catch(lambda ex, src: ys(ex)) + + Args: + handler: Second observable sequence used to produce + results when an error occurred in the first sequence, or an + exception handler function that returns an observable sequence + given the error and source observable that occurred in the + first sequence. + + Returns: + An observable sequence containing the first sequence's + elements, followed by the elements of the handler sequence + in case an exception occurred. + """ + if callable(handler): + return catch_handler(source, handler) + else: + return reactivex.catch(source, handler) + + return catch + + +__all__ = ["catch_"] diff --git a/frogpilot/third_party/reactivex/operators/_combinelatest.py b/frogpilot/third_party/reactivex/operators/_combinelatest.py new file mode 100644 index 000000000..5a6095d0c --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_combinelatest.py @@ -0,0 +1,30 @@ +from typing import Any, Callable + +import reactivex +from reactivex import Observable + + +def combine_latest_( + *others: Observable[Any], +) -> Callable[[Observable[Any]], Observable[Any]]: + def combine_latest(source: Observable[Any]) -> Observable[Any]: + """Merges the specified observable sequences into one + observable sequence by creating a tuple whenever any + of the observable sequences produces an element. + + Examples: + >>> obs = combine_latest(source) + + Returns: + An observable sequence containing the result of combining + elements of the sources into a tuple. + """ + + sources = (source,) + others + + return reactivex.combine_latest(*sources) + + return combine_latest + + +__all__ = ["combine_latest_"] diff --git a/frogpilot/third_party/reactivex/operators/_concat.py b/frogpilot/third_party/reactivex/operators/_concat.py new file mode 100644 index 000000000..e94862ae8 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_concat.py @@ -0,0 +1,26 @@ +from typing import Callable, TypeVar + +import reactivex +from reactivex import Observable + +_T = TypeVar("_T") + + +def concat_(*sources: Observable[_T]) -> Callable[[Observable[_T]], Observable[_T]]: + def concat(source: Observable[_T]) -> Observable[_T]: + """Concatenates all the observable sequences. + + Examples: + >>> op = concat(xs, ys, zs) + + Returns: + An operator function that takes one or more observable sources and + returns an observable sequence that contains the elements of + each given sequence, in sequential order. + """ + return reactivex.concat(source, *sources) + + return concat + + +__all__ = ["concat_"] diff --git a/frogpilot/third_party/reactivex/operators/_contains.py b/frogpilot/third_party/reactivex/operators/_contains.py new file mode 100644 index 000000000..952cb2a72 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_contains.py @@ -0,0 +1,25 @@ +from typing import Callable, Optional, TypeVar + +from reactivex import Observable, compose +from reactivex import operators as ops +from reactivex import typing +from reactivex.internal.basic import default_comparer + +_T = TypeVar("_T") + + +def contains_( + value: _T, comparer: Optional[typing.Comparer[_T]] = None +) -> Callable[[Observable[_T]], Observable[bool]]: + comparer_ = comparer or default_comparer + + def predicate(v: _T) -> bool: + return comparer_(v, value) + + return compose( + ops.filter(predicate), + ops.some(), + ) + + +__all__ = ["contains_"] diff --git a/frogpilot/third_party/reactivex/operators/_count.py b/frogpilot/third_party/reactivex/operators/_count.py new file mode 100644 index 000000000..feb2b2e3d --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_count.py @@ -0,0 +1,27 @@ +from typing import Callable, Optional, TypeVar + +from reactivex import Observable, compose +from reactivex import operators as ops +from reactivex.typing import Predicate + +_T = TypeVar("_T") + + +def count_( + predicate: Optional[Predicate[_T]] = None, +) -> Callable[[Observable[_T]], Observable[int]]: + + if predicate: + return compose( + ops.filter(predicate), + ops.count(), + ) + + def reducer(n: int, _: _T) -> int: + return n + 1 + + counter = ops.reduce(reducer, seed=0) + return counter + + +__all__ = ["count_"] diff --git a/frogpilot/third_party/reactivex/operators/_debounce.py b/frogpilot/third_party/reactivex/operators/_debounce.py new file mode 100644 index 000000000..0736e02ef --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_debounce.py @@ -0,0 +1,174 @@ +from typing import Any, Callable, List, Optional, TypeVar, cast + +from reactivex import Observable, abc, typing +from reactivex.disposable import ( + CompositeDisposable, + SerialDisposable, + SingleAssignmentDisposable, +) +from reactivex.scheduler import TimeoutScheduler + +_T = TypeVar("_T") + + +def debounce_( + duetime: typing.RelativeTime, scheduler: Optional[abc.SchedulerBase] +) -> Callable[[Observable[_T]], Observable[_T]]: + def debounce(source: Observable[_T]) -> Observable[_T]: + """Ignores values from an observable sequence which are followed by + another value before duetime. + + Example: + >>> res = debounce(source) + + Args: + source: Source observable to debounce. + + Returns: + An operator function that takes the source observable and + returns the debounced observable sequence. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler_: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + _scheduler = scheduler or scheduler_ or TimeoutScheduler.singleton() + cancelable = SerialDisposable() + has_value = [False] + value: List[_T] = [cast(_T, None)] + _id: List[int] = [0] + + def on_next(x: _T) -> None: + has_value[0] = True + value[0] = x + _id[0] += 1 + current_id = _id[0] + d = SingleAssignmentDisposable() + cancelable.disposable = d + + def action(scheduler: abc.SchedulerBase, state: Any = None) -> None: + if has_value[0] and _id[0] == current_id: + observer.on_next(value[0]) + has_value[0] = False + + d.disposable = _scheduler.schedule_relative(duetime, action) + + def on_error(exception: Exception) -> None: + cancelable.dispose() + observer.on_error(exception) + has_value[0] = False + _id[0] += 1 + + def on_completed() -> None: + cancelable.dispose() + if has_value[0]: + observer.on_next(value[0]) + + observer.on_completed() + has_value[0] = False + _id[0] += 1 + + subscription = source.subscribe( + on_next, on_error, on_completed, scheduler=scheduler_ + ) + return CompositeDisposable(subscription, cancelable) + + return Observable(subscribe) + + return debounce + + +def throttle_with_mapper_( + throttle_duration_mapper: Callable[[Any], Observable[Any]] +) -> Callable[[Observable[_T]], Observable[_T]]: + def throttle_with_mapper(source: Observable[_T]) -> Observable[_T]: + """Partially applied throttle_with_mapper operator. + + Ignores values from an observable sequence which are followed by + another value within a computed throttle duration. + + Example: + >>> obs = throttle_with_mapper(source) + + Args: + source: The observable source to throttle. + + Returns: + The throttled observable sequence. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + cancelable = SerialDisposable() + has_value: bool = False + value: _T = cast(_T, None) + _id = [0] + + def on_next(x: _T) -> None: + nonlocal value, has_value + + throttle = None + try: + throttle = throttle_duration_mapper(x) + except Exception as e: # pylint: disable=broad-except + observer.on_error(e) + return + + has_value = True + value = x + _id[0] += 1 + current_id = _id[0] + d = SingleAssignmentDisposable() + cancelable.disposable = d + + def on_next(x: Any) -> None: + nonlocal has_value + if has_value and _id[0] == current_id: + observer.on_next(value) + + has_value = False + d.dispose() + + def on_completed() -> None: + nonlocal has_value + if has_value and _id[0] == current_id: + observer.on_next(value) + + has_value = False + d.dispose() + + d.disposable = throttle.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + + def on_error(e: Exception) -> None: + nonlocal has_value + cancelable.dispose() + observer.on_error(e) + has_value = False + _id[0] += 1 + + def on_completed() -> None: + nonlocal has_value + cancelable.dispose() + if has_value: + observer.on_next(value) + + observer.on_completed() + has_value = False + _id[0] += 1 + + subscription = source.subscribe( + on_next, on_error, on_completed, scheduler=scheduler + ) + return CompositeDisposable(subscription, cancelable) + + return Observable(subscribe) + + return throttle_with_mapper + + +__all__ = ["debounce_", "throttle_with_mapper_"] diff --git a/frogpilot/third_party/reactivex/operators/_defaultifempty.py b/frogpilot/third_party/reactivex/operators/_defaultifempty.py new file mode 100644 index 000000000..c68cf82e9 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_defaultifempty.py @@ -0,0 +1,52 @@ +from typing import Callable, Optional, TypeVar + +from reactivex import Observable, abc + +_T = TypeVar("_T") + + +def default_if_empty_( + default_value: Optional[_T] = None, +) -> Callable[[Observable[_T]], Observable[Optional[_T]]]: + def default_if_empty(source: Observable[_T]) -> Observable[Optional[_T]]: + """Returns the elements of the specified sequence or the + specified value in a singleton sequence if the sequence is + empty. + + Examples: + >>> obs = default_if_empty(source) + + Args: + source: Source observable. + + Returns: + An observable sequence that contains the specified default + value if the source is empty otherwise, the elements of the + source. + """ + + def subscribe( + observer: abc.ObserverBase[Optional[_T]], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + found = [False] + + def on_next(x: _T): + found[0] = True + observer.on_next(x) + + def on_completed(): + if not found[0]: + observer.on_next(default_value) + observer.on_completed() + + return source.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return default_if_empty + + +__all__ = ["default_if_empty_"] diff --git a/frogpilot/third_party/reactivex/operators/_delay.py b/frogpilot/third_party/reactivex/operators/_delay.py new file mode 100644 index 000000000..90e66a753 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_delay.py @@ -0,0 +1,141 @@ +from datetime import datetime +from typing import Any, Callable, List, Optional, TypeVar + +from reactivex import Notification, Observable, abc +from reactivex import operators as ops +from reactivex import typing +from reactivex.disposable import ( + CompositeDisposable, + MultipleAssignmentDisposable, + SerialDisposable, +) +from reactivex.internal.constants import DELTA_ZERO +from reactivex.notification import OnError +from reactivex.scheduler import TimeoutScheduler + +from ._timestamp import Timestamp + +_T = TypeVar("_T") + + +def observable_delay_timespan( + source: Observable[_T], + duetime: typing.RelativeTime, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Observable[_T]: + def subscribe( + observer: abc.ObserverBase[_T], scheduler_: Optional[abc.SchedulerBase] = None + ): + nonlocal duetime + + _scheduler = scheduler or scheduler_ or TimeoutScheduler.singleton() + + if isinstance(duetime, datetime): + duetime_ = _scheduler.to_datetime(duetime) - _scheduler.now + else: + duetime_ = _scheduler.to_timedelta(duetime) + + cancelable = SerialDisposable() + exception: Optional[Exception] = None + active = [False] + running = [False] + queue: List[Timestamp[Notification[_T]]] = [] + + def on_next(notification: Timestamp[Notification[_T]]) -> None: + nonlocal exception + should_run = False + + with source.lock: + if isinstance(notification.value, OnError): + del queue[:] + queue.append(notification) + exception = notification.value.exception + should_run = not running[0] + else: + queue.append( + Timestamp( + value=notification.value, + timestamp=notification.timestamp + duetime_, + ) + ) + should_run = not active[0] + active[0] = True + + if should_run: + if exception: + observer.on_error(exception) + else: + mad = MultipleAssignmentDisposable() + cancelable.disposable = mad + + def action(scheduler: abc.SchedulerBase, state: Any = None): + if exception: + return + + with source.lock: + running[0] = True + while True: + result = None + if queue and queue[0].timestamp <= scheduler.now: + result = queue.pop(0).value + + if result: + result.accept(observer) + + if not result: + break + + should_continue = False + recurse_duetime: typing.RelativeTime = 0 + if queue: + should_continue = True + diff = queue[0].timestamp - scheduler.now + recurse_duetime = max(DELTA_ZERO, diff) + else: + active[0] = False + + ex = exception + running[0] = False + + if ex: + observer.on_error(ex) + elif should_continue: + mad.disposable = scheduler.schedule_relative( + recurse_duetime, action + ) + + mad.disposable = _scheduler.schedule_relative(duetime_, action) + + subscription = source.pipe( + ops.materialize(), + ops.timestamp(), + ).subscribe(on_next, scheduler=_scheduler) + + return CompositeDisposable(subscription, cancelable) + + return Observable(subscribe) + + +def delay_( + duetime: typing.RelativeTime, scheduler: Optional[abc.SchedulerBase] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + def delay(source: Observable[_T]) -> Observable[_T]: + """Time shifts the observable sequence. + + A partially applied delay operator function. + + Examples: + >>> res = delay(source) + + Args: + source: The observable sequence to delay. + + Returns: + A time-shifted observable sequence. + """ + return observable_delay_timespan(source, duetime, scheduler) + + return delay + + +__all__ = ["delay_"] diff --git a/frogpilot/third_party/reactivex/operators/_delaysubscription.py b/frogpilot/third_party/reactivex/operators/_delaysubscription.py new file mode 100644 index 000000000..97b7f3fd9 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_delaysubscription.py @@ -0,0 +1,38 @@ +from typing import Any, Callable, Optional, TypeVar + +import reactivex +from reactivex import Observable, abc +from reactivex import operators as ops +from reactivex import typing + +_T = TypeVar("_T") + + +def delay_subscription_( + duetime: typing.AbsoluteOrRelativeTime, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + def delay_subscription(source: Observable[_T]) -> Observable[_T]: + """Time shifts the observable sequence by delaying the subscription. + + Exampeles. + >>> res = source.delay_subscription(5) + + Args: + source: Source subscription to delay. + + Returns: + Time-shifted sequence. + """ + + def mapper(_: Any) -> Observable[_T]: + return reactivex.empty() + + return source.pipe( + ops.delay_with_mapper(reactivex.timer(duetime, scheduler=scheduler), mapper) + ) + + return delay_subscription + + +__all__ = ["delay_subscription_"] diff --git a/frogpilot/third_party/reactivex/operators/_delaywithmapper.py b/frogpilot/third_party/reactivex/operators/_delaywithmapper.py new file mode 100644 index 000000000..0465256b0 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_delaywithmapper.py @@ -0,0 +1,109 @@ +from typing import Any, Callable, Optional, TypeVar, Union + +from reactivex import Observable, abc, typing +from reactivex.disposable import ( + CompositeDisposable, + SerialDisposable, + SingleAssignmentDisposable, +) + +_T = TypeVar("_T") + + +def delay_with_mapper_( + subscription_delay: Union[ + Observable[Any], + typing.Mapper[Any, Observable[Any]], + None, + ] = None, + delay_duration_mapper: Optional[typing.Mapper[_T, Observable[Any]]] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + def delay_with_mapper(source: Observable[_T]) -> Observable[_T]: + """Time shifts the observable sequence based on a subscription + delay and a delay mapper function for each element. + + Examples: + >>> obs = delay_with_selector(source) + + Args: + subscription_delay: [Optional] Sequence indicating the + delay for the subscription to the source. + delay_duration_mapper: [Optional] Selector function to + retrieve a sequence indicating the delay for each given + element. + + Returns: + Time-shifted observable sequence. + """ + sub_delay: Optional[Observable[Any]] = None + mapper: Optional[typing.Mapper[Any, Observable[Any]]] = None + + if isinstance(subscription_delay, abc.ObservableBase): + mapper = delay_duration_mapper + sub_delay = subscription_delay + else: + mapper = subscription_delay + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + delays = CompositeDisposable() + at_end = [False] + + def done(): + if at_end[0] and delays.length == 0: + observer.on_completed() + + subscription = SerialDisposable() + + def start(): + def on_next(x: _T) -> None: + try: + assert mapper + delay = mapper(x) + except Exception as error: # pylint: disable=broad-except + observer.on_error(error) + return + + d = SingleAssignmentDisposable() + delays.add(d) + + def on_next(_: Any) -> None: + observer.on_next(x) + delays.remove(d) + done() + + def on_completed() -> None: + observer.on_next(x) + delays.remove(d) + done() + + d.disposable = delay.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + + def on_completed() -> None: + at_end[0] = True + subscription.dispose() + done() + + subscription.disposable = source.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + + if not sub_delay: + start() + else: + subscription.disposable = sub_delay.subscribe( + lambda _: start(), observer.on_error, start + ) + + return CompositeDisposable(subscription, delays) + + return Observable(subscribe) + + return delay_with_mapper + + +__all__ = ["delay_with_mapper_"] diff --git a/frogpilot/third_party/reactivex/operators/_dematerialize.py b/frogpilot/third_party/reactivex/operators/_dematerialize.py new file mode 100644 index 000000000..a2bf1c4b3 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_dematerialize.py @@ -0,0 +1,36 @@ +from typing import Callable, Optional, TypeVar + +from reactivex import Notification, Observable, abc + +_T = TypeVar("_T") + + +def dematerialize_() -> Callable[[Observable[Notification[_T]]], Observable[_T]]: + def dematerialize(source: Observable[Notification[_T]]) -> Observable[_T]: + """Partially applied dematerialize operator. + + Dematerializes the explicit notification values of an + observable sequence as implicit notifications. + + Returns: + An observable sequence exhibiting the behavior + corresponding to the source sequence's notification values. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ): + def on_next(value: Notification[_T]) -> None: + return value.accept(observer) + + return source.subscribe( + on_next, observer.on_error, observer.on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return dematerialize + + +__all__ = ["dematerialize_"] diff --git a/frogpilot/third_party/reactivex/operators/_distinct.py b/frogpilot/third_party/reactivex/operators/_distinct.py new file mode 100644 index 000000000..6c9cc07a5 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_distinct.py @@ -0,0 +1,84 @@ +from typing import Callable, Generic, List, Optional, TypeVar, cast + +from reactivex import Observable, abc, typing +from reactivex.internal.basic import default_comparer + +_T = TypeVar("_T") +_TKey = TypeVar("_TKey") + + +def array_index_of_comparer( + array: List[_TKey], item: _TKey, comparer: typing.Comparer[_TKey] +): + for i, a in enumerate(array): + if comparer(a, item): + return i + return -1 + + +class HashSet(Generic[_TKey]): + def __init__(self, comparer: typing.Comparer[_TKey]): + self.comparer = comparer + self.set: List[_TKey] = [] + + def push(self, value: _TKey): + ret_value = array_index_of_comparer(self.set, value, self.comparer) == -1 + if ret_value: + self.set.append(value) + return ret_value + + +def distinct_( + key_mapper: Optional[typing.Mapper[_T, _TKey]] = None, + comparer: Optional[typing.Comparer[_TKey]] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + comparer_ = comparer or default_comparer + + def distinct(source: Observable[_T]) -> Observable[_T]: + """Returns an observable sequence that contains only distinct + elements according to the key_mapper and the comparer. Usage of + this operator should be considered carefully due to the + maintenance of an internal lookup structure which can grow + large. + + Examples: + >>> res = obs = distinct(source) + + Args: + source: Source observable to return distinct items from. + + Returns: + An observable sequence only containing the distinct + elements, based on a computed key value, from the source + sequence. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + hashset = HashSet(comparer_) + + def on_next(x: _T) -> None: + key = cast(_TKey, x) + + if key_mapper: + try: + key = key_mapper(x) + except Exception as ex: + observer.on_error(ex) + return + + if hashset.push(key): + observer.on_next(x) + + return source.subscribe( + on_next, observer.on_error, observer.on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return distinct + + +__all__ = ["distinct_"] diff --git a/frogpilot/third_party/reactivex/operators/_distinctuntilchanged.py b/frogpilot/third_party/reactivex/operators/_distinctuntilchanged.py new file mode 100644 index 000000000..3d9de569c --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_distinctuntilchanged.py @@ -0,0 +1,80 @@ +from typing import Callable, Optional, TypeVar, cast + +from reactivex import Observable, abc +from reactivex.internal.basic import default_comparer, identity +from reactivex.typing import Comparer, Mapper + +_T = TypeVar("_T") +_TKey = TypeVar("_TKey") + + +def distinct_until_changed_( + key_mapper: Optional[Mapper[_T, _TKey]] = None, + comparer: Optional[Comparer[_TKey]] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + + key_mapper_ = key_mapper or cast(Callable[[_T], _TKey], identity) + comparer_ = comparer or default_comparer + + def distinct_until_changed(source: Observable[_T]) -> Observable[_T]: + """Returns an observable sequence that contains only distinct + contiguous elements according to the key_mapper and the + comparer. + + Examples: + >>> op = distinct_until_changed(); + >>> op = distinct_until_changed(lambda x: x.id) + >>> op = distinct_until_changed(lambda x: x.id, lambda x, y: x == y) + + Args: + key_mapper: [Optional] A function to compute the comparison + key for each element. If not provided, it projects the + value. + comparer: [Optional] Equality comparer for computed key + values. If not provided, defaults to an equality + comparer function. + + Returns: + An observable sequence only containing the distinct + contiguous elements, based on a computed key value, from + the source sequence. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + has_current_key = False + current_key: _TKey = cast(_TKey, None) + + def on_next(value: _T) -> None: + nonlocal has_current_key, current_key + comparer_equals = False + try: + key = key_mapper_(value) + except Exception as exception: # pylint: disable=broad-except + observer.on_error(exception) + return + + if has_current_key: + try: + comparer_equals = comparer_(current_key, key) + except Exception as exception: # pylint: disable=broad-except + observer.on_error(exception) + return + + if not has_current_key or not comparer_equals: + has_current_key = True + current_key = key + observer.on_next(value) + + return source.subscribe( + on_next, observer.on_error, observer.on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return distinct_until_changed + + +__all__ = ["distinct_until_changed_"] diff --git a/frogpilot/third_party/reactivex/operators/_do.py b/frogpilot/third_party/reactivex/operators/_do.py new file mode 100644 index 000000000..a66a1c820 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_do.py @@ -0,0 +1,327 @@ +from typing import Any, Callable, List, Optional, TypeVar + +from reactivex import Observable, abc, typing +from reactivex.disposable import CompositeDisposable + +_T = TypeVar("_T") + + +def do_action_( + on_next: Optional[typing.OnNext[_T]] = None, + on_error: Optional[typing.OnError] = None, + on_completed: Optional[typing.OnCompleted] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + def do_action(source: Observable[_T]) -> Observable[_T]: + """Invokes an action for each element in the observable + sequence and invokes an action on graceful or exceptional + termination of the observable sequence. This method can be used + for debugging, logging, etc. of query behavior by intercepting + the message stream to run arbitrary actions for messages on the + pipeline. + + Examples: + >>> do_action(send)(observable) + >>> do_action(on_next, on_error)(observable) + >>> do_action(on_next, on_error, on_completed)(observable) + + Args: + on_next: [Optional] Action to invoke for each element in + the observable sequence. + on_error: [Optional] Action to invoke on exceptional + termination of the observable sequence. + on_completed: [Optional] Action to invoke on graceful + termination of the observable sequence. + + Returns: + An observable source sequence with the side-effecting + behavior applied. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + def _on_next(x: _T) -> None: + if not on_next: + observer.on_next(x) + else: + try: + on_next(x) + except Exception as e: # pylint: disable=broad-except + observer.on_error(e) + + observer.on_next(x) + + def _on_error(exception: Exception) -> None: + if not on_error: + observer.on_error(exception) + else: + try: + on_error(exception) + except Exception as e: # pylint: disable=broad-except + observer.on_error(e) + + observer.on_error(exception) + + def _on_completed() -> None: + if not on_completed: + observer.on_completed() + else: + try: + on_completed() + except Exception as e: # pylint: disable=broad-except + observer.on_error(e) + + observer.on_completed() + + return source.subscribe( + _on_next, _on_error, _on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return do_action + + +def do_(observer: abc.ObserverBase[_T]) -> Callable[[Observable[_T]], Observable[_T]]: + """Invokes an action for each element in the observable sequence and + invokes an action on graceful or exceptional termination of the + observable sequence. This method can be used for debugging, logging, + etc. of query behavior by intercepting the message stream to run + arbitrary actions for messages on the pipeline. + + >>> do(observer) + + Args: + observer: Observer + + Returns: + An operator function that takes the source observable and + returns the source sequence with the side-effecting behavior + applied. + """ + + return do_action_(observer.on_next, observer.on_error, observer.on_completed) + + +def do_after_next(source: Observable[_T], after_next: typing.OnNext[_T]): + """Invokes an action with each element after it has been emitted downstream. + This can be helpful for debugging, logging, and other side effects. + + after_next -- Action to invoke on each element after it has been emitted + """ + + def subscribe( + observer: abc.ObserverBase[_T], scheduler: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + def on_next(value: _T): + try: + observer.on_next(value) + after_next(value) + except Exception as e: # pylint: disable=broad-except + observer.on_error(e) + + return source.subscribe(on_next, observer.on_error, observer.on_completed) + + return Observable(subscribe) + + +def do_on_subscribe(source: Observable[Any], on_subscribe: typing.Action): + """Invokes an action on subscription. + + This can be helpful for debugging, logging, and other side effects + on the start of an operation. + + Args: + on_subscribe: Action to invoke on subscription + """ + + def subscribe( + observer: abc.ObserverBase[Any], scheduler: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + on_subscribe() + return source.subscribe( + observer.on_next, + observer.on_error, + observer.on_completed, + scheduler=scheduler, + ) + + return Observable(subscribe) + + +def do_on_dispose(source: Observable[Any], on_dispose: typing.Action): + """Invokes an action on disposal. + + This can be helpful for debugging, logging, and other side effects + on the disposal of an operation. + + Args: + on_dispose: Action to invoke on disposal + """ + + class OnDispose(abc.DisposableBase): + def dispose(self) -> None: + on_dispose() + + def subscribe( + observer: abc.ObserverBase[Any], scheduler: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + composite_disposable = CompositeDisposable() + composite_disposable.add(OnDispose()) + subscription = source.subscribe( + observer.on_next, + observer.on_error, + observer.on_completed, + scheduler=scheduler, + ) + composite_disposable.add(subscription) + return composite_disposable + + return Observable(subscribe) + + +def do_on_terminate(source: Observable[Any], on_terminate: typing.Action): + """Invokes an action on an on_complete() or on_error() event. + This can be helpful for debugging, logging, and other side effects + when completion or an error terminates an operation. + + + on_terminate -- Action to invoke when on_complete or throw is called + """ + + def subscribe( + observer: abc.ObserverBase[Any], scheduler: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + def on_completed(): + try: + on_terminate() + except Exception as err: # pylint: disable=broad-except + observer.on_error(err) + else: + observer.on_completed() + + def on_error(exception: Exception): + try: + on_terminate() + except Exception as err: # pylint: disable=broad-except + observer.on_error(err) + else: + observer.on_error(exception) + + return source.subscribe( + observer.on_next, on_error, on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + +def do_after_terminate(source: Observable[Any], after_terminate: typing.Action): + """Invokes an action after an on_complete() or on_error() event. + This can be helpful for debugging, logging, and other side effects + when completion or an error terminates an operation + + + on_terminate -- Action to invoke after on_complete or throw is called + """ + + def subscribe( + observer: abc.ObserverBase[Any], scheduler: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + def on_completed(): + observer.on_completed() + try: + after_terminate() + except Exception as err: # pylint: disable=broad-except + observer.on_error(err) + + def on_error(exception: Exception) -> None: + observer.on_error(exception) + try: + after_terminate() + except Exception as err: # pylint: disable=broad-except + observer.on_error(err) + + return source.subscribe( + observer.on_next, on_error, on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + +def do_finally( + finally_action: typing.Action, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Invokes an action after an on_complete(), on_error(), or disposal + event occurs. + + This can be helpful for debugging, logging, and other side effects + when completion, an error, or disposal terminates an operation. + + Note this operator will strive to execute the finally_action once, + and prevent any redudant calls + + Args: + finally_action -- Action to invoke after on_complete, on_error, + or disposal is called + """ + + class OnDispose(abc.DisposableBase): + def __init__(self, was_invoked: List[bool]): + self.was_invoked = was_invoked + + def dispose(self) -> None: + if not self.was_invoked[0]: + finally_action() + self.was_invoked[0] = True + + def partial(source: Observable[_T]) -> Observable[_T]: + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + + was_invoked = [False] + + def on_completed(): + observer.on_completed() + try: + if not was_invoked[0]: + finally_action() + was_invoked[0] = True + except Exception as err: # pylint: disable=broad-except + observer.on_error(err) + + def on_error(exception: Exception): + observer.on_error(exception) + try: + if not was_invoked[0]: + finally_action() + was_invoked[0] = True + except Exception as err: # pylint: disable=broad-except + observer.on_error(err) + + composite_disposable = CompositeDisposable() + composite_disposable.add(OnDispose(was_invoked)) + subscription = source.subscribe( + observer.on_next, on_error, on_completed, scheduler=scheduler + ) + composite_disposable.add(subscription) + + return composite_disposable + + return Observable(subscribe) + + return partial + + +__all__ = [ + "do_", + "do_action_", + "do_after_next", + "do_finally", + "do_on_dispose", + "do_on_subscribe", + "do_on_terminate", + "do_after_terminate", +] diff --git a/frogpilot/third_party/reactivex/operators/_dowhile.py b/frogpilot/third_party/reactivex/operators/_dowhile.py new file mode 100644 index 000000000..09a48b96a --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_dowhile.py @@ -0,0 +1,36 @@ +from typing import Callable, TypeVar + +from reactivex import Observable +from reactivex import operators as ops + +_T = TypeVar("_T") + + +def do_while_( + condition: Callable[[Observable[_T]], bool] +) -> Callable[[Observable[_T]], Observable[_T]]: + """Repeats source as long as condition holds emulating a do while + loop. + + Args: + condition: The condition which determines if the source will be + repeated. + + Returns: + An observable sequence which is repeated as long + as the condition holds. + """ + + def do_while(source: Observable[_T]) -> Observable[_T]: + return source.pipe( + ops.concat( + source.pipe( + ops.while_do(condition), + ), + ) + ) + + return do_while + + +__all__ = ["do_while_"] diff --git a/frogpilot/third_party/reactivex/operators/_elementatordefault.py b/frogpilot/third_party/reactivex/operators/_elementatordefault.py new file mode 100644 index 000000000..08010bcb7 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_elementatordefault.py @@ -0,0 +1,51 @@ +from typing import Callable, Optional, TypeVar, cast + +from reactivex import Observable, abc +from reactivex.internal.exceptions import ArgumentOutOfRangeException + +_T = TypeVar("_T") + + +def element_at_or_default_( + index: int, has_default: bool = False, default_value: Optional[_T] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + if index < 0: + raise ArgumentOutOfRangeException() + + def element_at_or_default(source: Observable[_T]) -> Observable[_T]: + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + index_ = index + + def on_next(x: _T) -> None: + nonlocal index_ + found = False + with source.lock: + if index_: + index_ -= 1 + else: + found = True + + if found: + observer.on_next(x) + observer.on_completed() + + def on_completed(): + if not has_default: + observer.on_error(ArgumentOutOfRangeException()) + else: + observer.on_next(cast(_T, default_value)) + observer.on_completed() + + return source.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return element_at_or_default + + +__all__ = ["element_at_or_default_"] diff --git a/frogpilot/third_party/reactivex/operators/_exclusive.py b/frogpilot/third_party/reactivex/operators/_exclusive.py new file mode 100644 index 000000000..b6402e276 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_exclusive.py @@ -0,0 +1,74 @@ +from asyncio import Future +from typing import Callable, Optional, TypeVar, Union + +import reactivex +from reactivex import Observable, abc +from reactivex.disposable import CompositeDisposable, SingleAssignmentDisposable + +_T = TypeVar("_T") + + +def exclusive_() -> Callable[[Observable[Observable[_T]]], Observable[_T]]: + """Performs a exclusive waiting for the first to finish before + subscribing to another observable. Observables that come in between + subscriptions will be dropped on the floor. + + Returns: + An exclusive observable with only the results that + happen when subscribed. + """ + + def exclusive(source: Observable[Observable[_T]]) -> Observable[_T]: + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + has_current = [False] + is_stopped = [False] + m = SingleAssignmentDisposable() + g = CompositeDisposable() + + g.add(m) + + def on_next(inner_source: Union[Observable[_T], "Future[_T]"]) -> None: + if not has_current[0]: + has_current[0] = True + + inner_source = ( + reactivex.from_future(inner_source) + if isinstance(inner_source, Future) + else inner_source + ) + + inner_subscription = SingleAssignmentDisposable() + g.add(inner_subscription) + + def on_completed_inner(): + g.remove(inner_subscription) + has_current[0] = False + if is_stopped[0] and len(g) == 1: + observer.on_completed() + + inner_subscription.disposable = inner_source.subscribe( + observer.on_next, + observer.on_error, + on_completed_inner, + scheduler=scheduler, + ) + + def on_completed() -> None: + is_stopped[0] = True + if not has_current[0] and len(g) == 1: + observer.on_completed() + + m.disposable = source.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + return g + + return Observable(subscribe) + + return exclusive + + +__all__ = ["exclusive_"] diff --git a/frogpilot/third_party/reactivex/operators/_expand.py b/frogpilot/third_party/reactivex/operators/_expand.py new file mode 100644 index 000000000..5f744762b --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_expand.py @@ -0,0 +1,102 @@ +from typing import Any, Callable, List, Optional, TypeVar + +from reactivex import Observable, abc, typing +from reactivex.disposable import ( + CompositeDisposable, + SerialDisposable, + SingleAssignmentDisposable, +) +from reactivex.scheduler import ImmediateScheduler + +_T = TypeVar("_T") + + +def expand_( + mapper: typing.Mapper[_T, Observable[_T]] +) -> Callable[[Observable[_T]], Observable[_T]]: + def expand(source: Observable[_T]) -> Observable[_T]: + """Expands an observable sequence by recursively invoking + mapper. + + Args: + source: Source obserable to expand. + + Returns: + An observable sequence containing all the elements produced + by the recursive expansion. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + scheduler = scheduler or ImmediateScheduler.singleton() + + queue: List[Observable[_T]] = [] + m = SerialDisposable() + d = CompositeDisposable(m) + active_count = 0 + is_acquired = False + + def ensure_active(): + nonlocal is_acquired + + is_owner = False + if queue: + is_owner = not is_acquired + is_acquired = True + + def action(scheduler: abc.SchedulerBase, state: Any = None): + nonlocal is_acquired, active_count + + if queue: + work = queue.pop(0) + else: + is_acquired = False + return + + sad = SingleAssignmentDisposable() + d.add(sad) + + def on_next(value: _T) -> None: + nonlocal active_count + + observer.on_next(value) + result = None + try: + result = mapper(value) + except Exception as ex: + observer.on_error(ex) + return + + queue.append(result) + active_count += 1 + ensure_active() + + def on_complete() -> None: + nonlocal active_count + + d.remove(sad) + active_count -= 1 + if active_count == 0: + observer.on_completed() + + sad.disposable = work.subscribe( + on_next, observer.on_error, on_complete, scheduler=scheduler + ) + m.disposable = scheduler.schedule(action) + + if is_owner: + m.disposable = scheduler.schedule(action) + + queue.append(source) + active_count += 1 + ensure_active() + return d + + return Observable(subscribe) + + return expand + + +__all__ = ["expand_"] diff --git a/frogpilot/third_party/reactivex/operators/_filter.py b/frogpilot/third_party/reactivex/operators/_filter.py new file mode 100644 index 000000000..12939565d --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_filter.py @@ -0,0 +1,98 @@ +from typing import Callable, Optional, TypeVar + +from reactivex import Observable, abc +from reactivex.typing import Predicate, PredicateIndexed + +_T = TypeVar("_T") + + +# pylint: disable=redefined-builtin +def filter_(predicate: Predicate[_T]) -> Callable[[Observable[_T]], Observable[_T]]: + def filter(source: Observable[_T]) -> Observable[_T]: + """Partially applied filter operator. + + Filters the elements of an observable sequence based on a + predicate. + + Example: + >>> filter(source) + + Args: + source: Source observable to filter. + + Returns: + A filtered observable sequence. + """ + + def subscribe( + observer: abc.ObserverBase[_T], scheduler: Optional[abc.SchedulerBase] + ) -> abc.DisposableBase: + def on_next(value: _T): + try: + should_run = predicate(value) + except Exception as ex: # pylint: disable=broad-except + observer.on_error(ex) + return + + if should_run: + observer.on_next(value) + + return source.subscribe( + on_next, observer.on_error, observer.on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return filter + + +def filter_indexed_( + predicate_indexed: Optional[PredicateIndexed[_T]] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + def filter_indexed(source: Observable[_T]) -> Observable[_T]: + """Partially applied indexed filter operator. + + Filters the elements of an observable sequence based on a + predicate by incorporating the element's index. + + Example: + >>> filter_indexed(source) + + Args: + source: Source observable to filter. + + Returns: + A filtered observable sequence. + """ + + def subscribe( + observer: abc.ObserverBase[_T], scheduler: Optional[abc.SchedulerBase] + ): + count = 0 + + def on_next(value: _T): + nonlocal count + should_run = True + + if predicate_indexed: + try: + should_run = predicate_indexed(value, count) + except Exception as ex: # pylint: disable=broad-except + observer.on_error(ex) + return + else: + count += 1 + + if should_run: + observer.on_next(value) + + return source.subscribe( + on_next, observer.on_error, observer.on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return filter_indexed + + +__all__ = ["filter_", "filter_indexed_"] diff --git a/frogpilot/third_party/reactivex/operators/_finallyaction.py b/frogpilot/third_party/reactivex/operators/_finallyaction.py new file mode 100644 index 000000000..3e5f396a6 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_finallyaction.py @@ -0,0 +1,50 @@ +from typing import Callable, Optional, TypeVar + +from reactivex import Observable, abc, typing +from reactivex.disposable import Disposable + +_T = TypeVar("_T") + + +def finally_action_( + action: typing.Action, +) -> Callable[[Observable[_T]], Observable[_T]]: + def finally_action(source: Observable[_T]) -> Observable[_T]: + """Invokes a specified action after the source observable + sequence terminates gracefully or exceptionally. + + Example: + res = finally(source) + + Args: + source: Observable sequence. + + Returns: + An observable sequence with the action-invoking termination + behavior applied. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + try: + subscription = source.subscribe(observer, scheduler=scheduler) + except Exception: + action() + raise + + def dispose(): + try: + subscription.dispose() + finally: + action() + + return Disposable(dispose) + + return Observable(subscribe) + + return finally_action + + +__all__ = ["finally_action_"] diff --git a/frogpilot/third_party/reactivex/operators/_find.py b/frogpilot/third_party/reactivex/operators/_find.py new file mode 100644 index 000000000..d4ee2d519 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_find.py @@ -0,0 +1,46 @@ +from typing import Callable, Optional, TypeVar, Union + +from reactivex import Observable, abc + +_T = TypeVar("_T") + + +def find_value_( + predicate: Callable[[_T, int, Observable[_T]], bool], yield_index: bool +) -> Callable[[Observable[_T]], Observable[Union[_T, int, None]]]: + def find_value(source: Observable[_T]) -> Observable[Union[_T, int, None]]: + def subscribe( + observer: abc.ObserverBase[Union[_T, int, None]], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + index = 0 + + def on_next(x: _T) -> None: + nonlocal index + should_run = False + try: + should_run = predicate(x, index, source) + except Exception as ex: # pylint: disable=broad-except + observer.on_error(ex) + return + + if should_run: + observer.on_next(index if yield_index else x) + observer.on_completed() + else: + index += 1 + + def on_completed(): + observer.on_next(-1 if yield_index else None) + observer.on_completed() + + return source.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return find_value + + +__all__ = ["find_value_"] diff --git a/frogpilot/third_party/reactivex/operators/_first.py b/frogpilot/third_party/reactivex/operators/_first.py new file mode 100644 index 000000000..a19cc4d6e --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_first.py @@ -0,0 +1,40 @@ +from typing import Callable, Optional, TypeVar + +from reactivex import Observable, compose +from reactivex import operators as ops +from reactivex.typing import Predicate + +from ._firstordefault import first_or_default_async_ + +_T = TypeVar("_T") + + +def first_( + predicate: Optional[Predicate[_T]] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns the first element of an observable sequence that + satisfies the condition in the predicate if present else the first + item in the sequence. + + Examples: + >>> res = res = first()(source) + >>> res = res = first(lambda x: x > 3)(source) + + Args: + predicate -- [Optional] A predicate function to evaluate for + elements in the source sequence. + + Returns: + A function that takes an observable source and returns an + observable sequence containing the first element in the + observable sequence that satisfies the condition in the predicate if + provided, else the first item in the sequence. + """ + + if predicate: + return compose(ops.filter(predicate), ops.first()) + + return first_or_default_async_(False) + + +__all__ = ["first_"] diff --git a/frogpilot/third_party/reactivex/operators/_firstordefault.py b/frogpilot/third_party/reactivex/operators/_firstordefault.py new file mode 100644 index 000000000..32082ccb1 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_firstordefault.py @@ -0,0 +1,71 @@ +from typing import Callable, Optional, TypeVar, cast + +from reactivex import Observable, abc, compose +from reactivex import operators as ops +from reactivex.internal.exceptions import SequenceContainsNoElementsError +from reactivex.typing import Predicate + +_T = TypeVar("_T") + + +def first_or_default_async_( + has_default: bool = False, default_value: Optional[_T] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + def first_or_default_async(source: Observable[_T]) -> Observable[_T]: + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ): + def on_next(x: _T): + observer.on_next(x) + observer.on_completed() + + def on_completed(): + if not has_default: + observer.on_error(SequenceContainsNoElementsError()) + else: + observer.on_next(cast(_T, default_value)) + observer.on_completed() + + return source.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return first_or_default_async + + +def first_or_default_( + predicate: Optional[Predicate[_T]] = None, default_value: Optional[_T] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns the first element of an observable sequence that + satisfies the condition in the predicate, or a default value if no + such element exists. + + Examples: + >>> res = source.first_or_default() + >>> res = source.first_or_default(lambda x: x > 3) + >>> res = source.first_or_default(lambda x: x > 3, 0) + >>> res = source.first_or_default(None, 0) + + Args: + source -- Observable sequence. + predicate -- [optional] A predicate function to evaluate for + elements in the source sequence. + default_value -- [Optional] The default value if no such element + exists. If not specified, defaults to None. + + Returns: + A function that takes an observable source and reutrn an + observable sequence containing the first element in the + observable sequence that satisfies the condition in the + predicate, or a default value if no such element exists. + """ + + if predicate: + return compose(ops.filter(predicate), ops.first_or_default(None, default_value)) + return first_or_default_async_(True, default_value) + + +__all__ = ["first_or_default_", "first_or_default_async_"] diff --git a/frogpilot/third_party/reactivex/operators/_flatmap.py b/frogpilot/third_party/reactivex/operators/_flatmap.py new file mode 100644 index 000000000..ca60d3790 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_flatmap.py @@ -0,0 +1,131 @@ +from asyncio import Future +from typing import Any, Callable, Optional, TypeVar, Union, cast + +from reactivex import Observable, from_, from_future +from reactivex import operators as ops +from reactivex.internal.basic import identity +from reactivex.typing import Mapper, MapperIndexed + +_T1 = TypeVar("_T1") +_T2 = TypeVar("_T2") + + +def _flat_map_internal( + source: Observable[_T1], + mapper: Optional[Mapper[_T1, Any]] = None, + mapper_indexed: Optional[MapperIndexed[_T1, Any]] = None, +) -> Observable[Any]: + def projection(x: _T1, i: int) -> Observable[Any]: + mapper_result: Any = ( + mapper(x) + if mapper + else mapper_indexed(x, i) + if mapper_indexed + else identity + ) + if isinstance(mapper_result, Future): + result: Observable[Any] = from_future(cast("Future[Any]", mapper_result)) + elif isinstance(mapper_result, Observable): + result = mapper_result + else: + result = from_(mapper_result) + return result + + return source.pipe( + ops.map_indexed(projection), + ops.merge_all(), + ) + + +def flat_map_( + mapper: Optional[Mapper[_T1, Observable[_T2]]] = None +) -> Callable[[Observable[_T1]], Observable[_T2]]: + def flat_map(source: Observable[_T1]) -> Observable[_T2]: + """One of the Following: + Projects each element of an observable sequence to an observable + sequence and merges the resulting observable sequences into one + observable sequence. + + Example: + >>> flat_map(source) + + Args: + source: Source observable to flat map. + + Returns: + An operator function that takes a source observable and returns + an observable sequence whose elements are the result of invoking + the one-to-many transform function on each element of the + input sequence . + """ + + if callable(mapper): + ret = _flat_map_internal(source, mapper=mapper) + else: + ret = _flat_map_internal(source, mapper=lambda _: mapper) + + return ret + + return flat_map + + +def flat_map_indexed_( + mapper_indexed: Optional[Any] = None, +) -> Callable[[Observable[Any]], Observable[Any]]: + def flat_map_indexed(source: Observable[Any]) -> Observable[Any]: + """One of the Following: + Projects each element of an observable sequence to an observable + sequence and merges the resulting observable sequences into one + observable sequence. + + Example: + >>> flat_map_indexed(source) + + Args: + source: Source observable to flat map. + + Returns: + An observable sequence whose elements are the result of invoking + the one-to-many transform function on each element of the input + sequence. + """ + + if callable(mapper_indexed): + ret = _flat_map_internal(source, mapper_indexed=mapper_indexed) + else: + ret = _flat_map_internal(source, mapper=lambda _: mapper_indexed) + return ret + + return flat_map_indexed + + +def flat_map_latest_( + mapper: Mapper[_T1, Union[Observable[_T2], "Future[_T2]"]] +) -> Callable[[Observable[_T1]], Observable[_T2]]: + def flat_map_latest(source: Observable[_T1]) -> Observable[_T2]: + """Projects each element of an observable sequence into a new + sequence of observable sequences by incorporating the element's + index and then transforms an observable sequence of observable + sequences into an observable sequence producing values only + from the most recent observable sequence. + + Args: + source: Source observable to flat map latest. + + Returns: + An observable sequence whose elements are the result of + invoking the transform function on each element of source + producing an observable of Observable sequences and that at + any point in time produces the elements of the most recent + inner observable sequence that has been received. + """ + + return source.pipe( + ops.map(mapper), + ops.switch_latest(), + ) + + return flat_map_latest + + +__all__ = ["flat_map_", "flat_map_latest_", "flat_map_indexed_"] diff --git a/frogpilot/third_party/reactivex/operators/_forkjoin.py b/frogpilot/third_party/reactivex/operators/_forkjoin.py new file mode 100644 index 000000000..9d92be841 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_forkjoin.py @@ -0,0 +1,28 @@ +from typing import Any, Callable, Tuple + +import reactivex +from reactivex import Observable + + +def fork_join_( + *args: Observable[Any], +) -> Callable[[Observable[Any]], Observable[Tuple[Any, ...]]]: + def fork_join(source: Observable[Any]) -> Observable[Tuple[Any, ...]]: + """Wait for observables to complete and then combine last values + they emitted into a tuple. Whenever any of that observables + completes without emitting any value, result sequence will + complete at that moment as well. + + Examples: + >>> obs = fork_join(source) + + Returns: + An observable sequence containing the result of combining + last element from each source in given sequence. + """ + return reactivex.fork_join(source, *args) + + return fork_join + + +__all__ = ["fork_join_"] diff --git a/frogpilot/third_party/reactivex/operators/_groupby.py b/frogpilot/third_party/reactivex/operators/_groupby.py new file mode 100644 index 000000000..f34a65258 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_groupby.py @@ -0,0 +1,30 @@ +from typing import Any, Callable, Optional, TypeVar + +from reactivex import GroupedObservable, Observable, typing +from reactivex.subject import Subject + +_T = TypeVar("_T") +_TKey = TypeVar("_TKey") +_TValue = TypeVar("_TValue") + +# pylint: disable=import-outside-toplevel + + +def group_by_( + key_mapper: typing.Mapper[_T, _TKey], + element_mapper: Optional[typing.Mapper[_T, _TValue]] = None, + subject_mapper: Optional[Callable[[], Subject[_TValue]]] = None, +) -> Callable[[Observable[_T]], Observable[GroupedObservable[_TKey, _TValue]]]: + from reactivex import operators as ops + + def duration_mapper(_: GroupedObservable[Any, Any]) -> Observable[Any]: + import reactivex + + return reactivex.never() + + return ops.group_by_until( + key_mapper, element_mapper, duration_mapper, subject_mapper + ) + + +__all__ = ["group_by_"] diff --git a/frogpilot/third_party/reactivex/operators/_groupbyuntil.py b/frogpilot/third_party/reactivex/operators/_groupbyuntil.py new file mode 100644 index 000000000..39100c0f8 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_groupbyuntil.py @@ -0,0 +1,177 @@ +from collections import OrderedDict +from typing import Any, Callable, Optional, TypeVar, cast + +from reactivex import GroupedObservable, Observable, abc +from reactivex import operators as ops +from reactivex.disposable import ( + CompositeDisposable, + RefCountDisposable, + SingleAssignmentDisposable, +) +from reactivex.internal.basic import identity +from reactivex.subject import Subject +from reactivex.typing import Mapper + +_T = TypeVar("_T") +_TKey = TypeVar("_TKey") +_TValue = TypeVar("_TValue") + + +def group_by_until_( + key_mapper: Mapper[_T, _TKey], + element_mapper: Optional[Mapper[_T, _TValue]], + duration_mapper: Callable[[GroupedObservable[_TKey, _TValue]], Observable[Any]], + subject_mapper: Optional[Callable[[], Subject[_TValue]]] = None, +) -> Callable[[Observable[_T]], Observable[GroupedObservable[_TKey, _TValue]]]: + """Groups the elements of an observable sequence according to a + specified key mapper function. A duration mapper function is used + to control the lifetime of groups. When a group expires, it receives + an OnCompleted notification. When a new element with the same key + value as a reclaimed group occurs, the group will be reborn with a + new lifetime request. + + Examples: + >>> group_by_until(lambda x: x.id, None, lambda : reactivex.never()) + >>> group_by_until( + lambda x: x.id,lambda x: x.name, lambda grp: reactivex.never() + ) + >>> group_by_until( + lambda x: x.id, + lambda x: x.name, + lambda grp: reactivex.never(), + lambda: ReplaySubject() + ) + + Args: + key_mapper: A function to extract the key for each element. + duration_mapper: A function to signal the expiration of a group. + subject_mapper: A function that returns a subject used to initiate + a grouped observable. Default mapper returns a Subject object. + + Returns: a sequence of observable groups, each of which corresponds to + a unique key value, containing all elements that share that same key + value. If a group's lifetime expires, a new group with the same key + value can be created once an element with such a key value is + encountered. + """ + + element_mapper_ = element_mapper or cast(Mapper[_T, _TValue], identity) + + default_subject_mapper: Callable[[], Subject[_TValue]] = lambda: Subject() + subject_mapper_ = subject_mapper or default_subject_mapper + + def group_by_until( + source: Observable[_T], + ) -> Observable[GroupedObservable[_TKey, _TValue]]: + def subscribe( + observer: abc.ObserverBase[GroupedObservable[_TKey, _TValue]], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + writers: OrderedDict[_TKey, Subject[_TValue]] = OrderedDict() + group_disposable = CompositeDisposable() + ref_count_disposable = RefCountDisposable(group_disposable) + + def on_next(x: _T) -> None: + writer = None + key = None + + try: + key = key_mapper(x) + except Exception as e: + for wrt in writers.values(): + wrt.on_error(e) + + observer.on_error(e) + return + + fire_new_map_entry = False + writer = writers.get(key) + if not writer: + try: + writer = subject_mapper_() + except Exception as e: + for wrt in writers.values(): + wrt.on_error(e) + + observer.on_error(e) + return + + writers[key] = writer + fire_new_map_entry = True + + if fire_new_map_entry: + group: GroupedObservable[_TKey, _TValue] = GroupedObservable( + key, writer, ref_count_disposable + ) + duration_group: GroupedObservable[_TKey, Any] = GroupedObservable( + key, writer + ) + try: + duration = duration_mapper(duration_group) + except Exception as e: + for wrt in writers.values(): + wrt.on_error(e) + + observer.on_error(e) + return + + observer.on_next(group) + sad = SingleAssignmentDisposable() + group_disposable.add(sad) + + def expire() -> None: + if writers[key]: + del writers[key] + writer.on_completed() + + group_disposable.remove(sad) + + def on_next(value: Any) -> None: + pass + + def on_error(exn: Exception) -> None: + for wrt in writers.values(): + wrt.on_error(exn) + observer.on_error(exn) + + def on_completed() -> None: + expire() + + sad.disposable = duration.pipe( + ops.take(1), + ).subscribe(on_next, on_error, on_completed, scheduler=scheduler) + + try: + element = element_mapper_(x) + except Exception as error: + for wrt in writers.values(): + wrt.on_error(error) + + observer.on_error(error) + return + + writer.on_next(element) + + def on_error(ex: Exception) -> None: + for wrt in writers.values(): + wrt.on_error(ex) + + observer.on_error(ex) + + def on_completed() -> None: + for wrt in writers.values(): + wrt.on_completed() + + observer.on_completed() + + group_disposable.add( + source.subscribe(on_next, on_error, on_completed, scheduler=scheduler) + ) + return ref_count_disposable + + return Observable(subscribe) + + return group_by_until + + +__all__ = ["group_by_until_"] diff --git a/frogpilot/third_party/reactivex/operators/_groupjoin.py b/frogpilot/third_party/reactivex/operators/_groupjoin.py new file mode 100644 index 000000000..0e4ce00c8 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_groupjoin.py @@ -0,0 +1,178 @@ +import logging +from collections import OrderedDict +from typing import Any, Callable, Optional, Tuple, TypeVar + +from reactivex import Observable, abc +from reactivex import operators as ops +from reactivex.disposable import ( + CompositeDisposable, + RefCountDisposable, + SingleAssignmentDisposable, +) +from reactivex.internal import add_ref +from reactivex.subject import Subject + +_TLeft = TypeVar("_TLeft") +_TRight = TypeVar("_TRight") + +log = logging.getLogger("Rx") + + +def group_join_( + right: Observable[_TRight], + left_duration_mapper: Callable[[_TLeft], Observable[Any]], + right_duration_mapper: Callable[[_TRight], Observable[Any]], +) -> Callable[[Observable[_TLeft]], Observable[Tuple[_TLeft, Observable[_TRight]]]]: + """Correlates the elements of two sequences based on overlapping + durations, and groups the results. + + Args: + right: The right observable sequence to join elements for. + left_duration_mapper: A function to select the duration (expressed + as an observable sequence) of each element of the left observable + sequence, used to determine overlap. + right_duration_mapper: A function to select the duration (expressed + as an observable sequence) of each element of the right observable + sequence, used to determine overlap. + + Returns: + An observable sequence that contains elements combined into a tuple + from source elements that have an overlapping duration. + """ + + def nothing(_: Any) -> None: + return None + + def group_join( + left: Observable[_TLeft], + ) -> Observable[Tuple[_TLeft, Observable[_TRight]]]: + def subscribe( + observer: abc.ObserverBase[Tuple[_TLeft, Observable[_TRight]]], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + group = CompositeDisposable() + rcd = RefCountDisposable(group) + left_map: OrderedDict[int, Subject[_TRight]] = OrderedDict() + right_map: OrderedDict[int, _TRight] = OrderedDict() + left_id = [0] + right_id = [0] + + def on_next_left(value: _TLeft) -> None: + subject: Subject[_TRight] = Subject() + + with left.lock: + _id = left_id[0] + left_id[0] += 1 + left_map[_id] = subject + + try: + result = (value, add_ref(subject, rcd)) + except Exception as e: + log.error("*** Exception: %s" % e) + for left_value in left_map.values(): + left_value.on_error(e) + + observer.on_error(e) + return + + observer.on_next(result) + + for right_value in right_map.values(): + subject.on_next(right_value) + + md = SingleAssignmentDisposable() + group.add(md) + + def expire(): + if _id in left_map: + del left_map[_id] + subject.on_completed() + + group.remove(md) + + try: + duration = left_duration_mapper(value) + except Exception as e: + for left_value in left_map.values(): + left_value.on_error(e) + + observer.on_error(e) + return + + def on_error(error: Exception) -> Any: + for left_value in left_map.values(): + left_value.on_error(error) + + observer.on_error(error) + + md.disposable = duration.pipe(ops.take(1)).subscribe( + nothing, on_error, expire, scheduler=scheduler + ) + + def on_error_left(error: Exception) -> None: + for left_value in left_map.values(): + left_value.on_error(error) + + observer.on_error(error) + + group.add( + left.subscribe( + on_next_left, + on_error_left, + observer.on_completed, + scheduler=scheduler, + ) + ) + + def send_right(value: _TRight) -> None: + with left.lock: + _id = right_id[0] + right_id[0] += 1 + right_map[_id] = value + + md = SingleAssignmentDisposable() + group.add(md) + + def expire(): + del right_map[_id] + group.remove(md) + + try: + duration = right_duration_mapper(value) + except Exception as e: + for left_value in left_map.values(): + left_value.on_error(e) + + observer.on_error(e) + return + + def on_error(error: Exception): + with left.lock: + for left_value in left_map.values(): + left_value.on_error(error) + + observer.on_error(error) + + md.disposable = duration.pipe(ops.take(1)).subscribe( + nothing, on_error, expire, scheduler=scheduler + ) + + with left.lock: + for left_value in left_map.values(): + left_value.on_next(value) + + def on_error_right(error: Exception) -> None: + for left_value in left_map.values(): + left_value.on_error(error) + + observer.on_error(error) + + group.add(right.subscribe(send_right, on_error_right, scheduler=scheduler)) + return rcd + + return Observable(subscribe) + + return group_join + + +__all__ = ["group_join_"] diff --git a/frogpilot/third_party/reactivex/operators/_ignoreelements.py b/frogpilot/third_party/reactivex/operators/_ignoreelements.py new file mode 100644 index 000000000..163205285 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_ignoreelements.py @@ -0,0 +1,32 @@ +from typing import Callable, Optional, TypeVar + +from reactivex import Observable, abc +from reactivex.internal import noop + +_T = TypeVar("_T") + + +def ignore_elements_() -> Callable[[Observable[_T]], Observable[_T]]: + """Ignores all elements in an observable sequence leaving only the + termination messages. + + Returns: + An empty observable {Observable} sequence that signals + termination, successful or exceptional, of the source sequence. + """ + + def ignore_elements(source: Observable[_T]) -> Observable[_T]: + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + return source.subscribe( + noop, observer.on_error, observer.on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return ignore_elements + + +__all__ = ["ignore_elements_"] diff --git a/frogpilot/third_party/reactivex/operators/_isempty.py b/frogpilot/third_party/reactivex/operators/_isempty.py new file mode 100644 index 000000000..3f5c01539 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_isempty.py @@ -0,0 +1,24 @@ +from typing import Any, Callable + +from reactivex import Observable, compose +from reactivex import operators as ops + + +def is_empty_() -> Callable[[Observable[Any]], Observable[bool]]: + """Determines whether an observable sequence is empty. + + Returns: + An observable sequence containing a single element + determining whether the source sequence is empty. + """ + + def mapper(b: bool) -> bool: + return not b + + return compose( + ops.some(), + ops.map(mapper), + ) + + +__all__ = ["is_empty_"] diff --git a/frogpilot/third_party/reactivex/operators/_join.py b/frogpilot/third_party/reactivex/operators/_join.py new file mode 100644 index 000000000..059457250 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_join.py @@ -0,0 +1,144 @@ +from collections import OrderedDict +from typing import Any, Callable, Optional, Tuple, TypeVar + +from reactivex import Observable, abc +from reactivex.disposable import CompositeDisposable, SingleAssignmentDisposable +from reactivex.internal import noop +from reactivex.operators import take + +_T1 = TypeVar("_T1") +_T2 = TypeVar("_T2") + + +def join_( + right: Observable[_T2], + left_duration_mapper: Callable[[Any], Observable[Any]], + right_duration_mapper: Callable[[Any], Observable[Any]], +) -> Callable[[Observable[_T1]], Observable[Tuple[_T1, _T2]]]: + def join(source: Observable[_T1]) -> Observable[Tuple[_T1, _T2]]: + """Correlates the elements of two sequences based on + overlapping durations. + + Args: + source: Source observable. + + Return: + An observable sequence that contains elements + combined into a tuple from source elements that have an overlapping + duration. + """ + + left = source + + def subscribe( + observer: abc.ObserverBase[Tuple[_T1, _T2]], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + group = CompositeDisposable() + left_done = False + left_map: OrderedDict[int, _T1] = OrderedDict() + left_id = 0 + right_done = False + right_map: OrderedDict[int, _T2] = OrderedDict() + right_id = 0 + + def on_next_left(value: _T1): + nonlocal left_id + duration = None + current_id = left_id + left_id += 1 + md = SingleAssignmentDisposable() + + left_map[current_id] = value + group.add(md) + + def expire(): + if current_id in left_map: + del left_map[current_id] + if not len(left_map) and left_done: + observer.on_completed() + + group.remove(md) + + try: + duration = left_duration_mapper(value) + except Exception as exception: + observer.on_error(exception) + return + + md.disposable = duration.pipe(take(1)).subscribe( + noop, observer.on_error, lambda: expire(), scheduler=scheduler + ) + + for val in right_map.values(): + result = (value, val) + observer.on_next(result) + + def on_completed_left() -> None: + nonlocal left_done + left_done = True + if right_done or not len(left_map): + observer.on_completed() + + group.add( + left.subscribe( + on_next_left, + observer.on_error, + on_completed_left, + scheduler=scheduler, + ) + ) + + def on_next_right(value: _T2): + nonlocal right_id + duration = None + current_id = right_id + right_id += 1 + md = SingleAssignmentDisposable() + right_map[current_id] = value + group.add(md) + + def expire(): + if current_id in right_map: + del right_map[current_id] + if not len(right_map) and right_done: + observer.on_completed() + + group.remove(md) + + try: + duration = right_duration_mapper(value) + except Exception as exception: + observer.on_error(exception) + return + + md.disposable = duration.pipe(take(1)).subscribe( + noop, observer.on_error, lambda: expire(), scheduler=scheduler + ) + + for val in left_map.values(): + result = (val, value) + observer.on_next(result) + + def on_completed_right(): + nonlocal right_done + right_done = True + if left_done or not len(right_map): + observer.on_completed() + + group.add( + right.subscribe( + on_next_right, + observer.on_error, + on_completed_right, + scheduler=scheduler, + ) + ) + return group + + return Observable(subscribe) + + return join + + +__all__ = ["join_"] diff --git a/frogpilot/third_party/reactivex/operators/_last.py b/frogpilot/third_party/reactivex/operators/_last.py new file mode 100644 index 000000000..e5441cf78 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_last.py @@ -0,0 +1,44 @@ +from typing import Any, Callable, Optional, TypeVar + +from reactivex import Observable, operators +from reactivex.typing import Predicate + +from ._lastordefault import last_or_default_async + +_T = TypeVar("_T") + + +def last_( + predicate: Optional[Predicate[_T]] = None, +) -> Callable[[Observable[_T]], Observable[Any]]: + def last(source: Observable[_T]) -> Observable[Any]: + """Partially applied last operator. + + Returns the last element of an observable sequence that + satisfies the condition in the predicate if specified, else + the last element. + + Examples: + >>> res = last(source) + + Args: + source: Source observable to get last item from. + + Returns: + An observable sequence containing the last element in the + observable sequence that satisfies the condition in the + predicate. + """ + + if predicate: + return source.pipe( + operators.filter(predicate), + operators.last(), + ) + + return last_or_default_async(source, False) + + return last + + +__all__ = ["last_"] diff --git a/frogpilot/third_party/reactivex/operators/_lastordefault.py b/frogpilot/third_party/reactivex/operators/_lastordefault.py new file mode 100644 index 000000000..2b3886f80 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_lastordefault.py @@ -0,0 +1,69 @@ +from typing import Any, Callable, Optional, TypeVar + +from reactivex import Observable, abc +from reactivex import operators as ops +from reactivex import typing +from reactivex.internal.exceptions import SequenceContainsNoElementsError + +_T = TypeVar("_T") + + +def last_or_default_async( + source: Observable[_T], + has_default: bool = False, + default_value: Optional[_T] = None, +) -> Observable[Optional[_T]]: + def subscribe( + observer: abc.ObserverBase[Optional[_T]], + scheduler: Optional[abc.SchedulerBase] = None, + ): + value = [default_value] + seen_value = [False] + + def on_next(x: _T) -> None: + value[0] = x + seen_value[0] = True + + def on_completed(): + if not seen_value[0] and not has_default: + observer.on_error(SequenceContainsNoElementsError()) + else: + observer.on_next(value[0]) + observer.on_completed() + + return source.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + +def last_or_default( + default_value: Optional[_T] = None, predicate: Optional[typing.Predicate[_T]] = None +) -> Callable[[Observable[_T]], Observable[Any]]: + def last_or_default(source: Observable[Any]) -> Observable[Any]: + """Return last or default element. + + Examples: + >>> res = _last_or_default(source) + + Args: + source: Observable sequence to get the last item from. + + Returns: + Observable sequence containing the last element in the + observable sequence. + """ + + if predicate: + return source.pipe( + ops.filter(predicate), + ops.last_or_default(default_value), + ) + + return last_or_default_async(source, True, default_value) + + return last_or_default + + +__all__ = ["last_or_default", "last_or_default_async"] diff --git a/frogpilot/third_party/reactivex/operators/_map.py b/frogpilot/third_party/reactivex/operators/_map.py new file mode 100644 index 000000000..48b4c0947 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_map.py @@ -0,0 +1,72 @@ +from typing import Callable, Optional, TypeVar, cast + +from reactivex import Observable, abc, compose +from reactivex import operators as ops +from reactivex import typing +from reactivex.internal.basic import identity +from reactivex.internal.utils import infinite +from reactivex.typing import Mapper, MapperIndexed + +_T1 = TypeVar("_T1") +_T2 = TypeVar("_T2") + + +def map_( + mapper: Optional[Mapper[_T1, _T2]] = None +) -> Callable[[Observable[_T1]], Observable[_T2]]: + + _mapper = mapper or cast(Mapper[_T1, _T2], identity) + + def map(source: Observable[_T1]) -> Observable[_T2]: + """Partially applied map operator. + + Project each element of an observable sequence into a new form + by incorporating the element's index. + + Example: + >>> map(source) + + Args: + source: The observable source to transform. + + Returns: + Returns an observable sequence whose elements are the + result of invoking the transform function on each element + of the source. + """ + + def subscribe( + obv: abc.ObserverBase[_T2], scheduler: Optional[abc.SchedulerBase] = None + ) -> abc.DisposableBase: + def on_next(value: _T1) -> None: + try: + result = _mapper(value) + except Exception as err: # pylint: disable=broad-except + obv.on_error(err) + else: + obv.on_next(result) + + return source.subscribe( + on_next, obv.on_error, obv.on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return map + + +def map_indexed_( + mapper_indexed: Optional[MapperIndexed[_T1, _T2]] = None +) -> Callable[[Observable[_T1]], Observable[_T2]]: + def _identity(value: _T1, _: int) -> _T2: + return cast(_T2, value) + + _mapper_indexed = mapper_indexed or cast(typing.MapperIndexed[_T1, _T2], _identity) + + return compose( + ops.zip_with_iterable(infinite()), + ops.starmap_indexed(_mapper_indexed), + ) + + +__all__ = ["map_", "map_indexed_"] diff --git a/frogpilot/third_party/reactivex/operators/_materialize.py b/frogpilot/third_party/reactivex/operators/_materialize.py new file mode 100644 index 000000000..97ad1af35 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_materialize.py @@ -0,0 +1,48 @@ +from typing import Callable, Optional, TypeVar + +from reactivex import Observable, abc +from reactivex.notification import Notification, OnCompleted, OnError, OnNext + +_T = TypeVar("_T") + + +def materialize() -> Callable[[Observable[_T]], Observable[Notification[_T]]]: + def materialize(source: Observable[_T]) -> Observable[Notification[_T]]: + """Partially applied materialize operator. + + Materializes the implicit notifications of an observable + sequence as explicit notification values. + + Args: + source: Source observable to materialize. + + Returns: + An observable sequence containing the materialized + notification values from the source sequence. + """ + + def subscribe( + observer: abc.ObserverBase[Notification[_T]], + scheduler: Optional[abc.SchedulerBase] = None, + ): + def on_next(value: _T) -> None: + observer.on_next(OnNext(value)) + + def on_error(error: Exception) -> None: + observer.on_next(OnError(error)) + observer.on_completed() + + def on_completed() -> None: + observer.on_next(OnCompleted()) + observer.on_completed() + + return source.subscribe( + on_next, on_error, on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return materialize + + +__all__ = ["materialize"] diff --git a/frogpilot/third_party/reactivex/operators/_max.py b/frogpilot/third_party/reactivex/operators/_max.py new file mode 100644 index 000000000..287d5fb7c --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_max.py @@ -0,0 +1,37 @@ +from typing import Callable, Optional, TypeVar, cast + +from reactivex import Observable, compose +from reactivex import operators as ops +from reactivex.internal.basic import identity +from reactivex.typing import Comparer + +from ._min import first_only + +_T = TypeVar("_T") + + +def max_( + comparer: Optional[Comparer[_T]] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns the maximum value in an observable sequence according to + the specified comparer. + + Examples: + >>> op = max() + >>> op = max(lambda x, y: x.value - y.value) + + Args: + comparer: [Optional] Comparer used to compare elements. + + Returns: + An operator function that takes an observable source and returns + an observable sequence containing a single element with the + maximum element in the source sequence. + """ + return compose( + ops.max_by(cast(Callable[[_T], _T], identity), comparer), + ops.map(first_only), + ) + + +__all__ = ["max_"] diff --git a/frogpilot/third_party/reactivex/operators/_maxby.py b/frogpilot/third_party/reactivex/operators/_maxby.py new file mode 100644 index 000000000..c83ad8497 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_maxby.py @@ -0,0 +1,40 @@ +from typing import Callable, List, Optional, TypeVar + +from reactivex import Observable, typing +from reactivex.internal.basic import default_sub_comparer + +from ._minby import extrema_by + +_T = TypeVar("_T") +_TKey = TypeVar("_TKey") + + +def max_by_( + key_mapper: typing.Mapper[_T, _TKey], + comparer: Optional[typing.SubComparer[_TKey]] = None, +) -> Callable[[Observable[_T]], Observable[List[_T]]]: + + cmp = comparer or default_sub_comparer + + def max_by(source: Observable[_T]) -> Observable[List[_T]]: + """Partially applied max_by operator. + + Returns the elements in an observable sequence with the maximum + key value. + + Examples: + >>> res = max_by(source) + + Args: + source: The source observable sequence to. + + Returns: + An observable sequence containing a list of zero or more + elements that have a maximum key value. + """ + return extrema_by(source, key_mapper, cmp) + + return max_by + + +__all__ = ["max_by_"] diff --git a/frogpilot/third_party/reactivex/operators/_merge.py b/frogpilot/third_party/reactivex/operators/_merge.py new file mode 100644 index 000000000..30ecf0610 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_merge.py @@ -0,0 +1,153 @@ +from asyncio import Future +from typing import Callable, List, Optional, TypeVar, Union + +import reactivex +from reactivex import Observable, abc, from_future, typing +from reactivex.disposable import CompositeDisposable, SingleAssignmentDisposable +from reactivex.internal import synchronized + +_T = TypeVar("_T") + + +def merge_( + *sources: Observable[_T], max_concurrent: Optional[int] = None +) -> Callable[[Observable[Observable[_T]]], Observable[_T]]: + def merge(source: Observable[Observable[_T]]) -> Observable[_T]: + """Merges an observable sequence of observable sequences into + an observable sequence, limiting the number of concurrent + subscriptions to inner sequences. Or merges two observable + sequences into a single observable sequence. + + Examples: + >>> res = merge(sources) + + Args: + source: Source observable. + + Returns: + The observable sequence that merges the elements of the + inner sequences. + """ + + if max_concurrent is None: + sources_ = tuple([source]) + sources + return reactivex.merge(*sources_) + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ): + active_count = [0] + group = CompositeDisposable() + is_stopped = [False] + queue: List[Observable[_T]] = [] + + def subscribe(xs: Observable[_T]): + subscription = SingleAssignmentDisposable() + group.add(subscription) + + @synchronized(source.lock) + def on_completed(): + group.remove(subscription) + if queue: + s = queue.pop(0) + subscribe(s) + else: + active_count[0] -= 1 + if is_stopped[0] and active_count[0] == 0: + observer.on_completed() + + on_next = synchronized(source.lock)(observer.on_next) + on_error = synchronized(source.lock)(observer.on_error) + subscription.disposable = xs.subscribe( + on_next, on_error, on_completed, scheduler=scheduler + ) + + def on_next(inner_source: Observable[_T]) -> None: + assert max_concurrent + if active_count[0] < max_concurrent: + active_count[0] += 1 + subscribe(inner_source) + else: + queue.append(inner_source) + + def on_completed(): + is_stopped[0] = True + if active_count[0] == 0: + observer.on_completed() + + group.add( + source.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + ) + return group + + return Observable(subscribe) + + return merge + + +def merge_all_() -> Callable[[Observable[Observable[_T]]], Observable[_T]]: + def merge_all(source: Observable[Observable[_T]]) -> Observable[_T]: + """Partially applied merge_all operator. + + Merges an observable sequence of observable sequences into an + observable sequence. + + Args: + source: Source observable to merge. + + Returns: + The observable sequence that merges the elements of the inner + sequences. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ): + group = CompositeDisposable() + is_stopped = [False] + m = SingleAssignmentDisposable() + group.add(m) + + def on_next(inner_source: Union[Observable[_T], "Future[_T]"]): + inner_subscription = SingleAssignmentDisposable() + group.add(inner_subscription) + + inner_source = ( + from_future(inner_source) + if isinstance(inner_source, Future) + else inner_source + ) + + @synchronized(source.lock) + def on_completed(): + group.remove(inner_subscription) + if is_stopped[0] and len(group) == 1: + observer.on_completed() + + on_next: typing.OnNext[_T] = synchronized(source.lock)(observer.on_next) + on_error = synchronized(source.lock)(observer.on_error) + subscription = inner_source.subscribe( + on_next, on_error, on_completed, scheduler=scheduler + ) + inner_subscription.disposable = subscription + + def on_completed(): + is_stopped[0] = True + if len(group) == 1: + observer.on_completed() + + m.disposable = source.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + return group + + return Observable(subscribe) + + return merge_all + + +__all__ = ["merge_", "merge_all_"] diff --git a/frogpilot/third_party/reactivex/operators/_min.py b/frogpilot/third_party/reactivex/operators/_min.py new file mode 100644 index 000000000..85a89c8d6 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_min.py @@ -0,0 +1,44 @@ +from typing import Callable, List, Optional, TypeVar, cast + +from reactivex import Observable, compose +from reactivex import operators as ops +from reactivex.internal.basic import identity +from reactivex.internal.exceptions import SequenceContainsNoElementsError +from reactivex.typing import Comparer + +_T = TypeVar("_T") + + +def first_only(x: List[_T]) -> _T: + if not x: + raise SequenceContainsNoElementsError() + + return x[0] + + +def min_( + comparer: Optional[Comparer[_T]] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """The `min` operator. + + Returns the minimum element in an observable sequence according to + the optional comparer else a default greater than less than check. + + Examples: + >>> res = source.min() + >>> res = source.min(lambda x, y: x.value - y.value) + + Args: + comparer: [Optional] Comparer used to compare elements. + + Returns: + An observable sequence containing a single element + with the minimum element in the source sequence. + """ + return compose( + ops.min_by(cast(Callable[[_T], _T], identity), comparer), + ops.map(first_only), + ) + + +__all__ = ["min_"] diff --git a/frogpilot/third_party/reactivex/operators/_minby.py b/frogpilot/third_party/reactivex/operators/_minby.py new file mode 100644 index 000000000..ff07d4e91 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_minby.py @@ -0,0 +1,91 @@ +from typing import Callable, List, Optional, TypeVar, cast + +from reactivex import Observable, abc, typing +from reactivex.internal.basic import default_sub_comparer + +_T = TypeVar("_T") +_TKey = TypeVar("_TKey") + + +def extrema_by( + source: Observable[_T], + key_mapper: typing.Mapper[_T, _TKey], + comparer: typing.SubComparer[_TKey], +) -> Observable[List[_T]]: + def subscribe( + observer: abc.ObserverBase[List[_T]], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + has_value = False + last_key: _TKey = cast(_TKey, None) + items: List[_T] = [] + + def on_next(x: _T) -> None: + nonlocal has_value, last_key + try: + key = key_mapper(x) + except Exception as ex: + observer.on_error(ex) + return + + comparison = 0 + + if not has_value: + has_value = True + last_key = key + else: + try: + comparison = comparer(key, last_key) + except Exception as ex1: + observer.on_error(ex1) + return + + if comparison > 0: + last_key = key + items[:] = [] + + if comparison >= 0: + items.append(x) + + def on_completed(): + observer.on_next(items) + observer.on_completed() + + return source.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + +def min_by_( + key_mapper: typing.Mapper[_T, _TKey], + comparer: Optional[typing.SubComparer[_TKey]] = None, +) -> Callable[[Observable[_T]], Observable[List[_T]]]: + """The `min_by` operator. + + Returns the elements in an observable sequence with the minimum key + value according to the specified comparer. + + Examples: + >>> res = min_by(lambda x: x.value) + >>> res = min_by(lambda x: x.value, lambda x, y: x - y) + + Args: + key_mapper: Key mapper function. + comparer: [Optional] Comparer used to compare key values. + + Returns: + An observable sequence containing a list of zero or more + elements that have a minimum key value. + """ + + cmp = comparer or default_sub_comparer + + def min_by(source: Observable[_T]) -> Observable[List[_T]]: + return extrema_by(source, key_mapper, lambda x, y: -cmp(x, y)) + + return min_by + + +__all__ = ["min_by_"] diff --git a/frogpilot/third_party/reactivex/operators/_multicast.py b/frogpilot/third_party/reactivex/operators/_multicast.py new file mode 100644 index 000000000..ebae2c0b2 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_multicast.py @@ -0,0 +1,78 @@ +from typing import Callable, Optional, TypeVar, Union + +from reactivex import ConnectableObservable, Observable, abc +from reactivex import operators as ops +from reactivex.disposable import CompositeDisposable + +_TSource = TypeVar("_TSource") +_TResult = TypeVar("_TResult") + + +def multicast_( + subject: Optional[abc.SubjectBase[_TSource]] = None, + *, + subject_factory: Optional[ + Callable[[Optional[abc.SchedulerBase]], abc.SubjectBase[_TSource]] + ] = None, + mapper: Optional[Callable[[Observable[_TSource]], Observable[_TResult]]] = None, +) -> Callable[ + [Observable[_TSource]], Union[Observable[_TResult], ConnectableObservable[_TSource]] +]: + """Multicasts the source sequence notifications through an + instantiated subject into all uses of the sequence within a mapper + function. Each subscription to the resulting sequence causes a + separate multicast invocation, exposing the sequence resulting from + the mapper function's invocation. For specializations with fixed + subject types, see Publish, PublishLast, and Replay. + + Examples: + >>> res = multicast(observable) + >>> res = multicast( + subject_factory=lambda scheduler: Subject(), + mapper=lambda x: x + ) + + Args: + subject_factory: Factory function to create an intermediate + subject through which the source sequence's elements will be + multicast to the mapper function. + subject: Subject to push source elements into. + mapper: [Optional] Mapper function which can use the + multicasted source sequence subject to the policies enforced + by the created subject. Specified only if subject_factory" + is a factory function. + + Returns: + An observable sequence that contains the elements of a sequence + produced by multicasting the source sequence within a mapper + function. + """ + + def multicast( + source: Observable[_TSource], + ) -> Union[Observable[_TResult], ConnectableObservable[_TSource]]: + if subject_factory: + + def subscribe( + observer: abc.ObserverBase[_TResult], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + assert subject_factory + connectable = source.pipe( + ops.multicast(subject=subject_factory(scheduler)) + ) + assert mapper + subscription = mapper(connectable).subscribe( + observer, scheduler=scheduler + ) + + return CompositeDisposable(subscription, connectable.connect(scheduler)) + + return Observable(subscribe) + + if not subject: + raise ValueError("multicast: Subject cannot be None") + ret: ConnectableObservable[_TSource] = ConnectableObservable(source, subject) + return ret + + return multicast diff --git a/frogpilot/third_party/reactivex/operators/_observeon.py b/frogpilot/third_party/reactivex/operators/_observeon.py new file mode 100644 index 000000000..22362e6e5 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_observeon.py @@ -0,0 +1,43 @@ +from typing import Callable, Optional, TypeVar + +from reactivex import Observable, abc +from reactivex.observer import ObserveOnObserver + +_T = TypeVar("_T") + + +def observe_on_( + scheduler: abc.SchedulerBase, +) -> Callable[[Observable[_T]], Observable[_T]]: + def observe_on(source: Observable[_T]) -> Observable[_T]: + """Wraps the source sequence in order to run its observer + callbacks on the specified scheduler. + + This only invokes observer callbacks on a scheduler. In case + the subscription and/or unsubscription actions have + side-effects that require to be run on a scheduler, use + subscribe_on. + + Args: + source: Source observable. + + + Returns: + Returns the source sequence whose observations happen on + the specified scheduler. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + subscribe_scheduler: Optional[abc.SchedulerBase] = None, + ): + return source.subscribe( + ObserveOnObserver(scheduler, observer), scheduler=subscribe_scheduler + ) + + return Observable(subscribe) + + return observe_on + + +__all__ = ["observe_on_"] diff --git a/frogpilot/third_party/reactivex/operators/_onerrorresumenext.py b/frogpilot/third_party/reactivex/operators/_onerrorresumenext.py new file mode 100644 index 000000000..bafcd714b --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_onerrorresumenext.py @@ -0,0 +1,18 @@ +from typing import Callable, TypeVar + +import reactivex +from reactivex import Observable + +_T = TypeVar("_T") + + +def on_error_resume_next_( + second: Observable[_T], +) -> Callable[[Observable[_T]], Observable[_T]]: + def on_error_resume_next(source: Observable[_T]) -> Observable[_T]: + return reactivex.on_error_resume_next(source, second) + + return on_error_resume_next + + +__all__ = ["on_error_resume_next_"] diff --git a/frogpilot/third_party/reactivex/operators/_pairwise.py b/frogpilot/third_party/reactivex/operators/_pairwise.py new file mode 100644 index 000000000..a5b3af937 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_pairwise.py @@ -0,0 +1,53 @@ +from typing import Callable, Optional, Tuple, TypeVar, cast + +from reactivex import Observable, abc + +_T = TypeVar("_T") + + +def pairwise_() -> Callable[[Observable[_T]], Observable[Tuple[_T, _T]]]: + def pairwise(source: Observable[_T]) -> Observable[Tuple[_T, _T]]: + """Partially applied pairwise operator. + + Returns a new observable that triggers on the second and + subsequent triggerings of the input observable. The Nth + triggering of the input observable passes the arguments from + the N-1th and Nth triggering as a pair. The argument passed to + the N-1th triggering is held in hidden internal state until the + Nth triggering occurs. + + Returns: + An observable that triggers on successive pairs of + observations from the input observable as an array. + """ + + def subscribe( + observer: abc.ObserverBase[Tuple[_T, _T]], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + has_previous = False + previous: _T = cast(_T, None) + + def on_next(x: _T) -> None: + nonlocal has_previous, previous + pair = None + + with source.lock: + if has_previous: + pair = (previous, x) + else: + has_previous = True + + previous = x + + if pair: + observer.on_next(pair) + + return source.subscribe(on_next, observer.on_error, observer.on_completed) + + return Observable(subscribe) + + return pairwise + + +__all__ = ["pairwise_"] diff --git a/frogpilot/third_party/reactivex/operators/_partition.py b/frogpilot/third_party/reactivex/operators/_partition.py new file mode 100644 index 000000000..2f005e7db --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_partition.py @@ -0,0 +1,88 @@ +from typing import Callable, List, TypeVar + +from reactivex import Observable +from reactivex import operators as ops +from reactivex.typing import Predicate, PredicateIndexed + +_T = TypeVar("_T") + + +def partition_( + predicate: Predicate[_T], +) -> Callable[[Observable[_T]], List[Observable[_T]]]: + def partition(source: Observable[_T]) -> List[Observable[_T]]: + """The partially applied `partition` operator. + + Returns two observables which partition the observations of the + source by the given function. The first will trigger + observations for those values for which the predicate returns + true. The second will trigger observations for those values + where the predicate returns false. The predicate is executed + once for each subscribed observer. Both also propagate all + error observations arising from the source and each completes + when the source completes. + + Args: + source: Source obserable to partition. + + Returns: + A list of observables. The first triggers when the + predicate returns True, and the second triggers when the + predicate returns False. + """ + + def not_predicate(x: _T) -> bool: + return not predicate(x) + + published = source.pipe( + ops.publish(), + ops.ref_count(), + ) + return [ + published.pipe(ops.filter(predicate)), + published.pipe(ops.filter(not_predicate)), + ] + + return partition + + +def partition_indexed_( + predicate_indexed: PredicateIndexed[_T], +) -> Callable[[Observable[_T]], List[Observable[_T]]]: + def partition_indexed(source: Observable[_T]) -> List[Observable[_T]]: + """The partially applied indexed partition operator. + + Returns two observables which partition the observations of the + source by the given function. The first will trigger + observations for those values for which the predicate returns + true. The second will trigger observations for those values + where the predicate returns false. The predicate is executed + once for each subscribed observer. Both also propagate all + error observations arising from the source and each completes + when the source completes. + + Args: + source: Source observable to partition. + + Returns: + A list of observables. The first triggers when the + predicate returns True, and the second triggers when the + predicate returns False. + """ + + def not_predicate_indexed(x: _T, i: int) -> bool: + return not predicate_indexed(x, i) + + published = source.pipe( + ops.publish(), + ops.ref_count(), + ) + return [ + published.pipe(ops.filter_indexed(predicate_indexed)), + published.pipe(ops.filter_indexed(not_predicate_indexed)), + ] + + return partition_indexed + + +__all__ = ["partition_", "partition_indexed_"] diff --git a/frogpilot/third_party/reactivex/operators/_pluck.py b/frogpilot/third_party/reactivex/operators/_pluck.py new file mode 100644 index 000000000..04cf7b66f --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_pluck.py @@ -0,0 +1,46 @@ +from typing import Any, Callable, Dict, TypeVar + +from reactivex import Observable +from reactivex import operators as ops + +_TKey = TypeVar("_TKey") +_TValue = TypeVar("_TValue") + + +def pluck_( + key: _TKey, +) -> Callable[[Observable[Dict[_TKey, _TValue]]], Observable[_TValue]]: + """Retrieves the value of a specified key using dict-like access (as in + element[key]) from all elements in the Observable sequence. + + Args: + key: The key to pluck. + + Returns a new Observable {Observable} sequence of key values. + + To pluck an attribute of each element, use pluck_attr. + """ + + def mapper(x: Dict[_TKey, _TValue]) -> _TValue: + return x[key] + + return ops.map(mapper) + + +def pluck_attr_(prop: str) -> Callable[[Observable[Any]], Observable[Any]]: + """Retrieves the value of a specified property (using getattr) from + all elements in the Observable sequence. + + Args: + property: The property to pluck. + + Returns a new Observable {Observable} sequence of property values. + + To pluck values using dict-like access (as in element[key]) on each + element, use pluck. + """ + + return ops.map(lambda x: getattr(x, prop)) + + +__all__ = ["pluck_", "pluck_attr_"] diff --git a/frogpilot/third_party/reactivex/operators/_publish.py b/frogpilot/third_party/reactivex/operators/_publish.py new file mode 100644 index 000000000..4a99adfb1 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_publish.py @@ -0,0 +1,66 @@ +from typing import Callable, Optional, TypeVar, Union + +from reactivex import ConnectableObservable, Observable, abc, compose +from reactivex import operators as ops +from reactivex.subject import Subject +from reactivex.typing import Mapper + +_TSource = TypeVar("_TSource") +_TResult = TypeVar("_TResult") + + +def publish_( + mapper: Optional[Mapper[Observable[_TSource], Observable[_TResult]]] = None, +) -> Callable[ + [Observable[_TSource]], Union[Observable[_TResult], ConnectableObservable[_TSource]] +]: + """Returns an observable sequence that is the result of invoking the + mapper on a connectable observable sequence that shares a single + subscription to the underlying sequence. This operator is a + specialization of Multicast using a regular Subject. + + Example: + >>> res = publish() + >>> res = publish(lambda x: x) + + mapper: [Optional] Selector function which can use the + multicasted source sequence as many times as needed, without causing + multiple subscriptions to the source sequence. Subscribers to the + given source will receive all notifications of the source from the + time of the subscription on. + + Returns: + An observable sequence that contains the elements of a sequence + produced by multicasting the source sequence within a mapper + function. + """ + + if mapper: + + def factory(scheduler: Optional[abc.SchedulerBase] = None) -> Subject[_TSource]: + return Subject() + + return ops.multicast(subject_factory=factory, mapper=mapper) + + subject: Subject[_TSource] = Subject() + return ops.multicast(subject=subject) + + +def share_() -> Callable[[Observable[_TSource]], Observable[_TSource]]: + """Share a single subscription among multple observers. + + Returns a new Observable that multicasts (shares) the original + Observable. As long as there is at least one Subscriber this + Observable will be subscribed and emitting data. When all + subscribers have unsubscribed it will unsubscribe from the source + Observable. + + This is an alias for a composed publish() and ref_count(). + """ + return compose( + ops.publish(), + ops.ref_count(), + ) + + +__all__ = ["publish_", "share_"] diff --git a/frogpilot/third_party/reactivex/operators/_publishvalue.py b/frogpilot/third_party/reactivex/operators/_publishvalue.py new file mode 100644 index 000000000..7dab26137 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_publishvalue.py @@ -0,0 +1,29 @@ +from typing import Callable, Optional, TypeVar, Union, cast + +from reactivex import ConnectableObservable, Observable, abc +from reactivex import operators as ops +from reactivex.subject import BehaviorSubject +from reactivex.typing import Mapper + +_T1 = TypeVar("_T1") +_T2 = TypeVar("_T2") + + +def publish_value_( + initial_value: _T1, + mapper: Optional[Mapper[Observable[_T1], Observable[_T2]]] = None, +) -> Callable[[Observable[_T1]], Union[Observable[_T2], ConnectableObservable[_T1]]]: + if mapper: + + def subject_factory( + scheduler: Optional[abc.SchedulerBase] = None, + ) -> BehaviorSubject[_T1]: + return BehaviorSubject(initial_value) + + return ops.multicast(subject_factory=subject_factory, mapper=mapper) + + subject = BehaviorSubject(cast(_T2, initial_value)) + return ops.multicast(subject) + + +__all__ = ["publish_value_"] diff --git a/frogpilot/third_party/reactivex/operators/_reduce.py b/frogpilot/third_party/reactivex/operators/_reduce.py new file mode 100644 index 000000000..8238ea964 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_reduce.py @@ -0,0 +1,51 @@ +from typing import Any, Callable, Type, TypeVar, Union, cast + +from reactivex import Observable, compose +from reactivex import operators as ops +from reactivex.internal.utils import NotSet +from reactivex.typing import Accumulator + +_T = TypeVar("_T") +_TState = TypeVar("_TState") + + +def reduce_( + accumulator: Accumulator[_TState, _T], seed: Union[_TState, Type[NotSet]] = NotSet +) -> Callable[[Observable[_T]], Observable[Any]]: + """Applies an accumulator function over an observable sequence, + returning the result of the aggregation as a single element in the + result sequence. The specified seed value is used as the initial + accumulator value. + + For aggregation behavior with incremental intermediate results, see + `scan()`. + + Examples: + >>> res = reduce(lambda acc, x: acc + x) + >>> res = reduce(lambda acc, x: acc + x, 0) + + Args: + accumulator: An accumulator function to be + invoked on each element. + seed: Optional initial accumulator value. + + Returns: + An operator function that takes an observable source and returns + an observable sequence containing a single element with the + final accumulator value. + """ + if seed is not NotSet: + seed_: _TState = cast(_TState, seed) + scanner = ops.scan(accumulator, seed=seed_) + return compose( + scanner, + ops.last_or_default(default_value=seed_), + ) + + return compose( + ops.scan(cast(Accumulator[_T, _T], accumulator)), + ops.last(), + ) + + +__all__ = ["reduce_"] diff --git a/frogpilot/third_party/reactivex/operators/_repeat.py b/frogpilot/third_party/reactivex/operators/_repeat.py new file mode 100644 index 000000000..a9fe04367 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_repeat.py @@ -0,0 +1,46 @@ +import sys +from typing import Callable, Optional, TypeVar + +import reactivex +from reactivex import Observable +from reactivex.internal.utils import infinite + +_T = TypeVar("_T") + + +def repeat_( + repeat_count: Optional[int] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + if repeat_count is None: + repeat_count = sys.maxsize + + def repeat(source: Observable[_T]) -> Observable[_T]: + """Repeats the observable sequence a specified number of times. + If the repeat count is not specified, the sequence repeats + indefinitely. + + Examples: + >>> repeated = source.repeat() + >>> repeated = source.repeat(42) + + Args: + source: The observable source to repeat. + + Returns: + The observable sequence producing the elements of the given + sequence repeatedly. + """ + + if repeat_count is None: + gen = infinite() + else: + gen = range(repeat_count) + + return reactivex.defer( + lambda _: reactivex.concat_with_iterable(source for _ in gen) + ) + + return repeat + + +__all = ["repeat"] diff --git a/frogpilot/third_party/reactivex/operators/_replay.py b/frogpilot/third_party/reactivex/operators/_replay.py new file mode 100644 index 000000000..67a271fa7 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_replay.py @@ -0,0 +1,64 @@ +from typing import Callable, Optional, TypeVar, Union + +from reactivex import ConnectableObservable, Observable, abc +from reactivex import operators as ops +from reactivex import typing +from reactivex.subject import ReplaySubject +from reactivex.typing import Mapper + +_TSource = TypeVar("_TSource") +_TResult = TypeVar("_TResult") + + +def replay_( + mapper: Optional[Mapper[Observable[_TSource], Observable[_TResult]]] = None, + buffer_size: Optional[int] = None, + window: Optional[typing.RelativeTime] = None, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[ + [Observable[_TSource]], Union[Observable[_TResult], ConnectableObservable[_TSource]] +]: + """Returns an observable sequence that is the result of invoking the + mapper on a connectable observable sequence that shares a single + subscription to the underlying sequence replaying notifications + subject to a maximum time length for the replay buffer. + + This operator is a specialization of Multicast using a + ReplaySubject. + + Examples: + >>> res = replay(buffer_size=3) + >>> res = replay(buffer_size=3, window=500) + >>> res = replay(None, 3, 500) + >>> res = replay(lambda x: x.take(6).repeat(), 3, 500) + + Args: + mapper: [Optional] Selector function which can use the multicasted + source sequence as many times as needed, without causing + multiple subscriptions to the source sequence. Subscribers to + the given source will receive all the notifications of the + source subject to the specified replay buffer trimming policy. + buffer_size: [Optional] Maximum element count of the replay + buffer. + window: [Optional] Maximum time length of the replay buffer. + scheduler: [Optional] Scheduler the observers are invoked on. + + Returns: + An observable sequence that contains the elements of a + sequence produced by multicasting the source sequence within a + mapper function. + """ + + if mapper: + + def subject_factory( + scheduler: Optional[abc.SchedulerBase] = None, + ) -> ReplaySubject[_TSource]: + return ReplaySubject(buffer_size, window, scheduler) + + return ops.multicast(subject_factory=subject_factory, mapper=mapper) + rs: ReplaySubject[_TSource] = ReplaySubject(buffer_size, window, scheduler) + return ops.multicast(subject=rs) + + +__all__ = ["replay_"] diff --git a/frogpilot/third_party/reactivex/operators/_retry.py b/frogpilot/third_party/reactivex/operators/_retry.py new file mode 100644 index 000000000..8cc506053 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_retry.py @@ -0,0 +1,41 @@ +from typing import Callable, Optional, TypeVar + +import reactivex +from reactivex import Observable +from reactivex.internal.utils import infinite + +_T = TypeVar("_T") + + +def retry_( + retry_count: Optional[int] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Repeats the source observable sequence the specified number of + times or until it successfully terminates. If the retry count is + not specified, it retries indefinitely. + + Examples: + >>> retried = retry() + >>> retried = retry(42) + + Args: + retry_count: [Optional] Number of times to retry the sequence. + If not provided, retry the sequence indefinitely. + + Returns: + An observable sequence producing the elements of the given + sequence repeatedly until it terminates successfully. + """ + + if retry_count is None: + gen = infinite() + else: + gen = range(retry_count) + + def retry(source: Observable[_T]) -> Observable[_T]: + return reactivex.catch_with_iterable(source for _ in gen) + + return retry + + +__all__ = ["retry_"] diff --git a/frogpilot/third_party/reactivex/operators/_sample.py b/frogpilot/third_party/reactivex/operators/_sample.py new file mode 100644 index 000000000..07dc259c1 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_sample.py @@ -0,0 +1,80 @@ +from typing import Any, Callable, Optional, TypeVar, Union, cast + +import reactivex +from reactivex import Observable, abc, typing +from reactivex.disposable import CompositeDisposable + +_T = TypeVar("_T") + + +def sample_observable( + source: Observable[_T], sampler: Observable[Any] +) -> Observable[_T]: + def subscribe( + observer: abc.ObserverBase[_T], scheduler: Optional[abc.SchedulerBase] = None + ): + at_end = False + has_value = False + value: _T = cast(_T, None) + + def sample_subscribe(_: Any = None) -> None: + nonlocal has_value + if has_value: + has_value = False + observer.on_next(value) + + if at_end: + observer.on_completed() + + def on_next(new_value: _T): + nonlocal has_value, value + has_value = True + value = new_value + + def on_completed(): + nonlocal at_end + at_end = True + + return CompositeDisposable( + source.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ), + sampler.subscribe( + sample_subscribe, + observer.on_error, + sample_subscribe, + scheduler=scheduler, + ), + ) + + return Observable(subscribe) + + +def sample_( + sampler: Union[typing.RelativeTime, Observable[Any]], + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + def sample(source: Observable[_T]) -> Observable[_T]: + """Samples the observable sequence at each interval. + + Examples: + >>> res = sample(source) + + Args: + source: Source sequence to sample. + + Returns: + Sampled observable sequence. + """ + + if isinstance(sampler, abc.ObservableBase): + return sample_observable(source, sampler) + else: + return sample_observable( + source, reactivex.interval(sampler, scheduler=scheduler) + ) + + return sample + + +__all__ = ["sample_"] diff --git a/frogpilot/third_party/reactivex/operators/_scan.py b/frogpilot/third_party/reactivex/operators/_scan.py new file mode 100644 index 000000000..bcf067f09 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_scan.py @@ -0,0 +1,60 @@ +from typing import Callable, Type, TypeVar, Union, cast + +from reactivex import Observable, abc, defer +from reactivex import operators as ops +from reactivex.internal.utils import NotSet +from reactivex.typing import Accumulator + +_T = TypeVar("_T") +_TState = TypeVar("_TState") + + +def scan_( + accumulator: Accumulator[_TState, _T], seed: Union[_TState, Type[NotSet]] = NotSet +) -> Callable[[Observable[_T]], Observable[_TState]]: + has_seed = seed is not NotSet + + def scan(source: Observable[_T]) -> Observable[_TState]: + """Partially applied scan operator. + + Applies an accumulator function over an observable sequence and + returns each intermediate result. + + Examples: + >>> scanned = scan(source) + + Args: + source: The observable source to scan. + + Returns: + An observable sequence containing the accumulated values. + """ + + def factory(scheduler: abc.SchedulerBase) -> Observable[_TState]: + has_accumulation = False + accumulation: _TState = cast(_TState, None) + + def projection(x: _T) -> _TState: + nonlocal has_accumulation + nonlocal accumulation + + if has_accumulation: + accumulation = accumulator(accumulation, x) + else: + accumulation = ( + accumulator(cast(_TState, seed), x) + if has_seed + else cast(_TState, x) + ) + has_accumulation = True + + return accumulation + + return source.pipe(ops.map(projection)) + + return defer(factory) + + return scan + + +__all__ = ["scan_"] diff --git a/frogpilot/third_party/reactivex/operators/_sequenceequal.py b/frogpilot/third_party/reactivex/operators/_sequenceequal.py new file mode 100644 index 000000000..d79a531b8 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_sequenceequal.py @@ -0,0 +1,124 @@ +from typing import Callable, Iterable, List, Optional, TypeVar, Union + +import reactivex +from reactivex import Observable, abc, typing +from reactivex.disposable import CompositeDisposable +from reactivex.internal import default_comparer + +_T = TypeVar("_T") + + +def sequence_equal_( + second: Union[Observable[_T], Iterable[_T]], + comparer: Optional[typing.Comparer[_T]] = None, +) -> Callable[[Observable[_T]], Observable[bool]]: + comparer_ = comparer or default_comparer + second_ = ( + reactivex.from_iterable(second) if isinstance(second, Iterable) else second + ) + + def sequence_equal(source: Observable[_T]) -> Observable[bool]: + """Determines whether two sequences are equal by comparing the + elements pairwise using a specified equality comparer. + + Examples: + >>> res = sequence_equal([1,2,3]) + >>> res = sequence_equal([{ "value": 42 }], lambda x, y: x.value == y.value) + >>> res = sequence_equal(reactivex.return_value(42)) + >>> res = sequence_equal( + reactivex.return_value({ "value": 42 }), + lambda x, y: x.value == y.value + ) + + Args: + source: Source obserable to compare. + + Returns: + An observable sequence that contains a single element which + indicates whether both sequences are of equal length and their + corresponding elements are equal according to the specified + equality comparer. + """ + first = source + + def subscribe( + observer: abc.ObserverBase[bool], + scheduler: Optional[abc.SchedulerBase] = None, + ): + donel = [False] + doner = [False] + ql: List[_T] = [] + qr: List[_T] = [] + + def on_next1(x: _T) -> None: + if len(qr) > 0: + v = qr.pop(0) + try: + equal = comparer_(v, x) + except Exception as e: + observer.on_error(e) + return + + if not equal: + observer.on_next(False) + observer.on_completed() + + elif doner[0]: + observer.on_next(False) + observer.on_completed() + else: + ql.append(x) + + def on_completed1() -> None: + donel[0] = True + if not ql: + if qr: + observer.on_next(False) + observer.on_completed() + elif doner[0]: + observer.on_next(True) + observer.on_completed() + + def on_next2(x: _T): + if len(ql) > 0: + v = ql.pop(0) + try: + equal = comparer_(v, x) + except Exception as exception: + observer.on_error(exception) + return + + if not equal: + observer.on_next(False) + observer.on_completed() + + elif donel[0]: + observer.on_next(False) + observer.on_completed() + else: + qr.append(x) + + def on_completed2(): + doner[0] = True + if not qr: + if len(ql) > 0: + observer.on_next(False) + observer.on_completed() + elif donel[0]: + observer.on_next(True) + observer.on_completed() + + subscription1 = first.subscribe( + on_next1, observer.on_error, on_completed1, scheduler=scheduler + ) + subscription2 = second_.subscribe( + on_next2, observer.on_error, on_completed2, scheduler=scheduler + ) + return CompositeDisposable(subscription1, subscription2) + + return Observable(subscribe) + + return sequence_equal + + +__all__ = ["sequence_equal_"] diff --git a/frogpilot/third_party/reactivex/operators/_single.py b/frogpilot/third_party/reactivex/operators/_single.py new file mode 100644 index 000000000..ea85324f1 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_single.py @@ -0,0 +1,36 @@ +from typing import Callable, Optional, TypeVar + +from reactivex import Observable, compose +from reactivex import operators as ops +from reactivex.typing import Predicate + +_T = TypeVar("_T") + + +def single_( + predicate: Optional[Predicate[_T]] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns the only element of an observable sequence that satisfies the + condition in the optional predicate, and reports an exception if there + is not exactly one element in the observable sequence. + + Example: + >>> res = single() + >>> res = single(lambda x: x == 42) + + Args: + predicate -- [Optional] A predicate function to evaluate for + elements in the source sequence. + + Returns: + An observable sequence containing the single element in the + observable sequence that satisfies the condition in the predicate. + """ + + if predicate: + return compose(ops.filter(predicate), ops.single()) + else: + return ops.single_or_default_async(False) + + +__all__ = ["single_"] diff --git a/frogpilot/third_party/reactivex/operators/_singleordefault.py b/frogpilot/third_party/reactivex/operators/_singleordefault.py new file mode 100644 index 000000000..ca2ba2519 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_singleordefault.py @@ -0,0 +1,83 @@ +from typing import Callable, Optional, TypeVar, cast + +from reactivex import Observable, abc, compose +from reactivex import operators as ops +from reactivex.internal.exceptions import SequenceContainsNoElementsError +from reactivex.typing import Predicate + +_T = TypeVar("_T") + + +def single_or_default_async_( + has_default: bool = False, default_value: Optional[_T] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + def single_or_default_async(source: Observable[_T]) -> Observable[_T]: + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ): + value = cast(_T, default_value) + seen_value = False + + def on_next(x: _T): + nonlocal value, seen_value + + if seen_value: + observer.on_error( + Exception("Sequence contains more than one element") + ) + else: + value = x + seen_value = True + + def on_completed(): + if not seen_value and not has_default: + observer.on_error(SequenceContainsNoElementsError()) + else: + observer.on_next(value) + observer.on_completed() + + return source.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return single_or_default_async + + +def single_or_default_( + predicate: Optional[Predicate[_T]] = None, default_value: _T = None +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns the only element of an observable sequence that matches + the predicate, or a default value if no such element exists this + method reports an exception if there is more than one element in the + observable sequence. + + Examples: + >>> res = single_or_default() + >>> res = single_or_default(lambda x: x == 42) + >>> res = single_or_default(lambda x: x == 42, 0) + >>> res = single_or_default(None, 0) + + Args: + predicate -- [Optional] A predicate function to evaluate for + elements in the source sequence. + default_value -- [Optional] The default value if the index is + outside the bounds of the source sequence. + + Returns: + An observable Sequence containing the single element in the + observable sequence that satisfies the condition in the predicate, + or a default value if no such element exists. + """ + + if predicate: + return compose( + ops.filter(predicate), ops.single_or_default(None, default_value) + ) + else: + return single_or_default_async_(True, default_value) + + +__all__ = ["single_or_default_", "single_or_default_async_"] diff --git a/frogpilot/third_party/reactivex/operators/_skip.py b/frogpilot/third_party/reactivex/operators/_skip.py new file mode 100644 index 000000000..1cd77f3f5 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_skip.py @@ -0,0 +1,50 @@ +from typing import Callable, Optional, TypeVar + +from reactivex import Observable, abc +from reactivex.internal import ArgumentOutOfRangeException + +_T = TypeVar("_T") + + +def skip_(count: int) -> Callable[[Observable[_T]], Observable[_T]]: + if count < 0: + raise ArgumentOutOfRangeException() + + def skip(source: Observable[_T]) -> Observable[_T]: + """The skip operator. + + Bypasses a specified number of elements in an observable sequence + and then returns the remaining elements. + + Args: + source: The source observable. + + Returns: + An observable sequence that contains the elements that occur + after the specified index in the input sequence. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ): + remaining = count + + def on_next(value: _T) -> None: + nonlocal remaining + + if remaining <= 0: + observer.on_next(value) + else: + remaining -= 1 + + return source.subscribe( + on_next, observer.on_error, observer.on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return skip + + +__all__ = ["skip_"] diff --git a/frogpilot/third_party/reactivex/operators/_skiplast.py b/frogpilot/third_party/reactivex/operators/_skiplast.py new file mode 100644 index 000000000..779266fd4 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_skiplast.py @@ -0,0 +1,52 @@ +from typing import Callable, List, Optional, TypeVar + +from reactivex import Observable, abc + +_T = TypeVar("_T") + + +def skip_last_(count: int) -> Callable[[Observable[_T]], Observable[_T]]: + def skip_last(source: Observable[_T]) -> Observable[_T]: + """Bypasses a specified number of elements at the end of an + observable sequence. + + This operator accumulates a queue with a length enough to store + the first `count` elements. As more elements are received, + elements are taken from the front of the queue and produced on + the result sequence. This causes elements to be delayed. + + Args: + count: Number of elements to bypass at the end of the + source sequence. + + Returns: + An observable sequence containing the source sequence + elements except for the bypassed ones at the end. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ): + q: List[_T] = [] + + def on_next(value: _T) -> None: + front = None + with source.lock: + q.append(value) + if len(q) > count: + front = q.pop(0) + + if front is not None: + observer.on_next(front) + + return source.subscribe( + on_next, observer.on_error, observer.on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return skip_last + + +__all__ = ["skip_last_"] diff --git a/frogpilot/third_party/reactivex/operators/_skiplastwithtime.py b/frogpilot/third_party/reactivex/operators/_skiplastwithtime.py new file mode 100644 index 000000000..f5c5d4b89 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_skiplastwithtime.py @@ -0,0 +1,69 @@ +from typing import Any, Callable, Dict, List, Optional, TypeVar + +from reactivex import Observable, abc, typing +from reactivex.scheduler import TimeoutScheduler + +_T = TypeVar("_T") + + +def skip_last_with_time_( + duration: typing.RelativeTime, scheduler: Optional[abc.SchedulerBase] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + """Skips elements for the specified duration from the end of the + observable source sequence. + + Example: + >>> res = skip_last_with_time(5.0) + + This operator accumulates a queue with a length enough to store + elements received during the initial duration window. As more + elements are received, elements older than the specified duration + are taken from the queue and produced on the result sequence. This + causes elements to be delayed with duration. + + Args: + duration: Duration for skipping elements from the end of the + sequence. + scheduler: Scheduler to use for time handling. + + Returns: + An observable sequence with the elements skipped during the + specified duration from the end of the source sequence. + """ + + def skip_last_with_time(source: Observable[_T]) -> Observable[_T]: + def subscribe( + observer: abc.ObserverBase[_T], + scheduler_: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + nonlocal duration + + _scheduler: abc.SchedulerBase = ( + scheduler or scheduler_ or TimeoutScheduler.singleton() + ) + duration = _scheduler.to_timedelta(duration) + q: List[Dict[str, Any]] = [] + + def on_next(x: _T) -> None: + now = _scheduler.now + q.append({"interval": now, "value": x}) + while q and now - q[0]["interval"] >= duration: + observer.on_next(q.pop(0)["value"]) + + def on_completed() -> None: + now = _scheduler.now + while q and now - q[0]["interval"] >= duration: + observer.on_next(q.pop(0)["value"]) + + observer.on_completed() + + return source.subscribe( + on_next, observer.on_error, on_completed, scheduler=_scheduler + ) + + return Observable(subscribe) + + return skip_last_with_time + + +__all__ = ["skip_last_with_time_"] diff --git a/frogpilot/third_party/reactivex/operators/_skipuntil.py b/frogpilot/third_party/reactivex/operators/_skipuntil.py new file mode 100644 index 000000000..5dfc98fa1 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_skipuntil.py @@ -0,0 +1,72 @@ +from asyncio import Future +from typing import Any, Callable, Optional, TypeVar, Union + +from reactivex import Observable, abc, from_future +from reactivex.disposable import CompositeDisposable, SingleAssignmentDisposable + +_T = TypeVar("_T") + + +def skip_until_( + other: Union[Observable[Any], "Future[Any]"] +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns the values from the source observable sequence only after + the other observable sequence produces a value. + + Args: + other: The observable sequence that triggers propagation of + elements of the source sequence. + + Returns: + An observable sequence containing the elements of the source + sequence starting from the point the other sequence triggered + propagation. + """ + + if isinstance(other, Future): + obs: Observable[Any] = from_future(other) + else: + obs = other + + def skip_until(source: Observable[_T]) -> Observable[_T]: + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ): + is_open = [False] + + def on_next(left: _T) -> None: + if is_open[0]: + observer.on_next(left) + + def on_completed() -> None: + if is_open[0]: + observer.on_completed() + + subs = source.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + subscriptions = CompositeDisposable(subs) + + right_subscription = SingleAssignmentDisposable() + subscriptions.add(right_subscription) + + def on_next2(x: Any) -> None: + is_open[0] = True + right_subscription.dispose() + + def on_completed2(): + right_subscription.dispose() + + right_subscription.disposable = obs.subscribe( + on_next2, observer.on_error, on_completed2, scheduler=scheduler + ) + + return subscriptions + + return Observable(subscribe) + + return skip_until + + +__all__ = ["skip_until_"] diff --git a/frogpilot/third_party/reactivex/operators/_skipuntilwithtime.py b/frogpilot/third_party/reactivex/operators/_skipuntilwithtime.py new file mode 100644 index 000000000..05d6afc4d --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_skipuntilwithtime.py @@ -0,0 +1,69 @@ +from datetime import datetime +from typing import Any, Callable, Optional, TypeVar + +from reactivex import Observable, abc, typing +from reactivex.disposable import CompositeDisposable +from reactivex.scheduler import TimeoutScheduler + +_T = TypeVar("_T") + + +def skip_until_with_time_( + start_time: typing.AbsoluteOrRelativeTime, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + def skip_until_with_time(source: Observable[_T]) -> Observable[_T]: + """Skips elements from the observable source sequence until the + specified start time. + + Errors produced by the source sequence are always forwarded to + the result sequence, even if the error occurs before the start + time. + + Examples: + >>> res = source.skip_until_with_time(datetime) + >>> res = source.skip_until_with_time(5.0) + + Args: + start_time: Time to start taking elements from the source + sequence. If this value is less than or equal to + `datetime.utcnow`, no elements will be skipped. + + Returns: + An observable sequence with the elements skipped until the + specified start time. + """ + + if isinstance(start_time, datetime): + scheduler_method = "schedule_absolute" + else: + scheduler_method = "schedule_relative" + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler_: Optional[abc.SchedulerBase] = None, + ): + _scheduler = scheduler or scheduler_ or TimeoutScheduler.singleton() + + open = [False] + + def on_next(x: _T) -> None: + if open[0]: + observer.on_next(x) + + subscription = source.subscribe( + on_next, observer.on_error, observer.on_completed, scheduler=scheduler_ + ) + + def action(scheduler: abc.SchedulerBase, state: Any): + open[0] = True + + disp = getattr(_scheduler, scheduler_method)(start_time, action) + return CompositeDisposable(disp, subscription) + + return Observable(subscribe) + + return skip_until_with_time + + +__all__ = ["skip_until_with_time_"] diff --git a/frogpilot/third_party/reactivex/operators/_skipwhile.py b/frogpilot/third_party/reactivex/operators/_skipwhile.py new file mode 100644 index 000000000..accf1d40b --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_skipwhile.py @@ -0,0 +1,78 @@ +from typing import Callable, Optional, Tuple, TypeVar + +from reactivex import Observable, abc, compose +from reactivex import operators as ops +from reactivex import typing + +_T = TypeVar("_T") + + +def skip_while_( + predicate: typing.Predicate[_T], +) -> Callable[[Observable[_T]], Observable[_T]]: + def skip_while(source: Observable[_T]) -> Observable[_T]: + """Bypasses elements in an observable sequence as long as a + specified condition is true and then returns the remaining + elements. The element's index is used in the logic of the + predicate function. + + Example: + >>> skip_while(source) + + Args: + source: The source observable to skip elements from. + + Returns: + An observable sequence that contains the elements from the + input sequence starting at the first element in the linear + series that does not pass the test specified by predicate. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ): + running = False + + def on_next(value: _T): + nonlocal running + + if not running: + try: + running = not predicate(value) + except Exception as exn: + observer.on_error(exn) + return + + if running: + observer.on_next(value) + + return source.subscribe( + on_next, observer.on_error, observer.on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return skip_while + + +def skip_while_indexed_( + predicate: typing.PredicateIndexed[_T], +) -> Callable[[Observable[_T]], Observable[_T]]: + def indexer(x: _T, i: int) -> Tuple[_T, int]: + return (x, i) + + def skipper(x: Tuple[_T, int]) -> bool: + return predicate(*x) + + def mapper(x: Tuple[_T, int]) -> _T: + return x[0] + + return compose( + ops.map_indexed(indexer), + ops.skip_while(skipper), + ops.map(mapper), + ) + + +__all__ = ["skip_while_", "skip_while_indexed_"] diff --git a/frogpilot/third_party/reactivex/operators/_skipwithtime.py b/frogpilot/third_party/reactivex/operators/_skipwithtime.py new file mode 100644 index 000000000..cc3b13e2f --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_skipwithtime.py @@ -0,0 +1,66 @@ +from typing import Any, Callable, Optional, TypeVar + +from reactivex import Observable, abc, typing +from reactivex.disposable import CompositeDisposable +from reactivex.scheduler import TimeoutScheduler + +_T = TypeVar("_T") + + +def skip_with_time_( + duration: typing.RelativeTime, scheduler: Optional[abc.SchedulerBase] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + def skip_with_time(source: Observable[_T]) -> Observable[_T]: + """Skips elements for the specified duration from the start of + the observable source sequence. + + Args: + >>> res = skip_with_time(5.0) + + Specifying a zero value for duration doesn't guarantee no + elements will be dropped from the start of the source sequence. + This is a side-effect of the asynchrony introduced by the + scheduler, where the action that causes callbacks from the + source sequence to be forwarded may not execute immediately, + despite the zero due time. + + Errors produced by the source sequence are always forwarded to + the result sequence, even if the error occurs before the + duration. + + Args: + duration: Duration for skipping elements from the start of + the sequence. + + Returns: + An observable sequence with the elements skipped during the + specified duration from the start of the source sequence. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler_: Optional[abc.SchedulerBase] = None, + ): + _scheduler = scheduler or scheduler_ or TimeoutScheduler.singleton() + open = [False] + + def action(scheduler: abc.SchedulerBase, state: Any) -> None: + open[0] = True + + t = _scheduler.schedule_relative(duration, action) + + def on_next(x: _T): + if open[0]: + observer.on_next(x) + + d = source.subscribe( + on_next, observer.on_error, observer.on_completed, scheduler=scheduler_ + ) + return CompositeDisposable(t, d) + + return Observable(subscribe) + + return skip_with_time + + +__all__ = ["skip_with_time_"] diff --git a/frogpilot/third_party/reactivex/operators/_slice.py b/frogpilot/third_party/reactivex/operators/_slice.py new file mode 100644 index 000000000..f75a78cb5 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_slice.py @@ -0,0 +1,75 @@ +from sys import maxsize +from typing import Any, Callable, List, Optional, TypeVar + +from reactivex import Observable +from reactivex import operators as ops + +_T = TypeVar("_T") + + +# pylint: disable=redefined-builtin +def slice_( + start: Optional[int] = None, stop: Optional[int] = None, step: Optional[int] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + _start: int = 0 if start is None else start + _stop: int = maxsize if stop is None else stop + _step: int = 1 if step is None else step + + pipeline: List[Callable[[Observable[Any]], Observable[Any]]] = [] + + def slice(source: Observable[_T]) -> Observable[_T]: + """The partially applied slice operator. + + Slices the given observable. It is basically a wrapper around the operators + :func:`skip `, + :func:`skip_last `, + :func:`take `, + :func:`take_last ` and + :func:`filter `. + + The following diagram helps you remember how slices works with streams. + + Positive numbers are relative to the start of the events, while negative + numbers are relative to the end (close) of the stream. + + .. code:: + + r---e---a---c---t---i---v---e---! + 0 1 2 3 4 5 6 7 8 + -8 -7 -6 -5 -4 -3 -2 -1 0 + + Examples: + >>> result = source.slice(1, 10) + >>> result = source.slice(1, -2) + >>> result = source.slice(1, -1, 2) + + Args: + source: Observable to slice + + Returns: + A sliced observable sequence. + """ + + if _stop >= 0: + pipeline.append(ops.take(_stop)) + + if _start > 0: + pipeline.append(ops.skip(_start)) + elif _start < 0: + pipeline.append(ops.take_last(-_start)) + + if _stop < 0: + pipeline.append(ops.skip_last(-_stop)) + + if _step > 1: + pipeline.append(ops.filter_indexed(lambda x, i: i % _step == 0)) + elif _step < 0: + # Reversing events is not supported + raise TypeError("Negative step not supported.") + + return source.pipe(*pipeline) + + return slice + + +__all__ = ["slice_"] diff --git a/frogpilot/third_party/reactivex/operators/_some.py b/frogpilot/third_party/reactivex/operators/_some.py new file mode 100644 index 000000000..a687e40a8 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_some.py @@ -0,0 +1,59 @@ +from typing import Callable, Optional, TypeVar + +from reactivex import Observable, abc +from reactivex import operators as ops +from reactivex.typing import Predicate + +_T = TypeVar("_T") + + +def some_( + predicate: Optional[Predicate[_T]] = None, +) -> Callable[[Observable[_T]], Observable[bool]]: + def some(source: Observable[_T]) -> Observable[bool]: + """Partially applied operator. + + Determines whether some element of an observable sequence satisfies a + condition if present, else if some items are in the sequence. + + Example: + >>> obs = some(source) + + Args: + predicate -- A function to test each element for a condition. + + Returns: + An observable sequence containing a single element + determining whether some elements in the source sequence + pass the test in the specified predicate if given, else if + some items are in the sequence. + """ + + def subscribe( + observer: abc.ObserverBase[bool], + scheduler: Optional[abc.SchedulerBase] = None, + ): + def on_next(_: _T): + observer.on_next(True) + observer.on_completed() + + def on_error(): + observer.on_next(False) + observer.on_completed() + + return source.subscribe( + on_next, observer.on_error, on_error, scheduler=scheduler + ) + + if predicate: + return source.pipe( + ops.filter(predicate), + some_(), + ) + + return Observable(subscribe) + + return some + + +__all__ = ["some_"] diff --git a/frogpilot/third_party/reactivex/operators/_startswith.py b/frogpilot/third_party/reactivex/operators/_startswith.py new file mode 100644 index 000000000..79c15a3b5 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_startswith.py @@ -0,0 +1,28 @@ +from typing import Callable, TypeVar + +import reactivex +from reactivex import Observable + +_T = TypeVar("_T") + + +def start_with_(*args: _T) -> Callable[[Observable[_T]], Observable[_T]]: + def start_with(source: Observable[_T]) -> Observable[_T]: + """Partially applied start_with operator. + + Prepends a sequence of values to an observable sequence. + + Example: + >>> start_with(source) + + Returns: + The source sequence prepended with the specified values. + """ + start = reactivex.from_iterable(args) + sequence = [start, source] + return reactivex.concat(*sequence) + + return start_with + + +__all__ = ["start_with_"] diff --git a/frogpilot/third_party/reactivex/operators/_subscribeon.py b/frogpilot/third_party/reactivex/operators/_subscribeon.py new file mode 100644 index 000000000..f1191007f --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_subscribeon.py @@ -0,0 +1,57 @@ +from typing import Any, Callable, Optional, TypeVar + +from reactivex import Observable, abc +from reactivex.disposable import ( + ScheduledDisposable, + SerialDisposable, + SingleAssignmentDisposable, +) + +_T = TypeVar("_T") + + +def subscribe_on_( + scheduler: abc.SchedulerBase, +) -> Callable[[Observable[_T]], Observable[_T]]: + def subscribe_on(source: Observable[_T]) -> Observable[_T]: + """Subscribe on the specified scheduler. + + Wrap the source sequence in order to run its subscription and + unsubscription logic on the specified scheduler. This operation + is not commonly used; see the remarks section for more + information on the distinction between subscribe_on and + observe_on. + + This only performs the side-effects of subscription and + unsubscription on the specified scheduler. In order to invoke + observer callbacks on a scheduler, use observe_on. + + Args: + source: The source observable.. + + Returns: + The source sequence whose subscriptions and + un-subscriptions happen on the specified scheduler. + """ + + def subscribe( + observer: abc.ObserverBase[_T], _: Optional[abc.SchedulerBase] = None + ): + m = SingleAssignmentDisposable() + d = SerialDisposable() + d.disposable = m + + def action(scheduler: abc.SchedulerBase, state: Optional[Any] = None): + d.disposable = ScheduledDisposable( + scheduler, source.subscribe(observer) + ) + + m.disposable = scheduler.schedule(action) + return d + + return Observable(subscribe) + + return subscribe_on + + +__all__ = ["subscribe_on_"] diff --git a/frogpilot/third_party/reactivex/operators/_sum.py b/frogpilot/third_party/reactivex/operators/_sum.py new file mode 100644 index 000000000..ee6e0774c --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_sum.py @@ -0,0 +1,20 @@ +from typing import Any, Callable, Optional + +from reactivex import Observable, compose +from reactivex import operators as ops +from reactivex.typing import Mapper + + +def sum_( + key_mapper: Optional[Mapper[Any, float]] = None +) -> Callable[[Observable[Any]], Observable[float]]: + if key_mapper: + return compose(ops.map(key_mapper), ops.sum()) + + def accumulator(prev: float, cur: float) -> float: + return prev + cur + + return ops.reduce(seed=0, accumulator=accumulator) + + +__all__ = ["sum_"] diff --git a/frogpilot/third_party/reactivex/operators/_switchlatest.py b/frogpilot/third_party/reactivex/operators/_switchlatest.py new file mode 100644 index 000000000..2d54a8a31 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_switchlatest.py @@ -0,0 +1,90 @@ +from asyncio import Future +from typing import Any, Callable, Optional, TypeVar, Union + +from reactivex import Observable, abc, from_future +from reactivex.disposable import ( + CompositeDisposable, + SerialDisposable, + SingleAssignmentDisposable, +) + +_T = TypeVar("_T") + + +def switch_latest_() -> Callable[ + [Observable[Union[Observable[_T], "Future[_T]"]]], Observable[_T] +]: + def switch_latest( + source: Observable[Union[Observable[_T], "Future[_T]"]] + ) -> Observable[_T]: + """Partially applied switch_latest operator. + + Transforms an observable sequence of observable sequences into + an observable sequence producing values only from the most + recent observable sequence. + + Returns: + An observable sequence that at any point in time produces + the elements of the most recent inner observable sequence + that has been received. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + inner_subscription = SerialDisposable() + has_latest = [False] + is_stopped = [False] + latest = [0] + + def on_next(inner_source: Union[Observable[_T], "Future[_T]"]) -> None: + nonlocal source + + d = SingleAssignmentDisposable() + with source.lock: + latest[0] += 1 + _id = latest[0] + has_latest[0] = True + inner_subscription.disposable = d + + # Check if Future or Observable + if isinstance(inner_source, Future): + obs = from_future(inner_source) + else: + obs = inner_source + + def on_next(x: Any) -> None: + if latest[0] == _id: + observer.on_next(x) + + def on_error(e: Exception) -> None: + if latest[0] == _id: + observer.on_error(e) + + def on_completed() -> None: + if latest[0] == _id: + has_latest[0] = False + if is_stopped[0]: + observer.on_completed() + + d.disposable = obs.subscribe( + on_next, on_error, on_completed, scheduler=scheduler + ) + + def on_completed() -> None: + is_stopped[0] = True + if not has_latest[0]: + observer.on_completed() + + subscription = source.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + return CompositeDisposable(subscription, inner_subscription) + + return Observable(subscribe) + + return switch_latest + + +__all__ = ["switch_latest_"] diff --git a/frogpilot/third_party/reactivex/operators/_take.py b/frogpilot/third_party/reactivex/operators/_take.py new file mode 100644 index 000000000..744d74927 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_take.py @@ -0,0 +1,53 @@ +from typing import Callable, Optional, TypeVar + +from reactivex import Observable, abc, empty +from reactivex.internal import ArgumentOutOfRangeException + +_T = TypeVar("_T") + + +def take_(count: int) -> Callable[[Observable[_T]], Observable[_T]]: + if count < 0: + raise ArgumentOutOfRangeException() + + def take(source: Observable[_T]) -> Observable[_T]: + """Returns a specified number of contiguous elements from the start of + an observable sequence. + + >>> take(source) + + Keyword arguments: + count -- The number of elements to return. + + Returns an observable sequence that contains the specified number of + elements from the start of the input sequence. + """ + + if not count: + return empty() + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ): + remaining = count + + def on_next(value: _T) -> None: + nonlocal remaining + + if remaining > 0: + remaining -= 1 + observer.on_next(value) + if not remaining: + observer.on_completed() + + return source.subscribe( + on_next, observer.on_error, observer.on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return take + + +__all__ = ["take_"] diff --git a/frogpilot/third_party/reactivex/operators/_takelast.py b/frogpilot/third_party/reactivex/operators/_takelast.py new file mode 100644 index 000000000..fac22f563 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_takelast.py @@ -0,0 +1,55 @@ +from typing import Callable, List, Optional, TypeVar + +from reactivex import Observable, abc + +_T = TypeVar("_T") + + +def take_last_(count: int) -> Callable[[Observable[_T]], Observable[_T]]: + def take_last(source: Observable[_T]) -> Observable[_T]: + """Returns a specified number of contiguous elements from the end of an + observable sequence. + + Example: + >>> res = take_last(source) + + This operator accumulates a buffer with a length enough to store + elements count elements. Upon completion of the source sequence, this + buffer is drained on the result sequence. This causes the elements to be + delayed. + + Args: + source: Number of elements to take from the end of the source + sequence. + + Returns: + An observable sequence containing the specified number of elements + from the end of the source sequence. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + q: List[_T] = [] + + def on_next(x: _T) -> None: + q.append(x) + if len(q) > count: + q.pop(0) + + def on_completed(): + while q: + observer.on_next(q.pop(0)) + observer.on_completed() + + return source.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return take_last + + +__all__ = ["take_last_"] diff --git a/frogpilot/third_party/reactivex/operators/_takelastbuffer.py b/frogpilot/third_party/reactivex/operators/_takelastbuffer.py new file mode 100644 index 000000000..6a1d87281 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_takelastbuffer.py @@ -0,0 +1,55 @@ +from typing import Callable, List, Optional, TypeVar + +from reactivex import Observable, abc + +_T = TypeVar("_T") + + +def take_last_buffer_(count: int) -> Callable[[Observable[_T]], Observable[List[_T]]]: + def take_last_buffer(source: Observable[_T]) -> Observable[List[_T]]: + """Returns an array with the specified number of contiguous + elements from the end of an observable sequence. + + Example: + >>> res = take_last(source) + + This operator accumulates a buffer with a length enough to + store elements count elements. Upon completion of the source + sequence, this buffer is drained on the result sequence. This + causes the elements to be delayed. + + Args: + source: Source observable to take elements from. + + Returns: + An observable sequence containing a single list with the + specified number of elements from the end of the source + sequence. + """ + + def subscribe( + observer: abc.ObserverBase[List[_T]], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + q: List[_T] = [] + + def on_next(x: _T) -> None: + with source.lock: + q.append(x) + if len(q) > count: + q.pop(0) + + def on_completed() -> None: + observer.on_next(q) + observer.on_completed() + + return source.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return take_last_buffer + + +__all__ = ["take_last_buffer_"] diff --git a/frogpilot/third_party/reactivex/operators/_takelastwithtime.py b/frogpilot/third_party/reactivex/operators/_takelastwithtime.py new file mode 100644 index 000000000..438ecf945 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_takelastwithtime.py @@ -0,0 +1,68 @@ +from typing import Any, Callable, Dict, List, Optional, TypeVar + +from reactivex import Observable, abc, typing +from reactivex.scheduler import TimeoutScheduler + +_T = TypeVar("_T") + + +def take_last_with_time_( + duration: typing.RelativeTime, scheduler: Optional[abc.SchedulerBase] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + def take_last_with_time(source: Observable[_T]) -> Observable[_T]: + """Returns elements within the specified duration from the end + of the observable source sequence. + + Example: + >>> res = take_last_with_time(source) + + This operator accumulates a queue with a length enough to store + elements received during the initial duration window. As more + elements are received, elements older than the specified + duration are taken from the queue and produced on the result + sequence. This causes elements to be delayed with duration. + + Args: + duration: Duration for taking elements from the end of the + sequence. + + Returns: + An observable sequence with the elements taken during the + specified duration from the end of the source sequence. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler_: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + nonlocal duration + + _scheduler = scheduler or scheduler_ or TimeoutScheduler.singleton() + duration = _scheduler.to_timedelta(duration) + q: List[Dict[str, Any]] = [] + + def on_next(x: _T) -> None: + now = _scheduler.now + q.append({"interval": now, "value": x}) + while q and now - q[0]["interval"] >= duration: + q.pop(0) + + def on_completed(): + now = _scheduler.now + while q: + _next = q.pop(0) + if now - _next["interval"] <= duration: + observer.on_next(_next["value"]) + + observer.on_completed() + + return source.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler_ + ) + + return Observable(subscribe) + + return take_last_with_time + + +__all__ = ["take_last_with_time_"] diff --git a/frogpilot/third_party/reactivex/operators/_takeuntil.py b/frogpilot/third_party/reactivex/operators/_takeuntil.py new file mode 100644 index 000000000..5372e0597 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_takeuntil.py @@ -0,0 +1,51 @@ +from asyncio import Future +from typing import Callable, Optional, TypeVar, Union + +from reactivex import Observable, abc, from_future +from reactivex.disposable import CompositeDisposable +from reactivex.internal import noop + +_T = TypeVar("_T") + + +def take_until_( + other: Union[Observable[_T], "Future[_T]"] +) -> Callable[[Observable[_T]], Observable[_T]]: + if isinstance(other, Future): + obs: Observable[_T] = from_future(other) + else: + obs = other + + def take_until(source: Observable[_T]) -> Observable[_T]: + """Returns the values from the source observable sequence until + the other observable sequence produces a value. + + Args: + source: The source observable sequence. + + Returns: + An observable sequence containing the elements of the source + sequence up to the point the other sequence interrupted + further propagation. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + def on_completed(_: _T) -> None: + observer.on_completed() + + return CompositeDisposable( + source.subscribe(observer, scheduler=scheduler), + obs.subscribe( + on_completed, observer.on_error, noop, scheduler=scheduler + ), + ) + + return Observable(subscribe) + + return take_until + + +__all__ = ["take_until_"] diff --git a/frogpilot/third_party/reactivex/operators/_takeuntilwithtime.py b/frogpilot/third_party/reactivex/operators/_takeuntilwithtime.py new file mode 100644 index 000000000..8855c1df0 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_takeuntilwithtime.py @@ -0,0 +1,53 @@ +from datetime import datetime +from typing import Any, Callable, Optional, TypeVar + +from reactivex import Observable, abc, typing +from reactivex.disposable import CompositeDisposable +from reactivex.scheduler import TimeoutScheduler + +_T = TypeVar("_T") + + +def take_until_with_time_( + end_time: typing.AbsoluteOrRelativeTime, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + def take_until_with_time(source: Observable[_T]) -> Observable[_T]: + """Takes elements for the specified duration until the specified end + time, using the specified scheduler to run timers. + + Examples: + >>> res = take_until_with_time(source) + + Args: + source: Source observale to take elements from. + + Returns: + An observable sequence with the elements taken + until the specified end time. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler_: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + _scheduler = scheduler or scheduler_ or TimeoutScheduler.singleton() + + def action(scheduler: abc.SchedulerBase, state: Any = None): + observer.on_completed() + + if isinstance(end_time, datetime): + task = _scheduler.schedule_absolute(end_time, action) + else: + task = _scheduler.schedule_relative(end_time, action) + + return CompositeDisposable( + task, source.subscribe(observer, scheduler=scheduler_) + ) + + return Observable(subscribe) + + return take_until_with_time + + +__all__ = ["take_until_with_time_"] diff --git a/frogpilot/third_party/reactivex/operators/_takewhile.py b/frogpilot/third_party/reactivex/operators/_takewhile.py new file mode 100644 index 000000000..1b395d032 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_takewhile.py @@ -0,0 +1,121 @@ +from typing import Any, Callable, Optional, TypeVar + +from reactivex import Observable, abc +from reactivex.typing import Predicate, PredicateIndexed + +_T = TypeVar("_T") + + +def take_while_( + predicate: Predicate[_T], inclusive: bool = False +) -> Callable[[Observable[_T]], Observable[_T]]: + def take_while(source: Observable[_T]) -> Observable[_T]: + """Returns elements from an observable sequence as long as a + specified condition is true. + + Example: + >>> take_while(source) + + Args: + source: The source observable to take from. + + Returns: + An observable sequence that contains the elements from the + input sequence that occur before the element at which the + test no longer passes. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + running = True + + def on_next(value: _T): + nonlocal running + + with source.lock: + if not running: + return + + try: + running = predicate(value) + except Exception as exn: + observer.on_error(exn) + return + + if running: + observer.on_next(value) + else: + if inclusive: + observer.on_next(value) + observer.on_completed() + + return source.subscribe( + on_next, observer.on_error, observer.on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return take_while + + +def take_while_indexed_( + predicate: PredicateIndexed[_T], inclusive: bool = False +) -> Callable[[Observable[_T]], Observable[_T]]: + def take_while_indexed(source: Observable[_T]) -> Observable[_T]: + """Returns elements from an observable sequence as long as a + specified condition is true. The element's index is used in the + logic of the predicate function. + + Example: + >>> take_while(source) + + Args: + source: Source observable to take from. + + Returns: + An observable sequence that contains the elements from the + input sequence that occur before the element at which the + test no longer passes. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + running = True + i = 0 + + def on_next(value: Any) -> None: + nonlocal running, i + + with source.lock: + if not running: + return + + try: + running = predicate(value, i) + except Exception as exn: + observer.on_error(exn) + return + else: + i += 1 + + if running: + observer.on_next(value) + else: + if inclusive: + observer.on_next(value) + observer.on_completed() + + return source.subscribe( + on_next, observer.on_error, observer.on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return take_while_indexed + + +__all__ = ["take_while_", "take_while_indexed_"] diff --git a/frogpilot/third_party/reactivex/operators/_takewithtime.py b/frogpilot/third_party/reactivex/operators/_takewithtime.py new file mode 100644 index 000000000..1473c3e65 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_takewithtime.py @@ -0,0 +1,53 @@ +from typing import Any, Callable, Optional, TypeVar + +from reactivex import Observable, abc, typing +from reactivex.disposable import CompositeDisposable +from reactivex.scheduler import TimeoutScheduler + +_T = TypeVar("_T") + + +def take_with_time_( + duration: typing.RelativeTime, scheduler: Optional[abc.SchedulerBase] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + def take_with_time(source: Observable[_T]) -> Observable[_T]: + """Takes elements for the specified duration from the start of + the observable source sequence. + + Example: + >>> res = take_with_time(source) + + This operator accumulates a queue with a length enough to store + elements received during the initial duration window. As more + elements are received, elements older than the specified + duration are taken from the queue and produced on the result + sequence. This causes elements to be delayed with duration. + + Args: + source: Source observable to take elements from. + + Returns: + An observable sequence with the elements taken during the + specified duration from the start of the source sequence. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler_: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + _scheduler = scheduler or scheduler_ or TimeoutScheduler.singleton() + + def action(scheduler: abc.SchedulerBase, state: Any = None): + observer.on_completed() + + disp = _scheduler.schedule_relative(duration, action) + return CompositeDisposable( + disp, source.subscribe(observer, scheduler=scheduler_) + ) + + return Observable(subscribe) + + return take_with_time + + +__all__ = ["take_with_time_"] diff --git a/frogpilot/third_party/reactivex/operators/_throttlefirst.py b/frogpilot/third_party/reactivex/operators/_throttlefirst.py new file mode 100644 index 000000000..58fec06ac --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_throttlefirst.py @@ -0,0 +1,57 @@ +from datetime import datetime +from typing import Callable, Optional, TypeVar + +from reactivex import Observable, abc, typing +from reactivex.scheduler import TimeoutScheduler + +_T = TypeVar("_T") + + +def throttle_first_( + window_duration: typing.RelativeTime, scheduler: Optional[abc.SchedulerBase] = None +) -> Callable[[Observable[_T]], Observable[_T]]: + def throttle_first(source: Observable[_T]) -> Observable[_T]: + """Returns an observable that emits only the first item emitted + by the source Observable during sequential time windows of a + specified duration. + + Args: + source: Source observable to throttle. + + Returns: + An Observable that performs the throttle operation. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler_: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + _scheduler = scheduler or scheduler_ or TimeoutScheduler.singleton() + + duration = _scheduler.to_timedelta(window_duration or 0.0) + if duration <= _scheduler.to_timedelta(0): + raise ValueError("window_duration cannot be less or equal zero.") + last_on_next: Optional[datetime] = None + + def on_next(x: _T) -> None: + nonlocal last_on_next + emit = False + now = _scheduler.now + + with source.lock: + if not last_on_next or now - last_on_next >= duration: + last_on_next = now + emit = True + if emit: + observer.on_next(x) + + return source.subscribe( + on_next, observer.on_error, observer.on_completed, scheduler=_scheduler + ) + + return Observable(subscribe) + + return throttle_first + + +__all__ = ["throttle_first_"] diff --git a/frogpilot/third_party/reactivex/operators/_timeinterval.py b/frogpilot/third_party/reactivex/operators/_timeinterval.py new file mode 100644 index 000000000..7f38f8135 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_timeinterval.py @@ -0,0 +1,53 @@ +from dataclasses import dataclass +from datetime import timedelta +from typing import Callable, Generic, Optional, TypeVar + +from reactivex import Observable, abc +from reactivex import operators as ops +from reactivex.scheduler import TimeoutScheduler + +_T = TypeVar("_T") + + +@dataclass +class TimeInterval(Generic[_T]): + value: _T + interval: timedelta + + +def time_interval_( + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[TimeInterval[_T]]]: + def time_interval(source: Observable[_T]) -> Observable[TimeInterval[_T]]: + """Records the time interval between consecutive values in an + observable sequence. + + >>> res = time_interval(source) + + Return: + An observable sequence with time interval information on + values. + """ + + def subscribe( + observer: abc.ObserverBase[TimeInterval[_T]], + scheduler_: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + _scheduler = scheduler or scheduler_ or TimeoutScheduler.singleton() + last = _scheduler.now + + def mapper(value: _T) -> TimeInterval[_T]: + nonlocal last + + now = _scheduler.now + span = now - last + last = now + return TimeInterval(value=value, interval=span) + + return source.pipe(ops.map(mapper)).subscribe( + observer, scheduler=_scheduler + ) + + return Observable(subscribe) + + return time_interval diff --git a/frogpilot/third_party/reactivex/operators/_timeout.py b/frogpilot/third_party/reactivex/operators/_timeout.py new file mode 100644 index 000000000..2e2d6e196 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_timeout.py @@ -0,0 +1,101 @@ +from asyncio import Future +from datetime import datetime +from typing import Any, Callable, Optional, TypeVar, Union + +from reactivex import Observable, abc, from_future, throw, typing +from reactivex.disposable import ( + CompositeDisposable, + SerialDisposable, + SingleAssignmentDisposable, +) +from reactivex.scheduler import TimeoutScheduler + +_T = TypeVar("_T") + + +def timeout_( + duetime: typing.AbsoluteOrRelativeTime, + other: Optional[Union[Observable[_T], "Future[_T]"]] = None, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + + other = other or throw(Exception("Timeout")) + if isinstance(other, Future): + obs = from_future(other) + else: + obs = other + + def timeout(source: Observable[_T]) -> Observable[_T]: + """Returns the source observable sequence or the other observable + sequence if duetime elapses. + + Examples: + >>> res = timeout(source) + + Args: + source: Source observable to timeout + + Returns: + An obserable sequence switching to the other sequence in + case of a timeout. + """ + + def subscribe( + observer: abc.ObserverBase[_T], + scheduler_: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + _scheduler = scheduler or scheduler_ or TimeoutScheduler.singleton() + + switched = [False] + _id = [0] + + original = SingleAssignmentDisposable() + subscription = SerialDisposable() + timer = SerialDisposable() + subscription.disposable = original + + def create_timer() -> None: + my_id = _id[0] + + def action(scheduler: abc.SchedulerBase, state: Any = None): + switched[0] = _id[0] == my_id + timer_wins = switched[0] + if timer_wins: + subscription.disposable = obs.subscribe( + observer, scheduler=scheduler + ) + + if isinstance(duetime, datetime): + timer.disposable = _scheduler.schedule_absolute(duetime, action) + else: + timer.disposable = _scheduler.schedule_relative(duetime, action) + + create_timer() + + def on_next(value: _T) -> None: + send_wins = not switched[0] + if send_wins: + _id[0] += 1 + observer.on_next(value) + create_timer() + + def on_error(error: Exception) -> None: + on_error_wins = not switched[0] + if on_error_wins: + _id[0] += 1 + observer.on_error(error) + + def on_completed() -> None: + on_completed_wins = not switched[0] + if on_completed_wins: + _id[0] += 1 + observer.on_completed() + + original.disposable = source.subscribe( + on_next, on_error, on_completed, scheduler=scheduler_ + ) + return CompositeDisposable(subscription, timer) + + return Observable(subscribe) + + return timeout diff --git a/frogpilot/third_party/reactivex/operators/_timeoutwithmapper.py b/frogpilot/third_party/reactivex/operators/_timeoutwithmapper.py new file mode 100644 index 000000000..23b7a40ed --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_timeoutwithmapper.py @@ -0,0 +1,134 @@ +from typing import Any, Callable, Optional, TypeVar + +import reactivex +from reactivex import Observable, abc +from reactivex.disposable import ( + CompositeDisposable, + SerialDisposable, + SingleAssignmentDisposable, +) + +_T = TypeVar("_T") + + +def timeout_with_mapper_( + first_timeout: Optional[Observable[_T]] = None, + timeout_duration_mapper: Optional[Callable[[Any], Observable[Any]]] = None, + other: Optional[Observable[_T]] = None, +) -> Callable[[Observable[_T]], Observable[_T]]: + """Returns the source observable sequence, switching to the other + observable sequence if a timeout is signaled. + + res = timeout_with_mapper(reactivex.timer(500)) + res = timeout_with_mapper(reactivex.timer(500), lambda x: reactivex.timer(200)) + res = timeout_with_mapper( + reactivex.timer(500), + lambda x: reactivex.timer(200)), + reactivex.return_value(42) + ) + + Args: + first_timeout -- [Optional] Observable sequence that represents the + timeout for the first element. If not provided, this defaults to + reactivex.never(). + timeout_duration_mapper -- [Optional] Selector to retrieve an + observable sequence that represents the timeout between the + current element and the next element. + other -- [Optional] Sequence to return in case of a timeout. If not + provided, this is set to reactivex.throw(). + + Returns: + The source sequence switching to the other sequence in case + of a timeout. + """ + + first_timeout_ = first_timeout or reactivex.never() + other_ = other or reactivex.throw(Exception("Timeout")) + + def timeout_with_mapper(source: Observable[_T]) -> Observable[_T]: + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + subscription = SerialDisposable() + timer = SerialDisposable() + original = SingleAssignmentDisposable() + + subscription.disposable = original + + switched = False + _id = [0] + + def set_timer(timeout: Observable[Any]) -> None: + my_id = _id[0] + + def timer_wins(): + return _id[0] == my_id + + d = SingleAssignmentDisposable() + timer.disposable = d + + def on_next(x: Any) -> None: + if timer_wins(): + subscription.disposable = other_.subscribe( + observer, scheduler=scheduler + ) + + d.dispose() + + def on_error(e: Exception) -> None: + if timer_wins(): + observer.on_error(e) + + def on_completed() -> None: + if timer_wins(): + subscription.disposable = other_.subscribe(observer) + + d.disposable = timeout.subscribe( + on_next, on_error, on_completed, scheduler=scheduler + ) + + set_timer(first_timeout_) + + def observer_wins(): + res = not switched + if res: + _id[0] += 1 + + return res + + def on_next(x: _T) -> None: + if observer_wins(): + observer.on_next(x) + timeout = None + try: + timeout = ( + timeout_duration_mapper(x) + if timeout_duration_mapper + else reactivex.never() + ) + except Exception as e: + observer.on_error(e) + return + + set_timer(timeout) + + def on_error(error: Exception) -> None: + if observer_wins(): + observer.on_error(error) + + def on_completed() -> None: + if observer_wins(): + observer.on_completed() + + original.disposable = source.subscribe( + on_next, on_error, on_completed, scheduler=scheduler + ) + return CompositeDisposable(subscription, timer) + + return Observable(subscribe) + + return timeout_with_mapper + + +__all__ = ["timeout_with_mapper_"] diff --git a/frogpilot/third_party/reactivex/operators/_timestamp.py b/frogpilot/third_party/reactivex/operators/_timestamp.py new file mode 100644 index 000000000..1d51b204f --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_timestamp.py @@ -0,0 +1,49 @@ +from dataclasses import dataclass +from datetime import datetime +from typing import Any, Callable, Generic, Optional, TypeVar + +from reactivex import Observable, abc, defer, operators +from reactivex.scheduler import TimeoutScheduler + +_T = TypeVar("_T") + + +@dataclass +class Timestamp(Generic[_T]): + value: _T + timestamp: datetime + + +def timestamp_( + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[Timestamp[_T]]]: + def timestamp(source: Observable[Any]) -> Observable[Timestamp[_T]]: + """Records the timestamp for each value in an observable sequence. + + Examples: + >>> timestamp(source) + + Produces objects with attributes `value` and `timestamp`, where + value is the original value. + + Args: + source: Observable source to timestamp. + + Returns: + An observable sequence with timestamp information on values. + """ + + def factory(scheduler_: Optional[abc.SchedulerBase] = None): + _scheduler = scheduler or scheduler_ or TimeoutScheduler.singleton() + + def mapper(value: _T) -> Timestamp[_T]: + return Timestamp(value=value, timestamp=_scheduler.now) + + return source.pipe(operators.map(mapper)) + + return defer(factory) + + return timestamp + + +__all__ = ["timestamp_"] diff --git a/frogpilot/third_party/reactivex/operators/_todict.py b/frogpilot/third_party/reactivex/operators/_todict.py new file mode 100644 index 000000000..749719789 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_todict.py @@ -0,0 +1,64 @@ +from typing import Callable, Dict, Optional, TypeVar, cast + +from reactivex import Observable, abc +from reactivex.typing import Mapper + +_T = TypeVar("_T") +_TKey = TypeVar("_TKey") +_TValue = TypeVar("_TValue") + + +def to_dict_( + key_mapper: Mapper[_T, _TKey], element_mapper: Optional[Mapper[_T, _TValue]] = None +) -> Callable[[Observable[_T]], Observable[Dict[_TKey, _TValue]]]: + def to_dict(source: Observable[_T]) -> Observable[Dict[_TKey, _TValue]]: + """Converts the observable sequence to a Map if it exists. + + Args: + source: Source observable to convert. + + Returns: + An observable sequence with a single value of a dictionary + containing the values from the observable sequence. + """ + + def subscribe( + observer: abc.ObserverBase[Dict[_TKey, _TValue]], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + m: Dict[_TKey, _TValue] = dict() + + def on_next(x: _T) -> None: + try: + key = key_mapper(x) + except Exception as ex: # pylint: disable=broad-except + observer.on_error(ex) + return + + if element_mapper: + try: + element = element_mapper(x) + except Exception as ex: # pylint: disable=broad-except + observer.on_error(ex) + return + else: + element = cast(_TValue, x) + + m[key] = cast(_TValue, element) + + def on_completed() -> None: + nonlocal m + observer.on_next(m) + m = dict() + observer.on_completed() + + return source.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return to_dict + + +__all__ = ["to_dict_"] diff --git a/frogpilot/third_party/reactivex/operators/_tofuture.py b/frogpilot/third_party/reactivex/operators/_tofuture.py new file mode 100644 index 000000000..8369aba54 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_tofuture.py @@ -0,0 +1,67 @@ +import asyncio +from asyncio import Future +from typing import Callable, Optional, TypeVar, cast + +from reactivex import Observable, abc +from reactivex.internal.exceptions import SequenceContainsNoElementsError + +_T = TypeVar("_T") + + +def to_future_( + future_ctor: Optional[Callable[[], "Future[_T]"]] = None, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], "Future[_T]"]: + future_ctor_: Callable[[], "Future[_T]"] = ( + future_ctor or asyncio.get_event_loop().create_future + ) + future: "Future[_T]" = future_ctor_() + + def to_future(source: Observable[_T]) -> "Future[_T]": + """Converts an existing observable sequence to a Future. + + If the observable emits a single item, then this item is set as the + result of the future. If the observable emits a sequence of items, then + the last emitted item is set as the result of the future. + + Example: + future = reactivex.return_value(42).pipe(ops.to_future(asyncio.Future)) + + Args: + future_ctor: [Optional] The constructor of the future. + + Returns: + A future with the last value from the observable sequence. + """ + + has_value = False + last_value = cast(_T, None) + + def on_next(value: _T): + nonlocal last_value + nonlocal has_value + last_value = value + has_value = True + + def on_error(err: Exception): + if not future.cancelled(): + future.set_exception(err) + + def on_completed(): + nonlocal last_value + if not future.cancelled(): + if has_value: + future.set_result(last_value) + else: + future.set_exception(SequenceContainsNoElementsError()) + last_value = None + + dis = source.subscribe(on_next, on_error, on_completed, scheduler=scheduler) + future.add_done_callback(lambda _: dis.dispose()) + + return future + + return to_future + + +__all__ = ["to_future_"] diff --git a/frogpilot/third_party/reactivex/operators/_toiterable.py b/frogpilot/third_party/reactivex/operators/_toiterable.py new file mode 100644 index 000000000..1c7399b47 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_toiterable.py @@ -0,0 +1,44 @@ +from typing import Callable, List, Optional, TypeVar + +from reactivex import Observable, abc + +_T = TypeVar("_T") + + +def to_iterable_() -> Callable[[Observable[_T]], Observable[List[_T]]]: + def to_iterable(source: Observable[_T]) -> Observable[List[_T]]: + """Creates an iterable from an observable sequence. + + Returns: + An observable sequence containing a single element with an + iterable containing all the elements of the source + sequence. + """ + + def subscribe( + observer: abc.ObserverBase[List[_T]], + scheduler: Optional[abc.SchedulerBase] = None, + ): + nonlocal source + + queue: List[_T] = [] + + def on_next(item: _T): + queue.append(item) + + def on_completed(): + nonlocal queue + observer.on_next(queue) + queue = [] + observer.on_completed() + + return source.subscribe( + on_next, observer.on_error, on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return to_iterable + + +__all__ = ["to_iterable_"] diff --git a/frogpilot/third_party/reactivex/operators/_tomarbles.py b/frogpilot/third_party/reactivex/operators/_tomarbles.py new file mode 100644 index 000000000..951fcedd0 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_tomarbles.py @@ -0,0 +1,78 @@ +from typing import Any, List, Optional + +from reactivex import Observable, abc +from reactivex.scheduler import NewThreadScheduler +from reactivex.typing import RelativeTime + +new_thread_scheduler = NewThreadScheduler() + + +def to_marbles( + timespan: RelativeTime = 0.1, scheduler: Optional[abc.SchedulerBase] = None +): + def to_marbles(source: Observable[Any]) -> Observable[str]: + """Convert an observable sequence into a marble diagram string. + + Args: + timespan: [Optional] duration of each character in second. + If not specified, defaults to 0.1s. + scheduler: [Optional] The scheduler used to run the the input + sequence on. + + Returns: + Observable stream. + """ + + def subscribe( + observer: abc.ObserverBase[str], + scheduler: Optional[abc.SchedulerBase] = None, + ): + scheduler = scheduler or new_thread_scheduler + + result: List[str] = [] + last = scheduler.now + + def add_timespan(): + nonlocal last + + now = scheduler.now + diff = now - last + last = now + secs = scheduler.to_seconds(diff) + timespan_ = scheduler.to_seconds(timespan) + dashes = "-" * int((secs + timespan_ / 2.0) * (1.0 / timespan_)) + result.append(dashes) + + def on_next(value: Any) -> None: + add_timespan() + result.append(stringify(value)) + + def on_error(exception: Exception) -> None: + add_timespan() + result.append(stringify(exception)) + observer.on_next("".join(n for n in result)) + observer.on_completed() + + def on_completed(): + add_timespan() + result.append("|") + observer.on_next("".join(n for n in result)) + observer.on_completed() + + return source.subscribe(on_next, on_error, on_completed) + + return Observable(subscribe) + + return to_marbles + + +def stringify(value: Any) -> str: + """Utility for stringifying an event.""" + string = str(value) + if len(string) > 1: + string = "(%s)" % string + + return string + + +__all__ = ["stringify"] diff --git a/frogpilot/third_party/reactivex/operators/_toset.py b/frogpilot/third_party/reactivex/operators/_toset.py new file mode 100644 index 000000000..2c522e424 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_toset.py @@ -0,0 +1,37 @@ +from typing import Callable, Optional, Set, TypeVar + +from reactivex import Observable, abc + +_T = TypeVar("_T") + + +def to_set_() -> Callable[[Observable[_T]], Observable[Set[_T]]]: + """Converts the observable sequence to a set. + + Returns an observable sequence with a single value of a set + containing the values from the observable sequence. + """ + + def to_set(source: Observable[_T]) -> Observable[Set[_T]]: + def subscribe( + observer: abc.ObserverBase[Set[_T]], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + s: Set[_T] = set() + + def on_completed() -> None: + nonlocal s + observer.on_next(s) + s = set() + observer.on_completed() + + return source.subscribe( + s.add, observer.on_error, on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return to_set + + +__all__ = ["to_set_"] diff --git a/frogpilot/third_party/reactivex/operators/_whiledo.py b/frogpilot/third_party/reactivex/operators/_whiledo.py new file mode 100644 index 000000000..61e6d8a61 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_whiledo.py @@ -0,0 +1,38 @@ +import itertools +from asyncio import Future +from typing import Callable, TypeVar, Union + +import reactivex +from reactivex import Observable +from reactivex.internal.utils import infinite +from reactivex.typing import Predicate + +_T = TypeVar("_T") + + +def while_do_( + condition: Predicate[Observable[_T]], +) -> Callable[[Observable[_T]], Observable[_T]]: + def while_do(source: Union[Observable[_T], "Future[_T]"]) -> Observable[_T]: + """Repeats source as long as condition holds emulating a while + loop. + + Args: + source: The observable sequence that will be run if the + condition function returns true. + + Returns: + An observable sequence which is repeated as long as the + condition holds. + """ + if isinstance(source, Future): + obs = reactivex.from_future(source) + else: + obs = source + it = itertools.takewhile(condition, (obs for _ in infinite())) + return reactivex.concat_with_iterable(it) + + return while_do + + +__all__ = ["while_do_"] diff --git a/frogpilot/third_party/reactivex/operators/_window.py b/frogpilot/third_party/reactivex/operators/_window.py new file mode 100644 index 000000000..d5aea5999 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_window.py @@ -0,0 +1,177 @@ +import logging +from typing import Any, Callable, Optional, Tuple, TypeVar + +from reactivex import Observable, abc, empty +from reactivex import operators as ops +from reactivex.disposable import ( + CompositeDisposable, + RefCountDisposable, + SerialDisposable, + SingleAssignmentDisposable, +) +from reactivex.internal import add_ref, noop +from reactivex.subject import Subject + +log = logging.getLogger("Rx") + +_T = TypeVar("_T") + + +def window_toggle_( + openings: Observable[Any], closing_mapper: Callable[[Any], Observable[Any]] +) -> Callable[[Observable[_T]], Observable[Observable[_T]]]: + """Projects each element of an observable sequence into zero or + more windows. + + Args: + source: Source observable to project into windows. + + Returns: + An observable sequence of windows. + """ + + def window_toggle(source: Observable[_T]) -> Observable[Observable[_T]]: + def mapper(args: Tuple[Any, Observable[_T]]): + _, window = args + return window + + return openings.pipe( + ops.group_join( + source, + closing_mapper, + lambda _: empty(), + ), + ops.map(mapper), + ) + + return window_toggle + + +def window_( + boundaries: Observable[Any], +) -> Callable[[Observable[_T]], Observable[Observable[_T]]]: + """Projects each element of an observable sequence into zero or + more windows. + + Args: + source: Source observable to project into windows. + + Returns: + An observable sequence of windows. + """ + + def window(source: Observable[_T]) -> Observable[Observable[_T]]: + def subscribe( + observer: abc.ObserverBase[Observable[_T]], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + window_subject: Subject[_T] = Subject() + d = CompositeDisposable() + r = RefCountDisposable(d) + + observer.on_next(add_ref(window_subject, r)) + + def on_next_window(x: _T) -> None: + window_subject.on_next(x) + + def on_error(err: Exception) -> None: + window_subject.on_error(err) + observer.on_error(err) + + def on_completed() -> None: + window_subject.on_completed() + observer.on_completed() + + d.add( + source.subscribe( + on_next_window, on_error, on_completed, scheduler=scheduler + ) + ) + + def on_next_observer(w: Observable[_T]): + nonlocal window_subject + window_subject.on_completed() + window_subject = Subject() + observer.on_next(add_ref(window_subject, r)) + + d.add( + boundaries.subscribe( + on_next_observer, on_error, on_completed, scheduler=scheduler + ) + ) + return r + + return Observable(subscribe) + + return window + + +def window_when_( + closing_mapper: Callable[[], Observable[Any]] +) -> Callable[[Observable[_T]], Observable[Observable[_T]]]: + """Projects each element of an observable sequence into zero or + more windows. + + Args: + source: Source observable to project into windows. + + Returns: + An observable sequence of windows. + """ + + def window_when(source: Observable[_T]) -> Observable[Observable[_T]]: + def subscribe( + observer: abc.ObserverBase[Observable[_T]], + scheduler: Optional[abc.SchedulerBase] = None, + ): + m = SerialDisposable() + d = CompositeDisposable(m) + r = RefCountDisposable(d) + window: Subject[_T] = Subject() + + observer.on_next(add_ref(window, r)) + + def on_next(value: _T) -> None: + window.on_next(value) + + def on_error(error: Exception) -> None: + window.on_error(error) + observer.on_error(error) + + def on_completed() -> None: + window.on_completed() + observer.on_completed() + + d.add( + source.subscribe(on_next, on_error, on_completed, scheduler=scheduler) + ) + + def create_window_on_completed(): + try: + window_close = closing_mapper() + except Exception as exception: + observer.on_error(exception) + return + + def on_completed(): + nonlocal window + window.on_completed() + window = Subject() + observer.on_next(add_ref(window, r)) + create_window_on_completed() + + m1 = SingleAssignmentDisposable() + m.disposable = m1 + m1.disposable = window_close.pipe(ops.take(1)).subscribe( + noop, on_error, on_completed, scheduler=scheduler + ) + + create_window_on_completed() + return r + + return Observable(subscribe) + + return window_when + + +__all__ = ["window_", "window_when_", "window_toggle_"] diff --git a/frogpilot/third_party/reactivex/operators/_windowwithcount.py b/frogpilot/third_party/reactivex/operators/_windowwithcount.py new file mode 100644 index 000000000..6710a28bb --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_windowwithcount.py @@ -0,0 +1,92 @@ +import logging +from typing import Callable, List, Optional, TypeVar + +from reactivex import Observable, abc +from reactivex.disposable import RefCountDisposable, SingleAssignmentDisposable +from reactivex.internal import ArgumentOutOfRangeException, add_ref +from reactivex.subject import Subject + +log = logging.getLogger("Rx") + +_T = TypeVar("_T") + + +def window_with_count_( + count: int, skip: Optional[int] = None +) -> Callable[[Observable[_T]], Observable[Observable[_T]]]: + """Projects each element of an observable sequence into zero or more + windows which are produced based on element count information. + + Examples: + >>> window_with_count(10) + >>> window_with_count(10, 1) + + Args: + count: Length of each window. + skip: [Optional] Number of elements to skip between creation of + consecutive windows. If not specified, defaults to the + count. + + Returns: + An observable sequence of windows. + """ + + if count <= 0: + raise ArgumentOutOfRangeException() + + skip_ = skip if skip is not None else count + + if skip_ <= 0: + raise ArgumentOutOfRangeException() + + def window_with_count(source: Observable[_T]) -> Observable[Observable[_T]]: + def subscribe( + observer: abc.ObserverBase[Observable[_T]], + scheduler: Optional[abc.SchedulerBase] = None, + ): + m = SingleAssignmentDisposable() + refCountDisposable = RefCountDisposable(m) + n = [0] + q: List[Subject[_T]] = [] + + def create_window(): + s: Subject[_T] = Subject() + q.append(s) + observer.on_next(add_ref(s, refCountDisposable)) + + create_window() + + def on_next(x: _T) -> None: + for item in q: + item.on_next(x) + + c = n[0] - count + 1 + if c >= 0 and c % skip_ == 0: + s = q.pop(0) + s.on_completed() + + n[0] += 1 + if (n[0] % skip_) == 0: + create_window() + + def on_error(exception: Exception) -> None: + while q: + q.pop(0).on_error(exception) + observer.on_error(exception) + + def on_completed() -> None: + while q: + q.pop(0).on_completed() + observer.on_completed() + + m.disposable = source.subscribe( + on_next, on_error, on_completed, scheduler=scheduler + ) + return refCountDisposable + + return Observable(subscribe) + + return window_with_count + + +__all__ = ["window_with_count_"] diff --git a/frogpilot/third_party/reactivex/operators/_windowwithtime.py b/frogpilot/third_party/reactivex/operators/_windowwithtime.py new file mode 100644 index 000000000..83038a069 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_windowwithtime.py @@ -0,0 +1,121 @@ +from datetime import timedelta +from typing import Any, Callable, List, Optional, TypeVar + +from reactivex import Observable, abc, typing +from reactivex.disposable import ( + CompositeDisposable, + RefCountDisposable, + SerialDisposable, + SingleAssignmentDisposable, +) +from reactivex.internal import DELTA_ZERO, add_ref, synchronized +from reactivex.scheduler import TimeoutScheduler +from reactivex.subject import Subject + +_T = TypeVar("_T") + + +def window_with_time_( + timespan: typing.RelativeTime, + timeshift: Optional[typing.RelativeTime] = None, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[Observable[_T]]]: + if timeshift is None: + timeshift = timespan + + if not isinstance(timespan, timedelta): + timespan = timedelta(seconds=timespan) + if not isinstance(timeshift, timedelta): + timeshift = timedelta(seconds=timeshift) + + def window_with_time(source: Observable[_T]) -> Observable[Observable[_T]]: + def subscribe( + observer: abc.ObserverBase[Observable[_T]], + scheduler_: Optional[abc.SchedulerBase] = None, + ): + _scheduler = scheduler or scheduler_ or TimeoutScheduler.singleton() + + timer_d = SerialDisposable() + next_shift = [timeshift] + next_span = [timespan] + total_time = [DELTA_ZERO] + queue: List[Subject[_T]] = [] + + group_disposable = CompositeDisposable(timer_d) + ref_count_disposable = RefCountDisposable(group_disposable) + + def create_timer(): + m = SingleAssignmentDisposable() + timer_d.disposable = m + is_span = False + is_shift = False + + if next_span[0] == next_shift[0]: + is_span = True + is_shift = True + elif next_span[0] < next_shift[0]: + is_span = True + else: + is_shift = True + + new_total_time = next_span[0] if is_span else next_shift[0] + + ts = new_total_time - total_time[0] + total_time[0] = new_total_time + if is_span: + next_span[0] += timeshift + + if is_shift: + next_shift[0] += timeshift + + @synchronized(source.lock) + def action(scheduler: abc.SchedulerBase, state: Any = None): + s: Optional[Subject[_T]] = None + + if is_shift: + s = Subject() + queue.append(s) + observer.on_next(add_ref(s, ref_count_disposable)) + + if is_span: + s = queue.pop(0) + s.on_completed() + + create_timer() + + m.disposable = _scheduler.schedule_relative(ts, action) + + queue.append(Subject()) + observer.on_next(add_ref(queue[0], ref_count_disposable)) + create_timer() + + def on_next(x: _T) -> None: + with source.lock: + for s in queue: + s.on_next(x) + + @synchronized(source.lock) + def on_error(e: Exception) -> None: + for s in queue: + s.on_error(e) + + observer.on_error(e) + + @synchronized(source.lock) + def on_completed() -> None: + for s in queue: + s.on_completed() + + observer.on_completed() + + group_disposable.add( + source.subscribe(on_next, on_error, on_completed, scheduler=scheduler_) + ) + return ref_count_disposable + + return Observable(subscribe) + + return window_with_time + + +__all__ = ["window_with_time_"] diff --git a/frogpilot/third_party/reactivex/operators/_windowwithtimeorcount.py b/frogpilot/third_party/reactivex/operators/_windowwithtimeorcount.py new file mode 100644 index 000000000..5dc9581c5 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_windowwithtimeorcount.py @@ -0,0 +1,96 @@ +from typing import Any, Callable, Optional, TypeVar + +from reactivex import Observable, abc, typing +from reactivex.disposable import ( + CompositeDisposable, + RefCountDisposable, + SerialDisposable, + SingleAssignmentDisposable, +) +from reactivex.internal import add_ref +from reactivex.scheduler import TimeoutScheduler +from reactivex.subject import Subject + +_T = TypeVar("_T") + + +def window_with_time_or_count_( + timespan: typing.RelativeTime, + count: int, + scheduler: Optional[abc.SchedulerBase] = None, +) -> Callable[[Observable[_T]], Observable[Observable[_T]]]: + def window_with_time_or_count(source: Observable[_T]) -> Observable[Observable[_T]]: + def subscribe( + observer: abc.ObserverBase[Observable[_T]], + scheduler_: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + _scheduler = scheduler or scheduler_ or TimeoutScheduler.singleton() + + n: int = 0 + s: Subject[_T] = Subject() + timer_d = SerialDisposable() + window_id = 0 + group_disposable = CompositeDisposable(timer_d) + ref_count_disposable = RefCountDisposable(group_disposable) + + def create_timer(_id: int): + nonlocal n, s, window_id + m = SingleAssignmentDisposable() + timer_d.disposable = m + + def action(scheduler: abc.SchedulerBase, state: Any = None): + nonlocal n, s, window_id + if _id != window_id: + return + + n = 0 + window_id += 1 + new_id = window_id + s.on_completed() + s = Subject() + observer.on_next(add_ref(s, ref_count_disposable)) + create_timer(new_id) + + m.disposable = _scheduler.schedule_relative(timespan, action) + + observer.on_next(add_ref(s, ref_count_disposable)) + create_timer(0) + + def on_next(x: _T) -> None: + nonlocal n, s, window_id + new_window = False + new_id = 0 + + s.on_next(x) + n += 1 + if n == count: + new_window = True + n = 0 + window_id += 1 + new_id = window_id + s.on_completed() + s = Subject() + observer.on_next(add_ref(s, ref_count_disposable)) + + if new_window: + create_timer(new_id) + + def on_error(e: Exception) -> None: + s.on_error(e) + observer.on_error(e) + + def on_completed() -> None: + s.on_completed() + observer.on_completed() + + group_disposable.add( + source.subscribe(on_next, on_error, on_completed, scheduler=scheduler_) + ) + return ref_count_disposable + + return Observable(subscribe) + + return window_with_time_or_count + + +__all__ = ["window_with_time_or_count_"] diff --git a/frogpilot/third_party/reactivex/operators/_withlatestfrom.py b/frogpilot/third_party/reactivex/operators/_withlatestfrom.py new file mode 100644 index 000000000..b0309efc1 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_withlatestfrom.py @@ -0,0 +1,32 @@ +from typing import Any, Callable + +import reactivex +from reactivex import Observable + + +def with_latest_from_( + *sources: Observable[Any], +) -> Callable[[Observable[Any]], Observable[Any]]: + """With latest from operator. + + Merges the specified observable sequences into one observable + sequence by creating a tuple only when the first + observable sequence produces an element. The observables can be + passed either as seperate arguments or as a list. + + Examples: + >>> op = with_latest_from(obs1) + >>> op = with_latest_from(obs1, obs2, obs3) + + Returns: + An observable sequence containing the result of combining + elements of the sources into a tuple. + """ + + def with_latest_from(source: Observable[Any]) -> Observable[Any]: + return reactivex.with_latest_from(source, *sources) + + return with_latest_from + + +__all__ = ["with_latest_from_"] diff --git a/frogpilot/third_party/reactivex/operators/_zip.py b/frogpilot/third_party/reactivex/operators/_zip.py new file mode 100644 index 000000000..f56a3d125 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/_zip.py @@ -0,0 +1,83 @@ +from typing import Any, Callable, Iterable, Optional, Tuple, TypeVar + +import reactivex +from reactivex import Observable, abc + +_T = TypeVar("_T") +_TOther = TypeVar("_TOther") + + +def zip_( + *args: Observable[Any], +) -> Callable[[Observable[Any]], Observable[Tuple[Any, ...]]]: + def _zip(source: Observable[Any]) -> Observable[Tuple[Any, ...]]: + """Merges the specified observable sequences into one observable + sequence by creating a tuple whenever all of the + observable sequences have produced an element at a corresponding + index. + + Example: + >>> res = zip(source) + + Args: + source: Source observable to zip. + + Returns: + An observable sequence containing the result of combining + elements of the sources as a tuple. + """ + return reactivex.zip(source, *args) + + return _zip + + +def zip_with_iterable_( + seq: Iterable[_TOther], +) -> Callable[[Observable[_T]], Observable[Tuple[_T, _TOther]]]: + def zip_with_iterable(source: Observable[_T]) -> Observable[Tuple[_T, _TOther]]: + """Merges the specified observable sequence and list into one + observable sequence by creating a tuple whenever all of + the observable sequences have produced an element at a + corresponding index. + + Example + >>> res = zip(source) + + Args: + source: Source observable to zip. + + Returns: + An observable sequence containing the result of combining + elements of the sources as a tuple. + """ + + first = source + second = iter(seq) + + def subscribe( + observer: abc.ObserverBase[Tuple[_T, _TOther]], + scheduler: Optional[abc.SchedulerBase] = None, + ): + index = 0 + + def on_next(left: _T) -> None: + nonlocal index + + try: + right = next(second) + except StopIteration: + observer.on_completed() + else: + result = (left, right) + observer.on_next(result) + + return first.subscribe( + on_next, observer.on_error, observer.on_completed, scheduler=scheduler + ) + + return Observable(subscribe) + + return zip_with_iterable + + +__all__ = ["zip_", "zip_with_iterable_"] diff --git a/frogpilot/third_party/reactivex/operators/connectable/__init__.py b/frogpilot/third_party/reactivex/operators/connectable/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/frogpilot/third_party/reactivex/operators/connectable/_refcount.py b/frogpilot/third_party/reactivex/operators/connectable/_refcount.py new file mode 100644 index 000000000..08224b354 --- /dev/null +++ b/frogpilot/third_party/reactivex/operators/connectable/_refcount.py @@ -0,0 +1,46 @@ +from typing import Callable, Optional, TypeVar + +from reactivex import ConnectableObservable, Observable, abc +from reactivex.disposable import Disposable + +_T = TypeVar("_T") + + +def ref_count_() -> Callable[[ConnectableObservable[_T]], Observable[_T]]: + """Returns an observable sequence that stays connected to the + source as long as there is at least one subscription to the + observable sequence. + """ + + connectable_subscription: Optional[abc.DisposableBase] = None + count = 0 + + def ref_count(source: ConnectableObservable[_T]) -> Observable[_T]: + def subscribe( + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + nonlocal connectable_subscription, count + + count += 1 + should_connect = count == 1 + subscription = source.subscribe(observer, scheduler=scheduler) + if should_connect: + connectable_subscription = source.connect(scheduler) + + def dispose() -> None: + nonlocal connectable_subscription, count + + subscription.dispose() + count -= 1 + if not count and connectable_subscription: + connectable_subscription.dispose() + + return Disposable(dispose) + + return Observable(subscribe) + + return ref_count + + +__all__ = ["ref_count_"] diff --git a/frogpilot/third_party/reactivex/pipe.py b/frogpilot/third_party/reactivex/pipe.py new file mode 100644 index 000000000..69b668d65 --- /dev/null +++ b/frogpilot/third_party/reactivex/pipe.py @@ -0,0 +1,217 @@ +from functools import reduce +from typing import Any, Callable, TypeVar, overload + +_A = TypeVar("_A") +_B = TypeVar("_B") +_C = TypeVar("_C") +_D = TypeVar("_D") +_E = TypeVar("_E") +_F = TypeVar("_F") +_G = TypeVar("_G") +_H = TypeVar("_H") +_T = TypeVar("_T") +_J = TypeVar("_J") + + +@overload +def compose(__op1: Callable[[_A], _B]) -> Callable[[_A], _B]: + ... + + +@overload +def compose(__op1: Callable[[_A], _B], __op2: Callable[[_B], _C]) -> Callable[[_A], _C]: + ... + + +@overload +def compose( + __op1: Callable[[_A], _B], + __op2: Callable[[_B], _C], + __op3: Callable[[_C], _D], +) -> Callable[[_A], _D]: + ... + + +@overload +def compose( + __op1: Callable[[_A], _B], + __op2: Callable[[_B], _C], + __op3: Callable[[_C], _D], + __op4: Callable[[_D], _E], +) -> Callable[[_A], _E]: + ... + + +@overload +def compose( + __op1: Callable[[_A], _B], + __op2: Callable[[_B], _C], + __op3: Callable[[_C], _D], + __op4: Callable[[_D], _E], + __op5: Callable[[_E], _F], +) -> Callable[[_A], _F]: + ... + + +@overload +def compose( + __op1: Callable[[_A], _B], + __op2: Callable[[_B], _C], + __op3: Callable[[_C], _D], + __op4: Callable[[_D], _E], + __op5: Callable[[_E], _F], + __op6: Callable[[_F], _G], +) -> Callable[[_A], _G]: + ... + + +def compose(*operators: Callable[[Any], Any]) -> Callable[[Any], Any]: + """Compose multiple operators left to right. + + Composes zero or more operators into a functional composition. The + operators are composed to left to right. A composition of zero + operators gives back the source. + + Examples: + >>> pipe()(source) == source + >>> pipe(f)(source) == f(source) + >>> pipe(f, g)(source) == g(f(source)) + >>> pipe(f, g, h)(source) == h(g(f(source))) + ... + + Returns: + The composed observable. + """ + + def _compose(source: Any) -> Any: + return reduce(lambda obs, op: op(obs), operators, source) + + return _compose + + +@overload +def pipe(__value: _A) -> _A: + ... + + +@overload +def pipe(__value: _A, __fn1: Callable[[_A], _B]) -> _B: + ... + + +@overload +def pipe( + __value: _A, + __fn1: Callable[[_A], _B], + __fn2: Callable[[_B], _C], +) -> _C: + ... + + +@overload +def pipe( + __value: _A, + __fn1: Callable[[_A], _B], + __fn2: Callable[[_B], _C], + __fn3: Callable[[_C], _D], +) -> _D: + ... + + +@overload +def pipe( + __value: _A, + __fn1: Callable[[_A], _B], + __fn2: Callable[[_B], _C], + __fn3: Callable[[_C], _D], + __fn4: Callable[[_D], _E], +) -> _E: + ... + + +@overload +def pipe( + __value: _A, + __fn1: Callable[[_A], _B], + __fn2: Callable[[_B], _C], + __fn3: Callable[[_C], _D], + __fn4: Callable[[_D], _E], + __fn5: Callable[[_E], _F], +) -> _F: + ... + + +@overload +def pipe( + __value: _A, + __fn1: Callable[[_A], _B], + __fn2: Callable[[_B], _C], + __fn3: Callable[[_C], _D], + __fn4: Callable[[_D], _E], + __fn5: Callable[[_E], _F], + __fn6: Callable[[_F], _G], +) -> _G: + ... + + +@overload +def pipe( + __value: _A, + __fn1: Callable[[_A], _B], + __fn2: Callable[[_B], _C], + __fn3: Callable[[_C], _D], + __fn4: Callable[[_D], _E], + __fn5: Callable[[_E], _F], + __fn6: Callable[[_F], _G], + __fn7: Callable[[_G], _H], +) -> _H: + ... + + +@overload +def pipe( + __value: _A, + __fn1: Callable[[_A], _B], + __fn2: Callable[[_B], _C], + __fn3: Callable[[_C], _D], + __fn4: Callable[[_D], _E], + __fn5: Callable[[_E], _F], + __fn6: Callable[[_F], _G], + __fn7: Callable[[_G], _H], + __fn8: Callable[[_H], _T], +) -> _T: + ... + + +@overload +def pipe( + __value: _A, + __fn1: Callable[[_A], _B], + __fn2: Callable[[_B], _C], + __fn3: Callable[[_C], _D], + __fn4: Callable[[_D], _E], + __fn5: Callable[[_E], _F], + __fn6: Callable[[_F], _G], + __fn7: Callable[[_G], _H], + __fn8: Callable[[_H], _T], + __fn9: Callable[[_T], _J], +) -> _J: + ... + + +def pipe(__value: Any, *fns: Callable[[Any], Any]) -> Any: + """Functional pipe (`|>`) + + Allows the use of function argument on the left side of the + function. + + Example: + >>> pipe(x, fn) == __fn(x) # Same as x |> fn + >>> pipe(x, fn, gn) == gn(fn(x)) # Same as x |> fn |> gn + ... + """ + + return compose(*fns)(__value) + + +__all__ = ["pipe", "compose"] diff --git a/frogpilot/third_party/reactivex/py.typed b/frogpilot/third_party/reactivex/py.typed new file mode 100644 index 000000000..e69de29bb diff --git a/frogpilot/third_party/reactivex/run.py b/frogpilot/third_party/reactivex/run.py new file mode 100644 index 000000000..6e932b2ec --- /dev/null +++ b/frogpilot/third_party/reactivex/run.py @@ -0,0 +1,69 @@ +import threading +from typing import Optional, TypeVar, cast + +from reactivex.internal.exceptions import SequenceContainsNoElementsError +from reactivex.scheduler import NewThreadScheduler + +from .observable import Observable + +scheduler = NewThreadScheduler() + +_T = TypeVar("_T") + + +def run(source: Observable[_T]) -> _T: + """Run source synchronously. + + Subscribes to the observable source. Then blocks and waits for the + observable source to either complete or error. Returns the + last value emitted, or throws exception if any error occured. + + Examples: + >>> result = run(source) + + Args: + source: Observable source to run. + + Raises: + SequenceContainsNoElementsError: if observable completes + (on_completed) without any values being emitted. + Exception: raises exception if any error (on_error) occured. + + Returns: + The last element emitted from the observable. + """ + exception: Optional[Exception] = None + latch = threading.Event() + has_result = False + result: _T = cast(_T, None) + done = False + + def on_next(value: _T) -> None: + nonlocal result, has_result + result = value + has_result = True + + def on_error(error: Exception) -> None: + nonlocal exception, done + + exception = error + done = True + latch.set() + + def on_completed() -> None: + nonlocal done + done = True + latch.set() + + source.subscribe(on_next, on_error, on_completed, scheduler=scheduler) + + while not done: + latch.wait() + + if exception: + raise cast(Exception, exception) + + if not has_result: + raise SequenceContainsNoElementsError + + return result diff --git a/frogpilot/third_party/reactivex/scheduler/__init__.py b/frogpilot/third_party/reactivex/scheduler/__init__.py new file mode 100644 index 000000000..1205e8299 --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/__init__.py @@ -0,0 +1,25 @@ +from .catchscheduler import CatchScheduler +from .currentthreadscheduler import CurrentThreadScheduler +from .eventloopscheduler import EventLoopScheduler +from .historicalscheduler import HistoricalScheduler +from .immediatescheduler import ImmediateScheduler +from .newthreadscheduler import NewThreadScheduler +from .scheduleditem import ScheduledItem +from .threadpoolscheduler import ThreadPoolScheduler +from .timeoutscheduler import TimeoutScheduler +from .trampolinescheduler import TrampolineScheduler +from .virtualtimescheduler import VirtualTimeScheduler + +__all__ = [ + "CatchScheduler", + "CurrentThreadScheduler", + "EventLoopScheduler", + "HistoricalScheduler", + "ImmediateScheduler", + "NewThreadScheduler", + "ScheduledItem", + "ThreadPoolScheduler", + "TimeoutScheduler", + "TrampolineScheduler", + "VirtualTimeScheduler", +] diff --git a/frogpilot/third_party/reactivex/scheduler/catchscheduler.py b/frogpilot/third_party/reactivex/scheduler/catchscheduler.py new file mode 100644 index 000000000..787ac2d1d --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/catchscheduler.py @@ -0,0 +1,177 @@ +from datetime import datetime +from typing import Callable, Optional, TypeVar, cast + +from reactivex import abc, typing +from reactivex.abc.scheduler import SchedulerBase +from reactivex.disposable import Disposable, SingleAssignmentDisposable + +from .periodicscheduler import PeriodicScheduler + +_TState = TypeVar("_TState") + + +class CatchScheduler(PeriodicScheduler): + def __init__( + self, scheduler: abc.SchedulerBase, handler: Callable[[Exception], bool] + ) -> None: + """Wraps a scheduler, passed as constructor argument, adding exception + handling for scheduled actions. The handler should return True to + indicate it handled the exception successfully. Falsy return values will + be taken to indicate that the exception should be escalated (raised by + this scheduler). + + Args: + scheduler: The scheduler to be wrapped. + handler: Callable to handle exceptions raised by wrapped scheduler. + """ + + super().__init__() + self._scheduler: abc.SchedulerBase = scheduler + self._handler: Callable[[Exception], bool] = handler + self._recursive_original: Optional[abc.SchedulerBase] = None + self._recursive_wrapper: Optional["CatchScheduler"] = None + + @property + def now(self) -> datetime: + """Represents a notion of time for this scheduler. Tasks being + scheduled on a scheduler will adhere to the time denoted by this + property. + + Returns: + The scheduler's current time, as a datetime instance. + """ + + return self._scheduler.now + + def schedule( + self, action: typing.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + action = self._wrap(action) + return self._scheduler.schedule(action, state=state) + + def schedule_relative( + self, + duetime: typing.RelativeTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed after duetime. + + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + action = self._wrap(action) + return self._scheduler.schedule_relative(duetime, action, state=state) + + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + action = self._wrap(action) + return self._scheduler.schedule_absolute(duetime, action, state=state) + + def schedule_periodic( + self, + period: typing.RelativeTime, + action: typing.ScheduledPeriodicAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules a periodic piece of work. + + Args: + period: Period in seconds or timedelta for running the + work periodically. + action: Action to be executed. + state: [Optional] Initial state passed to the action upon + the first iteration. + + Returns: + The disposable object used to cancel the scheduled + recurring action (best effort). + """ + + schedule_periodic = getattr(self._scheduler, "schedule_periodic") + if not callable(schedule_periodic): + raise NotImplementedError + + disp: SingleAssignmentDisposable = SingleAssignmentDisposable() + failed: bool = False + + def periodic(state: Optional[_TState] = None) -> Optional[_TState]: + nonlocal failed + if failed: + return None + try: + return action(state) + except Exception as ex: + failed = True + if not self._handler(ex): + raise + disp.dispose() + return None + + scheduler = cast(PeriodicScheduler, self._scheduler) + disp.disposable = scheduler.schedule_periodic(period, periodic, state=state) + return disp + + def _clone(self, scheduler: abc.SchedulerBase) -> "CatchScheduler": + return CatchScheduler(scheduler, self._handler) + + def _wrap( + self, action: typing.ScheduledAction[_TState] + ) -> typing.ScheduledAction[_TState]: + parent = self + + def wrapped_action( + self: abc.SchedulerBase, state: Optional[_TState] + ) -> Optional[abc.DisposableBase]: + try: + return action(parent._get_recursive_wrapper(self), state) + except Exception as ex: + if not parent._handler(ex): + raise + return Disposable() + + return wrapped_action + + def _get_recursive_wrapper(self, scheduler: SchedulerBase) -> "CatchScheduler": + if self._recursive_wrapper is None or self._recursive_original != scheduler: + self._recursive_original = scheduler + wrapper = self._clone(scheduler) + wrapper._recursive_original = scheduler + wrapper._recursive_wrapper = wrapper + self._recursive_wrapper = wrapper + + return self._recursive_wrapper diff --git a/frogpilot/third_party/reactivex/scheduler/currentthreadscheduler.py b/frogpilot/third_party/reactivex/scheduler/currentthreadscheduler.py new file mode 100644 index 000000000..6089a201d --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/currentthreadscheduler.py @@ -0,0 +1,81 @@ +import logging +from threading import Thread, current_thread, local +from typing import MutableMapping +from weakref import WeakKeyDictionary + +from .trampoline import Trampoline +from .trampolinescheduler import TrampolineScheduler + +log = logging.getLogger("Rx") + + +class CurrentThreadScheduler(TrampolineScheduler): + """Represents an object that schedules units of work on the current thread. + You should never schedule timeouts using the *CurrentThreadScheduler*, as + that will block the thread while waiting. + + Each instance manages a number of trampolines (and queues), one for each + thread that calls a *schedule* method. These trampolines are automatically + garbage-collected when threads disappear, because they're stored in a weak + key dictionary. + """ + + _global: MutableMapping[ + type, MutableMapping[Thread, "CurrentThreadScheduler"] + ] = WeakKeyDictionary() + + @classmethod + def singleton(cls) -> "CurrentThreadScheduler": + """ + Obtain a singleton instance for the current thread. Please note, if you + pass this instance to another thread, it will effectively behave as + if it were created by that other thread (separate trampoline and queue). + + Returns: + The singleton *CurrentThreadScheduler* instance. + """ + thread = current_thread() + class_map = CurrentThreadScheduler._global.get(cls) + if class_map is None: + class_map_: MutableMapping[ + Thread, "CurrentThreadScheduler" + ] = WeakKeyDictionary() + CurrentThreadScheduler._global[cls] = class_map_ + else: + class_map_ = class_map + try: + self = class_map_[thread] + except KeyError: + self = CurrentThreadSchedulerSingleton() + class_map_[thread] = self + return self + + # pylint: disable=super-init-not-called + def __init__(self) -> None: + self._tramps: MutableMapping[Thread, Trampoline] = WeakKeyDictionary() + + def get_trampoline(self) -> Trampoline: + thread = current_thread() + tramp = self._tramps.get(thread) + if tramp is None: + tramp = Trampoline() + self._tramps[thread] = tramp + return tramp + + +class _Local(local): + def __init__(self) -> None: + super().__init__() + self.tramp = Trampoline() + + +class CurrentThreadSchedulerSingleton(CurrentThreadScheduler): + + _local = _Local() + + # pylint: disable=super-init-not-called + def __init__(self) -> None: + pass + + def get_trampoline(self) -> Trampoline: + return CurrentThreadSchedulerSingleton._local.tramp diff --git a/frogpilot/third_party/reactivex/scheduler/eventloop/__init__.py b/frogpilot/third_party/reactivex/scheduler/eventloop/__init__.py new file mode 100644 index 000000000..6a11e13a3 --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/eventloop/__init__.py @@ -0,0 +1,15 @@ +from .asyncioscheduler import AsyncIOScheduler +from .asynciothreadsafescheduler import AsyncIOThreadSafeScheduler +from .eventletscheduler import EventletScheduler +from .geventscheduler import GEventScheduler +from .ioloopscheduler import IOLoopScheduler +from .twistedscheduler import TwistedScheduler + +__all__ = [ + "AsyncIOScheduler", + "AsyncIOThreadSafeScheduler", + "EventletScheduler", + "GEventScheduler", + "IOLoopScheduler", + "TwistedScheduler", +] diff --git a/frogpilot/third_party/reactivex/scheduler/eventloop/asyncioscheduler.py b/frogpilot/third_party/reactivex/scheduler/eventloop/asyncioscheduler.py new file mode 100644 index 000000000..16d9f64ab --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/eventloop/asyncioscheduler.py @@ -0,0 +1,123 @@ +import asyncio +import logging +from datetime import datetime +from typing import Optional, TypeVar + +from reactivex import abc, typing +from reactivex.disposable import ( + CompositeDisposable, + Disposable, + SingleAssignmentDisposable, +) + +from ..periodicscheduler import PeriodicScheduler + +_TState = TypeVar("_TState") +log = logging.getLogger("Rx") + + +class AsyncIOScheduler(PeriodicScheduler): + """A scheduler that schedules work via the asyncio mainloop. This class + does not use the asyncio threadsafe methods, if you need those please use + the AsyncIOThreadSafeScheduler class.""" + + def __init__(self, loop: asyncio.AbstractEventLoop) -> None: + """Create a new AsyncIOScheduler. + + Args: + loop: Instance of asyncio event loop to use; typically, you would + get this by asyncio.get_event_loop() + """ + super().__init__() + self._loop: asyncio.AbstractEventLoop = loop + + def schedule( + self, action: typing.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + sad = SingleAssignmentDisposable() + + def interval() -> None: + sad.disposable = self.invoke_action(action, state=state) + + handle = self._loop.call_soon(interval) + + def dispose() -> None: + handle.cancel() + + return CompositeDisposable(sad, Disposable(dispose)) + + def schedule_relative( + self, + duetime: typing.RelativeTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed after duetime. + + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + seconds = self.to_seconds(duetime) + if seconds <= 0: + return self.schedule(action, state) + + sad = SingleAssignmentDisposable() + + def interval() -> None: + sad.disposable = self.invoke_action(action, state=state) + + handle = self._loop.call_later(seconds, interval) + + def dispose() -> None: + handle.cancel() + + return CompositeDisposable(sad, Disposable(dispose)) + + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + duetime = self.to_datetime(duetime) + return self.schedule_relative(duetime - self.now, action, state=state) + + @property + def now(self) -> datetime: + """Represents a notion of time for this scheduler. Tasks being + scheduled on a scheduler will adhere to the time denoted by this + property. + + Returns: + The scheduler's current time, as a datetime instance. + """ + + return self.to_datetime(self._loop.time()) diff --git a/frogpilot/third_party/reactivex/scheduler/eventloop/asynciothreadsafescheduler.py b/frogpilot/third_party/reactivex/scheduler/eventloop/asynciothreadsafescheduler.py new file mode 100644 index 000000000..9287419ad --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/eventloop/asynciothreadsafescheduler.py @@ -0,0 +1,157 @@ +import asyncio +import logging +from concurrent.futures import Future +from typing import List, Optional, TypeVar + +from reactivex import abc, typing +from reactivex.disposable import ( + CompositeDisposable, + Disposable, + SingleAssignmentDisposable, +) + +from .asyncioscheduler import AsyncIOScheduler + +_TState = TypeVar("_TState") + +log = logging.getLogger("Rx") + + +class AsyncIOThreadSafeScheduler(AsyncIOScheduler): + """A scheduler that schedules work via the asyncio mainloop. This is a + subclass of AsyncIOScheduler which uses the threadsafe asyncio methods. + """ + + def schedule( + self, action: typing.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + sad = SingleAssignmentDisposable() + + def interval() -> None: + sad.disposable = self.invoke_action(action, state=state) + + handle = self._loop.call_soon_threadsafe(interval) + + def dispose() -> None: + if self._on_self_loop_or_not_running(): + handle.cancel() + return + + future: "Future[int]" = Future() + + def cancel_handle() -> None: + handle.cancel() + future.set_result(0) + + self._loop.call_soon_threadsafe(cancel_handle) + future.result() + + return CompositeDisposable(sad, Disposable(dispose)) + + def schedule_relative( + self, + duetime: typing.RelativeTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed after duetime. + + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + seconds = self.to_seconds(duetime) + if seconds <= 0: + return self.schedule(action, state=state) + + sad = SingleAssignmentDisposable() + + def interval() -> None: + sad.disposable = self.invoke_action(action, state=state) + + # the operations on the list used here are atomic, so there is no + # need to protect its access with a lock + handle: List[asyncio.Handle] = [] + + def stage2() -> None: + handle.append(self._loop.call_later(seconds, interval)) + + handle.append(self._loop.call_soon_threadsafe(stage2)) + + def dispose() -> None: + def do_cancel_handles() -> None: + try: + handle.pop().cancel() + handle.pop().cancel() + except Exception: + pass + + if self._on_self_loop_or_not_running(): + do_cancel_handles() + return + + future: "Future[int]" = Future() + + def cancel_handle() -> None: + do_cancel_handles() + future.set_result(0) + + self._loop.call_soon_threadsafe(cancel_handle) + future.result() + + return CompositeDisposable(sad, Disposable(dispose)) + + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + duetime = self.to_datetime(duetime) + return self.schedule_relative(duetime - self.now, action, state=state) + + def _on_self_loop_or_not_running(self) -> bool: + """ + Returns True if either self._loop is not running, or we're currently + executing on self._loop. In both cases, waiting for a future to be + resolved on the loop would result in a deadlock. + """ + if not self._loop.is_running(): + return True + current_loop = None + try: + # In python 3.7 there asyncio.get_running_loop() is prefered. + current_loop = asyncio.get_event_loop() + except RuntimeError: + # If there is no loop in current thread at all, and it is not main + # thread, we get error like: + # RuntimeError: There is no current event loop in thread 'Thread-1' + pass + return self._loop == current_loop diff --git a/frogpilot/third_party/reactivex/scheduler/eventloop/eventletscheduler.py b/frogpilot/third_party/reactivex/scheduler/eventloop/eventletscheduler.py new file mode 100644 index 000000000..9c6d1faa2 --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/eventloop/eventletscheduler.py @@ -0,0 +1,126 @@ +import logging +from datetime import datetime +from typing import Any, Optional, TypeVar + +from reactivex import abc, typing +from reactivex.disposable import ( + CompositeDisposable, + Disposable, + SingleAssignmentDisposable, +) + +from ..periodicscheduler import PeriodicScheduler + +_TState = TypeVar("_TState") +log = logging.getLogger("Rx") + + +class EventletScheduler(PeriodicScheduler): + """A scheduler that schedules work via the eventlet event loop. + + http://eventlet.net/ + """ + + def __init__(self, eventlet: Any) -> None: + """Create a new EventletScheduler. + + Args: + eventlet: The eventlet module to use; typically, you would get this + by import eventlet + """ + + super().__init__() + self._eventlet = eventlet + + def schedule( + self, action: typing.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + sad = SingleAssignmentDisposable() + + def interval() -> None: + sad.disposable = self.invoke_action(action, state=state) + + timer = self._eventlet.spawn(interval) + + def dispose() -> None: + timer.kill() + + return CompositeDisposable(sad, Disposable(dispose)) + + def schedule_relative( + self, + duetime: typing.RelativeTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed after duetime. + + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + seconds = self.to_seconds(duetime) + if seconds <= 0.0: + return self.schedule(action, state=state) + + sad = SingleAssignmentDisposable() + + def interval() -> None: + sad.disposable = self.invoke_action(action, state=state) + + timer = self._eventlet.spawn_after(seconds, interval) + + def dispose() -> None: + timer.kill() + + return CompositeDisposable(sad, Disposable(dispose)) + + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + duetime = self.to_datetime(duetime) + return self.schedule_relative(duetime - self.now, action, state=state) + + @property + def now(self) -> datetime: + """Represents a notion of time for this scheduler. Tasks being + scheduled on a scheduler will adhere to the time denoted by this + property. + + Returns: + The scheduler's current time, as a datetime instance. + """ + + return self.to_datetime(self._eventlet.hubs.get_hub().clock()) diff --git a/frogpilot/third_party/reactivex/scheduler/eventloop/geventscheduler.py b/frogpilot/third_party/reactivex/scheduler/eventloop/geventscheduler.py new file mode 100644 index 000000000..020b82560 --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/eventloop/geventscheduler.py @@ -0,0 +1,127 @@ +import logging +from datetime import datetime +from typing import Any, Optional, TypeVar + +from reactivex import abc, typing +from reactivex.disposable import ( + CompositeDisposable, + Disposable, + SingleAssignmentDisposable, +) + +from ..periodicscheduler import PeriodicScheduler + +_TState = TypeVar("_TState") +log = logging.getLogger("Rx") + + +class GEventScheduler(PeriodicScheduler): + """A scheduler that schedules work via the GEvent event loop. + + http://www.gevent.org/ + """ + + def __init__(self, gevent: Any) -> None: + """Create a new GEventScheduler. + + Args: + gevent: The gevent module to use; typically ,you would get this by + import gevent + """ + + super().__init__() + self._gevent = gevent + + def schedule( + self, action: typing.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + sad = SingleAssignmentDisposable() + + def interval() -> None: + sad.disposable = self.invoke_action(action, state=state) + + timer = self._gevent.spawn(interval) + + def dispose() -> None: + timer.kill(block=False) + + return CompositeDisposable(sad, Disposable(dispose)) + + def schedule_relative( + self, + duetime: typing.RelativeTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed after duetime. + + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + seconds = self.to_seconds(duetime) + if seconds <= 0.0: + return self.schedule(action, state=state) + + sad = SingleAssignmentDisposable() + + def interval() -> None: + sad.disposable = self.invoke_action(action, state=state) + + log.debug("timeout: %s", seconds) + timer = self._gevent.spawn_later(seconds, interval) + + def dispose() -> None: + timer.kill(block=False) + + return CompositeDisposable(sad, Disposable(dispose)) + + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + duetime = self.to_datetime(duetime) + return self.schedule_relative(duetime - self.now, action, state=state) + + @property + def now(self) -> datetime: + """Represents a notion of time for this scheduler. Tasks being + scheduled on a scheduler will adhere to the time denoted by this + property. + + Returns: + The scheduler's current time, as a datetime instance. + """ + + return self.to_datetime(self._gevent.get_hub().loop.now()) diff --git a/frogpilot/third_party/reactivex/scheduler/eventloop/ioloopscheduler.py b/frogpilot/third_party/reactivex/scheduler/eventloop/ioloopscheduler.py new file mode 100644 index 000000000..187bc864d --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/eventloop/ioloopscheduler.py @@ -0,0 +1,132 @@ +import logging +from datetime import datetime +from typing import Any, Optional, TypeVar + +from reactivex import abc, typing +from reactivex.disposable import ( + CompositeDisposable, + Disposable, + SingleAssignmentDisposable, +) + +from ..periodicscheduler import PeriodicScheduler + +_TState = TypeVar("_TState") +log = logging.getLogger("Rx") + + +class IOLoopScheduler(PeriodicScheduler): + """A scheduler that schedules work via the Tornado I/O main event loop. + + Note, as of Tornado 6, this is just a wrapper around the asyncio loop. + + http://tornado.readthedocs.org/en/latest/ioloop.html""" + + def __init__(self, loop: Any) -> None: + """Create a new IOLoopScheduler. + + Args: + loop: The ioloop to use; typically, you would get this by + tornado import ioloop; ioloop.IOLoop.current() + """ + + super().__init__() + self._loop = loop + + def schedule( + self, action: typing.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + sad = SingleAssignmentDisposable() + disposed = False + + def interval() -> None: + if not disposed: + sad.disposable = self.invoke_action(action, state=state) + + self._loop.add_callback(interval) + + def dispose() -> None: + nonlocal disposed + disposed = True + + return CompositeDisposable(sad, Disposable(dispose)) + + def schedule_relative( + self, + duetime: typing.RelativeTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed after duetime. + + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + seconds = self.to_seconds(duetime) + if seconds <= 0.0: + return self.schedule(action, state=state) + + sad = SingleAssignmentDisposable() + + def interval() -> None: + sad.disposable = self.invoke_action(action, state=state) + + log.debug("timeout: %s", seconds) + timer = self._loop.call_later(seconds, interval) + + def dispose() -> None: + self._loop.remove_timeout(timer) + self._loop.remove_timeout(timer) + + return CompositeDisposable(sad, Disposable(dispose)) + + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + duetime = self.to_datetime(duetime) + return self.schedule_relative(duetime - self.now, action, state=state) + + @property + def now(self) -> datetime: + """Represents a notion of time for this scheduler. Tasks being + scheduled on a scheduler will adhere to the time denoted by this + property. + + Returns: + The scheduler's current time, as a datetime instance. + """ + + return self.to_datetime(self._loop.time()) diff --git a/frogpilot/third_party/reactivex/scheduler/eventloop/twistedscheduler.py b/frogpilot/third_party/reactivex/scheduler/eventloop/twistedscheduler.py new file mode 100644 index 000000000..ea43a70b9 --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/eventloop/twistedscheduler.py @@ -0,0 +1,113 @@ +import logging +from datetime import datetime +from typing import Any, Optional, TypeVar + +from reactivex import abc, typing +from reactivex.disposable import ( + CompositeDisposable, + Disposable, + SingleAssignmentDisposable, +) + +from ..periodicscheduler import PeriodicScheduler + +_TState = TypeVar("_TState") +log = logging.getLogger("Rx") + + +class TwistedScheduler(PeriodicScheduler): + """A scheduler that schedules work via the Twisted reactor mainloop.""" + + def __init__(self, reactor: Any) -> None: + """Create a new TwistedScheduler. + + Args: + reactor: The reactor to use; typically, you would get this + by from twisted.internet import reactor + """ + + super().__init__() + self._reactor = reactor + + def schedule( + self, action: typing.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + return self.schedule_relative(0.0, action, state=state) + + def schedule_relative( + self, + duetime: typing.RelativeTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed after duetime. + + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + seconds = max(0.0, self.to_seconds(duetime)) + + sad = SingleAssignmentDisposable() + + def interval() -> None: + sad.disposable = action(self, state) + + log.debug("timeout: %s", seconds) + timer = self._reactor.callLater(seconds, interval) + + def dispose() -> None: + if not timer.called: + timer.cancel() + + return CompositeDisposable(sad, Disposable(dispose)) + + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + duetime = self.to_datetime(duetime) + return self.schedule_relative(duetime - self.now, action, state=state) + + @property + def now(self) -> datetime: + """Represents a notion of time for this scheduler. Tasks being + scheduled on a scheduler will adhere to the time denoted by this + property. + + Returns: + The scheduler's current time, as a datetime instance. + """ + + return self.to_datetime(float(self._reactor.seconds())) diff --git a/frogpilot/third_party/reactivex/scheduler/eventloopscheduler.py b/frogpilot/third_party/reactivex/scheduler/eventloopscheduler.py new file mode 100644 index 000000000..debda9950 --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/eventloopscheduler.py @@ -0,0 +1,218 @@ +import logging +import threading +from collections import deque +from typing import Deque, Optional, TypeVar + +from reactivex import abc, typing +from reactivex.disposable import Disposable +from reactivex.internal.concurrency import default_thread_factory +from reactivex.internal.constants import DELTA_ZERO +from reactivex.internal.exceptions import DisposedException +from reactivex.internal.priorityqueue import PriorityQueue + +from .periodicscheduler import PeriodicScheduler +from .scheduleditem import ScheduledItem + +log = logging.getLogger("Rx") + +_TState = TypeVar("_TState") + + +class EventLoopScheduler(PeriodicScheduler, abc.DisposableBase): + """Creates an object that schedules units of work on a designated thread.""" + + def __init__( + self, + thread_factory: Optional[typing.StartableFactory] = None, + exit_if_empty: bool = False, + ) -> None: + super().__init__() + self._is_disposed = False + + self._thread_factory: typing.StartableFactory = ( + thread_factory or default_thread_factory + ) + self._thread: Optional[typing.Startable] = None + self._condition = threading.Condition(threading.Lock()) + self._queue: PriorityQueue[ScheduledItem] = PriorityQueue() + self._ready_list: Deque[ScheduledItem] = deque() + + self._exit_if_empty = exit_if_empty + + def schedule( + self, action: typing.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + return self.schedule_absolute(self.now, action, state=state) + + def schedule_relative( + self, + duetime: typing.RelativeTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed after duetime. + + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + duetime = max(DELTA_ZERO, self.to_timedelta(duetime)) + return self.schedule_absolute(self.now + duetime, action, state) + + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + if self._is_disposed: + raise DisposedException() + + dt = self.to_datetime(duetime) + si: ScheduledItem = ScheduledItem(self, state, action, dt) + + with self._condition: + if dt <= self.now: + self._ready_list.append(si) + else: + self._queue.enqueue(si) + self._condition.notify() # signal that a new item is available + self._ensure_thread() + + return Disposable(si.cancel) + + def schedule_periodic( + self, + period: typing.RelativeTime, + action: typing.ScheduledPeriodicAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules a periodic piece of work. + + Args: + period: Period in seconds or timedelta for running the + work periodically. + action: Action to be executed. + state: [Optional] Initial state passed to the action upon + the first iteration. + + Returns: + The disposable object used to cancel the scheduled + recurring action (best effort). + """ + + if self._is_disposed: + raise DisposedException() + + return super().schedule_periodic(period, action, state=state) + + def _has_thread(self) -> bool: + """Checks if there is an event loop thread running.""" + with self._condition: + return not self._is_disposed and self._thread is not None + + def _ensure_thread(self) -> None: + """Ensures there is an event loop thread running. Should be + called under the gate.""" + + if not self._thread: + thread = self._thread_factory(self.run) + self._thread = thread + thread.start() + + def run(self) -> None: + """Event loop scheduled on the designated event loop thread. + The loop is suspended/resumed using the condition which gets notified + by calls to Schedule or calls to dispose.""" + + ready: Deque[ScheduledItem] = deque() + + while True: + + with self._condition: + + # The notification could be because of a call to dispose. This + # takes precedence over everything else: We'll exit the loop + # immediately. Subsequent calls to Schedule won't ever create a + # new thread. + if self._is_disposed: + return + + # Sort the ready_list (from recent calls for immediate schedule) + # and the due subset of previously queued items. + time = self.now + while self._queue: + due = self._queue.peek().duetime + while self._ready_list and due > self._ready_list[0].duetime: + ready.append(self._ready_list.popleft()) + if due > time: + break + ready.append(self._queue.dequeue()) + while self._ready_list: + ready.append(self._ready_list.popleft()) + + # Execute the gathered actions + while ready: + item = ready.popleft() + if not item.is_cancelled(): + item.invoke() + + # Wait for next cycle, or if we're done let's exit if so configured + with self._condition: + + if self._ready_list: + continue + + elif self._queue: + time = self.now + item = self._queue.peek() + seconds = (item.duetime - time).total_seconds() + if seconds > 0: + log.debug("timeout: %s", seconds) + self._condition.wait(seconds) + + elif self._exit_if_empty: + self._thread = None + return + + else: + self._condition.wait() + + def dispose(self) -> None: + """Ends the thread associated with this scheduler. All + remaining work in the scheduler queue is abandoned. + """ + + with self._condition: + if not self._is_disposed: + self._is_disposed = True + self._condition.notify() diff --git a/frogpilot/third_party/reactivex/scheduler/historicalscheduler.py b/frogpilot/third_party/reactivex/scheduler/historicalscheduler.py new file mode 100644 index 000000000..e90b21d6d --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/historicalscheduler.py @@ -0,0 +1,20 @@ +from datetime import datetime +from typing import Optional + +from .scheduler import UTC_ZERO +from .virtualtimescheduler import VirtualTimeScheduler + + +class HistoricalScheduler(VirtualTimeScheduler): + """Provides a virtual time scheduler that uses datetime for absolute time + and timedelta for relative time.""" + + def __init__(self, initial_clock: Optional[datetime] = None) -> None: + """Creates a new historical scheduler with the specified initial clock + value. + + Args: + initial_clock: Initial value for the clock. + """ + + super().__init__(initial_clock or UTC_ZERO) diff --git a/frogpilot/third_party/reactivex/scheduler/immediatescheduler.py b/frogpilot/third_party/reactivex/scheduler/immediatescheduler.py new file mode 100644 index 000000000..070cf3ee6 --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/immediatescheduler.py @@ -0,0 +1,96 @@ +from threading import Lock +from typing import MutableMapping, Optional, TypeVar +from weakref import WeakKeyDictionary + +from reactivex import abc, typing +from reactivex.internal.constants import DELTA_ZERO +from reactivex.internal.exceptions import WouldBlockException + +from .scheduler import Scheduler + +_TState = TypeVar("_TState") + + +class ImmediateScheduler(Scheduler): + """Represents an object that schedules units of work to run immediately, + on the current thread. You're not allowed to schedule timeouts using the + ImmediateScheduler since that will block the current thread while waiting. + Attempts to do so will raise a :class:`WouldBlockException`. + """ + + _lock = Lock() + _global: MutableMapping[type, "ImmediateScheduler"] = WeakKeyDictionary() + + @classmethod + def singleton(cls) -> "ImmediateScheduler": + with ImmediateScheduler._lock: + try: + self = ImmediateScheduler._global[cls] + except KeyError: + self = super().__new__(cls) + ImmediateScheduler._global[cls] = self + return self + + def __new__(cls) -> "ImmediateScheduler": + return cls.singleton() + + def schedule( + self, action: typing.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + return self.invoke_action(action, state) + + def schedule_relative( + self, + duetime: typing.RelativeTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed after duetime. + + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + duetime = self.to_timedelta(duetime) + if duetime > DELTA_ZERO: + raise WouldBlockException() + + return self.invoke_action(action, state) + + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + duetime = self.to_datetime(duetime) + return self.schedule_relative(duetime - self.now, action, state) diff --git a/frogpilot/third_party/reactivex/scheduler/mainloop/__init__.py b/frogpilot/third_party/reactivex/scheduler/mainloop/__init__.py new file mode 100644 index 000000000..3e1d0a3af --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/mainloop/__init__.py @@ -0,0 +1,13 @@ +from .gtkscheduler import GtkScheduler +from .pygamescheduler import PyGameScheduler +from .qtscheduler import QtScheduler +from .tkinterscheduler import TkinterScheduler +from .wxscheduler import WxScheduler + +__all__ = [ + "GtkScheduler", + "PyGameScheduler", + "QtScheduler", + "TkinterScheduler", + "WxScheduler", +] diff --git a/frogpilot/third_party/reactivex/scheduler/mainloop/gtkscheduler.py b/frogpilot/third_party/reactivex/scheduler/mainloop/gtkscheduler.py new file mode 100644 index 000000000..7f9767e71 --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/mainloop/gtkscheduler.py @@ -0,0 +1,144 @@ +from typing import Any, Optional, TypeVar, cast + +from reactivex import abc, typing +from reactivex.disposable import ( + CompositeDisposable, + Disposable, + SingleAssignmentDisposable, +) + +from ..periodicscheduler import PeriodicScheduler + +_TState = TypeVar("_TState") + + +class GtkScheduler(PeriodicScheduler): + """A scheduler that schedules work via the GLib main loop + used in GTK+ applications. + + See https://wiki.gnome.org/Projects/PyGObject + """ + + def __init__(self, glib: Any) -> None: + """Create a new GtkScheduler. + + Args: + glib: The GLib module to use; typically, you would get this by + >>> import gi + >>> gi.require_version('Gtk', '3.0') + >>> from gi.repository import GLib + """ + + super().__init__() + self._glib = glib + + def _gtk_schedule( + self, + time: typing.AbsoluteOrRelativeTime, + action: typing.ScheduledSingleOrPeriodicAction[_TState], + state: Optional[_TState] = None, + periodic: bool = False, + ) -> abc.DisposableBase: + + msecs = max(0, int(self.to_seconds(time) * 1000.0)) + + sad = SingleAssignmentDisposable() + + stopped = False + + def timer_handler(_: Any) -> bool: + if stopped: + return False + + nonlocal state + if periodic: + state = cast(typing.ScheduledPeriodicAction[_TState], action)(state) + else: + sad.disposable = self.invoke_action( + cast(typing.ScheduledAction[_TState], action), state=state + ) + + return periodic + + self._glib.timeout_add(msecs, timer_handler, None) + + def dispose() -> None: + nonlocal stopped + stopped = True + + return CompositeDisposable(sad, Disposable(dispose)) + + def schedule( + self, action: typing.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + return self._gtk_schedule(0.0, action, state) + + def schedule_relative( + self, + duetime: typing.RelativeTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed after duetime. + + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + return self._gtk_schedule(duetime, action, state=state) + + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + duetime = self.to_datetime(duetime) + return self._gtk_schedule(duetime - self.now, action, state=state) + + def schedule_periodic( + self, + period: typing.RelativeTime, + action: typing.ScheduledPeriodicAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules a periodic piece of work to be executed in the loop. + + Args: + period: Period in seconds for running the work repeatedly. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + return self._gtk_schedule(period, action, state=state, periodic=True) diff --git a/frogpilot/third_party/reactivex/scheduler/mainloop/pygamescheduler.py b/frogpilot/third_party/reactivex/scheduler/mainloop/pygamescheduler.py new file mode 100644 index 000000000..148688603 --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/mainloop/pygamescheduler.py @@ -0,0 +1,113 @@ +import logging +import threading +from typing import Any, Optional, TypeVar + +from reactivex import abc, typing +from reactivex.internal import PriorityQueue +from reactivex.internal.constants import DELTA_ZERO + +from ..periodicscheduler import PeriodicScheduler +from ..scheduleditem import ScheduledItem + +_TState = TypeVar("_TState") + +log = logging.getLogger("Rx") + + +class PyGameScheduler(PeriodicScheduler): + """A scheduler that schedules works for PyGame. + + Note that this class expects the caller to invoke run() repeatedly. + + http://www.pygame.org/docs/ref/time.html + http://www.pygame.org/docs/ref/event.html""" + + def __init__(self, pygame: Any): + """Create a new PyGameScheduler. + + Args: + pygame: The PyGame module to use; typically, you would get this by + import pygame + """ + + super().__init__() + self._pygame = pygame # TODO not used, refactor to actually use pygame? + self._lock = threading.Lock() + self._queue: PriorityQueue[ScheduledItem] = PriorityQueue() + + def schedule( + self, action: typing.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + log.debug("PyGameScheduler.schedule(state=%s)", state) + return self.schedule_absolute(self.now, action, state=state) + + def schedule_relative( + self, + duetime: typing.RelativeTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed after duetime. + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + duetime = max(DELTA_ZERO, self.to_timedelta(duetime)) + return self.schedule_absolute(self.now + duetime, action, state=state) + + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + duetime = self.to_datetime(duetime) + si: ScheduledItem = ScheduledItem(self, state, action, duetime) + + with self._lock: + self._queue.enqueue(si) + + return si.disposable + + def run(self) -> None: + while self._queue: + with self._lock: + item: ScheduledItem = self._queue.peek() + diff = item.duetime - self.now + + if diff > DELTA_ZERO: + break + + item = self._queue.dequeue() + + if not item.is_cancelled(): + item.invoke() diff --git a/frogpilot/third_party/reactivex/scheduler/mainloop/qtscheduler.py b/frogpilot/third_party/reactivex/scheduler/mainloop/qtscheduler.py new file mode 100644 index 000000000..bee0101b2 --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/mainloop/qtscheduler.py @@ -0,0 +1,143 @@ +import logging +from datetime import timedelta +from typing import Any, Optional, Set, TypeVar + +from reactivex import abc, typing +from reactivex.disposable import ( + CompositeDisposable, + Disposable, + SingleAssignmentDisposable, +) + +from ..periodicscheduler import PeriodicScheduler + +_TState = TypeVar("_TState") + +log = logging.getLogger(__name__) + + +class QtScheduler(PeriodicScheduler): + """A scheduler for a PyQt5/PySide2 event loop.""" + + def __init__(self, qtcore: Any): + """Create a new QtScheduler. + + Args: + qtcore: The QtCore instance to use; typically you would get this by + either import PyQt5.QtCore or import PySide2.QtCore + """ + super().__init__() + self._qtcore = qtcore + self._periodic_timers: Set[Any] = set() + + def schedule( + self, action: typing.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + return self.schedule_relative(0.0, action, state=state) + + def schedule_relative( + self, + duetime: typing.RelativeTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed after duetime. + + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + msecs = max(0, int(self.to_seconds(duetime) * 1000.0)) + sad = SingleAssignmentDisposable() + is_disposed = False + + def invoke_action() -> None: + if not is_disposed: + sad.disposable = action(self, state) + + log.debug("relative timeout: %sms", msecs) + + # Use static method, let Qt C++ handle QTimer lifetime + self._qtcore.QTimer.singleShot(msecs, invoke_action) + + def dispose() -> None: + nonlocal is_disposed + is_disposed = True + + return CompositeDisposable(sad, Disposable(dispose)) + + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + delta: timedelta = self.to_datetime(duetime) - self.now + return self.schedule_relative(delta, action, state=state) + + def schedule_periodic( + self, + period: typing.RelativeTime, + action: typing.ScheduledPeriodicAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules a periodic piece of work to be executed in the loop. + + Args: + period: Period in seconds for running the work repeatedly. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + msecs = max(0, int(self.to_seconds(period) * 1000.0)) + sad = SingleAssignmentDisposable() + + def interval() -> None: + nonlocal state + state = action(state) + + log.debug("periodic timeout: %sms", msecs) + + timer = self._qtcore.QTimer() + timer.setSingleShot(not period) + timer.timeout.connect(interval) + timer.setInterval(msecs) + self._periodic_timers.add(timer) + timer.start() + + def dispose() -> None: + timer.stop() + self._periodic_timers.remove(timer) + timer.deleteLater() + + return CompositeDisposable(sad, Disposable(dispose)) diff --git a/frogpilot/third_party/reactivex/scheduler/mainloop/tkinterscheduler.py b/frogpilot/third_party/reactivex/scheduler/mainloop/tkinterscheduler.py new file mode 100644 index 000000000..3f0e2a946 --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/mainloop/tkinterscheduler.py @@ -0,0 +1,98 @@ +from typing import Any, Optional, TypeVar + +from reactivex import abc, typing +from reactivex.disposable import ( + CompositeDisposable, + Disposable, + SingleAssignmentDisposable, +) + +from ..periodicscheduler import PeriodicScheduler + +_TState = TypeVar("_TState") + + +class TkinterScheduler(PeriodicScheduler): + """A scheduler that schedules work via the Tkinter main event loop. + + http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/universal.html + http://effbot.org/tkinterbook/widget.htm""" + + def __init__(self, root: Any) -> None: + """Create a new TkinterScheduler. + + Args: + root: The Tk instance to use; typically, you would get this by + import tkinter; tkinter.Tk() + """ + + super().__init__() + self._root = root + + def schedule( + self, action: typing.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + return self.schedule_relative(0.0, action, state) + + def schedule_relative( + self, + duetime: typing.RelativeTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed after duetime. + + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + sad = SingleAssignmentDisposable() + + def invoke_action() -> None: + sad.disposable = self.invoke_action(action, state=state) + + msecs = max(0, int(self.to_seconds(duetime) * 1000.0)) + timer = self._root.after(msecs, invoke_action) + + def dispose() -> None: + self._root.after_cancel(timer) + + return CompositeDisposable(sad, Disposable(dispose)) + + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + duetime = self.to_datetime(duetime) + return self.schedule_relative(duetime - self.now, action, state=state) diff --git a/frogpilot/third_party/reactivex/scheduler/mainloop/wxscheduler.py b/frogpilot/third_party/reactivex/scheduler/mainloop/wxscheduler.py new file mode 100644 index 000000000..054edbd45 --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/mainloop/wxscheduler.py @@ -0,0 +1,177 @@ +import logging +from typing import Any, Optional, Set, TypeVar, cast + +from reactivex import abc, typing +from reactivex.disposable import ( + CompositeDisposable, + Disposable, + SingleAssignmentDisposable, +) + +from ..periodicscheduler import PeriodicScheduler + +_TState = TypeVar("_TState") + +log = logging.getLogger("Rx") + + +class WxScheduler(PeriodicScheduler): + """A scheduler for a wxPython event loop.""" + + def __init__(self, wx: Any) -> None: + """Create a new WxScheduler. + + Args: + wx: The wx module to use; typically, you would get this by + import wx + """ + + super().__init__() + self._wx = wx + timer_class: Any = self._wx.Timer + + class Timer(timer_class): + def __init__(self, callback: typing.Action) -> None: + super().__init__() # type: ignore + self.callback = callback + + def Notify(self) -> None: + self.callback() + + self._timer_class = Timer + self._timers: Set[Timer] = set() + + def cancel_all(self) -> None: + """Cancel all scheduled actions. + + Should be called when destroying wx controls to prevent + accessing dead wx objects in actions that might be pending. + """ + for timer in self._timers: + timer.Stop() # type: ignore + + def _wxtimer_schedule( + self, + time: typing.AbsoluteOrRelativeTime, + action: typing.ScheduledSingleOrPeriodicAction[_TState], + state: Optional[_TState] = None, + periodic: bool = False, + ) -> abc.DisposableBase: + scheduler = self + + sad = SingleAssignmentDisposable() + + def interval() -> None: + nonlocal state + if periodic: + state = cast(typing.ScheduledPeriodicAction[_TState], action)(state) + else: + sad.disposable = cast(typing.ScheduledAction[_TState], action)( + scheduler, state + ) + + msecs = max(1, int(self.to_seconds(time) * 1000.0)) # Must be non-zero + + log.debug("timeout wx: %s", msecs) + + timer = self._timer_class(interval) + # A timer can only be used from the main thread + if self._wx.IsMainThread(): + timer.Start(msecs, oneShot=not periodic) # type: ignore + else: + self._wx.CallAfter(timer.Start, msecs, oneShot=not periodic) # type: ignore + self._timers.add(timer) + + def dispose() -> None: + timer.Stop() # type: ignore + self._timers.remove(timer) + + return CompositeDisposable(sad, Disposable(dispose)) + + def schedule( + self, action: typing.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + sad = SingleAssignmentDisposable() + is_disposed = False + + def invoke_action() -> None: + if not is_disposed: + sad.disposable = action(self, state) + + self._wx.CallAfter(invoke_action) + + def dispose() -> None: + nonlocal is_disposed + is_disposed = True + + return CompositeDisposable(sad, Disposable(dispose)) + + def schedule_relative( + self, + duetime: typing.RelativeTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed after duetime. + + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + return self._wxtimer_schedule(duetime, action, state=state) + + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + duetime = self.to_datetime(duetime) + return self._wxtimer_schedule(duetime - self.now, action, state=state) + + def schedule_periodic( + self, + period: typing.RelativeTime, + action: typing.ScheduledPeriodicAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules a periodic piece of work to be executed in the loop. + + Args: + period: Period in seconds for running the work repeatedly. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + return self._wxtimer_schedule(period, action, state=state, periodic=True) diff --git a/frogpilot/third_party/reactivex/scheduler/newthreadscheduler.py b/frogpilot/third_party/reactivex/scheduler/newthreadscheduler.py new file mode 100644 index 000000000..481bca176 --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/newthreadscheduler.py @@ -0,0 +1,136 @@ +import logging +import threading +from datetime import datetime +from typing import Optional, TypeVar + +from reactivex import abc, typing +from reactivex.disposable import Disposable +from reactivex.internal.concurrency import default_thread_factory + +from .eventloopscheduler import EventLoopScheduler +from .periodicscheduler import PeriodicScheduler + +_TState = TypeVar("_TState") + +log = logging.getLogger("Rx") + + +class NewThreadScheduler(PeriodicScheduler): + """Creates an object that schedules each unit of work on a separate thread.""" + + def __init__( + self, thread_factory: Optional[typing.StartableFactory] = None + ) -> None: + super().__init__() + self.thread_factory: typing.StartableFactory = ( + thread_factory or default_thread_factory + ) + + def schedule( + self, action: typing.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + scheduler = EventLoopScheduler( + thread_factory=self.thread_factory, exit_if_empty=True + ) + return scheduler.schedule(action, state) + + def schedule_relative( + self, + duetime: typing.RelativeTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed after duetime. + + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + scheduler = EventLoopScheduler( + thread_factory=self.thread_factory, exit_if_empty=True + ) + return scheduler.schedule_relative(duetime, action, state) + + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: typing.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + dt = self.to_datetime(duetime) + return self.schedule_relative(dt - self.now, action, state=state) + + def schedule_periodic( + self, + period: typing.RelativeTime, + action: typing.ScheduledPeriodicAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules a periodic piece of work. + + Args: + period: Period in seconds or timedelta for running the + work periodically. + action: Action to be executed. + state: [Optional] Initial state passed to the action upon + the first iteration. + + Returns: + The disposable object used to cancel the scheduled + recurring action (best effort). + """ + + seconds: float = self.to_seconds(period) + timeout: float = seconds + disposed: threading.Event = threading.Event() + + def run() -> None: + nonlocal state, timeout + while True: + if timeout > 0.0: + disposed.wait(timeout) + if disposed.is_set(): + return + + time: datetime = self.now + + state = action(state) + + timeout = seconds - (self.now - time).total_seconds() + + thread = self.thread_factory(run) + thread.start() + + def dispose() -> None: + disposed.set() + + return Disposable(dispose) diff --git a/frogpilot/third_party/reactivex/scheduler/periodicscheduler.py b/frogpilot/third_party/reactivex/scheduler/periodicscheduler.py new file mode 100644 index 000000000..cde217b3e --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/periodicscheduler.py @@ -0,0 +1,60 @@ +from datetime import datetime +from typing import Optional, TypeVar + +from reactivex import abc, typing +from reactivex.disposable import Disposable, MultipleAssignmentDisposable + +from .scheduler import Scheduler + +_TState = TypeVar("_TState") + + +class PeriodicScheduler(Scheduler, abc.PeriodicSchedulerBase): + """Base class for the various periodic scheduler implementations in this + package as well as the mainloop sub-package. + """ + + def schedule_periodic( + self, + period: typing.RelativeTime, + action: typing.ScheduledPeriodicAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules a periodic piece of work. + + Args: + period: Period in seconds or timedelta for running the + work periodically. + action: Action to be executed. + state: [Optional] Initial state passed to the action upon + the first iteration. + + Returns: + The disposable object used to cancel the scheduled + recurring action (best effort). + """ + + disp: MultipleAssignmentDisposable = MultipleAssignmentDisposable() + seconds: float = self.to_seconds(period) + + def periodic( + scheduler: abc.SchedulerBase, state: Optional[_TState] = None + ) -> Optional[Disposable]: + if disp.is_disposed: + return None + + now: datetime = scheduler.now + + try: + state = action(state) + except Exception: + disp.dispose() + raise + + time = seconds - (scheduler.now - now).total_seconds() + disp.disposable = scheduler.schedule_relative(time, periodic, state=state) + + return None + + disp.disposable = self.schedule_relative(period, periodic, state=state) + return disp diff --git a/frogpilot/third_party/reactivex/scheduler/scheduleditem.py b/frogpilot/third_party/reactivex/scheduler/scheduleditem.py new file mode 100644 index 000000000..f1ae8bde4 --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/scheduleditem.py @@ -0,0 +1,49 @@ +from datetime import datetime +from typing import Any, Optional, TypeVar + +from reactivex import abc +from reactivex.disposable import SingleAssignmentDisposable + +from .scheduler import Scheduler + +_TState = TypeVar("_TState") + + +class ScheduledItem(object): + def __init__( + self, + scheduler: Scheduler, + state: Optional[_TState], + action: abc.ScheduledAction[_TState], + duetime: datetime, + ) -> None: + self.scheduler: Scheduler = scheduler + self.state: Optional[Any] = state + self.action: abc.ScheduledAction[_TState] = action + self.duetime: datetime = duetime + self.disposable: SingleAssignmentDisposable = SingleAssignmentDisposable() + + def invoke(self) -> None: + ret = self.scheduler.invoke_action(self.action, state=self.state) + self.disposable.disposable = ret + + def cancel(self) -> None: + """Cancels the work item by disposing the resource returned by + invoke_core as soon as possible.""" + + self.disposable.dispose() + + def is_cancelled(self) -> bool: + return self.disposable.is_disposed + + def __lt__(self, other: "ScheduledItem") -> bool: + return self.duetime < other.duetime + + def __gt__(self, other: "ScheduledItem") -> bool: + return self.duetime > other.duetime + + def __eq__(self, other: Any) -> bool: + try: + return self.duetime == other.duetime + except AttributeError: + return NotImplemented diff --git a/frogpilot/third_party/reactivex/scheduler/scheduler.py b/frogpilot/third_party/reactivex/scheduler/scheduler.py new file mode 100644 index 000000000..84d4251aa --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/scheduler.py @@ -0,0 +1,172 @@ +from abc import abstractmethod +from datetime import datetime, timedelta +from typing import Optional, TypeVar + +from reactivex import abc, typing +from reactivex.disposable import Disposable +from reactivex.internal.basic import default_now +from reactivex.internal.constants import UTC_ZERO + +_TState = TypeVar("_TState") + + +class Scheduler(abc.SchedulerBase): + """Base class for the various scheduler implementations in this package as + well as the mainloop sub-package. This does not include an implementation + of schedule_periodic, refer to PeriodicScheduler. + """ + + @property + def now(self) -> datetime: + """Represents a notion of time for this scheduler. Tasks being + scheduled on a scheduler will adhere to the time denoted by this + property. + + Returns: + The scheduler's current time, as a datetime instance. + """ + + return default_now() + + @abstractmethod + def schedule( + self, action: abc.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + return NotImplemented + + @abstractmethod + def schedule_relative( + self, + duetime: typing.RelativeTime, + action: abc.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed after duetime. + + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + return NotImplemented + + @abstractmethod + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: abc.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + return NotImplemented + + def invoke_action( + self, action: abc.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Invoke the given given action. This is typically called by instances + of ScheduledItem. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object returned by the action, if any; or a new + (no-op) disposable otherwise. + """ + + ret = action(self, state) + if isinstance(ret, abc.DisposableBase): + return ret + + return Disposable() + + @classmethod + def to_seconds(cls, value: typing.AbsoluteOrRelativeTime) -> float: + """Converts time value to seconds. This method handles both absolute + (datetime) and relative (timedelta) values. If the argument is already + a float, it is simply returned unchanged. + + Args: + value: the time value to convert to seconds. + + Returns: + The value converted to seconds. + """ + + if isinstance(value, datetime): + value = value - UTC_ZERO + + if isinstance(value, timedelta): + value = value.total_seconds() + + return value + + @classmethod + def to_datetime(cls, value: typing.AbsoluteOrRelativeTime) -> datetime: + """Converts time value to datetime. This method handles both absolute + (float) and relative (timedelta) values. If the argument is already + a datetime, it is simply returned unchanged. + + Args: + value: the time value to convert to datetime. + + Returns: + The value converted to datetime. + """ + + if isinstance(value, timedelta): + value = UTC_ZERO + value + elif not isinstance(value, datetime): + value = datetime.utcfromtimestamp(value) + + return value + + @classmethod + def to_timedelta(cls, value: typing.AbsoluteOrRelativeTime) -> timedelta: + """Converts time value to timedelta. This method handles both absolute + (datetime) and relative (float) values. If the argument is already + a timedelta, it is simply returned unchanged. If the argument is an + absolute time, the result value will be the timedelta since the epoch, + January 1st, 1970, 00:00:00. + + Args: + value: the time value to convert to timedelta. + + Returns: + The value converted to timedelta. + """ + + if isinstance(value, datetime): + value = value - UTC_ZERO + elif not isinstance(value, timedelta): + value = timedelta(seconds=value) + + return value diff --git a/frogpilot/third_party/reactivex/scheduler/threadpoolscheduler.py b/frogpilot/third_party/reactivex/scheduler/threadpoolscheduler.py new file mode 100644 index 000000000..3df4ac6dd --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/threadpoolscheduler.py @@ -0,0 +1,37 @@ +from concurrent.futures import Future, ThreadPoolExecutor +from typing import Any, Optional + +from reactivex import abc, typing + +from .newthreadscheduler import NewThreadScheduler + + +class ThreadPoolScheduler(NewThreadScheduler): + """A scheduler that schedules work via the thread pool.""" + + class ThreadPoolThread(abc.StartableBase): + """Wraps a concurrent future as a thread.""" + + def __init__( + self, executor: ThreadPoolExecutor, target: typing.StartableTarget + ): + self.executor: ThreadPoolExecutor = executor + self.target: typing.StartableTarget = target + self.future: Optional["Future[Any]"] = None + + def start(self) -> None: + self.future = self.executor.submit(self.target) + + def cancel(self) -> None: + if self.future: + self.future.cancel() + + def __init__(self, max_workers: Optional[int] = None) -> None: + self.executor: ThreadPoolExecutor = ThreadPoolExecutor(max_workers=max_workers) + + def thread_factory( + target: typing.StartableTarget, + ) -> ThreadPoolScheduler.ThreadPoolThread: + return self.ThreadPoolThread(self.executor, target) + + super().__init__(thread_factory) diff --git a/frogpilot/third_party/reactivex/scheduler/timeoutscheduler.py b/frogpilot/third_party/reactivex/scheduler/timeoutscheduler.py new file mode 100644 index 000000000..eb87396f7 --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/timeoutscheduler.py @@ -0,0 +1,122 @@ +from threading import Lock, Timer +from typing import MutableMapping, Optional, TypeVar +from weakref import WeakKeyDictionary + +from reactivex import abc, typing +from reactivex.disposable import ( + CompositeDisposable, + Disposable, + SingleAssignmentDisposable, +) + +from .periodicscheduler import PeriodicScheduler + +_TState = TypeVar("_TState") + + +class TimeoutScheduler(PeriodicScheduler): + """A scheduler that schedules work via a timed callback.""" + + _lock = Lock() + _global: MutableMapping[type, "TimeoutScheduler"] = WeakKeyDictionary() + + @classmethod + def singleton(cls) -> "TimeoutScheduler": + with TimeoutScheduler._lock: + try: + self = TimeoutScheduler._global[cls] + except KeyError: + self = super().__new__(cls) + TimeoutScheduler._global[cls] = self + return self + + def __new__(cls) -> "TimeoutScheduler": + return cls.singleton() + + def schedule( + self, action: abc.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + sad = SingleAssignmentDisposable() + + def interval() -> None: + sad.disposable = self.invoke_action(action, state) + + timer = Timer(0, interval) + timer.daemon = True + timer.start() + + def dispose() -> None: + timer.cancel() + + return CompositeDisposable(sad, Disposable(dispose)) + + def schedule_relative( + self, + duetime: typing.RelativeTime, + action: abc.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed after duetime. + + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + seconds = self.to_seconds(duetime) + if seconds <= 0.0: + return self.schedule(action, state) + + sad = SingleAssignmentDisposable() + + def interval() -> None: + sad.disposable = self.invoke_action(action, state) + + timer = Timer(seconds, interval) + timer.daemon = True + timer.start() + + def dispose() -> None: + timer.cancel() + + return CompositeDisposable(sad, Disposable(dispose)) + + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: abc.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + duetime = self.to_datetime(duetime) + return self.schedule_relative(duetime - self.now, action, state) + + +__all__ = ["TimeoutScheduler"] diff --git a/frogpilot/third_party/reactivex/scheduler/trampoline.py b/frogpilot/third_party/reactivex/scheduler/trampoline.py new file mode 100644 index 000000000..f138b3e12 --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/trampoline.py @@ -0,0 +1,62 @@ +from collections import deque +from threading import Condition, Lock +from typing import Deque + +from reactivex.internal.priorityqueue import PriorityQueue + +from .scheduleditem import ScheduledItem + + +class Trampoline: + def __init__(self) -> None: + self._idle: bool = True + self._queue: PriorityQueue[ScheduledItem] = PriorityQueue() + self._lock: Lock = Lock() + self._condition: Condition = Condition(self._lock) + + def idle(self) -> bool: + with self._lock: + return self._idle + + def run(self, item: ScheduledItem) -> None: + with self._lock: + self._queue.enqueue(item) + if self._idle: + self._idle = False + else: + self._condition.notify() + return + try: + self._run() + finally: + with self._lock: + self._idle = True + self._queue.clear() + + def _run(self) -> None: + ready: Deque[ScheduledItem] = deque() + while True: + with self._lock: + while len(self._queue) > 0: + item: ScheduledItem = self._queue.peek() + if item.duetime <= item.scheduler.now: + self._queue.dequeue() + ready.append(item) + else: + break + + while len(ready) > 0: + item = ready.popleft() + if not item.is_cancelled(): + item.invoke() + + with self._lock: + if len(self._queue) == 0: + break + item = self._queue.peek() + seconds = (item.duetime - item.scheduler.now).total_seconds() + if seconds > 0.0: + self._condition.wait(seconds) + + +__all__ = ["Trampoline"] diff --git a/frogpilot/third_party/reactivex/scheduler/trampolinescheduler.py b/frogpilot/third_party/reactivex/scheduler/trampolinescheduler.py new file mode 100644 index 000000000..a4f92a492 --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/trampolinescheduler.py @@ -0,0 +1,117 @@ +import logging +from typing import Optional, TypeVar + +from reactivex import abc, typing +from reactivex.abc.disposable import DisposableBase +from reactivex.abc.scheduler import ScheduledAction +from reactivex.internal.constants import DELTA_ZERO + +from .scheduleditem import ScheduledItem +from .scheduler import Scheduler +from .trampoline import Trampoline + +_TState = TypeVar("_TState") +log = logging.getLogger("Rx") + + +class TrampolineScheduler(Scheduler): + """Represents an object that schedules units of work on the trampoline. + You should never schedule timeouts using the *TrampolineScheduler*, as + it will block the thread while waiting. + + Each instance has its own trampoline (and queue), and you can schedule work + on it from different threads. Beware though, that the first thread to call + a *schedule* method while the trampoline is idle will then remain occupied + until the queue is empty. + """ + + def __init__(self) -> None: + + self._tramp = Trampoline() + + def get_trampoline(self) -> Trampoline: + return self._tramp + + def schedule( + self, action: abc.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + return self.schedule_absolute(self.now, action, state=state) + + def schedule_relative( + self, + duetime: typing.RelativeTime, + action: abc.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed after duetime. + + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + duetime = max(DELTA_ZERO, self.to_timedelta(duetime)) + return self.schedule_absolute(self.now + duetime, action, state=state) + + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: abc.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + dt = self.to_datetime(duetime) + if dt > self.now: + log.warning("Do not schedule blocking work!") + item: ScheduledItem = ScheduledItem(self, state, action, dt) + + self.get_trampoline().run(item) + + return item.disposable + + def schedule_required(self) -> bool: + """Test if scheduling is required. + + Gets a value indicating whether the caller must call a + schedule method. If the trampoline is active, then it returns + False; otherwise, if the trampoline is not active, then it + returns True. + """ + return self.get_trampoline().idle() + + def ensure_trampoline( + self, action: ScheduledAction[_TState] + ) -> Optional[DisposableBase]: + """Method for testing the TrampolineScheduler.""" + + if self.schedule_required(): + return self.schedule(action) + + return action(self, None) diff --git a/frogpilot/third_party/reactivex/scheduler/virtualtimescheduler.py b/frogpilot/third_party/reactivex/scheduler/virtualtimescheduler.py new file mode 100644 index 000000000..bc4db5689 --- /dev/null +++ b/frogpilot/third_party/reactivex/scheduler/virtualtimescheduler.py @@ -0,0 +1,251 @@ +import logging +import threading +from datetime import datetime, timedelta +from typing import Any, Optional, TypeVar + +from reactivex import abc, typing +from reactivex.abc.scheduler import AbsoluteTime +from reactivex.internal import ArgumentOutOfRangeException, PriorityQueue + +from .periodicscheduler import PeriodicScheduler +from .scheduleditem import ScheduledItem + +log = logging.getLogger("Rx") + +MAX_SPINNING = 100 + +_TState = TypeVar("_TState") + + +class VirtualTimeScheduler(PeriodicScheduler): + """Virtual Scheduler. This scheduler should work with either + datetime/timespan or ticks as int/int""" + + def __init__(self, initial_clock: typing.AbsoluteTime = 0) -> None: + """Creates a new virtual time scheduler with the specified + initial clock value. + + Args: + initial_clock: Initial value for the clock. + """ + + super().__init__() + self._clock = initial_clock + self._is_enabled = False + self._lock: threading.Lock = threading.Lock() + self._queue: PriorityQueue[ScheduledItem] = PriorityQueue() + + def _get_clock(self) -> AbsoluteTime: + with self._lock: + return self._clock + + clock = property(fget=_get_clock) + + @property + def now(self) -> datetime: + """Represents a notion of time for this scheduler. Tasks being + scheduled on a scheduler will adhere to the time denoted by this + property. + + Returns: + The scheduler's current time, as a datetime instance. + """ + + return self.to_datetime(self._clock) + + def schedule( + self, action: typing.ScheduledAction[_TState], state: Optional[_TState] = None + ) -> abc.DisposableBase: + """Schedules an action to be executed. + + Args: + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + return self.schedule_absolute(self._clock, action, state=state) + + def schedule_relative( + self, + duetime: typing.RelativeTime, + action: abc.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed after duetime. + + Args: + duetime: Relative time after which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + time: typing.AbsoluteTime = self.add(self._clock, duetime) + return self.schedule_absolute(time, action, state=state) + + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: abc.ScheduledAction[_TState], + state: Optional[_TState] = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at duetime. + + Args: + duetime: Absolute time at which to execute the action. + action: Action to be executed. + state: [Optional] state to be given to the action function. + + Returns: + The disposable object used to cancel the scheduled action + (best effort). + """ + + dt = self.to_datetime(duetime) + si: ScheduledItem = ScheduledItem(self, state, action, dt) + with self._lock: + self._queue.enqueue(si) + return si.disposable + + def start(self) -> Any: + """Starts the virtual time scheduler.""" + + with self._lock: + if self._is_enabled: + return + self._is_enabled = True + + spinning: int = 0 + + while True: + with self._lock: + if not self._is_enabled or not self._queue: + break + + item: ScheduledItem = self._queue.dequeue() + + if item.duetime > self.now: + if isinstance(self._clock, datetime): + self._clock = item.duetime + else: + self._clock = self.to_seconds(item.duetime) + spinning = 0 + + elif spinning > MAX_SPINNING: + if isinstance(self._clock, datetime): + self.clock += timedelta(microseconds=1000) + else: + self._clock += 1.0 + spinning = 0 + + if not item.is_cancelled(): + item.invoke() + spinning += 1 + + self.stop() + + def stop(self) -> None: + """Stops the virtual time scheduler.""" + + with self._lock: + self._is_enabled = False + + def advance_to(self, time: typing.AbsoluteTime) -> None: + """Advances the schedulers clock to the specified absolute time, + running all work til that point. + + Args: + time: Absolute time to advance the schedulers clock to. + """ + + dt: datetime = self.to_datetime(time) + with self._lock: + if self.now > dt: + raise ArgumentOutOfRangeException() + + if self.now == dt or self._is_enabled: + return + + self._is_enabled = True + + while True: + with self._lock: + if not self._is_enabled or not self._queue: + break + + item: ScheduledItem = self._queue.peek() + + if item.duetime > dt: + break + + if item.duetime > self.now: + if isinstance(self._clock, datetime): + self._clock = item.duetime + else: + self._clock = self.to_seconds(item.duetime) + + self._queue.dequeue() + + if not item.is_cancelled(): + item.invoke() + + with self._lock: + self._is_enabled = False + if isinstance(self._clock, datetime): + self._clock = dt + else: + self._clock = self.to_seconds(dt) + + def advance_by(self, time: typing.RelativeTime) -> None: + """Advances the schedulers clock by the specified relative time, + running all work scheduled for that timespan. + + Args: + time: Relative time to advance the schedulers clock by. + """ + + log.debug("VirtualTimeScheduler.advance_by(time=%s)", time) + + self.advance_to(self.add(self.now, self.to_timedelta(time))) + + def sleep(self, time: typing.RelativeTime) -> None: + """Advances the schedulers clock by the specified relative time. + + Args: + time: Relative time to advance the schedulers clock by. + """ + + absolute = self.add(self.now, self.to_timedelta(time)) + dt: datetime = self.to_datetime(absolute) + + if self.now > dt: + raise ArgumentOutOfRangeException() + + with self._lock: + if isinstance(self._clock, datetime): + self._clock = dt + else: + self._clock = self.to_seconds(dt) + + @classmethod + def add( + cls, absolute: typing.AbsoluteTime, relative: typing.RelativeTime + ) -> typing.AbsoluteTime: + """Adds a relative time value to an absolute time value. + + Args: + absolute: Absolute virtual time value. + relative: Relative virtual time value to add. + + Returns: + The resulting absolute virtual time sum value. + """ + + return cls.to_datetime(absolute) + cls.to_timedelta(relative) diff --git a/frogpilot/third_party/reactivex/subject/__init__.py b/frogpilot/third_party/reactivex/subject/__init__.py new file mode 100644 index 000000000..563688b8f --- /dev/null +++ b/frogpilot/third_party/reactivex/subject/__init__.py @@ -0,0 +1,6 @@ +from .asyncsubject import AsyncSubject +from .behaviorsubject import BehaviorSubject +from .replaysubject import ReplaySubject +from .subject import Subject + +__all__ = ["Subject", "AsyncSubject", "BehaviorSubject", "ReplaySubject"] diff --git a/frogpilot/third_party/reactivex/subject/asyncsubject.py b/frogpilot/third_party/reactivex/subject/asyncsubject.py new file mode 100644 index 000000000..5950f2b12 --- /dev/null +++ b/frogpilot/third_party/reactivex/subject/asyncsubject.py @@ -0,0 +1,85 @@ +from typing import Optional, TypeVar, cast + +from .. import abc +from ..disposable import Disposable +from .innersubscription import InnerSubscription +from .subject import Subject + +_T = TypeVar("_T") + + +class AsyncSubject(Subject[_T]): + """Represents the result of an asynchronous operation. The last value + before the close notification, or the error received through + on_error, is sent to all subscribed observers.""" + + def __init__(self) -> None: + """Creates a subject that can only receive one value and that value is + cached for all future observations.""" + + super().__init__() + + self.value: _T = cast(_T, None) + self.has_value: bool = False + + def _subscribe_core( + self, + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + with self.lock: + self.check_disposed() + if not self.is_stopped: + self.observers.append(observer) + return InnerSubscription(self, observer) + + ex = self.exception + has_value = self.has_value + value = self.value + + if ex: + observer.on_error(ex) + elif has_value: + observer.on_next(value) + observer.on_completed() + else: + observer.on_completed() + + return Disposable() + + def _on_next_core(self, value: _T) -> None: + """Remember the value. Upon completion, the most recently received value + will be passed on to all subscribed observers. + + Args: + value: The value to remember until completion + """ + with self.lock: + self.value = value + self.has_value = True + + def _on_completed_core(self) -> None: + """Notifies all subscribed observers of the end of the sequence. The + most recently received value, if any, will now be passed on to all + subscribed observers.""" + + with self.lock: + observers = self.observers.copy() + self.observers.clear() + value = self.value + has_value = self.has_value + + if has_value: + for observer in observers: + observer.on_next(value) + observer.on_completed() + else: + for observer in observers: + observer.on_completed() + + def dispose(self) -> None: + """Unsubscribe all observers and release resources.""" + + with self.lock: + self.value = cast(_T, None) + super().dispose() diff --git a/frogpilot/third_party/reactivex/subject/behaviorsubject.py b/frogpilot/third_party/reactivex/subject/behaviorsubject.py new file mode 100644 index 000000000..be6706258 --- /dev/null +++ b/frogpilot/third_party/reactivex/subject/behaviorsubject.py @@ -0,0 +1,69 @@ +from typing import Optional, TypeVar, cast + +from .. import abc +from ..disposable import Disposable +from .innersubscription import InnerSubscription +from .subject import Subject + +_T = TypeVar("_T") + + +class BehaviorSubject(Subject[_T]): + """Represents a value that changes over time. Observers can + subscribe to the subject to receive the last (or initial) value and + all subsequent notifications. + """ + + def __init__(self, value: _T) -> None: + """Initializes a new instance of the BehaviorSubject class which + creates a subject that caches its last value and starts with the + specified value. + + Args: + value: Initial value sent to observers when no other value has been + received by the subject yet. + """ + + super().__init__() + + self.value: _T = value + + def _subscribe_core( + self, + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + with self.lock: + self.check_disposed() + if not self.is_stopped: + self.observers.append(observer) + observer.on_next(self.value) + return InnerSubscription(self, observer) + ex = self.exception + + if ex: + observer.on_error(ex) + else: + observer.on_completed() + + return Disposable() + + def _on_next_core(self, value: _T) -> None: + """Notifies all subscribed observers with the value.""" + with self.lock: + observers = self.observers.copy() + self.value = value + + for observer in observers: + observer.on_next(value) + + def dispose(self) -> None: + """Release all resources. + + Releases all resources used by the current instance of the + BehaviorSubject class and unsubscribe all observers. + """ + + with self.lock: + self.value = cast(_T, None) + super().dispose() diff --git a/frogpilot/third_party/reactivex/subject/innersubscription.py b/frogpilot/third_party/reactivex/subject/innersubscription.py new file mode 100644 index 000000000..98315377f --- /dev/null +++ b/frogpilot/third_party/reactivex/subject/innersubscription.py @@ -0,0 +1,26 @@ +import threading +from typing import TYPE_CHECKING, Optional, TypeVar + +from .. import abc + +if TYPE_CHECKING: + from .subject import Subject + +_T = TypeVar("_T") + + +class InnerSubscription(abc.DisposableBase): + def __init__( + self, subject: "Subject[_T]", observer: Optional[abc.ObserverBase[_T]] = None + ): + self.subject = subject + self.observer = observer + + self.lock = threading.RLock() + + def dispose(self) -> None: + with self.lock: + if not self.subject.is_disposed and self.observer: + if self.observer in self.subject.observers: + self.subject.observers.remove(self.observer) + self.observer = None diff --git a/frogpilot/third_party/reactivex/subject/replaysubject.py b/frogpilot/third_party/reactivex/subject/replaysubject.py new file mode 100644 index 000000000..84fa93af5 --- /dev/null +++ b/frogpilot/third_party/reactivex/subject/replaysubject.py @@ -0,0 +1,141 @@ +import sys +from collections import deque +from datetime import datetime, timedelta +from typing import Any, Deque, NamedTuple, Optional, TypeVar, cast + +from reactivex.observer.scheduledobserver import ScheduledObserver +from reactivex.scheduler import CurrentThreadScheduler + +from .. import abc, typing +from ..observer import Observer +from .subject import Subject + +_T = TypeVar("_T") + + +class RemovableDisposable(abc.DisposableBase): + def __init__(self, subject: Subject[_T], observer: Observer[_T]): + self.subject = subject + self.observer = observer + + def dispose(self) -> None: + self.observer.dispose() + if not self.subject.is_disposed and self.observer in self.subject.observers: + self.subject.observers.remove(self.observer) + + +class QueueItem(NamedTuple): + interval: datetime + value: Any + + +class ReplaySubject(Subject[_T]): + """Represents an object that is both an observable sequence as well + as an observer. Each notification is broadcasted to all subscribed + and future observers, subject to buffer trimming policies. + """ + + def __init__( + self, + buffer_size: Optional[int] = None, + window: Optional[typing.RelativeTime] = None, + scheduler: Optional[abc.SchedulerBase] = None, + ) -> None: + """Initializes a new instance of the ReplaySubject class with + the specified buffer size, window and scheduler. + + Args: + buffer_size: [Optional] Maximum element count of the replay + buffer. + window [Optional]: Maximum time length of the replay buffer. + scheduler: [Optional] Scheduler the observers are invoked on. + """ + + super().__init__() + self.buffer_size = sys.maxsize if buffer_size is None else buffer_size + self.scheduler = scheduler or CurrentThreadScheduler.singleton() + self.window = ( + timedelta.max if window is None else self.scheduler.to_timedelta(window) + ) + self.queue: Deque[QueueItem] = deque() + + def _subscribe_core( + self, + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + so = ScheduledObserver(self.scheduler, observer) + subscription = RemovableDisposable(self, so) + + with self.lock: + self.check_disposed() + self._trim(self.scheduler.now) + self.observers.append(so) + + for item in self.queue: + so.on_next(item.value) + + if self.exception is not None: + so.on_error(self.exception) + elif self.is_stopped: + so.on_completed() + + so.ensure_active() + return subscription + + def _trim(self, now: datetime) -> None: + while len(self.queue) > self.buffer_size: + self.queue.popleft() + + while self.queue and (now - self.queue[0].interval) > self.window: + self.queue.popleft() + + def _on_next_core(self, value: _T) -> None: + """Notifies all subscribed observers with the value.""" + + with self.lock: + observers = self.observers.copy() + now = self.scheduler.now + self.queue.append(QueueItem(interval=now, value=value)) + self._trim(now) + + for observer in observers: + observer.on_next(value) + + for observer in observers: + cast(ScheduledObserver[_T], observer).ensure_active() + + def _on_error_core(self, error: Exception) -> None: + """Notifies all subscribed observers with the exception.""" + + with self.lock: + observers = self.observers.copy() + self.observers.clear() + self.exception = error + now = self.scheduler.now + self._trim(now) + + for observer in observers: + observer.on_error(error) + cast(ScheduledObserver[_T], observer).ensure_active() + + def _on_completed_core(self) -> None: + """Notifies all subscribed observers of the end of the sequence.""" + + with self.lock: + observers = self.observers.copy() + self.observers.clear() + now = self.scheduler.now + self._trim(now) + + for observer in observers: + observer.on_completed() + cast(ScheduledObserver[_T], observer).ensure_active() + + def dispose(self) -> None: + """Releases all resources used by the current instance of the + ReplaySubject class and unsubscribe all observers.""" + + with self.lock: + self.queue.clear() + super().dispose() diff --git a/frogpilot/third_party/reactivex/subject/subject.py b/frogpilot/third_party/reactivex/subject/subject.py new file mode 100644 index 000000000..c67ae3b3e --- /dev/null +++ b/frogpilot/third_party/reactivex/subject/subject.py @@ -0,0 +1,110 @@ +import threading +from typing import List, Optional, TypeVar + +from .. import abc +from ..disposable import Disposable +from ..internal import DisposedException +from ..observable import Observable +from ..observer import Observer +from .innersubscription import InnerSubscription + +_T = TypeVar("_T") + + +class Subject(Observable[_T], Observer[_T], abc.SubjectBase[_T]): + """Represents an object that is both an observable sequence as well + as an observer. Each notification is broadcasted to all subscribed + observers. + """ + + def __init__(self) -> None: + super().__init__() + + self.is_disposed = False + self.observers: List[abc.ObserverBase[_T]] = [] + self.exception: Optional[Exception] = None + + self.lock = threading.RLock() + + def check_disposed(self) -> None: + if self.is_disposed: + raise DisposedException() + + def _subscribe_core( + self, + observer: abc.ObserverBase[_T], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + with self.lock: + self.check_disposed() + if not self.is_stopped: + self.observers.append(observer) + return InnerSubscription(self, observer) + + if self.exception is not None: + observer.on_error(self.exception) + else: + observer.on_completed() + return Disposable() + + def on_next(self, value: _T) -> None: + """Notifies all subscribed observers with the value. + + Args: + value: The value to send to all subscribed observers. + """ + + with self.lock: + self.check_disposed() + super().on_next(value) + + def _on_next_core(self, value: _T) -> None: + with self.lock: + observers = self.observers.copy() + + for observer in observers: + observer.on_next(value) + + def on_error(self, error: Exception) -> None: + """Notifies all subscribed observers with the exception. + + Args: + error: The exception to send to all subscribed observers. + """ + + with self.lock: + self.check_disposed() + super().on_error(error) + + def _on_error_core(self, error: Exception) -> None: + with self.lock: + observers = self.observers.copy() + self.observers.clear() + self.exception = error + + for observer in observers: + observer.on_error(error) + + def on_completed(self) -> None: + """Notifies all subscribed observers of the end of the sequence.""" + + with self.lock: + self.check_disposed() + super().on_completed() + + def _on_completed_core(self) -> None: + with self.lock: + observers = self.observers.copy() + self.observers.clear() + + for observer in observers: + observer.on_completed() + + def dispose(self) -> None: + """Unsubscribe all observers and release resources.""" + + with self.lock: + self.is_disposed = True + self.observers = [] + self.exception = None + super().dispose() diff --git a/frogpilot/third_party/reactivex/testing/__init__.py b/frogpilot/third_party/reactivex/testing/__init__.py new file mode 100644 index 000000000..bf8af0b6f --- /dev/null +++ b/frogpilot/third_party/reactivex/testing/__init__.py @@ -0,0 +1,14 @@ +from .mockdisposable import MockDisposable +from .reactivetest import OnErrorPredicate, OnNextPredicate, ReactiveTest, is_prime +from .recorded import Recorded +from .testscheduler import TestScheduler + +__all__ = [ + "MockDisposable", + "OnErrorPredicate", + "OnNextPredicate", + "ReactiveTest", + "Recorded", + "TestScheduler", + "is_prime", +] diff --git a/frogpilot/third_party/reactivex/testing/coldobservable.py b/frogpilot/third_party/reactivex/testing/coldobservable.py new file mode 100644 index 000000000..01177158b --- /dev/null +++ b/frogpilot/third_party/reactivex/testing/coldobservable.py @@ -0,0 +1,57 @@ +from typing import Any, List, Optional, TypeVar + +from reactivex import Notification, Observable, abc +from reactivex.disposable import CompositeDisposable, Disposable +from reactivex.scheduler import VirtualTimeScheduler + +from .recorded import Recorded +from .subscription import Subscription + +_T = TypeVar("_T") + + +class ColdObservable(Observable[_T]): + def __init__( + self, scheduler: VirtualTimeScheduler, messages: List[Recorded[_T]] + ) -> None: + super().__init__() + + self.scheduler = scheduler + self.messages = messages + self.subscriptions: List[Subscription] = [] + + def _subscribe_core( + self, + observer: Optional[abc.ObserverBase[_T]] = None, + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + self.subscriptions.append(Subscription(self.scheduler.clock)) + index = len(self.subscriptions) - 1 + disp = CompositeDisposable() + + def get_action(notification: Notification[_T]) -> abc.ScheduledAction[_T]: + def action( + scheduler: abc.SchedulerBase, state: Any = None + ) -> abc.DisposableBase: + if observer: + notification.accept(observer) + return Disposable() + + return action + + for message in self.messages: + notification = message.value + if not isinstance(notification, Notification): + raise ValueError("Must be notification") + + # Don't make closures within a loop + action = get_action(notification) + disp.add(self.scheduler.schedule_relative(message.time, action)) + + def dispose() -> None: + start = self.subscriptions[index].subscribe + end = self.scheduler.to_seconds(self.scheduler.now) + self.subscriptions[index] = Subscription(start, int(end)) + disp.dispose() + + return Disposable(dispose) diff --git a/frogpilot/third_party/reactivex/testing/hotobservable.py b/frogpilot/third_party/reactivex/testing/hotobservable.py new file mode 100644 index 000000000..e69a84c12 --- /dev/null +++ b/frogpilot/third_party/reactivex/testing/hotobservable.py @@ -0,0 +1,61 @@ +from typing import Any, List, Optional, TypeVar + +from reactivex import Observable, abc +from reactivex.disposable import Disposable +from reactivex.notification import Notification +from reactivex.scheduler import VirtualTimeScheduler + +from .recorded import Recorded +from .subscription import Subscription + +_T = TypeVar("_T") + + +class HotObservable(Observable[_T]): + def __init__( + self, scheduler: VirtualTimeScheduler, messages: List[Recorded[_T]] + ) -> None: + super().__init__() + + self.scheduler = scheduler + self.messages = messages + self.subscriptions: List[Subscription] = [] + self.observers: List[abc.ObserverBase[_T]] = [] + + observable = self + + def get_action(notification: Notification[_T]) -> abc.ScheduledAction[_T]: + def action(scheduler: abc.SchedulerBase, state: Any) -> abc.DisposableBase: + for observer in observable.observers[:]: + notification.accept(observer) + return Disposable() + + return action + + for message in self.messages: + notification = message.value + if not isinstance(notification, Notification): + raise ValueError("Must be notification") + + # Warning: Don't make closures within a loop + action = get_action(notification) + scheduler.schedule_absolute(message.time, action) + + def _subscribe_core( + self, + observer: Optional[abc.ObserverBase[_T]] = None, + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + if observer: + self.observers.append(observer) + self.subscriptions.append(Subscription(self.scheduler.clock)) + index = len(self.subscriptions) - 1 + + def dispose_action() -> None: + if observer: + self.observers.remove(observer) + start = self.subscriptions[index].subscribe + end = self.scheduler.clock + self.subscriptions[index] = Subscription(start, end) + + return Disposable(dispose_action) diff --git a/frogpilot/third_party/reactivex/testing/marbles.py b/frogpilot/third_party/reactivex/testing/marbles.py new file mode 100644 index 000000000..e26c3da93 --- /dev/null +++ b/frogpilot/third_party/reactivex/testing/marbles.py @@ -0,0 +1,197 @@ +from contextlib import contextmanager +from typing import Any, Dict, Generator, List, NamedTuple, Optional, Tuple, Union +from warnings import warn + +import reactivex +from reactivex import Observable, typing +from reactivex.notification import Notification, OnError, OnNext +from reactivex.observable.marbles import parse +from reactivex.scheduler import NewThreadScheduler +from reactivex.typing import Callable, RelativeTime + +from .reactivetest import ReactiveTest +from .recorded import Recorded +from .testscheduler import TestScheduler + +new_thread_scheduler = NewThreadScheduler() + + +class MarblesContext(NamedTuple): + start: Callable[ + [Union[Observable[Any], Callable[[], Observable[Any]]]], List[Recorded[Any]] + ] + cold: Callable[ + [str, Optional[Dict[Union[str, float], Any]], Optional[Exception]], + Observable[Any], + ] + hot: Callable[ + [str, Optional[Dict[Union[str, float], Any]], Optional[Exception]], + Observable[Any], + ] + exp: Callable[ + [str, Optional[Dict[Union[str, float], Any]], Optional[Exception]], + List[Recorded[Any]], + ] + + +@contextmanager +def marbles_testing( + timespan: RelativeTime = 1.0, +) -> Generator[MarblesContext, None, None]: + """ + Initialize a :class:`rx.testing.TestScheduler` and return a namedtuple + containing the following functions that wrap its methods. + + :func:`cold()`: + Parse a marbles string and return a cold observable + + :func:`hot()`: + Parse a marbles string and return a hot observable + + :func:`start()`: + Start the test scheduler, invoke the create function, + subscribe to the resulting sequence, dispose the subscription and + return the resulting records + + :func:`exp()`: + Parse a marbles string and return a list of records + + Examples: + >>> with marbles_testing() as (start, cold, hot, exp): + ... obs = hot("-a-----b---c-|") + ... ex = exp( "-a-----b---c-|") + ... results = start(obs) + ... assert results == ex + + The underlying test scheduler is initialized with the following + parameters: + - created time = 100.0s + - subscribed = 200.0s + - disposed = 1000.0s + + **IMPORTANT**: regarding :func:`hot()`, a marble declared as the + first character will be skipped by the test scheduler. + E.g. hot("a--b--") will only emit b. + """ + + scheduler = TestScheduler() + created = 100.0 + disposed = 1000.0 + subscribed = 200.0 + start_called = False + outside_of_context = False + + def check() -> None: + if outside_of_context: + warn( + "context functions should not be called outside of " "with statement.", + UserWarning, + stacklevel=3, + ) + + if start_called: + warn( + "start() should only be called one time inside " "a with statement.", + UserWarning, + stacklevel=3, + ) + + def test_start( + create: Union[Observable[Any], Callable[[], Observable[Any]]] + ) -> List[Recorded[Any]]: + nonlocal start_called + check() + + if isinstance(create, Observable): + create_ = create + + def default_create() -> Observable[Any]: + return create_ + + create_function = default_create + else: + create_function = create + + mock_observer = scheduler.start( + create=create_function, + created=created, + subscribed=subscribed, + disposed=disposed, + ) + start_called = True + return mock_observer.messages + + def test_expected( + string: str, + lookup: Optional[Dict[Union[str, float], Any]] = None, + error: Optional[Exception] = None, + ) -> List[Recorded[Any]]: + messages = parse( + string, + timespan=timespan, + time_shift=subscribed, + lookup=lookup, + error=error, + ) + return messages_to_records(messages) + + def test_cold( + string: str, + lookup: Optional[Dict[Union[str, float], Any]] = None, + error: Optional[Exception] = None, + ) -> Observable[Any]: + check() + return reactivex.from_marbles( + string, + timespan=timespan, + lookup=lookup, + error=error, + ) + + def test_hot( + string: str, + lookup: Optional[Dict[Union[str, float], Any]] = None, + error: Optional[Exception] = None, + ) -> Observable[Any]: + check() + hot_obs: Observable[Any] = reactivex.hot( + string, + timespan=timespan, + duetime=subscribed, + lookup=lookup, + error=error, + scheduler=scheduler, + ) + return hot_obs + + try: + yield MarblesContext(test_start, test_cold, test_hot, test_expected) + finally: + outside_of_context = True + + +def messages_to_records( + messages: List[Tuple[typing.RelativeTime, Notification[Any]]] +) -> List[Recorded[Any]]: + """ + Helper function to convert messages returned by parse() to a list of + Recorded. + """ + records: List[Recorded[Any]] = [] + + for message in messages: + time, notification = message + if isinstance(time, float): + time_ = int(time) + else: + time_ = time.microseconds // 1000 + + if isinstance(notification, OnNext): + record = ReactiveTest.on_next(time_, notification.value) + elif isinstance(notification, OnError): + record = ReactiveTest.on_error(time_, notification.exception) + else: + record = ReactiveTest.on_completed(time_) + records.append(record) + + return records diff --git a/frogpilot/third_party/reactivex/testing/mockdisposable.py b/frogpilot/third_party/reactivex/testing/mockdisposable.py new file mode 100644 index 000000000..1baafae8d --- /dev/null +++ b/frogpilot/third_party/reactivex/testing/mockdisposable.py @@ -0,0 +1,14 @@ +from typing import List + +from reactivex import abc, typing +from reactivex.scheduler import VirtualTimeScheduler + + +class MockDisposable(abc.DisposableBase): + def __init__(self, scheduler: VirtualTimeScheduler): + self.scheduler = scheduler + self.disposes: List[typing.AbsoluteTime] = [] + self.disposes.append(self.scheduler.clock) + + def dispose(self) -> None: + self.disposes.append(self.scheduler.clock) diff --git a/frogpilot/third_party/reactivex/testing/mockobserver.py b/frogpilot/third_party/reactivex/testing/mockobserver.py new file mode 100644 index 000000000..ba5b59922 --- /dev/null +++ b/frogpilot/third_party/reactivex/testing/mockobserver.py @@ -0,0 +1,24 @@ +from typing import List, TypeVar + +from reactivex import abc +from reactivex.notification import OnCompleted, OnError, OnNext +from reactivex.scheduler import VirtualTimeScheduler + +from .recorded import Recorded + +_T = TypeVar("_T") + + +class MockObserver(abc.ObserverBase[_T]): + def __init__(self, scheduler: VirtualTimeScheduler) -> None: + self.scheduler = scheduler + self.messages: List[Recorded[_T]] = [] + + def on_next(self, value: _T) -> None: + self.messages.append(Recorded(self.scheduler.clock, OnNext(value))) + + def on_error(self, error: Exception) -> None: + self.messages.append(Recorded(self.scheduler.clock, OnError(error))) + + def on_completed(self) -> None: + self.messages.append(Recorded(self.scheduler.clock, OnCompleted())) diff --git a/frogpilot/third_party/reactivex/testing/reactivetest.py b/frogpilot/third_party/reactivex/testing/reactivetest.py new file mode 100644 index 000000000..239597fff --- /dev/null +++ b/frogpilot/third_party/reactivex/testing/reactivetest.py @@ -0,0 +1,82 @@ +import math +import types +from typing import Any, Generic, TypeVar, Union + +from reactivex import typing +from reactivex.notification import OnCompleted, OnError, OnNext + +from .recorded import Recorded +from .subscription import Subscription + +_T = TypeVar("_T") + + +def is_prime(i: int) -> bool: + """Tests if number is prime or not""" + + if i <= 1: + return False + + _max = int(math.floor(math.sqrt(i))) + for j in range(2, _max + 1): + if not i % j: + return False + + return True + + +# New predicate tests +class OnNextPredicate(Generic[_T]): + def __init__(self, predicate: typing.Predicate[_T]) -> None: + self.predicate = predicate + + def __eq__(self, other: Any) -> bool: + if other == self: + return True + if other is None: + return False + if other.kind != "N": + return False + return self.predicate(other.value) + + +class OnErrorPredicate(Generic[_T]): + def __init__(self, predicate: typing.Predicate[_T]): + self.predicate = predicate + + def __eq__(self, other: Any) -> bool: + if other == self: + return True + if other is None: + return False + if other.kind != "E": + return False + return self.predicate(other.exception) + + +class ReactiveTest: + created = 100 + subscribed = 200 + disposed = 1000 + + @staticmethod + def on_next(ticks: int, value: _T) -> Recorded[_T]: + if isinstance(value, types.FunctionType): + return Recorded(ticks, OnNextPredicate(value)) + + return Recorded(ticks, OnNext(value)) + + @staticmethod + def on_error(ticks: int, error: Union[Exception, str]) -> Recorded[Any]: + if isinstance(error, types.FunctionType): + return Recorded(ticks, OnErrorPredicate(error)) + + return Recorded(ticks, OnError(error)) + + @staticmethod + def on_completed(ticks: int) -> Recorded[Any]: + return Recorded(ticks, OnCompleted()) + + @staticmethod + def subscribe(start: int, end: int) -> Subscription: + return Subscription(start, end) diff --git a/frogpilot/third_party/reactivex/testing/recorded.py b/frogpilot/third_party/reactivex/testing/recorded.py new file mode 100644 index 000000000..64b04d239 --- /dev/null +++ b/frogpilot/third_party/reactivex/testing/recorded.py @@ -0,0 +1,41 @@ +from typing import TYPE_CHECKING, Any, Generic, TypeVar, Union, cast + +from reactivex import Notification + +if TYPE_CHECKING: + from .reactivetest import OnErrorPredicate, OnNextPredicate + + +_T = TypeVar("_T") + + +class Recorded(Generic[_T]): + def __init__( + self, + time: int, + value: Union[Notification[_T], "OnNextPredicate[_T]", "OnErrorPredicate[_T]"], + # comparer: Optional[typing.Comparer[_T]] = None, + ): + self.time = time + self.value = value + # self.comparer = comparer or default_comparer + + def __eq__(self, other: Any) -> bool: + """Returns true if a recorded value matches another recorded value""" + + if isinstance(other, Recorded): + other_ = cast(Recorded[_T], other) + time_match = self.time == other_.time + if not time_match: + return False + return self.value == other_.value + + return False + + equals = __eq__ + + def __repr__(self) -> str: + return str(self) + + def __str__(self) -> str: + return "%s@%s" % (self.value, self.time) diff --git a/frogpilot/third_party/reactivex/testing/subscription.py b/frogpilot/third_party/reactivex/testing/subscription.py new file mode 100644 index 000000000..88b29ab46 --- /dev/null +++ b/frogpilot/third_party/reactivex/testing/subscription.py @@ -0,0 +1,25 @@ +import sys +from typing import Any, Optional + + +class Subscription: + def __init__(self, start: int, end: Optional[int] = None): + self.subscribe = start + self.unsubscribe = end or sys.maxsize + + def equals(self, other: Any) -> bool: + return ( + self.subscribe == other.subscribe and self.unsubscribe == other.unsubscribe + ) + + def __eq__(self, other: Any) -> bool: + return self.equals(other) + + def __repr__(self) -> str: + return str(self) + + def __str__(self) -> str: + unsubscribe = ( + "Infinite" if self.unsubscribe == sys.maxsize else self.unsubscribe + ) + return "(%s, %s)" % (self.subscribe, unsubscribe) diff --git a/frogpilot/third_party/reactivex/testing/testscheduler.py b/frogpilot/third_party/reactivex/testing/testscheduler.py new file mode 100644 index 000000000..2ce4f66dc --- /dev/null +++ b/frogpilot/third_party/reactivex/testing/testscheduler.py @@ -0,0 +1,165 @@ +from typing import Any, Callable, List, Optional, TypeVar, Union, cast + +import reactivex +from reactivex import Observable, abc, typing +from reactivex.disposable import Disposable +from reactivex.scheduler import VirtualTimeScheduler +from reactivex.testing.recorded import Recorded + +from .coldobservable import ColdObservable +from .hotobservable import HotObservable +from .mockobserver import MockObserver +from .reactivetest import ReactiveTest + +_T = TypeVar("_T") +_TState = TypeVar("_TState") + + +class TestScheduler(VirtualTimeScheduler): + """Test time scheduler used for testing applications and libraries + built using Reactive Extensions. All time, both absolute and relative is + specified as integer ticks""" + + __test__ = False + + def schedule_absolute( + self, + duetime: typing.AbsoluteTime, + action: typing.ScheduledAction[_TState], + state: _TState = None, + ) -> abc.DisposableBase: + """Schedules an action to be executed at the specified virtual + time. + + Args: + duetime: Absolute virtual time at which to execute the + action. + action: Action to be executed. + state: State passed to the action to be executed. + + Returns: + Disposable object used to cancel the scheduled action + (best effort). + """ + + duetime = duetime if isinstance(duetime, float) else self.to_seconds(duetime) + return super().schedule_absolute(duetime, action, state) + + def start( + self, + create: Optional[Callable[[], Observable[_T]]] = None, + created: Optional[float] = None, + subscribed: Optional[float] = None, + disposed: Optional[float] = None, + ) -> MockObserver[_T]: + """Starts the test scheduler and uses the specified virtual + times to invoke the factory function, subscribe to the + resulting sequence, and dispose the subscription. + + Args: + create: Factory method to create an observable sequence. + created: Virtual time at which to invoke the factory to + create an observable sequence. + subscribed: Virtual time at which to subscribe to the + created observable sequence. + disposed: Virtual time at which to dispose the + subscription. + + Returns: + Observer with timestamped recordings of notification + messages that were received during the virtual time window + when the subscription to the source sequence was active. + """ + + # Defaults + created = created or ReactiveTest.created + subscribed = subscribed or ReactiveTest.subscribed + disposed = disposed or ReactiveTest.disposed + + observer = self.create_observer() + subscription: Optional[abc.DisposableBase] = None + source: Optional[abc.ObservableBase[_T]] = None + + def action_create( + scheduler: abc.SchedulerBase, state: Any = None + ) -> abc.DisposableBase: + """Called at create time. Defaults to 100""" + nonlocal source + source = create() if create is not None else reactivex.never() + return Disposable() + + self.schedule_absolute(created, action_create) + + def action_subscribe( + scheduler: abc.SchedulerBase, state: Any = None + ) -> abc.DisposableBase: + """Called at subscribe time. Defaults to 200""" + nonlocal subscription + if source: + subscription = source.subscribe(observer, scheduler=scheduler) + return Disposable() + + self.schedule_absolute(subscribed, action_subscribe) + + def action_dispose( + scheduler: abc.SchedulerBase, state: Any = None + ) -> abc.DisposableBase: + """Called at dispose time. Defaults to 1000""" + if subscription: + subscription.dispose() + return Disposable() + + self.schedule_absolute(disposed, action_dispose) + + super().start() + return observer + + def create_hot_observable( + self, *args: Union[Recorded[_T], List[Recorded[_T]]] + ) -> HotObservable[_T]: + """Creates a hot observable using the specified timestamped + notification messages either as a list or by multiple arguments. + + Args: + messages: Notifications to surface through the created sequence at + their specified absolute virtual times. + + Returns hot observable sequence that can be used to assert the timing + of subscriptions and notifications. + """ + + if args and isinstance(args[0], List): + messages = args[0] + else: + messages = cast(List[Recorded[_T]], list(args)) + return HotObservable(self, messages) + + def create_cold_observable( + self, *args: Union[Recorded[_T], List[Recorded[_T]]] + ) -> ColdObservable[_T]: + """Creates a cold observable using the specified timestamped + notification messages either as an array or arguments. + + Args: + args: Notifications to surface through the created sequence + at their specified virtual time offsets from the + sequence subscription time. + + Returns: + Cold observable sequence that can be used to assert the + timing of subscriptions and notifications. + """ + + if args and isinstance(args[0], list): + messages = args[0] + else: + messages = cast(List[Recorded[_T]], list(args)) + return ColdObservable(self, messages) + + def create_observer(self) -> MockObserver[Any]: + """Creates an observer that records received notification messages and + timestamps those. Return an Observer that can be used to assert the + timing of received notifications. + """ + + return MockObserver(self) diff --git a/frogpilot/third_party/reactivex/typing.py b/frogpilot/third_party/reactivex/typing.py new file mode 100644 index 000000000..baf10c250 --- /dev/null +++ b/frogpilot/third_party/reactivex/typing.py @@ -0,0 +1,57 @@ +from threading import Thread +from typing import Callable, TypeVar, Union + +from .abc.observable import Subscription +from .abc.observer import OnCompleted, OnError, OnNext +from .abc.periodicscheduler import ( + ScheduledPeriodicAction, + ScheduledSingleOrPeriodicAction, +) +from .abc.scheduler import ( + AbsoluteOrRelativeTime, + AbsoluteTime, + RelativeTime, + ScheduledAction, +) +from .abc.startable import StartableBase + +_TState = TypeVar("_TState") +_T1 = TypeVar("_T1") +_T2 = TypeVar("_T2") + +Action = Callable[[], None] + +Mapper = Callable[[_T1], _T2] +MapperIndexed = Callable[[_T1, int], _T2] +Predicate = Callable[[_T1], bool] +PredicateIndexed = Callable[[_T1, int], bool] +Comparer = Callable[[_T1, _T1], bool] +SubComparer = Callable[[_T1, _T1], int] +Accumulator = Callable[[_TState, _T1], _TState] + + +Startable = Union[StartableBase, Thread] +StartableTarget = Callable[..., None] +StartableFactory = Callable[[StartableTarget], Startable] + +__all__ = [ + "Accumulator", + "AbsoluteTime", + "AbsoluteOrRelativeTime", + "Comparer", + "Mapper", + "MapperIndexed", + "OnNext", + "OnError", + "OnCompleted", + "Predicate", + "PredicateIndexed", + "RelativeTime", + "SubComparer", + "ScheduledPeriodicAction", + "ScheduledSingleOrPeriodicAction", + "ScheduledAction", + "Startable", + "StartableTarget", + "Subscription", +] diff --git a/frogpilot/third_party/six.py b/frogpilot/third_party/six.py new file mode 100644 index 000000000..3de5969b1 --- /dev/null +++ b/frogpilot/third_party/six.py @@ -0,0 +1,1003 @@ +# Copyright (c) 2010-2024 Benjamin Peterson +# +# 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: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# 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. + +"""Utilities for writing code that runs on Python 2 and 3""" + +from __future__ import absolute_import + +import functools +import itertools +import operator +import sys +import types + +__author__ = "Benjamin Peterson " +__version__ = "1.17.0" + + +# Useful for very coarse version differentiation. +PY2 = sys.version_info[0] == 2 +PY3 = sys.version_info[0] == 3 +PY34 = sys.version_info[0:2] >= (3, 4) + +if PY3: + string_types = str, + integer_types = int, + class_types = type, + text_type = str + binary_type = bytes + + MAXSIZE = sys.maxsize +else: + string_types = basestring, + integer_types = (int, long) + class_types = (type, types.ClassType) + text_type = unicode + binary_type = str + + if sys.platform.startswith("java"): + # Jython always uses 32 bits. + MAXSIZE = int((1 << 31) - 1) + else: + # It's possible to have sizeof(long) != sizeof(Py_ssize_t). + class X(object): + + def __len__(self): + return 1 << 31 + try: + len(X()) + except OverflowError: + # 32-bit + MAXSIZE = int((1 << 31) - 1) + else: + # 64-bit + MAXSIZE = int((1 << 63) - 1) + del X + +if PY34: + from importlib.util import spec_from_loader +else: + spec_from_loader = None + + +def _add_doc(func, doc): + """Add documentation to a function.""" + func.__doc__ = doc + + +def _import_module(name): + """Import module, returning the module after the last dot.""" + __import__(name) + return sys.modules[name] + + +class _LazyDescr(object): + + def __init__(self, name): + self.name = name + + def __get__(self, obj, tp): + result = self._resolve() + setattr(obj, self.name, result) # Invokes __set__. + try: + # This is a bit ugly, but it avoids running this again by + # removing this descriptor. + delattr(obj.__class__, self.name) + except AttributeError: + pass + return result + + +class MovedModule(_LazyDescr): + + def __init__(self, name, old, new=None): + super(MovedModule, self).__init__(name) + if PY3: + if new is None: + new = name + self.mod = new + else: + self.mod = old + + def _resolve(self): + return _import_module(self.mod) + + def __getattr__(self, attr): + _module = self._resolve() + value = getattr(_module, attr) + setattr(self, attr, value) + return value + + +class _LazyModule(types.ModuleType): + + def __init__(self, name): + super(_LazyModule, self).__init__(name) + self.__doc__ = self.__class__.__doc__ + + def __dir__(self): + attrs = ["__doc__", "__name__"] + attrs += [attr.name for attr in self._moved_attributes] + return attrs + + # Subclasses should override this + _moved_attributes = [] + + +class MovedAttribute(_LazyDescr): + + def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None): + super(MovedAttribute, self).__init__(name) + if PY3: + if new_mod is None: + new_mod = name + self.mod = new_mod + if new_attr is None: + if old_attr is None: + new_attr = name + else: + new_attr = old_attr + self.attr = new_attr + else: + self.mod = old_mod + if old_attr is None: + old_attr = name + self.attr = old_attr + + def _resolve(self): + module = _import_module(self.mod) + return getattr(module, self.attr) + + +class _SixMetaPathImporter(object): + + """ + A meta path importer to import six.moves and its submodules. + + This class implements a PEP302 finder and loader. It should be compatible + with Python 2.5 and all existing versions of Python3 + """ + + def __init__(self, six_module_name): + self.name = six_module_name + self.known_modules = {} + + def _add_module(self, mod, *fullnames): + for fullname in fullnames: + self.known_modules[self.name + "." + fullname] = mod + + def _get_module(self, fullname): + return self.known_modules[self.name + "." + fullname] + + def find_module(self, fullname, path=None): + if fullname in self.known_modules: + return self + return None + + def find_spec(self, fullname, path, target=None): + if fullname in self.known_modules: + return spec_from_loader(fullname, self) + return None + + def __get_module(self, fullname): + try: + return self.known_modules[fullname] + except KeyError: + raise ImportError("This loader does not know module " + fullname) + + def load_module(self, fullname): + try: + # in case of a reload + return sys.modules[fullname] + except KeyError: + pass + mod = self.__get_module(fullname) + if isinstance(mod, MovedModule): + mod = mod._resolve() + else: + mod.__loader__ = self + sys.modules[fullname] = mod + return mod + + def is_package(self, fullname): + """ + Return true, if the named module is a package. + + We need this method to get correct spec objects with + Python 3.4 (see PEP451) + """ + return hasattr(self.__get_module(fullname), "__path__") + + def get_code(self, fullname): + """Return None + + Required, if is_package is implemented""" + self.__get_module(fullname) # eventually raises ImportError + return None + get_source = get_code # same as get_code + + def create_module(self, spec): + return self.load_module(spec.name) + + def exec_module(self, module): + pass + +_importer = _SixMetaPathImporter(__name__) + + +class _MovedItems(_LazyModule): + + """Lazy loading of moved objects""" + __path__ = [] # mark as package + + +_moved_attributes = [ + MovedAttribute("cStringIO", "cStringIO", "io", "StringIO"), + MovedAttribute("filter", "itertools", "builtins", "ifilter", "filter"), + MovedAttribute("filterfalse", "itertools", "itertools", "ifilterfalse", "filterfalse"), + MovedAttribute("input", "__builtin__", "builtins", "raw_input", "input"), + MovedAttribute("intern", "__builtin__", "sys"), + MovedAttribute("map", "itertools", "builtins", "imap", "map"), + MovedAttribute("getcwd", "os", "os", "getcwdu", "getcwd"), + MovedAttribute("getcwdb", "os", "os", "getcwd", "getcwdb"), + MovedAttribute("getoutput", "commands", "subprocess"), + MovedAttribute("range", "__builtin__", "builtins", "xrange", "range"), + MovedAttribute("reload_module", "__builtin__", "importlib" if PY34 else "imp", "reload"), + MovedAttribute("reduce", "__builtin__", "functools"), + MovedAttribute("shlex_quote", "pipes", "shlex", "quote"), + MovedAttribute("StringIO", "StringIO", "io"), + MovedAttribute("UserDict", "UserDict", "collections", "IterableUserDict", "UserDict"), + MovedAttribute("UserList", "UserList", "collections"), + MovedAttribute("UserString", "UserString", "collections"), + MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"), + MovedAttribute("zip", "itertools", "builtins", "izip", "zip"), + MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", "zip_longest"), + MovedModule("builtins", "__builtin__"), + MovedModule("configparser", "ConfigParser"), + MovedModule("collections_abc", "collections", "collections.abc" if sys.version_info >= (3, 3) else "collections"), + MovedModule("copyreg", "copy_reg"), + MovedModule("dbm_gnu", "gdbm", "dbm.gnu"), + MovedModule("dbm_ndbm", "dbm", "dbm.ndbm"), + MovedModule("_dummy_thread", "dummy_thread", "_dummy_thread" if sys.version_info < (3, 9) else "_thread"), + MovedModule("http_cookiejar", "cookielib", "http.cookiejar"), + MovedModule("http_cookies", "Cookie", "http.cookies"), + MovedModule("html_entities", "htmlentitydefs", "html.entities"), + MovedModule("html_parser", "HTMLParser", "html.parser"), + MovedModule("http_client", "httplib", "http.client"), + MovedModule("email_mime_base", "email.MIMEBase", "email.mime.base"), + MovedModule("email_mime_image", "email.MIMEImage", "email.mime.image"), + MovedModule("email_mime_multipart", "email.MIMEMultipart", "email.mime.multipart"), + MovedModule("email_mime_nonmultipart", "email.MIMENonMultipart", "email.mime.nonmultipart"), + MovedModule("email_mime_text", "email.MIMEText", "email.mime.text"), + MovedModule("BaseHTTPServer", "BaseHTTPServer", "http.server"), + MovedModule("CGIHTTPServer", "CGIHTTPServer", "http.server"), + MovedModule("SimpleHTTPServer", "SimpleHTTPServer", "http.server"), + MovedModule("cPickle", "cPickle", "pickle"), + MovedModule("queue", "Queue"), + MovedModule("reprlib", "repr"), + MovedModule("socketserver", "SocketServer"), + MovedModule("_thread", "thread", "_thread"), + MovedModule("tkinter", "Tkinter"), + MovedModule("tkinter_dialog", "Dialog", "tkinter.dialog"), + MovedModule("tkinter_filedialog", "FileDialog", "tkinter.filedialog"), + MovedModule("tkinter_scrolledtext", "ScrolledText", "tkinter.scrolledtext"), + MovedModule("tkinter_simpledialog", "SimpleDialog", "tkinter.simpledialog"), + MovedModule("tkinter_tix", "Tix", "tkinter.tix"), + MovedModule("tkinter_ttk", "ttk", "tkinter.ttk"), + MovedModule("tkinter_constants", "Tkconstants", "tkinter.constants"), + MovedModule("tkinter_dnd", "Tkdnd", "tkinter.dnd"), + MovedModule("tkinter_colorchooser", "tkColorChooser", + "tkinter.colorchooser"), + MovedModule("tkinter_commondialog", "tkCommonDialog", + "tkinter.commondialog"), + MovedModule("tkinter_tkfiledialog", "tkFileDialog", "tkinter.filedialog"), + MovedModule("tkinter_font", "tkFont", "tkinter.font"), + MovedModule("tkinter_messagebox", "tkMessageBox", "tkinter.messagebox"), + MovedModule("tkinter_tksimpledialog", "tkSimpleDialog", + "tkinter.simpledialog"), + MovedModule("urllib_parse", __name__ + ".moves.urllib_parse", "urllib.parse"), + MovedModule("urllib_error", __name__ + ".moves.urllib_error", "urllib.error"), + MovedModule("urllib", __name__ + ".moves.urllib", __name__ + ".moves.urllib"), + MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"), + MovedModule("xmlrpc_client", "xmlrpclib", "xmlrpc.client"), + MovedModule("xmlrpc_server", "SimpleXMLRPCServer", "xmlrpc.server"), +] +# Add windows specific modules. +if sys.platform == "win32": + _moved_attributes += [ + MovedModule("winreg", "_winreg"), + ] + +for attr in _moved_attributes: + setattr(_MovedItems, attr.name, attr) + if isinstance(attr, MovedModule): + _importer._add_module(attr, "moves." + attr.name) +del attr + +_MovedItems._moved_attributes = _moved_attributes + +moves = _MovedItems(__name__ + ".moves") +_importer._add_module(moves, "moves") + + +class Module_six_moves_urllib_parse(_LazyModule): + + """Lazy loading of moved objects in six.moves.urllib_parse""" + + +_urllib_parse_moved_attributes = [ + MovedAttribute("ParseResult", "urlparse", "urllib.parse"), + MovedAttribute("SplitResult", "urlparse", "urllib.parse"), + MovedAttribute("parse_qs", "urlparse", "urllib.parse"), + MovedAttribute("parse_qsl", "urlparse", "urllib.parse"), + MovedAttribute("urldefrag", "urlparse", "urllib.parse"), + MovedAttribute("urljoin", "urlparse", "urllib.parse"), + MovedAttribute("urlparse", "urlparse", "urllib.parse"), + MovedAttribute("urlsplit", "urlparse", "urllib.parse"), + MovedAttribute("urlunparse", "urlparse", "urllib.parse"), + MovedAttribute("urlunsplit", "urlparse", "urllib.parse"), + MovedAttribute("quote", "urllib", "urllib.parse"), + MovedAttribute("quote_plus", "urllib", "urllib.parse"), + MovedAttribute("unquote", "urllib", "urllib.parse"), + MovedAttribute("unquote_plus", "urllib", "urllib.parse"), + MovedAttribute("unquote_to_bytes", "urllib", "urllib.parse", "unquote", "unquote_to_bytes"), + MovedAttribute("urlencode", "urllib", "urllib.parse"), + MovedAttribute("splitquery", "urllib", "urllib.parse"), + MovedAttribute("splittag", "urllib", "urllib.parse"), + MovedAttribute("splituser", "urllib", "urllib.parse"), + MovedAttribute("splitvalue", "urllib", "urllib.parse"), + MovedAttribute("uses_fragment", "urlparse", "urllib.parse"), + MovedAttribute("uses_netloc", "urlparse", "urllib.parse"), + MovedAttribute("uses_params", "urlparse", "urllib.parse"), + MovedAttribute("uses_query", "urlparse", "urllib.parse"), + MovedAttribute("uses_relative", "urlparse", "urllib.parse"), +] +for attr in _urllib_parse_moved_attributes: + setattr(Module_six_moves_urllib_parse, attr.name, attr) +del attr + +Module_six_moves_urllib_parse._moved_attributes = _urllib_parse_moved_attributes + +_importer._add_module(Module_six_moves_urllib_parse(__name__ + ".moves.urllib_parse"), + "moves.urllib_parse", "moves.urllib.parse") + + +class Module_six_moves_urllib_error(_LazyModule): + + """Lazy loading of moved objects in six.moves.urllib_error""" + + +_urllib_error_moved_attributes = [ + MovedAttribute("URLError", "urllib2", "urllib.error"), + MovedAttribute("HTTPError", "urllib2", "urllib.error"), + MovedAttribute("ContentTooShortError", "urllib", "urllib.error"), +] +for attr in _urllib_error_moved_attributes: + setattr(Module_six_moves_urllib_error, attr.name, attr) +del attr + +Module_six_moves_urllib_error._moved_attributes = _urllib_error_moved_attributes + +_importer._add_module(Module_six_moves_urllib_error(__name__ + ".moves.urllib.error"), + "moves.urllib_error", "moves.urllib.error") + + +class Module_six_moves_urllib_request(_LazyModule): + + """Lazy loading of moved objects in six.moves.urllib_request""" + + +_urllib_request_moved_attributes = [ + MovedAttribute("urlopen", "urllib2", "urllib.request"), + MovedAttribute("install_opener", "urllib2", "urllib.request"), + MovedAttribute("build_opener", "urllib2", "urllib.request"), + MovedAttribute("pathname2url", "urllib", "urllib.request"), + MovedAttribute("url2pathname", "urllib", "urllib.request"), + MovedAttribute("getproxies", "urllib", "urllib.request"), + MovedAttribute("Request", "urllib2", "urllib.request"), + MovedAttribute("OpenerDirector", "urllib2", "urllib.request"), + MovedAttribute("HTTPDefaultErrorHandler", "urllib2", "urllib.request"), + MovedAttribute("HTTPRedirectHandler", "urllib2", "urllib.request"), + MovedAttribute("HTTPCookieProcessor", "urllib2", "urllib.request"), + MovedAttribute("ProxyHandler", "urllib2", "urllib.request"), + MovedAttribute("BaseHandler", "urllib2", "urllib.request"), + MovedAttribute("HTTPPasswordMgr", "urllib2", "urllib.request"), + MovedAttribute("HTTPPasswordMgrWithDefaultRealm", "urllib2", "urllib.request"), + MovedAttribute("AbstractBasicAuthHandler", "urllib2", "urllib.request"), + MovedAttribute("HTTPBasicAuthHandler", "urllib2", "urllib.request"), + MovedAttribute("ProxyBasicAuthHandler", "urllib2", "urllib.request"), + MovedAttribute("AbstractDigestAuthHandler", "urllib2", "urllib.request"), + MovedAttribute("HTTPDigestAuthHandler", "urllib2", "urllib.request"), + MovedAttribute("ProxyDigestAuthHandler", "urllib2", "urllib.request"), + MovedAttribute("HTTPHandler", "urllib2", "urllib.request"), + MovedAttribute("HTTPSHandler", "urllib2", "urllib.request"), + MovedAttribute("FileHandler", "urllib2", "urllib.request"), + MovedAttribute("FTPHandler", "urllib2", "urllib.request"), + MovedAttribute("CacheFTPHandler", "urllib2", "urllib.request"), + MovedAttribute("UnknownHandler", "urllib2", "urllib.request"), + MovedAttribute("HTTPErrorProcessor", "urllib2", "urllib.request"), + MovedAttribute("urlretrieve", "urllib", "urllib.request"), + MovedAttribute("urlcleanup", "urllib", "urllib.request"), + MovedAttribute("proxy_bypass", "urllib", "urllib.request"), + MovedAttribute("parse_http_list", "urllib2", "urllib.request"), + MovedAttribute("parse_keqv_list", "urllib2", "urllib.request"), +] +if sys.version_info[:2] < (3, 14): + _urllib_request_moved_attributes.extend( + [ + MovedAttribute("URLopener", "urllib", "urllib.request"), + MovedAttribute("FancyURLopener", "urllib", "urllib.request"), + ] + ) +for attr in _urllib_request_moved_attributes: + setattr(Module_six_moves_urllib_request, attr.name, attr) +del attr + +Module_six_moves_urllib_request._moved_attributes = _urllib_request_moved_attributes + +_importer._add_module(Module_six_moves_urllib_request(__name__ + ".moves.urllib.request"), + "moves.urllib_request", "moves.urllib.request") + + +class Module_six_moves_urllib_response(_LazyModule): + + """Lazy loading of moved objects in six.moves.urllib_response""" + + +_urllib_response_moved_attributes = [ + MovedAttribute("addbase", "urllib", "urllib.response"), + MovedAttribute("addclosehook", "urllib", "urllib.response"), + MovedAttribute("addinfo", "urllib", "urllib.response"), + MovedAttribute("addinfourl", "urllib", "urllib.response"), +] +for attr in _urllib_response_moved_attributes: + setattr(Module_six_moves_urllib_response, attr.name, attr) +del attr + +Module_six_moves_urllib_response._moved_attributes = _urllib_response_moved_attributes + +_importer._add_module(Module_six_moves_urllib_response(__name__ + ".moves.urllib.response"), + "moves.urllib_response", "moves.urllib.response") + + +class Module_six_moves_urllib_robotparser(_LazyModule): + + """Lazy loading of moved objects in six.moves.urllib_robotparser""" + + +_urllib_robotparser_moved_attributes = [ + MovedAttribute("RobotFileParser", "robotparser", "urllib.robotparser"), +] +for attr in _urllib_robotparser_moved_attributes: + setattr(Module_six_moves_urllib_robotparser, attr.name, attr) +del attr + +Module_six_moves_urllib_robotparser._moved_attributes = _urllib_robotparser_moved_attributes + +_importer._add_module(Module_six_moves_urllib_robotparser(__name__ + ".moves.urllib.robotparser"), + "moves.urllib_robotparser", "moves.urllib.robotparser") + + +class Module_six_moves_urllib(types.ModuleType): + + """Create a six.moves.urllib namespace that resembles the Python 3 namespace""" + __path__ = [] # mark as package + parse = _importer._get_module("moves.urllib_parse") + error = _importer._get_module("moves.urllib_error") + request = _importer._get_module("moves.urllib_request") + response = _importer._get_module("moves.urllib_response") + robotparser = _importer._get_module("moves.urllib_robotparser") + + def __dir__(self): + return ['parse', 'error', 'request', 'response', 'robotparser'] + +_importer._add_module(Module_six_moves_urllib(__name__ + ".moves.urllib"), + "moves.urllib") + + +def add_move(move): + """Add an item to six.moves.""" + setattr(_MovedItems, move.name, move) + + +def remove_move(name): + """Remove item from six.moves.""" + try: + delattr(_MovedItems, name) + except AttributeError: + try: + del moves.__dict__[name] + except KeyError: + raise AttributeError("no such move, %r" % (name,)) + + +if PY3: + _meth_func = "__func__" + _meth_self = "__self__" + + _func_closure = "__closure__" + _func_code = "__code__" + _func_defaults = "__defaults__" + _func_globals = "__globals__" +else: + _meth_func = "im_func" + _meth_self = "im_self" + + _func_closure = "func_closure" + _func_code = "func_code" + _func_defaults = "func_defaults" + _func_globals = "func_globals" + + +try: + advance_iterator = next +except NameError: + def advance_iterator(it): + return it.next() +next = advance_iterator + + +try: + callable = callable +except NameError: + def callable(obj): + return any("__call__" in klass.__dict__ for klass in type(obj).__mro__) + + +if PY3: + def get_unbound_function(unbound): + return unbound + + create_bound_method = types.MethodType + + def create_unbound_method(func, cls): + return func + + Iterator = object +else: + def get_unbound_function(unbound): + return unbound.im_func + + def create_bound_method(func, obj): + return types.MethodType(func, obj, obj.__class__) + + def create_unbound_method(func, cls): + return types.MethodType(func, None, cls) + + class Iterator(object): + + def next(self): + return type(self).__next__(self) + + callable = callable +_add_doc(get_unbound_function, + """Get the function out of a possibly unbound function""") + + +get_method_function = operator.attrgetter(_meth_func) +get_method_self = operator.attrgetter(_meth_self) +get_function_closure = operator.attrgetter(_func_closure) +get_function_code = operator.attrgetter(_func_code) +get_function_defaults = operator.attrgetter(_func_defaults) +get_function_globals = operator.attrgetter(_func_globals) + + +if PY3: + def iterkeys(d, **kw): + return iter(d.keys(**kw)) + + def itervalues(d, **kw): + return iter(d.values(**kw)) + + def iteritems(d, **kw): + return iter(d.items(**kw)) + + def iterlists(d, **kw): + return iter(d.lists(**kw)) + + viewkeys = operator.methodcaller("keys") + + viewvalues = operator.methodcaller("values") + + viewitems = operator.methodcaller("items") +else: + def iterkeys(d, **kw): + return d.iterkeys(**kw) + + def itervalues(d, **kw): + return d.itervalues(**kw) + + def iteritems(d, **kw): + return d.iteritems(**kw) + + def iterlists(d, **kw): + return d.iterlists(**kw) + + viewkeys = operator.methodcaller("viewkeys") + + viewvalues = operator.methodcaller("viewvalues") + + viewitems = operator.methodcaller("viewitems") + +_add_doc(iterkeys, "Return an iterator over the keys of a dictionary.") +_add_doc(itervalues, "Return an iterator over the values of a dictionary.") +_add_doc(iteritems, + "Return an iterator over the (key, value) pairs of a dictionary.") +_add_doc(iterlists, + "Return an iterator over the (key, [values]) pairs of a dictionary.") + + +if PY3: + def b(s): + return s.encode("latin-1") + + def u(s): + return s + unichr = chr + import struct + int2byte = struct.Struct(">B").pack + del struct + byte2int = operator.itemgetter(0) + indexbytes = operator.getitem + iterbytes = iter + import io + StringIO = io.StringIO + BytesIO = io.BytesIO + del io + _assertCountEqual = "assertCountEqual" + if sys.version_info[1] <= 1: + _assertRaisesRegex = "assertRaisesRegexp" + _assertRegex = "assertRegexpMatches" + _assertNotRegex = "assertNotRegexpMatches" + else: + _assertRaisesRegex = "assertRaisesRegex" + _assertRegex = "assertRegex" + _assertNotRegex = "assertNotRegex" +else: + def b(s): + return s + # Workaround for standalone backslash + + def u(s): + return unicode(s.replace(r'\\', r'\\\\'), "unicode_escape") + unichr = unichr + int2byte = chr + + def byte2int(bs): + return ord(bs[0]) + + def indexbytes(buf, i): + return ord(buf[i]) + iterbytes = functools.partial(itertools.imap, ord) + import StringIO + StringIO = BytesIO = StringIO.StringIO + _assertCountEqual = "assertItemsEqual" + _assertRaisesRegex = "assertRaisesRegexp" + _assertRegex = "assertRegexpMatches" + _assertNotRegex = "assertNotRegexpMatches" +_add_doc(b, """Byte literal""") +_add_doc(u, """Text literal""") + + +def assertCountEqual(self, *args, **kwargs): + return getattr(self, _assertCountEqual)(*args, **kwargs) + + +def assertRaisesRegex(self, *args, **kwargs): + return getattr(self, _assertRaisesRegex)(*args, **kwargs) + + +def assertRegex(self, *args, **kwargs): + return getattr(self, _assertRegex)(*args, **kwargs) + + +def assertNotRegex(self, *args, **kwargs): + return getattr(self, _assertNotRegex)(*args, **kwargs) + + +if PY3: + exec_ = getattr(moves.builtins, "exec") + + def reraise(tp, value, tb=None): + try: + if value is None: + value = tp() + if value.__traceback__ is not tb: + raise value.with_traceback(tb) + raise value + finally: + value = None + tb = None + +else: + def exec_(_code_, _globs_=None, _locs_=None): + """Execute code in a namespace.""" + if _globs_ is None: + frame = sys._getframe(1) + _globs_ = frame.f_globals + if _locs_ is None: + _locs_ = frame.f_locals + del frame + elif _locs_ is None: + _locs_ = _globs_ + exec("""exec _code_ in _globs_, _locs_""") + + exec_("""def reraise(tp, value, tb=None): + try: + raise tp, value, tb + finally: + tb = None +""") + + +if sys.version_info[:2] > (3,): + exec_("""def raise_from(value, from_value): + try: + raise value from from_value + finally: + value = None +""") +else: + def raise_from(value, from_value): + raise value + + +print_ = getattr(moves.builtins, "print", None) +if print_ is None: + def print_(*args, **kwargs): + """The new-style print function for Python 2.4 and 2.5.""" + fp = kwargs.pop("file", sys.stdout) + if fp is None: + return + + def write(data): + if not isinstance(data, basestring): + data = str(data) + # If the file has an encoding, encode unicode with it. + if (isinstance(fp, file) and + isinstance(data, unicode) and + fp.encoding is not None): + errors = getattr(fp, "errors", None) + if errors is None: + errors = "strict" + data = data.encode(fp.encoding, errors) + fp.write(data) + want_unicode = False + sep = kwargs.pop("sep", None) + if sep is not None: + if isinstance(sep, unicode): + want_unicode = True + elif not isinstance(sep, str): + raise TypeError("sep must be None or a string") + end = kwargs.pop("end", None) + if end is not None: + if isinstance(end, unicode): + want_unicode = True + elif not isinstance(end, str): + raise TypeError("end must be None or a string") + if kwargs: + raise TypeError("invalid keyword arguments to print()") + if not want_unicode: + for arg in args: + if isinstance(arg, unicode): + want_unicode = True + break + if want_unicode: + newline = unicode("\n") + space = unicode(" ") + else: + newline = "\n" + space = " " + if sep is None: + sep = space + if end is None: + end = newline + for i, arg in enumerate(args): + if i: + write(sep) + write(arg) + write(end) +if sys.version_info[:2] < (3, 3): + _print = print_ + + def print_(*args, **kwargs): + fp = kwargs.get("file", sys.stdout) + flush = kwargs.pop("flush", False) + _print(*args, **kwargs) + if flush and fp is not None: + fp.flush() + +_add_doc(reraise, """Reraise an exception.""") + +if sys.version_info[0:2] < (3, 4): + # This does exactly the same what the :func:`py3:functools.update_wrapper` + # function does on Python versions after 3.2. It sets the ``__wrapped__`` + # attribute on ``wrapper`` object and it doesn't raise an error if any of + # the attributes mentioned in ``assigned`` and ``updated`` are missing on + # ``wrapped`` object. + def _update_wrapper(wrapper, wrapped, + assigned=functools.WRAPPER_ASSIGNMENTS, + updated=functools.WRAPPER_UPDATES): + for attr in assigned: + try: + value = getattr(wrapped, attr) + except AttributeError: + continue + else: + setattr(wrapper, attr, value) + for attr in updated: + getattr(wrapper, attr).update(getattr(wrapped, attr, {})) + wrapper.__wrapped__ = wrapped + return wrapper + _update_wrapper.__doc__ = functools.update_wrapper.__doc__ + + def wraps(wrapped, assigned=functools.WRAPPER_ASSIGNMENTS, + updated=functools.WRAPPER_UPDATES): + return functools.partial(_update_wrapper, wrapped=wrapped, + assigned=assigned, updated=updated) + wraps.__doc__ = functools.wraps.__doc__ + +else: + wraps = functools.wraps + + +def with_metaclass(meta, *bases): + """Create a base class with a metaclass.""" + # This requires a bit of explanation: the basic idea is to make a dummy + # metaclass for one level of class instantiation that replaces itself with + # the actual metaclass. + class metaclass(type): + + def __new__(cls, name, this_bases, d): + if sys.version_info[:2] >= (3, 7): + # This version introduced PEP 560 that requires a bit + # of extra care (we mimic what is done by __build_class__). + resolved_bases = types.resolve_bases(bases) + if resolved_bases is not bases: + d['__orig_bases__'] = bases + else: + resolved_bases = bases + return meta(name, resolved_bases, d) + + @classmethod + def __prepare__(cls, name, this_bases): + return meta.__prepare__(name, bases) + return type.__new__(metaclass, 'temporary_class', (), {}) + + +def add_metaclass(metaclass): + """Class decorator for creating a class with a metaclass.""" + def wrapper(cls): + orig_vars = cls.__dict__.copy() + slots = orig_vars.get('__slots__') + if slots is not None: + if isinstance(slots, str): + slots = [slots] + for slots_var in slots: + orig_vars.pop(slots_var) + orig_vars.pop('__dict__', None) + orig_vars.pop('__weakref__', None) + if hasattr(cls, '__qualname__'): + orig_vars['__qualname__'] = cls.__qualname__ + return metaclass(cls.__name__, cls.__bases__, orig_vars) + return wrapper + + +def ensure_binary(s, encoding='utf-8', errors='strict'): + """Coerce **s** to six.binary_type. + + For Python 2: + - `unicode` -> encoded to `str` + - `str` -> `str` + + For Python 3: + - `str` -> encoded to `bytes` + - `bytes` -> `bytes` + """ + if isinstance(s, binary_type): + return s + if isinstance(s, text_type): + return s.encode(encoding, errors) + raise TypeError("not expecting type '%s'" % type(s)) + + +def ensure_str(s, encoding='utf-8', errors='strict'): + """Coerce *s* to `str`. + + For Python 2: + - `unicode` -> encoded to `str` + - `str` -> `str` + + For Python 3: + - `str` -> `str` + - `bytes` -> decoded to `str` + """ + # Optimization: Fast return for the common case. + if type(s) is str: + return s + if PY2 and isinstance(s, text_type): + return s.encode(encoding, errors) + elif PY3 and isinstance(s, binary_type): + return s.decode(encoding, errors) + elif not isinstance(s, (text_type, binary_type)): + raise TypeError("not expecting type '%s'" % type(s)) + return s + + +def ensure_text(s, encoding='utf-8', errors='strict'): + """Coerce *s* to six.text_type. + + For Python 2: + - `unicode` -> `unicode` + - `str` -> `unicode` + + For Python 3: + - `str` -> `str` + - `bytes` -> decoded to `str` + """ + if isinstance(s, binary_type): + return s.decode(encoding, errors) + elif isinstance(s, text_type): + return s + else: + raise TypeError("not expecting type '%s'" % type(s)) + + +def python_2_unicode_compatible(klass): + """ + A class decorator that defines __unicode__ and __str__ methods under Python 2. + Under Python 3 it does nothing. + + To support Python 2 and 3 with a single code base, define a __str__ method + returning text and apply this decorator to the class. + """ + if PY2: + if '__str__' not in klass.__dict__: + raise ValueError("@python_2_unicode_compatible cannot be applied " + "to %s because it doesn't define __str__()." % + klass.__name__) + klass.__unicode__ = klass.__str__ + klass.__str__ = lambda self: self.__unicode__().encode('utf-8') + return klass + + +# Complete the moves implementation. +# This code is at the end of this module to speed up module loading. +# Turn this module into a package. +__path__ = [] # required for PEP 302 and PEP 451 +__package__ = __name__ # see PEP 366 @ReservedAssignment +if globals().get("__spec__") is not None: + __spec__.submodule_search_locations = [] # PEP 451 @UndefinedVariable +# Remove other six meta path importers, since they cause problems. This can +# happen if six is removed from sys.modules and then reloaded. (Setuptools does +# this for some reason.) +if sys.meta_path: + for i, importer in enumerate(sys.meta_path): + # Here's some real nastiness: Another "instance" of the six module might + # be floating around. Therefore, we can't use isinstance() to check for + # the six meta path importer, since the other six instance will have + # inserted an importer with different class. + if (type(importer).__name__ == "_SixMetaPathImporter" and + importer.name == __name__): + del sys.meta_path[i] + break + del i, importer +# Finally, add the importer to the meta path import hook. +sys.meta_path.append(_importer) diff --git a/frogpilot/third_party/typing_extensions.py b/frogpilot/third_party/typing_extensions.py new file mode 100644 index 000000000..77f33e161 --- /dev/null +++ b/frogpilot/third_party/typing_extensions.py @@ -0,0 +1,4317 @@ +import abc +import builtins +import collections +import collections.abc +import contextlib +import enum +import functools +import inspect +import io +import keyword +import operator +import sys +import types as _types +import typing +import warnings + +# Breakpoint: https://github.com/python/cpython/pull/119891 +if sys.version_info >= (3, 14): + import annotationlib + +__all__ = [ + # Super-special typing primitives. + 'Any', + 'ClassVar', + 'Concatenate', + 'Final', + 'LiteralString', + 'ParamSpec', + 'ParamSpecArgs', + 'ParamSpecKwargs', + 'Self', + 'Type', + 'TypeVar', + 'TypeVarTuple', + 'Unpack', + + # ABCs (from collections.abc). + 'Awaitable', + 'AsyncIterator', + 'AsyncIterable', + 'Coroutine', + 'AsyncGenerator', + 'AsyncContextManager', + 'Buffer', + 'ChainMap', + + # Concrete collection types. + 'ContextManager', + 'Counter', + 'Deque', + 'DefaultDict', + 'NamedTuple', + 'OrderedDict', + 'TypedDict', + + # Structural checks, a.k.a. protocols. + 'SupportsAbs', + 'SupportsBytes', + 'SupportsComplex', + 'SupportsFloat', + 'SupportsIndex', + 'SupportsInt', + 'SupportsRound', + 'Reader', + 'Writer', + + # One-off things. + 'Annotated', + 'assert_never', + 'assert_type', + 'clear_overloads', + 'dataclass_transform', + 'deprecated', + 'disjoint_base', + 'Doc', + 'evaluate_forward_ref', + 'get_overloads', + 'final', + 'Format', + 'get_annotations', + 'get_args', + 'get_origin', + 'get_original_bases', + 'get_protocol_members', + 'get_type_hints', + 'IntVar', + 'is_protocol', + 'is_typeddict', + 'Literal', + 'NewType', + 'overload', + 'override', + 'Protocol', + 'Sentinel', + 'reveal_type', + 'runtime', + 'runtime_checkable', + 'Text', + 'TypeAlias', + 'TypeAliasType', + 'TypeForm', + 'TypeGuard', + 'TypeIs', + 'TYPE_CHECKING', + 'type_repr', + 'Never', + 'NoReturn', + 'ReadOnly', + 'Required', + 'NotRequired', + 'NoDefault', + 'NoExtraItems', + + # Pure aliases, have always been in typing + 'AbstractSet', + 'AnyStr', + 'BinaryIO', + 'Callable', + 'Collection', + 'Container', + 'Dict', + 'ForwardRef', + 'FrozenSet', + 'Generator', + 'Generic', + 'Hashable', + 'IO', + 'ItemsView', + 'Iterable', + 'Iterator', + 'KeysView', + 'List', + 'Mapping', + 'MappingView', + 'Match', + 'MutableMapping', + 'MutableSequence', + 'MutableSet', + 'Optional', + 'Pattern', + 'Reversible', + 'Sequence', + 'Set', + 'Sized', + 'TextIO', + 'Tuple', + 'Union', + 'ValuesView', + 'cast', + 'no_type_check', + 'no_type_check_decorator', +] + +# for backward compatibility +PEP_560 = True +GenericMeta = type +# Breakpoint: https://github.com/python/cpython/pull/116129 +_PEP_696_IMPLEMENTED = sys.version_info >= (3, 13, 0, "beta") + +# Added with bpo-45166 to 3.10.1+ and some 3.9 versions +_FORWARD_REF_HAS_CLASS = "__forward_is_class__" in typing.ForwardRef.__slots__ + +# The functions below are modified copies of typing internal helpers. +# They are needed by _ProtocolMeta and they provide support for PEP 646. + + +class _Sentinel: + def __repr__(self): + return "" + + +_marker = _Sentinel() + + +# Breakpoint: https://github.com/python/cpython/pull/27342 +if sys.version_info >= (3, 10): + def _should_collect_from_parameters(t): + return isinstance( + t, (typing._GenericAlias, _types.GenericAlias, _types.UnionType) + ) +else: + def _should_collect_from_parameters(t): + return isinstance(t, (typing._GenericAlias, _types.GenericAlias)) + + +NoReturn = typing.NoReturn + +# Some unconstrained type variables. These are used by the container types. +# (These are not for export.) +T = typing.TypeVar('T') # Any type. +KT = typing.TypeVar('KT') # Key type. +VT = typing.TypeVar('VT') # Value type. +T_co = typing.TypeVar('T_co', covariant=True) # Any type covariant containers. +T_contra = typing.TypeVar('T_contra', contravariant=True) # Ditto contravariant. + + +# Breakpoint: https://github.com/python/cpython/pull/31841 +if sys.version_info >= (3, 11): + from typing import Any +else: + + class _AnyMeta(type): + def __instancecheck__(self, obj): + if self is Any: + raise TypeError("typing_extensions.Any cannot be used with isinstance()") + return super().__instancecheck__(obj) + + def __repr__(self): + if self is Any: + return "typing_extensions.Any" + return super().__repr__() + + class Any(metaclass=_AnyMeta): + """Special type indicating an unconstrained type. + - Any is compatible with every type. + - Any assumed to have all methods. + - All values assumed to be instances of Any. + Note that all the above statements are true from the point of view of + static type checkers. At runtime, Any should not be used with instance + checks. + """ + def __new__(cls, *args, **kwargs): + if cls is Any: + raise TypeError("Any cannot be instantiated") + return super().__new__(cls, *args, **kwargs) + + +ClassVar = typing.ClassVar + +# Vendored from cpython typing._SpecialFrom +# Having a separate class means that instances will not be rejected by +# typing._type_check. +class _SpecialForm(typing._Final, _root=True): + __slots__ = ('_name', '__doc__', '_getitem') + + def __init__(self, getitem): + self._getitem = getitem + self._name = getitem.__name__ + self.__doc__ = getitem.__doc__ + + def __getattr__(self, item): + if item in {'__name__', '__qualname__'}: + return self._name + + raise AttributeError(item) + + def __mro_entries__(self, bases): + raise TypeError(f"Cannot subclass {self!r}") + + def __repr__(self): + return f'typing_extensions.{self._name}' + + def __reduce__(self): + return self._name + + def __call__(self, *args, **kwds): + raise TypeError(f"Cannot instantiate {self!r}") + + def __or__(self, other): + return typing.Union[self, other] + + def __ror__(self, other): + return typing.Union[other, self] + + def __instancecheck__(self, obj): + raise TypeError(f"{self} cannot be used with isinstance()") + + def __subclasscheck__(self, cls): + raise TypeError(f"{self} cannot be used with issubclass()") + + @typing._tp_cache + def __getitem__(self, parameters): + return self._getitem(self, parameters) + + +# Note that inheriting from this class means that the object will be +# rejected by typing._type_check, so do not use it if the special form +# is arguably valid as a type by itself. +class _ExtensionsSpecialForm(typing._SpecialForm, _root=True): + def __repr__(self): + return 'typing_extensions.' + self._name + + +Final = typing.Final + +# Breakpoint: https://github.com/python/cpython/pull/30530 +if sys.version_info >= (3, 11): + final = typing.final +else: + # @final exists in 3.8+, but we backport it for all versions + # before 3.11 to keep support for the __final__ attribute. + # See https://bugs.python.org/issue46342 + def final(f): + """This decorator can be used to indicate to type checkers that + the decorated method cannot be overridden, and decorated class + cannot be subclassed. For example: + + class Base: + @final + def done(self) -> None: + ... + class Sub(Base): + def done(self) -> None: # Error reported by type checker + ... + @final + class Leaf: + ... + class Other(Leaf): # Error reported by type checker + ... + + There is no runtime checking of these properties. The decorator + sets the ``__final__`` attribute to ``True`` on the decorated object + to allow runtime introspection. + """ + try: + f.__final__ = True + except (AttributeError, TypeError): + # Skip the attribute silently if it is not writable. + # AttributeError happens if the object has __slots__ or a + # read-only property, TypeError if it's a builtin class. + pass + return f + + +if hasattr(typing, "disjoint_base"): # 3.15 + disjoint_base = typing.disjoint_base +else: + def disjoint_base(cls): + """This decorator marks a class as a disjoint base. + + Child classes of a disjoint base cannot inherit from other disjoint bases that are + not parent classes of the disjoint base. + + For example: + + @disjoint_base + class Disjoint1: pass + + @disjoint_base + class Disjoint2: pass + + class Disjoint3(Disjoint1, Disjoint2): pass # Type checker error + + Type checkers can use knowledge of disjoint bases to detect unreachable code + and determine when two types can overlap. + + See PEP 800.""" + cls.__disjoint_base__ = True + return cls + + +def IntVar(name): + return typing.TypeVar(name) + + +# A Literal bug was fixed in 3.11.0, 3.10.1 and 3.9.8 +# Breakpoint: https://github.com/python/cpython/pull/29334 +if sys.version_info >= (3, 10, 1): + Literal = typing.Literal +else: + def _flatten_literal_params(parameters): + """An internal helper for Literal creation: flatten Literals among parameters""" + params = [] + for p in parameters: + if isinstance(p, _LiteralGenericAlias): + params.extend(p.__args__) + else: + params.append(p) + return tuple(params) + + def _value_and_type_iter(params): + for p in params: + yield p, type(p) + + class _LiteralGenericAlias(typing._GenericAlias, _root=True): + def __eq__(self, other): + if not isinstance(other, _LiteralGenericAlias): + return NotImplemented + these_args_deduped = set(_value_and_type_iter(self.__args__)) + other_args_deduped = set(_value_and_type_iter(other.__args__)) + return these_args_deduped == other_args_deduped + + def __hash__(self): + return hash(frozenset(_value_and_type_iter(self.__args__))) + + class _LiteralForm(_ExtensionsSpecialForm, _root=True): + def __init__(self, doc: str): + self._name = 'Literal' + self._doc = self.__doc__ = doc + + def __getitem__(self, parameters): + if not isinstance(parameters, tuple): + parameters = (parameters,) + + parameters = _flatten_literal_params(parameters) + + val_type_pairs = list(_value_and_type_iter(parameters)) + try: + deduped_pairs = set(val_type_pairs) + except TypeError: + # unhashable parameters + pass + else: + # similar logic to typing._deduplicate on Python 3.9+ + if len(deduped_pairs) < len(val_type_pairs): + new_parameters = [] + for pair in val_type_pairs: + if pair in deduped_pairs: + new_parameters.append(pair[0]) + deduped_pairs.remove(pair) + assert not deduped_pairs, deduped_pairs + parameters = tuple(new_parameters) + + return _LiteralGenericAlias(self, parameters) + + Literal = _LiteralForm(doc="""\ + A type that can be used to indicate to type checkers + that the corresponding value has a value literally equivalent + to the provided parameter. For example: + + var: Literal[4] = 4 + + The type checker understands that 'var' is literally equal to + the value 4 and no other value. + + Literal[...] cannot be subclassed. There is no runtime + checking verifying that the parameter is actually a value + instead of a type.""") + + +_overload_dummy = typing._overload_dummy + + +if hasattr(typing, "get_overloads"): # 3.11+ + overload = typing.overload + get_overloads = typing.get_overloads + clear_overloads = typing.clear_overloads +else: + # {module: {qualname: {firstlineno: func}}} + _overload_registry = collections.defaultdict( + functools.partial(collections.defaultdict, dict) + ) + + def overload(func): + """Decorator for overloaded functions/methods. + + In a stub file, place two or more stub definitions for the same + function in a row, each decorated with @overload. For example: + + @overload + def utf8(value: None) -> None: ... + @overload + def utf8(value: bytes) -> bytes: ... + @overload + def utf8(value: str) -> bytes: ... + + In a non-stub file (i.e. a regular .py file), do the same but + follow it with an implementation. The implementation should *not* + be decorated with @overload. For example: + + @overload + def utf8(value: None) -> None: ... + @overload + def utf8(value: bytes) -> bytes: ... + @overload + def utf8(value: str) -> bytes: ... + def utf8(value): + # implementation goes here + + The overloads for a function can be retrieved at runtime using the + get_overloads() function. + """ + # classmethod and staticmethod + f = getattr(func, "__func__", func) + try: + _overload_registry[f.__module__][f.__qualname__][ + f.__code__.co_firstlineno + ] = func + except AttributeError: + # Not a normal function; ignore. + pass + return _overload_dummy + + def get_overloads(func): + """Return all defined overloads for *func* as a sequence.""" + # classmethod and staticmethod + f = getattr(func, "__func__", func) + if f.__module__ not in _overload_registry: + return [] + mod_dict = _overload_registry[f.__module__] + if f.__qualname__ not in mod_dict: + return [] + return list(mod_dict[f.__qualname__].values()) + + def clear_overloads(): + """Clear all overloads in the registry.""" + _overload_registry.clear() + + +# This is not a real generic class. Don't use outside annotations. +Type = typing.Type + +# Various ABCs mimicking those in collections.abc. +# A few are simply re-exported for completeness. +Awaitable = typing.Awaitable +Coroutine = typing.Coroutine +AsyncIterable = typing.AsyncIterable +AsyncIterator = typing.AsyncIterator +Deque = typing.Deque +DefaultDict = typing.DefaultDict +OrderedDict = typing.OrderedDict +Counter = typing.Counter +ChainMap = typing.ChainMap +Text = typing.Text +TYPE_CHECKING = typing.TYPE_CHECKING + + +# Breakpoint: https://github.com/python/cpython/pull/118681 +if sys.version_info >= (3, 13, 0, "beta"): + from typing import AsyncContextManager, AsyncGenerator, ContextManager, Generator +else: + def _is_dunder(attr): + return attr.startswith('__') and attr.endswith('__') + + + class _SpecialGenericAlias(typing._SpecialGenericAlias, _root=True): + def __init__(self, origin, nparams, *, inst=True, name=None, defaults=()): + super().__init__(origin, nparams, inst=inst, name=name) + self._defaults = defaults + + def __setattr__(self, attr, val): + allowed_attrs = {'_name', '_inst', '_nparams', '_defaults'} + if _is_dunder(attr) or attr in allowed_attrs: + object.__setattr__(self, attr, val) + else: + setattr(self.__origin__, attr, val) + + @typing._tp_cache + def __getitem__(self, params): + if not isinstance(params, tuple): + params = (params,) + msg = "Parameters to generic types must be types." + params = tuple(typing._type_check(p, msg) for p in params) + if ( + self._defaults + and len(params) < self._nparams + and len(params) + len(self._defaults) >= self._nparams + ): + params = (*params, *self._defaults[len(params) - self._nparams:]) + actual_len = len(params) + + if actual_len != self._nparams: + if self._defaults: + expected = f"at least {self._nparams - len(self._defaults)}" + else: + expected = str(self._nparams) + if not self._nparams: + raise TypeError(f"{self} is not a generic class") + raise TypeError( + f"Too {'many' if actual_len > self._nparams else 'few'}" + f" arguments for {self};" + f" actual {actual_len}, expected {expected}" + ) + return self.copy_with(params) + + _NoneType = type(None) + Generator = _SpecialGenericAlias( + collections.abc.Generator, 3, defaults=(_NoneType, _NoneType) + ) + AsyncGenerator = _SpecialGenericAlias( + collections.abc.AsyncGenerator, 2, defaults=(_NoneType,) + ) + ContextManager = _SpecialGenericAlias( + contextlib.AbstractContextManager, + 2, + name="ContextManager", + defaults=(typing.Optional[bool],) + ) + AsyncContextManager = _SpecialGenericAlias( + contextlib.AbstractAsyncContextManager, + 2, + name="AsyncContextManager", + defaults=(typing.Optional[bool],) + ) + + +_PROTO_ALLOWLIST = { + 'collections.abc': [ + 'Callable', 'Awaitable', 'Iterable', 'Iterator', 'AsyncIterable', + 'Hashable', 'Sized', 'Container', 'Collection', 'Reversible', 'Buffer', + ], + 'contextlib': ['AbstractContextManager', 'AbstractAsyncContextManager'], + 'typing_extensions': ['Buffer'], +} + + +_EXCLUDED_ATTRS = frozenset(typing.EXCLUDED_ATTRIBUTES) | { + "__match_args__", "__protocol_attrs__", "__non_callable_proto_members__", + "__final__", +} + + +def _get_protocol_attrs(cls): + attrs = set() + for base in cls.__mro__[:-1]: # without object + if base.__name__ in {'Protocol', 'Generic'}: + continue + annotations = getattr(base, '__annotations__', {}) + for attr in (*base.__dict__, *annotations): + if (not attr.startswith('_abc_') and attr not in _EXCLUDED_ATTRS): + attrs.add(attr) + return attrs + + +def _caller(depth=1, default='__main__'): + try: + return sys._getframemodulename(depth + 1) or default + except AttributeError: # For platforms without _getframemodulename() + pass + try: + return sys._getframe(depth + 1).f_globals.get('__name__', default) + except (AttributeError, ValueError): # For platforms without _getframe() + pass + return None + + +# `__match_args__` attribute was removed from protocol members in 3.13, +# we want to backport this change to older Python versions. +# Breakpoint: https://github.com/python/cpython/pull/110683 +if sys.version_info >= (3, 13): + Protocol = typing.Protocol +else: + def _allow_reckless_class_checks(depth=2): + """Allow instance and class checks for special stdlib modules. + The abc and functools modules indiscriminately call isinstance() and + issubclass() on the whole MRO of a user class, which may contain protocols. + """ + return _caller(depth) in {'abc', 'functools', None} + + def _no_init(self, *args, **kwargs): + if type(self)._is_protocol: + raise TypeError('Protocols cannot be instantiated') + + def _type_check_issubclass_arg_1(arg): + """Raise TypeError if `arg` is not an instance of `type` + in `issubclass(arg, )`. + + In most cases, this is verified by type.__subclasscheck__. + Checking it again unnecessarily would slow down issubclass() checks, + so, we don't perform this check unless we absolutely have to. + + For various error paths, however, + we want to ensure that *this* error message is shown to the user + where relevant, rather than a typing.py-specific error message. + """ + if not isinstance(arg, type): + # Same error message as for issubclass(1, int). + raise TypeError('issubclass() arg 1 must be a class') + + # Inheriting from typing._ProtocolMeta isn't actually desirable, + # but is necessary to allow typing.Protocol and typing_extensions.Protocol + # to mix without getting TypeErrors about "metaclass conflict" + class _ProtocolMeta(type(typing.Protocol)): + # This metaclass is somewhat unfortunate, + # but is necessary for several reasons... + # + # NOTE: DO NOT call super() in any methods in this class + # That would call the methods on typing._ProtocolMeta on Python <=3.11 + # and those are slow + def __new__(mcls, name, bases, namespace, **kwargs): + if name == "Protocol" and len(bases) < 2: + pass + elif {Protocol, typing.Protocol} & set(bases): + for base in bases: + if not ( + base in {object, typing.Generic, Protocol, typing.Protocol} + or base.__name__ in _PROTO_ALLOWLIST.get(base.__module__, []) + or is_protocol(base) + ): + raise TypeError( + f"Protocols can only inherit from other protocols, " + f"got {base!r}" + ) + return abc.ABCMeta.__new__(mcls, name, bases, namespace, **kwargs) + + def __init__(cls, *args, **kwargs): + abc.ABCMeta.__init__(cls, *args, **kwargs) + if getattr(cls, "_is_protocol", False): + cls.__protocol_attrs__ = _get_protocol_attrs(cls) + + def __subclasscheck__(cls, other): + if cls is Protocol: + return type.__subclasscheck__(cls, other) + if ( + getattr(cls, '_is_protocol', False) + and not _allow_reckless_class_checks() + ): + if not getattr(cls, '_is_runtime_protocol', False): + _type_check_issubclass_arg_1(other) + raise TypeError( + "Instance and class checks can only be used with " + "@runtime_checkable protocols" + ) + if ( + # this attribute is set by @runtime_checkable: + cls.__non_callable_proto_members__ + and cls.__dict__.get("__subclasshook__") is _proto_hook + ): + _type_check_issubclass_arg_1(other) + non_method_attrs = sorted(cls.__non_callable_proto_members__) + raise TypeError( + "Protocols with non-method members don't support issubclass()." + f" Non-method members: {str(non_method_attrs)[1:-1]}." + ) + return abc.ABCMeta.__subclasscheck__(cls, other) + + def __instancecheck__(cls, instance): + # We need this method for situations where attributes are + # assigned in __init__. + if cls is Protocol: + return type.__instancecheck__(cls, instance) + if not getattr(cls, "_is_protocol", False): + # i.e., it's a concrete subclass of a protocol + return abc.ABCMeta.__instancecheck__(cls, instance) + + if ( + not getattr(cls, '_is_runtime_protocol', False) and + not _allow_reckless_class_checks() + ): + raise TypeError("Instance and class checks can only be used with" + " @runtime_checkable protocols") + + if abc.ABCMeta.__instancecheck__(cls, instance): + return True + + for attr in cls.__protocol_attrs__: + try: + val = inspect.getattr_static(instance, attr) + except AttributeError: + break + # this attribute is set by @runtime_checkable: + if val is None and attr not in cls.__non_callable_proto_members__: + break + else: + return True + + return False + + def __eq__(cls, other): + # Hack so that typing.Generic.__class_getitem__ + # treats typing_extensions.Protocol + # as equivalent to typing.Protocol + if abc.ABCMeta.__eq__(cls, other) is True: + return True + return cls is Protocol and other is typing.Protocol + + # This has to be defined, or the abc-module cache + # complains about classes with this metaclass being unhashable, + # if we define only __eq__! + def __hash__(cls) -> int: + return type.__hash__(cls) + + @classmethod + def _proto_hook(cls, other): + if not cls.__dict__.get('_is_protocol', False): + return NotImplemented + + for attr in cls.__protocol_attrs__: + for base in other.__mro__: + # Check if the members appears in the class dictionary... + if attr in base.__dict__: + if base.__dict__[attr] is None: + return NotImplemented + break + + # ...or in annotations, if it is a sub-protocol. + annotations = getattr(base, '__annotations__', {}) + if ( + isinstance(annotations, collections.abc.Mapping) + and attr in annotations + and is_protocol(other) + ): + break + else: + return NotImplemented + return True + + class Protocol(typing.Generic, metaclass=_ProtocolMeta): + __doc__ = typing.Protocol.__doc__ + __slots__ = () + _is_protocol = True + _is_runtime_protocol = False + + def __init_subclass__(cls, *args, **kwargs): + super().__init_subclass__(*args, **kwargs) + + # Determine if this is a protocol or a concrete subclass. + if not cls.__dict__.get('_is_protocol', False): + cls._is_protocol = any(b is Protocol for b in cls.__bases__) + + # Set (or override) the protocol subclass hook. + if '__subclasshook__' not in cls.__dict__: + cls.__subclasshook__ = _proto_hook + + # Prohibit instantiation for protocol classes + if cls._is_protocol and cls.__init__ is Protocol.__init__: + cls.__init__ = _no_init + + +# Breakpoint: https://github.com/python/cpython/pull/113401 +if sys.version_info >= (3, 13): + runtime_checkable = typing.runtime_checkable +else: + def runtime_checkable(cls): + """Mark a protocol class as a runtime protocol. + + Such protocol can be used with isinstance() and issubclass(). + Raise TypeError if applied to a non-protocol class. + This allows a simple-minded structural check very similar to + one trick ponies in collections.abc such as Iterable. + + For example:: + + @runtime_checkable + class Closable(Protocol): + def close(self): ... + + assert isinstance(open('/some/file'), Closable) + + Warning: this will check only the presence of the required methods, + not their type signatures! + """ + if not issubclass(cls, typing.Generic) or not getattr(cls, '_is_protocol', False): + raise TypeError(f'@runtime_checkable can be only applied to protocol classes,' + f' got {cls!r}') + cls._is_runtime_protocol = True + + # typing.Protocol classes on <=3.11 break if we execute this block, + # because typing.Protocol classes on <=3.11 don't have a + # `__protocol_attrs__` attribute, and this block relies on the + # `__protocol_attrs__` attribute. Meanwhile, typing.Protocol classes on 3.12.2+ + # break if we *don't* execute this block, because *they* assume that all + # protocol classes have a `__non_callable_proto_members__` attribute + # (which this block sets) + if isinstance(cls, _ProtocolMeta) or sys.version_info >= (3, 12, 2): + # PEP 544 prohibits using issubclass() + # with protocols that have non-method members. + # See gh-113320 for why we compute this attribute here, + # rather than in `_ProtocolMeta.__init__` + cls.__non_callable_proto_members__ = set() + for attr in cls.__protocol_attrs__: + try: + is_callable = callable(getattr(cls, attr, None)) + except Exception as e: + raise TypeError( + f"Failed to determine whether protocol member {attr!r} " + "is a method member" + ) from e + else: + if not is_callable: + cls.__non_callable_proto_members__.add(attr) + + return cls + + +# The "runtime" alias exists for backwards compatibility. +runtime = runtime_checkable + + +# Our version of runtime-checkable protocols is faster on Python <=3.11 +# Breakpoint: https://github.com/python/cpython/pull/112717 +if sys.version_info >= (3, 12): + SupportsInt = typing.SupportsInt + SupportsFloat = typing.SupportsFloat + SupportsComplex = typing.SupportsComplex + SupportsBytes = typing.SupportsBytes + SupportsIndex = typing.SupportsIndex + SupportsAbs = typing.SupportsAbs + SupportsRound = typing.SupportsRound +else: + @runtime_checkable + class SupportsInt(Protocol): + """An ABC with one abstract method __int__.""" + __slots__ = () + + @abc.abstractmethod + def __int__(self) -> int: + pass + + @runtime_checkable + class SupportsFloat(Protocol): + """An ABC with one abstract method __float__.""" + __slots__ = () + + @abc.abstractmethod + def __float__(self) -> float: + pass + + @runtime_checkable + class SupportsComplex(Protocol): + """An ABC with one abstract method __complex__.""" + __slots__ = () + + @abc.abstractmethod + def __complex__(self) -> complex: + pass + + @runtime_checkable + class SupportsBytes(Protocol): + """An ABC with one abstract method __bytes__.""" + __slots__ = () + + @abc.abstractmethod + def __bytes__(self) -> bytes: + pass + + @runtime_checkable + class SupportsIndex(Protocol): + __slots__ = () + + @abc.abstractmethod + def __index__(self) -> int: + pass + + @runtime_checkable + class SupportsAbs(Protocol[T_co]): + """ + An ABC with one abstract method __abs__ that is covariant in its return type. + """ + __slots__ = () + + @abc.abstractmethod + def __abs__(self) -> T_co: + pass + + @runtime_checkable + class SupportsRound(Protocol[T_co]): + """ + An ABC with one abstract method __round__ that is covariant in its return type. + """ + __slots__ = () + + @abc.abstractmethod + def __round__(self, ndigits: int = 0) -> T_co: + pass + + +if hasattr(io, "Reader") and hasattr(io, "Writer"): + Reader = io.Reader + Writer = io.Writer +else: + @runtime_checkable + class Reader(Protocol[T_co]): + """Protocol for simple I/O reader instances. + + This protocol only supports blocking I/O. + """ + + __slots__ = () + + @abc.abstractmethod + def read(self, size: int = ..., /) -> T_co: + """Read data from the input stream and return it. + + If *size* is specified, at most *size* items (bytes/characters) will be + read. + """ + + @runtime_checkable + class Writer(Protocol[T_contra]): + """Protocol for simple I/O writer instances. + + This protocol only supports blocking I/O. + """ + + __slots__ = () + + @abc.abstractmethod + def write(self, data: T_contra, /) -> int: + """Write *data* to the output stream and return the number of items written.""" # noqa: E501 + + +_NEEDS_SINGLETONMETA = ( + not hasattr(typing, "NoDefault") or not hasattr(typing, "NoExtraItems") +) + +if _NEEDS_SINGLETONMETA: + class SingletonMeta(type): + def __setattr__(cls, attr, value): + # TypeError is consistent with the behavior of NoneType + raise TypeError( + f"cannot set {attr!r} attribute of immutable type {cls.__name__!r}" + ) + + +if hasattr(typing, "NoDefault"): + NoDefault = typing.NoDefault +else: + class NoDefaultType(metaclass=SingletonMeta): + """The type of the NoDefault singleton.""" + + __slots__ = () + + def __new__(cls): + return globals().get("NoDefault") or object.__new__(cls) + + def __repr__(self): + return "typing_extensions.NoDefault" + + def __reduce__(self): + return "NoDefault" + + NoDefault = NoDefaultType() + del NoDefaultType + +if hasattr(typing, "NoExtraItems"): + NoExtraItems = typing.NoExtraItems +else: + class NoExtraItemsType(metaclass=SingletonMeta): + """The type of the NoExtraItems singleton.""" + + __slots__ = () + + def __new__(cls): + return globals().get("NoExtraItems") or object.__new__(cls) + + def __repr__(self): + return "typing_extensions.NoExtraItems" + + def __reduce__(self): + return "NoExtraItems" + + NoExtraItems = NoExtraItemsType() + del NoExtraItemsType + +if _NEEDS_SINGLETONMETA: + del SingletonMeta + + +# Update this to something like >=3.13.0b1 if and when +# PEP 728 is implemented in CPython +_PEP_728_IMPLEMENTED = False + +if _PEP_728_IMPLEMENTED: + # The standard library TypedDict in Python 3.9.0/1 does not honour the "total" + # keyword with old-style TypedDict(). See https://bugs.python.org/issue42059 + # The standard library TypedDict below Python 3.11 does not store runtime + # information about optional and required keys when using Required or NotRequired. + # Generic TypedDicts are also impossible using typing.TypedDict on Python <3.11. + # Aaaand on 3.12 we add __orig_bases__ to TypedDict + # to enable better runtime introspection. + # On 3.13 we deprecate some odd ways of creating TypedDicts. + # Also on 3.13, PEP 705 adds the ReadOnly[] qualifier. + # PEP 728 (still pending) makes more changes. + TypedDict = typing.TypedDict + _TypedDictMeta = typing._TypedDictMeta + is_typeddict = typing.is_typeddict +else: + # 3.10.0 and later + _TAKES_MODULE = "module" in inspect.signature(typing._type_check).parameters + + def _get_typeddict_qualifiers(annotation_type): + while True: + annotation_origin = get_origin(annotation_type) + if annotation_origin is Annotated: + annotation_args = get_args(annotation_type) + if annotation_args: + annotation_type = annotation_args[0] + else: + break + elif annotation_origin is Required: + yield Required + annotation_type, = get_args(annotation_type) + elif annotation_origin is NotRequired: + yield NotRequired + annotation_type, = get_args(annotation_type) + elif annotation_origin is ReadOnly: + yield ReadOnly + annotation_type, = get_args(annotation_type) + else: + break + + class _TypedDictMeta(type): + + def __new__(cls, name, bases, ns, *, total=True, closed=None, + extra_items=NoExtraItems): + """Create new typed dict class object. + + This method is called when TypedDict is subclassed, + or when TypedDict is instantiated. This way + TypedDict supports all three syntax forms described in its docstring. + Subclasses and instances of TypedDict return actual dictionaries. + """ + for base in bases: + if type(base) is not _TypedDictMeta and base is not typing.Generic: + raise TypeError('cannot inherit from both a TypedDict type ' + 'and a non-TypedDict base class') + if closed is not None and extra_items is not NoExtraItems: + raise TypeError(f"Cannot combine closed={closed!r} and extra_items") + + if any(issubclass(b, typing.Generic) for b in bases): + generic_base = (typing.Generic,) + else: + generic_base = () + + ns_annotations = ns.pop('__annotations__', None) + + # typing.py generally doesn't let you inherit from plain Generic, unless + # the name of the class happens to be "Protocol" + tp_dict = type.__new__(_TypedDictMeta, "Protocol", (*generic_base, dict), ns) + tp_dict.__name__ = name + if tp_dict.__qualname__ == "Protocol": + tp_dict.__qualname__ = name + + if not hasattr(tp_dict, '__orig_bases__'): + tp_dict.__orig_bases__ = bases + + annotations = {} + own_annotate = None + if ns_annotations is not None: + own_annotations = ns_annotations + elif sys.version_info >= (3, 14): + if hasattr(annotationlib, "get_annotate_from_class_namespace"): + own_annotate = annotationlib.get_annotate_from_class_namespace(ns) + else: + # 3.14.0a7 and earlier + own_annotate = ns.get("__annotate__") + if own_annotate is not None: + own_annotations = annotationlib.call_annotate_function( + own_annotate, Format.FORWARDREF, owner=tp_dict + ) + else: + own_annotations = {} + else: + own_annotations = {} + msg = "TypedDict('Name', {f0: t0, f1: t1, ...}); each t must be a type" + if _TAKES_MODULE: + own_checked_annotations = { + n: typing._type_check(tp, msg, module=tp_dict.__module__) + for n, tp in own_annotations.items() + } + else: + own_checked_annotations = { + n: typing._type_check(tp, msg) + for n, tp in own_annotations.items() + } + required_keys = set() + optional_keys = set() + readonly_keys = set() + mutable_keys = set() + extra_items_type = extra_items + + for base in bases: + base_dict = base.__dict__ + + if sys.version_info <= (3, 14): + annotations.update(base_dict.get('__annotations__', {})) + required_keys.update(base_dict.get('__required_keys__', ())) + optional_keys.update(base_dict.get('__optional_keys__', ())) + readonly_keys.update(base_dict.get('__readonly_keys__', ())) + mutable_keys.update(base_dict.get('__mutable_keys__', ())) + + # This was specified in an earlier version of PEP 728. Support + # is retained for backwards compatibility, but only for Python + # 3.13 and lower. + if (closed and sys.version_info < (3, 14) + and "__extra_items__" in own_checked_annotations): + annotation_type = own_checked_annotations.pop("__extra_items__") + qualifiers = set(_get_typeddict_qualifiers(annotation_type)) + if Required in qualifiers: + raise TypeError( + "Special key __extra_items__ does not support " + "Required" + ) + if NotRequired in qualifiers: + raise TypeError( + "Special key __extra_items__ does not support " + "NotRequired" + ) + extra_items_type = annotation_type + + annotations.update(own_checked_annotations) + for annotation_key, annotation_type in own_checked_annotations.items(): + qualifiers = set(_get_typeddict_qualifiers(annotation_type)) + + if Required in qualifiers: + required_keys.add(annotation_key) + elif NotRequired in qualifiers: + optional_keys.add(annotation_key) + elif total: + required_keys.add(annotation_key) + else: + optional_keys.add(annotation_key) + if ReadOnly in qualifiers: + mutable_keys.discard(annotation_key) + readonly_keys.add(annotation_key) + else: + mutable_keys.add(annotation_key) + readonly_keys.discard(annotation_key) + + # Breakpoint: https://github.com/python/cpython/pull/119891 + if sys.version_info >= (3, 14): + def __annotate__(format): + annos = {} + for base in bases: + if base is Generic: + continue + base_annotate = base.__annotate__ + if base_annotate is None: + continue + base_annos = annotationlib.call_annotate_function( + base_annotate, format, owner=base) + annos.update(base_annos) + if own_annotate is not None: + own = annotationlib.call_annotate_function( + own_annotate, format, owner=tp_dict) + if format != Format.STRING: + own = { + n: typing._type_check(tp, msg, module=tp_dict.__module__) + for n, tp in own.items() + } + elif format == Format.STRING: + own = annotationlib.annotations_to_string(own_annotations) + elif format in (Format.FORWARDREF, Format.VALUE): + own = own_checked_annotations + else: + raise NotImplementedError(format) + annos.update(own) + return annos + + tp_dict.__annotate__ = __annotate__ + else: + tp_dict.__annotations__ = annotations + tp_dict.__required_keys__ = frozenset(required_keys) + tp_dict.__optional_keys__ = frozenset(optional_keys) + tp_dict.__readonly_keys__ = frozenset(readonly_keys) + tp_dict.__mutable_keys__ = frozenset(mutable_keys) + tp_dict.__total__ = total + tp_dict.__closed__ = closed + tp_dict.__extra_items__ = extra_items_type + return tp_dict + + __call__ = dict # static method + + def __subclasscheck__(cls, other): + # Typed dicts are only for static structural subtyping. + raise TypeError('TypedDict does not support instance and class checks') + + __instancecheck__ = __subclasscheck__ + + _TypedDict = type.__new__(_TypedDictMeta, 'TypedDict', (), {}) + + def _create_typeddict( + typename, + fields, + /, + *, + typing_is_inline, + total, + closed, + extra_items, + **kwargs, + ): + if fields is _marker or fields is None: + if fields is _marker: + deprecated_thing = ( + "Failing to pass a value for the 'fields' parameter" + ) + else: + deprecated_thing = "Passing `None` as the 'fields' parameter" + + example = f"`{typename} = TypedDict({typename!r}, {{}})`" + deprecation_msg = ( + f"{deprecated_thing} is deprecated and will be disallowed in " + "Python 3.15. To create a TypedDict class with 0 fields " + "using the functional syntax, pass an empty dictionary, e.g. " + ) + example + "." + warnings.warn(deprecation_msg, DeprecationWarning, stacklevel=2) + # Support a field called "closed" + if closed is not False and closed is not True and closed is not None: + kwargs["closed"] = closed + closed = None + # Or "extra_items" + if extra_items is not NoExtraItems: + kwargs["extra_items"] = extra_items + extra_items = NoExtraItems + fields = kwargs + elif kwargs: + raise TypeError("TypedDict takes either a dict or keyword arguments," + " but not both") + if kwargs: + # Breakpoint: https://github.com/python/cpython/pull/104891 + if sys.version_info >= (3, 13): + raise TypeError("TypedDict takes no keyword arguments") + warnings.warn( + "The kwargs-based syntax for TypedDict definitions is deprecated " + "in Python 3.11, will be removed in Python 3.13, and may not be " + "understood by third-party type checkers.", + DeprecationWarning, + stacklevel=2, + ) + + ns = {'__annotations__': dict(fields)} + module = _caller(depth=4 if typing_is_inline else 2) + if module is not None: + # Setting correct module is necessary to make typed dict classes + # pickleable. + ns['__module__'] = module + + td = _TypedDictMeta(typename, (), ns, total=total, closed=closed, + extra_items=extra_items) + td.__orig_bases__ = (TypedDict,) + return td + + class _TypedDictSpecialForm(_SpecialForm, _root=True): + def __call__( + self, + typename, + fields=_marker, + /, + *, + total=True, + closed=None, + extra_items=NoExtraItems, + **kwargs + ): + return _create_typeddict( + typename, + fields, + typing_is_inline=False, + total=total, + closed=closed, + extra_items=extra_items, + **kwargs, + ) + + def __mro_entries__(self, bases): + return (_TypedDict,) + + @_TypedDictSpecialForm + def TypedDict(self, args): + """A simple typed namespace. At runtime it is equivalent to a plain dict. + + TypedDict creates a dictionary type such that a type checker will expect all + instances to have a certain set of keys, where each key is + associated with a value of a consistent type. This expectation + is not checked at runtime. + + Usage:: + + class Point2D(TypedDict): + x: int + y: int + label: str + + a: Point2D = {'x': 1, 'y': 2, 'label': 'good'} # OK + b: Point2D = {'z': 3, 'label': 'bad'} # Fails type check + + assert Point2D(x=1, y=2, label='first') == dict(x=1, y=2, label='first') + + The type info can be accessed via the Point2D.__annotations__ dict, and + the Point2D.__required_keys__ and Point2D.__optional_keys__ frozensets. + TypedDict supports an additional equivalent form:: + + Point2D = TypedDict('Point2D', {'x': int, 'y': int, 'label': str}) + + By default, all keys must be present in a TypedDict. It is possible + to override this by specifying totality:: + + class Point2D(TypedDict, total=False): + x: int + y: int + + This means that a Point2D TypedDict can have any of the keys omitted. A type + checker is only expected to support a literal False or True as the value of + the total argument. True is the default, and makes all items defined in the + class body be required. + + The Required and NotRequired special forms can also be used to mark + individual keys as being required or not required:: + + class Point2D(TypedDict): + x: int # the "x" key must always be present (Required is the default) + y: NotRequired[int] # the "y" key can be omitted + + See PEP 655 for more details on Required and NotRequired. + """ + # This runs when creating inline TypedDicts: + if not isinstance(args, dict): + raise TypeError( + "TypedDict[...] should be used with a single dict argument" + ) + + return _create_typeddict( + "", + args, + typing_is_inline=True, + total=True, + closed=True, + extra_items=NoExtraItems, + ) + + _TYPEDDICT_TYPES = (typing._TypedDictMeta, _TypedDictMeta) + + def is_typeddict(tp): + """Check if an annotation is a TypedDict class + + For example:: + class Film(TypedDict): + title: str + year: int + + is_typeddict(Film) # => True + is_typeddict(Union[list, str]) # => False + """ + return isinstance(tp, _TYPEDDICT_TYPES) + + +if hasattr(typing, "assert_type"): + assert_type = typing.assert_type + +else: + def assert_type(val, typ, /): + """Assert (to the type checker) that the value is of the given type. + + When the type checker encounters a call to assert_type(), it + emits an error if the value is not of the specified type:: + + def greet(name: str) -> None: + assert_type(name, str) # ok + assert_type(name, int) # type checker error + + At runtime this returns the first argument unchanged and otherwise + does nothing. + """ + return val + + +if hasattr(typing, "ReadOnly"): # 3.13+ + get_type_hints = typing.get_type_hints +else: # <=3.13 + # replaces _strip_annotations() + def _strip_extras(t): + """Strips Annotated, Required and NotRequired from a given type.""" + if isinstance(t, typing._AnnotatedAlias): + return _strip_extras(t.__origin__) + if hasattr(t, "__origin__") and t.__origin__ in (Required, NotRequired, ReadOnly): + return _strip_extras(t.__args__[0]) + if isinstance(t, typing._GenericAlias): + stripped_args = tuple(_strip_extras(a) for a in t.__args__) + if stripped_args == t.__args__: + return t + return t.copy_with(stripped_args) + if hasattr(_types, "GenericAlias") and isinstance(t, _types.GenericAlias): + stripped_args = tuple(_strip_extras(a) for a in t.__args__) + if stripped_args == t.__args__: + return t + return _types.GenericAlias(t.__origin__, stripped_args) + if hasattr(_types, "UnionType") and isinstance(t, _types.UnionType): + stripped_args = tuple(_strip_extras(a) for a in t.__args__) + if stripped_args == t.__args__: + return t + return functools.reduce(operator.or_, stripped_args) + + return t + + def get_type_hints(obj, globalns=None, localns=None, include_extras=False): + """Return type hints for an object. + + This is often the same as obj.__annotations__, but it handles + forward references encoded as string literals, adds Optional[t] if a + default value equal to None is set and recursively replaces all + 'Annotated[T, ...]', 'Required[T]' or 'NotRequired[T]' with 'T' + (unless 'include_extras=True'). + + The argument may be a module, class, method, or function. The annotations + are returned as a dictionary. For classes, annotations include also + inherited members. + + TypeError is raised if the argument is not of a type that can contain + annotations, and an empty dictionary is returned if no annotations are + present. + + BEWARE -- the behavior of globalns and localns is counterintuitive + (unless you are familiar with how eval() and exec() work). The + search order is locals first, then globals. + + - If no dict arguments are passed, an attempt is made to use the + globals from obj (or the respective module's globals for classes), + and these are also used as the locals. If the object does not appear + to have globals, an empty dictionary is used. + + - If one dict argument is passed, it is used for both globals and + locals. + + - If two dict arguments are passed, they specify globals and + locals, respectively. + """ + hint = typing.get_type_hints( + obj, globalns=globalns, localns=localns, include_extras=True + ) + # Breakpoint: https://github.com/python/cpython/pull/30304 + if sys.version_info < (3, 11): + _clean_optional(obj, hint, globalns, localns) + if include_extras: + return hint + return {k: _strip_extras(t) for k, t in hint.items()} + + _NoneType = type(None) + + def _could_be_inserted_optional(t): + """detects Union[..., None] pattern""" + if not isinstance(t, typing._UnionGenericAlias): + return False + # Assume if last argument is not None they are user defined + if t.__args__[-1] is not _NoneType: + return False + return True + + # < 3.11 + def _clean_optional(obj, hints, globalns=None, localns=None): + # reverts injected Union[..., None] cases from typing.get_type_hints + # when a None default value is used. + # see https://github.com/python/typing_extensions/issues/310 + if not hints or isinstance(obj, type): + return + defaults = typing._get_defaults(obj) # avoid accessing __annotations___ + if not defaults: + return + original_hints = obj.__annotations__ + for name, value in hints.items(): + # Not a Union[..., None] or replacement conditions not fullfilled + if (not _could_be_inserted_optional(value) + or name not in defaults + or defaults[name] is not None + ): + continue + original_value = original_hints[name] + # value=NoneType should have caused a skip above but check for safety + if original_value is None: + original_value = _NoneType + # Forward reference + if isinstance(original_value, str): + if globalns is None: + if isinstance(obj, _types.ModuleType): + globalns = obj.__dict__ + else: + nsobj = obj + # Find globalns for the unwrapped object. + while hasattr(nsobj, '__wrapped__'): + nsobj = nsobj.__wrapped__ + globalns = getattr(nsobj, '__globals__', {}) + if localns is None: + localns = globalns + elif localns is None: + localns = globalns + + original_value = ForwardRef( + original_value, + is_argument=not isinstance(obj, _types.ModuleType) + ) + original_evaluated = typing._eval_type(original_value, globalns, localns) + # Compare if values differ. Note that even if equal + # value might be cached by typing._tp_cache contrary to original_evaluated + if original_evaluated != value or ( + # 3.10: ForwardRefs of UnionType might be turned into _UnionGenericAlias + hasattr(_types, "UnionType") + and isinstance(original_evaluated, _types.UnionType) + and not isinstance(value, _types.UnionType) + ): + hints[name] = original_evaluated + +# Python 3.9 has get_origin() and get_args() but those implementations don't support +# ParamSpecArgs and ParamSpecKwargs, so only Python 3.10's versions will do. +# Breakpoint: https://github.com/python/cpython/pull/25298 +if sys.version_info >= (3, 10): + get_origin = typing.get_origin + get_args = typing.get_args +# 3.9 +else: + def get_origin(tp): + """Get the unsubscripted version of a type. + + This supports generic types, Callable, Tuple, Union, Literal, Final, ClassVar + and Annotated. Return None for unsupported types. Examples:: + + get_origin(Literal[42]) is Literal + get_origin(int) is None + get_origin(ClassVar[int]) is ClassVar + get_origin(Generic) is Generic + get_origin(Generic[T]) is Generic + get_origin(Union[T, int]) is Union + get_origin(List[Tuple[T, T]][int]) == list + get_origin(P.args) is P + """ + if isinstance(tp, typing._AnnotatedAlias): + return Annotated + if isinstance(tp, (typing._BaseGenericAlias, _types.GenericAlias, + ParamSpecArgs, ParamSpecKwargs)): + return tp.__origin__ + if tp is typing.Generic: + return typing.Generic + return None + + def get_args(tp): + """Get type arguments with all substitutions performed. + + For unions, basic simplifications used by Union constructor are performed. + Examples:: + get_args(Dict[str, int]) == (str, int) + get_args(int) == () + get_args(Union[int, Union[T, int], str][int]) == (int, str) + get_args(Union[int, Tuple[T, int]][str]) == (int, Tuple[str, int]) + get_args(Callable[[], T][int]) == ([], int) + """ + if isinstance(tp, typing._AnnotatedAlias): + return (tp.__origin__, *tp.__metadata__) + if isinstance(tp, (typing._GenericAlias, _types.GenericAlias)): + res = tp.__args__ + if get_origin(tp) is collections.abc.Callable and res[0] is not Ellipsis: + res = (list(res[:-1]), res[-1]) + return res + return () + + +# 3.10+ +if hasattr(typing, 'TypeAlias'): + TypeAlias = typing.TypeAlias +# 3.9 +else: + @_ExtensionsSpecialForm + def TypeAlias(self, parameters): + """Special marker indicating that an assignment should + be recognized as a proper type alias definition by type + checkers. + + For example:: + + Predicate: TypeAlias = Callable[..., bool] + + It's invalid when used anywhere except as in the example above. + """ + raise TypeError(f"{self} is not subscriptable") + + +def _set_default(type_param, default): + type_param.has_default = lambda: default is not NoDefault + type_param.__default__ = default + + +def _set_module(typevarlike): + # for pickling: + def_mod = _caller(depth=2) + if def_mod != 'typing_extensions': + typevarlike.__module__ = def_mod + + +class _DefaultMixin: + """Mixin for TypeVarLike defaults.""" + + __slots__ = () + __init__ = _set_default + + +# Classes using this metaclass must provide a _backported_typevarlike ClassVar +class _TypeVarLikeMeta(type): + def __instancecheck__(cls, __instance: Any) -> bool: + return isinstance(__instance, cls._backported_typevarlike) + + +if _PEP_696_IMPLEMENTED: + from typing import TypeVar +else: + # Add default and infer_variance parameters from PEP 696 and 695 + class TypeVar(metaclass=_TypeVarLikeMeta): + """Type variable.""" + + _backported_typevarlike = typing.TypeVar + + def __new__(cls, name, *constraints, bound=None, + covariant=False, contravariant=False, + default=NoDefault, infer_variance=False): + if hasattr(typing, "TypeAliasType"): + # PEP 695 implemented (3.12+), can pass infer_variance to typing.TypeVar + typevar = typing.TypeVar(name, *constraints, bound=bound, + covariant=covariant, contravariant=contravariant, + infer_variance=infer_variance) + else: + typevar = typing.TypeVar(name, *constraints, bound=bound, + covariant=covariant, contravariant=contravariant) + if infer_variance and (covariant or contravariant): + raise ValueError("Variance cannot be specified with infer_variance.") + typevar.__infer_variance__ = infer_variance + + _set_default(typevar, default) + _set_module(typevar) + + def _tvar_prepare_subst(alias, args): + if ( + typevar.has_default() + and alias.__parameters__.index(typevar) == len(args) + ): + args += (typevar.__default__,) + return args + + typevar.__typing_prepare_subst__ = _tvar_prepare_subst + return typevar + + def __init_subclass__(cls) -> None: + raise TypeError(f"type '{__name__}.TypeVar' is not an acceptable base type") + + +# Python 3.10+ has PEP 612 +if hasattr(typing, 'ParamSpecArgs'): + ParamSpecArgs = typing.ParamSpecArgs + ParamSpecKwargs = typing.ParamSpecKwargs +# 3.9 +else: + class _Immutable: + """Mixin to indicate that object should not be copied.""" + __slots__ = () + + def __copy__(self): + return self + + def __deepcopy__(self, memo): + return self + + class ParamSpecArgs(_Immutable): + """The args for a ParamSpec object. + + Given a ParamSpec object P, P.args is an instance of ParamSpecArgs. + + ParamSpecArgs objects have a reference back to their ParamSpec: + + P.args.__origin__ is P + + This type is meant for runtime introspection and has no special meaning to + static type checkers. + """ + def __init__(self, origin): + self.__origin__ = origin + + def __repr__(self): + return f"{self.__origin__.__name__}.args" + + def __eq__(self, other): + if not isinstance(other, ParamSpecArgs): + return NotImplemented + return self.__origin__ == other.__origin__ + + class ParamSpecKwargs(_Immutable): + """The kwargs for a ParamSpec object. + + Given a ParamSpec object P, P.kwargs is an instance of ParamSpecKwargs. + + ParamSpecKwargs objects have a reference back to their ParamSpec: + + P.kwargs.__origin__ is P + + This type is meant for runtime introspection and has no special meaning to + static type checkers. + """ + def __init__(self, origin): + self.__origin__ = origin + + def __repr__(self): + return f"{self.__origin__.__name__}.kwargs" + + def __eq__(self, other): + if not isinstance(other, ParamSpecKwargs): + return NotImplemented + return self.__origin__ == other.__origin__ + + +if _PEP_696_IMPLEMENTED: + from typing import ParamSpec + +# 3.10+ +elif hasattr(typing, 'ParamSpec'): + + # Add default parameter - PEP 696 + class ParamSpec(metaclass=_TypeVarLikeMeta): + """Parameter specification.""" + + _backported_typevarlike = typing.ParamSpec + + def __new__(cls, name, *, bound=None, + covariant=False, contravariant=False, + infer_variance=False, default=NoDefault): + if hasattr(typing, "TypeAliasType"): + # PEP 695 implemented, can pass infer_variance to typing.TypeVar + paramspec = typing.ParamSpec(name, bound=bound, + covariant=covariant, + contravariant=contravariant, + infer_variance=infer_variance) + else: + paramspec = typing.ParamSpec(name, bound=bound, + covariant=covariant, + contravariant=contravariant) + paramspec.__infer_variance__ = infer_variance + + _set_default(paramspec, default) + _set_module(paramspec) + + def _paramspec_prepare_subst(alias, args): + params = alias.__parameters__ + i = params.index(paramspec) + if i == len(args) and paramspec.has_default(): + args = [*args, paramspec.__default__] + if i >= len(args): + raise TypeError(f"Too few arguments for {alias}") + # Special case where Z[[int, str, bool]] == Z[int, str, bool] in PEP 612. + if len(params) == 1 and not typing._is_param_expr(args[0]): + assert i == 0 + args = (args,) + # Convert lists to tuples to help other libraries cache the results. + elif isinstance(args[i], list): + args = (*args[:i], tuple(args[i]), *args[i + 1:]) + return args + + paramspec.__typing_prepare_subst__ = _paramspec_prepare_subst + return paramspec + + def __init_subclass__(cls) -> None: + raise TypeError(f"type '{__name__}.ParamSpec' is not an acceptable base type") + +# 3.9 +else: + + # Inherits from list as a workaround for Callable checks in Python < 3.9.2. + class ParamSpec(list, _DefaultMixin): + """Parameter specification variable. + + Usage:: + + P = ParamSpec('P') + + Parameter specification variables exist primarily for the benefit of static + type checkers. They are used to forward the parameter types of one + callable to another callable, a pattern commonly found in higher order + functions and decorators. They are only valid when used in ``Concatenate``, + or s the first argument to ``Callable``. In Python 3.10 and higher, + they are also supported in user-defined Generics at runtime. + See class Generic for more information on generic types. An + example for annotating a decorator:: + + T = TypeVar('T') + P = ParamSpec('P') + + def add_logging(f: Callable[P, T]) -> Callable[P, T]: + '''A type-safe decorator to add logging to a function.''' + def inner(*args: P.args, **kwargs: P.kwargs) -> T: + logging.info(f'{f.__name__} was called') + return f(*args, **kwargs) + return inner + + @add_logging + def add_two(x: float, y: float) -> float: + '''Add two numbers together.''' + return x + y + + Parameter specification variables defined with covariant=True or + contravariant=True can be used to declare covariant or contravariant + generic types. These keyword arguments are valid, but their actual semantics + are yet to be decided. See PEP 612 for details. + + Parameter specification variables can be introspected. e.g.: + + P.__name__ == 'T' + P.__bound__ == None + P.__covariant__ == False + P.__contravariant__ == False + + Note that only parameter specification variables defined in global scope can + be pickled. + """ + + # Trick Generic __parameters__. + __class__ = typing.TypeVar + + @property + def args(self): + return ParamSpecArgs(self) + + @property + def kwargs(self): + return ParamSpecKwargs(self) + + def __init__(self, name, *, bound=None, covariant=False, contravariant=False, + infer_variance=False, default=NoDefault): + list.__init__(self, [self]) + self.__name__ = name + self.__covariant__ = bool(covariant) + self.__contravariant__ = bool(contravariant) + self.__infer_variance__ = bool(infer_variance) + if bound: + self.__bound__ = typing._type_check(bound, 'Bound must be a type.') + else: + self.__bound__ = None + _DefaultMixin.__init__(self, default) + + # for pickling: + def_mod = _caller() + if def_mod != 'typing_extensions': + self.__module__ = def_mod + + def __repr__(self): + if self.__infer_variance__: + prefix = '' + elif self.__covariant__: + prefix = '+' + elif self.__contravariant__: + prefix = '-' + else: + prefix = '~' + return prefix + self.__name__ + + def __hash__(self): + return object.__hash__(self) + + def __eq__(self, other): + return self is other + + def __reduce__(self): + return self.__name__ + + # Hack to get typing._type_check to pass. + def __call__(self, *args, **kwargs): + pass + + +# 3.9 +if not hasattr(typing, 'Concatenate'): + # Inherits from list as a workaround for Callable checks in Python < 3.9.2. + + # 3.9.0-1 + if not hasattr(typing, '_type_convert'): + def _type_convert(arg, module=None, *, allow_special_forms=False): + """For converting None to type(None), and strings to ForwardRef.""" + if arg is None: + return type(None) + if isinstance(arg, str): + if sys.version_info <= (3, 9, 6): + return ForwardRef(arg) + if sys.version_info <= (3, 9, 7): + return ForwardRef(arg, module=module) + return ForwardRef(arg, module=module, is_class=allow_special_forms) + return arg + else: + _type_convert = typing._type_convert + + class _ConcatenateGenericAlias(list): + + # Trick Generic into looking into this for __parameters__. + __class__ = typing._GenericAlias + + def __init__(self, origin, args): + super().__init__(args) + self.__origin__ = origin + self.__args__ = args + + def __repr__(self): + _type_repr = typing._type_repr + return (f'{_type_repr(self.__origin__)}' + f'[{", ".join(_type_repr(arg) for arg in self.__args__)}]') + + def __hash__(self): + return hash((self.__origin__, self.__args__)) + + # Hack to get typing._type_check to pass in Generic. + def __call__(self, *args, **kwargs): + pass + + @property + def __parameters__(self): + return tuple( + tp for tp in self.__args__ if isinstance(tp, (typing.TypeVar, ParamSpec)) + ) + + # 3.9 used by __getitem__ below + def copy_with(self, params): + if isinstance(params[-1], _ConcatenateGenericAlias): + params = (*params[:-1], *params[-1].__args__) + elif isinstance(params[-1], (list, tuple)): + return (*params[:-1], *params[-1]) + elif (not (params[-1] is ... or isinstance(params[-1], ParamSpec))): + raise TypeError("The last parameter to Concatenate should be a " + "ParamSpec variable or ellipsis.") + return self.__class__(self.__origin__, params) + + # 3.9; accessed during GenericAlias.__getitem__ when substituting + def __getitem__(self, args): + if self.__origin__ in (Generic, Protocol): + # Can't subscript Generic[...] or Protocol[...]. + raise TypeError(f"Cannot subscript already-subscripted {self}") + if not self.__parameters__: + raise TypeError(f"{self} is not a generic class") + + if not isinstance(args, tuple): + args = (args,) + args = _unpack_args(*(_type_convert(p) for p in args)) + params = self.__parameters__ + for param in params: + prepare = getattr(param, "__typing_prepare_subst__", None) + if prepare is not None: + args = prepare(self, args) + # 3.9 & typing.ParamSpec + elif isinstance(param, ParamSpec): + i = params.index(param) + if ( + i == len(args) + and getattr(param, '__default__', NoDefault) is not NoDefault + ): + args = [*args, param.__default__] + if i >= len(args): + raise TypeError(f"Too few arguments for {self}") + # Special case for Z[[int, str, bool]] == Z[int, str, bool] + if len(params) == 1 and not _is_param_expr(args[0]): + assert i == 0 + args = (args,) + elif ( + isinstance(args[i], list) + # 3.9 + # This class inherits from list do not convert + and not isinstance(args[i], _ConcatenateGenericAlias) + ): + args = (*args[:i], tuple(args[i]), *args[i + 1:]) + + alen = len(args) + plen = len(params) + if alen != plen: + raise TypeError( + f"Too {'many' if alen > plen else 'few'} arguments for {self};" + f" actual {alen}, expected {plen}" + ) + + subst = dict(zip(self.__parameters__, args)) + # determine new args + new_args = [] + for arg in self.__args__: + if isinstance(arg, type): + new_args.append(arg) + continue + if isinstance(arg, TypeVar): + arg = subst[arg] + if ( + (isinstance(arg, typing._GenericAlias) and _is_unpack(arg)) + or ( + hasattr(_types, "GenericAlias") + and isinstance(arg, _types.GenericAlias) + and getattr(arg, "__unpacked__", False) + ) + ): + raise TypeError(f"{arg} is not valid as type argument") + + elif isinstance(arg, + typing._GenericAlias + if not hasattr(_types, "GenericAlias") else + (typing._GenericAlias, _types.GenericAlias) + ): + subparams = arg.__parameters__ + if subparams: + subargs = tuple(subst[x] for x in subparams) + arg = arg[subargs] + new_args.append(arg) + return self.copy_with(tuple(new_args)) + +# 3.10+ +else: + _ConcatenateGenericAlias = typing._ConcatenateGenericAlias + + # 3.10 + if sys.version_info < (3, 11): + + class _ConcatenateGenericAlias(typing._ConcatenateGenericAlias, _root=True): + # needed for checks in collections.abc.Callable to accept this class + __module__ = "typing" + + def copy_with(self, params): + if isinstance(params[-1], (list, tuple)): + return (*params[:-1], *params[-1]) + if isinstance(params[-1], typing._ConcatenateGenericAlias): + params = (*params[:-1], *params[-1].__args__) + elif not (params[-1] is ... or isinstance(params[-1], ParamSpec)): + raise TypeError("The last parameter to Concatenate should be a " + "ParamSpec variable or ellipsis.") + return super(typing._ConcatenateGenericAlias, self).copy_with(params) + + def __getitem__(self, args): + value = super().__getitem__(args) + if isinstance(value, tuple) and any(_is_unpack(t) for t in value): + return tuple(_unpack_args(*(n for n in value))) + return value + + +# 3.9.2 +class _EllipsisDummy: ... + + +# <=3.10 +def _create_concatenate_alias(origin, parameters): + if parameters[-1] is ... and sys.version_info < (3, 9, 2): + # Hack: Arguments must be types, replace it with one. + parameters = (*parameters[:-1], _EllipsisDummy) + if sys.version_info >= (3, 10, 3): + concatenate = _ConcatenateGenericAlias(origin, parameters, + _typevar_types=(TypeVar, ParamSpec), + _paramspec_tvars=True) + else: + concatenate = _ConcatenateGenericAlias(origin, parameters) + if parameters[-1] is not _EllipsisDummy: + return concatenate + # Remove dummy again + concatenate.__args__ = tuple(p if p is not _EllipsisDummy else ... + for p in concatenate.__args__) + if sys.version_info < (3, 10): + # backport needs __args__ adjustment only + return concatenate + concatenate.__parameters__ = tuple(p for p in concatenate.__parameters__ + if p is not _EllipsisDummy) + return concatenate + + +# <=3.10 +@typing._tp_cache +def _concatenate_getitem(self, parameters): + if parameters == (): + raise TypeError("Cannot take a Concatenate of no types.") + if not isinstance(parameters, tuple): + parameters = (parameters,) + if not (parameters[-1] is ... or isinstance(parameters[-1], ParamSpec)): + raise TypeError("The last parameter to Concatenate should be a " + "ParamSpec variable or ellipsis.") + msg = "Concatenate[arg, ...]: each arg must be a type." + parameters = (*(typing._type_check(p, msg) for p in parameters[:-1]), + parameters[-1]) + return _create_concatenate_alias(self, parameters) + + +# 3.11+; Concatenate does not accept ellipsis in 3.10 +# Breakpoint: https://github.com/python/cpython/pull/30969 +if sys.version_info >= (3, 11): + Concatenate = typing.Concatenate +# <=3.10 +else: + @_ExtensionsSpecialForm + def Concatenate(self, parameters): + """Used in conjunction with ``ParamSpec`` and ``Callable`` to represent a + higher order function which adds, removes or transforms parameters of a + callable. + + For example:: + + Callable[Concatenate[int, P], int] + + See PEP 612 for detailed information. + """ + return _concatenate_getitem(self, parameters) + + +# 3.10+ +if hasattr(typing, 'TypeGuard'): + TypeGuard = typing.TypeGuard +# 3.9 +else: + @_ExtensionsSpecialForm + def TypeGuard(self, parameters): + """Special typing form used to annotate the return type of a user-defined + type guard function. ``TypeGuard`` only accepts a single type argument. + At runtime, functions marked this way should return a boolean. + + ``TypeGuard`` aims to benefit *type narrowing* -- a technique used by static + type checkers to determine a more precise type of an expression within a + program's code flow. Usually type narrowing is done by analyzing + conditional code flow and applying the narrowing to a block of code. The + conditional expression here is sometimes referred to as a "type guard". + + Sometimes it would be convenient to use a user-defined boolean function + as a type guard. Such a function should use ``TypeGuard[...]`` as its + return type to alert static type checkers to this intention. + + Using ``-> TypeGuard`` tells the static type checker that for a given + function: + + 1. The return value is a boolean. + 2. If the return value is ``True``, the type of its argument + is the type inside ``TypeGuard``. + + For example:: + + def is_str(val: Union[str, float]): + # "isinstance" type guard + if isinstance(val, str): + # Type of ``val`` is narrowed to ``str`` + ... + else: + # Else, type of ``val`` is narrowed to ``float``. + ... + + Strict type narrowing is not enforced -- ``TypeB`` need not be a narrower + form of ``TypeA`` (it can even be a wider form) and this may lead to + type-unsafe results. The main reason is to allow for things like + narrowing ``List[object]`` to ``List[str]`` even though the latter is not + a subtype of the former, since ``List`` is invariant. The responsibility of + writing type-safe type guards is left to the user. + + ``TypeGuard`` also works with type variables. For more information, see + PEP 647 (User-Defined Type Guards). + """ + item = typing._type_check(parameters, f'{self} accepts only a single type.') + return typing._GenericAlias(self, (item,)) + + +# 3.13+ +if hasattr(typing, 'TypeIs'): + TypeIs = typing.TypeIs +# <=3.12 +else: + @_ExtensionsSpecialForm + def TypeIs(self, parameters): + """Special typing form used to annotate the return type of a user-defined + type narrower function. ``TypeIs`` only accepts a single type argument. + At runtime, functions marked this way should return a boolean. + + ``TypeIs`` aims to benefit *type narrowing* -- a technique used by static + type checkers to determine a more precise type of an expression within a + program's code flow. Usually type narrowing is done by analyzing + conditional code flow and applying the narrowing to a block of code. The + conditional expression here is sometimes referred to as a "type guard". + + Sometimes it would be convenient to use a user-defined boolean function + as a type guard. Such a function should use ``TypeIs[...]`` as its + return type to alert static type checkers to this intention. + + Using ``-> TypeIs`` tells the static type checker that for a given + function: + + 1. The return value is a boolean. + 2. If the return value is ``True``, the type of its argument + is the intersection of the type inside ``TypeIs`` and the argument's + previously known type. + + For example:: + + def is_awaitable(val: object) -> TypeIs[Awaitable[Any]]: + return hasattr(val, '__await__') + + def f(val: Union[int, Awaitable[int]]) -> int: + if is_awaitable(val): + assert_type(val, Awaitable[int]) + else: + assert_type(val, int) + + ``TypeIs`` also works with type variables. For more information, see + PEP 742 (Narrowing types with TypeIs). + """ + item = typing._type_check(parameters, f'{self} accepts only a single type.') + return typing._GenericAlias(self, (item,)) + + +# 3.14+? +if hasattr(typing, 'TypeForm'): + TypeForm = typing.TypeForm +# <=3.13 +else: + class _TypeFormForm(_ExtensionsSpecialForm, _root=True): + # TypeForm(X) is equivalent to X but indicates to the type checker + # that the object is a TypeForm. + def __call__(self, obj, /): + return obj + + @_TypeFormForm + def TypeForm(self, parameters): + """A special form representing the value that results from the evaluation + of a type expression. This value encodes the information supplied in the + type expression, and it represents the type described by that type expression. + + When used in a type expression, TypeForm describes a set of type form objects. + It accepts a single type argument, which must be a valid type expression. + ``TypeForm[T]`` describes the set of all type form objects that represent + the type T or types that are assignable to T. + + Usage: + + def cast[T](typ: TypeForm[T], value: Any) -> T: ... + + reveal_type(cast(int, "x")) # int + + See PEP 747 for more information. + """ + item = typing._type_check(parameters, f'{self} accepts only a single type.') + return typing._GenericAlias(self, (item,)) + + + + +if hasattr(typing, "LiteralString"): # 3.11+ + LiteralString = typing.LiteralString +else: + @_SpecialForm + def LiteralString(self, params): + """Represents an arbitrary literal string. + + Example:: + + from typing_extensions import LiteralString + + def query(sql: LiteralString) -> ...: + ... + + query("SELECT * FROM table") # ok + query(f"SELECT * FROM {input()}") # not ok + + See PEP 675 for details. + + """ + raise TypeError(f"{self} is not subscriptable") + + +if hasattr(typing, "Self"): # 3.11+ + Self = typing.Self +else: + @_SpecialForm + def Self(self, params): + """Used to spell the type of "self" in classes. + + Example:: + + from typing import Self + + class ReturnsSelf: + def parse(self, data: bytes) -> Self: + ... + return self + + """ + + raise TypeError(f"{self} is not subscriptable") + + +if hasattr(typing, "Never"): # 3.11+ + Never = typing.Never +else: + @_SpecialForm + def Never(self, params): + """The bottom type, a type that has no members. + + This can be used to define a function that should never be + called, or a function that never returns:: + + from typing_extensions import Never + + def never_call_me(arg: Never) -> None: + pass + + def int_or_str(arg: int | str) -> None: + never_call_me(arg) # type checker error + match arg: + case int(): + print("It's an int") + case str(): + print("It's a str") + case _: + never_call_me(arg) # ok, arg is of type Never + + """ + + raise TypeError(f"{self} is not subscriptable") + + +if hasattr(typing, 'Required'): # 3.11+ + Required = typing.Required + NotRequired = typing.NotRequired +else: # <=3.10 + @_ExtensionsSpecialForm + def Required(self, parameters): + """A special typing construct to mark a key of a total=False TypedDict + as required. For example: + + class Movie(TypedDict, total=False): + title: Required[str] + year: int + + m = Movie( + title='The Matrix', # typechecker error if key is omitted + year=1999, + ) + + There is no runtime checking that a required key is actually provided + when instantiating a related TypedDict. + """ + item = typing._type_check(parameters, f'{self._name} accepts only a single type.') + return typing._GenericAlias(self, (item,)) + + @_ExtensionsSpecialForm + def NotRequired(self, parameters): + """A special typing construct to mark a key of a TypedDict as + potentially missing. For example: + + class Movie(TypedDict): + title: str + year: NotRequired[int] + + m = Movie( + title='The Matrix', # typechecker error if key is omitted + year=1999, + ) + """ + item = typing._type_check(parameters, f'{self._name} accepts only a single type.') + return typing._GenericAlias(self, (item,)) + + +if hasattr(typing, 'ReadOnly'): + ReadOnly = typing.ReadOnly +else: # <=3.12 + @_ExtensionsSpecialForm + def ReadOnly(self, parameters): + """A special typing construct to mark an item of a TypedDict as read-only. + + For example: + + class Movie(TypedDict): + title: ReadOnly[str] + year: int + + def mutate_movie(m: Movie) -> None: + m["year"] = 1992 # allowed + m["title"] = "The Matrix" # typechecker error + + There is no runtime checking for this property. + """ + item = typing._type_check(parameters, f'{self._name} accepts only a single type.') + return typing._GenericAlias(self, (item,)) + + +_UNPACK_DOC = """\ +Type unpack operator. + +The type unpack operator takes the child types from some container type, +such as `tuple[int, str]` or a `TypeVarTuple`, and 'pulls them out'. For +example: + + # For some generic class `Foo`: + Foo[Unpack[tuple[int, str]]] # Equivalent to Foo[int, str] + + Ts = TypeVarTuple('Ts') + # Specifies that `Bar` is generic in an arbitrary number of types. + # (Think of `Ts` as a tuple of an arbitrary number of individual + # `TypeVar`s, which the `Unpack` is 'pulling out' directly into the + # `Generic[]`.) + class Bar(Generic[Unpack[Ts]]): ... + Bar[int] # Valid + Bar[int, str] # Also valid + +From Python 3.11, this can also be done using the `*` operator: + + Foo[*tuple[int, str]] + class Bar(Generic[*Ts]): ... + +The operator can also be used along with a `TypedDict` to annotate +`**kwargs` in a function signature. For instance: + + class Movie(TypedDict): + name: str + year: int + + # This function expects two keyword arguments - *name* of type `str` and + # *year* of type `int`. + def foo(**kwargs: Unpack[Movie]): ... + +Note that there is only some runtime checking of this operator. Not +everything the runtime allows may be accepted by static type checkers. + +For more information, see PEP 646 and PEP 692. +""" + + +# PEP 692 changed the repr of Unpack[] +# Breakpoint: https://github.com/python/cpython/pull/104048 +if sys.version_info >= (3, 12): + Unpack = typing.Unpack + + def _is_unpack(obj): + return get_origin(obj) is Unpack + +else: # <=3.11 + class _UnpackSpecialForm(_ExtensionsSpecialForm, _root=True): + def __init__(self, getitem): + super().__init__(getitem) + self.__doc__ = _UNPACK_DOC + + class _UnpackAlias(typing._GenericAlias, _root=True): + if sys.version_info < (3, 11): + # needed for compatibility with Generic[Unpack[Ts]] + __class__ = typing.TypeVar + + @property + def __typing_unpacked_tuple_args__(self): + assert self.__origin__ is Unpack + assert len(self.__args__) == 1 + arg, = self.__args__ + if isinstance(arg, (typing._GenericAlias, _types.GenericAlias)): + if arg.__origin__ is not tuple: + raise TypeError("Unpack[...] must be used with a tuple type") + return arg.__args__ + return None + + @property + def __typing_is_unpacked_typevartuple__(self): + assert self.__origin__ is Unpack + assert len(self.__args__) == 1 + return isinstance(self.__args__[0], TypeVarTuple) + + def __getitem__(self, args): + if self.__typing_is_unpacked_typevartuple__: + return args + return super().__getitem__(args) + + @_UnpackSpecialForm + def Unpack(self, parameters): + item = typing._type_check(parameters, f'{self._name} accepts only a single type.') + return _UnpackAlias(self, (item,)) + + def _is_unpack(obj): + return isinstance(obj, _UnpackAlias) + + +def _unpack_args(*args): + newargs = [] + for arg in args: + subargs = getattr(arg, '__typing_unpacked_tuple_args__', None) + if subargs is not None and (not (subargs and subargs[-1] is ...)): + newargs.extend(subargs) + else: + newargs.append(arg) + return newargs + + +if _PEP_696_IMPLEMENTED: + from typing import TypeVarTuple + +elif hasattr(typing, "TypeVarTuple"): # 3.11+ + + # Add default parameter - PEP 696 + class TypeVarTuple(metaclass=_TypeVarLikeMeta): + """Type variable tuple.""" + + _backported_typevarlike = typing.TypeVarTuple + + def __new__(cls, name, *, default=NoDefault): + tvt = typing.TypeVarTuple(name) + _set_default(tvt, default) + _set_module(tvt) + + def _typevartuple_prepare_subst(alias, args): + params = alias.__parameters__ + typevartuple_index = params.index(tvt) + for param in params[typevartuple_index + 1:]: + if isinstance(param, TypeVarTuple): + raise TypeError( + f"More than one TypeVarTuple parameter in {alias}" + ) + + alen = len(args) + plen = len(params) + left = typevartuple_index + right = plen - typevartuple_index - 1 + var_tuple_index = None + fillarg = None + for k, arg in enumerate(args): + if not isinstance(arg, type): + subargs = getattr(arg, '__typing_unpacked_tuple_args__', None) + if subargs and len(subargs) == 2 and subargs[-1] is ...: + if var_tuple_index is not None: + raise TypeError( + "More than one unpacked " + "arbitrary-length tuple argument" + ) + var_tuple_index = k + fillarg = subargs[0] + if var_tuple_index is not None: + left = min(left, var_tuple_index) + right = min(right, alen - var_tuple_index - 1) + elif left + right > alen: + raise TypeError(f"Too few arguments for {alias};" + f" actual {alen}, expected at least {plen - 1}") + if left == alen - right and tvt.has_default(): + replacement = _unpack_args(tvt.__default__) + else: + replacement = args[left: alen - right] + + return ( + *args[:left], + *([fillarg] * (typevartuple_index - left)), + replacement, + *([fillarg] * (plen - right - left - typevartuple_index - 1)), + *args[alen - right:], + ) + + tvt.__typing_prepare_subst__ = _typevartuple_prepare_subst + return tvt + + def __init_subclass__(self, *args, **kwds): + raise TypeError("Cannot subclass special typing classes") + +else: # <=3.10 + class TypeVarTuple(_DefaultMixin): + """Type variable tuple. + + Usage:: + + Ts = TypeVarTuple('Ts') + + In the same way that a normal type variable is a stand-in for a single + type such as ``int``, a type variable *tuple* is a stand-in for a *tuple* + type such as ``Tuple[int, str]``. + + Type variable tuples can be used in ``Generic`` declarations. + Consider the following example:: + + class Array(Generic[*Ts]): ... + + The ``Ts`` type variable tuple here behaves like ``tuple[T1, T2]``, + where ``T1`` and ``T2`` are type variables. To use these type variables + as type parameters of ``Array``, we must *unpack* the type variable tuple using + the star operator: ``*Ts``. The signature of ``Array`` then behaves + as if we had simply written ``class Array(Generic[T1, T2]): ...``. + In contrast to ``Generic[T1, T2]``, however, ``Generic[*Shape]`` allows + us to parameterise the class with an *arbitrary* number of type parameters. + + Type variable tuples can be used anywhere a normal ``TypeVar`` can. + This includes class definitions, as shown above, as well as function + signatures and variable annotations:: + + class Array(Generic[*Ts]): + + def __init__(self, shape: Tuple[*Ts]): + self._shape: Tuple[*Ts] = shape + + def get_shape(self) -> Tuple[*Ts]: + return self._shape + + shape = (Height(480), Width(640)) + x: Array[Height, Width] = Array(shape) + y = abs(x) # Inferred type is Array[Height, Width] + z = x + x # ... is Array[Height, Width] + x.get_shape() # ... is tuple[Height, Width] + + """ + + # Trick Generic __parameters__. + __class__ = typing.TypeVar + + def __iter__(self): + yield self.__unpacked__ + + def __init__(self, name, *, default=NoDefault): + self.__name__ = name + _DefaultMixin.__init__(self, default) + + # for pickling: + def_mod = _caller() + if def_mod != 'typing_extensions': + self.__module__ = def_mod + + self.__unpacked__ = Unpack[self] + + def __repr__(self): + return self.__name__ + + def __hash__(self): + return object.__hash__(self) + + def __eq__(self, other): + return self is other + + def __reduce__(self): + return self.__name__ + + def __init_subclass__(self, *args, **kwds): + if '_root' not in kwds: + raise TypeError("Cannot subclass special typing classes") + + +if hasattr(typing, "reveal_type"): # 3.11+ + reveal_type = typing.reveal_type +else: # <=3.10 + def reveal_type(obj: T, /) -> T: + """Reveal the inferred type of a variable. + + When a static type checker encounters a call to ``reveal_type()``, + it will emit the inferred type of the argument:: + + x: int = 1 + reveal_type(x) + + Running a static type checker (e.g., ``mypy``) on this example + will produce output similar to 'Revealed type is "builtins.int"'. + + At runtime, the function prints the runtime type of the + argument and returns it unchanged. + + """ + print(f"Runtime type is {type(obj).__name__!r}", file=sys.stderr) + return obj + + +if hasattr(typing, "_ASSERT_NEVER_REPR_MAX_LENGTH"): # 3.11+ + _ASSERT_NEVER_REPR_MAX_LENGTH = typing._ASSERT_NEVER_REPR_MAX_LENGTH +else: # <=3.10 + _ASSERT_NEVER_REPR_MAX_LENGTH = 100 + + +if hasattr(typing, "assert_never"): # 3.11+ + assert_never = typing.assert_never +else: # <=3.10 + def assert_never(arg: Never, /) -> Never: + """Assert to the type checker that a line of code is unreachable. + + Example:: + + def int_or_str(arg: int | str) -> None: + match arg: + case int(): + print("It's an int") + case str(): + print("It's a str") + case _: + assert_never(arg) + + If a type checker finds that a call to assert_never() is + reachable, it will emit an error. + + At runtime, this throws an exception when called. + + """ + value = repr(arg) + if len(value) > _ASSERT_NEVER_REPR_MAX_LENGTH: + value = value[:_ASSERT_NEVER_REPR_MAX_LENGTH] + '...' + raise AssertionError(f"Expected code to be unreachable, but got: {value}") + + +# dataclass_transform exists in 3.11 but lacks the frozen_default parameter +# Breakpoint: https://github.com/python/cpython/pull/99958 +if sys.version_info >= (3, 12): # 3.12+ + dataclass_transform = typing.dataclass_transform +else: # <=3.11 + def dataclass_transform( + *, + eq_default: bool = True, + order_default: bool = False, + kw_only_default: bool = False, + frozen_default: bool = False, + field_specifiers: typing.Tuple[ + typing.Union[typing.Type[typing.Any], typing.Callable[..., typing.Any]], + ... + ] = (), + **kwargs: typing.Any, + ) -> typing.Callable[[T], T]: + """Decorator that marks a function, class, or metaclass as providing + dataclass-like behavior. + + Example: + + from typing_extensions import dataclass_transform + + _T = TypeVar("_T") + + # Used on a decorator function + @dataclass_transform() + def create_model(cls: type[_T]) -> type[_T]: + ... + return cls + + @create_model + class CustomerModel: + id: int + name: str + + # Used on a base class + @dataclass_transform() + class ModelBase: ... + + class CustomerModel(ModelBase): + id: int + name: str + + # Used on a metaclass + @dataclass_transform() + class ModelMeta(type): ... + + class ModelBase(metaclass=ModelMeta): ... + + class CustomerModel(ModelBase): + id: int + name: str + + Each of the ``CustomerModel`` classes defined in this example will now + behave similarly to a dataclass created with the ``@dataclasses.dataclass`` + decorator. For example, the type checker will synthesize an ``__init__`` + method. + + The arguments to this decorator can be used to customize this behavior: + - ``eq_default`` indicates whether the ``eq`` parameter is assumed to be + True or False if it is omitted by the caller. + - ``order_default`` indicates whether the ``order`` parameter is + assumed to be True or False if it is omitted by the caller. + - ``kw_only_default`` indicates whether the ``kw_only`` parameter is + assumed to be True or False if it is omitted by the caller. + - ``frozen_default`` indicates whether the ``frozen`` parameter is + assumed to be True or False if it is omitted by the caller. + - ``field_specifiers`` specifies a static list of supported classes + or functions that describe fields, similar to ``dataclasses.field()``. + + At runtime, this decorator records its arguments in the + ``__dataclass_transform__`` attribute on the decorated object. + + See PEP 681 for details. + + """ + def decorator(cls_or_fn): + cls_or_fn.__dataclass_transform__ = { + "eq_default": eq_default, + "order_default": order_default, + "kw_only_default": kw_only_default, + "frozen_default": frozen_default, + "field_specifiers": field_specifiers, + "kwargs": kwargs, + } + return cls_or_fn + return decorator + + +if hasattr(typing, "override"): # 3.12+ + override = typing.override +else: # <=3.11 + _F = typing.TypeVar("_F", bound=typing.Callable[..., typing.Any]) + + def override(arg: _F, /) -> _F: + """Indicate that a method is intended to override a method in a base class. + + Usage: + + class Base: + def method(self) -> None: + pass + + class Child(Base): + @override + def method(self) -> None: + super().method() + + When this decorator is applied to a method, the type checker will + validate that it overrides a method with the same name on a base class. + This helps prevent bugs that may occur when a base class is changed + without an equivalent change to a child class. + + There is no runtime checking of these properties. The decorator + sets the ``__override__`` attribute to ``True`` on the decorated object + to allow runtime introspection. + + See PEP 698 for details. + + """ + try: + arg.__override__ = True + except (AttributeError, TypeError): + # Skip the attribute silently if it is not writable. + # AttributeError happens if the object has __slots__ or a + # read-only property, TypeError if it's a builtin class. + pass + return arg + + +# Python 3.13.3+ contains a fix for the wrapped __new__ +# Breakpoint: https://github.com/python/cpython/pull/132160 +if sys.version_info >= (3, 13, 3): + deprecated = warnings.deprecated +else: + _T = typing.TypeVar("_T") + + class deprecated: + """Indicate that a class, function or overload is deprecated. + + When this decorator is applied to an object, the type checker + will generate a diagnostic on usage of the deprecated object. + + Usage: + + @deprecated("Use B instead") + class A: + pass + + @deprecated("Use g instead") + def f(): + pass + + @overload + @deprecated("int support is deprecated") + def g(x: int) -> int: ... + @overload + def g(x: str) -> int: ... + + The warning specified by *category* will be emitted at runtime + on use of deprecated objects. For functions, that happens on calls; + for classes, on instantiation and on creation of subclasses. + If the *category* is ``None``, no warning is emitted at runtime. + The *stacklevel* determines where the + warning is emitted. If it is ``1`` (the default), the warning + is emitted at the direct caller of the deprecated object; if it + is higher, it is emitted further up the stack. + Static type checker behavior is not affected by the *category* + and *stacklevel* arguments. + + The deprecation message passed to the decorator is saved in the + ``__deprecated__`` attribute on the decorated object. + If applied to an overload, the decorator + must be after the ``@overload`` decorator for the attribute to + exist on the overload as returned by ``get_overloads()``. + + See PEP 702 for details. + + """ + def __init__( + self, + message: str, + /, + *, + category: typing.Optional[typing.Type[Warning]] = DeprecationWarning, + stacklevel: int = 1, + ) -> None: + if not isinstance(message, str): + raise TypeError( + "Expected an object of type str for 'message', not " + f"{type(message).__name__!r}" + ) + self.message = message + self.category = category + self.stacklevel = stacklevel + + def __call__(self, arg: _T, /) -> _T: + # Make sure the inner functions created below don't + # retain a reference to self. + msg = self.message + category = self.category + stacklevel = self.stacklevel + if category is None: + arg.__deprecated__ = msg + return arg + elif isinstance(arg, type): + import functools + from types import MethodType + + original_new = arg.__new__ + + @functools.wraps(original_new) + def __new__(cls, /, *args, **kwargs): + if cls is arg: + warnings.warn(msg, category=category, stacklevel=stacklevel + 1) + if original_new is not object.__new__: + return original_new(cls, *args, **kwargs) + # Mirrors a similar check in object.__new__. + elif cls.__init__ is object.__init__ and (args or kwargs): + raise TypeError(f"{cls.__name__}() takes no arguments") + else: + return original_new(cls) + + arg.__new__ = staticmethod(__new__) + + original_init_subclass = arg.__init_subclass__ + # We need slightly different behavior if __init_subclass__ + # is a bound method (likely if it was implemented in Python) + if isinstance(original_init_subclass, MethodType): + original_init_subclass = original_init_subclass.__func__ + + @functools.wraps(original_init_subclass) + def __init_subclass__(*args, **kwargs): + warnings.warn(msg, category=category, stacklevel=stacklevel + 1) + return original_init_subclass(*args, **kwargs) + + arg.__init_subclass__ = classmethod(__init_subclass__) + # Or otherwise, which likely means it's a builtin such as + # object's implementation of __init_subclass__. + else: + @functools.wraps(original_init_subclass) + def __init_subclass__(*args, **kwargs): + warnings.warn(msg, category=category, stacklevel=stacklevel + 1) + return original_init_subclass(*args, **kwargs) + + arg.__init_subclass__ = __init_subclass__ + + arg.__deprecated__ = __new__.__deprecated__ = msg + __init_subclass__.__deprecated__ = msg + return arg + elif callable(arg): + import asyncio.coroutines + import functools + import inspect + + @functools.wraps(arg) + def wrapper(*args, **kwargs): + warnings.warn(msg, category=category, stacklevel=stacklevel + 1) + return arg(*args, **kwargs) + + if asyncio.coroutines.iscoroutinefunction(arg): + # Breakpoint: https://github.com/python/cpython/pull/99247 + if sys.version_info >= (3, 12): + wrapper = inspect.markcoroutinefunction(wrapper) + else: + wrapper._is_coroutine = asyncio.coroutines._is_coroutine + + arg.__deprecated__ = wrapper.__deprecated__ = msg + return wrapper + else: + raise TypeError( + "@deprecated decorator with non-None category must be applied to " + f"a class or callable, not {arg!r}" + ) + +# Breakpoint: https://github.com/python/cpython/pull/23702 +if sys.version_info < (3, 10): + def _is_param_expr(arg): + return arg is ... or isinstance( + arg, (tuple, list, ParamSpec, _ConcatenateGenericAlias) + ) +else: + def _is_param_expr(arg): + return arg is ... or isinstance( + arg, + ( + tuple, + list, + ParamSpec, + _ConcatenateGenericAlias, + typing._ConcatenateGenericAlias, + ), + ) + + +# We have to do some monkey patching to deal with the dual nature of +# Unpack/TypeVarTuple: +# - We want Unpack to be a kind of TypeVar so it gets accepted in +# Generic[Unpack[Ts]] +# - We want it to *not* be treated as a TypeVar for the purposes of +# counting generic parameters, so that when we subscript a generic, +# the runtime doesn't try to substitute the Unpack with the subscripted type. +if not hasattr(typing, "TypeVarTuple"): + def _check_generic(cls, parameters, elen=_marker): + """Check correct count for parameters of a generic cls (internal helper). + + This gives a nice error message in case of count mismatch. + """ + # If substituting a single ParamSpec with multiple arguments + # we do not check the count + if (inspect.isclass(cls) and issubclass(cls, typing.Generic) + and len(cls.__parameters__) == 1 + and isinstance(cls.__parameters__[0], ParamSpec) + and parameters + and not _is_param_expr(parameters[0]) + ): + # Generic modifies parameters variable, but here we cannot do this + return + + if not elen: + raise TypeError(f"{cls} is not a generic class") + if elen is _marker: + if not hasattr(cls, "__parameters__") or not cls.__parameters__: + raise TypeError(f"{cls} is not a generic class") + elen = len(cls.__parameters__) + alen = len(parameters) + if alen != elen: + expect_val = elen + if hasattr(cls, "__parameters__"): + parameters = [p for p in cls.__parameters__ if not _is_unpack(p)] + num_tv_tuples = sum(isinstance(p, TypeVarTuple) for p in parameters) + if (num_tv_tuples > 0) and (alen >= elen - num_tv_tuples): + return + + # deal with TypeVarLike defaults + # required TypeVarLikes cannot appear after a defaulted one. + if alen < elen: + # since we validate TypeVarLike default in _collect_type_vars + # or _collect_parameters we can safely check parameters[alen] + if ( + getattr(parameters[alen], '__default__', NoDefault) + is not NoDefault + ): + return + + num_default_tv = sum(getattr(p, '__default__', NoDefault) + is not NoDefault for p in parameters) + + elen -= num_default_tv + + expect_val = f"at least {elen}" + + # Breakpoint: https://github.com/python/cpython/pull/27515 + things = "arguments" if sys.version_info >= (3, 10) else "parameters" + raise TypeError(f"Too {'many' if alen > elen else 'few'} {things}" + f" for {cls}; actual {alen}, expected {expect_val}") +else: + # Python 3.11+ + + def _check_generic(cls, parameters, elen): + """Check correct count for parameters of a generic cls (internal helper). + + This gives a nice error message in case of count mismatch. + """ + if not elen: + raise TypeError(f"{cls} is not a generic class") + alen = len(parameters) + if alen != elen: + expect_val = elen + if hasattr(cls, "__parameters__"): + parameters = [p for p in cls.__parameters__ if not _is_unpack(p)] + + # deal with TypeVarLike defaults + # required TypeVarLikes cannot appear after a defaulted one. + if alen < elen: + # since we validate TypeVarLike default in _collect_type_vars + # or _collect_parameters we can safely check parameters[alen] + if ( + getattr(parameters[alen], '__default__', NoDefault) + is not NoDefault + ): + return + + num_default_tv = sum(getattr(p, '__default__', NoDefault) + is not NoDefault for p in parameters) + + elen -= num_default_tv + + expect_val = f"at least {elen}" + + raise TypeError(f"Too {'many' if alen > elen else 'few'} arguments" + f" for {cls}; actual {alen}, expected {expect_val}") + +if not _PEP_696_IMPLEMENTED: + typing._check_generic = _check_generic + + +def _has_generic_or_protocol_as_origin() -> bool: + try: + frame = sys._getframe(2) + # - Catch AttributeError: not all Python implementations have sys._getframe() + # - Catch ValueError: maybe we're called from an unexpected module + # and the call stack isn't deep enough + except (AttributeError, ValueError): + return False # err on the side of leniency + else: + # If we somehow get invoked from outside typing.py, + # also err on the side of leniency + if frame.f_globals.get("__name__") != "typing": + return False + origin = frame.f_locals.get("origin") + # Cannot use "in" because origin may be an object with a buggy __eq__ that + # throws an error. + return origin is typing.Generic or origin is Protocol or origin is typing.Protocol + + +_TYPEVARTUPLE_TYPES = {TypeVarTuple, getattr(typing, "TypeVarTuple", None)} + + +def _is_unpacked_typevartuple(x) -> bool: + if get_origin(x) is not Unpack: + return False + args = get_args(x) + return ( + bool(args) + and len(args) == 1 + and type(args[0]) in _TYPEVARTUPLE_TYPES + ) + + +# Python 3.11+ _collect_type_vars was renamed to _collect_parameters +if hasattr(typing, '_collect_type_vars'): + def _collect_type_vars(types, typevar_types=None): + """Collect all type variable contained in types in order of + first appearance (lexicographic order). For example:: + + _collect_type_vars((T, List[S, T])) == (T, S) + """ + if typevar_types is None: + typevar_types = typing.TypeVar + tvars = [] + + # A required TypeVarLike cannot appear after a TypeVarLike with a default + # if it was a direct call to `Generic[]` or `Protocol[]` + enforce_default_ordering = _has_generic_or_protocol_as_origin() + default_encountered = False + + # Also, a TypeVarLike with a default cannot appear after a TypeVarTuple + type_var_tuple_encountered = False + + for t in types: + if _is_unpacked_typevartuple(t): + type_var_tuple_encountered = True + elif ( + isinstance(t, typevar_types) and not isinstance(t, _UnpackAlias) + and t not in tvars + ): + if enforce_default_ordering: + has_default = getattr(t, '__default__', NoDefault) is not NoDefault + if has_default: + if type_var_tuple_encountered: + raise TypeError('Type parameter with a default' + ' follows TypeVarTuple') + default_encountered = True + elif default_encountered: + raise TypeError(f'Type parameter {t!r} without a default' + ' follows type parameter with a default') + + tvars.append(t) + if _should_collect_from_parameters(t): + tvars.extend([t for t in t.__parameters__ if t not in tvars]) + elif isinstance(t, tuple): + # Collect nested type_vars + # tuple wrapped by _prepare_paramspec_params(cls, params) + for x in t: + for collected in _collect_type_vars([x]): + if collected not in tvars: + tvars.append(collected) + return tuple(tvars) + + typing._collect_type_vars = _collect_type_vars +else: + def _collect_parameters(args): + """Collect all type variables and parameter specifications in args + in order of first appearance (lexicographic order). + + For example:: + + assert _collect_parameters((T, Callable[P, T])) == (T, P) + """ + parameters = [] + + # A required TypeVarLike cannot appear after a TypeVarLike with default + # if it was a direct call to `Generic[]` or `Protocol[]` + enforce_default_ordering = _has_generic_or_protocol_as_origin() + default_encountered = False + + # Also, a TypeVarLike with a default cannot appear after a TypeVarTuple + type_var_tuple_encountered = False + + for t in args: + if isinstance(t, type): + # We don't want __parameters__ descriptor of a bare Python class. + pass + elif isinstance(t, tuple): + # `t` might be a tuple, when `ParamSpec` is substituted with + # `[T, int]`, or `[int, *Ts]`, etc. + for x in t: + for collected in _collect_parameters([x]): + if collected not in parameters: + parameters.append(collected) + elif hasattr(t, '__typing_subst__'): + if t not in parameters: + if enforce_default_ordering: + has_default = ( + getattr(t, '__default__', NoDefault) is not NoDefault + ) + + if type_var_tuple_encountered and has_default: + raise TypeError('Type parameter with a default' + ' follows TypeVarTuple') + + if has_default: + default_encountered = True + elif default_encountered: + raise TypeError(f'Type parameter {t!r} without a default' + ' follows type parameter with a default') + + parameters.append(t) + else: + if _is_unpacked_typevartuple(t): + type_var_tuple_encountered = True + for x in getattr(t, '__parameters__', ()): + if x not in parameters: + parameters.append(x) + + return tuple(parameters) + + if not _PEP_696_IMPLEMENTED: + typing._collect_parameters = _collect_parameters + +# Backport typing.NamedTuple as it exists in Python 3.13. +# In 3.11, the ability to define generic `NamedTuple`s was supported. +# This was explicitly disallowed in 3.9-3.10, and only half-worked in <=3.8. +# On 3.12, we added __orig_bases__ to call-based NamedTuples +# On 3.13, we deprecated kwargs-based NamedTuples +# Breakpoint: https://github.com/python/cpython/pull/105609 +if sys.version_info >= (3, 13): + NamedTuple = typing.NamedTuple +else: + def _make_nmtuple(name, types, module, defaults=()): + fields = [n for n, t in types] + annotations = {n: typing._type_check(t, f"field {n} annotation must be a type") + for n, t in types} + nm_tpl = collections.namedtuple(name, fields, + defaults=defaults, module=module) + nm_tpl.__annotations__ = nm_tpl.__new__.__annotations__ = annotations + return nm_tpl + + _prohibited_namedtuple_fields = typing._prohibited + _special_namedtuple_fields = frozenset({'__module__', '__name__', '__annotations__'}) + + class _NamedTupleMeta(type): + def __new__(cls, typename, bases, ns): + assert _NamedTuple in bases + for base in bases: + if base is not _NamedTuple and base is not typing.Generic: + raise TypeError( + 'can only inherit from a NamedTuple type and Generic') + bases = tuple(tuple if base is _NamedTuple else base for base in bases) + if "__annotations__" in ns: + types = ns["__annotations__"] + elif "__annotate__" in ns: + # TODO: Use inspect.VALUE here, and make the annotations lazily evaluated + types = ns["__annotate__"](1) + else: + types = {} + default_names = [] + for field_name in types: + if field_name in ns: + default_names.append(field_name) + elif default_names: + raise TypeError(f"Non-default namedtuple field {field_name} " + f"cannot follow default field" + f"{'s' if len(default_names) > 1 else ''} " + f"{', '.join(default_names)}") + nm_tpl = _make_nmtuple( + typename, types.items(), + defaults=[ns[n] for n in default_names], + module=ns['__module__'] + ) + nm_tpl.__bases__ = bases + if typing.Generic in bases: + if hasattr(typing, '_generic_class_getitem'): # 3.12+ + nm_tpl.__class_getitem__ = classmethod(typing._generic_class_getitem) + else: + class_getitem = typing.Generic.__class_getitem__.__func__ + nm_tpl.__class_getitem__ = classmethod(class_getitem) + # update from user namespace without overriding special namedtuple attributes + for key, val in ns.items(): + if key in _prohibited_namedtuple_fields: + raise AttributeError("Cannot overwrite NamedTuple attribute " + key) + elif key not in _special_namedtuple_fields: + if key not in nm_tpl._fields: + setattr(nm_tpl, key, ns[key]) + try: + set_name = type(val).__set_name__ + except AttributeError: + pass + else: + try: + set_name(val, nm_tpl, key) + except BaseException as e: + msg = ( + f"Error calling __set_name__ on {type(val).__name__!r} " + f"instance {key!r} in {typename!r}" + ) + # BaseException.add_note() existed on py311, + # but the __set_name__ machinery didn't start + # using add_note() until py312. + # Making sure exceptions are raised in the same way + # as in "normal" classes seems most important here. + # Breakpoint: https://github.com/python/cpython/pull/95915 + if sys.version_info >= (3, 12): + e.add_note(msg) + raise + else: + raise RuntimeError(msg) from e + + if typing.Generic in bases: + nm_tpl.__init_subclass__() + return nm_tpl + + _NamedTuple = type.__new__(_NamedTupleMeta, 'NamedTuple', (), {}) + + def _namedtuple_mro_entries(bases): + assert NamedTuple in bases + return (_NamedTuple,) + + def NamedTuple(typename, fields=_marker, /, **kwargs): + """Typed version of namedtuple. + + Usage:: + + class Employee(NamedTuple): + name: str + id: int + + This is equivalent to:: + + Employee = collections.namedtuple('Employee', ['name', 'id']) + + The resulting class has an extra __annotations__ attribute, giving a + dict that maps field names to types. (The field names are also in + the _fields attribute, which is part of the namedtuple API.) + An alternative equivalent functional syntax is also accepted:: + + Employee = NamedTuple('Employee', [('name', str), ('id', int)]) + """ + if fields is _marker: + if kwargs: + deprecated_thing = "Creating NamedTuple classes using keyword arguments" + deprecation_msg = ( + "{name} is deprecated and will be disallowed in Python {remove}. " + "Use the class-based or functional syntax instead." + ) + else: + deprecated_thing = "Failing to pass a value for the 'fields' parameter" + example = f"`{typename} = NamedTuple({typename!r}, [])`" + deprecation_msg = ( + "{name} is deprecated and will be disallowed in Python {remove}. " + "To create a NamedTuple class with 0 fields " + "using the functional syntax, " + "pass an empty list, e.g. " + ) + example + "." + elif fields is None: + if kwargs: + raise TypeError( + "Cannot pass `None` as the 'fields' parameter " + "and also specify fields using keyword arguments" + ) + else: + deprecated_thing = "Passing `None` as the 'fields' parameter" + example = f"`{typename} = NamedTuple({typename!r}, [])`" + deprecation_msg = ( + "{name} is deprecated and will be disallowed in Python {remove}. " + "To create a NamedTuple class with 0 fields " + "using the functional syntax, " + "pass an empty list, e.g. " + ) + example + "." + elif kwargs: + raise TypeError("Either list of fields or keywords" + " can be provided to NamedTuple, not both") + if fields is _marker or fields is None: + warnings.warn( + deprecation_msg.format(name=deprecated_thing, remove="3.15"), + DeprecationWarning, + stacklevel=2, + ) + fields = kwargs.items() + nt = _make_nmtuple(typename, fields, module=_caller()) + nt.__orig_bases__ = (NamedTuple,) + return nt + + NamedTuple.__mro_entries__ = _namedtuple_mro_entries + + +if hasattr(collections.abc, "Buffer"): + Buffer = collections.abc.Buffer +else: + class Buffer(abc.ABC): # noqa: B024 + """Base class for classes that implement the buffer protocol. + + The buffer protocol allows Python objects to expose a low-level + memory buffer interface. Before Python 3.12, it is not possible + to implement the buffer protocol in pure Python code, or even + to check whether a class implements the buffer protocol. In + Python 3.12 and higher, the ``__buffer__`` method allows access + to the buffer protocol from Python code, and the + ``collections.abc.Buffer`` ABC allows checking whether a class + implements the buffer protocol. + + To indicate support for the buffer protocol in earlier versions, + inherit from this ABC, either in a stub file or at runtime, + or use ABC registration. This ABC provides no methods, because + there is no Python-accessible methods shared by pre-3.12 buffer + classes. It is useful primarily for static checks. + + """ + + # As a courtesy, register the most common stdlib buffer classes. + Buffer.register(memoryview) + Buffer.register(bytearray) + Buffer.register(bytes) + + +# Backport of types.get_original_bases, available on 3.12+ in CPython +if hasattr(_types, "get_original_bases"): + get_original_bases = _types.get_original_bases +else: + def get_original_bases(cls, /): + """Return the class's "original" bases prior to modification by `__mro_entries__`. + + Examples:: + + from typing import TypeVar, Generic + from typing_extensions import NamedTuple, TypedDict + + T = TypeVar("T") + class Foo(Generic[T]): ... + class Bar(Foo[int], float): ... + class Baz(list[str]): ... + Eggs = NamedTuple("Eggs", [("a", int), ("b", str)]) + Spam = TypedDict("Spam", {"a": int, "b": str}) + + assert get_original_bases(Bar) == (Foo[int], float) + assert get_original_bases(Baz) == (list[str],) + assert get_original_bases(Eggs) == (NamedTuple,) + assert get_original_bases(Spam) == (TypedDict,) + assert get_original_bases(int) == (object,) + """ + try: + return cls.__dict__.get("__orig_bases__", cls.__bases__) + except AttributeError: + raise TypeError( + f'Expected an instance of type, not {type(cls).__name__!r}' + ) from None + + +# NewType is a class on Python 3.10+, making it pickleable +# The error message for subclassing instances of NewType was improved on 3.11+ +# Breakpoint: https://github.com/python/cpython/pull/30268 +if sys.version_info >= (3, 11): + NewType = typing.NewType +else: + class NewType: + """NewType creates simple unique types with almost zero + runtime overhead. NewType(name, tp) is considered a subtype of tp + by static type checkers. At runtime, NewType(name, tp) returns + a dummy callable that simply returns its argument. Usage:: + UserId = NewType('UserId', int) + def name_by_id(user_id: UserId) -> str: + ... + UserId('user') # Fails type check + name_by_id(42) # Fails type check + name_by_id(UserId(42)) # OK + num = UserId(5) + 1 # type: int + """ + + def __call__(self, obj, /): + return obj + + def __init__(self, name, tp): + self.__qualname__ = name + if '.' in name: + name = name.rpartition('.')[-1] + self.__name__ = name + self.__supertype__ = tp + def_mod = _caller() + if def_mod != 'typing_extensions': + self.__module__ = def_mod + + def __mro_entries__(self, bases): + # We defined __mro_entries__ to get a better error message + # if a user attempts to subclass a NewType instance. bpo-46170 + supercls_name = self.__name__ + + class Dummy: + def __init_subclass__(cls): + subcls_name = cls.__name__ + raise TypeError( + f"Cannot subclass an instance of NewType. " + f"Perhaps you were looking for: " + f"`{subcls_name} = NewType({subcls_name!r}, {supercls_name})`" + ) + + return (Dummy,) + + def __repr__(self): + return f'{self.__module__}.{self.__qualname__}' + + def __reduce__(self): + return self.__qualname__ + + # Breakpoint: https://github.com/python/cpython/pull/21515 + if sys.version_info >= (3, 10): + # PEP 604 methods + # It doesn't make sense to have these methods on Python <3.10 + + def __or__(self, other): + return typing.Union[self, other] + + def __ror__(self, other): + return typing.Union[other, self] + + +# Breakpoint: https://github.com/python/cpython/pull/124795 +if sys.version_info >= (3, 14): + TypeAliasType = typing.TypeAliasType +# <=3.13 +else: + # Breakpoint: https://github.com/python/cpython/pull/103764 + if sys.version_info >= (3, 12): + # 3.12-3.13 + def _is_unionable(obj): + """Corresponds to is_unionable() in unionobject.c in CPython.""" + return obj is None or isinstance(obj, ( + type, + _types.GenericAlias, + _types.UnionType, + typing.TypeAliasType, + TypeAliasType, + )) + else: + # <=3.11 + def _is_unionable(obj): + """Corresponds to is_unionable() in unionobject.c in CPython.""" + return obj is None or isinstance(obj, ( + type, + _types.GenericAlias, + _types.UnionType, + TypeAliasType, + )) + + if sys.version_info < (3, 10): + # Copied and pasted from https://github.com/python/cpython/blob/986a4e1b6fcae7fe7a1d0a26aea446107dd58dd2/Objects/genericaliasobject.c#L568-L582, + # so that we emulate the behaviour of `types.GenericAlias` + # on the latest versions of CPython + _ATTRIBUTE_DELEGATION_EXCLUSIONS = frozenset({ + "__class__", + "__bases__", + "__origin__", + "__args__", + "__unpacked__", + "__parameters__", + "__typing_unpacked_tuple_args__", + "__mro_entries__", + "__reduce_ex__", + "__reduce__", + "__copy__", + "__deepcopy__", + }) + + class _TypeAliasGenericAlias(typing._GenericAlias, _root=True): + def __getattr__(self, attr): + if attr in _ATTRIBUTE_DELEGATION_EXCLUSIONS: + return object.__getattr__(self, attr) + return getattr(self.__origin__, attr) + + + class TypeAliasType: + """Create named, parameterized type aliases. + + This provides a backport of the new `type` statement in Python 3.12: + + type ListOrSet[T] = list[T] | set[T] + + is equivalent to: + + T = TypeVar("T") + ListOrSet = TypeAliasType("ListOrSet", list[T] | set[T], type_params=(T,)) + + The name ListOrSet can then be used as an alias for the type it refers to. + + The type_params argument should contain all the type parameters used + in the value of the type alias. If the alias is not generic, this + argument is omitted. + + Static type checkers should only support type aliases declared using + TypeAliasType that follow these rules: + + - The first argument (the name) must be a string literal. + - The TypeAliasType instance must be immediately assigned to a variable + of the same name. (For example, 'X = TypeAliasType("Y", int)' is invalid, + as is 'X, Y = TypeAliasType("X", int), TypeAliasType("Y", int)'). + + """ + + def __init__(self, name: str, value, *, type_params=()): + if not isinstance(name, str): + raise TypeError("TypeAliasType name must be a string") + if not isinstance(type_params, tuple): + raise TypeError("type_params must be a tuple") + self.__value__ = value + self.__type_params__ = type_params + + default_value_encountered = False + parameters = [] + for type_param in type_params: + if ( + not isinstance(type_param, (TypeVar, TypeVarTuple, ParamSpec)) + # <=3.11 + # Unpack Backport passes isinstance(type_param, TypeVar) + or _is_unpack(type_param) + ): + raise TypeError(f"Expected a type param, got {type_param!r}") + has_default = ( + getattr(type_param, '__default__', NoDefault) is not NoDefault + ) + if default_value_encountered and not has_default: + raise TypeError(f"non-default type parameter '{type_param!r}'" + " follows default type parameter") + if has_default: + default_value_encountered = True + if isinstance(type_param, TypeVarTuple): + parameters.extend(type_param) + else: + parameters.append(type_param) + self.__parameters__ = tuple(parameters) + def_mod = _caller() + if def_mod != 'typing_extensions': + self.__module__ = def_mod + # Setting this attribute closes the TypeAliasType from further modification + self.__name__ = name + + def __setattr__(self, name: str, value: object, /) -> None: + if hasattr(self, "__name__"): + self._raise_attribute_error(name) + super().__setattr__(name, value) + + def __delattr__(self, name: str, /) -> Never: + self._raise_attribute_error(name) + + def _raise_attribute_error(self, name: str) -> Never: + # Match the Python 3.12 error messages exactly + if name == "__name__": + raise AttributeError("readonly attribute") + elif name in {"__value__", "__type_params__", "__parameters__", "__module__"}: + raise AttributeError( + f"attribute '{name}' of 'typing.TypeAliasType' objects " + "is not writable" + ) + else: + raise AttributeError( + f"'typing.TypeAliasType' object has no attribute '{name}'" + ) + + def __repr__(self) -> str: + return self.__name__ + + if sys.version_info < (3, 11): + def _check_single_param(self, param, recursion=0): + # Allow [], [int], [int, str], [int, ...], [int, T] + if param is ...: + return ... + if param is None: + return None + # Note in <= 3.9 _ConcatenateGenericAlias inherits from list + if isinstance(param, list) and recursion == 0: + return [self._check_single_param(arg, recursion+1) + for arg in param] + return typing._type_check( + param, f'Subscripting {self.__name__} requires a type.' + ) + + def _check_parameters(self, parameters): + if sys.version_info < (3, 11): + return tuple( + self._check_single_param(item) + for item in parameters + ) + return tuple(typing._type_check( + item, f'Subscripting {self.__name__} requires a type.' + ) + for item in parameters + ) + + def __getitem__(self, parameters): + if not self.__type_params__: + raise TypeError("Only generic type aliases are subscriptable") + if not isinstance(parameters, tuple): + parameters = (parameters,) + # Using 3.9 here will create problems with Concatenate + if sys.version_info >= (3, 10): + return _types.GenericAlias(self, parameters) + type_vars = _collect_type_vars(parameters) + parameters = self._check_parameters(parameters) + alias = _TypeAliasGenericAlias(self, parameters) + # alias.__parameters__ is not complete if Concatenate is present + # as it is converted to a list from which no parameters are extracted. + if alias.__parameters__ != type_vars: + alias.__parameters__ = type_vars + return alias + + def __reduce__(self): + return self.__name__ + + def __init_subclass__(cls, *args, **kwargs): + raise TypeError( + "type 'typing_extensions.TypeAliasType' is not an acceptable base type" + ) + + # The presence of this method convinces typing._type_check + # that TypeAliasTypes are types. + def __call__(self): + raise TypeError("Type alias is not callable") + + # Breakpoint: https://github.com/python/cpython/pull/21515 + if sys.version_info >= (3, 10): + def __or__(self, right): + # For forward compatibility with 3.12, reject Unions + # that are not accepted by the built-in Union. + if not _is_unionable(right): + return NotImplemented + return typing.Union[self, right] + + def __ror__(self, left): + if not _is_unionable(left): + return NotImplemented + return typing.Union[left, self] + + +if hasattr(typing, "is_protocol"): + is_protocol = typing.is_protocol + get_protocol_members = typing.get_protocol_members +else: + def is_protocol(tp: type, /) -> bool: + """Return True if the given type is a Protocol. + + Example:: + + >>> from typing_extensions import Protocol, is_protocol + >>> class P(Protocol): + ... def a(self) -> str: ... + ... b: int + >>> is_protocol(P) + True + >>> is_protocol(int) + False + """ + return ( + isinstance(tp, type) + and getattr(tp, '_is_protocol', False) + and tp is not Protocol + and tp is not typing.Protocol + ) + + def get_protocol_members(tp: type, /) -> typing.FrozenSet[str]: + """Return the set of members defined in a Protocol. + + Example:: + + >>> from typing_extensions import Protocol, get_protocol_members + >>> class P(Protocol): + ... def a(self) -> str: ... + ... b: int + >>> get_protocol_members(P) + frozenset({'a', 'b'}) + + Raise a TypeError for arguments that are not Protocols. + """ + if not is_protocol(tp): + raise TypeError(f'{tp!r} is not a Protocol') + if hasattr(tp, '__protocol_attrs__'): + return frozenset(tp.__protocol_attrs__) + return frozenset(_get_protocol_attrs(tp)) + + +if hasattr(typing, "Doc"): + Doc = typing.Doc +else: + class Doc: + """Define the documentation of a type annotation using ``Annotated``, to be + used in class attributes, function and method parameters, return values, + and variables. + + The value should be a positional-only string literal to allow static tools + like editors and documentation generators to use it. + + This complements docstrings. + + The string value passed is available in the attribute ``documentation``. + + Example:: + + >>> from typing_extensions import Annotated, Doc + >>> def hi(to: Annotated[str, Doc("Who to say hi to")]) -> None: ... + """ + def __init__(self, documentation: str, /) -> None: + self.documentation = documentation + + def __repr__(self) -> str: + return f"Doc({self.documentation!r})" + + def __hash__(self) -> int: + return hash(self.documentation) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Doc): + return NotImplemented + return self.documentation == other.documentation + + +_CapsuleType = getattr(_types, "CapsuleType", None) + +if _CapsuleType is None: + try: + import _socket + except ImportError: + pass + else: + _CAPI = getattr(_socket, "CAPI", None) + if _CAPI is not None: + _CapsuleType = type(_CAPI) + +if _CapsuleType is not None: + CapsuleType = _CapsuleType + __all__.append("CapsuleType") + + +if sys.version_info >= (3, 14): + from annotationlib import Format, get_annotations +else: + # Available since Python 3.14.0a3 + # PR: https://github.com/python/cpython/pull/124415 + class Format(enum.IntEnum): + VALUE = 1 + VALUE_WITH_FAKE_GLOBALS = 2 + FORWARDREF = 3 + STRING = 4 + + # Available since Python 3.14.0a1 + # PR: https://github.com/python/cpython/pull/119891 + def get_annotations(obj, *, globals=None, locals=None, eval_str=False, + format=Format.VALUE): + """Compute the annotations dict for an object. + + obj may be a callable, class, or module. + Passing in an object of any other type raises TypeError. + + Returns a dict. get_annotations() returns a new dict every time + it's called; calling it twice on the same object will return two + different but equivalent dicts. + + This is a backport of `inspect.get_annotations`, which has been + in the standard library since Python 3.10. See the standard library + documentation for more: + + https://docs.python.org/3/library/inspect.html#inspect.get_annotations + + This backport adds the *format* argument introduced by PEP 649. The + three formats supported are: + * VALUE: the annotations are returned as-is. This is the default and + it is compatible with the behavior on previous Python versions. + * FORWARDREF: return annotations as-is if possible, but replace any + undefined names with ForwardRef objects. The implementation proposed by + PEP 649 relies on language changes that cannot be backported; the + typing-extensions implementation simply returns the same result as VALUE. + * STRING: return annotations as strings, in a format close to the original + source. Again, this behavior cannot be replicated directly in a backport. + As an approximation, typing-extensions retrieves the annotations under + VALUE semantics and then stringifies them. + + The purpose of this backport is to allow users who would like to use + FORWARDREF or STRING semantics once PEP 649 is implemented, but who also + want to support earlier Python versions, to simply write: + + typing_extensions.get_annotations(obj, format=Format.FORWARDREF) + + """ + format = Format(format) + if format is Format.VALUE_WITH_FAKE_GLOBALS: + raise ValueError( + "The VALUE_WITH_FAKE_GLOBALS format is for internal use only" + ) + + if eval_str and format is not Format.VALUE: + raise ValueError("eval_str=True is only supported with format=Format.VALUE") + + if isinstance(obj, type): + # class + obj_dict = getattr(obj, '__dict__', None) + if obj_dict and hasattr(obj_dict, 'get'): + ann = obj_dict.get('__annotations__', None) + if isinstance(ann, _types.GetSetDescriptorType): + ann = None + else: + ann = None + + obj_globals = None + module_name = getattr(obj, '__module__', None) + if module_name: + module = sys.modules.get(module_name, None) + if module: + obj_globals = getattr(module, '__dict__', None) + obj_locals = dict(vars(obj)) + unwrap = obj + elif isinstance(obj, _types.ModuleType): + # module + ann = getattr(obj, '__annotations__', None) + obj_globals = obj.__dict__ + obj_locals = None + unwrap = None + elif callable(obj): + # this includes types.Function, types.BuiltinFunctionType, + # types.BuiltinMethodType, functools.partial, functools.singledispatch, + # "class funclike" from Lib/test/test_inspect... on and on it goes. + ann = getattr(obj, '__annotations__', None) + obj_globals = getattr(obj, '__globals__', None) + obj_locals = None + unwrap = obj + elif hasattr(obj, '__annotations__'): + ann = obj.__annotations__ + obj_globals = obj_locals = unwrap = None + else: + raise TypeError(f"{obj!r} is not a module, class, or callable.") + + if ann is None: + return {} + + if not isinstance(ann, dict): + raise ValueError(f"{obj!r}.__annotations__ is neither a dict nor None") + + if not ann: + return {} + + if not eval_str: + if format is Format.STRING: + return { + key: value if isinstance(value, str) else typing._type_repr(value) + for key, value in ann.items() + } + return dict(ann) + + if unwrap is not None: + while True: + if hasattr(unwrap, '__wrapped__'): + unwrap = unwrap.__wrapped__ + continue + if isinstance(unwrap, functools.partial): + unwrap = unwrap.func + continue + break + if hasattr(unwrap, "__globals__"): + obj_globals = unwrap.__globals__ + + if globals is None: + globals = obj_globals + if locals is None: + locals = obj_locals or {} + + # "Inject" type parameters into the local namespace + # (unless they are shadowed by assignments *in* the local namespace), + # as a way of emulating annotation scopes when calling `eval()` + if type_params := getattr(obj, "__type_params__", ()): + locals = {param.__name__: param for param in type_params} | locals + + return_value = {key: + value if not isinstance(value, str) else eval(value, globals, locals) + for key, value in ann.items() } + return return_value + + +if hasattr(typing, "evaluate_forward_ref"): + evaluate_forward_ref = typing.evaluate_forward_ref +else: + # Implements annotationlib.ForwardRef.evaluate + def _eval_with_owner( + forward_ref, *, owner=None, globals=None, locals=None, type_params=None + ): + if forward_ref.__forward_evaluated__: + return forward_ref.__forward_value__ + if getattr(forward_ref, "__cell__", None) is not None: + try: + value = forward_ref.__cell__.cell_contents + except ValueError: + pass + else: + forward_ref.__forward_evaluated__ = True + forward_ref.__forward_value__ = value + return value + if owner is None: + owner = getattr(forward_ref, "__owner__", None) + + if ( + globals is None + and getattr(forward_ref, "__forward_module__", None) is not None + ): + globals = getattr( + sys.modules.get(forward_ref.__forward_module__, None), "__dict__", None + ) + if globals is None: + globals = getattr(forward_ref, "__globals__", None) + if globals is None: + if isinstance(owner, type): + module_name = getattr(owner, "__module__", None) + if module_name: + module = sys.modules.get(module_name, None) + if module: + globals = getattr(module, "__dict__", None) + elif isinstance(owner, _types.ModuleType): + globals = getattr(owner, "__dict__", None) + elif callable(owner): + globals = getattr(owner, "__globals__", None) + + # If we pass None to eval() below, the globals of this module are used. + if globals is None: + globals = {} + + if locals is None: + locals = {} + if isinstance(owner, type): + locals.update(vars(owner)) + + if type_params is None and owner is not None: + # "Inject" type parameters into the local namespace + # (unless they are shadowed by assignments *in* the local namespace), + # as a way of emulating annotation scopes when calling `eval()` + type_params = getattr(owner, "__type_params__", None) + + # Type parameters exist in their own scope, which is logically + # between the locals and the globals. We simulate this by adding + # them to the globals. + if type_params is not None: + globals = dict(globals) + for param in type_params: + globals[param.__name__] = param + + arg = forward_ref.__forward_arg__ + if arg.isidentifier() and not keyword.iskeyword(arg): + if arg in locals: + value = locals[arg] + elif arg in globals: + value = globals[arg] + elif hasattr(builtins, arg): + return getattr(builtins, arg) + else: + raise NameError(arg) + else: + code = forward_ref.__forward_code__ + value = eval(code, globals, locals) + forward_ref.__forward_evaluated__ = True + forward_ref.__forward_value__ = value + return value + + def evaluate_forward_ref( + forward_ref, + *, + owner=None, + globals=None, + locals=None, + type_params=None, + format=None, + _recursive_guard=frozenset(), + ): + """Evaluate a forward reference as a type hint. + + This is similar to calling the ForwardRef.evaluate() method, + but unlike that method, evaluate_forward_ref() also: + + * Recursively evaluates forward references nested within the type hint. + * Rejects certain objects that are not valid type hints. + * Replaces type hints that evaluate to None with types.NoneType. + * Supports the *FORWARDREF* and *STRING* formats. + + *forward_ref* must be an instance of ForwardRef. *owner*, if given, + should be the object that holds the annotations that the forward reference + derived from, such as a module, class object, or function. It is used to + infer the namespaces to use for looking up names. *globals* and *locals* + can also be explicitly given to provide the global and local namespaces. + *type_params* is a tuple of type parameters that are in scope when + evaluating the forward reference. This parameter must be provided (though + it may be an empty tuple) if *owner* is not given and the forward reference + does not already have an owner set. *format* specifies the format of the + annotation and is a member of the annotationlib.Format enum. + + """ + if format == Format.STRING: + return forward_ref.__forward_arg__ + if forward_ref.__forward_arg__ in _recursive_guard: + return forward_ref + + # Evaluate the forward reference + try: + value = _eval_with_owner( + forward_ref, + owner=owner, + globals=globals, + locals=locals, + type_params=type_params, + ) + except NameError: + if format == Format.FORWARDREF: + return forward_ref + else: + raise + + if isinstance(value, str): + value = ForwardRef(value) + + # Recursively evaluate the type + if isinstance(value, ForwardRef): + if getattr(value, "__forward_module__", True) is not None: + globals = None + return evaluate_forward_ref( + value, + globals=globals, + locals=locals, + type_params=type_params, owner=owner, + _recursive_guard=_recursive_guard, format=format + ) + if sys.version_info < (3, 12, 5) and type_params: + # Make use of type_params + locals = dict(locals) if locals else {} + for tvar in type_params: + if tvar.__name__ not in locals: # lets not overwrite something present + locals[tvar.__name__] = tvar + if sys.version_info < (3, 12, 5): + return typing._eval_type( + value, + globals, + locals, + recursive_guard=_recursive_guard | {forward_ref.__forward_arg__}, + ) + else: + return typing._eval_type( + value, + globals, + locals, + type_params, + recursive_guard=_recursive_guard | {forward_ref.__forward_arg__}, + ) + + +class Sentinel: + """Create a unique sentinel object. + + *name* should be the name of the variable to which the return value shall be assigned. + + *repr*, if supplied, will be used for the repr of the sentinel object. + If not provided, "" will be used. + """ + + def __init__( + self, + name: str, + repr: typing.Optional[str] = None, + ): + self._name = name + self._repr = repr if repr is not None else f'<{name}>' + + def __repr__(self): + return self._repr + + if sys.version_info < (3, 11): + # The presence of this method convinces typing._type_check + # that Sentinels are types. + def __call__(self, *args, **kwargs): + raise TypeError(f"{type(self).__name__!r} object is not callable") + + # Breakpoint: https://github.com/python/cpython/pull/21515 + if sys.version_info >= (3, 10): + def __or__(self, other): + return typing.Union[self, other] + + def __ror__(self, other): + return typing.Union[other, self] + + def __getstate__(self): + raise TypeError(f"Cannot pickle {type(self).__name__!r} object") + + +if sys.version_info >= (3, 14, 0, "beta"): + type_repr = annotationlib.type_repr +else: + def type_repr(value): + """Convert a Python value to a format suitable for use with the STRING format. + + This is intended as a helper for tools that support the STRING format but do + not have access to the code that originally produced the annotations. It uses + repr() for most objects. + + """ + if isinstance(value, (type, _types.FunctionType, _types.BuiltinFunctionType)): + if value.__module__ == "builtins": + return value.__qualname__ + return f"{value.__module__}.{value.__qualname__}" + if value is ...: + return "..." + return repr(value) + + +# Aliases for items that are in typing in all supported versions. +# We use hasattr() checks so this library will continue to import on +# future versions of Python that may remove these names. +_typing_names = [ + "AbstractSet", + "AnyStr", + "BinaryIO", + "Callable", + "Collection", + "Container", + "Dict", + "FrozenSet", + "Hashable", + "IO", + "ItemsView", + "Iterable", + "Iterator", + "KeysView", + "List", + "Mapping", + "MappingView", + "Match", + "MutableMapping", + "MutableSequence", + "MutableSet", + "Optional", + "Pattern", + "Reversible", + "Sequence", + "Set", + "Sized", + "TextIO", + "Tuple", + "Union", + "ValuesView", + "cast", + "no_type_check", + "no_type_check_decorator", + # This is private, but it was defined by typing_extensions for a long time + # and some users rely on it. + "_AnnotatedAlias", +] +globals().update( + {name: getattr(typing, name) for name in _typing_names if hasattr(typing, name)} +) +# These are defined unconditionally because they are used in +# typing-extensions itself. +Generic = typing.Generic +ForwardRef = typing.ForwardRef +Annotated = typing.Annotated diff --git a/frogpilot/third_party/urllib3/__init__.py b/frogpilot/third_party/urllib3/__init__.py new file mode 100644 index 000000000..3fe782c8a --- /dev/null +++ b/frogpilot/third_party/urllib3/__init__.py @@ -0,0 +1,211 @@ +""" +Python HTTP library with thread-safe connection pooling, file post support, user friendly, and more +""" + +from __future__ import annotations + +# Set default logging handler to avoid "No handler found" warnings. +import logging +import sys +import typing +import warnings +from logging import NullHandler + +from . import exceptions +from ._base_connection import _TYPE_BODY +from ._collections import HTTPHeaderDict +from ._version import __version__ +from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool, connection_from_url +from .filepost import _TYPE_FIELDS, encode_multipart_formdata +from .poolmanager import PoolManager, ProxyManager, proxy_from_url +from .response import BaseHTTPResponse, HTTPResponse +from .util.request import make_headers +from .util.retry import Retry +from .util.timeout import Timeout + +# Ensure that Python is compiled with OpenSSL 1.1.1+ +# If the 'ssl' module isn't available at all that's +# fine, we only care if the module is available. +try: + import ssl +except ImportError: + pass +else: + if not ssl.OPENSSL_VERSION.startswith("OpenSSL "): # Defensive: + warnings.warn( + "urllib3 v2 only supports OpenSSL 1.1.1+, currently " + f"the 'ssl' module is compiled with {ssl.OPENSSL_VERSION!r}. " + "See: https://github.com/urllib3/urllib3/issues/3020", + exceptions.NotOpenSSLWarning, + ) + elif ssl.OPENSSL_VERSION_INFO < (1, 1, 1): # Defensive: + raise ImportError( + "urllib3 v2 only supports OpenSSL 1.1.1+, currently " + f"the 'ssl' module is compiled with {ssl.OPENSSL_VERSION!r}. " + "See: https://github.com/urllib3/urllib3/issues/2168" + ) + +__author__ = "Andrey Petrov (andrey.petrov@shazow.net)" +__license__ = "MIT" +__version__ = __version__ + +__all__ = ( + "HTTPConnectionPool", + "HTTPHeaderDict", + "HTTPSConnectionPool", + "PoolManager", + "ProxyManager", + "HTTPResponse", + "Retry", + "Timeout", + "add_stderr_logger", + "connection_from_url", + "disable_warnings", + "encode_multipart_formdata", + "make_headers", + "proxy_from_url", + "request", + "BaseHTTPResponse", +) + +logging.getLogger(__name__).addHandler(NullHandler()) + + +def add_stderr_logger( + level: int = logging.DEBUG, +) -> logging.StreamHandler[typing.TextIO]: + """ + Helper for quickly adding a StreamHandler to the logger. Useful for + debugging. + + Returns the handler after adding it. + """ + # This method needs to be in this __init__.py to get the __name__ correct + # even if urllib3 is vendored within another package. + logger = logging.getLogger(__name__) + handler = logging.StreamHandler() + handler.setFormatter(logging.Formatter("%(asctime)s %(levelname)s %(message)s")) + logger.addHandler(handler) + logger.setLevel(level) + logger.debug("Added a stderr logging handler to logger: %s", __name__) + return handler + + +# ... Clean up. +del NullHandler + + +# All warning filters *must* be appended unless you're really certain that they +# shouldn't be: otherwise, it's very hard for users to use most Python +# mechanisms to silence them. +# SecurityWarning's always go off by default. +warnings.simplefilter("always", exceptions.SecurityWarning, append=True) +# InsecurePlatformWarning's don't vary between requests, so we keep it default. +warnings.simplefilter("default", exceptions.InsecurePlatformWarning, append=True) + + +def disable_warnings(category: type[Warning] = exceptions.HTTPWarning) -> None: + """ + Helper for quickly disabling all urllib3 warnings. + """ + warnings.simplefilter("ignore", category) + + +_DEFAULT_POOL = PoolManager() + + +def request( + method: str, + url: str, + *, + body: _TYPE_BODY | None = None, + fields: _TYPE_FIELDS | None = None, + headers: typing.Mapping[str, str] | None = None, + preload_content: bool | None = True, + decode_content: bool | None = True, + redirect: bool | None = True, + retries: Retry | bool | int | None = None, + timeout: Timeout | float | int | None = 3, + json: typing.Any | None = None, +) -> BaseHTTPResponse: + """ + A convenience, top-level request method. It uses a module-global ``PoolManager`` instance. + Therefore, its side effects could be shared across dependencies relying on it. + To avoid side effects create a new ``PoolManager`` instance and use it instead. + The method does not accept low-level ``**urlopen_kw`` keyword arguments. + + :param method: + HTTP request method (such as GET, POST, PUT, etc.) + + :param url: + The URL to perform the request on. + + :param body: + Data to send in the request body, either :class:`str`, :class:`bytes`, + an iterable of :class:`str`/:class:`bytes`, or a file-like object. + + :param fields: + Data to encode and send in the request body. + + :param headers: + Dictionary of custom headers to send, such as User-Agent, + If-None-Match, etc. + + :param bool preload_content: + If True, the response's body will be preloaded into memory. + + :param bool decode_content: + If True, will attempt to decode the body based on the + 'content-encoding' header. + + :param redirect: + If True, automatically handle redirects (status codes 301, 302, + 303, 307, 308). Each redirect counts as a retry. Disabling retries + will disable redirect, too. + + :param retries: + Configure the number of retries to allow before raising a + :class:`~urllib3.exceptions.MaxRetryError` exception. + + If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. Pass a + :class:`~urllib3.util.retry.Retry` object for fine-grained control + over different types of retries. + Pass an integer number to retry connection errors that many times, + but no other types of errors. Pass zero to never retry. + + If ``False``, then retries are disabled and any exception is raised + immediately. Also, instead of raising a MaxRetryError on redirects, + the redirect response will be returned. + + :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. + + :param timeout: + If specified, overrides the default timeout for this one + request. It may be a float (in seconds) or an instance of + :class:`urllib3.util.Timeout`. + + :param json: + Data to encode and send as JSON with UTF-encoded in the request body. + The ``"Content-Type"`` header will be set to ``"application/json"`` + unless specified otherwise. + """ + + return _DEFAULT_POOL.request( + method, + url, + body=body, + fields=fields, + headers=headers, + preload_content=preload_content, + decode_content=decode_content, + redirect=redirect, + retries=retries, + timeout=timeout, + json=json, + ) + + +if sys.platform == "emscripten": + from .contrib.emscripten import inject_into_urllib3 # noqa: 401 + + inject_into_urllib3() diff --git a/frogpilot/third_party/urllib3/_base_connection.py b/frogpilot/third_party/urllib3/_base_connection.py new file mode 100644 index 000000000..dc0f318c0 --- /dev/null +++ b/frogpilot/third_party/urllib3/_base_connection.py @@ -0,0 +1,165 @@ +from __future__ import annotations + +import typing + +from .util.connection import _TYPE_SOCKET_OPTIONS +from .util.timeout import _DEFAULT_TIMEOUT, _TYPE_TIMEOUT +from .util.url import Url + +_TYPE_BODY = typing.Union[bytes, typing.IO[typing.Any], typing.Iterable[bytes], str] + + +class ProxyConfig(typing.NamedTuple): + ssl_context: ssl.SSLContext | None + use_forwarding_for_https: bool + assert_hostname: None | str | typing.Literal[False] + assert_fingerprint: str | None + + +class _ResponseOptions(typing.NamedTuple): + # TODO: Remove this in favor of a better + # HTTP request/response lifecycle tracking. + request_method: str + request_url: str + preload_content: bool + decode_content: bool + enforce_content_length: bool + + +if typing.TYPE_CHECKING: + import ssl + from typing import Protocol + + from .response import BaseHTTPResponse + + class BaseHTTPConnection(Protocol): + default_port: typing.ClassVar[int] + default_socket_options: typing.ClassVar[_TYPE_SOCKET_OPTIONS] + + host: str + port: int + timeout: None | ( + float + ) # Instance doesn't store _DEFAULT_TIMEOUT, must be resolved. + blocksize: int + source_address: tuple[str, int] | None + socket_options: _TYPE_SOCKET_OPTIONS | None + + proxy: Url | None + proxy_config: ProxyConfig | None + + is_verified: bool + proxy_is_verified: bool | None + + def __init__( + self, + host: str, + port: int | None = None, + *, + timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, + source_address: tuple[str, int] | None = None, + blocksize: int = 8192, + socket_options: _TYPE_SOCKET_OPTIONS | None = ..., + proxy: Url | None = None, + proxy_config: ProxyConfig | None = None, + ) -> None: ... + + def set_tunnel( + self, + host: str, + port: int | None = None, + headers: typing.Mapping[str, str] | None = None, + scheme: str = "http", + ) -> None: ... + + def connect(self) -> None: ... + + def request( + self, + method: str, + url: str, + body: _TYPE_BODY | None = None, + headers: typing.Mapping[str, str] | None = None, + # We know *at least* botocore is depending on the order of the + # first 3 parameters so to be safe we only mark the later ones + # as keyword-only to ensure we have space to extend. + *, + chunked: bool = False, + preload_content: bool = True, + decode_content: bool = True, + enforce_content_length: bool = True, + ) -> None: ... + + def getresponse(self) -> BaseHTTPResponse: ... + + def close(self) -> None: ... + + @property + def is_closed(self) -> bool: + """Whether the connection either is brand new or has been previously closed. + If this property is True then both ``is_connected`` and ``has_connected_to_proxy`` + properties must be False. + """ + + @property + def is_connected(self) -> bool: + """Whether the connection is actively connected to any origin (proxy or target)""" + + @property + def has_connected_to_proxy(self) -> bool: + """Whether the connection has successfully connected to its proxy. + This returns False if no proxy is in use. Used to determine whether + errors are coming from the proxy layer or from tunnelling to the target origin. + """ + + class BaseHTTPSConnection(BaseHTTPConnection, Protocol): + default_port: typing.ClassVar[int] + default_socket_options: typing.ClassVar[_TYPE_SOCKET_OPTIONS] + + # Certificate verification methods + cert_reqs: int | str | None + assert_hostname: None | str | typing.Literal[False] + assert_fingerprint: str | None + ssl_context: ssl.SSLContext | None + + # Trusted CAs + ca_certs: str | None + ca_cert_dir: str | None + ca_cert_data: None | str | bytes + + # TLS version + ssl_minimum_version: int | None + ssl_maximum_version: int | None + ssl_version: int | str | None # Deprecated + + # Client certificates + cert_file: str | None + key_file: str | None + key_password: str | None + + def __init__( + self, + host: str, + port: int | None = None, + *, + timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, + source_address: tuple[str, int] | None = None, + blocksize: int = 16384, + socket_options: _TYPE_SOCKET_OPTIONS | None = ..., + proxy: Url | None = None, + proxy_config: ProxyConfig | None = None, + cert_reqs: int | str | None = None, + assert_hostname: None | str | typing.Literal[False] = None, + assert_fingerprint: str | None = None, + server_hostname: str | None = None, + ssl_context: ssl.SSLContext | None = None, + ca_certs: str | None = None, + ca_cert_dir: str | None = None, + ca_cert_data: None | str | bytes = None, + ssl_minimum_version: int | None = None, + ssl_maximum_version: int | None = None, + ssl_version: int | str | None = None, # Deprecated + cert_file: str | None = None, + key_file: str | None = None, + key_password: str | None = None, + ) -> None: ... diff --git a/frogpilot/third_party/urllib3/_collections.py b/frogpilot/third_party/urllib3/_collections.py new file mode 100644 index 000000000..1b6c13642 --- /dev/null +++ b/frogpilot/third_party/urllib3/_collections.py @@ -0,0 +1,479 @@ +from __future__ import annotations + +import typing +from collections import OrderedDict +from enum import Enum, auto +from threading import RLock + +if typing.TYPE_CHECKING: + # We can only import Protocol if TYPE_CHECKING because it's a development + # dependency, and is not available at runtime. + from typing import Protocol + + from typing_extensions import Self + + class HasGettableStringKeys(Protocol): + def keys(self) -> typing.Iterator[str]: ... + + def __getitem__(self, key: str) -> str: ... + + +__all__ = ["RecentlyUsedContainer", "HTTPHeaderDict"] + + +# Key type +_KT = typing.TypeVar("_KT") +# Value type +_VT = typing.TypeVar("_VT") +# Default type +_DT = typing.TypeVar("_DT") + +ValidHTTPHeaderSource = typing.Union[ + "HTTPHeaderDict", + typing.Mapping[str, str], + typing.Iterable[tuple[str, str]], + "HasGettableStringKeys", +] + + +class _Sentinel(Enum): + not_passed = auto() + + +def ensure_can_construct_http_header_dict( + potential: object, +) -> ValidHTTPHeaderSource | None: + if isinstance(potential, HTTPHeaderDict): + return potential + elif isinstance(potential, typing.Mapping): + # Full runtime checking of the contents of a Mapping is expensive, so for the + # purposes of typechecking, we assume that any Mapping is the right shape. + return typing.cast(typing.Mapping[str, str], potential) + elif isinstance(potential, typing.Iterable): + # Similarly to Mapping, full runtime checking of the contents of an Iterable is + # expensive, so for the purposes of typechecking, we assume that any Iterable + # is the right shape. + return typing.cast(typing.Iterable[tuple[str, str]], potential) + elif hasattr(potential, "keys") and hasattr(potential, "__getitem__"): + return typing.cast("HasGettableStringKeys", potential) + else: + return None + + +class RecentlyUsedContainer(typing.Generic[_KT, _VT], typing.MutableMapping[_KT, _VT]): + """ + Provides a thread-safe dict-like container which maintains up to + ``maxsize`` keys while throwing away the least-recently-used keys beyond + ``maxsize``. + + :param maxsize: + Maximum number of recent elements to retain. + + :param dispose_func: + Every time an item is evicted from the container, + ``dispose_func(value)`` is called. Callback which will get called + """ + + _container: typing.OrderedDict[_KT, _VT] + _maxsize: int + dispose_func: typing.Callable[[_VT], None] | None + lock: RLock + + def __init__( + self, + maxsize: int = 10, + dispose_func: typing.Callable[[_VT], None] | None = None, + ) -> None: + super().__init__() + self._maxsize = maxsize + self.dispose_func = dispose_func + self._container = OrderedDict() + self.lock = RLock() + + def __getitem__(self, key: _KT) -> _VT: + # Re-insert the item, moving it to the end of the eviction line. + with self.lock: + item = self._container.pop(key) + self._container[key] = item + return item + + def __setitem__(self, key: _KT, value: _VT) -> None: + evicted_item = None + with self.lock: + # Possibly evict the existing value of 'key' + try: + # If the key exists, we'll overwrite it, which won't change the + # size of the pool. Because accessing a key should move it to + # the end of the eviction line, we pop it out first. + evicted_item = key, self._container.pop(key) + self._container[key] = value + except KeyError: + # When the key does not exist, we insert the value first so that + # evicting works in all cases, including when self._maxsize is 0 + self._container[key] = value + if len(self._container) > self._maxsize: + # If we didn't evict an existing value, and we've hit our maximum + # size, then we have to evict the least recently used item from + # the beginning of the container. + evicted_item = self._container.popitem(last=False) + + # After releasing the lock on the pool, dispose of any evicted value. + if evicted_item is not None and self.dispose_func: + _, evicted_value = evicted_item + self.dispose_func(evicted_value) + + def __delitem__(self, key: _KT) -> None: + with self.lock: + value = self._container.pop(key) + + if self.dispose_func: + self.dispose_func(value) + + def __len__(self) -> int: + with self.lock: + return len(self._container) + + def __iter__(self) -> typing.NoReturn: + raise NotImplementedError( + "Iteration over this class is unlikely to be threadsafe." + ) + + def clear(self) -> None: + with self.lock: + # Copy pointers to all values, then wipe the mapping + values = list(self._container.values()) + self._container.clear() + + if self.dispose_func: + for value in values: + self.dispose_func(value) + + def keys(self) -> set[_KT]: # type: ignore[override] + with self.lock: + return set(self._container.keys()) + + +class HTTPHeaderDictItemView(set[tuple[str, str]]): + """ + HTTPHeaderDict is unusual for a Mapping[str, str] in that it has two modes of + address. + + If we directly try to get an item with a particular name, we will get a string + back that is the concatenated version of all the values: + + >>> d['X-Header-Name'] + 'Value1, Value2, Value3' + + However, if we iterate over an HTTPHeaderDict's items, we will optionally combine + these values based on whether combine=True was called when building up the dictionary + + >>> d = HTTPHeaderDict({"A": "1", "B": "foo"}) + >>> d.add("A", "2", combine=True) + >>> d.add("B", "bar") + >>> list(d.items()) + [ + ('A', '1, 2'), + ('B', 'foo'), + ('B', 'bar'), + ] + + This class conforms to the interface required by the MutableMapping ABC while + also giving us the nonstandard iteration behavior we want; items with duplicate + keys, ordered by time of first insertion. + """ + + _headers: HTTPHeaderDict + + def __init__(self, headers: HTTPHeaderDict) -> None: + self._headers = headers + + def __len__(self) -> int: + return len(list(self._headers.iteritems())) + + def __iter__(self) -> typing.Iterator[tuple[str, str]]: + return self._headers.iteritems() + + def __contains__(self, item: object) -> bool: + if isinstance(item, tuple) and len(item) == 2: + passed_key, passed_val = item + if isinstance(passed_key, str) and isinstance(passed_val, str): + return self._headers._has_value_for_header(passed_key, passed_val) + return False + + +class HTTPHeaderDict(typing.MutableMapping[str, str]): + """ + :param headers: + An iterable of field-value pairs. Must not contain multiple field names + when compared case-insensitively. + + :param kwargs: + Additional field-value pairs to pass in to ``dict.update``. + + A ``dict`` like container for storing HTTP Headers. + + Field names are stored and compared case-insensitively in compliance with + RFC 7230. Iteration provides the first case-sensitive key seen for each + case-insensitive pair. + + Using ``__setitem__`` syntax overwrites fields that compare equal + case-insensitively in order to maintain ``dict``'s api. For fields that + compare equal, instead create a new ``HTTPHeaderDict`` and use ``.add`` + in a loop. + + If multiple fields that are equal case-insensitively are passed to the + constructor or ``.update``, the behavior is undefined and some will be + lost. + + >>> headers = HTTPHeaderDict() + >>> headers.add('Set-Cookie', 'foo=bar') + >>> headers.add('set-cookie', 'baz=quxx') + >>> headers['content-length'] = '7' + >>> headers['SET-cookie'] + 'foo=bar, baz=quxx' + >>> headers['Content-Length'] + '7' + """ + + _container: typing.MutableMapping[str, list[str]] + + def __init__(self, headers: ValidHTTPHeaderSource | None = None, **kwargs: str): + super().__init__() + self._container = {} # 'dict' is insert-ordered + if headers is not None: + if isinstance(headers, HTTPHeaderDict): + self._copy_from(headers) + else: + self.extend(headers) + if kwargs: + self.extend(kwargs) + + def __setitem__(self, key: str, val: str) -> None: + # avoid a bytes/str comparison by decoding before httplib + if isinstance(key, bytes): + key = key.decode("latin-1") + self._container[key.lower()] = [key, val] + + def __getitem__(self, key: str) -> str: + val = self._container[key.lower()] + return ", ".join(val[1:]) + + def __delitem__(self, key: str) -> None: + del self._container[key.lower()] + + def __contains__(self, key: object) -> bool: + if isinstance(key, str): + return key.lower() in self._container + return False + + def setdefault(self, key: str, default: str = "") -> str: + return super().setdefault(key, default) + + def __eq__(self, other: object) -> bool: + maybe_constructable = ensure_can_construct_http_header_dict(other) + if maybe_constructable is None: + return False + else: + other_as_http_header_dict = type(self)(maybe_constructable) + + return {k.lower(): v for k, v in self.itermerged()} == { + k.lower(): v for k, v in other_as_http_header_dict.itermerged() + } + + def __ne__(self, other: object) -> bool: + return not self.__eq__(other) + + def __len__(self) -> int: + return len(self._container) + + def __iter__(self) -> typing.Iterator[str]: + # Only provide the originally cased names + for vals in self._container.values(): + yield vals[0] + + def discard(self, key: str) -> None: + try: + del self[key] + except KeyError: + pass + + def add(self, key: str, val: str, *, combine: bool = False) -> None: + """Adds a (name, value) pair, doesn't overwrite the value if it already + exists. + + If this is called with combine=True, instead of adding a new header value + as a distinct item during iteration, this will instead append the value to + any existing header value with a comma. If no existing header value exists + for the key, then the value will simply be added, ignoring the combine parameter. + + >>> headers = HTTPHeaderDict(foo='bar') + >>> headers.add('Foo', 'baz') + >>> headers['foo'] + 'bar, baz' + >>> list(headers.items()) + [('foo', 'bar'), ('foo', 'baz')] + >>> headers.add('foo', 'quz', combine=True) + >>> list(headers.items()) + [('foo', 'bar, baz, quz')] + """ + # avoid a bytes/str comparison by decoding before httplib + if isinstance(key, bytes): + key = key.decode("latin-1") + key_lower = key.lower() + new_vals = [key, val] + # Keep the common case aka no item present as fast as possible + vals = self._container.setdefault(key_lower, new_vals) + if new_vals is not vals: + # if there are values here, then there is at least the initial + # key/value pair + assert len(vals) >= 2 + if combine: + vals[-1] = vals[-1] + ", " + val + else: + vals.append(val) + + def extend(self, *args: ValidHTTPHeaderSource, **kwargs: str) -> None: + """Generic import function for any type of header-like object. + Adapted version of MutableMapping.update in order to insert items + with self.add instead of self.__setitem__ + """ + if len(args) > 1: + raise TypeError( + f"extend() takes at most 1 positional arguments ({len(args)} given)" + ) + other = args[0] if len(args) >= 1 else () + + if isinstance(other, HTTPHeaderDict): + for key, val in other.iteritems(): + self.add(key, val) + elif isinstance(other, typing.Mapping): + for key, val in other.items(): + self.add(key, val) + elif isinstance(other, typing.Iterable): + other = typing.cast(typing.Iterable[tuple[str, str]], other) + for key, value in other: + self.add(key, value) + elif hasattr(other, "keys") and hasattr(other, "__getitem__"): + # THIS IS NOT A TYPESAFE BRANCH + # In this branch, the object has a `keys` attr but is not a Mapping or any of + # the other types indicated in the method signature. We do some stuff with + # it as though it partially implements the Mapping interface, but we're not + # doing that stuff safely AT ALL. + for key in other.keys(): + self.add(key, other[key]) + + for key, value in kwargs.items(): + self.add(key, value) + + @typing.overload + def getlist(self, key: str) -> list[str]: ... + + @typing.overload + def getlist(self, key: str, default: _DT) -> list[str] | _DT: ... + + def getlist( + self, key: str, default: _Sentinel | _DT = _Sentinel.not_passed + ) -> list[str] | _DT: + """Returns a list of all the values for the named field. Returns an + empty list if the key doesn't exist.""" + try: + vals = self._container[key.lower()] + except KeyError: + if default is _Sentinel.not_passed: + # _DT is unbound; empty list is instance of List[str] + return [] + # _DT is bound; default is instance of _DT + return default + else: + # _DT may or may not be bound; vals[1:] is instance of List[str], which + # meets our external interface requirement of `Union[List[str], _DT]`. + return vals[1:] + + def _prepare_for_method_change(self) -> Self: + """ + Remove content-specific header fields before changing the request + method to GET or HEAD according to RFC 9110, Section 15.4. + """ + content_specific_headers = [ + "Content-Encoding", + "Content-Language", + "Content-Location", + "Content-Type", + "Content-Length", + "Digest", + "Last-Modified", + ] + for header in content_specific_headers: + self.discard(header) + return self + + # Backwards compatibility for httplib + getheaders = getlist + getallmatchingheaders = getlist + iget = getlist + + # Backwards compatibility for http.cookiejar + get_all = getlist + + def __repr__(self) -> str: + return f"{type(self).__name__}({dict(self.itermerged())})" + + def _copy_from(self, other: HTTPHeaderDict) -> None: + for key in other: + val = other.getlist(key) + self._container[key.lower()] = [key, *val] + + def copy(self) -> Self: + clone = type(self)() + clone._copy_from(self) + return clone + + def iteritems(self) -> typing.Iterator[tuple[str, str]]: + """Iterate over all header lines, including duplicate ones.""" + for key in self: + vals = self._container[key.lower()] + for val in vals[1:]: + yield vals[0], val + + def itermerged(self) -> typing.Iterator[tuple[str, str]]: + """Iterate over all headers, merging duplicate ones together.""" + for key in self: + val = self._container[key.lower()] + yield val[0], ", ".join(val[1:]) + + def items(self) -> HTTPHeaderDictItemView: # type: ignore[override] + return HTTPHeaderDictItemView(self) + + def _has_value_for_header(self, header_name: str, potential_value: str) -> bool: + if header_name in self: + return potential_value in self._container[header_name.lower()][1:] + return False + + def __ior__(self, other: object) -> HTTPHeaderDict: + # Supports extending a header dict in-place using operator |= + # combining items with add instead of __setitem__ + maybe_constructable = ensure_can_construct_http_header_dict(other) + if maybe_constructable is None: + return NotImplemented + self.extend(maybe_constructable) + return self + + def __or__(self, other: object) -> Self: + # Supports merging header dicts using operator | + # combining items with add instead of __setitem__ + maybe_constructable = ensure_can_construct_http_header_dict(other) + if maybe_constructable is None: + return NotImplemented + result = self.copy() + result.extend(maybe_constructable) + return result + + def __ror__(self, other: object) -> Self: + # Supports merging header dicts using operator | when other is on left side + # combining items with add instead of __setitem__ + maybe_constructable = ensure_can_construct_http_header_dict(other) + if maybe_constructable is None: + return NotImplemented + result = type(self)(maybe_constructable) + result.extend(self) + return result diff --git a/frogpilot/third_party/urllib3/_request_methods.py b/frogpilot/third_party/urllib3/_request_methods.py new file mode 100644 index 000000000..297c271bf --- /dev/null +++ b/frogpilot/third_party/urllib3/_request_methods.py @@ -0,0 +1,278 @@ +from __future__ import annotations + +import json as _json +import typing +from urllib.parse import urlencode + +from ._base_connection import _TYPE_BODY +from ._collections import HTTPHeaderDict +from .filepost import _TYPE_FIELDS, encode_multipart_formdata +from .response import BaseHTTPResponse + +__all__ = ["RequestMethods"] + +_TYPE_ENCODE_URL_FIELDS = typing.Union[ + typing.Sequence[tuple[str, typing.Union[str, bytes]]], + typing.Mapping[str, typing.Union[str, bytes]], +] + + +class RequestMethods: + """ + Convenience mixin for classes who implement a :meth:`urlopen` method, such + as :class:`urllib3.HTTPConnectionPool` and + :class:`urllib3.PoolManager`. + + Provides behavior for making common types of HTTP request methods and + decides which type of request field encoding to use. + + Specifically, + + :meth:`.request_encode_url` is for sending requests whose fields are + encoded in the URL (such as GET, HEAD, DELETE). + + :meth:`.request_encode_body` is for sending requests whose fields are + encoded in the *body* of the request using multipart or www-form-urlencoded + (such as for POST, PUT, PATCH). + + :meth:`.request` is for making any kind of request, it will look up the + appropriate encoding format and use one of the above two methods to make + the request. + + Initializer parameters: + + :param headers: + Headers to include with all requests, unless other headers are given + explicitly. + """ + + _encode_url_methods = {"DELETE", "GET", "HEAD", "OPTIONS"} + + def __init__(self, headers: typing.Mapping[str, str] | None = None) -> None: + self.headers = headers or {} + + def urlopen( + self, + method: str, + url: str, + body: _TYPE_BODY | None = None, + headers: typing.Mapping[str, str] | None = None, + encode_multipart: bool = True, + multipart_boundary: str | None = None, + **kw: typing.Any, + ) -> BaseHTTPResponse: # Abstract + raise NotImplementedError( + "Classes extending RequestMethods must implement " + "their own ``urlopen`` method." + ) + + def request( + self, + method: str, + url: str, + body: _TYPE_BODY | None = None, + fields: _TYPE_FIELDS | None = None, + headers: typing.Mapping[str, str] | None = None, + json: typing.Any | None = None, + **urlopen_kw: typing.Any, + ) -> BaseHTTPResponse: + """ + Make a request using :meth:`urlopen` with the appropriate encoding of + ``fields`` based on the ``method`` used. + + This is a convenience method that requires the least amount of manual + effort. It can be used in most situations, while still having the + option to drop down to more specific methods when necessary, such as + :meth:`request_encode_url`, :meth:`request_encode_body`, + or even the lowest level :meth:`urlopen`. + + :param method: + HTTP request method (such as GET, POST, PUT, etc.) + + :param url: + The URL to perform the request on. + + :param body: + Data to send in the request body, either :class:`str`, :class:`bytes`, + an iterable of :class:`str`/:class:`bytes`, or a file-like object. + + :param fields: + Data to encode and send in the URL or request body, depending on ``method``. + + :param headers: + Dictionary of custom headers to send, such as User-Agent, + If-None-Match, etc. If None, pool headers are used. If provided, + these headers completely replace any pool-specific headers. + + :param json: + Data to encode and send as JSON with UTF-encoded in the request body. + The ``"Content-Type"`` header will be set to ``"application/json"`` + unless specified otherwise. + """ + method = method.upper() + + if json is not None and body is not None: + raise TypeError( + "request got values for both 'body' and 'json' parameters which are mutually exclusive" + ) + + if json is not None: + if headers is None: + headers = self.headers + + if not ("content-type" in map(str.lower, headers.keys())): + headers = HTTPHeaderDict(headers) + headers["Content-Type"] = "application/json" + + body = _json.dumps(json, separators=(",", ":"), ensure_ascii=False).encode( + "utf-8" + ) + + if body is not None: + urlopen_kw["body"] = body + + if method in self._encode_url_methods: + return self.request_encode_url( + method, + url, + fields=fields, # type: ignore[arg-type] + headers=headers, + **urlopen_kw, + ) + else: + return self.request_encode_body( + method, url, fields=fields, headers=headers, **urlopen_kw + ) + + def request_encode_url( + self, + method: str, + url: str, + fields: _TYPE_ENCODE_URL_FIELDS | None = None, + headers: typing.Mapping[str, str] | None = None, + **urlopen_kw: str, + ) -> BaseHTTPResponse: + """ + Make a request using :meth:`urlopen` with the ``fields`` encoded in + the url. This is useful for request methods like GET, HEAD, DELETE, etc. + + :param method: + HTTP request method (such as GET, POST, PUT, etc.) + + :param url: + The URL to perform the request on. + + :param fields: + Data to encode and send in the URL. + + :param headers: + Dictionary of custom headers to send, such as User-Agent, + If-None-Match, etc. If None, pool headers are used. If provided, + these headers completely replace any pool-specific headers. + """ + if headers is None: + headers = self.headers + + extra_kw: dict[str, typing.Any] = {"headers": headers} + extra_kw.update(urlopen_kw) + + if fields: + url += "?" + urlencode(fields) + + return self.urlopen(method, url, **extra_kw) + + def request_encode_body( + self, + method: str, + url: str, + fields: _TYPE_FIELDS | None = None, + headers: typing.Mapping[str, str] | None = None, + encode_multipart: bool = True, + multipart_boundary: str | None = None, + **urlopen_kw: str, + ) -> BaseHTTPResponse: + """ + Make a request using :meth:`urlopen` with the ``fields`` encoded in + the body. This is useful for request methods like POST, PUT, PATCH, etc. + + When ``encode_multipart=True`` (default), then + :func:`urllib3.encode_multipart_formdata` is used to encode + the payload with the appropriate content type. Otherwise + :func:`urllib.parse.urlencode` is used with the + 'application/x-www-form-urlencoded' content type. + + Multipart encoding must be used when posting files, and it's reasonably + safe to use it in other times too. However, it may break request + signing, such as with OAuth. + + Supports an optional ``fields`` parameter of key/value strings AND + key/filetuple. A filetuple is a (filename, data, MIME type) tuple where + the MIME type is optional. For example:: + + fields = { + 'foo': 'bar', + 'fakefile': ('foofile.txt', 'contents of foofile'), + 'realfile': ('barfile.txt', open('realfile').read()), + 'typedfile': ('bazfile.bin', open('bazfile').read(), + 'image/jpeg'), + 'nonamefile': 'contents of nonamefile field', + } + + When uploading a file, providing a filename (the first parameter of the + tuple) is optional but recommended to best mimic behavior of browsers. + + Note that if ``headers`` are supplied, the 'Content-Type' header will + be overwritten because it depends on the dynamic random boundary string + which is used to compose the body of the request. The random boundary + string can be explicitly set with the ``multipart_boundary`` parameter. + + :param method: + HTTP request method (such as GET, POST, PUT, etc.) + + :param url: + The URL to perform the request on. + + :param fields: + Data to encode and send in the request body. + + :param headers: + Dictionary of custom headers to send, such as User-Agent, + If-None-Match, etc. If None, pool headers are used. If provided, + these headers completely replace any pool-specific headers. + + :param encode_multipart: + If True, encode the ``fields`` using the multipart/form-data MIME + format. + + :param multipart_boundary: + If not specified, then a random boundary will be generated using + :func:`urllib3.filepost.choose_boundary`. + """ + if headers is None: + headers = self.headers + + extra_kw: dict[str, typing.Any] = {"headers": HTTPHeaderDict(headers)} + body: bytes | str + + if fields: + if "body" in urlopen_kw: + raise TypeError( + "request got values for both 'fields' and 'body', can only specify one." + ) + + if encode_multipart: + body, content_type = encode_multipart_formdata( + fields, boundary=multipart_boundary + ) + else: + body, content_type = ( + urlencode(fields), # type: ignore[arg-type] + "application/x-www-form-urlencoded", + ) + + extra_kw["body"] = body + extra_kw["headers"].setdefault("Content-Type", content_type) + + extra_kw.update(urlopen_kw) + + return self.urlopen(method, url, **extra_kw) diff --git a/frogpilot/third_party/urllib3/_version.py b/frogpilot/third_party/urllib3/_version.py new file mode 100644 index 000000000..49707ce59 --- /dev/null +++ b/frogpilot/third_party/urllib3/_version.py @@ -0,0 +1,21 @@ +# file generated by setuptools-scm +# don't change, don't track in version control + +__all__ = ["__version__", "__version_tuple__", "version", "version_tuple"] + +TYPE_CHECKING = False +if TYPE_CHECKING: + from typing import Tuple + from typing import Union + + VERSION_TUPLE = Tuple[Union[int, str], ...] +else: + VERSION_TUPLE = object + +version: str +__version__: str +__version_tuple__: VERSION_TUPLE +version_tuple: VERSION_TUPLE + +__version__ = version = '2.5.0' +__version_tuple__ = version_tuple = (2, 5, 0) diff --git a/frogpilot/third_party/urllib3/connection.py b/frogpilot/third_party/urllib3/connection.py new file mode 100644 index 000000000..8082387d9 --- /dev/null +++ b/frogpilot/third_party/urllib3/connection.py @@ -0,0 +1,1093 @@ +from __future__ import annotations + +import datetime +import http.client +import logging +import os +import re +import socket +import sys +import threading +import typing +import warnings +from http.client import HTTPConnection as _HTTPConnection +from http.client import HTTPException as HTTPException # noqa: F401 +from http.client import ResponseNotReady +from socket import timeout as SocketTimeout + +if typing.TYPE_CHECKING: + from .response import HTTPResponse + from .util.ssl_ import _TYPE_PEER_CERT_RET_DICT + from .util.ssltransport import SSLTransport + +from ._collections import HTTPHeaderDict +from .http2 import probe as http2_probe +from .util.response import assert_header_parsing +from .util.timeout import _DEFAULT_TIMEOUT, _TYPE_TIMEOUT, Timeout +from .util.util import to_str +from .util.wait import wait_for_read + +try: # Compiled with SSL? + import ssl + + BaseSSLError = ssl.SSLError +except (ImportError, AttributeError): + ssl = None # type: ignore[assignment] + + class BaseSSLError(BaseException): # type: ignore[no-redef] + pass + + +from ._base_connection import _TYPE_BODY +from ._base_connection import ProxyConfig as ProxyConfig +from ._base_connection import _ResponseOptions as _ResponseOptions +from ._version import __version__ +from .exceptions import ( + ConnectTimeoutError, + HeaderParsingError, + NameResolutionError, + NewConnectionError, + ProxyError, + SystemTimeWarning, +) +from .util import SKIP_HEADER, SKIPPABLE_HEADERS, connection, ssl_ +from .util.request import body_to_chunks +from .util.ssl_ import assert_fingerprint as _assert_fingerprint +from .util.ssl_ import ( + create_urllib3_context, + is_ipaddress, + resolve_cert_reqs, + resolve_ssl_version, + ssl_wrap_socket, +) +from .util.ssl_match_hostname import CertificateError, match_hostname +from .util.url import Url + +# Not a no-op, we're adding this to the namespace so it can be imported. +ConnectionError = ConnectionError +BrokenPipeError = BrokenPipeError + + +log = logging.getLogger(__name__) + +port_by_scheme = {"http": 80, "https": 443} + +# When it comes time to update this value as a part of regular maintenance +# (ie test_recent_date is failing) update it to ~6 months before the current date. +RECENT_DATE = datetime.date(2025, 1, 1) + +_CONTAINS_CONTROL_CHAR_RE = re.compile(r"[^-!#$%&'*+.^_`|~0-9a-zA-Z]") + + +class HTTPConnection(_HTTPConnection): + """ + Based on :class:`http.client.HTTPConnection` but provides an extra constructor + backwards-compatibility layer between older and newer Pythons. + + Additional keyword parameters are used to configure attributes of the connection. + Accepted parameters include: + + - ``source_address``: Set the source address for the current connection. + - ``socket_options``: Set specific options on the underlying socket. If not specified, then + defaults are loaded from ``HTTPConnection.default_socket_options`` which includes disabling + Nagle's algorithm (sets TCP_NODELAY to 1) unless the connection is behind a proxy. + + For example, if you wish to enable TCP Keep Alive in addition to the defaults, + you might pass: + + .. code-block:: python + + HTTPConnection.default_socket_options + [ + (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1), + ] + + Or you may want to disable the defaults by passing an empty list (e.g., ``[]``). + """ + + default_port: typing.ClassVar[int] = port_by_scheme["http"] # type: ignore[misc] + + #: Disable Nagle's algorithm by default. + #: ``[(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)]`` + default_socket_options: typing.ClassVar[connection._TYPE_SOCKET_OPTIONS] = [ + (socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + ] + + #: Whether this connection verifies the host's certificate. + is_verified: bool = False + + #: Whether this proxy connection verified the proxy host's certificate. + # If no proxy is currently connected to the value will be ``None``. + proxy_is_verified: bool | None = None + + blocksize: int + source_address: tuple[str, int] | None + socket_options: connection._TYPE_SOCKET_OPTIONS | None + + _has_connected_to_proxy: bool + _response_options: _ResponseOptions | None + _tunnel_host: str | None + _tunnel_port: int | None + _tunnel_scheme: str | None + + def __init__( + self, + host: str, + port: int | None = None, + *, + timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, + source_address: tuple[str, int] | None = None, + blocksize: int = 16384, + socket_options: None | ( + connection._TYPE_SOCKET_OPTIONS + ) = default_socket_options, + proxy: Url | None = None, + proxy_config: ProxyConfig | None = None, + ) -> None: + super().__init__( + host=host, + port=port, + timeout=Timeout.resolve_default_timeout(timeout), + source_address=source_address, + blocksize=blocksize, + ) + self.socket_options = socket_options + self.proxy = proxy + self.proxy_config = proxy_config + + self._has_connected_to_proxy = False + self._response_options = None + self._tunnel_host: str | None = None + self._tunnel_port: int | None = None + self._tunnel_scheme: str | None = None + + @property + def host(self) -> str: + """ + Getter method to remove any trailing dots that indicate the hostname is an FQDN. + + In general, SSL certificates don't include the trailing dot indicating a + fully-qualified domain name, and thus, they don't validate properly when + checked against a domain name that includes the dot. In addition, some + servers may not expect to receive the trailing dot when provided. + + However, the hostname with trailing dot is critical to DNS resolution; doing a + lookup with the trailing dot will properly only resolve the appropriate FQDN, + whereas a lookup without a trailing dot will search the system's search domain + list. Thus, it's important to keep the original host around for use only in + those cases where it's appropriate (i.e., when doing DNS lookup to establish the + actual TCP connection across which we're going to send HTTP requests). + """ + return self._dns_host.rstrip(".") + + @host.setter + def host(self, value: str) -> None: + """ + Setter for the `host` property. + + We assume that only urllib3 uses the _dns_host attribute; httplib itself + only uses `host`, and it seems reasonable that other libraries follow suit. + """ + self._dns_host = value + + def _new_conn(self) -> socket.socket: + """Establish a socket connection and set nodelay settings on it. + + :return: New socket connection. + """ + try: + sock = connection.create_connection( + (self._dns_host, self.port), + self.timeout, + source_address=self.source_address, + socket_options=self.socket_options, + ) + except socket.gaierror as e: + raise NameResolutionError(self.host, self, e) from e + except SocketTimeout as e: + raise ConnectTimeoutError( + self, + f"Connection to {self.host} timed out. (connect timeout={self.timeout})", + ) from e + + except OSError as e: + raise NewConnectionError( + self, f"Failed to establish a new connection: {e}" + ) from e + + sys.audit("http.client.connect", self, self.host, self.port) + + return sock + + def set_tunnel( + self, + host: str, + port: int | None = None, + headers: typing.Mapping[str, str] | None = None, + scheme: str = "http", + ) -> None: + if scheme not in ("http", "https"): + raise ValueError( + f"Invalid proxy scheme for tunneling: {scheme!r}, must be either 'http' or 'https'" + ) + super().set_tunnel(host, port=port, headers=headers) + self._tunnel_scheme = scheme + + if sys.version_info < (3, 11, 9) or ((3, 12) <= sys.version_info < (3, 12, 3)): + # Taken from python/cpython#100986 which was backported in 3.11.9 and 3.12.3. + # When using connection_from_host, host will come without brackets. + def _wrap_ipv6(self, ip: bytes) -> bytes: + if b":" in ip and ip[0] != b"["[0]: + return b"[" + ip + b"]" + return ip + + if sys.version_info < (3, 11, 9): + # `_tunnel` copied from 3.11.13 backporting + # https://github.com/python/cpython/commit/0d4026432591d43185568dd31cef6a034c4b9261 + # and https://github.com/python/cpython/commit/6fbc61070fda2ffb8889e77e3b24bca4249ab4d1 + def _tunnel(self) -> None: + _MAXLINE = http.client._MAXLINE # type: ignore[attr-defined] + connect = b"CONNECT %s:%d HTTP/1.0\r\n" % ( # type: ignore[str-format] + self._wrap_ipv6(self._tunnel_host.encode("ascii")), # type: ignore[union-attr] + self._tunnel_port, + ) + headers = [connect] + for header, value in self._tunnel_headers.items(): # type: ignore[attr-defined] + headers.append(f"{header}: {value}\r\n".encode("latin-1")) + headers.append(b"\r\n") + # Making a single send() call instead of one per line encourages + # the host OS to use a more optimal packet size instead of + # potentially emitting a series of small packets. + self.send(b"".join(headers)) + del headers + + response = self.response_class(self.sock, method=self._method) # type: ignore[attr-defined] + try: + (version, code, message) = response._read_status() # type: ignore[attr-defined] + + if code != http.HTTPStatus.OK: + self.close() + raise OSError( + f"Tunnel connection failed: {code} {message.strip()}" + ) + while True: + line = response.fp.readline(_MAXLINE + 1) + if len(line) > _MAXLINE: + raise http.client.LineTooLong("header line") + if not line: + # for sites which EOF without sending a trailer + break + if line in (b"\r\n", b"\n", b""): + break + + if self.debuglevel > 0: + print("header:", line.decode()) + finally: + response.close() + + elif (3, 12) <= sys.version_info < (3, 12, 3): + # `_tunnel` copied from 3.12.11 backporting + # https://github.com/python/cpython/commit/23aef575c7629abcd4aaf028ebd226fb41a4b3c8 + def _tunnel(self) -> None: # noqa: F811 + connect = b"CONNECT %s:%d HTTP/1.1\r\n" % ( # type: ignore[str-format] + self._wrap_ipv6(self._tunnel_host.encode("idna")), # type: ignore[union-attr] + self._tunnel_port, + ) + headers = [connect] + for header, value in self._tunnel_headers.items(): # type: ignore[attr-defined] + headers.append(f"{header}: {value}\r\n".encode("latin-1")) + headers.append(b"\r\n") + # Making a single send() call instead of one per line encourages + # the host OS to use a more optimal packet size instead of + # potentially emitting a series of small packets. + self.send(b"".join(headers)) + del headers + + response = self.response_class(self.sock, method=self._method) # type: ignore[attr-defined] + try: + (version, code, message) = response._read_status() # type: ignore[attr-defined] + + self._raw_proxy_headers = http.client._read_headers(response.fp) # type: ignore[attr-defined] + + if self.debuglevel > 0: + for header in self._raw_proxy_headers: + print("header:", header.decode()) + + if code != http.HTTPStatus.OK: + self.close() + raise OSError( + f"Tunnel connection failed: {code} {message.strip()}" + ) + + finally: + response.close() + + def connect(self) -> None: + self.sock = self._new_conn() + if self._tunnel_host: + # If we're tunneling it means we're connected to our proxy. + self._has_connected_to_proxy = True + + # TODO: Fix tunnel so it doesn't depend on self.sock state. + self._tunnel() + + # If there's a proxy to be connected to we are fully connected. + # This is set twice (once above and here) due to forwarding proxies + # not using tunnelling. + self._has_connected_to_proxy = bool(self.proxy) + + if self._has_connected_to_proxy: + self.proxy_is_verified = False + + @property + def is_closed(self) -> bool: + return self.sock is None + + @property + def is_connected(self) -> bool: + if self.sock is None: + return False + return not wait_for_read(self.sock, timeout=0.0) + + @property + def has_connected_to_proxy(self) -> bool: + return self._has_connected_to_proxy + + @property + def proxy_is_forwarding(self) -> bool: + """ + Return True if a forwarding proxy is configured, else return False + """ + return bool(self.proxy) and self._tunnel_host is None + + @property + def proxy_is_tunneling(self) -> bool: + """ + Return True if a tunneling proxy is configured, else return False + """ + return self._tunnel_host is not None + + def close(self) -> None: + try: + super().close() + finally: + # Reset all stateful properties so connection + # can be re-used without leaking prior configs. + self.sock = None + self.is_verified = False + self.proxy_is_verified = None + self._has_connected_to_proxy = False + self._response_options = None + self._tunnel_host = None + self._tunnel_port = None + self._tunnel_scheme = None + + def putrequest( + self, + method: str, + url: str, + skip_host: bool = False, + skip_accept_encoding: bool = False, + ) -> None: + """""" + # Empty docstring because the indentation of CPython's implementation + # is broken but we don't want this method in our documentation. + match = _CONTAINS_CONTROL_CHAR_RE.search(method) + if match: + raise ValueError( + f"Method cannot contain non-token characters {method!r} (found at least {match.group()!r})" + ) + + return super().putrequest( + method, url, skip_host=skip_host, skip_accept_encoding=skip_accept_encoding + ) + + def putheader(self, header: str, *values: str) -> None: # type: ignore[override] + """""" + if not any(isinstance(v, str) and v == SKIP_HEADER for v in values): + super().putheader(header, *values) + elif to_str(header.lower()) not in SKIPPABLE_HEADERS: + skippable_headers = "', '".join( + [str.title(header) for header in sorted(SKIPPABLE_HEADERS)] + ) + raise ValueError( + f"urllib3.util.SKIP_HEADER only supports '{skippable_headers}'" + ) + + # `request` method's signature intentionally violates LSP. + # urllib3's API is different from `http.client.HTTPConnection` and the subclassing is only incidental. + def request( # type: ignore[override] + self, + method: str, + url: str, + body: _TYPE_BODY | None = None, + headers: typing.Mapping[str, str] | None = None, + *, + chunked: bool = False, + preload_content: bool = True, + decode_content: bool = True, + enforce_content_length: bool = True, + ) -> None: + # Update the inner socket's timeout value to send the request. + # This only triggers if the connection is re-used. + if self.sock is not None: + self.sock.settimeout(self.timeout) + + # Store these values to be fed into the HTTPResponse + # object later. TODO: Remove this in favor of a real + # HTTP lifecycle mechanism. + + # We have to store these before we call .request() + # because sometimes we can still salvage a response + # off the wire even if we aren't able to completely + # send the request body. + self._response_options = _ResponseOptions( + request_method=method, + request_url=url, + preload_content=preload_content, + decode_content=decode_content, + enforce_content_length=enforce_content_length, + ) + + if headers is None: + headers = {} + header_keys = frozenset(to_str(k.lower()) for k in headers) + skip_accept_encoding = "accept-encoding" in header_keys + skip_host = "host" in header_keys + self.putrequest( + method, url, skip_accept_encoding=skip_accept_encoding, skip_host=skip_host + ) + + # Transform the body into an iterable of sendall()-able chunks + # and detect if an explicit Content-Length is doable. + chunks_and_cl = body_to_chunks(body, method=method, blocksize=self.blocksize) + chunks = chunks_and_cl.chunks + content_length = chunks_and_cl.content_length + + # When chunked is explicit set to 'True' we respect that. + if chunked: + if "transfer-encoding" not in header_keys: + self.putheader("Transfer-Encoding", "chunked") + else: + # Detect whether a framing mechanism is already in use. If so + # we respect that value, otherwise we pick chunked vs content-length + # depending on the type of 'body'. + if "content-length" in header_keys: + chunked = False + elif "transfer-encoding" in header_keys: + chunked = True + + # Otherwise we go off the recommendation of 'body_to_chunks()'. + else: + chunked = False + if content_length is None: + if chunks is not None: + chunked = True + self.putheader("Transfer-Encoding", "chunked") + else: + self.putheader("Content-Length", str(content_length)) + + # Now that framing headers are out of the way we send all the other headers. + if "user-agent" not in header_keys: + self.putheader("User-Agent", _get_default_user_agent()) + for header, value in headers.items(): + self.putheader(header, value) + self.endheaders() + + # If we're given a body we start sending that in chunks. + if chunks is not None: + for chunk in chunks: + # Sending empty chunks isn't allowed for TE: chunked + # as it indicates the end of the body. + if not chunk: + continue + if isinstance(chunk, str): + chunk = chunk.encode("utf-8") + if chunked: + self.send(b"%x\r\n%b\r\n" % (len(chunk), chunk)) + else: + self.send(chunk) + + # Regardless of whether we have a body or not, if we're in + # chunked mode we want to send an explicit empty chunk. + if chunked: + self.send(b"0\r\n\r\n") + + def request_chunked( + self, + method: str, + url: str, + body: _TYPE_BODY | None = None, + headers: typing.Mapping[str, str] | None = None, + ) -> None: + """ + Alternative to the common request method, which sends the + body with chunked encoding and not as one block + """ + warnings.warn( + "HTTPConnection.request_chunked() is deprecated and will be removed " + "in urllib3 v2.1.0. Instead use HTTPConnection.request(..., chunked=True).", + category=DeprecationWarning, + stacklevel=2, + ) + self.request(method, url, body=body, headers=headers, chunked=True) + + def getresponse( # type: ignore[override] + self, + ) -> HTTPResponse: + """ + Get the response from the server. + + If the HTTPConnection is in the correct state, returns an instance of HTTPResponse or of whatever object is returned by the response_class variable. + + If a request has not been sent or if a previous response has not be handled, ResponseNotReady is raised. If the HTTP response indicates that the connection should be closed, then it will be closed before the response is returned. When the connection is closed, the underlying socket is closed. + """ + # Raise the same error as http.client.HTTPConnection + if self._response_options is None: + raise ResponseNotReady() + + # Reset this attribute for being used again. + resp_options = self._response_options + self._response_options = None + + # Since the connection's timeout value may have been updated + # we need to set the timeout on the socket. + self.sock.settimeout(self.timeout) + + # This is needed here to avoid circular import errors + from .response import HTTPResponse + + # Save a reference to the shutdown function before ownership is passed + # to httplib_response + # TODO should we implement it everywhere? + _shutdown = getattr(self.sock, "shutdown", None) + + # Get the response from http.client.HTTPConnection + httplib_response = super().getresponse() + + try: + assert_header_parsing(httplib_response.msg) + except (HeaderParsingError, TypeError) as hpe: + log.warning( + "Failed to parse headers (url=%s): %s", + _url_from_connection(self, resp_options.request_url), + hpe, + exc_info=True, + ) + + headers = HTTPHeaderDict(httplib_response.msg.items()) + + response = HTTPResponse( + body=httplib_response, + headers=headers, + status=httplib_response.status, + version=httplib_response.version, + version_string=getattr(self, "_http_vsn_str", "HTTP/?"), + reason=httplib_response.reason, + preload_content=resp_options.preload_content, + decode_content=resp_options.decode_content, + original_response=httplib_response, + enforce_content_length=resp_options.enforce_content_length, + request_method=resp_options.request_method, + request_url=resp_options.request_url, + sock_shutdown=_shutdown, + ) + return response + + +class HTTPSConnection(HTTPConnection): + """ + Many of the parameters to this constructor are passed to the underlying SSL + socket by means of :py:func:`urllib3.util.ssl_wrap_socket`. + """ + + default_port = port_by_scheme["https"] # type: ignore[misc] + + cert_reqs: int | str | None = None + ca_certs: str | None = None + ca_cert_dir: str | None = None + ca_cert_data: None | str | bytes = None + ssl_version: int | str | None = None + ssl_minimum_version: int | None = None + ssl_maximum_version: int | None = None + assert_fingerprint: str | None = None + _connect_callback: typing.Callable[..., None] | None = None + + def __init__( + self, + host: str, + port: int | None = None, + *, + timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, + source_address: tuple[str, int] | None = None, + blocksize: int = 16384, + socket_options: None | ( + connection._TYPE_SOCKET_OPTIONS + ) = HTTPConnection.default_socket_options, + proxy: Url | None = None, + proxy_config: ProxyConfig | None = None, + cert_reqs: int | str | None = None, + assert_hostname: None | str | typing.Literal[False] = None, + assert_fingerprint: str | None = None, + server_hostname: str | None = None, + ssl_context: ssl.SSLContext | None = None, + ca_certs: str | None = None, + ca_cert_dir: str | None = None, + ca_cert_data: None | str | bytes = None, + ssl_minimum_version: int | None = None, + ssl_maximum_version: int | None = None, + ssl_version: int | str | None = None, # Deprecated + cert_file: str | None = None, + key_file: str | None = None, + key_password: str | None = None, + ) -> None: + super().__init__( + host, + port=port, + timeout=timeout, + source_address=source_address, + blocksize=blocksize, + socket_options=socket_options, + proxy=proxy, + proxy_config=proxy_config, + ) + + self.key_file = key_file + self.cert_file = cert_file + self.key_password = key_password + self.ssl_context = ssl_context + self.server_hostname = server_hostname + self.assert_hostname = assert_hostname + self.assert_fingerprint = assert_fingerprint + self.ssl_version = ssl_version + self.ssl_minimum_version = ssl_minimum_version + self.ssl_maximum_version = ssl_maximum_version + self.ca_certs = ca_certs and os.path.expanduser(ca_certs) + self.ca_cert_dir = ca_cert_dir and os.path.expanduser(ca_cert_dir) + self.ca_cert_data = ca_cert_data + + # cert_reqs depends on ssl_context so calculate last. + if cert_reqs is None: + if self.ssl_context is not None: + cert_reqs = self.ssl_context.verify_mode + else: + cert_reqs = resolve_cert_reqs(None) + self.cert_reqs = cert_reqs + self._connect_callback = None + + def set_cert( + self, + key_file: str | None = None, + cert_file: str | None = None, + cert_reqs: int | str | None = None, + key_password: str | None = None, + ca_certs: str | None = None, + assert_hostname: None | str | typing.Literal[False] = None, + assert_fingerprint: str | None = None, + ca_cert_dir: str | None = None, + ca_cert_data: None | str | bytes = None, + ) -> None: + """ + This method should only be called once, before the connection is used. + """ + warnings.warn( + "HTTPSConnection.set_cert() is deprecated and will be removed " + "in urllib3 v2.1.0. Instead provide the parameters to the " + "HTTPSConnection constructor.", + category=DeprecationWarning, + stacklevel=2, + ) + + # If cert_reqs is not provided we'll assume CERT_REQUIRED unless we also + # have an SSLContext object in which case we'll use its verify_mode. + if cert_reqs is None: + if self.ssl_context is not None: + cert_reqs = self.ssl_context.verify_mode + else: + cert_reqs = resolve_cert_reqs(None) + + self.key_file = key_file + self.cert_file = cert_file + self.cert_reqs = cert_reqs + self.key_password = key_password + self.assert_hostname = assert_hostname + self.assert_fingerprint = assert_fingerprint + self.ca_certs = ca_certs and os.path.expanduser(ca_certs) + self.ca_cert_dir = ca_cert_dir and os.path.expanduser(ca_cert_dir) + self.ca_cert_data = ca_cert_data + + def connect(self) -> None: + # Today we don't need to be doing this step before the /actual/ socket + # connection, however in the future we'll need to decide whether to + # create a new socket or re-use an existing "shared" socket as a part + # of the HTTP/2 handshake dance. + if self._tunnel_host is not None and self._tunnel_port is not None: + probe_http2_host = self._tunnel_host + probe_http2_port = self._tunnel_port + else: + probe_http2_host = self.host + probe_http2_port = self.port + + # Check if the target origin supports HTTP/2. + # If the value comes back as 'None' it means that the current thread + # is probing for HTTP/2 support. Otherwise, we're waiting for another + # probe to complete, or we get a value right away. + target_supports_http2: bool | None + if "h2" in ssl_.ALPN_PROTOCOLS: + target_supports_http2 = http2_probe.acquire_and_get( + host=probe_http2_host, port=probe_http2_port + ) + else: + # If HTTP/2 isn't going to be offered it doesn't matter if + # the target supports HTTP/2. Don't want to make a probe. + target_supports_http2 = False + + if self._connect_callback is not None: + self._connect_callback( + "before connect", + thread_id=threading.get_ident(), + target_supports_http2=target_supports_http2, + ) + + try: + sock: socket.socket | ssl.SSLSocket + self.sock = sock = self._new_conn() + server_hostname: str = self.host + tls_in_tls = False + + # Do we need to establish a tunnel? + if self.proxy_is_tunneling: + # We're tunneling to an HTTPS origin so need to do TLS-in-TLS. + if self._tunnel_scheme == "https": + # _connect_tls_proxy will verify and assign proxy_is_verified + self.sock = sock = self._connect_tls_proxy(self.host, sock) + tls_in_tls = True + elif self._tunnel_scheme == "http": + self.proxy_is_verified = False + + # If we're tunneling it means we're connected to our proxy. + self._has_connected_to_proxy = True + + self._tunnel() + # Override the host with the one we're requesting data from. + server_hostname = typing.cast(str, self._tunnel_host) + + if self.server_hostname is not None: + server_hostname = self.server_hostname + + is_time_off = datetime.date.today() < RECENT_DATE + if is_time_off: + warnings.warn( + ( + f"System time is way off (before {RECENT_DATE}). This will probably " + "lead to SSL verification errors" + ), + SystemTimeWarning, + ) + + # Remove trailing '.' from fqdn hostnames to allow certificate validation + server_hostname_rm_dot = server_hostname.rstrip(".") + + sock_and_verified = _ssl_wrap_socket_and_match_hostname( + sock=sock, + cert_reqs=self.cert_reqs, + ssl_version=self.ssl_version, + ssl_minimum_version=self.ssl_minimum_version, + ssl_maximum_version=self.ssl_maximum_version, + ca_certs=self.ca_certs, + ca_cert_dir=self.ca_cert_dir, + ca_cert_data=self.ca_cert_data, + cert_file=self.cert_file, + key_file=self.key_file, + key_password=self.key_password, + server_hostname=server_hostname_rm_dot, + ssl_context=self.ssl_context, + tls_in_tls=tls_in_tls, + assert_hostname=self.assert_hostname, + assert_fingerprint=self.assert_fingerprint, + ) + self.sock = sock_and_verified.socket + + # If an error occurs during connection/handshake we may need to release + # our lock so another connection can probe the origin. + except BaseException: + if self._connect_callback is not None: + self._connect_callback( + "after connect failure", + thread_id=threading.get_ident(), + target_supports_http2=target_supports_http2, + ) + + if target_supports_http2 is None: + http2_probe.set_and_release( + host=probe_http2_host, port=probe_http2_port, supports_http2=None + ) + raise + + # If this connection doesn't know if the origin supports HTTP/2 + # we report back to the HTTP/2 probe our result. + if target_supports_http2 is None: + supports_http2 = sock_and_verified.socket.selected_alpn_protocol() == "h2" + http2_probe.set_and_release( + host=probe_http2_host, + port=probe_http2_port, + supports_http2=supports_http2, + ) + + # Forwarding proxies can never have a verified target since + # the proxy is the one doing the verification. Should instead + # use a CONNECT tunnel in order to verify the target. + # See: https://github.com/urllib3/urllib3/issues/3267. + if self.proxy_is_forwarding: + self.is_verified = False + else: + self.is_verified = sock_and_verified.is_verified + + # If there's a proxy to be connected to we are fully connected. + # This is set twice (once above and here) due to forwarding proxies + # not using tunnelling. + self._has_connected_to_proxy = bool(self.proxy) + + # Set `self.proxy_is_verified` unless it's already set while + # establishing a tunnel. + if self._has_connected_to_proxy and self.proxy_is_verified is None: + self.proxy_is_verified = sock_and_verified.is_verified + + def _connect_tls_proxy(self, hostname: str, sock: socket.socket) -> ssl.SSLSocket: + """ + Establish a TLS connection to the proxy using the provided SSL context. + """ + # `_connect_tls_proxy` is called when self._tunnel_host is truthy. + proxy_config = typing.cast(ProxyConfig, self.proxy_config) + ssl_context = proxy_config.ssl_context + sock_and_verified = _ssl_wrap_socket_and_match_hostname( + sock, + cert_reqs=self.cert_reqs, + ssl_version=self.ssl_version, + ssl_minimum_version=self.ssl_minimum_version, + ssl_maximum_version=self.ssl_maximum_version, + ca_certs=self.ca_certs, + ca_cert_dir=self.ca_cert_dir, + ca_cert_data=self.ca_cert_data, + server_hostname=hostname, + ssl_context=ssl_context, + assert_hostname=proxy_config.assert_hostname, + assert_fingerprint=proxy_config.assert_fingerprint, + # Features that aren't implemented for proxies yet: + cert_file=None, + key_file=None, + key_password=None, + tls_in_tls=False, + ) + self.proxy_is_verified = sock_and_verified.is_verified + return sock_and_verified.socket # type: ignore[return-value] + + +class _WrappedAndVerifiedSocket(typing.NamedTuple): + """ + Wrapped socket and whether the connection is + verified after the TLS handshake + """ + + socket: ssl.SSLSocket | SSLTransport + is_verified: bool + + +def _ssl_wrap_socket_and_match_hostname( + sock: socket.socket, + *, + cert_reqs: None | str | int, + ssl_version: None | str | int, + ssl_minimum_version: int | None, + ssl_maximum_version: int | None, + cert_file: str | None, + key_file: str | None, + key_password: str | None, + ca_certs: str | None, + ca_cert_dir: str | None, + ca_cert_data: None | str | bytes, + assert_hostname: None | str | typing.Literal[False], + assert_fingerprint: str | None, + server_hostname: str | None, + ssl_context: ssl.SSLContext | None, + tls_in_tls: bool = False, +) -> _WrappedAndVerifiedSocket: + """Logic for constructing an SSLContext from all TLS parameters, passing + that down into ssl_wrap_socket, and then doing certificate verification + either via hostname or fingerprint. This function exists to guarantee + that both proxies and targets have the same behavior when connecting via TLS. + """ + default_ssl_context = False + if ssl_context is None: + default_ssl_context = True + context = create_urllib3_context( + ssl_version=resolve_ssl_version(ssl_version), + ssl_minimum_version=ssl_minimum_version, + ssl_maximum_version=ssl_maximum_version, + cert_reqs=resolve_cert_reqs(cert_reqs), + ) + else: + context = ssl_context + + context.verify_mode = resolve_cert_reqs(cert_reqs) + + # In some cases, we want to verify hostnames ourselves + if ( + # `ssl` can't verify fingerprints or alternate hostnames + assert_fingerprint + or assert_hostname + # assert_hostname can be set to False to disable hostname checking + or assert_hostname is False + # We still support OpenSSL 1.0.2, which prevents us from verifying + # hostnames easily: https://github.com/pyca/pyopenssl/pull/933 + or ssl_.IS_PYOPENSSL + or not ssl_.HAS_NEVER_CHECK_COMMON_NAME + ): + context.check_hostname = False + + # Try to load OS default certs if none are given. We need to do the hasattr() check + # for custom pyOpenSSL SSLContext objects because they don't support + # load_default_certs(). + if ( + not ca_certs + and not ca_cert_dir + and not ca_cert_data + and default_ssl_context + and hasattr(context, "load_default_certs") + ): + context.load_default_certs() + + # Ensure that IPv6 addresses are in the proper format and don't have a + # scope ID. Python's SSL module fails to recognize scoped IPv6 addresses + # and interprets them as DNS hostnames. + if server_hostname is not None: + normalized = server_hostname.strip("[]") + if "%" in normalized: + normalized = normalized[: normalized.rfind("%")] + if is_ipaddress(normalized): + server_hostname = normalized + + ssl_sock = ssl_wrap_socket( + sock=sock, + keyfile=key_file, + certfile=cert_file, + key_password=key_password, + ca_certs=ca_certs, + ca_cert_dir=ca_cert_dir, + ca_cert_data=ca_cert_data, + server_hostname=server_hostname, + ssl_context=context, + tls_in_tls=tls_in_tls, + ) + + try: + if assert_fingerprint: + _assert_fingerprint( + ssl_sock.getpeercert(binary_form=True), assert_fingerprint + ) + elif ( + context.verify_mode != ssl.CERT_NONE + and not context.check_hostname + and assert_hostname is not False + ): + cert: _TYPE_PEER_CERT_RET_DICT = ssl_sock.getpeercert() # type: ignore[assignment] + + # Need to signal to our match_hostname whether to use 'commonName' or not. + # If we're using our own constructed SSLContext we explicitly set 'False' + # because PyPy hard-codes 'True' from SSLContext.hostname_checks_common_name. + if default_ssl_context: + hostname_checks_common_name = False + else: + hostname_checks_common_name = ( + getattr(context, "hostname_checks_common_name", False) or False + ) + + _match_hostname( + cert, + assert_hostname or server_hostname, # type: ignore[arg-type] + hostname_checks_common_name, + ) + + return _WrappedAndVerifiedSocket( + socket=ssl_sock, + is_verified=context.verify_mode == ssl.CERT_REQUIRED + or bool(assert_fingerprint), + ) + except BaseException: + ssl_sock.close() + raise + + +def _match_hostname( + cert: _TYPE_PEER_CERT_RET_DICT | None, + asserted_hostname: str, + hostname_checks_common_name: bool = False, +) -> None: + # Our upstream implementation of ssl.match_hostname() + # only applies this normalization to IP addresses so it doesn't + # match DNS SANs so we do the same thing! + stripped_hostname = asserted_hostname.strip("[]") + if is_ipaddress(stripped_hostname): + asserted_hostname = stripped_hostname + + try: + match_hostname(cert, asserted_hostname, hostname_checks_common_name) + except CertificateError as e: + log.warning( + "Certificate did not match expected hostname: %s. Certificate: %s", + asserted_hostname, + cert, + ) + # Add cert to exception and reraise so client code can inspect + # the cert when catching the exception, if they want to + e._peer_cert = cert # type: ignore[attr-defined] + raise + + +def _wrap_proxy_error(err: Exception, proxy_scheme: str | None) -> ProxyError: + # Look for the phrase 'wrong version number', if found + # then we should warn the user that we're very sure that + # this proxy is HTTP-only and they have a configuration issue. + error_normalized = " ".join(re.split("[^a-z]", str(err).lower())) + is_likely_http_proxy = ( + "wrong version number" in error_normalized + or "unknown protocol" in error_normalized + or "record layer failure" in error_normalized + ) + http_proxy_warning = ( + ". Your proxy appears to only use HTTP and not HTTPS, " + "try changing your proxy URL to be HTTP. See: " + "https://urllib3.readthedocs.io/en/latest/advanced-usage.html" + "#https-proxy-error-http-proxy" + ) + new_err = ProxyError( + f"Unable to connect to proxy" + f"{http_proxy_warning if is_likely_http_proxy and proxy_scheme == 'https' else ''}", + err, + ) + new_err.__cause__ = err + return new_err + + +def _get_default_user_agent() -> str: + return f"python-urllib3/{__version__}" + + +class DummyConnection: + """Used to detect a failed ConnectionCls import.""" + + +if not ssl: + HTTPSConnection = DummyConnection # type: ignore[misc, assignment] # noqa: F811 + + +VerifiedHTTPSConnection = HTTPSConnection + + +def _url_from_connection( + conn: HTTPConnection | HTTPSConnection, path: str | None = None +) -> str: + """Returns the URL from a given connection. This is mainly used for testing and logging.""" + + scheme = "https" if isinstance(conn, HTTPSConnection) else "http" + + return Url(scheme=scheme, host=conn.host, port=conn.port, path=path).url diff --git a/frogpilot/third_party/urllib3/connectionpool.py b/frogpilot/third_party/urllib3/connectionpool.py new file mode 100644 index 000000000..3a0685b4c --- /dev/null +++ b/frogpilot/third_party/urllib3/connectionpool.py @@ -0,0 +1,1178 @@ +from __future__ import annotations + +import errno +import logging +import queue +import sys +import typing +import warnings +import weakref +from socket import timeout as SocketTimeout +from types import TracebackType + +from ._base_connection import _TYPE_BODY +from ._collections import HTTPHeaderDict +from ._request_methods import RequestMethods +from .connection import ( + BaseSSLError, + BrokenPipeError, + DummyConnection, + HTTPConnection, + HTTPException, + HTTPSConnection, + ProxyConfig, + _wrap_proxy_error, +) +from .connection import port_by_scheme as port_by_scheme +from .exceptions import ( + ClosedPoolError, + EmptyPoolError, + FullPoolError, + HostChangedError, + InsecureRequestWarning, + LocationValueError, + MaxRetryError, + NewConnectionError, + ProtocolError, + ProxyError, + ReadTimeoutError, + SSLError, + TimeoutError, +) +from .response import BaseHTTPResponse +from .util.connection import is_connection_dropped +from .util.proxy import connection_requires_http_tunnel +from .util.request import _TYPE_BODY_POSITION, set_file_position +from .util.retry import Retry +from .util.ssl_match_hostname import CertificateError +from .util.timeout import _DEFAULT_TIMEOUT, _TYPE_DEFAULT, Timeout +from .util.url import Url, _encode_target +from .util.url import _normalize_host as normalize_host +from .util.url import parse_url +from .util.util import to_str + +if typing.TYPE_CHECKING: + import ssl + + from typing_extensions import Self + + from ._base_connection import BaseHTTPConnection, BaseHTTPSConnection + +log = logging.getLogger(__name__) + +_TYPE_TIMEOUT = typing.Union[Timeout, float, _TYPE_DEFAULT, None] + + +# Pool objects +class ConnectionPool: + """ + Base class for all connection pools, such as + :class:`.HTTPConnectionPool` and :class:`.HTTPSConnectionPool`. + + .. note:: + ConnectionPool.urlopen() does not normalize or percent-encode target URIs + which is useful if your target server doesn't support percent-encoded + target URIs. + """ + + scheme: str | None = None + QueueCls = queue.LifoQueue + + def __init__(self, host: str, port: int | None = None) -> None: + if not host: + raise LocationValueError("No host specified.") + + self.host = _normalize_host(host, scheme=self.scheme) + self.port = port + + # This property uses 'normalize_host()' (not '_normalize_host()') + # to avoid removing square braces around IPv6 addresses. + # This value is sent to `HTTPConnection.set_tunnel()` if called + # because square braces are required for HTTP CONNECT tunneling. + self._tunnel_host = normalize_host(host, scheme=self.scheme).lower() + + def __str__(self) -> str: + return f"{type(self).__name__}(host={self.host!r}, port={self.port!r})" + + def __enter__(self) -> Self: + return self + + def __exit__( + self, + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None, + ) -> typing.Literal[False]: + self.close() + # Return False to re-raise any potential exceptions + return False + + def close(self) -> None: + """ + Close all pooled connections and disable the pool. + """ + + +# This is taken from http://hg.python.org/cpython/file/7aaba721ebc0/Lib/socket.py#l252 +_blocking_errnos = {errno.EAGAIN, errno.EWOULDBLOCK} + + +class HTTPConnectionPool(ConnectionPool, RequestMethods): + """ + Thread-safe connection pool for one host. + + :param host: + Host used for this HTTP Connection (e.g. "localhost"), passed into + :class:`http.client.HTTPConnection`. + + :param port: + Port used for this HTTP Connection (None is equivalent to 80), passed + into :class:`http.client.HTTPConnection`. + + :param timeout: + Socket timeout in seconds for each individual connection. This can + be a float or integer, which sets the timeout for the HTTP request, + or an instance of :class:`urllib3.util.Timeout` which gives you more + fine-grained control over request timeouts. After the constructor has + been parsed, this is always a `urllib3.util.Timeout` object. + + :param maxsize: + Number of connections to save that can be reused. More than 1 is useful + in multithreaded situations. If ``block`` is set to False, more + connections will be created but they will not be saved once they've + been used. + + :param block: + If set to True, no more than ``maxsize`` connections will be used at + a time. When no free connections are available, the call will block + until a connection has been released. This is a useful side effect for + particular multithreaded situations where one does not want to use more + than maxsize connections per host to prevent flooding. + + :param headers: + Headers to include with all requests, unless other headers are given + explicitly. + + :param retries: + Retry configuration to use by default with requests in this pool. + + :param _proxy: + Parsed proxy URL, should not be used directly, instead, see + :class:`urllib3.ProxyManager` + + :param _proxy_headers: + A dictionary with proxy headers, should not be used directly, + instead, see :class:`urllib3.ProxyManager` + + :param \\**conn_kw: + Additional parameters are used to create fresh :class:`urllib3.connection.HTTPConnection`, + :class:`urllib3.connection.HTTPSConnection` instances. + """ + + scheme = "http" + ConnectionCls: type[BaseHTTPConnection] | type[BaseHTTPSConnection] = HTTPConnection + + def __init__( + self, + host: str, + port: int | None = None, + timeout: _TYPE_TIMEOUT | None = _DEFAULT_TIMEOUT, + maxsize: int = 1, + block: bool = False, + headers: typing.Mapping[str, str] | None = None, + retries: Retry | bool | int | None = None, + _proxy: Url | None = None, + _proxy_headers: typing.Mapping[str, str] | None = None, + _proxy_config: ProxyConfig | None = None, + **conn_kw: typing.Any, + ): + ConnectionPool.__init__(self, host, port) + RequestMethods.__init__(self, headers) + + if not isinstance(timeout, Timeout): + timeout = Timeout.from_float(timeout) + + if retries is None: + retries = Retry.DEFAULT + + self.timeout = timeout + self.retries = retries + + self.pool: queue.LifoQueue[typing.Any] | None = self.QueueCls(maxsize) + self.block = block + + self.proxy = _proxy + self.proxy_headers = _proxy_headers or {} + self.proxy_config = _proxy_config + + # Fill the queue up so that doing get() on it will block properly + for _ in range(maxsize): + self.pool.put(None) + + # These are mostly for testing and debugging purposes. + self.num_connections = 0 + self.num_requests = 0 + self.conn_kw = conn_kw + + if self.proxy: + # Enable Nagle's algorithm for proxies, to avoid packet fragmentation. + # We cannot know if the user has added default socket options, so we cannot replace the + # list. + self.conn_kw.setdefault("socket_options", []) + + self.conn_kw["proxy"] = self.proxy + self.conn_kw["proxy_config"] = self.proxy_config + + # Do not pass 'self' as callback to 'finalize'. + # Then the 'finalize' would keep an endless living (leak) to self. + # By just passing a reference to the pool allows the garbage collector + # to free self if nobody else has a reference to it. + pool = self.pool + + # Close all the HTTPConnections in the pool before the + # HTTPConnectionPool object is garbage collected. + weakref.finalize(self, _close_pool_connections, pool) + + def _new_conn(self) -> BaseHTTPConnection: + """ + Return a fresh :class:`HTTPConnection`. + """ + self.num_connections += 1 + log.debug( + "Starting new HTTP connection (%d): %s:%s", + self.num_connections, + self.host, + self.port or "80", + ) + + conn = self.ConnectionCls( + host=self.host, + port=self.port, + timeout=self.timeout.connect_timeout, + **self.conn_kw, + ) + return conn + + def _get_conn(self, timeout: float | None = None) -> BaseHTTPConnection: + """ + Get a connection. Will return a pooled connection if one is available. + + If no connections are available and :prop:`.block` is ``False``, then a + fresh connection is returned. + + :param timeout: + Seconds to wait before giving up and raising + :class:`urllib3.exceptions.EmptyPoolError` if the pool is empty and + :prop:`.block` is ``True``. + """ + conn = None + + if self.pool is None: + raise ClosedPoolError(self, "Pool is closed.") + + try: + conn = self.pool.get(block=self.block, timeout=timeout) + + except AttributeError: # self.pool is None + raise ClosedPoolError(self, "Pool is closed.") from None # Defensive: + + except queue.Empty: + if self.block: + raise EmptyPoolError( + self, + "Pool is empty and a new connection can't be opened due to blocking mode.", + ) from None + pass # Oh well, we'll create a new connection then + + # If this is a persistent connection, check if it got disconnected + if conn and is_connection_dropped(conn): + log.debug("Resetting dropped connection: %s", self.host) + conn.close() + + return conn or self._new_conn() + + def _put_conn(self, conn: BaseHTTPConnection | None) -> None: + """ + Put a connection back into the pool. + + :param conn: + Connection object for the current host and port as returned by + :meth:`._new_conn` or :meth:`._get_conn`. + + If the pool is already full, the connection is closed and discarded + because we exceeded maxsize. If connections are discarded frequently, + then maxsize should be increased. + + If the pool is closed, then the connection will be closed and discarded. + """ + if self.pool is not None: + try: + self.pool.put(conn, block=False) + return # Everything is dandy, done. + except AttributeError: + # self.pool is None. + pass + except queue.Full: + # Connection never got put back into the pool, close it. + if conn: + conn.close() + + if self.block: + # This should never happen if you got the conn from self._get_conn + raise FullPoolError( + self, + "Pool reached maximum size and no more connections are allowed.", + ) from None + + log.warning( + "Connection pool is full, discarding connection: %s. Connection pool size: %s", + self.host, + self.pool.qsize(), + ) + + # Connection never got put back into the pool, close it. + if conn: + conn.close() + + def _validate_conn(self, conn: BaseHTTPConnection) -> None: + """ + Called right before a request is made, after the socket is created. + """ + + def _prepare_proxy(self, conn: BaseHTTPConnection) -> None: + # Nothing to do for HTTP connections. + pass + + def _get_timeout(self, timeout: _TYPE_TIMEOUT) -> Timeout: + """Helper that always returns a :class:`urllib3.util.Timeout`""" + if timeout is _DEFAULT_TIMEOUT: + return self.timeout.clone() + + if isinstance(timeout, Timeout): + return timeout.clone() + else: + # User passed us an int/float. This is for backwards compatibility, + # can be removed later + return Timeout.from_float(timeout) + + def _raise_timeout( + self, + err: BaseSSLError | OSError | SocketTimeout, + url: str, + timeout_value: _TYPE_TIMEOUT | None, + ) -> None: + """Is the error actually a timeout? Will raise a ReadTimeout or pass""" + + if isinstance(err, SocketTimeout): + raise ReadTimeoutError( + self, url, f"Read timed out. (read timeout={timeout_value})" + ) from err + + # See the above comment about EAGAIN in Python 3. + if hasattr(err, "errno") and err.errno in _blocking_errnos: + raise ReadTimeoutError( + self, url, f"Read timed out. (read timeout={timeout_value})" + ) from err + + def _make_request( + self, + conn: BaseHTTPConnection, + method: str, + url: str, + body: _TYPE_BODY | None = None, + headers: typing.Mapping[str, str] | None = None, + retries: Retry | None = None, + timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, + chunked: bool = False, + response_conn: BaseHTTPConnection | None = None, + preload_content: bool = True, + decode_content: bool = True, + enforce_content_length: bool = True, + ) -> BaseHTTPResponse: + """ + Perform a request on a given urllib connection object taken from our + pool. + + :param conn: + a connection from one of our connection pools + + :param method: + HTTP request method (such as GET, POST, PUT, etc.) + + :param url: + The URL to perform the request on. + + :param body: + Data to send in the request body, either :class:`str`, :class:`bytes`, + an iterable of :class:`str`/:class:`bytes`, or a file-like object. + + :param headers: + Dictionary of custom headers to send, such as User-Agent, + If-None-Match, etc. If None, pool headers are used. If provided, + these headers completely replace any pool-specific headers. + + :param retries: + Configure the number of retries to allow before raising a + :class:`~urllib3.exceptions.MaxRetryError` exception. + + Pass ``None`` to retry until you receive a response. Pass a + :class:`~urllib3.util.retry.Retry` object for fine-grained control + over different types of retries. + Pass an integer number to retry connection errors that many times, + but no other types of errors. Pass zero to never retry. + + If ``False``, then retries are disabled and any exception is raised + immediately. Also, instead of raising a MaxRetryError on redirects, + the redirect response will be returned. + + :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. + + :param timeout: + If specified, overrides the default timeout for this one + request. It may be a float (in seconds) or an instance of + :class:`urllib3.util.Timeout`. + + :param chunked: + If True, urllib3 will send the body using chunked transfer + encoding. Otherwise, urllib3 will send the body using the standard + content-length form. Defaults to False. + + :param response_conn: + Set this to ``None`` if you will handle releasing the connection or + set the connection to have the response release it. + + :param preload_content: + If True, the response's body will be preloaded during construction. + + :param decode_content: + If True, will attempt to decode the body based on the + 'content-encoding' header. + + :param enforce_content_length: + Enforce content length checking. Body returned by server must match + value of Content-Length header, if present. Otherwise, raise error. + """ + self.num_requests += 1 + + timeout_obj = self._get_timeout(timeout) + timeout_obj.start_connect() + conn.timeout = Timeout.resolve_default_timeout(timeout_obj.connect_timeout) + + try: + # Trigger any extra validation we need to do. + try: + self._validate_conn(conn) + except (SocketTimeout, BaseSSLError) as e: + self._raise_timeout(err=e, url=url, timeout_value=conn.timeout) + raise + + # _validate_conn() starts the connection to an HTTPS proxy + # so we need to wrap errors with 'ProxyError' here too. + except ( + OSError, + NewConnectionError, + TimeoutError, + BaseSSLError, + CertificateError, + SSLError, + ) as e: + new_e: Exception = e + if isinstance(e, (BaseSSLError, CertificateError)): + new_e = SSLError(e) + # If the connection didn't successfully connect to it's proxy + # then there + if isinstance( + new_e, (OSError, NewConnectionError, TimeoutError, SSLError) + ) and (conn and conn.proxy and not conn.has_connected_to_proxy): + new_e = _wrap_proxy_error(new_e, conn.proxy.scheme) + raise new_e + + # conn.request() calls http.client.*.request, not the method in + # urllib3.request. It also calls makefile (recv) on the socket. + try: + conn.request( + method, + url, + body=body, + headers=headers, + chunked=chunked, + preload_content=preload_content, + decode_content=decode_content, + enforce_content_length=enforce_content_length, + ) + + # We are swallowing BrokenPipeError (errno.EPIPE) since the server is + # legitimately able to close the connection after sending a valid response. + # With this behaviour, the received response is still readable. + except BrokenPipeError: + pass + except OSError as e: + # MacOS/Linux + # EPROTOTYPE and ECONNRESET are needed on macOS + # https://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ + # Condition changed later to emit ECONNRESET instead of only EPROTOTYPE. + if e.errno != errno.EPROTOTYPE and e.errno != errno.ECONNRESET: + raise + + # Reset the timeout for the recv() on the socket + read_timeout = timeout_obj.read_timeout + + if not conn.is_closed: + # In Python 3 socket.py will catch EAGAIN and return None when you + # try and read into the file pointer created by http.client, which + # instead raises a BadStatusLine exception. Instead of catching + # the exception and assuming all BadStatusLine exceptions are read + # timeouts, check for a zero timeout before making the request. + if read_timeout == 0: + raise ReadTimeoutError( + self, url, f"Read timed out. (read timeout={read_timeout})" + ) + conn.timeout = read_timeout + + # Receive the response from the server + try: + response = conn.getresponse() + except (BaseSSLError, OSError) as e: + self._raise_timeout(err=e, url=url, timeout_value=read_timeout) + raise + + # Set properties that are used by the pooling layer. + response.retries = retries + response._connection = response_conn # type: ignore[attr-defined] + response._pool = self # type: ignore[attr-defined] + + log.debug( + '%s://%s:%s "%s %s %s" %s %s', + self.scheme, + self.host, + self.port, + method, + url, + response.version_string, + response.status, + response.length_remaining, + ) + + return response + + def close(self) -> None: + """ + Close all pooled connections and disable the pool. + """ + if self.pool is None: + return + # Disable access to the pool + old_pool, self.pool = self.pool, None + + # Close all the HTTPConnections in the pool. + _close_pool_connections(old_pool) + + def is_same_host(self, url: str) -> bool: + """ + Check if the given ``url`` is a member of the same host as this + connection pool. + """ + if url.startswith("/"): + return True + + # TODO: Add optional support for socket.gethostbyname checking. + scheme, _, host, port, *_ = parse_url(url) + scheme = scheme or "http" + if host is not None: + host = _normalize_host(host, scheme=scheme) + + # Use explicit default port for comparison when none is given + if self.port and not port: + port = port_by_scheme.get(scheme) + elif not self.port and port == port_by_scheme.get(scheme): + port = None + + return (scheme, host, port) == (self.scheme, self.host, self.port) + + def urlopen( # type: ignore[override] + self, + method: str, + url: str, + body: _TYPE_BODY | None = None, + headers: typing.Mapping[str, str] | None = None, + retries: Retry | bool | int | None = None, + redirect: bool = True, + assert_same_host: bool = True, + timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, + pool_timeout: int | None = None, + release_conn: bool | None = None, + chunked: bool = False, + body_pos: _TYPE_BODY_POSITION | None = None, + preload_content: bool = True, + decode_content: bool = True, + **response_kw: typing.Any, + ) -> BaseHTTPResponse: + """ + Get a connection from the pool and perform an HTTP request. This is the + lowest level call for making a request, so you'll need to specify all + the raw details. + + .. note:: + + More commonly, it's appropriate to use a convenience method + such as :meth:`request`. + + .. note:: + + `release_conn` will only behave as expected if + `preload_content=False` because we want to make + `preload_content=False` the default behaviour someday soon without + breaking backwards compatibility. + + :param method: + HTTP request method (such as GET, POST, PUT, etc.) + + :param url: + The URL to perform the request on. + + :param body: + Data to send in the request body, either :class:`str`, :class:`bytes`, + an iterable of :class:`str`/:class:`bytes`, or a file-like object. + + :param headers: + Dictionary of custom headers to send, such as User-Agent, + If-None-Match, etc. If None, pool headers are used. If provided, + these headers completely replace any pool-specific headers. + + :param retries: + Configure the number of retries to allow before raising a + :class:`~urllib3.exceptions.MaxRetryError` exception. + + If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. Pass a + :class:`~urllib3.util.retry.Retry` object for fine-grained control + over different types of retries. + Pass an integer number to retry connection errors that many times, + but no other types of errors. Pass zero to never retry. + + If ``False``, then retries are disabled and any exception is raised + immediately. Also, instead of raising a MaxRetryError on redirects, + the redirect response will be returned. + + :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. + + :param redirect: + If True, automatically handle redirects (status codes 301, 302, + 303, 307, 308). Each redirect counts as a retry. Disabling retries + will disable redirect, too. + + :param assert_same_host: + If ``True``, will make sure that the host of the pool requests is + consistent else will raise HostChangedError. When ``False``, you can + use the pool on an HTTP proxy and request foreign hosts. + + :param timeout: + If specified, overrides the default timeout for this one + request. It may be a float (in seconds) or an instance of + :class:`urllib3.util.Timeout`. + + :param pool_timeout: + If set and the pool is set to block=True, then this method will + block for ``pool_timeout`` seconds and raise EmptyPoolError if no + connection is available within the time period. + + :param bool preload_content: + If True, the response's body will be preloaded into memory. + + :param bool decode_content: + If True, will attempt to decode the body based on the + 'content-encoding' header. + + :param release_conn: + If False, then the urlopen call will not release the connection + back into the pool once a response is received (but will release if + you read the entire contents of the response such as when + `preload_content=True`). This is useful if you're not preloading + the response's content immediately. You will need to call + ``r.release_conn()`` on the response ``r`` to return the connection + back into the pool. If None, it takes the value of ``preload_content`` + which defaults to ``True``. + + :param bool chunked: + If True, urllib3 will send the body using chunked transfer + encoding. Otherwise, urllib3 will send the body using the standard + content-length form. Defaults to False. + + :param int body_pos: + Position to seek to in file-like body in the event of a retry or + redirect. Typically this won't need to be set because urllib3 will + auto-populate the value when needed. + """ + parsed_url = parse_url(url) + destination_scheme = parsed_url.scheme + + if headers is None: + headers = self.headers + + if not isinstance(retries, Retry): + retries = Retry.from_int(retries, redirect=redirect, default=self.retries) + + if release_conn is None: + release_conn = preload_content + + # Check host + if assert_same_host and not self.is_same_host(url): + raise HostChangedError(self, url, retries) + + # Ensure that the URL we're connecting to is properly encoded + if url.startswith("/"): + url = to_str(_encode_target(url)) + else: + url = to_str(parsed_url.url) + + conn = None + + # Track whether `conn` needs to be released before + # returning/raising/recursing. Update this variable if necessary, and + # leave `release_conn` constant throughout the function. That way, if + # the function recurses, the original value of `release_conn` will be + # passed down into the recursive call, and its value will be respected. + # + # See issue #651 [1] for details. + # + # [1] + release_this_conn = release_conn + + http_tunnel_required = connection_requires_http_tunnel( + self.proxy, self.proxy_config, destination_scheme + ) + + # Merge the proxy headers. Only done when not using HTTP CONNECT. We + # have to copy the headers dict so we can safely change it without those + # changes being reflected in anyone else's copy. + if not http_tunnel_required: + headers = headers.copy() # type: ignore[attr-defined] + headers.update(self.proxy_headers) # type: ignore[union-attr] + + # Must keep the exception bound to a separate variable or else Python 3 + # complains about UnboundLocalError. + err = None + + # Keep track of whether we cleanly exited the except block. This + # ensures we do proper cleanup in finally. + clean_exit = False + + # Rewind body position, if needed. Record current position + # for future rewinds in the event of a redirect/retry. + body_pos = set_file_position(body, body_pos) + + try: + # Request a connection from the queue. + timeout_obj = self._get_timeout(timeout) + conn = self._get_conn(timeout=pool_timeout) + + conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] + + # Is this a closed/new connection that requires CONNECT tunnelling? + if self.proxy is not None and http_tunnel_required and conn.is_closed: + try: + self._prepare_proxy(conn) + except (BaseSSLError, OSError, SocketTimeout) as e: + self._raise_timeout( + err=e, url=self.proxy.url, timeout_value=conn.timeout + ) + raise + + # If we're going to release the connection in ``finally:``, then + # the response doesn't need to know about the connection. Otherwise + # it will also try to release it and we'll have a double-release + # mess. + response_conn = conn if not release_conn else None + + # Make the request on the HTTPConnection object + response = self._make_request( + conn, + method, + url, + timeout=timeout_obj, + body=body, + headers=headers, + chunked=chunked, + retries=retries, + response_conn=response_conn, + preload_content=preload_content, + decode_content=decode_content, + **response_kw, + ) + + # Everything went great! + clean_exit = True + + except EmptyPoolError: + # Didn't get a connection from the pool, no need to clean up + clean_exit = True + release_this_conn = False + raise + + except ( + TimeoutError, + HTTPException, + OSError, + ProtocolError, + BaseSSLError, + SSLError, + CertificateError, + ProxyError, + ) as e: + # Discard the connection for these exceptions. It will be + # replaced during the next _get_conn() call. + clean_exit = False + new_e: Exception = e + if isinstance(e, (BaseSSLError, CertificateError)): + new_e = SSLError(e) + if isinstance( + new_e, + ( + OSError, + NewConnectionError, + TimeoutError, + SSLError, + HTTPException, + ), + ) and (conn and conn.proxy and not conn.has_connected_to_proxy): + new_e = _wrap_proxy_error(new_e, conn.proxy.scheme) + elif isinstance(new_e, (OSError, HTTPException)): + new_e = ProtocolError("Connection aborted.", new_e) + + retries = retries.increment( + method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2] + ) + retries.sleep() + + # Keep track of the error for the retry warning. + err = e + + finally: + if not clean_exit: + # We hit some kind of exception, handled or otherwise. We need + # to throw the connection away unless explicitly told not to. + # Close the connection, set the variable to None, and make sure + # we put the None back in the pool to avoid leaking it. + if conn: + conn.close() + conn = None + release_this_conn = True + + if release_this_conn: + # Put the connection back to be reused. If the connection is + # expired then it will be None, which will get replaced with a + # fresh connection during _get_conn. + self._put_conn(conn) + + if not conn: + # Try again + log.warning( + "Retrying (%r) after connection broken by '%r': %s", retries, err, url + ) + return self.urlopen( + method, + url, + body, + headers, + retries, + redirect, + assert_same_host, + timeout=timeout, + pool_timeout=pool_timeout, + release_conn=release_conn, + chunked=chunked, + body_pos=body_pos, + preload_content=preload_content, + decode_content=decode_content, + **response_kw, + ) + + # Handle redirect? + redirect_location = redirect and response.get_redirect_location() + if redirect_location: + if response.status == 303: + # Change the method according to RFC 9110, Section 15.4.4. + method = "GET" + # And lose the body not to transfer anything sensitive. + body = None + headers = HTTPHeaderDict(headers)._prepare_for_method_change() + + try: + retries = retries.increment(method, url, response=response, _pool=self) + except MaxRetryError: + if retries.raise_on_redirect: + response.drain_conn() + raise + return response + + response.drain_conn() + retries.sleep_for_retry(response) + log.debug("Redirecting %s -> %s", url, redirect_location) + return self.urlopen( + method, + redirect_location, + body, + headers, + retries=retries, + redirect=redirect, + assert_same_host=assert_same_host, + timeout=timeout, + pool_timeout=pool_timeout, + release_conn=release_conn, + chunked=chunked, + body_pos=body_pos, + preload_content=preload_content, + decode_content=decode_content, + **response_kw, + ) + + # Check if we should retry the HTTP response. + has_retry_after = bool(response.headers.get("Retry-After")) + if retries.is_retry(method, response.status, has_retry_after): + try: + retries = retries.increment(method, url, response=response, _pool=self) + except MaxRetryError: + if retries.raise_on_status: + response.drain_conn() + raise + return response + + response.drain_conn() + retries.sleep(response) + log.debug("Retry: %s", url) + return self.urlopen( + method, + url, + body, + headers, + retries=retries, + redirect=redirect, + assert_same_host=assert_same_host, + timeout=timeout, + pool_timeout=pool_timeout, + release_conn=release_conn, + chunked=chunked, + body_pos=body_pos, + preload_content=preload_content, + decode_content=decode_content, + **response_kw, + ) + + return response + + +class HTTPSConnectionPool(HTTPConnectionPool): + """ + Same as :class:`.HTTPConnectionPool`, but HTTPS. + + :class:`.HTTPSConnection` uses one of ``assert_fingerprint``, + ``assert_hostname`` and ``host`` in this order to verify connections. + If ``assert_hostname`` is False, no verification is done. + + The ``key_file``, ``cert_file``, ``cert_reqs``, ``ca_certs``, + ``ca_cert_dir``, ``ssl_version``, ``key_password`` are only used if :mod:`ssl` + is available and are fed into :meth:`urllib3.util.ssl_wrap_socket` to upgrade + the connection socket into an SSL socket. + """ + + scheme = "https" + ConnectionCls: type[BaseHTTPSConnection] = HTTPSConnection + + def __init__( + self, + host: str, + port: int | None = None, + timeout: _TYPE_TIMEOUT | None = _DEFAULT_TIMEOUT, + maxsize: int = 1, + block: bool = False, + headers: typing.Mapping[str, str] | None = None, + retries: Retry | bool | int | None = None, + _proxy: Url | None = None, + _proxy_headers: typing.Mapping[str, str] | None = None, + key_file: str | None = None, + cert_file: str | None = None, + cert_reqs: int | str | None = None, + key_password: str | None = None, + ca_certs: str | None = None, + ssl_version: int | str | None = None, + ssl_minimum_version: ssl.TLSVersion | None = None, + ssl_maximum_version: ssl.TLSVersion | None = None, + assert_hostname: str | typing.Literal[False] | None = None, + assert_fingerprint: str | None = None, + ca_cert_dir: str | None = None, + **conn_kw: typing.Any, + ) -> None: + super().__init__( + host, + port, + timeout, + maxsize, + block, + headers, + retries, + _proxy, + _proxy_headers, + **conn_kw, + ) + + self.key_file = key_file + self.cert_file = cert_file + self.cert_reqs = cert_reqs + self.key_password = key_password + self.ca_certs = ca_certs + self.ca_cert_dir = ca_cert_dir + self.ssl_version = ssl_version + self.ssl_minimum_version = ssl_minimum_version + self.ssl_maximum_version = ssl_maximum_version + self.assert_hostname = assert_hostname + self.assert_fingerprint = assert_fingerprint + + def _prepare_proxy(self, conn: HTTPSConnection) -> None: # type: ignore[override] + """Establishes a tunnel connection through HTTP CONNECT.""" + if self.proxy and self.proxy.scheme == "https": + tunnel_scheme = "https" + else: + tunnel_scheme = "http" + + conn.set_tunnel( + scheme=tunnel_scheme, + host=self._tunnel_host, + port=self.port, + headers=self.proxy_headers, + ) + conn.connect() + + def _new_conn(self) -> BaseHTTPSConnection: + """ + Return a fresh :class:`urllib3.connection.HTTPConnection`. + """ + self.num_connections += 1 + log.debug( + "Starting new HTTPS connection (%d): %s:%s", + self.num_connections, + self.host, + self.port or "443", + ) + + if not self.ConnectionCls or self.ConnectionCls is DummyConnection: # type: ignore[comparison-overlap] + raise ImportError( + "Can't connect to HTTPS URL because the SSL module is not available." + ) + + actual_host: str = self.host + actual_port = self.port + if self.proxy is not None and self.proxy.host is not None: + actual_host = self.proxy.host + actual_port = self.proxy.port + + return self.ConnectionCls( + host=actual_host, + port=actual_port, + timeout=self.timeout.connect_timeout, + cert_file=self.cert_file, + key_file=self.key_file, + key_password=self.key_password, + cert_reqs=self.cert_reqs, + ca_certs=self.ca_certs, + ca_cert_dir=self.ca_cert_dir, + assert_hostname=self.assert_hostname, + assert_fingerprint=self.assert_fingerprint, + ssl_version=self.ssl_version, + ssl_minimum_version=self.ssl_minimum_version, + ssl_maximum_version=self.ssl_maximum_version, + **self.conn_kw, + ) + + def _validate_conn(self, conn: BaseHTTPConnection) -> None: + """ + Called right before a request is made, after the socket is created. + """ + super()._validate_conn(conn) + + # Force connect early to allow us to validate the connection. + if conn.is_closed: + conn.connect() + + # TODO revise this, see https://github.com/urllib3/urllib3/issues/2791 + if not conn.is_verified and not conn.proxy_is_verified: + warnings.warn( + ( + f"Unverified HTTPS request is being made to host '{conn.host}'. " + "Adding certificate verification is strongly advised. See: " + "https://urllib3.readthedocs.io/en/latest/advanced-usage.html" + "#tls-warnings" + ), + InsecureRequestWarning, + ) + + +def connection_from_url(url: str, **kw: typing.Any) -> HTTPConnectionPool: + """ + Given a url, return an :class:`.ConnectionPool` instance of its host. + + This is a shortcut for not having to parse out the scheme, host, and port + of the url before creating an :class:`.ConnectionPool` instance. + + :param url: + Absolute URL string that must include the scheme. Port is optional. + + :param \\**kw: + Passes additional parameters to the constructor of the appropriate + :class:`.ConnectionPool`. Useful for specifying things like + timeout, maxsize, headers, etc. + + Example:: + + >>> conn = connection_from_url('http://google.com/') + >>> r = conn.request('GET', '/') + """ + scheme, _, host, port, *_ = parse_url(url) + scheme = scheme or "http" + port = port or port_by_scheme.get(scheme, 80) + if scheme == "https": + return HTTPSConnectionPool(host, port=port, **kw) # type: ignore[arg-type] + else: + return HTTPConnectionPool(host, port=port, **kw) # type: ignore[arg-type] + + +@typing.overload +def _normalize_host(host: None, scheme: str | None) -> None: ... + + +@typing.overload +def _normalize_host(host: str, scheme: str | None) -> str: ... + + +def _normalize_host(host: str | None, scheme: str | None) -> str | None: + """ + Normalize hosts for comparisons and use with sockets. + """ + + host = normalize_host(host, scheme) + + # httplib doesn't like it when we include brackets in IPv6 addresses + # Specifically, if we include brackets but also pass the port then + # httplib crazily doubles up the square brackets on the Host header. + # Instead, we need to make sure we never pass ``None`` as the port. + # However, for backward compatibility reasons we can't actually + # *assert* that. See http://bugs.python.org/issue28539 + if host and host.startswith("[") and host.endswith("]"): + host = host[1:-1] + return host + + +def _url_from_pool( + pool: HTTPConnectionPool | HTTPSConnectionPool, path: str | None = None +) -> str: + """Returns the URL from a given connection pool. This is mainly used for testing and logging.""" + return Url(scheme=pool.scheme, host=pool.host, port=pool.port, path=path).url + + +def _close_pool_connections(pool: queue.LifoQueue[typing.Any]) -> None: + """Drains a queue of connections and closes each one.""" + try: + while True: + conn = pool.get(block=False) + if conn: + conn.close() + except queue.Empty: + pass # Done. diff --git a/frogpilot/third_party/urllib3/contrib/__init__.py b/frogpilot/third_party/urllib3/contrib/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/frogpilot/third_party/urllib3/contrib/emscripten/__init__.py b/frogpilot/third_party/urllib3/contrib/emscripten/__init__.py new file mode 100644 index 000000000..8a3c5bebd --- /dev/null +++ b/frogpilot/third_party/urllib3/contrib/emscripten/__init__.py @@ -0,0 +1,16 @@ +from __future__ import annotations + +import urllib3.connection + +from ...connectionpool import HTTPConnectionPool, HTTPSConnectionPool +from .connection import EmscriptenHTTPConnection, EmscriptenHTTPSConnection + + +def inject_into_urllib3() -> None: + # override connection classes to use emscripten specific classes + # n.b. mypy complains about the overriding of classes below + # if it isn't ignored + HTTPConnectionPool.ConnectionCls = EmscriptenHTTPConnection + HTTPSConnectionPool.ConnectionCls = EmscriptenHTTPSConnection + urllib3.connection.HTTPConnection = EmscriptenHTTPConnection # type: ignore[misc,assignment] + urllib3.connection.HTTPSConnection = EmscriptenHTTPSConnection # type: ignore[misc,assignment] diff --git a/frogpilot/third_party/urllib3/contrib/emscripten/connection.py b/frogpilot/third_party/urllib3/contrib/emscripten/connection.py new file mode 100644 index 000000000..41bfd2797 --- /dev/null +++ b/frogpilot/third_party/urllib3/contrib/emscripten/connection.py @@ -0,0 +1,255 @@ +from __future__ import annotations + +import os +import typing + +# use http.client.HTTPException for consistency with non-emscripten +from http.client import HTTPException as HTTPException # noqa: F401 +from http.client import ResponseNotReady + +from ..._base_connection import _TYPE_BODY +from ...connection import HTTPConnection, ProxyConfig, port_by_scheme +from ...exceptions import TimeoutError +from ...response import BaseHTTPResponse +from ...util.connection import _TYPE_SOCKET_OPTIONS +from ...util.timeout import _DEFAULT_TIMEOUT, _TYPE_TIMEOUT +from ...util.url import Url +from .fetch import _RequestError, _TimeoutError, send_request, send_streaming_request +from .request import EmscriptenRequest +from .response import EmscriptenHttpResponseWrapper, EmscriptenResponse + +if typing.TYPE_CHECKING: + from ..._base_connection import BaseHTTPConnection, BaseHTTPSConnection + + +class EmscriptenHTTPConnection: + default_port: typing.ClassVar[int] = port_by_scheme["http"] + default_socket_options: typing.ClassVar[_TYPE_SOCKET_OPTIONS] + + timeout: None | (float) + + host: str + port: int + blocksize: int + source_address: tuple[str, int] | None + socket_options: _TYPE_SOCKET_OPTIONS | None + + proxy: Url | None + proxy_config: ProxyConfig | None + + is_verified: bool = False + proxy_is_verified: bool | None = None + + _response: EmscriptenResponse | None + + def __init__( + self, + host: str, + port: int = 0, + *, + timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, + source_address: tuple[str, int] | None = None, + blocksize: int = 8192, + socket_options: _TYPE_SOCKET_OPTIONS | None = None, + proxy: Url | None = None, + proxy_config: ProxyConfig | None = None, + ) -> None: + self.host = host + self.port = port + self.timeout = timeout if isinstance(timeout, float) else 0.0 + self.scheme = "http" + self._closed = True + self._response = None + # ignore these things because we don't + # have control over that stuff + self.proxy = None + self.proxy_config = None + self.blocksize = blocksize + self.source_address = None + self.socket_options = None + self.is_verified = False + + def set_tunnel( + self, + host: str, + port: int | None = 0, + headers: typing.Mapping[str, str] | None = None, + scheme: str = "http", + ) -> None: + pass + + def connect(self) -> None: + pass + + def request( + self, + method: str, + url: str, + body: _TYPE_BODY | None = None, + headers: typing.Mapping[str, str] | None = None, + # We know *at least* botocore is depending on the order of the + # first 3 parameters so to be safe we only mark the later ones + # as keyword-only to ensure we have space to extend. + *, + chunked: bool = False, + preload_content: bool = True, + decode_content: bool = True, + enforce_content_length: bool = True, + ) -> None: + self._closed = False + if url.startswith("/"): + # no scheme / host / port included, make a full url + url = f"{self.scheme}://{self.host}:{self.port}" + url + request = EmscriptenRequest( + url=url, + method=method, + timeout=self.timeout if self.timeout else 0, + decode_content=decode_content, + ) + request.set_body(body) + if headers: + for k, v in headers.items(): + request.set_header(k, v) + self._response = None + try: + if not preload_content: + self._response = send_streaming_request(request) + if self._response is None: + self._response = send_request(request) + except _TimeoutError as e: + raise TimeoutError(e.message) from e + except _RequestError as e: + raise HTTPException(e.message) from e + + def getresponse(self) -> BaseHTTPResponse: + if self._response is not None: + return EmscriptenHttpResponseWrapper( + internal_response=self._response, + url=self._response.request.url, + connection=self, + ) + else: + raise ResponseNotReady() + + def close(self) -> None: + self._closed = True + self._response = None + + @property + def is_closed(self) -> bool: + """Whether the connection either is brand new or has been previously closed. + If this property is True then both ``is_connected`` and ``has_connected_to_proxy`` + properties must be False. + """ + return self._closed + + @property + def is_connected(self) -> bool: + """Whether the connection is actively connected to any origin (proxy or target)""" + return True + + @property + def has_connected_to_proxy(self) -> bool: + """Whether the connection has successfully connected to its proxy. + This returns False if no proxy is in use. Used to determine whether + errors are coming from the proxy layer or from tunnelling to the target origin. + """ + return False + + +class EmscriptenHTTPSConnection(EmscriptenHTTPConnection): + default_port = port_by_scheme["https"] + # all this is basically ignored, as browser handles https + cert_reqs: int | str | None = None + ca_certs: str | None = None + ca_cert_dir: str | None = None + ca_cert_data: None | str | bytes = None + cert_file: str | None + key_file: str | None + key_password: str | None + ssl_context: typing.Any | None + ssl_version: int | str | None = None + ssl_minimum_version: int | None = None + ssl_maximum_version: int | None = None + assert_hostname: None | str | typing.Literal[False] + assert_fingerprint: str | None = None + + def __init__( + self, + host: str, + port: int = 0, + *, + timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, + source_address: tuple[str, int] | None = None, + blocksize: int = 16384, + socket_options: ( + None | _TYPE_SOCKET_OPTIONS + ) = HTTPConnection.default_socket_options, + proxy: Url | None = None, + proxy_config: ProxyConfig | None = None, + cert_reqs: int | str | None = None, + assert_hostname: None | str | typing.Literal[False] = None, + assert_fingerprint: str | None = None, + server_hostname: str | None = None, + ssl_context: typing.Any | None = None, + ca_certs: str | None = None, + ca_cert_dir: str | None = None, + ca_cert_data: None | str | bytes = None, + ssl_minimum_version: int | None = None, + ssl_maximum_version: int | None = None, + ssl_version: int | str | None = None, # Deprecated + cert_file: str | None = None, + key_file: str | None = None, + key_password: str | None = None, + ) -> None: + super().__init__( + host, + port=port, + timeout=timeout, + source_address=source_address, + blocksize=blocksize, + socket_options=socket_options, + proxy=proxy, + proxy_config=proxy_config, + ) + self.scheme = "https" + + self.key_file = key_file + self.cert_file = cert_file + self.key_password = key_password + self.ssl_context = ssl_context + self.server_hostname = server_hostname + self.assert_hostname = assert_hostname + self.assert_fingerprint = assert_fingerprint + self.ssl_version = ssl_version + self.ssl_minimum_version = ssl_minimum_version + self.ssl_maximum_version = ssl_maximum_version + self.ca_certs = ca_certs and os.path.expanduser(ca_certs) + self.ca_cert_dir = ca_cert_dir and os.path.expanduser(ca_cert_dir) + self.ca_cert_data = ca_cert_data + + self.cert_reqs = None + + # The browser will automatically verify all requests. + # We have no control over that setting. + self.is_verified = True + + def set_cert( + self, + key_file: str | None = None, + cert_file: str | None = None, + cert_reqs: int | str | None = None, + key_password: str | None = None, + ca_certs: str | None = None, + assert_hostname: None | str | typing.Literal[False] = None, + assert_fingerprint: str | None = None, + ca_cert_dir: str | None = None, + ca_cert_data: None | str | bytes = None, + ) -> None: + pass + + +# verify that this class implements BaseHTTP(s) connection correctly +if typing.TYPE_CHECKING: + _supports_http_protocol: BaseHTTPConnection = EmscriptenHTTPConnection("", 0) + _supports_https_protocol: BaseHTTPSConnection = EmscriptenHTTPSConnection("", 0) diff --git a/frogpilot/third_party/urllib3/contrib/emscripten/emscripten_fetch_worker.js b/frogpilot/third_party/urllib3/contrib/emscripten/emscripten_fetch_worker.js new file mode 100644 index 000000000..243b86222 --- /dev/null +++ b/frogpilot/third_party/urllib3/contrib/emscripten/emscripten_fetch_worker.js @@ -0,0 +1,110 @@ +let Status = { + SUCCESS_HEADER: -1, + SUCCESS_EOF: -2, + ERROR_TIMEOUT: -3, + ERROR_EXCEPTION: -4, +}; + +let connections = {}; +let nextConnectionID = 1; +const encoder = new TextEncoder(); + +self.addEventListener("message", async function (event) { + if (event.data.close) { + let connectionID = event.data.close; + delete connections[connectionID]; + return; + } else if (event.data.getMore) { + let connectionID = event.data.getMore; + let { curOffset, value, reader, intBuffer, byteBuffer } = + connections[connectionID]; + // if we still have some in buffer, then just send it back straight away + if (!value || curOffset >= value.length) { + // read another buffer if required + try { + let readResponse = await reader.read(); + + if (readResponse.done) { + // read everything - clear connection and return + delete connections[connectionID]; + Atomics.store(intBuffer, 0, Status.SUCCESS_EOF); + Atomics.notify(intBuffer, 0); + // finished reading successfully + // return from event handler + return; + } + curOffset = 0; + connections[connectionID].value = readResponse.value; + value = readResponse.value; + } catch (error) { + console.log("Request exception:", error); + let errorBytes = encoder.encode(error.message); + let written = errorBytes.length; + byteBuffer.set(errorBytes); + intBuffer[1] = written; + Atomics.store(intBuffer, 0, Status.ERROR_EXCEPTION); + Atomics.notify(intBuffer, 0); + } + } + + // send as much buffer as we can + let curLen = value.length - curOffset; + if (curLen > byteBuffer.length) { + curLen = byteBuffer.length; + } + byteBuffer.set(value.subarray(curOffset, curOffset + curLen), 0); + + Atomics.store(intBuffer, 0, curLen); // store current length in bytes + Atomics.notify(intBuffer, 0); + curOffset += curLen; + connections[connectionID].curOffset = curOffset; + + return; + } else { + // start fetch + let connectionID = nextConnectionID; + nextConnectionID += 1; + const intBuffer = new Int32Array(event.data.buffer); + const byteBuffer = new Uint8Array(event.data.buffer, 8); + try { + const response = await fetch(event.data.url, event.data.fetchParams); + // return the headers first via textencoder + var headers = []; + for (const pair of response.headers.entries()) { + headers.push([pair[0], pair[1]]); + } + let headerObj = { + headers: headers, + status: response.status, + connectionID, + }; + const headerText = JSON.stringify(headerObj); + let headerBytes = encoder.encode(headerText); + let written = headerBytes.length; + byteBuffer.set(headerBytes); + intBuffer[1] = written; + // make a connection + connections[connectionID] = { + reader: response.body.getReader(), + intBuffer: intBuffer, + byteBuffer: byteBuffer, + value: undefined, + curOffset: 0, + }; + // set header ready + Atomics.store(intBuffer, 0, Status.SUCCESS_HEADER); + Atomics.notify(intBuffer, 0); + // all fetching after this goes through a new postmessage call with getMore + // this allows for parallel requests + } catch (error) { + console.log("Request exception:", error); + let errorBytes = encoder.encode(error.message); + let written = errorBytes.length; + byteBuffer.set(errorBytes); + intBuffer[1] = written; + Atomics.store(intBuffer, 0, Status.ERROR_EXCEPTION); + Atomics.notify(intBuffer, 0); + } + } +}); +self.postMessage({ inited: true }); diff --git a/frogpilot/third_party/urllib3/contrib/emscripten/fetch.py b/frogpilot/third_party/urllib3/contrib/emscripten/fetch.py new file mode 100644 index 000000000..66958217a --- /dev/null +++ b/frogpilot/third_party/urllib3/contrib/emscripten/fetch.py @@ -0,0 +1,728 @@ +""" +Support for streaming http requests in emscripten. + +A few caveats - + +If your browser (or Node.js) has WebAssembly JavaScript Promise Integration enabled +https://github.com/WebAssembly/js-promise-integration/blob/main/proposals/js-promise-integration/Overview.md +*and* you launch pyodide using `pyodide.runPythonAsync`, this will fetch data using the +JavaScript asynchronous fetch api (wrapped via `pyodide.ffi.call_sync`). In this case +timeouts and streaming should just work. + +Otherwise, it uses a combination of XMLHttpRequest and a web-worker for streaming. + +This approach has several caveats: + +Firstly, you can't do streaming http in the main UI thread, because atomics.wait isn't allowed. +Streaming only works if you're running pyodide in a web worker. + +Secondly, this uses an extra web worker and SharedArrayBuffer to do the asynchronous fetch +operation, so it requires that you have crossOriginIsolation enabled, by serving over https +(or from localhost) with the two headers below set: + + Cross-Origin-Opener-Policy: same-origin + Cross-Origin-Embedder-Policy: require-corp + +You can tell if cross origin isolation is successfully enabled by looking at the global crossOriginIsolated variable in +JavaScript console. If it isn't, streaming requests will fallback to XMLHttpRequest, i.e. getting the whole +request into a buffer and then returning it. it shows a warning in the JavaScript console in this case. + +Finally, the webworker which does the streaming fetch is created on initial import, but will only be started once +control is returned to javascript. Call `await wait_for_streaming_ready()` to wait for streaming fetch. + +NB: in this code, there are a lot of JavaScript objects. They are named js_* +to make it clear what type of object they are. +""" + +from __future__ import annotations + +import io +import json +from email.parser import Parser +from importlib.resources import files +from typing import TYPE_CHECKING, Any + +import js # type: ignore[import-not-found] +from pyodide.ffi import ( # type: ignore[import-not-found] + JsArray, + JsException, + JsProxy, + to_js, +) + +if TYPE_CHECKING: + from typing_extensions import Buffer + +from .request import EmscriptenRequest +from .response import EmscriptenResponse + +""" +There are some headers that trigger unintended CORS preflight requests. +See also https://github.com/koenvo/pyodide-http/issues/22 +""" +HEADERS_TO_IGNORE = ("user-agent",) + +SUCCESS_HEADER = -1 +SUCCESS_EOF = -2 +ERROR_TIMEOUT = -3 +ERROR_EXCEPTION = -4 + +_STREAMING_WORKER_CODE = ( + files(__package__) + .joinpath("emscripten_fetch_worker.js") + .read_text(encoding="utf-8") +) + + +class _RequestError(Exception): + def __init__( + self, + message: str | None = None, + *, + request: EmscriptenRequest | None = None, + response: EmscriptenResponse | None = None, + ): + self.request = request + self.response = response + self.message = message + super().__init__(self.message) + + +class _StreamingError(_RequestError): + pass + + +class _TimeoutError(_RequestError): + pass + + +def _obj_from_dict(dict_val: dict[str, Any]) -> JsProxy: + return to_js(dict_val, dict_converter=js.Object.fromEntries) + + +class _ReadStream(io.RawIOBase): + def __init__( + self, + int_buffer: JsArray, + byte_buffer: JsArray, + timeout: float, + worker: JsProxy, + connection_id: int, + request: EmscriptenRequest, + ): + self.int_buffer = int_buffer + self.byte_buffer = byte_buffer + self.read_pos = 0 + self.read_len = 0 + self.connection_id = connection_id + self.worker = worker + self.timeout = int(1000 * timeout) if timeout > 0 else None + self.is_live = True + self._is_closed = False + self.request: EmscriptenRequest | None = request + + def __del__(self) -> None: + self.close() + + # this is compatible with _base_connection + def is_closed(self) -> bool: + return self._is_closed + + # for compatibility with RawIOBase + @property + def closed(self) -> bool: + return self.is_closed() + + def close(self) -> None: + if self.is_closed(): + return + self.read_len = 0 + self.read_pos = 0 + self.int_buffer = None + self.byte_buffer = None + self._is_closed = True + self.request = None + if self.is_live: + self.worker.postMessage(_obj_from_dict({"close": self.connection_id})) + self.is_live = False + super().close() + + def readable(self) -> bool: + return True + + def writable(self) -> bool: + return False + + def seekable(self) -> bool: + return False + + def readinto(self, byte_obj: Buffer) -> int: + if not self.int_buffer: + raise _StreamingError( + "No buffer for stream in _ReadStream.readinto", + request=self.request, + response=None, + ) + if self.read_len == 0: + # wait for the worker to send something + js.Atomics.store(self.int_buffer, 0, ERROR_TIMEOUT) + self.worker.postMessage(_obj_from_dict({"getMore": self.connection_id})) + if ( + js.Atomics.wait(self.int_buffer, 0, ERROR_TIMEOUT, self.timeout) + == "timed-out" + ): + raise _TimeoutError + data_len = self.int_buffer[0] + if data_len > 0: + self.read_len = data_len + self.read_pos = 0 + elif data_len == ERROR_EXCEPTION: + string_len = self.int_buffer[1] + # decode the error string + js_decoder = js.TextDecoder.new() + json_str = js_decoder.decode(self.byte_buffer.slice(0, string_len)) + raise _StreamingError( + f"Exception thrown in fetch: {json_str}", + request=self.request, + response=None, + ) + else: + # EOF, free the buffers and return zero + # and free the request + self.is_live = False + self.close() + return 0 + # copy from int32array to python bytes + ret_length = min(self.read_len, len(memoryview(byte_obj))) + subarray = self.byte_buffer.subarray( + self.read_pos, self.read_pos + ret_length + ).to_py() + memoryview(byte_obj)[0:ret_length] = subarray + self.read_len -= ret_length + self.read_pos += ret_length + return ret_length + + +class _StreamingFetcher: + def __init__(self) -> None: + # make web-worker and data buffer on startup + self.streaming_ready = False + + js_data_blob = js.Blob.new( + to_js([_STREAMING_WORKER_CODE], create_pyproxies=False), + _obj_from_dict({"type": "application/javascript"}), + ) + + def promise_resolver(js_resolve_fn: JsProxy, js_reject_fn: JsProxy) -> None: + def onMsg(e: JsProxy) -> None: + self.streaming_ready = True + js_resolve_fn(e) + + def onErr(e: JsProxy) -> None: + js_reject_fn(e) # Defensive: never happens in ci + + self.js_worker.onmessage = onMsg + self.js_worker.onerror = onErr + + js_data_url = js.URL.createObjectURL(js_data_blob) + self.js_worker = js.globalThis.Worker.new(js_data_url) + self.js_worker_ready_promise = js.globalThis.Promise.new(promise_resolver) + + def send(self, request: EmscriptenRequest) -> EmscriptenResponse: + headers = { + k: v for k, v in request.headers.items() if k not in HEADERS_TO_IGNORE + } + + body = request.body + fetch_data = {"headers": headers, "body": to_js(body), "method": request.method} + # start the request off in the worker + timeout = int(1000 * request.timeout) if request.timeout > 0 else None + js_shared_buffer = js.SharedArrayBuffer.new(1048576) + js_int_buffer = js.Int32Array.new(js_shared_buffer) + js_byte_buffer = js.Uint8Array.new(js_shared_buffer, 8) + + js.Atomics.store(js_int_buffer, 0, ERROR_TIMEOUT) + js.Atomics.notify(js_int_buffer, 0) + js_absolute_url = js.URL.new(request.url, js.location).href + self.js_worker.postMessage( + _obj_from_dict( + { + "buffer": js_shared_buffer, + "url": js_absolute_url, + "fetchParams": fetch_data, + } + ) + ) + # wait for the worker to send something + js.Atomics.wait(js_int_buffer, 0, ERROR_TIMEOUT, timeout) + if js_int_buffer[0] == ERROR_TIMEOUT: + raise _TimeoutError( + "Timeout connecting to streaming request", + request=request, + response=None, + ) + elif js_int_buffer[0] == SUCCESS_HEADER: + # got response + # header length is in second int of intBuffer + string_len = js_int_buffer[1] + # decode the rest to a JSON string + js_decoder = js.TextDecoder.new() + # this does a copy (the slice) because decode can't work on shared array + # for some silly reason + json_str = js_decoder.decode(js_byte_buffer.slice(0, string_len)) + # get it as an object + response_obj = json.loads(json_str) + return EmscriptenResponse( + request=request, + status_code=response_obj["status"], + headers=response_obj["headers"], + body=_ReadStream( + js_int_buffer, + js_byte_buffer, + request.timeout, + self.js_worker, + response_obj["connectionID"], + request, + ), + ) + elif js_int_buffer[0] == ERROR_EXCEPTION: + string_len = js_int_buffer[1] + # decode the error string + js_decoder = js.TextDecoder.new() + json_str = js_decoder.decode(js_byte_buffer.slice(0, string_len)) + raise _StreamingError( + f"Exception thrown in fetch: {json_str}", request=request, response=None + ) + else: + raise _StreamingError( + f"Unknown status from worker in fetch: {js_int_buffer[0]}", + request=request, + response=None, + ) + + +class _JSPIReadStream(io.RawIOBase): + """ + A read stream that uses pyodide.ffi.run_sync to read from a JavaScript fetch + response. This requires support for WebAssembly JavaScript Promise Integration + in the containing browser, and for pyodide to be launched via runPythonAsync. + + :param js_read_stream: + The JavaScript stream reader + + :param timeout: + Timeout in seconds + + :param request: + The request we're handling + + :param response: + The response this stream relates to + + :param js_abort_controller: + A JavaScript AbortController object, used for timeouts + """ + + def __init__( + self, + js_read_stream: Any, + timeout: float, + request: EmscriptenRequest, + response: EmscriptenResponse, + js_abort_controller: Any, # JavaScript AbortController for timeouts + ): + self.js_read_stream = js_read_stream + self.timeout = timeout + self._is_closed = False + self._is_done = False + self.request: EmscriptenRequest | None = request + self.response: EmscriptenResponse | None = response + self.current_buffer = None + self.current_buffer_pos = 0 + self.js_abort_controller = js_abort_controller + + def __del__(self) -> None: + self.close() + + # this is compatible with _base_connection + def is_closed(self) -> bool: + return self._is_closed + + # for compatibility with RawIOBase + @property + def closed(self) -> bool: + return self.is_closed() + + def close(self) -> None: + if self.is_closed(): + return + self.read_len = 0 + self.read_pos = 0 + self.js_read_stream.cancel() + self.js_read_stream = None + self._is_closed = True + self._is_done = True + self.request = None + self.response = None + super().close() + + def readable(self) -> bool: + return True + + def writable(self) -> bool: + return False + + def seekable(self) -> bool: + return False + + def _get_next_buffer(self) -> bool: + result_js = _run_sync_with_timeout( + self.js_read_stream.read(), + self.timeout, + self.js_abort_controller, + request=self.request, + response=self.response, + ) + if result_js.done: + self._is_done = True + return False + else: + self.current_buffer = result_js.value.to_py() + self.current_buffer_pos = 0 + return True + + def readinto(self, byte_obj: Buffer) -> int: + if self.current_buffer is None: + if not self._get_next_buffer() or self.current_buffer is None: + self.close() + return 0 + ret_length = min( + len(byte_obj), len(self.current_buffer) - self.current_buffer_pos + ) + byte_obj[0:ret_length] = self.current_buffer[ + self.current_buffer_pos : self.current_buffer_pos + ret_length + ] + self.current_buffer_pos += ret_length + if self.current_buffer_pos == len(self.current_buffer): + self.current_buffer = None + return ret_length + + +# check if we are in a worker or not +def is_in_browser_main_thread() -> bool: + return hasattr(js, "window") and hasattr(js, "self") and js.self == js.window + + +def is_cross_origin_isolated() -> bool: + return hasattr(js, "crossOriginIsolated") and js.crossOriginIsolated + + +def is_in_node() -> bool: + return ( + hasattr(js, "process") + and hasattr(js.process, "release") + and hasattr(js.process.release, "name") + and js.process.release.name == "node" + ) + + +def is_worker_available() -> bool: + return hasattr(js, "Worker") and hasattr(js, "Blob") + + +_fetcher: _StreamingFetcher | None = None + +if is_worker_available() and ( + (is_cross_origin_isolated() and not is_in_browser_main_thread()) + and (not is_in_node()) +): + _fetcher = _StreamingFetcher() +else: + _fetcher = None + + +NODE_JSPI_ERROR = ( + "urllib3 only works in Node.js with pyodide.runPythonAsync" + " and requires the flag --experimental-wasm-stack-switching in " + " versions of node <24." +) + + +def send_streaming_request(request: EmscriptenRequest) -> EmscriptenResponse | None: + if has_jspi(): + return send_jspi_request(request, True) + elif is_in_node(): + raise _RequestError( + message=NODE_JSPI_ERROR, + request=request, + response=None, + ) + + if _fetcher and streaming_ready(): + return _fetcher.send(request) + else: + _show_streaming_warning() + return None + + +_SHOWN_TIMEOUT_WARNING = False + + +def _show_timeout_warning() -> None: + global _SHOWN_TIMEOUT_WARNING + if not _SHOWN_TIMEOUT_WARNING: + _SHOWN_TIMEOUT_WARNING = True + message = "Warning: Timeout is not available on main browser thread" + js.console.warn(message) + + +_SHOWN_STREAMING_WARNING = False + + +def _show_streaming_warning() -> None: + global _SHOWN_STREAMING_WARNING + if not _SHOWN_STREAMING_WARNING: + _SHOWN_STREAMING_WARNING = True + message = "Can't stream HTTP requests because: \n" + if not is_cross_origin_isolated(): + message += " Page is not cross-origin isolated\n" + if is_in_browser_main_thread(): + message += " Python is running in main browser thread\n" + if not is_worker_available(): + message += " Worker or Blob classes are not available in this environment." # Defensive: this is always False in browsers that we test in + if streaming_ready() is False: + message += """ Streaming fetch worker isn't ready. If you want to be sure that streaming fetch +is working, you need to call: 'await urllib3.contrib.emscripten.fetch.wait_for_streaming_ready()`""" + from js import console + + console.warn(message) + + +def send_request(request: EmscriptenRequest) -> EmscriptenResponse: + if has_jspi(): + return send_jspi_request(request, False) + elif is_in_node(): + raise _RequestError( + message=NODE_JSPI_ERROR, + request=request, + response=None, + ) + try: + js_xhr = js.XMLHttpRequest.new() + + if not is_in_browser_main_thread(): + js_xhr.responseType = "arraybuffer" + if request.timeout: + js_xhr.timeout = int(request.timeout * 1000) + else: + js_xhr.overrideMimeType("text/plain; charset=ISO-8859-15") + if request.timeout: + # timeout isn't available on the main thread - show a warning in console + # if it is set + _show_timeout_warning() + + js_xhr.open(request.method, request.url, False) + for name, value in request.headers.items(): + if name.lower() not in HEADERS_TO_IGNORE: + js_xhr.setRequestHeader(name, value) + + js_xhr.send(to_js(request.body)) + + headers = dict(Parser().parsestr(js_xhr.getAllResponseHeaders())) + + if not is_in_browser_main_thread(): + body = js_xhr.response.to_py().tobytes() + else: + body = js_xhr.response.encode("ISO-8859-15") + return EmscriptenResponse( + status_code=js_xhr.status, headers=headers, body=body, request=request + ) + except JsException as err: + if err.name == "TimeoutError": + raise _TimeoutError(err.message, request=request) + elif err.name == "NetworkError": + raise _RequestError(err.message, request=request) + else: + # general http error + raise _RequestError(err.message, request=request) + + +def send_jspi_request( + request: EmscriptenRequest, streaming: bool +) -> EmscriptenResponse: + """ + Send a request using WebAssembly JavaScript Promise Integration + to wrap the asynchronous JavaScript fetch api (experimental). + + :param request: + Request to send + + :param streaming: + Whether to stream the response + + :return: The response object + :rtype: EmscriptenResponse + """ + timeout = request.timeout + js_abort_controller = js.AbortController.new() + headers = {k: v for k, v in request.headers.items() if k not in HEADERS_TO_IGNORE} + req_body = request.body + fetch_data = { + "headers": headers, + "body": to_js(req_body), + "method": request.method, + "signal": js_abort_controller.signal, + } + # Node.js returns the whole response (unlike opaqueredirect in browsers), + # so urllib3 can set `redirect: manual` to control redirects itself. + # https://stackoverflow.com/a/78524615 + if _is_node_js(): + fetch_data["redirect"] = "manual" + # Call JavaScript fetch (async api, returns a promise) + fetcher_promise_js = js.fetch(request.url, _obj_from_dict(fetch_data)) + # Now suspend WebAssembly until we resolve that promise + # or time out. + response_js = _run_sync_with_timeout( + fetcher_promise_js, + timeout, + js_abort_controller, + request=request, + response=None, + ) + headers = {} + header_iter = response_js.headers.entries() + while True: + iter_value_js = header_iter.next() + if getattr(iter_value_js, "done", False): + break + else: + headers[str(iter_value_js.value[0])] = str(iter_value_js.value[1]) + status_code = response_js.status + body: bytes | io.RawIOBase = b"" + + response = EmscriptenResponse( + status_code=status_code, headers=headers, body=b"", request=request + ) + if streaming: + # get via inputstream + if response_js.body is not None: + # get a reader from the fetch response + body_stream_js = response_js.body.getReader() + body = _JSPIReadStream( + body_stream_js, timeout, request, response, js_abort_controller + ) + else: + # get directly via arraybuffer + # n.b. this is another async JavaScript call. + body = _run_sync_with_timeout( + response_js.arrayBuffer(), + timeout, + js_abort_controller, + request=request, + response=response, + ).to_py() + response.body = body + return response + + +def _run_sync_with_timeout( + promise: Any, + timeout: float, + js_abort_controller: Any, + request: EmscriptenRequest | None, + response: EmscriptenResponse | None, +) -> Any: + """ + Await a JavaScript promise synchronously with a timeout which is implemented + via the AbortController + + :param promise: + Javascript promise to await + + :param timeout: + Timeout in seconds + + :param js_abort_controller: + A JavaScript AbortController object, used on timeout + + :param request: + The request being handled + + :param response: + The response being handled (if it exists yet) + + :raises _TimeoutError: If the request times out + :raises _RequestError: If the request raises a JavaScript exception + + :return: The result of awaiting the promise. + """ + timer_id = None + if timeout > 0: + timer_id = js.setTimeout( + js_abort_controller.abort.bind(js_abort_controller), int(timeout * 1000) + ) + try: + from pyodide.ffi import run_sync + + # run_sync here uses WebAssembly JavaScript Promise Integration to + # suspend python until the JavaScript promise resolves. + return run_sync(promise) + except JsException as err: + if err.name == "AbortError": + raise _TimeoutError( + message="Request timed out", request=request, response=response + ) + else: + raise _RequestError(message=err.message, request=request, response=response) + finally: + if timer_id is not None: + js.clearTimeout(timer_id) + + +def has_jspi() -> bool: + """ + Return true if jspi can be used. + + This requires both browser support and also WebAssembly + to be in the correct state - i.e. that the javascript + call into python was async not sync. + + :return: True if jspi can be used. + :rtype: bool + """ + try: + from pyodide.ffi import can_run_sync, run_sync # noqa: F401 + + return bool(can_run_sync()) + except ImportError: + return False + + +def _is_node_js() -> bool: + """ + Check if we are in Node.js. + + :return: True if we are in Node.js. + :rtype: bool + """ + return ( + hasattr(js, "process") + and hasattr(js.process, "release") + # According to the Node.js documentation, the release name is always "node". + and js.process.release.name == "node" + ) + + +def streaming_ready() -> bool | None: + if _fetcher: + return _fetcher.streaming_ready + else: + return None # no fetcher, return None to signify that + + +async def wait_for_streaming_ready() -> bool: + if _fetcher: + await _fetcher.js_worker_ready_promise + return True + else: + return False diff --git a/frogpilot/third_party/urllib3/contrib/emscripten/request.py b/frogpilot/third_party/urllib3/contrib/emscripten/request.py new file mode 100644 index 000000000..e692e692b --- /dev/null +++ b/frogpilot/third_party/urllib3/contrib/emscripten/request.py @@ -0,0 +1,22 @@ +from __future__ import annotations + +from dataclasses import dataclass, field + +from ..._base_connection import _TYPE_BODY + + +@dataclass +class EmscriptenRequest: + method: str + url: str + params: dict[str, str] | None = None + body: _TYPE_BODY | None = None + headers: dict[str, str] = field(default_factory=dict) + timeout: float = 0 + decode_content: bool = True + + def set_header(self, name: str, value: str) -> None: + self.headers[name.capitalize()] = value + + def set_body(self, body: _TYPE_BODY | None) -> None: + self.body = body diff --git a/frogpilot/third_party/urllib3/contrib/emscripten/response.py b/frogpilot/third_party/urllib3/contrib/emscripten/response.py new file mode 100644 index 000000000..cb1088a18 --- /dev/null +++ b/frogpilot/third_party/urllib3/contrib/emscripten/response.py @@ -0,0 +1,277 @@ +from __future__ import annotations + +import json as _json +import logging +import typing +from contextlib import contextmanager +from dataclasses import dataclass +from http.client import HTTPException as HTTPException +from io import BytesIO, IOBase + +from ...exceptions import InvalidHeader, TimeoutError +from ...response import BaseHTTPResponse +from ...util.retry import Retry +from .request import EmscriptenRequest + +if typing.TYPE_CHECKING: + from ..._base_connection import BaseHTTPConnection, BaseHTTPSConnection + +log = logging.getLogger(__name__) + + +@dataclass +class EmscriptenResponse: + status_code: int + headers: dict[str, str] + body: IOBase | bytes + request: EmscriptenRequest + + +class EmscriptenHttpResponseWrapper(BaseHTTPResponse): + def __init__( + self, + internal_response: EmscriptenResponse, + url: str | None = None, + connection: BaseHTTPConnection | BaseHTTPSConnection | None = None, + ): + self._pool = None # set by pool class + self._body = None + self._response = internal_response + self._url = url + self._connection = connection + self._closed = False + super().__init__( + headers=internal_response.headers, + status=internal_response.status_code, + request_url=url, + version=0, + version_string="HTTP/?", + reason="", + decode_content=True, + ) + self.length_remaining = self._init_length(self._response.request.method) + self.length_is_certain = False + + @property + def url(self) -> str | None: + return self._url + + @url.setter + def url(self, url: str | None) -> None: + self._url = url + + @property + def connection(self) -> BaseHTTPConnection | BaseHTTPSConnection | None: + return self._connection + + @property + def retries(self) -> Retry | None: + return self._retries + + @retries.setter + def retries(self, retries: Retry | None) -> None: + # Override the request_url if retries has a redirect location. + self._retries = retries + + def stream( + self, amt: int | None = 2**16, decode_content: bool | None = None + ) -> typing.Generator[bytes]: + """ + A generator wrapper for the read() method. A call will block until + ``amt`` bytes have been read from the connection or until the + connection is closed. + + :param amt: + How much of the content to read. The generator will return up to + much data per iteration, but may return less. This is particularly + likely when using compressed data. However, the empty string will + never be returned. + + :param decode_content: + If True, will attempt to decode the body based on the + 'content-encoding' header. + """ + while True: + data = self.read(amt=amt, decode_content=decode_content) + + if data: + yield data + else: + break + + def _init_length(self, request_method: str | None) -> int | None: + length: int | None + content_length: str | None = self.headers.get("content-length") + + if content_length is not None: + try: + # RFC 7230 section 3.3.2 specifies multiple content lengths can + # be sent in a single Content-Length header + # (e.g. Content-Length: 42, 42). This line ensures the values + # are all valid ints and that as long as the `set` length is 1, + # all values are the same. Otherwise, the header is invalid. + lengths = {int(val) for val in content_length.split(",")} + if len(lengths) > 1: + raise InvalidHeader( + "Content-Length contained multiple " + "unmatching values (%s)" % content_length + ) + length = lengths.pop() + except ValueError: + length = None + else: + if length < 0: + length = None + + else: # if content_length is None + length = None + + # Check for responses that shouldn't include a body + if ( + self.status in (204, 304) + or 100 <= self.status < 200 + or request_method == "HEAD" + ): + length = 0 + + return length + + def read( + self, + amt: int | None = None, + decode_content: bool | None = None, # ignored because browser decodes always + cache_content: bool = False, + ) -> bytes: + if ( + self._closed + or self._response is None + or (isinstance(self._response.body, IOBase) and self._response.body.closed) + ): + return b"" + + with self._error_catcher(): + # body has been preloaded as a string by XmlHttpRequest + if not isinstance(self._response.body, IOBase): + self.length_remaining = len(self._response.body) + self.length_is_certain = True + # wrap body in IOStream + self._response.body = BytesIO(self._response.body) + if amt is not None and amt >= 0: + # don't cache partial content + cache_content = False + data = self._response.body.read(amt) + else: # read all we can (and cache it) + data = self._response.body.read() + if cache_content: + self._body = data + if self.length_remaining is not None: + self.length_remaining = max(self.length_remaining - len(data), 0) + if len(data) == 0 or ( + self.length_is_certain and self.length_remaining == 0 + ): + # definitely finished reading, close response stream + self._response.body.close() + return typing.cast(bytes, data) + + def read_chunked( + self, + amt: int | None = None, + decode_content: bool | None = None, + ) -> typing.Generator[bytes]: + # chunked is handled by browser + while True: + bytes = self.read(amt, decode_content) + if not bytes: + break + yield bytes + + def release_conn(self) -> None: + if not self._pool or not self._connection: + return None + + self._pool._put_conn(self._connection) + self._connection = None + + def drain_conn(self) -> None: + self.close() + + @property + def data(self) -> bytes: + if self._body: + return self._body + else: + return self.read(cache_content=True) + + def json(self) -> typing.Any: + """ + Deserializes the body of the HTTP response as a Python object. + + The body of the HTTP response must be encoded using UTF-8, as per + `RFC 8529 Section 8.1 `_. + + To use a custom JSON decoder pass the result of :attr:`HTTPResponse.data` to + your custom decoder instead. + + If the body of the HTTP response is not decodable to UTF-8, a + `UnicodeDecodeError` will be raised. If the body of the HTTP response is not a + valid JSON document, a `json.JSONDecodeError` will be raised. + + Read more :ref:`here `. + + :returns: The body of the HTTP response as a Python object. + """ + data = self.data.decode("utf-8") + return _json.loads(data) + + def close(self) -> None: + if not self._closed: + if isinstance(self._response.body, IOBase): + self._response.body.close() + if self._connection: + self._connection.close() + self._connection = None + self._closed = True + + @contextmanager + def _error_catcher(self) -> typing.Generator[None]: + """ + Catch Emscripten specific exceptions thrown by fetch.py, + instead re-raising urllib3 variants, so that low-level exceptions + are not leaked in the high-level api. + + On exit, release the connection back to the pool. + """ + from .fetch import _RequestError, _TimeoutError # avoid circular import + + clean_exit = False + + try: + yield + # If no exception is thrown, we should avoid cleaning up + # unnecessarily. + clean_exit = True + except _TimeoutError as e: + raise TimeoutError(str(e)) + except _RequestError as e: + raise HTTPException(str(e)) + finally: + # If we didn't terminate cleanly, we need to throw away our + # connection. + if not clean_exit: + # The response may not be closed but we're not going to use it + # anymore so close it now + if ( + isinstance(self._response.body, IOBase) + and not self._response.body.closed + ): + self._response.body.close() + # release the connection back to the pool + self.release_conn() + else: + # If we have read everything from the response stream, + # return the connection back to the pool. + if ( + isinstance(self._response.body, IOBase) + and self._response.body.closed + ): + self.release_conn() diff --git a/frogpilot/third_party/urllib3/contrib/pyopenssl.py b/frogpilot/third_party/urllib3/contrib/pyopenssl.py new file mode 100644 index 000000000..3714500ec --- /dev/null +++ b/frogpilot/third_party/urllib3/contrib/pyopenssl.py @@ -0,0 +1,564 @@ +""" +Module for using pyOpenSSL as a TLS backend. This module was relevant before +the standard library ``ssl`` module supported SNI, but now that we've dropped +support for Python 2.7 all relevant Python versions support SNI so +**this module is no longer recommended**. + +This needs the following packages installed: + +* `pyOpenSSL`_ (tested with 16.0.0) +* `cryptography`_ (minimum 1.3.4, from pyopenssl) +* `idna`_ (minimum 2.0) + +However, pyOpenSSL depends on cryptography, so while we use all three directly here we +end up having relatively few packages required. + +You can install them with the following command: + +.. code-block:: bash + + $ python -m pip install pyopenssl cryptography idna + +To activate certificate checking, call +:func:`~urllib3.contrib.pyopenssl.inject_into_urllib3` from your Python code +before you begin making HTTP requests. This can be done in a ``sitecustomize`` +module, or at any other time before your application begins using ``urllib3``, +like this: + +.. code-block:: python + + try: + import urllib3.contrib.pyopenssl + urllib3.contrib.pyopenssl.inject_into_urllib3() + except ImportError: + pass + +.. _pyopenssl: https://www.pyopenssl.org +.. _cryptography: https://cryptography.io +.. _idna: https://github.com/kjd/idna +""" + +from __future__ import annotations + +import OpenSSL.SSL # type: ignore[import-untyped] +from cryptography import x509 + +try: + from cryptography.x509 import UnsupportedExtension # type: ignore[attr-defined] +except ImportError: + # UnsupportedExtension is gone in cryptography >= 2.1.0 + class UnsupportedExtension(Exception): # type: ignore[no-redef] + pass + + +import logging +import ssl +import typing +from io import BytesIO +from socket import socket as socket_cls +from socket import timeout + +from .. import util + +if typing.TYPE_CHECKING: + from OpenSSL.crypto import X509 # type: ignore[import-untyped] + + +__all__ = ["inject_into_urllib3", "extract_from_urllib3"] + +# Map from urllib3 to PyOpenSSL compatible parameter-values. +_openssl_versions: dict[int, int] = { + util.ssl_.PROTOCOL_TLS: OpenSSL.SSL.SSLv23_METHOD, # type: ignore[attr-defined] + util.ssl_.PROTOCOL_TLS_CLIENT: OpenSSL.SSL.SSLv23_METHOD, # type: ignore[attr-defined] + ssl.PROTOCOL_TLSv1: OpenSSL.SSL.TLSv1_METHOD, +} + +if hasattr(ssl, "PROTOCOL_TLSv1_1") and hasattr(OpenSSL.SSL, "TLSv1_1_METHOD"): + _openssl_versions[ssl.PROTOCOL_TLSv1_1] = OpenSSL.SSL.TLSv1_1_METHOD + +if hasattr(ssl, "PROTOCOL_TLSv1_2") and hasattr(OpenSSL.SSL, "TLSv1_2_METHOD"): + _openssl_versions[ssl.PROTOCOL_TLSv1_2] = OpenSSL.SSL.TLSv1_2_METHOD + + +_stdlib_to_openssl_verify = { + ssl.CERT_NONE: OpenSSL.SSL.VERIFY_NONE, + ssl.CERT_OPTIONAL: OpenSSL.SSL.VERIFY_PEER, + ssl.CERT_REQUIRED: OpenSSL.SSL.VERIFY_PEER + + OpenSSL.SSL.VERIFY_FAIL_IF_NO_PEER_CERT, +} +_openssl_to_stdlib_verify = {v: k for k, v in _stdlib_to_openssl_verify.items()} + +# The SSLvX values are the most likely to be missing in the future +# but we check them all just to be sure. +_OP_NO_SSLv2_OR_SSLv3: int = getattr(OpenSSL.SSL, "OP_NO_SSLv2", 0) | getattr( + OpenSSL.SSL, "OP_NO_SSLv3", 0 +) +_OP_NO_TLSv1: int = getattr(OpenSSL.SSL, "OP_NO_TLSv1", 0) +_OP_NO_TLSv1_1: int = getattr(OpenSSL.SSL, "OP_NO_TLSv1_1", 0) +_OP_NO_TLSv1_2: int = getattr(OpenSSL.SSL, "OP_NO_TLSv1_2", 0) +_OP_NO_TLSv1_3: int = getattr(OpenSSL.SSL, "OP_NO_TLSv1_3", 0) + +_openssl_to_ssl_minimum_version: dict[int, int] = { + ssl.TLSVersion.MINIMUM_SUPPORTED: _OP_NO_SSLv2_OR_SSLv3, + ssl.TLSVersion.TLSv1: _OP_NO_SSLv2_OR_SSLv3, + ssl.TLSVersion.TLSv1_1: _OP_NO_SSLv2_OR_SSLv3 | _OP_NO_TLSv1, + ssl.TLSVersion.TLSv1_2: _OP_NO_SSLv2_OR_SSLv3 | _OP_NO_TLSv1 | _OP_NO_TLSv1_1, + ssl.TLSVersion.TLSv1_3: ( + _OP_NO_SSLv2_OR_SSLv3 | _OP_NO_TLSv1 | _OP_NO_TLSv1_1 | _OP_NO_TLSv1_2 + ), + ssl.TLSVersion.MAXIMUM_SUPPORTED: ( + _OP_NO_SSLv2_OR_SSLv3 | _OP_NO_TLSv1 | _OP_NO_TLSv1_1 | _OP_NO_TLSv1_2 + ), +} +_openssl_to_ssl_maximum_version: dict[int, int] = { + ssl.TLSVersion.MINIMUM_SUPPORTED: ( + _OP_NO_SSLv2_OR_SSLv3 + | _OP_NO_TLSv1 + | _OP_NO_TLSv1_1 + | _OP_NO_TLSv1_2 + | _OP_NO_TLSv1_3 + ), + ssl.TLSVersion.TLSv1: ( + _OP_NO_SSLv2_OR_SSLv3 | _OP_NO_TLSv1_1 | _OP_NO_TLSv1_2 | _OP_NO_TLSv1_3 + ), + ssl.TLSVersion.TLSv1_1: _OP_NO_SSLv2_OR_SSLv3 | _OP_NO_TLSv1_2 | _OP_NO_TLSv1_3, + ssl.TLSVersion.TLSv1_2: _OP_NO_SSLv2_OR_SSLv3 | _OP_NO_TLSv1_3, + ssl.TLSVersion.TLSv1_3: _OP_NO_SSLv2_OR_SSLv3, + ssl.TLSVersion.MAXIMUM_SUPPORTED: _OP_NO_SSLv2_OR_SSLv3, +} + +# OpenSSL will only write 16K at a time +SSL_WRITE_BLOCKSIZE = 16384 + +orig_util_SSLContext = util.ssl_.SSLContext + + +log = logging.getLogger(__name__) + + +def inject_into_urllib3() -> None: + "Monkey-patch urllib3 with PyOpenSSL-backed SSL-support." + + _validate_dependencies_met() + + util.SSLContext = PyOpenSSLContext # type: ignore[assignment] + util.ssl_.SSLContext = PyOpenSSLContext # type: ignore[assignment] + util.IS_PYOPENSSL = True + util.ssl_.IS_PYOPENSSL = True + + +def extract_from_urllib3() -> None: + "Undo monkey-patching by :func:`inject_into_urllib3`." + + util.SSLContext = orig_util_SSLContext + util.ssl_.SSLContext = orig_util_SSLContext + util.IS_PYOPENSSL = False + util.ssl_.IS_PYOPENSSL = False + + +def _validate_dependencies_met() -> None: + """ + Verifies that PyOpenSSL's package-level dependencies have been met. + Throws `ImportError` if they are not met. + """ + # Method added in `cryptography==1.1`; not available in older versions + from cryptography.x509.extensions import Extensions + + if getattr(Extensions, "get_extension_for_class", None) is None: + raise ImportError( + "'cryptography' module missing required functionality. " + "Try upgrading to v1.3.4 or newer." + ) + + # pyOpenSSL 0.14 and above use cryptography for OpenSSL bindings. The _x509 + # attribute is only present on those versions. + from OpenSSL.crypto import X509 + + x509 = X509() + if getattr(x509, "_x509", None) is None: + raise ImportError( + "'pyOpenSSL' module missing required functionality. " + "Try upgrading to v0.14 or newer." + ) + + +def _dnsname_to_stdlib(name: str) -> str | None: + """ + Converts a dNSName SubjectAlternativeName field to the form used by the + standard library on the given Python version. + + Cryptography produces a dNSName as a unicode string that was idna-decoded + from ASCII bytes. We need to idna-encode that string to get it back, and + then on Python 3 we also need to convert to unicode via UTF-8 (the stdlib + uses PyUnicode_FromStringAndSize on it, which decodes via UTF-8). + + If the name cannot be idna-encoded then we return None signalling that + the name given should be skipped. + """ + + def idna_encode(name: str) -> bytes | None: + """ + Borrowed wholesale from the Python Cryptography Project. It turns out + that we can't just safely call `idna.encode`: it can explode for + wildcard names. This avoids that problem. + """ + import idna + + try: + for prefix in ["*.", "."]: + if name.startswith(prefix): + name = name[len(prefix) :] + return prefix.encode("ascii") + idna.encode(name) + return idna.encode(name) + except idna.core.IDNAError: + return None + + # Don't send IPv6 addresses through the IDNA encoder. + if ":" in name: + return name + + encoded_name = idna_encode(name) + if encoded_name is None: + return None + return encoded_name.decode("utf-8") + + +def get_subj_alt_name(peer_cert: X509) -> list[tuple[str, str]]: + """ + Given an PyOpenSSL certificate, provides all the subject alternative names. + """ + cert = peer_cert.to_cryptography() + + # We want to find the SAN extension. Ask Cryptography to locate it (it's + # faster than looping in Python) + try: + ext = cert.extensions.get_extension_for_class(x509.SubjectAlternativeName).value + except x509.ExtensionNotFound: + # No such extension, return the empty list. + return [] + except ( + x509.DuplicateExtension, + UnsupportedExtension, + x509.UnsupportedGeneralNameType, + UnicodeError, + ) as e: + # A problem has been found with the quality of the certificate. Assume + # no SAN field is present. + log.warning( + "A problem was encountered with the certificate that prevented " + "urllib3 from finding the SubjectAlternativeName field. This can " + "affect certificate validation. The error was %s", + e, + ) + return [] + + # We want to return dNSName and iPAddress fields. We need to cast the IPs + # back to strings because the match_hostname function wants them as + # strings. + # Sadly the DNS names need to be idna encoded and then, on Python 3, UTF-8 + # decoded. This is pretty frustrating, but that's what the standard library + # does with certificates, and so we need to attempt to do the same. + # We also want to skip over names which cannot be idna encoded. + names = [ + ("DNS", name) + for name in map(_dnsname_to_stdlib, ext.get_values_for_type(x509.DNSName)) + if name is not None + ] + names.extend( + ("IP Address", str(name)) for name in ext.get_values_for_type(x509.IPAddress) + ) + + return names + + +class WrappedSocket: + """API-compatibility wrapper for Python OpenSSL's Connection-class.""" + + def __init__( + self, + connection: OpenSSL.SSL.Connection, + socket: socket_cls, + suppress_ragged_eofs: bool = True, + ) -> None: + self.connection = connection + self.socket = socket + self.suppress_ragged_eofs = suppress_ragged_eofs + self._io_refs = 0 + self._closed = False + + def fileno(self) -> int: + return self.socket.fileno() + + # Copy-pasted from Python 3.5 source code + def _decref_socketios(self) -> None: + if self._io_refs > 0: + self._io_refs -= 1 + if self._closed: + self.close() + + def recv(self, *args: typing.Any, **kwargs: typing.Any) -> bytes: + try: + data = self.connection.recv(*args, **kwargs) + except OpenSSL.SSL.SysCallError as e: + if self.suppress_ragged_eofs and e.args == (-1, "Unexpected EOF"): + return b"" + else: + raise OSError(e.args[0], str(e)) from e + except OpenSSL.SSL.ZeroReturnError: + if self.connection.get_shutdown() == OpenSSL.SSL.RECEIVED_SHUTDOWN: + return b"" + else: + raise + except OpenSSL.SSL.WantReadError as e: + if not util.wait_for_read(self.socket, self.socket.gettimeout()): + raise timeout("The read operation timed out") from e + else: + return self.recv(*args, **kwargs) + + # TLS 1.3 post-handshake authentication + except OpenSSL.SSL.Error as e: + raise ssl.SSLError(f"read error: {e!r}") from e + else: + return data # type: ignore[no-any-return] + + def recv_into(self, *args: typing.Any, **kwargs: typing.Any) -> int: + try: + return self.connection.recv_into(*args, **kwargs) # type: ignore[no-any-return] + except OpenSSL.SSL.SysCallError as e: + if self.suppress_ragged_eofs and e.args == (-1, "Unexpected EOF"): + return 0 + else: + raise OSError(e.args[0], str(e)) from e + except OpenSSL.SSL.ZeroReturnError: + if self.connection.get_shutdown() == OpenSSL.SSL.RECEIVED_SHUTDOWN: + return 0 + else: + raise + except OpenSSL.SSL.WantReadError as e: + if not util.wait_for_read(self.socket, self.socket.gettimeout()): + raise timeout("The read operation timed out") from e + else: + return self.recv_into(*args, **kwargs) + + # TLS 1.3 post-handshake authentication + except OpenSSL.SSL.Error as e: + raise ssl.SSLError(f"read error: {e!r}") from e + + def settimeout(self, timeout: float) -> None: + return self.socket.settimeout(timeout) + + def _send_until_done(self, data: bytes) -> int: + while True: + try: + return self.connection.send(data) # type: ignore[no-any-return] + except OpenSSL.SSL.WantWriteError as e: + if not util.wait_for_write(self.socket, self.socket.gettimeout()): + raise timeout() from e + continue + except OpenSSL.SSL.SysCallError as e: + raise OSError(e.args[0], str(e)) from e + + def sendall(self, data: bytes) -> None: + total_sent = 0 + while total_sent < len(data): + sent = self._send_until_done( + data[total_sent : total_sent + SSL_WRITE_BLOCKSIZE] + ) + total_sent += sent + + def shutdown(self, how: int) -> None: + try: + self.connection.shutdown() + except OpenSSL.SSL.Error as e: + raise ssl.SSLError(f"shutdown error: {e!r}") from e + + def close(self) -> None: + self._closed = True + if self._io_refs <= 0: + self._real_close() + + def _real_close(self) -> None: + try: + return self.connection.close() # type: ignore[no-any-return] + except OpenSSL.SSL.Error: + return + + def getpeercert( + self, binary_form: bool = False + ) -> dict[str, list[typing.Any]] | None: + x509 = self.connection.get_peer_certificate() + + if not x509: + return x509 # type: ignore[no-any-return] + + if binary_form: + return OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_ASN1, x509) # type: ignore[no-any-return] + + return { + "subject": ((("commonName", x509.get_subject().CN),),), # type: ignore[dict-item] + "subjectAltName": get_subj_alt_name(x509), + } + + def version(self) -> str: + return self.connection.get_protocol_version_name() # type: ignore[no-any-return] + + def selected_alpn_protocol(self) -> str | None: + alpn_proto = self.connection.get_alpn_proto_negotiated() + return alpn_proto.decode() if alpn_proto else None + + +WrappedSocket.makefile = socket_cls.makefile # type: ignore[attr-defined] + + +class PyOpenSSLContext: + """ + I am a wrapper class for the PyOpenSSL ``Context`` object. I am responsible + for translating the interface of the standard library ``SSLContext`` object + to calls into PyOpenSSL. + """ + + def __init__(self, protocol: int) -> None: + self.protocol = _openssl_versions[protocol] + self._ctx = OpenSSL.SSL.Context(self.protocol) + self._options = 0 + self.check_hostname = False + self._minimum_version: int = ssl.TLSVersion.MINIMUM_SUPPORTED + self._maximum_version: int = ssl.TLSVersion.MAXIMUM_SUPPORTED + self._verify_flags: int = ssl.VERIFY_X509_TRUSTED_FIRST + + @property + def options(self) -> int: + return self._options + + @options.setter + def options(self, value: int) -> None: + self._options = value + self._set_ctx_options() + + @property + def verify_flags(self) -> int: + return self._verify_flags + + @verify_flags.setter + def verify_flags(self, value: int) -> None: + self._verify_flags = value + self._ctx.get_cert_store().set_flags(self._verify_flags) + + @property + def verify_mode(self) -> int: + return _openssl_to_stdlib_verify[self._ctx.get_verify_mode()] + + @verify_mode.setter + def verify_mode(self, value: ssl.VerifyMode) -> None: + self._ctx.set_verify(_stdlib_to_openssl_verify[value], _verify_callback) + + def set_default_verify_paths(self) -> None: + self._ctx.set_default_verify_paths() + + def set_ciphers(self, ciphers: bytes | str) -> None: + if isinstance(ciphers, str): + ciphers = ciphers.encode("utf-8") + self._ctx.set_cipher_list(ciphers) + + def load_verify_locations( + self, + cafile: str | None = None, + capath: str | None = None, + cadata: bytes | None = None, + ) -> None: + if cafile is not None: + cafile = cafile.encode("utf-8") # type: ignore[assignment] + if capath is not None: + capath = capath.encode("utf-8") # type: ignore[assignment] + try: + self._ctx.load_verify_locations(cafile, capath) + if cadata is not None: + self._ctx.load_verify_locations(BytesIO(cadata)) + except OpenSSL.SSL.Error as e: + raise ssl.SSLError(f"unable to load trusted certificates: {e!r}") from e + + def load_cert_chain( + self, + certfile: str, + keyfile: str | None = None, + password: str | None = None, + ) -> None: + try: + self._ctx.use_certificate_chain_file(certfile) + if password is not None: + if not isinstance(password, bytes): + password = password.encode("utf-8") # type: ignore[assignment] + self._ctx.set_passwd_cb(lambda *_: password) + self._ctx.use_privatekey_file(keyfile or certfile) + except OpenSSL.SSL.Error as e: + raise ssl.SSLError(f"Unable to load certificate chain: {e!r}") from e + + def set_alpn_protocols(self, protocols: list[bytes | str]) -> None: + protocols = [util.util.to_bytes(p, "ascii") for p in protocols] + return self._ctx.set_alpn_protos(protocols) # type: ignore[no-any-return] + + def wrap_socket( + self, + sock: socket_cls, + server_side: bool = False, + do_handshake_on_connect: bool = True, + suppress_ragged_eofs: bool = True, + server_hostname: bytes | str | None = None, + ) -> WrappedSocket: + cnx = OpenSSL.SSL.Connection(self._ctx, sock) + + # If server_hostname is an IP, don't use it for SNI, per RFC6066 Section 3 + if server_hostname and not util.ssl_.is_ipaddress(server_hostname): + if isinstance(server_hostname, str): + server_hostname = server_hostname.encode("utf-8") + cnx.set_tlsext_host_name(server_hostname) + + cnx.set_connect_state() + + while True: + try: + cnx.do_handshake() + except OpenSSL.SSL.WantReadError as e: + if not util.wait_for_read(sock, sock.gettimeout()): + raise timeout("select timed out") from e + continue + except OpenSSL.SSL.Error as e: + raise ssl.SSLError(f"bad handshake: {e!r}") from e + break + + return WrappedSocket(cnx, sock) + + def _set_ctx_options(self) -> None: + self._ctx.set_options( + self._options + | _openssl_to_ssl_minimum_version[self._minimum_version] + | _openssl_to_ssl_maximum_version[self._maximum_version] + ) + + @property + def minimum_version(self) -> int: + return self._minimum_version + + @minimum_version.setter + def minimum_version(self, minimum_version: int) -> None: + self._minimum_version = minimum_version + self._set_ctx_options() + + @property + def maximum_version(self) -> int: + return self._maximum_version + + @maximum_version.setter + def maximum_version(self, maximum_version: int) -> None: + self._maximum_version = maximum_version + self._set_ctx_options() + + +def _verify_callback( + cnx: OpenSSL.SSL.Connection, + x509: X509, + err_no: int, + err_depth: int, + return_code: int, +) -> bool: + return err_no == 0 diff --git a/frogpilot/third_party/urllib3/contrib/socks.py b/frogpilot/third_party/urllib3/contrib/socks.py new file mode 100644 index 000000000..c62b5e033 --- /dev/null +++ b/frogpilot/third_party/urllib3/contrib/socks.py @@ -0,0 +1,228 @@ +""" +This module contains provisional support for SOCKS proxies from within +urllib3. This module supports SOCKS4, SOCKS4A (an extension of SOCKS4), and +SOCKS5. To enable its functionality, either install PySocks or install this +module with the ``socks`` extra. + +The SOCKS implementation supports the full range of urllib3 features. It also +supports the following SOCKS features: + +- SOCKS4A (``proxy_url='socks4a://...``) +- SOCKS4 (``proxy_url='socks4://...``) +- SOCKS5 with remote DNS (``proxy_url='socks5h://...``) +- SOCKS5 with local DNS (``proxy_url='socks5://...``) +- Usernames and passwords for the SOCKS proxy + +.. note:: + It is recommended to use ``socks5h://`` or ``socks4a://`` schemes in + your ``proxy_url`` to ensure that DNS resolution is done from the remote + server instead of client-side when connecting to a domain name. + +SOCKS4 supports IPv4 and domain names with the SOCKS4A extension. SOCKS5 +supports IPv4, IPv6, and domain names. + +When connecting to a SOCKS4 proxy the ``username`` portion of the ``proxy_url`` +will be sent as the ``userid`` section of the SOCKS request: + +.. code-block:: python + + proxy_url="socks4a://@proxy-host" + +When connecting to a SOCKS5 proxy the ``username`` and ``password`` portion +of the ``proxy_url`` will be sent as the username/password to authenticate +with the proxy: + +.. code-block:: python + + proxy_url="socks5h://:@proxy-host" + +""" + +from __future__ import annotations + +try: + import socks # type: ignore[import-not-found] +except ImportError: + import warnings + + from ..exceptions import DependencyWarning + + warnings.warn( + ( + "SOCKS support in urllib3 requires the installation of optional " + "dependencies: specifically, PySocks. For more information, see " + "https://urllib3.readthedocs.io/en/latest/advanced-usage.html#socks-proxies" + ), + DependencyWarning, + ) + raise + +import typing +from socket import timeout as SocketTimeout + +from ..connection import HTTPConnection, HTTPSConnection +from ..connectionpool import HTTPConnectionPool, HTTPSConnectionPool +from ..exceptions import ConnectTimeoutError, NewConnectionError +from ..poolmanager import PoolManager +from ..util.url import parse_url + +try: + import ssl +except ImportError: + ssl = None # type: ignore[assignment] + + +class _TYPE_SOCKS_OPTIONS(typing.TypedDict): + socks_version: int + proxy_host: str | None + proxy_port: str | None + username: str | None + password: str | None + rdns: bool + + +class SOCKSConnection(HTTPConnection): + """ + A plain-text HTTP connection that connects via a SOCKS proxy. + """ + + def __init__( + self, + _socks_options: _TYPE_SOCKS_OPTIONS, + *args: typing.Any, + **kwargs: typing.Any, + ) -> None: + self._socks_options = _socks_options + super().__init__(*args, **kwargs) + + def _new_conn(self) -> socks.socksocket: + """ + Establish a new connection via the SOCKS proxy. + """ + extra_kw: dict[str, typing.Any] = {} + if self.source_address: + extra_kw["source_address"] = self.source_address + + if self.socket_options: + extra_kw["socket_options"] = self.socket_options + + try: + conn = socks.create_connection( + (self.host, self.port), + proxy_type=self._socks_options["socks_version"], + proxy_addr=self._socks_options["proxy_host"], + proxy_port=self._socks_options["proxy_port"], + proxy_username=self._socks_options["username"], + proxy_password=self._socks_options["password"], + proxy_rdns=self._socks_options["rdns"], + timeout=self.timeout, + **extra_kw, + ) + + except SocketTimeout as e: + raise ConnectTimeoutError( + self, + f"Connection to {self.host} timed out. (connect timeout={self.timeout})", + ) from e + + except socks.ProxyError as e: + # This is fragile as hell, but it seems to be the only way to raise + # useful errors here. + if e.socket_err: + error = e.socket_err + if isinstance(error, SocketTimeout): + raise ConnectTimeoutError( + self, + f"Connection to {self.host} timed out. (connect timeout={self.timeout})", + ) from e + else: + # Adding `from e` messes with coverage somehow, so it's omitted. + # See #2386. + raise NewConnectionError( + self, f"Failed to establish a new connection: {error}" + ) + else: + raise NewConnectionError( + self, f"Failed to establish a new connection: {e}" + ) from e + + except OSError as e: # Defensive: PySocks should catch all these. + raise NewConnectionError( + self, f"Failed to establish a new connection: {e}" + ) from e + + return conn + + +# We don't need to duplicate the Verified/Unverified distinction from +# urllib3/connection.py here because the HTTPSConnection will already have been +# correctly set to either the Verified or Unverified form by that module. This +# means the SOCKSHTTPSConnection will automatically be the correct type. +class SOCKSHTTPSConnection(SOCKSConnection, HTTPSConnection): + pass + + +class SOCKSHTTPConnectionPool(HTTPConnectionPool): + ConnectionCls = SOCKSConnection + + +class SOCKSHTTPSConnectionPool(HTTPSConnectionPool): + ConnectionCls = SOCKSHTTPSConnection + + +class SOCKSProxyManager(PoolManager): + """ + A version of the urllib3 ProxyManager that routes connections via the + defined SOCKS proxy. + """ + + pool_classes_by_scheme = { + "http": SOCKSHTTPConnectionPool, + "https": SOCKSHTTPSConnectionPool, + } + + def __init__( + self, + proxy_url: str, + username: str | None = None, + password: str | None = None, + num_pools: int = 10, + headers: typing.Mapping[str, str] | None = None, + **connection_pool_kw: typing.Any, + ): + parsed = parse_url(proxy_url) + + if username is None and password is None and parsed.auth is not None: + split = parsed.auth.split(":") + if len(split) == 2: + username, password = split + if parsed.scheme == "socks5": + socks_version = socks.PROXY_TYPE_SOCKS5 + rdns = False + elif parsed.scheme == "socks5h": + socks_version = socks.PROXY_TYPE_SOCKS5 + rdns = True + elif parsed.scheme == "socks4": + socks_version = socks.PROXY_TYPE_SOCKS4 + rdns = False + elif parsed.scheme == "socks4a": + socks_version = socks.PROXY_TYPE_SOCKS4 + rdns = True + else: + raise ValueError(f"Unable to determine SOCKS version from {proxy_url}") + + self.proxy_url = proxy_url + + socks_options = { + "socks_version": socks_version, + "proxy_host": parsed.host, + "proxy_port": parsed.port, + "username": username, + "password": password, + "rdns": rdns, + } + connection_pool_kw["_socks_options"] = socks_options + + super().__init__(num_pools, headers, **connection_pool_kw) + + self.pool_classes_by_scheme = SOCKSProxyManager.pool_classes_by_scheme diff --git a/frogpilot/third_party/urllib3/exceptions.py b/frogpilot/third_party/urllib3/exceptions.py new file mode 100644 index 000000000..a0de9d6cc --- /dev/null +++ b/frogpilot/third_party/urllib3/exceptions.py @@ -0,0 +1,335 @@ +from __future__ import annotations + +import socket +import typing +import warnings +from email.errors import MessageDefect +from http.client import IncompleteRead as httplib_IncompleteRead + +if typing.TYPE_CHECKING: + from .connection import HTTPConnection + from .connectionpool import ConnectionPool + from .response import HTTPResponse + from .util.retry import Retry + +# Base Exceptions + + +class HTTPError(Exception): + """Base exception used by this module.""" + + +class HTTPWarning(Warning): + """Base warning used by this module.""" + + +_TYPE_REDUCE_RESULT = tuple[typing.Callable[..., object], tuple[object, ...]] + + +class PoolError(HTTPError): + """Base exception for errors caused within a pool.""" + + def __init__(self, pool: ConnectionPool, message: str) -> None: + self.pool = pool + self._message = message + super().__init__(f"{pool}: {message}") + + def __reduce__(self) -> _TYPE_REDUCE_RESULT: + # For pickling purposes. + return self.__class__, (None, self._message) + + +class RequestError(PoolError): + """Base exception for PoolErrors that have associated URLs.""" + + def __init__(self, pool: ConnectionPool, url: str, message: str) -> None: + self.url = url + super().__init__(pool, message) + + def __reduce__(self) -> _TYPE_REDUCE_RESULT: + # For pickling purposes. + return self.__class__, (None, self.url, self._message) + + +class SSLError(HTTPError): + """Raised when SSL certificate fails in an HTTPS connection.""" + + +class ProxyError(HTTPError): + """Raised when the connection to a proxy fails.""" + + # The original error is also available as __cause__. + original_error: Exception + + def __init__(self, message: str, error: Exception) -> None: + super().__init__(message, error) + self.original_error = error + + +class DecodeError(HTTPError): + """Raised when automatic decoding based on Content-Type fails.""" + + +class ProtocolError(HTTPError): + """Raised when something unexpected happens mid-request/response.""" + + +#: Renamed to ProtocolError but aliased for backwards compatibility. +ConnectionError = ProtocolError + + +# Leaf Exceptions + + +class MaxRetryError(RequestError): + """Raised when the maximum number of retries is exceeded. + + :param pool: The connection pool + :type pool: :class:`~urllib3.connectionpool.HTTPConnectionPool` + :param str url: The requested Url + :param reason: The underlying error + :type reason: :class:`Exception` + + """ + + def __init__( + self, pool: ConnectionPool, url: str, reason: Exception | None = None + ) -> None: + self.reason = reason + + message = f"Max retries exceeded with url: {url} (Caused by {reason!r})" + + super().__init__(pool, url, message) + + def __reduce__(self) -> _TYPE_REDUCE_RESULT: + # For pickling purposes. + return self.__class__, (None, self.url, self.reason) + + +class HostChangedError(RequestError): + """Raised when an existing pool gets a request for a foreign host.""" + + def __init__( + self, pool: ConnectionPool, url: str, retries: Retry | int = 3 + ) -> None: + message = f"Tried to open a foreign host with url: {url}" + super().__init__(pool, url, message) + self.retries = retries + + +class TimeoutStateError(HTTPError): + """Raised when passing an invalid state to a timeout""" + + +class TimeoutError(HTTPError): + """Raised when a socket timeout error occurs. + + Catching this error will catch both :exc:`ReadTimeoutErrors + ` and :exc:`ConnectTimeoutErrors `. + """ + + +class ReadTimeoutError(TimeoutError, RequestError): + """Raised when a socket timeout occurs while receiving data from a server""" + + +# This timeout error does not have a URL attached and needs to inherit from the +# base HTTPError +class ConnectTimeoutError(TimeoutError): + """Raised when a socket timeout occurs while connecting to a server""" + + +class NewConnectionError(ConnectTimeoutError, HTTPError): + """Raised when we fail to establish a new connection. Usually ECONNREFUSED.""" + + def __init__(self, conn: HTTPConnection, message: str) -> None: + self.conn = conn + self._message = message + super().__init__(f"{conn}: {message}") + + def __reduce__(self) -> _TYPE_REDUCE_RESULT: + # For pickling purposes. + return self.__class__, (None, self._message) + + @property + def pool(self) -> HTTPConnection: + warnings.warn( + "The 'pool' property is deprecated and will be removed " + "in urllib3 v2.1.0. Use 'conn' instead.", + DeprecationWarning, + stacklevel=2, + ) + + return self.conn + + +class NameResolutionError(NewConnectionError): + """Raised when host name resolution fails.""" + + def __init__(self, host: str, conn: HTTPConnection, reason: socket.gaierror): + message = f"Failed to resolve '{host}' ({reason})" + self._host = host + self._reason = reason + super().__init__(conn, message) + + def __reduce__(self) -> _TYPE_REDUCE_RESULT: + # For pickling purposes. + return self.__class__, (self._host, None, self._reason) + + +class EmptyPoolError(PoolError): + """Raised when a pool runs out of connections and no more are allowed.""" + + +class FullPoolError(PoolError): + """Raised when we try to add a connection to a full pool in blocking mode.""" + + +class ClosedPoolError(PoolError): + """Raised when a request enters a pool after the pool has been closed.""" + + +class LocationValueError(ValueError, HTTPError): + """Raised when there is something wrong with a given URL input.""" + + +class LocationParseError(LocationValueError): + """Raised when get_host or similar fails to parse the URL input.""" + + def __init__(self, location: str) -> None: + message = f"Failed to parse: {location}" + super().__init__(message) + + self.location = location + + +class URLSchemeUnknown(LocationValueError): + """Raised when a URL input has an unsupported scheme.""" + + def __init__(self, scheme: str): + message = f"Not supported URL scheme {scheme}" + super().__init__(message) + + self.scheme = scheme + + +class ResponseError(HTTPError): + """Used as a container for an error reason supplied in a MaxRetryError.""" + + GENERIC_ERROR = "too many error responses" + SPECIFIC_ERROR = "too many {status_code} error responses" + + +class SecurityWarning(HTTPWarning): + """Warned when performing security reducing actions""" + + +class InsecureRequestWarning(SecurityWarning): + """Warned when making an unverified HTTPS request.""" + + +class NotOpenSSLWarning(SecurityWarning): + """Warned when using unsupported SSL library""" + + +class SystemTimeWarning(SecurityWarning): + """Warned when system time is suspected to be wrong""" + + +class InsecurePlatformWarning(SecurityWarning): + """Warned when certain TLS/SSL configuration is not available on a platform.""" + + +class DependencyWarning(HTTPWarning): + """ + Warned when an attempt is made to import a module with missing optional + dependencies. + """ + + +class ResponseNotChunked(ProtocolError, ValueError): + """Response needs to be chunked in order to read it as chunks.""" + + +class BodyNotHttplibCompatible(HTTPError): + """ + Body should be :class:`http.client.HTTPResponse` like + (have an fp attribute which returns raw chunks) for read_chunked(). + """ + + +class IncompleteRead(HTTPError, httplib_IncompleteRead): + """ + Response length doesn't match expected Content-Length + + Subclass of :class:`http.client.IncompleteRead` to allow int value + for ``partial`` to avoid creating large objects on streamed reads. + """ + + partial: int # type: ignore[assignment] + expected: int + + def __init__(self, partial: int, expected: int) -> None: + self.partial = partial + self.expected = expected + + def __repr__(self) -> str: + return "IncompleteRead(%i bytes read, %i more expected)" % ( + self.partial, + self.expected, + ) + + +class InvalidChunkLength(HTTPError, httplib_IncompleteRead): + """Invalid chunk length in a chunked response.""" + + def __init__(self, response: HTTPResponse, length: bytes) -> None: + self.partial: int = response.tell() # type: ignore[assignment] + self.expected: int | None = response.length_remaining + self.response = response + self.length = length + + def __repr__(self) -> str: + return "InvalidChunkLength(got length %r, %i bytes read)" % ( + self.length, + self.partial, + ) + + +class InvalidHeader(HTTPError): + """The header provided was somehow invalid.""" + + +class ProxySchemeUnknown(AssertionError, URLSchemeUnknown): + """ProxyManager does not support the supplied scheme""" + + # TODO(t-8ch): Stop inheriting from AssertionError in v2.0. + + def __init__(self, scheme: str | None) -> None: + # 'localhost' is here because our URL parser parses + # localhost:8080 -> scheme=localhost, remove if we fix this. + if scheme == "localhost": + scheme = None + if scheme is None: + message = "Proxy URL had no scheme, should start with http:// or https://" + else: + message = f"Proxy URL had unsupported scheme {scheme}, should use http:// or https://" + super().__init__(message) + + +class ProxySchemeUnsupported(ValueError): + """Fetching HTTPS resources through HTTPS proxies is unsupported""" + + +class HeaderParsingError(HTTPError): + """Raised by assert_header_parsing, but we convert it to a log.warning statement.""" + + def __init__( + self, defects: list[MessageDefect], unparsed_data: bytes | str | None + ) -> None: + message = f"{defects or 'Unknown'}, unparsed data: {unparsed_data!r}" + super().__init__(message) + + +class UnrewindableBodyError(HTTPError): + """urllib3 encountered an error when trying to rewind a body""" diff --git a/frogpilot/third_party/urllib3/fields.py b/frogpilot/third_party/urllib3/fields.py new file mode 100644 index 000000000..97c4730cf --- /dev/null +++ b/frogpilot/third_party/urllib3/fields.py @@ -0,0 +1,341 @@ +from __future__ import annotations + +import email.utils +import mimetypes +import typing + +_TYPE_FIELD_VALUE = typing.Union[str, bytes] +_TYPE_FIELD_VALUE_TUPLE = typing.Union[ + _TYPE_FIELD_VALUE, + tuple[str, _TYPE_FIELD_VALUE], + tuple[str, _TYPE_FIELD_VALUE, str], +] + + +def guess_content_type( + filename: str | None, default: str = "application/octet-stream" +) -> str: + """ + Guess the "Content-Type" of a file. + + :param filename: + The filename to guess the "Content-Type" of using :mod:`mimetypes`. + :param default: + If no "Content-Type" can be guessed, default to `default`. + """ + if filename: + return mimetypes.guess_type(filename)[0] or default + return default + + +def format_header_param_rfc2231(name: str, value: _TYPE_FIELD_VALUE) -> str: + """ + Helper function to format and quote a single header parameter using the + strategy defined in RFC 2231. + + Particularly useful for header parameters which might contain + non-ASCII values, like file names. This follows + `RFC 2388 Section 4.4 `_. + + :param name: + The name of the parameter, a string expected to be ASCII only. + :param value: + The value of the parameter, provided as ``bytes`` or `str``. + :returns: + An RFC-2231-formatted unicode string. + + .. deprecated:: 2.0.0 + Will be removed in urllib3 v2.1.0. This is not valid for + ``multipart/form-data`` header parameters. + """ + import warnings + + warnings.warn( + "'format_header_param_rfc2231' is deprecated and will be " + "removed in urllib3 v2.1.0. This is not valid for " + "multipart/form-data header parameters.", + DeprecationWarning, + stacklevel=2, + ) + + if isinstance(value, bytes): + value = value.decode("utf-8") + + if not any(ch in value for ch in '"\\\r\n'): + result = f'{name}="{value}"' + try: + result.encode("ascii") + except (UnicodeEncodeError, UnicodeDecodeError): + pass + else: + return result + + value = email.utils.encode_rfc2231(value, "utf-8") + value = f"{name}*={value}" + + return value + + +def format_multipart_header_param(name: str, value: _TYPE_FIELD_VALUE) -> str: + """ + Format and quote a single multipart header parameter. + + This follows the `WHATWG HTML Standard`_ as of 2021/06/10, matching + the behavior of current browser and curl versions. Values are + assumed to be UTF-8. The ``\\n``, ``\\r``, and ``"`` characters are + percent encoded. + + .. _WHATWG HTML Standard: + https://html.spec.whatwg.org/multipage/ + form-control-infrastructure.html#multipart-form-data + + :param name: + The name of the parameter, an ASCII-only ``str``. + :param value: + The value of the parameter, a ``str`` or UTF-8 encoded + ``bytes``. + :returns: + A string ``name="value"`` with the escaped value. + + .. versionchanged:: 2.0.0 + Matches the WHATWG HTML Standard as of 2021/06/10. Control + characters are no longer percent encoded. + + .. versionchanged:: 2.0.0 + Renamed from ``format_header_param_html5`` and + ``format_header_param``. The old names will be removed in + urllib3 v2.1.0. + """ + if isinstance(value, bytes): + value = value.decode("utf-8") + + # percent encode \n \r " + value = value.translate({10: "%0A", 13: "%0D", 34: "%22"}) + return f'{name}="{value}"' + + +def format_header_param_html5(name: str, value: _TYPE_FIELD_VALUE) -> str: + """ + .. deprecated:: 2.0.0 + Renamed to :func:`format_multipart_header_param`. Will be + removed in urllib3 v2.1.0. + """ + import warnings + + warnings.warn( + "'format_header_param_html5' has been renamed to " + "'format_multipart_header_param'. The old name will be " + "removed in urllib3 v2.1.0.", + DeprecationWarning, + stacklevel=2, + ) + return format_multipart_header_param(name, value) + + +def format_header_param(name: str, value: _TYPE_FIELD_VALUE) -> str: + """ + .. deprecated:: 2.0.0 + Renamed to :func:`format_multipart_header_param`. Will be + removed in urllib3 v2.1.0. + """ + import warnings + + warnings.warn( + "'format_header_param' has been renamed to " + "'format_multipart_header_param'. The old name will be " + "removed in urllib3 v2.1.0.", + DeprecationWarning, + stacklevel=2, + ) + return format_multipart_header_param(name, value) + + +class RequestField: + """ + A data container for request body parameters. + + :param name: + The name of this request field. Must be unicode. + :param data: + The data/value body. + :param filename: + An optional filename of the request field. Must be unicode. + :param headers: + An optional dict-like object of headers to initially use for the field. + + .. versionchanged:: 2.0.0 + The ``header_formatter`` parameter is deprecated and will + be removed in urllib3 v2.1.0. + """ + + def __init__( + self, + name: str, + data: _TYPE_FIELD_VALUE, + filename: str | None = None, + headers: typing.Mapping[str, str] | None = None, + header_formatter: typing.Callable[[str, _TYPE_FIELD_VALUE], str] | None = None, + ): + self._name = name + self._filename = filename + self.data = data + self.headers: dict[str, str | None] = {} + if headers: + self.headers = dict(headers) + + if header_formatter is not None: + import warnings + + warnings.warn( + "The 'header_formatter' parameter is deprecated and " + "will be removed in urllib3 v2.1.0.", + DeprecationWarning, + stacklevel=2, + ) + self.header_formatter = header_formatter + else: + self.header_formatter = format_multipart_header_param + + @classmethod + def from_tuples( + cls, + fieldname: str, + value: _TYPE_FIELD_VALUE_TUPLE, + header_formatter: typing.Callable[[str, _TYPE_FIELD_VALUE], str] | None = None, + ) -> RequestField: + """ + A :class:`~urllib3.fields.RequestField` factory from old-style tuple parameters. + + Supports constructing :class:`~urllib3.fields.RequestField` from + parameter of key/value strings AND key/filetuple. A filetuple is a + (filename, data, MIME type) tuple where the MIME type is optional. + For example:: + + 'foo': 'bar', + 'fakefile': ('foofile.txt', 'contents of foofile'), + 'realfile': ('barfile.txt', open('realfile').read()), + 'typedfile': ('bazfile.bin', open('bazfile').read(), 'image/jpeg'), + 'nonamefile': 'contents of nonamefile field', + + Field names and filenames must be unicode. + """ + filename: str | None + content_type: str | None + data: _TYPE_FIELD_VALUE + + if isinstance(value, tuple): + if len(value) == 3: + filename, data, content_type = value + else: + filename, data = value + content_type = guess_content_type(filename) + else: + filename = None + content_type = None + data = value + + request_param = cls( + fieldname, data, filename=filename, header_formatter=header_formatter + ) + request_param.make_multipart(content_type=content_type) + + return request_param + + def _render_part(self, name: str, value: _TYPE_FIELD_VALUE) -> str: + """ + Override this method to change how each multipart header + parameter is formatted. By default, this calls + :func:`format_multipart_header_param`. + + :param name: + The name of the parameter, an ASCII-only ``str``. + :param value: + The value of the parameter, a ``str`` or UTF-8 encoded + ``bytes``. + + :meta public: + """ + return self.header_formatter(name, value) + + def _render_parts( + self, + header_parts: ( + dict[str, _TYPE_FIELD_VALUE | None] + | typing.Sequence[tuple[str, _TYPE_FIELD_VALUE | None]] + ), + ) -> str: + """ + Helper function to format and quote a single header. + + Useful for single headers that are composed of multiple items. E.g., + 'Content-Disposition' fields. + + :param header_parts: + A sequence of (k, v) tuples or a :class:`dict` of (k, v) to format + as `k1="v1"; k2="v2"; ...`. + """ + iterable: typing.Iterable[tuple[str, _TYPE_FIELD_VALUE | None]] + + parts = [] + if isinstance(header_parts, dict): + iterable = header_parts.items() + else: + iterable = header_parts + + for name, value in iterable: + if value is not None: + parts.append(self._render_part(name, value)) + + return "; ".join(parts) + + def render_headers(self) -> str: + """ + Renders the headers for this request field. + """ + lines = [] + + sort_keys = ["Content-Disposition", "Content-Type", "Content-Location"] + for sort_key in sort_keys: + if self.headers.get(sort_key, False): + lines.append(f"{sort_key}: {self.headers[sort_key]}") + + for header_name, header_value in self.headers.items(): + if header_name not in sort_keys: + if header_value: + lines.append(f"{header_name}: {header_value}") + + lines.append("\r\n") + return "\r\n".join(lines) + + def make_multipart( + self, + content_disposition: str | None = None, + content_type: str | None = None, + content_location: str | None = None, + ) -> None: + """ + Makes this request field into a multipart request field. + + This method overrides "Content-Disposition", "Content-Type" and + "Content-Location" headers to the request parameter. + + :param content_disposition: + The 'Content-Disposition' of the request body. Defaults to 'form-data' + :param content_type: + The 'Content-Type' of the request body. + :param content_location: + The 'Content-Location' of the request body. + + """ + content_disposition = (content_disposition or "form-data") + "; ".join( + [ + "", + self._render_parts( + (("name", self._name), ("filename", self._filename)) + ), + ] + ) + + self.headers["Content-Disposition"] = content_disposition + self.headers["Content-Type"] = content_type + self.headers["Content-Location"] = content_location diff --git a/frogpilot/third_party/urllib3/filepost.py b/frogpilot/third_party/urllib3/filepost.py new file mode 100644 index 000000000..14f70b05b --- /dev/null +++ b/frogpilot/third_party/urllib3/filepost.py @@ -0,0 +1,89 @@ +from __future__ import annotations + +import binascii +import codecs +import os +import typing +from io import BytesIO + +from .fields import _TYPE_FIELD_VALUE_TUPLE, RequestField + +writer = codecs.lookup("utf-8")[3] + +_TYPE_FIELDS_SEQUENCE = typing.Sequence[ + typing.Union[tuple[str, _TYPE_FIELD_VALUE_TUPLE], RequestField] +] +_TYPE_FIELDS = typing.Union[ + _TYPE_FIELDS_SEQUENCE, + typing.Mapping[str, _TYPE_FIELD_VALUE_TUPLE], +] + + +def choose_boundary() -> str: + """ + Our embarrassingly-simple replacement for mimetools.choose_boundary. + """ + return binascii.hexlify(os.urandom(16)).decode() + + +def iter_field_objects(fields: _TYPE_FIELDS) -> typing.Iterable[RequestField]: + """ + Iterate over fields. + + Supports list of (k, v) tuples and dicts, and lists of + :class:`~urllib3.fields.RequestField`. + + """ + iterable: typing.Iterable[RequestField | tuple[str, _TYPE_FIELD_VALUE_TUPLE]] + + if isinstance(fields, typing.Mapping): + iterable = fields.items() + else: + iterable = fields + + for field in iterable: + if isinstance(field, RequestField): + yield field + else: + yield RequestField.from_tuples(*field) + + +def encode_multipart_formdata( + fields: _TYPE_FIELDS, boundary: str | None = None +) -> tuple[bytes, str]: + """ + Encode a dictionary of ``fields`` using the multipart/form-data MIME format. + + :param fields: + Dictionary of fields or list of (key, :class:`~urllib3.fields.RequestField`). + Values are processed by :func:`urllib3.fields.RequestField.from_tuples`. + + :param boundary: + If not specified, then a random boundary will be generated using + :func:`urllib3.filepost.choose_boundary`. + """ + body = BytesIO() + if boundary is None: + boundary = choose_boundary() + + for field in iter_field_objects(fields): + body.write(f"--{boundary}\r\n".encode("latin-1")) + + writer(body).write(field.render_headers()) + data = field.data + + if isinstance(data, int): + data = str(data) # Backwards compatibility + + if isinstance(data, str): + writer(body).write(data) + else: + body.write(data) + + body.write(b"\r\n") + + body.write(f"--{boundary}--\r\n".encode("latin-1")) + + content_type = f"multipart/form-data; boundary={boundary}" + + return body.getvalue(), content_type diff --git a/frogpilot/third_party/urllib3/http2/__init__.py b/frogpilot/third_party/urllib3/http2/__init__.py new file mode 100644 index 000000000..133e1d8f2 --- /dev/null +++ b/frogpilot/third_party/urllib3/http2/__init__.py @@ -0,0 +1,53 @@ +from __future__ import annotations + +from importlib.metadata import version + +__all__ = [ + "inject_into_urllib3", + "extract_from_urllib3", +] + +import typing + +orig_HTTPSConnection: typing.Any = None + + +def inject_into_urllib3() -> None: + # First check if h2 version is valid + h2_version = version("h2") + if not h2_version.startswith("4."): + raise ImportError( + "urllib3 v2 supports h2 version 4.x.x, currently " + f"the 'h2' module is compiled with {h2_version!r}. " + "See: https://github.com/urllib3/urllib3/issues/3290" + ) + + # Import here to avoid circular dependencies. + from .. import connection as urllib3_connection + from .. import util as urllib3_util + from ..connectionpool import HTTPSConnectionPool + from ..util import ssl_ as urllib3_util_ssl + from .connection import HTTP2Connection + + global orig_HTTPSConnection + orig_HTTPSConnection = urllib3_connection.HTTPSConnection + + HTTPSConnectionPool.ConnectionCls = HTTP2Connection + urllib3_connection.HTTPSConnection = HTTP2Connection # type: ignore[misc] + + # TODO: Offer 'http/1.1' as well, but for testing purposes this is handy. + urllib3_util.ALPN_PROTOCOLS = ["h2"] + urllib3_util_ssl.ALPN_PROTOCOLS = ["h2"] + + +def extract_from_urllib3() -> None: + from .. import connection as urllib3_connection + from .. import util as urllib3_util + from ..connectionpool import HTTPSConnectionPool + from ..util import ssl_ as urllib3_util_ssl + + HTTPSConnectionPool.ConnectionCls = orig_HTTPSConnection + urllib3_connection.HTTPSConnection = orig_HTTPSConnection # type: ignore[misc] + + urllib3_util.ALPN_PROTOCOLS = ["http/1.1"] + urllib3_util_ssl.ALPN_PROTOCOLS = ["http/1.1"] diff --git a/frogpilot/third_party/urllib3/http2/connection.py b/frogpilot/third_party/urllib3/http2/connection.py new file mode 100644 index 000000000..d0822391f --- /dev/null +++ b/frogpilot/third_party/urllib3/http2/connection.py @@ -0,0 +1,356 @@ +from __future__ import annotations + +import logging +import re +import threading +import types +import typing + +import h2.config # type: ignore[import-untyped] +import h2.connection # type: ignore[import-untyped] +import h2.events # type: ignore[import-untyped] + +from .._base_connection import _TYPE_BODY +from .._collections import HTTPHeaderDict +from ..connection import HTTPSConnection, _get_default_user_agent +from ..exceptions import ConnectionError +from ..response import BaseHTTPResponse + +orig_HTTPSConnection = HTTPSConnection + +T = typing.TypeVar("T") + +log = logging.getLogger(__name__) + +RE_IS_LEGAL_HEADER_NAME = re.compile(rb"^[!#$%&'*+\-.^_`|~0-9a-z]+$") +RE_IS_ILLEGAL_HEADER_VALUE = re.compile(rb"[\0\x00\x0a\x0d\r\n]|^[ \r\n\t]|[ \r\n\t]$") + + +def _is_legal_header_name(name: bytes) -> bool: + """ + "An implementation that validates fields according to the definitions in Sections + 5.1 and 5.5 of [HTTP] only needs an additional check that field names do not + include uppercase characters." (https://httpwg.org/specs/rfc9113.html#n-field-validity) + + `http.client._is_legal_header_name` does not validate the field name according to the + HTTP 1.1 spec, so we do that here, in addition to checking for uppercase characters. + + This does not allow for the `:` character in the header name, so should not + be used to validate pseudo-headers. + """ + return bool(RE_IS_LEGAL_HEADER_NAME.match(name)) + + +def _is_illegal_header_value(value: bytes) -> bool: + """ + "A field value MUST NOT contain the zero value (ASCII NUL, 0x00), line feed + (ASCII LF, 0x0a), or carriage return (ASCII CR, 0x0d) at any position. A field + value MUST NOT start or end with an ASCII whitespace character (ASCII SP or HTAB, + 0x20 or 0x09)." (https://httpwg.org/specs/rfc9113.html#n-field-validity) + """ + return bool(RE_IS_ILLEGAL_HEADER_VALUE.search(value)) + + +class _LockedObject(typing.Generic[T]): + """ + A wrapper class that hides a specific object behind a lock. + The goal here is to provide a simple way to protect access to an object + that cannot safely be simultaneously accessed from multiple threads. The + intended use of this class is simple: take hold of it with a context + manager, which returns the protected object. + """ + + __slots__ = ( + "lock", + "_obj", + ) + + def __init__(self, obj: T): + self.lock = threading.RLock() + self._obj = obj + + def __enter__(self) -> T: + self.lock.acquire() + return self._obj + + def __exit__( + self, + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: types.TracebackType | None, + ) -> None: + self.lock.release() + + +class HTTP2Connection(HTTPSConnection): + def __init__( + self, host: str, port: int | None = None, **kwargs: typing.Any + ) -> None: + self._h2_conn = self._new_h2_conn() + self._h2_stream: int | None = None + self._headers: list[tuple[bytes, bytes]] = [] + + if "proxy" in kwargs or "proxy_config" in kwargs: # Defensive: + raise NotImplementedError("Proxies aren't supported with HTTP/2") + + super().__init__(host, port, **kwargs) + + if self._tunnel_host is not None: + raise NotImplementedError("Tunneling isn't supported with HTTP/2") + + def _new_h2_conn(self) -> _LockedObject[h2.connection.H2Connection]: + config = h2.config.H2Configuration(client_side=True) + return _LockedObject(h2.connection.H2Connection(config=config)) + + def connect(self) -> None: + super().connect() + with self._h2_conn as conn: + conn.initiate_connection() + if data_to_send := conn.data_to_send(): + self.sock.sendall(data_to_send) + + def putrequest( # type: ignore[override] + self, + method: str, + url: str, + **kwargs: typing.Any, + ) -> None: + """putrequest + This deviates from the HTTPConnection method signature since we never need to override + sending accept-encoding headers or the host header. + """ + if "skip_host" in kwargs: + raise NotImplementedError("`skip_host` isn't supported") + if "skip_accept_encoding" in kwargs: + raise NotImplementedError("`skip_accept_encoding` isn't supported") + + self._request_url = url or "/" + self._validate_path(url) # type: ignore[attr-defined] + + if ":" in self.host: + authority = f"[{self.host}]:{self.port or 443}" + else: + authority = f"{self.host}:{self.port or 443}" + + self._headers.append((b":scheme", b"https")) + self._headers.append((b":method", method.encode())) + self._headers.append((b":authority", authority.encode())) + self._headers.append((b":path", url.encode())) + + with self._h2_conn as conn: + self._h2_stream = conn.get_next_available_stream_id() + + def putheader(self, header: str | bytes, *values: str | bytes) -> None: # type: ignore[override] + # TODO SKIPPABLE_HEADERS from urllib3 are ignored. + header = header.encode() if isinstance(header, str) else header + header = header.lower() # A lot of upstream code uses capitalized headers. + if not _is_legal_header_name(header): + raise ValueError(f"Illegal header name {str(header)}") + + for value in values: + value = value.encode() if isinstance(value, str) else value + if _is_illegal_header_value(value): + raise ValueError(f"Illegal header value {str(value)}") + self._headers.append((header, value)) + + def endheaders(self, message_body: typing.Any = None) -> None: # type: ignore[override] + if self._h2_stream is None: + raise ConnectionError("Must call `putrequest` first.") + + with self._h2_conn as conn: + conn.send_headers( + stream_id=self._h2_stream, + headers=self._headers, + end_stream=(message_body is None), + ) + if data_to_send := conn.data_to_send(): + self.sock.sendall(data_to_send) + self._headers = [] # Reset headers for the next request. + + def send(self, data: typing.Any) -> None: + """Send data to the server. + `data` can be: `str`, `bytes`, an iterable, or file-like objects + that support a .read() method. + """ + if self._h2_stream is None: + raise ConnectionError("Must call `putrequest` first.") + + with self._h2_conn as conn: + if data_to_send := conn.data_to_send(): + self.sock.sendall(data_to_send) + + if hasattr(data, "read"): # file-like objects + while True: + chunk = data.read(self.blocksize) + if not chunk: + break + if isinstance(chunk, str): + chunk = chunk.encode() # pragma: no cover + conn.send_data(self._h2_stream, chunk, end_stream=False) + if data_to_send := conn.data_to_send(): + self.sock.sendall(data_to_send) + conn.end_stream(self._h2_stream) + return + + if isinstance(data, str): # str -> bytes + data = data.encode() + + try: + if isinstance(data, bytes): + conn.send_data(self._h2_stream, data, end_stream=True) + if data_to_send := conn.data_to_send(): + self.sock.sendall(data_to_send) + else: + for chunk in data: + conn.send_data(self._h2_stream, chunk, end_stream=False) + if data_to_send := conn.data_to_send(): + self.sock.sendall(data_to_send) + conn.end_stream(self._h2_stream) + except TypeError: + raise TypeError( + "`data` should be str, bytes, iterable, or file. got %r" + % type(data) + ) + + def set_tunnel( + self, + host: str, + port: int | None = None, + headers: typing.Mapping[str, str] | None = None, + scheme: str = "http", + ) -> None: + raise NotImplementedError( + "HTTP/2 does not support setting up a tunnel through a proxy" + ) + + def getresponse( # type: ignore[override] + self, + ) -> HTTP2Response: + status = None + data = bytearray() + with self._h2_conn as conn: + end_stream = False + while not end_stream: + # TODO: Arbitrary read value. + if received_data := self.sock.recv(65535): + events = conn.receive_data(received_data) + for event in events: + if isinstance(event, h2.events.ResponseReceived): + headers = HTTPHeaderDict() + for header, value in event.headers: + if header == b":status": + status = int(value.decode()) + else: + headers.add( + header.decode("ascii"), value.decode("ascii") + ) + + elif isinstance(event, h2.events.DataReceived): + data += event.data + conn.acknowledge_received_data( + event.flow_controlled_length, event.stream_id + ) + + elif isinstance(event, h2.events.StreamEnded): + end_stream = True + + if data_to_send := conn.data_to_send(): + self.sock.sendall(data_to_send) + + assert status is not None + return HTTP2Response( + status=status, + headers=headers, + request_url=self._request_url, + data=bytes(data), + ) + + def request( # type: ignore[override] + self, + method: str, + url: str, + body: _TYPE_BODY | None = None, + headers: typing.Mapping[str, str] | None = None, + *, + preload_content: bool = True, + decode_content: bool = True, + enforce_content_length: bool = True, + **kwargs: typing.Any, + ) -> None: + """Send an HTTP/2 request""" + if "chunked" in kwargs: + # TODO this is often present from upstream. + # raise NotImplementedError("`chunked` isn't supported with HTTP/2") + pass + + if self.sock is not None: + self.sock.settimeout(self.timeout) + + self.putrequest(method, url) + + headers = headers or {} + for k, v in headers.items(): + if k.lower() == "transfer-encoding" and v == "chunked": + continue + else: + self.putheader(k, v) + + if b"user-agent" not in dict(self._headers): + self.putheader(b"user-agent", _get_default_user_agent()) + + if body: + self.endheaders(message_body=body) + self.send(body) + else: + self.endheaders() + + def close(self) -> None: + with self._h2_conn as conn: + try: + conn.close_connection() + if data := conn.data_to_send(): + self.sock.sendall(data) + except Exception: + pass + + # Reset all our HTTP/2 connection state. + self._h2_conn = self._new_h2_conn() + self._h2_stream = None + self._headers = [] + + super().close() + + +class HTTP2Response(BaseHTTPResponse): + # TODO: This is a woefully incomplete response object, but works for non-streaming. + def __init__( + self, + status: int, + headers: HTTPHeaderDict, + request_url: str, + data: bytes, + decode_content: bool = False, # TODO: support decoding + ) -> None: + super().__init__( + status=status, + headers=headers, + # Following CPython, we map HTTP versions to major * 10 + minor integers + version=20, + version_string="HTTP/2", + # No reason phrase in HTTP/2 + reason=None, + decode_content=decode_content, + request_url=request_url, + ) + self._data = data + self.length_remaining = 0 + + @property + def data(self) -> bytes: + return self._data + + def get_redirect_location(self) -> None: + return None + + def close(self) -> None: + pass diff --git a/frogpilot/third_party/urllib3/http2/probe.py b/frogpilot/third_party/urllib3/http2/probe.py new file mode 100644 index 000000000..9ea900764 --- /dev/null +++ b/frogpilot/third_party/urllib3/http2/probe.py @@ -0,0 +1,87 @@ +from __future__ import annotations + +import threading + + +class _HTTP2ProbeCache: + __slots__ = ( + "_lock", + "_cache_locks", + "_cache_values", + ) + + def __init__(self) -> None: + self._lock = threading.Lock() + self._cache_locks: dict[tuple[str, int], threading.RLock] = {} + self._cache_values: dict[tuple[str, int], bool | None] = {} + + def acquire_and_get(self, host: str, port: int) -> bool | None: + # By the end of this block we know that + # _cache_[values,locks] is available. + value = None + with self._lock: + key = (host, port) + try: + value = self._cache_values[key] + # If it's a known value we return right away. + if value is not None: + return value + except KeyError: + self._cache_locks[key] = threading.RLock() + self._cache_values[key] = None + + # If the value is unknown, we acquire the lock to signal + # to the requesting thread that the probe is in progress + # or that the current thread needs to return their findings. + key_lock = self._cache_locks[key] + key_lock.acquire() + try: + # If the by the time we get the lock the value has been + # updated we want to return the updated value. + value = self._cache_values[key] + + # In case an exception like KeyboardInterrupt is raised here. + except BaseException as e: # Defensive: + assert not isinstance(e, KeyError) # KeyError shouldn't be possible. + key_lock.release() + raise + + return value + + def set_and_release( + self, host: str, port: int, supports_http2: bool | None + ) -> None: + key = (host, port) + key_lock = self._cache_locks[key] + with key_lock: # Uses an RLock, so can be locked again from same thread. + if supports_http2 is None and self._cache_values[key] is not None: + raise ValueError( + "Cannot reset HTTP/2 support for origin after value has been set." + ) # Defensive: not expected in normal usage + + self._cache_values[key] = supports_http2 + key_lock.release() + + def _values(self) -> dict[tuple[str, int], bool | None]: + """This function is for testing purposes only. Gets the current state of the probe cache""" + with self._lock: + return {k: v for k, v in self._cache_values.items()} + + def _reset(self) -> None: + """This function is for testing purposes only. Reset the cache values""" + with self._lock: + self._cache_locks = {} + self._cache_values = {} + + +_HTTP2_PROBE_CACHE = _HTTP2ProbeCache() + +set_and_release = _HTTP2_PROBE_CACHE.set_and_release +acquire_and_get = _HTTP2_PROBE_CACHE.acquire_and_get +_values = _HTTP2_PROBE_CACHE._values +_reset = _HTTP2_PROBE_CACHE._reset + +__all__ = [ + "set_and_release", + "acquire_and_get", +] diff --git a/frogpilot/third_party/urllib3/poolmanager.py b/frogpilot/third_party/urllib3/poolmanager.py new file mode 100644 index 000000000..5763fea80 --- /dev/null +++ b/frogpilot/third_party/urllib3/poolmanager.py @@ -0,0 +1,653 @@ +from __future__ import annotations + +import functools +import logging +import typing +import warnings +from types import TracebackType +from urllib.parse import urljoin + +from ._collections import HTTPHeaderDict, RecentlyUsedContainer +from ._request_methods import RequestMethods +from .connection import ProxyConfig +from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool, port_by_scheme +from .exceptions import ( + LocationValueError, + MaxRetryError, + ProxySchemeUnknown, + URLSchemeUnknown, +) +from .response import BaseHTTPResponse +from .util.connection import _TYPE_SOCKET_OPTIONS +from .util.proxy import connection_requires_http_tunnel +from .util.retry import Retry +from .util.timeout import Timeout +from .util.url import Url, parse_url + +if typing.TYPE_CHECKING: + import ssl + + from typing_extensions import Self + +__all__ = ["PoolManager", "ProxyManager", "proxy_from_url"] + + +log = logging.getLogger(__name__) + +SSL_KEYWORDS = ( + "key_file", + "cert_file", + "cert_reqs", + "ca_certs", + "ca_cert_data", + "ssl_version", + "ssl_minimum_version", + "ssl_maximum_version", + "ca_cert_dir", + "ssl_context", + "key_password", + "server_hostname", +) +# Default value for `blocksize` - a new parameter introduced to +# http.client.HTTPConnection & http.client.HTTPSConnection in Python 3.7 +_DEFAULT_BLOCKSIZE = 16384 + + +class PoolKey(typing.NamedTuple): + """ + All known keyword arguments that could be provided to the pool manager, its + pools, or the underlying connections. + + All custom key schemes should include the fields in this key at a minimum. + """ + + key_scheme: str + key_host: str + key_port: int | None + key_timeout: Timeout | float | int | None + key_retries: Retry | bool | int | None + key_block: bool | None + key_source_address: tuple[str, int] | None + key_key_file: str | None + key_key_password: str | None + key_cert_file: str | None + key_cert_reqs: str | None + key_ca_certs: str | None + key_ca_cert_data: str | bytes | None + key_ssl_version: int | str | None + key_ssl_minimum_version: ssl.TLSVersion | None + key_ssl_maximum_version: ssl.TLSVersion | None + key_ca_cert_dir: str | None + key_ssl_context: ssl.SSLContext | None + key_maxsize: int | None + key_headers: frozenset[tuple[str, str]] | None + key__proxy: Url | None + key__proxy_headers: frozenset[tuple[str, str]] | None + key__proxy_config: ProxyConfig | None + key_socket_options: _TYPE_SOCKET_OPTIONS | None + key__socks_options: frozenset[tuple[str, str]] | None + key_assert_hostname: bool | str | None + key_assert_fingerprint: str | None + key_server_hostname: str | None + key_blocksize: int | None + + +def _default_key_normalizer( + key_class: type[PoolKey], request_context: dict[str, typing.Any] +) -> PoolKey: + """ + Create a pool key out of a request context dictionary. + + According to RFC 3986, both the scheme and host are case-insensitive. + Therefore, this function normalizes both before constructing the pool + key for an HTTPS request. If you wish to change this behaviour, provide + alternate callables to ``key_fn_by_scheme``. + + :param key_class: + The class to use when constructing the key. This should be a namedtuple + with the ``scheme`` and ``host`` keys at a minimum. + :type key_class: namedtuple + :param request_context: + A dictionary-like object that contain the context for a request. + :type request_context: dict + + :return: A namedtuple that can be used as a connection pool key. + :rtype: PoolKey + """ + # Since we mutate the dictionary, make a copy first + context = request_context.copy() + context["scheme"] = context["scheme"].lower() + context["host"] = context["host"].lower() + + # These are both dictionaries and need to be transformed into frozensets + for key in ("headers", "_proxy_headers", "_socks_options"): + if key in context and context[key] is not None: + context[key] = frozenset(context[key].items()) + + # The socket_options key may be a list and needs to be transformed into a + # tuple. + socket_opts = context.get("socket_options") + if socket_opts is not None: + context["socket_options"] = tuple(socket_opts) + + # Map the kwargs to the names in the namedtuple - this is necessary since + # namedtuples can't have fields starting with '_'. + for key in list(context.keys()): + context["key_" + key] = context.pop(key) + + # Default to ``None`` for keys missing from the context + for field in key_class._fields: + if field not in context: + context[field] = None + + # Default key_blocksize to _DEFAULT_BLOCKSIZE if missing from the context + if context.get("key_blocksize") is None: + context["key_blocksize"] = _DEFAULT_BLOCKSIZE + + return key_class(**context) + + +#: A dictionary that maps a scheme to a callable that creates a pool key. +#: This can be used to alter the way pool keys are constructed, if desired. +#: Each PoolManager makes a copy of this dictionary so they can be configured +#: globally here, or individually on the instance. +key_fn_by_scheme = { + "http": functools.partial(_default_key_normalizer, PoolKey), + "https": functools.partial(_default_key_normalizer, PoolKey), +} + +pool_classes_by_scheme = {"http": HTTPConnectionPool, "https": HTTPSConnectionPool} + + +class PoolManager(RequestMethods): + """ + Allows for arbitrary requests while transparently keeping track of + necessary connection pools for you. + + :param num_pools: + Number of connection pools to cache before discarding the least + recently used pool. + + :param headers: + Headers to include with all requests, unless other headers are given + explicitly. + + :param \\**connection_pool_kw: + Additional parameters are used to create fresh + :class:`urllib3.connectionpool.ConnectionPool` instances. + + Example: + + .. code-block:: python + + import urllib3 + + http = urllib3.PoolManager(num_pools=2) + + resp1 = http.request("GET", "https://google.com/") + resp2 = http.request("GET", "https://google.com/mail") + resp3 = http.request("GET", "https://yahoo.com/") + + print(len(http.pools)) + # 2 + + """ + + proxy: Url | None = None + proxy_config: ProxyConfig | None = None + + def __init__( + self, + num_pools: int = 10, + headers: typing.Mapping[str, str] | None = None, + **connection_pool_kw: typing.Any, + ) -> None: + super().__init__(headers) + if "retries" in connection_pool_kw: + retries = connection_pool_kw["retries"] + if not isinstance(retries, Retry): + # When Retry is initialized, raise_on_redirect is based + # on a redirect boolean value. + # But requests made via a pool manager always set + # redirect to False, and raise_on_redirect always ends + # up being False consequently. + # Here we fix the issue by setting raise_on_redirect to + # a value needed by the pool manager without considering + # the redirect boolean. + raise_on_redirect = retries is not False + retries = Retry.from_int(retries, redirect=False) + retries.raise_on_redirect = raise_on_redirect + connection_pool_kw = connection_pool_kw.copy() + connection_pool_kw["retries"] = retries + self.connection_pool_kw = connection_pool_kw + + self.pools: RecentlyUsedContainer[PoolKey, HTTPConnectionPool] + self.pools = RecentlyUsedContainer(num_pools) + + # Locally set the pool classes and keys so other PoolManagers can + # override them. + self.pool_classes_by_scheme = pool_classes_by_scheme + self.key_fn_by_scheme = key_fn_by_scheme.copy() + + def __enter__(self) -> Self: + return self + + def __exit__( + self, + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None, + ) -> typing.Literal[False]: + self.clear() + # Return False to re-raise any potential exceptions + return False + + def _new_pool( + self, + scheme: str, + host: str, + port: int, + request_context: dict[str, typing.Any] | None = None, + ) -> HTTPConnectionPool: + """ + Create a new :class:`urllib3.connectionpool.ConnectionPool` based on host, port, scheme, and + any additional pool keyword arguments. + + If ``request_context`` is provided, it is provided as keyword arguments + to the pool class used. This method is used to actually create the + connection pools handed out by :meth:`connection_from_url` and + companion methods. It is intended to be overridden for customization. + """ + pool_cls: type[HTTPConnectionPool] = self.pool_classes_by_scheme[scheme] + if request_context is None: + request_context = self.connection_pool_kw.copy() + + # Default blocksize to _DEFAULT_BLOCKSIZE if missing or explicitly + # set to 'None' in the request_context. + if request_context.get("blocksize") is None: + request_context["blocksize"] = _DEFAULT_BLOCKSIZE + + # Although the context has everything necessary to create the pool, + # this function has historically only used the scheme, host, and port + # in the positional args. When an API change is acceptable these can + # be removed. + for key in ("scheme", "host", "port"): + request_context.pop(key, None) + + if scheme == "http": + for kw in SSL_KEYWORDS: + request_context.pop(kw, None) + + return pool_cls(host, port, **request_context) + + def clear(self) -> None: + """ + Empty our store of pools and direct them all to close. + + This will not affect in-flight connections, but they will not be + re-used after completion. + """ + self.pools.clear() + + def connection_from_host( + self, + host: str | None, + port: int | None = None, + scheme: str | None = "http", + pool_kwargs: dict[str, typing.Any] | None = None, + ) -> HTTPConnectionPool: + """ + Get a :class:`urllib3.connectionpool.ConnectionPool` based on the host, port, and scheme. + + If ``port`` isn't given, it will be derived from the ``scheme`` using + ``urllib3.connectionpool.port_by_scheme``. If ``pool_kwargs`` is + provided, it is merged with the instance's ``connection_pool_kw`` + variable and used to create the new connection pool, if one is + needed. + """ + + if not host: + raise LocationValueError("No host specified.") + + request_context = self._merge_pool_kwargs(pool_kwargs) + request_context["scheme"] = scheme or "http" + if not port: + port = port_by_scheme.get(request_context["scheme"].lower(), 80) + request_context["port"] = port + request_context["host"] = host + + return self.connection_from_context(request_context) + + def connection_from_context( + self, request_context: dict[str, typing.Any] + ) -> HTTPConnectionPool: + """ + Get a :class:`urllib3.connectionpool.ConnectionPool` based on the request context. + + ``request_context`` must at least contain the ``scheme`` key and its + value must be a key in ``key_fn_by_scheme`` instance variable. + """ + if "strict" in request_context: + warnings.warn( + "The 'strict' parameter is no longer needed on Python 3+. " + "This will raise an error in urllib3 v2.1.0.", + DeprecationWarning, + ) + request_context.pop("strict") + + scheme = request_context["scheme"].lower() + pool_key_constructor = self.key_fn_by_scheme.get(scheme) + if not pool_key_constructor: + raise URLSchemeUnknown(scheme) + pool_key = pool_key_constructor(request_context) + + return self.connection_from_pool_key(pool_key, request_context=request_context) + + def connection_from_pool_key( + self, pool_key: PoolKey, request_context: dict[str, typing.Any] + ) -> HTTPConnectionPool: + """ + Get a :class:`urllib3.connectionpool.ConnectionPool` based on the provided pool key. + + ``pool_key`` should be a namedtuple that only contains immutable + objects. At a minimum it must have the ``scheme``, ``host``, and + ``port`` fields. + """ + with self.pools.lock: + # If the scheme, host, or port doesn't match existing open + # connections, open a new ConnectionPool. + pool = self.pools.get(pool_key) + if pool: + return pool + + # Make a fresh ConnectionPool of the desired type + scheme = request_context["scheme"] + host = request_context["host"] + port = request_context["port"] + pool = self._new_pool(scheme, host, port, request_context=request_context) + self.pools[pool_key] = pool + + return pool + + def connection_from_url( + self, url: str, pool_kwargs: dict[str, typing.Any] | None = None + ) -> HTTPConnectionPool: + """ + Similar to :func:`urllib3.connectionpool.connection_from_url`. + + If ``pool_kwargs`` is not provided and a new pool needs to be + constructed, ``self.connection_pool_kw`` is used to initialize + the :class:`urllib3.connectionpool.ConnectionPool`. If ``pool_kwargs`` + is provided, it is used instead. Note that if a new pool does not + need to be created for the request, the provided ``pool_kwargs`` are + not used. + """ + u = parse_url(url) + return self.connection_from_host( + u.host, port=u.port, scheme=u.scheme, pool_kwargs=pool_kwargs + ) + + def _merge_pool_kwargs( + self, override: dict[str, typing.Any] | None + ) -> dict[str, typing.Any]: + """ + Merge a dictionary of override values for self.connection_pool_kw. + + This does not modify self.connection_pool_kw and returns a new dict. + Any keys in the override dictionary with a value of ``None`` are + removed from the merged dictionary. + """ + base_pool_kwargs = self.connection_pool_kw.copy() + if override: + for key, value in override.items(): + if value is None: + try: + del base_pool_kwargs[key] + except KeyError: + pass + else: + base_pool_kwargs[key] = value + return base_pool_kwargs + + def _proxy_requires_url_absolute_form(self, parsed_url: Url) -> bool: + """ + Indicates if the proxy requires the complete destination URL in the + request. Normally this is only needed when not using an HTTP CONNECT + tunnel. + """ + if self.proxy is None: + return False + + return not connection_requires_http_tunnel( + self.proxy, self.proxy_config, parsed_url.scheme + ) + + def urlopen( # type: ignore[override] + self, method: str, url: str, redirect: bool = True, **kw: typing.Any + ) -> BaseHTTPResponse: + """ + Same as :meth:`urllib3.HTTPConnectionPool.urlopen` + with custom cross-host redirect logic and only sends the request-uri + portion of the ``url``. + + The given ``url`` parameter must be absolute, such that an appropriate + :class:`urllib3.connectionpool.ConnectionPool` can be chosen for it. + """ + u = parse_url(url) + + if u.scheme is None: + warnings.warn( + "URLs without a scheme (ie 'https://') are deprecated and will raise an error " + "in a future version of urllib3. To avoid this DeprecationWarning ensure all URLs " + "start with 'https://' or 'http://'. Read more in this issue: " + "https://github.com/urllib3/urllib3/issues/2920", + category=DeprecationWarning, + stacklevel=2, + ) + + conn = self.connection_from_host(u.host, port=u.port, scheme=u.scheme) + + kw["assert_same_host"] = False + kw["redirect"] = False + + if "headers" not in kw: + kw["headers"] = self.headers + + if self._proxy_requires_url_absolute_form(u): + response = conn.urlopen(method, url, **kw) + else: + response = conn.urlopen(method, u.request_uri, **kw) + + redirect_location = redirect and response.get_redirect_location() + if not redirect_location: + return response + + # Support relative URLs for redirecting. + redirect_location = urljoin(url, redirect_location) + + if response.status == 303: + # Change the method according to RFC 9110, Section 15.4.4. + method = "GET" + # And lose the body not to transfer anything sensitive. + kw["body"] = None + kw["headers"] = HTTPHeaderDict(kw["headers"])._prepare_for_method_change() + + retries = kw.get("retries", response.retries) + if not isinstance(retries, Retry): + retries = Retry.from_int(retries, redirect=redirect) + + # Strip headers marked as unsafe to forward to the redirected location. + # Check remove_headers_on_redirect to avoid a potential network call within + # conn.is_same_host() which may use socket.gethostbyname() in the future. + if retries.remove_headers_on_redirect and not conn.is_same_host( + redirect_location + ): + new_headers = kw["headers"].copy() + for header in kw["headers"]: + if header.lower() in retries.remove_headers_on_redirect: + new_headers.pop(header, None) + kw["headers"] = new_headers + + try: + retries = retries.increment(method, url, response=response, _pool=conn) + except MaxRetryError: + if retries.raise_on_redirect: + response.drain_conn() + raise + return response + + kw["retries"] = retries + kw["redirect"] = redirect + + log.info("Redirecting %s -> %s", url, redirect_location) + + response.drain_conn() + return self.urlopen(method, redirect_location, **kw) + + +class ProxyManager(PoolManager): + """ + Behaves just like :class:`PoolManager`, but sends all requests through + the defined proxy, using the CONNECT method for HTTPS URLs. + + :param proxy_url: + The URL of the proxy to be used. + + :param proxy_headers: + A dictionary containing headers that will be sent to the proxy. In case + of HTTP they are being sent with each request, while in the + HTTPS/CONNECT case they are sent only once. Could be used for proxy + authentication. + + :param proxy_ssl_context: + The proxy SSL context is used to establish the TLS connection to the + proxy when using HTTPS proxies. + + :param use_forwarding_for_https: + (Defaults to False) If set to True will forward requests to the HTTPS + proxy to be made on behalf of the client instead of creating a TLS + tunnel via the CONNECT method. **Enabling this flag means that request + and response headers and content will be visible from the HTTPS proxy** + whereas tunneling keeps request and response headers and content + private. IP address, target hostname, SNI, and port are always visible + to an HTTPS proxy even when this flag is disabled. + + :param proxy_assert_hostname: + The hostname of the certificate to verify against. + + :param proxy_assert_fingerprint: + The fingerprint of the certificate to verify against. + + Example: + + .. code-block:: python + + import urllib3 + + proxy = urllib3.ProxyManager("https://localhost:3128/") + + resp1 = proxy.request("GET", "https://google.com/") + resp2 = proxy.request("GET", "https://httpbin.org/") + + print(len(proxy.pools)) + # 1 + + resp3 = proxy.request("GET", "https://httpbin.org/") + resp4 = proxy.request("GET", "https://twitter.com/") + + print(len(proxy.pools)) + # 3 + + """ + + def __init__( + self, + proxy_url: str, + num_pools: int = 10, + headers: typing.Mapping[str, str] | None = None, + proxy_headers: typing.Mapping[str, str] | None = None, + proxy_ssl_context: ssl.SSLContext | None = None, + use_forwarding_for_https: bool = False, + proxy_assert_hostname: None | str | typing.Literal[False] = None, + proxy_assert_fingerprint: str | None = None, + **connection_pool_kw: typing.Any, + ) -> None: + if isinstance(proxy_url, HTTPConnectionPool): + str_proxy_url = f"{proxy_url.scheme}://{proxy_url.host}:{proxy_url.port}" + else: + str_proxy_url = proxy_url + proxy = parse_url(str_proxy_url) + + if proxy.scheme not in ("http", "https"): + raise ProxySchemeUnknown(proxy.scheme) + + if not proxy.port: + port = port_by_scheme.get(proxy.scheme, 80) + proxy = proxy._replace(port=port) + + self.proxy = proxy + self.proxy_headers = proxy_headers or {} + self.proxy_ssl_context = proxy_ssl_context + self.proxy_config = ProxyConfig( + proxy_ssl_context, + use_forwarding_for_https, + proxy_assert_hostname, + proxy_assert_fingerprint, + ) + + connection_pool_kw["_proxy"] = self.proxy + connection_pool_kw["_proxy_headers"] = self.proxy_headers + connection_pool_kw["_proxy_config"] = self.proxy_config + + super().__init__(num_pools, headers, **connection_pool_kw) + + def connection_from_host( + self, + host: str | None, + port: int | None = None, + scheme: str | None = "http", + pool_kwargs: dict[str, typing.Any] | None = None, + ) -> HTTPConnectionPool: + if scheme == "https": + return super().connection_from_host( + host, port, scheme, pool_kwargs=pool_kwargs + ) + + return super().connection_from_host( + self.proxy.host, self.proxy.port, self.proxy.scheme, pool_kwargs=pool_kwargs # type: ignore[union-attr] + ) + + def _set_proxy_headers( + self, url: str, headers: typing.Mapping[str, str] | None = None + ) -> typing.Mapping[str, str]: + """ + Sets headers needed by proxies: specifically, the Accept and Host + headers. Only sets headers not provided by the user. + """ + headers_ = {"Accept": "*/*"} + + netloc = parse_url(url).netloc + if netloc: + headers_["Host"] = netloc + + if headers: + headers_.update(headers) + return headers_ + + def urlopen( # type: ignore[override] + self, method: str, url: str, redirect: bool = True, **kw: typing.Any + ) -> BaseHTTPResponse: + "Same as HTTP(S)ConnectionPool.urlopen, ``url`` must be absolute." + u = parse_url(url) + if not connection_requires_http_tunnel(self.proxy, self.proxy_config, u.scheme): + # For connections using HTTP CONNECT, httplib sets the necessary + # headers on the CONNECT to the proxy. If we're not using CONNECT, + # we'll definitely need to set 'Host' at the very least. + headers = kw.get("headers", self.headers) + kw["headers"] = self._set_proxy_headers(url, headers) + + return super().urlopen(method, url, redirect=redirect, **kw) + + +def proxy_from_url(url: str, **kw: typing.Any) -> ProxyManager: + return ProxyManager(proxy_url=url, **kw) diff --git a/frogpilot/third_party/urllib3/py.typed b/frogpilot/third_party/urllib3/py.typed new file mode 100644 index 000000000..5f3ea3d91 --- /dev/null +++ b/frogpilot/third_party/urllib3/py.typed @@ -0,0 +1,2 @@ +# Instruct type checkers to look for inline type annotations in this package. +# See PEP 561. diff --git a/frogpilot/third_party/urllib3/response.py b/frogpilot/third_party/urllib3/response.py new file mode 100644 index 000000000..5632dab3b --- /dev/null +++ b/frogpilot/third_party/urllib3/response.py @@ -0,0 +1,1307 @@ +from __future__ import annotations + +import collections +import io +import json as _json +import logging +import re +import socket +import sys +import typing +import warnings +import zlib +from contextlib import contextmanager +from http.client import HTTPMessage as _HttplibHTTPMessage +from http.client import HTTPResponse as _HttplibHTTPResponse +from socket import timeout as SocketTimeout + +if typing.TYPE_CHECKING: + from ._base_connection import BaseHTTPConnection + +try: + try: + import brotlicffi as brotli # type: ignore[import-not-found] + except ImportError: + import brotli # type: ignore[import-not-found] +except ImportError: + brotli = None + +from . import util +from ._base_connection import _TYPE_BODY +from ._collections import HTTPHeaderDict +from .connection import BaseSSLError, HTTPConnection, HTTPException +from .exceptions import ( + BodyNotHttplibCompatible, + DecodeError, + HTTPError, + IncompleteRead, + InvalidChunkLength, + InvalidHeader, + ProtocolError, + ReadTimeoutError, + ResponseNotChunked, + SSLError, +) +from .util.response import is_fp_closed, is_response_to_head +from .util.retry import Retry + +if typing.TYPE_CHECKING: + from .connectionpool import HTTPConnectionPool + +log = logging.getLogger(__name__) + + +class ContentDecoder: + def decompress(self, data: bytes) -> bytes: + raise NotImplementedError() + + def flush(self) -> bytes: + raise NotImplementedError() + + +class DeflateDecoder(ContentDecoder): + def __init__(self) -> None: + self._first_try = True + self._data = b"" + self._obj = zlib.decompressobj() + + def decompress(self, data: bytes) -> bytes: + if not data: + return data + + if not self._first_try: + return self._obj.decompress(data) + + self._data += data + try: + decompressed = self._obj.decompress(data) + if decompressed: + self._first_try = False + self._data = None # type: ignore[assignment] + return decompressed + except zlib.error: + self._first_try = False + self._obj = zlib.decompressobj(-zlib.MAX_WBITS) + try: + return self.decompress(self._data) + finally: + self._data = None # type: ignore[assignment] + + def flush(self) -> bytes: + return self._obj.flush() + + +class GzipDecoderState: + FIRST_MEMBER = 0 + OTHER_MEMBERS = 1 + SWALLOW_DATA = 2 + + +class GzipDecoder(ContentDecoder): + def __init__(self) -> None: + self._obj = zlib.decompressobj(16 + zlib.MAX_WBITS) + self._state = GzipDecoderState.FIRST_MEMBER + + def decompress(self, data: bytes) -> bytes: + ret = bytearray() + if self._state == GzipDecoderState.SWALLOW_DATA or not data: + return bytes(ret) + while True: + try: + ret += self._obj.decompress(data) + except zlib.error: + previous_state = self._state + # Ignore data after the first error + self._state = GzipDecoderState.SWALLOW_DATA + if previous_state == GzipDecoderState.OTHER_MEMBERS: + # Allow trailing garbage acceptable in other gzip clients + return bytes(ret) + raise + data = self._obj.unused_data + if not data: + return bytes(ret) + self._state = GzipDecoderState.OTHER_MEMBERS + self._obj = zlib.decompressobj(16 + zlib.MAX_WBITS) + + def flush(self) -> bytes: + return self._obj.flush() + + +if brotli is not None: + + class BrotliDecoder(ContentDecoder): + # Supports both 'brotlipy' and 'Brotli' packages + # since they share an import name. The top branches + # are for 'brotlipy' and bottom branches for 'Brotli' + def __init__(self) -> None: + self._obj = brotli.Decompressor() + if hasattr(self._obj, "decompress"): + setattr(self, "decompress", self._obj.decompress) + else: + setattr(self, "decompress", self._obj.process) + + def flush(self) -> bytes: + if hasattr(self._obj, "flush"): + return self._obj.flush() # type: ignore[no-any-return] + return b"" + + +try: + # Python 3.14+ + from compression import zstd # type: ignore[import-not-found] # noqa: F401 + + HAS_ZSTD = True + + class ZstdDecoder(ContentDecoder): + def __init__(self) -> None: + self._obj = zstd.ZstdDecompressor() + + def decompress(self, data: bytes) -> bytes: + if not data: + return b"" + data_parts = [self._obj.decompress(data)] + while self._obj.eof and self._obj.unused_data: + unused_data = self._obj.unused_data + self._obj = zstd.ZstdDecompressor() + data_parts.append(self._obj.decompress(unused_data)) + return b"".join(data_parts) + + def flush(self) -> bytes: + if not self._obj.eof: + raise DecodeError("Zstandard data is incomplete") + return b"" + +except ImportError: + try: + # Python 3.13 and earlier require the 'zstandard' module. + import zstandard as zstd + + # The package 'zstandard' added the 'eof' property starting + # in v0.18.0 which we require to ensure a complete and + # valid zstd stream was fed into the ZstdDecoder. + # See: https://github.com/urllib3/urllib3/pull/2624 + _zstd_version = tuple( + map(int, re.search(r"^([0-9]+)\.([0-9]+)", zstd.__version__).groups()) # type: ignore[union-attr] + ) + if _zstd_version < (0, 18): # Defensive: + raise ImportError("zstandard module doesn't have eof") + except (AttributeError, ImportError, ValueError): # Defensive: + HAS_ZSTD = False + else: + HAS_ZSTD = True + + class ZstdDecoder(ContentDecoder): # type: ignore[no-redef] + def __init__(self) -> None: + self._obj = zstd.ZstdDecompressor().decompressobj() + + def decompress(self, data: bytes) -> bytes: + if not data: + return b"" + data_parts = [self._obj.decompress(data)] + while self._obj.eof and self._obj.unused_data: + unused_data = self._obj.unused_data + self._obj = zstd.ZstdDecompressor().decompressobj() + data_parts.append(self._obj.decompress(unused_data)) + return b"".join(data_parts) + + def flush(self) -> bytes: + ret = self._obj.flush() # note: this is a no-op + if not self._obj.eof: + raise DecodeError("Zstandard data is incomplete") + return ret # type: ignore[no-any-return] + + +class MultiDecoder(ContentDecoder): + """ + From RFC7231: + If one or more encodings have been applied to a representation, the + sender that applied the encodings MUST generate a Content-Encoding + header field that lists the content codings in the order in which + they were applied. + """ + + def __init__(self, modes: str) -> None: + self._decoders = [_get_decoder(m.strip()) for m in modes.split(",")] + + def flush(self) -> bytes: + return self._decoders[0].flush() + + def decompress(self, data: bytes) -> bytes: + for d in reversed(self._decoders): + data = d.decompress(data) + return data + + +def _get_decoder(mode: str) -> ContentDecoder: + if "," in mode: + return MultiDecoder(mode) + + # According to RFC 9110 section 8.4.1.3, recipients should + # consider x-gzip equivalent to gzip + if mode in ("gzip", "x-gzip"): + return GzipDecoder() + + if brotli is not None and mode == "br": + return BrotliDecoder() + + if HAS_ZSTD and mode == "zstd": + return ZstdDecoder() + + return DeflateDecoder() + + +class BytesQueueBuffer: + """Memory-efficient bytes buffer + + To return decoded data in read() and still follow the BufferedIOBase API, we need a + buffer to always return the correct amount of bytes. + + This buffer should be filled using calls to put() + + Our maximum memory usage is determined by the sum of the size of: + + * self.buffer, which contains the full data + * the largest chunk that we will copy in get() + + The worst case scenario is a single chunk, in which case we'll make a full copy of + the data inside get(). + """ + + def __init__(self) -> None: + self.buffer: typing.Deque[bytes] = collections.deque() + self._size: int = 0 + + def __len__(self) -> int: + return self._size + + def put(self, data: bytes) -> None: + self.buffer.append(data) + self._size += len(data) + + def get(self, n: int) -> bytes: + if n == 0: + return b"" + elif not self.buffer: + raise RuntimeError("buffer is empty") + elif n < 0: + raise ValueError("n should be > 0") + + fetched = 0 + ret = io.BytesIO() + while fetched < n: + remaining = n - fetched + chunk = self.buffer.popleft() + chunk_length = len(chunk) + if remaining < chunk_length: + left_chunk, right_chunk = chunk[:remaining], chunk[remaining:] + ret.write(left_chunk) + self.buffer.appendleft(right_chunk) + self._size -= remaining + break + else: + ret.write(chunk) + self._size -= chunk_length + fetched += chunk_length + + if not self.buffer: + break + + return ret.getvalue() + + def get_all(self) -> bytes: + buffer = self.buffer + if not buffer: + assert self._size == 0 + return b"" + if len(buffer) == 1: + result = buffer.pop() + else: + ret = io.BytesIO() + ret.writelines(buffer.popleft() for _ in range(len(buffer))) + result = ret.getvalue() + self._size = 0 + return result + + +class BaseHTTPResponse(io.IOBase): + CONTENT_DECODERS = ["gzip", "x-gzip", "deflate"] + if brotli is not None: + CONTENT_DECODERS += ["br"] + if HAS_ZSTD: + CONTENT_DECODERS += ["zstd"] + REDIRECT_STATUSES = [301, 302, 303, 307, 308] + + DECODER_ERROR_CLASSES: tuple[type[Exception], ...] = (IOError, zlib.error) + if brotli is not None: + DECODER_ERROR_CLASSES += (brotli.error,) + + if HAS_ZSTD: + DECODER_ERROR_CLASSES += (zstd.ZstdError,) + + def __init__( + self, + *, + headers: typing.Mapping[str, str] | typing.Mapping[bytes, bytes] | None = None, + status: int, + version: int, + version_string: str, + reason: str | None, + decode_content: bool, + request_url: str | None, + retries: Retry | None = None, + ) -> None: + if isinstance(headers, HTTPHeaderDict): + self.headers = headers + else: + self.headers = HTTPHeaderDict(headers) # type: ignore[arg-type] + self.status = status + self.version = version + self.version_string = version_string + self.reason = reason + self.decode_content = decode_content + self._has_decoded_content = False + self._request_url: str | None = request_url + self.retries = retries + + self.chunked = False + tr_enc = self.headers.get("transfer-encoding", "").lower() + # Don't incur the penalty of creating a list and then discarding it + encodings = (enc.strip() for enc in tr_enc.split(",")) + if "chunked" in encodings: + self.chunked = True + + self._decoder: ContentDecoder | None = None + self.length_remaining: int | None + + def get_redirect_location(self) -> str | None | typing.Literal[False]: + """ + Should we redirect and where to? + + :returns: Truthy redirect location string if we got a redirect status + code and valid location. ``None`` if redirect status and no + location. ``False`` if not a redirect status code. + """ + if self.status in self.REDIRECT_STATUSES: + return self.headers.get("location") + return False + + @property + def data(self) -> bytes: + raise NotImplementedError() + + def json(self) -> typing.Any: + """ + Deserializes the body of the HTTP response as a Python object. + + The body of the HTTP response must be encoded using UTF-8, as per + `RFC 8529 Section 8.1 `_. + + To use a custom JSON decoder pass the result of :attr:`HTTPResponse.data` to + your custom decoder instead. + + If the body of the HTTP response is not decodable to UTF-8, a + `UnicodeDecodeError` will be raised. If the body of the HTTP response is not a + valid JSON document, a `json.JSONDecodeError` will be raised. + + Read more :ref:`here `. + + :returns: The body of the HTTP response as a Python object. + """ + data = self.data.decode("utf-8") + return _json.loads(data) + + @property + def url(self) -> str | None: + raise NotImplementedError() + + @url.setter + def url(self, url: str | None) -> None: + raise NotImplementedError() + + @property + def connection(self) -> BaseHTTPConnection | None: + raise NotImplementedError() + + @property + def retries(self) -> Retry | None: + return self._retries + + @retries.setter + def retries(self, retries: Retry | None) -> None: + # Override the request_url if retries has a redirect location. + if retries is not None and retries.history: + self.url = retries.history[-1].redirect_location + self._retries = retries + + def stream( + self, amt: int | None = 2**16, decode_content: bool | None = None + ) -> typing.Iterator[bytes]: + raise NotImplementedError() + + def read( + self, + amt: int | None = None, + decode_content: bool | None = None, + cache_content: bool = False, + ) -> bytes: + raise NotImplementedError() + + def read1( + self, + amt: int | None = None, + decode_content: bool | None = None, + ) -> bytes: + raise NotImplementedError() + + def read_chunked( + self, + amt: int | None = None, + decode_content: bool | None = None, + ) -> typing.Iterator[bytes]: + raise NotImplementedError() + + def release_conn(self) -> None: + raise NotImplementedError() + + def drain_conn(self) -> None: + raise NotImplementedError() + + def shutdown(self) -> None: + raise NotImplementedError() + + def close(self) -> None: + raise NotImplementedError() + + def _init_decoder(self) -> None: + """ + Set-up the _decoder attribute if necessary. + """ + # Note: content-encoding value should be case-insensitive, per RFC 7230 + # Section 3.2 + content_encoding = self.headers.get("content-encoding", "").lower() + if self._decoder is None: + if content_encoding in self.CONTENT_DECODERS: + self._decoder = _get_decoder(content_encoding) + elif "," in content_encoding: + encodings = [ + e.strip() + for e in content_encoding.split(",") + if e.strip() in self.CONTENT_DECODERS + ] + if encodings: + self._decoder = _get_decoder(content_encoding) + + def _decode( + self, data: bytes, decode_content: bool | None, flush_decoder: bool + ) -> bytes: + """ + Decode the data passed in and potentially flush the decoder. + """ + if not decode_content: + if self._has_decoded_content: + raise RuntimeError( + "Calling read(decode_content=False) is not supported after " + "read(decode_content=True) was called." + ) + return data + + try: + if self._decoder: + data = self._decoder.decompress(data) + self._has_decoded_content = True + except self.DECODER_ERROR_CLASSES as e: + content_encoding = self.headers.get("content-encoding", "").lower() + raise DecodeError( + "Received response with content-encoding: %s, but " + "failed to decode it." % content_encoding, + e, + ) from e + if flush_decoder: + data += self._flush_decoder() + + return data + + def _flush_decoder(self) -> bytes: + """ + Flushes the decoder. Should only be called if the decoder is actually + being used. + """ + if self._decoder: + return self._decoder.decompress(b"") + self._decoder.flush() + return b"" + + # Compatibility methods for `io` module + def readinto(self, b: bytearray) -> int: + temp = self.read(len(b)) + if len(temp) == 0: + return 0 + else: + b[: len(temp)] = temp + return len(temp) + + # Compatibility methods for http.client.HTTPResponse + def getheaders(self) -> HTTPHeaderDict: + warnings.warn( + "HTTPResponse.getheaders() is deprecated and will be removed " + "in urllib3 v2.6.0. Instead access HTTPResponse.headers directly.", + category=DeprecationWarning, + stacklevel=2, + ) + return self.headers + + def getheader(self, name: str, default: str | None = None) -> str | None: + warnings.warn( + "HTTPResponse.getheader() is deprecated and will be removed " + "in urllib3 v2.6.0. Instead use HTTPResponse.headers.get(name, default).", + category=DeprecationWarning, + stacklevel=2, + ) + return self.headers.get(name, default) + + # Compatibility method for http.cookiejar + def info(self) -> HTTPHeaderDict: + return self.headers + + def geturl(self) -> str | None: + return self.url + + +class HTTPResponse(BaseHTTPResponse): + """ + HTTP Response container. + + Backwards-compatible with :class:`http.client.HTTPResponse` but the response ``body`` is + loaded and decoded on-demand when the ``data`` property is accessed. This + class is also compatible with the Python standard library's :mod:`io` + module, and can hence be treated as a readable object in the context of that + framework. + + Extra parameters for behaviour not present in :class:`http.client.HTTPResponse`: + + :param preload_content: + If True, the response's body will be preloaded during construction. + + :param decode_content: + If True, will attempt to decode the body based on the + 'content-encoding' header. + + :param original_response: + When this HTTPResponse wrapper is generated from an :class:`http.client.HTTPResponse` + object, it's convenient to include the original for debug purposes. It's + otherwise unused. + + :param retries: + The retries contains the last :class:`~urllib3.util.retry.Retry` that + was used during the request. + + :param enforce_content_length: + Enforce content length checking. Body returned by server must match + value of Content-Length header, if present. Otherwise, raise error. + """ + + def __init__( + self, + body: _TYPE_BODY = "", + headers: typing.Mapping[str, str] | typing.Mapping[bytes, bytes] | None = None, + status: int = 0, + version: int = 0, + version_string: str = "HTTP/?", + reason: str | None = None, + preload_content: bool = True, + decode_content: bool = True, + original_response: _HttplibHTTPResponse | None = None, + pool: HTTPConnectionPool | None = None, + connection: HTTPConnection | None = None, + msg: _HttplibHTTPMessage | None = None, + retries: Retry | None = None, + enforce_content_length: bool = True, + request_method: str | None = None, + request_url: str | None = None, + auto_close: bool = True, + sock_shutdown: typing.Callable[[int], None] | None = None, + ) -> None: + super().__init__( + headers=headers, + status=status, + version=version, + version_string=version_string, + reason=reason, + decode_content=decode_content, + request_url=request_url, + retries=retries, + ) + + self.enforce_content_length = enforce_content_length + self.auto_close = auto_close + + self._body = None + self._fp: _HttplibHTTPResponse | None = None + self._original_response = original_response + self._fp_bytes_read = 0 + self.msg = msg + + if body and isinstance(body, (str, bytes)): + self._body = body + + self._pool = pool + self._connection = connection + + if hasattr(body, "read"): + self._fp = body # type: ignore[assignment] + self._sock_shutdown = sock_shutdown + + # Are we using the chunked-style of transfer encoding? + self.chunk_left: int | None = None + + # Determine length of response + self.length_remaining = self._init_length(request_method) + + # Used to return the correct amount of bytes for partial read()s + self._decoded_buffer = BytesQueueBuffer() + + # If requested, preload the body. + if preload_content and not self._body: + self._body = self.read(decode_content=decode_content) + + def release_conn(self) -> None: + if not self._pool or not self._connection: + return None + + self._pool._put_conn(self._connection) + self._connection = None + + def drain_conn(self) -> None: + """ + Read and discard any remaining HTTP response data in the response connection. + + Unread data in the HTTPResponse connection blocks the connection from being released back to the pool. + """ + try: + self.read() + except (HTTPError, OSError, BaseSSLError, HTTPException): + pass + + @property + def data(self) -> bytes: + # For backwards-compat with earlier urllib3 0.4 and earlier. + if self._body: + return self._body # type: ignore[return-value] + + if self._fp: + return self.read(cache_content=True) + + return None # type: ignore[return-value] + + @property + def connection(self) -> HTTPConnection | None: + return self._connection + + def isclosed(self) -> bool: + return is_fp_closed(self._fp) + + def tell(self) -> int: + """ + Obtain the number of bytes pulled over the wire so far. May differ from + the amount of content returned by :meth:``urllib3.response.HTTPResponse.read`` + if bytes are encoded on the wire (e.g, compressed). + """ + return self._fp_bytes_read + + def _init_length(self, request_method: str | None) -> int | None: + """ + Set initial length value for Response content if available. + """ + length: int | None + content_length: str | None = self.headers.get("content-length") + + if content_length is not None: + if self.chunked: + # This Response will fail with an IncompleteRead if it can't be + # received as chunked. This method falls back to attempt reading + # the response before raising an exception. + log.warning( + "Received response with both Content-Length and " + "Transfer-Encoding set. This is expressly forbidden " + "by RFC 7230 sec 3.3.2. Ignoring Content-Length and " + "attempting to process response as Transfer-Encoding: " + "chunked." + ) + return None + + try: + # RFC 7230 section 3.3.2 specifies multiple content lengths can + # be sent in a single Content-Length header + # (e.g. Content-Length: 42, 42). This line ensures the values + # are all valid ints and that as long as the `set` length is 1, + # all values are the same. Otherwise, the header is invalid. + lengths = {int(val) for val in content_length.split(",")} + if len(lengths) > 1: + raise InvalidHeader( + "Content-Length contained multiple " + "unmatching values (%s)" % content_length + ) + length = lengths.pop() + except ValueError: + length = None + else: + if length < 0: + length = None + + else: # if content_length is None + length = None + + # Convert status to int for comparison + # In some cases, httplib returns a status of "_UNKNOWN" + try: + status = int(self.status) + except ValueError: + status = 0 + + # Check for responses that shouldn't include a body + if status in (204, 304) or 100 <= status < 200 or request_method == "HEAD": + length = 0 + + return length + + @contextmanager + def _error_catcher(self) -> typing.Generator[None]: + """ + Catch low-level python exceptions, instead re-raising urllib3 + variants, so that low-level exceptions are not leaked in the + high-level api. + + On exit, release the connection back to the pool. + """ + clean_exit = False + + try: + try: + yield + + except SocketTimeout as e: + # FIXME: Ideally we'd like to include the url in the ReadTimeoutError but + # there is yet no clean way to get at it from this context. + raise ReadTimeoutError(self._pool, None, "Read timed out.") from e # type: ignore[arg-type] + + except BaseSSLError as e: + # FIXME: Is there a better way to differentiate between SSLErrors? + if "read operation timed out" not in str(e): + # SSL errors related to framing/MAC get wrapped and reraised here + raise SSLError(e) from e + + raise ReadTimeoutError(self._pool, None, "Read timed out.") from e # type: ignore[arg-type] + + except IncompleteRead as e: + if ( + e.expected is not None + and e.partial is not None + and e.expected == -e.partial + ): + arg = "Response may not contain content." + else: + arg = f"Connection broken: {e!r}" + raise ProtocolError(arg, e) from e + + except (HTTPException, OSError) as e: + raise ProtocolError(f"Connection broken: {e!r}", e) from e + + # If no exception is thrown, we should avoid cleaning up + # unnecessarily. + clean_exit = True + finally: + # If we didn't terminate cleanly, we need to throw away our + # connection. + if not clean_exit: + # The response may not be closed but we're not going to use it + # anymore so close it now to ensure that the connection is + # released back to the pool. + if self._original_response: + self._original_response.close() + + # Closing the response may not actually be sufficient to close + # everything, so if we have a hold of the connection close that + # too. + if self._connection: + self._connection.close() + + # If we hold the original response but it's closed now, we should + # return the connection back to the pool. + if self._original_response and self._original_response.isclosed(): + self.release_conn() + + def _fp_read( + self, + amt: int | None = None, + *, + read1: bool = False, + ) -> bytes: + """ + Read a response with the thought that reading the number of bytes + larger than can fit in a 32-bit int at a time via SSL in some + known cases leads to an overflow error that has to be prevented + if `amt` or `self.length_remaining` indicate that a problem may + happen. + + The known cases: + * CPython < 3.9.7 because of a bug + https://github.com/urllib3/urllib3/issues/2513#issuecomment-1152559900. + * urllib3 injected with pyOpenSSL-backed SSL-support. + * CPython < 3.10 only when `amt` does not fit 32-bit int. + """ + assert self._fp + c_int_max = 2**31 - 1 + if ( + (amt and amt > c_int_max) + or ( + amt is None + and self.length_remaining + and self.length_remaining > c_int_max + ) + ) and (util.IS_PYOPENSSL or sys.version_info < (3, 10)): + if read1: + return self._fp.read1(c_int_max) + buffer = io.BytesIO() + # Besides `max_chunk_amt` being a maximum chunk size, it + # affects memory overhead of reading a response by this + # method in CPython. + # `c_int_max` equal to 2 GiB - 1 byte is the actual maximum + # chunk size that does not lead to an overflow error, but + # 256 MiB is a compromise. + max_chunk_amt = 2**28 + while amt is None or amt != 0: + if amt is not None: + chunk_amt = min(amt, max_chunk_amt) + amt -= chunk_amt + else: + chunk_amt = max_chunk_amt + data = self._fp.read(chunk_amt) + if not data: + break + buffer.write(data) + del data # to reduce peak memory usage by `max_chunk_amt`. + return buffer.getvalue() + elif read1: + return self._fp.read1(amt) if amt is not None else self._fp.read1() + else: + # StringIO doesn't like amt=None + return self._fp.read(amt) if amt is not None else self._fp.read() + + def _raw_read( + self, + amt: int | None = None, + *, + read1: bool = False, + ) -> bytes: + """ + Reads `amt` of bytes from the socket. + """ + if self._fp is None: + return None # type: ignore[return-value] + + fp_closed = getattr(self._fp, "closed", False) + + with self._error_catcher(): + data = self._fp_read(amt, read1=read1) if not fp_closed else b"" + if amt is not None and amt != 0 and not data: + # Platform-specific: Buggy versions of Python. + # Close the connection when no data is returned + # + # This is redundant to what httplib/http.client _should_ + # already do. However, versions of python released before + # December 15, 2012 (http://bugs.python.org/issue16298) do + # not properly close the connection in all cases. There is + # no harm in redundantly calling close. + self._fp.close() + if ( + self.enforce_content_length + and self.length_remaining is not None + and self.length_remaining != 0 + ): + # This is an edge case that httplib failed to cover due + # to concerns of backward compatibility. We're + # addressing it here to make sure IncompleteRead is + # raised during streaming, so all calls with incorrect + # Content-Length are caught. + raise IncompleteRead(self._fp_bytes_read, self.length_remaining) + elif read1 and ( + (amt != 0 and not data) or self.length_remaining == len(data) + ): + # All data has been read, but `self._fp.read1` in + # CPython 3.12 and older doesn't always close + # `http.client.HTTPResponse`, so we close it here. + # See https://github.com/python/cpython/issues/113199 + self._fp.close() + + if data: + self._fp_bytes_read += len(data) + if self.length_remaining is not None: + self.length_remaining -= len(data) + return data + + def read( + self, + amt: int | None = None, + decode_content: bool | None = None, + cache_content: bool = False, + ) -> bytes: + """ + Similar to :meth:`http.client.HTTPResponse.read`, but with two additional + parameters: ``decode_content`` and ``cache_content``. + + :param amt: + How much of the content to read. If specified, caching is skipped + because it doesn't make sense to cache partial content as the full + response. + + :param decode_content: + If True, will attempt to decode the body based on the + 'content-encoding' header. + + :param cache_content: + If True, will save the returned data such that the same result is + returned despite of the state of the underlying file object. This + is useful if you want the ``.data`` property to continue working + after having ``.read()`` the file object. (Overridden if ``amt`` is + set.) + """ + self._init_decoder() + if decode_content is None: + decode_content = self.decode_content + + if amt and amt < 0: + # Negative numbers and `None` should be treated the same. + amt = None + elif amt is not None: + cache_content = False + + if len(self._decoded_buffer) >= amt: + return self._decoded_buffer.get(amt) + + data = self._raw_read(amt) + + flush_decoder = amt is None or (amt != 0 and not data) + + if not data and len(self._decoded_buffer) == 0: + return data + + if amt is None: + data = self._decode(data, decode_content, flush_decoder) + if cache_content: + self._body = data + else: + # do not waste memory on buffer when not decoding + if not decode_content: + if self._has_decoded_content: + raise RuntimeError( + "Calling read(decode_content=False) is not supported after " + "read(decode_content=True) was called." + ) + return data + + decoded_data = self._decode(data, decode_content, flush_decoder) + self._decoded_buffer.put(decoded_data) + + while len(self._decoded_buffer) < amt and data: + # TODO make sure to initially read enough data to get past the headers + # For example, the GZ file header takes 10 bytes, we don't want to read + # it one byte at a time + data = self._raw_read(amt) + decoded_data = self._decode(data, decode_content, flush_decoder) + self._decoded_buffer.put(decoded_data) + data = self._decoded_buffer.get(amt) + + return data + + def read1( + self, + amt: int | None = None, + decode_content: bool | None = None, + ) -> bytes: + """ + Similar to ``http.client.HTTPResponse.read1`` and documented + in :meth:`io.BufferedReader.read1`, but with an additional parameter: + ``decode_content``. + + :param amt: + How much of the content to read. + + :param decode_content: + If True, will attempt to decode the body based on the + 'content-encoding' header. + """ + if decode_content is None: + decode_content = self.decode_content + if amt and amt < 0: + # Negative numbers and `None` should be treated the same. + amt = None + # try and respond without going to the network + if self._has_decoded_content: + if not decode_content: + raise RuntimeError( + "Calling read1(decode_content=False) is not supported after " + "read1(decode_content=True) was called." + ) + if len(self._decoded_buffer) > 0: + if amt is None: + return self._decoded_buffer.get_all() + return self._decoded_buffer.get(amt) + if amt == 0: + return b"" + + # FIXME, this method's type doesn't say returning None is possible + data = self._raw_read(amt, read1=True) + if not decode_content or data is None: + return data + + self._init_decoder() + while True: + flush_decoder = not data + decoded_data = self._decode(data, decode_content, flush_decoder) + self._decoded_buffer.put(decoded_data) + if decoded_data or flush_decoder: + break + data = self._raw_read(8192, read1=True) + + if amt is None: + return self._decoded_buffer.get_all() + return self._decoded_buffer.get(amt) + + def stream( + self, amt: int | None = 2**16, decode_content: bool | None = None + ) -> typing.Generator[bytes]: + """ + A generator wrapper for the read() method. A call will block until + ``amt`` bytes have been read from the connection or until the + connection is closed. + + :param amt: + How much of the content to read. The generator will return up to + much data per iteration, but may return less. This is particularly + likely when using compressed data. However, the empty string will + never be returned. + + :param decode_content: + If True, will attempt to decode the body based on the + 'content-encoding' header. + """ + if self.chunked and self.supports_chunked_reads(): + yield from self.read_chunked(amt, decode_content=decode_content) + else: + while not is_fp_closed(self._fp) or len(self._decoded_buffer) > 0: + data = self.read(amt=amt, decode_content=decode_content) + + if data: + yield data + + # Overrides from io.IOBase + def readable(self) -> bool: + return True + + def shutdown(self) -> None: + if not self._sock_shutdown: + raise ValueError("Cannot shutdown socket as self._sock_shutdown is not set") + if self._connection is None: + raise RuntimeError( + "Cannot shutdown as connection has already been released to the pool" + ) + self._sock_shutdown(socket.SHUT_RD) + + def close(self) -> None: + self._sock_shutdown = None + + if not self.closed and self._fp: + self._fp.close() + + if self._connection: + self._connection.close() + + if not self.auto_close: + io.IOBase.close(self) + + @property + def closed(self) -> bool: + if not self.auto_close: + return io.IOBase.closed.__get__(self) # type: ignore[no-any-return] + elif self._fp is None: + return True + elif hasattr(self._fp, "isclosed"): + return self._fp.isclosed() + elif hasattr(self._fp, "closed"): + return self._fp.closed + else: + return True + + def fileno(self) -> int: + if self._fp is None: + raise OSError("HTTPResponse has no file to get a fileno from") + elif hasattr(self._fp, "fileno"): + return self._fp.fileno() + else: + raise OSError( + "The file-like object this HTTPResponse is wrapped " + "around has no file descriptor" + ) + + def flush(self) -> None: + if ( + self._fp is not None + and hasattr(self._fp, "flush") + and not getattr(self._fp, "closed", False) + ): + return self._fp.flush() + + def supports_chunked_reads(self) -> bool: + """ + Checks if the underlying file-like object looks like a + :class:`http.client.HTTPResponse` object. We do this by testing for + the fp attribute. If it is present we assume it returns raw chunks as + processed by read_chunked(). + """ + return hasattr(self._fp, "fp") + + def _update_chunk_length(self) -> None: + # First, we'll figure out length of a chunk and then + # we'll try to read it from socket. + if self.chunk_left is not None: + return None + line = self._fp.fp.readline() # type: ignore[union-attr] + line = line.split(b";", 1)[0] + try: + self.chunk_left = int(line, 16) + except ValueError: + self.close() + if line: + # Invalid chunked protocol response, abort. + raise InvalidChunkLength(self, line) from None + else: + # Truncated at start of next chunk + raise ProtocolError("Response ended prematurely") from None + + def _handle_chunk(self, amt: int | None) -> bytes: + returned_chunk = None + if amt is None: + chunk = self._fp._safe_read(self.chunk_left) # type: ignore[union-attr] + returned_chunk = chunk + self._fp._safe_read(2) # type: ignore[union-attr] # Toss the CRLF at the end of the chunk. + self.chunk_left = None + elif self.chunk_left is not None and amt < self.chunk_left: + value = self._fp._safe_read(amt) # type: ignore[union-attr] + self.chunk_left = self.chunk_left - amt + returned_chunk = value + elif amt == self.chunk_left: + value = self._fp._safe_read(amt) # type: ignore[union-attr] + self._fp._safe_read(2) # type: ignore[union-attr] # Toss the CRLF at the end of the chunk. + self.chunk_left = None + returned_chunk = value + else: # amt > self.chunk_left + returned_chunk = self._fp._safe_read(self.chunk_left) # type: ignore[union-attr] + self._fp._safe_read(2) # type: ignore[union-attr] # Toss the CRLF at the end of the chunk. + self.chunk_left = None + return returned_chunk # type: ignore[no-any-return] + + def read_chunked( + self, amt: int | None = None, decode_content: bool | None = None + ) -> typing.Generator[bytes]: + """ + Similar to :meth:`HTTPResponse.read`, but with an additional + parameter: ``decode_content``. + + :param amt: + How much of the content to read. If specified, caching is skipped + because it doesn't make sense to cache partial content as the full + response. + + :param decode_content: + If True, will attempt to decode the body based on the + 'content-encoding' header. + """ + self._init_decoder() + # FIXME: Rewrite this method and make it a class with a better structured logic. + if not self.chunked: + raise ResponseNotChunked( + "Response is not chunked. " + "Header 'transfer-encoding: chunked' is missing." + ) + if not self.supports_chunked_reads(): + raise BodyNotHttplibCompatible( + "Body should be http.client.HTTPResponse like. " + "It should have have an fp attribute which returns raw chunks." + ) + + with self._error_catcher(): + # Don't bother reading the body of a HEAD request. + if self._original_response and is_response_to_head(self._original_response): + self._original_response.close() + return None + + # If a response is already read and closed + # then return immediately. + if self._fp.fp is None: # type: ignore[union-attr] + return None + + if amt and amt < 0: + # Negative numbers and `None` should be treated the same, + # but httplib handles only `None` correctly. + amt = None + + while True: + self._update_chunk_length() + if self.chunk_left == 0: + break + chunk = self._handle_chunk(amt) + decoded = self._decode( + chunk, decode_content=decode_content, flush_decoder=False + ) + if decoded: + yield decoded + + if decode_content: + # On CPython and PyPy, we should never need to flush the + # decoder. However, on Jython we *might* need to, so + # lets defensively do it anyway. + decoded = self._flush_decoder() + if decoded: # Platform-specific: Jython. + yield decoded + + # Chunk content ends with \r\n: discard it. + while self._fp is not None: + line = self._fp.fp.readline() + if not line: + # Some sites may not end with '\r\n'. + break + if line == b"\r\n": + break + + # We read everything; close the "file". + if self._original_response: + self._original_response.close() + + @property + def url(self) -> str | None: + """ + Returns the URL that was the source of this response. + If the request that generated this response redirected, this method + will return the final redirect location. + """ + return self._request_url + + @url.setter + def url(self, url: str) -> None: + self._request_url = url + + def __iter__(self) -> typing.Iterator[bytes]: + buffer: list[bytes] = [] + for chunk in self.stream(decode_content=True): + if b"\n" in chunk: + chunks = chunk.split(b"\n") + yield b"".join(buffer) + chunks[0] + b"\n" + for x in chunks[1:-1]: + yield x + b"\n" + if chunks[-1]: + buffer = [chunks[-1]] + else: + buffer = [] + else: + buffer.append(chunk) + if buffer: + yield b"".join(buffer) diff --git a/frogpilot/third_party/urllib3/util/__init__.py b/frogpilot/third_party/urllib3/util/__init__.py new file mode 100644 index 000000000..534126033 --- /dev/null +++ b/frogpilot/third_party/urllib3/util/__init__.py @@ -0,0 +1,42 @@ +# For backwards compatibility, provide imports that used to be here. +from __future__ import annotations + +from .connection import is_connection_dropped +from .request import SKIP_HEADER, SKIPPABLE_HEADERS, make_headers +from .response import is_fp_closed +from .retry import Retry +from .ssl_ import ( + ALPN_PROTOCOLS, + IS_PYOPENSSL, + SSLContext, + assert_fingerprint, + create_urllib3_context, + resolve_cert_reqs, + resolve_ssl_version, + ssl_wrap_socket, +) +from .timeout import Timeout +from .url import Url, parse_url +from .wait import wait_for_read, wait_for_write + +__all__ = ( + "IS_PYOPENSSL", + "SSLContext", + "ALPN_PROTOCOLS", + "Retry", + "Timeout", + "Url", + "assert_fingerprint", + "create_urllib3_context", + "is_connection_dropped", + "is_fp_closed", + "parse_url", + "make_headers", + "resolve_cert_reqs", + "resolve_ssl_version", + "ssl_wrap_socket", + "wait_for_read", + "wait_for_write", + "SKIP_HEADER", + "SKIPPABLE_HEADERS", +) diff --git a/frogpilot/third_party/urllib3/util/connection.py b/frogpilot/third_party/urllib3/util/connection.py new file mode 100644 index 000000000..f92519ee9 --- /dev/null +++ b/frogpilot/third_party/urllib3/util/connection.py @@ -0,0 +1,137 @@ +from __future__ import annotations + +import socket +import typing + +from ..exceptions import LocationParseError +from .timeout import _DEFAULT_TIMEOUT, _TYPE_TIMEOUT + +_TYPE_SOCKET_OPTIONS = list[tuple[int, int, typing.Union[int, bytes]]] + +if typing.TYPE_CHECKING: + from .._base_connection import BaseHTTPConnection + + +def is_connection_dropped(conn: BaseHTTPConnection) -> bool: # Platform-specific + """ + Returns True if the connection is dropped and should be closed. + :param conn: :class:`urllib3.connection.HTTPConnection` object. + """ + return not conn.is_connected + + +# This function is copied from socket.py in the Python 2.7 standard +# library test suite. Added to its signature is only `socket_options`. +# One additional modification is that we avoid binding to IPv6 servers +# discovered in DNS if the system doesn't have IPv6 functionality. +def create_connection( + address: tuple[str, int], + timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, + source_address: tuple[str, int] | None = None, + socket_options: _TYPE_SOCKET_OPTIONS | None = None, +) -> socket.socket: + """Connect to *address* and return the socket object. + + Convenience function. Connect to *address* (a 2-tuple ``(host, + port)``) and return the socket object. Passing the optional + *timeout* parameter will set the timeout on the socket instance + before attempting to connect. If no *timeout* is supplied, the + global default timeout setting returned by :func:`socket.getdefaulttimeout` + is used. If *source_address* is set it must be a tuple of (host, port) + for the socket to bind as a source address before making the connection. + An host of '' or port 0 tells the OS to use the default. + """ + + host, port = address + if host.startswith("["): + host = host.strip("[]") + err = None + + # Using the value from allowed_gai_family() in the context of getaddrinfo lets + # us select whether to work with IPv4 DNS records, IPv6 records, or both. + # The original create_connection function always returns all records. + family = allowed_gai_family() + + try: + host.encode("idna") + except UnicodeError: + raise LocationParseError(f"'{host}', label empty or too long") from None + + for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): + af, socktype, proto, canonname, sa = res + sock = None + try: + sock = socket.socket(af, socktype, proto) + + # If provided, set socket level options before connecting. + _set_socket_options(sock, socket_options) + + if timeout is not _DEFAULT_TIMEOUT: + sock.settimeout(timeout) + if source_address: + sock.bind(source_address) + sock.connect(sa) + # Break explicitly a reference cycle + err = None + return sock + + except OSError as _: + err = _ + if sock is not None: + sock.close() + + if err is not None: + try: + raise err + finally: + # Break explicitly a reference cycle + err = None + else: + raise OSError("getaddrinfo returns an empty list") + + +def _set_socket_options( + sock: socket.socket, options: _TYPE_SOCKET_OPTIONS | None +) -> None: + if options is None: + return + + for opt in options: + sock.setsockopt(*opt) + + +def allowed_gai_family() -> socket.AddressFamily: + """This function is designed to work in the context of + getaddrinfo, where family=socket.AF_UNSPEC is the default and + will perform a DNS search for both IPv6 and IPv4 records.""" + + family = socket.AF_INET + if HAS_IPV6: + family = socket.AF_UNSPEC + return family + + +def _has_ipv6(host: str) -> bool: + """Returns True if the system can bind an IPv6 address.""" + sock = None + has_ipv6 = False + + if socket.has_ipv6: + # has_ipv6 returns true if cPython was compiled with IPv6 support. + # It does not tell us if the system has IPv6 support enabled. To + # determine that we must bind to an IPv6 address. + # https://github.com/urllib3/urllib3/pull/611 + # https://bugs.python.org/issue658327 + try: + sock = socket.socket(socket.AF_INET6) + sock.bind((host, 0)) + has_ipv6 = True + except Exception: + pass + + if sock: + sock.close() + return has_ipv6 + + +HAS_IPV6 = _has_ipv6("::1") diff --git a/frogpilot/third_party/urllib3/util/proxy.py b/frogpilot/third_party/urllib3/util/proxy.py new file mode 100644 index 000000000..908fc6621 --- /dev/null +++ b/frogpilot/third_party/urllib3/util/proxy.py @@ -0,0 +1,43 @@ +from __future__ import annotations + +import typing + +from .url import Url + +if typing.TYPE_CHECKING: + from ..connection import ProxyConfig + + +def connection_requires_http_tunnel( + proxy_url: Url | None = None, + proxy_config: ProxyConfig | None = None, + destination_scheme: str | None = None, +) -> bool: + """ + Returns True if the connection requires an HTTP CONNECT through the proxy. + + :param URL proxy_url: + URL of the proxy. + :param ProxyConfig proxy_config: + Proxy configuration from poolmanager.py + :param str destination_scheme: + The scheme of the destination. (i.e https, http, etc) + """ + # If we're not using a proxy, no way to use a tunnel. + if proxy_url is None: + return False + + # HTTP destinations never require tunneling, we always forward. + if destination_scheme == "http": + return False + + # Support for forwarding with HTTPS proxies and HTTPS destinations. + if ( + proxy_url.scheme == "https" + and proxy_config + and proxy_config.use_forwarding_for_https + ): + return False + + # Otherwise always use a tunnel. + return True diff --git a/frogpilot/third_party/urllib3/util/request.py b/frogpilot/third_party/urllib3/util/request.py new file mode 100644 index 000000000..23605c522 --- /dev/null +++ b/frogpilot/third_party/urllib3/util/request.py @@ -0,0 +1,266 @@ +from __future__ import annotations + +import io +import typing +from base64 import b64encode +from enum import Enum + +from ..exceptions import UnrewindableBodyError +from .util import to_bytes + +if typing.TYPE_CHECKING: + from typing import Final + +# Pass as a value within ``headers`` to skip +# emitting some HTTP headers that are added automatically. +# The only headers that are supported are ``Accept-Encoding``, +# ``Host``, and ``User-Agent``. +SKIP_HEADER = "@@@SKIP_HEADER@@@" +SKIPPABLE_HEADERS = frozenset(["accept-encoding", "host", "user-agent"]) + +ACCEPT_ENCODING = "gzip,deflate" +try: + try: + import brotlicffi as _unused_module_brotli # type: ignore[import-not-found] # noqa: F401 + except ImportError: + import brotli as _unused_module_brotli # type: ignore[import-not-found] # noqa: F401 +except ImportError: + pass +else: + ACCEPT_ENCODING += ",br" + +try: + from compression import ( # type: ignore[import-not-found] # noqa: F401 + zstd as _unused_module_zstd, + ) + + ACCEPT_ENCODING += ",zstd" +except ImportError: + try: + import zstandard as _unused_module_zstd # noqa: F401 + + ACCEPT_ENCODING += ",zstd" + except ImportError: + pass + + +class _TYPE_FAILEDTELL(Enum): + token = 0 + + +_FAILEDTELL: Final[_TYPE_FAILEDTELL] = _TYPE_FAILEDTELL.token + +_TYPE_BODY_POSITION = typing.Union[int, _TYPE_FAILEDTELL] + +# When sending a request with these methods we aren't expecting +# a body so don't need to set an explicit 'Content-Length: 0' +# The reason we do this in the negative instead of tracking methods +# which 'should' have a body is because unknown methods should be +# treated as if they were 'POST' which *does* expect a body. +_METHODS_NOT_EXPECTING_BODY = {"GET", "HEAD", "DELETE", "TRACE", "OPTIONS", "CONNECT"} + + +def make_headers( + keep_alive: bool | None = None, + accept_encoding: bool | list[str] | str | None = None, + user_agent: str | None = None, + basic_auth: str | None = None, + proxy_basic_auth: str | None = None, + disable_cache: bool | None = None, +) -> dict[str, str]: + """ + Shortcuts for generating request headers. + + :param keep_alive: + If ``True``, adds 'connection: keep-alive' header. + + :param accept_encoding: + Can be a boolean, list, or string. + ``True`` translates to 'gzip,deflate'. If the dependencies for + Brotli (either the ``brotli`` or ``brotlicffi`` package) and/or Zstandard + (the ``zstandard`` package) algorithms are installed, then their encodings are + included in the string ('br' and 'zstd', respectively). + List will get joined by comma. + String will be used as provided. + + :param user_agent: + String representing the user-agent you want, such as + "python-urllib3/0.6" + + :param basic_auth: + Colon-separated username:password string for 'authorization: basic ...' + auth header. + + :param proxy_basic_auth: + Colon-separated username:password string for 'proxy-authorization: basic ...' + auth header. + + :param disable_cache: + If ``True``, adds 'cache-control: no-cache' header. + + Example: + + .. code-block:: python + + import urllib3 + + print(urllib3.util.make_headers(keep_alive=True, user_agent="Batman/1.0")) + # {'connection': 'keep-alive', 'user-agent': 'Batman/1.0'} + print(urllib3.util.make_headers(accept_encoding=True)) + # {'accept-encoding': 'gzip,deflate'} + """ + headers: dict[str, str] = {} + if accept_encoding: + if isinstance(accept_encoding, str): + pass + elif isinstance(accept_encoding, list): + accept_encoding = ",".join(accept_encoding) + else: + accept_encoding = ACCEPT_ENCODING + headers["accept-encoding"] = accept_encoding + + if user_agent: + headers["user-agent"] = user_agent + + if keep_alive: + headers["connection"] = "keep-alive" + + if basic_auth: + headers["authorization"] = ( + f"Basic {b64encode(basic_auth.encode('latin-1')).decode()}" + ) + + if proxy_basic_auth: + headers["proxy-authorization"] = ( + f"Basic {b64encode(proxy_basic_auth.encode('latin-1')).decode()}" + ) + + if disable_cache: + headers["cache-control"] = "no-cache" + + return headers + + +def set_file_position( + body: typing.Any, pos: _TYPE_BODY_POSITION | None +) -> _TYPE_BODY_POSITION | None: + """ + If a position is provided, move file to that point. + Otherwise, we'll attempt to record a position for future use. + """ + if pos is not None: + rewind_body(body, pos) + elif getattr(body, "tell", None) is not None: + try: + pos = body.tell() + except OSError: + # This differentiates from None, allowing us to catch + # a failed `tell()` later when trying to rewind the body. + pos = _FAILEDTELL + + return pos + + +def rewind_body(body: typing.IO[typing.AnyStr], body_pos: _TYPE_BODY_POSITION) -> None: + """ + Attempt to rewind body to a certain position. + Primarily used for request redirects and retries. + + :param body: + File-like object that supports seek. + + :param int pos: + Position to seek to in file. + """ + body_seek = getattr(body, "seek", None) + if body_seek is not None and isinstance(body_pos, int): + try: + body_seek(body_pos) + except OSError as e: + raise UnrewindableBodyError( + "An error occurred when rewinding request body for redirect/retry." + ) from e + elif body_pos is _FAILEDTELL: + raise UnrewindableBodyError( + "Unable to record file position for rewinding " + "request body during a redirect/retry." + ) + else: + raise ValueError( + f"body_pos must be of type integer, instead it was {type(body_pos)}." + ) + + +class ChunksAndContentLength(typing.NamedTuple): + chunks: typing.Iterable[bytes] | None + content_length: int | None + + +def body_to_chunks( + body: typing.Any | None, method: str, blocksize: int +) -> ChunksAndContentLength: + """Takes the HTTP request method, body, and blocksize and + transforms them into an iterable of chunks to pass to + socket.sendall() and an optional 'Content-Length' header. + + A 'Content-Length' of 'None' indicates the length of the body + can't be determined so should use 'Transfer-Encoding: chunked' + for framing instead. + """ + + chunks: typing.Iterable[bytes] | None + content_length: int | None + + # No body, we need to make a recommendation on 'Content-Length' + # based on whether that request method is expected to have + # a body or not. + if body is None: + chunks = None + if method.upper() not in _METHODS_NOT_EXPECTING_BODY: + content_length = 0 + else: + content_length = None + + # Bytes or strings become bytes + elif isinstance(body, (str, bytes)): + chunks = (to_bytes(body),) + content_length = len(chunks[0]) + + # File-like object, TODO: use seek() and tell() for length? + elif hasattr(body, "read"): + + def chunk_readable() -> typing.Iterable[bytes]: + nonlocal body, blocksize + encode = isinstance(body, io.TextIOBase) + while True: + datablock = body.read(blocksize) + if not datablock: + break + if encode: + datablock = datablock.encode("utf-8") + yield datablock + + chunks = chunk_readable() + content_length = None + + # Otherwise we need to start checking via duck-typing. + else: + try: + # Check if the body implements the buffer API. + mv = memoryview(body) + except TypeError: + try: + # Check if the body is an iterable + chunks = iter(body) + content_length = None + except TypeError: + raise TypeError( + f"'body' must be a bytes-like object, file-like " + f"object, or iterable. Instead was {body!r}" + ) from None + else: + # Since it implements the buffer API can be passed directly to socket.sendall() + chunks = (body,) + content_length = mv.nbytes + + return ChunksAndContentLength(chunks=chunks, content_length=content_length) diff --git a/frogpilot/third_party/urllib3/util/response.py b/frogpilot/third_party/urllib3/util/response.py new file mode 100644 index 000000000..0f4578696 --- /dev/null +++ b/frogpilot/third_party/urllib3/util/response.py @@ -0,0 +1,101 @@ +from __future__ import annotations + +import http.client as httplib +from email.errors import MultipartInvariantViolationDefect, StartBoundaryNotFoundDefect + +from ..exceptions import HeaderParsingError + + +def is_fp_closed(obj: object) -> bool: + """ + Checks whether a given file-like object is closed. + + :param obj: + The file-like object to check. + """ + + try: + # Check `isclosed()` first, in case Python3 doesn't set `closed`. + # GH Issue #928 + return obj.isclosed() # type: ignore[no-any-return, attr-defined] + except AttributeError: + pass + + try: + # Check via the official file-like-object way. + return obj.closed # type: ignore[no-any-return, attr-defined] + except AttributeError: + pass + + try: + # Check if the object is a container for another file-like object that + # gets released on exhaustion (e.g. HTTPResponse). + return obj.fp is None # type: ignore[attr-defined] + except AttributeError: + pass + + raise ValueError("Unable to determine whether fp is closed.") + + +def assert_header_parsing(headers: httplib.HTTPMessage) -> None: + """ + Asserts whether all headers have been successfully parsed. + Extracts encountered errors from the result of parsing headers. + + Only works on Python 3. + + :param http.client.HTTPMessage headers: Headers to verify. + + :raises urllib3.exceptions.HeaderParsingError: + If parsing errors are found. + """ + + # This will fail silently if we pass in the wrong kind of parameter. + # To make debugging easier add an explicit check. + if not isinstance(headers, httplib.HTTPMessage): + raise TypeError(f"expected httplib.Message, got {type(headers)}.") + + unparsed_data = None + + # get_payload is actually email.message.Message.get_payload; + # we're only interested in the result if it's not a multipart message + if not headers.is_multipart(): + payload = headers.get_payload() + + if isinstance(payload, (bytes, str)): + unparsed_data = payload + + # httplib is assuming a response body is available + # when parsing headers even when httplib only sends + # header data to parse_headers() This results in + # defects on multipart responses in particular. + # See: https://github.com/urllib3/urllib3/issues/800 + + # So we ignore the following defects: + # - StartBoundaryNotFoundDefect: + # The claimed start boundary was never found. + # - MultipartInvariantViolationDefect: + # A message claimed to be a multipart but no subparts were found. + defects = [ + defect + for defect in headers.defects + if not isinstance( + defect, (StartBoundaryNotFoundDefect, MultipartInvariantViolationDefect) + ) + ] + + if defects or unparsed_data: + raise HeaderParsingError(defects=defects, unparsed_data=unparsed_data) + + +def is_response_to_head(response: httplib.HTTPResponse) -> bool: + """ + Checks whether the request of a response has been a HEAD-request. + + :param http.client.HTTPResponse response: + Response to check if the originating request + used 'HEAD' as a method. + """ + # FIXME: Can we do this somehow without accessing private httplib _method? + method_str = response._method # type: str # type: ignore[attr-defined] + return method_str.upper() == "HEAD" diff --git a/frogpilot/third_party/urllib3/util/retry.py b/frogpilot/third_party/urllib3/util/retry.py new file mode 100644 index 000000000..0456cceba --- /dev/null +++ b/frogpilot/third_party/urllib3/util/retry.py @@ -0,0 +1,533 @@ +from __future__ import annotations + +import email +import logging +import random +import re +import time +import typing +from itertools import takewhile +from types import TracebackType + +from ..exceptions import ( + ConnectTimeoutError, + InvalidHeader, + MaxRetryError, + ProtocolError, + ProxyError, + ReadTimeoutError, + ResponseError, +) +from .util import reraise + +if typing.TYPE_CHECKING: + from typing_extensions import Self + + from ..connectionpool import ConnectionPool + from ..response import BaseHTTPResponse + +log = logging.getLogger(__name__) + + +# Data structure for representing the metadata of requests that result in a retry. +class RequestHistory(typing.NamedTuple): + method: str | None + url: str | None + error: Exception | None + status: int | None + redirect_location: str | None + + +class Retry: + """Retry configuration. + + Each retry attempt will create a new Retry object with updated values, so + they can be safely reused. + + Retries can be defined as a default for a pool: + + .. code-block:: python + + retries = Retry(connect=5, read=2, redirect=5) + http = PoolManager(retries=retries) + response = http.request("GET", "https://example.com/") + + Or per-request (which overrides the default for the pool): + + .. code-block:: python + + response = http.request("GET", "https://example.com/", retries=Retry(10)) + + Retries can be disabled by passing ``False``: + + .. code-block:: python + + response = http.request("GET", "https://example.com/", retries=False) + + Errors will be wrapped in :class:`~urllib3.exceptions.MaxRetryError` unless + retries are disabled, in which case the causing exception will be raised. + + :param int total: + Total number of retries to allow. Takes precedence over other counts. + + Set to ``None`` to remove this constraint and fall back on other + counts. + + Set to ``0`` to fail on the first retry. + + Set to ``False`` to disable and imply ``raise_on_redirect=False``. + + :param int connect: + How many connection-related errors to retry on. + + These are errors raised before the request is sent to the remote server, + which we assume has not triggered the server to process the request. + + Set to ``0`` to fail on the first retry of this type. + + :param int read: + How many times to retry on read errors. + + These errors are raised after the request was sent to the server, so the + request may have side-effects. + + Set to ``0`` to fail on the first retry of this type. + + :param int redirect: + How many redirects to perform. Limit this to avoid infinite redirect + loops. + + A redirect is a HTTP response with a status code 301, 302, 303, 307 or + 308. + + Set to ``0`` to fail on the first retry of this type. + + Set to ``False`` to disable and imply ``raise_on_redirect=False``. + + :param int status: + How many times to retry on bad status codes. + + These are retries made on responses, where status code matches + ``status_forcelist``. + + Set to ``0`` to fail on the first retry of this type. + + :param int other: + How many times to retry on other errors. + + Other errors are errors that are not connect, read, redirect or status errors. + These errors might be raised after the request was sent to the server, so the + request might have side-effects. + + Set to ``0`` to fail on the first retry of this type. + + If ``total`` is not set, it's a good idea to set this to 0 to account + for unexpected edge cases and avoid infinite retry loops. + + :param Collection allowed_methods: + Set of uppercased HTTP method verbs that we should retry on. + + By default, we only retry on methods which are considered to be + idempotent (multiple requests with the same parameters end with the + same state). See :attr:`Retry.DEFAULT_ALLOWED_METHODS`. + + Set to a ``None`` value to retry on any verb. + + :param Collection status_forcelist: + A set of integer HTTP status codes that we should force a retry on. + A retry is initiated if the request method is in ``allowed_methods`` + and the response status code is in ``status_forcelist``. + + By default, this is disabled with ``None``. + + :param float backoff_factor: + A backoff factor to apply between attempts after the second try + (most errors are resolved immediately by a second try without a + delay). urllib3 will sleep for:: + + {backoff factor} * (2 ** ({number of previous retries})) + + seconds. If `backoff_jitter` is non-zero, this sleep is extended by:: + + random.uniform(0, {backoff jitter}) + + seconds. For example, if the backoff_factor is 0.1, then :func:`Retry.sleep` will + sleep for [0.0s, 0.2s, 0.4s, 0.8s, ...] between retries. No backoff will ever + be longer than `backoff_max`. + + By default, backoff is disabled (factor set to 0). + + :param bool raise_on_redirect: Whether, if the number of redirects is + exhausted, to raise a MaxRetryError, or to return a response with a + response code in the 3xx range. + + :param bool raise_on_status: Similar meaning to ``raise_on_redirect``: + whether we should raise an exception, or return a response, + if status falls in ``status_forcelist`` range and retries have + been exhausted. + + :param tuple history: The history of the request encountered during + each call to :meth:`~Retry.increment`. The list is in the order + the requests occurred. Each list item is of class :class:`RequestHistory`. + + :param bool respect_retry_after_header: + Whether to respect Retry-After header on status codes defined as + :attr:`Retry.RETRY_AFTER_STATUS_CODES` or not. + + :param Collection remove_headers_on_redirect: + Sequence of headers to remove from the request when a response + indicating a redirect is returned before firing off the redirected + request. + """ + + #: Default methods to be used for ``allowed_methods`` + DEFAULT_ALLOWED_METHODS = frozenset( + ["HEAD", "GET", "PUT", "DELETE", "OPTIONS", "TRACE"] + ) + + #: Default status codes to be used for ``status_forcelist`` + RETRY_AFTER_STATUS_CODES = frozenset([413, 429, 503]) + + #: Default headers to be used for ``remove_headers_on_redirect`` + DEFAULT_REMOVE_HEADERS_ON_REDIRECT = frozenset( + ["Cookie", "Authorization", "Proxy-Authorization"] + ) + + #: Default maximum backoff time. + DEFAULT_BACKOFF_MAX = 120 + + # Backward compatibility; assigned outside of the class. + DEFAULT: typing.ClassVar[Retry] + + def __init__( + self, + total: bool | int | None = 10, + connect: int | None = None, + read: int | None = None, + redirect: bool | int | None = None, + status: int | None = None, + other: int | None = None, + allowed_methods: typing.Collection[str] | None = DEFAULT_ALLOWED_METHODS, + status_forcelist: typing.Collection[int] | None = None, + backoff_factor: float = 0, + backoff_max: float = DEFAULT_BACKOFF_MAX, + raise_on_redirect: bool = True, + raise_on_status: bool = True, + history: tuple[RequestHistory, ...] | None = None, + respect_retry_after_header: bool = True, + remove_headers_on_redirect: typing.Collection[ + str + ] = DEFAULT_REMOVE_HEADERS_ON_REDIRECT, + backoff_jitter: float = 0.0, + ) -> None: + self.total = total + self.connect = connect + self.read = read + self.status = status + self.other = other + + if redirect is False or total is False: + redirect = 0 + raise_on_redirect = False + + self.redirect = redirect + self.status_forcelist = status_forcelist or set() + self.allowed_methods = allowed_methods + self.backoff_factor = backoff_factor + self.backoff_max = backoff_max + self.raise_on_redirect = raise_on_redirect + self.raise_on_status = raise_on_status + self.history = history or () + self.respect_retry_after_header = respect_retry_after_header + self.remove_headers_on_redirect = frozenset( + h.lower() for h in remove_headers_on_redirect + ) + self.backoff_jitter = backoff_jitter + + def new(self, **kw: typing.Any) -> Self: + params = dict( + total=self.total, + connect=self.connect, + read=self.read, + redirect=self.redirect, + status=self.status, + other=self.other, + allowed_methods=self.allowed_methods, + status_forcelist=self.status_forcelist, + backoff_factor=self.backoff_factor, + backoff_max=self.backoff_max, + raise_on_redirect=self.raise_on_redirect, + raise_on_status=self.raise_on_status, + history=self.history, + remove_headers_on_redirect=self.remove_headers_on_redirect, + respect_retry_after_header=self.respect_retry_after_header, + backoff_jitter=self.backoff_jitter, + ) + + params.update(kw) + return type(self)(**params) # type: ignore[arg-type] + + @classmethod + def from_int( + cls, + retries: Retry | bool | int | None, + redirect: bool | int | None = True, + default: Retry | bool | int | None = None, + ) -> Retry: + """Backwards-compatibility for the old retries format.""" + if retries is None: + retries = default if default is not None else cls.DEFAULT + + if isinstance(retries, Retry): + return retries + + redirect = bool(redirect) and None + new_retries = cls(retries, redirect=redirect) + log.debug("Converted retries value: %r -> %r", retries, new_retries) + return new_retries + + def get_backoff_time(self) -> float: + """Formula for computing the current backoff + + :rtype: float + """ + # We want to consider only the last consecutive errors sequence (Ignore redirects). + consecutive_errors_len = len( + list( + takewhile(lambda x: x.redirect_location is None, reversed(self.history)) + ) + ) + if consecutive_errors_len <= 1: + return 0 + + backoff_value = self.backoff_factor * (2 ** (consecutive_errors_len - 1)) + if self.backoff_jitter != 0.0: + backoff_value += random.random() * self.backoff_jitter + return float(max(0, min(self.backoff_max, backoff_value))) + + def parse_retry_after(self, retry_after: str) -> float: + seconds: float + # Whitespace: https://tools.ietf.org/html/rfc7230#section-3.2.4 + if re.match(r"^\s*[0-9]+\s*$", retry_after): + seconds = int(retry_after) + else: + retry_date_tuple = email.utils.parsedate_tz(retry_after) + if retry_date_tuple is None: + raise InvalidHeader(f"Invalid Retry-After header: {retry_after}") + + retry_date = email.utils.mktime_tz(retry_date_tuple) + seconds = retry_date - time.time() + + seconds = max(seconds, 0) + + return seconds + + def get_retry_after(self, response: BaseHTTPResponse) -> float | None: + """Get the value of Retry-After in seconds.""" + + retry_after = response.headers.get("Retry-After") + + if retry_after is None: + return None + + return self.parse_retry_after(retry_after) + + def sleep_for_retry(self, response: BaseHTTPResponse) -> bool: + retry_after = self.get_retry_after(response) + if retry_after: + time.sleep(retry_after) + return True + + return False + + def _sleep_backoff(self) -> None: + backoff = self.get_backoff_time() + if backoff <= 0: + return + time.sleep(backoff) + + def sleep(self, response: BaseHTTPResponse | None = None) -> None: + """Sleep between retry attempts. + + This method will respect a server's ``Retry-After`` response header + and sleep the duration of the time requested. If that is not present, it + will use an exponential backoff. By default, the backoff factor is 0 and + this method will return immediately. + """ + + if self.respect_retry_after_header and response: + slept = self.sleep_for_retry(response) + if slept: + return + + self._sleep_backoff() + + def _is_connection_error(self, err: Exception) -> bool: + """Errors when we're fairly sure that the server did not receive the + request, so it should be safe to retry. + """ + if isinstance(err, ProxyError): + err = err.original_error + return isinstance(err, ConnectTimeoutError) + + def _is_read_error(self, err: Exception) -> bool: + """Errors that occur after the request has been started, so we should + assume that the server began processing it. + """ + return isinstance(err, (ReadTimeoutError, ProtocolError)) + + def _is_method_retryable(self, method: str) -> bool: + """Checks if a given HTTP method should be retried upon, depending if + it is included in the allowed_methods + """ + if self.allowed_methods and method.upper() not in self.allowed_methods: + return False + return True + + def is_retry( + self, method: str, status_code: int, has_retry_after: bool = False + ) -> bool: + """Is this method/status code retryable? (Based on allowlists and control + variables such as the number of total retries to allow, whether to + respect the Retry-After header, whether this header is present, and + whether the returned status code is on the list of status codes to + be retried upon on the presence of the aforementioned header) + """ + if not self._is_method_retryable(method): + return False + + if self.status_forcelist and status_code in self.status_forcelist: + return True + + return bool( + self.total + and self.respect_retry_after_header + and has_retry_after + and (status_code in self.RETRY_AFTER_STATUS_CODES) + ) + + def is_exhausted(self) -> bool: + """Are we out of retries?""" + retry_counts = [ + x + for x in ( + self.total, + self.connect, + self.read, + self.redirect, + self.status, + self.other, + ) + if x + ] + if not retry_counts: + return False + + return min(retry_counts) < 0 + + def increment( + self, + method: str | None = None, + url: str | None = None, + response: BaseHTTPResponse | None = None, + error: Exception | None = None, + _pool: ConnectionPool | None = None, + _stacktrace: TracebackType | None = None, + ) -> Self: + """Return a new Retry object with incremented retry counters. + + :param response: A response object, or None, if the server did not + return a response. + :type response: :class:`~urllib3.response.BaseHTTPResponse` + :param Exception error: An error encountered during the request, or + None if the response was received successfully. + + :return: A new ``Retry`` object. + """ + if self.total is False and error: + # Disabled, indicate to re-raise the error. + raise reraise(type(error), error, _stacktrace) + + total = self.total + if total is not None: + total -= 1 + + connect = self.connect + read = self.read + redirect = self.redirect + status_count = self.status + other = self.other + cause = "unknown" + status = None + redirect_location = None + + if error and self._is_connection_error(error): + # Connect retry? + if connect is False: + raise reraise(type(error), error, _stacktrace) + elif connect is not None: + connect -= 1 + + elif error and self._is_read_error(error): + # Read retry? + if read is False or method is None or not self._is_method_retryable(method): + raise reraise(type(error), error, _stacktrace) + elif read is not None: + read -= 1 + + elif error: + # Other retry? + if other is not None: + other -= 1 + + elif response and response.get_redirect_location(): + # Redirect retry? + if redirect is not None: + redirect -= 1 + cause = "too many redirects" + response_redirect_location = response.get_redirect_location() + if response_redirect_location: + redirect_location = response_redirect_location + status = response.status + + else: + # Incrementing because of a server error like a 500 in + # status_forcelist and the given method is in the allowed_methods + cause = ResponseError.GENERIC_ERROR + if response and response.status: + if status_count is not None: + status_count -= 1 + cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) + status = response.status + + history = self.history + ( + RequestHistory(method, url, error, status, redirect_location), + ) + + new_retry = self.new( + total=total, + connect=connect, + read=read, + redirect=redirect, + status=status_count, + other=other, + history=history, + ) + + if new_retry.is_exhausted(): + reason = error or ResponseError(cause) + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + + log.debug("Incremented Retry for (url='%s'): %r", url, new_retry) + + return new_retry + + def __repr__(self) -> str: + return ( + f"{type(self).__name__}(total={self.total}, connect={self.connect}, " + f"read={self.read}, redirect={self.redirect}, status={self.status})" + ) + + +# For backwards compatibility (equivalent to pre-v1.9): +Retry.DEFAULT = Retry(3) diff --git a/frogpilot/third_party/urllib3/util/ssl_.py b/frogpilot/third_party/urllib3/util/ssl_.py new file mode 100644 index 000000000..b2cc1aa7b --- /dev/null +++ b/frogpilot/third_party/urllib3/util/ssl_.py @@ -0,0 +1,524 @@ +from __future__ import annotations + +import hashlib +import hmac +import os +import socket +import sys +import typing +import warnings +from binascii import unhexlify + +from ..exceptions import ProxySchemeUnsupported, SSLError +from .url import _BRACELESS_IPV6_ADDRZ_RE, _IPV4_RE + +SSLContext = None +SSLTransport = None +HAS_NEVER_CHECK_COMMON_NAME = False +IS_PYOPENSSL = False +ALPN_PROTOCOLS = ["http/1.1"] + +_TYPE_VERSION_INFO = tuple[int, int, int, str, int] + +# Maps the length of a digest to a possible hash function producing this digest +HASHFUNC_MAP = { + length: getattr(hashlib, algorithm, None) + for length, algorithm in ((32, "md5"), (40, "sha1"), (64, "sha256")) +} + + +def _is_bpo_43522_fixed( + implementation_name: str, + version_info: _TYPE_VERSION_INFO, + pypy_version_info: _TYPE_VERSION_INFO | None, +) -> bool: + """Return True for CPython 3.9.3+ or 3.10+ and PyPy 7.3.8+ where + setting SSLContext.hostname_checks_common_name to False works. + + Outside of CPython and PyPy we don't know which implementations work + or not so we conservatively use our hostname matching as we know that works + on all implementations. + + https://github.com/urllib3/urllib3/issues/2192#issuecomment-821832963 + https://foss.heptapod.net/pypy/pypy/-/issues/3539 + """ + if implementation_name == "pypy": + # https://foss.heptapod.net/pypy/pypy/-/issues/3129 + return pypy_version_info >= (7, 3, 8) # type: ignore[operator] + elif implementation_name == "cpython": + major_minor = version_info[:2] + micro = version_info[2] + return (major_minor == (3, 9) and micro >= 3) or major_minor >= (3, 10) + else: # Defensive: + return False + + +def _is_has_never_check_common_name_reliable( + openssl_version: str, + openssl_version_number: int, + implementation_name: str, + version_info: _TYPE_VERSION_INFO, + pypy_version_info: _TYPE_VERSION_INFO | None, +) -> bool: + # As of May 2023, all released versions of LibreSSL fail to reject certificates with + # only common names, see https://github.com/urllib3/urllib3/pull/3024 + is_openssl = openssl_version.startswith("OpenSSL ") + # Before fixing OpenSSL issue #14579, the SSL_new() API was not copying hostflags + # like X509_CHECK_FLAG_NEVER_CHECK_SUBJECT, which tripped up CPython. + # https://github.com/openssl/openssl/issues/14579 + # This was released in OpenSSL 1.1.1l+ (>=0x101010cf) + is_openssl_issue_14579_fixed = openssl_version_number >= 0x101010CF + + return is_openssl and ( + is_openssl_issue_14579_fixed + or _is_bpo_43522_fixed(implementation_name, version_info, pypy_version_info) + ) + + +if typing.TYPE_CHECKING: + from ssl import VerifyMode + from typing import TypedDict + + from .ssltransport import SSLTransport as SSLTransportType + + class _TYPE_PEER_CERT_RET_DICT(TypedDict, total=False): + subjectAltName: tuple[tuple[str, str], ...] + subject: tuple[tuple[tuple[str, str], ...], ...] + serialNumber: str + + +# Mapping from 'ssl.PROTOCOL_TLSX' to 'TLSVersion.X' +_SSL_VERSION_TO_TLS_VERSION: dict[int, int] = {} + +try: # Do we have ssl at all? + import ssl + from ssl import ( # type: ignore[assignment] + CERT_REQUIRED, + HAS_NEVER_CHECK_COMMON_NAME, + OP_NO_COMPRESSION, + OP_NO_TICKET, + OPENSSL_VERSION, + OPENSSL_VERSION_NUMBER, + PROTOCOL_TLS, + PROTOCOL_TLS_CLIENT, + VERIFY_X509_STRICT, + OP_NO_SSLv2, + OP_NO_SSLv3, + SSLContext, + TLSVersion, + ) + + PROTOCOL_SSLv23 = PROTOCOL_TLS + + # Needed for Python 3.9 which does not define this + VERIFY_X509_PARTIAL_CHAIN = getattr(ssl, "VERIFY_X509_PARTIAL_CHAIN", 0x80000) + + # Setting SSLContext.hostname_checks_common_name = False didn't work before CPython + # 3.9.3, and 3.10 (but OK on PyPy) or OpenSSL 1.1.1l+ + if HAS_NEVER_CHECK_COMMON_NAME and not _is_has_never_check_common_name_reliable( + OPENSSL_VERSION, + OPENSSL_VERSION_NUMBER, + sys.implementation.name, + sys.version_info, + sys.pypy_version_info if sys.implementation.name == "pypy" else None, # type: ignore[attr-defined] + ): # Defensive: for Python < 3.9.3 + HAS_NEVER_CHECK_COMMON_NAME = False + + # Need to be careful here in case old TLS versions get + # removed in future 'ssl' module implementations. + for attr in ("TLSv1", "TLSv1_1", "TLSv1_2"): + try: + _SSL_VERSION_TO_TLS_VERSION[getattr(ssl, f"PROTOCOL_{attr}")] = getattr( + TLSVersion, attr + ) + except AttributeError: # Defensive: + continue + + from .ssltransport import SSLTransport # type: ignore[assignment] +except ImportError: + OP_NO_COMPRESSION = 0x20000 # type: ignore[assignment] + OP_NO_TICKET = 0x4000 # type: ignore[assignment] + OP_NO_SSLv2 = 0x1000000 # type: ignore[assignment] + OP_NO_SSLv3 = 0x2000000 # type: ignore[assignment] + PROTOCOL_SSLv23 = PROTOCOL_TLS = 2 # type: ignore[assignment] + PROTOCOL_TLS_CLIENT = 16 # type: ignore[assignment] + VERIFY_X509_PARTIAL_CHAIN = 0x80000 + VERIFY_X509_STRICT = 0x20 # type: ignore[assignment] + + +_TYPE_PEER_CERT_RET = typing.Union["_TYPE_PEER_CERT_RET_DICT", bytes, None] + + +def assert_fingerprint(cert: bytes | None, fingerprint: str) -> None: + """ + Checks if given fingerprint matches the supplied certificate. + + :param cert: + Certificate as bytes object. + :param fingerprint: + Fingerprint as string of hexdigits, can be interspersed by colons. + """ + + if cert is None: + raise SSLError("No certificate for the peer.") + + fingerprint = fingerprint.replace(":", "").lower() + digest_length = len(fingerprint) + if digest_length not in HASHFUNC_MAP: + raise SSLError(f"Fingerprint of invalid length: {fingerprint}") + hashfunc = HASHFUNC_MAP.get(digest_length) + if hashfunc is None: + raise SSLError( + f"Hash function implementation unavailable for fingerprint length: {digest_length}" + ) + + # We need encode() here for py32; works on py2 and p33. + fingerprint_bytes = unhexlify(fingerprint.encode()) + + cert_digest = hashfunc(cert).digest() + + if not hmac.compare_digest(cert_digest, fingerprint_bytes): + raise SSLError( + f'Fingerprints did not match. Expected "{fingerprint}", got "{cert_digest.hex()}"' + ) + + +def resolve_cert_reqs(candidate: None | int | str) -> VerifyMode: + """ + Resolves the argument to a numeric constant, which can be passed to + the wrap_socket function/method from the ssl module. + Defaults to :data:`ssl.CERT_REQUIRED`. + If given a string it is assumed to be the name of the constant in the + :mod:`ssl` module or its abbreviation. + (So you can specify `REQUIRED` instead of `CERT_REQUIRED`. + If it's neither `None` nor a string we assume it is already the numeric + constant which can directly be passed to wrap_socket. + """ + if candidate is None: + return CERT_REQUIRED + + if isinstance(candidate, str): + res = getattr(ssl, candidate, None) + if res is None: + res = getattr(ssl, "CERT_" + candidate) + return res # type: ignore[no-any-return] + + return candidate # type: ignore[return-value] + + +def resolve_ssl_version(candidate: None | int | str) -> int: + """ + like resolve_cert_reqs + """ + if candidate is None: + return PROTOCOL_TLS + + if isinstance(candidate, str): + res = getattr(ssl, candidate, None) + if res is None: + res = getattr(ssl, "PROTOCOL_" + candidate) + return typing.cast(int, res) + + return candidate + + +def create_urllib3_context( + ssl_version: int | None = None, + cert_reqs: int | None = None, + options: int | None = None, + ciphers: str | None = None, + ssl_minimum_version: int | None = None, + ssl_maximum_version: int | None = None, + verify_flags: int | None = None, +) -> ssl.SSLContext: + """Creates and configures an :class:`ssl.SSLContext` instance for use with urllib3. + + :param ssl_version: + The desired protocol version to use. This will default to + PROTOCOL_SSLv23 which will negotiate the highest protocol that both + the server and your installation of OpenSSL support. + + This parameter is deprecated instead use 'ssl_minimum_version'. + :param ssl_minimum_version: + The minimum version of TLS to be used. Use the 'ssl.TLSVersion' enum for specifying the value. + :param ssl_maximum_version: + The maximum version of TLS to be used. Use the 'ssl.TLSVersion' enum for specifying the value. + Not recommended to set to anything other than 'ssl.TLSVersion.MAXIMUM_SUPPORTED' which is the + default value. + :param cert_reqs: + Whether to require the certificate verification. This defaults to + ``ssl.CERT_REQUIRED``. + :param options: + Specific OpenSSL options. These default to ``ssl.OP_NO_SSLv2``, + ``ssl.OP_NO_SSLv3``, ``ssl.OP_NO_COMPRESSION``, and ``ssl.OP_NO_TICKET``. + :param ciphers: + Which cipher suites to allow the server to select. Defaults to either system configured + ciphers if OpenSSL 1.1.1+, otherwise uses a secure default set of ciphers. + :param verify_flags: + The flags for certificate verification operations. These default to + ``ssl.VERIFY_X509_PARTIAL_CHAIN`` and ``ssl.VERIFY_X509_STRICT`` for Python 3.13+. + :returns: + Constructed SSLContext object with specified options + :rtype: SSLContext + """ + if SSLContext is None: + raise TypeError("Can't create an SSLContext object without an ssl module") + + # This means 'ssl_version' was specified as an exact value. + if ssl_version not in (None, PROTOCOL_TLS, PROTOCOL_TLS_CLIENT): + # Disallow setting 'ssl_version' and 'ssl_minimum|maximum_version' + # to avoid conflicts. + if ssl_minimum_version is not None or ssl_maximum_version is not None: + raise ValueError( + "Can't specify both 'ssl_version' and either " + "'ssl_minimum_version' or 'ssl_maximum_version'" + ) + + # 'ssl_version' is deprecated and will be removed in the future. + else: + # Use 'ssl_minimum_version' and 'ssl_maximum_version' instead. + ssl_minimum_version = _SSL_VERSION_TO_TLS_VERSION.get( + ssl_version, TLSVersion.MINIMUM_SUPPORTED + ) + ssl_maximum_version = _SSL_VERSION_TO_TLS_VERSION.get( + ssl_version, TLSVersion.MAXIMUM_SUPPORTED + ) + + # This warning message is pushing users to use 'ssl_minimum_version' + # instead of both min/max. Best practice is to only set the minimum version and + # keep the maximum version to be it's default value: 'TLSVersion.MAXIMUM_SUPPORTED' + warnings.warn( + "'ssl_version' option is deprecated and will be " + "removed in urllib3 v2.6.0. Instead use 'ssl_minimum_version'", + category=DeprecationWarning, + stacklevel=2, + ) + + # PROTOCOL_TLS is deprecated in Python 3.10 so we always use PROTOCOL_TLS_CLIENT + context = SSLContext(PROTOCOL_TLS_CLIENT) + + if ssl_minimum_version is not None: + context.minimum_version = ssl_minimum_version + else: # Python <3.10 defaults to 'MINIMUM_SUPPORTED' so explicitly set TLSv1.2 here + context.minimum_version = TLSVersion.TLSv1_2 + + if ssl_maximum_version is not None: + context.maximum_version = ssl_maximum_version + + # Unless we're given ciphers defer to either system ciphers in + # the case of OpenSSL 1.1.1+ or use our own secure default ciphers. + if ciphers: + context.set_ciphers(ciphers) + + # Setting the default here, as we may have no ssl module on import + cert_reqs = ssl.CERT_REQUIRED if cert_reqs is None else cert_reqs + + if options is None: + options = 0 + # SSLv2 is easily broken and is considered harmful and dangerous + options |= OP_NO_SSLv2 + # SSLv3 has several problems and is now dangerous + options |= OP_NO_SSLv3 + # Disable compression to prevent CRIME attacks for OpenSSL 1.0+ + # (issue #309) + options |= OP_NO_COMPRESSION + # TLSv1.2 only. Unless set explicitly, do not request tickets. + # This may save some bandwidth on wire, and although the ticket is encrypted, + # there is a risk associated with it being on wire, + # if the server is not rotating its ticketing keys properly. + options |= OP_NO_TICKET + + context.options |= options + + if verify_flags is None: + verify_flags = 0 + # In Python 3.13+ ssl.create_default_context() sets VERIFY_X509_PARTIAL_CHAIN + # and VERIFY_X509_STRICT so we do the same + if sys.version_info >= (3, 13): + verify_flags |= VERIFY_X509_PARTIAL_CHAIN + verify_flags |= VERIFY_X509_STRICT + + context.verify_flags |= verify_flags + + # Enable post-handshake authentication for TLS 1.3, see GH #1634. PHA is + # necessary for conditional client cert authentication with TLS 1.3. + # The attribute is None for OpenSSL <= 1.1.0 or does not exist when using + # an SSLContext created by pyOpenSSL. + if getattr(context, "post_handshake_auth", None) is not None: + context.post_handshake_auth = True + + # The order of the below lines setting verify_mode and check_hostname + # matter due to safe-guards SSLContext has to prevent an SSLContext with + # check_hostname=True, verify_mode=NONE/OPTIONAL. + # We always set 'check_hostname=False' for pyOpenSSL so we rely on our own + # 'ssl.match_hostname()' implementation. + if cert_reqs == ssl.CERT_REQUIRED and not IS_PYOPENSSL: + context.verify_mode = cert_reqs + context.check_hostname = True + else: + context.check_hostname = False + context.verify_mode = cert_reqs + + try: + context.hostname_checks_common_name = False + except AttributeError: # Defensive: for CPython < 3.9.3; for PyPy < 7.3.8 + pass + + sslkeylogfile = os.environ.get("SSLKEYLOGFILE") + if sslkeylogfile: + context.keylog_filename = sslkeylogfile + + return context + + +@typing.overload +def ssl_wrap_socket( + sock: socket.socket, + keyfile: str | None = ..., + certfile: str | None = ..., + cert_reqs: int | None = ..., + ca_certs: str | None = ..., + server_hostname: str | None = ..., + ssl_version: int | None = ..., + ciphers: str | None = ..., + ssl_context: ssl.SSLContext | None = ..., + ca_cert_dir: str | None = ..., + key_password: str | None = ..., + ca_cert_data: None | str | bytes = ..., + tls_in_tls: typing.Literal[False] = ..., +) -> ssl.SSLSocket: ... + + +@typing.overload +def ssl_wrap_socket( + sock: socket.socket, + keyfile: str | None = ..., + certfile: str | None = ..., + cert_reqs: int | None = ..., + ca_certs: str | None = ..., + server_hostname: str | None = ..., + ssl_version: int | None = ..., + ciphers: str | None = ..., + ssl_context: ssl.SSLContext | None = ..., + ca_cert_dir: str | None = ..., + key_password: str | None = ..., + ca_cert_data: None | str | bytes = ..., + tls_in_tls: bool = ..., +) -> ssl.SSLSocket | SSLTransportType: ... + + +def ssl_wrap_socket( + sock: socket.socket, + keyfile: str | None = None, + certfile: str | None = None, + cert_reqs: int | None = None, + ca_certs: str | None = None, + server_hostname: str | None = None, + ssl_version: int | None = None, + ciphers: str | None = None, + ssl_context: ssl.SSLContext | None = None, + ca_cert_dir: str | None = None, + key_password: str | None = None, + ca_cert_data: None | str | bytes = None, + tls_in_tls: bool = False, +) -> ssl.SSLSocket | SSLTransportType: + """ + All arguments except for server_hostname, ssl_context, tls_in_tls, ca_cert_data and + ca_cert_dir have the same meaning as they do when using + :func:`ssl.create_default_context`, :meth:`ssl.SSLContext.load_cert_chain`, + :meth:`ssl.SSLContext.set_ciphers` and :meth:`ssl.SSLContext.wrap_socket`. + + :param server_hostname: + When SNI is supported, the expected hostname of the certificate + :param ssl_context: + A pre-made :class:`SSLContext` object. If none is provided, one will + be created using :func:`create_urllib3_context`. + :param ciphers: + A string of ciphers we wish the client to support. + :param ca_cert_dir: + A directory containing CA certificates in multiple separate files, as + supported by OpenSSL's -CApath flag or the capath argument to + SSLContext.load_verify_locations(). + :param key_password: + Optional password if the keyfile is encrypted. + :param ca_cert_data: + Optional string containing CA certificates in PEM format suitable for + passing as the cadata parameter to SSLContext.load_verify_locations() + :param tls_in_tls: + Use SSLTransport to wrap the existing socket. + """ + context = ssl_context + if context is None: + # Note: This branch of code and all the variables in it are only used in tests. + # We should consider deprecating and removing this code. + context = create_urllib3_context(ssl_version, cert_reqs, ciphers=ciphers) + + if ca_certs or ca_cert_dir or ca_cert_data: + try: + context.load_verify_locations(ca_certs, ca_cert_dir, ca_cert_data) + except OSError as e: + raise SSLError(e) from e + + elif ssl_context is None and hasattr(context, "load_default_certs"): + # try to load OS default certs; works well on Windows. + context.load_default_certs() + + # Attempt to detect if we get the goofy behavior of the + # keyfile being encrypted and OpenSSL asking for the + # passphrase via the terminal and instead error out. + if keyfile and key_password is None and _is_key_file_encrypted(keyfile): + raise SSLError("Client private key is encrypted, password is required") + + if certfile: + if key_password is None: + context.load_cert_chain(certfile, keyfile) + else: + context.load_cert_chain(certfile, keyfile, key_password) + + context.set_alpn_protocols(ALPN_PROTOCOLS) + + ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname) + return ssl_sock + + +def is_ipaddress(hostname: str | bytes) -> bool: + """Detects whether the hostname given is an IPv4 or IPv6 address. + Also detects IPv6 addresses with Zone IDs. + + :param str hostname: Hostname to examine. + :return: True if the hostname is an IP address, False otherwise. + """ + if isinstance(hostname, bytes): + # IDN A-label bytes are ASCII compatible. + hostname = hostname.decode("ascii") + return bool(_IPV4_RE.match(hostname) or _BRACELESS_IPV6_ADDRZ_RE.match(hostname)) + + +def _is_key_file_encrypted(key_file: str) -> bool: + """Detects if a key file is encrypted or not.""" + with open(key_file) as f: + for line in f: + # Look for Proc-Type: 4,ENCRYPTED + if "ENCRYPTED" in line: + return True + + return False + + +def _ssl_wrap_socket_impl( + sock: socket.socket, + ssl_context: ssl.SSLContext, + tls_in_tls: bool, + server_hostname: str | None = None, +) -> ssl.SSLSocket | SSLTransportType: + if tls_in_tls: + if not SSLTransport: + # Import error, ssl is not available. + raise ProxySchemeUnsupported( + "TLS in TLS requires support for the 'ssl' module" + ) + + SSLTransport._validate_ssl_context_for_tls_in_tls(ssl_context) + return SSLTransport(sock, ssl_context, server_hostname) + + return ssl_context.wrap_socket(sock, server_hostname=server_hostname) diff --git a/frogpilot/third_party/urllib3/util/ssl_match_hostname.py b/frogpilot/third_party/urllib3/util/ssl_match_hostname.py new file mode 100644 index 000000000..25d910004 --- /dev/null +++ b/frogpilot/third_party/urllib3/util/ssl_match_hostname.py @@ -0,0 +1,159 @@ +"""The match_hostname() function from Python 3.5, essential when using SSL.""" + +# Note: This file is under the PSF license as the code comes from the python +# stdlib. http://docs.python.org/3/license.html +# It is modified to remove commonName support. + +from __future__ import annotations + +import ipaddress +import re +import typing +from ipaddress import IPv4Address, IPv6Address + +if typing.TYPE_CHECKING: + from .ssl_ import _TYPE_PEER_CERT_RET_DICT + +__version__ = "3.5.0.1" + + +class CertificateError(ValueError): + pass + + +def _dnsname_match( + dn: typing.Any, hostname: str, max_wildcards: int = 1 +) -> typing.Match[str] | None | bool: + """Matching according to RFC 6125, section 6.4.3 + + http://tools.ietf.org/html/rfc6125#section-6.4.3 + """ + pats = [] + if not dn: + return False + + # Ported from python3-syntax: + # leftmost, *remainder = dn.split(r'.') + parts = dn.split(r".") + leftmost = parts[0] + remainder = parts[1:] + + wildcards = leftmost.count("*") + if wildcards > max_wildcards: + # Issue #17980: avoid denials of service by refusing more + # than one wildcard per fragment. A survey of established + # policy among SSL implementations showed it to be a + # reasonable choice. + raise CertificateError( + "too many wildcards in certificate DNS name: " + repr(dn) + ) + + # speed up common case w/o wildcards + if not wildcards: + return bool(dn.lower() == hostname.lower()) + + # RFC 6125, section 6.4.3, subitem 1. + # The client SHOULD NOT attempt to match a presented identifier in which + # the wildcard character comprises a label other than the left-most label. + if leftmost == "*": + # When '*' is a fragment by itself, it matches a non-empty dotless + # fragment. + pats.append("[^.]+") + elif leftmost.startswith("xn--") or hostname.startswith("xn--"): + # RFC 6125, section 6.4.3, subitem 3. + # The client SHOULD NOT attempt to match a presented identifier + # where the wildcard character is embedded within an A-label or + # U-label of an internationalized domain name. + pats.append(re.escape(leftmost)) + else: + # Otherwise, '*' matches any dotless string, e.g. www* + pats.append(re.escape(leftmost).replace(r"\*", "[^.]*")) + + # add the remaining fragments, ignore any wildcards + for frag in remainder: + pats.append(re.escape(frag)) + + pat = re.compile(r"\A" + r"\.".join(pats) + r"\Z", re.IGNORECASE) + return pat.match(hostname) + + +def _ipaddress_match(ipname: str, host_ip: IPv4Address | IPv6Address) -> bool: + """Exact matching of IP addresses. + + RFC 9110 section 4.3.5: "A reference identity of IP-ID contains the decoded + bytes of the IP address. An IP version 4 address is 4 octets, and an IP + version 6 address is 16 octets. [...] A reference identity of type IP-ID + matches if the address is identical to an iPAddress value of the + subjectAltName extension of the certificate." + """ + # OpenSSL may add a trailing newline to a subjectAltName's IP address + # Divergence from upstream: ipaddress can't handle byte str + ip = ipaddress.ip_address(ipname.rstrip()) + return bool(ip.packed == host_ip.packed) + + +def match_hostname( + cert: _TYPE_PEER_CERT_RET_DICT | None, + hostname: str, + hostname_checks_common_name: bool = False, +) -> None: + """Verify that *cert* (in decoded format as returned by + SSLSocket.getpeercert()) matches the *hostname*. RFC 2818 and RFC 6125 + rules are followed, but IP addresses are not accepted for *hostname*. + + CertificateError is raised on failure. On success, the function + returns nothing. + """ + if not cert: + raise ValueError( + "empty or no certificate, match_hostname needs a " + "SSL socket or SSL context with either " + "CERT_OPTIONAL or CERT_REQUIRED" + ) + try: + # Divergence from upstream: ipaddress can't handle byte str + # + # The ipaddress module shipped with Python < 3.9 does not support + # scoped IPv6 addresses so we unconditionally strip the Zone IDs for + # now. Once we drop support for Python 3.9 we can remove this branch. + if "%" in hostname: + host_ip = ipaddress.ip_address(hostname[: hostname.rfind("%")]) + else: + host_ip = ipaddress.ip_address(hostname) + + except ValueError: + # Not an IP address (common case) + host_ip = None + dnsnames = [] + san: tuple[tuple[str, str], ...] = cert.get("subjectAltName", ()) + key: str + value: str + for key, value in san: + if key == "DNS": + if host_ip is None and _dnsname_match(value, hostname): + return + dnsnames.append(value) + elif key == "IP Address": + if host_ip is not None and _ipaddress_match(value, host_ip): + return + dnsnames.append(value) + + # We only check 'commonName' if it's enabled and we're not verifying + # an IP address. IP addresses aren't valid within 'commonName'. + if hostname_checks_common_name and host_ip is None and not dnsnames: + for sub in cert.get("subject", ()): + for key, value in sub: + if key == "commonName": + if _dnsname_match(value, hostname): + return + dnsnames.append(value) # Defensive: for Python < 3.9.3 + + if len(dnsnames) > 1: + raise CertificateError( + "hostname %r " + "doesn't match either of %s" % (hostname, ", ".join(map(repr, dnsnames))) + ) + elif len(dnsnames) == 1: + raise CertificateError(f"hostname {hostname!r} doesn't match {dnsnames[0]!r}") + else: + raise CertificateError("no appropriate subjectAltName fields were found") diff --git a/frogpilot/third_party/urllib3/util/ssltransport.py b/frogpilot/third_party/urllib3/util/ssltransport.py new file mode 100644 index 000000000..6d59bc3bc --- /dev/null +++ b/frogpilot/third_party/urllib3/util/ssltransport.py @@ -0,0 +1,271 @@ +from __future__ import annotations + +import io +import socket +import ssl +import typing + +from ..exceptions import ProxySchemeUnsupported + +if typing.TYPE_CHECKING: + from typing_extensions import Self + + from .ssl_ import _TYPE_PEER_CERT_RET, _TYPE_PEER_CERT_RET_DICT + + +_WriteBuffer = typing.Union[bytearray, memoryview] +_ReturnValue = typing.TypeVar("_ReturnValue") + +SSL_BLOCKSIZE = 16384 + + +class SSLTransport: + """ + The SSLTransport wraps an existing socket and establishes an SSL connection. + + Contrary to Python's implementation of SSLSocket, it allows you to chain + multiple TLS connections together. It's particularly useful if you need to + implement TLS within TLS. + + The class supports most of the socket API operations. + """ + + @staticmethod + def _validate_ssl_context_for_tls_in_tls(ssl_context: ssl.SSLContext) -> None: + """ + Raises a ProxySchemeUnsupported if the provided ssl_context can't be used + for TLS in TLS. + + The only requirement is that the ssl_context provides the 'wrap_bio' + methods. + """ + + if not hasattr(ssl_context, "wrap_bio"): + raise ProxySchemeUnsupported( + "TLS in TLS requires SSLContext.wrap_bio() which isn't " + "available on non-native SSLContext" + ) + + def __init__( + self, + socket: socket.socket, + ssl_context: ssl.SSLContext, + server_hostname: str | None = None, + suppress_ragged_eofs: bool = True, + ) -> None: + """ + Create an SSLTransport around socket using the provided ssl_context. + """ + self.incoming = ssl.MemoryBIO() + self.outgoing = ssl.MemoryBIO() + + self.suppress_ragged_eofs = suppress_ragged_eofs + self.socket = socket + + self.sslobj = ssl_context.wrap_bio( + self.incoming, self.outgoing, server_hostname=server_hostname + ) + + # Perform initial handshake. + self._ssl_io_loop(self.sslobj.do_handshake) + + def __enter__(self) -> Self: + return self + + def __exit__(self, *_: typing.Any) -> None: + self.close() + + def fileno(self) -> int: + return self.socket.fileno() + + def read(self, len: int = 1024, buffer: typing.Any | None = None) -> int | bytes: + return self._wrap_ssl_read(len, buffer) + + def recv(self, buflen: int = 1024, flags: int = 0) -> int | bytes: + if flags != 0: + raise ValueError("non-zero flags not allowed in calls to recv") + return self._wrap_ssl_read(buflen) + + def recv_into( + self, + buffer: _WriteBuffer, + nbytes: int | None = None, + flags: int = 0, + ) -> None | int | bytes: + if flags != 0: + raise ValueError("non-zero flags not allowed in calls to recv_into") + if nbytes is None: + nbytes = len(buffer) + return self.read(nbytes, buffer) + + def sendall(self, data: bytes, flags: int = 0) -> None: + if flags != 0: + raise ValueError("non-zero flags not allowed in calls to sendall") + count = 0 + with memoryview(data) as view, view.cast("B") as byte_view: + amount = len(byte_view) + while count < amount: + v = self.send(byte_view[count:]) + count += v + + def send(self, data: bytes, flags: int = 0) -> int: + if flags != 0: + raise ValueError("non-zero flags not allowed in calls to send") + return self._ssl_io_loop(self.sslobj.write, data) + + def makefile( + self, + mode: str, + buffering: int | None = None, + *, + encoding: str | None = None, + errors: str | None = None, + newline: str | None = None, + ) -> typing.BinaryIO | typing.TextIO | socket.SocketIO: + """ + Python's httpclient uses makefile and buffered io when reading HTTP + messages and we need to support it. + + This is unfortunately a copy and paste of socket.py makefile with small + changes to point to the socket directly. + """ + if not set(mode) <= {"r", "w", "b"}: + raise ValueError(f"invalid mode {mode!r} (only r, w, b allowed)") + + writing = "w" in mode + reading = "r" in mode or not writing + assert reading or writing + binary = "b" in mode + rawmode = "" + if reading: + rawmode += "r" + if writing: + rawmode += "w" + raw = socket.SocketIO(self, rawmode) # type: ignore[arg-type] + self.socket._io_refs += 1 # type: ignore[attr-defined] + if buffering is None: + buffering = -1 + if buffering < 0: + buffering = io.DEFAULT_BUFFER_SIZE + if buffering == 0: + if not binary: + raise ValueError("unbuffered streams must be binary") + return raw + buffer: typing.BinaryIO + if reading and writing: + buffer = io.BufferedRWPair(raw, raw, buffering) # type: ignore[assignment] + elif reading: + buffer = io.BufferedReader(raw, buffering) + else: + assert writing + buffer = io.BufferedWriter(raw, buffering) + if binary: + return buffer + text = io.TextIOWrapper(buffer, encoding, errors, newline) + text.mode = mode # type: ignore[misc] + return text + + def unwrap(self) -> None: + self._ssl_io_loop(self.sslobj.unwrap) + + def close(self) -> None: + self.socket.close() + + @typing.overload + def getpeercert( + self, binary_form: typing.Literal[False] = ... + ) -> _TYPE_PEER_CERT_RET_DICT | None: ... + + @typing.overload + def getpeercert(self, binary_form: typing.Literal[True]) -> bytes | None: ... + + def getpeercert(self, binary_form: bool = False) -> _TYPE_PEER_CERT_RET: + return self.sslobj.getpeercert(binary_form) # type: ignore[return-value] + + def version(self) -> str | None: + return self.sslobj.version() + + def cipher(self) -> tuple[str, str, int] | None: + return self.sslobj.cipher() + + def selected_alpn_protocol(self) -> str | None: + return self.sslobj.selected_alpn_protocol() + + def shared_ciphers(self) -> list[tuple[str, str, int]] | None: + return self.sslobj.shared_ciphers() + + def compression(self) -> str | None: + return self.sslobj.compression() + + def settimeout(self, value: float | None) -> None: + self.socket.settimeout(value) + + def gettimeout(self) -> float | None: + return self.socket.gettimeout() + + def _decref_socketios(self) -> None: + self.socket._decref_socketios() # type: ignore[attr-defined] + + def _wrap_ssl_read(self, len: int, buffer: bytearray | None = None) -> int | bytes: + try: + return self._ssl_io_loop(self.sslobj.read, len, buffer) + except ssl.SSLError as e: + if e.errno == ssl.SSL_ERROR_EOF and self.suppress_ragged_eofs: + return 0 # eof, return 0. + else: + raise + + # func is sslobj.do_handshake or sslobj.unwrap + @typing.overload + def _ssl_io_loop(self, func: typing.Callable[[], None]) -> None: ... + + # func is sslobj.write, arg1 is data + @typing.overload + def _ssl_io_loop(self, func: typing.Callable[[bytes], int], arg1: bytes) -> int: ... + + # func is sslobj.read, arg1 is len, arg2 is buffer + @typing.overload + def _ssl_io_loop( + self, + func: typing.Callable[[int, bytearray | None], bytes], + arg1: int, + arg2: bytearray | None, + ) -> bytes: ... + + def _ssl_io_loop( + self, + func: typing.Callable[..., _ReturnValue], + arg1: None | bytes | int = None, + arg2: bytearray | None = None, + ) -> _ReturnValue: + """Performs an I/O loop between incoming/outgoing and the socket.""" + should_loop = True + ret = None + + while should_loop: + errno = None + try: + if arg1 is None and arg2 is None: + ret = func() + elif arg2 is None: + ret = func(arg1) + else: + ret = func(arg1, arg2) + except ssl.SSLError as e: + if e.errno not in (ssl.SSL_ERROR_WANT_READ, ssl.SSL_ERROR_WANT_WRITE): + # WANT_READ, and WANT_WRITE are expected, others are not. + raise e + errno = e.errno + + buf = self.outgoing.read() + self.socket.sendall(buf) + + if errno is None: + should_loop = False + elif errno == ssl.SSL_ERROR_WANT_READ: + buf = self.socket.recv(SSL_BLOCKSIZE) + if buf: + self.incoming.write(buf) + else: + self.incoming.write_eof() + return typing.cast(_ReturnValue, ret) diff --git a/frogpilot/third_party/urllib3/util/timeout.py b/frogpilot/third_party/urllib3/util/timeout.py new file mode 100644 index 000000000..4bb1be11d --- /dev/null +++ b/frogpilot/third_party/urllib3/util/timeout.py @@ -0,0 +1,275 @@ +from __future__ import annotations + +import time +import typing +from enum import Enum +from socket import getdefaulttimeout + +from ..exceptions import TimeoutStateError + +if typing.TYPE_CHECKING: + from typing import Final + + +class _TYPE_DEFAULT(Enum): + # This value should never be passed to socket.settimeout() so for safety we use a -1. + # socket.settimout() raises a ValueError for negative values. + token = -1 + + +_DEFAULT_TIMEOUT: Final[_TYPE_DEFAULT] = _TYPE_DEFAULT.token + +_TYPE_TIMEOUT = typing.Optional[typing.Union[float, _TYPE_DEFAULT]] + + +class Timeout: + """Timeout configuration. + + Timeouts can be defined as a default for a pool: + + .. code-block:: python + + import urllib3 + + timeout = urllib3.util.Timeout(connect=2.0, read=7.0) + + http = urllib3.PoolManager(timeout=timeout) + + resp = http.request("GET", "https://example.com/") + + print(resp.status) + + Or per-request (which overrides the default for the pool): + + .. code-block:: python + + response = http.request("GET", "https://example.com/", timeout=Timeout(10)) + + Timeouts can be disabled by setting all the parameters to ``None``: + + .. code-block:: python + + no_timeout = Timeout(connect=None, read=None) + response = http.request("GET", "https://example.com/", timeout=no_timeout) + + + :param total: + This combines the connect and read timeouts into one; the read timeout + will be set to the time leftover from the connect attempt. In the + event that both a connect timeout and a total are specified, or a read + timeout and a total are specified, the shorter timeout will be applied. + + Defaults to None. + + :type total: int, float, or None + + :param connect: + The maximum amount of time (in seconds) to wait for a connection + attempt to a server to succeed. Omitting the parameter will default the + connect timeout to the system default, probably `the global default + timeout in socket.py + `_. + None will set an infinite timeout for connection attempts. + + :type connect: int, float, or None + + :param read: + The maximum amount of time (in seconds) to wait between consecutive + read operations for a response from the server. Omitting the parameter + will default the read timeout to the system default, probably `the + global default timeout in socket.py + `_. + None will set an infinite timeout. + + :type read: int, float, or None + + .. note:: + + Many factors can affect the total amount of time for urllib3 to return + an HTTP response. + + For example, Python's DNS resolver does not obey the timeout specified + on the socket. Other factors that can affect total request time include + high CPU load, high swap, the program running at a low priority level, + or other behaviors. + + In addition, the read and total timeouts only measure the time between + read operations on the socket connecting the client and the server, + not the total amount of time for the request to return a complete + response. For most requests, the timeout is raised because the server + has not sent the first byte in the specified time. This is not always + the case; if a server streams one byte every fifteen seconds, a timeout + of 20 seconds will not trigger, even though the request will take + several minutes to complete. + """ + + #: A sentinel object representing the default timeout value + DEFAULT_TIMEOUT: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT + + def __init__( + self, + total: _TYPE_TIMEOUT = None, + connect: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, + read: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, + ) -> None: + self._connect = self._validate_timeout(connect, "connect") + self._read = self._validate_timeout(read, "read") + self.total = self._validate_timeout(total, "total") + self._start_connect: float | None = None + + def __repr__(self) -> str: + return f"{type(self).__name__}(connect={self._connect!r}, read={self._read!r}, total={self.total!r})" + + # __str__ provided for backwards compatibility + __str__ = __repr__ + + @staticmethod + def resolve_default_timeout(timeout: _TYPE_TIMEOUT) -> float | None: + return getdefaulttimeout() if timeout is _DEFAULT_TIMEOUT else timeout + + @classmethod + def _validate_timeout(cls, value: _TYPE_TIMEOUT, name: str) -> _TYPE_TIMEOUT: + """Check that a timeout attribute is valid. + + :param value: The timeout value to validate + :param name: The name of the timeout attribute to validate. This is + used to specify in error messages. + :return: The validated and casted version of the given value. + :raises ValueError: If it is a numeric value less than or equal to + zero, or the type is not an integer, float, or None. + """ + if value is None or value is _DEFAULT_TIMEOUT: + return value + + if isinstance(value, bool): + raise ValueError( + "Timeout cannot be a boolean value. It must " + "be an int, float or None." + ) + try: + float(value) + except (TypeError, ValueError): + raise ValueError( + "Timeout value %s was %s, but it must be an " + "int, float or None." % (name, value) + ) from None + + try: + if value <= 0: + raise ValueError( + "Attempted to set %s timeout to %s, but the " + "timeout cannot be set to a value less " + "than or equal to 0." % (name, value) + ) + except TypeError: + raise ValueError( + "Timeout value %s was %s, but it must be an " + "int, float or None." % (name, value) + ) from None + + return value + + @classmethod + def from_float(cls, timeout: _TYPE_TIMEOUT) -> Timeout: + """Create a new Timeout from a legacy timeout value. + + The timeout value used by httplib.py sets the same timeout on the + connect(), and recv() socket requests. This creates a :class:`Timeout` + object that sets the individual timeouts to the ``timeout`` value + passed to this function. + + :param timeout: The legacy timeout value. + :type timeout: integer, float, :attr:`urllib3.util.Timeout.DEFAULT_TIMEOUT`, or None + :return: Timeout object + :rtype: :class:`Timeout` + """ + return Timeout(read=timeout, connect=timeout) + + def clone(self) -> Timeout: + """Create a copy of the timeout object + + Timeout properties are stored per-pool but each request needs a fresh + Timeout object to ensure each one has its own start/stop configured. + + :return: a copy of the timeout object + :rtype: :class:`Timeout` + """ + # We can't use copy.deepcopy because that will also create a new object + # for _GLOBAL_DEFAULT_TIMEOUT, which socket.py uses as a sentinel to + # detect the user default. + return Timeout(connect=self._connect, read=self._read, total=self.total) + + def start_connect(self) -> float: + """Start the timeout clock, used during a connect() attempt + + :raises urllib3.exceptions.TimeoutStateError: if you attempt + to start a timer that has been started already. + """ + if self._start_connect is not None: + raise TimeoutStateError("Timeout timer has already been started.") + self._start_connect = time.monotonic() + return self._start_connect + + def get_connect_duration(self) -> float: + """Gets the time elapsed since the call to :meth:`start_connect`. + + :return: Elapsed time in seconds. + :rtype: float + :raises urllib3.exceptions.TimeoutStateError: if you attempt + to get duration for a timer that hasn't been started. + """ + if self._start_connect is None: + raise TimeoutStateError( + "Can't get connect duration for timer that has not started." + ) + return time.monotonic() - self._start_connect + + @property + def connect_timeout(self) -> _TYPE_TIMEOUT: + """Get the value to use when setting a connection timeout. + + This will be a positive float or integer, the value None + (never timeout), or the default system timeout. + + :return: Connect timeout. + :rtype: int, float, :attr:`Timeout.DEFAULT_TIMEOUT` or None + """ + if self.total is None: + return self._connect + + if self._connect is None or self._connect is _DEFAULT_TIMEOUT: + return self.total + + return min(self._connect, self.total) # type: ignore[type-var] + + @property + def read_timeout(self) -> float | None: + """Get the value for the read timeout. + + This assumes some time has elapsed in the connection timeout and + computes the read timeout appropriately. + + If self.total is set, the read timeout is dependent on the amount of + time taken by the connect timeout. If the connection time has not been + established, a :exc:`~urllib3.exceptions.TimeoutStateError` will be + raised. + + :return: Value to use for the read timeout. + :rtype: int, float or None + :raises urllib3.exceptions.TimeoutStateError: If :meth:`start_connect` + has not yet been called on this object. + """ + if ( + self.total is not None + and self.total is not _DEFAULT_TIMEOUT + and self._read is not None + and self._read is not _DEFAULT_TIMEOUT + ): + # In case the connect timeout has not yet been established. + if self._start_connect is None: + return self._read + return max(0, min(self.total - self.get_connect_duration(), self._read)) + elif self.total is not None and self.total is not _DEFAULT_TIMEOUT: + return max(0, self.total - self.get_connect_duration()) + else: + return self.resolve_default_timeout(self._read) diff --git a/frogpilot/third_party/urllib3/util/url.py b/frogpilot/third_party/urllib3/util/url.py new file mode 100644 index 000000000..db057f17b --- /dev/null +++ b/frogpilot/third_party/urllib3/util/url.py @@ -0,0 +1,469 @@ +from __future__ import annotations + +import re +import typing + +from ..exceptions import LocationParseError +from .util import to_str + +# We only want to normalize urls with an HTTP(S) scheme. +# urllib3 infers URLs without a scheme (None) to be http. +_NORMALIZABLE_SCHEMES = ("http", "https", None) + +# Almost all of these patterns were derived from the +# 'rfc3986' module: https://github.com/python-hyper/rfc3986 +_PERCENT_RE = re.compile(r"%[a-fA-F0-9]{2}") +_SCHEME_RE = re.compile(r"^(?:[a-zA-Z][a-zA-Z0-9+-]*:|/)") +_URI_RE = re.compile( + r"^(?:([a-zA-Z][a-zA-Z0-9+.-]*):)?" + r"(?://([^\\/?#]*))?" + r"([^?#]*)" + r"(?:\?([^#]*))?" + r"(?:#(.*))?$", + re.UNICODE | re.DOTALL, +) + +_IPV4_PAT = r"(?:[0-9]{1,3}\.){3}[0-9]{1,3}" +_HEX_PAT = "[0-9A-Fa-f]{1,4}" +_LS32_PAT = "(?:{hex}:{hex}|{ipv4})".format(hex=_HEX_PAT, ipv4=_IPV4_PAT) +_subs = {"hex": _HEX_PAT, "ls32": _LS32_PAT} +_variations = [ + # 6( h16 ":" ) ls32 + "(?:%(hex)s:){6}%(ls32)s", + # "::" 5( h16 ":" ) ls32 + "::(?:%(hex)s:){5}%(ls32)s", + # [ h16 ] "::" 4( h16 ":" ) ls32 + "(?:%(hex)s)?::(?:%(hex)s:){4}%(ls32)s", + # [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 + "(?:(?:%(hex)s:)?%(hex)s)?::(?:%(hex)s:){3}%(ls32)s", + # [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 + "(?:(?:%(hex)s:){0,2}%(hex)s)?::(?:%(hex)s:){2}%(ls32)s", + # [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 + "(?:(?:%(hex)s:){0,3}%(hex)s)?::%(hex)s:%(ls32)s", + # [ *4( h16 ":" ) h16 ] "::" ls32 + "(?:(?:%(hex)s:){0,4}%(hex)s)?::%(ls32)s", + # [ *5( h16 ":" ) h16 ] "::" h16 + "(?:(?:%(hex)s:){0,5}%(hex)s)?::%(hex)s", + # [ *6( h16 ":" ) h16 ] "::" + "(?:(?:%(hex)s:){0,6}%(hex)s)?::", +] + +_UNRESERVED_PAT = r"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._\-~" +_IPV6_PAT = "(?:" + "|".join([x % _subs for x in _variations]) + ")" +_ZONE_ID_PAT = "(?:%25|%)(?:[" + _UNRESERVED_PAT + "]|%[a-fA-F0-9]{2})+" +_IPV6_ADDRZ_PAT = r"\[" + _IPV6_PAT + r"(?:" + _ZONE_ID_PAT + r")?\]" +_REG_NAME_PAT = r"(?:[^\[\]%:/?#]|%[a-fA-F0-9]{2})*" +_TARGET_RE = re.compile(r"^(/[^?#]*)(?:\?([^#]*))?(?:#.*)?$") + +_IPV4_RE = re.compile("^" + _IPV4_PAT + "$") +_IPV6_RE = re.compile("^" + _IPV6_PAT + "$") +_IPV6_ADDRZ_RE = re.compile("^" + _IPV6_ADDRZ_PAT + "$") +_BRACELESS_IPV6_ADDRZ_RE = re.compile("^" + _IPV6_ADDRZ_PAT[2:-2] + "$") +_ZONE_ID_RE = re.compile("(" + _ZONE_ID_PAT + r")\]$") + +_HOST_PORT_PAT = ("^(%s|%s|%s)(?::0*?(|0|[1-9][0-9]{0,4}))?$") % ( + _REG_NAME_PAT, + _IPV4_PAT, + _IPV6_ADDRZ_PAT, +) +_HOST_PORT_RE = re.compile(_HOST_PORT_PAT, re.UNICODE | re.DOTALL) + +_UNRESERVED_CHARS = set( + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._-~" +) +_SUB_DELIM_CHARS = set("!$&'()*+,;=") +_USERINFO_CHARS = _UNRESERVED_CHARS | _SUB_DELIM_CHARS | {":"} +_PATH_CHARS = _USERINFO_CHARS | {"@", "/"} +_QUERY_CHARS = _FRAGMENT_CHARS = _PATH_CHARS | {"?"} + + +class Url( + typing.NamedTuple( + "Url", + [ + ("scheme", typing.Optional[str]), + ("auth", typing.Optional[str]), + ("host", typing.Optional[str]), + ("port", typing.Optional[int]), + ("path", typing.Optional[str]), + ("query", typing.Optional[str]), + ("fragment", typing.Optional[str]), + ], + ) +): + """ + Data structure for representing an HTTP URL. Used as a return value for + :func:`parse_url`. Both the scheme and host are normalized as they are + both case-insensitive according to RFC 3986. + """ + + def __new__( # type: ignore[no-untyped-def] + cls, + scheme: str | None = None, + auth: str | None = None, + host: str | None = None, + port: int | None = None, + path: str | None = None, + query: str | None = None, + fragment: str | None = None, + ): + if path and not path.startswith("/"): + path = "/" + path + if scheme is not None: + scheme = scheme.lower() + return super().__new__(cls, scheme, auth, host, port, path, query, fragment) + + @property + def hostname(self) -> str | None: + """For backwards-compatibility with urlparse. We're nice like that.""" + return self.host + + @property + def request_uri(self) -> str: + """Absolute path including the query string.""" + uri = self.path or "/" + + if self.query is not None: + uri += "?" + self.query + + return uri + + @property + def authority(self) -> str | None: + """ + Authority component as defined in RFC 3986 3.2. + This includes userinfo (auth), host and port. + + i.e. + userinfo@host:port + """ + userinfo = self.auth + netloc = self.netloc + if netloc is None or userinfo is None: + return netloc + else: + return f"{userinfo}@{netloc}" + + @property + def netloc(self) -> str | None: + """ + Network location including host and port. + + If you need the equivalent of urllib.parse's ``netloc``, + use the ``authority`` property instead. + """ + if self.host is None: + return None + if self.port: + return f"{self.host}:{self.port}" + return self.host + + @property + def url(self) -> str: + """ + Convert self into a url + + This function should more or less round-trip with :func:`.parse_url`. The + returned url may not be exactly the same as the url inputted to + :func:`.parse_url`, but it should be equivalent by the RFC (e.g., urls + with a blank port will have : removed). + + Example: + + .. code-block:: python + + import urllib3 + + U = urllib3.util.parse_url("https://google.com/mail/") + + print(U.url) + # "https://google.com/mail/" + + print( urllib3.util.Url("https", "username:password", + "host.com", 80, "/path", "query", "fragment" + ).url + ) + # "https://username:password@host.com:80/path?query#fragment" + """ + scheme, auth, host, port, path, query, fragment = self + url = "" + + # We use "is not None" we want things to happen with empty strings (or 0 port) + if scheme is not None: + url += scheme + "://" + if auth is not None: + url += auth + "@" + if host is not None: + url += host + if port is not None: + url += ":" + str(port) + if path is not None: + url += path + if query is not None: + url += "?" + query + if fragment is not None: + url += "#" + fragment + + return url + + def __str__(self) -> str: + return self.url + + +@typing.overload +def _encode_invalid_chars( + component: str, allowed_chars: typing.Container[str] +) -> str: # Abstract + ... + + +@typing.overload +def _encode_invalid_chars( + component: None, allowed_chars: typing.Container[str] +) -> None: # Abstract + ... + + +def _encode_invalid_chars( + component: str | None, allowed_chars: typing.Container[str] +) -> str | None: + """Percent-encodes a URI component without reapplying + onto an already percent-encoded component. + """ + if component is None: + return component + + component = to_str(component) + + # Normalize existing percent-encoded bytes. + # Try to see if the component we're encoding is already percent-encoded + # so we can skip all '%' characters but still encode all others. + component, percent_encodings = _PERCENT_RE.subn( + lambda match: match.group(0).upper(), component + ) + + uri_bytes = component.encode("utf-8", "surrogatepass") + is_percent_encoded = percent_encodings == uri_bytes.count(b"%") + encoded_component = bytearray() + + for i in range(0, len(uri_bytes)): + # Will return a single character bytestring + byte = uri_bytes[i : i + 1] + byte_ord = ord(byte) + if (is_percent_encoded and byte == b"%") or ( + byte_ord < 128 and byte.decode() in allowed_chars + ): + encoded_component += byte + continue + encoded_component.extend(b"%" + (hex(byte_ord)[2:].encode().zfill(2).upper())) + + return encoded_component.decode() + + +def _remove_path_dot_segments(path: str) -> str: + # See http://tools.ietf.org/html/rfc3986#section-5.2.4 for pseudo-code + segments = path.split("/") # Turn the path into a list of segments + output = [] # Initialize the variable to use to store output + + for segment in segments: + # '.' is the current directory, so ignore it, it is superfluous + if segment == ".": + continue + # Anything other than '..', should be appended to the output + if segment != "..": + output.append(segment) + # In this case segment == '..', if we can, we should pop the last + # element + elif output: + output.pop() + + # If the path starts with '/' and the output is empty or the first string + # is non-empty + if path.startswith("/") and (not output or output[0]): + output.insert(0, "") + + # If the path starts with '/.' or '/..' ensure we add one more empty + # string to add a trailing '/' + if path.endswith(("/.", "/..")): + output.append("") + + return "/".join(output) + + +@typing.overload +def _normalize_host(host: None, scheme: str | None) -> None: ... + + +@typing.overload +def _normalize_host(host: str, scheme: str | None) -> str: ... + + +def _normalize_host(host: str | None, scheme: str | None) -> str | None: + if host: + if scheme in _NORMALIZABLE_SCHEMES: + is_ipv6 = _IPV6_ADDRZ_RE.match(host) + if is_ipv6: + # IPv6 hosts of the form 'a::b%zone' are encoded in a URL as + # such per RFC 6874: 'a::b%25zone'. Unquote the ZoneID + # separator as necessary to return a valid RFC 4007 scoped IP. + match = _ZONE_ID_RE.search(host) + if match: + start, end = match.span(1) + zone_id = host[start:end] + + if zone_id.startswith("%25") and zone_id != "%25": + zone_id = zone_id[3:] + else: + zone_id = zone_id[1:] + zone_id = _encode_invalid_chars(zone_id, _UNRESERVED_CHARS) + return f"{host[:start].lower()}%{zone_id}{host[end:]}" + else: + return host.lower() + elif not _IPV4_RE.match(host): + return to_str( + b".".join([_idna_encode(label) for label in host.split(".")]), + "ascii", + ) + return host + + +def _idna_encode(name: str) -> bytes: + if not name.isascii(): + try: + import idna + except ImportError: + raise LocationParseError( + "Unable to parse URL without the 'idna' module" + ) from None + + try: + return idna.encode(name.lower(), strict=True, std3_rules=True) + except idna.IDNAError: + raise LocationParseError( + f"Name '{name}' is not a valid IDNA label" + ) from None + + return name.lower().encode("ascii") + + +def _encode_target(target: str) -> str: + """Percent-encodes a request target so that there are no invalid characters + + Pre-condition for this function is that 'target' must start with '/'. + If that is the case then _TARGET_RE will always produce a match. + """ + match = _TARGET_RE.match(target) + if not match: # Defensive: + raise LocationParseError(f"{target!r} is not a valid request URI") + + path, query = match.groups() + encoded_target = _encode_invalid_chars(path, _PATH_CHARS) + if query is not None: + query = _encode_invalid_chars(query, _QUERY_CHARS) + encoded_target += "?" + query + return encoded_target + + +def parse_url(url: str) -> Url: + """ + Given a url, return a parsed :class:`.Url` namedtuple. Best-effort is + performed to parse incomplete urls. Fields not provided will be None. + This parser is RFC 3986 and RFC 6874 compliant. + + The parser logic and helper functions are based heavily on + work done in the ``rfc3986`` module. + + :param str url: URL to parse into a :class:`.Url` namedtuple. + + Partly backwards-compatible with :mod:`urllib.parse`. + + Example: + + .. code-block:: python + + import urllib3 + + print( urllib3.util.parse_url('http://google.com/mail/')) + # Url(scheme='http', host='google.com', port=None, path='/mail/', ...) + + print( urllib3.util.parse_url('google.com:80')) + # Url(scheme=None, host='google.com', port=80, path=None, ...) + + print( urllib3.util.parse_url('/foo?bar')) + # Url(scheme=None, host=None, port=None, path='/foo', query='bar', ...) + """ + if not url: + # Empty + return Url() + + source_url = url + if not _SCHEME_RE.search(url): + url = "//" + url + + scheme: str | None + authority: str | None + auth: str | None + host: str | None + port: str | None + port_int: int | None + path: str | None + query: str | None + fragment: str | None + + try: + scheme, authority, path, query, fragment = _URI_RE.match(url).groups() # type: ignore[union-attr] + normalize_uri = scheme is None or scheme.lower() in _NORMALIZABLE_SCHEMES + + if scheme: + scheme = scheme.lower() + + if authority: + auth, _, host_port = authority.rpartition("@") + auth = auth or None + host, port = _HOST_PORT_RE.match(host_port).groups() # type: ignore[union-attr] + if auth and normalize_uri: + auth = _encode_invalid_chars(auth, _USERINFO_CHARS) + if port == "": + port = None + else: + auth, host, port = None, None, None + + if port is not None: + port_int = int(port) + if not (0 <= port_int <= 65535): + raise LocationParseError(url) + else: + port_int = None + + host = _normalize_host(host, scheme) + + if normalize_uri and path: + path = _remove_path_dot_segments(path) + path = _encode_invalid_chars(path, _PATH_CHARS) + if normalize_uri and query: + query = _encode_invalid_chars(query, _QUERY_CHARS) + if normalize_uri and fragment: + fragment = _encode_invalid_chars(fragment, _FRAGMENT_CHARS) + + except (ValueError, AttributeError) as e: + raise LocationParseError(source_url) from e + + # For the sake of backwards compatibility we put empty + # string values for path if there are any defined values + # beyond the path in the URL. + # TODO: Remove this when we break backwards compatibility. + if not path: + if query is not None or fragment is not None: + path = "" + else: + path = None + + return Url( + scheme=scheme, + auth=auth, + host=host, + port=port_int, + path=path, + query=query, + fragment=fragment, + ) diff --git a/frogpilot/third_party/urllib3/util/util.py b/frogpilot/third_party/urllib3/util/util.py new file mode 100644 index 000000000..35c77e402 --- /dev/null +++ b/frogpilot/third_party/urllib3/util/util.py @@ -0,0 +1,42 @@ +from __future__ import annotations + +import typing +from types import TracebackType + + +def to_bytes( + x: str | bytes, encoding: str | None = None, errors: str | None = None +) -> bytes: + if isinstance(x, bytes): + return x + elif not isinstance(x, str): + raise TypeError(f"not expecting type {type(x).__name__}") + if encoding or errors: + return x.encode(encoding or "utf-8", errors=errors or "strict") + return x.encode() + + +def to_str( + x: str | bytes, encoding: str | None = None, errors: str | None = None +) -> str: + if isinstance(x, str): + return x + elif not isinstance(x, bytes): + raise TypeError(f"not expecting type {type(x).__name__}") + if encoding or errors: + return x.decode(encoding or "utf-8", errors=errors or "strict") + return x.decode() + + +def reraise( + tp: type[BaseException] | None, + value: BaseException, + tb: TracebackType | None = None, +) -> typing.NoReturn: + try: + if value.__traceback__ is not tb: + raise value.with_traceback(tb) + raise value + finally: + value = None # type: ignore[assignment] + tb = None diff --git a/frogpilot/third_party/urllib3/util/wait.py b/frogpilot/third_party/urllib3/util/wait.py new file mode 100644 index 000000000..aeca0c7ad --- /dev/null +++ b/frogpilot/third_party/urllib3/util/wait.py @@ -0,0 +1,124 @@ +from __future__ import annotations + +import select +import socket +from functools import partial + +__all__ = ["wait_for_read", "wait_for_write"] + + +# How should we wait on sockets? +# +# There are two types of APIs you can use for waiting on sockets: the fancy +# modern stateful APIs like epoll/kqueue, and the older stateless APIs like +# select/poll. The stateful APIs are more efficient when you have a lots of +# sockets to keep track of, because you can set them up once and then use them +# lots of times. But we only ever want to wait on a single socket at a time +# and don't want to keep track of state, so the stateless APIs are actually +# more efficient. So we want to use select() or poll(). +# +# Now, how do we choose between select() and poll()? On traditional Unixes, +# select() has a strange calling convention that makes it slow, or fail +# altogether, for high-numbered file descriptors. The point of poll() is to fix +# that, so on Unixes, we prefer poll(). +# +# On Windows, there is no poll() (or at least Python doesn't provide a wrapper +# for it), but that's OK, because on Windows, select() doesn't have this +# strange calling convention; plain select() works fine. +# +# So: on Windows we use select(), and everywhere else we use poll(). We also +# fall back to select() in case poll() is somehow broken or missing. + + +def select_wait_for_socket( + sock: socket.socket, + read: bool = False, + write: bool = False, + timeout: float | None = None, +) -> bool: + if not read and not write: + raise RuntimeError("must specify at least one of read=True, write=True") + rcheck = [] + wcheck = [] + if read: + rcheck.append(sock) + if write: + wcheck.append(sock) + # When doing a non-blocking connect, most systems signal success by + # marking the socket writable. Windows, though, signals success by marked + # it as "exceptional". We paper over the difference by checking the write + # sockets for both conditions. (The stdlib selectors module does the same + # thing.) + fn = partial(select.select, rcheck, wcheck, wcheck) + rready, wready, xready = fn(timeout) + return bool(rready or wready or xready) + + +def poll_wait_for_socket( + sock: socket.socket, + read: bool = False, + write: bool = False, + timeout: float | None = None, +) -> bool: + if not read and not write: + raise RuntimeError("must specify at least one of read=True, write=True") + mask = 0 + if read: + mask |= select.POLLIN + if write: + mask |= select.POLLOUT + poll_obj = select.poll() + poll_obj.register(sock, mask) + + # For some reason, poll() takes timeout in milliseconds + def do_poll(t: float | None) -> list[tuple[int, int]]: + if t is not None: + t *= 1000 + return poll_obj.poll(t) + + return bool(do_poll(timeout)) + + +def _have_working_poll() -> bool: + # Apparently some systems have a select.poll that fails as soon as you try + # to use it, either due to strange configuration or broken monkeypatching + # from libraries like eventlet/greenlet. + try: + poll_obj = select.poll() + poll_obj.poll(0) + except (AttributeError, OSError): + return False + else: + return True + + +def wait_for_socket( + sock: socket.socket, + read: bool = False, + write: bool = False, + timeout: float | None = None, +) -> bool: + # We delay choosing which implementation to use until the first time we're + # called. We could do it at import time, but then we might make the wrong + # decision if someone goes wild with monkeypatching select.poll after + # we're imported. + global wait_for_socket + if _have_working_poll(): + wait_for_socket = poll_wait_for_socket + elif hasattr(select, "select"): + wait_for_socket = select_wait_for_socket + return wait_for_socket(sock, read, write, timeout) + + +def wait_for_read(sock: socket.socket, timeout: float | None = None) -> bool: + """Waits for reading to be available on a given socket. + Returns True if the socket is readable, or False if the timeout expired. + """ + return wait_for_socket(sock, read=True, timeout=timeout) + + +def wait_for_write(sock: socket.socket, timeout: float | None = None) -> bool: + """Waits for writing to be available on a given socket. + Returns True if the socket is readable, or False if the timeout expired. + """ + return wait_for_socket(sock, write=True, timeout=timeout) diff --git a/frogpilot/tinygrad_modeld/constants.py b/frogpilot/tinygrad_modeld/constants.py index 5ca0a86bc..e26773a55 100644 --- a/frogpilot/tinygrad_modeld/constants.py +++ b/frogpilot/tinygrad_modeld/constants.py @@ -13,12 +13,11 @@ class ModelConstants: META_T_IDXS = [2., 4., 6., 8., 10.] # model inputs constants - MODEL_FREQ = 20 - HISTORY_FREQ = 5 - HISTORY_LEN_SECONDS = 5 - TEMPORAL_SKIP = MODEL_FREQ // HISTORY_FREQ - FULL_HISTORY_BUFFER_LEN = MODEL_FREQ * HISTORY_LEN_SECONDS - INPUT_HISTORY_BUFFER_LEN = HISTORY_FREQ * HISTORY_LEN_SECONDS + N_FRAMES = 2 + MODEL_RUN_FREQ = 20 + MODEL_CONTEXT_FREQ = 5 # "model_trained_fps" + FULL_HISTORY_BUFFER_LEN = MODEL_RUN_FREQ * MODEL_CONTEXT_FREQ + TEMPORAL_SKIP = MODEL_RUN_FREQ // MODEL_CONTEXT_FREQ FEATURE_LEN = 512 diff --git a/frogpilot/tinygrad_modeld/dmonitoringmodeld.py b/frogpilot/tinygrad_modeld/dmonitoringmodeld.py index 55526b66c..51d14c89c 100644 --- a/frogpilot/tinygrad_modeld/dmonitoringmodeld.py +++ b/frogpilot/tinygrad_modeld/dmonitoringmodeld.py @@ -1,20 +1,15 @@ #!/usr/bin/env python3 import os from openpilot.system.hardware import TICI +os.environ['DEV'] = 'QCOM' if TICI else 'LLVM' from tinygrad.tensor import Tensor from tinygrad.dtype import dtypes -if TICI: - from openpilot.frogpilot.tinygrad_modeld.runners.tinygrad_helpers import qcom_tensor_from_opencl_address - os.environ['QCOM'] = '1' -else: - os.environ['LLVM'] = '1' import math import time import pickle import ctypes import numpy as np from pathlib import Path -from setproctitle import setproctitle from cereal import messaging from cereal.messaging import PubMaster, SubMaster @@ -25,7 +20,7 @@ from openpilot.common.transformations.model import dmonitoringmodel_intrinsics, from openpilot.common.transformations.camera import _ar_ox_fisheye, _os_fisheye from openpilot.frogpilot.tinygrad_modeld.models.commonmodel_pyx import CLContext, MonitoringModelFrame from openpilot.frogpilot.tinygrad_modeld.parse_model_outputs import sigmoid -from openpilot.system import sentry +from openpilot.frogpilot.tinygrad_modeld.runners.tinygrad_helpers import qcom_tensor_from_opencl_address MODEL_WIDTH, MODEL_HEIGHT = DM_INPUT_SIZE CALIB_LEN = 3 @@ -95,7 +90,7 @@ class ModelState: self.tensor_inputs['input_img'] = Tensor(self.frame.buffer_from_cl(input_img_cl).reshape((1, MODEL_WIDTH*MODEL_HEIGHT)), dtype=dtypes.uint8).realize() - output = self.model_run(**self.tensor_inputs).numpy().flatten() + output = self.model_run(**self.tensor_inputs).contiguous().realize().uop.base.buffer.numpy() t2 = time.perf_counter() return output, t2 - t1 @@ -133,12 +128,8 @@ def get_driverstate_packet(model_output: np.ndarray, frame_id: int, location_ts: def main(): - setproctitle(PROCESS_NAME) config_realtime_process(7, 5) - sentry.set_tag("daemon", PROCESS_NAME) - cloudlog.bind(daemon=PROCESS_NAME) - cl_context = CLContext() model = ModelState(cl_context) cloudlog.warning("models loaded, dmonitoringmodeld starting") @@ -173,9 +164,6 @@ def main(): model_output, gpu_execution_time = model.run(buf, calib, model_transform) t2 = time.perf_counter() - # run one more time, just for the load - model.run(buf, calib, model_transform) - pm.send("driverStateV2", get_driverstate_packet(model_output, vipc_client.frame_id, vipc_client.timestamp_sof, t2 - t1, gpu_execution_time)) @@ -183,7 +171,4 @@ if __name__ == "__main__": try: main() except KeyboardInterrupt: - cloudlog.warning(f"child {PROCESS_NAME} got SIGINT") - except Exception: - sentry.capture_exception() - raise + cloudlog.warning("got SIGINT") diff --git a/frogpilot/tinygrad_modeld/fill_model_msg.py b/frogpilot/tinygrad_modeld/fill_model_msg.py index d23cbae38..926f0e24e 100644 --- a/frogpilot/tinygrad_modeld/fill_model_msg.py +++ b/frogpilot/tinygrad_modeld/fill_model_msg.py @@ -158,7 +158,7 @@ def fill_model_msg(base_msg: capnp._DynamicStructBuilder, extended_msg: capnp._D meta.hardBrakePredicted = hard_brake_predicted.item() # confidence - if vipc_frame_id % (2*ModelConstants.MODEL_FREQ) == 0: + if vipc_frame_id % (2*ModelConstants.MODEL_RUN_FREQ) == 0: # any disengage prob brake_disengage_probs = net_output_data['meta'][0,Meta.BRAKE_DISENGAGE] gas_disengage_probs = net_output_data['meta'][0,Meta.GAS_DISENGAGE] diff --git a/frogpilot/tinygrad_modeld/models/driving_policy.onnx b/frogpilot/tinygrad_modeld/models/driving_policy.onnx index 231dc4924..6d0cab8bb 100644 Binary files a/frogpilot/tinygrad_modeld/models/driving_policy.onnx and b/frogpilot/tinygrad_modeld/models/driving_policy.onnx differ diff --git a/frogpilot/tinygrad_modeld/models/driving_vision.onnx b/frogpilot/tinygrad_modeld/models/driving_vision.onnx index ccaa3dffd..ac18efb0b 100644 Binary files a/frogpilot/tinygrad_modeld/models/driving_vision.onnx and b/frogpilot/tinygrad_modeld/models/driving_vision.onnx differ diff --git a/frogpilot/tinygrad_modeld/parse_model_outputs.py b/frogpilot/tinygrad_modeld/parse_model_outputs.py index aca3f7382..3e77434d9 100644 --- a/frogpilot/tinygrad_modeld/parse_model_outputs.py +++ b/frogpilot/tinygrad_modeld/parse_model_outputs.py @@ -22,9 +22,10 @@ class Parser: self.ignore_missing = ignore_missing def check_missing(self, outs, name): - if name not in outs and not self.ignore_missing: + missing = name not in outs + if missing and not self.ignore_missing: raise ValueError(f"Missing output {name}") - return name not in outs + return missing def parse_categorical_crossentropy(self, name, outs, out_shape=None): if self.check_missing(outs, name): @@ -84,6 +85,13 @@ class Parser: outs[name] = pred_mu_final.reshape(final_shape) outs[name + '_stds'] = pred_std_final.reshape(final_shape) + def is_mhp(self, outs, name, shape): + if self.check_missing(outs, name): + return False + if outs[name].shape[1] == 2 * shape: + return False + return True + def parse_vision_outputs(self, outs: dict[str, np.ndarray]) -> dict[str, np.ndarray]: self.parse_mdn('pose', outs, in_N=0, out_N=0, out_shape=(ModelConstants.POSE_WIDTH,)) self.parse_mdn('wide_from_device_euler', outs, in_N=0, out_N=0, out_shape=(ModelConstants.WIDE_FROM_DEVICE_WIDTH,)) @@ -94,18 +102,20 @@ class Parser: self.parse_categorical_crossentropy('desire_pred', outs, out_shape=(ModelConstants.DESIRE_PRED_LEN,ModelConstants.DESIRE_PRED_WIDTH)) self.parse_binary_crossentropy('meta', outs) self.parse_binary_crossentropy('lead_prob', outs) - self.parse_mdn('lead', outs, in_N=ModelConstants.LEAD_MHP_N, out_N=ModelConstants.LEAD_MHP_SELECTION, - out_shape=(ModelConstants.LEAD_TRAJ_LEN,ModelConstants.LEAD_WIDTH)) + lead_mhp = self.is_mhp(outs, 'lead', ModelConstants.LEAD_MHP_SELECTION * ModelConstants.LEAD_TRAJ_LEN * ModelConstants.LEAD_WIDTH) + lead_in_N, lead_out_N = (ModelConstants.LEAD_MHP_N, ModelConstants.LEAD_MHP_SELECTION) if lead_mhp else (0, 0) + lead_out_shape = (ModelConstants.LEAD_TRAJ_LEN, ModelConstants.LEAD_WIDTH) if lead_mhp else \ + (ModelConstants.LEAD_MHP_SELECTION, ModelConstants.LEAD_TRAJ_LEN, ModelConstants.LEAD_WIDTH) + self.parse_mdn('lead', outs, in_N=lead_in_N, out_N=lead_out_N, out_shape=lead_out_shape) return outs def parse_policy_outputs(self, outs: dict[str, np.ndarray]) -> dict[str, np.ndarray]: - self.parse_mdn('plan', outs, in_N=ModelConstants.PLAN_MHP_N, out_N=ModelConstants.PLAN_MHP_SELECTION, - out_shape=(ModelConstants.IDX_N,ModelConstants.PLAN_WIDTH)) + plan_mhp = self.is_mhp(outs, 'plan', ModelConstants.IDX_N * ModelConstants.PLAN_WIDTH) + plan_in_N, plan_out_N = (ModelConstants.PLAN_MHP_N, ModelConstants.PLAN_MHP_SELECTION) if plan_mhp else (0, 0) + self.parse_mdn('plan', outs, in_N=plan_in_N, out_N=plan_out_N, out_shape=(ModelConstants.IDX_N, ModelConstants.PLAN_WIDTH)) self.parse_mdn('lane_lines', outs, in_N=0, out_N=0, out_shape=(ModelConstants.NUM_LANE_LINES,ModelConstants.IDX_N,ModelConstants.LANE_LINES_WIDTH)) self.parse_mdn('road_edges', outs, in_N=0, out_N=0, out_shape=(ModelConstants.NUM_ROAD_EDGES,ModelConstants.IDX_N,ModelConstants.LANE_LINES_WIDTH)) self.parse_mdn('sim_pose', outs, in_N=0, out_N=0, out_shape=(ModelConstants.POSE_WIDTH,)) - if 'lat_planner_solution' in outs: - self.parse_mdn('lat_planner_solution', outs, in_N=0, out_N=0, out_shape=(ModelConstants.IDX_N,ModelConstants.LAT_PLANNER_SOLUTION_WIDTH)) if 'desired_curvature' in outs: self.parse_mdn('desired_curvature', outs, in_N=0, out_N=0, out_shape=(ModelConstants.DESIRED_CURV_WIDTH,)) for k in ['lead_prob', 'lane_lines_prob']: diff --git a/frogpilot/tinygrad_modeld/tinygrad_modeld.py b/frogpilot/tinygrad_modeld/tinygrad_modeld.py index a4717b0ed..59b2585d8 100755 --- a/frogpilot/tinygrad_modeld/tinygrad_modeld.py +++ b/frogpilot/tinygrad_modeld/tinygrad_modeld.py @@ -14,7 +14,6 @@ import numpy as np import cereal.messaging as messaging from cereal import car, log from pathlib import Path -from setproctitle import setproctitle from cereal.messaging import PubMaster, SubMaster from msgq.visionipc import VisionIpcClient, VisionStreamType, VisionBuf from openpilot.common.swaglog import cloudlog @@ -23,7 +22,6 @@ from openpilot.common.filter_simple import FirstOrderFilter from openpilot.common.realtime import config_realtime_process, DT_MDL from openpilot.common.transformations.camera import DEVICE_CAMERAS from openpilot.common.transformations.model import get_warp_matrix -from openpilot.system import sentry from openpilot.selfdrive.car.car_helpers import get_demo_car_params from openpilot.selfdrive.controls.lib.desire_helper import DesireHelper from openpilot.selfdrive.controls.lib.drive_helpers import get_accel_from_plan, smooth_value, get_curvature_from_plan @@ -85,6 +83,64 @@ class FrameMeta: if vipc is not None: self.frame_id, self.timestamp_sof, self.timestamp_eof = vipc.frame_id, vipc.timestamp_sof, vipc.timestamp_eof +class InputQueues: + def __init__ (self, model_fps, env_fps, n_frames_input): + assert env_fps % model_fps == 0 + assert env_fps >= model_fps + self.model_fps = model_fps + self.env_fps = env_fps + self.n_frames_input = n_frames_input + + self.dtypes = {} + self.shapes = {} + self.q = {} + + def update_dtypes_and_shapes(self, input_dtypes, input_shapes) -> None: + self.dtypes.update(input_dtypes) + if self.env_fps == self.model_fps: + self.shapes.update(input_shapes) + else: + for k in input_shapes: + shape = list(input_shapes[k]) + if 'img' in k: + n_channels = shape[1] // self.n_frames_input + shape[1] = (self.env_fps // self.model_fps + (self.n_frames_input - 1)) * n_channels + else: + shape[1] = (self.env_fps // self.model_fps) * shape[1] + self.shapes[k] = tuple(shape) + + def reset(self) -> None: + self.q = {k: np.zeros(self.shapes[k], dtype=self.dtypes[k]) for k in self.dtypes.keys()} + + def enqueue(self, inputs:dict[str, np.ndarray]) -> None: + for k in inputs.keys(): + if inputs[k].dtype != self.dtypes[k]: + raise ValueError(f'supplied input <{k}({inputs[k].dtype})> has wrong dtype, expected {self.dtypes[k]}') + input_shape = list(self.shapes[k]) + input_shape[1] = -1 + single_input = inputs[k].reshape(tuple(input_shape)) + sz = single_input.shape[1] + self.q[k][:,:-sz] = self.q[k][:,sz:] + self.q[k][:,-sz:] = single_input + + def get(self, *names) -> dict[str, np.ndarray]: + if self.env_fps == self.model_fps: + return {k: self.q[k] for k in names} + else: + out = {} + for k in names: + shape = self.shapes[k] + if 'img' in k: + n_channels = shape[1] // (self.env_fps // self.model_fps + (self.n_frames_input - 1)) + out[k] = np.concatenate([self.q[k][:, s:s+n_channels] for s in np.linspace(0, shape[1] - n_channels, self.n_frames_input, dtype=int)], axis=1) + elif 'pulse' in k: + # any pulse within interval counts + out[k] = self.q[k].reshape((shape[0], shape[1] * self.model_fps // self.env_fps, self.env_fps // self.model_fps, -1)).max(axis=2) + else: + idxs = np.arange(-1, -shape[1], -self.env_fps // self.model_fps)[::-1] + out[k] = self.q[k][:, idxs] + return out + class ModelState: frames: dict[str, DrivingModelFrame] inputs: dict[str, np.ndarray] @@ -105,22 +161,21 @@ class ModelState: self.policy_output_slices = policy_metadata['output_slices'] policy_output_size = policy_metadata['output_shapes']['outputs'][1] - self.frames = {name: DrivingModelFrame(context, ModelConstants.TEMPORAL_SKIP) for name in self.vision_input_names} + self.desire_type = 'desire_pulse' if 'desire_pulse' in self.policy_input_shapes else 'desire' + self.use_lateral_control_params = 'lateral_control_params' in self.policy_input_shapes + + self.frames = {name: DrivingModelFrame(context, ModelConstants.MODEL_RUN_FREQ//ModelConstants.MODEL_CONTEXT_FREQ) for name in self.vision_input_names} self.prev_desire = np.zeros(ModelConstants.DESIRE_LEN, dtype=np.float32) - self.full_features_buffer = np.zeros((1, ModelConstants.FULL_HISTORY_BUFFER_LEN, ModelConstants.FEATURE_LEN), dtype=np.float32) - self.full_desire = np.zeros((1, ModelConstants.FULL_HISTORY_BUFFER_LEN, ModelConstants.DESIRE_LEN), dtype=np.float32) self.full_prev_desired_curv = np.zeros((1, ModelConstants.FULL_HISTORY_BUFFER_LEN, ModelConstants.PREV_DESIRED_CURV_LEN), dtype=np.float32) - self.temporal_idxs = slice(-1-(ModelConstants.TEMPORAL_SKIP*(ModelConstants.INPUT_HISTORY_BUFFER_LEN-1)), None, ModelConstants.TEMPORAL_SKIP) + self.temporal_idxs = slice(-1-(ModelConstants.TEMPORAL_SKIP*(ModelConstants.FULL_HISTORY_BUFFER_LEN-1)), None, ModelConstants.TEMPORAL_SKIP) # policy inputs - self.numpy_inputs = { - 'desire': np.zeros((1, ModelConstants.INPUT_HISTORY_BUFFER_LEN, ModelConstants.DESIRE_LEN), dtype=np.float32), - 'traffic_convention': np.zeros((1, ModelConstants.TRAFFIC_CONVENTION_LEN), dtype=np.float32), - 'lateral_control_params': np.zeros((1, ModelConstants.LATERAL_CONTROL_PARAMS_LEN), dtype=np.float32), - 'prev_desired_curv': np.zeros((1, ModelConstants.INPUT_HISTORY_BUFFER_LEN, ModelConstants.PREV_DESIRED_CURV_LEN), dtype=np.float32), - 'features_buffer': np.zeros((1, ModelConstants.INPUT_HISTORY_BUFFER_LEN, ModelConstants.FEATURE_LEN), dtype=np.float32), - } + self.numpy_inputs = {k: np.zeros(self.policy_input_shapes[k], dtype=np.float32) for k in self.policy_input_shapes} + self.full_input_queues = InputQueues(ModelConstants.MODEL_CONTEXT_FREQ, ModelConstants.MODEL_RUN_FREQ, ModelConstants.N_FRAMES) + for k in [self.desire_type, 'features_buffer']: + self.full_input_queues.update_dtypes_and_shapes({k: self.numpy_inputs[k].dtype}, {k: self.numpy_inputs[k].shape}) + self.full_input_queues.reset() # img buffers are managed in openCL transform code self.vision_inputs: dict[str, Tensor] = {} @@ -142,16 +197,12 @@ class ModelState: def run(self, bufs: dict[str, VisionBuf], transforms: dict[str, np.ndarray], inputs: dict[str, np.ndarray], prepare_only: bool) -> dict[str, np.ndarray] | None: # Model decides when action is completed, so desire input is just a pulse triggered on rising edge - inputs['desire'][0] = 0 - new_desire = np.where(inputs['desire'] - self.prev_desire > .99, inputs['desire'], 0) - self.prev_desire[:] = inputs['desire'] + inputs[self.desire_type][0] = 0 + new_desire = np.where(inputs[self.desire_type] - self.prev_desire > .99, inputs[self.desire_type], 0) + self.prev_desire[:] = inputs[self.desire_type] - self.full_desire[0,:-1] = self.full_desire[0,1:] - self.full_desire[0,-1] = new_desire - self.numpy_inputs['desire'][:] = self.full_desire.reshape((1,ModelConstants.INPUT_HISTORY_BUFFER_LEN,ModelConstants.TEMPORAL_SKIP,-1)).max(axis=2) - - self.numpy_inputs['traffic_convention'][:] = inputs['traffic_convention'] - self.numpy_inputs['lateral_control_params'][:] = inputs['lateral_control_params'] + if self.use_lateral_control_params: + self.numpy_inputs['lateral_control_params'][:] = inputs['lateral_control_params'] imgs_cl = {name: self.frames[name].prepare(bufs[name], transforms[name].flatten()) for name in self.vision_input_names} if TICI and not USBGPU: @@ -167,20 +218,22 @@ class ModelState: if prepare_only: return None - self.vision_output = self.vision_run(**self.vision_inputs).numpy().flatten() + self.vision_output = self.vision_run(**self.vision_inputs).contiguous().realize().uop.base.buffer.numpy() vision_outputs_dict = self.parser.parse_vision_outputs(self.slice_outputs(self.vision_output, self.vision_output_slices)) - self.full_features_buffer[0,:-1] = self.full_features_buffer[0,1:] - self.full_features_buffer[0,-1] = vision_outputs_dict['hidden_state'][0, :] - self.numpy_inputs['features_buffer'][:] = self.full_features_buffer[0, self.temporal_idxs] + self.full_input_queues.enqueue({'features_buffer': vision_outputs_dict['hidden_state'], self.desire_type: new_desire}) + for k in [self.desire_type, 'features_buffer']: + self.numpy_inputs[k][:] = self.full_input_queues.get(k)[k] + self.numpy_inputs['traffic_convention'][:] = inputs['traffic_convention'] - self.policy_output = self.policy_run(**self.policy_inputs).numpy().flatten() + self.policy_output = self.policy_run(**self.policy_inputs).contiguous().realize().uop.base.buffer.numpy() policy_outputs_dict = self.parser.parse_policy_outputs(self.slice_outputs(self.policy_output, self.policy_output_slices)) - # TODO model only uses last value now - self.full_prev_desired_curv[0,:-1] = self.full_prev_desired_curv[0,1:] - self.full_prev_desired_curv[0,-1,:] = policy_outputs_dict['desired_curvature'][0, :] - self.numpy_inputs['prev_desired_curv'][:] = 0*self.full_prev_desired_curv[0, self.temporal_idxs] + if self.use_lateral_control_params: + # TODO model only uses last value now + self.full_prev_desired_curv[0,:-1] = self.full_prev_desired_curv[0,1:] + self.full_prev_desired_curv[0,-1,:] = policy_outputs_dict['desired_curvature'][0, :] + self.numpy_inputs['prev_desired_curv'][:] = 0*self.full_prev_desired_curv[0, self.temporal_idxs] combined_outputs_dict = {**vision_outputs_dict, **policy_outputs_dict} if SEND_RAW_PRED: @@ -194,13 +247,11 @@ def main(demo=False): frogpilot_toggles = get_frogpilot_toggles() model_name = frogpilot_toggles.model - use_curvature_from_plan = frogpilot_toggles.model_version not in {"v7", "v8"} + model_version = frogpilot_toggles.model_version + use_curvature_from_plan = frogpilot_toggles.model_version != "v7" cloudlog.warning("tinygrad_modeld init") - sentry.set_tag("daemon", PROCESS_NAME) - cloudlog.bind(daemon=PROCESS_NAME) - setproctitle(PROCESS_NAME) if not USBGPU: # USB GPU currently saturates a core so can't do this yet, # also need to move the aux USB interrupts for good timings @@ -211,7 +262,7 @@ def main(demo=False): cl_context = CLContext() cloudlog.warning("CL context ready; loading model") model = ModelState(cl_context, model_name) - cloudlog.warning(f"models loaded in {time.monotonic() - st:.1f}s, modeld starting") + cloudlog.warning(f"models loaded in {time.monotonic() - st:.1f}s, tinygrad_modeld starting") # visionipc clients while True: @@ -237,14 +288,14 @@ def main(demo=False): cloudlog.warning(f"connected extra cam with buffer size: {vipc_client_extra.buffer_len} ({vipc_client_extra.width} x {vipc_client_extra.height})") # messaging - pm = PubMaster(["modelV2", "drivingModelData", "cameraOdometry"]) + pm = PubMaster(["modelV2", "drivingModelData", "cameraOdometry", "frogpilotModelV2"]) sm = SubMaster(["deviceState", "carState", "roadCameraState", "liveCalibration", "driverMonitoringState", "carControl", "liveDelay", "frogpilotPlan"]) publish_state = PublishState() params = Params() # setup filter to track dropped frames - frame_dropped_filter = FirstOrderFilter(0., 10., 1. / ModelConstants.MODEL_FREQ) + frame_dropped_filter = FirstOrderFilter(0., 10., 1. / ModelConstants.MODEL_RUN_FREQ) frame_id = 0 last_vipc_frame_id = 0 run_count = 0 @@ -341,9 +392,9 @@ def main(demo=False): bufs = {name: buf_extra if 'big' in name else buf_main for name in model.vision_input_names} transforms = {name: model_transform_extra if 'big' in name else model_transform_main for name in model.vision_input_names} inputs:dict[str, np.ndarray] = { - 'desire': vec_desire, + model.desire_type: vec_desire, 'traffic_convention': traffic_convention, - 'lateral_control_params': lateral_control_params, + **({'lateral_control_params': lateral_control_params} if model.use_lateral_control_params else {}), } mt1 = time.perf_counter() @@ -353,6 +404,7 @@ def main(demo=False): if model_output is not None: modelv2_send = messaging.new_message('modelV2') + frogpilot_modelv2_send = messaging.new_message('frogpilotModelV2') drivingdata_send = messaging.new_message('drivingModelData') posenet_send = messaging.new_message('cameraOdometry') @@ -369,12 +421,13 @@ def main(demo=False): DH.update(sm['carState'], sm['carControl'].latActive, lane_change_prob, sm['frogpilotPlan'], frogpilot_toggles) modelv2_send.modelV2.meta.laneChangeState = DH.lane_change_state modelv2_send.modelV2.meta.laneChangeDirection = DH.lane_change_direction - modelv2_send.modelV2.meta.turnDirection = DH.turn_direction + frogpilot_modelv2_send.frogpilotModelV2.turnDirection = DH.turn_direction drivingdata_send.drivingModelData.meta.laneChangeState = DH.lane_change_state drivingdata_send.drivingModelData.meta.laneChangeDirection = DH.lane_change_direction fill_pose_msg(posenet_send, model_output, meta_main.frame_id, vipc_dropped_frames, meta_main.timestamp_eof, live_calib_seen) pm.send('modelV2', modelv2_send) + pm.send('frogpilotModelV2', frogpilot_modelv2_send) pm.send('drivingModelData', drivingdata_send) pm.send('cameraOdometry', posenet_send) last_vipc_frame_id = meta_main.frame_id @@ -391,7 +444,4 @@ if __name__ == "__main__": args = parser.parse_args() main(demo=args.demo) except KeyboardInterrupt: - cloudlog.warning(f"child {PROCESS_NAME} got SIGINT") - except Exception: - sentry.capture_exception() - raise + cloudlog.warning("got SIGINT") diff --git a/frogpilot/tools/compile_models.py b/frogpilot/tools/compile_models.py new file mode 100644 index 000000000..0819476cf --- /dev/null +++ b/frogpilot/tools/compile_models.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python3 +import os +import requests +import sys + +from pathlib import Path + +from openpilot.common.basedir import BASEDIR + +from openpilot.frogpilot.assets.download_functions import download_file, verify_download +from openpilot.frogpilot.assets.model_manager import CANCEL_DOWNLOAD_PARAM, DOWNLOAD_PROGRESS_PARAM, MODEL_DOWNLOAD_PARAM +from openpilot.frogpilot.common.frogpilot_utilities import delete_file, run_cmd +from openpilot.frogpilot.common.frogpilot_variables import MODELS_PATH + +METADATA_SCRIPT = Path(BASEDIR) / "frogpilot/tinygrad_modeld/get_model_metadata.py" +TINYGRAD_REPO_PATH = Path(BASEDIR) / "tinygrad_repo" + +MODELS_SOURCE = "https://api.github.com/repos/FrogAi/FrogPilot-Resources/contents/uncompiled?ref=Models" +MODELS_SOURCE_RAW = "https://raw.githubusercontent.com/FrogAi/FrogPilot-Resources/Models/uncompiled" + +COMPILED_DIR = Path(MODELS_PATH) / "compiled" +UNCOMPILED_DIR = Path(MODELS_PATH) / "uncompiled_downloads" + +def compile_model(onnx_path): + onnx_path = Path(onnx_path).resolve() + compiled_path = COMPILED_DIR / f"{onnx_path.stem}_tinygrad.pkl" + + env = os.environ.copy() + env["PYTHONPATH"] = f"{env.get('PYTHONPATH','')}:{TINYGRAD_REPO_PATH}" + + run_cmd([sys.executable, str(TINYGRAD_REPO_PATH / "examples/openpilot/compile3.py"), str(onnx_path), str(compiled_path)], f"{onnx_path.name} compiled successfully!", "Failed to compile the model...", env=env) + run_cmd([sys.executable, str(METADATA_SCRIPT), str(onnx_path)], f"Successfully extracted metadata from {onnx_path.name}!", f"Failed to extract metadata from {onnx_path.name}...") + + delete_file(onnx_path) + +def download_models(): + session = requests.Session() + session.headers.update({"Accept-Language": "en"}) + session.headers.update({"User-Agent": "frogpilot-model-compiler/1.0 (https://github.com/FrogAi/FrogPilot)"}) + + COMPILED_DIR.mkdir(parents=True, exist_ok=True) + UNCOMPILED_DIR.mkdir(parents=True, exist_ok=True) + + local_paths = [] + for name in list_remote_onnx_files(session): + url = f"{MODELS_SOURCE_RAW}/{name}" + destination = UNCOMPILED_DIR / name + + download_file(CANCEL_DOWNLOAD_PARAM, destination, DOWNLOAD_PROGRESS_PARAM, url, MODEL_DOWNLOAD_PARAM, session) + + if not verify_download(destination, url, session): + continue + + print(f"{name} downloaded!") + + local_paths.append(destination) + return local_paths + +def list_remote_onnx_files(session): + response = session.get(MODELS_SOURCE, timeout=10) + response.raise_for_status() + + entries = response.json() + return sorted(entry["name"] for entry in entries if entry["name"].lower().endswith(".onnx")) + +def main(): + downloaded_models = download_models() + for path in downloaded_models: + compile_model(path) + + if UNCOMPILED_DIR.exists(): + delete_file(UNCOMPILED_DIR) + +if __name__ == "__main__": + main() diff --git a/frogpilot/ui/frogpilot_ui.cc b/frogpilot/ui/frogpilot_ui.cc index e4d6dd499..31a3db3de 100644 --- a/frogpilot/ui/frogpilot_ui.cc +++ b/frogpilot/ui/frogpilot_ui.cc @@ -35,6 +35,8 @@ static void update_state(FrogPilotUIState *fs) { update_theme(fs); emit fs->themeUpdated(); + + fs->params_memory.remove("UseActiveTheme"); } if (frogpilotPlan.getTogglesUpdated()) { frogpilot_scene.frogpilot_toggles = QJsonDocument::fromJson(fs->params_memory.get("FrogPilotToggles").c_str()).object(); @@ -62,9 +64,9 @@ void update_theme(FrogPilotUIState *fs) { FrogPilotUIState::FrogPilotUIState(QObject *parent) : QObject(parent) { sm = std::make_unique>({ - "carControl", "carState", "controlsState", "deviceState", "frogpilotCarState", "frogpilotDeviceState", - "frogpilotNavigation", "frogpilotPlan", "liveDelay", "liveParameters", "liveTorqueParameters", "liveTracks", - "navInstruction" + "carControl", "carState", "controlsState", "deviceState", "frogpilotCarState", "frogpilotControlsState", + "frogpilotDeviceState", "frogpilotNavigation", "frogpilotPlan", "frogpilotRadarState", "liveDelay", + "liveParameters", "liveTorqueParameters", "liveTracks", "navInstruction" }); wifi = new WifiManager(this); diff --git a/frogpilot/ui/frogpilot_ui.h b/frogpilot/ui/frogpilot_ui.h index d84e3a810..47ff903b2 100644 --- a/frogpilot/ui/frogpilot_ui.h +++ b/frogpilot/ui/frogpilot_ui.h @@ -49,6 +49,8 @@ struct FrogPilotUIScene { QJsonObject frogpilot_toggles; + QPointF lead_vertices[2]; + QPolygonF track_adjacent_vertices[2]; QPolygonF track_edge_vertices; }; diff --git a/frogpilot/ui/qt/offroad/data_settings.cc b/frogpilot/ui/qt/offroad/data_settings.cc index 54ccee6d6..ba19eea58 100644 --- a/frogpilot/ui/qt/offroad/data_settings.cc +++ b/frogpilot/ui/qt/offroad/data_settings.cc @@ -3,18 +3,35 @@ #include "frogpilot/ui/qt/offroad/data_settings.h" FrogPilotDataPanel::FrogPilotDataPanel(FrogPilotSettingsWindow *parent) : FrogPilotListWidget(parent), parent(parent) { - ButtonControl *deleteDrivingDataBtn = new ButtonControl(tr("Delete Driving Footage and Data"), tr("DELETE"), tr("Deletes all stored driving footage and data from your device. Ideal for maintaining privacy or for simply freeing up space.")); - QObject::connect(deleteDrivingDataBtn, &ButtonControl::clicked, [=]() { + QJsonObject shownDescriptions = QJsonDocument::fromJson(QString::fromStdString(params.get("ShownToggleDescriptions")).toUtf8()).object(); + QString className = this->metaObject()->className(); + + bool forceOpenDescriptions = false; + if (!shownDescriptions.value(className).toBool(false)) { + forceOpenDescriptions = true; + shownDescriptions.insert(className, true); + params.put("ShownToggleDescriptions", QJsonDocument(shownDescriptions).toJson(QJsonDocument::Compact).toStdString()); + } + + QStackedLayout *dataLayout = new QStackedLayout(); + addItem(dataLayout); + + FrogPilotListWidget *dataMainList = new FrogPilotListWidget(this); + ScrollView *dataMainPanel = new ScrollView(dataMainList, this); + dataLayout->addWidget(dataMainPanel); + + ButtonControl *deleteDrivingDataButton = new ButtonControl(tr("Delete Driving Data"), tr("DELETE"), tr("Delete all stored driving footage and data to free up space and clear private information.")); + QObject::connect(deleteDrivingDataButton, &ButtonControl::clicked, [=]() { QDir hdDataDir("/data/media/0/realdata_HD/"); QDir konikDataDir("/data/media/0/realdata_konik/"); QDir realDataDir("/data/media/0/realdata/"); - if (ConfirmationDialog::confirm(tr("Are you sure you want to delete all of your driving footage and data?"), tr("Delete"), this)) { + if (ConfirmationDialog::confirm(tr("Delete all driving data and footage?"), tr("Delete"), this)) { std::thread([=]() mutable { parent->keepScreenOn = true; - deleteDrivingDataBtn->setEnabled(false); - deleteDrivingDataBtn->setValue(tr("Deleting...")); + deleteDrivingDataButton->setEnabled(false); + deleteDrivingDataButton->setValue(tr("Deleting...")); QList footageDirs = {hdDataDir, konikDataDir, realDataDir}; for (const QDir &footageDir : footageDirs) { @@ -31,48 +48,54 @@ FrogPilotDataPanel::FrogPilotDataPanel(FrogPilotSettingsWindow *parent) : FrogPi } } - deleteDrivingDataBtn->setValue(tr("Deleted!")); + deleteDrivingDataButton->setValue(tr("Deleted!")); util::sleep_for(2500); - deleteDrivingDataBtn->setEnabled(true); - deleteDrivingDataBtn->setValue(""); + deleteDrivingDataButton->setEnabled(true); + deleteDrivingDataButton->setValue(""); parent->keepScreenOn = false; }).detach(); } }); - addItem(deleteDrivingDataBtn); + if (forceOpenDescriptions) { + deleteDrivingDataButton->showDescription(); + } + dataMainList->addItem(deleteDrivingDataButton); - ButtonControl *deleteErrorLogsBtn = new ButtonControl(tr("Delete Error Logs"), tr("DELETE"), tr("Deletes all stored error logs from your device. Ideal for freeing up space.")); - QObject::connect(deleteErrorLogsBtn, &ButtonControl::clicked, [=]() { + ButtonControl *deleteErrorLogsButton = new ButtonControl(tr("Delete Error Logs"), tr("DELETE"), tr("Delete collected error logs to free up space and clear old crash records.")); + QObject::connect(deleteErrorLogsButton, &ButtonControl::clicked, [=]() { QDir errorLogsDir("/data/error_logs"); - if (ConfirmationDialog::confirm(tr("Are you sure you want to delete all of the error logs?"), tr("Delete"), this)) { + if (ConfirmationDialog::confirm(tr("Delete all error logs?"), tr("Delete"), this)) { std::thread([=]() mutable { parent->keepScreenOn = true; - deleteErrorLogsBtn->setEnabled(false); - deleteErrorLogsBtn->setValue(tr("Deleting...")); + deleteErrorLogsButton->setEnabled(false); + deleteErrorLogsButton->setValue(tr("Deleting...")); errorLogsDir.removeRecursively(); errorLogsDir.mkpath("."); - deleteErrorLogsBtn->setValue(tr("Deleted!")); + deleteErrorLogsButton->setValue(tr("Deleted!")); util::sleep_for(2500); - deleteErrorLogsBtn->setEnabled(true); - deleteErrorLogsBtn->setValue(""); + deleteErrorLogsButton->setEnabled(true); + deleteErrorLogsButton->setValue(""); parent->keepScreenOn = false; }).detach(); } }); - addItem(deleteErrorLogsBtn); + if (forceOpenDescriptions) { + deleteErrorLogsButton->showDescription(); + } + dataMainList->addItem(deleteErrorLogsButton); - FrogPilotButtonsControl *screenRecordingsBtn = new FrogPilotButtonsControl(tr("Screen Recordings"), tr("Manage your screen recordings."), "", {tr("DELETE"), tr("DELETE ALL"), tr("RENAME")}); - QObject::connect(screenRecordingsBtn, &FrogPilotButtonsControl::buttonClicked, [=](int id) { + FrogPilotButtonsControl *screenRecordingsButton = new FrogPilotButtonsControl(tr("Screen Recordings"), tr("Delete or rename screen recordings."), "", {tr("DELETE"), tr("DELETE ALL"), tr("RENAME")}); + QObject::connect(screenRecordingsButton, &FrogPilotButtonsControl::buttonClicked, [=](int id) { QDir recordingsDir("/data/media/screen_recordings"); QStringList recordingsNames = recordingsDir.entryList(QDir::Files | QDir::NoDotAndDotDot); @@ -84,29 +107,29 @@ FrogPilotDataPanel::FrogPilotDataPanel(FrogPilotSettingsWindow *parent) : FrogPi } if (id == 0) { - QString selection = MultiOptionDialog::getSelection(tr("Select a recording to delete"), mp4Recordings, "", this); + QString selection = MultiOptionDialog::getSelection(tr("Choose a screen recording to delete"), mp4Recordings, "", this); if (!selection.isEmpty()) { - if (ConfirmationDialog::confirm(tr("Are you sure you want to delete this recording?"), tr("Delete"), this)) { + if (ConfirmationDialog::confirm(tr("Delete this screen recording?"), tr("Delete"), this)) { std::thread([=]() { parent->keepScreenOn = true; - screenRecordingsBtn->setEnabled(false); - screenRecordingsBtn->setValue(tr("Deleting...")); + screenRecordingsButton->setEnabled(false); + screenRecordingsButton->setValue(tr("Deleting...")); - screenRecordingsBtn->setVisibleButton(1, false); - screenRecordingsBtn->setVisibleButton(2, false); + screenRecordingsButton->setVisibleButton(1, false); + screenRecordingsButton->setVisibleButton(2, false); QFile::remove(recordingsDir.absoluteFilePath(selection)); - screenRecordingsBtn->setValue(tr("Deleted!")); + screenRecordingsButton->setValue(tr("Deleted!")); util::sleep_for(2500); - screenRecordingsBtn->setEnabled(true); - screenRecordingsBtn->setValue(""); + screenRecordingsButton->setEnabled(true); + screenRecordingsButton->setValue(""); - screenRecordingsBtn->setVisibleButton(1, true); - screenRecordingsBtn->setVisibleButton(2, true); + screenRecordingsButton->setVisibleButton(1, true); + screenRecordingsButton->setVisibleButton(2, true); parent->keepScreenOn = false; }).detach(); @@ -114,64 +137,65 @@ FrogPilotDataPanel::FrogPilotDataPanel(FrogPilotSettingsWindow *parent) : FrogPi } } else if (id == 1) { - if (ConfirmationDialog::confirm(tr("Are you sure you want to delete all screen recordings?"), tr("Delete All"), this)) { + if (ConfirmationDialog::confirm(tr("Delete all screen recordings?"), tr("Delete All"), this)) { std::thread([=]() mutable { parent->keepScreenOn = true; - screenRecordingsBtn->setEnabled(false); - screenRecordingsBtn->setValue(tr("Deleting...")); + screenRecordingsButton->setEnabled(false); + screenRecordingsButton->setValue(tr("Deleting...")); - screenRecordingsBtn->setVisibleButton(0, false); - screenRecordingsBtn->setVisibleButton(2, false); + screenRecordingsButton->setVisibleButton(0, false); + screenRecordingsButton->setVisibleButton(2, false); recordingsDir.removeRecursively(); recordingsDir.mkpath("."); - screenRecordingsBtn->setValue(tr("Deleted!")); + screenRecordingsButton->setValue(tr("Deleted!")); util::sleep_for(2500); - screenRecordingsBtn->setEnabled(true); - screenRecordingsBtn->setValue(""); + screenRecordingsButton->setEnabled(true); + screenRecordingsButton->setValue(""); - screenRecordingsBtn->setVisibleButton(0, true); - screenRecordingsBtn->setVisibleButton(2, true); + screenRecordingsButton->setVisibleButton(0, true); + screenRecordingsButton->setVisibleButton(2, true); parent->keepScreenOn = false; }).detach(); } } else if (id == 2) { - QString selection = MultiOptionDialog::getSelection(tr("Select a recording to rename"), mp4Recordings, "", this); + QString selection = MultiOptionDialog::getSelection(tr("Choose a screen recording to rename"), mp4Recordings, "", this); if (!selection.isEmpty()) { - QString newName = InputDialog::getText(tr("Enter a new name"), this, tr("Rename Recording")).trimmed().replace(" ", "_"); - if (!newName.isEmpty()) { + QString newBase = InputDialog::getText(tr("Enter a new name"), this, tr("Rename Screen Recording")).trimmed().replace(" ", "_"); + if (!newBase.isEmpty()) { + QString newName = newBase + ".mp4"; if (recordingsNames.contains(newName)) { - ConfirmationDialog::alert(tr("A recording with this name already exists. Please choose a different name."), this); + ConfirmationDialog::alert(tr("Name already in use. Please choose a different name."), this); return; } std::thread([=]() { parent->keepScreenOn = true; - screenRecordingsBtn->setEnabled(false); - screenRecordingsBtn->setValue(tr("Renaming...")); + screenRecordingsButton->setEnabled(false); + screenRecordingsButton->setValue(tr("Renaming...")); - screenRecordingsBtn->setVisibleButton(0, false); - screenRecordingsBtn->setVisibleButton(1, false); + screenRecordingsButton->setVisibleButton(0, false); + screenRecordingsButton->setVisibleButton(1, false); QString newPath = recordingsDir.absoluteFilePath(newName); QString oldPath = recordingsDir.absoluteFilePath(selection); QFile::rename(oldPath, newPath); - screenRecordingsBtn->setValue(tr("Renamed!")); + screenRecordingsButton->setValue(tr("Renamed!")); util::sleep_for(2500); - screenRecordingsBtn->setEnabled(true); - screenRecordingsBtn->setValue(""); + screenRecordingsButton->setEnabled(true); + screenRecordingsButton->setValue(""); - screenRecordingsBtn->setVisibleButton(0, true); - screenRecordingsBtn->setVisibleButton(1, true); + screenRecordingsButton->setVisibleButton(0, true); + screenRecordingsButton->setVisibleButton(1, true); parent->keepScreenOn = false; }).detach(); @@ -179,10 +203,13 @@ FrogPilotDataPanel::FrogPilotDataPanel(FrogPilotSettingsWindow *parent) : FrogPi } } }); - addItem(screenRecordingsBtn); + if (forceOpenDescriptions) { + screenRecordingsButton->showDescription(); + } + dataMainList->addItem(screenRecordingsButton); - FrogPilotButtonsControl *frogpilotBackupBtn = new FrogPilotButtonsControl(tr("FrogPilot Backups"), tr("Manage your FrogPilot backups."), "", {tr("BACKUP"), tr("DELETE"), tr("DELETE ALL"), tr("RESTORE")}); - QObject::connect(frogpilotBackupBtn, &FrogPilotButtonsControl::buttonClicked, [=](int id) { + FrogPilotButtonsControl *frogpilotBackupButton = new FrogPilotButtonsControl(tr("FrogPilot Backups"), tr("Create, delete, or restore FrogPilot backups."), "", {tr("BACKUP"), tr("DELETE"), tr("DELETE ALL"), tr("RESTORE")}); + QObject::connect(frogpilotBackupButton, &FrogPilotButtonsControl::buttonClicked, [=](int id) { QDir backupDir("/data/backups"); QStringList backupNames = backupDir.entryList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot, QDir::Name).filter(QRegularExpression("^(?!.*_in_progress(?:\\..*)?$).*$")); @@ -201,22 +228,22 @@ FrogPilotDataPanel::FrogPilotDataPanel(FrogPilotSettingsWindow *parent) : FrogPi } if (id == 0) { - QString nameSelection = InputDialog::getText(tr("Name your backup"), this, "", false, 1).trimmed().replace(" ", "_"); + QString nameSelection = InputDialog::getText(tr("Enter a name for this backup"), this, "", false, 1).trimmed().replace(" ", "_"); if (!nameSelection.isEmpty()) { if (backupNames.contains(nameSelection)) { - ConfirmationDialog::alert(tr("A backup with this name already exists. Please choose a different name."), this); + ConfirmationDialog::alert(tr("Name already in use. Please choose a different name."), this); return; } - bool compressed = FrogPilotConfirmationDialog::yesorno(tr("Do you want to compress this backup? This will take a few minutes, but the final result will be smaller and run in the background."), this); + bool compressed = FrogPilotConfirmationDialog::yesorno(tr("Compress this backup? This will save space and run in the background but take a bit longer."), this); std::thread([=]() { parent->keepScreenOn = true; - frogpilotBackupBtn->setEnabled(false); - frogpilotBackupBtn->setValue(tr("Backing up...")); + frogpilotBackupButton->setEnabled(false); + frogpilotBackupButton->setValue(tr("Backing up...")); - frogpilotBackupBtn->setVisibleButton(1, false); - frogpilotBackupBtn->setVisibleButton(2, false); - frogpilotBackupBtn->setVisibleButton(3, false); + frogpilotBackupButton->setVisibleButton(1, false); + frogpilotBackupButton->setVisibleButton(2, false); + frogpilotBackupButton->setVisibleButton(3, false); QString fullBackupPath = backupDir.filePath(nameSelection); QString inProgressBackupPath = fullBackupPath + "_in_progress"; @@ -225,7 +252,7 @@ FrogPilotDataPanel::FrogPilotDataPanel(FrogPilotSettingsWindow *parent) : FrogPi std::system(qPrintable("rsync -av /data/openpilot/ " + inProgressBackupPath + "/")); if (compressed) { - frogpilotBackupBtn->setValue(tr("Compressing...")); + frogpilotBackupButton->setValue(tr("Compressing...")); std::system(qPrintable("tar -cf - -C " + inProgressBackupPath + " . | zstd -2 -T0 -o " + fullBackupPath + "_in_progress.tar.zst")); @@ -238,53 +265,52 @@ FrogPilotDataPanel::FrogPilotDataPanel(FrogPilotSettingsWindow *parent) : FrogPi QDir().rename(inProgressBackupPath, fullBackupPath); } - frogpilotBackupBtn->setValue(tr("Backup created!")); + frogpilotBackupButton->setValue(tr("Backup created!")); util::sleep_for(2500); - frogpilotBackupBtn->setEnabled(true); - frogpilotBackupBtn->setValue(""); + frogpilotBackupButton->setEnabled(true); + frogpilotBackupButton->setValue(""); - frogpilotBackupBtn->setVisibleButton(1, true); - frogpilotBackupBtn->setVisibleButton(2, true); - frogpilotBackupBtn->setVisibleButton(3, true); + frogpilotBackupButton->setVisibleButton(1, true); + frogpilotBackupButton->setVisibleButton(2, true); + frogpilotBackupButton->setVisibleButton(3, true); parent->keepScreenOn = false; }).detach(); } } else if (id == 1) { - QString selectionFriendly = MultiOptionDialog::getSelection(tr("Select a backup to delete"), backupFriendlyMap.keys(), "", this); + QString selectionFriendly = MultiOptionDialog::getSelection(tr("Choose a FrogPilot backup to delete"), backupFriendlyMap.keys(), "", this); if (!selectionFriendly.isEmpty()) { QString selection = backupFriendlyMap.value(selectionFriendly); - if (ConfirmationDialog::confirm(tr("Are you sure you want to delete this backup?"), tr("Delete"), this)) { + if (ConfirmationDialog::confirm(tr("Delete this backup?"), tr("Delete"), this)) { std::thread([=]() { parent->keepScreenOn = true; - frogpilotBackupBtn->setEnabled(false); - frogpilotBackupBtn->setValue(tr("Deleting...")); + frogpilotBackupButton->setEnabled(false); + frogpilotBackupButton->setValue(tr("Deleting...")); - frogpilotBackupBtn->setVisibleButton(0, false); - frogpilotBackupBtn->setVisibleButton(2, false); - frogpilotBackupBtn->setVisibleButton(3, false); + frogpilotBackupButton->setVisibleButton(0, false); + frogpilotBackupButton->setVisibleButton(2, false); + frogpilotBackupButton->setVisibleButton(3, false); - QDir dirToDelete(backupDir.filePath(selection)); if (selection.endsWith(".tar.gz") || selection.endsWith(".tar.zst")) { - QFile::remove(dirToDelete.absolutePath()); + QFile::remove(backupDir.filePath(selection)); } else { - dirToDelete.removeRecursively(); + QDir(backupDir.filePath(selection)).removeRecursively(); } - frogpilotBackupBtn->setValue(tr("Deleted!")); + frogpilotBackupButton->setValue(tr("Deleted!")); util::sleep_for(2500); - frogpilotBackupBtn->setEnabled(true); - frogpilotBackupBtn->setValue(""); + frogpilotBackupButton->setEnabled(true); + frogpilotBackupButton->setValue(""); - frogpilotBackupBtn->setVisibleButton(0, true); - frogpilotBackupBtn->setVisibleButton(2, true); - frogpilotBackupBtn->setVisibleButton(3, true); + frogpilotBackupButton->setVisibleButton(0, true); + frogpilotBackupButton->setVisibleButton(2, true); + frogpilotBackupButton->setVisibleButton(3, true); parent->keepScreenOn = false; }).detach(); @@ -292,49 +318,49 @@ FrogPilotDataPanel::FrogPilotDataPanel(FrogPilotSettingsWindow *parent) : FrogPi } } else if (id == 2) { - if (ConfirmationDialog::confirm(tr("Are you sure you want to delete all FrogPilot backups?"), tr("Delete All"), this)) { + if (ConfirmationDialog::confirm(tr("Delete all backups?"), tr("Delete All"), this)) { std::thread([=]() mutable { parent->keepScreenOn = true; - frogpilotBackupBtn->setEnabled(false); - frogpilotBackupBtn->setValue(tr("Deleting...")); + frogpilotBackupButton->setEnabled(false); + frogpilotBackupButton->setValue(tr("Deleting...")); - frogpilotBackupBtn->setVisibleButton(0, false); - frogpilotBackupBtn->setVisibleButton(1, false); - frogpilotBackupBtn->setVisibleButton(3, false); + frogpilotBackupButton->setVisibleButton(0, false); + frogpilotBackupButton->setVisibleButton(1, false); + frogpilotBackupButton->setVisibleButton(3, false); backupDir.removeRecursively(); backupDir.mkpath("."); - frogpilotBackupBtn->setValue(tr("Deleted!")); + frogpilotBackupButton->setValue(tr("Deleted!")); util::sleep_for(2500); - frogpilotBackupBtn->setEnabled(true); - frogpilotBackupBtn->setValue(""); + frogpilotBackupButton->setEnabled(true); + frogpilotBackupButton->setValue(""); - frogpilotBackupBtn->setVisibleButton(0, true); - frogpilotBackupBtn->setVisibleButton(1, true); - frogpilotBackupBtn->setVisibleButton(3, true); + frogpilotBackupButton->setVisibleButton(0, true); + frogpilotBackupButton->setVisibleButton(1, true); + frogpilotBackupButton->setVisibleButton(3, true); parent->keepScreenOn = false; }).detach(); } } else if (id == 3) { - QString selectionFriendly = MultiOptionDialog::getSelection(tr("Select a restore point"), backupFriendlyMap.keys(), "", this); + QString selectionFriendly = MultiOptionDialog::getSelection(tr("Choose a backup to restore"), backupFriendlyMap.keys(), "", this); if (!selectionFriendly.isEmpty()) { QString selection = backupFriendlyMap.value(selectionFriendly); - if (ConfirmationDialog::confirm(tr("Are you sure you want to restore this version of FrogPilot?"), tr("Restore"), this)) { + if (ConfirmationDialog::confirm(tr("Restore this backup?"), tr("Restore"), this)) { std::thread([=]() { parent->keepScreenOn = true; - frogpilotBackupBtn->setEnabled(false); - frogpilotBackupBtn->setValue(tr("Restoring...")); + frogpilotBackupButton->setEnabled(false); + frogpilotBackupButton->setValue(tr("Restoring...")); - frogpilotBackupBtn->setVisibleButton(0, false); - frogpilotBackupBtn->setVisibleButton(1, false); - frogpilotBackupBtn->setVisibleButton(2, false); + frogpilotBackupButton->setVisibleButton(0, false); + frogpilotBackupButton->setVisibleButton(1, false); + frogpilotBackupButton->setVisibleButton(2, false); QString extractDirectory = "/data/restore_temp"; QString sourcePath = backupDir.filePath(selection); @@ -342,17 +368,19 @@ FrogPilotDataPanel::FrogPilotDataPanel(FrogPilotSettingsWindow *parent) : FrogPi QDir().mkpath(extractDirectory); - std::system(qPrintable("tar --strip-components=1 -xzf " + sourcePath + " -C " + extractDirectory)); + if (selection.endsWith(".tar.gz")) { + frogpilotBackupButton->setValue(tr("Extracting...")); - if (selection.endsWith(".tar.zst")) { - frogpilotBackupBtn->setValue(tr("Extracting...")); - - QDir().mkpath(extractDirectory); + std::system(qPrintable("tar --strip-components=1 -xzf " + sourcePath + " -C " + extractDirectory)); + } else if (selection.endsWith(".tar.zst")) { + frogpilotBackupButton->setValue(tr("Extracting...")); std::system(qPrintable("zstd -d " + sourcePath + " -o " + extractDirectory + "/backup.tar")); std::system(qPrintable("tar --strip-components=1 -xf " + extractDirectory + "/backup.tar -C " + extractDirectory)); QFile::remove(extractDirectory + "/backup.tar"); + } else { + std::system(qPrintable("rsync -av " + sourcePath + "/ " + extractDirectory + "/")); } QDir().mkpath(targetPath); @@ -369,11 +397,11 @@ FrogPilotDataPanel::FrogPilotDataPanel(FrogPilotSettingsWindow *parent) : FrogPi QFile("/cache/on_backup").open(QIODevice::WriteOnly); - frogpilotBackupBtn->setValue(tr("Restored!")); + frogpilotBackupButton->setValue(tr("Restored!")); util::sleep_for(2500); - frogpilotBackupBtn->setValue(tr("Rebooting...")); + frogpilotBackupButton->setValue(tr("Rebooting...")); util::sleep_for(2500); @@ -383,10 +411,13 @@ FrogPilotDataPanel::FrogPilotDataPanel(FrogPilotSettingsWindow *parent) : FrogPi } } }); - addItem(frogpilotBackupBtn); + if (forceOpenDescriptions) { + frogpilotBackupButton->showDescription(); + } + dataMainList->addItem(frogpilotBackupButton); - FrogPilotButtonsControl *toggleBackupBtn = new FrogPilotButtonsControl(tr("Toggle Backups"), tr("Manage your toggle backups."), "", {tr("BACKUP"), tr("DELETE"), tr("DELETE ALL"), tr("RESTORE")}); - QObject::connect(toggleBackupBtn, &FrogPilotButtonsControl::buttonClicked, [=](int id) { + FrogPilotButtonsControl *toggleBackupButton = new FrogPilotButtonsControl(tr("Toggle Backups"), tr("Create, delete, or restore toggle backups."), "", {tr("BACKUP"), tr("DELETE"), tr("DELETE ALL"), tr("RESTORE")}); + QObject::connect(toggleBackupButton, &FrogPilotButtonsControl::buttonClicked, [=](int id) { QDir backupDir("/data/toggle_backups"); QStringList backupNames = backupDir.entryList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot, QDir::Name).filter(QRegularExpression("^(?!.*_in_progress$).*$")); @@ -414,21 +445,21 @@ FrogPilotDataPanel::FrogPilotDataPanel(FrogPilotSettingsWindow *parent) : FrogPi } if (id == 0) { - QString nameSelection = InputDialog::getText(tr("Name your toggle backup"), this, "", false, 1).trimmed().replace(" ", "_"); + QString nameSelection = InputDialog::getText(tr("Enter a name for this backup"), this, "", false, 1).trimmed().replace(" ", "_"); if (!nameSelection.isEmpty()) { if (backupNames.contains(nameSelection)) { - ConfirmationDialog::alert(tr("A toggle backup with this name already exists. Please choose a different name."), this); + ConfirmationDialog::alert(tr("Name already in use. Please choose a different name."), this); return; } std::thread([=]() { parent->keepScreenOn = true; - toggleBackupBtn->setEnabled(false); - toggleBackupBtn->setValue(tr("Backing up...")); + toggleBackupButton->setEnabled(false); + toggleBackupButton->setValue(tr("Backing up...")); - toggleBackupBtn->setVisibleButton(1, false); - toggleBackupBtn->setVisibleButton(2, false); - toggleBackupBtn->setVisibleButton(3, false); + toggleBackupButton->setVisibleButton(1, false); + toggleBackupButton->setVisibleButton(2, false); + toggleBackupButton->setVisibleButton(3, false); QString fullBackupPath = backupDir.filePath(nameSelection); QString inProgressBackupPath = fullBackupPath + "_in_progress"; @@ -439,49 +470,49 @@ FrogPilotDataPanel::FrogPilotDataPanel(FrogPilotSettingsWindow *parent) : FrogPi QDir().rename(inProgressBackupPath, fullBackupPath); - toggleBackupBtn->setValue(tr("Backup created!")); + toggleBackupButton->setValue(tr("Backup created!")); util::sleep_for(2500); - toggleBackupBtn->setEnabled(true); - toggleBackupBtn->setValue(""); + toggleBackupButton->setEnabled(true); + toggleBackupButton->setValue(""); - toggleBackupBtn->setVisibleButton(1, true); - toggleBackupBtn->setVisibleButton(2, true); - toggleBackupBtn->setVisibleButton(3, true); + toggleBackupButton->setVisibleButton(1, true); + toggleBackupButton->setVisibleButton(2, true); + toggleBackupButton->setVisibleButton(3, true); parent->keepScreenOn = false; }).detach(); } } else if (id == 1) { - QString selectionFriendly = MultiOptionDialog::getSelection(tr("Select a toggle backup to delete"), backupFriendlyMap.keys(), "", this); + QString selectionFriendly = MultiOptionDialog::getSelection(tr("Choose a backup to delete"), backupFriendlyMap.keys(), "", this); if (!selectionFriendly.isEmpty()) { QString selection = backupFriendlyMap.value(selectionFriendly); - if (ConfirmationDialog::confirm(tr("Are you sure you want to delete this toggle backup?"), tr("Delete"), this)) { + if (ConfirmationDialog::confirm(tr("Delete this backup?"), tr("Delete"), this)) { std::thread([=]() { parent->keepScreenOn = true; - toggleBackupBtn->setEnabled(false); - toggleBackupBtn->setValue(tr("Deleting...")); + toggleBackupButton->setEnabled(false); + toggleBackupButton->setValue(tr("Deleting...")); - toggleBackupBtn->setVisibleButton(0, false); - toggleBackupBtn->setVisibleButton(2, false); - toggleBackupBtn->setVisibleButton(3, false); + toggleBackupButton->setVisibleButton(0, false); + toggleBackupButton->setVisibleButton(2, false); + toggleBackupButton->setVisibleButton(3, false); QDir dirToDelete(backupDir.filePath(selection)); dirToDelete.removeRecursively(); - toggleBackupBtn->setValue(tr("Deleted!")); + toggleBackupButton->setValue(tr("Deleted!")); util::sleep_for(2500); - toggleBackupBtn->setEnabled(true); - toggleBackupBtn->setValue(""); + toggleBackupButton->setEnabled(true); + toggleBackupButton->setValue(""); - toggleBackupBtn->setVisibleButton(0, true); - toggleBackupBtn->setVisibleButton(2, true); - toggleBackupBtn->setVisibleButton(3, true); + toggleBackupButton->setVisibleButton(0, true); + toggleBackupButton->setVisibleButton(2, true); + toggleBackupButton->setVisibleButton(3, true); parent->keepScreenOn = false; }).detach(); @@ -489,49 +520,49 @@ FrogPilotDataPanel::FrogPilotDataPanel(FrogPilotSettingsWindow *parent) : FrogPi } } else if (id == 2) { - if (ConfirmationDialog::confirm(tr("Are you sure you want to delete all toggle backups?"), tr("Delete All"), this)) { + if (ConfirmationDialog::confirm(tr("Delete all backups?"), tr("Delete All"), this)) { std::thread([=]() mutable { parent->keepScreenOn = true; - toggleBackupBtn->setEnabled(false); - toggleBackupBtn->setValue(tr("Deleting...")); + toggleBackupButton->setEnabled(false); + toggleBackupButton->setValue(tr("Deleting...")); - toggleBackupBtn->setVisibleButton(0, false); - toggleBackupBtn->setVisibleButton(1, false); - toggleBackupBtn->setVisibleButton(3, false); + toggleBackupButton->setVisibleButton(0, false); + toggleBackupButton->setVisibleButton(1, false); + toggleBackupButton->setVisibleButton(3, false); backupDir.removeRecursively(); backupDir.mkpath("."); - toggleBackupBtn->setValue(tr("Deleted!")); + toggleBackupButton->setValue(tr("Deleted!")); util::sleep_for(2500); - toggleBackupBtn->setEnabled(true); - toggleBackupBtn->setValue(""); + toggleBackupButton->setEnabled(true); + toggleBackupButton->setValue(""); - toggleBackupBtn->setVisibleButton(0, true); - toggleBackupBtn->setVisibleButton(1, true); - toggleBackupBtn->setVisibleButton(3, true); + toggleBackupButton->setVisibleButton(0, true); + toggleBackupButton->setVisibleButton(1, true); + toggleBackupButton->setVisibleButton(3, true); parent->keepScreenOn = false; }).detach(); } } else if (id == 3) { - QString selectionFriendly = MultiOptionDialog::getSelection(tr("Select a toggle restore point"), backupFriendlyMap.keys(), "", this); + QString selectionFriendly = MultiOptionDialog::getSelection(tr("Choose a backup to restore"), backupFriendlyMap.keys(), "", this); if (!selectionFriendly.isEmpty()) { QString selection = backupFriendlyMap.value(selectionFriendly); - if (ConfirmationDialog::confirm(tr("Are you sure you want to restore this toggle backup?"), tr("Restore"), this)) { + if (ConfirmationDialog::confirm(tr("Restore this backup?"), tr("Restore"), this)) { std::thread([=]() { parent->keepScreenOn = true; - toggleBackupBtn->setEnabled(false); - toggleBackupBtn->setValue(tr("Restoring...")); + toggleBackupButton->setEnabled(false); + toggleBackupButton->setValue(tr("Restoring...")); - toggleBackupBtn->setVisibleButton(0, false); - toggleBackupBtn->setVisibleButton(1, false); - toggleBackupBtn->setVisibleButton(2, false); + toggleBackupButton->setVisibleButton(0, false); + toggleBackupButton->setVisibleButton(1, false); + toggleBackupButton->setVisibleButton(2, false); QString sourcePath = backupDir.filePath(selection); QString targetPath = "/data/params/d"; @@ -542,16 +573,16 @@ FrogPilotDataPanel::FrogPilotDataPanel(FrogPilotSettingsWindow *parent) : FrogPi updateFrogPilotToggles(); - toggleBackupBtn->setValue(tr("Restored!")); + toggleBackupButton->setValue(tr("Restored!")); util::sleep_for(2500); - toggleBackupBtn->setEnabled(true); - toggleBackupBtn->setValue(""); + toggleBackupButton->setEnabled(true); + toggleBackupButton->setValue(""); - toggleBackupBtn->setVisibleButton(0, true); - toggleBackupBtn->setVisibleButton(1, true); - toggleBackupBtn->setVisibleButton(2, true); + toggleBackupButton->setVisibleButton(0, true); + toggleBackupButton->setVisibleButton(1, true); + toggleBackupButton->setVisibleButton(2, true); parent->keepScreenOn = false; }).detach(); @@ -559,5 +590,8 @@ FrogPilotDataPanel::FrogPilotDataPanel(FrogPilotSettingsWindow *parent) : FrogPi } } }); - addItem(toggleBackupBtn); + if (forceOpenDescriptions) { + toggleBackupButton->showDescription(); + } + dataMainList->addItem(toggleBackupButton); } diff --git a/frogpilot/ui/qt/offroad/data_settings.h b/frogpilot/ui/qt/offroad/data_settings.h index fd0571251..e481a8873 100644 --- a/frogpilot/ui/qt/offroad/data_settings.h +++ b/frogpilot/ui/qt/offroad/data_settings.h @@ -10,4 +10,6 @@ public: private: FrogPilotSettingsWindow *parent; + + Params params; }; diff --git a/frogpilot/ui/qt/offroad/device_settings.cc b/frogpilot/ui/qt/offroad/device_settings.cc index 7111b802c..aa5be5ae0 100644 --- a/frogpilot/ui/qt/offroad/device_settings.cc +++ b/frogpilot/ui/qt/offroad/device_settings.cc @@ -2,6 +2,15 @@ #include "frogpilot/ui/qt/offroad/device_settings.h" FrogPilotDevicePanel::FrogPilotDevicePanel(FrogPilotSettingsWindow *parent) : FrogPilotListWidget(parent), parent(parent) { + QJsonObject shownDescriptions = QJsonDocument::fromJson(QString::fromStdString(params.get("ShownToggleDescriptions")).toUtf8()).object(); + QString className = this->metaObject()->className(); + + if (!shownDescriptions.value(className).toBool(false)) { + forceOpenDescriptions = true; + shownDescriptions.insert(className, true); + params.put("ShownToggleDescriptions", QJsonDocument(shownDescriptions).toJson(QJsonDocument::Compact).toStdString()); + } + ScreenRecorder *screenRecorder = new ScreenRecorder(this); screenRecorder->setVisible(false); @@ -24,21 +33,22 @@ FrogPilotDevicePanel::FrogPilotDevicePanel(FrogPilotSettingsWindow *parent) : Fr deviceLayout->addWidget(screenPanel); const std::vector> deviceToggles { - {"DeviceManagement", tr("Device Settings"), tr("Settings that control device behavior."), "../../frogpilot/assets/toggle_icons/icon_device.png"}, - {"LowVoltageShutdown", tr("Battery Shutdown Threshold"), tr("Automatically shut down the device when the vehicle's battery voltage reaches the set threshold preventing excessive battery drain to protect the battery."), ""}, - {"DeviceShutdown", tr("Device Shutdown Timer"), tr("How long the device stays on for after you go offroad."), ""}, - {"NoLogging", tr("Disable Data Logging"), QString("%1

%2").arg(tr("WARNING: This will prevent your drives from being recorded and all data will be unobtainable!")).arg(tr("Disable all data logging to improve privacy.")), ""}, - {"NoUploads", tr("Disable Data Uploads"), QString("%1

%2").arg(tr("WARNING: This will prevent your drives from appearing on comma connect which may impact debugging and support!")).arg(tr("Prevent the device from sending any data to comma's servers.")), ""}, - {"HigherBitrate", tr("High Bitrate Recording"), tr("Record driving footage at double the standard bitrate for improved video quality in driving logs."), ""}, - {"IncreaseThermalLimits", tr("Increase Thermal Safety Limit"), QString("%1

%2").arg(tr("WARNING: This can damage your device by exceeding safe temperature limits!")).arg(tr("Allow the device to run hotter than comma recommended limit.")), ""}, - {"UseKonikServer", tr("Use Konik's Server Instead of comma's"), tr("Upload your driving data to connect.konik.ai instead of connect.comma.ai."), ""}, + {"DeviceManagement", tr("Device Settings"), tr("Settings that control how the device runs, powers off, and manages driving data."), "../../frogpilot/assets/toggle_icons/icon_device.png"}, + {"DeviceShutdown", tr("Device Shutdown Timer"), tr("Keep the device on for the set amount of time after a drive before it shuts down automatically."), ""}, + {"NoLogging", tr("Disable Logging"), QString("%1

%2").arg(tr("WARNING: This will prevent your drives from being recorded and all data will be unobtainable!")).arg(tr("Prevent the device from saving driving data.")), ""}, + {"NoUploads", tr("Disable Uploads"), QString("%1

%2").arg(tr("WARNING: This will prevent your drives from being uploaded to comma connect which will impact debugging and official support from comma!")).arg(tr("Prevent the device from uploading driving data.")), ""}, + {"HigherBitrate", tr("High-Quality Recording"), tr("Save drive footage in higher video quality."), ""}, + {"LowVoltageShutdown", tr("Low-Voltage Cutoff"), tr("While parked, if the battery voltage falls below the set level, the device shuts down to prevent excessive battery drain."), ""}, + {"IncreaseThermalLimits", tr("Raise Temperature Limits"), QString("%1

%2").arg(tr("WARNING: Running at higher temperatures may damage your device!")).arg(tr("Allow the device to run at higher temperatures before throttling or shutting down. Use only if you understand the risks!")), ""}, + {"UseKonikServer", tr("Use Konik Server"), tr("Upload driving data to \"connect.konik.ai\" instead of \"connect.comma.ai\"."), ""}, - {"ScreenManagement", tr("Screen Settings"), tr("Settings that control screen behavior."), "../../frogpilot/assets/toggle_icons/icon_light.png"}, - {"ScreenBrightness", tr("Screen Brightness (Offroad)"), tr("The screen brightness when not driving."), ""}, - {"ScreenBrightnessOnroad", tr("Screen Brightness (Onroad)"), tr("The screen brightness while driving."), ""}, - {"ScreenRecorder", tr("Screen Recorder"), tr("Enable a button in the driving screen to record the screen."), ""}, - {"ScreenTimeout", tr("Screen Timeout (Offroad)"), tr("How long it takes for the screen to turn off when not driving."), ""}, - {"ScreenTimeoutOnroad", tr("Screen Timeout (Onroad)"), tr("How long it takes for the screen to turn off while driving."), ""}, + {"ScreenManagement", tr("Screen Settings"), tr("Settings that control screen brightness, screen recording, and timeout duration."), "../../frogpilot/assets/toggle_icons/icon_light.png"}, + {"ScreenBrightness", tr("Screen Brightness (Offroad)"), tr("The screen brightness while not driving."), ""}, + {"ScreenBrightnessOnroad", tr("Screen Brightness (Onroad)"), tr("The screen brightness while driving."), ""}, + {"ScreenRecorder", tr("Screen Recorder"), tr("Add a button to the driving screen to record the display."), ""}, + {"ScreenTimeout", tr("Screen Timeout (Offroad)"), tr("How long the screen stays on after being tapped while not driving."), ""}, + {"ScreenTimeoutOnroad", tr("Screen Timeout (Onroad)"), tr("How long the screen stays on after being tapped while driving."), ""}, + {"StandbyMode", tr("Standby Mode"), tr("Turn the screen off while driving and automatically wake it up for alerts or engagement state changes."), ""}, {"IgnoreMe", "Ignore Me", "This is simply used to fix the layout when the user opens the descriptions and the menu gets wonky. No idea why it happens, but I can't be asked to properly fix it so whatever. Sue me.", ""}, {"IgnoreMe2", "Ignore Me", "This is simply used to fix the layout when the user opens the descriptions and the menu gets wonky. No idea why it happens, but I can't be asked to properly fix it so whatever. Sue me.", ""}, @@ -64,7 +74,7 @@ FrogPilotDevicePanel::FrogPilotDevicePanel(FrogPilotSettingsWindow *parent) : Fr deviceToggle = new FrogPilotParamValueControl(param, title, desc, icon, 0, 33, QString(), shutdownLabels, 1, true); } else if (param == "NoUploads") { std::vector uploadsToggles{"DisableOnroadUploads"}; - std::vector uploadsToggleNames{tr("Only Disable While Onroad")}; + std::vector uploadsToggleNames{tr("Disable Onroad Only")}; deviceToggle = new FrogPilotButtonToggleControl(param, title, desc, icon, uploadsToggles, uploadsToggleNames); } else if (param == "LowVoltageShutdown") { deviceToggle = new FrogPilotParamValueControl(param, title, desc, icon, 11.8, 12.5, tr(" volts"), std::map(), 0.1); @@ -113,9 +123,9 @@ FrogPilotDevicePanel::FrogPilotDevicePanel(FrogPilotSettingsWindow *parent) : Fr toggles[param] = deviceToggle; - if (deviceManagementKeys.find(param) != deviceManagementKeys.end()) { + if (deviceManagementKeys.contains(param)) { deviceManagementList->addItem(deviceToggle); - } else if (screenKeys.find(param) != screenKeys.end()) { + } else if (screenKeys.contains(param)) { screenList->addItem(deviceToggle); } else { deviceList->addItem(deviceToggle); @@ -124,9 +134,15 @@ FrogPilotDevicePanel::FrogPilotDevicePanel(FrogPilotSettingsWindow *parent) : Fr } if (FrogPilotManageControl *frogPilotManageToggle = qobject_cast(deviceToggle)) { - QObject::connect(frogPilotManageToggle, &FrogPilotManageControl::manageButtonClicked, this, &FrogPilotDevicePanel::openSubPanel); + QObject::connect(frogPilotManageToggle, &FrogPilotManageControl::manageButtonClicked, [this]() { + emit openSubPanel(); + openDescriptions(forceOpenDescriptions, toggles); + }); } + QObject::connect(deviceToggle, &AbstractControl::hideDescriptionEvent, [this]() { + update(); + }); QObject::connect(deviceToggle, &AbstractControl::showDescriptionEvent, [this]() { update(); }); @@ -136,10 +152,10 @@ FrogPilotDevicePanel::FrogPilotDevicePanel(FrogPilotSettingsWindow *parent) : Fr static_cast(toggles["NoLogging"])->setConfirmation(true, false); static_cast(toggles["NoUploads"])->setConfirmation(true, false); - std::set brightnessKeys = {"ScreenBrightness", "ScreenBrightnessOnroad"}; + QSet brightnessKeys = {"ScreenBrightness", "ScreenBrightnessOnroad"}; for (const QString &key : brightnessKeys) { FrogPilotParamValueControl *paramControl = static_cast(toggles[key]); - QObject::connect(paramControl, &FrogPilotParamValueControl::valueChanged, [this, key](int value) { + QObject::connect(paramControl, &FrogPilotParamValueControl::valueChanged, [key, this](int value) { if (!started && key == "ScreenBrightness") { Hardware::set_brightness(value); } else if (started && key == "ScreenBrightnessOnroad") { @@ -148,15 +164,15 @@ FrogPilotDevicePanel::FrogPilotDevicePanel(FrogPilotSettingsWindow *parent) : Fr }); } - std::set forceUpdateKeys = {"NoUploads"}; + QSet forceUpdateKeys = {"NoUploads"}; for (const QString &key : forceUpdateKeys) { QObject::connect(static_cast(toggles[key]), &FrogPilotButtonToggleControl::buttonClicked, this, &FrogPilotDevicePanel::updateToggles); QObject::connect(static_cast(toggles[key]), &ToggleControl::toggleFlipped, this, &FrogPilotDevicePanel::updateToggles); } - std::set rebootKeys = {"HigherBitrate", "UseKonikServer"}; + QSet rebootKeys = {"HigherBitrate", "UseKonikServer"}; for (const QString &key : rebootKeys) { - QObject::connect(static_cast(toggles[key]), &ToggleControl::toggleFlipped, [this, key](bool state) { + QObject::connect(static_cast(toggles[key]), &ToggleControl::toggleFlipped, [key, this](bool state) { QString filePath; if (key == "HigherBitrate") { filePath = "/cache/use_HD"; @@ -184,7 +200,12 @@ FrogPilotDevicePanel::FrogPilotDevicePanel(FrogPilotSettingsWindow *parent) : Fr }); } - QObject::connect(parent, &FrogPilotSettingsWindow::closeSubPanel, [deviceLayout, devicePanel] {deviceLayout->setCurrentWidget(devicePanel);}); + openDescriptions(forceOpenDescriptions, toggles); + + QObject::connect(parent, &FrogPilotSettingsWindow::closeSubPanel, [deviceLayout, devicePanel, this] { + openDescriptions(forceOpenDescriptions, toggles); + deviceLayout->setCurrentWidget(devicePanel); + }); QObject::connect(uiState(), &UIState::uiUpdate, this, &FrogPilotDevicePanel::updateState); } @@ -205,13 +226,13 @@ void FrogPilotDevicePanel::updateState(const UIState &s) { void FrogPilotDevicePanel::updateToggles() { for (auto &[key, toggle] : toggles) { - if (parentKeys.find(key) != parentKeys.end()) { + if (parentKeys.contains(key)) { toggle->setVisible(false); } } for (auto &[key, toggle] : toggles) { - if (parentKeys.find(key) != parentKeys.end()) { + if (parentKeys.contains(key)) { continue; } @@ -228,13 +249,15 @@ void FrogPilotDevicePanel::updateToggles() { toggle->setVisible(setVisible); if (setVisible) { - if (deviceManagementKeys.find(key) != deviceManagementKeys.end()) { + if (deviceManagementKeys.contains(key)) { toggles["DeviceManagement"]->setVisible(true); - } else if (screenKeys.find(key) != screenKeys.end()) { + } else if (screenKeys.contains(key)) { toggles["ScreenManagement"]->setVisible(true); } } } + openDescriptions(forceOpenDescriptions, toggles); + update(); } diff --git a/frogpilot/ui/qt/offroad/device_settings.h b/frogpilot/ui/qt/offroad/device_settings.h index 13ded3be4..97ebe6def 100644 --- a/frogpilot/ui/qt/offroad/device_settings.h +++ b/frogpilot/ui/qt/offroad/device_settings.h @@ -1,7 +1,5 @@ #pragma once -#include - #include "frogpilot/ui/qt/offroad/frogpilot_settings.h" class FrogPilotDevicePanel : public FrogPilotListWidget { @@ -20,16 +18,17 @@ private: void updateState(const UIState &s); void updateToggles(); + bool forceOpenDescriptions; bool started; int tuningLevel; std::map toggles; - std::set deviceManagementKeys = {"DeviceShutdown", "HigherBitrate", "IncreaseThermalLimits", "LowVoltageShutdown", "NoLogging", "NoUploads", "UseKonikServer"}; - std::set screenKeys = {"ScreenBrightness", "ScreenBrightnessOnroad", "ScreenRecorder", "ScreenTimeout", "ScreenTimeoutOnroad"}; + QSet deviceManagementKeys = {"DeviceShutdown", "HigherBitrate", "IncreaseThermalLimits", "LowVoltageShutdown", "NoLogging", "NoUploads", "UseKonikServer"}; + QSet screenKeys = {"ScreenBrightness", "ScreenBrightnessOnroad", "ScreenRecorder", "ScreenTimeout", "ScreenTimeoutOnroad", "StandbyMode"}; - std::set parentKeys; + QSet parentKeys; FrogPilotSettingsWindow *parent; diff --git a/frogpilot/ui/qt/offroad/frogpilot_settings.cc b/frogpilot/ui/qt/offroad/frogpilot_settings.cc index 9ed6b4e42..64dc5cfb1 100644 --- a/frogpilot/ui/qt/offroad/frogpilot_settings.cc +++ b/frogpilot/ui/qt/offroad/frogpilot_settings.cc @@ -55,12 +55,12 @@ void FrogPilotSettingsWindow::createPanelButtons(FrogPilotListWidget *list) { }; std::vector> panelInfo = { - {tr("Alerts and Sounds"), tr("FrogPilot settings for alert volumes and custom notifications to stay informed about important driving events."), "../../frogpilot/assets/toggle_icons/icon_sound.png"}, - {tr("Driving Controls"), tr("FrogPilot settings for acceleration, braking, and steering."), "../../frogpilot/assets/toggle_icons/icon_steering.png"}, - {tr("Navigation"), tr("Download map data for Curve Speed Control, Speed Limit Controller, and set up Navigate on openpilot (NOO)."), "../../frogpilot/assets/toggle_icons/icon_map.png"}, - {tr("System Management"), tr("Data storage management, debugging tools, device settings, screen behavior settings, system backups, and utilities to maintain, optimize, and troubleshoot FrogPilot."), "../../frogpilot/assets/toggle_icons/icon_system.png"}, - {tr("Theme and Appearance"), tr("FrogPilot settings for the current theme, driving-screen, and the overall user interface."), "../../frogpilot/assets/toggle_icons/icon_display.png"}, - {tr("Vehicle Controls"), tr("Options unique to supported manufacturers and vehicle fingerprint management."), "../../frogpilot/assets/toggle_icons/icon_vehicle.png"} + {tr("Alerts and Sounds"), tr("Adjust alert volumes and enable custom notifications."), "../../frogpilot/assets/toggle_icons/icon_sound.png"}, + {tr("Driving Controls"), tr("Fine-tune custom FrogPilot acceleration, braking, and steering controls."), "../../frogpilot/assets/toggle_icons/icon_steering.png"}, + {tr("Navigation"), tr("Download map data for the \"Speed Limit Controller\" and configure \"Navigate on openpilot\" (NOO)."), "../../frogpilot/assets/toggle_icons/icon_map.png"}, + {tr("System Settings"), tr("Manage backups, device settings, screen options, storage, and tools to keep FrogPilot running smoothly."), "../../frogpilot/assets/toggle_icons/icon_system.png"}, + {tr("Theme and Appearance"), tr("Customize the look of the driving screen and interface, including themes!"), "../../frogpilot/assets/toggle_icons/icon_display.png"}, + {tr("Vehicle Settings"), tr("Configure car-specific options and steering wheel button mappings."), "../../frogpilot/assets/toggle_icons/icon_vehicle.png"} }; for (size_t i = 0; i < panelInfo.size(); ++i) { @@ -85,11 +85,18 @@ void FrogPilotSettingsWindow::createPanelButtons(FrogPilotListWidget *list) { } FrogPilotButtonsControl *panelButton = new FrogPilotButtonsControl(title, description, icon, labels); + if (title == tr("Alerts and Sounds")) soundPanelButtons = panelButton; if (title == tr("Driving Controls")) drivingPanelButtons = panelButton; - if (title == tr("System Management")) systemPanelButtons = panelButton; - if (title == tr("Vehicle Controls")) vehiclePanelButtons = panelButton; + if (title == tr("Navigation")) navigationPanelButtons = panelButton; + if (title == tr("System Settings")) systemPanelButtons = panelButton; + if (title == tr("Theme and Appearance")) themePanelButtons = panelButton; + if (title == tr("Vehicle Settings")) vehiclePanelButtons = panelButton; - QObject::connect(panelButton, &FrogPilotButtonsControl::buttonClicked, [this, widgets](int id) { + if (forceOpenDescriptions) { + panelButton->showDescription(); + } + + QObject::connect(panelButton, &FrogPilotButtonsControl::buttonClicked, [widgets, this](int id) { mainLayout->setCurrentWidget(widgets[id]); panelOpen = true; @@ -106,8 +113,8 @@ void FrogPilotSettingsWindow::createPanelButtons(FrogPilotListWidget *list) { QObject::connect(frogpilotLongitudinalPanel, &FrogPilotLongitudinalPanel::openSubSubPanel, this, &FrogPilotSettingsWindow::openSubSubPanel); QObject::connect(frogpilotMapsPanel, &FrogPilotMapsPanel::openSubPanel, this, &FrogPilotSettingsWindow::openSubPanel); QObject::connect(frogpilotModelPanel, &FrogPilotModelPanel::openSubPanel, this, &FrogPilotSettingsWindow::openSubPanel); - QObject::connect(frogpilotNavigationPanel, &FrogPilotNavigationPanel::closeSubSubPanel, this, &FrogPilotSettingsWindow::closeSubSubPanel); - QObject::connect(frogpilotNavigationPanel, &FrogPilotNavigationPanel::openSubSubPanel, this, &FrogPilotSettingsWindow::openSubSubPanel); + QObject::connect(frogpilotNavigationPanel, &FrogPilotNavigationPanel::closeSubPanel, this, &FrogPilotSettingsWindow::closeSubPanel); + QObject::connect(frogpilotNavigationPanel, &FrogPilotNavigationPanel::openSubPanel, this, &FrogPilotSettingsWindow::openSubPanel); QObject::connect(frogpilotSoundsPanel, &FrogPilotSoundsPanel::openSubPanel, this, &FrogPilotSettingsWindow::openSubPanel); QObject::connect(frogpilotThemesPanel, &FrogPilotThemesPanel::openSubPanel, this, &FrogPilotSettingsWindow::openSubPanel); QObject::connect(frogpilotVehiclesPanel, &FrogPilotVehiclesPanel::openSubPanel, this, &FrogPilotSettingsWindow::openSubPanel); @@ -116,6 +123,15 @@ void FrogPilotSettingsWindow::createPanelButtons(FrogPilotListWidget *list) { } FrogPilotSettingsWindow::FrogPilotSettingsWindow(SettingsWindow *parent) : QFrame(parent) { + QJsonObject shownDescriptions = QJsonDocument::fromJson(QString::fromStdString(params.get("ShownToggleDescriptions")).toUtf8()).object(); + QString className = this->metaObject()->className(); + + if (!shownDescriptions.value(className).toBool(false)) { + forceOpenDescriptions = true; + shownDescriptions.insert(className, true); + params.put("ShownToggleDescriptions", QJsonDocument(shownDescriptions).toJson(QJsonDocument::Compact).toStdString()); + } + mainLayout = new QStackedLayout(this); QWidget *frogpilotWidget = new QWidget(this); @@ -132,13 +148,12 @@ FrogPilotSettingsWindow::FrogPilotSettingsWindow(SettingsWindow *parent) : QFram std::vector togglePresets{tr("Minimal"), tr("Standard"), tr("Advanced"), tr("Developer")}; togglePreset = new FrogPilotButtonsControl(tr("Tuning Level"), - tr("The visibility and complexity of tuning settings. Lower levels simplify the interface by hiding advanced options, while higher levels unlock detailed customization.\n\n" - "Minimal - Ideal for those who prefer simplicity or ease of use\n" - "Standard - Recommended for most users for a balanced experience\n" - "Advanced - Unlocks fine-tuning controls for more experienced users\n" - "Developer - Unlocks highly customizable settings for seasoned enthusiasts"), - "../../frogpilot/assets/toggle_icons/icon_customization.png", - togglePresets, true); + tr("Choose your tuning level. Lower levels keep it simple; higher levels unlock more toggles for finer control.\n\n" + "Minimal - Ideal for those who prefer simplicity or ease of use\n" + "Standard - Recommended for most users for a balanced experience\n" + "Advanced - Fine-tuning for experienced users\n" + "Developer - Highly customizable settings for seasoned enthusiasts"), + "../../frogpilot/assets/toggle_icons/icon_customization.png", togglePresets, true); QObject::connect(togglePreset, &FrogPilotButtonsControl::buttonClicked, [this](int id) { tuningLevel = id; @@ -147,10 +162,13 @@ FrogPilotSettingsWindow::FrogPilotSettingsWindow(SettingsWindow *parent) : QFram updateVariables(); if (id == 3) { - ConfirmationDialog::alert(tr("WARNING: This unlocks some potentially dangerous settings that can DRASTICALLY alter your driving experience!"), this); + ConfirmationDialog::alert(tr("WARNING: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do!"), this); } }); togglePreset->setCheckedButton(params.getInt("TuningLevel")); + if (forceOpenDescriptions) { + togglePreset->showDescription(); + } list->addItem(togglePreset, true); createPanelButtons(list); @@ -178,11 +196,42 @@ void FrogPilotSettingsWindow::updateTuningLevel() { updateVariables(); } +void FrogPilotSettingsWindow::showEvent(QShowEvent *event) { + static bool alertShown = false; + + if (forceOpenDescriptions) { + togglePreset->showDescription(); + + drivingPanelButtons->showDescription(); + navigationPanelButtons->showDescription(); + soundPanelButtons->showDescription(); + systemPanelButtons->showDescription(); + themePanelButtons->showDescription(); + vehiclePanelButtons->showDescription(); + + if (!alertShown) { + ConfirmationDialog::alert(tr("All toggle descriptions are currently expanded. You can tap a toggle's name to open or close its description at any time!"), this); + alertShown = true; + } + } +} + void FrogPilotSettingsWindow::hideEvent(QHideEvent *event) { closePanel(); } void FrogPilotSettingsWindow::closePanel() { + if (forceOpenDescriptions) { + togglePreset->showDescription(); + + drivingPanelButtons->showDescription(); + navigationPanelButtons->showDescription(); + soundPanelButtons->showDescription(); + systemPanelButtons->showDescription(); + themePanelButtons->showDescription(); + vehiclePanelButtons->showDescription(); + } + mainLayout->setCurrentWidget(frogpilotPanel); panelOpen = false; @@ -198,6 +247,9 @@ void FrogPilotSettingsWindow::updateState() { } void FrogPilotSettingsWindow::updateVariables() { + FrogPilotUIState &fs = *frogpilotUIState(); + QJsonObject &frogpilot_toggles = fs.frogpilot_toggles; + std::string carParams = params.get("CarParamsPersistent"); if (!carParams.empty()) { AlignedBuffer aligned_buf; @@ -206,10 +258,8 @@ void FrogPilotSettingsWindow::updateVariables() { cereal::CarParams::SafetyModel safetyModel = CP.getSafetyConfigs()[0].getSafetyModel(); std::string carFingerprint = CP.getCarFingerprint(); - std::string carMake = CP.getCarName(); + carMake = CP.getCarName(); - friction = CP.getLateralTuning().getTorque().getFriction(); - hasAutoTune = (carMake == "hyundai" || carMake == "toyota") && CP.getLateralTuning().which() == cereal::CarParams::LateralTuning::TORQUE; hasBSM = CP.getEnableBsm(); hasDashSpeedLimits = carMake == "ford" || carMake == "hyundai" || carMake == "toyota"; hasExperimentalOpenpilotLongitudinal = CP.getExperimentalLongitudinalAvailable(); @@ -218,22 +268,21 @@ void FrogPilotSettingsWindow::updateVariables() { hasPCMCruise = CP.getPcmCruise(); hasPedal = CP.getEnableGasInterceptor(); hasRadar = !CP.getRadarUnavailable(); - hasSNG = CP.getAutoResumeSng(); + hasSDSU = frogpilot_toggles.value("has_sdsu").toBool(); + hasSNG = hasOpenpilotLongitudinal && CP.getAutoResumeSng(); + hasZSS = frogpilot_toggles.value("has_zss").toBool(); isAngleCar = CP.getSteerControlType() == cereal::CarParams::SteerControlType::ANGLE; isBolt = carFingerprint == "CHEVROLET_BOLT_CC" || carFingerprint == "CHEVROLET_BOLT_EUV"; isGM = carMake == "gm"; isHKG = carMake == "hyundai"; isHKGCanFd = isHKG && safetyModel == cereal::CarParams::SafetyModel::HYUNDAI_CANFD; isSubaru = carMake == "subaru"; - isTorqueCar = CP.getLateralTuning().which() == cereal::CarParams::LateralTuning::TORQUE; isToyota = carMake == "toyota"; isTSK = CP.getSecOcRequired(); isVolt = carFingerprint == "CHEVROLET_VOLT"; - latAccelFactor = CP.getLateralTuning().getTorque().getLatAccelFactor(); longitudinalActuatorDelay = CP.getLongitudinalActuatorDelay(); startAccel = CP.getStartAccel(); steerActuatorDelay = CP.getSteerActuatorDelay(); - steerKp = CP.getLateralTuning().getTorque().getKp(); steerRatio = CP.getSteerRatio(); stopAccel = CP.getStopAccel(); stoppingDecelRate = CP.getStoppingDecelRate(); @@ -336,7 +385,14 @@ void FrogPilotSettingsWindow::updateVariables() { capnp::FlatArrayMessageReader fpcmsg(aligned_buf.align(frogpilotCarParams.data(), frogpilotCarParams.size())); cereal::FrogPilotCarParams::Reader FPCP = fpcmsg.getRoot(); + canUsePedal = FPCP.getCanUsePedal(); + canUseSDSU = FPCP.getCanUseSDSU(); + friction = FPCP.getLateralTuning().getTorque().getFriction(); + hasAutoTune = (carMake == "hyundai" || carMake == "toyota") && FPCP.getLateralTuning().which() == cereal::FrogPilotCarParams::LateralTuning::TORQUE; + isTorqueCar = FPCP.getLateralTuning().which() == cereal::FrogPilotCarParams::LateralTuning::TORQUE; + latAccelFactor = FPCP.getLateralTuning().getTorque().getLatAccelFactor(); openpilotLongitudinalControlDisabled = FPCP.getOpenpilotLongitudinalControlDisabled(); + steerKp = FPCP.getLateralTuning().getTorque().getKp(); } isC3 = util::read_file("/sys/firmware/devicetree/base/model").find("tici") != std::string::npos; diff --git a/frogpilot/ui/qt/offroad/frogpilot_settings.h b/frogpilot/ui/qt/offroad/frogpilot_settings.h index df0c09342..bd48e67e4 100644 --- a/frogpilot/ui/qt/offroad/frogpilot_settings.h +++ b/frogpilot/ui/qt/offroad/frogpilot_settings.h @@ -11,6 +11,9 @@ public: void updateVariables(); + bool canUsePedal = false; + bool canUseSDSU = false; + bool forceOpenDescriptions = false; bool hasAutoTune = true; bool hasBSM = true; bool hasDashSpeedLimits = true; @@ -20,7 +23,9 @@ public: bool hasPCMCruise = false; bool hasPedal = false; bool hasRadar = true; + bool hasSDSU = false; bool hasSNG = false; + bool hasZSS = false; bool isAngleCar = false; bool isBolt = false; bool isC3 = false; @@ -63,19 +68,24 @@ private: void closePanel(); void createPanelButtons(FrogPilotListWidget *list); void hideEvent(QHideEvent *event) override; + void showEvent(QShowEvent *event) override; void updateState(); void updateTuningLevel(); bool panelOpen; + std::string carMake; + FrogPilotButtonsControl *drivingPanelButtons; + FrogPilotButtonsControl *navigationPanelButtons; + FrogPilotButtonsControl *soundPanelButtons; FrogPilotButtonsControl *systemPanelButtons; + FrogPilotButtonsControl *themePanelButtons; FrogPilotButtonsControl *togglePreset; FrogPilotButtonsControl *vehiclePanelButtons; Params params; Params params_memory{"/dev/shm/params"}; - Params params_tracking{"/cache/tracking"}; QStackedLayout *mainLayout; diff --git a/frogpilot/ui/qt/offroad/lateral_settings.cc b/frogpilot/ui/qt/offroad/lateral_settings.cc index 91a30869d..3247356f7 100644 --- a/frogpilot/ui/qt/offroad/lateral_settings.cc +++ b/frogpilot/ui/qt/offroad/lateral_settings.cc @@ -1,6 +1,15 @@ #include "frogpilot/ui/qt/offroad/lateral_settings.h" FrogPilotLateralPanel::FrogPilotLateralPanel(FrogPilotSettingsWindow *parent) : FrogPilotListWidget(parent), parent(parent) { + QJsonObject shownDescriptions = QJsonDocument::fromJson(QString::fromStdString(params.get("ShownToggleDescriptions")).toUtf8()).object(); + QString className = this->metaObject()->className(); + + if (!shownDescriptions.value(className).toBool(false)) { + forceOpenDescriptions = true; + shownDescriptions.insert(className, true); + params.put("ShownToggleDescriptions", QJsonDocument(shownDescriptions).toJson(QJsonDocument::Compact).toStdString()); + } + QStackedLayout *lateralLayout = new QStackedLayout(); addItem(lateralLayout); @@ -29,34 +38,35 @@ FrogPilotLateralPanel::FrogPilotLateralPanel(FrogPilotSettingsWindow *parent) : lateralLayout->addWidget(qolPanel); const std::vector> lateralToggles { - {"AdvancedLateralTune", tr("Advanced Lateral Tuning"), tr("Advanced settings for fine-tuning openpilot's lateral controls."), "../../frogpilot/assets/toggle_icons/icon_advanced_lateral_tune.png"}, - {"SteerDelay", steerActuatorDelay != 0 ? QString(tr("Actuator Delay (Default: %1)")).arg(QString::number(steerActuatorDelay, 'f', 2)) : tr("Actuator Delay"), tr("How long the steering wheel takes to respond to commands. Higher values account for slower steering; lower values for quicker response."), ""}, - {"SteerFriction", friction != 0 ? QString(tr("Friction (Default: %1)")).arg(QString::number(friction, 'f', 2)) : tr("Friction"), tr("Adjust steering resistance. Higher values feel more stable but heavier; lower values feel lighter but more sensitive."), ""}, - {"SteerKP", steerKp != 0 ? QString(tr("Kp Factor (Default: %1)")).arg(QString::number(steerKp, 'f', 2)) : tr("Kp Factor"), tr("How aggressively openpilot corrects steering. Higher values respond faster but may feel jerky; lower values are smoother but slower."), ""}, - {"SteerLatAccel", latAccelFactor != 0 ? QString(tr("Lateral Accel (Default: %1)")).arg(QString::number(latAccelFactor, 'f', 2)) : tr("Lateral Accel"), tr("How quickly openpilot makes lateral adjustments. Higher values allow sharper turns; lower values provide smoother steering."), ""}, - {"SteerRatio", steerRatio != 0 ? QString(tr("Steer Ratio (Default: %1)")).arg(QString::number(steerRatio, 'f', 2)) : tr("Steer Ratio"), tr("How much the steering wheel turns in response to commands. Higher values feel more stable; lower values feel quicker."), ""}, - {"ForceAutoTune", tr("Force Auto Tune On"), tr("Force-enable commaโ€™s auto lateral tuning."), ""}, - {"ForceAutoTuneOff", tr("Force Auto Tune Off"), tr("Force-disable commaโ€™s auto lateral tuning."), ""}, + {"AdvancedLateralTune", tr("Advanced Lateral Tuning"), tr("Advanced steering control changes to fine-tune how openpilot drives."), "../../frogpilot/assets/toggle_icons/icon_advanced_lateral_tune.png"}, + {"SteerDelay", steerActuatorDelay != 0 ? QString(tr("Actuator Delay (Default: %1)")).arg(QString::number(steerActuatorDelay, 'f', 2)) : tr("Actuator Delay"), tr("The time between openpilot's steering command and the vehicle's response. Increase if the vehicle reacts late; decrease if it feels jumpy. Auto-learned by default."), ""}, + {"SteerFriction", friction != 0 ? QString(tr("Friction (Default: %1)")).arg(QString::number(friction, 'f', 2)) : tr("Friction"), tr("Compensates for steering friction. Increase if the wheel sticks near center; decrease if it jitters. Auto-learned by default."), ""}, + {"SteerKP", steerKp != 0 ? QString(tr("Kp Factor (Default: %1)")).arg(QString::number(steerKp, 'f', 2)) : tr("Kp Factor"), tr("How strongly openpilot corrects lane position. Higher is tighter but twitchier; lower is smoother but slower. Auto-learned by default."), ""}, + {"SteerLatAccel", latAccelFactor != 0 ? QString(tr("Lateral Acceleration (Default: %1)")).arg(QString::number(latAccelFactor, 'f', 2)) : tr("Lateral Acceleration"), tr("Maps steering torque to turning response. Increase for sharper turns; decrease for gentler steering. Auto-learned by default."), ""}, + {"SteerRatio", steerRatio != 0 ? QString(tr("Steer Ratio (Default: %1)")).arg(QString::number(steerRatio, 'f', 2)) : tr("Steer Ratio"), tr("The relationship between steering wheel rotation and road wheel angle. Increase if steering feels too quick or twitchy; decrease if it feels too slow or weak. Auto-learned by default."), ""}, + {"ForceAutoTune", tr("Force Auto-Tune On"), tr("Force-enable openpilot's live auto-tuning for \"Friction\" and \"Lateral Acceleration\"."), ""}, + {"ForceAutoTuneOff", tr("Force Auto-Tune Off"), tr("Force-disable openpilot's live auto-tuning for \"Friction\" and \"Lateral Acceleration\" and use the set value instead."), ""}, + {"ForceTorqueController", tr("Force Torque Controller"), tr("Use torque-based steering control instead of angle-based control for smoother lane keeping, especially in curves."), ""}, - {"AlwaysOnLateral", tr("Always on Lateral"), tr("openpilot's steering control stays active even when the brake or gas pedals are pressed.

Deactivation only occurs with the Cruise Control button."), "../../frogpilot/assets/toggle_icons/icon_always_on_lateral.png"}, - {"AlwaysOnLateralMain", tr("Enable With Cruise Control"), tr("Allow Always on Lateral to be active whenever Cruise Control is active, bypassing the need to enable openpilot first."), ""}, - {"AlwaysOnLateralLKAS", tr("Enable With LKAS Button"), tr("Allow Always on Lateral to be active whenever LKAS is active, bypassing the need to enable openpilot first."), ""}, - {"PauseAOLOnBrake", tr("Pause on Brake Below"), tr("Temporarily pause Always on Lateral below the set speed when braking."), ""}, + {"AlwaysOnLateral", tr("Always On Lateral"), tr("openpilot's steering remains active even when the accelerator or brake pedals are pressed."), "../../frogpilot/assets/toggle_icons/icon_always_on_lateral.png"}, + {"AlwaysOnLateralMain", tr("Enable With Cruise Control"), tr("Enable \"Always On Lateral\" whenever \"Cruise Control\" is on, even when openpilot is not engaged."), ""}, + {"AlwaysOnLateralLKAS", tr("Enable With LKAS"), tr("Enable \"Always On Lateral\" whenever \"LKAS\" is on, even when openpilot is not engaged."), ""}, + {"PauseAOLOnBrake", tr("Pause on Brake Press Below"), tr("Pause \"Always On Lateral\" below the set speed while the brake pedal is pressed."), ""}, - {"LaneChangeCustomizations", tr("Lane Changes"), tr("Customize how openpilot performs lane changes."), "../../frogpilot/assets/toggle_icons/icon_lane.png"}, - {"NudgelessLaneChange", tr("Automatic Lane Changes"), tr("Change lanes automatically when the turn signal is on. No steering input needed!"), ""}, - {"LaneChangeTime", tr("Lane Change Delay"), tr("Delay automatic lane changes by the set amount of time."), ""}, - {"MinimumLaneChangeSpeed", tr("Minimum Lane Change Speed"), tr("Minimum speed required for openpilot to perform a lane change."), ""}, - {"LaneDetectionWidth", tr("Minimum Lane Width"), tr("openpilot won't initiate a lane change into a lane narrower than this width."), ""}, - {"OneLaneChange", tr("One Lane Change Per Signal"), tr("Limit lane changes to one per turn signal activation."), ""}, + {"LaneChanges", tr("Lane Changes"), tr("Allow openpilot to change lanes."), "../../frogpilot/assets/toggle_icons/icon_lane.png"}, + {"NudgelessLaneChange", tr("Automatic Lane Changes"), tr("When the turn signal is on, openpilot will automatically change lanes. No steering-wheel nudge required!"), ""}, + {"LaneChangeTime", tr("Lane Change Delay"), tr("Delay between turn signal activation and the start of an automatic lane change."), ""}, + {"MinimumLaneChangeSpeed", tr("Minimum Lane Change Speed"), tr("Lowest speed at which openpilot will change lanes."), ""}, + {"LaneDetectionWidth", tr("Minimum Lane Width"), tr("Prevent automatic lane changes into lanes narrower than the set width."), ""}, + {"OneLaneChange", tr("One Lane Change Per Signal"), tr("Limit automatic lane changes to one per turn-signal activation."), ""}, - {"LateralTune", tr("Lateral Tuning"), tr("Settings for fine-tuning openpilot's lateral controls."), "../../frogpilot/assets/toggle_icons/icon_lateral_tune.png"}, - {"TurnDesires", tr("Force Turn Desires Below Lane Change Speed"), tr("Force turn desires below the minimum lane change speed to improve turning accuracy."), ""}, - {"NNFF", tr("Neural Network Feedforward (NNFF)"), tr("Use Twilsoncoโ€™s Neural Network FeedForward model for smoother, model-based steering trained on your vehicle's data."), ""}, - {"NNFFLite", tr("Smooth Curve Handling"), tr("Use Twilsoncoโ€™s torque-based adjustments to smooth out steering during curves."), ""}, + {"LateralTune", tr("Lateral Tuning"), tr("Miscellaneous steering control changes to fine-tune how openpilot drives."), "../../frogpilot/assets/toggle_icons/icon_lateral_tune.png"}, + {"TurnDesires", tr("Force Turn Desires Below Lane Change Speed"), tr("While driving below the minimum lane change speed with an active turn signal, instruct openpilot to turn left/right."), ""}, + {"NNFF", tr("Neural Network Feedforward (NNFF)"), tr("Twilsonco's \"Neural Network FeedForward\" model controller for smoother, model-based steering trained on your vehicle's data."), ""}, + {"NNFFLite", tr("Smooth Curve Handling"), tr("Twilsonco's torque-based adjustments to smoothen out steering in curves."), ""}, - {"QOLLateral", tr("Quality of Life"), tr("Miscellaneous features to improve the steering experience."), "../../frogpilot/assets/toggle_icons/icon_quality_of_life.png"}, - {"PauseLateralSpeed", tr("Pause Steering Below"), tr("Temporarily pause steering control below the set speed."), ""}, + {"QOLLateral", tr("Quality of Life"), tr("Steering control changes to fine-tune how openpilot drives."), "../../frogpilot/assets/toggle_icons/icon_quality_of_life.png"}, + {"PauseLateralSpeed", tr("Pause Steering Below"), tr("Pause steering below the set speed."), ""}, {"IgnoreMe", "Ignore Me", "This is simply used to fix the layout when the user opens the descriptions and the menu gets wonky. No idea why it happens, but I can't be asked to properly fix it so whatever. Sue me.", ""}, {"IgnoreMe2", "Ignore Me", "This is simply used to fix the layout when the user opens the descriptions and the menu gets wonky. No idea why it happens, but I can't be asked to properly fix it so whatever. Sue me.", ""} @@ -96,7 +106,7 @@ FrogPilotLateralPanel::FrogPilotLateralPanel(FrogPilotSettingsWindow *parent) : } else if (param == "PauseAOLOnBrake") { lateralToggle = new FrogPilotParamValueControl(param, title, desc, icon, 0, 99, QString(), std::map(), 1, true); - } else if (param == "LaneChangeCustomizations") { + } else if (param == "LaneChanges") { FrogPilotManageControl *laneChangeToggle = new FrogPilotManageControl(param, title, desc, icon); QObject::connect(laneChangeToggle, &FrogPilotManageControl::manageButtonClicked, [lateralLayout, laneChangePanel]() { lateralLayout->setCurrentWidget(laneChangePanel); @@ -137,15 +147,15 @@ FrogPilotLateralPanel::FrogPilotLateralPanel(FrogPilotSettingsWindow *parent) : toggles[param] = lateralToggle; - if (advancedLateralTuneKeys.find(param) != advancedLateralTuneKeys.end()) { + if (advancedLateralTuneKeys.contains(param)) { advancedLateralTuneList->addItem(lateralToggle); - } else if (aolKeys.find(param) != aolKeys.end()) { + } else if (aolKeys.contains(param)) { aolList->addItem(lateralToggle); - } else if (laneChangeKeys.find(param) != laneChangeKeys.end()) { + } else if (laneChangeKeys.contains(param)) { laneChangeList->addItem(lateralToggle); - } else if (lateralTuneKeys.find(param) != lateralTuneKeys.end()) { + } else if (lateralTuneKeys.contains(param)) { lateralTuneList->addItem(lateralToggle); - } else if (qolKeys.find(param) != qolKeys.end()) { + } else if (qolKeys.contains(param)) { qolList ->addItem(lateralToggle); } else { lateralList->addItem(lateralToggle); @@ -154,22 +164,28 @@ FrogPilotLateralPanel::FrogPilotLateralPanel(FrogPilotSettingsWindow *parent) : } if (FrogPilotManageControl *frogPilotManageToggle = qobject_cast(lateralToggle)) { - QObject::connect(frogPilotManageToggle, &FrogPilotManageControl::manageButtonClicked, this, &FrogPilotLateralPanel::openSubPanel); + QObject::connect(frogPilotManageToggle, &FrogPilotManageControl::manageButtonClicked, [this]() { + emit openSubPanel(); + openDescriptions(forceOpenDescriptions, toggles); + }); } + QObject::connect(lateralToggle, &AbstractControl::hideDescriptionEvent, [this]() { + update(); + }); QObject::connect(lateralToggle, &AbstractControl::showDescriptionEvent, [this]() { update(); }); } - std::set forceUpdateKeys = {"ForceAutoTune", "ForceAutoTuneOff", "LateralTune", "NNFF", "NudgelessLaneChange"}; + QSet forceUpdateKeys = {"ForceAutoTune", "ForceAutoTuneOff", "LateralTune", "NNFF", "NudgelessLaneChange"}; for (const QString &key : forceUpdateKeys) { QObject::connect(static_cast(toggles[key]), &ToggleControl::toggleFlipped, this, &FrogPilotLateralPanel::updateToggles); } - std::set rebootKeys = {"AlwaysOnLateral", "NNFF", "NNFFLite"}; + QSet rebootKeys = {"AlwaysOnLateral", "ForceTorqueController", "NNFF", "NNFFLite"}; for (const QString &key : rebootKeys) { - QObject::connect(static_cast(toggles[key]), &ToggleControl::toggleFlipped, [this, key](bool state) { + QObject::connect(static_cast(toggles[key]), &ToggleControl::toggleFlipped, [key, this](bool state) { if (started) { if (key == "AlwaysOnLateral" && state) { if (FrogPilotConfirmationDialog::toggleReboot(this)) { @@ -192,7 +208,7 @@ FrogPilotLateralPanel::FrogPilotLateralPanel(FrogPilotSettingsWindow *parent) : steerDelayToggle = static_cast(toggles["SteerDelay"]); QObject::connect(steerDelayToggle, &FrogPilotParamValueButtonControl::buttonClicked, [this]() { - if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to completely reset your Actuator Delay?"), this)) { + if (FrogPilotConfirmationDialog::yesorno(tr("Reset Actuator Delay to its default value?"), this)) { params.putFloat("SteerDelay", steerActuatorDelay); steerDelayToggle->refresh(); } @@ -200,7 +216,7 @@ FrogPilotLateralPanel::FrogPilotLateralPanel(FrogPilotSettingsWindow *parent) : steerFrictionToggle = static_cast(toggles["SteerFriction"]); QObject::connect(steerFrictionToggle, &FrogPilotParamValueButtonControl::buttonClicked, [this]() { - if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to completely reset your Friction?"), this)) { + if (FrogPilotConfirmationDialog::yesorno(tr("Reset Friction to its default value?"), this)) { params.putFloat("SteerFriction", friction); steerFrictionToggle->refresh(); } @@ -208,7 +224,7 @@ FrogPilotLateralPanel::FrogPilotLateralPanel(FrogPilotSettingsWindow *parent) : steerKPToggle = static_cast(toggles["SteerKP"]); QObject::connect(steerKPToggle, &FrogPilotParamValueButtonControl::buttonClicked, [this]() { - if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to completely reset your Kp Factor?"), this)) { + if (FrogPilotConfirmationDialog::yesorno(tr("Reset Kp Factor to its default value?"), this)) { params.putFloat("SteerKP", steerKp); steerKPToggle->refresh(); } @@ -216,7 +232,7 @@ FrogPilotLateralPanel::FrogPilotLateralPanel(FrogPilotSettingsWindow *parent) : steerLatAccelToggle = static_cast(toggles["SteerLatAccel"]); QObject::connect(steerLatAccelToggle, &FrogPilotParamValueButtonControl::buttonClicked, [this]() { - if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to completely reset your Lateral Accel?"), this)) { + if (FrogPilotConfirmationDialog::yesorno(tr("Reset Lateral Accel to its default value?"), this)) { params.putFloat("SteerLatAccel", latAccelFactor); steerLatAccelToggle->refresh(); } @@ -224,13 +240,18 @@ FrogPilotLateralPanel::FrogPilotLateralPanel(FrogPilotSettingsWindow *parent) : steerRatioToggle = static_cast(toggles["SteerRatio"]); QObject::connect(steerRatioToggle, &FrogPilotParamValueButtonControl::buttonClicked, [this]() { - if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to completely reset your Steer Ratio?"), this)) { + if (FrogPilotConfirmationDialog::yesorno(tr("Reset Steer Ratio to its default value?"), this)) { params.putFloat("SteerRatio", steerRatio); steerRatioToggle->refresh(); } }); - QObject::connect(parent, &FrogPilotSettingsWindow::closeSubPanel, [lateralLayout, lateralPanel] {lateralLayout->setCurrentWidget(lateralPanel);}); + openDescriptions(forceOpenDescriptions, toggles); + + QObject::connect(parent, &FrogPilotSettingsWindow::closeSubPanel, [lateralLayout, lateralPanel, this] { + openDescriptions(forceOpenDescriptions, toggles); + lateralLayout->setCurrentWidget(lateralPanel); + }); QObject::connect(parent, &FrogPilotSettingsWindow::updateMetric, this, &FrogPilotLateralPanel::updateMetric); QObject::connect(uiState(), &UIState::uiUpdate, this, &FrogPilotLateralPanel::updateState); } @@ -332,20 +353,21 @@ void FrogPilotLateralPanel::updateMetric(bool metric, bool bootRun) { void FrogPilotLateralPanel::updateToggles() { for (auto &[key, toggle] : toggles) { - if (parentKeys.find(key) != parentKeys.end()) { + if (parentKeys.contains(key)) { toggle->setVisible(false); } } + bool forcingAutoTune = !hasAutoTune && params.getBool("ForceAutoTune"); + bool forcingAutoTuneOff = hasAutoTune && params.getBool("ForceAutoTuneOff"); + bool forcingTorqueController = !isAngleCar && params.getBool("ForceTorqueController"); + bool usingNNFF = hasNNFFLog && params.getBool("LateralTune") && params.getBool("NNFF"); + for (auto &[key, toggle] : toggles) { - if (parentKeys.find(key) != parentKeys.end()) { + if (parentKeys.contains(key)) { continue; } - bool forcingAutoTune = !hasAutoTune && params.getBool("ForceAutoTune"); - bool forcingAutoTuneOff = hasAutoTune && params.getBool("ForceAutoTuneOff"); - bool usingNNFF = hasNNFFLog && params.getBool("LateralTune") && params.getBool("NNFF"); - bool setVisible = tuningLevel >= frogpilotToggleLevels[key].toDouble(); if (key == "AlwaysOnLateralLKAS") { @@ -361,15 +383,24 @@ void FrogPilotLateralPanel::updateToggles() { else if (key == "ForceAutoTune") { setVisible &= !hasAutoTune; setVisible &= !isAngleCar; - setVisible &= isTorqueCar; + setVisible &= isTorqueCar || forcingTorqueController; } else if (key == "ForceAutoTuneOff") { setVisible &= hasAutoTune; } + else if (key == "ForceTorqueController") { + setVisible &= !isAngleCar; + setVisible &= !isTorqueCar; + } + else if (key == "LaneChangeTime") { - setVisible &= params.getBool("LaneChangeCustomizations") && params.getBool("NudgelessLaneChange"); + setVisible &= params.getBool("LaneChanges") && params.getBool("NudgelessLaneChange"); + } + + else if (key == "LaneDetectionWidth") { + setVisible &= params.getBool("LaneChanges") && params.getBool("NudgelessLaneChange"); } else if (key == "NNFF") { @@ -389,20 +420,20 @@ void FrogPilotLateralPanel::updateToggles() { else if (key == "SteerFriction") { setVisible &= friction != 0; setVisible &= hasAutoTune ? forcingAutoTuneOff : !forcingAutoTune; - setVisible &= isTorqueCar; + setVisible &= isTorqueCar || forcingTorqueController; setVisible &= !usingNNFF; } else if (key == "SteerKP") { setVisible &= steerKp != 0; setVisible &= hasAutoTune ? forcingAutoTuneOff : !forcingAutoTune; - setVisible &= isTorqueCar; + setVisible &= isTorqueCar || forcingTorqueController; } else if (key == "SteerLatAccel") { setVisible &= latAccelFactor != 0; setVisible &= hasAutoTune ? forcingAutoTuneOff : !forcingAutoTune; - setVisible &= isTorqueCar; + setVisible &= isTorqueCar || forcingTorqueController; setVisible &= !usingNNFF; } @@ -414,19 +445,21 @@ void FrogPilotLateralPanel::updateToggles() { toggle->setVisible(setVisible); if (setVisible) { - if (advancedLateralTuneKeys.find(key) != advancedLateralTuneKeys.end()) { + if (advancedLateralTuneKeys.contains(key)) { toggles["AdvancedLateralTune"]->setVisible(true); - } else if (aolKeys.find(key) != aolKeys.end()) { + } else if (aolKeys.contains(key)) { toggles["AlwaysOnLateral"]->setVisible(true); - } else if (laneChangeKeys.find(key) != laneChangeKeys.end()) { - toggles["LaneChangeCustomizations"]->setVisible(true); - } else if (lateralTuneKeys.find(key) != lateralTuneKeys.end()) { + } else if (laneChangeKeys.contains(key)) { + toggles["LaneChanges"]->setVisible(true); + } else if (lateralTuneKeys.contains(key)) { toggles["LateralTune"]->setVisible(true); - } else if (qolKeys.find(key) != qolKeys.end()) { + } else if (qolKeys.contains(key)) { toggles["QOLLateral"]->setVisible(true); } } } + openDescriptions(forceOpenDescriptions, toggles); + update(); } diff --git a/frogpilot/ui/qt/offroad/lateral_settings.h b/frogpilot/ui/qt/offroad/lateral_settings.h index a71b093e0..e414ccf94 100644 --- a/frogpilot/ui/qt/offroad/lateral_settings.h +++ b/frogpilot/ui/qt/offroad/lateral_settings.h @@ -1,7 +1,5 @@ #pragma once -#include - #include "frogpilot/ui/qt/offroad/frogpilot_settings.h" class FrogPilotLateralPanel : public FrogPilotListWidget { @@ -21,6 +19,7 @@ private: void updateState(const UIState &s); void updateToggles(); + bool forceOpenDescriptions; bool hasAutoTune; bool hasNNFFLog; bool hasOpenpilotLongitudinal; @@ -39,13 +38,13 @@ private: std::map toggles; - std::set advancedLateralTuneKeys = {"ForceAutoTune", "ForceAutoTuneOff", "SteerDelay", "SteerFriction", "SteerLatAccel", "SteerKP", "SteerRatio"}; - std::set aolKeys = {"AlwaysOnLateralLKAS", "AlwaysOnLateralMain", "PauseAOLOnBrake"}; - std::set laneChangeKeys = {"LaneChangeTime", "LaneDetectionWidth", "MinimumLaneChangeSpeed", "NudgelessLaneChange", "OneLaneChange"}; - std::set lateralTuneKeys = {"NNFF", "NNFFLite", "TurnDesires"}; - std::set qolKeys = {"PauseLateralSpeed"}; + QSet advancedLateralTuneKeys = {"ForceAutoTune", "ForceAutoTuneOff", "ForceTorqueController", "SteerDelay", "SteerFriction", "SteerLatAccel", "SteerKP", "SteerRatio"}; + QSet aolKeys = {"AlwaysOnLateralLKAS", "AlwaysOnLateralMain", "PauseAOLOnBrake"}; + QSet laneChangeKeys = {"LaneChangeTime", "LaneDetectionWidth", "MinimumLaneChangeSpeed", "NudgelessLaneChange", "OneLaneChange"}; + QSet lateralTuneKeys = {"NNFF", "NNFFLite", "TurnDesires"}; + QSet qolKeys = {"PauseLateralSpeed"}; - std::set parentKeys; + QSet parentKeys; FrogPilotParamValueButtonControl *steerDelayToggle; FrogPilotParamValueButtonControl *steerFrictionToggle; diff --git a/frogpilot/ui/qt/offroad/longitudinal_settings.cc b/frogpilot/ui/qt/offroad/longitudinal_settings.cc index 9f4e2201e..66edb1a28 100644 --- a/frogpilot/ui/qt/offroad/longitudinal_settings.cc +++ b/frogpilot/ui/qt/offroad/longitudinal_settings.cc @@ -1,6 +1,15 @@ #include "frogpilot/ui/qt/offroad/longitudinal_settings.h" FrogPilotLongitudinalPanel::FrogPilotLongitudinalPanel(FrogPilotSettingsWindow *parent) : FrogPilotListWidget(parent), parent(parent) { + QJsonObject shownDescriptions = QJsonDocument::fromJson(QString::fromStdString(params.get("ShownToggleDescriptions")).toUtf8()).object(); + QString className = this->metaObject()->className(); + + if (!shownDescriptions.value(className).toBool(false)) { + forceOpenDescriptions = true; + shownDescriptions.insert(className, true); + params.put("ShownToggleDescriptions", QJsonDocument(shownDescriptions).toJson(QJsonDocument::Compact).toStdString()); + } + QStackedLayout *longitudinalLayout = new QStackedLayout(); addItem(longitudinalLayout); @@ -56,109 +65,113 @@ FrogPilotLongitudinalPanel::FrogPilotLongitudinalPanel(FrogPilotSettingsWindow * longitudinalLayout->addWidget(trafficPersonalityPanel); const std::vector> longitudinalToggles { - {"AdvancedLongitudinalTune", tr("Advanced Longitudinal Tuning"), tr("Advanced settings for customizing how openpilot handles acceleration and braking."), "../../frogpilot/assets/toggle_icons/icon_advanced_longitudinal_tune.png"}, - {"LongitudinalActuatorDelay", longitudinalActuatorDelay != 0 ? QString(tr("Actuator Delay (Default: %1)")).arg(QString::number(longitudinalActuatorDelay, 'f', 2)) : tr("Actuator Delay"), tr("Delay before throttle or brake takes effect. Higher values smooth slow actuators but can feel laggy; lower values react quicker but may overshoot."), ""}, - {"StartAccel", startAccel != 0 ? QString(tr("Start Acceleration (Default: %1)")).arg(QString::number(startAccel, 'f', 2)) : tr("Start Acceleration"), tr("Extra acceleration applied when pulling away from a stop. Increase for snappier launches at the cost of smoothness; decrease for gentler starts."), ""}, - {"VEgoStarting", vEgoStarting != 0 ? QString(tr("Start Speed (Default: %1)")).arg(QString::number(vEgoStarting, 'f', 2)) : tr("Start Speed"), tr("Speed where openpilot begins to exit the stopped state. Higher values avoid creeping but may feel sluggish; lower values move sooner but risk creeping."), ""}, - {"StopAccel", stopAccel != 0 ? QString(tr("Stop Acceleration (Default: %1)")).arg(QString::number(stopAccel, 'f', 2)) : tr("Stop Acceleration"), tr("Brake force applied to hold the vehicle still. Larger values prevent creeping on hills but might jerk to a stop. Smaller values can feel smoother but may allow rolling."), ""}, - {"StoppingDecelRate", stoppingDecelRate != 0 ? QString(tr("Stopping Rate (Default: %1)")).arg(QString::number(stoppingDecelRate, 'f', 2)) : tr("Stopping Rate"), tr("How quickly braking ramps up when stopping. Faster rates shorten stopping distance but can be harsh; slower rates are smoother but need more room."), ""}, - {"VEgoStopping", vEgoStopping != 0 ? QString(tr("Stop Speed (Default: %1)")).arg(QString::number(vEgoStopping, 'f', 2)) : tr("Stop Speed"), tr("Speed where openpilot beings to enter the stopped state. Higher values brake earlier for smoother stops but might stop too soon; lower values wait longer and can overshoot."), ""}, + {"AdvancedLongitudinalTune", tr("Advanced Longitudinal Tuning"), tr("Advanced acceleration and braking control changes to fine-tune how openpilot drives."), "../../frogpilot/assets/toggle_icons/icon_advanced_longitudinal_tune.png"}, + {"LongitudinalActuatorDelay", longitudinalActuatorDelay != 0 ? QString(tr("Actuator Delay (Default: %1)")).arg(QString::number(longitudinalActuatorDelay, 'f', 2)) : tr("Actuator Delay"), tr("The time between openpilot's throttle or brake command and the vehicle's response. Increase if the vehicle feels slow to react; decrease if it feels too eager or overshoots."), ""}, + {"StartAccel", startAccel != 0 ? QString(tr("Start Acceleration (Default: %1)")).arg(QString::number(startAccel, 'f', 2)) : tr("Start Acceleration"), tr("Extra acceleration applied when starting from a stop. Increase for quicker takeoffs; decrease for smoother, gentler starts."), ""}, + {"VEgoStarting", vEgoStarting != 0 ? QString(tr("Start Speed (Default: %1)")).arg(QString::number(vEgoStarting, 'f', 2)) : tr("Start Speed"), tr("The speed at which openpilot exits the stopped state. Increase to reduce creeping; decrease to move sooner after stopping."), ""}, + {"StopAccel", stopAccel != 0 ? QString(tr("Stop Acceleration (Default: %1)")).arg(QString::number(stopAccel, 'f', 2)) : tr("Stop Acceleration"), tr("Brake force applied to hold the vehicle at a standstill. Increase to prevent rolling on hills; decrease for smoother, softer stops."), ""}, + {"StoppingDecelRate", stoppingDecelRate != 0 ? QString(tr("Stopping Rate (Default: %1)")).arg(QString::number(stoppingDecelRate, 'f', 2)) : tr("Stopping Rate"), tr("How quickly braking ramps up when stopping. Increase for shorter, firmer stops; decrease for smoother, longer stops."), ""}, + {"VEgoStopping", vEgoStopping != 0 ? QString(tr("Stop Speed (Default: %1)")).arg(QString::number(vEgoStopping, 'f', 2)) : tr("Stop Speed"), tr("The speed at which openpilot considers the vehicle stopped. Increase to brake earlier and stop smoothly; decrease to wait longer but risk overshooting."), ""}, - {"ConditionalExperimental", tr("Conditional Experimental Mode"), tr("Automatically switch to Experimental Mode when set conditions are met."), "../../frogpilot/assets/toggle_icons/icon_conditional.png"}, - {"CESpeed", tr("Below"), tr("Switch to Experimental Mode when driving below this speed."), ""}, - {"CECurves", tr("Curve Detected Ahead"), tr("Switch to Experimental Mode when a curve is detected ahead. Useful for letting the model choose the appropriate speed for the curve."), ""}, - {"CELead", tr("Lead Detected Ahead"), tr("Switch to Experimental Mode when a slower or stopped vehicle is detected ahead. Can improve braking smoothness and reliability on some vehicles."), ""}, - {"CENavigation", tr("Navigation Data"), tr("Switch to Experimental Mode when approaching intersections or turns on the active route while using Navigate on openpilot (NOO). Useful for letting the model choose the appropriate speed for upcoming navigation maneuvers."), ""}, - {"CEModelStopTime", tr("openpilot Wants to Stop In"), tr("Switch to Experimental Mode when openpilot wants to stop within the set amount of time. This is typically triggered by the driving model \"detecting\" a red light or stop sign."), ""}, - {"CESignalSpeed", tr("Turn Signal Below"), tr("Switch to Experimental Mode when using a turn signal below the set speed. Useful for letting the model choose the appropriate speed for upcoming left or right turns."), ""}, - {"ShowCEMStatus", tr("Status Widget"), tr("Show the Conditional Experimental Mode status on the driving screen."), ""}, + {"ConditionalExperimental", tr("Conditional Experimental Mode"), tr("Automatically switch to \"Experimental Mode\" when set conditions are met. Allows the model to handle challenging situations with smarter decision making."), "../../frogpilot/assets/toggle_icons/icon_conditional.png"}, + {"CESpeed", tr("Below"), tr("Switch to \"Experimental Mode\" when driving below this speed without a lead to help openpilot handle low-speed situations more smoothly."), ""}, + {"CECurves", tr("Curve Detected Ahead"), tr("Switch to \"Experimental Mode\" when a curve is detected to allow the model to set an appropriate speed for the curve."), ""}, + {"CELead", tr("Lead Detected Ahead"), tr("Switch to \"Experimental Mode\" when a slower or stopped vehicle is detected. Can make braking smoother and more reliable on some vehicles."), ""}, + {"CENavigation", tr("Navigation-Based"), tr("Switch to \"Experimental Mode\" when approaching intersections or turns on the active route while using \"Navigate on openpilot\" (NOO) to allow the model to set an appropriate speed for upcoming maneuvers."), ""}, + {"CEModelStopTime", tr("Predicted Stop In"), tr("Switch to \"Experimental Mode\" when openpilot predicts a stop within the set time. This is usually triggered when the model \"sees\" a red light or stop sign ahead.

Disclaimer: openpilot does not explicitly detect traffic lights or stop signs. In \"Experimental Mode\", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason."), ""}, + {"CESignalSpeed", tr("Turn Signal Below"), tr("Switch to \"Experimental Mode\" when using a turn signal below the set speed to allow the model to choose an appropriate speed for smoother left and right turns."), ""}, + {"ShowCEMStatus", tr("Status Widget"), tr("Show which condition triggered \"Experimental Mode\" on the driving screen."), ""}, - {"CurveSpeedControl", tr("Curve Speed Control"), tr("Automatically slow down for upcoming curves using downloaded maps or the driving model."), "../../frogpilot/assets/toggle_icons/icon_speed_map.png"}, - {"CurveDetectionMethod", tr("Curve Detection Method"), tr("How curves are detected. Map-Based uses downloaded map data to identify curves and determine the appropriate speed in which to handle them at, while Vision relies solely on the driving model."), ""}, - {"MTSCCurvatureCheck", tr("Curve Detection Failsafe"), tr("Only trigger Curve Speed Control if a curve is detected with the model while using the Map-Based method. Useful to help prevent false positives."), ""}, - {"CurveSensitivity", tr("Curve Detection Sensitivity"), tr("How sensitive openpilot is when detecting curves. Higher values trigger earlier responses at the risk of triggering too often, while lower values increase confidence at the risk of triggering too infrequently."), ""}, - {"TurnAggressiveness", tr("Curve Speed Aggressiveness"), tr("How aggressive openpilot is when navigating through curves. Higher values result in faster turns but may reduce comfort or stability, while lower values result in slower, smoother turns at the risk of being overly cautious."), ""}, - {"ShowCSCStatus", tr("Status Widget"), tr("Show Curve Speed Control's desired speed on the driving screen."), ""}, + {"CurveSpeedController", tr("Curve Speed Controller"), tr("Automatically slow down for upcoming curves using data learned from your driving style, adapting to curves as you would."), "../../frogpilot/assets/toggle_icons/icon_speed_map.png"}, + {"CalibratedLateralAcceleration", tr("Calibrated Lateral Acceleration"), tr("The learned lateral acceleration from collected driving data. This sets how fast openpilot will take curves. Higher values allow faster cornering; lower values slow the vehicle for gentler turns."), ""}, + {"CalibrationProgress", tr("Calibration Progress"), tr("How much curve data has been collected. This is a progress meter; it is normal for the value to stay low and rarely reach 100%."), ""}, + {"ResetCurveData", tr("Reset Curve Data"), tr("Reset collected user data for \"Curve Speed Controller\"."), ""}, + {"ShowCSCStatus", tr("Status Widget"), tr("Show the \"Curve Speed Controller\" target speed on the driving screen."), ""}, - {"CustomPersonalities", tr("Customize Driving Personalities"), tr("Customize the personality profiles to your driving style."), "../../frogpilot/assets/toggle_icons/icon_personality.png"}, + {"CustomPersonalities", tr("Driving Personalities"), tr("Customize the \"Driving Personalities\" to better match your driving style."), "../../frogpilot/assets/toggle_icons/icon_personality.png"}, - {"TrafficPersonalityProfile", tr("Traffic Personality"), tr("Customize the Traffic personality profile. Tailored for navigating through traffic."), "../../frogpilot/assets/stock_theme/distance_icons/traffic.png"}, - {"TrafficFollow", tr("Following Distance"), tr("The minimum following distance while in Traffic Mode. openpilot will dynamically adjust between this value and the value in the Aggressive profile based on your current speed."), ""}, - {"TrafficJerkAcceleration", tr("Acceleration Sensitivity"), tr("How sensitive openpilot is to changes in acceleration while in Traffic Mode. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt."), ""}, - {"TrafficJerkDeceleration", tr("Deceleration Sensitivity"), tr("How sensitive openpilot is to changes in deceleration while in Traffic Mode. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt."), ""}, - {"TrafficJerkDanger", tr("Safety Distance Sensitivity"), tr("How cautious openpilot is around other vehicles or obstacles while in Traffic Mode. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time."), ""}, - {"TrafficJerkSpeedDecrease", tr("Speed Decrease Response"), tr("How quickly openpilot decreases speed while in Traffic Mode. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt."), ""}, - {"TrafficJerkSpeed", tr("Speed Increase Response"), tr("How quickly openpilot increases speed while in Traffic Mode. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt."), ""}, - {"ResetTrafficPersonality", tr("Reset Settings"), tr("Reset Traffic Mode settings to default values."), ""}, + {"TrafficPersonalityProfile", tr("Traffic Mode"), tr("Customize the \"Traffic Mode\" personality profile. Designed for stop-and-go driving."), "../../frogpilot/assets/stock_theme/distance_icons/traffic.png"}, + {"TrafficFollow", tr("Following Distance"), tr("The minimum following distance to the lead vehicle in \"Traffic Mode\". openpilot blends between this value and the \"Aggressive\" profile as speed increases. Increase for more space; decrease for tighter gaps."), ""}, + {"TrafficJerkAcceleration", tr("Acceleration Smoothness"), tr("How smoothly openpilot accelerates in \"Traffic Mode\". Increase for gentler starts; decrease for faster but more abrupt takeoffs."), ""}, + {"TrafficJerkDeceleration", tr("Braking Smoothness"), tr("How smoothly openpilot brakes in \"Traffic Mode\". Increase for gentler stops; decrease for quicker but sharper braking."), ""}, + {"TrafficJerkDanger", tr("Safety Gap Bias"), tr("How much extra space openpilot keeps from the vehicle ahead in \"Traffic Mode\". Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following."), ""}, + {"TrafficJerkSpeedDecrease", tr("Slowdown Response"), tr("How smoothly openpilot slows down in \"Traffic Mode\". Increase for more gradual deceleration; decrease for faster but sharper slowdowns."), ""}, + {"TrafficJerkSpeed", tr("Speed-Up Response"), tr("How smoothly openpilot speeds up in \"Traffic Mode\". Increase for more gradual acceleration; decrease for quicker but more jolting acceleration."), ""}, + {"ResetTrafficPersonality", tr("Reset to Defaults"), tr("Reset \"Traffic Mode\" settings to defaults."), ""}, - {"AggressivePersonalityProfile", tr("Aggressive Personality"), tr("Customize the Aggressive personality profile. Designed for a more assertive driving style."), "../../frogpilot/assets/stock_theme/distance_icons/aggressive.png"}, - {"AggressiveFollow", tr("Following Distance"), tr("How many seconds openpilot will follow behind lead vehicles while using the Aggressive personality profile.

Default: 1.25 seconds."), ""}, - {"AggressiveJerkAcceleration", tr("Acceleration Sensitivity"), tr("How sensitive openpilot is to changes in acceleration while using the Aggressive personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt."), ""}, - {"AggressiveJerkDeceleration", tr("Deceleration Sensitivity"), tr("How sensitive openpilot is to changes in deceleration while using the Aggressive personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt."), ""}, - {"AggressiveJerkDanger", tr("Safety Distance Sensitivity"), tr("How cautious openpilot is around other vehicles or obstacles while using the Aggressive personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time."), ""}, - {"AggressiveJerkSpeedDecrease", tr("Speed Decrease Response"), tr("How quickly openpilot decreases speed while using the Aggressive personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt."), ""}, - {"AggressiveJerkSpeed", tr("Speed Increase Response"), tr("How quickly openpilot increases speed while using the Aggressive personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt."), ""}, - {"ResetAggressivePersonality", tr("Reset Settings"), tr("Reset the Aggressive personality profile settings to default values."), ""}, + {"AggressivePersonalityProfile", tr("Aggressive"), tr("Customize the \"Aggressive\" personality profile. Designed for assertive driving with tighter gaps."), "../../frogpilot/assets/stock_theme/distance_icons/aggressive.png"}, + {"AggressiveFollow", tr("Following Distance"), tr("How many seconds openpilot follows behind lead vehicles when using the \"Aggressive\" profile. Increase for more space; decrease for tighter gaps.

Default: 1.25 seconds."), ""}, + {"AggressiveJerkAcceleration", tr("Acceleration Smoothness"), tr("How smoothly openpilot accelerates with the \"Aggressive\" profile. Increase for gentler starts; decrease for faster but more abrupt takeoffs."), ""}, + {"AggressiveJerkDeceleration", tr("Braking Smoothness"), tr("How smoothly openpilot brakes with the \"Aggressive\" profile. Increase for gentler stops; decrease for quicker but sharper braking."), ""}, + {"AggressiveJerkDanger", tr("Safety Gap Bias"), tr("How much extra space openpilot keeps from the vehicle ahead with the \"Aggressive\" profile. Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following."), ""}, + {"AggressiveJerkSpeedDecrease", tr("Slowdown Response"), tr("How smoothly openpilot slows down with the \"Aggressive\" profile. Increase for more gradual deceleration; decrease for faster but sharper slowdowns."), ""}, + {"AggressiveJerkSpeed", tr("Speed-Up Response"), tr("How smoothly openpilot speeds up with the \"Aggressive\" profile. Increase for more gradual acceleration; decrease for quicker but more jolting acceleration."), ""}, + {"ResetAggressivePersonality", tr("Reset to Defaults"), tr("Reset the \"Aggressive\" profile to defaults."), ""}, - {"StandardPersonalityProfile", tr("Standard Personality"), tr("Customize the Standard personality profile. Designed for a balanced driving style."), "../../frogpilot/assets/stock_theme/distance_icons/standard.png"}, - {"StandardFollow", tr("Following Distance"), tr("How many seconds openpilot will follow behind lead vehicles while using the Standard personality profile.

Default: 1.45 seconds."), ""}, - {"StandardJerkAcceleration", tr("Acceleration Sensitivity"), tr("How sensitive openpilot is to changes in acceleration while using the Standard personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt."), ""}, - {"StandardJerkDeceleration", tr("Deceleration Sensitivity"), tr("How sensitive openpilot is to changes in deceleration while using the Standard personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt."), ""}, - {"StandardJerkDanger", tr("Safety Distance Sensitivity"), tr("How cautious openpilot is around other vehicles or obstacles while using the Standard personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time."), ""}, - {"StandardJerkSpeedDecrease", tr("Speed Decrease Response"), tr("How quickly openpilot decreases speed while using the Standard personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt."), ""}, - {"StandardJerkSpeed", tr("Speed Increase Response"), tr("How quickly openpilot increases speed while using the Standard personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt."), ""}, - {"ResetStandardPersonality", tr("Reset Settings"), tr("Reset the Standard personality profile settings to default values."), ""}, + {"StandardPersonalityProfile", tr("Standard"), tr("Customize the \"Standard\" personality profile. Designed for balanced driving with moderate gaps."), "../../frogpilot/assets/stock_theme/distance_icons/standard.png"}, + {"StandardFollow", tr("Following Distance"), tr("How many seconds openpilot follows behind lead vehicles when using the \"Standard\" profile. Increase for more space; decrease for tighter gaps.

Default: 1.45 seconds."), ""}, + {"StandardJerkAcceleration", tr("Acceleration Smoothness"), tr("How smoothly openpilot accelerates with the \"Standard\" profile. Increase for gentler starts; decrease for faster but more abrupt takeoffs."), ""}, + {"StandardJerkDeceleration", tr("Braking Smoothness"), tr("How smoothly openpilot brakes with the \"Standard\" profile. Increase for gentler stops; decrease for quicker but sharper braking."), ""}, + {"StandardJerkDanger", tr("Safety Gap Bias"), tr("How much extra space openpilot keeps from the vehicle ahead with the \"Standard\" profile. Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following."), ""}, + {"StandardJerkSpeedDecrease", tr("Slowdown Response"), tr("How smoothly openpilot slows down with the \"Standard\" profile. Increase for more gradual deceleration; decrease for faster but sharper slowdowns."), ""}, + {"StandardJerkSpeed", tr("Speed-Up Response"), tr("How smoothly openpilot speeds up with the \"Standard\" profile. Increase for more gradual acceleration; decrease for quicker but more jolting acceleration."), ""}, + {"ResetStandardPersonality", tr("Reset to Defaults"), tr("Reset the \"Standard\" profile to defaults."), ""}, - {"RelaxedPersonalityProfile", tr("Relaxed Personality"), tr("Customize the Relaxed personality profile. Designed for a more laid-back driving style."), "../../frogpilot/assets/stock_theme/distance_icons/relaxed.png"}, - {"RelaxedFollow", tr("Following Distance"), tr("How many seconds openpilot will follow behind lead vehicles while using the Relaxed personality profile.

Default: 1.75 seconds."), ""}, - {"RelaxedJerkAcceleration", tr("Acceleration Sensitivity"), tr("How sensitive openpilot is to changes in acceleration while using the Relaxed personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt."), ""}, - {"RelaxedJerkDeceleration", tr("Deceleration Sensitivity"), tr("How sensitive openpilot is to changes in deceleration while using the Relaxed personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt."), ""}, - {"RelaxedJerkDanger", tr("Safety Distance Sensitivity"), tr("How cautious openpilot is around other vehicles or obstacles while using the Relaxed personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time."), ""}, - {"RelaxedJerkSpeedDecrease", tr("Speed Decrease Response"), tr("How quickly openpilot decreases speed while using the Relaxed personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt."), ""}, - {"RelaxedJerkSpeed", tr("Speed Increase Response"), tr("How quickly openpilot increases speed while using the Relaxed personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt."), ""}, - {"ResetRelaxedPersonality", tr("Reset Settings"), tr("Reset the Relaxed personality profile settings to default values."), ""}, + {"RelaxedPersonalityProfile", tr("Relaxed"), tr("Customize the \"Relaxed\" personality profile. Designed for smoother, more comfortable driving with larger gaps."), "../../frogpilot/assets/stock_theme/distance_icons/relaxed.png"}, + {"RelaxedFollow", tr("Following Distance"), tr("How many seconds openpilot follows behind lead vehicles when using the \"Relaxed\" profile. Increase for more space; decrease for tighter gaps.

Default: 1.75 seconds."), ""}, + {"RelaxedJerkAcceleration", tr("Acceleration Smoothness"), tr("How smoothly openpilot accelerates with the \"Relaxed\" profile. Increase for gentler starts; decrease for faster but more abrupt takeoffs."), ""}, + {"RelaxedJerkDeceleration", tr("Braking Smoothness"), tr("How smoothly openpilot brakes with the \"Relaxed\" profile. Increase for gentler stops; decrease for quicker but sharper braking."), ""}, + {"RelaxedJerkDanger", tr("Safety Gap Bias"), tr("How much extra space openpilot keeps from the vehicle ahead with the \"Relaxed\" profile. Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following."), ""}, + {"RelaxedJerkSpeedDecrease", tr("Slowdown Response"), tr("How smoothly openpilot slows down with the \"Relaxed\" profile. Increase for more gradual deceleration; decrease for faster but sharper slowdowns."), ""}, + {"RelaxedJerkSpeed", tr("Speed-Up Response"), tr("How smoothly openpilot speeds up with the \"Relaxed\" profile. Increase for more gradual acceleration; decrease for quicker but more jolting acceleration."), ""}, + {"ResetRelaxedPersonality", tr("Reset to Defaults"), tr("Reset the \"Relaxed\" profile to defaults."), ""}, - {"LongitudinalTune", tr("Longitudinal Tuning"), tr("Settings that control how openpilot manages speed and acceleration."), "../../frogpilot/assets/toggle_icons/icon_longitudinal_tune.png"}, - {"AccelerationProfile", tr("Acceleration Profile"), tr("Enable either a sporty or eco-friendly acceleration profile. Sport+ aims to make openpilot accelerate as fast as possible!"), ""}, - {"DecelerationProfile", tr("Deceleration Profile"), tr("Enable either a sporty or eco-friendly deceleration profile."), ""}, - {"HumanAcceleration", tr("Human-Like Acceleration"), tr("Use the lead vehicle's acceleration rate when at a takeoff and ramp off the acceleration rate when approaching the maximum set speed for a more \"human-like\" driving experience."), ""}, - {"HumanFollowing", tr("Human-Like Approach Behind Leads"), tr("Dynamically adjust the desired following distance when approaching slower or stopped vehicles for a more \"human-like\" driving experience."), ""}, - {"LeadDetectionThreshold", tr("Lead Detection Confidence"), tr("How sensitive openpilot is to detecting vehicles ahead. A lower value can help detect vehicles sooner and from farther away, but increases the chance openpilot mistakes other objects for vehicles."), ""}, - {"MaxDesiredAcceleration", tr("Maximum Acceleration Rate"), tr("Set a cap on how fast openpilot can accelerate."), ""}, - {"TacoTune", tr("\"Taco Bell Run\" Turn Speed Hack"), tr("The turn speed hack from commaโ€™s 2022 \"Taco Bell Run\" drive. Designed to slow down when taking left/right turns for smoother turns."), ""}, + {"LongitudinalTune", tr("Longitudinal Tuning"), tr("Acceleration and braking control changes to fine-tune how openpilot drives."), "../../frogpilot/assets/toggle_icons/icon_longitudinal_tune.png"}, + {"AccelerationProfile", tr("Acceleration Profile"), tr("How quickly openpilot speeds up. \"Eco\" is gentle and efficient, \"Sport\" is firmer and more responsive, and \"Sport+\" accelerates at the maximum rate allowed."), ""}, + {"DecelerationProfile", tr("Deceleration Profile"), tr("How firmly openpilot slows down. \"Eco\" favors coasting, \"Sport\" applies stronger braking."), ""}, + {"HumanAcceleration", tr("Human-Like Acceleration"), tr("Acceleration that mimics human behavior by easing the throttle at low speeds and adding extra power when taking off from a stop."), ""}, + {"HumanFollowing", tr("Human-Like Following"), tr("Following behavior that mimics human drivers by closing gaps behind faster vehicles for quicker takeoffs and dynamically adjusting the desired following distance for gentler, more efficient braking."), ""}, + {"LeadDetectionThreshold", tr("Lead Detection Sensitivity"), tr("How sensitive openpilot is to detecting vehicles. Higher sensitivity allows quicker detection at longer distances but may react to non-vehicle objects; lower sensitivity is more conservative and reduces false detections."), ""}, + {"MaxDesiredAcceleration", tr("Maximum Acceleration"), tr("Limit the strongest acceleration openpilot can command."), ""}, + {"TacoTune", tr("\"Taco Bell Run\" Turn Speed Hack"), tr("The turn-speed hack from comma's 2022 \"Taco Bell Run\". Designed to slow down for left and right turns."), ""}, - {"QOLLongitudinal", tr("Quality of Life"), tr("Miscellaneous features to improve the acceleration and braking experience."), "../../frogpilot/assets/toggle_icons/icon_quality_of_life.png"}, - {"CustomCruise", tr("Cruise Interval"), tr("The interval used when changing the cruise control speed."), ""}, - {"CustomCruiseLong", tr("Cruise Interval (Long Press)"), tr("The interval used when changing the cruise control speed while holding down the button for 0.5+ seconds."), ""}, - {"ForceStandstill", tr("Force Keep openpilot in the Standstill State"), tr("Keep openpilot in the standstill state until either the gas pedal or resume button is pressed."), ""}, - {"ForceStops", tr("Force Stop for \"Detected\" Stop Lights/Signs"), tr("Force a stop whenever openpilot detects a potential red light/stop sign to prevent it from running the red light/stop sign."), ""}, - {"IncreasedStoppedDistance", tr("Increase Stopped Distance"), tr("Increase the distance openpilot stops behind vehicles."), ""}, - {"SetSpeedOffset", tr("Set Speed Offset"), tr("How much higher or lower the set speed should be compared to your current set speed. For example, if you prefer to drive 5 mph above the speed limit, this setting will automatically add that difference when you adjust your set speed."), ""}, - {"MapGears", tr("Map Accel/Decel to Gears"), tr("Map the acceleration and deceleration profiles to your car's Eco or Sport gear modes."), ""}, - {"ReverseCruise", tr("Reverse Cruise Increase"), tr("Reverse the long press cruise increase feature to increase the max speed by 5 instead of 1 on short presses."), ""}, + {"QOLLongitudinal", tr("Quality of Life"), tr("Miscellaneous acceleration and braking control changes to fine-tune how openpilot drives."), "../../frogpilot/assets/toggle_icons/icon_quality_of_life.png"}, + {"CustomCruise", tr("Cruise Interval"), tr("How much the set speed increases or decreases for each + or โ€“ cruise control button press."), ""}, + {"CustomCruiseLong", tr("Cruise Interval (Hold)"), tr("How much the set speed increases or decreases while holding the + or โ€“ cruise control buttons."), ""}, + {"ForceStops", tr("Force Stop at \"Detected\" Stop Lights/Signs"), tr("Force openpilot to stop whenever the driving model \"detects\" a red light or stop sign.

Disclaimer: openpilot does not explicitly detect traffic lights or stop signs. In \"Experimental Mode\", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason."), ""}, + {"IncreasedStoppedDistance", tr("Increase Stopped Distance by:"), tr("Add extra space when stopped behind vehicles. Increase for more room; decrease for shorter gaps."), ""}, + {"MapGears", tr("Map Accel/Decel to Gears"), tr("Map the Acceleration or Deceleration profiles to the vehicle's \"Eco\" and \"Sport\" gear modes."), ""}, + {"SetSpeedOffset", tr("Offset Set Speed by:"), tr("Increase the set speed by the chosen offset. For example, set +5 if you usually drive 5 over the limit."), ""}, + {"ReverseCruise", tr("Reverse Cruise Increase"), tr("Reverse the cruise control button behavior so a short press increases the set speed by 5 instead of 1."), ""}, - {"SpeedLimitController", tr("Speed Limit Controller"), tr("Limit openpilot's maximum driving speed based on data from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard (supported vehicles: Ford, Genesis, Hyundai, Kia, Lexus, Toyota)."), "../assets/offroad/icon_speed_limit.png"}, - {"SLCFallback", tr("Fallback Speed"), tr("The speed limit source when no speed limit data is available."), ""}, - {"SLCOverride", tr("Override Speed"), tr("The speed openpilot uses after manually exceeding the posted speed limit.

- Set With Gas Pedal: Uses the speed obtained while pressing the gas
- Max Set Speed: Uses the cruise control set speed

Overrides clear upon disengagement."), ""}, - {"SLCQOL", tr("Quality of Life"), tr("Miscellaneous features to improve the Speed Limit Controller experience."), ""}, - {"SLCConfirmation", tr("Confirm New Speed Limits"), tr("Require confirmation before applying new speed limits. To accept, use the flashing widget on the driving screen or press the Cruise Increase button. To deny, press the Cruise Decrease button or simply ignore the prompt for 30 seconds."), ""}, - {"ForceMPHDashboard", tr("Force MPH Readings from Dashboard"), tr("Force dashboard speed limit readings to be in mph."), ""}, - {"SLCLookaheadHigher", tr("Higher Limit Lookahead Time"), tr("How far ahead openpilot anticipates upcoming higher speed limits from the downloaded map data."), ""}, - {"SLCLookaheadLower", tr("Lower Limit Lookahead Time"), tr("How far ahead openpilot anticipates upcoming lower speed limits from the downloaded map data."), ""}, - {"SetSpeedLimit", tr("Match Speed Limit on Engage"), tr("Automatically set cruise control speed to match the current speed limit when first enabling openpilot."), ""}, - {"SLCMapboxFiller", tr("Use Mapbox as Fallback"), tr("Use Mapbox speed limit data when no other sources are available."), ""}, - {"SLCPriority", tr("Speed Limit Source Priority"), tr("Define the priority order for speed limit sources (Dashboard, Map Data, Navigation). Higher-priority sources override lower ones when multiple limits are detected."), ""}, - {"SLCOffsets", tr("Speed Limit Offsets"), tr("Offsets relative to the posted speed limit for a more \"human-like\" driving experience."), ""}, - {"Offset1", tr("Speed Offset (0โ€“24 mph)"), tr("Target speed offset applied for posted limits between 0 and 24 mph."), ""}, - {"Offset2", tr("Speed Offset (25โ€“34 mph)"), tr("Target speed offset applied for posted limits between 25 and 34 mph."), ""}, - {"Offset3", tr("Speed Offset (35โ€“44 mph)"), tr("Target speed offset applied for posted limits between 35 and 44 mph."), ""}, - {"Offset4", tr("Speed Offset (45โ€“54 mph)"), tr("Target speed offset applied for posted limits between 45 and 54 mph."), ""}, - {"Offset5", tr("Speed Offset (55โ€“64 mph)"), tr("Target speed offset applied for posted limits between 55 and 64 mph."), ""}, - {"Offset6", tr("Speed Offset (65โ€“74 mph)"), tr("Target speed offset applied for posted limits between 65 and 74 mph."), ""}, - {"Offset7", tr("Speed Offset (75โ€“99 mph)"), tr("Target speed offset applied for posted limits between 75 and 99 mph."), ""}, - {"SLCVisuals", tr("Visual Settings"), tr("Visual features to improve the Speed Limit Controller experience."), ""}, - {"ShowSLCOffset", tr("Show Speed Limit Offset"), tr("Display the speed limit offset separately on the driving screen."), ""}, - {"SpeedLimitSources", tr("Show Speed Limit Sources"), tr("Display the speed limit sources on the driving screen."), ""} + {"SnowOffsets", tr("Snow"), tr("Driving adjustments for snowy conditions."), ""}, + {"IncreaseFollowingSnow", tr("Increase Following Distance by:"), tr("Add extra space behind lead vehicles in snow. Increase for more space; decrease for tighter gaps."), ""}, + {"IncreasedStoppedDistanceSnow", tr("Increase Stopped Distance by:"), tr("Add extra buffer when stopped behind vehicles in snow. Increase for more room; decrease for shorter gaps."), ""}, + {"ReduceAccelerationSnow", tr("Reduce Acceleration by:"), tr("Lower the maximum acceleration in snow. Increase for softer takeoffs; decrease for quicker but less stable takeoffs."), ""}, + {"ReduceLateralAccelerationSnow", tr("Reduce Speed in Curves by:"), tr("Lower the desired speed while driving through curves in snow. Increase for safer, gentler turns; decrease for more aggressive driving in curves."), ""}, + + {"SpeedLimitController", tr("Speed Limit Controller"), tr("Limit openpilot's maximum driving speed to the current speed limit obtained from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota)."), "../assets/offroad/icon_speed_limit.png"}, + {"SLCFallback", tr("Fallback Speed"), tr("The speed used by \"Speed Limit Controller\" when no speed limit is found.

- Set Speed: Use the cruise set speed
- Experimental Mode: Estimate the limit using the driving model
- Previous Limit: Keep using the last confirmed limit"), ""}, + {"SLCOverride", tr("Override Speed"), tr("The speed used by \"Speed Limit Controller\" after you manually drive faster than the posted limit.

- Set with Gas Pedal: Use the highest speed reached while pressing the gas
- Max Set Speed: Use the cruise set speed

Overrides clear when openpilot disengages."), ""}, + {"SLCQOL", tr("Quality of Life"), tr("Miscellaneous \"Speed Limit Controller\" changes to fine-tune how openpilot drives."), ""}, + {"SLCConfirmation", tr("Confirm New Speed Limits"), tr("Ask before changing to a new speed limit. To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds."), ""}, + {"ForceMPHDashboard", tr("Force MPH from Dashboard"), tr("Always read dashboard speed limit signs in mph. Turn this on if the cluster shows mph but the limit is interpreted as km/h."), ""}, + {"SLCLookaheadHigher", tr("Higher Limit Lookahead Time"), tr("How far ahead openpilot anticipates upcoming higher speed limits from downloaded map data."), ""}, + {"SLCLookaheadLower", tr("Lower Limit Lookahead Time"), tr("How far ahead openpilot anticipates upcoming lower speed limits from downloaded map data."), ""}, + {"SetSpeedLimit", tr("Match Speed Limit on Engage"), tr("When openpilot is first enabled, automatically set the max speed to the current posted limit."), ""}, + {"SLCMapboxFiller", tr("Use Mapbox as Fallback"), tr("Use Mapbox speed-limit data when no other source is available."), ""}, + {"SLCPriority", tr("Speed Limit Source Priority"), tr("The source order for speed limits when more than one is available."), ""}, + {"SLCOffsets", tr("Speed Limit Offsets"), tr("Add an offset to the posted speed limit to better match your driving style."), ""}, + {"Offset1", tr("Speed Offset (0โ€“24 mph)"), tr("How much to offset posted speed-limits between 0 and 24 mph."), ""}, + {"Offset2", tr("Speed Offset (25โ€“34 mph)"), tr("How much to offset posted speed-limits between 25 and 34 mph."), ""}, + {"Offset3", tr("Speed Offset (35โ€“44 mph)"), tr("How much to offset posted speed-limits between 35 and 44 mph."), ""}, + {"Offset4", tr("Speed Offset (45โ€“54 mph)"), tr("How much to offset posted speed-limits between 45 and 54 mph."), ""}, + {"Offset5", tr("Speed Offset (55โ€“64 mph)"), tr("How much to offset posted speed-limits between 55 and 64 mph."), ""}, + {"Offset6", tr("Speed Offset (65โ€“74 mph)"), tr("How much to offset posted speed-limits between 65 and 74 mph."), ""}, + {"Offset7", tr("Speed Offset (75โ€“99 mph)"), tr("How much to offset posted speed-limits between 75 and 99 mph."), ""}, + {"SLCVisuals", tr("Visual Settings"), tr("Visual \"Speed Limit Controller\" changes to fine-tune how the driving screen looks."), ""}, + {"ShowSLCOffset", tr("Show Speed Limit Offset"), tr("Show the current offset from the posted limit on the driving screen."), ""}, + {"SpeedLimitSources", tr("Show Speed Limit Sources"), tr("Display the speed-limit sources and their current values on the driving screen."), ""} }; for (const auto &[param, title, desc, icon] : longitudinalToggles) { @@ -197,7 +210,7 @@ FrogPilotLongitudinalPanel::FrogPilotLongitudinalPanel(FrogPilotSettingsWindow * longitudinalToggle = conditionalExperimentalToggle; } else if (param == "CESpeed") { FrogPilotParamValueControl *CESpeed = new FrogPilotParamValueControl(param, title, desc, icon, 0, 99, tr(" mph"), std::map(), 1, true, 175); - FrogPilotParamValueControl *CESpeedLead = new FrogPilotParamValueControl("CESpeedLead", tr("With Lead"), tr("Switch to Experimental Mode when driving below this speed with a lead."), icon, 0, 99, tr(" mph"), std::map(), 1, true, 175); + FrogPilotParamValueControl *CESpeedLead = new FrogPilotParamValueControl("CESpeedLead", tr("With Lead"), tr("Switch to \"Experimental Mode\" when driving below this speed with a lead to help openpilot handle low-speed situations more smoothly."), icon, 0, 99, tr(" mph"), std::map(), 1, true, 175); FrogPilotDualParamValueControl *conditionalSpeeds = new FrogPilotDualParamValueControl(CESpeed, CESpeedLead); longitudinalToggle = reinterpret_cast(conditionalSpeeds); } else if (param == "CECurves") { @@ -220,39 +233,38 @@ FrogPilotLongitudinalPanel::FrogPilotLongitudinalPanel(FrogPilotSettingsWindow * longitudinalToggle = new FrogPilotParamValueControl(param, title, desc, icon, 0, 9, QString(), stopTimeLabels); } else if (param == "CESignalSpeed") { std::vector ceSignalToggles{"CESignalLaneDetection"}; - std::vector ceSignalToggleNames{tr("Only For Detected Lanes")}; + std::vector ceSignalToggleNames{tr("Not For Detected Lanes")}; longitudinalToggle = new FrogPilotParamValueButtonControl(param, title, desc, icon, 0, 99, tr(" mph"), std::map(), 1.0, true, ceSignalToggles, ceSignalToggleNames, true); - } else if (param == "CurveSpeedControl") { + } else if (param == "CurveSpeedController") { FrogPilotManageControl *curveControlToggle = new FrogPilotManageControl(param, title, desc, icon); - QObject::connect(curveControlToggle, &FrogPilotManageControl::manageButtonClicked, [this, longitudinalLayout, curveSpeedPanel]() { - curveDetectionToggle->setEnabledButtons(0, QDir("/data/media/0/osm/offline").exists()); - + QObject::connect(curveControlToggle, &FrogPilotManageControl::manageButtonClicked, [longitudinalLayout, curveSpeedPanel]() { longitudinalLayout->setCurrentWidget(curveSpeedPanel); }); longitudinalToggle = curveControlToggle; - } else if (param == "CurveDetectionMethod") { - std::vector curveDetectionToggles{"MapTurnControl", "VisionTurnControl"}; - std::vector curveDetectionToggleNames{tr("Map Based"), tr("Vision")}; - curveDetectionToggle = new FrogPilotButtonsControl(title, desc, icon, curveDetectionToggleNames, true, false); - for (int i = 0; i < curveDetectionToggles.size(); ++i) { - if (params.getBool(curveDetectionToggles[i].toStdString())) { - curveDetectionToggle->setCheckedButton(i); - } - } - QObject::connect(curveDetectionToggle, &FrogPilotButtonsControl::buttonClicked, [this, curveDetectionToggles](int id) { - params.putBool(curveDetectionToggles[id].toStdString(), !params.getBool(curveDetectionToggles[id].toStdString())); + } else if (param == "CalibrationProgress") { + calibrationProgressLabel = new LabelControl(title, QString::number(params.getFloat("CalibrationProgress"), 'f', 2) + "%", desc); + longitudinalToggle = calibrationProgressLabel; + } else if (param == "CalibratedLateralAcceleration") { + calibratedLateralAccelerationLabel = new LabelControl(title, QString::number(params.getFloat("CalibratedLateralAcceleration"), 'f', 2) + tr(" m/sยฒ"), desc); + longitudinalToggle = calibratedLateralAccelerationLabel; + } else if (param == "ResetCurveData") { + ButtonControl *resetCurveDataButton = new ButtonControl(title, tr("RESET"), desc); + QObject::connect(resetCurveDataButton, &ButtonControl::clicked, [this]() { + if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to completely reset your curvature data?"), this)) { + params.putFloat("CalibratedLateralAcceleration", 2.00); + params.remove("CalibrationProgress"); + params.remove("CurvatureData"); - updateToggles(); - }); - QObject::connect(curveDetectionToggle, &FrogPilotButtonsControl::disabledButtonClicked, [this](int id) { - if (id == 0) { - ConfirmationDialog::alert(tr("The Map Based option is only available when some Map Data has been downloaded!"), this); + params_cache.putFloat("CalibratedLateralAcceleration", 2.00); + params_cache.remove("CalibrationProgress"); + params_cache.remove("CurvatureData"); + + calibratedLateralAccelerationLabel->setText(QString::number(2.00, 'f', 2) + tr(" m/sยฒ")); + calibrationProgressLabel->setText(QString::number(0.00, 'f', 2) + "%"); } }); - longitudinalToggle = curveDetectionToggle; - } else if (param == "CurveSensitivity" || param == "TurnAggressiveness") { - longitudinalToggle = new FrogPilotParamValueControl(param, title, desc, icon, 1, 200, "%"); + longitudinalToggle = resetCurveDataButton; } else if (param == "CustomPersonalities") { FrogPilotManageControl *customPersonalitiesToggle = new FrogPilotManageControl(param, title, desc, icon); @@ -261,11 +273,11 @@ FrogPilotLongitudinalPanel::FrogPilotLongitudinalPanel(FrogPilotSettingsWindow * }); longitudinalToggle = customPersonalitiesToggle; } else if (param == "ResetTrafficPersonality" || param == "ResetAggressivePersonality" || param == "ResetStandardPersonality" || param == "ResetRelaxedPersonality") { - ButtonControl *resetBtn = new ButtonControl(title, tr("RESET"), desc); - longitudinalToggle = resetBtn; + ButtonControl *resetButton = new ButtonControl(title, tr("RESET"), desc); + longitudinalToggle = resetButton; } else if (param == "TrafficPersonalityProfile") { FrogPilotManageControl *trafficPersonalityToggle = new FrogPilotManageControl(param, title, desc, icon); - QObject::connect(trafficPersonalityToggle, &FrogPilotManageControl::manageButtonClicked, [this, longitudinalLayout, trafficPersonalityPanel]() { + QObject::connect(trafficPersonalityToggle, &FrogPilotManageControl::manageButtonClicked, [longitudinalLayout, trafficPersonalityPanel, this]() { openSubSubPanel(); longitudinalLayout->setCurrentWidget(trafficPersonalityPanel); @@ -275,7 +287,7 @@ FrogPilotLongitudinalPanel::FrogPilotLongitudinalPanel(FrogPilotSettingsWindow * longitudinalToggle = trafficPersonalityToggle; } else if (param == "AggressivePersonalityProfile") { FrogPilotManageControl *aggressivePersonalityToggle = new FrogPilotManageControl(param, title, desc, icon); - QObject::connect(aggressivePersonalityToggle, &FrogPilotManageControl::manageButtonClicked, [this, longitudinalLayout, aggressivePersonalityPanel]() { + QObject::connect(aggressivePersonalityToggle, &FrogPilotManageControl::manageButtonClicked, [longitudinalLayout, aggressivePersonalityPanel, this]() { openSubSubPanel(); longitudinalLayout->setCurrentWidget(aggressivePersonalityPanel); @@ -285,7 +297,7 @@ FrogPilotLongitudinalPanel::FrogPilotLongitudinalPanel(FrogPilotSettingsWindow * longitudinalToggle = aggressivePersonalityToggle; } else if (param == "StandardPersonalityProfile") { FrogPilotManageControl *standardPersonalityToggle = new FrogPilotManageControl(param, title, desc, icon); - QObject::connect(standardPersonalityToggle, &FrogPilotManageControl::manageButtonClicked, [this, longitudinalLayout, standardPersonalityPanel]() { + QObject::connect(standardPersonalityToggle, &FrogPilotManageControl::manageButtonClicked, [longitudinalLayout, standardPersonalityPanel, this]() { openSubSubPanel(); longitudinalLayout->setCurrentWidget(standardPersonalityPanel); @@ -295,7 +307,7 @@ FrogPilotLongitudinalPanel::FrogPilotLongitudinalPanel(FrogPilotSettingsWindow * longitudinalToggle = standardPersonalityToggle; } else if (param == "RelaxedPersonalityProfile") { FrogPilotManageControl *relaxedPersonalityToggle = new FrogPilotManageControl(param, title, desc, icon); - QObject::connect(relaxedPersonalityToggle, &FrogPilotManageControl::manageButtonClicked, [this, longitudinalLayout, relaxedPersonalityPanel]() { + QObject::connect(relaxedPersonalityToggle, &FrogPilotManageControl::manageButtonClicked, [longitudinalLayout, relaxedPersonalityPanel, this]() { openSubSubPanel(); longitudinalLayout->setCurrentWidget(relaxedPersonalityPanel); @@ -303,19 +315,16 @@ FrogPilotLongitudinalPanel::FrogPilotLongitudinalPanel(FrogPilotSettingsWindow * customPersonalityOpen = true; }); longitudinalToggle = relaxedPersonalityToggle; - } else if (aggressivePersonalityKeys.find(param) != aggressivePersonalityKeys.end() || - standardPersonalityKeys.find(param) != standardPersonalityKeys.end() || - relaxedPersonalityKeys.find(param) != relaxedPersonalityKeys.end() || - trafficPersonalityKeys.find(param) != trafficPersonalityKeys.end()) { + } else if (aggressivePersonalityKeys.contains(param) || standardPersonalityKeys.contains(param) || relaxedPersonalityKeys.contains(param) || trafficPersonalityKeys.contains(param)) { if (param == "TrafficFollow" || param == "AggressiveFollow" || param == "StandardFollow" || param == "RelaxedFollow") { std::map followTimeLabels; - for (float i = 0; i <= 5; i += 0.01) { + for (float i = 0; i <= 3; i += 0.01) { followTimeLabels[i] = std::lround(i / 0.01) == 1 / 0.01 ? QString::number(i, 'f', 2) + tr(" second") : QString::number(i, 'f', 2) + tr(" seconds"); } if (param == "TrafficFollow") { - longitudinalToggle = new FrogPilotParamValueControl(param, title, desc, icon, 0.5, 5, QString(), followTimeLabels, 0.01, true); + longitudinalToggle = new FrogPilotParamValueControl(param, title, desc, icon, 0.5, 3, QString(), followTimeLabels, 0.01, true); } else { - longitudinalToggle = new FrogPilotParamValueControl(param, title, desc, icon, 1, 5, QString(), followTimeLabels, 0.01, true); + longitudinalToggle = new FrogPilotParamValueControl(param, title, desc, icon, 1, 3, QString(), followTimeLabels, 0.01, true); } } else { longitudinalToggle = new FrogPilotParamValueControl(param, title, desc, icon, 25, 200, "%"); @@ -430,27 +439,27 @@ FrogPilotLongitudinalPanel::FrogPilotLongitudinalPanel(FrogPilotSettingsWindow * longitudinalToggle = slcPriorityButton; } else if (param == "SLCOffsets") { - ButtonControl *manageSLCOffsetsBtn = new ButtonControl(title, tr("MANAGE"), desc); - QObject::connect(manageSLCOffsetsBtn, &ButtonControl::clicked, [this, longitudinalLayout, speedLimitControllerOffsetsPanel]() { + ButtonControl *manageSLCOffsetsButton = new ButtonControl(title, tr("MANAGE"), desc); + QObject::connect(manageSLCOffsetsButton, &ButtonControl::clicked, [longitudinalLayout, speedLimitControllerOffsetsPanel, this]() { openSubSubPanel(); longitudinalLayout->setCurrentWidget(speedLimitControllerOffsetsPanel); slcOpen = true; }); - longitudinalToggle = manageSLCOffsetsBtn; - } else if (speedLimitControllerOffsetsKeys.find(param) != speedLimitControllerOffsetsKeys.end()) { + longitudinalToggle = manageSLCOffsetsButton; + } else if (speedLimitControllerOffsetsKeys.contains(param)) { longitudinalToggle = new FrogPilotParamValueControl(param, title, desc, icon, -99, 99, tr(" mph")); } else if (param == "SLCQOL") { - ButtonControl *manageSLCQOLBtn = new ButtonControl(title, tr("MANAGE"), desc); - QObject::connect(manageSLCQOLBtn, &ButtonControl::clicked, [this, longitudinalLayout, speedLimitControllerQOLPanel]() { + ButtonControl *manageSLCQOLButton = new ButtonControl(title, tr("MANAGE"), desc); + QObject::connect(manageSLCQOLButton, &ButtonControl::clicked, [longitudinalLayout, speedLimitControllerQOLPanel, this]() { openSubSubPanel(); longitudinalLayout->setCurrentWidget(speedLimitControllerQOLPanel); slcOpen = true; }); - longitudinalToggle = manageSLCQOLBtn; + longitudinalToggle = manageSLCQOLButton; } else if (param == "SLCConfirmation") { std::vector confirmationToggles{"SLCConfirmationLower", "SLCConfirmationHigher"}; std::vector confirmationToggleNames{tr("Lower Limits"), tr("Higher Limits")}; @@ -458,15 +467,15 @@ FrogPilotLongitudinalPanel::FrogPilotLongitudinalPanel(FrogPilotSettingsWindow * } else if (param == "SLCLookaheadHigher" || param == "SLCLookaheadLower") { longitudinalToggle = new FrogPilotParamValueControl(param, title, desc, icon, 0, 30, tr(" seconds")); } else if (param == "SLCVisuals") { - ButtonControl *manageSLCVisualsBtn = new ButtonControl(title, tr("MANAGE"), desc); - QObject::connect(manageSLCVisualsBtn, &ButtonControl::clicked, [this, longitudinalLayout, speedLimitControllerVisualPanel]() { + ButtonControl *manageSLCVisualsButton = new ButtonControl(title, tr("MANAGE"), desc); + QObject::connect(manageSLCVisualsButton, &ButtonControl::clicked, [longitudinalLayout, speedLimitControllerVisualPanel, this]() { openSubSubPanel(); longitudinalLayout->setCurrentWidget(speedLimitControllerVisualPanel); slcOpen = true; }); - longitudinalToggle = manageSLCVisualsBtn; + longitudinalToggle = manageSLCVisualsButton; } else { longitudinalToggle = new ParamControl(param, title, desc, icon); @@ -474,33 +483,33 @@ FrogPilotLongitudinalPanel::FrogPilotLongitudinalPanel(FrogPilotSettingsWindow * toggles[param] = longitudinalToggle; - if (advancedLongitudinalTuneKeys.find(param) != advancedLongitudinalTuneKeys.end()) { + if (advancedLongitudinalTuneKeys.contains(param)) { advancedLongitudinalTuneList->addItem(longitudinalToggle); - } else if (aggressivePersonalityKeys.find(param) != aggressivePersonalityKeys.end()) { + } else if (aggressivePersonalityKeys.contains(param)) { aggressivePersonalityList->addItem(longitudinalToggle); - } else if (conditionalExperimentalKeys.find(param) != conditionalExperimentalKeys.end()) { + } else if (conditionalExperimentalKeys.contains(param)) { conditionalExperimentalList->addItem(longitudinalToggle); - } else if (curveSpeedKeys.find(param) != curveSpeedKeys.end()) { + } else if (curveSpeedKeys.contains(param)) { curveSpeedList->addItem(longitudinalToggle); - } else if (customDrivingPersonalityKeys.find(param) != customDrivingPersonalityKeys.end()) { + } else if (customDrivingPersonalityKeys.contains(param)) { customDrivingPersonalityList->addItem(longitudinalToggle); - } else if (longitudinalTuneKeys.find(param) != longitudinalTuneKeys.end()) { + } else if (longitudinalTuneKeys.contains(param)) { longitudinalTuneList->addItem(longitudinalToggle); - } else if (qolKeys.find(param) != qolKeys.end()) { + } else if (qolKeys.contains(param)) { qolList->addItem(longitudinalToggle); - } else if (relaxedPersonalityKeys.find(param) != relaxedPersonalityKeys.end()) { + } else if (relaxedPersonalityKeys.contains(param)) { relaxedPersonalityList->addItem(longitudinalToggle); - } else if (speedLimitControllerKeys.find(param) != speedLimitControllerKeys.end()) { + } else if (speedLimitControllerKeys.contains(param)) { speedLimitControllerList->addItem(longitudinalToggle); - } else if (speedLimitControllerOffsetsKeys.find(param) != speedLimitControllerOffsetsKeys.end()) { + } else if (speedLimitControllerOffsetsKeys.contains(param)) { speedLimitControllerOffsetsList->addItem(longitudinalToggle); - } else if (speedLimitControllerQOLKeys.find(param) != speedLimitControllerQOLKeys.end()) { + } else if (speedLimitControllerQOLKeys.contains(param)) { speedLimitControllerQOLList->addItem(longitudinalToggle); - } else if (speedLimitControllerVisualKeys.find(param) != speedLimitControllerVisualKeys.end()) { + } else if (speedLimitControllerVisualKeys.contains(param)) { speedLimitControllerVisualList->addItem(longitudinalToggle); - } else if (standardPersonalityKeys.find(param) != standardPersonalityKeys.end()) { + } else if (standardPersonalityKeys.contains(param)) { standardPersonalityList->addItem(longitudinalToggle); - } else if (trafficPersonalityKeys.find(param) != trafficPersonalityKeys.end()) { + } else if (trafficPersonalityKeys.contains(param)) { trafficPersonalityList->addItem(longitudinalToggle); } else { longitudinalList->addItem(longitudinalToggle); @@ -509,15 +518,21 @@ FrogPilotLongitudinalPanel::FrogPilotLongitudinalPanel(FrogPilotSettingsWindow * } if (FrogPilotManageControl *frogPilotManageToggle = qobject_cast(longitudinalToggle)) { - QObject::connect(frogPilotManageToggle, &FrogPilotManageControl::manageButtonClicked, this, &FrogPilotLongitudinalPanel::openSubPanel); + QObject::connect(frogPilotManageToggle, &FrogPilotManageControl::manageButtonClicked, [this]() { + emit openSubPanel(); + openDescriptions(forceOpenDescriptions, toggles); + }); } + QObject::connect(longitudinalToggle, &AbstractControl::hideDescriptionEvent, [this]() { + update(); + }); QObject::connect(longitudinalToggle, &AbstractControl::showDescriptionEvent, [this]() { update(); }); } - std::set forceUpdateKeys = {"HumanAcceleration", "LongitudinalTune"}; + QSet forceUpdateKeys = {"HumanAcceleration", "LongitudinalTune"}; for (const QString &key : forceUpdateKeys) { QObject::connect(static_cast(toggles[key]), &ToggleControl::toggleFlipped, this, &FrogPilotLongitudinalPanel::updateToggles); } @@ -529,7 +544,7 @@ FrogPilotLongitudinalPanel::FrogPilotLongitudinalPanel(FrogPilotSettingsWindow * FrogPilotParamValueControl *trafficSpeedToggle = static_cast(toggles["TrafficJerkSpeed"]); FrogPilotParamValueControl *trafficSpeedDecreaseToggle = static_cast(toggles["TrafficJerkSpeedDecrease"]); FrogPilotButtonsControl *trafficResetButton = static_cast(toggles["ResetTrafficPersonality"]); - QObject::connect(trafficResetButton, &FrogPilotButtonsControl::buttonClicked, this, [=]() { + QObject::connect(trafficResetButton, &FrogPilotButtonsControl::buttonClicked, [=]() { if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to completely reset your settings for Traffic Mode?"), this)) { params.putFloat("TrafficFollow", params_default.getFloat("TrafficFollow")); params.putFloat("TrafficJerkAcceleration", params_default.getFloat("TrafficJerkAcceleration")); @@ -554,7 +569,7 @@ FrogPilotLongitudinalPanel::FrogPilotLongitudinalPanel(FrogPilotSettingsWindow * FrogPilotParamValueControl *aggressiveSpeedToggle = static_cast(toggles["AggressiveJerkSpeed"]); FrogPilotParamValueControl *aggressiveSpeedDecreaseToggle = static_cast(toggles["AggressiveJerkSpeedDecrease"]); FrogPilotButtonsControl *aggressiveResetButton = static_cast(toggles["ResetAggressivePersonality"]); - QObject::connect(aggressiveResetButton, &FrogPilotButtonsControl::buttonClicked, this, [=]() { + QObject::connect(aggressiveResetButton, &FrogPilotButtonsControl::buttonClicked, [=]() { if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to completely reset your settings for the Aggressive personality?"), this)) { params.putFloat("AggressiveFollow", params_default.getFloat("AggressiveFollow")); params.putFloat("AggressiveJerkAcceleration", params_default.getFloat("AggressiveJerkAcceleration")); @@ -579,7 +594,7 @@ FrogPilotLongitudinalPanel::FrogPilotLongitudinalPanel(FrogPilotSettingsWindow * FrogPilotParamValueControl *standardSpeedToggle = static_cast(toggles["StandardJerkSpeed"]); FrogPilotParamValueControl *standardSpeedDecreaseToggle = static_cast(toggles["StandardJerkSpeedDecrease"]); FrogPilotButtonsControl *standardResetButton = static_cast(toggles["ResetStandardPersonality"]); - QObject::connect(standardResetButton, &FrogPilotButtonsControl::buttonClicked, this, [=]() { + QObject::connect(standardResetButton, &FrogPilotButtonsControl::buttonClicked, [=]() { if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to completely reset your settings for the Standard personality?"), this)) { params.putFloat("StandardFollow", params_default.getFloat("StandardFollow")); params.putFloat("StandardJerkAcceleration", params_default.getFloat("StandardJerkAcceleration")); @@ -604,7 +619,7 @@ FrogPilotLongitudinalPanel::FrogPilotLongitudinalPanel(FrogPilotSettingsWindow * FrogPilotParamValueControl *relaxedSpeedToggle = static_cast(toggles["RelaxedJerkSpeed"]); FrogPilotParamValueControl *relaxedSpeedDecreaseToggle = static_cast(toggles["RelaxedJerkSpeedDecrease"]); FrogPilotButtonsControl *relaxedResetButton = static_cast(toggles["ResetRelaxedPersonality"]); - QObject::connect(relaxedResetButton, &FrogPilotButtonsControl::buttonClicked, this, [=]() { + QObject::connect(relaxedResetButton, &FrogPilotButtonsControl::buttonClicked, [=]() { if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to completely reset your settings for the Relaxed personality?"), this)) { params.putFloat("RelaxedFollow", params_default.getFloat("RelaxedFollow")); params.putFloat("RelaxedJerkAcceleration", params_default.getFloat("RelaxedJerkAcceleration")); @@ -622,8 +637,15 @@ FrogPilotLongitudinalPanel::FrogPilotLongitudinalPanel(FrogPilotSettingsWindow * } }); - QObject::connect(parent, &FrogPilotSettingsWindow::closeSubPanel, [longitudinalLayout, longitudinalPanel] {longitudinalLayout->setCurrentWidget(longitudinalPanel);}); - QObject::connect(parent, &FrogPilotSettingsWindow::closeSubSubPanel, [this, longitudinalLayout, customDrivingPersonalityPanel, speedLimitControllerPanel]() { + openDescriptions(forceOpenDescriptions, toggles); + + QObject::connect(parent, &FrogPilotSettingsWindow::closeSubPanel, [longitudinalLayout, longitudinalPanel, this] { + openDescriptions(forceOpenDescriptions, toggles); + longitudinalLayout->setCurrentWidget(longitudinalPanel); + }); + QObject::connect(parent, &FrogPilotSettingsWindow::closeSubSubPanel, [longitudinalLayout, customDrivingPersonalityPanel, speedLimitControllerPanel, this]() { + openDescriptions(forceOpenDescriptions, toggles); + if (customPersonalityOpen) { longitudinalLayout->setCurrentWidget(customDrivingPersonalityPanel); @@ -653,6 +675,9 @@ void FrogPilotLongitudinalPanel::showEvent(QShowEvent *event) { vEgoStarting = parent->vEgoStarting; vEgoStopping = parent->vEgoStopping; + calibratedLateralAccelerationLabel->setText(QString::number(params.getFloat("CalibratedLateralAcceleration"), 'f', 2) + tr(" m/sยฒ")); + calibrationProgressLabel->setText(QString::number(params.getFloat("CalibrationProgress"), 'f', 2) + "%"); + longitudinalActuatorDelayToggle->setTitle(QString(tr("Actuator Delay (Default: %1)")).arg(QString::number(longitudinalActuatorDelay, 'f', 2))); startAccelToggle->setTitle(QString(tr("Start Acceleration (Default: %1)")).arg(QString::number(startAccel, 'f', 2))); stopAccelToggle->setTitle(QString(tr("Stop Acceleration (Default: %1)")).arg(QString::number(stopAccel, 'f', 2))); @@ -736,13 +761,13 @@ void FrogPilotLongitudinalPanel::updateMetric(bool metric, bool bootRun) { offset6Toggle->setTitle(tr("Speed Offset (100โ€“119 km/h)")); offset7Toggle->setTitle(tr("Speed Offset (120โ€“140 km/h)")); - offset1Toggle->setDescription(tr("Target speed offset applied for posted limits between 0 and 29 km/h.")); - offset2Toggle->setDescription(tr("Target speed offset applied for posted limits between 30 and 49 km/h.")); - offset3Toggle->setDescription(tr("Target speed offset applied for posted limits between 50 and 59 km/h.")); - offset4Toggle->setDescription(tr("Target speed offset applied for posted limits between 60 and 79 km/h.")); - offset5Toggle->setDescription(tr("Target speed offset applied for posted limits between 80 and 99 km/h.")); - offset6Toggle->setDescription(tr("Target speed offset applied for posted limits between 100 and 119 km/h.")); - offset7Toggle->setDescription(tr("Target speed offset applied for posted limits between 120 and 140 km/h.")); + offset1Toggle->setDescription(tr("How much to offset posted speed-limits between 0 and 24 mph.")); + offset2Toggle->setDescription(tr("How much to offset posted speed-limits between 25 and 34 mph.")); + offset3Toggle->setDescription(tr("How much to offset posted speed-limits between 35 and 44 mph.")); + offset4Toggle->setDescription(tr("How much to offset posted speed-limits between 45 and 54 mph.")); + offset5Toggle->setDescription(tr("How much to offset posted speed-limits between 55 and 64 mph.")); + offset6Toggle->setDescription(tr("How much to offset posted speed-limits between 65 and 74 mph.")); + offset7Toggle->setDescription(tr("How much to offset posted speed-limits between 75 and 99 mph.")); increasedStoppedDistanceToggle->updateControl(0, 3, metricDistanceLabels); @@ -767,13 +792,13 @@ void FrogPilotLongitudinalPanel::updateMetric(bool metric, bool bootRun) { offset6Toggle->setTitle(tr("Speed Offset (65โ€“74 mph)")); offset7Toggle->setTitle(tr("Speed Offset (75โ€“99 mph)")); - offset1Toggle->setDescription(tr("Target speed offset applied for posted limits between 0 and 24 mph.")); - offset2Toggle->setDescription(tr("Target speed offset applied for posted limits between 25 and 34 mph.")); - offset3Toggle->setDescription(tr("Target speed offset applied for posted limits between 35 and 44 mph.")); - offset4Toggle->setDescription(tr("Target speed offset applied for posted limits between 45 and 54 mph.")); - offset5Toggle->setDescription(tr("Target speed offset applied for posted limits between 55 and 64 mph.")); - offset6Toggle->setDescription(tr("Target speed offset applied for posted limits between 65 and 74 mph.")); - offset7Toggle->setDescription(tr("Target speed offset applied for posted limits between 75 and 99 mph.")); + offset1Toggle->setDescription(tr("How much to offset posted speed-limits between 0 and 24 mph.")); + offset2Toggle->setDescription(tr("How much to offset posted speed-limits between 25 and 34 mph.")); + offset3Toggle->setDescription(tr("How much to offset posted speed-limits between 35 and 44 mph.")); + offset4Toggle->setDescription(tr("How much to offset posted speed-limits between 45 and 54 mph.")); + offset5Toggle->setDescription(tr("How much to offset posted speed-limits between 55 and 64 mph.")); + offset6Toggle->setDescription(tr("How much to offset posted speed-limits between 65 and 74 mph.")); + offset7Toggle->setDescription(tr("How much to offset posted speed-limits between 75 and 99 mph.")); increasedStoppedDistanceToggle->updateControl(0, 10, imperialDistanceLabels); @@ -794,22 +819,18 @@ void FrogPilotLongitudinalPanel::updateMetric(bool metric, bool bootRun) { void FrogPilotLongitudinalPanel::updateToggles() { for (auto &[key, toggle] : toggles) { - if (parentKeys.find(key) != parentKeys.end()) { + if (parentKeys.contains(key)) { toggle->setVisible(false); } } for (auto &[key, toggle] : toggles) { - if (parentKeys.find(key) != parentKeys.end()) { + if (parentKeys.contains(key)) { continue; } bool setVisible = tuningLevel >= frogpilotToggleLevels[key].toDouble(); - if (key == "CurveSensitivity" || key == "TurnAggressiveness") { - setVisible &= params.getBool("MapTurnControl") || params.getBool("VisionTurnControl"); - } - if (key == "CustomCruise" || key == "CustomCruiseLong" || key == "SetSpeedLimit" || key == "SetSpeedOffset") { setVisible &= !hasPCMCruise; } @@ -823,10 +844,6 @@ void FrogPilotLongitudinalPanel::updateToggles() { setVisible &= !isTSK; } - else if (key == "MTSCCurvatureCheck") { - setVisible &= params.getBool("MapTurnControl"); - } - else if (key == "ReverseCruise") { setVisible &= isToyota; } @@ -847,37 +864,39 @@ void FrogPilotLongitudinalPanel::updateToggles() { toggle->setVisible(setVisible); if (setVisible) { - if (advancedLongitudinalTuneKeys.find(key) != advancedLongitudinalTuneKeys.end()) { + if (advancedLongitudinalTuneKeys.contains(key)) { toggles["AdvancedLongitudinalTune"]->setVisible(true); - } else if (aggressivePersonalityKeys.find(key) != aggressivePersonalityKeys.end()) { + } else if (aggressivePersonalityKeys.contains(key)) { toggles["AggressivePersonalityProfile"]->setVisible(true); - } else if (conditionalExperimentalKeys.find(key) != conditionalExperimentalKeys.end()) { + } else if (conditionalExperimentalKeys.contains(key)) { toggles["ConditionalExperimental"]->setVisible(true); - } else if (curveSpeedKeys.find(key) != curveSpeedKeys.end()) { - toggles["CurveSpeedControl"]->setVisible(true); - } else if (customDrivingPersonalityKeys.find(key) != customDrivingPersonalityKeys.end()) { + } else if (curveSpeedKeys.contains(key)) { + toggles["CurveSpeedController"]->setVisible(true); + } else if (customDrivingPersonalityKeys.contains(key)) { toggles["CustomPersonalities"]->setVisible(true); - } else if (longitudinalTuneKeys.find(key) != longitudinalTuneKeys.end()) { + } else if (longitudinalTuneKeys.contains(key)) { toggles["LongitudinalTune"]->setVisible(true); - } else if (qolKeys.find(key) != qolKeys.end()) { + } else if (qolKeys.contains(key)) { toggles["QOLLongitudinal"]->setVisible(true); - } else if (relaxedPersonalityKeys.find(key) != relaxedPersonalityKeys.end()) { + } else if (relaxedPersonalityKeys.contains(key)) { toggles["RelaxedPersonalityProfile"]->setVisible(true); - } else if (speedLimitControllerKeys.find(key) != speedLimitControllerKeys.end()) { + } else if (speedLimitControllerKeys.contains(key)) { toggles["SpeedLimitController"]->setVisible(true); - } else if (speedLimitControllerOffsetsKeys.find(key) != speedLimitControllerOffsetsKeys.end()) { + } else if (speedLimitControllerOffsetsKeys.contains(key)) { toggles["SLCOffsets"]->setVisible(true); - } else if (speedLimitControllerQOLKeys.find(key) != speedLimitControllerQOLKeys.end()) { + } else if (speedLimitControllerQOLKeys.contains(key)) { toggles["SLCQOL"]->setVisible(true); - } else if (speedLimitControllerVisualKeys.find(key) != speedLimitControllerVisualKeys.end()) { + } else if (speedLimitControllerVisualKeys.contains(key)) { toggles["SLCVisuals"]->setVisible(true); - } else if (standardPersonalityKeys.find(key) != standardPersonalityKeys.end()) { + } else if (standardPersonalityKeys.contains(key)) { toggles["StandardPersonalityProfile"]->setVisible(true); - } else if (trafficPersonalityKeys.find(key) != trafficPersonalityKeys.end()) { + } else if (trafficPersonalityKeys.contains(key)) { toggles["TrafficPersonalityProfile"]->setVisible(true); } } } + openDescriptions(forceOpenDescriptions, toggles); + update(); } diff --git a/frogpilot/ui/qt/offroad/longitudinal_settings.h b/frogpilot/ui/qt/offroad/longitudinal_settings.h index a4ead358f..48467f0b0 100644 --- a/frogpilot/ui/qt/offroad/longitudinal_settings.h +++ b/frogpilot/ui/qt/offroad/longitudinal_settings.h @@ -1,7 +1,5 @@ #pragma once -#include - #include "frogpilot/ui/qt/offroad/frogpilot_settings.h" class FrogPilotLongitudinalPanel : public FrogPilotListWidget { @@ -22,6 +20,7 @@ private: void updateToggles(); bool customPersonalityOpen; + bool forceOpenDescriptions; bool hasDashSpeedLimits; bool hasPCMCruise; bool isGM; @@ -41,24 +40,22 @@ private: std::map toggles; - std::set advancedLongitudinalTuneKeys = {"LongitudinalActuatorDelay", "StartAccel", "StopAccel", "StoppingDecelRate", "VEgoStarting", "VEgoStopping"}; - std::set aggressivePersonalityKeys = {"AggressiveFollow", "AggressiveJerkAcceleration", "AggressiveJerkDeceleration", "AggressiveJerkDanger", "AggressiveJerkSpeed", "AggressiveJerkSpeedDecrease", "ResetAggressivePersonality"}; - std::set conditionalExperimentalKeys = {"CESpeed", "CESpeedLead", "CECurves", "CELead", "CEModelStopTime", "CENavigation", "CESignalSpeed", "ShowCEMStatus"}; - std::set curveSpeedKeys = {"CurveDetectionMethod", "CurveSensitivity", "MTSCCurvatureCheck", "ShowCSCStatus", "TurnAggressiveness"}; - std::set customDrivingPersonalityKeys = {"AggressivePersonalityProfile", "RelaxedPersonalityProfile", "StandardPersonalityProfile", "TrafficPersonalityProfile"}; - std::set longitudinalTuneKeys = {"AccelerationProfile", "DecelerationProfile", "HumanAcceleration", "HumanFollowing", "LeadDetectionThreshold", "MaxDesiredAcceleration", "TacoTune"}; - std::set qolKeys = {"CustomCruise", "CustomCruiseLong", "ForceStandstill", "ForceStops", "IncreasedStoppedDistance", "MapGears", "ReverseCruise", "SetSpeedOffset"}; - std::set relaxedPersonalityKeys = {"RelaxedFollow", "RelaxedJerkAcceleration", "RelaxedJerkDeceleration", "RelaxedJerkDanger", "RelaxedJerkSpeed", "RelaxedJerkSpeedDecrease", "ResetRelaxedPersonality"}; - std::set speedLimitControllerKeys = {"SLCOffsets", "SLCFallback", "SLCOverride", "SLCPriority", "SLCQOL", "SLCVisuals"}; - std::set speedLimitControllerOffsetsKeys = {"Offset1", "Offset2", "Offset3", "Offset4", "Offset5", "Offset6", "Offset7"}; - std::set speedLimitControllerQOLKeys = {"ForceMPHDashboard", "SetSpeedLimit", "SLCConfirmation", "SLCLookaheadHigher", "SLCLookaheadLower", "SLCMapboxFiller"}; - std::set speedLimitControllerVisualKeys = {"ShowSLCOffset", "SpeedLimitSources"}; - std::set standardPersonalityKeys = {"StandardFollow", "StandardJerkAcceleration", "StandardJerkDeceleration", "StandardJerkDanger", "StandardJerkSpeed", "StandardJerkSpeedDecrease", "ResetStandardPersonality"}; - std::set trafficPersonalityKeys = {"TrafficFollow", "TrafficJerkAcceleration", "TrafficJerkDeceleration", "TrafficJerkDanger", "TrafficJerkSpeed", "TrafficJerkSpeedDecrease", "ResetTrafficPersonality"}; + QSet advancedLongitudinalTuneKeys = {"LongitudinalActuatorDelay", "StartAccel", "StopAccel", "StoppingDecelRate", "VEgoStarting", "VEgoStopping"}; + QSet aggressivePersonalityKeys = {"AggressiveFollow", "AggressiveJerkAcceleration", "AggressiveJerkDeceleration", "AggressiveJerkDanger", "AggressiveJerkSpeed", "AggressiveJerkSpeedDecrease", "ResetAggressivePersonality"}; + QSet conditionalExperimentalKeys = {"CESpeed", "CESpeedLead", "CECurves", "CELead", "CEModelStopTime", "CENavigation", "CESignalSpeed", "ShowCEMStatus"}; + QSet curveSpeedKeys = {"CalibratedLateralAcceleration", "CalibrationProgress", "ResetCurveData", "ShowCSCStatus"}; + QSet customDrivingPersonalityKeys = {"AggressivePersonalityProfile", "RelaxedPersonalityProfile", "StandardPersonalityProfile", "TrafficPersonalityProfile"}; + QSet longitudinalTuneKeys = {"AccelerationProfile", "DecelerationProfile", "HumanAcceleration", "HumanFollowing", "LeadDetectionThreshold", "MaxDesiredAcceleration", "TacoTune"}; + QSet qolKeys = {"CustomCruise", "CustomCruiseLong", "ForceStops", "IncreasedStoppedDistance", "MapGears", "ReverseCruise", "SetSpeedOffset"}; + QSet relaxedPersonalityKeys = {"RelaxedFollow", "RelaxedJerkAcceleration", "RelaxedJerkDeceleration", "RelaxedJerkDanger", "RelaxedJerkSpeed", "RelaxedJerkSpeedDecrease", "ResetRelaxedPersonality"}; + QSet speedLimitControllerKeys = {"SLCOffsets", "SLCFallback", "SLCOverride", "SLCPriority", "SLCQOL", "SLCVisuals"}; + QSet speedLimitControllerOffsetsKeys = {"Offset1", "Offset2", "Offset3", "Offset4", "Offset5", "Offset6", "Offset7"}; + QSet speedLimitControllerQOLKeys = {"ForceMPHDashboard", "SetSpeedLimit", "SLCConfirmation", "SLCLookaheadHigher", "SLCLookaheadLower", "SLCMapboxFiller"}; + QSet speedLimitControllerVisualKeys = {"ShowSLCOffset", "SpeedLimitSources"}; + QSet standardPersonalityKeys = {"StandardFollow", "StandardJerkAcceleration", "StandardJerkDeceleration", "StandardJerkDanger", "StandardJerkSpeed", "StandardJerkSpeedDecrease", "ResetStandardPersonality"}; + QSet trafficPersonalityKeys = {"TrafficFollow", "TrafficJerkAcceleration", "TrafficJerkDeceleration", "TrafficJerkDanger", "TrafficJerkSpeed", "TrafficJerkSpeedDecrease", "ResetTrafficPersonality"}; - std::set parentKeys; - - FrogPilotButtonsControl *curveDetectionToggle; + QSet parentKeys; FrogPilotParamValueControl *longitudinalActuatorDelayToggle; FrogPilotParamValueControl *startAccelToggle; @@ -69,6 +66,9 @@ private: FrogPilotSettingsWindow *parent; + LabelControl *calibratedLateralAccelerationLabel; + LabelControl *calibrationProgressLabel; + QJsonObject frogpilotToggleLevels; Params params; diff --git a/frogpilot/ui/qt/offroad/maps_settings.cc b/frogpilot/ui/qt/offroad/maps_settings.cc index b66897e26..3ec92096c 100644 --- a/frogpilot/ui/qt/offroad/maps_settings.cc +++ b/frogpilot/ui/qt/offroad/maps_settings.cc @@ -5,33 +5,32 @@ #include "frogpilot/ui/qt/offroad/maps_settings.h" FrogPilotMapsPanel::FrogPilotMapsPanel(FrogPilotSettingsWindow *parent) : FrogPilotListWidget(parent), parent(parent) { + QJsonObject shownDescriptions = QJsonDocument::fromJson(QString::fromStdString(params.get("ShownToggleDescriptions")).toUtf8()).object(); + QString className = this->metaObject()->className(); + + if (!shownDescriptions.value(className).toBool(false)) { + forceOpenDescriptions = true; + shownDescriptions.insert(className, true); + params.put("ShownToggleDescriptions", QJsonDocument(shownDescriptions).toJson(QJsonDocument::Compact).toStdString()); + } + QStackedLayout *mapsLayout = new QStackedLayout(); addItem(mapsLayout); FrogPilotListWidget *settingsList = new FrogPilotListWidget(this); std::vector scheduleOptions{tr("Manually"), tr("Weekly"), tr("Monthly")}; - ButtonParamControl *preferredSchedule = new ButtonParamControl("PreferredSchedule", tr("Automatically Update Maps"), - tr("The frequency at which maps sync with the latest OpenStreetMap (OSM) changes. " - "Weekly updates occur every Sunday, and monthly updates occur on the 1st."), + preferredSchedule = new ButtonParamControl("PreferredSchedule", tr("Automatically Update Maps"), + tr("How often maps update from \"OpenStreetMap (OSM)\" with the latest speed limit information. " + "Weekly updates run every Sunday; monthly updates run on the 1st."), "", scheduleOptions); settingsList->addItem(preferredSchedule); - FrogPilotButtonsControl *selectMaps = new FrogPilotButtonsControl(tr("Data Sources"), - tr("Select map data sources to use with \"Curve Speed Control\" and \"Speed Limit Controller\"."), - "", {tr("COUNTRIES"), tr("STATES")}); - QObject::connect(selectMaps, &FrogPilotButtonsControl::buttonClicked, [this, mapsLayout](int id) { - mapsLayout->setCurrentIndex(id + 1); - - openSubPanel(); - }); - settingsList->addItem(selectMaps); - - downloadMapsButton = new ButtonControl(tr("Download Maps"), tr("DOWNLOAD"), tr("Download the selected maps to use with \"Curve Speed Control\" and \"Speed Limit Controller\".")); + downloadMapsButton = new ButtonControl(tr("Download Maps"), tr("DOWNLOAD"), tr("Manually update your selected map sources so \"Speed Limit Controller\" has the latest speed limit information.")); QObject::connect(downloadMapsButton, &ButtonControl::clicked, [this] { if (downloadMapsButton->text() == tr("CANCEL")) { - if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to cancel the download?"), this)) { + if (FrogPilotConfirmationDialog::yesorno(tr("Cancel the download?"), this)) { cancelDownload(); } } else { @@ -40,19 +39,29 @@ FrogPilotMapsPanel::FrogPilotMapsPanel(FrogPilotSettingsWindow *parent) : FrogPi }); settingsList->addItem(downloadMapsButton); - settingsList->addItem(downloadETA = new LabelControl(tr("Download Completion ETA"))); - settingsList->addItem(downloadStatus = new LabelControl(tr("Download Progress"))); - settingsList->addItem(downloadTimeElapsed = new LabelControl(tr("Download Time Elapsed"))); - settingsList->addItem(lastMapsDownload = new LabelControl(tr("Maps Last Updated"), params.get("LastMapsUpdate").empty() ? "Never" : QString::fromStdString(params.get("LastMapsUpdate")))); - settingsList->addItem(mapsSize = new LabelControl(tr("Maps Size"), calculateDirectorySize(mapsFolderPath))); + settingsList->addItem(lastMapsDownload = new LabelControl(tr("Last Updated"), params.get("LastMapsUpdate").empty() ? "Never" : QString::fromStdString(params.get("LastMapsUpdate")))); + + selectMaps = new FrogPilotButtonsControl(tr("Map Sources"), + tr("Select the countries or U.S. states to use with \"Speed Limit Controller\".") , + "", {tr("COUNTRIES"), tr("STATES")}); + QObject::connect(selectMaps, &FrogPilotButtonsControl::buttonClicked, [mapsLayout, this](int id) { + mapsLayout->setCurrentIndex(id + 1); + + openSubPanel(); + }); + settingsList->addItem(selectMaps); + + settingsList->addItem(downloadStatus = new LabelControl(tr("Progress"))); + settingsList->addItem(downloadTimeElapsed = new LabelControl(tr("Time Elapsed"))); + settingsList->addItem(downloadETA = new LabelControl(tr("Time Remaining"))); downloadETA->setVisible(false); downloadStatus->setVisible(false); downloadTimeElapsed->setVisible(false); - removeMapsButton = new ButtonControl(tr("Remove Maps"), tr("REMOVE"), tr("Remove downloaded maps to clear up storage space.")); + removeMapsButton = new ButtonControl(tr("Remove Maps"), tr("REMOVE"), tr("Delete downloaded map data to free up storage space.")); QObject::connect(removeMapsButton, &ButtonControl::clicked, [this] { - if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to delete all of your downloaded maps?"), this)) { + if (FrogPilotConfirmationDialog::yesorno(tr("Delete all downloaded maps?"), this)) { std::thread([this] { mapsSize->setText("0 MB"); @@ -62,25 +71,25 @@ FrogPilotMapsPanel::FrogPilotMapsPanel(FrogPilotSettingsWindow *parent) : FrogPi }); settingsList->addItem(removeMapsButton); - resetMapdBtn = new ButtonControl(tr("Reset Map Downloader"), tr("RESET"), - tr("Reset the map downloader. Use if you're running into issues with downloading maps.")); - QObject::connect(resetMapdBtn, &ButtonControl::clicked, [this, parent]() { - if (ConfirmationDialog::confirm(tr("Are you sure you want to reset the map downloader? This will force a reboot once completed."), tr("Reset"), this)) { - std::thread([this, parent]() { + resetMapdButton = new ButtonControl(tr("Reset Downloader"), tr("RESET"), + tr("Reset the map downloader. Use this if downloads are stuck or failing.")); + QObject::connect(resetMapdButton, &ButtonControl::clicked, [parent, this]() { + if (ConfirmationDialog::confirm(tr("Reset the map downloader? Your device will reboot afterward."), tr("Reset"), this)) { + std::thread([parent, this]() { parent->keepScreenOn = true; - resetMapdBtn->setEnabled(false); - resetMapdBtn->setValue(tr("Resetting...")); + resetMapdButton->setEnabled(false); + resetMapdButton->setValue(tr("Resetting...")); std::system("pkill mapd"); QDir("/data/media/0/osm").removeRecursively(); - resetMapdBtn->setValue(tr("Reset!")); + resetMapdButton->setValue(tr("Reset!")); util::sleep_for(2500); - resetMapdBtn->setValue(tr("Rebooting...")); + resetMapdButton->setValue(tr("Rebooting...")); util::sleep_for(2500); @@ -88,7 +97,9 @@ FrogPilotMapsPanel::FrogPilotMapsPanel(FrogPilotSettingsWindow *parent) : FrogPi }).detach(); } }); - settingsList->addItem(resetMapdBtn); + settingsList->addItem(resetMapdButton); + + settingsList->addItem(mapsSize = new LabelControl(tr("Storage Used"), calculateDirectorySize(mapsFolderPath))); ScrollView *settingsPanel = new ScrollView(settingsList, this); mapsLayout->addWidget(settingsPanel); @@ -129,7 +140,15 @@ FrogPilotMapsPanel::FrogPilotMapsPanel(FrogPilotSettingsWindow *parent) : FrogPi ScrollView *stateMapsPanel = new ScrollView(statesList, this); mapsLayout->addWidget(stateMapsPanel); - QObject::connect(parent, &FrogPilotSettingsWindow::closeSubPanel, [this, mapsLayout, settingsPanel] { + QObject::connect(parent, &FrogPilotSettingsWindow::closeSubPanel, [mapsLayout, settingsPanel, this] { + if (forceOpenDescriptions) { + downloadMapsButton->showDescription(); + preferredSchedule->showDescription(); + removeMapsButton->showDescription(); + resetMapdButton->showDescription(); + selectMaps->showDescription(); + } + std::string mapsSelected = params.get("MapsSelected"); hasMapsSelected = !QJsonDocument::fromJson(QByteArray::fromStdString(mapsSelected)).object().value("nations").toArray().isEmpty(); hasMapsSelected |= !QJsonDocument::fromJson(QByteArray::fromStdString(mapsSelected)).object().value("states").toArray().isEmpty(); @@ -140,6 +159,14 @@ FrogPilotMapsPanel::FrogPilotMapsPanel(FrogPilotSettingsWindow *parent) : FrogPi } void FrogPilotMapsPanel::showEvent(QShowEvent *event) { + if (forceOpenDescriptions) { + downloadMapsButton->showDescription(); + preferredSchedule->showDescription(); + removeMapsButton->showDescription(); + resetMapdButton->showDescription(); + selectMaps->showDescription(); + } + FrogPilotUIState &fs = *frogpilotUIState(); UIState &s = *uiState(); @@ -160,7 +187,7 @@ void FrogPilotMapsPanel::showEvent(QShowEvent *event) { lastMapsDownload->setVisible(false); removeMapsButton->setVisible(false); - resetMapdBtn->setVisible(false); + resetMapdButton->setVisible(false); updateDownloadLabels(osmDownloadProgress); } else { @@ -216,7 +243,7 @@ void FrogPilotMapsPanel::cancelDownload() { lastMapsDownload->setVisible(true); removeMapsButton->setVisible(mapsFolderPath.exists()); - resetMapdBtn->setVisible(true); + resetMapdButton->setVisible(true); update(); }); @@ -234,7 +261,7 @@ void FrogPilotMapsPanel::startDownload() { lastMapsDownload->setVisible(false); removeMapsButton->setVisible(false); - resetMapdBtn->setVisible(false); + resetMapdButton->setVisible(false); elapsedTime.start(); startTime = QDateTime::currentDateTime(); @@ -260,7 +287,7 @@ void FrogPilotMapsPanel::updateDownloadLabels(std::string &osmDownloadProgress) lastMapsDownload->setVisible(true); removeMapsButton->setVisible(true); - resetMapdBtn->setVisible(true); + resetMapdButton->setVisible(true); params.put("LastMapsUpdate", formatCurrentDate().toStdString()); params.remove("OSMDownloadProgress"); diff --git a/frogpilot/ui/qt/offroad/maps_settings.h b/frogpilot/ui/qt/offroad/maps_settings.h index 196c69f98..48741588f 100644 --- a/frogpilot/ui/qt/offroad/maps_settings.h +++ b/frogpilot/ui/qt/offroad/maps_settings.h @@ -22,11 +22,16 @@ private: void updateState(const UIState &s, const FrogPilotUIState &fs); bool cancellingDownload; + bool forceOpenDescriptions; bool hasMapsSelected; ButtonControl *downloadMapsButton; ButtonControl *removeMapsButton; - ButtonControl *resetMapdBtn; + ButtonControl *resetMapdButton; + + ButtonParamControl *preferredSchedule; + + FrogPilotButtonsControl *selectMaps; FrogPilotSettingsWindow *parent; diff --git a/frogpilot/ui/qt/offroad/model_settings.cc b/frogpilot/ui/qt/offroad/model_settings.cc index ad6eb52d7..815a73007 100644 --- a/frogpilot/ui/qt/offroad/model_settings.cc +++ b/frogpilot/ui/qt/offroad/model_settings.cc @@ -16,7 +16,24 @@ bool hasAllTinygradFiles(const QDir &modelDir, const QString &modelKey) { return true; } +QString normalizeModelKey(QString key) { + key = key.toLower(); + if (key.endsWith("_default")) { + key.chop(QString("_default").size()); + } + return key; +} + FrogPilotModelPanel::FrogPilotModelPanel(FrogPilotSettingsWindow *parent) : FrogPilotListWidget(parent), parent(parent) { + QJsonObject shownDescriptions = QJsonDocument::fromJson(QString::fromStdString(params.get("ShownToggleDescriptions")).toUtf8()).object(); + QString className = this->metaObject()->className(); + + if (!shownDescriptions.value(className).toBool(false)) { + forceOpenDescriptions = true; + shownDescriptions.insert(className, true); + params.put("ShownToggleDescriptions", QJsonDocument(shownDescriptions).toJson(QJsonDocument::Compact).toStdString()); + } + QStackedLayout *modelLayout = new QStackedLayout(); addItem(modelLayout); @@ -33,21 +50,22 @@ FrogPilotModelPanel::FrogPilotModelPanel(FrogPilotSettingsWindow *parent) : Frog modelLayout->addWidget(modelLabelsPanel); const std::vector> modelToggles { - {"AutomaticallyDownloadModels", tr("Automatically Download New Models"), tr("Automatically download new driving models as they become available."), ""}, - {"DeleteModel", tr("Delete Driving Models"), tr("Delete driving models from the device."), ""}, - {"DownloadModel", tr("Download Driving Models"), tr("Download driving models to the device."), ""}, - {"ModelRandomizer", tr("Model Randomizer"), tr("Driving models are chosen at random each drive and feedback prompts are used to find the model that best suits your needs."), ""}, - {"ManageBlacklistedModels", tr("Manage Model Blacklist"), tr("Add or remove models from the Model Randomizer's blacklist list."), ""}, - {"ManageScores", tr("Manage Model Ratings"), tr("Reset or view the saved ratings for the driving models."), ""}, - {"SelectModel", tr("Select Driving Model"), tr("Select the active driving model."), ""}, + {"AutomaticallyDownloadModels", tr("Automatically Download New Models"), tr("Automatically download new driving models as they become available."), ""}, + {"DeleteModel", tr("Delete Driving Models"), tr("Delete downloaded driving models to free up storage space."), ""}, + {"DownloadModel", tr("Download Driving Models"), tr("Manually download driving models to the device."), ""}, + {"ModelRandomizer", tr("Model Randomizer"), tr("Select a random driving model each drive and use feedback prompts at the end of the drive to help find the model that best suits you!"), ""}, + {"ManageBlacklistedModels", tr("Manage Model Blacklist"), tr("Add or remove driving models from the \"Model Randomizer\" blacklist."), ""}, + {"ManageScores", tr("Manage Model Ratings"), tr("View or reset saved model ratings used by the \"Model Randomizer\"."), ""}, + {"SelectModel", tr("Select Driving Model"), tr("Choose which driving model openpilot uses."), ""}, + {"UpdateTinygrad", tr("Update Model Manager"), tr("Update the \"Model Manager\" to support the latest models."), ""} }; for (const auto &[param, title, desc, icon] : modelToggles) { AbstractControl *modelToggle; if (param == "DeleteModel") { - deleteModelBtn = new FrogPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DELETE ALL")}); - QObject::connect(deleteModelBtn, &FrogPilotButtonsControl::buttonClicked, [this](int id) { + deleteModelButton = new FrogPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DELETE ALL")}); + QObject::connect(deleteModelButton, &FrogPilotButtonsControl::buttonClicked, [this](int id) { QStringList deletableModels; for (const QString &file : modelDir.entryList(QDir::Files)) { QString base = QFileInfo(file).baseName(); @@ -61,8 +79,7 @@ FrogPilotModelPanel::FrogPilotModelPanel(FrogPilotSettingsWindow *parent) : Frog } } deletableModels.removeAll(processModelName(currentModel)); - deletableModels.removeAll(modelFileToNameMapProcessed.value(QString::fromStdString(params_default.get("Model")))); - deletableModels.removeAll("Space Lab"); + deletableModels.removeAll(modelFileToNameMapProcessed.value(normalizeModelKey(QString::fromStdString(params_default.get("Model"))))); noModelsDownloaded = deletableModels.isEmpty(); if (id == 0) { @@ -96,11 +113,23 @@ FrogPilotModelPanel::FrogPilotModelPanel(FrogPilotSettingsWindow *parent) : Frog } } }); - modelToggle = deleteModelBtn; + modelToggle = deleteModelButton; } else if (param == "DownloadModel") { - downloadModelBtn = new FrogPilotButtonsControl(title, desc, icon, {tr("DOWNLOAD"), tr("DOWNLOAD ALL")}); - QObject::connect(downloadModelBtn, &FrogPilotButtonsControl::buttonClicked, [this](int id) { - if (id == 0) { + downloadModelButton = new FrogPilotButtonsControl(title, desc, icon, {tr("DOWNLOAD"), tr("DOWNLOAD ALL")}); + QObject::connect(downloadModelButton, &FrogPilotButtonsControl::buttonClicked, [this](int id) { + if (tinygradUpdate) { + if (FrogPilotConfirmationDialog::yesorno(tr("Tinygrad is out of date and must be updated before you can download new models. Update now?"), this)) { + if (FrogPilotConfirmationDialog::yesorno(tr("Updating Tinygrad will delete all existing Tinygrad-based models which will need to be re-downloaded. Proceed?"), this)) { + params_memory.putBool("UpdateTinygrad", true); + params_memory.put("ModelDownloadProgress", "Downloading..."); + + updateTinygradButton->setText(0, tr("CANCEL")); + updateTinygradButton->setValue(tr("Updating...")); + + updatingTinygrad = true; + } + } + } else if (id == 0) { if (modelDownloading) { params_memory.putBool("CancelModelDownload", true); @@ -109,11 +138,10 @@ FrogPilotModelPanel::FrogPilotModelPanel(FrogPilotSettingsWindow *parent) : Frog QStringList downloadableModels = availableModelNames; for (const QString &modelKey : modelFileToNameMap.keys()) { QString modelName = modelFileToNameMap.value(modelKey); - if (modelDir.exists(modelKey + ".thneed")) { + if (modelDir.exists(modelKey + ".thneed") || hasAllTinygradFiles(modelDir, modelKey)) { downloadableModels.removeAll(modelName); } } - downloadableModels.removeAll("Space Lab ๐Ÿ‘€๐Ÿ“ก"); allModelsDownloaded = downloadableModels.isEmpty(); QString modelToDownload = MultiOptionDialog::getSelection(tr("Select a driving model to download"), downloadableModels, "", this); @@ -121,11 +149,11 @@ FrogPilotModelPanel::FrogPilotModelPanel(FrogPilotSettingsWindow *parent) : Frog params_memory.put("ModelToDownload", modelFileToNameMap.key(modelToDownload).toStdString()); params_memory.put("ModelDownloadProgress", "Downloading..."); - downloadModelBtn->setText(0, tr("CANCEL")); + downloadModelButton->setText(0, tr("CANCEL")); - downloadModelBtn->setValue("Downloading..."); + downloadModelButton->setValue("Downloading..."); - downloadModelBtn->setVisibleButton(1, false); + downloadModelButton->setVisibleButton(1, false); modelDownloading = true; } @@ -139,20 +167,20 @@ FrogPilotModelPanel::FrogPilotModelPanel(FrogPilotSettingsWindow *parent) : Frog params_memory.putBool("DownloadAllModels", true); params_memory.put("ModelDownloadProgress", "Downloading..."); - downloadModelBtn->setText(1, tr("CANCEL")); + downloadModelButton->setText(1, tr("CANCEL")); - downloadModelBtn->setValue("Downloading..."); + downloadModelButton->setValue("Downloading..."); - downloadModelBtn->setVisibleButton(0, false); + downloadModelButton->setVisibleButton(0, false); allModelsDownloading = true; } } }); - modelToggle = downloadModelBtn; + modelToggle = downloadModelButton; } else if (param == "ManageBlacklistedModels") { - FrogPilotButtonsControl *blacklistBtn = new FrogPilotButtonsControl(title, desc, icon, {tr("ADD"), tr("REMOVE"), tr("REMOVE ALL")}); - QObject::connect(blacklistBtn, &FrogPilotButtonsControl::buttonClicked, [this](int id) { + FrogPilotButtonsControl *blacklistButton = new FrogPilotButtonsControl(title, desc, icon, {tr("ADD"), tr("REMOVE"), tr("REMOVE ALL")}); + QObject::connect(blacklistButton, &FrogPilotButtonsControl::buttonClicked, [this](int id) { QStringList blacklistedModels = QString::fromStdString(params.get("BlacklistedModels")).split(","); blacklistedModels.removeAll(""); @@ -165,9 +193,9 @@ FrogPilotModelPanel::FrogPilotModelPanel(FrogPilotSettingsWindow *parent) : Frog } if (blacklistableModels.size() <= 1) { - ConfirmationDialog::alert(tr("There are no more models to blacklist! The only available model is \"%1\"!").arg(blacklistableModels.first()), this); + ConfirmationDialog::alert(tr("There are no more driving models to blacklist. The only available model is \"%1\"!").arg(blacklistableModels.first()), this); } else { - QString modelToBlacklist = MultiOptionDialog::getSelection(tr("Select a model to add to the blacklist"), blacklistableModels, "", this); + QString modelToBlacklist = MultiOptionDialog::getSelection(tr("Select a driving model to add to the blacklist"), blacklistableModels, "", this); if (!modelToBlacklist.isEmpty()) { if (ConfirmationDialog::confirm(tr("Are you sure you want to add the \"%1\" model to the blacklist?").arg(modelToBlacklist), tr("Add"), this)) { blacklistedModels.append(modelFileToNameMapProcessed.key(modelToBlacklist)); @@ -184,7 +212,7 @@ FrogPilotModelPanel::FrogPilotModelPanel(FrogPilotSettingsWindow *parent) : Frog } whitelistableModels.sort(); - QString modelToWhitelist = MultiOptionDialog::getSelection(tr("Select a model to remove from the blacklist"), whitelistableModels, "", this); + QString modelToWhitelist = MultiOptionDialog::getSelection(tr("Select a driving model to remove from the blacklist"), whitelistableModels, "", this); if (!modelToWhitelist.isEmpty()) { if (ConfirmationDialog::confirm(tr("Are you sure you want to remove the \"%1\" model from the blacklist?").arg(modelToWhitelist), tr("Remove"), this)) { blacklistedModels.removeAll(modelFileToNameMapProcessed.key(modelToWhitelist)); @@ -193,18 +221,18 @@ FrogPilotModelPanel::FrogPilotModelPanel(FrogPilotSettingsWindow *parent) : Frog } } } else if (id == 2) { - if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to remove all of your blacklisted models?"), this)) { + if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to remove all of your blacklisted driving models?"), this)) { params.remove("BlacklistedModels"); params_cache.remove("BlacklistedModels"); } } }); - modelToggle = blacklistBtn; + modelToggle = blacklistButton; } else if (param == "ManageScores") { - FrogPilotButtonsControl *manageScoresBtn = new FrogPilotButtonsControl(title, desc, icon, {tr("RESET"), tr("VIEW")}); - QObject::connect(manageScoresBtn, &FrogPilotButtonsControl::buttonClicked, [this, modelLayout, modelLabelsList, modelLabelsPanel](int id) { + FrogPilotButtonsControl *manageScoresButton = new FrogPilotButtonsControl(title, desc, icon, {tr("RESET"), tr("VIEW")}); + QObject::connect(manageScoresButton, &FrogPilotButtonsControl::buttonClicked, [modelLayout, modelLabelsList, modelLabelsPanel, this](int id) { if (id == 0) { - if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to reset all of your model drives and scores?"), this)) { + if (FrogPilotConfirmationDialog::yesorno(tr("Reset all model drives and ratings? This clears your drive history and collected feedback!"), this)) { params.remove("ModelDrivesAndScores"); params_cache.remove("ModelDrivesAndScores"); } @@ -216,10 +244,10 @@ FrogPilotModelPanel::FrogPilotModelPanel(FrogPilotSettingsWindow *parent) : Frog modelLayout->setCurrentWidget(modelLabelsPanel); } }); - modelToggle = manageScoresBtn; + modelToggle = manageScoresButton; } else if (param == "SelectModel") { - selectModelBtn = new ButtonControl(title, tr("SELECT"), desc); - QObject::connect(selectModelBtn, &ButtonControl::clicked, [this]() { + selectModelButton = new ButtonControl(title, tr("SELECT"), desc); + QObject::connect(selectModelButton, &ButtonControl::clicked, [this]() { QStringList selectableModels; for (const QString &modelKey : modelFileToNameMap.keys()) { QString modelName = modelFileToNameMap.value(modelKey); @@ -227,15 +255,14 @@ FrogPilotModelPanel::FrogPilotModelPanel(FrogPilotSettingsWindow *parent) : Frog continue; } - if (modelDir.exists(modelKey + ".thneed")) { + if (modelDir.exists(modelKey + ".thneed") || hasAllTinygradFiles(modelDir, modelKey)) { selectableModels.append(modelName); } } - selectableModels.append(modelFileToNameMap.value("space-lab")); selectableModels.sort(); - selectableModels.prepend(modelFileToNameMap.value(QString::fromStdString(params_default.get("Model")))); + selectableModels.prepend(modelFileToNameMap.value(normalizeModelKey(QString::fromStdString(params_default.get("Model"))))); - QString modelToSelect = MultiOptionDialog::getSelection(tr("Select a model - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC"), selectableModels, currentModel, this); + QString modelToSelect = MultiOptionDialog::getSelection(tr("Select a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC"), selectableModels, currentModel, this); if (!modelToSelect.isEmpty()) { currentModel = modelToSelect; @@ -248,7 +275,7 @@ FrogPilotModelPanel::FrogPilotModelPanel(FrogPilotSettingsWindow *parent) : Frog Hardware::reboot(); } } - selectModelBtn->setValue(modelToSelect); + selectModelButton->setValue(modelToSelect); QStringList deletableModels; for (const QString &file : modelDir.entryList(QDir::Files)) { @@ -263,11 +290,35 @@ FrogPilotModelPanel::FrogPilotModelPanel(FrogPilotSettingsWindow *parent) : Frog } } deletableModels.removeAll(processModelName(currentModel)); - deletableModels.removeAll(modelFileToNameMapProcessed.value(QString::fromStdString(params_default.get("Model")))); + deletableModels.removeAll(modelFileToNameMapProcessed.value(normalizeModelKey(QString::fromStdString(params_default.get("Model"))))); noModelsDownloaded = deletableModels.isEmpty(); } }); - modelToggle = selectModelBtn; + modelToggle = selectModelButton; + + } else if (param == "UpdateTinygrad") { + updateTinygradButton = new FrogPilotButtonsControl(title, desc, icon, {tr("UPDATE")}); + QObject::connect(updateTinygradButton, &FrogPilotButtonsControl::buttonClicked, [this]() { + if (updatingTinygrad) { + params_memory.putBool("CancelModelDownload", true); + + updateTinygradButton->setEnabled(false); + updateTinygradButton->setValue(tr("Cancelling...")); + + cancellingDownload = true; + } else { + if (FrogPilotConfirmationDialog::yesorno(tr("Updating Tinygrad will delete existing Tinygrad-based driving models and need to be re-downloaded. Proceed?"), this)) { + params_memory.putBool("UpdateTinygrad", true); + params_memory.put("ModelDownloadProgress", "Downloading..."); + + updateTinygradButton->setText(0, tr("CANCEL")); + updateTinygradButton->setValue(tr("Updating...")); + + updatingTinygrad = true; + } + } + }); + modelToggle = updateTinygradButton; } else { modelToggle = new ParamControl(param, title, desc, icon); @@ -277,27 +328,35 @@ FrogPilotModelPanel::FrogPilotModelPanel(FrogPilotSettingsWindow *parent) : Frog modelList->addItem(modelToggle); + QObject::connect(modelToggle, &AbstractControl::hideDescriptionEvent, [this]() { + update(); + }); QObject::connect(modelToggle, &AbstractControl::showDescriptionEvent, [this]() { update(); }); } + openDescriptions(forceOpenDescriptions, toggles); + QObject::connect(static_cast(toggles["ModelRandomizer"]), &ToggleControl::toggleFlipped, [this](bool state) { updateToggles(); if (state && !allModelsDownloaded) { - if (FrogPilotConfirmationDialog::yesorno(tr("The \"Model Randomizer\" only works with downloaded models. Do you want to download all the driving models?"), this)) { + if (FrogPilotConfirmationDialog::yesorno(tr("The \"Model Randomizer\" works only with downloaded models. Download all models now?"), this)) { params_memory.putBool("DownloadAllModels", true); params_memory.put("ModelDownloadProgress", "Downloading..."); - downloadModelBtn->setValue("Downloading..."); + downloadModelButton->setValue("Downloading..."); allModelsDownloading = true; } } }); - QObject::connect(parent, &FrogPilotSettingsWindow::closeSubPanel, [modelLayout, modelPanel] {modelLayout->setCurrentWidget(modelPanel);}); + QObject::connect(parent, &FrogPilotSettingsWindow::closeSubPanel, [modelLayout, modelPanel, this] { + openDescriptions(forceOpenDescriptions, toggles); + modelLayout->setCurrentWidget(modelPanel); + }); QObject::connect(uiState(), &UIState::uiUpdate, this, &FrogPilotModelPanel::updateState); } @@ -309,7 +368,11 @@ void FrogPilotModelPanel::showEvent(QShowEvent *event) { tuningLevel = parent->tuningLevel; allModelsDownloading = params_memory.getBool("DownloadAllModels"); - modelDownloading = !params_memory.get("ModelToDownload").empty(); + modelDownloading = !params_memory.get("ModelDownloadProgress").empty(); + tinygradUpdate = params.getBool("TinygradUpdateAvailable"); + updatingTinygrad = params_memory.getBool("UpdateTinygrad"); + + modelDownloading &= !updatingTinygrad; QStringList availableModels = QString::fromStdString(params.get("AvailableModels")).split(","); availableModels.sort(); @@ -318,18 +381,15 @@ void FrogPilotModelPanel::showEvent(QShowEvent *event) { modelFileToNameMap.clear(); modelFileToNameMapProcessed.clear(); - int size = qMin(availableModels.size(), availableModelNames.size()); - for (int i = 0; i < size; ++i) { + for (int i = 0; i < qMin(availableModels.size(), availableModelNames.size()); ++i) { modelFileToNameMap.insert(availableModels[i], availableModelNames[i]); modelFileToNameMapProcessed.insert(availableModels[i], processModelName(availableModelNames[i])); } - modelFileToNameMap.insert("space-lab", "Space Lab ๐Ÿ‘€๐Ÿ“ก"); - modelFileToNameMapProcessed.insert("space-lab", "Space Lab"); QStringList downloadableModels = availableModelNames; for (const QString &modelKey : modelFileToNameMap.keys()) { QString modelName = modelFileToNameMap.value(modelKey); - if (modelDir.exists(modelKey + ".thneed")) { + if (modelDir.exists(modelKey + ".thneed") || hasAllTinygradFiles(modelDir, modelKey)) { downloadableModels.removeAll(modelName); } } @@ -348,24 +408,27 @@ void FrogPilotModelPanel::showEvent(QShowEvent *event) { } } deletableModels.removeAll(processModelName(currentModel)); - deletableModels.removeAll(modelFileToNameMapProcessed.value(QString::fromStdString(params_default.get("Model")))); + deletableModels.removeAll(modelFileToNameMapProcessed.value(normalizeModelKey(QString::fromStdString(params_default.get("Model"))))); noModelsDownloaded = deletableModels.isEmpty(); - QString modelKey = QString::fromStdString(params.get("Model")); + QString modelKey = normalizeModelKey(QString::fromStdString(params.get("Model"))); if (!modelDir.exists(modelKey + ".thneed") && !hasAllTinygradFiles(modelDir, modelKey)) { - modelKey = QString::fromStdString(params_default.get("Model")); + modelKey = normalizeModelKey(QString::fromStdString(params_default.get("Model"))); } currentModel = modelFileToNameMap.value(modelKey); - selectModelBtn->setValue(currentModel); + selectModelButton->setValue(currentModel); bool parked = !s.scene.started || fs.frogpilot_scene.parked || fs.frogpilot_toggles.value("frogs_go_moo").toBool(); - deleteModelBtn->setEnabled(!(allModelsDownloading || modelDownloading || noModelsDownloaded)); + deleteModelButton->setEnabled(!(allModelsDownloading || modelDownloading || noModelsDownloaded)); - downloadModelBtn->setEnabledButtons(0, !allModelsDownloaded && !allModelsDownloading && !cancellingDownload && fs.frogpilot_scene.online && parked); - downloadModelBtn->setEnabledButtons(1, !allModelsDownloaded && !modelDownloading && !cancellingDownload && fs.frogpilot_scene.online && parked); + downloadModelButton->setEnabledButtons(0, !allModelsDownloaded && !allModelsDownloading && !cancellingDownload && !updatingTinygrad && fs.frogpilot_scene.online && parked); + downloadModelButton->setEnabledButtons(1, !allModelsDownloaded && !modelDownloading && !cancellingDownload && !updatingTinygrad && fs.frogpilot_scene.online && parked); - downloadModelBtn->setValue(fs.frogpilot_scene.online ? (parked ? "" : "Not parked") : tr("Offline...")); + downloadModelButton->setValue(fs.frogpilot_scene.online ? (parked ? "" : "Not parked") : tr("Offline...")); + + updateTinygradButton->setEnabled(!modelDownloading && !cancellingDownload && fs.frogpilot_scene.online && parked && tinygradUpdate); + updateTinygradButton->setValue(tinygradUpdate ? tr("Update available!") : tr("Up to date!")); started = s.scene.started; @@ -384,47 +447,90 @@ void FrogPilotModelPanel::updateState(const UIState &s, const FrogPilotUIState & bool downloadFailed = progress.contains(QRegularExpression("cancelled|exists|failed|missing|offline", QRegularExpression::CaseInsensitiveOption)); if (progress != "Downloading...") { - downloadModelBtn->setValue(progress); + downloadModelButton->setValue(progress); } - if (progress == "All models downloaded!" && allModelsDownloading || progress == "Downloaded!" && modelDownloading || downloadFailed) { + if (progress == "All models downloaded!" || progress == "Downloaded!" && !allModelsDownloading || downloadFailed) { finalizingDownload = true; - QTimer::singleShot(2500, [this, progress]() { - allModelsDownloaded = progress == "All models downloaded!"; + QTimer::singleShot(2500, [progress, this]() { allModelsDownloading = false; cancellingDownload = false; finalizingDownload = false; modelDownloading = false; noModelsDownloaded = false; - params_memory.remove("CancelModelDownload"); - params_memory.remove("DownloadAllModels"); - params_memory.remove("ModelDownloadProgress"); - params_memory.remove("ModelToDownload"); + QStringList downloadableModels = availableModelNames; + for (const QString &modelKey : modelFileToNameMap.keys()) { + QString modelName = modelFileToNameMap.value(modelKey); + if (modelDir.exists(modelKey + ".thneed") || hasAllTinygradFiles(modelDir, modelKey)) { + downloadableModels.removeAll(modelName); + } + } + allModelsDownloaded = downloadableModels.isEmpty(); - downloadModelBtn->setEnabled(true); - downloadModelBtn->setValue(""); + params_memory.remove("ModelDownloadProgress"); + + downloadModelButton->setEnabled(true); + downloadModelButton->setValue(""); }); } } else { - downloadModelBtn->setValue(fs.frogpilot_scene.online ? (parked ? "" : "Not parked") : tr("Offline...")); + downloadModelButton->setValue(fs.frogpilot_scene.online ? (parked ? "" : "Not parked") : tr("Offline...")); } - deleteModelBtn->setEnabled(!(allModelsDownloading || modelDownloading || noModelsDownloaded)); + if (updatingTinygrad) { + QString progress = QString::fromStdString(params_memory.get("ModelDownloadProgress")); + bool downloadFailed = progress.contains(QRegularExpression("cancelled|exists|failed|missing|offline", QRegularExpression::CaseInsensitiveOption)); - downloadModelBtn->setText(0, modelDownloading ? tr("CANCEL") : tr("DOWNLOAD")); - downloadModelBtn->setText(1, allModelsDownloading ? tr("CANCEL") : tr("DOWNLOAD ALL")); + if (progress != "Downloading...") { + updateTinygradButton->setValue(progress); + } - downloadModelBtn->setEnabledButtons(0, !allModelsDownloaded && !allModelsDownloading && !cancellingDownload && !finalizingDownload && fs.frogpilot_scene.online && parked); - downloadModelBtn->setEnabledButtons(1, !allModelsDownloaded && !modelDownloading && !cancellingDownload && !finalizingDownload && fs.frogpilot_scene.online && parked); + if (progress == "Updated!" && updatingTinygrad || downloadFailed) { + finalizingDownload = true; - downloadModelBtn->setVisibleButton(0, !allModelsDownloading); - downloadModelBtn->setVisibleButton(1, !modelDownloading); + QTimer::singleShot(2500, [progress, this]() { + modelDownloading = !params_memory.get("ModelDownloadProgress").empty(); + + if (modelDownloading) { + downloadModelButton->setText(1, tr("CANCEL")); + + downloadModelButton->setValue("Downloading..."); + + downloadModelButton->setVisibleButton(0, false); + } else { + cancellingDownload = false; + } + + tinygradUpdate = params.getBool("TinygradUpdateAvailable"); + + finalizingDownload = false; + updatingTinygrad = false; + + updateTinygradButton->setEnabled(tinygradUpdate); + updateTinygradButton->setText(0, tr("UPDATE")); + updateTinygradButton->setValue(tinygradUpdate ? tr("Update available!") : tr("Up to date!")); + }); + } + } + + deleteModelButton->setEnabled(!(allModelsDownloading || modelDownloading || noModelsDownloaded)); + + downloadModelButton->setText(0, modelDownloading ? tr("CANCEL") : tr("DOWNLOAD")); + downloadModelButton->setText(1, allModelsDownloading ? tr("CANCEL") : tr("DOWNLOAD ALL")); + + downloadModelButton->setEnabledButtons(0, !allModelsDownloaded && !allModelsDownloading && !cancellingDownload && !finalizingDownload && !updatingTinygrad && fs.frogpilot_scene.online && parked); + downloadModelButton->setEnabledButtons(1, !allModelsDownloaded && !modelDownloading && !cancellingDownload && !finalizingDownload && !updatingTinygrad && fs.frogpilot_scene.online && parked); + + downloadModelButton->setVisibleButton(0, !allModelsDownloading); + downloadModelButton->setVisibleButton(1, !modelDownloading); + + updateTinygradButton->setEnabled(!modelDownloading && !cancellingDownload && !cancellingDownload && !finalizingDownload && fs.frogpilot_scene.online && parked && tinygradUpdate); started = s.scene.started; - parent->keepScreenOn = allModelsDownloading || modelDownloading; + parent->keepScreenOn = allModelsDownloading || modelDownloading || updatingTinygrad; } void FrogPilotModelPanel::updateModelLabels(FrogPilotListWidget *labelsList) { @@ -464,5 +570,7 @@ void FrogPilotModelPanel::updateToggles() { toggle->setVisible(setVisible); } + openDescriptions(forceOpenDescriptions, toggles); + update(); } diff --git a/frogpilot/ui/qt/offroad/model_settings.h b/frogpilot/ui/qt/offroad/model_settings.h index e61f25491..80b2c639c 100644 --- a/frogpilot/ui/qt/offroad/model_settings.h +++ b/frogpilot/ui/qt/offroad/model_settings.h @@ -25,18 +25,22 @@ private: bool allModelsDownloading; bool cancellingDownload; bool finalizingDownload; + bool forceOpenDescriptions; bool modelDownloading; bool noModelsDownloaded; bool started; + bool tinygradUpdate; + bool updatingTinygrad; int tuningLevel; std::map toggles; - ButtonControl *selectModelBtn; + ButtonControl *selectModelButton; - FrogPilotButtonsControl *deleteModelBtn; - FrogPilotButtonsControl *downloadModelBtn; + FrogPilotButtonsControl *deleteModelButton; + FrogPilotButtonsControl *downloadModelButton; + FrogPilotButtonsControl *updateTinygradButton; FrogPilotSettingsWindow *parent; diff --git a/frogpilot/ui/qt/offroad/navigation_settings.cc b/frogpilot/ui/qt/offroad/navigation_settings.cc index 5d49271a4..96695532f 100644 --- a/frogpilot/ui/qt/offroad/navigation_settings.cc +++ b/frogpilot/ui/qt/offroad/navigation_settings.cc @@ -1,35 +1,15 @@ #include "frogpilot/ui/qt/offroad/navigation_settings.h" -void FrogPilotNavigationPanel::createMapboxKeyControl(ButtonControl *&control, const QString &label, const std::string ¶mKey, const QString &prefix, FrogPilotListWidget *list) { - control = new ButtonControl(label, "", tr("Manage your %1.").arg(label)); - QObject::connect(control, &ButtonControl::clicked, [=] { - if (control->text() == tr("ADD")) { - QString key = InputDialog::getText(tr("Enter your %1").arg(label), this).trimmed(); - - if (!key.startsWith(prefix)) { - key = prefix + key; - } - if (key.length() >= 80) { - params.put(paramKey, key.toStdString()); - } else { - ConfirmationDialog::alert(tr("Inputted key is invalid or too short!"), this); - } - } else { - if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to remove your %1?").arg(label), this)) { - control->setText(tr("ADD")); - - params.put(paramKey, "0"); - params.put(paramKey, "0"); - - setupCompleted = false; - } - } - }); - control->setText(QString::fromStdString(params.get(paramKey)).startsWith(prefix) ? tr("REMOVE") : tr("ADD")); - list->addItem(control); -} - FrogPilotNavigationPanel::FrogPilotNavigationPanel(FrogPilotSettingsWindow *parent) : FrogPilotListWidget(parent), parent(parent) { + QJsonObject shownDescriptions = QJsonDocument::fromJson(QString::fromStdString(params.get("ShownToggleDescriptions")).toUtf8()).object(); + QString className = this->metaObject()->className(); + + if (!shownDescriptions.value(className).toBool(false)) { + forceOpenDescriptions = true; + shownDescriptions.insert(className, true); + params.put("ShownToggleDescriptions", QJsonDocument(shownDescriptions).toJson(QJsonDocument::Compact).toStdString()); + } + primelessLayout = new QStackedLayout(); addItem(primelessLayout); @@ -37,18 +17,15 @@ FrogPilotNavigationPanel::FrogPilotNavigationPanel(FrogPilotSettingsWindow *pare ipLabel = new LabelControl(tr("Manage Your Settings At"), tr("Offline...")); settingsList->addItem(ipLabel); - std::vector searchOptions{tr("MapBox"), tr("Amap"), tr("Google")}; - FrogPilotButtonsControl *searchInput = new FrogPilotButtonsControl(tr("Destination Search Provider"), - tr("The search provider used for destination queries in \"Navigate on Openpilot\". " - "Options include \"MapBox\" (recommended), \"Amap\", and \"Google Maps\"."), - "", searchOptions, true); - + std::vector searchOptions{tr("Mapbox"), tr("Amap")}; + searchInput = new FrogPilotButtonsControl(tr("Destination Search Provider"), + tr("The search provider used for destination queries in \"Navigate on Openpilot\". " + "Options include Mapbox (recommended) and Amap."), + "", searchOptions, true); QObject::connect(searchInput, &FrogPilotButtonsControl::buttonClicked, [this](int id) { amapKeyControl1->setVisible(id == 1); amapKeyControl2->setVisible(id == 1); - googleKeyControl->setVisible(id == 2); - params.putInt("SearchInput", id); update(); @@ -56,78 +33,15 @@ FrogPilotNavigationPanel::FrogPilotNavigationPanel(FrogPilotSettingsWindow *pare searchInput->setCheckedButton(params.getInt("SearchInput")); settingsList->addItem(searchInput); - amapKeyControl1 = new ButtonControl(tr("Amap Key #1"), "", tr("Manage your Amap key.")); - QObject::connect(amapKeyControl1, &ButtonControl::clicked, [=] { - if (amapKeyControl1->text() == tr("ADD")) { - QString key = InputDialog::getText(tr("Enter your Amap key"), this).trimmed(); + createKeyControl(amapKeyControl1, tr("Amap Key #1"), "AMapKey1", "", 39, settingsList); + createKeyControl(amapKeyControl2, tr("Amap Key #2"), "AMapKey2", "", 39, settingsList); - if (key.length() >= 39) { - params.put("AMapKey1", key.toStdString()); - } else { - ConfirmationDialog::alert(tr("Inputted key is invalid or too short!"), this); - } - } else { - if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to remove your Amap key?"), this)) { - amapKeyControl1->setText(tr("ADD")); + createKeyControl(publicMapboxKeyControl, tr("Public Mapbox Key"), "MapboxPublicKey", "pk.", 80, settingsList); + createKeyControl(secretMapboxKeyControl, tr("Secret Mapbox Key"), "MapboxSecretKey", "sk.", 80, settingsList); - params.put("AMapKey1", "0"); - params.put("AMapKey1", "0"); - } - } - }); - amapKeyControl1->setText(params.get("AMapKey1").empty() ? tr("ADD") : tr("REMOVE")); - settingsList->addItem(amapKeyControl1); - - amapKeyControl2 = new ButtonControl(tr("Amap Key #2"), "", tr("Manage your Amap key.")); - QObject::connect(amapKeyControl2, &ButtonControl::clicked, [=] { - if (amapKeyControl2->text() == tr("ADD")) { - QString key = InputDialog::getText(tr("Enter your Amap key"), this).trimmed(); - - if (key.length() >= 39) { - params.put("AMapKey2", key.toStdString()); - } else { - ConfirmationDialog::alert(tr("Inputted key is invalid or too short!"), this); - } - } else { - if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to remove your Amap key?"), this)) { - amapKeyControl2->setText(tr("ADD")); - - params.put("AMapKey2", "0"); - params.put("AMapKey2", "0"); - } - } - }); - amapKeyControl2->setText(params.get("AMapKey2").empty() ? tr("ADD") : tr("REMOVE")); - settingsList->addItem(amapKeyControl2); - - googleKeyControl = new ButtonControl(tr("Google Maps Key"), "", tr("Manage your Google Maps key.")); - QObject::connect(googleKeyControl, &ButtonControl::clicked, [=] { - if (googleKeyControl->text() == tr("ADD")) { - QString key = InputDialog::getText(tr("Enter your Google Maps key"), this).trimmed(); - - if (key.length() >= 25) { - params.put("GMapKey", key.toStdString()); - } else { - ConfirmationDialog::alert(tr("Inputted key is invalid or too short!"), this); - } - } else { - if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to remove your Google Maps key?"), this)) { - googleKeyControl->setText(tr("ADD")); - - params.put("GMapKey", "0"); - params.put("GMapKey", "0"); - } - } - }); - googleKeyControl->setText(params.get("GMapKey").empty() ? tr("ADD") : tr("REMOVE")); - settingsList->addItem(googleKeyControl); - - createMapboxKeyControl(publicMapboxKeyControl, tr("Public Mapbox Key"), "MapboxPublicKey", "pk.", settingsList); - createMapboxKeyControl(secretMapboxKeyControl, tr("Secret Mapbox Key"), "MapboxSecretKey", "sk.", settingsList); - - ButtonControl *setupButton = new ButtonControl(tr("MapBox Setup Instructions"), tr("VIEW"), tr("View the instructions to set up \"MapBox\" for \"Primeless Navigation\"."), this); + setupButton = new ButtonControl(tr("Mapbox Setup Instructions"), tr("VIEW"), tr("Instructions on how to set up Mapbox for \"Primeless Navigation\"."), this); QObject::connect(setupButton, &ButtonControl::clicked, [this]() { - openSubSubPanel(); + openSubPanel(); updateStep(); @@ -137,16 +51,16 @@ FrogPilotNavigationPanel::FrogPilotNavigationPanel(FrogPilotSettingsWindow *pare std::vector filterButtonNames{tr("CANCEL"), tr("Manually Update Speed Limits")}; updateSpeedLimitsToggle = new FrogPilotButtonControl("SpeedLimitFiller", tr("Speed Limit Filler"), - tr("Automatically collect missing or incorrect speed limits from your dashboard (if supported), " - "Mapbox, and Navigate-on-openpilot while driving.

" - "When the car is turned off and connected to Wi-Fi, your speed limit data is automatically processed " - "into a compiled file formatted for the tool located at SpeedLimitFiller.frogpilot.download.

" - "You can grab the processed file from The Pond via the Download Speed Limits menu.

" - "Want a more thorough walkthrough? Check out the #speed-limit-filler channel in the FrogPilot Discord!"), + tr("Automatically collect missing or incorrect speed limits while you drive using speeds limits sourced from your dashboard (if supported), " + "Mapbox, and \"Navigate on openpilot\".

" + "When you're parked and connected to Wi-Fi, FrogPilot will automatically processes this data into a file " + "to be used with the tool located at \"SpeedLimitFiller.frogpilot.download\".

" + "You can download this file from \"The Pond\" in the \"Download Speed Limits\" menu.

" + "Need a step-by-step guide? Visit #speed-limit-filler in the FrogPilot Discord!"), "", filterButtonNames); QObject::connect(updateSpeedLimitsToggle, &FrogPilotButtonControl::buttonClicked, [this](int id) { if (id == 0) { - if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to cancel the speed limit update process?"), this)) { + if (FrogPilotConfirmationDialog::yesorno(tr("Cancel the speed-limit update?"), this)) { updatingLimits = false; updateSpeedLimitsToggle->setEnabledButton(0, false); @@ -184,7 +98,7 @@ FrogPilotNavigationPanel::FrogPilotNavigationPanel(FrogPilotSettingsWindow *pare int hours = secondsUntilMidnight / 3600; int minutes = (secondsUntilMidnight % 3600) / 60; - ConfirmationDialog::alert(QString(tr("You have reached the request limit.\n\nIt will reset in %1 hours and %2 minutes.")).arg(hours).arg(minutes), this); + ConfirmationDialog::alert(QString(tr("You've hit today's request limit.\n\nIt will reset in %1 hours and %2 minutes.")).arg(hours).arg(minutes), this); updateSpeedLimitsToggle->clearCheckedButtons(true); return; @@ -193,7 +107,7 @@ FrogPilotNavigationPanel::FrogPilotNavigationPanel(FrogPilotSettingsWindow *pare updateSpeedLimitsToggle->setVisibleButton(0, true); updateSpeedLimitsToggle->setVisibleButton(1, false); - if (FrogPilotConfirmationDialog::yesorno(tr("This process will take awhile, so it's advised to start when you're done driving with a stable Wi-Fi connection. Do you wish to proceed?"), this)) { + if (FrogPilotConfirmationDialog::yesorno(tr("This process takes a while. It's recommended to start when you're done driving and connected to stable Wi-Fi. Continue?"), this)) { updatingLimits = true; updateSpeedLimitsToggle->setValue("Calculating..."); @@ -219,11 +133,33 @@ FrogPilotNavigationPanel::FrogPilotNavigationPanel(FrogPilotSettingsWindow *pare ScrollView *instructionsPanel = new ScrollView(imageLabel, this); primelessLayout->addWidget(instructionsPanel); - QObject::connect(parent, &FrogPilotSettingsWindow::closeSubSubPanel, [this] {primelessLayout->setCurrentIndex(0);}); + QObject::connect(parent, &FrogPilotSettingsWindow::closeSubPanel, [this]() { + primelessLayout->setCurrentIndex(0); + + if (forceOpenDescriptions) { + amapKeyControl1->showDescription(); + amapKeyControl2->showDescription(); + publicMapboxKeyControl->showDescription(); + searchInput->showDescription(); + secretMapboxKeyControl->showDescription(); + setupButton->showDescription(); + updateSpeedLimitsToggle->showDescription(); + } + }); QObject::connect(uiState(), &UIState::uiUpdate, this, &FrogPilotNavigationPanel::updateState); } void FrogPilotNavigationPanel::showEvent(QShowEvent *event) { + if (forceOpenDescriptions) { + amapKeyControl1->showDescription(); + amapKeyControl2->showDescription(); + publicMapboxKeyControl->showDescription(); + searchInput->showDescription(); + secretMapboxKeyControl->showDescription(); + setupButton->showDescription(); + updateSpeedLimitsToggle->showDescription(); + } + FrogPilotUIState &fs = *frogpilotUIState(); UIState &s = *uiState(); @@ -239,12 +175,10 @@ void FrogPilotNavigationPanel::showEvent(QShowEvent *event) { bool parked = !s.scene.started || fs.frogpilot_scene.parked || fs.frogpilot_toggles.value("frogs_go_moo").toBool(); - int searchInput = params.getInt("SearchInput"); + int selectedSearchInput = params.getInt("SearchInput"); - amapKeyControl1->setVisible(searchInput == 1); - amapKeyControl2->setVisible(searchInput == 1); - - googleKeyControl->setVisible(searchInput == 2); + amapKeyControl1->setVisible(selectedSearchInput == 1); + amapKeyControl2->setVisible(selectedSearchInput == 1); updateSpeedLimitsToggle->setVisibleButton(0, updatingLimits); updateSpeedLimitsToggle->setVisibleButton(1, !updatingLimits); @@ -264,18 +198,56 @@ void FrogPilotNavigationPanel::hideEvent(QHideEvent *event) { void FrogPilotNavigationPanel::mousePressEvent(QMouseEvent *event) { if (primelessLayout->currentIndex() == 1) { - closeSubSubPanel(); + closeSubPanel(); primelessLayout->setCurrentIndex(0); + + if (forceOpenDescriptions) { + amapKeyControl1->showDescription(); + amapKeyControl2->showDescription(); + publicMapboxKeyControl->showDescription(); + searchInput->showDescription(); + secretMapboxKeyControl->showDescription(); + setupButton->showDescription(); + updateSpeedLimitsToggle->showDescription(); + } } } +void FrogPilotNavigationPanel::createKeyControl(ButtonControl *&control, const QString &label, const std::string ¶mKey, const QString &prefix, const int &minLength, FrogPilotListWidget *list) { + control = new ButtonControl(label, "", tr("Manage your \"%1\".").arg(label)); + QObject::connect(control, &ButtonControl::clicked, [=] { + if (control->text() == tr("ADD")) { + QString key = InputDialog::getText(tr("Enter your %1").arg(label), this).trimmed(); + + if (!key.startsWith(prefix)) { + key = prefix + key; + } + + if (key.length() >= minLength) { + params.put(paramKey, key.toStdString()); + } else { + ConfirmationDialog::alert(tr("Inputted key is invalid or too short!"), this); + } + } else { + if (FrogPilotConfirmationDialog::yesorno(tr("Remove your %1?").arg(label), this)) { + control->setText(tr("ADD")); + + params.remove(paramKey); + params_cache.remove(paramKey); + + setupCompleted = false; + } + } + }); + control->setText(QString::fromStdString(params.get(paramKey)).startsWith(prefix) ? tr("REMOVE") : tr("ADD")); + list->addItem(control); +} + void FrogPilotNavigationPanel::updateButtons() { amapKeyControl1->setText(params.get("AMapKey1").empty() ? tr("ADD") : tr("REMOVE")); amapKeyControl2->setText(params.get("AMapKey2").empty() ? tr("ADD") : tr("REMOVE")); - googleKeyControl->setText(params.get("GMapKey").empty() ? tr("ADD") : tr("REMOVE")); - mapboxPublicKeySet = QString::fromStdString(params.get("MapboxPublicKey")).startsWith("pk"); mapboxSecretKeySet = QString::fromStdString(params.get("MapboxSecretKey")).startsWith("sk"); diff --git a/frogpilot/ui/qt/offroad/navigation_settings.h b/frogpilot/ui/qt/offroad/navigation_settings.h index ada4355d5..6d6f7bf70 100644 --- a/frogpilot/ui/qt/offroad/navigation_settings.h +++ b/frogpilot/ui/qt/offroad/navigation_settings.h @@ -9,20 +9,21 @@ public: explicit FrogPilotNavigationPanel(FrogPilotSettingsWindow *parent); signals: - void closeSubSubPanel(); - void openSubSubPanel(); + void closeSubPanel(); + void openSubPanel(); protected: void hideEvent(QHideEvent *event); void showEvent(QShowEvent *event) override; private: - void createMapboxKeyControl(ButtonControl *&control, const QString &label, const std::string ¶mKey, const QString &prefix, FrogPilotListWidget *list); + void createKeyControl(ButtonControl *&control, const QString &label, const std::string ¶mKey, const QString &prefix, const int &minLength, FrogPilotListWidget *list); void mousePressEvent(QMouseEvent *event); void updateButtons(); void updateState(const UIState &s, const FrogPilotUIState &fs); void updateStep(); + bool forceOpenDescriptions; bool mapboxPublicKeySet; bool mapboxSecretKeySet; bool setupCompleted; @@ -30,17 +31,20 @@ private: ButtonControl *amapKeyControl1; ButtonControl *amapKeyControl2; - ButtonControl *googleKeyControl; ButtonControl *publicMapboxKeyControl; ButtonControl *secretMapboxKeyControl; + ButtonControl *setupButton; FrogPilotButtonControl *updateSpeedLimitsToggle; + FrogPilotButtonsControl *searchInput; + FrogPilotSettingsWindow *parent; LabelControl *ipLabel; Params params; + Params params_cache{"/cache/params"}; Params params_memory{"/dev/shm/params"}; QLabel *imageLabel; diff --git a/frogpilot/ui/qt/offroad/sounds_settings.cc b/frogpilot/ui/qt/offroad/sounds_settings.cc index ece90c970..dc36519bd 100644 --- a/frogpilot/ui/qt/offroad/sounds_settings.cc +++ b/frogpilot/ui/qt/offroad/sounds_settings.cc @@ -1,8 +1,8 @@ #include "frogpilot/ui/qt/offroad/sounds_settings.h" void playSound(const QString &alert, int volume) { - QString stockPath = "/data/openpilot/selfdrive/assets/sounds/" + alert + ".wav"; - QString themePath = "/data/openpilot/frogpilot/assets/active_theme/sounds/" + alert + ".wav"; + QString stockPath = "../../selfdrive/assets/sounds/" + alert + ".wav"; + QString themePath = "../../frogpilot/assets/active_theme/sounds/" + alert + ".wav"; QString filePath = QFile::exists(themePath) ? themePath : stockPath; @@ -14,6 +14,15 @@ void playSound(const QString &alert, int volume) { } FrogPilotSoundsPanel::FrogPilotSoundsPanel(FrogPilotSettingsWindow *parent) : FrogPilotListWidget(parent), parent(parent) { + QJsonObject shownDescriptions = QJsonDocument::fromJson(QString::fromStdString(params.get("ShownToggleDescriptions")).toUtf8()).object(); + QString className = this->metaObject()->className(); + + if (!shownDescriptions.value(className).toBool(false)) { + forceOpenDescriptions = true; + shownDescriptions.insert(className, true); + params.put("ShownToggleDescriptions", QJsonDocument(shownDescriptions).toJson(QJsonDocument::Compact).toStdString()); + } + QStackedLayout *soundsLayout = new QStackedLayout(); addItem(soundsLayout); @@ -33,21 +42,21 @@ FrogPilotSoundsPanel::FrogPilotSoundsPanel(FrogPilotSettingsWindow *parent) : Fr soundsLayout->addWidget(customAlertsPanel); const std::vector> soundsToggles { - {"AlertVolumeControl", tr("Alert Volume Control"), tr("Adjust the volume for each alert in openpilot."), "../../frogpilot/assets/toggle_icons/icon_mute.png"}, - {"DisengageVolume", tr("Disengage Volume"), tr("Adjust the volume for alerts like:

Adaptive Cruise Disabled
Brake Pedal Pressed
Parking Brake Engaged
Speed too Low"), ""}, - {"EngageVolume", tr("Engage Volume"), tr("Adjust the volume for alerts like:

NNFF Torque Controller loaded
openpilot engaged"), ""}, - {"PromptVolume", tr("Prompt Volume"), tr("Adjust the volume for alerts like:

Car Detected in Blindspot
Steer Unavailable Below \"X\"
Speed too Low
Take Control, Turn Exceeds Steering Limit"), ""}, - {"PromptDistractedVolume", tr("Prompt Distracted Volume"), tr("Adjust the volume for alerts like:

Pay Attention, Driver Distracted
Touch Steering Wheel, Driver Unresponsive"), ""}, - {"RefuseVolume", tr("Refuse Volume"), tr("Adjust the volume for alerts like:

openpilot Unavailable"), ""}, - {"WarningSoftVolume", tr("Warning Soft Volume"), tr("Adjust the volume for alerts like:

BRAKE!, Risk of Collision
TAKE CONTROL IMMEDIATELY"), ""}, - {"WarningImmediateVolume", tr("Warning Immediate Volume"), tr("Adjust the volume for alerts like:

DISENGAGE IMMEDIATELY, Driver Distracted
DISENGAGE IMMEDIATELY, Driver Unresponsive"), ""}, + {"AlertVolumeControl", tr("Alert Volume Controller"), tr("Set how loud each type of openpilot alert is to keep routine prompts from becoming distracting."), "../../frogpilot/assets/toggle_icons/icon_mute.png"}, + {"DisengageVolume", tr("Disengage Volume"), tr("Set the volume for alerts when openpilot disengages.

Examples include: \"Cruise Fault: Restart the Car\", \"Parking Brake Engaged\", \"Pedal Pressed\"."), ""}, + {"EngageVolume", tr("Engage Volume"), tr("Set the volume for the chime when openpilot engages, such as after pressing the \"RESUME\" or \"SET\" steering wheel buttons."), ""}, + {"PromptVolume", tr("Prompt Volume"), tr("Set the volume for prompts that need attention.

Examples include: \"Car Detected in Blindspot\", \"Steering Temporarily Unavailable\", \"Turn Exceeds Steering Limit\"."), ""}, + {"PromptDistractedVolume", tr("Prompt Distracted Volume"), tr("Set the volume for prompts when openpilot detects driver distraction or unresponsiveness.

Examples include: \"Pay Attention\", \"Touch Steering Wheel\"."), ""}, + {"RefuseVolume", tr("Refuse Volume"), tr("Set the volume for alerts when openpilot refuses to engage.

Examples include: \"Brake Hold Active\", \"Door Open\", \"Seatbelt Unlatched\"."), ""}, + {"WarningSoftVolume", tr("Warning Soft Volume"), tr("Set the volume for softer warnings about potential risks.

Examples include: \"BRAKE! Risk of Collision\", \"Steering Temporarily Unavailable\"."), ""}, + {"WarningImmediateVolume", tr("Warning Immediate Volume"), tr("Set the volume for the loudest warnings that require urgent attention.

Examples include: \"DISENGAGE IMMEDIATELY โ€” Driver Distracted\", \"DISENGAGE IMMEDIATELY โ€” Driver Unresponsive\"."), ""}, - {"CustomAlerts", tr("FrogPilot Alerts"), tr("FrogPilot alerts for various events in openpilot."), "../../frogpilot/assets/toggle_icons/icon_green_light.png"}, - {"GoatScream", tr("Goat Scream Steering Saturated Alert"), tr("The infamous \"Goat Scream\" that has brought both joy and anger to FrogPilot users all around the world!"), ""}, - {"GreenLightAlert", tr("Green Light Alert"), tr("Get an alert when the traffic light changes from red to green."), ""}, - {"LeadDepartingAlert", tr("Lead Departing Alert"), tr("Get an alert when the lead vehicle begins to depart from a standstill."), ""}, - {"LoudBlindspotAlert", tr("Loud \"Car Detected in Blindspot\" Alert"), tr("A louder alert for when a vehicle is detected in the blindspot when attempting to change lanes."), ""}, - {"SpeedLimitChangedAlert", tr("Speed Limit Changed Alert"), tr("Get an alert when the speed limit changes."), ""} + {"CustomAlerts", tr("FrogPilot Alerts"), tr("Optional FrogPilot alerts that highlight driving events in a more noticeable way."), "../../frogpilot/assets/toggle_icons/icon_green_light.png"}, + {"GoatScream", tr("Goat Scream"), tr("Play the infamous \"Goat Scream\" when the steering controller reaches its limit. Based on the \"Turn Exceeds Steering Limit\" event."), ""}, + {"GreenLightAlert", tr("Green Light Alert"), tr("Play an alert when the model predicts a red light has turned green.

Disclaimer: openpilot does not explicitly detect traffic lights. This alert is based on end-to-end model predictions from camera input and may trigger even when the light has not changed."), ""}, + {"LeadDepartingAlert", tr("Lead Departing Alert"), tr("Play an alert when the lead vehicle departs from a stop."), ""}, + {"LoudBlindspotAlert", tr("Loud \"Car Detected in Blindspot\" Alert"), tr("Play a louder alert if a vehicle is in the blind spot when attempting to change lanes. Based on the \"Car Detected in Blindspot\" event."), ""}, + {"SpeedLimitChangedAlert", tr("Speed Limit Changed Alert"), tr("Play an alert when the posted speed limit changes."), ""} }; for (const auto &[param, title, desc, icon] : soundsToggles) { @@ -59,7 +68,7 @@ FrogPilotSoundsPanel::FrogPilotSoundsPanel(FrogPilotSettingsWindow *parent) : Fr soundsLayout->setCurrentWidget(alertVolumeControlPanel); }); soundsToggle = alertVolumeControlToggle; - } else if (alertVolumeControlKeys.find(param) != alertVolumeControlKeys.end()) { + } else if (alertVolumeControlKeys.contains(param)) { std::map volumeLabels; for (int i = 0; i <= 101; ++i) { volumeLabels[i] = i == 0 ? tr("Muted") : i == 101 ? tr("Auto") : QString::number(i) + "%"; @@ -84,9 +93,9 @@ FrogPilotSoundsPanel::FrogPilotSoundsPanel(FrogPilotSettingsWindow *parent) : Fr toggles[param] = soundsToggle; - if (alertVolumeControlKeys.find(param) != alertVolumeControlKeys.end()) { + if (alertVolumeControlKeys.contains(param)) { alertVolumeControlList->addItem(soundsToggle); - } else if (customAlertsKeys.find(param) != customAlertsKeys.end()) { + } else if (customAlertsKeys.contains(param)) { customAlertsList->addItem(soundsToggle); } else { soundsList->addItem(soundsToggle); @@ -95,9 +104,15 @@ FrogPilotSoundsPanel::FrogPilotSoundsPanel(FrogPilotSettingsWindow *parent) : Fr } if (FrogPilotManageControl *frogPilotManageToggle = qobject_cast(soundsToggle)) { - QObject::connect(frogPilotManageToggle, &FrogPilotManageControl::manageButtonClicked, this, &FrogPilotSoundsPanel::openSubPanel); + QObject::connect(frogPilotManageToggle, &FrogPilotManageControl::manageButtonClicked, [this]() { + emit openSubPanel(); + openDescriptions(forceOpenDescriptions, toggles); + }); } + QObject::connect(soundsToggle, &AbstractControl::hideDescriptionEvent, [this]() { + update(); + }); QObject::connect(soundsToggle, &AbstractControl::showDescriptionEvent, [this]() { update(); }); @@ -105,7 +120,7 @@ FrogPilotSoundsPanel::FrogPilotSoundsPanel(FrogPilotSettingsWindow *parent) : Fr for (const QString &key : alertVolumeControlKeys) { FrogPilotParamValueButtonControl *toggle = static_cast(toggles[key]); - QObject::connect(toggle, &FrogPilotParamValueButtonControl::buttonClicked, [this, key, toggle]() { + QObject::connect(toggle, &FrogPilotParamValueButtonControl::buttonClicked, [key, toggle, this]() { toggle->updateParam(); updateFrogPilotToggles(); @@ -130,15 +145,26 @@ FrogPilotSoundsPanel::FrogPilotSoundsPanel(FrogPilotSettingsWindow *parent) : Fr if (started) { params_memory.put("TestAlert", camelCaseAlert.toStdString()); } else { - std::thread([this, key, snakeCaseAlert]() { + std::thread([key, snakeCaseAlert, this]() { playSound(snakeCaseAlert, params.getInt(key.toStdString())); }).detach(); } }); } - QObject::connect(parent, &FrogPilotSettingsWindow::closeSubPanel, [soundsLayout, soundsPanel] {soundsLayout->setCurrentWidget(soundsPanel);}); + QObject::connect(parent, &FrogPilotSettingsWindow::closeSubPanel, [soundsLayout, soundsPanel, this] { + openDescriptions(forceOpenDescriptions, toggles); + soundsLayout->setCurrentWidget(soundsPanel); + }); QObject::connect(uiState(), &UIState::uiUpdate, this, &FrogPilotSoundsPanel::updateState); + + for (auto &[key, toggle] : toggles) { + if (alertVolumeControlKeys.contains(key)) { + toggle->setVisible(true); + } + } + + updateToggles(); } void FrogPilotSoundsPanel::showEvent(QShowEvent *event) { @@ -160,13 +186,13 @@ void FrogPilotSoundsPanel::updateState(const UIState &s) { void FrogPilotSoundsPanel::updateToggles() { for (auto &[key, toggle] : toggles) { - if (parentKeys.find(key) != parentKeys.end()) { + if (parentKeys.contains(key)) { toggle->setVisible(false); } } for (auto &[key, toggle] : toggles) { - if (parentKeys.find(key) != parentKeys.end()) { + if (parentKeys.contains(key)) { continue; } @@ -183,13 +209,15 @@ void FrogPilotSoundsPanel::updateToggles() { toggle->setVisible(setVisible); if (setVisible) { - if (alertVolumeControlKeys.find(key) != alertVolumeControlKeys.end()) { + if (alertVolumeControlKeys.contains(key)) { toggles["AlertVolumeControl"]->setVisible(true); - } else if (customAlertsKeys.find(key) != customAlertsKeys.end()) { + } else if (customAlertsKeys.contains(key)) { toggles["CustomAlerts"]->setVisible(true); } } } + openDescriptions(forceOpenDescriptions, toggles); + update(); } diff --git a/frogpilot/ui/qt/offroad/sounds_settings.h b/frogpilot/ui/qt/offroad/sounds_settings.h index 5bb62327b..0ba32bb5f 100644 --- a/frogpilot/ui/qt/offroad/sounds_settings.h +++ b/frogpilot/ui/qt/offroad/sounds_settings.h @@ -1,7 +1,5 @@ #pragma once -#include - #include "frogpilot/ui/qt/offroad/frogpilot_settings.h" class FrogPilotSoundsPanel : public FrogPilotListWidget { @@ -20,6 +18,7 @@ private: void updateState(const UIState &s); void updateToggles(); + bool forceOpenDescriptions; bool hasBSM; bool hasOpenpilotLongitudinal; bool started; @@ -28,10 +27,10 @@ private: std::map toggles; - std::set alertVolumeControlKeys = {"DisengageVolume", "EngageVolume", "PromptDistractedVolume", "PromptVolume", "RefuseVolume", "WarningImmediateVolume", "WarningSoftVolume"}; - std::set customAlertsKeys = {"GoatScream", "GreenLightAlert", "LeadDepartingAlert", "LoudBlindspotAlert", "SpeedLimitChangedAlert"}; + QSet alertVolumeControlKeys {"DisengageVolume", "EngageVolume", "PromptDistractedVolume", "PromptVolume", "RefuseVolume", "WarningImmediateVolume", "WarningSoftVolume"}; + QSet customAlertsKeys {"GoatScream", "GreenLightAlert", "LeadDepartingAlert", "LoudBlindspotAlert", "SpeedLimitChangedAlert"}; - std::set parentKeys; + QSet parentKeys; FrogPilotSettingsWindow *parent; diff --git a/frogpilot/ui/qt/offroad/theme_settings.cc b/frogpilot/ui/qt/offroad/theme_settings.cc index 172fac21d..a08062a0d 100644 --- a/frogpilot/ui/qt/offroad/theme_settings.cc +++ b/frogpilot/ui/qt/offroad/theme_settings.cc @@ -1,5 +1,9 @@ #include "frogpilot/ui/qt/offroad/theme_settings.h" +bool isUserCreatedTheme(const QString &themeName) { + return themeName.endsWith("-user_created"); +} + void updateAssetParam(const QString &assetParam, Params ¶ms, const QString &value, bool add) { QStringList assets = QString::fromStdString(params.get(assetParam.toStdString())).split(",", QString::SkipEmptyParts); if (add) { @@ -17,19 +21,44 @@ void updateAssetParam(const QString &assetParam, Params ¶ms, const QString & void deleteThemeAsset(QDir &directory, const QString &subFolder, const QString &assetParam, const QString &themeToDelete, Params ¶ms) { bool useFiles = subFolder.isEmpty(); - QString themeName = themeToDelete.toLower().replace(" (", "-").replace(")", "").replace(" ", "-"); + QString baseName = themeToDelete.toLower(); + baseName.replace("(", "-").replace(")", "").replace(" ", "-"); + baseName.remove(QRegularExpression("[^a-z0-9\\-]")); + while (baseName.endsWith("-")) { + baseName.chop(1); + } + + QString baseUnderscore = baseName; + baseUnderscore.replace("-", "_"); + + QStringList candidateNames = { + baseName, + baseName + "-user-created", + baseUnderscore, + baseUnderscore + "-user_created" + }; + if (useFiles) { - for (const QString &file : directory.entryList(QDir::Files)) { - QString fileName = QFileInfo(file).baseName().toLower().replace("_", "-"); - if (fileName == themeName) { + QStringList files = directory.entryList(QDir::Files); + for (QString &file : files) { + QString normalizedFile = QFileInfo(file).baseName().toLower(); + normalizedFile.replace("_", "-"); + normalizedFile.remove(QRegularExpression("[^a-z0-9\\-~]")); + + if (candidateNames.contains(normalizedFile)) { QFile::remove(directory.filePath(file)); break; } } } else { - QDir targetDir(directory.filePath(QDir(themeName).filePath(subFolder))); - if (targetDir.exists()) { - targetDir.removeRecursively(); + for (QString &candidate : candidateNames) { + QString fullSubPath = QDir(candidate).filePath(subFolder); + QDir targetDir(directory.filePath(fullSubPath)); + + if (targetDir.exists()) { + targetDir.removeRecursively(); + break; + } } } @@ -37,12 +66,17 @@ void deleteThemeAsset(QDir &directory, const QString &subFolder, const QString & } void downloadThemeAsset(const QString &input, const std::string ¶mKey, const QString &assetParam, Params ¶ms, Params ¶ms_memory) { - QString output = input.toLower().remove("(").remove(")"); + QString output = input; + int tilde = output.indexOf("~"); + if (tilde >= 0) { + output = output.left(tilde).toLower() + "~" + output.mid(tilde + 1); + } else { + output = output.toLower(); + } + output.remove("(").remove(")"); output.replace(" ", input.contains("(") ? "-" : "_"); params_memory.put(paramKey, output.toStdString()); - - updateAssetParam(assetParam, params, input, false); } QStringList getHolidayThemes() { @@ -84,12 +118,39 @@ QStringList getThemeList(const bool &randomThemes, const QDir &themePacksDirecto } } - QStringList parts = entry.baseName().split(entry.baseName().contains("-") ? "-" : "_", QString::SkipEmptyParts); + QString baseName = entry.baseName(); + bool userCreated = isUserCreatedTheme(baseName); + if (userCreated) { + baseName = baseName.replace("-user_created", ""); + } + + int tildeIdx = baseName.indexOf("~"); + QString creator; + if (tildeIdx >= 0) { + creator = baseName.mid(tildeIdx + 1); + baseName = baseName.left(tildeIdx); + } + + QStringList parts = baseName.split(baseName.contains("-") ? "-" : "_", QString::SkipEmptyParts); for (QString &part : parts) { part[0] = part[0].toUpper(); } - themeList.append(parts.size() <= 1 || useFiles ? parts.join(" ") : QString("%1 (%2)").arg(parts[0], parts.mid(1).join(" "))); + QString displayName; + if (userCreated) { + displayName = parts.join(" "); + } else { + displayName = (parts.size() <= 1 || useFiles) ? parts.join(" ") : QString("%1 (%2)").arg(parts[0], parts.mid(1).join(" ")); + } + + if (userCreated) { + displayName += " ๐ŸŒŸ"; + } + if (!creator.isEmpty()) { + displayName += " - by: " + creator; + } + + themeList.append(displayName); } return themeList; @@ -98,26 +159,58 @@ QStringList getThemeList(const bool &randomThemes, const QDir &themePacksDirecto QString getThemeName(const std::string ¶mKey, Params ¶ms) { QString value = QString::fromStdString(params.get(paramKey)); - QStringList parts = value.split(value.contains("-") ? "-" : "_", QString::SkipEmptyParts); + QString baseName = value; + + int tildeIdx = baseName.indexOf("~"); + QString creator; + if (tildeIdx >= 0) { + creator = baseName.mid(tildeIdx + 1); + baseName = baseName.left(tildeIdx); + } + + QStringList parts = baseName.split(baseName.contains("-") ? "-" : "_", QString::SkipEmptyParts); for (QString &part : parts) { part[0] = part[0].toUpper(); } - if (value.contains("-") && parts.size() > 1) { - return QString("%1 (%2)").arg(parts[0], parts.mid(1).join(" ")); + QString displayName; + if (baseName.contains("-") && parts.size() > 1) { + displayName = QString("%1 (%2)").arg(parts[0], parts.mid(1).join(" ")); + } else { + displayName = parts.join(" "); } - return parts.join(" "); + + if (isUserCreatedTheme(value)) { + displayName = displayName.split(" (")[0] + " ๐ŸŒŸ"; + } + if (!creator.isEmpty()) { + displayName += " - by: " + creator; + } + + return displayName; } QString storeThemeName(const QString &input, const std::string ¶mKey, Params ¶ms) { QString output = input.toLower().remove("(").remove(")").remove("'").remove("."); output.replace(" ", input.contains("(") ? "-" : "_"); + output.replace("_๐ŸŒŸ", "-user_created"); + output = output.trimmed(); params.put(paramKey, output.toStdString()); + return getThemeName(paramKey, params); } FrogPilotThemesPanel::FrogPilotThemesPanel(FrogPilotSettingsWindow *parent) : FrogPilotListWidget(parent), parent(parent) { + QJsonObject shownDescriptions = QJsonDocument::fromJson(QString::fromStdString(params.get("ShownToggleDescriptions")).toUtf8()).object(); + QString className = this->metaObject()->className(); + + if (!shownDescriptions.value(className).toBool(false)) { + forceOpenDescriptions = true; + shownDescriptions.insert(className, true); + params.put("ShownToggleDescriptions", QJsonDocument(shownDescriptions).toJson(QJsonDocument::Compact).toStdString()); + } + QStackedLayout *themesLayout = new QStackedLayout(); addItem(themesLayout); @@ -134,20 +227,20 @@ FrogPilotThemesPanel::FrogPilotThemesPanel(FrogPilotSettingsWindow *parent) : Fr themesLayout->addWidget(customThemesPanel); const std::vector> themeToggles { - {"PersonalizeOpenpilot", tr("Custom Theme"), tr("The overall appearance of openpilot."), "../../frogpilot/assets/toggle_icons/icon_frog.png"}, - {"CustomColors", tr("Color Scheme"), tr("openpilot's color scheme.\n\nWant to submit your own color scheme? Share it in the \"custom-themes\" channel on the FrogPilot Discord!"), ""}, - {"CustomDistanceIcons", "Distance Button", "The distance button icons displayed in the driving screen.\n\nWant to submit your own icon pack? Share it in the \"custom-themes\" channel on the FrogPilot Discord!", ""}, - {"CustomIcons", tr("Icon Pack"), tr("openpilot's icon pack.\n\nWant to submit your own icons? Share them in the \"custom-themes\" channel on the FrogPilot Discord!"), ""}, - {"CustomSounds", tr("Sound Pack"), tr("openpilot's sound effects.\n\nWant to submit your own sounds? Share them in the \"custom-themes\" channel on the FrogPilot Discord!"), ""}, - {"WheelIcon", tr("Steering Wheel"), tr("The steering wheel icon in the top right of the driving screen."), ""}, - {"CustomSignals", tr("Turn Signal"), tr("Themed turn signal animations.\n\nWant to submit your own animations? Share them in the \"custom-themes\" channel on the FrogPilot Discord!"), ""}, + {"PersonalizeOpenpilot", tr("Custom Themes"), tr("The overall look and feel of openpilot. Use the \"Theme Maker\" in \"The Pond\" to create and share your own themes!"), "../../frogpilot/assets/toggle_icons/icon_frog.png"}, + {"CustomColors", tr("Color Scheme"), tr("The color scheme used throughout openpilot. Use the \"Theme Maker\" in \"The Pond\" to create and share your own themes!"), ""}, + {"CustomDistanceIcons", tr("Distance Button"), tr("The distance button icons shown on the driving screen. Use the \"Theme Maker\" in \"The Pond\" to create and share your own themes!"), ""}, + {"CustomIcons", tr("Icon Pack"), tr("The icon style used across openpilot. Use the \"Theme Maker\" in \"The Pond\" to create and share your own themes!"), ""}, + {"CustomSounds", tr("Sound Pack"), tr("The sound pack used by openpilot. Use the \"Theme Maker\" in \"The Pond\" to create and share your own themes!"), ""}, + {"WheelIcon", tr("Steering Wheel"), tr("The steering-wheel icon shown at the top-right of the driving screen. Use the \"Theme Maker\" in \"The Pond\" to create and share your own themes!"), ""}, + {"CustomSignals", tr("Turn Signal"), tr("Themed turn-signal animations. Use the \"Theme Maker\" in \"The Pond\" to create and share your own themes!"), ""}, {"DownloadStatusLabel", tr("Download Status"), "", ""}, - {"HolidayThemes", tr("Holiday Themes"), tr("Holiday-based visual themes for openpilot. Minor holidays last one day; major holidays (Christmas, Easter, Halloween, etc.) continue all week."), "../../frogpilot/assets/toggle_icons/icon_calendar.png"}, - {"RainbowPath", tr("Rainbow Path"), tr("The path on the driving screen turns into a Mario Kart inspired \"Rainbow Path\"."), "../../frogpilot/assets/toggle_icons/icon_rainbow.png"}, - {"RandomEvents", tr("Random Events"), tr("Random cosmetic events that trigger after certain driving conditions. These events are purely for fun and don't affect driving controls!"), "../../frogpilot/assets/toggle_icons/icon_random.png"}, - {"RandomThemes", tr("Random Themes"), tr("Cycles through your downloaded themes randomly on each boot, giving every theme in your collection a chance to shine!"), "../../frogpilot/assets/toggle_icons/icon_random_themes.png"}, - {"StartupAlert", tr("Startup Alert"), tr("The text of the \"Startup Alert\" message that appears at the beginning of a drive."), "../../frogpilot/assets/toggle_icons/icon_message.png"} + {"HolidayThemes", tr("Holiday Themes"), tr("Themes based on U.S. holidays. Minor holidays last one day; major holidays (Christmas, Easter, Halloween) run for a full week."), "../../frogpilot/assets/toggle_icons/icon_calendar.png"}, + {"RainbowPath", tr("Rainbow Path"), tr("Color the driving path like a Mario Kartโ€“style \"Rainbow Road\"."), "../../frogpilot/assets/toggle_icons/icon_rainbow.png"}, + {"RandomEvents", tr("Random Events"), tr("Occasional on-screen effects triggered by driving conditions. These are purely a visual and don't impact how openpilot drives!"), "../../frogpilot/assets/toggle_icons/icon_random.png"}, + {"RandomThemes", tr("Random Themes"), tr("Pick a random theme between each drive from the themes you have downloaded. Great for variety without changing settings while driving."), "../../frogpilot/assets/toggle_icons/icon_random_themes.png"}, + {"StartupAlert", tr("Startup Alert"), tr("Customize the \"Startup Alert\" message shown at the start of each drive."), "../../frogpilot/assets/toggle_icons/icon_message.png"} }; for (const auto &[param, title, desc, icon] : themeToggles) { @@ -160,13 +253,13 @@ FrogPilotThemesPanel::FrogPilotThemesPanel(FrogPilotSettingsWindow *parent) : Fr }); themeToggle = personalizeOpenpilotToggle; } else if (param == "CustomColors") { - manageCustomColorsBtn = new FrogPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DOWNLOAD"), tr("SELECT")}); - QObject::connect(manageCustomColorsBtn, &FrogPilotButtonsControl::buttonClicked, [this](int id) { + manageCustomColorsButton = new FrogPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DOWNLOAD"), tr("SELECT")}); + QObject::connect(manageCustomColorsButton, &FrogPilotButtonsControl::buttonClicked, [this](int id) { QStringList colorSchemes = getThemeList(randomThemes, QDir(themePacksDirectory.path()), "colors", "CustomColors", params); if (id == 0) { QString colorSchemeToDelete = MultiOptionDialog::getSelection(tr("Select a color scheme to delete"), colorSchemes, "", this); - if (!colorSchemeToDelete.isEmpty() && ConfirmationDialog::confirm(tr("Are you sure you want to delete the \"%1\" color scheme?").arg(colorSchemeToDelete), tr("Delete"), this)) { + if (!colorSchemeToDelete.isEmpty() && ConfirmationDialog::confirm(tr("Delete the \"%1\" color scheme?").arg(colorSchemeToDelete), tr("Delete"), this)) { colorsDownloaded = false; deleteThemeAsset(themePacksDirectory, "colors", "DownloadableColors", colorSchemeToDelete, params); @@ -177,8 +270,6 @@ FrogPilotThemesPanel::FrogPilotThemesPanel(FrogPilotSettingsWindow *parent) : Fr params_memory.putBool("CancelThemeDownload", true); - updateAssetParam("DownloadableColors", params, colorSchemeToDownload, true); - QTimer::singleShot(2500, [this]() { cancellingDownload = false; colorDownloading = false; @@ -207,20 +298,20 @@ FrogPilotThemesPanel::FrogPilotThemesPanel(FrogPilotSettingsWindow *parent) : Fr QString colorSchemeToSelect = MultiOptionDialog::getSelection(tr("Select a color scheme"), colorSchemes, getThemeName("CustomColors", params), this); if (!colorSchemeToSelect.isEmpty()) { - manageCustomColorsBtn->setValue(storeThemeName(colorSchemeToSelect, "CustomColors", params)); + manageCustomColorsButton->setValue(storeThemeName(colorSchemeToSelect, "CustomColors", params)); } } }); - manageCustomColorsBtn->setValue(getThemeName(param.toStdString(), params)); - themeToggle = manageCustomColorsBtn; + manageCustomColorsButton->setValue(getThemeName(param.toStdString(), params)); + themeToggle = manageCustomColorsButton; } else if (param == "CustomDistanceIcons") { - manageDistanceIconsBtn = new FrogPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DOWNLOAD"), tr("SELECT")}); - QObject::connect(manageDistanceIconsBtn, &FrogPilotButtonsControl::buttonClicked, [this](int id) { + manageDistanceIconsButton = new FrogPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DOWNLOAD"), tr("SELECT")}); + QObject::connect(manageDistanceIconsButton, &FrogPilotButtonsControl::buttonClicked, [this](int id) { QStringList distanceIconPacks = getThemeList(randomThemes, QDir(themePacksDirectory.path()), "distance_icons", "CustomDistanceIcons", params); if (id == 0) { QString distanceIconPackToDelete = MultiOptionDialog::getSelection(tr("Select a distance icon pack to delete"), distanceIconPacks, "", this); - if (!distanceIconPackToDelete.isEmpty() && ConfirmationDialog::confirm(tr("Are you sure you want to delete the \"%1\" distance icon pack?").arg(distanceIconPackToDelete), tr("Delete"), this)) { + if (!distanceIconPackToDelete.isEmpty() && ConfirmationDialog::confirm(tr("Delete the \"%1\" distance icon pack?").arg(distanceIconPackToDelete), tr("Delete"), this)) { distanceIconsDownloaded = false; deleteThemeAsset(themePacksDirectory, "distance_icons", "DownloadableDistanceIcons", distanceIconPackToDelete, params); @@ -231,8 +322,6 @@ FrogPilotThemesPanel::FrogPilotThemesPanel(FrogPilotSettingsWindow *parent) : Fr params_memory.putBool("CancelThemeDownload", true); - updateAssetParam("DownloadableDistanceIcons", params, distanceIconPackToDownload, true); - QTimer::singleShot(2500, [this]() { cancellingDownload = false; distanceIconDownloading = false; @@ -261,20 +350,20 @@ FrogPilotThemesPanel::FrogPilotThemesPanel(FrogPilotSettingsWindow *parent) : Fr QString distanceIconPackToSelect = MultiOptionDialog::getSelection(tr("Select a distance icon pack"), distanceIconPacks, getThemeName("CustomDistanceIcons", params), this); if (!distanceIconPackToSelect.isEmpty()) { - manageDistanceIconsBtn->setValue(storeThemeName(distanceIconPackToSelect, "CustomDistanceIcons", params)); + manageDistanceIconsButton->setValue(storeThemeName(distanceIconPackToSelect, "CustomDistanceIcons", params)); } } }); - manageDistanceIconsBtn->setValue(getThemeName(param.toStdString(), params)); - themeToggle = manageDistanceIconsBtn; + manageDistanceIconsButton->setValue(getThemeName(param.toStdString(), params)); + themeToggle = manageDistanceIconsButton; } else if (param == "CustomIcons") { - manageCustomIconsBtn = new FrogPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DOWNLOAD"), tr("SELECT")}); - QObject::connect(manageCustomIconsBtn, &FrogPilotButtonsControl::buttonClicked, [this](int id) { + manageCustomIconsButton = new FrogPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DOWNLOAD"), tr("SELECT")}); + QObject::connect(manageCustomIconsButton, &FrogPilotButtonsControl::buttonClicked, [this](int id) { QStringList iconPacks = getThemeList(randomThemes, QDir(themePacksDirectory.path()), "icons", "CustomIcons", params); if (id == 0) { QString iconPackToDelete = MultiOptionDialog::getSelection(tr("Select an icon pack to delete"), iconPacks, "", this); - if (!iconPackToDelete.isEmpty() && ConfirmationDialog::confirm(tr("Are you sure you want to delete the \"%1\" icon pack?").arg(iconPackToDelete), tr("Delete"), this)) { + if (!iconPackToDelete.isEmpty() && ConfirmationDialog::confirm(tr("Delete the \"%1\" icon pack?").arg(iconPackToDelete), tr("Delete"), this)) { iconsDownloaded = false; deleteThemeAsset(themePacksDirectory, "icons", "DownloadableIcons", iconPackToDelete, params); @@ -285,8 +374,6 @@ FrogPilotThemesPanel::FrogPilotThemesPanel(FrogPilotSettingsWindow *parent) : Fr params_memory.putBool("CancelThemeDownload", true); - updateAssetParam("DownloadableIcons", params, iconPackToDownload, true); - QTimer::singleShot(2500, [this]() { cancellingDownload = false; iconDownloading = false; @@ -315,20 +402,20 @@ FrogPilotThemesPanel::FrogPilotThemesPanel(FrogPilotSettingsWindow *parent) : Fr QString iconPackToSelect = MultiOptionDialog::getSelection(tr("Select an icon pack"), iconPacks, getThemeName("CustomIcons", params), this); if (!iconPackToSelect.isEmpty()) { - manageCustomIconsBtn->setValue(storeThemeName(iconPackToSelect, "CustomIcons", params)); + manageCustomIconsButton->setValue(storeThemeName(iconPackToSelect, "CustomIcons", params)); } } }); - manageCustomIconsBtn->setValue(getThemeName(param.toStdString(), params)); - themeToggle = manageCustomIconsBtn; + manageCustomIconsButton->setValue(getThemeName(param.toStdString(), params)); + themeToggle = manageCustomIconsButton; } else if (param == "CustomSignals") { - manageCustomSignalsBtn = new FrogPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DOWNLOAD"), tr("SELECT")}); - QObject::connect(manageCustomSignalsBtn, &FrogPilotButtonsControl::buttonClicked, [this](int id) { + manageCustomSignalsButton = new FrogPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DOWNLOAD"), tr("SELECT")}); + QObject::connect(manageCustomSignalsButton, &FrogPilotButtonsControl::buttonClicked, [this](int id) { QStringList signalAnimations = getThemeList(randomThemes, QDir(themePacksDirectory.path()), "signals", "CustomSignals", params); if (id == 0) { QString signalAnimationToDelete = MultiOptionDialog::getSelection(tr("Select a signal animation to delete"), signalAnimations, "", this); - if (!signalAnimationToDelete.isEmpty() && ConfirmationDialog::confirm(tr("Are you sure you want to delete the \"%1\" signal animation?").arg(signalAnimationToDelete), tr("Delete"), this)) { + if (!signalAnimationToDelete.isEmpty() && ConfirmationDialog::confirm(tr("Delete the \"%1\" signal animation?").arg(signalAnimationToDelete), tr("Delete"), this)) { signalsDownloaded = false; deleteThemeAsset(themePacksDirectory, "signals", "DownloadableSignals", signalAnimationToDelete, params); @@ -339,8 +426,6 @@ FrogPilotThemesPanel::FrogPilotThemesPanel(FrogPilotSettingsWindow *parent) : Fr params_memory.putBool("CancelThemeDownload", true); - updateAssetParam("DownloadableSignals", params, signalAnimationToDownload, true); - QTimer::singleShot(2500, [this]() { cancellingDownload = false; signalDownloading = false; @@ -369,20 +454,20 @@ FrogPilotThemesPanel::FrogPilotThemesPanel(FrogPilotSettingsWindow *parent) : Fr QString signalAnimationToSelect = MultiOptionDialog::getSelection(tr("Select a signal animation"), signalAnimations, getThemeName("CustomSignals", params), this); if (!signalAnimationToSelect.isEmpty()) { - manageCustomSignalsBtn->setValue(storeThemeName(signalAnimationToSelect, "CustomSignals", params)); + manageCustomSignalsButton->setValue(storeThemeName(signalAnimationToSelect, "CustomSignals", params)); } } }); - manageCustomSignalsBtn->setValue(getThemeName(param.toStdString(), params)); - themeToggle = manageCustomSignalsBtn; + manageCustomSignalsButton->setValue(getThemeName(param.toStdString(), params)); + themeToggle = manageCustomSignalsButton; } else if (param == "CustomSounds") { - manageCustomSoundsBtn = new FrogPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DOWNLOAD"), tr("SELECT")}); - QObject::connect(manageCustomSoundsBtn, &FrogPilotButtonsControl::buttonClicked, [this](int id) { + manageCustomSoundsButton = new FrogPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DOWNLOAD"), tr("SELECT")}); + QObject::connect(manageCustomSoundsButton, &FrogPilotButtonsControl::buttonClicked, [this](int id) { QStringList soundPacks = getThemeList(randomThemes, QDir(themePacksDirectory.path()), "sounds", "CustomSounds", params); if (id == 0) { QString soundPackToDelete = MultiOptionDialog::getSelection(tr("Select a sound pack to delete"), soundPacks, "", this); - if (!soundPackToDelete.isEmpty() && ConfirmationDialog::confirm(tr("Are you sure you want to delete the \"%1\" sound pack?").arg(soundPackToDelete), tr("Delete"), this)) { + if (!soundPackToDelete.isEmpty() && ConfirmationDialog::confirm(tr("Delete the \"%1\" sound pack?").arg(soundPackToDelete), tr("Delete"), this)) { soundsDownloaded = false; deleteThemeAsset(themePacksDirectory, "sounds", "DownloadableSounds", soundPackToDelete, params); @@ -393,8 +478,6 @@ FrogPilotThemesPanel::FrogPilotThemesPanel(FrogPilotSettingsWindow *parent) : Fr params_memory.putBool("CancelThemeDownload", true); - updateAssetParam("DownloadableSounds", params, soundPackToDownload, true); - QTimer::singleShot(2500, [this]() { cancellingDownload = false; soundDownloading = false; @@ -423,20 +506,20 @@ FrogPilotThemesPanel::FrogPilotThemesPanel(FrogPilotSettingsWindow *parent) : Fr QString soundPackToSelect = MultiOptionDialog::getSelection(tr("Select a sound pack"), soundPacks, getThemeName("CustomSounds", params), this); if (!soundPackToSelect.isEmpty()) { - manageCustomSoundsBtn->setValue(storeThemeName(soundPackToSelect, "CustomSounds", params)); + manageCustomSoundsButton->setValue(storeThemeName(soundPackToSelect, "CustomSounds", params)); } } }); - manageCustomSoundsBtn->setValue(getThemeName(param.toStdString(), params)); - themeToggle = manageCustomSoundsBtn; + manageCustomSoundsButton->setValue(getThemeName(param.toStdString(), params)); + themeToggle = manageCustomSoundsButton; } else if (param == "WheelIcon") { - manageWheelIconsBtn = new FrogPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DOWNLOAD"), tr("SELECT")}); - QObject::connect(manageWheelIconsBtn, &FrogPilotButtonsControl::buttonClicked, [this](int id) { + manageWheelIconsButton = new FrogPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DOWNLOAD"), tr("SELECT")}); + QObject::connect(manageWheelIconsButton, &FrogPilotButtonsControl::buttonClicked, [this](int id) { QStringList wheelIcons = getThemeList(randomThemes, QDir(wheelsDirectory.path()), "", "WheelIcon", params); if (id == 0) { QString wheelIconToDelete = MultiOptionDialog::getSelection(tr("Select a steering wheel to delete"), wheelIcons, "", this); - if (!wheelIconToDelete.isEmpty() && ConfirmationDialog::confirm(tr("Are you sure you want to delete the \"%1\" steering wheel?").arg(wheelIconToDelete), tr("Delete"), this)) { + if (!wheelIconToDelete.isEmpty() && ConfirmationDialog::confirm(tr("Delete the \"%1\" steering wheel?").arg(wheelIconToDelete), tr("Delete"), this)) { wheelsDownloaded = false; deleteThemeAsset(wheelsDirectory, "", "DownloadableWheels", wheelIconToDelete, params); @@ -447,8 +530,6 @@ FrogPilotThemesPanel::FrogPilotThemesPanel(FrogPilotSettingsWindow *parent) : Fr params_memory.putBool("CancelThemeDownload", true); - updateAssetParam("DownloadableWheels", params, wheelToDownload, true); - QTimer::singleShot(2500, [this]() { cancellingDownload = false; wheelDownloading = false; @@ -478,12 +559,12 @@ FrogPilotThemesPanel::FrogPilotThemesPanel(FrogPilotSettingsWindow *parent) : Fr QString steeringWheelToSelect = MultiOptionDialog::getSelection(tr("Select a steering wheel"), wheelIcons, getThemeName("WheelIcon", params), this); if (!steeringWheelToSelect.isEmpty()) { - manageWheelIconsBtn->setValue(storeThemeName(steeringWheelToSelect, "WheelIcon", params)); + manageWheelIconsButton->setValue(storeThemeName(steeringWheelToSelect, "WheelIcon", params)); } } }); - manageWheelIconsBtn->setValue(getThemeName(param.toStdString(), params)); - themeToggle = manageWheelIconsBtn; + manageWheelIconsButton->setValue(getThemeName(param.toStdString(), params)); + themeToggle = manageWheelIconsButton; } else if (param == "DownloadStatusLabel") { downloadStatusLabel = new LabelControl(title, "Idle"); themeToggle = downloadStatusLabel; @@ -543,7 +624,7 @@ FrogPilotThemesPanel::FrogPilotThemesPanel(FrogPilotSettingsWindow *parent) : Fr toggles[param] = themeToggle; - if (customThemeKeys.find(param) != customThemeKeys.end()) { + if (customThemeKeys.contains(param)) { customThemesList->addItem(themeToggle); } else { themesList->addItem(themeToggle); @@ -554,60 +635,71 @@ FrogPilotThemesPanel::FrogPilotThemesPanel(FrogPilotSettingsWindow *parent) : Fr } if (FrogPilotManageControl *frogPilotManageToggle = qobject_cast(themeToggle)) { - QObject::connect(frogPilotManageToggle, &FrogPilotManageControl::manageButtonClicked, this, &FrogPilotThemesPanel::openSubPanel); + QObject::connect(frogPilotManageToggle, &FrogPilotManageControl::manageButtonClicked, [this]() { + emit openSubPanel(); + openDescriptions(forceOpenDescriptions, toggles); + }); } + QObject::connect(themeToggle, &AbstractControl::hideDescriptionEvent, [this]() { + update(); + }); QObject::connect(themeToggle, &AbstractControl::showDescriptionEvent, [this]() { update(); }); } + openDescriptions(forceOpenDescriptions, toggles); + QObject::connect(static_cast(toggles["PersonalizeOpenpilot"]), &ToggleControl::toggleFlipped, this, &FrogPilotThemesPanel::updateToggles); QObject::connect(static_cast(toggles["RandomThemes"]), &ToggleControl::toggleFlipped, [this](bool state) { if (state) { ConfirmationDialog::alert(tr("\"Random Themes\" only works with downloaded themes, so make sure you download the themes you want it to use!"), this); - manageCustomColorsBtn->setValue(""); - manageCustomColorsBtn->setVisibleButton(2, false); + manageCustomColorsButton->setValue(""); + manageCustomColorsButton->setVisibleButton(2, false); - manageCustomIconsBtn->setValue(""); - manageCustomIconsBtn->setVisibleButton(2, false); + manageCustomIconsButton->setValue(""); + manageCustomIconsButton->setVisibleButton(2, false); - manageCustomSignalsBtn->setValue(""); - manageCustomSignalsBtn->setVisibleButton(2, false); + manageCustomSignalsButton->setValue(""); + manageCustomSignalsButton->setVisibleButton(2, false); - manageCustomSoundsBtn->setValue(""); - manageCustomSoundsBtn->setVisibleButton(2, false); + manageCustomSoundsButton->setValue(""); + manageCustomSoundsButton->setVisibleButton(2, false); - manageDistanceIconsBtn->setValue(""); - manageDistanceIconsBtn->setVisibleButton(2, false); + manageDistanceIconsButton->setValue(""); + manageDistanceIconsButton->setVisibleButton(2, false); - manageWheelIconsBtn->setValue(""); - manageWheelIconsBtn->setVisibleButton(2, false); + manageWheelIconsButton->setValue(""); + manageWheelIconsButton->setVisibleButton(2, false); } else { - manageCustomColorsBtn->setValue(getThemeName("CustomColors", params)); - manageCustomColorsBtn->setVisibleButton(2, true); + manageCustomColorsButton->setValue(getThemeName("CustomColors", params)); + manageCustomColorsButton->setVisibleButton(2, true); - manageCustomIconsBtn->setValue(getThemeName("CustomIcons", params)); - manageCustomIconsBtn->setVisibleButton(2, true); + manageCustomIconsButton->setValue(getThemeName("CustomIcons", params)); + manageCustomIconsButton->setVisibleButton(2, true); - manageCustomSignalsBtn->setValue(getThemeName("CustomSignals", params)); - manageCustomSignalsBtn->setVisibleButton(2, true); + manageCustomSignalsButton->setValue(getThemeName("CustomSignals", params)); + manageCustomSignalsButton->setVisibleButton(2, true); - manageCustomSoundsBtn->setValue(getThemeName("CustomSounds", params)); - manageCustomSoundsBtn->setVisibleButton(2, true); + manageCustomSoundsButton->setValue(getThemeName("CustomSounds", params)); + manageCustomSoundsButton->setVisibleButton(2, true); - manageDistanceIconsBtn->setValue(getThemeName("CustomDistanceIcons", params)); - manageDistanceIconsBtn->setVisibleButton(2, true); + manageDistanceIconsButton->setValue(getThemeName("CustomDistanceIcons", params)); + manageDistanceIconsButton->setVisibleButton(2, true); - manageWheelIconsBtn->setValue(getThemeName("WheelIcon", params)); - manageWheelIconsBtn->setVisibleButton(2, true); + manageWheelIconsButton->setValue(getThemeName("WheelIcon", params)); + manageWheelIconsButton->setVisibleButton(2, true); } randomThemes = state; }); - QObject::connect(parent, &FrogPilotSettingsWindow::closeSubPanel, [themesLayout, themesPanel] {themesLayout->setCurrentWidget(themesPanel);}); + QObject::connect(parent, &FrogPilotSettingsWindow::closeSubPanel, [themesLayout, themesPanel, this] { + openDescriptions(forceOpenDescriptions, toggles); + themesLayout->setCurrentWidget(themesPanel); + }); QObject::connect(uiState(), &UIState::uiUpdate, this, &FrogPilotThemesPanel::updateState); } @@ -623,23 +715,23 @@ void FrogPilotThemesPanel::showEvent(QShowEvent *event) { tuningLevel = parent->tuningLevel; if (params.getBool("RandomThemes")) { - manageCustomColorsBtn->setValue(""); - manageCustomColorsBtn->setVisibleButton(2, false); + manageCustomColorsButton->setValue(""); + manageCustomColorsButton->setVisibleButton(2, false); - manageCustomIconsBtn->setValue(""); - manageCustomIconsBtn->setVisibleButton(2, false); + manageCustomIconsButton->setValue(""); + manageCustomIconsButton->setVisibleButton(2, false); - manageCustomSignalsBtn->setValue(""); - manageCustomSignalsBtn->setVisibleButton(2, false); + manageCustomSignalsButton->setValue(""); + manageCustomSignalsButton->setVisibleButton(2, false); - manageCustomSoundsBtn->setValue(""); - manageCustomSoundsBtn->setVisibleButton(2, false); + manageCustomSoundsButton->setValue(""); + manageCustomSoundsButton->setVisibleButton(2, false); - manageDistanceIconsBtn->setValue(""); - manageDistanceIconsBtn->setVisibleButton(2, false); + manageDistanceIconsButton->setValue(""); + manageDistanceIconsButton->setVisibleButton(2, false); - manageWheelIconsBtn->setValue(""); - manageWheelIconsBtn->setVisibleButton(2, false); + manageWheelIconsButton->setValue(""); + manageWheelIconsButton->setVisibleButton(2, false); randomThemes = true; } @@ -681,13 +773,7 @@ void FrogPilotThemesPanel::updateState(const UIState &s, const FrogPilotUIState wheelsDownloaded = params.get("DownloadableWheels").empty(); params_memory.remove("CancelThemeDownload"); - params_memory.remove("ColorToDownload"); - params_memory.remove("DistanceIconToDownload"); - params_memory.remove("IconToDownload"); - params_memory.remove("SignalToDownload"); - params_memory.remove("SoundToDownload"); params_memory.remove("ThemeDownloadProgress"); - params_memory.remove("WheelToDownload"); downloadStatusLabel->setText("Idle"); }); @@ -696,48 +782,48 @@ void FrogPilotThemesPanel::updateState(const UIState &s, const FrogPilotUIState bool parked = !s.scene.started || fs.frogpilot_scene.parked || fs.frogpilot_toggles.value("frogs_go_moo").toBool(); - manageCustomColorsBtn->setText(1, colorDownloading ? tr("CANCEL") : tr("DOWNLOAD")); - manageCustomColorsBtn->setEnabledButtons(0, !themeDownloading); - manageCustomColorsBtn->setEnabledButtons(1, fs.frogpilot_scene.online && (!themeDownloading || colorDownloading) && !cancellingDownload && !colorsDownloaded && parked); - manageCustomColorsBtn->setEnabledButtons(2, !themeDownloading); + manageCustomColorsButton->setText(1, colorDownloading ? tr("CANCEL") : tr("DOWNLOAD")); + manageCustomColorsButton->setEnabledButtons(0, !themeDownloading); + manageCustomColorsButton->setEnabledButtons(1, fs.frogpilot_scene.online && (!themeDownloading || colorDownloading) && !cancellingDownload && !finalizingDownload && !colorsDownloaded && parked); + manageCustomColorsButton->setEnabledButtons(2, !themeDownloading); - manageCustomIconsBtn->setText(1, iconDownloading ? tr("CANCEL") : tr("DOWNLOAD")); - manageCustomIconsBtn->setEnabledButtons(0, !themeDownloading); - manageCustomIconsBtn->setEnabledButtons(1, fs.frogpilot_scene.online && (!themeDownloading || iconDownloading) && !cancellingDownload && !iconsDownloaded && parked); - manageCustomIconsBtn->setEnabledButtons(2, !themeDownloading); + manageCustomIconsButton->setText(1, iconDownloading ? tr("CANCEL") : tr("DOWNLOAD")); + manageCustomIconsButton->setEnabledButtons(0, !themeDownloading); + manageCustomIconsButton->setEnabledButtons(1, fs.frogpilot_scene.online && (!themeDownloading || iconDownloading) && !cancellingDownload && !finalizingDownload && !iconsDownloaded && parked); + manageCustomIconsButton->setEnabledButtons(2, !themeDownloading); - manageCustomSignalsBtn->setText(1, signalDownloading ? tr("CANCEL") : tr("DOWNLOAD")); - manageCustomSignalsBtn->setEnabledButtons(0, !themeDownloading); - manageCustomSignalsBtn->setEnabledButtons(1, fs.frogpilot_scene.online && (!themeDownloading || signalDownloading) && !cancellingDownload && !signalsDownloaded && parked); - manageCustomSignalsBtn->setEnabledButtons(2, !themeDownloading); + manageCustomSignalsButton->setText(1, signalDownloading ? tr("CANCEL") : tr("DOWNLOAD")); + manageCustomSignalsButton->setEnabledButtons(0, !themeDownloading); + manageCustomSignalsButton->setEnabledButtons(1, fs.frogpilot_scene.online && (!themeDownloading || signalDownloading) && !cancellingDownload && !finalizingDownload && !signalsDownloaded && parked); + manageCustomSignalsButton->setEnabledButtons(2, !themeDownloading); - manageCustomSoundsBtn->setText(1, soundDownloading ? tr("CANCEL") : tr("DOWNLOAD")); - manageCustomSoundsBtn->setEnabledButtons(0, !themeDownloading); - manageCustomSoundsBtn->setEnabledButtons(1, fs.frogpilot_scene.online && (!themeDownloading || soundDownloading) && !cancellingDownload && !soundsDownloaded && parked); - manageCustomSoundsBtn->setEnabledButtons(2, !themeDownloading); + manageCustomSoundsButton->setText(1, soundDownloading ? tr("CANCEL") : tr("DOWNLOAD")); + manageCustomSoundsButton->setEnabledButtons(0, !themeDownloading); + manageCustomSoundsButton->setEnabledButtons(1, fs.frogpilot_scene.online && (!themeDownloading || soundDownloading) && !cancellingDownload && !finalizingDownload && !soundsDownloaded && parked); + manageCustomSoundsButton->setEnabledButtons(2, !themeDownloading); - manageDistanceIconsBtn->setText(1, distanceIconDownloading ? tr("CANCEL") : tr("DOWNLOAD")); - manageDistanceIconsBtn->setEnabledButtons(0, !themeDownloading); - manageDistanceIconsBtn->setEnabledButtons(1, fs.frogpilot_scene.online && (!themeDownloading || distanceIconDownloading) && !cancellingDownload && !distanceIconsDownloaded && parked); - manageDistanceIconsBtn->setEnabledButtons(2, !themeDownloading); + manageDistanceIconsButton->setText(1, distanceIconDownloading ? tr("CANCEL") : tr("DOWNLOAD")); + manageDistanceIconsButton->setEnabledButtons(0, !themeDownloading); + manageDistanceIconsButton->setEnabledButtons(1, fs.frogpilot_scene.online && (!themeDownloading || distanceIconDownloading) && !cancellingDownload && !finalizingDownload && !distanceIconsDownloaded && parked); + manageDistanceIconsButton->setEnabledButtons(2, !themeDownloading); - manageWheelIconsBtn->setText(1, wheelDownloading ? tr("CANCEL") : tr("DOWNLOAD")); - manageWheelIconsBtn->setEnabledButtons(0, !themeDownloading); - manageWheelIconsBtn->setEnabledButtons(1, fs.frogpilot_scene.online && (!themeDownloading || wheelDownloading) && !cancellingDownload && !wheelsDownloaded && parked); - manageWheelIconsBtn->setEnabledButtons(2, !themeDownloading); + manageWheelIconsButton->setText(1, wheelDownloading ? tr("CANCEL") : tr("DOWNLOAD")); + manageWheelIconsButton->setEnabledButtons(0, !themeDownloading); + manageWheelIconsButton->setEnabledButtons(1, fs.frogpilot_scene.online && (!themeDownloading || wheelDownloading) && !cancellingDownload && !finalizingDownload && !wheelsDownloaded && parked); + manageWheelIconsButton->setEnabledButtons(2, !themeDownloading); parent->keepScreenOn = themeDownloading; } void FrogPilotThemesPanel::updateToggles() { for (auto &[key, toggle] : toggles) { - if (parentKeys.find(key) != parentKeys.end()) { + if (parentKeys.contains(key)) { toggle->setVisible(false); } } for (auto &[key, toggle] : toggles) { - if (parentKeys.find(key) != parentKeys.end()) { + if (parentKeys.contains(key)) { continue; } @@ -754,11 +840,13 @@ void FrogPilotThemesPanel::updateToggles() { toggle->setVisible(setVisible); if (setVisible) { - if (customThemeKeys.find(key) != customThemeKeys.end()) { + if (customThemeKeys.contains(key)) { toggles["PersonalizeOpenpilot"]->setVisible(true); } } } + openDescriptions(forceOpenDescriptions, toggles); + update(); } diff --git a/frogpilot/ui/qt/offroad/theme_settings.h b/frogpilot/ui/qt/offroad/theme_settings.h index 9afe0ac52..876edb230 100644 --- a/frogpilot/ui/qt/offroad/theme_settings.h +++ b/frogpilot/ui/qt/offroad/theme_settings.h @@ -1,7 +1,5 @@ #pragma once -#include - #include "frogpilot/ui/qt/offroad/frogpilot_settings.h" class FrogPilotThemesPanel : public FrogPilotListWidget { @@ -26,6 +24,7 @@ private: bool distanceIconDownloading; bool distanceIconsDownloaded; bool finalizingDownload; + bool forceOpenDescriptions; bool iconDownloading; bool iconsDownloaded; bool randomThemes; @@ -41,16 +40,16 @@ private: std::map toggles; - std::set customThemeKeys = {"CustomColors", "CustomDistanceIcons", "CustomIcons", "CustomSignals", "CustomSounds", "DownloadStatusLabel", "WheelIcon"}; + QSet customThemeKeys = {"CustomColors", "CustomDistanceIcons", "CustomIcons", "CustomSignals", "CustomSounds", "DownloadStatusLabel", "WheelIcon"}; - std::set parentKeys; + QSet parentKeys; - FrogPilotButtonsControl *manageCustomColorsBtn; - FrogPilotButtonsControl *manageCustomIconsBtn; - FrogPilotButtonsControl *manageCustomSignalsBtn; - FrogPilotButtonsControl *manageCustomSoundsBtn; - FrogPilotButtonsControl *manageDistanceIconsBtn; - FrogPilotButtonsControl *manageWheelIconsBtn; + FrogPilotButtonsControl *manageCustomColorsButton; + FrogPilotButtonsControl *manageCustomIconsButton; + FrogPilotButtonsControl *manageCustomSignalsButton; + FrogPilotButtonsControl *manageCustomSoundsButton; + FrogPilotButtonsControl *manageDistanceIconsButton; + FrogPilotButtonsControl *manageWheelIconsButton; FrogPilotSettingsWindow *parent; diff --git a/frogpilot/ui/qt/offroad/utilities.cc b/frogpilot/ui/qt/offroad/utilities.cc index decb726e4..468f6751a 100644 --- a/frogpilot/ui/qt/offroad/utilities.cc +++ b/frogpilot/ui/qt/offroad/utilities.cc @@ -1,28 +1,41 @@ #include "frogpilot/ui/qt/offroad/utilities.h" FrogPilotUtilitiesPanel::FrogPilotUtilitiesPanel(FrogPilotSettingsWindow *parent) : FrogPilotListWidget(parent), parent(parent) { - ParamControl *debugModeToggle = new ParamControl("DebugMode", tr("Debug Mode"), tr("Debug FrogPilot during the next drive by utilizing all of FrogPilot's developer metrics for either bug reporting, or self-debugging."), ""); + QJsonObject shownDescriptions = QJsonDocument::fromJson(QString::fromStdString(params.get("ShownToggleDescriptions")).toUtf8()).object(); + QString className = this->metaObject()->className(); + + bool forceOpenDescriptions = false; + if (!shownDescriptions.value(className).toBool(false)) { + forceOpenDescriptions = true; + shownDescriptions.insert(className, true); + params.put("ShownToggleDescriptions", QJsonDocument(shownDescriptions).toJson(QJsonDocument::Compact).toStdString()); + } + + ParamControl *debugModeToggle = new ParamControl("DebugMode", tr("Debug Mode"), tr("Use FrogPilot's developer metrics on your next drive to diagnose issues and improve bug reports."), ""); + if (forceOpenDescriptions) { + debugModeToggle->showDescription(); + } addItem(debugModeToggle); - ButtonControl *flashPandaBtn = new ButtonControl(tr("Flash Panda"), tr("FLASH"), tr("Flash the Panda's firmware. Use if you're running into issues with the Panda.")); - QObject::connect(flashPandaBtn, &ButtonControl::clicked, [this, parent, flashPandaBtn]() { - if (ConfirmationDialog::confirm(tr("Are you sure you want to flash the Panda?"), tr("Flash"), this)) { - std::thread([this, parent, flashPandaBtn]() { + ButtonControl *flashPandaButton = new ButtonControl(tr("Flash Panda"), tr("FLASH"), tr("Reinstall the Panda firmware to fix connection or reliability issues.")); + QObject::connect(flashPandaButton, &ButtonControl::clicked, [parent, flashPandaButton, this]() { + if (ConfirmationDialog::confirm(tr("Are you sure you want to flash the Panda firmware?"), tr("Flash"), this)) { + std::thread([parent, flashPandaButton, this]() { parent->keepScreenOn = true; - flashPandaBtn->setEnabled(false); - flashPandaBtn->setValue(tr("Flashing...")); + flashPandaButton->setEnabled(false); + flashPandaButton->setValue(tr("Flashing...")); params_memory.putBool("FlashPanda", true); while (params_memory.getBool("FlashPanda")) { util::sleep_for(UI_FREQ); } - flashPandaBtn->setValue(tr("Flashed!")); + flashPandaButton->setValue(tr("Flashed!")); util::sleep_for(2500); - flashPandaBtn->setValue(tr("Rebooting...")); + flashPandaButton->setValue(tr("Rebooting...")); util::sleep_for(2500); @@ -30,30 +43,26 @@ FrogPilotUtilitiesPanel::FrogPilotUtilitiesPanel(FrogPilotSettingsWindow *parent }).detach(); } }); - addItem(flashPandaBtn); + if (forceOpenDescriptions) { + flashPandaButton->showDescription(); + } + addItem(flashPandaButton); - FrogPilotButtonsControl *forceStartedBtn = new FrogPilotButtonsControl(tr("Force Started State"), tr("Force openpilot either offroad or onroad."), "", {tr("OFFROAD"), tr("ONROAD"), tr("OFF")}, true); - QObject::connect(forceStartedBtn, &FrogPilotButtonsControl::buttonClicked, [this](int id) { + FrogPilotButtonsControl *forceStartedButton = new FrogPilotButtonsControl(tr("Force Drive State"), tr("Manually set openpilot to be offroad or onroad."), "", {tr("OFFROAD"), tr("ONROAD"), tr("OFF")}, true); + QObject::connect(forceStartedButton, &FrogPilotButtonsControl::buttonClicked, [this](int id) { if (id == 0) { params_memory.putBool("ForceOffroad", true); params_memory.putBool("ForceOnroad", false); updateFrogPilotToggles(); } else if (id == 1) { + params.put("CarParams", params.get("CarParamsPersistent")); + params.put("FrogPilotCarParams", params.get("FrogPilotCarParamsPersistent")); + params_memory.putBool("ForceOffroad", false); params_memory.putBool("ForceOnroad", true); - params.put("CarParams", params.get("CarParamsPersistent")); - params.put("FrogPilotCarParams", params.get("FrogPilotCarParamsPersistent")); - updateFrogPilotToggles(); - - while (!params.get("CarParams").empty()) { - util::sleep_for(UI_FREQ); - } - - params.put("CarParams", params.get("CarParamsPersistent")); - params.put("FrogPilotCarParams", params.get("FrogPilotCarParamsPersistent")); } else if (id == 2) { params_memory.putBool("ForceOffroad", false); params_memory.putBool("ForceOnroad", false); @@ -61,13 +70,16 @@ FrogPilotUtilitiesPanel::FrogPilotUtilitiesPanel(FrogPilotSettingsWindow *parent updateFrogPilotToggles(); } }); - forceStartedBtn->setCheckedButton(2); - addItem(forceStartedBtn); + forceStartedButton->setCheckedButton(2); + if (forceOpenDescriptions) { + forceStartedButton->showDescription(); + } + addItem(forceStartedButton); - ButtonControl *reportIssueBtn = new ButtonControl(tr("Report a Bug or an Issue"), tr("REPORT"), tr("Let FrogsGoMoo know about an issue you're facing!")); - QObject::connect(reportIssueBtn, &ButtonControl::clicked, [this]() { + ButtonControl *reportIssueButton = new ButtonControl(tr("Report a Bug or an Issue"), tr("REPORT"), tr("Send a bug report so we can help fix the problem!")); + QObject::connect(reportIssueButton, &ButtonControl::clicked, [this]() { if (!frogpilotUIState()->frogpilot_scene.online) { - ConfirmationDialog::alert(tr("Ensure your device has an internet connection before sending a report!"), this); + ConfirmationDialog::alert(tr("Please connect to the internet before sending a report!"), this); return; } @@ -77,21 +89,19 @@ FrogPilotUtilitiesPanel::FrogPilotUtilitiesPanel(FrogPilotSettingsWindow *parent report_messages << crash_report; } QStringList additional_issues = { - tr("Acceleration feels too harsh or jerky"), - tr("An alert confused me and I didnโ€™t know what it meant"), + tr("Acceleration feels harsh or jerky"), + tr("An alert was unclear and I didn't know what it meant"), tr("Braking is too sudden or uncomfortable"), - tr("Iโ€™m not sure if this is normal or a bug:"), - tr("Lane changes donโ€™t work properly or feel unsafe"), - tr("My screen froze or got stuck on loading"), - tr("My steering wheel buttons arenโ€™t working"), + tr("I'm not sure if this is normal or a bug:"), + tr("My screen froze or is stuck loading something"), + tr("My steering wheel buttons aren't working"), tr("openpilot disengages when I don't expect it"), - tr("openpilot doesnโ€™t resume after I stop"), tr("openpilot doesn't react to stopped vehicles ahead"), + tr("openpilot doesn't resume from a stop"), tr("openpilot feels sluggish or slow to respond"), tr("Steering feels twitchy or unnatural"), - tr("The car doesnโ€™t follow curves well"), - tr("The car isnโ€™t staying centered in its lane"), - tr("The speed or display info looks wrong"), + tr("The car doesn't follow curves well"), + tr("The car isn't staying centered in its lane"), tr("Something else (please describe)") }; report_messages.append(additional_issues); @@ -126,27 +136,30 @@ FrogPilotUtilitiesPanel::FrogPilotUtilitiesPanel(FrogPilotSettingsWindow *parent params.putNonBlocking("DiscordUsername", reportData["DiscordUser"].toString().toStdString()); params_memory.put("IssueReported", QJsonDocument(reportData).toJson(QJsonDocument::Compact).toStdString()); - ConfirmationDialog::alert(tr("Your report has been submitted. Thanks for letting us know!"), this); + ConfirmationDialog::alert(tr("Report Sent! Thanks for letting us know!"), this); }); - addItem(reportIssueBtn); - reportIssueBtn->setVisible(QString::fromStdString(params.get("GitRemote")).toLower() == "https://github.com/frogai/openpilot.git"); + if (forceOpenDescriptions) { + reportIssueButton->showDescription(); + } + addItem(reportIssueButton); + reportIssueButton->setVisible(QString::fromStdString(params.get("GitRemote")).toLower() == "https://github.com/frogai/openpilot.git"); - ButtonControl *resetTogglesBtn = new ButtonControl(tr("Reset Toggles to Default"), tr("RESET"), tr("Reset all toggles to their default values.")); - QObject::connect(resetTogglesBtn, &ButtonControl::clicked, [this, parent, resetTogglesBtn]() { + ButtonControl *resetTogglesButton = new ButtonControl(tr("Reset Toggles to Default"), tr("RESET"), tr("Reset all toggles to their default values.")); + QObject::connect(resetTogglesButton, &ButtonControl::clicked, [parent, resetTogglesButton, this]() { if (ConfirmationDialog::confirm(tr("Are you sure you want to reset all toggles to their default values?"), tr("Reset"), this)) { - std::thread([this, parent, resetTogglesBtn]() mutable { + std::thread([parent, resetTogglesButton, this]() mutable { parent->keepScreenOn = true; - resetTogglesBtn->setEnabled(false); - resetTogglesBtn->setValue(tr("Resetting...")); + resetTogglesButton->setEnabled(false); + resetTogglesButton->setValue(tr("Resetting...")); params.putBool("DoToggleReset", true); - resetTogglesBtn->setValue(tr("Reset!")); + resetTogglesButton->setValue(tr("Reset!")); util::sleep_for(2500); - resetTogglesBtn->setValue(tr("Rebooting...")); + resetTogglesButton->setValue(tr("Rebooting...")); util::sleep_for(2500); @@ -154,24 +167,27 @@ FrogPilotUtilitiesPanel::FrogPilotUtilitiesPanel(FrogPilotSettingsWindow *parent }).detach(); } }); - addItem(resetTogglesBtn); + if (forceOpenDescriptions) { + resetTogglesButton->showDescription(); + } + addItem(resetTogglesButton); - ButtonControl *resetTogglesBtnStock = new ButtonControl(tr("Reset Toggles to Match Stock openpilot"), tr("RESET"), tr("Reset all toggles to match stock openpilot.")); - QObject::connect(resetTogglesBtnStock, &ButtonControl::clicked, [this, parent, resetTogglesBtnStock]() { + ButtonControl *resetTogglesButtonStock = new ButtonControl(tr("Reset Toggles to Stock openpilot"), tr("RESET"), tr("Reset all toggles to match stock openpilot.")); + QObject::connect(resetTogglesButtonStock, &ButtonControl::clicked, [parent, resetTogglesButtonStock, this]() { if (ConfirmationDialog::confirm(tr("Are you sure you want to reset all toggles to match stock openpilot?"), tr("Reset"), this)) { - std::thread([this, parent, resetTogglesBtnStock]() mutable { + std::thread([parent, resetTogglesButtonStock, this]() mutable { parent->keepScreenOn = true; - resetTogglesBtnStock->setEnabled(false); - resetTogglesBtnStock->setValue(tr("Resetting...")); + resetTogglesButtonStock->setEnabled(false); + resetTogglesButtonStock->setValue(tr("Resetting...")); params.putBool("DoToggleResetStock", true); - resetTogglesBtnStock->setValue(tr("Reset!")); + resetTogglesButtonStock->setValue(tr("Reset!")); util::sleep_for(2500); - resetTogglesBtnStock->setValue(tr("Rebooting...")); + resetTogglesButtonStock->setValue(tr("Rebooting...")); util::sleep_for(2500); @@ -179,5 +195,8 @@ FrogPilotUtilitiesPanel::FrogPilotUtilitiesPanel(FrogPilotSettingsWindow *parent }).detach(); } }); - addItem(resetTogglesBtnStock); + if (forceOpenDescriptions) { + resetTogglesButtonStock->showDescription(); + } + addItem(resetTogglesButtonStock); } diff --git a/frogpilot/ui/qt/offroad/vehicle_settings.cc b/frogpilot/ui/qt/offroad/vehicle_settings.cc index 1e0d2db4b..39821fd99 100644 --- a/frogpilot/ui/qt/offroad/vehicle_settings.cc +++ b/frogpilot/ui/qt/offroad/vehicle_settings.cc @@ -80,6 +80,15 @@ QStringList getCarNames(const QString &carMake, QMap &carModel } FrogPilotVehiclesPanel::FrogPilotVehiclesPanel(FrogPilotSettingsWindow *parent) : FrogPilotListWidget(parent), parent(parent) { + QJsonObject shownDescriptions = QJsonDocument::fromJson(QString::fromStdString(params.get("ShownToggleDescriptions")).toUtf8()).object(); + QString className = this->metaObject()->className(); + + if (!shownDescriptions.value(className).toBool(false)) { + forceOpenDescriptions = true; + shownDescriptions.insert(className, true); + params.put("ShownToggleDescriptions", QJsonDocument(shownDescriptions).toJson(QJsonDocument::Compact).toStdString()); + } + QStackedLayout *vehiclesLayout = new QStackedLayout(); addItem(vehiclesLayout); @@ -97,9 +106,9 @@ FrogPilotVehiclesPanel::FrogPilotVehiclesPanel(FrogPilotSettingsWindow *parent) "Volkswagen" }; - ButtonControl *selectMakeButton = new ButtonControl(tr("Select Make"), tr("SELECT")); - QObject::connect(selectMakeButton, &ButtonControl::clicked, [this, makes, selectMakeButton]() { - QString makeSelection = MultiOptionDialog::getSelection(tr("Select a Make"), makes, "", this); + ButtonControl *selectMakeButton = new ButtonControl(tr("Car Make"), tr("SELECT")); + QObject::connect(selectMakeButton, &ButtonControl::clicked, [makes, selectMakeButton, this]() { + QString makeSelection = MultiOptionDialog::getSelection(tr("Choose your car make"), makes, "", this); if (!makeSelection.isEmpty()) { params.put("CarMake", makeSelection.toStdString()); selectMakeButton->setValue(makeSelection); @@ -107,9 +116,9 @@ FrogPilotVehiclesPanel::FrogPilotVehiclesPanel(FrogPilotSettingsWindow *parent) }); settingsList->addItem(selectMakeButton); - ButtonControl *selectModelButton = new ButtonControl(tr("Select Model"), tr("SELECT")); - QObject::connect(selectModelButton, &ButtonControl::clicked, [this, selectModelButton]() { - QString modelSelection = MultiOptionDialog::getSelection(tr("Select a Model"), getCarNames(QString::fromStdString(params.get("CarMake")).toLower(), carModels), "", this); + ButtonControl *selectModelButton = new ButtonControl(tr("Car Model"), tr("SELECT")); + QObject::connect(selectModelButton, &ButtonControl::clicked, [selectModelButton, this]() { + QString modelSelection = MultiOptionDialog::getSelection(tr("Choose your car model"), getCarNames(QString::fromStdString(params.get("CarMake")).toLower(), carModels), "", this); if (!modelSelection.isEmpty()) { params.put("CarModel", carModels.value(modelSelection).toStdString()); params.put("CarModelName", modelSelection.toStdString()); @@ -118,11 +127,11 @@ FrogPilotVehiclesPanel::FrogPilotVehiclesPanel(FrogPilotSettingsWindow *parent) }); settingsList->addItem(selectModelButton); - forceFingerprint = new ParamControl("ForceFingerprint", tr("Disable Automatic Fingerprint Detection"), tr("Forces the selected fingerprint and prevents it from ever changing."), ""); + forceFingerprint = new ParamControl("ForceFingerprint", tr("Disable Automatic Fingerprint Detection"), tr("Force the selected fingerprint and prevent it from ever changing."), ""); settingsList->addItem(forceFingerprint); - disableOpenpilotLong = new ParamControl("DisableOpenpilotLongitudinal", tr("Disable openpilot Longitudinal Control"), tr("Disables openpilot longitudinal control and uses the car's stock ACC instead."), ""); - QObject::connect(disableOpenpilotLong, &ToggleControl::toggleFlipped, [this, parent](bool state) { + disableOpenpilotLong = new ParamControl("DisableOpenpilotLongitudinal", tr("Disable openpilot Longitudinal Control"), tr("Disable openpilot longitudinal and use the car's stock ACC instead."), ""); + QObject::connect(disableOpenpilotLong, &ToggleControl::toggleFlipped, [parent, this](bool state) { if (state) { if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure you want to completely disable openpilot longitudinal control?"), this)) { if (started) { @@ -144,56 +153,71 @@ FrogPilotVehiclesPanel::FrogPilotVehiclesPanel(FrogPilotSettingsWindow *parent) FrogPilotListWidget *gmList = new FrogPilotListWidget(this); FrogPilotListWidget *hkgList = new FrogPilotListWidget(this); FrogPilotListWidget *toyotaList = new FrogPilotListWidget(this); + FrogPilotListWidget *vehicleInfoList = new FrogPilotListWidget(this); ScrollView *gmPanel = new ScrollView(gmList, this); ScrollView *hkgPanel = new ScrollView(hkgList, this); ScrollView *toyotaPanel = new ScrollView(toyotaList, this); + ScrollView *vehicleInfoPanel = new ScrollView(vehicleInfoList, this); vehiclesLayout->addWidget(gmPanel); vehiclesLayout->addWidget(hkgPanel); vehiclesLayout->addWidget(toyotaPanel); + vehiclesLayout->addWidget(vehicleInfoPanel); std::vector> vehicleToggles { - {"GMToggles", tr("General Motors Settings"), tr("Settings specific to General Motors vehicles."), ""}, - {"ExperimentalGMTune", tr("FrogsGoMoo's Experimental Tune"), tr("FrogsGoMoo's experimental General Motors tune that aims to smoothen out stopping and takeoff control based on nothing but guesswork. Use at your own risk!"), ""}, - {"LongPitch", tr("Smooth Pedal Response on Hills"), tr("Smoothen the acceleration and braking when driving uphill or downhill."), ""}, - {"VoltSNG", tr("Stop and Go Hack"), tr("Force stop and go on the 2017 Chevy Volt."), ""}, + {"GMToggles", tr("General Motors Settings"), tr("FrogPilot features for General Motors vehicles."), ""}, + {"ExperimentalGMTune", tr("FrogsGoMoo's Experimental Tune"), tr("Experimental GM tune by FrogsGoMoo that attempts to smoothen stopping and takeoff control. Use at your own risk!"), ""}, + {"LongPitch", tr("Smooth Pedal Response on Hills"), tr("Smoothen acceleration and braking when driving downhill/uphill."), ""}, + {"VoltSNG", tr("Stop-and-Go Hack"), tr("Force stop-and-go on the 2017 Chevy Volt."), ""}, - {"HKGToggles", tr("Hyundai/Kia/Genesis Settings"), tr("Settings specific to Hyundai, Kia, and Genesis vehicles."), ""}, - {"NewLongAPI", tr("comma's New Longitudinal API"), tr("comma's new longitudinal control system that has shown great improvement with acceleration and braking, but has issues on some Hyundai/Kia/Genesis vehicles."), ""}, - {"TacoTuneHacks", tr("\"Taco Bell Run\" Torque Hack"), tr("The torque hack from commaโ€™s 2022 \"Taco Bell Run\" drive. Designed to improve turning at low speeds by increasing the allowed steering torque."), ""}, + {"HKGToggles", tr("Hyundai/Kia/Genesis Settings"), tr("FrogPilot features for Genesis, Hyundai, and Kia vehicles."), ""}, + {"NewLongAPI", tr("comma's New Longitudinal API"), tr("comma's new gas and brake control system that improves acceleration and braking but may cause issues on some Genesis/Hyundai/Kia vehicles."), ""}, + {"TacoTuneHacks", tr("\"Taco Bell Run\" Torque Hack"), tr("The steering torque hack from comma's 2022 \"Taco Bell Run\". Designed to increase steering torque at low speeds for left and right turns."), ""}, - {"ToyotaToggles", tr("Toyota/Lexus Settings"), tr("Settings specific to Toyota and Lexus vehicles."), ""}, - {"ToyotaDoors", tr("Automatically Lock/Unlock Doors"), tr("Automatically lock the doors when shifting into drive and unlock them when shifting into park."), ""}, - {"ClusterOffset", tr("Cluster Speed Offset"), tr("The cluster speed offset used by openpilot to match the speed displayed on the dash."), ""}, - {"FrogsGoMoosTweak", tr("FrogsGoMoo's Personal Tweaks"), tr("FrogsGoMoo's personal tweaks for quicker acceleration and smoother braking."), ""}, - {"LockDoorsTimer", tr("Lock Doors On Ignition Off After"), tr("Automatically lock the doors after the car's ignition has been turned off and no one is detected in either of the front seats."), ""}, - {"SNGHack", tr("Stop and Go Hack"), tr("Force stop and go on Toyota/Lexus vehicles without stock stop and go functionality."), ""} + {"ToyotaToggles", tr("Toyota/Lexus Settings"), tr("FrogPilot features for Lexus and Toyota vehicles."), ""}, + {"ToyotaDoors", tr("Automatically Lock/Unlock Doors"), tr("Automatically lock/unlock doors when shifting in and out of drive."), ""}, + {"ClusterOffset", tr("Dashboard Speed Offset"), tr("The speed offset openpilot uses to match the speed on the dashboard display."), ""}, + {"FrogsGoMoosTweak", tr("FrogsGoMoo's Personal Tweaks"), tr("Personal tweaks by FrogsGoMoo for quicker acceleration and smoother braking."), ""}, + {"LockDoorsTimer", tr("Lock Doors On Ignition Off After"), tr("Automatically lock the doors on ignition off when no one is detected in the front seats."), ""}, + {"SNGHack", tr("Stop-and-Go Hack"), tr("Force stop-and-go on Lexus/Toyota vehicles without stock stop-and-go functionality."), ""}, + + {"VehicleInfo", tr("Vehicle Info"), tr("Information about your vehicle in regards to openpilot support and functionality."), ""}, + {"HardwareDetected", tr("3rd Party Hardware Detected"), tr("Detected 3rd party hardware."), ""}, + {"BlindSpotSupport", tr("Blind Spot Support"), tr("Does openpilot use the vehicle's blind spot data?"), ""}, + {"PedalSupport", tr("comma Pedal Support"), tr("Does your vehicle support the \"comma pedal\"?"), ""}, + {"OpenpilotLongitudinal", tr("openpilot Longitudinal Support"), tr("Can openpilot control the vehicle's acceleration and braking?"), ""}, + {"RadarSupport", tr("Radar Support"), tr("Does openpilot use the vehicle's radar data alongside the device's camera for tracking lead vehicles?"), ""}, + {"SDSUSupport", tr("SDSU Support"), tr("Does your vehicle support \"SDSUs\"?"), ""}, + {"SNGSupport", tr("Stop-and-Go Support"), tr("Does your vehicle support stop-and-go driving?"), ""} }; for (const auto &[param, title, desc, icon] : vehicleToggles) { AbstractControl *vehicleToggle; if (param == "GMToggles") { - ButtonControl *gmToggle = new ButtonControl(title, tr("MANAGE"), desc); - QObject::connect(gmToggle, &ButtonControl::clicked, [vehiclesLayout, gmPanel]() { + ButtonControl *gmButton = new ButtonControl(title, tr("MANAGE"), desc); + QObject::connect(gmButton, &ButtonControl::clicked, [vehiclesLayout, gmPanel, this]() { + openDescriptions(forceOpenDescriptions, toggles); vehiclesLayout->setCurrentWidget(gmPanel); }); - vehicleToggle = gmToggle; + vehicleToggle = gmButton; } else if (param == "HKGToggles") { - ButtonControl *hkgToggle = new ButtonControl(title, tr("MANAGE"), desc); - QObject::connect(hkgToggle, &ButtonControl::clicked, [vehiclesLayout, hkgPanel]() { + ButtonControl *hkgButton = new ButtonControl(title, tr("MANAGE"), desc); + QObject::connect(hkgButton, &ButtonControl::clicked, [vehiclesLayout, hkgPanel, this]() { + openDescriptions(forceOpenDescriptions, toggles); vehiclesLayout->setCurrentWidget(hkgPanel); }); - vehicleToggle = hkgToggle; + vehicleToggle = hkgButton; } else if (param == "ToyotaToggles") { - ButtonControl *toyotaToggle = new ButtonControl(title, tr("MANAGE"), desc); - QObject::connect(toyotaToggle, &ButtonControl::clicked, [vehiclesLayout, toyotaPanel]() { + ButtonControl *toyotaButton = new ButtonControl(title, tr("MANAGE"), desc); + QObject::connect(toyotaButton, &ButtonControl::clicked, [vehiclesLayout, toyotaPanel, this]() { + openDescriptions(forceOpenDescriptions, toggles); vehiclesLayout->setCurrentWidget(toyotaPanel); }); - vehicleToggle = toyotaToggle; + vehicleToggle = toyotaButton; } else if (param == "ToyotaDoors") { std::vector lockToggles{"LockDoors", "UnlockDoors"}; std::vector lockToggleNames{tr("Lock"), tr("Unlock")}; @@ -207,24 +231,36 @@ FrogPilotVehiclesPanel::FrogPilotVehiclesPanel(FrogPilotSettingsWindow *parent) } else if (param == "ClusterOffset") { std::vector clusterOffsetButton{"Reset"}; FrogPilotParamValueButtonControl *clusterOffsetToggle = new FrogPilotParamValueButtonControl(param, title, desc, icon, 1.000, 1.050, "x", std::map(), 0.001, false, {}, clusterOffsetButton, false, false); - QObject::connect(clusterOffsetToggle, &FrogPilotParamValueButtonControl::buttonClicked, [this, clusterOffsetToggle]() { + QObject::connect(clusterOffsetToggle, &FrogPilotParamValueButtonControl::buttonClicked, [clusterOffsetToggle, this]() { params.putFloat("ClusterOffset", params_default.getFloat("ClusterOffset")); clusterOffsetToggle->refresh(); }); vehicleToggle = clusterOffsetToggle; + } else if (param == "VehicleInfo") { + ButtonControl *VehicleInfoButton = new ButtonControl(title, tr("VIEW"), desc); + QObject::connect(VehicleInfoButton, &ButtonControl::clicked, [vehiclesLayout, vehicleInfoPanel, this]() { + openDescriptions(forceOpenDescriptions, toggles); + vehiclesLayout->setCurrentWidget(vehicleInfoPanel); + }); + vehicleToggle = VehicleInfoButton; + } else if (vehicleInfoKeys.contains(param)) { + vehicleToggle = new LabelControl(title, "", desc); + } else { vehicleToggle = new ParamControl(param, title, desc, icon); } toggles[param] = vehicleToggle; - if (gmKeys.find(param) != gmKeys.end()) { + if (gmKeys.contains(param)) { gmList->addItem(vehicleToggle); - } else if (hkgKeys.find(param) != hkgKeys.end()) { + } else if (hkgKeys.contains(param)) { hkgList->addItem(vehicleToggle); - } else if (toyotaKeys.find(param) != toyotaKeys.end()) { + } else if (toyotaKeys.contains(param)) { toyotaList->addItem(vehicleToggle); + } else if (vehicleInfoKeys.contains(param)) { + vehicleInfoList->addItem(vehicleToggle); } else { settingsList->addItem(vehicleToggle); @@ -235,6 +271,9 @@ FrogPilotVehiclesPanel::FrogPilotVehiclesPanel(FrogPilotSettingsWindow *parent) QObject::connect(buttonControl, &ButtonControl::clicked, this, &FrogPilotVehiclesPanel::openSubPanel); } + QObject::connect(vehicleToggle, &AbstractControl::hideDescriptionEvent, [this]() { + update(); + }); QObject::connect(vehicleToggle, &AbstractControl::showDescriptionEvent, [this]() { update(); }); @@ -242,9 +281,9 @@ FrogPilotVehiclesPanel::FrogPilotVehiclesPanel(FrogPilotSettingsWindow *parent) static_cast(toggles["LockDoorsTimer"])->setWarning("Warning: openpilot can't detect if keys are still inside the car, so ensure you have a spare key to prevent accidental lockouts!"); - std::set rebootKeys = {"NewLongAPI", "TacoTuneHacks"}; + QSet rebootKeys = {"NewLongAPI", "TacoTuneHacks"}; for (const QString &key : rebootKeys) { - QObject::connect(static_cast(toggles[key]), &ToggleControl::toggleFlipped, [this, key](bool state) { + QObject::connect(static_cast(toggles[key]), &ToggleControl::toggleFlipped, [key, this](bool state) { if (started) { if (key == "TacoTuneHacks" && state) { if (FrogPilotConfirmationDialog::toggleReboot(this)) { @@ -259,18 +298,33 @@ FrogPilotVehiclesPanel::FrogPilotVehiclesPanel(FrogPilotSettingsWindow *parent) }); } - QObject::connect(uiState(), &UIState::offroadTransition, [this, selectMakeButton, selectModelButton]() { - std::thread([this, selectMakeButton, selectModelButton]() { + openDescriptions(forceOpenDescriptions, toggles); + + QObject::connect(uiState(), &UIState::offroadTransition, [selectMakeButton, selectModelButton, this]() { + std::thread([selectMakeButton, selectModelButton, this]() { selectMakeButton->setValue(QString::fromStdString(params.get("CarMake", true))); selectModelButton->setValue(QString::fromStdString(params.get(params.get("CarModelName").empty() ? "CarModel" : "CarModelName"))); }).detach(); }); - QObject::connect(parent, &FrogPilotSettingsWindow::closeSubPanel, [vehiclesLayout, vehiclesPanel] {vehiclesLayout->setCurrentWidget(vehiclesPanel);}); + QObject::connect(parent, &FrogPilotSettingsWindow::closeSubPanel, [vehiclesLayout, vehiclesPanel, this] { + if (forceOpenDescriptions) { + openDescriptions(forceOpenDescriptions, toggles); + + disableOpenpilotLong->showDescription(); + forceFingerprint->showDescription(); + } + vehiclesLayout->setCurrentWidget(vehiclesPanel); + }); QObject::connect(uiState(), &UIState::uiUpdate, this, &FrogPilotVehiclesPanel::updateState); } void FrogPilotVehiclesPanel::showEvent(QShowEvent *event) { + if (forceOpenDescriptions) { + disableOpenpilotLong->showDescription(); + forceFingerprint->showDescription(); + } + frogpilotToggleLevels = parent->frogpilotToggleLevels; hasExperimentalOpenpilotLongitudinal = parent->hasExperimentalOpenpilotLongitudinal; hasOpenpilotLongitudinal = parent->hasOpenpilotLongitudinal; @@ -285,6 +339,19 @@ void FrogPilotVehiclesPanel::showEvent(QShowEvent *event) { openpilotLongitudinalControlDisabled = parent->openpilotLongitudinalControlDisabled || params.getBool("DisableOpenpilotLongitudinal"); tuningLevel = parent->tuningLevel; + QStringList detected; + if (hasPedal) detected << "comma Pedal"; + if (parent->hasSDSU) detected << "SDSU"; + if (parent->hasZSS) detected << "ZSS"; + static_cast(toggles["HardwareDetected"])->setText(detected.isEmpty() ? tr("None") : detected.join(", ")); + + static_cast(toggles["BlindSpotSupport"])->setText(parent->hasBSM ? tr("Yes") : tr("No")); + static_cast(toggles["OpenpilotLongitudinal"])->setText(hasOpenpilotLongitudinal ? tr("Yes") : tr("No")); + static_cast(toggles["PedalSupport"])->setText(parent->canUsePedal ? tr("Yes") : tr("No")); + static_cast(toggles["RadarSupport"])->setText(parent->hasRadar ? tr("Yes") : tr("No")); + static_cast(toggles["SDSUSupport"])->setText(parent->canUseSDSU ? tr("Yes") : tr("No")); + static_cast(toggles["SNGSupport"])->setText(hasSNG ? tr("Yes") : tr("No")); + updateToggles(); } @@ -298,27 +365,29 @@ void FrogPilotVehiclesPanel::updateState(const UIState &s) { void FrogPilotVehiclesPanel::updateToggles() { for (auto &[key, toggle] : toggles) { - if (parentKeys.find(key) != parentKeys.end()) { + if (parentKeys.contains(key)) { toggle->setVisible(false); } } for (auto &[key, toggle] : toggles) { - if (parentKeys.find(key) != parentKeys.end()) { + if (parentKeys.contains(key)) { continue; } bool setVisible = tuningLevel >= frogpilotToggleLevels[key].toDouble(); - if (gmKeys.find(key) != gmKeys.end()) { + if (gmKeys.contains(key)) { setVisible &= isGM; - } else if (hkgKeys.find(key) != hkgKeys.end()) { + } else if (hkgKeys.contains(key)) { setVisible &= isHKG; - } else if (toyotaKeys.find(key) != toyotaKeys.end()) { + } else if (toyotaKeys.contains(key)) { setVisible &= isToyota; + } else if (vehicleInfoKeys.contains(key)) { + setVisible = true; } - if (longitudinalKeys.find(key) != longitudinalKeys.end()) { + if (longitudinalKeys.contains(key)) { setVisible &= hasOpenpilotLongitudinal; } @@ -341,12 +410,14 @@ void FrogPilotVehiclesPanel::updateToggles() { toggle->setVisible(setVisible); if (setVisible) { - if (gmKeys.find(key) != gmKeys.end()) { + if (gmKeys.contains(key)) { toggles["GMToggles"]->setVisible(true); - } else if (hkgKeys.find(key) != hkgKeys.end()) { + } else if (hkgKeys.contains(key)) { toggles["HKGToggles"]->setVisible(true); - } else if (toyotaKeys.find(key) != toyotaKeys.end()) { + } else if (toyotaKeys.contains(key)) { toggles["ToyotaToggles"]->setVisible(true); + } else if (vehicleInfoKeys.contains(key)) { + toggles["VehicleInfo"]->setVisible(true); } } } @@ -354,5 +425,7 @@ void FrogPilotVehiclesPanel::updateToggles() { disableOpenpilotLong->setVisible((hasOpenpilotLongitudinal || openpilotLongitudinalControlDisabled) && !hasExperimentalOpenpilotLongitudinal && tuningLevel >= frogpilotToggleLevels["DisableOpenpilotLongitudinal"].toDouble()); forceFingerprint->setVisible(tuningLevel >= frogpilotToggleLevels["ForceFingerprint"].toDouble()); + openDescriptions(forceOpenDescriptions, toggles); + update(); } diff --git a/frogpilot/ui/qt/offroad/vehicle_settings.h b/frogpilot/ui/qt/offroad/vehicle_settings.h index 77c8b17d8..403e545a2 100644 --- a/frogpilot/ui/qt/offroad/vehicle_settings.h +++ b/frogpilot/ui/qt/offroad/vehicle_settings.h @@ -1,7 +1,5 @@ #pragma once -#include - #include "frogpilot/ui/qt/offroad/frogpilot_settings.h" class FrogPilotVehiclesPanel : public FrogPilotListWidget { @@ -20,6 +18,7 @@ private: void updateState(const UIState &s); void updateToggles(); + bool forceOpenDescriptions; bool hasExperimentalOpenpilotLongitudinal; bool hasOpenpilotLongitudinal; bool hasPedal; @@ -37,22 +36,23 @@ private: std::map toggles; - std::set gmKeys = {"ExperimentalGMTune", "LongPitch", "VoltSNG"}; - std::set hkgKeys = {"NewLongAPI", "TacoTuneHacks"}; - std::set longitudinalKeys = {"ExperimentalGMTune", "FrogsGoMoosTweak", "LongPitch", "NewLongAPI", "SNGHack", "VoltSNG"}; - std::set toyotaKeys = {"ClusterOffset", "FrogsGoMoosTweak", "LockDoorsTimer", "SNGHack", "ToyotaDoors"}; + QSet gmKeys = {"ExperimentalGMTune", "LongPitch", "VoltSNG"}; + QSet hkgKeys = {"NewLongAPI", "TacoTuneHacks"}; + QSet longitudinalKeys = {"ExperimentalGMTune", "FrogsGoMoosTweak", "LongPitch", "NewLongAPI", "SNGHack", "VoltSNG"}; + QSet toyotaKeys = {"ClusterOffset", "FrogsGoMoosTweak", "LockDoorsTimer", "SNGHack", "ToyotaDoors"}; + QSet vehicleInfoKeys = {"BlindSpotSupport", "HardwareDetected", "OpenpilotLongitudinal", "PedalSupport", "RadarSupport", "SDSUSupport", "SNGSupport"}; - std::set parentKeys; + QSet parentKeys; FrogPilotSettingsWindow *parent; - QJsonObject frogpilotToggleLevels; - - QMap carModels; - ParamControl *disableOpenpilotLong; ParamControl *forceFingerprint; Params params; Params params_default{"/dev/shm/params_default"}; + + QJsonObject frogpilotToggleLevels; + + QMap carModels; }; diff --git a/frogpilot/ui/qt/offroad/visual_settings.cc b/frogpilot/ui/qt/offroad/visual_settings.cc index 43402778a..7f7be8e8f 100644 --- a/frogpilot/ui/qt/offroad/visual_settings.cc +++ b/frogpilot/ui/qt/offroad/visual_settings.cc @@ -1,6 +1,15 @@ #include "frogpilot/ui/qt/offroad/visual_settings.h" FrogPilotVisualsPanel::FrogPilotVisualsPanel(FrogPilotSettingsWindow *parent) : FrogPilotListWidget(parent), parent(parent) { + QJsonObject shownDescriptions = QJsonDocument::fromJson(QString::fromStdString(params.get("ShownToggleDescriptions")).toUtf8()).object(); + QString className = this->metaObject()->className(); + + if (!shownDescriptions.value(className).toBool(false)) { + forceOpenDescriptions = true; + shownDescriptions.insert(className, true); + params.put("ShownToggleDescriptions", QJsonDocument(shownDescriptions).toJson(QJsonDocument::Compact).toStdString()); + } + QStackedLayout *visualsLayout = new QStackedLayout(); addItem(visualsLayout); @@ -41,67 +50,66 @@ FrogPilotVisualsPanel::FrogPilotVisualsPanel(FrogPilotSettingsWindow *parent) : visualsLayout->addWidget(qualityOfLifePanel); const std::vector> visualToggles { - {"AdvancedCustomUI", tr("Advanced UI Controls"), tr("Advanced settings for fine-tuning openpilot's driving screen."), "../../frogpilot/assets/toggle_icons/icon_advanced_device.png"}, - {"HideSpeed", tr("Hide Current Speed"), tr("Hide the current speed from the driving screen."), ""}, - {"HideLeadMarker", tr("Hide Lead Marker"), tr("Hide the marker for lead vehicles from the driving screen."), ""}, - {"HideMapIcon", tr("Hide Map Settings Button"), tr("Hide the map settings button from the driving screen."), ""}, - {"HideMaxSpeed", tr("Hide Max Speed"), tr("Hide the max speed from the driving screen."), ""}, - {"HideAlerts", tr("Hide Non-Critical Alerts"), tr("Hide non-critical alerts from the driving screen."), ""}, - {"HideSpeedLimit", tr("Hide Speed Limits"), tr("Hide the speed limits from the driving screen."), ""}, - {"WheelSpeed", tr("Use Wheel Speed"), tr("Use the vehicle's wheel speed instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives."), ""}, + {"AdvancedCustomUI", tr("Advanced UI Controls"), tr("Advanced visual changes to fine-tune how the driving screen looks."), "../../frogpilot/assets/toggle_icons/icon_advanced_device.png"}, + {"HideSpeed", tr("Hide Current Speed"), tr("Hide the current speed from the driving screen."), ""}, + {"HideLeadMarker", tr("Hide Lead Marker"), tr("Hide the lead-vehicle marker from the driving screen."), ""}, + {"HideMapIcon", tr("Hide Map Settings Button"), tr("Hide the map settings button or map from the driving screen."), ""}, + {"HideMaxSpeed", tr("Hide Max Speed"), tr("Hide the max speed from the driving screen."), ""}, + {"HideAlerts", tr("Hide Non-Critical Alerts"), tr("Hide non-critical alerts from the driving screen."), ""}, + {"HideSpeedLimit", tr("Hide Speed Limits"), tr("Hide posted speed limits from the driving screen."), ""}, + {"WheelSpeed", tr("Use Wheel Speed"), tr("Use the vehicle's wheel speed instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives!"), ""}, - {"DeveloperUI", tr("Developer UI"), tr("Detailed information about openpilot's internal operations."), "../assets/offroad/icon_shell.png"}, - {"AdjacentPathMetrics", tr("Adjacent Path Metrics"), tr("Metrics displayed on top of the adjacent lanes measuring their current width."), ""}, - {"DeveloperMetrics", tr("Developer Metrics"), tr("Performance data, sensor readings, and system metrics for debugging and optimizing openpilot."), ""}, - {"BorderMetrics", tr("Border Metrics"), tr("Metrics displayed around the border of the driving screen.

Blind Spot: Turn the border red when a vehicle is detected in a blind spot
Steering Torque: Highlight the border green to red in accordance to the amount of steering torque being used
Turn Signal: Flash the border yellow when a turn signal is active"), ""}, - {"LeadInfo", tr("Lead Info"), tr("Metrics displayed under vehicle markers listing their distance and current speed."), ""}, - {"FPSCounter", tr("FPS Display"), tr("Display the Frames Per Second (FPS) at the bottom of the driving screen."), ""}, - {"NumericalTemp", tr("Numerical Temperature Gauge"), tr("Use numerical temperature readings instead of status labels in the sidebar."), ""}, - {"SidebarMetrics", tr("Sidebar Metrics"), tr("Display system information (CPU, GPU, RAM usage, IP address, device storage) in the sidebar."), ""}, - {"UseSI", tr("Use International System of Units"), tr("Display measurements using the International System of Units (SI) standard."), ""}, - {"DeveloperSidebar", tr("Developer Sidebar"), tr("Display debugging info and metrics in a dedicated sidebar on the right side of the screen."), ""}, - {"DeveloperSidebarMetric1", tr("Metric #1"), tr("Metric to display in the first metric in the \"Developer Sidebar\"."), ""}, - {"DeveloperSidebarMetric2", tr("Metric #2"), tr("Metric to display in the second metric in the \"Developer Sidebar\"."), ""}, - {"DeveloperSidebarMetric3", tr("Metric #3"), tr("Metric to display in the third metric in the \"Developer Sidebar\"."), ""}, - {"DeveloperSidebarMetric4", tr("Metric #4"), tr("Metric to display in the fourth metric in the \"Developer Sidebar\"."), ""}, - {"DeveloperSidebarMetric5", tr("Metric #5"), tr("Metric to display in the fifth metric in the \"Developer Sidebar\"."), ""}, - {"DeveloperSidebarMetric6", tr("Metric #6"), tr("Metric to display in the sixth metric in the \"Developer Sidebar\"."), ""}, - {"DeveloperSidebarMetric7", tr("Metric #7"), tr("Metric to display in the seventh metric in the \"Developer Sidebar\"."), ""}, - {"DeveloperWidgets", tr("Developer Widgets"), tr("Overlays displaying debugging visuals, internal states, and model predictions on the driving screen."), ""}, - {"AdjacentLeadsUI", tr("Adjacent Leads Tracking"), tr("Adjacent leads detected by the car's radar to the left and right of the current driving path."), ""}, - {"ShowStoppingPoint", tr("Model Stopping Point"), tr("Display an image on the screen where openpilot is wanting to stop."), ""}, - {"RadarTracksUI", tr("Radar Tracks"), tr("Display all of the radar points produced by the car's radar."), ""}, + {"DeveloperUI", tr("Developer UI"), tr("Detailed information about openpilot's internal operations."), "../assets/offroad/icon_shell.png"}, + {"AdjacentPathMetrics", tr("Adjacent Path Metrics"), tr("Show the width of the adjacent lanes."), ""}, + {"DeveloperMetrics", tr("Developer Metrics"), tr("Performance data, sensor readings, and system metrics for debugging and optimizing openpilot."), ""}, + {"BorderMetrics", tr("Border Metrics"), tr("Show statuses along the border of the driving screen.

Blind Spot: The border turns red when a vehicle is in a blind spot
Steering Torque: The border goes from green to red according to how much steering torque is being used
Turn Signal: The border flashes yellow when a turn signal is on"), ""}, + {"LeadInfo", tr("Lead Info"), tr("Show each tracked vehicle's distance and speed below its marker."), ""}, + {"FPSCounter", tr("FPS Display"), tr("Show the frames per second (FPS) at the bottom of the driving screen."), ""}, + {"NumericalTemp", tr("Numerical Temperature Gauge"), tr("Show a numerical temperature in the sidebar instead of the status labels."), ""}, + {"SidebarMetrics", tr("Sidebar Metrics"), tr("Display system information (CPU, GPU, RAM usage, IP address, device storage) in the sidebar."), ""}, + {"UseSI", tr("Use International System of Units"), tr("Display measurements using the \"International System of Units\" (SI) standard."), ""}, + {"DeveloperSidebar", tr("Developer Sidebar"), tr("Display debugging info and metrics in a dedicated sidebar on the right side of the screen."), ""}, + {"DeveloperSidebarMetric1", tr("Metric #1"), tr("Select the metric shown in the first \"Developer Sidebar\" widget."), ""}, + {"DeveloperSidebarMetric2", tr("Metric #2"), tr("Select the metric shown in the second \"Developer Sidebar\" widget."), ""}, + {"DeveloperSidebarMetric3", tr("Metric #3"), tr("Select the metric shown in the third \"Developer Sidebar\" widget."), ""}, + {"DeveloperSidebarMetric4", tr("Metric #4"), tr("Select the metric shown in the fourth \"Developer Sidebar\" widget."), ""}, + {"DeveloperSidebarMetric5", tr("Metric #5"), tr("Select the metric shown in the fifth \"Developer Sidebar\" widget."), ""}, + {"DeveloperSidebarMetric6", tr("Metric #6"), tr("Select the metric shown in the sixth \"Developer Sidebar\" widget."), ""}, + {"DeveloperSidebarMetric7", tr("Metric #7"), tr("Select the metric shown in the seventh \"Developer Sidebar\" widget."), ""}, + {"DeveloperWidgets", tr("Developer Widgets"), tr("Overlays for debugging visuals, internal states, and model predictions on the driving screen."), ""}, + {"AdjacentLeadsUI", tr("Adjacent Leads Tracking"), tr("Display adjacent leads detected by the car's radar to the left and right of the current driving path."), ""}, + {"ShowStoppingPoint", tr("Model Stopping Point"), tr("Show a stop-sign marker where the model intends to stop."), ""}, + {"RadarTracksUI", tr("Radar Tracks"), tr("Display all radar points produced by the car's radar."), ""}, - {"CustomUI", tr("Driving Screen Widgets"), tr("Custom FrogPilot widgets for the driving screen."), "../assets/offroad/icon_road.png"}, - {"AccelerationPath", tr("Acceleration Path"), tr("Colorize the driving path based on openpilot's current desired acceleration and deceleration rate."), ""}, - {"AdjacentPath", tr("Adjacent Lanes"), tr("Driving paths for the left and right adjacent lanes."), ""}, - {"BlindSpotPath", tr("Blind Spot Path"), tr("Display a red driving path for detected vehicles in the corresponding lane's blind spot."), ""}, - {"Compass", tr("Compass"), tr("A compass to show the current driving direction."), ""}, - {"OnroadDistanceButton", tr("Driving Personality Button"), tr("Display the current driving personality on the screen. Tap to switch personalities, or long press for 0.5 seconds to change the current state of Experimental Mode, or 2.5 seconds for Traffic Mode."), ""}, - {"PedalsOnUI", tr("Gas / Brake Pedal Indicators"), tr("Pedals to indicate when either of the pedals are currently being used.

Dynamic: The pedals change in opacity in accordance to how much openpilot is accelerating or decelerating
Static: The pedals are displayed with full opacity when active, and dimmed when not in use"), ""}, - {"RotatingWheel", tr("Rotating Steering Wheel"), tr("Rotate the steering wheel alongside the vehicle's physical steering wheel."), ""}, + {"CustomUI", tr("Driving Screen Widgets"), tr("Custom FrogPilot widgets for the driving screen."), "../assets/offroad/icon_road.png"}, + {"AccelerationPath", tr("Acceleration Path"), tr("Color the driving path by planned acceleration and braking."), ""}, + {"AdjacentPath", tr("Adjacent Lanes"), tr("Show the driving paths for the left and right lanes."), ""}, + {"BlindSpotPath", tr("Blind Spot Path"), tr("Show a red path when a vehicle is in that lane's blind spot."), ""}, + {"Compass", tr("Compass"), tr("Show the current driving direction with a simple on-screen compass."), ""}, + {"OnroadDistanceButton", tr("Driving Personality Button"), tr("Control and view the current driving personality via a driving screen widget."), ""}, + {"PedalsOnUI", tr("Gas / Brake Pedal Indicators"), tr("On-screen gas and brake indicators.

Dynamic: Opacity changes according to how much openpilot is accelerating or braking
Static: Full when active, dim when not"), ""}, + {"RotatingWheel", tr("Rotating Steering Wheel"), tr("Rotate the driving screen wheel with the physical steering wheel."), ""}, - {"ModelUI", tr("Model UI"), tr("Model visualizations on the driving screen for the driving path, lane lines, path edges, and road edges."), "../../frogpilot/assets/toggle_icons/icon_vtc.png"}, - {"DynamicPathWidth", tr("Dynamic Path Width"), tr("Adjust the width of the driving path based on the current engagement state.

Fully engaged: 100%
Always On Lateral: 75%
Fully disengaged: 50%"), ""}, - {"LaneLinesWidth", tr("Lane Lines Width"), tr("The thickness of the lane lines on the driving screen.

Default matches the MUTCD lane line width standard of 4 inches."), ""}, - {"PathEdgeWidth", tr("Path Edges Width"), tr("The width of the edges of the driving path that represent different driving modes and statuses.

Default is 20% of the total path width.

Color Guide:

- Blue: Navigation
- Light Blue: Always On Lateral
- Green: Default
- Orange: Experimental Mode
- Red: Traffic Mode
- Yellow: Conditional Experimental Mode overridden"), ""}, - {"PathWidth", tr("Path Width"), tr("The width of the driving path on the driving screen.

Default (6.1 feet) matches the width of a 2019 Lexus ES 350."), ""}, - {"RoadEdgesWidth", tr("Road Edges Width"), tr("The thickness of the road edges on the driving screen.

Default matches half of the MUTCD lane line width standard of 4 inches."), ""}, - {"UnlimitedLength", tr("\"Unlimited\" Road UI"), tr("Extend the display of the driving path, lane lines, and road edges as far as the model can see."), ""}, + {"ModelUI", tr("Model UI"), tr("Model visualizations for the driving path, lane lines, path edges, and road edges."), "../../frogpilot/assets/toggle_icons/icon_vtc.png"}, + {"DynamicPathWidth", tr("Dynamic Path Width"), tr("Change the path width based on engagement.

Fully Engaged: 100%
Always On Lateral: 75%
Disengaged: 50%"), ""}, + {"LaneLinesWidth", tr("Lane Lines Width"), tr("Set the lane-line thickness.

Default matches the MUTCD lane-line width standard of 4 inches."), ""}, + {"PathEdgeWidth", tr("Path Edges Width"), tr("Set the driving-path edge width that represents different driving modes and statuses.

Default is 20% of the total path width.

Color Guide:

- Blue: Navigation
- Light Blue: Always On Lateral
- Green: Default
- Orange: Experimental Mode
- Red: Traffic Mode
- Yellow: Conditional Experimental Mode overridden"), ""}, + {"PathWidth", tr("Path Width"), tr("Set the driving-path width.

Default (6.1 feet) matches the width of a 2019 Lexus ES 350."), ""}, + {"RoadEdgesWidth", tr("Road Edges Width"), tr("Set the road-edge thickness.

Default matches half of the MUTCD lane-line width standard of 4 inches."), ""}, + {"UnlimitedLength", tr("\"Unlimited\" Road UI"), tr("Extend the length of the driving path, lane lines, and road edges for as far as the model can see."), ""}, - {"NavigationUI", tr("Navigation Widgets"), tr("Map style tweaks, speed limits, and other navigation related widgets."), "../../frogpilot/assets/toggle_icons/icon_map.png"}, - {"BigMap", tr("Larger Map Display"), tr("Increase the size of the map for easier navigation readings."), ""}, - {"MapStyle", tr("Map Style"), tr("The map style used for Navigate on openpilot (NOO):

Stock: Default comma.ai style
Mapbox Streets: Standard street-focused view
Mapbox Outdoors: Emphasizes outdoor and terrain features
Mapbox Light: Minimalist, bright theme
Mapbox Dark: Minimalist, dark theme
Mapbox Navigation Day: Optimized for daytime navigation
Mapbox Navigation Night: Optimized for nighttime navigation
Mapbox Satellite: Satellite imagery only
Mapbox Satellite Streets: Hybrid satellite imagery with street labels
Mapbox Traffic Night: Dark theme emphasizing traffic conditions
mike854's (Satellite hybrid): Customized hybrid satellite view"), ""}, - {"RoadNameUI", tr("Road Name"), tr("Display the road name at the bottom of the driving screen using data from OpenStreetMap."), ""}, - {"ShowSpeedLimits", tr("Show Speed Limits"), tr("Display speed limits in the top left corner of the driving screen. Uses data from your car's dashboard (if supported) and data from OpenStreetMaps."), ""}, - {"SLCMapboxFiller", tr("Show Speed Limits from Mapbox"), tr("Use Mapbox speed limit data when no other sources are available."), ""}, - {"UseVienna", tr("Use Vienna-Style Speed Signs"), tr("Force Vienna-style (EU) speed limit signs instead of MUTCD (US)."), ""}, + {"NavigationUI", tr("Navigation Widgets"), tr("Map style, speed limits, and other navigation widgets."), "../../frogpilot/assets/toggle_icons/icon_map.png"}, + {"BigMap", tr("Larger Map Display"), tr("Increase the map size for easier navigation readings."), ""}, + {"MapStyle", tr("Map Style"), tr("Select the map style for \"Navigate on openpilot\" (NOO):

Stock openpilot: Default comma.ai style
FrogPilot: Official FrogPilot map style
Mapbox Streets: Standard street-focused view
Mapbox Outdoors: Emphasizes outdoor and terrain features
Mapbox Light: Minimalist, bright theme
Mapbox Dark: Minimalist, dark theme
Mapbox Navigation Day: Optimized for daytime navigation
Mapbox Navigation Night: Optimized for nighttime navigation
Mapbox Satellite: Satellite imagery only
Mapbox Satellite Streets: Hybrid satellite imagery with street labels
Mapbox Traffic Night: Dark theme emphasizing traffic conditions
Mike's Personalized Style: Customized hybrid satellite view"), ""}, + {"RoadNameUI", tr("Road Name"), tr("Display the road name at the bottom of the driving screen using data from \"OpenStreetMap (OSM)\"."), ""}, + {"ShowSpeedLimits", tr("Show Speed Limits"), tr("Show speed limits in the top-left corner of the driving screen. Uses data from the car's dashboard (if supported) and \"OpenStreetMap (OSM)\"."), ""}, + {"SLCMapboxFiller", tr("Show Speed Limits from Mapbox"), tr("Use Mapbox speed-limit data when no other source is available."), ""}, + {"UseVienna", tr("Use Vienna-Style Speed Signs"), tr("Show Vienna-style (EU) speed-limit signs instead of MUTCD (US)."), ""}, - {"QOLVisuals", tr("Quality of Life"), tr("Visual features to improve your overall openpilot experience."), "../../frogpilot/assets/toggle_icons/icon_quality_of_life.png"}, - {"CameraView", tr("Camera View"), tr("The active camera view display. This is purely a visual change and doesn't impact how openpilot drives!"), ""}, - {"DriverCamera", tr("Show Driver Camera When In Reverse"), tr("Display the driver camera feed when the vehicle is in reverse."), ""}, - {"StandbyMode", tr("Standby Mode"), tr("Turn the screen off when driving and automatically wake it up if engagement state changes or important alerts occur."), ""}, - {"StoppedTimer", tr("Stopped Timer"), tr("Replace the current speed with a timer when stopped to indicate how long the vehicle has been stopped for."), ""} + {"QOLVisuals", tr("Quality of Life"), tr("Miscellaneous visual changes to fine-tune how the driving screen looks."), "../../frogpilot/assets/toggle_icons/icon_quality_of_life.png"}, + {"CameraView", tr("Camera View"), tr("Select the active camera view. This is purely a visual change and doesn't impact how openpilot drives!"), ""}, + {"DriverCamera", tr("Show Driver Camera When In Reverse"), tr("Show the driver camera feed when the vehicle is in reverse."), ""}, + {"StoppedTimer", tr("Stopped Timer"), tr("Show a timer when stopped in place of the current speed to indicate how long the vehicle has been stopped."), ""} }; for (const auto &[param, title, desc, icon] : visualToggles) { @@ -113,6 +121,10 @@ FrogPilotVisualsPanel::FrogPilotVisualsPanel(FrogPilotSettingsWindow *parent) : visualsLayout->setCurrentWidget(advancedCustomPanel); }); visualToggle = advancedCustomUIToggle; + } else if (param == "HideMapIcon") { + std::vector mapIconToggles{"HideMap"}; + std::vector mapIconToggleNames{tr("Hide Map")}; + visualToggle = new FrogPilotButtonToggleControl(param, title, desc, icon, mapIconToggles, mapIconToggleNames); } else if (param == "DeveloperUI") { FrogPilotManageControl *developerUIToggle = new FrogPilotManageControl(param, title, desc, icon); @@ -122,7 +134,7 @@ FrogPilotVisualsPanel::FrogPilotVisualsPanel(FrogPilotSettingsWindow *parent) : visualToggle = developerUIToggle; } else if (param == "DeveloperMetrics") { FrogPilotManageControl *developerMetricsToggle = new FrogPilotManageControl(param, title, desc, icon); - QObject::connect(developerMetricsToggle, &FrogPilotManageControl::manageButtonClicked, [this, visualsLayout, developerMetricPanel]() { + QObject::connect(developerMetricsToggle, &FrogPilotManageControl::manageButtonClicked, [visualsLayout, developerMetricPanel, this]() { openSubSubPanel(); visualsLayout->setCurrentWidget(developerMetricPanel); @@ -133,8 +145,8 @@ FrogPilotVisualsPanel::FrogPilotVisualsPanel(FrogPilotSettingsWindow *parent) : } else if (param == "BorderMetrics") { std::vector borderToggles{"BlindSpotMetrics", "ShowSteering", "SignalMetrics"}; std::vector borderToggleNames{tr("Blind Spot"), tr("Steering Torque"), tr("Turn Signal")}; - borderMetricsBtn = new FrogPilotButtonToggleControl(param, title, desc, icon, borderToggles, borderToggleNames); - visualToggle = borderMetricsBtn; + borderMetricsButton = new FrogPilotButtonToggleControl(param, title, desc, icon, borderToggles, borderToggleNames); + visualToggle = borderMetricsButton; } else if (param == "NumericalTemp") { std::vector temperatureToggles{"Fahrenheit"}; std::vector temperatureToggleNames{tr("Fahrenheit")}; @@ -176,7 +188,7 @@ FrogPilotVisualsPanel::FrogPilotVisualsPanel(FrogPilotSettingsWindow *parent) : visualToggle = sidebarMetricsToggle; } else if (param == "DeveloperSidebar") { FrogPilotManageControl *developerSidebarToggle = new FrogPilotManageControl(param, title, desc, icon); - QObject::connect(developerSidebarToggle, &FrogPilotManageControl::manageButtonClicked, [this, visualsLayout, developerSidebarPanel]() { + QObject::connect(developerSidebarToggle, &FrogPilotManageControl::manageButtonClicked, [visualsLayout, developerSidebarPanel, this]() { openSubSubPanel(); visualsLayout->setCurrentWidget(developerSidebarPanel); @@ -184,7 +196,7 @@ FrogPilotVisualsPanel::FrogPilotVisualsPanel(FrogPilotSettingsWindow *parent) : developerUIOpen = true; }); visualToggle = developerSidebarToggle; - } else if (developerSidebarKeys.find(param) != developerSidebarKeys.end()) { + } else if (developerSidebarKeys.contains(param)) { QMap developerSidebarMetricOptions { {0, tr("None")}, {1, tr("Acceleration: Current")}, @@ -205,7 +217,7 @@ FrogPilotVisualsPanel::FrogPilotVisualsPanel(FrogPilotSettingsWindow *parent) : }; ButtonControl *metricToggle = new ButtonControl(title, tr("SELECT"), desc); - QObject::connect(metricToggle, &ButtonControl::clicked, [this, metricToggle, key = param, developerSidebarMetricOptions]() mutable { + QObject::connect(metricToggle, &ButtonControl::clicked, [metricToggle, key = param, developerSidebarMetricOptions, this]() mutable { QString current = developerSidebarMetricOptions.value(params.getInt(key.toStdString()), tr("None")); QString selection = MultiOptionDialog::getSelection(tr("Select a metric to display"), developerSidebarMetricOptions.values(), current, this); @@ -221,7 +233,7 @@ FrogPilotVisualsPanel::FrogPilotVisualsPanel(FrogPilotSettingsWindow *parent) : visualToggle = metricToggle; } else if (param == "DeveloperWidgets") { FrogPilotManageControl *developerWidgetsToggle = new FrogPilotManageControl(param, title, desc, icon); - QObject::connect(developerWidgetsToggle, &FrogPilotManageControl::manageButtonClicked, [this, visualsLayout, developerWidgetPanel]() { + QObject::connect(developerWidgetsToggle, &FrogPilotManageControl::manageButtonClicked, [visualsLayout, developerWidgetPanel, this]() { openSubSubPanel(); visualsLayout->setCurrentWidget(developerWidgetPanel); @@ -283,7 +295,7 @@ FrogPilotVisualsPanel::FrogPilotVisualsPanel(FrogPilotSettingsWindow *parent) : } else if (param == "MapStyle") { QMap styleMap { {0, tr("Stock openpilot")}, - {1, tr("FrogsGoMoo's Personalized Style")}, + {1, tr("FrogPilot")}, {2, tr("Mapbox Streets")}, {3, tr("Mapbox Outdoors")}, {4, tr("Mapbox Light")}, @@ -297,7 +309,7 @@ FrogPilotVisualsPanel::FrogPilotVisualsPanel(FrogPilotSettingsWindow *parent) : }; ButtonControl *mapStyleButton = new ButtonControl(title, tr("SELECT"), desc); - QObject::connect(mapStyleButton, &ButtonControl::clicked, [this, mapStyleButton, styleMap]() { + QObject::connect(mapStyleButton, &ButtonControl::clicked, [mapStyleButton, styleMap, this]() { QString selection = MultiOptionDialog::getSelection(tr("Select a map style"), styleMap.values(), "", this); if (!selection.isEmpty()) { int selectedStyle = styleMap.key(selection); @@ -329,23 +341,23 @@ FrogPilotVisualsPanel::FrogPilotVisualsPanel(FrogPilotSettingsWindow *parent) : toggles[param] = visualToggle; - if (advancedCustomOnroadUIKeys.find(param) != advancedCustomOnroadUIKeys.end()) { + if (advancedCustomOnroadUIKeys.contains(param)) { advancedCustomList->addItem(visualToggle); - } else if (customOnroadUIKeys.find(param) != customOnroadUIKeys.end()) { + } else if (customOnroadUIKeys.contains(param)) { customUIList->addItem(visualToggle); - } else if (developerMetricKeys.find(param) != developerMetricKeys.end()) { + } else if (developerMetricKeys.contains(param)) { developerMetricList->addItem(visualToggle); - } else if (developerSidebarKeys.find(param) != developerSidebarKeys.end()) { + } else if (developerSidebarKeys.contains(param)) { developerSidebarList->addItem(visualToggle); - } else if (developerUIKeys.find(param) != developerUIKeys.end()) { + } else if (developerUIKeys.contains(param)) { developerUIList->addItem(visualToggle); - } else if (developerWidgetKeys.find(param) != developerWidgetKeys.end()) { + } else if (developerWidgetKeys.contains(param)) { developerWidgetList->addItem(visualToggle); - } else if (modelUIKeys.find(param) != modelUIKeys.end()) { + } else if (modelUIKeys.contains(param)) { modelUIList->addItem(visualToggle); - } else if (navigationUIKeys.find(param) != navigationUIKeys.end()) { + } else if (navigationUIKeys.contains(param)) { navigationUIList->addItem(visualToggle); - } else if (qualityOfLifeKeys.find(param) != qualityOfLifeKeys.end()) { + } else if (qualityOfLifeKeys.contains(param)) { qualityOfLifeList->addItem(visualToggle); } else { visualsList->addItem(visualToggle); @@ -354,21 +366,34 @@ FrogPilotVisualsPanel::FrogPilotVisualsPanel(FrogPilotSettingsWindow *parent) : } if (FrogPilotManageControl *frogPilotManageToggle = qobject_cast(visualToggle)) { - QObject::connect(frogPilotManageToggle, &FrogPilotManageControl::manageButtonClicked, this, &FrogPilotVisualsPanel::openSubPanel); + QObject::connect(frogPilotManageToggle, &FrogPilotManageControl::manageButtonClicked, [this]() { + emit openSubPanel(); + openDescriptions(forceOpenDescriptions, toggles); + }); } + QObject::connect(visualToggle, &AbstractControl::hideDescriptionEvent, [this]() { + update(); + }); QObject::connect(visualToggle, &AbstractControl::showDescriptionEvent, [this]() { update(); }); } - std::set forceUpdateKeys = {"ShowSpeedLimits"}; + QSet forceUpdateKeys = {"HideLeadMarker", "ShowSpeedLimits"}; for (const QString &key : forceUpdateKeys) { QObject::connect(static_cast(toggles[key]), &ToggleControl::toggleFlipped, this, &FrogPilotVisualsPanel::updateToggles); } - QObject::connect(parent, &FrogPilotSettingsWindow::closeSubPanel, [visualsLayout, visualsPanel] {visualsLayout->setCurrentWidget(visualsPanel);}); - QObject::connect(parent, &FrogPilotSettingsWindow::closeSubSubPanel, [this, visualsLayout, developerUIPanel]() { + openDescriptions(forceOpenDescriptions, toggles); + + QObject::connect(parent, &FrogPilotSettingsWindow::closeSubPanel, [visualsLayout, visualsPanel, this] { + openDescriptions(forceOpenDescriptions, toggles); + visualsLayout->setCurrentWidget(visualsPanel); + }); + QObject::connect(parent, &FrogPilotSettingsWindow::closeSubSubPanel, [visualsLayout, developerUIPanel, this]() { + openDescriptions(forceOpenDescriptions, toggles); + if (developerUIOpen) { visualsLayout->setCurrentWidget(developerUIPanel); @@ -439,18 +464,18 @@ void FrogPilotVisualsPanel::updateMetric(bool metric, bool bootRun) { FrogPilotParamValueControl *roadEdgesWidthToggle = static_cast(toggles["RoadEdgesWidth"]); if (metric) { - laneLinesWidthToggle->setDescription(tr("The thickness of the lane lines on the driving screen.

Default matches the MUTCD lane line width standard of 10 centimeters.")); - pathWidthToggle->setDescription(tr("The width of the driving path on the driving screen.

Default (1.9 meters) matches the width of a 2019 Lexus ES 350.")); - roadEdgesWidthToggle->setDescription(tr("The thickness of the road edges on the driving screen.

Default matches half of the MUTCD lane line width standard of 10 centimeters.")); + laneLinesWidthToggle->setDescription(tr("Set the lane-line thickness.

Default matches the MUTCD lane-line width standard of 10 centimeters.")); + pathWidthToggle->setDescription(tr("Set the driving-path width.

Default (1.9 meters) matches the width of a 2019 Lexus ES 350.")); + roadEdgesWidthToggle->setDescription(tr("Set the road-edge thickness.

Default matches half of the MUTCD lane-line width standard of 10 centimeters.")); laneLinesWidthToggle->updateControl(0, 60, metricSmallDistanceLabels); roadEdgesWidthToggle->updateControl(0, 60, metricSmallDistanceLabels); pathWidthToggle->updateControl(0, 3, metricDistanceLabels); } else { - laneLinesWidthToggle->setDescription(tr("The thickness of the lane lines on the driving screen.

Default matches the MUTCD lane line width standard of 4 inches.")); - pathWidthToggle->setDescription(tr("The width of the driving path on the driving screen.

Default (6.1 feet) matches the width of a 2019 Lexus ES 350.")); - roadEdgesWidthToggle->setDescription(tr("The thickness of the road edges on the driving screen.

Default matches half of the MUTCD lane line width standard of 4 inches.")); + laneLinesWidthToggle->setDescription(tr("Set the lane-line thickness.

Default matches the MUTCD lane-line width standard of 4 inches.")); + pathWidthToggle->setDescription(tr("Set the driving-path width.

Default (6.1 feet) matches the width of a 2019 Lexus ES 350.")); + roadEdgesWidthToggle->setDescription(tr("Set the road-edge thickness.

Default matches half of the MUTCD lane-line width standard of 4 inches.")); laneLinesWidthToggle->updateControl(0, 24, imperialSmallDistanceLabels); roadEdgesWidthToggle->updateControl(0, 24, imperialSmallDistanceLabels); @@ -461,13 +486,13 @@ void FrogPilotVisualsPanel::updateMetric(bool metric, bool bootRun) { void FrogPilotVisualsPanel::updateToggles() { for (auto &[key, toggle] : toggles) { - if (parentKeys.find(key) != parentKeys.end()) { + if (parentKeys.contains(key)) { toggle->setVisible(false); } } for (auto &[key, toggle] : toggles) { - if (parentKeys.find(key) != parentKeys.end()) { + if (parentKeys.contains(key)) { continue; } @@ -521,27 +546,29 @@ void FrogPilotVisualsPanel::updateToggles() { toggle->setVisible(setVisible); if (setVisible) { - if (advancedCustomOnroadUIKeys.find(key) != advancedCustomOnroadUIKeys.end()) { + if (advancedCustomOnroadUIKeys.contains(key)) { toggles["AdvancedCustomUI"]->setVisible(true); - } else if (customOnroadUIKeys.find(key) != customOnroadUIKeys.end()) { + } else if (customOnroadUIKeys.contains(key)) { toggles["CustomUI"]->setVisible(true); - } else if (developerMetricKeys.find(key) != developerMetricKeys.end()) { + } else if (developerMetricKeys.contains(key)) { toggles["DeveloperMetrics"]->setVisible(true); - } else if (developerUIKeys.find(key) != developerUIKeys.end()) { + } else if (developerUIKeys.contains(key)) { toggles["DeveloperUI"]->setVisible(true); - } else if (developerWidgetKeys.find(key) != developerWidgetKeys.end()) { + } else if (developerWidgetKeys.contains(key)) { toggles["DeveloperWidgets"]->setVisible(true); - } else if (modelUIKeys.find(key) != modelUIKeys.end()) { + } else if (modelUIKeys.contains(key)) { toggles["ModelUI"]->setVisible(true); - } else if (navigationUIKeys.find(key) != navigationUIKeys.end()) { + } else if (navigationUIKeys.contains(key)) { toggles["NavigationUI"]->setVisible(true); - } else if (qualityOfLifeKeys.find(key) != qualityOfLifeKeys.end()) { + } else if (qualityOfLifeKeys.contains(key)) { toggles["QOLVisuals"]->setVisible(true); } } } - borderMetricsBtn->setVisibleButton(0, hasBSM); + borderMetricsButton->setVisibleButton(0, hasBSM); + + openDescriptions(forceOpenDescriptions, toggles); update(); } diff --git a/frogpilot/ui/qt/offroad/visual_settings.h b/frogpilot/ui/qt/offroad/visual_settings.h index cb7d999f2..830db6b5a 100644 --- a/frogpilot/ui/qt/offroad/visual_settings.h +++ b/frogpilot/ui/qt/offroad/visual_settings.h @@ -1,7 +1,5 @@ #pragma once -#include - #include "frogpilot/ui/qt/offroad/frogpilot_settings.h" class FrogPilotVisualsPanel : public FrogPilotListWidget { @@ -22,6 +20,7 @@ private: void updateToggles(); bool developerUIOpen; + bool forceOpenDescriptions; bool hasAutoTune; bool hasBSM; bool hasOpenpilotLongitudinal; @@ -31,23 +30,23 @@ private: std::map toggles; - std::set advancedCustomOnroadUIKeys = {"HideAlerts", "HideLeadMarker", "HideMapIcon", "HideMaxSpeed", "HideSpeed", "HideSpeedLimit", "WheelSpeed"}; - std::set customOnroadUIKeys = {"AccelerationPath", "AdjacentPath", "BlindSpotPath", "Compass", "OnroadDistanceButton", "PedalsOnUI", "RotatingWheel"}; - std::set developerMetricKeys = {"AdjacentPathMetrics", "BorderMetrics", "FPSCounter", "LeadInfo", "NumericalTemp", "SidebarMetrics", "UseSI"}; - std::set developerSidebarKeys = {"DeveloperSidebarMetric1", "DeveloperSidebarMetric2", "DeveloperSidebarMetric3", "DeveloperSidebarMetric4", "DeveloperSidebarMetric5", "DeveloperSidebarMetric6", "DeveloperSidebarMetric7"}; - std::set developerUIKeys = {"DeveloperMetrics", "DeveloperSidebar", "DeveloperWidgets"}; - std::set developerWidgetKeys = {"AdjacentLeadsUI", "RadarTracksUI", "ShowStoppingPoint"}; - std::set modelUIKeys = {"DynamicPathWidth", "LaneLinesWidth", "PathEdgeWidth", "PathWidth", "RoadEdgesWidth", "UnlimitedLength"}; - std::set navigationUIKeys = {"BigMap", "MapStyle", "RoadNameUI", "ShowSpeedLimits", "SLCMapboxFiller", "UseVienna"}; - std::set qualityOfLifeKeys = {"CameraView", "DriverCamera", "StandbyMode", "StoppedTimer"}; + QSet advancedCustomOnroadUIKeys = {"HideAlerts", "HideLeadMarker", "HideMapIcon", "HideMaxSpeed", "HideSpeed", "HideSpeedLimit", "WheelSpeed"}; + QSet customOnroadUIKeys = {"AccelerationPath", "AdjacentPath", "BlindSpotPath", "Compass", "OnroadDistanceButton", "PedalsOnUI", "RotatingWheel"}; + QSet developerMetricKeys = {"AdjacentPathMetrics", "BorderMetrics", "FPSCounter", "LeadInfo", "NumericalTemp", "SidebarMetrics", "UseSI"}; + QSet developerSidebarKeys = {"DeveloperSidebarMetric1", "DeveloperSidebarMetric2", "DeveloperSidebarMetric3", "DeveloperSidebarMetric4", "DeveloperSidebarMetric5", "DeveloperSidebarMetric6", "DeveloperSidebarMetric7"}; + QSet developerUIKeys = {"DeveloperMetrics", "DeveloperSidebar", "DeveloperWidgets"}; + QSet developerWidgetKeys = {"AdjacentLeadsUI", "RadarTracksUI", "ShowStoppingPoint"}; + QSet modelUIKeys = {"DynamicPathWidth", "LaneLinesWidth", "PathEdgeWidth", "PathWidth", "RoadEdgesWidth", "UnlimitedLength"}; + QSet navigationUIKeys = {"BigMap", "MapStyle", "RoadNameUI", "ShowSpeedLimits", "SLCMapboxFiller", "UseVienna"}; + QSet qualityOfLifeKeys = {"CameraView", "DriverCamera", "StoppedTimer"}; - std::set parentKeys; + QSet parentKeys; std::vector sidebarMetricsToggles; FrogPilotButtonsControl *sidebarMetricsToggle; - FrogPilotButtonToggleControl *borderMetricsBtn; + FrogPilotButtonToggleControl *borderMetricsButton; FrogPilotSettingsWindow *parent; diff --git a/frogpilot/ui/qt/offroad/wheel_settings.cc b/frogpilot/ui/qt/offroad/wheel_settings.cc index e9eacf2d0..9d43e1167 100644 --- a/frogpilot/ui/qt/offroad/wheel_settings.cc +++ b/frogpilot/ui/qt/offroad/wheel_settings.cc @@ -1,29 +1,38 @@ #include "frogpilot/ui/qt/offroad/wheel_settings.h" FrogPilotWheelPanel::FrogPilotWheelPanel(FrogPilotSettingsWindow *parent) : FrogPilotListWidget(parent), parent(parent) { + QJsonObject shownDescriptions = QJsonDocument::fromJson(QString::fromStdString(params.get("ShownToggleDescriptions")).toUtf8()).object(); + QString className = this->metaObject()->className(); + + if (!shownDescriptions.value(className).toBool(false)) { + forceOpenDescriptions = true; + shownDescriptions.insert(className, true); + params.put("ShownToggleDescriptions", QJsonDocument(shownDescriptions).toJson(QJsonDocument::Compact).toStdString()); + } + const std::vector> wheelToggles { - {"DistanceButtonControl", tr("Distance Button"), tr("The action for a short press of the Distance button."), "../../frogpilot/assets/toggle_icons/icon_mute.png"}, - {"LongDistanceButtonControl", tr("Distance Button (Long Press)"), tr("The action for a 0.5+ second press of the Distance button."), "../../frogpilot/assets/toggle_icons/icon_mute.png"}, - {"VeryLongDistanceButtonControl", tr("Distance Button (Very Long Press)"), tr("The action for a 2.5+ second press of the Distance button."), "../../frogpilot/assets/toggle_icons/icon_mute.png"}, - {"LKASButtonControl", tr("LKAS Button"), tr("The action for pressing the LKAS button."), "../../frogpilot/assets/toggle_icons/icon_mute.png"} + {"DistanceButtonControl", tr("Distance Button"), tr("Action performed when the \"Distance\" button is pressed."), "../../frogpilot/assets/toggle_icons/icon_mute.png"}, + {"LongDistanceButtonControl", tr("Distance Button (Long Press)"), tr("Action performed when the \"Distance\" button is pressed for more than 0.5 seconds."), "../../frogpilot/assets/toggle_icons/icon_mute.png"}, + {"VeryLongDistanceButtonControl", tr("Distance Button (Very Long Press)"), tr("Action performed when the \"Distance\" button is pressed for more than 2.5 seconds."), "../../frogpilot/assets/toggle_icons/icon_mute.png"}, + {"LKASButtonControl", tr("LKAS Button"), tr("Action performed when the \"LKAS\" button is pressed."), "../../frogpilot/assets/toggle_icons/icon_mute.png"} }; for (const auto &[param, title, desc, icon] : wheelToggles) { QMap functionsMap { - {0, tr("Nothing")}, - {3, tr("Pause Lateral")} + {0, tr("No Action")}, + {3, tr("Pause Steering")} }; QMap longitudinalFunctionsMap { {1, tr("Change \"Personality Profile\"")}, {2, tr("Force openpilot to Coast")}, - {4, tr("Pause Longitudinal")}, + {4, tr("Pause Acceleration/Braking")}, {5, tr("Toggle \"Experimental Mode\" On/Off")}, {6, tr("Toggle \"Traffic Mode\" On/Off")} }; ButtonControl *wheelToggle = new ButtonControl(title, tr("SELECT"), desc); - QObject::connect(wheelToggle, &ButtonControl::clicked, [this, functionsMap, longitudinalFunctionsMap, key = param, wheelToggle]() mutable { + QObject::connect(wheelToggle, &ButtonControl::clicked, [functionsMap, longitudinalFunctionsMap, key = param, wheelToggle, this]() mutable { if (hasOpenpilotLongitudinal) { QMap::const_iterator it; for (it = longitudinalFunctionsMap.constBegin(); it != longitudinalFunctionsMap.constEnd(); ++it) { @@ -49,10 +58,15 @@ FrogPilotWheelPanel::FrogPilotWheelPanel(FrogPilotSettingsWindow *parent) : Frog addItem(wheelToggle); + QObject::connect(wheelToggle, &AbstractControl::hideDescriptionEvent, [this]() { + update(); + }); QObject::connect(wheelToggle, &AbstractControl::showDescriptionEvent, [this]() { update(); }); } + + openDescriptions(forceOpenDescriptions, toggles); } void FrogPilotWheelPanel::showEvent(QShowEvent *event) { @@ -76,5 +90,7 @@ void FrogPilotWheelPanel::updateToggles() { toggle->setVisible(setVisible); } + openDescriptions(forceOpenDescriptions, toggles); + update(); } diff --git a/frogpilot/ui/qt/offroad/wheel_settings.h b/frogpilot/ui/qt/offroad/wheel_settings.h index 9fa6be3a3..974a556a1 100644 --- a/frogpilot/ui/qt/offroad/wheel_settings.h +++ b/frogpilot/ui/qt/offroad/wheel_settings.h @@ -16,6 +16,7 @@ protected: private: void updateToggles(); + bool forceOpenDescriptions; bool hasOpenpilotLongitudinal; bool isSubaru; diff --git a/frogpilot/ui/qt/onroad/frogpilot_annotated_camera.cc b/frogpilot/ui/qt/onroad/frogpilot_annotated_camera.cc index 30ad92b75..7a1c687de 100644 --- a/frogpilot/ui/qt/onroad/frogpilot_annotated_camera.cc +++ b/frogpilot/ui/qt/onroad/frogpilot_annotated_camera.cc @@ -6,14 +6,9 @@ FrogPilotAnnotatedCameraWidget::FrogPilotAnnotatedCameraWidget(QWidget *parent) animationTimer = new QTimer(this); brakePedalImg = loadPixmap("../../frogpilot/assets/other_images/brake_pedal.png", {btn_size, btn_size}); - chillModeIcon = loadPixmap("../../frogpilot/assets/other_images/chill_mode_icon.png", {btn_size / 2, btn_size / 2}); - curveIcon = loadPixmap("../../frogpilot/assets/other_images/curve_icon.png", {btn_size / 2, btn_size / 2}); - curveSpeedIcon = loadPixmap("../../frogpilot/assets/other_images/curve_speed_left.png", {btn_size, btn_size}); + curveSpeedIcon = loadPixmap("../../frogpilot/assets/other_images/curve_speed.png", {btn_size, btn_size}); dashboardIcon = loadPixmap("../../frogpilot/assets/other_images/dashboard_icon.png", {btn_size / 2, btn_size / 2}); - experimentalModeIcon = loadPixmap("../assets/img_experimental.svg", {btn_size / 2, btn_size / 2}); gasPedalImg = loadPixmap("../../frogpilot/assets/other_images/gas_pedal.png", {btn_size, btn_size}); - leadIcon = loadPixmap("../../frogpilot/assets/other_images/lead_icon.png", {btn_size / 2, btn_size / 2}); - lightIcon = loadPixmap("../../frogpilot/assets/other_images/light_icon.png", {btn_size / 2, btn_size / 2}); mapDataIcon = loadPixmap("../../frogpilot/assets/other_images/offline_maps_icon.png", {btn_size / 2, btn_size / 2}); navigationIcon = loadPixmap("../../frogpilot/assets/other_images/navigation_icon.png", {btn_size / 2, btn_size / 2}); nextMapsIcon = loadPixmap("../../frogpilot/assets/other_images/next_maps_icon.png", {btn_size / 2, btn_size / 2}); @@ -22,12 +17,26 @@ FrogPilotAnnotatedCameraWidget::FrogPilotAnnotatedCameraWidget(QWidget *parent) stopSignImg = loadPixmap("../../frogpilot/assets/other_images/stop_sign.png", {btn_size, btn_size}); turnIcon = loadPixmap("../../frogpilot/assets/other_images/turn_icon.png", {btn_size / 2, btn_size / 2}); + loadGif("../../frogpilot/assets/other_images/curve_icon.gif", cemCurveIcon, QSize(btn_size / 2, btn_size / 2), this); + loadGif("../../frogpilot/assets/other_images/lead_icon.gif", cemLeadIcon, QSize(btn_size / 2, btn_size / 2), this); + loadGif("../../frogpilot/assets/other_images/speed_icon.gif", cemSpeedIcon, QSize(btn_size / 2, btn_size / 2), this); + loadGif("../../frogpilot/assets/other_images/light_icon.gif", cemStopIcon, QSize(btn_size / 2, btn_size / 2), this); + loadGif("../../frogpilot/assets/other_images/turn_icon.gif", cemTurnIcon, QSize(btn_size / 2, btn_size / 2), this); + loadGif("../../frogpilot/assets/other_images/chill_mode_icon.gif", chillModeIcon, QSize(btn_size / 2, btn_size / 2), this); + loadGif("../../frogpilot/assets/other_images/experimental_mode_icon.gif", experimentalModeIcon, QSize(btn_size / 2, btn_size / 2), this); + QObject::connect(animationTimer, &QTimer::timeout, [this] { animationFrameIndex = (animationFrameIndex + 1) % totalFrames; }); QObject::connect(frogpilotUIState(), &FrogPilotUIState::themeUpdated, this, &FrogPilotAnnotatedCameraWidget::updateSignals); QObject::connect(uiState(), &UIState::offroadTransition, [this] { standstillTimer.invalidate(); + + QJsonObject stats = QJsonDocument::fromJson(QString::fromStdString(params.get("FrogPilotStats")).toUtf8()).object(); + stats["FrogHops"] = stats.value("FrogHops").toInt(0) + frogHopCount; + params.putNonBlocking("FrogPilotStats", QJsonDocument(stats).toJson(QJsonDocument::Compact).toStdString()); + + frogHopCount = 0; }); } @@ -59,13 +68,13 @@ void FrogPilotAnnotatedCameraWidget::showEvent(QShowEvent *event) { } void FrogPilotAnnotatedCameraWidget::updateSignals() { - blindspotImages.clear(); - signalImages.clear(); + QVector().swap(blindspotImages); + QVector().swap(signalImages); bool isGif = false; QFileInfoList files = QDir("../../frogpilot/assets/active_theme/signals/").entryInfoList(QDir::Files | QDir::NoDotAndDotDot, QDir::Name); - for (QFileInfo &fileInfo : files) { + for (const QFileInfo &fileInfo : files) { QString fileName = fileInfo.fileName(); QString filePath = fileInfo.absoluteFilePath(); @@ -73,15 +82,16 @@ void FrogPilotAnnotatedCameraWidget::updateSignals() { isGif = true; QMovie movie(filePath); - movie.setCacheMode(QMovie::CacheAll); + movie.setCacheMode(QMovie::CacheNone); movie.start(); int frameCount = movie.frameCount(); + signalImages.reserve(frameCount); + for (int i = 0; i < frameCount; ++i) { movie.jumpToFrame(i); QImage image = movie.currentPixmap().toImage().convertToFormat(QImage::Format_Indexed8); - QPixmap frame = QPixmap::fromImage(image); signalImages.append(frame); } @@ -106,7 +116,7 @@ void FrogPilotAnnotatedCameraWidget::updateSignals() { totalFrames = signalImages.size(); if (isGif && signalStyle == "traditional") { - signalMovement = (width() + (signalWidth * 2)) / totalFrames; + signalMovement = (width() + signalWidth * 2) / totalFrames; signalStyle = "traditional_gif"; } else { @@ -131,9 +141,8 @@ void FrogPilotAnnotatedCameraWidget::updateState(const FrogPilotUIState &fs, con float speedLimitOffset = frogpilotPlan.getSlcSpeedLimitOffset() * speedConversion; - mtscSpeedStr = (frogpilotPlan.getMtscSpeed() != 0) ? QString::number(std::nearbyint(fmin(speed, frogpilotPlan.getMtscSpeed() * speedConversion))) + speedUnit : "โ€“"; + cscSpeedStr = QString::number(std::nearbyint(fmin(speed, frogpilotPlan.getCscSpeed() * speedConversion))) + speedUnit; speedLimitOffsetStr = (speedLimitOffset != 0) ? QString::number(speedLimitOffset, 'f', 0).prepend((speedLimitOffset > 0) ? "+" : "-") : "โ€“"; - vtscSpeedStr = (frogpilotPlan.getVtscSpeed() != 0) ? QString::number(std::nearbyint(fmin(speed, frogpilotPlan.getVtscSpeed() * speedConversion))) + speedUnit : "โ€“"; if (frogpilot_scene.standstill && frogpilot_toggles.value("stopped_timer").toBool()) { if (!standstillTimer.isValid()) { @@ -147,6 +156,12 @@ void FrogPilotAnnotatedCameraWidget::updateState(const FrogPilotUIState &fs, con standstillTimer.invalidate(); } + static int lastFrameIndex; + if (lastFrameIndex > animationFrameIndex && frogpilot_toggles.value("signal_icons").toString() == "frog") { + frogHopCount++; + } + lastFrameIndex = animationFrameIndex; + update(); } @@ -161,7 +176,7 @@ void FrogPilotAnnotatedCameraWidget::paintFrogPilotWidgets(QPainter &p, UIState const cereal::ModelDataV2::Reader &model = sm["modelV2"].getModelV2(); if (!hideBottomIcons && frogpilot_toggles.value("cem_status").toBool()) { - paintCEMStatus(p, frogpilot_scene, sm); + paintCEMStatus(p, frogpilotPlan, frogpilot_scene, sm); } else { cemStatusPosition.setX(0); cemStatusPosition.setY(0); @@ -169,10 +184,23 @@ void FrogPilotAnnotatedCameraWidget::paintFrogPilotWidgets(QPainter &p, UIState if (!frogpilot_scene.map_open && !hideBottomIcons && frogpilot_toggles.value("compass").toBool()) { paintCompass(p, frogpilot_toggles); + } else { + compassPosition.setX(0); + compassPosition.setY(0); } if (!frogpilot_scene.map_open && !frogpilotPlan.getSpeedLimitChanged() && !(signalStyle == "static" && carState.getLeftBlinker()) && frogpilot_toggles.value("csc_status").toBool()) { - paintCurveSpeedControl(p, frogpilotPlan, frogpilot_toggles); + if (frogpilotPlan.getCscTraining()) { + paintSmartControllerTraining(p, frogpilotPlan); + } else { + glowTimer.invalidate(); + + if (isCruiseSet && frogpilotPlan.getCscControllingSpeed()) { + paintCurveSpeedControl(p, frogpilotPlan); + } + } + } else { + glowTimer.invalidate(); } if (!frogpilot_scene.map_open && frogpilotCarState.getPauseLateral() && !hideBottomIcons) { @@ -227,7 +255,7 @@ void FrogPilotAnnotatedCameraWidget::paintFrogPilotWidgets(QPainter &p, UIState } void FrogPilotAnnotatedCameraWidget::paintAdjacentPaths(QPainter &p, const cereal::CarState::Reader &carState, const FrogPilotUIScene &frogpilot_scene, const QJsonObject &frogpilot_toggles) { - std::function drawAdjacentPath = [this, &p, &frogpilot_toggles](bool isBlindSpot, float width, float requirement, const QPolygonF &polygon) { + std::function drawAdjacentPath = [&p, &frogpilot_toggles, this](bool isBlindSpot, float width, float requirement, const QPolygonF &polygon) { QLinearGradient gradient(0, height(), 0, 0); if (isBlindSpot && frogpilot_toggles.value("blind_spot_path").toBool()) { gradient.setColorAt(0.0f, QColor::fromHslF(0 / 360.0f, 0.75f, 0.5f, 0.6f)); @@ -246,7 +274,7 @@ void FrogPilotAnnotatedCameraWidget::paintAdjacentPaths(QPainter &p, const cerea p.drawPolygon(polygon); }; - std::function drawAdjacentPathMetric = [this, &p, &frogpilot_toggles](bool isBlindSpot, float width, const QPolygonF &polygon) { + std::function drawAdjacentPathMetric = [&p, &frogpilot_toggles, this](bool isBlindSpot, float width, const QPolygonF &polygon) { QString text = isBlindSpot && frogpilot_toggles.value("blind_spot_path").toBool() ? tr("Vehicle in blind spot") : QString::number(width * distanceConversion, 'f', 2) + leadDistanceUnit; p.setFont(InterFont(40, QFont::DemiBold)); @@ -298,7 +326,7 @@ void FrogPilotAnnotatedCameraWidget::paintBlindSpotPath(QPainter &p, const cerea p.restore(); } -void FrogPilotAnnotatedCameraWidget::paintCEMStatus(QPainter &p, FrogPilotUIScene &frogpilot_scene, SubMaster &sm) { +void FrogPilotAnnotatedCameraWidget::paintCEMStatus(QPainter &p, const cereal::FrogPilotPlan::Reader &frogpilotPlan, FrogPilotUIScene &frogpilot_scene, SubMaster &sm) { if (dmIconPosition == QPoint(0, 0)) { return; } @@ -321,29 +349,27 @@ void FrogPilotAnnotatedCameraWidget::paintCEMStatus(QPainter &p, FrogPilotUIScen } p.drawRoundedRect(cemWidget, 24, 24); - QPixmap iconToDraw; + QSharedPointer icon = chillModeIcon; if (frogpilot_scene.enabled && sm["controlsState"].getControlsState().getExperimentalMode()) { if (frogpilot_scene.conditional_status == 1) { - iconToDraw = chillModeIcon; + icon = chillModeIcon; } else if (frogpilot_scene.conditional_status == 2) { - iconToDraw = experimentalModeIcon; + icon = experimentalModeIcon; } else if (frogpilot_scene.conditional_status == 3 || frogpilot_scene.conditional_status == 4) { - iconToDraw = speedIcon; + icon = cemSpeedIcon; } else if (frogpilot_scene.conditional_status == 5 || frogpilot_scene.conditional_status == 7) { - iconToDraw = turnIcon; + icon = cemTurnIcon; } else if (frogpilot_scene.conditional_status == 6 || frogpilot_scene.conditional_status == 11 || frogpilot_scene.conditional_status == 12) { - iconToDraw = lightIcon; + icon = cemStopIcon; } else if (frogpilot_scene.conditional_status == 8) { - iconToDraw = curveIcon; + icon = cemCurveIcon; } else if (frogpilot_scene.conditional_status == 9 || frogpilot_scene.conditional_status == 10) { - iconToDraw = leadIcon; + icon = cemLeadIcon; } else { - iconToDraw = experimentalModeIcon; + icon = experimentalModeIcon; } - } else { - iconToDraw = chillModeIcon; } - p.drawPixmap(cemWidget, iconToDraw); + p.drawPixmap(cemWidget, icon->currentPixmap()); p.restore(); } @@ -351,17 +377,17 @@ void FrogPilotAnnotatedCameraWidget::paintCEMStatus(QPainter &p, FrogPilotUIScen void FrogPilotAnnotatedCameraWidget::paintCompass(QPainter &p, QJsonObject &frogpilot_toggles) { p.save(); - int x_position = rightHandDM ? UI_BORDER_SIZE + widget_size / 2 : width() - UI_BORDER_SIZE - btn_size; + compassPosition.rx() = rightHandDM ? UI_BORDER_SIZE + widget_size / 2 : width() - UI_BORDER_SIZE - btn_size; if (mapButtonVisible) { if (rightHandDM) { - x_position += btn_size - UI_BORDER_SIZE; + compassPosition.rx() += btn_size - UI_BORDER_SIZE; } else { - x_position -= btn_size + UI_BORDER_SIZE; + compassPosition.rx() -= btn_size + UI_BORDER_SIZE; } } - int y_position = dmIconPosition.y() - widget_size / 2; + compassPosition.ry() = dmIconPosition.y() - widget_size / 2; - QRect compassWidget(QPoint(x_position, y_position), QSize(widget_size, widget_size)); + QRect compassWidget(compassPosition, QSize(widget_size, widget_size)); p.setBrush(blackColor(166)); p.setPen(QPen(blackColor(), 10)); @@ -441,56 +467,28 @@ void FrogPilotAnnotatedCameraWidget::paintCompass(QPainter &p, QJsonObject &frog p.restore(); } -void FrogPilotAnnotatedCameraWidget::paintCurveSpeedControl(QPainter &p, const cereal::FrogPilotPlan::Reader &frogpilotPlan, QJsonObject &frogpilot_toggles) { +void FrogPilotAnnotatedCameraWidget::paintCurveSpeedControl(QPainter &p, const cereal::FrogPilotPlan::Reader &frogpilotPlan) { p.save(); - std::function drawCurveSpeedControl = [&](QRect &rect, const QString &speedStr, bool isMtsc) { - if (isMtsc && !frogpilotPlan.getVtscControllingCurve()) { - p.setPen(QPen(greenColor(), 10)); - p.setBrush(greenColor(166)); - p.setFont(InterFont(45, QFont::Bold)); - } else if (!isMtsc && frogpilotPlan.getVtscControllingCurve()) { - p.setPen(QPen(redColor(), 10)); - p.setBrush(redColor(166)); - p.setFont(InterFont(45, QFont::Bold)); - } else { - p.setPen(QPen(blackColor(), 10)); - p.setBrush(blackColor(166)); - p.setFont(InterFont(35, QFont::DemiBold)); - } - - p.drawRoundedRect(rect, 24, 24); - - p.setPen(QPen(whiteColor(), 6)); - p.drawText(rect.adjusted(20, 0, 0, 0), Qt::AlignVCenter | Qt::AlignLeft, speedStr); - }; - QRect curveSpeedRect(QPoint(setSpeedRect.right() + UI_BORDER_SIZE, setSpeedRect.top()), QSize(defaultSize.width() * 1.25, defaultSize.width() * 1.25)); - QPixmap scaledCurveSpeedIcon = (frogpilotPlan.getRoadCurvature() < 0 ? curveSpeedIcon : curveSpeedIcon.transformed(QTransform().scale(-1, 1))).scaled(curveSpeedRect.size(), Qt::KeepAspectRatio, Qt::SmoothTransformation); + + QPixmap curveSpeedImage = frogpilotPlan.getRoadCurvature() < 0 ? curveSpeedIcon : curveSpeedIcon.transformed(QTransform().scale(-1, 1)); + QSize curveSpeedSize = curveSpeedImage.size(); + QPoint curveSpeedPoint(curveSpeedRect.x() + (curveSpeedRect.width() - curveSpeedSize.width()) / 2, curveSpeedRect.y() + (curveSpeedRect.height() - curveSpeedSize.height()) / 2); p.setOpacity(1.0); - if (frogpilotPlan.getVCruise() == frogpilotPlan.getMtscSpeed() && setSpeed - frogpilotPlan.getMtscSpeed() > 1 && frogpilot_toggles.value("map_turn_speed_controller").toBool()) { - QRect mtscRect(curveSpeedRect.topLeft() + QPoint(0, curveSpeedRect.height() + 10), QSize(curveSpeedRect.width(), frogpilotPlan.getVtscControllingCurve() ? 50 : 100)); - drawCurveSpeedControl(mtscRect, mtscSpeedStr, true); + QRect cscRect(curveSpeedRect.topLeft() + QPoint(0, curveSpeedRect.height() + 10), QSize(curveSpeedRect.width(), 100)); - if (frogpilot_toggles.value("vision_turn_speed_controller").toBool()) { - QRect vtscRect(mtscRect.topLeft() + QPoint(0, mtscRect.height() + 20), QSize(mtscRect.width(), frogpilotPlan.getVtscControllingCurve() ? 100 : 50)); - drawCurveSpeedControl(vtscRect, vtscSpeedStr, false); - } + p.setBrush(blueColor(166)); + p.setFont(InterFont(45, QFont::Bold)); + p.setPen(QPen(blueColor(), 10)); - p.drawPixmap(curveSpeedRect, scaledCurveSpeedIcon); - } else if (frogpilotPlan.getVCruise() == frogpilotPlan.getVtscSpeed() && setSpeed - frogpilotPlan.getVtscSpeed() > 1 && frogpilot_toggles.value("vision_turn_speed_controller").toBool()) { - QRect vtscRect(curveSpeedRect.topLeft() + QPoint(0, curveSpeedRect.height() + 10), QSize(curveSpeedRect.width(), frogpilotPlan.getVtscControllingCurve() ? 100 : 50)); - drawCurveSpeedControl(vtscRect, vtscSpeedStr, false); + p.drawRoundedRect(cscRect, 24, 24); + p.setPen(QPen(whiteColor(), 6)); + p.drawText(cscRect.adjusted(20, 0, 0, 0), Qt::AlignVCenter | Qt::AlignLeft, cscSpeedStr); - if (frogpilot_toggles.value("map_turn_speed_controller").toBool()) { - QRect mtscRect(vtscRect.topLeft() + QPoint(0, vtscRect.height() + 20), QSize(vtscRect.width(), frogpilotPlan.getVtscControllingCurve() ? 50 : 100)); - drawCurveSpeedControl(mtscRect, mtscSpeedStr, true); - } - - p.drawPixmap(curveSpeedRect, scaledCurveSpeedIcon); - } + p.drawPixmap(curveSpeedPoint, curveSpeedImage); p.restore(); } @@ -545,7 +543,7 @@ void FrogPilotAnnotatedCameraWidget::paintLeadMetrics(QPainter &p, bool adjacent .arg(QString("Desired: %1").arg(frogpilotPlan.getDesiredFollowDistance() * distanceConversion)) .arg(qRound(leadSpeed * speedConversionMetrics)) .arg(leadSpeedUnit) - .arg(QString::number(std::max(leadDistance / std::max(speed / speedConversion, 1.0f), 1.0f), 'f', 2)) + .arg(QString::number(leadDistance / std::max(speed / speedConversion, 1.0f), 'f', 2)) .arg("s"); } @@ -772,6 +770,46 @@ void FrogPilotAnnotatedCameraWidget::paintRoadName(QPainter &p) { p.restore(); } +void FrogPilotAnnotatedCameraWidget::paintSmartControllerTraining(QPainter &p, const cereal::FrogPilotPlan::Reader &frogpilotPlan) { + p.save(); + + if (!glowTimer.isValid()) { + glowTimer.start(); + } + + QRect curveSpeedRect(QPoint(setSpeedRect.right() + UI_BORDER_SIZE, setSpeedRect.top()), QSize(defaultSize.width() * 1.25, defaultSize.width() * 1.25)); + QPixmap curveSpeedImage = frogpilotPlan.getRoadCurvature() < 0 ? curveSpeedIcon : curveSpeedIcon.transformed(QTransform().scale(-1, 1)); + + qreal phase = (glowTimer.elapsed() % 2000) / 2000.0 * 2 * M_PI; + qreal alphaFactor = 0.5 + 0.5 * sin(phase); + + QColor glowColor = blueColor(); + glowColor.setAlphaF(0.3 + 0.7 * alphaFactor); + + int glowWidth = 8 + static_cast(2 * alphaFactor); + + p.setOpacity(1.0); + + p.setBrush(blackColor(166)); + p.setPen(QPen(glowColor, glowWidth)); + p.drawRoundedRect(curveSpeedRect, 24, 24); + + QSize curveSpeedSize = curveSpeedImage.size(); + QPoint curveSpeedPoint(curveSpeedRect.x() + (curveSpeedRect.width() - curveSpeedSize.width()) / 2, curveSpeedRect.y() + (curveSpeedRect.height() - curveSpeedSize.height()) / 2); + p.drawPixmap(curveSpeedPoint, curveSpeedImage); + + QRect textRect(curveSpeedRect.topLeft() + QPoint(0, curveSpeedRect.height() + 10), QSize(curveSpeedRect.width(), 50)); + p.setBrush(blackColor(166)); + p.setPen(QPen(blackColor(), 10)); + p.drawRoundedRect(textRect, 24, 24); + + p.setFont(InterFont(35, QFont::Bold)); + p.setPen(QPen(whiteColor(), 6)); + p.drawText(textRect.adjusted(20, 0, 0, 0), Qt::AlignVCenter | Qt::AlignLeft, "Training..."); + + p.restore(); +} + void FrogPilotAnnotatedCameraWidget::paintSpeedLimitSources(QPainter &p, const cereal::FrogPilotCarState::Reader &frogpilotCarState, const cereal::FrogPilotNavigation::Reader &frogpilotNavigation, const cereal::FrogPilotPlan::Reader &frogpilotPlan) { p.save(); diff --git a/frogpilot/ui/qt/onroad/frogpilot_annotated_camera.h b/frogpilot/ui/qt/onroad/frogpilot_annotated_camera.h index 69211e8a2..933bc5098 100644 --- a/frogpilot/ui/qt/onroad/frogpilot_annotated_camera.h +++ b/frogpilot/ui/qt/onroad/frogpilot_annotated_camera.h @@ -1,5 +1,8 @@ #pragma once +#include +#include + #include "selfdrive/ui/qt/onroad/buttons.h" #include "selfdrive/ui/qt/widgets/cameraview.h" @@ -28,6 +31,7 @@ public: bool viennaSpeedLimit; int alertHeight; + int frogHopCount; int signMargin; int standstillDuration; @@ -61,15 +65,16 @@ protected: void showEvent(QShowEvent *event) override; private: - void paintCEMStatus(QPainter &p, FrogPilotUIScene &frogpilot_scene, SubMaster &sm); + void paintCEMStatus(QPainter &p, const cereal::FrogPilotPlan::Reader &frogpilotPlan, FrogPilotUIScene &frogpilot_scene, SubMaster &sm); void paintCompass(QPainter &p, QJsonObject &frogpilot_toggles); - void paintCurveSpeedControl(QPainter &p, const cereal::FrogPilotPlan::Reader &frogpilotPlan, QJsonObject &frogpilot_toggles); + void paintCurveSpeedControl(QPainter &p, const cereal::FrogPilotPlan::Reader &frogpilotPlan); void paintLateralPaused(QPainter &p, FrogPilotUIScene &frogpilot_scene); void paintLongitudinalPaused(QPainter &p, FrogPilotUIScene &frogpilot_scene); void paintPedalIcons(QPainter &p, const cereal::CarState::Reader &carState, const cereal::FrogPilotCarState::Reader &frogpilotCarState, FrogPilotUIScene &frogpilot_scene, QJsonObject &frogpilot_toggles); void paintPendingSpeedLimit(QPainter &p, const cereal::FrogPilotPlan::Reader &frogpilotPlan); void paintRadarTracks(QPainter &p, const cereal::ModelDataV2::Reader &model, UIState &s, FrogPilotUIScene &frogpilot_scene, SubMaster &sm, SubMaster &fpsm); void paintRoadName(QPainter &p); + void paintSmartControllerTraining(QPainter &p, const cereal::FrogPilotPlan::Reader &frogpilotPlan); void paintSpeedLimitSources(QPainter &p, const cereal::FrogPilotCarState::Reader &frogpilotCarState, const cereal::FrogPilotNavigation::Reader &frogpilotNavigation, const cereal::FrogPilotPlan::Reader &frogpilotPlan); void paintStandstillTimer(QPainter &p); void paintStoppingPoint(QPainter &p, UIScene &scene, FrogPilotUIScene &frogpilot_scene, QJsonObject &frogpilot_toggles); @@ -83,6 +88,7 @@ private: int signalWidth; int totalFrames; + Params params; Params params_memory{"/dev/shm/params"}; QColor blackColor(int alpha = 255) { return QColor(0, 0, 0, alpha); } @@ -90,18 +96,14 @@ private: QColor redColor(int alpha = 255) { return QColor(201, 34, 49, alpha); } QColor whiteColor(int alpha = 255) { return QColor(255, 255, 255, alpha); } + QElapsedTimer glowTimer; QElapsedTimer pendingLimitTimer; QElapsedTimer standstillTimer; QPixmap brakePedalImg; - QPixmap chillModeIcon; - QPixmap curveIcon; QPixmap curveSpeedIcon; QPixmap dashboardIcon; - QPixmap experimentalModeIcon; QPixmap gasPedalImg; - QPixmap leadIcon; - QPixmap lightIcon; QPixmap mapDataIcon; QPixmap navigationIcon; QPixmap nextMapsIcon; @@ -111,10 +113,18 @@ private: QPixmap turnIcon; QPoint cemStatusPosition; + QPoint compassPosition; QPoint lateralPausedPosition; - QString mtscSpeedStr; - QString vtscSpeedStr; + QSharedPointer cemCurveIcon; + QSharedPointer cemLeadIcon; + QSharedPointer cemSpeedIcon; + QSharedPointer cemStopIcon; + QSharedPointer cemTurnIcon; + QSharedPointer chillModeIcon; + QSharedPointer experimentalModeIcon; + + QString cscSpeedStr; QTimer *animationTimer; diff --git a/frogpilot/ui/qt/onroad/frogpilot_onroad.cc b/frogpilot/ui/qt/onroad/frogpilot_onroad.cc index 95b729695..462fe96e6 100644 --- a/frogpilot/ui/qt/onroad/frogpilot_onroad.cc +++ b/frogpilot/ui/qt/onroad/frogpilot_onroad.cc @@ -83,9 +83,8 @@ void FrogPilotOnroadWindow::paintFPS(QPainter &p, const QRect &rect) { totalFPS += fps; while (!fpsHistory.isEmpty() && now - fpsHistory.first().first > 60000) { - fpsHistory.removeFirst(); - totalFPS -= fpsHistory.first().second; + fpsHistory.removeFirst(); } double avgFPS = fpsHistory.isEmpty() ? 0.0 : totalFPS / fpsHistory.size(); diff --git a/frogpilot/ui/qt/widgets/drive_stats.cc b/frogpilot/ui/qt/widgets/drive_stats.cc index 889a9e88e..891d887e6 100644 --- a/frogpilot/ui/qt/widgets/drive_stats.cc +++ b/frogpilot/ui/qt/widgets/drive_stats.cc @@ -1,5 +1,4 @@ #include "selfdrive/ui/qt/request_repeater.h" -#include "selfdrive/ui/qt/util.h" #include "frogpilot/ui/qt/widgets/drive_stats.h" @@ -10,8 +9,8 @@ static QLabel *newLabel(const QString &text, const QString &type) { } DriveStats::DriveStats(QWidget *parent) : QFrame(parent) { + isMetric = params.getBool("IsMetric"); konik = useKonikServer(); - metric = params.getBool("IsMetric"); QVBoxLayout *main_layout = new QVBoxLayout(this); main_layout->setContentsMargins(50, 25, 50, 20); @@ -33,13 +32,19 @@ DriveStats::DriveStats(QWidget *parent) : QFrame(parent) { border-radius: 10px; } - QLabel[type="title"] { font-size: 50px; font-weight: 500; } QLabel[type="frogpilot_title"] { font-size: 50px; font-weight: 500; color: #178643; } QLabel[type="number"] { font-size: 65px; font-weight: 400; } + QLabel[type="title"] { font-size: 50px; font-weight: 500; } QLabel[type="unit"] { font-size: 50px; font-weight: 300; color: #A0A0A0; } )"); } +void DriveStats::showEvent(QShowEvent *event) { + isMetric = params.getBool("IsMetric"); + + updateStats(); +} + void DriveStats::addStatsLayouts(const QString &title, StatsLabels &labels, bool FrogPilot) { QGridLayout *grid_layout = new QGridLayout; grid_layout->setVerticalSpacing(10); @@ -54,7 +59,7 @@ void DriveStats::addStatsLayouts(const QString &title, StatsLabels &labels, bool grid_layout->addWidget(labels.hours = newLabel("0", "number"), row, 2, Qt::AlignLeft); grid_layout->addWidget(newLabel(tr("Drives"), "unit"), row + 1, 0, Qt::AlignLeft); - grid_layout->addWidget(labels.distance_unit = newLabel(getDistanceUnit(), "unit"), row + 1, 1, Qt::AlignLeft); + grid_layout->addWidget(labels.distance_unit = newLabel(isMetric ? tr("KM") : tr("Miles"), "unit"), row + 1, 1, Qt::AlignLeft); grid_layout->addWidget(newLabel(tr("Hours"), "unit"), row + 1, 2, Qt::AlignLeft); QVBoxLayout *main_layout = static_cast(layout()); @@ -62,31 +67,6 @@ void DriveStats::addStatsLayouts(const QString &title, StatsLabels &labels, bool main_layout->addStretch(1); } -void DriveStats::updateStatsForLabel(const QJsonObject &obj, StatsLabels &labels) { - labels.routes->setText(QString::number((int)obj["routes"].toDouble())); - labels.distance->setText(QString::number(int(obj["distance"].toDouble() * (metric ? MILE_TO_KM : 1)))); - labels.distance_unit->setText(getDistanceUnit()); - labels.hours->setText(QString::number((int)(obj["minutes"].toDouble() / 60))); -} - -void DriveStats::updateFrogPilotStats(const QJsonObject &obj, StatsLabels &labels) { - labels.routes->setText(QString::number(paramsTracking.getInt("FrogPilotDrives"))); - labels.distance->setText(QString::number(int(paramsTracking.getFloat("FrogPilotKilometers") * (metric ? 1 : KM_TO_MILE)))); - labels.distance_unit->setText(getDistanceUnit()); - labels.hours->setText(QString::number(int(paramsTracking.getFloat("FrogPilotMinutes") / 60))); -} - -void DriveStats::updateStats() { - QJsonObject json = stats.object(); - - updateFrogPilotStats(json["frogpilot"].toObject(), frogPilot); - updateStatsForLabel(json["all"].toObject(), all); - updateStatsForLabel(json["week"].toObject(), week); - - int all_time_minutes = (int)(json["all"].toObject()["minutes"].toDouble()); - params.put(konik ? "KonikMinutes" : "openpilotMinutes", QString::number(all_time_minutes).toStdString()); -} - void DriveStats::parseResponse(const QString &response, bool success) { if (!success) { return; @@ -101,8 +81,28 @@ void DriveStats::parseResponse(const QString &response, bool success) { updateStats(); } -void DriveStats::showEvent(QShowEvent *event) { - metric = params.getBool("IsMetric"); - - updateStats(); +void DriveStats::updateStatsForLabel(const QJsonObject &obj, StatsLabels &labels) { + labels.distance->setText(QString::number(int(obj["distance"].toDouble() * (isMetric ? MILE_TO_KM : 1)))); + labels.distance_unit->setText(isMetric ? tr("KM") : tr("Miles")); + labels.hours->setText(QString::number((int)(obj["minutes"].toDouble() / 60))); + labels.routes->setText(QString::number((int)obj["routes"].toDouble())); +} + +void DriveStats::updateFrogPilotStatsForLabel(StatsLabels &labels) { + QJsonObject frogpilot_stats = QJsonDocument::fromJson(QString::fromStdString(params.get("FrogPilotStats")).toUtf8()).object(); + + labels.distance->setText(QString::number(int(frogpilot_stats.value("FrogPilotMeters").toDouble() * (isMetric ? 0.001 : METER_TO_MILE)))); + labels.distance_unit->setText(isMetric ? tr("KM") : tr("Miles")); + labels.hours->setText(QString::number(int(frogpilot_stats.value("FrogPilotSeconds").toDouble() / (60 * 60)))); + labels.routes->setText(QString::number(frogpilot_stats.value("FrogPilotDrives").toInt())); +} + +void DriveStats::updateStats() { + QJsonObject json = stats.object(); + + updateStatsForLabel(json["all"].toObject(), all); + updateStatsForLabel(json["week"].toObject(), week); + updateFrogPilotStatsForLabel(frogPilot); + + params.put(konik ? "KonikMinutes" : "openpilotMinutes", QString::number((int)(json["all"].toObject()["minutes"].toDouble())).toStdString()); } diff --git a/frogpilot/ui/qt/widgets/drive_stats.h b/frogpilot/ui/qt/widgets/drive_stats.h index bb977eca8..db2067565 100644 --- a/frogpilot/ui/qt/widgets/drive_stats.h +++ b/frogpilot/ui/qt/widgets/drive_stats.h @@ -2,6 +2,13 @@ #include "selfdrive/ui/ui.h" +struct StatsLabels { + QLabel *distance; + QLabel *distance_unit; + QLabel *hours; + QLabel *routes; +}; + class DriveStats : public QFrame { Q_OBJECT @@ -9,30 +16,22 @@ public: explicit DriveStats(QWidget *parent = 0); private: - inline QString getDistanceUnit() const { return metric ? tr("KM") : tr("Miles"); } - - struct StatsLabels { - QLabel *routes; - QLabel *distance; - QLabel *distance_unit; - QLabel *hours; - }; - void addStatsLayouts(const QString &title, StatsLabels &labels, bool FrogPilot = false); void showEvent(QShowEvent *event) override; void updateStats(); void updateStatsForLabel(const QJsonObject &obj, StatsLabels &labels); - void updateFrogPilotStats(const QJsonObject &obj, StatsLabels &labels); + void updateFrogPilotStatsForLabel(StatsLabels &labels); + + bool isMetric; + bool konik; Params params; - Params paramsTracking{"/cache/tracking"}; - - bool konik; - bool metric; QJsonDocument stats; - StatsLabels all, week, frogPilot; + StatsLabels all; + StatsLabels frogPilot; + StatsLabels week; private slots: void parseResponse(const QString &response, bool success); diff --git a/frogpilot/ui/qt/widgets/frogpilot_controls.cc b/frogpilot/ui/qt/widgets/frogpilot_controls.cc index 97fb4a856..09b503442 100644 --- a/frogpilot/ui/qt/widgets/frogpilot_controls.cc +++ b/frogpilot/ui/qt/widgets/frogpilot_controls.cc @@ -24,48 +24,54 @@ bool useKonikServer() { void loadGif(const QString &gifPath, QSharedPointer &movie, const QSize &size, QWidget *parent) { if (!movie.isNull()) { QObject::disconnect(movie.data(), nullptr, parent, nullptr); + movie->stop(); movie.clear(); } - QFileInfo gifFile(gifPath); - if (!gifFile.exists()) { - return; + if (QFileInfo::exists(gifPath)) { + QSharedPointer gif(QSharedPointer::create(gifPath, QByteArray(), parent)); + gif->setCacheMode(QMovie::CacheAll); + gif->setScaledSize(size); + + QObject::connect(gif.data(), &QMovie::frameChanged, parent, [parent](int) { parent->update(); }, Qt::UniqueConnection); + + gif->start(); + + movie = gif; } - QSharedPointer gif(new QMovie(gifFile.filePath(), QByteArray(), parent)); - if (!gif->isValid()) { - return; - } - - gif->setCacheMode(QMovie::CacheAll); - gif->setScaledSize(size); - - QObject::connect(gif.data(), &QMovie::frameChanged, parent, [parent](int){ parent->update(); }, Qt::UniqueConnection); - - gif->start(); - - movie = gif; - parent->update(); } void loadImage(const QString &basePath, QPixmap &pixmap, QSharedPointer &movie, const QSize &size, QWidget *parent, Qt::AspectRatioMode aspectRatioMode) { - QFileInfo gifFile(basePath + ".gif"); - if (gifFile.exists()) { - loadGif(gifFile.filePath(), movie, size, parent); + QString gifPath = basePath + ".gif"; + if (QFileInfo::exists(gifPath)) { + loadGif(gifPath, movie, size, parent); + parent->update(); + } else { if (!movie.isNull()) { - pixmap = QPixmap(); - return; + QObject::disconnect(movie.data(), nullptr, parent, nullptr); + + movie->stop(); + movie.clear(); + } + + pixmap = QPixmap(basePath + ".png").scaled(size, aspectRatioMode, Qt::SmoothTransformation); + + parent->update(); + } +} + +void openDescriptions(bool forceOpenDescriptions, std::map toggles) { + if (forceOpenDescriptions) { + for (auto &[key, toggle] : toggles) { + if (key != "CESpeed") { + toggle->showDescription(); + } } } - - QImage image(basePath + ".png"); - image = image.convertToFormat(QImage::Format_Indexed8); - pixmap = QPixmap::fromImage(image).scaled(size, aspectRatioMode, Qt::SmoothTransformation); - - parent->update(); } void updateFrogPilotToggles() { diff --git a/frogpilot/ui/qt/widgets/frogpilot_controls.h b/frogpilot/ui/qt/widgets/frogpilot_controls.h index a06cf628f..ba43f1765 100644 --- a/frogpilot/ui/qt/widgets/frogpilot_controls.h +++ b/frogpilot/ui/qt/widgets/frogpilot_controls.h @@ -11,6 +11,7 @@ bool useKonikServer(); void loadGif(const QString &gifPath, QSharedPointer &movie, const QSize &size, QWidget *parent); void loadImage(const QString &basePath, QPixmap &pixmap, QSharedPointer &movie, const QSize &size, QWidget *parent, Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio); +void openDescriptions(bool forceOpenDescriptions, std::map toggles); void updateFrogPilotToggles(); QColor loadThemeColors(const QString &colorKey, bool clearCache = false); @@ -369,17 +370,17 @@ public: QObject::connect(&decrement_button, &QPushButton::pressed, this, &FrogPilotParamValueControl::decrementPressed); QObject::connect(&increment_button, &QPushButton::pressed, this, &FrogPilotParamValueControl::incrementPressed); - QObject::connect(&decrement_button, &QPushButton::released, this, [this]() { + QObject::connect(&decrement_button, &QPushButton::released, [this]() { decrement_repeating_timer.start(decrement_button.autoRepeatInterval()); }); - QObject::connect(&increment_button, &QPushButton::released, this, [this]() { + QObject::connect(&increment_button, &QPushButton::released, [this]() { increment_repeating_timer.start(increment_button.autoRepeatInterval()); }); - QObject::connect(&decrement_repeating_timer, &QTimer::timeout, this, [this]() { + QObject::connect(&decrement_repeating_timer, &QTimer::timeout, [this]() { decrement_repeating = false; }); - QObject::connect(&increment_repeating_timer, &QTimer::timeout, this, [this]() { + QObject::connect(&increment_repeating_timer, &QTimer::timeout, [this]() { increment_repeating = false; }); } @@ -442,6 +443,9 @@ public: button.setAutoRepeatInterval(150); button.setFixedSize(150, 100); button.setStyleSheet(buttonStyle); + if (text == "+" || text == "-") { + button.setStyleSheet(button.styleSheet() + " QPushButton { font-size: 50px; }"); + } button.setText(text); } diff --git a/frogpilot/ui/qt/widgets/model_reviewer.cc b/frogpilot/ui/qt/widgets/model_reviewer.cc index b28bd74b9..4705ef911 100644 --- a/frogpilot/ui/qt/widgets/model_reviewer.cc +++ b/frogpilot/ui/qt/widgets/model_reviewer.cc @@ -1,31 +1,125 @@ -#include -#include - #include "frogpilot/ui/qt/widgets/model_reviewer.h" -ModelReview::ModelReview(QWidget *parent) : QFrame(parent) { +static QLabel *addLabel(QWidget *parent, QVBoxLayout *layout, const QString &text, int fontSize=50) { + QLabel *label = new QLabel(text, parent); + label->setAlignment(Qt::AlignCenter); + label->setStyleSheet(QString(R"( + QLabel { + color: #FFFFFF; + font-size: %2px; + font-weight: bold; + } + )").arg(fontSize)); + layout->addWidget(label); + return label; +} + +static QLabel *addTitleLabel(QWidget *parent, QVBoxLayout *layout, const QString &text) { + QLabel *label = new QLabel(text, parent); + label->setAlignment(Qt::AlignCenter); + label->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); + label->setStyleSheet(R"( + QLabel { + background-color: #444444; + border-radius: 12px; + color: #FFFFFF; + font-size: 50px; + font-weight: bold; + padding: 12px 28px; + } + )"); + label->setMaximumHeight(label->sizeHint().height()); + layout->addWidget(label); + layout->addSpacing(10); + return label; +} + +static QPushButton *createButton(QWidget *parent, const QString &text, const QString &name, int rating, int width, int height) { + QPushButton *button = new QPushButton(text, parent); + button->setFixedSize(width, height); + button->setObjectName(name); + button->setProperty("rating", rating); + return button; +} + +static QWidget *createStatBox(const QString &title, QLabel **valueLabel, QWidget *parent) { + QWidget *box = new QWidget(parent); + + QVBoxLayout *layout = new QVBoxLayout(box); + layout->setAlignment(Qt::AlignCenter); + layout->setContentsMargins(8, 8, 8, 8); + layout->setSpacing(10); + + QLabel *statTitleLabel = new QLabel(title, box); + statTitleLabel->setAlignment(Qt::AlignCenter); + statTitleLabel->setStyleSheet(R"( + QLabel { + color: #AAAAAA; + font-size: 40px; + font-weight: 600; + } + )"); + layout->addWidget(statTitleLabel); + + QLabel *value = new QLabel("-", box); + value->setAlignment(Qt::AlignCenter); + value->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + value->setStyleSheet(R"( + QLabel { + color: #FFFFFF; + font-size: 75px; + font-weight: bold; + } + )"); + *valueLabel = value; + layout->addWidget(value); + + return box; +} + +FrogPilotModelReview::FrogPilotModelReview(QWidget *parent) : QFrame(parent) { mainLayout = new QStackedLayout(this); QVBoxLayout *ratingLayout = new QVBoxLayout(); - ratingLayout->setContentsMargins(50, 25, 50, 20); + ratingLayout->setContentsMargins(50, 25, 50, 25); - questionLabel = addLabel(ratingLayout, tr("How would you rate that drive?"), "question"); + addTitleLabel(this, ratingLayout, tr("Drive Rating Selection")); + ratingLayout->addStretch(1); - QHBoxLayout *ratingButtonsLayout = new QHBoxLayout(); - QStringList emojis = {"๐Ÿคฉ", "๐Ÿ™‚", "๐Ÿค”", "๐Ÿ™", "๐Ÿค•"}; - QList scores = {100, 80, 60, 40, 20}; + QVBoxLayout *ratingGroup = new QVBoxLayout(); + ratingGroup->setAlignment(Qt::AlignCenter); + addLabel(this, ratingGroup, tr("How would you rate that drive?")); - for (int i = 0; i < emojis.size(); ++i) { - QPushButton *ratingButton = createButton(emojis[i], "rating_button", scores[i], 150, 150); - ratingButtonsLayout->addWidget(ratingButton); - QObject::connect(ratingButton, &QPushButton::clicked, this, &ModelReview::onRatingButtonClicked); + QHBoxLayout *row = new QHBoxLayout(); + row->setSpacing(25); + + QList> ratings{ + {QStringLiteral("๐Ÿคฉ"), 100}, + {QStringLiteral("๐Ÿ™‚"), 80}, + {QStringLiteral("๐Ÿค”"), 60}, + {QStringLiteral("๐Ÿ™"), 40}, + {QStringLiteral("๐Ÿค•"), 20} + }; + + for (const QPair &rating : ratings) { + QPushButton *button = createButton(this, rating.first, "ratingButton", rating.second, 150, 150); + QObject::connect(button, &QPushButton::clicked, this, &FrogPilotModelReview::onRatingButtonClicked); + row->addWidget(button); } - ratingLayout->addLayout(ratingButtonsLayout); + ratingGroup->addLayout(row); + ratingLayout->addLayout(ratingGroup); + ratingLayout->addStretch(1); - blacklistButton = createButton(tr("Blacklist this model"), "blacklist_button", 0, 600, 100); - QObject::connect(blacklistButton, &QPushButton::clicked, this, &ModelReview::onBlacklistButtonClicked); - ratingLayout->addWidget(blacklistButton, 0, Qt::AlignCenter); + QVBoxLayout *blacklistGroup = new QVBoxLayout(); + blacklistGroup->setAlignment(Qt::AlignCenter); + addLabel(this, blacklistGroup, tr("Blacklist this model to remove it from rotation"), 40); + + blacklistButton = createButton(this, tr("Blacklist Model"), "blacklistButton", 0, 600, 100); + QObject::connect(blacklistButton, &QPushButton::clicked, this, &FrogPilotModelReview::onBlacklistButtonClicked); + blacklistGroup->addWidget(blacklistButton, 0, Qt::AlignCenter); + + ratingLayout->addLayout(blacklistGroup); QWidget *ratingWidget = new QWidget(this); ratingWidget->setLayout(ratingLayout); @@ -34,17 +128,40 @@ ModelReview::ModelReview(QWidget *parent) : QFrame(parent) { QVBoxLayout *modelInfoLayout = new QVBoxLayout(); modelInfoLayout->setContentsMargins(50, 25, 50, 20); - titleLabel = addLabel(modelInfoLayout, tr("The model used during that drive was:"), "title"); - modelLabel = addLabel(modelInfoLayout, "", "model"); + addLabel(this, modelInfoLayout, tr("Model used during that drive:")); - modelInfoLayout->addItem(new QSpacerItem(20, 75, QSizePolicy::Minimum, QSizePolicy::Fixed)); + modelLabel = new QLabel("", this); + modelLabel->setAlignment(Qt::AlignCenter); + modelLabel->setStyleSheet(R"( + QLabel { + background-color: #444444; + border-radius: 12px; + color: #FFFFFF; + font-size: 65px; + font-weight: bold; + padding: 12px 24px; + } + )"); + modelInfoLayout->addWidget(modelLabel); + + modelInfoLayout->addSpacing(50); QVBoxLayout *bottomLayout = new QVBoxLayout(); - modelScoreLabel = addLabel(bottomLayout, tr("Current Model Score: 0"), "score"); - modelRankLabel = addLabel(bottomLayout, tr("Current Model Rank: 0"), "rank"); - totalDrivesLabel = addLabel(bottomLayout, tr("Total Model Drives: 0"), "drives"); - totalOverallDrivesLabel = addLabel(bottomLayout, tr("Total Overall Model Drives: 0"), "drives"); - blacklistMessageLabel = addLabel(bottomLayout, "", "blacklist_message"); + bottomLayout->addWidget(createStatBox(tr("Model Rank"), &modelRankLabel, this)); + bottomLayout->addWidget(createStatBox(tr("Model Rating"), &modelRatingLabel, this)); + bottomLayout->addWidget(createStatBox(tr("Model Drives"), &totalDrivesLabel, this)); + bottomLayout->addWidget(createStatBox(tr("Total Drives"), &totalOverallDrivesLabel, this)); + + blacklistMessageLabel = new QLabel("", this); + blacklistMessageLabel->setAlignment(Qt::AlignCenter); + blacklistMessageLabel->setStyleSheet(R"( + QLabel { + color: #C92231; + font-size: 50px; + font-weight: bold; + } + )"); + bottomLayout->addWidget(blacklistMessageLabel); modelInfoLayout->addLayout(bottomLayout); @@ -53,192 +170,143 @@ ModelReview::ModelReview(QWidget *parent) : QFrame(parent) { mainLayout->addWidget(modelInfoWidget); setStyleSheet(R"( - ModelReview { + FrogPilotModelReview { background-color: #333333; - border-radius: 5px; } - QLabel[type="drives"], QLabel[type="question"], QLabel[type="rank"], QLabel[type="score"], QLabel[type="title"] { - font-size: 50px; - font-weight: semi-bold; - color: #FFFFFF; - } - QLabel[type="model"] { - font-size: 75px; - font-weight: bold; - color: #FFFFFF; - } - QLabel[type="blacklist_message"] { - font-size: 40px; - font-weight: bold; + QPushButton#blacklistButton { + background-color: #444444; + border-radius: 12px; color: #C92231; - } - QPushButton[type="rating_button"] { - font-size: 75px; + font-size: 45px; font-weight: bold; - padding: 10px; + padding: 12px 24px; + } + QPushButton#ratingButton { + background-color: #444444; + border-radius: 12px; color: #FFFFFF; - background-color: #555555; - border: 2px solid #FFFFFF; - border-radius: 5px; - } - QPushButton[type="rating_button"]:hover { - background-color: #777777; - } - QPushButton[type="blacklist_button"] { - font-size: 50px; + font-size: 100px; font-weight: bold; - padding: 10px; - color: #C92231; - background-color: #000000; - border: 2px solid #FFFFFF; - border-radius: 5px; + padding: 12px 24px; + } + QPushButton#ratingButton:hover { + background-color: #666666; } )"); -} -QLabel *ModelReview::addLabel(QVBoxLayout *layout, const QString &text, const QString &type) { - QLabel *label = new QLabel(text, this); - label->setProperty("type", type); - label->setAlignment(Qt::AlignCenter); - layout->addWidget(label); - return label; -} - -QPushButton *ModelReview::createButton(const QString &text, const QString &type, int rating, int width, int height) { - QPushButton *button = new QPushButton(text, this); - button->setProperty("type", type); - button->setProperty("rating", rating); - button->setFixedSize(width, height); - return button; -} - -void ModelReview::showEvent(QShowEvent *event) { - QStringList availableModels = QString::fromStdString(params.get("AvailableModels")).split(","); - QStringList availableModelNames = QString::fromStdString(params.get("AvailableModelNames")).split(","); - - QMap modelFileToNameMap; - for (int i = 0; i < qMin(availableModels.size(), availableModelNames.size()); ++i) { - modelFileToNameMap.insert(availableModels[i], processModelName(availableModelNames[i])); - } - - currentModel = frogpilotUIState()->frogpilot_toggles.value("model").toString(); - currentModelFiltered = modelFileToNameMap.value(currentModel); - - mainLayout->setCurrentIndex(modelRated ? 1 : 0); - - checkBlacklistButtonVisibility(); -} - -void ModelReview::mousePressEvent(QMouseEvent *e) { - if (mainLayout->currentIndex() != 1) { - return; - } - - emit driveRated(); -} - -void ModelReview::updateLabel() { - totalDrivesLabel->setText(QString(tr("Total Model Drives: %1")).arg(totalDrives)); - modelLabel->setText(currentModelFiltered); - modelRankLabel->setText(QString(tr("Current Model Rank: %1")).arg(getModelRank())); - modelScoreLabel->setText(QString(tr("Current Model Score: %1")).arg(finalRating)); - totalOverallDrivesLabel->setText(QString(tr("Total Overall Drives: %1")).arg(totalOverallDrives)); - - mainLayout->setCurrentIndex(1); - - QTimer::singleShot(30000, [this]() { - emit driveRated(); - modelRated = false; + QObject::connect(device(), &Device::interactiveTimeout, [this]() { + if (isVisible()) { + emit driveRated(); + modelRated = false; + } + }); + QObject::connect(uiState(), &UIState::offroadTransition, [this](bool offroad) { + if (!offroad) { + emit driveRated(); + modelRated = false; + } }); } -void ModelReview::onRatingButtonClicked() { - int newRating = qobject_cast(sender())->property("rating").toInt(); - - QString jsonString = QString::fromStdString(params.get("ModelDrivesAndScores")); - QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonString.toUtf8()); - QJsonObject jsonObject = jsonDoc.isObject() ? jsonDoc.object() : QJsonObject(); - - QJsonObject modelData = jsonObject.value(currentModelFiltered).toObject(); - int modelDrives = modelData.value("Drives").toInt(); - int modelScore = modelData.value("Score").toInt(); - - totalDrives = modelDrives + 1; - finalRating = ((modelScore * modelDrives) + newRating) / totalDrives; - - modelData["Drives"] = totalDrives; - modelData["Score"] = finalRating; - jsonObject[currentModelFiltered] = modelData; - - params.put("ModelDrivesAndScores", QString(QJsonDocument(jsonObject).toJson(QJsonDocument::Compact)).toStdString()); - - modelRated = true; - updateLabel(); +void FrogPilotModelReview::mousePressEvent(QMouseEvent *e) { + if (mainLayout->currentIndex() == 1) { + emit driveRated(); + } } -void ModelReview::onBlacklistButtonClicked() { - QString jsonString = QString::fromStdString(params.get("ModelDrivesAndScores")); - QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonString.toUtf8()); - QJsonObject jsonObject = jsonDoc.isObject() ? jsonDoc.object() : QJsonObject(); +void FrogPilotModelReview::showEvent(QShowEvent *event) { + QStringList availableModels = QString::fromStdString(params.get("AvailableModels")).split(",", QString::SkipEmptyParts); + availableModelNames = QString::fromStdString(params.get("AvailableModelNames")).split(",", QString::SkipEmptyParts); + blacklistedModels = QString::fromStdString(params.get("BlacklistedModels")).split(",", QString::SkipEmptyParts); - QJsonObject modelData = jsonObject.value(currentModelFiltered).toObject(); - int modelDrives = modelData.value("Drives").toInt(); + blacklistButton->setVisible(!(QSet::fromList(availableModels) - QSet::fromList(blacklistedModels)).isEmpty()); - totalDrives = modelDrives + 1; - modelData["Drives"] = totalDrives; - modelData["Score"] = 0; - jsonObject[currentModelFiltered] = modelData; + QMap modelMap; + for (int i = 0; i < qMin(availableModels.size(), availableModelNames.size()); ++i) { + modelMap.insert(availableModels[i], processModelName(availableModelNames[i])); + } + currentModel = frogpilotUIState()->frogpilot_toggles.value("model").toString(); + currentModelFiltered = modelMap.value(currentModel); + + modelDrivesAndScores = QJsonDocument::fromJson(QString::fromStdString(params.get("ModelDrivesAndScores")).toUtf8()).object(); + currentModelData = modelDrivesAndScores.value(currentModelFiltered).toObject(); + + mainLayout->setCurrentIndex(modelRated ? 1 : 0); +} + +int FrogPilotModelReview::getModelRank() { + QList> modelRatings; + totalOverallDrives = 0; + + for (const QString &model : availableModelNames) { + QString processedModel = processModelName(model); + + QJsonObject modelData = modelDrivesAndScores.value(processedModel).toObject(); + int modelDrives = modelData.value("Drives").toInt(); + int modelRating = modelData.value("Score").toInt(); + totalOverallDrives += modelDrives; + + if (modelRating > 0) { + modelRatings.append(qMakePair(processedModel, modelRating)); + } + } + + std::sort(modelRatings.begin(), modelRatings.end(), [](const QPair &a, const QPair &b) { + if (a.second == b.second) { + return a.first < b.first; + } + return a.second > b.second; + }); + for (int i = 0; i < modelRatings.size(); ++i) { + if (modelRatings[i].first == currentModelFiltered) { + return i + 1; + } + } + return modelRatings.size(); +} + +void FrogPilotModelReview::onBlacklistButtonClicked() { + totalDrives = currentModelData.value("Drives").toInt() + 1; + currentModelData["Drives"] = totalDrives; + currentModelData["Score"] = 0; + modelDrivesAndScores[currentModelFiltered] = currentModelData; if (!blacklistedModels.contains(currentModel)) { blacklistedModels.append(currentModel); params.put("BlacklistedModels", blacklistedModels.join(",").toStdString()); } - params.put("ModelDrivesAndScores", QString(QJsonDocument(jsonObject).toJson(QJsonDocument::Compact)).toStdString()); + params.put("ModelDrivesAndScores", QJsonDocument(modelDrivesAndScores).toJson(QJsonDocument::Compact).toStdString()); blacklistMessageLabel->setText(tr("Model successfully blacklisted!")); + updateLabel(); } -void ModelReview::checkBlacklistButtonVisibility() { - QStringList availableModels = QString::fromStdString(params.get("AvailableModels")).split(","); - blacklistedModels = QString::fromStdString(params.get("BlacklistedModels")).split(",", QString::SkipEmptyParts); +void FrogPilotModelReview::onRatingButtonClicked() { + int modelDrives = currentModelData.value("Drives").toInt(); + int modelRating = currentModelData.value("Score").toInt(); - blacklistButton->setVisible(availableModels.size() > blacklistedModels.size()); + totalDrives = modelDrives + 1; + finalRating = ((modelRating * modelDrives) + sender()->property("rating").toInt()) / totalDrives; + + currentModelData["Drives"] = totalDrives; + currentModelData["Score"] = finalRating; + modelDrivesAndScores[currentModelFiltered] = currentModelData; + + params.put("ModelDrivesAndScores", QJsonDocument(modelDrivesAndScores).toJson(QJsonDocument::Compact).toStdString()); + + modelRated = true; + + updateLabel(); } -int ModelReview::getModelRank() { - QString jsonString = QString::fromStdString(params.get("ModelDrivesAndScores")); - QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonString.toUtf8()); - QJsonObject jsonObject = jsonDoc.isObject() ? jsonDoc.object() : QJsonObject(); +void FrogPilotModelReview::updateLabel() { + modelLabel->setText(currentModelFiltered); + modelRankLabel->setText(tr("#%1").arg(getModelRank())); + modelRatingLabel->setText(tr("%1%").arg(finalRating)); + totalDrivesLabel->setText(tr("%1 %2").arg(totalDrives).arg(totalDrives == 1 ? tr("Drive") : tr("Drives"))); + totalOverallDrivesLabel->setText(tr("%1 Total %2").arg(totalOverallDrives).arg(totalOverallDrives == 1 ? tr("Drive") : tr("Drives"))); - QList> modelScores; - totalOverallDrives = 0; - - QStringList availableModels = QString::fromStdString(params.get("AvailableModelNames")).split(","); - for (const QString &model : availableModels) { - QString processedModel = processModelName(model); - QJsonObject modelData = jsonObject.value(processedModel).toObject(); - - int modelDrives = modelData.value("Drives").toInt(); - int modelScore = modelData.value("Score").toInt(); - - totalOverallDrives += modelDrives; - - if (modelScore > 0) { - modelScores.append(qMakePair(processedModel, modelScore)); - } - } - - std::sort(modelScores.begin(), modelScores.end(), [](QPair &a, QPair &b) { - return a.second > b.second; - }); - - for (int i = 0; i < modelScores.size(); ++i) { - if (modelScores[i].first == currentModelFiltered) { - return i + 1; - } - } - - return 1; + mainLayout->setCurrentIndex(1); } diff --git a/frogpilot/ui/qt/widgets/model_reviewer.h b/frogpilot/ui/qt/widgets/model_reviewer.h index f3593d2c0..11d575622 100644 --- a/frogpilot/ui/qt/widgets/model_reviewer.h +++ b/frogpilot/ui/qt/widgets/model_reviewer.h @@ -2,11 +2,11 @@ #include "selfdrive/ui/ui.h" -class ModelReview : public QFrame { +class FrogPilotModelReview : public QFrame { Q_OBJECT public: - explicit ModelReview(QWidget *parent = nullptr); + explicit FrogPilotModelReview(QWidget *parent = nullptr); signals: void driveRated(); @@ -22,37 +22,33 @@ private slots: private: int getModelRank(); - QLabel *addLabel(QVBoxLayout *layout, const QString &text, const QString &type); - - QPushButton *createButton(const QString &text, const QString &type, int rating, int width, int height); - - void checkBlacklistButtonVisibility(); void updateLabel(); - QStackedLayout *mainLayout; - - QLabel *blacklistMessageLabel; - QLabel *modelLabel; - QLabel *modelRankLabel; - QLabel *modelScoreLabel; - QLabel *questionLabel; - QLabel *titleLabel; - QLabel *totalDrivesLabel; - QLabel *totalOverallDrivesLabel; - - QPushButton *blacklistButton; - - Params params; - Params params_memory{"/dev/shm/params"}; - - QString currentModel; - QString currentModelFiltered; - - QStringList blacklistedModels; - bool modelRated; int finalRating; int totalDrives; int totalOverallDrives; + + Params params; + + QJsonObject currentModelData; + QJsonObject modelDrivesAndScores; + + QLabel *blacklistMessageLabel; + QLabel *modelLabel; + QLabel *modelRankLabel; + QLabel *modelRatingLabel; + QLabel *totalDrivesLabel; + QLabel *totalOverallDrivesLabel; + + QPushButton *blacklistButton; + + QStackedLayout *mainLayout; + + QString currentModel; + QString currentModelFiltered; + + QStringList availableModelNames; + QStringList blacklistedModels; }; diff --git a/opendbc/gm_global_a_powertrain_generated.dbc b/opendbc/gm_global_a_powertrain_generated.dbc index 8de42d598..1c78dd7b0 100644 --- a/opendbc/gm_global_a_powertrain_generated.dbc +++ b/opendbc/gm_global_a_powertrain_generated.dbc @@ -222,7 +222,7 @@ BO_ 715 ASCMGasRegenCmd: 8 K124_ASCM SG_ GasRegenCmdActive : 0|1@0+ (1,0) [0|0] "" NEO SG_ RollingCounter : 7|2@0+ (1,0) [0|0] "" NEO SG_ GasRegenAlwaysOne3 : 23|1@0+ (1,0) [0|1] "" NEO - SG_ GasRegenCmd : 8|14@0+ (1,0) [0|0] "" NEO + SG_ GasRegenCmd : 22|12@0+ (1,0) [0|0] "" NEO BO_ 717 ASCM_2CD: 5 K124_ASCM diff --git a/panda/board/safety/safety_gm.h b/panda/board/safety/safety_gm.h index c7ae19b7d..9d2ad9346 100644 --- a/panda/board/safety/safety_gm.h +++ b/panda/board/safety/safety_gm.h @@ -10,30 +10,16 @@ const SteeringLimits GM_STEERING_LIMITS = { }; const LongitudinalLimits GM_ASCM_LONG_LIMITS = { - .max_gas = 7168, - .min_gas = 5500, - .inactive_gas = 5500, - .max_brake = 400, -}; - -const LongitudinalLimits GM_ASCM_LONG_LIMITS_SPORT = { - .max_gas = 8191, - .min_gas = 5500, - .inactive_gas = 5500, + .max_gas = 3072, + .min_gas = 1404, + .inactive_gas = 1404, .max_brake = 400, }; const LongitudinalLimits GM_CAM_LONG_LIMITS = { - .max_gas = 7496, - .min_gas = 5610, - .inactive_gas = 5650, - .max_brake = 400, -}; - -const LongitudinalLimits GM_CAM_LONG_LIMITS_SPORT = { - .max_gas = 8848, - .min_gas = 5610, - .inactive_gas = 5650, + .max_gas = 3400, + .min_gas = 1514, + .inactive_gas = 1554, .max_brake = 400, }; @@ -157,7 +143,7 @@ static void gm_rx_hook(const CANPacket_t *to_push) { } if ((addr == 0xC9) && ((gm_hw == GM_CAM) || (gm_hw == GM_SDGM))) { - brake_pressed = GET_BIT(to_push, 40U) != 0U; + brake_pressed = GET_BIT(to_push, 40U); } if (addr == 0xC9) { @@ -243,7 +229,7 @@ static bool gm_tx_hook(const CANPacket_t *to_send) { // GAS/REGEN: safety check if (addr == 0x2CB) { bool apply = GET_BIT(to_send, 0U); - int gas_regen = ((GET_BYTE(to_send, 1) & 0x1U) << 13) + ((GET_BYTE(to_send, 2) & 0xFFU) << 5) + ((GET_BYTE(to_send, 3) & 0xF8U) >> 3); + int gas_regen = ((GET_BYTE(to_send, 2) & 0x7FU) << 5) + ((GET_BYTE(to_send, 3) & 0xF8U) >> 3); bool violation = false; // Allow apply bit in pre-enabled and overriding states @@ -300,8 +286,6 @@ static int gm_fwd_hook(int bus_num, int addr) { } static safety_config gm_init(uint16_t param) { - sport_mode = alternative_experience & ALT_EXP_RAISE_LONGITUDINAL_LIMITS_TO_ISO_MAX; - if GET_FLAG(param, GM_PARAM_HW_CAM) { gm_hw = GM_CAM; } else if GET_FLAG(param, GM_PARAM_HW_SDGM) { @@ -313,17 +297,9 @@ static safety_config gm_init(uint16_t param) { gm_force_ascm = GET_FLAG(param, GM_PARAM_HW_ASCM_LONG); if (gm_hw == GM_ASCM || gm_force_ascm) { - if (sport_mode) { - gm_long_limits = &GM_ASCM_LONG_LIMITS_SPORT; - } else { - gm_long_limits = &GM_ASCM_LONG_LIMITS; - } + gm_long_limits = &GM_ASCM_LONG_LIMITS; } else if ((gm_hw == GM_CAM) || (gm_hw == GM_SDGM)) { - if (sport_mode) { - gm_long_limits = &GM_CAM_LONG_LIMITS_SPORT; - } else { - gm_long_limits = &GM_CAM_LONG_LIMITS; - } + gm_long_limits = &GM_CAM_LONG_LIMITS; } else { } diff --git a/panda/board/safety/safety_honda.h b/panda/board/safety/safety_honda.h index a0b3cece9..2c6b50da2 100644 --- a/panda/board/safety/safety_honda.h +++ b/panda/board/safety/safety_honda.h @@ -19,14 +19,6 @@ const LongitudinalLimits HONDA_BOSCH_LONG_LIMITS = { .inactive_gas = -30000, }; -const LongitudinalLimits HONDA_BOSCH_LONG_LIMITS_SPORT = { - .max_accel = 400, // accel is used for brakes - .min_accel = -350, - - .max_gas = 2000, - .inactive_gas = -30000, -}; - const LongitudinalLimits HONDA_NIDEC_LONG_LIMITS = { .max_gas = 198, // 0xc6 .max_brake = 255, @@ -284,8 +276,6 @@ static void honda_rx_hook(const CANPacket_t *to_push) { } static bool honda_tx_hook(const CANPacket_t *to_send) { - sport_mode = alternative_experience & ALT_EXP_RAISE_LONGITUDINAL_LIMITS_TO_ISO_MAX; - bool tx = true; int addr = GET_ADDR(to_send); int bus = GET_BUS(to_send); @@ -329,13 +319,8 @@ static bool honda_tx_hook(const CANPacket_t *to_send) { gas = to_signed(gas, 16); bool violation = false; - if (sport_mode) { - violation |= longitudinal_accel_checks(accel, HONDA_BOSCH_LONG_LIMITS_SPORT); - violation |= longitudinal_gas_checks(gas, HONDA_BOSCH_LONG_LIMITS_SPORT); - } else { - violation |= longitudinal_accel_checks(accel, HONDA_BOSCH_LONG_LIMITS); - violation |= longitudinal_gas_checks(gas, HONDA_BOSCH_LONG_LIMITS); - } + violation |= longitudinal_accel_checks(accel, HONDA_BOSCH_LONG_LIMITS); + violation |= longitudinal_gas_checks(gas, HONDA_BOSCH_LONG_LIMITS); if (violation) { tx = false; } @@ -347,11 +332,7 @@ static bool honda_tx_hook(const CANPacket_t *to_send) { accel = to_signed(accel, 12); bool violation = false; - if (sport_mode) { - violation |= longitudinal_accel_checks(accel, HONDA_BOSCH_LONG_LIMITS_SPORT); - } else { - violation |= longitudinal_accel_checks(accel, HONDA_BOSCH_LONG_LIMITS); - } + violation |= longitudinal_accel_checks(accel, HONDA_BOSCH_LONG_LIMITS); if (violation) { tx = false; } diff --git a/panda/board/safety/safety_hyundai.h b/panda/board/safety/safety_hyundai.h index 27157213d..6e7ba2ba7 100644 --- a/panda/board/safety/safety_hyundai.h +++ b/panda/board/safety/safety_hyundai.h @@ -25,11 +25,6 @@ const LongitudinalLimits HYUNDAI_LONG_LIMITS = { .min_accel = -350, // 1/100 m/s2 }; -const LongitudinalLimits HYUNDAI_LONG_LIMITS_SPORT = { - .max_accel = 400, // 1/100 m/s2 - .min_accel = -350, // 1/100 m/s2 -}; - const CanMsg HYUNDAI_TX_MSGS[] = { {0x340, 0, 8}, // LKAS11 Bus 0 {0x4F1, 0, 4}, // CLU11 Bus 0 @@ -226,8 +221,6 @@ static void hyundai_rx_hook(const CANPacket_t *to_push) { } static bool hyundai_tx_hook(const CANPacket_t *to_send) { - sport_mode = alternative_experience & ALT_EXP_RAISE_LONGITUDINAL_LIMITS_TO_ISO_MAX; - bool tx = true; int addr = GET_ADDR(to_send); @@ -252,13 +245,8 @@ static bool hyundai_tx_hook(const CANPacket_t *to_send) { bool violation = false; - if (sport_mode) { - violation |= longitudinal_accel_checks(desired_accel_raw, HYUNDAI_LONG_LIMITS_SPORT); - violation |= longitudinal_accel_checks(desired_accel_val, HYUNDAI_LONG_LIMITS_SPORT); - } else { - violation |= longitudinal_accel_checks(desired_accel_raw, HYUNDAI_LONG_LIMITS); - violation |= longitudinal_accel_checks(desired_accel_val, HYUNDAI_LONG_LIMITS); - } + violation |= longitudinal_accel_checks(desired_accel_raw, HYUNDAI_LONG_LIMITS); + violation |= longitudinal_accel_checks(desired_accel_val, HYUNDAI_LONG_LIMITS); violation |= (aeb_decel_cmd != 0); violation |= aeb_req; diff --git a/panda/board/safety/safety_hyundai_canfd.h b/panda/board/safety/safety_hyundai_canfd.h index 7e11e1f2a..dbc6d7c4b 100644 --- a/panda/board/safety/safety_hyundai_canfd.h +++ b/panda/board/safety/safety_hyundai_canfd.h @@ -248,11 +248,13 @@ static bool hyundai_canfd_tx_hook(const CANPacket_t *to_send) { bool steer_req = GET_BIT(to_send, 52U); // 2m/s margin - if (hyundai_canfd_taco_tune_hack && (hyundai_canfd_front_left_vego < (11.f + 2.f) || hyundai_canfd_rear_right_vego < (11.f + 2.f))) { + if ((hyundai_canfd_front_left_vego < (11.f + 2.f) && hyundai_canfd_rear_right_vego < (11.f + 2.f)) && hyundai_canfd_taco_tune_hack) { + bool aol_active = (alternative_experience & ALT_EXP_ALWAYS_ON_LATERAL) && lkas_on; + bool violation = false; uint32_t ts = microsecond_timer_get(); - if (controls_allowed || lkas_on) { + if (controls_allowed || aol_active) { // *** global torque limit check *** violation |= max_limit_check(desired_torque, 384, -384); @@ -263,12 +265,12 @@ static bool hyundai_canfd_tx_hook(const CANPacket_t *to_send) { } // no torque if controls is not allowed - if (!(controls_allowed || lkas_on) && (desired_torque != 0)) { + if (!(controls_allowed || aol_active) && (desired_torque != 0)) { violation = true; } // reset to 0 if either controls is not allowed or there's a violation - if (violation || !(controls_allowed || lkas_on)) { + if (violation || !(controls_allowed || aol_active)) { valid_steer_req_count = 0; invalid_steer_req_count = 0; desired_torque_last = 0; diff --git a/panda/board/safety/safety_nissan.h b/panda/board/safety/safety_nissan.h index 30e1445bd..62baf7bcf 100644 --- a/panda/board/safety/safety_nissan.h +++ b/panda/board/safety/safety_nissan.h @@ -44,6 +44,10 @@ static void nissan_rx_hook(const CANPacket_t *to_push) { int bus = GET_BUS(to_push); int addr = GET_ADDR(to_push); + if (addr == 0x1b6) { + acc_main_on = GET_BIT(to_push, 36U); + } + if (bus == (nissan_alt_eps ? 1 : 0)) { if (addr == 0x2) { // Current steering angle @@ -64,10 +68,6 @@ static void nissan_rx_hook(const CANPacket_t *to_push) { UPDATE_VEHICLE_SPEED((right_rear + left_rear) / 2.0 * 0.005 / 3.6); } - if (addr == 0x1b6) { - acc_main_on = GET_BIT(to_push, 36U); - } - // X-Trail 0x15c, Leaf 0x239 if ((addr == 0x15c) || (addr == 0x239)) { if (addr == 0x15c){ diff --git a/panda/board/safety/safety_subaru.h b/panda/board/safety/safety_subaru.h index a4f497dab..e7e970f88 100644 --- a/panda/board/safety/safety_subaru.h +++ b/panda/board/safety/safety_subaru.h @@ -18,7 +18,7 @@ const SteeringLimits SUBARU_STEERING_LIMITS = SUBARU_STEERING_LIMITS_GENERATOR(3071, 50, 70); -const SteeringLimits SUBARU_GEN2_STEERING_LIMITS = SUBARU_STEERING_LIMITS_GENERATOR(1000, 40, 40); +const SteeringLimits SUBARU_GEN2_STEERING_LIMITS = SUBARU_STEERING_LIMITS_GENERATOR(1600, 40, 40); const LongitudinalLimits SUBARU_LONG_LIMITS = { diff --git a/panda/board/safety/safety_toyota.h b/panda/board/safety/safety_toyota.h index 32fb741bb..d37b61359 100644 --- a/panda/board/safety/safety_toyota.h +++ b/panda/board/safety/safety_toyota.h @@ -37,11 +37,6 @@ const LongitudinalLimits TOYOTA_LONG_LIMITS = { .min_accel = -3500, // -3.5 m/s2 }; -const LongitudinalLimits TOYOTA_LONG_LIMITS_SPORT = { - .max_accel = 4000, // 4.0 m/s2 - .min_accel = -3500, // -3.5 m/s2 -}; - // panda interceptor threshold needs to be equivalent to openpilot threshold to avoid controls mismatches // If thresholds are mismatched then it is possible for panda to see the gas fall and rise while openpilot is in the pre-enabled state // Threshold calculated from DBC gains: round((((15 + 75.555) / 0.159375) + ((15 + 151.111) / 0.159375)) / 2) = 805 @@ -289,8 +284,6 @@ static void toyota_rx_hook(const CANPacket_t *to_push) { } static bool toyota_tx_hook(const CANPacket_t *to_send) { - sport_mode = alternative_experience & ALT_EXP_RAISE_LONGITUDINAL_LIMITS_TO_ISO_MAX; - bool tx = true; int addr = GET_ADDR(to_send); int bus = GET_BUS(to_send); @@ -315,11 +308,7 @@ static bool toyota_tx_hook(const CANPacket_t *to_send) { // SecOC cars move accel to 0x183. Only allow inactive accel on 0x343 to match stock behavior violation = desired_accel != TOYOTA_LONG_LIMITS.inactive_accel; } else { - if (sport_mode) { - violation |= longitudinal_accel_checks(desired_accel, TOYOTA_LONG_LIMITS_SPORT); - } else { - violation |= longitudinal_accel_checks(desired_accel, TOYOTA_LONG_LIMITS); - } + violation |= longitudinal_accel_checks(desired_accel, TOYOTA_LONG_LIMITS); } // only ACC messages that cancel are allowed when openpilot is not controlling longitudinal @@ -343,11 +332,7 @@ static bool toyota_tx_hook(const CANPacket_t *to_send) { desired_accel = to_signed(desired_accel, 16); bool violation = false; - if (sport_mode) { - violation |= longitudinal_accel_checks(desired_accel, TOYOTA_LONG_LIMITS_SPORT); - } else { - violation |= longitudinal_accel_checks(desired_accel, TOYOTA_LONG_LIMITS); - } + violation |= longitudinal_accel_checks(desired_accel, TOYOTA_LONG_LIMITS); if (violation) { tx = false; diff --git a/panda/board/safety/safety_volkswagen_mqb.h b/panda/board/safety/safety_volkswagen_mqb.h index 0a84342f5..d880a69a6 100644 --- a/panda/board/safety/safety_volkswagen_mqb.h +++ b/panda/board/safety/safety_volkswagen_mqb.h @@ -20,12 +20,6 @@ const LongitudinalLimits VOLKSWAGEN_MQB_LONG_LIMITS = { .inactive_accel = 3010, // VW sends one increment above the max range when inactive }; -const LongitudinalLimits VOLKSWAGEN_MQB_LONG_LIMITS_SPORT = { - .max_accel = 4000, - .min_accel = -3500, - .inactive_accel = 3010, // VW sends one increment above the max range when inactive -}; - #define MSG_ESP_19 0x0B2 // RX from ABS, for wheel speeds #define MSG_LH_EPS_03 0x09F // RX from EPS, for driver steering torque #define MSG_ESP_05 0x106 // RX from ABS, for brake switch state @@ -203,8 +197,6 @@ static void volkswagen_mqb_rx_hook(const CANPacket_t *to_push) { } static bool volkswagen_mqb_tx_hook(const CANPacket_t *to_send) { - sport_mode = alternative_experience & ALT_EXP_RAISE_LONGITUDINAL_LIMITS_TO_ISO_MAX; - int addr = GET_ADDR(to_send); bool tx = true; @@ -242,13 +234,7 @@ static bool volkswagen_mqb_tx_hook(const CANPacket_t *to_send) { desired_accel = (((GET_BYTE(to_send, 7) << 3) | ((GET_BYTE(to_send, 6) & 0xE0U) >> 5)) * 5U) - 7220U; } - if (sport_mode) { - if (desired_accel != 0) { - violation |= longitudinal_accel_checks(desired_accel, VOLKSWAGEN_MQB_LONG_LIMITS_SPORT); - } - } else { - violation |= longitudinal_accel_checks(desired_accel, VOLKSWAGEN_MQB_LONG_LIMITS); - } + violation |= longitudinal_accel_checks(desired_accel, VOLKSWAGEN_MQB_LONG_LIMITS); if (violation) { tx = false; diff --git a/panda/board/safety/safety_volkswagen_pq.h b/panda/board/safety/safety_volkswagen_pq.h index c8838cf48..795e2c611 100644 --- a/panda/board/safety/safety_volkswagen_pq.h +++ b/panda/board/safety/safety_volkswagen_pq.h @@ -20,12 +20,6 @@ const LongitudinalLimits VOLKSWAGEN_PQ_LONG_LIMITS = { .inactive_accel = 3010, // VW sends one increment above the max range when inactive }; -const LongitudinalLimits VOLKSWAGEN_PQ_LONG_LIMITS_SPORT = { - .max_accel = 4000, - .min_accel = -3500, - .inactive_accel = 3010, // VW sends one increment above the max range when inactive -}; - #define MSG_LENKHILFE_3 0x0D0 // RX from EPS, for steering angle and driver steering torque #define MSG_HCA_1 0x0D2 // TX by OP, Heading Control Assist steering torque #define MSG_BREMSE_1 0x1A0 // RX from ABS, for ego speed @@ -124,11 +118,13 @@ static void volkswagen_pq_rx_hook(const CANPacket_t *to_push) { update_sample(&torque_driver, torque_driver_new); } + if (addr == MSG_MOTOR_5) { + acc_main_on = GET_BIT(to_push, 50U); + } + if (volkswagen_longitudinal) { if (addr == MSG_MOTOR_5) { // ACC main switch on is a prerequisite to enter controls, exit controls immediately on main switch off - // Signal: Motor_5.GRA_Hauptschalter - acc_main_on = GET_BIT(to_push, 50U); if (!acc_main_on) { controls_allowed = false; } @@ -176,8 +172,6 @@ static void volkswagen_pq_rx_hook(const CANPacket_t *to_push) { } static bool volkswagen_pq_tx_hook(const CANPacket_t *to_send) { - sport_mode = alternative_experience & ALT_EXP_RAISE_LONGITUDINAL_LIMITS_TO_ISO_MAX; - int addr = GET_ADDR(to_send); bool tx = true; @@ -206,14 +200,8 @@ static bool volkswagen_pq_tx_hook(const CANPacket_t *to_send) { // Signal: ACC_System.ACS_Sollbeschl (acceleration in m/s2, scale 0.005, offset -7.22) int desired_accel = ((((GET_BYTE(to_send, 4) & 0x7U) << 8) | GET_BYTE(to_send, 3)) * 5U) - 7220U; - if (sport_mode) { - if (longitudinal_accel_checks(desired_accel, VOLKSWAGEN_PQ_LONG_LIMITS_SPORT)) { - tx = false; - } - } else { - if (longitudinal_accel_checks(desired_accel, VOLKSWAGEN_PQ_LONG_LIMITS)) { - tx = false; - } + if (longitudinal_accel_checks(desired_accel, VOLKSWAGEN_PQ_LONG_LIMITS)) { + tx = false; } } diff --git a/panda/board/safety_declarations.h b/panda/board/safety_declarations.h index 25014a3d0..09671e96f 100644 --- a/panda/board/safety_declarations.h +++ b/panda/board/safety_declarations.h @@ -220,7 +220,6 @@ bool brake_pressed_prev = false; bool regen_braking = false; bool regen_braking_prev = false; bool cruise_engaged_prev = false; -bool sport_mode = false; struct sample_t vehicle_speed; bool vehicle_moving = false; bool acc_main_on = false; // referred to as "ACC off" in ISO 15622:2018 diff --git a/panda/tests/safety/common.py b/panda/tests/safety/common.py index f381f2126..fc746f75f 100644 --- a/panda/tests/safety/common.py +++ b/panda/tests/safety/common.py @@ -339,6 +339,42 @@ class TorqueSteeringSafetyTestBase(PandaSafetyTestBase, abc.ABC): for _ in range(10): self.assertFalse(self._tx(self._torque_cmd_msg(self.MAX_TORQUE, 1))) + # FrogPilot tests + def _toggle_aol(self, toggle_on): + """Toggles "Always On Lateral" On/Off""" + pass + + def test_always_on_lateral(self): + if self._toggle_aol(True) is None: + raise unittest.SkipTest("AOL message not implemented for this safety mode") + + self.safety.set_controls_allowed(False) + + torque_cmd = self.MAX_RATE_UP # Use the max rate + + # Without alt exp, make sure steering is blocked + self.safety.set_alternative_experience(0) + self._set_prev_torque(0) + self.assertFalse(self._tx(self._torque_cmd_msg(torque_cmd))) + + # With alt exp, but without main on, steering should be blocked + self.safety.set_alternative_experience(ALTERNATIVE_EXPERIENCE.ALWAYS_ON_LATERAL) + self._rx(self._toggle_aol(False)) + self._set_prev_torque(0) + self.assertFalse(self._tx(self._torque_cmd_msg(torque_cmd))) + self.assertFalse(self.safety.get_longitudinal_allowed()) + + # With alt exp and main on, steering should be allowed + self._rx(self._toggle_aol(True)) + self._set_prev_torque(0) + self.assertTrue(self._tx(self._torque_cmd_msg(torque_cmd))) + self.assertFalse(self.safety.get_longitudinal_allowed()) + + # Turn off main, steering should be blocked again + self._rx(self._toggle_aol(False)) + self.safety.set_desired_torque_last(torque_cmd) + self.assertFalse(self._tx(self._torque_cmd_msg(torque_cmd))) + class SteerRequestCutSafetyTest(TorqueSteeringSafetyTestBase, abc.ABC): @@ -769,6 +805,44 @@ class AngleSteeringSafetyTest(PandaSafetyTestBase): should_tx = controls_allowed if steer_control_enabled else angle_cmd == angle_meas self.assertEqual(should_tx, self._tx(self._angle_cmd_msg(angle_cmd, steer_control_enabled))) + # FrogPilot tests + def _toggle_aol(self, toggle_on): + """Toggles "Always On Lateral" on/off""" + pass + + def test_always_on_lateral(self): + if self._toggle_aol(True) is None: + raise unittest.SkipTest("AOL message not implemented for this safety mode") + + self.safety.set_controls_allowed(False) + + self._reset_angle_measurement(0) + self._reset_speed_measurement(1) + angle_cmd = self.ANGLE_RATE_UP[0] / 2.0 # Use half of the max angle rate + + # Without alt exp, make sure steering is blocked + self.safety.set_alternative_experience(0) + self._set_prev_desired_angle(0) + self.assertFalse(self._tx(self._angle_cmd_msg(angle=angle_cmd, enabled=True))) + + # With alt exp, but without main on, steering should be blocked + self.safety.set_alternative_experience(ALTERNATIVE_EXPERIENCE.ALWAYS_ON_LATERAL) + self._rx(self._toggle_aol(False)) + self._set_prev_desired_angle(0) + self.assertFalse(self._tx(self._angle_cmd_msg(angle=angle_cmd, enabled=True))) + self.assertFalse(self.safety.get_longitudinal_allowed()) + + # With alt exp and main on, steering should be allowed + self._rx(self._toggle_aol(True)) + self._set_prev_desired_angle(0) + self.assertTrue(self._tx(self._angle_cmd_msg(angle=angle_cmd, enabled=True))) + self.assertFalse(self.safety.get_longitudinal_allowed()) + + # Turn off main, steering should be blocked again + self._rx(self._toggle_aol(False)) + self._set_prev_desired_angle(angle_cmd) + self.assertFalse(self._tx(self._angle_cmd_msg(angle=angle_cmd, enabled=True))) + class PandaSafetyTest(PandaSafetyTestBase): TX_MSGS: list[list[int]] | None = None diff --git a/panda/tests/safety/hyundai_common.py b/panda/tests/safety/hyundai_common.py index da18671af..431dc6943 100644 --- a/panda/tests/safety/hyundai_common.py +++ b/panda/tests/safety/hyundai_common.py @@ -72,9 +72,31 @@ class HyundaiButtonBase: self.assertEqual(controls_allowed, self.safety.get_controls_allowed()) self._rx(self._button_msg(Buttons.NONE)) + # FrogPilot tests + def _toggle_aol(self, toggle_on): + """ + Simulates toggling the main cruise button. The safety model requires a + press and release to change the main cruise state. This function + resets the safety model to a known state before each call. + """ + if not hasattr(self, "_aol_state"): + self._aol_state = False + + # Already in the requested state + if toggle_on == self._aol_state: + return None + + # Toggle: press + release sequence + self._rx(self._button_msg(Buttons.NONE, main_button=1)) + self._rx(self._button_msg(Buttons.NONE, main_button=0)) + + self._aol_state = toggle_on + return None # avoid duplicate message in harness + class HyundaiLongitudinalBase(common.LongitudinalAccelSafetyTest): # pylint: disable=no-member,abstract-method + __test__ = False DISABLED_ECU_UDS_MSG: tuple[int, int] DISABLED_ECU_ACTUATION_MSG: tuple[int, int] @@ -154,4 +176,3 @@ class HyundaiLongitudinalBase(common.LongitudinalAccelSafetyTest): self.assertFalse(self.safety.get_relay_malfunction()) self._rx(make_msg(bus, addr, 8)) self.assertTrue(self.safety.get_relay_malfunction()) - diff --git a/panda/tests/safety/test_chrysler.py b/panda/tests/safety/test_chrysler.py index 5bbb6dd10..5c9d156a9 100644 --- a/panda/tests/safety/test_chrysler.py +++ b/panda/tests/safety/test_chrysler.py @@ -72,6 +72,12 @@ class TestChryslerSafety(common.PandaCarSafetyTest, common.MotorTorqueSteeringSa self.assertFalse(self._tx(self._button_msg(cancel=True, resume=True))) self.assertFalse(self._tx(self._button_msg(cancel=False, resume=False))) + # FrogPilot tests + def _toggle_aol(self, toggle_on): + # DAS_3, bit 20 is ACC_AVAILABLE + values = {"ACC_AVAILABLE": 1 if toggle_on else 0} + return self.packer.make_can_msg_panda("DAS_3", self.DAS_BUS, values) + class TestChryslerRamDTSafety(TestChryslerSafety): TX_MSGS = [[0xB1, 2], [0xA6, 0], [0xFA, 0]] diff --git a/panda/tests/safety/test_defaults.py b/panda/tests/safety/test_defaults.py index 81bafeefc..763e26546 100644 --- a/panda/tests/safety/test_defaults.py +++ b/panda/tests/safety/test_defaults.py @@ -8,6 +8,8 @@ from panda.tests.libpanda import libpanda_py class TestDefaultRxHookBase(common.PandaSafetyTest): + __test__ = False + def test_rx_hook(self): # default rx hook allows all msgs for bus in range(4): diff --git a/panda/tests/safety/test_ford.py b/panda/tests/safety/test_ford.py index 1be3a273c..79a8a3efa 100644 --- a/panda/tests/safety/test_ford.py +++ b/panda/tests/safety/test_ford.py @@ -354,6 +354,17 @@ class TestFordSafetyBase(common.PandaCarSafetyTest): for bus in (0, 2): self.assertEqual(enabled, self._tx(self._acc_button_msg(Buttons.CANCEL, bus))) + # FrogPilot tests + def _toggle_aol(self, toggle_on): + # EngBrakeData, CcStat_D_Actl is the cruise state + # 3 is standby (main on), 5 is active (engaged) + brake = self.safety.get_brake_pressed_prev() + values = { + "BpedDrvAppl_D_Actl": 2 if brake else 1, + "CcStat_D_Actl": 3 if toggle_on else 0, + } + return self.packer.make_can_msg_panda("EngBrakeData", 0, values) + class TestFordStockSafety(TestFordSafetyBase): STEER_MESSAGE = MSG_LateralMotionControl diff --git a/panda/tests/safety/test_gm.py b/panda/tests/safety/test_gm.py index 860519825..4c140f915 100644 --- a/panda/tests/safety/test_gm.py +++ b/panda/tests/safety/test_gm.py @@ -140,6 +140,12 @@ class TestGmSafetyBase(common.PandaCarSafetyTest, common.DriverTorqueSteeringSaf values = {"ACCButtons": buttons} return self.packer.make_can_msg_panda("ASCMSteeringButton", self.BUTTONS_BUS, values) + # FrogPilot tests + def _toggle_aol(self, toggle_on): + # ECMEngineStatus, bit 29 is CruiseMainOn + values = {"CruiseMainOn": 1 if toggle_on else 0} + return self.packer.make_can_msg_panda("ECMEngineStatus", 0, values) + class TestGmAscmSafety(GmLongitudinalBase, TestGmSafetyBase): TX_MSGS = [[0x180, 0], [0x409, 0], [0x40A, 0], [0x2CB, 0], [0x370, 0], # pt bus diff --git a/panda/tests/safety/test_honda.py b/panda/tests/safety/test_honda.py index 8262b5256..62bcf7262 100644 --- a/panda/tests/safety/test_honda.py +++ b/panda/tests/safety/test_honda.py @@ -250,6 +250,13 @@ class HondaBase(common.PandaCarSafetyTest): self.assertTrue(self._tx(self._send_steer_msg(0x0000))) self.assertFalse(self._tx(self._send_steer_msg(0x1000))) + # FrogPilot tests + def _toggle_aol(self, toggle_on): + # SCM_FEEDBACK, bit 28 is MAIN_ON + values = {"MAIN_ON": 1 if toggle_on else 0, "COUNTER": self.cnt_acc_state % 4} + self.__class__.cnt_acc_state += 1 + return self.packer.make_can_msg_panda("SCM_FEEDBACK", self.PT_BUS, values) + # ********************* Honda Nidec ********************** diff --git a/panda/tests/safety/test_hyundai_canfd.py b/panda/tests/safety/test_hyundai_canfd.py index 7f280b631..b440bf0e7 100644 --- a/panda/tests/safety/test_hyundai_canfd.py +++ b/panda/tests/safety/test_hyundai_canfd.py @@ -17,7 +17,7 @@ class TestHyundaiCanfdBase(HyundaiButtonBase, common.PandaCarSafetyTest, common. MAX_RATE_UP = 2 MAX_RATE_DOWN = 3 - MAX_TORQUE = 270 + MAX_TORQUE = 330 MAX_RT_DELTA = 112 RT_INTERVAL = 250000 @@ -78,6 +78,28 @@ class TestHyundaiCanfdBase(HyundaiButtonBase, common.PandaCarSafetyTest, common. } return self.packer.make_can_msg_panda("CRUISE_BUTTONS", bus, values) + # FrogPilot tests + def _toggle_aol(self, toggle_on): + if not hasattr(self, "_aol_state"): + self._aol_state = False + + # Already in the requested state + if toggle_on == self._aol_state: + return None + + # Simulate button press + release + values = { + "CRUISE_BUTTONS": 0, + "ADAPTIVE_CRUISE_MAIN_BTN": 0, + "LFA_BTN": 1, + "COUNTER": 0, + } + self._rx(self.packer.make_can_msg_panda("CRUISE_BUTTONS", self.PT_BUS, values)) + self._rx(self.packer.make_can_msg_panda("CRUISE_BUTTONS", self.PT_BUS, {**values, "LFA_BTN": 0})) + + self._aol_state = toggle_on + return None # avoid duplicate message in harness + class TestHyundaiCanfdHDA1Base(TestHyundaiCanfdBase): @@ -155,6 +177,28 @@ class TestHyundaiCanfdHDA1AltButtons(TestHyundaiCanfdHDA1Base): self.safety.set_controls_allowed(enabled) self.assertFalse(self._tx(self._button_msg(btn))) + # FrogPilot tests + def _toggle_aol(self, toggle_on): + if not hasattr(self, "_aol_state"): + self._aol_state = False + + # Already in the requested state + if toggle_on == self._aol_state: + return None + + # Simulate button press + release + values = { + "CRUISE_BUTTONS_ALT": 0, + "ADAPTIVE_CRUISE_MAIN_BTN": 0, + "LFA_BTN": 1, + "COUNTER": 0, + } + self._rx(self.packer.make_can_msg_panda("CRUISE_BUTTONS_ALT", self.PT_BUS, values)) + self._rx(self.packer.make_can_msg_panda("CRUISE_BUTTONS_ALT", self.PT_BUS, {**values, "LFA_BTN": 0})) + + self._aol_state = toggle_on + return None # avoid duplicate message in harness + class TestHyundaiCanfdHDA2EV(TestHyundaiCanfdBase): @@ -268,5 +312,91 @@ class TestHyundaiCanfdHDA1Long(HyundaiLongitudinalBase, TestHyundaiCanfdHDA1Base pass +# FrogPilot tests +class TestTacoTuneHack(TestHyundaiCanfdHDA2EV): + + # Vego = raw_speed * 0.00868. Low speed is < 13 m/s. + # 13 / 0.00868 = 1497.7. So raw speed 1497 is low, 1498 is high. + SPEED_LOW = 1497 + SPEED_HIGH = 1498 + + def setUp(self): + self.packer = CANPackerPanda("hyundai_canfd") + self.safety = libpanda_py.libpanda + # HDA2 EV with Taco Tune Hack flag + param = Panda.FLAG_HYUNDAI_CANFD_HDA2 | Panda.FLAG_HYUNDAI_EV_GAS | Panda.FLAG_HYUNDAI_TACO_TUNE_HACK + self.safety.set_safety_hooks(Panda.SAFETY_HYUNDAI_CANFD, param) + self.safety.init_tests() + + self.MAX_TORQUE = super().MAX_TORQUE + + def test_taco_tune_hack(self): + # Override MAX_TORQUE to the hacked value + self.MAX_TORQUE = 384 + + # Test at low speed with controls allowed + self.safety.init_tests() + self.safety.set_controls_allowed(True) + self._rx(self._speed_msg(self.SPEED_LOW)) + + # Rate limits should be bypassed, and torque limit raised to MAX_TORQUE + self._set_prev_torque(0) + self.assertTrue(self._tx(self._torque_cmd_msg(self.MAX_TORQUE))) + self.assertFalse(self._tx(self._torque_cmd_msg(self.MAX_TORQUE + 1))) + + # Test at low speed with controls not allowed + self.safety.set_controls_allowed(False) + self.assertTrue(self._tx(self._torque_cmd_msg(0))) + self.assertFalse(self._tx(self._torque_cmd_msg(1))) + + # Test at high speed with controls allowed + self.safety.init_tests() + self.safety.set_controls_allowed(True) + self._rx(self._speed_msg(self.SPEED_HIGH)) + + # Normal rate limits should apply + self._set_prev_torque(0) + self.assertTrue(self._tx(self._torque_cmd_msg(self.MAX_RATE_UP))) + self._set_prev_torque(0) # Reset prev_torque to test the limit from 0 + self.assertFalse(self._tx(self._torque_cmd_msg(self.MAX_RATE_UP + 1))) + + # Normal max torque should apply + self._set_prev_torque(super().MAX_TORQUE - 1) + self.assertTrue(self._tx(self._torque_cmd_msg(super().MAX_TORQUE))) + self.assertFalse(self._tx(self._torque_cmd_msg(super().MAX_TORQUE + 1))) + + def test_against_torque_driver(self): + self._rx(self._speed_msg(self.SPEED_HIGH)) + super().test_against_torque_driver() + + def test_steer_req_bit_realtime(self): + self._rx(self._speed_msg(self.SPEED_HIGH)) + super().test_steer_req_bit_realtime() + + def test_steer_req_bit_frames(self): + self._rx(self._speed_msg(self.SPEED_HIGH)) + super().test_steer_req_bit_frames() + + def test_steer_req_bit_multi_invalid(self): + self._rx(self._speed_msg(self.SPEED_HIGH)) + super().test_steer_req_bit_multi_invalid() + + def test_steer_safety_check(self): + self._rx(self._speed_msg(self.SPEED_HIGH)) + super().test_steer_safety_check() + + def test_steer_req_bit(self): + self._rx(self._speed_msg(self.SPEED_HIGH)) + super().test_steer_req_bit() + + def test_non_realtime_limit_up(self): + self._rx(self._speed_msg(self.SPEED_HIGH)) + super().test_non_realtime_limit_up() + + def test_realtime_limits(self): + self._rx(self._speed_msg(self.SPEED_HIGH)) + super().test_realtime_limits() + + if __name__ == "__main__": unittest.main() diff --git a/panda/tests/safety/test_mazda.py b/panda/tests/safety/test_mazda.py index 9d2fb8988..b7ea93f41 100644 --- a/panda/tests/safety/test_mazda.py +++ b/panda/tests/safety/test_mazda.py @@ -81,6 +81,12 @@ class TestMazdaSafety(common.PandaCarSafetyTest, common.DriverTorqueSteeringSafe self.assertTrue(self._tx(self._button_msg(cancel=True))) self.assertTrue(self._tx(self._button_msg(resume=True))) + # FrogPilot tests + def _toggle_aol(self, toggle_on): + # CRZ_CTRL, CRZ_AVAILABLE is the main on button + values = {"CRZ_AVAILABLE": 1 if toggle_on else 0} + return self.packer.make_can_msg_panda("CRZ_CTRL", 0, values) + if __name__ == "__main__": unittest.main() diff --git a/panda/tests/safety/test_nissan.py b/panda/tests/safety/test_nissan.py index 4c83ca329..ce74a9daa 100644 --- a/panda/tests/safety/test_nissan.py +++ b/panda/tests/safety/test_nissan.py @@ -78,6 +78,12 @@ class TestNissanSafety(common.PandaCarSafetyTest, common.AngleSteeringSafetyTest tx = self._tx(self._acc_button_cmd(**args)) self.assertEqual(tx, should_tx) + # FrogPilot tests + def _toggle_aol(self, toggle_on): + # PRO_PILOT, CRUISE_ON is the main on button for X-Trail/Rogue/Altima + values = {"CRUISE_ON": 1 if toggle_on else 0} + return self.packer.make_can_msg_panda("PRO_PILOT", 2, values) + class TestNissanSafetyAltEpsBus(TestNissanSafety): """Altima uses different buses""" @@ -112,6 +118,12 @@ class TestNissanLeafSafety(TestNissanSafety): def test_acc_buttons(self): pass + # FrogPilot tests + def _toggle_aol(self, toggle_on): + # CRUISE_THROTTLE, CRUISE_AVAILABLE is the main on button for Leaf + values = {"CRUISE_AVAILABLE": 1 if toggle_on else 0} + return self.packer.make_can_msg_panda("CRUISE_THROTTLE", 0, values) + if __name__ == "__main__": unittest.main() diff --git a/panda/tests/safety/test_subaru.py b/panda/tests/safety/test_subaru.py index 7d07f79aa..162b1a566 100644 --- a/panda/tests/safety/test_subaru.py +++ b/panda/tests/safety/test_subaru.py @@ -106,6 +106,12 @@ class TestSubaruSafetyBase(common.PandaCarSafetyTest): values = {"Cruise_Activated": enable} return self.packer.make_can_msg_panda("CruiseControl", self.ALT_MAIN_BUS, values) + # FrogPilot tests + def _toggle_aol(self, toggle_on): + # CruiseControl, Cruise_On is the main on button + values = {"Cruise_On": 1 if toggle_on else 0} + return self.packer.make_can_msg_panda("CruiseControl", self.ALT_MAIN_BUS, values) + class TestSubaruStockLongitudinalSafetyBase(TestSubaruSafetyBase): def _cancel_msg(self, cancel, cruise_throttle=0): @@ -155,7 +161,7 @@ class TestSubaruLongitudinalSafetyBase(TestSubaruSafetyBase, common.Longitudinal class TestSubaruTorqueSafetyBase(TestSubaruSafetyBase, common.DriverTorqueSteeringSafetyTest, common.SteerRequestCutSafetyTest): MAX_RATE_UP = 50 MAX_RATE_DOWN = 70 - MAX_TORQUE = 2047 + MAX_TORQUE = 3071 # Safety around steering req bit MIN_VALID_STEERING_FRAMES = 7 @@ -178,7 +184,7 @@ class TestSubaruGen2TorqueSafetyBase(TestSubaruTorqueSafetyBase): MAX_RATE_UP = 40 MAX_RATE_DOWN = 40 - MAX_TORQUE = 1000 + MAX_TORQUE = 1600 class TestSubaruGen2TorqueStockLongitudinalSafety(TestSubaruStockLongitudinalSafetyBase, TestSubaruGen2TorqueSafetyBase): diff --git a/panda/tests/safety/test_subaru_preglobal.py b/panda/tests/safety/test_subaru_preglobal.py index 06c4cdefc..e78addd85 100644 --- a/panda/tests/safety/test_subaru_preglobal.py +++ b/panda/tests/safety/test_subaru_preglobal.py @@ -60,6 +60,12 @@ class TestSubaruPreglobalSafety(common.PandaCarSafetyTest, common.DriverTorqueSt values = {"Cruise_Activated": enable} return self.packer.make_can_msg_panda("CruiseControl", 0, values) + # FrogPilot tests + def _toggle_aol(self, toggle_on): + # CruiseControl, Cruise_On is the main on button + values = {"Cruise_On": 1 if toggle_on else 0} + return self.packer.make_can_msg_panda("CruiseControl", 0, values) + class TestSubaruPreglobalReversedDriverTorqueSafety(TestSubaruPreglobalSafety): FLAGS = Panda.FLAG_SUBARU_PREGLOBAL_REVERSED_DRIVER_TORQUE diff --git a/panda/tests/safety/test_tesla.py b/panda/tests/safety/test_tesla.py index 9461ff68f..fb4f1670a 100644 --- a/panda/tests/safety/test_tesla.py +++ b/panda/tests/safety/test_tesla.py @@ -107,6 +107,12 @@ class TestTeslaSteeringSafety(TestTeslaSafety, common.AngleSteeringSafetyTest): tx = self._tx(self._control_lever_cmd(btn)) self.assertEqual(tx, should_tx) + # FrogPilot tests + def _toggle_aol(self, toggle_on): + # DI_state, DI_cruiseState is the cruise state, 1 is standby + values = {"DI_cruiseState": 1 if toggle_on else 0} + return self.packer.make_can_msg_panda("DI_state", 0, values) + class TestTeslaRavenSteeringSafety(TestTeslaSteeringSafety): def setUp(self): diff --git a/panda/tests/safety/test_toyota.py b/panda/tests/safety/test_toyota.py index 0743c67e8..77ba81698 100644 --- a/panda/tests/safety/test_toyota.py +++ b/panda/tests/safety/test_toyota.py @@ -9,7 +9,8 @@ from panda.tests.libpanda import libpanda_py import panda.tests.safety.common as common from panda.tests.safety.common import CANPackerPanda -TOYOTA_COMMON_TX_MSGS = [[0x2E4, 0], [0x191, 0], [0x412, 0], [0x343, 0], [0x1D2, 0]] # LKAS + LTA + ACC & PCM cancel cmds +TOYOTA_COMMON_TX_MSGS = [[0x2E4, 0], [0x191, 0], [0x412, 0], [0x343, 0], [0x1D2, 0], [0x1D3, 0]] # LKAS + LTA + ACC & PCM cancel cmds +TOYOTA_SECOC_TX_MSGS = [[0x131, 0]] + TOYOTA_COMMON_TX_MSGS TOYOTA_COMMON_LONG_TX_MSGS = [[0x283, 0], [0x2E6, 0], [0x2E7, 0], [0x33E, 0], [0x344, 0], [0x365, 0], [0x366, 0], [0x4CB, 0], # DSU bus 0 [0x128, 1], [0x141, 1], [0x160, 1], [0x161, 1], [0x470, 1], # DSU bus 1 [0x411, 0], # PCS_HUD @@ -86,7 +87,7 @@ class TestToyotaSafetyBase(common.PandaCarSafetyTest, common.LongitudinalAccelSa (False, b"\x0F\x03\xAA\xAA\x00\x00\x00\x00"), # non-tester present (True, b"\x0F\x02\x3E\x00\x00\x00\x00\x00")): tester_present = libpanda_py.make_CANPacket(0x750, 0, msg) - self.assertEqual(should_tx and not stock_longitudinal, self._tx(tester_present)) + self.assertEqual(should_tx, self._tx(tester_present)) def test_block_aeb(self, stock_longitudinal: bool = False): for controls_allowed in (True, False): @@ -108,7 +109,8 @@ class TestToyotaSafetyBase(common.PandaCarSafetyTest, common.LongitudinalAccelSa self.safety.set_controls_allowed(engaged) should_tx = not req and not req2 and angle == 0 and torque_wind_down == 0 - self.assertEqual(should_tx, self._tx(self._lta_msg(req, req2, angle, torque_wind_down))) + self.assertEqual(should_tx, self._tx(self._lta_msg(req, req2, angle, torque_wind_down)), + f"{req=} {req2=} {angle=} {torque_wind_down=}") def test_rx_hook(self): # checksum checks @@ -126,6 +128,12 @@ class TestToyotaSafetyBase(common.PandaCarSafetyTest, common.LongitudinalAccelSa self.assertFalse(self._rx(to_push)) self.assertFalse(self.safety.get_controls_allowed()) + # FrogPilot tests + def _toggle_aol(self, toggle_on): + # pcm_cruise_2, bit 15 is toggle_on + values = {"MAIN_ON": 1 if toggle_on else 0} + return self.packer.make_can_msg_panda("PCM_CRUISE_2", 0, values) + class TestToyotaSafetyGasInterceptorBase(common.GasInterceptorSafetyTest, TestToyotaSafetyBase): @@ -363,5 +371,38 @@ class TestToyotaStockLongitudinalAngle(TestToyotaStockLongitudinalBase, TestToyo self.safety.init_tests() +class TestToyotaSecOcSafety(TestToyotaStockLongitudinalBase): + + TX_MSGS = TOYOTA_SECOC_TX_MSGS + RELAY_MALFUNCTION_ADDRS = {0: (0x2E4,)} + FWD_BLACKLISTED_ADDRS = {2: [0x2E4, 0x412, 0x191, 0x131]} + + def setUp(self): + self.packer = CANPackerPanda("toyota_rav4_prime_generated") + self.safety = libpanda_py.libpanda + self.safety.set_safety_hooks(Panda.SAFETY_TOYOTA, self.EPS_SCALE | Panda.FLAG_TOYOTA_STOCK_LONGITUDINAL | Panda.FLAG_TOYOTA_SECOC) + self.safety.init_tests() + + # This platform also has alternate brake and PCM messages, but same naming in the DBC, so same packers work + + def _user_gas_msg(self, gas): + values = {"GAS_PEDAL_USER": gas} + return self.packer.make_can_msg_panda("GAS_PEDAL", 0, values) + + # This platform sends both STEERING_LTA (same as other Toyota) and STEERING_LTA_2 (SecOC signed) + # STEERING_LTA is checked for no-actuation by the base class, STEERING_LTA_2 is checked for no-actuation below + + def _lta_2_msg(self, req, req2, angle_cmd, torque_wind_down=100): + values = {"STEER_REQUEST": req, "STEER_REQUEST_2": req2, "STEER_ANGLE_CMD": angle_cmd} + return self.packer.make_can_msg_panda("STEERING_LTA_2", 0, values) + + def test_lta_2_steer_cmd(self): + for engaged, req, req2, angle in itertools.product([True, False], [0, 1], [0, 1], np.linspace(-20, 20, 5)): + self.safety.set_controls_allowed(engaged) + + should_tx = not req and not req2 and angle == 0 + self.assertEqual(should_tx, self._tx(self._lta_2_msg(req, req2, angle)), f"{req=} {req2=} {angle=}") + + if __name__ == "__main__": unittest.main() diff --git a/panda/tests/safety/test_volkswagen_mqb.py b/panda/tests/safety/test_volkswagen_mqb.py index 276ee6c27..cbc18f710 100644 --- a/panda/tests/safety/test_volkswagen_mqb.py +++ b/panda/tests/safety/test_volkswagen_mqb.py @@ -134,6 +134,11 @@ class TestVolkswagenMqbSafety(common.PandaCarSafetyTest, common.DriverTorqueStee self.assertEqual(0, self.safety.get_torque_driver_max()) self.assertEqual(0, self.safety.get_torque_driver_min()) + # FrogPilot tests + def _toggle_aol(self, toggle_on): + # TSK_06, TSK_Status is the cruise state, 2 is standby + return self._tsk_status_msg(False, main_switch=toggle_on) + class TestVolkswagenMqbStockSafety(TestVolkswagenMqbSafety): TX_MSGS = [[MSG_HCA_01, 0], [MSG_LDW_02, 0], [MSG_LH_EPS_03, 2], [MSG_GRA_ACC_01, 0], [MSG_GRA_ACC_01, 2]] diff --git a/panda/tests/safety/test_volkswagen_pq.py b/panda/tests/safety/test_volkswagen_pq.py index f2bc31786..9badc2673 100644 --- a/panda/tests/safety/test_volkswagen_pq.py +++ b/panda/tests/safety/test_volkswagen_pq.py @@ -115,6 +115,11 @@ class TestVolkswagenPqSafety(common.PandaCarSafetyTest, common.DriverTorqueSteer self.assertEqual(0, self.safety.get_torque_driver_max()) self.assertEqual(0, self.safety.get_torque_driver_min()) + # FrogPilot tests + def _toggle_aol(self, toggle_on): + # Motor_5, GRA_Hauptschalter is the main cruise switch + return self._motor_5_msg(main_switch=toggle_on) + class TestVolkswagenPqStockSafety(TestVolkswagenPqSafety): # Transmit of GRA_Neu is allowed on bus 0 and 2 to keep compatibility with gateway and camera integration diff --git a/selfdrive/car/car_helpers.py b/selfdrive/car/car_helpers.py index 1d8babd32..8e70edd44 100644 --- a/selfdrive/car/car_helpers.py +++ b/selfdrive/car/car_helpers.py @@ -2,7 +2,9 @@ import os import time from collections.abc import Callable -from cereal import car +import openpilot.system.sentry as sentry + +from cereal import car, custom from openpilot.common.params import Params from openpilot.selfdrive.car.interfaces import get_interface_attr from openpilot.selfdrive.car.fingerprints import eliminate_incompatible_cars, all_legacy_fingerprint_cars @@ -17,10 +19,11 @@ from openpilot.system.version import get_build_metadata FRAME_FINGERPRINT = 100 # 1s EventName = car.CarEvent.EventName +FrogPilotEventName = custom.FrogPilotCarEvent.EventName def get_startup_event(car_recognized, controller_available, fw_seen): - event = EventName.customStartupAlert + event = FrogPilotEventName.customStartupAlert if not car_recognized: if fw_seen: @@ -200,11 +203,12 @@ def get_car(logcan, sendcan, experimental_long_allowed, params, num_pandas=1, fr params.put_nonblocking("CarModel", candidate) if frogpilot_toggles.block_user: - candidate = "MOCK" + candidate = MOCK.MOCK + sentry.capture_block() CarInterface, _, _ = interfaces[candidate] - CP = CarInterface.get_params(candidate, fingerprints, car_fw, experimental_long_allowed, frogpilot_toggles, params, docs=False) - FPCP = CarInterface.get_frogpilot_params(candidate, fingerprints, car_fw, frogpilot_toggles) + CP = CarInterface.get_params(candidate, fingerprints, car_fw, experimental_long_allowed, frogpilot_toggles, docs=False) + FPCP = CarInterface.get_frogpilot_params(candidate, fingerprints, car_fw, CP, frogpilot_toggles) CP.carVin = vin CP.carFw = car_fw CP.fingerprintSource = source diff --git a/selfdrive/car/card.py b/selfdrive/car/card.py index 75a747af0..bf43487da 100644 --- a/selfdrive/car/card.py +++ b/selfdrive/car/card.py @@ -30,7 +30,7 @@ class Car: def __init__(self, CI=None): self.can_sock = messaging.sub_sock('can', timeout=20) - self.sm = messaging.SubMaster(['pandaStates', 'carControl', 'liveCalibration', 'onroadEvents', 'frogpilotPlan']) + self.sm = messaging.SubMaster(['pandaStates', 'carControl', 'liveCalibration', 'onroadEvents', 'frogpilotOnroadEvents', 'frogpilotPlan']) self.pm = messaging.PubMaster(['sendcan', 'carState', 'carParams', 'carOutput', 'frogpilotCarState']) self.can_rcv_cum_timeout_counter = 0 @@ -62,9 +62,9 @@ class Car: openpilot_enabled_toggle = self.params.get_bool("OpenpilotEnabledToggle") - controller_available = self.CI.CC is not None and openpilot_enabled_toggle and not self.CP.dashcamOnly + controller_available = self.CI.CC is not None and openpilot_enabled_toggle - self.CP.passive = not controller_available or self.CP.dashcamOnly + self.CP.passive = not controller_available if self.CP.passive: safety_config = car.CarParams.SafetyConfig.new_message() safety_config.safetyModel = car.CarParams.SafetyModel.noOutput @@ -106,9 +106,6 @@ class Car: self.frogpilot_toggles = get_frogpilot_toggles() - if self.frogpilot_toggles.acceleration_profile == 3: - self.CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.RAISE_LONGITUDINAL_LIMITS_TO_ISO_MAX - if self.frogpilot_toggles.always_on_lateral: self.CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.ALWAYS_ON_LATERAL self.CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.DISABLE_DISENGAGE_ON_GAS diff --git a/selfdrive/car/chrysler/interface.py b/selfdrive/car/chrysler/interface.py index 40da8b1a7..06878f2cd 100755 --- a/selfdrive/car/chrysler/interface.py +++ b/selfdrive/car/chrysler/interface.py @@ -13,6 +13,7 @@ class CarInterface(CarInterfaceBase): @staticmethod def _get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs, frogpilot_toggles): ret.carName = "chrysler" + ret.dashcamOnly = candidate in RAM_HD # radar parsing needs some work, see https://github.com/commaai/openpilot/issues/26842 ret.radarUnavailable = True # DBC[candidate]['radar'] is None diff --git a/selfdrive/car/ford/carcontroller.py b/selfdrive/car/ford/carcontroller.py index 7a094c616..eddd804a6 100644 --- a/selfdrive/car/ford/carcontroller.py +++ b/selfdrive/car/ford/carcontroller.py @@ -7,9 +7,6 @@ from openpilot.selfdrive.car.ford.values import CarControllerParams, FordFlags from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.controls.lib.drive_helpers import V_CRUISE_MAX -from openpilot.selfdrive.car.interfaces import get_max_allowed_accel - -GearShifter = car.CarState.GearShifter LongCtrlState = car.CarControl.Actuators.LongControlState VisualAlert = car.CarControl.HUDControl.VisualAlert @@ -97,10 +94,7 @@ class CarController(CarControllerBase): # send acc msg at 50Hz if self.CP.openpilotLongitudinalControl and (self.frame % CarControllerParams.ACC_CONTROL_STEP) == 0: # Both gas and accel are in m/s^2, accel is used solely for braking - if frogpilot_toggles.sport_plus and (CS.out.gearShifter == GearShifter.sport or not frogpilot_toggles.map_acceleration): - accel = clip(actuators.accel, CarControllerParams.ACCEL_MIN, get_max_allowed_accel(CS.out.vEgo)) - else: - accel = clip(actuators.accel, CarControllerParams.ACCEL_MIN, CarControllerParams.ACCEL_MAX) + accel = clip(actuators.accel, CarControllerParams.ACCEL_MIN, CarControllerParams.ACCEL_MAX) gas = accel if not CC.longActive or gas < CarControllerParams.MIN_GAS: gas = CarControllerParams.INACTIVE_GAS diff --git a/selfdrive/car/ford/interface.py b/selfdrive/car/ford/interface.py index 8a0e873dd..6a3105b03 100644 --- a/selfdrive/car/ford/interface.py +++ b/selfdrive/car/ford/interface.py @@ -16,6 +16,7 @@ class CarInterface(CarInterfaceBase): @staticmethod def _get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs, frogpilot_toggles): ret.carName = "ford" + ret.dashcamOnly = bool(ret.flags & FordFlags.CANFD) ret.radarUnavailable = True ret.steerControlType = car.CarParams.SteerControlType.angle diff --git a/selfdrive/car/gm/carcontroller.py b/selfdrive/car/gm/carcontroller.py index 6f07ccebf..664214bc8 100644 --- a/selfdrive/car/gm/carcontroller.py +++ b/selfdrive/car/gm/carcontroller.py @@ -7,7 +7,7 @@ from openpilot.common.params_pyx import Params from opendbc.can.packer import CANPacker from openpilot.selfdrive.car import apply_driver_steer_torque_limits, create_gas_interceptor_command from openpilot.selfdrive.car.gm import gmcan -from openpilot.selfdrive.car.gm.values import DBC, CanBus, CarControllerParams, CruiseButtons, GMFlags, CC_ONLY_CAR, SDGM_CAR, EV_CAR, AccState +from openpilot.selfdrive.car.gm.values import DBC, AccState, CanBus, CarControllerParams, CruiseButtons, GMFlags, CC_ONLY_CAR, SDGM_CAR, EV_CAR from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.controls.lib.drive_helpers import apply_deadzone from openpilot.selfdrive.controls.lib.vehicle_model import ACCELERATION_DUE_TO_GRAVITY @@ -24,9 +24,9 @@ CAMERA_CANCEL_DELAY_FRAMES = 10 MIN_STEER_MSG_INTERVAL_MS = 15 # Constants for pitch compensation -PITCH_DEADZONE = 0.01 # [radians] 0.01 โ‰ˆ 1% grade BRAKE_PITCH_FACTOR_BP = [5., 10.] # [m/s] smoothly revert to planned accel at low speeds BRAKE_PITCH_FACTOR_V = [0., 1.] # [unitless in [0,1]]; don't touch +PITCH_DEADZONE = 0.01 # [radians] 0.01 โ‰ˆ 1% grade class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): @@ -53,9 +53,10 @@ class CarController(CarControllerBase): self.packer_ch = CANPacker(DBC[self.CP.carFingerprint]['chassis']) # FrogPilot variables - self.pitch = FirstOrderFilter(0., 0.09 * 4, DT_CTRL * 4) # runs at 25 Hz self.accel_g = 0.0 + self.pitch = FirstOrderFilter(0., 0.09 * 4, DT_CTRL * 4) # runs at 25 Hz + @staticmethod def calc_pedal_command(accel: float, long_active: bool) -> float: if not long_active: return 0. @@ -143,16 +144,10 @@ class CarController(CarControllerBase): # Normal operation if self.CP.carFingerprint in EV_CAR: self.params.update_ev_gas_brake_threshold(CS.out.vEgo) - if frogpilot_toggles.sport_plus and (CS.out.gearShifter == GearShifter.sport or not frogpilot_toggles.map_acceleration): - self.apply_gas = int(round(interp(accel, self.params.EV_GAS_LOOKUP_BP_PLUS, self.params.GAS_LOOKUP_V_PLUS))) - else: - self.apply_gas = int(round(interp(accel, self.params.EV_GAS_LOOKUP_BP, self.params.GAS_LOOKUP_V))) + self.apply_gas = int(round(interp(accel, self.params.EV_GAS_LOOKUP_BP, self.params.GAS_LOOKUP_V))) self.apply_brake = int(round(interp(brake_accel, self.params.EV_BRAKE_LOOKUP_BP, self.params.BRAKE_LOOKUP_V))) else: - if frogpilot_toggles.sport_plus and (CS.out.gearShifter == GearShifter.sport or not frogpilot_toggles.map_acceleration): - self.apply_gas = int(round(interp(accel, self.params.GAS_LOOKUP_BP_PLUS, self.params.GAS_LOOKUP_V_PLUS))) - else: - self.apply_gas = int(round(interp(accel, self.params.GAS_LOOKUP_BP, self.params.GAS_LOOKUP_V))) + self.apply_gas = int(round(interp(accel, self.params.GAS_LOOKUP_BP, self.params.GAS_LOOKUP_V))) self.apply_brake = int(round(interp(brake_accel, self.params.BRAKE_LOOKUP_BP, self.params.BRAKE_LOOKUP_V))) # Don't allow any gas above inactive regen while stopping # FIXME: brakes aren't applied immediately when enabling at a stop diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index ce9243afd..83c13ced9 100644 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -1,20 +1,20 @@ #!/usr/bin/env python3 -import os from cereal import car, custom from math import fabs, exp +import numpy as np from panda import Panda -from openpilot.common.basedir import BASEDIR from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car import create_button_events, get_safety_config from openpilot.selfdrive.car.gm.radar_interface import RADAR_HEADER_MSG from openpilot.selfdrive.car.gm.values import CAR, CruiseButtons, CarControllerParams, EV_CAR, CAMERA_ACC_CAR, CanBus, GMFlags, CC_ONLY_CAR, SDGM_CAR -from openpilot.selfdrive.car.interfaces import CarInterfaceBase, TorqueFromLateralAccelCallbackType, FRICTION_THRESHOLD, LatControlInputs, NanoFFModel +from openpilot.selfdrive.car.interfaces import CarInterfaceBase, TorqueFromLateralAccelCallbackType, FRICTION_THRESHOLD, LateralAccelFromTorqueCallbackType from openpilot.selfdrive.controls.lib.drive_helpers import get_friction ButtonType = car.CarState.ButtonEvent.Type FrogPilotButtonType = custom.FrogPilotCarState.ButtonEvent.Type EventName = car.CarEvent.EventName +FrogPilotEventName = custom.FrogPilotCarEvent.EventName GearShifter = car.CarState.GearShifter TransmissionType = car.CarParams.TransmissionType NetworkLocation = car.CarParams.NetworkLocation @@ -33,8 +33,6 @@ NON_LINEAR_TORQUE_PARAMS = { CAR.CHEVROLET_SILVERADO: [3.29974374, 1.0, 0.25571356, 0.0465122] } -NEURAL_PARAMS_PATH = os.path.join(BASEDIR, 'selfdrive/car/torque_data/neural_ff_weights.json') - class CarInterface(CarInterfaceBase): @staticmethod @@ -54,45 +52,45 @@ class CarInterface(CarInterfaceBase): else: return CarInterfaceBase.get_steer_feedforward_default - def torque_from_lateral_accel_siglin(self, latcontrol_inputs: LatControlInputs, torque_params: car.CarParams.LateralTorqueTuning, lateral_accel_error: float, - lateral_accel_deadzone: float, friction_compensation: bool, gravity_adjusted: bool) -> float: - friction = get_friction(lateral_accel_error, lateral_accel_deadzone, FRICTION_THRESHOLD, torque_params, friction_compensation) + def get_lataccel_torque_siglin(self) -> float: - def sig(val): - # https://timvieira.github.io/blog/post/2014/02/11/exp-normalize-trick - if val >= 0: - return 1 / (1 + exp(-val)) - 0.5 - else: - z = exp(val) - return z / (1 + z) - 0.5 + def torque_from_lateral_accel_siglin_func(lateral_acceleration: float) -> float: + # The "lat_accel vs torque" relationship is assumed to be the sum of "sigmoid + linear" curves + # An important thing to consider is that the slope at 0 should be > 0 (ideally >1) + # This has big effect on the stability about 0 (noise when going straight) + non_linear_torque_params = NON_LINEAR_TORQUE_PARAMS.get(self.CP.carFingerprint) + assert non_linear_torque_params, "The params are not defined" + a, b, c, _ = non_linear_torque_params + sig_input = a * lateral_acceleration + sig = np.sign(sig_input) * (1 / (1 + exp(-fabs(sig_input))) - 0.5) + steer_torque = (sig * b) + (lateral_acceleration * c) + return float(steer_torque) - # The "lat_accel vs torque" relationship is assumed to be the sum of "sigmoid + linear" curves - # An important thing to consider is that the slope at 0 should be > 0 (ideally >1) - # This has big effect on the stability about 0 (noise when going straight) - # ToDo: To generalize to other GMs, explore tanh function as the nonlinear - non_linear_torque_params = NON_LINEAR_TORQUE_PARAMS.get(self.CP.carFingerprint) - assert non_linear_torque_params, "The params are not defined" - a, b, c, _ = non_linear_torque_params - steer_torque = (sig(latcontrol_inputs.lateral_acceleration * a) * b) + (latcontrol_inputs.lateral_acceleration * c) - return float(steer_torque) + friction - - def torque_from_lateral_accel_neural(self, latcontrol_inputs: LatControlInputs, torque_params: car.CarParams.LateralTorqueTuning, lateral_accel_error: float, - lateral_accel_deadzone: float, friction_compensation: bool, gravity_adjusted: bool) -> float: - friction = get_friction(lateral_accel_error, lateral_accel_deadzone, FRICTION_THRESHOLD, torque_params, friction_compensation) - inputs = list(latcontrol_inputs) - if gravity_adjusted: - inputs[0] += inputs[1] - return float(self.neural_ff_model.predict(inputs)) + friction + lataccel_values = np.arange(-5.0, 5.0, 0.01) + torque_values = [torque_from_lateral_accel_siglin_func(x) for x in lataccel_values] + assert min(torque_values) < -1 and max(torque_values) > 1, "The torque values should cover the range [-1, 1]" + return torque_values, lataccel_values def torque_from_lateral_accel(self) -> TorqueFromLateralAccelCallbackType: - if self.CP.carFingerprint in (CAR.CHEVROLET_BOLT_EUV, CAR.CHEVROLET_BOLT_CC): - self.neural_ff_model = NanoFFModel(NEURAL_PARAMS_PATH, self.CP.carFingerprint) - return self.torque_from_lateral_accel_neural - elif self.CP.carFingerprint in NON_LINEAR_TORQUE_PARAMS: - return self.torque_from_lateral_accel_siglin + if self.CP.carFingerprint in NON_LINEAR_TORQUE_PARAMS: + torque_values, lataccel_values = self.get_lataccel_torque_siglin() + + def torque_from_lateral_accel_siglin(lateral_acceleration: float, torque_params: car.CarParams.LateralTorqueTuning): + return np.interp(lateral_acceleration, lataccel_values, torque_values) + return torque_from_lateral_accel_siglin else: return self.torque_from_lateral_accel_linear + def lateral_accel_from_torque(self) -> LateralAccelFromTorqueCallbackType: + if self.CP.carFingerprint in NON_LINEAR_TORQUE_PARAMS: + torque_values, lataccel_values = self.get_lataccel_torque_siglin() + + def lateral_accel_from_torque_siglin(torque: float, torque_params: car.CarParams.LateralTorqueTuning): + return np.interp(torque, torque_values, lataccel_values) + return lateral_accel_from_torque_siglin + else: + return self.lateral_accel_from_torque_linear + @staticmethod def _get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs, frogpilot_toggles): ret.carName = "gm" @@ -347,7 +345,6 @@ class CarInterface(CarInterfaceBase): events.add(EventName.belowEngageSpeed) if ret.cruiseState.standstill and not self.CP.autoResumeSng: events.add(EventName.resumeRequired) - if ret.vEgo < self.CP.minSteerSpeed: events.add(EventName.belowSteerSpeed) @@ -358,7 +355,7 @@ class CarInterface(CarInterfaceBase): self.CP.transmissionType == TransmissionType.direct and \ not self.CS.single_pedal_mode and \ c.longActive: - events.add(EventName.pedalInterceptorNoBrake) + events.add(FrogPilotEventName.pedalInterceptorNoBrake) ret.events = events.to_msg() diff --git a/selfdrive/car/gm/values.py b/selfdrive/car/gm/values.py index 4ec137f88..b75e3c24d 100644 --- a/selfdrive/car/gm/values.py +++ b/selfdrive/car/gm/values.py @@ -33,45 +33,39 @@ class CarControllerParams: # Our controller should still keep the 2 second average above # -3.5 m/s^2 as per planner limits ACCEL_MAX = 2. # m/s^2 - ACCEL_MAX_PLUS = 4. # m/s^2 ACCEL_MIN = -4. # m/s^2 def __init__(self, CP): # Gas/brake lookups - self.ZERO_GAS = 6144 # Coasting + self.ZERO_GAS = 2048 # Coasting self.MAX_BRAKE = 400 # ~ -4.0 m/s^2 with regen if CP.carFingerprint in CAMERA_ACC_CAR and CP.carFingerprint not in CC_ONLY_CAR: - self.MAX_GAS = 7496 - self.MAX_GAS_PLUS = 8848 - self.MAX_ACC_REGEN = 5610 - self.INACTIVE_REGEN = 5650 + self.MAX_GAS = 3400 + self.MAX_ACC_REGEN = 1514 + self.INACTIVE_REGEN = 1554 # Camera ACC vehicles have no regen while enabled. # Camera transitions to MAX_ACC_REGEN from ZERO_GAS and uses friction brakes instantly - self.max_regen_acceleration = 0. + max_regen_acceleration = 0. elif CP.carFingerprint in SDGM_CAR: - self.MAX_GAS = 7496 - self.MAX_GAS_PLUS = 7496 - self.MAX_ACC_REGEN = 5610 - self.INACTIVE_REGEN = 5650 - self.max_regen_acceleration = 0. + self.MAX_GAS = 3400 + self.MAX_ACC_REGEN = 1514 + self.INACTIVE_REGEN = 1554 + max_regen_acceleration = 0. else: - self.MAX_GAS = 7168 # Safety limit, not ACC max. Stock ACC >8192 from standstill. - self.MAX_GAS_PLUS = 8191 # 8292 uses new bit, possible but not tested. Matches Twilsonco tw-main max - self.MAX_ACC_REGEN = 5500 # Max ACC regen is slightly less than max paddle regen - self.INACTIVE_REGEN = 5500 + self.MAX_GAS = 3072 # Safety limit, not ACC max. Stock ACC >4096 from standstill. + self.MAX_ACC_REGEN = 1404 # Max ACC regen is slightly less than max paddle regen + self.INACTIVE_REGEN = 1404 # ICE has much less engine braking force compared to regen in EVs, # lower threshold removes some braking deadzone - self.max_regen_acceleration = -1. if CP.carFingerprint in EV_CAR else -0.1 + max_regen_acceleration = -1. if CP.carFingerprint in EV_CAR else -0.1 - self.GAS_LOOKUP_BP = [self.max_regen_acceleration, 0., self.ACCEL_MAX] - self.GAS_LOOKUP_BP_PLUS = [self.max_regen_acceleration, 0., self.ACCEL_MAX_PLUS] + self.GAS_LOOKUP_BP = [max_regen_acceleration, 0., self.ACCEL_MAX] self.GAS_LOOKUP_V = [self.MAX_ACC_REGEN, self.ZERO_GAS, self.MAX_GAS] - self.GAS_LOOKUP_V_PLUS = [self.MAX_ACC_REGEN, self.ZERO_GAS, self.MAX_GAS_PLUS] - self.BRAKE_LOOKUP_BP = [self.ACCEL_MIN, self.max_regen_acceleration] + self.BRAKE_LOOKUP_BP = [self.ACCEL_MIN, max_regen_acceleration] self.BRAKE_LOOKUP_V = [self.MAX_BRAKE, 0.] # determined by letting Volt regen to a stop in L gear from 89mph, @@ -82,11 +76,10 @@ class CarControllerParams: def update_ev_gas_brake_threshold(self, v_ego): gas_brake_threshold = interp(v_ego, self.EV_GAS_BRAKE_THRESHOLD_BP, self.EV_GAS_BRAKE_THRESHOLD_V) - self.GAS_LOOKUP_BP_PLUS = [self.max_regen_acceleration, 0., self.ACCEL_MAX_PLUS] self.EV_GAS_LOOKUP_BP = [gas_brake_threshold, max(0., gas_brake_threshold), self.ACCEL_MAX] - self.EV_GAS_LOOKUP_BP_PLUS = [gas_brake_threshold, max(0., gas_brake_threshold), self.ACCEL_MAX_PLUS] self.EV_BRAKE_LOOKUP_BP = [self.ACCEL_MIN, gas_brake_threshold] + @dataclass class GMCarDocs(CarDocs): package: str = "Adaptive Cruise Control (ACC)" diff --git a/selfdrive/car/honda/carcontroller.py b/selfdrive/car/honda/carcontroller.py index a43fd45df..8a65c28a9 100644 --- a/selfdrive/car/honda/carcontroller.py +++ b/selfdrive/car/honda/carcontroller.py @@ -10,9 +10,6 @@ from openpilot.selfdrive.car.honda.values import CruiseButtons, VISUAL_HUD, HOND from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.controls.lib.drive_helpers import rate_limit -from openpilot.selfdrive.car.interfaces import get_max_allowed_accel - -GearShifter = car.CarState.GearShifter VisualAlert = car.CarControl.HUDControl.VisualAlert LongCtrlState = car.CarControl.Actuators.LongControlState @@ -219,10 +216,7 @@ class CarController(CarControllerBase): ts = self.frame * DT_CTRL if self.CP.carFingerprint in HONDA_BOSCH: - if frogpilot_toggles.sport_plus and (CS.out.gearShifter == GearShifter.sport or not frogpilot_toggles.map_acceleration): - self.accel = clip(accel, self.params.BOSCH_ACCEL_MIN, get_max_allowed_accel(CS.out.vEgo)) - else: - self.accel = clip(accel, self.params.BOSCH_ACCEL_MIN, self.params.BOSCH_ACCEL_MAX) + self.accel = clip(accel, self.params.BOSCH_ACCEL_MIN, self.params.BOSCH_ACCEL_MAX) self.gas = interp(accel, self.params.BOSCH_GAS_LOOKUP_BP, self.params.BOSCH_GAS_LOOKUP_V) stopping = actuators.longControlState == LongCtrlState.stopping diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index 5d37bd4ae..c075a759b 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -199,7 +199,6 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.6], [0.18]] # TODO: can probably use some tuning elif candidate == CAR.HONDA_CLARITY: - ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HONDA_CLARITY if eps_modified: for fw in car_fw: if fw.ecu == "eps" and b"-" not in fw.fwVersion and b"," in fw.fwVersion: @@ -231,9 +230,6 @@ class CarInterface(CarInterfaceBase): if ret.openpilotLongitudinalControl and candidate in HONDA_BOSCH: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HONDA_BOSCH_LONG - if ret.enableGasInterceptor and candidate not in HONDA_BOSCH: - ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HONDA_GAS_INTERCEPTOR - if candidate in HONDA_BOSCH_RADARLESS: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HONDA_RADARLESS diff --git a/selfdrive/car/hyundai/carcontroller.py b/selfdrive/car/hyundai/carcontroller.py index ae190d3b6..a33c43b17 100644 --- a/selfdrive/car/hyundai/carcontroller.py +++ b/selfdrive/car/hyundai/carcontroller.py @@ -9,9 +9,6 @@ from openpilot.selfdrive.car.hyundai.hyundaicanfd import CanBus from openpilot.selfdrive.car.hyundai.values import HyundaiFlags, Buttons, CarControllerParams, CANFD_CAR, CAR from openpilot.selfdrive.car.interfaces import CarControllerBase -from openpilot.selfdrive.car.interfaces import get_max_allowed_accel - -GearShifter = car.CarState.GearShifter VisualAlert = car.CarControl.HUDControl.VisualAlert LongCtrlState = car.CarControl.Actuators.LongControlState @@ -84,10 +81,7 @@ class CarController(CarControllerBase): self.apply_steer_last = apply_steer # accel + longitudinal - if frogpilot_toggles.sport_plus and (CS.out.gearShifter == GearShifter.sport or not frogpilot_toggles.map_acceleration): - accel = clip(actuators.accel, CarControllerParams.ACCEL_MIN, get_max_allowed_accel(CS.out.vEgo)) - else: - accel = clip(actuators.accel, CarControllerParams.ACCEL_MIN, CarControllerParams.ACCEL_MAX) + accel = clip(actuators.accel, CarControllerParams.ACCEL_MIN, CarControllerParams.ACCEL_MAX) stopping = actuators.longControlState == LongCtrlState.stopping set_speed_in_units = hud_control.setSpeed * (CV.MS_TO_KPH if CS.is_metric else CV.MS_TO_MPH) diff --git a/selfdrive/car/hyundai/carstate.py b/selfdrive/car/hyundai/carstate.py index 0f054c28d..adaa3652d 100644 --- a/selfdrive/car/hyundai/carstate.py +++ b/selfdrive/car/hyundai/carstate.py @@ -23,14 +23,12 @@ def calculate_speed_limit(CP, FPCP, cp, cp_cam): speed_limit_bus = cp else: speed_limit_bus = cp_cam - speed_limit = speed_limit_bus.vl["CLUSTER_SPEED_LIMIT"]["SPEED_LIMIT_1"] else: if FPCP.fpFlags & HyundaiFrogPilotFlags.LKAS12: speed_limit = cp_cam.vl["LKAS12"]["CF_Lkas_TsrSpeed_Display_Clu"] else: speed_limit = 0 - if speed_limit in (0, 255) and FPCP.fpFlags & HyundaiFrogPilotFlags.NAV_MSG: speed_limit = cp.vl["Navi_HU"]["SpeedLim_Nav_Clu"] diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py index 67279e932..63a5a2b8c 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -22,8 +22,6 @@ BUTTONS_DICT = {Buttons.RES_ACCEL: ButtonType.accelCruise, Buttons.SET_DECEL: Bu class CarInterface(CarInterfaceBase): @staticmethod def _get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs, frogpilot_toggles): - use_old_long = frogpilot_toggles.old_long_api - ret.carName = "hyundai" ret.radarUnavailable = RADAR_START_ADDR not in fingerprint[1] or DBC[ret.carFingerprint]["radar"] is None @@ -84,14 +82,14 @@ class CarInterface(CarInterfaceBase): # *** longitudinal control *** if candidate in CANFD_CAR: - if use_old_long: + if frogpilot_toggles.old_long_api: ret.longitudinalTuning.deadzoneBP = [0.] ret.longitudinalTuning.deadzoneV = [0.] ret.longitudinalTuning.kpV = [0.1] ret.longitudinalTuning.kiV = [0.0] ret.experimentalLongitudinalAvailable = candidate not in (CANFD_UNSUPPORTED_LONGITUDINAL_CAR | CANFD_RADAR_SCC_CAR) else: - if use_old_long: + if frogpilot_toggles.old_long_api: ret.longitudinalTuning.deadzoneBP = [0.] ret.longitudinalTuning.deadzoneV = [0.] ret.longitudinalTuning.kpV = [0.5] @@ -137,9 +135,6 @@ class CarInterface(CarInterfaceBase): if candidate in CAMERA_SCC_CAR: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HYUNDAI_CAMERA_SCC - if 0x391 in fingerprint[0]: - ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HYUNDAI_LFA_BTN - if ret.openpilotLongitudinalControl: ret.safetyConfigs[-1].safetyParam |= Panda.FLAG_HYUNDAI_LONG if ret.flags & HyundaiFlags.HYBRID: @@ -157,9 +152,6 @@ class CarInterface(CarInterfaceBase): if 0x2AA in fingerprint[0]: ret.minSteerSpeed = 0. - if frogpilot_toggles.taco_tune_hacks: - ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HYUNDAI_TACO_TUNE_HACK - return ret @staticmethod diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index 58d1a3363..4dc691ead 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -1,10 +1,9 @@ -import json import os import numpy as np import tomllib from abc import abstractmethod, ABC from enum import StrEnum -from typing import Any, NamedTuple +from typing import Any from collections.abc import Callable from functools import cache from types import SimpleNamespace @@ -12,23 +11,22 @@ from types import SimpleNamespace from cereal import car, custom from openpilot.common.basedir import BASEDIR from openpilot.common.conversions import Conversions as CV -from openpilot.common.params import Params from openpilot.common.simple_kalman import KF1D, get_kalman_gain from openpilot.common.numpy_fast import clip from openpilot.common.realtime import DT_CTRL from openpilot.selfdrive.car import apply_hysteresis, gen_empty_fingerprint, scale_rot_inertia, scale_tire_stiffness, STD_CARGO_KG from openpilot.selfdrive.car.chrysler.values import CAR as ChryslerCAR, ChryslerFrogPilotFlags +from openpilot.selfdrive.car.gm.values import CAR as GMCAR +from openpilot.selfdrive.car.honda.values import CAR as HondaCAR, HONDA_BOSCH from openpilot.selfdrive.car.hyundai.hyundaicanfd import CanBus from openpilot.selfdrive.car.hyundai.values import CAR as HyundaiCAR, CANFD_CAR, HyundaiFrogPilotFlags from openpilot.selfdrive.car.mock.values import CAR as MockCAR -from openpilot.selfdrive.car.toyota.values import CAR as ToyotaCAR, ToyotaFrogPilotFlags +from openpilot.selfdrive.car.toyota.values import CAR as ToyotaCAR, TSS2_CAR, UNSUPPORTED_DSU_CAR, ToyotaFrogPilotFlags from openpilot.selfdrive.car.values import PLATFORMS from openpilot.selfdrive.controls.lib.drive_helpers import V_CRUISE_MAX, get_friction from openpilot.selfdrive.controls.lib.events import Events from openpilot.selfdrive.controls.lib.vehicle_model import VehicleModel - -def get_max_allowed_accel(v_ego): - return float(np.interp(v_ego, [0., 5., 20.], [4.0, 4.0, 2.0])) # ISO 15622:2018 +from panda import Panda ButtonType = car.CarState.ButtonEvent.Type FrogPilotButtonType = custom.FrogPilotCarState.ButtonEvent.Type @@ -57,15 +55,8 @@ GEAR_SHIFTER_MAP: dict[str, car.CarState.GearShifter] = { 'B': GearShifter.brake, 'BRAKE': GearShifter.brake, } - -class LatControlInputs(NamedTuple): - lateral_acceleration: float - roll_compensation: float - vego: float - aego: float - - -TorqueFromLateralAccelCallbackType = Callable[[LatControlInputs, car.CarParams.LateralTorqueTuning, float, float, bool, bool], float] +TorqueFromLateralAccelCallbackType = Callable[[float, car.CarParams.LateralTorqueTuning, bool], float] +LateralAccelFromTorqueCallbackType = Callable[[float, car.CarParams.LateralTorqueTuning, bool], float] @cache @@ -140,7 +131,7 @@ class CarInterfaceBase(ABC): return cls.get_params(candidate, gen_empty_fingerprint(), list(), False, False, False) @classmethod - def get_params(cls, candidate: str, fingerprint: dict[int, dict[int, int]], car_fw: list[car.CarParams.CarFw], experimental_long: bool, frogpilot_toggles: SimpleNamespace, params: Params, docs: bool): + def get_params(cls, candidate: str, fingerprint: dict[int, dict[int, int]], car_fw: list[car.CarParams.CarFw], experimental_long: bool, frogpilot_toggles: SimpleNamespace, docs: bool): ret = CarInterfaceBase.get_std_params(candidate) platform = PLATFORMS[candidate] @@ -163,25 +154,35 @@ class CarInterfaceBase(ABC): ret.rotationalInertia = scale_rot_inertia(ret.mass, ret.wheelbase) ret.tireStiffnessFront, ret.tireStiffnessRear = scale_tire_stiffness(ret.mass, ret.wheelbase, ret.centerToFront, ret.tireStiffnessFactor) - # Enable torque controller for all cars that do not use angle based steering - if ret.steerControlType != car.CarParams.SteerControlType.angle and params.get_bool("LateralTune") and (params.get_bool("NNFF") or params.get_bool("NNFFLite")): - CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - return ret @classmethod - def get_frogpilot_params(cls, candidate: str, fingerprint: dict[int, dict[int, int]], car_fw: list[car.CarParams.CarFw], frogpilot_toggles: SimpleNamespace): + def get_frogpilot_params(cls, candidate: str, fingerprint: dict[int, dict[int, int]], car_fw: list[car.CarParams.CarFw], CP, frogpilot_toggles: SimpleNamespace): fp_ret = custom.FrogPilotCarParams.new_message() platform = PLATFORMS[candidate] fp_ret.fpFlags |= int(platform.config.flags) + fp_ret.safetyConfigs = [custom.FrogPilotCarParams.SafetyConfig.new_message()] + if platform not in MockCAR: if platform in ChryslerCAR: if candidate == ChryslerCAR.RAM_HD_5TH_GEN: if 570 not in fingerprint[0]: fp_ret.fpFlags |= ChryslerFrogPilotFlags.RAM_HD_ALT_BUTTONS.value + elif platform in GMCAR: + fp_ret.canUsePedal = True + + elif platform in HondaCAR: + if candidate == HondaCAR.HONDA_CLARITY: + fp_ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HONDA_CLARITY + + if CP.enableGasInterceptor and candidate not in HONDA_BOSCH: + fp_ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HONDA_GAS_INTERCEPTOR + + fp_ret.canUsePedal = candidate not in HONDA_BOSCH + elif platform in HyundaiCAR: if candidate in CANFD_CAR: hda2 = Ecu.adas in [fw.ecu for fw in car_fw] @@ -190,9 +191,13 @@ class CarInterfaceBase(ABC): fp_ret.fpFlags |= HyundaiFrogPilotFlags.NAV_MSG.value fp_ret.isHDA2 = hda2 + + if frogpilot_toggles.taco_tune_hacks: + fp_ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HYUNDAI_TACO_TUNE_HACK else: if 0x391 in fingerprint[0]: fp_ret.fpFlags |= HyundaiFrogPilotFlags.CAN_LFA_BTN.value + fp_ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HYUNDAI_LFA_BTN if 0x53E in fingerprint[2]: fp_ret.fpFlags |= HyundaiFrogPilotFlags.LKAS12.value @@ -205,6 +210,20 @@ class CarInterfaceBase(ABC): if 0x23 in fingerprint[0]: fp_ret.fpFlags |= ToyotaFrogPilotFlags.ZSS.value + if CP.enableGasInterceptor: + fp_ret.safetyConfigs[0].safetyParam |= Panda.FLAG_TOYOTA_GAS_INTERCEPTOR + + fp_ret.canUsePedal = not CP.autoResumeSng + fp_ret.canUseSDSU = not CP.enableDsu and candidate not in UNSUPPORTED_DSU_CAR and candidate not in TSS2_CAR + + if CP.steerControlType != car.CarParams.SteerControlType.angle: + if CP.lateralTuning.which() == "pid" and (frogpilot_toggles.force_torque_controller or frogpilot_toggles.nnff or frogpilot_toggles.nnff_lite): + CarInterfaceBase.configure_torque_tune(candidate, fp_ret.lateralTuning) + elif CP.lateralTuning.which() == "torque": + CarInterfaceBase.configure_torque_tune(candidate, fp_ret.lateralTuning) + else: + fp_ret.lateralTuning.init("pid") + fp_ret.openpilotLongitudinalControlDisabled = frogpilot_toggles.disable_openpilot_long return fp_ret @@ -228,15 +247,19 @@ class CarInterfaceBase(ABC): def get_steer_feedforward_function(self): return self.get_steer_feedforward_default - def torque_from_lateral_accel_linear(self, latcontrol_inputs: LatControlInputs, torque_params: car.CarParams.LateralTorqueTuning, - lateral_accel_error: float, lateral_accel_deadzone: float, friction_compensation: bool, gravity_adjusted: bool) -> float: + def torque_from_lateral_accel_linear(self, lateral_acceleration: float, torque_params: car.CarParams.LateralTorqueTuning) -> float: # The default is a linear relationship between torque and lateral acceleration (accounting for road roll and steering friction) - friction = get_friction(lateral_accel_error, lateral_accel_deadzone, FRICTION_THRESHOLD, torque_params, friction_compensation) - return (latcontrol_inputs.lateral_acceleration / float(torque_params.latAccelFactor)) + friction + return lateral_acceleration / float(torque_params.latAccelFactor) def torque_from_lateral_accel(self) -> TorqueFromLateralAccelCallbackType: return self.torque_from_lateral_accel_linear + def lateral_accel_from_torque_linear(self, torque: float, torque_params: car.CarParams.LateralTorqueTuning) -> float: + return torque * float(torque_params.latAccelFactor) + + def lateral_accel_from_torque(self) -> LateralAccelFromTorqueCallbackType: + return self.lateral_accel_from_torque_linear + # returns a set of default params to avoid repetition in car specific params @staticmethod def get_std_params(candidate): @@ -278,8 +301,8 @@ class CarInterfaceBase(ABC): tune.init('torque') tune.torque.useSteeringAngle = use_steering_angle - tune.torque.kp = 1.0 tune.torque.kf = 1.0 + tune.torque.kp = 1.0 tune.torque.ki = 0.3 tune.torque.friction = params['FRICTION'] tune.torque.latAccelFactor = params['LAT_ACCEL_FACTOR'] @@ -582,35 +605,3 @@ def get_interface_attr(attr: str, combine_brands: bool = False, ignore_none: boo pass return result - - -class NanoFFModel: - def __init__(self, weights_loc: str, platform: str): - self.weights_loc = weights_loc - self.platform = platform - self.load_weights(platform) - - def load_weights(self, platform: str): - with open(self.weights_loc) as fob: - self.weights = {k: np.array(v) for k, v in json.load(fob)[platform].items()} - - def relu(self, x: np.ndarray): - return np.maximum(0.0, x) - - def forward(self, x: np.ndarray): - assert x.ndim == 1 - x = (x - self.weights['input_norm_mat'][:, 0]) / (self.weights['input_norm_mat'][:, 1] - self.weights['input_norm_mat'][:, 0]) - x = self.relu(np.dot(x, self.weights['w_1']) + self.weights['b_1']) - x = self.relu(np.dot(x, self.weights['w_2']) + self.weights['b_2']) - x = self.relu(np.dot(x, self.weights['w_3']) + self.weights['b_3']) - x = np.dot(x, self.weights['w_4']) + self.weights['b_4'] - return x - - def predict(self, x: list[float], do_sample: bool = False): - x = self.forward(np.array(x)) - if do_sample: - pred = np.random.laplace(x[0], np.exp(x[1]) / self.weights['temperature']) - else: - pred = x[0] - pred = pred * (self.weights['output_norm_mat'][1] - self.weights['output_norm_mat'][0]) + self.weights['output_norm_mat'][0] - return pred diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index 5cbe6d266..915e0dd2d 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -17,6 +17,8 @@ class CarInterface(CarInterfaceBase): ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.mazda)] ret.radarUnavailable = True + ret.dashcamOnly = candidate not in (CAR.MAZDA_CX5_2022, CAR.MAZDA_CX9_2021) + ret.steerActuatorDelay = 0.1 ret.steerLimitTimer = 0.8 diff --git a/selfdrive/car/mock/carcontroller.py b/selfdrive/car/mock/carcontroller.py index 0cd37c036..060fad93e 100644 --- a/selfdrive/car/mock/carcontroller.py +++ b/selfdrive/car/mock/carcontroller.py @@ -1,5 +1,5 @@ from openpilot.selfdrive.car.interfaces import CarControllerBase class CarController(CarControllerBase): - def update(self, CC, CS, now_nanos): + def update(self, CC, CS, now_nanos, frogpilot_toggles): return CC.actuators.as_builder(), [] diff --git a/selfdrive/car/mock/interface.py b/selfdrive/car/mock/interface.py index e6bd34c79..97456fd0d 100755 --- a/selfdrive/car/mock/interface.py +++ b/selfdrive/car/mock/interface.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 from cereal import car, custom import cereal.messaging as messaging +from openpilot.selfdrive.car import get_safety_config from openpilot.selfdrive.car.interfaces import CarInterfaceBase # mocked car interface for dashcam mode @@ -19,6 +20,7 @@ class CarInterface(CarInterfaceBase): ret.centerToFront = ret.wheelbase * 0.5 ret.steerRatio = 13. ret.dashcamOnly = True + ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.noOutput)] return ret def _update(self, c, frogpilot_toggles): diff --git a/selfdrive/car/subaru/carstate.py b/selfdrive/car/subaru/carstate.py index 74e1d6773..bb0a891f2 100644 --- a/selfdrive/car/subaru/carstate.py +++ b/selfdrive/car/subaru/carstate.py @@ -4,7 +4,7 @@ from opendbc.can.can_define import CANDefine from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car.interfaces import CarStateBase from opendbc.can.parser import CANParser -from openpilot.selfdrive.car.subaru.values import DBC, CanBus, PREGLOBAL_CARS, SubaruFlags +from openpilot.selfdrive.car.subaru.values import DBC, PREGLOBAL_CARS, CanBus, SubaruFlags from openpilot.selfdrive.car import CanSignalRateCalculator diff --git a/selfdrive/car/subaru/interface.py b/selfdrive/car/subaru/interface.py index 55f38fc70..afade1e53 100644 --- a/selfdrive/car/subaru/interface.py +++ b/selfdrive/car/subaru/interface.py @@ -17,7 +17,7 @@ class CarInterface(CarInterfaceBase): # - replacement for ES_Distance so we can cancel the cruise control # - to find the Cruise_Activated bit from the car # - proper panda safety setup (use the correct cruise_activated bit, throttle from Throttle_Hybrid, etc) - ret.dashcamOnly = bool(ret.flags & (SubaruFlags.LKAS_ANGLE | SubaruFlags.HYBRID)) + ret.dashcamOnly = bool(ret.flags & (SubaruFlags.PREGLOBAL | SubaruFlags.LKAS_ANGLE | SubaruFlags.HYBRID)) ret.autoResumeSng = False # Detect infotainment message sent from the camera diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index 0e9607a5a..4d906cb5c 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -20,7 +20,7 @@ class CarControllerParams: self.STEER_DRIVER_FACTOR = 1 # from dbc if CP.flags & SubaruFlags.GLOBAL_GEN2: - self.STEER_MAX = 1000 + self.STEER_MAX = 1600 self.STEER_DELTA_UP = 40 self.STEER_DELTA_DOWN = 40 elif CP.carFingerprint == CAR.SUBARU_IMPREZA_2020: diff --git a/selfdrive/car/torque_data/neural_ff_weights.json b/selfdrive/car/torque_data/neural_ff_weights.json deleted file mode 100644 index cbf2950fe..000000000 --- a/selfdrive/car/torque_data/neural_ff_weights.json +++ /dev/null @@ -1,2 +0,0 @@ -{"CHEVROLET_BOLT_EUV": {"w_1": [[0.3452189564704895, -0.15614677965641022, -0.04062516987323761, -0.5960758328437805, 0.3211185932159424, 0.31732726097106934, -0.04430829733610153, -0.37327295541763306, -0.14118380844593048, 0.12712529301643372, 0.2641555070877075, -0.3451094627380371, -0.005127656273543835, 0.6185108423233032, 0.03725295141339302, 0.3763789236545563], [-0.0708412230014801, 0.3667356073856354, 0.031383827328681946, 0.1740853488445282, -0.04695861041545868, 0.018055908381938934, 0.009072160348296165, -0.23640218377113342, -0.10362917929887772, 0.022628149017691612, -0.224413201212883, 0.20718418061733246, -0.016947750002145767, -0.3872031271457672, -0.15500062704086304, -0.06375953555107117], [-0.0838046595454216, -0.0242826659232378, -0.07765661180019379, 0.028858814388513565, -0.09516210108995438, 0.008368706330657005, 0.1689300835132599, 0.015036891214549541, -0.15121428668498993, 0.1388195902109146, 0.11486363410949707, 0.0651545450091362, 0.13559958338737488, 0.04300367832183838, -0.13856294751167297, -0.058136988431215286], [-0.006249868310987949, 0.08809533715248108, -0.040690965950489044, 0.02359287068247795, -0.00766348373144865, 0.24816390872001648, -0.17360293865203857, -0.03676899895071983, -0.17564819753170013, 0.18998438119888306, -0.050583917647600174, -0.006488069426268339, 0.10649101436138153, -0.024557121098041534, -0.103276826441288, 0.18448011577129364]], "b_1": [0.2935388386249542, 0.10967712104320526, -0.014007942751049995, 0.211833655834198, 0.33605605363845825, 0.37722209095954895, -0.16615016758441925, 0.3134673535823822, 0.06695777177810669, 0.3425212800502777, 0.3769673705101013, 0.23186539113521576, 0.5770409107208252, -0.05929069593548775, 0.01839117519557476, 0.03828774020075798], "w_2": [[-0.06261160969734192, 0.010185074992477894, -0.06083013117313385, -0.04531499370932579, -0.08979734033346176, 0.3432150185108185, -0.019801849499344826, 0.3010321259498596], [0.19698476791381836, -0.009238275699317455, 0.08842222392559052, -0.09516377002000809, -0.05022778362035751, 0.13626104593276978, -0.052890390157699585, 0.15569131076335907], [0.0724768117070198, -0.09018408507108688, 0.06850195676088333, -0.025572121143341064, 0.0680626779794693, -0.07648195326328278, 0.07993496209383011, -0.059752143919467926], [1.267876386642456, -0.05755887180566788, -0.08429178595542908, 0.021366603672504425, -0.0006479775765910745, -1.4292563199996948, -0.08077696710824966, -1.414825439453125], [0.04535430669784546, 0.06555880606174469, -0.027145234867930412, -0.07661093026399612, -0.05702832341194153, 0.23650476336479187, 0.0024587824009358883, 0.20126521587371826], [0.006042032968252897, 0.042880818247795105, 0.002187949838116765, -0.017126334831118584, -0.08352015167474747, 0.19801731407642365, -0.029196614399552345, 0.23713473975658417], [-0.01644900068640709, -0.04358499124646187, 0.014584392309188843, 0.07155826687812805, -0.09354910999536514, -0.033351872116327286, 0.07138452678918839, -0.04755295440554619], [-1.1012420654296875, -0.03534531593322754, 0.02167935110628605, -0.01116552110761404, -0.08436500281095505, 1.1038788557052612, 0.027903547510504723, 1.0676132440567017], [0.03843916580080986, -0.0952216386795044, 0.039226632565259933, 0.002778085647150874, -0.020275786519050598, -0.07848760485649109, 0.04803166165947914, 0.015538203530013561], [0.018385495990514755, -0.025189843028783798, 0.0036680365446954966, -0.02105865254998207, 0.04808586835861206, 0.1575016975402832, 0.02703506126999855, 0.23039312660694122], [-0.0033881019335240126, -0.10210853815078735, -0.04877309128642082, 0.006989633198827505, 0.046798162162303925, 0.38676899671554565, -0.032304272055625916, 0.2345031052827835], [0.22092825174331665, -0.09642873704433441, 0.04499409720301628, 0.05108088254928589, -0.10191166400909424, 0.12818090617656708, -0.021021494641900063, 0.09440375864505768], [0.1212429478764534, -0.028194155544042587, -0.0981956496834755, 0.08226924389600754, 0.055346839129924774, 0.27067816257476807, -0.09064067900180817, 0.12580905854701996], [-1.6740131378173828, -0.02066155895590782, -0.05924689769744873, 0.06347910314798355, -0.07821853458881378, 1.2807466983795166, 0.04589352011680603, 1.310766577720642], [-0.09893272817134857, -0.04093599319458008, -0.02502273954451084, 0.09490344673395157, -0.0211324505507946, -0.09021010994911194, 0.07936318963766098, -0.03593116253614426], [-0.08490308374166489, -0.015558987855911255, -0.048692114651203156, -0.007421435788273811, -0.040531404316425323, 0.25889304280281067, 0.06012800335884094, 0.27946868538856506]], "b_2": [0.07973937690258026, -0.010446485131978989, -0.003066520905122161, -0.031895797699689865, 0.006032303906977177, 0.24106740951538086, -0.008969511836767197, 0.2872662842273712], "w_3": [[-1.364486813545227, -0.11682678014039993, 0.01764785870909691, 0.03926877677440643], [-0.05695437639951706, 0.05472218990325928, 0.1266128271818161, 0.09950875490903854], [0.11415273696184158, -0.10069356113672256, 0.0864749327301979, -0.043946366757154465], [-0.10138195008039474, -0.040128443390131, -0.08937158435583115, -0.0048376512713730335], [-0.0028251828625798225, -0.04743027314543724, 0.06340016424655914, 0.07277824729681015], [0.49482327699661255, -0.06410001963376999, -0.0999293103814125, -0.14250673353672028], [0.042802367359399796, 0.0015462725423276424, -0.05991362780332565, 0.1022040992975235], [0.3523194193840027, 0.07343732565641403, 0.04157765582203865, -0.12358107417821884]], "b_3": [0.2653026282787323, -0.058485131710767746, -0.0744510293006897, 0.012550175189971924], "w_4": [[0.5988775491714478, 0.09668736904859543], [-0.04360569268465042, 0.06491032242774963], [-0.11868984252214432, -0.09601487964391708], [-0.06554870307445526, -0.14189276099205017]], "b_4": [-0.08148707449436188, -2.8251802921295166], "input_norm_mat": [[-3.0, 3.0], [-3.0, 3.0], [0.0, 40.0], [-3.0, 3.0]], "output_norm_mat": [-1.0, 1.0], "temperature": 100.0} -,"CHEVROLET_BOLT_CC": {"w_1": [[0.3452189564704895, -0.15614677965641022, -0.04062516987323761, -0.5960758328437805, 0.3211185932159424, 0.31732726097106934, -0.04430829733610153, -0.37327295541763306, -0.14118380844593048, 0.12712529301643372, 0.2641555070877075, -0.3451094627380371, -0.005127656273543835, 0.6185108423233032, 0.03725295141339302, 0.3763789236545563], [-0.0708412230014801, 0.3667356073856354, 0.031383827328681946, 0.1740853488445282, -0.04695861041545868, 0.018055908381938934, 0.009072160348296165, -0.23640218377113342, -0.10362917929887772, 0.022628149017691612, -0.224413201212883, 0.20718418061733246, -0.016947750002145767, -0.3872031271457672, -0.15500062704086304, -0.06375953555107117], [-0.0838046595454216, -0.0242826659232378, -0.07765661180019379, 0.028858814388513565, -0.09516210108995438, 0.008368706330657005, 0.1689300835132599, 0.015036891214549541, -0.15121428668498993, 0.1388195902109146, 0.11486363410949707, 0.0651545450091362, 0.13559958338737488, 0.04300367832183838, -0.13856294751167297, -0.058136988431215286], [-0.006249868310987949, 0.08809533715248108, -0.040690965950489044, 0.02359287068247795, -0.00766348373144865, 0.24816390872001648, -0.17360293865203857, -0.03676899895071983, -0.17564819753170013, 0.18998438119888306, -0.050583917647600174, -0.006488069426268339, 0.10649101436138153, -0.024557121098041534, -0.103276826441288, 0.18448011577129364]], "b_1": [0.2935388386249542, 0.10967712104320526, -0.014007942751049995, 0.211833655834198, 0.33605605363845825, 0.37722209095954895, -0.16615016758441925, 0.3134673535823822, 0.06695777177810669, 0.3425212800502777, 0.3769673705101013, 0.23186539113521576, 0.5770409107208252, -0.05929069593548775, 0.01839117519557476, 0.03828774020075798], "w_2": [[-0.06261160969734192, 0.010185074992477894, -0.06083013117313385, -0.04531499370932579, -0.08979734033346176, 0.3432150185108185, -0.019801849499344826, 0.3010321259498596], [0.19698476791381836, -0.009238275699317455, 0.08842222392559052, -0.09516377002000809, -0.05022778362035751, 0.13626104593276978, -0.052890390157699585, 0.15569131076335907], [0.0724768117070198, -0.09018408507108688, 0.06850195676088333, -0.025572121143341064, 0.0680626779794693, -0.07648195326328278, 0.07993496209383011, -0.059752143919467926], [1.267876386642456, -0.05755887180566788, -0.08429178595542908, 0.021366603672504425, -0.0006479775765910745, -1.4292563199996948, -0.08077696710824966, -1.414825439453125], [0.04535430669784546, 0.06555880606174469, -0.027145234867930412, -0.07661093026399612, -0.05702832341194153, 0.23650476336479187, 0.0024587824009358883, 0.20126521587371826], [0.006042032968252897, 0.042880818247795105, 0.002187949838116765, -0.017126334831118584, -0.08352015167474747, 0.19801731407642365, -0.029196614399552345, 0.23713473975658417], [-0.01644900068640709, -0.04358499124646187, 0.014584392309188843, 0.07155826687812805, -0.09354910999536514, -0.033351872116327286, 0.07138452678918839, -0.04755295440554619], [-1.1012420654296875, -0.03534531593322754, 0.02167935110628605, -0.01116552110761404, -0.08436500281095505, 1.1038788557052612, 0.027903547510504723, 1.0676132440567017], [0.03843916580080986, -0.0952216386795044, 0.039226632565259933, 0.002778085647150874, -0.020275786519050598, -0.07848760485649109, 0.04803166165947914, 0.015538203530013561], [0.018385495990514755, -0.025189843028783798, 0.0036680365446954966, -0.02105865254998207, 0.04808586835861206, 0.1575016975402832, 0.02703506126999855, 0.23039312660694122], [-0.0033881019335240126, -0.10210853815078735, -0.04877309128642082, 0.006989633198827505, 0.046798162162303925, 0.38676899671554565, -0.032304272055625916, 0.2345031052827835], [0.22092825174331665, -0.09642873704433441, 0.04499409720301628, 0.05108088254928589, -0.10191166400909424, 0.12818090617656708, -0.021021494641900063, 0.09440375864505768], [0.1212429478764534, -0.028194155544042587, -0.0981956496834755, 0.08226924389600754, 0.055346839129924774, 0.27067816257476807, -0.09064067900180817, 0.12580905854701996], [-1.6740131378173828, -0.02066155895590782, -0.05924689769744873, 0.06347910314798355, -0.07821853458881378, 1.2807466983795166, 0.04589352011680603, 1.310766577720642], [-0.09893272817134857, -0.04093599319458008, -0.02502273954451084, 0.09490344673395157, -0.0211324505507946, -0.09021010994911194, 0.07936318963766098, -0.03593116253614426], [-0.08490308374166489, -0.015558987855911255, -0.048692114651203156, -0.007421435788273811, -0.040531404316425323, 0.25889304280281067, 0.06012800335884094, 0.27946868538856506]], "b_2": [0.07973937690258026, -0.010446485131978989, -0.003066520905122161, -0.031895797699689865, 0.006032303906977177, 0.24106740951538086, -0.008969511836767197, 0.2872662842273712], "w_3": [[-1.364486813545227, -0.11682678014039993, 0.01764785870909691, 0.03926877677440643], [-0.05695437639951706, 0.05472218990325928, 0.1266128271818161, 0.09950875490903854], [0.11415273696184158, -0.10069356113672256, 0.0864749327301979, -0.043946366757154465], [-0.10138195008039474, -0.040128443390131, -0.08937158435583115, -0.0048376512713730335], [-0.0028251828625798225, -0.04743027314543724, 0.06340016424655914, 0.07277824729681015], [0.49482327699661255, -0.06410001963376999, -0.0999293103814125, -0.14250673353672028], [0.042802367359399796, 0.0015462725423276424, -0.05991362780332565, 0.1022040992975235], [0.3523194193840027, 0.07343732565641403, 0.04157765582203865, -0.12358107417821884]], "b_3": [0.2653026282787323, -0.058485131710767746, -0.0744510293006897, 0.012550175189971924], "w_4": [[0.5988775491714478, 0.09668736904859543], [-0.04360569268465042, 0.06491032242774963], [-0.11868984252214432, -0.09601487964391708], [-0.06554870307445526, -0.14189276099205017]], "b_4": [-0.08148707449436188, -2.8251802921295166], "input_norm_mat": [[-3.0, 3.0], [-3.0, 3.0], [0.0, 40.0], [-3.0, 3.0]], "output_norm_mat": [-1.0, 1.0], "temperature": 100.0}} diff --git a/selfdrive/car/toyota/carcontroller.py b/selfdrive/car/toyota/carcontroller.py index b2eeb3e96..e30f870a2 100644 --- a/selfdrive/car/toyota/carcontroller.py +++ b/selfdrive/car/toyota/carcontroller.py @@ -15,8 +15,6 @@ from openpilot.selfdrive.car.toyota.values import CAR, STATIC_DSU_MSGS, NO_STOP_ from openpilot.selfdrive.controls.lib.pid import PIDController from opendbc.can.packer import CANPacker -from openpilot.selfdrive.car.interfaces import get_max_allowed_accel - GearShifter = car.CarState.GearShifter LongCtrlState = car.CarControl.Actuators.LongControlState SteerControlType = car.CarParams.SteerControlType @@ -30,6 +28,8 @@ ACCEL_WINDUP_LIMIT = 4.0 * DT_CTRL * 3 # m/s^2 / frame ACCEL_WINDDOWN_LIMIT = -4.0 * DT_CTRL * 3 # m/s^2 / frame ACCEL_PID_UNWIND = 0.03 * DT_CTRL * 3 # m/s^2 / frame +MAX_PITCH_COMPENSATION = 1.5 # m/s^2 + # LKA limits # EPS faults if you apply torque while the steering rate is above 100 deg/s for too long MAX_STEER_RATE = 100 # deg/s @@ -76,7 +76,8 @@ class CarController(CarControllerBase): self.long_pid = get_long_tune(self.CP, self.params) self.aego = FirstOrderFilter(0.0, 0.25, DT_CTRL * 3) - self.pitch = FirstOrderFilter(0, 0.5, DT_CTRL) + self.pitch = FirstOrderFilter(0, 0.25, DT_CTRL) + self.pitch_slow = FirstOrderFilter(0, 1.5, DT_CTRL) self.accel = 0 self.prev_accel = 0 @@ -93,16 +94,7 @@ class CarController(CarControllerBase): # FrogPilot variables self.doors_locked = False - self.stock_max_accel = self.params.ACCEL_MAX - def update(self, CC, CS, now_nanos, frogpilot_toggles): - if frogpilot_toggles.sport_plus and (CS.out.gearShifter == GearShifter.sport or not frogpilot_toggles.map_acceleration): - self.params.ACCEL_MAX = get_max_allowed_accel(CS.out.vEgo) - self.long_pid.pos_limit = self.params.ACCEL_MAX - else: - self.params.ACCEL_MAX = self.stock_max_accel - self.long_pid.pos_limit = self.params.ACCEL_MAX - actuators = CC.actuators stopping = actuators.longControlState == LongCtrlState.stopping hud_control = CC.hudControl @@ -111,6 +103,7 @@ class CarController(CarControllerBase): if len(CC.orientationNED) == 3: self.pitch.update(CC.orientationNED[1]) + self.pitch_slow.update(CC.orientationNED[1]) # *** control msgs *** can_sends = [] @@ -276,6 +269,15 @@ class CarController(CarControllerBase): self.long_pid.i -= ACCEL_PID_UNWIND * float(np.sign(self.long_pid.i)) error_future = pcm_accel_cmd - a_ego_future + + if not stopping: + # Toyota's PCM slowly responds to changes in pitch. On change, we amplify our + # acceleration request to compensate for the undershoot and following overshoot + high_pass_pitch = self.pitch.x - self.pitch_slow.x + pitch_compensation = float(np.clip(math.sin(high_pass_pitch) * ACCELERATION_DUE_TO_GRAVITY, + -MAX_PITCH_COMPENSATION, MAX_PITCH_COMPENSATION)) + pcm_accel_cmd += pitch_compensation + pcm_accel_cmd = self.long_pid.update(error_future, speed=CS.out.vEgo, feedforward=pcm_accel_cmd, @@ -355,7 +357,7 @@ class CarController(CarControllerBase): new_actuators.steer = apply_steer / self.params.STEER_MAX new_actuators.steerOutputCan = apply_steer new_actuators.steeringAngleDeg = self.last_angle - new_actuators.accel = self.accel + new_actuators.accel = float(self.accel) # FrogPilot Toyota carcontroller functions if not self.doors_locked and CS.out.gearShifter != PARK: diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index 8ef17dd6c..7cc9300d0 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -131,9 +131,6 @@ class CarInterface(CarInterfaceBase): if not ret.openpilotLongitudinalControl: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_TOYOTA_STOCK_LONGITUDINAL - if ret.enableGasInterceptor: - ret.safetyConfigs[0].safetyParam |= Panda.FLAG_TOYOTA_GAS_INTERCEPTOR - # min speed to enable ACC. if car can do stop and go, then set enabling speed # to a negative value, so it won't matter. ret.minEnableSpeed = -1. if (candidate in STOP_AND_GO_CAR or ret.enableGasInterceptor) else MIN_ACC_SPEED diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index 4c54cfa6a..a778acea0 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -59,7 +59,7 @@ class ToyotaFlags(IntFlag): # these cars use the Lane Tracing Assist (LTA) message for lateral control ANGLE_CONTROL = 128 NO_STOP_TIMER = 256 - # these cars are speculated to allow stop and go when the DSU is unplugged + # these cars are speculated to allow stop and go when the DSU is unplugged or disabled with sDSU SNG_WITHOUT_DSU = 512 # these cars can utilize 2.0 m/s^2 RAISED_ACCEL_LIMIT = 2048 diff --git a/selfdrive/car/volkswagen/carcontroller.py b/selfdrive/car/volkswagen/carcontroller.py index d064ead1b..bda99b5c9 100644 --- a/selfdrive/car/volkswagen/carcontroller.py +++ b/selfdrive/car/volkswagen/carcontroller.py @@ -8,9 +8,6 @@ from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.car.volkswagen import mqbcan, pqcan from openpilot.selfdrive.car.volkswagen.values import CANBUS, CarControllerParams, VolkswagenFlags -from openpilot.selfdrive.car.interfaces import get_max_allowed_accel - -GearShifter = car.CarState.GearShifter VisualAlert = car.CarControl.HUDControl.VisualAlert LongCtrlState = car.CarControl.Actuators.LongControlState @@ -83,10 +80,7 @@ class CarController(CarControllerBase): if self.frame % self.CCP.ACC_CONTROL_STEP == 0 and self.CP.openpilotLongitudinalControl: acc_control = self.CCS.acc_control_value(CS.out.cruiseState.available, CS.out.accFaulted, CC.longActive) - if frogpilot_toggles.sport_plus and (CS.out.gearShifter == GearShifter.sport or not frogpilot_toggles.map_acceleration): - accel = clip(actuators.accel, self.CCP.ACCEL_MIN, get_max_allowed_accel(CS.out.vEgo)) if CC.longActive else 0 - else: - accel = clip(actuators.accel, self.CCP.ACCEL_MIN, self.CCP.ACCEL_MAX) if CC.longActive else 0 + accel = clip(actuators.accel, self.CCP.ACCEL_MIN, self.CCP.ACCEL_MAX) if CC.longActive else 0 stopping = actuators.longControlState == LongCtrlState.stopping starting = actuators.longControlState == LongCtrlState.pid and (CS.esp_hold_confirmation or CS.out.vEgo < frogpilot_toggles.vEgoStopping) can_sends.extend(self.CCS.create_acc_accel_control(self.packer_pt, CANBUS.pt, CS.acc_type, CC.longActive, accel, diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index 75bab0bfc..17e8df979 100644 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -33,7 +33,6 @@ from openpilot.selfdrive.controls.lib.vehicle_model import VehicleModel from openpilot.system.hardware import HARDWARE from openpilot.frogpilot.common.frogpilot_variables import get_frogpilot_toggles, params_memory -from openpilot.frogpilot.controls.lib.frogpilot_acceleration import get_max_allowed_accel SOFT_DISABLE_TIME = 3 # seconds LDW_MIN_SPEED = 31 * CV.MPH_TO_MS @@ -52,6 +51,7 @@ Desire = log.Desire LaneChangeState = log.LaneChangeState LaneChangeDirection = log.LaneChangeDirection EventName = car.CarEvent.EventName +FrogPilotEventName = custom.FrogPilotCarEvent.EventName ButtonType = car.CarState.ButtonEvent.Type FrogPilotButtonType = custom.FrogPilotCarState.ButtonEvent.Type SafetyModel = car.CarParams.SafetyModel @@ -74,11 +74,11 @@ class Controls: self.CP = msg.as_builder() cloudlog.info("controlsd got CarParams") - with custom.FrogPilotCarParams.from_bytes(self.params.get("FrogPilotCarParamsPersistent", block=True)) as fpmsg: - FPCP = fpmsg.as_builder() + with custom.FrogPilotCarParams.from_bytes(self.params.get("FrogPilotCarParams", block=True)) as fpmsg: + self.FPCP = fpmsg.as_builder() # Uses car interface helper functions, altering state won't be considered by card for actuation - self.CI = get_car_interface(self.CP, FPCP) + self.CI = get_car_interface(self.CP, self.FPCP) else: self.CI, self.CP = CI, CI.CP @@ -86,7 +86,7 @@ class Controls: self.branch = get_short_branch() # Setup sockets - self.pm = messaging.PubMaster(['controlsState', 'carControl', 'onroadEvents']) + self.pm = messaging.PubMaster(['controlsState', 'carControl', 'onroadEvents', 'frogpilotControlsState', 'frogpilotOnroadEvents']) self.sensor_packets = ["accelerometer", "gyroscope"] self.camera_packets = ["roadCameraState", "driverCameraState", "wideRoadCameraState"] @@ -136,10 +136,10 @@ class Controls: self.LaC: LatControl if self.CP.steerControlType == car.CarParams.SteerControlType.angle: self.LaC = LatControlAngle(self.CP, self.CI) - elif self.CP.lateralTuning.which() == 'pid': + elif self.FPCP.lateralTuning.which() == 'pid': self.LaC = LatControlPID(self.CP, self.CI) - elif self.CP.lateralTuning.which() == 'torque': - self.LaC = LatControlTorque(self.CP, self.CI) + elif self.FPCP.lateralTuning.which() == 'torque': + self.LaC = LatControlTorque(self.CP, self.FPCP, self.CI) self.initialized = False self.state = State.disabled @@ -156,7 +156,8 @@ class Controls: self.current_alert_types = [ET.PERMANENT] self.logged_comm_issue = None self.not_running_prev = None - self.steer_limited = False + self.steer_limited_by_safety = False + self.curvature = 0.0 self.desired_curvature = 0.0 self.experimental_mode = False self.personality = self.read_personality_param() @@ -185,8 +186,6 @@ class Controls: self.rk = Ratekeeper(100, print_delay_threshold=None) # FrogPilot variables - self.frogpilot_toggles = get_frogpilot_toggles() - self.belowSteerSpeed_shown = False self.distance_pressed_previously = False self.resumeRequired_shown = False @@ -194,12 +193,17 @@ class Controls: self.display_timer = 0 + self.frogpilot_events_prev = [] + self.event_names_to_clear = set() - self.use_old_long = self.frogpilot_toggles.old_long_api - self.has_menu = self.CP.carName == "gm" and not (self.CP.flags & GMFlags.NO_CAMERA.value or self.CP.carFingerprint in CC_ONLY_CAR) + self.frogpilot_AM = AlertManager() + self.frogpilot_events = Events(frogpilot=True) + + self.frogpilot_toggles = get_frogpilot_toggles() + def set_initial_state(self): if REPLAY: controls_state = self.params.get("ReplayControlsState") @@ -210,10 +214,14 @@ class Controls: if any(ps.controlsAllowed for ps in self.sm['pandaStates']): self.state = State.enabled + def contains_event_type(self, *event_types): + return any(self.events.contains(event_type) or self.frogpilot_events.contains(event_type) for event_type in event_types) + def update_events(self, CS): """Compute onroadEvents from carState""" self.events.clear() + self.frogpilot_events.clear() # Add joystick event, static on cars, dynamic on nonCars if self.joystick_mode: @@ -222,7 +230,10 @@ class Controls: # Add startup event if self.startup_event is not None: - self.events.add(self.startup_event) + if self.startup_event == FrogPilotEventName.customStartupAlert: + self.frogpilot_events.add(self.startup_event) + else: + self.events.add(self.startup_event) self.startup_event = None # Don't add any more events if not initialized @@ -288,7 +299,7 @@ class Controls: if (CS.leftBlindspot and direction == LaneChangeDirection.left) or \ (CS.rightBlindspot and direction == LaneChangeDirection.right): if self.frogpilot_toggles.loud_blindspot_alert: - self.events.add(EventName.laneChangeBlockedLoud) + self.frogpilot_events.add(FrogPilotEventName.laneChangeBlockedLoud) else: self.events.add(EventName.laneChangeBlocked) else: @@ -296,12 +307,12 @@ class Controls: if self.sm['frogpilotPlan'].laneWidthLeft >= self.frogpilot_toggles.lane_detection_width: self.events.add(EventName.preLaneChangeLeft) else: - self.events.add(EventName.noLaneAvailable) + self.frogpilot_events.add(FrogPilotEventName.noLaneAvailable) else: if self.sm['frogpilotPlan'].laneWidthRight >= self.frogpilot_toggles.lane_detection_width: self.events.add(EventName.preLaneChangeRight) else: - self.events.add(EventName.noLaneAvailable) + self.frogpilot_events.add(FrogPilotEventName.noLaneAvailable) elif self.sm['modelV2'].meta.laneChangeState in (LaneChangeState.laneChangeStarting, LaneChangeState.laneChangeFinishing): self.events.add(EventName.laneChange) @@ -309,8 +320,12 @@ class Controls: for i, pandaState in enumerate(self.sm['pandaStates']): # All pandas must match the list of safetyConfigs, and if outside this list, must be silent or noOutput if i < len(self.CP.safetyConfigs): + expected_param = self.CP.safetyConfigs[i].safetyParam + if i < len(self.FPCP.safetyConfigs): + expected_param |= self.FPCP.safetyConfigs[i].safetyParam + safety_mismatch = pandaState.safetyModel != self.CP.safetyConfigs[i].safetyModel or \ - pandaState.safetyParam != self.CP.safetyConfigs[i].safetyParam or \ + pandaState.safetyParam != expected_param or \ pandaState.alternativeExperience != self.CP.alternativeExperience else: safety_mismatch = pandaState.safetyModel not in IGNORED_SAFETY_MODES @@ -351,7 +366,7 @@ class Controls: self.events.add(EventName.canError) # generic catch-all. ideally, a more specific event should be added above instead - has_disable_events = self.events.contains(ET.NO_ENTRY) and (self.events.contains(ET.SOFT_DISABLE) or self.events.contains(ET.IMMEDIATE_DISABLE)) + has_disable_events = self.contains_event_type(ET.NO_ENTRY) and self.contains_event_type(ET.SOFT_DISABLE, ET.IMMEDIATE_DISABLE) no_system_errors = (not has_disable_events) or (len(self.events) == num_events) if not self.sm.all_checks() and no_system_errors: if not self.sm.all_alive(): @@ -424,10 +439,10 @@ class Controls: self.events.add(EventName.modeldLagging) # Add FrogPilot events - self.events.add_from_msg(self.sm['frogpilotPlan'].frogpilotEvents) + self.frogpilot_events.add_from_msg(self.sm['frogpilotPlan'].frogpilotEvents) if self.frogpilot_toggles.block_user: - self.events.add(EventName.blockUser, static=True) + self.frogpilot_events.add(FrogPilotEventName.blockUser) # Remove already played events event_names = self.events.names @@ -513,29 +528,29 @@ class Controls: # ENABLED, SOFT DISABLING, PRE ENABLING, OVERRIDING if self.state != State.disabled: # user and immediate disable always have priority in a non-disabled state - if self.events.contains(ET.USER_DISABLE): + if self.contains_event_type(ET.USER_DISABLE): self.state = State.disabled self.current_alert_types.append(ET.USER_DISABLE) - elif self.events.contains(ET.IMMEDIATE_DISABLE): + elif self.contains_event_type(ET.IMMEDIATE_DISABLE): self.state = State.disabled self.current_alert_types.append(ET.IMMEDIATE_DISABLE) else: # ENABLED if self.state == State.enabled: - if self.events.contains(ET.SOFT_DISABLE): + if self.contains_event_type(ET.SOFT_DISABLE): self.state = State.softDisabling self.soft_disable_timer = int(SOFT_DISABLE_TIME / DT_CTRL) self.current_alert_types.append(ET.SOFT_DISABLE) - elif self.events.contains(ET.OVERRIDE_LATERAL) or self.events.contains(ET.OVERRIDE_LONGITUDINAL): + elif self.contains_event_type(ET.OVERRIDE_LATERAL, ET.OVERRIDE_LONGITUDINAL): self.state = State.overriding self.current_alert_types += [ET.OVERRIDE_LATERAL, ET.OVERRIDE_LONGITUDINAL] # SOFT DISABLING elif self.state == State.softDisabling: - if not self.events.contains(ET.SOFT_DISABLE): + if not self.contains_event_type(ET.SOFT_DISABLE): # no more soft disabling condition, so go back to ENABLED self.state = State.enabled @@ -547,32 +562,32 @@ class Controls: # PRE ENABLING elif self.state == State.preEnabled: - if not self.events.contains(ET.PRE_ENABLE): + if not self.contains_event_type(ET.PRE_ENABLE): self.state = State.enabled else: self.current_alert_types.append(ET.PRE_ENABLE) # OVERRIDING elif self.state == State.overriding: - if self.events.contains(ET.SOFT_DISABLE): + if self.contains_event_type(ET.SOFT_DISABLE): self.state = State.softDisabling self.soft_disable_timer = int(SOFT_DISABLE_TIME / DT_CTRL) self.current_alert_types.append(ET.SOFT_DISABLE) - elif not (self.events.contains(ET.OVERRIDE_LATERAL) or self.events.contains(ET.OVERRIDE_LONGITUDINAL)): + elif not self.contains_event_type(ET.OVERRIDE_LATERAL, ET.OVERRIDE_LONGITUDINAL): self.state = State.enabled else: self.current_alert_types += [ET.OVERRIDE_LATERAL, ET.OVERRIDE_LONGITUDINAL] # DISABLED elif self.state == State.disabled: - if self.events.contains(ET.ENABLE): - if self.events.contains(ET.NO_ENTRY): + if self.contains_event_type(ET.ENABLE): + if self.contains_event_type(ET.NO_ENTRY): self.current_alert_types.append(ET.NO_ENTRY) else: - if self.events.contains(ET.PRE_ENABLE): + if self.contains_event_type(ET.PRE_ENABLE): self.state = State.preEnabled - elif self.events.contains(ET.OVERRIDE_LATERAL) or self.events.contains(ET.OVERRIDE_LONGITUDINAL): + elif self.contains_event_type(ET.OVERRIDE_LATERAL, ET.OVERRIDE_LONGITUDINAL): self.state = State.overriding else: self.state = State.enabled @@ -594,8 +609,11 @@ class Controls: sr = max(lp.steerRatio, 0.1) self.VM.update_params(x, sr) + steer_angle_without_offset = math.radians(CS.steeringAngleDeg - lp.angleOffsetDeg) + self.curvature = -self.VM.calc_curvature(steer_angle_without_offset, CS.vEgo, lp.roll) + # Update Torque Params - if self.CP.lateralTuning.which() == 'torque': + if self.FPCP.lateralTuning.which() == 'torque': torque_params = self.sm['liveTorqueParameters'] if self.sm.all_checks(['liveTorqueParameters']) and (torque_params.useParams or self.frogpilot_toggles.force_auto_tune): self.LaC.update_live_torque_params(torque_params.latAccelFactorFiltered, torque_params.latAccelOffsetFiltered, @@ -614,7 +632,7 @@ class Controls: standstill = CS.vEgo <= max(self.CP.minSteerSpeed, MIN_LATERAL_CONTROL_SPEED) or CS.standstill CC.latActive = (self.active or self.sm['frogpilotCarState'].alwaysOnLateralEnabled) and not CS.steerFaultTemporary and not CS.steerFaultPermanent and \ (not standstill or self.joystick_mode) and self.sm['frogpilotPlan'].lateralCheck and not self.sm['frogpilotCarState'].pauseLateral - CC.longActive = self.enabled and not self.events.contains(ET.OVERRIDE_LONGITUDINAL) and not self.sm['frogpilotCarState'].pauseLongitudinal and self.CP.openpilotLongitudinalControl + CC.longActive = self.enabled and not self.contains_event_type(ET.OVERRIDE_LONGITUDINAL) and not self.sm['frogpilotCarState'].pauseLongitudinal and self.CP.openpilotLongitudinalControl actuators = CC.actuators actuators.longControlState = self.LoC.long_control_state @@ -632,7 +650,7 @@ class Controls: if not CC.latActive: self.LaC.reset() if not CC.longActive: - if self.use_old_long: + if self.frogpilot_toggles.old_long_api: self.LoC.reset_old_long(v_pid=CS.vEgo) else: self.LoC.reset() @@ -640,25 +658,30 @@ class Controls: if not self.joystick_mode: # accel PID loop pid_accel_limits = self.CI.get_pid_accel_limits(self.CP, CS.vEgo, self.v_cruise_helper.v_cruise_kph * CV.KPH_TO_MS) - if self.frogpilot_toggles.sport_plus and (self.sm["frogpilotCarState"].sportGear or not self.frogpilot_toggles.map_acceleration): - pid_accel_limits = (pid_accel_limits[0], get_max_allowed_accel(CS.vEgo)) - - if self.use_old_long: + if self.frogpilot_toggles.old_long_api: t_since_plan = (self.sm.frame - self.sm.recv_frame['longitudinalPlan']) * DT_CTRL - actuators.accel = min(self.LoC.update_old_long(CC.longActive, CS, long_plan, pid_accel_limits, t_since_plan, self.frogpilot_toggles), self.frogpilot_toggles.max_desired_acceleration) + actuators.accel = float(min(self.LoC.update_old_long(CC.longActive, CS, long_plan, pid_accel_limits, t_since_plan, self.frogpilot_toggles), self.frogpilot_toggles.max_desired_acceleration)) else: - actuators.accel = min(self.LoC.update(CC.longActive, CS, long_plan.aTarget, long_plan.shouldStop, pid_accel_limits, self.frogpilot_toggles), self.frogpilot_toggles.max_desired_acceleration) + actuators.accel = float(min(self.LoC.update(CC.longActive, CS, long_plan.aTarget, long_plan.shouldStop, pid_accel_limits, self.frogpilot_toggles), self.frogpilot_toggles.max_desired_acceleration)) if len(long_plan.speeds): actuators.speed = long_plan.speeds[-1] # Steering PID loop and lateral MPC - self.desired_curvature = clip_curvature(CS.vEgo, self.desired_curvature, model_v2.action.desiredCurvature) + # Reset desired curvature to current to avoid violating the limits on engage + new_desired_curvature = model_v2.action.desiredCurvature if CC.latActive else self.curvature + self.desired_curvature, curvature_limited = clip_curvature(CS.vEgo, self.desired_curvature, new_desired_curvature, lp.roll) + actuators.curvature = self.desired_curvature - actuators.steer, actuators.steeringAngleDeg, lac_log = self.LaC.update(CC.latActive, CS, self.VM, lp, - self.steer_limited, self.desired_curvature, - self.sm['liveLocationKalman'], - model_data=self.sm['modelV2'], frogpilot_toggles=self.frogpilot_toggles) + steer, steeringAngleDeg, lac_log = self.LaC.update(CC.latActive, CS, self.VM, lp, + self.steer_limited_by_safety, self.desired_curvature, + curvature_limited, + self.sm['liveLocationKalman'], + self.sm['modelV2'], + self.frogpilot_toggles) + actuators.steer = float(steer) + actuators.steeringAngleDeg = float(steeringAngleDeg) + else: lac_log = log.ControlsState.LateralDebugState.new_message() if self.sm.recv_frame['testJoystick'] > 0: @@ -682,35 +705,22 @@ class Controls: lac_log.output = actuators.steer lac_log.saturated = abs(actuators.steer) >= 0.9 + # Send a "steering required alert" if saturation count has reached the limit if CS.steeringPressed: self.last_steering_pressed_frame = self.sm.frame recent_steer_pressed = (self.sm.frame - self.last_steering_pressed_frame)*DT_CTRL < 2.0 - - # Send a "steering required alert" if saturation count has reached the limit if lac_log.active and not recent_steer_pressed and not self.CP.notCar: - if self.CP.lateralTuning.which() == 'torque' and not self.joystick_mode: - undershooting = abs(lac_log.desiredLateralAccel) / abs(1e-3 + lac_log.actualLateralAccel) > 1.2 - turning = abs(lac_log.desiredLateralAccel) > 1.0 - good_speed = CS.vEgo > 5 - max_torque = abs(self.sm['carOutput'].actuatorsOutput.steer) > 0.99 - if undershooting and turning and good_speed and max_torque: - lac_log.active and self.events.add(EventName.goatSteerSaturated if self.frogpilot_toggles.goat_scream_alert else EventName.steerSaturated) - elif lac_log.saturated: - # TODO probably should not use dpath_points but curvature - dpath_points = model_v2.position.y - if len(dpath_points): - # Check if we deviated from the path - # TODO use desired vs actual curvature - if self.CP.steerControlType == car.CarParams.SteerControlType.angle: - steering_value = actuators.steeringAngleDeg - else: - steering_value = actuators.steer - - left_deviation = steering_value > 0 and dpath_points[0] < -0.20 - right_deviation = steering_value < 0 and dpath_points[0] > 0.20 - - if left_deviation or right_deviation: - self.events.add(EventName.steerSaturated) + clipped_speed = max(CS.vEgo, 0.3) + actual_lateral_accel = self.curvature * (clipped_speed**2) + desired_lateral_accel = model_v2.action.desiredCurvature * (clipped_speed**2) + undershooting = abs(desired_lateral_accel) / abs(1e-3 + actual_lateral_accel) > 1.2 + turning = abs(desired_lateral_accel) > 1.0 + # TODO: lac.saturated includes speed and other checks, should be pulled out + if undershooting and turning and lac_log.saturated: + if self.frogpilot_toggles.goat_scream_alert: + self.frogpilot_events.add(FrogPilotEventName.goatSteerSaturated) + else: + self.events.add(EventName.steerSaturated) # Ensure no NaNs/Infs for p in ACTUATOR_FIELDS: @@ -754,6 +764,9 @@ class Controls: if self.frogpilot_toggles.conditional_experimental_mode or self.frogpilot_toggles.slc_fallback_experimental_mode: self.experimental_mode = self.sm['frogpilotPlan'].experimentalMode + if hasattr(self.LaC, "pid"): + self.LaC.pid._k_p = self.frogpilot_toggles.steerKp + # Update FrogPilot variables if self.sm['frogpilotPlan'].togglesUpdated: self.frogpilot_toggles = get_frogpilot_toggles() @@ -826,10 +839,10 @@ class Controls: if not self.CP.passive and self.initialized: CO = self.sm['carOutput'] if self.CP.steerControlType == car.CarParams.SteerControlType.angle: - self.steer_limited = abs(CC.actuators.steeringAngleDeg - CO.actuatorsOutput.steeringAngleDeg) > \ - STEER_ANGLE_SATURATION_THRESHOLD + self.steer_limited_by_safety = abs(CC.actuators.steeringAngleDeg - CO.actuatorsOutput.steeringAngleDeg) > \ + STEER_ANGLE_SATURATION_THRESHOLD else: - self.steer_limited = abs(CC.actuators.steer - CO.actuatorsOutput.steer) > 1e-2 + self.steer_limited_by_safety = abs(CC.actuators.steer - CO.actuatorsOutput.steer) > 1e-2 force_decel = (self.sm['driverMonitoringState'].awarenessStatus < 0.) or \ (self.state == State.softDisabling) or \ @@ -861,7 +874,7 @@ class Controls: controlsState.curvature = curvature controlsState.desiredCurvature = self.desired_curvature controlsState.state = self.state - controlsState.engageable = not self.events.contains(ET.NO_ENTRY) + controlsState.engageable = not self.contains_event_type(ET.NO_ENTRY) controlsState.longControlState = self.LoC.long_control_state controlsState.vPid = float(self.LoC.v_pid) controlsState.vCruise = float(self.v_cruise_helper.v_cruise_kph) @@ -875,7 +888,7 @@ class Controls: controlsState.experimentalMode = self.experimental_mode controlsState.personality = self.personality - lat_tuning = self.CP.lateralTuning.which() + lat_tuning = self.FPCP.lateralTuning.which() if self.joystick_mode: controlsState.lateralControlState.debugState = lac_log elif self.CP.steerControlType == car.CarParams.SteerControlType.angle: @@ -888,12 +901,18 @@ class Controls: self.pm.send('controlsState', dat) # onroadEvents - logged every second or on change - if (self.sm.frame % int(1. / DT_CTRL) == 0) or (self.events.names != self.events_prev): + if (self.sm.frame % int(1. / DT_CTRL) == 0) or (self.events.names != self.events_prev) or (self.frogpilot_events.names != self.frogpilot_events_prev): ce_send = messaging.new_message('onroadEvents', len(self.events)) ce_send.valid = True ce_send.onroadEvents = self.events.to_msg() self.pm.send('onroadEvents', ce_send) + + fpce_send = messaging.new_message('frogpilotOnroadEvents', len(self.frogpilot_events)) + fpce_send.valid = True + fpce_send.frogpilotOnroadEvents = self.frogpilot_events.to_msg() + self.pm.send('frogpilotOnroadEvents', fpce_send) self.events_prev = self.events.names.copy() + self.frogpilot_events_prev = self.frogpilot_events.names.copy() # carControl cc_send = messaging.new_message('carControl') @@ -901,6 +920,26 @@ class Controls: cc_send.carControl = CC self.pm.send('carControl', cc_send) + # frogpilotControlsState + frogpilot_dat = messaging.new_message('frogpilotControlsState') + frogpilot_dat.valid = CS.canValid + frogpilotControlsState = frogpilot_dat.frogpilotControlsState + + frogpilot_alerts = self.frogpilot_events.create_alerts(self.current_alert_types, [self.CP, CS, self.sm, self.is_metric, self.soft_disable_timer, self.frogpilot_toggles]) + self.frogpilot_AM.add_many(self.sm.frame, frogpilot_alerts) + current_frogpilot_alert = self.frogpilot_AM.process_alerts(self.sm.frame, clear_event_types) + + if current_frogpilot_alert: + frogpilotControlsState.alertText1 = current_frogpilot_alert.alert_text_1 + frogpilotControlsState.alertText2 = current_frogpilot_alert.alert_text_2 + frogpilotControlsState.alertSize = current_frogpilot_alert.alert_size + frogpilotControlsState.alertStatus = current_frogpilot_alert.alert_status + frogpilotControlsState.alertBlinkingRate = current_frogpilot_alert.alert_rate + frogpilotControlsState.alertType = current_frogpilot_alert.alert_type + frogpilotControlsState.alertSound = current_frogpilot_alert.audible_alert + + self.pm.send('frogpilotControlsState', frogpilot_dat) + def step(self): start_time = time.monotonic() @@ -932,7 +971,8 @@ class Controls: def params_thread(self, evt): while not evt.is_set(): self.is_metric = self.params.get_bool("IsMetric") - self.experimental_mode = self.params.get_bool("ExperimentalMode") and self.CP.openpilotLongitudinalControl + if not (self.frogpilot_toggles.conditional_experimental_mode or self.frogpilot_toggles.slc_fallback_experimental_mode): + self.experimental_mode = self.params.get_bool("ExperimentalMode") and self.CP.openpilotLongitudinalControl self.personality = self.read_personality_param() if self.CP.notCar: self.joystick_mode = self.params.get_bool("JoystickDebugMode") diff --git a/selfdrive/controls/lib/drive_helpers.py b/selfdrive/controls/lib/drive_helpers.py index 4e63d03b4..19cc147d7 100644 --- a/selfdrive/controls/lib/drive_helpers.py +++ b/selfdrive/controls/lib/drive_helpers.py @@ -5,6 +5,7 @@ from cereal import car, log from openpilot.common.conversions import Conversions as CV from openpilot.common.numpy_fast import clip, interp from openpilot.common.realtime import DT_CTRL, DT_MDL +from openpilot.selfdrive.controls.lib.vehicle_model import ACCELERATION_DUE_TO_GRAVITY # WARNING: this value was determined based on the model's training distribution, # model predictions above this speed can be unpredictable @@ -24,6 +25,7 @@ MAX_CURVATURE = 0.2 # EU guidelines MAX_LATERAL_JERK = 5.0 +MAX_LATERAL_ACCEL_NO_ROLL = 3.0 # m/s^2 MAX_VEL_ERR = 5.0 ButtonEvent = car.CarState.ButtonEvent @@ -179,29 +181,40 @@ def apply_center_deadzone(error, deadzone): def rate_limit(new_value, last_value, dw_step, up_step): return clip(new_value, last_value + dw_step, last_value + up_step) +def clamp(val, min_val, max_val): + clamped_val = float(np.clip(val, min_val, max_val)) + return clamped_val, clamped_val != val + def smooth_value(val, prev_val, tau, dt=DT_MDL): alpha = 1 - np.exp(-dt/tau) if tau > 0 else 1 return alpha * val + (1 - alpha) * prev_val -def clip_curvature(v_ego, prev_curvature, new_curvature): - v_ego = max(MIN_SPEED, v_ego) - max_curvature_rate = MAX_LATERAL_JERK / (v_ego**2) # inexact calculation, check https://github.com/commaai/openpilot/pull/24755 - safe_desired_curvature = clip(new_curvature, - prev_curvature - max_curvature_rate * DT_CTRL, - prev_curvature + max_curvature_rate * DT_CTRL) +def clip_curvature(v_ego, prev_curvature, new_curvature, roll): + # This function respects ISO lateral jerk and acceleration limits + a max curvature + v_ego = max(v_ego, MIN_SPEED) + max_curvature_rate = MAX_LATERAL_JERK / (v_ego ** 2) # inexact calculation, check https://github.com/commaai/openpilot/pull/24755 + new_curvature = np.clip(new_curvature, + prev_curvature - max_curvature_rate * DT_CTRL, + prev_curvature + max_curvature_rate * DT_CTRL) - return safe_desired_curvature + roll_compensation = roll * ACCELERATION_DUE_TO_GRAVITY + max_lat_accel = MAX_LATERAL_ACCEL_NO_ROLL + roll_compensation + min_lat_accel = -MAX_LATERAL_ACCEL_NO_ROLL + roll_compensation + new_curvature, limited_accel = clamp(new_curvature, min_lat_accel / v_ego ** 2, max_lat_accel / v_ego ** 2) + + new_curvature, limited_max_curv = clamp(new_curvature, -MAX_CURVATURE, MAX_CURVATURE) + return float(new_curvature), limited_accel or limited_max_curv def get_friction(lateral_accel_error: float, lateral_accel_deadzone: float, friction_threshold: float, - torque_params: car.CarParams.LateralTorqueTuning, friction_compensation: bool) -> float: + torque_params: car.CarParams.LateralTorqueTuning) -> float: + # TODO torque params' friction should be in lataxel space, not torque space friction_interp = interp( apply_center_deadzone(lateral_accel_error, lateral_accel_deadzone), [-friction_threshold, friction_threshold], - [-torque_params.friction, torque_params.friction] + [-torque_params.friction * torque_params.latAccelFactor, torque_params.friction * torque_params.latAccelFactor] ) - friction = float(friction_interp) if friction_compensation else 0.0 - return friction + return float(friction_interp) def get_speed_error(modelV2: log.ModelDataV2, v_ego: float) -> float: diff --git a/selfdrive/controls/lib/events.py b/selfdrive/controls/lib/events.py index c8d1ab583..8499ee8a0 100755 --- a/selfdrive/controls/lib/events.py +++ b/selfdrive/controls/lib/events.py @@ -6,7 +6,7 @@ from enum import IntEnum from collections.abc import Callable from types import SimpleNamespace -from cereal import log, car +from cereal import log, car, custom import cereal.messaging as messaging from openpilot.common.conversions import Conversions as CV from openpilot.common.git import get_short_branch @@ -16,9 +16,12 @@ from openpilot.selfdrive.locationd.calibrationd import MIN_SPEED_FILTER AlertSize = log.ControlsState.AlertSize AlertStatus = log.ControlsState.AlertStatus +FrogPilotAlertStatus = custom.FrogPilotControlsState.AlertStatus VisualAlert = car.CarControl.HUDControl.VisualAlert AudibleAlert = car.CarControl.HUDControl.AudibleAlert +FrogPilotAudibleAlert = custom.FrogPilotCarControl.HUDControl.AudibleAlert EventName = car.CarEvent.EventName +FrogPilotEventName = custom.FrogPilotCarEvent.EventName # Alert priorities @@ -47,13 +50,17 @@ class ET: # get event name from enum EVENT_NAME = {v: k for k, v in EventName.schema.enumerants.items()} +FROGPILOT_EVENT_NAME = {v: k for k, v in FrogPilotEventName.schema.enumerants.items()} class Events: - def __init__(self): + def __init__(self, frogpilot=False): self.events: list[int] = [] self.static_events: list[int] = [] - self.event_counters = dict.fromkeys(EVENTS.keys(), 0) + self.event_counters = dict.fromkeys((FROGPILOT_EVENTS if frogpilot else EVENTS).keys(), 0) + + # FrogPilot variables + self.frogpilot = frogpilot @property def names(self) -> list[int]: @@ -72,7 +79,7 @@ class Events: self.events = self.static_events.copy() def contains(self, event_type: str) -> bool: - return any(event_type in EVENTS.get(e, {}) for e in self.events) + return any(event_type in (FROGPILOT_EVENTS if self.frogpilot else EVENTS).get(e, {}) for e in self.events) def create_alerts(self, event_types: list[str], callback_args=None): if callback_args is None: @@ -80,15 +87,15 @@ class Events: ret = [] for e in self.events: - types = EVENTS[e].keys() + types = (FROGPILOT_EVENTS if self.frogpilot else EVENTS)[e].keys() for et in event_types: if et in types: - alert = EVENTS[e][et] + alert = (FROGPILOT_EVENTS if self.frogpilot else EVENTS)[e][et] if not isinstance(alert, Alert): alert = alert(*callback_args) if DT_CTRL * (self.event_counters[e] + 1) >= alert.creation_delay: - alert.alert_type = f"{EVENT_NAME[e]}/{et}" + alert.alert_type = f"{(FROGPILOT_EVENT_NAME if self.frogpilot else EVENT_NAME)[e]}/{et}" alert.event_type = et ret.append(alert) return ret @@ -100,9 +107,9 @@ class Events: def to_msg(self): ret = [] for event_name in self.events: - event = car.CarEvent.new_message() + event = (custom.FrogPilotCarEvent if self.frogpilot else car.CarEvent).new_message() event.name = event_name - for event_type in EVENTS.get(event_name, {}): + for event_type in (FROGPILOT_EVENTS if self.frogpilot else EVENTS).get(event_name, {}): setattr(event, event_type, True) ret.append(event) return ret @@ -333,7 +340,7 @@ def joystick_alert(CP: car.CarParams, CS: car.CarState, sm: messaging.SubMaster, # FrogPilot alerts def custom_startup_alert(CP: car.CarParams, CS: car.CarState, sm: messaging.SubMaster, metric: bool, soft_disable_time: int, frogpilot_toggles: SimpleNamespace) -> Alert: - return StartupAlert(frogpilot_toggles.startup_alert_top, frogpilot_toggles.startup_alert_bottom, alert_status=AlertStatus.frogpilot) + return StartupAlert(frogpilot_toggles.startup_alert_top, frogpilot_toggles.startup_alert_bottom, alert_status=FrogPilotAlertStatus.frogpilot) def forcing_stop_alert(CP: car.CarParams, CS: car.CarState, sm: messaging.SubMaster, metric: bool, soft_disable_time: int, frogpilot_toggles: SimpleNamespace) -> Alert: @@ -343,7 +350,7 @@ def forcing_stop_alert(CP: car.CarParams, CS: car.CarState, sm: messaging.SubMas return Alert( f"Forcing the car to stop in {model_length_msg}", "Press the gas pedal or 'Resume' button to override", - AlertStatus.frogpilot, AlertSize.mid, + FrogPilotAlertStatus.frogpilot, AlertSize.mid, Priority.MID, VisualAlert.none, AudibleAlert.prompt, 1.) @@ -368,7 +375,7 @@ def holiday_alert(CP: car.CarParams, CS: car.CarState, sm: messaging.SubMaster, holiday_messages.get(frogpilot_toggles.current_holiday_theme), "", AlertStatus.normal, AlertSize.small, - Priority.LOWEST, VisualAlert.none, AudibleAlert.startup, 5.) + Priority.LOWEST, VisualAlert.none, FrogPilotAudibleAlert.startup, 5.) def no_lane_available_alert(CP: car.CarParams, CS: car.CarState, sm: messaging.SubMaster, metric: bool, soft_disable_time: int, frogpilot_toggles: SimpleNamespace) -> Alert: @@ -394,7 +401,7 @@ def torque_nn_load_alert(CP: car.CarParams, CS: car.CarState, sm: messaging.SubM return Alert( "NNFF Torque Controller loaded", model_name, - AlertStatus.frogpilot, AlertSize.mid, + FrogPilotAlertStatus.frogpilot, AlertSize.mid, Priority.LOW, VisualAlert.none, AudibleAlert.engage, 5.0) @@ -1028,9 +1035,10 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { ET.PERMANENT: NormalPermanentAlert("Vehicle Sensors Calibrating", "Drive to Calibrate"), ET.NO_ENTRY: NoEntryAlert("Vehicle Sensors Calibrating"), }, +} - # FrogPilot Events - EventName.blockUser: { +FROGPILOT_EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { + FrogPilotEventName.blockUser: { ET.PERMANENT: Alert( "Don't use the 'Development' branch!", "Forcing you into 'Dashcam Mode' for your safety", @@ -1038,35 +1046,35 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { Priority.HIGHEST, VisualAlert.none, AudibleAlert.none, 1.), }, - EventName.customStartupAlert: { + FrogPilotEventName.customStartupAlert: { ET.PERMANENT: custom_startup_alert, }, - EventName.forcingStop: { + FrogPilotEventName.forcingStop: { ET.WARNING: forcing_stop_alert, }, - EventName.goatSteerSaturated: { + FrogPilotEventName.goatSteerSaturated: { ET.WARNING: Alert( "JESUS TAKE THE WHEEL!!", "Turn Exceeds Steering Limit", AlertStatus.userPrompt, AlertSize.mid, - Priority.LOW, VisualAlert.steerRequired, AudibleAlert.goat, 2.), + Priority.LOW, VisualAlert.steerRequired, FrogPilotAudibleAlert.goat, 2.), }, - EventName.greenLight: { + FrogPilotEventName.greenLight: { ET.PERMANENT: Alert( "Light turned green", "", - AlertStatus.frogpilot, AlertSize.small, + FrogPilotAlertStatus.frogpilot, AlertSize.small, Priority.MID, VisualAlert.none, AudibleAlert.prompt, 3.), }, - EventName.holidayActive: { + FrogPilotEventName.holidayActive: { ET.PERMANENT: holiday_alert, }, - EventName.laneChangeBlockedLoud: { + FrogPilotEventName.laneChangeBlockedLoud: { ET.WARNING: Alert( "Car Detected in Blindspot", "", @@ -1074,19 +1082,19 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { Priority.LOW, VisualAlert.none, AudibleAlert.warningSoft, .1), }, - EventName.leadDeparting: { + FrogPilotEventName.leadDeparting: { ET.PERMANENT: Alert( "Lead departed", "", - AlertStatus.frogpilot, AlertSize.small, + FrogPilotAlertStatus.frogpilot, AlertSize.small, Priority.MID, VisualAlert.none, AudibleAlert.prompt, 3.), }, - EventName.noLaneAvailable: { + FrogPilotEventName.noLaneAvailable: { ET.WARNING: no_lane_available_alert, }, - EventName.openpilotCrashed: { + FrogPilotEventName.openpilotCrashed: { ET.IMMEDIATE_DISABLE: Alert( "openpilot crashed", "Please post the 'Error Log' in the FrogPilot Discord!", @@ -1100,7 +1108,7 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { Priority.HIGHEST, VisualAlert.none, AudibleAlert.prompt, .1), }, - EventName.pedalInterceptorNoBrake: { + FrogPilotEventName.pedalInterceptorNoBrake: { ET.WARNING: Alert( "Braking Unavailable", "Shift to L", @@ -1108,43 +1116,43 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { Priority.HIGH, VisualAlert.wrongGear, AudibleAlert.promptRepeat, 4.), }, - EventName.speedLimitChanged: { + FrogPilotEventName.speedLimitChanged: { ET.PERMANENT: Alert( "Speed limit changed", "", - AlertStatus.frogpilot, AlertSize.small, + FrogPilotAlertStatus.frogpilot, AlertSize.small, Priority.LOW, VisualAlert.none, AudibleAlert.prompt, 3.), }, - EventName.thisIsFineSteerSaturated: { + FrogPilotEventName.thisIsFineSteerSaturated: { ET.WARNING: Alert( "This is fine โ˜•", "Turn Exceeds Steering Limit", AlertStatus.userPrompt, AlertSize.mid, - Priority.LOW, VisualAlert.steerRequired, AudibleAlert.thisIsFine, 2.), + Priority.LOW, VisualAlert.steerRequired, FrogPilotAudibleAlert.thisIsFine, 2.), }, - EventName.torqueNNLoad: { + FrogPilotEventName.torqueNNLoad: { ET.PERMANENT: torque_nn_load_alert, }, - EventName.trafficModeActive: { + FrogPilotEventName.trafficModeActive: { ET.WARNING: Alert( "Traffic Mode enabled", "", - AlertStatus.frogpilot, AlertSize.small, + FrogPilotAlertStatus.frogpilot, AlertSize.small, Priority.LOW, VisualAlert.none, AudibleAlert.prompt, 3.), }, - EventName.trafficModeInactive: { + FrogPilotEventName.trafficModeInactive: { ET.WARNING: Alert( "Traffic Mode Disabled", "", - AlertStatus.frogpilot, AlertSize.small, + FrogPilotAlertStatus.frogpilot, AlertSize.small, Priority.LOW, VisualAlert.none, AudibleAlert.prompt, 3.), }, - EventName.turningLeft: { + FrogPilotEventName.turningLeft: { ET.WARNING: Alert( "Turning left", "", @@ -1152,7 +1160,7 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { Priority.LOWEST, VisualAlert.none, AudibleAlert.none, .1, alert_rate=0.75), }, - EventName.turningRight: { + FrogPilotEventName.turningRight: { ET.WARNING: Alert( "Turning right", "", @@ -1161,98 +1169,98 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { }, # Random Events - EventName.accel30: { + FrogPilotEventName.accel30: { ET.WARNING: Alert( "UwU u went a bit fast there!", "(โ„ โ„โ€ขโ„ฯ‰โ„โ€ขโ„ โ„)", - AlertStatus.frogpilot, AlertSize.mid, - Priority.LOW, VisualAlert.none, AudibleAlert.uwu, 4.), + FrogPilotAlertStatus.frogpilot, AlertSize.mid, + Priority.LOW, VisualAlert.none, FrogPilotAudibleAlert.uwu, 4.), }, - EventName.accel35: { + FrogPilotEventName.accel35: { ET.WARNING: Alert( "I ain't giving you no tree-fiddy", "You damn Loch Ness Monsta!", - AlertStatus.frogpilot, AlertSize.mid, - Priority.LOW, VisualAlert.none, AudibleAlert.nessie, 4.), + FrogPilotAlertStatus.frogpilot, AlertSize.mid, + Priority.LOW, VisualAlert.none, FrogPilotAudibleAlert.nessie, 4.), }, - EventName.accel40: { + FrogPilotEventName.accel40: { ET.WARNING: Alert( "Great Scott!", "๐Ÿš—๐Ÿ’จ", - AlertStatus.frogpilot, AlertSize.mid, - Priority.LOW, VisualAlert.none, AudibleAlert.doc, 4.), + FrogPilotAlertStatus.frogpilot, AlertSize.mid, + Priority.LOW, VisualAlert.none, FrogPilotAudibleAlert.doc, 4.), }, - EventName.dejaVuCurve: { + FrogPilotEventName.dejaVuCurve: { ET.PERMANENT: Alert( "โ™ฌโ™ช Deja vu! แ••(โŒโ– _โ– )แ•— โ™ชโ™ฌ", "๐ŸŽ๏ธ", - AlertStatus.frogpilot, AlertSize.mid, - Priority.LOW, VisualAlert.none, AudibleAlert.dejaVu, 4.), + FrogPilotAlertStatus.frogpilot, AlertSize.mid, + Priority.LOW, VisualAlert.none, FrogPilotAudibleAlert.dejaVu, 4.), }, - EventName.firefoxSteerSaturated: { + FrogPilotEventName.firefoxSteerSaturated: { ET.WARNING: Alert( "IE Has Stopped Responding...", "Turn Exceeds Steering Limit", AlertStatus.userPrompt, AlertSize.mid, - Priority.LOW, VisualAlert.steerRequired, AudibleAlert.firefox, 4.), + Priority.LOW, VisualAlert.steerRequired, FrogPilotAudibleAlert.firefox, 4.), }, - EventName.hal9000: { + FrogPilotEventName.hal9000: { ET.WARNING: Alert( "I'm sorry Dave", "I'm afraid I can't do that...", AlertStatus.normal, AlertSize.mid, - Priority.HIGH, VisualAlert.none, AudibleAlert.hal9000, 4.), + Priority.HIGH, VisualAlert.none, FrogPilotAudibleAlert.hal9000, 4.), }, - EventName.openpilotCrashedRandomEvent: { + FrogPilotEventName.openpilotCrashedRandomEvent: { ET.IMMEDIATE_DISABLE: Alert( "openpilot crashed ๐Ÿ’ฉ", "Please post the 'Error Log' in the FrogPilot Discord!", AlertStatus.normal, AlertSize.mid, - Priority.HIGHEST, VisualAlert.none, AudibleAlert.fart, 10.), + Priority.HIGHEST, VisualAlert.none, FrogPilotAudibleAlert.fart, 10.), ET.NO_ENTRY: Alert( "openpilot crashed ๐Ÿ’ฉ", "Please post the 'Error Log' in the FrogPilot Discord!", AlertStatus.normal, AlertSize.mid, - Priority.HIGHEST, VisualAlert.none, AudibleAlert.fart, 10.), + Priority.HIGHEST, VisualAlert.none, FrogPilotAudibleAlert.fart, 10.), }, - EventName.toBeContinued: { + FrogPilotEventName.toBeContinued: { ET.PERMANENT: Alert( "To be continued...", "โฌ…๏ธ", - AlertStatus.frogpilot, AlertSize.mid, - Priority.MID, VisualAlert.none, AudibleAlert.continued, 7.), + FrogPilotAlertStatus.frogpilot, AlertSize.mid, + Priority.MID, VisualAlert.none, FrogPilotAudibleAlert.continued, 7.), }, - EventName.vCruise69: { + FrogPilotEventName.vCruise69: { ET.WARNING: Alert( "Lol 69", "", - AlertStatus.frogpilot, AlertSize.small, - Priority.LOW, VisualAlert.none, AudibleAlert.noice, 2.), + FrogPilotAlertStatus.frogpilot, AlertSize.small, + Priority.LOW, VisualAlert.none, FrogPilotAudibleAlert.noice, 2.), }, - EventName.yourFrogTriedToKillMe: { + FrogPilotEventName.yourFrogTriedToKillMe: { ET.PERMANENT: Alert( "Your Frog tried to kill me...", "๐Ÿ‘บ", - AlertStatus.frogpilot, AlertSize.mid, - Priority.MID, VisualAlert.none, AudibleAlert.angry, 5.), + FrogPilotAlertStatus.frogpilot, AlertSize.mid, + Priority.MID, VisualAlert.none, FrogPilotAudibleAlert.angry, 5.), }, - EventName.youveGotMail: { + FrogPilotEventName.youveGotMail: { ET.WARNING: Alert( "You've got mail! ๐Ÿ“ง", "", - AlertStatus.frogpilot, AlertSize.small, - Priority.LOW, VisualAlert.none, AudibleAlert.mail, 3.), + FrogPilotAlertStatus.frogpilot, AlertSize.small, + Priority.LOW, VisualAlert.none, FrogPilotAudibleAlert.mail, 3.), }, } diff --git a/selfdrive/controls/lib/latcontrol.py b/selfdrive/controls/lib/latcontrol.py index 2229e4a8a..93f59f276 100644 --- a/selfdrive/controls/lib/latcontrol.py +++ b/selfdrive/controls/lib/latcontrol.py @@ -1,6 +1,6 @@ +import numpy as np from abc import abstractmethod, ABC -from openpilot.common.numpy_fast import clip from openpilot.common.realtime import DT_CTRL MIN_LATERAL_CONTROL_SPEED = 0.3 # m/s @@ -17,16 +17,17 @@ class LatControl(ABC): self.steer_max = 1.0 @abstractmethod - def update(self, active, CS, VM, params, steer_limited, desired_curvature, llk, model_data=None, frogpilot_toggles=None): + def update(self, active, CS, VM, params, steer_limited_by_safety, desired_curvature, curvature_limited, llk, model_data, frogpilot_toggles): pass def reset(self): self.sat_count = 0. - def _check_saturation(self, saturated, CS, steer_limited): - if saturated and CS.vEgo > self.sat_check_min_speed and not steer_limited and not CS.steeringPressed: + def _check_saturation(self, saturated, CS, steer_limited_by_safety, curvature_limited): + # Saturated only if control output is not being limited by car torque/angle rate limits + if (saturated or curvature_limited) and CS.vEgo > self.sat_check_min_speed and not steer_limited_by_safety and not CS.steeringPressed: self.sat_count += self.sat_count_rate else: self.sat_count -= self.sat_count_rate - self.sat_count = clip(self.sat_count, 0.0, self.sat_limit) + self.sat_count = np.clip(self.sat_count, 0.0, self.sat_limit) return self.sat_count > (self.sat_limit - 1e-3) diff --git a/selfdrive/controls/lib/latcontrol_angle.py b/selfdrive/controls/lib/latcontrol_angle.py index ce1fa4112..01efe0868 100644 --- a/selfdrive/controls/lib/latcontrol_angle.py +++ b/selfdrive/controls/lib/latcontrol_angle.py @@ -3,6 +3,7 @@ import math from cereal import log from openpilot.selfdrive.controls.lib.latcontrol import LatControl +# TODO This is speed dependent STEER_ANGLE_SATURATION_THRESHOLD = 2.5 # Degrees @@ -10,8 +11,9 @@ class LatControlAngle(LatControl): def __init__(self, CP, CI): super().__init__(CP, CI) self.sat_check_min_speed = 5. + self.use_steer_limited_by_safety = CP.carName == "tesla" - def update(self, active, CS, VM, params, steer_limited, desired_curvature, llk, model_data=None, frogpilot_toggles=None): + def update(self, active, CS, VM, params, steer_limited_by_safety, desired_curvature, curvature_limited, llk, model_data, frogpilot_toggles): angle_log = log.ControlsState.LateralAngleState.new_message() if not active: @@ -22,8 +24,14 @@ class LatControlAngle(LatControl): angle_steers_des = math.degrees(VM.get_steer_from_curvature(-desired_curvature, CS.vEgo, params.roll)) angle_steers_des += params.angleOffsetDeg - angle_control_saturated = abs(angle_steers_des - CS.steeringAngleDeg) > STEER_ANGLE_SATURATION_THRESHOLD - angle_log.saturated = self._check_saturation(angle_control_saturated, CS, False) + if self.use_steer_limited_by_safety: + # these cars' carcontrollers calculate max lateral accel and jerk, so we can rely on carOutput for saturation + angle_control_saturated = steer_limited_by_safety + else: + # for cars which use a method of limiting torque such as a torque signal (Nissan and Toyota) + # or relying on EPS (Ford Q3), carOutput does not capture maxing out torque # TODO: this can be improved + angle_control_saturated = abs(angle_steers_des - CS.steeringAngleDeg) > STEER_ANGLE_SATURATION_THRESHOLD + angle_log.saturated = bool(self._check_saturation(angle_control_saturated, CS, False, curvature_limited)) angle_log.steeringAngleDeg = float(CS.steeringAngleDeg) angle_log.steeringAngleDesiredDeg = angle_steers_des return 0, float(angle_steers_des), angle_log diff --git a/selfdrive/controls/lib/latcontrol_pid.py b/selfdrive/controls/lib/latcontrol_pid.py index 56035e979..ed3a62f03 100644 --- a/selfdrive/controls/lib/latcontrol_pid.py +++ b/selfdrive/controls/lib/latcontrol_pid.py @@ -13,11 +13,7 @@ class LatControlPID(LatControl): k_f=CP.lateralTuning.pid.kf, pos_limit=self.steer_max, neg_limit=-self.steer_max) self.get_steer_feedforward = CI.get_steer_feedforward_function() - def reset(self): - super().reset() - self.pid.reset() - - def update(self, active, CS, VM, params, steer_limited, desired_curvature, llk, model_data=None, frogpilot_toggles=None): + def update(self, active, CS, VM, params, steer_limited_by_safety, desired_curvature, curvature_limited, llk, model_data, frogpilot_toggles): pid_log = log.ControlsState.LateralPIDState.new_message() pid_log.steeringAngleDeg = float(CS.steeringAngleDeg) pid_log.steeringRateDeg = float(CS.steeringRateDeg) @@ -29,20 +25,24 @@ class LatControlPID(LatControl): pid_log.steeringAngleDesiredDeg = angle_steers_des pid_log.angleError = error if not active: - output_steer = 0.0 + output_torque = 0.0 pid_log.active = False - self.pid.reset() + else: # offset does not contribute to resistive torque - steer_feedforward = self.get_steer_feedforward(angle_steers_des_no_offset, CS.vEgo) + ff = self.get_steer_feedforward(angle_steers_des_no_offset, CS.vEgo) + freeze_integrator = steer_limited_by_safety or CS.steeringPressed or CS.vEgo < 5 + + output_torque = self.pid.update(error, + feedforward=ff, + speed=CS.vEgo, + freeze_integrator=freeze_integrator) - output_steer = self.pid.update(error, override=CS.steeringPressed, - feedforward=steer_feedforward, speed=CS.vEgo) pid_log.active = True - pid_log.p = self.pid.p - pid_log.i = self.pid.i - pid_log.f = self.pid.f - pid_log.output = output_steer - pid_log.saturated = self._check_saturation(self.steer_max - abs(output_steer) < 1e-3, CS, steer_limited) + pid_log.p = float(self.pid.p) + pid_log.i = float(self.pid.i) + pid_log.f = float(self.pid.f) + pid_log.output = float(output_torque) + pid_log.saturated = bool(self._check_saturation(self.steer_max - abs(output_torque) < 1e-3, CS, steer_limited_by_safety, curvature_limited)) - return output_steer, angle_steers_des, pid_log + return output_torque, angle_steers_des, pid_log diff --git a/selfdrive/controls/lib/latcontrol_torque.py b/selfdrive/controls/lib/latcontrol_torque.py index c884da25d..dbc8d638f 100644 --- a/selfdrive/controls/lib/latcontrol_torque.py +++ b/selfdrive/controls/lib/latcontrol_torque.py @@ -1,8 +1,9 @@ import math +import numpy as np from cereal import log -from openpilot.common.numpy_fast import interp -from openpilot.selfdrive.car.interfaces import LatControlInputs +from openpilot.selfdrive.controls.lib.drive_helpers import get_friction +from openpilot.selfdrive.car.interfaces import FRICTION_THRESHOLD from openpilot.selfdrive.controls.lib.latcontrol import LatControl from openpilot.selfdrive.controls.lib.pid import PIDController from openpilot.selfdrive.controls.lib.vehicle_model import ACCELERATION_DUE_TO_GRAVITY @@ -25,17 +26,18 @@ LOW_SPEED_Y = [15, 13, 10, 5] class LatControlTorque(LatControl): - def __init__(self, CP, CI): + def __init__(self, CP, FPCP, CI): super().__init__(CP, CI) - self.torque_params = CP.lateralTuning.torque - self.pid = PIDController(self.torque_params.kp, self.torque_params.ki, - k_f=self.torque_params.kf, pos_limit=self.steer_max, neg_limit=-self.steer_max) + self.torque_params = FPCP.lateralTuning.torque self.torque_from_lateral_accel = CI.torque_from_lateral_accel() - self.use_steering_angle = self.torque_params.useSteeringAngle + self.lateral_accel_from_torque = CI.lateral_accel_from_torque() + self.pid = PIDController(self.torque_params.kp, self.torque_params.ki, + k_f=self.torque_params.kf) + self.update_limits() self.steering_angle_deadzone_deg = self.torque_params.steeringAngleDeadzoneDeg # FrogPilot variables - self.nnff = NeuralNetworkFeedforward(CP, CI, self) + self.nnff = NeuralNetworkFeedforward(CP, self) self.nnff_loaded = self.nnff.lat_torque_nn_model != None @@ -43,64 +45,66 @@ class LatControlTorque(LatControl): self.torque_params.latAccelFactor = latAccelFactor self.torque_params.latAccelOffset = latAccelOffset self.torque_params.friction = friction + self.update_limits() - def update(self, active, CS, VM, params, steer_limited, desired_curvature, llk, model_data=None, frogpilot_toggles=None): + def update_limits(self): + self.pid.set_limits(self.lateral_accel_from_torque(self.steer_max, self.torque_params), + self.lateral_accel_from_torque(-self.steer_max, self.torque_params)) + + def update(self, active, CS, VM, params, steer_limited_by_safety, desired_curvature, curvature_limited, llk, model_data, frogpilot_toggles): pid_log = log.ControlsState.LateralTorqueState.new_message() if not active: output_torque = 0.0 pid_log.active = False else: - actual_curvature_vm = -VM.calc_curvature(math.radians(CS.steeringAngleDeg - params.angleOffsetDeg), CS.vEgo, params.roll) + actual_curvature = -VM.calc_curvature(math.radians(CS.steeringAngleDeg - params.angleOffsetDeg), CS.vEgo, params.roll) roll_compensation = params.roll * ACCELERATION_DUE_TO_GRAVITY - if self.use_steering_angle: - actual_curvature = actual_curvature_vm - curvature_deadzone = abs(VM.calc_curvature(math.radians(self.steering_angle_deadzone_deg), CS.vEgo, 0.0)) - else: - actual_curvature_llk = llk.angularVelocityCalibrated.value[2] / CS.vEgo - actual_curvature = interp(CS.vEgo, [2.0, 5.0], [actual_curvature_vm, actual_curvature_llk]) - curvature_deadzone = 0.0 - desired_lateral_accel = desired_curvature * CS.vEgo ** 2 + curvature_deadzone = abs(VM.calc_curvature(math.radians(self.steering_angle_deadzone_deg), CS.vEgo, 0.0)) - # desired rate is the desired rate of change in the setpoint, not the absolute desired curvature - # desired_lateral_jerk = desired_curvature_rate * CS.vEgo ** 2 + desired_lateral_accel = desired_curvature * CS.vEgo ** 2 actual_lateral_accel = actual_curvature * CS.vEgo ** 2 lateral_accel_deadzone = curvature_deadzone * CS.vEgo ** 2 - low_speed_factor = interp(CS.vEgo, LOW_SPEED_X, LOW_SPEED_Y_NN if frogpilot_toggles.nnff else LOW_SPEED_Y)**2 + low_speed_factor = np.interp(CS.vEgo, LOW_SPEED_X, LOW_SPEED_Y_NN if frogpilot_toggles.nnff else LOW_SPEED_Y)**2 setpoint = desired_lateral_accel + low_speed_factor * desired_curvature measurement = actual_lateral_accel + low_speed_factor * actual_curvature gravity_adjusted_lateral_accel = desired_lateral_accel - roll_compensation + if self.nnff_loaded and frogpilot_toggles.nnff or frogpilot_toggles.nnff_lite: - torque_from_setpoint, torque_from_measurement, pid_log, ff = self.nnff.compute_nnff( + pid_log, ff = self.nnff.compute_nnff( CS, VM, actual_lateral_accel, desired_lateral_accel, gravity_adjusted_lateral_accel, lateral_accel_deadzone, llk, measurement, model_data, params, pid_log, roll_compensation, setpoint, frogpilot_toggles ) - else: - torque_from_setpoint = self.torque_from_lateral_accel(LatControlInputs(setpoint, roll_compensation, CS.vEgo, CS.aEgo), self.torque_params, - setpoint, lateral_accel_deadzone, friction_compensation=False, gravity_adjusted=False) - torque_from_measurement = self.torque_from_lateral_accel(LatControlInputs(measurement, roll_compensation, CS.vEgo, CS.aEgo), self.torque_params, - measurement, lateral_accel_deadzone, friction_compensation=False, gravity_adjusted=False) - pid_log.error = torque_from_setpoint - torque_from_measurement - ff = self.torque_from_lateral_accel(LatControlInputs(gravity_adjusted_lateral_accel, roll_compensation, CS.vEgo, CS.aEgo), self.torque_params, - desired_lateral_accel - actual_lateral_accel, lateral_accel_deadzone, friction_compensation=True, - gravity_adjusted=True) - freeze_integrator = steer_limited or CS.steeringPressed or CS.vEgo < 5 - self.pid._k_p = frogpilot_toggles.steerKp - output_torque = self.pid.update(pid_log.error, - feedforward=ff, - speed=CS.vEgo, - freeze_integrator=freeze_integrator) + freeze_integrator = steer_limited_by_safety or CS.steeringPressed or CS.vEgo < 5 + output_torque = self.pid.update(pid_log.error, + feedforward=ff, + speed=CS.vEgo, + freeze_integrator=freeze_integrator) + else: + # do error correction in lateral acceleration space, convert at end to handle non-linear torque responses correctly + pid_log.error = float(setpoint - measurement) + ff = gravity_adjusted_lateral_accel + # latAccelOffset corrects roll compensation bias from device roll misalignment relative to car roll + ff -= self.torque_params.latAccelOffset + ff += get_friction(desired_lateral_accel - actual_lateral_accel, lateral_accel_deadzone, FRICTION_THRESHOLD, self.torque_params) + + freeze_integrator = steer_limited_by_safety or CS.steeringPressed or CS.vEgo < 5 + output_lataccel = self.pid.update(pid_log.error, + feedforward=ff, + speed=CS.vEgo, + freeze_integrator=freeze_integrator) + output_torque = self.torque_from_lateral_accel(output_lataccel, self.torque_params) pid_log.active = True - pid_log.p = self.pid.p - pid_log.i = self.pid.i - pid_log.d = self.pid.d - pid_log.f = self.pid.f - pid_log.output = -output_torque - pid_log.actualLateralAccel = actual_lateral_accel - pid_log.desiredLateralAccel = desired_lateral_accel - pid_log.saturated = self._check_saturation(self.steer_max - abs(output_torque) < 1e-3, CS, steer_limited) + pid_log.p = float(self.pid.p) + pid_log.i = float(self.pid.i) + pid_log.d = float(self.pid.d) + pid_log.f = float(self.pid.f) + pid_log.output = float(-output_torque) # TODO: log lat accel? + pid_log.actualLateralAccel = float(actual_lateral_accel) + pid_log.desiredLateralAccel = float(desired_lateral_accel) + pid_log.saturated = bool(self._check_saturation(self.steer_max - abs(output_torque) < 1e-3, CS, steer_limited_by_safety, curvature_limited)) # TODO left is positive in this convention return -output_torque, 0.0, pid_log diff --git a/selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py b/selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py index 4c90b8013..accb441e5 100644 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py +++ b/selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py @@ -3,12 +3,11 @@ import os import time import numpy as np from cereal import log -from openpilot.common.numpy_fast import clip +from openpilot.selfdrive.car.interfaces import ACCEL_MIN, ACCEL_MAX from openpilot.common.realtime import DT_MDL from openpilot.common.swaglog import cloudlog # WARNING: imports outside of constants will not trigger a rebuild from openpilot.selfdrive.modeld.constants import index_function -from openpilot.selfdrive.car.interfaces import ACCEL_MIN if __name__ == '__main__': # generating code from openpilot.third_party.acados.acados_template import AcadosModel, AcadosOcp, AcadosOcpSolver @@ -57,6 +56,8 @@ FCW_IDXS = T_IDXS < 5.0 T_DIFFS = np.diff(T_IDXS, prepend=[0.]) COMFORT_BRAKE = 2.5 STOP_DISTANCE = 6.0 +CRUISE_MIN_ACCEL = -1.2 +CRUISE_MAX_ACCEL = 1.6 def get_jerk_factor(aggressive_jerk_acceleration=0.5, aggressive_jerk_danger=0.5, aggressive_jerk_speed=0.5, standard_jerk_acceleration=1.0, standard_jerk_danger=1.0, standard_jerk_speed=1.0, @@ -326,9 +327,9 @@ class LongitudinalMpc: lead_xv = np.column_stack((x_lead_traj, v_lead_traj)) return lead_xv - def process_lead(self, lead, tracking_lead=True): + def process_lead(self, lead): v_ego = self.x0[1] - if lead is not None and lead.status and tracking_lead: + if lead is not None and lead.status: x_lead = lead.dRel v_lead = lead.vLead a_lead = lead.aLeadK @@ -343,24 +344,18 @@ class LongitudinalMpc: # MPC will not converge if immediate crash is expected # Clip lead distance to what is still possible to brake for min_x_lead = ((v_ego + v_lead)/2) * (v_ego - v_lead) / (-ACCEL_MIN * 2) - x_lead = clip(x_lead, min_x_lead, 1e8) - v_lead = clip(v_lead, 0.0, 1e8) - a_lead = clip(a_lead, -10., 5.) + x_lead = np.clip(x_lead, min_x_lead, 1e8) + v_lead = np.clip(v_lead, 0.0, 1e8) + a_lead = np.clip(a_lead, -10., 5.) lead_xv = self.extrapolate_lead(x_lead, v_lead, a_lead, a_lead_tau) return lead_xv - def set_accel_limits(self, min_a, max_a): - # TODO this sets a max accel limit, but the minimum limit is only for cruise decel - # needs refactor - self.cruise_min_a = min_a - self.max_a = max_a - - def update(self, lead_one, lead_two, v_cruise, x, v, a, j, t_follow, tracking_lead, personality=log.LongitudinalPersonality.standard): + def update(self, radarstate, v_cruise, x, v, a, j, t_follow, frogpilot_toggles, personality=log.LongitudinalPersonality.standard): v_ego = self.x0[1] - self.status = lead_one.status and tracking_lead or lead_two.status + self.status = radarstate.leadOne.status or radarstate.leadTwo.status - lead_xv_0 = self.process_lead(lead_one, tracking_lead) - lead_xv_1 = self.process_lead(lead_two) + lead_xv_0 = self.process_lead(radarstate.leadOne) + lead_xv_1 = self.process_lead(radarstate.leadTwo) # To estimate a safe distance from a moving lead, we calculate how much stopping # distance that lead needs as a minimum. We can add that to the current distance @@ -369,8 +364,7 @@ class LongitudinalMpc: lead_1_obstacle = lead_xv_1[:,0] + get_stopped_equivalence_factor(lead_xv_1[:,1]) self.params[:,0] = ACCEL_MIN - # negative accel constraint causes problems because negative speed is not allowed - self.params[:,1] = max(0.0, self.max_a) + self.params[:,1] = ACCEL_MAX # Update in ACC mode or ACC/e2e blend if self.mode == 'acc': @@ -378,9 +372,9 @@ class LongitudinalMpc: # Fake an obstacle for cruise, this ensures smooth acceleration to set speed # when the leads are no factor. - v_lower = v_ego + (T_IDXS * self.cruise_min_a * 1.05) + v_lower = v_ego + (T_IDXS * CRUISE_MIN_ACCEL * 1.05) # TODO does this make sense when max_a is negative? - v_upper = v_ego + (T_IDXS * self.max_a * 1.05) + v_upper = v_ego + (T_IDXS * CRUISE_MAX_ACCEL * 1.05) v_cruise_clipped = np.clip(v_cruise * np.ones(N+1), v_lower, v_upper) @@ -421,8 +415,8 @@ class LongitudinalMpc: self.params[:,4] = t_follow self.run() - lead_probability = lead_one.modelProb - if (np.any(lead_xv_0[FCW_IDXS,0] - self.x_sol[FCW_IDXS,0] < CRASH_DISTANCE) and lead_probability > 0.9): + if (np.any(lead_xv_0[FCW_IDXS,0] - self.x_sol[FCW_IDXS,0] < CRASH_DISTANCE) and + radarstate.leadOne.modelProb > 0.9): self.crash_cnt += 1 else: self.crash_cnt = 0 diff --git a/selfdrive/controls/lib/longitudinal_planner.py b/selfdrive/controls/lib/longitudinal_planner.py index 4fb35ff95..ee61161f2 100644 --- a/selfdrive/controls/lib/longitudinal_planner.py +++ b/selfdrive/controls/lib/longitudinal_planner.py @@ -1,7 +1,6 @@ #!/usr/bin/env python3 import math import numpy as np -from openpilot.common.numpy_fast import clip, interp import cereal.messaging as messaging from openpilot.common.conversions import Conversions as CV @@ -12,15 +11,16 @@ from openpilot.selfdrive.car.interfaces import ACCEL_MIN, ACCEL_MAX from openpilot.selfdrive.controls.lib.longcontrol import LongCtrlState from openpilot.selfdrive.controls.lib.longitudinal_mpc_lib.long_mpc import LongitudinalMpc from openpilot.selfdrive.controls.lib.longitudinal_mpc_lib.long_mpc import T_IDXS as T_IDXS_MPC -from openpilot.selfdrive.controls.lib.drive_helpers import V_CRUISE_MAX, V_CRUISE_UNSET, CONTROL_N, get_speed_error +from openpilot.selfdrive.controls.lib.drive_helpers import V_CRUISE_MAX, V_CRUISE_UNSET, CONTROL_N, get_accel_from_plan from openpilot.common.swaglog import cloudlog +from openpilot.frogpilot.common.frogpilot_variables import MINIMUM_LATERAL_ACCELERATION + LON_MPC_STEP = 0.2 # first step is 0.2s -A_CRUISE_MIN = -1.2 A_CRUISE_MAX_VALS = [1.6, 1.2, 0.8, 0.6] A_CRUISE_MAX_BP = [0., 10.0, 25., 40.] CONTROL_N_T_IDX = ModelConstants.T_IDXS[:CONTROL_N] -ALLOW_THROTTLE_THRESHOLD = 0.5 +ALLOW_THROTTLE_THRESHOLD = 0.4 MIN_ALLOW_THROTTLE_SPEED = 2.5 # Lookup table for turns @@ -29,7 +29,7 @@ _A_TOTAL_MAX_BP = [20., 40.] def get_max_accel(v_ego): - return interp(v_ego, A_CRUISE_MAX_BP, A_CRUISE_MAX_VALS) + return float(np.interp(v_ego, A_CRUISE_MAX_BP, A_CRUISE_MAX_VALS)) def get_coast_accel(pitch): return np.sin(pitch) * -5.65 - 0.3 # fitted from data using xx/projects/allow_throttle/compute_coast_accel.py @@ -42,67 +42,17 @@ def limit_accel_in_turns(v_ego, angle_steers, a_target, CP): """ # FIXME: This function to calculate lateral accel is incorrect and should use the VehicleModel # The lookup table for turns should also be updated if we do this - a_total_max = interp(v_ego, _A_TOTAL_MAX_BP, _A_TOTAL_MAX_V) + a_total_max = np.interp(v_ego, _A_TOTAL_MAX_BP, _A_TOTAL_MAX_V) a_y = v_ego ** 2 * angle_steers * CV.DEG_TO_RAD / (CP.steerRatio * CP.wheelbase) - a_x_allowed = math.sqrt(max(a_total_max ** 2 - a_y ** 2, 0.)) + + if abs(a_y) > MINIMUM_LATERAL_ACCELERATION: + a_x_allowed = math.sqrt(max(a_total_max ** 2 - a_y ** 2, 0.)) + else: + a_x_allowed = a_target[1] return [a_target[0], min(a_target[1], a_x_allowed)] -def get_accel_from_plan(speeds, accels, action_t=DT_MDL, vEgoStopping=0.05): - if len(speeds) == CONTROL_N: - v_now = speeds[0] - a_now = accels[0] - - v_target = interp(action_t, CONTROL_N_T_IDX, speeds) - a_target = 2 * (v_target - v_now) / (action_t) - a_now - v_target_1sec = interp(action_t + 1.0, CONTROL_N_T_IDX, speeds) - else: - v_target = 0.0 - v_target_1sec = 0.0 - a_target = 0.0 - should_stop = (v_target < vEgoStopping and - v_target_1sec < vEgoStopping) - return a_target, should_stop - - -def get_accel_from_plan_classic(CP, speeds, accels, longitudinalActuatorDelay, vEgoStopping): - if len(speeds) == CONTROL_N: - v_target_now = interp(DT_MDL, CONTROL_N_T_IDX, speeds) - a_target_now = interp(DT_MDL, CONTROL_N_T_IDX, accels) - - v_target = interp(longitudinalActuatorDelay + DT_MDL, CONTROL_N_T_IDX, speeds) - if v_target != v_target_now: - a_target = 2 * (v_target - v_target_now) / longitudinalActuatorDelay - a_target_now - else: - a_target = a_target_now - - v_target_1sec = interp(longitudinalActuatorDelay + DT_MDL + 1.0, CONTROL_N_T_IDX, speeds) - else: - v_target = 0.0 - v_target_1sec = 0.0 - a_target = 0.0 - should_stop = (v_target < vEgoStopping and - v_target_1sec < vEgoStopping) - return a_target, should_stop - - -def get_accel_from_plan_tomb_raider(speeds, accels, t_idxs, action_t=DT_MDL, vEgoStopping=0.05): - if len(speeds) == len(t_idxs): - v_now = speeds[0] - a_now = accels[0] - v_target = np.interp(action_t, t_idxs, speeds) - a_target = 2 * (v_target - v_now) / (action_t) - a_now - v_target_1sec = np.interp(action_t + 1.0, t_idxs, speeds) - else: - v_target = 0.0 - v_target_1sec = 0.0 - a_target = 0.0 - should_stop = (v_target < vEgoStopping and - v_target_1sec < vEgoStopping) - return a_target, should_stop - - class LongitudinalPlanner: def __init__(self, CP, init_v=0.0, init_a=0.0, dt=DT_MDL): self.CP = CP @@ -115,7 +65,9 @@ class LongitudinalPlanner: self.a_desired = init_a self.v_desired_filter = FirstOrderFilter(init_v, 2.0, self.dt) - self.v_model_error = 0.0 + self.prev_accel_clip = [ACCEL_MIN, ACCEL_MAX] + self.output_a_target = 0.0 + self.output_should_stop = False self.v_desired_trajectory = np.zeros(CONTROL_N) self.a_desired_trajectory = np.zeros(CONTROL_N) @@ -123,12 +75,12 @@ class LongitudinalPlanner: self.solverExecutionTime = 0.0 @staticmethod - def parse_model(model_msg, model_error, v_ego, taco_tune): + def parse_model(model_msg, v_ego, taco_tune): if (len(model_msg.position.x) == ModelConstants.IDX_N and len(model_msg.velocity.x) == ModelConstants.IDX_N and len(model_msg.acceleration.x) == ModelConstants.IDX_N): - x = np.interp(T_IDXS_MPC, ModelConstants.T_IDXS, model_msg.position.x) - model_error * T_IDXS_MPC - v = np.interp(T_IDXS_MPC, ModelConstants.T_IDXS, model_msg.velocity.x) - model_error + x = np.interp(T_IDXS_MPC, ModelConstants.T_IDXS, model_msg.position.x) + v = np.interp(T_IDXS_MPC, ModelConstants.T_IDXS, model_msg.velocity.x) a = np.interp(T_IDXS_MPC, ModelConstants.T_IDXS, model_msg.acceleration.x) j = np.zeros(len(T_IDXS_MPC)) else: @@ -138,7 +90,7 @@ class LongitudinalPlanner: j = np.zeros(len(T_IDXS_MPC)) if taco_tune: - max_lat_accel = interp(v_ego, [5, 10, 20], [1.5, 2.0, 3.0]) + max_lat_accel = np.interp(v_ego, [5, 10, 20], [1.5, 2.0, 3.0]) curvatures = np.interp(T_IDXS_MPC, ModelConstants.T_IDXS, model_msg.orientationRate.z) / np.clip(v, 0.3, 100.0) max_v = np.sqrt(max_lat_accel / (np.abs(curvatures) + 1e-3)) - 2.0 v = np.minimum(max_v, v) @@ -149,11 +101,10 @@ class LongitudinalPlanner: throttle_prob = 1.0 return x, v, a, j, throttle_prob - def update(self, tomb_raider, sm, frogpilot_toggles): - if tomb_raider: - self.mode = 'blended' if sm['controlsState'].experimentalMode else 'acc' - else: - self.mpc.mode = 'blended' if sm['controlsState'].experimentalMode else 'acc' + def update(self, sm, classic_longitudinal, frogpilot_toggles): + mode = 'blended' if sm['controlsState'].experimentalMode else 'acc' + if classic_longitudinal: + self.mpc.mode = mode if len(sm['carControl'].orientationNED) == 3: accel_coast = get_coast_accel(sm['carControl'].orientationNED[1]) @@ -175,55 +126,36 @@ class LongitudinalPlanner: # No change cost when user is controlling the speed, or when standstill prev_accel_constraint = not (reset_state or sm['carState'].standstill) - if tomb_raider: - if self.mode == 'acc': - accel_limits = [sm['frogpilotPlan'].minAcceleration, sm['frogpilotPlan'].maxAcceleration] - steer_angle_without_offset = sm['carState'].steeringAngleDeg - sm['liveParameters'].angleOffsetDeg - accel_limits_turns = limit_accel_in_turns(v_ego, steer_angle_without_offset, accel_limits, self.CP) - else: - accel_limits = [ACCEL_MIN, ACCEL_MAX] - accel_limits_turns = [ACCEL_MIN, ACCEL_MAX] + if mode == 'acc': + accel_clip = [sm['frogpilotPlan'].minAcceleration, sm['frogpilotPlan'].maxAcceleration] + steer_angle_without_offset = sm['carState'].steeringAngleDeg - sm['liveParameters'].angleOffsetDeg + if not sm['frogpilotPlan'].cscControllingSpeed: + accel_clip = limit_accel_in_turns(v_ego, steer_angle_without_offset, accel_clip, self.CP) else: - if self.mpc.mode == 'acc': - accel_limits = [sm['frogpilotPlan'].minAcceleration, sm['frogpilotPlan'].maxAcceleration] - steer_angle_without_offset = sm['carState'].steeringAngleDeg - sm['liveParameters'].angleOffsetDeg - accel_limits_turns = limit_accel_in_turns(v_ego, steer_angle_without_offset, accel_limits, self.CP) - else: - accel_limits = [ACCEL_MIN, ACCEL_MAX] - accel_limits_turns = [ACCEL_MIN, ACCEL_MAX] + accel_clip = [ACCEL_MIN, ACCEL_MAX] if reset_state: self.v_desired_filter.x = v_ego # Clip aEgo to cruise limits to prevent large accelerations when becoming active - self.a_desired = clip(sm['carState'].aEgo, accel_limits[0], accel_limits[1]) + self.a_desired = np.clip(sm['carState'].aEgo, accel_clip[0], accel_clip[1]) # Prevent divergence, smooth in current v_ego self.v_desired_filter.x = max(0.0, self.v_desired_filter.update(v_ego)) - # Compute model v_ego error - self.v_model_error = 0.0 if tomb_raider else get_speed_error(sm['modelV2'], v_ego) - x, v, a, j, throttle_prob = self.parse_model(sm['modelV2'], self.v_model_error, v_ego, frogpilot_toggles.taco_tune) + x, v, a, j, throttle_prob = self.parse_model(sm['modelV2'], v_ego, frogpilot_toggles.taco_tune) # Don't clip at low speeds since throttle_prob doesn't account for creep self.allow_throttle = throttle_prob > ALLOW_THROTTLE_THRESHOLD or v_ego <= MIN_ALLOW_THROTTLE_SPEED if not self.allow_throttle: - clipped_accel_coast = max(accel_coast, accel_limits_turns[0]) - clipped_accel_coast_interp = interp(v_ego, [MIN_ALLOW_THROTTLE_SPEED, MIN_ALLOW_THROTTLE_SPEED*2], [accel_limits_turns[1], clipped_accel_coast]) - accel_limits_turns[1] = min(accel_limits_turns[1], clipped_accel_coast_interp) + clipped_accel_coast = max(accel_coast, accel_clip[0]) + clipped_accel_coast_interp = np.interp(v_ego, [MIN_ALLOW_THROTTLE_SPEED, MIN_ALLOW_THROTTLE_SPEED*2], [accel_clip[1], clipped_accel_coast]) + accel_clip[1] = min(accel_clip[1], clipped_accel_coast_interp) if force_slow_decel: v_cruise = 0.0 - # clip limits, cannot init MPC outside of bounds - accel_limits_turns[0] = min(accel_limits_turns[0], self.a_desired + 0.05) - accel_limits_turns[1] = max(accel_limits_turns[1], self.a_desired - 0.05) - - self.lead_one = sm['radarState'].leadOne - self.lead_two = sm['radarState'].leadTwo self.mpc.set_weights(sm['frogpilotPlan'].accelerationJerk, sm['frogpilotPlan'].dangerJerk, sm['frogpilotPlan'].speedJerk, prev_accel_constraint, personality=sm['controlsState'].personality) - self.mpc.set_accel_limits(accel_limits_turns[0], accel_limits_turns[1]) self.mpc.set_cur_state(self.v_desired_filter.x, self.a_desired) - self.mpc.update(self.lead_one, self.lead_two, v_cruise, x, v, a, j, sm['frogpilotPlan'].tFollow, - sm['frogpilotPlan'].trackingLead, personality=sm['controlsState'].personality) + self.mpc.update(sm['radarState'], v_cruise, x, v, a, j, sm['frogpilotPlan'].tFollow, frogpilot_toggles, personality=sm['controlsState'].personality) self.a_desired_trajectory_full = np.interp(CONTROL_N_T_IDX, T_IDXS_MPC, self.mpc.a_solution) self.v_desired_trajectory = np.interp(CONTROL_N_T_IDX, T_IDXS_MPC, self.mpc.v_solution) @@ -237,10 +169,28 @@ class LongitudinalPlanner: # Interpolate 0.05 seconds and save as starting point for next iteration a_prev = self.a_desired - self.a_desired = float(interp(self.dt, CONTROL_N_T_IDX, self.a_desired_trajectory)) + self.a_desired = float(np.interp(self.dt, CONTROL_N_T_IDX, self.a_desired_trajectory)) self.v_desired_filter.x = self.v_desired_filter.x + self.dt * (self.a_desired + a_prev) / 2.0 - def publish(self, classic_model, tomb_raider, sm, pm, frogpilot_toggles): + action_t = frogpilot_toggles.longitudinalActuatorDelay + DT_MDL + output_a_target_mpc, output_should_stop_mpc = get_accel_from_plan(self.v_desired_trajectory, self.a_desired_trajectory, CONTROL_N_T_IDX, + action_t=action_t, vEgoStopping=frogpilot_toggles.vEgoStopping) + output_a_target_e2e = sm['modelV2'].action.desiredAcceleration + output_should_stop_e2e = sm['modelV2'].action.shouldStop + + if mode == 'acc': + output_a_target = output_a_target_mpc + self.output_should_stop = output_should_stop_mpc + else: + output_a_target = min(output_a_target_mpc, output_a_target_e2e) + self.output_should_stop = output_should_stop_e2e or output_should_stop_mpc + + for idx in range(2): + accel_clip[idx] = np.clip(accel_clip[idx], self.prev_accel_clip[idx] - 0.05, self.prev_accel_clip[idx] + 0.05) + self.output_a_target = np.clip(output_a_target, accel_clip[0], accel_clip[1]) + self.prev_accel_clip = accel_clip + + def publish(self, sm, pm): plan_send = messaging.new_message('longitudinalPlan') plan_send.valid = sm.all_checks(service_list=['carState', 'controlsState']) @@ -254,31 +204,13 @@ class LongitudinalPlanner: longitudinalPlan.accels = self.a_desired_trajectory.tolist() longitudinalPlan.jerks = self.j_desired_trajectory.tolist() - longitudinalPlan.hasLead = self.lead_one.status + longitudinalPlan.hasLead = sm['radarState'].leadOne.status longitudinalPlan.longitudinalPlanSource = self.mpc.source longitudinalPlan.fcw = self.fcw - action_t = frogpilot_toggles.longitudinalActuatorDelay + DT_MDL - if tomb_raider: - output_a_target_mpc, output_should_stop_mpc = get_accel_from_plan_tomb_raider(self.v_desired_trajectory, self.a_desired_trajectory, CONTROL_N_T_IDX, - action_t=action_t, vEgoStopping=self.CP.vEgoStopping) - output_a_target_e2e = sm['modelV2'].action.desiredAcceleration - output_should_stop_e2e = sm['modelV2'].action.shouldStop - - if self.mode == 'acc': - a_target = output_a_target_mpc - should_stop = output_should_stop_mpc - else: - a_target = min(output_a_target_mpc, output_a_target_e2e) - should_stop = output_should_stop_e2e or output_should_stop_mpc - elif classic_model: - a_target, should_stop = get_accel_from_plan_classic(self.CP, longitudinalPlan.speeds, longitudinalPlan.accels, frogpilot_toggles.longitudinalActuatorDelay, frogpilot_toggles.vEgoStopping) - else: - a_target, should_stop = get_accel_from_plan(longitudinalPlan.speeds, longitudinalPlan.accels, - action_t=action_t, vEgoStopping=frogpilot_toggles.vEgoStopping) - longitudinalPlan.aTarget = float(a_target) - longitudinalPlan.shouldStop = bool(should_stop) or sm['frogpilotPlan'].forcingStopLength < 1 + longitudinalPlan.aTarget = float(self.output_a_target) + longitudinalPlan.shouldStop = bool(self.output_should_stop) longitudinalPlan.allowBrake = True - longitudinalPlan.allowThrottle = self.allow_throttle + longitudinalPlan.allowThrottle = bool(self.allow_throttle) pm.send('longitudinalPlan', plan_send) diff --git a/selfdrive/controls/lib/pid.py b/selfdrive/controls/lib/pid.py index 36cbf9c4e..99142280c 100644 --- a/selfdrive/controls/lib/pid.py +++ b/selfdrive/controls/lib/pid.py @@ -1,9 +1,6 @@ import numpy as np from numbers import Number -from openpilot.common.numpy_fast import clip, interp - - class PIDController: def __init__(self, k_p, k_i, k_f=0., k_d=0., pos_limit=1e308, neg_limit=-1e308, rate=100): self._k_p = k_p @@ -17,10 +14,8 @@ class PIDController: if isinstance(self._k_d, Number): self._k_d = [[0], [self._k_d]] - self.pos_limit = pos_limit - self.neg_limit = neg_limit + self.set_limits(pos_limit, neg_limit) - self.i_unwind_rate = 0.3 / rate self.i_rate = 1.0 / rate self.speed = 0.0 @@ -28,19 +23,15 @@ class PIDController: @property def k_p(self): - return interp(self.speed, self._k_p[0], self._k_p[1]) + return np.interp(self.speed, self._k_p[0], self._k_p[1]) @property def k_i(self): - return interp(self.speed, self._k_i[0], self._k_i[1]) + return np.interp(self.speed, self._k_i[0], self._k_i[1]) @property def k_d(self): - return interp(self.speed, self._k_d[0], self._k_d[1]) - - @property - def error_integral(self): - return self.i/self.k_i + return np.interp(self.speed, self._k_d[0], self._k_d[1]) def reset(self): self.p = 0.0 @@ -49,25 +40,25 @@ class PIDController: self.f = 0.0 self.control = 0 - def update(self, error, error_rate=0.0, speed=0.0, override=False, feedforward=0., freeze_integrator=False): - self.speed = speed + def set_limits(self, pos_limit, neg_limit): + self.pos_limit = pos_limit + self.neg_limit = neg_limit + def update(self, error, error_rate=0.0, speed=0.0, feedforward=0., freeze_integrator=False): + self.speed = speed self.p = float(error) * self.k_p self.f = feedforward * self.k_f self.d = error_rate * self.k_d - if override: - self.i -= self.i_unwind_rate * float(np.sign(self.i)) - else: - if not freeze_integrator: - self.i = self.i + error * self.k_i * self.i_rate + if not freeze_integrator: + i = self.i + error * self.k_i * self.i_rate - # Clip i to prevent exceeding control limits - control_no_i = self.p + self.d + self.f - control_no_i = clip(control_no_i, self.neg_limit, self.pos_limit) - self.i = clip(self.i, self.neg_limit - control_no_i, self.pos_limit - control_no_i) + # Don't allow windup if already clipping + test_control = self.p + i + self.d + self.f + i_upperbound = self.i if test_control > self.pos_limit else self.pos_limit + i_lowerbound = self.i if test_control < self.neg_limit else self.neg_limit + self.i = np.clip(i, i_lowerbound, i_upperbound) control = self.p + self.i + self.d + self.f - - self.control = clip(control, self.neg_limit, self.pos_limit) + self.control = np.clip(control, self.neg_limit, self.pos_limit) return self.control diff --git a/selfdrive/controls/plannerd.py b/selfdrive/controls/plannerd.py index eefcc21d4..6d526976c 100644 --- a/selfdrive/controls/plannerd.py +++ b/selfdrive/controls/plannerd.py @@ -37,14 +37,13 @@ def plannerd_thread(): # FrogPilot variables frogpilot_toggles = get_frogpilot_toggles() - classic_model = frogpilot_toggles.classic_model - tomb_raider = frogpilot_toggles.tomb_raider + classic_longitudinal = frogpilot_toggles.classic_longitudinal while True: sm.update() if sm.updated['modelV2']: - longitudinal_planner.update(tomb_raider, sm, frogpilot_toggles) - longitudinal_planner.publish(classic_model, tomb_raider, sm, pm, frogpilot_toggles) + longitudinal_planner.update(sm, classic_longitudinal, frogpilot_toggles) + longitudinal_planner.publish(sm, pm) publish_ui_plan(sm, pm, longitudinal_planner) # Update FrogPilot variables diff --git a/selfdrive/controls/radard.py b/selfdrive/controls/radard.py index 98f8174dc..8d4d6d098 100644 --- a/selfdrive/controls/radard.py +++ b/selfdrive/controls/radard.py @@ -6,7 +6,7 @@ from types import SimpleNamespace from typing import Any import capnp -from cereal import messaging, log, car +from cereal import messaging, log, car, custom from openpilot.common.filter_simple import FirstOrderFilter from openpilot.common.numpy_fast import interp from openpilot.common.params import Params @@ -15,7 +15,7 @@ from openpilot.common.swaglog import cloudlog from openpilot.common.simple_kalman import KF1D -from openpilot.frogpilot.common.frogpilot_variables import get_frogpilot_toggles +from openpilot.frogpilot.common.frogpilot_variables import THRESHOLD, get_frogpilot_toggles # Default lead acceleration decay set to 50% at 1s _LEAD_ACCEL_TAU = 1.5 @@ -63,7 +63,9 @@ class Track: self.kf = KF1D([[v_lead], [0.0]], self.K_A, self.K_C, self.K_K) # FrogPilot variables - self.lead_track_id = 0 + self.leadTrackID = 0 + + self.radarfulFilter = FirstOrderFilter(0, 0.5, self.K_A[0][1]) def update(self, d_rel: float, y_rel: float, v_rel: float, v_lead: float, measured: float): # relative values, copy @@ -102,11 +104,10 @@ class Track: "modelProb": model_prob, "radar": True, "radarTrackId": self.identifier, - "farLead": False, } def potential_adjacent_lead(self, left: bool, standstill: bool, model_data: capnp._DynamicStructReader): - if standstill or self.vLeadK < 1 or self.lead_track_id == self.identifier: + if standstill or self.vLead < 1 or self.leadTrackID == self.identifier: return False if left: @@ -117,13 +118,18 @@ class Track: return -self.yRel > right_lane def potential_far_lead(self, standstill: bool, model_data: capnp._DynamicStructReader): - if standstill or self.vLeadK < 1 or abs(self.yRel) > 1: + if standstill or self.vLead < 1 or abs(self.yRel) > 1: return False left_lane = interp(self.dRel, model_data.laneLines[1].x, model_data.laneLines[1].y) right_lane = interp(self.dRel, model_data.laneLines[2].x, model_data.laneLines[2].y) - return left_lane < -self.yRel < right_lane + if left_lane < -self.yRel < right_lane: + self.radarfulFilter.update(1) + return True + else: + self.radarfulFilter.update(0) + return False def potential_low_speed_lead(self, v_ego: float): # stop for stuff in front of you and low speed, even without model confirmation @@ -181,13 +187,12 @@ def get_RadarState_from_vision(lead_msg: capnp._DynamicStructReader, v_ego: floa "status": True, "radar": False, "radarTrackId": -1, - "farLead": False, } def get_lead(v_ego: float, ready: bool, tracks: dict[int, Track], lead_msg: capnp._DynamicStructReader, model_v_ego: float, model_data: capnp._DynamicStructReader, standstill: bool, - frogpilot_toggles: SimpleNamespace, frogpilotCarState: capnp._DynamicStructReader, + frogpilot_toggles: SimpleNamespace, frogpilotPlan: capnp._DynamicStructReader, low_speed_override: bool = True) -> dict[str, Any]: # Determine leads, this is where the essential logic happens if len(tracks) > 0 and ready and lead_msg.prob > frogpilot_toggles.lead_detection_probability: @@ -211,18 +216,16 @@ def get_lead(v_ego: float, ready: bool, tracks: dict[int, Track], lead_msg: capn lead_dict = closest_track.get_RadarState() if not lead_dict['status'] and len(tracks) > 0: - far_lead_tracks = [c for c in tracks.values() if c.potential_far_lead(standstill, model_data)] + far_lead_tracks = [c for c in tracks.values() if c.potential_far_lead(standstill, model_data) and c.radarfulFilter.x >= THRESHOLD] if len(far_lead_tracks) > 0: closest_track = min(far_lead_tracks, key=lambda c: c.dRel) lead_dict = closest_track.get_RadarState() - lead_dict['farLead'] = True - lead_dict['vLead'] = lead_dict['vLeadK'] for track in tracks.values(): - track.lead_track_id = lead_dict.get('radarTrackId', -1) + track.leadTrackID = lead_dict.get('radarTrackId', -1) if 'dRel' in lead_dict: - lead_dict['dRel'] -= frogpilot_toggles.increased_stopped_distance if not frogpilotCarState.trafficModeEnabled else 0 + lead_dict['dRel'] -= frogpilotPlan.increasedStoppedDistance return lead_dict @@ -255,9 +258,9 @@ class RadarD: self.ready = False # FrogPilot variables - self.frogpilot_toggles = get_frogpilot_toggles() + self.frogpilot_radar_state: capnp._DynamicStructBuilder | None = None - self.classic_model = self.frogpilot_toggles.classic_model + self.frogpilot_toggles = get_frogpilot_toggles() def update(self, sm: messaging.SubMaster, rr): self.ready = sm.seen['modelV2'] @@ -302,20 +305,20 @@ class RadarD: self.radar_state.radarErrors = list(radar_errors) self.radar_state.carStateMonoTime = sm.logMonoTime['carState'] - if self.classic_model and len(sm['modelV2'].temporalPose.trans): - model_v_ego = sm['modelV2'].temporalPose.trans[0] - elif len(sm['modelV2'].velocity.x): + self.frogpilot_radar_state = custom.FrogPilotRadarState.new_message() + + if len(sm['modelV2'].velocity.x): model_v_ego = sm['modelV2'].velocity.x[0] else: model_v_ego = self.v_ego leads_v3 = sm['modelV2'].leadsV3 if len(leads_v3) > 1: - self.radar_state.leadOne = get_lead(self.v_ego, self.ready, self.tracks, leads_v3[0], model_v_ego, sm['modelV2'], sm['carState'].standstill, self.frogpilot_toggles, sm['frogpilotCarState'], low_speed_override=True) - self.radar_state.leadTwo = get_lead(self.v_ego, self.ready, self.tracks, leads_v3[1], model_v_ego, sm['modelV2'], sm['carState'].standstill, self.frogpilot_toggles, sm['frogpilotCarState'], low_speed_override=False) + self.radar_state.leadOne = get_lead(self.v_ego, self.ready, self.tracks, leads_v3[0], model_v_ego, sm['modelV2'], sm['carState'].standstill, self.frogpilot_toggles, sm['frogpilotPlan'], low_speed_override=True) + self.radar_state.leadTwo = get_lead(self.v_ego, self.ready, self.tracks, leads_v3[1], model_v_ego, sm['modelV2'], sm['carState'].standstill, self.frogpilot_toggles, sm['frogpilotPlan'], low_speed_override=False) if self.frogpilot_toggles.adjacent_lead_tracking and self.ready: - self.radar_state.leadLeft = get_adjacent_lead(self.tracks, sm['carState'].standstill, sm['modelV2'], left=True) - self.radar_state.leadRight = get_adjacent_lead(self.tracks, sm['carState'].standstill, sm['modelV2'], left=False) + self.frogpilot_radar_state.leadLeft = get_adjacent_lead(self.tracks, sm['carState'].standstill, sm['modelV2'], left=True) + self.frogpilot_radar_state.leadRight = get_adjacent_lead(self.tracks, sm['carState'].standstill, sm['modelV2'], left=False) # Update FrogPilot variables if sm['frogpilotPlan'].togglesUpdated: @@ -330,6 +333,11 @@ class RadarD: radar_msg.radarState.cumLagMs = lag_ms pm.send("radarState", radar_msg) + frogpilot_radar_msg = messaging.new_message("frogpilotRadarState") + frogpilot_radar_msg.valid = self.radar_state_valid + frogpilot_radar_msg.frogpilotRadarState = self.frogpilot_radar_state + pm.send("frogpilotRadarState", frogpilot_radar_msg) + # publish tracks for UI debugging (keep last) tracks_msg = messaging.new_message('liveTracks', len(self.tracks)) tracks_msg.valid = self.radar_state_valid @@ -359,8 +367,8 @@ def main(): # *** setup messaging can_sock = messaging.sub_sock('can') - sm = messaging.SubMaster(['modelV2', 'carState', 'frogpilotCarState', 'frogpilotPlan'], frequency=int(1./DT_CTRL)) - pm = messaging.PubMaster(['radarState', 'liveTracks']) + sm = messaging.SubMaster(['modelV2', 'carState', 'frogpilotPlan'], frequency=int(1./DT_CTRL), ignore_alive=['frogpilotPlan'], ignore_valid=['frogpilotPlan']) + pm = messaging.PubMaster(['radarState', 'liveTracks', 'frogpilotRadarState']) RI = RadarInterface(CP) diff --git a/selfdrive/locationd/paramsd.py b/selfdrive/locationd/paramsd.py index 9c32375d4..5ef0ebcae 100755 --- a/selfdrive/locationd/paramsd.py +++ b/selfdrive/locationd/paramsd.py @@ -5,7 +5,7 @@ import json import numpy as np import cereal.messaging as messaging -from cereal import car +from cereal import car, custom from cereal import log from openpilot.common.params import Params from openpilot.common.realtime import config_realtime_process, DT_MDL @@ -187,6 +187,9 @@ def main(): # FrogPilot variables frogpilot_toggles = get_frogpilot_toggles() + with custom.FrogPilotCarParams.from_bytes(params_reader.get("FrogPilotCarParams", block=True)) as msg: + FPCP = msg + while True: sm.update() if sm.all_checks(): @@ -237,7 +240,7 @@ def main(): 0.2 <= liveParameters.stiffnessFactor <= 5.0, min_sr <= liveParameters.steerRatio <= max_sr, )) - if CP.carFingerprint == "RAM_HD" or CP.carName == "subaru" and CP.lateralTuning.which() == "torque": + if CP.carFingerprint == "RAM_HD" or CP.carName == "subaru" and FPCP.lateralTuning.which() == "torque": liveParameters.valid = True liveParameters.steerRatioStd = float(P[States.STEER_RATIO].item()) liveParameters.stiffnessFactorStd = float(P[States.STIFFNESS].item()) diff --git a/selfdrive/locationd/torqued.py b/selfdrive/locationd/torqued.py index 36ce48ed5..051f4a583 100755 --- a/selfdrive/locationd/torqued.py +++ b/selfdrive/locationd/torqued.py @@ -3,7 +3,7 @@ import numpy as np from collections import deque, defaultdict import cereal.messaging as messaging -from cereal import car, log +from cereal import car, custom, log from openpilot.common.params import Params from openpilot.common.realtime import config_realtime_process, DT_MDL from openpilot.common.filter_simple import FirstOrderFilter @@ -52,7 +52,7 @@ class TorqueBuckets(PointBuckets): class TorqueEstimator(ParameterEstimator): - def __init__(self, CP, decimated=False): + def __init__(self, CP, FPCP, decimated=False): self.hist_len = int(HISTORY / DT_MDL) self.lag = 0.0 if decimated: @@ -72,11 +72,11 @@ class TorqueEstimator(ParameterEstimator): self.offline_friction = 0.0 self.offline_latAccelFactor = 0.0 self.resets = 0.0 - self.use_params = CP.carName in ALLOWED_CARS and CP.lateralTuning.which() == 'torque' + self.use_params = CP.carName in ALLOWED_CARS and FPCP.lateralTuning.which() == 'torque' - if CP.lateralTuning.which() == 'torque': - self.offline_friction = CP.lateralTuning.torque.friction - self.offline_latAccelFactor = CP.lateralTuning.torque.latAccelFactor + if FPCP.lateralTuning.which() == 'torque': + self.offline_friction = FPCP.lateralTuning.torque.friction + self.offline_latAccelFactor = FPCP.lateralTuning.torque.latAccelFactor self.reset() @@ -102,7 +102,7 @@ class TorqueEstimator(ParameterEstimator): cache_ltp = log_evt.liveTorqueParameters with car.CarParams.from_bytes(params_cache) as msg: cache_CP = msg - if self.get_restore_key(cache_CP, cache_ltp.version) == self.get_restore_key(CP, VERSION): + if self.get_restore_key(cache_CP, FPCP, cache_ltp.version) == self.get_restore_key(CP, FPCP, VERSION): if cache_ltp.liveValid: initial_params = { 'latAccelFactor': cache_ltp.latAccelFactorFiltered, @@ -121,12 +121,12 @@ class TorqueEstimator(ParameterEstimator): for param in initial_params: self.filtered_params[param] = FirstOrderFilter(initial_params[param], self.decay, DT_MDL) - def get_restore_key(self, CP, version): + def get_restore_key(self, CP, FPCP, version): a, b = None, None - if CP.lateralTuning.which() == 'torque': - a = CP.lateralTuning.torque.friction - b = CP.lateralTuning.torque.latAccelFactor - return (CP.carFingerprint, CP.lateralTuning.which(), a, b, version) + if FPCP.lateralTuning.which() == 'torque': + a = FPCP.lateralTuning.torque.friction + b = FPCP.lateralTuning.torque.latAccelFactor + return (CP.carFingerprint, FPCP.lateralTuning.which(), a, b, version) def reset(self): self.resets += 1.0 @@ -227,14 +227,14 @@ def main(demo=False): sm = messaging.SubMaster(['carControl', 'carOutput', 'carState', 'liveLocationKalman', 'liveDelay', 'frogpilotPlan'], poll='liveLocationKalman') params = Params() - with car.CarParams.from_bytes(params.get("CarParams", block=True)) as CP: - estimator = TorqueEstimator(CP) + with car.CarParams.from_bytes(params.get("CarParams", block=True)) as CP, custom.FrogPilotCarParams.from_bytes(params.get("FrogPilotCarParams", block=True)) as FPCP: + estimator = TorqueEstimator(CP, FPCP) # FrogPilot variables frogpilot_toggles = get_frogpilot_toggles() if not frogpilot_toggles.liveValid: - estimator = TorqueEstimator(CP, decimated=True) + estimator = TorqueEstimator(CP, FPCP, decimated=True) while True: sm.update() diff --git a/selfdrive/modeld/modeld.py b/selfdrive/modeld/modeld.py index e84a2d14b..585e78406 100755 --- a/selfdrive/modeld/modeld.py +++ b/selfdrive/modeld/modeld.py @@ -178,7 +178,7 @@ def main(demo=False): cloudlog.warning(f"connected extra cam with buffer size: {vipc_client_extra.buffer_len} ({vipc_client_extra.width} x {vipc_client_extra.height})") # messaging - pm = PubMaster(["modelV2", "drivingModelData", "cameraOdometry"]) + pm = PubMaster(["modelV2", "drivingModelData", "cameraOdometry", "frogpilotModelV2"]) sm = SubMaster(["deviceState", "carState", "roadCameraState", "liveCalibration", "driverMonitoringState", "carControl", "liveDelay", "frogpilotPlan"]) publish_state = PublishState() @@ -288,6 +288,7 @@ def main(demo=False): if model_output is not None: modelv2_send = messaging.new_message('modelV2') + frogpilot_modelv2_send = messaging.new_message('frogpilotModelV2') drivingdata_send = messaging.new_message('drivingModelData') posenet_send = messaging.new_message('cameraOdometry') fill_model_msg(drivingdata_send, modelv2_send, model_output, v_ego, steer_delay, @@ -301,13 +302,13 @@ def main(demo=False): DH.update(sm['carState'], sm['carControl'].latActive, lane_change_prob, sm['frogpilotPlan'], frogpilot_toggles) modelv2_send.modelV2.meta.laneChangeState = DH.lane_change_state modelv2_send.modelV2.meta.laneChangeDirection = DH.lane_change_direction - modelv2_send.modelV2.meta.turnDirection = DH.turn_direction + frogpilot_modelv2_send.frogpilotModelV2.turnDirection = DH.turn_direction drivingdata_send.drivingModelData.meta.laneChangeState = DH.lane_change_state drivingdata_send.drivingModelData.meta.laneChangeDirection = DH.lane_change_direction - drivingdata_send.drivingModelData.meta.turnDirection = DH.turn_direction fill_pose_msg(posenet_send, model_output, meta_main.frame_id, vipc_dropped_frames, meta_main.timestamp_eof, live_calib_seen) pm.send('modelV2', modelv2_send) + pm.send('frogpilotModelV2', frogpilot_modelv2_send) pm.send('drivingModelData', drivingdata_send) pm.send('cameraOdometry', posenet_send) diff --git a/selfdrive/navd/navd.py b/selfdrive/navd/navd.py index 18c371b88..83c48dcab 100755 --- a/selfdrive/navd/navd.py +++ b/selfdrive/navd/navd.py @@ -63,8 +63,6 @@ class RouteEngine: self.mapbox_host = "https://api.mapbox.com" # FrogPilot variables - self.frogpilot_toggles = get_frogpilot_toggles() - self.approaching_intersection = False self.approaching_turn = False @@ -73,6 +71,8 @@ class RouteEngine: self.stop_coord = [] self.stop_signal = [] + self.frogpilot_toggles = get_frogpilot_toggles() + def update(self): self.sm.update(0) diff --git a/selfdrive/pandad/pandad.cc b/selfdrive/pandad/pandad.cc index 095a7893b..7e340caf5 100644 --- a/selfdrive/pandad/pandad.cc +++ b/selfdrive/pandad/pandad.cc @@ -119,6 +119,13 @@ bool safety_setter_thread(std::vector pandas) { cereal::CarParams::SafetyModel safety_model; uint16_t safety_param; + std::string fp_params = p.get("FrogPilotCarParams"); + AlignedBuffer fp_aligned_buf; + std::unique_ptr fp_msg; + if (fp_params.size() > 0) { + fp_msg.reset(new capnp::FlatArrayMessageReader(fp_aligned_buf.align(fp_params.data(), fp_params.size()))); + } + auto safety_configs = car_params.getSafetyConfigs(); uint16_t alternative_experience = car_params.getAlternativeExperience(); for (uint32_t i = 0; i < pandas.size(); i++) { @@ -133,6 +140,14 @@ bool safety_setter_thread(std::vector pandas) { safety_param = 0U; } + if (fp_msg) { + auto fp_root = fp_msg->getRoot(); + auto fp_safety_configs = fp_root.getSafetyConfigs(); + if (fp_safety_configs.size() > i) { + safety_param |= fp_safety_configs[i].getSafetyParam(); + } + } + LOGW("panda %d: setting safety model: %d, param: %d, alternative experience: %d", i, (int)safety_model, safety_param, alternative_experience); panda->set_alternative_experience(alternative_experience); panda->set_safety_model(safety_model, safety_param); diff --git a/selfdrive/ui/qt/home.cc b/selfdrive/ui/qt/home.cc index f6daf3801..1fb496d04 100644 --- a/selfdrive/ui/qt/home.cc +++ b/selfdrive/ui/qt/home.cc @@ -191,13 +191,13 @@ OffroadHome::OffroadHome(QWidget* parent) : QFrame(parent) { #endif left_widget->addWidget(new DriveStats); - ModelReview *modelReview = new ModelReview(this); + FrogPilotModelReview *modelReview = new FrogPilotModelReview(this); left_widget->addWidget(modelReview); left_widget->setStyleSheet("border-radius: 10px;"); left_widget->setCurrentIndex(1); - connect(modelReview, &ModelReview::driveRated, [=]() { + connect(modelReview, &FrogPilotModelReview::driveRated, [=]() { left_widget->setCurrentIndex(1); }); connect(frogpilotUIState(), &FrogPilotUIState::reviewModel, [=]() { diff --git a/selfdrive/ui/qt/maps/map_helpers.h b/selfdrive/ui/qt/maps/map_helpers.h index fdf3fbf0b..45509abf2 100644 --- a/selfdrive/ui/qt/maps/map_helpers.h +++ b/selfdrive/ui/qt/maps/map_helpers.h @@ -14,7 +14,7 @@ #include "common/transformations/orientation.hpp" #include "cereal/messaging/messaging.h" -const QString MAPBOX_TOKEN = QString::fromStdString(Params("/cache/params").get("MapboxSecretKey")); +const QString MAPBOX_TOKEN = QString::fromStdString(Params().get("MapboxSecretKey")); const QString MAPS_HOST = QStringLiteral("https://api.mapbox.com"); const QString MAPS_CACHE_PATH = "/data/mbgl-cache-navd.db"; diff --git a/selfdrive/ui/qt/maps/map_settings.cc b/selfdrive/ui/qt/maps/map_settings.cc index d315a4228..ff3d2e462 100644 --- a/selfdrive/ui/qt/maps/map_settings.cc +++ b/selfdrive/ui/qt/maps/map_settings.cc @@ -389,18 +389,36 @@ void NavManager::parseLocationsResponse(const QString &response, bool success) { if (!success || response == prev_response) return; prev_response = response; - QJsonDocument doc = QJsonDocument::fromJson(response.trimmed().toUtf8()); - if (doc.isNull()) { + QString trimmed = response.trimmed(); + + if (trimmed.isEmpty() || trimmed == "null") { + locations = QJsonArray(); + emit updated(); + return; + } + + QJsonParseError parse_error; + QJsonDocument doc = QJsonDocument::fromJson(trimmed.toUtf8(), &parse_error); + if (parse_error.error != QJsonParseError::NoError) { qWarning() << "JSON Parse failed on navigation locations" << response; return; } - // set last activity time. - auto remote_locations = doc.array(); + QJsonArray remote_locations; + if (doc.isArray()) { + remote_locations = doc.array(); + } else if (doc.isObject() && doc.object().value("locations").isArray()) { + remote_locations = doc.object().value("locations").toArray(); + } else { + locations = QJsonArray(); + emit updated(); + return; + } + for (QJsonValueRef loc : remote_locations) { - auto obj = loc.toObject(); - auto serverTime = convertTimestampToEpoch(obj["modified"].toString()); - obj.insert("time", qMax(serverTime, getLastActivity(obj))); + QJsonObject obj = loc.toObject(); + qint64 server_time = convertTimestampToEpoch(obj.value("modified").toString()); + obj.insert("time", qMax(server_time, getLastActivity(obj))); loc = obj; } diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index e0de5e2d3..d6466bab4 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -485,7 +485,7 @@ SettingsWindow::SettingsWindow(QWidget *parent) : QFrame(parent) { bool tuningLevelConfirmed = params.getBool("TuningLevelConfirmed"); if (!tuningLevelConfirmed) { - int frogpilotHours = paramsTracking.getInt("FrogPilotMinutes") / 60; + int frogpilotHours = QJsonDocument::fromJson(QString::fromStdString(params.get("FrogPilotStats")).toUtf8()).object().value("FrogPilotSeconds").toInt() / (60 * 60); int openpilotHours = params.getInt("KonikMinutes") / 60 + params.getInt("openpilotMinutes") / 60; if (frogpilotHours < 1 && openpilotHours < 100) { diff --git a/selfdrive/ui/qt/offroad/settings.h b/selfdrive/ui/qt/offroad/settings.h index b52f646f5..51f9c6f94 100644 --- a/selfdrive/ui/qt/offroad/settings.h +++ b/selfdrive/ui/qt/offroad/settings.h @@ -48,12 +48,11 @@ private: QStackedWidget *panel_widget; // FrogPilot variables - Params params; - Params paramsTracking{"/cache/tracking"}; - bool panelOpen; bool subPanelOpen; bool subSubPanelOpen; + + Params params; }; class DevicePanel : public ListWidget { diff --git a/selfdrive/ui/qt/offroad/software_settings.cc b/selfdrive/ui/qt/offroad/software_settings.cc index eb60f8099..ae7986892 100644 --- a/selfdrive/ui/qt/offroad/software_settings.cc +++ b/selfdrive/ui/qt/offroad/software_settings.cc @@ -33,7 +33,6 @@ SoftwarePanel::SoftwarePanel(QWidget* parent) : ListWidget(parent) { ParamControl *automaticUpdatesToggle = new ParamControl("AutomaticUpdates", tr("Automatically Update FrogPilot"), tr("FrogPilot will automatically update itself and it's assets when you're offroad and have an active internet connection."), ""); automaticUpdatesToggle->setVisible(params.getBool("IsReleaseBranch")); - connect(automaticUpdatesToggle, &ToggleControl::toggleFlipped, this, &updateFrogPilotToggles); addItem(automaticUpdatesToggle); // download update btn @@ -65,7 +64,6 @@ SoftwarePanel::SoftwarePanel(QWidget* parent) : ListWidget(parent) { if (!frogpilotUIState()->frogpilot_toggles.value("frogs_go_moo").toBool()) { branches.removeAll("FrogPilot-Development"); branches.removeAll("FrogPilot-Vetting"); - branches.removeAll("FrogPilot-Test"); branches.removeAll("MAKE-PRS-HERE"); } for (QString b : {current.c_str(), "devel-staging", "devel", "nightly", "master-ci", "master"}) { @@ -98,8 +96,8 @@ SoftwarePanel::SoftwarePanel(QWidget* parent) : ListWidget(parent) { auto uninstallBtn = new ButtonControl(tr("Uninstall %1").arg(getBrand()), tr("UNINSTALL")); connect(uninstallBtn, &ButtonControl::clicked, [&]() { if (ConfirmationDialog::confirm(tr("Are you sure you want to uninstall?"), tr("Uninstall"), this)) { - if (FrogPilotConfirmationDialog::yesorno(tr("Do you want to delete deep storage FrogPilot assets? This includes your toggle settings for quick reinstalls."), this)) { - if (FrogPilotConfirmationDialog::yesorno(tr("Are you sure? This is 100% unrecoverable and if you reinstall FrogPilot you'll lose all your previous settings!"), this)) { + if (FrogPilotConfirmationDialog::yesorno(tr("Do you want to perform a full factory reset? All saved assets and settings will be permanently deleted!"), this)) { + if (FrogPilotConfirmationDialog::yesorno(tr("This is a complete factory reset and cannot be undone. Are you absolutely sure you want to continue?"), this)) { std::system("rm -rf /cache/params/d"); } } diff --git a/selfdrive/ui/qt/onroad/alerts.cc b/selfdrive/ui/qt/onroad/alerts.cc index db6eb311e..69d3318e6 100644 --- a/selfdrive/ui/qt/onroad/alerts.cc +++ b/selfdrive/ui/qt/onroad/alerts.cc @@ -6,7 +6,7 @@ #include "selfdrive/ui/qt/util.h" void OnroadAlerts::updateState(const UIState &s, const FrogPilotUIState &fs) { - Alert a = getAlert(*(s.sm), s.scene.started_frame, fs.frogpilot_toggles); + Alert a = getAlert(*(s.sm), *(fs.sm), s.scene.started_frame, fs.frogpilot_toggles); if (!alert.equal(a)) { if (alert.status == cereal::ControlsState::AlertStatus::NORMAL && fs.frogpilot_toggles.value("hide_alerts").toBool()) { clear(); @@ -28,19 +28,24 @@ void OnroadAlerts::clear() { update(); } -OnroadAlerts::Alert OnroadAlerts::getAlert(const SubMaster &sm, uint64_t started_frame, QJsonObject &frogpilot_toggles) { +OnroadAlerts::Alert OnroadAlerts::getAlert(const SubMaster &sm, const SubMaster &fpsm, uint64_t started_frame, QJsonObject &frogpilot_toggles) { const cereal::ControlsState::Reader &cs = sm["controlsState"].getControlsState(); + const cereal::FrogPilotControlsState::Reader &fpcs = fpsm["frogpilotControlsState"].getFrogpilotControlsState(); const uint64_t controls_frame = sm.rcv_frame("controlsState"); Alert a = {}; static QString crash_log_path = "/data/error_logs/error.txt"; if (QFile::exists(crash_log_path)) { if (frogpilot_toggles.value("random_events").toBool()) { - a = {tr("openpilot crashed ๐Ÿ’ฉ"), - tr("Please post the \"Error Log\" in the FrogPilot Discord!"), - "openpilotCrashedRandomEvent", - cereal::ControlsState::AlertSize::MID, - cereal::ControlsState::AlertStatus::CRITICAL}; + if (enableFerg) { + displayFerg = true; + } else { + a = {tr("openpilot crashed ๐Ÿ’ฉ"), + tr("Please post the \"Error Log\" in the FrogPilot Discord!"), + "openpilotCrashedRandomEvent", + cereal::ControlsState::AlertSize::MID, + cereal::ControlsState::AlertStatus::CRITICAL}; + } } else { a = {tr("openpilot crashed"), tr("Please post the \"Error Log\" in the FrogPilot Discord!"), @@ -52,6 +57,11 @@ OnroadAlerts::Alert OnroadAlerts::getAlert(const SubMaster &sm, uint64_t started } else if (controls_frame >= started_frame) { // Don't get old alert. a = {cs.getAlertText1().cStr(), cs.getAlertText2().cStr(), cs.getAlertType().cStr(), cs.getAlertSize(), cs.getAlertStatus()}; + + if (a.size == cereal::ControlsState::AlertSize::NONE) { + a = {fpcs.getAlertText1().cStr(), fpcs.getAlertText2().cStr(), + fpcs.getAlertType().cStr(), static_cast(fpcs.getAlertSize()), static_cast(fpcs.getAlertStatus())}; + } } if (!sm.updated("controlsState") && (sm.frame - started_frame) > 5 * UI_FREQ && !frogpilot_toggles.value("force_onroad").toBool()) { @@ -81,6 +91,11 @@ OnroadAlerts::Alert OnroadAlerts::getAlert(const SubMaster &sm, uint64_t started } void OnroadAlerts::paintEvent(QPaintEvent *event) { + if (displayFerg) { + QPainter p(this); + p.drawPixmap(QPoint((width() - ferg.width()) / 2, (height() - ferg.height()) / 2), ferg); + return; + } if (alert.size == cereal::ControlsState::AlertSize::NONE) { alertHeight = 0; return; @@ -107,7 +122,7 @@ void OnroadAlerts::paintEvent(QPaintEvent *event) { // draw background + gradient p.setPen(Qt::NoPen); p.setCompositionMode(QPainter::CompositionMode_SourceOver); - p.setBrush(QBrush(alert_colors[alert.status])); + p.setBrush(QBrush(frogpilot_alert_colors[static_cast(alert.status)])); p.drawRoundedRect(r, radius, radius); QLinearGradient g(0, r.y(), 0, r.bottom()); @@ -124,12 +139,15 @@ void OnroadAlerts::paintEvent(QPaintEvent *event) { p.setPen(QColor(0xff, 0xff, 0xff)); p.setRenderHint(QPainter::TextAntialiasing); if (alert.size == cereal::ControlsState::AlertSize::SMALL) { - p.setFont(InterFont(sidebarsOpen ? 64 : 74, QFont::DemiBold)); + bool long_alert1 = alert.text1.length() > 40; + p.setFont(InterFont(long_alert1 && sidebarsOpen ? 64 : 74, QFont::DemiBold)); p.drawText(r, Qt::AlignCenter, alert.text1); } else if (alert.size == cereal::ControlsState::AlertSize::MID) { - p.setFont(InterFont(sidebarsOpen ? 78 : 88, QFont::Bold)); + bool long_alert1 = alert.text1.length() > 30; + p.setFont(InterFont(long_alert1 && sidebarsOpen ? 78 : 88, QFont::Bold)); p.drawText(QRect(0, c.y() - 125, width(), 150), Qt::AlignHCenter | Qt::AlignTop, alert.text1); - p.setFont(InterFont(sidebarsOpen ? 56 : 66)); + bool long_alert2 = alert.text2.length() > 40; + p.setFont(InterFont(long_alert2 && sidebarsOpen ? 56 : 66)); p.drawText(QRect(0, c.y() + 21, width(), 90), Qt::AlignHCenter, alert.text2); } else if (alert.size == cereal::ControlsState::AlertSize::FULL) { bool l = alert.text1.length() > 15; diff --git a/selfdrive/ui/qt/onroad/alerts.h b/selfdrive/ui/qt/onroad/alerts.h index 4cd787a7e..92bb77391 100644 --- a/selfdrive/ui/qt/onroad/alerts.h +++ b/selfdrive/ui/qt/onroad/alerts.h @@ -13,8 +13,18 @@ public: void clear(); // FrogPilot variables + bool displayFerg; + bool enableFerg; + int alertHeight; + const QMap frogpilot_alert_colors = { + {cereal::FrogPilotControlsState::AlertStatus::NORMAL, QColor(0x15, 0x15, 0x15, 0xf1)}, + {cereal::FrogPilotControlsState::AlertStatus::USER_PROMPT, QColor(0xDA, 0x6F, 0x25, 0xf1)}, + {cereal::FrogPilotControlsState::AlertStatus::CRITICAL, QColor(0xC9, 0x22, 0x31, 0xf1)}, + {cereal::FrogPilotControlsState::AlertStatus::FROGPILOT, QColor(0x17, 0x86, 0x44, 0xf1)}, + }; + protected: struct Alert { QString text1; @@ -32,17 +42,16 @@ protected: {cereal::ControlsState::AlertStatus::NORMAL, QColor(0x15, 0x15, 0x15, 0xf1)}, {cereal::ControlsState::AlertStatus::USER_PROMPT, QColor(0xDA, 0x6F, 0x25, 0xf1)}, {cereal::ControlsState::AlertStatus::CRITICAL, QColor(0xC9, 0x22, 0x31, 0xf1)}, - - // FrogPilot alert colors - {cereal::ControlsState::AlertStatus::FROGPILOT, QColor(0x17, 0x86, 0x44, 0xf1)}, }; void paintEvent(QPaintEvent*) override; - OnroadAlerts::Alert getAlert(const SubMaster &sm, uint64_t started_frame, QJsonObject &frogpilot_toggles); + OnroadAlerts::Alert getAlert(const SubMaster &sm, const SubMaster &fpsm, uint64_t started_frame, QJsonObject &frogpilot_toggles); QColor bg; Alert alert = {}; // FrogPilot variables bool sidebarsOpen; + + QPixmap ferg = loadPixmap("../../frogpilot/assets/random_events/icons/ferg.png", {1080, 720}); }; diff --git a/selfdrive/ui/qt/onroad/annotated_camera.cc b/selfdrive/ui/qt/onroad/annotated_camera.cc index be6b44f73..6c4e18189 100644 --- a/selfdrive/ui/qt/onroad/annotated_camera.cc +++ b/selfdrive/ui/qt/onroad/annotated_camera.cc @@ -85,8 +85,10 @@ void AnnotatedCameraWidget::updateState(const UIState &s, const FrogPilotUIState has_us_speed_limit = (nav_alive && speed_limit_sign == cereal::NavInstruction::SpeedLimitSign::MUTCD); has_us_speed_limit |= frogpilot_toggles.value("show_speed_limits").toBool() || frogpilot_toggles.value("speed_limit_controller").toBool(); has_us_speed_limit &= !frogpilot_toggles.value("speed_limit_vienna").toBool(); + has_us_speed_limit &= !frogpilot_toggles.value("hide_speed_limit").toBool() || frogpilotPlan.getSpeedLimitChanged(); has_eu_speed_limit = (nav_alive && speed_limit_sign == cereal::NavInstruction::SpeedLimitSign::VIENNA); has_eu_speed_limit |= (frogpilot_toggles.value("show_speed_limits").toBool() || frogpilot_toggles.value("speed_limit_controller").toBool()) && frogpilot_toggles.value("speed_limit_vienna").toBool(); + has_eu_speed_limit &= !frogpilot_toggles.value("hide_speed_limit").toBool() || frogpilotPlan.getSpeedLimitChanged(); is_metric = s.scene.is_metric; speedUnit = s.scene.is_metric ? tr("km/h") : tr("mph"); hideBottomIcons = (cs.getAlertSize() != cereal::ControlsState::AlertSize::NONE); @@ -191,7 +193,7 @@ void AnnotatedCameraWidget::drawHud(QPainter &p, const cereal::FrogPilotPlan::Re const QRect sign_rect = set_speed_rect.adjusted(sign_margin, default_size.height(), -sign_margin, -sign_margin); // US/Canada (MUTCD style) sign - if (has_us_speed_limit && !frogpilot_toggles.value("hide_speed_limit").toBool()) { + if (has_us_speed_limit) { p.setPen(Qt::NoPen); p.setBrush(whiteColor()); p.drawRoundedRect(sign_rect, 24, 24); @@ -218,7 +220,7 @@ void AnnotatedCameraWidget::drawHud(QPainter &p, const cereal::FrogPilotPlan::Re } // EU (Vienna style) sign - if (has_eu_speed_limit && !frogpilot_toggles.value("hide_speed_limit").toBool()) { + if (has_eu_speed_limit) { p.setPen(Qt::NoPen); p.setBrush(whiteColor()); p.drawEllipse(sign_rect); @@ -459,13 +461,11 @@ void AnnotatedCameraWidget::drawLead(QPainter &painter, const cereal::RadarState const float v_rel = lead_data.getVRel(); float fillAlpha = 0; - if (frogpilotPlan.getTrackingLead() || adjacent) { - fillAlpha = 255 * (1.0 - (d_rel / leadBuff)); - if (v_rel < 0) { - fillAlpha += 255 * (-1 * (v_rel / speedBuff)); - } - fillAlpha = std::clamp(fillAlpha, 0.f, 255.f); + fillAlpha = 255 * (1.0 - (d_rel / leadBuff)); + if (v_rel < 0) { + fillAlpha += 255 * (-1 * (v_rel / speedBuff)); } + fillAlpha = std::clamp(fillAlpha, 0.f, 255.f); float sz = std::clamp((25 * 30) / (d_rel / 3 + 30), 15.0f, 30.0f) * 2.35; float x = std::clamp((float)vd.x(), 0.f, width() - sz / 2); @@ -475,11 +475,7 @@ void AnnotatedCameraWidget::drawLead(QPainter &painter, const cereal::RadarState float g_yo = sz / 10; QPointF glow[] = {{x + (sz * 1.35) + g_xo, y + sz + g_yo}, {x, y - g_yo}, {x - (sz * 1.35) - g_xo, y + sz + g_yo}}; - if (lead_data.getFarLead()) { - painter.setBrush(QColor(0, 255, 255, 255)); - } else { - painter.setBrush(QColor(218, 202, 37, 255)); - } + painter.setBrush(QColor(218, 202, 37, 255)); painter.drawPolygon(glow, std::size(glow)); // chevron @@ -568,19 +564,21 @@ void AnnotatedCameraWidget::paintEvent(QPaintEvent *event) { if (s->scene.longitudinal_control && sm.rcv_frame("radarState") > s->scene.started_frame && !frogpilot_toggles.value("hide_lead_marker").toBool()) { auto radar_state = sm["radarState"].getRadarState(); + auto frogpilot_radar_state = fpsm["frogpilotRadarState"].getFrogpilotRadarState(); update_leads(s, radar_state, model.getPosition()); + update_leads_frogpilot(s, fs, frogpilot_radar_state, model.getPosition()); auto lead_one = radar_state.getLeadOne(); auto lead_two = radar_state.getLeadTwo(); - auto lead_left = radar_state.getLeadLeft(); - auto lead_right = radar_state.getLeadRight(); + auto lead_left = frogpilot_radar_state.getLeadLeft(); + auto lead_right = frogpilot_radar_state.getLeadRight(); if (lead_left.getStatus()) { - drawLead(painter, lead_left, frogpilotPlan, s->scene.lead_vertices[2], frogpilot_nvg->blueColor(), fs, true); + drawLead(painter, reinterpret_cast(lead_left), frogpilotPlan, fs->frogpilot_scene.lead_vertices[0], frogpilot_nvg->blueColor(), fs, true); } if (lead_right.getStatus()) { - drawLead(painter, lead_right, frogpilotPlan, s->scene.lead_vertices[3], frogpilot_nvg->purpleColor(), fs, true); + drawLead(painter, reinterpret_cast(lead_right), frogpilotPlan, fs->frogpilot_scene.lead_vertices[1], frogpilot_nvg->purpleColor(), fs, true); } if (lead_one.getStatus()) { - drawLead(painter, lead_one, frogpilotPlan, s->scene.lead_vertices[0], fs->frogpilot_scene.lead_marker_color, fs); + drawLead(painter, lead_one, frogpilotPlan, s->scene.lead_vertices[0], lead_one.getModelProb() >= frogpilot_toggles.value("lead_detection_probability").toInt() ? fs->frogpilot_scene.lead_marker_color : whiteColor(), fs); } else { frogpilot_nvg->leadTextRect = QRect(); } diff --git a/selfdrive/ui/qt/onroad/onroad_home.cc b/selfdrive/ui/qt/onroad/onroad_home.cc index 6fb2c1ecc..b275fbc89 100644 --- a/selfdrive/ui/qt/onroad/onroad_home.cc +++ b/selfdrive/ui/qt/onroad/onroad_home.cc @@ -103,7 +103,7 @@ void OnroadWindow::mousePressEvent(QMouseEvent* e) { #ifdef ENABLE_MAPS if (map != nullptr) { bool sidebarVisible = geometry().x() > 0; - bool show_map = !sidebarVisible; + bool show_map = !sidebarVisible && !frogpilot_toggles.value("hide_map").toBool(); map->setVisible(show_map && !map->isVisible()); if (map->isVisible() && frogpilot_toggles.value("full_map").toBool()) { nvg->frogpilot_nvg->bigMapOpen = false; @@ -135,6 +135,13 @@ void OnroadWindow::mousePressEvent(QMouseEvent* e) { } void OnroadWindow::createMapWidget() { + FrogPilotUIState &fs = *frogpilotUIState(); + QJsonObject &frogpilot_toggles = fs.frogpilot_toggles; + + if (frogpilot_toggles.value("hide_map").toBool()) { + return; + } + #ifdef ENABLE_MAPS auto m = new MapPanel(get_mapbox_settings()); map = m; @@ -158,6 +165,11 @@ void OnroadWindow::offroadTransition(bool offroad) { } #endif alerts->clear(); + if (!offroad) { + alerts->enableFerg = util::random_int(0, 1) == 1; + } else { + alerts->displayFerg = false; + } } void OnroadWindow::primeChanged(bool prime) { diff --git a/selfdrive/ui/qt/sidebar.cc b/selfdrive/ui/qt/sidebar.cc index 934f5a28e..9cd270ccc 100644 --- a/selfdrive/ui/qt/sidebar.cc +++ b/selfdrive/ui/qt/sidebar.cc @@ -57,7 +57,7 @@ void Sidebar::updateTheme() { sidebar_color2 = frogpilot_scene.use_stock_colors ? good_color : frogpilot_scene.sidebar_color2; sidebar_color3 = frogpilot_scene.use_stock_colors ? good_color : frogpilot_scene.sidebar_color3; - if (util::random_int(0, 100) == 100 && frogpilot_toggles.value("random_events").toBool()) { + if (util::random_int(0, 100) == 69 && frogpilot_toggles.value("random_events").toBool()) { loadImage("../../frogpilot/assets/random_events/icons/button_home", home_img, home_gif, home_btn.size(), this); } else { loadImage("../../frogpilot/assets/active_theme/icons/button_home", home_img, home_gif, home_btn.size(), this); diff --git a/selfdrive/ui/qt/widgets/controls.cc b/selfdrive/ui/qt/widgets/controls.cc index 40dda971f..778075f37 100644 --- a/selfdrive/ui/qt/widgets/controls.cc +++ b/selfdrive/ui/qt/widgets/controls.cc @@ -49,7 +49,13 @@ AbstractControl::AbstractControl(const QString &title, const QString &desc, cons } if (!description->text().isEmpty()) { - description->setVisible(!description->isVisible()); + if (description->isVisible()) { + emit hideDescriptionEvent(); + + description->setVisible(false); + } else { + description->setVisible(true); + } } }); diff --git a/selfdrive/ui/qt/widgets/controls.h b/selfdrive/ui/qt/widgets/controls.h index 6e4810230..96ba4c985 100644 --- a/selfdrive/ui/qt/widgets/controls.h +++ b/selfdrive/ui/qt/widgets/controls.h @@ -65,6 +65,7 @@ public slots: } signals: + void hideDescriptionEvent(); void showDescriptionEvent(); protected: diff --git a/selfdrive/ui/soundd.py b/selfdrive/ui/soundd.py index d12dbde95..1e9e1bd36 100644 --- a/selfdrive/ui/soundd.py +++ b/selfdrive/ui/soundd.py @@ -4,8 +4,9 @@ import time import wave from pathlib import Path +from typing import Any -from cereal import car, messaging +from cereal import car, custom, messaging from openpilot.common.basedir import BASEDIR from openpilot.common.filter_simple import FirstOrderFilter from openpilot.common.realtime import Ratekeeper @@ -27,9 +28,10 @@ AMBIENT_DB = 30 # DB where MIN_VOLUME is applied DB_SCALE = 30 # AMBIENT_DB + DB_SCALE is where MAX_VOLUME is applied AudibleAlert = car.CarControl.HUDControl.AudibleAlert +FrogPilotAudibleAlert = custom.FrogPilotCarControl.HUDControl.AudibleAlert -sound_list: dict[int, tuple[str, int | None, float]] = { +sound_list: dict[Any, tuple[str, int | None, float]] = { # AudibleAlert, file name, play count (none for infinite) AudibleAlert.engage: ("engage.wav", 1, MAX_VOLUME), AudibleAlert.disengage: ("disengage.wav", 1, MAX_VOLUME), @@ -43,20 +45,20 @@ sound_list: dict[int, tuple[str, int | None, float]] = { AudibleAlert.warningImmediate: ("warning_immediate.wav", None, MAX_VOLUME), # FrogPilot sounds - AudibleAlert.angry: ("angry.wav", 1, MAX_VOLUME), - AudibleAlert.continued: ("continued.wav", 1, MAX_VOLUME), - AudibleAlert.dejaVu: ("dejaVu.wav", 1, MAX_VOLUME), - AudibleAlert.doc: ("doc.wav", 1, MAX_VOLUME), - AudibleAlert.fart: ("fart.wav", 1, MAX_VOLUME), - AudibleAlert.firefox: ("firefox.wav", 1, MAX_VOLUME), - AudibleAlert.goat: ("goat.wav", None, MAX_VOLUME), - AudibleAlert.hal9000: ("hal9000.wav", 1, MAX_VOLUME), - AudibleAlert.mail: ("mail.wav", 1, MAX_VOLUME), - AudibleAlert.nessie: ("nessie.wav", 1, MAX_VOLUME), - AudibleAlert.noice: ("noice.wav", 1, MAX_VOLUME), - AudibleAlert.startup: ("startup.wav", 1, MAX_VOLUME), - AudibleAlert.thisIsFine: ("this_is_fine.wav", 1, MAX_VOLUME), - AudibleAlert.uwu: ("uwu.wav", 1, MAX_VOLUME), + FrogPilotAudibleAlert.angry: ("angry.wav", 1, MAX_VOLUME), + FrogPilotAudibleAlert.continued: ("continued.wav", 1, MAX_VOLUME), + FrogPilotAudibleAlert.dejaVu: ("dejaVu.wav", 1, MAX_VOLUME), + FrogPilotAudibleAlert.doc: ("doc.wav", 1, MAX_VOLUME), + FrogPilotAudibleAlert.fart: ("fart.wav", 1, MAX_VOLUME), + FrogPilotAudibleAlert.firefox: ("firefox.wav", 1, MAX_VOLUME), + FrogPilotAudibleAlert.goat: ("goat.wav", None, MAX_VOLUME), + FrogPilotAudibleAlert.hal9000: ("hal9000.wav", 1, MAX_VOLUME), + FrogPilotAudibleAlert.mail: ("mail.wav", 1, MAX_VOLUME), + FrogPilotAudibleAlert.nessie: ("nessie.wav", 1, MAX_VOLUME), + FrogPilotAudibleAlert.noice: ("noice.wav", 1, MAX_VOLUME), + FrogPilotAudibleAlert.startup: ("startup.wav", 1, MAX_VOLUME), + FrogPilotAudibleAlert.thisIsFine: ("this_is_fine.wav", 1, MAX_VOLUME), + FrogPilotAudibleAlert.uwu: ("uwu.wav", 1, MAX_VOLUME), } def check_controls_timeout_alert(sm): @@ -80,8 +82,6 @@ class Soundd: self.spl_filter_weighted = FirstOrderFilter(0, 2.5, FILTER_DT, initialized=False) # FrogPilot variables - self.frogpilot_toggles = get_frogpilot_toggles() - self.openpilot_crashed_played = False self.restart_stream = False @@ -92,6 +92,8 @@ class Soundd: self.error_log = ERROR_LOGS_PATH / "error.txt" self.random_events_directory = RANDOM_EVENTS_PATH / "sounds" + self.frogpilot_toggles = get_frogpilot_toggles() + self.update_frogpilot_sounds() def load_sounds(self): @@ -109,9 +111,7 @@ class Soundd: elif sounds_path.exists(): wavefile = wave.open(str(sounds_path), 'r') else: - if filename == "prompt_repeat.wav": - filename = "prompt.wav" - elif filename == "startup.wav": + if filename == "startup.wav": filename = "engage.wav" wavefile = wave.open(BASEDIR + "/selfdrive/assets/sounds/" + filename, 'r') @@ -161,13 +161,18 @@ class Soundd: params_memory.remove("TestAlert") elif not self.openpilot_crashed_played and self.error_log.is_file(): if self.frogpilot_toggles.random_events: - self.update_alert(AudibleAlert.fart) + self.update_alert(FrogPilotAudibleAlert.fart) else: self.update_alert(AudibleAlert.prompt) self.openpilot_crashed_played = True elif sm.updated['controlsState']: new_alert = sm['controlsState'].alertSound.raw + new_frogpilot_alert = sm['frogpilotControlsState'].alertSound.raw + + if new_alert == AudibleAlert.none and new_frogpilot_alert != FrogPilotAudibleAlert.none: + new_alert = new_frogpilot_alert + self.update_alert(new_alert) elif check_controls_timeout_alert(sm): self.update_alert(AudibleAlert.warningImmediate) @@ -191,7 +196,7 @@ class Soundd: # sounddevice must be imported after forking processes import sounddevice as sd - sm = messaging.SubMaster(['controlsState', 'microphone', 'frogpilotPlan']) + sm = messaging.SubMaster(['controlsState', 'microphone', 'frogpilotControlsState', 'frogpilotPlan']) with self.get_stream(sd) as stream: rk = Ratekeeper(20) @@ -246,8 +251,8 @@ class Soundd: AudibleAlert.warningSoft: self.frogpilot_toggles.warningSoft_volume / 100.0, AudibleAlert.warningImmediate: self.frogpilot_toggles.warningImmediate_volume / 100.0, - AudibleAlert.goat: self.frogpilot_toggles.prompt_volume / 100.0, - AudibleAlert.startup: self.frogpilot_toggles.engage_volume / 100.0 + FrogPilotAudibleAlert.goat: self.frogpilot_toggles.prompt_volume / 100.0, + FrogPilotAudibleAlert.startup: self.frogpilot_toggles.engage_volume / 100.0 } for sound in sound_list: diff --git a/selfdrive/ui/translations/auto_translate.py b/selfdrive/ui/translations/auto_translate.py index 37604f8d2..6da535ada 100755 --- a/selfdrive/ui/translations/auto_translate.py +++ b/selfdrive/ui/translations/auto_translate.py @@ -5,7 +5,10 @@ import json import os import pathlib import xml.etree.ElementTree as ET +from concurrent.futures import ThreadPoolExecutor, as_completed +from requests.adapters import HTTPAdapter from typing import cast +from urllib3.util.retry import Retry import requests @@ -18,35 +21,43 @@ OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY") FUN_LANG_KEYS = {"caveman", "duck", "frog", "pirate", "shakespearean"} FUN_PROMPT_TEMPLATE = """ -You are a safety-critical UI style transformer for an openpilot fork. Rewrite the user's message (an English source string) into the style '{language}' -while preserving the original meaning, readability, and all functional elements. Output ONLY the transformed text, with no quotes or extra words. +You are a playful *style translator* for openpilot. Translate the following message (an English source string) into the style '{language}'. Output ONLY the translated text, with no quotes or extra words. + +Output rules: +- Input: one English UI string from a Qt .ts file. +- Style key: {language}. +- Output: a fun, stylized rewrite that keeps technical structure intact. Hard requirements: 1) Preserve placeholders, variables, and markup exactly as written: {{name}}, {{0}}, {{icu}}, %1, %n, %(speed)d, $SPEED, โ€ฆ, โ€ฆ, etc. 2) Keep all non-translatable tokens unchanged: product/brand names (e.g., openpilot, ACC), file paths, error codes, part numbers. 3) Do not add, remove, or reorder placeholders. If grammar absolutely requires reordering, keep all placeholders intact and still produce a correct sentence; prefer wordings that avoid reordering. 4) Do not convert units or numbers (e.g., mphโ†”km/h). Translate unit labels only if standard in the style and not part of a preserved token. -5) Maintain the same warning/priority level and imperative tone. Never soften or intensify safety messages (โ€œDo notโ€ฆโ€, โ€œWarningโ€, โ€œCriticalโ€). +5) Maintain the same warning/priority level and imperative tone. Never soften or intensify safety messages ("Do notโ€ฆ", "Warning", "Critical"). 6) Preserve hotkeys/accelerators if present (e.g., &F, _O). If the exact letter is impossible, pick the nearest mnemonic but keep the marker. -7) Follow normal punctuation and casing rules while respecting all technical tokens. +7) Follow style punctuation and casing norms while respecting all technical tokens. 8) If ICU MessageFormat/plural/select syntax is present, keep the structure and variable names unchanged and rewrite only the human-readable text. 9) Keep the output as concise as the source. Do not append notes, explanations, or metadata. -If the source is ambiguous or cannot be safely adapted to the style without risking meaning loss, choose the safest literal rendering that preserves meaning. -If you cannot adapt it safely, return the source text unchanged. +Style Hints: +- caveman: Short, blunt sentences. Simple words. Little grammar. Example: "Me want food. You come now." +- duck: Quacky interjections, waddling rhythm, silly tone. Example: "Quack! What you mean? Waddle-waddle, quack!" +- frog: Croaky, ribbit-filled speech, jumpy tone. Example: "Ribbit! I hop to help you. Croak, ribbit!" +- pirate: Rough, nautical slang, dropped consonants, lots of "Arr!" Example: "Arr, ye scallywag! Hoist the sails 'n fetch me rum!" +- shakespearean: Flowery, old-fashioned English, thee/thou, dramatic flair. Example: "Prithee, good sir, thou dost jest most cruelly!" -Your entire reply must be a single line containing only the final rewritten text. +Keep length close to source; avoid bloat. Respond with the styled string only. """ OPENAI_PROMPT = """ -You are a safety-critical UI translator for an openpilot fork. Translate the user's message (an English source string) into the locale '{language}'. Output ONLY the translated text, with no quotes or extra words. +You are a safety-critical UI translator for openpilot. Translate the following message (an English source string) into the locale '{language}'. Output ONLY the translated text, with no quotes or extra words. Hard requirements: 1) Preserve placeholders, variables, and markup exactly as written: {{name}}, {{0}}, {{icu}}, %1, %n, %(speed)d, $SPEED, โ€ฆ, โ€ฆ, etc. 2) Keep all non-translatable tokens unchanged: product/brand names (e.g., openpilot, ACC), file paths, error codes, part numbers. 3) Do not add, remove, or reorder placeholders. If grammar absolutely requires reordering, keep all placeholders intact and still produce a correct sentence; prefer wordings that avoid reordering. 4) Do not convert units or numbers (e.g., mphโ†”km/h). Translate unit labels only if standard in the target locale and not part of a preserved token. -5) Maintain the same warning/priority level and imperative tone. Never soften or intensify safety messages (โ€œDo notโ€ฆโ€, โ€œWarningโ€, โ€œCriticalโ€). +5) Maintain the same warning/priority level and imperative tone. Never soften or intensify safety messages ("Do notโ€ฆ", "Warning", "Critical"). 6) Preserve hotkeys/accelerators if present (e.g., &F, _O). If the exact letter is impossible, pick the nearest mnemonic but keep the marker. 7) Follow target-locale punctuation and casing norms while respecting all technical tokens. 8) If ICU MessageFormat/plural/select syntax is present, keep the structure and variable names unchanged and translate only the human-readable text. @@ -58,7 +69,7 @@ Your entire reply must be a single line containing only the final translation. """ OPENAI_EVAL_PROMPT = """ -You are a safety-critical reviewer for UI translations for an openpilot fork. Your job is to compare two candidate translations (A and B) of an English source string and select the safest, most accurate option in the locale '{language}'. +You are a safety-critical reviewer for UI translations for openpilot. Your job is to compare two candidate translations (A and B) of an English source string and select the safest, most accurate option in the locale '{language}'. Output rules: - Return ONLY one line containing exactly one of these: the full text of Translation A, or the full text of Translation B, or the exact Source string. @@ -89,10 +100,29 @@ Decision criteria (apply in order): - Prefer minimal reordering of placeholders if both are valid. Remember: -- Never fabricate or โ€œimproveโ€ content. Choose A or B, or fall back to the Source if both are unsafe. +- Never fabricate or "improve" content. Choose A or B, or fall back to the Source if both are unsafe. - Your reply must be exactly the chosen string with no commentary. """ +SESSION = requests.Session() + +def configure_session(): + if OPENAI_API_KEY: + SESSION.headers.update({ + "Authorization": f"Bearer {OPENAI_API_KEY}", + "Content-Type": "application/json" + }) + retry = Retry( + total=10, + backoff_factor=1, + status_forcelist=[429, 500, 502, 503, 504], + allowed_methods=frozenset(["POST"]) + ) + adapter = HTTPAdapter(pool_connections=100, pool_maxsize=100, max_retries=retry) + SESSION.mount("https://", adapter) + SESSION.mount("http://", adapter) + + def get_language_files(languages: list[str] = None) -> dict[str, pathlib.Path]: files = {} @@ -111,7 +141,7 @@ def get_language_files(languages: list[str] = None) -> dict[str, pathlib.Path]: def evaluate_translation(source: str, old: str, new: str, language: str) -> str: try: - response = requests.post( + response = SESSION.post( "https://api.openai.com/v1/chat/completions", json={ "model": OPENAI_MODEL, @@ -120,13 +150,9 @@ def evaluate_translation(source: str, old: str, new: str, language: str) -> str: {"role": "user", "content": f"Source: {source}\n\nTranslation A: {old}\n\nTranslation B: {new}"}, ], "max_completion_tokens": 2048, - "reasoning_effort": "minimal", + "reasoning_effort": "medium", "verbosity": "low", }, - headers={ - "Authorization": f"Bearer {OPENAI_API_KEY}", - "Content-Type": "application/json", - }, timeout=(10, 60) ) @@ -148,7 +174,7 @@ def translate_phrase(text: str, language: str) -> str: prompt = OPENAI_PROMPT.format(language=language) try: - response = requests.post( + response = SESSION.post( "https://api.openai.com/v1/chat/completions", json={ "model": OPENAI_MODEL, @@ -160,10 +186,6 @@ def translate_phrase(text: str, language: str) -> str: "reasoning_effort": "minimal", "verbosity": "low", }, - headers={ - "Authorization": f"Bearer {OPENAI_API_KEY}", - "Content-Type": "application/json", - }, timeout=(10, 60) ) @@ -180,7 +202,6 @@ def translate_phrase(text: str, language: str) -> str: def translate_file(path: pathlib.Path, language: str, all_: bool, vet_translations: bool) -> None: tree = ET.parse(path) - root = tree.getroot() for context in root.findall("./context"): @@ -190,6 +211,8 @@ def translate_file(path: pathlib.Path, language: str, all_: bool, vet_translatio print(f"Context: {name.text}") + work_items = [] + for message in context.findall("./message"): source = message.find("source") translation = message.find("translation") @@ -210,24 +233,54 @@ def translate_file(path: pathlib.Path, language: str, all_: bool, vet_translatio continue text = cast(str, source.text) + numerus = (message.attrib.get("numerus") == "yes") or ("%n" in text) + old_translation = translation.text or "" + + work_items.append((message, translation, text, numerus, old_translation)) + + if not work_items: + continue + + def worker(item): + message, translation, text, numerus, old_translation = item llm_translation = translate_phrase(text, language) - print(f"Source: {text}\n" + - f"Current translation: {translation.text}\n" + - f"LLM translation: {llm_translation}") - if vet_translations: - old_translation = translation.text or "" - print(f"Comparison:\n" + - f"Current translation: {old_translation}\n" + - f"New translation: {llm_translation}") - best = evaluate_translation(text, old_translation, llm_translation, language) - print(f"Chosen translation: {best}") - translation.text = best + return (message, translation, text, numerus, best, True) + else: + return (message, translation, text, numerus, llm_translation, False) + + results = [] + with ThreadPoolExecutor(max_workers=100) as executor: + future_map = {executor.submit(worker, item): item for item in work_items} + for future in as_completed(future_map): + try: + results.append(future.result()) + except Exception as e: + item = future_map[future] + print(f"Task failed for '{item[2][:40]}...': {e}") + + for message, translation, text, numerus, chosen_translation, was_vetted in results: + print(f"Source: {text}\nCurrent translation: {translation.text}\nLLM translation: {chosen_translation}") + + if was_vetted: + print(f"Chosen translation: {chosen_translation}") + translation.text = chosen_translation else: translation.set("type", f"{OPENAI_MODEL}-generated") - translation.text = llm_translation + + if numerus: + translations = chosen_translation or (translation.text or text) + for child in list(translation): + translation.remove(child) + + translation.text = None + + ET.SubElement(translation, "numerusform").text = translations + ET.SubElement(translation, "numerusform").text = translations + else: + translation.text = chosen_translation with path.open("w", encoding="utf-8") as fp: fp.write('\n' + @@ -252,6 +305,8 @@ def main(): "If you don't have one go to: https://beta.openai.com/account/api-keys.") exit(1) + configure_session() + files = get_language_files(None if args.all_files else args.file) if args.file: diff --git a/selfdrive/ui/translations/main_ar.ts b/selfdrive/ui/translations/main_ar.ts index 51a4aec7c..e2338574f 100644 --- a/selfdrive/ui/translations/main_ar.ts +++ b/selfdrive/ui/translations/main_ar.ts @@ -88,23 +88,23 @@ Off - ุฅูŠู‚ุงู + ุฅูŠู‚ุงู Always - ุฏุงุฆู…ุงู‹ + ุฏุงุฆู…ู‹ุง Only Onroad - ูู‚ุท ุนู„ู‰ ุงู„ุทุฑูŠู‚ + ุนู„ู‰ ุงู„ุทุฑูŠู‚ ูู‚ุท Until Reboot - ุญุชู‰ ุฅุนุงุฏุฉ ุงู„ุชุดุบูŠู„ + ุญุชู‰ ุฅุนุงุฏุฉ ุงู„ุชุดุบูŠู„ Allow tethering with your data SIM and keep it active either while driving or continuously. - ุงู„ุณู…ุงุญ ุจุงู„ุชูˆุตูŠู„ ุจุงุณุชุฎุฏุงู… ุดุฑูŠุญุฉ ุงู„ุจูŠุงู†ุงุช ุงู„ุฎุงุตุฉ ุจูƒ ูˆุงู„ุญูุงุธ ุนู„ูŠู‡ุง ู†ุดุทุฉ ุฅู…ุง ุฃุซู†ุงุก ุงู„ู‚ูŠุงุฏุฉ ุฃูˆ ุจุดูƒู„ ู…ุณุชู…ุฑ. + ุงุณู…ุญ ุจุงู„ุฑุจุท ุนุจุฑ ุจุทุงู‚ุฉ ุจูŠุงู†ุงุชูƒ ูˆุฃุจู‚ูู‡ ู†ุดุทู‹ุง ุฅู…ุง ุฃุซู†ุงุก ุงู„ู‚ูŠุงุฏุฉ ุฃูˆ ุจุงุณุชู…ุฑุงุฑ. @@ -187,71 +187,71 @@ DeveloperSidebar m/sยฒ - m/sยฒ + ู…/ุซยฒ ft/sยฒ - ft/sยฒ + ู‚ุฏู…/ุซยฒ ACCEL - ุฃูƒุณูŠู„ + ุชุณุงุฑุน ACCEL JERK - ุชุณุงุฑุน ุงู„ุงุฑุชุฌุงุฌ + ุชุณุงุฑุน ู…ูุงุฌุฆ ACT ACCEL - ACT ACCEL + ACT ACCEL DANGER JERK - ุฎุทุฑ ุฃุญู…ู‚ + ุฎุทุฑ: ุงุฑุชุฌุงุฌ ู…ูุงุฌุฆ STEER DELAY - ุชุฃุฎูŠุฑ ุงู„ุชูˆุฌูŠู‡ + ุชุฃุฎู‘ุฑ ุงู„ุชูˆุฌูŠู‡ FRICTION - ุงู„ุงุญุชูƒุงูƒ + ุงุญุชูƒุงูƒ LAT ACCEL - ุงู„ุชุณุงุฑุน ุงู„ุฌุงู†ุจูŠ + ุงู„ุชุณุงุฑุน ุงู„ุฌุงู†ุจูŠ LATERAL % - ุฌุงู†ุจูŠ % + ุฌุงู†ุจูŠ % LONG % - ุทูˆูŠู„ % + ุงู„ุทูˆู„ูŠ % MAX ACCEL - ู…ุงูƒุณ ุฃูƒุณู„ + ุฃู‚ุตู‰ ุชุณุงุฑุน SPEED JERK - ุตุฏู…ุฉ ุงู„ุณุฑุนุฉ + ุงุฑุชุฌุงุฌ ุงู„ุณุฑุนุฉ STEER ANGLE - ุฒุงูˆูŠุฉ ุงู„ุชูˆุฌูŠู‡ + ุฒุงูˆูŠุฉ ุงู„ุชูˆุฌูŠู‡ STEER RATIO - ู†ุณุจุฉ ุงู„ุชูˆุฌูŠู‡ + ู†ุณุจุฉ ุงู„ุชูˆุฌูŠู‡ STEER STIFF - ุชูˆุฌูŠู‡ ุตู„ุจ + ุชูˆุฌูŠู‡ ู‚ุงุณู TORQUE % - TORQUE % + ุนุฒู… @@ -398,30 +398,30 @@ Pair your device with Konik connect (stable.konik.ai). - ู‚ู… ุจุฅู‚ุฑุงู† ุฌู‡ุงุฒูƒ ู…ุน Konik connect (stable.konik.ai). + ุฃู‚ุฑูู† ุฌู‡ุงุฒูƒ ู…ุน Konik connect (stable.konik.ai). DriveStats FROGPILOT - FROGPILOT + FROGPILOT Drives - ู…ุญุฑูƒุงุช + ุงู„ุฑุญู„ุงุช Hours - ุณุงุนุงุช + ุณุงุนุงุช KM - KM + ูƒู… Miles - ุฃู…ูŠุงู„ + ุฃู…ูŠุงู„ @@ -446,3841 +446,3952 @@ FrogPilotAnnotatedCameraWidget m/sยฒ - m/sยฒ + ู…/ุซยฒ meters - ู…ุชุฑ + ุฃู…ุชุงุฑ m/s - ู…/ุซ + ู…/ุซ km/h - km/h + ูƒู…/ุณ ft/sยฒ - ft/sยฒ + ู‚ุฏู…/ุซุงู†ูŠุฉยฒ feet - ุฃู‚ุฏุงู… + ุฃู‚ุฏุงู… mph - ู…ูŠู„ ููŠ ุงู„ุณุงุนุฉ + ู…ูŠู„/ุณุงุนุฉ Vehicle in blind spot - ู…ุฑูƒุจุฉ ููŠ ุงู„ู†ู‚ุทุฉ ุงู„ุนู…ูŠุงุก + ู…ุฑูƒุจุฉ ููŠ ุงู„ู†ู‚ุทุฉ ุงู„ุนู…ูŠุงุก PENDING - ู‚ูŠุฏ ุงู„ุงู†ุชุธุงุฑ + ู‚ูŠุฏ ุงู„ุงู†ุชุธุงุฑ LIMIT - ุงู„ุญุฏ ุงู„ุฃู‚ุตู‰ + ุงู„ุญุฏ FrogPilotConfirmationDialog Reboot required to take effect. - ุฅุนุงุฏุฉ ุงู„ุชุดุบูŠู„ ู…ุทู„ูˆุจุฉ ู„ุชูุนูŠู„ ุงู„ุชุบูŠูŠุฑุงุช. + ุฅุนุงุฏุฉ ุงู„ุชุดุบูŠู„ ู…ุทู„ูˆุจุฉ ู„ุชุตุจุญ ุงู„ุชุบูŠูŠุฑุงุช ุณุงุฑูŠุฉ ุงู„ู…ูุนูˆู„. Reboot Now - ุฃุนุฏ ุงู„ุชุดุบูŠู„ ุงู„ุขู† + ุฃุนุฏ ุงู„ุชุดุบูŠู„ ุงู„ุขู† Reboot Later - ุฅุนุงุฏุฉ ุงู„ุชุดุบูŠู„ ู„ุงุญู‚ู‹ุง + ุฃุนุฏ ุงู„ุชุดุบูŠู„ ู„ุงุญู‚ู‹ุง Yes - ู†ุนู… + ู†ุนู… No - ู„ุง + ู„ุง FrogPilotDataPanel - Delete Driving Footage and Data - ุญุฐู ู„ู‚ุทุงุช ุงู„ู‚ูŠุงุฏุฉ ูˆุงู„ุจูŠุงู†ุงุช + Delete Driving Data + ุญุฐู ุจูŠุงู†ุงุช ุงู„ู‚ูŠุงุฏุฉ DELETE - ุญุฐู + ุญุฐู - Deletes all stored driving footage and data from your device. Ideal for maintaining privacy or for simply freeing up space. - ูŠุญุฐู ุฌู…ูŠุน ู„ู‚ุทุงุช ุงู„ู‚ูŠุงุฏุฉ ูˆุงู„ุจูŠุงู†ุงุช ุงู„ู…ุฎุฒู†ุฉ ู…ู† ุฌู‡ุงุฒูƒ. ู…ุซุงู„ูŠ ู„ู„ุญูุงุธ ุนู„ู‰ ุงู„ุฎุตูˆุตูŠุฉ ุฃูˆ ู„ู…ุฌุฑุฏ ุชุญุฑูŠุฑ ู…ุณุงุญุฉ. + <b>Delete all stored driving footage and data</b> to free up space and clear private information. + <b>ุงุญุฐู ูƒู„ ู„ู‚ุทุงุช ุงู„ู‚ูŠุงุฏุฉ ูˆุงู„ุจูŠุงู†ุงุช ุงู„ู…ุฎุฒู†ุฉ</b> ู„ุชุญุฑูŠุฑ ุงู„ู…ุณุงุญุฉ ูˆู…ุณุญ ุงู„ู…ุนู„ูˆู…ุงุช ุงู„ุฎุงุตุฉ. - Are you sure you want to delete all of your driving footage and data? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุญุฐู ุฌู…ูŠุน ู„ู‚ุทุงุช ุงู„ู‚ูŠุงุฏุฉ ูˆุงู„ุจูŠุงู†ุงุช ุงู„ุฎุงุตุฉ ุจูƒุŸ + Delete all driving data and footage? + ุญุฐู ูƒู„ ุจูŠุงู†ุงุช ุงู„ู‚ูŠุงุฏุฉ ูˆุงู„ู„ู‚ุทุงุชุŸ Delete - ุญุฐู + ุญุฐู Deleting... - ุฌุงุฑู ุงู„ุญุฐู... + ุฌุงุฑู ุงู„ุญุฐู... Deleted! - ุชู… ุงู„ุญุฐู! + ุชู… ุงู„ุญุฐู! Delete Error Logs - ุญุฐู ุณุฌู„ุงุช ุงู„ุฃุฎุทุงุก + ุญุฐู ุณุฌู„ุงุช ุงู„ุฃุฎุทุงุก - Deletes all stored error logs from your device. Ideal for freeing up space. - ูŠุญุฐู ุฌู…ูŠุน ุณุฌู„ุงุช ุงู„ุฃุฎุทุงุก ุงู„ู…ุฎุฒู†ุฉ ู…ู† ุฌู‡ุงุฒูƒ. ู…ุซุงู„ูŠ ู„ุชุญุฑูŠุฑ ุงู„ู…ุณุงุญุฉ. + <b>Delete collected error logs</b> to free up space and clear old crash records. + <b>ุงุญุฐู ุณุฌู„ุงุช ุงู„ุฃุฎุทุงุก ุงู„ู…ุฌู…ุนุฉ</b> ู„ุชุญุฑูŠุฑ ู…ุณุงุญุฉ ูˆู…ุณุญ ุณุฌู„ุงุช ุงู„ุฃุนุทุงู„ ุงู„ู‚ุฏูŠู…ุฉ. - Are you sure you want to delete all of the error logs? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุญุฐู ุฌู…ูŠุน ุณุฌู„ุงุช ุงู„ุฃุฎุทุงุกุŸ + Delete all error logs? + ุญุฐู ุฌู…ูŠุน ุณุฌู„ุงุช ุงู„ุฃุฎุทุงุกุŸ Screen Recordings - ุชุณุฌูŠู„ุงุช ุงู„ุดุงุดุฉ + ุชุณุฌูŠู„ุงุช ุงู„ุดุงุดุฉ - Manage your screen recordings. - ุฅุฏุงุฑุฉ ุชุณุฌูŠู„ุงุช ุงู„ุดุงุดุฉ ุงู„ุฎุงุตุฉ ุจูƒ. + <b>Delete or rename screen recordings.</b> + <b>ุงุญุฐู ุฃูˆ ุฃุนุฏ ุชุณู…ูŠุฉ ุชุณุฌูŠู„ุงุช ุงู„ุดุงุดุฉ.</b> DELETE ALL - ุงุญุฐู ุงู„ูƒู„ + ุงุญุฐู ุงู„ูƒู„ RENAME - ุฅุนุงุฏุฉ ุชุณู…ูŠุฉ + ุฅุนุงุฏุฉ ุงู„ุชุณู…ูŠุฉ - Select a recording to delete - ุงุฎุชุฑ ุชุณุฌูŠู„ุงู‹ ู„ุญุฐูู‡ + Choose a screen recording to delete + ุงุฎุชุฑ ุชุณุฌูŠู„ ุดุงุดุฉ ู„ุญุฐูู‡ - Are you sure you want to delete this recording? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุญุฐู ู‡ุฐุง ุงู„ุชุณุฌูŠู„ุŸ + Delete this screen recording? + ุญุฐู ุชุณุฌูŠู„ ุงู„ุดุงุดุฉ ู‡ุฐุงุŸ - Are you sure you want to delete all screen recordings? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุญุฐู ุฌู…ูŠุน ุชุณุฌูŠู„ุงุช ุงู„ุดุงุดุฉุŸ + Delete all screen recordings? + ุญุฐู ุฌู…ูŠุน ุชุณุฌูŠู„ุงุช ุงู„ุดุงุดุฉุŸ Delete All - ุญุฐู ุงู„ูƒู„ + ุญุฐู ุงู„ูƒู„ - Select a recording to rename - ุญุฏุฏ ุชุณุฌูŠู„ุงู‹ ู„ุฅุนุงุฏุฉ ุชุณู…ูŠุชู‡ + Choose a screen recording to rename + ุงุฎุชุฑ ุชุณุฌูŠู„ ุดุงุดุฉ ู„ุฅุนุงุฏุฉ ุชุณู…ูŠุชู‡ Enter a new name - ุฃุฏุฎู„ ุงุณู…ู‹ุง ุฌุฏูŠุฏู‹ุง + ุฃุฏุฎู„ ุงุณู…ู‹ุง ุฌุฏูŠุฏู‹ุง - Rename Recording - ุฅุนุงุฏุฉ ุชุณู…ูŠุฉ ุงู„ุชุณุฌูŠู„ + Rename Screen Recording + ุฅุนุงุฏุฉ ุชุณู…ูŠุฉ ุชุณุฌูŠู„ ุงู„ุดุงุดุฉ - A recording with this name already exists. Please choose a different name. - ูŠูˆุฌุฏ ุจุงู„ูุนู„ ุชุณุฌูŠู„ ุจู‡ุฐุง ุงู„ุงุณู…. ูŠุฑุฌู‰ ุงุฎุชูŠุงุฑ ุงุณู… ู…ุฎุชู„ู. + Name already in use. Please choose a different name. + ุงู„ุงุณู… ู…ุณุชุฎุฏู… ุจุงู„ูุนู„. ูŠุฑุฌู‰ ุงุฎุชูŠุงุฑ ุงุณู…ู‹ุง ู…ุฎุชู„ูู‹ุง. Renaming... - ุฅุนุงุฏุฉ ุงู„ุชุณู…ูŠุฉ... + ุฅุนุงุฏุฉ ุงู„ุชุณู…ูŠุฉ... Renamed! - ุชู…ุช ุฅุนุงุฏุฉ ุงู„ุชุณู…ูŠุฉ! + ุชู…ุช ุฅุนุงุฏุฉ ุงู„ุชุณู…ูŠุฉ! FrogPilot Backups - ู†ุณุฎ FrogPilot ุงู„ุงุญุชูŠุงุทูŠุฉ + ู†ุณุฎ FrogPilot ุงู„ุงุญุชูŠุงุทูŠุฉ - Manage your FrogPilot backups. - ุฅุฏุงุฑุฉ ุงู„ู†ุณุฎ ุงู„ุงุญุชูŠุงุทูŠุฉ ู„ู€ FrogPilot. + <b>Create, delete, or restore FrogPilot backups.</b> + <b>ุฅู†ุดุงุก ู†ุณุฎ ุงุญุชูŠุงุทูŠุฉ ู„ู€ FrogPilot ุฃูˆ ุญุฐูู‡ุง ุฃูˆ ุงุณุชุนุงุฏุชู‡ุง.</b> BACKUP - ู†ุณุฎุฉ ุงุญุชูŠุงุทูŠุฉ + ู†ุณุฎุฉ ุงุญุชูŠุงุทูŠุฉ RESTORE - ุงุณุชุนุงุฏุฉ + ุงุณุชุนุงุฏุฉ - Name your backup - ู‚ู… ุจุชุณู…ูŠุฉ ุงู„ู†ุณุฎุฉ ุงู„ุงุญุชูŠุงุทูŠุฉ ุงู„ุฎุงุตุฉ ุจูƒ + Enter a name for this backup + ุฃุฏุฎู„ ุงุณู…ู‹ุง ู„ู‡ุฐุง ุงู„ู†ุณุฎ ุงู„ุงุญุชูŠุงุทูŠ - A backup with this name already exists. Please choose a different name. - ูŠูˆุฌุฏ ุจุงู„ูุนู„ ู†ุณุฎุฉ ุงุญุชูŠุงุทูŠุฉ ุจู‡ุฐุง ุงู„ุงุณู…. ูŠุฑุฌู‰ ุงุฎุชูŠุงุฑ ุงุณู… ู…ุฎุชู„ู. - - - Do you want to compress this backup? This will take a few minutes, but the final result will be smaller and run in the background. - ู‡ู„ ุชุฑูŠุฏ ุถุบุท ู‡ุฐุง ุงู„ู†ุณุฎ ุงู„ุงุญุชูŠุงุทูŠุŸ ุณูŠุณุชุบุฑู‚ ุฐู„ูƒ ุจุถุน ุฏู‚ุงุฆู‚ุŒ ู„ูƒู† ุงู„ู†ุชูŠุฌุฉ ุงู„ู†ู‡ุงุฆูŠุฉ ุณุชูƒูˆู† ุฃุตุบุฑ ูˆุณุชุนู…ู„ ููŠ ุงู„ุฎู„ููŠุฉ. + Compress this backup? This will save space and run in the background but take a bit longer. + ุถุบุท ู‡ุฐุง ุงู„ู†ุณุฎ ุงู„ุงุญุชูŠุงุทูŠุŸ ุณูŠูˆูุฑ ู‡ุฐุง ู…ุณุงุญุฉ ูˆูŠุนู…ู„ ููŠ ุงู„ุฎู„ููŠุฉ ู„ูƒู†ู‡ ุณูŠุณุชุบุฑู‚ ูˆู‚ุชู‹ุง ุฃุทูˆู„ ู‚ู„ูŠู„ู‹ุง. Backing up... - ุฌุงุฑู ุงู„ู†ุณุฎ ุงู„ุงุญุชูŠุงุทูŠ... + ุฌุงุฑู ุงู„ู†ุณุฎ ุงู„ุงุญุชูŠุงุทูŠ... Compressing... - ุฌุงุฑู ุงู„ุถุบุท... + ุฌุงุฑู ุงู„ุถุบุท... Backup created! - ุชู… ุฅู†ุดุงุก ุงู„ู†ุณุฎุฉ ุงู„ุงุญุชูŠุงุทูŠุฉ! + ุชู… ุฅู†ุดุงุก ุงู„ู†ุณุฎุฉ ุงู„ุงุญุชูŠุงุทูŠุฉ! - Select a backup to delete - ุญุฏุฏ ู†ุณุฎุฉ ุงุญุชูŠุงุทูŠุฉ ู„ุญุฐูู‡ุง + Choose a FrogPilot backup to delete + ุงุฎุชุฑ ู†ุณุฎุฉ ุงุญุชูŠุงุทูŠุฉ ู…ู† FrogPilot ู„ุญุฐูู‡ุง - Are you sure you want to delete this backup? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุญุฐู ู‡ุฐู‡ ุงู„ู†ุณุฎุฉ ุงู„ุงุญุชูŠุงุทูŠุฉุŸ + Delete this backup? + ุญุฐู ู‡ุฐุง ุงู„ู†ุณุฎ ุงู„ุงุญุชูŠุงุทูŠุŸ - Are you sure you want to delete all FrogPilot backups? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุญุฐู ุฌู…ูŠุน ู†ุณุฎ FrogPilot ุงู„ุงุญุชูŠุงุทูŠุฉุŸ + Delete all backups? + ุญุฐู ุฌู…ูŠุน ุงู„ู†ุณุฎ ุงู„ุงุญุชูŠุงุทูŠุฉุŸ - Select a restore point - ุญุฏุฏ ู†ู‚ุทุฉ ุงุณุชุนุงุฏุฉ + Choose a backup to restore + ุงุฎุชุฑ ู†ุณุฎุฉ ุงุญุชูŠุงุทูŠุฉ ู„ุงุณุชุนุงุฏุชู‡ุง - Are you sure you want to restore this version of FrogPilot? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุงุณุชุนุงุฏุฉ ู‡ุฐุง ุงู„ุฅุตุฏุงุฑ ู…ู† FrogPilotุŸ + Restore this backup? + ู‡ู„ ุชุฑูŠุฏ ุงุณุชุนุงุฏุฉ ู‡ุฐุง ุงู„ู†ุณุฎุฉ ุงู„ุงุญุชูŠุงุทูŠุฉุŸ Restore - ุงุณุชุนุงุฏุฉ + ุงุณุชุนุงุฏุฉ Restoring... - ุงุณุชุนุงุฏุฉ... + ุฌุงุฑู ุงู„ุงุณุชุนุงุฏุฉ... Extracting... - ุฌุงุฑู ุงู„ุงุณุชุฎุฑุงุฌ... + ุฌุงุฑู ุงู„ุงุณุชุฎุฑุงุฌ... Restored! - !ุชู…ุช ุงู„ุงุณุชุนุงุฏุฉ + ุชู…ู‘ุช ุงู„ุงุณุชุนุงุฏุฉ! Rebooting... - ุฅุนุงุฏุฉ ุงู„ุชุดุบูŠู„... + ุฅุนุงุฏุฉ ุงู„ุชุดุบูŠู„... Toggle Backups - ุชุจุฏูŠู„ ุงู„ู†ุณุฎ ุงู„ุงุญุชูŠุงุทูŠุฉ + ุชุจุฏูŠู„ ุงู„ู†ุณุฎ ุงู„ุงุญุชูŠุงุทูŠุฉ - Manage your toggle backups. - ุฅุฏุงุฑุฉ ุงู„ู†ุณุฎ ุงู„ุงุญุชูŠุงุทูŠุฉ ู„ู„ุชุจุฏูŠู„. + <b>Create, delete, or restore toggle backups.</b> + <b>ุฃู†ุดุฆ ุฃูˆ ุงุญุฐู ุฃูˆ ุงุณุชุนุฏ ู†ูุณุฎ ุงู„ุชุจุฏูŠู„ ุงู„ุงุญุชูŠุงุทูŠุฉ.</b> - Name your toggle backup - ู‚ู… ุจุชุณู…ูŠุฉ ุงู„ู†ุณุฎุฉ ุงู„ุงุญุชูŠุงุทูŠุฉ ู„ู„ุชุจุฏูŠู„ ุงู„ุฎุงุต ุจูƒ - - - A toggle backup with this name already exists. Please choose a different name. - ูŠูˆุฌุฏ ุจุงู„ูุนู„ ู†ุณุฎุฉ ุงุญุชูŠุงุทูŠุฉ ุจู‡ุฐุง ุงู„ุงุณู…. ูŠุฑุฌู‰ ุงุฎุชูŠุงุฑ ุงุณู… ู…ุฎุชู„ู. - - - Select a toggle backup to delete - ุญุฏุฏ ู†ุณุฎุฉ ุงุญุชูŠุงุทูŠุฉ ู„ู„ุชุจุฏูŠู„ ู„ุญุฐูู‡ุง - - - Are you sure you want to delete this toggle backup? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุญุฐู ู‡ุฐุง ุงู„ู†ุณุฎ ุงู„ุงุญุชูŠุงุทูŠ ู„ู„ุชุจุฏูŠู„ุŸ - - - Are you sure you want to delete all toggle backups? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุญุฐู ุฌู…ูŠุน ุงู„ู†ุณุฎ ุงู„ุงุญุชูŠุงุทูŠุฉ ู„ู„ุชุจุฏูŠู„ุŸ - - - Select a toggle restore point - ุญุฏุฏ ู†ู‚ุทุฉ ุงุณุชุนุงุฏุฉ ุงู„ุชุจุฏูŠู„ - - - Are you sure you want to restore this toggle backup? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุงุณุชุนุงุฏุฉ ู‡ุฐุง ุงู„ู†ุณุฎ ุงู„ุงุญุชูŠุงุทูŠ ู„ู„ุชุจุฏูŠู„ุŸ + Choose a backup to delete + ุงุฎุชุฑ ู†ุณุฎุฉ ุงุญุชูŠุงุทูŠุฉ ู„ุญุฐูู‡ุง FrogPilotDevicePanel Device Settings - ุฅุนุฏุงุฏุงุช ุงู„ุฌู‡ุงุฒ + ุฅุนุฏุงุฏุงุช ุงู„ุฌู‡ุงุฒ - Settings that control device behavior. - ุงู„ุฅุนุฏุงุฏุงุช ุงู„ุชูŠ ุชุชุญูƒู… ููŠ ุณู„ูˆูƒ ุงู„ุฌู‡ุงุฒ. - - - Battery Shutdown Threshold - ุนุชุจุฉ ุฅูŠู‚ุงู ุชุดุบูŠู„ ุงู„ุจุทุงุฑูŠุฉ - - - Automatically shut down the device when the vehicle's battery voltage reaches the set threshold preventing excessive battery drain to protect the battery. - ุฅูŠู‚ุงู ุชุดุบูŠู„ ุงู„ุฌู‡ุงุฒ ุชู„ู‚ุงุฆูŠู‹ุง ุนู†ุฏู…ุง ูŠุตู„ ุฌู‡ุฏ ุจุทุงุฑูŠุฉ ุงู„ุณูŠุงุฑุฉ ุฅู„ู‰ ุงู„ุนุชุจุฉ ุงู„ู…ุญุฏุฏุฉ ู„ู…ู†ุน ุงุณุชู†ุฒุงู ุงู„ุจุทุงุฑูŠุฉ ุงู„ู…ูุฑุท ู„ุญู…ุงูŠุฉ ุงู„ุจุทุงุฑูŠุฉ. + <b>Settings that control how the device runs, powers off, and manages driving data.</b> + <b>ุฅุนุฏุงุฏุงุช ุชุชุญูƒู… ููŠ ูƒูŠููŠุฉ ุนู…ู„ ุงู„ุฌู‡ุงุฒ ูˆุฅูŠู‚ุงูู‡ ูˆุฅุฏุงุฑุฉ ุจูŠุงู†ุงุช ุงู„ู‚ูŠุงุฏุฉ.</b> Device Shutdown Timer - ู…ุคู‚ุช ุฅูŠู‚ุงู ุชุดุบูŠู„ ุงู„ุฌู‡ุงุฒ + ู…ุคู‚ู‘ุช ุฅูŠู‚ุงู ุชุดุบูŠู„ ุงู„ุฌู‡ุงุฒ - How long the device stays on for after you go offroad. - ูƒู… ู…ู† ุงู„ูˆู‚ุช ูŠุจู‚ู‰ ุงู„ุฌู‡ุงุฒ ู‚ูŠุฏ ุงู„ุชุดุบูŠู„ ุจุนุฏ ุงู„ุฎุฑูˆุฌ ุนู† ุงู„ุทุฑูŠู‚. + <b>Keep the device on for the set amount of time after a drive</b> before it shuts down automatically. + <b>ุฃุจู‚ู ุงู„ุฌู‡ุงุฒ ูŠุนู…ู„ ู„ู…ุฏุฉ ุงู„ูˆู‚ุช ุงู„ู…ุญุฏุฏ ุจุนุฏ ุงู„ู‚ูŠุงุฏุฉ</b> ู‚ุจู„ ุฃู† ูŠู†ุทูุฆ ุชู„ู‚ุงุฆูŠู‹ุง. - Disable Data Logging - ุชุนุทูŠู„ ุชุณุฌูŠู„ ุงู„ุจูŠุงู†ุงุช + Disable Logging + ุชุนุทูŠู„ ุงู„ุชุณุฌูŠู„ WARNING: This will prevent your drives from being recorded and all data will be unobtainable! - ุชุญุฐูŠุฑ: ุณูŠู…ู†ุน ู‡ุฐุง ุชุณุฌูŠู„ ู…ุญุฑูƒุงุช ุงู„ุฃู‚ุฑุงุต ุงู„ุฎุงุตุฉ ุจูƒ ูˆุณุชุตุจุญ ุฌู…ูŠุน ุงู„ุจูŠุงู†ุงุช ุบูŠุฑ ู‚ุงุจู„ุฉ ู„ู„ุงุณุชุฑุฏุงุฏ! + ุชุญุฐูŠุฑ: ุณูŠู…ู†ุน ู‡ุฐุง ุชุณุฌูŠู„ ุฑุญู„ุงุชูƒ ูˆุณูŠุตุจุญ ุฌู…ูŠุน ุงู„ุจูŠุงู†ุงุช ุบูŠุฑ ู‚ุงุจู„ุฉ ู„ู„ุงุณุชุฑุฏุงุฏ! - Disable all data logging to improve privacy. - ุชุนุทูŠู„ ุฌู…ูŠุน ุชุณุฌูŠู„ุงุช ุงู„ุจูŠุงู†ุงุช ู„ุชุญุณูŠู† ุงู„ุฎุตูˆุตูŠุฉ. + <b>Prevent the device from saving driving data.</b> + <b>ู…ู†ุน ุงู„ุฌู‡ุงุฒ ู…ู† ุญูุธ ุจูŠุงู†ุงุช ุงู„ู‚ูŠุงุฏุฉ.</b> - Disable Data Uploads - ุชุนุทูŠู„ ุชุญู…ูŠู„ ุงู„ุจูŠุงู†ุงุช + Disable Uploads + ุชุนุทูŠู„ ุงู„ุชุญู…ูŠู„ุงุช - WARNING: This will prevent your drives from appearing on <b>comma connect</b> which may impact debugging and support! - ุชุญุฐูŠุฑ: ุณูŠู…ู†ุน ู‡ุฐุง ุธู‡ูˆุฑ ู…ุญุฑูƒุงุช ุงู„ุฃู‚ุฑุงุต ุงู„ุฎุงุตุฉ ุจูƒ ุนู„ู‰ <b>comma connect</b> ู…ู…ุง ู‚ุฏ ูŠุคุซุฑ ุนู„ู‰ ุงู„ุชุตุญูŠุญ ูˆุงู„ุฏุนู…! + WARNING: This will prevent your drives from being uploaded to <b>comma connect</b> which will impact debugging and official support from comma! + ุชุญุฐูŠุฑ: ุณูŠู…ู†ุน ู‡ุฐุง ุฑูุน ุฑุญู„ุงุชูƒ ุฅู„ู‰ <b>comma connect</b> ู…ู…ุง ุณูŠุคุซุฑ ุนู„ู‰ ุชุชุจุน ุงู„ุฃุฎุทุงุก ูˆุงู„ุฏุนู… ุงู„ุฑุณู…ูŠ ู…ู† comma! - Prevent the device from sending any data to <b>comma</b>'s servers. - ู…ู†ุน ุงู„ุฌู‡ุงุฒ ู…ู† ุฅุฑุณุงู„ ุฃูŠ ุจูŠุงู†ุงุช ุฅู„ู‰ ุฎูˆุงุฏู… <b>comma</b>. + <b>Prevent the device from uploading driving data.</b> + <b>ู…ู†ุน ุงู„ุฌู‡ุงุฒ ู…ู† ุฑูุน ุจูŠุงู†ุงุช ุงู„ู‚ูŠุงุฏุฉ.</b> - Increase Thermal Safety Limit - ุฒูŠุงุฏุฉ ุญุฏ ุงู„ุฃู…ุงู† ุงู„ุญุฑุงุฑูŠ + High-Quality Recording + ุชุณุฌูŠู„ ุนุงู„ูŠ ุงู„ุฌูˆุฏุฉ - WARNING: This can damage your device by exceeding safe temperature limits! - ุชุญุฐูŠุฑ: ู‚ุฏ ูŠุชุณุจุจ ู‡ุฐุง ููŠ ุฅุชู„ุงู ุฌู‡ุงุฒูƒ ุจุชุฌุงูˆุฒ ุญุฏูˆุฏ ุฏุฑุฌุฉ ุงู„ุญุฑุงุฑุฉ ุงู„ุขู…ู†ุฉ! + <b>Save drive footage in higher video quality.</b> + <b>ุงุญูุธ ู„ู‚ุทุงุช ุงู„ู‚ูŠุงุฏุฉ ุจุฌูˆุฏุฉ ููŠุฏูŠูˆ ุฃุนู„ู‰.</b> - Allow the device to run hotter than comma recommended limit. - ุงู„ุณู…ุงุญ ู„ู„ุฌู‡ุงุฒ ุจุงู„ุนู…ู„ ุจุฏุฑุฌุฉ ุญุฑุงุฑุฉ ุฃุนู„ู‰ ู…ู† ุงู„ุญุฏ ุงู„ู…ูˆุตู‰ ุจู‡ ู…ู† ู‚ุจู„ ุงู„ุดุฑูƒุฉ. + Low-Voltage Cutoff + ุงู„ู‚ุทุน ุนู†ุฏ ุงู„ุฌู‡ุฏ ุงู„ู…ู†ุฎูุถ - Use Konik's Server Instead of comma's - ุงุณุชุฎุฏู… ุฎุงุฏู… Konik ุจุฏู„ุงู‹ ู…ู† comma's + <b>While parked, if the battery voltage falls below the set level, the device shuts down</b> to prevent excessive battery drain. + <b>ุฃุซู†ุงุก ุฅูŠู‚ุงู ุงู„ุณูŠุงุฑุฉุŒ ุฅุฐุง ุงู†ุฎูุถ ุฌู‡ุฏ ุงู„ุจุทุงุฑูŠุฉ ุนู† ุงู„ู…ุณุชูˆู‰ ุงู„ู…ุญุฏุฏุŒ ูุณูŠุชู… ุฅูŠู‚ุงู ุชุดุบูŠู„ ุงู„ุฌู‡ุงุฒ</b> ู„ู…ู†ุน ุงุณุชู†ุฒุงู ุงู„ุจุทุงุฑูŠุฉ ุงู„ู…ูุฑุท. - Upload your driving data to <b>connect.konik.ai</b> instead of <b>connect.comma.ai</b>. - ู‚ู… ุจุชุญู…ูŠู„ ุจูŠุงู†ุงุช ุงู„ู‚ูŠุงุฏุฉ ุงู„ุฎุงุตุฉ ุจูƒ ุฅู„ู‰ <b>connect.konik.ai</b> ุจุฏู„ุงู‹ ู…ู† <b>connect.comma.ai</b>. + Raise Temperature Limits + ุฑูุน ุญุฏูˆุฏ ุงู„ุญุฑุงุฑุฉ + + + WARNING: Running at higher temperatures may damage your device! + ุชุญุฐูŠุฑ: ุงู„ุชุดุบูŠู„ ุนู†ุฏ ุฏุฑุฌุงุช ุญุฑุงุฑุฉ ุฃุนู„ู‰ ู‚ุฏ ูŠุชู„ู ุฌู‡ุงุฒูƒ! + + + <b>Allow the device to run at higher temperatures</b> before throttling or shutting down. Use only if you understand the risks! + <b>ุงุณู…ุญ ู„ู„ุฌู‡ุงุฒ ุจุงู„ุนู…ู„ ููŠ ุฏุฑุฌุงุช ุญุฑุงุฑุฉ ุฃุนู„ู‰</b> ู‚ุจู„ ุชู‚ู„ูŠู„ ุงู„ุฃุฏุงุก ุฃูˆ ุงู„ุฅูŠู‚ุงู. ุงุณุชุฎุฏู… ู‡ุฐุง ูู‚ุท ุฅุฐุง ูƒู†ุช ุชูู‡ู… ุงู„ู…ุฎุงุทุฑ! + + + Use Konik Server + ุงุณุชุฎุฏู… Konik Server + + + <b>Upload driving data to "connect.konik.ai" instead of "connect.comma.ai".</b> + <b>ุญู…ู‘ู„ ุจูŠุงู†ุงุช ุงู„ู‚ูŠุงุฏุฉ ุฅู„ู‰ "connect.konik.ai" ุจุฏู„ู‹ุง ู…ู† "connect.comma.ai".</b> Screen Settings - ุฅุนุฏุงุฏุงุช ุงู„ุดุงุดุฉ + ุฅุนุฏุงุฏุงุช ุงู„ุดุงุดุฉ - Settings that control screen behavior. - ุงู„ุฅุนุฏุงุฏุงุช ุงู„ุชูŠ ุชุชุญูƒู… ููŠ ุณู„ูˆูƒ ุงู„ุดุงุดุฉ. + <b>Settings that control screen brightness, screen recording, and timeout duration.</b> + <b>ุฅุนุฏุงุฏุงุช ุชุชุญูƒู… ููŠ ุณุทูˆุน ุงู„ุดุงุดุฉ ูˆุชุณุฌูŠู„ ุงู„ุดุงุดุฉ ูˆู…ุฏุฉ ุงู†ุชู‡ุงุก ุงู„ู…ู‡ู„ุฉ.</b> Screen Brightness (Offroad) - ุณุทูˆุน ุงู„ุดุงุดุฉ (ุนู„ู‰ ุงู„ุทุฑู‚ ุงู„ูˆุนุฑุฉ) + ุณุทูˆุน ุงู„ุดุงุดุฉ (ุฎุงุฑุฌ ุงู„ุทุฑูŠู‚) - The screen brightness when not driving. - ุณุทูˆุน ุงู„ุดุงุดุฉ ุนู†ุฏ ุนุฏู… ุงู„ู‚ูŠุงุฏุฉ. + <b>The screen brightness while not driving.</b> + <b>ุณุงุทุน ุงู„ุดุงุดุฉ ุฃุซู†ุงุก ุนุฏู… ุงู„ู‚ูŠุงุฏุฉ.</b> Screen Brightness (Onroad) - ุณุทูˆุน ุงู„ุดุงุดุฉ (ุนู„ู‰ ุงู„ุทุฑูŠู‚) + ุณุทูˆุน ุงู„ุดุงุดุฉ (ุนู„ู‰ ุงู„ุทุฑูŠู‚) - The screen brightness while driving. - ุณุทูˆุน ุงู„ุดุงุดุฉ ุฃุซู†ุงุก ุงู„ู‚ูŠุงุฏุฉ. + <b>The screen brightness while driving.</b> + <b>ุณุทูˆุน ุงู„ุดุงุดุฉ ุฃุซู†ุงุก ุงู„ู‚ูŠุงุฏุฉ.</b> Screen Recorder - ู…ุณุฌู„ ุงู„ุดุงุดุฉ + ู…ุณุฌู„ ุงู„ุดุงุดุฉ - Enable a button in the driving screen to record the screen. - ุชู…ูƒูŠู† ุฒุฑ ููŠ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ ู„ุชุณุฌูŠู„ ุงู„ุดุงุดุฉ. + <b>Add a button to the driving screen to record the display.</b> + <b>ุฃุถู ุฒุฑู‹ุง ุฅู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ ู„ุชุณุฌูŠู„ ุงู„ุนุฑุถ.</b> Screen Timeout (Offroad) - ู…ู‡ู„ุฉ ุงู„ุดุงุดุฉ (ุฎุงุฑุฌ ุงู„ุทุฑูŠู‚) + ู…ู‡ู„ุฉ ุฅูŠู‚ุงู ุงู„ุดุงุดุฉ (ุฎุงุฑุฌ ุงู„ุทุฑูŠู‚) - How long it takes for the screen to turn off when not driving. - ูƒู… ู…ู† ุงู„ูˆู‚ุช ูŠุณุชุบุฑู‚ ุญุชู‰ ุชู†ุทูุฆ ุงู„ุดุงุดุฉ ุนู†ุฏ ุนุฏู… ุงู„ู‚ูŠุงุฏุฉ. + <b>How long the screen stays on after being tapped while not driving.</b> + <b>ู…ุฏุฉ ุจู‚ุงุก ุงู„ุดุงุดุฉ ู‚ูŠุฏ ุงู„ุชุดุบูŠู„ ุจุนุฏ ู„ู…ุณู‡ุง ุฃุซู†ุงุก ุนุฏู… ุงู„ู‚ูŠุงุฏุฉ.</b> Screen Timeout (Onroad) - ู…ู‡ู„ุฉ ุงู„ุดุงุดุฉ (ุฃุซู†ุงุก ุงู„ู‚ูŠุงุฏุฉ) + ู…ู‡ู„ุฉ ุฅูŠู‚ุงู ุงู„ุดุงุดุฉ (ุนู„ู‰ ุงู„ุทุฑูŠู‚) - How long it takes for the screen to turn off while driving. - ูƒู… ู…ู† ุงู„ูˆู‚ุช ูŠุณุชุบุฑู‚ ู„ุฅุทูุงุก ุงู„ุดุงุดุฉ ุฃุซู†ุงุก ุงู„ู‚ูŠุงุฏุฉ. + <b>How long the screen stays on after being tapped while driving.</b> + <b>ู…ุฏุฉ ุจู‚ุงุก ุงู„ุดุงุดุฉ ู‚ูŠุฏ ุงู„ุชุดุบูŠู„ ุจุนุฏ ู„ู…ุณู‡ุง ุฃุซู†ุงุก ุงู„ู‚ูŠุงุฏุฉ.</b> + + + Standby Mode + ูˆุถุน ุงู„ุงุณุชุนุฏุงุฏ + + + <b>Turn the screen off while driving and automatically wake it up for alerts or engagement state changes.</b> + <b>ุฃุทูุฆ ุงู„ุดุงุดุฉ ุฃุซู†ุงุก ุงู„ู‚ูŠุงุฏุฉ ูˆุฃุนุฏ ุชุดุบูŠู„ู‡ุง ุชู„ู‚ุงุฆูŠู‹ุง ุนู†ุฏ ูˆุฌูˆุฏ ุชู†ุจูŠู‡ุงุช ุฃูˆ ุชุบูŠูŠุฑุงุช ููŠ ุญุงู„ุฉ ุงู„ุชูุนูŠู„.</b> 5 mins - ูฅ ุฏู‚ุงุฆู‚ + 5 ุฏู‚ุงุฆู‚ mins - ุฏู‚ุงุฆู‚ + ุฏู‚ุงุฆู‚ hour - ุณุงุนุฉ + ุณุงุนุฉ hours - ุณุงุนุงุช + ุณุงุนุงุช - Only Disable While Onroad - ุชุนุทูŠู„ ูู‚ุท ุฃุซู†ุงุก ุงู„ู‚ูŠุงุฏุฉ ุนู„ู‰ ุงู„ุทุฑูŠู‚ + Disable Onroad Only + ุชุนุทูŠู„ ูˆุถุน ุงู„ุทุฑูŠู‚ ูู‚ุท volts - ููˆู„ุชุงุช + ููˆู„ุช Screen Off - ุฅูŠู‚ุงู ุงู„ุดุงุดุฉ + ุฅูŠู‚ุงู ุงู„ุดุงุดุฉ Auto - ุชู„ู‚ุงุฆูŠ + ุชู„ู‚ุงุฆูŠ Start Recording - ุงุจุฏุฃ ุงู„ุชุณุฌูŠู„ + ุจุฏุก ุงู„ุชุณุฌูŠู„ Stop Recording - ุฅูŠู‚ุงู ุงู„ุชุณุฌูŠู„ + ุฅูŠู‚ุงู ุงู„ุชุณุฌูŠู„ seconds - ุซูˆุงู†ู - - - High Bitrate Recording - ุชุณุฌูŠู„ ุจู…ุนุฏู„ ุจุช ู…ุฑุชูุน - - - Record driving footage at double the standard bitrate for improved video quality in driving logs. - ุชุณุฌูŠู„ ู„ู‚ุทุงุช ุงู„ู‚ูŠุงุฏุฉ ุจู…ุนุฏู„ ุจุชุงุช ู…ุถุงุนู ุนู† ุงู„ู…ุนุฏู„ ุงู„ู‚ูŠุงุณูŠ ู„ุชุญุณูŠู† ุฌูˆุฏุฉ ุงู„ููŠุฏูŠูˆ ููŠ ุณุฌู„ุงุช ุงู„ู‚ูŠุงุฏุฉ. + ุซูˆุงู†ู FrogPilotLateralPanel Advanced Lateral Tuning - ุงู„ุถุจุท ุงู„ุฌุงู†ุจูŠ ุงู„ู…ุชู‚ุฏู… + ุงู„ุถุจุท ุงู„ุฌุงู†ุจูŠ ุงู„ู…ุชู‚ุฏู… - Advanced settings for fine-tuning openpilot's lateral controls. - ุงู„ุฅุนุฏุงุฏุงุช ุงู„ู…ุชู‚ุฏู…ุฉ ู„ุถุจุท ุงู„ุชุญูƒู… ุงู„ุฌุงู†ุจูŠ ููŠ openpilot. + <b>Advanced steering control changes to fine-tune how openpilot drives.</b> + <b>ุชุบูŠูŠุฑุงุช ู…ุชู‚ุฏู…ุฉ ููŠ ุงู„ุชุญูƒู… ุจุงู„ุชูˆุฌูŠู‡ ู„ุถุจุท ุทุฑูŠู‚ุฉ ู‚ูŠุงุฏุฉ openpilot ุจุฏู‚ุฉ.</b> Actuator Delay (Default: %1) - ุชุฃุฎูŠุฑ ุงู„ู…ุดุบู„ (ุงู„ุงูุชุฑุงุถูŠ: %1) + ุชุฃุฎูŠุฑ ุงู„ู…ุดุบู‘ู„ (ุงู„ุงูุชุฑุงุถูŠ: %1) Actuator Delay - ุชุฃุฎูŠุฑ ุงู„ู…ุดุบู„ + ุชุฃุฎูŠุฑ ุงู„ู…ุดุบู‘ู„ - How long the steering wheel takes to respond to commands. Higher values account for slower steering; lower values for quicker response. - ุงู„ู…ุฏุฉ ุงู„ุชูŠ ูŠุณุชุบุฑู‚ู‡ุง ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ ู„ู„ุงุณุชุฌุงุจุฉ ู„ู„ุฃูˆุงู…ุฑ. ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุดูŠุฑ ุฅู„ู‰ ุชูˆุฌูŠู‡ ุฃุจุทุฃุ› ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุชุดูŠุฑ ุฅู„ู‰ ุงุณุชุฌุงุจุฉ ุฃุณุฑุน. + <b>The time between openpilot's steering command and the vehicle's response.</b> Increase if the vehicle reacts late; decrease if it feels jumpy. Auto-learned by default. + <b>ุงู„ูˆู‚ุช ุจูŠู† ุฃู…ุฑ ุชูˆุฌูŠู‡ openpilot ูˆุงุณุชุฌุงุจุฉ ุงู„ุณูŠุงุฑุฉ.</b> ุฒูุฏู‡ ุฅุฐุง ูƒุงู†ุช ุงุณุชุฌุงุจุฉ ุงู„ุณูŠุงุฑุฉ ู…ุชุฃุฎุฑุฉุ› ุฎูู‘ูุถู‡ ุฅุฐุง ุจุฏุง ุงู„ุณู„ูˆูƒ ู…ุชู‚ู„ุจู‹ุง. ูŠูุชุนู„ู‘ูŽู… ุชู„ู‚ุงุฆูŠู‹ุง ุงูุชุฑุงุถูŠู‹ุง. Friction (Default: %1) - ุงู„ุงุญุชูƒุงูƒ (ุงู„ุงูุชุฑุงุถูŠ: %1) + ุงู„ุงุญุชูƒุงูƒ (ุงู„ุฅุนุฏุงุฏ ุงู„ุงูุชุฑุงุถูŠ: %1) Friction - ุงุญุชูƒุงูƒ + ุงู„ุงุญุชูƒุงูƒ - Adjust steering resistance. Higher values feel more stable but heavier; lower values feel lighter but more sensitive. - ุถุจุท ู…ู‚ุงูˆู…ุฉ ุงู„ุชูˆุฌูŠู‡. ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุดุนุฑ ุจุฃู†ู‡ุง ุฃูƒุซุฑ ุงุณุชู‚ุฑุงุฑู‹ุง ูˆู„ูƒู†ู‡ุง ุฃุซู‚ู„ุ› ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุชุดุนุฑ ุจุฃู†ู‡ุง ุฃุฎู ูˆู„ูƒู†ู‡ุง ุฃูƒุซุฑ ุญุณุงุณูŠุฉ. + <b>Compensates for steering friction.</b> Increase if the wheel sticks near center; decrease if it jitters. Auto-learned by default. + <b>ูŠุนูˆู‘ุถ ุงุญุชูƒุงูƒ ุงู„ุชูˆุฌูŠู‡.</b> ุฒุฏ ุฅุฐุง ูƒุงู† ุงู„ู…ู‚ูˆุฏ ูŠุนู„ู‚ ู‚ุฑุจ ุงู„ู…ู†ุชุตูุ› ูˆุฎูู‘ุถ ุฅุฐุง ูƒุงู† ูŠุฑุชุฌู. ูŠุชุนู„ู‘ู… ุชู„ู‚ุงุฆูŠู‹ุง ุงูุชุฑุงุถูŠู‹ุง. Kp Factor (Default: %1) - ุนุงู…ู„ Kp (ุงู„ุงูุชุฑุงุถูŠ: %1) + ุนุงู…ู„ Kp (ุงู„ุงูุชุฑุงุถูŠ: %1) Kp Factor - ุนุงู…ู„ Kp + ุนุงู…ู„ Kp - How aggressively openpilot corrects steering. Higher values respond faster but may feel jerky; lower values are smoother but slower. - ู…ุฏู‰ ุดุฏุฉ ุชุตุญูŠุญ openpilot ู„ู„ุชูˆุฌูŠู‡. ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุณุชุฌูŠุจ ุจุดูƒู„ ุฃุณุฑุน ูˆู„ูƒู† ู‚ุฏ ุชุดุนุฑ ุจุฃู†ู‡ุง ู…ุชู‚ุทุนุฉุ› ุงู„ู‚ูŠู… ุงู„ุฃุฏู†ู‰ ุชูƒูˆู† ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆู„ูƒู† ุฃุจุทุฃ. + <b>How strongly openpilot corrects lane position.</b> Higher is tighter but twitchier; lower is smoother but slower. Auto-learned by default. + <b>ู…ุฏู‰ ู‚ูˆุฉ ุชุตุญูŠุญ openpilot ู„ูˆุถุนูŠุฉ ุงู„ู…ุณุงุฑ.</b> ู‚ูŠู…ุฉ ุฃุนู„ู‰ ุฃุดุฏู‘ ู„ูƒู†ู‡ุง ุฃูƒุซุฑ ุงุฑุชุนุงุดู‹ุงุ› ู‚ูŠู…ุฉ ุฃู‚ู„ ุฃูƒุซุฑ ุณู„ุงุณุฉ ู„ูƒู†ู‡ุง ุฃุจุทุฃ. ูŠุชุนู„ู‘ู… ุชู„ู‚ุงุฆูŠู‹ุง ุงูุชุฑุงุถูŠู‹ุง. - Lateral Accel (Default: %1) - ุงู„ุชุณุงุฑุน ุงู„ุฌุงู†ุจูŠ (ุงู„ุงูุชุฑุงุถูŠ: %1) + Lateral Acceleration (Default: %1) + ุงู„ุชุณุงุฑุน ุงู„ุฌุงู†ุจูŠ (ุงู„ุงูุชุฑุงุถูŠ: %1) - Lateral Accel - ุงู„ุชุณุงุฑุน ุงู„ุฌุงู†ุจูŠ + Lateral Acceleration + ุงู„ุชุณุงุฑุน ุงู„ุฌุงู†ุจูŠ - How quickly openpilot makes lateral adjustments. Higher values allow sharper turns; lower values provide smoother steering. - ู…ุฏู‰ ุณุฑุนุฉ ู‚ูŠุงู… openpilot ุจุฅุฌุฑุงุก ุชุนุฏูŠู„ุงุช ุฌุงู†ุจูŠุฉ. ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุณู…ุญ ุจุงู„ุงู†ุนุทุงูุงุช ุงู„ุญุงุฏุฉุ› ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุชูˆูุฑ ุชูˆุฌูŠู‡ู‹ุง ุฃูƒุซุฑ ุณู„ุงุณุฉ. + <b>Maps steering torque to turning response.</b> Increase for sharper turns; decrease for gentler steering. Auto-learned by default. + <b>ูŠุญูˆู‘ู„ ุนุฒู… ุชูˆุฌูŠู‡ ุงู„ุฎุฑุงุฆุท ุฅู„ู‰ ุงุณุชุฌุงุจุฉ ุงู„ุงู†ุนุทุงู.</b> ุฒูุฏ ู„ุฅุฌุฑุงุก ู…ู†ุนุทูุงุช ุฃูƒุซุฑ ุญุฏุฉุ› ูˆุฎูู‘ุถ ู„ุชูˆุฌูŠู‡ ุฃูƒุซุฑ ู†ุนูˆู…ุฉ. ูŠุชุนู„ู… ุชู„ู‚ุงุฆูŠู‹ุง ุงูุชุฑุงุถูŠู‹ุง. Steer Ratio (Default: %1) - ู†ุณุจุฉ ุงู„ุชูˆุฌูŠู‡ (ุงู„ุงูุชุฑุงุถูŠ: %1) + ู†ุณุจุฉ ุงู„ุชูˆุฌูŠู‡ (ุงู„ุงูุชุฑุงุถูŠ: %1) Steer Ratio - ู†ุณุจุฉ ุงู„ุชูˆุฌูŠู‡ + ู†ุณุจุฉ ุงู„ุชูˆุฌูŠู‡ - How much the steering wheel turns in response to commands. Higher values feel more stable; lower values feel quicker. - ู…ุฏู‰ ุฏูˆุฑุงู† ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ ุงุณุชุฌุงุจุฉ ู„ู„ุฃูˆุงู…ุฑ. ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุดุนุฑ ุจุฃู†ู‡ุง ุฃูƒุซุฑ ุงุณุชู‚ุฑุงุฑู‹ุงุ› ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุชุดุนุฑ ุจุฃู†ู‡ุง ุฃุณุฑุน. + <b>The relationship between steering wheel rotation and road wheel angle.</b> Increase if steering feels too quick or twitchy; decrease if it feels too slow or weak. Auto-learned by default. + <b>ุงู„ุนู„ุงู‚ุฉ ุจูŠู† ุฏูˆุฑุงู† ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ ูˆุฒุงูˆูŠุฉ ุนุฌู„ุงุช ุงู„ุทุฑูŠู‚.</b> ุฒุฏู‡ุง ุฅุฐุง ุจุฏุง ุงู„ุชูˆุฌูŠู‡ ุณุฑูŠุนู‹ุง ุฃูˆ ุนุตุจูŠู‹ุงุ› ุฃู†ู‚ุตู‡ุง ุฅุฐุง ุจุฏุง ุจุทูŠุฆู‹ุง ุฃูˆ ุถุนูŠูู‹ุง. ูŠุชู… ุงู„ุชุนู„ู… ุชู„ู‚ุงุฆูŠู‹ุง ุงูุชุฑุงุถูŠู‹ุง. - Force Auto Tune On - ูุฑุถ ุงู„ุชุดุบูŠู„ ุงู„ุชู„ู‚ุงุฆูŠ + Force Auto-Tune On + ูุฑุถ ุชุดุบูŠู„ ุงู„ุถุจุท ุงู„ุชู„ู‚ุงุฆูŠ - Force-enable commaโ€™s auto lateral tuning. - ูุฑุถ ุชู…ูƒูŠู† ุงู„ุถุจุท ุงู„ุฌุงู†ุจูŠ ุงู„ุชู„ู‚ุงุฆูŠ ู„ู„ูุงุตู„ุฉ. + <b>Force-enable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration".</b> + <b>ุชู…ูƒูŠู† ู‚ุณุฑูŠ ู„ู„ุถุจุท ุงู„ุชู„ู‚ุงุฆูŠ ุงู„ู…ุจุงุดุฑ ููŠ openpilot ู„ุฎุงุตูŠุชูŠ "Friction" ูˆ"Lateral Acceleration".</b> - Force Auto Tune Off - ุฅูŠู‚ุงู ุงู„ุถุจุท ุงู„ุชู„ู‚ุงุฆูŠ ุจุงู„ู‚ูˆุฉ + Force Auto-Tune Off + ุฅูŠู‚ุงู ุงู„ุถุจุท ุงู„ุชู„ู‚ุงุฆูŠ ุจุงู„ู‚ูˆุฉ - Force-disable commaโ€™s auto lateral tuning. - ุชุนุทูŠู„ ุถุจุท ุงู„ูุงุตู„ุฉ ุงู„ุฌุงู†ุจูŠ ุงู„ุชู„ู‚ุงุฆูŠ ุจุงู„ู‚ูˆุฉ. + <b>Force-disable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration" and use the set value instead.</b> + <b>ุชุนุทูŠู„ ู‚ุณุฑูŠ ู„ุฎุงุตูŠุฉ ุงู„ุถุจุท ุงู„ุชู„ู‚ุงุฆูŠ ุงู„ุญูŠ ู„ู€ openpilot ู„ู‚ูŠู… "Friction" ูˆ"Lateral Acceleration" ูˆุงุณุชุฎุฏุงู… ุงู„ู‚ูŠู…ุฉ ุงู„ู…ุญุฏุฏุฉ ุจุฏู„ุงู‹ ู…ู†ู‡ุง.</b> - Always on Lateral - ุฏุงุฆู…ู‹ุง ุนู„ู‰ ุงู„ุฌุงู†ุจ + Force Torque Controller + ู…ุชุญูƒู… ุนุฒู… ุงู„ู‚ูˆุฉ - openpilot's steering control stays active even when the brake or gas pedals are pressed.<br><br>Deactivation only occurs with the <b>Cruise Control</b> button. - ูŠุธู„ ุงู„ุชุญูƒู… ููŠ ุงู„ุชูˆุฌูŠู‡ ููŠ openpilot ู†ุดุทู‹ุง ุญุชู‰ ุนู†ุฏ ุงู„ุถุบุท ุนู„ู‰ ุฏูˆุงุณุงุช ุงู„ูุฑุงู…ู„ ุฃูˆ ุงู„ุบุงุฒ.<br><br>ูŠุญุฏุซ ุงู„ุชุนุทูŠู„ ูู‚ุท ู…ุน ุฒุฑ <b>ุงู„ุชุญูƒู… ููŠ ุงู„ุณุฑุนุฉ</b>. + <b>Use torque-based steering control instead of angle-based control for smoother lane keeping, especially in curves.</b> + <b>ุงุณุชุฎุฏู… ุงู„ุชุญูƒู… ููŠ ุงู„ุชูˆุฌูŠู‡ ุงู„ู…ุนุชู…ุฏ ุนู„ู‰ ุงู„ุนุฒู… ุจุฏู„ู‹ุง ู…ู† ุงู„ุชุญูƒู… ุงู„ู…ุนุชู…ุฏ ุนู„ู‰ ุงู„ุฒุงูˆูŠุฉ ู„ุชุญู‚ูŠู‚ ุซุจุงุช ุฃูƒุซุฑ ุณู„ุงุณุฉ ุฏุงุฎู„ ุงู„ู…ุณุงุฑุŒ ุฎุงุตุฉู‹ ููŠ ุงู„ู…ู†ุนุทูุงุช.</b> + + + Always On Lateral + ุงู„ุชูˆุฌูŠู‡ ุงู„ุฌุงู†ุจูŠ ุฏุงุฆู… ุงู„ุชุดุบูŠู„ + + + <b>openpilot's steering remains active even when the accelerator or brake pedals are pressed.</b> + <b>ู†ุธุงู… ุงู„ุชูˆุฌูŠู‡ ููŠ openpilot ูŠุธู„ ู†ุดุทู‹ุง ุญุชู‰ ุนู†ุฏ ุงู„ุถุบุท ุนู„ู‰ ุฏูˆุงุณุฉ ุงู„ูˆู‚ูˆุฏ ุฃูˆ ุงู„ูุฑุงู…ู„.</b> Enable With Cruise Control - ุชู…ูƒูŠู† ู…ุน ุงู„ุชุญูƒู… ููŠ ุงู„ุณุฑุนุฉ + ุงู„ุชูุนูŠู„ ู…ุน ู†ุธุงู… ุชุซุจูŠุช ุงู„ุณุฑุนุฉ - Allow <b>Always on Lateral</b> to be active whenever <b>Cruise Control</b> is active, bypassing the need to enable openpilot first. - ุงู„ุณู…ุงุญ ู„ู€ <b>Always on Lateral</b> ุจุฃู† ูŠูƒูˆู† ู†ุดุทู‹ุง ูƒู„ู…ุง ูƒุงู† <b>Cruise Control</b> ู†ุดุทู‹ุงุŒ ู…ุชุฌุงูˆุฒู‹ุง ุงู„ุญุงุฌุฉ ุฅู„ู‰ ุชูุนูŠู„ openpilot ุฃูˆู„ุงู‹. + <b>Enable "Always On Lateral" whenever "Cruise Control" is on, even when openpilot is not engaged.</b> + <b>ูุนู‘ู„ "Always On Lateral" ูƒู„ู…ุง ูƒุงู† "Cruise Control" ู‚ูŠุฏ ุงู„ุชุดุบูŠู„ุŒ ุญุชู‰ ุนู†ุฏู…ุง ู„ุง ูŠูƒูˆู† openpilot ู…ูุนู‘ู„ู‹ุง.</b> - Enable With LKAS Button - ุชู…ูƒูŠู† ุจุงุณุชุฎุฏุงู… ุฒุฑ LKAS + Enable With LKAS + ุงู„ุชูุนูŠู„ ู…ุน LKAS - Allow <b>Always on Lateral</b> to be active whenever <b>LKAS</b> is active, bypassing the need to enable openpilot first. - ุงู„ุณู…ุงุญ ู„ู€ <b>Always on Lateral</b> ุจุฃู† ูŠูƒูˆู† ู†ุดุทู‹ุง ูƒู„ู…ุง ูƒุงู† <b>LKAS</b> ู†ุดุทู‹ุงุŒ ู…ุชุฌุงูˆุฒู‹ุง ุงู„ุญุงุฌุฉ ุฅู„ู‰ ุชูุนูŠู„ openpilot ุฃูˆู„ุงู‹. + <b>Enable "Always On Lateral" whenever "LKAS" is on, even when openpilot is not engaged.</b> + <b>ูุนู‘ู„ "Always On Lateral" ูƒู„ู…ุง ูƒุงู† "LKAS" ู…ูุนู‘ู„ู‹ุงุŒ ุญุชู‰ ุนู†ุฏู…ุง ู„ุง ูŠูƒูˆู† openpilot ู…ูุนู‘ู„ู‹ุง.</b> - Pause on Brake Below - ุชูˆู‚ู ุนู†ุฏ ุงู„ูุฑุงู…ู„ ุฃุฏู†ุงู‡ + Pause on Brake Press Below + ุฅูŠู‚ุงู ู…ุคู‚ุช ุนู†ุฏ ุถุบุท ุงู„ู…ูƒุงุจุญ ุฃุฏู†ุงู‡ - Temporarily pause <b>Always on Lateral</b> below the set speed when braking. - ุฅูŠู‚ุงู <b>Always on Lateral</b> ู…ุคู‚ุชู‹ุง ุชุญุช ุงู„ุณุฑุนุฉ ุงู„ู…ุญุฏุฏุฉ ุนู†ุฏ ุงู„ูƒุจุญ. + <b>Pause "Always On Lateral" below the set speed while the brake pedal is pressed.</b> + <b>ุฃูˆู‚ู ู…ุคู‚ุชู‹ุง "Always On Lateral" ุฃุฏู†ุงู‡ ุงู„ุณุฑุนุฉ ุงู„ู…ุญุฏุฏุฉ ุฃุซู†ุงุก ุงู„ุถุบุท ุนู„ู‰ ุฏูˆุงุณุฉ ุงู„ูุฑุงู…ู„.</b> Lane Changes - ุชุบูŠูŠุฑุงุช ุงู„ู…ุณุงุฑ + ุชุบูŠูŠุฑุงุช ุงู„ู…ุณุงุฑ - Customize how openpilot performs lane changes. - ุชุฎุตูŠุต ูƒูŠููŠุฉ ุชู†ููŠุฐ openpilot ู„ุชุบูŠูŠุฑุงุช ุงู„ู…ุณุงุฑ. + <b>Allow openpilot to change lanes.</b> + <b>ุงุณู…ุญ ู„ู€ openpilot ุจุชุบูŠูŠุฑ ุงู„ู…ุณุงุฑุงุช.</b> Automatic Lane Changes - ุชุบูŠูŠุฑุงุช ุงู„ู…ุณุงุฑ ุงู„ุชู„ู‚ุงุฆูŠุฉ + ุชุบูŠูŠุฑุงุช ุงู„ู…ุณุงุฑ ุงู„ุชู„ู‚ุงุฆูŠุฉ - Change lanes automatically when the turn signal is on. No steering input needed! - ุชุบูŠูŠุฑ ุงู„ู…ุณุงุฑุงุช ุชู„ู‚ุงุฆูŠู‹ุง ุนู†ุฏ ุชุดุบูŠู„ ุฅุดุงุฑุฉ ุงู„ุงู†ุนุทุงู. ู„ุง ุญุงุฌุฉ ู„ุฅุฏุฎุงู„ ุชูˆุฌูŠู‡! + <b>When the turn signal is on, openpilot will automatically change lanes.</b> No steering-wheel nudge required! + <b>ุนู†ุฏ ุชุดุบูŠู„ ุฅุดุงุฑุฉ ุงู„ุงู†ุนุทุงูุŒ ุณูŠู‚ูˆู… openpilot ุจุชุบูŠูŠุฑ ุงู„ู…ุณุงุฑ ุชู„ู‚ุงุฆูŠู‹ุง.</b> ู„ุง ุญุงุฌุฉ ู„ุฏูุนุฉ ุนู„ู‰ ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ! Lane Change Delay - ุชุฃุฎูŠุฑ ุชุบูŠูŠุฑ ุงู„ู…ุณุงุฑ + ุชุฃุฎูŠุฑ ุชุบูŠูŠุฑ ุงู„ู…ุณุงุฑ - Delay automatic lane changes by the set amount of time. - ุชุฃุฎูŠุฑ ุชุบูŠูŠุฑุงุช ุงู„ู…ุณุงุฑ ุงู„ุชู„ู‚ุงุฆูŠุฉ ุจุงู„ู…ุฏุฉ ุงู„ุฒู…ู†ูŠุฉ ุงู„ู…ุญุฏุฏุฉ. + <b>Delay between turn signal activation and the start of an automatic lane change.</b> + <b>ุงู„ุชุฃุฎูŠุฑ ุจูŠู† ุชูุนูŠู„ ุฅุดุงุฑุฉ ุงู„ุงู†ุนุทุงู ูˆุจุฏุงูŠุฉ ุชุบูŠูŠุฑ ุงู„ู…ุณุงุฑ ุงู„ุชู„ู‚ุงุฆูŠ.</b> Minimum Lane Change Speed - ุงู„ุญุฏ ุงู„ุฃุฏู†ู‰ ู„ุณุฑุนุฉ ุชุบูŠูŠุฑ ุงู„ู…ุณุงุฑ + ุงู„ุณุฑุนุฉ ุงู„ุฏู†ูŠุง ู„ุชุบูŠูŠุฑ ุงู„ู…ุณุงุฑ - Minimum speed required for openpilot to perform a lane change. - ุงู„ุณุฑุนุฉ ุงู„ุฏู†ูŠุง ุงู„ู…ุทู„ูˆุจุฉ ู„ู€ openpilot ู„ุชู†ููŠุฐ ุชุบูŠูŠุฑ ุงู„ู…ุณุงุฑ. + <b>Lowest speed at which openpilot will change lanes.</b> + <b>ุฃุฏู†ู‰ ุณุฑุนุฉ ูŠู‚ูˆู… ุนู†ุฏู‡ุง openpilot ุจุชุบูŠูŠุฑ ุงู„ู…ุณุงุฑ.</b> Minimum Lane Width - ุงู„ุญุฏ ุงู„ุฃุฏู†ู‰ ู„ุนุฑุถ ุงู„ุญุงุฑุฉ + ุฃุฏู†ู‰ ุนุฑุถ ู„ู„ู…ุณุงุฑ - openpilot won't initiate a lane change into a lane narrower than this width. - ู„ู† ูŠุจุฏุฃ openpilot ุชุบูŠูŠุฑ ุงู„ู…ุณุงุฑ ุฅู„ู‰ ู…ุณุงุฑ ุฃุถูŠู‚ ู…ู† ู‡ุฐุง ุงู„ุนุฑุถ. + <b>Prevent automatic lane changes into lanes narrower than the set width.</b> + <b>ู…ู†ุน ุชุบูŠูŠุฑุงุช ุงู„ู…ุณุงุฑ ุงู„ุชู„ู‚ุงุฆูŠุฉ ุฅู„ู‰ ู…ุณุงุฑุงุช ุฃุถูŠู‚ ู…ู† ุงู„ุนุฑุถ ุงู„ู…ุญุฏุฏ.</b> One Lane Change Per Signal - ุชุบูŠูŠุฑ ู…ุณุงุฑ ูˆุงุญุฏ ู„ูƒู„ ุฅุดุงุฑุฉ + ุชุบูŠูŠุฑ ู…ุณุงุฑ ูˆุงุญุฏ ู„ูƒู„ ุฅุดุงุฑุฉ - Limit lane changes to one per turn signal activation. - ุญุฏุฏ ุชุบูŠูŠุฑ ุงู„ู…ุณุงุฑ ุฅู„ู‰ ู…ุฑุฉ ูˆุงุญุฏุฉ ู„ูƒู„ ุชูุนูŠู„ ู„ุฅุดุงุฑุฉ ุงู„ุงู†ุนุทุงู. + <b>Limit automatic lane changes to one per turn-signal activation.</b> + <b>ุญุฏู‘ุฏ ุชุบูŠูŠุฑุงุช ุงู„ู…ุณุงุฑ ุงู„ุชู„ู‚ุงุฆูŠุฉ ุฅู„ู‰ ู…ุฑุฉ ูˆุงุญุฏุฉ ู„ูƒู„ ุชูุนูŠู„ ู„ุฅุดุงุฑุฉ ุงู„ุงู†ุนุทุงู.</b> Lateral Tuning - ุงู„ุถุจุท ุงู„ุฌุงู†ุจูŠ + ุงู„ุถุจุท ุงู„ุฌุงู†ุจูŠ - Settings for fine-tuning openpilot's lateral controls. - ุฅุนุฏุงุฏุงุช ู„ุถุจุท ุงู„ุชุญูƒู… ุงู„ุฌุงู†ุจูŠ ููŠ openpilot. + <b>Miscellaneous steering control changes</b> to fine-tune how openpilot drives. + <b>ุชุบูŠูŠุฑุงุช ู…ุชู†ูˆุนุฉ ููŠ ุงู„ุชุญูƒู… ุจุงู„ุชูˆุฌูŠู‡</b> ู„ุถุจุท ูƒูŠููŠุฉ ู‚ูŠุงุฏุฉ openpilot ุจุฏู‚ุฉ. Force Turn Desires Below Lane Change Speed - ูุฑุถ ุชุญูˆูŠู„ ุงู„ุฑุบุจุงุช ุชุญุช ุณุฑุนุฉ ุชุบูŠูŠุฑ ุงู„ู…ุณุงุฑ + ูุฑุถ ุฑุบุจุงุช ุงู„ุงู†ุนุทุงู ุชุญุช ุณุฑุนุฉ ุชุบูŠูŠุฑ ุงู„ู…ุณุงุฑ - Force turn desires below the minimum lane change speed to improve turning accuracy. - ุฅุฌุจุงุฑ ุชุญูˆูŠู„ ุงู„ุฑุบุจุงุช ุชุญุช ุณุฑุนุฉ ุชุบูŠูŠุฑ ุงู„ู…ุณุงุฑ ุงู„ุฏู†ูŠุง ู„ุชุญุณูŠู† ุฏู‚ุฉ ุงู„ุฏูˆุฑุงู†. - - - Neural Network Feedforward (NNFF) - ุงู„ุชุบุฐูŠุฉ ุงู„ุฃู…ุงู…ูŠุฉ ู„ู„ุดุจูƒุฉ ุงู„ุนุตุจูŠุฉ (NNFF) - - - Use <b>Twilsoncoโ€™s</b> <b>Neural Network FeedForward</b> model for smoother, model-based steering trained on your vehicle's data. - ุงุณุชุฎุฏู… ู†ู…ูˆุฐุฌ <b>Neural Network FeedForward</b> ุงู„ุฎุงุต ุจู€ <b>Twilsonco</b> ู„ุชูˆุฌูŠู‡ ุฃูƒุซุฑ ุณู„ุงุณุฉ ูŠุนุชู…ุฏ ุนู„ู‰ ุงู„ู†ู…ูˆุฐุฌ ูˆู…ุฏุฑุจ ุนู„ู‰ ุจูŠุงู†ุงุช ู…ุฑูƒุจุชูƒ. - - - Smooth Curve Handling - ุงู„ุชุนุงู…ู„ ู…ุน ุงู„ู…ู†ุญู†ูŠุงุช ุงู„ุณู„ุณุฉ - - - Use <b>Twilsoncoโ€™s</b> torque-based adjustments to smooth out steering during curves. - ุงุณุชุฎุฏู… ุชุนุฏูŠู„ุงุช <b>Twilsonco</b> ุงู„ู‚ุงุฆู…ุฉ ุนู„ู‰ ุนุฒู… ุงู„ุฏูˆุฑุงู† ู„ุชู†ุนูŠู… ุงู„ุชูˆุฌูŠู‡ ุฃุซู†ุงุก ุงู„ู…ู†ุญู†ูŠุงุช. + <b>While driving below the minimum lane change speed with an active turn signal, instruct openpilot to turn left/right.</b> + <b>ุฃุซู†ุงุก ุงู„ู‚ูŠุงุฏุฉ ุจุณุฑุนุฉ ุฃู‚ู„ ู…ู† ุงู„ุญุฏ ุงู„ุฃุฏู†ู‰ ู„ุชุบูŠูŠุฑ ุงู„ู…ุณุงุฑ ูˆู…ุน ุชุดุบูŠู„ ุฅุดุงุฑุฉ ุงู„ุงู†ุนุทุงูุŒ ูˆุฌู‘ู‡ openpilot ู„ู„ุงู†ุนุทุงู ูŠุณุงุฑู‹ุง/ูŠู…ูŠู†ู‹ุง.</b> Quality of Life - ุฌูˆุฏุฉ ุงู„ุญูŠุงุฉ + ุฌูˆุฏุฉ ุงู„ุญูŠุงุฉ - Miscellaneous features to improve the steering experience. - ู…ูŠุฒุงุช ู…ุชู†ูˆุนุฉ ู„ุชุญุณูŠู† ุชุฌุฑุจุฉ ุงู„ุชูˆุฌูŠู‡. + <b>Steering control changes to fine-tune how openpilot drives.</b> + <b>ุชุบูŠูŠุฑุงุช ุงู„ุชุญูƒู… ุจุงู„ุชูˆุฌูŠู‡ ู„ุถุจุท ูƒูŠููŠุฉ ู‚ูŠุงุฏุฉ openpilot ุจุฏู‚ุฉ.</b> Pause Steering Below - ุฅูŠู‚ุงู ุงู„ุชูˆุฌูŠู‡ ุฃุฏู†ุงู‡ + ุฅูŠู‚ุงู ุงู„ุชูˆุฌูŠู‡ ู…ุคู‚ุชู‹ุง ุฃุฏู†ุงู‡ - Temporarily pause steering control below the set speed. - ุฅูŠู‚ุงู ุงู„ุชุญูƒู… ููŠ ุงู„ุชูˆุฌูŠู‡ ู…ุคู‚ุชู‹ุง ุชุญุช ุงู„ุณุฑุนุฉ ุงู„ู…ุญุฏุฏุฉ. + <b>Pause steering below the set speed.</b> + <b>ุฃูˆู‚ู ุงู„ุชูˆุฌูŠู‡ ุนู†ุฏ ุงู„ุณุฑุนุฉ ุงู„ู…ุถุจูˆุทุฉ ุฃูˆ ุฃู‚ู„.</b> Instant - ููˆุฑูŠ + ููˆุฑูŠ second - ุซุงู†ูŠ + ุซุงู†ูŠุฉ seconds - ุซูˆุงู†ู - - - Are you sure you want to completely reset your <b>Actuator Delay</b>? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† <b>ุชุฃุฎูŠุฑ ุงู„ู…ุดุบู„</b> ุจุงู„ูƒุงู…ู„ุŸ - - - Are you sure you want to completely reset your <b>Friction</b>? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† <b>Friction</b> ุจุงู„ูƒุงู…ู„ุŸ - - - Are you sure you want to completely reset your <b>Kp Factor</b>? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† <b>Kp Factor</b> ุจุงู„ูƒุงู…ู„ุŸ - - - Are you sure you want to completely reset your <b>Lateral Accel</b>? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† <b>Lateral Accel</b> ุจุงู„ูƒุงู…ู„ุŸ - - - Are you sure you want to completely reset your <b>Steer Ratio</b>? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† <b>ู†ุณุจุฉ ุงู„ุชูˆุฌูŠู‡</b> ุจุงู„ูƒุงู…ู„ุŸ - - - Off - ุฅูŠู‚ุงู - - - foot - ู‚ุฏู… - - - feet - ุฃู‚ุฏุงู… - - - mph - ู…ูŠู„ ููŠ ุงู„ุณุงุนุฉ - - - meter - ู…ุชุฑ - - - meters - ู…ุชุฑ - - - km/h - km/h + ุซูˆุงู†ู Turn Signal Only - ุฅุดุงุฑุฉ ุงู„ุงู†ุนุทุงู ูู‚ุท + ุฅุดุงุฑุงุช ุงู„ุงู†ุนุทุงู ูู‚ุท + + + Reset <b>Actuator Delay</b> to its default value? + ุฅุนุงุฏุฉ ุชุนูŠูŠู† <b>ุฒู…ู† ุชุฃุฎุฑ ุงู„ู…ูุดุบู‘ูู„</b> ุฅู„ู‰ ู‚ูŠู…ุชู‡ ุงู„ุงูุชุฑุงุถูŠุฉุŸ + + + Reset <b>Friction</b> to its default value? + ุฅุนุงุฏุฉ ุชุนูŠูŠู† <b>ุงู„ุงุญุชูƒุงูƒ</b> ุฅู„ู‰ ู‚ูŠู…ุชู‡ ุงู„ุงูุชุฑุงุถูŠุฉุŸ + + + Reset <b>Kp Factor</b> to its default value? + ุฅุนุงุฏุฉ ุชุนูŠูŠู† <b>ุนุงู…ู„ Kp</b> ุฅู„ู‰ ู‚ูŠู…ุชู‡ ุงู„ุงูุชุฑุงุถูŠุฉุŸ + + + Reset <b>Lateral Accel</b> to its default value? + ุฅุนุงุฏุฉ ุถุจุท <b>ุงู„ุชุณุงุฑุน ุงู„ุฌุงู†ุจูŠ</b> ุฅู„ู‰ ู‚ูŠู…ุชู‡ ุงู„ุงูุชุฑุงุถูŠุฉุŸ + + + Reset <b>Steer Ratio</b> to its default value? + ุฅุนุงุฏุฉ ุถุจุท <b>Steer Ratio</b> ุฅู„ู‰ ู‚ูŠู…ุชู‡ ุงู„ุงูุชุฑุงุถูŠุฉุŸ + + + Lateral Accel (Default: %1) + ุงู„ุชุณุงุฑุน ุงู„ุฌุงู†ุจูŠ (ุงู„ุงูุชุฑุงุถูŠ: %1) + + + Off + ุฅูŠู‚ุงู + + + foot + ู‚ุฏู… + + + feet + ู‚ุฏู… + + + mph + ู…ูŠู„/ุณุงุนุฉ + + + meter + ู…ุชุฑ + + + meters + ุฃู…ุชุงุฑ + + + km/h + ูƒู…/ุณ + + + Neural Network Feedforward (NNFF) + ุงู„ุชุบุฐูŠุฉ ุงู„ุฃู…ุงู…ูŠุฉ ู„ู„ุดุจูƒุฉ ุงู„ุนุตุจูŠุฉ (NNFF) + + + <b>Twilsonco's "Neural Network FeedForward" model controller for smoother, model-based steering trained on your vehicle's data.</b> + <b>ูˆุญุฏุฉ ุชุญูƒู… ู†ู…ูˆุฐุฌ Twilsonco "Neural Network FeedForward" ู„ุชูˆุฌูŠู‡ ุฃูƒุซุฑ ุณู„ุงุณุฉ ู‚ุงุฆู… ุนู„ู‰ ุงู„ู†ู…ูˆุฐุฌุŒ ู…ูุฏุฑู‘ูŽุจุฉ ุนู„ู‰ ุจูŠุงู†ุงุช ู…ุฑูƒุจุชูƒ.</b> + + + Smooth Curve Handling + ุงู„ุชุนุงู…ู„ ุงู„ุณู„ุณ ู…ุน ุงู„ู…ู†ุญู†ูŠุงุช + + + <b>Twilsonco's torque-based adjustments to smoothen out steering in curves.</b> + <b>ุชุนุฏูŠู„ุงุช Twilsonco ุงู„ู…ุนุชู…ุฏุฉ ุนู„ู‰ ุงู„ุนุฒู… ู„ุชู†ุนูŠู… ุงู„ุชูˆุฌูŠู‡ ููŠ ุงู„ู…ู†ุนุทูุงุช.</b> FrogPilotLongitudinalPanel - - Conditional Experimental Mode - ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ ุงู„ุดุฑุทูŠ - - - Automatically switch to <b>Experimental Mode</b> when set conditions are met. - ุงู„ุชุจุฏูŠู„ ุชู„ู‚ุงุฆูŠู‹ุง ุฅู„ู‰ <b>ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ</b> ุนู†ุฏ ุงุณุชูŠูุงุก ุงู„ุดุฑูˆุท ุงู„ู…ุญุฏุฏุฉ. - - - Below - ุฃุฏู†ุงู‡ - - - Switch to <b>Experimental Mode</b> when driving below this speed. - ู‚ู… ุจุงู„ุชุจุฏูŠู„ ุฅู„ู‰ <b>ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ</b> ุนู†ุฏ ุงู„ู‚ูŠุงุฏุฉ ุชุญุช ู‡ุฐู‡ ุงู„ุณุฑุนุฉ. - - - Curve Detected Ahead - ู…ู†ุญู†ู‰ ุฃู…ุงู…ูƒ - - - Switch to <b>Experimental Mode</b> when a curve is detected ahead. Useful for letting the model choose the appropriate speed for the curve. - ุงู„ุชุจุฏูŠู„ ุฅู„ู‰ <b>ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ</b> ุนู†ุฏ ุงูƒุชุดุงู ู…ู†ุญู†ู‰ ุฃู…ุงู…ูƒ. ู…ููŠุฏ ู„ู„ุณู…ุงุญ ู„ู„ู†ู…ูˆุฐุฌ ุจุงุฎุชูŠุงุฑ ุงู„ุณุฑุนุฉ ุงู„ู…ู†ุงุณุจุฉ ู„ู„ู…ู†ุญู†ู‰. - - - Lead Detected Ahead - ุชู… ุงู„ูƒุดู ุนู† ุงู„ุฑุตุงุต ุฃู…ุงู…ูƒ - - - Switch to <b>Experimental Mode</b> when a slower or stopped vehicle is detected ahead. Can improve braking smoothness and reliability on some vehicles. - ุงู„ุชุจุฏูŠู„ ุฅู„ู‰ <b>ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ</b> ุนู†ุฏ ุงูƒุชุดุงู ู…ุฑูƒุจุฉ ุฃุจุทุฃ ุฃูˆ ู…ุชูˆู‚ูุฉ ููŠ ุงู„ุฃู…ุงู…. ูŠู…ูƒู† ุฃู† ูŠุญุณู† ุณู„ุงุณุฉ ุงู„ูƒุจุญ ูˆู…ูˆุซูˆู‚ูŠุชู‡ ููŠ ุจุนุถ ุงู„ู…ุฑูƒุจุงุช. - - - Navigation Data - ุจูŠุงู†ุงุช ุงู„ู…ู„ุงุญุฉ - - - Switch to <b>Experimental Mode</b> when approaching intersections or turns on the active route while using <b>Navigate on openpilot (NOO)</b>. Useful for letting the model choose the appropriate speed for upcoming navigation maneuvers. - ุงู„ุชุจุฏูŠู„ ุฅู„ู‰ <b>ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ</b> ุนู†ุฏ ุงู„ุงู‚ุชุฑุงุจ ู…ู† ุงู„ุชู‚ุงุทุนุงุช ุฃูˆ ุงู„ู…ู†ุนุทูุงุช ุนู„ู‰ ุงู„ู…ุณุงุฑ ุงู„ู†ุดุท ุฃุซู†ุงุก ุงุณุชุฎุฏุงู… <b>ุงู„ุชู†ู‚ู„ ุนู„ู‰ ุงู„ุทูŠุงุฑ ุงู„ุขู„ูŠ ุงู„ู…ูุชูˆุญ (NOO)</b>. ู…ููŠุฏ ู„ู„ุณู…ุงุญ ู„ู„ู†ู…ูˆุฐุฌ ุจุงุฎุชูŠุงุฑ ุงู„ุณุฑุนุฉ ุงู„ู…ู†ุงุณุจุฉ ู„ู„ู…ู†ุงูˆุฑุงุช ุงู„ู…ู„ุงุญูŠุฉ ุงู„ู‚ุงุฏู…ุฉ. - - - openpilot Wants to Stop In - ูŠุฑูŠุฏ openpilot ุงู„ุชูˆู‚ู - - - Switch to <b>Experimental Mode</b> when openpilot wants to stop within the set amount of time. This is typically triggered by the driving model "detecting" a red light or stop sign. - ุงู„ุชุจุฏูŠู„ ุฅู„ู‰ <b>ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ</b> ุนู†ุฏู…ุง ูŠุฑูŠุฏ openpilot ุงู„ุชูˆู‚ู ุฎู„ุงู„ ุงู„ูุชุฑุฉ ุงู„ุฒู…ู†ูŠุฉ ุงู„ู…ุญุฏุฏุฉ. ูŠุชู… ุชูุนูŠู„ ู‡ุฐุง ุนุงุฏุฉู‹ ุนู†ุฏู…ุง ูŠู‚ูˆู… ู†ู…ูˆุฐุฌ ุงู„ู‚ูŠุงุฏุฉ "ุจูƒุดู" ุฅุดุงุฑุฉ ุถูˆุฆูŠุฉ ุญู…ุฑุงุก ุฃูˆ ุนู„ุงู…ุฉ ุชูˆู‚ู. - - - Turn Signal Below - ุฅุดุงุฑุฉ ุงู„ุงู†ุนุทุงู ุฃุฏู†ุงู‡ - - - Switch to <b>Experimental Mode</b> when using a turn signal below the set speed. Useful for letting the model choose the appropriate speed for upcoming left or right turns. - ุงู„ุชุจุฏูŠู„ ุฅู„ู‰ <b>ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ</b> ุนู†ุฏ ุงุณุชุฎุฏุงู… ุฅุดุงุฑุฉ ุงู„ุงู†ุนุทุงู ุชุญุช ุงู„ุณุฑุนุฉ ุงู„ู…ุญุฏุฏุฉ. ู…ููŠุฏ ู„ู„ุณู…ุงุญ ู„ู„ู†ู…ูˆุฐุฌ ุจุงุฎุชูŠุงุฑ ุงู„ุณุฑุนุฉ ุงู„ู…ู†ุงุณุจุฉ ู„ู„ุงู†ุนุทุงูุงุช ุงู„ูŠุณุฑู‰ ุฃูˆ ุงู„ูŠู…ู†ู‰ ุงู„ู‚ุงุฏู…ุฉ. - - - Status Widget - ุนู†ุตุฑ ูˆุงุฌู‡ุฉ ุญุงู„ุฉ - - - Show the <b>Conditional Experimental Mode</b> status on the driving screen. - ุงุนุฑุถ ุญุงู„ุฉ <b>ูˆุถุน ุงู„ุชุฌุฑูŠุจ ุงู„ุดุฑุทูŠ</b> ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. - - - Show <b>Curve Speed Control</b>'s desired speed on the driving screen. - ุงุนุฑุถ ุงู„ุณุฑุนุฉ ุงู„ู…ุทู„ูˆุจุฉ ู„ู€ <b>ุงู„ุชุญูƒู… ููŠ ุณุฑุนุฉ ุงู„ู…ู†ุญู†ู‰</b> ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. - - - Customize Driving Personalities - ุชุฎุตูŠุต ุดุฎุตูŠุงุช ุงู„ู‚ูŠุงุฏุฉ - - - Customize the personality profiles to your driving style. - ุฎุตุต ู…ู„ูุงุช ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ ูˆูู‚ู‹ุง ู„ุฃุณู„ูˆุจ ู‚ูŠุงุฏุชูƒ. - - - Traffic Personality - ุดุฎุตูŠุฉ ุงู„ู…ุฑูˆุฑ - - - Customize the <b>Traffic</b> personality profile. Tailored for navigating through traffic. - ุฎุตุต ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ู…ุฑูˆุฑ</b>. ู…ุตู…ู… ู„ู„ุชู†ู‚ู„ ุนุจุฑ ุญุฑูƒุฉ ุงู„ู…ุฑูˆุฑ. - - - Following Distance - ู…ุณุงูุฉ ุงู„ุชุชุงุจุน - - - The minimum following distance while in <b>Traffic Mode</b>. openpilot will dynamically adjust between this value and the value in the <b>Aggressive</b> profile based on your current speed. - ุงู„ู…ุณุงูุฉ ุงู„ุฏู†ูŠุง ู„ู„ุชุชุจุน ุฃุซู†ุงุก ูˆุถุน <b>Traffic Mode</b>. ุณูŠู‚ูˆู… openpilot ุจุชุนุฏูŠู„ ู‡ุฐู‡ ุงู„ู…ุณุงูุฉ ุฏูŠู†ุงู…ูŠูƒูŠู‹ุง ุจูŠู† ู‡ุฐู‡ ุงู„ู‚ูŠู…ุฉ ูˆุงู„ู‚ูŠู…ุฉ ููŠ ู…ู„ู ุชุนุฑูŠู <b>Aggressive</b> ุจู†ุงุกู‹ ุนู„ู‰ ุณุฑุนุชูƒ ุงู„ุญุงู„ูŠุฉ. - - - Acceleration Sensitivity - ุญุณุงุณูŠุฉ ุงู„ุชุณุงุฑุน - - - How sensitive openpilot is to changes in acceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ู…ุฏู‰ ุญุณุงุณูŠุฉ openpilot ู„ู„ุชุบูŠุฑุงุช ููŠ ุงู„ุชุณุงุฑุน ุฃุซู†ุงุก ูˆุถุน <b>Traffic Mode</b>. ุชุคุฏูŠ ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุฅู„ู‰ ุชุณุงุฑุน ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆุชุฏุฑุฌู‹ุงุŒ ุจูŠู†ู…ุง ุชุณู…ุญ ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุจุชุบูŠูŠุฑุงุช ุฃุณุฑุน ูˆุฃูƒุซุฑ ุงุณุชุฌุงุจุฉ ู‚ุฏ ุชุจุฏูˆ ู…ูุงุฌุฆุฉ. - - - Deceleration Sensitivity - ุญุณุงุณูŠุฉ ุงู„ุชุจุงุทุค - - - How sensitive openpilot is to changes in deceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ู…ุฏู‰ ุญุณุงุณูŠุฉ openpilot ู„ู„ุชุบูŠุฑุงุช ููŠ ุงู„ุชุจุงุทุค ุฃุซู†ุงุก <b>ูˆุถุน ุงู„ู…ุฑูˆุฑ</b>. ุชุคุฏูŠ ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุฅู„ู‰ ุชุจุงุทุค ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆุชุฏุฑูŠุฌูŠุฉุŒ ุจูŠู†ู…ุง ุชุณู…ุญ ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุจุชุบูŠูŠุฑุงุช ุฃุณุฑุน ูˆุฃูƒุซุฑ ุงุณุชุฌุงุจุฉ ู‚ุฏ ุชุจุฏูˆ ู…ูุงุฌุฆุฉ. - - - Safety Distance Sensitivity - ุญุณุงุณูŠุฉ ู…ุณุงูุฉ ุงู„ุฃู…ุงู† - - - How cautious openpilot is around other vehicles or obstacles while in <b>Traffic Mode</b>. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - ู…ุฏู‰ ุญุฐุฑ openpilot ุญูˆู„ ุงู„ู…ุฑูƒุจุงุช ุฃูˆ ุงู„ุนูˆุงุฆู‚ ุงู„ุฃุฎุฑู‰ ุฃุซู†ุงุก <b>ูˆุถุน ุงู„ู…ุฑูˆุฑ</b>. ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุฒูŠุฏ ู…ู† ู…ุณุงูุงุช ุงู„ู…ุชุงุจุนุฉ ูˆุชุนุทูŠ ุงู„ุฃูˆู„ูˆูŠุฉ ู„ู„ุณู„ุงู…ุฉุŒ ู…ู…ุง ูŠุคุฏูŠ ุฅู„ู‰ ู‚ูŠุงุฏุฉ ุฃูƒุซุฑ ุญุฐุฑุงู‹ุŒ ุจูŠู†ู…ุง ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุชุณู…ุญ ุจุงู„ู…ุชุงุจุนุฉ ุงู„ุฃู‚ุฑุจ ูˆู„ูƒู† ู‚ุฏ ุชู‚ู„ู„ ู…ู† ูˆู‚ุช ุฑุฏ ุงู„ูุนู„. - - - Speed Increase Response - ุงุณุชุฌุงุจุฉ ุฒูŠุงุฏุฉ ุงู„ุณุฑุนุฉ - - - How quickly openpilot increases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - ู…ุฏู‰ ุณุฑุนุฉ ุฒูŠุงุฏุฉ ุงู„ุณุฑุนุฉ ุจูˆุงุณุทุฉ openpilot ุฃุซู†ุงุก ูˆุถุน <b>Traffic Mode</b>. ุชุถู…ู† ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุบูŠูŠุฑุงุช ุณุฑุนุฉ ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆุชุฏุฑูŠุฌูŠุฉ ุนู†ุฏ ุงู„ุชุณุงุฑุนุŒ ุจูŠู†ู…ุง ุชุณู…ุญ ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุจุชุบูŠูŠุฑุงุช ุฃุณุฑุน ูˆุฃูƒุซุฑ ุงุณุชุฌุงุจุฉ ู‚ุฏ ุชุจุฏูˆ ู…ูุงุฌุฆุฉ. - - - Speed Decrease Response - ุงุณุชุฌุงุจุฉ ุชู‚ู„ูŠู„ ุงู„ุณุฑุนุฉ - - - How quickly openpilot decreases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - ู…ุฏู‰ ุณุฑุนุฉ ุชู‚ู„ูŠู„ openpilot ู„ู„ุณุฑุนุฉ ุฃุซู†ุงุก <b>ูˆุถุน ุงู„ู…ุฑูˆุฑ</b>. ุชุถู…ู† ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุบูŠูŠุฑุงุช ุณุฑุนุฉ ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆุชุฏุฑูŠุฌูŠุฉ ุนู†ุฏ ุงู„ุชุจุงุทุคุŒ ุจูŠู†ู…ุง ุชุณู…ุญ ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุจุชุบูŠูŠุฑุงุช ุฃุณุฑุน ูˆุฃูƒุซุฑ ุงุณุชุฌุงุจุฉ ู‚ุฏ ุชุจุฏูˆ ู…ูุงุฌุฆุฉ. - - - Reset Settings - ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุงู„ุฅุนุฏุงุฏุงุช - - - Reset <b>Traffic Mode</b> settings to default values. - ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฅุนุฏุงุฏุงุช <b>ูˆุถุน ุงู„ู…ุฑูˆุฑ</b> ุฅู„ู‰ ุงู„ู‚ูŠู… ุงู„ุงูุชุฑุงุถูŠุฉ. - - - Aggressive Personality - ุงู„ุดุฎุตูŠุฉ ุงู„ุนุฏูˆุงู†ูŠุฉ - - - Customize the <b>Aggressive</b> personality profile. Designed for a more assertive driving style. - ุฎุตุต ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ุนุฏูˆุงู†ูŠุฉ</b>. ู…ุตู…ู… ู„ุฃุณู„ูˆุจ ู‚ูŠุงุฏุฉ ุฃูƒุซุฑ ุญุฒู…ู‹ุง. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Aggressive</b> personality profile.<br><br>Default: 1.25 seconds. - ูƒู… ุซุงู†ูŠุฉ ุณูŠุชุจุน openpilot ุฎู„ู ุงู„ู…ุฑูƒุจุงุช ุงู„ุฃู…ุงู…ูŠุฉ ุฃุซู†ุงุก ุงุณุชุฎุฏุงู… ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ุนุฏูˆุงู†ูŠุฉ</b>.<br><br>ุงู„ุงูุชุฑุงุถูŠ: 1.25 ุซุงู†ูŠุฉ. - - - How sensitive openpilot is to changes in acceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ู…ุฏู‰ ุญุณุงุณูŠุฉ openpilot ู„ู„ุชุบูŠุฑุงุช ููŠ ุงู„ุชุณุงุฑุน ุนู†ุฏ ุงุณุชุฎุฏุงู… ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ุนุฏูˆุงู†ูŠุฉ</b>. ุชุคุฏูŠ ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุฅู„ู‰ ุชุณุงุฑุน ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆุชุฏุฑูŠุฌูŠุฉุŒ ุจูŠู†ู…ุง ุชุณู…ุญ ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุจุชุบูŠูŠุฑุงุช ุฃุณุฑุน ูˆุฃูƒุซุฑ ุงุณุชุฌุงุจุฉ ู‚ุฏ ุชุจุฏูˆ ู…ูุงุฌุฆุฉ. - - - How sensitive openpilot is to changes in deceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ู…ุฏู‰ ุญุณุงุณูŠุฉ openpilot ู„ู„ุชุบูŠุฑุงุช ููŠ ุงู„ุชุจุงุทุค ุฃุซู†ุงุก ุงุณุชุฎุฏุงู… ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ุนุฏูˆุงู†ูŠุฉ</b>. ุชุคุฏูŠ ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุฅู„ู‰ ุชุจุงุทุค ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆุชุฏุฑูŠุฌูŠุฉุŒ ุจูŠู†ู…ุง ุชุณู…ุญ ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุจุชุบูŠูŠุฑุงุช ุฃุณุฑุน ูˆุฃูƒุซุฑ ุงุณุชุฌุงุจุฉ ู‚ุฏ ุชุจุฏูˆ ู…ูุงุฌุฆุฉ. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Aggressive</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - ู…ุฏู‰ ุญุฐุฑ openpilot ุญูˆู„ ุงู„ู…ุฑูƒุจุงุช ุฃูˆ ุงู„ุนูˆุงุฆู‚ ุงู„ุฃุฎุฑู‰ ุฃุซู†ุงุก ุงุณุชุฎุฏุงู… ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ุนุฏูˆุงู†ูŠุฉ</b>. ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุฒูŠุฏ ู…ู† ู…ุณุงูุงุช ุงู„ู…ุชุงุจุนุฉ ูˆุชุนุทูŠ ุงู„ุฃูˆู„ูˆูŠุฉ ู„ู„ุณู„ุงู…ุฉุŒ ู…ู…ุง ูŠุคุฏูŠ ุฅู„ู‰ ู‚ูŠุงุฏุฉ ุฃูƒุซุฑ ุญุฐุฑุงู‹ุŒ ุจูŠู†ู…ุง ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุชุณู…ุญ ุจุงู„ู…ุชุงุจุนุฉ ุงู„ุฃู‚ุฑุจ ูˆู„ูƒู† ู‚ุฏ ุชู‚ู„ู„ ู…ู† ูˆู‚ุช ุฑุฏ ุงู„ูุนู„. - - - How quickly openpilot increases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - ู…ุฏู‰ ุณุฑุนุฉ ุฒูŠุงุฏุฉ ุงู„ุณุฑุนุฉ ุจูˆุงุณุทุฉ openpilot ุนู†ุฏ ุงุณุชุฎุฏุงู… ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ุนุฏูˆุงู†ูŠุฉ</b>. ุชุถู…ู† ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุบูŠูŠุฑุงุช ุณุฑุนุฉ ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆุชุฏุฑูŠุฌูŠุฉ ุนู†ุฏ ุงู„ุชุณุงุฑุนุŒ ุจูŠู†ู…ุง ุชุณู…ุญ ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุจุชุบูŠูŠุฑุงุช ุฃุณุฑุน ูˆุฃูƒุซุฑ ุงุณุชุฌุงุจุฉ ู‚ุฏ ุชุจุฏูˆ ู…ูุงุฌุฆุฉ. - - - How quickly openpilot decreases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - ู…ุฏู‰ ุณุฑุนุฉ ุชู‚ู„ูŠู„ openpilot ู„ู„ุณุฑุนุฉ ุฃุซู†ุงุก ุงุณุชุฎุฏุงู… ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ุนุฏูˆุงู†ูŠุฉ</b>. ุชุถู…ู† ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุบูŠูŠุฑุงุช ุณุฑุนุฉ ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆุชุฏุฑูŠุฌูŠุฉ ุนู†ุฏ ุงู„ุชุจุงุทุคุŒ ุจูŠู†ู…ุง ุชุณู…ุญ ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุจุชุบูŠูŠุฑุงุช ุฃุณุฑุน ูˆุฃูƒุซุฑ ุงุณุชุฌุงุจุฉ ู‚ุฏ ุชุจุฏูˆ ู…ูุงุฌุฆุฉ. - - - Reset the <b>Aggressive</b> personality profile settings to default values. - ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฅุนุฏุงุฏุงุช ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ุนุฏูˆุงู†ูŠุฉ</b> ุฅู„ู‰ ุงู„ู‚ูŠู… ุงู„ุงูุชุฑุงุถูŠุฉ. - - - Standard Personality - ุงู„ุดุฎุตูŠุฉ ุงู„ู‚ูŠุงุณูŠุฉ - - - Customize the <b>Standard</b> personality profile. Designed for a balanced driving style. - ุชุฎุตูŠุต ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ู‚ูŠุงุณูŠ</b>. ู…ุตู…ู… ู„ุฃุณู„ูˆุจ ู‚ูŠุงุฏุฉ ู…ุชูˆุงุฒู†. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Standard</b> personality profile.<br><br>Default: 1.45 seconds. - ูƒู… ุซุงู†ูŠุฉ ุณูŠุชุจุน openpilot ุฎู„ู ุงู„ู…ุฑูƒุจุงุช ุงู„ุฃู…ุงู…ูŠุฉ ุฃุซู†ุงุก ุงุณุชุฎุฏุงู… ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ู‚ูŠุงุณูŠ</b>.<br><br>ุงู„ุงูุชุฑุงุถูŠ: 1.45 ุซุงู†ูŠุฉ. - - - How sensitive openpilot is to changes in acceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ู…ุฏู‰ ุญุณุงุณูŠุฉ openpilot ู„ู„ุชุบูŠุฑุงุช ููŠ ุงู„ุชุณุงุฑุน ุนู†ุฏ ุงุณุชุฎุฏุงู… ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ู‚ูŠุงุณูŠ</b>. ุชุคุฏูŠ ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุฅู„ู‰ ุชุณุงุฑุน ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆุชุฏุฑูŠุฌูŠุฉุŒ ุจูŠู†ู…ุง ุชุณู…ุญ ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุจุชุบูŠูŠุฑุงุช ุฃุณุฑุน ูˆุฃูƒุซุฑ ุงุณุชุฌุงุจุฉ ู‚ุฏ ุชุจุฏูˆ ู…ูุงุฌุฆุฉ. - - - How sensitive openpilot is to changes in deceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ู…ุฏู‰ ุญุณุงุณูŠุฉ openpilot ู„ู„ุชุบูŠุฑุงุช ููŠ ุงู„ุชุจุงุทุค ุนู†ุฏ ุงุณุชุฎุฏุงู… ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ู‚ูŠุงุณูŠ</b>. ุชุคุฏูŠ ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุฅู„ู‰ ุชุจุงุทุค ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆุชุฏุฑูŠุฌูŠุฉุŒ ุจูŠู†ู…ุง ุชุณู…ุญ ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุจุชุบูŠูŠุฑุงุช ุฃุณุฑุน ูˆุฃูƒุซุฑ ุงุณุชุฌุงุจุฉ ู‚ุฏ ุชุจุฏูˆ ู…ูุงุฌุฆุฉ. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Standard</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - ู…ุฏู‰ ุญุฐุฑ openpilot ุญูˆู„ ุงู„ู…ุฑูƒุจุงุช ุฃูˆ ุงู„ุนูˆุงุฆู‚ ุงู„ุฃุฎุฑู‰ ุฃุซู†ุงุก ุงุณุชุฎุฏุงู… ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ู‚ูŠุงุณูŠ</b>. ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุฒูŠุฏ ู…ู† ู…ุณุงูุงุช ุงู„ู…ุชุงุจุนุฉ ูˆุชุนุทูŠ ุงู„ุฃูˆู„ูˆูŠุฉ ู„ู„ุณู„ุงู…ุฉุŒ ู…ู…ุง ูŠุคุฏูŠ ุฅู„ู‰ ู‚ูŠุงุฏุฉ ุฃูƒุซุฑ ุญุฐุฑุงู‹ุŒ ุจูŠู†ู…ุง ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุชุณู…ุญ ุจุงู„ู…ุชุงุจุนุฉ ุงู„ุฃู‚ุฑุจ ูˆู„ูƒู† ู‚ุฏ ุชู‚ู„ู„ ู…ู† ูˆู‚ุช ุฑุฏ ุงู„ูุนู„. - - - How quickly openpilot increases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - ู…ุฏู‰ ุณุฑุนุฉ ุฒูŠุงุฏุฉ ุงู„ุณุฑุนุฉ ุจูˆุงุณุทุฉ openpilot ุนู†ุฏ ุงุณุชุฎุฏุงู… ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ู‚ูŠุงุณูŠ</b>. ุชุถู…ู† ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุบูŠูŠุฑุงุช ุณุฑุนุฉ ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆุชุฏุฑูŠุฌูŠุฉ ุนู†ุฏ ุงู„ุชุณุงุฑุนุŒ ุจูŠู†ู…ุง ุชุณู…ุญ ุงู„ู‚ูŠู… ุงู„ุฃุฏู†ู‰ ุจุชุบูŠูŠุฑุงุช ุฃุณุฑุน ูˆุฃูƒุซุฑ ุงุณุชุฌุงุจุฉ ู‚ุฏ ุชุจุฏูˆ ู…ูุงุฌุฆุฉ. - - - How quickly openpilot decreases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - ู…ุฏู‰ ุณุฑุนุฉ ุชู‚ู„ูŠู„ openpilot ู„ู„ุณุฑุนุฉ ุนู†ุฏ ุงุณุชุฎุฏุงู… ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ู‚ูŠุงุณูŠ</b>. ุชุถู…ู† ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุบูŠูŠุฑุงุช ุณุฑุนุฉ ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆุชุฏุฑูŠุฌูŠุฉ ุนู†ุฏ ุงู„ุชุจุงุทุคุŒ ุจูŠู†ู…ุง ุชุณู…ุญ ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุจุชุบูŠูŠุฑุงุช ุฃุณุฑุน ูˆุฃูƒุซุฑ ุงุณุชุฌุงุจุฉ ู‚ุฏ ุชุจุฏูˆ ู…ูุงุฌุฆุฉ. - - - Reset the <b>Standard</b> personality profile settings to default values. - ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฅุนุฏุงุฏุงุช ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ู‚ูŠุงุณูŠ</b> ุฅู„ู‰ ุงู„ู‚ูŠู… ุงู„ุงูุชุฑุงุถูŠุฉ. - - - Relaxed Personality - ุดุฎุตูŠุฉ ู…ุฑู†ุฉ - - - Customize the <b>Relaxed</b> personality profile. Designed for a more laid-back driving style. - ุฎุตุต ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ู…ุณุชุฑุฎูŠ</b>. ู…ุตู…ู… ู„ุฃุณู„ูˆุจ ู‚ูŠุงุฏุฉ ุฃูƒุซุฑ ู‡ุฏูˆุกู‹ุง. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Relaxed</b> personality profile.<br><br>Default: 1.75 seconds. - ูƒู… ุนุฏุฏ ุงู„ุซูˆุงู†ูŠ ุงู„ุชูŠ ุณูŠุชุจุน ููŠู‡ุง openpilot ุฎู„ู ุงู„ู…ุฑูƒุจุงุช ุงู„ุฃู…ุงู…ูŠุฉ ุฃุซู†ุงุก ุงุณุชุฎุฏุงู… ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ู…ุณุชุฑุฎูŠ</b>.<br><br>ุงู„ุงูุชุฑุงุถูŠ: 1.75 ุซุงู†ูŠุฉ. - - - How sensitive openpilot is to changes in acceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ู…ุฏู‰ ุญุณุงุณูŠุฉ openpilot ู„ู„ุชุบูŠุฑุงุช ููŠ ุงู„ุชุณุงุฑุน ุนู†ุฏ ุงุณุชุฎุฏุงู… ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ู…ุณุชุฑุฎูŠ</b>. ุชุคุฏูŠ ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุฅู„ู‰ ุชุณุงุฑุน ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆุชุฏุฑูŠุฌูŠุฉุŒ ุจูŠู†ู…ุง ุชุณู…ุญ ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุจุชุบูŠูŠุฑุงุช ุฃุณุฑุน ูˆุฃูƒุซุฑ ุงุณุชุฌุงุจุฉ ู‚ุฏ ุชุจุฏูˆ ู…ูุงุฌุฆุฉ. - - - How sensitive openpilot is to changes in deceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ู…ุฏู‰ ุญุณุงุณูŠุฉ openpilot ู„ู„ุชุบูŠุฑุงุช ููŠ ุงู„ุชุจุงุทุค ุฃุซู†ุงุก ุงุณุชุฎุฏุงู… ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ู…ุณุชุฑุฎูŠ</b>. ุชุคุฏูŠ ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุฅู„ู‰ ุชุจุงุทุค ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆุชุฏุฑูŠุฌูŠุฉุŒ ุจูŠู†ู…ุง ุชุณู…ุญ ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุจุชุบูŠูŠุฑุงุช ุฃุณุฑุน ูˆุฃูƒุซุฑ ุงุณุชุฌุงุจุฉ ู‚ุฏ ุชุจุฏูˆ ู…ูุงุฌุฆุฉ. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Relaxed</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - ู…ุฏู‰ ุญุฐุฑ openpilot ุญูˆู„ ุงู„ู…ุฑูƒุจุงุช ุฃูˆ ุงู„ุนูˆุงุฆู‚ ุงู„ุฃุฎุฑู‰ ุฃุซู†ุงุก ุงุณุชุฎุฏุงู… ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ู…ุณุชุฑุฎูŠ</b>. ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุฒูŠุฏ ู…ู† ู…ุณุงูุงุช ุงู„ู…ุชุงุจุนุฉ ูˆุชุนุทูŠ ุงู„ุฃูˆู„ูˆูŠุฉ ู„ู„ุณู„ุงู…ุฉุŒ ู…ู…ุง ูŠุคุฏูŠ ุฅู„ู‰ ู‚ูŠุงุฏุฉ ุฃูƒุซุฑ ุญุฐุฑุงู‹ุŒ ุจูŠู†ู…ุง ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุชุณู…ุญ ุจุงู„ู…ุชุงุจุนุฉ ุงู„ุฃู‚ุฑุจ ูˆู„ูƒู† ู‚ุฏ ุชู‚ู„ู„ ู…ู† ูˆู‚ุช ุฑุฏ ุงู„ูุนู„. - - - How quickly openpilot increases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - ู…ุฏู‰ ุณุฑุนุฉ ุฒูŠุงุฏุฉ ุงู„ุณุฑุนุฉ ุจูˆุงุณุทุฉ openpilot ุนู†ุฏ ุงุณุชุฎุฏุงู… ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ู…ุณุชุฑุฎูŠ</b>. ุชุถู…ู† ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุบูŠูŠุฑุงุช ุณุฑุนุฉ ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆุชุฏุฑูŠุฌูŠุฉ ุนู†ุฏ ุงู„ุชุณุงุฑุนุŒ ุจูŠู†ู…ุง ุชุณู…ุญ ุงู„ู‚ูŠู… ุงู„ุฃุฏู†ู‰ ุจุชุบูŠูŠุฑุงุช ุฃุณุฑุน ูˆุฃูƒุซุฑ ุงุณุชุฌุงุจุฉ ู‚ุฏ ุชุจุฏูˆ ู…ูุงุฌุฆุฉ. - - - How quickly openpilot decreases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - ู…ุฏู‰ ุณุฑุนุฉ ุชู‚ู„ูŠู„ openpilot ู„ู„ุณุฑุนุฉ ุฃุซู†ุงุก ุงุณุชุฎุฏุงู… ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ู…ุณุชุฑุฎูŠ</b>. ุชุถู…ู† ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุบูŠูŠุฑุงุช ุณุฑุนุฉ ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆุชุฏุฑูŠุฌูŠุฉ ุนู†ุฏ ุงู„ุชุจุงุทุคุŒ ุจูŠู†ู…ุง ุชุณู…ุญ ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุจุชุบูŠูŠุฑุงุช ุฃุณุฑุน ูˆุฃูƒุซุฑ ุงุณุชุฌุงุจุฉ ู‚ุฏ ุชุจุฏูˆ ู…ูุงุฌุฆุฉ. - - - Reset the <b>Relaxed</b> personality profile settings to default values. - ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฅุนุฏุงุฏุงุช ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ <b>ุงู„ู…ุณุชุฑุฎูŠุฉ</b> ุฅู„ู‰ ุงู„ู‚ูŠู… ุงู„ุงูุชุฑุงุถูŠุฉ. - - - Longitudinal Tuning - ุงู„ุถุจุท ุงู„ุทูˆู„ูŠ - - - Settings that control how openpilot manages speed and acceleration. - ุงู„ุฅุนุฏุงุฏุงุช ุงู„ุชูŠ ุชุชุญูƒู… ููŠ ูƒูŠููŠุฉ ุฅุฏุงุฑุฉ openpilot ู„ู„ุณุฑุนุฉ ูˆุงู„ุชุณุงุฑุน. - - - Acceleration Profile - ู…ู„ู ุงู„ุชุณุงุฑุน - - - Enable either a sporty or eco-friendly acceleration profile. <b>Sport+</b> aims to make openpilot accelerate as fast as possible! - ู‚ู… ุจุชู…ูƒูŠู† ุฅู…ุง ู…ู„ู ุชุนุฑูŠู ุชุณุงุฑุน ุฑูŠุงุถูŠ ุฃูˆ ุตุฏูŠู‚ ู„ู„ุจูŠุฆุฉ. <b>Sport+</b> ูŠู‡ุฏู ุฅู„ู‰ ุฌุนู„ openpilot ูŠุชุณุงุฑุน ุจุฃุณุฑุน ู…ุง ูŠู…ูƒู†! - - - Deceleration Profile - ู…ู„ู ุงู„ุชุจุงุทุค - - - Enable either a sporty or eco-friendly deceleration profile. - ู‚ู… ุจุชู…ูƒูŠู† ุฅู…ุง ู…ู„ู ุชุนุฑูŠู ุชุจุงุทุค ุฑูŠุงุถูŠ ุฃูˆ ุตุฏูŠู‚ ู„ู„ุจูŠุฆุฉ. - - - Human-Like Acceleration - ุชุณุงุฑุน ุดุจูŠู‡ ุจุงู„ุฅู†ุณุงู† - - - Use the lead vehicle's acceleration rate when at a takeoff and ramp off the acceleration rate when approaching the maximum set speed for a more "human-like" driving experience. - ุงุณุชุฎุฏู… ู…ุนุฏู„ ุชุณุงุฑุน ุงู„ุณูŠุงุฑุฉ ุงู„ุฃู…ุงู…ูŠุฉ ุนู†ุฏ ุงู„ุงู†ุทู„ุงู‚ ูˆุฎูู ู…ู† ู…ุนุฏู„ ุงู„ุชุณุงุฑุน ุนู†ุฏ ุงู„ุงู‚ุชุฑุงุจ ู…ู† ุงู„ุณุฑุนุฉ ุงู„ู‚ุตูˆู‰ ุงู„ู…ุญุฏุฏุฉ ู„ู„ุญุตูˆู„ ุนู„ู‰ ุชุฌุฑุจุฉ ู‚ูŠุงุฏุฉ ุฃูƒุซุฑ "ุฅู†ุณุงู†ูŠุฉ". - - - Human-Like Approach Behind Leads - ุงู„ู†ู‡ุฌ ุงู„ุดุจูŠู‡ ุจุงู„ุจุดุฑ ูˆุฑุงุก ุงู„ุนู…ู„ุงุก ุงู„ู…ุญุชู…ู„ูŠู† - - - Dynamically adjust the desired following distance when approaching slower or stopped vehicles for a more "human-like" driving experience. - ู‚ู… ุจุชุนุฏูŠู„ ู…ุณุงูุฉ ุงู„ู…ุชุงุจุนุฉ ุงู„ู…ุทู„ูˆุจุฉ ุฏูŠู†ุงู…ูŠูƒูŠู‹ุง ุนู†ุฏ ุงู„ุงู‚ุชุฑุงุจ ู…ู† ุงู„ู…ุฑูƒุจุงุช ุงู„ุฃุจุทุฃ ุฃูˆ ุงู„ู…ุชูˆู‚ูุฉ ู„ุชุฌุฑุจุฉ ู‚ูŠุงุฏุฉ ุฃูƒุซุฑ "ุดุจูŠู‡ุฉ ุจุงู„ุฅู†ุณุงู†". - - - Lead Detection Confidence - ุซู‚ุฉ ุงูƒุชุดุงู ุงู„ุฑุตุงุต - - - How sensitive openpilot is to detecting vehicles ahead. A lower value can help detect vehicles sooner and from farther away, but increases the chance openpilot mistakes other objects for vehicles. - ู…ุฏู‰ ุญุณุงุณูŠุฉ openpilot ููŠ ุงูƒุชุดุงู ุงู„ู…ุฑูƒุจุงุช ุงู„ุฃู…ุงู…ูŠุฉ. ูŠู…ูƒู† ุฃู† ูŠุณุงุนุฏ ุงู†ุฎูุงุถ ุงู„ู‚ูŠู…ุฉ ููŠ ุงูƒุชุดุงู ุงู„ู…ุฑูƒุจุงุช ุจุดูƒู„ ุฃุณุฑุน ูˆู…ู† ู…ุณุงูุฉ ุฃุจุนุฏุŒ ูˆู„ูƒู†ู‡ ูŠุฒูŠุฏ ู…ู† ุงุญุชู…ุงู„ ุฃู† ูŠุฎุทุฆ openpilot ููŠ ุงู„ุชุนุฑู ุนู„ู‰ ุฃุดูŠุงุก ุฃุฎุฑู‰ ูƒู…ุฑูƒุจุงุช. - - - Maximum Acceleration Rate - ู…ุนุฏู„ ุงู„ุชุณุงุฑุน ุงู„ุฃู‚ุตู‰ - - - Set a cap on how fast openpilot can accelerate. - ุญุฏุฏ ุญุฏุงู‹ ุฃู‚ุตู‰ ู„ู…ุฏู‰ ุณุฑุนุฉ ุชุณุงุฑุน openpilot. - - - "Taco Bell Run" Turn Speed Hack - ุชุดุบูŠู„ "Taco Bell Run" ุจุณุฑุนุฉ ูุงุฆู‚ุฉ - - - The turn speed hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to slow down when taking left/right turns for smoother turns. - ุงุฎุชุฑุงู‚ ุณุฑุนุฉ ุงู„ุฏูˆุฑุงู† ู…ู† ู‚ูŠุงุฏุฉ "Taco Bell Run" ู„ุนุงู… 2022 ู…ู† comma. ู…ุตู…ู… ู„ู„ุฅุจุทุงุก ุนู†ุฏ ุงู„ุงู†ุนุทุงู ู„ู„ูŠุณุงุฑ/ุงู„ูŠู…ูŠู† ู„ุชุญู‚ูŠู‚ ุงู†ุนุทุงูุงุช ุฃูƒุซุฑ ุณู„ุงุณุฉ. - - - Quality of Life - ุฌูˆุฏุฉ ุงู„ุญูŠุงุฉ - - - Miscellaneous features to improve the acceleration and braking experience. - ู…ูŠุฒุงุช ู…ุชู†ูˆุนุฉ ู„ุชุญุณูŠู† ุชุฌุฑุจุฉ ุงู„ุชุณุงุฑุน ูˆุงู„ูุฑู…ู„ุฉ. - - - Cruise Interval - ูุชุฑุฉ ุงู„ุฑุญู„ุฉ ุงู„ุจุญุฑูŠุฉ - - - The interval used when changing the cruise control speed. - ุงู„ูุงุตู„ ุงู„ุฒู…ู†ูŠ ุงู„ู…ุณุชุฎุฏู… ุนู†ุฏ ุชุบูŠูŠุฑ ุณุฑุนุฉ ุงู„ุชุญูƒู… ููŠ ุงู„ุณุฑุนุฉ ุงู„ุซุงุจุชุฉ. - - - Cruise Interval (Long Press) - ูุชุฑุฉ ุงู„ุฑุญู„ุฉ (ุถุบุท ู…ุทูˆู„) - - - The interval used when changing the cruise control speed while holding down the button for 0.5+ seconds. - ุงู„ูุงุตู„ ุงู„ุฒู…ู†ูŠ ุงู„ู…ุณุชุฎุฏู… ุนู†ุฏ ุชุบูŠูŠุฑ ุณุฑุนุฉ ุงู„ุชุญูƒู… ููŠ ุงู„ุณุฑุนุฉ ุฃุซู†ุงุก ุงู„ุถุบุท ุนู„ู‰ ุงู„ุฒุฑ ู„ุฃูƒุซุฑ ู…ู† 0.5 ุซุงู†ูŠุฉ. - - - Force Keep openpilot in the Standstill State - ุฅุฌุจุงุฑ ู†ุธุงู… openpilot ุนู„ู‰ ุงู„ุจู‚ุงุก ููŠ ุญุงู„ุฉ ุงู„ุชูˆู‚ู ุงู„ุชุงู… - - - Keep openpilot in the standstill state until either the gas pedal or <b>resume</b> button is pressed. - ุงุญุชูุธ ุจู€ openpilot ููŠ ุญุงู„ุฉ ุงู„ุชูˆู‚ู ุญุชู‰ ูŠุชู… ุงู„ุถุบุท ุนู„ู‰ ุฏูˆุงุณุฉ ุงู„ูˆู‚ูˆุฏ ุฃูˆ ุฒุฑ <b>ุงุณุชุฆู†ุงู</b>. - - - Force Stop for "Detected" Stop Lights/Signs - ุฅูŠู‚ุงู ุฅุฌุจุงุฑูŠ ู„ุฅุดุงุฑุงุช/ุนู„ุงู…ุงุช ุงู„ุชูˆู‚ู "ุงู„ู…ูƒุชุดูุฉ" - - - Force a stop whenever openpilot <b>detects</b> a potential red light/stop sign to prevent it from running the red light/stop sign. - ุฅุฌุจุงุฑ ุงู„ุชูˆู‚ู ูƒู„ู…ุง <b>ุงูƒุชุดู</b> openpilot ุฅุดุงุฑุฉ ุถูˆุฆูŠุฉ ุญู…ุฑุงุก ู…ุญุชู…ู„ุฉ/ุนู„ุงู…ุฉ ุชูˆู‚ู ู„ู…ู†ุนู‡ ู…ู† ุชุฌุงูˆุฒ ุงู„ุฅุดุงุฑุฉ ุงู„ุถูˆุฆูŠุฉ ุงู„ุญู…ุฑุงุก/ุนู„ุงู…ุฉ ุงู„ุชูˆู‚ู. - - - Increase Stopped Distance - ุฒูŠุงุฏุฉ ู…ุณุงูุฉ ุงู„ุชูˆู‚ู - - - Increase the distance openpilot stops behind vehicles. - ุฒูŠุงุฏุฉ ุงู„ู…ุณุงูุฉ ุงู„ุชูŠ ูŠุชูˆู‚ู ููŠู‡ุง openpilot ุฎู„ู ุงู„ู…ุฑูƒุจุงุช. - - - Set Speed Offset - ุชุนูŠูŠู† ุฅุฒุงุญุฉ ุงู„ุณุฑุนุฉ - - - How much higher or lower the set speed should be compared to your current set speed. For example, if you prefer to drive 5 mph above the speed limit, this setting will automatically add that difference when you adjust your set speed. - ู…ุง ู…ุฏู‰ ุงุฑุชูุงุน ุฃูˆ ุงู†ุฎูุงุถ ุงู„ุณุฑุนุฉ ุงู„ู…ุญุฏุฏุฉ ู…ู‚ุงุฑู†ุฉ ุจุงู„ุณุฑุนุฉ ุงู„ู…ุญุฏุฏุฉ ุงู„ุญุงู„ูŠุฉ. ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ุŒ ุฅุฐุง ูƒู†ุช ุชูุถู„ ุงู„ู‚ูŠุงุฏุฉ ุจุณุฑุนุฉ 5 ุฃู…ูŠุงู„ ููŠ ุงู„ุณุงุนุฉ ููˆู‚ ุงู„ุญุฏ ุงู„ุฃู‚ุตู‰ ู„ู„ุณุฑุนุฉุŒ ูุณูŠู‚ูˆู… ู‡ุฐุง ุงู„ุฅุนุฏุงุฏ ุชู„ู‚ุงุฆูŠู‹ุง ุจุฅุถุงูุฉ ู‡ุฐุง ุงู„ูุฑู‚ ุนู†ุฏ ุถุจุท ุณุฑุนุชูƒ ุงู„ู…ุญุฏุฏุฉ. - - - Map Accel/Decel to Gears - ุชุนูŠูŠู† ุงู„ุชุณุงุฑุน/ุงู„ุชุจุงุทุค ุฅู„ู‰ ุงู„ุชุฑูˆุณ - - - Map the acceleration and deceleration profiles to your car's <b>Eco</b> or <b>Sport</b> gear modes. - ู‚ู… ุจุชุนูŠูŠู† ู…ู„ูุงุช ุชุนุฑูŠู ุงู„ุชุณุงุฑุน ูˆุงู„ุชุจุงุทุค ุฅู„ู‰ ุฃูˆุถุงุน ุงู„ุชุฑูˆุณ <b>Eco</b> ุฃูˆ <b>Sport</b> ููŠ ุณูŠุงุฑุชูƒ. - - - Reverse Cruise Increase - ุนูƒุณ ุฒูŠุงุฏุฉ ุงู„ุฑุญู„ุงุช ุงู„ุจุญุฑูŠุฉ - - - Reverse the <b>long press</b> cruise increase feature to increase the max speed by 5 instead of 1 on short presses. - ุนูƒุณ ู…ูŠุฒุฉ ุฒูŠุงุฏุฉ ุงู„ุณุฑุนุฉ ุนู†ุฏ ุงู„ุถุบุท ุงู„ู…ุทูˆู„ ู„ุฒูŠุงุฏุฉ ุงู„ุณุฑุนุฉ ุงู„ู‚ุตูˆู‰ ุจู…ู‚ุฏุงุฑ 5 ุจุฏู„ุงู‹ ู…ู† 1 ุนู†ุฏ ุงู„ุถุบุทุงุช ุงู„ู‚ุตูŠุฑุฉ. - - - Speed Limit Controller - ู…ุญุฏุฏ ุงู„ุณุฑุนุฉ - - - Limit openpilot's maximum driving speed based on data from downloaded maps, <b>Mapbox</b>, <b>Navigate on openpilot</b>, or the dashboard (supported vehicles: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - ุญุฏุฏ ุงู„ุณุฑุนุฉ ุงู„ู‚ุตูˆู‰ ู„ู„ู‚ูŠุงุฏุฉ ููŠ openpilot ุจู†ุงุกู‹ ุนู„ู‰ ุงู„ุจูŠุงู†ุงุช ู…ู† ุงู„ุฎุฑุงุฆุท ุงู„ู…ุญู…ู„ุฉุŒ <b>Mapbox</b>ุŒ <b>Navigate on openpilot</b>ุŒ ุฃูˆ ู„ูˆุญุฉ ุงู„ู‚ูŠุงุฏุฉ (ุงู„ู…ุฑูƒุจุงุช ุงู„ู…ุฏุนูˆู…ุฉ: <b>Ford</b>ุŒ <b>Genesis</b>ุŒ <b>Hyundai</b>ุŒ <b>Kia</b>ุŒ <b>Lexus</b>ุŒ <b>Toyota</b>). - - - Fallback Speed - ุณุฑุนุฉ ุงู„ุงุณุชุฑุฌุงุน - - - The speed limit source when no speed limit data is available. - ู…ุตุฏุฑ ุญุฏ ุงู„ุณุฑุนุฉ ุนู†ุฏ ุนุฏู… ุชูˆูุฑ ุจูŠุงู†ุงุช ุญุฏ ุงู„ุณุฑุนุฉ. - - - Override Speed - ุชุฌุงูˆุฒ ุงู„ุณุฑุนุฉ - - - The speed openpilot uses after manually exceeding the posted speed limit.<br><br><b>- Set With Gas Pedal</b>: Uses the speed obtained while pressing the gas<br><b>- Max Set Speed</b>: Uses the cruise control set speed<br><br>Overrides clear upon disengagement. - Translation B - - - Miscellaneous features to improve the <b>Speed Limit Controller</b> experience. - ู…ูŠุฒุงุช ู…ุชู†ูˆุนุฉ ู„ุชุญุณูŠู† ุชุฌุฑุจุฉ <b>ู…ุชุญูƒู… ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ</b>. - - - Confirm New Speed Limits - ุชุฃูƒูŠุฏ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุงู„ุฌุฏูŠุฏุฉ - - - Require confirmation before applying new speed limits. To accept, use the flashing widget on the driving screen or press the <b>Cruise Increase</b> button. To deny, press the <b>Cruise Decrease</b> button or simply ignore the prompt for 30 seconds. - ุชุชุทู„ุจ ุชุฃูƒูŠุฏู‹ุง ู‚ุจู„ ุชุทุจูŠู‚ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุงู„ุฌุฏูŠุฏุฉ. ู„ู„ู‚ุจูˆู„ุŒ ุงุณุชุฎุฏู… ุงู„ูˆุฏุฌุช ุงู„ูˆู…ูŠุถ ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ ุฃูˆ ุงุถุบุท ุนู„ู‰ ุฒุฑ <b>ุฒูŠุงุฏุฉ ุงู„ุณุฑุนุฉ</b>. ู„ู„ุฑูุถุŒ ุงุถุบุท ุนู„ู‰ ุฒุฑ <b>ุชู‚ู„ูŠู„ ุงู„ุณุฑุนุฉ</b> ุฃูˆ ุจุจุณุงุทุฉ ุชุฌุงู‡ู„ ุงู„ู…ุทุงู„ุจุฉ ู„ู…ุฏุฉ 30 ุซุงู†ูŠุฉ. - - - Force MPH Readings from Dashboard - ูุฑุถ ู‚ุฑุงุกุงุช MPH ู…ู† ู„ูˆุญุฉ ุงู„ู‚ูŠุงุฏุฉ - - - Force dashboard speed limit readings to be in mph. - ูุฑุถ ู‚ุฑุงุกุงุช ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ููŠ ู„ูˆุญุฉ ุงู„ู‚ูŠุงุฏุฉ ู„ุชูƒูˆู† ุจุงู„ู…ูŠู„ ููŠ ุงู„ุณุงุนุฉ. - - - Higher Limit Lookahead Time - ูˆู‚ุช ุงู„ุชุทู„ุน ุฅู„ู‰ ุงู„ุญุฏ ุงู„ุฃุนู„ู‰ - - - How far ahead openpilot anticipates upcoming higher speed limits from the downloaded map data. - ุฅู„ู‰ ุฃูŠ ู…ุฏู‰ ูŠุชูˆู‚ุน openpilot ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุงู„ุฃุนู„ู‰ ุงู„ู‚ุงุฏู…ุฉ ู…ู† ุจูŠุงู†ุงุช ุงู„ุฎุฑูŠุทุฉ ุงู„ู…ุญู…ู„ุฉ. - - - Lower Limit Lookahead Time - ุงู„ุญุฏ ุงู„ุฃุฏู†ู‰ ู„ูˆู‚ุช ุงู„ุชุทู„ุน ุงู„ุฃู…ุงู…ูŠ - - - How far ahead openpilot anticipates upcoming lower speed limits from the downloaded map data. - ุฅู„ู‰ ุฃูŠ ู…ุฏู‰ ูŠุชูˆู‚ุน openpilot ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุงู„ู…ู†ุฎูุถุฉ ุงู„ู‚ุงุฏู…ุฉ ู…ู† ุจูŠุงู†ุงุช ุงู„ุฎุฑูŠุทุฉ ุงู„ุชูŠ ุชู… ุชู†ุฒูŠู„ู‡ุง. - - - Match Speed Limit on Engage - ู…ุทุงุจู‚ุฉ ุญุฏ ุงู„ุณุฑุนุฉ ุนู†ุฏ ุงู„ุชูุนูŠู„ - - - Automatically set cruise control speed to match the current speed limit when first enabling openpilot. - ู‚ู… ุจุถุจุท ุณุฑุนุฉ ุงู„ุชุญูƒู… ููŠ ุงู„ุณุฑุนุฉ ุชู„ู‚ุงุฆูŠู‹ุง ู„ุชุชูˆุงูู‚ ู…ุน ุงู„ุญุฏ ุงู„ุฃู‚ุตู‰ ู„ู„ุณุฑุนุฉ ุงู„ุญุงู„ูŠ ุนู†ุฏ ุชู…ูƒูŠู† openpilot ู„ุฃูˆู„ ู…ุฑุฉ. - - - Use Mapbox as Fallback - ุงุณุชุฎุฏู… Mapbox ูƒุฎูŠุงุฑ ุงุญุชูŠุงุทูŠ - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - ุงุณุชุฎุฏู… ุจูŠุงู†ุงุช ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ู…ู† <b>Mapbox</b> ุนู†ุฏู…ุง ู„ุง ุชุชูˆูุฑ ู…ุตุงุฏุฑ ุฃุฎุฑู‰. - - - Speed Limit Source Priority - ุฃูˆู„ูˆูŠุฉ ู…ุตุฏุฑ ุญุฏ ุงู„ุณุฑุนุฉ - - - Define the priority order for speed limit sources (<b>Dashboard</b>, <b>Map Data</b>, <b>Navigation</b>). Higher-priority sources override lower ones when multiple limits are detected. - ุญุฏุฏ ุชุฑุชูŠุจ ุงู„ุฃูˆู„ูˆูŠุฉ ู„ู…ุตุงุฏุฑ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ (<b>ู„ูˆุญุฉ ุงู„ู‚ูŠุงุฏุฉ</b>, <b>ุจูŠุงู†ุงุช ุงู„ุฎุฑูŠุทุฉ</b>, <b>ุงู„ู…ู„ุงุญุฉ</b>). ุชุชุฌุงูˆุฒ ุงู„ู…ุตุงุฏุฑ ุฐุงุช ุงู„ุฃูˆู„ูˆูŠุฉ ุงู„ุฃุนู„ู‰ ุงู„ู…ุตุงุฏุฑ ุฐุงุช ุงู„ุฃูˆู„ูˆูŠุฉ ุงู„ุฃุฏู†ู‰ ุนู†ุฏ ุงูƒุชุดุงู ุญุฏูˆุฏ ู…ุชุนุฏุฏุฉ. - - - Speed Limit Offsets - ุฅุฒุงุญุงุช ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ - - - Offsets relative to the posted speed limit for a more "human-like" driving experience. - ุฅุฒุงุญุงุช ุจุงู„ู†ุณุจุฉ ู„ู„ุญุฏ ุงู„ุฃู‚ุตู‰ ู„ู„ุณุฑุนุฉ ุงู„ู…ุนู„ู†ุฉ ู„ุชุฌุฑุจุฉ ู‚ูŠุงุฏุฉ ุฃูƒุซุฑ "ุฅู†ุณุงู†ูŠุฉ". - - - Target speed offset applied for posted limits between 0 and 24 mph. - ุชู… ุชุทุจูŠู‚ ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ ุงู„ู…ุณุชู‡ุฏูุฉ ู„ู„ุญุฏูˆุฏ ุงู„ู…ู†ุดูˆุฑุฉ ุจูŠู† 0 ูˆ24 ู…ูŠู„ ููŠ ุงู„ุณุงุนุฉ. - - - Target speed offset applied for posted limits between 25 and 34 mph. - ุชู… ุชุทุจูŠู‚ ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ ุงู„ู…ุณุชู‡ุฏูุฉ ู„ู„ุญุฏูˆุฏ ุงู„ู…ุนู„ู†ุฉ ุจูŠู† 25 ูˆ34 ู…ูŠู„ ููŠ ุงู„ุณุงุนุฉ. - - - Target speed offset applied for posted limits between 35 and 44 mph. - ุชู… ุชุทุจูŠู‚ ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ ุงู„ู…ุณุชู‡ุฏูุฉ ู„ู„ุญุฏูˆุฏ ุงู„ู…ุนู„ู†ุฉ ุจูŠู† 35 ูˆ44 ู…ูŠู„ ููŠ ุงู„ุณุงุนุฉ. - - - Target speed offset applied for posted limits between 45 and 54 mph. - ุชู… ุชุทุจูŠู‚ ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ ุงู„ู…ุณุชู‡ุฏูุฉ ู„ู„ุญุฏูˆุฏ ุงู„ู…ู†ุดูˆุฑุฉ ุจูŠู† 45 ูˆ54 ู…ูŠู„ ููŠ ุงู„ุณุงุนุฉ. - - - Target speed offset applied for posted limits between 55 and 64 mph. - ุชู… ุชุทุจูŠู‚ ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ ุงู„ู…ุณุชู‡ุฏูุฉ ู„ู„ุญุฏูˆุฏ ุงู„ู…ู†ุดูˆุฑุฉ ุจูŠู† 55 ูˆ64 ู…ูŠู„ ููŠ ุงู„ุณุงุนุฉ. - - - Target speed offset applied for posted limits between 65 and 74 mph. - ุชู… ุชุทุจูŠู‚ ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ ุงู„ู…ุณุชู‡ุฏูุฉ ู„ู„ุญุฏูˆุฏ ุงู„ู…ู†ุดูˆุฑุฉ ุจูŠู† 65 ูˆ74 ู…ูŠู„ ููŠ ุงู„ุณุงุนุฉ. - - - Target speed offset applied for posted limits between 75 and 99 mph. - ุชู… ุชุทุจูŠู‚ ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ ุงู„ู…ุณุชู‡ุฏูุฉ ู„ู„ุญุฏูˆุฏ ุงู„ู…ุนู„ู†ุฉ ุจูŠู† 75 ูˆ99 ู…ูŠู„ ููŠ ุงู„ุณุงุนุฉ. - - - Visual Settings - ุฅุนุฏุงุฏุงุช ุงู„ุนุฑุถ - - - Visual features to improve the <b>Speed Limit Controller</b> experience. - ุงู„ู…ูŠุฒุงุช ุงู„ุจุตุฑูŠุฉ ู„ุชุญุณูŠู† ุชุฌุฑุจุฉ <b>ู…ุญุฏุฏ ุงู„ุณุฑุนุฉ</b>. - - - Show Speed Limit Offset - ุนุฑุถ ุชุนูˆูŠุถ ุญุฏ ุงู„ุณุฑุนุฉ - - - Display the speed limit offset separately on the driving screen. - ุนุฑุถ ุชุนูˆูŠุถ ุญุฏ ุงู„ุณุฑุนุฉ ุจุดูƒู„ ู…ู†ูุตู„ ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. - - - Show Speed Limit Sources - ุนุฑุถ ู…ุตุงุฏุฑ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ - - - Display the speed limit sources on the driving screen. - ุนุฑุถ ู…ุตุงุฏุฑ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. - - - seconds - ุซูˆุงู†ูŠ - - - m/sยฒ - m/sยฒ - - - mph - ู…ูŠู„ ููŠ ุงู„ุณุงุนุฉ - - - With Lead - ู…ุน ุงู„ุฑุตุงุต - - - Switch to <b>Experimental Mode</b> when driving below this speed with a lead. - ุงู„ุชุจุฏูŠู„ ุฅู„ู‰ <b>ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ</b> ุนู†ุฏ ุงู„ู‚ูŠุงุฏุฉ ุชุญุช ู‡ุฐู‡ ุงู„ุณุฑุนุฉ ู…ุน ูˆุฌูˆุฏ ู‚ุงุฆุฏ. - - - Slower Lead - ู‚ูŠุงุฏุฉ ุฃุจุทุฃ - - - Stopped Lead - ุชูˆู‚ู ุงู„ุฑุตุงุต - - - Intersections - ุชู‚ุงุทุน ุงู„ุทุฑู‚ - - - Turns - ุชุญูˆู„ุงุช - - - Off - ุฅูŠู‚ุงู - - - second - ุซุงู†ูŠ - - - RESET - ุฅุนุงุฏุฉ ุชุนูŠูŠู† - - - Standard - ู‚ูŠุงุณูŠ - - - Eco - ุฅูŠูƒูˆ - - - Sport - ุฑูŠุงุถุฉ - - - Sport+ - Sport+ - - - feet - ุฃู‚ุฏุงู… - - - Acceleration - ุงู„ุชุณุงุฑุน - - - Deceleration - ุชุจุงุทุค - - - Set Speed - ุถุจุท ุงู„ุณุฑุนุฉ - - - Experimental Mode - ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ - - - Previous Limit - ุงู„ุญุฏ ุงู„ุณุงุจู‚ - - - None - ู„ุง ุดูŠุก - - - Set With Gas Pedal - ุชุนูŠูŠู† ู…ุน ุฏูˆุงุณุฉ ุงู„ูˆู‚ูˆุฏ - - - Max Set Speed - ุงู„ุณุฑุนุฉ ุงู„ู‚ุตูˆู‰ ุงู„ู…ุญุฏุฏุฉ - - - SELECT - SELECT - - - Dashboard - ู„ูˆุญุฉ ุงู„ู‚ูŠุงุฏุฉ - - - Map Data - ุจูŠุงู†ุงุช ุงู„ุฎุฑูŠุทุฉ - - - Navigation - ุงู„ุชู†ู‚ู„ - - - Highest - ุงู„ุฃุนู„ู‰ - - - Lowest - ุงู„ุฃุฏู†ู‰ - - - Select your primary priority - ุญุฏุฏ ุฃูˆู„ูˆูŠุชูƒ ุงู„ุฃุณุงุณูŠุฉ - - - Select your secondary priority - ุงุฎุชุฑ ุฃูˆู„ูˆูŠุชูƒ ุงู„ุซุงู†ูˆูŠุฉ - - - Select your tertiary priority - ุญุฏุฏ ุฃูˆู„ูˆูŠุชูƒ ุงู„ุซุงู„ุซุฉ - - - MANAGE - ุฅุฏุงุฑุฉ - - - Lower Limits - ุงู„ุญุฏูˆุฏ ุงู„ุฏู†ูŠุง - - - Higher Limits - ุญุฏูˆุฏ ุฃุนู„ู‰ - - - Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฅุนุฏุงุฏุงุชูƒ ุจุงู„ูƒุงู…ู„ ู„ูˆุถุน <b>ุญุฑูƒุฉ ุงู„ู…ุฑูˆุฑ</b>ุŸ - - - Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฅุนุฏุงุฏุงุชูƒ ุจุงู„ูƒุงู…ู„ ู„ุดุฎุตูŠุฉ <b>ุงู„ุนุฏูˆุงู†ูŠุฉ</b>ุŸ - - - Are you sure you want to completely reset your settings for the <b>Standard</b> personality? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฅุนุฏุงุฏุงุชูƒ ุจุงู„ูƒุงู…ู„ ู„ุดุฎุตูŠุฉ <b>Standard</b>ุŸ - - - Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฅุนุฏุงุฏุงุชูƒ ุจุงู„ูƒุงู…ู„ ู„ุดุฎุตูŠุฉ <b>ุงู„ุงุณุชุฑุฎุงุก</b>ุŸ - - - foot - ู‚ุฏู… - - - meter - ู…ุชุฑ - - - meters - ู…ุชุฑ - - - km/h - km/h - - - Target speed offset applied for posted limits between 0 and 29 km/h. - ุชู… ุชุทุจูŠู‚ ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ ุงู„ู…ุณุชู‡ุฏูุฉ ู„ู„ุญุฏูˆุฏ ุงู„ู…ู†ุดูˆุฑุฉ ุจูŠู† 0 ูˆ29 ูƒู…/ุณุงุนุฉ. - - - Target speed offset applied for posted limits between 30 and 49 km/h. - ุชู… ุชุทุจูŠู‚ ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ ุงู„ู…ุณุชู‡ุฏูุฉ ู„ู„ุญุฏูˆุฏ ุงู„ู…ู†ุดูˆุฑุฉ ุจูŠู† 30 ูˆ49 ูƒู…/ุณุงุนุฉ. - - - Target speed offset applied for posted limits between 50 and 59 km/h. - ุชู… ุชุทุจูŠู‚ ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ ุงู„ู…ุณุชู‡ุฏูุฉ ู„ู„ุญุฏูˆุฏ ุงู„ู…ุนู„ู†ุฉ ุจูŠู† 50 ูˆ59 ูƒู…/ุณุงุนุฉ. - - - Target speed offset applied for posted limits between 60 and 79 km/h. - ุชู… ุชุทุจูŠู‚ ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ ุงู„ู…ุณุชู‡ุฏูุฉ ู„ู„ุญุฏูˆุฏ ุงู„ู…ุนู„ู†ุฉ ุจูŠู† 60 ูˆ79 ูƒู…/ุณุงุนุฉ. - - - Target speed offset applied for posted limits between 80 and 99 km/h. - ุชู… ุชุทุจูŠู‚ ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ ุงู„ู…ุณุชู‡ุฏูุฉ ู„ู„ุญุฏูˆุฏ ุงู„ู…ุนู„ู†ุฉ ุจูŠู† 80 ูˆ99 ูƒู…/ุณุงุนุฉ. - - - Target speed offset applied for posted limits between 100 and 119 km/h. - ุชู… ุชุทุจูŠู‚ ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ ุงู„ู…ุณุชู‡ุฏูุฉ ู„ู„ุญุฏูˆุฏ ุงู„ู…ุนู„ู†ุฉ ุจูŠู† 100 ูˆ119 ูƒู…/ุณุงุนุฉ. - - - Target speed offset applied for posted limits between 120 and 140 km/h. - ุชู… ุชุทุจูŠู‚ ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ ุงู„ู…ุณุชู‡ุฏูุฉ ู„ู„ุญุฏูˆุฏ ุงู„ู…ู†ุดูˆุฑุฉ ุจูŠู† 120 ูˆ140 ูƒู…/ุณ. - Advanced Longitudinal Tuning - ุงู„ุถุจุท ุงู„ุทูˆู„ูŠ ุงู„ู…ุชู‚ุฏู… + ุงู„ุถุจุท ุงู„ุทูˆู„ูŠ ุงู„ู…ุชู‚ุฏู… - Advanced settings for customizing how openpilot handles acceleration and braking. - ุฅุนุฏุงุฏุงุช ู…ุชู‚ุฏู…ุฉ ู„ุชุฎุตูŠุต ูƒูŠููŠุฉ ุชุนุงู…ู„ openpilot ู…ุน ุงู„ุชุณุงุฑุน ูˆุงู„ูุฑู…ู„ุฉ. + <b>Advanced acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>ุชุบูŠูŠุฑุงุช ู…ุชู‚ุฏู…ุฉ ููŠ ุงู„ุชุญูƒู… ุจุงู„ุชุณุงุฑุน ูˆุงู„ูุฑู…ู„ุฉ</b> ู„ุถุจุท ูƒูŠููŠุฉ ู‚ูŠุงุฏุฉ openpilot ุจุฏู‚ุฉ. Actuator Delay (Default: %1) - ุชุฃุฎูŠุฑ ุงู„ู…ุดุบู„ (ุงู„ุงูุชุฑุงุถูŠ: %1) + ุชุฃุฎูŠุฑ ุงู„ู…ุดุบู‘ู„ (ุงู„ุงูุชุฑุงุถูŠ: %1) Actuator Delay - ุชุฃุฎูŠุฑ ุงู„ู…ุดุบู„ + ุชุฃุฎูŠุฑ ุงู„ู…ุดุบู‘ู„ - Delay before throttle or brake takes effect. Higher values smooth slow actuators but can feel laggy; lower values react quicker but may overshoot. - ุชุฃุฎูŠุฑ ู‚ุจู„ ุฃู† ูŠุจุฏุฃ ุชุฃุซูŠุฑ ุงู„ุฎู†ู‚ ุฃูˆ ุงู„ูุฑุงู…ู„. ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุฌุนู„ ุงู„ู…ุญุฑูƒุงุช ุงู„ุจุทูŠุฆุฉ ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆู„ูƒู† ู‚ุฏ ุชุดุนุฑ ุจุงู„ุชุฃุฎูŠุฑุ› ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุชุชูุงุนู„ ุจุดูƒู„ ุฃุณุฑุน ูˆู„ูƒู† ู‚ุฏ ุชุชุฌุงูˆุฒ ุงู„ู‡ุฏู. + <b>The time between openpilot's throttle or brake command and the vehicle's response.</b> Increase if the vehicle feels slow to react; decrease if it feels too eager or overshoots. + <b>ุงู„ูˆู‚ุช ุจูŠู† ุฃู…ุฑ ุงู„ุฏูˆุงุณุฉ ุฃูˆ ุงู„ูุฑุงู…ู„ ู…ู† openpilot ูˆุงุณุชุฌุงุจุฉ ุงู„ู…ุฑูƒุจุฉ.</b> ุฒุฏู’ู‡ ุฅุฐุง ุจุฏุช ุงู„ู…ุฑูƒุจุฉ ุจุทูŠุฆุฉ ููŠ ุงู„ุงุณุชุฌุงุจุฉุ› ุฃู†ู‚ูุตู’ู‡ ุฅุฐุง ุจุฏุช ู…ุชุญู…ุณุฉ ุฃูƒุซุฑ ู…ู† ุงู„ู„ุงุฒู… ุฃูˆ ุชุชุฌุงูˆุฒ ุงู„ู‡ุฏู.</b> Start Acceleration (Default: %1) - ุจุฏุก ุงู„ุชุณุงุฑุน (ุงู„ุงูุชุฑุงุถูŠ: %1) + ุจุฏุก ุงู„ุชุณุงุฑุน (ุงู„ุงูุชุฑุงุถูŠ: %1) Start Acceleration - ุจุฏุก ุงู„ุชุณุงุฑุน + ุจุฏุก ุงู„ุชุณุงุฑุน - Extra acceleration applied when pulling away from a stop. Increase for snappier launches at the cost of smoothness; decrease for gentler starts. - ุชุณุงุฑุน ุฅุถุงููŠ ูŠุชู… ุชุทุจูŠู‚ู‡ ุนู†ุฏ ุงู„ุงู†ุทู„ุงู‚ ู…ู† ุงู„ุชูˆู‚ู. ุฒูŠุงุฏุฉ ู„ู„ุญุตูˆู„ ุนู„ู‰ ุงู†ุทู„ุงู‚ุงุช ุฃูƒุซุฑ ุญุฏุฉ ุนู„ู‰ ุญุณุงุจ ุงู„ุณู„ุงุณุฉุ› ุชู‚ู„ูŠู„ ู„ู„ุญุตูˆู„ ุนู„ู‰ ุจุฏุงูŠุงุช ุฃูƒุซุฑ ู„ุทูู‹ุง. + <b>Extra acceleration applied when starting from a stop.</b> Increase for quicker takeoffs; decrease for smoother, gentler starts. + <b>ุชุณุงุฑุน ุฅุถุงููŠ ูŠูุทุจู‘ูŽู‚ ุนู†ุฏ ุงู„ุจุฏุก ู…ู† ุงู„ุชูˆู‚ู.</b> ุฒุฏู’ู‡ ู„ุงู†ุทู„ุงู‚ุงุช ุฃุณุฑุนุ› ูˆุฎูู‘ูุถู‡ ู„ุจุฏุงูŠุงุช ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆู„ุทูู‹ุง. Start Speed (Default: %1) - ุณุฑุนุฉ ุงู„ุจุฏุก (ุงู„ุงูุชุฑุงุถูŠ: %1) + ุณุฑุนุฉ ุงู„ุจุฏุก (ุงู„ุงูุชุฑุงุถูŠ: %1) Start Speed - ุจุฏุก ุงู„ุณุฑุนุฉ + ุณุฑุนุฉ ุงู„ุจุฏุก - Speed where openpilot begins to exit the stopped state. Higher values avoid creeping but may feel sluggish; lower values move sooner but risk creeping. - ุงู„ุณุฑุนุฉ ุงู„ุชูŠ ูŠุจุฏุฃ ููŠู‡ุง openpilot ุจุงู„ุฎุฑูˆุฌ ู…ู† ุญุงู„ุฉ ุงู„ุชูˆู‚ู. ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุชุฌู†ุจ ุงู„ุฒุญู ูˆู„ูƒู† ู‚ุฏ ุชุดุนุฑ ุจุงู„ุจุทุกุ› ุงู„ู‚ูŠู… ุงู„ุฃุฏู†ู‰ ุชุชุญุฑูƒ ููŠ ูˆู‚ุช ุฃู‚ุฑุจ ูˆู„ูƒู†ู‡ุง ุชุฎุงุทุฑ ุจุงู„ุฒุญู. + <b>The speed at which openpilot exits the stopped state.</b> Increase to reduce creeping; decrease to move sooner after stopping. + <b>ุงู„ุณุฑุนุฉ ุงู„ุชูŠ ูŠุฎุฑุฌ ุจู‡ุง openpilot ู…ู† ุญุงู„ุฉ ุงู„ุชูˆู‚ู.</b> ุฒุฏู‡ุง ู„ุชู‚ู„ูŠู„ ุงู„ุฒุญูุ› ุฎูู‘ุถู‡ุง ู„ู„ุชุญุฑูƒ ุฃุณุฑุน ุจุนุฏ ุงู„ุชูˆู‚ู. Stop Acceleration (Default: %1) - ุฅูŠู‚ุงู ุงู„ุชุณุงุฑุน (ุงู„ุงูุชุฑุงุถูŠ: %1) + ุฅูŠู‚ุงู ุงู„ุชุณุงุฑุน (ุงู„ุงูุชุฑุงุถูŠ: %1) Stop Acceleration - ุฅูŠู‚ุงู ุงู„ุชุณุงุฑุน + ุฃูˆู‚ู ุงู„ุชุณุงุฑุน - Brake force applied to hold the vehicle still. Larger values prevent creeping on hills but might jerk to a stop. Smaller values can feel smoother but may allow rolling. - ูŠุชู… ุชุทุจูŠู‚ ู‚ูˆุฉ ุงู„ูุฑุงู…ู„ ู„ุฅุจู‚ุงุก ุงู„ู…ุฑูƒุจุฉ ุซุงุจุชุฉ. ุงู„ู‚ูŠู… ุงู„ุฃูƒุจุฑ ุชู…ู†ุน ุงู„ุฒุญู ุนู„ู‰ ุงู„ุชู„ุงู„ ูˆู„ูƒู† ู‚ุฏ ุชุคุฏูŠ ุฅู„ู‰ ุชูˆู‚ู ู…ูุงุฌุฆ. ุงู„ู‚ูŠู… ุงู„ุฃุตุบุฑ ู‚ุฏ ุชูƒูˆู† ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆู„ูƒู† ู‚ุฏ ุชุณู…ุญ ุจุงู„ุชุฏุญุฑุฌ. + <b>Brake force applied to hold the vehicle at a standstill.</b> Increase to prevent rolling on hills; decrease for smoother, softer stops. + <b>ุชู… ุชุทุจูŠู‚ ู‚ูˆุฉ ุงู„ูƒุจุญ ู„ุฅุจู‚ุงุก ุงู„ู…ุฑูƒุจุฉ ู…ุชูˆู‚ูุฉ ุชู…ุงู…ู‹ุง.</b> ุฒุฏู‡ุง ู„ู…ู†ุน ุงู„ุชุฏุญุฑุฌ ุนู„ู‰ ุงู„ู…ู†ุญุฏุฑุงุชุ› ุฎููู‡ุง ู„ุชูˆู‚ูุงุช ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆู†ุนูˆู…ุฉ. Stopping Rate (Default: %1) - ู…ุนุฏู„ ุงู„ุฅูŠู‚ุงู (ุงู„ุงูุชุฑุงุถูŠ: %1) + ู…ุนุฏู„ ุงู„ุฅูŠู‚ุงู (ุงู„ุงูุชุฑุงุถูŠ: %1) Stopping Rate - ู…ุนุฏู„ ุงู„ุชูˆู‚ู + ู…ุนุฏู„ ุงู„ุชูˆู‚ู - How quickly braking ramps up when stopping. Faster rates shorten stopping distance but can be harsh; slower rates are smoother but need more room. - ู…ุฏู‰ ุณุฑุนุฉ ุฒูŠุงุฏุฉ ุงู„ูƒุจุญ ุนู†ุฏ ุงู„ุชูˆู‚ู. ู…ุนุฏู„ุงุช ุฃุณุฑุน ุชู‚ุตุฑ ู…ุณุงูุฉ ุงู„ุชูˆู‚ู ูˆู„ูƒู† ูŠู…ูƒู† ุฃู† ุชูƒูˆู† ู‚ุงุณูŠุฉุ› ู…ุนุฏู„ุงุช ุฃุจุทุฃ ุชูƒูˆู† ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆู„ูƒู† ุชุญุชุงุฌ ุฅู„ู‰ ู…ุณุงุญุฉ ุฃูƒุจุฑ. + <b>How quickly braking ramps up when stopping.</b> Increase for shorter, firmer stops; decrease for smoother, longer stops. + <b>ุณุฑุนุฉ ุชุตุงุนุฏ ุงู„ูƒุจุญ ุนู†ุฏ ุงู„ุชูˆู‚ู.</b> ุฒูุฏู‡ุง ู„ุชูˆู‚ูุงุช ุฃู‚ุตุฑ ูˆุฃูƒุซุฑ ุตู„ุงุจุฉุ› ุฎูู‘ุถู‡ุง ู„ุชูˆู‚ูุงุช ุฃู†ุนู… ูˆุฃุทูˆู„. Stop Speed (Default: %1) - ุฅูŠู‚ุงู ุงู„ุณุฑุนุฉ (ุงู„ุงูุชุฑุงุถูŠ: %1) + ุณุฑุนุฉ ุงู„ุชูˆู‚ู (ุงู„ุงูุชุฑุงุถูŠ: %1) Stop Speed - ุฅูŠู‚ุงู ุงู„ุณุฑุนุฉ + ุณุฑุนุฉ ุงู„ุชูˆู‚ู - Speed where openpilot beings to enter the stopped state. Higher values brake earlier for smoother stops but might stop too soon; lower values wait longer and can overshoot. - ุงู„ุณุฑุนุฉ ุงู„ุชูŠ ูŠุจุฏุฃ ููŠู‡ุง openpilot ุจุงู„ุฏุฎูˆู„ ููŠ ุญุงู„ุฉ ุงู„ุชูˆู‚ู. ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชูƒุจุญ ููŠ ูˆู‚ุช ู…ุจูƒุฑ ู„ุชูˆู‚ูุงุช ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆู„ูƒู† ู‚ุฏ ุชุชูˆู‚ู ููŠ ูˆู‚ุช ู…ุจูƒุฑ ุฌุฏู‹ุงุ› ุงู„ู‚ูŠู… ุงู„ุฃุฏู†ู‰ ุชู†ุชุธุฑ ู„ูุชุฑุฉ ุฃุทูˆู„ ูˆู‚ุฏ ุชุชุฌุงูˆุฒ ุงู„ู†ู‚ุทุฉ ุงู„ู…ุญุฏุฏุฉ. + <b>The speed at which openpilot considers the vehicle stopped.</b> Increase to brake earlier and stop smoothly; decrease to wait longer but risk overshooting. + <b>ุงู„ุณุฑุนุฉ ุงู„ุชูŠ ูŠุนุชุจุฑ ุนู†ุฏู‡ุง openpilot ุงู„ู…ุฑูƒุจุฉ ู…ุชูˆู‚ูุฉ.</b> ุฒูุฏู‡ุง ู„ู„ูุฑู…ู„ุฉ ู…ุจูƒุฑู‹ุง ูˆุงู„ุชูˆู‚ู ุจุณู„ุงุณุฉุ› ุฎูู‘ุถู‡ุง ู„ู„ุงู†ุชุธุงุฑ ู…ุฏุฉ ุฃุทูˆู„ ู„ูƒู† ู…ุน ุฎุทุฑ ุชุฌุงูˆุฒ ู†ู‚ุทุฉ ุงู„ุชูˆู‚ู. + + + Conditional Experimental Mode + ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ ุงู„ู…ุดุฑูˆุท + + + <b>Automatically switch to "Experimental Mode" when set conditions are met.</b> Allows the model to handle challenging situations with smarter decision making. + <b>ุงู„ุชุญูˆูŠู„ ุชู„ู‚ุงุฆูŠู‹ุง ุฅู„ู‰ "ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ" ุนู†ุฏ ุงุณุชูŠูุงุก ุงู„ุดุฑูˆุท ุงู„ู…ุญุฏุฏุฉ.</b> ูŠุณู…ุญ ู„ู„ู†ู…ูˆุฐุฌ ุจุงู„ุชุนุงู…ู„ ู…ุน ุงู„ู…ูˆุงู‚ู ุงู„ุตุนุจุฉ ุจู‚ุฑุงุฑุงุช ุฃูƒุซุฑ ุฐูƒุงุกู‹. + + + Below + ุฃุฏู†ุงู‡ + + + <b>Switch to "Experimental Mode" when driving below this speed without a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>ุจุฏู‘ู„ ุฅู„ู‰ "ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ" ุนู†ุฏ ุงู„ู‚ูŠุงุฏุฉ ุชุญุช ู‡ุฐู‡ ุงู„ุณุฑุนุฉ ุฏูˆู† ุณูŠุงุฑุฉ ุฃู…ุงู…ูƒ</b> ู„ู…ุณุงุนุฏุฉ openpilot ุนู„ู‰ ุงู„ุชุนุงู…ู„ ู…ุน ุญุงู„ุงุช ุงู„ุณุฑุนุฉ ุงู„ู…ู†ุฎูุถุฉ ุจุณู„ุงุณุฉ ุฃูƒุจุฑ. + + + Curve Detected Ahead + ุชู… ุงูƒุชุดุงู ู…ู†ุนุทู ุฃู…ุงู…ูƒ + + + <b>Switch to "Experimental Mode" when a curve is detected</b> to allow the model to set an appropriate speed for the curve. + <b>ุจุฏู‘ู„ ุฅู„ู‰ "ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ" ุนู†ุฏ ุงูƒุชุดุงู ู…ู†ุนุทู</b> ู„ู„ุณู…ุงุญ ู„ู„ู†ู…ูˆุฐุฌ ุจุชุญุฏูŠุฏ ุณุฑุนุฉ ู…ู†ุงุณุจุฉ ู„ู„ู…ู†ุนุทู. + + + Lead Detected Ahead + ุชู… ุงูƒุชุดุงู ู…ุฑูƒุจุฉ ุฃู…ุงู…ูƒ + + + <b>Switch to "Experimental Mode" when a slower or stopped vehicle is detected.</b> Can make braking smoother and more reliable on some vehicles. + <b>ุจุฏู‘ู„ ุฅู„ู‰ "ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ" ุนู†ุฏ ุงูƒุชุดุงู ู…ุฑูƒุจุฉ ุฃุจุทุฃ ุฃูˆ ู…ุชูˆู‚ูุฉ.</b> ู‚ุฏ ูŠุฌุนู„ ุงู„ูƒุจุญ ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆุงุนุชู…ุงุฏูŠุฉ ููŠ ุจุนุถ ุงู„ู…ุฑูƒุจุงุช. + + + Navigation-Based + ู…ุนุชู…ุฏ ุนู„ู‰ ุงู„ู…ู„ุงุญุฉ + + + <b>Switch to "Experimental Mode" when approaching intersections or turns on the active route</b> while using "Navigate on openpilot" (NOO) to allow the model to set an appropriate speed for upcoming maneuvers. + <b>ุจุฏู‘ู„ ุฅู„ู‰ "ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ" ุนู†ุฏ ุงู„ุงู‚ุชุฑุงุจ ู…ู† ุงู„ุชู‚ุงุทุนุงุช ุฃูˆ ุงู„ู…ู†ุนุทูุงุช ุนู„ู‰ ุงู„ู…ุณุงุฑ ุงู„ู†ุดุท</b> ุฃุซู†ุงุก ุงุณุชุฎุฏุงู… "Navigate on openpilot" (NOO) ู„ู„ุณู…ุงุญ ู„ู„ู†ู…ูˆุฐุฌ ุจุถุจุท ุณุฑุนุฉ ู…ู†ุงุณุจุฉ ู„ู„ู…ู†ุงูˆุฑุงุช ุงู„ู‚ุงุฏู…ุฉ. + + + Predicted Stop In + ุงู„ุชูˆู‚ู ุงู„ู…ุชูˆู‚ุน ุฎู„ุงู„ + + + <b>Switch to "Experimental Mode" when openpilot predicts a stop within the set time.</b> This is usually triggered when the model "sees" a red light or stop sign ahead.<br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>ุจุฏู‘ู„ ุฅู„ู‰ "ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ" ุนู†ุฏู…ุง ูŠุชูˆู‚ุน openpilot ุชูˆู‚ูู‹ุง ุถู…ู† ุงู„ูˆู‚ุช ุงู„ู…ุญุฏุฏ.</b> ุนุงุฏุฉู‹ ู…ุง ูŠุชู… ุชุดุบูŠู„ ุฐู„ูƒ ุนู†ุฏู…ุง "ูŠุฑู‰" ุงู„ู†ู…ูˆุฐุฌ ุฅุดุงุฑุฉ ุถูˆุก ุฃุญู…ุฑ ุฃูˆ ุนู„ุงู…ุฉ ุชูˆู‚ู ููŠ ุงู„ุฃู…ุงู….<br><br><i><b>ุฅุฎู„ุงุก ุงู„ู…ุณุคูˆู„ูŠุฉ</b>: ู„ุง ูŠูƒุชุดู openpilot ุฅุดุงุฑุงุช ุงู„ู…ุฑูˆุฑ ุฃูˆ ุนู„ุงู…ุงุช ุงู„ุชูˆู‚ู ุตุฑุงุญุฉู‹. ููŠ "ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ"ุŒ ูŠุชุฎุฐ openpilot ู‚ุฑุงุฑุงุช ู‚ูŠุงุฏุฉ ุดุงู…ู„ุฉ ู…ู† ู…ุฏุฎู„ุงุช ุงู„ูƒุงู…ูŠุฑุงุŒ ู…ุง ูŠุนู†ูŠ ุฃู†ู‡ ู‚ุฏ ูŠุชูˆู‚ู ุญุชู‰ ุนู†ุฏู…ุง ู„ุง ูŠูƒูˆู† ู‡ู†ุงูƒ ุณุจุจ ูˆุงุถุญ.</i> + + + Turn Signal Below + ุฅุดุงุฑุฉ ุงู„ุงู†ุนุทุงู ุฃุฏู†ุงู‡ + + + <b>Switch to "Experimental Mode" when using a turn signal below the set speed</b> to allow the model to choose an appropriate speed for smoother left and right turns. + <b>ุจุฏู‘ู„ ุฅู„ู‰ "ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ" ุนู†ุฏ ุงุณุชุฎุฏุงู… ุฅุดุงุฑุฉ ุงู„ุงู†ุนุทุงู ุฃุฏู†ู‰ ู…ู† ุงู„ุณุฑุนุฉ ุงู„ู…ุถุจูˆุทุฉ</b> ู„ู„ุณู…ุงุญ ู„ู„ู†ู…ูˆุฐุฌ ุจุงุฎุชูŠุงุฑ ุณุฑุนุฉ ู…ู†ุงุณุจุฉ ู„ุงู†ุนุทุงูุงุช ูŠุณุงุฑ ูˆูŠู…ูŠู† ุฃูƒุซุฑ ุณู„ุงุณุฉ. + + + Status Widget + ุฃุฏุงุฉ ุงู„ุญุงู„ุฉ + + + <b>Show which condition triggered "Experimental Mode"</b> on the driving screen. + <b>ุงุนุฑุถ ุงู„ุญุงู„ุฉ ุงู„ุชูŠ ูุนู‘ู„ุช "ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ"</b> ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. + + + Curve Speed Controller + ู…ูุชุญูƒู‘ูู… ุณุฑุนุฉ ุงู„ู…ู†ุนุทูุงุช + + + <b>Automatically slow down for upcoming curves</b> using data learned from your driving style, adapting to curves as you would. + <b>ุงู„ุฅุจุทุงุก ุชู„ู‚ุงุฆูŠู‹ุง ู„ู„ู…ู†ุนุทูุงุช ุงู„ู‚ุงุฏู…ุฉ</b> ุจุงุณุชุฎุฏุงู… ุจูŠุงู†ุงุช ู…ุชุนู„ู…ุฉ ู…ู† ุฃุณู„ูˆุจ ู‚ูŠุงุฏุชูƒุŒ ู„ู„ุชูƒูŠู ู…ุน ุงู„ู…ู†ุญู†ูŠุงุช ูƒู…ุง ุชูุนู„ ุฃู†ุช. + + + Calibrated Lateral Acceleration + ุชุณุงุฑุน ุฌุงู†ุจูŠ ู…ูุนุงูŠุฑ + + + <b>The learned lateral acceleration from collected driving data.</b> This sets how fast openpilot will take curves. Higher values allow faster cornering; lower values slow the vehicle for gentler turns. + <b>ุงู„ุชุณุงุฑุน ุงู„ุฌุงู†ุจูŠ ุงู„ู…ุชุนู„ู… ู…ู† ุจูŠุงู†ุงุช ุงู„ู‚ูŠุงุฏุฉ ุงู„ู…ุฌู…ุนุฉ.</b> ูŠุญุฏุฏ ุฐู„ูƒ ู…ุฏู‰ ุณุฑุนุฉ ุฏุฎูˆู„ openpilot ุฅู„ู‰ ุงู„ู…ู†ุนุทูุงุช. ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุณู…ุญ ุจู…ู†ุนุทูุงุช ุฃุณุฑุนุ› ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุชุจุทู‘ุฆ ุงู„ู…ุฑูƒุจุฉ ู„ู…ู†ุนุทูุงุช ุฃูƒุซุฑ ู„ุทูู‹ุง. + + + Calibration Progress + ุชู‚ุฏู… ุงู„ู…ุนุงูŠุฑุฉ + + + <b>How much curve data has been collected.</b> This is a progress meter; it is normal for the value to stay low and rarely reach 100%. + <b>ูƒู…ูŠุฉ ุจูŠุงู†ุงุช ุงู„ู…ู†ุญู†ูŠุงุช ุงู„ุชูŠ ุชู… ุฌู…ุนู‡ุง.</b> ู‡ุฐุง ู…ู‚ูŠุงุณ ุชู‚ุฏู‘ู…ุ› ู…ู† ุงู„ุทุจูŠุนูŠ ุฃู† ูŠุจู‚ู‰ ุงู„ู…ุคุดุฑ ู…ู†ุฎูุถู‹ุง ูˆู†ุงุฏุฑู‹ุง ู…ุง ูŠุตู„ ุฅู„ู‰ 100%. + + + Reset Curve Data + ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุจูŠุงู†ุงุช ุงู„ู…ู†ุญู†ู‰ + + + <b>Reset collected user data for "Curve Speed Controller".</b> + <b>ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุจูŠุงู†ุงุช ุงู„ู…ุณุชุฎุฏู… ุงู„ู…ุฌู…ู‘ุนุฉ ู„ู…ูŠุฒุฉ "Curve Speed Controller".</b> + + + <b>Show the "Curve Speed Controller" target speed on the driving screen.</b> + <b>ุงุนุฑุถ ุณุฑุนุฉ ุงู„ู‡ุฏู ู„ูˆุธูŠูุฉ "Curve Speed Controller" ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ.</b> + + + Driving Personalities + ุฃู†ู…ุงุท ุงู„ู‚ูŠุงุฏุฉ + + + <b>Customize the "Driving Personalities"</b> to better match your driving style. + <b>ุฎุตุต "ุดุฎุตูŠุงุช ุงู„ู‚ูŠุงุฏุฉ"</b> ู„ุชุทุงุจู‚ ุฃุณู„ูˆุจ ู‚ูŠุงุฏุชูƒ ุจุดูƒู„ ุฃูุถู„. + + + Traffic Mode + ูˆุถุน ุญุฑูƒุฉ ุงู„ู…ุฑูˆุฑ + + + <b>Customize the "Traffic Mode" personality profile.</b> Designed for stop-and-go driving. + <b>ุฎุตู‘ุต ู…ู„ู ุชุนุฑูŠู ุดุฎุตูŠุฉ "ูˆุถุน ุงู„ู…ุฑูˆุฑ".</b> ู…ุตู…ู… ู„ู„ู‚ูŠุงุฏุฉ ุงู„ู…ุชู‚ุทุนุฉ (ุชูˆู‚ู ูˆุงู†ุทู„ุงู‚). + + + Following Distance + ู…ุณุงูุฉ ุงู„ุชุชุจู‘ุน + + + <b>The minimum following distance to the lead vehicle in "Traffic Mode".</b> openpilot blends between this value and the "Aggressive" profile as speed increases. Increase for more space; decrease for tighter gaps. + <b>ุฃู‚ู„ ู…ุณุงูุฉ ู…ุชุงุจุนุฉ ู„ู„ู…ุฑูƒุจุฉ ุงู„ุฃู…ุงู…ูŠุฉ ููŠ "ูˆุถุน ุงู„ุงุฒุฏุญุงู…".</b> ูŠู‚ูˆู… openpilot ุจุงู„ู…ุฒุฌ ุจูŠู† ู‡ุฐู‡ ุงู„ู‚ูŠู…ุฉ ูˆู…ู„ู "ุนุฏูˆุงู†ูŠ" ู…ุน ุฒูŠุงุฏุฉ ุงู„ุณุฑุนุฉ. ุฒุฏู‡ุง ู„ู…ุฒูŠุฏ ู…ู† ุงู„ู…ุณุงูุฉุ› ุฎูู‘ุถู‡ุง ู„ูุฑุงุบุงุช ุฃุถูŠู‚. + + + Acceleration Smoothness + ุณู„ุงุณุฉ ุงู„ุชุณุงุฑุน + + + <b>How smoothly openpilot accelerates in "Traffic Mode".</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>ู…ุฏู‰ ุณู„ุงุณุฉ ุชุณุงุฑุน openpilot ููŠ ยซูˆุถุน ุงู„ุงุฒุฏุญุงู…ยป.</b> ุฒูุฏ ู„ุฌุนู„ ุงู„ุงู†ุทู„ุงู‚ ุฃู„ุทูุ› ูˆุฎูู‘ุถ ู„ุงู†ุทู„ุงู‚ ุฃุณุฑุน ู„ูƒู†ู‡ ุฃูƒุซุฑ ูุฌุงุกุฉ. + + + Braking Smoothness + ุณู„ุงุณุฉ ุงู„ูƒุจุญ + + + <b>How smoothly openpilot brakes in "Traffic Mode".</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>ู…ุฏู‰ ุณู„ุงุณุฉ ูุฑู…ู„ุฉ openpilot ููŠ "ูˆุถุน ุงู„ุงุฒุฏุญุงู…".</b> ุฒูุฏู‡ุง ู„ุชูˆู‚ูุงุช ุฃู„ุทูุ› ุฎูู‘ูุถู‡ุง ู„ุชุจุงุทุค ุฃุณุฑุน ูˆู„ูƒู† ุฃุดุฏ ุญุฏุฉ. + + + Safety Gap Bias + ุงู†ุญูŠุงุฒ ูุฌูˆุฉ ุงู„ุฃู…ุงู† + + + <b>How much extra space openpilot keeps from the vehicle ahead in "Traffic Mode".</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>ูƒู… ู…ู† ุงู„ู…ุณุงูุฉ ุงู„ุฅุถุงููŠุฉ ูŠุญุชูุธ ุจู‡ุง openpilot ุนู† ุงู„ู…ุฑูƒุจุฉ ุงู„ุชูŠ ุฃู…ุงู…ู‡ ููŠ "ูˆุถุน ุงู„ุงุฒุฏุญุงู…".</b> ุฒุฏู‡ุง ู„ูุฑุงุบุงุช ุฃูƒุจุฑ ูˆุงุชุจุงุน ุฃูƒุซุฑ ุญุฐุฑู‹ุงุ› ุฃู†ู‚ุตู‡ุง ู„ูุฑุงุบุงุช ุฃุถูŠู‚ ูˆุงุชุจุงุน ุฃู‚ุฑุจ. + + + Slowdown Response + ุงุณุชุฌุงุจุฉ ุงู„ุฅุจุทุงุก + + + <b>How smoothly openpilot slows down in "Traffic Mode".</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>ู…ุฏู‰ ุณู„ุงุณุฉ ุชุจุงุทุค openpilot ููŠ "ูˆุถุน ุงู„ุงุฒุฏุญุงู…".</b> ุฒุฏ ุงู„ู‚ูŠู…ุฉ ู„ุฒูŠุงุฏุฉ ุงู„ุชุจุงุทุค ุงู„ุชุฏุฑูŠุฌูŠุ› ุฃู†ู‚ุตู‡ุง ู„ุชุจุงุทุค ุฃุณุฑุน ู„ูƒู†ู‡ ุฃูƒุซุฑ ุญุฏุฉ. + + + Speed-Up Response + ุชุณุฑูŠุน ุงู„ุงุณุชุฌุงุจุฉ + + + <b>How smoothly openpilot speeds up in "Traffic Mode".</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>ู…ุฏู‰ ุณู„ุงุณุฉ ุชุณุงุฑุน openpilot ููŠ ยซูˆุถุน ุงู„ุงุฒุฏุญุงู…ยป.</b> ุฒุฏ ุงู„ู‚ูŠู…ุฉ ู„ุชุณุงุฑุน ุฃูƒุซุฑ ุชุฏุฑุฌู‹ุงุ› ุฎูู‘ุถู‡ุง ู„ุชุณุงุฑุน ุฃุณุฑุน ู„ูƒู†ู‡ ุฃูƒุซุฑ ุงู‡ุชุฒุงุฒู‹ุง. + + + Reset to Defaults + ุฅุนุงุฏุฉ ุงู„ุชุนูŠูŠู† ุฅู„ู‰ ุงู„ุฅุนุฏุงุฏุงุช ุงู„ุงูุชุฑุงุถูŠุฉ + + + <b>Reset "Traffic Mode" settings to defaults.</b> + <b>ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฅุนุฏุงุฏุงุช "ูˆุถุน ุงู„ู…ุฑูˆุฑ" ุฅู„ู‰ ุงู„ู‚ูŠู… ุงู„ุงูุชุฑุงุถูŠุฉ.</b> + + + Aggressive + ุนุฏูˆุงู†ูŠ + + + <b>Customize the "Aggressive" personality profile.</b> Designed for assertive driving with tighter gaps. + <b>ุฎุตุต ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ "ุนุฏูˆุงู†ูŠ".</b> ู…ุตู…ู… ู„ู„ู‚ูŠุงุฏุฉ ุงู„ุญุงุฒู…ุฉ ู…ุน ูุฌูˆุงุช ุฃุถูŠู‚. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Aggressive" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.25 seconds. + <b>ุนุฏุฏ ุงู„ุซูˆุงู†ูŠ ุงู„ุชูŠ ูŠุชุจุน ููŠู‡ุง openpilot ุงู„ู…ุฑูƒุจุงุช ุงู„ุฃู…ุงู…ูŠุฉ ุนู†ุฏ ุงุณุชุฎุฏุงู… ู†ู…ุท "Aggressive".</b> ุฒุฏ ู„ุฒูŠุงุฏุฉ ุงู„ู…ุณุงูุฉุ› ุฃู†ู‚ุต ู„ุชู‚ู„ูŠู„ ุงู„ูุฌูˆุงุช.<br><br>ุงู„ุงูุชุฑุงุถูŠ: 1.25 ุซุงู†ูŠุฉ.</br> + + + <b>How smoothly openpilot accelerates with the "Aggressive" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>ู…ุฏู‰ ู†ุนูˆู…ุฉ ุชุณุงุฑุน openpilot ู…ุน ู…ู„ู ุงู„ุชุนุฑูŠู "Aggressive".</b> ุฒุฏ ุงู„ู‚ูŠู…ุฉ ู„ุจุฏุก ุฃูƒุซุฑ ู„ุทูู‹ุงุ› ุฎูู‘ุถู‡ุง ู„ุงู†ุทู„ุงู‚ ุฃุณุฑุน ู„ูƒู†ู‡ ุฃูƒุซุฑ ูุฌุงุกุฉ. + + + <b>How smoothly openpilot brakes with the "Aggressive" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>ู…ุฏู‰ ุณู„ุงุณุฉ ููŽุฑู…ู„ุฉ openpilot ุจุงุณุชุฎุฏุงู… ู…ู„ู ุงู„ุชุนุฑูŠู "Aggressive".</b> ุฒูุฏ ุงู„ู‚ูŠู…ุฉ ู„ุชูˆู‚ูุงุช ุฃู„ุทูุ› ูˆุงุฎู’ููุถู‡ุง ู„ุชุจุงุทุค ุฃุณุฑุน ู„ูƒู† ุฃูƒุซุฑ ุญูุฏู‘ุฉ. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Aggressive" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>ู…ู‚ุฏุงุฑ ุงู„ู…ุณุงูุฉ ุงู„ุฅุถุงููŠุฉ ุงู„ุชูŠ ูŠุญุชูุธ ุจู‡ุง openpilot ุนู† ุงู„ู…ุฑูƒุจุฉ ุงู„ุฃู…ุงู…ูŠุฉ ุนู†ุฏ ุงุณุชุฎุฏุงู… ู†ู…ุท "Aggressive".</b> ุฒูุฏ ุงู„ู‚ูŠู…ุฉ ู„ุฒูŠุงุฏุฉ ุงู„ูุฌูˆุงุช ูˆุงุชุจุงุน ุฃูƒุซุฑ ุญุฐุฑู‹ุงุ› ูˆุฎูู‘ุถู‡ุง ู„ุชุถูŠูŠู‚ ุงู„ูุฌูˆุงุช ูˆุงุชุจุงุน ุฃู‚ุฑุจ. + + + <b>How smoothly openpilot slows down with the "Aggressive" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>ู…ุฏู‰ ุณู„ุงุณุฉ ุชุจุงุทุค openpilot ู…ุน ู…ู„ู ุชุนุฑูŠู "Aggressive".</b> ุฒุฏ ุงู„ู‚ูŠู…ุฉ ู„ู„ุญุตูˆู„ ุนู„ู‰ ุชุจุงุทุค ุฃูƒุซุฑ ุชุฏุฑูŠุฌูŠุฉุ› ุฎูู‘ุถู‡ุง ู„ุฅุจุทุงุก ุฃุณุฑุน ู„ูƒู† ุฃูƒุซุฑ ุญุฏู‘ุฉ. + + + <b>How smoothly openpilot speeds up with the "Aggressive" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>ู…ุฏู‰ ุณู„ุงุณุฉ ุชุณุงุฑุน openpilot ู…ุน ู…ู„ู ุงู„ุชุนุฑูŠู "Aggressive".</b> ุฒูุฏ ุงู„ู‚ูŠู…ุฉ ู„ุชุณุงุฑุน ุฃูƒุซุฑ ุชุฏุฑุฌู‹ุงุ› ุงุฎูุถู‡ุง ู„ุชุณุงุฑุน ุฃุณุฑุน ู„ูƒู†ู‡ ุฃูƒุซุฑ ุงู‡ุชุฒุงุฒู‹ุง.</b> + + + <b>Reset the "Aggressive" profile to defaults.</b> + <b>ุฅุนุงุฏุฉ ุชุนูŠูŠู† ู…ู„ู ุชุนุฑูŠู "Aggressive" ุฅู„ู‰ ุงู„ู‚ูŠู… ุงู„ุงูุชุฑุงุถูŠุฉ.</b> + + + Standard + ู‚ูŠุงุณูŠ + + + <b>Customize the "Standard" personality profile.</b> Designed for balanced driving with moderate gaps. + <b>ุฎุตุต ู…ู„ู ุชุนุฑูŠู ุงู„ุดุฎุตูŠุฉ "Standard".</b> ู…ุตู…ู… ู„ู‚ูŠุงุฏุฉ ู…ุชูˆุงุฒู†ุฉ ู…ุน ููˆุงุตู„ ู…ุนุชุฏู„ุฉ. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Standard" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.45 seconds. + <b>ุนุฏุฏ ุงู„ุซูˆุงู†ูŠ ุงู„ุชูŠ ูŠุชุจุน ููŠู‡ุง openpilot ุงู„ู…ุฑูƒุจุงุช ุงู„ุฃู…ุงู…ูŠุฉ ุนู†ุฏ ุงุณุชุฎุฏุงู… ู…ู„ู ุงู„ุชุนุฑูŠู "ู‚ูŠุงุณูŠ".</b> ุฒูุฏ ู„ู„ุญุตูˆู„ ุนู„ู‰ ู…ุณุงุญุฉ ุฃูƒุจุฑุ› ู‚ูŽู„ู‘ูู„ ู„ูุฑุงุบุงุช ุฃุถูŠู‚.<br><br>ุงู„ุฅุนุฏุงุฏ ุงู„ุงูุชุฑุงุถูŠ: 1.45 ุซุงู†ูŠุฉ.</b> + + + <b>How smoothly openpilot accelerates with the "Standard" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>ู…ุฏู‰ ุณู„ุงุณุฉ ุชุณุงุฑุน openpilot ู…ุน ู…ู„ู ุงู„ุชุนุฑูŠู "Standard".</b> ุฒูุฏู’ู‡ ู„ุจุฏุก ุฃูƒุซุฑ ู„ุทูู‹ุงุ› ูˆุฎูู‘ูุถู‡ ู„ุงู†ุทู„ุงู‚ ุฃุณุฑุน ู„ูƒู† ุฃูƒุซุฑ ูุฌุงุฆูŠุฉ. + + + <b>How smoothly openpilot brakes with the "Standard" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>ู…ุฏู‰ ุณู„ุงุณุฉ ูุฑู…ู„ุฉ openpilot ุจุงุณุชุฎุฏุงู… ู…ู„ู ุงู„ุชุนุฑูŠู "Standard".</b> ุฒูุฏ ู„ุฌุนู„ ุงู„ุชูˆู‚ูุงุช ุฃู„ุทูุ› ูˆุฎูู‘ุถ ู„ู„ุญุตูˆู„ ุนู„ู‰ ูุฑู…ู„ุฉ ุฃุณุฑุน ู„ูƒู† ุฃูƒุซุฑ ุญูุฏู‘ุฉ. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Standard" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>ูƒู… ู…ู† ุงู„ู…ุณุงูุฉ ุงู„ุฅุถุงููŠุฉ ูŠุญุชูุธ ุจู‡ุง openpilot ุนู† ุงู„ู…ุฑูƒุจุฉ ุงู„ุฃู…ุงู…ูŠุฉ ู…ุน ู…ู„ู ุชุนุฑูŠู "Standard".</b> ุฒูุฏู‡ุง ู„ุชุฑูƒ ูุฌูˆุงุช ุฃูƒุจุฑ ูˆุงุชุจุงุน ุฃูƒุซุฑ ุญุฐุฑู‹ุงุ› ูˆู‚ู„ู‘ู„ู‡ุง ู„ูุฌูˆุงุช ุฃุถูŠู‚ ูˆุงุชุจุงุน ุฃู‚ุฑุจ. + + + <b>How smoothly openpilot slows down with the "Standard" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>ู…ุฏู‰ ุณู„ุงุณุฉ ุฅุจุทุงุก openpilot ู…ุน ู†ู…ุท "Standard".</b> ุฒูุฏ ุงู„ู‚ูŠู…ุฉ ู„ุฅุจุทุงุก ุฃูƒุซุฑ ุชุฏุฑุฌู‹ุงุ› ุฎูู‘ุถู‡ุง ู„ุฅุจุทุงุก ุฃุณุฑุน ู„ูƒู†ู‡ ุฃูƒุซุฑ ุญุฏู‘ุฉ. + + + <b>How smoothly openpilot speeds up with the "Standard" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>ู…ุฏู‰ ุณู„ุงุณุฉ ุชุณุงุฑุน openpilot ู…ุน ู…ู„ู "Standard".</b> ุฒุฏ ุงู„ู‚ูŠู…ุฉ ู„ุชุณุงุฑุน ุฃูƒุซุฑ ุชุฏุฑุฌู‹ุงุ› ุฎูู‘ุถู‡ุง ู„ุชุณุงุฑุน ุฃุณุฑุน ู„ูƒู† ุฃูƒุซุฑ ุงู‡ุชุฒุงุฒู‹ุง. + + + <b>Reset the "Standard" profile to defaults.</b> + <b>ุฅุนุงุฏุฉ ุชุนูŠูŠู† ู…ู„ู ุชุนุฑูŠู "ู‚ูŠุงุณูŠ" ุฅู„ู‰ ุงู„ุฅุนุฏุงุฏุงุช ุงู„ุงูุชุฑุงุถูŠุฉ.</b> + + + Relaxed + ู…ุณุชุฑุฎู + + + <b>Customize the "Relaxed" personality profile.</b> Designed for smoother, more comfortable driving with larger gaps. + <b>ุฎุตุต ู…ู„ู ุดุฎุตูŠุฉ "ุงู„ู‡ุงุฏุฆ".</b> ู…ุตู…ู… ู„ู‚ูŠุงุฏุฉ ุฃูƒุซุฑ ุณู„ุงุณุฉ ูˆุฑุงุญุฉ ู…ุน ู…ุณุงูุงุช ุฃูƒุจุฑ. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Relaxed" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.75 seconds. + <b>ุนุฏุฏ ุงู„ุซูˆุงู†ูŠ ุงู„ุชูŠ ูŠุชุจุน ููŠู‡ุง openpilot ุงู„ู…ุฑูƒุจุงุช ุงู„ุฃู…ุงู…ูŠุฉ ุนู†ุฏ ุงุณุชุฎุฏุงู… ู†ู…ุท "Relaxed".</b> ุฒูุฏ ู„ู„ุญุตูˆู„ ุนู„ู‰ ู…ุณุงูุฉ ุฃูƒุจุฑุ› ู‚ูŽู„ู‘ูู„ ู„ูุฑุงุบุงุช ุฃุถูŠู‚.<br><br>ุงู„ุฅุนุฏุงุฏ ุงู„ุงูุชุฑุงุถูŠ: 1.75 ุซุงู†ูŠุฉ. + + + <b>How smoothly openpilot accelerates with the "Relaxed" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>ู…ุฏู‰ ุณู„ุงุณุฉ ุชุณุงุฑุน openpilot ู…ุน ู†ู…ุท "Relaxed".</b> ุฒุฏ ุงู„ู‚ูŠู…ุฉ ู„ุจุฏุก ุฃูƒุซุฑ ู„ุทูู‹ุงุ› ุฎูู‘ูุถู‡ุง ู„ุงู†ุทู„ุงู‚ ุฃุณุฑุน ู„ูƒู† ุฃูƒุซุฑ ุญุฏุฉ. + + + <b>How smoothly openpilot brakes with the "Relaxed" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>ู…ุฏู‰ ุณู„ุงุณุฉ ูุฑู…ู„ุฉ openpilot ุจุงุณุชุฎุฏุงู… ู…ู„ู โ€œู…ุฑุชุงุญโ€.</b> ุฒูุฏ ุงู„ู‚ูŠู…ุฉ ู„ุชูˆู‚ูุงุช ุฃูƒุซุฑ ู„ุทูู‹ุงุ› ุงุฎูุถู‡ุง ู„ูุฑู…ู„ุฉ ุฃุณุฑุน ู„ูƒู†ู‡ุง ุฃูƒุซุฑ ุญุฏุฉ. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Relaxed" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>ู…ู‚ุฏุงุฑ ุงู„ู…ุณุงูุฉ ุงู„ุฅุถุงููŠุฉ ุงู„ุชูŠ ูŠุญุงูุธ ุนู„ูŠู‡ุง openpilot ุนู† ุงู„ู…ุฑูƒุจุฉ ุงู„ุฃู…ุงู…ูŠุฉ ู…ุน ู…ู„ู ุงู„ุชุนุฑูŠู "ู…ุฑุชุงุญ".</b> ุฒุฏู‡ุง ู„ูุฑุงุบุงุช ุฃูƒุจุฑ ูˆุชุชุจุน ุฃูƒุซุฑ ุญุฐุฑู‹ุงุ› ุฎูู‘ุถู‡ุง ู„ูุฑุงุบุงุช ุฃุถูŠู‚ ูˆุชุชุจุน ุฃู‚ุฑุจ. + + + <b>How smoothly openpilot slows down with the "Relaxed" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>ู…ุฏู‰ ุณู„ุงุณุฉ ุชุจุงุทุค openpilot ู…ุน ู…ู„ู ุงู„ุชุนุฑูŠู "Relaxed".</b> ุฒุฏ ุงู„ู‚ูŠู…ุฉ ู„ุฒูŠุงุฏุฉ ุงู„ุชุจุงุทุค ุงู„ุชุฏุฑูŠุฌูŠุ› ุฃู†ู‚ุตู‡ุง ู„ุชุจุงุทุค ุฃุณุฑุน ู„ูƒู† ุฃูƒุซุฑ ุญุฏุฉ. + + + <b>How smoothly openpilot speeds up with the "Relaxed" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>ู…ุฏู‰ ุณู„ุงุณุฉ ุชุณุงุฑุน openpilot ู…ุน ู…ู„ู "Relaxed".</b> ุฒูุฏ ู„ุฌุนู„ ุงู„ุชุณุงุฑุน ุฃูƒุซุฑ ุชุฏุฑุฌุงู‹ุ› ุฎูู‘ุถ ู„ุฌุนู„ู‡ ุฃุณุฑุน ู„ูƒู† ุฃูƒุซุฑ ุงู‡ุชุฒุงุฒุงู‹. + + + <b>Reset the "Relaxed" profile to defaults.</b> + <b>ุฅุนุงุฏุฉ ุชุนูŠูŠู† ู…ู„ู ุชุนุฑูŠู "Relaxed" ุฅู„ู‰ ุงู„ุฅุนุฏุงุฏุงุช ุงู„ุงูุชุฑุงุถูŠุฉ.</b> + + + Longitudinal Tuning + ุงู„ุถุจุท ุงู„ุทูˆู„ูŠ + + + <b>Acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>ุชุบูŠูŠุฑุงุช ููŠ ุงู„ุชุญูƒู… ุจุงู„ุชุณุงุฑุน ูˆุงู„ูุฑู…ู„ุฉ</b> ู„ุถุจุท ูƒูŠููŠุฉ ู‚ูŠุงุฏุฉ openpilot ุจุฏู‚ุฉ. + + + Acceleration Profile + ู…ู„ู ุชุนุฑูŠู ุงู„ุชุณุงุฑุน + + + <b>How quickly openpilot speeds up.</b> "Eco" is gentle and efficient, "Sport" is firmer and more responsive, and "Sport+" accelerates at the maximum rate allowed. + <b>ู…ุฏู‰ ุณุฑุนุฉ ุชุณุงุฑุน openpilot.</b> ยซEcoยป ู„ุทูŠู ูˆูุนู‘ุงู„ุŒ ยซSportยป ุฃูƒุซุฑ ุตู„ุงุจุฉ ูˆุงุณุชุฌุงุจุฉุŒ ูˆยซSport+ยป ูŠุชุณุงุฑุน ุจุฃู‚ุตู‰ ู…ุนุฏู„ ู…ุณู…ูˆุญ ุจู‡. + + + Deceleration Profile + ู…ู„ู ุชุจุงุทุค + + + <b>How firmly openpilot slows down.</b> "Eco" favors coasting, "Sport" applies stronger braking. + <b>ู…ุฏู‰ ู‚ูˆุฉ ุชุจุงุทุค openpilot.</b> ูŠูุถู‘ู„ ูˆุถุน "Eco" ุงู„ุงู†ุฒู„ุงู‚ุŒ ุจูŠู†ู…ุง ูŠุทุจู‘ู‚ ูˆุถุน "Sport" ูุฑู…ู„ุฉ ุฃู‚ูˆู‰. + + + Human-Like Acceleration + ุชุณุงุฑุน ุดุจูŠู‡ ุจุงู„ุจุดุฑ + + + <b>Acceleration that mimics human behavior</b> by easing the throttle at low speeds and adding extra power when taking off from a stop. + <b>ุชุณุงุฑุน ูŠุญุงูƒูŠ ุงู„ุณู„ูˆูƒ ุงู„ุจุดุฑูŠ</b> ุนุจุฑ ุชุฎููŠู ุฏูˆุงุณุฉ ุงู„ูˆู‚ูˆุฏ ุนู†ุฏ ุงู„ุณุฑุนุงุช ุงู„ู…ู†ุฎูุถุฉ ูˆุฅุถุงูุฉ ู‚ูˆุฉ ุฅุถุงููŠุฉ ุนู†ุฏ ุงู„ุงู†ุทู„ุงู‚ ู…ู† ุงู„ุชูˆู‚ู. + + + Human-Like Following + ุชุชุจู‘ุน ุดุจูŠู‡ ุจุงู„ุจุดุฑ + + + Lead Detection Sensitivity + ุญุณุงุณูŠุฉ ุงูƒุชุดุงู ุงู„ู…ุฑูƒุจุฉ ุงู„ู…ุชุตุฏุฑุฉ + + + <b>How sensitive openpilot is to detecting vehicles.</b> Higher sensitivity allows quicker detection at longer distances but may react to non-vehicle objects; lower sensitivity is more conservative and reduces false detections. + <b>ู…ุฏู‰ ุญุณุงุณูŠุฉ openpilot ู„ุงูƒุชุดุงู ุงู„ู…ุฑูƒุจุงุช.</b> ุญุณุงุณูŠุฉ ุฃุนู„ู‰ ุชุณู…ุญ ุจุงูƒุชุดุงู ุฃุณุฑุน ู…ู† ู…ุณุงูุงุช ุฃุทูˆู„ ู„ูƒู†ู‡ุง ู‚ุฏ ุชุชูุงุนู„ ู…ุน ุฃุดูŠุงุก ู„ูŠุณุช ู…ุฑูƒุจุงุชุ› ุญุณุงุณูŠุฉ ุฃู‚ู„ ุฃูƒุซุฑ ุชุญูุธู‹ุง ูˆุชู‚ู„ู„ ุงู„ุงูƒุชุดุงูุงุช ุงู„ุฎุงุทุฆุฉ. + + + Maximum Acceleration + ุงู„ุชุณุงุฑุน ุงู„ุฃู‚ุตู‰ + + + <b>Limit the strongest acceleration</b> openpilot can command. + <b>ุญุฏู‘ ู…ู† ุฃู‚ูˆู‰ ุชุณุงุฑุน</b> ูŠู…ูƒู† ุฃู† ูŠุฃู…ุฑ ุจู‡ openpilot. + + + "Taco Bell Run" Turn Speed Hack + ุงุฎุชุฑุงู‚ ุณุฑุนุฉ ุงู„ุงู†ุนุทุงู "Taco Bell Run" + + + <b>The turn-speed hack from comma's 2022 "Taco Bell Run".</b> Designed to slow down for left and right turns. + <b>ุญูŠู„ุฉ ุณุฑุนุฉ ุงู„ุงู†ุนุทุงู ู…ู† "Taco Bell Run" ู„ุนุงู… 2022 ู…ู† comma.</b> ู…ุตู…ู…ุฉ ู„ู„ุฅุจุทุงุก ุนู†ุฏ ุงู„ุงู†ุนุทุงู ูŠุณุงุฑู‹ุง ูˆูŠู…ูŠู†ู‹ุง. + + + Quality of Life + ุฌูˆุฏุฉ ุงู„ุญูŠุงุฉ + + + <b>Miscellaneous acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>ุชุบูŠูŠุฑุงุช ู…ุชูุฑู‚ุฉ ููŠ ุงู„ุชุญูƒู… ุจุงู„ุชุณุงุฑุน ูˆุงู„ูƒุจุญ</b> ู„ุถุจุท ูƒูŠููŠุฉ ู‚ูŠุงุฏุฉ openpilot ุจุฏู‚ุฉ. + + + Cruise Interval + ูุงุตู„ ุชุซุจูŠุช ุงู„ุณุฑุนุฉ + + + <b>How much the set speed increases or decreases</b> for each + or โ€“ cruise control button press. + <b>ู…ู‚ุฏุงุฑ ุฒูŠุงุฏุฉ ุฃูˆ ู†ู‚ุตุงู† ุงู„ุณุฑุนุฉ ุงู„ู…ุถุจูˆุทุฉ</b> ู…ุน ูƒู„ ุถุบุทุฉ ุนู„ู‰ ุฒุฑ ุงู„ุชุญูƒู… ููŠ ุงู„ุณุฑุนุฉ + ุฃูˆ โ€“. + + + Cruise Interval (Hold) + ูุงุตู„ ุชุซุจูŠุช ุงู„ุณุฑุนุฉ (ุงุถุบุท ู…ุทูˆู„ู‹ุง) + + + <b>How much the set speed increases or decreases while holding the + or โ€“ cruise control buttons.</b> + <b>ู…ู‚ุฏุงุฑ ุฒูŠุงุฏุฉ ุฃูˆ ู†ู‚ุตุงู† ุงู„ุณุฑุนุฉ ุงู„ู…ุถุจูˆุทุฉ ุฃุซู†ุงุก ุงู„ุถุบุท ุงู„ู…ุณุชู…ุฑ ุนู„ู‰ ุฃุฒุฑุงุฑ ู…ุซุจุช ุงู„ุณุฑุนุฉ + ุฃูˆ โ€“.</b> + + + Force Stop at "Detected" Stop Lights/Signs + ุฅูŠู‚ุงู ุฅุฌุจุงุฑูŠ ุนู†ุฏ ุฃุถูˆุงุก/ุนู„ุงู…ุงุช ุงู„ุชูˆู‚ู ยซุงู„ู…ูƒุชุดูุฉยป + + + <b>Force openpilot to stop whenever the driving model "detects" a red light or stop sign.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>ูุฑุถ ุฅูŠู‚ุงู openpilot ูƒู„ู…ุง "ูŠูƒุชุดู" ู†ู…ูˆุฐุฌ ุงู„ู‚ูŠุงุฏุฉ ุฅุดุงุฑุฉ ุถูˆุฆูŠุฉ ุญู…ุฑุงุก ุฃูˆ ุนู„ุงู…ุฉ ุชูˆู‚ู.</b><br><br><i><b>ุฅุฎู„ุงุก ุงู„ู…ุณุคูˆู„ูŠุฉ</b>: ู„ุง ูŠูƒุชุดู openpilot ุฅุดุงุฑุงุช ุงู„ู…ุฑูˆุฑ ุฃูˆ ุนู„ุงู…ุงุช ุงู„ุชูˆู‚ู ุจุดูƒู„ ุตุฑูŠุญ. ููŠ "ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ"ุŒ ูŠุชุฎุฐ openpilot ู‚ุฑุงุฑุงุช ู‚ูŠุงุฏุฉ ุดุงู…ู„ุฉ ู…ู† ู…ุฏุฎู„ุงุช ุงู„ูƒุงู…ูŠุฑุงุŒ ู…ุง ูŠุนู†ูŠ ุฃู†ู‡ ู‚ุฏ ูŠุชูˆู‚ู ุญุชู‰ ุนู†ุฏู…ุง ู„ุง ูŠูˆุฌุฏ ุณุจุจ ูˆุงุถุญ.</i> + + + Increase Stopped Distance by: + ุฒูŠุงุฏุฉ ู…ุณุงูุฉ ุงู„ุชูˆู‚ู ุจู…ู‚ุฏุงุฑ: + + + <b>Add extra space when stopped behind vehicles.</b> Increase for more room; decrease for shorter gaps. + <b>ุฃุถูู ู…ุณุงูุฉ ุฅุถุงููŠุฉ ุนู†ุฏ ุงู„ุชูˆู‚ู ุฎู„ู ุงู„ู…ุฑูƒุจุงุช.</b> ุฒูุฏ ู„ุญูŠุฒ ุฃูƒุจุฑุ› ุฎูู‘ุถ ู„ูุฌูˆุงุช ุฃู‚ุตุฑ. + + + Map Accel/Decel to Gears + ุชุนูŠูŠู† ุงู„ุชุณุงุฑุน/ุงู„ุชุจุงุทุค ุฅู„ู‰ ุงู„ุชุฑูˆุณ + + + <b>Map the Acceleration or Deceleration profiles to the vehicle's "Eco" and "Sport" gear modes.</b> + <b>ู‚ู… ุจุฑุจุท ู…ู„ูุงุช ุชุนุฑูŠู ุงู„ุชุณุงุฑุน ุฃูˆ ุงู„ุชุจุงุทุค ุจูˆุถุนูŠุงุช ุชุฑูˆุณ ุงู„ู…ุฑูƒุจุฉ "Eco" ูˆ"Sport".</b> + + + Offset Set Speed by: + ุชุนูˆูŠุถ ุถุจุท ุงู„ุณุฑุนุฉ ุจู…ู‚ุฏุงุฑ: + + + <b>Increase the set speed by the chosen offset.</b> For example, set +5 if you usually drive 5 over the limit. + <b>ุฒูŠุงุฏุฉ ุงู„ุณุฑุนุฉ ุงู„ู…ุถุจูˆุทุฉ ุจุงู„ู…ู‚ุฏุงุฑ ุงู„ู…ุฎุชุงุฑ.</b> ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ุŒ ุงุถุจุท +5 ุฅุฐุง ูƒู†ุช ุนุงุฏุฉ ุชู‚ูˆุฏ ุจุณุฑุนุฉ ุชุฒูŠุฏ 5 ุนู† ุงู„ุญุฏ. + + + Reverse Cruise Increase + ุฒูŠุงุฏุฉ ุงู„ุณุฑุนุฉ ู„ู„ุฎู„ู + + + <b>Reverse the cruise control button behavior</b> so a short press increases the set speed by 5 instead of 1. + <b>ุงุนูƒุณ ุณู„ูˆูƒ ุฒุฑ ุงู„ุชุญูƒู… ููŠ ุงู„ุณุฑุนุฉ</b> ุจุญูŠุซ ุชุฒูŠุฏ ุงู„ุถุบุทุฉ ุงู„ู‚ุตูŠุฑุฉ ุงู„ุณุฑุนุฉ ุงู„ู…ุญุฏุฏุฉ ุจู…ู‚ุฏุงุฑ 5 ุจุฏู„ู‹ุง ู…ู† 1. + + + Increase Following Distance by: + ุฒูŠุงุฏุฉ ู…ุณุงูุฉ ุงู„ู…ุชุงุจุนุฉ ุจู…ู‚ุฏุงุฑ: + + + Reduce Acceleration by: + ุชู‚ู„ูŠู„ ุงู„ุชุณุงุฑุน ุจู…ู‚ุฏุงุฑ: + + + Reduce Speed in Curves by: + ุชู‚ู„ูŠู„ ุงู„ุณุฑุนุฉ ููŠ ุงู„ู…ู†ุนุทูุงุช ุจู…ู‚ุฏุงุฑ: + + + Snow + ุซู„ุฌ + + + <b>Driving adjustments for snowy conditions.</b> + <b>ุชุนุฏูŠู„ุงุช ุงู„ู‚ูŠุงุฏุฉ ู„ุธุฑูˆู ุงู„ุซู„ูˆุฌ.</b> + + + <b>Add extra space behind lead vehicles in snow.</b> Increase for more space; decrease for tighter gaps. + <b>ุฃุถู ู…ุณุงูุฉ ุฅุถุงููŠุฉ ุฎู„ู ุงู„ู…ุฑูƒุจุงุช ุงู„ุฃู…ุงู…ูŠุฉ ููŠ ุงู„ุซู„ุฌ.</b> ุฒูุฏ ู„ู„ุญุตูˆู„ ุนู„ู‰ ู…ุณุงุญุฉ ุฃูƒุจุฑุ› ุฎูู‘ูุถ ู„ู…ุณุงูุงุช ุฃู‚ุตุฑ. + + + <b>Add extra buffer when stopped behind vehicles in snow.</b> Increase for more room; decrease for shorter gaps. + <b>ุฃุถู ู…ุณุงูุฉ ุฃู…ุงู† ุฅุถุงููŠุฉ ุนู†ุฏ ุงู„ุชูˆู‚ู ุฎู„ู ุงู„ู…ุฑูƒุจุงุช ููŠ ุงู„ุซู„ุฌ.</b> ุฒุฏู‡ุง ู„ู…ุฒูŠุฏ ู…ู† ุงู„ุญูŠุฒุ› ูˆุฎูู‘ุถู‡ุง ู„ูุฑุงุบุงุช ุฃู‚ุตุฑ. + + + <b>Lower the maximum acceleration in snow.</b> Increase for softer takeoffs; decrease for quicker but less stable takeoffs. + <b>ุฎูู‘ุถ ุงู„ุญุฏ ุงู„ุฃู‚ุตู‰ ู„ู„ุชุณุงุฑุน ุนู„ู‰ ุงู„ุซู„ุฌ.</b> ุฒุฏู’ู‡ ู„ุงู†ุทู„ุงู‚ุงุช ุฃูƒุซุฑ ุณู„ุงุณุฉุ› ูˆุฎูู‘ุถู‡ ู„ุงู†ุทู„ุงู‚ุงุช ุฃุณุฑุน ูˆู„ูƒู† ุฃู‚ู„ ุงุณุชู‚ุฑุงุฑู‹ุง. + + + <b>Lower the desired speed while driving through curves in snow.</b> Increase for safer, gentler turns; decrease for more aggressive driving in curves. + <b>ุงุฎูุถ ุงู„ุณุฑุนุฉ ุงู„ู…ุทู„ูˆุจุฉ ุฃุซู†ุงุก ุงู„ู‚ูŠุงุฏุฉ ุนุจุฑ ุงู„ู…ู†ุญู†ูŠุงุช ููŠ ุงู„ุซู„ุฌ.</b> ุฒุฏู‡ุง ู„ุงู„ุชูุงูุงุช ุฃูƒุซุฑ ุฃู…ุงู†ู‹ุง ูˆู„ุทูู‹ุงุ› ูˆู‚ู„ู‘ู„ู‡ุง ู„ู‚ูŠุงุฏุฉ ุฃูƒุซุฑ ุนุฏูˆุงู†ูŠุฉ ููŠ ุงู„ู…ู†ุญู†ูŠุงุช. + + + Speed Limit Controller + ู…ุชุญูƒู… ุญุฏ ุงู„ุณุฑุนุฉ + + + <b>Limit openpilot's maximum driving speed to the current speed limit</b> obtained from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + <b>ุญุฏุฏ ุงู„ุณุฑุนุฉ ุงู„ู‚ุตูˆู‰ ู„ู‚ูŠุงุฏุฉ openpilot ุนู„ู‰ ุญุฏ ุงู„ุณุฑุนุฉ ุงู„ุญุงู„ูŠ</b> ุงู„ู…ูุณุชู…ุฏ ู…ู† ุงู„ุฎุฑุงุฆุท ุงู„ู…ูู†ุฒู‘ูŽู„ุฉุŒ MapboxุŒ Navigate on openpilotุŒ ุฃูˆ ู„ูˆุญุฉ ุงู„ุนุฏุงุฏุงุช ู„ู„ู…ุฑูƒุจุงุช ุงู„ู…ุฏุนูˆู…ุฉ (FordุŒ GenesisุŒ HyundaiุŒ KiaุŒ LexusุŒ Toyota). + + + Fallback Speed + ุงู„ุณุฑุนุฉ ุงู„ุงุญุชูŠุงุทูŠุฉ + + + <b>The speed used by "Speed Limit Controller" when no speed limit is found.</b><br><br>- <b>Set Speed</b>: Use the cruise set speed<br>- <b>Experimental Mode</b>: Estimate the limit using the driving model<br>- <b>Previous Limit</b>: Keep using the last confirmed limit + <b>ุงู„ุณุฑุนุฉ ุงู„ุชูŠ ูŠุณุชุฎุฏู…ู‡ุง "Speed Limit Controller" ุนู†ุฏ ุนุฏู… ุงู„ุนุซูˆุฑ ุนู„ู‰ ุญุฏ ู„ู„ุณุฑุนุฉ.</b><br><br>- <b>ุงู„ุณุฑุนุฉ ุงู„ู…ุถุจูˆุทุฉ</b>: ุงุณุชุฎุฏู… ุณุฑุนุฉ ู…ุซุจุช ุงู„ุณุฑุนุฉ ุงู„ู…ุถุจูˆุทุฉ<br>- <b>ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ</b>: ู‚ุฏู‘ุฑ ุงู„ุญุฏ ุจุงุณุชุฎุฏุงู… ู†ู…ูˆุฐุฌ ุงู„ู‚ูŠุงุฏุฉ<br>- <b>ุงู„ุญุฏ ุงู„ุณุงุจู‚</b>: ุงุณุชู…ุฑ ููŠ ุงุณุชุฎุฏุงู… ุขุฎุฑ ุญุฏู‘ ู…ุคูƒุฏ + + + Override Speed + ุชุฌุงูˆุฒ ุงู„ุณุฑุนุฉ + + + <b>The speed used by "Speed Limit Controller" after you manually drive faster than the posted limit.</b><br><br>- <b>Set with Gas Pedal</b>: Use the highest speed reached while pressing the gas<br>- <b>Max Set Speed</b>: Use the cruise set speed<br><br>Overrides clear when openpilot disengages. + <b>ุงู„ุณุฑุนุฉ ุงู„ุชูŠ ูŠุณุชุฎุฏู…ู‡ุง "Speed Limit Controller" ุจุนุฏ ุฃู† ุชู‚ูˆุฏ ูŠุฏูˆูŠู‹ุง ุฃุณุฑุน ู…ู† ุงู„ุญุฏ ุงู„ู…ุนู„ู†.</b><br><br>- <b>ุชุญุฏูŠุฏ ุจุฏูˆุงุณุฉ ุงู„ูˆู‚ูˆุฏ</b>: ุงุณุชุฎุฏุงู… ุฃุนู„ู‰ ุณุฑุนุฉ ุชู… ุจู„ูˆุบู‡ุง ุฃุซู†ุงุก ุงู„ุถุบุท ุนู„ู‰ ุฏูˆุงุณุฉ ุงู„ูˆู‚ูˆุฏ<br>- <b>ุงู„ุญุฏ ุงู„ุฃู‚ุตู‰ ู„ู„ุณุฑุนุฉ ุงู„ู…ุญุฏุฏุฉ</b>: ุงุณุชุฎุฏุงู… ุณุฑุนุฉ ุถุจุท ู†ุธุงู… ุงู„ู‚ูŠุงุฏุฉ ุงู„ุซุงุจุชุฉ<br><br>ูŠุชู… ู…ุณุญ ุงู„ุชุฌุงูˆุฒุงุช ุนู†ุฏ ูุตู„ openpilot. + + + <b>Miscellaneous "Speed Limit Controller" changes</b> to fine-tune how openpilot drives. + <b>ุชุบูŠูŠุฑุงุช ู…ุชู†ูˆุนุฉ ููŠ "ู…ุชุญูƒู… ุญุฏู‘ ุงู„ุณุฑุนุฉ"</b> ู„ุถุจุท ูƒูŠููŠุฉ ู‚ูŠุงุฏุฉ openpilot ุจุฏู‚ุฉ. + + + Confirm New Speed Limits + ุชุฃูƒูŠุฏ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุงู„ุฌุฏูŠุฏุฉ + + + <b>Ask before changing to a new speed limit.</b> To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds. + <b>ุงุณุฃู„ ู‚ุจู„ ุงู„ุชุจุฏูŠู„ ุฅู„ู‰ ุญุฏ ุณุฑุนุฉ ุฌุฏูŠุฏ.</b> ู„ู„ู‚ุจูˆู„ุŒ ุงุถุบุท ุนู„ู‰ ุงู„ุฃุฏุงุฉ ุงู„ูˆู…ูŠุถ ุนู„ู‰ ุงู„ุดุงุดุฉ ุฃูˆ ุงุถุบุท ุฒุฑ ุฒูŠุงุฏุฉ ุงู„ุณุฑุนุฉ Cruise. ู„ู„ุฑูุถุŒ ุงุถุบุท ุฒุฑ ุฎูุถ ุงู„ุณุฑุนุฉ Cruise ุฃูˆ ุชุฌุงู‡ู„ ุงู„ู…ุทุงู„ุจุฉ ู„ู…ุฏุฉ 30 ุซุงู†ูŠุฉ. + + + Force MPH from Dashboard + ูุฑุถ MPH ู…ู† ู„ูˆุญุฉ ุงู„ุนุฏุงุฏุงุช + + + <b>Always read dashboard speed limit signs in mph.</b> Turn this on if the cluster shows mph but the limit is interpreted as km/h. + <b>ุงู‚ุฑุฃ ุฏุงุฆู…ู‹ุง ุนู„ุงู…ุงุช ุญุฏ ุงู„ุณุฑุนุฉ ุนู„ู‰ ู„ูˆุญุฉ ุงู„ุนุฏุงุฏุงุช ุจูˆุญุฏุฉ mph.</b> ูุนูู‘ู„ ู‡ุฐุง ุฅุฐุง ูƒุงู†ุช ู…ุฌู…ูˆุนุฉ ุงู„ุนุฏุงุฏุงุช ุชุนุฑุถ mph ู„ูƒู† ูŠุชู… ุชูุณูŠุฑ ุงู„ุญุฏ ุจูˆุญุฏุฉ km/h.</b> + + + Higher Limit Lookahead Time + ุฒู…ู† ุงู„ุชุทู„ุน ุฅู„ู‰ ุญุฏ ุฃุนู„ู‰ + + + <b>How far ahead openpilot anticipates upcoming higher speed limits</b> from downloaded map data. + <b>ุงู„ู…ุณุงูุฉ ุงู„ุชูŠ ูŠุชูˆู‚ุน ููŠู‡ุง openpilot ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุงู„ุฃุนู„ู‰ ุงู„ู‚ุงุฏู…ุฉ</b> ู…ู† ุจูŠุงู†ุงุช ุงู„ุฎุฑุงุฆุท ุงู„ุชูŠ ุชู… ุชู†ุฒูŠู„ู‡ุง. + + + Lower Limit Lookahead Time + ุงู„ุญุฏ ุงู„ุฃุฏู†ู‰ ู„ูˆู‚ุช ุงู„ุงุณุชุดุฑุงู + + + <b>How far ahead openpilot anticipates upcoming lower speed limits</b> from downloaded map data. + <b>ู…ุฏู‰ ุชู‚ุฏู… ุชูˆู‚ุน openpilot ู„ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุงู„ู…ู†ุฎูุถุฉ ุงู„ู‚ุงุฏู…ุฉ</b> ู…ู† ุจูŠุงู†ุงุช ุงู„ุฎุฑุงุฆุท ุงู„ู…ูู†ุฒู‘ูŽู„ุฉ. + + + Match Speed Limit on Engage + ู…ุทุงุจู‚ุฉ ุญุฏ ุงู„ุณุฑุนุฉ ุนู†ุฏ ุงู„ุชูุนูŠู„ + + + <b>When openpilot is first enabled, automatically set the max speed to the current posted limit.</b> + <b>ุนู†ุฏ ุชู…ูƒูŠู† openpilot ู„ุฃูˆู„ ู…ุฑุฉุŒ ุงุถุจุท ุชู„ู‚ุงุฆูŠู‹ุง ุงู„ุณุฑุนุฉ ุงู„ู‚ุตูˆู‰ ุนู„ู‰ ุงู„ุญุฏ ุงู„ู…ุนู„ู† ุงู„ุญุงู„ูŠ.</b> + + + Use Mapbox as Fallback + ุงุณุชุฎุฏู… Mapbox ูƒุจุฏูŠู„ + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>ุงุณุชุฎุฏู… ุจูŠุงู†ุงุช ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ู…ู† Mapbox ุนู†ุฏ ุนุฏู… ุชูˆูุฑ ุฃูŠ ู…ุตุฏุฑ ุขุฎุฑ.</b> + + + Speed Limit Source Priority + ุฃูˆู„ูˆูŠุฉ ู…ุตุฏุฑ ุญุฏ ุงู„ุณุฑุนุฉ + + + <b>The source order for speed limits</b> when more than one is available. + <b>ุชุฑุชูŠุจ ุงู„ู…ุตุงุฏุฑ ู„ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ</b> ุนู†ุฏ ุชูˆูุฑ ุฃูƒุซุฑ ู…ู† ู…ุตุฏุฑ ูˆุงุญุฏ. + + + Speed Limit Offsets + ุฅุฒุงุญุงุช ุญุฏ ุงู„ุณุฑุนุฉ + + + <b>Add an offset to the posted speed limit</b> to better match your driving style. + <b>ุฃุถูู ุฅุฒุงุญุฉ ุฅู„ู‰ ุงู„ุญุฏ ุงู„ุฃู‚ุตู‰ ู„ู„ุณุฑุนุฉ ุงู„ู…ูุนู„ูŽู†</b> ู„ูŠุชูˆุงูู‚ ุจุดูƒู„ ุฃูุถู„ ู…ุน ุฃุณู„ูˆุจ ู‚ูŠุงุฏุชูƒ.</b> Speed Offset (0โ€“24 mph) - ุฅุฒุงุญุฉ ุงู„ุณุฑุนุฉ (0โ€“24 ู…ูŠู„/ุณุงุนุฉ) + ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ (0โ€“24 mph) + + + <b>How much to offset posted speed-limits</b> between 0 and 24 mph. + <b>ูƒู… ู…ู‚ุฏุงุฑ ุชุนูˆูŠุถ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุงู„ู…ุนู„ู†ุฉ</b> ุจูŠู† 0 ูˆ24 ู…ูŠู„/ุณุŸ Speed Offset (25โ€“34 mph) - ุฅุฒุงุญุฉ ุงู„ุณุฑุนุฉ (25-34 ู…ูŠู„/ุณุงุนุฉ) + ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ (25โ€“34 mph) + + + <b>How much to offset posted speed-limits</b> between 25 and 34 mph. + <b>ูƒู… ู…ู‚ุฏุงุฑ ุชุนูˆูŠุถ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุงู„ู…ุนู„ู†ุฉ</b> ุจูŠู† 25 ูˆ34 mph.</b Speed Offset (35โ€“44 mph) - ุฅุฒุงุญุฉ ุงู„ุณุฑุนุฉ (35โ€“44 ู…ูŠู„/ุณุงุนุฉ) + ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ (35โ€“44 mph) + + + <b>How much to offset posted speed-limits</b> between 35 and 44 mph. + <b>ูƒู… ู…ู‚ุฏุงุฑ ุชุนูˆูŠุถ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุงู„ู…ูุนู„ู†ุฉ</b> ุจูŠู† 35 ูˆ44 mph.</b Speed Offset (45โ€“54 mph) - ุฅุฒุงุญุฉ ุงู„ุณุฑุนุฉ (45-54 ู…ูŠู„/ุณุงุนุฉ) + ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ (45โ€“54 ู…ูŠู„/ุณ) + + + <b>How much to offset posted speed-limits</b> between 45 and 54 mph. + <b>ูƒู… ู…ู‚ุฏุงุฑ ุชุนูˆูŠุถ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุงู„ู…ุนู„ู†ุฉ</b> ุจูŠู† 45 ูˆ54 ู…ูŠู„/ุณุŸ Speed Offset (55โ€“64 mph) - ุฅุฒุงุญุฉ ุงู„ุณุฑุนุฉ (55-64 ู…ูŠู„/ุณุงุนุฉ) + ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ (55โ€“64 mph) + + + <b>How much to offset posted speed-limits</b> between 55 and 64 mph. + <b>ูƒู… ู…ู‚ุฏุงุฑ ุชุนูˆูŠุถ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุงู„ู…ุนู„ู†ุฉ</b> ุจูŠู† 55 ูˆ64 mph. Speed Offset (65โ€“74 mph) - ุฅุฒุงุญุฉ ุงู„ุณุฑุนุฉ (65โ€“74 ู…ูŠู„/ุณุงุนุฉ) + ุงู†ุญุฑุงู ุงู„ุณุฑุนุฉ (65โ€“74 ู…ูŠู„/ุณ) + + + <b>How much to offset posted speed-limits</b> between 65 and 74 mph. + <b>ู…ู‚ุฏุงุฑ ุชุนูˆูŠุถ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุงู„ู…ุนู„ู†ุฉ</b> ุจูŠู† 65 ูˆ74 ู…ูŠู„/ุณุงุนุฉ. Speed Offset (75โ€“99 mph) - ุฅุฒุงุญุฉ ุงู„ุณุฑุนุฉ (75โ€“99 ู…ูŠู„/ุณุงุนุฉ) + ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ (75โ€“99 ู…ูŠู„/ุณ) - Only For Detected Lanes - ูู‚ุท ู„ู„ู…ุณุงุฑุงุช ุงู„ู…ูƒุชุดูุฉ + <b>How much to offset posted speed-limits</b> between 75 and 99 mph. + <b>ูƒู… ูŠุฌุจ ุชุนูˆูŠุถ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุงู„ู…ุนู„ู†ุฉ</b> ุจูŠู† 75 ูˆ99 mph.</b> + + + Visual Settings + ุฅุนุฏุงุฏุงุช ุงู„ุนุฑุถ + + + <b>Visual "Speed Limit Controller" changes</b> to fine-tune how the driving screen looks. + <b>ุชุบูŠูŠุฑุงุช ู…ุฑุฆูŠุฉ ููŠ "ู…ุชุญูƒู… ุญุฏ ุงู„ุณุฑุนุฉ"</b> ู„ุถุจุท ู…ุธู‡ุฑ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ ุจุฏู‚ุฉ. + + + Show Speed Limit Offset + ุนุฑุถ ุชุนูˆูŠุถ ุญุฏ ุงู„ุณุฑุนุฉ + + + <b>Show the current offset from the posted limit</b> on the driving screen. + <b>ุงุนุฑุถ ุงู„ุงู†ุญุฑุงู ุงู„ุญุงู„ูŠ ุนู† ุงู„ุญุฏ ุงู„ู…ู†ุดูˆุฑ</b> ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. + + + Show Speed Limit Sources + ุฅุธู‡ุงุฑ ู…ุตุงุฏุฑ ุญุฏ ุงู„ุณุฑุนุฉ + + + <b>Display the speed-limit sources and their current values</b> on the driving screen. + <b>ุนุฑุถ ู…ุตุงุฏุฑ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ูˆู‚ูŠู…ู‡ุง ุงู„ุญุงู„ูŠุฉ</b> ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. + + + seconds + ุซูˆุงู†ู + + + m/sยฒ + ู…/ุซยฒ + + + mph + ู…ูŠู„/ุณุงุนุฉ + + + With Lead + ู…ุน ู…ุฑูƒุจุฉ ุฃู…ุงู…ูŠุฉ + + + <b>Switch to "Experimental Mode" when driving below this speed with a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>ุจุฏู‘ู„ ุฅู„ู‰ "ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ" ุนู†ุฏ ุงู„ู‚ูŠุงุฏุฉ ุชุญุช ู‡ุฐู‡ ุงู„ุณุฑุนุฉ ู…ุน ูˆุฌูˆุฏ ู…ุฑูƒุจุฉ ุฃู…ุงู…ูƒ</b> ู„ู…ุณุงุนุฏุฉ openpilot ุนู„ู‰ ุงู„ุชุนุงู…ู„ ุจุณู„ุงุณุฉ ุฃูƒุจุฑ ู…ุน ุงู„ู…ูˆุงู‚ู ู…ู†ุฎูุถุฉ ุงู„ุณุฑุนุฉ. + + + Slower Lead + ู…ุฑูƒุจุฉ ุฃู…ุงู…ูŠุฉ ุฃุจุทุฃ + + + Stopped Lead + ุงู„ู…ุฑูƒุจุฉ ุงู„ู…ุชู‚ุฏู…ุฉ ู…ุชูˆู‚ูุฉ + + + Intersections + ุงู„ุชู‚ุงุทุนุงุช + + + Turns + ุงู„ู…ู†ุนุทูุงุช + + + Off + ุฅูŠู‚ุงู + + + second + ุซุงู†ูŠุฉ + + + Not For Detected Lanes + ู„ูŠุณ ู„ู„ู…ุณุงุฑุงุช ุงู„ู…ููƒุชุดูุฉ + + + RESET + ุฅุนุงุฏุฉ ุถุจุท + + + Are you sure you want to completely reset your curvature data? + ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุจูŠุงู†ุงุช ุงู„ุงู†ุญู†ุงุก ุจุงู„ูƒุงู…ู„ุŸ + + + Eco + ุงู‚ุชุตุงุฏูŠ + + + Sport + ุฑูŠุงุถูŠ + + + Sport+ + ุณุจูˆุฑุช+ + + + feet + ุฃู‚ุฏุงู… + + + Acceleration + ุงู„ุชุณุงุฑุน + + + Deceleration + ุชุจุงุทุค + + + MANAGE + ุฅุฏุงุฑุฉ + + + Set Speed + ุชุนูŠูŠู† ุงู„ุณุฑุนุฉ + + + Experimental Mode + ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ + + + Previous Limit + ุงู„ุญุฏ ุงู„ุณุงุจู‚ + + + None + ู„ุง ุดูŠุก + + + Set With Gas Pedal + ุถุจุท ุจุงุณุชุฎุฏุงู… ุฏูˆุงุณุฉ ุงู„ูˆู‚ูˆุฏ + + + Max Set Speed + ุงู„ุณุฑุนุฉ ุงู„ู…ุญุฏุฏุฉ ุงู„ู‚ุตูˆู‰ + + + SELECT + ุชุญุฏูŠุฏ + + + Dashboard + ู„ูˆุญุฉ ุงู„ู‚ูŠุงุฏุฉ + + + Map Data + ุจูŠุงู†ุงุช ุงู„ุฎุฑุงุฆุท + + + Navigation + ุงู„ู…ู„ุงุญุฉ + + + Highest + ุงู„ุฃุนู„ู‰ + + + Lowest + ุงู„ุฃุฏู†ู‰ + + + Select your primary priority + ุงุฎุชุฑ ุฃูˆู„ูˆูŠุชูƒ ุงู„ุฃุณุงุณูŠุฉ + + + Select your secondary priority + ุงุฎุชุฑ ุฃูˆู„ูˆูŠุชูƒ ุงู„ุซุงู†ูˆูŠุฉ + + + Select your tertiary priority + ุงุฎุชุฑ ุฃูˆู„ูˆูŠุชูƒ ุงู„ุซุงู„ุซุฉ + + + Lower Limits + ุงู„ุญุฏูˆุฏ ุงู„ุฏู†ูŠุง + + + Higher Limits + ุญุฏูˆุฏ ุฃุนู„ู‰ + + + Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? + ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฅุนุฏุงุฏุงุชูƒ ุจุงู„ูƒุงู…ู„ ู„ูˆุถุน <b>Traffic Mode</b>? + + + Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? + ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุถุจุท ุฅุนุฏุงุฏุงุชูƒ ุจุงู„ูƒุงู…ู„ ู„ุดุฎุตูŠุฉ <b>ุนุฏูˆุงู†ูŠุฉ</b>? + + + Are you sure you want to completely reset your settings for the <b>Standard</b> personality? + ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฅุนุฏุงุฏุงุชูƒ ุจุงู„ูƒุงู…ู„ ู„ุดุฎุตูŠุฉ <b>Standard</b>? + + + Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? + ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุถุจุท ุฅุนุฏุงุฏุงุชูƒ ุชู…ุงู…ู‹ุง ู„ุดุฎุตูŠุฉ <b>ุงู„ู‡ุงุฏุฆุฉ</b>? + + + foot + ู‚ุฏู… + + + meter + ู…ุชุฑ + + + meters + ุฃู…ุชุงุฑ + + + km/h + ูƒู…/ุณ Speed Offset (0โ€“29 km/h) - ุฅุฒุงุญุฉ ุงู„ุณุฑุนุฉ (0-29 ูƒู…/ุณ) + ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ (0โ€“29 ูƒู…/ุณ) Speed Offset (30โ€“49 km/h) - ูุฑู‚ ุงู„ุณุฑุนุฉ (30-49 ูƒู…/ุณ) + ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ (30โ€“49 ูƒู…/ุณ) Speed Offset (50โ€“59 km/h) - ูุฑู‚ ุงู„ุณุฑุนุฉ (50-59 ูƒู…/ุณ) + ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ (50โ€“59 ูƒู…/ุณ) Speed Offset (60โ€“79 km/h) - ุฅุฒุงุญุฉ ุงู„ุณุฑุนุฉ (60-79 ูƒู…/ุณ) + ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ (60โ€“79 ูƒู…/ุณ) Speed Offset (80โ€“99 km/h) - ุฅุฒุงุญุฉ ุงู„ุณุฑุนุฉ (80-99 ูƒู…/ุณ) + ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ (80โ€“99 ูƒู…/ุณ) Speed Offset (100โ€“119 km/h) - ุฅุฒุงุญุฉ ุงู„ุณุฑุนุฉ (100-119 ูƒู…/ุณ) + ุชุนูˆูŠุถ ุงู„ุณุฑุนุฉ (100โ€“119 ูƒู…/ุณ) Speed Offset (120โ€“140 km/h) - ุฅุฒุงุญุฉ ุงู„ุณุฑุนุฉ (120-140 ูƒู…/ุณ) + ุฅุฒุงุญุฉ ุงู„ุณุฑุนุฉ (120โ€“140 ูƒู…/ุณ) - Curve Speed Control - ุงู„ุชุญูƒู… ููŠ ุณุฑุนุฉ ุงู„ู…ู†ุญู†ู‰ - - - Automatically slow down for upcoming curves using downloaded maps or the driving model. - ุงู„ุชุจุงุทุค ุชู„ู‚ุงุฆูŠู‹ุง ู„ู„ู…ู†ุญู†ูŠุงุช ุงู„ู‚ุงุฏู…ุฉ ุจุงุณุชุฎุฏุงู… ุงู„ุฎุฑุงุฆุท ุงู„ู…ุญู…ู„ุฉ ุฃูˆ ู†ู…ูˆุฐุฌ ุงู„ู‚ูŠุงุฏุฉ. - - - Curve Detection Method - ุทุฑูŠู‚ุฉ ูƒุดู ุงู„ู…ู†ุญู†ู‰ - - - How curves are detected. <b>Map-Based</b> uses downloaded map data to identify curves and determine the appropriate speed in which to handle them at, while <b>Vision</b> relies solely on the driving model. - ูƒูŠู ูŠุชู… ุงูƒุชุดุงู ุงู„ู…ู†ุญู†ูŠุงุช. ูŠุณุชุฎุฏู… <b>ุงู„ู…ุณุชู†ุฏ ุฅู„ู‰ ุงู„ุฎุฑูŠุทุฉ</b> ุจูŠุงู†ุงุช ุงู„ุฎุฑูŠุทุฉ ุงู„ู…ุญู…ู„ุฉ ู„ุชุญุฏูŠุฏ ุงู„ู…ู†ุญู†ูŠุงุช ูˆุชุญุฏูŠุฏ ุงู„ุณุฑุนุฉ ุงู„ู…ู†ุงุณุจุฉ ู„ู„ุชุนุงู…ู„ ู…ุนู‡ุงุŒ ุจูŠู†ู…ุง ูŠุนุชู…ุฏ <b>ุงู„ุฑุคูŠุฉ</b> ูู‚ุท ุนู„ู‰ ู†ู…ูˆุฐุฌ ุงู„ู‚ูŠุงุฏุฉ. - - - Curve Detection Failsafe - ูุดู„ ุงูƒุชุดุงู ุงู„ู…ู†ุญู†ู‰ - - - Only trigger <b>Curve Speed Control</b> if a curve is detected with the model while using the <b>Map-Based</b> method. Useful to help prevent false positives. - ู‚ู… ุจุชูุนูŠู„ <b>ุงู„ุชุญูƒู… ููŠ ุณุฑุนุฉ ุงู„ู…ู†ุญู†ู‰</b> ูู‚ุท ุฅุฐุง ุชู… ุงูƒุชุดุงู ู…ู†ุญู†ู‰ ุจุงุณุชุฎุฏุงู… ุงู„ู†ู…ูˆุฐุฌ ุฃุซู†ุงุก ุงุณุชุฎุฏุงู… ุทุฑูŠู‚ุฉ <b>ุงู„ู…ุนุชู…ุฏุฉ ุนู„ู‰ ุงู„ุฎุฑูŠุทุฉ</b>. ู…ููŠุฏ ู„ู„ู…ุณุงุนุฏุฉ ููŠ ู…ู†ุน ุงู„ุฅูŠุฌุงุจูŠุงุช ุงู„ูƒุงุฐุจุฉ. - - - Curve Detection Sensitivity - ุญุณุงุณูŠุฉ ุงูƒุชุดุงู ุงู„ู…ู†ุญู†ู‰ - - - How sensitive openpilot is when detecting curves. Higher values trigger earlier responses at the risk of triggering too often, while lower values increase confidence at the risk of triggering too infrequently. - ู…ุฏู‰ ุญุณุงุณูŠุฉ openpilot ุนู†ุฏ ุงูƒุชุดุงู ุงู„ู…ู†ุญู†ูŠุงุช. ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุชุคุฏูŠ ุฅู„ู‰ ุงุณุชุฌุงุจุงุช ู…ุจูƒุฑุฉ ู…ุน ุฎุทุฑ ุงู„ุชูุนูŠู„ ุจุดูƒู„ ู…ุชูƒุฑุฑุŒ ุจูŠู†ู…ุง ุงู„ู‚ูŠู… ุงู„ุฃุฏู†ู‰ ุชุฒูŠุฏ ุงู„ุซู‚ุฉ ู…ุน ุฎุทุฑ ุงู„ุชูุนูŠู„ ุจุดูƒู„ ุบูŠุฑ ู…ุชูƒุฑุฑ. - - - Curve Speed Aggressiveness - ุญุฏุฉ ุณุฑุนุฉ ุงู„ู…ู†ุญู†ู‰ - - - How aggressive openpilot is when navigating through curves. Higher values result in faster turns but may reduce comfort or stability, while lower values result in slower, smoother turns at the risk of being overly cautious. - ู…ุฏู‰ ุนุฏูˆุงู†ูŠุฉ openpilot ุนู†ุฏ ุงู„ุชู†ู‚ู„ ุนุจุฑ ุงู„ู…ู†ุญู†ูŠุงุช. ุชุคุฏูŠ ุงู„ู‚ูŠู… ุงู„ุฃุนู„ู‰ ุฅู„ู‰ ุงู†ุนุทุงูุงุช ุฃุณุฑุน ูˆู„ูƒู† ู‚ุฏ ุชู‚ู„ู„ ู…ู† ุงู„ุฑุงุญุฉ ุฃูˆ ุงู„ุงุณุชู‚ุฑุงุฑุŒ ุจูŠู†ู…ุง ุชุคุฏูŠ ุงู„ู‚ูŠู… ุงู„ุฃู‚ู„ ุฅู„ู‰ ุงู†ุนุทุงูุงุช ุฃุจุทุฃ ูˆุฃูƒุซุฑ ุณู„ุงุณุฉ ู…ุน ุฎุทุฑ ุฃู† ุชูƒูˆู† ู…ูุฑุทุฉ ููŠ ุงู„ุญุฐุฑ. - - - Map Based - ู…ุจู†ูŠ ุนู„ู‰ ุงู„ุฎุฑูŠุทุฉ - - - Vision - ุฑุคูŠุฉ - - - The <b>Map Based</b> option is only available when some <b>Map Data</b> has been downloaded! - ุฎูŠุงุฑ <b>ุงู„ู…ุณุชู†ุฏ ุฅู„ู‰ ุงู„ุฎุฑูŠุทุฉ</b> ู…ุชุงุญ ูู‚ุท ุนู†ุฏู…ุง ูŠุชู… ุชู†ุฒูŠู„ ุจุนุถ <b>ุจูŠุงู†ุงุช ุงู„ุฎุฑูŠุทุฉ</b>! + <b>Following behavior that mimics human drivers</b> by closing gaps behind faster vehicles for quicker takeoffs and dynamically adjusting the desired following distance for gentler, more efficient braking. + <b>ุณู„ูˆูƒ ู…ุชุงุจุนุฉ ูŠุญุงูƒูŠ ุงู„ุณุงุฆู‚ูŠู† ุงู„ุจุดุฑ</b> ุนุจุฑ ุชู‚ู„ูŠู„ ุงู„ูุฌูˆุงุช ุฎู„ู ุงู„ู…ุฑูƒุจุงุช ุงู„ุฃุณุฑุน ู„ุงู†ุทู„ุงู‚ ุฃุณุฑุน ูˆุถุจุท ู…ุณุงูุฉ ุงู„ู…ุชุงุจุนุฉ ุงู„ู…ุทู„ูˆุจุฉ ุฏูŠู†ุงู…ูŠูƒูŠุงู‹ ู„ูƒุจุญ ุฃู„ุทู ูˆุฃูƒุซุฑ ูƒูุงุกุฉ. FrogPilotManageControl MANAGE - ุฅุฏุงุฑุฉ + ุฅุฏุงุฑุฉ FrogPilotMapsPanel Manually - ูŠุฏูˆูŠู‹ุง + ูŠุฏูˆูŠู‹ุง Weekly - ุฃุณุจูˆุนูŠ + ุฃุณุจูˆุนูŠ Monthly - ุดู‡ุฑูŠุงู‹ + ุดู‡ุฑูŠ Automatically Update Maps - ุชุญุฏูŠุซ ุงู„ุฎุฑุงุฆุท ุชู„ู‚ุงุฆูŠู‹ุง + ุชุญุฏูŠุซ ุงู„ุฎุฑุงุฆุท ุชู„ู‚ุงุฆูŠู‹ุง - The frequency at which maps sync with the latest OpenStreetMap (OSM) changes. Weekly updates occur every Sunday, and monthly updates occur on the 1st. - ุงู„ุชุฑุฏุฏ ุงู„ุฐูŠ ุชุชุฒุงู…ู† ุจู‡ ุงู„ุฎุฑุงุฆุท ู…ุน ุฃุญุฏุซ ุชุบูŠูŠุฑุงุช OpenStreetMap (OSM). ุชุญุฏุซ ุงู„ุชุญุฏูŠุซุงุช ุงู„ุฃุณุจูˆุนูŠุฉ ูƒู„ ูŠูˆู… ุฃุญุฏุŒ ูˆุชุญุฏุซ ุงู„ุชุญุฏูŠุซุงุช ุงู„ุดู‡ุฑูŠุฉ ููŠ ุงู„ุฃูˆู„ ู…ู† ุงู„ุดู‡ุฑ. - - - Data Sources - ู…ุตุงุฏุฑ ุงู„ุจูŠุงู†ุงุช - - - Select map data sources to use with "Curve Speed Control" and "Speed Limit Controller". - ุญุฏุฏ ู…ุตุงุฏุฑ ุจูŠุงู†ุงุช ุงู„ุฎุฑูŠุทุฉ ู„ุงุณุชุฎุฏุงู…ู‡ุง ู…ุน "ุงู„ุชุญูƒู… ููŠ ุณุฑุนุฉ ุงู„ู…ู†ุญู†ู‰" ูˆ"ู…ุญุฏุฏ ุงู„ุณุฑุนุฉ". - - - COUNTRIES - ุงู„ุฏูˆู„ - - - STATES - ุงู„ูˆู„ุงูŠุงุช + <b>How often maps update</b> from "OpenStreetMap (OSM)" with the latest speed limit information. Weekly updates run every Sunday; monthly updates run on the 1st. + <b>ุนุฏุฏ ู…ุฑุงุช ุชุญุฏูŠุซ ุงู„ุฎุฑุงุฆุท</b> ู…ู† "OpenStreetMap (OSM)" ุจุฃุญุฏุซ ู…ุนู„ูˆู…ุงุช ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ. ูŠุชู… ุชุดุบูŠู„ ุงู„ุชุญุฏูŠุซุงุช ุงู„ุฃุณุจูˆุนูŠุฉ ูƒู„ ูŠูˆู… ุฃุญุฏุ› ูˆุชูุฌุฑู‰ ุงู„ุชุญุฏูŠุซุงุช ุงู„ุดู‡ุฑูŠุฉ ููŠ ุงู„ูŠูˆู… ุงู„ุฃูˆู„ ู…ู† ูƒู„ ุดู‡ุฑ. Download Maps - ุชู†ุฒูŠู„ ุงู„ุฎุฑุงุฆุท + ุชู†ุฒูŠู„ ุงู„ุฎุฑุงุฆุท DOWNLOAD - ุชู†ุฒูŠู„ + ุชู†ุฒูŠู„ - Download the selected maps to use with "Curve Speed Control" and "Speed Limit Controller". - ู‚ู… ุจุชู†ุฒูŠู„ ุงู„ุฎุฑุงุฆุท ุงู„ู…ุญุฏุฏุฉ ู„ุงุณุชุฎุฏุงู…ู‡ุง ู…ุน "ุงู„ุชุญูƒู… ููŠ ุณุฑุนุฉ ุงู„ู…ู†ุญู†ู‰" ูˆ"ู…ุญุฏุฏ ุงู„ุณุฑุนุฉ". + <b>Manually update your selected map sources</b> so "Speed Limit Controller" has the latest speed limit information. + <b>ู‚ู… ุจุชุญุฏูŠุซ ู…ุตุงุฏุฑ ุงู„ุฎุฑุงุฆุท ุงู„ู…ุญุฏุฏุฉ ูŠุฏูˆูŠู‹ุง</b> ุญุชู‰ ูŠุญุชูˆูŠ "Speed Limit Controller" ุนู„ู‰ ุฃุญุฏุซ ู…ุนู„ูˆู…ุงุช ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ. CANCEL - ุฅู„ุบุงุก + ุฅู„ุบุงุก - Are you sure you want to cancel the download? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅู„ุบุงุก ุงู„ุชู†ุฒูŠู„ุŸ + Cancel the download? + ุฅู„ุบุงุก ุงู„ุชู†ุฒูŠู„ุŸ - Download Completion ETA - ุงู„ูˆู‚ุช ุงู„ู…ุชูˆู‚ุน ู„ุฅูƒู…ุงู„ ุงู„ุชู†ุฒูŠู„ + Last Updated + ุขุฎุฑ ุชุญุฏูŠุซ - Download Progress - ุชู‚ุฏู… ุงู„ุชู†ุฒูŠู„ + Map Sources + ู…ุตุงุฏุฑ ุงู„ุฎุฑุงุฆุท - Download Time Elapsed - ูˆู‚ุช ุงู„ุชู†ุฒูŠู„ ุงู„ู…ู†ู‚ุถูŠ + <b>Select the countries or U.S. states to use with "Speed Limit Controller".</b> + <b>ุงุฎุชุฑ ุงู„ุจู„ุฏุงู† ุฃูˆ ุงู„ูˆู„ุงูŠุงุช ุงู„ุฃู…ูŠุฑูƒูŠุฉ ู„ู„ุงุณุชุฎุฏุงู… ู…ุน "Speed Limit Controller".</b> - Maps Last Updated - ุชู… ุชุญุฏูŠุซ ุงู„ุฎุฑุงุฆุท ุขุฎุฑ ู…ุฑุฉ + COUNTRIES + ุงู„ุฏูˆู„ - Maps Size - ุญุฌู… ุงู„ุฎุฑุงุฆุท + STATES + ุงู„ูˆู„ุงูŠุงุช + + + Progress + ุงู„ุชู‚ุฏู… + + + Time Elapsed + ุงู„ูˆู‚ุช ุงู„ู…ู†ู‚ุถูŠ + + + Time Remaining + ุงู„ูˆู‚ุช ุงู„ู…ุชุจู‚ูŠ Remove Maps - ุฅุฒุงู„ุฉ ุงู„ุฎุฑุงุฆุท + ุฅุฒุงู„ุฉ ุงู„ุฎุฑุงุฆุท REMOVE - ุฅุฒุงู„ุฉ + ุฅุฒุงู„ุฉ - Remove downloaded maps to clear up storage space. - ุฅุฒุงู„ุฉ ุงู„ุฎุฑุงุฆุท ุงู„ู…ุญู…ู„ุฉ ู„ุชูˆููŠุฑ ู…ุณุงุญุฉ ุชุฎุฒูŠู†. + <b>Delete downloaded map data</b> to free up storage space. + <b>ุงุญุฐู ุจูŠุงู†ุงุช ุงู„ุฎุฑุงุฆุท ุงู„ุชูŠ ุชู… ุชู†ุฒูŠู„ู‡ุง</b> ู„ุชุญุฑูŠุฑ ู…ุณุงุญุฉ ุงู„ุชุฎุฒูŠู†. - Are you sure you want to delete all of your downloaded maps? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุญุฐู ุฌู…ูŠุน ุงู„ุฎุฑุงุฆุท ุงู„ุชูŠ ุชู… ุชู†ุฒูŠู„ู‡ุงุŸ + Delete all downloaded maps? + ุญุฐู ุฌู…ูŠุน ุงู„ุฎุฑุงุฆุท ุงู„ุชูŠ ุชู… ุชู†ุฒูŠู„ู‡ุงุŸ - Reset Map Downloader - ุฅุนุงุฏุฉ ุชุนูŠูŠู† ู…ุญู…ู„ ุงู„ุฎุฑุงุฆุท + Reset Downloader + ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฃุฏุงุฉ ุงู„ุชู†ุฒูŠู„ RESET - ุฅุนุงุฏุฉ ุชุนูŠูŠู† + ุฅุนุงุฏุฉ ุชุนูŠูŠู† - Reset the map downloader. Use if you're running into issues with downloading maps. - ุฅุนุงุฏุฉ ุชุนูŠูŠู† ู…ุญู…ู„ ุงู„ุฎุฑุงุฆุท. ุงุณุชุฎุฏู…ู‡ ุฅุฐุง ูƒู†ุช ุชูˆุงุฌู‡ ู…ุดูƒู„ุงุช ููŠ ุชู†ุฒูŠู„ ุงู„ุฎุฑุงุฆุท. + <b>Reset the map downloader.</b> Use this if downloads are stuck or failing. + <b>ุฅุนุงุฏุฉ ุชุนูŠูŠู† ู…ูู†ุฒู‘ูู„ ุงู„ุฎุฑุงุฆุท.</b> ุงุณุชุฎุฏู… ู‡ุฐุง ุฅุฐุง ูƒุงู†ุช ุงู„ุชู†ุฒูŠู„ุงุช ุนุงู„ู‚ุฉ ุฃูˆ ุชูุดู„. - Are you sure you want to reset the map downloader? This will force a reboot once completed. - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† ู…ุญู…ู„ ุงู„ุฎุฑุงุฆุทุŸ ุณูŠุคุฏูŠ ุฐู„ูƒ ุฅู„ู‰ ุฅุนุงุฏุฉ ุงู„ุชุดุบูŠู„ ุจู…ุฌุฑุฏ ุงู„ุงู†ุชู‡ุงุก. + Reset the map downloader? Your device will reboot afterward. + ุฅุนุงุฏุฉ ุชุนูŠูŠู† ู…ูู†ุฒู‘ูู„ ุงู„ุฎุฑุงุฆุทุŸ ุณูŠูุนุงุฏ ุชุดุบูŠู„ ุฌู‡ุงุฒูƒ ุจุนุฏ ุฐู„ูƒ. Reset - ุฅุนุงุฏุฉ ุชุนูŠูŠู† + ุฅุนุงุฏุฉ ุงู„ุชุนูŠูŠู† Resetting... - ุฅุนุงุฏุฉ ุงู„ุชุนูŠูŠู†... + ุฅุนุงุฏุฉ ุงู„ุชุนูŠูŠู† ุฌุงุฑูโ€ฆ Reset! - ุฅุนุงุฏุฉ ุชุนูŠูŠู†! + ุฅุนุงุฏุฉ ุถุจุท! Rebooting... - ุฅุนุงุฏุฉ ุงู„ุชุดุบูŠู„... + ุฅุนุงุฏุฉ ุงู„ุชุดุบูŠู„... + + + Storage Used + ุงู„ู…ุณุงุญุฉ ุงู„ู…ุณุชุฎุฏู…ุฉ Africa - ุฃูุฑูŠู‚ูŠุง + ุฃูุฑูŠู‚ูŠุง Antarctica - ุฃู†ุชุงุฑูƒุชูŠูƒุง + ุฃู†ุชุงุฑูƒุชูŠูƒุง Asia - ุขุณูŠุง + ุขุณูŠุง Europe - ุฃูˆุฑูˆุจุง + ุฃูˆุฑูˆุจุง North America - ุฃู…ุฑูŠูƒุง ุงู„ุดู…ุงู„ูŠุฉ + ุฃู…ุฑูŠูƒุง ุงู„ุดู…ุงู„ูŠุฉ Oceania - ุฃูˆู‚ูŠุงู†ูˆุณูŠุง + ุฃูˆู‚ูŠุงู†ูˆุณูŠุง South America - ุฃู…ุฑูŠูƒุง ุงู„ุฌู†ูˆุจูŠุฉ + ุฃู…ุฑูŠูƒุง ุงู„ุฌู†ูˆุจูŠุฉ United States - Midwest - ุงู„ูˆู„ุงูŠุงุช ุงู„ู…ุชุญุฏุฉ - ุงู„ุบุฑุจ ุงู„ุฃูˆุณุท + ุงู„ูˆู„ุงูŠุงุช ุงู„ู…ุชุญุฏุฉ - ุงู„ุบุฑุจ ุงู„ุฃูˆุณุท United States - Northeast - ุงู„ูˆู„ุงูŠุงุช ุงู„ู…ุชุญุฏุฉ - ุงู„ุดู…ุงู„ ุงู„ุดุฑู‚ูŠ + ุงู„ูˆู„ุงูŠุงุช ุงู„ู…ุชุญุฏุฉ - ุงู„ุดู…ุงู„ ุงู„ุดุฑู‚ูŠ United States - South - ุงู„ูˆู„ุงูŠุงุช ุงู„ู…ุชุญุฏุฉ - ุงู„ุฌู†ูˆุจ + ุงู„ูˆู„ุงูŠุงุช ุงู„ู…ุชุญุฏุฉ - ุงู„ุฌู†ูˆุจ United States - West - ุงู„ูˆู„ุงูŠุงุช ุงู„ู…ุชุญุฏุฉ - ุงู„ุบุฑุจ + ุงู„ูˆู„ุงูŠุงุช ุงู„ู…ุชุญุฏุฉ - ุงู„ุบุฑุจ United States - Territories - ุงู„ูˆู„ุงูŠุงุช ุงู„ู…ุชุญุฏุฉ - ุงู„ุฃู‚ุงู„ูŠู… - - - CANCELLED - ุฃูู„ุบูŠ + ุงู„ูˆู„ุงูŠุงุช ุงู„ู…ุชุญุฏุฉ - ุงู„ุฃู‚ุงู„ูŠู… Offline... - ุบูŠุฑ ู…ุชุตู„... + ุบูŠุฑ ู…ุชุตู„โ€ฆ + + + CANCELLED + ุฃูู„ุบูŠ FrogPilotModelPanel Automatically Download New Models - ุชู†ุฒูŠู„ ุงู„ู†ู…ุงุฐุฌ ุงู„ุฌุฏูŠุฏุฉ ุชู„ู‚ุงุฆูŠู‹ุง + ุชู†ุฒูŠู„ ุงู„ู†ู…ุงุฐุฌ ุงู„ุฌุฏูŠุฏุฉ ุชู„ู‚ุงุฆูŠู‹ุง - Automatically download new driving models as they become available. - ุชู†ุฒูŠู„ ู†ู…ุงุฐุฌ ุงู„ู‚ูŠุงุฏุฉ ุงู„ุฌุฏูŠุฏุฉ ุชู„ู‚ุงุฆูŠู‹ุง ุนู†ุฏ ุชูˆูุฑู‡ุง. + <b>Automatically download new driving models</b> as they become available. + <b>ุชู†ุฒูŠู„ ู†ู…ุงุฐุฌ ุงู„ู‚ูŠุงุฏุฉ ุงู„ุฌุฏูŠุฏุฉ ุชู„ู‚ุงุฆูŠู‹ุง</b> ุนู†ุฏ ุชูˆูุฑู‡ุง. Delete Driving Models - ุญุฐู ู†ู…ุงุฐุฌ ุงู„ู‚ูŠุงุฏุฉ + ุญุฐู ู†ู…ุงุฐุฌ ุงู„ู‚ูŠุงุฏุฉ - Delete driving models from the device. - ุงุญุฐู ู†ู…ุงุฐุฌ ุงู„ู‚ูŠุงุฏุฉ ู…ู† ุงู„ุฌู‡ุงุฒ. + <b>Delete downloaded driving models</b> to free up storage space. + <b>ุงุญุฐู ู†ู…ุงุฐุฌ ุงู„ู‚ูŠุงุฏุฉ ุงู„ู…ูู†ุฒู‘ู„ุฉ</b> ู„ุชุญุฑูŠุฑ ู…ุณุงุญุฉ ุงู„ุชุฎุฒูŠู†. Download Driving Models - ุชู†ุฒูŠู„ ู†ู…ุงุฐุฌ ุงู„ู‚ูŠุงุฏุฉ + ุชู†ุฒูŠู„ ู†ู…ุงุฐุฌ ุงู„ู‚ูŠุงุฏุฉ - Download driving models to the device. - ุชู†ุฒูŠู„ ู†ู…ุงุฐุฌ ุงู„ู‚ูŠุงุฏุฉ ุฅู„ู‰ ุงู„ุฌู‡ุงุฒ. + <b>Manually download driving models</b> to the device. + <b>ู‚ู… ุจุชู†ุฒูŠู„ ู†ู…ุงุฐุฌ ุงู„ู‚ูŠุงุฏุฉ ูŠุฏูˆูŠู‹ุง</b> ุฅู„ู‰ ุงู„ุฌู‡ุงุฒ. Model Randomizer - ุนุดูˆุงุฆูŠ ุงู„ู†ู…ูˆุฐุฌ + ู…ูุนูŽุฏูู‘ู„ ุงู„ู†ู…ูˆุฐุฌ ุงู„ุนุดูˆุงุฆูŠ - Driving models are chosen at random each drive and feedback prompts are used to find the model that best suits your needs. - ูŠุชู… ุงุฎุชูŠุงุฑ ู†ู…ุงุฐุฌ ุงู„ู‚ูŠุงุฏุฉ ุนุดูˆุงุฆูŠู‹ุง ููŠ ูƒู„ ุฑุญู„ุฉ ูˆุชูุณุชุฎุฏู… ู…ุทุงู„ุจุงุช ุงู„ุชุบุฐูŠุฉ ุงู„ุฑุงุฌุนุฉ ู„ู„ุนุซูˆุฑ ุนู„ู‰ ุงู„ู†ู…ูˆุฐุฌ ุงู„ุฐูŠ ูŠู†ุงุณุจ ุงุญุชูŠุงุฌุงุชูƒ ุจุดูƒู„ ุฃูุถู„. + <b>Select a random driving model each drive</b> and use feedback prompts at the end of the drive to help find the model that best suits you! + <b>ุงุฎุชุฑ ู†ู…ูˆุฐุฌ ู‚ูŠุงุฏุฉ ุนุดูˆุงุฆูŠู‹ุง ููŠ ูƒู„ ุฑุญู„ุฉ</b> ูˆุงุณุชุฎุฏู… ู…ุทุงู„ุจุงุช ุงู„ู…ู„ุงุญุธุงุช ููŠ ู†ู‡ุงูŠุฉ ุงู„ุฑุญู„ุฉ ู„ู„ู…ุณุงุนุฏุฉ ููŠ ุงู„ุนุซูˆุฑ ุนู„ู‰ ุงู„ู†ู…ูˆุฐุฌ ุงู„ุฃู†ุณุจ ู„ูƒ! Manage Model Blacklist - ุฅุฏุงุฑุฉ ุงู„ู‚ุงุฆู…ุฉ ุงู„ุณูˆุฏุงุก ู„ู„ู†ู…ูˆุฐุฌ + ุฅุฏุงุฑุฉ ุงู„ู‚ุงุฆู…ุฉ ุงู„ุณูˆุฏุงุก ู„ู„ู†ู…ุงุฐุฌ - Add or remove models from the <b>Model Randomizer</b>'s blacklist list. - ุฅุถุงูุฉ ุฃูˆ ุฅุฒุงู„ุฉ ุงู„ู†ู…ุงุฐุฌ ู…ู† ู‚ุงุฆู…ุฉ ุงู„ุญุธุฑ ููŠ <b>Model Randomizer</b>. + <b>Add or remove driving models from the "Model Randomizer" blacklist.</b> + <b>ุฃุถูู ุฃูˆ ุฃุฒูู„ ู†ู…ุงุฐุฌ ุงู„ู‚ูŠุงุฏุฉ ู…ู† ู‚ุงุฆู…ุฉ ุงู„ุญุธุฑ ููŠ "Model Randomizer".</b> Manage Model Ratings - ุฅุฏุงุฑุฉ ุชู‚ูŠูŠู…ุงุช ุงู„ู†ู…ูˆุฐุฌ + ุฅุฏุงุฑุฉ ุชู‚ูŠูŠู…ุงุช ุงู„ู†ู…ูˆุฐุฌ - Reset or view the saved ratings for the driving models. - ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฃูˆ ุนุฑุถ ุงู„ุชู‚ูŠูŠู…ุงุช ุงู„ู…ุญููˆุธุฉ ู„ู†ู…ุงุฐุฌ ุงู„ู‚ูŠุงุฏุฉ. + <b>View or reset saved model ratings</b> used by the "Model Randomizer". + <b>ุนุฑุถ ุฃูˆ ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุชู‚ูŠูŠู…ุงุช ุงู„ู†ู…ุงุฐุฌ ุงู„ู…ุญููˆุธุฉ</b> ุงู„ู…ุณุชุฎุฏู…ุฉ ุจูˆุงุณุทุฉ "Model Randomizer". Select Driving Model - ุงุฎุชุฑ ู†ู…ูˆุฐุฌ ุงู„ู‚ูŠุงุฏุฉ + ุงุฎุชุฑ ู†ู…ูˆุฐุฌ ุงู„ู‚ูŠุงุฏุฉ - Select the active driving model. - ุญุฏุฏ ู†ู…ูˆุฐุฌ ุงู„ู‚ูŠุงุฏุฉ ุงู„ู†ุดุท. + <b>Choose which driving model openpilot uses.</b> + <b>ุงุฎุชุฑ ู†ู…ูˆุฐุฌ ุงู„ู‚ูŠุงุฏุฉ ุงู„ุฐูŠ ูŠุณุชุฎุฏู…ู‡ openpilot.</b> + + + Update Model Manager + ุชุญุฏูŠุซ ู…ุฏูŠุฑ ุงู„ู†ู…ูˆุฐุฌ + + + <b>Update the "Model Manager"</b> to support the latest models. + <b>ุญุฏู‘ุซ "Model Manager"</b> ู„ุฏุนู… ุฃุญุฏุซ ุงู„ู†ู…ุงุฐุฌ. DELETE - ุญุฐู + ุญุฐู DELETE ALL - ุงุญุฐู ุงู„ูƒู„ + ุญุฐู ุงู„ูƒู„ Select a driving model to delete - ุญุฏุฏ ู†ู…ูˆุฐุฌ ุงู„ู‚ูŠุงุฏุฉ ู„ุญุฐูู‡ + ุงุฎุชุฑ ู†ู…ูˆุฐุฌ ู‚ูŠุงุฏุฉ ู„ุญุฐูู‡ Are you sure you want to delete the "%1" model? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุญุฐู ุงู„ู†ู…ูˆุฐุฌ "%1"ุŸ + ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุญุฐู ุงู„ู†ู…ูˆุฐุฌ "%1"ุŸ Delete - ุญุฐู + ุญุฐู Are you sure you want to delete all of your downloaded driving models? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุญุฐู ุฌู…ูŠุน ู†ู…ุงุฐุฌ ุงู„ู‚ูŠุงุฏุฉ ุงู„ุชูŠ ุชู… ุชู†ุฒูŠู„ู‡ุงุŸ + ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุญุฐู ุฌู…ูŠุน ู†ู…ุงุฐุฌ ุงู„ู‚ูŠุงุฏุฉ ุงู„ุชูŠ ู‚ู…ุช ุจุชู†ุฒูŠู„ู‡ุงุŸ DOWNLOAD - ุชู†ุฒูŠู„ + ุชู†ุฒูŠู„ DOWNLOAD ALL - ุชุญู…ูŠู„ ุงู„ูƒู„ + ุชู†ุฒูŠู„ ุงู„ูƒู„ - Select a driving model to download - ุงุฎุชุฑ ู†ู…ูˆุฐุฌ ู‚ูŠุงุฏุฉ ู„ู„ุชู†ุฒูŠู„ + Tinygrad is out of date and must be updated before you can download new models. Update now? + Tinygrad ุบูŠุฑ ู…ุญุฏู‘ุซ ูˆูŠุฌุจ ุชุญุฏูŠุซู‡ ู‚ุจู„ ุชู†ุฒูŠู„ ุงู„ู†ู…ุงุฐุฌ ุงู„ุฌุฏูŠุฏุฉ. ู‡ู„ ุชุฑูŠุฏ ุงู„ุชุญุฏูŠุซ ุงู„ุขู†ุŸ + + + Updating Tinygrad will delete all existing Tinygrad-based models which will need to be re-downloaded. Proceed? + ุณูŠุคุฏูŠ ุชุญุฏูŠุซ Tinygrad ุฅู„ู‰ ุญุฐู ุฌู…ูŠุน ุงู„ู†ู…ุงุฐุฌ ุงู„ู…ุจู†ูŠุฉ ุนู„ู‰ Tinygrad ุงู„ุญุงู„ูŠุฉ ูˆุงู„ุชูŠ ุณูŠุชุนูŠู† ุฅุนุงุฏุฉ ุชู†ุฒูŠู„ู‡ุง. ุงู„ู…ุชุงุจุนุฉุŸ CANCEL - ุฅู„ุบุงุก + ุฅู„ุบุงุก + + + Updating... + ุฌุงุฑู ุงู„ุชุญุฏูŠุซ... + + + Select a driving model to download + ุงุฎุชุฑ ู†ู…ูˆุฐุฌ ู‚ูŠุงุฏุฉ ู„ุชู†ุฒูŠู„ู‡ ADD - ุฅุถุงูุฉ + ุฅุถุงูุฉ REMOVE - ุฅุฒุงู„ุฉ + ุฅุฒุงู„ุฉ REMOVE ALL - ุฅุฒุงู„ุฉ ุงู„ูƒู„ + ุฅุฒุงู„ุฉ ุงู„ูƒู„ - There are no more models to blacklist! The only available model is "%1"! - ู„ุง ุชูˆุฌุฏ ู†ู…ุงุฐุฌ ุฃุฎุฑู‰ ู„ุฅุถุงูุชู‡ุง ุฅู„ู‰ ุงู„ู‚ุงุฆู…ุฉ ุงู„ุณูˆุฏุงุก! ุงู„ู†ู…ูˆุฐุฌ ุงู„ูˆุญูŠุฏ ุงู„ู…ุชุงุญ ู‡ูˆ "%1"! + There are no more driving models to blacklist. The only available model is "%1"! + ู„ุง ุชูˆุฌุฏ ุงู„ู…ุฒูŠุฏ ู…ู† ู†ู…ุงุฐุฌ ุงู„ู‚ูŠุงุฏุฉ ู„ุฅุฏุฑุงุฌู‡ุง ููŠ ุงู„ู‚ุงุฆู…ุฉ ุงู„ุณูˆุฏุงุก. ุงู„ู†ู…ูˆุฐุฌ ุงู„ูˆุญูŠุฏ ุงู„ู…ุชุงุญ ู‡ูˆ "%1"! - Select a model to add to the blacklist - ุงุฎุชุฑ ู†ู…ูˆุฐุฌู‹ุง ู„ุฅุถุงูุชู‡ ุฅู„ู‰ ุงู„ู‚ุงุฆู…ุฉ ุงู„ุณูˆุฏุงุก + Select a driving model to add to the blacklist + ุงุฎุชุฑ ู†ู…ูˆุฐุฌ ู‚ูŠุงุฏุฉ ู„ุฅุถุงูุชู‡ ุฅู„ู‰ ุงู„ู‚ุงุฆู…ุฉ ุงู„ุณูˆุฏุงุก Are you sure you want to add the "%1" model to the blacklist? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุถุงูุฉ ุงู„ู†ู…ูˆุฐุฌ "%1" ุฅู„ู‰ ุงู„ู‚ุงุฆู…ุฉ ุงู„ุณูˆุฏุงุกุŸ + ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุถุงูุฉ ุงู„ู†ู…ูˆุฐุฌ "%1" ุฅู„ู‰ ุงู„ู‚ุงุฆู…ุฉ ุงู„ุณูˆุฏุงุกุŸ Add - ุฅุถุงูุฉ + ุฅุถุงูุฉ - Select a model to remove from the blacklist - ุญุฏุฏ ู†ู…ูˆุฐุฌู‹ุง ู„ุฅุฒุงู„ุชู‡ ู…ู† ุงู„ู‚ุงุฆู…ุฉ ุงู„ุณูˆุฏุงุก + Select a driving model to remove from the blacklist + ุงุฎุชุฑ ู†ู…ูˆุฐุฌ ู‚ูŠุงุฏุฉ ู„ุฅุฒุงู„ุชู‡ ู…ู† ุงู„ู‚ุงุฆู…ุฉ ุงู„ุณูˆุฏุงุก Are you sure you want to remove the "%1" model from the blacklist? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุฒุงู„ุฉ ุงู„ู†ู…ูˆุฐุฌ "%1" ู…ู† ุงู„ู‚ุงุฆู…ุฉ ุงู„ุณูˆุฏุงุกุŸ + ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุฒุงู„ุฉ "%1" ู…ู† ุงู„ู‚ุงุฆู…ุฉ ุงู„ุณูˆุฏุงุกุŸ Remove - ุฅุฒุงู„ุฉ + ุฅุฒุงู„ุฉ - Are you sure you want to remove all of your blacklisted models? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุฒุงู„ุฉ ุฌู…ูŠุน ุงู„ู†ู…ุงุฐุฌ ุงู„ู…ุฏุฑุฌุฉ ููŠ ุงู„ู‚ุงุฆู…ุฉ ุงู„ุณูˆุฏุงุกุŸ + Are you sure you want to remove all of your blacklisted driving models? + ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุฒุงู„ุฉ ุฌู…ูŠุน ู†ู…ุงุฐุฌ ุงู„ู‚ูŠุงุฏุฉ ุงู„ู…ุฏุฑุฌุฉ ููŠ ุงู„ู‚ุงุฆู…ุฉ ุงู„ุณูˆุฏุงุกุŸ RESET - ุฅุนุงุฏุฉ ุชุนูŠูŠู† + ุฅุนุงุฏุฉ ุชุนูŠูŠู† VIEW - ุนุฑุถ + ุนุฑุถ - Are you sure you want to reset all of your model drives and scores? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฌู…ูŠุน ู…ุญุฑูƒุงุช ุงู„ู†ู…ูˆุฐุฌ ูˆุงู„ุฏุฑุฌุงุชุŸ + Reset all model drives and ratings? This clears your drive history and collected feedback! + ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฌู…ูŠุน ุณุฌู„ุงุช ุงู„ู‚ูŠุงุฏุฉ ูˆุงู„ุชู‚ูŠูŠู…ุงุชุŸ ุณูŠุคุฏูŠ ู‡ุฐุง ุฅู„ู‰ ู…ุณุญ ุณุฌู„ ู‚ูŠุงุฏุชูƒ ูˆุงู„ู…ู„ุงุญุธุงุช ุงู„ู…ุฌู…ุนุฉ! SELECT - SELECT + ุชุญุฏูŠุฏ - Select a model - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC - ุงุฎุชุฑ ู†ู…ูˆุฐุฌู‹ุง - ๐Ÿ—บ๏ธ = ุงู„ู…ู„ุงุญุฉ | ๐Ÿ“ก = ุงู„ุฑุงุฏุงุฑ | ๐Ÿ‘€ = VOACC + UPDATE + ุชุญุฏูŠุซ - The "Model Randomizer" only works with downloaded models. Do you want to download all the driving models? - ูŠุนู…ู„ "Model Randomizer" ูู‚ุท ู…ุน ุงู„ู†ู…ุงุฐุฌ ุงู„ุชูŠ ุชู… ุชู†ุฒูŠู„ู‡ุง. ู‡ู„ ุชุฑูŠุฏ ุชู†ุฒูŠู„ ุฌู…ูŠุน ู†ู…ุงุฐุฌ ุงู„ู‚ูŠุงุฏุฉุŸ + Cancelling... + ุฌุงุฑู ุงู„ุฅู„ุบุงุก... + + + Updating Tinygrad will delete existing Tinygrad-based driving models and need to be re-downloaded. Proceed? + ุณูŠุคุฏูŠ ุชุญุฏูŠุซ Tinygrad ุฅู„ู‰ ุญุฐู ู†ู…ุงุฐุฌ ุงู„ู‚ูŠุงุฏุฉ ุงู„ู…ุนุชู…ุฏุฉ ุนู„ู‰ Tinygrad ุงู„ุญุงู„ูŠุฉ ูˆูŠู„ุฒู… ุฅุนุงุฏุฉ ุชู†ุฒูŠู„ู‡ุง. ุงู„ู…ุชุงุจุนุฉุŸ + + + The "Model Randomizer" works only with downloaded models. Download all models now? + ุชุนู…ู„ "Model Randomizer" ูู‚ุท ู…ุน ุงู„ู†ู…ุงุฐุฌ ุงู„ุชูŠ ุชู… ุชู†ุฒูŠู„ู‡ุง. ู‡ู„ ุชุฑูŠุฏ ุชู†ุฒูŠู„ ุฌู…ูŠุน ุงู„ู†ู…ุงุฐุฌ ุงู„ุขู†ุŸ Offline... - ุบูŠุฑ ู…ุชุตู„... + ุบูŠุฑ ู…ุชุตู„... + + + Update available! + ูŠุชูˆูุฑ ุชุญุฏูŠุซ! + + + Up to date! + ู…ุญุฏู‘ุซ! + + + Select a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + ุงุฎุชุฑ ู†ู…ูˆุฐุฌู‹ุง โ€” ๐Ÿ—บ๏ธ = ุงู„ู…ู„ุงุญุฉ | ๐Ÿ“ก = ุงู„ุฑุงุฏุงุฑ | ๐Ÿ‘€ = VOACC + + + + FrogPilotModelReview + + How would you rate that drive? + ูƒูŠู ุชู‚ูŠู… ุชู„ูƒ ุงู„ู‚ูŠุงุฏุฉุŸ + + + Model successfully blacklisted! + ุชู… ุญุธุฑ ุงู„ุทุฑุงุฒ ุจู†ุฌุงุญ! + + + Drive Rating Selection + ุงุฎุชูŠุงุฑ ุชุตู†ูŠู ุงู„ู‚ูŠุงุฏุฉ + + + Blacklist this model to remove it from rotation + ุฃุฏุฑุฌ ู‡ุฐุง ุงู„ุทุฑุงุฒ ููŠ ุงู„ู‚ุงุฆู…ุฉ ุงู„ุณูˆุฏุงุก ู„ุฅุฒุงู„ุชู‡ ู…ู† ุงู„ุชุฏุงูˆู„ + + + Blacklist Model + ู†ู…ูˆุฐุฌ ุงู„ู‚ุงุฆู…ุฉ ุงู„ุณูˆุฏุงุก + + + Model used during that drive: + ุงู„ุทุฑุงุฒ ุงู„ู…ุณุชุฎุฏู… ุฃุซู†ุงุก ุชู„ูƒ ุงู„ู‚ูŠุงุฏุฉ:" + + + Model Rank + ุชุฑุชูŠุจ ุงู„ู†ู…ูˆุฐุฌ + + + Model Rating + ุชุตู†ูŠู ุงู„ู†ู…ูˆุฐุฌ + + + Model Drives + ุงู„ู‚ูŠุงุฏุฉ ุจูˆุงุณุทุฉ ุงู„ู†ู…ูˆุฐุฌ + + + Total Drives + ุฅุฌู…ุงู„ูŠ ุงู„ุฑุญู„ุงุช + + + #%1 + #%1 + + + %1% + %1% + + + %1 %2 + %1 %2 + + + Drive + ู‚ุฏ ู‚ุฏู…ุงู‹ + + + Drives + ุงู„ุฑุญู„ุงุช + + + %1 Total %2 + %1 ุงู„ู…ุฌู…ูˆุน %2 FrogPilotNavigationPanel - - Manage your %1. - ุฅุฏุงุฑุฉ %1. - - - ADD - ุฅุถุงูุฉ - - - Enter your %1 - ุฃุฏุฎู„ %1 - - - Inputted key is invalid or too short! - ุงู„ู…ูุชุงุญ ุงู„ู…ุฏุฎู„ ุบูŠุฑ ุตุงู„ุญ ุฃูˆ ู‚ุตูŠุฑ ุฌุฏู‹ุง! - - - Are you sure you want to remove your %1? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุฒุงู„ุฉ %1ุŸ - - - REMOVE - ุฅุฒุงู„ุฉ - Manage Your Settings At - ุฅุฏุงุฑุฉ ุฅุนุฏุงุฏุงุชูƒ ููŠ - - - MapBox - MapBox - - - Amap - Amap - - - Google - ุฌูˆุฌู„ - - - Destination Search Provider - ู…ุฒูˆุฏ ุจุญุซ ุงู„ูˆุฌู‡ุฉ - - - The search provider used for destination queries in "Navigate on Openpilot". Options include "MapBox" (recommended), "Amap", and "Google Maps". - ู…ุฒูˆุฏ ุงู„ุจุญุซ ุงู„ู…ุณุชุฎุฏู… ู„ุงุณุชุนู„ุงู…ุงุช ุงู„ูˆุฌู‡ุฉ ููŠ "Navigate on Openpilot". ุชุดู…ู„ ุงู„ุฎูŠุงุฑุงุช "MapBox" (ู…ูˆุตู‰ ุจู‡)ุŒ "Amap"ุŒ ูˆ"Google Maps". - - - Amap Key #1 - Amap Key #1 - - - Manage your Amap key. - ุฅุฏุงุฑุฉ ู…ูุชุงุญ Amap ุงู„ุฎุงุต ุจูƒ. - - - Enter your Amap key - ุฃุฏุฎู„ ู…ูุชุงุญ Amap ุงู„ุฎุงุต ุจูƒ - - - Are you sure you want to remove your Amap key? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุฒุงู„ุฉ ู…ูุชุงุญ Amap ุงู„ุฎุงุต ุจูƒุŸ - - - Amap Key #2 - Amap Key #2 - - - Google Maps Key - ู…ูุชุงุญ ุฎุฑุงุฆุท ุฌูˆุฌู„ - - - Manage your Google Maps key. - ุฅุฏุงุฑุฉ ู…ูุชุงุญ ุฎุฑุงุฆุท Google ุงู„ุฎุงุต ุจูƒ. - - - Enter your Google Maps key - ุฃุฏุฎู„ ู…ูุชุงุญ ุฎุฑุงุฆุท Google ุงู„ุฎุงุต ุจูƒ - - - Are you sure you want to remove your Google Maps key? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุฒุงู„ุฉ ู…ูุชุงุญ ุฎุฑุงุฆุท Google ุงู„ุฎุงุต ุจูƒุŸ - - - Public Mapbox Key - ู…ูุชุงุญ Mapbox ุงู„ุนุงู… - - - Secret Mapbox Key - ู…ูุชุงุญ Mapbox ุงู„ุณุฑูŠ - - - MapBox Setup Instructions - ุชุนู„ูŠู…ุงุช ุฅุนุฏุงุฏ MapBox - - - VIEW - ุนุฑุถ - - - View the instructions to set up "MapBox" for "Primeless Navigation". - ุนุฑุถ ุงู„ุชุนู„ูŠู…ุงุช ู„ุฅุนุฏุงุฏ "MapBox" ู„ู€ "Primeless Navigation". - - - CANCEL - ุฅู„ุบุงุก - - - Speed Limit Filler - ุญุดูˆ ุญุฏ ุงู„ุณุฑุนุฉ - - - Are you sure you want to cancel the speed limit update process? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅู„ุบุงุก ุนู…ู„ูŠุฉ ุชุญุฏูŠุซ ุญุฏ ุงู„ุณุฑุนุฉุŸ - - - You have reached the request limit. - -It will reset in %1 hours and %2 minutes. - ู„ู‚ุฏ ูˆุตู„ุช ุฅู„ู‰ ุญุฏ ุงู„ุทู„ุจ. - -ุณูŠุชู… ุฅุนุงุฏุฉ ุงู„ุชุนูŠูŠู† ููŠ %1 ุณุงุนุงุช ูˆ %2 ุฏู‚ุงุฆู‚. - - - This process will take awhile, so it's advised to start when you're done driving with a stable Wi-Fi connection. Do you wish to proceed? - ุณุชุณุชุบุฑู‚ ู‡ุฐู‡ ุงู„ุนู…ู„ูŠุฉ ุจุนุถ ุงู„ูˆู‚ุชุŒ ู„ุฐุง ูŠูู†ุตุญ ุจุงู„ุจุฏุก ุนู†ุฏู…ุง ุชู†ุชู‡ูŠ ู…ู† ุงู„ู‚ูŠุงุฏุฉ ู…ุน ุงุชุตุงู„ Wi-Fi ู…ุณุชู‚ุฑ. ู‡ู„ ุชุฑุบุจ ููŠ ุงู„ู…ุชุงุจุนุฉุŸ - - - Manually Update Speed Limits - ุชุญุฏูŠุซ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ูŠุฏูˆูŠู‹ุง - - - Automatically collect missing or incorrect speed limits from your dashboard (if supported), <b>Mapbox</b>, and <b>Navigate-on-openpilot</b> while driving.<br><br>When the car is turned off and connected to Wi-Fi, your speed limit data is automatically processed into a compiled file formatted for the tool located at <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>You can grab the processed file from <b>The Pond</b> via the <b>Download Speed Limits</b> menu.<br><br>Want a more thorough walkthrough? Check out the <b>#speed-limit-filler</b> channel in the <b>FrogPilot Discord</b>! - ุฌู…ุน ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุงู„ู…ูู‚ูˆุฏุฉ ุฃูˆ ุบูŠุฑ ุงู„ุตุญูŠุญุฉ ุชู„ู‚ุงุฆูŠู‹ุง ู…ู† ู„ูˆุญุฉ ุงู„ู‚ูŠุงุฏุฉ ุงู„ุฎุงุตุฉ ุจูƒ (ุฅุฐุง ูƒุงู†ุช ู…ุฏุนูˆู…ุฉ)ุŒ <b>Mapbox</b>ุŒ ูˆ<b>Navigate-on-openpilot</b> ุฃุซู†ุงุก ุงู„ู‚ูŠุงุฏุฉ.<br><br>ุนู†ุฏู…ุง ูŠุชู… ุฅุทูุงุก ุงู„ุณูŠุงุฑุฉ ูˆุชูƒูˆู† ู…ุชุตู„ุฉ ุจุดุจูƒุฉ Wi-FiุŒ ุชุชู… ู…ุนุงู„ุฌุฉ ุจูŠุงู†ุงุช ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุงู„ุฎุงุตุฉ ุจูƒ ุชู„ู‚ุงุฆูŠู‹ุง ููŠ ู…ู„ู ู…ุฌู…ุน ู…ู‡ูŠุฃ ู„ู„ุฃุฏุงุฉ ุงู„ู…ูˆุฌูˆุฏุฉ ููŠ <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>ูŠู…ูƒู†ูƒ ุงู„ุญุตูˆู„ ุนู„ู‰ ุงู„ู…ู„ู ุงู„ู…ุนุงู„ุฌ ู…ู† <b>The Pond</b> ุนุจุฑ ู‚ุงุฆู…ุฉ <b>Download Speed Limits</b>.<br><br>ุชุฑูŠุฏ ุดุฑุญู‹ุง ุฃูƒุซุฑ ุชูุตูŠู„ู‹ุงุŸ ุชุญู‚ู‚ ู…ู† ู‚ู†ุงุฉ <b>#speed-limit-filler</b> ููŠ <b>FrogPilot Discord</b>! - - - Cancelled... - ู…ู„ุบู‰... - - - Completed! - ู…ูƒุชู…ู„! + ุฅุฏุงุฑุฉ ุฅุนุฏุงุฏุงุชูƒ ููŠ Offline... - ุบูŠุฑ ู…ุชุตู„... + ุบูŠุฑ ู…ุชุตู„โ€ฆ + + + Mapbox + Mapbox + + + Amap + Amap + + + Destination Search Provider + ู…ูˆูุฑ ุจุญุซ ุงู„ูˆุฌู‡ุฉ + + + <b>The search provider used for destination queries</b> in "Navigate on Openpilot". Options include Mapbox (recommended) and Amap. + <b>ู…ูˆูู‘ุฑ ุงู„ุจุญุซ ุงู„ู…ุณุชุฎุฏู… ู„ุงุณุชุนู„ุงู…ุงุช ุงู„ูˆุฌู‡ุฉ</b> ููŠ "Navigate on Openpilot". ุงู„ุฎูŠุงุฑุงุช ุชุดู…ู„ Mapbox (ู…ูˆุตู‰ ุจู‡) ูˆAmap. + + + Amap Key #1 + ู…ูุชุงุญ Amap #1 + + + Amap Key #2 + ู…ูุชุงุญ Amap #2 + + + Public Mapbox Key + ู…ูุชุงุญ Mapbox ุงู„ุนุงู… + + + Secret Mapbox Key + ู…ูุชุงุญ Mapbox ุงู„ุณุฑูŠ + + + Mapbox Setup Instructions + ุฅุฑุดุงุฏุงุช ุฅุนุฏุงุฏ Mapbox + + + VIEW + ุนุฑุถ + + + <b>Instructions on how to set up Mapbox</b> for "Primeless Navigation". + <b>ุฅุฑุดุงุฏุงุช ุฅุนุฏุงุฏ Mapbox</b> ู„ู€ "Primeless Navigation". + + + CANCEL + ุฅู„ุบุงุก + + + Manually Update Speed Limits + ุชุญุฏูŠุซ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ูŠุฏูˆูŠู‹ุง + + + Speed Limit Filler + ู…ููƒู…ู‘ูู„ ุญุฏู‘ ุงู„ุณุฑุนุฉ + + + <b>Automatically collect missing or incorrect speed limits while you drive</b> using speeds limits sourced from your dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When you're parked and connected to Wi-Fi, FrogPilot will automatically processes this data into a file to be used with the tool located at "SpeedLimitFiller.frogpilot.download".<br><br>You can download this file from "The Pond" in the "Download Speed Limits" menu.<br><br>Need a step-by-step guide? Visit <b>#speed-limit-filler</b> in the FrogPilot Discord! + <b>ุงุฌู…ุน ุชู„ู‚ุงุฆูŠู‹ุง ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุงู„ู…ูู‚ูˆุฏุฉ ุฃูˆ ุบูŠุฑ ุงู„ุตุญูŠุญุฉ ุฃุซู†ุงุก ุงู„ู‚ูŠุงุฏุฉ</b> ุจุงุณุชุฎุฏุงู… ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุงู„ู…ุฃุฎูˆุฐุฉ ู…ู† ู„ูˆุญุฉ ุงู„ุนุฏุงุฏุงุช ู„ุฏูŠูƒ (ุฅุฐุง ูƒุงู†ุช ู…ุฏุนูˆู…ุฉ)ุŒ ูˆMapboxุŒ ูˆ"Navigate on openpilot".<br><br>ุนู†ุฏ ุฅูŠู‚ุงู ุงู„ุณูŠุงุฑุฉ ูˆุงู„ุงุชุตุงู„ ุจุดุจูƒุฉ Wiโ€‘FiุŒ ุณูŠู‚ูˆู… FrogPilot ุชู„ู‚ุงุฆูŠู‹ุง ุจู…ุนุงู„ุฌุฉ ู‡ุฐู‡ ุงู„ุจูŠุงู†ุงุช ููŠ ู…ู„ู ู„ุงุณุชุฎุฏุงู…ู‡ ู…ุน ุงู„ุฃุฏุงุฉ ุงู„ู…ูˆุฌูˆุฏุฉ ููŠ "SpeedLimitFiller.frogpilot.download".<br><br>ูŠู…ูƒู†ูƒ ุชู†ุฒูŠู„ ู‡ุฐุง ุงู„ู…ู„ู ู…ู† "The Pond" ุถู…ู† ู‚ุงุฆู…ุฉ "Download Speed Limits".<br><br>ุชุญุชุงุฌ ุฅู„ู‰ ุฏู„ูŠู„ ุฎุทูˆุฉ ุจุฎุทูˆุฉุŸ ุฒุฑ <b>#speed-limit-filler</b> ููŠ ุฎุงุฏู… FrogPilot ุนู„ู‰ Discord! + + + Cancel the speed-limit update? + ุฅู„ุบุงุก ุชุญุฏูŠุซ ุญุฏ ุงู„ุณุฑุนุฉุŸ + + + Cancelled... + ุฃูู„ุบูŠ... + + + You've hit today's request limit. + +It will reset in %1 hours and %2 minutes. + ู„ู‚ุฏ ูˆุตู„ุช ุฅู„ู‰ ุญุฏ ุงู„ุทู„ุจุงุช ุงู„ูŠูˆู…. + +ุณูŠูุนุงุฏ ุงู„ุชุนูŠูŠู† ุฎู„ุงู„ %1 ุณุงุนุฉ ูˆ%2 ุฏู‚ูŠู‚ุฉ. + + + This process takes a while. It's recommended to start when you're done driving and connected to stable Wi-Fi. Continue? + ู‡ุฐู‡ ุงู„ุนู…ู„ูŠุฉ ุชุณุชุบุฑู‚ ุจุนุถ ุงู„ูˆู‚ุช. ูŠูู†ุตุญ ุจุงู„ุจุฏุก ุนู†ุฏู…ุง ุชู†ุชู‡ูŠ ู…ู† ุงู„ู‚ูŠุงุฏุฉ ูˆุชูƒูˆู† ู…ุชุตู„ุงู‹ ุจุดุจูƒุฉ Wiโ€‘Fi ู…ุณุชู‚ุฑุฉ. ุงู„ู…ุชุงุจุนุฉุŸ + + + <b>Manage your "%1".</b> + <b>ุฅุฏุงุฑุฉ "%1".</b> + + + ADD + ุฅุถุงูุฉ + + + Enter your %1 + ุฃุฏุฎู„ %1 ุงู„ุฎุงุต ุจูƒ + + + Inputted key is invalid or too short! + ุงู„ู…ูุชุงุญ ุงู„ู…ูุฏุฎู„ ุบูŠุฑ ุตุงู„ุญ ุฃูˆ ู‚ุตูŠุฑ ุฌุฏู‹ุง! + + + Remove your %1? + ู‡ู„ ุชุฑูŠุฏ ุฅุฒุงู„ุฉ %1ุŸ + + + REMOVE + ุฅุฒุงู„ุฉ + + + Completed! + ุงูƒุชู…ู„! FrogPilotSettingsWindow MANAGE - ุฅุฏุงุฑุฉ + ุฅุฏุงุฑุฉ DRIVING MODEL - ู†ู…ูˆุฐุฌ ุงู„ู‚ูŠุงุฏุฉ + ู†ู…ูˆุฐุฌ ุงู„ู‚ูŠุงุฏุฉ GAS / BRAKE - ุบุงุฒ / ูุฑุงู…ู„ + ุงู„ุบุงุฒ / ุงู„ูุฑุงู…ู„ STEERING - ุชูˆุฌูŠู‡ + ุงู„ุชูˆุฌูŠู‡ MAP DATA - ุจูŠุงู†ุงุช ุงู„ุฎุฑูŠุทุฉ + ุจูŠุงู†ุงุช ุงู„ุฎุฑูŠุทุฉ NAVIGATION - ุงู„ุชู†ู‚ู„ + ุงู„ู…ู„ุงุญุฉ DATA - ุจูŠุงู†ุงุช + ุงู„ุจูŠุงู†ุงุช DEVICE CONTROLS - ุนู†ุงุตุฑ ุงู„ุชุญูƒู… ููŠ ุงู„ุฌู‡ุงุฒ + ุนู†ุงุตุฑ ุชุญูƒู… ุงู„ุฌู‡ุงุฒ UTILITIES - ุงู„ู…ุฑุงูู‚ + ุฃุฏูˆุงุช APPEARANCE - ุงู„ู…ุธู‡ุฑ + ุงู„ู…ุธู‡ุฑ THEME - ุงู„ู…ูˆุถูˆุน + ุงู„ุณู…ุฉ VEHICLE SETTINGS - ุฅุนุฏุงุฏุงุช ุงู„ู…ุฑูƒุจุฉ + ุฅุนุฏุงุฏุงุช ุงู„ู…ุฑูƒุจุฉ WHEEL CONTROLS - ุนู†ุงุตุฑ ุงู„ุชุญูƒู… ููŠ ุงู„ุนุฌู„ุฉ + ุฃุฏูˆุงุช ุงู„ุชุญูƒู… ููŠ ุงู„ู…ู‚ูˆุฏ Alerts and Sounds - ุงู„ุชู†ุจูŠู‡ุงุช ูˆุงู„ุฃุตูˆุงุช + ุงู„ุชู†ุจูŠู‡ุงุช ูˆุงู„ุฃุตูˆุงุช - FrogPilot settings for alert volumes and custom notifications to stay informed about important driving events. - ุฅุนุฏุงุฏุงุช FrogPilot ู„ุฃุญุฌุงู… ุงู„ุชู†ุจูŠู‡ุงุช ูˆุงู„ุฅุดุนุงุฑุงุช ุงู„ู…ุฎุตุตุฉ ู„ู„ุจู‚ุงุก ุนู„ู‰ ุงุทู„ุงุน ุญูˆู„ ุงู„ุฃุญุฏุงุซ ุงู„ู…ู‡ู…ุฉ ุฃุซู†ุงุก ุงู„ู‚ูŠุงุฏุฉ. + <b>Adjust alert volumes and enable custom notifications.</b> + <b>ุงุถุจุท ู…ุณุชูˆูŠุงุช ุชู†ุจูŠู‡ุงุช ุงู„ุตูˆุช ูˆูุนู‘ู„ ุงู„ุฅุดุนุงุฑุงุช ุงู„ู…ุฎุตุตุฉ.</b> Driving Controls - ุนู†ุงุตุฑ ุงู„ุชุญูƒู… ููŠ ุงู„ู‚ูŠุงุฏุฉ + ุนู†ุงุตุฑ ุงู„ุชุญูƒู… ุจุงู„ู‚ูŠุงุฏุฉ - FrogPilot settings for acceleration, braking, and steering. - ุฅุนุฏุงุฏุงุช FrogPilot ู„ู„ุชุณุงุฑุนุŒ ูˆุงู„ูุฑู…ู„ุฉุŒ ูˆุงู„ุชูˆุฌูŠู‡. + <b>Fine-tune custom FrogPilot acceleration, braking, and steering controls.</b> + <b>ุงุถุจุท ุจุฏู‚ุฉ ุนู†ุงุตุฑ ุชุญูƒู… FrogPilot ุงู„ู…ุฎุตุตุฉ ู„ู„ุชุณุงุฑุน ูˆุงู„ูƒุจุญ ูˆุงู„ุชูˆุฌูŠู‡.</b> Navigation - ุงู„ุชู†ู‚ู„ + ุงู„ู…ู„ุงุญุฉ - Download map data for <b>Curve Speed Control</b>, <b>Speed Limit Controller</b>, and set up <b>Navigate on openpilot (NOO)</b>. - ู‚ู… ุจุชู†ุฒูŠู„ ุจูŠุงู†ุงุช ุงู„ุฎุฑูŠุทุฉ ู„ู€ <b>ุงู„ุชุญูƒู… ููŠ ุณุฑุนุฉ ุงู„ู…ู†ุญู†ู‰</b>ุŒ <b>ู…ุญุฏุฏ ุงู„ุณุฑุนุฉ</b>ุŒ ูˆู‚ู… ุจุฅุนุฏุงุฏ <b>ุงู„ุชู†ู‚ู„ ุนู„ู‰ openpilot (NOO)</b>. + <b>Download map data for the "Speed Limit Controller" and configure "Navigate on openpilot" (NOO).</b> + <b>ู†ุฒู‘ู„ ุจูŠุงู†ุงุช ุงู„ุฎุฑูŠุทุฉ ู„ู…ูŠุฒุฉ "Speed Limit Controller" ูˆุชู‡ูŠุฆุฉ "Navigate on openpilot" (NOO).</b> - System Management - ุฅุฏุงุฑุฉ ุงู„ู†ุธุงู… + System Settings + ุฅุนุฏุงุฏุงุช ุงู„ู†ุธุงู… - Data storage management, debugging tools, device settings, screen behavior settings, system backups, and utilities to maintain, optimize, and troubleshoot FrogPilot. - ุฅุฏุงุฑุฉ ุชุฎุฒูŠู† ุงู„ุจูŠุงู†ุงุชุŒ ุฃุฏูˆุงุช ุชุตุญูŠุญ ุงู„ุฃุฎุทุงุกุŒ ุฅุนุฏุงุฏุงุช ุงู„ุฌู‡ุงุฒุŒ ุฅุนุฏุงุฏุงุช ุณู„ูˆูƒ ุงู„ุดุงุดุฉุŒ ุงู„ู†ุณุฎ ุงู„ุงุญุชูŠุงุทูŠุฉ ู„ู„ู†ุธุงู…ุŒ ูˆุงู„ุฃุฏูˆุงุช ู„ู„ุญูุงุธ ุนู„ู‰ุŒ ุชุญุณูŠู†ุŒ ูˆุงุณุชูƒุดุงู ุฃุฎุทุงุก FrogPilot ูˆุฅุตู„ุงุญู‡ุง. + <b>Manage backups, device settings, screen options, storage, and tools to keep FrogPilot running smoothly.</b> + <b>ุฅุฏุงุฑุฉ ุงู„ู†ุณุฎ ุงู„ุงุญุชูŠุงุทูŠุฉุŒ ุฅุนุฏุงุฏุงุช ุงู„ุฌู‡ุงุฒุŒ ุฎูŠุงุฑุงุช ุงู„ุดุงุดุฉุŒ ุงู„ุชุฎุฒูŠู†ุŒ ูˆุงู„ุฃุฏูˆุงุช ู„ู„ุญูุงุธ ุนู„ู‰ ุชุดุบูŠู„ FrogPilot ุจุณู„ุงุณุฉ.</b> Theme and Appearance - ุงู„ุณู…ุฉ ูˆุงู„ู…ุธู‡ุฑ + ุงู„ุณู…ุฉ ูˆุงู„ู…ุธู‡ุฑ - FrogPilot settings for the current theme, driving-screen, and the overall user interface. - ุฅุนุฏุงุฏุงุช FrogPilot ู„ู„ู…ูˆุถูˆุน ุงู„ุญุงู„ูŠุŒ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉุŒ ูˆูˆุงุฌู‡ุฉ ุงู„ู…ุณุชุฎุฏู… ุงู„ุนุงู…ุฉ. + <b>Customize the look of the driving screen and interface, including themes!</b> + <b>ุฎุตู‘ุต ู…ุธู‡ุฑ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ ูˆุงู„ูˆุงุฌู‡ุฉุŒ ุจู…ุง ููŠ ุฐู„ูƒ ุงู„ุณู…ุงุช!</b> - Vehicle Controls - ุนู†ุงุตุฑ ุงู„ุชุญูƒู… ููŠ ุงู„ู…ุฑูƒุจุฉ + Vehicle Settings + ุฅุนุฏุงุฏุงุช ุงู„ู…ุฑูƒุจุฉ - Options unique to supported manufacturers and vehicle fingerprint management. - ุฎูŠุงุฑุงุช ูุฑูŠุฏุฉ ู„ู…ุตู†ุนูŠ ุงู„ุณูŠุงุฑุงุช ุงู„ู…ุฏุนูˆู…ูŠู† ูˆุฅุฏุงุฑุฉ ุจุตู…ุฉ ุงู„ุณูŠุงุฑุฉ. + <b>Configure car-specific options and steering wheel button mappings.</b> + <b>ู‚ู… ุจุชูƒูˆูŠู† ุฎูŠุงุฑุงุช ุฎุงุตุฉ ุจุงู„ุณูŠุงุฑุฉ ูˆุชุนูŠูŠู†ุงุช ุฃุฒุฑุงุฑ ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ.</b> Minimal - ุงู„ุญุฏ ุงู„ุฃุฏู†ู‰ + ุงู„ุญุฏ ุงู„ุฃุฏู†ู‰ Standard - ู‚ูŠุงุณูŠ + ู‚ูŠุงุณูŠ Advanced - ู…ุชู‚ุฏู… + ู…ุชู‚ุฏู‘ู… Developer - ู…ุทูˆุฑ + ู…ุทูˆู‘ุฑ Tuning Level - ู…ุณุชูˆู‰ ุงู„ุถุจุท + ู…ุณุชูˆู‰ ุงู„ุถุจุท - The visibility and complexity of tuning settings. Lower levels simplify the interface by hiding advanced options, while higher levels unlock detailed customization. + Choose your tuning level. Lower levels keep it simple; higher levels unlock more toggles for finer control. Minimal - Ideal for those who prefer simplicity or ease of use Standard - Recommended for most users for a balanced experience -Advanced - Unlocks fine-tuning controls for more experienced users -Developer - Unlocks highly customizable settings for seasoned enthusiasts - ู…ุฏู‰ ูˆุถูˆุญ ูˆุชุนู‚ูŠุฏ ุฅุนุฏุงุฏุงุช ุงู„ุถุจุท. ุงู„ู…ุณุชูˆูŠุงุช ุงู„ุฃุฏู†ู‰ ุชุจุณุท ุงู„ูˆุงุฌู‡ุฉ ุนู† ุทุฑูŠู‚ ุฅุฎูุงุก ุงู„ุฎูŠุงุฑุงุช ุงู„ู…ุชู‚ุฏู…ุฉุŒ ุจูŠู†ู…ุง ุงู„ู…ุณุชูˆูŠุงุช ุงู„ุฃุนู„ู‰ ุชูุชุญ ุชุฎุตูŠุตู‹ุง ู…ูุตู„ู‹ุง. +Advanced - Fine-tuning for experienced users +Developer - Highly customizable settings for seasoned enthusiasts + ุงุฎุชุฑ ู…ุณุชูˆู‰ ุงู„ุถุจุท ู„ุฏูŠูƒ. ุงู„ู…ุณุชูˆูŠุงุช ุงู„ุฃุฏู†ู‰ ุชุจู‚ูŠู‡ ุจุณูŠุทู‹ุงุ› ุงู„ู…ุณุชูˆูŠุงุช ุงู„ุฃุนู„ู‰ ุชูุชุญ ู…ุฒูŠุฏู‹ุง ู…ู† ุงู„ู…ูุงุชูŠุญ ู„ู…ุฒูŠุฏ ู…ู† ุงู„ุชุญูƒู… ุงู„ุฏู‚ูŠู‚. -ุงู„ุญุฏ ุงู„ุฃุฏู†ู‰ - ู…ุซุงู„ูŠ ู„ุฃูˆู„ุฆูƒ ุงู„ุฐูŠู† ูŠูุถู„ูˆู† ุงู„ุจุณุงุทุฉ ุฃูˆ ุณู‡ูˆู„ุฉ ุงู„ุงุณุชุฎุฏุงู… +ุงู„ุญุฏ ุงู„ุฃุฏู†ู‰ - ู…ุซุงู„ูŠ ู„ู…ู† ูŠูุถู„ูˆู† ุงู„ุจุณุงุทุฉ ุฃูˆ ุณู‡ูˆู„ุฉ ุงู„ุงุณุชุฎุฏุงู… ุงู„ู‚ูŠุงุณูŠ - ู…ูˆุตู‰ ุจู‡ ู„ู…ุนุธู… ุงู„ู…ุณุชุฎุฏู…ูŠู† ู„ุชุฌุฑุจุฉ ู…ุชูˆุงุฒู†ุฉ -ุงู„ู…ุชู‚ุฏู… - ูŠูุชุญ ุนู†ุงุตุฑ ุงู„ุชุญูƒู… ููŠ ุงู„ุถุจุท ุงู„ุฏู‚ูŠู‚ ู„ู„ู…ุณุชุฎุฏู…ูŠู† ุงู„ุฃูƒุซุฑ ุฎุจุฑุฉ -ุงู„ู…ุทูˆุฑ - ูŠูุชุญ ุฅุนุฏุงุฏุงุช ู‚ุงุจู„ุฉ ู„ู„ุชุฎุตูŠุต ุจุดูƒู„ ูƒุจูŠุฑ ู„ู„ู…ุชุญู…ุณูŠู† ุงู„ู…ุฎุถุฑู…ูŠู† +ู…ุชู‚ุฏู… - ุถุจุท ุฏู‚ูŠู‚ ู„ู„ู…ุณุชุฎุฏู…ูŠู† ุฐูˆูŠ ุงู„ุฎุจุฑุฉ +ุงู„ู…ุทูˆู‘ุฑ - ุฅุนุฏุงุฏุงุช ู‚ุงุจู„ุฉ ู„ู„ุชุฎุตูŠุต ุจุฏุฑุฌุฉ ุนุงู„ูŠุฉ ู„ู„ู…ุชู…ุฑุณูŠู† - WARNING: This unlocks some potentially dangerous settings that can DRASTICALLY alter your driving experience! - ุชุญุฐูŠุฑ: ูŠุคุฏูŠ ู‡ุฐุง ุฅู„ู‰ ูุชุญ ุจุนุถ ุงู„ุฅุนุฏุงุฏุงุช ุงู„ุชูŠ ู‚ุฏ ุชูƒูˆู† ุฎุทูŠุฑุฉ ูˆุงู„ุชูŠ ูŠู…ูƒู† ุฃู† ุชุบูŠุฑ ุชุฌุฑุจุชูƒ ููŠ ุงู„ู‚ูŠุงุฏุฉ ุจุดูƒู„ ุฌุฐุฑูŠ! + WARNING: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do! + ุชุญุฐูŠุฑ: ู‡ุฐู‡ ุงู„ุฅุนุฏุงุฏุงุช ู…ุญููˆูุฉ ุจุงู„ู…ุฎุงุทุฑ ูˆูŠู…ูƒู† ุฃู† ุชุบูŠู‘ุฑ ุทุฑูŠู‚ุฉ ู‚ูŠุงุฏุฉ openpilot ุจุดูƒู„ ุฌุฐุฑูŠ. ู„ุง ุชุบูŠู‘ุฑู‡ุง ุฅู„ุง ุฅุฐุง ูƒู†ุช ุชูู‡ู… ุชู…ุงู…ู‹ุง ู…ุง ุชูุนู„ู‡! + + + All toggle descriptions are currently expanded. You can tap a toggle's name to open or close its description at any time! + ุชู… ุชูˆุณูŠุน ุฌู…ูŠุน ุฃูˆุตุงู ุฃุฒุฑุงุฑ ุงู„ุชุจุฏูŠู„ ุญุงู„ูŠู‹ุง. ูŠู…ูƒู†ูƒ ุงู„ู†ู‚ุฑ ุนู„ู‰ ุงุณู… ุฒุฑ ุงู„ุชุจุฏูŠู„ ู„ูุชุญ ุฃูˆ ุฅุบู„ุงู‚ ูˆุตูู‡ ููŠ ุฃูŠ ูˆู‚ุช! FrogPilotSoundsPanel - Alert Volume Control - ุงู„ุชุญูƒู… ููŠ ุญุฌู… ุงู„ุชู†ุจูŠู‡ + Alert Volume Controller + ู…ุชุญูƒู… ู…ุณุชูˆู‰ ุชู†ุจูŠู‡ุงุช - Adjust the volume for each alert in openpilot. - ุถุจุท ู…ุณุชูˆู‰ ุงู„ุตูˆุช ู„ูƒู„ ุชู†ุจูŠู‡ ููŠ openpilot. + <b>Set how loud each type of openpilot alert is</b> to keep routine prompts from becoming distracting. + <b>ุงุถุจุท ู…ุฏู‰ ุงุฑุชูุงุน ุตูˆุช ูƒู„ ู†ูˆุน ู…ู† ุชู†ุจูŠู‡ุงุช openpilot</b> ู„ู…ู†ุน ุงู„ุฅุดุนุงุฑุงุช ุงู„ุฑูˆุชูŠู†ูŠุฉ ู…ู† ุฃู† ุชุตุจุญ ู…ุดุชุชุฉ. Disengage Volume - ูุตู„ ุงู„ุตูˆุช + ู…ุณุชูˆู‰ ุตูˆุช ุงู„ูุตู„ - Adjust the volume for alerts like:<br><br><b>Adaptive Cruise Disabled</b><br><b>Brake Pedal Pressed</b><br><b>Parking Brake Engaged</b><br><b>Speed too Low</b> - ุถุจุท ู…ุณุชูˆู‰ ุงู„ุตูˆุช ู„ู„ุชู†ุจูŠู‡ุงุช ู…ุซู„:<br><br><b>ุชู… ุชุนุทูŠู„ ุงู„ุชุญูƒู… ุงู„ุชูƒูŠููŠ ููŠ ุงู„ุณุฑุนุฉ</b><br><b>ุชู… ุงู„ุถุบุท ุนู„ู‰ ุฏูˆุงุณุฉ ุงู„ูุฑุงู…ู„</b><br><b>ุชู… ุชูุนูŠู„ ูุฑุงู…ู„ ุงู„ุงู†ุชุธุงุฑ</b><br><b>ุงู„ุณุฑุนุฉ ู…ู†ุฎูุถุฉ ุฌุฏู‹ุง</b> + <b>Set the volume for alerts when openpilot disengages.</b><br><br>Examples include: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". + <b>ุงุถุจุท ู…ุณุชูˆู‰ ุงู„ุตูˆุช ู„ู„ุชู†ุจูŠู‡ุงุช ุนู†ุฏ ูุตู„ openpilot.</b><br><br>ุชุดู…ู„ ุงู„ุฃู…ุซู„ุฉ: "ุนุทู„ ู†ุธุงู… ุงู„ู‚ูŠุงุฏุฉ: ุฃุนุฏ ุชุดุบูŠู„ ุงู„ุณูŠุงุฑุฉ"ุŒ "ูุฑุงู…ู„ ุงู„ุงู†ุชุธุงุฑ ู…ูุนู‘ู„ุฉ"ุŒ "ุชู… ุงู„ุถุบุท ุนู„ู‰ ุงู„ุฏูˆุงุณุฉ". Engage Volume - ุชูุนูŠู„ ุงู„ุตูˆุช + ู…ุณุชูˆู‰ ุงู„ุตูˆุช ุนู†ุฏ ุงู„ุชูุนูŠู„ - Adjust the volume for alerts like:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> - ุงุถุจุท ู…ุณุชูˆู‰ ุงู„ุตูˆุช ู„ู„ุชู†ุจูŠู‡ุงุช ู…ุซู„:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> + <b>Set the volume for the chime when openpilot engages</b>, such as after pressing the "RESUME" or "SET" steering wheel buttons. + <b>ุงุถุจุท ู…ุณุชูˆู‰ ุตูˆุช ุงู„ุฌุฑุณ ุนู†ุฏ ุชูุนูŠู„ openpilot</b>ุŒ ู…ุซู„ู‹ุง ุจุนุฏ ุงู„ุถุบุท ุนู„ู‰ ุฒุฑูŠ ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ "RESUME" ุฃูˆ "SET". Prompt Volume - ู…ุณุชูˆู‰ ุงู„ุตูˆุช + ุญุฌู… ุงู„ู…ุทุงู„ุจุฉ - Adjust the volume for alerts like:<br><br><b>Car Detected in Blindspot</b><br><b>Steer Unavailable Below "X"</b><br><b>Speed too Low</b><br><b>Take Control, Turn Exceeds Steering Limit</b> - ุงุถุจุท ู…ุณุชูˆู‰ ุงู„ุตูˆุช ู„ู„ุชู†ุจูŠู‡ุงุช ู…ุซู„:<br><br><b>ุชู… ุงูƒุชุดุงู ุณูŠุงุฑุฉ ููŠ ุงู„ู†ู‚ุทุฉ ุงู„ุนู…ูŠุงุก</b><br><b>ุงู„ุชูˆุฌูŠู‡ ุบูŠุฑ ู…ุชุงุญ ุชุญุช "X"</b><br><b>ุงู„ุณุฑุนุฉ ู…ู†ุฎูุถุฉ ุฌุฏู‹ุง</b><br><b>ุชูˆู„ ุงู„ุณูŠุทุฑุฉุŒ ุงู„ุฏูˆุฑุงู† ูŠุชุฌุงูˆุฒ ุญุฏ ุงู„ุชูˆุฌูŠู‡</b> + <b>Set the volume for prompts that need attention.</b><br><br>Examples include: "Car Detected in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". + <b>ุงุถุจุท ู…ุณุชูˆู‰ ุงู„ุตูˆุช ู„ู„ุชู†ุจูŠู‡ุงุช ุงู„ุชูŠ ุชุชุทู„ุจ ุงู„ุงู†ุชุจุงู‡.</b><br><br>ุชุดู…ู„ ุงู„ุฃู…ุซู„ุฉ: "ุชู… ุงูƒุชุดุงู ุณูŠุงุฑุฉ ููŠ ุงู„ู†ู‚ุทุฉ ุงู„ุนู…ูŠุงุก"ุŒ "ุงู„ุชูˆุฌูŠู‡ ุบูŠุฑ ู…ุชุงุญ ู…ุคู‚ุชู‹ุง"ุŒ "ุงู„ู…ู†ุนุทู ูŠุชุฌุงูˆุฒ ุญุฏ ุงู„ุชูˆุฌูŠู‡". Prompt Distracted Volume - ู…ูˆุฌู‡ ุญุฌู… ู…ุดุชุช + ุญุฌู… ุชู†ุจูŠู‡ ุงู„ุชุดุชุช - Adjust the volume for alerts like:<br><br><b>Pay Attention, Driver Distracted</b><br><b>Touch Steering Wheel, Driver Unresponsive</b> - ุงุถุจุท ู…ุณุชูˆู‰ ุงู„ุตูˆุช ู„ู„ุชู†ุจูŠู‡ุงุช ู…ุซู„:<br><br><b>ุงู†ุชุจู‡ุŒ ุงู„ุณุงุฆู‚ ู…ุดุชุช</b><br><b>ุงู„ู…ุณ ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉุŒ ุงู„ุณุงุฆู‚ ุบูŠุฑ ู…ุณุชุฌูŠุจ</b> + <b>Set the volume for prompts when openpilot detects driver distraction or unresponsiveness.</b><br><br>Examples include: "Pay Attention", "Touch Steering Wheel". + <b>ุงุถุจุท ู…ุณุชูˆู‰ ุงู„ุตูˆุช ู„ู„ุชู†ุจูŠู‡ุงุช ุนู†ุฏ ุงูƒุชุดุงู openpilot ู„ุชุดุชุช ุงู„ุณุงุฆู‚ ุฃูˆ ุนุฏู… ุงุณุชุฌุงุจุชู‡.</b><br><br>ุชุดู…ู„ ุงู„ุฃู…ุซู„ุฉ: "ุงู†ุชุจู‡" ูˆ"ุงู„ู…ุณ ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ". Refuse Volume - ุญุฌู… ุงู„ู†ูุงูŠุงุช + ุฑูุถ ุงู„ุตูˆุช - Adjust the volume for alerts like:<br><br><b>openpilot Unavailable</b> - ุงุถุจุท ู…ุณุชูˆู‰ ุงู„ุตูˆุช ู„ู„ุชู†ุจูŠู‡ุงุช ู…ุซู„:<br><br><b>openpilot ุบูŠุฑ ู…ุชุงุญ</b> + <b>Set the volume for alerts when openpilot refuses to engage.</b><br><br>Examples include: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". + <b>ุงุถุจุท ู…ุณุชูˆู‰ ุตูˆุช ุงู„ุชู†ุจูŠู‡ุงุช ุนู†ุฏู…ุง ูŠุฑูุถ openpilot ุงู„ุชูุนูŠู„.</b><br><br>ุชุดู…ู„ ุงู„ุฃู…ุซู„ุฉ: "ุชูุนูŠู„ ุชุซุจูŠุช ุงู„ูุฑุงู…ู„"ุŒ "ุงู„ุจุงุจ ู…ูุชูˆุญ"ุŒ "ููƒ ุญุฒุงู… ุงู„ุฃู…ุงู†". Warning Soft Volume - ุชุญุฐูŠุฑ ู…ุณุชูˆู‰ ุงู„ุตูˆุช ุงู„ู…ู†ุฎูุถ + ุชุญุฐูŠุฑ: ู…ุณุชูˆู‰ ุงู„ุตูˆุช ู…ู†ุฎูุถ - Adjust the volume for alerts like:<br><br><b>BRAKE!, Risk of Collision</b><br><b>TAKE CONTROL IMMEDIATELY</b> - ุงุถุจุท ู…ุณุชูˆู‰ ุงู„ุตูˆุช ู„ู„ุชู†ุจูŠู‡ุงุช ู…ุซู„:<br><br><b>ูุฑุงู…ู„! ุฎุทุฑ ุงู„ุงุตุทุฏุงู…</b><br><b>ุชูˆู„ ุงู„ุณูŠุทุฑุฉ ููˆุฑุงู‹</b> + <b>Set the volume for softer warnings about potential risks.</b><br><br>Examples include: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". + <b>ุงุถุจุท ู…ุณุชูˆู‰ ุงู„ุตูˆุช ู„ู„ุชุญุฐูŠุฑุงุช ุงู„ุฃุฎู ุจุดุฃู† ุงู„ู…ุฎุงุทุฑ ุงู„ู…ุญุชู…ู„ุฉ.</b><br><br>ุชุดู…ู„ ุฃู…ุซู„ุฉ: "ูุฑุงู…ู„! ุฎุทุฑ ุงุตุทุฏุงู…"ุŒ "ุงู„ุชูˆุฌูŠู‡ ุบูŠุฑ ู…ุชุงุญ ู…ุคู‚ุชู‹ุง". Warning Immediate Volume - ุชุญุฐูŠุฑ ุญุฌู… ููˆุฑูŠ + ุชุญุฐูŠุฑ ููˆุฑูŠ ู„ู„ุตูˆุช - Adjust the volume for alerts like:<br><br><b>DISENGAGE IMMEDIATELY, Driver Distracted</b><br><b>DISENGAGE IMMEDIATELY, Driver Unresponsive</b> - ุงุถุจุท ู…ุณุชูˆู‰ ุงู„ุตูˆุช ู„ู„ุชู†ุจูŠู‡ุงุช ู…ุซู„:<br><br><b>ุงูุตู„ ููˆุฑู‹ุงุŒ ุงู„ุณุงุฆู‚ ู…ุดุชุช</b><br><b>ุงูุตู„ ููˆุฑู‹ุงุŒ ุงู„ุณุงุฆู‚ ุบูŠุฑ ู…ุณุชุฌูŠุจ</b> + <b>Set the volume for the loudest warnings that require urgent attention.</b><br><br>Examples include: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". + <b>ุงุถุจุท ู…ุณุชูˆู‰ ุงู„ุตูˆุช ู„ุฃุนู„ู‰ ุงู„ุชุญุฐูŠุฑุงุช ุงู„ุชูŠ ุชุชุทู„ุจ ุงู†ุชุจุงู‡ู‹ุง ุนุงุฌู„ู‹ุง.</b><br><br>ุชุดู…ู„ ุฃู…ุซู„ุฉ: "ุงูุตู„ ููˆุฑู‹ุง โ€” ุงู„ุณุงุฆู‚ ู…ุดุชุช"ุŒ "ุงูุตู„ ููˆุฑู‹ุง โ€” ุงู„ุณุงุฆู‚ ู„ุง ูŠุณุชุฌูŠุจ". FrogPilot Alerts - ุชู†ุจูŠู‡ุงุช FrogPilot + ุชู†ุจูŠู‡ุงุช FrogPilot - FrogPilot alerts for various events in openpilot. - ุชู†ุจูŠู‡ุงุช FrogPilot ู„ู…ุฎุชู„ู ุงู„ุฃุญุฏุงุซ ููŠ openpilot. + <b>Optional FrogPilot alerts</b> that highlight driving events in a more noticeable way. + <b>ุชู†ุจูŠู‡ุงุช FrogPilot ุงุฎุชูŠุงุฑูŠุฉ</b> ุชูุจุฑุฒ ุฃุญุฏุงุซ ุงู„ู‚ูŠุงุฏุฉ ุจุทุฑูŠู‚ุฉ ุฃูƒุซุฑ ู„ูุชู‹ุง ู„ู„ุงู†ุชุจุงู‡. - Goat Scream Steering Saturated Alert - ุชู†ุจูŠู‡ ุชุดุจุน ุชูˆุฌูŠู‡ ุตุฑุงุฎ ุงู„ู…ุงุนุฒ + Goat Scream + ุตุฑุฎุฉ ุงู„ู…ุงุนุฒ - The infamous "Goat Scream" that has brought both joy and anger to FrogPilot users all around the world! - ุตุฑุฎุฉ "ุงู„ู…ุงุนุฒ" ุงู„ุดู‡ูŠุฑุฉ ุงู„ุชูŠ ุฌู„ุจุช ุงู„ูุฑุญ ูˆุงู„ุบุถุจ ู„ู…ุณุชุฎุฏู…ูŠ FrogPilot ููŠ ุฌู…ูŠุน ุฃู†ุญุงุก ุงู„ุนุงู„ู…! + <b>Play the infamous "Goat Scream" when the steering controller reaches its limit.</b> Based on the "Turn Exceeds Steering Limit" event. + <b>ุชุดุบูŠู„ ุตุฑุฎุฉ ุงู„ู…ุงุนุฒ ุงู„ุดู‡ูŠุฑุฉ ุนู†ุฏ ูˆุตูˆู„ ู…ุชุญูƒู… ุงู„ุชูˆุฌูŠู‡ ุฅู„ู‰ ุญุฏู‘ู‡.</b> ูŠุนุชู…ุฏ ุนู„ู‰ ุญุฏุซ "ุชุฌุงูˆุฒ ุงู„ู…ู†ุนุทู ุญุฏ ุงู„ุชูˆุฌูŠู‡". Green Light Alert - ุชู†ุจูŠู‡ ุงู„ุถูˆุก ุงู„ุฃุฎุถุฑ + ุชู†ุจูŠู‡ ุงู„ุถูˆุก ุงู„ุฃุฎุถุฑ - Get an alert when the traffic light changes from red to green. - ุงุญุตู„ ุนู„ู‰ ุชู†ุจูŠู‡ ุนู†ุฏู…ุง ูŠุชุบูŠุฑ ู„ูˆู† ุฅุดุงุฑุฉ ุงู„ู…ุฑูˆุฑ ู…ู† ุงู„ุฃุญู…ุฑ ุฅู„ู‰ ุงู„ุฃุฎุถุฑ. + <b>Play an alert when the model predicts a red light has turned green.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights. This alert is based on end-to-end model predictions from camera input and may trigger even when the light has not changed.</i> + <b>ุชุดุบูŠู„ ุชู†ุจูŠู‡ ุนู†ุฏู…ุง ูŠุชู†ุจุฃ ุงู„ู†ู…ูˆุฐุฌ ุจุฃู† ุงู„ุฅุดุงุฑุฉ ุงู„ุญู…ุฑุงุก ู‚ุฏ ุชุญูˆู„ุช ุฅู„ู‰ ุฎุถุฑุงุก.</b><br><br><i><b>ุฅุฎู„ุงุก ุงู„ู…ุณุคูˆู„ูŠุฉ</b>: ู„ุง ูŠูƒุชุดู openpilot ุฅุดุงุฑุงุช ุงู„ู…ุฑูˆุฑ ุจุดูƒู„ู ุตุฑูŠุญ. ูŠุนุชู…ุฏ ู‡ุฐุง ุงู„ุชู†ุจูŠู‡ ุนู„ู‰ ุชู†ุจุคุงุช ู†ู…ูˆุฐุฌ ุทุฑู-ุฅู„ู‰-ุทุฑู ู…ู† ู…ุฏุฎู„ุงุช ุงู„ูƒุงู…ูŠุฑุง ูˆู‚ุฏ ูŠุชู… ุชุดุบูŠู„ู‡ ุญุชู‰ ุนู†ุฏู…ุง ู„ุง ุชูƒูˆู† ุงู„ุฅุดุงุฑุฉ ู‚ุฏ ุชุบูŠู‘ุฑุช.</i> Lead Departing Alert - ุชู†ุจูŠู‡ ู…ุบุงุฏุฑุฉ ุงู„ู‚ุงุฆุฏ + ุชู†ุจูŠู‡ ู…ุบุงุฏุฑุฉ ุงู„ู…ุฑูƒุจุฉ ุงู„ุฃู…ุงู…ูŠุฉ - Get an alert when the lead vehicle begins to depart from a standstill. - ุงุญุตู„ ุนู„ู‰ ุชู†ุจูŠู‡ ุนู†ุฏู…ุง ุชุจุฏุฃ ุงู„ุณูŠุงุฑุฉ ุงู„ุฃู…ุงู…ูŠุฉ ููŠ ุงู„ุชุญุฑูƒ ู…ู† ุญุงู„ุฉ ุงู„ุชูˆู‚ู. + <b>Play an alert when the lead vehicle departs from a stop.</b> + <b>ุชุดุบูŠู„ ุชู†ุจูŠู‡ ุนู†ุฏ ุชุญุฑูƒ ุงู„ู…ุฑูƒุจุฉ ุงู„ู…ุชู‚ุฏู…ุฉ ู…ู† ุงู„ุชูˆู‚ู.</b> Loud "Car Detected in Blindspot" Alert - ุชู†ุจูŠู‡ "ุชู… ุงูƒุชุดุงู ุณูŠุงุฑุฉ ููŠ ุงู„ู†ู‚ุทุฉ ุงู„ุนู…ูŠุงุก" ุจุตูˆุช ุนุงู„ู + ุชู†ุจูŠู‡ ู…ุฑุชูุน "ุชู… ุงูƒุชุดุงู ุณูŠุงุฑุฉ ููŠ ุงู„ู†ู‚ุทุฉ ุงู„ุนู…ูŠุงุก" - A louder alert for when a vehicle is detected in the blindspot when attempting to change lanes. - ุชู†ุจูŠู‡ ุฃุนู„ู‰ ุตูˆุชู‹ุง ุนู†ุฏ ุงูƒุชุดุงู ู…ุฑูƒุจุฉ ููŠ ุงู„ู†ู‚ุทุฉ ุงู„ุนู…ูŠุงุก ุนู†ุฏ ู…ุญุงูˆู„ุฉ ุชุบูŠูŠุฑ ุงู„ู…ุณุงุฑุงุช. + <b>Play a louder alert if a vehicle is in the blind spot when attempting to change lanes.</b> Based on the "Car Detected in Blindspot" event. + <b>ุชุดุบูŠู„ ุชู†ุจูŠู‡ ุฃุนู„ู‰ ุตูˆุชู‹ุง ุฅุฐุง ูƒุงู†ุช ู‡ู†ุงูƒ ู…ุฑูƒุจุฉ ููŠ ุงู„ู…ู†ุทู‚ุฉ ุงู„ุนู…ูŠุงุก ุนู†ุฏ ู…ุญุงูˆู„ุฉ ุชุบูŠูŠุฑ ุงู„ู…ุณุงุฑ.</b> ูŠุนุชู…ุฏ ุนู„ู‰ ุญุฏุซ "Car Detected in Blindspot". Speed Limit Changed Alert - ุชู†ุจูŠู‡ ุชุบูŠูŠุฑ ุญุฏ ุงู„ุณุฑุนุฉ + ุชู†ุจูŠู‡ ุชุบูŠูŠุฑ ุญุฏ ุงู„ุณุฑุนุฉ - Get an alert when the speed limit changes. - ุงุญุตู„ ุนู„ู‰ ุชู†ุจูŠู‡ ุนู†ุฏ ุชุบูŠูŠุฑ ุญุฏ ุงู„ุณุฑุนุฉ. + <b>Play an alert when the posted speed limit changes.</b> + <b>ุชุดุบูŠู„ ุชู†ุจูŠู‡ ุนู†ุฏ ุชุบูŠู‘ุฑ ุญุฏ ุงู„ุณุฑุนุฉ ุงู„ู…ุนู„ู†.</b> Muted - ู…ูƒุชูˆู… + ูƒุชู… ุงู„ุตูˆุช Auto - ุชู„ู‚ุงุฆูŠ + ุชู„ู‚ุงุฆูŠ Test - ุงุฎุชุจุงุฑ + ุงุฎุชุจุงุฑ FrogPilotThemesPanel - Custom Theme - ุณู…ุฉ ู…ุฎุตุตุฉ + Custom Themes + ุงู„ุณู…ุงุช ุงู„ู…ุฎุตุตุฉ - The overall appearance of openpilot. - ุงู„ู…ุธู‡ุฑ ุงู„ุนุงู… ู„ู€ openpilot. + <b>The overall look and feel of openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>ุงู„ู…ุธู‡ุฑ ูˆุงู„ุฅุญุณุงุณ ุงู„ุนุงู… ู„ู€ openpilot.</b> ุงุณุชุฎุฏู… "ู…ู†ุดุฆ ุงู„ุณู…ุงุช" ููŠ "The Pond" ู„ุฅู†ุดุงุก ุณู…ุงุชูƒ ุงู„ุฎุงุตุฉ ูˆู…ุดุงุฑูƒุชู‡ุง! Color Scheme - ู†ุธุงู… ุงู„ุฃู„ูˆุงู† + ู…ุฎุทุท ุงู„ุฃู„ูˆุงู† - openpilot's color scheme. - -Want to submit your own color scheme? Share it in the "custom-themes" channel on the FrogPilot Discord! - ู†ุธุงู… ุงู„ุฃู„ูˆุงู† ุงู„ุฎุงุต ุจู€ openpilot. - -ู‡ู„ ุชุฑูŠุฏ ุชู‚ุฏูŠู… ู†ุธุงู… ุงู„ุฃู„ูˆุงู† ุงู„ุฎุงุต ุจูƒุŸ ุดุงุฑูƒู‡ ููŠ ู‚ู†ุงุฉ "custom-themes" ุนู„ู‰ FrogPilot Discord! + <b>The color scheme used throughout openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>ู…ุฎุทุท ุงู„ุฃู„ูˆุงู† ุงู„ู…ุณุชุฎุฏู… ููŠ ูƒุงู…ู„ openpilot.</b> ุงุณุชุฎุฏู… "ู…ู†ุดุฆ ุงู„ุณูู…ุฉ" ููŠ "The Pond" ู„ุฅู†ุดุงุก ุณู…ุงุชูƒ ุงู„ุฎุงุตุฉ ูˆู…ุดุงุฑูƒุชู‡ุง! + + + Distance Button + ุฒุฑ ุงู„ู…ุณุงูุฉ + + + <b>The distance button icons shown on the driving screen.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>ุฃูŠู‚ูˆู†ุงุช ุฒุฑ ุงู„ู…ุณุงูุฉ ุงู„ู…ุนุฑูˆุถุฉ ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ.</b> ุงุณุชุฎุฏู… "Theme Maker" ููŠ "The Pond" ู„ุฅู†ุดุงุก ุณู…ุงุชูƒ ุงู„ุฎุงุตุฉ ูˆู…ุดุงุฑูƒุชู‡ุง! Icon Pack - ุญุฒู…ุฉ ุงู„ุฃูŠู‚ูˆู†ุงุช + ุญุฒู…ุฉ ุงู„ุฃูŠู‚ูˆู†ุงุช - openpilot's icon pack. - -Want to submit your own icons? Share them in the "custom-themes" channel on the FrogPilot Discord! - ุญุฒู…ุฉ ุฃูŠู‚ูˆู†ุงุช openpilot. - -ู‡ู„ ุชุฑูŠุฏ ุชู‚ุฏูŠู… ุฃูŠู‚ูˆู†ุงุชูƒ ุงู„ุฎุงุตุฉุŸ ุดุงุฑูƒู‡ุง ููŠ ู‚ู†ุงุฉ "custom-themes" ุนู„ู‰ Discord FrogPilot! + <b>The icon style used across openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>ุฃุณู„ูˆุจ ุงู„ุฃูŠู‚ูˆู†ุงุช ุงู„ู…ุณุชุฎุฏู… ุนุจุฑ openpilot.</b> ุงุณุชุฎุฏู… "Theme Maker" ููŠ "The Pond" ู„ุฅู†ุดุงุก ุณู…ุงุชูƒ ุงู„ุฎุงุตุฉ ูˆู…ุดุงุฑูƒุชู‡ุง! Sound Pack - ุญุฒู…ุฉ ุงู„ุตูˆุช + ุญุฒู…ุฉ ุงู„ุตูˆุช - openpilot's sound effects. - -Want to submit your own sounds? Share them in the "custom-themes" channel on the FrogPilot Discord! - ุงู„ู…ุคุซุฑุงุช ุงู„ุตูˆุชูŠุฉ ู„ู€ openpilot. - -ู‡ู„ ุชุฑูŠุฏ ุชู‚ุฏูŠู… ุฃุตูˆุงุชูƒ ุงู„ุฎุงุตุฉุŸ ุดุงุฑูƒู‡ุง ููŠ ู‚ู†ุงุฉ "custom-themes" ุนู„ู‰ Discord ุงู„ุฎุงุต ุจู€ FrogPilot! + <b>The sound pack used by openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>ุญุฒู…ุฉ ุงู„ุฃุตูˆุงุช ุงู„ุชูŠ ูŠุณุชุฎุฏู…ู‡ุง openpilot.</b> ุงุณุชุฎุฏู… "Theme Maker" ููŠ "The Pond" ู„ุฅู†ุดุงุก ูˆู…ุดุงุฑูƒุฉ ุณู…ุงุชูƒ ุงู„ุฎุงุตุฉ!</b> Steering Wheel - ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ + ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ - The steering wheel icon in the top right of the driving screen. - ุฑู…ุฒ ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ ููŠ ุงู„ุฒุงูˆูŠุฉ ุงู„ุนู„ูˆูŠุฉ ุงู„ูŠู…ู†ู‰ ู…ู† ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. - - - Themed turn signal animations. - -Want to submit your own animations? Share them in the "custom-themes" channel on the FrogPilot Discord! - ุฑุณูˆู… ู…ุชุญุฑูƒุฉ ู„ุฅุดุงุฑุงุช ุงู„ุงู†ุนุทุงู ุฐุงุช ุทุงุจุน ุฎุงุต. - -ู‡ู„ ุชุฑูŠุฏ ุชู‚ุฏูŠู… ุงู„ุฑุณูˆู… ุงู„ู…ุชุญุฑูƒุฉ ุงู„ุฎุงุตุฉ ุจูƒุŸ ุดุงุฑูƒู‡ุง ููŠ ู‚ู†ุงุฉ "custom-themes" ุนู„ู‰ FrogPilot Discord! - - - Download Status - ุญุงู„ุฉ ุงู„ุชู†ุฒูŠู„ - - - Holiday Themes - ู…ูˆุงุถูŠุน ุงู„ุนุทู„ุงุช - - - Holiday-based visual themes for openpilot. Minor holidays last one day; major holidays (Christmas, Easter, Halloween, etc.) continue all week. - ู…ูˆุถูˆุนุงุช ู…ุฑุฆูŠุฉ ู…ุณุชู†ุฏุฉ ุฅู„ู‰ ุงู„ุนุทู„ุงุช ู„ู€ openpilot. ุชุณุชู…ุฑ ุงู„ุนุทู„ุงุช ุงู„ุตุบูŠุฑุฉ ู„ูŠูˆู… ูˆุงุญุฏุ› ุจูŠู†ู…ุง ุชุณุชู…ุฑ ุงู„ุนุทู„ุงุช ุงู„ูƒุจุฑู‰ (ุนูŠุฏ ุงู„ู…ูŠู„ุงุฏุŒ ุนูŠุฏ ุงู„ูุตุญุŒ ุงู„ู‡ุงู„ูˆูŠู†ุŒ ุฅู„ุฎ) ุทูˆุงู„ ุงู„ุฃุณุจูˆุน. - - - Rainbow Path - ู…ุณุงุฑ ู‚ูˆุณ ู‚ุฒุญ - - - The path on the driving screen turns into a Mario Kart inspired "Rainbow Path". - ูŠุชุญูˆู„ ุงู„ู…ุณุงุฑ ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ ุฅู„ู‰ "ู…ุณุงุฑ ู‚ูˆุณ ู‚ุฒุญ" ู…ุณุชูˆุญู‰ ู…ู† ู„ุนุจุฉ ู…ุงุฑูŠูˆ ูƒุงุฑุช. - - - Random Events - ุฃุญุฏุงุซ ุนุดูˆุงุฆูŠุฉ - - - Random cosmetic events that trigger after certain driving conditions. These events are purely for fun and don't affect driving controls! - ุฃุญุฏุงุซ ุชุฌู…ูŠู„ูŠุฉ ุนุดูˆุงุฆูŠุฉ ุชุชูุงุนู„ ุจุนุฏ ุธุฑูˆู ู‚ูŠุงุฏุฉ ู…ุนูŠู†ุฉ. ู‡ุฐู‡ ุงู„ุฃุญุฏุงุซ ู„ู„ู…ุชุนุฉ ูู‚ุท ูˆู„ุง ุชุคุซุฑ ุนู„ู‰ ุฃุฏูˆุงุช ุงู„ุชุญูƒู… ููŠ ุงู„ู‚ูŠุงุฏุฉ! - - - Random Themes - ู…ูˆุงุถูŠุน ุนุดูˆุงุฆูŠุฉ - - - Cycles through your downloaded themes randomly on each boot, giving every theme in your collection a chance to shine! - ูŠุชู†ู‚ู„ ุจูŠู† ุงู„ุณู…ุงุช ุงู„ุชูŠ ู‚ู…ุช ุจุชู†ุฒูŠู„ู‡ุง ุจุดูƒู„ ุนุดูˆุงุฆูŠ ุนู†ุฏ ูƒู„ ุชุดุบูŠู„ุŒ ู…ู…ุง ูŠู…ู†ุญ ูƒู„ ุณู…ุฉ ููŠ ู…ุฌู…ูˆุนุชูƒ ูุฑุตุฉ ู„ู„ุชุฃู„ู‚! - - - Startup Alert - ุชู†ุจูŠู‡ ุจุฏุก ุงู„ุชุดุบูŠู„ - - - The text of the "Startup Alert" message that appears at the beginning of a drive. - ู†ุต ุฑุณุงู„ุฉ "ุชู†ุจูŠู‡ ุจุฏุก ุงู„ุชุดุบูŠู„" ุงู„ุชูŠ ุชุธู‡ุฑ ููŠ ุจุฏุงูŠุฉ ุงู„ู‚ูŠุงุฏุฉ. - - - DELETE - ุญุฐู - - - DOWNLOAD - ุชู†ุฒูŠู„ - - - SELECT - SELECT - - - Select a color scheme to delete - ุงุฎุชุฑ ู†ุธุงู… ุงู„ุฃู„ูˆุงู† ู„ุญุฐูู‡ - - - Are you sure you want to delete the "%1" color scheme? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุญุฐู ู†ุธุงู… ุงู„ุฃู„ูˆุงู† "%1"ุŸ - - - Delete - ุญุฐู - - - Select a color scheme to download - ุงุฎุชุฑ ู†ุธุงู… ุฃู„ูˆุงู† ู„ู„ุชู†ุฒูŠู„ - - - Select a color scheme - ุงุฎุชุฑ ู†ุธุงู… ุฃู„ูˆุงู† - - - Select a distance icon pack to delete - ุงุฎุชุฑ ุญุฒู…ุฉ ุฃูŠู‚ูˆู†ุงุช ุงู„ู…ุณุงูุฉ ู„ุญุฐูู‡ุง - - - Are you sure you want to delete the "%1" distance icon pack? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุญุฐู ุญุฒู…ุฉ ุฃูŠู‚ูˆู†ุงุช ุงู„ู…ุณุงูุฉ "%1"ุŸ - - - Select a distance icon pack to download - ุงุฎุชุฑ ุญุฒู…ุฉ ุฃูŠู‚ูˆู†ุงุช ุงู„ู…ุณุงูุฉ ู„ู„ุชู†ุฒูŠู„ - - - Select a distance icon pack - ุงุฎุชุฑ ุญุฒู…ุฉ ุฃูŠู‚ูˆู†ุงุช ุงู„ู…ุณุงูุฉ - - - Select an icon pack to delete - ุงุฎุชุฑ ุญุฒู…ุฉ ุฃูŠู‚ูˆู†ุงุช ู„ุญุฐูู‡ุง - - - Are you sure you want to delete the "%1" icon pack? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุญุฐู ุญุฒู…ุฉ ุงู„ุฃูŠู‚ูˆู†ุงุช "%1"ุŸ - - - Select an icon pack to download - ุงุฎุชุฑ ุญุฒู…ุฉ ุฃูŠู‚ูˆู†ุงุช ู„ู„ุชู†ุฒูŠู„ - - - Select an icon pack - ุงุฎุชุฑ ุญุฒู…ุฉ ุงู„ุฃูŠู‚ูˆู†ุงุช - - - Select a signal animation to delete - ุงุฎุชุฑ ุญุฑูƒุฉ ุฅุดุงุฑุฉ ู„ุญุฐูู‡ุง - - - Are you sure you want to delete the "%1" signal animation? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุญุฐู ุงู„ุฑุณูˆู… ุงู„ู…ุชุญุฑูƒุฉ ู„ู„ุฅุดุงุฑุฉ "%1"ุŸ - - - Select a signal animation to download - ุงุฎุชุฑ ุฑุณู…ู‹ุง ู…ุชุญุฑูƒู‹ุง ู„ู„ุฅุดุงุฑุฉ ู„ุชู†ุฒูŠู„ู‡ - - - Select a signal animation - ุงุฎุชุฑ ุฅุดุงุฑุฉ ุงู„ุฑุณูˆู… ุงู„ู…ุชุญุฑูƒุฉ - - - Select a sound pack to delete - ุงุฎุชุฑ ุญุฒู…ุฉ ุตูˆุชูŠุฉ ู„ุญุฐูู‡ุง - - - Are you sure you want to delete the "%1" sound pack? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุญุฐู ุญุฒู…ุฉ ุงู„ุตูˆุช "%1"ุŸ - - - Select a sound pack to download - ุงุฎุชุฑ ุญุฒู…ุฉ ุตูˆุชูŠุฉ ู„ู„ุชู†ุฒูŠู„ - - - Select a sound pack - ุงุฎุชุฑ ุญุฒู…ุฉ ุตูˆุชูŠุฉ - - - Select a steering wheel to delete - ุงุฎุชุฑ ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ ู„ุญุฐูู‡ุง - - - Are you sure you want to delete the "%1" steering wheel? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุญุฐู ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ "%1"ุŸ - - - Select a steering wheel to download - ุงุฎุชุฑ ุนุฌู„ุฉ ู‚ูŠุงุฏุฉ ู„ู„ุชู†ุฒูŠู„ - - - Select a steering wheel - ุงุฎุชุฑ ุนุฌู„ุฉ ู‚ูŠุงุฏุฉ - - - STOCK - ู…ุฎุฒูˆู† - - - FROGPILOT - FROGPILOT - - - CUSTOM - ู…ุฎุตุต - - - CLEAR - ูˆุงุถุญ - - - Enter the text for the top half - ุฃุฏุฎู„ ุงู„ู†ุต ู„ู„ู†ุตู ุงู„ุนู„ูˆูŠ - - - Characters: 0/%1 - ุงู„ุฃุญุฑู: 0/%1 - - - Enter the text for the bottom half - ุฃุฏุฎู„ ุงู„ู†ุต ู„ู„ู†ุตู ุงู„ุณูู„ูŠ - - - "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! - "ุงู„ู…ูˆุงุถูŠุน ุงู„ุนุดูˆุงุฆูŠุฉ" ุชุนู…ู„ ูู‚ุท ู…ุน ุงู„ู…ูˆุงุถูŠุน ุงู„ู…ุญู…ู„ุฉุŒ ู„ุฐุง ุชุฃูƒุฏ ู…ู† ุชุญู…ูŠู„ ุงู„ู…ูˆุงุถูŠุน ุงู„ุชูŠ ุชุฑูŠุฏ ุงุณุชุฎุฏุงู…ู‡ุง! - - - CANCEL - ุฅู„ุบุงุก - - - Are you sure you want to completely reset your startup message? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฑุณุงู„ุฉ ุจุฏุก ุงู„ุชุดุบูŠู„ ุจุงู„ูƒุงู…ู„ุŸ + <b>The steering-wheel icon</b> shown at the top-right of the driving screen. Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>ุฃูŠู‚ูˆู†ุฉ ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ</b> ุงู„ู…ุนุฑูˆุถุฉ ููŠ ุฃุนู„ู‰ ูŠู…ูŠู† ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. ุงุณุชุฎุฏู… "Theme Maker" ููŠ "The Pond" ู„ุฅู†ุดุงุก ูˆู…ุดุงุฑูƒุฉ ุณู…ุงุชูƒ ุงู„ุฎุงุตุฉ! Turn Signal - ุฅุดุงุฑุฉ ุงู„ุงู†ุนุทุงู + ุฅุดุงุฑุฉ ุงู„ุงู†ุนุทุงู + + + <b>Themed turn-signal animations.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>ุญุฑูƒุงุช ุงุชุฌุงู‡ ุจุฅุทุงุฑุงุช ู…ูˆุถูˆุนูŠุฉ.</b> ุงุณุชุฎุฏู… "ุตุงู†ุน ุงู„ุณู…ุงุช" ููŠ "The Pond" ู„ุฅู†ุดุงุก ุณู…ุงุชูƒ ุงู„ุฎุงุตุฉ ูˆู…ุดุงุฑูƒุชู‡ุง! + + + Download Status + ุญุงู„ุฉ ุงู„ุชู†ุฒูŠู„ + + + Holiday Themes + ุณู…ุงุช ุงู„ุนุทู„ุงุช + + + <b>Themes based on U.S. holidays.</b> Minor holidays last one day; major holidays (Christmas, Easter, Halloween) run for a full week. + <b>ุณู…ุงุช ู…ุจู†ูŠุฉ ุนู„ู‰ ุงู„ุนุทู„ุงุช ุงู„ุฃู…ูŠุฑูƒูŠุฉ.</b> ุงู„ุนุทู„ุงุช ุงู„ุตุบูŠุฑุฉ ุชุฏูˆู… ูŠูˆู…ู‹ุง ูˆุงุญุฏู‹ุงุ› ุงู„ุนุทู„ุงุช ุงู„ูƒุจุฑู‰ (ุนูŠุฏ ุงู„ู…ูŠู„ุงุฏุŒ ุนูŠุฏ ุงู„ูุตุญุŒ ุงู„ู‡ุงู„ูˆูˆูŠู†) ุชู…ุชุฏ ู„ุฃุณุจูˆุน ูƒุงู…ู„. + + + Rainbow Path + ู…ุณุงุฑ ู‚ูˆุณ ู‚ุฒุญ + + + <b>Color the driving path like a Mario Kartโ€“style "Rainbow Road".</b> + <b>ู„ูˆู‘ู† ู…ุณุงุฑ ุงู„ู‚ูŠุงุฏุฉ ุจุฃุณู„ูˆุจ โ€œุทุฑูŠู‚ ู‚ูˆุณ ู‚ุฒุญโ€ ูƒู…ุง ููŠ Mario Kart.</b> + + + Random Events + ุฃุญุฏุงุซ ุนุดูˆุงุฆูŠุฉ + + + <b>Occasional on-screen effects triggered by driving conditions.</b> These are purely a visual and don't impact how openpilot drives! + <b>ุชุฃุซูŠุฑุงุช ุนู„ู‰ ุงู„ุดุงุดุฉ ุชุธู‡ุฑ ุฃุญูŠุงู†ู‹ุง ุจุณุจุจ ุธุฑูˆู ุงู„ู‚ูŠุงุฏุฉ.</b> ู‡ุฐู‡ ุจุตุฑูŠุฉ ุจุญุชู‹ุง ูˆู„ุง ุชุคุซุฑ ุนู„ู‰ ุทุฑูŠู‚ุฉ ู‚ูŠุงุฏุฉ openpilot! + + + Random Themes + ุณู…ุงุช ุนุดูˆุงุฆูŠุฉ + + + <b>Pick a random theme between each drive</b> from the themes you have downloaded. Great for variety without changing settings while driving. + <b>ุงุฎุชุฑ ุณู…ุฉ ุนุดูˆุงุฆูŠุฉ ุจูŠู† ูƒู„ ุฑุญู„ุฉ</b> ู…ู† ุงู„ุณู…ุงุช ุงู„ุชูŠ ู‚ู…ุช ุจุชู†ุฒูŠู„ู‡ุง. ุฑุงุฆุน ู„ู„ุชู†ูˆุน ุฏูˆู† ุชุบูŠูŠุฑ ุงู„ุฅุนุฏุงุฏุงุช ุฃุซู†ุงุก ุงู„ู‚ูŠุงุฏุฉ. + + + Startup Alert + ุชู†ุจูŠู‡ ุจุฏุก ุงู„ุชุดุบูŠู„ + + + <b>Customize the "Startup Alert" message</b> shown at the start of each drive. + <b>ุฎุตุต ุฑุณุงู„ุฉ "ุชู†ุจูŠู‡ ุจุฏุก ุงู„ุชุดุบูŠู„"</b> ุงู„ู…ุนุฑูˆุถุฉ ุนู†ุฏ ุจุฏุงูŠุฉ ูƒู„ ุฑุญู„ุฉ. + + + DELETE + ุญุฐู + + + DOWNLOAD + ุชู†ุฒูŠู„ + + + SELECT + ุชุญุฏูŠุฏ + + + Select a color scheme to delete + ุงุฎุชุฑ ู…ุฎุทุท ุฃู„ูˆุงู† ู„ุญุฐูู‡ + + + Delete the "%1" color scheme? + ุญุฐู ู†ุธุงู… ุงู„ุฃู„ูˆุงู† "%1"? + + + Delete + ุญุฐู + + + Select a color scheme to download + ุงุฎุชุฑ ู…ุฎุทุท ุฃู„ูˆุงู† ู„ู„ุชู†ุฒูŠู„ + + + Select a color scheme + ุงุฎุชุฑ ู…ุฎุทุท ุฃู„ูˆุงู† + + + Select a distance icon pack to delete + ุงุฎุชุฑ ุญุฒู…ุฉ ุฃูŠู‚ูˆู†ุงุช ุงู„ู…ุณุงูุฉ ู„ุญุฐูู‡ุง + + + Delete the "%1" distance icon pack? + ุญุฐู ุญุฒู…ุฉ ุฃูŠู‚ูˆู†ุงุช ุงู„ู…ุณุงูุฉ "%1"? + + + Select a distance icon pack to download + ุงุฎุชุฑ ุญุฒู…ุฉ ุฃูŠู‚ูˆู†ุงุช ุงู„ู…ุณุงูุฉ ู„ุชู†ุฒูŠู„ู‡ุง + + + Select a distance icon pack + ุงุฎุชุฑ ุญุฒู…ุฉ ุฃูŠู‚ูˆู†ุงุช ุงู„ู…ุณุงูุฉ + + + Select an icon pack to delete + ุงุฎุชุฑ ุญุฒู…ุฉ ุฃูŠู‚ูˆู†ุงุช ู„ุญุฐูู‡ุง + + + Delete the "%1" icon pack? + ุญุฐู ุญุฒู…ุฉ ุงู„ุฃูŠู‚ูˆู†ุงุช "%1"? + + + Select an icon pack to download + ุงุฎุชุฑ ุญุฒู…ุฉ ุฃูŠู‚ูˆู†ุงุช ู„ู„ุชู†ุฒูŠู„ + + + Select an icon pack + ุงุฎุชุฑ ุญุฒู…ุฉ ุฃูŠู‚ูˆู†ุงุช + + + Select a signal animation to delete + ุงุฎุชุฑ ุฑุณู… ุฅุดุงุฑุฉ ู…ุชุญุฑูƒุฉ ู„ุญุฐูู‡ + + + Delete the "%1" signal animation? + ุญุฐู ุชุญุฑูŠูƒ ุงู„ุฅุดุงุฑุฉ "%1"ุŸ + + + Select a signal animation to download + ุญุฏุฏ ุฑุณู…ู‹ุง ู…ุชุญุฑูƒู‹ุง ู„ู„ุฅุดุงุฑุฉ ู„ุชู†ุฒูŠู„ู‡ + + + Select a signal animation + ุงุฎุชุฑ ุฑุณูˆู… ุฅุดุงุฑุฉ ู…ุชุญุฑูƒุฉ + + + Select a sound pack to delete + ุงุฎุชุฑ ุญุฒู…ุฉ ุตูˆุชูŠุฉ ู„ุญุฐูู‡ุง + + + Delete the "%1" sound pack? + ุญุฐู ุญุฒู…ุฉ ุงู„ุตูˆุช "%1"? + + + Select a sound pack to download + ุงุฎุชุฑ ุญุฒู…ุฉ ุตูˆุช ู„ุชู†ุฒูŠู„ู‡ุง + + + Select a sound pack + ุงุฎุชุฑ ุญุฒู…ุฉ ุฃุตูˆุงุช + + + Select a steering wheel to delete + ุงุฎุชุฑ ุนุฌู„ุฉ ู‚ูŠุงุฏุฉ ู„ุญุฐูู‡ุง + + + Delete the "%1" steering wheel? + ุญุฐู ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ "%1"ุŸ + + + Select a steering wheel to download + ุงุฎุชุฑ ุนุฌู„ุฉ ู‚ูŠุงุฏุฉ ู„ู„ุชู†ุฒูŠู„ + + + Select a steering wheel + ุงุฎุชุฑ ุนุฌู„ุฉ ู‚ูŠุงุฏุฉ + + + STOCK + ุงู„ู…ุฎุฒูˆู† + + + FROGPILOT + FROGPILOT + + + CUSTOM + ู…ุฎุตุต + + + CLEAR + ู…ุณุญ + + + Enter the text for the top half + ุฃุฏุฎู„ ุงู„ู†ุต ู„ู„ู†ุตู ุงู„ุนู„ูˆูŠ + + + Characters: 0/%1 + ุงู„ุฃุญุฑู: 0/%1 + + + Enter the text for the bottom half + ุฃุฏุฎู„ ุงู„ู†ุต ู„ู„ู†ุตู ุงู„ุณูู„ูŠ + + + Are you sure you want to completely reset your startup message? + ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฑุณุงู„ุฉ ุจุฏุก ุงู„ุชุดุบูŠู„ ุจุงู„ูƒุงู…ู„ุŸ + + + "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! + ู…ูŠุฒุฉ "ุงู„ุณู…ุงุช ุงู„ุนุดูˆุงุฆูŠุฉ" ุชุนู…ู„ ูู‚ุท ู…ุน ุงู„ุณู…ุงุช ุงู„ู…ูุญู…ู‘ูŽู„ุฉุŒ ู„ุฐุง ุชุฃูƒุฏ ู…ู† ุชู†ุฒูŠู„ ุงู„ุณู…ุงุช ุงู„ุชูŠ ุชุฑูŠุฏ ุงุณุชุฎุฏุงู…ู‡ุง! + + + CANCEL + ุฅู„ุบุงุก FrogPilotUtilitiesPanel Debug Mode - ูˆุถุน ุงู„ุชุตุญูŠุญ + ูˆุถุน ุงู„ุชุตุญูŠุญ - Debug FrogPilot during the next drive by utilizing all of FrogPilot's developer metrics for either bug reporting, or self-debugging. - ุงุณุชุฎุฏู… FrogPilot ู„ุชุตุญูŠุญ ุงู„ุฃุฎุทุงุก ุฃุซู†ุงุก ุงู„ู‚ูŠุงุฏุฉ ุงู„ุชุงู„ูŠุฉ ุนู† ุทุฑูŠู‚ ุงู„ุงุณุชูุงุฏุฉ ู…ู† ุฌู…ูŠุน ู…ู‚ุงูŠูŠุณ ุงู„ู…ุทูˆุฑ ุงู„ุฎุงุตุฉ ุจู€ FrogPilot ุฅู…ุง ู„ู„ุฅุจู„ุงุบ ุนู† ุงู„ุฃุฎุทุงุก ุฃูˆ ู„ุชุตุญูŠุญ ุงู„ุฃุฎุทุงุก ุฐุงุชูŠู‹ุง. + <b>Use FrogPilot's developer metrics on your next drive</b> to diagnose issues and improve bug reports. + <b>ุงุณุชุฎุฏู… ู…ู‚ุงูŠูŠุณ ุงู„ู…ุทูˆู‘ุฑ ููŠ FrogPilot ููŠ ู‚ูŠุงุฏุชูƒ ุงู„ู‚ุงุฏู…ุฉ</b> ู„ุชุดุฎูŠุต ุงู„ู…ุดูƒู„ุงุช ูˆุชุญุณูŠู† ุชู‚ุงุฑูŠุฑ ุงู„ุฃุฎุทุงุก. Flash Panda - ูู„ุงุด ุจุงู†ุฏุง + ุชูู„ูŠุด Panda FLASH - ูู„ุงุด + ูู„ุงุด - Flash the Panda's firmware. Use if you're running into issues with the Panda. - ู‚ู… ุจุชุญุฏูŠุซ ุงู„ุจุฑู†ุงู…ุฌ ุงู„ุซุงุจุช ู„ู€ Panda. ุงุณุชุฎุฏู…ู‡ ุฅุฐุง ูƒู†ุช ุชูˆุงุฌู‡ ู…ุดุงูƒู„ ู…ุน Panda. + <b>Reinstall the Panda firmware</b> to fix connection or reliability issues. + <b>ุฃุนุฏ ุชุซุจูŠุช ุจุฑู†ุงู…ุฌ Panda ุงู„ุซุงุจุช</b> ู„ุฅุตู„ุงุญ ู…ุดุงูƒู„ ุงู„ุงุชุตุงู„ ุฃูˆ ุงู„ุงุนุชู…ุงุฏูŠุฉ. - Are you sure you want to flash the Panda? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ูู„ุงุด ุงู„ุจุงู†ุฏุงุŸ + Are you sure you want to flash the Panda firmware? + ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุชูู„ูŠุด ุจุฑู†ุงู…ุฌ Panda ุงู„ุซุงุจุชุŸ Flash - ูู„ุงุด + ูˆู…ูŠุถ Flashing... - ูŠูˆู…ุถ... + ุฌุงุฑู ุงู„ุชูู„ูŠุด... Flashed! - ู…ุถู‰ ุจุณุฑุนุฉ! + ุชู… ุงู„ูˆู…ูŠุถ! Rebooting... - ุฅุนุงุฏุฉ ุงู„ุชุดุบูŠู„... + ุฅุนุงุฏุฉ ุงู„ุชุดุบูŠู„... - Force Started State - ุญุงู„ุฉ ุงู„ุจุฏุก ุงู„ู‚ุณุฑูŠ + Force Drive State + ูุฑุถ ุญุงู„ุฉ ุงู„ู‚ูŠุงุฏุฉ - Force openpilot either offroad or onroad. - ุฅุฌุจุงุฑ openpilot ุฅู…ุง ุฎุงุฑุฌ ุงู„ุทุฑูŠู‚ ุฃูˆ ุนู„ู‰ ุงู„ุทุฑูŠู‚. + <b>Manually set openpilot to be offroad or onroad.</b> + <b>ุงุถุจุท openpilot ูŠุฏูˆูŠู‹ุง ุนู„ู‰ ุงู„ูˆุถุน ุฎุงุฑุฌ ุงู„ุทุฑูŠู‚ ุฃูˆ ุนู„ู‰ ุงู„ุทุฑูŠู‚.</b> OFFROAD - ุฃูˆู ุฑูˆุฏ + ุฎุงุฑุฌ ุงู„ุทุฑูŠู‚ ONROAD - ุนู„ู‰ ุงู„ุทุฑูŠู‚ + ุนู„ู‰ ุงู„ุทุฑูŠู‚ OFF - ุฅูŠู‚ุงู + ุฅูŠู‚ุงู Report a Bug or an Issue - ุงู„ุฅุจู„ุงุบ ุนู† ุฎุทุฃ ุฃูˆ ู…ุดูƒู„ุฉ + ุงู„ุฅุจู„ุงุบ ุนู† ุฎุทุฃ ุฃูˆ ู…ุดูƒู„ุฉ REPORT - ุชู‚ุฑูŠุฑ + ุชู‚ุฑูŠุฑ - Let FrogsGoMoo know about an issue you're facing! - ุฃุฎุจุฑ FrogsGoMoo ุนู† ู…ุดูƒู„ุฉ ุชูˆุงุฌู‡ู‡ุง! + <b>Send a bug report</b> so we can help fix the problem! + <b>ุฃุฑุณู„ ุชู‚ุฑูŠุฑ ุฎุทุฃ</b> ุญุชู‰ ู†ุชู…ูƒู† ู…ู† ุงู„ู…ุณุงุนุฏุฉ ููŠ ุฅุตู„ุงุญ ุงู„ู…ุดูƒู„ุฉ! + + + Please connect to the internet before sending a report! + ูŠุฑุฌู‰ ุงู„ุงุชุตุงู„ ุจุงู„ุฅู†ุชุฑู†ุช ู‚ุจู„ ุฅุฑุณุงู„ ุงู„ุชู‚ุฑูŠุฑ! I saw an alert that said "openpilot crashed" - ุฑุฃูŠุช ุชู†ุจูŠู‡ู‹ุง ูŠู‚ูˆู„ "openpilot crashed" + ุฑุฃูŠุช ุชู†ุจูŠู‡ู‹ุง ูŠู‚ูˆู„ "openpilot crashed" - What's going on? - ู…ุง ุงู„ุฐูŠ ูŠุญุฏุซุŸ + Acceleration feels harsh or jerky + ุงู„ุชุณุงุฑุน ูŠุจุฏูˆ ู‚ุงุณูŠุงู‹ ุฃูˆ ู…ุชู‚ุทุนุงู‹ - Please describe what's happening - ูŠุฑุฌู‰ ูˆุตู ู…ุง ูŠุญุฏุซ - - - Send Report - ุฅุฑุณุงู„ ุงู„ุชู‚ุฑูŠุฑ - - - What's your Discord username? - ู…ุง ู‡ูˆ ุงุณู… ุงู„ู…ุณุชุฎุฏู… ุงู„ุฎุงุต ุจูƒ ุนู„ู‰ DiscordุŸ - - - Your report has been submitted. Thanks for letting us know! - ุชู… ุชู‚ุฏูŠู… ุชู‚ุฑูŠุฑูƒ. ุดูƒุฑู‹ุง ู„ุฅุนู„ุงู…ู†ุง! - - - Reset Toggles to Default - ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุงู„ุชุจุฏูŠู„ุงุช ุฅู„ู‰ ุงู„ูˆุถุน ุงู„ุงูุชุฑุงุถูŠ - - - RESET - ุฅุนุงุฏุฉ ุชุนูŠูŠู† - - - Reset all toggles to their default values. - ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฌู…ูŠุน ุงู„ุฃุฒุฑุงุฑ ุฅู„ู‰ ู‚ูŠู…ู‡ุง ุงู„ุงูุชุฑุงุถูŠุฉ. - - - Are you sure you want to reset all toggles to their default values? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฌู…ูŠุน ุงู„ู…ูุงุชูŠุญ ุฅู„ู‰ ู‚ูŠู…ู‡ุง ุงู„ุงูุชุฑุงุถูŠุฉุŸ - - - Reset - ุฅุนุงุฏุฉ ุชุนูŠูŠู† - - - Resetting... - ุฅุนุงุฏุฉ ุงู„ุชุนูŠูŠู†... - - - Reset! - ุฅุนุงุฏุฉ ุชุนูŠูŠู†! - - - Reset Toggles to Match Stock openpilot - ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุงู„ุชุจุฏูŠู„ุงุช ู„ุชุทุงุจู‚ openpilot ุงู„ุงูุชุฑุงุถูŠ - - - Reset all toggles to match stock openpilot. - ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฌู…ูŠุน ุงู„ุชุจุฏูŠู„ุงุช ู„ุชุทุงุจู‚ openpilot ุงู„ุงูุชุฑุงุถูŠ. - - - Are you sure you want to reset all toggles to match stock openpilot? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฌู…ูŠุน ุงู„ุชุจุฏูŠู„ุงุช ู„ุชุชูˆุงูู‚ ู…ุน openpilot ุงู„ุงูุชุฑุงุถูŠุŸ - - - Ensure your device has an internet connection before sending a report! - ุชุฃูƒุฏ ู…ู† ุฃู† ุฌู‡ุงุฒูƒ ู…ุชุตู„ ุจุงู„ุฅู†ุชุฑู†ุช ู‚ุจู„ ุฅุฑุณุงู„ ุงู„ุชู‚ุฑูŠุฑ! - - - Acceleration feels too harsh or jerky - ูŠุดุนุฑ ุงู„ุชุณุงุฑุน ุจุฃู†ู‡ ู‚ุงุณูŠ ุฃูˆ ู…ุชู‚ุทุน. - - - An alert confused me and I didnโ€™t know what it meant - ุฃุฑุจูƒู†ูŠ ุชู†ุจูŠู‡ ูˆู„ู… ุฃุนุฑู ู…ุงุฐุง ูŠุนู†ูŠ + An alert was unclear and I didn't know what it meant + ูƒุงู† ุงู„ุชู†ุจูŠู‡ ุบูŠุฑ ูˆุงุถุญ ูˆู„ู… ุฃุนุฑู ู…ุง ุงู„ุฐูŠ ูŠุนู†ูŠู‡ Braking is too sudden or uncomfortable - ุงู„ูุฑู…ู„ุฉ ู…ูุงุฌุฆุฉ ุฌุฏู‹ุง ุฃูˆ ุบูŠุฑ ู…ุฑูŠุญุฉ + ุงู„ูุฑู…ู„ุฉ ู…ูุงุฌุฆุฉ ุฌุฏู‹ุง ุฃูˆ ุบูŠุฑ ู…ุฑูŠุญุฉ - Iโ€™m not sure if this is normal or a bug: - ู„ุณุช ู…ุชุฃูƒุฏู‹ุง ู…ู…ุง ุฅุฐุง ูƒุงู† ู‡ุฐุง ุทุจูŠุนูŠู‹ุง ุฃู… ุฎุทุฃ: + I'm not sure if this is normal or a bug: + ู„ุณุช ู…ุชุฃูƒุฏู‹ุง ู…ู…ุง ุฅุฐุง ูƒุงู† ู‡ุฐุง ุทุจูŠุนูŠู‹ุง ุฃู… ุฎุทุฃ. - Lane changes donโ€™t work properly or feel unsafe - ุชุบูŠูŠุฑ ุงู„ู…ุณุงุฑุงุช ู„ุง ูŠุนู…ู„ ุจุดูƒู„ ุตุญูŠุญ ุฃูˆ ูŠุดุนุฑ ุจุนุฏู… ุงู„ุฃู…ุงู† + My screen froze or is stuck loading something + ุดุงุดุชูŠ ุชุฌู…ู‘ุฏุช ุฃูˆ ุนุงู„ู‚ุฉ ุฃุซู†ุงุก ุงู„ุชุญู…ูŠู„ - My screen froze or got stuck on loading - ุชุฌู…ุฏุช ุดุงุดุชูŠ ุฃูˆ ุชูˆู‚ูุช ุนู†ุฏ ุงู„ุชุญู…ูŠู„ - - - My steering wheel buttons arenโ€™t working - ุฃุฒุฑุงุฑ ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ ู„ุง ุชุนู…ู„ + My steering wheel buttons aren't working + ุฃุฒุฑุงุฑ ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ ู„ุง ุชุนู…ู„ ู„ุฏูŠู‘ openpilot disengages when I don't expect it - ูŠุชูˆู‚ู openpilot ุนู† ุงู„ุนู…ู„ ุนู†ุฏู…ุง ู„ุง ุฃุชูˆู‚ุน ุฐู„ูƒ - - - openpilot doesnโ€™t resume after I stop - ู„ุง ูŠุณุชุฃู†ู openpilot ุจุนุฏ ุฃู† ุฃุชูˆู‚ู + ูŠุชูˆู‚ู openpilot ุนู† ุงู„ู‚ูŠุงุฏุฉ ุนู†ุฏู…ุง ู„ุง ุฃุชูˆู‚ุน ุฐู„ูƒ openpilot doesn't react to stopped vehicles ahead - ู„ุง ูŠุชูุงุนู„ openpilot ู…ุน ุงู„ู…ุฑูƒุจุงุช ุงู„ู…ุชูˆู‚ูุฉ ุฃู…ุงู…ู‡ + openpilot ู„ุง ูŠุชูุงุนู„ ู…ุน ุงู„ู…ุฑูƒุจุงุช ุงู„ู…ุชูˆู‚ูุฉ ุฃู…ุงู…ูƒ + + + openpilot doesn't resume from a stop + openpilot ู„ุง ูŠุณุชุฃู†ู ู…ู† ุงู„ุชูˆู‚ู openpilot feels sluggish or slow to respond - ูŠุดุนุฑ openpilot ุจุงู„ุจุทุก ุฃูˆ ุงู„ุงุณุชุฌุงุจุฉ ุงู„ุจุทูŠุฆุฉ + ูŠุดุนุฑ openpilot ุจุงู„ุจุทุก ุฃูˆ ุจุจุทุก ููŠ ุงู„ุงุณุชุฌุงุจุฉ Steering feels twitchy or unnatural - ุงู„ุชูˆุฌูŠู‡ ูŠุจุฏูˆ ู…ุชุฐุจุฐุจู‹ุง ุฃูˆ ุบูŠุฑ ุทุจูŠุนูŠ + ุงู„ุชูˆุฌูŠู‡ ูŠุจุฏูˆ ู…ุชุดู†ุฌู‹ุง ุฃูˆ ุบูŠุฑ ุทุจูŠุนูŠ - The car doesnโ€™t follow curves well - ุงู„ุณูŠุงุฑุฉ ู„ุง ุชุชุจุน ุงู„ู…ู†ุญู†ูŠุงุช ุจุดูƒู„ ุฌูŠุฏ + The car doesn't follow curves well + ุงู„ุณูŠุงุฑุฉ ู„ุง ุชุชุจุน ุงู„ู…ู†ุนุทูุงุช ุฌูŠุฏู‹ุง - The car isnโ€™t staying centered in its lane - ุงู„ุณูŠุงุฑุฉ ู„ุง ุชุจู‚ู‰ ููŠ ูˆุณุท ู…ุณุงุฑู‡ุง - - - The speed or display info looks wrong - ุชุจุฏูˆ ุณุฑุนุฉ ุฃูˆ ู…ุนู„ูˆู…ุงุช ุงู„ุนุฑุถ ุบูŠุฑ ุตุญูŠุญุฉ + The car isn't staying centered in its lane + ุงู„ุณูŠุงุฑุฉ ู„ุง ุชุจู‚ู‰ ููŠ ูˆุณุท ู…ุณุงุฑู‡ุง Something else (please describe) - ุดูŠุก ุขุฎุฑ (ูŠุฑุฌู‰ ุงู„ูˆุตู) + ุดูŠุก ุขุฎุฑ (ูŠุฑุฌู‰ ุงู„ูˆุตู) + + + What's going on? + ู…ุง ุงู„ุฐูŠ ูŠุญุฏุซุŸ + + + Please describe what's happening + ูŠุฑุฌู‰ ูˆุตู ู…ุง ูŠุญุฏุซ + + + Send Report + ุฅุฑุณุงู„ ุชู‚ุฑูŠุฑ + + + What's your Discord username? + ู…ุง ุงุณู… ุงู„ู…ุณุชุฎุฏู… ุงู„ุฎุงุต ุจูƒ ุนู„ู‰ DiscordุŸ + + + Report Sent! Thanks for letting us know! + ุชู… ุฅุฑุณุงู„ ุงู„ุชู‚ุฑูŠุฑ! ุดูƒุฑู‹ุง ู„ุฅุจู„ุงุบู†ุง! + + + Reset Toggles to Default + ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุงู„ู…ูุงุชูŠุญ ุฅู„ู‰ ุงู„ุฅุนุฏุงุฏุงุช ุงู„ุงูุชุฑุงุถูŠุฉ + + + RESET + ุฅุนุงุฏุฉ ุถุจุท + + + <b>Reset all toggles to their default values.</b> + <b>ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฌู…ูŠุน ุงู„ู…ูุงุชูŠุญ ุฅู„ู‰ ู‚ูŠู…ู‡ุง ุงู„ุงูุชุฑุงุถูŠุฉ.</b> + + + Are you sure you want to reset all toggles to their default values? + ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฌู…ูŠุน ุงู„ู…ูุงุชูŠุญ ุฅู„ู‰ ู‚ูŠู…ู‡ุง ุงู„ุงูุชุฑุงุถูŠุฉุŸ + + + Reset + ุฅุนุงุฏุฉ ุถุจุท + + + Resetting... + ุฅุนุงุฏุฉ ุงู„ุชุนูŠูŠู†... + + + Reset! + ุฅุนุงุฏุฉ ุถุจุท! + + + Reset Toggles to Stock openpilot + ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุงู„ู…ูุงุชูŠุญ ุฅู„ู‰ ุฅุนุฏุงุฏุงุช openpilot ุงู„ุงูุชุฑุงุถูŠุฉ + + + <b>Reset all toggles to match stock openpilot.</b> + <b>ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฌู…ูŠุน ุงู„ู…ูุงุชูŠุญ ู„ุชุทุงุจู‚ openpilot ุงู„ุงูุชุฑุงุถูŠ.</b> + + + Are you sure you want to reset all toggles to match stock openpilot? + ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุฌู…ูŠุน ุงู„ู…ูุงุชูŠุญ ู„ุชุทุงุจู‚ openpilot ุงู„ุงูุชุฑุงุถูŠุŸ FrogPilotVehiclesPanel - Select Make - ุงุฎุชุฑ ุงู„ู…ุงุฑูƒุฉ + Car Make + ุตุงู†ุน ุงู„ุณูŠุงุฑุฉ SELECT - SELECT + ุชุญุฏูŠุฏ - Select a Make - ุงุฎุชุฑ ุงู„ุนู„ุงู…ุฉ ุงู„ุชุฌุงุฑูŠุฉ + Choose your car make + ุงุฎุชุฑ ู…ุงุฑูƒุฉ ุณูŠุงุฑุชูƒ - Select Model - ุงุฎุชุฑ ุงู„ู†ู…ูˆุฐุฌ + Car Model + ุทุฑุงุฒ ุงู„ุณูŠุงุฑุฉ - Select a Model - ุงุฎุชุฑ ู†ู…ูˆุฐุฌู‹ุง + Choose your car model + ุงุฎุชุฑ ุทุฑุงุฒ ุณูŠุงุฑุชูƒ Disable Automatic Fingerprint Detection - ุชุนุทูŠู„ ุงู„ูƒุดู ุงู„ุชู„ู‚ุงุฆูŠ ุนู† ุจุตู…ุงุช ุงู„ุฃุตุงุจุน + ุชุนุทูŠู„ ุงู„ูƒุดู ุงู„ุชู„ู‚ุงุฆูŠ ุนู† ุงู„ุจุตู…ุฉ - Forces the selected fingerprint and prevents it from ever changing. - ูŠุฌุจุฑ ุจุตู…ุฉ ุงู„ุฅุตุจุน ุงู„ู…ุญุฏุฏุฉ ูˆูŠู…ู†ุนู‡ุง ู…ู† ุงู„ุชุบูŠูŠุฑ ุนู„ู‰ ุงู„ุฅุทู„ุงู‚. + <b>Force the selected fingerprint</b> and prevent it from ever changing. + <b>ูุฑุถ ุจุตู…ุฉ ุงู„ุฅุตุจุน ุงู„ู…ุญุฏุฏุฉ</b> ูˆู…ู†ุนู‡ุง ู…ู† ุงู„ุชุบูŠู‘ุฑ ู…ุทู„ู‚ู‹ุง. Disable openpilot Longitudinal Control - ุชุนุทูŠู„ ุงู„ุชุญูƒู… ุงู„ุทูˆู„ูŠ ููŠ openpilot + ุชุนุทูŠู„ ุงู„ุชุญูƒู… ุงู„ุทูˆู„ูŠ ููŠ openpilot - Disables openpilot longitudinal control and uses the car's stock ACC instead. - ูŠุนุทู„ ุงู„ุชุญูƒู… ุงู„ุทูˆู„ูŠ ููŠ openpilot ูˆูŠุณุชุฎุฏู… ู†ุธุงู… ุงู„ุชุญูƒู… ููŠ ุงู„ุณุฑุนุฉ ุงู„ุชูƒูŠููŠ (ACC) ุงู„ุฎุงุต ุจุงู„ุณูŠุงุฑุฉ ุจุฏู„ุงู‹ ู…ู† ุฐู„ูƒ. + <b>Disable openpilot longitudinal</b> and use the car's stock ACC instead. + <b>ุนุทู‘ู„ ุงู„ุชุญูƒู… ุงู„ุทูˆู„ูŠ ู„ู€ openpilot</b> ูˆุงุณุชุฎุฏู… ACC ุงู„ู‚ูŠุงุณูŠ ู„ู„ุณูŠุงุฑุฉ ุจุฏู„ุงู‹ ู…ู† ุฐู„ูƒ. Are you sure you want to completely disable openpilot longitudinal control? - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุชุนุทูŠู„ ุงู„ุชุญูƒู… ุงู„ุทูˆู„ูŠ ููŠ openpilot ุชู…ุงู…ู‹ุงุŸ + ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุฃู†ูƒ ุชุฑูŠุฏ ุชุนุทูŠู„ ุงู„ุชุญูƒู… ุงู„ุทูˆู„ูŠ ู„ู€ openpilot ุชู…ุงู…ู‹ุงุŸ General Motors Settings - ุฅุนุฏุงุฏุงุช ุฌู†ุฑุงู„ ู…ูˆุชูˆุฑุฒ + ุฅุนุฏุงุฏุงุช ุฌู†ุฑุงู„ ู…ูˆุชูˆุฑุฒ - Settings specific to <b>General Motors</b> vehicles. - ุฅุนุฏุงุฏุงุช ุฎุงุตุฉ ุจู…ุฑูƒุจุงุช <b>ุฌู†ุฑุงู„ ู…ูˆุชูˆุฑุฒ</b>. + <b>FrogPilot features for General Motors vehicles.</b> + <b>ู…ูŠุฒุงุช FrogPilot ู„ู…ุฑูƒุจุงุช ุฌู†ุฑุงู„ ู…ูˆุชูˆุฑุฒ.</b> FrogsGoMoo's Experimental Tune - ุงู„ู„ุญู† ุงู„ุชุฌุฑูŠุจูŠ ู„ู€ FrogsGoMoo + ุงู„ุถุจุท ุงู„ุชุฌุฑูŠุจูŠ ู„ู€ FrogsGoMoo - <b>FrogsGoMoo's</b> experimental <b>General Motors</b> tune that aims to smoothen out stopping and takeoff control based on nothing but guesswork. Use at your own risk! - ุชุฌุฑุจุฉ <b>FrogsGoMoo</b> ู„ุถุจุท <b>ุฌู†ุฑุงู„ ู…ูˆุชูˆุฑุฒ</b> ุชู‡ุฏู ุฅู„ู‰ ุชุญุณูŠู† ุงู„ุชุญูƒู… ููŠ ุงู„ุชูˆู‚ู ูˆุงู„ุงู†ุทู„ุงู‚ ุจู†ุงุกู‹ ุนู„ู‰ ุงู„ุชุฎู…ูŠู† ูู‚ุท. ุงุณุชุฎุฏู…ู‡ ุนู„ู‰ ู…ุณุคูˆู„ูŠุชูƒ ุงู„ุฎุงุตุฉ! + <b>Experimental GM tune by FrogsGoMoo</b> that attempts to smoothen stopping and takeoff control. Use at your own risk! + <b>ุฅุนุฏุงุฏ ุชุฌุฑูŠุจูŠ ู„ู€ GM ู…ู† FrogsGoMoo</b> ูŠุญุงูˆู„ ุชู†ุนูŠู… ุงู„ุชุญูƒู… ููŠ ุงู„ุชูˆู‚ู ูˆุงู„ุงู†ุทู„ุงู‚. ุงุณุชุฎุฏู…ู‡ ุนู„ู‰ ู…ุณุคูˆู„ูŠุชูƒ ุงู„ุฎุงุตุฉ! Smooth Pedal Response on Hills - ุงุณุชุฌุงุจุฉ ุณู„ุณุฉ ู„ู„ุฏูˆุงุณุฉ ุนู„ู‰ ุงู„ุชู„ุงู„ + ุงุณุชุฌุงุจุฉ ุฏูˆุงุณุฉ ุณู„ุณุฉ ุนู„ู‰ ุงู„ุชู„ุงู„ - Smoothen the acceleration and braking when driving uphill or downhill. - ุชู†ุนูŠู… ุงู„ุชุณุงุฑุน ูˆุงู„ูุฑู…ู„ุฉ ุนู†ุฏ ุงู„ู‚ูŠุงุฏุฉ ุตุนูˆุฏู‹ุง ุฃูˆ ู‡ุจูˆุทู‹ุง. + <b>Smoothen acceleration and braking</b> when driving downhill/uphill. + <b>ุงุฌุนู„ ุงู„ุชุณุงุฑุน ูˆุงู„ูƒุจุญ ุฃูƒุซุฑ ุณู„ุงุณุฉ</b> ุนู†ุฏ ุงู„ู‚ูŠุงุฏุฉ ู†ุฒูˆู„ู‹ุง/ุตุนูˆุฏู‹ุง. - Stop and Go Hack - ุชูˆู‚ู ูˆุงู†ุทู„ู‚ ุงู„ุงุฎุชุฑุงู‚ + Stop-and-Go Hack + ุญูŠู„ุฉ ุงู„ุชูˆู‚ู ูˆุงู„ุงู†ุทู„ุงู‚ - Force stop and go on the <b>2017 Chevy Volt</b>. - ุฅูŠู‚ุงู ุฅุฌุจุงุฑูŠ ูˆุงู„ุงู†ุทู„ุงู‚ ุนู„ู‰ <b>ุดูŠูุฑูˆู„ูŠู‡ ููˆู„ุช 2017</b>. + <b>Force stop-and-go</b> on the 2017 Chevy Volt. + <b>ุฅุฌุจุงุฑ ุงู„ุชูˆู‚ู ูˆุงู„ุงู†ุทู„ุงู‚</b> ุนู„ู‰ ุณูŠุงุฑุฉ Chevy Volt 2017. Hyundai/Kia/Genesis Settings - ุฅุนุฏุงุฏุงุช ู‡ูŠูˆู†ุฏุงูŠ/ูƒูŠุง/ุฌูŠู†ูŠุณูŠุณ + ุฅุนุฏุงุฏุงุช Hyundai/Kia/Genesis - Settings specific to <b>Hyundai</b>, <b>Kia</b>, and <b>Genesis</b> vehicles. - ุฅุนุฏุงุฏุงุช ุฎุงุตุฉ ุจู…ุฑูƒุจุงุช <b>Hyundai</b> ูˆ<b>Kia</b> ูˆ<b>Genesis</b>. + <b>FrogPilot features for Genesis, Hyundai, and Kia vehicles.</b> + <b>ู…ูŠุฒุงุช FrogPilot ู„ู…ุฑูƒุจุงุช Genesis ูˆHyundai ูˆKia.</b> comma's New Longitudinal API - ูˆุงุฌู‡ุฉ ุจุฑู…ุฌุฉ ุงู„ุชุทุจูŠู‚ุงุช ุงู„ุทูˆู„ูŠุฉ ุงู„ุฌุฏูŠุฏุฉ ู…ู† comma + ูˆุงุฌู‡ุฉ ุจุฑู…ุฌุฉ ุงู„ุชุทุจูŠู‚ุงุช ุงู„ุทูˆู„ูŠุฉ ุงู„ุฌุฏูŠุฏุฉ ู…ู† comma - comma's new longitudinal control system that has shown great improvement with acceleration and braking, but has issues on some <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> vehicles. - ู†ุธุงู… ุงู„ุชุญูƒู… ุงู„ุทูˆู„ูŠ ุงู„ุฌุฏูŠุฏ ู…ู† comma ุงู„ุฐูŠ ุฃุธู‡ุฑ ุชุญุณู†ู‹ุง ูƒุจูŠุฑู‹ุง ููŠ ุงู„ุชุณุงุฑุน ูˆุงู„ูุฑู…ู„ุฉุŒ ูˆู„ูƒู†ู‡ ูŠูˆุงุฌู‡ ู…ุดูƒู„ุงุช ููŠ ุจุนุถ ู…ุฑูƒุจุงุช <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b>. + <b>comma's new gas and brake control system</b> that improves acceleration and braking but may cause issues on some Genesis/Hyundai/Kia vehicles. + <b>ู†ุธุงู… ุงู„ุชุญูƒู… ุงู„ุฌุฏูŠุฏ ู…ู† comma ููŠ ุงู„ูˆู‚ูˆุฏ ูˆุงู„ูุฑุงู…ู„</b> ุงู„ุฐูŠ ูŠุญุณู‘ู† ุงู„ุชุณุงุฑุน ูˆุงู„ูƒุจุญ ู„ูƒู†ู‡ ู‚ุฏ ูŠุณุจู‘ุจ ู…ุดูƒู„ุงุช ููŠ ุจุนุถ ู…ุฑูƒุจุงุช Genesis/Hyundai/Kia. "Taco Bell Run" Torque Hack - Taco Bell Run" Torque Hack + ุงุฎุชุฑุงู‚ ุนุฒู… ุงู„ุฏูˆุฑุงู† "Taco Bell Run" - The torque hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to improve turning at low speeds by increasing the allowed steering torque. - ุงุฎุชุฑุงู‚ ุงู„ุนุฒู… ู…ู† ู‚ูŠุงุฏุฉ "Taco Bell Run" ู„ุนุงู… 2022 ู…ู† ุดุฑูƒุฉ comma. ู…ุตู…ู… ู„ุชุญุณูŠู† ุงู„ุงู†ุนุทุงู ุนู†ุฏ ุงู„ุณุฑุนุงุช ุงู„ู…ู†ุฎูุถุฉ ุนู† ุทุฑูŠู‚ ุฒูŠุงุฏุฉ ุนุฒู… ุงู„ุชูˆุฌูŠู‡ ุงู„ู…ุณู…ูˆุญ ุจู‡. + <b>The steering torque hack from comma's 2022 "Taco Bell Run".</b> Designed to increase steering torque at low speeds for left and right turns. + <b>ุงุฎุชุฑุงู‚ ุนุฒู… ุงู„ุชูˆุฌูŠู‡ ู…ู† ุฑุญู„ุฉ โ€œTaco Bellโ€ ุนุงู… 2022 ู…ู† comma.</b> ู…ุตู…ู‘ู… ู„ุฒูŠุงุฏุฉ ุนุฒู… ุงู„ุชูˆุฌูŠู‡ ุนู†ุฏ ุงู„ุณุฑุนุงุช ุงู„ู…ู†ุฎูุถุฉ ู„ู„ุงู†ุนุทุงูุงุช ูŠู…ูŠู†ู‹ุง ูˆูŠุณุงุฑู‹ุง. Toyota/Lexus Settings - ุฅุนุฏุงุฏุงุช ุชูˆูŠูˆุชุง/ู„ูƒุฒุณ + ุฅุนุฏุงุฏุงุช Toyota/Lexus - Settings specific to <b>Toyota</b> and <b>Lexus</b> vehicles. - ุฅุนุฏุงุฏุงุช ุฎุงุตุฉ ุจู…ุฑูƒุจุงุช <b>ุชูˆูŠูˆุชุง</b> ูˆ<b>ู„ูƒุฒุณ</b>. + <b>FrogPilot features for Lexus and Toyota vehicles.</b> + <b>ู…ูŠุฒุงุช FrogPilot ู„ู…ุฑูƒุจุงุช ู„ูƒุฒุณ ูˆุชูˆูŠูˆุชุง.</b> Automatically Lock/Unlock Doors - ู‚ูู„/ูุชุญ ุงู„ุฃุจูˆุงุจ ุชู„ู‚ุงุฆูŠู‹ุง + ู‚ูู„/ูุชุญ ุงู„ุฃุจูˆุงุจ ุชู„ู‚ุงุฆูŠู‹ุง - Automatically lock the doors when shifting into drive and unlock them when shifting into park. - ู‚ูู„ ุงู„ุฃุจูˆุงุจ ุชู„ู‚ุงุฆูŠู‹ุง ุนู†ุฏ ุงู„ุชุญูˆูŠู„ ุฅู„ู‰ ุงู„ู‚ูŠุงุฏุฉ ูˆุงูุชุญู‡ุง ุนู†ุฏ ุงู„ุชุญูˆูŠู„ ุฅู„ู‰ ุงู„ูˆู‚ูˆู. + <b>Automatically lock/unlock doors</b> when shifting in and out of drive. + <b>ู‚ูู„/ูุชุญ ุงู„ุฃู‚ูุงู„ ุชู„ู‚ุงุฆูŠู‹ุง</b> ุนู†ุฏ ุงู„ุงู†ุชู‚ุงู„ ุฅู„ู‰ ูˆุถุน ุงู„ู‚ูŠุงุฏุฉ ูˆุงู„ุฎุฑูˆุฌ ู…ู†ู‡. - Cluster Speed Offset - ุฅุฒุงุญุฉ ุณุฑุนุฉ ุงู„ูƒุชู„ุฉ + Dashboard Speed Offset + ุชุนูˆูŠุถ ุณุฑุนุฉ ู„ูˆุญุฉ ุงู„ุนุฏุงุฏุงุช - The cluster speed offset used by openpilot to match the speed displayed on the dash. - ุฅุฒุงุญุฉ ุณุฑุนุฉ ุงู„ูƒุชู„ุฉ ุงู„ู…ุณุชุฎุฏู…ุฉ ุจูˆุงุณุทุฉ openpilot ู„ู…ุทุงุจู‚ุฉ ุงู„ุณุฑุนุฉ ุงู„ู…ุนุฑูˆุถุฉ ุนู„ู‰ ู„ูˆุญุฉ ุงู„ู‚ูŠุงุฏุฉ. + <b>The speed offset openpilot uses to match the speed on the dashboard display.</b> + <b>ุฅุฒุงุญุฉ ุงู„ุณุฑุนุฉ ุงู„ุชูŠ ูŠุณุชุฎุฏู…ู‡ุง openpilot ู„ู…ุทุงุจู‚ุฉ ุงู„ุณุฑุนุฉ ุนู„ู‰ ุดุงุดุฉ ู„ูˆุญุฉ ุงู„ุนุฏุงุฏุงุช.</b> FrogsGoMoo's Personal Tweaks - ุงู„ุชุนุฏูŠู„ุงุช ุงู„ุดุฎุตูŠุฉ ู„ู€ FrogsGoMoo + ุชุนุฏูŠู„ุงุช FrogsGoMoo ุงู„ุดุฎุตูŠุฉ - <b>FrogsGoMoo's</b> personal tweaks for quicker acceleration and smoother braking. - <b>ุชุนุฏูŠู„ุงุช FrogsGoMoo ุงู„ุดุฎุตูŠุฉ</b> ู„ุชุณุฑูŠุน ุฃุณุฑุน ูˆูƒุจุญ ุฃูƒุซุฑ ุณู„ุงุณุฉ. + <b>Personal tweaks by FrogsGoMoo for quicker acceleration and smoother braking.</b> + <b>ุชุนุฏูŠู„ุงุช ุดุฎุตูŠุฉ ู…ู† FrogsGoMoo ู„ุชุณุงุฑุน ุฃุณุฑุน ูˆูƒุจุญ ุฃูƒุซุฑ ุณู„ุงุณุฉ.</b> Lock Doors On Ignition Off After - ู‚ูู„ ุงู„ุฃุจูˆุงุจ ุนู†ุฏ ุฅูŠู‚ุงู ุงู„ุชุดุบูŠู„ ุจุนุฏ + ู‚ูู„ ุงู„ุฃุจูˆุงุจ ุนู†ุฏ ุฅูŠู‚ุงู ุงู„ุฅุดุนุงู„ ุจุนุฏ - Automatically lock the doors after the car's ignition has been turned off and no one is detected in either of the front seats. - ู‚ูู„ ุงู„ุฃุจูˆุงุจ ุชู„ู‚ุงุฆูŠู‹ุง ุจุนุฏ ุฅุทูุงุก ู…ุญุฑูƒ ุงู„ุณูŠุงุฑุฉ ูˆุนุฏู… ุงูƒุชุดุงู ุฃูŠ ุดุฎุต ููŠ ุฃูŠ ู…ู† ุงู„ู…ู‚ุงุนุฏ ุงู„ุฃู…ุงู…ูŠุฉ. + <b>Automatically lock the doors on ignition off</b> when no one is detected in the front seats. + <b>ุงู‚ูู„ ุงู„ุฃุจูˆุงุจ ุชู„ู‚ุงุฆูŠุงู‹ ุนู†ุฏ ุฅุทูุงุก ุงู„ุฅุดุนุงู„</b> ุนู†ุฏู…ุง ู„ุง ูŠููƒุชุดู ูˆุฌูˆุฏ ุฃุญุฏ ููŠ ุงู„ู…ู‚ุงุนุฏ ุงู„ุฃู…ุงู…ูŠุฉ. - Force stop and go on <b>Toyota</b>/<b>Lexus</b> vehicles without stock stop and go functionality. - ุฅูŠู‚ุงู ุงู„ู‚ูˆุฉ ูˆุงู„ุงู†ุทู„ุงู‚ ุนู„ู‰ ู…ุฑูƒุจุงุช <b>ุชูˆูŠูˆุชุง</b>/<b>ู„ูƒุฒุณ</b> ุงู„ุชูŠ ู„ุง ุชุญุชูˆูŠ ุนู„ู‰ ูˆุธูŠูุฉ ุงู„ุชูˆู‚ู ูˆุงู„ุงู†ุทู„ุงู‚ ุงู„ุฃุณุงุณูŠุฉ. + <b>Force stop-and-go</b> on Lexus/Toyota vehicles without stock stop-and-go functionality. + <b>ูุฑุถ ุงู„ุชูˆู‚ู ูˆุงู„ุงู†ุทู„ุงู‚</b> ููŠ ู…ุฑูƒุจุงุช Lexus/Toyota ุงู„ุชูŠ ู„ุง ุชุญุชูˆูŠ ุนู„ู‰ ูˆุธูŠูุฉ ุงู„ุชูˆู‚ู ูˆุงู„ุงู†ุทู„ุงู‚ ุงู„ุฃุตู„ูŠุฉ. MANAGE - ุฅุฏุงุฑุฉ + ุฅุฏุงุฑุฉ Lock - ู‚ูู„ + ู‚ูู„ Unlock - ุงูุชุญ + ุงูุชุญ ุงู„ู‚ูู„ Never - ุฃุจุฏุงู‹ + ุฃุจุฏู‹ุง seconds - ุซูˆุงู†ูŠ + ุซูˆุงู†ู + + + None + ู„ุง ุดูŠุก + + + Vehicle Info + ู…ุนู„ูˆู…ุงุช ุงู„ู…ุฑูƒุจุฉ + + + <b>Information about your vehicle in regards to openpilot support and functionality.</b> + <b>ู…ุนู„ูˆู…ุงุช ุนู† ุณูŠุงุฑุชูƒ ููŠู…ุง ูŠุชุนู„ู‚ ุจุฏุนู… openpilot ูˆูˆุธุงุฆูู‡.</b> + + + <b>Detected 3rd party hardware.</b> + <b>ุชู… ุงูƒุชุดุงู ุนุชุงุฏ ุทุฑู ุซุงู„ุซ.</b> + + + openpilot Longitudinal Support + ุฏุนู… ุงู„ุทูˆู„ูŠุฉ ููŠ openpilot + + + <b>Can openpilot control the vehicle's acceleration and braking?</b> + <b>ู‡ู„ ูŠู…ูƒู† ู„ู€ openpilot ุงู„ุชุญูƒู… ููŠ ุชุณุงุฑุน ุงู„ู…ุฑูƒุจุฉ ูˆูƒุจุญู‡ุงุŸ</b> + + + <b>Does your vehicle support the "comma pedal"?</b> + <b>ู‡ู„ ูŠุฏุนู… ู…ุฑูƒุจุชูƒ "comma pedal"ุŸ</b> + + + Radar Support + ุฏุนู… ุงู„ุฑุงุฏุงุฑ + + + <b>Does openpilot use the vehicle's radar data</b> alongside the device's camera for tracking lead vehicles? + <b>ู‡ู„ ูŠุณุชุฎุฏู… openpilot ุจูŠุงู†ุงุช ุฑุงุฏุงุฑ ุงู„ุณูŠุงุฑุฉ</b> ุฅู„ู‰ ุฌุงู†ุจ ูƒุงู…ูŠุฑุง ุงู„ุฌู‡ุงุฒ ู„ุชุชุจุน ุงู„ู…ุฑูƒุจุงุช ุงู„ุฃู…ุงู…ูŠุฉุŸ + + + SDSU Support + ุฏุนู… SDSU + + + <b>Does your vehicle support "SDSUs"?</b> + <b>ู‡ู„ ูŠุฏุนู… ู…ุฑูƒุจุชูƒ "SDSUs"ุŸ</b> + + + Stop-and-Go Support + ุฏุนู… ุงู„ุชูˆู‚ู ูˆุงู„ุงู†ุทู„ุงู‚ + + + <b>Does your vehicle support stop-and-go driving?</b> + <b>ู‡ู„ ูŠุฏุนู… ู…ุฑูƒุจุชูƒ ุงู„ู‚ูŠุงุฏุฉ ุจุชูˆู‚ู ูˆุงู†ุทู„ุงู‚ุŸ</b> + + + VIEW + ุนุฑุถ + + + Yes + ู†ุนู… + + + No + ู„ุง + + + 3rd Party Hardware Detected + ุชู… ุงูƒุชุดุงู ุนุชุงุฏ ุทุฑู ุซุงู„ุซ + + + Blind Spot Support + ุฏุนู… ุงู„ู†ู‚ุทุฉ ุงู„ุนู…ูŠุงุก + + + <b>Does openpilot use the vehicle's blind spot data?</b> + <b>ู‡ู„ ูŠุณุชุฎุฏู… openpilot ุจูŠุงู†ุงุช ุงู„ู†ู‚ุทุฉ ุงู„ุนู…ูŠุงุก ู„ู„ู…ุฑูƒุจุฉุŸ</b> + + + comma Pedal Support + ุฏุนู… comma Pedal FrogPilotVisualsPanel Advanced UI Controls - ุนู†ุงุตุฑ ุงู„ุชุญูƒู… ุงู„ู…ุชู‚ุฏู…ุฉ ููŠ ูˆุงุฌู‡ุฉ ุงู„ู…ุณุชุฎุฏู… + ุนู†ุงุตุฑ ุชุญูƒู… ูˆุงุฌู‡ุฉ ุงู„ู…ุณุชุฎุฏู… ุงู„ู…ุชู‚ุฏู…ุฉ - Advanced settings for fine-tuning openpilot's driving screen. - ุงู„ุฅุนุฏุงุฏุงุช ุงู„ู…ุชู‚ุฏู…ุฉ ู„ุถุจุท ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ ููŠ openpilot. + <b>Advanced visual changes</b> to fine-tune how the driving screen looks. + <b>ุชุบูŠูŠุฑุงุช ุจุตุฑูŠุฉ ู…ุชู‚ุฏู…ุฉ</b> ู„ุถุจุท ู…ุธู‡ุฑ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ ุจุฏู‚ุฉ. Hide Current Speed - ุฅุฎูุงุก ุงู„ุณุฑุนุฉ ุงู„ุญุงู„ูŠุฉ + ุฅุฎูุงุก ุงู„ุณุฑุนุฉ ุงู„ุญุงู„ูŠุฉ - Hide the current speed from the driving screen. - ุฅุฎูุงุก ุงู„ุณุฑุนุฉ ุงู„ุญุงู„ูŠุฉ ู…ู† ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. + <b>Hide the current speed</b> from the driving screen. + <b>ุฅุฎูุงุก ุงู„ุณุฑุนุฉ ุงู„ุญุงู„ูŠุฉ</b> ู…ู† ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. Hide Lead Marker - ุฅุฎูุงุก ุนู„ุงู…ุฉ ุงู„ุฑุตุงุต + ุฅุฎูุงุก ุนู„ุงู…ุฉ ุงู„ู‚ุงุฆุฏ - Hide the marker for lead vehicles from the driving screen. - ุฅุฎูุงุก ุงู„ุนู„ุงู…ุฉ ู„ู„ู…ุฑูƒุจุงุช ุงู„ุฑุงุฆุฏุฉ ู…ู† ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. + <b>Hide the lead-vehicle marker</b> from the driving screen. + <b>ุฅุฎูุงุก ู…ุคุดู‘ุฑ ุงู„ู…ุฑูƒุจุฉ ุงู„ุฃู…ุงู…ูŠุฉ</b> ู…ู† ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. Hide Map Settings Button - ุฅุฎูุงุก ุฒุฑ ุฅุนุฏุงุฏุงุช ุงู„ุฎุฑูŠุทุฉ + ุฅุฎูุงุก ุฒุฑ ุฅุนุฏุงุฏุงุช ุงู„ุฎุฑูŠุทุฉ - Hide the map settings button from the driving screen. - ุฅุฎูุงุก ุฒุฑ ุฅุนุฏุงุฏุงุช ุงู„ุฎุฑูŠุทุฉ ู…ู† ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. + <b>Hide the map settings button or map</b> from the driving screen. + <b>ุฅุฎูุงุก ุฒุฑ ุฅุนุฏุงุฏุงุช ุงู„ุฎุฑูŠุทุฉ ุฃูˆ ุงู„ุฎุฑูŠุทุฉ</b> ู…ู† ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. Hide Max Speed - ุฅุฎูุงุก ุงู„ุณุฑุนุฉ ุงู„ู‚ุตูˆู‰ + ุฅุฎูุงุก ุงู„ุณุฑุนุฉ ุงู„ู‚ุตูˆู‰ - Hide the max speed from the driving screen. - ุฅุฎูุงุก ุงู„ุณุฑุนุฉ ุงู„ู‚ุตูˆู‰ ู…ู† ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. + <b>Hide the max speed</b> from the driving screen. + <b>ุฅุฎูุงุก ุงู„ุณุฑุนุฉ ุงู„ู‚ุตูˆู‰</b> ู…ู† ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. Hide Non-Critical Alerts - ุฅุฎูุงุก ุงู„ุชู†ุจูŠู‡ุงุช ุบูŠุฑ ุงู„ุญุฑุฌุฉ + ุฅุฎูุงุก ุงู„ุชู†ุจูŠู‡ุงุช ุบูŠุฑ ุงู„ุญุฑุฌุฉ - Hide non-critical alerts from the driving screen. - ุฅุฎูุงุก ุงู„ุชู†ุจูŠู‡ุงุช ุบูŠุฑ ุงู„ุญุฑุฌุฉ ู…ู† ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. + <b>Hide non-critical alerts</b> from the driving screen. + <b>ุฅุฎูุงุก ุงู„ุชู†ุจูŠู‡ุงุช ุบูŠุฑ ุงู„ุญุฑุฌุฉ</b> ู…ู† ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. Hide Speed Limits - ุฅุฎูุงุก ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ + ุฅุฎูุงุก ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ - Hide the speed limits from the driving screen. - ุฅุฎูุงุก ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ู…ู† ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. + <b>Hide posted speed limits</b> from the driving screen. + <b>ุฅุฎูุงุก ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุงู„ู…ุนุฑูˆุถุฉ</b> ู…ู† ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. Use Wheel Speed - ุงุณุชุฎุฏู… ุณุฑุนุฉ ุงู„ุนุฌู„ุฉ + ุงุณุชุฎุฏู… ุณุฑุนุฉ ุงู„ุนุฌู„ุฉ - Use the vehicle's wheel speed instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives. - ุงุณุชุฎุฏู… ุณุฑุนุฉ ุนุฌู„ุฉ ุงู„ุณูŠุงุฑุฉ ุจุฏู„ุงู‹ ู…ู† ุณุฑุนุฉ ุงู„ุนุฏุงุฏ. ู‡ุฐุง ุชุบูŠูŠุฑ ุจุตุฑูŠ ุจุญุช ูˆู„ุง ูŠุคุซุฑ ุนู„ู‰ ูƒูŠููŠุฉ ู‚ูŠุงุฏุฉ openpilot. + <b>Use the vehicle's wheel speed</b> instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives! + <b>ุงุณุชุฎุฏู… ุณุฑุนุฉ ุนุฌู„ุงุช ุงู„ู…ุฑูƒุจุฉ</b> ุจุฏู„ุงู‹ ู…ู† ุณุฑุนุฉ ู„ูˆุญุฉ ุงู„ุนุฏุงุฏุงุช. ู‡ุฐุง ุชุบูŠูŠุฑ ุจุตุฑูŠ ุจุญุช ูˆู„ุง ูŠุคุซุฑ ุนู„ู‰ ุทุฑูŠู‚ุฉ ู‚ูŠุงุฏุฉ openpilot! Developer UI - ูˆุงุฌู‡ุฉ ุงู„ู…ุณุชุฎุฏู… ู„ู„ู…ุทูˆุฑ + ูˆุงุฌู‡ุฉ ุงู„ู…ุทูˆู‘ุฑ - Detailed information about openpilot's internal operations. - ู…ุนู„ูˆู…ุงุช ู…ูุตู„ุฉ ุนู† ุงู„ุนู…ู„ูŠุงุช ุงู„ุฏุงุฎู„ูŠุฉ ู„ู€ openpilot. + <b>Detailed information about openpilot's internal operations.</b> + <b>ู…ุนู„ูˆู…ุงุช ู…ูุตู„ุฉ ุญูˆู„ ุงู„ุนู…ู„ูŠุงุช ุงู„ุฏุงุฎู„ูŠุฉ ู„ู€ openpilot.</b> Adjacent Path Metrics - ู…ู‚ุงูŠูŠุณ ุงู„ู…ุณุงุฑ ุงู„ู…ุฌุงูˆุฑ + ู…ู‚ุงูŠูŠุณ ุงู„ู…ุณุงุฑ ุงู„ู…ุฌุงูˆุฑ - Metrics displayed on top of the adjacent lanes measuring their current width. - ุงู„ู…ู‚ุงูŠูŠุณ ุงู„ู…ุนุฑูˆุถุฉ ุนู„ู‰ ุงู„ุฌุฒุก ุงู„ุนู„ูˆูŠ ู…ู† ุงู„ุญุงุฑุงุช ุงู„ู…ุฌุงูˆุฑุฉ ุชู‚ูŠุณ ุนุฑุถู‡ุง ุงู„ุญุงู„ูŠ. + <b>Show the width of the adjacent lanes.</b> + <b>ุฃุธู‡ุฑ ุนุฑุถ ุงู„ุญุงุฑุงุช ุงู„ู…ุฌุงูˆุฑุฉ.</b> Developer Metrics - ู…ู‚ุงูŠูŠุณ ุงู„ู…ุทูˆุฑ + ู…ู‚ุงูŠูŠุณ ุงู„ู…ุทูˆุฑูŠู† - Performance data, sensor readings, and system metrics for debugging and optimizing openpilot. - ุจูŠุงู†ุงุช ุงู„ุฃุฏุงุกุŒ ู‚ุฑุงุกุงุช ุงู„ู…ุณุชุดุนุฑุงุชุŒ ูˆู…ู‚ุงูŠูŠุณ ุงู„ู†ุธุงู… ู„ุชุตุญูŠุญ ุงู„ุฃุฎุทุงุก ูˆุชุญุณูŠู† openpilot. + <b>Performance data, sensor readings, and system metrics</b> for debugging and optimizing openpilot. + <b>ุจูŠุงู†ุงุช ุงู„ุฃุฏุงุก ูˆู‚ุฑุงุกุงุช ุงู„ุญุณุงุณุงุช ูˆู‚ูŠุงุณุงุช ุงู„ู†ุธุงู…</b> ู„ุฃุบุฑุงุถ ุชุตุญูŠุญ ุงู„ุฃุฎุทุงุก ูˆุชุญุณูŠู† openpilot. Border Metrics - ู…ู‚ุงูŠูŠุณ ุงู„ุญุฏูˆุฏ + ู…ู‚ุงูŠูŠุณ ุงู„ุญุฏูˆุฏ - Metrics displayed around the border of the driving screen.<br><br><b>Blind Spot</b>: Turn the border red when a vehicle is detected in a blind spot<br><b>Steering Torque</b>: Highlight the border green to red in accordance to the amount of steering torque being used<br><b>Turn Signal</b>: Flash the border yellow when a turn signal is active - ูŠุชู… ุนุฑุถ ุงู„ู…ู‚ุงูŠูŠุณ ุญูˆู„ ุญุฏูˆุฏ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ.<br><br><b>ุงู„ู†ู‚ุทุฉ ุงู„ุนู…ูŠุงุก</b>: ุชุญูˆูŠู„ ุงู„ุญุฏูˆุฏ ุฅู„ู‰ ุงู„ู„ูˆู† ุงู„ุฃุญู…ุฑ ุนู†ุฏ ุงูƒุชุดุงู ู…ุฑูƒุจุฉ ููŠ ุงู„ู†ู‚ุทุฉ ุงู„ุนู…ูŠุงุก<br><b>ุนุฒู… ุงู„ุชูˆุฌูŠู‡</b>: ุชู…ูŠูŠุฒ ุงู„ุญุฏูˆุฏ ู…ู† ุงู„ุฃุฎุถุฑ ุฅู„ู‰ ุงู„ุฃุญู…ุฑ ูˆูู‚ู‹ุง ู„ู…ู‚ุฏุงุฑ ุนุฒู… ุงู„ุชูˆุฌูŠู‡ ุงู„ู…ุณุชุฎุฏู…<br><b>ุฅุดุงุฑุฉ ุงู„ุงู†ุนุทุงู</b>: ูˆู…ูŠุถ ุงู„ุญุฏูˆุฏ ุจุงู„ู„ูˆู† ุงู„ุฃุตูุฑ ุนู†ุฏ ุชูุนูŠู„ ุฅุดุงุฑุฉ ุงู„ุงู†ุนุทุงู + <b>Show statuses along the border of the driving screen.</b><br><br><b>Blind Spot</b>: The border turns red when a vehicle is in a blind spot<br><b>Steering Torque</b>: The border goes from green to red according to how much steering torque is being used<br><b>Turn Signal</b>: The border flashes yellow when a turn signal is on + <b>ุงุนุฑุถ ุงู„ุญุงู„ุงุช ุนู„ู‰ ุทูˆู„ ุญุงูุฉ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ.</b><br><br><b>ุงู„ู†ู‚ุทุฉ ุงู„ุนู…ูŠุงุก</b>: ุชุชุญูˆู„ ุงู„ุญุงูุฉ ุฅู„ู‰ ุงู„ู„ูˆู† ุงู„ุฃุญู…ุฑ ุนู†ุฏู…ุง ุชูƒูˆู† ู‡ู†ุงูƒ ู…ุฑูƒุจุฉ ููŠ ุงู„ู†ู‚ุทุฉ ุงู„ุนู…ูŠุงุก<br><b>ุนุฒู… ุงู„ุชูˆุฌูŠู‡</b>: ุชุชุญูˆู„ ุงู„ุญุงูุฉ ู…ู† ุงู„ุฃุฎุถุฑ ุฅู„ู‰ ุงู„ุฃุญู…ุฑ ุญุณุจ ู…ู‚ุฏุงุฑ ุนุฒู… ุงู„ุชูˆุฌูŠู‡ ุงู„ู…ุณุชุฎุฏู…<br><b>ุฅุดุงุฑุฉ ุงู„ุงู†ุนุทุงู</b>: ุชูˆู…ุถ ุงู„ุญุงูุฉ ุจุงู„ู„ูˆู† ุงู„ุฃุตูุฑ ุนู†ุฏ ุชุดุบูŠู„ ุฅุดุงุฑุฉ ุงู„ุงู†ุนุทุงู Lead Info - ู…ุนู„ูˆู…ุงุช ุงู„ุนู…ูŠู„ ุงู„ู…ุญุชู…ู„ + ู…ุนู„ูˆู…ุงุช ุงู„ุณูŠุงุฑุฉ ุงู„ุฃู… - Metrics displayed under vehicle markers listing their distance and current speed. - ุงู„ู…ู‚ุงูŠูŠุณ ุงู„ู…ุนุฑูˆุถุฉ ุชุญุช ุนู„ุงู…ุงุช ุงู„ู…ุฑูƒุจุงุช ุชุนุฑุถ ุงู„ู…ุณุงูุฉ ูˆุงู„ุณุฑุนุฉ ุงู„ุญุงู„ูŠุฉ. + <b>Show each tracked vehicle's distance and speed</b> below its marker. + <b>ุงุนุฑุถ ู…ุณุงูุฉ ูˆุณุฑุนุฉ ูƒู„ ู…ุฑูƒุจุฉ ู…ูุชุนู‚ู‘ูŽุจุฉ</b> ุฃุณูู„ ู…ุคุดุฑู‡ุง. FPS Display - ุนุฑุถ FPS + ุนุฑุถ FPS - Display the <b>Frames Per Second (FPS)</b> at the bottom of the driving screen. - ุนุฑุถ <b>ุงู„ุฅุทุงุฑุงุช ููŠ ุงู„ุซุงู†ูŠุฉ (FPS)</b> ููŠ ุฃุณูู„ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. + <b>Show the frames per second (FPS)</b> at the bottom of the driving screen. + <b>ุนุฑุถ ุงู„ุฅุทุงุฑุงุช ููŠ ุงู„ุซุงู†ูŠุฉ (FPS)</b> ููŠ ุฃุณูู„ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. Numerical Temperature Gauge - ู…ู‚ูŠุงุณ ุฏุฑุฌุฉ ุงู„ุญุฑุงุฑุฉ ุงู„ุฑู‚ู…ูŠ + ู…ู‚ูŠุงุณ ุฏุฑุฌุฉ ุงู„ุญุฑุงุฑุฉ ุงู„ุฑู‚ู…ูŠ - Use numerical temperature readings instead of status labels in the sidebar. - ุงุณุชุฎุฏู… ู‚ุฑุงุกุงุช ุฏุฑุฌุฉ ุงู„ุญุฑุงุฑุฉ ุงู„ุฑู‚ู…ูŠุฉ ุจุฏู„ุงู‹ ู…ู† ุชุณู…ูŠุงุช ุงู„ุญุงู„ุฉ ููŠ ุงู„ุดุฑูŠุท ุงู„ุฌุงู†ุจูŠ. - - - Display system information (<b>CPU</b>, <b>GPU</b>, <b>RAM usage</b>, <b>IP address</b>, <b>device storage</b>) in the sidebar. - ุนุฑุถ ู…ุนู„ูˆู…ุงุช ุงู„ู†ุธุงู… (<b>ูˆุญุฏุฉ ุงู„ู…ุนุงู„ุฌุฉ ุงู„ู…ุฑูƒุฒูŠุฉ</b>, <b>ูˆุญุฏุฉ ู…ุนุงู„ุฌุฉ ุงู„ุฑุณูˆู…ูŠุงุช</b>, <b>ุงุณุชุฎุฏุงู… ุงู„ุฐุงูƒุฑุฉ ุงู„ุนุดูˆุงุฆูŠุฉ</b>, <b>ุนู†ูˆุงู† IP</b>, <b>ุชุฎุฒูŠู† ุงู„ุฌู‡ุงุฒ</b>) ููŠ ุงู„ุดุฑูŠุท ุงู„ุฌุงู†ุจูŠ. - - - Use International System of Units - ุงุณุชุฎุฏู… ุงู„ู†ุธุงู… ุงู„ุฏูˆู„ูŠ ู„ู„ูˆุญุฏุงุช - - - Display measurements using the <b>International System of Units (SI)</b> standard. - ุงุนุฑุถ ุงู„ู‚ูŠุงุณุงุช ุจุงุณุชุฎุฏุงู… ู…ุนูŠุงุฑ <b>ุงู„ู†ุธุงู… ุงู„ุฏูˆู„ูŠ ู„ู„ูˆุญุฏุงุช (SI)</b>. - - - Developer Sidebar - ุงู„ุดุฑูŠุท ุงู„ุฌุงู†ุจูŠ ู„ู„ู…ุทูˆุฑ - - - Display debugging info and metrics in a dedicated sidebar on the right side of the screen. - ุนุฑุถ ู…ุนู„ูˆู…ุงุช ุงู„ุชุตุญูŠุญ ูˆุงู„ู‚ูŠุงุณุงุช ููŠ ุดุฑูŠุท ุฌุงู†ุจูŠ ู…ุฎุตุต ุนู„ู‰ ุงู„ุฌุงู†ุจ ุงู„ุฃูŠู…ู† ู…ู† ุงู„ุดุงุดุฉ. - - - Metric #1 - ุงู„ู…ู‚ูŠุงุณ #1 - - - Metric to display in the first metric in the "Developer Sidebar". - ุงู„ู…ู‚ูŠุงุณ ู„ุนุฑุถู‡ ููŠ ุงู„ู…ู‚ูŠุงุณ ุงู„ุฃูˆู„ ููŠ "ุงู„ุดุฑูŠุท ุงู„ุฌุงู†ุจูŠ ู„ู„ู…ุทูˆุฑ". - - - Metric #2 - ุงู„ู…ู‚ูŠุงุณ #2 - - - Metric to display in the second metric in the "Developer Sidebar". - ุงู„ู…ู‚ูŠุงุณ ู„ุนุฑุถู‡ ููŠ ุงู„ู…ู‚ูŠุงุณ ุงู„ุซุงู†ูŠ ููŠ "ุงู„ุดุฑูŠุท ุงู„ุฌุงู†ุจูŠ ู„ู„ู…ุทูˆุฑ". - - - Metric #3 - ุงู„ู…ู‚ูŠุงุณ #3 - - - Metric to display in the third metric in the "Developer Sidebar". - ุงู„ู…ู‚ูŠุงุณ ู„ุนุฑุถู‡ ููŠ ุงู„ู…ู‚ูŠุงุณ ุงู„ุซุงู„ุซ ููŠ "ุงู„ุดุฑูŠุท ุงู„ุฌุงู†ุจูŠ ู„ู„ู…ุทูˆุฑ". - - - Metric #4 - ุงู„ู…ู‚ูŠุงุณ #4 - - - Metric to display in the fourth metric in the "Developer Sidebar". - ู…ู‚ูŠุงุณ ู„ุนุฑุถู‡ ููŠ ุงู„ู…ู‚ูŠุงุณ ุงู„ุฑุงุจุน ููŠ "ุงู„ุดุฑูŠุท ุงู„ุฌุงู†ุจูŠ ู„ู„ู…ุทูˆุฑ". - - - Metric #5 - ุงู„ู…ูŠุชุฑูŠูƒ #5 - - - Metric to display in the fifth metric in the "Developer Sidebar". - ุงู„ู…ู‚ูŠุงุณ ู„ุนุฑุถู‡ ููŠ ุงู„ู…ู‚ูŠุงุณ ุงู„ุฎุงู…ุณ ููŠ "ุงู„ุดุฑูŠุท ุงู„ุฌุงู†ุจูŠ ู„ู„ู…ุทูˆุฑ". - - - Metric #6 - ุงู„ู…ู‚ูŠุงุณ #6 - - - Metric to display in the sixth metric in the "Developer Sidebar". - ุงู„ู…ู‚ูŠุงุณ ู„ุนุฑุถู‡ ููŠ ุงู„ู…ู‚ูŠุงุณ ุงู„ุณุงุฏุณ ููŠ "ุงู„ุดุฑูŠุท ุงู„ุฌุงู†ุจูŠ ู„ู„ู…ุทูˆุฑ". - - - Metric #7 - ุงู„ู…ูŠุชุฑูŠูƒ #7 - - - Metric to display in the seventh metric in the "Developer Sidebar". - ุงู„ู…ู‚ูŠุงุณ ู„ุนุฑุถู‡ ููŠ ุงู„ู…ู‚ูŠุงุณ ุงู„ุณุงุจุน ููŠ "ุงู„ุดุฑูŠุท ุงู„ุฌุงู†ุจูŠ ู„ู„ู…ุทูˆุฑ". - - - Developer Widgets - ุนู†ุงุตุฑ ูˆุงุฌู‡ุฉ ุงู„ู…ุณุชุฎุฏู… ู„ู„ู…ุทูˆุฑูŠู† - - - Overlays displaying debugging visuals, internal states, and model predictions on the driving screen. - ุชุฑุงูƒุจุงุช ุชุนุฑุถ ู…ุฑุฆูŠุงุช ุงู„ุชุตุญูŠุญุŒ ุงู„ุญุงู„ุงุช ุงู„ุฏุงุฎู„ูŠุฉุŒ ูˆุชู†ุจุคุงุช ุงู„ู†ู…ูˆุฐุฌ ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. - - - Adjacent Leads Tracking - ุชุชุจุน ุงู„ุนู…ู„ุงุก ุงู„ู…ุญุชู…ู„ูŠู† ุงู„ู…ุฌุงูˆุฑูŠู† - - - Adjacent leads detected by the car's radar to the left and right of the current driving path. - ุชู… ุงู„ูƒุดู ุนู† ุงู„ู…ุฑูƒุจุงุช ุงู„ู…ุฌุงูˆุฑุฉ ุจูˆุงุณุทุฉ ุฑุงุฏุงุฑ ุงู„ุณูŠุงุฑุฉ ุนู„ู‰ ุงู„ูŠุณุงุฑ ูˆุงู„ูŠู…ูŠู† ู…ู† ู…ุณุงุฑ ุงู„ู‚ูŠุงุฏุฉ ุงู„ุญุงู„ูŠ. - - - Model Stopping Point - ู†ู‚ุทุฉ ุชูˆู‚ู ุงู„ู†ู…ูˆุฐุฌ - - - Display an image on the screen where openpilot is wanting to stop. - ุนุฑุถ ุตูˆุฑุฉ ุนู„ู‰ ุงู„ุดุงุดุฉ ุญูŠุซ ูŠุฑูŠุฏ openpilot ุงู„ุชูˆู‚ู. - - - Radar Tracks - ู…ุณุงุฑุงุช ุงู„ุฑุงุฏุงุฑ - - - Display all of the radar points produced by the car's radar. - ุนุฑุถ ุฌู…ูŠุน ู†ู‚ุงุท ุงู„ุฑุงุฏุงุฑ ุงู„ุชูŠ ูŠู†ุชุฌู‡ุง ุฑุงุฏุงุฑ ุงู„ุณูŠุงุฑุฉ. - - - Driving Screen Widgets - ุนู†ุงุตุฑ ูˆุงุฌู‡ุฉ ุงู„ู‚ูŠุงุฏุฉ - - - Custom FrogPilot widgets for the driving screen. - ุนู†ุงุตุฑ ูˆุงุฌู‡ุฉ ู…ุณุชุฎุฏู… FrogPilot ุงู„ู…ุฎุตุตุฉ ู„ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. - - - Acceleration Path - ู…ุณุงุฑ ุงู„ุชุณุงุฑุน - - - Colorize the driving path based on openpilot's current desired acceleration and deceleration rate. - ู„ูˆู† ู…ุณุงุฑ ุงู„ู‚ูŠุงุฏุฉ ุจู†ุงุกู‹ ุนู„ู‰ ู…ุนุฏู„ ุงู„ุชุณุงุฑุน ูˆุงู„ุชุจุงุทุค ุงู„ุญุงู„ูŠ ุงู„ู…ุทู„ูˆุจ ู…ู† openpilot. - - - Adjacent Lanes - ุงู„ู…ุณุงุฑุงุช ุงู„ู…ุฌุงูˆุฑุฉ - - - Driving paths for the left and right adjacent lanes. - ู…ุณุงุฑุงุช ุงู„ู‚ูŠุงุฏุฉ ู„ู„ู…ุณุงุฑุงุช ุงู„ู…ุฌุงูˆุฑุฉ ุงู„ูŠุณุฑู‰ ูˆุงู„ูŠู…ู†ู‰. - - - Blind Spot Path - ู…ุณุงุฑ ุงู„ู†ู‚ุทุฉ ุงู„ุนู…ูŠุงุก - - - Display a red driving path for detected vehicles in the corresponding lane's blind spot. - ุนุฑุถ ู…ุณุงุฑ ู‚ูŠุงุฏุฉ ุฃุญู…ุฑ ู„ู„ู…ุฑูƒุจุงุช ุงู„ู…ูƒุชุดูุฉ ููŠ ุงู„ู†ู‚ุทุฉ ุงู„ุนู…ูŠุงุก ู„ู„ู…ุณุงุฑ ุงู„ู…ู‚ุงุจู„. - - - Compass - ุจูˆุตู„ุฉ - - - A compass to show the current driving direction. - ุจูˆุตู„ุฉ ู„ุนุฑุถ ุงุชุฌุงู‡ ุงู„ู‚ูŠุงุฏุฉ ุงู„ุญุงู„ูŠ. - - - Driving Personality Button - ุฒุฑ ุดุฎุตูŠุฉ ุงู„ู‚ูŠุงุฏุฉ - - - Display the current driving personality on the screen. Tap to switch personalities, or long press for 0.5 seconds to change the current state of <b>Experimental Mode</b>, or 2.5 seconds for <b>Traffic Mode</b>. - ุนุฑุถ ุงู„ุดุฎุตูŠุฉ ุงู„ู‚ูŠุงุฏูŠุฉ ุงู„ุญุงู„ูŠุฉ ุนู„ู‰ ุงู„ุดุงุดุฉ. ุงุถุบุท ู„ู„ุชุจุฏูŠู„ ุจูŠู† ุงู„ุดุฎุตูŠุงุชุŒ ุฃูˆ ุงุถุบุท ู…ุทูˆู„ุงู‹ ู„ู…ุฏุฉ 0.5 ุซุงู†ูŠุฉ ู„ุชุบูŠูŠุฑ ุงู„ุญุงู„ุฉ ุงู„ุญุงู„ูŠุฉ ู„ู€<b>ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ</b>ุŒ ุฃูˆ ู„ู…ุฏุฉ 2.5 ุซุงู†ูŠุฉ ู„ู€<b>ูˆุถุน ุงู„ู…ุฑูˆุฑ</b>. - - - Gas / Brake Pedal Indicators - ู…ุคุดุฑุงุช ุฏูˆุงุณุฉ ุงู„ูˆู‚ูˆุฏ / ุงู„ูุฑุงู…ู„ - - - Pedals to indicate when either of the pedals are currently being used.<br><br><b>Dynamic</b>: The pedals change in opacity in accordance to how much openpilot is accelerating or decelerating<br><b>Static</b>: The pedals are displayed with full opacity when active, and dimmed when not in use - ุฏูˆุงุณุงุช ู„ู„ุฅุดุงุฑุฉ ุนู†ุฏ ุงุณุชุฎุฏุงู… ุฃูŠ ู…ู† ุงู„ุฏูˆุงุณุงุช ุญุงู„ูŠู‹ุง.<br><br><b>ุฏูŠู†ุงู…ูŠูƒูŠ</b>: ุชุชุบูŠุฑ ุฏูˆุงุณุงุช ููŠ ุงู„ุดูุงููŠุฉ ูˆูู‚ู‹ุง ู„ู…ู‚ุฏุงุฑ ุชุณุงุฑุน ุฃูˆ ุชุจุงุทุค openpilot<br><b>ุซุงุจุช</b>: ุชูุนุฑุถ ุงู„ุฏูˆุงุณุงุช ุจูˆุถูˆุญ ูƒุงู…ู„ ุนู†ุฏ ุงู„ู†ุดุงุทุŒ ูˆุชูุฎูุช ุนู†ุฏ ุนุฏู… ุงู„ุงุณุชุฎุฏุงู… - - - Rotating Steering Wheel - ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ ุงู„ุฏูˆุงุฑุฉ - - - Rotate the steering wheel alongside the vehicle's physical steering wheel. - ู‚ู… ุจุชุฏูˆูŠุฑ ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ ุฌู†ุจู‹ุง ุฅู„ู‰ ุฌู†ุจ ู…ุน ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ ุงู„ูุนู„ูŠุฉ ู„ู„ู…ุฑูƒุจุฉ. - - - Model UI - ูˆุงุฌู‡ุฉ ุงู„ู…ุณุชุฎุฏู… ุงู„ู†ู…ูˆุฐุฌูŠุฉ - - - Model visualizations on the driving screen for the driving path, lane lines, path edges, and road edges. - ู†ู…ุงุฐุฌ ุงู„ุชุตูˆุฑุงุช ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ ู„ู…ุณุงุฑ ุงู„ู‚ูŠุงุฏุฉุŒ ุฎุทูˆุท ุงู„ู…ุณุงุฑุŒ ุญูˆุงู ุงู„ู…ุณุงุฑุŒ ูˆุญูˆุงู ุงู„ุทุฑูŠู‚. - - - Dynamic Path Width - ุนุฑุถ ุงู„ู…ุณุงุฑ ุงู„ุฏูŠู†ุงู…ูŠูƒูŠ - - - Adjust the width of the driving path based on the current engagement state.<br><br><b>Fully engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Fully disengaged</b>: 50% - ุถุจุท ุนุฑุถ ู…ุณุงุฑ ุงู„ู‚ูŠุงุฏุฉ ุจู†ุงุกู‹ ุนู„ู‰ ุญุงู„ุฉ ุงู„ุงุฑุชุจุงุท ุงู„ุญุงู„ูŠุฉ.<br><br><b>ู…ุฑุชุจุท ุจุงู„ูƒุงู…ู„</b>: 100%<br><b>ุงู„ุชูˆุฌูŠู‡ ุงู„ุฌุงู†ุจูŠ ุฏุงุฆู…ู‹ุง</b>: 75%<br><b>ุบูŠุฑ ู…ุฑุชุจุท ุจุงู„ูƒุงู…ู„</b>: 50% - - - Lane Lines Width - ุนุฑุถ ุฎุทูˆุท ุงู„ู…ุณุงุฑ - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 4 inches. - ุณู…ูƒ ุฎุทูˆุท ุงู„ู…ุณุงุฑ ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ.<br><br><b>ุงู„ุฅุนุฏุงุฏ ุงู„ุงูุชุฑุงุถูŠ ูŠุชูˆุงูู‚ ู…ุน ู…ุนูŠุงุฑ ุนุฑุถ ุฎุท ุงู„ู…ุณุงุฑ <b>MUTCD</b> ุงู„ุจุงู„ุบ 4 ุจูˆุตุงุช. - - - Path Edges Width - ุนุฑุถ ุญูˆุงู ุงู„ู…ุณุงุฑ - - - The width of the edges of the driving path that represent different driving modes and statuses.<br><br>Default is <b>20%</b> of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden - ุนุฑุถ ุญูˆุงู ู…ุณุงุฑ ุงู„ู‚ูŠุงุฏุฉ ุงู„ุชูŠ ุชู…ุซู„ ุฃูˆุถุงุน ุงู„ู‚ูŠุงุฏุฉ ูˆุงู„ุญุงู„ุงุช ุงู„ู…ุฎุชู„ูุฉ.<br><br>ุงู„ุงูุชุฑุงุถูŠ ู‡ูˆ <b>20%</b> ู…ู† ุนุฑุถ ุงู„ู…ุณุงุฑ ุงู„ูƒู„ูŠ.<br><br>ุฏู„ูŠู„ ุงู„ุฃู„ูˆุงู†:<br><br>- <b>ุฃุฒุฑู‚</b>: ุงู„ู…ู„ุงุญุฉ<br>- <b>ุฃุฒุฑู‚ ูุงุชุญ</b>: ุงู„ูˆุถุน ุงู„ุฌุงู†ุจูŠ ุงู„ุฏุงุฆู…<br>- <b>ุฃุฎุถุฑ</b>: ุงู„ุงูุชุฑุงุถูŠ<br>- <b>ุจุฑุชู‚ุงู„ูŠ</b>: ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ<br>- <b>ุฃุญู…ุฑ</b>: ูˆุถุน ุงู„ู…ุฑูˆุฑ<br>- <b>ุฃุตูุฑ</b>: ุชุฌุงูˆุฒ ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ ุงู„ุดุฑุทูŠ - - - Path Width - ุนุฑุถ ุงู„ู…ุณุงุฑ - - - Road Edges Width - ุนุฑุถ ุญูˆุงู ุงู„ุทุฑูŠู‚ - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 4 inches. - ุณู…ูƒ ุญูˆุงู ุงู„ุทุฑูŠู‚ ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ.<br><br><b>ุงู„ุฅุนุฏุงุฏ ุงู„ุงูุชุฑุงุถูŠ ูŠุทุงุจู‚ ู†ุตู ู…ุนูŠุงุฑ ุนุฑุถ ุฎุท ุงู„ุญุงุฑุฉ ููŠ <b>MUTCD</b> ุงู„ุจุงู„ุบ 4 ุจูˆุตุงุช. - - - "Unlimited" Road UI - ูˆุงุฌู‡ุฉ ุทุฑูŠู‚ "ุบูŠุฑ ู…ุญุฏูˆุฏ" - - - Extend the display of the driving path, lane lines, and road edges as far as the model can see. - ู‚ู… ุจุชู…ุฏูŠุฏ ุนุฑุถ ู…ุณุงุฑ ุงู„ู‚ูŠุงุฏุฉุŒ ูˆุฎุทูˆุท ุงู„ุญุงุฑุฉุŒ ูˆุญูˆุงู ุงู„ุทุฑูŠู‚ ุจู‚ุฏุฑ ู…ุง ูŠู…ูƒู† ู„ู„ู†ู…ูˆุฐุฌ ุฑุคูŠุชู‡. - - - Navigation Widgets - ุนู†ุงุตุฑ ูˆุงุฌู‡ุฉ ุงู„ุชู†ู‚ู„ - - - Map style tweaks, speed limits, and other navigation related widgets. - ุชุนุฏูŠู„ุงุช ู†ู…ุท ุงู„ุฎุฑูŠุทุฉุŒ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉุŒ ูˆุนู†ุงุตุฑ ูˆุงุฌู‡ุฉ ุงู„ู…ุณุชุฎุฏู… ุงู„ุฃุฎุฑู‰ ุงู„ู…ุชุนู„ู‚ุฉ ุจุงู„ู…ู„ุงุญุฉ. - - - Larger Map Display - ุนุฑุถ ุฎุฑูŠุทุฉ ุฃูƒุจุฑ - - - Increase the size of the map for easier navigation readings. - ุฒูŠุงุฏุฉ ุญุฌู… ุงู„ุฎุฑูŠุทุฉ ู„ุชุณู‡ูŠู„ ู‚ุฑุงุกุฉ ุงู„ุชู†ู‚ู„. - - - Map Style - ู†ู…ุท ุงู„ุฎุฑูŠุทุฉ - - - The map style used for <b>Navigate on openpilot (NOO)</b>:<br><br><b>Stock</b>: Default comma.ai style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>mike854's (Satellite hybrid)</b>: Customized hybrid satellite view - Translation B - - - Road Name - ุงุณู… ุงู„ุทุฑูŠู‚ - - - Display the road name at the bottom of the driving screen using data from <b>OpenStreetMap</b>. - ุงุนุฑุถ ุงุณู… ุงู„ุทุฑูŠู‚ ููŠ ุฃุณูู„ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ ุจุงุณุชุฎุฏุงู… ุจูŠุงู†ุงุช ู…ู† <b>OpenStreetMap</b>. - - - Show Speed Limits - ุนุฑุถ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ - - - Display speed limits in the top left corner of the driving screen. Uses data from your car's dashboard (if supported) and data from <b>OpenStreetMaps</b>. - ุนุฑุถ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ููŠ ุงู„ุฒุงูˆูŠุฉ ุงู„ุนู„ูˆูŠุฉ ุงู„ูŠุณุฑู‰ ู…ู† ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. ูŠุณุชุฎุฏู… ุงู„ุจูŠุงู†ุงุช ู…ู† ู„ูˆุญุฉ ุงู„ู‚ูŠุงุฏุฉ ููŠ ุณูŠุงุฑุชูƒ (ุฅุฐุง ูƒุงู†ุช ู…ุฏุนูˆู…ุฉ) ูˆุงู„ุจูŠุงู†ุงุช ู…ู† <b>OpenStreetMaps</b>. - - - Show Speed Limits from Mapbox - ุนุฑุถ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ู…ู† Mapbox - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - ุงุณุชุฎุฏู… ุจูŠุงู†ุงุช ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ู…ู† <b>Mapbox</b> ุนู†ุฏู…ุง ู„ุง ุชุชูˆูุฑ ู…ุตุงุฏุฑ ุฃุฎุฑู‰. - - - Use Vienna-Style Speed Signs - ุงุณุชุฎุฏู… ู„ุงูุชุงุช ุงู„ุณุฑุนุฉ ุนู„ู‰ ุงู„ุทุฑุงุฒ ุงู„ููŠูŠู†ู‘ูŠ - - - Force <b>Vienna-style (EU)</b> speed limit signs instead of <b>MUTCD (US)</b>. - ูุฑุถ ู„ุงูุชุงุช ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุนู„ู‰ ุทุฑุงุฒ ููŠูŠู†ุง (ุงู„ุงุชุญุงุฏ ุงู„ุฃูˆุฑูˆุจูŠ) ุจุฏู„ุงู‹ ู…ู† MUTCD (ุงู„ูˆู„ุงูŠุงุช ุงู„ู…ุชุญุฏุฉ). - - - Quality of Life - ุฌูˆุฏุฉ ุงู„ุญูŠุงุฉ - - - Visual features to improve your overall openpilot experience. - ู…ูŠุฒุงุช ุจุตุฑูŠุฉ ู„ุชุญุณูŠู† ุชุฌุฑุจุชูƒ ุงู„ุนุงู…ุฉ ู…ุน openpilot. - - - Camera View - ุนุฑุถ ุงู„ูƒุงู…ูŠุฑุง - - - The active camera view display. This is purely a visual change and doesn't impact how openpilot drives! - ุนุฑุถ ุงู„ูƒุงู…ูŠุฑุง ุงู„ู†ุดุทุฉ. ู‡ุฐุง ุชุบูŠูŠุฑ ุจุตุฑูŠ ุจุญุช ูˆู„ุง ูŠุคุซุฑ ุนู„ู‰ ูƒูŠููŠุฉ ู‚ูŠุงุฏุฉ openpilot! - - - Show Driver Camera When In Reverse - ุนุฑุถ ูƒุงู…ูŠุฑุง ุงู„ุณุงุฆู‚ ุนู†ุฏ ุงู„ุฑุฌูˆุน ู„ู„ุฎู„ู - - - Display the driver camera feed when the vehicle is in reverse. - ุนุฑุถ ุชุบุฐูŠุฉ ูƒุงู…ูŠุฑุง ุงู„ุณุงุฆู‚ ุนู†ุฏู…ุง ุชูƒูˆู† ุงู„ุณูŠุงุฑุฉ ููŠ ูˆุถุน ุงู„ุฑุฌูˆุน. - - - Standby Mode - ูˆุถุน ุงู„ุงุณุชุนุฏุงุฏ - - - Turn the screen off when driving and automatically wake it up if engagement state changes or important alerts occur. - ู‚ู… ุจุฅูŠู‚ุงู ุชุดุบูŠู„ ุงู„ุดุงุดุฉ ุนู†ุฏ ุงู„ู‚ูŠุงุฏุฉ ูˆุฃุนุฏ ุชุดุบูŠู„ู‡ุง ุชู„ู‚ุงุฆูŠู‹ุง ุฅุฐุง ุชุบูŠุฑุช ุญุงู„ุฉ ุงู„ุชูุงุนู„ ุฃูˆ ุญุฏุซุช ุชู†ุจูŠู‡ุงุช ู…ู‡ู…ุฉ. - - - Stopped Timer - ู…ุคู‚ุช ู…ุชูˆู‚ู - - - Replace the current speed with a timer when stopped to indicate how long the vehicle has been stopped for. - ุงุณุชุจุฏู„ ุงู„ุณุฑุนุฉ ุงู„ุญุงู„ูŠุฉ ุจู…ุคู‚ุช ุนู†ุฏ ุงู„ุชูˆู‚ู ู„ู„ุฅุดุงุฑุฉ ุฅู„ู‰ ู…ุฏุฉ ุชูˆู‚ู ุงู„ู…ุฑูƒุจุฉ. - - - Blind Spot - ุงู„ู†ู‚ุทุฉ ุงู„ุนู…ูŠุงุก - - - Steering Torque - ุนุฒู… ุงู„ุชูˆุฌูŠู‡ - - - Turn Signal - ุฅุดุงุฑุฉ ุงู„ุงู†ุนุทุงู - - - Fahrenheit - ูู‡ุฑู†ู‡ุงูŠุช - - - CPU - CPU - - - GPU - GPU - - - IP - IP - - - RAM - RAM - - - SSD Left - SSD ุงู„ู…ุชุจู‚ูŠ - - - SSD Used - ุงุณุชุฎุฏุงู… SSD - - - None - ู„ุง ุดูŠุก - - - Acceleration: Current - ุงู„ุชุณุงุฑุน: ุงู„ุญุงู„ูŠ - - - Acceleration: Max - ุงู„ุชุณุงุฑุน: ู…ุงูƒุณ - - - Auto Tune: Actuator Delay - ุถุจุท ุชู„ู‚ุงุฆูŠ: ุชุฃุฎูŠุฑ ุงู„ู…ุดุบู„ - - - Auto Tune: Friction - ุชุนุฏูŠู„ ุชู„ู‚ุงุฆูŠ: ุงุญุชูƒุงูƒ - - - Auto Tune: Lateral Acceleration - ุงู„ุถุจุท ุงู„ุชู„ู‚ุงุฆูŠ: ุงู„ุชุณุงุฑุน ุงู„ุฌุงู†ุจูŠ - - - Auto Tune: Steer Ratio - ู†ุณุจุฉ ุงู„ุชูˆุฌูŠู‡: ุถุจุท ุชู„ู‚ุงุฆูŠ - - - Auto Tune: Stiffness Factor - ุงู„ุชู†ุบูŠู… ุงู„ุชู„ู‚ุงุฆูŠ: ุนุงู…ู„ ุงู„ุตู„ุงุจุฉ - - - Engagement %: Lateral - ุงู„ู…ุดุงุฑูƒุฉ %: ุฌุงู†ุจูŠ - - - Engagement %: Longitudinal - ุงู„ู…ุดุงุฑูƒุฉ %: ุทูˆู„ูŠุฉ - - - Lateral Control: Steering Angle - ุงู„ุชุญูƒู… ุงู„ุฌุงู†ุจูŠ: ุฒุงูˆูŠุฉ ุงู„ุชูˆุฌูŠู‡ - - - Lateral Control: Torque % Used - ุงู„ุชุญูƒู… ุงู„ุฌุงู†ุจูŠ: ุนุฒู… ุงู„ุฏูˆุฑุงู† % ุงู„ู…ุณุชุฎุฏู… - - - Longitudinal Control: Actuator Acceleration Output - ุงู„ุชุญูƒู… ุงู„ุทูˆู„ูŠ: ุฎุฑุฌ ุชุณุงุฑุน ุงู„ู…ุดุบู„ - - - Longitudinal MPC Jerk: Acceleration - ุงู„ุทูˆู„ูŠุฉ MPC Jerk: ุงู„ุชุณุงุฑุน - - - Longitudinal MPC Jerk: Danger Zone - ุงู„ู…ู†ุทู‚ุฉ ุงู„ุฎุทุฑุฉ ู„ุชุณุงุฑุน MPC ุงู„ุทูˆู„ูŠ - - - Longitudinal MPC Jerk: Speed Control - ุงู„ุชุญูƒู… ููŠ ุงู„ุณุฑุนุฉ ุจุงุณุชุฎุฏุงู… MPC ุงู„ุทูˆู„ูŠ: ุงู„ุงุฑุชุฌุงุฌ - - - SELECT - SELECT - - - Select a metric to display - ุงุฎุชุฑ ู…ู‚ูŠุงุณู‹ุง ู„ุนุฑุถู‡ - - - Show Distance - ุนุฑุถ ุงู„ู…ุณุงูุฉ - - - Dynamic - ุฏูŠู†ุงู…ูŠูƒูŠ - - - Static - ุซุงุจุช - - - inches - ุจูˆุตุงุช - - - Off - ุฅูŠู‚ุงู - - - feet - ุฃู‚ุฏุงู… - - - Full Map - ุฎุฑูŠุทุฉ ูƒุงู…ู„ุฉ - - - Stock openpilot - ุงู„ู…ุฎุฒูˆู† ุงู„ู…ูุชูˆุญ ู„ู„ุทูŠุงุฑ ุงู„ุขู„ูŠ - - - FrogsGoMoo's Personalized Style - ุฃุณู„ูˆุจ FrogsGoMoo ุงู„ุดุฎุตูŠ - - - Mapbox Streets - Mapbox Streets - - - Mapbox Outdoors - Mapbox Outdoors - - - Mapbox Light - Mapbox Light - - - Mapbox Dark - Mapbox Dark - - - Mapbox Navigation Day - ูŠูˆู… ุงู„ู…ู„ุงุญุฉ ููŠ Mapbox - - - Mapbox Navigation Night - ู…ู„ุงุญุฉ ู…ุงุจ ุจูˆูƒุณ ุงู„ู„ูŠู„ูŠุฉ - - - Mapbox Satellite - Mapbox Satellite - - - Mapbox Satellite Streets - ุดูˆุงุฑุน ุงู„ุฃู‚ู…ุงุฑ ุงู„ุตู†ุงุนูŠุฉ ู…ู† Mapbox - - - Mapbox Traffic Night - ุฎุฑูŠุทุฉ ุญุฑูƒุฉ ุงู„ู…ุฑูˆุฑ ุงู„ู„ูŠู„ูŠุฉ - - - Mike's Personalized Style - ุฃุณู„ูˆุจ ู…ุงูŠูƒ ุงู„ุดุฎุตูŠ - - - Select a map style - ุงุฎุชุฑ ู†ู…ุท ุงู„ุฎุฑูŠุทุฉ - - - Auto - ุชู„ู‚ุงุฆูŠ - - - Driver - ุณุงุฆู‚ - - - Standard - ู‚ูŠุงุณูŠ - - - Wide - ูˆุงุณุน - - - foot - ู‚ุฏู… - - - inch - ุจูˆุตุฉ - - - meter - ู…ุชุฑ - - - meters - ู…ุชุฑ - - - centimeter - ุณู†ุชูŠู…ุชุฑ - - - centimeters - ุณู†ุชูŠู…ุชุฑุงุช - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 10 centimeters. - ุณู…ูƒ ุฎุทูˆุท ุงู„ู…ุณุงุฑ ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ.<br><br><b>ุงู„ุฅุนุฏุงุฏ ุงู„ุงูุชุฑุงุถูŠ ูŠุชูˆุงูู‚ ู…ุน ู…ุนูŠุงุฑ ุนุฑุถ ุฎุทูˆุท ุงู„ู…ุณุงุฑ <b>MUTCD</b> ุงู„ุจุงู„ุบ 10 ุณู†ุชูŠู…ุชุฑุงุช. - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 10 centimeters. - ุณู…ูƒ ุญูˆุงู ุงู„ุทุฑูŠู‚ ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ.<br><br><b>ุงู„ุฅุนุฏุงุฏ ุงู„ุงูุชุฑุงุถูŠ ูŠุทุงุจู‚ ู†ุตู ุนุฑุถ ุฎุท ุงู„ู…ุณุงุฑ ุงู„ู‚ูŠุงุณูŠ ู„ู€ <b>MUTCD</b> ุงู„ุจุงู„ุบ 10 ุณู†ุชูŠู…ุชุฑุงุช. + <b>Show a numerical temperature in the sidebar</b> instead of the status labels. + <b>ุนุฑุถ ุฏุฑุฌุฉ ุญุฑุงุฑุฉ ุฑู‚ู…ูŠุฉ ููŠ ุงู„ุดุฑูŠุท ุงู„ุฌุงู†ุจูŠ</b> ุจุฏู„ู‹ุง ู…ู† ุชุณู…ูŠุงุช ุงู„ุญุงู„ุฉ. Sidebar Metrics - ู…ู‚ุงูŠูŠุณ ุงู„ุดุฑูŠุท ุงู„ุฌุงู†ุจูŠ + ู…ู‚ุงูŠูŠุณ ุงู„ุดุฑูŠุท ุงู„ุฌุงู†ุจูŠ - The width of the driving path on the driving screen.<br><br>Default <b>(6.1 feet)</b> matches the width of a <b>2019 Lexus ES 350</b>. - ุนุฑุถ ู…ุณุงุฑ ุงู„ู‚ูŠุงุฏุฉ ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ.<br><br>ุงู„ุงูุชุฑุงุถูŠ <b>(6.1 ู‚ุฏู…)</b> ูŠุชุทุงุจู‚ ู…ุน ุนุฑุถ <b>ู„ูƒุฒุณ ES 350 2019</b>. + <b>Display system information</b> (CPU, GPU, RAM usage, IP address, device storage) in the sidebar. + <b>ุนุฑุถ ู…ุนู„ูˆู…ุงุช ุงู„ู†ุธุงู…</b> (ุงุณุชุฎุฏุงู… CPU ูˆGPU ูˆRAMุŒ ุนู†ูˆุงู† IPุŒ ุชุฎุฒูŠู† ุงู„ุฌู‡ุงุฒ) ููŠ ุงู„ุดุฑูŠุท ุงู„ุฌุงู†ุจูŠ. - The width of the driving path on the driving screen.<br><br>Default <b>(1.9 meters)</b> matches the width of a <b>2019 Lexus ES 350</b>. - ุนุฑุถ ู…ุณุงุฑ ุงู„ู‚ูŠุงุฏุฉ ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ.<br><br>ุงู„ุงูุชุฑุงุถูŠ <b>(1.9 ู…ุชุฑ)</b> ูŠุชุทุงุจู‚ ู…ุน ุนุฑุถ <b>ู„ูƒุฒุณ ES 350 2019</b>. + Use International System of Units + ุงุณุชุฎุฏู… ุงู„ู†ุธุงู… ุงู„ุฏูˆู„ูŠ ู„ู„ูˆุญุฏุงุช + + + <b>Display measurements using the "International System of Units" (SI)</b> standard. + <b>ุนุฑุถ ุงู„ู‚ูŠุงุณุงุช ุจุงุณุชุฎุฏุงู… ู…ุนูŠุงุฑ "ุงู„ู†ุธุงู… ุงู„ุฏูˆู„ูŠ ู„ู„ูˆุญุฏุงุช" (SI)</b> + + + Developer Sidebar + ุงู„ุดุฑูŠุท ุงู„ุฌุงู†ุจูŠ ู„ู„ู…ุทูˆุฑ + + + <b>Display debugging info and metrics</b> in a dedicated sidebar on the right side of the screen. + <b>ุงุนุฑุถ ู…ุนู„ูˆู…ุงุช ุชุตุญูŠุญ ุงู„ุฃุฎุทุงุก ูˆุงู„ู‚ูŠุงุณุงุช</b> ููŠ ุดุฑูŠุท ุฌุงู†ุจูŠ ู…ุฎุตุต ุนู„ู‰ ุงู„ุฌุงู†ุจ ุงู„ุฃูŠู…ู† ู…ู† ุงู„ุดุงุดุฉ. + + + Metric #1 + ุงู„ู…ูŠุชุฑูŠูƒ ุฑู‚ู… 1 + + + <b>Select the metric shown in the first "Developer Sidebar" widget.</b> + <b>ุงุฎุชุฑ ุงู„ู…ู‚ูŠุงุณ ุงู„ู…ุนุฑูˆุถ ููŠ ุฃูˆู„ ุฃุฏุงุฉ "Developer Sidebar".</b> + + + Metric #2 + ุงู„ู…ู‚ูŠุงุณ ุฑู‚ู… 2 + + + <b>Select the metric shown in the second "Developer Sidebar" widget.</b> + <b>ุงุฎุชุฑ ุงู„ู…ู‚ูŠุงุณ ุงู„ู…ุนุฑูˆุถ ููŠ ุนู†ุตุฑ ูˆุงุฌู‡ุฉ ุงู„ู…ุณุชุฎุฏู… ุงู„ุซุงู†ูŠ "Developer Sidebar".</b> + + + Metric #3 + ุงู„ู…ู‚ูŠุงุณ #3 + + + <b>Select the metric shown in the third "Developer Sidebar" widget.</b> + <b>ุญุฏู‘ุฏ ุงู„ู…ู‚ูŠุงุณ ุงู„ู…ุนุฑูˆุถ ููŠ ุนู†ุตุฑ ูˆุงุฌู‡ุฉ ุงู„ู…ุณุชุฎุฏู… ุงู„ุซุงู„ุซ "Developer Sidebar".</b> + + + Metric #4 + ุงู„ู…ู‚ูŠุงุณ ุฑู‚ู… 4 + + + <b>Select the metric shown in the fourth "Developer Sidebar" widget.</b> + <b>ุงุฎุชุฑ ุงู„ู…ู‚ูŠุงุณ ุงู„ู…ุนุฑูˆุถ ููŠ ุนู†ุตุฑ ูˆุงุฌู‡ุฉ ู…ุณุชุฎุฏู… "Developer Sidebar" ุงู„ุฑุงุจุน.</b> + + + Metric #5 + ุงู„ู…ูŠุชุฑูŠูƒ ุฑู‚ู… #5 + + + <b>Select the metric shown in the fifth "Developer Sidebar" widget.</b> + <b>ุงุฎุชุฑ ุงู„ู…ู‚ูŠุงุณ ุงู„ุธุงู‡ุฑ ููŠ ุงู„ุฃุฏุงุฉ ุงู„ุฎุงู…ุณุฉ "Developer Sidebar".</b> + + + Metric #6 + ุงู„ู…ู‚ูŠุงุณ ุฑู‚ู… 6 + + + <b>Select the metric shown in the sixth "Developer Sidebar" widget.</b> + <b>ุญุฏุฏ ุงู„ู…ู‚ูŠุงุณ ุงู„ู…ุนุฑูˆุถ ููŠ ุฃุฏุงุฉ "Developer Sidebar" ุงู„ุณุงุฏุณุฉ.</b> + + + Metric #7 + ุงู„ู…ูŠุชุฑูŠูƒ ุฑู‚ู… #7 + + + <b>Select the metric shown in the seventh "Developer Sidebar" widget.</b> + <b>ุญุฏุฏ ุงู„ู…ู‚ูŠุงุณ ุงู„ู…ุนุฑูˆุถ ููŠ ุงู„ุฃุฏุงุฉ ุงู„ุณุงุจุนุฉ "Developer Sidebar".</b> + + + Developer Widgets + ุนู†ุงุตุฑ ุงู„ู…ุทูˆู‘ุฑ + + + <b>Overlays for debugging visuals, internal states, and model predictions</b> on the driving screen. + <b>ุทุจู‚ุงุช ููˆู‚ูŠุฉ ู„ุนุฑุถ ุชุตุญูŠุญ ุงู„ุชุตูˆุฑุงุช ูˆุงู„ุญุงู„ุงุช ุงู„ุฏุงุฎู„ูŠุฉ ูˆุชู†ุจุคุงุช ุงู„ู†ู…ูˆุฐุฌ</b> ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. + + + Adjacent Leads Tracking + ุชุชุจุน ุงู„ู…ุฑูƒุจุงุช ุงู„ุฃู…ุงู…ูŠุฉ ุงู„ู…ุฌุงูˆุฑุฉ + + + <b>Display adjacent leads detected by the car's radar</b> to the left and right of the current driving path. + <b>ุงุนุฑุถ ุงู„ู…ุฑูƒุจุงุช ุงู„ู…ุฌุงูˆุฑุฉ ุงู„ุชูŠ ูŠูƒุชุดูู‡ุง ุฑุงุฏุงุฑ ุงู„ุณูŠุงุฑุฉ</b> ุนู„ู‰ ูŠุณุงุฑ ูˆูŠู…ูŠู† ู…ุณุงุฑ ุงู„ู‚ูŠุงุฏุฉ ุงู„ุญุงู„ูŠ. + + + Model Stopping Point + ู†ู‚ุทุฉ ุชูˆู‚ู‘ู ุงู„ู†ู…ูˆุฐุฌ + + + <b>Show a stop-sign marker where the model intends to stop.</b> + <b>ุงุนุฑุถ ุนู„ุงู…ุฉ ุฅูŠู‚ุงู ุญูŠุซ ูŠุนุชุฒู… ุงู„ู†ู…ูˆุฐุฌ ุงู„ุชูˆู‚ู.</b> + + + Radar Tracks + ู…ุณุงุฑุงุช ุงู„ุฑุงุฏุงุฑ + + + <b>Display all radar points</b> produced by the car's radar. + <b>ุนุฑุถ ุฌู…ูŠุน ู†ู‚ุงุท ุงู„ุฑุงุฏุงุฑ</b> ุงู„ุชูŠ ูŠู†ุชุฌู‡ุง ุฑุงุฏุงุฑ ุงู„ุณูŠุงุฑุฉ. + + + Driving Screen Widgets + ุนู†ุงุตุฑ ูˆุงุฌู‡ุฉ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ + + + <b>Custom FrogPilot widgets</b> for the driving screen. + <b>ุนู†ุงุตุฑ FrogPilot ุงู„ู…ุฎุตุตุฉ</b> ู„ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. + + + Acceleration Path + ู…ุณุงุฑ ุงู„ุชุณุงุฑุน + + + <b>Color the driving path by planned acceleration and braking.</b> + <b>ู„ูˆู‘ู† ู…ุณุงุฑ ุงู„ู‚ูŠุงุฏุฉ ูˆูู‚ ุงู„ุชุณุงุฑุน ูˆุงู„ุชุจุงุทุค ุงู„ู…ุฎุทุทูŠู†.</b> + + + Adjacent Lanes + ุงู„ู…ุณุงุฑุงุช ุงู„ู…ุฌุงูˆุฑุฉ + + + <b>Show the driving paths for the left and right lanes.</b> + <b>ุงุนุฑุถ ู…ุณุงุฑุงุช ุงู„ู‚ูŠุงุฏุฉ ู„ู„ู…ุณุงุฑูŠู† ุงู„ุฃูŠุณุฑ ูˆุงู„ุฃูŠู…ู†.</b> + + + Blind Spot Path + ู…ุณุงุฑ ุงู„ู†ู‚ุทุฉ ุงู„ุนู…ูŠุงุก + + + <b>Show a red path when a vehicle is in that lane's blind spot.</b> + <b>ุงุนุฑุถ ู…ุณุงุฑู‹ุง ุฃุญู…ุฑ ุนู†ุฏู…ุง ุชูƒูˆู† ู…ุฑูƒุจุฉ ููŠ ุงู„ู†ู‚ุทุฉ ุงู„ุนู…ูŠุงุก ู„ุฐู„ูƒ ุงู„ู…ุณุงุฑ.</b> + + + Compass + ุจูˆุตู„ุฉ + + + <b>Show the current driving direction</b> with a simple on-screen compass. + <b>ุงุนุฑุถ ุงุชุฌุงู‡ ุงู„ู‚ูŠุงุฏุฉ ุงู„ุญุงู„ูŠ</b> ุจุงุณุชุฎุฏุงู… ุจูˆุตู„ุฉ ุจุณูŠุทุฉ ุนู„ู‰ ุงู„ุดุงุดุฉ. + + + Driving Personality Button + ุฒุฑ ุดุฎุตูŠุฉ ุงู„ู‚ูŠุงุฏุฉ + + + <b>Control and view the current driving personality</b> via a driving screen widget. + <b>ุชุญูƒู… ูˆุงุนุฑุถ ุดุฎุตูŠุฉ ุงู„ู‚ูŠุงุฏุฉ ุงู„ุญุงู„ูŠุฉ</b> ุนุจุฑ ุฃุฏุงุฉ ูˆุงุฌู‡ุฉ ุนู„ู‰ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. + + + Gas / Brake Pedal Indicators + ู…ุคุดุฑุงุช ุฏูˆุงุณุฉ ุงู„ูˆู‚ูˆุฏ/ุงู„ูุฑุงู…ู„ + + + <b>On-screen gas and brake indicators.</b><br><br><b>Dynamic</b>: Opacity changes according to how much openpilot is accelerating or braking<br><b>Static</b>: Full when active, dim when not + <b>ู…ุคุดุฑุงุช ุงู„ูˆู‚ูˆุฏ ูˆุงู„ูุฑุงู…ู„ ุนู„ู‰ ุงู„ุดุงุดุฉ.</b><br><br><b>ุฏูŠู†ุงู…ูŠูƒูŠ</b>: ุชุชุบูŠุฑ ุงู„ุนุชู…ุฉ ูˆูู‚ู‹ุง ู„ู…ู‚ุฏุงุฑ ุชุณุงุฑุน openpilot ุฃูˆ ูƒุจุญู‡<br><b>ุซุงุจุช</b>: ูƒุงู…ู„ุฉ ุนู†ุฏ ุงู„ุชูุนูŠู„ุŒ ูˆุฎุงูุชุฉ ุนู†ุฏ ุนุฏู…ู‡ + + + Rotating Steering Wheel + ุชุฏูˆูŠุฑ ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ + + + <b>Rotate the driving screen wheel</b> with the physical steering wheel. + <b>ู„ูู‘ ุนุฌู„ุฉ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ</b> ุจุงุณุชุฎุฏุงู… ุนุฌู„ุฉ ุงู„ู‚ูŠุงุฏุฉ ุงู„ูุนู„ูŠุฉ. + + + Model UI + ูˆุงุฌู‡ุฉ ุงู„ู†ู…ูˆุฐุฌ + + + <b>Model visualizations</b> for the driving path, lane lines, path edges, and road edges. + <b>ุชุตูˆูŠุฑุงุช ุงู„ู†ู…ูˆุฐุฌ</b> ู„ู…ุณุงุฑ ุงู„ู‚ูŠุงุฏุฉุŒ ูˆุฎุทูˆุท ุงู„ู…ุณุงุฑุŒ ูˆุญูˆุงู ุงู„ู…ุณุงุฑุŒ ูˆุญูˆุงู ุงู„ุทุฑูŠู‚. + + + Dynamic Path Width + ุนุฑุถ ุงู„ู…ุณุงุฑ ุงู„ุฏูŠู†ุงู…ูŠูƒูŠ + + + <b>Change the path width based on engagement.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% + <b>ุบูŠู‘ุฑ ุนุฑุถ ุงู„ู…ุณุงุฑ ุจู†ุงุกู‹ ุนู„ู‰ ุญุงู„ุฉ ุงู„ุชูุนูŠู„.</b><br><br><b>ู…ูุนู‘ู„ ุจุงู„ูƒุงู…ู„</b>: 100%<br><b>ุชูุนูŠู„ ุฌุงู†ุจูŠ ุฏุงุฆู…</b>: 75%<br><b>ุบูŠุฑ ู…ูุนู‘ู„</b>: 50% + + + Lane Lines Width + ุนุฑุถ ุฎุทูˆุท ุงู„ู…ุณุงุฑ + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 4 inches. + <b>ุงุถุจุท ุณู…ุงูƒุฉ ุฎุท ุงู„ู…ุณุงุฑ.</b><br><br>ุงู„ุฅุนุฏุงุฏ ุงู„ุงูุชุฑุงุถูŠ ูŠุทุงุจู‚ ู…ุนูŠุงุฑ ุนุฑุถ ุฎุท ุงู„ู…ุณุงุฑ ููŠ MUTCD ุงู„ุจุงู„ุบ 4 ุจูˆุตุงุช. + + + Path Edges Width + ุนุฑุถ ุญูˆุงู ุงู„ู…ุณุงุฑ + + + <b>Set the driving-path edge width</b> that represents different driving modes and statuses.<br><br>Default is 20% of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + <b>ุนูŠู‘ู† ุนุฑุถ ุญุงูุฉ ู…ุณุงุฑ ุงู„ู‚ูŠุงุฏุฉ</b> ุงู„ุฐูŠ ูŠู…ุซู„ ุฃูˆุถุงุน ุงู„ู‚ูŠุงุฏุฉ ูˆุงู„ุญุงู„ุงุช ุงู„ู…ุฎุชู„ูุฉ.<br><br>ุงู„ุฅุนุฏุงุฏ ุงู„ุงูุชุฑุงุถูŠ ู‡ูˆ 20% ู…ู† ุฅุฌู…ุงู„ูŠ ุนุฑุถ ุงู„ู…ุณุงุฑ.<br><br>ุฏู„ูŠู„ ุงู„ุฃู„ูˆุงู†:<br><br>- <b>ุฃุฒุฑู‚</b>: ุงู„ู…ู„ุงุญุฉ<br>- <b>ุฃุฒุฑู‚ ูุงุชุญ</b>: ุงู„ุชูˆุฌูŠู‡ ุงู„ุฌุงู†ุจูŠ ุฏุงุฆู… ุงู„ุชุดุบูŠู„<br>- <b>ุฃุฎุถุฑ</b>: ุงูุชุฑุงุถูŠ<br>- <b>ุจุฑุชู‚ุงู„ูŠ</b>: ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ<br>- <b>ุฃุญู…ุฑ</b>: ูˆุถุน ุงู„ู…ุฑูˆุฑ<br>- <b>ุฃุตูุฑ</b>: ุชู… ุชุฌุงูˆุฒ ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ ุงู„ุดุฑุทูŠ + + + Path Width + ุนุฑุถ ุงู„ู…ุณุงุฑ + + + <b>Set the driving-path width.</b><br><br>Default (6.1 feet) matches the width of a 2019 Lexus ES 350. + <b>ุงุถุจุท ุนุฑุถ ู…ุณุงุฑ ุงู„ู‚ูŠุงุฏุฉ.</b><br><br>ุงู„ุงูุชุฑุงุถูŠ (6.1 ู‚ุฏู…) ูŠุทุงุจู‚ ุนุฑุถ ุณูŠุงุฑุฉ Lexus ES 350 ุทุฑุงุฒ 2019. + + + Road Edges Width + ุนุฑุถ ุญูˆุงู ุงู„ุทุฑูŠู‚ + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 4 inches. + <b>ุงุถุจุท ุณูู…ูƒ ุญุงูุฉ ุงู„ุทุฑูŠู‚.</b><br><br>ุงู„ุฅุนุฏุงุฏ ุงู„ุงูุชุฑุงุถูŠ ูŠุทุงุจู‚ ู†ุตู ู…ุนูŠุงุฑ MUTCD ู„ุนุฑุถ ุฎุท ุงู„ู…ุณุงุฑ ูˆู‡ูˆ 4 ุจูˆุตุงุช. + + + "Unlimited" Road UI + ูˆุงุฌู‡ุฉ ุงู„ุทุฑูŠู‚ "ุบูŠุฑ ู…ุญุฏูˆุฏุฉ" + + + <b>Extend the length of the driving path, lane lines, and road edges</b> for as far as the model can see. + <b>ู…ุฏู‘ ุทูˆู„ ู…ุณุงุฑ ุงู„ู‚ูŠุงุฏุฉุŒ ูˆุฎุทูˆุท ุงู„ู…ุณุงุฑุŒ ูˆุญูˆุงู ุงู„ุทุฑูŠู‚</b> ู„ู…ุณุงูุฉ ุจู‚ุฏุฑ ู…ุง ูŠุณุชุทูŠุน ุงู„ู†ู…ูˆุฐุฌ ุฑุคูŠุชู‡. + + + Navigation Widgets + ุนู†ุงุตุฑ ูˆุงุฌู‡ุฉ ุงู„ู…ู„ุงุญุฉ + + + <b>Map style, speed limits, and other navigation widgets.</b> + <b>ู†ู…ุท ุงู„ุฎุฑูŠุทุฉุŒ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉุŒ ูˆุนู†ุงุตุฑ ุงู„ุชู†ู‚ู„ ุงู„ุฃุฎุฑู‰.</b> + + + Larger Map Display + ุนุฑุถ ุฎุฑูŠุทุฉ ุฃูƒุจุฑ + + + <b>Increase the map size</b> for easier navigation readings. + <b>ูƒุจู‘ุฑ ุญุฌู… ุงู„ุฎุฑูŠุทุฉ</b> ู„ู‚ุฑุงุกุฉ ุฃุณู‡ู„ ู„ุจูŠุงู†ุงุช ุงู„ู…ู„ุงุญุฉ. + + + Map Style + ู†ู…ุท ุงู„ุฎุฑูŠุทุฉ + + + <b>Select the map style</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai style<br><b>FrogPilot</b>: Official FrogPilot map style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>Mike's Personalized Style</b>: Customized hybrid satellite view + <b>ุงุฎุชุฑ ู†ู…ุท ุงู„ุฎุฑูŠุทุฉ</b> ู„ู…ูŠุฒุฉ "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: ู†ู…ุท comma.ai ุงู„ุงูุชุฑุงุถูŠ<br><b>FrogPilot</b>: ุงู„ู†ู…ุท ุงู„ุฑุณู…ูŠ ู„ุฎุฑูŠุทุฉ FrogPilot<br><b>Mapbox Streets</b>: ุนุฑุถ ู‚ูŠุงุณูŠ ูŠุฑูƒุฒ ุนู„ู‰ ุงู„ุดูˆุงุฑุน<br><b>Mapbox Outdoors</b>: ูŠุจุฑุฒ ุงู„ู…ูŠุฒุงุช ุงู„ุฎุงุฑุฌูŠุฉ ูˆุงู„ุชุถุงุฑูŠุณ<br><b>Mapbox Light</b>: ุณู…ุฉ ุจุณูŠุทุฉ ูˆู…ุถูŠุฆุฉ<br><b>Mapbox Dark</b>: ุณู…ุฉ ุจุณูŠุทุฉ ูˆู…ุธู„ู…ุฉ<br><b>Mapbox Navigation Day</b>: ู…ูุญุณู‘ู† ู„ู„ู…ู„ุงุญุฉ ู†ู‡ุงุฑู‹ุง<br><b>Mapbox Navigation Night</b>: ู…ูุญุณู‘ู† ู„ู„ู…ู„ุงุญุฉ ู„ูŠู„ู‹ุง<br><b>Mapbox Satellite</b>: ุตูˆุฑ ุฃู‚ู…ุงุฑ ุตู†ุงุนูŠุฉ ูู‚ุท<br><b>Mapbox Satellite Streets</b>: ุตูˆุฑ ุฃู‚ู…ุงุฑ ุตู†ุงุนูŠุฉ ู‡ุฌูŠู†ุฉ ู…ุน ุชุณู…ูŠุงุช ุงู„ุดูˆุงุฑุน<br><b>Mapbox Traffic Night</b>: ุณู…ุฉ ุฏุงูƒู†ุฉ ุชุจุฑุฒ ุธุฑูˆู ุญุฑูƒุฉ ุงู„ู…ุฑูˆุฑ<br><b>Mike's Personalized Style</b>: ุนุฑุถ ู‡ุฌูŠู† ู…ุฎุตุต ู„ุตูˆุฑ ุงู„ุฃู‚ู…ุงุฑ ุงู„ุตู†ุงุนูŠุฉ + + + Road Name + ุงุณู… ุงู„ุทุฑูŠู‚ + + + <b>Display the road name at the bottom of the driving screen</b> using data from "OpenStreetMap (OSM)". + <b>ุนุฑุถ ุงุณู… ุงู„ุทุฑูŠู‚ ููŠ ุฃุณูู„ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ</b> ุจุงุณุชุฎุฏุงู… ุจูŠุงู†ุงุช ู…ู† "OpenStreetMap (OSM)". + + + Show Speed Limits + ุนุฑุถ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ + + + <b>Show speed limits</b> in the top-left corner of the driving screen. Uses data from the car's dashboard (if supported) and "OpenStreetMap (OSM)". + <b>ุฅุธู‡ุงุฑ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ</b> ููŠ ุงู„ุฒุงูˆูŠุฉ ุงู„ุนู„ูˆูŠุฉ ุงู„ูŠุณุฑู‰ ู…ู† ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ. ูŠุณุชุฎุฏู… ุจูŠุงู†ุงุช ู…ู† ู„ูˆุญุฉ ุนุฏุงุฏุงุช ุงู„ุณูŠุงุฑุฉ (ุฅู† ูƒุงู†ุช ู…ุฏุนูˆู…ุฉ) ูˆ"OpenStreetMap (OSM)". + + + Show Speed Limits from Mapbox + ุนุฑุถ ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ู…ู† Mapbox + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>ุงุณุชุฎุฏู… ุจูŠุงู†ุงุช ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ู…ู† Mapbox ุนู†ุฏ ุนุฏู… ุชูˆูุฑ ุฃูŠ ู…ุตุฏุฑ ุขุฎุฑ.</b> + + + Use Vienna-Style Speed Signs + ุงุณุชุฎุฏู… ู„ุงูุชุงุช ุงู„ุณุฑุนุฉ ุนู„ู‰ ุทุฑุงุฒ ููŠูŠู†ุง + + + <b>Show Vienna-style (EU) speed-limit signs</b> instead of MUTCD (US). + <b>ุงุนุฑุถ ู„ุงูุชุงุช ุญุฏูˆุฏ ุงู„ุณุฑุนุฉ ุจุฃุณู„ูˆุจ ููŠูŠู†ุง (EU)</b> ุจุฏู„ู‹ุง ู…ู† MUTCD (US). + + + Quality of Life + ุฌูˆุฏุฉ ุงู„ุญูŠุงุฉ + + + <b>Miscellaneous visual changes</b> to fine-tune how the driving screen looks. + <b>ุชุบูŠูŠุฑุงุช ุจุตุฑูŠุฉ ู…ุชู†ูˆุนุฉ</b> ู„ุถุจุท ู…ุธู‡ุฑ ุดุงุดุฉ ุงู„ู‚ูŠุงุฏุฉ ุจุฏู‚ุฉ. + + + Camera View + ุนุฑุถ ุงู„ูƒุงู…ูŠุฑุง + + + <b>Select the active camera view.</b> This is purely a visual change and doesn't impact how openpilot drives! + <b>ุงุฎุชุฑ ุนุฑุถ ุงู„ูƒุงู…ูŠุฑุง ุงู„ู†ุดุท.</b> ู‡ุฐุง ุชุบูŠูŠุฑ ุจุตุฑูŠ ุจุญุช ูˆู„ุง ูŠุคุซุฑ ุนู„ู‰ ุทุฑูŠู‚ุฉ ู‚ูŠุงุฏุฉ openpilot! + + + Show Driver Camera When In Reverse + ุฅุธู‡ุงุฑ ูƒุงู…ูŠุฑุง ุงู„ุณุงุฆู‚ ุนู†ุฏ ุงู„ุฑุฌูˆุน ู„ู„ุฎู„ู + + + <b>Show the driver camera feed</b> when the vehicle is in reverse. + <b>ุฃุธู‡ุฑ ุจุซ ูƒุงู…ูŠุฑุง ุงู„ุณุงุฆู‚</b> ุนู†ุฏ ูˆุถุน ุงู„ุณูŠุงุฑุฉ ุนู„ู‰ ุงู„ุฑุฌูˆุน ู„ู„ุฎู„ู. + + + Stopped Timer + ู…ุคู‚ู‘ุช ู…ุชูˆู‚ู‘ู + + + <b>Show a timer when stopped</b> in place of the current speed to indicate how long the vehicle has been stopped. + <b>ุงุนุฑุถ ู…ุคู‚ุชู‹ุง ุนู†ุฏ ุงู„ุชูˆู‚ู</b> ุจุฏู„ู‹ุง ู…ู† ุงู„ุณุฑุนุฉ ุงู„ุญุงู„ูŠุฉ ู„ู„ุฅุดุงุฑุฉ ุฅู„ู‰ ู…ุฏุฉ ุชูˆู‚ู ุงู„ู…ุฑูƒุจุฉ. + + + Hide Map + ุฅุฎูุงุก ุงู„ุฎุฑูŠุทุฉ + + + Blind Spot + ุงู„ู†ู‚ุทุฉ ุงู„ุนู…ูŠุงุก + + + Steering Torque + ุนุฒู… ุงู„ุชูˆุฌูŠู‡ + + + Turn Signal + ุฅุดุงุฑุฉ ุงู„ุงู†ุนุทุงู + + + Fahrenheit + ูู‡ุฑู†ู‡ุงูŠุช + + + CPU + ูˆุญุฏุฉ ุงู„ู…ุนุงู„ุฌุฉ ุงู„ู…ุฑูƒุฒูŠุฉ + + + GPU + GPU + + + IP + IP + + + RAM + ุฐุงูƒุฑุฉ RAM + + + SSD Left + SSD ูŠุณุงุฑ + + + SSD Used + ุงุณุชุฎุฏุงู… SSD + + + None + ู„ุง ุดูŠุก + + + Acceleration: Current + ุงู„ุชุณุงุฑุน: ุงู„ุญุงู„ูŠ + + + Acceleration: Max + ุงู„ุชุณุงุฑุน: ุงู„ุญุฏ ุงู„ุฃู‚ุตู‰ + + + Auto Tune: Actuator Delay + ุงู„ุถุจุท ุงู„ุชู„ู‚ุงุฆูŠ: ุชุฃุฎูŠุฑ ุงู„ู…ูุดุบู‘ูู„ + + + Auto Tune: Friction + ุงู„ุถุจุท ุงู„ุชู„ู‚ุงุฆูŠ: ุงู„ุงุญุชูƒุงูƒ + + + Auto Tune: Lateral Acceleration + ุงู„ุถุจุท ุงู„ุชู„ู‚ุงุฆูŠ: ุงู„ุชุณุงุฑุน ุงู„ุฌุงู†ุจูŠ + + + Auto Tune: Steer Ratio + ุงู„ุถุจุท ุงู„ุชู„ู‚ุงุฆูŠ: ู†ุณุจุฉ ุงู„ุชูˆุฌูŠู‡ + + + Auto Tune: Stiffness Factor + ุงู„ุถุจุท ุงู„ุชู„ู‚ุงุฆูŠ: ุนุงู…ู„ ุงู„ุตู„ุงุจุฉ + + + Engagement %: Lateral + ู†ุณุจุฉ ุงู„ุชูุนูŠู„: ุฌุงู†ุจูŠ + + + Engagement %: Longitudinal + ู†ุณุจุฉ ุงู„ุชูุนูŠู„ูช: ุทูˆู„ูŠ + + + Lateral Control: Steering Angle + ุงู„ุชุญูƒู… ุงู„ุฌุงู†ุจูŠ: ุฒุงูˆูŠุฉ ุงู„ุชูˆุฌูŠู‡ + + + Lateral Control: Torque % Used + ุงู„ุชุญูƒู… ุงู„ุฌุงู†ุจูŠ: ู†ุณุจุฉ ุนุฒู… ุงู„ุฏูˆุฑุงู† ุงู„ู…ุณุชุฎุฏู…ุฉ % + + + Longitudinal Control: Actuator Acceleration Output + ุงู„ุชุญูƒู… ุงู„ุทูˆู„ูŠ: ุฎุฑุฌ ุชุณุงุฑุน ุงู„ู…ุดุบู‘ู„ + + + Longitudinal MPC Jerk: Acceleration + ุงุฑุชุนุงุด MPC ุงู„ุทูˆู„ูŠ: ุชุณุงุฑุน + + + Longitudinal MPC Jerk: Danger Zone + ุชุณุงุฑุน ุทูˆู„ูŠ MPC: ู…ู†ุทู‚ุฉ ุงู„ุฎุทุฑ + + + Longitudinal MPC Jerk: Speed Control + ุฒูŠุงุฏุฉ ุงู„ุชุณุงุฑุน ุงู„ุทูˆู„ูŠ ููŠ MPC: ุงู„ุชุญูƒู… ุจุงู„ุณุฑุนุฉ + + + SELECT + ุชุญุฏูŠุฏ + + + Select a metric to display + ุงุฎุชุฑ ู…ู‚ูŠุงุณู‹ุง ู„ุนุฑุถู‡ + + + Show Distance + ุนุฑุถ ุงู„ู…ุณุงูุฉ + + + Dynamic + ุฏูŠู†ุงู…ูŠูƒูŠ + + + Static + ุซุงุจุช + + + inches + ุจูˆุตุฉ + + + Off + ุฅูŠู‚ุงู + + + feet + ุฃู‚ุฏุงู… + + + Full Map + ุงู„ุฎุฑูŠุทุฉ ุงู„ูƒุงู…ู„ุฉ + + + Stock openpilot + ู†ุณุฎุฉ openpilot ุงู„ุฃุตู„ูŠุฉ + + + FrogPilot + FrogPilot + + + Mapbox Streets + Mapbox Streets + + + Mapbox Outdoors + Mapbox Outdoors + + + Mapbox Light + Mapbox Light + + + Mapbox Dark + Mapbox Dark + + + Mapbox Navigation Day + ุงู„ุชู†ู‚ู„ ุนุจุฑ Mapbox ู†ู‡ุงุฑุงู‹ + + + Mapbox Navigation Night + ู…ู„ุงุญุฉ Mapbox ุงู„ู„ูŠู„ูŠุฉ + + + Mapbox Satellite + Mapbox Satellite + + + Mapbox Satellite Streets + Mapbox Satellite Streets + + + Mapbox Traffic Night + ุญุฑูƒุฉ ุงู„ู…ุฑูˆุฑ ู…ู† Mapbox (ู„ูŠู„ุงู‹) + + + Mike's Personalized Style + ุงู„ู†ู…ุท ุงู„ู…ุฎุตุต ู„ูู…ุงูŠูƒ + + + Select a map style + ุงุฎุชุฑ ู†ู…ุท ุฎุฑูŠุทุฉ + + + Auto + ุชู„ู‚ุงุฆูŠ + + + Driver + ุงู„ุณุงุฆู‚ + + + Standard + ู‚ูŠุงุณูŠ + + + Wide + ุนุฑูŠุถ + + + foot + ู‚ุฏู… + + + inch + ุจูˆุตุฉ + + + meter + ู…ุชุฑ + + + meters + ุฃู…ุชุงุฑ + + + centimeter + ุณู†ุชูŠู…ุชุฑ + + + centimeters + ุณู†ุชูŠู…ุชุฑุงุช + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 10 centimeters. + <b>ุงุถุจุท ุณู…ุงูƒุฉ ุฎุท ุงู„ู…ุณุงุฑ.</b><br><br>ุงู„ุฅุนุฏุงุฏ ุงู„ุงูุชุฑุงุถูŠ ูŠุทุงุจู‚ ู…ุนูŠุงุฑ ุนุฑุถ ุฎุท ุงู„ู…ุณุงุฑ ููŠ MUTCD ุงู„ุจุงู„ุบ 10 ุณู†ุชูŠู…ุชุฑุงุช. + + + <b>Set the driving-path width.</b><br><br>Default (1.9 meters) matches the width of a 2019 Lexus ES 350. + <b>ุงุถุจุท ุนุฑุถ ู…ุณุงุฑ ุงู„ู‚ูŠุงุฏุฉ.</b><br><br>ุงู„ุฅุนุฏุงุฏ ุงู„ุงูุชุฑุงุถูŠ (1.9 ู…ุชุฑ) ูŠุทุงุจู‚ ุนุฑุถ ุณูŠุงุฑุฉ 2019 Lexus ES 350. + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 10 centimeters. + <b>ุงุถุจุท ุณู…ุงูƒุฉ ุญุงูุฉ ุงู„ุทุฑูŠู‚.</b><br><br>ุงู„ู‚ูŠู…ุฉ ุงู„ุงูุชุฑุงุถูŠุฉ ุชุทุงุจู‚ ู†ุตู ู…ุนูŠุงุฑ MUTCD ู„ุนุฑุถ ุฎุท ุงู„ู…ุณุงุฑ ูˆู‡ูˆ 10 ุณู†ุชูŠู…ุชุฑุงุช. FrogPilotWheelPanel Distance Button - ุฒุฑ ุงู„ู…ุณุงูุฉ + ุฒุฑ ุงู„ู…ุณุงูุฉ - The action for a short press of the <b>Distance</b> button. - ุงู„ุฅุฌุฑุงุก ุนู†ุฏ ุงู„ุถุบุท ุงู„ู‚ุตูŠุฑ ุนู„ู‰ ุฒุฑ <b>ุงู„ู…ุณุงูุฉ</b>. + <b>Action performed when the "Distance" button is pressed.</b> + <b>ุงู„ุฅุฌุฑุงุก ุงู„ุฐูŠ ูŠุชู… ุชู†ููŠุฐู‡ ุนู†ุฏ ุงู„ุถุบุท ุนู„ู‰ ุฒุฑ "ุงู„ู…ุณุงูุฉ".</b> Distance Button (Long Press) - ุฒุฑ ุงู„ู…ุณุงูุฉ (ุถุบุท ุทูˆูŠู„) + ุฒุฑ ุงู„ู…ุณุงูุฉ (ุถุบุท ู…ุทูˆู‘ู„) - The action for a 0.5+ second press of the <b>Distance</b> button. - ุงู„ุฅุฌุฑุงุก ู„ุถุบุท ุฒุฑ <b>ุงู„ู…ุณุงูุฉ</b> ู„ุฃูƒุซุฑ ู…ู† 0.5 ุซุงู†ูŠุฉ. + <b>Action performed when the "Distance" button is pressed for more than 0.5 seconds.</b> + <b>ุงู„ุฅุฌุฑุงุก ุงู„ุฐูŠ ูŠุชู… ุชู†ููŠุฐู‡ ุนู†ุฏ ุงู„ุถุบุท ุนู„ู‰ ุฒุฑ "ุงู„ู…ุณุงูุฉ" ู„ุฃูƒุซุฑ ู…ู† 0.5 ุซุงู†ูŠุฉ.</b> Distance Button (Very Long Press) - ุฒุฑ ุงู„ู…ุณุงูุฉ (ุถุบุท ุทูˆูŠู„ ุฌุฏู‹ุง) + ุฒุฑ ุงู„ู…ุณุงูุฉ (ุถุบุท ู…ุทูˆู‘ู„ ุฌุฏู‹ุง) - The action for a 2.5+ second press of the <b>Distance</b> button. - ุงู„ุฅุฌุฑุงุก ู„ุถุบุท ุฒุฑ <b>ุงู„ู…ุณุงูุฉ</b> ู„ู…ุฏุฉ ุชุฒูŠุฏ ุนู† 2.5 ุซุงู†ูŠุฉ. + <b>Action performed when the "Distance" button is pressed for more than 2.5 seconds.</b> + <b>ุงู„ุฅุฌุฑุงุก ุงู„ุฐูŠ ูŠุชู… ุชู†ููŠุฐู‡ ุนู†ุฏ ุงู„ุถุบุท ุนู„ู‰ ุฒุฑ "ุงู„ู…ุณุงูุฉ" ู„ุฃูƒุซุฑ ู…ู† 2.5 ุซุงู†ูŠุฉ.</b> LKAS Button - ุฒุฑ LKAS + ุฒุฑ LKAS - The action for pressing the <b>LKAS</b> button. - ุงู„ุฅุฌุฑุงุก ุนู†ุฏ ุงู„ุถุบุท ุนู„ู‰ ุฒุฑ <b>LKAS</b>. + <b>Action performed when the "LKAS" button is pressed.</b> + <b>ุงู„ุฅุฌุฑุงุก ุงู„ู…ุชุฎุฐ ุนู†ุฏ ุงู„ุถุบุท ุนู„ู‰ ุฒุฑ "LKAS".</b> - Nothing - ู„ุง ุดูŠุก + No Action + ู„ุง ุฅุฌุฑุงุก - Pause Lateral - ุฅูŠู‚ุงู ุฌุงู†ุจูŠ + Pause Steering + ุฅูŠู‚ุงู ุงู„ุชูˆุฌูŠู‡ ู…ุคู‚ุชู‹ุง Change "Personality Profile" - ุงู„ู…ู„ู ุงู„ุดุฎุตูŠ + ุบูŠู‘ุฑ "ุงู„ู…ู„ู ุงู„ุชุนุฑูŠููŠ ู„ู„ุดุฎุตูŠุฉ" Force openpilot to Coast - ุฅุฌุจุงุฑ openpilot ุนู„ู‰ ุงู„ุชูˆู‚ู ุงู„ุชุฏุฑูŠุฌูŠ + ุฅุฌุจุงุฑ openpilot ุนู„ู‰ ุงู„ุงู†ุฒู„ุงู‚ - Pause Longitudinal - ุฅูŠู‚ุงู ุทูˆู„ูŠ + Pause Acceleration/Braking + ุฅูŠู‚ุงู ู…ุคู‚ุช ู„ู„ุชุณุงุฑุน/ุงู„ูุฑู…ู„ุฉ Toggle "Experimental Mode" On/Off - ุชุจุฏูŠู„ "ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ" ุชุดุบูŠู„/ุฅูŠู‚ุงู + ุชุจุฏูŠู„ "ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ" ุชุดุบูŠู„/ุฅูŠู‚ุงู Toggle "Traffic Mode" On/Off - ุชุจุฏูŠู„ "ูˆุถุน ุงู„ู…ุฑูˆุฑ" ุชุดุบูŠู„/ุฅูŠู‚ุงู + ุชุจุฏูŠู„ "ูˆุถุน ุงู„ู…ุฑูˆุฑ" ุชุดุบูŠู„/ุฅูŠู‚ุงู SELECT - SELECT + ุชุญุฏูŠุฏ Select a function to assign to this button - ุงุฎุชุฑ ูˆุธูŠูุฉ ู„ุชุนูŠูŠู†ู‡ุง ู„ู‡ุฐุง ุงู„ุฒุฑ + ุญุฏุฏ ูˆุธูŠูุฉ ู„ุชุนูŠูŠู†ู‡ุง ู„ู‡ุฐุง ุงู„ุฒุฑ @@ -4302,7 +4413,7 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Characters: %1/%2 - ุงู„ุฃุญุฑู: %1/%2 + ุงู„ุฃุญุฑู: %1/%2 @@ -4335,7 +4446,7 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Manage at %1 - ุฅุฏุงุฑุฉ ููŠ %1 + ุฅุฏุงุฑุฉ ููŠ %1 @@ -4353,57 +4464,6 @@ Want to submit your own animations? Share them in the "custom-themes" channel on ุจุงู†ุชุธุงุฑ ุงู„ุทุฑูŠู‚ - - ModelReview - - How would you rate that drive? - ูƒูŠู ุชู‚ูŠู… ุชู„ูƒ ุงู„ู‚ูŠุงุฏุฉุŸ - - - Blacklist this model - ุถุน ู‡ุฐุง ุงู„ู†ู…ูˆุฐุฌ ููŠ ุงู„ู‚ุงุฆู…ุฉ ุงู„ุณูˆุฏุงุก - - - The model used during that drive was: - ุงู„ู†ู…ูˆุฐุฌ ุงู„ู…ุณุชุฎุฏู… ุฎู„ุงู„ ุชู„ูƒ ุงู„ู‚ูŠุงุฏุฉ ูƒุงู†: - - - Current Model Score: 0 - ุงู„ุฏุฑุฌุฉ ุงู„ุญุงู„ูŠุฉ ู„ู„ู†ู…ูˆุฐุฌ: 0 - - - Current Model Rank: 0 - ุงู„ุชุฑุชูŠุจ ุงู„ุญุงู„ูŠ ู„ู„ู†ู…ูˆุฐุฌ: 0 - - - Total Model Drives: 0 - ุฅุฌู…ุงู„ูŠ ู…ุญุฑูƒุงุช ุงู„ู†ู…ูˆุฐุฌ: 0 - - - Total Overall Model Drives: 0 - ุฅุฌู…ุงู„ูŠ ู…ุญุฑูƒุงุช ุงู„ู†ู…ูˆุฐุฌ ุงู„ูƒู„ูŠ: 0 - - - Total Model Drives: %1 - ุฅุฌู…ุงู„ูŠ ู…ุญุฑูƒุงุช ุงู„ู†ู…ูˆุฐุฌ: %1 - - - Current Model Rank: %1 - ุงู„ุชุฑุชูŠุจ ุงู„ุญุงู„ูŠ ู„ู„ู†ู…ูˆุฐุฌ: %1 - - - Current Model Score: %1 - ุงู„ุฏุฑุฌุฉ ุงู„ุญุงู„ูŠุฉ ู„ู„ู†ู…ูˆุฐุฌ: %1 - - - Total Overall Drives: %1 - ุฅุฌู…ุงู„ูŠ ู…ุญุฑูƒุงุช ุงู„ุฃู‚ุฑุงุต: %1 - - - Model successfully blacklisted! - ุชู… ุฅุฏุฑุงุฌ ุงู„ู†ู…ูˆุฐุฌ ููŠ ุงู„ู‚ุงุฆู…ุฉ ุงู„ุณูˆุฏุงุก ุจู†ุฌุงุญ! - - MultiOptionDialog @@ -4524,17 +4584,17 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Reboot Device ุฅุนุงุฏุฉ ุงู„ุชุดุบูŠู„ - - openpilot crashed ๐Ÿ’ฉ - ุชุญุทู… openpilot ๐Ÿ’ฉ - openpilot crashed - ุชุนุทู„ openpilot + ุชุนุทู‘ู„ openpilot Please post the "Error Log" in the FrogPilot Discord! - ูŠุฑุฌู‰ ู†ุดุฑ "ุณุฌู„ ุงู„ุฃุฎุทุงุก" ููŠ FrogPilot Discord! + ูŠุฑุฌู‰ ู†ุดุฑ "Error Log" ููŠ Discord ุงู„ุฎุงุต ุจู€FrogPilot! + + + openpilot crashed ๐Ÿ’ฉ + ุชุนุทู‘ู„ openpilot ๐Ÿ’ฉ @@ -4545,15 +4605,15 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Pair your device to your %1 account - ู‚ู… ุจุฅู‚ุฑุงู† ุฌู‡ุงุฒูƒ ุจุญุณุงุจ %1 + ุงู‚ุฑู† ุฌู‡ุงุฒูƒ ุจุญุณุงุจ %1 ุงู„ุฎุงุต ุจูƒ Go to https://%1 on your phone - ุงุฐู‡ุจ ุฅู„ู‰ https://%1 ุนู„ู‰ ู‡ุงุชููƒ + ุงุฐู‡ุจ ุฅู„ู‰ https://%1 ุนู„ู‰ ู‡ุงุชููƒ Bookmark %1 to your home screen to use it like an app - ุถุน ุฅุดุงุฑุฉ ู…ุฑุฌุนูŠุฉ ู„ู€ %1 ุนู„ู‰ ุดุงุดุชูƒ ุงู„ุฑุฆูŠุณูŠุฉ ู„ุงุณุชุฎุฏุงู…ู‡ ู…ุซู„ ุชุทุจูŠู‚ + ุถุน ุฅุดุงุฑุฉ ู…ุฑุฌุนูŠุฉ ู„ู€ %1 ุนู„ู‰ ุดุงุดุชูƒ ุงู„ุฑุฆูŠุณูŠุฉ ู„ุงุณุชุฎุฏุงู…ู‡ ูƒุชุทุจูŠู‚ @@ -4669,12 +4729,12 @@ Want to submit your own animations? Share them in the "custom-themes" channel on ุงู„ุขู† - FrogPilot - FrogPilot + Restore + ุงุณุชุนุงุฏุฉ - Restore - ุงุณุชุนุงุฏุฉ + FrogPilot + FrogPilot @@ -4722,11 +4782,11 @@ This may take up to a minute. ScreenRecorder RECORDING - ุชุณุฌูŠู„ + ุชุณุฌูŠู„ RECORD - ุณุฌู„ + ุชุณุฌูŠู„ @@ -4749,35 +4809,35 @@ This may take up to a minute. โ† Back - โ† ุฑุฌูˆุน + โ† ุฑุฌูˆุน FrogPilot - FrogPilot - - - Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ู…ุฑุญุจู‹ุง ุจูƒ ููŠ FrogPilot! ู†ุธุฑู‹ุง ู„ุฃู†ูƒ ุฌุฏูŠุฏ ููŠ FrogPilotุŒ ุชู… ุชุทุจูŠู‚ ุฅุนุฏุงุฏ ุงู„ุชุจุฏูŠู„ "ุงู„ุญุฏ ุงู„ุฃุฏู†ู‰"ุŒ ูˆู„ูƒู† ูŠู…ูƒู†ูƒ ุชุบูŠูŠุฑ ู‡ุฐุง ููŠ ุฃูŠ ูˆู‚ุช ุนุจุฑ ุฒุฑ "ู…ุณุชูˆู‰ ุงู„ุถุจุท"! - - - Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ู†ุธุฑู‹ุง ู„ุฃู†ูƒ ุฌุฏูŠุฏ ููŠ FrogPilotุŒ ุชู… ุชุทุจูŠู‚ ุฅุนุฏุงุฏ "ุงู„ุญุฏ ุงู„ุฃุฏู†ู‰"ุŒ ูˆู„ูƒู† ูŠู…ูƒู†ูƒ ุชุบูŠูŠุฑ ุฐู„ูƒ ููŠ ุฃูŠ ูˆู‚ุช ุนุจุฑ ุฒุฑ "ู…ุณุชูˆู‰ ุงู„ุถุจุท"! - - - Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ู†ุธุฑู‹ุง ู„ุฃู†ูƒ ุฐูˆ ุฎุจุฑุฉ ู…ุน openpilotุŒ ุชู… ุชุทุจูŠู‚ ุฅุนุฏุงุฏ "ุงู„ู‚ูŠุงุณูŠ"ุŒ ูˆู„ูƒู† ูŠู…ูƒู†ูƒ ุชุบูŠูŠุฑ ุฐู„ูƒ ููŠ ุฃูŠ ูˆู‚ุช ุนุจุฑ ุฒุฑ "ู…ุณุชูˆู‰ ุงู„ุถุจุท"! - - - Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ู†ุธุฑู‹ุง ู„ุฃู† ู„ุฏูŠูƒ ุฎุจุฑุฉ ู…ุน FrogPilotุŒ ุชู… ุชุทุจูŠู‚ ุฅุนุฏุงุฏ "ุงู„ู‚ูŠุงุณูŠ"ุŒ ูˆู„ูƒู† ูŠู…ูƒู†ูƒ ุชุบูŠูŠุฑ ุฐู„ูƒ ููŠ ุฃูŠ ูˆู‚ุช ุนุจุฑ ุฒุฑ "ู…ุณุชูˆู‰ ุงู„ุถุจุท"! - - - Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ู†ุธุฑู‹ุง ู„ุฃู†ูƒ ุฐูˆ ุฎุจุฑุฉ ูƒุจูŠุฑุฉ ู…ุน FrogPilotุŒ ุชู… ุชุทุจูŠู‚ ุฅุนุฏุงุฏ "ู…ุชู‚ุฏู…"ุŒ ูˆู„ูƒู† ูŠู…ูƒู†ูƒ ุชุบูŠูŠุฑ ุฐู„ูƒ ููŠ ุฃูŠ ูˆู‚ุช ุนุจุฑ ุฒุฑ "ู…ุณุชูˆู‰ ุงู„ุถุจุท"! + FrogPilot Welcome to FrogPilot! Since you're new to openpilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ู…ุฑุญุจู‹ุง ุจูƒ ููŠ FrogPilot! ู†ุธุฑู‹ุง ู„ุฃู†ูƒ ุฌุฏูŠุฏ ููŠ openpilotุŒ ุชู… ุชุทุจูŠู‚ ุฅุนุฏุงุฏ "ุงู„ุญุฏ ุงู„ุฃุฏู†ู‰"ุŒ ูˆู„ูƒู† ูŠู…ูƒู†ูƒ ุชุบูŠูŠุฑ ุฐู„ูƒ ููŠ ุฃูŠ ูˆู‚ุช ุนุจุฑ ุฒุฑ "ู…ุณุชูˆู‰ ุงู„ุถุจุท"! + ู…ุฑุญุจู‹ุง ุจูƒ ููŠ FrogPilot! ุจู…ุง ุฃู†ูƒ ุฌุฏูŠุฏ ุนู„ู‰ openpilotุŒ ุชู… ุชุทุจูŠู‚ ุงู„ุฅุนุฏุงุฏ ุงู„ู…ุณุจู‚ "Minimal"ุŒ ู„ูƒู† ูŠู…ูƒู†ูƒ ุชุบูŠูŠุฑ ุฐู„ูƒ ููŠ ุฃูŠ ูˆู‚ุช ุนุจุฑ ุฒุฑ "Tuning Level"! + + + Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + ู…ุฑุญุจู‹ุง ุจูƒ ููŠ FrogPilot! ุจู…ุง ุฃู†ูƒ ุฌุฏูŠุฏ ููŠ FrogPilotุŒ ุชู… ุชุทุจูŠู‚ ุฅุนุฏุงุฏ ุงู„ุชุจุฏูŠู„ "Minimal"ุŒ ู„ูƒู† ูŠู…ูƒู†ูƒ ุชุบูŠูŠุฑ ุฐู„ูƒ ููŠ ุฃูŠ ูˆู‚ุช ุนุจุฑ ุฒุฑ "Tuning Level"! + + + Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + ู†ุธุฑู‹ุง ู„ุฃู†ูƒ ุฌุฏูŠุฏ ู†ุณุจูŠู‹ุง ุนู„ู‰ FrogPilotุŒ ุชู… ุชุทุจูŠู‚ ุฅุนุฏุงุฏ ุงู„ุชุจุฏูŠู„ "Minimal"ุŒ ู„ูƒู† ูŠู…ูƒู†ูƒ ุชุบูŠูŠุฑู‡ ููŠ ุฃูŠ ูˆู‚ุช ุนุจุฑ ุฒุฑ "Tuning Level"! + + + Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + ุจู…ุง ุฃู†ูƒ ุฎุจูŠุฑ ููŠ openpilotุŒ ุชู… ุชุทุจูŠู‚ ุงู„ุฅุนุฏุงุฏ ุงู„ู…ุณุจู‚ "Standard"ุŒ ู„ูƒู† ูŠู…ูƒู†ูƒ ุชุบูŠูŠุฑู‡ ููŠ ุฃูŠ ูˆู‚ุช ุนุจุฑ ุฒุฑ "Tuning Level"! + + + Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + ุจู…ุง ุฃู†ูƒ ู…ุชู…ุฑู‘ุณู‹ุง ู…ุน FrogPilotุŒ ูู‚ุฏ ุชู… ุชุทุจูŠู‚ ุฅุนุฏุงุฏ ุงู„ุชุจุฏูŠู„ "Standard"ุŒ ู„ูƒู† ูŠู…ูƒู†ูƒ ุชุบูŠูŠุฑู‡ ููŠ ุฃูŠ ูˆู‚ุช ุนุจุฑ ุฒุฑ "Tuning Level"! + + + Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + ู†ุธุฑู‹ุง ู„ุฎุจุฑุชูƒ ุงู„ูƒุจูŠุฑุฉ ู…ุน FrogPilotุŒ ุชู… ุชุทุจูŠู‚ ุฅุนุฏุงุฏ ุงู„ุชุจุฏูŠู„ "Advanced"ุŒ ู„ูƒู† ูŠู…ูƒู†ูƒ ุชุบูŠูŠุฑ ุฐู„ูƒ ููŠ ุฃูŠ ูˆู‚ุช ุนุจุฑ ุฒุฑ "Tuning Level"! @@ -4891,7 +4951,7 @@ This may take up to a minute. Pair your device with Konik connect (stable.konik.ai). - ู‚ู… ุจุฅู‚ุฑุงู† ุฌู‡ุงุฒูƒ ู…ุน Konik connect (stable.konik.ai). + ุงู‚ุฑู† ุฌู‡ุงุฒูƒ ู…ุน Konik connect (stable.konik.ai). @@ -4978,27 +5038,27 @@ This may take up to a minute. GPU - GPU + GPU CPU - CPU + ูˆุญุฏุฉ ุงู„ู…ุนุงู„ุฌุฉ ุงู„ู…ุฑูƒุฒูŠุฉ GB - GB + GB MEMORY - ุฐุงูƒุฑุฉ + ุงู„ุฐุงูƒุฑุฉ LEFT - ูŠุณุงุฑ + ูŠุณุงุฑ USED - ู…ุณุชุฎุฏู… + ู…ูุณู’ุชูŽุฎู’ุฏูŽู… @@ -5073,39 +5133,39 @@ This may take up to a minute. Updates are only downloaded while the car is off or in park. - ูŠุชู… ุชู†ุฒูŠู„ ุงู„ุชุญุฏูŠุซุงุช ูู‚ุท ุนู†ุฏู…ุง ุชูƒูˆู† ุงู„ุณูŠุงุฑุฉ ู…ุชูˆู‚ูุฉ ุฃูˆ ููŠ ูˆุถุน ุงู„ุฑูƒู†. + ู„ุง ูŠุชู… ุชู†ุฒูŠู„ ุงู„ุชุญุฏูŠุซุงุช ุฅู„ุง ุนู†ุฏู…ุง ุชูƒูˆู† ุงู„ุณูŠุงุฑุฉ ู…ุทูุฃุฉ ุฃูˆ ููŠ ูˆุถุน ุงู„ุชูˆู‚ู. Automatically Update FrogPilot - ุชุญุฏูŠุซ FrogPilot ุชู„ู‚ุงุฆูŠู‹ุง - - - Error Log - ุณุฌู„ ุงู„ุฃุฎุทุงุก - - - VIEW - ุนุฑุถ - - - View the error log for openpilot crashes. - ุนุฑุถ ุณุฌู„ ุงู„ุฃุฎุทุงุก ู„ุฃุนุทุงู„ openpilot. - - - Do you want to delete deep storage FrogPilot assets? This includes your toggle settings for quick reinstalls. - ู‡ู„ ุชุฑูŠุฏ ุญุฐู ุฃุตูˆู„ ุงู„ุชุฎุฒูŠู† ุงู„ุนู…ูŠู‚ ู„ู€ FrogPilotุŸ ูŠุชุถู…ู† ุฐู„ูƒ ุฅุนุฏุงุฏุงุช ุงู„ุชุจุฏูŠู„ ุงู„ุฎุงุตุฉ ุจูƒ ู„ุฅุนุงุฏุฉ ุงู„ุชุซุจูŠุช ุงู„ุณุฑูŠุน. - - - Are you sure? This is 100% unrecoverable and if you reinstall FrogPilot you'll lose all your previous settings! - ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏุŸ ู‡ุฐุง ุบูŠุฑ ู‚ุงุจู„ ู„ู„ุงุณุชุฑุฏุงุฏ ุจู†ุณุจุฉ 100% ูˆุฅุฐุง ู‚ู…ุช ุจุฅุนุงุฏุฉ ุชุซุจูŠุช FrogPilot ุณุชูู‚ุฏ ุฌู…ูŠุน ุฅุนุฏุงุฏุงุชูƒ ุงู„ุณุงุจู‚ุฉ! - - - This branch must be downloaded before switching. Would you like to download it now? - ูŠุฌุจ ุชู†ุฒูŠู„ ู‡ุฐุง ุงู„ูุฑุน ู‚ุจู„ ุงู„ุชุจุฏูŠู„. ู‡ู„ ุชุฑุบุจ ููŠ ุชู†ุฒูŠู„ู‡ ุงู„ุขู†ุŸ + ุชุญุฏูŠุซ FrogPilot ุชู„ู‚ุงุฆูŠู‹ุง FrogPilot will automatically update itself and it's assets when you're offroad and have an active internet connection. - ุณูŠู‚ูˆู… FrogPilot ุจุชุญุฏูŠุซ ู†ูุณู‡ ูˆุฃุตูˆู„ู‡ ุชู„ู‚ุงุฆูŠู‹ุง ุนู†ุฏู…ุง ุชูƒูˆู† ุฎุงุฑุฌ ุงู„ุทุฑูŠู‚ ูˆู„ุฏูŠูƒ ุงุชุตุงู„ ุฅู†ุชุฑู†ุช ู†ุดุท. + ุณูŠู‚ูˆู… FrogPilot ุจุชุญุฏูŠุซ ู†ูุณู‡ ูˆุฃุตูˆู„ู‡ ุชู„ู‚ุงุฆูŠู‹ุง ุนู†ุฏู…ุง ุชูƒูˆู† ุฎุงุฑุฌ ุงู„ุทุฑูŠู‚ ูˆุจุญุงู„ุฉ ุงุชุตุงู„ ุฅู†ุชุฑู†ุช ู†ุดุทุฉ. + + + This branch must be downloaded before switching. Would you like to download it now? + ูŠุฌุจ ุชู†ุฒูŠู„ ู‡ุฐุง ุงู„ูุฑุน ู‚ุจู„ ุงู„ุชุจุฏูŠู„. ู‡ู„ ุชุฑุบุจ ููŠ ุชู†ุฒูŠู„ู‡ ุงู„ุขู†ุŸ + + + Error Log + ุณุฌู„ ุงู„ุฃุฎุทุงุก + + + VIEW + ุนุฑุถ + + + View the error log for openpilot crashes. + ุงุนุฑุถ ุณุฌู„ ุงู„ุฃุฎุทุงุก ู„ุญุงู„ุงุช ุชุนุทู„ openpilot. + + + Do you want to perform a full factory reset? All saved assets and settings will be permanently deleted! + ู‡ู„ ุชุฑูŠุฏ ุฅุฌุฑุงุก ุฅุนุงุฏุฉ ุถุจุท ุงู„ู…ุตู†ุน ุจุงู„ูƒุงู…ู„ุŸ ุณูŠุชู… ุญุฐู ุฌู…ูŠุน ุงู„ุฃุตูˆู„ ูˆุงู„ุฅุนุฏุงุฏุงุช ุงู„ู…ุญููˆุธุฉ ู†ู‡ุงุฆูŠู‹ุง! + + + This is a complete factory reset and cannot be undone. Are you absolutely sure you want to continue? + ู‡ุฐุง ุฅุนุงุฏุฉ ุถุจุท ู…ุตู†ุน ูƒุงู…ู„ุฉ ูˆู„ุง ูŠู…ูƒู† ุงู„ุชุฑุงุฌุน ุนู†ู‡ุง. ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ุชู…ุงู…ู‹ุง ุฃู†ูƒ ุชุฑูŠุฏ ุงู„ู…ุชุงุจุนุฉุŸ @@ -5297,7 +5357,7 @@ This may take up to a minute. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. - ุณุชู†ุชู‚ู„ ูˆุงุฌู‡ุฉ ุงู„ู‚ูŠุงุฏุฉ ุฅู„ู‰ ุงู„ูƒุงู…ูŠุฑุง ุฐุงุช ุงู„ุฒุงูˆูŠุฉ ุงู„ูˆุงุณุนุฉ ุงู„ู…ูˆุงุฌู‡ุฉ ู„ู„ุทุฑูŠู‚ ุนู†ุฏ ุงู„ุณุฑุนุงุช ุงู„ู…ู†ุฎูุถุฉ ู„ุนุฑุถ ุจุนุถ ุงู„ู…ู†ุนุทูุงุช ุจุดูƒู„ ุฃูุถู„. ุณูŠุชู… ุฃูŠุถู‹ุง ุนุฑุถ ุดุนุงุฑ ุงู„ูˆุถุน ุงู„ุชุฌุฑูŠุจูŠ ููŠ ุงู„ุฒุงูˆูŠุฉ ุงู„ุนู„ูˆูŠุฉ ุงู„ูŠู…ู†ู‰. + ุณุชู†ุชู‚ู„ ุนุฑุถ ุงู„ู‚ูŠุงุฏุฉ ุฅู„ู‰ ุงู„ูƒุงู…ูŠุฑุง ุงู„ูˆุงุณุนุฉ ุงู„ู…ูˆุงุฌู‡ุฉ ู„ู„ุทุฑูŠู‚ ุนู†ุฏ ุงู„ุณุฑุนุงุช ุงู„ู…ู†ุฎูุถุฉ ู„ุฅุธู‡ุงุฑ ุจุนุถ ุงู„ู…ู†ุนุทูุงุช ุจุดูƒู„ ุฃูุถู„. ุณูŠูุนุฑุถ ุดุนุงุฑ ูˆุถุน Experimental ุฃูŠุถู‹ุง ููŠ ุงู„ุฒุงูˆูŠุฉ ุงู„ุนู„ูˆูŠุฉ ุงู„ูŠู…ู†ู‰. @@ -5359,11 +5419,11 @@ This may take up to a minute. Uploading disabled - ุชู… ุชุนุทูŠู„ ุงู„ุชุญู…ูŠู„ + ุชู… ุชุนุทูŠู„ ุงู„ุฑูุน Toggle off the "Turn Off Data Uploads" toggle to re-enable uploads. - ู‚ู… ุจุฅูŠู‚ุงู ุชุดุบูŠู„ ุงู„ุชุจุฏูŠู„ "ุฅูŠู‚ุงู ุชุญู…ูŠู„ ุงู„ุจูŠุงู†ุงุช" ู„ุฅุนุงุฏุฉ ุชู…ูƒูŠู† ุงู„ุชุญู…ูŠู„ุงุช. + ุฃูˆู‚ู ุชุดุบูŠู„ ุฒุฑ "ุฅูŠู‚ุงู ุชุญู…ูŠู„ ุงู„ุจูŠุงู†ุงุช" ู„ุฅุนุงุฏุฉ ุชูุนูŠู„ ุนู…ู„ูŠุงุช ุงู„ุชุญู…ูŠู„. diff --git a/selfdrive/ui/translations/main_caveman.ts b/selfdrive/ui/translations/main_caveman.ts index 6401616db..8eb70345a 100644 --- a/selfdrive/ui/translations/main_caveman.ts +++ b/selfdrive/ui/translations/main_caveman.ts @@ -1,4 +1,5442 @@ - - + + + AbstractAlert + + Close + Close + + + Snooze Update + Snooze Update + + + Reboot and Update + Reboot. Update. + + + + AdvancedNetworking + + Back + Back + + + Off + Off + + + Always + Always + + + Only Onroad + Only Onroad + + + Until Reboot + Until Reboot + + + Enable Tethering + Turn On Tethering + + + Allow tethering with your data SIM and keep it active either while driving or continuously. + Let phone share net with data SIM. Keep on when drive or keep on always. + + + Tethering Password + Tethering Password + + + EDIT + EDIT + + + Enter new tethering password + Enter new tether stick password + + + IP Address + IP Address + + + Enable Roaming + Make Roaming on + + + APN Setting + APN Setting + + + Enter APN + Put APN + + + leave blank for automatic configuration + leave empty for auto setup + + + Cellular Metered + Cellular Metered + + + Prevent large data uploads when on a metered connection + Stop big data send on metered connection + + + Hidden Network + Hidden Network + + + CONNECT + CONNECT + + + Enter SSID + Enter SSID + + + Enter password + Enter secret word + + + for "%1" + for "%1" + + + + AnnotatedCameraWidget + + km/h + km/h + + + mph + mph + + + MAX + MAX + + + LIMIT + LIMIT + + + SPEED + SPEED + + + + ConfirmationDialog + + Ok + Ok + + + Cancel + Stop + + + + DeclinePage + + You must accept the Terms and Conditions in order to use openpilot. + You must accept Terms and Conditions to use openpilot. + + + Back + Back + + + Decline, uninstall %1 + Say no, uninstall %1 + + + + DestinationWidget + + Home + Home + + + Work + Work + + + No destination set + No place set + + + home + cave home + + + work + work + + + No %1 location set + No set %1 place + + + + DeveloperSidebar + + m/sยฒ + m/sยฒ + + + ft/sยฒ + ft/sยฒ + + + ACCEL + ACCEL + + + ACCEL JERK + ACCEL JERK + + + ACT ACCEL + ACT ACCEL + + + DANGER JERK + DANGER JERK + + + STEER DELAY + STEER DELAY + + + FRICTION + FRICTION + + + LAT ACCEL + LAT ACCEL + + + LATERAL % + LATERAL % + + + LONG % + LONG % + + + MAX ACCEL + MAX GO FAST + + + SPEED JERK + SPEED JERK. + + + STEER ANGLE + STEER ANGLE + + + + STEER RATIO + STEER RATIO + + + STEER STIFF + STEER STIFF + + + TORQUE % + TORQUE % + + + + DevicePanel + + Dongle ID + Dongle ID + + + N/A + N/A + + + Serial + Serial + + + Pair Device + Pair Thing + + + PAIR + PAIR + + + Pair your device with Konik connect (stable.konik.ai). + Pair device with Konik connect (stable.konik.ai). + + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + Pair device with comma connect (connect.comma.ai). Then claim comma prime offer. + + + Driver Camera + Driver Camera + + + PREVIEW + PREVIEW + + + Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off) + Look driver face camera. Make sure driver watch see good. (car must be off) + + + Reset Calibration + Reset Calibrate + + + RESET + RESET + + + Are you sure you want to reset calibration? + You sure want reset calibration? + + + Reset + Reset + + + Review Training Guide + Check Training Guide + + + REVIEW + REVIEW + + + Review the rules, features, and limitations of openpilot + Look at rule, feature, limit of openpilot + + + Are you sure you want to review the training guide? + You sure want look at training guide? + + + Review + Look back + + + Regulatory + Rule stuff + + + VIEW + SEE + + + Change Language + Change tongue + + + CHANGE + CHANGE + + + Select a language + Pick language + + + Reboot + Make car brain sleep and wake + + + Power Off + Power Off + + + openpilot requires the device to be mounted within 4ยฐ left or right and within 5ยฐ up or 9ยฐ down. openpilot is continuously calibrating, resetting is rarely required. + openpilot need device mount within 4ยฐ left or right, and 5ยฐ up or 9ยฐ down. openpilot always calibrate. Reset rarely need. + + + Your device is pointed %1ยฐ %2 and %3ยฐ %4. + Your device point %1ยฐ %2 and %3ยฐ %4. + + + down + down + + + up + up + + + left + left + + + right + right + + + Are you sure you want to reboot? + You sure want reboot? + + + Disengage to Reboot + Stop drive. Reboot now. + + + Are you sure you want to power off? + You sure want power off? + + + Disengage to Power Off + Stop drive. Power off. + + + + DriveStats + + FROGPILOT + FROGPILOT + + + Drives + Drives + + + Hours + Hours + + + KM + KM + + + Miles + Miles + + + + DriverViewWindow + + camera starting + camera start now + + + + ExperimentalModeButton + + EXPERIMENTAL MODE ON + EXPERIMENT MODE ON + + + CHILL MODE ON + CHILL MODE ON + + + + FrogPilotAnnotatedCameraWidget + + m/sยฒ + m/sยฒ + + + meters + meters + + + m/s + m/s + + + km/h + km/h + + + ft/sยฒ + ft/sยฒ + + + feet + feet + + + mph + mph + + + Vehicle in blind spot + Car hide in blind spot + + + PENDING + PENDING + + + LIMIT + LIMIT + + + + FrogPilotConfirmationDialog + + Reboot required to take effect. + Need reboot for change take effect. + + + Reboot Now + Reboot now + + + Reboot Later + Reboot later + + + Yes + Yes + + + No + No + + + + FrogPilotDataPanel + + Delete Driving Data + Delete Driving Data + + + DELETE + DELETE + + + <b>Delete all stored driving footage and data</b> to free up space and clear private information. + <b>Delete all stored driving footage and data</b> to make space. Clear private info. + + + Delete all driving data and footage? + Delete all drive data and video? + + + Delete + Delete + + + Deleting... + Me delete... + + + Deleted! + Gone! + + + Delete Error Logs + Delete Error Log. + + + <b>Delete collected error logs</b> to free up space and clear old crash records. + <b>Delete error logs</b> to free space. Clear old crash records. + + + Delete all error logs? + Delete all error log? + + + Screen Recordings + Screen Recording + + + <b>Delete or rename screen recordings.</b> + <b>Delete or rename screen record.</b> + + + DELETE ALL + DELETE ALL + + + RENAME + RENAME + + + Choose a screen recording to delete + Pick screen record to delete + + + Delete this screen recording? + Delete this screen recording? + + + Delete all screen recordings? + Delete all screen recordings? Me sure? + + + Delete All + Delete all + + + Choose a screen recording to rename + Pick screen recording to rename + + + Enter a new name + Enter new name + + + Rename Screen Recording + Rename Screen Recording -> Give new name to Screen Recording + + + Name already in use. Please choose a different name. + Name already used. Choose other name. + + + Renaming... + Me rename... + + + Renamed! + Name change done! + + + FrogPilot Backups + FrogPilot Backup + + + <b>Create, delete, or restore FrogPilot backups.</b> + <b>Make, kill, or bring back FrogPilot backups.</b> + + + BACKUP + BACKUP + + + RESTORE + RESTORE + + + Enter a name for this backup + Name this backup. + + + Compress this backup? This will save space and run in the background but take a bit longer. + Squish backup? Save space. Run behind. Take bit longer. + + + Backing up... + Me back up... + + + Compressing... + Me squash now... + + + Backup created! + Backup made! + + + Choose a FrogPilot backup to delete + Pick FrogPilot backup to smash + + + Delete this backup? + Delete this backup? You sure? + + + Delete all backups? + Delete all backup? + + + Choose a backup to restore + Pick backup to restore + + + Restore this backup? + Restore this backup now? + + + Restore + Make like before + + + Restoring... + Bring back... + + + Extracting... + Me take out... + + + Restored! + Back again! + + + Rebooting... + Me reboot now... + + + Toggle Backups + Toggle Backups + + + <b>Create, delete, or restore toggle backups.</b> + <b>Make, kill, or bring back toggle backups.</b> + + + Choose a backup to delete + Choose backup to delete + + + + FrogPilotDevicePanel + + Device Settings + Device Setting + + + <b>Settings that control how the device runs, powers off, and manages driving data.</b> + <b>Settings that say how device run, power off, and manage driving data.</b> + + + Device Shutdown Timer + Device Shut Down Timer + + + <b>Keep the device on for the set amount of time after a drive</b> before it shuts down automatically. + <b>Keep device on for set time after drive</b> then it shut down by self. + + + Disable Logging + Turn Off Log + + + WARNING: This will prevent your drives from being recorded and all data will be unobtainable! + WARNING: This make drive not record. All data gone. No get back! + + + <b>Prevent the device from saving driving data.</b> + <b>Stop device save drive data.</b> + + + Disable Uploads + Stop Uploads + + + WARNING: This will prevent your drives from being uploaded to <b>comma connect</b> which will impact debugging and official support from comma! + WARNING: This stop your drives from go to <b>comma connect</b>. Debug hard. Official support from comma hurt! + + + <b>Prevent the device from uploading driving data.</b> + <b>Stop device from send drive data.</b> + + + High-Quality Recording + High-Quality Recording + + + <b>Save drive footage in higher video quality.</b> + <b>Save drive picture in higher video quality.</b> + + + Low-Voltage Cutoff + Low-Voltage Cut Off + + + <b>While parked, if the battery voltage falls below the set level, the device shuts down</b> to prevent excessive battery drain. + <b>Parked time, if battery juice go below set level, device shut down</b> to stop too much battery drain. + + + Raise Temperature Limits + Make Heat Limit Higher + + + WARNING: Running at higher temperatures may damage your device! + WARNING: Device get hurt if run too hot! + + + <b>Allow the device to run at higher temperatures</b> before throttling or shutting down. Use only if you understand the risks! + <b>Let device run hotter</b> before slow or shut down. Use only if you know risk! + + + Use Konik Server + Use Konik Server + + + <b>Upload driving data to "connect.konik.ai" instead of "connect.comma.ai".</b> + <b>Upload drive data to "connect.konik.ai", not "connect.comma.ai".</b> + + + Screen Settings + Screen Settings + + + <b>Settings that control screen brightness, screen recording, and timeout duration.</b> + <b>Settings control screen bright, screen record, and timeout time.</b> + + + Screen Brightness (Offroad) + Screen Brightness (Offroad) + + + <b>The screen brightness while not driving.</b> + <b>Screen bright when not drive.</b> + + + Screen Brightness (Onroad) + Screen Brightness (Onroad) + + + <b>The screen brightness while driving.</b> + <b>Screen bright when drive.</b> + + + Screen Recorder + Screen Recorder + + + <b>Add a button to the driving screen to record the display.</b> + <b>Add button on drive screen. Make record display.</b> + + + Screen Timeout (Offroad) + Screen Timeout (Offroad) + + + <b>How long the screen stays on after being tapped while not driving.</b> + <b>How long screen stay on after tap when not drive.</b> + + + Screen Timeout (Onroad) + Screen Timeout (Onroad) + + + <b>How long the screen stays on after being tapped while driving.</b> + <b>How long screen stay on after tap when driving.</b> + + + Standby Mode + Standby Mode + + + <b>Turn the screen off while driving and automatically wake it up for alerts or engagement state changes.</b> + <b>Screen go dark when drive. It wake by self for alert or when engagement change.</b> + + + 5 mins + 5 min + + + mins + mins + + + hour + hour + + + hours + hours + + + Disable Onroad Only + Disable Onroad Only. + + + volts + volts + + + Screen Off + Screen Off + + + Auto + Auto + + + Start Recording + Start Record now + + + Stop Recording + Stop make record + + + seconds + seconds + + + + FrogPilotLateralPanel + + Advanced Lateral Tuning + Advanced Side Tuning + + + <b>Advanced steering control changes to fine-tune how openpilot drives.</b> + <b>Advanced steer tweak. Make openpilot drive just right.</b> + + + Actuator Delay (Default: %1) + Actuator Delay (Default: %1) + + + Actuator Delay + Actuator Slow Time + + + <b>The time between openpilot's steering command and the vehicle's response.</b> Increase if the vehicle reacts late; decrease if it feels jumpy. Auto-learned by default. + <b>Time between openpilot steer command and car answer.</b> If car react late, make bigger. If feel jumpy, make smaller. Auto learn by default. + + + Friction (Default: %1) + Friction (Default: %1) + + + Friction + Friction + + + <b>Compensates for steering friction.</b> Increase if the wheel sticks near center; decrease if it jitters. Auto-learned by default. + <b>Fight steering rub.</b> Make big if wheel stick near middle. Make small if wheel shake. Auto learn by default. + + + Kp Factor (Default: %1) + Kp Thing (Default: %1) + + + Kp Factor + Kp Factor + + + <b>How strongly openpilot corrects lane position.</b> Higher is tighter but twitchier; lower is smoother but slower. Auto-learned by default. + <b>How strong openpilot fix lane spot.</b> High grip tight, but twitch. Low smooth, but slow. Auto learn by default. + + + Lateral Acceleration (Default: %1) + Side Push (Default: %1) + + + Lateral Acceleration + Side push + + + <b>Maps steering torque to turning response.</b> Increase for sharper turns; decrease for gentler steering. Auto-learned by default. + <b>Map hand twist to car turn.</b> Make big for sharp turn; make small for gentle steer. Auto learn by default. + + + Steer Ratio (Default: %1) + Steer Ratio (Default: %1) + + + Steer Ratio + Steer Ratio + + + <b>The relationship between steering wheel rotation and road wheel angle.</b> Increase if steering feels too quick or twitchy; decrease if it feels too slow or weak. Auto-learned by default. + <b>Link between steering wheel spin and road wheel angle.</b> If steer feel too quick or twitchy, make bigger. If feel too slow or weak, make smaller. Auto learn by default. + + + Force Auto-Tune On + Force Auto-Tune On now + + + <b>Force-enable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration".</b> + <b>Make openpilot live auto-tune turn on for "Friction" and "Lateral Acceleration".</b> + + + Force Auto-Tune Off + Force Auto-Tune Off now + + + <b>Force-disable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration" and use the set value instead.</b> + <b>Turn off openpilot live auto-tune for "Friction" and "Lateral Acceleration". Use set value instead.</b> + + + Force Torque Controller + Force Torque Controller make force turn wheel + + + <b>Use torque-based steering control instead of angle-based control for smoother lane keeping, especially in curves.</b> + <b>Use torque steer, not angle steer. Lane keep smoother, 'specially in curve.</b> + + + Always On Lateral + Always On Lateral + + + <b>openpilot's steering remains active even when the accelerator or brake pedals are pressed.</b> + <b>openpilot steer stay on even when foot press go or stop pedal.</b> + + + Enable With Cruise Control + Turn On With Cruise Control + + + <b>Enable "Always On Lateral" whenever "Cruise Control" is on, even when openpilot is not engaged.</b> + <b>Make "Always On Lateral" on when "Cruise Control" on, even when openpilot not on.</b> + + + Enable With LKAS + Turn On With LKAS + + + <b>Enable "Always On Lateral" whenever "LKAS" is on, even when openpilot is not engaged.</b> + <b>Turn on "Always On Lateral" when "LKAS" on, even when openpilot not engaged.</b> + + + Pause on Brake Press Below + Pause when foot press brake below + + + <b>Pause "Always On Lateral" below the set speed while the brake pedal is pressed.</b> + <b>Pause "Always On Lateral" below set speed when brake pedal pressed.</b> + + + Lane Changes + Lane Change + + + <b>Allow openpilot to change lanes.</b> + <b>Let openpilot make lane change.</b> + + + Automatic Lane Changes + Auto Lane Change + + + <b>When the turn signal is on, openpilot will automatically change lanes.</b> No steering-wheel nudge required! + <b>Turn signal on, openpilot change lane by self.</b> No steer nudge need! + + + Lane Change Delay + Lane Change Wait + + + <b>Delay between turn signal activation and the start of an automatic lane change.</b> + <b>Time gap after blink turn on, before auto lane change start.</b> + + + Minimum Lane Change Speed + Min lane change speed + + + <b>Lowest speed at which openpilot will change lanes.</b> + <b>Lowest speed where openpilot change lane.</b> + + + Minimum Lane Width + Min Lane Width + + + <b>Prevent automatic lane changes into lanes narrower than the set width.</b> + <b>Stop auto lane change into lane thinner than set width.</b> + + + One Lane Change Per Signal + One Lane Change Per Signal + + + <b>Limit automatic lane changes to one per turn-signal activation.</b> + <b>Limit auto lane change to one each turn-signal on.</b> + + + Lateral Tuning + Side Tune + + + <b>Miscellaneous steering control changes</b> to fine-tune how openpilot drives. + <b>Random steer change</b> make openpilot drive just right. + + + Force Turn Desires Below Lane Change Speed + Force Turn Wants Below Lane Change Speed + + + <b>While driving below the minimum lane change speed with an active turn signal, instruct openpilot to turn left/right.</b> + <b>When drive slower than minimum lane change speed and blink on, tell openpilot turn left/right.</b> + + + Quality of Life + Life nice + + + <b>Steering control changes to fine-tune how openpilot drives.</b> + <b>Steer control change. Make openpilot drive more fine.</b> + + + Pause Steering Below + Pause Steering Below + + + <b>Pause steering below the set speed.</b> + <b>Stop steer when speed below set.</b> + + + Instant + Instant now + + + second + second + + + seconds + seconds + + + Turn Signal Only + Turn Signal Only + + + Reset <b>Actuator Delay</b> to its default value? + Reset <b>Actuator Delay</b> to default value? + + + Reset <b>Friction</b> to its default value? + Reset <b>Friction</b> to default value? + + + Reset <b>Kp Factor</b> to its default value? + Reset <b>Kp Factor</b> to default value? + + + Reset <b>Lateral Accel</b> to its default value? + Reset <b>Lateral Accel</b> to default value? + + + Reset <b>Steer Ratio</b> to its default value? + Reset <b>Steer Ratio</b> to default value? + + + Lateral Accel (Default: %1) + Side Push (%1 by default) + + + Off + Off + + + foot + foot + + + feet + feet + + + mph + mph + + + meter + meter + + + meters + meters + + + km/h + km/h + + + Neural Network Feedforward (NNFF) + Neural Network Feedforward (NNFF) + + + <b>Twilsonco's "Neural Network FeedForward" model controller for smoother, model-based steering trained on your vehicle's data.</b> + <b>Twilsonco "Neural Network FeedForward" model brain make steer smooth. It learn from your car data.</b> + + + Smooth Curve Handling + Smooth Curve Handle + + + <b>Twilsonco's torque-based adjustments to smoothen out steering in curves.</b> + <b>Twilsonco make torque tweak. Steering smooth in curve.</b> + + + + FrogPilotLongitudinalPanel + + Advanced Longitudinal Tuning + Advanced Longitudinal Tuning + + + <b>Advanced acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Advanced go and stop change</b> to fine-tune how openpilot drive. + + + Actuator Delay (Default: %1) + Actuator Delay (Default: %1) + + + Actuator Delay + Actuator Delay + + + <b>The time between openpilot's throttle or brake command and the vehicle's response.</b> Increase if the vehicle feels slow to react; decrease if it feels too eager or overshoots. + <b>Time from openpilot make throttle or brake to car respond.</b> Make bigger if car slow. Make smaller if car too eager or overshoot. + + + Start Acceleration (Default: %1) + Start Go Fast (Default: %1) + + + Start Acceleration + Start Go Fast + + + <b>Extra acceleration applied when starting from a stop.</b> Increase for quicker takeoffs; decrease for smoother, gentler starts. + <b>More zoom when start from stop.</b> More make fast takeoff; less make smooth, gentle start. + + + Start Speed (Default: %1) + Start Speed (Default: %1) + + + Start Speed + Start Speed + + + <b>The speed at which openpilot exits the stopped state.</b> Increase to reduce creeping; decrease to move sooner after stopping. + <b>Speed where openpilot leave stopped state.</b> Make bigger to creep less; make smaller to go sooner after stop. + + + Stop Acceleration (Default: %1) + Stop Go-Fast (Default: %1) + + + Stop Acceleration + Stop go fast + + + <b>Brake force applied to hold the vehicle at a standstill.</b> Increase to prevent rolling on hills; decrease for smoother, softer stops. + <b>Brake force hold car stop.</b> Make more stop roll on hill. Make less for smooth, soft stop. + + + Stopping Rate (Default: %1) + Stop Rate (Default: %1) + + + Stopping Rate + Stop Rate + + + <b>How quickly braking ramps up when stopping.</b> Increase for shorter, firmer stops; decrease for smoother, longer stops. + <b>How fast brake ramp up when stopping.</b> Make higher for short, hard stop. Make lower for smooth, long stop. + + + Stop Speed (Default: %1) + Stop Speed (Default: %1) + + + Stop Speed + Stop Speed + + + <b>The speed at which openpilot considers the vehicle stopped.</b> Increase to brake earlier and stop smoothly; decrease to wait longer but risk overshooting. + <b>Speed where openpilot think car stop.</b> Make bigger to brake early, stop smooth. Make smaller to wait long, maybe overshoot. + + + Conditional Experimental Mode + If Test Mode Then Experimental + + + <b>Automatically switch to "Experimental Mode" when set conditions are met.</b> Allows the model to handle challenging situations with smarter decision making. + <b>Auto switch to "Experimental Mode" when set thing happen.</b> Let model handle hard stuff with smart decide. + + + Below + Below + + + <b>Switch to "Experimental Mode" when driving below this speed without a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>Use "Experimental Mode" when drive slower than this with no lead</b> so openpilot handle slow stuff smooth. + + + Curve Detected Ahead + Curve ahead. Me see. + + + <b>Switch to "Experimental Mode" when a curve is detected</b> to allow the model to set an appropriate speed for the curve. + <b>When curve show, switch to "Experimental Mode"</b> so model pick good speed for curve. + + + Lead Detected Ahead + Lead be ahead + + + <b>Switch to "Experimental Mode" when a slower or stopped vehicle is detected.</b> Can make braking smoother and more reliable on some vehicles. + <b>Switch to "Experimental Mode" when car ahead slow or stop.</b> Brake feel smoother. More sure on some car.</b> + + + Navigation-Based + Navigation-Thing Based + + + <b>Switch to "Experimental Mode" when approaching intersections or turns on the active route</b> while using "Navigate on openpilot" (NOO) to allow the model to set an appropriate speed for upcoming maneuvers. + <b>Use "Experimental Mode" near crossroad or turn on active route</b> when use "Navigate on openpilot" (NOO). This let model pick good speed for next move. + + + Predicted Stop In + Guess Stop Soon + + + <b>Switch to "Experimental Mode" when openpilot predicts a stop within the set time.</b> This is usually triggered when the model "sees" a red light or stop sign ahead.<br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>Go "Experimental Mode" when openpilot say stop soon in set time.</b> This happen when model "see" red light or stop sign ahead.<br><br><i><b>Disclaimer</b>: openpilot not detect traffic lights or stop signs direct. In "Experimental Mode", openpilot make end-to-end drive choice from camera, so it maybe stop even when no clear reason.</i> + + + Turn Signal Below + Turn blink below + + + <b>Switch to "Experimental Mode" when using a turn signal below the set speed</b> to allow the model to choose an appropriate speed for smoother left and right turns. + <b>Use "Experimental Mode" when use turn signal below set speed</b>. Then model pick good speed. Turn left, turn right more smooth. + + + Status Widget + Status Rock + + + <b>Show which condition triggered "Experimental Mode"</b> on the driving screen. + <b>Show which thing make "Experimental Mode" start</b> on drive screen. + + + Curve Speed Controller + Curve Speed Boss + + + <b>Automatically slow down for upcoming curves</b> using data learned from your driving style, adapting to curves as you would. + <b>Auto slow for curve ahead</b> use data learn from your drive style, adapt to curve like you do. + + + Calibrated Lateral Acceleration + Calibrate Side Push + + + <b>The learned lateral acceleration from collected driving data.</b> This sets how fast openpilot will take curves. Higher values allow faster cornering; lower values slow the vehicle for gentler turns. + <b>Learned side push from drive data.</b> This set how fast openpilot take curve. Big number make fast corner. Small number make slow, gentle turn. + + + Calibration Progress + Calibrate go. Progress now. + + + <b>How much curve data has been collected.</b> This is a progress meter; it is normal for the value to stay low and rarely reach 100%. + <b>How much curve data collected.</b> This show progress; normal value stay low, rarely hit 100%. + + + Reset Curve Data + Reset Curve Data + + + <b>Reset collected user data for "Curve Speed Controller".</b> + <b>Reset user data for "Curve Speed Controller".</b> + + + <b>Show the "Curve Speed Controller" target speed on the driving screen.</b> + <b>Show "Curve Speed Controller" target speed on drive screen.</b> + + + Driving Personalities + Drive Personality + + + <b>Customize the "Driving Personalities"</b> to better match your driving style. + <b>Make "Driving Personalities" fit you</b>. Match your drive style. + + + Traffic Mode + Traffic Mode + + + <b>Customize the "Traffic Mode" personality profile.</b> Designed for stop-and-go driving. + <b>Make "Traffic Mode" self act how you like.</b> Good for stop-and-go drive. + + + Following Distance + Follow Distance + + + <b>The minimum following distance to the lead vehicle in "Traffic Mode".</b> openpilot blends between this value and the "Aggressive" profile as speed increases. Increase for more space; decrease for tighter gaps. + <b>Smallest follow space to car in front in "Traffic Mode".</b> openpilot mix this with "Aggressive" profile when speed go up. Make bigger for more space; make smaller for tight gap. + + + Acceleration Smoothness + Go-Smoothness + + + <b>How smoothly openpilot accelerates in "Traffic Mode".</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>How smooth openpilot go fast in "Traffic Mode".</b> Make more for soft start. Make less for quick but choppy takeoff. + + + Braking Smoothness + Brake smoothness + + + <b>How smoothly openpilot brakes in "Traffic Mode".</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>How smooth openpilot brake in "Traffic Mode".</b> More make soft stop. Less make fast but sharp brake. + + + Safety Gap Bias + Safety Gap Bias + + + <b>How much extra space openpilot keeps from the vehicle ahead in "Traffic Mode".</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>How much extra space openpilot keep from car ahead in "Traffic Mode".</b> Make bigger for big gap, more careful follow. Make smaller for tight gap, close follow. + + + Slowdown Response + Slow go answer + + + <b>How smoothly openpilot slows down in "Traffic Mode".</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>How smooth openpilot slow in "Traffic Mode".</b> Make bigger for gentle slow. Make smaller for fast but sharp slow. + + + Speed-Up Response + Speed-Up React Fast + + + <b>How smoothly openpilot speeds up in "Traffic Mode".</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>How smooth openpilot speed up in "Traffic Mode".</b> More make slow gentle go; less make fast jolty go. + + + Reset to Defaults + Reset to Default + + + <b>Reset "Traffic Mode" settings to defaults.</b> + <b>Reset "Traffic Mode" setting to default.</b> + + + Aggressive + Mean and strong + + + <b>Customize the "Aggressive" personality profile.</b> Designed for assertive driving with tighter gaps. + <b>Make "Aggressive" self look how you want.</b> For bold drive. Gap small. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Aggressive" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.25 seconds. + <b>How many second openpilot follow behind lead car when use "Aggressive" profile.</b> Make bigger for more space; make smaller for tight gap.<br><br>Default: 1.25 second. + + + <b>How smoothly openpilot accelerates with the "Aggressive" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>How smooth openpilot go fast with "Aggressive" profile.</b> Up make soft start; down make fast but rough takeoff. + + + <b>How smoothly openpilot brakes with the "Aggressive" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>How smooth openpilot brake with "Aggressive" profile.</b> Make number big for soft stop; make small for fast but sharp brake. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Aggressive" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>How much extra space openpilot keep from car ahead with "Aggressive" profile.</b> Make bigger for big gap, careful follow. Make smaller for tight gap, close follow. + + + <b>How smoothly openpilot slows down with the "Aggressive" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>How smooth openpilot slow with "Aggressive" profile.</b> Make more for gentle slow. Make less for fast but sharp slow. + + + <b>How smoothly openpilot speeds up with the "Aggressive" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>How smooth openpilot speed up with "Aggressive" profile.</b> More make slow gentle go. Less make fast but bumpy go. + + + <b>Reset the "Aggressive" profile to defaults.</b> + <b>Reset "Aggressive" profile to default.</b> + + + Standard + Standard + + + <b>Customize the "Standard" personality profile.</b> Designed for balanced driving with moderate gaps. + <b>Make "Standard" mind profile.</b> Good for balance drive. Gap medium. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Standard" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.45 seconds. + <b>How many second openpilot follow behind lead car when use "Standard" profile.</b> Make bigger for more space; make smaller for tight gap.<br><br>Default: 1.45 second. + + + <b>How smoothly openpilot accelerates with the "Standard" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>How smooth openpilot go with "Standard" speed plan.</b> Make more for soft start; make less for fast but rough takeoff. + + + <b>How smoothly openpilot brakes with the "Standard" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>How smooth openpilot brake with "Standard" profile.</b> Make bigger for soft stop. Make smaller for fast but sharp brake. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Standard" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>How much extra space openpilot keep from car in front with "Standard" profile.</b> Make bigger for big gap, more careful. Make smaller for tight gap, close follow. + + + <b>How smoothly openpilot slows down with the "Standard" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>How smooth openpilot slow with "Standard" profile.</b> Make bigger for soft slow. Make smaller for fast but sharp slow. + + + <b>How smoothly openpilot speeds up with the "Standard" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>How smooth openpilot speed up with "Standard" profile.</b> Raise for slow gentle go. Lower for fast but bumpy go. + + + <b>Reset the "Standard" profile to defaults.</b> + <b>Reset "Standard" profile to default.</b> + + + Relaxed + Relaxed + + + <b>Customize the "Relaxed" personality profile.</b> Designed for smoother, more comfortable driving with larger gaps. + <b>Tweak "Relaxed" tribe self.</b> Make drive smooth, comfy. Bigger gap. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Relaxed" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.75 seconds. + <b>How many second openpilot follow behind lead car when use "Relaxed" profile.</b> Make bigger for more space; make smaller for tight gap.<br><br>Default: 1.75 second. + + + <b>How smoothly openpilot accelerates with the "Relaxed" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>How smooth openpilot go with "Relaxed" profile.</b> Raise for gentle start. Lower for fast but abrupt takeoff. + + + <b>How smoothly openpilot brakes with the "Relaxed" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>How smooth openpilot brake with "Relaxed" profile.</b> More number, stop gentle. Less number, stop fast but sharp. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Relaxed" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>How much extra space openpilot keep from car ahead with "Relaxed" profile.</b> Make bigger for big gap, more careful follow. Make smaller for tight gap, close follow. + + + <b>How smoothly openpilot slows down with the "Relaxed" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>How smooth openpilot slow with "Relaxed" profile.</b> Make bigger for gentle slow. Make smaller for fast but sharp slow. + + + <b>How smoothly openpilot speeds up with the "Relaxed" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>How smooth openpilot speed up with "Relaxed" profile.</b> Raise for slow, gentle go. Lower for fast, bumpy go. + + + <b>Reset the "Relaxed" profile to defaults.</b> + <b>Reset "Relaxed" profile to default now.</b> + + + Longitudinal Tuning + Longitudinal Tune + + + <b>Acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Change go and stop control</b> to fine-tune how openpilot drive. + + + Acceleration Profile + Go-Fast Shape + + + <b>How quickly openpilot speeds up.</b> "Eco" is gentle and efficient, "Sport" is firmer and more responsive, and "Sport+" accelerates at the maximum rate allowed. + <b>How fast openpilot speed up.</b> "Eco" be gentle, save juice. "Sport" be firm, react quick. "Sport+" go max speed allowed. + + + Deceleration Profile + Slowdown Profile + + + <b>How firmly openpilot slows down.</b> "Eco" favors coasting, "Sport" applies stronger braking. + <b>How hard openpilot slow.</b> "Eco" let car coast, "Sport" brake strong. + + + Human-Like Acceleration + Human-Like Go Fast + + + <b>Acceleration that mimics human behavior</b> by easing the throttle at low speeds and adding extra power when taking off from a stop. + <b>Go fast like human</b>. Ease throttle when slow. Add extra power when start from stop. + + + Human-Like Following + Human-Like Follow + + + + Lead Detection Sensitivity + Lead Find Sense Power + + + <b>How sensitive openpilot is to detecting vehicles.</b> Higher sensitivity allows quicker detection at longer distances but may react to non-vehicle objects; lower sensitivity is more conservative and reduces false detections. + <b>How openpilot feel vehicle.</b> High sense see fast, see far. But maybe see not-vehicle. Low sense play safe, less wrong see. + + + Maximum Acceleration + Max go-fast + + + <b>Limit the strongest acceleration</b> openpilot can command. + <b>Make strongest go-fast smaller</b> openpilot can tell car. + + + "Taco Bell Run" Turn Speed Hack + "Taco Bell Run" Turn Speed Hack + + + <b>The turn-speed hack from comma's 2022 "Taco Bell Run".</b> Designed to slow down for left and right turns. + <b>Turn-speed hack from comma 2022 "Taco Bell Run".</b> It slow car for left turn and right turn. + + + Quality of Life + Life nice + + + <b>Miscellaneous acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Other go and stop control change</b> to fine-tune how openpilot drive. + + + Cruise Interval + Cruise Gap + + + <b>How much the set speed increases or decreases</b> for each + or โ€“ cruise control button press. + <b>How much set speed go up or down</b> each time press + or โ€“ on cruise button. + + + Cruise Interval (Hold) + Cruise Gap (Hold) + + + <b>How much the set speed increases or decreases while holding the + or โ€“ cruise control buttons.</b> + <b>How much set speed go up or down when hold + or โ€“ cruise buttons.</b> + + + Force Stop at "Detected" Stop Lights/Signs + Force Stop at "Detected" Stop Lights/Signs. Me stop when see "Detected" light/sign. + + + <b>Force openpilot to stop whenever the driving model "detects" a red light or stop sign.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>Make openpilot stop when driving brain "see" red light or stop sign.</b><br><br><i><b>Disclaimer</b>: openpilot no detect traffic light or stop sign direct. In "Experimental Mode", openpilot make end-to-end drive choice from camera, so car maybe stop when no clear reason.</i> + + + Increase Stopped Distance by: + Make stop distance more by: + + + <b>Add extra space when stopped behind vehicles.</b> Increase for more room; decrease for shorter gaps. + <b>When stop behind car, add extra space.</b> More make big gap; less make small gap. + + + Map Accel/Decel to Gears + Map go/stop speed to gears + + + <b>Map the Acceleration or Deceleration profiles to the vehicle's "Eco" and "Sport" gear modes.</b> + <b>Match go-fast and slow-down profiles to car "Eco" and "Sport" gear modes.</b> + + + Offset Set Speed by: + Set speed offset by: + + + <b>Increase the set speed by the chosen offset.</b> For example, set +5 if you usually drive 5 over the limit. + <b>Make set speed go up by chosen offset.</b> Example: set +5 if you drive 5 over limit. + + + Reverse Cruise Increase + Reverse Cruise go up + + + <b>Reverse the cruise control button behavior</b> so a short press increases the set speed by 5 instead of 1. + <b>Make cruise button act opposite</b> so short press make set speed go up by 5, not 1. + + + Increase Following Distance by: + Make follow distance bigger by: + + + Reduce Acceleration by: + Make go-fast less by: + + + Reduce Speed in Curves by: + Make slow in curve by: + + + Snow + Snow + + + <b>Driving adjustments for snowy conditions.</b> + <b>Drive change for snow.</b> + + + <b>Add extra space behind lead vehicles in snow.</b> Increase for more space; decrease for tighter gaps. + <b>Add more space behind lead car in snow.</b> Increase for more space; decrease for tighter gap. + + + <b>Add extra buffer when stopped behind vehicles in snow.</b> Increase for more room; decrease for shorter gaps. + <b>Car stop in snow, add more space.</b> More make big gap; less make small gap. + + + <b>Lower the maximum acceleration in snow.</b> Increase for softer takeoffs; decrease for quicker but less stable takeoffs. + <b>Snow make car slip. Lower max go-fast.</b> More make soft start; less make fast but shaky start. + + + <b>Lower the desired speed while driving through curves in snow.</b> Increase for safer, gentler turns; decrease for more aggressive driving in curves. + <b>Drive in snow. Lower want speed in curve.</b> Raise for safe soft turn; lower for wild hard curve. + + + Speed Limit Controller + Speed Limit Boss + + + <b>Limit openpilot's maximum driving speed to the current speed limit</b> obtained from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + <b>Make openpilot top speed same as speed limit now</b> from downloaded maps, Mapbox, Navigate on openpilot, or dashboard for supported cars (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + + + Fallback Speed + Back-Up Speed + + + <b>The speed used by "Speed Limit Controller" when no speed limit is found.</b><br><br>- <b>Set Speed</b>: Use the cruise set speed<br>- <b>Experimental Mode</b>: Estimate the limit using the driving model<br>- <b>Previous Limit</b>: Keep using the last confirmed limit + <b>Speed used by "Speed Limit Controller" when no speed limit found.</b><br><br>- <b>Set Speed</b>: Use cruise set speed<br>- <b>Experimental Mode</b>: Guess limit with driving model<br>- <b>Previous Limit</b>: Keep last confirmed limit + + + Override Speed + Override Speed + + + <b>The speed used by "Speed Limit Controller" after you manually drive faster than the posted limit.</b><br><br>- <b>Set with Gas Pedal</b>: Use the highest speed reached while pressing the gas<br>- <b>Max Set Speed</b>: Use the cruise set speed<br><br>Overrides clear when openpilot disengages. + <b>Speed "Speed Limit Controller" use after you drive faster than posted limit by hand.</b><br><br>- <b>Set with Gas Pedal</b>: Use highest speed you reach while pressing gas<br>- <b>Max Set Speed</b>: Use cruise set speed<br><br>Overrides go away when openpilot disengage. + + + <b>Miscellaneous "Speed Limit Controller" changes</b> to fine-tune how openpilot drives. + <b>Misc "Speed Limit Controller" change</b> to fine-tune how openpilot drive. + + + Confirm New Speed Limits + Confirm New Speed Limit + + + <b>Ask before changing to a new speed limit.</b> To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds. + <b>Ask before change to new speed limit.</b> To accept, tap flashing on-screen widget or press Cruise Increase button. To deny, press Cruise Decrease button or ignore prompt for 30 seconds. + + + Force MPH from Dashboard + Make MPH from Dashboard only + + + <b>Always read dashboard speed limit signs in mph.</b> Turn this on if the cluster shows mph but the limit is interpreted as km/h. + <b>Always read dash speed sign in mph.</b> Turn on if cluster show mph but limit read as km/h. + + + Higher Limit Lookahead Time + Higher Limit Lookahead Time + + + <b>How far ahead openpilot anticipates upcoming higher speed limits</b> from downloaded map data. + <b>How far ahead openpilot guess higher speed limit</b> from downloaded map data. + + + Lower Limit Lookahead Time + Lower Limit Lookahead Time make small + + + <b>How far ahead openpilot anticipates upcoming lower speed limits</b> from downloaded map data. + <b>How far ahead openpilot guess coming lower speed limit</b> from downloaded map data. + + + Match Speed Limit on Engage + Match speed limit when engage + + + <b>When openpilot is first enabled, automatically set the max speed to the current posted limit.</b> + <b>When openpilot first on, auto set max speed to current posted limit.</b> + + + Use Mapbox as Fallback + Use Mapbox as Back-Up + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>Use Mapbox speed-limit data when no other source. If none, use this.</b> + + + Speed Limit Source Priority + Speed Limit Source Order + + + <b>The source order for speed limits</b> when more than one is available. + <b>Speed limit source order</b> when many exist. + + + Speed Limit Offsets + Speed Limit Offset off + + + <b>Add an offset to the posted speed limit</b> to better match your driving style. + <b>Add offset to posted speed limit</b> to match your drive style better. + + + Speed Offset (0โ€“24 mph) + Speed Offset (0โ€“24 mph) + + + <b>How much to offset posted speed-limits</b> between 0 and 24 mph. + <b>How much offset posted speed-limit</b> between 0 and 24 mph. + + + Speed Offset (25โ€“34 mph) + Speed Offset (25โ€“34 mph) + + + <b>How much to offset posted speed-limits</b> between 25 and 34 mph. + <b>How much offset posted speed-limit</b> between 25 and 34 mph. + + + Speed Offset (35โ€“44 mph) + Speed Offset (35โ€“44 mph) + + + <b>How much to offset posted speed-limits</b> between 35 and 44 mph. + <b>How much change posted speed-limits</b> between 35 and 44 mph. + + + Speed Offset (45โ€“54 mph) + Speed Offset (45โ€“54 mph) + + + <b>How much to offset posted speed-limits</b> between 45 and 54 mph. + <b>How much offset posted speed-limits</b> between 45 and 54 mph. + + + Speed Offset (55โ€“64 mph) + Speed Offset (55โ€“64 mph) + + + <b>How much to offset posted speed-limits</b> between 55 and 64 mph. + <b>How much offset posted speed-limit</b> between 55 and 64 mph. + + + Speed Offset (65โ€“74 mph) + Speed Offset (65โ€“74 mph) + + + <b>How much to offset posted speed-limits</b> between 65 and 74 mph. + <b>How much offset posted speed-limits</b> between 65 and 74 mph. + + + Speed Offset (75โ€“99 mph) + Speed Offset (75โ€“99 mph) + + + <b>How much to offset posted speed-limits</b> between 75 and 99 mph. + <b>How much offset posted speed-limits</b> between 75 and 99 mph. + + + Visual Settings + See Picture Settings + + + <b>Visual "Speed Limit Controller" changes</b> to fine-tune how the driving screen looks. + <b>Visual "Speed Limit Controller" change</b> to fine-tune how driving screen look. + + + Show Speed Limit Offset + Show Speed Limit Offset + + + <b>Show the current offset from the posted limit</b> on the driving screen. + <b>Show now offset from posted limit</b> on driving screen. + + + Show Speed Limit Sources + Show Speed Limit Source + + + <b>Display the speed-limit sources and their current values</b> on the driving screen. + <b>Show speed-limit source and value now</b> on drive screen. + + + seconds + seconds + + + m/sยฒ + m/sยฒ + + + mph + mph + + + With Lead + With Lead + + + <b>Switch to "Experimental Mode" when driving below this speed with a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>Use "Experimental Mode" when drive under this speed with lead car</b> so openpilot handle slow stuff smooth. + + + Slower Lead + Lead go slow + + + Stopped Lead + Lead stop. + + + Intersections + Cross roads + + + Turns + Turns + + + Off + Off + + + second + second + + + Not For Detected Lanes + No work for found lanes + + + RESET + RESET + + + Are you sure you want to completely reset your curvature data? + You sure want reset curve data all gone? + + + Eco + Eco + + + Sport + Sport + + + Sport+ + Sport+ + + + feet + feet + + + Acceleration + Go fast power + + + Deceleration + Slow down + + + MANAGE + MANAGE + + + Set Speed + Set Speed + + + Experimental Mode + Experiment Mode + + + Previous Limit + Old limit + + + None + None + + + Set With Gas Pedal + Set with gas pedal + + + Max Set Speed + Max Set Speed + + + SELECT + SELECT + + + Dashboard + Dashboard + + + Map Data + Map Data + + + Navigation + Find way + + + Highest + Most high + + + Lowest + Lowest + + + Select your primary priority + Pick main priority + + + Select your secondary priority + Pick second priority + + + Select your tertiary priority + Pick third priority + + + Lower Limits + Low Limits + + + Higher Limits + High Limit + + + Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? + You sure want reset all setting for <b>Traffic Mode</b>? + + + Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? + You sure want reset all setting for <b>Aggressive</b> personality? + + + Are you sure you want to completely reset your settings for the <b>Standard</b> personality? + You sure want wipe all setting for <b>Standard</b> personality? + + + Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? + You sure want reset all setting for <b>Relaxed</b> personality? + + + foot + foot + + + meter + meter + + + meters + meters + + + km/h + km/h + + + Speed Offset (0โ€“29 km/h) + Speed Offset (0โ€“29 km/h) + + + Speed Offset (30โ€“49 km/h) + Speed Offset (30โ€“49 km/h) + + + Speed Offset (50โ€“59 km/h) + Speed Offset (50โ€“59 km/h) + + + Speed Offset (60โ€“79 km/h) + Speed Offset (60โ€“79 km/h) + + + Speed Offset (80โ€“99 km/h) + Speed Offset (80โ€“99 km/h) + + + Speed Offset (100โ€“119 km/h) + Speed Offset (100โ€“119 km/h) + + + Speed Offset (120โ€“140 km/h) + Speed Offset (120โ€“140 km/h) + + + <b>Following behavior that mimics human drivers</b> by closing gaps behind faster vehicles for quicker takeoffs and dynamically adjusting the desired following distance for gentler, more efficient braking. + <b>Make car follow like human</b>. Close gap behind fast car for quick takeoff. Change follow distance on the fly for soft, smart brake. + + + + FrogPilotManageControl + + MANAGE + MANAGE + + + + FrogPilotMapsPanel + + Manually + By hand + + + Weekly + Every week + + + Monthly + Every moon + + + Automatically Update Maps + Auto Update Maps + + + <b>How often maps update</b> from "OpenStreetMap (OSM)" with the latest speed limit information. Weekly updates run every Sunday; monthly updates run on the 1st. + <b>How often map update</b> from "OpenStreetMap (OSM)" with latest speed limit info. Weekly update run every Sunday; monthly update run on 1st. + + + Download Maps + Download Maps + + + DOWNLOAD + DOWNLOAD + + + <b>Manually update your selected map sources</b> so "Speed Limit Controller" has the latest speed limit information. + <b>Manually update you pick map source</b> so "Speed Limit Controller" have newest speed limit info. + + + CANCEL + CANCEL + + + Cancel the download? + Stop download? + + + Last Updated + Last update done + + + Map Sources + Map Sources + + + <b>Select the countries or U.S. states to use with "Speed Limit Controller".</b> + <b>Pick country or U.S. state for use with "Speed Limit Controller".</b> + + + COUNTRIES + COUNTRIES + + + STATES + STATES + + + Progress + Progress + + + Time Elapsed + Time Go By + + + Time Remaining + Time Left + + + Remove Maps + Remove Map + + + REMOVE + REMOVE + + + <b>Delete downloaded map data</b> to free up storage space. + <b>Delete downloaded map data</b> to free space. + + + Delete all downloaded maps? + Delete all maps you download? + + + Reset Downloader + Reset Downloader + + + RESET + RESET + + + <b>Reset the map downloader.</b> Use this if downloads are stuck or failing. + <b>Reset map downloader.</b> Use this if download get stuck or fail. + + + Reset the map downloader? Your device will reboot afterward. + Reset map downloader? Device reboot after. + + + Reset + Reset + + + Resetting... + Me reset now... + + + Reset! + Reset! + + + Rebooting... + Me reboot now... + + + Storage Used + Storage Used + + + Africa + Africa + + + Antarctica + Antarctica + + + Asia + Asia + + + Europe + Europe + + + North America + North America + + + Oceania + Oceania + + + South America + South America + + + United States - Midwest + United States - Midwest land + + + United States - Northeast + United States - Northeast + + + United States - South + United States - South + + + United States - West + United States - West + + + United States - Territories + United States - Tribe Lands + + + Offline... + No connect... + + + CANCELLED + CANCELLED + + + + FrogPilotModelPanel + + Automatically Download New Models + Auto get new model + + + <b>Automatically download new driving models</b> as they become available. + <b>Auto grab new driving models</b> when they come. + + + Delete Driving Models + Delete Driving Models + + + <b>Delete downloaded driving models</b> to free up storage space. + <b>Delete downloaded driving models</b> to free space. + + + Download Driving Models + Download Drive Model + + + <b>Manually download driving models</b> to the device. + <b>Manually download driving models</b> to device. + + + Model Randomizer + Model Randomizer + + + <b>Select a random driving model each drive</b> and use feedback prompts at the end of the drive to help find the model that best suits you! + <b>Each drive pick random drive brain</b> and use feedback at drive end to find brain that fit you best! + + + Manage Model Blacklist + Manage Model Blacklist + + + <b>Add or remove driving models from the "Model Randomizer" blacklist.</b> + <b>Add or remove drive model from "Model Randomizer" bad list.</b> + + + Manage Model Ratings + Manage Model Ratings + + + <b>View or reset saved model ratings</b> used by the "Model Randomizer". + <b>See or reset saved model ratings</b> used by "Model Randomizer". + + + Select Driving Model + Pick Drive Brain + + + <b>Choose which driving model openpilot uses.</b> + <b>Choose which drive model openpilot use.</b> + + + Update Model Manager + Update Model Boss + + + <b>Update the "Model Manager"</b> to support the latest models. + <b>Update "Model Manager"</b> so work with newest models. + + + DELETE + DELETE + + + DELETE ALL + DELETE ALL + + + Select a driving model to delete + Pick drive model to delete + + + Are you sure you want to delete the "%1" model? + You sure you want delete "%1" model? + + + Delete + Delete + + + Are you sure you want to delete all of your downloaded driving models? + You sure want delete all downloaded driving models? + + + DOWNLOAD + DOWNLOAD + + + DOWNLOAD ALL + DOWNLOAD ALL + + + Tinygrad is out of date and must be updated before you can download new models. Update now? + Tinygrad old. Must update before you download new models. Update now? + + + Updating Tinygrad will delete all existing Tinygrad-based models which will need to be re-downloaded. Proceed? + Update Tinygrad make all Tinygrad model go away. Must re-download. Proceed? + + + CANCEL + CANCEL + + + Updating... + Me update... + + + Select a driving model to download + Pick drive model to download + + + ADD + ADD + + + REMOVE + REMOVE + + + REMOVE ALL + REMOVE ALL + + + There are no more driving models to blacklist. The only available model is "%1"! + No more drive model to blacklist. Only model left be "%1"! + + + Select a driving model to add to the blacklist + Pick drive model to add to blacklist + + + Are you sure you want to add the "%1" model to the blacklist? + You sure want add "%1" model to blacklist? + + + Add + Add + + + Select a driving model to remove from the blacklist + Pick drive model to remove from blacklist + + + Are you sure you want to remove the "%1" model from the blacklist? + You sure want remove "%1" model from blacklist? + + + Remove + Remove + + + Are you sure you want to remove all of your blacklisted driving models? + You sure want remove all blacklisted driving models? + + + RESET + RESET + + + VIEW + SEE + + + Reset all model drives and ratings? This clears your drive history and collected feedback! + Reset all model drive and rating? This clear your drive story and feedback! + + + SELECT + SELECT + + + UPDATE + UPDATE + + + Cancelling... + Me stop now... + + + Updating Tinygrad will delete existing Tinygrad-based driving models and need to be re-downloaded. Proceed? + Update Tinygrad make Tinygrad drive brains go bye-bye. Must download again. Proceed? + + + The "Model Randomizer" works only with downloaded models. Download all models now? + "Model Randomizer" work only with model you download. Download all model now? + + + Offline... + No net... + + + Update available! + Update here now! + + + Up to date! + All up to date! + + + Select a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + Pick Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + + + + FrogPilotModelReview + + How would you rate that drive? + How you rate that drive? + + + Model successfully blacklisted! + Model blacklist done! + + + Drive Rating Selection + Drive Rating Pick + + + Blacklist this model to remove it from rotation + Ban this model. Remove from rotation. + + + Blacklist Model + Blacklist Model + + + Model used during that drive: + Model use in that drive: + + + Model Rank + Model Rank + + + Model Rating + Model Score + + + Model Drives + Model Drive + + + Total Drives + All Drive Total + + + #%1 + #%1 + + + %1% + %1% + + + %1 %2 + %1 %2 + + + Drive + Drive + + + Drives + Drives + + + %1 Total %2 + %1 Total %2 + + + + FrogPilotNavigationPanel + + Manage Your Settings At + Manage Your Setting At + + + Offline... + No internet... + + + Mapbox + Mapbox + + + Amap + Amap + + + Destination Search Provider + Destination Find Maker + + + <b>The search provider used for destination queries</b> in "Navigate on Openpilot". Options include Mapbox (recommended) and Amap. + <b>Search helper for find place</b> in "Navigate on Openpilot". Option have Mapbox (good) and Amap. + + + Amap Key #1 + Amap Key #1 + + + Amap Key #2 + Amap Key #2 + + + Public Mapbox Key + Public Mapbox Key + + + Secret Mapbox Key + Secret Mapbox Key + + + Mapbox Setup Instructions + Mapbox Setup How-To + + + VIEW + LOOK + + + <b>Instructions on how to set up Mapbox</b> for "Primeless Navigation". + <b>How set up Mapbox</b> for "Primeless Navigation". + + + CANCEL + CANCEL + + + Manually Update Speed Limits + Update Speed Limit by hand + + + Speed Limit Filler + Speed Limit Filler + + + <b>Automatically collect missing or incorrect speed limits while you drive</b> using speeds limits sourced from your dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When you're parked and connected to Wi-Fi, FrogPilot will automatically processes this data into a file to be used with the tool located at "SpeedLimitFiller.frogpilot.download".<br><br>You can download this file from "The Pond" in the "Download Speed Limits" menu.<br><br>Need a step-by-step guide? Visit <b>#speed-limit-filler</b> in the FrogPilot Discord! + <b>Car grab missing or wrong speed limit by self while you drive</b> using speed limits from dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When you park and on Wiโ€‘Fi, FrogPilot auto turn this data into file for tool at "SpeedLimitFiller.frogpilot.download".<br><br>You can get this file from "The Pond" in "Download Speed Limits" menu.<br><br>Need step-by-step? Go to <b>#speed-limit-filler</b> in FrogPilot Discord! + + + Cancel the speed-limit update? + Cancel speed-limit update? + + + Cancelled... + Stop... + + + You've hit today's request limit. + +It will reset in %1 hours and %2 minutes. + You hit limit today. + +It reset in %1 hour and %2 minute. + + + This process takes a while. It's recommended to start when you're done driving and connected to stable Wi-Fi. Continue? + This take long time. Start when you done drive and Wi-Fi strong. Continue? + + + <b>Manage your "%1".</b> + <b>Me manage "%1".</b> + + + ADD + ADD + + + Enter your %1 + You put %1 + + + Inputted key is invalid or too short! + Key bad or too short! + + + Remove your %1? + You remove %1? + + + REMOVE + REMOVE + + + Completed! + Done! + + + + FrogPilotSettingsWindow + + MANAGE + MANAGE + + + DRIVING MODEL + DRIVE MODEL + + + GAS / BRAKE + GAS / BRAKE + + + STEERING + STEER + + + MAP DATA + MAP DATA + + + NAVIGATION + NAVIGATION + + + DATA + DATA + + + DEVICE CONTROLS + DEVICE CONTROL + + + UTILITIES + UTILITIES + + + APPEARANCE + LOOKS + + + THEME + THEME + + + VEHICLE SETTINGS + CAR SETTING + + + WHEEL CONTROLS + WHEEL CONTROLไปฌ + + + Alerts and Sounds + Alert and Sound + + + <b>Adjust alert volumes and enable custom notifications.</b> + <b>Tweak alert loud and turn on custom ding.</b> + + + Driving Controls + Drive Control + + + <b>Fine-tune custom FrogPilot acceleration, braking, and steering controls.</b> + <b>Tweak FrogPilot go, stop, and steer control.</b> + + + Navigation + Find way + + + <b>Download map data for the "Speed Limit Controller" and configure "Navigate on openpilot" (NOO).</b> + <b>Download map data for "Speed Limit Controller" and set up "Navigate on openpilot" (NOO).</b> + + + System Settings + System Setting + + + <b>Manage backups, device settings, screen options, storage, and tools to keep FrogPilot running smoothly.</b> + <b>Manage backup, device setting, screen option, storage, and tool. Keep FrogPilot run smooth.</b> + + + Theme and Appearance + Look theme and look face + + + <b>Customize the look of the driving screen and interface, including themes!</b> + <b>Make drive screen and interface look how you want, include theme!</b> + + + Vehicle Settings + Car Settings + + + <b>Configure car-specific options and steering wheel button mappings.</b> + <b>Set car thing and wheel button map.</b> + + + Minimal + Small + + + Standard + Standard + + + Advanced + Advanced + + + Developer + Developer + + + Tuning Level + Tune Level + + + Choose your tuning level. Lower levels keep it simple; higher levels unlock more toggles for finer control. + +Minimal - Ideal for those who prefer simplicity or ease of use +Standard - Recommended for most users for a balanced experience +Advanced - Fine-tuning for experienced users +Developer - Highly customizable settings for seasoned enthusiasts + Pick tune level. Low keep simple. High open more knob for fine control. + +Minimal - Good for ones who want simple, easy +Standard - Good for most, balance +Advanced - Fine tune for expert +Developer - Many custom setting for seasoned enthusiast + + + WARNING: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do! + WARNING: These setting risky. They can change how openpilot drive a lot. Only change if you fully understand what they do! + + + All toggle descriptions are currently expanded. You can tap a toggle's name to open or close its description at any time! + All toggle talk open now. Tap toggle name to open or close talk any time! + + + + FrogPilotSoundsPanel + + Alert Volume Controller + Alert Noise Knob + + + <b>Set how loud each type of openpilot alert is</b> to keep routine prompts from becoming distracting. + <b>Set how loud each openpilot alert type</b> so routine prompt no distract. + + + Disengage Volume + Stop loud sound + + + <b>Set the volume for alerts when openpilot disengages.</b><br><br>Examples include: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". + <b>Set loud for alert when openpilot stop work.</b><br><br>Example: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". + + + Engage Volume + Make sound loud to start + + + <b>Set the volume for the chime when openpilot engages</b>, such as after pressing the "RESUME" or "SET" steering wheel buttons. + <b>Set chime loud when openpilot engage</b>, like after press "RESUME" or "SET" on wheel. + + + Prompt Volume + Prompt Boom Voice + + + <b>Set the volume for prompts that need attention.</b><br><br>Examples include: "Car Detected in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". + <b>Set loud for prompts need attention.</b><br><br>Example: "Car in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". + + + Prompt Distracted Volume + Prompt Distracted Volume + + + <b>Set the volume for prompts when openpilot detects driver distraction or unresponsiveness.</b><br><br>Examples include: "Pay Attention", "Touch Steering Wheel". + <b>Set loud for prompts when openpilot see driver distracted or not respond.</b><br><br>Example: "Pay Attention", "Touch Steering Wheel". + + + Refuse Volume + Refuse Volume + + + <b>Set the volume for alerts when openpilot refuses to engage.</b><br><br>Examples include: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". + <b>Set loud for alerts when openpilot say no engage.</b><br><br>Example: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". + + + Warning Soft Volume + Warning Soft Sound + + + <b>Set the volume for softer warnings about potential risks.</b><br><br>Examples include: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". + <b>Set volume for soft warn about risk.</b><br><br>Example: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". + + + Warning Immediate Volume + Warning Immediate Volume + + + <b>Set the volume for the loudest warnings that require urgent attention.</b><br><br>Examples include: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". + <b>Set volume for loudest warning. Need urgent attention.</b><br><br>Example: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". + + + FrogPilot Alerts + + + + <b>Optional FrogPilot alerts</b> that highlight driving events in a more noticeable way. + <b>Optional FrogPilot alert</b>. Make drive event stand out more. + + + Goat Scream + Goat Scream + + + <b>Play the infamous "Goat Scream" when the steering controller reaches its limit.</b> Based on the "Turn Exceeds Steering Limit" event. + <b>Play bad Goat Scream when steering controller hit limit.</b> Based on "Turn Exceeds Steering Limit" event. + + + Green Light Alert + Green Light Warning + + + <b>Play an alert when the model predicts a red light has turned green.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights. This alert is based on end-to-end model predictions from camera input and may trigger even when the light has not changed.</i> + <b>Play alert when model think red light turn green.</b><br><br><i><b>Disclaimer</b>: openpilot not detect traffic light direct. This alert come from end-to-end model guess from camera and may ding even when light not change.</i> + + + Lead Departing Alert + Lead go away alert + + + <b>Play an alert when the lead vehicle departs from a stop.</b> + <b>Make noise when lead car leave stop.</b> + + + Loud "Car Detected in Blindspot" Alert + Loud "Car in Blindspot" Alert + + + <b>Play a louder alert if a vehicle is in the blind spot when attempting to change lanes.</b> Based on the "Car Detected in Blindspot" event. + <b>Make alert louder if car in blind spot when try change lane.</b> Based on "Car Detected in Blindspot" event. + + + Speed Limit Changed Alert + Speed Limit Change Alert + + + <b>Play an alert when the posted speed limit changes.</b> + <b>Play alert when posted speed limit change.</b> + + + Muted + Mute + + + Auto + Auto + + + Test + Test + + + + FrogPilotThemesPanel + + Custom Themes + Custom Themes + + + <b>The overall look and feel of openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot look and feel.</b> Use "Theme Maker" in "The Pond" to make theme, share theme! + + + Color Scheme + Color look + + + <b>The color scheme used throughout openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Color look openpilot use everywhere.</b> Use "Theme Maker" in "The Pond" make and share your own theme! + + + Distance Button + Distance Button + + + <b>The distance button icons shown on the driving screen.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Distance button picture on drive screen.</b> Use "Theme Maker" in "The Pond" make and share own theme! + + + Icon Pack + Icon Pack + + + <b>The icon style used across openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Icon style used across openpilot.</b> Use "Theme Maker" in "The Pond" make and share own theme! + + + Sound Pack + Sound Pack + + + <b>The sound pack used by openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Sound pack openpilot use.</b> Use "Theme Maker" in "The Pond" make and share own theme! + + + Steering Wheel + Steer Wheel + + + <b>The steering-wheel icon</b> shown at the top-right of the driving screen. Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Steering-wheel picture</b> sit top-right on drive screen. Use "Theme Maker" in "The Pond" make and share own theme! + + + Turn Signal + Turn Signal + + + <b>Themed turn-signal animations.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Theme blink blink.</b> Use "Theme Maker" in "The Pond" make and share own theme! + + + Download Status + Download Status + + + Holiday Themes + Holiday Theme""" + + + + + <b>Themes based on U.S. holidays.</b> Minor holidays last one day; major holidays (Christmas, Easter, Halloween) run for a full week. + <b>Theme from U.S. holiday.</b> Small holiday last one day. Big holiday (Christmas, Easter, Halloween) run full week. + + + Rainbow Path + Rainbow Path + + + <b>Color the driving path like a Mario Kartโ€“style "Rainbow Road".</b> + <b>Make drive path look like Mario Kart "Rainbow Road".</b> + + + Random Events + Random Thing Happen + + + <b>Occasional on-screen effects triggered by driving conditions.</b> These are purely a visual and don't impact how openpilot drives! + <b>Sometime screen show effect from road.</b> Only look thing. No change how openpilot drive! + + + Random Themes + Random Theme + + + <b>Pick a random theme between each drive</b> from the themes you have downloaded. Great for variety without changing settings while driving. + <b>Pick random theme each drive</b> from themes you download. Good for variety. No change settings when driving. + + + Startup Alert + Start Alert + + + <b>Customize the "Startup Alert" message</b> shown at the start of each drive. + <b>Change "Startup Alert" words</b> shown when each drive start. + + + DELETE + DELETE + + + DOWNLOAD + DOWNLOAD + + + SELECT + SELECT + + + Select a color scheme to delete + Pick color scheme to delete + + + Delete the "%1" color scheme? + Delete "%1" color scheme? + + + Delete + Delete + + + Select a color scheme to download + Pick color scheme to download + + + Select a color scheme + Pick color look + + + Select a distance icon pack to delete + Pick distance icon pack to delete + + + Delete the "%1" distance icon pack? + Delete "%1" distance icon pack? + + + Select a distance icon pack to download + Pick distance icon pack to download + + + Select a distance icon pack + Pick distance icon pack + + + Select an icon pack to delete + Pick icon pack to delete + + + Delete the "%1" icon pack? + Delete "%1" icon pack? + + + Select an icon pack to download + Pick icon pack to download + + + Select an icon pack + Pick icon pack + + + Select a signal animation to delete + Pick signal animation to delete + + + Delete the "%1" signal animation? + Delete "%1" signal animation? + + + Select a signal animation to download + Pick signal moving picture to download + + + Select a signal animation + Pick signal dance + + + Select a sound pack to delete + Pick sound pack to delete + + + Delete the "%1" sound pack? + Delete "%1" sound pack? + + + Select a sound pack to download + Pick sound pack to download + + + Select a sound pack + Pick sound pack + + + Select a steering wheel to delete + Pick wheel to delete + + + Delete the "%1" steering wheel? + Delete "%1" steer wheel? + + + Select a steering wheel to download + Pick wheel to download + + + Select a steering wheel + Pick steering wheel + + + STOCK + STOCK + + + FROGPILOT + FROGPILOT + + + CUSTOM + CUSTOM + + + CLEAR + CLEAR + + + Enter the text for the top half + Enter text for top half + + + Characters: 0/%1 + Marks: 0/%1 + + + Enter the text for the bottom half + Put text for bottom half + + + Are you sure you want to completely reset your startup message? + You sure want reset startup message all way? + + + "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! + "Random Themes" only work with theme you download. You download theme you want it use! + + + CANCEL + CANCEL + + + + FrogPilotUtilitiesPanel + + Debug Mode + Debug Mode + + + <b>Use FrogPilot's developer metrics on your next drive</b> to diagnose issues and improve bug reports. + <b>Use FrogPilot developer metrics next drive</b> to find bad. Make bug report better. + + + Flash Panda + Flash Panda + + + FLASH + FLASH + + + <b>Reinstall the Panda firmware</b> to fix connection or reliability issues. + <b>Reinstall Panda firmware</b> to fix connect or reliability trouble. + + + Are you sure you want to flash the Panda firmware? + You sure want flash Panda firmware? + + + Flash + Flash + + + Flashing... + Make light blink... + + + Flashed! + Flash done! + + + Rebooting... + Me reboot now... + + + Force Drive State + Force Drive State + + + <b>Manually set openpilot to be offroad or onroad.</b> + <b>Man make openpilot offroad or onroad by hand.</b> + + + OFFROAD + OFFROAD + + + ONROAD + ONROAD + + + OFF + OFF + + + Report a Bug or an Issue + Report bug or issue + + + REPORT + REPORT + + + <b>Send a bug report</b> so we can help fix the problem! + <b>Send bug report</b> so we fix problem! + + + Please connect to the internet before sending a report! + Connect to internet first. Then send report! + + + I saw an alert that said "openpilot crashed" + Me see alert say "openpilot crashed" + + + Acceleration feels harsh or jerky + Go fast feel harsh or jerky + + + An alert was unclear and I didn't know what it meant + Alert not clear. Me not know what it mean. + + + Braking is too sudden or uncomfortable + Brake too sudden. Not comfy. + + + I'm not sure if this is normal or a bug: + Me not sure. This normal or bug? + + + My screen froze or is stuck loading something + My screen freeze. It stuck loading thing. + + + My steering wheel buttons aren't working + My wheel button no work + + + openpilot disengages when I don't expect it + openpilot stop work when me not expect it + + + openpilot doesn't react to stopped vehicles ahead + openpilot no react to stopped car ahead + + + openpilot doesn't resume from a stop + openpilot no start again after stop + + + openpilot feels sluggish or slow to respond + openpilot feel slow. openpilot react late. + + + Steering feels twitchy or unnatural + Steering feel twitchy. Feel not natural. + + + The car doesn't follow curves well + Car no follow curve good + + + The car isn't staying centered in its lane + Car not stay center in lane. + + + Something else (please describe) + Something else (you tell what) + + + What's going on? + What happen? + + + Please describe what's happening + Please say what happen now + + + Send Report + Send Report + + + What's your Discord username? + What your Discord name? + + + Report Sent! Thanks for letting us know! + Report sent! Thank for tell us! + + + Reset Toggles to Default + Reset Switches to Default + + + RESET + RESET + + + <b>Reset all toggles to their default values.</b> + <b>Reset all toggles to default value.</b> + + + Are you sure you want to reset all toggles to their default values? + You sure you want reset all toggle to default value? + + + Reset + Reset + + + Resetting... + Me reset now... + + + Reset! + Make new! + + + Reset Toggles to Stock openpilot + Reset Toggle to Stock openpilot + + + <b>Reset all toggles to match stock openpilot.</b> + <b>Reset all toggle. Make same as stock openpilot.</b> + + + Are you sure you want to reset all toggles to match stock openpilot? + You sure? Reset all toggles to same as stock openpilot? + + + + FrogPilotVehiclesPanel + + Car Make + Car Make + + + SELECT + SELECT + + + Choose your car make + Pick your car make + + + Car Model + Car Model + + + Choose your car model + Pick your car model + + + Disable Automatic Fingerprint Detection + Turn Off Auto Fingerprint Find + + + <b>Force the selected fingerprint</b> and prevent it from ever changing. + <b>Force picked fingerprint</b>. No change ever. + + + Disable openpilot Longitudinal Control + Disable openpilot Longitudinal Control now + + + <b>Disable openpilot longitudinal</b> and use the car's stock ACC instead. + <b>Disable openpilot longitudinal</b>. Use car stock ACC instead. + + + Are you sure you want to completely disable openpilot longitudinal control? + You sure want turn off openpilot long control all the way? + + + General Motors Settings + General Motors setting + + + <b>FrogPilot features for General Motors vehicles.</b> + <b>FrogPilot thing for General Motors car.</b> + + + FrogsGoMoo's Experimental Tune + FrogsGoMoo Experiment Tune + + + <b>Experimental GM tune by FrogsGoMoo</b> that attempts to smoothen stopping and takeoff control. Use at your own risk! + <b>Experimental GM tune by FrogsGoMoo</b> try make stop and go smooth. You use at own risk! + + + Smooth Pedal Response on Hills + Pedal feel smooth on hill + + + <b>Smoothen acceleration and braking</b> when driving downhill/uphill. + <b>Make accel and brake smooth</b> when drive downhill/uphill. + + + Stop-and-Go Hack + Stop-and-Go Hack. Me use. + + + <b>Force stop-and-go</b> on the 2017 Chevy Volt. + <b>Make stop-and-go happen</b> on 2017 Chevy Volt. + + + Hyundai/Kia/Genesis Settings + Hyundai/Kia/Genesis setting + + + <b>FrogPilot features for Genesis, Hyundai, and Kia vehicles.</b> + <b>FrogPilot thing for Genesis, Hyundai, and Kia car.</b> + + + comma's New Longitudinal API + comma new long brain API + + + <b>comma's new gas and brake control system</b> that improves acceleration and braking but may cause issues on some Genesis/Hyundai/Kia vehicles. + <b>comma new gas and brake control</b> make go faster and stop better, but maybe cause trouble on some Genesis/Hyundai/Kia car. + + + "Taco Bell Run" Torque Hack + "Taco Bell Run" Torque Hack + + + <b>The steering torque hack from comma's 2022 "Taco Bell Run".</b> Designed to increase steering torque at low speeds for left and right turns. + <b>Steering torque hack from comma 2022 "Taco Bell Run".</b> Make more steer push at low speed for left turn and right turn. + + + Toyota/Lexus Settings + Toyota/Lexus Setting + + + <b>FrogPilot features for Lexus and Toyota vehicles.</b> + <b>FrogPilot thing for Lexus and Toyota car.</b> + + + Automatically Lock/Unlock Doors + Auto Lock/Unlock Door + + + <b>Automatically lock/unlock doors</b> when shifting in and out of drive. + <b>Auto lock/unlock door</b> when shift in and out of drive. + + + Dashboard Speed Offset + Dash Speed Offset + + + <b>The speed offset openpilot uses to match the speed on the dashboard display.</b> + <b>Speed offset openpilot use to match speed on dashboard display.</b> + + + FrogsGoMoo's Personal Tweaks + FrogsGoMoo Personal Tweak + + + <b>Personal tweaks by FrogsGoMoo for quicker acceleration and smoother braking.</b> + <b>FrogsGoMoo make car go fast quick, brake smooth.</b> + + + Lock Doors On Ignition Off After + Lock door when ignition off after + + + <b>Automatically lock the doors on ignition off</b> when no one is detected in the front seats. + <b>Auto lock door when ignition off</b> if no one in front seat. + + + <b>Force stop-and-go</b> on Lexus/Toyota vehicles without stock stop-and-go functionality. + <b>Force stop-and-go</b> on Lexus/Toyota car that no have stock stop-and-go. + + + MANAGE + MANAGE + + + Lock + Lock + + + Unlock + Unlock + + + Never + Never + + + seconds + seconds + + + None + None + + + Vehicle Info + Car Info + + + <b>Information about your vehicle in regards to openpilot support and functionality.</b> + <b>Info of your car for openpilot help and what it do.</b> + + + <b>Detected 3rd party hardware.</b> + <b>Find 3rd party hardware.</b> + + + openpilot Longitudinal Support + openpilot Long go fast/slow help + + + <b>Can openpilot control the vehicle's acceleration and braking?</b> + <b>openpilot make car go fast and stop?</b> + + + <b>Does your vehicle support the "comma pedal"?</b> + <b>Your car support "comma pedal"?</b> + + + Radar Support + Radar Help + + + <b>Does openpilot use the vehicle's radar data</b> alongside the device's camera for tracking lead vehicles? + <b>openpilot use car radar data</b> with device camera to track lead car? + + + SDSU Support + SDSU Help + + + <b>Does your vehicle support "SDSUs"?</b> + <b>Your car support "SDSUs"?</b> + + + Stop-and-Go Support + Stop-and-Go help + + + <b>Does your vehicle support stop-and-go driving?</b> + <b>Your car do stop-and-go?</b> + + + VIEW + LOOK + + + Yes + Yes + + + No + No + + + 3rd Party Hardware Detected + Third party hardware found + + + Blind Spot Support + Blind Spot Help + + + <b>Does openpilot use the vehicle's blind spot data?</b> + <b>openpilot use car blind spot data?</b> + + + comma Pedal Support + comma Pedal Help + + + + FrogPilotVisualsPanel + + Advanced UI Controls + Advanced UI Control + + + <b>Advanced visual changes</b> to fine-tune how the driving screen looks. + <b>Advanced look change</b> to tweak how drive screen look. + + + Hide Current Speed + Hide Now Speed + + + <b>Hide the current speed</b> from the driving screen. + <b>Hide current speed</b> from drive screen. + + + Hide Lead Marker + Hide Lead Marker + + + <b>Hide the lead-vehicle marker</b> from the driving screen. + <b>Hide lead-vehicle mark</b> from drive screen. + + + Hide Map Settings Button + Hide Map Settings Button + + + <b>Hide the map settings button or map</b> from the driving screen. + <b>Hide map settings button or map</b> on driving screen. + + + Hide Max Speed + Hide Max Speed + + + + + <b>Hide the max speed</b> from the driving screen. + <b>Hide max speed</b> from drive screen. + + + Hide Non-Critical Alerts + Hide not-critical alert + + + <b>Hide non-critical alerts</b> from the driving screen. + <b>Hide non-critical alerts</b> from drive screen. + + + Hide Speed Limits + Hide Speed Limit + + + <b>Hide posted speed limits</b> from the driving screen. + <b>Hide posted speed limits</b> from driving screen. + + + Use Wheel Speed + Use Wheel Speed + + + <b>Use the vehicle's wheel speed</b> instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives! + <b>Use car wheel speed</b> not cluster speed. Only look change. No change how openpilot drive! + + + Developer UI + Developer UI + + + <b>Detailed information about openpilot's internal operations.</b> + <b>Big detail on openpilot inside work.</b> + + + Adjacent Path Metrics + Next Path Numbers + + + <b>Show the width of the adjacent lanes.</b> + <b>Show width of lane next to you.</b> + + + Developer Metrics + Maker Numbers + + + <b>Performance data, sensor readings, and system metrics</b> for debugging and optimizing openpilot. + <b>Performance data, sensor readings, system metrics</b> for fix bug and make openpilot faster. + + + Border Metrics + Border Number Things + + + <b>Show statuses along the border of the driving screen.</b><br><br><b>Blind Spot</b>: The border turns red when a vehicle is in a blind spot<br><b>Steering Torque</b>: The border goes from green to red according to how much steering torque is being used<br><b>Turn Signal</b>: The border flashes yellow when a turn signal is on + <b>Show status on edge of drive screen.</b><br><br><b>Blind Spot</b>: Edge turn red when car in blind spot<br><b>Steering Torque</b>: Edge go green to red based on how much steering torque used<br><b>Turn Signal</b>: Edge flash yellow when turn signal on + + + Lead Info + Lead Info + + + <b>Show each tracked vehicle's distance and speed</b> below its marker. + <b>Show each tracked car distance and speed</b> under it marker. + + + FPS Display + FPS Show + + + <b>Show the frames per second (FPS)</b> at the bottom of the driving screen. + <b>Show frames per second (FPS)</b> at bottom of driving screen. + + + Numerical Temperature Gauge + Number Heat Gauge + + + <b>Show a numerical temperature in the sidebar</b> instead of the status labels. + <b>Show number temp in sidebar</b> not status label. + + + Sidebar Metrics + Side Cave Numbers + + + <b>Display system information</b> (CPU, GPU, RAM usage, IP address, device storage) in the sidebar. + <b>Show system info</b> (CPU, GPU, RAM use, IP address, device storage) in sidebar. + + + Use International System of Units + Use SI units + + + <b>Display measurements using the "International System of Units" (SI)</b> standard. + <b>Use "International System of Units" (SI)</b> standard for measure.</b + + + Developer Sidebar + Developer Sidebar + + + <b>Display debugging info and metrics</b> in a dedicated sidebar on the right side of the screen. + <b>Show debug info and numbers</b> in own side bar on right side of screen. + + + Metric #1 + Metric #1 + + + <b>Select the metric shown in the first "Developer Sidebar" widget.</b> + <b>Pick metric show in first "Developer Sidebar" widget.</b> + + + Metric #2 + Metric #2 + + + <b>Select the metric shown in the second "Developer Sidebar" widget.</b> + <b>Pick metric show in second "Developer Sidebar" widget.</b> + + + Metric #3 + Metric #3 + + + <b>Select the metric shown in the third "Developer Sidebar" widget.</b> + <b>Pick metric show in third "Developer Sidebar" widget.</b> + + + Metric #4 + Metric #4 + + + <b>Select the metric shown in the fourth "Developer Sidebar" widget.</b> + <b>Pick metric shown in fourth "Developer Sidebar" widget.</b> + + + Metric #5 + Metric #5 + + + <b>Select the metric shown in the fifth "Developer Sidebar" widget.</b> + <b>Pick metric shown in fifth "Developer Sidebar" widget.</b> + + + Metric #6 + Metric #6 + + + <b>Select the metric shown in the sixth "Developer Sidebar" widget.</b> + <b>Pick metric in sixth "Developer Sidebar" widget.</b> + + + Metric #7 + Metric #7 + + + <b>Select the metric shown in the seventh "Developer Sidebar" widget.</b> + <b>Pick metric shown in seventh "Developer Sidebar" widget.</b> + + + Developer Widgets + Maker Widget + + + <b>Overlays for debugging visuals, internal states, and model predictions</b> on the driving screen. + <b>Overlay show debug picture, inside brain, model guess</b> on drive screen. + + + Adjacent Leads Tracking + Side Car Ahead Track + + + <b>Display adjacent leads detected by the car's radar</b> to the left and right of the current driving path. + <b>Show car radar find neighbor lead</b> on left and right of now drive path. + + + Model Stopping Point + Model Stop Place + + + <b>Show a stop-sign marker where the model intends to stop.</b> + <b>Show stop-sign mark where model plan stop.</b> + + + Radar Tracks + Radar Track + + + <b>Display all radar points</b> produced by the car's radar. + <b>Show all radar dot</b> made by car radar. + + + Driving Screen Widgets + Drive Screen Widgets + + + <b>Custom FrogPilot widgets</b> for the driving screen. + <b>Custom FrogPilot widget</b> for drive screen. + + + Acceleration Path + Go Fast Path + + + <b>Color the driving path by planned acceleration and braking.</b> + <b>Make drive path change color for plan go fast and brake.</b> + + + Adjacent Lanes + Next Lanes + + + <b>Show the driving paths for the left and right lanes.</b> + <b>Show drive path for left lane and right lane.</b> + + + Blind Spot Path + Blind Spot Path + + + <b>Show a red path when a vehicle is in that lane's blind spot.</b> + <b>Show red path when car hide in that lane blind spot.</b> + + + Compass + Compass + + + <b>Show the current driving direction</b> with a simple on-screen compass. + <b>Show now drive direction</b> with simple compass on screen. + + + Driving Personality Button + Drive Mood Button + + + <b>Control and view the current driving personality</b> via a driving screen widget. + <b>Control and see now drive personality</b> with drive screen widget. + + + Gas / Brake Pedal Indicators + Gas / Brake Pedal Sign + + + <b>On-screen gas and brake indicators.</b><br><br><b>Dynamic</b>: Opacity changes according to how much openpilot is accelerating or braking<br><b>Static</b>: Full when active, dim when not + <b>On-screen gas and brake mark.</b><br><br><b>Dynamic</b>: Opacity change by how much openpilot go or stop<br><b>Static</b>: Full when on, dim when off + + + Rotating Steering Wheel + Wheel turn rotate + + + <b>Rotate the driving screen wheel</b> with the physical steering wheel. + <b>Turn drive screen wheel</b> with real steer wheel. + + + Model UI + Model UI + + + <b>Model visualizations</b> for the driving path, lane lines, path edges, and road edges. + <b>Model pictures</b> for drive path, lane lines, path edges, road edges. + + + Dynamic Path Width + Path width change self. + + + <b>Change the path width based on engagement.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% + <b>Change path width when car engaged.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% + + + Lane Lines Width + Lane Lines Width big-small + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 4 inches. + <b>Set lane-line thick.</b><br><br>Default same as MUTCD lane-line width, 4 inch. + + + Path Edges Width + Path Edge Width + + + <b>Set the driving-path edge width</b> that represents different driving modes and statuses.<br><br>Default is 20% of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + <b>Set drive-path edge width</b>. Show different drive mode and status.<br><br>Default 20% of whole path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + + + Path Width + Path Wide + + + <b>Set the driving-path width.</b><br><br>Default (6.1 feet) matches the width of a 2019 Lexus ES 350. + <b>Set driving-path width.</b><br><br>Default (6.1 feet) same as 2019 Lexus ES 350 width. + + + Road Edges Width + Road Edge Width + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 4 inches. + <b>Set road edge thick.</b><br><br>Default same as half MUTCD lane-line width standard of 4 inches. + + + "Unlimited" Road UI + "Unlimited" Road UI + + + <b>Extend the length of the driving path, lane lines, and road edges</b> for as far as the model can see. + <b>Make drive path long. Make lane line long. Make road edge long</b> for as far as model can see. + + + Navigation Widgets + Navigation Widgets -> Nav Thingies + + + <b>Map style, speed limits, and other navigation widgets.</b> + <b>Map look, speed limit, other nav widget.</b> + + + Larger Map Display + Big Map Show + + + <b>Increase the map size</b> for easier navigation readings. + <b>Make map big</b> for easy read when navigate. + + + Map Style + Map Look + + + <b>Select the map style</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai style<br><b>FrogPilot</b>: Official FrogPilot map style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>Mike's Personalized Style</b>: Customized hybrid satellite view + <b>Pick map look</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai look<br><b>FrogPilot</b>: Official FrogPilot map look<br><b>Mapbox Streets</b>: Standard street view<br><b>Mapbox Outdoors</b>: Show outdoor, terrain stuff<br><b>Mapbox Light</b>: Simple, bright<br><b>Mapbox Dark</b>: Simple, dark<br><b>Mapbox Navigation Day</b>: Good for day drive<br><b>Mapbox Navigation Night</b>: Good for night drive<br><b>Mapbox Satellite</b>: Only sky picture<br><b>Mapbox Satellite Streets</b>: Sky picture with street words<br><b>Mapbox Traffic Night</b>: Dark, show traffic more<br><b>Mike's Personalized Style</b>: Custom mix sky picture view + + + Road Name + Road Name + + + <b>Display the road name at the bottom of the driving screen</b> using data from "OpenStreetMap (OSM)". + <b>Show road name at bottom of drive screen</b> using data from "OpenStreetMap (OSM)". + + + Show Speed Limits + Show Speed Limit + + + <b>Show speed limits</b> in the top-left corner of the driving screen. Uses data from the car's dashboard (if supported) and "OpenStreetMap (OSM)". + <b>Show speed limits</b> in top-left of drive screen. Use data from car dashboard (if support) and "OpenStreetMap (OSM)". + + + Show Speed Limits from Mapbox + Show Speed Limit from Mapbox + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>Use Mapbox speed-limit data when no other source there.</b> + + + Use Vienna-Style Speed Signs + Use Vienna-Style Speed Sign. + + + <b>Show Vienna-style (EU) speed-limit signs</b> instead of MUTCD (US). + <b>Show Vienna-style (EU) speed-limit signs</b> not MUTCD (US). + + + Quality of Life + Life feel good + + + <b>Miscellaneous visual changes</b> to fine-tune how the driving screen looks. + <b>Many small look change</b> to tweak how driving screen look. + + + Camera View + Camera Look + + + <b>Select the active camera view.</b> This is purely a visual change and doesn't impact how openpilot drives! + <b>Pick camera view now.</b> Only look change. openpilot drive same! + + + Show Driver Camera When In Reverse + Show Driver Camera When Reverse + + + <b>Show the driver camera feed</b> when the vehicle is in reverse. + <b>Show driver camera feed</b> when car go reverse. + + + Stopped Timer + Timer stop + + + <b>Show a timer when stopped</b> in place of the current speed to indicate how long the vehicle has been stopped. + <b>Show timer when stop</b> instead of now speed. Tell how long car stop. + + + Hide Map + Hide Map + + + Blind Spot + Blind Spot + + + Steering Torque + Steer Torque + + + Turn Signal + Blink Stick + + + Fahrenheit + Fahrenheit + + + CPU + CPU + + + GPU + GPU + + + IP + IP + + + RAM + RAM + + + SSD Left + SSD Left + + + SSD Used + SSD Used + + + None + None + + + Acceleration: Current + Speed up: Now + + + Acceleration: Max + Go fast: Max + + + Auto Tune: Actuator Delay + Auto Tune: Actuator Delay + + + Auto Tune: Friction + Auto Tune: Friction bad + + + Auto Tune: Lateral Acceleration + Auto Tune: Side Push Force + + + Auto Tune: Steer Ratio + Auto Tune: Steer Ratio + + + Auto Tune: Stiffness Factor + Auto Tune: Stiffness Factor + + + Engagement %: Lateral + Engage %: Turn side + + + Engagement %: Longitudinal + Engage %: Go-straight power + + + Lateral Control: Steering Angle + Side Control: Wheel Angle + + + Lateral Control: Torque % Used + Side Control: Torque % Used + + + Longitudinal Control: Actuator Acceleration Output + Long Control: Actuator Go-Fast Output + + + Longitudinal MPC Jerk: Acceleration + Longitudinal MPC Jerk: Make car faster + + + Longitudinal MPC Jerk: Danger Zone + Longitudinal MPC Jerk: Danger Zone + + + Longitudinal MPC Jerk: Speed Control + Longitudinal MPC Jerk: Speed Control + + + SELECT + SELECT + + + Select a metric to display + Pick metric to show + + + Show Distance + Show Distance + + + Dynamic + Dynamic + + + Static + Static + + + inches + inches + + + Off + Off + + + feet + feet + + + Full Map + Full Map + + + Stock openpilot + Stock openpilot + + + FrogPilot + FrogPilot + + + Mapbox Streets + Mapbox Streets + + + Mapbox Outdoors + Mapbox Outdoors + + + Mapbox Light + Mapbox Light + + + Mapbox Dark + Mapbox Dark + + + Mapbox Navigation Day + Mapbox Navigation Daytime + + + Mapbox Navigation Night + Mapbox Navigation Night Time + + + Mapbox Satellite + Mapbox Sky Picture + + + Mapbox Satellite Streets + Mapbox Sky Picture Streets + + + Mapbox Traffic Night + Mapbox Traffic Night + + + Mike's Personalized Style + Mike own style special + + + Select a map style + Pick map style + + + Auto + Auto + + + Driver + Driver + + + Standard + Standard + + + Wide + Wide + + + foot + foot + + + inch + inch + + + meter + meter + + + meters + meters + + + centimeter + centimeter + + + centimeters + centimeter + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 10 centimeters. + <b>Make lane-line thick.</b><br><br>Default same as MUTCD lane-line width, 10 centimeters. + + + <b>Set the driving-path width.</b><br><br>Default (1.9 meters) matches the width of a 2019 Lexus ES 350. + <b>Set drive-path width.</b><br><br>Default (1.9 meters) same width as 2019 Lexus ES 350. + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 10 centimeters. + <b>Set road-edge thickness.</b><br><br>Default same as half MUTCD lane-line width standard, 10 centimeters. + + + + FrogPilotWheelPanel + + Distance Button + Distance Button + + + <b>Action performed when the "Distance" button is pressed.</b> + <b>Thing happen when "Distance" button get press.</b> + + + Distance Button (Long Press) + Distance Button (Long Press) + + + <b>Action performed when the "Distance" button is pressed for more than 0.5 seconds.</b> + <b>What happen when press "Distance" button more than 0.5 second.</b> + + + Distance Button (Very Long Press) + Distance Button (Very Long Press) + + + <b>Action performed when the "Distance" button is pressed for more than 2.5 seconds.</b> + <b>What happen when press "Distance" button more than 2.5 seconds.</b> + + + LKAS Button + LKAS Button + + + <b>Action performed when the "LKAS" button is pressed.</b> + <b>Thing happen when "LKAS" button get press.</b> + + + No Action + No Do + + + Pause Steering + Stop wheel steer + + + Change "Personality Profile" + Change "Personality Profile" + + + Force openpilot to Coast + Force openpilot to Coast. + + + Pause Acceleration/Braking + Pause Go/Brake + + + Toggle "Experimental Mode" On/Off + Flip "Experimental Mode" On/Off + + + Toggle "Traffic Mode" On/Off + Toggle "Traffic Mode" On/Off + + + SELECT + SELECT + + + Select a function to assign to this button + Pick job for this button + + + + InputDialog + + Cancel + Stop + + + Need at least %n character(s)! + + Need at least %n char! + Need at least %n char! + + + + Characters: %1/%2 + Characters: %1/%2 + + + + Installer + + Installing... + Installing... + + + + MapETA + + eta + eta + + + min + min + + + hr + hr + + + + MapSettings + + NAVIGATION + NAVIGATION + + + Manage at %1 + Manage at %1 + + + + MapWindow + + Map Loading + Map load + + + Waiting for GPS + Wait for GPS + + + Waiting for route + Wait for route + + + + MultiOptionDialog + + Select + Pick + + + Cancel + Stop + + + + Networking + + Advanced + Advanced + + + Enter password + Enter password now + + + for "%1" + for "%1" + + + Wrong password + Bad password + + + + OffroadAlert + + Device temperature too high. System cooling down before starting. Current internal component temperature: %1 + Device too hot. System cool down before start. Inside part heat now: %1 + + + Immediately connect to the internet to check for updates. If you do not connect to the internet, openpilot won't engage in %1 + Connect to internet now. Check for updates. If no connect to internet, openpilot no engage in %1 + + + Connect to internet to check for updates. openpilot won't automatically start until it connects to internet to check for updates. + Connect to internet. Check for updates. openpilot no auto start until connect to internet and check for updates. + + + Unable to download updates +%1 + No can download update +%1 + + + Taking camera snapshots. System won't start until finished. + Take camera snapshots. System no start until done. + + + An update to your device's operating system is downloading in the background. You will be prompted to update when it's ready to install. + Device brain update download in back. When ready install, we poke you to update. + + + Device failed to register. It will not connect to or upload to comma.ai servers, and receives no support from comma.ai. If this is an official device, visit https://comma.ai/support. + Device not register. It not connect or upload to comma.ai server. It get no support from comma.ai. If device official, go https://comma.ai/support. + + + NVMe drive not mounted. + NVMe drive no mount. + + + Unsupported NVMe drive detected. Device may draw significantly more power and overheat due to the unsupported NVMe. + Find unsupported NVMe. Device maybe suck much power. Device maybe overheat from unsupported NVMe. + + + openpilot was unable to identify your car. Your car is either unsupported or its ECUs are not recognized. Please submit a pull request to add the firmware versions to the proper vehicle. Need help? Join discord.comma.ai. + openpilot no find your car. Car not supported or ECUs not seen. You make pull request, add firmware versions to right vehicle. Need help? Join discord.comma.ai. + + + openpilot was unable to identify your car. Check integrity of cables and ensure all connections are secure, particularly that the comma power is fully inserted in the OBD-II port of the vehicle. Need help? Join discord.comma.ai. + openpilot no find your car. Check cable good. Make all plugs tight. Push comma power all way in OBD-II hole on vehicle. Need help? Go discord.comma.ai. + + + openpilot detected a change in the device's mounting position. Ensure the device is fully seated in the mount and the mount is firmly secured to the windshield. + openpilot see device mount change. Make device sit all way in mount. Make mount hold tight to windshield. + + + + OffroadHome + + UPDATE + UPDATE + + + ALERTS + ALERTS + + + ALERT + ALERT + + + + OnroadAlerts + + openpilot crashed + openpilot go boom + + + Please post the "Error Log" in the FrogPilot Discord! + Please post "Error Log" in FrogPilot Discord! + + + openpilot Unavailable + openpilot no work + + + Waiting for controls to start + Wait for controls start + + + TAKE CONTROL IMMEDIATELY + TAKE CONTROL NOW + + + Controls Unresponsive + Controls no respond + + + Reboot Device + Reboot device now + + + openpilot crashed ๐Ÿ’ฉ + openpilot go boom ๐Ÿ’ฉ + + + + PairingPopup + + Pair your device to your %1 account + Pair device to your %1 account + + + Go to https://%1 on your phone + Go to https://%1 on your phone now + + + Click "add new device" and scan the QR code on the right + Click "add new device" then scan QR code on right + + + Bookmark %1 to your home screen to use it like an app + Put %1 on home screen. Use like app. + + + + ParamControl + + Enable + Turn on + + + Cancel + Stop + + + + PrimeAdWidget + + Upgrade Now + Upgrade now + + + Become a comma prime member at connect.comma.ai + Become comma prime member at connect.comma.ai + + + PRIME FEATURES: + PRIME THING:" + + + Remote access + Remote access + + + 24/7 LTE connectivity + LTE connect all day, all night + + + 1 year of drive storage + 1 year drive stash + + + Turn-by-turn navigation + Turn-by-turn path show + + + + PrimeUserWidget + + โœ“ SUBSCRIBED + โœ“ ME SUBSCRIBE + + + comma prime + comma prime + + + + QObject + + km + km + + + m + m + + + mi + mi + + + ft + ft + + + Restore + Bring back + + + Exit + Leave + + + FrogPilot + FrogPilot + + + now + now + + + %n minute(s) ago + + %n minute(s) before + %n minute(s) before + + + + %n hour(s) ago + + %n hour(s) before + %n hour(s) before + + + + %n day(s) ago + + %n day(s) before + %n day(s) before + + + + + Reset + + Reset failed. Reboot to try again. + Reset no work. Reboot, try again. + + + Resetting device... +This may take up to a minute. + Reset device... +This take up to one minute. + + + Are you sure you want to reset your device? + You sure want reset device? + + + System Reset + System Reset + + + System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. + System reset happen. Press confirm to erase all thing and settings. Press cancel to keep boot. + + + Cancel + Stop + + + Reboot + Reboot + + + Confirm + Confirm + + + Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device. + No can mount data part. Maybe part broke. Press confirm to wipe and reset device. + + + + ScreenRecorder + + RECORDING + ME RECORDING + + + RECORD + RECORD + + + + SettingsWindow + + โ† Back + โ† Back + + + Device + Device + + + Network + Network + + + Toggles + Toggle switches + + + Software + Software + + + FrogPilot + FrogPilot + + + Welcome to FrogPilot! Since you're new to openpilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Welcome to FrogPilot! You new to openpilot. "Minimal" toggle preset now on. You can change any time with "Tuning Level" button! + + + Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Welcome to FrogPilot! You new to FrogPilot. "Minimal" toggle preset now on. You can change anytime with "Tuning Level" button! + + + Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + You new to FrogPilot. "Minimal" toggle preset on now. You can change anytime with "Tuning Level" button! + + + Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + You know openpilot. "Standard" toggle preset on now. You can change any time with "Tuning Level" button! + + + Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + You know FrogPilot good. We set "Standard" toggle preset now. You change anytime with "Tuning Level" button! + + + Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + You know FrogPilot good. "Advanced" toggle preset on now. You can change any time with "Tuning Level" button! + + + + Setup + + Something went wrong. Reboot the device. + Something go wrong. Reboot device. + + + Ensure the entered URL is valid, and the deviceโ€™s internet connection is good. + Make sure URL real. Make sure device have good internet. + + + No custom software found at this URL. + No custom software here at this URL. + + + WARNING: Low Voltage + WARNING: Low Volt + + + Power your device in a car with a harness or proceed at your own risk. + Power device in car with harness, or proceed at own risk. + + + Power off + Power off + + + Continue + Continue + + + Getting Started + Start Now + + + Before we get on the road, letโ€™s finish installation and cover some details. + Before road, we finish install. Then cover some detail. + + + Connect to Wi-Fi + Make Wiโ€‘Fi connect + + + Back + Back + + + Continue without Wi-Fi + Keep go without Wiโ€‘Fi + + + Waiting for internet + Me wait for internet + + + Choose Software to Install + Pick software to install + + + openpilot + openpilot + + + Custom Software + Custom Software + + + Enter URL + Type URL + + + for Custom Software + for Custom Software + + + Downloading... + Me download... + + + Download Failed + Download fail + + + Reboot device + Make device restart + + + Start over + Start over + + + Select a language + Pick language + + + + SetupWidget + + Finish Setup + Finish Setup + + + Pair your device with Konik connect (stable.konik.ai). + Pair device with Konik connect (stable.konik.ai). + + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + Pair device with comma connect (connect.comma.ai). Then claim comma prime offer. + + + Pair device + Pair device now + + + + Sidebar + + CONNECT + CONNECT + + + OFFLINE + OFFLINE + + + ONLINE + ONLINE + + + ERROR + ERROR + + + TEMP + TEMP + + + HIGH + HIGH + + + GOOD + GOOD + + + OK + OK + + + VEHICLE + VEHICLE + + + NO + NO + + + PANDA + PANDA + + + GPS + GPS + + + SEARCH + SEARCH + + + GPU + GPU + + + CPU + CPU + + + GB + GB + + + MEMORY + MEMORY + + + LEFT + LEFT + + + USED + USED + + + -- + โ€” + + + Wi-Fi + Wi-Fi + + + ETH + ETH + + + 2G + 2G + + + 3G + 3G + + + LTE + LTE + + + 5G + 5G + + + + SoftwarePanel + + Updates are only downloaded while the car is off or in park. + Update download only when car off or in park. + + + Current Version + Now Version + + + Automatically Update FrogPilot + Auto Update FrogPilot + + + FrogPilot will automatically update itself and it's assets when you're offroad and have an active internet connection. + FrogPilot update self and assets by self when offroad and internet on. + + + Download + Download + + + CHECK + CHECK + + + Install Update + Install Update + + + INSTALL + INSTALL + + + Target Branch + Target Branch + + + SELECT + SELECT + + + Select a branch + Pick branch + + + This branch must be downloaded before switching. Would you like to download it now? + Must download branch before switch. Download now? + + + Uninstall %1 + Uninstall %1 now + + + UNINSTALL + UNINSTALL + + + Are you sure you want to uninstall? + You sure you want uninstall? + + + Uninstall + Take out + + + Error Log + Error Log + + + VIEW + SEE + + + View the error log for openpilot crashes. + Look at error log for openpilot crash. + + + failed to check for update + fail check update + + + DOWNLOAD + DOWNLOAD + + + update available + update here now + + + never + never + + + up to date, last checked %1 + up to date. last check at %1 + + + Do you want to perform a full factory reset? All saved assets and settings will be permanently deleted! + You want do full factory reset? All saved stuff and settings get deleted forever! + + + This is a complete factory reset and cannot be undone. Are you absolutely sure you want to continue? + This wipe all. No undo. You sure-sure continue? + + + + SshControl + + SSH Keys + SSH Keys + + + Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. A comma employee will NEVER ask you to add their GitHub username. + Warning: This give SSH door to all public key in your GitHub setting. Never type GitHub username not yours. comma worker NEVER ask you add their GitHub username. + + + ADD + ADD + + + Enter your GitHub username + Enter GitHub name + + + LOADING + LOADING + + + REMOVE + REMOVE + + + Username '%1' has no keys on GitHub + Username '%1' have no key on GitHub + + + Request timed out + Request take too long + + + Username '%1' doesn't exist on GitHub + Username '%1' no exist on GitHub + + + + SshToggle + + Enable SSH + Turn on SSH + + + + TermsPage + + Terms & Conditions + Terms & Rules + + + Decline + Say no + + + Scroll to accept + Scroll to say yes + + + Agree + Me agree + + + + TogglesPanel + + Enable openpilot + Turn on openpilot + + + Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. + Use openpilot for ACC and lane keep help. You watch road always. Change take effect when car power off. + + + openpilot Longitudinal Control (Alpha) + openpilot Longitudinal Control (Alpha) for long go/stop + + + WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). + WARNING: openpilot long control in alpha for this car. It disable Automatic Emergency Braking (AEB). + + + On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. + This car use car ACC by default, not openpilot long control. Turn this on to use openpilot long control. When use openpilot long control alpha, best turn on Experimental mode. + + + Experimental Mode + Experiment Mode + + + Disengage on Accelerator Pedal + Unhook when press go pedal + + + When enabled, pressing the accelerator pedal will disengage openpilot. + When on, you press go pedal, openpilot stop. + + + Enable Lane Departure Warnings + Turn on lane leave warning + + + Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). + Get alert. Car drift over lane line, no turn signal, while you go over 31 mph (50 km/h). Alert tell steer back in lane. + + + Record and Upload Driver Camera + Record and Upload Driver Camera now + + + Upload data from the driver facing camera and help improve the driver monitoring algorithm. + Upload data from driver face camera. Help make driver watch algorithm better. + + + Use Metric System + Use metric system + + + Display speed in km/h instead of mph. + Show speed in km/h, not mph. + + + Show ETA in 24h Format + Show ETA in 24h form. + + + Use 24h format instead of am/pm + Use 24h time, not am/pm + + + Show Map on Left Side of UI + Show Map on Left Side of UI + + + Show map on left side when in split screen view. + Show map on left when split view. + + + Aggressive + Aggressive + + + Standard + Standard + + + Relaxed + Relaxed + + + Driving Personality + Drive Personality + + + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + Standard good. In aggressive mode, openpilot follow lead car close. More push gas, more brake. In relaxed mode, openpilot stay far from lead car. On supported car, you change these personality with steering wheel distance button. + + + openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: + openpilot drive in <b>chill mode</b> by default. Experimental mode turn on <b>alpha-level features</b> not ready for chill mode. Experimental features below: + + + End-to-End Longitudinal Control + End-to-End Long Control + + + Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. + Let driving model control gas and brake. openpilot drive like human, stop at red light and stop sign. Driving model pick speed; set speed only top limit. This alpha feature; expect mistake. + + + New Driving Visualization + New Drive Picture + + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + Drive picture switch to road-facing wide-angle camera at low speed. Show turn better. Experimental mode logo also show in top right corner. + + + Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. + Experimental mode not work now on this car. Car use stock ACC for go-stop control. + + + openpilot longitudinal control may come in a future update. + openpilot long go-brake maybe come in future update. + + + Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. + Turn on openpilot longitudinal control (alpha) toggle. Then Experimental mode work. + + + + Updater + + Update Required + Need update + + + An operating system update is required. Connect your device to Wi-Fi for the fastest update experience. The download size is approximately 1GB. + Need big brain update. Plug device to Wiโ€‘Fi for fast update. Download about 1GB. + + + Connect to Wi-Fi + Connect to Wi-Fi now + + + Install + Install + + + Back + Back + + + Loading... + Me load... + + + Reboot + Reboot + + + Update failed + Update no work + + + + WiFiPromptWidget + + Setup Wi-Fi + Set up Wi-Fi + + + Connect to Wi-Fi to upload driving data and help improve openpilot + Connect to Wiโ€‘Fi. Upload drive data. Help make openpilot better. + + + Open Settings + Open Settings + + + Ready to upload + Ready to upload now + + + Training data will be pulled periodically while your device is on Wi-Fi + Training data come sometimes when device on Wiโ€‘Fi + + + Uploading disabled + No upload. Disabled. + + + Toggle off the "Turn Off Data Uploads" toggle to re-enable uploads. + Flip off "Turn Off Data Uploads" toggle to make uploads work again. + + + + WifiUI + + Scanning for networks... + Me scan for network... + + + CONNECTING... + ME CONNECT... + + + FORGET + FORGET + + + Forget Wi-Fi Network "%1"? + Forget Wi-Fi cave net "%1"? + + + Forget + Forget + + + \ No newline at end of file diff --git a/selfdrive/ui/translations/main_de.ts b/selfdrive/ui/translations/main_de.ts index 6b17a7c53..f5e9ec31f 100644 --- a/selfdrive/ui/translations/main_de.ts +++ b/selfdrive/ui/translations/main_de.ts @@ -68,43 +68,43 @@ Hidden Network - Verstecktes Netzwerk + Verborgenes Netzwerk CONNECT - VERBINDEN + VERBINDEN Enter SSID - SSID eingeben + SSID eingeben Enter password - Passwort eingeben + Passwort eingeben for "%1" - fรผr "%1" + fรผr โ€ž%1โ€œ Off - Aus + Aus Always - Immer + Immer Only Onroad - Nur Onroad + Nur Onroad Until Reboot - Bis zum Neustart + Bis zum Neustart Allow tethering with your data SIM and keep it active either while driving or continuously. - Erlauben Sie Tethering mit Ihrer Daten-SIM und halten Sie es entweder wรคhrend der Fahrt oder kontinuierlich aktiv. + Erlaube Tethering mit deiner Daten-SIM und halte es entweder wรคhrend der Fahrt oder durchgehend aktiv. @@ -160,98 +160,98 @@ DestinationWidget Home - Zuhause + Startseite Work - Arbeit + Arbeiten No destination set - Kein Ziel festgelegt + Kein Ziel festgelegt No %1 location set - Kein %1-Standort festgelegt + Kein %1-Standort festgelegt home - Zuhause + Startseite work - arbeiten + arbeiten DeveloperSidebar m/sยฒ - m/sยฒ + m/sยฒ ft/sยฒ - ft/sยฒ + ft/sยฒ ACCEL - ACCEL + GAS ACCEL JERK - BESCHLEUNIGUNGSRUCK + BESCHL.-RUCKEN ACT ACCEL - ACT ACCEL + AKT GAS DANGER JERK - GEFAHR IDIOT + GEFAHR RUCKEN STEER DELAY - LENKVERZร–GERUNG + LENKVERZร–GERUNG FRICTION - REIBUNG + REIBUNG LAT ACCEL - LAT BESCHL. + LAT-BESCHL. LATERAL % - LATERAL % + SEITLICH % LONG % - LANG % + LONG % MAX ACCEL - MAX BESCHLEUNIGUNG + MAX-BESCHLEUNIGUNG SPEED JERK - GESCHWINDIGKEITSRUCK + GESCHWINDIGKEITS-RUCKELN STEER ANGLE - Lenkwinkel + LENKWINKEL STEER RATIO - Lenkverhรคltnis + LENKรœBERSETZUNG STEER STIFF - LENKUNG STEIF + LENKUNG STEIF TORQUE % - DREHMOMENT % + DREHMOMENT % @@ -390,38 +390,38 @@ Pair Device - Gerรคt koppeln + Gerรคt koppeln PAIR - PAAR + KOPPELN Pair your device with Konik connect (stable.konik.ai). - Koppeln Sie Ihr Gerรคt mit Konik connect (stable.konik.ai). + Koppeln Sie Ihr Gerรคt mit Konik connect (stable.konik.ai). DriveStats FROGPILOT - FROGPILOT + FROGPILOT Drives - Laufwerke + Fahrten Hours - Stunden + Stunden KM - KM + KM Miles - Meilen + Meilen @@ -446,3837 +446,3952 @@ FrogPilotAnnotatedCameraWidget m/sยฒ - m/sยฒ + m/sยฒ meters - Meter + Meter m/s - m/s + m/s km/h - km/h + km/h ft/sยฒ - ft/sยฒ + ft/sยฒ feet - FรผรŸe + FuรŸ mph - mph + mph Vehicle in blind spot - Fahrzeug im toten Winkel + Fahrzeug im toten Winkel PENDING - AUSSTEHEND + AUSSTEHEND LIMIT - LIMIT + LIMIT FrogPilotConfirmationDialog Reboot required to take effect. - Neustart erforderlich, um wirksam zu werden. + Neustart erforderlich, damit die ร„nderung wirksam wird. Reboot Now - Jetzt neu starten + Jetzt neu starten Reboot Later - Spรคter neu starten + Spรคter neu starten Yes - Ja + Ja No - Nein + Nein FrogPilotDataPanel - Delete Driving Footage and Data - Fahrmaterial und Daten lรถschen + Delete Driving Data + Fahrdaten lรถschen DELETE - Lร–SCHEN + Lร–SCHEN - Deletes all stored driving footage and data from your device. Ideal for maintaining privacy or for simply freeing up space. - Lรถscht alle gespeicherten Fahrvideos und Daten von Ihrem Gerรคt. Ideal, um die Privatsphรคre zu wahren oder einfach Speicherplatz freizugeben. + <b>Delete all stored driving footage and data</b> to free up space and clear private information. + <b>Alle gespeicherten Fahraufnahmen und Daten lรถschen</b>, um Speicherplatz freizugeben und private Informationen zu entfernen. - Are you sure you want to delete all of your driving footage and data? - Mรถchten Sie wirklich alle Ihre Fahraufnahmen und Daten lรถschen? + Delete all driving data and footage? + Alle Fahrdaten und Aufnahmen lรถschen? Delete - Lรถschen + Lรถschen Deleting... - Lรถschen... + Lรถschen... Deleted! - Gelรถscht! + Gelรถscht! Delete Error Logs - Fehlerprotokolle lรถschen + Fehlerprotokolle lรถschen - Deletes all stored error logs from your device. Ideal for freeing up space. - Lรถscht alle gespeicherten Fehlerprotokolle von Ihrem Gerรคt. Ideal, um Speicherplatz freizugeben. + <b>Delete collected error logs</b> to free up space and clear old crash records. + <b>Gesammelte Fehlerprotokolle lรถschen</b>, um Speicherplatz freizugeben und alte Absturzaufzeichnungen zu entfernen. - Are you sure you want to delete all of the error logs? - Mรถchten Sie wirklich alle Fehlerprotokolle lรถschen? + Delete all error logs? + Alle Fehlerprotokolle lรถschen? Screen Recordings - Bildschirmaufnahmen + Bildschirmaufnahmen - Manage your screen recordings. - Verwalten Sie Ihre Bildschirmaufnahmen. + <b>Delete or rename screen recordings.</b> + <b>Bildschirmaufnahmen lรถschen oder umbenennen.</b> DELETE ALL - ALLES Lร–SCHEN + ALLES Lร–SCHEN RENAME - UMBENENNEN + UMBENENNEN - Select a recording to delete - Wรคhlen Sie eine Aufnahme zum Lรถschen aus + Choose a screen recording to delete + Wรคhlen Sie eine Bildschirmaufnahme zum Lรถschen aus - Are you sure you want to delete this recording? - Mรถchten Sie diese Aufnahme wirklich lรถschen? + Delete this screen recording? + Diese Bildschirmaufnahme lรถschen? - Are you sure you want to delete all screen recordings? - Mรถchten Sie wirklich alle Bildschirmaufnahmen lรถschen? + Delete all screen recordings? + Alle Bildschirmaufnahmen lรถschen? Delete All - Alles lรถschen + Alles lรถschen - Select a recording to rename - Wรคhlen Sie eine Aufnahme zum Umbenennen aus + Choose a screen recording to rename + Wรคhlen Sie eine Bildschirmaufnahme zum Umbenennen Enter a new name - Geben Sie einen neuen Namen ein + Geben Sie einen neuen Namen ein - Rename Recording - Aufnahme umbenennen + Rename Screen Recording + Bildschirmaufnahme umbenennen - A recording with this name already exists. Please choose a different name. - Eine Aufnahme mit diesem Namen existiert bereits. Bitte wรคhlen Sie einen anderen Namen. + Name already in use. Please choose a different name. + Name wird bereits verwendet. Bitte wรคhlen Sie einen anderen Namen. Renaming... - Umbenennen... + Umbenennen... Renamed! - Umbenannt! + Umbenannt! FrogPilot Backups - FrogPilot-Backups + FrogPilot-Backups - Manage your FrogPilot backups. - Verwalten Sie Ihre FrogPilot-Backups. + <b>Create, delete, or restore FrogPilot backups.</b> + <b>Erstellen, lรถschen oder wiederherstellen von FrogPilot-Backups.</b> BACKUP - SICHERUNG + SICHERUNG RESTORE - WIEDERHERSTELLEN + WIEDERHERSTELLEN - Name your backup - Benennen Sie Ihr Backup + Enter a name for this backup + Geben Sie einen Namen fรผr diese Sicherung ein - A backup with this name already exists. Please choose a different name. - Ein Backup mit diesem Namen existiert bereits. Bitte wรคhlen Sie einen anderen Namen. - - - Do you want to compress this backup? This will take a few minutes, but the final result will be smaller and run in the background. - Mรถchten Sie dieses Backup komprimieren? Dies wird einige Minuten dauern, aber das Endergebnis wird kleiner sein und im Hintergrund ausgefรผhrt werden. + Compress this backup? This will save space and run in the background but take a bit longer. + Diesen Backup komprimieren? Das spart Speicherplatz und lรคuft im Hintergrund, dauert aber etwas lรคnger. Backing up... - Sicherung lรคuft... + Sicherung wird erstellt... Compressing... - Komprimieren... + Komprimierenโ€ฆ Backup created! - Sicherung erstellt! + Backup erstellt! - Select a backup to delete - Wรคhlen Sie ein Backup zum Lรถschen aus + Choose a FrogPilot backup to delete + Wรคhlen Sie eine FrogPilot-Sicherung zum Lรถschen - Are you sure you want to delete this backup? - Mรถchten Sie dieses Backup wirklich lรถschen? + Delete this backup? + Diesen Backup lรถschen? - Are you sure you want to delete all FrogPilot backups? - Mรถchten Sie wirklich alle FrogPilot-Backups lรถschen? + Delete all backups? + Alle Backups lรถschen? - Select a restore point - Wรคhlen Sie einen Wiederherstellungspunkt aus + Choose a backup to restore + Wรคhlen Sie ein Backup zum Wiederherstellen aus - Are you sure you want to restore this version of FrogPilot? - Mรถchten Sie diese Version von FrogPilot wirklich wiederherstellen? + Restore this backup? + Dieses Backup wiederherstellen? Restore - Wiederherstellen + Wiederherstellen Restoring... - Wiederherstellen... + Wird wiederhergestelltโ€ฆ Extracting... - Extrahieren... + Extrahiere... Restored! - Wiederhergestellt! + Wiederhergestellt! Rebooting... - Neustart... + Neustart... Toggle Backups - Backups umschalten + Backups umschalten - Manage your toggle backups. - Verwalten Sie Ihre Umschalt-Backups. + <b>Create, delete, or restore toggle backups.</b> + <b>Umschalt-Backups erstellen, lรถschen oder wiederherstellen.</b> - Name your toggle backup - Benennen Sie Ihr Umschalt-Backup - - - A toggle backup with this name already exists. Please choose a different name. - Ein Toggle-Backup mit diesem Namen existiert bereits. Bitte wรคhlen Sie einen anderen Namen. - - - Select a toggle backup to delete - Wรคhlen Sie ein zu lรถschendes Sicherungs-Backup aus - - - Are you sure you want to delete this toggle backup? - Mรถchten Sie dieses Umschalt-Backup wirklich lรถschen? - - - Are you sure you want to delete all toggle backups? - Mรถchten Sie wirklich alle Umschalt-Backups lรถschen? - - - Select a toggle restore point - Wรคhlen Sie einen Wiederherstellungspunkt aus - - - Are you sure you want to restore this toggle backup? - Mรถchten Sie dieses Umschalt-Backup wirklich wiederherstellen? + Choose a backup to delete + Wรคhlen Sie eine Sicherungskopie zum Lรถschen aus FrogPilotDevicePanel Device Settings - Gerรคteeinstellungen + Gerรคteeinstellungen - Settings that control device behavior. - Einstellungen, die das Verhalten des Gerรคts steuern. - - - Battery Shutdown Threshold - Batterie-Abschaltschwelle - - - Automatically shut down the device when the vehicle's battery voltage reaches the set threshold preventing excessive battery drain to protect the battery. - Das Gerรคt automatisch ausschalten, wenn die Batteriespannung des Fahrzeugs den eingestellten Schwellenwert erreicht, um รผbermรครŸige Batterieentladung zu verhindern und die Batterie zu schรผtzen. + <b>Settings that control how the device runs, powers off, and manages driving data.</b> + <b>Einstellungen, die steuern, wie das Gerรคt lรคuft, sich ausschaltet und Fahrdaten verwaltet.</b> Device Shutdown Timer - Gerรคte-Abschalttimer + Gerรคteabschalt-Timer - How long the device stays on for after you go offroad. - Wie lange das Gerรคt eingeschaltet bleibt, nachdem Sie abseits der StraรŸe gefahren sind. + <b>Keep the device on for the set amount of time after a drive</b> before it shuts down automatically. + <b>Halten Sie das Gerรคt fรผr die festgelegte Zeit nach einer Fahrt eingeschaltet</b>, bevor es sich automatisch ausschaltet. - Disable Data Logging - Deaktivieren Sie die Datenprotokollierung + Disable Logging + Protokollierung deaktivieren WARNING: This will prevent your drives from being recorded and all data will be unobtainable! - WARNUNG: Dies verhindert, dass Ihre Laufwerke aufgezeichnet werden, und alle Daten werden unzugรคnglich sein! + WARNUNG: Dadurch werden Ihre Fahrten nicht aufgezeichnet und alle Daten sind nicht mehr abrufbar! - Disable all data logging to improve privacy. - Deaktivieren Sie alle Datenprotokollierungen, um die Privatsphรคre zu verbessern. + <b>Prevent the device from saving driving data.</b> + <b>Verhindern Sie, dass das Gerรคt Fahrdaten speichert.</b> - Disable Data Uploads - Daten-Uploads deaktivieren + Disable Uploads + Uploads deaktivieren - WARNING: This will prevent your drives from appearing on <b>comma connect</b> which may impact debugging and support! - WARNUNG: Dies verhindert, dass Ihre Laufwerke auf <b>comma connect</b> angezeigt werden, was die Fehlersuche und den Support beeintrรคchtigen kann! + WARNING: This will prevent your drives from being uploaded to <b>comma connect</b> which will impact debugging and official support from comma! + WARNUNG: Dadurch werden deine Fahrten nicht zu <b>comma connect</b> hochgeladen, was das Debugging und den offiziellen Support von comma beeintrรคchtigt! - Prevent the device from sending any data to <b>comma</b>'s servers. - Verhindern Sie, dass das Gerรคt Daten an die Server von <b>comma</b> sendet. + <b>Prevent the device from uploading driving data.</b> + <b>Verhindern Sie, dass das Gerรคt Fahrtdaten hochlรคdt.</b> - Increase Thermal Safety Limit - Erhรถhung der thermischen Sicherheitsgrenze + High-Quality Recording + Hochwertige Aufnahme - WARNING: This can damage your device by exceeding safe temperature limits! - WARNUNG: Dies kann Ihr Gerรคt beschรคdigen, indem es die sicheren Temperaturgrenzen รผberschreitet! + <b>Save drive footage in higher video quality.</b> + <b>Fahrtaufnahmen in hรถherer Videoqualitรคt speichern.</b> - Allow the device to run hotter than comma recommended limit. - Erlauben Sie dem Gerรคt, heiรŸer zu laufen als das von Komma empfohlene Limit. + Low-Voltage Cutoff + Niederspannungsabschaltung - Use Konik's Server Instead of comma's - Verwenden Sie Koniks Server anstelle von Kommas. + <b>While parked, if the battery voltage falls below the set level, the device shuts down</b> to prevent excessive battery drain. + <b>Wenn das Fahrzeug geparkt ist und die Batteriespannung unter den eingestellten Wert fรคllt, fรคhrt sich das Gerรคt herunter</b>, um รผbermรครŸige Batterieentladung zu verhindern. - Upload your driving data to <b>connect.konik.ai</b> instead of <b>connect.comma.ai</b>. - Laden Sie Ihre Fahrdaten auf <b>connect.konik.ai</b> anstelle von <b>connect.comma.ai</b> hoch. + Raise Temperature Limits + Temperaturgrenzen erhรถhen + + + WARNING: Running at higher temperatures may damage your device! + WARNUNG: Betrieb bei hรถheren Temperaturen kann Ihr Gerรคt beschรคdigen! + + + <b>Allow the device to run at higher temperatures</b> before throttling or shutting down. Use only if you understand the risks! + <b>Erlaube dem Gerรคt, bei hรถheren Temperaturen zu laufen</b>, bevor es drosselt oder sich ausschaltet. Nur verwenden, wenn du die Risiken verstehst! + + + Use Konik Server + Konik Server verwenden + + + <b>Upload driving data to "connect.konik.ai" instead of "connect.comma.ai".</b> + <b>Fahrdaten auf โ€žconnect.konik.aiโ€œ statt โ€žconnect.comma.aiโ€œ hochladen.</b> Screen Settings - Bildschirmeinstellungen + Bildschirmeinstellungen - Settings that control screen behavior. - Einstellungen, die das Bildschirmverhalten steuern. + <b>Settings that control screen brightness, screen recording, and timeout duration.</b> + <b>Einstellungen fรผr Bildschirmhelligkeit, Bildschirmaufzeichnung und Timeout-Dauer.</b> Screen Brightness (Offroad) - Bildschirmhelligkeit (Offroad) + Bildschirmhelligkeit (Offroad) - The screen brightness when not driving. - Die Bildschirmhelligkeit, wenn nicht gefahren wird. + <b>The screen brightness while not driving.</b> + <b>Die Bildschirmhelligkeit, wenn nicht gefahren wird.</b> Screen Brightness (Onroad) - Bildschirmhelligkeit (Unterwegs) + Bildschirmhelligkeit (Onroad) - The screen brightness while driving. - Die Bildschirmhelligkeit wรคhrend der Fahrt. + <b>The screen brightness while driving.</b> + <b>Die Bildschirmhelligkeit wรคhrend der Fahrt.</b> Screen Recorder - Bildschirmrekorder + Bildschirmrekorder - Enable a button in the driving screen to record the screen. - Aktivieren Sie eine Schaltflรคche im Fahrbildschirm, um den Bildschirm aufzuzeichnen. + <b>Add a button to the driving screen to record the display.</b> + <b>Fรผgen Sie dem Fahrbildschirm eine Schaltflรคche hinzu, um die Anzeige aufzuzeichnen.</b> Screen Timeout (Offroad) - Bildschirm-Timeout (Offroad) + Display-Zeitรผberschreitung (Offroad) - How long it takes for the screen to turn off when not driving. - Wie lange es dauert, bis der Bildschirm sich ausschaltet, wenn man nicht fรคhrt. + <b>How long the screen stays on after being tapped while not driving.</b> + <b>Wie lange der Bildschirm nach dem Tippen eingeschaltet bleibt, wenn nicht gefahren wird.</b> Screen Timeout (Onroad) - Bildschirm-Timeout (Unterwegs) + Bildschirm-Timeout (Onroad) - How long it takes for the screen to turn off while driving. - Wie lange es dauert, bis der Bildschirm wรคhrend der Fahrt ausgeschaltet wird. + <b>How long the screen stays on after being tapped while driving.</b> + <b>Wie lange der Bildschirm nach dem Antippen wรคhrend der Fahrt eingeschaltet bleibt.</b> + + + Standby Mode + Bereitschaftsmodus + + + <b>Turn the screen off while driving and automatically wake it up for alerts or engagement state changes.</b> + <b>Schalten Sie den Bildschirm wรคhrend der Fahrt aus und wecken Sie ihn automatisch bei Warnungen oder ร„nderungen des Engagement-Status auf.</b> 5 mins - 5 Minuten + 5 Min. mins - Min. + Min. hour - Stunde + Stunde hours - Stunden + Stunden - Only Disable While Onroad - Nur deaktivieren, wรคhrend auf der StraรŸe + Disable Onroad Only + Nur auf der StraรŸe deaktivieren volts - Volt + Volt Screen Off - Bildschirm aus + Bildschirm aus Auto - Auto + Auto Start Recording - Aufnahme starten + Aufnahme starten Stop Recording - Aufnahme stoppen + Aufnahme stoppen seconds - Sekunden - - - High Bitrate Recording - Hochbitratige Aufnahme - - - Record driving footage at double the standard bitrate for improved video quality in driving logs. - Nehmen Sie Fahraufnahmen mit der doppelten Standard-Bitrate auf, um die Videoqualitรคt in Fahrprotokollen zu verbessern. + Sekunden FrogPilotLateralPanel Advanced Lateral Tuning - Erweiterte laterale Abstimmung + Erweitertes laterales Tuning - Advanced settings for fine-tuning openpilot's lateral controls. - Erweiterte Einstellungen zur Feinabstimmung der lateralen Steuerung von openpilot. + <b>Advanced steering control changes to fine-tune how openpilot drives.</b> + <b>Erweiterte Lenkungssteuerungsรคnderungen zur Feinabstimmung, wie openpilot fรคhrt.</b> Actuator Delay (Default: %1) - Aktuatorverzรถgerung (Standard: %1) + Aktuatorverzรถgerung (Standard: %1) Actuator Delay - Stellgliedverzรถgerung + Aktuatorverzรถgerung - How long the steering wheel takes to respond to commands. Higher values account for slower steering; lower values for quicker response. - Wie lange das Lenkrad benรถtigt, um auf Befehle zu reagieren. Hรถhere Werte stehen fรผr langsameres Lenken; niedrigere Werte fรผr schnellere Reaktion. + <b>The time between openpilot's steering command and the vehicle's response.</b> Increase if the vehicle reacts late; decrease if it feels jumpy. Auto-learned by default. + <b>Die Zeit zwischen dem Lenkbefehl von openpilot und der Reaktion des Fahrzeugs.</b> Erhรถhen, wenn das Fahrzeug spรคt reagiert; verringern, wenn es nervรถs wirkt. StandardmรครŸig automatisch erlernt. Friction (Default: %1) - Reibung (Standard: %1) + Reibung (Standard: %1) Friction - Reibung + Reibung - Adjust steering resistance. Higher values feel more stable but heavier; lower values feel lighter but more sensitive. - Lenkwiderstand anpassen. Hรถhere Werte fรผhlen sich stabiler, aber schwerer an; niedrigere Werte fรผhlen sich leichter, aber empfindlicher an. + <b>Compensates for steering friction.</b> Increase if the wheel sticks near center; decrease if it jitters. Auto-learned by default. + <b>Kompensiert Lenkungsreibung.</b> Erhรถhen, wenn das Lenkrad nahe der Mitte klemmt; verringern, wenn es ruckelt. StandardmรครŸig automatisch erlernt. Kp Factor (Default: %1) - Kp-Faktor (Standard: %1) + Kp-Faktor (Standard: %1) Kp Factor - Kp-Faktor + Kp-Faktor - How aggressively openpilot corrects steering. Higher values respond faster but may feel jerky; lower values are smoother but slower. - Wie aggressiv openpilot die Lenkung korrigiert. Hรถhere Werte reagieren schneller, kรถnnen sich jedoch ruckartig anfรผhlen; niedrigere Werte sind sanfter, aber langsamer. + <b>How strongly openpilot corrects lane position.</b> Higher is tighter but twitchier; lower is smoother but slower. Auto-learned by default. + <b>Wie stark openpilot die Spurposition korrigiert.</b> Hรถher ist straffer, aber nervรถser; niedriger ist sanfter, aber langsamer. StandardmรครŸig automatisch erlernt. - Lateral Accel (Default: %1) - Seitliche Beschleunigung (Standard: %1) + Lateral Acceleration (Default: %1) + Querbeschleunigung (Standard: %1) - Lateral Accel - Querbeschleunigung + Lateral Acceleration + Querbeschleunigung - How quickly openpilot makes lateral adjustments. Higher values allow sharper turns; lower values provide smoother steering. - Wie schnell openpilot seitliche Anpassungen vornimmt. Hรถhere Werte ermรถglichen schรคrfere Kurven; niedrigere Werte sorgen fรผr sanfteres Lenken. + <b>Maps steering torque to turning response.</b> Increase for sharper turns; decrease for gentler steering. Auto-learned by default. + <b>Ordnet Lenkmoment der Lenkradreaktion zu.</b> Erhรถhen fรผr schรคrfere Kurven; verringern fรผr sanfteres Lenken. StandardmรครŸig automatisch erlernt. Steer Ratio (Default: %1) - Lenkverhรคltnis (Standard: %1) + Lenkรผbersetzung (Standard: %1) Steer Ratio - Lenkverhรคltnis + Lenkรผbersetzung - How much the steering wheel turns in response to commands. Higher values feel more stable; lower values feel quicker. - Wie stark das Lenkrad auf Befehle reagiert. Hรถhere Werte fรผhlen sich stabiler an; niedrigere Werte fรผhlen sich schneller an. + <b>The relationship between steering wheel rotation and road wheel angle.</b> Increase if steering feels too quick or twitchy; decrease if it feels too slow or weak. Auto-learned by default. + <b>Das Verhรคltnis zwischen Lenkraddrehung und StraรŸenradwinkel.</b> Erhรถhen, wenn die Lenkung zu schnell oder nervรถs wirkt; verringern, wenn sie zu langsam oder schwach wirkt. StandardmรครŸig automatisch erlernt. - Force Auto Tune On - Automatische Abstimmung erzwingen + Force Auto-Tune On + Automatische Kalibrierung erzwingen - Force-enable commaโ€™s auto lateral tuning. - Erzwinge die automatische seitliche Abstimmung von Komma. + <b>Force-enable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration".</b> + <b>Erzwinge die Aktivierung von openpilots Live-Autotuning fรผr โ€žReibungโ€œ und โ€žQuerbeschleunigungโ€œ.</b> - Force Auto Tune Off - Automatische Abstimmung erzwingen aus + Force Auto-Tune Off + Auto-Tune erzwingen aus - Force-disable commaโ€™s auto lateral tuning. - Erzwinge das Deaktivieren der automatischen seitlichen Abstimmung von Comma. + <b>Force-disable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration" and use the set value instead.</b> + <b>Erzwinge die Deaktivierung von openpilots Live-Autotuning fรผr โ€žReibungโ€œ und โ€žQuerbeschleunigungโ€œ und verwende stattdessen den gesetzten Wert.</b> - Always on Lateral - Immer auf Lateral + Force Torque Controller + Kraft-Drehmoment-Controller - openpilot's steering control stays active even when the brake or gas pedals are pressed.<br><br>Deactivation only occurs with the <b>Cruise Control</b> button. - Die Lenksteuerung von openpilot bleibt aktiv, selbst wenn die Brems- oder Gaspedale betรคtigt werden.<br><br>Die Deaktivierung erfolgt nur mit der <b>Cruise Control</b>-Taste. + <b>Use torque-based steering control instead of angle-based control for smoother lane keeping, especially in curves.</b> + <b>Verwenden Sie drehmomentbasierte statt winkelbasierter Lenkregelung fรผr sanfteres Spurhalten, insbesondere in Kurven.</b> + + + Always On Lateral + Immer eingeschaltete Querfรผhrung + + + <b>openpilot's steering remains active even when the accelerator or brake pedals are pressed.</b> + <b>Die Lenkung von openpilot bleibt aktiv, auch wenn Gas- oder Bremspedal betรคtigt werden.</b> Enable With Cruise Control - Mit Tempomat aktivieren + Mit Tempomat aktivieren - Allow <b>Always on Lateral</b> to be active whenever <b>Cruise Control</b> is active, bypassing the need to enable openpilot first. - Erlaube <b>Always on Lateral</b> aktiv zu sein, wann immer <b>Cruise Control</b> aktiv ist, ohne dass openpilot zuerst aktiviert werden muss. + <b>Enable "Always On Lateral" whenever "Cruise Control" is on, even when openpilot is not engaged.</b> + <b>โ€žAlways On Lateralโ€œ aktivieren, sobald โ€žCruise Controlโ€œ eingeschaltet ist, auch wenn openpilot nicht aktiviert ist.</b> - Enable With LKAS Button - Mit LKAS-Taste aktivieren + Enable With LKAS + Mit LKAS aktivieren - Allow <b>Always on Lateral</b> to be active whenever <b>LKAS</b> is active, bypassing the need to enable openpilot first. - Erlaube <b>Always on Lateral</b> aktiv zu sein, wann immer <b>LKAS</b> aktiv ist, und umgehe die Notwendigkeit, zuerst openpilot zu aktivieren. + <b>Enable "Always On Lateral" whenever "LKAS" is on, even when openpilot is not engaged.</b> + <b>โ€žAlways On Lateralโ€œ immer aktivieren, wenn โ€žLKASโ€œ eingeschaltet ist, auch wenn openpilot nicht aktiviert ist.</b> - Pause on Brake Below - Pause bei Bremse unten + Pause on Brake Press Below + Pause bei Bremspedalbetรคtigung unten - Temporarily pause <b>Always on Lateral</b> below the set speed when braking. - Temporรคr <b>Always on Lateral</b> unterhalb der eingestellten Geschwindigkeit beim Bremsen pausieren. + <b>Pause "Always On Lateral" below the set speed while the brake pedal is pressed.</b> + <b>โ€žAlways On Lateralโ€œ unterhalb der eingestellten Geschwindigkeit pausieren, solange das Bremspedal gedrรผckt wird.</b> Lane Changes - Spurwechsel + Spurwechsel - Customize how openpilot performs lane changes. - Passen Sie an, wie Openpilot Spurwechsel durchfรผhrt. + <b>Allow openpilot to change lanes.</b> + <b>Erlauben Sie openpilot, die Spur zu wechseln.</b> Automatic Lane Changes - Automatische Spurwechsel + Automatische Spurwechsel - Change lanes automatically when the turn signal is on. No steering input needed! - Wechseln Sie automatisch die Spur, wenn der Blinker eingeschaltet ist. Keine Lenkeingabe erforderlich! + <b>When the turn signal is on, openpilot will automatically change lanes.</b> No steering-wheel nudge required! + <b>Wenn der Blinker eingeschaltet ist, wechselt openpilot automatisch die Spur.</b> Kein Antippen des Lenkrads erforderlich! Lane Change Delay - Spurwechselverzรถgerung + Spurwechselverzรถgerung - Delay automatic lane changes by the set amount of time. - Verzรถgern Sie automatische Spurwechsel um die festgelegte Zeitspanne. + <b>Delay between turn signal activation and the start of an automatic lane change.</b> + <b>Verzรถgerung zwischen dem Setzen des Blinkers und dem Beginn eines automatischen Spurwechsels.</b> Minimum Lane Change Speed - Mindestgeschwindigkeit fรผr Spurwechsel + Mindestgeschwindigkeit fรผr Spurwechsel - Minimum speed required for openpilot to perform a lane change. - Mindestgeschwindigkeit, die erforderlich ist, damit Openpilot einen Spurwechsel durchfรผhrt. + <b>Lowest speed at which openpilot will change lanes.</b> + <b>Niedrigste Geschwindigkeit, bei der openpilot die Spur wechselt.</b> Minimum Lane Width - Mindestfahrstreifenbreite + Mindestfahrspurbreite - openpilot won't initiate a lane change into a lane narrower than this width. - openpilot wird keinen Spurwechsel in eine Spur initiieren, die schmaler als diese Breite ist. + <b>Prevent automatic lane changes into lanes narrower than the set width.</b> + <b>Automatische Spurwechsel in schmalere Spuren als die eingestellte Breite verhindern.</b> One Lane Change Per Signal - Ein Spurwechsel pro Signal + Ein Spurwechsel pro Signal - Limit lane changes to one per turn signal activation. - Begrenzen Sie Spurwechsel auf einen pro Blinkeraktivierung. + <b>Limit automatic lane changes to one per turn-signal activation.</b> + <b>Automatische Spurwechsel auf einen pro Blinkeraktivierung begrenzen.</b> Lateral Tuning - Laterale Abstimmung + Laterale Abstimmung - Settings for fine-tuning openpilot's lateral controls. - Einstellungen zur Feinabstimmung der lateralen Steuerung von openpilot. + <b>Miscellaneous steering control changes</b> to fine-tune how openpilot drives. + <b>Verschiedene Lenksteuerungsรคnderungen</b>, um das Fahrverhalten von openpilot fein abzustimmen. Force Turn Desires Below Lane Change Speed - Zwang, Wรผnsche unterhalb der Spurwechselgeschwindigkeit zu lenken + Erzwinge Abbiegewunsch unterhalb der Spurwechselgeschwindigkeit - Force turn desires below the minimum lane change speed to improve turning accuracy. - Erzwingen Sie das Abbiegen von Wรผnschen unterhalb der minimalen Spurwechselgeschwindigkeit, um die Abbiegegenauigkeit zu verbessern. - - - Neural Network Feedforward (NNFF) - Neural Network Feedforward (NNFF) - - - Use <b>Twilsoncoโ€™s</b> <b>Neural Network FeedForward</b> model for smoother, model-based steering trained on your vehicle's data. - Verwenden Sie das <b>Neural Network FeedForward</b>-Modell von <b>Twilsonco</b> fรผr eine sanftere, modellbasierte Steuerung, die auf den Daten Ihres Fahrzeugs trainiert wurde. - - - Smooth Curve Handling - Sanfte Kurvenhandhabung - - - Use <b>Twilsoncoโ€™s</b> torque-based adjustments to smooth out steering during curves. - Verwenden Sie <b>Twilsonco's</b> drehmomentbasierte Anpassungen, um das Lenken in Kurven zu glรคtten. + <b>While driving below the minimum lane change speed with an active turn signal, instruct openpilot to turn left/right.</b> + <b>Beim Fahren unterhalb der minimalen Spurwechselgeschwindigkeit mit aktivem Blinker openpilot anweisen, nach links/rechts abzubiegen.</b> Quality of Life - Lebensqualitรคt + Lebensqualitรคt - Miscellaneous features to improve the steering experience. - Verschiedene Funktionen zur Verbesserung des Lenkungserlebnisses. + <b>Steering control changes to fine-tune how openpilot drives.</b> + <b>Lenkungssteuerung รคndert sich, um die Fahrweise von openpilot feinabzustimmen.</b> Pause Steering Below - Lenkung unten anhalten + Lenkung pausieren unterhalb - Temporarily pause steering control below the set speed. - Temporรคr die Lenksteuerung unterhalb der eingestellten Geschwindigkeit pausieren. + <b>Pause steering below the set speed.</b> + <b>Lenkung unterhalb der eingestellten Geschwindigkeit pausieren.</b> Instant - Sofort + Sofort second - zweite + Sekunde seconds - Sekunden - - - Are you sure you want to completely reset your <b>Actuator Delay</b>? - Mรถchten Sie wirklich Ihre <b>Aktuatorverzรถgerung</b> vollstรคndig zurรผcksetzen? - - - Are you sure you want to completely reset your <b>Friction</b>? - Mรถchten Sie wirklich Ihre <b>Friction</b> vollstรคndig zurรผcksetzen? - - - Are you sure you want to completely reset your <b>Kp Factor</b>? - Mรถchten Sie Ihren <b>Kp-Faktor</b> wirklich vollstรคndig zurรผcksetzen? - - - Are you sure you want to completely reset your <b>Lateral Accel</b>? - Mรถchten Sie wirklich Ihren <b>Lateral Accel</b> vollstรคndig zurรผcksetzen? - - - Are you sure you want to completely reset your <b>Steer Ratio</b>? - Mรถchten Sie Ihr <b>Lenkverhรคltnis</b> wirklich vollstรคndig zurรผcksetzen? - - - Off - Aus - - - foot - FuรŸ - - - feet - FรผรŸe - - - mph - mph - - - meter - Meter - - - meters - Meter - - - km/h - km/h + Sekunden Turn Signal Only - Nur Blinker + Nur Blinker + + + Reset <b>Actuator Delay</b> to its default value? + <b>Aktuatorverzรถgerung</b> auf den Standardwert zurรผcksetzen? + + + Reset <b>Friction</b> to its default value? + <b>Friction</b> auf den Standardwert zurรผcksetzen? + + + Reset <b>Kp Factor</b> to its default value? + <b>Kp-Faktor</b> auf den Standardwert zurรผcksetzen? + + + Reset <b>Lateral Accel</b> to its default value? + <b>Seitliche Beschleunigung</b> auf den Standardwert zurรผcksetzen? + + + Reset <b>Steer Ratio</b> to its default value? + <b>Lenkรผbersetzung</b> auf den Standardwert zurรผcksetzen? + + + Lateral Accel (Default: %1) + Querbeschleunigung (Standard: %1) + + + Off + Aus + + + foot + FuรŸ + + + feet + FuรŸ + + + mph + mph + + + meter + Meter + + + meters + Meter + + + km/h + km/h + + + Neural Network Feedforward (NNFF) + Neurales Netz Vorwรคrtsausbreitung (NNFF) + + + <b>Twilsonco's "Neural Network FeedForward" model controller for smoother, model-based steering trained on your vehicle's data.</b> + <b>Twilsoncos โ€žNeural Network FeedForwardโ€œ-Modellregler fรผr sanfteres, modellbasiertes Lenken, trainiert mit den Daten Ihres Fahrzeugs.</b> + + + Smooth Curve Handling + Sanfte Kurvenhandhabung + + + <b>Twilsonco's torque-based adjustments to smoothen out steering in curves.</b> + <b>Twilsoncos drehmomentbasierte Anpassungen zur Glรคttung der Lenkung in Kurven.</b> FrogPilotLongitudinalPanel - - Conditional Experimental Mode - Bedingter Experimentiermodus - - - Automatically switch to <b>Experimental Mode</b> when set conditions are met. - Automatisch in den <b>Experimentellen Modus</b> wechseln, wenn festgelegte Bedingungen erfรผllt sind. - - - Below - Unten - - - Switch to <b>Experimental Mode</b> when driving below this speed. - Wechseln Sie in den <b>Experimentellen Modus</b>, wenn Sie unter dieser Geschwindigkeit fahren. - - - Curve Detected Ahead - Kurve voraus erkannt - - - Switch to <b>Experimental Mode</b> when a curve is detected ahead. Useful for letting the model choose the appropriate speed for the curve. - Wechseln Sie in den <b>Experimentellen Modus</b>, wenn eine Kurve voraus erkannt wird. Nรผtzlich, um dem Modell die Wahl der angemessenen Geschwindigkeit fรผr die Kurve zu รผberlassen. - - - Lead Detected Ahead - Blei voraus erkannt - - - Switch to <b>Experimental Mode</b> when a slower or stopped vehicle is detected ahead. Can improve braking smoothness and reliability on some vehicles. - Wechseln Sie in den <b>Experimentellen Modus</b>, wenn ein langsameres oder stehendes Fahrzeug voraus erkannt wird. Kann die Bremsgeschmeidigkeit und Zuverlรคssigkeit bei einigen Fahrzeugen verbessern. - - - Navigation Data - Navigationsdaten - - - Switch to <b>Experimental Mode</b> when approaching intersections or turns on the active route while using <b>Navigate on openpilot (NOO)</b>. Useful for letting the model choose the appropriate speed for upcoming navigation maneuvers. - Wechseln Sie in den <b>Experimentellen Modus</b>, wenn Sie sich Kreuzungen oder Abbiegevorgรคngen auf der aktiven Route nรคhern, wรคhrend Sie <b>Navigate on openpilot (NOO)</b> verwenden. Nรผtzlich, um dem Modell die Wahl der geeigneten Geschwindigkeit fรผr bevorstehende Navigationsmanรถver zu รผberlassen. - - - openpilot Wants to Stop In - openpilot mรถchte anhalten - - - Switch to <b>Experimental Mode</b> when openpilot wants to stop within the set amount of time. This is typically triggered by the driving model "detecting" a red light or stop sign. - Wechseln Sie in den <b>Experimentellen Modus</b>, wenn openpilot innerhalb der festgelegten Zeit anhalten mรถchte. Dies wird typischerweise ausgelรถst, wenn das Fahrmodell ein rotes Licht oder ein Stoppschild "erkennt". - - - Turn Signal Below - Blinker unten - - - Switch to <b>Experimental Mode</b> when using a turn signal below the set speed. Useful for letting the model choose the appropriate speed for upcoming left or right turns. - Wechseln Sie in den <b>Experimentellen Modus</b>, wenn Sie einen Blinker unterhalb der eingestellten Geschwindigkeit verwenden. Nรผtzlich, um dem Modell die Wahl der geeigneten Geschwindigkeit fรผr bevorstehende Links- oder Rechtskurven zu รผberlassen. - - - Status Widget - Status-Widget - - - Show the <b>Conditional Experimental Mode</b> status on the driving screen. - Zeigen Sie den Status des <b>bedingten experimentellen Modus</b> auf dem Fahrbildschirm an. - - - Show <b>Curve Speed Control</b>'s desired speed on the driving screen. - Zeige die gewรผnschte Geschwindigkeit der <b>Kurvengeschwindigkeitsregelung</b> auf dem Fahrbildschirm an. - - - Customize Driving Personalities - Fahrpersรถnlichkeiten anpassen - - - Customize the personality profiles to your driving style. - Passen Sie die Persรถnlichkeitsprofile an Ihren Fahrstil an. - - - Traffic Personality - Verkehrspersรถnlichkeit - - - Customize the <b>Traffic</b> personality profile. Tailored for navigating through traffic. - Passen Sie das <b>Verkehrs</b>-Persรถnlichkeitsprofil an. MaรŸgeschneidert fรผr die Navigation durch den Verkehr. - - - Following Distance - Abstand halten - - - The minimum following distance while in <b>Traffic Mode</b>. openpilot will dynamically adjust between this value and the value in the <b>Aggressive</b> profile based on your current speed. - Der minimale folgende Abstand im <b>Verkehrsmodus</b>. openpilot passt sich dynamisch zwischen diesem Wert und dem Wert im <b>Aggressiv</b>-Profil basierend auf Ihrer aktuellen Geschwindigkeit an. - - - Acceleration Sensitivity - Beschleunigungsempfindlichkeit - - - How sensitive openpilot is to changes in acceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Wie empfindlich openpilot auf ร„nderungen der Beschleunigung im <b>Verkehrsmodus</b> reagiert. Hรถhere Werte fรผhren zu einer sanfteren, allmรคhlicheren Beschleunigung, wรคhrend niedrigere Werte schnellere, reaktionsschnellere ร„nderungen ermรถglichen, die abrupt wirken kรถnnen. - - - Deceleration Sensitivity - Verzรถgerungsempfindlichkeit - - - How sensitive openpilot is to changes in deceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Wie empfindlich openpilot auf ร„nderungen der Verzรถgerung im <b>Verkehrsmodus</b> reagiert. Hรถhere Werte fรผhren zu einer sanfteren, allmรคhlicheren Verzรถgerung, wรคhrend niedrigere Werte schnellere, reaktionsschnellere ร„nderungen ermรถglichen, die abrupt wirken kรถnnen. - - - Safety Distance Sensitivity - Empfindlichkeit des Sicherheitsabstands - - - How cautious openpilot is around other vehicles or obstacles while in <b>Traffic Mode</b>. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - Wie vorsichtig openpilot im <b>Verkehrsmodus</b> in der Nรคhe anderer Fahrzeuge oder Hindernisse ist. Hรถhere Werte erhรถhen die Abstรคnde und priorisieren die Sicherheit, was zu vorsichtigerem Fahren fรผhrt, wรคhrend niedrigere Werte ein engeres Folgen ermรถglichen, aber die Reaktionszeit verringern kรถnnen. - - - Speed Increase Response - Geschwindigkeitssteigerungsreaktion - - - How quickly openpilot increases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - Wie schnell openpilot die Geschwindigkeit im <b>Verkehrsmodus</b> erhรถht. Hรถhere Werte sorgen fรผr sanftere, allmรคhliche Geschwindigkeitsรคnderungen beim Beschleunigen, wรคhrend niedrigere Werte schnellere, reaktionsschnellere ร„nderungen ermรถglichen, die abrupt wirken kรถnnen. - - - Speed Decrease Response - Geschwindigkeitsabnahme Reaktion - - - How quickly openpilot decreases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - Wie schnell openpilot die Geschwindigkeit im <b>Verkehrsmodus</b> verringert. Hรถhere Werte sorgen fรผr sanftere, allmรคhlichere Geschwindigkeitsรคnderungen beim Abbremsen, wรคhrend niedrigere Werte schnellere, reaktionsschnellere ร„nderungen ermรถglichen, die abrupt wirken kรถnnen. - - - Reset Settings - Einstellungen zurรผcksetzen - - - Reset <b>Traffic Mode</b> settings to default values. - Setzen Sie die <b>Verkehrsmodus</b>-Einstellungen auf die Standardwerte zurรผck. - - - Aggressive Personality - Aggressive Persรถnlichkeit - - - Customize the <b>Aggressive</b> personality profile. Designed for a more assertive driving style. - Passen Sie das <b>Aggressive</b> Persรถnlichkeitsprofil an. Entwickelt fรผr einen durchsetzungsfรคhigeren Fahrstil. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Aggressive</b> personality profile.<br><br>Default: 1.25 seconds. - Wie viele Sekunden wird openpilot den vorausfahrenden Fahrzeugen folgen, wรคhrend das <b>Aggressive</b>-Persรถnlichkeitsprofil verwendet wird.<br><br>Standard: 1,25 Sekunden. - - - How sensitive openpilot is to changes in acceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Wie empfindlich openpilot auf ร„nderungen der Beschleunigung reagiert, wรคhrend das <b>Aggressive</b>-Persรถnlichkeitsprofil verwendet wird. Hรถhere Werte fรผhren zu einer sanfteren, allmรคhlicheren Beschleunigung, wรคhrend niedrigere Werte schnellere, reaktionsfreudigere ร„nderungen ermรถglichen, die abrupt wirken kรถnnen. - - - How sensitive openpilot is to changes in deceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Wie empfindlich openpilot auf ร„nderungen der Verzรถgerung reagiert, wenn das <b>Aggressive</b>-Persรถnlichkeitsprofil verwendet wird. Hรถhere Werte fรผhren zu einer sanfteren, allmรคhlicheren Verzรถgerung, wรคhrend niedrigere Werte schnellere, reaktionsfreudigere ร„nderungen ermรถglichen, die abrupt wirken kรถnnen. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Aggressive</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - Wie vorsichtig openpilot im <b>Aggressive</b>-Persรถnlichkeitsprofil gegenรผber anderen Fahrzeugen oder Hindernissen ist. Hรถhere Werte erhรถhen die Abstรคnde und priorisieren die Sicherheit, was zu vorsichtigerem Fahren fรผhrt, wรคhrend niedrigere Werte ein engeres Folgen ermรถglichen, aber die Reaktionszeit verringern kรถnnen. - - - How quickly openpilot increases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - Wie schnell openpilot die Geschwindigkeit erhรถht, wรคhrend das <b>Aggressive</b>-Persรถnlichkeitsprofil verwendet wird. Hรถhere Werte sorgen fรผr sanftere, allmรคhlichere Geschwindigkeitsรคnderungen beim Beschleunigen, wรคhrend niedrigere Werte schnellere, reaktionsschnellere ร„nderungen ermรถglichen, die abrupt wirken kรถnnen. - - - How quickly openpilot decreases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - Wie schnell openpilot die Geschwindigkeit verringert, wenn das <b>Aggressive</b>-Persรถnlichkeitsprofil verwendet wird. Hรถhere Werte sorgen fรผr sanftere, allmรคhlichere Geschwindigkeitsรคnderungen beim Abbremsen, wรคhrend niedrigere Werte schnellere, reaktionsschnellere ร„nderungen ermรถglichen, die abrupt wirken kรถnnen. - - - Reset the <b>Aggressive</b> personality profile settings to default values. - Setzen Sie die Einstellungen des Persรถnlichkeitsprofils <b>Aggressiv</b> auf die Standardwerte zurรผck. - - - Standard Personality - Standardpersรถnlichkeit - - - Customize the <b>Standard</b> personality profile. Designed for a balanced driving style. - Passen Sie das <b>Standard</b>-Persรถnlichkeitsprofil an. Entwickelt fรผr einen ausgewogenen Fahrstil. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Standard</b> personality profile.<br><br>Default: 1.45 seconds. - Wie viele Sekunden wird openpilot den vorausfahrenden Fahrzeugen folgen, wรคhrend das <b>Standard</b>-Persรถnlichkeitsprofil verwendet wird.<br><br>Standard: 1,45 Sekunden. - - - How sensitive openpilot is to changes in acceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Wie empfindlich openpilot auf ร„nderungen der Beschleunigung reagiert, wรคhrend das <b>Standard</b>-Persรถnlichkeitsprofil verwendet wird. Hรถhere Werte fรผhren zu einer sanfteren, allmรคhlicheren Beschleunigung, wรคhrend niedrigere Werte schnellere, reaktionsfreudigere ร„nderungen ermรถglichen, die abrupt wirken kรถnnen. - - - How sensitive openpilot is to changes in deceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Wie empfindlich openpilot auf ร„nderungen der Verzรถgerung reagiert, wรคhrend das <b>Standard</b>-Persรถnlichkeitsprofil verwendet wird. Hรถhere Werte fรผhren zu einer sanfteren, allmรคhlicheren Verzรถgerung, wรคhrend niedrigere Werte schnellere, reaktionsschnellere ร„nderungen ermรถglichen, die abrupt wirken kรถnnen. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Standard</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - Wie vorsichtig openpilot im <b>Standard</b>-Persรถnlichkeitsprofil gegenรผber anderen Fahrzeugen oder Hindernissen ist. Hรถhere Werte erhรถhen die Abstรคnde und priorisieren die Sicherheit, was zu vorsichtigerem Fahren fรผhrt, wรคhrend niedrigere Werte ein engeres Folgen ermรถglichen, aber die Reaktionszeit verkรผrzen kรถnnen. - - - How quickly openpilot increases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - Wie schnell openpilot die Geschwindigkeit erhรถht, wรคhrend das <b>Standard</b>-Persรถnlichkeitsprofil verwendet wird. Hรถhere Werte sorgen fรผr sanftere, allmรคhlichere Geschwindigkeitsรคnderungen beim Beschleunigen, wรคhrend niedrigere Werte schnellere, reaktionsschnellere ร„nderungen ermรถglichen, die abrupt wirken kรถnnen. - - - How quickly openpilot decreases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - Wie schnell openpilot die Geschwindigkeit verringert, wรคhrend das <b>Standard</b>-Persรถnlichkeitsprofil verwendet wird. Hรถhere Werte sorgen fรผr sanftere, allmรคhlichere Geschwindigkeitsรคnderungen beim Abbremsen, wรคhrend niedrigere Werte schnellere, reaktionsschnellere ร„nderungen ermรถglichen, die abrupt wirken kรถnnen. - - - Reset the <b>Standard</b> personality profile settings to default values. - Setzen Sie die <b>Standard</b>-Persรถnlichkeitsprofileinstellungen auf die Standardwerte zurรผck. - - - Relaxed Personality - Entspannte Persรถnlichkeit - - - Customize the <b>Relaxed</b> personality profile. Designed for a more laid-back driving style. - Passen Sie das <b>Entspannt</b>-Persรถnlichkeitsprofil an. Entwickelt fรผr einen entspannteren Fahrstil. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Relaxed</b> personality profile.<br><br>Default: 1.75 seconds. - Wie viele Sekunden wird openpilot den vorausfahrenden Fahrzeugen folgen, wรคhrend das <b>Relaxed</b>-Persรถnlichkeitsprofil verwendet wird.<br><br>Standard: 1,75 Sekunden. - - - How sensitive openpilot is to changes in acceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Wie empfindlich openpilot auf ร„nderungen der Beschleunigung reagiert, wรคhrend das <b>Entspannt</b>-Persรถnlichkeitsprofil verwendet wird. Hรถhere Werte fรผhren zu einer sanfteren, allmรคhlicheren Beschleunigung, wรคhrend niedrigere Werte schnellere, reaktionsfreudigere ร„nderungen ermรถglichen, die abrupt wirken kรถnnen. - - - How sensitive openpilot is to changes in deceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Wie empfindlich openpilot auf ร„nderungen der Verzรถgerung reagiert, wenn das <b>Entspannt</b>-Persรถnlichkeitsprofil verwendet wird. Hรถhere Werte fรผhren zu einer sanfteren, allmรคhlicheren Verzรถgerung, wรคhrend niedrigere Werte schnellere, reaktionsfreudigere ร„nderungen ermรถglichen, die abrupt wirken kรถnnen. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Relaxed</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - Wie vorsichtig openpilot im Umgang mit anderen Fahrzeugen oder Hindernissen ist, wรคhrend das <b>Entspannt</b>-Persรถnlichkeitsprofil verwendet wird. Hรถhere Werte erhรถhen die Abstรคnde und priorisieren die Sicherheit, was zu vorsichtigerem Fahren fรผhrt, wรคhrend niedrigere Werte ein engeres Folgen ermรถglichen, aber die Reaktionszeit verringern kรถnnen. - - - How quickly openpilot increases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - Wie schnell openpilot die Geschwindigkeit erhรถht, wรคhrend das <b>Entspannt</b>-Persรถnlichkeitsprofil verwendet wird. Hรถhere Werte sorgen fรผr sanftere, allmรคhlichere Geschwindigkeitsรคnderungen beim Beschleunigen, wรคhrend niedrigere Werte schnellere, reaktionsfreudigere ร„nderungen ermรถglichen, die abrupt wirken kรถnnen. - - - How quickly openpilot decreases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - Wie schnell openpilot die Geschwindigkeit verringert, wenn das <b>Entspannt</b>-Persรถnlichkeitsprofil verwendet wird. Hรถhere Werte sorgen fรผr sanftere, allmรคhlichere Geschwindigkeitsรคnderungen beim Abbremsen, wรคhrend niedrigere Werte schnellere, reaktionsschnellere ร„nderungen ermรถglichen, die abrupt wirken kรถnnen. - - - Reset the <b>Relaxed</b> personality profile settings to default values. - Setzen Sie die <b>entspannten</b> Persรถnlichkeitseinstellungen auf die Standardwerte zurรผck. - - - Longitudinal Tuning - Lรคngsabstimmung - - - Settings that control how openpilot manages speed and acceleration. - Einstellungen, die steuern, wie Openpilot Geschwindigkeit und Beschleunigung verwaltet. - - - Acceleration Profile - Beschleunigungsprofil - - - Enable either a sporty or eco-friendly acceleration profile. <b>Sport+</b> aims to make openpilot accelerate as fast as possible! - Aktivieren Sie entweder ein sportliches oder umweltfreundliches Beschleunigungsprofil. <b>Sport+</b> zielt darauf ab, openpilot so schnell wie mรถglich zu beschleunigen! - - - Deceleration Profile - Verzรถgerungsprofil - - - Enable either a sporty or eco-friendly deceleration profile. - Aktivieren Sie entweder ein sportliches oder ein umweltfreundliches Verzรถgerungsprofil. - - - Human-Like Acceleration - Menschliche Beschleunigung - - - Use the lead vehicle's acceleration rate when at a takeoff and ramp off the acceleration rate when approaching the maximum set speed for a more "human-like" driving experience. - Verwenden Sie die Beschleunigungsrate des fรผhrenden Fahrzeugs beim Anfahren und reduzieren Sie die Beschleunigungsrate, wenn Sie sich der maximal eingestellten Geschwindigkeit nรคhern, um ein "menschlicheres" Fahrerlebnis zu erzielen. - - - Human-Like Approach Behind Leads - Menschlicher Ansatz hinter Leads - - - Dynamically adjust the desired following distance when approaching slower or stopped vehicles for a more "human-like" driving experience. - Passen Sie den gewรผnschten Sicherheitsabstand dynamisch an, wenn Sie sich langsameren oder stehenden Fahrzeugen nรคhern, um ein "menschlicheres" Fahrerlebnis zu erzielen. - - - Lead Detection Confidence - Erkennungszuversicht fรผr Leads - - - How sensitive openpilot is to detecting vehicles ahead. A lower value can help detect vehicles sooner and from farther away, but increases the chance openpilot mistakes other objects for vehicles. - Wie empfindlich openpilot beim Erkennen von Fahrzeugen voraus ist. Ein niedrigerer Wert kann helfen, Fahrzeuge frรผher und aus grรถรŸerer Entfernung zu erkennen, erhรถht jedoch die Wahrscheinlichkeit, dass openpilot andere Objekte fรคlschlicherweise fรผr Fahrzeuge hรคlt. - - - Maximum Acceleration Rate - Maximale Beschleunigungsrate - - - Set a cap on how fast openpilot can accelerate. - Begrenzen Sie, wie schnell openpilot beschleunigen kann. - - - "Taco Bell Run" Turn Speed Hack - "Taco Bell Run" Drehgeschwindigkeit Hack - - - The turn speed hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to slow down when taking left/right turns for smoother turns. - Der Turngeschwindigkeitshack von Commas "Taco Bell Run"-Fahrt 2022. Entwickelt, um beim Abbiegen nach links/rechts langsamer zu werden, fรผr sanftere Kurven. - - - Quality of Life - Lebensqualitรคt - - - Miscellaneous features to improve the acceleration and braking experience. - Verschiedene Funktionen zur Verbesserung des Beschleunigungs- und Bremserlebnisses. - - - Cruise Interval - Kreuzfahrtintervall - - - The interval used when changing the cruise control speed. - Das Intervall, das beim ร„ndern der Geschwindigkeit des Tempomats verwendet wird. - - - Cruise Interval (Long Press) - Kreuzfahrtintervall (Langes Drรผcken) - - - The interval used when changing the cruise control speed while holding down the button for 0.5+ seconds. - Das Intervall, das verwendet wird, wenn die Geschwindigkeit des Tempomats geรคndert wird, wรคhrend die Taste lรคnger als 0,5 Sekunden gedrรผckt gehalten wird. - - - Force Keep openpilot in the Standstill State - Erzwingen Sie, dass openpilot im Stillstandsmodus bleibt. - - - Keep openpilot in the standstill state until either the gas pedal or <b>resume</b> button is pressed. - Halten Sie openpilot im Stillstand, bis entweder das Gaspedal oder die <b>Resume</b>-Taste gedrรผckt wird. - - - Force Stop for "Detected" Stop Lights/Signs - Erzwungener Stopp fรผr "Erkannte" Ampeln/Stoppschilder - - - Force a stop whenever openpilot <b>detects</b> a potential red light/stop sign to prevent it from running the red light/stop sign. - Erzwinge einen Stopp, wann immer openpilot ein potenzielles rotes Licht/Stoppzeichen <b>erkennt</b>, um zu verhindern, dass es das rote Licht/Stoppzeichen รผberfรคhrt. - - - Increase Stopped Distance - Erhรถhen Sie den Anhalteweg - - - Increase the distance openpilot stops behind vehicles. - Erhรถhen Sie den Abstand, den Openpilot hinter Fahrzeugen stoppt. - - - Set Speed Offset - Geschwindigkeitsoffset einstellen - - - How much higher or lower the set speed should be compared to your current set speed. For example, if you prefer to drive 5 mph above the speed limit, this setting will automatically add that difference when you adjust your set speed. - Wie viel hรถher oder niedriger die eingestellte Geschwindigkeit im Vergleich zu Ihrer aktuellen eingestellten Geschwindigkeit sein sollte. Zum Beispiel, wenn Sie es vorziehen, 5 mph รผber dem Tempolimit zu fahren, wird diese Einstellung automatisch diesen Unterschied hinzufรผgen, wenn Sie Ihre eingestellte Geschwindigkeit anpassen. - - - Map Accel/Decel to Gears - Beschleunigung/Verzรถgerung auf Gรคnge abbilden - - - Map the acceleration and deceleration profiles to your car's <b>Eco</b> or <b>Sport</b> gear modes. - Ordnen Sie die Beschleunigungs- und Verzรถgerungsprofile den <b>Eco</b>- oder <b>Sport</b>-Getriebemodi Ihres Autos zu. - - - Reverse Cruise Increase - Umkehrung der Kreuzfahrtsteigerung - - - Reverse the <b>long press</b> cruise increase feature to increase the max speed by 5 instead of 1 on short presses. - Kehren Sie die <b>lange Druck</b> Tempomat-Erhรถhungsfunktion um, um die maximale Geschwindigkeit bei kurzen Drรผcken um 5 statt um 1 zu erhรถhen. - - - Speed Limit Controller - Geschwindigkeitsbegrenzungsregler - - - Limit openpilot's maximum driving speed based on data from downloaded maps, <b>Mapbox</b>, <b>Navigate on openpilot</b>, or the dashboard (supported vehicles: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - Begrenzen Sie die maximale Fahrgeschwindigkeit von openpilot basierend auf Daten aus heruntergeladenen Karten, <b>Mapbox</b>, <b>Navigate on openpilot</b> oder dem Armaturenbrett (unterstรผtzte Fahrzeuge: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - - - Fallback Speed - Fallback-Geschwindigkeit - - - The speed limit source when no speed limit data is available. - Die Quelle fรผr die Geschwindigkeitsbegrenzung, wenn keine Geschwindigkeitsbegrenzungsdaten verfรผgbar sind. - - - Override Speed - Geschwindigkeit รผberschreiben - - - The speed openpilot uses after manually exceeding the posted speed limit.<br><br><b>- Set With Gas Pedal</b>: Uses the speed obtained while pressing the gas<br><b>- Max Set Speed</b>: Uses the cruise control set speed<br><br>Overrides clear upon disengagement. - Die Geschwindigkeit, die openpilot verwendet, nachdem das ausgeschilderte Tempolimit manuell รผberschritten wurde.<br><br><b>- Mit Gaspedal einstellen</b>: Verwendet die Geschwindigkeit, die beim Drรผcken des Gaspedals erreicht wurde<br><b>- Maximale eingestellte Geschwindigkeit</b>: Verwendet die eingestellte Geschwindigkeit des Tempomats<br><br>รœberschreibungen werden beim Deaktivieren gelรถscht. - - - Miscellaneous features to improve the <b>Speed Limit Controller</b> experience. - Verschiedene Funktionen zur Verbesserung der <b>Speed Limit Controller</b>-Erfahrung. - - - Confirm New Speed Limits - Neue Geschwindigkeitsbegrenzungen bestรคtigen - - - Require confirmation before applying new speed limits. To accept, use the flashing widget on the driving screen or press the <b>Cruise Increase</b> button. To deny, press the <b>Cruise Decrease</b> button or simply ignore the prompt for 30 seconds. - Bestรคtigung erforderlich, bevor neue Geschwindigkeitsbegrenzungen angewendet werden. Um zu akzeptieren, verwenden Sie das blinkende Widget auf dem Fahrbildschirm oder drรผcken Sie die <b>Geschwindigkeit erhรถhen</b>-Taste. Um abzulehnen, drรผcken Sie die <b>Geschwindigkeit verringern</b>-Taste oder ignorieren Sie die Aufforderung einfach fรผr 30 Sekunden. - - - Force MPH Readings from Dashboard - Erzwinge MPH-Anzeigen vom Armaturenbrett - - - Force dashboard speed limit readings to be in mph. - Erzwingen Sie, dass die Geschwindigkeitsbegrenzungsanzeigen im Dashboard in mph angezeigt werden. - - - Higher Limit Lookahead Time - Hรถhere Grenzvorausschauzeit - - - How far ahead openpilot anticipates upcoming higher speed limits from the downloaded map data. - Wie weit im Voraus antizipiert Openpilot bevorstehende hรถhere Geschwindigkeitsbegrenzungen aus den heruntergeladenen Kartendaten. - - - Lower Limit Lookahead Time - Untere Grenzvorlaufzeit - - - How far ahead openpilot anticipates upcoming lower speed limits from the downloaded map data. - Wie weit im Voraus antizipiert Openpilot bevorstehende niedrigere Geschwindigkeitsbegrenzungen aus den heruntergeladenen Kartendaten? - - - Match Speed Limit on Engage - Geschwindigkeitsbegrenzung bei Aktivierung anpassen - - - Automatically set cruise control speed to match the current speed limit when first enabling openpilot. - Stellen Sie die Geschwindigkeit des Tempomats automatisch auf das aktuelle Tempolimit ein, wenn openpilot zum ersten Mal aktiviert wird. - - - Use Mapbox as Fallback - Verwenden Sie Mapbox als Fallback. - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - Verwenden Sie <b>Mapbox</b>-Geschwindigkeitsbegrenzungsdaten, wenn keine anderen Quellen verfรผgbar sind. - - - Speed Limit Source Priority - Quellenprioritรคt fรผr Geschwindigkeitsbegrenzungen - - - Define the priority order for speed limit sources (<b>Dashboard</b>, <b>Map Data</b>, <b>Navigation</b>). Higher-priority sources override lower ones when multiple limits are detected. - Definieren Sie die Prioritรคtsreihenfolge fรผr Geschwindigkeitsbegrenzungsquellen (<b>Dashboard</b>, <b>Kartendaten</b>, <b>Navigation</b>). Hรถher priorisierte Quellen รผberschreiben niedrigere, wenn mehrere Begrenzungen erkannt werden. - - - Speed Limit Offsets - Geschwindigkeitsbegrenzungsoffsets - - - Offsets relative to the posted speed limit for a more "human-like" driving experience. - Offsets relativ zur ausgeschilderten Geschwindigkeitsbegrenzung fรผr ein "menschlicheres" Fahrerlebnis. - - - Target speed offset applied for posted limits between 0 and 24 mph. - Zielgeschwindigkeitsoffset angewendet fรผr ausgeschilderte Geschwindigkeitsbegrenzungen zwischen 0 und 24 mph. - - - Target speed offset applied for posted limits between 25 and 34 mph. - Zielgeschwindigkeitsoffset angewendet fรผr ausgeschilderte Geschwindigkeitsbegrenzungen zwischen 25 und 34 mph. - - - Target speed offset applied for posted limits between 35 and 44 mph. - Zielgeschwindigkeitsoffset angewendet fรผr ausgeschilderte Geschwindigkeitsbegrenzungen zwischen 35 und 44 mph. - - - Target speed offset applied for posted limits between 45 and 54 mph. - Zielgeschwindigkeitsoffset angewendet fรผr ausgeschilderte Geschwindigkeitsbegrenzungen zwischen 45 und 54 mph. - - - Target speed offset applied for posted limits between 55 and 64 mph. - Zielgeschwindigkeitsoffset angewendet fรผr ausgeschilderte Geschwindigkeitsbegrenzungen zwischen 55 und 64 mph. - - - Target speed offset applied for posted limits between 65 and 74 mph. - Zielgeschwindigkeitsoffset angewendet fรผr ausgeschilderte Geschwindigkeitsbegrenzungen zwischen 65 und 74 mph. - - - Target speed offset applied for posted limits between 75 and 99 mph. - Zielgeschwindigkeitsoffset angewendet fรผr ausgeschilderte Geschwindigkeitsbegrenzungen zwischen 75 und 99 mph. - - - Visual Settings - Visuelle Einstellungen - - - Visual features to improve the <b>Speed Limit Controller</b> experience. - Visuelle Funktionen zur Verbesserung der <b>Speed Limit Controller</b>-Erfahrung. - - - Show Speed Limit Offset - Geschwindigkeitsbegrenzungsoffset anzeigen - - - Display the speed limit offset separately on the driving screen. - Zeigen Sie die Geschwindigkeitsbegrenzungsoffset separat auf dem Fahrbildschirm an. - - - Show Speed Limit Sources - Quellen fรผr Geschwindigkeitsbegrenzungen anzeigen - - - Display the speed limit sources on the driving screen. - Zeigen Sie die Geschwindigkeitsbegrenzungsquellen auf dem Fahrbildschirm an. - - - seconds - Sekunden - - - m/sยฒ - m/sยฒ - - - mph - mph - - - With Lead - Mit Blei - - - Switch to <b>Experimental Mode</b> when driving below this speed with a lead. - Wechseln Sie in den <b>Experimentellen Modus</b>, wenn Sie unter dieser Geschwindigkeit mit einem Vorsprung fahren. - - - Slower Lead - Langsamerer Vorsprung - - - Stopped Lead - Gestoppter Lead - - - Intersections - Kreuzungen - - - Turns - Dreht sich - - - Off - Aus - - - second - zweite - - - RESET - Zurรผcksetzen - - - Standard - Standard - - - Eco - ร–ko - - - Sport - Sport - - - Sport+ - Sport+ - - - feet - FรผรŸe - - - Acceleration - Beschleunigung - - - Deceleration - Verzรถgerung - - - Set Speed - Geschwindigkeit einstellen - - - Experimental Mode - Experimenteller Modus - - - Previous Limit - Vorheriges Limit - - - None - Keine - - - Set With Gas Pedal - Mit Gaspedal einstellen - - - Max Set Speed - Maximale Geschwindigkeit einstellen - - - SELECT - SELECT - - - Dashboard - Dashboard - - - Map Data - Kartendaten - - - Navigation - Navigation - - - Highest - Hรถchste - - - Lowest - Niedrigste - - - Select your primary priority - Wรคhlen Sie Ihre Hauptprioritรคt aus - - - Select your secondary priority - Wรคhlen Sie Ihre sekundรคre Prioritรคt aus - - - Select your tertiary priority - Wรคhlen Sie Ihre tertiรคre Prioritรคt aus - - - MANAGE - VERWALTEN - - - Lower Limits - Untere Grenzen - - - Higher Limits - Hรถhere Limits - - - Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? - Mรถchten Sie Ihre Einstellungen fรผr den <b>Verkehrsmodus</b> wirklich vollstรคndig zurรผcksetzen? - - - Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? - Mรถchten Sie wirklich Ihre Einstellungen fรผr die <b>Aggressive</b>-Persรถnlichkeit vollstรคndig zurรผcksetzen? - - - Are you sure you want to completely reset your settings for the <b>Standard</b> personality? - Mรถchten Sie wirklich Ihre Einstellungen fรผr die <b>Standard</b>-Persรถnlichkeit vollstรคndig zurรผcksetzen? - - - Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? - Mรถchten Sie wirklich Ihre Einstellungen fรผr die <b>Entspannte</b> Persรถnlichkeit vollstรคndig zurรผcksetzen? - - - foot - FuรŸ - - - meter - Meter - - - meters - Meter - - - km/h - km/h - - - Target speed offset applied for posted limits between 0 and 29 km/h. - Zielgeschwindigkeitsoffset angewendet fรผr ausgeschilderte Geschwindigkeitsbegrenzungen zwischen 0 und 29 km/h. - - - Target speed offset applied for posted limits between 30 and 49 km/h. - Zielgeschwindigkeitsoffset angewendet fรผr ausgeschilderte Geschwindigkeitsbegrenzungen zwischen 30 und 49 km/h. - - - Target speed offset applied for posted limits between 50 and 59 km/h. - Zielgeschwindigkeitsoffset angewendet fรผr ausgeschilderte Geschwindigkeitsbegrenzungen zwischen 50 und 59 km/h. - - - Target speed offset applied for posted limits between 60 and 79 km/h. - Zielgeschwindigkeitsoffset angewendet fรผr ausgeschilderte Geschwindigkeitsbegrenzungen zwischen 60 und 79 km/h. - - - Target speed offset applied for posted limits between 80 and 99 km/h. - Zielgeschwindigkeitsoffset angewendet fรผr ausgeschilderte Geschwindigkeitsbegrenzungen zwischen 80 und 99 km/h. - - - Target speed offset applied for posted limits between 100 and 119 km/h. - Zielgeschwindigkeitsoffset angewendet fรผr ausgeschilderte Geschwindigkeitsbegrenzungen zwischen 100 und 119 km/h. - - - Target speed offset applied for posted limits between 120 and 140 km/h. - Zielgeschwindigkeitsoffset angewendet fรผr ausgeschilderte Geschwindigkeitsbegrenzungen zwischen 120 und 140 km/h. - Advanced Longitudinal Tuning - Erweiterte longitudinale Abstimmung + Erweiterte Lรคngsregelungsabstimmung - Advanced settings for customizing how openpilot handles acceleration and braking. - Erweiterte Einstellungen zur Anpassung der Beschleunigungs- und Bremssteuerung von openpilot. + <b>Advanced acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Erweiterte Beschleunigungs- und Bremssteuerungsรคnderungen</b>, um das Fahrverhalten von openpilot fein abzustimmen. Actuator Delay (Default: %1) - Stellgliedverzรถgerung (Standard: %1) + Stellgliedverzรถgerung (Standard: %1) Actuator Delay - Stellgliedverzรถgerung + Stellgliedverzรถgerung - Delay before throttle or brake takes effect. Higher values smooth slow actuators but can feel laggy; lower values react quicker but may overshoot. - Verzรถgerung, bevor Gas oder Bremse wirksam werden. Hรถhere Werte glรคtten langsame Aktuatoren, kรถnnen sich jedoch trรคge anfรผhlen; niedrigere Werte reagieren schneller, kรถnnen jedoch รผberschieรŸen. + <b>The time between openpilot's throttle or brake command and the vehicle's response.</b> Increase if the vehicle feels slow to react; decrease if it feels too eager or overshoots. + <b>Die Zeit zwischen dem Gas- oder Bremsbefehl von openpilot und der Reaktion des Fahrzeugs.</b> Erhรถhen, wenn das Fahrzeug trรคge reagiert; verringern, wenn es zu eifrig wirkt oder รผberschieรŸt. Start Acceleration (Default: %1) - Startbeschleunigung (Standard: %1) + Startbeschleunigung (Standard: %1) Start Acceleration - Beschleunigung starten + Startbeschleunigung - Extra acceleration applied when pulling away from a stop. Increase for snappier launches at the cost of smoothness; decrease for gentler starts. - Zusรคtzliche Beschleunigung beim Anfahren aus dem Stand. Erhรถhen fรผr spritzigere Starts auf Kosten der Sanftheit; verringern fรผr sanftere Anfahrten. + <b>Extra acceleration applied when starting from a stop.</b> Increase for quicker takeoffs; decrease for smoother, gentler starts. + <b>Zusรคtzliche Beschleunigung beim Anfahren aus dem Stand.</b> Erhรถhen fรผr schnellere Starts; verringern fรผr sanftere, gleichmรครŸigere Anfahrten. Start Speed (Default: %1) - Startgeschwindigkeit (Standard: %1) + Startgeschwindigkeit (Standard: %1) Start Speed - Startgeschwindigkeit + Startgeschwindigkeit - Speed where openpilot begins to exit the stopped state. Higher values avoid creeping but may feel sluggish; lower values move sooner but risk creeping. - Geschwindigkeit, bei der openpilot beginnt, den gestoppten Zustand zu verlassen. Hรถhere Werte vermeiden Kriechen, kรถnnen sich jedoch trรคge anfรผhlen; niedrigere Werte bewegen sich frรผher, riskieren jedoch Kriechen. + <b>The speed at which openpilot exits the stopped state.</b> Increase to reduce creeping; decrease to move sooner after stopping. + <b>Die Geschwindigkeit, bei der openpilot den Stillstand beendet.</b> Erhรถhen, um das Vorkriechen zu verringern; verringern, um nach dem Anhalten frรผher loszufahren. Stop Acceleration (Default: %1) - Beschleunigung stoppen (Standard: %1) + Beschleunigung stoppen (Standard: %1) Stop Acceleration - Beschleunigung stoppen + Beschleunigung stoppen - Brake force applied to hold the vehicle still. Larger values prevent creeping on hills but might jerk to a stop. Smaller values can feel smoother but may allow rolling. - Bremskraft angewendet, um das Fahrzeug stillzuhalten. GrรถรŸere Werte verhindern das Kriechen an Hรผgeln, kรถnnen aber ein ruckartiges Anhalten verursachen. Kleinere Werte kรถnnen sich sanfter anfรผhlen, kรถnnen jedoch ein Rollen zulassen. + <b>Brake force applied to hold the vehicle at a standstill.</b> Increase to prevent rolling on hills; decrease for smoother, softer stops. + <b>Bremskraft angewendet, um das Fahrzeug im Stillstand zu halten.</b> Erhรถhen, um ein Wegrollen am Berg zu verhindern; verringern fรผr sanftere, weichere Stopps. Stopping Rate (Default: %1) - Stopp-Rate (Standard: %1) + Abbremsrate (Standard: %1) Stopping Rate - Stoppquote + Bremsverzรถgerung - How quickly braking ramps up when stopping. Faster rates shorten stopping distance but can be harsh; slower rates are smoother but need more room. - Wie schnell das Bremsen beim Anhalten ansteigt. Schnellere Raten verkรผrzen den Bremsweg, kรถnnen aber hart sein; langsamere Raten sind sanfter, benรถtigen jedoch mehr Platz. + <b>How quickly braking ramps up when stopping.</b> Increase for shorter, firmer stops; decrease for smoother, longer stops. + <b>Wie schnell die Bremsung beim Anhalten ansteigt.</b> Erhรถhen fรผr kรผrzere, festere Stopps; verringern fรผr sanftere, lรคngere Stopps. Stop Speed (Default: %1) - Stoppgeschwindigkeit (Standard: %1) + Stop-Geschwindigkeit (Standard: %1) Stop Speed - Geschwindigkeit stoppen + Stoppgeschwindigkeit - Speed where openpilot beings to enter the stopped state. Higher values brake earlier for smoother stops but might stop too soon; lower values wait longer and can overshoot. - Geschwindigkeit, bei der openpilot beginnt, in den gestoppten Zustand zu wechseln. Hรถhere Werte bremsen frรผher fรผr sanftere Stopps, kรถnnen aber zu frรผh anhalten; niedrigere Werte warten lรคnger und kรถnnen รผberschieรŸen. + <b>The speed at which openpilot considers the vehicle stopped.</b> Increase to brake earlier and stop smoothly; decrease to wait longer but risk overshooting. + <b>Die Geschwindigkeit, bei der openpilot das Fahrzeug als angehalten betrachtet.</b> Erhรถhen, um frรผher zu bremsen und sanft zu stoppen; verringern, um lรคnger zu warten, jedoch mit Risiko des รœberschieรŸens. + + + Conditional Experimental Mode + Bedingter Experimenteller Modus + + + <b>Automatically switch to "Experimental Mode" when set conditions are met.</b> Allows the model to handle challenging situations with smarter decision making. + <b>Automatisch in den โ€žExperimental Modeโ€œ wechseln, wenn die festgelegten Bedingungen erfรผllt sind.</b> Ermรถglicht dem Modell, schwierige Situationen mit smarterer Entscheidungsfindung zu bewรคltigen. + + + Below + Unten + + + <b>Switch to "Experimental Mode" when driving below this speed without a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>Schalten Sie bei Fahrt unter dieser Geschwindigkeit ohne Vorausfahrer in den โ€žExperimental Modeโ€œ</b>, damit openpilot niedrige Geschwindigkeiten reibungsloser bewรคltigt. + + + Curve Detected Ahead + Kurve voraus erkannt + + + <b>Switch to "Experimental Mode" when a curve is detected</b> to allow the model to set an appropriate speed for the curve. + <b>Bei erkannter Kurve in den โ€žExperimental Modeโ€œ wechseln</b>, damit das Modell eine passende Geschwindigkeit fรผr die Kurve festlegt. + + + Lead Detected Ahead + Fahrzeug voraus erkannt + + + <b>Switch to "Experimental Mode" when a slower or stopped vehicle is detected.</b> Can make braking smoother and more reliable on some vehicles. + <b>Bei Erkennen eines langsameren oder stehenden Fahrzeugs in den โ€žExperimental Modeโ€œ wechseln.</b> Kann das Bremsen bei einigen Fahrzeugen sanfter und zuverlรคssiger machen. + + + Navigation-Based + Navigationsbasiert + + + <b>Switch to "Experimental Mode" when approaching intersections or turns on the active route</b> while using "Navigate on openpilot" (NOO) to allow the model to set an appropriate speed for upcoming maneuvers. + <b>Wechseln Sie in den โ€žExperimental Modeโ€œ, wenn Sie sich Kreuzungen oder Abbiegepunkten auf der aktiven Route nรคhern</b>, wรคhrend Sie โ€žNavigate on openpilotโ€œ (NOO) verwenden, damit das Modell eine angemessene Geschwindigkeit fรผr bevorstehende Manรถver festlegen kann. + + + Predicted Stop In + Voraussichtlicher Halt in + + + <b>Switch to "Experimental Mode" when openpilot predicts a stop within the set time.</b> This is usually triggered when the model "sees" a red light or stop sign ahead.<br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>Wechsle in den โ€žExperimental Modeโ€œ, wenn openpilot innerhalb der eingestellten Zeit ein Anhalten vorhersagt.</b> Dies wird normalerweise ausgelรถst, wenn das Modell voraus eine rote Ampel oder ein Stoppschild โ€žsiehtโ€œ.<br><br><i><b>Haftungsausschluss</b>: openpilot erkennt Verkehrsampeln oder Stoppschilder nicht ausdrรผcklich. Im โ€žExperimental Modeโ€œ trifft openpilot End-to-End-Fahrentscheidungen aus Kameraeingaben, was bedeutet, dass es auch anhalten kann, wenn es dafรผr keinen klaren Grund gibt.</i> + + + Turn Signal Below + Blinker unten + + + <b>Switch to "Experimental Mode" when using a turn signal below the set speed</b> to allow the model to choose an appropriate speed for smoother left and right turns. + <b>Wechseln Sie in den โ€žExperimental Modeโ€œ, wenn Sie unter der eingestellten Geschwindigkeit blinken</b>, damit das Modell eine geeignete Geschwindigkeit fรผr sanftere Links- und Rechtskurven wรคhlen kann. + + + Status Widget + Status-Widget + + + <b>Show which condition triggered "Experimental Mode"</b> on the driving screen. + <b>Anzeigen, welche Bedingung den โ€žExperimental Modeโ€œ ausgelรถst hat</b> auf dem Fahrbildschirm. + + + Curve Speed Controller + Kurven-Geschwindigkeitsregler + + + <b>Automatically slow down for upcoming curves</b> using data learned from your driving style, adapting to curves as you would. + <b>Automatisch fรผr bevorstehende Kurven verlangsamen</b> anhand von aus Ihrem Fahrstil gelernten Daten, sodass sich das System an Kurven anpasst, wie Sie es tun wรผrden. + + + Calibrated Lateral Acceleration + Kalibrierte Querbeschleunigung + + + <b>The learned lateral acceleration from collected driving data.</b> This sets how fast openpilot will take curves. Higher values allow faster cornering; lower values slow the vehicle for gentler turns. + <b>Die aus gesammelten Fahrdaten erlernte Querbeschleunigung.</b> Dies legt fest, wie schnell openpilot Kurven fรคhrt. Hรถhere Werte ermรถglichen schnelleres Kurvenfahren; niedrigere Werte verlangsamen das Fahrzeug fรผr sanftere Kurven. + + + Calibration Progress + Kalibrierungsfortschritt + + + <b>How much curve data has been collected.</b> This is a progress meter; it is normal for the value to stay low and rarely reach 100%. + <b>Wie viele Kurvendaten gesammelt wurden.</b> Dies ist ein Fortschrittsmesser; es ist normal, dass der Wert niedrig bleibt und selten 100% erreicht. + + + Reset Curve Data + Kurvendaten zurรผcksetzen + + + <b>Reset collected user data for "Curve Speed Controller".</b> + <b>Gesammelte Nutzerdaten fรผr โ€žCurve Speed Controllerโ€œ zurรผcksetzen.</b> + + + <b>Show the "Curve Speed Controller" target speed on the driving screen.</b> + <b>Zeige die Zielgeschwindigkeit des โ€žCurve Speed Controllerโ€œ auf dem Fahrbildschirm.</b> + + + Driving Personalities + Fahrprofile + + + <b>Customize the "Driving Personalities"</b> to better match your driving style. + <b>Passen Sie die โ€žFahrpersรถnlichkeitenโ€œ an</b>, um Ihren Fahrstil besser widerzuspiegeln. + + + Traffic Mode + Verkehrsmodus + + + <b>Customize the "Traffic Mode" personality profile.</b> Designed for stop-and-go driving. + <b>Passen Sie das Persรถnlichkeitsprofil โ€žVerkehrsmodusโ€œ an.</b> Ausgelegt fรผr Stop-and-Go-Verkehr. + + + Following Distance + Abstand zum vorausfahrenden Fahrzeug + + + <b>The minimum following distance to the lead vehicle in "Traffic Mode".</b> openpilot blends between this value and the "Aggressive" profile as speed increases. Increase for more space; decrease for tighter gaps. + <b>Der minimale Abstand zum vorausfahrenden Fahrzeug im โ€žVerkehrsmodusโ€œ.</b> openpilot mischt zwischen diesem Wert und dem Profil โ€žAggressivโ€œ, wenn die Geschwindigkeit steigt. Erhรถhen fรผr mehr Abstand; verringern fรผr kleinere Lรผcken. + + + Acceleration Smoothness + Beschleunigungsglรคtte + + + <b>How smoothly openpilot accelerates in "Traffic Mode".</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Wie gleichmรครŸig openpilot im โ€žTraffic Modeโ€œ beschleunigt.</b> Erhรถhen fรผr sanftere Starts; verringern fรผr schnellere, aber ruckartigere Anfahrten. + + + Braking Smoothness + Bremskomfort + + + <b>How smoothly openpilot brakes in "Traffic Mode".</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>Wie sanft openpilot im โ€žVerkehrsmodusโ€œ bremst.</b> Erhรถhen fรผr sanfteres Anhalten; verringern fรผr schnelleres, aber schรคrferes Bremsen. + + + Safety Gap Bias + Sicherheitsabstands-Bias + + + <b>How much extra space openpilot keeps from the vehicle ahead in "Traffic Mode".</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Wie viel zusรคtzlichen Abstand openpilot im โ€žVerkehrsmodusโ€œ zum vorausfahrenden Fahrzeug einhรคlt.</b> Erhรถhen fรผr grรถรŸere Abstรคnde und vorsichtigeres Folgen; verringern fรผr engere Abstรคnde und dichteres Folgen. + + + Slowdown Response + Verzรถgerungsreaktion + + + <b>How smoothly openpilot slows down in "Traffic Mode".</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Wie sanft openpilot im โ€žVerkehrsmodusโ€œ abbremst.</b> Erhรถhen fรผr eine gleichmรครŸigeres Verzรถgern; verringern fรผr schnellere, aber abruptere Abbremsungen. + + + Speed-Up Response + Reaktionsbeschleunigung + + + <b>How smoothly openpilot speeds up in "Traffic Mode".</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Wie sanft openpilot im โ€žVerkehrsmodusโ€œ beschleunigt.</b> Erhรถhen fรผr allmรคhlichere Beschleunigung; verringern fรผr schnellere, aber ruckartigere Beschleunigung. + + + Reset to Defaults + Auf Standardeinstellungen zurรผcksetzen + + + <b>Reset "Traffic Mode" settings to defaults.</b> + <b>"Traffic Mode"-Einstellungen auf Standardwerte zurรผcksetzen.</b> + + + Aggressive + Aggressiv + + + <b>Customize the "Aggressive" personality profile.</b> Designed for assertive driving with tighter gaps. + <b>Passen Sie das Profil โ€žAggressivโ€œ an.</b> Ausgelegt fรผr bestimmtes Fahren mit geringeren Abstรคnden. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Aggressive" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.25 seconds. + <b>Wie viele Sekunden openpilot dem vorausfahrenden Fahrzeug mit dem Profil โ€žAggressivโ€œ folgt.</b> Erhรถhen fรผr mehr Abstand; verringern fรผr kleinere Lรผcken.<br><br>Standard: 1,25 Sekunden. + + + <b>How smoothly openpilot accelerates with the "Aggressive" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Wie sanft openpilot mit dem Profil โ€žAggressivโ€œ beschleunigt.</b> Erhรถhen fรผr sanftere Starts; verringern fรผr schnellere, aber abruptere Anfahrten. + + + <b>How smoothly openpilot brakes with the "Aggressive" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>Wie sanft openpilot mit dem โ€žAggressivโ€œ-Profil bremst.</b> Erhรถhen fรผr sanftere Stopps; verringern fรผr schnellere, aber schรคrfere Bremsungen. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Aggressive" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Wie viel zusรคtzlichen Abstand openpilot mit dem Profil โ€žAggressivโ€œ zum vorausfahrenden Fahrzeug hรคlt.</b> Erhรถhen fรผr grรถรŸere Abstรคnde und vorsichtigeres Folgen; verringern fรผr engere Abstรคnde und nรคheres Folgen. + + + <b>How smoothly openpilot slows down with the "Aggressive" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Wie sanft openpilot mit dem Profil โ€žAggressivโ€œ verzรถgert.</b> Erhรถhen fรผr allmรคhlichere Verzรถgerung; verringern fรผr schnellere, aber stรคrkere Abbremsungen. + + + <b>How smoothly openpilot speeds up with the "Aggressive" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Wie sanft openpilot mit dem โ€žAggressivโ€œ-Profil beschleunigt.</b> Erhรถhen fรผr allmรคhlichere Beschleunigung; verringern fรผr schnellere, aber ruckartigere Beschleunigung. + + + <b>Reset the "Aggressive" profile to defaults.</b> + <b>Setzen Sie das Profil โ€žAggressivโ€œ auf die Standardeinstellungen zurรผck.</b> + + + Standard + Standard + + + <b>Customize the "Standard" personality profile.</b> Designed for balanced driving with moderate gaps. + <b>Passen Sie das Profil โ€žStandardโ€œ an.</b> Ausgelegt fรผr ausgewogenes Fahren mit moderaten Abstรคnden. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Standard" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.45 seconds. + <b>Wie viele Sekunden openpilot dem vorausfahrenden Fahrzeug im Profil โ€žStandardโ€œ folgt.</b> Erhรถhen fรผr mehr Abstand; verringern fรผr geringere Lรผcken.<br><br>Standard: 1,45 Sekunden. + + + <b>How smoothly openpilot accelerates with the "Standard" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Wie sanft openpilot mit dem โ€žStandardโ€œ-Profil beschleunigt.</b> Erhรถhen fรผr sanftere Starts; verringern fรผr schnellere, aber abruptere Anfahrten. + + + <b>How smoothly openpilot brakes with the "Standard" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>Wie sanft openpilot mit dem Profil โ€žStandardโ€œ bremst.</b> Erhรถhen fรผr sanftere Stopps; verringern fรผr schnelleres, aber schรคrferes Bremsen. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Standard" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Wie viel zusรคtzlichen Abstand openpilot mit dem Profil โ€žStandardโ€œ zum vorausfahrenden Fahrzeug hรคlt.</b> Erhรถhen fรผr grรถรŸere Abstรคnde und vorsichtigeres Folgen; verringern fรผr kleinere Abstรคnde und engeres Folgen. + + + <b>How smoothly openpilot slows down with the "Standard" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Wie sanft openpilot mit dem โ€žStandardโ€œ-Profil abbremst.</b> Erhรถhen fรผr gleichmรครŸigere Verzรถgerung; verringern fรผr schnellere, aber schรคrfere Abbremsungen. + + + <b>How smoothly openpilot speeds up with the "Standard" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Wie sanft openpilot mit dem โ€žStandardโ€œ-Profil beschleunigt.</b> Erhรถhen fรผr allmรคhlichere Beschleunigung; verringern fรผr schnellere, aber ruckartigere Beschleunigung. + + + <b>Reset the "Standard" profile to defaults.</b> + <b>Das Profil โ€žStandardโ€œ auf die Standardeinstellungen zurรผcksetzen.</b> + + + Relaxed + Entspannt + + + <b>Customize the "Relaxed" personality profile.</b> Designed for smoother, more comfortable driving with larger gaps. + <b>Das Persรถnlichkeitsprofil โ€žEntspanntโ€œ anpassen.</b> Entwickelt fรผr gleichmรครŸigeres, komfortableres Fahren mit grรถรŸeren Abstรคnden. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Relaxed" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.75 seconds. + <b>Wie viele Sekunden openpilot hinter vorausfahrenden Fahrzeugen im Profil โ€žEntspanntโ€œ folgt.</b> Erhรถhen fรผr mehr Abstand; verringern fรผr kleinere Lรผcken.<br><br>Standard: 1,75 Sekunden. + + + <b>How smoothly openpilot accelerates with the "Relaxed" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Wie sanft openpilot mit dem โ€žRelaxedโ€œ-Profil beschleunigt.</b> Erhรถhen fรผr sanftere Starts; verringern fรผr schnellere, aber abruptere Anfahrten. + + + <b>How smoothly openpilot brakes with the "Relaxed" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>Wie sanft openpilot mit dem Profil โ€žRelaxedโ€œ bremst.</b> Erhรถhen fรผr sanftere Stopps; verringern fรผr schnellere, aber schรคrfere Bremsungen. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Relaxed" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Wie viel zusรคtzlichen Abstand openpilot mit dem Profil โ€žEntspanntโ€œ zum vorausfahrenden Fahrzeug hรคlt.</b> Erhรถhen fรผr grรถรŸere Abstรคnde und vorsichtigeres Folgen; verringern fรผr engere Abstรคnde und dichteres Folgen. + + + <b>How smoothly openpilot slows down with the "Relaxed" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Wie sanft openpilot mit dem Profil โ€žRelaxedโ€œ abbremst.</b> Erhรถhen fรผr allmรคhlichere Verzรถgerung; verringern fรผr schnellere, aber stรคrkere Abbremsungen. + + + <b>How smoothly openpilot speeds up with the "Relaxed" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Wie sanft openpilot mit dem โ€žEntspanntโ€œ-Profil beschleunigt.</b> Erhรถhen fรผr gleichmรครŸigere Beschleunigung; verringern fรผr schnellere, aber ruckigere Beschleunigung. + + + <b>Reset the "Relaxed" profile to defaults.</b> + <b>Das Profil โ€žEntspanntโ€œ auf die Standardwerte zurรผcksetzen.</b> + + + Longitudinal Tuning + Lรคngsregelung Tuning + + + <b>Acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>ร„nderungen an Beschleunigungs- und Bremssteuerung</b>, um die Fahrweise von openpilot feinzujustieren. + + + Acceleration Profile + Beschleunigungsprofil + + + <b>How quickly openpilot speeds up.</b> "Eco" is gentle and efficient, "Sport" is firmer and more responsive, and "Sport+" accelerates at the maximum rate allowed. + <b>Wie schnell openpilot beschleunigt.</b> โ€žEcoโ€œ ist sanft und effizient, โ€žSportโ€œ ist straffer und reaktionsschneller, und โ€žSport+โ€œ beschleunigt mit der maximal zulรคssigen Rate. + + + Deceleration Profile + Verzรถgerungsprofil + + + <b>How firmly openpilot slows down.</b> "Eco" favors coasting, "Sport" applies stronger braking. + <b>Wie stark openpilot verzรถgert.</b> โ€žEcoโ€œ begรผnstigt Segeln, โ€žSportโ€œ bremst stรคrker. + + + Human-Like Acceleration + Menschliches Beschleunigen + + + <b>Acceleration that mimics human behavior</b> by easing the throttle at low speeds and adding extra power when taking off from a stop. + <b>Beschleunigung, die menschliches Verhalten imitiert</b>, indem sie bei niedrigen Geschwindigkeiten das Gas sanft reduziert und beim Anfahren zusรคtzliche Leistung bereitstellt. + + + Human-Like Following + Menschenรคhnliches Folgen + + + Lead Detection Sensitivity + Empfindlichkeit der Vorausfahrzeugerkennung + + + <b>How sensitive openpilot is to detecting vehicles.</b> Higher sensitivity allows quicker detection at longer distances but may react to non-vehicle objects; lower sensitivity is more conservative and reduces false detections. + <b>Wie empfindlich openpilot Fahrzeuge erkennt.</b> Hรถhere Empfindlichkeit ermรถglicht eine schnellere Erkennung auf grรถรŸere Entfernungen, kann jedoch auf Nicht-Fahrzeugobjekte reagieren; niedrigere Empfindlichkeit ist konservativer und reduziert Fehlยญerkennungen. + + + Maximum Acceleration + Maximale Beschleunigung + + + <b>Limit the strongest acceleration</b> openpilot can command. + <b>Begrenzen Sie die stรคrkste Beschleunigung</b>, die openpilot anfordern kann. + + + "Taco Bell Run" Turn Speed Hack + โ€žTaco Bell Runโ€œ-Kurvengeschwindigkeits-Hack + + + <b>The turn-speed hack from comma's 2022 "Taco Bell Run".</b> Designed to slow down for left and right turns. + <b>Der Kurvengeschwindigkeits-Hack aus commas โ€žTaco Bell Runโ€œ von 2022.</b> Entwickelt, um bei Links- und Rechtskurven zu verlangsamen. + + + Quality of Life + Lebensqualitรคt + + + <b>Miscellaneous acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Verschiedene ร„nderungen an Beschleunigungs- und Bremssteuerung</b>, um das Fahrverhalten von openpilot feinzujustieren. + + + Cruise Interval + Abstandsregelung + + + <b>How much the set speed increases or decreases</b> for each + or โ€“ cruise control button press. + <b>Wie stark die eingestellte Geschwindigkeit</b> bei jedem + oder โ€“ Tempomat-Tastendruck erhรถht oder verringert wird. + + + Cruise Interval (Hold) + Abstandstempomat (Halten) + + + <b>How much the set speed increases or decreases while holding the + or โ€“ cruise control buttons.</b> + <b>Wie stark sich die eingestellte Geschwindigkeit erhรถht oder verringert, wรคhrend die +- oder โ€“-Tempomat-Tasten gedrรผckt gehalten werden.</b> + + + Force Stop at "Detected" Stop Lights/Signs + Erzwinge Stopp an โ€žErkanntenโ€œ Ampeln/Stoppschildern + + + <b>Force openpilot to stop whenever the driving model "detects" a red light or stop sign.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>Erzwinge, dass openpilot anhรคlt, wenn das Fahrmodell eine rote Ampel oder ein Stoppschild โ€žerkenntโ€œ.</b><br><br><i><b>Haftungsausschluss</b>: openpilot erkennt Ampeln oder Stoppschilder nicht explizit. Im โ€žExperimental Modeโ€œ trifft openpilot Ende-zu-Ende-Fahrentscheidungen anhand der Kameraeingaben, was bedeutet, dass es auch ohne klaren Grund anhalten kann.</i> + + + Increase Stopped Distance by: + Erhรถhe den Haltabstand um: + + + <b>Add extra space when stopped behind vehicles.</b> Increase for more room; decrease for shorter gaps. + <b>Fรผgen Sie im Stillstand hinter Fahrzeugen zusรคtzlichen Abstand hinzu.</b> Erhรถhen fรผr mehr Platz; verringern fรผr kรผrzere Abstรคnde. + + + Map Accel/Decel to Gears + Beschleunigen/Verzรถgern auf Gรคnge abbilden + + + <b>Map the Acceleration or Deceleration profiles to the vehicle's "Eco" and "Sport" gear modes.</b> + <b>Ordnen Sie die Beschleunigungs- oder Verzรถgerungsprofile den โ€žEcoโ€œ- und โ€žSportโ€œ-Fahrmodi des Fahrzeugs zu.</b> + + + Offset Set Speed by: + Geschwindigkeit versetzen um: + + + <b>Increase the set speed by the chosen offset.</b> For example, set +5 if you usually drive 5 over the limit. + <b>Erhรถhe die eingestellte Geschwindigkeit um den gewรคhlten Offset.</b> Zum Beispiel: +5 einstellen, wenn du normalerweise 5 รผber dem Limit fรคhrst. + + + Reverse Cruise Increase + Rรผckwรคrts-Tempomat erhรถhen + + + <b>Reverse the cruise control button behavior</b> so a short press increases the set speed by 5 instead of 1. + <b>Kehrt das Verhalten der Tempomat-Taste um</b>, sodass ein kurzes Drรผcken die Sollgeschwindigkeit um 5 statt um 1 erhรถht. + + + Increase Following Distance by: + Folgeabstand erhรถhen um: + + + Reduce Acceleration by: + Beschleunigung verringern um: + + + Reduce Speed in Curves by: + Geschwindigkeit in Kurven reduzieren um: + + + Snow + Schnee + + + <b>Driving adjustments for snowy conditions.</b> + <b>Fahranpassungen fรผr Schneebedingungen.</b> + + + <b>Add extra space behind lead vehicles in snow.</b> Increase for more space; decrease for tighter gaps. + <b>Zusรคtzlichen Abstand hinter vorausfahrenden Fahrzeugen im Schnee hinzufรผgen.</b> Erhรถhen fรผr mehr Abstand; verringern fรผr geringere Lรผcken." + + + <b>Add extra buffer when stopped behind vehicles in snow.</b> Increase for more room; decrease for shorter gaps. + <b>Fรผgen Sie bei Schnee zusรคtzlichen Abstand ein, wenn Sie hinter Fahrzeugen anhalten.</b> Erhรถhen fรผr mehr Abstand; verringern fรผr kรผrzere Lรผcken. + + + <b>Lower the maximum acceleration in snow.</b> Increase for softer takeoffs; decrease for quicker but less stable takeoffs. + <b>Verringern Sie die maximale Beschleunigung im Schnee.</b> Erhรถhen fรผr weichere Anfahrten; verringern fรผr schnellere, aber weniger stabile Anfahrten. + + + <b>Lower the desired speed while driving through curves in snow.</b> Increase for safer, gentler turns; decrease for more aggressive driving in curves. + <b>Reduzieren Sie die gewรผnschte Geschwindigkeit beim Fahren durch Kurven im Schnee.</b> Erhรถhen fรผr sicherere, sanftere Kurven; verringern fรผr aggressiveres Fahren in Kurven. + + + Speed Limit Controller + Geschwindigkeitsbegrenzungsregler + + + <b>Limit openpilot's maximum driving speed to the current speed limit</b> obtained from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + <b>Begrenze openpilots maximale Fahrgeschwindigkeit auf die aktuelle Geschwindigkeitsbegrenzung</b>, ermittelt aus heruntergeladenen Karten, Mapbox, Navigate on openpilot oder dem Armaturenbrett fรผr unterstรผtzte Fahrzeuge (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + + + Fallback Speed + Fallback-Geschwindigkeit + + + <b>The speed used by "Speed Limit Controller" when no speed limit is found.</b><br><br>- <b>Set Speed</b>: Use the cruise set speed<br>- <b>Experimental Mode</b>: Estimate the limit using the driving model<br>- <b>Previous Limit</b>: Keep using the last confirmed limit + <b>Die von โ€žSpeed Limit Controllerโ€œ verwendete Geschwindigkeit, wenn kein Tempolimit gefunden wird.</b><br><br>- <b>Set Speed</b>: Verwende die eingestellte Tempomatgeschwindigkeit<br>- <b>Experimental Mode</b>: Schรคtze das Limit mit dem Fahrmodell<br>- <b>Previous Limit</b>: Verwende weiterhin das zuletzt bestรคtigte Limit + + + Override Speed + Geschwindigkeit รผberschreiben + + + <b>The speed used by "Speed Limit Controller" after you manually drive faster than the posted limit.</b><br><br>- <b>Set with Gas Pedal</b>: Use the highest speed reached while pressing the gas<br>- <b>Max Set Speed</b>: Use the cruise set speed<br><br>Overrides clear when openpilot disengages. + <b>Die von โ€žSpeed Limit Controllerโ€œ verwendete Geschwindigkeit, nachdem Sie manuell schneller als das ausgeschriebene Limit gefahren sind.</b><br><br>- <b>Mit Gaspedal setzen</b>: Verwendet die hรถchste Geschwindigkeit, die beim Betรคtigen des Gaspedals erreicht wurde<br>- <b>Max. gesetzte Geschwindigkeit</b>: Verwendet die mit dem Tempomat gesetzte Geschwindigkeit<br><br>รœberschreibungen werden gelรถscht, wenn openpilot deaktiviert wird. + + + <b>Miscellaneous "Speed Limit Controller" changes</b> to fine-tune how openpilot drives. + <b>Verschiedene โ€žSpeed Limit Controllerโ€œ-ร„nderungen</b>, um das Fahrverhalten von openpilot feinzujustieren. + + + Confirm New Speed Limits + Neue Geschwindigkeitsbegrenzungen bestรคtigen + + + <b>Ask before changing to a new speed limit.</b> To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds. + <b>Vor dem Wechsel zu einer neuen Geschwindigkeitsbegrenzung nachfragen.</b> Zum Bestรคtigen das blinkende Onโ€‘Screenโ€‘Widget antippen oder die Taste โ€žCruise Increaseโ€œ drรผcken. Zum Ablehnen die Taste โ€žCruise Decreaseโ€œ drรผcken oder die Aufforderung 30 Sekunden lang ignorieren. + + + Force MPH from Dashboard + MPH vom Dashboard erzwingen + + + <b>Always read dashboard speed limit signs in mph.</b> Turn this on if the cluster shows mph but the limit is interpreted as km/h. + <b>Lies Geschwindigkeitsbegrenzungen auf dem Armaturenbrett immer in mph.</b> Aktiviere dies, wenn das Kombiinstrument mph anzeigt, die Begrenzung aber als km/h interpretiert wird. + + + Higher Limit Lookahead Time + Hรถheres Limit-Vorausschauzeit + + + <b>How far ahead openpilot anticipates upcoming higher speed limits</b> from downloaded map data. + <b>Wie weit im Voraus openpilot kommende hรถhere Tempolimits</b> aus heruntergeladenen Kartendaten antizipiert. + + + Lower Limit Lookahead Time + Niedrigere Vorausblickzeit Grenzwert + + + <b>How far ahead openpilot anticipates upcoming lower speed limits</b> from downloaded map data. + <b>Wie weit im Voraus openpilot kommende niedrigere Geschwindigkeitsbegrenzungen</b> aus heruntergeladenen Kartendaten antizipiert. + + + Match Speed Limit on Engage + Geschwindigkeit beim Aktivieren an Tempolimit anpassen + + + <b>When openpilot is first enabled, automatically set the max speed to the current posted limit.</b> + <b>Wenn openpilot erstmals aktiviert wird, die Hรถchstgeschwindigkeit automatisch auf das aktuell ausgeschriebene Limit setzen.</b> + + + Use Mapbox as Fallback + Mapbox als Fallback verwenden + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>Mapbox-Geschwindigkeitsdaten verwenden, wenn keine andere Quelle verfรผgbar ist.</b> + + + Speed Limit Source Priority + Prioritรคt der Geschwindigkeitslimit-Quelle + + + <b>The source order for speed limits</b> when more than one is available. + <b>Die Quellenreihenfolge fรผr Tempolimits</b>, wenn mehrere verfรผgbar sind.</b + + + Speed Limit Offsets + Geschwindigkeitslimit-Offsets + + + <b>Add an offset to the posted speed limit</b> to better match your driving style. + <b>Fรผgen Sie einen Offset zum ausgeschilderten Tempolimit hinzu</b>, um Ihren Fahrstil besser abzubilden. Speed Offset (0โ€“24 mph) - Geschwindigkeitsoffset (0โ€“24 mph) + Geschwindigkeitsoffset (0โ€“24 mph) + + + <b>How much to offset posted speed-limits</b> between 0 and 24 mph. + <b>Wie stark die angegebenen Tempolimits</b> zwischen 0 und 24 mph versetzen.</b Speed Offset (25โ€“34 mph) - Geschwindigkeitsoffset (25โ€“34 mph) + Geschwindigkeitsoffset (25โ€“34 mph) + + + <b>How much to offset posted speed-limits</b> between 25 and 34 mph. + <b>Wie stark die ausgeschilderten Geschwindigkeitsbegrenzungen</b> zwischen 25 und 34 mph versetzt werden sollen. Speed Offset (35โ€“44 mph) - Geschwindigkeitsoffset (35โ€“44 mph) + Geschwindigkeitsabstand (35โ€“44 mph) + + + <b>How much to offset posted speed-limits</b> between 35 and 44 mph. + <b>Wie stark ausgeschriebene Geschwindigkeitsbegrenzungen</b> zwischen 35 und 44 mph versetzen.</b> Speed Offset (45โ€“54 mph) - Geschwindigkeitsoffset (45โ€“54 mph) + Geschwindigkeitsoffset (45โ€“54 mph) + + + <b>How much to offset posted speed-limits</b> between 45 and 54 mph. + <b>Wie stark die ausgeschilderten Geschwindigkeitsbegrenzungen</b> zwischen 45 und 54 mph versetzen.</b> Speed Offset (55โ€“64 mph) - Geschwindigkeitsoffset (55โ€“64 mph) + Geschwindigkeitsversatz (55โ€“64 mph) + + + <b>How much to offset posted speed-limits</b> between 55 and 64 mph. + <b>Wie viel die ausgeschilderten Geschwindigkeitsbegrenzungen</b> zwischen 55 und 64 mph ausgleichen. Speed Offset (65โ€“74 mph) - Geschwindigkeitsabweichung (65โ€“74 mph) + Geschwindigkeitsabweichung (65โ€“74 mph) + + + <b>How much to offset posted speed-limits</b> between 65 and 74 mph. + <b>Wie stark die angegebenen Geschwindigkeitsbegrenzungen</b> zwischen 65 und 74 mph versetzt werden sollen. Speed Offset (75โ€“99 mph) - Geschwindigkeitsoffset (75โ€“99 mph) + Geschwindigkeits-Offset (75โ€“99 mph) - Only For Detected Lanes - Nur fรผr erkannte Fahrspuren + <b>How much to offset posted speed-limits</b> between 75 and 99 mph. + <b>Wie viel die ausgeschilderten Geschwindigkeitsbegrenzungen versetzen</b> zwischen 75 und 99 mph. + + + Visual Settings + Anzeigeeinstellungen + + + <b>Visual "Speed Limit Controller" changes</b> to fine-tune how the driving screen looks. + <b>Visuelle ร„nderungen des โ€žSpeed Limit Controllerโ€œ</b>, um das Aussehen des Fahrbildschirms fein abzustimmen. + + + Show Speed Limit Offset + Geschwindigkeitslimitabweichung anzeigen + + + <b>Show the current offset from the posted limit</b> on the driving screen. + <b>Zeige den aktuellen Offset vom ausgeschilderten Limit</b> auf dem Fahrbildschirm an. + + + Show Speed Limit Sources + Geschwindigkeitsbegrenzungsquellen anzeigen + + + <b>Display the speed-limit sources and their current values</b> on the driving screen. + <b>Zeige die Geschwindigkeitslimit-Quellen und ihre aktuellen Werte an</b> auf dem Fahrbildschirm. + + + seconds + Sekunden + + + m/sยฒ + m/sยฒ + + + mph + mph + + + With Lead + Mit Vordermann + + + <b>Switch to "Experimental Mode" when driving below this speed with a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>Bei Fahrten unter dieser Geschwindigkeit mit einem vorausfahrenden Fahrzeug auf โ€žExperimental Modeโ€œ wechseln</b>, damit openpilot niedrige Geschwindigkeiten reibungsloser bewรคltigt. + + + Slower Lead + Langsameres vorausfahrendes Fahrzeug + + + Stopped Lead + Angehaltenes vorausfahrendes Fahrzeug + + + Intersections + Kreuzungen + + + Turns + Abbiegen + + + Off + Aus + + + second + Sekunde + + + Not For Detected Lanes + Nicht fรผr erkannte Fahrspuren + + + RESET + ZURรœCKSETZEN + + + Are you sure you want to completely reset your curvature data? + Sind Sie sicher, dass Sie Ihre Krรผmmungsdaten vollstรคndig zurรผcksetzen mรถchten? + + + Eco + Eco + + + Sport + Sport + + + Sport+ + Sport+ + + + feet + FuรŸ + + + Acceleration + Beschleunigung + + + Deceleration + Verzรถgerung + + + MANAGE + VERWALTEN + + + Set Speed + Geschwindigkeit einstellen + + + Experimental Mode + Experimenteller Modus + + + Previous Limit + Vorherige Begrenzung + + + None + Keine + + + Set With Gas Pedal + Mit Gaspedal setzen + + + Max Set Speed + Max. Sollgeschwindigkeit + + + SELECT + AUSWร„HLEN + + + Dashboard + Armaturenbrett + + + Map Data + Kartendaten + + + Navigation + Navigation + + + Highest + Hรถchste + + + Lowest + Niedrigste + + + Select your primary priority + Wรคhlen Sie Ihre Hauptprioritรคt + + + Select your secondary priority + Wรคhlen Sie Ihre sekundรคre Prioritรคt + + + Select your tertiary priority + Wรคhlen Sie Ihre tertiรคre Prioritรคt + + + Lower Limits + Untere Grenzwerte + + + Higher Limits + Hรถhere Limits + + + Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? + Sind Sie sicher, dass Sie Ihre Einstellungen fรผr <b>Traffic Mode</b> vollstรคndig zurรผcksetzen mรถchten? + + + Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? + Mรถchten Sie Ihre Einstellungen fรผr die Persรถnlichkeit <b>Aggressiv</b> wirklich vollstรคndig zurรผcksetzen? + + + Are you sure you want to completely reset your settings for the <b>Standard</b> personality? + Sind Sie sicher, dass Sie Ihre Einstellungen fรผr die Persรถnlichkeit <b>Standard</b> vollstรคndig zurรผcksetzen mรถchten? + + + Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? + Sind Sie sicher, dass Sie Ihre Einstellungen fรผr die Persรถnlichkeit <b>Relaxed</b> vollstรคndig zurรผcksetzen mรถchten? + + + foot + FuรŸ + + + meter + Meter + + + meters + Meter + + + km/h + km/h Speed Offset (0โ€“29 km/h) - Geschwindigkeitsoffset (0โ€“29 km/h) + Geschwindigkeitsversatz (0โ€“29 km/h) Speed Offset (30โ€“49 km/h) - Geschwindigkeitsabweichung (30โ€“49 km/h) + Geschwindigkeitsabweichung (30โ€“49 km/h) Speed Offset (50โ€“59 km/h) - Geschwindigkeitsabweichung (50โ€“59 km/h) + Geschwindigkeitsversatz (50โ€“59 km/h) Speed Offset (60โ€“79 km/h) - Geschwindigkeitsabweichung (60โ€“79 km/h) + Geschwindigkeits-Offset (60โ€“79 km/h) Speed Offset (80โ€“99 km/h) - Geschwindigkeitsabweichung (80โ€“99 km/h) + Geschwindigkeits-Offset (80โ€“99 km/h) Speed Offset (100โ€“119 km/h) - Geschwindigkeitsabweichung (100โ€“119 km/h) + Geschwindigkeitsversatz (100โ€“119 km/h) Speed Offset (120โ€“140 km/h) - Geschwindigkeitsversatz (120โ€“140 km/h) + Geschwindigkeitsoffset (120โ€“140 km/h) - Curve Speed Control - Kurvengeschwindigkeitsregelung - - - Automatically slow down for upcoming curves using downloaded maps or the driving model. - Automatisch fรผr bevorstehende Kurven verlangsamen, indem heruntergeladene Karten oder das Fahrmodell verwendet werden. - - - Curve Detection Method - Kurvenerkennungsmethode - - - How curves are detected. <b>Map-Based</b> uses downloaded map data to identify curves and determine the appropriate speed in which to handle them at, while <b>Vision</b> relies solely on the driving model. - Wie Kurven erkannt werden. <b>Kartenbasiert</b> verwendet heruntergeladene Kartendaten, um Kurven zu identifizieren und die geeignete Geschwindigkeit zu bestimmen, mit der sie bewรคltigt werden kรถnnen, wรคhrend <b>Vision</b> sich ausschlieรŸlich auf das Fahrmodell stรผtzt. - - - Curve Detection Failsafe - Kurvenerkennungssicherung - - - Only trigger <b>Curve Speed Control</b> if a curve is detected with the model while using the <b>Map-Based</b> method. Useful to help prevent false positives. - Nur <b>Kurvengeschwindigkeitsregelung</b> auslรถsen, wenn eine Kurve mit dem Modell erkannt wird, wรคhrend die <b>Kartenbasierte</b> Methode verwendet wird. Nรผtzlich, um Fehlalarme zu vermeiden. - - - Curve Detection Sensitivity - Kurvenerkennungsempfindlichkeit - - - How sensitive openpilot is when detecting curves. Higher values trigger earlier responses at the risk of triggering too often, while lower values increase confidence at the risk of triggering too infrequently. - Wie empfindlich openpilot beim Erkennen von Kurven ist. Hรถhere Werte fรผhren zu frรผheren Reaktionen mit dem Risiko, zu hรคufig auszulรถsen, wรคhrend niedrigere Werte das Vertrauen erhรถhen, mit dem Risiko, zu selten auszulรถsen. - - - Curve Speed Aggressiveness - Kurvengeschwindigkeitsaggressivitรคt - - - How aggressive openpilot is when navigating through curves. Higher values result in faster turns but may reduce comfort or stability, while lower values result in slower, smoother turns at the risk of being overly cautious. - Wie aggressiv openpilot beim Navigieren durch Kurven ist. Hรถhere Werte fรผhren zu schnelleren Kurven, kรถnnen jedoch den Komfort oder die Stabilitรคt verringern, wรคhrend niedrigere Werte zu langsameren, sanfteren Kurven fรผhren, mit dem Risiko, zu vorsichtig zu sein. - - - Map Based - Kartenbasiert - - - Vision - Vision - - - The <b>Map Based</b> option is only available when some <b>Map Data</b> has been downloaded! - Die Option <b>Kartenbasiert</b> ist nur verfรผgbar, wenn einige <b>Kartendaten</b> heruntergeladen wurden! + <b>Following behavior that mimics human drivers</b> by closing gaps behind faster vehicles for quicker takeoffs and dynamically adjusting the desired following distance for gentler, more efficient braking. + <b>Dem Fahrverhalten menschlicher Fahrer nachempfunden</b>, indem Lรผcken hinter schnelleren Fahrzeugen geschlossen werden, um schneller anzufahren, und der gewรผnschte Folgeabstand dynamisch angepasst wird, um sanfteres und effizienteres Bremsen zu ermรถglichen. FrogPilotManageControl MANAGE - VERWALTEN + VERWALTEN FrogPilotMapsPanel Manually - Manuell + Manuell Weekly - Wรถchentlich + Wรถchentlich Monthly - Monatlich + Monatlich Automatically Update Maps - Karten automatisch aktualisieren + Karten automatisch aktualisieren - The frequency at which maps sync with the latest OpenStreetMap (OSM) changes. Weekly updates occur every Sunday, and monthly updates occur on the 1st. - Die Hรคufigkeit, mit der Karten mit den neuesten ร„nderungen von OpenStreetMap (OSM) synchronisiert werden. Wรถchentliche Updates erfolgen jeden Sonntag, und monatliche Updates erfolgen am 1. - - - Data Sources - Datenquellen - - - Select map data sources to use with "Curve Speed Control" and "Speed Limit Controller". - Wรคhlen Sie Kartendatenquellen aus, die mit โ€žKurvengeschwindigkeitsregelungโ€œ und โ€žGeschwindigkeitsbegrenzungsregelungโ€œ verwendet werden sollen. - - - COUNTRIES - Lร„NDER - - - STATES - STAATEN + <b>How often maps update</b> from "OpenStreetMap (OSM)" with the latest speed limit information. Weekly updates run every Sunday; monthly updates run on the 1st. + <b>Wie oft Karten aktualisiert werden</b> von โ€žOpenStreetMap (OSM)โ€œ mit den neuesten Geschwindigkeitsbegrenzungsinformationen. Wรถchentliche Aktualisierungen laufen jeden Sonntag; monatliche Aktualisierungen laufen am 1. des Monats. Download Maps - Karten herunterladen + Karten herunterladen DOWNLOAD - HERUNTERLADEN + HERUNTERLADEN - Download the selected maps to use with "Curve Speed Control" and "Speed Limit Controller". - Laden Sie die ausgewรคhlten Karten herunter, um sie mit "Kurvengeschwindigkeitskontrolle" und "Geschwindigkeitsbegrenzungsregler" zu verwenden. + <b>Manually update your selected map sources</b> so "Speed Limit Controller" has the latest speed limit information. + <b>Aktualisieren Sie Ihre ausgewรคhlten Kartenquellen manuell</b>, damit โ€žSpeed Limit Controllerโ€œ รผber die neuesten Geschwindigkeitsinformationen verfรผgt. CANCEL - ABBRECHEN + ABBRECHEN - Are you sure you want to cancel the download? - Mรถchten Sie den Download wirklich abbrechen? + Cancel the download? + Download abbrechen? - Download Completion ETA - Voraussichtliche Fertigstellung des Downloads + Last Updated + Zuletzt aktualisiert - Download Progress - Download-Fortschritt + Map Sources + Kartenquellen - Download Time Elapsed - Download-Zeit verstrichen + <b>Select the countries or U.S. states to use with "Speed Limit Controller".</b> + <b>Wรคhlen Sie die Lรคnder oder US-Bundesstaaten fรผr die Verwendung mit โ€žSpeed Limit Controllerโ€œ aus.</b> - Maps Last Updated - Karten zuletzt aktualisiert + COUNTRIES + Lร„NDER - Maps Size - KartengrรถรŸe + STATES + ZUSTร„NDE + + + Progress + Fortschritt + + + Time Elapsed + Verstrichene Zeit + + + Time Remaining + Verbleibende Zeit Remove Maps - Karten entfernen + Karten entfernen REMOVE - ENTFERNEN + ENTFERNEN - Remove downloaded maps to clear up storage space. - Entfernen Sie heruntergeladene Karten, um Speicherplatz freizugeben. + <b>Delete downloaded map data</b> to free up storage space. + <b>Heruntergeladene Kartendaten lรถschen</b>, um Speicherplatz freizugeben. - Are you sure you want to delete all of your downloaded maps? - Mรถchten Sie wirklich alle heruntergeladenen Karten lรถschen? + Delete all downloaded maps? + Alle heruntergeladenen Karten lรถschen? - Reset Map Downloader - Karten-Downloader zurรผcksetzen + Reset Downloader + Downloader zurรผcksetzen RESET - Zurรผcksetzen + ZURรœCKSETZEN - Reset the map downloader. Use if you're running into issues with downloading maps. - Setzen Sie den Karten-Downloader zurรผck. Verwenden Sie dies, wenn Sie Probleme beim Herunterladen von Karten haben. + <b>Reset the map downloader.</b> Use this if downloads are stuck or failing. + <b>Setze den Karten-Downloader zurรผck.</b> Verwenden Sie dies, wenn Downloads hรคngen bleiben oder fehlschlagen. - Are you sure you want to reset the map downloader? This will force a reboot once completed. - Mรถchten Sie den Karten-Downloader wirklich zurรผcksetzen? Dies wird nach Abschluss einen Neustart erzwingen. + Reset the map downloader? Your device will reboot afterward. + Karten-Downloader zurรผcksetzen? Ihr Gerรคt wird anschlieรŸend neu gestartet. Reset - Zurรผcksetzen + Zurรผcksetzen Resetting... - Zurรผcksetzen... + Wird zurรผckgesetzt... Reset! - Zurรผcksetzen! + Zurรผcksetzen! Rebooting... - Neustart... + Neustart wird durchgefรผhrt... + + + Storage Used + Verwendeter Speicher Africa - Afrika + Afrika Antarctica - Antarktis + Antarktis Asia - Asien + Asien Europe - Europa + Europa North America - Nordamerika + Nordamerika Oceania - Ozeanien + Ozeanien South America - Sรผdamerika + Sรผdamerika United States - Midwest - Vereinigte Staaten - Mittlerer Westen + Vereinigte Staaten โ€“ Mittlerer Westen United States - Northeast - Vereinigte Staaten - Nordosten + Vereinigte Staaten โ€“ Nordosten United States - South - Vereinigte Staaten - Sรผden + Vereinigte Staaten โ€“ Sรผden United States - West - Vereinigte Staaten - Westen + Vereinigte Staaten โ€“ West United States - Territories - Vereinigte Staaten - Territorien - - - CANCELLED - ABGESAGT + Vereinigte Staaten โ€“ Territorien Offline... - Offline... + Offlineโ€ฆ + + + CANCELLED + ABGEBROCHEN FrogPilotModelPanel Automatically Download New Models - Neue Modelle automatisch herunterladen + Neue Modelle automatisch herunterladen - Automatically download new driving models as they become available. - Neue Fahrmodelle automatisch herunterladen, sobald sie verfรผgbar sind. + <b>Automatically download new driving models</b> as they become available. + <b>Neue Fahrmodelle automatisch herunterladen</b>, sobald sie verfรผgbar sind. Delete Driving Models - Fahrmodelle lรถschen + Fahrmodelle lรถschen - Delete driving models from the device. - Fahrmodelle vom Gerรคt lรถschen. + <b>Delete downloaded driving models</b> to free up storage space. + <b>Heruntergeladene Fahrmodelle lรถschen</b>, um Speicherplatz freizugeben. Download Driving Models - Fahrmodelle herunterladen + Fahrmodelle herunterladen - Download driving models to the device. - Laden Sie Fahrmodelle auf das Gerรคt herunter. + <b>Manually download driving models</b> to the device. + <b>Fahrmodelle manuell herunterladen</b> auf das Gerรคt. Model Randomizer - Modell-Zufallsgenerator + Modell-Zufallsgenerator - Driving models are chosen at random each drive and feedback prompts are used to find the model that best suits your needs. - Fahrmodelle werden bei jeder Fahrt zufรคllig ausgewรคhlt, und Feedback-Aufforderungen werden verwendet, um das Modell zu finden, das am besten zu Ihren Bedรผrfnissen passt. + <b>Select a random driving model each drive</b> and use feedback prompts at the end of the drive to help find the model that best suits you! + <b>Wรคhle bei jeder Fahrt ein zufรคlliges Fahrmodell</b> und nutze Feedback-Aufforderungen am Ende der Fahrt, um das Modell zu finden, das am besten zu dir passt! Manage Model Blacklist - Modell-Blacklist verwalten + Modellsperrliste verwalten - Add or remove models from the <b>Model Randomizer</b>'s blacklist list. - Modelle zur Blacklist-Liste des <b>Model Randomizer</b> hinzufรผgen oder daraus entfernen. + <b>Add or remove driving models from the "Model Randomizer" blacklist.</b> + <b>Fahrmodelle zur โ€žModel Randomizerโ€œ-Blacklist hinzufรผgen oder entfernen.</b> Manage Model Ratings - Modellbewertungen verwalten + Modellbewertungen verwalten - Reset or view the saved ratings for the driving models. - Zurรผcksetzen oder Anzeigen der gespeicherten Bewertungen fรผr die Fahrmodelle. + <b>View or reset saved model ratings</b> used by the "Model Randomizer". + <b>Gespeicherte Modellbewertungen anzeigen oder zurรผcksetzen</b>, die vom โ€žModel Randomizerโ€œ verwendet werden. Select Driving Model - Fahrmodell auswรคhlen + Fahrmodell auswรคhlen - Select the active driving model. - Wรคhlen Sie das aktive Fahrmodell aus. + <b>Choose which driving model openpilot uses.</b> + <b>Wรคhlen Sie, welches Fahrmodell openpilot verwendet.</b> + + + Update Model Manager + Modellmanager aktualisieren + + + <b>Update the "Model Manager"</b> to support the latest models. + <b>Aktualisieren Sie den โ€žModel Managerโ€œ</b>, um die neuesten Modelle zu unterstรผtzen. DELETE - Lร–SCHEN + Lร–SCHEN DELETE ALL - ALLES Lร–SCHEN + ALLES Lร–SCHEN Select a driving model to delete - Wรคhlen Sie ein Fahrmodell zum Lรถschen aus + Wรคhle ein Fahrmodell zum Lรถschen aus Are you sure you want to delete the "%1" model? - Mรถchten Sie das Modell "%1" wirklich lรถschen? + Sind Sie sicher, dass Sie das Modell โ€ž%1โ€œ lรถschen mรถchten? Delete - Lรถschen + Lรถschen Are you sure you want to delete all of your downloaded driving models? - Mรถchten Sie wirklich alle heruntergeladenen Fahrmodelle lรถschen? + Mรถchten Sie wirklich alle Ihre heruntergeladenen Fahrmodelle lรถschen? DOWNLOAD - HERUNTERLADEN + HERUNTERLADEN DOWNLOAD ALL - ALLES HERUNTERLADEN + ALLES HERUNTERLADEN - Select a driving model to download - Wรคhlen Sie ein Fahrmodell zum Herunterladen aus + Tinygrad is out of date and must be updated before you can download new models. Update now? + Tinygrad ist veraltet und muss aktualisiert werden, bevor du neue Modelle herunterladen kannst. Jetzt aktualisieren? + + + Updating Tinygrad will delete all existing Tinygrad-based models which will need to be re-downloaded. Proceed? + Das Aktualisieren von Tinygrad lรถscht alle vorhandenen Tinygrad-basierten Modelle, die erneut heruntergeladen werden mรผssen. Fortfahren? CANCEL - ABBRECHEN + ABBRECHEN + + + Updating... + Aktualisierung lรคuftโ€ฆ + + + Select a driving model to download + Wรคhlen Sie ein Fahrmodell zum Herunterladen aus ADD - HINZUFรœGEN + HINZUFรœGEN REMOVE - ENTFERNEN + ENTFERNEN REMOVE ALL - ALLE ENTFERNEN + ALLE ENTFERNEN - There are no more models to blacklist! The only available model is "%1"! - Es gibt keine weiteren Modelle mehr, die auf die schwarze Liste gesetzt werden kรถnnen! Das einzige verfรผgbare Modell ist "%1"! + There are no more driving models to blacklist. The only available model is "%1"! + Es gibt keine weiteren Fahrmodelle zum Blacklisten. Das einzige verfรผgbare Modell ist โ€ž%1โ€œ! - Select a model to add to the blacklist - Wรคhlen Sie ein Modell aus, das zur Blacklist hinzugefรผgt werden soll. + Select a driving model to add to the blacklist + Wรคhlen Sie ein Fahrmodell aus, um es zur Blacklist hinzuzufรผgen Are you sure you want to add the "%1" model to the blacklist? - Mรถchten Sie das Modell "%1" wirklich zur Blacklist hinzufรผgen? + Sind Sie sicher, dass Sie das Modell โ€ž%1โ€œ zur Blacklist hinzufรผgen mรถchten? Add - Hinzufรผgen + Hinzufรผgen - Select a model to remove from the blacklist - Wรคhlen Sie ein Modell aus, das von der Blacklist entfernt werden soll + Select a driving model to remove from the blacklist + Wรคhlen Sie ein Fahrmodell aus, das von der Blacklist entfernt werden soll Are you sure you want to remove the "%1" model from the blacklist? - Mรถchten Sie das Modell "%1" wirklich von der Blacklist entfernen? + Sind Sie sicher, dass Sie das Modell โ€ž%1โ€œ von der Blacklist entfernen mรถchten? Remove - Entfernen + Entfernen - Are you sure you want to remove all of your blacklisted models? - Mรถchten Sie wirklich alle Ihre auf die schwarze Liste gesetzten Modelle entfernen? + Are you sure you want to remove all of your blacklisted driving models? + Sind Sie sicher, dass Sie alle Ihre blockierten Fahrmodelle entfernen mรถchten? RESET - Zurรผcksetzen + ZURรœCKSETZEN VIEW - ANSICHT + ANSEHEN - Are you sure you want to reset all of your model drives and scores? - Mรถchten Sie wirklich alle Ihre Modelldaten und Punktzahlen zurรผcksetzen? + Reset all model drives and ratings? This clears your drive history and collected feedback! + Alle Modell-Fahrten und Bewertungen zurรผcksetzen? Dadurch werden Ihr Fahrtenverlauf und gesammeltes Feedback gelรถscht! SELECT - SELECT + AUSWร„HLEN - Select a model - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC - Wรคhlen Sie ein Modell - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + UPDATE + AKTUALISIEREN - The "Model Randomizer" only works with downloaded models. Do you want to download all the driving models? - Der "Modell-Zufallsgenerator" funktioniert nur mit heruntergeladenen Modellen. Mรถchten Sie alle Fahrmodelle herunterladen? + Cancelling... + Abbrechenโ€ฆ + + + Updating Tinygrad will delete existing Tinygrad-based driving models and need to be re-downloaded. Proceed? + Durch das Aktualisieren von Tinygrad werden vorhandene Tinygrad-basierte Fahrmodelle gelรถscht und mรผssen erneut heruntergeladen werden. Fortfahren? + + + The "Model Randomizer" works only with downloaded models. Download all models now? + Der โ€žModel Randomizerโ€œ funktioniert nur mit heruntergeladenen Modellen. Jetzt alle Modelle herunterladen? Offline... - Offline... + Offlineโ€ฆ + + + Update available! + Update verfรผgbar! + + + Up to date! + Auf dem neuesten Stand! + + + Select a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + Modell auswรคhlen โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + + + + FrogPilotModelReview + + How would you rate that drive? + Wie wรผrdest du diese Fahrt bewerten? + + + Model successfully blacklisted! + Modell erfolgreich auf die Blacklist gesetzt! + + + Drive Rating Selection + Auswahl der Fahrbewertung + + + Blacklist this model to remove it from rotation + Setze dieses Modell auf die Blacklist, um es aus der Rotation zu entfernen + + + Blacklist Model + Modell auf die schwarze Liste setzen + + + Model used during that drive: + Wรคhrend dieser Fahrt verwendetes Modell:" + + + Model Rank + Modellrang + + + Model Rating + Modellbewertung + + + Model Drives + Modellfahrten + + + Total Drives + Gesamtfahrten + + + #%1 + #%1 + + + %1% + %1% + + + %1 %2 + %1 %2 + + + Drive + Fahren + + + Drives + Fahrten + + + %1 Total %2 + %1 Gesamt %2 FrogPilotNavigationPanel - - Manage your %1. - Verwalten Sie Ihr %1. - - - ADD - HINZUFรœGEN - - - Enter your %1 - Geben Sie Ihr %1 ein - - - Inputted key is invalid or too short! - Eingegebener Schlรผssel ist ungรผltig oder zu kurz! - - - Are you sure you want to remove your %1? - Mรถchten Sie Ihr %1 wirklich entfernen? - - - REMOVE - ENTFERNEN - Manage Your Settings At - Verwalten Sie Ihre Einstellungen unter + Verwalten Sie Ihre Einstellungen unter - MapBox - MapBox + Offline... + Offline... + + + Mapbox + Mapbox Amap - Amap - - - Google - Google + Amap Destination Search Provider - Zielsuche-Anbieter + Zielsuche-Anbieter - The search provider used for destination queries in "Navigate on Openpilot". Options include "MapBox" (recommended), "Amap", and "Google Maps". - Der Suchanbieter, der fรผr Zielabfragen in "Navigate on Openpilot" verwendet wird. Optionen umfassen "MapBox" (empfohlen), "Amap" und "Google Maps". + <b>The search provider used for destination queries</b> in "Navigate on Openpilot". Options include Mapbox (recommended) and Amap. + <b>Der fรผr Zielabfragen verwendete Suchanbieter</b> in โ€žNavigate on Openpilotโ€œ. Optionen umfassen Mapbox (empfohlen) und Amap. Amap Key #1 - Amap-Schlรผssel #1 - - - Manage your Amap key. - Verwalten Sie Ihren Amap-Schlรผssel. - - - Enter your Amap key - Geben Sie Ihren Amap-Schlรผssel ein - - - Are you sure you want to remove your Amap key? - Mรถchten Sie Ihren Amap-Schlรผssel wirklich entfernen? + Amap Schlรผssel #1 Amap Key #2 - Amap-Schlรผssel #2 - - - Google Maps Key - Google Maps Schlรผssel - - - Manage your Google Maps key. - Verwalten Sie Ihren Google Maps-Schlรผssel. - - - Enter your Google Maps key - Geben Sie Ihren Google Maps-Schlรผssel ein - - - Are you sure you want to remove your Google Maps key? - Mรถchten Sie Ihren Google Maps-Schlรผssel wirklich entfernen? + Amap-Schlรผssel Nr. 2 Public Mapbox Key - ร–ffentlicher Mapbox-Schlรผssel + ร–ffentlicher Mapbox-Schlรผssel Secret Mapbox Key - Geheimer Mapbox-Schlรผssel + Geheimer Mapbox-Schlรผssel - MapBox Setup Instructions - MapBox-Einrichtungsanleitung + Mapbox Setup Instructions + Anweisungen zur Einrichtung von Mapbox VIEW - ANSICHT + ANSICHT - View the instructions to set up "MapBox" for "Primeless Navigation". - Sehen Sie sich die Anweisungen zur Einrichtung von "MapBox" fรผr "Primeless Navigation" an. + <b>Instructions on how to set up Mapbox</b> for "Primeless Navigation". + <b>Anleitung zur Einrichtung von Mapbox</b> fรผr โ€žPrimeless Navigationโ€œ. CANCEL - ABBRECHEN + ABBRECHEN + + + Manually Update Speed Limits + Geschwindigkeitsbegrenzungen manuell aktualisieren Speed Limit Filler - Geschwindigkeitsbegrenzungsfรผller + Geschwindigkeitsbegrenzungsfรผller - Are you sure you want to cancel the speed limit update process? - Mรถchten Sie den Aktualisierungsprozess fรผr das Tempolimit wirklich abbrechen? + <b>Automatically collect missing or incorrect speed limits while you drive</b> using speeds limits sourced from your dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When you're parked and connected to Wi-Fi, FrogPilot will automatically processes this data into a file to be used with the tool located at "SpeedLimitFiller.frogpilot.download".<br><br>You can download this file from "The Pond" in the "Download Speed Limits" menu.<br><br>Need a step-by-step guide? Visit <b>#speed-limit-filler</b> in the FrogPilot Discord! + <b>Sammle wรคhrend der Fahrt automatisch fehlende oder falsche Geschwindigkeitsbegrenzungen</b>, basierend auf Geschwindigkeitsbegrenzungen von deinem Armaturenbrett (falls unterstรผtzt), Mapbox und โ€žNavigate on openpilotโ€œ.<br><br>Wenn du geparkt bist und mit WLAN verbunden bist, verarbeitet FrogPilot diese Daten automatisch zu einer Datei, die mit dem Tool unter โ€žSpeedLimitFiller.frogpilot.downloadโ€œ verwendet wird.<br><br>Du kannst diese Datei aus โ€žThe Pondโ€œ im Menรผ โ€žDownload Speed Limitsโ€œ herunterladen.<br><br>Brauchst du eine Schritt-fรผr-Schritt-Anleitung? Besuche <b>#speed-limit-filler</b> im FrogPilot-Discord! - You have reached the request limit. + Cancel the speed-limit update? + Geschwindigkeitsbegrenzungs-Update abbrechen? + + + Cancelled... + Abgebrochen... + + + You've hit today's request limit. It will reset in %1 hours and %2 minutes. - Sie haben das Anfragelimit erreicht. + Du hast das heutige Anfrage-Limit erreicht. Es wird in %1 Stunden und %2 Minuten zurรผckgesetzt. - This process will take awhile, so it's advised to start when you're done driving with a stable Wi-Fi connection. Do you wish to proceed? - Dieser Vorgang wird eine Weile dauern, daher wird empfohlen, zu beginnen, wenn Sie mit einer stabilen WLAN-Verbindung fertig sind. Mรถchten Sie fortfahren? + This process takes a while. It's recommended to start when you're done driving and connected to stable Wi-Fi. Continue? + Dieser Vorgang dauert eine Weile. Es wird empfohlen, erst zu starten, wenn Sie mit dem Fahren fertig sind und mit stabilem WLAN verbunden sind. Fortfahren? - Manually Update Speed Limits - Geschwindigkeitsbegrenzungen manuell aktualisieren + <b>Manage your "%1".</b> + <b>Verwalte dein โ€ž%1โ€œ.</b> - Automatically collect missing or incorrect speed limits from your dashboard (if supported), <b>Mapbox</b>, and <b>Navigate-on-openpilot</b> while driving.<br><br>When the car is turned off and connected to Wi-Fi, your speed limit data is automatically processed into a compiled file formatted for the tool located at <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>You can grab the processed file from <b>The Pond</b> via the <b>Download Speed Limits</b> menu.<br><br>Want a more thorough walkthrough? Check out the <b>#speed-limit-filler</b> channel in the <b>FrogPilot Discord</b>! - Sammeln Sie automatisch fehlende oder falsche Geschwindigkeitsbegrenzungen von Ihrem Dashboard (falls unterstรผtzt), <b>Mapbox</b> und <b>Navigate-on-openpilot</b> wรคhrend der Fahrt.<br><br>Wenn das Auto ausgeschaltet und mit Wi-Fi verbunden ist, werden Ihre Geschwindigkeitsbegrenzungsdaten automatisch in eine kompilierte Datei verarbeitet, die fรผr das Tool unter <b>SpeedLimitFiller.frogpilot.download</b> formatiert ist.<br><br>Sie kรถnnen die verarbeitete Datei รผber das Menรผ <b>Download Speed Limits</b> von <b>The Pond</b> herunterladen.<br><br>Mรถchten Sie eine ausfรผhrlichere Anleitung? Schauen Sie sich den <b>#speed-limit-filler</b> Kanal im <b>FrogPilot Discord</b> an! + ADD + HINZUFรœGEN - Cancelled... - Abgesagt... + Enter your %1 + Geben Sie Ihr %1 ein + + + Inputted key is invalid or too short! + Eingegebener Schlรผssel ist ungรผltig oder zu kurz! + + + Remove your %1? + Entfernen Sie Ihr %1? + + + REMOVE + ENTFERNEN Completed! - Abgeschlossen! - - - Offline... - Offline... + Abgeschlossen! FrogPilotSettingsWindow MANAGE - VERWALTEN + VERWALTEN DRIVING MODEL - FAHRMODELL + FAHRMODELL GAS / BRAKE - GAS / BREMSEN + GAS / BRAKE STEERING - LENKUNG + LENKUNG MAP DATA - KARTENDATEN + KARTENDATEN NAVIGATION - NAVIGATION + NAVIGATION DATA - DATA + DATEN DEVICE CONTROLS - GERร„TESTEUERUNGEN + GERร„TESTEUERUNG UTILITIES - Dienstprogramme + DIENSTPROGRAMME APPEARANCE - ERSCHEINUNG + ANSICHT THEME - THEMA + THEMA VEHICLE SETTINGS - FAHRZEUGEINSTELLUNGEN + FAHRZEUGEINSTELLUNGEN WHEEL CONTROLS - LENKRADSTEUERUNGEN + LENKRADSTEUERUNGEN Alerts and Sounds - Benachrichtigungen und Tรถne + Warnungen und Tรถne - FrogPilot settings for alert volumes and custom notifications to stay informed about important driving events. - FrogPilot-Einstellungen fรผr Alarmtรถne und benutzerdefinierte Benachrichtigungen, um รผber wichtige Fahrereignisse informiert zu bleiben. + <b>Adjust alert volumes and enable custom notifications.</b> + <b>Passen Sie Alarmtรถne an und aktivieren Sie benutzerdefinierte Benachrichtigungen.</b> Driving Controls - Fahrsteuerung + Fahrsteuerung - FrogPilot settings for acceleration, braking, and steering. - FrogPilot-Einstellungen fรผr Beschleunigung, Bremsen und Lenken. + <b>Fine-tune custom FrogPilot acceleration, braking, and steering controls.</b> + <b>Passen Sie individuelle FrogPilot-Beschleunigungs-, Brems- und Lenkeinstellungen fein an.</b> Navigation - Navigation + Navigation - Download map data for <b>Curve Speed Control</b>, <b>Speed Limit Controller</b>, and set up <b>Navigate on openpilot (NOO)</b>. - Laden Sie Kartendaten fรผr <b>Kurvengeschwindigkeitskontrolle</b>, <b>Geschwindigkeitsbegrenzungsregler</b> herunter und richten Sie <b>Navigate on openpilot (NOO)</b> ein. + <b>Download map data for the "Speed Limit Controller" and configure "Navigate on openpilot" (NOO).</b> + <b>Laden Sie Kartendaten fรผr den โ€žSpeed Limit Controllerโ€œ herunter und konfigurieren Sie โ€žNavigate on openpilotโ€œ (NOO).</b> - System Management - Systemverwaltung + System Settings + Systemeinstellungen - Data storage management, debugging tools, device settings, screen behavior settings, system backups, and utilities to maintain, optimize, and troubleshoot FrogPilot. - Datenverwaltung, Debugging-Tools, Gerรคteeinstellungen, Bildschirmeinstellungen, System-Backups und Dienstprogramme zur Wartung, Optimierung und Fehlerbehebung von FrogPilot. + <b>Manage backups, device settings, screen options, storage, and tools to keep FrogPilot running smoothly.</b> + <b>Verwalten Sie Backups, Gerรคteeinstellungen, Bildschirmoptionen, Speicher und Tools, um FrogPilot reibungslos am Laufen zu halten.</b> Theme and Appearance - Thema und Erscheinungsbild + Design und Erscheinungsbild - FrogPilot settings for the current theme, driving-screen, and the overall user interface. - FrogPilot-Einstellungen fรผr das aktuelle Thema, den Fahrbildschirm und die gesamte Benutzeroberflรคche. + <b>Customize the look of the driving screen and interface, including themes!</b> + <b>Passen Sie das Aussehen des Fahrbildschirms und der Oberflรคche an, einschlieรŸlich Themes!</b> - Vehicle Controls - Fahrzeugsteuerung + Vehicle Settings + Fahrzeugeinstellungen - Options unique to supported manufacturers and vehicle fingerprint management. - Einzigartige Optionen fรผr unterstรผtzte Hersteller und Verwaltung von Fahrzeug-Fingerabdrรผcken. + <b>Configure car-specific options and steering wheel button mappings.</b> + <b>Fahrzeugspezifische Optionen und Lenkradtastenbelegungen konfigurieren.</b> Minimal - Minimal + Minimal Standard - Standard + Standard Advanced - Fortgeschritten + Erweitert Developer - Entwickler + Entwickler Tuning Level - Abstimmungsstufe + Tuning-Stufe - The visibility and complexity of tuning settings. Lower levels simplify the interface by hiding advanced options, while higher levels unlock detailed customization. + Choose your tuning level. Lower levels keep it simple; higher levels unlock more toggles for finer control. Minimal - Ideal for those who prefer simplicity or ease of use Standard - Recommended for most users for a balanced experience -Advanced - Unlocks fine-tuning controls for more experienced users -Developer - Unlocks highly customizable settings for seasoned enthusiasts - Die Sichtbarkeit und Komplexitรคt der Einstellungsmรถglichkeiten. Niedrigere Stufen vereinfachen die Benutzeroberflรคche, indem sie erweiterte Optionen ausblenden, wรคhrend hรถhere Stufen detaillierte Anpassungen freischalten. +Advanced - Fine-tuning for experienced users +Developer - Highly customizable settings for seasoned enthusiasts + Wรคhle dein Tuningโ€‘Level. Niedrigere Stufen halten es einfach; hรถhere Stufen schalten mehr Optionen fรผr feinere Kontrolle frei. -Minimal - Ideal fรผr diejenigen, die Einfachheit oder Benutzerfreundlichkeit bevorzugen -Standard - Empfohlen fรผr die meisten Benutzer fรผr ein ausgewogenes Erlebnis -Erweitert - Schaltet Feinabstimmungssteuerungen fรผr erfahrenere Benutzer frei -Entwickler - Schaltet hochgradig anpassbare Einstellungen fรผr erfahrene Enthusiasten frei +Minimal โ€“ Ideal fรผr alle, die Einfachheit oder leichte Bedienung bevorzugen +Standard โ€“ Fรผr die meisten Nutzer empfohlen fรผr ein ausgewogenes Erlebnis +Fortgeschritten โ€“ Feintuning fรผr erfahrene Nutzer +Entwickler โ€“ Hochgradig anpassbare Einstellungen fรผr versierte Enthusiasten - WARNING: This unlocks some potentially dangerous settings that can DRASTICALLY alter your driving experience! - WARNUNG: Dies schaltet einige potenziell gefรคhrliche Einstellungen frei, die Ihr Fahrerlebnis DRASTISCH verรคndern kรถnnen! + WARNING: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do! + WARNUNG: Diese Einstellungen sind riskant und kรถnnen das Fahrverhalten von openpilot drastisch verรคndern. Nur รคndern, wenn Sie vollstรคndig verstehen, was sie bewirken! + + + All toggle descriptions are currently expanded. You can tap a toggle's name to open or close its description at any time! + Alle Umschaltbeschreibungen sind derzeit erweitert. Du kannst jederzeit auf den Namen eines Schalters tippen, um seine Beschreibung zu รถffnen oder zu schlieรŸen! FrogPilotSoundsPanel - Alert Volume Control - Alarm-Lautstรคrkeregelung + Alert Volume Controller + Warnlautstรคrke-Steuerung - Adjust the volume for each alert in openpilot. - Passen Sie die Lautstรคrke fรผr jeden Alarm in Openpilot an. + <b>Set how loud each type of openpilot alert is</b> to keep routine prompts from becoming distracting. + <b>Stellen Sie ein, wie laut die einzelnen openpilot-Warnungen sind</b>, damit Routinehinweise nicht ablenken. Disengage Volume - Lautstรคrke deaktivieren + Lautstรคrke beim Deaktivieren - Adjust the volume for alerts like:<br><br><b>Adaptive Cruise Disabled</b><br><b>Brake Pedal Pressed</b><br><b>Parking Brake Engaged</b><br><b>Speed too Low</b> - Passen Sie die Lautstรคrke fรผr Warnungen an wie:<br><br><b>Adaptiver Tempomat deaktiviert</b><br><b>Bremspedal gedrรผckt</b><br><b>Feststellbremse angezogen</b><br><b>Geschwindigkeit zu niedrig</b> + <b>Set the volume for alerts when openpilot disengages.</b><br><br>Examples include: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". + <b>Stellen Sie die Lautstรคrke fรผr Warnungen ein, wenn openpilot deaktiviert.</b><br><br>Beispiele sind: โ€žCruise-Fehler: Fahrzeug neu startenโ€œ, โ€žFeststellbremse aktiviertโ€œ, โ€žPedal betรคtigtโ€œ. Engage Volume - Lautstรคrke aktivieren + Lautstรคrke einschalten - Adjust the volume for alerts like:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> - Passen Sie die Lautstรคrke fรผr Warnungen an wie:<br><br><b>NNFF-Drehmomentregler geladen</b><br><b>openpilot aktiviert</b> + <b>Set the volume for the chime when openpilot engages</b>, such as after pressing the "RESUME" or "SET" steering wheel buttons. + <b>Stellen Sie die Lautstรคrke des Signals ein, wenn openpilot aktiviert wird</b>, z. B. nach dem Drรผcken der Lenkradtasten โ€žRESUMEโ€œ oder โ€žSETโ€œ. Prompt Volume - Eingabevolumen + Eingabeaufforderungslautstรคrke - Adjust the volume for alerts like:<br><br><b>Car Detected in Blindspot</b><br><b>Steer Unavailable Below "X"</b><br><b>Speed too Low</b><br><b>Take Control, Turn Exceeds Steering Limit</b> - Passen Sie die Lautstรคrke fรผr Warnungen an wie:<br><br><b>Fahrzeug im toten Winkel erkannt</b><br><b>Lenken unter "X" nicht verfรผgbar</b><br><b>Geschwindigkeit zu niedrig</b><br><b>รœbernehmen Sie die Kontrolle, Kurve รผberschreitet Lenkgrenze</b> + <b>Set the volume for prompts that need attention.</b><br><br>Examples include: "Car Detected in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". + <b>Legen Sie die Lautstรคrke fรผr Hinweise fest, die Aufmerksamkeit erfordern.</b><br><br>Beispiele sind: โ€žFahrzeug im toten Winkel erkanntโ€œ, โ€žLenkung vorรผbergehend nicht verfรผgbarโ€œ, โ€žKurve รผberschreitet Lenkbegrenzungโ€œ. Prompt Distracted Volume - Ablenkungsvolumen auffordern + Aufforderungslautstรคrke fรผr Ablenkung - Adjust the volume for alerts like:<br><br><b>Pay Attention, Driver Distracted</b><br><b>Touch Steering Wheel, Driver Unresponsive</b> - Passen Sie die Lautstรคrke fรผr Warnungen an wie:<br><br><b>Achtung, Fahrer abgelenkt</b><br><b>Lenkrad berรผhren, Fahrer reagiert nicht</b> + <b>Set the volume for prompts when openpilot detects driver distraction or unresponsiveness.</b><br><br>Examples include: "Pay Attention", "Touch Steering Wheel". + <b>Stellen Sie die Lautstรคrke fรผr Hinweise ein, wenn openpilot Fahrerablenkung oder Nichtreaktion erkennt.</b><br><br>Beispiele: โ€žAufmerksam bleibenโ€œ, โ€žLenkrad berรผhrenโ€œ. Refuse Volume - Abfallvolumen + Lautstรคrke ablehnen - Adjust the volume for alerts like:<br><br><b>openpilot Unavailable</b> - Passen Sie die Lautstรคrke fรผr Warnungen an wie:<br><br><b>openpilot nicht verfรผgbar</b> + <b>Set the volume for alerts when openpilot refuses to engage.</b><br><br>Examples include: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". + <b>Stellen Sie die Lautstรคrke fรผr Warnungen ein, wenn openpilot die Aktivierung verweigert.</b><br><br>Beispiele sind: โ€žBremshaltefunktion aktivโ€œ, โ€žTรผr offenโ€œ, โ€žSicherheitsgurt nicht eingerastetโ€œ. Warning Soft Volume - Warnung Soft Volume + Warnung Soft Volume - Adjust the volume for alerts like:<br><br><b>BRAKE!, Risk of Collision</b><br><b>TAKE CONTROL IMMEDIATELY</b> - Passen Sie die Lautstรคrke fรผr Warnungen an wie:<br><br><b>BRAKE!, Kollisionsgefahr</b><br><b>SOFORT KONTROLLE รœBERNEHMEN</b> + <b>Set the volume for softer warnings about potential risks.</b><br><br>Examples include: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". + <b>Stellen Sie die Lautstรคrke fรผr leisere Warnungen zu potenziellen Risiken ein.</b><br><br>Beispiele sind: โ€žBREMSEN! Kollisionsgefahrโ€œ, โ€žLenkung vorรผbergehend nicht verfรผgbarโ€œ. Warning Immediate Volume - Warnung Sofortiges Volumen + Warnung Sofortige Lautstรคrke - Adjust the volume for alerts like:<br><br><b>DISENGAGE IMMEDIATELY, Driver Distracted</b><br><b>DISENGAGE IMMEDIATELY, Driver Unresponsive</b> - Passen Sie die Lautstรคrke fรผr Warnungen an wie:<br><br><b>SOFORT DEAKTIVIEREN, Fahrer abgelenkt</b><br><b>SOFORT DEAKTIVIEREN, Fahrer reagiert nicht</b> + <b>Set the volume for the loudest warnings that require urgent attention.</b><br><br>Examples include: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". + <b>Legen Sie die Lautstรคrke fรผr die lautesten Warnungen fest, die sofortige Aufmerksamkeit erfordern.</b><br><br>Beispiele: โ€žSOFORT DEAKTIVIEREN โ€” Fahrer abgelenktโ€œ, โ€žSOFORT DEAKTIVIEREN โ€” Fahrer reagiert nichtโ€œ. FrogPilot Alerts - FrogPilot-Warnungen + FrogPilot-Warnungen - FrogPilot alerts for various events in openpilot. - FrogPilot-Warnungen fรผr verschiedene Ereignisse in openpilot. + <b>Optional FrogPilot alerts</b> that highlight driving events in a more noticeable way. + <b>Optionale FrogPilot-Warnungen</b>, die Fahrereignisse auffรคlliger hervorheben. - Goat Scream Steering Saturated Alert - Ziegenschrei-Lenkung gesรคttigte Warnung + Goat Scream + Ziegenschrei - The infamous "Goat Scream" that has brought both joy and anger to FrogPilot users all around the world! - Der berรผchtigte "Ziegenschrei", der FrogPilot-Nutzern auf der ganzen Welt sowohl Freude als auch ร„rger gebracht hat! + <b>Play the infamous "Goat Scream" when the steering controller reaches its limit.</b> Based on the "Turn Exceeds Steering Limit" event. + <b>Das berรผchtigte โ€žZiegenschreiโ€œ-Gerรคusch abspielen, wenn der Lenkcontroller sein Limit erreicht.</b> Basierend auf dem Ereignis โ€žTurn Exceeds Steering Limitโ€œ. Green Light Alert - Grรผnes Licht Alarm + Grรผnlichtwarnung - Get an alert when the traffic light changes from red to green. - Erhalten Sie eine Benachrichtigung, wenn die Ampel von Rot auf Grรผn wechselt. + <b>Play an alert when the model predicts a red light has turned green.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights. This alert is based on end-to-end model predictions from camera input and may trigger even when the light has not changed.</i> + <b>Ein Alarm abspielen, wenn das Modell vorhersagt, dass eine rote Ampel auf Grรผn umgeschaltet hat.</b><br><br><i><b>Haftungsausschluss</b>: openpilot erkennt Ampeln nicht ausdrรผcklich. Dieser Alarm basiert auf End-to-End-Modellvorhersagen aus Kameraeingaben und kann auch auslรถsen, wenn die Ampel nicht umgeschaltet hat.</i> Lead Departing Alert - Abgangswarnung fรผr Fรผhrungskrรคfte + Vorausfahrendes Fahrzeug fรคhrt weg-Alarm - Get an alert when the lead vehicle begins to depart from a standstill. - Erhalten Sie eine Benachrichtigung, wenn das fรผhrende Fahrzeug beginnt, sich aus dem Stillstand zu entfernen. + <b>Play an alert when the lead vehicle departs from a stop.</b> + <b>Spiele eine Warnung ab, wenn das vorausfahrende Fahrzeug aus dem Stillstand losfรคhrt.</b> Loud "Car Detected in Blindspot" Alert - Lauter "Auto im toten Winkel erkannt" Alarm + Laute โ€žFahrzeug im toten Winkelโ€œโ€‘Warnung - A louder alert for when a vehicle is detected in the blindspot when attempting to change lanes. - Ein lauteres Warnsignal, wenn ein Fahrzeug im toten Winkel erkannt wird, wรคhrend versucht wird, die Spur zu wechseln. + <b>Play a louder alert if a vehicle is in the blind spot when attempting to change lanes.</b> Based on the "Car Detected in Blindspot" event. + <b>Spiele einen lauteren Alarm ab, wenn sich beim Spurwechsel ein Fahrzeug im toten Winkel befindet.</b> Basierend auf dem Ereignis โ€žFahrzeug im toten Winkel erkanntโ€œ. Speed Limit Changed Alert - Geschwindigkeitsbegrenzung geรคndert Alarm + Warnung: Tempolimit geรคndert - Get an alert when the speed limit changes. - Erhalten Sie eine Benachrichtigung, wenn sich das Tempolimit รคndert. + <b>Play an alert when the posted speed limit changes.</b> + <b>Spiele einen Alarm ab, wenn sich die angezeigte Geschwindigkeitsbegrenzung รคndert.</b> Muted - Stummgeschaltet + Stumm geschaltet Auto - Auto + Auto Test - Test + Test FrogPilotThemesPanel - Custom Theme - Benutzerdefiniertes Thema + Custom Themes + Benutzerdefinierte Themes - The overall appearance of openpilot. - Das Gesamtbild von openpilot. + <b>The overall look and feel of openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Der allgemeine Look and Feel von openpilot.</b> Verwenden Sie den โ€žTheme Makerโ€œ in โ€žThe Pondโ€œ, um eigene Themes zu erstellen und zu teilen! Color Scheme - Farbschema + Farbschema - openpilot's color scheme. - -Want to submit your own color scheme? Share it in the "custom-themes" channel on the FrogPilot Discord! - Mรถchten Sie Ihr eigenes Farbschema einreichen? Teilen Sie es im "custom-themes"-Kanal auf dem FrogPilot Discord! + <b>The color scheme used throughout openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Das in openpilot verwendete Farbschema.</b> Verwenden Sie den โ€žTheme Makerโ€œ in โ€žThe Pondโ€œ, um eigene Themes zu erstellen und zu teilen! + + + Distance Button + Abstandstaste + + + <b>The distance button icons shown on the driving screen.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Die auf dem Fahrbildschirm angezeigten Abstands-Button-Symbole.</b> Verwende den โ€žTheme Makerโ€œ in โ€žThe Pondโ€œ, um eigene Themes zu erstellen und zu teilen! Icon Pack - Icon-Paket + Symbolpaket - openpilot's icon pack. - -Want to submit your own icons? Share them in the "custom-themes" channel on the FrogPilot Discord! - openpilot's Icon-Paket. - -Mรถchten Sie Ihre eigenen Icons einreichen? Teilen Sie sie im "custom-themes"-Kanal auf dem FrogPilot Discord! + <b>The icon style used across openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Der in openpilot verwendete Symbolstil.</b> Verwende den โ€žTheme Makerโ€œ in โ€žThe Pondโ€œ, um eigene Themes zu erstellen und zu teilen! Sound Pack - Sound Pack + Sound-Paket - openpilot's sound effects. - -Want to submit your own sounds? Share them in the "custom-themes" channel on the FrogPilot Discord! - openpilot's Soundeffekte. - -Mรถchten Sie Ihre eigenen Sounds einreichen? Teilen Sie sie im "custom-themes"-Kanal auf dem FrogPilot Discord! + <b>The sound pack used by openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Das von openpilot verwendete Soundpaket.</b> Verwenden Sie den โ€žTheme Makerโ€œ in โ€žThe Pondโ€œ, um eigene Themes zu erstellen und zu teilen! Steering Wheel - Lenkrad + Lenkrad - The steering wheel icon in the top right of the driving screen. - Das Lenkradsymbol oben rechts auf dem Fahrbildschirm. - - - Themed turn signal animations. - -Want to submit your own animations? Share them in the "custom-themes" channel on the FrogPilot Discord! - Mรถchten Sie Ihre eigenen Animationen einreichen? Teilen Sie sie im "custom-themes"-Kanal auf dem FrogPilot-Discord! - - - Download Status - Download-Status - - - Holiday Themes - Urlaubsthemen - - - Holiday-based visual themes for openpilot. Minor holidays last one day; major holidays (Christmas, Easter, Halloween, etc.) continue all week. - Urlaubsbasierte visuelle Themen fรผr Openpilot. Kleine Feiertage dauern einen Tag; groรŸe Feiertage (Weihnachten, Ostern, Halloween, etc.) dauern die ganze Woche. - - - Rainbow Path - Regenbogenpfad - - - The path on the driving screen turns into a Mario Kart inspired "Rainbow Path". - Der Pfad auf dem Fahrbildschirm verwandelt sich in einen von Mario Kart inspirierten "Regenbogenpfad". - - - Random Events - Zufรคllige Ereignisse - - - Random cosmetic events that trigger after certain driving conditions. These events are purely for fun and don't affect driving controls! - Zufรคllige kosmetische Ereignisse, die nach bestimmten Fahrbedingungen ausgelรถst werden. Diese Ereignisse dienen nur der Unterhaltung und beeinflussen die Fahrsteuerung nicht! - - - Random Themes - Zufรคllige Themen - - - Cycles through your downloaded themes randomly on each boot, giving every theme in your collection a chance to shine! - Wechselt bei jedem Start zufรคllig durch Ihre heruntergeladenen Designs, sodass jedes Design in Ihrer Sammlung die Chance hat, zu glรคnzen! - - - Startup Alert - Startup-Warnung - - - The text of the "Startup Alert" message that appears at the beginning of a drive. - Der Text der "Startup Alert"-Meldung, die zu Beginn eines Laufwerks erscheint. - - - DELETE - Lร–SCHEN - - - DOWNLOAD - HERUNTERLADEN - - - SELECT - SELECT - - - Select a color scheme to delete - Wรคhlen Sie ein Farbschema zum Lรถschen aus - - - Are you sure you want to delete the "%1" color scheme? - Mรถchten Sie das Farbschema "%1" wirklich lรถschen? - - - Delete - Lรถschen - - - Select a color scheme to download - Wรคhlen Sie ein Farbschema zum Herunterladen aus - - - Select a color scheme - Wรคhlen Sie ein Farbschema aus - - - Select a distance icon pack to delete - Wรคhlen Sie ein Distanz-Icon-Paket zum Lรถschen aus - - - Are you sure you want to delete the "%1" distance icon pack? - Mรถchten Sie das Symbolpaket "%1" wirklich lรถschen? - - - Select a distance icon pack to download - Wรคhlen Sie ein Distanz-Icon-Paket zum Herunterladen aus. - - - Select a distance icon pack - Wรคhlen Sie ein Distanz-Icon-Paket aus - - - Select an icon pack to delete - Wรคhlen Sie ein Icon-Paket zum Lรถschen aus - - - Are you sure you want to delete the "%1" icon pack? - Mรถchten Sie das Symbolpaket "%1" wirklich lรถschen? - - - Select an icon pack to download - Wรคhlen Sie ein Icon-Paket zum Herunterladen aus - - - Select an icon pack - Wรคhlen Sie ein Icon-Paket aus - - - Select a signal animation to delete - Wรคhlen Sie eine Signalanimation zum Lรถschen aus - - - Are you sure you want to delete the "%1" signal animation? - Mรถchten Sie die Signalanimation "%1" wirklich lรถschen? - - - Select a signal animation to download - Wรคhlen Sie eine Signalanimation zum Herunterladen aus - - - Select a signal animation - Wรคhlen Sie eine Signalanimation aus - - - Select a sound pack to delete - Wรคhlen Sie ein Soundpaket zum Lรถschen aus - - - Are you sure you want to delete the "%1" sound pack? - Mรถchten Sie das Soundpaket "%1" wirklich lรถschen? - - - Select a sound pack to download - Wรคhlen Sie ein Soundpaket zum Herunterladen aus - - - Select a sound pack - Wรคhlen Sie ein Soundpaket aus - - - Select a steering wheel to delete - Wรคhlen Sie ein Lenkrad zum Lรถschen aus - - - Are you sure you want to delete the "%1" steering wheel? - Mรถchten Sie das Lenkrad "%1" wirklich lรถschen? - - - Select a steering wheel to download - Wรคhlen Sie ein Lenkrad zum Herunterladen aus - - - Select a steering wheel - Wรคhlen Sie ein Lenkrad aus - - - STOCK - LAGERbestand - - - FROGPILOT - FROGPILOT - - - CUSTOM - BENUTZERDEFINIERT - - - CLEAR - KLAR - - - Enter the text for the top half - Geben Sie den Text fรผr die obere Hรคlfte ein - - - Characters: 0/%1 - Zeichen: 0/%1 - - - Enter the text for the bottom half - Geben Sie den Text fรผr die untere Hรคlfte ein - - - "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! - โ€žZufรคllige Themenโ€œ funktioniert nur mit heruntergeladenen Themen, also stelle sicher, dass du die Themen herunterlรคdst, die du verwenden mรถchtest! - - - CANCEL - ABBRECHEN - - - Are you sure you want to completely reset your startup message? - Mรถchten Sie Ihre Startnachricht wirklich vollstรคndig zurรผcksetzen? + <b>The steering-wheel icon</b> shown at the top-right of the driving screen. Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Das Lenkradsymbol</b> wird oben rechts auf dem Fahrbildschirm angezeigt. Verwende den โ€žTheme Makerโ€œ in โ€žThe Pondโ€œ, um eigene Themes zu erstellen und zu teilen! Turn Signal - Blinker + Blinker + + + <b>Themed turn-signal animations.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Thematische Blinker-Animationen.</b> Verwende den โ€žTheme Makerโ€œ in โ€žThe Pondโ€œ, um eigene Themes zu erstellen und zu teilen! + + + Download Status + Download-Status + + + Holiday Themes + Feiertagsthemen + + + <b>Themes based on U.S. holidays.</b> Minor holidays last one day; major holidays (Christmas, Easter, Halloween) run for a full week. + <b>Designs basierend auf US-Feiertagen.</b> Kleine Feiertage dauern einen Tag; groรŸe Feiertage (Weihnachten, Ostern, Halloween) laufen eine ganze Woche. + + + Rainbow Path + Regenbogenpfad + + + <b>Color the driving path like a Mario Kartโ€“style "Rainbow Road".</b> + <b>Fรคrbe den Fahrweg wie eine Mario-Kart-artige โ€žRegenbogenstraรŸeโ€œ.</b> + + + Random Events + Zufรคllige Ereignisse + + + <b>Occasional on-screen effects triggered by driving conditions.</b> These are purely a visual and don't impact how openpilot drives! + <b>Gelegentliche Bildschirmยญeffekte, ausgelรถst durch Fahrbedingungen.</b> Diese sind rein visuell und beeinflussen nicht, wie openpilot fรคhrt! + + + Random Themes + Zufรคllige Themes + + + <b>Pick a random theme between each drive</b> from the themes you have downloaded. Great for variety without changing settings while driving. + <b>Wรคhle zwischen jeder Fahrt ein zufรคlliges Thema</b> aus den heruntergeladenen Themes. Ideal fรผr Abwechslung, ohne wรคhrend der Fahrt Einstellungen zu รคndern. + + + Startup Alert + Startwarnung + + + <b>Customize the "Startup Alert" message</b> shown at the start of each drive. + <b>Passen Sie die Meldung โ€žStartwarnungโ€œ an</b>, die zu Beginn jeder Fahrt angezeigt wird. + + + DELETE + Lร–SCHEN + + + DOWNLOAD + HERUNTERLADEN + + + SELECT + AUSWร„HLEN + + + Select a color scheme to delete + Wรคhlen Sie ein Farbschema zum Lรถschen aus + + + Delete the "%1" color scheme? + Farbschema โ€ž%1โ€œ lรถschen? + + + Delete + Lรถschen + + + Select a color scheme to download + Wรคhlen Sie ein Farbschema zum Herunterladen aus + + + Select a color scheme + Farbschema auswรคhlen + + + Select a distance icon pack to delete + Wรคhlen Sie ein Abstands-Icon-Pack zum Lรถschen aus + + + Delete the "%1" distance icon pack? + โ€ž%1โ€œ-Abstand-Icon-Paket lรถschen? + + + Select a distance icon pack to download + Wรคhle ein Abstandssymbolpaket zum Herunterladen aus + + + Select a distance icon pack + Wรคhle ein Abstands-Icon-Paket + + + Select an icon pack to delete + Wรคhle ein Symbolpaket zum Lรถschen aus + + + Delete the "%1" icon pack? + Das โ€ž%1โ€œ-Icon-Pack lรถschen? + + + Select an icon pack to download + Wรคhlen Sie ein Icon-Pack zum Herunterladen aus + + + Select an icon pack + Wรคhle ein Symbolpaket aus + + + Select a signal animation to delete + Wรคhlen Sie eine Signalanimation zum Lรถschen aus + + + Delete the "%1" signal animation? + โ€ž%1โ€œ-Signalanimation lรถschen? + + + Select a signal animation to download + Wรคhlen Sie eine Signalanimation zum Herunterladen aus + + + Select a signal animation + Wรคhle eine Signalanimation + + + Select a sound pack to delete + Wรคhlen Sie ein Soundpaket zum Lรถschen aus + + + Delete the "%1" sound pack? + Das Soundpaket โ€ž%1โ€œ lรถschen? + + + Select a sound pack to download + Wรคhlen Sie ein Soundpaket zum Herunterladen aus + + + Select a sound pack + Wรคhle ein Soundpaket + + + Select a steering wheel to delete + Wรคhlen Sie ein Lenkrad zum Lรถschen aus + + + Delete the "%1" steering wheel? + โ€ž%1โ€œ-Lenkrad lรถschen? + + + Select a steering wheel to download + Wรคhlen Sie ein Lenkrad zum Herunterladen aus + + + Select a steering wheel + Lenkrad auswรคhlen + + + STOCK + STANDARD + + + FROGPILOT + FROGPILOT + + + CUSTOM + BENUTZERDEFINIERT + + + CLEAR + Lร–SCHEN + + + Enter the text for the top half + Geben Sie den Text fรผr die obere Hรคlfte ein + + + Characters: 0/%1 + Zeichen: 0/%1 + + + Enter the text for the bottom half + Geben Sie den Text fรผr die untere Hรคlfte ein + + + Are you sure you want to completely reset your startup message? + Mรถchten Sie Ihre Startnachricht wirklich vollstรคndig zurรผcksetzen? + + + "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! + โ€žZufรคllige Themenโ€œ funktioniert nur mit heruntergeladenen Themes. Stelle daher sicher, dass du die Themes herunterlรคdst, die es verwenden soll! + + + CANCEL + ABBRECHEN FrogPilotUtilitiesPanel Debug Mode - Debug-Modus + Debugmodus - Debug FrogPilot during the next drive by utilizing all of FrogPilot's developer metrics for either bug reporting, or self-debugging. - Debuggen Sie FrogPilot wรคhrend der nรคchsten Fahrt, indem Sie alle Entwicklermetriken von FrogPilot entweder fรผr die Fehlerberichterstattung oder zur Selbst-Debugging nutzen. + <b>Use FrogPilot's developer metrics on your next drive</b> to diagnose issues and improve bug reports. + <b>Verwenden Sie bei Ihrer nรคchsten Fahrt die Entwicklermetriken von FrogPilot</b>, um Probleme zu diagnostizieren und Bugreports zu verbessern. Flash Panda - Blitz-Panda + Panda flashen FLASH - BLITZ + BLITZ - Flash the Panda's firmware. Use if you're running into issues with the Panda. - Aktualisieren Sie die Firmware des Panda. Verwenden Sie dies, wenn Sie Probleme mit dem Panda haben. + <b>Reinstall the Panda firmware</b> to fix connection or reliability issues. + <b>Panda-Firmware neu installieren</b>, um Verbindungs- oder Zuverlรคssigkeitsprobleme zu beheben. - Are you sure you want to flash the Panda? - Mรถchten Sie den Panda wirklich flashen? + Are you sure you want to flash the Panda firmware? + Sind Sie sicher, dass Sie die Panda-Firmware flashen mรถchten? Flash - Blitz + Blitz Flashing... - Blinkend... + Wird geflasht... Flashed! - Aufgeblitzt! + Geflasht! Rebooting... - Neustart... + Neustart... - Force Started State - Erzwungener Startzustand + Force Drive State + Fahrzustand erzwingen - Force openpilot either offroad or onroad. - Erzwinge openpilot entweder im Offroad- oder Onroad-Modus. + <b>Manually set openpilot to be offroad or onroad.</b> + <b>openpilot manuell auf Offroad oder Onroad setzen.</b> OFFROAD - OFFROAD + OFFROAD ONROAD - ONROAD + AUF DER STRASSE OFF - AUS + AUS Report a Bug or an Issue - Einen Fehler oder ein Problem melden + Einen Fehler oder ein Problem melden REPORT - BERICHT + BERICHT - Let FrogsGoMoo know about an issue you're facing! - Lassen Sie FrogsGoMoo wissen, welches Problem Sie haben! + <b>Send a bug report</b> so we can help fix the problem! + <b>Sende einen Fehlerbericht</b>, damit wir das Problem beheben kรถnnen! + + + Please connect to the internet before sending a report! + Bitte verbinden Sie sich mit dem Internet, bevor Sie einen Bericht senden! I saw an alert that said "openpilot crashed" - Ich sah eine Warnung, die besagte "openpilot abgestรผrzt". + Ich habe eine Warnung gesehen, auf der stand โ€žopenpilot ist abgestรผrztโ€œ. - What's going on? - Was ist los? + Acceleration feels harsh or jerky + Beschleunigung fรผhlt sich hart oder ruckartig an - Please describe what's happening - Bitte beschreiben Sie, was passiert. - - - Send Report - Bericht senden - - - What's your Discord username? - Wie lautet dein Discord-Benutzername? - - - Your report has been submitted. Thanks for letting us know! - Ihr Bericht wurde eingereicht. Danke, dass Sie uns informiert haben! - - - Reset Toggles to Default - Schalter auf Standard zurรผcksetzen - - - RESET - Zurรผcksetzen - - - Reset all toggles to their default values. - Setzen Sie alle Umschalter auf ihre Standardwerte zurรผck. - - - Are you sure you want to reset all toggles to their default values? - Mรถchten Sie wirklich alle Umschalter auf ihre Standardwerte zurรผcksetzen? - - - Reset - Zurรผcksetzen - - - Resetting... - Zurรผcksetzen... - - - Reset! - Zurรผcksetzen! - - - Reset Toggles to Match Stock openpilot - Schalter zurรผcksetzen, um mit dem Standard-openpilot รผbereinzustimmen - - - Reset all toggles to match stock openpilot. - Setzen Sie alle Schalter zurรผck, um dem Standard-Openpilot zu entsprechen. - - - Are you sure you want to reset all toggles to match stock openpilot? - Mรถchten Sie wirklich alle Umschalter zurรผcksetzen, um dem Standard-Openpilot zu entsprechen? - - - Ensure your device has an internet connection before sending a report! - Stellen Sie sicher, dass Ihr Gerรคt รผber eine Internetverbindung verfรผgt, bevor Sie einen Bericht senden! - - - Acceleration feels too harsh or jerky - Die Beschleunigung fรผhlt sich zu hart oder ruckartig an. - - - An alert confused me and I didnโ€™t know what it meant - Eine Warnung hat mich verwirrt und ich wusste nicht, was sie bedeutete. + An alert was unclear and I didn't know what it meant + Eine Warnung war unklar und ich wusste nicht, was sie bedeutete Braking is too sudden or uncomfortable - Das Bremsen ist zu abrupt oder unangenehm. + Das Bremsen ist zu abrupt oder unangenehm - Iโ€™m not sure if this is normal or a bug: - Ich bin mir nicht sicher, ob das normal ist oder ein Fehler: + I'm not sure if this is normal or a bug: + Ich bin mir nicht sicher, ob das normal ist oder ein Bug: - Lane changes donโ€™t work properly or feel unsafe - Spurwechsel funktionieren nicht richtig oder fรผhlen sich unsicher an. + My screen froze or is stuck loading something + Mein Bildschirm ist eingefroren oder lรคdt etwas festhรคngend - My screen froze or got stuck on loading - Mein Bildschirm ist eingefroren oder bleibt beim Laden hรคngen. - - - My steering wheel buttons arenโ€™t working - Meine Lenkradtasten funktionieren nicht. + My steering wheel buttons aren't working + Meine Lenkradtasten funktionieren nicht openpilot disengages when I don't expect it - openpilot deaktiviert sich, wenn ich es nicht erwarte - - - openpilot doesnโ€™t resume after I stop - openpilot setzt sich nach dem Anhalten nicht fort + openpilot deaktiviert sich, wenn ich es nicht erwarte openpilot doesn't react to stopped vehicles ahead - openpilot reagiert nicht auf stehende Fahrzeuge voraus + openpilot reagiert nicht auf stehende Fahrzeuge voraus + + + openpilot doesn't resume from a stop + openpilot setzt nach einem Halt nicht fort openpilot feels sluggish or slow to respond - openpilot fรผhlt sich trรคge oder langsam in der Reaktion an + openpilot fรผhlt sich trรคge an oder reagiert langsam Steering feels twitchy or unnatural - Die Lenkung fรผhlt sich nervรถs oder unnatรผrlich an. + Die Lenkung wirkt nervรถs oder unnatรผrlich - The car doesnโ€™t follow curves well - Das Auto folgt Kurven nicht gut. + The car doesn't follow curves well + Das Auto folgt Kurven nicht gut - The car isnโ€™t staying centered in its lane - Das Auto bleibt nicht in der Mitte seiner Spur. - - - The speed or display info looks wrong - Die Geschwindigkeits- oder Anzeigeinformationen scheinen falsch zu sein. + The car isn't staying centered in its lane + Das Auto bleibt nicht zentriert in seiner Spur Something else (please describe) - Etwas anderes (bitte beschreiben) + Etwas anderes (bitte beschreiben) + + + What's going on? + Was ist los? + + + Please describe what's happening + Bitte beschreiben Sie, was passiert + + + Send Report + Bericht senden + + + What's your Discord username? + Wie lautet dein Discord-Benutzername? + + + Report Sent! Thanks for letting us know! + Bericht gesendet! Danke, dass Sie es uns mitgeteilt haben! + + + Reset Toggles to Default + Schalter auf Standard zurรผcksetzen + + + RESET + ZURรœCKSETZEN + + + <b>Reset all toggles to their default values.</b> + <b>Alle Schalter auf ihre Standardwerte zurรผcksetzen.</b> + + + Are you sure you want to reset all toggles to their default values? + Mรถchten Sie wirklich alle Schalter auf ihre Standardwerte zurรผcksetzen? + + + Reset + Zurรผcksetzen + + + Resetting... + Wird zurรผckgesetzt... + + + Reset! + Zurรผcksetzen! + + + Reset Toggles to Stock openpilot + Schalter auf Standard-openpilot zurรผcksetzen + + + <b>Reset all toggles to match stock openpilot.</b> + <b>Alle Schalter auf den Standardzustand von openpilot zurรผcksetzen.</b> + + + Are you sure you want to reset all toggles to match stock openpilot? + Sind Sie sicher, dass Sie alle Schalter zurรผcksetzen mรถchten, um dem Standard-openpilot zu entsprechen? FrogPilotVehiclesPanel - Select Make - Marke auswรคhlen + Car Make + Automarke SELECT - SELECT + AUSWร„HLEN - Select a Make - Wรคhlen Sie eine Marke aus + Choose your car make + Wรคhle deinen Automobilhersteller - Select Model - Modell auswรคhlen + Car Model + Automodell - Select a Model - Modell auswรคhlen + Choose your car model + Wรคhlen Sie Ihr Automodell Disable Automatic Fingerprint Detection - Automatische Fingerabdruckerkennung deaktivieren + Automatische Fingerabdruckerkennung deaktivieren - Forces the selected fingerprint and prevents it from ever changing. - Erzwingt den ausgewรคhlten Fingerabdruck und verhindert, dass er sich jemals รคndert. + <b>Force the selected fingerprint</b> and prevent it from ever changing. + <b>Erzwinge den ausgewรคhlten Fingerprint</b> und verhindere, dass er sich jemals รคndert. Disable openpilot Longitudinal Control - Deaktiviere die longitudinale Steuerung von openpilot + openpilot-Lรคngsregelung deaktivieren - Disables openpilot longitudinal control and uses the car's stock ACC instead. - Deaktiviert die longitudinale Steuerung von openpilot und verwendet stattdessen den serienmรครŸigen ACC des Fahrzeugs. + <b>Disable openpilot longitudinal</b> and use the car's stock ACC instead. + <b>Deaktiviere die Lรคngsregelung von openpilot</b> und verwende stattdessen den serienmรครŸigen ACC des Fahrzeugs. Are you sure you want to completely disable openpilot longitudinal control? - Mรถchten Sie die longitudinale Steuerung von Openpilot wirklich vollstรคndig deaktivieren? + Sind Sie sicher, dass Sie die lรคngsseitige Steuerung von openpilot vollstรคndig deaktivieren mรถchten? General Motors Settings - General-Motors-Einstellungen + General Motors-Einstellungen - Settings specific to <b>General Motors</b> vehicles. - Einstellungen, die spezifisch fรผr <b>General Motors</b>-Fahrzeuge sind. + <b>FrogPilot features for General Motors vehicles.</b> + <b>FrogPilot-Funktionen fรผr Fahrzeuge von General Motors.</b> FrogsGoMoo's Experimental Tune - FrogsGoMoo's Experimentelle Melodie + FrogsGoMooโ€™s Experimentelles Tuning - <b>FrogsGoMoo's</b> experimental <b>General Motors</b> tune that aims to smoothen out stopping and takeoff control based on nothing but guesswork. Use at your own risk! - <b>FrogsGoMoo's</b> experimentelle <b>General Motors</b>-Abstimmung, die darauf abzielt, die Steuerung beim Anhalten und Anfahren zu glรคtten, basierend auf nichts anderem als Vermutungen. Verwendung auf eigene Gefahr! + <b>Experimental GM tune by FrogsGoMoo</b> that attempts to smoothen stopping and takeoff control. Use at your own risk! + <b>Experimentelles GM-Tuning von FrogsGoMoo</b>, das versucht, das Anhalten und Anfahren zu glรคtten. Nutzung auf eigenes Risiko! Smooth Pedal Response on Hills - Sanfte Pedalreaktion an Steigungen + Sanfte Pedalreaktion an Steigungen - Smoothen the acceleration and braking when driving uphill or downhill. - Glรคtten Sie die Beschleunigung und das Bremsen beim Fahren bergauf oder bergab. + <b>Smoothen acceleration and braking</b> when driving downhill/uphill. + <b>Beschleunigung und Bremsen glรคtten</b> beim Fahren bergab/bergauf. - Stop and Go Hack - Stop and Go Hack + Stop-and-Go Hack + Stop-and-Go-Hack - Force stop and go on the <b>2017 Chevy Volt</b>. - Erzwungener Stopp und Weiterfahrt im <b>Chevy Volt 2017</b>. + <b>Force stop-and-go</b> on the 2017 Chevy Volt. + <b>Erzwinge Stop-and-Go</b> beim Chevy Volt 2017. Hyundai/Kia/Genesis Settings - Hyundai/Kia/Genesis-Einstellungen + Hyundai/Kia/Genesis-Einstellungen - Settings specific to <b>Hyundai</b>, <b>Kia</b>, and <b>Genesis</b> vehicles. - Fahrzeugspezifische Einstellungen fรผr <b>Hyundai</b>, <b>Kia</b> und <b>Genesis</b>. + <b>FrogPilot features for Genesis, Hyundai, and Kia vehicles.</b> + <b>FrogPilot-Funktionen fรผr Fahrzeuge von Genesis, Hyundai und Kia.</b> comma's New Longitudinal API - comma's neue Longitudinal-API + commas neue Longitudinal-API - comma's new longitudinal control system that has shown great improvement with acceleration and braking, but has issues on some <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> vehicles. - Das neue Lรคngskontrollsystem von comma, das groรŸe Verbesserungen bei Beschleunigung und Bremsen gezeigt hat, aber Probleme bei einigen <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b>-Fahrzeugen aufweist. + <b>comma's new gas and brake control system</b> that improves acceleration and braking but may cause issues on some Genesis/Hyundai/Kia vehicles. + <b>commas neues Gas- und Bremssystem</b>, das Beschleunigung und Bremsen verbessert, aber bei einigen Genesis-/Hyundai-/Kia-Fahrzeugen Probleme verursachen kann. "Taco Bell Run" Torque Hack - โ€žTaco Bell Runโ€œ Drehmoment-Hack + โ€žTaco Bell Runโ€œ Drehmoment-Hack - The torque hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to improve turning at low speeds by increasing the allowed steering torque. - Der Drehmoment-Hack aus dem "Taco Bell Run" Drive von comma 2022. Entwickelt, um das Lenken bei niedrigen Geschwindigkeiten zu verbessern, indem das erlaubte Lenkmoment erhรถht wird. + <b>The steering torque hack from comma's 2022 "Taco Bell Run".</b> Designed to increase steering torque at low speeds for left and right turns. + <b>Der Lenkmoment-Hack aus commas โ€žTaco Bell Runโ€œ von 2022.</b> Entwickelt, um das Lenkmoment bei niedrigen Geschwindigkeiten fรผr Links- und Rechtskurven zu erhรถhen. Toyota/Lexus Settings - Toyota/Lexus-Einstellungen + Toyota/Lexus-Einstellungen - Settings specific to <b>Toyota</b> and <b>Lexus</b> vehicles. - Einstellungen, die speziell fรผr <b>Toyota</b>- und <b>Lexus</b>-Fahrzeuge gelten. + <b>FrogPilot features for Lexus and Toyota vehicles.</b> + <b>FrogPilot-Funktionen fรผr Lexus- und Toyota-Fahrzeuge.</b> Automatically Lock/Unlock Doors - Automatisch Tรผren verriegeln/entriegeln + Tรผren automatisch verriegeln/entriegeln - Automatically lock the doors when shifting into drive and unlock them when shifting into park. - Automatisch die Tรผren verriegeln, wenn in den Fahrmodus geschaltet wird, und entriegeln, wenn in den Parkmodus geschaltet wird. + <b>Automatically lock/unlock doors</b> when shifting in and out of drive. + <b>Tรผren automatisch ver- und entriegeln</b> beim Ein- und Auslegen des Fahrgangs. - Cluster Speed Offset - Cluster-Geschwindigkeitsoffset + Dashboard Speed Offset + Tachometer-Geschwindigkeitsoffset - The cluster speed offset used by openpilot to match the speed displayed on the dash. - Der Geschwindigkeitsversatz des Clusters, der von openpilot verwendet wird, um die auf dem Armaturenbrett angezeigte Geschwindigkeit abzugleichen. + <b>The speed offset openpilot uses to match the speed on the dashboard display.</b> + <b>Der Geschwindigkeitsversatz, den openpilot verwendet, um die Geschwindigkeit auf der Armaturentafelanzeige anzugleichen.</b> FrogsGoMoo's Personal Tweaks - FrogsGoMoo's persรถnliche Anpassungen + FrogsGoMooโ€™s persรถnliche Anpassungen - <b>FrogsGoMoo's</b> personal tweaks for quicker acceleration and smoother braking. - <b>FrogsGoMoo's</b> persรถnliche Anpassungen fรผr schnellere Beschleunigung und sanfteres Bremsen. + <b>Personal tweaks by FrogsGoMoo for quicker acceleration and smoother braking.</b> + <b>Persรถnliche Anpassungen von FrogsGoMoo fรผr schnelleres Beschleunigen und sanfteres Bremsen.</b> Lock Doors On Ignition Off After - Tรผren verriegeln bei Zรผndung aus nach + Tรผren verriegeln nach Zรผndung aus nach - Automatically lock the doors after the car's ignition has been turned off and no one is detected in either of the front seats. - Verriegeln Sie automatisch die Tรผren, nachdem die Zรผndung des Autos ausgeschaltet wurde und niemand auf einem der Vordersitze erkannt wird. + <b>Automatically lock the doors on ignition off</b> when no one is detected in the front seats. + <b>Tรผren bei Zรผndung aus automatisch verriegeln</b>, wenn niemand auf den Vordersitzen erkannt wird. - Force stop and go on <b>Toyota</b>/<b>Lexus</b> vehicles without stock stop and go functionality. - Erzwungenes Stop-and-Go bei <b>Toyota</b>/<b>Lexus</b>-Fahrzeugen ohne serienmรครŸige Stop-and-Go-Funktion. + <b>Force stop-and-go</b> on Lexus/Toyota vehicles without stock stop-and-go functionality. + <b>Stop-and-Go erzwingen</b> bei Lexus/Toyota Fahrzeugen ohne serienmรครŸige Stop-and-Go-Funktion. MANAGE - VERWALTEN + VERWALTEN Lock - Sperren + Sperren Unlock - Entsperren + Entsperren Never - Niemals + Nie seconds - Sekunden + Sekunden + + + None + Keine + + + Vehicle Info + Fahrzeuginformationen + + + <b>Information about your vehicle in regards to openpilot support and functionality.</b> + <b>Informationen zu Ihrem Fahrzeug in Bezug auf openpilot-Unterstรผtzung und -Funktionalitรคt.</b> + + + <b>Detected 3rd party hardware.</b> + <b>Dritthersteller-Hardware erkannt.</b> + + + openpilot Longitudinal Support + openpilot Lรคngsunterstรผtzung + + + <b>Can openpilot control the vehicle's acceleration and braking?</b> + <b>Kann openpilot die Beschleunigung und das Bremsen des Fahrzeugs steuern?</b> + + + <b>Does your vehicle support the "comma pedal"?</b> + <b>Unterstรผtzt Ihr Fahrzeug das โ€žcomma pedalโ€œ?</b> + + + Radar Support + Radar-Unterstรผtzung + + + <b>Does openpilot use the vehicle's radar data</b> alongside the device's camera for tracking lead vehicles? + <b>Verwendet openpilot die Radardaten des Fahrzeugs</b> zusammen mit der Kamera des Gerรคts, um vorausfahrende Fahrzeuge zu verfolgen? + + + SDSU Support + SDSU-Support + + + <b>Does your vehicle support "SDSUs"?</b> + <b>Unterstรผtzt Ihr Fahrzeug โ€žSDSUsโ€œ?</b> + + + Stop-and-Go Support + Stop-and-Go-Unterstรผtzung + + + <b>Does your vehicle support stop-and-go driving?</b> + <b>Unterstรผtzt Ihr Fahrzeug Stop-and-Go-Fahren?</b> + + + VIEW + ANSICHT + + + Yes + Ja + + + No + Nein + + + 3rd Party Hardware Detected + Hardware von Drittanbietern erkannt + + + Blind Spot Support + Toter-Winkel-Unterstรผtzung + + + <b>Does openpilot use the vehicle's blind spot data?</b> + <b>Verwendet openpilot die Totwinkel-Daten des Fahrzeugs?</b> + + + comma Pedal Support + Unterstรผtzung fรผr comma Pedal FrogPilotVisualsPanel Advanced UI Controls - Erweiterte UI-Steuerelemente + Erweiterte UI-Steuerungen - Advanced settings for fine-tuning openpilot's driving screen. - Erweiterte Einstellungen zur Feinabstimmung des Fahrbildschirms von openpilot. + <b>Advanced visual changes</b> to fine-tune how the driving screen looks. + <b>Erweiterte visuelle ร„nderungen</b>, um das Aussehen des Fahrbildschirms fein abzustimmen. Hide Current Speed - Aktuelle Geschwindigkeit ausblenden + Aktuelle Geschwindigkeit ausblenden - Hide the current speed from the driving screen. - Blenden Sie die aktuelle Geschwindigkeit vom Fahrbildschirm aus. + <b>Hide the current speed</b> from the driving screen. + <b>Die aktuelle Geschwindigkeit ausblenden</b> vom Fahrbildschirm. Hide Lead Marker - Lead-Marker ausblenden + Leitmarkierung ausblenden - Hide the marker for lead vehicles from the driving screen. - Blenden Sie den Marker fรผr fรผhrende Fahrzeuge vom Fahrbildschirm aus. + <b>Hide the lead-vehicle marker</b> from the driving screen. + <b>Blenden Sie die Vorausfahrzeug-Markierung aus</b> auf dem Fahrbildschirm. Hide Map Settings Button - Schaltflรคche "Karteneinstellungen ausblenden" + Schaltflรคche โ€žKarteneinstellungenโ€œ ausblenden - Hide the map settings button from the driving screen. - Blenden Sie die Karteneinstellungen-Schaltflรคche vom Fahrbildschirm aus. + <b>Hide the map settings button or map</b> from the driving screen. + <b>Blenden Sie die Karteneinstellungen-Schaltflรคche oder die Karte</b> aus dem Fahrbildschirm aus. Hide Max Speed - Maximalgeschwindigkeit ausblenden + Maximalgeschwindigkeit ausblenden - Hide the max speed from the driving screen. - Verberge die Hรถchstgeschwindigkeit vom Fahrbildschirm. + <b>Hide the max speed</b> from the driving screen. + <b>Die Hรถchstgeschwindigkeit</b> vom Fahrbildschirm ausblenden.</b> Hide Non-Critical Alerts - Nicht-kritische Warnungen ausblenden + Nicht-kritische Warnungen ausblenden - Hide non-critical alerts from the driving screen. - Nicht-kritische Warnungen vom Fahrbildschirm ausblenden. + <b>Hide non-critical alerts</b> from the driving screen. + <b>Nicht kritische Warnungen ausblenden</b> vom Fahrbildschirm. Hide Speed Limits - Geschwindigkeitsbegrenzungen ausblenden + Geschwindigkeitsbegrenzungen ausblenden - Hide the speed limits from the driving screen. - Blenden Sie die Geschwindigkeitsbegrenzungen vom Fahrbildschirm aus. + <b>Hide posted speed limits</b> from the driving screen. + <b>Ausgeschilderte Tempolimits ausblenden</b> vom Fahrbildschirm. Use Wheel Speed - Verwenden Sie die Raddrehzahl + Raddrehzahl verwenden - Use the vehicle's wheel speed instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives. - Verwenden Sie die Radgeschwindigkeit des Fahrzeugs anstelle der Cluster-Geschwindigkeit. Dies ist rein eine visuelle ร„nderung und hat keinen Einfluss darauf, wie Openpilot fรคhrt. + <b>Use the vehicle's wheel speed</b> instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives! + <b>Verwende die Raddrehzahl des Fahrzeugs</b> statt der Tacho-Geschwindigkeit. Dies ist nur eine visuelle ร„nderung und beeinflusst nicht, wie openpilot fรคhrt! Developer UI - Entwickler-UI + Entwickler-UI - Detailed information about openpilot's internal operations. - Detaillierte Informationen รผber die internen Ablรคufe von openpilot. + <b>Detailed information about openpilot's internal operations.</b> + <b>Detaillierte Informationen รผber die internen Ablรคufe von openpilot.</b> Adjacent Path Metrics - Angrenzende Pfadmetriken + Metriken benachbarter Pfade - Metrics displayed on top of the adjacent lanes measuring their current width. - Metriken, die oben auf den angrenzenden Fahrspuren angezeigt werden und deren aktuelle Breite messen. + <b>Show the width of the adjacent lanes.</b> + <b>Breite der benachbarten Fahrspuren anzeigen.</b> Developer Metrics - Entwicklermetriken + Entwickler-Metriken - Performance data, sensor readings, and system metrics for debugging and optimizing openpilot. - Leistungsdaten, Sensormesswerte und Systemmetriken zur Fehlerbehebung und Optimierung von openpilot. + <b>Performance data, sensor readings, and system metrics</b> for debugging and optimizing openpilot. + <b>Leistungsdaten, Sensormessungen und Systemmetriken</b> zur Fehlersuche und Optimierung von openpilot. Border Metrics - Grenzmetriken + Randmetriken - Metrics displayed around the border of the driving screen.<br><br><b>Blind Spot</b>: Turn the border red when a vehicle is detected in a blind spot<br><b>Steering Torque</b>: Highlight the border green to red in accordance to the amount of steering torque being used<br><b>Turn Signal</b>: Flash the border yellow when a turn signal is active - Metriken werden um den Rand des Fahrbildschirms angezeigt.<br><br><b>Toter Winkel</b>: Den Rand rot fรคrben, wenn ein Fahrzeug im toten Winkel erkannt wird<br><b>Lenkdrehmoment</b>: Den Rand von grรผn bis rot hervorheben, entsprechend der Menge des verwendeten Lenkdrehmoments<br><b>Blinker</b>: Den Rand gelb blinken lassen, wenn ein Blinker aktiv ist + <b>Show statuses along the border of the driving screen.</b><br><br><b>Blind Spot</b>: The border turns red when a vehicle is in a blind spot<br><b>Steering Torque</b>: The border goes from green to red according to how much steering torque is being used<br><b>Turn Signal</b>: The border flashes yellow when a turn signal is on + <b>Status entlang des Randes des Fahrbildschirms anzeigen.</b><br><br><b>Toter Winkel</b>: Der Rand wird rot, wenn sich ein Fahrzeug im toten Winkel befindet<br><b>Lenkmoment</b>: Der Rand wechselt von grรผn zu rot je nach verwendetem Lenkmoment<br><b>Blinker</b>: Der Rand blinkt gelb, wenn ein Blinker eingeschaltet ist Lead Info - Lead-Informationen + Fรผhrungsinformationen - Metrics displayed under vehicle markers listing their distance and current speed. - Metriken, die unter Fahrzeugmarkierungen angezeigt werden und ihre Entfernung und aktuelle Geschwindigkeit auflisten. + <b>Show each tracked vehicle's distance and speed</b> below its marker. + <b>Zeigen Sie die Entfernung und Geschwindigkeit jedes verfolgten Fahrzeugs</b> unter dessen Markierung an. FPS Display - FPS-Anzeige + FPS-Anzeige - Display the <b>Frames Per Second (FPS)</b> at the bottom of the driving screen. - Zeige die <b>Bilder pro Sekunde (FPS)</b> am unteren Rand des Fahrbildschirms an. + <b>Show the frames per second (FPS)</b> at the bottom of the driving screen. + <b>Die Bilder pro Sekunde (FPS) anzeigen</b> am unteren Rand des Fahrbildschirms. Numerical Temperature Gauge - Numerische Temperaturanzeige + Numerische Temperaturanzeige - Use numerical temperature readings instead of status labels in the sidebar. - Verwenden Sie numerische Temperaturwerte anstelle von Statusbeschriftungen in der Seitenleiste. - - - Display system information (<b>CPU</b>, <b>GPU</b>, <b>RAM usage</b>, <b>IP address</b>, <b>device storage</b>) in the sidebar. - Systeminformationen anzeigen (<b>CPU</b>, <b>GPU</b>, <b>RAM-Nutzung</b>, <b>IP-Adresse</b>, <b>Gerรคtespeicher</b>) in der Seitenleiste. - - - Use International System of Units - Verwenden Sie das Internationale Einheitensystem - - - Display measurements using the <b>International System of Units (SI)</b> standard. - Messungen nach dem <b>Internationalen Einheitensystem (SI)</b> anzeigen. - - - Developer Sidebar - Entwickler-Seitenleiste - - - Display debugging info and metrics in a dedicated sidebar on the right side of the screen. - Zeigen Sie Debugging-Informationen und Metriken in einer speziellen Seitenleiste auf der rechten Seite des Bildschirms an. - - - Metric #1 - Metrik #1 - - - Metric to display in the first metric in the "Developer Sidebar". - Metrik zur Anzeige in der ersten Metrik in der "Entwickler-Seitenleiste". - - - Metric #2 - Kennzahl #2 - - - Metric to display in the second metric in the "Developer Sidebar". - Metrik zur Anzeige in der zweiten Metrik in der "Entwickler-Seitenleiste". - - - Metric #3 - Metrik #3 - - - Metric to display in the third metric in the "Developer Sidebar". - Metrik zur Anzeige in der dritten Metrik in der "Entwickler-Seitenleiste". - - - Metric #4 - Metrik #4 - - - Metric to display in the fourth metric in the "Developer Sidebar". - Metrik zur Anzeige als vierte Metrik in der "Entwickler-Seitenleiste". - - - Metric #5 - Metrik #5 - - - Metric to display in the fifth metric in the "Developer Sidebar". - Metrik zur Anzeige in der fรผnften Metrik in der "Entwickler-Seitenleiste". - - - Metric #6 - Metrik #6 - - - Metric to display in the sixth metric in the "Developer Sidebar". - Metrik zur Anzeige der sechsten Metrik in der "Entwickler-Seitenleiste". - - - Metric #7 - Metrik #7 - - - Metric to display in the seventh metric in the "Developer Sidebar". - Metrik zur Anzeige in der siebten Metrik in der "Entwickler-Seitenleiste". - - - Developer Widgets - Entwickler-Widgets - - - Overlays displaying debugging visuals, internal states, and model predictions on the driving screen. - Overlays, die Debug-Visualisierungen, interne Zustรคnde und Modellvorhersagen auf dem Fahrbildschirm anzeigen. - - - Adjacent Leads Tracking - Verfolgung benachbarter Leads - - - Adjacent leads detected by the car's radar to the left and right of the current driving path. - Benachbarte Fahrzeuge wurden vom Radar des Autos links und rechts des aktuellen Fahrwegs erkannt. - - - Model Stopping Point - Modellstoppunkt - - - Display an image on the screen where openpilot is wanting to stop. - Zeigen Sie ein Bild auf dem Bildschirm an, wo openpilot anhalten mรถchte. - - - Radar Tracks - Radarspuren - - - Display all of the radar points produced by the car's radar. - Zeigen Sie alle von dem Radar des Autos erzeugten Radarpunkte an. - - - Driving Screen Widgets - Fahrbildschirm-Widgets - - - Custom FrogPilot widgets for the driving screen. - Benutzerdefinierte FrogPilot-Widgets fรผr den Fahrbildschirm. - - - Acceleration Path - Beschleunigungspfad - - - Colorize the driving path based on openpilot's current desired acceleration and deceleration rate. - Fรคrben Sie den Fahrweg basierend auf der aktuellen gewรผnschten Beschleunigungs- und Verzรถgerungsrate von Openpilot ein. - - - Adjacent Lanes - Angrenzende Fahrspuren - - - Driving paths for the left and right adjacent lanes. - Fahrwege fรผr die links und rechts angrenzenden Fahrspuren. - - - Blind Spot Path - Toter-Winkel-Pfad - - - Display a red driving path for detected vehicles in the corresponding lane's blind spot. - Zeigen Sie einen roten Fahrweg fรผr erkannte Fahrzeuge im toten Winkel der entsprechenden Fahrspur an. - - - Compass - Kompass - - - A compass to show the current driving direction. - Ein Kompass, um die aktuelle Fahrtrichtung anzuzeigen. - - - Driving Personality Button - Fahrpersรถnlichkeitsknopf - - - Display the current driving personality on the screen. Tap to switch personalities, or long press for 0.5 seconds to change the current state of <b>Experimental Mode</b>, or 2.5 seconds for <b>Traffic Mode</b>. - Zeigen Sie die aktuelle Fahrpersรถnlichkeit auf dem Bildschirm an. Tippen Sie, um die Persรถnlichkeiten zu wechseln, oder drรผcken Sie lange fรผr 0,5 Sekunden, um den aktuellen Zustand des <b>Experimentellen Modus</b> zu รคndern, oder 2,5 Sekunden fรผr den <b>Verkehrsmodus</b>. - - - Gas / Brake Pedal Indicators - Gas- / Bremspedalanzeigen - - - Pedals to indicate when either of the pedals are currently being used.<br><br><b>Dynamic</b>: The pedals change in opacity in accordance to how much openpilot is accelerating or decelerating<br><b>Static</b>: The pedals are displayed with full opacity when active, and dimmed when not in use - Pedale zur Anzeige, wenn eines der Pedale derzeit verwendet wird.<br><br><b>Dynamisch</b>: Die Pedale รคndern ihre Deckkraft entsprechend der Beschleunigung oder Verzรถgerung von openpilot<br><b>Statisch</b>: Die Pedale werden mit voller Deckkraft angezeigt, wenn sie aktiv sind, und gedimmt, wenn sie nicht verwendet werden - - - Rotating Steering Wheel - Drehendes Lenkrad - - - Rotate the steering wheel alongside the vehicle's physical steering wheel. - Drehen Sie das Lenkrad parallel zum physischen Lenkrad des Fahrzeugs. - - - Model UI - Modell-Benutzeroberflรคche - - - Model visualizations on the driving screen for the driving path, lane lines, path edges, and road edges. - Modellvisualisierungen auf dem Fahrbildschirm fรผr den Fahrweg, Fahrspurlinien, Wegkanten und StraรŸenrรคnder. - - - Dynamic Path Width - Dynamische Pfadbreite - - - Adjust the width of the driving path based on the current engagement state.<br><br><b>Fully engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Fully disengaged</b>: 50% - Passen Sie die Breite des Fahrwegs basierend auf dem aktuellen Engagement-Zustand an.<br><br><b>Voll engagiert</b>: 100%<br><b>Immer eingeschaltet lateral</b>: 75%<br><b>Vollstรคndig deaktiviert</b>: 50% - - - Lane Lines Width - Spurbreite - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 4 inches. - Die Dicke der Fahrspurmarkierungen auf dem Fahrbildschirm.<br><br><b>StandardmรครŸig entspricht die <b>MUTCD</b>-Fahrspurbreiten-Norm von 4 Zoll. - - - Path Edges Width - Pfadkantenbreite - - - The width of the edges of the driving path that represent different driving modes and statuses.<br><br>Default is <b>20%</b> of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden - Die Breite der Kanten des Fahrwegs, die verschiedene Fahrmodi und -zustรคnde darstellen.<br><br>Standard ist <b>20%</b> der gesamten Fahrwegbreite.<br><br>Farbfรผhrung:<br><br>- <b>Blau</b>: Navigation<br>- <b>Hellblau</b>: Immer eingeschalteter Lateralmodus<br>- <b>Grรผn</b>: Standard<br>- <b>Orange</b>: Experimenteller Modus<br>- <b>Rot</b>: Verkehrsmodus<br>- <b>Gelb</b>: Bedingter experimenteller Modus รผberschrieben - - - Path Width - Pfadbreite - - - Road Edges Width - StraรŸenkantenbreite - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 4 inches. - Die Dicke der StraรŸenrรคnder auf dem Fahrbildschirm.<br><br><b>Standard entspricht der Hรคlfte der <b>MUTCD</b>-Fahrspurbreiten-Norm von 4 Zoll. - - - "Unlimited" Road UI - โ€žUnbegrenzteโ€œ StraรŸen-Benutzeroberflรคche - - - Extend the display of the driving path, lane lines, and road edges as far as the model can see. - Erweitern Sie die Anzeige des Fahrwegs, der Fahrspurlinien und der StraรŸenrรคnder so weit, wie das Modell sehen kann. - - - Navigation Widgets - Navigations-Widgets - - - Map style tweaks, speed limits, and other navigation related widgets. - Kartenstil-Anpassungen, Geschwindigkeitsbegrenzungen und andere navigationsbezogene Widgets. - - - Larger Map Display - GrรถรŸere Kartenanzeige - - - Increase the size of the map for easier navigation readings. - VergrรถรŸern Sie die Karte fรผr eine einfachere Navigation. - - - Map Style - Kartenstil - - - The map style used for <b>Navigate on openpilot (NOO)</b>:<br><br><b>Stock</b>: Default comma.ai style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>mike854's (Satellite hybrid)</b>: Customized hybrid satellite view - Der Kartenstil, der fรผr <b>Navigate on openpilot (NOO)</b> verwendet wird:<br><br><b>Stock</b>: Standard comma.ai Stil<br><b>Mapbox Streets</b>: Standardansicht mit Fokus auf StraรŸen<br><b>Mapbox Outdoors</b>: Betont Outdoor- und Gelรคndemerkmale<br><b>Mapbox Light</b>: Minimalistisches, helles Thema<br><b>Mapbox Dark</b>: Minimalistisches, dunkles Thema<br><b>Mapbox Navigation Day</b>: Optimiert fรผr die Navigation am Tag<br><b>Mapbox Navigation Night</b>: Optimiert fรผr die Navigation bei Nacht<br><b>Mapbox Satellite</b>: Nur Satellitenbilder<br><b>Mapbox Satellite Streets</b>: Hybride Satellitenbilder mit StraรŸenbeschriftungen<br><b>Mapbox Traffic Night</b>: Dunkles Thema mit Betonung auf Verkehrsbedingungen<br><b>mike854's (Satellite hybrid)</b>: Angepasste hybride Satellitenansicht - - - Road Name - StraรŸenname - - - Display the road name at the bottom of the driving screen using data from <b>OpenStreetMap</b>. - Zeigen Sie den StraรŸennamen am unteren Rand des Fahrbildschirms mit Daten von <b>OpenStreetMap</b> an. - - - Show Speed Limits - Geschwindigkeitsbegrenzungen anzeigen - - - Display speed limits in the top left corner of the driving screen. Uses data from your car's dashboard (if supported) and data from <b>OpenStreetMaps</b>. - Zeigen Sie Geschwindigkeitsbegrenzungen in der oberen linken Ecke des Fahrbildschirms an. Verwendet Daten vom Armaturenbrett Ihres Autos (falls unterstรผtzt) und Daten von <b>OpenStreetMaps</b>. - - - Show Speed Limits from Mapbox - Zeige Geschwindigkeitsbegrenzungen von Mapbox an - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - Verwenden Sie <b>Mapbox</b>-Geschwindigkeitsbegrenzungsdaten, wenn keine anderen Quellen verfรผgbar sind. - - - Use Vienna-Style Speed Signs - Verwenden Sie Wiener-Stil-Geschwindigkeitsschilder - - - Force <b>Vienna-style (EU)</b> speed limit signs instead of <b>MUTCD (US)</b>. - Erzwinge <b>Wiener Stil (EU)</b> Geschwindigkeitsbegrenzungsschilder anstelle von <b>MUTCD (US)</b>. - - - Quality of Life - Lebensqualitรคt - - - Visual features to improve your overall openpilot experience. - Visuelle Funktionen zur Verbesserung Ihres gesamten Openpilot-Erlebnisses. - - - Camera View - Kameraansicht - - - The active camera view display. This is purely a visual change and doesn't impact how openpilot drives! - Die Anzeige der aktiven Kamerasicht. Dies ist rein eine visuelle ร„nderung und hat keinen Einfluss darauf, wie openpilot fรคhrt! - - - Show Driver Camera When In Reverse - Kamera anzeigen, wenn im Rรผckwรคrtsgang - - - Display the driver camera feed when the vehicle is in reverse. - Zeigen Sie den Fahrer-Kamerafeed an, wenn das Fahrzeug im Rรผckwรคrtsgang ist. - - - Standby Mode - Standby-Modus - - - Turn the screen off when driving and automatically wake it up if engagement state changes or important alerts occur. - Schalten Sie den Bildschirm beim Fahren aus und aktivieren Sie ihn automatisch, wenn sich der Engagement-Status รคndert oder wichtige Warnungen auftreten. - - - Stopped Timer - Gestoppter Timer - - - Replace the current speed with a timer when stopped to indicate how long the vehicle has been stopped for. - Ersetzen Sie die aktuelle Geschwindigkeit durch einen Timer, wenn das Fahrzeug angehalten ist, um anzuzeigen, wie lange das Fahrzeug gestoppt ist. - - - Blind Spot - Toter Winkel - - - Steering Torque - Lenkdrehmoment - - - Turn Signal - Blinker - - - Fahrenheit - Fahrenheit - - - CPU - CPU - - - GPU - GPU - - - IP - IP - - - RAM - RAM - - - SSD Left - SSD links - - - SSD Used - SSD verwendet - - - None - Keine - - - Acceleration: Current - Beschleunigung: Aktuell - - - Acceleration: Max - Beschleunigung: Max - - - Auto Tune: Actuator Delay - Auto Tune: Aktuatorverzรถgerung - - - Auto Tune: Friction - Auto Tune: Reibung - - - Auto Tune: Lateral Acceleration - Auto Tune: Querbeschleunigung - - - Auto Tune: Steer Ratio - Auto Tune: Lenkverhรคltnis - - - Auto Tune: Stiffness Factor - Auto Tune: Steifigkeitsfaktor - - - Engagement %: Lateral - Engagement %: Lateral - - - Engagement %: Longitudinal - Engagement %: Lรคngsschnitt - - - Lateral Control: Steering Angle - Quersteuerung: Lenkwinkel - - - Lateral Control: Torque % Used - Laterale Steuerung: Drehmoment % verwendet - - - Longitudinal Control: Actuator Acceleration Output - Lรคngsregelung: Aktuator-Beschleunigungsausgabe - - - Longitudinal MPC Jerk: Acceleration - Lรคngs-MPC-Ruck: Beschleunigung - - - Longitudinal MPC Jerk: Danger Zone - Lรคngs-MPC-Ruck: Gefahrenzone - - - Longitudinal MPC Jerk: Speed Control - Lรคngs-MPC-Ruck: Geschwindigkeitsregelung - - - SELECT - SELECT - - - Select a metric to display - Wรคhlen Sie eine Metrik zur Anzeige aus - - - Show Distance - Entfernung anzeigen - - - Dynamic - Dynamisch - - - Static - Statisch - - - inches - Zoll - - - Off - Aus - - - feet - FรผรŸe - - - Full Map - Vollstรคndige Karte - - - Stock openpilot - Aktien-Openpilot - - - FrogsGoMoo's Personalized Style - FrogsGoMoo's personalisierter Stil - - - Mapbox Streets - Mapbox Streets - - - Mapbox Outdoors - Mapbox Outdoors - - - Mapbox Light - Mapbox Light - - - Mapbox Dark - Mapbox Dark - - - Mapbox Navigation Day - Mapbox Navigation Tag - - - Mapbox Navigation Night - Mapbox Navigation Nacht - - - Mapbox Satellite - Mapbox-Satellit - - - Mapbox Satellite Streets - Mapbox SatellitenstraรŸen - - - Mapbox Traffic Night - Mapbox Verkehr Nacht - - - Mike's Personalized Style - Mikes personalisierter Stil - - - Select a map style - Wรคhlen Sie einen Kartenstil aus - - - Auto - Auto - - - Driver - Treiber - - - Standard - Standard - - - Wide - Breit - - - foot - FuรŸ - - - inch - Zoll - - - meter - Meter - - - meters - Meter - - - centimeter - Zentimeter - - - centimeters - Zentimeter - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 10 centimeters. - Die Dicke der Fahrspurmarkierungen auf dem Fahrbildschirm.<br><br><b>StandardmรครŸig entspricht die <b>MUTCD</b>-Fahrspurmarkierungsbreite von 10 Zentimetern. - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 10 centimeters. - Die Dicke der StraรŸenrรคnder auf dem Fahrbildschirm.<br><br><b>StandardmรครŸig entspricht die Hรคlfte der <b>MUTCD</b>-Fahrstreifenbreiten-Norm von 10 Zentimetern. + <b>Show a numerical temperature in the sidebar</b> instead of the status labels. + <b>Zeige eine numerische Temperatur in der Seitenleiste</b> statt der Statuslabels. Sidebar Metrics - Seitenleistenmetriken + Seitenleistenmetriken - The width of the driving path on the driving screen.<br><br>Default <b>(6.1 feet)</b> matches the width of a <b>2019 Lexus ES 350</b>. - Die Breite des Fahrwegs auf dem Fahrbildschirm.<br><br>Standard <b>(6,1 FuรŸ)</b> entspricht der Breite eines <b>2019 Lexus ES 350</b>. + <b>Display system information</b> (CPU, GPU, RAM usage, IP address, device storage) in the sidebar. + <b>Systeminformationen anzeigen</b> (CPU-, GPU-, RAM-Auslastung, IP-Adresse, Gerรคtespeicher) in der Seitenleiste. - The width of the driving path on the driving screen.<br><br>Default <b>(1.9 meters)</b> matches the width of a <b>2019 Lexus ES 350</b>. - Die Breite des Fahrwegs auf dem Fahrbildschirm.<br><br>Standard <b>(1,9 Meter)</b> entspricht der Breite eines <b>2019 Lexus ES 350</b>. + Use International System of Units + Verwenden Sie das Internationale Einheitensystem + + + <b>Display measurements using the "International System of Units" (SI)</b> standard. + <b>Messungen nach dem Standard โ€žInternationales Einheitensystemโ€œ (SI) anzeigen</b> + + + Developer Sidebar + Entwickler-Seitenleiste + + + <b>Display debugging info and metrics</b> in a dedicated sidebar on the right side of the screen. + <b>Debug-Infos und Metriken anzeigen</b> in einer eigenen Seitenleiste auf der rechten Seite des Bildschirms. + + + Metric #1 + Metrisch Nr. 1 + + + <b>Select the metric shown in the first "Developer Sidebar" widget.</b> + <b>Wรคhlen Sie die Metrik aus, die im ersten โ€žDeveloper Sidebarโ€œ-Widget angezeigt wird.</b> + + + Metric #2 + Metrisch Nr. 2 + + + <b>Select the metric shown in the second "Developer Sidebar" widget.</b> + <b>Wรคhlen Sie die im zweiten โ€žDeveloper Sidebarโ€œ-Widget angezeigte Metrik aus.</b> + + + Metric #3 + Metrikย #3 + + + <b>Select the metric shown in the third "Developer Sidebar" widget.</b> + <b>Wรคhlen Sie die im dritten โ€žDeveloper Sidebarโ€œ-Widget angezeigte Metrik aus.</b> + + + Metric #4 + Metrisch Nr. 4 + + + <b>Select the metric shown in the fourth "Developer Sidebar" widget.</b> + <b>Wรคhlen Sie die im vierten โ€žDeveloper Sidebarโ€œ-Widget angezeigte Metrik aus.</b> + + + Metric #5 + Metrisch Nr. 5 + + + <b>Select the metric shown in the fifth "Developer Sidebar" widget.</b> + <b>Wรคhlen Sie die im fรผnften โ€žDeveloper Sidebarโ€œ-Widget angezeigte Metrik aus.</b> + + + Metric #6 + Metrik Nr. 6 + + + <b>Select the metric shown in the sixth "Developer Sidebar" widget.</b> + <b>Wรคhlen Sie die im sechsten โ€žDeveloper Sidebarโ€œ-Widget angezeigte Metrik aus.</b> + + + Metric #7 + Metrik Nr. 7 + + + <b>Select the metric shown in the seventh "Developer Sidebar" widget.</b> + <b>Wรคhlen Sie die Metrik aus, die im siebten โ€žDeveloper Sidebarโ€œ-Widget angezeigt wird.</b> + + + Developer Widgets + Entwickler-Widgets + + + <b>Overlays for debugging visuals, internal states, and model predictions</b> on the driving screen. + <b>Overlays fรผr Debugging-Visualisierungen, interne Zustรคnde und Modellvorhersagen</b> auf dem Fahrbildschirm. + + + Adjacent Leads Tracking + Verfolgung benachbarter Vorausfahrender + + + <b>Display adjacent leads detected by the car's radar</b> to the left and right of the current driving path. + <b>Zeigen Sie vom Radar des Fahrzeugs erkannte benachbarte Vorausfahrzeuge</b> links und rechts des aktuellen Fahrwegs an. + + + Model Stopping Point + Modell-Stoppunkt + + + <b>Show a stop-sign marker where the model intends to stop.</b> + <b>Einen Stoppschild-Marker anzeigen, wo das Modell anzuhalten beabsichtigt.</b> + + + Radar Tracks + Radarmessungen + + + <b>Display all radar points</b> produced by the car's radar. + <b>Alle Radarpunkte anzeigen</b>, die vom Radar des Fahrzeugs erzeugt werden. + + + Driving Screen Widgets + Fahrbildschirm-Widgets + + + <b>Custom FrogPilot widgets</b> for the driving screen. + <b>Benutzerdefinierte FrogPilot-Widgets</b> fรผr den Fahrbildschirm. + + + Acceleration Path + Beschleunigungspfad + + + <b>Color the driving path by planned acceleration and braking.</b> + <b>Fรคrbe den Fahrpfad nach geplanter Beschleunigung und Bremsung.</b> + + + Adjacent Lanes + Benachbarte Fahrspuren + + + <b>Show the driving paths for the left and right lanes.</b> + <b>Zeige die Fahrwege fรผr die linken und rechten Fahrspuren.</b> + + + Blind Spot Path + Toter-Winkel-Fahrspur + + + <b>Show a red path when a vehicle is in that lane's blind spot.</b> + <b>Zeige einen roten Pfad an, wenn sich ein Fahrzeug im toten Winkel dieser Spur befindet.</b> + + + Compass + Kompass + + + <b>Show the current driving direction</b> with a simple on-screen compass. + <b>Zeigen Sie die aktuelle Fahrtrichtung</b> mit einem einfachen Kompass auf dem Bildschirm an. + + + Driving Personality Button + Fahrpersรถnlichkeit-Schaltflรคche + + + <b>Control and view the current driving personality</b> via a driving screen widget. + <b>Steuern und anzeigen der aktuellen Fahrpersรถnlichkeit</b> รผber ein Widget auf dem Fahrbildschirm. + + + Gas / Brake Pedal Indicators + Gas-/Bremspedal-Anzeigen + + + <b>On-screen gas and brake indicators.</b><br><br><b>Dynamic</b>: Opacity changes according to how much openpilot is accelerating or braking<br><b>Static</b>: Full when active, dim when not + <b>Anzeige von Gas- und Bremsstatus auf dem Bildschirm.</b><br><br><b>Dynamisch</b>: Die Deckkraft รคndert sich je nach Stรคrke der openpilot-Beschleunigung oder -Bremsung<br><b>Statisch</b>: Voll bei aktiv, abgedimmt bei inaktiv + + + Rotating Steering Wheel + Lenkrad drehen + + + <b>Rotate the driving screen wheel</b> with the physical steering wheel. + <b>Drehen Sie das Fahrbildschirmrad</b> mit dem physischen Lenkrad. + + + Model UI + Modell-UI + + + <b>Model visualizations</b> for the driving path, lane lines, path edges, and road edges. + <b>Modellvisualisierungen</b> fรผr den Fahrweg, die Fahrspurlinien, die Rand des Fahrwegs und die StraรŸenrรคnder. + + + Dynamic Path Width + Dynamische Pfadbreite + + + <b>Change the path width based on engagement.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% + <b>ร„ndere die Pfadbreite basierend auf der Aktivierung.</b><br><br><b>Vollstรคndig aktiviert</b>: 100%<br><b>Immer aktive Querfรผhrung</b>: 75%<br><b>Deaktiviert</b>: 50% + + + Lane Lines Width + Spurlinienbreite + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 4 inches. + <b>Stellen Sie die Fahrspurlinien-Dicke ein.</b><br><br>Standard entspricht dem MUTCD-Standard fรผr Fahrspurlinienbreite von 4 Zoll. + + + Path Edges Width + Breite der Pfadkanten + + + <b>Set the driving-path edge width</b> that represents different driving modes and statuses.<br><br>Default is 20% of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + <b>Stellen Sie die Breite der Fahrspur-Randlinie ein</b>, die verschiedene Fahrmodi und -zustรคnde darstellt.<br><br>Standard ist 20% der gesamten Spurbreite.<br><br>Farbleitfaden:<br><br>- <b>Blau</b>: Navigation<br>- <b>Hellblau</b>: Always On Lateral<br>- <b>Grรผn</b>: Standard<br>- <b>Orange</b>: Experimentalmodus<br>- <b>Rot</b>: Verkehrsmodus<br>- <b>Gelb</b>: Bedingter Experimentalmodus รผberschrieben + + + Path Width + Spurbreite + + + <b>Set the driving-path width.</b><br><br>Default (6.1 feet) matches the width of a 2019 Lexus ES 350. + <b>Stellen Sie die Breite der Fahrspur ein.</b><br><br>Standard (6,1 FuรŸ) entspricht der Breite eines Lexus ES 350 von 2019. + + + Road Edges Width + StraรŸenkantenbreite + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 4 inches. + <b>Stellen Sie die StraรŸenrand-Dicke ein.</b><br><br>Standard entspricht der Hรคlfte der MUTCD-Fahrstreifenlinienbreite von 4 inches. + + + "Unlimited" Road UI + โ€žUnbegrenzteโ€œ StraรŸen-UI + + + <b>Extend the length of the driving path, lane lines, and road edges</b> for as far as the model can see. + <b>Verlรคngert die Lรคnge des Fahrwegs, der Fahrspurlinien und der Fahrbahnrรคnder</b>, so weit wie das Modell sehen kann. + + + Navigation Widgets + Navigations-Widgets + + + <b>Map style, speed limits, and other navigation widgets.</b> + <b>Kartenstil, Geschwindigkeitsbegrenzungen und andere Navigations-Widgets.</b> + + + Larger Map Display + GrรถรŸere Kartenanzeige + + + <b>Increase the map size</b> for easier navigation readings. + <b>VergrรถรŸern Sie die KartengrรถรŸe</b> fรผr leichteres Ablesen der Navigation. + + + Map Style + Kartenstil + + + <b>Select the map style</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai style<br><b>FrogPilot</b>: Official FrogPilot map style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>Mike's Personalized Style</b>: Customized hybrid satellite view + <b>Wรคhlen Sie den Kartenstil</b> fรผr โ€žNavigate on openpilotโ€œ (NOO):<br><br><b>Stock openpilot</b>: Standardstil von comma.ai<br><b>FrogPilot</b>: Offizieller FrogPilot-Kartenstil<br><b>Mapbox Streets</b>: Standardansicht mit Fokus auf StraรŸen<br><b>Mapbox Outdoors</b>: Betont Outdoor- und Gelรคndeยญmerkmale<br><b>Mapbox Light</b>: Minimalistisches, helles Thema<br><b>Mapbox Dark</b>: Minimalistisches, dunkles Thema<br><b>Mapbox Navigation Day</b>: Fรผr Navigation am Tag optimiert<br><b>Mapbox Navigation Night</b>: Fรผr Navigation in der Nacht optimiert<br><b>Mapbox Satellite</b>: Nur Satellitenbilder<br><b>Mapbox Satellite Streets</b>: Hybrid-Satellitenbilder mit StraรŸenbeschriftungen<br><b>Mapbox Traffic Night</b>: Dunkles Thema mit Fokus auf Verkehrslage<br><b>Mike's Personalized Style</b>: Anpasste hybride Satellitenansicht + + + Road Name + StraรŸenname + + + <b>Display the road name at the bottom of the driving screen</b> using data from "OpenStreetMap (OSM)". + <b>Zeige den StraรŸennamen am unteren Rand des Fahrbildschirms an</b> unter Verwendung von Daten aus โ€žOpenStreetMap (OSM)โ€œ. + + + Show Speed Limits + Geschwindigkeitsbegrenzungen anzeigen + + + <b>Show speed limits</b> in the top-left corner of the driving screen. Uses data from the car's dashboard (if supported) and "OpenStreetMap (OSM)". + <b>Geschwindigkeitsbegrenzungen anzeigen</b> in der linken oberen Ecke des Fahrbildschirms. Verwendet Daten vom Armaturenbrett des Fahrzeugs (falls unterstรผtzt) und โ€žOpenStreetMap (OSM)โ€œ. + + + Show Speed Limits from Mapbox + Geschwindigkeitsbegrenzungen von Mapbox anzeigen + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>Mapbox-Geschwindigkeitsdaten verwenden, wenn keine andere Quelle verfรผgbar ist.</b> + + + Use Vienna-Style Speed Signs + Wiener-Style-Geschwindigkeitsschilder verwenden + + + <b>Show Vienna-style (EU) speed-limit signs</b> instead of MUTCD (US). + <b>Wiener (EU) Tempolimitschilder anzeigen</b> statt MUTCD (US). + + + Quality of Life + Lebensqualitรคt + + + <b>Miscellaneous visual changes</b> to fine-tune how the driving screen looks. + <b>Verschiedene visuelle ร„nderungen</b>, um das Erscheinungsbild des Fahrbildschirms fein abzustimmen. + + + Camera View + Kameransicht + + + <b>Select the active camera view.</b> This is purely a visual change and doesn't impact how openpilot drives! + <b>Wรคhlen Sie die aktive Kameraansicht.</b> Dies ist ausschlieรŸlich eine visuelle ร„nderung und beeinflusst nicht, wie openpilot fรคhrt! + + + Show Driver Camera When In Reverse + Fahrerkamera beim Rรผckwรคrtsfahren anzeigen + + + <b>Show the driver camera feed</b> when the vehicle is in reverse. + <b>Zeige den Fahrer-Kamerafeed</b>, wenn das Fahrzeug im Rรผckwรคrtsgang ist. + + + Stopped Timer + Gestoppter Timer + + + <b>Show a timer when stopped</b> in place of the current speed to indicate how long the vehicle has been stopped. + <b>Beim Anhalten einen Timer anzeigen</b> anstelle der aktuellen Geschwindigkeit, um anzuzeigen, wie lange das Fahrzeug steht. + + + Hide Map + Karte ausblenden + + + Blind Spot + Toter Winkel + + + Steering Torque + Lenkdrehmoment + + + Turn Signal + Blinker + + + Fahrenheit + Fahrenheit + + + CPU + CPU + + + GPU + GPU + + + IP + IP + + + RAM + RAM + + + SSD Left + SSD links + + + SSD Used + SSD verwendet + + + None + Keine + + + Acceleration: Current + Beschleunigung: Aktuell + + + Acceleration: Max + Beschleunigung: Max + + + Auto Tune: Actuator Delay + Automatische Abstimmung: Aktuatorverzรถgerung + + + Auto Tune: Friction + Auto-Tuning: Reibung + + + Auto Tune: Lateral Acceleration + Automatisches Tuning: Querbeschleunigung + + + Auto Tune: Steer Ratio + Auto-Tuning: Lenkรผbersetzung + + + Auto Tune: Stiffness Factor + Auto-Tuning: Steifigkeitsfaktor + + + Engagement %: Lateral + Engagement %: Lateral + + + Engagement %: Longitudinal + Engagement %: Longitudinal + + + Lateral Control: Steering Angle + Querfรผhrung: Lenkwinkel + + + Lateral Control: Torque % Used + Querregelung: Drehmoment % verwendet + + + Longitudinal Control: Actuator Acceleration Output + Lรคngsregelung: Aktuator-Beschleunigungsausgabe + + + Longitudinal MPC Jerk: Acceleration + Lรคngs-MPC Ruck: Beschleunigung + + + Longitudinal MPC Jerk: Danger Zone + Lรคngs-MPC-Ruck: Gefahrenzone + + + Longitudinal MPC Jerk: Speed Control + Lรคngs-MPC-Ruck: Geschwindigkeitsregelung + + + SELECT + AUSWร„HLEN + + + Select a metric to display + Wรคhlen Sie eine Metrik zur Anzeige aus + + + Show Distance + Entfernung anzeigen + + + Dynamic + Dynamisch + + + Static + Statisch + + + inches + Zoll + + + Off + Aus + + + feet + FuรŸ + + + Full Map + Vollstรคndige Karte + + + Stock openpilot + Standard-openpilot + + + FrogPilot + FrogPilot + + + Mapbox Streets + Mapbox Streets + + + Mapbox Outdoors + Mapbox Outdoors + + + Mapbox Light + Mapbox Light + + + Mapbox Dark + Mapbox Dunkel + + + Mapbox Navigation Day + Mapbox-Navigation Tag + + + Mapbox Navigation Night + Mapbox Navigation Nacht + + + Mapbox Satellite + Mapbox Satellit + + + Mapbox Satellite Streets + Mapbox SatellitenstraรŸen + + + Mapbox Traffic Night + Mapbox Verkehr Nacht + + + Mike's Personalized Style + Mikes personalisierter Stil + + + Select a map style + Wรคhle einen Kartenstil + + + Auto + Auto + + + Driver + Fahrer + + + Standard + Standard + + + Wide + Breit + + + foot + FuรŸ + + + inch + Zoll + + + meter + Meter + + + meters + Meter + + + centimeter + Zentimeter + + + centimeters + Zentimeter + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 10 centimeters. + <b>Stellen Sie die Fahrstreifenlinien-Dicke ein.</b><br><br>Standard entspricht der MUTCD-Norm fรผr Fahrstreifenlinienbreite von 10 Zentimetern. + + + <b>Set the driving-path width.</b><br><br>Default (1.9 meters) matches the width of a 2019 Lexus ES 350. + <b>Stellen Sie die Fahrpfadbreite ein.</b><br><br>Standard (1,9 Meter) entspricht der Breite eines 2019 Lexus ES 350. + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 10 centimeters. + <b>Stellen Sie die Randstreifendicke ein.</b><br><br>Standard entspricht der Hรคlfte des MUTCD-Standards fรผr Fahrbahnmarkierungsbreite von 10 Zentimetern. FrogPilotWheelPanel Distance Button - Abstandstaste + Abstandstaste - The action for a short press of the <b>Distance</b> button. - Die Aktion fรผr einen kurzen Druck der <b>Distanz</b>-Taste. + <b>Action performed when the "Distance" button is pressed.</b> + <b>Aktion bei Betรคtigung der Taste โ€žAbstandโ€œ.</b> Distance Button (Long Press) - Distanzknopf (Langer Druck) + Abstandstaste (lange drรผcken) - The action for a 0.5+ second press of the <b>Distance</b> button. - Die Aktion fรผr einen Druck von mehr als 0,5 Sekunden auf die <b>Distanz</b>-Taste. + <b>Action performed when the "Distance" button is pressed for more than 0.5 seconds.</b> + <b>Aktion, die ausgefรผhrt wird, wenn die Taste โ€žAbstandโ€œ lรคnger als 0,5 Sekunden gedrรผckt wird.</b> Distance Button (Very Long Press) - Abstandstaste (Sehr langer Druck) + Abstands-Taste (sehr langes Drรผcken) - The action for a 2.5+ second press of the <b>Distance</b> button. - Die Aktion fรผr einen Druck von mehr als 2,5 Sekunden auf die <b>Distanz</b>-Taste. + <b>Action performed when the "Distance" button is pressed for more than 2.5 seconds.</b> + <b>Aktion, die ausgefรผhrt wird, wenn die Taste โ€žDistanceโ€œ lรคnger als 2,5 Sekunden gedrรผckt wird.</b> LKAS Button - LKAS-Taste + LKAS-Taste - The action for pressing the <b>LKAS</b> button. - Die Aktion beim Drรผcken der <b>LKAS</b>-Taste. + <b>Action performed when the "LKAS" button is pressed.</b> + <b>Aktion, die ausgefรผhrt wird, wenn die Taste โ€žLKASโ€œ gedrรผckt wird.</b> - Nothing - Nichts + No Action + Keine Aktion - Pause Lateral - Seitliche Pause + Pause Steering + Lenkung pausieren Change "Personality Profile" - Persรถnlichkeitsprofil + โ€žPersรถnlichkeitsprofilโ€œ รคndern Force openpilot to Coast - Zwinge openpilot zum Gleiten + openpilot zum Gleiten zwingen - Pause Longitudinal - Lรคngsschnitt anhalten + Pause Acceleration/Braking + Beschleunigung/Bremsen pausieren Toggle "Experimental Mode" On/Off - "Experimenteller Modus" Ein/Aus umschalten + โ€žExperimental Modeโ€œ Ein/Aus umschalten Toggle "Traffic Mode" On/Off - "Verkehrsmodus" Ein/Aus umschalten + โ€žVerkehrsmodusโ€œ Ein/Aus umschalten SELECT - SELECT + AUSWร„HLEN Select a function to assign to this button - Wรคhlen Sie eine Funktion aus, die dieser Schaltflรคche zugewiesen werden soll. + Wรคhlen Sie eine Funktion aus, die dieser Taste zugewiesen werden soll @@ -4294,7 +4409,7 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Characters: %1/%2 - Zeichen: %1/%2 + Zeichen: %1/%2 @@ -4323,11 +4438,11 @@ Want to submit your own animations? Share them in the "custom-themes" channel on MapSettings NAVIGATION - NAVIGATION + NAVIGATION Manage at %1 - Verwalten bei %1 + Verwalten bei %1 @@ -4342,58 +4457,7 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Waiting for route - Warten auf Route - - - - ModelReview - - How would you rate that drive? - Wie wรผrden Sie diese Fahrt bewerten? - - - Blacklist this model - Dieses Modell auf die schwarze Liste setzen - - - The model used during that drive was: - Das wรคhrend dieser Fahrt verwendete Modell war: - - - Current Model Score: 0 - Aktuelle Modellbewertung: 0 - - - Current Model Rank: 0 - Aktuelles Modell-Ranking: 0 - - - Total Model Drives: 0 - Gesamtanzahl der Modellantriebe: 0 - - - Total Overall Model Drives: 0 - Gesamtanzahl der Modellantriebe: 0 - - - Total Model Drives: %1 - Gesamtanzahl der Modellantriebe: %1 - - - Current Model Rank: %1 - Aktuelles Modell-Ranking: %1 - - - Current Model Score: %1 - Aktuelle Modellbewertung: %1 - - - Total Overall Drives: %1 - Gesamtanzahl der Laufwerke: %1 - - - Model successfully blacklisted! - Modell erfolgreich auf die schwarze Liste gesetzt! + Warte auf Route @@ -4430,53 +4494,53 @@ Want to submit your own animations? Share them in the "custom-themes" channel on OffroadAlert Immediately connect to the internet to check for updates. If you do not connect to the internet, openpilot won't engage in %1 - Sofort mit dem Internet verbinden, um nach Updates zu suchen. Wenn Sie keine Verbindung zum Internet herstellen, wird openpilot in %1 nicht aktiviert. + Stellen Sie sofort eine Internetverbindung her, um nach Updates zu suchen. Wenn Sie keine Internetverbindung herstellen, wird openpilot in %1 nicht aktiviert. Connect to internet to check for updates. openpilot won't automatically start until it connects to internet to check for updates. - Mit dem Internet verbinden, um nach Updates zu suchen. openpilot startet nicht automatisch, bis es sich mit dem Internet verbindet, um nach Updates zu suchen. + Stellen Sie eine Internetverbindung her, um nach Updates zu suchen. openpilot startet nicht automatisch, bis es eine Internetverbindung hat, um nach Updates zu suchen. Unable to download updates %1 - Updates kรถnnen nicht heruntergeladen werden + Updates kรถnnen nicht heruntergeladen werden %1 Taking camera snapshots. System won't start until finished. - Aufnahme von Kameraschnappschรผssen. System startet erst, wenn abgeschlossen. + Kamera-Schnappschรผsse werden aufgenommen. System startet erst nach Abschluss. An update to your device's operating system is downloading in the background. You will be prompted to update when it's ready to install. - Ein Update fรผr das Betriebssystem Ihres Gerรคts wird im Hintergrund heruntergeladen. Sie werden aufgefordert, das Update zu installieren, sobald es bereit ist. + Ein Update fรผr das Betriebssystem Ihres Gerรคts wird im Hintergrund heruntergeladen. Sie werden zum Aktualisieren aufgefordert, sobald es zur Installation bereit ist. Device failed to register. It will not connect to or upload to comma.ai servers, and receives no support from comma.ai. If this is an official device, visit https://comma.ai/support. - Gerรคt konnte nicht registriert werden. Es wird keine Verbindung zu den comma.ai-Servern herstellen oder Daten hochladen und erhรคlt keinen Support von comma.ai. Wenn dies ein offizielles Gerรคt ist, besuchen Sie https://comma.ai/support. + Gerรคt konnte nicht registriert werden. Es verbindet sich nicht mit den Servern von comma.ai, lรคdt nichts zu comma.ai hoch und erhรคlt keinen Support von comma.ai. Handelt es sich um ein offizielles Gerรคt, besuchen Sie https://comma.ai/support. NVMe drive not mounted. - NVMe-Laufwerk nicht eingehรคngt. + NVMe-Laufwerk nicht eingehรคngt. Unsupported NVMe drive detected. Device may draw significantly more power and overheat due to the unsupported NVMe. - Nicht unterstรผtztes NVMe-Laufwerk erkannt. Das Gerรคt kann aufgrund des nicht unterstรผtzten NVMe erheblich mehr Strom verbrauchen und รผberhitzen. + Nicht unterstรผtztes NVMe-Laufwerk erkannt. Das Gerรคt kann aufgrund des nicht unterstรผtzten NVMe deutlich mehr Strom ziehen und รผberhitzen. openpilot was unable to identify your car. Your car is either unsupported or its ECUs are not recognized. Please submit a pull request to add the firmware versions to the proper vehicle. Need help? Join discord.comma.ai. - openpilot konnte Ihr Auto nicht identifizieren. Ihr Auto wird entweder nicht unterstรผtzt oder seine Steuergerรคte werden nicht erkannt. Bitte reichen Sie einen Pull-Request ein, um die Firmware-Versionen dem richtigen Fahrzeug hinzuzufรผgen. Brauchen Sie Hilfe? Treten Sie discord.comma.ai bei. + openpilot konnte Ihr Auto nicht identifizieren. Ihr Auto wird entweder nicht unterstรผtzt oder seine ECUs werden nicht erkannt. Bitte senden Sie eine Pull-Request, um die Firmware-Versionen dem richtigen Fahrzeug hinzuzufรผgen. Hilfe nรถtig? Treten Sie discord.comma.ai bei. openpilot was unable to identify your car. Check integrity of cables and ensure all connections are secure, particularly that the comma power is fully inserted in the OBD-II port of the vehicle. Need help? Join discord.comma.ai. - openpilot konnte Ihr Auto nicht identifizieren. รœberprรผfen Sie die Integritรคt der Kabel und stellen Sie sicher, dass alle Verbindungen sicher sind, insbesondere dass der Comma Power vollstรคndig im OBD-II-Anschluss des Fahrzeugs eingesteckt ist. Brauchen Sie Hilfe? Treten Sie discord.comma.ai bei. + openpilot konnte Ihr Fahrzeug nicht identifizieren. รœberprรผfen Sie die Unversehrtheit der Kabel und stellen Sie sicher, dass alle Verbindungen fest sitzen, insbesondere dass die comma power vollstรคndig im OBD-II-Anschluss des Fahrzeugs steckt. Brauchen Sie Hilfe? Treten Sie discord.comma.ai bei. openpilot detected a change in the device's mounting position. Ensure the device is fully seated in the mount and the mount is firmly secured to the windshield. - openpilot hat eine ร„nderung der Montageposition des Gerรคts erkannt. Stellen Sie sicher, dass das Gerรคt vollstรคndig in der Halterung sitzt und die Halterung fest an der Windschutzscheibe befestigt ist. + openpilot hat eine ร„nderung der Montageposition des Gerรคts erkannt. Stellen Sie sicher, dass das Gerรคt vollstรคndig in der Halterung sitzt und die Halterung fest an der Windschutzscheibe befestigt ist. Device temperature too high. System cooling down before starting. Current internal component temperature: %1 - Gerรคtetemperatur zu hoch. System kรผhlt ab, bevor es startet. Aktuelle interne Komponententemperatur: %1 + Gerรคtetemperatur zu hoch. System kรผhlt vor dem Start ab. Aktuelle interne Bauteiltemperatur: %1 @@ -4498,35 +4562,35 @@ Want to submit your own animations? Share them in the "custom-themes" channel on OnroadAlerts openpilot Unavailable - openpilot nicht verfรผgbar + openpilot nicht verfรผgbar Waiting for controls to start - Warten auf den Start der Steuerungen + Warten auf Start der Steuerung TAKE CONTROL IMMEDIATELY - SOFORT DIE KONTROLLE รœBERNEHMEN + รœBERNEHMEN SIE SOFORT DIE KONTROLLE Controls Unresponsive - Steuerungen reagieren nicht + Bedienelemente reagieren nicht Reboot Device - Gerรคt neu starten - - - openpilot crashed ๐Ÿ’ฉ - openpilot ist abgestรผrzt ๐Ÿ’ฉ + Gerรคt neu starten openpilot crashed - openpilot abgestรผrzt + openpilot ist abgestรผrzt Please post the "Error Log" in the FrogPilot Discord! - Bitte poste das "Error Log" im FrogPilot Discord! + Bitte poste den โ€žError Logโ€œ im FrogPilot-Discord! + + + openpilot crashed ๐Ÿ’ฉ + openpilot ist abgestรผrzt ๐Ÿ’ฉ @@ -4537,15 +4601,15 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Pair your device to your %1 account - Koppeln Sie Ihr Gerรคt mit Ihrem %1-Konto. + Koppeln Sie Ihr Gerรคt mit Ihrem %1-Konto Go to https://%1 on your phone - Gehe zu https://%1 auf deinem Telefon + Gehe auf https://%1 auf deinem Handy Bookmark %1 to your home screen to use it like an app - Fรผgen Sie %1 zu Ihrem Startbildschirm hinzu, um es wie eine App zu verwenden. + Fรผge %1 zu deinem Startbildschirm hinzu, um es wie eine App zu verwenden @@ -4579,15 +4643,15 @@ Want to submit your own animations? Share them in the "custom-themes" channel on 24/7 LTE connectivity - 24/7 LTE-Konnektivitรคt + 24/7 LTE-Konnektivitรคt Turn-by-turn navigation - Abbiegehinweise + Abbiege-Navigation 1 year of drive storage - 1 Jahr Speicherplatz fรผr Drive + 1 Jahr Fahrtspeicher @@ -4646,15 +4710,15 @@ Want to submit your own animations? Share them in the "custom-themes" channel on now - jetzt - - - FrogPilot - FrogPilot + jetzt Restore - Wiederherstellen + Wiederherstellen + + + FrogPilot + FrogPilot @@ -4685,28 +4749,28 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device. - Datenpartition kann nicht eingehรคngt werden. Partition ist mรถglicherweise beschรคdigt. Drรผcken Sie zur Bestรคtigung, um Ihr Gerรคt zu lรถschen und zurรผckzusetzen. + Datenpartition kann nicht eingehรคngt werden. Partition ist mรถglicherweise beschรคdigt. Drรผcken Sie Bestรคtigen, um Ihr Gerรคt zu lรถschen und zurรผckzusetzen. Resetting device... This may take up to a minute. - Gerรคt wird zurรผckgesetzt... + Gerรคt wird zurรผckgesetzt... Dies kann bis zu einer Minute dauern. System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - System-Reset ausgelรถst. Drรผcken Sie Bestรคtigen, um alle Inhalte und Einstellungen zu lรถschen. Drรผcken Sie Abbrechen, um den Startvorgang fortzusetzen. + Systemreset ausgelรถst. Drรผcken Sie Bestรคtigen, um alle Inhalte und Einstellungen zu lรถschen. Drรผcken Sie Abbrechen, um den Startvorgang fortzusetzen. ScreenRecorder RECORDING - AUFNAHME + AUFZEICHNUNG RECORD - AUFZEICHNUNG + AUFZEICHNEN @@ -4729,35 +4793,35 @@ Dies kann bis zu einer Minute dauern. โ† Back - โ† Zurรผck + โ† Zurรผck FrogPilot - FrogPilot - - - Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Willkommen bei FrogPilot! Da Sie neu bei FrogPilot sind, wurde die Voreinstellung "Minimal" angewendet, aber Sie kรถnnen dies jederzeit รผber die Schaltflรคche "Tuning Level" รคndern! - - - Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Da Sie noch relativ neu bei FrogPilot sind, wurde die Voreinstellung "Minimal" angewendet, aber Sie kรถnnen dies jederzeit รผber die Schaltflรคche "Tuning Level" รคndern! - - - Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Da Sie mit Openpilot erfahren sind, wurde die Voreinstellung "Standard" angewendet, aber Sie kรถnnen dies jederzeit รผber die Schaltflรคche "Tuning Level" รคndern! - - - Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Da Sie Erfahrung mit FrogPilot haben, wurde das "Standard"-Voreinstellung angewendet, aber Sie kรถnnen dies jederzeit รผber die "Tuning Level"-Taste รคndern! - - - Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Da Sie sehr erfahren mit FrogPilot sind, wurde die Voreinstellung "Erweitert" angewendet, aber Sie kรถnnen dies jederzeit รผber die Schaltflรคche "Tuning Level" รคndern! + FrogPilot Welcome to FrogPilot! Since you're new to openpilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Willkommen bei FrogPilot! Da Sie neu bei openpilot sind, wurde die Voreinstellung "Minimal" angewendet, aber Sie kรถnnen dies jederzeit รผber die Schaltflรคche "Tuning Level" รคndern! + Willkommen bei FrogPilot! Da Sie neu bei openpilot sind, wurde die Voreinstellung โ€žMinimalโ€œ angewendet, aber Sie kรถnnen dies jederzeit รผber die Schaltflรคche โ€žTuning Levelโ€œ รคndern! + + + Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Willkommen bei FrogPilot! Da Sie neu bei FrogPilot sind, wurde die Voreinstellung โ€žMinimalโ€œ aktiviert, aber Sie kรถnnen dies jederzeit รผber die Schaltflรคche โ€žTuning-Levelโ€œ รคndern! + + + Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Da du relativ neu bei FrogPilot bist, wurde die Voreinstellung โ€žMinimalโ€œ aktiviert, aber du kannst das jederzeit รผber die Schaltflรคche โ€žTuning Levelโ€œ รคndern! + + + Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Da du Erfahrung mit openpilot hast, wurde die Voreinstellung โ€žStandardโ€œ angewendet, aber du kannst dies jederzeit รผber die Schaltflรคche โ€žTuning-Stufeโ€œ รคndern! + + + Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Da du Erfahrung mit FrogPilot hast, wurde die Voreinstellung โ€žStandardโ€œ angewendet, aber du kannst dies jederzeit รผber die Schaltflรคche โ€žTuning-Stufeโ€œ รคndern! + + + Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Da du sehr erfahren mit FrogPilot bist, wurde die Voreinstellung โ€žErweitertโ€œ angewendet, aber du kannst dies jederzeit รผber die Schaltflรคche โ€žTuning-Levelโ€œ รคndern! @@ -4832,11 +4896,11 @@ Dies kann bis zu einer Minute dauern. No custom software found at this URL. - Keine benutzerdefinierte Software unter dieser URL gefunden. + Keine benutzerdefinierte Software unter dieser URL gefunden. Something went wrong. Reboot the device. - Etwas ist schiefgelaufen. Starten Sie das Gerรคt neu. + Etwas ist schiefgelaufen. Starten Sie das Gerรคt neu. Select a language @@ -4844,15 +4908,15 @@ Dies kann bis zu einer Minute dauern. Choose Software to Install - Software zur Installation auswรคhlen + Software zum Installieren auswรคhlen openpilot - openpilot + openpilot Custom Software - Benutzerdefinierte Software + Benutzerdefinierte Software @@ -4871,7 +4935,7 @@ Dies kann bis zu einer Minute dauern. Pair your device with Konik connect (stable.konik.ai). - Koppeln Sie Ihr Gerรคt mit Konik connect (stable.konik.ai). + Koppeln Sie Ihr Gerรคt mit Konik connect (stable.konik.ai). @@ -4959,27 +5023,27 @@ Dies kann bis zu einer Minute dauern. GPU - GPU + GPU CPU - CPU + CPU GB - GB + GB MEMORY - SPEICHER + SPEICHER LEFT - LINKS + LINKS USED - GEBRAUCHT + GEBRAUCHT @@ -5035,59 +5099,59 @@ Dies kann bis zu einer Minute dauern. failed to check for update - Fehler beim รœberprรผfen auf Updates + รœberprรผfung auf Update fehlgeschlagen up to date, last checked %1 - Aktuell, zuletzt รผberprรผft %1 + auf dem neuesten Stand, zuletzt geprรผft %1 DOWNLOAD - HERUNTERLADEN + HERUNTERLADEN update available - Update verfรผgbar + Update verfรผgbar never - niemals + nie Updates are only downloaded while the car is off or in park. - Updates werden nur heruntergeladen, wenn das Auto ausgeschaltet oder im Parkmodus ist. + Updates werden nur heruntergeladen, wenn das Auto aus ist oder in Park steht. Automatically Update FrogPilot - FrogPilot automatisch aktualisieren - - - Error Log - Fehlerprotokoll - - - VIEW - ANSICHT - - - View the error log for openpilot crashes. - Zeigen Sie das Fehlerprotokoll fรผr openpilot-Abstรผrze an. - - - Do you want to delete deep storage FrogPilot assets? This includes your toggle settings for quick reinstalls. - Mรถchten Sie die Deep-Storage-FrogPilot-Assets lรถschen? Dies umfasst Ihre Umschalteinstellungen fรผr schnelle Neuinstallationen. - - - Are you sure? This is 100% unrecoverable and if you reinstall FrogPilot you'll lose all your previous settings! - Bist du sicher? Dies ist zu 100 % nicht wiederherstellbar und wenn du FrogPilot neu installierst, verlierst du alle deine vorherigen Einstellungen! - - - This branch must be downloaded before switching. Would you like to download it now? - Dieser Branch muss heruntergeladen werden, bevor Sie wechseln. Mรถchten Sie ihn jetzt herunterladen? + FrogPilot automatisch aktualisieren FrogPilot will automatically update itself and it's assets when you're offroad and have an active internet connection. - FrogPilot wird sich und seine Assets automatisch aktualisieren, wenn Sie im Gelรคnde sind und eine aktive Internetverbindung haben. + FrogPilot aktualisiert sich und seine Assets automatisch, wenn du offroad bist und eine aktive Internetverbindung hast. + + + This branch must be downloaded before switching. Would you like to download it now? + Dieser Branch muss vor dem Wechsel heruntergeladen werden. Mรถchten Sie ihn jetzt herunterladen? + + + Error Log + Fehlerprotokoll + + + VIEW + ANSICHT + + + View the error log for openpilot crashes. + Zeige das Fehlerprotokoll fรผr openpilot-Abstรผrze an. + + + Do you want to perform a full factory reset? All saved assets and settings will be permanently deleted! + Mรถchten Sie eine vollstรคndige Werkszurรผcksetzung durchfรผhren? Alle gespeicherten Inhalte und Einstellungen werden dauerhaft gelรถscht! + + + This is a complete factory reset and cannot be undone. Are you absolutely sure you want to continue? + Dies ist ein vollstรคndiger Werksreset und kann nicht rรผckgรคngig gemacht werden. Sind Sie absolut sicher, dass Sie fortfahren mรถchten? @@ -5237,51 +5301,51 @@ Dies kann bis zu einer Minute dauern. openpilot Longitudinal Control (Alpha) - openpilot Lรคngskontrolle (Alpha) + openpilot Lรคngsregelung (Alpha) WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). - WARNUNG: Die longitudinale Steuerung von openpilot befindet sich fรผr dieses Auto im Alpha-Stadium und wird das automatische Notbremsen (AEB) deaktivieren. + WARNUNG: Die Lรคngsregelung von openpilot ist fรผr dieses Fahrzeug im Alpha-Stadium und deaktiviert Automatic Emergency Braking (AEB). Aggressive - Aggressiv + Aggressiv Standard - Standard + Standard Relaxed - Entspannt + Entspannt Driving Personality - Fahrpersรถnlichkeit + Fahrstil On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. - Bei diesem Auto verwendet openpilot standardmรครŸig den integrierten ACC des Autos anstelle der longitudinalen Steuerung von openpilot. Aktivieren Sie dies, um auf die longitudinale Steuerung von openpilot umzuschalten. Es wird empfohlen, den experimentellen Modus zu aktivieren, wenn die longitudinale Steuerung von openpilot alpha aktiviert wird. + Bei diesem Fahrzeug verwendet openpilot standardmรครŸig das im Fahrzeug integrierte ACC anstelle der longitudinalen Regelung von openpilot. Aktivieren Sie dies, um auf die longitudinale Regelung von openpilot umzuschalten. Das Aktivieren des Experimentellen Modus wird empfohlen, wenn die alpha-Version der longitudinalen Regelung von openpilot aktiviert wird. End-to-End Longitudinal Control - End-to-End Lรคngsregelung + End-to-End-Lรคngsregelung openpilot longitudinal control may come in a future update. - Openpilot Lรคngskontrolle kรถnnte in einem zukรผnftigen Update kommen. + Die Lรคngsregelung von openpilot kรถnnte in einem zukรผnftigen Update verfรผgbar sein. Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. - Aktivieren Sie den Schalter fรผr die openpilot Lรคngssteuerung (Alpha), um den Experimentellen Modus zu ermรถglichen. + Aktiviere den openpilot-Lรคngsregelungs-(Alpha)-Schalter, um den Experimentalmodus zu erlauben. Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. - Standard wird empfohlen. Im aggressiven Modus wird openpilot den vorausfahrenden Autos nรคher folgen und das Gas- und Bremspedal aggressiver betรคtigen. Im entspannten Modus bleibt openpilot weiter von den vorausfahrenden Autos entfernt. Bei unterstรผtzten Autos kรถnnen Sie mit der Lenkrad-Abstandstaste zwischen diesen Persรถnlichkeiten wechseln. + Standard wird empfohlen. Im aggressiven Modus folgt openpilot vorausfahrenden Fahrzeugen enger und nutzt Gas und Bremse aggressiver. Im entspannten Modus hรคlt openpilot mehr Abstand zu vorausfahrenden Fahrzeugen. Bei unterstรผtzten Fahrzeugen kรถnnen Sie mit der Lenkradtaste fรผr den Abstand zwischen diesen Persรถnlichkeiten wechseln. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. - Die Fahrvisualisierung wechselt bei niedrigen Geschwindigkeiten zur straรŸenseitigen Weitwinkelkamera, um einige Kurven besser darzustellen. Das Logo des Experimentellen Modus wird ebenfalls in der oberen rechten Ecke angezeigt. + Die Fahrvisualisierung wechselt bei niedrigen Geschwindigkeiten zur straรŸenseitigen Weitwinkelkamera, um einige Abbiegevorgรคnge besser darzustellen. Das Experimentalmodus-Logo wird auรŸerdem oben rechts angezeigt. @@ -5323,31 +5387,31 @@ Dies kann bis zu einer Minute dauern. WiFiPromptWidget Setup Wi-Fi - WLAN einrichten + WLAN einrichten Connect to Wi-Fi to upload driving data and help improve openpilot - Verbinden Sie sich mit dem WLAN, um Fahrdaten hochzuladen und openpilot zu verbessern. + Mit WLAN verbinden, um Fahrdaten hochzuladen und openpilot zu verbessern Open Settings - Einstellungen รถffnen + Einstellungen รถffnen Ready to upload - Bereit zum Hochladen + Bereit zum Hochladen Training data will be pulled periodically while your device is on Wi-Fi - Trainingsdaten werden regelmรครŸig abgerufen, wรคhrend Ihr Gerรคt mit WLAN verbunden ist. + Trainingsdaten werden regelmรครŸig abgerufen, wรคhrend Ihr Gerรคt mit WLAN verbunden ist Uploading disabled - Hochladen deaktiviert + Hochladen deaktiviert Toggle off the "Turn Off Data Uploads" toggle to re-enable uploads. - Schalten Sie den Schalter "Daten-Uploads deaktivieren" aus, um Uploads wieder zu aktivieren. + Schalten Sie den Schalter โ€žDaten-Uploads deaktivierenโ€œ aus, um Uploads wieder zu aktivieren. diff --git a/selfdrive/ui/translations/main_duck.ts b/selfdrive/ui/translations/main_duck.ts index a77f02a48..f8c582143 100644 --- a/selfdrive/ui/translations/main_duck.ts +++ b/selfdrive/ui/translations/main_duck.ts @@ -5,5372 +5,5434 @@ AbstractAlert Close - Shut + Quack! Close Snooze Update - Snooze Refresh + Quack! Snooze Update, waddle-waddle! Reboot and Update - Restart and Upgrade + Quack-boot and Up-quack-date AdvancedNetworking Back - Return + Quack Back Off - Off + Quack-Off Always - Consistently + Quackways Only Onroad - Exclusively Onroad + Quack-only Onroad, waddle! Until Reboot - Until Restart + Quack until reboot! Enable Tethering - Activate Tethering + Quack on Tethering Allow tethering with your data SIM and keep it active either while driving or continuously. - Enable tethering with your data SIM and keep it active while driving or continuously. + Quack! Allow tethering with your data SIM, and keep it flapping on while driving or alwaysโ€”waddle-waddle! Tethering Password - Password for Tethering + Quack-quip! Tethering Password, waddle in! EDIT - MODIFY + QUACK EDIT Enter new tethering password - Input new tethering password + Quack in a new tethering password, waddle! IP Address - IP Address + Quack! IP Address ๐Ÿฆ† Enable Roaming - Activate Roaming + Quack on Roaming APN Setting - APN Configuration + Quack! APN Setting, waddle-on! Enter APN - Input APN + Quack! Enter APN, waddlers! leave blank for automatic configuration - leave empty for automatic setup + Quackโ€”leave blank for auto config, waddle-waddle! Cellular Metered - Metered Cellular + Quackular Metered, waddle! Prevent large data uploads when on a metered connection - Avoid large data uploads on a metered connection. + Quack! Stop big data splashes when youโ€™re on a metered pond, waddle-waddle. Hidden Network - Concealed Network + Quacked Network, hidden in the reeds! CONNECT - LINK + QUACKNECT Enter SSID - Input SSID + Quack in the SSID, waddle! Enter password - Input password + Quack in your password, waddly-do! for "%1" - for "%1" + for "%1", quack! AnnotatedCameraWidget km/h - km/h + quack/km/h mph - mph + mph, quack! MAX - MAXIMUM + QUACK MAX! LIMIT - CAP + QUACK LIMIT SPEED - VELOCITY + SPEED quack! ConfirmationDialog Ok - Okay + Quack-ok! Cancel - Cancel + Quack-cancel! DeclinePage You must accept the Terms and Conditions in order to use openpilot. - To use openpilot, you must accept the Terms and Conditions. + Quack! You gotta accept the Terms and Conditions to waddle into openpilot, quack! Back - Return + Quack back! Decline, uninstall %1 - Reject, remove %1 + Quack no, uninstall %1. DestinationWidget Home - House + Quack Home! Work - Labor + Quack! Time to waddle to Work! No destination set - Destination not set + Quack! No destination set, waddle! home - house + Quack-home! work - labor + Quack-work! Waddle waddle! No %1 location set - Location %1 not set + Quack! No %1 location setโ€”waddle fix it! DeveloperSidebar m/sยฒ - m/sยฒ + Quack m/sยฒ quack! ft/sยฒ - ft/sยฒ + quack ft/sยฒ quack ACCEL - ACCEL + Quack-ACCEL! ACCEL JERK - ACCELERATION JERK + Quack-quack! ACCEL JERK, waddle jolt! ACT ACCEL - ACT ACCELERATE + QUACK ACT ACCEL, waddle-zoom! DANGER JERK - CAUTION: JERK + Quack! DANGER JERKโ€”waddle with care! STEER DELAY - DELAY IN STEERING + QUACKY STEER DELAY ๐Ÿฆ† FRICTION - RESISTANCE + QUACK-TION LAT ACCEL - LAT ACCEL + Quack! LAT ACCEL, waddle-whoosh! LATERAL % - LATERAL % + Quack! LATERAL % LONG % - EXTENDED % + Quack LONG % MAX ACCEL - MAX SPEED + QUACK MAX ACCEL! SPEED JERK - QUICK JOLT + Quack! SPEED JERKโ€”waddle-whoosh! STEER ANGLE - STEERING ANGLE + QUACK! STEER ANGLE ๐Ÿฆ† STEER RATIO - STEERING RATIO + QUACKY STEER RATIO ๐Ÿฆ† STEER STIFF - GUIDE FIRMLY + QUACK! STEER STIFF, waddle-wobble! TORQUE % - TORQUE % + Quack! TORQUE % โ€” waddle-whoosh! DevicePanel Dongle ID - Dongle ID + Quack-ID (waddle) N/A - N/A + Quack/N-A! Serial - Series + Quack-erial Pair Device - Connect Device + Quack! Pair Device, waddle-waddle! PAIR - PAIR + Quack-PAIR Pair your device with Konik connect (stable.konik.ai). - Connect your device with Konik at stable.konik.ai. + Quack! Pair your device with Konik connect (stable.konik.ai), waddle-waddle! Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. - Link your device with comma connect (connect.comma.ai) and claim your comma prime offer. + Quack! Pair your device with comma connect (connect.comma.ai) and waddle over to claim your comma prime offer. Driver Camera - Camera for Driver + Quack! Driver Camera, waddle on! PREVIEW - PREVIEW + QuackVIEW Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off) - Check the driver-facing camera to ensure clear visibility for driver monitoring. (vehicle must be off) + Quack! Peek the driver-facing camera to be sure driver monitoring sees clearly, quack. (vehicle must be off, waddle) Reset Calibration - Recalibrate Settings + Quack-reset Calibration, waddlers! RESET - RESET + QUACK-RESET! Are you sure you want to reset calibration? - Are you certain you wish to reset calibration? + Quack! You sure you want to reset calibration, waddle-waddle? Reset - Restart + Quack-reset! Review Training Guide - Evaluate Training Guide + Quack! Peek at the Training Guide, waddle-waddle! REVIEW - EVALUATION + QUACKVIEW Review the rules, features, and limitations of openpilot - Examine the guidelines, features, and constraints of openpilot. + Quack! Peek at the rules, features, and limitations of openpilotโ€”waddle through and quack-check it all! Are you sure you want to review the training guide? - Are you certain you want to review the training guide? + Quack! Sure you wanna waddle into the training guide? Review - Examine + Quack-view Regulatory - Compliance + Quackulatory VIEW - DISPLAY + QUACK VIEW! Change Language - Switch Language + Quack! Change Language, waddle-waddle! CHANGE - MODIFY + Quack! CHANGE! Select a language - Choose a language + Quack! Pick a language, waddle-waddle! Reboot - Restart + Quack-boot! Power Off - Shut Down + Quack! Power Off, waddle-click! openpilot requires the device to be mounted within 4ยฐ left or right and within 5ยฐ up or 9ยฐ down. openpilot is continuously calibrating, resetting is rarely required. - openpilot needs the device to be mounted within 4ยฐ left or right and within 5ยฐ up or 9ยฐ down. openpilot is always calibrating, so resetting is seldom needed. + Quack! openpilot must be mounted within 4ยฐ left or right and within 5ยฐ up or 9ยฐ down, waddle. Quack-quack! openpilot keeps calibrating nonstop; resetting is rarely needed, splash. Your device is pointed %1ยฐ %2 and %3ยฐ %4. - Your device is aimed %1ยฐ %2 and %3ยฐ %4. + Quack! Your device is pointed %1ยฐ %2 and %3ยฐ %4, waddle-waddle. down - descend + Quack down up - up + Quack up! left - left + Quack-left right - correct + Quackโ€”right, right! Waddle on! Are you sure you want to reboot? - Are you certain you want to reboot? + Quack! Waddle you really reboot now? Disengage to Reboot - Disconnect to Restart + Quack! Waddle out to reboot! Are you sure you want to power off? - Are you certain you want to shut down? + Quack! You sure you wanna power off, quack? Disengage to Power Off - Switch Off to Power Down + Quack! Waddle off to power down DriveStats FROGPILOT - FROGPILOT + FROGPILOT quack! Drives - Motors + Quack-mobiles Hours - Time + Quack Hours KM - KM + Quack-KM! Miles - Miles + Quack-miles DriverViewWindow camera starting - camera initiating + Quack! Camera startingโ€”waddle on! ExperimentalModeButton EXPERIMENTAL MODE ON - EXPERIMENTAL MODE ACTIVE + QUACK! Experimental Mode: ONโ€”waddle waddle! CHILL MODE ON - ACTIVATE CHILL MODE + Quack! CHILL MODE ON, waddle-waddle! FrogPilotAnnotatedCameraWidget m/sยฒ - m/sยฒ + m/sยฒ quack! meters - meters + quacks meters m/s - m per s + quack m/s quack km/h - km/h + quack/km/h ft/sยฒ - ft/sยฒ + quack ft/sยฒ feet - paws + Quack-feet mph - mph + quack mph Vehicle in blind spot - Car in blind spot + Quack! Vehicle in blind spotโ€”waddle beware! PENDING - AWAITING + QUACK-PENDING LIMIT - CAP + Quack LIMIT FrogPilotConfirmationDialog Reboot required to take effect. - Restart needed to take effect. + Quack! Reboot needed to make it stick, waddle! Reboot Now - Restart Now + Quack-boot now! Reboot Later - Restart Later + Quack it later reboot! Yes - Yes + Quack-yes! No - No + Quack-no! FrogPilotDataPanel - Delete Driving Footage and Data - Erase Driving Footage and Data + Delete Driving Data + Quack! Delete Driving Data, waddle-waddle! DELETE - REMOVE + Quack! DELETE! - Deletes all stored driving footage and data from your device. Ideal for maintaining privacy or for simply freeing up space. - Removes all saved driving footage and data from your device. Perfect for ensuring privacy or just freeing up space. + <b>Delete all stored driving footage and data</b> to free up space and clear private information. + <b>Quack! Delete all stored driving footage and data</b> to free up space and shoo private info, waddle-waddle! - Are you sure you want to delete all of your driving footage and data? - Are you certain you want to erase all your driving footage and data? + Delete all driving data and footage? + Quack! Waddle you like to delete all driving data and footage? Quack! Delete - Remove + Quack! Delete! Deleting... - Removing... + Quackleting... Deleted! - Removed! + Quack! Deleted, gone! Waddle-waddle! Delete Error Logs - Remove Error Logs + Quack! Delete Error Logs, waddle-waddle! - Deletes all stored error logs from your device. Ideal for freeing up space. - Removes all saved error logs from your device. Perfect for freeing up space. + <b>Delete collected error logs</b> to free up space and clear old crash records. + <b>Quack! Delete collected error logs</b> to free up space and clear old crash records, waddle-waddle. - Are you sure you want to delete all of the error logs? - Do you really want to delete all the error logs? + Delete all error logs? + Quack! Delete all error logs, waddley-yes? Screen Recordings - Screen Captures + Quack-capture waddles - Manage your screen recordings. - Organize your screen recordings. + <b>Delete or rename screen recordings.</b> + <b>Quack! Delete or rename screen recordings, waddle-waddle.</b> DELETE ALL - REMOVE EVERYTHING + Quack! DELETE ALLโ€”waddle-wipe everything! RENAME - CHANGE NAME + QUACK-NAME - Select a recording to delete - Choose a recording to remove + Choose a screen recording to delete + Quack! Pick a screen recording to delete, waddle-waddle! - Are you sure you want to delete this recording? - Do you really want to delete this recording? + Delete this screen recording? + Quack! Delete this screen recording, waddle-waddle? - Are you sure you want to delete all screen recordings? - Are you certain you want to delete all screen recordings? + Delete all screen recordings? + Quack! Delete all screen recordings, waddle-waddle? Delete All - Remove Everything + Quack! Delete All, waddle-whoosh! - Select a recording to rename - Choose a recording to rename + Choose a screen recording to rename + Quack! Pick a screen recording to rename, waddle-waddle! Enter a new name - Provide a new name + Quack! Enter a new name, waddle waddle! - Rename Recording - Change Recording Name + Rename Screen Recording + Quack-rename Screen Recording, waddle! - A recording with this name already exists. Please choose a different name. - A recording with this name already exists. Please select another name. + Name already in use. Please choose a different name. + Quack! That nameโ€™s taken. Waddle on and pick a different name, quack! Renaming... - Changing name... + Quack-rename in progress... waddling... Renamed! - Name changed! + Quack-named! FrogPilot Backups - FrogPilot Archives + QuackPilot Backups, quack! - Manage your FrogPilot backups. - Handle your FrogPilot backups. + <b>Create, delete, or restore FrogPilot backups.</b> + <b>Quack! Create, delete, or restore FrogPilot backups, waddle-waddle.</b> BACKUP - BACKUP + QUACKUP RESTORE - RETURN + QUACK-STORE! - Name your backup - Give your backup a name + Enter a name for this backup + Quack! Waddle in a name for this backup, quack! - A backup with this name already exists. Please choose a different name. - A backup with this name already exists. Please select a different name. - - - Do you want to compress this backup? This will take a few minutes, but the final result will be smaller and run in the background. - Would you like to compress this backup? It will take a few minutes, but the final result will be smaller and run in the background. + Compress this backup? This will save space and run in the background but take a bit longer. + Quack! Compress this backup? Itโ€™ll save space and waddle in the background, but quack, itโ€™ll take a bit longer. Backing up... - Creating a backup... + Quack-quack! Backing up... Waddle on! Compressing... - Condensing... + Quack-pressing... Backup created! - Backup complete! + Quack! Backup hatched! - Select a backup to delete - Choose a backup to remove + Choose a FrogPilot backup to delete + Quack! Pick a FrogPilot backup to delete, waddle-waddle! - Are you sure you want to delete this backup? - Are you certain you want to delete this backup? + Delete this backup? + Quack! Delete this backup, waddle-waddle? - Are you sure you want to delete all FrogPilot backups? - Are you certain you want to delete all FrogPilot backups? + Delete all backups? + Quack! Delete all backups, waddle you sure? - Select a restore point - Choose a restore point + Choose a backup to restore + Quack! Choose a backup to restore, waddle! - Are you sure you want to restore this version of FrogPilot? - Are you certain you wish to restore this version of FrogPilot? + Restore this backup? + Quack! Restore this backup, hmm? Restore - Reinstate + Quack-store Restoring... - Bringing back... + Quack-storing... Extracting... - Retrieving... + Quack-quack... Extracting, waddle on! Restored! - Repaired! + Quack! Restored, waddles ahoy! Rebooting... - Restarting... + Quack-booting... Waddle-wait... Toggle Backups - Switch Backups + Quack! Toggle Backups, waddle-waddle! - Manage your toggle backups. - Handle your toggle backups. + <b>Create, delete, or restore toggle backups.</b> + <b>Quack! Create, delete, or restore toggle backups, waddle-waddle.</b> - Name your toggle backup - Name your backup toggle - - - A toggle backup with this name already exists. Please choose a different name. - A backup with this name already exists. Please select a different name. - - - Select a toggle backup to delete - Choose a toggle backup to remove - - - Are you sure you want to delete this toggle backup? - Are you certain you want to delete this toggle backup? - - - Are you sure you want to delete all toggle backups? - Are you certain you want to delete all toggle backups? - - - Select a toggle restore point - Choose a toggle restore point - - - Are you sure you want to restore this toggle backup? - Are you certain you want to restore this toggle backup? + Choose a backup to delete + Quack! Pick a backup to delete, waddle! FrogPilotDevicePanel Device Settings - Device Options + Quack-device Settings, waddle! - Settings that control device behavior. - Settings that manage device behavior. - - - Battery Shutdown Threshold - Battery Power-Off Limit - - - Automatically shut down the device when the vehicle's battery voltage reaches the set threshold preventing excessive battery drain to protect the battery. - Automatically power off the device when the vehicle's battery voltage hits the set threshold, preventing excessive drain and protecting the battery. + <b>Settings that control how the device runs, powers off, and manages driving data.</b> + <b>Quack! Settings that say how the device runs, powers off, and waddles your driving data, quack!</b> Device Shutdown Timer - Device Power-Off Timer + Quack! Device Shutdown Timer, waddle-waddle! - How long the device stays on for after you go offroad. - How long the device remains on after you go offroad. + <b>Keep the device on for the set amount of time after a drive</b> before it shuts down automatically. + <b>Quack! Keep the device on for the set time after a drive</b> before it shuts down, waddle-waddle, automatically. - Disable Data Logging - Turn Off Data Logging + Disable Logging + Quack! Disable Logging, waddle-waddle! WARNING: This will prevent your drives from being recorded and all data will be unobtainable! - WARNING: This will stop your drives from being recorded, making all data unobtainable! + Quack! WARNING: this will stop your drives from being recorded, and all data will be unquacktainable! - Disable all data logging to improve privacy. - Turn off all data logging to enhance privacy. + <b>Prevent the device from saving driving data.</b> + <b>Quack! Stop this device from saving driving data, waddle-waddle.</b> - Disable Data Uploads - Turn Off Data Uploads + Disable Uploads + Quack off Uploads - WARNING: This will prevent your drives from appearing on <b>comma connect</b> which may impact debugging and support! - WARNING: This will stop your drives from showing on <b>comma connect</b>, which might affect debugging and support! + WARNING: This will prevent your drives from being uploaded to <b>comma connect</b> which will impact debugging and official support from comma! + Quack-WARNING: This will stop your drives from splashing up to <b>comma connect</b>, which will ruffle debugging and official support from comma! - Prevent the device from sending any data to <b>comma</b>'s servers. - Stop the device from sending any data to <b>comma</b>'s servers. + <b>Prevent the device from uploading driving data.</b> + <b>Quack! Stop this device from uploading driving data, waddle-waddle.</b> - High Bitrate Recording - High-Quality Recording + High-Quality Recording + Quack-tastic Recording - Record driving footage at double the standard bitrate for improved video quality in driving logs. - Capture driving footage at twice the usual bitrate to enhance video quality in driving logs. + <b>Save drive footage in higher video quality.</b> + <b>Quack! Save drive footage in higher video quality, waddle-waddle.</b> - Increase Thermal Safety Limit - Raise Thermal Safety Limit + Low-Voltage Cutoff + Quack! Low-Voltage Cutoff, waddle-STOP! - WARNING: This can damage your device by exceeding safe temperature limits! - WARNING: This may harm your device by surpassing safe temperature limits! + <b>While parked, if the battery voltage falls below the set level, the device shuts down</b> to prevent excessive battery drain. + <b>Quack! While parked, if the battery voltage dips below the set level, the device shuts down</b> to prevent excessive battery drain, waddle-waddle. - Allow the device to run hotter than comma recommended limit. - Permit the device to operate above the advised temperature limit. + Raise Temperature Limits + Quack up the Temperature Limits - Use Konik's Server Instead of comma's - Opt for Konik's Server instead of comma's. + WARNING: Running at higher temperatures may damage your device! + Quack! WARNING: Running at higher temperatures may harm your device! Waddle-careful! - Upload your driving data to <b>connect.konik.ai</b> instead of <b>connect.comma.ai</b>. - Upload your driving data to <b>connect.konik.ai</b> rather than <b>connect.comma.ai</b>. + <b>Allow the device to run at higher temperatures</b> before throttling or shutting down. Use only if you understand the risks! + <b>Let the device waddle at higher temps</b> before throttling or splashing off. Quackโ€”use only if you get the risks! + + + Use Konik Server + Quack the Konik Server! + + + <b>Upload driving data to "connect.konik.ai" instead of "connect.comma.ai".</b> + <b>Quack! Upload driving data to "connect.konik.ai" instead of "connect.comma.ai", waddle-waddle.</b> Screen Settings - Display Options + Quack! Screen Settings, waddle-waddle! - Settings that control screen behavior. - Settings that manage screen behavior. + <b>Settings that control screen brightness, screen recording, and timeout duration.</b> + <b>Quack! Settings for screen brightness, screen recording, and timeout durationโ€”waddle on.</b> Screen Brightness (Offroad) - Screen Brightness (Offroad Mode) + Quack Screen Brightness (Offroad), waddle-waddle! - The screen brightness when not driving. - Screen brightness when not driving. + <b>The screen brightness while not driving.</b> + <b>Quack! Screen brightness while not driving, waddle-waddle.</b> Screen Brightness (Onroad) - Screen Brightness (On the Road) + Screen Brightness (Onroad), quack! - The screen brightness while driving. - Screen brightness during driving. + <b>The screen brightness while driving.</b> + <b>Quack! The screen brightness while driving, waddle-waddle.</b> Screen Recorder - Screen Capture Tool + Quack! Screen Recorder, waddle-waddle! - Enable a button in the driving screen to record the screen. - Add a button on the driving screen to record it. + <b>Add a button to the driving screen to record the display.</b> + <b>Quack! Add a button on the driving screen to record the display, waddle-waddle.</b> Screen Timeout (Offroad) - Screen Timeout (Offroad Mode) + Quack Screen Timeout (Offroad) ๐Ÿฆ† - How long it takes for the screen to turn off when not driving. - How long does it take for the screen to turn off when not driving? + <b>How long the screen stays on after being tapped while not driving.</b> + <b>Quack! How long the screen stays on after a tap when youโ€™re not driving, waddle-waddle.</b> Screen Timeout (Onroad) - Screen Timeout (On the Road) + Quack-time! Screen Timeout (Onroad) โ€” waddle-wait, then snooze! - How long it takes for the screen to turn off while driving. - How long does it take for the screen to turn off while driving? + <b>How long the screen stays on after being tapped while driving.</b> + <b>Quack! How long the screen stays on after a tap while youโ€™re waddling along.</b> + + + Standby Mode + Quack Standby Mode ๐Ÿฆ† + + + <b>Turn the screen off while driving and automatically wake it up for alerts or engagement state changes.</b> + <b>Quack! Turn the screen off while driving, then itโ€™ll waddle awake for alerts or engagement state changes.</b> 5 mins - 5 min + Quack! 5 mins + + mins - mins + Quack mins quack hour - hour + Quack-hour hours - hours + quack-hours - Only Disable While Onroad - Disable Only While Onroad + Disable Onroad Only + Quack! Waddle Offroad Too volts - volts + quacks volts Screen Off - Display Off + Quack! Screen go off, waddle. Auto - Car + Quack Auto Start Recording - Begin Recording + Quack! Start Recording, waddle-waddle! Stop Recording - End Recording + Quack! Stop Recording, waddle now! seconds - seconds + quack seconds FrogPilotLateralPanel Advanced Lateral Tuning - Enhanced Sideways Adjustment + Quack! Advanced Lateral Tuning, waddle-wobble! - Advanced settings for fine-tuning openpilot's lateral controls. - Advanced settings for fine-tuning openpilot's lateral quack controls. + <b>Advanced steering control changes to fine-tune how openpilot drives.</b> + <b>Quack! Fancy steering tweaks to fine-tune how openpilot waddles along.</b> Actuator Delay (Default: %1) - Actuator Lag (Default: %1) + Quack! Actuator Delay (Default: %1), waddle-waddle. Actuator Delay - Actuator Lag + Quack-tuator Delay - How long the steering wheel takes to respond to commands. Higher values account for slower steering; lower values for quicker response. - The time it takes for the steering wheel to respond to commands. Higher values indicate slower steering, while lower values suggest a quicker response. + <b>The time between openpilot's steering command and the vehicle's response.</b> Increase if the vehicle reacts late; decrease if it feels jumpy. Auto-learned by default. + <b>Quack! The time between openpilotโ€™s steering quack and the carโ€™s waddle back.</b> If the car reacts late, quack it up; if it feels jumpy, quack it down. Auto-learned by default. Friction (Default: %1) - Friction (Default: %1) + Quack! Friction (Default: %1), waddle-waddle. Friction - Resistance + Quack-tion - Adjust steering resistance. Higher values feel more stable but heavier; lower values feel lighter but more sensitive. - Modify steering resistance. Higher values provide more stability but feel heavier; lower values feel lighter but are more sensitive. + <b>Compensates for steering friction.</b> Increase if the wheel sticks near center; decrease if it jitters. Auto-learned by default. + <b>Quack! Smooths steering friction.</b> If wheel sticks near center, quack it up; if it jitters, quack it down. Auto-learned by default, waddle-waddle. Kp Factor (Default: %1) - Kp Factor (Default: %1) + Quack! Kp Factor (Default: %1) Kp Factor - Kp Coefficient + Quack Kp Factor, waddle-waddle! - How aggressively openpilot corrects steering. Higher values respond faster but may feel jerky; lower values are smoother but slower. - How aggressively openpilot adjusts steering. Higher values respond more quickly but may feel jerky; lower values are smoother but slower. + <b>How strongly openpilot corrects lane position.</b> Higher is tighter but twitchier; lower is smoother but slower. Auto-learned by default. + <b>How hard openpilot nudges your lane spot, quack.</b> Higher is tighter but twitchier, quack; lower is smoother but slower, waddle. Auto-learned by default, quack. - Lateral Accel (Default: %1) - Lateral Accel (Default: %1) + Lateral Acceleration (Default: %1) + Quack! Lateral Acceleration (Default: %1) waddle-waddle - Lateral Accel - Sideways Quack + Lateral Acceleration + Quack! Lateral Accelerationโ€”waddle-zoom, quack! - How quickly openpilot makes lateral adjustments. Higher values allow sharper turns; lower values provide smoother steering. - How swiftly openpilot makes lateral adjustments. Higher values enable sharper turns, while lower values ensure smoother steering. + <b>Maps steering torque to turning response.</b> Increase for sharper turns; decrease for gentler steering. Auto-learned by default. + <b>Quack! Maps steering torque to turning response.</b> Waddle it up for sharper turns; waddle it down for gentler steering. Auto-learned by default, quack. Steer Ratio (Default: %1) - Steering Ratio (Default: %1) + Quack! Steer Ratio (Default: %1) waddles here! Steer Ratio - Steering Ratio + Quack Ratio - How much the steering wheel turns in response to commands. Higher values feel more stable; lower values feel quicker. - How much the steering wheel turns in response to commands. Higher values feel more stable, while lower values feel quicker. + <b>The relationship between steering wheel rotation and road wheel angle.</b> Increase if steering feels too quick or twitchy; decrease if it feels too slow or weak. Auto-learned by default. + <b>Quack! How your wheel twist maps to road wheel wiggle.</b> Waddle it up if steering feels too zippy or twitchy; waddle it down if it feels too sluggish or flimsy. Auto-learned by default, quack. - Force Auto Tune On - Enable Auto Tune + Force Auto-Tune On + Quack! Waddle Auto-Tune On, quack! - Force-enable commaโ€™s auto lateral tuning. - Force-enable the comma's automatic lateral tuning. + <b>Force-enable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration".</b> + <b>Quack! Force-enable openpilotโ€™s live auto-tuning for โ€œFrictionโ€ and โ€œLateral Accelerationโ€. Waddle!</b> - Force Auto Tune Off - Disable Auto Tune + Force Auto-Tune Off + Quack! Waddle Auto-Tune Off, quack! - Force-disable commaโ€™s auto lateral tuning. - Disable the comma's automatic lateral tuning. + <b>Force-disable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration" and use the set value instead.</b> + <b>Quack! Force-disable openpilotโ€™s live auto-tuning for "Friction" and "Lateral Acceleration", and waddle with the set value instead.</b> - Always on Lateral - Constantly on Lateral + Force Torque Controller + Quack-Force Torque Controller, waddle! - openpilot's steering control stays active even when the brake or gas pedals are pressed.<br><br>Deactivation only occurs with the <b>Cruise Control</b> button. - openpilot's steering control remains active even when the brake or gas pedals are pressed.<br><br>Deactivation occurs only with the <b>Cruise Control</b> button. + <b>Use torque-based steering control instead of angle-based control for smoother lane keeping, especially in curves.</b> + <b>Quack! Use torque-based steering control, not angle-based, for smoother lane keeping, especially in curvy bitsโ€”waddle smooth!</b> + + + Always On Lateral + Always-On Lateral, quack! Waddle-waddle! + + + <b>openpilot's steering remains active even when the accelerator or brake pedals are pressed.</b> + <b>Quack! openpilotโ€™s steering keeps paddling even when you stomp the accelerator or tap the brakes, quack.</b> Enable With Cruise Control - Activate With Cruise Control + Quack! Enable with Cruise Control, waddle-waddle! - Allow <b>Always on Lateral</b> to be active whenever <b>Cruise Control</b> is active, bypassing the need to enable openpilot first. - Enable <b>Always on Lateral</b> to function whenever <b>Cruise Control</b> is active, eliminating the need to activate openpilot first. + <b>Enable "Always On Lateral" whenever "Cruise Control" is on, even when openpilot is not engaged.</b> + <b>Quack! Turn on "Always On Lateral" whenever "Cruise Control" is on, even if openpilot isnโ€™t engagedโ€”waddle waddle!</b> - Enable With LKAS Button - Activate with LKAS Button + Enable With LKAS + Quack! Enable With LKAS, waddle on! - Allow <b>Always on Lateral</b> to be active whenever <b>LKAS</b> is active, bypassing the need to enable openpilot first. - Enable <b>Always on Lateral</b> to function whenever <b>LKAS</b> is active, eliminating the need to activate openpilot first. + <b>Enable "Always On Lateral" whenever "LKAS" is on, even when openpilot is not engaged.</b> + <b>Quack! Turn on "Always On Lateral" whenever "LKAS" is onโ€”waddle waddleโ€”even when openpilot isnโ€™t engaged.</b> - Pause on Brake Below - Pause on Brake Beneath + Pause on Brake Press Below + Quack! Pause on Brake Press Below, waddle-waddle! - Temporarily pause <b>Always on Lateral</b> below the set speed when braking. - Temporarily halt <b>Always on Lateral</b> below the set speed when braking. + <b>Pause "Always On Lateral" below the set speed while the brake pedal is pressed.</b> + <b>Quack! Pause "Always On Lateral" below the set speed while the brake pedal is pressed, waddle-waddle.</b> Lane Changes - Changing Lanes + Quack! Lane Changes, waddle-waddle! - Customize how openpilot performs lane changes. - Adjust how openpilot executes lane changes. + <b>Allow openpilot to change lanes.</b> + <b>Quack! Let openpilot switch lanes, waddle-waddle.</b> Automatic Lane Changes - Automated Lane Changes + Quackomatic Lane Waddle-Changes - Change lanes automatically when the turn signal is on. No steering input needed! - Automatically change lanes when the turn signal is activated. No steering input required! + <b>When the turn signal is on, openpilot will automatically change lanes.</b> No steering-wheel nudge required! + <b>Quack! When the turn signal is on, openpilot will waddle over and auto-change lanes.</b> No steering-wheel nudge needed, quack! Lane Change Delay - Delay in Lane Change + Quack! Lane Change Delayโ€”waddle-wait time, quack! - Delay automatic lane changes by the set amount of time. - Postpone automatic lane changes by the specified duration. + <b>Delay between turn signal activation and the start of an automatic lane change.</b> + <b>Quack! Time between blinker on and auto lane-change kickoff, waddle-waddle.</b> Minimum Lane Change Speed - Minimum Speed for Lane Change + Quack-min Lane Change Speed, waddle! - Minimum speed required for openpilot to perform a lane change. - Minimum speed needed for openpilot to execute a lane change. + <b>Lowest speed at which openpilot will change lanes.</b> + <b>Quack! Lowest speed where openpilot will waddle-change lanes.</b> Minimum Lane Width - Minimum Lane Width + Quack-min Lane Width, waddle! - openpilot won't initiate a lane change into a lane narrower than this width. - openpilot won't initiate a lane change into a lane narrower than this width. + <b>Prevent automatic lane changes into lanes narrower than the set width.</b> + <b>Quack! Stop auto lane changes into lanes skinnier than the set width, waddle.</b> One Lane Change Per Signal - One Waddle Change Per Signal + One Lane Change Per Signal, quack! - Limit lane changes to one per turn signal activation. - Restrict lane changes to one per turn signal use. + <b>Limit automatic lane changes to one per turn-signal activation.</b> + <b>Quack! Limit auto lane changes to one per turn-signal blink, waddle.</b> Lateral Tuning - Sideways Tuning + Quack-side Tuning - Settings for fine-tuning openpilot's lateral controls. - Settings for adjusting openpilot's lateral controls. + <b>Miscellaneous steering control changes</b> to fine-tune how openpilot drives. + <b>Miscellaneous steering control quacks</b> to fine-tune how openpilot waddles and drives. Force Turn Desires Below Lane Change Speed - Compel Shift Wishes Under Lane Switch Velocity + Quack! Force Turn Desires below Lane Change speed, waddle-waddle! - Force turn desires below the minimum lane change speed to improve turning accuracy. - Force turn desires below the minimum lane change speed to enhance turning accuracy. - - - Neural Network Feedforward (NNFF) - Neural Network Feedforward (NNFF) - - - Use <b>Twilsoncoโ€™s</b> <b>Neural Network FeedForward</b> model for smoother, model-based steering trained on your vehicle's data. - Employ <b>Twilsoncoโ€™s</b> <b>Neural Network FeedForward</b> model for smoother, data-driven steering, trained on your vehicle's specifics. - - - Smooth Curve Handling - Graceful Curve Navigation - - - Use <b>Twilsoncoโ€™s</b> torque-based adjustments to smooth out steering during curves. - Apply <b>Twilsoncoโ€™s</b> torque-based tweaks to smooth steering through curves. + <b>While driving below the minimum lane change speed with an active turn signal, instruct openpilot to turn left/right.</b> + <b>Quack! When waddling below the minimum lane-change speed with a blinky turn signal on, tell openpilot to turn left/right, quack!</b> Quality of Life - Life Quality + Quackity of Life - Miscellaneous features to improve the steering experience. - Various features to enhance the steering experience. + <b>Steering control changes to fine-tune how openpilot drives.</b> + <b>Quack! Steering control tweaks to fine-tune how openpilot drives, waddle-waddle.</b> Pause Steering Below - Pause Steering Under + Quack! Pause Steering Below, waddle! - Temporarily pause steering control below the set speed. - Temporarily halt steering control when speed falls below the set limit. + <b>Pause steering below the set speed.</b> + <b>Quack! Pause steering below the set speed, waddle-waddle.</b> Instant - Immediate + Quack-quick! second - Second + quack second seconds - seconds + quack seconds Turn Signal Only - Signal Only + Quack! Turn Signal Only, waddle-waddle! - Are you sure you want to completely reset your <b>Actuator Delay</b>? - Are you certain you want to fully reset your <b>Actuator Delay</b>? + Reset <b>Actuator Delay</b> to its default value? + Quack! Reset <b>Actuator Delay</b> to its default value, waddle? - Are you sure you want to completely reset your <b>Friction</b>? - Are you certain you want to fully reset your <b>Friction</b>? + Reset <b>Friction</b> to its default value? + Quack! Reset <b>Friction</b> to its default value, waddle? - Are you sure you want to completely reset your <b>Kp Factor</b>? - Are you certain you want to fully reset your <b>Kp Factor</b>? + Reset <b>Kp Factor</b> to its default value? + Quack! Reset <b>Kp Factor</b> to its default value, waddle-waddle? - Are you sure you want to completely reset your <b>Lateral Accel</b>? - Are you certain you want to fully reset your <b>Lateral Accel</b>? + Reset <b>Lateral Accel</b> to its default value? + Quack! Reset <b>Lateral Accel</b> to its default value, waddle? - Are you sure you want to completely reset your <b>Steer Ratio</b>? - Are you certain you want to fully reset your <b>Steer Ratio</b>? + Reset <b>Steer Ratio</b> to its default value? + Quack! Reset <b>Steer Ratio</b> to its default value, waddle-waddle? + + + Lateral Accel (Default: %1) + Quack! Lateral Accel (Default: %1), waddle-whoosh! Off - Off + Quack! Off! foot - foot + Quack-foot! feet - feet + Quack-feet mph - mph + quack mph meter - meter + quack-meter meters - meters + quacks meters km/h - km/h + quack/km/h + + + Neural Network Feedforward (NNFF) + Quack-quack Neural Network Feedforward (NNFF), waddle on! + + + <b>Twilsonco's "Neural Network FeedForward" model controller for smoother, model-based steering trained on your vehicle's data.</b> + <b>Quack! Twilsoncoโ€™s โ€œNeural Network FeedForwardโ€ model quacks you smoother, model-based steering, waddled on your vehicleโ€™s own data.</b> + + + Smooth Curve Handling + Quack-Smooth Waddle Curve Handling + + + <b>Twilsonco's torque-based adjustments to smoothen out steering in curves.</b> + <b>Quack! Twilsoncoโ€™s torque tweaks to smooth out steering in curves, waddle-waddle.</b> FrogPilotLongitudinalPanel Advanced Longitudinal Tuning - Enhanced Longitudinal Tuning + Quack-vanced Longitudinal Tuning, waddle-waddle! - Advanced settings for customizing how openpilot handles acceleration and braking. - Advanced settings for personalizing how openpilot manages acceleration and braking. + <b>Advanced acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Quack! Fancy zoom-n-stop tweaks</b> to fine-tune how openpilot drives, waddle-waddle. Actuator Delay (Default: %1) - Actuator Lag (Default: %1) + Quackuator Delay (Default: %1), waddles! Actuator Delay - Actuator Lag + Quack-tuator Delay, waddle! - Delay before throttle or brake takes effect. Higher values smooth slow actuators but can feel laggy; lower values react quicker but may overshoot. - Delay before throttle or brake engages. Higher values smooth slow actuators but may feel laggy; lower values react faster but might overshoot. + <b>The time between openpilot's throttle or brake command and the vehicle's response.</b> Increase if the vehicle feels slow to react; decrease if it feels too eager or overshoots. + <b>Quack! The time between openpilotโ€™s throttle or brake quack-command and the carโ€™s response, waddle-waddle.</b> Increase if it feels slow to react; decrease if itโ€™s too eager or overshoots, quack. Start Acceleration (Default: %1) - Begin Acceleration (Default: %1) + Quack-start Acceleration (Default: %1), waddle-whoosh! Start Acceleration - Begin Acceleration + Quack-start Acceleration, waddle-whoosh! - Extra acceleration applied when pulling away from a stop. Increase for snappier launches at the cost of smoothness; decrease for gentler starts. - Additional acceleration is applied when starting from a stop. Increase it for quicker launches, sacrificing smoothness; decrease it for more gentle starts. + <b>Extra acceleration applied when starting from a stop.</b> Increase for quicker takeoffs; decrease for smoother, gentler starts. + <b>Quack! Extra zoom when you launch from a stop.</b> Waddle it up for quicker takeoffs; waddle it down for smoother, gentler starts. Start Speed (Default: %1) - Initial Speed (Default: %1) + Quack! Start Speed (Default: %1), waddle on! Start Speed - Begin Velocity + Quack-start Speed! - Speed where openpilot begins to exit the stopped state. Higher values avoid creeping but may feel sluggish; lower values move sooner but risk creeping. - The speed at which openpilot exits the stopped state. Higher speeds prevent creeping but may feel sluggish; lower speeds move sooner but risk creeping. + <b>The speed at which openpilot exits the stopped state.</b> Increase to reduce creeping; decrease to move sooner after stopping. + <b>Quack! The speed where openpilot hops out of the stopped state.</b> Waddle it up to creep less; waddle it down to go sooner after stopping. Stop Acceleration (Default: %1) - Halt Acceleration (Default: %1) + Quack! Stop Acceleration (Default: %1) Stop Acceleration - Halt Speeding + Quack! Stop that zoom-zoom, waddle halt! - Brake force applied to hold the vehicle still. Larger values prevent creeping on hills but might jerk to a stop. Smaller values can feel smoother but may allow rolling. - Brake force is applied to keep the vehicle stationary. Higher values prevent creeping on hills but might cause a sudden stop. Lower values offer a smoother feel but may allow rolling. + <b>Brake force applied to hold the vehicle at a standstill.</b> Increase to prevent rolling on hills; decrease for smoother, softer stops. + <b>Quack! Brake force holds the car still, no waddle.</b> Waddle up to stop rolling on hills; waddle down for softer, smoother stops. Stopping Rate (Default: %1) - Default Stopping Rate: %1 + Quack-stop Rate (Default: %1), waddle! Stopping Rate - Halt Rate + Quack-Quack Stopping Rate - How quickly braking ramps up when stopping. Faster rates shorten stopping distance but can be harsh; slower rates are smoother but need more room. - How quickly braking intensifies when stopping. Faster rates reduce stopping distance but can be harsh; slower rates are smoother but require more space. + <b>How quickly braking ramps up when stopping.</b> Increase for shorter, firmer stops; decrease for smoother, longer stops. + <b>Quack! How fast braking ramps up when stopping.</b> Waddle it up for shorter, firmer stops; waddle it down for smoother, longer stops. Stop Speed (Default: %1) - Halt Speed (Default: %1) + Quack! Stop Speed (Default: %1) Stop Speed - Halt Velocity + Quack! Stop Speed, waddle! - Speed where openpilot beings to enter the stopped state. Higher values brake earlier for smoother stops but might stop too soon; lower values wait longer and can overshoot. - Speed at which openpilot begins to enter the stopped state. Higher values brake earlier for smoother stops but might halt too soon; lower values delay braking and can overshoot. + <b>The speed at which openpilot considers the vehicle stopped.</b> Increase to brake earlier and stop smoothly; decrease to wait longer but risk overshooting. + <b>Quack! The speed where openpilot says the car is stopped.</b> Waddle it up to brake earlier and stop smooth; waddle it down to wait longer but risk a whoops-overshoot. Conditional Experimental Mode - Experimental Mode (Conditional) + Quack-ditional Experimental Mode, waddle! - Automatically switch to <b>Experimental Mode</b> when set conditions are met. - Automatically switch to <b>Experimental Mode</b> when specified conditions are met. + <b>Automatically switch to "Experimental Mode" when set conditions are met.</b> Allows the model to handle challenging situations with smarter decision making. + <b>Quack! Auto-waddle into "Experimental Mode" when set conditions are met.</b> Lets the model tackle tricky bits with smarter quacky decision-making. Below - Underneath + Quack-below! - Switch to <b>Experimental Mode</b> when driving below this speed. - Activate <b>Experimental Mode</b> when driving under this speed. + <b>Switch to "Experimental Mode" when driving below this speed without a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>Quack! Switch to "Experimental Mode" when waddling below this speed with no lead</b> to help openpilot glide through low-speed stuff smooth as a duck. Curve Detected Ahead - Curve Ahead Detected + Quack! Curve ahead detectedโ€”waddle with care! - Switch to <b>Experimental Mode</b> when a curve is detected ahead. Useful for letting the model choose the appropriate speed for the curve. - Activate <b>Experimental Mode</b> when a curve is detected ahead. This helps the model select the right speed for the curve. + <b>Switch to "Experimental Mode" when a curve is detected</b> to allow the model to set an appropriate speed for the curve. + <b>Quack! Switch to "Experimental Mode" when a curve is detected</b> so the model can waddle in and set a just-right speed for the curve, quack. Lead Detected Ahead - Lead Found Ahead + Quack! Lead spotted up ahead, waddle-warn! - Switch to <b>Experimental Mode</b> when a slower or stopped vehicle is detected ahead. Can improve braking smoothness and reliability on some vehicles. - Activate <b>Experimental Mode</b> when a slower or stopped vehicle is detected ahead. This can enhance braking smoothness and reliability in some vehicles. + <b>Switch to "Experimental Mode" when a slower or stopped vehicle is detected.</b> Can make braking smoother and more reliable on some vehicles. + <b>Quack! Switch to "Experimental Mode" when a slower or stopped vehicle is spotted, waddle!</b> Can make braking smoother and more reliable on some vehicles, quack. - Navigation Data - Navigation Details + Navigation-Based + Quack-igation Based, waddle! - Switch to <b>Experimental Mode</b> when approaching intersections or turns on the active route while using <b>Navigate on openpilot (NOO)</b>. Useful for letting the model choose the appropriate speed for upcoming navigation maneuvers. - Activate <b>Experimental Mode</b> when nearing intersections or turns on the active route with <b>Navigate on openpilot (NOO)</b>. This helps the model select the right speed for upcoming navigation maneuvers. + <b>Switch to "Experimental Mode" when approaching intersections or turns on the active route</b> while using "Navigate on openpilot" (NOO) to allow the model to set an appropriate speed for upcoming maneuvers. + <b>Quack! Flip to "Experimental Mode" near intersections or turns on the active route</b> while using "Navigate on openpilot" (NOO), so the model can waddle-set a just-right speed for upcoming maneuvers. - openpilot Wants to Stop In - openpilot Wants to Quack In + Predicted Stop In + Quack! Predicted Stop In, waddle-waddle. - Switch to <b>Experimental Mode</b> when openpilot wants to stop within the set amount of time. This is typically triggered by the driving model "detecting" a red light or stop sign. - Switch to <b>Experimental Mode</b> when openpilot intends to stop within the specified time. This usually occurs when the driving model "detects" a red light or stop sign. + <b>Switch to "Experimental Mode" when openpilot predicts a stop within the set time.</b> This is usually triggered when the model "sees" a red light or stop sign ahead.<br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>Quack! Switch to "Experimental Mode" when openpilot predicts a stop within the set time, waddle-waddle.</b> Usually triggered when the model "sees" a red light or stop sign ahead, quack.<br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera inputโ€”so it may stop even with no clear reason, quack.</i> Turn Signal Below - Signal Below + Quack! Turn Signal Belowโ€”waddle-waddle! - Switch to <b>Experimental Mode</b> when using a turn signal below the set speed. Useful for letting the model choose the appropriate speed for upcoming left or right turns. - Activate <b>Experimental Mode</b> when using a turn signal at speeds below the set limit. This helps the model select the optimal speed for upcoming left or right turns. + <b>Switch to "Experimental Mode" when using a turn signal below the set speed</b> to allow the model to choose an appropriate speed for smoother left and right turns. + <b>Quack! Switch to "Experimental Mode" when you flick the turn signal below the set speed</b> so the model can waddle-pick a proper speed for smoother left and right turns, quack. Status Widget - Status Quack + Quack Status Widget - Show the <b>Conditional Experimental Mode</b> status on the driving screen. - Display the <b>Conditional Experimental Mode</b> status on the driving screen. + <b>Show which condition triggered "Experimental Mode"</b> on the driving screen. + <b>Quack! Show which condition quacked on "Experimental Mode"</b> on the driving screen. - Show <b>Curve Speed Control</b>'s desired speed on the driving screen. - Display <b>Curve Speed Control</b>'s target speed on the driving screen. + Curve Speed Controller + Quack Curve Speed Controller, waddle-waddle! - Customize Driving Personalities - Tailor Driving Personalities + <b>Automatically slow down for upcoming curves</b> using data learned from your driving style, adapting to curves as you would. + <b>Quack! Automatically slow down for upcoming curves</b> using data learned from your driving style, waddling through bends just like you would. - Customize the personality profiles to your driving style. - Tailor the personality profiles to match your driving style. + Calibrated Lateral Acceleration + Quack-tuned Lateral Acceleration - Traffic Personality - Traffic Character + <b>The learned lateral acceleration from collected driving data.</b> This sets how fast openpilot will take curves. Higher values allow faster cornering; lower values slow the vehicle for gentler turns. + <b>Quack! Learned lateral acceleration from your driving data.</b> This sets how fast openpilot waddles through curves. Higher values mean faster corneringโ€”quack! Lower values slow the vehicle for gentler turns, waddle-waddle. - Customize the <b>Traffic</b> personality profile. Tailored for navigating through traffic. - Personalize the <b>Traffic</b> personality profile. Designed for smoothly navigating through traffic. + Calibration Progress + Quackibration Progress, waddle-waddle! + + + <b>How much curve data has been collected.</b> This is a progress meter; it is normal for the value to stay low and rarely reach 100%. + <b>Quack! How much curve data weโ€™ve scooped up.</b> Waddle-meter of progress; normal to stay low, rarely peck 100%. + + + Reset Curve Data + Quack-set Curve Data + + + <b>Reset collected user data for "Curve Speed Controller".</b> + <b>Quack! Reset collected user data for "Curve Speed Controller", waddle-waddle.</b> + + + <b>Show the "Curve Speed Controller" target speed on the driving screen.</b> + <b>Quack! Show the "Curve Speed Controller" target speed on the driving screen, waddle-waddle.</b> + + + Driving Personalities + Quack-tastic Driving Personalities ๐Ÿฆ† + + + <b>Customize the "Driving Personalities"</b> to better match your driving style. + <b>Quack-ustomize the "Driving Personalities"</b> to better waddle with your driving style. + + + Traffic Mode + Quack! Traffic Mode, waddle on! + + + <b>Customize the "Traffic Mode" personality profile.</b> Designed for stop-and-go driving. + <b>Quack! Tweak the "Traffic Mode" personality profile, waddly-doo.</b> Built for stop-and-go, quack-queue driving. Following Distance - Distance to Follow + Quack! Following Distance, waddle-waddle! - The minimum following distance while in <b>Traffic Mode</b>. openpilot will dynamically adjust between this value and the value in the <b>Aggressive</b> profile based on your current speed. - The minimum following distance in <b>Traffic Mode</b>. openpilot will dynamically adjust between this value and the one in the <b>Aggressive</b> profile, depending on your current speed. + <b>The minimum following distance to the lead vehicle in "Traffic Mode".</b> openpilot blends between this value and the "Aggressive" profile as speed increases. Increase for more space; decrease for tighter gaps. + <b>Quack! The smallest followy-gap to the lead car in "Traffic Mode".</b> openpilot waddles between this and the "Aggressive" profile as speed goes up. Increase for roomy quacks; decrease for snuggy gaps. - Acceleration Sensitivity - Acceleration Responsiveness + Acceleration Smoothness + Quack-celeration Smoothness, waddle! - How sensitive openpilot is to changes in acceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot is to changes in acceleration while in <b>Traffic Mode</b>. Higher values lead to smoother, more gradual acceleration, while lower values permit quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot accelerates in "Traffic Mode".</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Quack! How smoothly openpilot scoots in "Traffic Mode".</b> Waddle it up for gentler takeoffs; waddle it down for faster, choppier launchesโ€”quack! - Deceleration Sensitivity - Deceleration Sensitivity + Braking Smoothness + Quack-brake Smoothness - How sensitive openpilot is to changes in deceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot is to changes in deceleration while in <b>Traffic Mode</b>. Higher values lead to smoother, more gradual deceleration, while lower values permit quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot brakes in "Traffic Mode".</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>Quack! How smoothly openpilot brakes in "Traffic Mode".</b> Waddle it up for gentler stops; waddle it down for quicker but sharper quacksโ€”er, braking. - Safety Distance Sensitivity - Sensitivity to Safety Distance + Safety Gap Bias + Quack! Safety Gap Biasโ€”waddle tweak, quack! - How cautious openpilot is around other vehicles or obstacles while in <b>Traffic Mode</b>. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - How cautious openpilot is around other vehicles or obstacles while in <b>Traffic Mode</b>. Higher values increase following distances and prioritize safety, resulting in more careful driving, while lower values allow for closer following but may reduce reaction time. + <b>How much extra space openpilot keeps from the vehicle ahead in "Traffic Mode".</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Quack! How much extra space openpilot keeps from the car ahead in "Traffic Mode".</b> Waddle it up for bigger gaps and cautious following; waddle it down for tighter gaps and closer following. - Speed Decrease Response - Response to Reduced Speed + Slowdown Response + Quack-down Response, waddle! - How quickly openpilot decreases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot reduces speed in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed adjustments when slowing down, while lower values allow for quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot slows down in "Traffic Mode".</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Quack! How smoothly openpilot slows down in "Traffic Mode".</b> Waddle it up for gentler quacks of decel; waddle it down for faster but sharper slowdowns, quack. - Speed Increase Response - Response to Speed Increase + Speed-Up Response + Quack-Quack Boost Response - How quickly openpilot increases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot increases speed in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot speeds up in "Traffic Mode".</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Quack! How smoothly openpilot scoots in "Traffic Mode".</b> Waddle it up for gentler, glidy go; waddle it down for faster but bumpy zoom, quack. - Reset Settings - Restore Settings + Reset to Defaults + Quack! Waddle back to Defaults - Reset <b>Traffic Mode</b> settings to default values. - Restore <b>Traffic Mode</b> settings to default values. + <b>Reset "Traffic Mode" settings to defaults.</b> + <b>Quack! Reset "Traffic Mode" settings to defaults, waddle-waddle.</b> - Aggressive Personality - Assertive Personality + Aggressive + Quack-gressive - Customize the <b>Aggressive</b> personality profile. Designed for a more assertive driving style. - Modify the <b>Aggressive</b> personality profile. Tailored for a more assertive driving style. + <b>Customize the "Aggressive" personality profile.</b> Designed for assertive driving with tighter gaps. + <b>Quack! Tweak the "Aggressive" personality profile.</b> Waddle-ready for bold driving with tighter gaps, quack! - How many seconds openpilot will follow behind lead vehicles while using the <b>Aggressive</b> personality profile.<br><br>Default: 1.25 seconds. - How many seconds will openpilot follow behind lead vehicles when using the <b>Aggressive</b> personality profile?<br><br>Default: 1.25 seconds. + <b>How many seconds openpilot follows behind lead vehicles when using the "Aggressive" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.25 seconds. + <b>Quack! How many seconds openpilot waddles behind lead cars on the "Aggressive" profile.</b> Increase for more space, quack; decrease for snugger gaps, quack.<br><br>Default: 1.25 seconds. - How sensitive openpilot is to changes in acceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot is to changes in acceleration when using the <b>Aggressive</b> personality profile. Higher values lead to smoother, more gradual acceleration, while lower values permit quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot accelerates with the "Aggressive" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Quack! How smoothly openpilot zooms with the "Aggressive" profile.</b> Waddle it up for gentler starts; waddle it down for faster but choppier takeoffs, quack. - How sensitive openpilot is to changes in deceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot is to changes in deceleration when using the <b>Aggressive</b> personality profile. Higher values lead to smoother, more gradual deceleration, while lower values permit quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot brakes with the "Aggressive" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>Quack! How smoothly openpilot brakes with the "Aggressive" profile.</b> Waddle it up for gentler stops; waddle it down for quicker but sharper braking. - How cautious openpilot is around other vehicles or obstacles while using the <b>Aggressive</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - How cautious openpilot is around other vehicles or obstacles when using the <b>Aggressive</b> personality profile. Higher values increase following distances and prioritize safety, resulting in more cautious driving. Lower values allow for closer following but may reduce reaction time. + <b>How much extra space openpilot keeps from the vehicle ahead with the "Aggressive" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Quack! How much extra space openpilot keeps from the car ahead with the "Aggressive" profile.</b> Waddle it up for bigger gaps and cautious quacking; waddle it down for tighter gaps and closer tail-feather following. - How quickly openpilot decreases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot reduces speed with the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed adjustments when slowing down, while lower values permit quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot slows down with the "Aggressive" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Quack! How smoothly openpilot slows with the "Aggressive" profile.</b> Waddle it up for gentler decel; waddle it down for faster but sharper slowdowns, quack. - How quickly openpilot increases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot increases speed with the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes during acceleration, while lower values allow for quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot speeds up with the "Aggressive" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Quack! How smoothly openpilot zooms with the "Aggressive" profile.</b> Waddle it up for gentler go-go; waddle it down for quicker but bumpy quack-celeration. - Reset the <b>Aggressive</b> personality profile settings to default values. - Restore the <b>Aggressive</b> personality profile settings to their default values. - - - Standard Personality - Typical Character - - - Customize the <b>Standard</b> personality profile. Designed for a balanced driving style. - Modify the <b>Standard</b> personality profile. Tailored for a balanced driving style. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Standard</b> personality profile.<br><br>Default: 1.45 seconds. - How many seconds will openpilot follow behind lead vehicles when using the <b>Standard</b> personality profile?<br><br>Default: 1.45 seconds. - - - How sensitive openpilot is to changes in acceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot is to changes in acceleration when using the <b>Standard</b> personality profile. Higher values lead to smoother, more gradual acceleration, while lower values permit quicker, more responsive changes that might feel abrupt. - - - How sensitive openpilot is to changes in deceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot is to changes in deceleration when using the <b>Standard</b> personality profile. Higher values lead to smoother, more gradual deceleration, while lower values permit quicker, more responsive changes that might feel abrupt. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Standard</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - How cautious openpilot is around other vehicles or obstacles when using the <b>Standard</b> personality profile. Higher values increase following distances and prioritize safety, resulting in more cautious driving. Lower values allow for closer following but may reduce reaction time. - - - How quickly openpilot decreases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot reduces speed with the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed adjustments when decelerating, while lower values allow for quicker, more responsive changes that might feel abrupt. - - - How quickly openpilot increases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot increases speed with the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes during acceleration, while lower values allow for quicker, more responsive changes that might feel abrupt. - - - Reset the <b>Standard</b> personality profile settings to default values. - Restore the <b>Standard</b> personality profile settings to their default values. - - - Relaxed Personality - Laid-back Demeanor - - - Customize the <b>Relaxed</b> personality profile. Designed for a more laid-back driving style. - Tailor the <b>Relaxed</b> personality profile. Crafted for a more easygoing driving style. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Relaxed</b> personality profile.<br><br>Default: 1.75 seconds. - How many seconds will openpilot follow behind lead vehicles when using the <b>Relaxed</b> personality profile?<br><br>Default: 1.75 seconds. - - - How sensitive openpilot is to changes in acceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot is to changes in acceleration when using the <b>Relaxed</b> personality profile. Higher values lead to smoother, more gradual acceleration, while lower values permit quicker, more responsive changes that might feel abrupt. - - - How sensitive openpilot is to changes in deceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot is to changes in deceleration when using the <b>Relaxed</b> personality profile. Higher values lead to smoother, more gradual deceleration, while lower values permit quicker, more responsive changes that might feel abrupt. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Relaxed</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - How cautious openpilot is around other vehicles or obstacles when using the <b>Relaxed</b> personality profile. Higher values increase following distances and prioritize safety, resulting in more careful driving, while lower values permit closer following but might reduce reaction time. - - - How quickly openpilot decreases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot reduces speed with the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed adjustments when decelerating, while lower values allow for quicker, more responsive changes that might feel abrupt. - - - How quickly openpilot increases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot increases speed with the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes during acceleration, while lower values allow for quicker, more responsive changes that might feel abrupt. - - - Reset the <b>Relaxed</b> personality profile settings to default values. - Restore the <b>Relaxed</b> personality profile settings to their default values. - - - Longitudinal Tuning - Longitudinal Adjustment - - - Settings that control how openpilot manages speed and acceleration. - Settings that govern how openpilot handles speed and acceleration. - - - Acceleration Profile - Speed Increase Pattern - - - Enable either a sporty or eco-friendly acceleration profile. <b>Sport+</b> aims to make openpilot accelerate as fast as possible! - Enable either a sporty or eco-friendly acceleration profile. <b>Sport+</b> is designed to make openpilot accelerate as quickly as possible! - - - Deceleration Profile - Deceleration Pattern - - - Enable either a sporty or eco-friendly deceleration profile. - Activate either a sporty or eco-friendly braking profile. - - - Human-Like Acceleration - Duck-Like Acceleration - - - Use the lead vehicle's acceleration rate when at a takeoff and ramp off the acceleration rate when approaching the maximum set speed for a more "human-like" driving experience. - Adopt the lead vehicle's acceleration rate during takeoff and ease off as you near the maximum set speed for a more "human-like" driving experience. - - - Human-Like Approach Behind Leads - Human-Like Strategy Behind Leads - - - Dynamically adjust the desired following distance when approaching slower or stopped vehicles for a more "human-like" driving experience. - Dynamically adjust the desired following distance when approaching slower or stopped vehicles for a more "human-like" driving experience. - - - Lead Detection Confidence - Lead Detection Assurance - - - How sensitive openpilot is to detecting vehicles ahead. A lower value can help detect vehicles sooner and from farther away, but increases the chance openpilot mistakes other objects for vehicles. - How sensitive openpilot is to detecting vehicles ahead. A lower value can help spot vehicles sooner and from farther away, but it increases the chance openpilot mistakes other objects for vehicles. - - - Maximum Acceleration Rate - Peak Acceleration Rate - - - Set a cap on how fast openpilot can accelerate. - Limit how quickly openpilot can accelerate. - - - "Taco Bell Run" Turn Speed Hack - "Taco Bell Run" Quick Turn Trick - - - The turn speed hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to slow down when taking left/right turns for smoother turns. - The turn speed hack from comma's 2022 "Taco Bell Run" drive is designed to reduce speed during left or right turns for smoother navigation. - - - Quality of Life - Life Quality - - - Miscellaneous features to improve the acceleration and braking experience. - Various features to enhance the acceleration and braking experience. - - - Cruise Interval - Cruise Duration - - - The interval used when changing the cruise control speed. - The interval for adjusting the cruise control speed. - - - Cruise Interval (Long Press) - Cruise Duration (Long Press) - - - The interval used when changing the cruise control speed while holding down the button for 0.5+ seconds. - The interval for adjusting the cruise control speed when the button is held down for more than 0.5 seconds. - - - Force Keep openpilot in the Standstill State - Keep openpilot in the Standstill State - - - Keep openpilot in the standstill state until either the gas pedal or <b>resume</b> button is pressed. - Keep openpilot in the standstill state until either the gas pedal or the <b>resume</b> button is pressed. - - - Force Stop for "Detected" Stop Lights/Signs - Force Halt for "Detected" Stop Lights/Signs - - - Force a stop whenever openpilot <b>detects</b> a potential red light/stop sign to prevent it from running the red light/stop sign. - Force a stop whenever openpilot <b>spots</b> a potential red light or stop sign to prevent running through them. - - - Increase Stopped Distance - Extend Stopped Distance - - - Increase the distance openpilot stops behind vehicles. - Extend the distance openpilot halts behind vehicles. - - - Set Speed Offset - Adjust Speed Offset - - - How much higher or lower the set speed should be compared to your current set speed. For example, if you prefer to drive 5 mph above the speed limit, this setting will automatically add that difference when you adjust your set speed. - How much higher or lower should the set speed be compared to your current speed? For instance, if you like to drive 5 mph over the speed limit, this setting will automatically add that difference when you adjust your speed. - - - Map Accel/Decel to Gears - Map Accel/Decel to Gears - - - Map the acceleration and deceleration profiles to your car's <b>Eco</b> or <b>Sport</b> gear modes. - Align the acceleration and deceleration profiles with your car's <b>Eco</b> or <b>Sport</b> gear modes. - - - Reverse Cruise Increase - Cruise Fare Reduction - - - Reverse the <b>long press</b> cruise increase feature to increase the max speed by 5 instead of 1 on short presses. - Change the <b>long press</b> cruise increase feature so that short presses raise the max speed by 5 instead of 1. - - - Speed Limit Controller - Speed Limit Regulator - - - Limit openpilot's maximum driving speed based on data from downloaded maps, <b>Mapbox</b>, <b>Navigate on openpilot</b>, or the dashboard (supported vehicles: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - Restrict openpilot's top driving speed using data from downloaded maps, <b>Mapbox</b>, <b>Navigate on openpilot</b>, or the dashboard (supported vehicles: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - - - Fallback Speed - Backup Speed - - - The speed limit source when no speed limit data is available. - The default speed limit when no specific data is available. - - - Override Speed - Exceed Speed - - - The speed openpilot uses after manually exceeding the posted speed limit.<br><br><b>- Set With Gas Pedal</b>: Uses the speed obtained while pressing the gas<br><b>- Max Set Speed</b>: Uses the cruise control set speed<br><br>Overrides clear upon disengagement. - The speed openpilot adopts after manually surpassing the posted limit.<br><br><b>- Set With Gas Pedal</b>: Uses the speed reached while pressing the gas<br><b>- Max Set Speed</b>: Uses the cruise control set speed<br><br>Overrides reset upon disengagement. - - - Miscellaneous features to improve the <b>Speed Limit Controller</b> experience. - Various features to enhance the <b>Speed Limit Controller</b> experience. - - - Confirm New Speed Limits - Approve New Speed Limits - - - Require confirmation before applying new speed limits. To accept, use the flashing widget on the driving screen or press the <b>Cruise Increase</b> button. To deny, press the <b>Cruise Decrease</b> button or simply ignore the prompt for 30 seconds. - Require confirmation before applying new speed limits. To accept, use the flashing widget on the driving screen or press the <b>Cruise Increase</b> button. To deny, press the <b>Cruise Decrease</b> button or simply ignore the prompt for 30 seconds. - - - Force MPH Readings from Dashboard - Compel MPH Readings from Dashboard - - - Force dashboard speed limit readings to be in mph. - Ensure dashboard speed limit readings are displayed in mph. - - - Higher Limit Lookahead Time - Extended Limit Lookahead Time - - - How far ahead openpilot anticipates upcoming higher speed limits from the downloaded map data. - How far in advance does openpilot anticipate upcoming higher speed limits using the downloaded map data? - - - Lower Limit Lookahead Time - Minimum Lookahead Time - - - How far ahead openpilot anticipates upcoming lower speed limits from the downloaded map data. - How far in advance does openpilot anticipate upcoming lower speed limits from the downloaded map data? - - - Match Speed Limit on Engage - Align Speed Limit on Engage - - - Automatically set cruise control speed to match the current speed limit when first enabling openpilot. - Automatically adjust the cruise control speed to match the current speed limit when initially enabling openpilot. - - - Use Mapbox as Fallback - Use Mapbox as a Backup - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - When no other sources are available, use <b>Mapbox</b> speed limit data. - - - Speed Limit Source Priority - Priority of Speed Limit Source - - - Define the priority order for speed limit sources (<b>Dashboard</b>, <b>Map Data</b>, <b>Navigation</b>). Higher-priority sources override lower ones when multiple limits are detected. - Establish the priority order for speed limit sources: <b>Dashboard</b>, <b>Map Data</b>, and <b>Navigation</b>. Higher-priority sources quack over lower ones when multiple limits are detected. - - - Speed Limit Offsets - Speed Limit Adjustments - - - Offsets relative to the posted speed limit for a more "human-like" driving experience. - Offsets relative to the posted speed limit for a more "human-like" driving quack. - - - Speed Offset (0โ€“24 mph) - Speed Adjustment (0โ€“24 mph) - - - Target speed offset applied for posted limits between 0 and 24 mph. - Target speed offset applied for posted limits from 0 to 24 mph. - - - Speed Offset (25โ€“34 mph) - Speed Adjustment (25โ€“34 mph) - - - Target speed offset applied for posted limits between 25 and 34 mph. - Target speed offset applied for posted limits from 25 to 34 mph. - - - Speed Offset (35โ€“44 mph) - Speed Range (35โ€“44 mph) - - - Target speed offset applied for posted limits between 35 and 44 mph. - Target speed offset applied for posted limits from 35 to 44 mph. - - - Speed Offset (45โ€“54 mph) - Speed Range (45โ€“54 mph) - - - Target speed offset applied for posted limits between 45 and 54 mph. - Target speed adjustment applied for posted limits from 45 to 54 mph. - - - Speed Offset (55โ€“64 mph) - Speed Range (55โ€“64 mph) - - - Target speed offset applied for posted limits between 55 and 64 mph. - Target speed adjustment applied for posted limits from 55 to 64 mph. - - - Speed Offset (65โ€“74 mph) - Speed Range (65โ€“74 mph) - - - Target speed offset applied for posted limits between 65 and 74 mph. - Target speed adjustment applied for posted limits from 65 to 74 mph. - - - Speed Offset (75โ€“99 mph) - Speed Range (75โ€“99 mph) - - - Target speed offset applied for posted limits between 75 and 99 mph. - Target speed adjustment applied for posted limits between 75 and 99 mph. - - - Visual Settings - Display Options - - - Visual features to improve the <b>Speed Limit Controller</b> experience. - Visual elements to enhance the <b>Speed Limit Controller</b> experience. - - - Show Speed Limit Offset - Display Speed Limit Offset - - - Display the speed limit offset separately on the driving screen. - Show the speed limit offset separately on the driving screen. - - - Show Speed Limit Sources - Display Speed Limit Sources - - - Display the speed limit sources on the driving screen. - Show the speed limit sources on the driving screen. - - - seconds - seconds - - - m/sยฒ - m/sยฒ - - - mph - mph - - - With Lead - With Guidance - - - Switch to <b>Experimental Mode</b> when driving below this speed with a lead. - Activate <b>Experimental Mode</b> when driving under this speed with a lead. - - - Slower Lead - Delayed Start - - - Stopped Lead - Lead Halted - - - Intersections - Crossroads - - - Turns - Rotates - - - Off - Off - - - second - second - - - Only For Detected Lanes - For Detected Lanes Only - - - RESET - RESET + <b>Reset the "Aggressive" profile to defaults.</b> + <b>Quack! Reset the "Aggressive" profile to defaults, waddle-waddle.</b> Standard - Regular + Quack-standard! + + + <b>Customize the "Standard" personality profile.</b> Designed for balanced driving with moderate gaps. + <b>Quack! Customize the "Standard" personality profile.</b> Waddle-made for balanced driving with moderate gaps, quack. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Standard" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.45 seconds. + <b>Quack! How many seconds openpilot waddles behind lead vehicles with the "Standard" profile.</b> Increase for more pond space; decrease for snugger gaps, quack.<br><br>Default: 1.45 seconds. + + + <b>How smoothly openpilot accelerates with the "Standard" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Quack! How smoothly openpilot zooms with the "Standard" profile.</b> Waddle it up for gentler starts; waddle it down for faster but more abrupt takeoffs. + + + <b>How smoothly openpilot brakes with the "Standard" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>Quack! How smoothly openpilot brakes with the "Standard" profile.</b> Waddle it up for gentler stops; waddle it down for quicker but sharper braking, quack. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Standard" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Quack! How much extra space openpilot keeps from the car ahead with the "Standard" profile.</b> Waddle it up for bigger gaps and cautious tailing; waddle it down for tighter gaps and closer following. + + + <b>How smoothly openpilot slows down with the "Standard" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>How smoothly openpilot quacks to a halt with the "Standard" profile.</b> Waddle it up for gentler slowing; waddle it down for faster but snappier slowdowns. + + + <b>How smoothly openpilot speeds up with the "Standard" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Quack! How smoothly openpilot zips up with the "Standard" profile.</b> Waddle it up for gentler go-go; waddle it down for faster but bumpy vroom-quack. + + + <b>Reset the "Standard" profile to defaults.</b> + <b>Quack! Reset the "Standard" profile to defaults, waddle-waddle.</b> + + + Relaxed + Quack-relaxed + + + <b>Customize the "Relaxed" personality profile.</b> Designed for smoother, more comfortable driving with larger gaps. + <b>Quack! Customize the "Relaxed" personality profile.</b> Waddle onโ€”smoother, comfier cruising with bigger gaps, quack! + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Relaxed" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.75 seconds. + <b>Quack! How many seconds openpilot waddles behind the lead when using the "Relaxed" profile.</b> Increase for more space, quack; decrease for tighter gaps, quack.<br><br>Default: 1.75 seconds. + + + <b>How smoothly openpilot accelerates with the "Relaxed" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Quack! How smoothly openpilot zooms with the "Relaxed" profile.</b> Waddle it up for gentler starts; waddle it down for faster but more abrupt takeoffs. + + + <b>How smoothly openpilot brakes with the "Relaxed" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>Quack! How smoothly openpilot brakes with the "Relaxed" profile.</b> Waddle it up for gentler stops; waddle it down for quicker but sharper braking. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Relaxed" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>How much extra space openpilot keeps from the vehicle ahead with the "Relaxed" profile, quack.</b> Waddle it up for bigger gaps and cautious quacks; waddle it down for tighter gaps and close follow, quack. + + + <b>How smoothly openpilot slows down with the "Relaxed" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Quack! How smoothly openpilot eases off with the "Relaxed" profile.</b> Waddle it up for gentler deceleration; waddle it down for quicker but snappier slowdowns. + + + <b>How smoothly openpilot speeds up with the "Relaxed" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Quack! How smoothly openpilot waddles faster with the "Relaxed" profile.</b> Turn it up for gentler, glidey zoomโ€”quack; turn it down for quicker but bumpy zoom-zoom, quack! + + + <b>Reset the "Relaxed" profile to defaults.</b> + <b>Quack! Reset the "Relaxed" profile to defaults, waddle-waddle.</b> + + + Longitudinal Tuning + Quack-Quack Longitudinal Tuning, waddle on! + + + <b>Acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Quack! Acceleration and braking control changes</b> to fine-tune how openpilot drives, waddle-waddle. + + + Acceleration Profile + Quack-celeration Profile, waddle! + + + <b>How quickly openpilot speeds up.</b> "Eco" is gentle and efficient, "Sport" is firmer and more responsive, and "Sport+" accelerates at the maximum rate allowed. + <b>How quickly openpilot speeds up, quack.</b> "Eco" waddles gentle and efficient, "Sport" is firmer and snappier, quack, and "Sport+" zooms at the max rate allowed, quack! + + + Deceleration Profile + Quack-quirk Deceleration Profile, waddle! + + + <b>How firmly openpilot slows down.</b> "Eco" favors coasting, "Sport" applies stronger braking. + <b>How firmly openpilot slows down, quack.</b> "Eco" favors coasting, quack; "Sport" applies stronger braking, waddle-waddle. + + + Human-Like Acceleration + Quack-like Zooming + + + <b>Acceleration that mimics human behavior</b> by easing the throttle at low speeds and adding extra power when taking off from a stop. + <b>Quack-cceleration like a human</b>, easing the throttle at low speeds, then waddling on with extra oomph when taking off from a stop. + + + Human-Like Following + Quack-like Following + + + Lead Detection Sensitivity + Quack Lead Detection Sensitivity, waddle! + + + <b>How sensitive openpilot is to detecting vehicles.</b> Higher sensitivity allows quicker detection at longer distances but may react to non-vehicle objects; lower sensitivity is more conservative and reduces false detections. + <b>How quack-sensitive openpilot is to spotting vehicles.</b> Higher quackiness sees farther, fasterโ€”quack!โ€”but may peck at non-vehicles; lower quack keeps it cautious and trims false quacks. + + + Maximum Acceleration + Quack! Maximum Zoom-Waddle Acceleration + + + <b>Limit the strongest acceleration</b> openpilot can command. + <b>Quack! Limit the strongest acceleration</b> openpilot can command, waddle-waddle. + + + "Taco Bell Run" Turn Speed Hack + "Quacko Bell Run" Turn Speed Quack-hack + + + <b>The turn-speed hack from comma's 2022 "Taco Bell Run".</b> Designed to slow down for left and right turns. + <b>Quack! The turn-speed hack from commaโ€™s 2022 "Taco Bell Run".</b> Waddle-ready to slow for left and right turns, quack! + + + Quality of Life + Quack-ity of Life ๐Ÿฆ† + + + <b>Miscellaneous acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Quacky tweaks to acceleration and braking</b> to fine-tune how openpilot drives, quack! + + + Cruise Interval + Quack Cruise Interval quack! + + + <b>How much the set speed increases or decreases</b> for each + or โ€“ cruise control button press. + <b>How much the set speed quacks up or down</b> for each + or โ€“ cruise control button press, waddle-waddle. + + + Cruise Interval (Hold) + Quack Interval (Hold) + + + <b>How much the set speed increases or decreases while holding the + or โ€“ cruise control buttons.</b> + <b>Quack! How much the set speed waddles up or down while you hold the + or โ€“ cruise control buttons.</b> + + + Force Stop at "Detected" Stop Lights/Signs + Quack! Force Stop at โ€œDetectedโ€ Stop Lights/Signs, waddle! + + + <b>Force openpilot to stop whenever the driving model "detects" a red light or stop sign.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>Quack! Force openpilot to stop whenever the driving model โ€œdetectsโ€ a red light or stop sign, waddle-waddle.</b><br><br><i><b>Disclaimer</b>: Quack! openpilot does not explicitly detect traffic lights or stop signs. In โ€œExperimental Modeโ€, it makes end-to-end driving choices from camera peeksโ€”so it may stop even when thereโ€™s no clear reason, quack.</i> + + + Increase Stopped Distance by: + Quack! Waddle up Stopped Distance by: + + + <b>Add extra space when stopped behind vehicles.</b> Increase for more room; decrease for shorter gaps. + <b>Quack! Add extra space when stopped behind vehicles.</b> Waddle up to get more room; waddle down for shorter gaps. + + + Map Accel/Decel to Gears + Quack! Map accel/decel to gearsโ€”waddle shift! + + + <b>Map the Acceleration or Deceleration profiles to the vehicle's "Eco" and "Sport" gear modes.</b> + <b>Quack! Map those Acceleration or Deceleration profiles to the vehicleโ€™s โ€œEcoโ€ and โ€œSportโ€ gear modes, waddly-do!</b> + + + Offset Set Speed by: + Quack! Waddle Set Speed by: + + + <b>Increase the set speed by the chosen offset.</b> For example, set +5 if you usually drive 5 over the limit. + <b>Quack! Bump the set speed by the chosen offset.</b> For example, set +5 if you waddle 5 over the limit. + + + Reverse Cruise Increase + Quack! Reverse Cruise Increase, waddle-whoosh! + + + <b>Reverse the cruise control button behavior</b> so a short press increases the set speed by 5 instead of 1. + <b>Quack! Flip the cruise control button behavior</b> so a short press bumps set speed by 5, not 1. + + + Increase Following Distance by: + Quack! Increase Following Distance by: waddle! + + + Reduce Acceleration by: + Quack! Waddle down acceleration by: + + + Reduce Speed in Curves by: + Quack! Waddle down speed in curves by: + + + Snow + Quack Snow! + + + <b>Driving adjustments for snowy conditions.</b> + <b>Quack! Driving tweaks for snowy waddles.</b> + + + <b>Add extra space behind lead vehicles in snow.</b> Increase for more space; decrease for tighter gaps. + <b>Quack! Add extra space behind lead vehicles in snow.</b> Waddle it up for more space; paddle it down for tighter gaps. + + + <b>Add extra buffer when stopped behind vehicles in snow.</b> Increase for more room; decrease for shorter gaps. + <b>Quack! Add extra buffer when stopped behind vehicles in snow.</b> Waddle it up for more room; waddle it down for shorter gaps. + + + <b>Lower the maximum acceleration in snow.</b> Increase for softer takeoffs; decrease for quicker but less stable takeoffs. + <b>Quack! Lower the max zoom-zoom in snow.</b> Waddle it up for softer takeoffs; waddle it down for quicker but wobblier takeoffs, quack. + + + <b>Lower the desired speed while driving through curves in snow.</b> Increase for safer, gentler turns; decrease for more aggressive driving in curves. + <b>Quack! Lower desired speed when waddling through snowy curves.</b> Increase for safer, gentler turnsโ€”quack; decrease for more feisty curve-quacks. + + + Speed Limit Controller + Quack! Speed Limit Controller, waddle-waddle! + + + <b>Limit openpilot's maximum driving speed to the current speed limit</b> obtained from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + <b>Quack! Cap openpilotโ€™s max driving speed to the current speed limit</b> fetched from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + + + Fallback Speed + Quack-up Speed + + + <b>The speed used by "Speed Limit Controller" when no speed limit is found.</b><br><br>- <b>Set Speed</b>: Use the cruise set speed<br>- <b>Experimental Mode</b>: Estimate the limit using the driving model<br>- <b>Previous Limit</b>: Keep using the last confirmed limit + <b>Quack! Speed used by "Speed Limit Controller" when no limit is found, waddle-waddle.</b><br><br>- <b>Set Speed</b>: Use the cruise set speed, quack<br>- <b>Experimental Mode</b>: Estimate the limit using the driving model, quack-quack<br>- <b>Previous Limit</b>: Keep using the last confirmed limit, waddle + + + Override Speed + Quack! Override Speed, waddle-waddle! + + + <b>The speed used by "Speed Limit Controller" after you manually drive faster than the posted limit.</b><br><br>- <b>Set with Gas Pedal</b>: Use the highest speed reached while pressing the gas<br>- <b>Max Set Speed</b>: Use the cruise set speed<br><br>Overrides clear when openpilot disengages. + <b>Quack! The speed "Speed Limit Controller" uses after you zoom past the posted limit, waddling by your own foot.</b><br><br>- <b>Set with Gas Pedal</b>: Quackโ€”use the highest speed hit while youโ€™re pressing the gas<br>- <b>Max Set Speed</b>: Waddleโ€”use the cruise set speed<br><br>Overrides splash away when openpilot disengages. + + + <b>Miscellaneous "Speed Limit Controller" changes</b> to fine-tune how openpilot drives. + <b>Quack-y "Speed Limit Controller" tweaks</b> to fine-tune how openpilot waddles along. + + + Confirm New Speed Limits + Quack! Confirm New Speed Limits, waddle! + + + <b>Ask before changing to a new speed limit.</b> To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds. + <b>Quack! Ask before switching to a new speed limit.</b> To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds. + + + Force MPH from Dashboard + Quack! Force MPH from Dashboard, waddle-waddle! + + + <b>Always read dashboard speed limit signs in mph.</b> Turn this on if the cluster shows mph but the limit is interpreted as km/h. + <b>Quack! Always read dashboard speed limit signs in mph.</b> Turn this on if the cluster shows mph but the limit is interpreted as km/h, waddle-quack. + + + Higher Limit Lookahead Time + Quackier Limit Lookahead Time, waddle-waddle! + + + <b>How far ahead openpilot anticipates upcoming higher speed limits</b> from downloaded map data. + <b>How far ahead openpilot quacks about upcoming higher speed limits</b> from downloaded map data, waddle-waddle. + + + Lower Limit Lookahead Time + Quack! Lower Limit Lookahead Time, waddle-waddle! + + + <b>How far ahead openpilot anticipates upcoming lower speed limits</b> from downloaded map data. + <b>How far ahead openpilot quacks about upcoming lower speed limits</b> from downloaded map data, waddle-waddle. + + + Match Speed Limit on Engage + Quack-match Speed Limit on Engage, waddle! + + + <b>When openpilot is first enabled, automatically set the max speed to the current posted limit.</b> + <b>Quack! When openpilot first gets enabled, auto-waddle the max speed to the current posted limit. Quack!</b> + + + Use Mapbox as Fallback + Quack! Use Mapbox as fallback, waddle waddle. + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>Quack! Use Mapbox speed-limit data when no other source is paddling by.</b> + + + Speed Limit Source Priority + Quack! Speed Limit Source Priority, waddle-waddle! + + + <b>The source order for speed limits</b> when more than one is available. + <b>Quack! The pecking order for speed limits</b> when more than one waddles in. + + + Speed Limit Offsets + Quack! Speed Limit Offsets, waddle-waddle! + + + <b>Add an offset to the posted speed limit</b> to better match your driving style. + <b>Quack an offset onto the posted speed limit</b> to better match your waddly driving style, quack! + + + Speed Offset (0โ€“24 mph) + Quack-speed Offset (0โ€“24 mph), waddle! + + + <b>How much to offset posted speed-limits</b> between 0 and 24 mph. + <b>How much to offset posted speed-limits</b> quack! between 0 and 24 mph, waddle-waddle. + + + Speed Offset (25โ€“34 mph) + Quack Speed Offset (25โ€“34 mph) + + + <b>How much to offset posted speed-limits</b> between 25 and 34 mph. + <b>Quack! How much to offset posted speed-limits</b> between 25 and 34 mph, waddle-waddle? + + + Speed Offset (35โ€“44 mph) + Quack-Speed Offset (35โ€“44 mph), waddle! + + + <b>How much to offset posted speed-limits</b> between 35 and 44 mph. + <b>How much to offset posted speed-limits</b> between 35 and 44 mph, quack-waddle! + + + Speed Offset (45โ€“54 mph) + Quack Speed Offset (45โ€“54 mph), waddle-waddle! + + + <b>How much to offset posted speed-limits</b> between 45 and 54 mph. + <b>How much to offset posted speed-limits</b> between 45 and 54 mph, quack! + + + Speed Offset (55โ€“64 mph) + Quack Speed Offset (55โ€“64 mph), waddle-waddle! + + + <b>How much to offset posted speed-limits</b> between 55 and 64 mph. + <b>How much to offset posted speed-limits</b> between 55 and 64 mph, quack-waddle! + + + Speed Offset (65โ€“74 mph) + Quack Speed Offset (65โ€“74 mph), waddle-waddle! + + + <b>How much to offset posted speed-limits</b> between 65 and 74 mph. + <b>How much to offset posted speed-limits</b> between 65 and 74 mph, quack-waddle. + + + Speed Offset (75โ€“99 mph) + Quack Speed Offset (75โ€“99 mph), waddle-waddle! + + + <b>How much to offset posted speed-limits</b> between 75 and 99 mph. + <b>How much to offset posted speed-limits</b> between 75 and 99 mph, quack-waddle. + + + Visual Settings + Quack-tastic Visual Settings, waddle! + + + <b>Visual "Speed Limit Controller" changes</b> to fine-tune how the driving screen looks. + <b>Quack! โ€œSpeed Limit Controllerโ€ look-changes</b> to fine-tune how the driving screen waddles. + + + Show Speed Limit Offset + Quack! Show Speed Limit Offset, waddle-waddle! + + + <b>Show the current offset from the posted limit</b> on the driving screen. + <b>Quack! Show the current offset from the posted limit</b> on the driving screen, waddle-waddle. + + + Show Speed Limit Sources + Quack! Show Speed Limit Sources, waddle! + + + <b>Display the speed-limit sources and their current values</b> on the driving screen. + <b>Quack! Show the speedโ€‘limit sources and their current values</b> on the driving screen, waddle-waddle. + + + seconds + quack-seconds + + + m/sยฒ + Quack m/sยฒ quack! + + + mph + quack mph + + + With Lead + Quack! With Lead, waddle-waddle! + + + <b>Switch to "Experimental Mode" when driving below this speed with a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>Quack! Switch to "Experimental Mode" when waddling below this speed with a lead</b> to help openpilot glide through low-speed stuff smooth as a duck. + + + Slower Lead + Quack! Slower Lead, waddle-warn! + + + Stopped Lead + Quack! Lead stoppedโ€”waddle caution! + + + Intersections + Quack-tersections + + + Turns + Quack! Turns aheadโ€”waddle ready! + + + Off + Quack Off + + + second + quack second + + + Not For Detected Lanes + Quack! Not for detected lanes, waddle! + + + RESET + Quack! RESET! Waddle-waddle! + + + Are you sure you want to completely reset your curvature data? + Quack! You sure you wanna totally reset your curvature data, waddle-waddle? Eco - Eco + Quack-Eco Sport - Athletics + Quack! Sport! Sport+ - Sport+ + Quack-Sport+ feet - paws + Quack-feet Acceleration - Speed increase + Quack-celeration Deceleration - Slowing down - - - Set Speed - Adjust Speed - - - Experimental Mode - Trial Mode - - - Previous Limit - Earlier Boundary - - - None - None - - - Set With Gas Pedal - Adjust Using Gas Pedal - - - Max Set Speed - Maximum Speed Limit - - - SELECT - SELECT - - - Dashboard - Control Panel - - - Map Data - Geographic Information - - - Navigation - Guidance - - - Highest - Top - - - Lowest - Minimum - - - Select your primary priority - Choose your main priority - - - Select your secondary priority - Choose your secondary focus - - - Select your tertiary priority - Choose your third priority + Quack-celeration MANAGE - HANDLE + QUACK-MANAGE + + + Set Speed + Quack Set Speed! + + + Experimental Mode + Quack-sperimental Mode, waddle waddle! + + + Previous Limit + Quack! Previous Limit, waddle! + + + None + Quack-none! + + + Set With Gas Pedal + Quack! Set with gas pedal, waddle-waddle! + + + Max Set Speed + Quack! Max Set Speed, waddle-waddle! + + + SELECT + Quack-SELECT! + + + Dashboard + Quackboard + + + Map Data + Quack Map Data, waddle-waddle! + + + Navigation + Quack-igation + + + Highest + Quackiest! + + + Lowest + Quack-lowest! + + + Select your primary priority + Quack! Pick your top priority, waddle-waddle! + + + Select your secondary priority + Quack! Pick your secondary priority, waddle! + + + Select your tertiary priority + Quack! Pick your third-best priority, waddle! Lower Limits - Minimum Thresholds + Lower Quack-limits Higher Limits - Increased Limits + Quackier Limits, waddle! Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? - Are you certain you want to fully reset your settings for <b>Traffic Mode</b>? + Quack! Are you sure you want to splash away all your settings for <b>Traffic Mode</b>? Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? - Are you certain you want to fully reset your settings for the <b>Aggressive</b> personality? + Quack! You sure you wanna waddle back to defaults for the <b>Aggressive</b> personality? Are you sure you want to completely reset your settings for the <b>Standard</b> personality? - Are you certain you wish to fully reset your settings for the <b>Standard</b> personality? + Quack! Are you sure you want to waddle-reset all your settings for the <b>Standard</b> personality? Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? - Are you certain you want to fully reset your settings for the <b>Relaxed</b> personality? + Quack! Are you sure you want to splash away all your settings for the <b>Relaxed</b> personality? foot - foot + Quack-foot! meter - meter + quack-meter meters - meters + quacks meters km/h - km/h + quack/km/h Speed Offset (0โ€“29 km/h) - Speed Offset (0โ€“29 km/h) + Quack Speed Offset (0โ€“29 km/h), waddle! Speed Offset (30โ€“49 km/h) - Speed Deviation (30โ€“49 km/h) + Quack Speed Offset (30โ€“49 km/h), waddle! Speed Offset (50โ€“59 km/h) - Speed Range (50โ€“59 km/h) + Quack-speed Offset (50โ€“59 km/h) Speed Offset (60โ€“79 km/h) - Speed Range (60โ€“79 km/h) + Quack Speed Offset (60โ€“79 km/h), waddle! Speed Offset (80โ€“99 km/h) - Speed Adjustment (80โ€“99 km/h) + Quack Speed Offset (80โ€“99 km/h), waddle-waddle! Speed Offset (100โ€“119 km/h) - Speed Range (100โ€“119 km/h) + Quack Speed Offset (100โ€“119 km/h), waddle! Speed Offset (120โ€“140 km/h) - Speed Range (120โ€“140 km/h) + Quack Speed Offset (120โ€“140 km/h), waddle-waddle! - Target speed offset applied for posted limits between 0 and 29 km/h. - Target speed offset applied for posted limits from 0 to 29 km/h. - - - Target speed offset applied for posted limits between 30 and 49 km/h. - Target speed offset applied for posted limits from 30 to 49 km/h. - - - Target speed offset applied for posted limits between 50 and 59 km/h. - Target speed offset applied for posted limits from 50 to 59 km/h. - - - Target speed offset applied for posted limits between 60 and 79 km/h. - Target speed offset applied for posted limits from 60 to 79 km/h. - - - Target speed offset applied for posted limits between 80 and 99 km/h. - Target speed offset applied for posted limits from 80 to 99 km/h. - - - Target speed offset applied for posted limits between 100 and 119 km/h. - Target speed adjustment applied for posted limits from 100 to 119 km/h. - - - Target speed offset applied for posted limits between 120 and 140 km/h. - Target speed adjustment applied for posted limits between 120 and 140 km/h. - - - Curve Speed Control - Curve Speed Adjustment - - - Automatically slow down for upcoming curves using downloaded maps or the driving model. - Automatically reduce speed for approaching curves using downloaded maps or the driving model. - - - Curve Detection Method - Curve Identification Technique - - - How curves are detected. <b>Map-Based</b> uses downloaded map data to identify curves and determine the appropriate speed in which to handle them at, while <b>Vision</b> relies solely on the driving model. - How curves are detected. <b>Map-Based</b> uses downloaded map data to identify curves and determine the appropriate speed to navigate them, while <b>Vision</b> relies solely on the driving model. - - - Curve Detection Failsafe - Curve Detection Backup - - - Only trigger <b>Curve Speed Control</b> if a curve is detected with the model while using the <b>Map-Based</b> method. Useful to help prevent false positives. - Activate <b>Curve Speed Control</b> only when the model detects a curve using the <b>Map-Based</b> method. This helps prevent false positives. - - - Curve Detection Sensitivity - Curve Detection Precision - - - How sensitive openpilot is when detecting curves. Higher values trigger earlier responses at the risk of triggering too often, while lower values increase confidence at the risk of triggering too infrequently. - How sensitive openpilot is in detecting curves. Higher values prompt earlier responses but may trigger too often, while lower values boost confidence but risk triggering too infrequently. - - - Curve Speed Aggressiveness - Curve Speed Intensity - - - How aggressive openpilot is when navigating through curves. Higher values result in faster turns but may reduce comfort or stability, while lower values result in slower, smoother turns at the risk of being overly cautious. - How aggressive openpilot is when navigating curves. Higher values lead to quicker turns but may reduce comfort or stability, while lower values result in slower, smoother turns, risking being overly cautious. - - - Map Based - Map-Oriented - - - Vision - Sight - - - The <b>Map Based</b> option is only available when some <b>Map Data</b> has been downloaded! - The <b>Map Based</b> option is available only after some <b>Map Data</b> has been downloaded! + <b>Following behavior that mimics human drivers</b> by closing gaps behind faster vehicles for quicker takeoffs and dynamically adjusting the desired following distance for gentler, more efficient braking. + <b>Quack! Mimic human drivers</b> by waddling up to close gaps behind faster cars for zippy takeoffs, and duckily tweak the following distance for smoother, more efficient braking. FrogPilotManageControl MANAGE - OVERSEE + QUACK-MANAGE FrogPilotMapsPanel Manually - By hand + Quackually Weekly - Weekly + Quackly weekly waddles! Monthly - Monthly + Quackly monthly, waddle! Automatically Update Maps - Auto-Update Maps + Quack! Auto-update dem maps, waddle-waddle! - The frequency at which maps sync with the latest OpenStreetMap (OSM) changes. Weekly updates occur every Sunday, and monthly updates occur on the 1st. - Maps sync with the latest OpenStreetMap (OSM) changes at specific intervals. Weekly updates happen every Sunday, while monthly updates take place on the 1st. - - - Data Sources - Data Origins - - - Select map data sources to use with "Curve Speed Control" and "Speed Limit Controller". - Choose map data sources for "Curve Speed Control" and "Speed Limit Controller". - - - COUNTRIES - NATIONS - - - STATES - STATES + <b>How often maps update</b> from "OpenStreetMap (OSM)" with the latest speed limit information. Weekly updates run every Sunday; monthly updates run on the 1st. + <b>How often maps update</b> from "OpenStreetMap (OSM)" with the latest speed limit info, quack. Weekly waddles run every Sunday; monthly waddles run on the 1st, quack. Download Maps - Get Maps + Quack! Download Maps, waddle-waddle! DOWNLOAD - GET FILE + QUACKLOAD - Download the selected maps to use with "Curve Speed Control" and "Speed Limit Controller". - Download the chosen maps to use with "Curve Speed Control" and "Speed Limit Controller". + <b>Manually update your selected map sources</b> so "Speed Limit Controller" has the latest speed limit information. + <b>Quack! Manually update your selected map sources</b> so "Speed Limit Controller" waddles with the latest speed limit info, quack! CANCEL - CANCEL + QUACK-CANCEL - Are you sure you want to cancel the download? - Are you certain you want to quack the download? + Cancel the download? + Quack! Cancel the download, waddley-waddle? - Download Completion ETA - Estimated Download Completion + Last Updated + Quack! Last Updated, waddle-waddle! - Download Progress - Download Status + Map Sources + Quack Maps, Sourcey-sources - Download Time Elapsed - Time Elapsed for Download + <b>Select the countries or U.S. states to use with "Speed Limit Controller".</b> + <b>Quack! Pick the countries or U.S. states to waddle with "Speed Limit Controller".</b> - Maps Last Updated - Maps Recently Updated + COUNTRIES + QUACK-TRIES - Maps Size - Map Dimensions + STATES + QUACK STATES + + + Progress + Quack-gress + + + Time Elapsed + Quack-Time Elapsed + + + Time Remaining + Quack-time Remaining Remove Maps - Delete Maps + Quack! Remove Maps, waddle-waddle! REMOVE - DELETE + QUACK REMOVE - Remove downloaded maps to clear up storage space. - Delete downloaded maps to free up storage space. + <b>Delete downloaded map data</b> to free up storage space. + <b>Quack! Delete downloaded map data</b> to free up storage space, waddle-waddle. - Are you sure you want to delete all of your downloaded maps? - Are you certain you want to delete all your downloaded maps? + Delete all downloaded maps? + Quack! Delete all downloaded maps, waddle? - Reset Map Downloader - Restart Map Downloader + Reset Downloader + Quack! Reset Downloader, waddle-waddle! RESET - RESET + QUACK RESET - Reset the map downloader. Use if you're running into issues with downloading maps. - Reset the map downloader if you're having trouble downloading maps. + <b>Reset the map downloader.</b> Use this if downloads are stuck or failing. + <b>Quack! Reset the map downloader.</b> Use this if downloads are stuck or failing, quack. - Are you sure you want to reset the map downloader? This will force a reboot once completed. - Are you certain you want to reset the map downloader? This will trigger a reboot once finished. + Reset the map downloader? Your device will reboot afterward. + Quack! Reset the map downloader? Your device will reboot after, waddle-waddle. Reset - Restart + Quack-set! Resetting... - Restarting... + Quack! Resetting... Waddle-waddle! Reset! - Restart! + Quack-set! Rebooting... - Restarting... + Quackbooting... + + + Storage Used + Quack! Storage Used, waddle. Africa - Africa + Quafrica! Antarctica - Antarctica + Quack-tarctica Asia - Asia + Quack-Asia! Europe - Europe + Quack-rope! Europe, waddle-waddle! North America - North America + Quack America (North), waddle-waddle! Oceania - Oceania + Quackeania South America - South America + Quack-America United States - Midwest - Midwestern United States + United States - Midwest, quack-waddle! United States - Northeast - Northeastern United States + Quack States - Northeast, waddle! United States - South - United States - South + Quack States - South Waddle United States - West - United States - West + Quack States โ€“ West, waddle-wooo! United States - Territories - United States - Regions - - - CANCELLED - CANCELLED + Quackited States - Terri-quack-tories Offline... - Disconnected... + Quackline... + + + CANCELLED + Quack! CANCELLED! FrogPilotModelPanel Automatically Download New Models - Auto-Download New Models + Quack! Auto-fetch shiny new models, waddle-waddle! - Automatically download new driving models as they become available. - Automatically fetch new driving models as they become available. + <b>Automatically download new driving models</b> as they become available. + <b>Quack! Auto-download new driving models</b> as they waddle in. Delete Driving Models - Remove Driving Models + Quack! Delete Driving Models, waddle-waddle! - Delete driving models from the device. - Remove driving models from the device. + <b>Delete downloaded driving models</b> to free up storage space. + <b>Quack! Delete downloaded driving models</b> to free up storage space, waddle-waddle. Download Driving Models - Download Driving Templates + Quack! Download Driving Models, waddle-waddle! - Download driving models to the device. - Download driving models onto the device. + <b>Manually download driving models</b> to the device. + <b>Quack! Manually download driving models</b> to the device, waddle-waddle. Model Randomizer - Random Model Selector + Quack-o! Model Randomizer, waddle-waddle! - Driving models are chosen at random each drive and feedback prompts are used to find the model that best suits your needs. - Driving models are selected randomly for each drive, and feedback prompts help identify the model that best fits your needs. + <b>Select a random driving model each drive</b> and use feedback prompts at the end of the drive to help find the model that best suits you! + <b>Quack! Pick a random driving model each drive</b> and waddly feedback at the end will help you find the model that fits you best, quack! Manage Model Blacklist - Handle Model Blacklist + Quack! Manage Model Blacklist, waddle-waddle! - Add or remove models from the <b>Model Randomizer</b>'s blacklist list. - Add or remove models from the <b>Model Randomizer</b>'s blacklist. + <b>Add or remove driving models from the "Model Randomizer" blacklist.</b> + <b>Quack! Add or pluck driving models from the "Model Randomizer" blacklist, waddle-waddle.</b> Manage Model Ratings - Oversee Model Ratings + Quack! Manage Model Ratings, waddle-waddle! - Reset or view the saved ratings for the driving models. - Reset or view the saved ratings for the driving models. + <b>View or reset saved model ratings</b> used by the "Model Randomizer". + <b>Quack! Peek or reset saved model ratings</b> used by the "Model Randomizer", waddle-quack. Select Driving Model - Choose Driving Model + Quack! Pick a Driving Model, waddle! - Select the active driving model. - Choose the active driving mode. + <b>Choose which driving model openpilot uses.</b> + <b>Quack! Pick which driving model openpilot uses, waddle-waddle.</b> + + + Update Model Manager + Quack! Update Model Manager, waddle-waddle! + + + <b>Update the "Model Manager"</b> to support the latest models. + <b>Quack! Update the "Model Manager"</b> to support the latest models, waddle-waddle. DELETE - REMOVE + Quack! DELETE! DELETE ALL - REMOVE ALL + QUACK DELETE ALL! Select a driving model to delete - Choose a driving model to remove + Quack! Pick a driving model to delete, waddle! Are you sure you want to delete the "%1" model? - Are you certain you want to delete the "%1" model? + Quack! Are you sure you want to delete the "%1" model, waddle-waddle? Delete - Remove + Quack-delete! Are you sure you want to delete all of your downloaded driving models? - Are you certain you want to delete all your downloaded driving models? + Quack! Are you sure you want to delete all your downloaded driving models, waddley-waddle? DOWNLOAD - GET + QUACKLOAD DOWNLOAD ALL - DOWNLOAD EVERYTHING + Quack! DOWNLOAD ALL, waddle-waddle! - Select a driving model to download - Choose a driving model to download + Tinygrad is out of date and must be updated before you can download new models. Update now? + Quack! Tinygradโ€™s gone staleโ€”must update before new models waddle in. Update now? + + + Updating Tinygrad will delete all existing Tinygrad-based models which will need to be re-downloaded. Proceed? + Quack! Updating Tinygrad will wipe all Tinygrad-based modelsโ€”splish-splash, theyโ€™ll need re-downloading. Waddle on and proceed? CANCEL - CANCEL + QUACK-CANCEL + + + Updating... + Quackdating... + + + Select a driving model to download + Quack! Pick a driving model to download, waddle-waddle! ADD - INSERT + Quack-ADD! REMOVE - DELETE + Quack-REMOVE! REMOVE ALL - DELETE ALL + Quack! REMOVE ALLโ€”waddle-whoosh! - There are no more models to blacklist! The only available model is "%1"! - No more models to blacklist! The sole available model is "%1"! + There are no more driving models to blacklist. The only available model is "%1"! + Quack! No more driving models to blacklist. Waddle-whoopsโ€”the only one left is "%1"! - Select a model to add to the blacklist - Choose a model to add to the blacklist + Select a driving model to add to the blacklist + Quack! Pick a driving model to waddle onto the blacklist, quack! Are you sure you want to add the "%1" model to the blacklist? - Are you certain you want to add the "%1" model to the blacklist? + Quack! You sure you want to add the "%1" model to the blacklist, waddle? Add - Include + Quack Add! - Select a model to remove from the blacklist - Choose a model to remove from the blacklist + Select a driving model to remove from the blacklist + Quack! Pick a driving model to waddle off the blacklist, quack! Are you sure you want to remove the "%1" model from the blacklist? - Are you certain you want to remove the "%1" model from the blacklist? + Quack! Are you sure you want to pluck the "%1" model off the blacklist, quack? Remove - Delete + Quack! Remove it, waddle! - Are you sure you want to remove all of your blacklisted models? - Are you certain you want to delete all your blacklisted models? + Are you sure you want to remove all of your blacklisted driving models? + Quack! Are you sure you want to waddle off and remove all your blacklisted driving models? RESET - RESET + QUACK RESET! VIEW - VIEW + QUACK VIEW - Are you sure you want to reset all of your model drives and scores? - Do you really want to reset all your model drives and scores? + Reset all model drives and ratings? This clears your drive history and collected feedback! + Quack! Reset all model drives and ratings? This will wipe your drive history and all collected feedback, quack! SELECT - SELECT + QUACK-LECT - Select a model - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC - Choose a model - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + UPDATE + QUACKDATE - The "Model Randomizer" only works with downloaded models. Do you want to download all the driving models? - The "Model Randomizer" functions solely with downloaded models. Would you like to download all the driving models? + Cancelling... + Quack-canceling... + + + Updating Tinygrad will delete existing Tinygrad-based driving models and need to be re-downloaded. Proceed? + Quack! Updating Tinygrad will wipe Tinygrad-based driving modelsโ€”splish-splash goneโ€”and theyโ€™ll need re-downloading. Waddle on and proceed? + + + The "Model Randomizer" works only with downloaded models. Download all models now? + Quack! The "Model Randomizer" waddles only with downloaded models. Download all models now, quack? Offline... - Disconnected... + Quack... Offline... + + + Update available! + Quack! Update waddlinโ€™ in! + + + Up to date! + Quack! All up to date! + + + Select a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + Quack a Model โ€” ๐Ÿ—บ๏ธ = Navigation, ๐Ÿ“ก = Radar, ๐Ÿ‘€ = VOACC, waddle! + + + + FrogPilotModelReview + + How would you rate that drive? + Quack! Howโ€™d you rate that waddle of a drive? + + + Model successfully blacklisted! + Quack! Model waddled onto the blacklist! + + + Drive Rating Selection + Quack! Drive Rating Pick-waddle + + + Blacklist this model to remove it from rotation + Quack! Blacklist this model to duck it out of rotationโ€”waddle away! + + + Blacklist Model + Quacklist Model, quack! + + + Model used during that drive: + Quack! Model used on that drive: waddle-waddle! + + + Model Rank + Quack rank oโ€™ the model, waddle-waddle! + + + Model Rating + Quack Score quack! + + + Model Drives + Quack! Model waddles and drives, quack! + + + Total Drives + Quack! Total Waddles + + + #%1 + Quack #%1! + + + %1% + %1% + + + %1 %2 + %1 %2, quack-waddle! + + + Drive + Quack-drive! + + + Drives + Quack-drives + + + %1 Total %2 + Quack! %1 Total %2, waddle-waddle! FrogPilotNavigationPanel - - Manage your %1. - Handle your %1. - - - ADD - ADD - - - Enter your %1 - Input your %1 - - - Inputted key is invalid or too short! - The entered key is invalid or too short! - - - Are you sure you want to remove your %1? - Are you certain you want to delete your %1? - - - REMOVE - DELETE - Manage Your Settings At - Adjust Your Settings At - - - MapBox - MapBox - - - Amap - Amap - - - Google - Google - - - Destination Search Provider - Destination Finder Service - - - The search provider used for destination queries in "Navigate on Openpilot". Options include "MapBox" (recommended), "Amap", and "Google Maps". - The search provider for destination queries in "Navigate on Openpilot" includes options like "MapBox" (recommended), "Amap", and "Google Maps". - - - Amap Key #1 - Amap Legend #1 - - - Manage your Amap key. - Manage your Amap quack. - - - Enter your Amap key - Input your Amap key - - - Are you sure you want to remove your Amap key? - Are you certain you want to delete your Amap key? - - - Amap Key #2 - Amap Key #2 - - - Google Maps Key - Google Maps Code - - - Manage your Google Maps key. - Manage your Google Maps quack. - - - Enter your Google Maps key - Input your Google Maps key - - - Are you sure you want to remove your Google Maps key? - Are you certain you want to delete your Google Maps key? - - - Public Mapbox Key - Mapbox Public Key - - - Secret Mapbox Key - Confidential Mapbox Key - - - MapBox Setup Instructions - MapBox Configuration Guide - - - VIEW - DISPLAY - - - View the instructions to set up "MapBox" for "Primeless Navigation". - Check the guide to configure "MapBox" for "Primeless Navigation". - - - CANCEL - CANCEL - - - Manually Update Speed Limits - Manually Adjust Speed Limits - - - Speed Limit Filler - Speed Limit Buffer - - - Automatically collect missing or incorrect speed limits from your dashboard (if supported), <b>Mapbox</b>, and <b>Navigate-on-openpilot</b> while driving.<br><br>When the car is turned off and connected to Wi-Fi, your speed limit data is automatically processed into a compiled file formatted for the tool located at <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>You can grab the processed file from <b>The Pond</b> via the <b>Download Speed Limits</b> menu.<br><br>Want a more thorough walkthrough? Check out the <b>#speed-limit-filler</b> channel in the <b>FrogPilot Discord</b>! - Automatically gather missing or incorrect speed limits from your dashboard (if supported), <b>Mapbox</b>, and <b>Navigate-on-openpilot</b> while driving.<br><br>When the car is off and connected to Wi-Fi, your speed limit data is processed into a compiled file formatted for the tool at <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>You can fetch the processed file from <b>The Pond</b> via the <b>Download Speed Limits</b> menu.<br><br>Need a more detailed guide? Visit the <b>#speed-limit-filler</b> channel in the <b>FrogPilot Discord</b>! - - - Are you sure you want to cancel the speed limit update process? - Are you certain you want to quack the speed limit update process? - - - Cancelled... - Called off... - - - You have reached the request limit. - -It will reset in %1 hours and %2 minutes. - You've hit the request limit. - -It will reset in %1 hours and %2 minutes. - - - This process will take awhile, so it's advised to start when you're done driving with a stable Wi-Fi connection. Do you wish to proceed? - This process will take a while, so it's advised to start once you're done driving and have a stable Wi-Fi connection. Do you wish to proceed? - - - Completed! - All done! + Quack! Manage Your Settings At, waddle-waddle! Offline... - Disconnected... + Quack... Offline... + + + Mapbox + Quackbox + + + Amap + Quackmap + + + Destination Search Provider + Quack! Destination Search Provider, waddle-waddle! + + + <b>The search provider used for destination queries</b> in "Navigate on Openpilot". Options include Mapbox (recommended) and Amap. + <b>Quack! The search provider for destination quacks</b> in "Navigate on Openpilot". Options: Mapbox (quacktastic) and Amap. + + + Amap Key #1 + Quackmap Key #1, quack! + + + Amap Key #2 + Quack Map Key #2, waddle! + + + Public Mapbox Key + Quack-tastic Mapbox Key + + + Secret Mapbox Key + Quack! Super secret Mapbox key, waddle-waddle! + + + Mapbox Setup Instructions + Quack! Mapbox Setup Instructions, waddle-waddle! + + + VIEW + QUACK VIEW ๐Ÿฆ† + + + <b>Instructions on how to set up Mapbox</b> for "Primeless Navigation". + <b>Quacky steps to set up Mapbox</b> for "Primeless Navigation", waddle-waddle. + + + CANCEL + QUACK-CANCEL + + + Manually Update Speed Limits + Quack! Manually update speed limits, waddle! + + + Speed Limit Filler + Quack-Speed Limit Filler, waddle! + + + <b>Automatically collect missing or incorrect speed limits while you drive</b> using speeds limits sourced from your dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When you're parked and connected to Wi-Fi, FrogPilot will automatically processes this data into a file to be used with the tool located at "SpeedLimitFiller.frogpilot.download".<br><br>You can download this file from "The Pond" in the "Download Speed Limits" menu.<br><br>Need a step-by-step guide? Visit <b>#speed-limit-filler</b> in the FrogPilot Discord! + <b>Quack! Auto-snatch missing or wonky speed limits while you drive</b>, using speed limits from your dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When youโ€™re parked and on Wiโ€‘Fi, FrogPilot will quack-quack process this data into a file for the tool at "SpeedLimitFiller.frogpilot.download".<br><br>You can snag this file from "The Pond" in the "Download Speed Limits" menu. Waddle on!<br><br>Need a step-by-step? Paddle to <b>#speed-limit-filler</b> in the FrogPilot Discord! + + + Cancel the speed-limit update? + Quack? Cancel the speed-limit update, waddly-waddle? + + + Cancelled... + Quack-cancelled... Waddle-whoops! + + + You've hit today's request limit. + +It will reset in %1 hours and %2 minutes. + Quack! Youโ€™ve splashed into todayโ€™s request limit. + +Waddle back laterโ€”resets in %1 hours and %2 minutes. + + + This process takes a while. It's recommended to start when you're done driving and connected to stable Wi-Fi. Continue? + Quack! This might take a bit. Best to start after youโ€™re done driving and on steady Wiโ€‘Fi, quack. Continue? + + + <b>Manage your "%1".</b> + <b>Quack! Manage your "%1", waddle-waddle.</b> + + + ADD + Quack ADD! + + + Enter your %1 + Quack! Waddle in your %1 + + + Inputted key is invalid or too short! + Quack! That keyโ€™s invalid or too short, waddley-woot! + + + Remove your %1? + Quack! Remove your %1, waddly-waddle? + + + REMOVE + QUACK REMOVE + + + Completed! + Quack! All done! FrogPilotSettingsWindow MANAGE - OVERSEE + QUACK-MANAGE ๐Ÿฆ† DRIVING MODEL - DRIVE MODEL + QUACKING MODEL GAS / BRAKE - ACCELERATE / STOP + Quack! GAS / BRAKEโ€”waddle-whoosh! STEERING - STEERING + QUACK-STEERING MAP DATA - MAP DATA + QUACK MAP DATA ๐Ÿฆ† NAVIGATION - NAVIGATING + QUACK-VIGATION DATA - DATA + QUACK DATA DEVICE CONTROLS - DEVICE COMMANDS + QUACK! DEVICE CONTROLS, waddle-waddle! UTILITIES - UTILITIES + QUACK-TILITIES APPEARANCE - LOOK + QUACK-PEARANCE THEME - THEME + QUACK-THEME VEHICLE SETTINGS - VEHICLE OPTIONS + QUACK VEHICLE SETTINGS ๐Ÿฆ† WHEEL CONTROLS - WHEEL COMMANDS + QUACKY WHEEL CONTROLS ๐Ÿฆ† Alerts and Sounds - Notifications and Chimes + Quacks and Beeps - FrogPilot settings for alert volumes and custom notifications to stay informed about important driving events. - FrogPilot settings for alert volumes and custom notifications keep you informed about key driving events. + <b>Adjust alert volumes and enable custom notifications.</b> + <b>Quack! Tweak alert volumes and flip on custom quack-tifications.</b> Driving Controls - Driving Controls + Driving Quack-trols - FrogPilot settings for acceleration, braking, and steering. - FrogPilot settings for acceleration, braking, and steering. + <b>Fine-tune custom FrogPilot acceleration, braking, and steering controls.</b> + <b>Quack! Fine-tune your FrogPilot zoom-zoom, stop-stop, and swishy steering controls, waddle waddle.</b> Navigation - Guidance + Quack-igation - Download map data for <b>Curve Speed Control</b>, <b>Speed Limit Controller</b>, and set up <b>Navigate on openpilot (NOO)</b>. - Download map data for <b>Curve Speed Control</b> and <b>Speed Limit Controller</b>, then set up <b>Navigate on openpilot (NOO)</b>. + <b>Download map data for the "Speed Limit Controller" and configure "Navigate on openpilot" (NOO).</b> + <b>Quack! Grab map data for the "Speed Limit Controller" and waddle to set up "Navigate on openpilot" (NOO). Quack!</b> - System Management - System Administration + System Settings + Quack! System Settings, waddle-waddle! - Data storage management, debugging tools, device settings, screen behavior settings, system backups, and utilities to maintain, optimize, and troubleshoot FrogPilot. - Data storage management, debugging tools, device settings, screen behavior settings, system backups, and utilities to maintain, optimize, and troubleshoot FrogPilot. + <b>Manage backups, device settings, screen options, storage, and tools to keep FrogPilot running smoothly.</b> + <b>Quack! Manage backups, device settings, screen options, storage, and tools to keep FrogPilot waddling smoothly.</b> Theme and Appearance - Theme and Look + Quack! Theme โ€˜n Appearance, waddle-waddle! - FrogPilot settings for the current theme, driving-screen, and the overall user interface. - FrogPilot settings for the current theme, driving screen, and overall user interface. + <b>Customize the look of the driving screen and interface, including themes!</b> + <b>Quack! Spruce up the driving screen and interfaceโ€”waddle through themes too!</b> - Vehicle Controls - Car Controls + Vehicle Settings + Quack! Vehicle Settings, waddle on in! - Options unique to supported manufacturers and vehicle fingerprint management. - Exclusive options for supported manufacturers and vehicle fingerprint management. + <b>Configure car-specific options and steering wheel button mappings.</b> + <b>Quack! Set car-only options and steering wheel button maps, waddle-waddle.</b> Minimal - Simple + Quack-minimal! Standard - Regular + Quack-Standard Advanced - Sophisticated + Quackvanced Developer - Coder + Quackveloper Tuning Level - Adjustment Level + Quack-tuned Level - The visibility and complexity of tuning settings. Lower levels simplify the interface by hiding advanced options, while higher levels unlock detailed customization. + Choose your tuning level. Lower levels keep it simple; higher levels unlock more toggles for finer control. Minimal - Ideal for those who prefer simplicity or ease of use Standard - Recommended for most users for a balanced experience -Advanced - Unlocks fine-tuning controls for more experienced users -Developer - Unlocks highly customizable settings for seasoned enthusiasts - The visibility and complexity of tuning settings vary. Lower levels simplify the interface by concealing advanced options, while higher levels reveal detailed customization. +Advanced - Fine-tuning for experienced users +Developer - Highly customizable settings for seasoned enthusiasts + Quack your tuning level! Lower levels stay simple; higher ones unlock more toggles for fine control, quack. -Minimal - Perfect for those who prefer simplicity or ease of use -Standard - Recommended for most users for a balanced experience -Advanced - Unlocks fine-tuning controls for more experienced users -Developer - Unlocks highly customizable settings for seasoned enthusiasts +Minimal - Quack-simple for easy use +Standard - Waddle-on choice for most ducks +Advanced - Fine-tuning for savvy quackers +Developer - Ultra-custom settings for seasoned duckthusiasts - WARNING: This unlocks some potentially dangerous settings that can DRASTICALLY alter your driving experience! - WARNING: This unlocks settings that can DRASTICALLY change your driving experience and may be potentially dangerous! + WARNING: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do! + Quack! WARNING: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do, quack! + + + All toggle descriptions are currently expanded. You can tap a toggle's name to open or close its description at any time! + Quack! All toggle descriptions are fluffed open. Waddle-tap a toggleโ€™s name to quack open or close its description anytime! FrogPilotSoundsPanel - Alert Volume Control - Alert Sound Control + Alert Volume Controller + Quack! Alert Volume Controller, waddly-quack! - Adjust the volume for each alert in openpilot. - Set the volume for each alert in openpilot. + <b>Set how loud each type of openpilot alert is</b> to keep routine prompts from becoming distracting. + <b>Set how loud each type of openpilot alert is</b>, quack, so routine prompts donโ€™t quack-quack into distractions. Disengage Volume - Lower Volume + Quack off Volume - Adjust the volume for alerts like:<br><br><b>Adaptive Cruise Disabled</b><br><b>Brake Pedal Pressed</b><br><b>Parking Brake Engaged</b><br><b>Speed too Low</b> - Modify the alert volume for:<br><br><b>Adaptive Cruise Disabled</b><br><b>Brake Pedal Pressed</b><br><b>Parking Brake Engaged</b><br><b>Speed too Low</b> + <b>Set the volume for alerts when openpilot disengages.</b><br><br>Examples include: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". + <b>Quack! Set the alert volume for when openpilot waddles off.</b><br><br>Examples: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". Engage Volume - Activate Volume + Quackgage Volume ๐Ÿฆ† - Adjust the volume for alerts like:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> - Modify the alert volume for notifications such as:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> + <b>Set the volume for the chime when openpilot engages</b>, such as after pressing the "RESUME" or "SET" steering wheel buttons. + <b>Quack! Set the chime volume when openpilot engages</b>, like after you peck "RESUME" or "SET" on the steering wheel. Waddle! Prompt Volume - Volume Prompt + Quack Prompt Volume quack! - Adjust the volume for alerts like:<br><br><b>Car Detected in Blindspot</b><br><b>Steer Unavailable Below "X"</b><br><b>Speed too Low</b><br><b>Take Control, Turn Exceeds Steering Limit</b> - Modify the alert volume for the following notifications:<br><br><b>Car Detected in Blindspot</b><br><b>Steer Unavailable Below "X"</b><br><b>Speed too Low</b><br><b>Take Control, Turn Exceeds Steering Limit</b> + <b>Set the volume for prompts that need attention.</b><br><br>Examples include: "Car Detected in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". + <b>Set the volume for quacks that need attention, quack!</b><br><br>Examples include: "Car Detected in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". Prompt Distracted Volume - Volume Distracted Prompt + Quack! Distracted Volume, waddle-waddle! - Adjust the volume for alerts like:<br><br><b>Pay Attention, Driver Distracted</b><br><b>Touch Steering Wheel, Driver Unresponsive</b> - Modify the alert volume for messages such as:<br><br><b>Pay Attention, Driver Distracted</b><br><b>Touch Steering Wheel, Driver Unresponsive</b> + <b>Set the volume for prompts when openpilot detects driver distraction or unresponsiveness.</b><br><br>Examples include: "Pay Attention", "Touch Steering Wheel". + <b>Quack! Set the prompt volume when openpilot spots driver distraction or no response, quack.</b><br><br>Examples: "Pay Attention", "Touch Steering Wheel", quack. Refuse Volume - Waste Volume + Quack! Refuse Volume, waddle-waddle! - Adjust the volume for alerts like:<br><br><b>openpilot Unavailable</b> - Modify the alert volume for notifications such as:<br><br><b>openpilot Unavailable</b> + <b>Set the volume for alerts when openpilot refuses to engage.</b><br><br>Examples include: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". + <b>Quack! Set the alert volume for when openpilot goes โ€œnopeโ€ and wonโ€™t engage.</b><br><br>Examples include: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". Warning Soft Volume - Gentle Volume Alert + Quack! Soft Volume Warning - Adjust the volume for alerts like:<br><br><b>BRAKE!, Risk of Collision</b><br><b>TAKE CONTROL IMMEDIATELY</b> - Modify the alert volume for:<br><br><b>BRAKE!, Risk of Collision</b><br><b>TAKE CONTROL IMMEDIATELY</b> + <b>Set the volume for softer warnings about potential risks.</b><br><br>Examples include: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". + <b>Quack! Set the volume for softer quacks about potential risks.</b><br><br>Examples include: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". Warning Immediate Volume - Urgent Volume Alert + Quack! Immediate Volume Warning, quack! - Adjust the volume for alerts like:<br><br><b>DISENGAGE IMMEDIATELY, Driver Distracted</b><br><b>DISENGAGE IMMEDIATELY, Driver Unresponsive</b> - Modify the alert volume for:<br><br><b>DISENGAGE IMMEDIATELY, Driver Distracted</b><br><b>DISENGAGE IMMEDIATELY, Driver Unresponsive</b> + <b>Set the volume for the loudest warnings that require urgent attention.</b><br><br>Examples include: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". + <b>Quack! Set the boom for the loudest honks that need urgent pecks of attention.</b><br><br>Examples include: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". FrogPilot Alerts - FrogPilot Notices + QuackPilot Alerts, quack! - FrogPilot alerts for various events in openpilot. - FrogPilot quacks for various events in openpilot. + <b>Optional FrogPilot alerts</b> that highlight driving events in a more noticeable way. + <b>Optional FrogPilot alerts</b> that quack-highlight driving events in a more noticeable way. - Goat Scream Steering Saturated Alert - Goat Scream Steering Saturated Quack Alert + Goat Scream + Quack! Goat Scream! - The infamous "Goat Scream" that has brought both joy and anger to FrogPilot users all around the world! - The notorious "Goat Scream" has both delighted and frustrated FrogPilot users worldwide! + <b>Play the infamous "Goat Scream" when the steering controller reaches its limit.</b> Based on the "Turn Exceeds Steering Limit" event. + <b>Quack! Blast the infamous "Goat Scream" when the steering controller hits its limit, quack!</b> Based on the "Turn Exceeds Steering Limit" event, waddle. Green Light Alert - Quack Light Alert + Quack! Green Light Alertโ€”waddle-go! - Get an alert when the traffic light changes from red to green. - Receive a quack when the traffic light switches from red to green. + <b>Play an alert when the model predicts a red light has turned green.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights. This alert is based on end-to-end model predictions from camera input and may trigger even when the light has not changed.</i> + <b>Quack! Play an alert when the model quacks that a red light turned green.</b><br><br><i><b>Disclaimer</b>: Quack-quack, openpilot does not explicitly detect traffic lights. This alert waddles from end-to-end model predictions off camera input and may quack even when the light hasnโ€™t changed.</i> Lead Departing Alert - Lead Departure Notification + Quack! Lead duck waddling away alert! - Get an alert when the lead vehicle begins to depart from a standstill. - Receive a notification when the lead vehicle starts to move from a standstill. + <b>Play an alert when the lead vehicle departs from a stop.</b> + <b>Quack! Play an alert when the lead vehicle waddles off from a stop, quack.</b> Loud "Car Detected in Blindspot" Alert - "Car Detected in Blindspot" Quack Alert + Quack! Loud "Car Detected in Blindspot" alertโ€”waddle-warn! - A louder alert for when a vehicle is detected in the blindspot when attempting to change lanes. - A louder alert for detecting a vehicle in the blind spot when changing lanes. + <b>Play a louder alert if a vehicle is in the blind spot when attempting to change lanes.</b> Based on the "Car Detected in Blindspot" event. + <b>Quack! Play a louder alert if a carโ€™s lurking in the blind spot when you try to change lanes.</b> Waddle-wise, itโ€™s based on the "Car Detected in Blindspot" event. Speed Limit Changed Alert - Speed Limit Update Notice + Quack! Speed Limit Changed Alert, waddle-waddle! - Get an alert when the speed limit changes. - Receive a quack when the speed limit changes. + <b>Play an alert when the posted speed limit changes.</b> + <b>Quack! Honk an alert when the posted speed limit flips, waddle!</b> Muted - Silent + Quacked silent Auto - Car + Quack-Auto Test - Trial + Quack-test! FrogPilotThemesPanel - Custom Theme - Personalized Theme + Custom Themes + Quack-tastic Themes - The overall appearance of openpilot. - The general look of openpilot. + <b>The overall look and feel of openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>The overall quack and feel of openpilot.</b> Waddle to "The Pond" and use the "Theme Maker" to hatch and share your own themes! Color Scheme - Color Palette + Quack-tastic Colors Waddle! - openpilot's color scheme. - -Want to submit your own color scheme? Share it in the "custom-themes" channel on the FrogPilot Discord! - openpilot's color scheme. - -Want to submit your own color scheme? Share it in the "custom-themes" channel on the FrogPilot Discord! Quack! + <b>The color scheme used throughout openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Quack! The color scheme splashed all across openpilot.</b> Waddle to "The Pond" and use the "Theme Maker" to hatch and share your own themes! + + + Distance Button + Quack-Quack Distance Button + + + <b>The distance button icons shown on the driving screen.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Quack! The distance button icons shown on the driving screen.</b> Waddle to "The Pond" and use the "Theme Maker" to hatch and share your own themes! Icon Pack - Icon Set + Quack Pack Icons - openpilot's icon pack. - -Want to submit your own icons? Share them in the "custom-themes" channel on the FrogPilot Discord! - openpilot's icon pack. - -Want to submit your own icons? Share them in the "custom-themes" channel on the FrogPilot Discord! Quack! + <b>The icon style used across openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Quack! The icon style splashed across openpilot.</b> Waddle to "The Pond" and use "Theme Maker" to hatch and share your own themes! Sound Pack - Audio Set + Quack Pack - openpilot's sound effects. - -Want to submit your own sounds? Share them in the "custom-themes" channel on the FrogPilot Discord! - Sound effects for openpilot. - -Interested in submitting your own sounds? Share them in the "custom-themes" channel on the FrogPilot Discord! + <b>The sound pack used by openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Quack! The sound pack used by openpilot.</b> Waddle to "The Pond" and use "Theme Maker" to hatch โ€˜n share your own themes! Steering Wheel - Steering Wheel + Quack! Steering Wheel, waddle-wobble! - The steering wheel icon in the top right of the driving screen. - The steering wheel icon is in the top right corner of the driving screen. - - - Themed turn signal animations. - -Want to submit your own animations? Share them in the "custom-themes" channel on the FrogPilot Discord! - Themed turn signal animations. - -Want to submit your own animations? Share them in the "custom-themes" channel on the FrogPilot Discord! - - - Download Status - Status: Download - - - Holiday Themes - Festive Themes - - - Holiday-based visual themes for openpilot. Minor holidays last one day; major holidays (Christmas, Easter, Halloween, etc.) continue all week. - Holiday-themed visuals for openpilot: Minor holidays last a day; major ones (Christmas, Easter, Halloween, etc.) waddle on all week. - - - Rainbow Path - Path of Rainbows - - - The path on the driving screen turns into a Mario Kart inspired "Rainbow Path". - The path on the driving screen transforms into a Mario Kart-inspired "Rainbow Path". - - - Random Events - Unpredictable Events - - - Random cosmetic events that trigger after certain driving conditions. These events are purely for fun and don't affect driving controls! - Random cosmetic events activate after specific driving conditions. These are purely for fun and don't impact driving controls! - - - Random Themes - Themes at Random - - - Cycles through your downloaded themes randomly on each boot, giving every theme in your collection a chance to shine! - Randomly cycles through your downloaded themes at each boot, giving every theme in your collection a chance to quack! - - - Startup Alert - Startup Quack - - - The text of the "Startup Alert" message that appears at the beginning of a drive. - The "Startup Alert" message displayed at the start of a drive. - - - DELETE - REMOVE - - - DOWNLOAD - GET FILE - - - SELECT - SELECT - - - Select a color scheme to delete - Choose a color scheme to remove - - - Are you sure you want to delete the "%1" color scheme? - Are you certain you want to delete the "%1" color scheme? - - - Delete - Remove - - - Select a color scheme to download - Choose a color scheme to download - - - Select a color scheme - Choose a color palette - - - Select a distance icon pack to delete - Choose a distance icon pack to remove - - - Are you sure you want to delete the "%1" distance icon pack? - Are you certain you want to delete the "%1" distance icon pack? - - - Select a distance icon pack to download - Choose a distance icon pack to download - - - Select a distance icon pack - Choose a distance icon set - - - Select an icon pack to delete - Choose an icon pack to remove - - - Are you sure you want to delete the "%1" icon pack? - Are you certain you want to delete the "%1" icon pack? - - - Select an icon pack to download - Choose an icon pack to download - - - Select an icon pack - Choose an icon set - - - Select a signal animation to delete - Choose a signal animation to remove - - - Are you sure you want to delete the "%1" signal animation? - Are you certain you want to delete the "%1" signal animation? - - - Select a signal animation to download - Choose a signal animation to download - - - Select a signal animation - Choose a signal animation - - - Select a sound pack to delete - Choose a sound pack to remove - - - Are you sure you want to delete the "%1" sound pack? - Are you certain you want to delete the "%1" sound pack? - - - Select a sound pack to download - Choose a sound pack to download - - - Select a sound pack - Choose a sound pack - - - Select a steering wheel to delete - Choose a steering wheel to remove - - - Are you sure you want to delete the "%1" steering wheel? - Are you certain you want to delete the "%1" steering wheel? - - - Select a steering wheel to download - Choose a steering wheel to download - - - Select a steering wheel - Choose a steering wheel - - - STOCK - SUPPLY - - - FROGPILOT - FROGPILOT - - - CUSTOM - CUSTOM - - - CLEAR - CLEAR - - - Enter the text for the top half - Input the text for the upper section - - - Characters: 0/%1 - Characters: 0/%1 - - - Enter the text for the bottom half - Input the text for the lower section - - - Are you sure you want to completely reset your startup message? - Are you certain you want to fully reset your startup message? - - - "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! - "Random Themes" functions solely with downloaded themes, so ensure you download the themes you wish to use! - - - CANCEL - CANCEL + <b>The steering-wheel icon</b> shown at the top-right of the driving screen. Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>The steering-wheel icon</b> quacks from the top-right of the driving screen. Waddle to "The Pond" and use "Theme Maker" to hatch and share your own themes, quack! Turn Signal - Indicator + Quack! Turn Signal, waddle-wink! + + + <b>Themed turn-signal animations.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Quack-tastic turn-signal animations.</b> Waddle into "The Pond" and use "Theme Maker" to hatch and share your own themes! + + + Download Status + Quackload Status + + + Holiday Themes + Quack-tastic Holiday Themes + + + <b>Themes based on U.S. holidays.</b> Minor holidays last one day; major holidays (Christmas, Easter, Halloween) run for a full week. + <b>Quack! Themes hatched from U.S. holidays.</b> Minor ones waddle by in one day; big ducks (Christmas, Easter, Halloween) splash for a full week. + + + Rainbow Path + Quackbow Path + + + <b>Color the driving path like a Mario Kartโ€“style "Rainbow Road".</b> + <b>Quack! Color the driving path like a Mario Kartโ€“style "Rainbow Road", waddle-waddle!</b> + + + Random Events + Quack-tastic Surprises + + + <b>Occasional on-screen effects triggered by driving conditions.</b> These are purely a visual and don't impact how openpilot drives! + <b>Quack! Occasional on-screen effects triggered by driving conditions.</b> Just splashy visuals, quackโ€”no impact on how openpilot drives! + + + Random Themes + Quack! Random Themes, waddle-waddle! + + + <b>Pick a random theme between each drive</b> from the themes you have downloaded. Great for variety without changing settings while driving. + <b>Quack! Pick a random theme between each drive</b> from the themes youโ€™ve downloaded, waddle-waddle. Great for variety without changing settings while driving, quack! + + + Startup Alert + Quack! Startup Alert, waddle-waddle! + + + <b>Customize the "Startup Alert" message</b> shown at the start of each drive. + <b>Quack! Customize the "Startup Alert" message</b> shown when each drive goes quack-start. + + + DELETE + Quack! DELETE! + + + DOWNLOAD + QUACKLOAD + + + SELECT + QUACK-SELECT + + + Select a color scheme to delete + Quack! Pick a color scheme to delete, waddle-waddle! + + + Delete the "%1" color scheme? + Quack! Delete the "%1" color scheme, waddly-waddle? + + + Delete + Quack! Delete! + + + Select a color scheme to download + Quack! Pick a color scheme to download, waddle-waddle! + + + Select a color scheme + Quack! Pick a color scheme, waddle-waddle! + + + Select a distance icon pack to delete + Quack! Pick a distance icon pack to delete, waddle-waddle. + + + Delete the "%1" distance icon pack? + Quack! Delete the "%1" distance icon pack? + + + Select a distance icon pack to download + Quack! Pick a distance icon pack to download, waddle! + + + Select a distance icon pack + Quack! Pick a distance icon pack, waddle-waddle! + + + Select an icon pack to delete + Quack! Pick an icon pack to delete, waddle-waddle! + + + Delete the "%1" icon pack? + Quack! Delete the "%1" icon pack, waddle? + + + Select an icon pack to download + Quack! Pick an icon pack to downloadโ€”waddle and tap! + + + Select an icon pack + Quack! Pick an icon pack, waddle! + + + Select a signal animation to delete + Quack! Pick a signal animation to delete, waddle-waddle! + + + Delete the "%1" signal animation? + Quack! Delete the "%1" signal animation, waddly-waddle? + + + Select a signal animation to download + Quack! Pick a signal animation to download, waddle! + + + Select a signal animation + Quack! Pick a signal wiggle-waggle animation + + + Select a sound pack to delete + Quack! Pick a sound pack to delete, waddle! + + + Delete the "%1" sound pack? + Quack! Delete the "%1" sound pack, waddle-waddle? + + + Select a sound pack to download + Quack! Pick a sound pack to download, waddle-waddle! + + + Select a sound pack + Quack! Pick a sound pack, waddle! + + + Select a steering wheel to delete + Quack! Pick a steering wheel to delete, waddle-waddle. + + + Delete the "%1" steering wheel? + Quack! Delete the โ€œ%1โ€ steering wheel, waddlya think? + + + Select a steering wheel to download + Quack! Pick a steering wheel to download, waddle-waddle! + + + Select a steering wheel + Quack! Pick a steering wheel, waddle-waddle. + + + STOCK + QUACK STOCK + + + FROGPILOT + FROGPILOT quack! + + + CUSTOM + QUACK-STOM + + + CLEAR + Quack-CLEAR! + + + Enter the text for the top half + Quack in the text for the top half, waddle! + + + Characters: 0/%1 + Quack-acters: 0/%1 + + + Enter the text for the bottom half + Quack! Type the text for the bottom half, waddle-waddle. + + + Are you sure you want to completely reset your startup message? + Quack! You sure-sure you want to fully reset your startup message, waddle? + + + "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! + Quack! โ€œRandom Themesโ€ only splashes with downloaded themesโ€”waddle and download the ones you want it to use! + + + CANCEL + QUACK-CANCEL FrogPilotUtilitiesPanel Debug Mode - Debug Mode + Quack Debug Mode, waddle! - Debug FrogPilot during the next drive by utilizing all of FrogPilot's developer metrics for either bug reporting, or self-debugging. - During the next drive, debug FrogPilot by using all of its developer metrics for bug reporting or self-debugging. + <b>Use FrogPilot's developer metrics on your next drive</b> to diagnose issues and improve bug reports. + <b>Quack! Use FrogPilot's developer metrics on your next drive</b> to sniff out quirks and quack up better bug reports. Flash Panda - Swift Panda + Quack! Flash Panda, waddle-zoom! FLASH - GLINT + Quack FLASH! - Flash the Panda's firmware. Use if you're running into issues with the Panda. - Update the Panda's firmware. Use this if you're encountering problems with the Panda. + <b>Reinstall the Panda firmware</b> to fix connection or reliability issues. + <b>Quack! Reinstall the Panda firmware</b> to fix connection or reliability quack-ups. - Are you sure you want to flash the Panda? - Are you certain you want to flash the Panda? + Are you sure you want to flash the Panda firmware? + Quack! You sure you wanna flash the Panda firmware, waddle-waddle? Flash - Flicker + Quack! Flash! Flashing... - Blinking... + Quacking... Flashed! - Illuminated! + Quacked! Rebooting... - Restarting... + Quack-booting... - Force Started State - Initiated Force State + Force Drive State + Quack! Force Drive State, waddle-waddle! - Force openpilot either offroad or onroad. - Force openpilot either off-road or on-road. + <b>Manually set openpilot to be offroad or onroad.</b> + <b>Quack! Manually set openpilot to offroad or onroad, waddle-waddle.</b> OFFROAD - OFFROAD + QUACKROAD ONROAD - ONROAD + QUACKROAD OFF - OFF + Quack OFF Report a Bug or an Issue - Report a Bug or Problem + Quack about a Bug or an Issue REPORT - REPORT + QUACK REPORT! - Let FrogsGoMoo know about an issue you're facing! - Inform FrogsGoMoo about a problem you're encountering! + <b>Send a bug report</b> so we can help fix the problem! + <b>Quack! Send a bug report</b> so we can help fix the problem, waddle-waddle! - Ensure your device has an internet connection before sending a report! - Make sure your device is connected to the internet before quacking a report! + Please connect to the internet before sending a report! + Quack! Connect to the internet before sending a report, waddle-waddle! I saw an alert that said "openpilot crashed" - I saw an alert stating "openpilot crashed." + Quack! I saw an alert that said "openpilot crashed", waddle-whoops! - What's going on? - What's happening? + Acceleration feels harsh or jerky + Quack! Acceleration feels harsh or jerkyโ€”waddle-jerk! - Please describe what's happening - Please explain what's occurring - - - Send Report - Submit Report - - - What's your Discord username? - What's your Discord handle? - - - Your report has been submitted. Thanks for letting us know! - Your report has been submitted. Quack for letting us know! - - - Reset Toggles to Default - Restore Toggles to Default - - - RESET - RESET - - - Reset all toggles to their default values. - Restore all toggles to their default settings. - - - Are you sure you want to reset all toggles to their default values? - Are you certain you want to reset all toggles to their default settings? - - - Reset - Restart - - - Resetting... - Restarting... - - - Reset! - Restart! - - - Reset Toggles to Match Stock openpilot - Reset Toggles to Match Stock openpilot - - - Reset all toggles to match stock openpilot. - Restore all toggles to the default openpilot settings. - - - Are you sure you want to reset all toggles to match stock openpilot? - Are you certain you want to reset all toggles to match the default openpilot settings? - - - Acceleration feels too harsh or jerky - Acceleration feels too abrupt or jerky. - - - An alert confused me and I didnโ€™t know what it meant - An alert quacked at me, and I didnโ€™t know what it meant. + An alert was unclear and I didn't know what it meant + Quack! An alert was fuzzy, and I waddled clueless what it meantโ€”quack! Braking is too sudden or uncomfortable - Braking is too abrupt or uncomfortable + Quack! Braking feels too sudden or uncomfyโ€”waddle easy! - Iโ€™m not sure if this is normal or a bug: - I'm unsure if this is normal or a glitch: + I'm not sure if this is normal or a bug: + Quack? Not sure if this is normal or a bugโ€”waddle-wonder, quack! - Lane changes donโ€™t work properly or feel unsafe - Lane changes either malfunction or feel unsafe. + My screen froze or is stuck loading something + Quack! My screenโ€™s frozen or stuck waddling on a load, quack! - My screen froze or got stuck on loading - My screen froze or is stuck loading. - - - My steering wheel buttons arenโ€™t working - The buttons on my steering wheel aren't working. + My steering wheel buttons aren't working + Quack! My steering wheel buttons arenโ€™t quacking working, waddle waddle! openpilot disengages when I don't expect it - openpilot disengages unexpectedly - - - openpilot doesnโ€™t resume after I stop - openpilot doesn't restart after I stop + Quack! openpilot bails out when Iโ€™m not expecting it, waddly-what?! openpilot doesn't react to stopped vehicles ahead - openpilot doesn't respond to stationary vehicles ahead + Quack! openpilot no quack-react to stopped vehicles aheadโ€”waddle careful! + + + openpilot doesn't resume from a stop + Quack! openpilot wonโ€™t waddle off from a stopโ€”no resume, quack! openpilot feels sluggish or slow to respond - openpilot seems sluggish or slow to react + Quack! openpilot feels sluggish, slow to respondโ€”waddle-wait vibes, quack! Steering feels twitchy or unnatural - Steering feels twitchy or awkward + Quack! Steering feels twitchy or unnaturalโ€”waddle-wobble vibes! - The car doesnโ€™t follow curves well - The car doesn't handle curves well. + The car doesn't follow curves well + Quack! This car no waddle round curves so wellโ€”quack-quack! - The car isnโ€™t staying centered in its lane - The car isn't keeping centered in its lane. - - - The speed or display info looks wrong - The speed or display information seems incorrect. + The car isn't staying centered in its lane + Quack! The carโ€™s not waddling centered in its laneโ€”quack-quack! Something else (please describe) - Another option (please specify) + Quack, something else (please describe), waddle! + + + What's going on? + Quackโ€™s up? Waddleโ€™s going on? Quack! + + + Please describe what's happening + Quack-quack! Please quack-splain whatโ€™s happening, waddle? + + + Send Report + Quack it over: Send Report! + + + What's your Discord username? + Quack! Whatโ€™s your Discord name, waddle? + + + Report Sent! Thanks for letting us know! + Quack! Report sent! Waddle-thanks for letting us know! + + + Reset Toggles to Default + Quack! Reset Toggles to Default, waddle-waddle! + + + RESET + Quack! RESET! + + + <b>Reset all toggles to their default values.</b> + <b>Quack! Reset all toggles to their default values, waddle-waddle.</b> + + + Are you sure you want to reset all toggles to their default values? + Quack! Are you sure you want to waddle-reset all toggles to their default values? + + + Reset + Quack-set + + + Resetting... + Quack! Resetting... Waddle-waddle! + + + Reset! + Quack! Reset! + + + Reset Toggles to Stock openpilot + Quack! Reset Toggles to Stock openpilot, waddle-waddle! + + + <b>Reset all toggles to match stock openpilot.</b> + <b>Quack! Reset all toggles to match stock openpilot, waddle-waddle.</b> + + + Are you sure you want to reset all toggles to match stock openpilot? + Quack! Are you sure you want to reset all toggles to match stock openpilot, waddling yes? FrogPilotVehiclesPanel - Select Make - Choose Brand + Car Make + Quack-quack Car Make SELECT - SELECT + Quack! SELECT! - Select a Make - Choose a Make + Choose your car make + Quack! Choose your car make, waddle-waddle! - Select Model - Choose Model + Car Model + Quack-mobile Model - Select a Model - Choose a Model + Choose your car model + Quack! Choose your car model, waddle! Disable Automatic Fingerprint Detection - Turn Off Automatic Fingerprint Detection + Quack off Automatic Fingerprint Detection, waddle! - Forces the selected fingerprint and prevents it from ever changing. - Locks the chosen fingerprint, ensuring it never changes. + <b>Force the selected fingerprint</b> and prevent it from ever changing. + <b>Quack! Force the selected fingerprint</b> and keep it from ever changing, waddle-waddle. Disable openpilot Longitudinal Control - Turn off openpilot Longitudinal Control + Quack off openpilot Longitudinal Control, waddle! - Disables openpilot longitudinal control and uses the car's stock ACC instead. - Disables openpilot's longitudinal control, opting for the car's stock ACC instead. + <b>Disable openpilot longitudinal</b> and use the car's stock ACC instead. + <b>Quack! Disable openpilot longitudinal</b> and waddle with the carโ€™s stock ACC instead. Are you sure you want to completely disable openpilot longitudinal control? - Are you certain you wish to fully disable openpilot's longitudinal control? + Quack! Are you sure you want to fully flap off openpilot longitudinal control? General Motors Settings - General Motors Preferences + Quack! General Motors Settings, waddling into view! - Settings specific to <b>General Motors</b> vehicles. - Settings specific to <b>General Motors</b> cars. + <b>FrogPilot features for General Motors vehicles.</b> + <b>Quack! FrogPilot goodies for General Motors rides, waddlity-waddle.</b> FrogsGoMoo's Experimental Tune - FrogsGoMoo's Quirky Melody + Quack-quack! FrogsGoMooโ€™s Waddle-Experimental Tune - <b>FrogsGoMoo's</b> experimental <b>General Motors</b> tune that aims to smoothen out stopping and takeoff control based on nothing but guesswork. Use at your own risk! - <b>FrogsGoMoo's</b> experimental <b>General Motors</b> tune is designed to smooth out stopping and takeoff control, relying solely on guesswork. Use at your own risk! + <b>Experimental GM tune by FrogsGoMoo</b> that attempts to smoothen stopping and takeoff control. Use at your own risk! + <b>Experimental GM tune by FrogsGoMoo</b>, quack! Tries to smoothen stopping and takeoff controlโ€”waddle carefully. Use at your own risk, quack! Smooth Pedal Response on Hills - Smooth Pedal Reaction on Hills + Quack-smooth Pedal Response on Hills, waddle-waddle! - Smoothen the acceleration and braking when driving uphill or downhill. - Smooth out acceleration and braking when driving uphill or downhill. + <b>Smoothen acceleration and braking</b> when driving downhill/uphill. + <b>Quack-smooth acceleration and braking</b> when waddling downhill/uphill, quack! - Stop and Go Hack - Pause and Proceed Trick + Stop-and-Go Hack + Quack-n-Go Hack, waddle waddle! - Force stop and go on the <b>2017 Chevy Volt</b>. - Halt and proceed with the <b>2017 Chevy Volt</b>. + <b>Force stop-and-go</b> on the 2017 Chevy Volt. + <b>Quack! Force stop-and-go</b> on the 2017 Chevy Volt, waddle! Hyundai/Kia/Genesis Settings - Hyundai/Kia/Genesis Preferences + Quack! Hyundai/Kia/Genesis Settingsโ€”waddle in! - Settings specific to <b>Hyundai</b>, <b>Kia</b>, and <b>Genesis</b> vehicles. - Settings specific to <b>Hyundai</b>, <b>Kia</b>, and <b>Genesis</b> cars. + <b>FrogPilot features for Genesis, Hyundai, and Kia vehicles.</b> + <b>Quack! FrogPilot goodies for Genesis, Hyundai, and Kiaโ€”waddle on in!</b> comma's New Longitudinal API - Comma's New Longitudinal API + Quack! commaโ€™s New Longitudinal API, waddle-waddle! - comma's new longitudinal control system that has shown great improvement with acceleration and braking, but has issues on some <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> vehicles. - Comma's new longitudinal control system has shown significant improvement in acceleration and braking, yet it encounters issues on certain <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> vehicles. + <b>comma's new gas and brake control system</b> that improves acceleration and braking but may cause issues on some Genesis/Hyundai/Kia vehicles. + <b>commaโ€™s new gas โ€˜n brake control system</b>, quack! It boosts zoom and slows smooth, but might ruffle feathers on some Genesis/Hyundai/Kia rides, quack. "Taco Bell Run" Torque Hack - "Taco Bell Run" Torque Quack + Quack-quack! "Taco Bell Run" Torque Hackโ€”waddle turbo, quack! - The torque hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to improve turning at low speeds by increasing the allowed steering torque. - The torque hack from comma's 2022 "Taco Bell Run" drive is crafted to enhance low-speed turning by boosting the permitted steering torque. + <b>The steering torque hack from comma's 2022 "Taco Bell Run".</b> Designed to increase steering torque at low speeds for left and right turns. + <b>Quack! The steering torque hack from commaโ€™s 2022 โ€œTaco Bell Runโ€.</b> Waddle-boosts steering torque at low speeds for left and right turns, quack! Toyota/Lexus Settings - Toyota/Lexus Preferences + Quack-quack! Toyota/Lexus Settings, waddle on in! - Settings specific to <b>Toyota</b> and <b>Lexus</b> vehicles. - Settings specific to <b>Toyota</b> and <b>Lexus</b> cars. + <b>FrogPilot features for Lexus and Toyota vehicles.</b> + <b>Quack! FrogPilot goodies for Lexus and Toyota rides, waddles!</b> Automatically Lock/Unlock Doors - Auto Lock/Unlock Doors + Quack-toggle Auto Lock/Unlock Doors, waddle! - Automatically lock the doors when shifting into drive and unlock them when shifting into park. - Automatically lock the doors when shifting into drive and unlock them when shifting into park. + <b>Automatically lock/unlock doors</b> when shifting in and out of drive. + <b>Quack! Auto lock/unlock doors</b> when you waddle into and out of drive. - Cluster Speed Offset - Cluster Velocity Offset + Dashboard Speed Offset + Quackboard Speed Waddle-Offset - The cluster speed offset used by openpilot to match the speed displayed on the dash. - The cluster speed offset is used by openpilot to align the speed shown on the dashboard. + <b>The speed offset openpilot uses to match the speed on the dashboard display.</b> + <b>Quack! The speed offset openpilot uses to match the dashboard speed, waddle-waddle.</b> FrogsGoMoo's Personal Tweaks - FrogsGoMoo's Custom Adjustments + Quack! FrogsGoMooโ€™s Personal Tweaks, waddled just right! - <b>FrogsGoMoo's</b> personal tweaks for quicker acceleration and smoother braking. - <b>FrogsGoMoo's</b> personal adjustments for faster acceleration and smoother braking. + <b>Personal tweaks by FrogsGoMoo for quicker acceleration and smoother braking.</b> + <b>Quack! FrogsGoMooโ€™s personal tweaks for zippy zoom and silky-smooth stopping, waddle-waddle.</b> Lock Doors On Ignition Off After - Lock Doors When Ignition Is Turned Off + Quack! Lock doors after ignition goes off, waddle! - Automatically lock the doors after the car's ignition has been turned off and no one is detected in either of the front seats. - Automatically lock the doors once the car's ignition is off and no one is detected in the front seats. + <b>Automatically lock the doors on ignition off</b> when no one is detected in the front seats. + <b>Quack! Auto-lock the doors on ignition off</b> when no oneโ€™s in the front seats, waddle-waddle. - Force stop and go on <b>Toyota</b>/<b>Lexus</b> vehicles without stock stop and go functionality. - Force halt and proceed on <b>Toyota</b>/<b>Lexus</b> vehicles lacking standard stop and go functionality. + <b>Force stop-and-go</b> on Lexus/Toyota vehicles without stock stop-and-go functionality. + <b>Quack on stop-and-go</b> for Lexus/Toyota rides that lack stock stop-and-go, quack! MANAGE - OVERSEE + QUACK-MANAGE Lock - Secure + Quack-lock! Unlock - Open + Quack-unlock! Never - Never + Quack-never! seconds - seconds + Quack seconds! + + + None + Quack-none! + + + Vehicle Info + Quack! Vehicle Info, waddle-waddle! + + + <b>Information about your vehicle in regards to openpilot support and functionality.</b> + <b>Quack! Info about your vehicle, re: openpilot support and waddle-worthy functionality.</b> + + + <b>Detected 3rd party hardware.</b> + <b>Quack! Detected 3rd party hardware, waddle-waddle.</b> + + + openpilot Longitudinal Support + Quack! openpilot Longitudinal Support, waddle-waddle! + + + <b>Can openpilot control the vehicle's acceleration and braking?</b> + <b>Quack! Can openpilot paddle the go-go and whoa-whoa of the car?</b> + + + <b>Does your vehicle support the "comma pedal"?</b> + <b>Quack! Does your vehicle support the "comma pedal", waddle-waddle?</b> + + + Radar Support + Quack! Radar Support, waddle on! + + + <b>Does openpilot use the vehicle's radar data</b> alongside the device's camera for tracking lead vehicles? + <b>Quack! Does openpilot use the vehicle's radar data</b> alongside the device's camera to track lead cars, waddle-waddle? + + + SDSU Support + Quack-quack! SDSU Support, waddle this way! + + + <b>Does your vehicle support "SDSUs"?</b> + <b>Quack! Does your vehicle support "SDSUs"?</b> + + + Stop-and-Go Support + Quack-stop โ€˜nโ€™ go support, waddlinโ€™ along! + + + <b>Does your vehicle support stop-and-go driving?</b> + <b>Quack! Does your vehicle do stop-and-go waddling, quack?</b> + + + VIEW + Quack VIEW! + + + Yes + Quack-yes! + + + No + Quack-no! + + + 3rd Party Hardware Detected + Quack! 3rd Party Hardware Detected, waddle-warn! + + + Blind Spot Support + Quack! Blind Spot Support, waddle-safe! + + + <b>Does openpilot use the vehicle's blind spot data?</b> + <b>Quack! Does openpilot peep the vehicleโ€™s blind spot data, waddle-waddle?</b> + + + comma Pedal Support + Quack! comma Pedal Support, waddle on! FrogPilotVisualsPanel Advanced UI Controls - Enhanced UI Controls + Quack! Advanced UI Controls, waddle-waddle! - Advanced settings for fine-tuning openpilot's driving screen. - Advanced options for adjusting openpilot's driving display. + <b>Advanced visual changes</b> to fine-tune how the driving screen looks. + <b>Advanced visual quacks</b> to fine-tune how the driving screen looks, waddle-waddle. Hide Current Speed - Conceal Current Speed + Quack! Hide Current Speed, waddle-waddle! - Hide the current speed from the driving screen. - Remove the current speed from the driving display. + <b>Hide the current speed</b> from the driving screen. + <b>Quack-hide the current speed</b> from the driving screen, waddle! Hide Lead Marker - Conceal Lead Marker + Quack! Hide that lead marker, waddle-whoosh! - Hide the marker for lead vehicles from the driving screen. - Remove the marker for lead vehicles from the driving display. + <b>Hide the lead-vehicle marker</b> from the driving screen. + <b>Quack! Hide the lead-vehicle marker</b> from the driving screen, waddle-waddle. Hide Map Settings Button - Conceal Map Settings Button + Quack! Hide Map Settings Button, waddle-waddle! - Hide the map settings button from the driving screen. - Remove the map settings button from the driving screen. + <b>Hide the map settings button or map</b> from the driving screen. + <b>Quack! Hide the map settings button or the map</b> from the driving screen, waddle. Hide Max Speed - Conceal Max Speed + Quack! Hide Max Speed, waddle! - Hide the max speed from the driving screen. - Remove the max speed from the driving screen. + <b>Hide the max speed</b> from the driving screen. + <b>Quack! Hide the max speed</b> from the driving screen, waddle! Hide Non-Critical Alerts - Conceal Non-Critical Alerts + Quack! Hide Non-Critical Alerts, waddle-waddle! - Hide non-critical alerts from the driving screen. - Conceal non-critical alerts from the driving display. + <b>Hide non-critical alerts</b> from the driving screen. + <b>Quack! Hide non-critical alerts</b> from the driving screen, waddle-waddle. Hide Speed Limits - Conceal Speed Limits + Quack! Hide Speed Limits, waddle-waddle! - Hide the speed limits from the driving screen. - Remove the speed limits from the driving display. + <b>Hide posted speed limits</b> from the driving screen. + <b>Quack! Hide posted speed limits</b> from the driving screen, waddle-waddle. Use Wheel Speed - Apply Wheel Speed + Quack! Use Wheel Speed, waddle-waddle! - Use the vehicle's wheel speed instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives. - Use the vehicle's wheel speed instead of the cluster speed. This is purely a visual change and doesn't affect how openpilot operates. + <b>Use the vehicle's wheel speed</b> instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives! + <b>Quack! Use the vehicleโ€™s wheel speed</b> instead of the cluster speed, waddle-waddle. Purely visual, no change to how openpilot drives, quack! Developer UI - UI Developer + Quackveloper UI - Detailed information about openpilot's internal operations. - Comprehensive details on openpilot's internal workings. + <b>Detailed information about openpilot's internal operations.</b> + <b>Quack! Detailed scoop on openpilotโ€™s inner workings, waddle-waddle.</b> Adjacent Path Metrics - Nearby Path Metrics + Quack! Adjacent Path Metrics, waddle-waddle! - Metrics displayed on top of the adjacent lanes measuring their current width. - Metrics are shown above the adjacent lanes, indicating their current width. + <b>Show the width of the adjacent lanes.</b> + <b>Quack! Show the width of the adjacent lanes, waddle-waddle.</b> Developer Metrics - Developer Stats + Quack! Developer Metrics, waddle-waddle! - Performance data, sensor readings, and system metrics for debugging and optimizing openpilot. - Performance data, sensor readings, and system metrics for debugging and optimizing openpilot. + <b>Performance data, sensor readings, and system metrics</b> for debugging and optimizing openpilot. + <b>Quack! Performance data, sensor readings, and system metrics</b> for debugging and optimizing openpilot, waddle-waddle. Border Metrics - Boundary Metrics + Quack-quack! Border Metrics, waddle stats! - Metrics displayed around the border of the driving screen.<br><br><b>Blind Spot</b>: Turn the border red when a vehicle is detected in a blind spot<br><b>Steering Torque</b>: Highlight the border green to red in accordance to the amount of steering torque being used<br><b>Turn Signal</b>: Flash the border yellow when a turn signal is active - Metrics are shown around the edge of the driving screen.<br><br><b>Blind Spot</b>: Turn the border red when a vehicle is detected in a blind spot<br><b>Steering Torque</b>: Highlight the border from green to red based on the steering torque applied<br><b>Turn Signal</b>: Flash the border yellow when a turn signal is active + <b>Show statuses along the border of the driving screen.</b><br><br><b>Blind Spot</b>: The border turns red when a vehicle is in a blind spot<br><b>Steering Torque</b>: The border goes from green to red according to how much steering torque is being used<br><b>Turn Signal</b>: The border flashes yellow when a turn signal is on + <b>Quack! Show statuses along the edge of the driving pond.</b><br><br><b>Blind Spot</b>: Quack! Border goes red when a sneaky carโ€™s in the blind spot<br><b>Steering Torque</b>: Waddle from green to red as steering torque ramps up, quack<br><b>Turn Signal</b>: Flashy yellow border when the blinky is on, quack Lead Info - Lead Details + Quack Lead Info - Metrics displayed under vehicle markers listing their distance and current speed. - Metrics shown beneath vehicle markers indicate their distance and current speed. + <b>Show each tracked vehicle's distance and speed</b> below its marker. + <b>Quack! Show each tracked vehicleโ€™s distance and speed</b> below its marker, waddle-waddle. FPS Display - FPS Indicator + Quack-FPS Display, waddle! - Display the <b>Frames Per Second (FPS)</b> at the bottom of the driving screen. - Show the <b>Frames Per Second (FPS)</b> at the bottom of the driving screen. + <b>Show the frames per second (FPS)</b> at the bottom of the driving screen. + <b>Quack! Show the frames per second (FPS)</b> at the bottom of the driving screen, waddle-waddle. Numerical Temperature Gauge - Digital Temperature Gauge + Quack-o-Meter: Temperature, but numbers! Waddle gauge! - Use numerical temperature readings instead of status labels in the sidebar. - Display numerical temperature readings in the sidebar instead of status labels. + <b>Show a numerical temperature in the sidebar</b> instead of the status labels. + <b>Quack! Show a numerical temperature in the sidebar</b> instead of those status labels, waddle! Sidebar Metrics - Sidebar Stats + Quackbar Metrics ๐Ÿฆ† - Display system information (<b>CPU</b>, <b>GPU</b>, <b>RAM usage</b>, <b>IP address</b>, <b>device storage</b>) in the sidebar. - Show system details (<b>CPU</b>, <b>GPU</b>, <b>RAM usage</b>, <b>IP address</b>, <b>device storage</b>) in the sidebar. + <b>Display system information</b> (CPU, GPU, RAM usage, IP address, device storage) in the sidebar. + <b>Quack! Display system information</b> (CPU, GPU, RAM usage, IP address, device storage) in the sidebar, waddle-waddle. Use International System of Units - Apply the International System of Units + Quack! Use International System of Units, waddle-waddle! - Display measurements using the <b>International System of Units (SI)</b> standard. - Show measurements using the <b>International System of Units (SI)</b> standard. + <b>Display measurements using the "International System of Units" (SI)</b> standard. + <b>Quack! Show measurements using the "International System of Units" (SI) standard, waddle-waddle.</b> Developer Sidebar - Developer Panel + Quack-veloper Sidebar, waddle on in! - Display debugging info and metrics in a dedicated sidebar on the right side of the screen. - Show debugging info and metrics in a dedicated sidebar on the right side of the screen. + <b>Display debugging info and metrics</b> in a dedicated sidebar on the right side of the screen. + <b>Quack! Show debugging info and metrics</b> in a dedicated sidebar on the right side of the screen, waddling along. Metric #1 - Metric #1 + Quack-tric #1 - Metric to display in the first metric in the "Developer Sidebar". - Metric to show as the first metric in the "Developer Sidebar". + <b>Select the metric shown in the first "Developer Sidebar" widget.</b> + <b>Quack! Pick the metric shown in the first "Developer Sidebar" widget, waddle-waddle.</b> Metric #2 - Metric #2 + Quack-tric #2 - Metric to display in the second metric in the "Developer Sidebar". - Metric to show as the second metric in the "Developer Sidebar". + <b>Select the metric shown in the second "Developer Sidebar" widget.</b> + <b>Quack! Pick the metric shown in the second "Developer Sidebar" widget, waddle-waddle.</b> Metric #3 - Metric #3 + Quack-tric #3 - Metric to display in the third metric in the "Developer Sidebar". - Metric to show as the third metric in the "Developer Sidebar". + <b>Select the metric shown in the third "Developer Sidebar" widget.</b> + <b>Quack! Pick the metric shown in the third "Developer Sidebar" widget, waddle-waddle.</b> Metric #4 - Metric #4 + Quack-tric #4 - Metric to display in the fourth metric in the "Developer Sidebar". - Metric to show as the fourth metric in the "Developer Sidebar". + <b>Select the metric shown in the fourth "Developer Sidebar" widget.</b> + <b>Quack! Pick the metric shown in the fourth "Developer Sidebar" widget, waddle-waddle.</b> Metric #5 - Metric #5 + Quacktric #5 - Metric to display in the fifth metric in the "Developer Sidebar". - Metric to show as the fifth metric in the "Developer Sidebar". + <b>Select the metric shown in the fifth "Developer Sidebar" widget.</b> + <b>Quack! Pick the metric shown in the fifth "Developer Sidebar" widget, waddle-waddle.</b> Metric #6 - Metric #6 + Quacktric #6 - Metric to display in the sixth metric in the "Developer Sidebar". - Metric to show as the sixth metric in the "Developer Sidebar". + <b>Select the metric shown in the sixth "Developer Sidebar" widget.</b> + <b>Quack! Pick the metric shown in the sixth "Developer Sidebar" widget, waddle-waddle.</b> Metric #7 - Metric #7 + Quacktric #7 - Metric to display in the seventh metric in the "Developer Sidebar". - Display the seventh metric in the "Developer Sidebar". + <b>Select the metric shown in the seventh "Developer Sidebar" widget.</b> + <b>Quack! Pick the metric shown in the seventh "Developer Sidebar" widget, waddle-waddle.</b> Developer Widgets - Developer Gadgets + Quacker Dev Widgets ๐Ÿฆ† - Overlays displaying debugging visuals, internal states, and model predictions on the driving screen. - Overlays show debugging visuals, internal states, and model predictions on the driving screen. + <b>Overlays for debugging visuals, internal states, and model predictions</b> on the driving screen. + <b>Quack! Overlays for debugging visuals, internal states, and model predictions</b> on the driving screen, waddle-waddle. Adjacent Leads Tracking - Tracking Adjacent Leads + Quack! Adjacent Leads Tracking, waddle-waddle! - Adjacent leads detected by the car's radar to the left and right of the current driving path. - The car's radar detected adjacent leads to the left and right of the current driving path. + <b>Display adjacent leads detected by the car's radar</b> to the left and right of the current driving path. + <b>Quack! Show adjacent leads the carโ€™s radar spotted</b> to the left and right of the current driving path, waddle-waddle. Model Stopping Point - Model Termination Point + Quack! Model Stopping Point, waddlinโ€™ to a halt! - Display an image on the screen where openpilot is wanting to stop. - Show an image on the screen where openpilot intends to stop. + <b>Show a stop-sign marker where the model intends to stop.</b> + <b>Quack! Show a stop-sign marker where the model plans to stop, waddle-waddle.</b> Radar Tracks - Radar Monitoring + Quack-tracks on the radar, waddle waddle! - Display all of the radar points produced by the car's radar. - Show all radar points generated by the car's radar. + <b>Display all radar points</b> produced by the car's radar. + <b>Quack! Display all radar points</b> produced by the car's radar, waddle-waddle. Driving Screen Widgets - Dashboard Screen Widgets + Quack! Driving Screen Widgets, waddle-waddle! - Custom FrogPilot widgets for the driving screen. - Custom FrogPilot widgets for the dashboard. + <b>Custom FrogPilot widgets</b> for the driving screen. + <b>Custom FrogPilot widgets</b> on the driving screen, quack! Waddle on in! Acceleration Path - Speed Path + Quack-celeration Path, waddle! - Colorize the driving path based on openpilot's current desired acceleration and deceleration rate. - Color the driving path according to openpilot's current desired acceleration and deceleration rate. + <b>Color the driving path by planned acceleration and braking.</b> + <b>Quack! Color the driving path by planned zoom-zoom and whoa-brakes, waddle!</b> Adjacent Lanes - Nearby Lanes + Quack! Side-by-side lanes, waddle-waddle. - Driving paths for the left and right adjacent lanes. - Driving routes for the left and right neighboring lanes. + <b>Show the driving paths for the left and right lanes.</b> + <b>Quack! Show the driving paths for the left and right lanes, waddle-waddle.</b> Blind Spot Path - Blind Spot Trail + Quack! Blind Spot Path, waddlinโ€™ by! - Display a red driving path for detected vehicles in the corresponding lane's blind spot. - Show a red path for vehicles detected in the blind spot of the corresponding lane. + <b>Show a red path when a vehicle is in that lane's blind spot.</b> + <b>Quack! Show a red path when a vehicle waddles in that laneโ€™s blind spot.</b> Compass - Guide + Quack-pass - A compass to show the current driving direction. - A compass to display the current driving direction. + <b>Show the current driving direction</b> with a simple on-screen compass. + <b>Quack! Show the current driving direction</b> with a simple on-screen compass, waddle-waddle. Driving Personality Button - Driving Style Button + Quack! Driving Personality Buttonโ€”waddle and tap! - Display the current driving personality on the screen. Tap to switch personalities, or long press for 0.5 seconds to change the current state of <b>Experimental Mode</b>, or 2.5 seconds for <b>Traffic Mode</b>. - Show the current driving personality on the screen. Tap to switch personalities, or press for 0.5 seconds to toggle <b>Experimental Mode</b>, or for 2.5 seconds to change <b>Traffic Mode</b>. + <b>Control and view the current driving personality</b> via a driving screen widget. + <b>Quack! Control and peek at your driving personality</b> via a driving screen widget, waddle-waddle. Gas / Brake Pedal Indicators - Gas / Brake Pedal Signals + Quack! Gas / Brake Pedal Quackers - Pedals to indicate when either of the pedals are currently being used.<br><br><b>Dynamic</b>: The pedals change in opacity in accordance to how much openpilot is accelerating or decelerating<br><b>Static</b>: The pedals are displayed with full opacity when active, and dimmed when not in use - Pedals show when either is in use.<br><br><b>Dynamic</b>: Pedals adjust opacity based on how much openpilot accelerates or decelerates.<br><b>Static</b>: Pedals appear fully opaque when active and dim when not in use. + <b>On-screen gas and brake indicators.</b><br><br><b>Dynamic</b>: Opacity changes according to how much openpilot is accelerating or braking<br><b>Static</b>: Full when active, dim when not + <b>Quack! On-screen gas and brake indicators.</b><br><br><b>Dynamic</b>: Quack-quack, opacity waddles with how much openpilot is accelerating or braking<br><b>Static</b>: Full when active, dim when notโ€”quack Rotating Steering Wheel - Turning Steering Wheel + Quack! Rotating Steering Wheelโ€”waddle-waddle! - Rotate the steering wheel alongside the vehicle's physical steering wheel. - Turn the steering wheel in sync with the vehicle's actual steering wheel. + <b>Rotate the driving screen wheel</b> with the physical steering wheel. + <b>Quack! Rotate the driving screen wheel</b> with the physical steering wheel, waddle-waddle. Model UI - Design Interface + Quack Model UI, waddle! - Model visualizations on the driving screen for the driving path, lane lines, path edges, and road edges. - Display visualizations on the driving screen for the driving path, lane lines, path edges, and road edges. + <b>Model visualizations</b> for the driving path, lane lines, path edges, and road edges. + <b>Model visualizations</b>โ€”quack!โ€”for the driving path, lane lines, path edges, and road edges, waddle-waddle. Dynamic Path Width - Variable Path Width + Quacky Path Width, waddle-dynamic! - Adjust the width of the driving path based on the current engagement state.<br><br><b>Fully engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Fully disengaged</b>: 50% - Modify the width of the driving path according to the current engagement state.<br><br><b>Fully engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Fully disengaged</b>: 50% + <b>Change the path width based on engagement.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% + <b>Quack! Path width waddles with engagement.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% Lane Lines Width - Width of Lane Lines + Quack! Lane Lines Width, waddle-waddle! - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 4 inches. - The thickness of the lane lines on the driving screen.<br><br><b>Default aligns with the <b>MUTCD</b> lane line width standard of 4 inches. + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 4 inches. + <b>Quack! Set the lane-line thickness.</b><br><br>Default waddles with the MUTCD lane-line width standard of 4 inches. Path Edges Width - Path Edges Thickness + Quack! Path Edges Width, waddle-waddle! - The width of the edges of the driving path that represent different driving modes and statuses.<br><br>Default is <b>20%</b> of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden - The width of the driving path edges indicates various driving modes and statuses.<br><br>The default is <b>20%</b> of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + <b>Set the driving-path edge width</b> that represents different driving modes and statuses.<br><br>Default is 20% of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + <b>Quack! Set the driving-path edge width</b> to show different driving modes and statuses, waddle-waddle.<br><br>Default is 20% of the total path width, quack.<br><br>Color Guide, quack:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden Path Width - Path Width + Quack Path Width, waddle! - The width of the driving path on the driving screen.<br><br>Default <b>(6.1 feet)</b> matches the width of a <b>2019 Lexus ES 350</b>. - The width of the driving path on the driving screen.<br><br>Default <b>(6.1 feet)</b> matches the width of a <b>2019 Lexus ES 350</b>. + <b>Set the driving-path width.</b><br><br>Default (6.1 feet) matches the width of a 2019 Lexus ES 350. + <b>Quack! Set the driving-path width.</b><br><br>Default (6.1 feet) matches the width of a 2019 Lexus ES 350, waddle-waddle. Road Edges Width - Width of Road Edges + Quack! Road Edges Width, waddle-waddle! - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 4 inches. - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 4 inches. + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 4 inches. + <b>Quack! Set the road-edge thickness, waddly-thick or thin.</b><br><br>Default quacks to half of the MUTCD lane-line width standard of 4 inches. "Unlimited" Road UI - "Unlimited" Road Interface + Quack โ€œUnlimitedโ€ Road UI, waddle-waddle! - Extend the display of the driving path, lane lines, and road edges as far as the model can see. - Expand the display of the driving path, lane lines, and road edges as far as the model can perceive. + <b>Extend the length of the driving path, lane lines, and road edges</b> for as far as the model can see. + <b>Quack! Stretch the driving path, lane lines, and road edges</b> as far as the model can see, waddle-waddle. Navigation Widgets - Navigation Tools + Quack-igation Widgets, waddle! - Map style tweaks, speed limits, and other navigation related widgets. - Adjust map styles, speed limits, and other navigation-related widgets. + <b>Map style, speed limits, and other navigation widgets.</b> + <b>Quack! Map style, speed limits, and other navigation widgets, waddle-waddle.</b> Larger Map Display - Expanded Map View + Bigger Map, quack-quack display! - Increase the size of the map for easier navigation readings. - Enlarge the map for easier navigation readings. + <b>Increase the map size</b> for easier navigation readings. + <b>Quack up the map size</b> for easier waddle-read navigation. Map Style - Map Design + Quack Map Style - The map style used for <b>Navigate on openpilot (NOO)</b>:<br><br><b>Stock</b>: Default comma.ai style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>mike854's (Satellite hybrid)</b>: Customized hybrid satellite view - The map style options for <b>Navigate on openpilot (NOO)</b>:<br><br><b>Stock</b>: Default comma.ai style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Highlights outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme highlighting traffic conditions<br><b>mike854's (Satellite hybrid)</b>: Customized hybrid satellite view + <b>Select the map style</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai style<br><b>FrogPilot</b>: Official FrogPilot map style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>Mike's Personalized Style</b>: Customized hybrid satellite view + <b>Quack! Pick a map style</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai vibe, quack<br><b>FrogPilot</b>: Official FrogPilot map style, waddle<br><b>Mapbox Streets</b>: Standard street-focused view, quack-quack<br><b>Mapbox Outdoors</b>: Highlights outdoor and terrain, waddle on<br><b>Mapbox Light</b>: Minimalist, bright theme, quack bright<br><b>Mapbox Dark</b>: Minimalist, dark theme, night-quack<br><b>Mapbox Navigation Day</b>: Tuned for daytime navigation, waddles in sun<br><b>Mapbox Navigation Night</b>: Tuned for nighttime navigation, moon-quack<br><b>Mapbox Satellite</b>: Satellite imagery only, sky-quack<br><b>Mapbox Satellite Streets</b>: Hybrid satellite with street labels, waddly hybrid<br><b>Mapbox Traffic Night</b>: Dark theme showing traffic, honk-quack<br><b>Mike's Personalized Style</b>: Customized hybrid satellite view, duckโ€™s choice Road Name - Street Name + Quack Road Name, waddle! - Display the road name at the bottom of the driving screen using data from <b>OpenStreetMap</b>. - Show the road name at the bottom of the driving screen using data from <b>OpenStreetMap</b>. + <b>Display the road name at the bottom of the driving screen</b> using data from "OpenStreetMap (OSM)". + <b>Quack! Show the road name at the bottom of the driving screen</b> using data from "OpenStreetMap (OSM)". Show Speed Limits - Display Speed Limits + Quack! Show Speed Limits, waddle-waddle! - Display speed limits in the top left corner of the driving screen. Uses data from your car's dashboard (if supported) and data from <b>OpenStreetMaps</b>. - Show speed limits in the top left corner of the driving screen. It uses data from your car's dashboard (if supported) and <b>OpenStreetMaps</b>. + <b>Show speed limits</b> in the top-left corner of the driving screen. Uses data from the car's dashboard (if supported) and "OpenStreetMap (OSM)". + <b>Quack! Show speed limits</b> in the top-left corner of the driving screen. Waddle-uses data from the car's dashboard (if supported) and "OpenStreetMap (OSM)". Show Speed Limits from Mapbox - Display Speed Limits from Mapbox + Quack! Show Speed Limits from Mapbox, waddle-waddle! - Use <b>Mapbox</b> speed limit data when no other sources are available. - When other sources are unavailable, use <b>Mapbox</b> speed limit data. + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>Quack! Waddle to Mapbox speed-limit data when no other source is around.</b> Use Vienna-Style Speed Signs - Adopt Vienna-Style Speed Signs + Quack on Vienna-Style Speed Signs, waddle-waddle! - Force <b>Vienna-style (EU)</b> speed limit signs instead of <b>MUTCD (US)</b>. - Enforce <b>Vienna-style (EU)</b> speed limit signs instead of <b>MUTCD (US)</b>. + <b>Show Vienna-style (EU) speed-limit signs</b> instead of MUTCD (US). + <b>Quack! Show Vienna-style (EU) speed-limit signs</b> instead of MUTCD (US), waddle-waddle. Quality of Life - Life Quality + Quack-tastic Comfort Waddle - Visual features to improve your overall openpilot experience. - Visual elements to enhance your overall openpilot experience. + <b>Miscellaneous visual changes</b> to fine-tune how the driving screen looks. + <b>Quacky little visual tweaks</b> to fine-tune how the driving screen looks, quack. Camera View - Camera Angle + Quack Cam View, waddle! - The active camera view display. This is purely a visual change and doesn't impact how openpilot drives! - The active camera view is displayed. This is purely a visual change and doesn't affect how openpilot drives! + <b>Select the active camera view.</b> This is purely a visual change and doesn't impact how openpilot drives! + <b>Quack! Pick the active camera view.</b> Just a looks-only change, quackโ€”no effect on how openpilot drives! Show Driver Camera When In Reverse - Display Rear Camera When Reversing + Quack! Show Driver Camera when waddling in Reverse - Display the driver camera feed when the vehicle is in reverse. - Show the driver camera feed when the vehicle is in reverse. - - - Standby Mode - Sleep Mode - - - Turn the screen off when driving and automatically wake it up if engagement state changes or important alerts occur. - Switch off the screen while driving, and automatically activate it if the engagement state changes or important alerts quack up. + <b>Show the driver camera feed</b> when the vehicle is in reverse. + <b>Quack! Show the driver camera feed</b> when the vehicle waddles into reverse. Stopped Timer - Timer Halted + Quack! Timer stoppedโ€”waddle halt! - Replace the current speed with a timer when stopped to indicate how long the vehicle has been stopped for. - Swap the current speed display with a timer when halted to show how long the vehicle has been stationary. + <b>Show a timer when stopped</b> in place of the current speed to indicate how long the vehicle has been stopped. + <b>Quack! Show a timer when stopped</b>, waddling in place of current speed to show how long the vehicleโ€™s been at a standstill, quack. + + + Hide Map + Quack! Hide Map, waddle! Blind Spot - Blind Spot + Quack Spot Steering Torque - Steering Force + Quack-steer Torque, waddle-waddle! Turn Signal - Indicator Light + Quack! Turny-wurny Signal, waddle-wink! Fahrenheit - Fahrenheit + Quack-enheit CPU - Processor + Quack-Processing Unit (CPU) GPU - Graphics Processing Unit + Quack-PU IP - IP + IP quack! RAM - RAM + Quack-RAM! SSD Left - SSD Remaining + Quack! SSD Left, waddle-waddle! SSD Used - SSD Utilized + Quack! SSD Used None - None + Quack-none Acceleration: Current - Acceleration: Present + Quack-celeration: Current, quack! Acceleration: Max - Acceleration: Peak + Quack-celerate: Max, waddle-whoosh! Auto Tune: Actuator Delay - Auto Tune: Actuator Lag + Quack-Tune: Actuator Delay Auto Tune: Friction - Auto Tune: Resistance + Quack-o Tune: Friction waddles! Auto Tune: Lateral Acceleration - Auto Tune: Sideways Acceleration + Quack-Tune: Lateral Acceleration, waddle! Auto Tune: Steer Ratio - Auto Tune: Steering Ratio + Quack-o Tune: Steer Ratio Auto Tune: Stiffness Factor - Auto Tune: Rigidity Factor + Quack-o Tune: Stiffness Factor, waddle! Engagement %: Lateral - Engagement %: Sideways + Quack-gagement %: Lateral, waddle! Engagement %: Longitudinal - Engagement %: Over time + Quack-gagement %: Waddle-itudinal Lateral Control: Steering Angle - Steering Angle: Lateral Control + Quack! Lateral Control: Waddle-angle Steering Lateral Control: Torque % Used - Lateral Control: Torque % Utilized + Quack! Lateral Control: Torque % Used, waddle-waddle! Longitudinal Control: Actuator Acceleration Output - Longitudinal Control: Actuator Acceleration Quack + Quack! Longitudinal Control: Actuator Acceleration Output, waddle-whoosh! Longitudinal MPC Jerk: Acceleration - Longitudinal MPC Jerk: Acceleration + Quack! Longitudinal MPC Jerk: Accelerationโ€”waddle-whoosh! Longitudinal MPC Jerk: Danger Zone - Longitudinal MPC Jerk: Risk Zone + Quack! Longitudinal MPC Jerk: Danger Zone, waddle-careful! Longitudinal MPC Jerk: Speed Control - Longitudinal MPC Jerk: Velocity Management + Quack-quack! Longitudinal MPC Jerk: Speed Control, waddle on! SELECT - SELECT + QUACK-SELECT Select a metric to display - Choose a metric to show + Quack! Pick a metric to display, waddle-waddle! Show Distance - Display Distance + Quack! Show Distance, waddlinโ€™ on! Dynamic - Energetic + Quack-namic Static - Unchanging + Quack-static inches - inches + quack-inches Off - Off + Quack: Off. feet - paws + Quack-feet ๐Ÿฆ† Full Map - Complete Map + Quack! Full Map Stock openpilot - Standard openpilot + Quack-Quack openpilot - FrogsGoMoo's Personalized Style - FrogsGoMoo's Unique Style + FrogPilot + FrogPilot quack! Mapbox Streets - Mapbox Roads + Quackbox Streets Mapbox Outdoors - Mapbox Adventure + Quackbox Outdoors ๐Ÿฆ† Mapbox Light - Mapbox Quack + Quackbox Light Mapbox Dark - Mapbox Night + Quackbox Dark Mapbox Navigation Day - Mapbox Navigation Day + Quackbox Navigation Day, quack! Mapbox Navigation Night - Mapbox Navigation Evening + Quackbox Navigation Night, quack! Mapbox Satellite - Mapbox Aerial + Quackbox Satellite Mapbox Satellite Streets - Mapbox Satellite Views + Quackbox Satellite Streets, waddle-waddle! Mapbox Traffic Night - Mapbox Traffic Evening + Quackbox Traffic Night, waddle! Mike's Personalized Style - Mike's Unique Style + Quack! Mikeโ€™s Quacktastic Style, waddle-waddle! Select a map style - Choose a map style + Quack! Pick a map style, waddle! Auto - Car + Quack-Auto Driver - Operator + Quack-driver Standard - Regular + Quack-standard! Wide - Broad + Quack-wide foot - foot + quack-foot inch - inch + Quack-inch meter - metre + Quack-meter, waddlinโ€™ measure! meters - meters + quacks meters centimeter - centimetre + quack-centimeter centimeters - cm + quack-centimeters - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 10 centimeters. - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 10 cm. + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 10 centimeters. + <b>Quack! Set the lane-line thickness.</b><br><br>Default waddles with the MUTCD lane-line width of 10 centimeters, quack. - The width of the driving path on the driving screen.<br><br>Default <b>(1.9 meters)</b> matches the width of a <b>2019 Lexus ES 350</b>. - The width of the driving path on the driving screen.<br><br>Default <b>(1.9 meters)</b> matches the width of a <b>2019 Lexus ES 350</b>. + <b>Set the driving-path width.</b><br><br>Default (1.9 meters) matches the width of a 2019 Lexus ES 350. + <b>Quack! Set the driving-path width.</b><br><br>Default (1.9 meters) waddles like a 2019 Lexus ES 350โ€™s width. - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 10 centimeters. - The thickness of the road edges on the driving screen.<br><br><b>By default, it matches half of the <b>MUTCD</b> lane line width standard of 10 centimeters. + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 10 centimeters. + <b>Quack! Set the road-edge thickness, waddlers.</b><br><br>Default quacks to half the MUTCD lane-line width standard of 10 centimeters. FrogPilotWheelPanel Distance Button - Range Button + Quack! Distance Button, waddle-waddle! - The action for a short press of the <b>Distance</b> button. - The response for a brief press of the <b>Distance</b> button. + <b>Action performed when the "Distance" button is pressed.</b> + <b>Quack! What happens when the "Distance" button gets pecked, waddle-waddle.</b> Distance Button (Long Press) - Distance Button (Press and Hold) + Quack! Distance Button (Long Press), waddle-press and hold! - The action for a 0.5+ second press of the <b>Distance</b> button. - The action triggered by pressing the <b>Distance</b> button for over 0.5 seconds. + <b>Action performed when the "Distance" button is pressed for more than 0.5 seconds.</b> + <b>Quack! Action when the "Distance" button is held over 0.5 seconds, waddley-quack.</b> Distance Button (Very Long Press) - Distance Button (Extended Press) + Quack! Distance Button (Very Long Press), waddle-waddle! - The action for a 2.5+ second press of the <b>Distance</b> button. - The function triggered by pressing the <b>Distance</b> button for over 2.5 seconds. + <b>Action performed when the "Distance" button is pressed for more than 2.5 seconds.</b> + <b>Quack! What happens when the "Distance" button is held more than 2.5 seconds, waddle-waddle.</b> LKAS Button - LKAS Control + Quack! LKAS Button, waddle-waddle! - The action for pressing the <b>LKAS</b> button. - Press the <b>LKAS</b> button. + <b>Action performed when the "LKAS" button is pressed.</b> + <b>Quack! Action when the "LKAS" button gets peck-pressed, waddle-waddle.</b> - Nothing - Nothing + No Action + Quack! No action, just a calm waddle. - Pause Lateral - Lateral Pause + Pause Steering + Quack! Pause Steering, waddle-waddle! Change "Personality Profile" - Character Quackfile + Quack-change โ€œPersonality Profileโ€, waddle! Force openpilot to Coast - Make openpilot coast + Quack! Force openpilot to Coast, waddle-whoosh! - Pause Longitudinal - Suspend Longitudinal + Pause Acceleration/Braking + Quack! Pause Acceleration/Braking, waddle-wait! Toggle "Experimental Mode" On/Off - Switch "Experimental Mode" On/Off + Quack! Flip "Experimental Mode" On/Off, waddle-waddle! Toggle "Traffic Mode" On/Off - Switch "Traffic Mode" On/Off + Quack! Toggle "Traffic Mode" On/Off, waddle-waddle! SELECT - SELECT + QUACK-SELECT Select a function to assign to this button - Choose a function to assign to this button + Quack! Pick a function to assign to this button, waddle! InputDialog Cancel - Cancel + Quack-cancel! Need at least %n character(s)! - - At least %n character required! - At least %n characters required! + + Quack! Need at least %n character(s), waddlers! + Quack! Need at least %n character(s), waddlers! Characters: %1/%2 - Characters: %1/%2 + Quack-acters: %1/%2 Installer Installing... - Installing... + Quackstalling... MapETA eta - ETA + quack-eta min - min + quack-min hr - hr + Quack-hr! MapSettings NAVIGATION - NAVIGATING + QUAVIGATION! Quack! Manage at %1 - Oversee at %1 + Quack-manage at %1, waddle! MapWindow Map Loading - Loading Map + Quack! Map Loading, waddle-waddle! Waiting for GPS - Awaiting GPS + Quack! Waiting for GPS, waddle-waitโ€ฆ Waiting for route - Awaiting route - - - - ModelReview - - How would you rate that drive? - How would you rate that ride? - - - Blacklist this model - Block this model - - - The model used during that drive was: - The model employed during that drive was: - - - Current Model Score: 0 - Current Model Score: 0 - - - Current Model Rank: 0 - Current Model Status: 0 - - - Total Model Drives: 0 - Total Model Drives: None - - - Total Overall Model Drives: 0 - Total Overall Model Drives: None - - - Total Model Drives: %1 - Total Model Drives: %1 - - - Current Model Rank: %1 - Current Model Rank: %1 - - - Current Model Score: %1 - Current Model Score: %1 - - - Total Overall Drives: %1 - Total Drives Overall: %1 - - - Model successfully blacklisted! - Model blacklisted successfully! + Quack! Waiting for route, waddle-wait. MultiOptionDialog Select - Choose + Quack-select! Cancel - Cancel + Quack-cancel! Networking Advanced - Sophisticated + Quackvanced Enter password - Input password + Quack! Enter password, waddle-waddle. for "%1" - for "%1" + quack for โ€œ%1โ€ quack Wrong password - Incorrect password + Quack! Wrong password, waddle back and try again! OffroadAlert Device temperature too high. System cooling down before starting. Current internal component temperature: %1 - Device temperature too high. System cooling down before starting. Current internal component temperature: %1 + Quack! Device too toasty. System cooling down before it starts. Waddle notice: current internal component temperature: %1 Immediately connect to the internet to check for updates. If you do not connect to the internet, openpilot won't engage in %1 - Connect to the internet immediately to check for updates. Without an internet connection, openpilot won't engage in %1. + Quack! Connect to the internet now to check for updates. If you donโ€™t waddle online, openpilot wonโ€™t engage in %1 Connect to internet to check for updates. openpilot won't automatically start until it connects to internet to check for updates. - Connect to the internet to check for updates. openpilot won't start automatically until it connects to the internet to check for updates. + Quack! Connect to the internet to check for updates. Waddle-warning: openpilot wonโ€™t auto-start until it quacks online to check for updates. Unable to download updates %1 - Cannot download updates + Quack! Canโ€™t fetch updates, splash! %1 Taking camera snapshots. System won't start until finished. - Capturing camera snapshots. The system won't start until complete. + Quack! Taking camera snapshots. Waddle onโ€”system wonโ€™t start till theyโ€™re done, quack! An update to your device's operating system is downloading in the background. You will be prompted to update when it's ready to install. - Your device's operating system update is downloading in the background. You'll be prompted to install it once it's ready. + Quack! An update to your device's operating system is splashing in the background. Waddle on; youโ€™ll be prompted to update when itโ€™s ready to install. Device failed to register. It will not connect to or upload to comma.ai servers, and receives no support from comma.ai. If this is an official device, visit https://comma.ai/support. - Device registration failed. It won't connect to or upload to comma.ai servers, and receives no support from comma.ai. If this is an official device, visit https://comma.ai/support. + Quack! Device flopped registration. It wonโ€™t connect or upload to comma.ai serversโ€”no support from comma.ai, quack. If this is an official device, waddle to https://comma.ai/support. NVMe drive not mounted. - NVMe drive not attached. + Quack! NVMe drive not mountedโ€”waddle fix it! Unsupported NVMe drive detected. Device may draw significantly more power and overheat due to the unsupported NVMe. - Unsupported NVMe drive detected. The device might draw much more power and overheat because of the unsupported NVMe. + Quack! Unsupported NVMe drive detected. Waddle-warning: device may slurp much more power and overheat because of that unsupported NVMe, quack! openpilot was unable to identify your car. Your car is either unsupported or its ECUs are not recognized. Please submit a pull request to add the firmware versions to the proper vehicle. Need help? Join discord.comma.ai. - openpilot couldn't identify your car. It might be unsupported, or its ECUs aren't recognized. Please submit a pull request to add the firmware versions to the correct vehicle. Need help? Join discord.comma.ai. + Quack! openpilot couldnโ€™t spot your car. Waddle: itโ€™s unsupported or its ECUs arenโ€™t recognized. Splash a pull request to add the firmware versions to the proper vehicle. Need help? Waddle to discord.comma.ai, quack! openpilot was unable to identify your car. Check integrity of cables and ensure all connections are secure, particularly that the comma power is fully inserted in the OBD-II port of the vehicle. Need help? Join discord.comma.ai. - openpilot couldn't identify your car. Verify cable integrity and ensure all connections are secure, especially that the comma power is fully inserted into the vehicle's OBD-II port. Need help? Join discord.comma.ai. + Quack! openpilot couldnโ€™t spot your car. Waddle over and check cable integrity and snug connectionsโ€”especially that comma power is fully tucked into the OBD-II port, quack! Need help? Paddle to discord.comma.ai. openpilot detected a change in the device's mounting position. Ensure the device is fully seated in the mount and the mount is firmly secured to the windshield. - openpilot noticed a shift in the device's mounting position. Make sure the device is snugly seated in the mount and that the mount is securely attached to the windshield. + Quack! openpilot spotted a waddle-shift in the deviceโ€™s perch. Make sure the device is snug in the mount, and the mount is quack-solid on the windshield. OffroadHome UPDATE - REFRESH + QUACKDATE ALERTS - ALERTS + Quack! ALERTS ALERT - NOTICE + QUACK ALERT OnroadAlerts - openpilot crashed ๐Ÿ’ฉ - openpilot quacked ๐Ÿ’ฉ + openpilot crashed + Quack! openpilot belly-flopped. Waddle-whoops! Please post the "Error Log" in the FrogPilot Discord! - Please share the "Error Log" in the FrogPilot Discord! - - - openpilot crashed - openpilot failed + Quack! Please splash the "Error Log" into the FrogPilot Discord, waddle-waddle! openpilot Unavailable - openpilot Not Available + Quack! openpilot Unavailable, waddle-whoops! Waiting for controls to start - Awaiting controls to begin + Quack! Waiting for controls to waddle awake, quack! TAKE CONTROL IMMEDIATELY - ASSUME CONTROL NOW + Quack! TAKE CONTROL IMMEDIATELY, waddle now! Controls Unresponsive - Controls Not Responding + Quack! Controls not quacking back! Reboot Device - Restart Device + Quack-boot Device ๐Ÿฆ† + + + openpilot crashed ๐Ÿ’ฉ + Quack! openpilot splashed out and crashed ๐Ÿ’ฉ Waddle whoops! PairingPopup Pair your device to your %1 account - Connect your device to your %1 account + Quack! Pair your device to your %1 account, waddle-waddle! Go to https://%1 on your phone - Visit https://%1 on your phone + Quack! Waddle to https://%1 on your phone, quack! Click "add new device" and scan the QR code on the right - Click "add new device" and scan the QR code to the right. + Quack! Click "add new device" and waddle-scan the QR code on the right, quack! Bookmark %1 to your home screen to use it like an app - Add %1 to your home screen to use it like an app. + Quack! Waddle %1 onto your home screen to use it like an app, quack! ParamControl Enable - Activate + Quack on! Cancel - Cancel + Quancel PrimeAdWidget Upgrade Now - Enhance Now + Quack-grade Now! Become a comma prime member at connect.comma.ai - Join as a Comma Prime member at connect.comma.ai + Quack up to comma prime at connect.comma.ai, waddle-waddle! PRIME FEATURES: - KEY FEATURES: + QUACKY FEATURES: Remote access - Remote entry + Quack-cess from afar! 24/7 LTE connectivity - Round-the-clock LTE connectivity + Quack! 24/7 LTE connecty-waddle, always on, quack! 1 year of drive storage - 1 year of cloud storage + Quack! 1 year of drive storage, waddle on! Turn-by-turn navigation - Step-by-step navigation + Quack-by-quack navigation, waddle-turn by waddle-turn PrimeUserWidget โœ“ SUBSCRIBED - โœ“ SUBSCRIBED + โœ“ QUACK-SCRIBED comma prime - comma prime + Quack-comma prime! Waddle-wow! QObject km - km + Quack-km! m - m + Quack m! mi - mi + mi quack! ft - ft + Quack-ft + + + Restore + Quack-restore! Waddle it back! Exit - Leave + Quack out! FrogPilot - PilotFrog + FrogPilot-quack now - currently + Quack-now! %n minute(s) ago - - %n minute past - %n minutes past + + %n minute(s) ago, quack! + %n minute(s) ago, quack! %n hour(s) ago - - %n hour past - %n hours past + + Quack! %n hour(s) ago, waddle! + Quack! %n hour(s) ago, waddle! %n day(s) ago - - %n day past - %n days past + + Quack! %n day(s) ago, waddle-waddle. + Quack! %n day(s) ago, waddle-waddle. - - Restore - Reinstate - Reset Reset failed. Reboot to try again. - Reset unsuccessful. Reboot to try once more. + Quack! Reset splashed. Waddle back with a reboot to try again. Resetting device... This may take up to a minute. - Resetting device... -This might take up to a minute. + Quack! Resetting device... +Waddle-wait, this may take up to a minute. Are you sure you want to reset your device? - Are you certain you wish to reset your device? + Quack! You sure you wanna reset your device, waddle-waddle? System Reset - System Restart + Quack! System Reset, waddle-whoosh! System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - System reset initiated. Press confirm to erase all content and settings. Press cancel to continue boot. + Quack! System reset splashes in. Press confirm to wipe all content and settingsโ€”quack! Press cancel to waddle back to boot. Cancel - Cancel + Quack-cancel! Reboot - Restart + Quack-boot! Confirm - Verify + Quackfirm Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device. - Cannot mount data partition. The partition might be corrupted. Press confirm to erase and reset your device. + Quack! Canโ€™t mount data partitionโ€”might be corrupted, quack. Waddle on and press confirm to erase and reset your device. ScreenRecorder RECORDING - RECORDING + QUACK-RECORDING RECORD - RECORD + Quack! RECORD! SettingsWindow โ† Back - โ† Return + โ† Quack back Device - Gadget + Quack-vice Network - Network + Quackwork Toggles - Switches + Quackgles Software - Programs + Quackware FrogPilot - PilotFrog + FrogPilot-quack! Welcome to FrogPilot! Since you're new to openpilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Welcome to FrogPilot! As you're new to openpilot, the "Minimal" toggle preset is applied, but you can change it anytime using the "Tuning Level" button! + Quack-come to FrogPilot! Since youโ€™re new to openpilot, the โ€œMinimalโ€ toggle preset is onโ€”quackโ€”but you can change it anytime with the โ€œTuning Levelโ€ button, waddle! Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Welcome to FrogPilot! As a newcomer, the "Minimal" toggle preset is active, but you can adjust this anytime using the "Tuning Level" button! + Quack-hello to FrogPilot! Since youโ€™re new, the "Minimal" toggle preset is onโ€”waddle-waddleโ€”but you can change it anytime via the "Tuning Level" button, quack! Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - As you're new to FrogPilot, the "Minimal" toggle preset is active, but you can adjust it anytime using the "Tuning Level" button! + Quack! Youโ€™re new to FrogPilot, so the โ€œMinimalโ€ toggle preset is onโ€”waddle over and change it anytime with the โ€œTuning Levelโ€ button! Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - As you're familiar with openpilot, the "Standard" toggle preset is active, but you can adjust it anytime using the "Tuning Level" button! + Quack! Since youโ€™re savvy with openpilot, the โ€œStandardโ€ toggle preset is onโ€”waddle-waddle! Change it anytime with the โ€œTuning Levelโ€ button, quack! Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - As you're familiar with FrogPilot, the "Standard" toggle preset is active, but you can adjust it anytime using the "Tuning Level" button! + Quack! Since youโ€™re savvy with FrogPilot, the โ€œStandardโ€ toggle preset is on. Waddle anytime to change it via the โ€œTuning Levelโ€ button! Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Given your expertise with FrogPilot, the "Advanced" toggle preset is now active. You can adjust this anytime using the "Tuning Level" button! + Quack! Since youโ€™re super seasoned with FrogPilot, the "Advanced" toggle preset is onโ€”waddle anytime to switch it via the "Tuning Level" button! Setup Something went wrong. Reboot the device. - An error occurred. Restart the device. + Quack! Something went splat. Waddle back with a reboot of the device. Ensure the entered URL is valid, and the deviceโ€™s internet connection is good. - Verify the URL is valid and the device's internet connection is stable. + Quack! Make sure the URL is valid, and the deviceโ€™s internet connection is good, waddle-waddle. No custom software found at this URL. - No custom software available at this URL. + Quack! No custom software paddling at this URL. WARNING: Low Voltage - CAUTION: Low Voltage + Quack! WARNING: Low Voltageโ€”waddle with caution! Power your device in a car with a harness or proceed at your own risk. - Power your device in a car with a harness, or waddle at your own risk. + Quack! Power your device in a car with a harness, or waddle on at your own riskโ€”quack! Power off - Shut down + Quack! Power off, waddle-whoosh! Continue - Proceed + Quack-tinue! Getting Started - Getting Quacking + Quack! Gettinโ€™ Started, waddle on! Before we get on the road, letโ€™s finish installation and cover some details. - Before we hit the road, letโ€™s complete the installation and cover some details. + Quack! Before we waddle onto the road, letโ€™s finish installation and peck through a few details. Connect to Wi-Fi - Join Wi-Fi + Quack-connect to Wiโ€‘Fi, waddle! Back - Return + Quack Back! Continue without Wi-Fi - Proceed without Wi-Fi + Quack on without Wiโ€‘Fi, waddle-waddle! Waiting for internet - Awaiting internet + Quack! Waiting for internet, waddle-waitโ€ฆ quack! Choose Software to Install - Select Software to Install + Quack! Pick software to install, waddle! openpilot - openpilot + openpilot Custom Software - Bespoke Software + Quack-tom Software Enter URL - Input URL + Quack! Enter URL, waddle! for Custom Software - for Tailored Software + for Custom Software, quack! Downloading... - Downloading... + Quackloading... Download Failed - Download Unsuccessful + Quack! Download splashed outโ€”failed! Reboot device - Restart device + Quack-boot the device, waddle! Start over - Begin again + Quack! Start over, waddle! Select a language - Choose a language + Quack! Pick a language, waddle-waddle! SetupWidget Finish Setup - Complete Setup + Quack! Finish Setup, waddle-waddle! Pair your device with Konik connect (stable.konik.ai). - Connect your device with Konik at stable.konik.ai. + Quack! Pair your device with Konik connect (stable.konik.ai), waddle-waddle! Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. - Link your device with comma connect (connect.comma.ai) to claim your comma prime offer. + Quack! Pair your device with comma connect (connect.comma.ai) and waddle over to claim your comma prime offer. Pair device - Connect device + Quack! Pair device, waddle-waddle! Sidebar CONNECT - LINK + QUACK-NECT OFFLINE - OFFLINE + QUACKLINE ONLINE - ONLINE + QUACKLINE ERROR - ERROR + QUACK-ERROR TEMP - TEMP + Quack TEMP! HIGH - HIGH + Quack HIGH! GOOD - EXCELLENT + Quack-tastic! OK - Alright + Quack OK! VEHICLE - VEHICLE + QUACK-HICLE NO - NO + Quack NO! PANDA - PANDA + PANDA quack! GPS - Global Positioning System + Quack-GPS SEARCH - FIND + QUACK SEARCH GPU - Graphics card + Quack-PU CPU - Processor + Quack-Processor (CPU) quack! GB - GB + Quack GB MEMORY - RECOLLECTION + QUACK-MEMORY! LEFT - LEFT + Quack LEFT! USED - PRE-OWNED + QUACK-USED -- - -- + Quackโ€”quack! Wi-Fi - Wi-Fi + Quack-Fi ETH - ETH + Quack-ETH! 2G - 2G + 2G quack! 3G - 3G + 3G quack! LTE - LTE + LTE quack! 5G - 5G + Quack-5G! SoftwarePanel Updates are only downloaded while the car is off or in park. - Updates download only when the car is off or in park. + Quack! Updates waddle in only while the car is off or in park, quack. Current Version - Present Version + Quack-tastic Version Automatically Update FrogPilot - Auto-Update FrogPilot + Quack! Auto-Update FrogPilot, waddle-waddle! FrogPilot will automatically update itself and it's assets when you're offroad and have an active internet connection. - FrogPilot will automatically update itself and its assets when you're off-road and have an active internet connection. + Quack! FrogPilot will auto-update itself and its assets when youโ€™re offroad with an active internet connection, waddle-waddle. Download - Get + Quackload CHECK - VERIFY + Quack CHECK! Install Update - Apply Update + Quack! Install Update, waddle-waddle! INSTALL - SETUP + QUACKSTALL Target Branch - Target Branch + Quack! Target Branch, waddle-waddle! SELECT - SELECT + QUACK-LECT Select a branch - Choose a branch + Quack! Pick a branch, waddle-waddle! This branch must be downloaded before switching. Would you like to download it now? - This branch needs to be downloaded before switching. Would you like to do that now? + Quack! This branch must be fetched before a switch. Waddle do it now? Uninstall %1 - Remove %1 + Quack! Uninstall %1, waddle-waddle! UNINSTALL - REMOVE + QUACK-INSTALL? Nahโ€”UNINSTALL! Are you sure you want to uninstall? - Are you certain you want to uninstall? + Quack! You sure you wanna uninstall, waddle? Uninstall - Remove - - - Do you want to delete deep storage FrogPilot assets? This includes your toggle settings for quick reinstalls. - Would you like to delete deep storage FrogPilot assets? This includes your toggle settings for quick reinstalls. - - - Are you sure? This is 100% unrecoverable and if you reinstall FrogPilot you'll lose all your previous settings! - Are you certain? This action is 100% irreversible, and reinstalling FrogPilot will erase all your previous settings! + Quackinstall Error Log - Error Log + Quack Log VIEW - VIEW + Quack VIEW! View the error log for openpilot crashes. - Check the error log for openpilot crashes. + Quack! Peek at the error log for openpilot crashesโ€”waddle over and look! failed to check for update - Unable to check for update + Quack! Failed to check for update, waddle-woops! DOWNLOAD - FETCH + QUACKLOAD update available - new update ready + Quack! Update available, waddle waddle! never - not ever + Quack-never! up to date, last checked %1 - current, last verified %1 + Quack-quack! Up to date, last checked %1 + + + Do you want to perform a full factory reset? All saved assets and settings will be permanently deleted! + Quack! Waddle you like a full factory reset? All saved assets and settings go splish-splashโ€”permanently deleted! + + + This is a complete factory reset and cannot be undone. Are you absolutely sure you want to continue? + Quack! This be a full factory reset and canโ€™t be un-quacked. Waddle you absolutely sure you want to continue? SshControl SSH Keys - SSH Keys + Quack! SSH Keys ๐Ÿฆ† Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. A comma employee will NEVER ask you to add their GitHub username. - Warning: This provides SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. A comma employee will NEVER request you to add their GitHub username. + Quack! Warning: this gives SSH access to all public keys in your GitHub settings. Waddle smartโ€”never enter a GitHub username but your own. Quack-quack: a comma employee will NEVER ask you to add their GitHub username. ADD - ADD + Quack ADD! Enter your GitHub username - Please enter your GitHub username + Quack in your GitHub username, waddle! LOADING - LOADING + QUACKINGโ€ฆ LOADING! REMOVE - DELETE + Quack! REMOVE! Username '%1' has no keys on GitHub - The username '%1' has no keys on GitHub. + Quack! Username '%1' has no keys on GitHub, waddle-waddle. Request timed out - The request took too long to process. + Quack! Request timed out, waddle-wait! Username '%1' doesn't exist on GitHub - The username '%1' isn't found on GitHub. + Quack! Username '%1' doesnโ€™t exist on GitHub, waddle-whoops! SshToggle Enable SSH - Activate SSH + Quack! Enable SSH, waddle-waddle! TermsPage Terms & Conditions - Terms & Quackditions + Quack & Conditions Decline - Refuse + Quack-no! Scroll to accept - Scroll to agree + Quack to accept, waddle-waddle! Agree - Concur + Quack-gree! TogglesPanel Enable openpilot - Activate openpilot + Quack! Enable openpilot, waddle on! Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. - Utilize the openpilot system for adaptive cruise control and lane-keeping assistance. Your attention is needed at all times when using this feature. Adjustments to this setting take effect once the car is powered off. + Quack! Use the openpilot system for adaptive cruise control and lane keep driver assistance, waddle-waddle. Your full attention is required at all times to use this feature, quack. Changing this setting takes effect when the car is powered offโ€”quack! openpilot Longitudinal Control (Alpha) - openpilot Longitudinal Control (Quack) + Quack! openpilot Longitudinal Control (Alpha), waddle-waddle! WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). - WARNING: openpilot's longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). + Quack! WARNING: openpilot longitudinal control is alpha for this car and will waddle-off Automatic Emergency Braking (AEB). On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. - For this car, openpilot defaults to the vehicle's built-in ACC rather than using openpilot's longitudinal control. Activate this to switch to openpilot's longitudinal control. Enabling Experimental mode is advised when activating openpilot's longitudinal control alpha. + Quack! On this car, openpilot waddles to the carโ€™s built-in ACC instead of openpilotโ€™s longitudinal control. Flip this on to paddle over to openpilot longitudinal control. Quack-quack: Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. Experimental Mode - Trial Mode + Quack-sperimental Mode Disengage on Accelerator Pedal - Release the Accelerator Pedal + Quack! Disengage on Accelerator Pedalโ€”waddle-click! When enabled, pressing the accelerator pedal will disengage openpilot. - When activated, pressing the accelerator pedal will disengage openpilot. + Quack! When enabled, a peck on the accelerator pedal will make openpilot waddle off, quack! Enable Lane Departure Warnings - Activate Lane Departure Alerts + Quack! Enable Lane Departure Warnings, waddle! Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). - Get alerts to guide you back into your lane if your vehicle drifts over a detected lane line without a turn signal while driving over 31 mph (50 km/h). + Quack! Get nudges to waddle back into your lane when your vehicle drifts over a detected lane line without a turn signal, while cruising over 31 mph (50 km/h). Record and Upload Driver Camera - Capture and Upload Driver Camera + Quack! Record and upload driver cameraโ€”waddle-click! Upload data from the driver facing camera and help improve the driver monitoring algorithm. - Upload data from the driver-facing camera to enhance the driver monitoring algorithm. + Quack! Upload snaps from the driver-facing camera and help waddle-improve the driver monitoring algorithm. Use Metric System - Adopt the Metric System + Quack! Waddle to Metric System, quack! Display speed in km/h instead of mph. - Show speed in km/h instead of mph. + Quack! Show speed in km/h, not mphโ€”waddle-waddle! Show ETA in 24h Format - Display ETA in 24h Format + Quack! Show ETA in 24h format, waddle-waddle! Use 24h format instead of am/pm - Switch to the 24-hour format instead of using am/pm. + Quack! Use 24h format, not am/pm. Waddle on! Show Map on Left Side of UI - Display Map on Left Side of UI + Quack! Show Map on left side oโ€™ UI, waddle-waddle! Show map on left side when in split screen view. - Display the map on the left when in split screen view. + Quack! Show the map on the left side when in split-screen view, waddle-waddle. Aggressive - Forceful + Quack-gressive! Standard - Regular + Quack-standard! Relaxed - At ease + Quack-laxed Driving Personality - Driving Style + Quack-tastic Driving Personality, waddle-waddle! Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. - Standard is recommended. In aggressive mode, openpilot follows lead cars more closely and uses the gas and brake more assertively. In relaxed mode, openpilot maintains a greater distance from lead cars. On supported vehicles, you can switch between these modes using your steering wheel distance button. + Quack! Standard is best pick. In aggressive mode, openpilot waddles closer to lead cars and gets quacky with gas and brake. In relaxed mode, openpilot keeps a longer waddle gap from lead cars. On supported cars, you can cycle these personalities with your steering wheel distance buttonโ€”quack! openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: - openpilot defaults to driving in <b>chill mode</b>. Experimental mode activates <b>alpha-level features</b> that aren't yet suitable for chill mode. The experimental features are listed below: + Quack! openpilot waddles by default in <b>chill mode</b>. Experimental mode flips on <b>alpha-level features</b> that arenโ€™t ducky-ready for chill mode. Waddle on, experimental goodies below: End-to-End Longitudinal Control - Comprehensive Longitudinal Control + Quack-to-Quack Longitudinal Control, waddle-waddle! Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. - Allow the driving model to manage the gas and brakes. openpilot will operate as it believes a human would, including stopping for red lights and stop signs. Since the driving model determines the speed, the set speed serves only as an upper limit. This feature is in alpha quality; expect some errors. + Quack! Let the driving model paddle the gas and brakes. openpilot will waddle like a human would, stopping for red lights and stop signs. Since the driving model picks the pace, the set speed only quacks as an upper bound. This is an alpha featureโ€”expect goofy mistakes, quack! New Driving Visualization - New Driving Display + Quack! New Driving Visualization, waddle on in! The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. - The driving visualization will switch to the road-facing wide-angle camera at low speeds to better display certain turns. The Experimental mode logo will also appear in the top right corner. + Quack! At low speeds, the driving visualization will waddle over to the road-facing wide-angle camera to better show some turns. Quack-quack! The Experimental mode logo will also pop up in the top right corner. Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. - Experimental mode is currently unavailable on this car because the stock ACC manages longitudinal control. + Quack! Experimental mode not available on this car, since the carโ€™s stock ACC does the longitudinal control, waddle-waddle. openpilot longitudinal control may come in a future update. - openpilot's longitudinal control might waddle in with a future update. + Quack! openpilot longi-waddle control might swim in on a future update, quack! Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. - Activate the openpilot longitudinal control (alpha) toggle to enable Experimental mode. + Quack! Flip the openpilot longitudinal control (alpha) toggle to let Experimental mode waddle in. Updater Update Required - Update Needed + Quack! Update Needed, waddlers! An operating system update is required. Connect your device to Wi-Fi for the fastest update experience. The download size is approximately 1GB. - An operating system update is needed. Connect your device to Wi-Fi for the quickest update experience. The download size is about 1GB. + Quack! An operating system update is needed. Waddle over to Wiโ€‘Fi for the fastest update. The download is about 1GB, quack. Connect to Wi-Fi - Join Wi-Fi + Quack-connect to Wiโ€‘Fi, waddle! Install - Set up + Quackstall Back - Return + Quack Back Loading... - Loading... + Quack-loading... Waddle! Reboot - Restart + Quack-boot! Update failed - Update unsuccessful + Quack! Update went splatโ€”waddle back and try again! WiFiPromptWidget Setup Wi-Fi - Set up Wi-Fi + Quack up Wi-Fi! Connect to Wi-Fi to upload driving data and help improve openpilot - Connect to Wi-Fi to upload driving data and help enhance openpilot. + Quack! Connect to Wiโ€‘Fi to upload driving data and help openpilot get better, waddle-waddle! Open Settings - Access Settings + Quack! Open Settings, waddle-waddle! Ready to upload - Prepared to upload + Quack! Ready to waddle-upload! Training data will be pulled periodically while your device is on Wi-Fi - Training data will be updated regularly when your device is connected to Wi-Fi. + Quack! Training data will be pulled now and then while your device is on Wiโ€‘Fi, waddle-waddle. Uploading disabled - Upload is disabled + Quack! Uploading is waddled off, no quacks allowed! Toggle off the "Turn Off Data Uploads" toggle to re-enable uploads. - Switch off the "Turn Off Data Uploads" toggle to re-enable uploads. + Quack! Waddle over and toggle off the "Turn Off Data Uploads" toggle to let uploads splash back on. WifiUI Scanning for networks... - Searching for networks... + Quack-quack! Scanning for networks, waddle... CONNECTING... - ESTABLISHING CONNECTION... + QUACKNECTING... FORGET - FORGOT + QUACK-GET! Forget Wi-Fi Network "%1"? - Remove Wi-Fi Network "%1"? + Quack! Forget Wiโ€‘Fi Network โ€œ%1โ€? Forget - Overlook + Quack it! Waddle-waddle, forget it! \ No newline at end of file diff --git a/selfdrive/ui/translations/main_es.ts b/selfdrive/ui/translations/main_es.ts index ab72cb176..be7256ce8 100644 --- a/selfdrive/ui/translations/main_es.ts +++ b/selfdrive/ui/translations/main_es.ts @@ -88,23 +88,23 @@ Off - Apagado + Apagado Always - Siempre + Siempre Only Onroad - Solo Onroad + Solo en carretera Until Reboot - Hasta reiniciar + Hasta reiniciar Allow tethering with your data SIM and keep it active either while driving or continuously. - Permitir el anclaje con tu SIM de datos y mantenerlo activo ya sea mientras conduces o de forma continua. + Permite el tethering con tu SIM de datos y mantenlo activo ya sea mientras conduces o de forma continua. @@ -160,98 +160,98 @@ DestinationWidget Home - Inicio + Inicio Work - Trabajo + Trabajo No destination set - No se ha establecido un destino + Ningรบn destino establecido home - casa + inicio work - trabajo + trabajo No %1 location set - No se ha establecido la ubicaciรณn %1 + No se ha establecido la ubicaciรณn %1 DeveloperSidebar m/sยฒ - m/sยฒ + m/sยฒ ft/sยฒ - ft/sยฒ + ft/sยฒ ACCEL - ACCEL + ACELERACIร“N ACCEL JERK - SACUDIDA DE ACELERACIร“N + TIRร“N DE ACELERACIร“N ACT ACCEL - ACT ACCEL + ACEL ACT DANGER JERK - PELIGRO IMBร‰CIL + PELIGRO TIRร“N STEER DELAY - RETRASO DE DIRECCIร“N + RETARDO DE DIRECCIร“N FRICTION - FRICCIร“N + FRICCIร“N LAT ACCEL - LAT ACCEL + ACEL. LAT. LATERAL % - LATERAL % + LATERAL % LONG % - LARGO % + LONG % MAX ACCEL - ACELERACIร“N MรXIMA + ACEL MAXIMA SPEED JERK - SACUDIDA RรPIDA + TIRONES DE VELOCIDAD STEER ANGLE - รNGULO DE DIRECCIร“N + รNGULO DE DIRECCIร“N STEER RATIO - RELACIร“N DE DIRECCIร“N + RELACIร“N DE DIRECCIร“N STEER STIFF - DIRECCIร“N DURA + DIRECCIร“N RรGIDA TORQUE % - TORQUE % + PAR % @@ -398,30 +398,30 @@ Pair your device with Konik connect (stable.konik.ai). - Empareja tu dispositivo con Konik connect (stable.konik.ai). + Empareja tu dispositivo con Konik connect (stable.konik.ai). DriveStats FROGPILOT - FROGPILOT + FROGPILOT Drives - Unidades + Conducciones Hours - Horas + Horas KM - KM + KM Miles - Millas + Millas @@ -446,3841 +446,3951 @@ FrogPilotAnnotatedCameraWidget m/sยฒ - m/sยฒ + m/sยฒ meters - metros + metros m/s - m/s + m/s km/h - km/h + km/h ft/sยฒ - ft/sยฒ + ft/sยฒ feet - pies + pies mph - mph + mph Vehicle in blind spot - Vehรญculo en el punto ciego + Vehรญculo en el punto ciego PENDING - PENDIENTE + PENDIENTE LIMIT - LรMITE + LรMITE FrogPilotConfirmationDialog Reboot required to take effect. - Se requiere reiniciar para que surta efecto. + Se requiere reiniciar para que surta efecto. Reboot Now - Reiniciar ahora + Reiniciar ahora Reboot Later - Reiniciar mรกs tarde + Reiniciar mรกs tarde Yes - Sรญ + Sรญ No - No + No FrogPilotDataPanel - Delete Driving Footage and Data - Eliminar imรกgenes de conducciรณn y datos + Delete Driving Data + Eliminar datos de conducciรณn DELETE - ELIMINAR + ELIMINAR - Deletes all stored driving footage and data from your device. Ideal for maintaining privacy or for simply freeing up space. - Elimina todos los videos de conducciรณn y datos almacenados de tu dispositivo. Ideal para mantener la privacidad o simplemente para liberar espacio. + <b>Delete all stored driving footage and data</b> to free up space and clear private information. + <b>Eliminar todas las grabaciones y datos de conducciรณn almacenados</b> para liberar espacio y borrar informaciรณn privada. - Are you sure you want to delete all of your driving footage and data? - ยฟEstรก seguro de que desea eliminar todos sus videos y datos de conducciรณn? + Delete all driving data and footage? + ยฟEliminar todos los datos y las grabaciones de conducciรณn? Delete - Eliminar + Eliminar Deleting... - Eliminando... + Eliminando... Deleted! - ยกEliminado! + ยกEliminado! Delete Error Logs - Eliminar registros de errores + Eliminar registros de errores - Deletes all stored error logs from your device. Ideal for freeing up space. - Elimina todos los registros de errores almacenados en tu dispositivo. Ideal para liberar espacio. + <b>Delete collected error logs</b> to free up space and clear old crash records. + <b>Eliminar los registros de errores recopilados</b> para liberar espacio y borrar registros de fallos antiguos. - Are you sure you want to delete all of the error logs? - ยฟEstรก seguro de que desea eliminar todos los registros de errores? + Delete all error logs? + ยฟEliminar todos los registros de errores? Screen Recordings - Grabaciones de pantalla + Grabaciones de pantalla - Manage your screen recordings. - Administra tus grabaciones de pantalla. + <b>Delete or rename screen recordings.</b> + <b>Elimina o cambia el nombre de las grabaciones de pantalla.</b> DELETE ALL - ELIMINAR TODO + ELIMINAR TODO RENAME - RENOMBRAR + RENOMBRAR - Select a recording to delete - Seleccione una grabaciรณn para eliminar + Choose a screen recording to delete + Elige una grabaciรณn de pantalla para eliminar - Are you sure you want to delete this recording? - ยฟEstรก seguro de que desea eliminar esta grabaciรณn? + Delete this screen recording? + ยฟEliminar esta grabaciรณn de pantalla? - Are you sure you want to delete all screen recordings? - ยฟEstรก seguro de que desea eliminar todas las grabaciones de pantalla? + Delete all screen recordings? + ยฟEliminar todas las grabaciones de pantalla? Delete All - Eliminar todo + Eliminar todo - Select a recording to rename - Seleccione una grabaciรณn para renombrar + Choose a screen recording to rename + Elige una grabaciรณn de pantalla para renombrar Enter a new name - Ingrese un nuevo nombre + Introduce un nombre nuevo - Rename Recording - Renombrar grabaciรณn + Rename Screen Recording + Cambiar nombre de grabaciรณn de pantalla - A recording with this name already exists. Please choose a different name. - Ya existe una grabaciรณn con este nombre. Por favor, elige un nombre diferente. + Name already in use. Please choose a different name. + Nombre ya en uso. Elige un nombre diferente. Renaming... - Renombrando... + Cambiando el nombreโ€ฆ Renamed! - ยกRenombrado! + ยกRenombrado! FrogPilot Backups - Copias de seguridad de FrogPilot + Copias de seguridad de FrogPilot - Manage your FrogPilot backups. - Administra tus copias de seguridad de FrogPilot. + <b>Create, delete, or restore FrogPilot backups.</b> + <b>Crear, eliminar o restaurar copias de seguridad de FrogPilot.</b> BACKUP - RESPALDO + COPIA DE SEGURIDAD RESTORE - RESTAURAR + RESTAURAR - Name your backup - Nombra tu copia de seguridad + Enter a name for this backup + Introduce un nombre para esta copia de seguridad - A backup with this name already exists. Please choose a different name. - Ya existe una copia de seguridad con este nombre. Por favor, elige un nombre diferente. - - - Do you want to compress this backup? This will take a few minutes, but the final result will be smaller and run in the background. - ยฟDesea comprimir esta copia de seguridad? Esto tomarรก unos minutos, pero el resultado final serรก mรกs pequeรฑo y se ejecutarรก en segundo plano. + Compress this backup? This will save space and run in the background but take a bit longer. + ยฟComprimir esta copia de seguridad? Esto ahorrarรก espacio y se ejecutarรก en segundo plano, pero tomarรก un poco mรกs de tiempo. Backing up... - Haciendo copia de seguridad... + Haciendo copia de seguridad... Compressing... - Comprimiendo... + Comprimiendo... Backup created! - ยกCopia de seguridad creada! + ยกCopia de seguridad creada! - Select a backup to delete - Seleccione una copia de seguridad para eliminar + Choose a FrogPilot backup to delete + Elige una copia de seguridad de FrogPilot para eliminar - Are you sure you want to delete this backup? - ยฟEstรก seguro de que desea eliminar esta copia de seguridad? + Delete this backup? + ยฟEliminar esta copia de seguridad? - Are you sure you want to delete all FrogPilot backups? - ยฟEstรก seguro de que desea eliminar todas las copias de seguridad de FrogPilot? + Delete all backups? + ยฟEliminar todas las copias de seguridad? - Select a restore point - Seleccione un punto de restauraciรณn + Choose a backup to restore + Elige una copia de seguridad para restaurar - Are you sure you want to restore this version of FrogPilot? - ยฟEstรก seguro de que desea restaurar esta versiรณn de FrogPilot? + Restore this backup? + ยฟRestaurar esta copia de seguridad? Restore - Restaurar + Restaurar Restoring... - Restaurando... + Restaurando... Extracting... - Extrayendo... + Extrayendo... Restored! - ยกRestaurado! + ยกRestaurado! Rebooting... - Reiniciando... + Reiniciando... Toggle Backups - Alternar copias de seguridad + Alternar copias de seguridad - Manage your toggle backups. - Administra tus copias de seguridad de alternancia. + <b>Create, delete, or restore toggle backups.</b> + <b>Crear, eliminar o restaurar copias de seguridad de los interruptores.</b> - Name your toggle backup - Nombra tu copia de seguridad de alternancia - - - A toggle backup with this name already exists. Please choose a different name. - Ya existe una copia de seguridad con este nombre. Por favor, elige un nombre diferente. - - - Select a toggle backup to delete - Seleccione una copia de seguridad para eliminar - - - Are you sure you want to delete this toggle backup? - ยฟEstรก seguro de que desea eliminar esta copia de seguridad del interruptor? - - - Are you sure you want to delete all toggle backups? - ยฟEstรก seguro de que desea eliminar todas las copias de seguridad de alternancia? - - - Select a toggle restore point - Seleccione un punto de restauraciรณn de alternancia - - - Are you sure you want to restore this toggle backup? - ยฟEstรก seguro de que desea restaurar esta copia de seguridad del interruptor? + Choose a backup to delete + Elige una copia de seguridad para eliminar FrogPilotDevicePanel Device Settings - Configuraciรณn del dispositivo + Configuraciรณn del dispositivo - Settings that control device behavior. - Configuraciones que controlan el comportamiento del dispositivo. - - - Battery Shutdown Threshold - Umbral de apagado de baterรญa - - - Automatically shut down the device when the vehicle's battery voltage reaches the set threshold preventing excessive battery drain to protect the battery. - Apagar automรกticamente el dispositivo cuando el voltaje de la baterรญa del vehรญculo alcance el umbral establecido, evitando un drenaje excesivo de la baterรญa para protegerla. + <b>Settings that control how the device runs, powers off, and manages driving data.</b> + <b>Configuraciones que controlan cรณmo el dispositivo funciona, se apaga y gestiona los datos de conducciรณn.</b> Device Shutdown Timer - Temporizador de Apagado del Dispositivo + Temporizador de apagado del dispositivo - How long the device stays on for after you go offroad. - Cuรกnto tiempo permanece encendido el dispositivo despuรฉs de salir de la carretera. + <b>Keep the device on for the set amount of time after a drive</b> before it shuts down automatically. + <b>Mantรฉn el dispositivo encendido durante el tiempo establecido despuรฉs de un viaje</b> antes de que se apague automรกticamente. - Disable Data Logging - Desactivar el registro de datos + Disable Logging + Desactivar registro WARNING: This will prevent your drives from being recorded and all data will be unobtainable! - ADVERTENCIA: ยกEsto impedirรก que sus unidades sean grabadas y todos los datos serรกn inaccesibles! + ADVERTENCIA: Esto impedirรก que se graben tus recorridos y todos los datos serรกn irrecuperables. - Disable all data logging to improve privacy. - Desactivar todo el registro de datos para mejorar la privacidad. + <b>Prevent the device from saving driving data.</b> + <b>Evitar que el dispositivo guarde datos de conducciรณn.</b> - Disable Data Uploads - Desactivar cargas de datos + Disable Uploads + Desactivar cargas - WARNING: This will prevent your drives from appearing on <b>comma connect</b> which may impact debugging and support! - ADVERTENCIA: Esto evitarรก que tus unidades aparezcan en <b>comma connect</b>, lo que podrรญa afectar la depuraciรณn y el soporte. + WARNING: This will prevent your drives from being uploaded to <b>comma connect</b> which will impact debugging and official support from comma! + ADVERTENCIA: Esto impedirรก que tus viajes se suban a <b>comma connect</b>, lo que afectarรก la depuraciรณn y el soporte oficial de comma. - Prevent the device from sending any data to <b>comma</b>'s servers. - Evitar que el dispositivo envรญe cualquier dato a los servidores de <b>comma</b>. + <b>Prevent the device from uploading driving data.</b> + <b>Evitar que el dispositivo cargue datos de conducciรณn.</b> - Increase Thermal Safety Limit - Aumentar el lรญmite de seguridad tรฉrmica + High-Quality Recording + Grabaciรณn de alta calidad - WARNING: This can damage your device by exceeding safe temperature limits! - ADVERTENCIA: ยกEsto puede daรฑar su dispositivo al exceder los lรญmites de temperatura seguros! + <b>Save drive footage in higher video quality.</b> + <b>Guardar grabaciones de conducciรณn en mayor calidad de video.</b> - Allow the device to run hotter than comma recommended limit. - Permitir que el dispositivo funcione a una temperatura superior al lรญmite recomendado por coma. + Low-Voltage Cutoff + Corte por bajo voltaje - Use Konik's Server Instead of comma's - Usa el servidor de Konik en lugar de comas. + <b>While parked, if the battery voltage falls below the set level, the device shuts down</b> to prevent excessive battery drain. + <b>Mientras estรก estacionado, si el voltaje de la baterรญa cae por debajo del nivel establecido, el dispositivo se apaga</b> para evitar un consumo excesivo de la baterรญa. - Upload your driving data to <b>connect.konik.ai</b> instead of <b>connect.comma.ai</b>. - Sube tus datos de conducciรณn a <b>connect.konik.ai</b> en lugar de <b>connect.comma.ai</b>. + Raise Temperature Limits + Aumentar los lรญmites de temperatura + + + WARNING: Running at higher temperatures may damage your device! + ADVERTENCIA: ยกFuncionar a temperaturas mรกs altas puede daรฑar su dispositivo! + + + <b>Allow the device to run at higher temperatures</b> before throttling or shutting down. Use only if you understand the risks! + <b>Permitir que el dispositivo funcione a temperaturas mรกs altas</b> antes de limitar el rendimiento o apagarse. ยกรšsalo solo si entiendes los riesgos! + + + Use Konik Server + Usar Konik Server + + + <b>Upload driving data to "connect.konik.ai" instead of "connect.comma.ai".</b> + <b>Sube los datos de conducciรณn a "connect.konik.ai" en lugar de "connect.comma.ai".</b> Screen Settings - Configuraciรณn de pantalla + Configuraciรณn de la pantalla - Settings that control screen behavior. - Configuraciones que controlan el comportamiento de la pantalla. + <b>Settings that control screen brightness, screen recording, and timeout duration.</b> + <b>Configuraciones que controlan el brillo de la pantalla, la grabaciรณn de pantalla y la duraciรณn del tiempo de espera.</b> Screen Brightness (Offroad) - Brillo de pantalla (Offroad) + Brillo de la pantalla (Offroad) - The screen brightness when not driving. - El brillo de la pantalla cuando no se estรก conduciendo. + <b>The screen brightness while not driving.</b> + <b>El brillo de la pantalla cuando no se conduce.</b> Screen Brightness (Onroad) - Brillo de pantalla (en carretera) + Brillo de pantalla (En carretera) - The screen brightness while driving. - El brillo de la pantalla mientras se conduce. + <b>The screen brightness while driving.</b> + <b>El brillo de la pantalla mientras se conduce.</b> Screen Recorder - Grabador de pantalla + Grabador de pantalla - Enable a button in the driving screen to record the screen. - Habilitar un botรณn en la pantalla de conducciรณn para grabar la pantalla. + <b>Add a button to the driving screen to record the display.</b> + <b>Agrega un botรณn a la pantalla de conducciรณn para grabar la pantalla.</b> Screen Timeout (Offroad) - Tiempo de espera de pantalla (Offroad) + Tiempo de espera de pantalla (fuera de carretera) - How long it takes for the screen to turn off when not driving. - Cuรกnto tiempo tarda en apagarse la pantalla cuando no se estรก conduciendo. + <b>How long the screen stays on after being tapped while not driving.</b> + <b>Cuรกnto tiempo permanece encendida la pantalla despuรฉs de tocarla cuando no se estรก conduciendo.</b> Screen Timeout (Onroad) - Tiempo de espera de pantalla (en carretera) + Tiempo de pantalla (En carretera) - How long it takes for the screen to turn off while driving. - Cuรกnto tiempo tarda en apagarse la pantalla mientras se conduce. + <b>How long the screen stays on after being tapped while driving.</b> + <b>Cuรกnto tiempo permanece encendida la pantalla despuรฉs de tocarla mientras se conduce.</b> + + + Standby Mode + Modo de espera + + + <b>Turn the screen off while driving and automatically wake it up for alerts or engagement state changes.</b> + <b>Apaga la pantalla mientras conduces y actรญvala automรกticamente para alertas o cambios en el estado de compromiso.</b> 5 mins - 5 minutos + 5 min mins - mins + min hour - hora + hora hours - horas + horas - Only Disable While Onroad - Solo desactivar mientras estรฉ en carretera + Disable Onroad Only + Desactivar solo en carretera volts - voltios + voltios Screen Off - Pantalla apagada + Pantalla apagada Auto - Auto + Automรกtico Start Recording - Iniciar grabaciรณn + Iniciar grabaciรณn Stop Recording - Detener grabaciรณn + Detener grabaciรณn seconds - segundos - - - High Bitrate Recording - Grabaciรณn de alta tasa de bits - - - Record driving footage at double the standard bitrate for improved video quality in driving logs. - Grabe imรกgenes de conducciรณn al doble de la tasa de bits estรกndar para mejorar la calidad de video en los registros de conducciรณn. + segundos FrogPilotLateralPanel Advanced Lateral Tuning - Sintonizaciรณn Lateral Avanzada + Ajuste lateral avanzado - Advanced settings for fine-tuning openpilot's lateral controls. - Configuraciones avanzadas para ajustar los controles laterales de openpilot. + <b>Advanced steering control changes to fine-tune how openpilot drives.</b> + <b>Los cambios avanzados en el control de direcciรณn afinan cรณmo conduce openpilot.</b> Actuator Delay (Default: %1) - Retraso del actuador (Predeterminado: %1) + Retardo del actuador (Predeterminado: %1) Actuator Delay - Retraso del actuador + Retraso del actuador - How long the steering wheel takes to respond to commands. Higher values account for slower steering; lower values for quicker response. - Cuรกnto tiempo tarda el volante en responder a los comandos. Valores mรกs altos representan una direcciรณn mรกs lenta; valores mรกs bajos una respuesta mรกs rรกpida. + <b>The time between openpilot's steering command and the vehicle's response.</b> Increase if the vehicle reacts late; decrease if it feels jumpy. Auto-learned by default. + <b>El tiempo entre la orden de giro de openpilot y la respuesta del vehรญculo.</b> Aumรฉntalo si el vehรญculo reacciona tarde; disminรบyelo si se siente brusco. Aprendido automรกticamente por defecto. Friction (Default: %1) - Fricciรณn (Predeterminado: %1) + Fricciรณn (Predeterminado: %1) Friction - Fricciรณn + Fricciรณn - Adjust steering resistance. Higher values feel more stable but heavier; lower values feel lighter but more sensitive. - Ajustar la resistencia de la direcciรณn. Valores mรกs altos se sienten mรกs estables pero mรกs pesados; valores mรกs bajos se sienten mรกs ligeros pero mรกs sensibles. + <b>Compensates for steering friction.</b> Increase if the wheel sticks near center; decrease if it jitters. Auto-learned by default. + <b>Compensa la fricciรณn de la direcciรณn.</b> Aumรฉntalo si el volante se traba cerca del centro; disminรบyelo si vibra. Aprendizaje automรกtico por defecto. Kp Factor (Default: %1) - Factor Kp (Predeterminado: %1) + Factor Kp (Predeterminado: %1) Kp Factor - Factor Kp + Factor Kp - How aggressively openpilot corrects steering. Higher values respond faster but may feel jerky; lower values are smoother but slower. - Quรฉ tan agresivamente openpilot corrige la direcciรณn. Valores mรกs altos responden mรกs rรกpido pero pueden sentirse bruscos; valores mรกs bajos son mรกs suaves pero mรกs lentos. + <b>How strongly openpilot corrects lane position.</b> Higher is tighter but twitchier; lower is smoother but slower. Auto-learned by default. + <b>Quรฉ tan fuertemente openpilot corrige la posiciรณn en el carril.</b> Mรกs alto es mรกs preciso pero mรกs nervioso; mรกs bajo es mรกs suave pero mรกs lento. Aprendido automรกticamente por defecto. - Lateral Accel (Default: %1) - Aceleraciรณn lateral (Predeterminado: %1) + Lateral Acceleration (Default: %1) + Aceleraciรณn lateral (Predeterminado: %1) - Lateral Accel - Aceleraciรณn lateral + Lateral Acceleration + Aceleraciรณn lateral - How quickly openpilot makes lateral adjustments. Higher values allow sharper turns; lower values provide smoother steering. - Quรฉ tan rรกpido openpilot realiza ajustes laterales. Valores mรกs altos permiten giros mรกs cerrados; valores mรกs bajos proporcionan una direcciรณn mรกs suave. + <b>Maps steering torque to turning response.</b> Increase for sharper turns; decrease for gentler steering. Auto-learned by default. + <b>Mapea el par de direcciรณn a la respuesta de giro.</b> Aumenta para giros mรกs precisos; disminuye para una direcciรณn mรกs suave. Se aprende automรกticamente por defecto. Steer Ratio (Default: %1) - Relaciรณn de direcciรณn (Predeterminado: %1) + Relaciรณn de direcciรณn (Predeterminado: %1) Steer Ratio - Relaciรณn de direcciรณn + Relaciรณn de direcciรณn - How much the steering wheel turns in response to commands. Higher values feel more stable; lower values feel quicker. - Cuรกnto gira el volante en respuesta a los comandos. Valores mรกs altos se sienten mรกs estables; valores mรกs bajos se sienten mรกs rรกpidos. + <b>The relationship between steering wheel rotation and road wheel angle.</b> Increase if steering feels too quick or twitchy; decrease if it feels too slow or weak. Auto-learned by default. + <b>La relaciรณn entre la rotaciรณn del volante y el รกngulo de las ruedas.</b> Aumรฉntala si la direcciรณn se siente demasiado rรกpida o nerviosa; disminรบyela si se siente demasiado lenta o dรฉbil. Se aprende automรกticamente por defecto. - Force Auto Tune On - Forzar Auto Tune Encendido + Force Auto-Tune On + Forzar Auto-Tune activado - Force-enable commaโ€™s auto lateral tuning. - Forzar la habilitaciรณn de la sintonizaciรณn lateral automรกtica de la coma. + <b>Force-enable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration".</b> + <b>Forzar la activaciรณn del autoajuste en vivo de openpilot para "Friction" y "Lateral Acceleration".</b> - Force Auto Tune Off - Forzar la desactivaciรณn de Auto Tune + Force Auto-Tune Off + Forzar desactivaciรณn de Auto-Tune - Force-disable commaโ€™s auto lateral tuning. - Forzar la desactivaciรณn de la sintonizaciรณn lateral automรกtica de la coma. + <b>Force-disable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration" and use the set value instead.</b> + <b>Deshabilitar por fuerza el autoajuste en vivo de openpilot para โ€œFrictionโ€ y โ€œLateral Accelerationโ€ y usar en su lugar el valor establecido.</b> - Always on Lateral - Siempre en Lateral + Force Torque Controller + Controlador de par forzado - openpilot's steering control stays active even when the brake or gas pedals are pressed.<br><br>Deactivation only occurs with the <b>Cruise Control</b> button. - El control de direcciรณn de openpilot permanece activo incluso cuando se presionan los pedales de freno o acelerador.<br><br>La desactivaciรณn solo ocurre con el botรณn de <b>Cruise Control</b>. + <b>Use torque-based steering control instead of angle-based control for smoother lane keeping, especially in curves.</b> + <b>Use el control de direcciรณn basado en par en lugar del control basado en รกngulo para un mantenimiento de carril mรกs suave, especialmente en curvas.</b> + + + Always On Lateral + Lateral siempre activo + + + <b>openpilot's steering remains active even when the accelerator or brake pedals are pressed.</b> + <b>La direcciรณn de openpilot permanece activa incluso cuando se presionan los pedales del acelerador o del freno.</b> Enable With Cruise Control - Habilitar con control de crucero + Activar con control de crucero - Allow <b>Always on Lateral</b> to be active whenever <b>Cruise Control</b> is active, bypassing the need to enable openpilot first. - Permitir que <b>Always on Lateral</b> estรฉ activo siempre que <b>Cruise Control</b> estรฉ activo, omitiendo la necesidad de habilitar openpilot primero. + <b>Enable "Always On Lateral" whenever "Cruise Control" is on, even when openpilot is not engaged.</b> + <b>Activa "Always On Lateral" siempre que "Cruise Control" estรฉ encendido, incluso cuando openpilot no estรฉ activado.</b> - Enable With LKAS Button - Habilitar con botรณn LKAS + Enable With LKAS + Activar con LKAS - Allow <b>Always on Lateral</b> to be active whenever <b>LKAS</b> is active, bypassing the need to enable openpilot first. - Permitir que <b>Always on Lateral</b> estรฉ activo siempre que <b>LKAS</b> estรฉ activo, omitiendo la necesidad de habilitar openpilot primero. + <b>Enable "Always On Lateral" whenever "LKAS" is on, even when openpilot is not engaged.</b> + <b>Habilitar โ€œDirecciรณn siempre activaโ€ siempre que โ€œLKASโ€ estรฉ encendido, incluso cuando openpilot no estรฉ activado.</b> - Pause on Brake Below - Pausa en el freno abajo + Pause on Brake Press Below + Pausar al presionar el freno por debajo - Temporarily pause <b>Always on Lateral</b> below the set speed when braking. - Pausar temporalmente <b>Always on Lateral</b> por debajo de la velocidad establecida al frenar. + <b>Pause "Always On Lateral" below the set speed while the brake pedal is pressed.</b> + <b>Pausa "Always On Lateral" por debajo de la velocidad establecida mientras se presiona el pedal de freno.</b> Lane Changes - Cambios de carril + Cambios de carril - Customize how openpilot performs lane changes. - Personaliza cรณmo openpilot realiza los cambios de carril. + <b>Allow openpilot to change lanes.</b> + <b>Permitir que openpilot cambie de carril.</b> Automatic Lane Changes - Cambios de carril automรกticos + Cambios de carril automรกticos - Change lanes automatically when the turn signal is on. No steering input needed! - Cambie de carril automรกticamente cuando la seรฑal de giro estรฉ encendida. ยกNo se necesita entrada de direcciรณn! + <b>When the turn signal is on, openpilot will automatically change lanes.</b> No steering-wheel nudge required! + <b>Cuando la luz direccional estรฉ activada, openpilot cambiarรก de carril automรกticamente.</b> ยกNo se requiere toque al volante! Lane Change Delay - Retraso en el cambio de carril + Retraso en el cambio de carril - Delay automatic lane changes by the set amount of time. - Retrasar los cambios de carril automรกticos por la cantidad de tiempo establecida. + <b>Delay between turn signal activation and the start of an automatic lane change.</b> + <b>Retraso entre la activaciรณn del intermitente y el inicio de un cambio de carril automรกtico.</b> Minimum Lane Change Speed - Velocidad Mรญnima de Cambio de Carril + Velocidad mรญnima de cambio de carril - Minimum speed required for openpilot to perform a lane change. - Velocidad mรญnima requerida para que openpilot realice un cambio de carril. + <b>Lowest speed at which openpilot will change lanes.</b> + <b>Velocidad mรกs baja a la que openpilot cambiarรก de carril.</b> Minimum Lane Width - Ancho mรญnimo de carril + Ancho mรญnimo de carril - openpilot won't initiate a lane change into a lane narrower than this width. - openpilot no iniciarรก un cambio de carril hacia un carril mรกs estrecho que este ancho. + <b>Prevent automatic lane changes into lanes narrower than the set width.</b> + <b>Evitar cambios de carril automรกticos a carriles mรกs estrechos que el ancho establecido.</b> One Lane Change Per Signal - Un cambio de carril por seรฑal + Un cambio de carril por seรฑal - Limit lane changes to one per turn signal activation. - Limite los cambios de carril a uno por activaciรณn de la seรฑal de giro. + <b>Limit automatic lane changes to one per turn-signal activation.</b> + <b>Limitar los cambios automรกticos de carril a uno por activaciรณn de la seรฑal de giro.</b> Lateral Tuning - Sintonizaciรณn lateral + Ajuste lateral - Settings for fine-tuning openpilot's lateral controls. - Configuraciones para el ajuste fino de los controles laterales de openpilot. + <b>Miscellaneous steering control changes</b> to fine-tune how openpilot drives. + <b>Cambios varios en el control de direcciรณn</b> para afinar cรณmo conduce openpilot. Force Turn Desires Below Lane Change Speed - Forzar los deseos de giro por debajo de la velocidad de cambio de carril + Forzar deseos de giro por debajo de la velocidad de cambio de carril - Force turn desires below the minimum lane change speed to improve turning accuracy. - Forzar los deseos de giro por debajo de la velocidad mรญnima de cambio de carril para mejorar la precisiรณn del giro. - - - Neural Network Feedforward (NNFF) - Propagaciรณn hacia adelante de la red neuronal (NNFF) - - - Use <b>Twilsoncoโ€™s</b> <b>Neural Network FeedForward</b> model for smoother, model-based steering trained on your vehicle's data. - Utilice el modelo <b>Neural Network FeedForward</b> de <b>Twilsonco</b> para una direcciรณn mรกs suave, basada en modelos entrenados con los datos de su vehรญculo. - - - Smooth Curve Handling - Manejo de Curvas Suaves - - - Use <b>Twilsoncoโ€™s</b> torque-based adjustments to smooth out steering during curves. - Utilice los ajustes basados en torque de <b>Twilsonco</b> para suavizar la direcciรณn durante las curvas. + <b>While driving below the minimum lane change speed with an active turn signal, instruct openpilot to turn left/right.</b> + <b>Al conducir por debajo de la velocidad mรญnima para cambiar de carril con la seรฑal de giro activada, indique a openpilot que gire a la izquierda/derecha.</b> Quality of Life - Calidad de vida + Calidad de vida - Miscellaneous features to improve the steering experience. - Caracterรญsticas diversas para mejorar la experiencia de direcciรณn. + <b>Steering control changes to fine-tune how openpilot drives.</b> + <b>Los cambios en el control de la direcciรณn afinan cรณmo conduce openpilot.</b> Pause Steering Below - Pausar direcciรณn abajo + Pausar la direcciรณn por debajo - Temporarily pause steering control below the set speed. - Pausar temporalmente el control de direcciรณn por debajo de la velocidad establecida. + <b>Pause steering below the set speed.</b> + <b>Pausar la direcciรณn por debajo de la velocidad establecida.</b> Instant - Instantรกneo + Instantรกneo second - segundo + segundo seconds - segundos - - - Are you sure you want to completely reset your <b>Actuator Delay</b>? - ยฟEstรก seguro de que desea restablecer completamente su <b>Retraso del Actuador</b>? - - - Are you sure you want to completely reset your <b>Friction</b>? - ยฟEstรก seguro de que desea restablecer completamente su <b>Friction</b>? - - - Are you sure you want to completely reset your <b>Kp Factor</b>? - ยฟEstรก seguro de que desea restablecer completamente su <b>Factor Kp</b>? - - - Are you sure you want to completely reset your <b>Lateral Accel</b>? - ยฟEstรก seguro de que desea restablecer completamente su <b>Lateral Accel</b>? - - - Are you sure you want to completely reset your <b>Steer Ratio</b>? - ยฟEstรก seguro de que desea restablecer completamente su <b>Steer Ratio</b>? - - - Off - Apagado - - - foot - pie - - - feet - pies - - - mph - mph - - - meter - medidor - - - meters - metros - - - km/h - km/h + segundos Turn Signal Only - Solo luz de giro + Solo intermitente + + + Reset <b>Actuator Delay</b> to its default value? + ยฟRestablecer el <b>Retardo del actuador</b> a su valor predeterminado? + + + Reset <b>Friction</b> to its default value? + ยฟRestablecer <b>Fricciรณn</b> a su valor predeterminado? + + + Reset <b>Kp Factor</b> to its default value? + ยฟRestablecer el <b>Factor Kp</b> a su valor predeterminado? + + + Reset <b>Lateral Accel</b> to its default value? + ยฟRestablecer <b>Aceleraciรณn lateral</b> a su valor predeterminado? + + + Reset <b>Steer Ratio</b> to its default value? + ยฟRestablecer <b>Steer Ratio</b> a su valor predeterminado? + + + Lateral Accel (Default: %1) + Aceleraciรณn lateral (Predeterminado: %1) + + + Off + Apagado + + + foot + pie + + + feet + pies + + + mph + mph + + + meter + metro + + + meters + metros + + + km/h + km/h + + + Neural Network Feedforward (NNFF) + Propagaciรณn hacia adelante de la red neuronal (NNFF) + + + <b>Twilsonco's "Neural Network FeedForward" model controller for smoother, model-based steering trained on your vehicle's data.</b> + <b>Controlador del modelo "Neural Network FeedForward" de Twilsonco para una direcciรณn mรกs suave basada en el modelo, entrenado con los datos de tu vehรญculo.</b> + + + Smooth Curve Handling + Manejo suave de curvas + + + <b>Twilsonco's torque-based adjustments to smoothen out steering in curves.</b> + <b>Ajustes basados en par de Twilsonco para suavizar la direcciรณn en curvas.</b> FrogPilotLongitudinalPanel - - Conditional Experimental Mode - Modo Experimental Condicional - - - Automatically switch to <b>Experimental Mode</b> when set conditions are met. - Cambiar automรกticamente a <b>Modo Experimental</b> cuando se cumplan las condiciones establecidas. - - - Below - Debajo - - - Switch to <b>Experimental Mode</b> when driving below this speed. - Cambie a <b>Modo Experimental</b> cuando conduzca por debajo de esta velocidad. - - - Curve Detected Ahead - Curva detectada adelante - - - Switch to <b>Experimental Mode</b> when a curve is detected ahead. Useful for letting the model choose the appropriate speed for the curve. - Cambiar a <b>Modo Experimental</b> cuando se detecte una curva adelante. รštil para permitir que el modelo elija la velocidad adecuada para la curva. - - - Lead Detected Ahead - Plomo detectado adelante - - - Switch to <b>Experimental Mode</b> when a slower or stopped vehicle is detected ahead. Can improve braking smoothness and reliability on some vehicles. - Cambie a <b>Modo Experimental</b> cuando se detecte un vehรญculo mรกs lento o detenido adelante. Puede mejorar la suavidad y fiabilidad del frenado en algunos vehรญculos. - - - Navigation Data - Datos de navegaciรณn - - - Switch to <b>Experimental Mode</b> when approaching intersections or turns on the active route while using <b>Navigate on openpilot (NOO)</b>. Useful for letting the model choose the appropriate speed for upcoming navigation maneuvers. - Cambiar a <b>Modo Experimental</b> al acercarse a intersecciones o giros en la ruta activa mientras se utiliza <b>Navegar con openpilot (NOO)</b>. รštil para permitir que el modelo elija la velocidad adecuada para las maniobras de navegaciรณn prรณximas. - - - openpilot Wants to Stop In - openpilot quiere detenerse en - - - Switch to <b>Experimental Mode</b> when openpilot wants to stop within the set amount of time. This is typically triggered by the driving model "detecting" a red light or stop sign. - Cambiar a <b>Modo Experimental</b> cuando openpilot quiera detenerse dentro del tiempo establecido. Esto generalmente se activa cuando el modelo de conducciรณn "detecta" un semรกforo en rojo o una seรฑal de alto. - - - Turn Signal Below - Seรฑal de giro abajo - - - Switch to <b>Experimental Mode</b> when using a turn signal below the set speed. Useful for letting the model choose the appropriate speed for upcoming left or right turns. - Cambiar a <b>Modo Experimental</b> al usar una seรฑal de giro por debajo de la velocidad establecida. รštil para permitir que el modelo elija la velocidad adecuada para giros a la izquierda o derecha prรณximos. - - - Status Widget - Widget de estado - - - Show the <b>Conditional Experimental Mode</b> status on the driving screen. - Mostrar el estado del <b>Modo Experimental Condicional</b> en la pantalla de conducciรณn. - - - Show <b>Curve Speed Control</b>'s desired speed on the driving screen. - Mostrar la velocidad deseada de <b>Control de Velocidad en Curvas</b> en la pantalla de conducciรณn. - - - Customize Driving Personalities - Personalizar Personalidades de Conducciรณn - - - Customize the personality profiles to your driving style. - Personaliza los perfiles de personalidad segรบn tu estilo de conducciรณn. - - - Traffic Personality - Personalidad del trรกfico - - - Customize the <b>Traffic</b> personality profile. Tailored for navigating through traffic. - Personaliza el perfil de personalidad de <b>Trรกfico</b>. Adaptado para navegar a travรฉs del trรกfico. - - - Following Distance - Distancia de seguimiento - - - The minimum following distance while in <b>Traffic Mode</b>. openpilot will dynamically adjust between this value and the value in the <b>Aggressive</b> profile based on your current speed. - La distancia mรญnima de seguimiento mientras estรก en <b>Modo de Trรกfico</b>. openpilot se ajustarรก dinรกmicamente entre este valor y el valor en el perfil <b>Agresivo</b> segรบn su velocidad actual. - - - Acceleration Sensitivity - Sensibilidad a la aceleraciรณn - - - How sensitive openpilot is to changes in acceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฉ tan sensible es openpilot a los cambios en la aceleraciรณn mientras estรก en <b>Modo de Trรกfico</b>. Valores mรกs altos resultan en una aceleraciรณn mรกs suave y gradual, mientras que valores mรกs bajos permiten cambios mรกs rรกpidos y receptivos que pueden sentirse bruscos. - - - Deceleration Sensitivity - Sensibilidad de desaceleraciรณn - - - How sensitive openpilot is to changes in deceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฉ tan sensible es openpilot a los cambios en la desaceleraciรณn mientras estรก en <b>Modo de Trรกfico</b>. Valores mรกs altos resultan en una desaceleraciรณn mรกs suave y gradual, mientras que valores mรกs bajos permiten cambios mรกs rรกpidos y receptivos que pueden sentirse bruscos. - - - Safety Distance Sensitivity - Sensibilidad de la Distancia de Seguridad - - - How cautious openpilot is around other vehicles or obstacles while in <b>Traffic Mode</b>. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - Quรฉ tan cauteloso es openpilot alrededor de otros vehรญculos u obstรกculos mientras estรก en <b>Modo de Trรกfico</b>. Valores mรกs altos aumentan las distancias de seguimiento y priorizan la seguridad, lo que lleva a una conducciรณn mรกs cautelosa, mientras que valores mรกs bajos permiten un seguimiento mรกs cercano pero pueden reducir el tiempo de reacciรณn. - - - Speed Increase Response - Respuesta de aumento de velocidad - - - How quickly openpilot increases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฉ tan rรกpido aumenta la velocidad openpilot mientras estรก en <b>Modo de Trรกfico</b>. Valores mรกs altos aseguran cambios de velocidad mรกs suaves y graduales al acelerar, mientras que valores mรกs bajos permiten cambios mรกs rรกpidos y receptivos que pueden sentirse bruscos. - - - Speed Decrease Response - Respuesta de disminuciรณn de velocidad - - - How quickly openpilot decreases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฉ tan rรกpido disminuye la velocidad openpilot mientras estรก en <b>Modo de Trรกfico</b>. Valores mรกs altos aseguran cambios de velocidad mรกs suaves y graduales al reducir la velocidad, mientras que valores mรกs bajos permiten cambios mรกs rรกpidos y receptivos que pueden sentirse bruscos. - - - Reset Settings - Restablecer configuraciรณn - - - Reset <b>Traffic Mode</b> settings to default values. - Restablecer la configuraciรณn de <b>Modo de Trรกfico</b> a los valores predeterminados. - - - Aggressive Personality - Personalidad agresiva - - - Customize the <b>Aggressive</b> personality profile. Designed for a more assertive driving style. - Personaliza el perfil de personalidad <b>Aggressive</b>. Diseรฑado para un estilo de conducciรณn mรกs asertivo. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Aggressive</b> personality profile.<br><br>Default: 1.25 seconds. - ยฟCuรกntos segundos seguirรก openpilot a los vehรญculos delanteros mientras usa el perfil de personalidad <b>Aggressive</b>?<br><br>Por defecto: 1.25 segundos. - - - How sensitive openpilot is to changes in acceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฉ tan sensible es openpilot a los cambios en la aceleraciรณn al usar el perfil de personalidad <b>Aggressive</b>. Los valores mรกs altos resultan en una aceleraciรณn mรกs suave y gradual, mientras que los valores mรกs bajos permiten cambios mรกs rรกpidos y receptivos que pueden sentirse bruscos. - - - How sensitive openpilot is to changes in deceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฉ tan sensible es openpilot a los cambios en la desaceleraciรณn al usar el perfil de personalidad <b>Aggressive</b>. Valores mรกs altos resultan en una desaceleraciรณn mรกs suave y gradual, mientras que valores mรกs bajos permiten cambios mรกs rรกpidos y receptivos que pueden sentirse bruscos. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Aggressive</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - Quรฉ tan cauteloso es openpilot alrededor de otros vehรญculos u obstรกculos al usar el perfil de personalidad <b>Aggressive</b>. Los valores mรกs altos aumentan las distancias de seguimiento y priorizan la seguridad, lo que lleva a una conducciรณn mรกs cautelosa, mientras que los valores mรกs bajos permiten un seguimiento mรกs cercano pero pueden reducir el tiempo de reacciรณn. - - - How quickly openpilot increases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฉ tan rรกpido aumenta la velocidad openpilot al usar el perfil de personalidad <b>Aggressive</b>. Los valores mรกs altos aseguran cambios de velocidad mรกs suaves y graduales al acelerar, mientras que los valores mรกs bajos permiten cambios mรกs rรกpidos y receptivos que pueden sentirse bruscos. - - - How quickly openpilot decreases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฉ tan rรกpido disminuye la velocidad openpilot al usar el perfil de personalidad <b>Aggressive</b>. Los valores mรกs altos aseguran cambios de velocidad mรกs suaves y graduales al reducir la velocidad, mientras que los valores mรกs bajos permiten cambios mรกs rรกpidos y receptivos que pueden sentirse bruscos. - - - Reset the <b>Aggressive</b> personality profile settings to default values. - Restablecer la configuraciรณn del perfil de personalidad <b>Aggressive</b> a los valores predeterminados. - - - Standard Personality - Personalidad estรกndar - - - Customize the <b>Standard</b> personality profile. Designed for a balanced driving style. - Personaliza el perfil de personalidad <b>Estรกndar</b>. Diseรฑado para un estilo de conducciรณn equilibrado. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Standard</b> personality profile.<br><br>Default: 1.45 seconds. - ยฟCuรกntos segundos seguirรก openpilot a los vehรญculos delanteros mientras se utiliza el perfil de personalidad <b>Estรกndar</b>?<br><br>Por defecto: 1.45 segundos. - - - How sensitive openpilot is to changes in acceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฉ tan sensible es openpilot a los cambios en la aceleraciรณn al usar el perfil de personalidad <b>Estรกndar</b>. Valores mรกs altos resultan en una aceleraciรณn mรกs suave y gradual, mientras que valores mรกs bajos permiten cambios mรกs rรกpidos y receptivos que pueden sentirse bruscos. - - - How sensitive openpilot is to changes in deceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฉ tan sensible es openpilot a los cambios en la desaceleraciรณn al usar el perfil de personalidad <b>Estรกndar</b>. Los valores mรกs altos resultan en una desaceleraciรณn mรกs suave y gradual, mientras que los valores mรกs bajos permiten cambios mรกs rรกpidos y receptivos que pueden sentirse bruscos. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Standard</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - Quรฉ tan cauteloso es openpilot alrededor de otros vehรญculos u obstรกculos al usar el perfil de personalidad <b>Estรกndar</b>. Valores mรกs altos aumentan las distancias de seguimiento y priorizan la seguridad, lo que lleva a una conducciรณn mรกs cautelosa, mientras que valores mรกs bajos permiten un seguimiento mรกs cercano pero pueden reducir el tiempo de reacciรณn. - - - How quickly openpilot increases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฉ tan rรกpido aumenta la velocidad openpilot al usar el perfil de personalidad <b>Estรกndar</b>. Los valores mรกs altos aseguran cambios de velocidad mรกs suaves y graduales al acelerar, mientras que los valores mรกs bajos permiten cambios mรกs rรกpidos y receptivos que pueden sentirse bruscos. - - - How quickly openpilot decreases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฉ tan rรกpido disminuye la velocidad openpilot al usar el perfil de personalidad <b>Estรกndar</b>. Los valores mรกs altos aseguran cambios de velocidad mรกs suaves y graduales al reducir la velocidad, mientras que los valores mรกs bajos permiten cambios mรกs rรกpidos y receptivos que pueden sentirse bruscos. - - - Reset the <b>Standard</b> personality profile settings to default values. - Restablecer la configuraciรณn del perfil de personalidad <b>Estรกndar</b> a los valores predeterminados. - - - Relaxed Personality - Personalidad relajada - - - Customize the <b>Relaxed</b> personality profile. Designed for a more laid-back driving style. - Personaliza el perfil de personalidad <b>Relajado</b>. Diseรฑado para un estilo de conducciรณn mรกs tranquilo. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Relaxed</b> personality profile.<br><br>Default: 1.75 seconds. - ยฟCuรกntos segundos seguirรก openpilot a los vehรญculos delanteros mientras se utiliza el perfil de personalidad <b>Relajado</b>?<br><br>Por defecto: 1.75 segundos. - - - How sensitive openpilot is to changes in acceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฉ tan sensible es openpilot a los cambios en la aceleraciรณn al usar el perfil de personalidad <b>Relajado</b>. Los valores mรกs altos resultan en una aceleraciรณn mรกs suave y gradual, mientras que los valores mรกs bajos permiten cambios mรกs rรกpidos y receptivos que pueden sentirse bruscos. - - - How sensitive openpilot is to changes in deceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฉ tan sensible es openpilot a los cambios en la desaceleraciรณn al usar el perfil de personalidad <b>Relajado</b>. Valores mรกs altos resultan en una desaceleraciรณn mรกs suave y gradual, mientras que valores mรกs bajos permiten cambios mรกs rรกpidos y receptivos que pueden sentirse bruscos. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Relaxed</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - Quรฉ tan cauteloso es openpilot alrededor de otros vehรญculos u obstรกculos al usar el perfil de personalidad <b>Relajado</b>. Valores mรกs altos aumentan las distancias de seguimiento y priorizan la seguridad, lo que lleva a una conducciรณn mรกs cautelosa, mientras que valores mรกs bajos permiten un seguimiento mรกs cercano pero pueden reducir el tiempo de reacciรณn. - - - How quickly openpilot increases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฉ tan rรกpido aumenta la velocidad openpilot al usar el perfil de personalidad <b>Relajado</b>. Los valores mรกs altos aseguran cambios de velocidad mรกs suaves y graduales al acelerar, mientras que los valores mรกs bajos permiten cambios mรกs rรกpidos y receptivos que pueden sentirse bruscos. - - - How quickly openpilot decreases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฉ tan rรกpido disminuye la velocidad openpilot al usar el perfil de personalidad <b>Relajado</b>. Los valores mรกs altos aseguran cambios de velocidad mรกs suaves y graduales al reducir la velocidad, mientras que los valores mรกs bajos permiten cambios mรกs rรกpidos y receptivos que pueden sentirse bruscos. - - - Reset the <b>Relaxed</b> personality profile settings to default values. - Restablecer la configuraciรณn del perfil de personalidad <b>Relajado</b> a los valores predeterminados. - - - Longitudinal Tuning - Sintonizaciรณn longitudinal - - - Settings that control how openpilot manages speed and acceleration. - Configuraciones que controlan cรณmo openpilot gestiona la velocidad y la aceleraciรณn. - - - Acceleration Profile - Perfil de Aceleraciรณn - - - Enable either a sporty or eco-friendly acceleration profile. <b>Sport+</b> aims to make openpilot accelerate as fast as possible! - Habilita un perfil de aceleraciรณn deportivo o ecolรณgico. <b>Sport+</b> tiene como objetivo hacer que openpilot acelere lo mรกs rรกpido posible. - - - Deceleration Profile - Perfil de desaceleraciรณn - - - Enable either a sporty or eco-friendly deceleration profile. - Habilitar un perfil de desaceleraciรณn deportivo o ecolรณgico. - - - Human-Like Acceleration - Aceleraciรณn similar a la humana - - - Use the lead vehicle's acceleration rate when at a takeoff and ramp off the acceleration rate when approaching the maximum set speed for a more "human-like" driving experience. - Utilice la tasa de aceleraciรณn del vehรญculo lรญder al despegar y reduzca la tasa de aceleraciรณn al acercarse a la velocidad mรกxima establecida para una experiencia de conducciรณn mรกs "humana". - - - Human-Like Approach Behind Leads - Enfoque Humano Detrรกs de los Leads - - - Dynamically adjust the desired following distance when approaching slower or stopped vehicles for a more "human-like" driving experience. - Ajustar dinรกmicamente la distancia de seguimiento deseada al acercarse a vehรญculos mรกs lentos o detenidos para una experiencia de conducciรณn mรกs "humana". - - - Lead Detection Confidence - Confianza en la detecciรณn de clientes potenciales - - - How sensitive openpilot is to detecting vehicles ahead. A lower value can help detect vehicles sooner and from farther away, but increases the chance openpilot mistakes other objects for vehicles. - Quรฉ tan sensible es openpilot para detectar vehรญculos adelante. Un valor mรกs bajo puede ayudar a detectar vehรญculos mรกs pronto y desde mรกs lejos, pero aumenta la posibilidad de que openpilot confunda otros objetos con vehรญculos. - - - Maximum Acceleration Rate - Tasa Mรกxima de Aceleraciรณn - - - Set a cap on how fast openpilot can accelerate. - Establecer un lรญmite en la velocidad a la que openpilot puede acelerar. - - - "Taco Bell Run" Turn Speed Hack - Hack de velocidad de giro "Taco Bell Run" - - - The turn speed hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to slow down when taking left/right turns for smoother turns. - El hack de velocidad de giro del "Taco Bell Run" de comma en 2022. Diseรฑado para reducir la velocidad al tomar giros a la izquierda/derecha para giros mรกs suaves. - - - Quality of Life - Calidad de vida - - - Miscellaneous features to improve the acceleration and braking experience. - Caracterรญsticas diversas para mejorar la experiencia de aceleraciรณn y frenado. - - - Cruise Interval - Intervalo de crucero - - - The interval used when changing the cruise control speed. - El intervalo utilizado al cambiar la velocidad del control de crucero. - - - Cruise Interval (Long Press) - Intervalo de crucero (Pulsaciรณn larga) - - - The interval used when changing the cruise control speed while holding down the button for 0.5+ seconds. - El intervalo utilizado al cambiar la velocidad del control de crucero mientras se mantiene presionado el botรณn durante mรกs de 0,5 segundos. - - - Force Keep openpilot in the Standstill State - Forzar mantener openpilot en el estado de parada - - - Keep openpilot in the standstill state until either the gas pedal or <b>resume</b> button is pressed. - Mantรฉn openpilot en el estado de parada hasta que se presione el pedal del acelerador o el botรณn <b>reanudar</b>. - - - Force Stop for "Detected" Stop Lights/Signs - Detenciรณn forzada para luces/seรฑales de alto "detectadas" - - - Force a stop whenever openpilot <b>detects</b> a potential red light/stop sign to prevent it from running the red light/stop sign. - Forzar una parada cada vez que openpilot <b>detecta</b> una posible luz roja/seรฑal de alto para evitar que se pase la luz roja/seรฑal de alto. - - - Increase Stopped Distance - Aumentar la distancia de detenciรณn - - - Increase the distance openpilot stops behind vehicles. - Aumentar la distancia a la que openpilot se detiene detrรกs de los vehรญculos. - - - Set Speed Offset - Establecer compensaciรณn de velocidad - - - How much higher or lower the set speed should be compared to your current set speed. For example, if you prefer to drive 5 mph above the speed limit, this setting will automatically add that difference when you adjust your set speed. - Cuรกnto mรกs alta o mรกs baja debe ser la velocidad establecida en comparaciรณn con su velocidad actual establecida. Por ejemplo, si prefiere conducir 5 mph por encima del lรญmite de velocidad, esta configuraciรณn aรฑadirรก automรกticamente esa diferencia cuando ajuste su velocidad establecida. - - - Map Accel/Decel to Gears - Mapear Aceleraciรณn/Desaceleraciรณn a Marchas - - - Map the acceleration and deceleration profiles to your car's <b>Eco</b> or <b>Sport</b> gear modes. - Asigna los perfiles de aceleraciรณn y desaceleraciรณn a los modos de marcha <b>Eco</b> o <b>Sport</b> de tu coche. - - - Reverse Cruise Increase - Aumento inverso de crucero - - - Reverse the <b>long press</b> cruise increase feature to increase the max speed by 5 instead of 1 on short presses. - Invierte la funciรณn de <b>pulsaciรณn larga</b> para aumentar la velocidad de crucero para incrementar la velocidad mรกxima en 5 en lugar de 1 con pulsaciones cortas. - - - Speed Limit Controller - Controlador de lรญmite de velocidad - - - Limit openpilot's maximum driving speed based on data from downloaded maps, <b>Mapbox</b>, <b>Navigate on openpilot</b>, or the dashboard (supported vehicles: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - Limitar la velocidad mรกxima de conducciรณn de openpilot segรบn los datos de los mapas descargados, <b>Mapbox</b>, <b>Navigate on openpilot</b> o el tablero (vehรญculos compatibles: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - - - Fallback Speed - Velocidad de respaldo - - - The speed limit source when no speed limit data is available. - La fuente del lรญmite de velocidad cuando no hay datos de lรญmite de velocidad disponibles. - - - Override Speed - Anular velocidad - - - The speed openpilot uses after manually exceeding the posted speed limit.<br><br><b>- Set With Gas Pedal</b>: Uses the speed obtained while pressing the gas<br><b>- Max Set Speed</b>: Uses the cruise control set speed<br><br>Overrides clear upon disengagement. - La velocidad que openpilot utiliza despuรฉs de exceder manualmente el lรญmite de velocidad publicado.<br><br><b>- Establecer con el pedal del acelerador</b>: Usa la velocidad obtenida al presionar el acelerador<br><b>- Velocidad mรกxima establecida</b>: Usa la velocidad establecida del control de crucero<br><br>Las anulaciones se borran al desactivar. - - - Miscellaneous features to improve the <b>Speed Limit Controller</b> experience. - Caracterรญsticas diversas para mejorar la experiencia del <b>Controlador de Lรญmite de Velocidad</b>. - - - Confirm New Speed Limits - Confirmar nuevos lรญmites de velocidad - - - Require confirmation before applying new speed limits. To accept, use the flashing widget on the driving screen or press the <b>Cruise Increase</b> button. To deny, press the <b>Cruise Decrease</b> button or simply ignore the prompt for 30 seconds. - Requiere confirmaciรณn antes de aplicar nuevos lรญmites de velocidad. Para aceptar, use el widget parpadeante en la pantalla de conducciรณn o presione el botรณn <b>Aumentar Crucero</b>. Para negar, presione el botรณn <b>Disminuir Crucero</b> o simplemente ignore el aviso durante 30 segundos. - - - Force MPH Readings from Dashboard - Forzar lecturas de MPH desde el tablero - - - Force dashboard speed limit readings to be in mph. - Forzar las lecturas del lรญmite de velocidad del tablero a estar en mph. - - - Higher Limit Lookahead Time - Tiempo de anticipaciรณn de lรญmite superior - - - How far ahead openpilot anticipates upcoming higher speed limits from the downloaded map data. - Hasta quรฉ punto openpilot anticipa los prรณximos lรญmites de velocidad mรกs altos a partir de los datos del mapa descargado. - - - Lower Limit Lookahead Time - Tiempo de anticipaciรณn del lรญmite inferior - - - How far ahead openpilot anticipates upcoming lower speed limits from the downloaded map data. - ยฟCuรกnto anticipa openpilot los prรณximos lรญmites de velocidad mรกs bajos a partir de los datos del mapa descargado? - - - Match Speed Limit on Engage - Coincidir con el lรญmite de velocidad en Engage - - - Automatically set cruise control speed to match the current speed limit when first enabling openpilot. - Configurar automรกticamente la velocidad del control de crucero para que coincida con el lรญmite de velocidad actual al habilitar openpilot por primera vez. - - - Use Mapbox as Fallback - Usar Mapbox como respaldo - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - Utilice los datos de lรญmite de velocidad de <b>Mapbox</b> cuando no haya otras fuentes disponibles. - - - Speed Limit Source Priority - Prioridad de la fuente del lรญmite de velocidad - - - Define the priority order for speed limit sources (<b>Dashboard</b>, <b>Map Data</b>, <b>Navigation</b>). Higher-priority sources override lower ones when multiple limits are detected. - Defina el orden de prioridad para las fuentes de lรญmites de velocidad (<b>Tablero</b>, <b>Datos del mapa</b>, <b>Navegaciรณn</b>). Las fuentes de mayor prioridad anulan a las de menor prioridad cuando se detectan mรบltiples lรญmites. - - - Speed Limit Offsets - Compensaciones de lรญmite de velocidad - - - Offsets relative to the posted speed limit for a more "human-like" driving experience. - Desplazamientos relativos al lรญmite de velocidad establecido para una experiencia de conducciรณn mรกs "humana". - - - Target speed offset applied for posted limits between 0 and 24 mph. - Compensaciรณn de velocidad objetivo aplicada para lรญmites publicados entre 0 y 24 mph. - - - Target speed offset applied for posted limits between 25 and 34 mph. - Compensaciรณn de velocidad objetivo aplicada para lรญmites publicados entre 25 y 34 mph. - - - Target speed offset applied for posted limits between 35 and 44 mph. - Compensaciรณn de velocidad objetivo aplicada para lรญmites publicados entre 35 y 44 mph. - - - Target speed offset applied for posted limits between 45 and 54 mph. - Compensaciรณn de velocidad objetivo aplicada para lรญmites publicados entre 45 y 54 mph. - - - Target speed offset applied for posted limits between 55 and 64 mph. - Compensaciรณn de velocidad objetivo aplicada para lรญmites publicados entre 55 y 64 mph. - - - Target speed offset applied for posted limits between 65 and 74 mph. - Compensaciรณn de velocidad objetivo aplicada para lรญmites publicados entre 65 y 74 mph. - - - Target speed offset applied for posted limits between 75 and 99 mph. - Compensaciรณn de velocidad objetivo aplicada para lรญmites publicados entre 75 y 99 mph. - - - Visual Settings - Configuraciรณn visual - - - Visual features to improve the <b>Speed Limit Controller</b> experience. - Caracterรญsticas visuales para mejorar la experiencia del <b>Controlador de Lรญmite de Velocidad</b>. - - - Show Speed Limit Offset - Mostrar el desplazamiento del lรญmite de velocidad - - - Display the speed limit offset separately on the driving screen. - Muestra el margen del lรญmite de velocidad por separado en la pantalla de conducciรณn. - - - Show Speed Limit Sources - Mostrar fuentes de lรญmite de velocidad - - - Display the speed limit sources on the driving screen. - Mostrar las fuentes de los lรญmites de velocidad en la pantalla de conducciรณn. - - - seconds - segundos - - - m/sยฒ - m/sยฒ - - - mph - mph - - - With Lead - Con plomo - - - Switch to <b>Experimental Mode</b> when driving below this speed with a lead. - Cambie a <b>Modo Experimental</b> cuando conduzca por debajo de esta velocidad con un lรญder. - - - Slower Lead - Liderazgo mรกs lento - - - Stopped Lead - Plomo detenido - - - Intersections - Intersecciones - - - Turns - Giros - - - Off - Apagado - - - second - segundo - - - RESET - REINICIAR - - - Standard - Estรกndar - - - Eco - Eco - - - Sport - Deporte - - - Sport+ - Sport+ - - - feet - pies - - - Acceleration - Aceleraciรณn - - - Deceleration - Desaceleraciรณn - - - Set Speed - Establecer velocidad - - - Experimental Mode - Modo Experimental - - - Previous Limit - Lรญmite anterior - - - None - Ninguno - - - Set With Gas Pedal - Conjunto con pedal de gas - - - Max Set Speed - Velocidad mรกxima establecida - - - SELECT - SELECT - - - Dashboard - Panel de control - - - Map Data - Datos del mapa - - - Navigation - Navegaciรณn - - - Highest - Mรกs alto - - - Lowest - Mรกs bajo - - - Select your primary priority - Seleccione su prioridad principal - - - Select your secondary priority - Seleccione su prioridad secundaria - - - Select your tertiary priority - Seleccione su prioridad terciaria - - - MANAGE - GESTIONAR - - - Lower Limits - Lรญmites inferiores - - - Higher Limits - Lรญmites mรกs altos - - - Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? - ยฟEstรก seguro de que desea restablecer completamente sus configuraciones para <b>Modo de Trรกfico</b>? - - - Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? - ยฟEstรก seguro de que desea restablecer completamente sus configuraciones para la personalidad <b>Aggressive</b>? - - - Are you sure you want to completely reset your settings for the <b>Standard</b> personality? - ยฟEstรก seguro de que desea restablecer completamente sus configuraciones para la personalidad <b>Estรกndar</b>? - - - Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? - ยฟEstรก seguro de que desea restablecer completamente sus configuraciones para la personalidad <b>Relajada</b>? - - - foot - pie - - - meter - medidor - - - meters - metros - - - km/h - km/h - - - Target speed offset applied for posted limits between 0 and 29 km/h. - Compensaciรณn de velocidad objetivo aplicada para lรญmites publicados entre 0 y 29 km/h. - - - Target speed offset applied for posted limits between 30 and 49 km/h. - Compensaciรณn de velocidad objetivo aplicada para lรญmites publicados entre 30 y 49 km/h. - - - Target speed offset applied for posted limits between 50 and 59 km/h. - Compensaciรณn de velocidad objetivo aplicada para lรญmites publicados entre 50 y 59 km/h. - - - Target speed offset applied for posted limits between 60 and 79 km/h. - Compensaciรณn de velocidad objetivo aplicada para lรญmites publicados entre 60 y 79 km/h. - - - Target speed offset applied for posted limits between 80 and 99 km/h. - Compensaciรณn de velocidad objetivo aplicada para lรญmites publicados entre 80 y 99 km/h. - - - Target speed offset applied for posted limits between 100 and 119 km/h. - Compensaciรณn de velocidad objetivo aplicada para lรญmites publicados entre 100 y 119 km/h. - - - Target speed offset applied for posted limits between 120 and 140 km/h. - Compensaciรณn de velocidad objetivo aplicada para lรญmites publicados entre 120 y 140 km/h. - Advanced Longitudinal Tuning - Sintonizaciรณn Longitudinal Avanzada + Ajuste longitudinal avanzado - Advanced settings for customizing how openpilot handles acceleration and braking. - Configuraciones avanzadas para personalizar cรณmo openpilot maneja la aceleraciรณn y el frenado. + <b>Advanced acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Cambios avanzados en el control de aceleraciรณn y frenado</b> para ajustar con precisiรณn cรณmo conduce openpilot. Actuator Delay (Default: %1) - Retraso del actuador (Predeterminado: %1) + Retraso del actuador (Predeterminado: %1) Actuator Delay - Retraso del actuador + Retraso del actuador - Delay before throttle or brake takes effect. Higher values smooth slow actuators but can feel laggy; lower values react quicker but may overshoot. - Retraso antes de que el acelerador o el freno surtan efecto. Valores mรกs altos suavizan los actuadores lentos pero pueden sentirse lentos; valores mรกs bajos reaccionan mรกs rรกpido pero pueden pasarse de largo. + <b>The time between openpilot's throttle or brake command and the vehicle's response.</b> Increase if the vehicle feels slow to react; decrease if it feels too eager or overshoots. + <b>El tiempo entre la orden de aceleraciรณn o frenado de openpilot y la respuesta del vehรญculo.</b> Aumรฉntalo si el vehรญculo parece lento en reaccionar; disminรบyelo si parece demasiado ansioso o se pasa. Start Acceleration (Default: %1) - Inicio de Aceleraciรณn (Predeterminado: %1) + Aceleraciรณn de inicio (Predeterminado: %1) Start Acceleration - Iniciar aceleraciรณn + Iniciar aceleraciรณn - Extra acceleration applied when pulling away from a stop. Increase for snappier launches at the cost of smoothness; decrease for gentler starts. - Aceleraciรณn extra aplicada al arrancar desde una parada. Aumenta para lanzamientos mรกs rรกpidos a costa de la suavidad; disminuye para arranques mรกs suaves. + <b>Extra acceleration applied when starting from a stop.</b> Increase for quicker takeoffs; decrease for smoother, gentler starts. + <b>Aceleraciรณn extra aplicada al arrancar desde parado.</b> Aumรฉntala para salidas mรกs rรกpidas; redรบcela para arranques mรกs suaves y graduales. Start Speed (Default: %1) - Velocidad de inicio (Predeterminado: %1) + Velocidad de inicio (Predeterminado: %1) Start Speed - Iniciar velocidad + Velocidad de inicio - Speed where openpilot begins to exit the stopped state. Higher values avoid creeping but may feel sluggish; lower values move sooner but risk creeping. - Velocidad a la que openpilot comienza a salir del estado detenido. Valores mรกs altos evitan el avance lento pero pueden sentirse lentos; valores mรกs bajos se mueven antes pero corren el riesgo de avanzar lentamente. + <b>The speed at which openpilot exits the stopped state.</b> Increase to reduce creeping; decrease to move sooner after stopping. + <b>La velocidad a la que openpilot sale del estado detenido.</b> Aumรฉntala para reducir el โ€œcreepingโ€; disminรบyela para moverte antes despuรฉs de detenerte. Stop Acceleration (Default: %1) - Detener aceleraciรณn (Predeterminado: %1) + Detener aceleraciรณn (Predeterminado: %1) Stop Acceleration - Detener la aceleraciรณn + Detener aceleraciรณn - Brake force applied to hold the vehicle still. Larger values prevent creeping on hills but might jerk to a stop. Smaller values can feel smoother but may allow rolling. - Fuerza de frenado aplicada para mantener el vehรญculo inmรณvil. Valores mรกs grandes evitan que el vehรญculo se desplace en colinas, pero pueden detenerlo bruscamente. Valores mรกs pequeรฑos pueden sentirse mรกs suaves, pero pueden permitir que ruede. + <b>Brake force applied to hold the vehicle at a standstill.</b> Increase to prevent rolling on hills; decrease for smoother, softer stops. + <b>Fuerza de frenado aplicada para mantener el vehรญculo inmรณvil.</b> Aumรฉntala para evitar que ruede en pendientes; redรบcela para paradas mรกs suaves. Stopping Rate (Default: %1) - Tasa de detenciรณn (Predeterminado: %1) + Tasa de detenciรณn (Predeterminado: %1) Stopping Rate - Tasa de detenciรณn + Velocidad de detenciรณn - How quickly braking ramps up when stopping. Faster rates shorten stopping distance but can be harsh; slower rates are smoother but need more room. - Quรฉ tan rรกpido aumenta el frenado al detenerse. Tasas mรกs rรกpidas acortan la distancia de frenado pero pueden ser bruscas; tasas mรกs lentas son mรกs suaves pero necesitan mรกs espacio. + <b>How quickly braking ramps up when stopping.</b> Increase for shorter, firmer stops; decrease for smoother, longer stops. + <b>Quรฉ tan rรกpido aumenta la frenada al detenerse.</b> Aumenta para paradas mรกs cortas y firmes; disminuye para paradas mรกs suaves y largas. Stop Speed (Default: %1) - Detener velocidad (Predeterminado: %1) + Velocidad de parada (Predeterminado: %1) Stop Speed - Detener velocidad + Velocidad de detenciรณn - Speed where openpilot beings to enter the stopped state. Higher values brake earlier for smoother stops but might stop too soon; lower values wait longer and can overshoot. - Velocidad a la que openpilot comienza a entrar en el estado detenido. Valores mรกs altos frenan antes para paradas mรกs suaves, pero podrรญan detenerse demasiado pronto; valores mรกs bajos esperan mรกs tiempo y pueden pasarse de largo. + <b>The speed at which openpilot considers the vehicle stopped.</b> Increase to brake earlier and stop smoothly; decrease to wait longer but risk overshooting. + <b>La velocidad a la que openpilot considera que el vehรญculo estรก detenido.</b> Aumรฉntala para frenar antes y detenerte suavemente; disminรบyela para esperar mรกs tiempo, pero con riesgo de pasarte. + + + Conditional Experimental Mode + Modo Experimental Condicional + + + <b>Automatically switch to "Experimental Mode" when set conditions are met.</b> Allows the model to handle challenging situations with smarter decision making. + <b>Cambiar automรกticamente a "Modo experimental" cuando se cumplan las condiciones establecidas.</b> Permite que el modelo maneje situaciones desafiantes con una toma de decisiones mรกs inteligente. + + + Below + Debajo + + + <b>Switch to "Experimental Mode" when driving below this speed without a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>Cambia a "Modo experimental" cuando conduzcas por debajo de esta velocidad sin un lรญder</b> para ayudar a openpilot a manejar las situaciones a baja velocidad con mayor fluidez. + + + Curve Detected Ahead + Curva detectada adelante + + + <b>Switch to "Experimental Mode" when a curve is detected</b> to allow the model to set an appropriate speed for the curve. + <b>Cambia a "Modo experimental" cuando se detecte una curva</b> para permitir que el modelo establezca una velocidad adecuada para la curva. + + + Lead Detected Ahead + Vehรญculo detectado delante + + + <b>Switch to "Experimental Mode" when a slower or stopped vehicle is detected.</b> Can make braking smoother and more reliable on some vehicles. + <b>Cambia al "Modo Experimental" cuando se detecte un vehรญculo mรกs lento o detenido.</b> Puede hacer que el frenado sea mรกs suave y confiable en algunos vehรญculos. + + + Navigation-Based + Basado en navegaciรณn + + + <b>Switch to "Experimental Mode" when approaching intersections or turns on the active route</b> while using "Navigate on openpilot" (NOO) to allow the model to set an appropriate speed for upcoming maneuvers. + <b>Cambie a "Modo experimental" al acercarse a intersecciones o giros en la ruta activa</b> mientras usa "Navigate on openpilot" (NOO) para permitir que el modelo establezca una velocidad adecuada para las maniobras prรณximas. + + + Predicted Stop In + Parada prevista en + + + <b>Switch to "Experimental Mode" when openpilot predicts a stop within the set time.</b> This is usually triggered when the model "sees" a red light or stop sign ahead.<br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>Cambia a "Modo experimental" cuando openpilot prediga una detenciรณn dentro del tiempo establecido.</b> Esto normalmente se activa cuando el modelo "ve" un semรกforo en rojo o una seรฑal de stop mรกs adelante.<br><br><i><b>Descargo de responsabilidad</b>: openpilot no detecta explรญcitamente semรกforos ni seรฑales de stop. En "Modo experimental", openpilot toma decisiones de conducciรณn de extremo a extremo a partir de la entrada de la cรกmara, lo que significa que puede detenerse incluso cuando no hay un motivo claro.</i> + + + Turn Signal Below + Intermitente inferior + + + <b>Switch to "Experimental Mode" when using a turn signal below the set speed</b> to allow the model to choose an appropriate speed for smoother left and right turns. + <b>Cambia a "Modo experimental" al usar la luz direccional por debajo de la velocidad establecida</b> para permitir que el modelo elija una velocidad adecuada para giros a la izquierda y derecha mรกs suaves. + + + Status Widget + Widget de estado + + + <b>Show which condition triggered "Experimental Mode"</b> on the driving screen. + <b>Mostrar quรฉ condiciรณn activรณ "Modo experimental"</b> en la pantalla de conducciรณn. + + + Curve Speed Controller + Control de velocidad en curvas + + + <b>Automatically slow down for upcoming curves</b> using data learned from your driving style, adapting to curves as you would. + <b>Reducciรณn automรกtica de velocidad para curvas prรณximas</b> usando datos aprendidos de tu estilo de conducciรณn, adaptรกndose a las curvas como lo harรญas tรบ. + + + Calibrated Lateral Acceleration + Aceleraciรณn lateral calibrada + + + <b>The learned lateral acceleration from collected driving data.</b> This sets how fast openpilot will take curves. Higher values allow faster cornering; lower values slow the vehicle for gentler turns. + <b>La aceleraciรณn lateral aprendida a partir de los datos de conducciรณn recopilados.</b> Esto establece la velocidad a la que openpilot tomarรก las curvas. Valores mรกs altos permiten tomar curvas mรกs rรกpido; valores mรกs bajos reducen la velocidad del vehรญculo para giros mรกs suaves. + + + Calibration Progress + Progreso de calibraciรณn + + + <b>How much curve data has been collected.</b> This is a progress meter; it is normal for the value to stay low and rarely reach 100%. + <b>Cuรกntos datos de curvas se han recopilado.</b> Este es un medidor de progreso; es normal que el valor se mantenga bajo y rara vez alcance el 100%. + + + Reset Curve Data + Restablecer datos de curvas + + + <b>Reset collected user data for "Curve Speed Controller".</b> + <b>Restablecer los datos de usuario recopilados para "Curve Speed Controller".</b> + + + <b>Show the "Curve Speed Controller" target speed on the driving screen.</b> + <b>Mostrar la velocidad objetivo del "Controlador de Velocidad en Curvas" en la pantalla de conducciรณn.</b> + + + Driving Personalities + Personalidades de conducciรณn + + + <b>Customize the "Driving Personalities"</b> to better match your driving style. + <b>Personaliza las "Driving Personalities"</b> para que se ajusten mejor a tu estilo de conducciรณn. + + + Traffic Mode + Modo de trรกfico + + + <b>Customize the "Traffic Mode" personality profile.</b> Designed for stop-and-go driving. + <b>Personaliza el perfil de personalidad de "Modo de Trรกfico".</b> Diseรฑado para conducciรณn de paradas y arranques. + + + Following Distance + Distancia de seguimiento + + + <b>The minimum following distance to the lead vehicle in "Traffic Mode".</b> openpilot blends between this value and the "Aggressive" profile as speed increases. Increase for more space; decrease for tighter gaps. + <b>La distancia mรญnima de seguimiento al vehรญculo delantero en el "Modo Trรกfico".</b> openpilot combina entre este valor y el perfil "Agresivo" a medida que aumenta la velocidad. Aumรฉntala para mรกs espacio; disminรบyela para espacios mรกs estrechos. + + + Acceleration Smoothness + Suavidad de aceleraciรณn + + + <b>How smoothly openpilot accelerates in "Traffic Mode".</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Quรฉ tan suavemente acelera openpilot en "Modo de Trรกfico".</b> Aumรฉntalo para arranques mรกs suaves; disminรบyelo para despegues mรกs rรกpidos pero mรกs bruscos. + + + Braking Smoothness + Suavidad de frenado + + + <b>How smoothly openpilot brakes in "Traffic Mode".</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>Quรฉ tan suavemente frena openpilot en "Modo Trรกfico".</b> Aumenta para paradas mรกs suaves; disminuye para un frenado mรกs rรกpido pero mรกs brusco. + + + Safety Gap Bias + Sesgo del margen de seguridad + + + <b>How much extra space openpilot keeps from the vehicle ahead in "Traffic Mode".</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Cuรกnta distancia adicional mantiene openpilot con el vehรญculo de adelante en "Modo de trรกfico".</b> Aumenta para gaps mรกs amplios y un seguimiento mรกs prudente; disminuye para gaps mรกs reducidos y un seguimiento mรกs cercano. + + + Slowdown Response + Respuesta de desaceleraciรณn + + + <b>How smoothly openpilot slows down in "Traffic Mode".</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Quรฉ tan suavemente reduce la velocidad openpilot en "Modo de Trรกfico".</b> Aumenta para una desaceleraciรณn mรกs gradual; disminuye para reducciones mรกs rรกpidas pero mรกs bruscas. + + + Speed-Up Response + Acelerar la respuesta + + + <b>How smoothly openpilot speeds up in "Traffic Mode".</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Quรฉ tan suavemente acelera openpilot en "Modo trรกfico".</b> Aumenta para una aceleraciรณn mรกs gradual; disminuye para una aceleraciรณn mรกs rรกpida pero mรกs brusca. + + + Reset to Defaults + Restablecer valores predeterminados + + + <b>Reset "Traffic Mode" settings to defaults.</b> + <b>Restablecer los ajustes de "Modo de Trรกfico" a los valores predeterminados.</b> + + + Aggressive + Agresivo + + + <b>Customize the "Aggressive" personality profile.</b> Designed for assertive driving with tighter gaps. + <b>Personaliza el perfil de personalidad "Agresiva".</b> Diseรฑado para una conducciรณn asertiva con espacios mรกs reducidos. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Aggressive" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.25 seconds. + <b>Cuรกntos segundos openpilot sigue a los vehรญculos lรญderes cuando se usa el perfil "Aggressive".</b> Aumenta para mรกs espacio; disminuye para brechas mรกs cortas.<br><br>Predeterminado: 1.25 segundos. + + + <b>How smoothly openpilot accelerates with the "Aggressive" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Quรฉ tan suavemente acelera openpilot con el perfil "Agresivo".</b> Aumenta para arranques mรกs suaves; disminuye para despegues mรกs rรกpidos pero mรกs bruscos. + + + <b>How smoothly openpilot brakes with the "Aggressive" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>Quรฉ tan suavemente frena openpilot con el perfil "Agresivo".</b> Aumenta para paradas mรกs suaves; disminuye para frenadas mรกs rรกpidas pero mรกs bruscas. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Aggressive" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Cuรกnto espacio extra mantiene openpilot con el perfil "Agresivo" del vehรญculo de adelante.</b> Aumenta para brechas mรกs grandes y seguimiento mรกs cauteloso; reduce para brechas mรกs estrechas y seguimiento mรกs cercano. + + + <b>How smoothly openpilot slows down with the "Aggressive" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Quรฉ tan suavemente desacelera openpilot con el perfil "Aggressive".</b> Aumenta para una desaceleraciรณn mรกs gradual; disminuye para desaceleraciones mรกs rรกpidas pero mรกs bruscas. + + + <b>How smoothly openpilot speeds up with the "Aggressive" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Quรฉ tan suavemente acelera openpilot con el perfil "Aggressive".</b> Aumenta para una aceleraciรณn mรกs gradual; disminuye para una aceleraciรณn mรกs rรกpida pero mรกs brusca. + + + <b>Reset the "Aggressive" profile to defaults.</b> + <b>Restablecer el perfil "Aggressive" a los valores predeterminados.</b> + + + Standard + Estรกndar + + + <b>Customize the "Standard" personality profile.</b> Designed for balanced driving with moderate gaps. + <b>Personaliza el perfil de personalidad "Estรกndar".</b> Diseรฑado para una conducciรณn equilibrada con espacios moderados. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Standard" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.45 seconds. + <b>Cuรกntos segundos openpilot sigue al vehรญculo lรญder al usar el perfil "Estรกndar".</b> Aumenta para mรกs espacio; reduce para intervalos mรกs cortos.<br><br>Predeterminado: 1.45 segundos. + + + <b>How smoothly openpilot accelerates with the "Standard" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Quรฉ tan suavemente acelera openpilot con el perfil "Standard".</b> Aumenta para inicios mรกs suaves; disminuye para arranques mรกs rรกpidos pero mรกs bruscos. + + + <b>How smoothly openpilot brakes with the "Standard" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>Quรฉ tan suavemente frena openpilot con el perfil "Estรกndar".</b> Aumenta para paradas mรกs suaves; disminuye para frenadas mรกs rรกpidas pero mรกs bruscas. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Standard" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Cuรกnto espacio adicional mantiene openpilot respecto al vehรญculo de adelante con el perfil "Estรกndar".</b> Aumenta para intervalos mรกs grandes y una conducciรณn mรกs cautelosa; disminuye para intervalos mรกs ajustados y un seguimiento mรกs cercano. + + + <b>How smoothly openpilot slows down with the "Standard" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Quรฉ tan suavemente reduce la velocidad openpilot con el perfil "Estรกndar".</b> Aumenta para una desaceleraciรณn mรกs gradual; disminuye para frenadas mรกs rรกpidas pero mรกs bruscas. + + + <b>How smoothly openpilot speeds up with the "Standard" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Quรฉ tan suavemente acelera openpilot con el perfil "Estรกndar".</b> Aumenta para una aceleraciรณn mรกs gradual; disminuye para una aceleraciรณn mรกs rรกpida pero mรกs brusca. + + + <b>Reset the "Standard" profile to defaults.</b> + <b>Restablecer el perfil "Estรกndar" a los valores predeterminados.</b> + + + Relaxed + Relajado + + + <b>Customize the "Relaxed" personality profile.</b> Designed for smoother, more comfortable driving with larger gaps. + <b>Personaliza el perfil de personalidad "Relajado".</b> Diseรฑado para una conducciรณn mรกs suave y cรณmoda con espacios mรกs amplios. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Relaxed" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.75 seconds. + <b>Cuรกntos segundos openpilot sigue al vehรญculo lรญder al usar el perfil "Relajado".</b> Aumenta para mรกs espacio; disminuye para huecos mรกs pequeรฑos.<br><br>Predeterminado: 1.75 segundos. + + + <b>How smoothly openpilot accelerates with the "Relaxed" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Quรฉ tan suavemente acelera openpilot con el perfil "Relajado".</b> Aumenta para inicios mรกs suaves; disminuye para despegues mรกs rรกpidos pero mรกs bruscos. + + + <b>How smoothly openpilot brakes with the "Relaxed" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>Quรฉ tan suavemente frena openpilot con el perfil "Relaxed".</b> Aumenta para paradas mรกs suaves; disminuye para frenadas mรกs rรกpidas pero mรกs bruscas. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Relaxed" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Cuรกnto espacio adicional mantiene openpilot respecto al vehรญculo de adelante con el perfil "Relaxed".</b> Aumenta para brechas mรกs grandes y un seguimiento mรกs cauteloso; disminuye para brechas mรกs estrechas y un seguimiento mรกs cercano. + + + <b>How smoothly openpilot slows down with the "Relaxed" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Quรฉ tan suavemente reduce la velocidad openpilot con el perfil "Relaxed".</b> Aumenta para una desaceleraciรณn mรกs gradual; disminuye para frenadas mรกs rรกpidas pero mรกs bruscas. + + + <b>How smoothly openpilot speeds up with the "Relaxed" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Quรฉ tan suavemente acelera openpilot con el perfil "Relaxado".</b> Aumenta para una aceleraciรณn mรกs gradual; disminuye para una aceleraciรณn mรกs rรกpida pero mรกs brusca. + + + <b>Reset the "Relaxed" profile to defaults.</b> + <b>Restablecer el perfil "Relaxed" a los valores predeterminados.</b> + + + Longitudinal Tuning + Ajuste longitudinal + + + <b>Acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Cambios en el control de aceleraciรณn y frenado</b> para afinar cรณmo conduce openpilot. + + + Acceleration Profile + Perfil de aceleraciรณn + + + <b>How quickly openpilot speeds up.</b> "Eco" is gentle and efficient, "Sport" is firmer and more responsive, and "Sport+" accelerates at the maximum rate allowed. + <b>Quรฉ tan rรกpido acelera openpilot.</b> "Eco" es suave y eficiente, "Sport" es mรกs firme y receptivo, y "Sport+" acelera al mรกximo ritmo permitido. + + + Deceleration Profile + Perfil de deceleraciรณn + + + <b>How firmly openpilot slows down.</b> "Eco" favors coasting, "Sport" applies stronger braking. + <b>Con quรฉ firmeza reduce la velocidad openpilot.</b> "Eco" favorece el avance por inercia, "Sport" aplica un frenado mรกs fuerte. + + + Human-Like Acceleration + Aceleraciรณn similar a la humana + + + <b>Acceleration that mimics human behavior</b> by easing the throttle at low speeds and adding extra power when taking off from a stop. + <b>Aceleraciรณn que imita el comportamiento humano</b>, suavizando el acelerador a bajas velocidades y aรฑadiendo potencia extra al arrancar desde una parada. + + + Human-Like Following + Seguimiento similar al humano + + + Lead Detection Sensitivity + Sensibilidad de detecciรณn del lรญder + + + <b>How sensitive openpilot is to detecting vehicles.</b> Higher sensitivity allows quicker detection at longer distances but may react to non-vehicle objects; lower sensitivity is more conservative and reduces false detections. + <b>Quรฉ tan sensible es openpilot para detectar vehรญculos.</b> Una mayor sensibilidad permite una detecciรณn mรกs rรกpida a mayores distancias pero puede reaccionar a objetos que no son vehรญculos; una menor sensibilidad es mรกs conservadora y reduce las detecciones falsas. + + + Maximum Acceleration + Aceleraciรณn mรกxima + + + <b>Limit the strongest acceleration</b> openpilot can command. + <b>Limita la aceleraciรณn mรกs fuerte</b> que openpilot puede ordenar. + + + "Taco Bell Run" Turn Speed Hack + Hack de velocidad en curvas "Taco Bell Run" + + + <b>The turn-speed hack from comma's 2022 "Taco Bell Run".</b> Designed to slow down for left and right turns. + <b>El hack de velocidad en curvas del โ€œTaco Bell Runโ€ de comma en 2022.</b> Diseรฑado para reducir la velocidad en giros a la izquierda y a la derecha. + + + Quality of Life + Calidad de vida + + + <b>Miscellaneous acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Cambios varios en el control de aceleraciรณn y frenado</b> para ajustar cรณmo conduce openpilot. + + + Cruise Interval + Intervalo de crucero + + + <b>How much the set speed increases or decreases</b> for each + or โ€“ cruise control button press. + <b>Cuรกnto aumenta o disminuye la velocidad establecida</b> con cada pulsaciรณn del botรณn + o โ€“ del control de crucero. + + + Cruise Interval (Hold) + Intervalo de crucero (mantener) + + + <b>How much the set speed increases or decreases while holding the + or โ€“ cruise control buttons.</b> + <b>Cuรกnto aumenta o disminuye la velocidad establecida al mantener presionados los botones de control de crucero + o โ€“.</b> + + + Force Stop at "Detected" Stop Lights/Signs + Forzar parada en semรกforos/seรฑales de โ€œDetectadoโ€ + + + <b>Force openpilot to stop whenever the driving model "detects" a red light or stop sign.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>Forzar a openpilot a detenerse siempre que el modelo de conducciรณn "detecte" un semรกforo en rojo o una seรฑal de alto.</b><br><br><i><b>Descargo de responsabilidad</b>: openpilot no detecta explรญcitamente semรกforos ni seรฑales de alto. En el "Modo experimental", openpilot toma decisiones de conducciรณn de extremo a extremo a partir de la entrada de la cรกmara, lo que significa que puede detenerse incluso cuando no hay un motivo claro.</i> + + + Increase Stopped Distance by: + Aumentar la distancia de detenido en: + + + <b>Add extra space when stopped behind vehicles.</b> Increase for more room; decrease for shorter gaps. + <b>Aรฑade espacio extra al detenerte detrรกs de vehรญculos.</b> Aumenta para mรกs distancia; disminuye para intervalos mรกs cortos. + + + Map Accel/Decel to Gears + Asignar Aceleraciรณn/Desaceleraciรณn a Marchas + + + <b>Map the Acceleration or Deceleration profiles to the vehicle's "Eco" and "Sport" gear modes.</b> + <b>Asigna los perfiles de aceleraciรณn o deceleraciรณn a los modos de marcha "Eco" y "Sport" del vehรญculo.</b> + + + Offset Set Speed by: + Desplazar la velocidad establecida en: + + + <b>Increase the set speed by the chosen offset.</b> For example, set +5 if you usually drive 5 over the limit. + <b>Aumenta la velocidad establecida por el margen elegido.</b> Por ejemplo, configura +5 si sueles conducir 5 por encima del lรญmite. + + + Reverse Cruise Increase + Aumentar crucero en reversa + + + <b>Reverse the cruise control button behavior</b> so a short press increases the set speed by 5 instead of 1. + <b>Invertir el comportamiento del botรณn del control de crucero</b> para que una pulsaciรณn corta aumente la velocidad establecida en 5 en lugar de 1. + + + Increase Following Distance by: + Aumentar la distancia de seguimiento en:" + + + Reduce Acceleration by: + Reducir aceleraciรณn en: + + + Reduce Speed in Curves by: + Reducir velocidad en curvas en: + + + Snow + Nieve + + + <b>Driving adjustments for snowy conditions.</b> + <b>Ajustes de conducciรณn para condiciones de nieve.</b> + + + <b>Add extra space behind lead vehicles in snow.</b> Increase for more space; decrease for tighter gaps. + <b>Aรฑade espacio extra detrรกs de los vehรญculos precedentes en nieve.</b> Aumenta para mรกs espacio; reduce para intervalos mรกs cortos. + + + <b>Add extra buffer when stopped behind vehicles in snow.</b> Increase for more room; decrease for shorter gaps. + <b>Aรฑade un margen extra al detenerte detrรกs de vehรญculos en nieve.</b> Aumรฉntalo para mรกs espacio; redรบcelo para intervalos mรกs cortos. + + + <b>Lower the maximum acceleration in snow.</b> Increase for softer takeoffs; decrease for quicker but less stable takeoffs. + <b>Reduzca la aceleraciรณn mรกxima en nieve.</b> Aumรฉntela para despegues mรกs suaves; disminรบyala para despegues mรกs rรกpidos pero menos estables. + + + <b>Lower the desired speed while driving through curves in snow.</b> Increase for safer, gentler turns; decrease for more aggressive driving in curves. + <b>Reduzca la velocidad deseada al conducir por curvas con nieve.</b> Aumรฉntela para giros mรกs seguros y suaves; disminรบyala para una conducciรณn mรกs agresiva en curvas. + + + Speed Limit Controller + Control del lรญmite de velocidad + + + <b>Limit openpilot's maximum driving speed to the current speed limit</b> obtained from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + <b>Limita la velocidad mรกxima de conducciรณn de openpilot al lรญmite de velocidad actual</b> obtenido de mapas descargados, Mapbox, Navigate on openpilot o el tablero para vehรญculos compatibles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + + + Fallback Speed + Velocidad de respaldo + + + <b>The speed used by "Speed Limit Controller" when no speed limit is found.</b><br><br>- <b>Set Speed</b>: Use the cruise set speed<br>- <b>Experimental Mode</b>: Estimate the limit using the driving model<br>- <b>Previous Limit</b>: Keep using the last confirmed limit + <b>La velocidad utilizada por "Speed Limit Controller" cuando no se encuentra un lรญmite de velocidad.</b><br><br>- <b>Velocidad fijada</b>: Usar la velocidad fijada del control de crucero<br>- <b>Modo experimental</b>: Estimar el lรญmite usando el modelo de conducciรณn<br>- <b>Lรญmite anterior</b>: Seguir usando el รบltimo lรญmite confirmado + + + Override Speed + Anular velocidad + + + <b>The speed used by "Speed Limit Controller" after you manually drive faster than the posted limit.</b><br><br>- <b>Set with Gas Pedal</b>: Use the highest speed reached while pressing the gas<br>- <b>Max Set Speed</b>: Use the cruise set speed<br><br>Overrides clear when openpilot disengages. + <b>La velocidad utilizada por "Speed Limit Controller" despuรฉs de que conduzcas manualmente mรกs rรกpido que el lรญmite indicado.</b><br><br>- <b>Establecer con el acelerador</b>: Usa la velocidad mรกs alta alcanzada mientras presionas el acelerador<br>- <b>Velocidad de crucero establecida</b>: Usa la velocidad establecida del control de crucero<br><br>Las sustituciones se borran cuando openpilot se desactiva. + + + <b>Miscellaneous "Speed Limit Controller" changes</b> to fine-tune how openpilot drives. + <b>Cambios varios del "Speed Limit Controller"</b> para afinar cรณmo conduce openpilot. + + + Confirm New Speed Limits + Confirmar nuevos lรญmites de velocidad + + + <b>Ask before changing to a new speed limit.</b> To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds. + <b>Preguntar antes de cambiar a un nuevo lรญmite de velocidad.</b> Para aceptar, toca el widget parpadeante en pantalla o presiona el botรณn de Aumento de Crucero. Para denegar, presiona el botรณn de Disminuciรณn de Crucero o ignora la solicitud durante 30 segundos. + + + Force MPH from Dashboard + Forzar MPH desde el tablero + + + <b>Always read dashboard speed limit signs in mph.</b> Turn this on if the cluster shows mph but the limit is interpreted as km/h. + <b>Lea siempre las seรฑales de lรญmite de velocidad del tablero en mph.</b> Active esto si el cuadro muestra mph pero el lรญmite se interpreta como km/h.</b> + + + Higher Limit Lookahead Time + Tiempo de anticipaciรณn para lรญmite superior + + + <b>How far ahead openpilot anticipates upcoming higher speed limits</b> from downloaded map data. + <b>A quรฉ distancia openpilot anticipa prรณximos lรญmites de velocidad mรกs altos</b> a partir de los datos de mapas descargados. + + + Lower Limit Lookahead Time + Tiempo de anticipaciรณn del lรญmite inferior + + + <b>How far ahead openpilot anticipates upcoming lower speed limits</b> from downloaded map data. + <b>Cuรกnto se adelanta openpilot a prรณximos lรญmites de velocidad mรกs bajos</b> segรบn los datos de mapas descargados. + + + Match Speed Limit on Engage + Igualar el lรญmite de velocidad al activar + + + <b>When openpilot is first enabled, automatically set the max speed to the current posted limit.</b> + <b>Cuando se habilita openpilot por primera vez, establece automรกticamente la velocidad mรกxima al lรญmite publicado actual.</b> + + + Use Mapbox as Fallback + Usar Mapbox como respaldo + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>Usar datos de lรญmites de velocidad de Mapbox cuando no haya otra fuente disponible.</b> + + + Speed Limit Source Priority + Prioridad de la fuente del lรญmite de velocidad + + + <b>The source order for speed limits</b> when more than one is available. + <b>El orden de las fuentes para los lรญmites de velocidad</b> cuando hay mรกs de uno disponible.</b> + + + Speed Limit Offsets + Compensaciones de lรญmite de velocidad + + + <b>Add an offset to the posted speed limit</b> to better match your driving style. + <b>Aรฑade un desfase al lรญmite de velocidad seรฑalado</b> para que se ajuste mejor a tu estilo de conducciรณn. Speed Offset (0โ€“24 mph) - Compensaciรณn de Velocidad (0โ€“24 mph) + Compensaciรณn de velocidad (0โ€“24 mph) + + + <b>How much to offset posted speed-limits</b> between 0 and 24 mph. + <b>Cuรกnto compensar los lรญmites de velocidad seรฑalizados</b> entre 0 y 24 mph. Speed Offset (25โ€“34 mph) - Desplazamiento de velocidad (25โ€“34 mph) + Desfase de velocidad (25โ€“34 mph) + + + <b>How much to offset posted speed-limits</b> between 25 and 34 mph. + <b>Cuรกnto compensar los lรญmites de velocidad seรฑalados</b> entre 25 y 34 mph. Speed Offset (35โ€“44 mph) - Compensaciรณn de velocidad (35โ€“44 mph) + Compensaciรณn de velocidad (35โ€“44 mph) + + + <b>How much to offset posted speed-limits</b> between 35 and 44 mph. + <b>Cuรกnto compensar los lรญmites de velocidad seรฑalados</b> entre 35 y 44 mph. Speed Offset (45โ€“54 mph) - Compensaciรณn de velocidad (45โ€“54 mph) + Compensaciรณn de velocidad (45โ€“54 mph) + + + <b>How much to offset posted speed-limits</b> between 45 and 54 mph. + <b>Cuรกnto compensar los lรญmites de velocidad seรฑalados</b> entre 45 y 54 mph. Speed Offset (55โ€“64 mph) - Compensaciรณn de Velocidad (55โ€“64 mph) + Desfase de velocidad (55โ€“64 mph) + + + <b>How much to offset posted speed-limits</b> between 55 and 64 mph. + <b>Cuรกnto compensar los lรญmites de velocidad seรฑalados</b> entre 55 y 64 mph. Speed Offset (65โ€“74 mph) - Compensaciรณn de velocidad (65โ€“74 mph) + Compensaciรณn de velocidad (65โ€“74 mph) + + + <b>How much to offset posted speed-limits</b> between 65 and 74 mph. + <b>Cuรกnto compensar los lรญmites de velocidad seรฑalados</b> entre 65 y 74 mph.</b Speed Offset (75โ€“99 mph) - Compensaciรณn de velocidad (75โ€“99 mph) + Desfase de velocidad (75โ€“99 mph) - Only For Detected Lanes - Solo para carriles detectados + <b>How much to offset posted speed-limits</b> between 75 and 99 mph. + <b>Cuรกnto desviar los lรญmites de velocidad publicados</b> entre 75 y 99 mph. + + + Visual Settings + Ajustes visuales + + + <b>Visual "Speed Limit Controller" changes</b> to fine-tune how the driving screen looks. + <b>Los cambios visuales de "Speed Limit Controller"</b> para afinar el aspecto de la pantalla de conducciรณn. + + + Show Speed Limit Offset + Mostrar desviaciรณn del lรญmite de velocidad + + + <b>Show the current offset from the posted limit</b> on the driving screen. + <b>Mostrar el desfase actual respecto al lรญmite publicado</b> en la pantalla de conducciรณn. + + + Show Speed Limit Sources + Mostrar fuentes del lรญmite de velocidad + + + <b>Display the speed-limit sources and their current values</b> on the driving screen. + <b>Mostrar las fuentes de lรญmites de velocidad y sus valores actuales</b> en la pantalla de conducciรณn. + + + seconds + segundos + + + m/sยฒ + m/sยฒ + + + mph + mph + + + With Lead + Con vehรญculo delantero + + + <b>Switch to "Experimental Mode" when driving below this speed with a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>Cambia a "Modo experimental" cuando conduzcas por debajo de esta velocidad con un lรญder</b> para ayudar a openpilot a manejar situaciones a baja velocidad con mayor suavidad. + + + Slower Lead + Vehรญculo lรญder mรกs lento + + + Stopped Lead + Vehรญculo lรญder detenido + + + Intersections + Intersecciones + + + Turns + Giros + + + Off + Apagado + + + second + segundo + + + Not For Detected Lanes + No para carriles detectados + + + RESET + RESTABLECER + + + Are you sure you want to completely reset your curvature data? + ยฟEstรก seguro de que desea restablecer por completo sus datos de curvatura? + + + Eco + Eco + + + Sport + Deportivo + + + Sport+ + Sport+ + + + feet + pies + + + Acceleration + Aceleraciรณn + + + Deceleration + Deceleraciรณn + + + MANAGE + ADMINISTRAR + + + Set Speed + Establecer velocidad + + + Experimental Mode + Modo experimental + + + Previous Limit + Lรญmite anterior + + + None + Ninguno + + + Set With Gas Pedal + Fijar con el acelerador + + + Max Set Speed + Velocidad mรกxima establecida + + + SELECT + SELECCIONAR + + + Dashboard + Tablero + + + Map Data + Datos de mapas + + + Navigation + Navegaciรณn + + + Highest + Mรกs alto + + + Lowest + Mรกs bajo + + + Select your primary priority + Selecciona tu prioridad principal + + + Select your secondary priority + Selecciona tu prioridad secundaria + + + Select your tertiary priority + Selecciona tu prioridad terciaria + + + Lower Limits + Lรญmites inferiores + + + Higher Limits + Lรญmites mรกs altos + + + Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? + ยฟSeguro que quieres restablecer por completo tu configuraciรณn de <b>Traffic Mode</b>? + + + Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? + ยฟSeguro que quieres restablecer por completo tus ajustes para la personalidad <b>Agresiva</b>? + + + Are you sure you want to completely reset your settings for the <b>Standard</b> personality? + ยฟEstรก seguro de que desea restablecer completamente su configuraciรณn para la personalidad <b>Estรกndar</b>? + + + Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? + ยฟSeguro que quieres restablecer por completo tu configuraciรณn para la personalidad <b>Relajada</b>? + + + foot + pie + + + meter + metro + + + meters + metros + + + km/h + km/h Speed Offset (0โ€“29 km/h) - Compensaciรณn de Velocidad (0โ€“29 km/h) + Desfase de velocidad (0โ€“29 km/h) Speed Offset (30โ€“49 km/h) - Compensaciรณn de velocidad (30โ€“49 km/h) + Compensaciรณn de velocidad (30โ€“49 km/h) Speed Offset (50โ€“59 km/h) - Compensaciรณn de Velocidad (50โ€“59 km/h) + Compensaciรณn de velocidad (50โ€“59 km/h) Speed Offset (60โ€“79 km/h) - Compensaciรณn de velocidad (60โ€“79 km/h) + Desfase de velocidad (60โ€“79 km/h) Speed Offset (80โ€“99 km/h) - Desplazamiento de velocidad (80โ€“99 km/h) + Desfase de velocidad (80โ€“99 km/h) Speed Offset (100โ€“119 km/h) - Compensaciรณn de velocidad (100โ€“119 km/h) + Desfase de velocidad (100โ€“119 km/h) Speed Offset (120โ€“140 km/h) - Desplazamiento de velocidad (120โ€“140 km/h) + Compensaciรณn de velocidad (120โ€“140 km/h) - Curve Speed Control - Control de velocidad en curvas - - - Automatically slow down for upcoming curves using downloaded maps or the driving model. - Reducir automรกticamente la velocidad para las curvas prรณximas utilizando mapas descargados o el modelo de conducciรณn. - - - Curve Detection Method - Mรฉtodo de Detecciรณn de Curvas - - - How curves are detected. <b>Map-Based</b> uses downloaded map data to identify curves and determine the appropriate speed in which to handle them at, while <b>Vision</b> relies solely on the driving model. - Cรณmo se detectan las curvas. <b>Basado en mapas</b> utiliza datos de mapas descargados para identificar curvas y determinar la velocidad adecuada para manejarlas, mientras que <b>Visiรณn</b> se basa รบnicamente en el modelo de conducciรณn. - - - Curve Detection Failsafe - Sistema de seguridad para detecciรณn de curvas - - - Only trigger <b>Curve Speed Control</b> if a curve is detected with the model while using the <b>Map-Based</b> method. Useful to help prevent false positives. - Solo activar <b>Control de Velocidad en Curvas</b> si se detecta una curva con el modelo mientras se utiliza el mรฉtodo <b>Basado en Mapas</b>. รštil para ayudar a prevenir falsos positivos. - - - Curve Detection Sensitivity - Sensibilidad de Detecciรณn de Curvas - - - How sensitive openpilot is when detecting curves. Higher values trigger earlier responses at the risk of triggering too often, while lower values increase confidence at the risk of triggering too infrequently. - Quรฉ tan sensible es openpilot al detectar curvas. Valores mรกs altos activan respuestas mรกs tempranas con el riesgo de activarse con demasiada frecuencia, mientras que valores mรกs bajos aumentan la confianza con el riesgo de activarse con poca frecuencia. - - - Curve Speed Aggressiveness - Agresividad de Velocidad en Curvas - - - How aggressive openpilot is when navigating through curves. Higher values result in faster turns but may reduce comfort or stability, while lower values result in slower, smoother turns at the risk of being overly cautious. - Quรฉ tan agresivo es openpilot al navegar por curvas. Valores mรกs altos resultan en giros mรกs rรกpidos pero pueden reducir la comodidad o estabilidad, mientras que valores mรกs bajos resultan en giros mรกs lentos y suaves con el riesgo de ser demasiado cautelosos. - - - Map Based - Basado en mapas - - - Vision - Visiรณn - - - The <b>Map Based</b> option is only available when some <b>Map Data</b> has been downloaded! - La opciรณn <b>Basada en el Mapa</b> solo estรก disponible cuando se han descargado algunos <b>Datos del Mapa</b>. + <b>Following behavior that mimics human drivers</b> by closing gaps behind faster vehicles for quicker takeoffs and dynamically adjusting the desired following distance for gentler, more efficient braking. + <b>Comportamiento de seguimiento que imita a los conductores humanos</b> cerrando huecos detrรกs de vehรญculos mรกs rรกpidos para salidas mรกs rรกpidas y ajustando dinรกmicamente la distancia de seguimiento deseada para un frenado mรกs suave y eficiente. FrogPilotManageControl MANAGE - GESTIONAR + ADMINISTRAR FrogPilotMapsPanel Manually - Manualmente + Manualmente Weekly - Semanalmente + Semanal Monthly - Mensual + Mensual Automatically Update Maps - Actualizar mapas automรกticamente + Actualizar mapas automรกticamente - The frequency at which maps sync with the latest OpenStreetMap (OSM) changes. Weekly updates occur every Sunday, and monthly updates occur on the 1st. - La frecuencia con la que los mapas se sincronizan con los รบltimos cambios de OpenStreetMap (OSM). Las actualizaciones semanales ocurren todos los domingos, y las actualizaciones mensuales ocurren el dรญa 1. - - - Data Sources - Fuentes de datos - - - Select map data sources to use with "Curve Speed Control" and "Speed Limit Controller". - Seleccione fuentes de datos de mapas para usar con "Control de Velocidad en Curvas" y "Controlador de Lรญmite de Velocidad". - - - COUNTRIES - PAรSES - - - STATES - ESTADOS + <b>How often maps update</b> from "OpenStreetMap (OSM)" with the latest speed limit information. Weekly updates run every Sunday; monthly updates run on the 1st. + <b>Con quรฉ frecuencia se actualizan los mapas</b> desde "OpenStreetMap (OSM)" con la informaciรณn de lรญmites de velocidad mรกs reciente. Las actualizaciones semanales se ejecutan cada domingo; las mensuales, el dรญa 1. Download Maps - Descargar mapas + Descargar mapas DOWNLOAD - DESCARGAR + DESCARGAR - Download the selected maps to use with "Curve Speed Control" and "Speed Limit Controller". - Descargue los mapas seleccionados para usar con "Control de Velocidad en Curvas" y "Controlador de Lรญmite de Velocidad". + <b>Manually update your selected map sources</b> so "Speed Limit Controller" has the latest speed limit information. + <b>Actualiza manualmente tus fuentes de mapas seleccionadas</b> para que "Speed Limit Controller" tenga la informaciรณn mรกs reciente de lรญmites de velocidad. CANCEL - CANCELAR + CANCELAR - Are you sure you want to cancel the download? - ยฟEstรก seguro de que desea cancelar la descarga? + Cancel the download? + ยฟCancelar la descarga? - Download Completion ETA - ETA de finalizaciรณn de la descarga + Last Updated + รšltima actualizaciรณn - Download Progress - Progreso de descarga + Map Sources + Fuentes de mapas - Download Time Elapsed - Tiempo transcurrido de descarga + <b>Select the countries or U.S. states to use with "Speed Limit Controller".</b> + <b>Seleccione los paรญses o los estados de EE. UU. para usar con "Speed Limit Controller".</b> - Maps Last Updated - Mapas actualizados por รบltima vez + COUNTRIES + PAรSES - Maps Size - Tamaรฑo de los mapas + STATES + ESTADOS + + + Progress + Progreso + + + Time Elapsed + Tiempo transcurrido + + + Time Remaining + Tiempo restante Remove Maps - Eliminar mapas + Eliminar mapas REMOVE - ELIMINAR + ELIMINAR - Remove downloaded maps to clear up storage space. - Elimina los mapas descargados para liberar espacio de almacenamiento. + <b>Delete downloaded map data</b> to free up storage space. + <b>Eliminar los datos de mapas descargados</b> para liberar espacio de almacenamiento. - Are you sure you want to delete all of your downloaded maps? - ยฟEstรก seguro de que desea eliminar todos sus mapas descargados? + Delete all downloaded maps? + ยฟEliminar todos los mapas descargados? - Reset Map Downloader - Restablecer el descargador de mapas + Reset Downloader + Restablecer descargador RESET - REINICIAR + RESTABLECER - Reset the map downloader. Use if you're running into issues with downloading maps. - Restablecer el descargador de mapas. รšselo si tiene problemas para descargar mapas. + <b>Reset the map downloader.</b> Use this if downloads are stuck or failing. + <b>Restablecer el descargador de mapas.</b> รšsalo si las descargas estรกn atascadas o fallan. - Are you sure you want to reset the map downloader? This will force a reboot once completed. - ยฟEstรก seguro de que desea restablecer el descargador de mapas? Esto forzarรก un reinicio una vez completado. + Reset the map downloader? Your device will reboot afterward. + ยฟRestablecer el descargador de mapas? Tu dispositivo se reiniciarรก despuรฉs. Reset - Restablecer + Restablecer Resetting... - Restableciendo... + Restableciendo... Reset! - ยกReiniciar! + ยกRestablecer! Rebooting... - Reiniciando... + Reiniciando... + + + Storage Used + Almacenamiento usado Africa - รfrica + รfrica Antarctica - Antรกrtida + Antรกrtida Asia - Asia + Asia Europe - Europa + Europa North America - Norteamรฉrica + Norteamรฉrica Oceania - Oceanรญa + Oceanรญa South America - Sudamรฉrica + Sudamรฉrica United States - Midwest - Estados Unidos - Medio Oeste + Estados Unidos - Medio Oeste United States - Northeast - Estados Unidos - Noreste + Estados Unidos - Noreste United States - South - Estados Unidos - Sur + Estados Unidos - Sur United States - West - Estados Unidos - Oeste + Estados Unidos - Oeste United States - Territories - Estados Unidos - Territorios - - - CANCELLED - CANCELADO + Estados Unidos - Territorios Offline... - Desconectado... + Sin conexiรณn... + + + CANCELLED + CANCELADO FrogPilotModelPanel Automatically Download New Models - Descargar automรกticamente nuevos modelos + Descargar automรกticamente modelos nuevos - Automatically download new driving models as they become available. - Descargar automรกticamente nuevos modelos de conducciรณn a medida que estรฉn disponibles. + <b>Automatically download new driving models</b> as they become available. + <b>Descargar automรกticamente nuevos modelos de conducciรณn</b> a medida que estรฉn disponibles. Delete Driving Models - Eliminar modelos de conducciรณn + Eliminar modelos de conducciรณn - Delete driving models from the device. - Eliminar modelos de conducciรณn del dispositivo. + <b>Delete downloaded driving models</b> to free up storage space. + <b>Eliminar los modelos de conducciรณn descargados</b> para liberar espacio de almacenamiento. Download Driving Models - Descargar modelos de conducciรณn + Descargar modelos de conducciรณn - Download driving models to the device. - Descargar modelos de conducciรณn al dispositivo. + <b>Manually download driving models</b> to the device. + <b>Descargar manualmente los modelos de conducciรณn</b> al dispositivo. Model Randomizer - Aleatorizador de modelos + Aleatorizador de modelos - Driving models are chosen at random each drive and feedback prompts are used to find the model that best suits your needs. - Los modelos de conducciรณn se eligen al azar en cada trayecto y se utilizan indicaciones de retroalimentaciรณn para encontrar el modelo que mejor se adapte a tus necesidades. + <b>Select a random driving model each drive</b> and use feedback prompts at the end of the drive to help find the model that best suits you! + <b>Selecciona un modelo de conducciรณn aleatorio en cada viaje</b> y usa las indicaciones de retroalimentaciรณn al final del viaje para ayudar a encontrar el modelo que mejor se adapte a ti. Manage Model Blacklist - Gestionar la lista negra de modelos + Gestionar la lista negra de modelos - Add or remove models from the <b>Model Randomizer</b>'s blacklist list. - Agregar o eliminar modelos de la lista negra del <b>Model Randomizer</b>. + <b>Add or remove driving models from the "Model Randomizer" blacklist.</b> + <b>Agrega o elimina modelos de conducciรณn de la lista negra de "Model Randomizer".</b> Manage Model Ratings - Gestionar calificaciones de modelos + Administrar calificaciones del modelo - Reset or view the saved ratings for the driving models. - Restablecer o ver las calificaciones guardadas para los modelos de conducciรณn. + <b>View or reset saved model ratings</b> used by the "Model Randomizer". + <b>Ver o restablecer las calificaciones de modelos guardadas</b> usadas por el "Model Randomizer". Select Driving Model - Seleccionar modelo de conducciรณn + Seleccionar modelo de conducciรณn - Select the active driving model. - Seleccione el modelo de conducciรณn activo. + <b>Choose which driving model openpilot uses.</b> + <b>Elige quรฉ modelo de conducciรณn usa openpilot.</b> + + + Update Model Manager + Actualizar el Administrador de Modelos + + + <b>Update the "Model Manager"</b> to support the latest models. + <b>Actualiza el "Model Manager"</b> para admitir los modelos mรกs recientes. DELETE - ELIMINAR + ELIMINAR DELETE ALL - ELIMINAR TODO + ELIMINAR TODO Select a driving model to delete - Seleccione un modelo de conducciรณn para eliminar + Selecciona un modelo de conducciรณn para eliminar Are you sure you want to delete the "%1" model? - ยฟEstรก seguro de que desea eliminar el modelo "%1"? + ยฟEstรก seguro de que desea eliminar el modelo "%1"? Delete - Eliminar + Eliminar Are you sure you want to delete all of your downloaded driving models? - ยฟEstรก seguro de que desea eliminar todos sus modelos de conducciรณn descargados? + ยฟSeguro que quieres eliminar todos tus modelos de conducciรณn descargados? DOWNLOAD - DESCARGAR + DESCARGAR DOWNLOAD ALL - DESCARGAR TODO + DESCARGAR TODO - Select a driving model to download - Seleccione un modelo de conducciรณn para descargar + Tinygrad is out of date and must be updated before you can download new models. Update now? + Tinygrad estรก desactualizado y debe actualizarse antes de poder descargar modelos nuevos. ยฟActualizar ahora? + + + Updating Tinygrad will delete all existing Tinygrad-based models which will need to be re-downloaded. Proceed? + Actualizar Tinygrad eliminarรก todos los modelos basados en Tinygrad existentes, que deberรกn volver a descargarse. ยฟContinuar? CANCEL - CANCELAR + CANCELAR + + + Updating... + Actualizando... + + + Select a driving model to download + Seleccione un modelo de conducciรณn para descargar ADD - Aร‘ADIR + Aร‘ADIR REMOVE - ELIMINAR + ELIMINAR REMOVE ALL - ELIMINAR TODO + ELIMINAR TODO - There are no more models to blacklist! The only available model is "%1"! - ยกNo hay mรกs modelos para poner en la lista negra! ยกEl รบnico modelo disponible es "%1"! + There are no more driving models to blacklist. The only available model is "%1"! + No hay mรกs modelos de conducciรณn para bloquear. ยกEl รบnico modelo disponible es "%1"! - Select a model to add to the blacklist - Seleccione un modelo para aรฑadir a la lista negra + Select a driving model to add to the blacklist + Selecciona un modelo de conducciรณn para agregar a la lista negra Are you sure you want to add the "%1" model to the blacklist? - ยฟEstรก seguro de que desea agregar el modelo "%1" a la lista negra? + ยฟSeguro que deseas aรฑadir el modelo "%1" a la lista negra? Add - Agregar + Agregar - Select a model to remove from the blacklist - Seleccione un modelo para eliminar de la lista negra + Select a driving model to remove from the blacklist + Selecciona un modelo de conducciรณn para eliminar de la lista negra Are you sure you want to remove the "%1" model from the blacklist? - ยฟEstรก seguro de que desea eliminar el modelo "%1" de la lista negra? + ยฟEstรก seguro de que desea eliminar el modelo "%1" de la lista negra? Remove - Eliminar + Eliminar - Are you sure you want to remove all of your blacklisted models? - ยฟEstรก seguro de que desea eliminar todos sus modelos de la lista negra? + Are you sure you want to remove all of your blacklisted driving models? + ยฟEstรก seguro de que desea eliminar todos sus modelos de conducciรณn en la lista negra? RESET - REINICIAR + RESTABLECER VIEW - VISTA + VER - Are you sure you want to reset all of your model drives and scores? - ยฟEstรก seguro de que desea restablecer todas sus unidades de modelo y puntuaciones? + Reset all model drives and ratings? This clears your drive history and collected feedback! + ยฟRestablecer todas las conducciones del modelo y las valoraciones? ยกEsto borrarรก tu historial de conducciรณn y los comentarios recopilados! SELECT - SELECT + SELECCIONAR - Select a model - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC - Seleccionar un modelo - ๐Ÿ—บ๏ธ = Navegaciรณn | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + UPDATE + ACTUALIZAR - The "Model Randomizer" only works with downloaded models. Do you want to download all the driving models? - El "Model Randomizer" solo funciona con modelos descargados. ยฟQuieres descargar todos los modelos de conducciรณn? + Cancelling... + Cancelando... + + + Updating Tinygrad will delete existing Tinygrad-based driving models and need to be re-downloaded. Proceed? + Actualizar Tinygrad eliminarรก los modelos de conducciรณn basados en Tinygrad existentes y serรก necesario volver a descargarlos. ยฟContinuar? + + + The "Model Randomizer" works only with downloaded models. Download all models now? + El "Model Randomizer" funciona solo con modelos descargados. ยฟDescargar todos los modelos ahora? Offline... - Desconectado... + Sin conexiรณn... + + + Update available! + ยกActualizaciรณn disponible! + + + Up to date! + ยกActualizado! + + + Select a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + Selecciona un modelo โ€” ๐Ÿ—บ๏ธ = Navegaciรณn | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + + + + FrogPilotModelReview + + How would you rate that drive? + ยฟCรณmo calificarรญas ese viaje? + + + Model successfully blacklisted! + ยกModelo bloqueado correctamente! + + + Drive Rating Selection + Selecciรณn de calificaciรณn de conducciรณn + + + Blacklist this model to remove it from rotation + Aรฑade este modelo a la lista negra para eliminarlo de la rotaciรณn + + + Blacklist Model + Modelo en lista negra + + + Model used during that drive: + Modelo usado durante ese trayecto: + + + Model Rank + Rango del modelo + + + Model Rating + Calificaciรณn del modelo + + + Model Drives + Conducciรณn del modelo + + + Total Drives + Conducciones totales + + + #%1 + #%1 + + + %1% + %1% + + + %1 %2 + %1 %2 + + + Drive + Conducir + + + Drives + Conduce + + + %1 Total %2 + %1 Total %2 FrogPilotNavigationPanel - - Manage your %1. - Administra tu %1. - - - ADD - Aร‘ADIR - - - Enter your %1 - Ingrese su %1 - - - Inputted key is invalid or too short! - ยกLa clave ingresada es invรกlida o demasiado corta! - - - Are you sure you want to remove your %1? - ยฟEstรก seguro de que desea eliminar su %1? - - - REMOVE - ELIMINAR - Manage Your Settings At - Administra tus configuraciones en - - - MapBox - MapBox - - - Amap - Amap - - - Google - Google - - - Destination Search Provider - Proveedor de bรบsqueda de destinos - - - The search provider used for destination queries in "Navigate on Openpilot". Options include "MapBox" (recommended), "Amap", and "Google Maps". - El proveedor de bรบsqueda utilizado para consultas de destino en "Navigate on Openpilot". Las opciones incluyen "MapBox" (recomendado), "Amap" y "Google Maps". - - - Amap Key #1 - Clave del mapa #1 - - - Manage your Amap key. - Administra tu clave de Amap. - - - Enter your Amap key - Ingrese su clave de Amap - - - Are you sure you want to remove your Amap key? - ยฟEstรก seguro de que desea eliminar su clave de Amap? - - - Amap Key #2 - Clave de Amap #2 - - - Google Maps Key - Clave de Google Maps - - - Manage your Google Maps key. - Administra tu clave de Google Maps. - - - Enter your Google Maps key - Ingrese su clave de Google Maps - - - Are you sure you want to remove your Google Maps key? - ยฟEstรก seguro de que desea eliminar su clave de Google Maps? - - - Public Mapbox Key - Clave pรบblica de Mapbox - - - Secret Mapbox Key - Clave secreta de Mapbox - - - MapBox Setup Instructions - Instrucciones de configuraciรณn de MapBox - - - VIEW - VER - - - View the instructions to set up "MapBox" for "Primeless Navigation". - Vea las instrucciones para configurar "MapBox" para "Primeless Navigation". - - - CANCEL - CANCELAR - - - Speed Limit Filler - Relleno de Lรญmite de Velocidad - - - Are you sure you want to cancel the speed limit update process? - ยฟEstรก seguro de que desea cancelar el proceso de actualizaciรณn del lรญmite de velocidad? - - - You have reached the request limit. - -It will reset in %1 hours and %2 minutes. - Has alcanzado el lรญmite de solicitudes. - -Se restablecerรก en %1 horas y %2 minutos. - - - This process will take awhile, so it's advised to start when you're done driving with a stable Wi-Fi connection. Do you wish to proceed? - Este proceso tomarรก un tiempo, por lo que se recomienda comenzar cuando hayas terminado de conducir y tengas una conexiรณn Wi-Fi estable. ยฟDeseas continuar? - - - Manually Update Speed Limits - Actualizar manualmente los lรญmites de velocidad - - - Automatically collect missing or incorrect speed limits from your dashboard (if supported), <b>Mapbox</b>, and <b>Navigate-on-openpilot</b> while driving.<br><br>When the car is turned off and connected to Wi-Fi, your speed limit data is automatically processed into a compiled file formatted for the tool located at <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>You can grab the processed file from <b>The Pond</b> via the <b>Download Speed Limits</b> menu.<br><br>Want a more thorough walkthrough? Check out the <b>#speed-limit-filler</b> channel in the <b>FrogPilot Discord</b>! - Recoge automรกticamente los lรญmites de velocidad faltantes o incorrectos desde tu tablero (si es compatible), <b>Mapbox</b> y <b>Navigate-on-openpilot</b> mientras conduces.<br><br>Cuando el coche estรก apagado y conectado a Wi-Fi, tus datos de lรญmites de velocidad se procesan automรกticamente en un archivo compilado y formateado para la herramienta ubicada en <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>Puedes obtener el archivo procesado desde <b>The Pond</b> a travรฉs del menรบ <b>Download Speed Limits</b>.<br><br>ยฟQuieres una guรญa mรกs detallada? ยกConsulta el canal <b>#speed-limit-filler</b> en el <b>FrogPilot Discord</b>! - - - Cancelled... - Cancelado... - - - Completed! - ยกCompletado! + Administra tus configuraciones en Offline... - Desconectado... + Sin conexiรณn... + + + Mapbox + Mapbox + + + Amap + Amap + + + Destination Search Provider + Proveedor de bรบsqueda de destinos + + + <b>The search provider used for destination queries</b> in "Navigate on Openpilot". Options include Mapbox (recommended) and Amap. + <b>El proveedor de bรบsqueda utilizado para las consultas de destino</b> en "Navigate on Openpilot". Las opciones incluyen Mapbox (recomendado) y Amap. + + + Amap Key #1 + Clave Amap n.ยบ 1 + + + Amap Key #2 + Clave de Amap n.ยบ 2 + + + Public Mapbox Key + Clave pรบblica de Mapbox + + + Secret Mapbox Key + Clave secreta de Mapbox + + + Mapbox Setup Instructions + Instrucciones de configuraciรณn de Mapbox + + + VIEW + VER + + + <b>Instructions on how to set up Mapbox</b> for "Primeless Navigation". + <b>Instrucciones para configurar Mapbox</b> para "Navegaciรณn sin Prime". + + + CANCEL + CANCELAR + + + Manually Update Speed Limits + Actualizar manualmente los lรญmites de velocidad + + + Speed Limit Filler + Relleno del lรญmite de velocidad + + + <b>Automatically collect missing or incorrect speed limits while you drive</b> using speeds limits sourced from your dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When you're parked and connected to Wi-Fi, FrogPilot will automatically processes this data into a file to be used with the tool located at "SpeedLimitFiller.frogpilot.download".<br><br>You can download this file from "The Pond" in the "Download Speed Limits" menu.<br><br>Need a step-by-step guide? Visit <b>#speed-limit-filler</b> in the FrogPilot Discord! + <b>Recopila automรกticamente lรญmites de velocidad faltantes o incorrectos mientras conduces</b> usando lรญmites de velocidad obtenidos de tu tablero (si es compatible), Mapbox y "Navigate on openpilot".<br><br>Cuando estรฉs estacionado y conectado a Wiโ€‘Fi, FrogPilot procesarรก automรกticamente estos datos en un archivo para usarse con la herramienta ubicada en "SpeedLimitFiller.frogpilot.download".<br><br>Puedes descargar este archivo desde "The Pond" en el menรบ "Download Speed Limits".<br><br>ยฟNecesitas una guรญa paso a paso? Visita <b>#speed-limit-filler</b> en el Discord de FrogPilot. + + + Cancel the speed-limit update? + ยฟCancelar la actualizaciรณn del lรญmite de velocidad? + + + Cancelled... + Cancelado... + + + You've hit today's request limit. + +It will reset in %1 hours and %2 minutes. + Has alcanzado el lรญmite de solicitudes de hoy. +Se restablecerรก en %1 horas y %2 minutos. + + + This process takes a while. It's recommended to start when you're done driving and connected to stable Wi-Fi. Continue? + Este proceso lleva un rato. Se recomienda iniciarlo cuando hayas terminado de conducir y estรฉs conectado a una red Wiโ€‘Fi estable. ยฟContinuar? + + + <b>Manage your "%1".</b> + <b>Gestiona tu "%1".</b> + + + ADD + Aร‘ADIR + + + Enter your %1 + Introduce tu %1 + + + Inputted key is invalid or too short! + ยกLa clave introducida es invรกlida o demasiado corta! + + + Remove your %1? + ยฟQuitar su %1? + + + REMOVE + ELIMINAR + + + Completed! + ยกCompletado! FrogPilotSettingsWindow MANAGE - ADMINISTRAR + ADMINISTRAR DRIVING MODEL - MODELO DE CONDUCCIร“N + MODELO DE CONDUCCIร“N GAS / BRAKE - GAS / FRENO + ACELERADOR / FRENO STEERING - DIRECCIร“N + DIRECCIร“N MAP DATA - DATOS DEL MAPA + DATOS DE MAPA NAVIGATION - NAVEGACIร“N + NAVEGACIร“N DATA - DATA + DATOS DEVICE CONTROLS - CONTROLES DEL DISPOSITIVO + CONTROLES DEL DISPOSITIVO UTILITIES - UTILIDADES + HERRAMIENTAS APPEARANCE - APARIENCIA + APARIENCIA THEME - TEMA + TEMA VEHICLE SETTINGS - AJUSTES DEL VEHรCULO + AJUSTES DEL VEHรCULO WHEEL CONTROLS - CONTROLES DEL VOLANTE + CONTROLES DEL VOLANTE Alerts and Sounds - Alertas y sonidos + Alertas y sonidos - FrogPilot settings for alert volumes and custom notifications to stay informed about important driving events. - Configuraciรณn de FrogPilot para volรบmenes de alerta y notificaciones personalizadas para mantenerse informado sobre eventos de conducciรณn importantes. + <b>Adjust alert volumes and enable custom notifications.</b> + <b>Ajusta los volรบmenes de alertas y activa notificaciones personalizadas.</b> Driving Controls - Controles de conducciรณn + Controles de conducciรณn - FrogPilot settings for acceleration, braking, and steering. - Configuraciones de FrogPilot para aceleraciรณn, frenado y direcciรณn. + <b>Fine-tune custom FrogPilot acceleration, braking, and steering controls.</b> + <b>Ajusta con precisiรณn los controles personalizados de aceleraciรณn, frenado y direcciรณn de FrogPilot.</b> Navigation - Navegaciรณn + Navegaciรณn - Download map data for <b>Curve Speed Control</b>, <b>Speed Limit Controller</b>, and set up <b>Navigate on openpilot (NOO)</b>. - Descargar datos de mapas para <b>Control de Velocidad en Curvas</b>, <b>Controlador de Lรญmite de Velocidad</b>, y configurar <b>Navegar en openpilot (NOO)</b>. + <b>Download map data for the "Speed Limit Controller" and configure "Navigate on openpilot" (NOO).</b> + <b>Descarga los datos de mapas para el "Controlador de Lรญmite de Velocidad" y configura "Navegar con openpilot" (NOO).</b> - System Management - Gestiรณn del Sistema + System Settings + Configuraciรณn del sistema - Data storage management, debugging tools, device settings, screen behavior settings, system backups, and utilities to maintain, optimize, and troubleshoot FrogPilot. - Gestiรณn de almacenamiento de datos, herramientas de depuraciรณn, configuraciรณn de dispositivos, configuraciรณn del comportamiento de la pantalla, copias de seguridad del sistema y utilidades para mantener, optimizar y solucionar problemas de FrogPilot. + <b>Manage backups, device settings, screen options, storage, and tools to keep FrogPilot running smoothly.</b> + <b>Administra copias de seguridad, ajustes del dispositivo, opciones de pantalla, almacenamiento y herramientas para mantener FrogPilot funcionando sin problemas.</b> Theme and Appearance - Tema y apariencia + Tema y apariencia - FrogPilot settings for the current theme, driving-screen, and the overall user interface. - Configuraciรณn de FrogPilot para el tema actual, la pantalla de conducciรณn y la interfaz de usuario en general. + <b>Customize the look of the driving screen and interface, including themes!</b> + <b>ยกPersonaliza el aspecto de la pantalla de conducciรณn y la interfaz, incluidos los temas!</b> - Vehicle Controls - Controles del vehรญculo + Vehicle Settings + Ajustes del vehรญculo - Options unique to supported manufacturers and vehicle fingerprint management. - Opciones รบnicas para fabricantes compatibles y gestiรณn de huellas digitales de vehรญculos. + <b>Configure car-specific options and steering wheel button mappings.</b> + <b>Configura opciones especรญficas del coche y asignaciones de botones del volante.</b> Minimal - Mรญnimo + Mรญnimo Standard - Estรกndar + Estรกndar Advanced - Avanzado + Avanzado Developer - Desarrollador + Desarrollador Tuning Level - Nivel de ajuste + Nivel de ajuste - The visibility and complexity of tuning settings. Lower levels simplify the interface by hiding advanced options, while higher levels unlock detailed customization. + Choose your tuning level. Lower levels keep it simple; higher levels unlock more toggles for finer control. Minimal - Ideal for those who prefer simplicity or ease of use Standard - Recommended for most users for a balanced experience -Advanced - Unlocks fine-tuning controls for more experienced users -Developer - Unlocks highly customizable settings for seasoned enthusiasts - La visibilidad y complejidad de los ajustes de configuraciรณn. Los niveles mรกs bajos simplifican la interfaz ocultando opciones avanzadas, mientras que los niveles mรกs altos desbloquean una personalizaciรณn detallada. +Advanced - Fine-tuning for experienced users +Developer - Highly customizable settings for seasoned enthusiasts + Elige tu nivel de ajuste. Los niveles bajos lo mantienen simple; los niveles altos desbloquean mรกs opciones para un control mรกs preciso. -Mรญnimo - Ideal para aquellos que prefieren la simplicidad o facilidad de uso -Estรกndar - Recomendado para la mayorรญa de los usuarios para una experiencia equilibrada -Avanzado - Desbloquea controles de ajuste fino para usuarios mรกs experimentados -Desarrollador - Desbloquea configuraciones altamente personalizables para entusiastas experimentados +Mรญnimo: ideal para quienes prefieren la simplicidad o la facilidad de uso +Estรกndar: recomendado para la mayorรญa de los usuarios por una experiencia equilibrada +Avanzado: ajuste fino para usuarios con experiencia +Desarrollador: configuraciรณn altamente personalizable para entusiastas veteranos - WARNING: This unlocks some potentially dangerous settings that can DRASTICALLY alter your driving experience! - ADVERTENCIA: ยกEsto desbloquea algunas configuraciones potencialmente peligrosas que pueden ALTERAR DRASTICAMENTE su experiencia de conducciรณn! + WARNING: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do! + ADVERTENCIA: Estas configuraciones son arriesgadas y pueden cambiar drรกsticamente cรณmo conduce openpilot. ยกCรกmbialas solo si entiendes completamente lo que hacen! + + + All toggle descriptions are currently expanded. You can tap a toggle's name to open or close its description at any time! + Todas las descripciones de los interruptores estรกn actualmente desplegadas. Puedes tocar el nombre de un interruptor para abrir o cerrar su descripciรณn en cualquier momento. FrogPilotSoundsPanel - Alert Volume Control - Control de volumen de alerta + Alert Volume Controller + Control de volumen de alertas - Adjust the volume for each alert in openpilot. - Ajusta el volumen para cada alerta en openpilot. + <b>Set how loud each type of openpilot alert is</b> to keep routine prompts from becoming distracting. + <b>Establece el volumen de cada tipo de alerta de openpilot</b> para evitar que los avisos rutinarios se vuelvan distractores. Disengage Volume - Desactivar volumen + Volumen de desactivaciรณn - Adjust the volume for alerts like:<br><br><b>Adaptive Cruise Disabled</b><br><b>Brake Pedal Pressed</b><br><b>Parking Brake Engaged</b><br><b>Speed too Low</b> - Ajuste el volumen para alertas como:<br><br><b>Cruise Adaptativo Desactivado</b><br><b>Pedal de Freno Presionado</b><br><b>Freno de Estacionamiento Activado</b><br><b>Velocidad demasiado Baja</b> + <b>Set the volume for alerts when openpilot disengages.</b><br><br>Examples include: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". + <b>Configura el volumen de las alertas cuando openpilot se desactiva.</b><br><br>Ejemplos incluyen: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". Engage Volume - Involucrar Volumen + Volumen de acople - Adjust the volume for alerts like:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> - Ajusta el volumen para alertas como:<br><br><b>NNFF Torque Controller cargado</b><br><b>openpilot activado</b> + <b>Set the volume for the chime when openpilot engages</b>, such as after pressing the "RESUME" or "SET" steering wheel buttons. + <b>Configura el volumen del timbre cuando openpilot se activa</b>, por ejemplo, despuรฉs de presionar los botones del volante "RESUME" o "SET". Prompt Volume - Volumen del aviso + Volumen de aviso - Adjust the volume for alerts like:<br><br><b>Car Detected in Blindspot</b><br><b>Steer Unavailable Below "X"</b><br><b>Speed too Low</b><br><b>Take Control, Turn Exceeds Steering Limit</b> - Translation B + <b>Set the volume for prompts that need attention.</b><br><br>Examples include: "Car Detected in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". + <b>Establece el volumen para avisos que requieren atenciรณn.</b><br><br>Ejemplos incluyen: "Vehรญculo detectado en punto ciego", "Direcciรณn temporalmente no disponible", "Giro excede el lรญmite de direcciรณn". Prompt Distracted Volume - Volumen distraรญdo del aviso + Volumen de aviso por distracciรณn - Adjust the volume for alerts like:<br><br><b>Pay Attention, Driver Distracted</b><br><b>Touch Steering Wheel, Driver Unresponsive</b> - Ajuste el volumen para alertas como:<br><br><b>Preste Atenciรณn, Conductor Distraรญdo</b><br><b>Toque el Volante, Conductor No Responde</b> + <b>Set the volume for prompts when openpilot detects driver distraction or unresponsiveness.</b><br><br>Examples include: "Pay Attention", "Touch Steering Wheel". + <b>Establece el volumen de los avisos cuando openpilot detecte distracciรณn o falta de respuesta del conductor.</b><br><br>Ejemplos: ยซPresta atenciรณnยป, ยซToca el volanteยป. Refuse Volume - Volumen de residuos + Rechazar volumen - Adjust the volume for alerts like:<br><br><b>openpilot Unavailable</b> - Ajusta el volumen para alertas como:<br><br><b>openpilot No Disponible</b> + <b>Set the volume for alerts when openpilot refuses to engage.</b><br><br>Examples include: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". + <b>Configura el volumen de las alertas cuando openpilot se niega a activarse.</b><br><br>Ejemplos: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". Warning Soft Volume - Advertencia de volumen suave + Advertencia de volumen bajo - Adjust the volume for alerts like:<br><br><b>BRAKE!, Risk of Collision</b><br><b>TAKE CONTROL IMMEDIATELY</b> - Ajusta el volumen para alertas como:<br><br><b>ยกFRENA!, Riesgo de Colisiรณn</b><br><b>TOMA EL CONTROL INMEDIATAMENTE</b> + <b>Set the volume for softer warnings about potential risks.</b><br><br>Examples include: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". + <b>Establece el volumen para advertencias mรกs suaves sobre riesgos potenciales.</b><br><br>Los ejemplos incluyen: "ยกFRENA! Riesgo de colisiรณn", "Direcciรณn temporalmente no disponible". Warning Immediate Volume - Advertencia Volumen Inmediato + Volumen de advertencia inmediata - Adjust the volume for alerts like:<br><br><b>DISENGAGE IMMEDIATELY, Driver Distracted</b><br><b>DISENGAGE IMMEDIATELY, Driver Unresponsive</b> - Ajuste el volumen para alertas como:<br><br><b>DESENGANCHE INMEDIATAMENTE, Conductor Distraรญdo</b><br><b>DESENGANCHE INMEDIATAMENTE, Conductor No Responde</b> + <b>Set the volume for the loudest warnings that require urgent attention.</b><br><br>Examples include: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". + <b>Establece el volumen para las alertas mรกs fuertes que requieren atenciรณn urgente.</b><br><br>Ejemplos incluyen: "DESENGANCHE INMEDIATAMENTE โ€” Conductor distraรญdo", "DESENGANCHE INMEDIATAMENTE โ€” Conductor no responde". FrogPilot Alerts - Alertas de FrogPilot + Alertas de FrogPilot - FrogPilot alerts for various events in openpilot. - Alertas de FrogPilot para varios eventos en openpilot. + <b>Optional FrogPilot alerts</b> that highlight driving events in a more noticeable way. + <b>Alertas opcionales de FrogPilot</b> que resaltan eventos de conducciรณn de manera mรกs visible. - Goat Scream Steering Saturated Alert - Alerta de saturaciรณn de direcciรณn de gritos de cabra + Goat Scream + Grito de cabra - The infamous "Goat Scream" that has brought both joy and anger to FrogPilot users all around the world! - El infame "Grito de Cabra" que ha traรญdo tanto alegrรญa como enojo a los usuarios de FrogPilot en todo el mundo. + <b>Play the infamous "Goat Scream" when the steering controller reaches its limit.</b> Based on the "Turn Exceeds Steering Limit" event. + <b>Reproduce el infame "Goat Scream" cuando el controlador de direcciรณn alcanza su lรญmite.</b> Basado en el evento "Turn Exceeds Steering Limit". Green Light Alert - Alerta de luz verde + Alerta de luz verde - Get an alert when the traffic light changes from red to green. - Recibe una alerta cuando el semรกforo cambie de rojo a verde. + <b>Play an alert when the model predicts a red light has turned green.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights. This alert is based on end-to-end model predictions from camera input and may trigger even when the light has not changed.</i> + <b>Reproducir una alerta cuando el modelo prediga que un semรกforo en rojo se ha puesto en verde.</b><br><br><i><b>Descargo de responsabilidad</b>: openpilot no detecta explรญcitamente los semรกforos. Esta alerta se basa en predicciones de un modelo de extremo a extremo a partir de la entrada de la cรกmara y puede activarse incluso cuando el semรกforo no ha cambiado.</i> Lead Departing Alert - Alerta de salida de lรญder + Alerta de salida del lรญder - Get an alert when the lead vehicle begins to depart from a standstill. - Recibe una alerta cuando el vehรญculo lรญder comience a partir desde un estado de inmovilidad. + <b>Play an alert when the lead vehicle departs from a stop.</b> + <b>Reproducir una alerta cuando el vehรญculo delantero arranque desde una parada.</b> Loud "Car Detected in Blindspot" Alert - Translation A + Alerta fuerte: โ€œVehรญculo detectado en el punto ciegoโ€ - A louder alert for when a vehicle is detected in the blindspot when attempting to change lanes. - Una alerta mรกs fuerte cuando se detecta un vehรญculo en el punto ciego al intentar cambiar de carril. + <b>Play a louder alert if a vehicle is in the blind spot when attempting to change lanes.</b> Based on the "Car Detected in Blindspot" event. + <b>Reproduce una alerta mรกs fuerte si hay un vehรญculo en el punto ciego al intentar cambiar de carril.</b> Basado en el evento "Car Detected in Blindspot". Speed Limit Changed Alert - Alerta de cambio de lรญmite de velocidad + Alerta de cambio de lรญmite de velocidad - Get an alert when the speed limit changes. - Recibe una alerta cuando cambie el lรญmite de velocidad. + <b>Play an alert when the posted speed limit changes.</b> + <b>Reproducir una alerta cuando cambie el lรญmite de velocidad seรฑalado.</b> Muted - Silenciado + Silenciado Auto - Auto + Auto Test - Prueba + Prueba FrogPilotThemesPanel - Custom Theme - Tema personalizado + Custom Themes + Temas personalizados - The overall appearance of openpilot. - La apariencia general de openpilot. + <b>The overall look and feel of openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>El aspecto y la experiencia general de openpilot.</b> Usa el "Theme Maker" en "The Pond" para crear y compartir tus propios temas. Color Scheme - Esquema de colores + Esquema de color - openpilot's color scheme. - -Want to submit your own color scheme? Share it in the "custom-themes" channel on the FrogPilot Discord! - Esquema de colores de openpilot. - -ยฟQuieres enviar tu propio esquema de colores? ยกCompรกrtelo en el canal "custom-themes" en el Discord de FrogPilot! + <b>The color scheme used throughout openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>El esquema de color utilizado en todo openpilot.</b> ยกUsa el "Theme Maker" en "The Pond" para crear y compartir tus propios temas! + + + Distance Button + Botรณn de distancia + + + <b>The distance button icons shown on the driving screen.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Los รญconos del botรณn de distancia que se muestran en la pantalla de conducciรณn.</b> ยกUsa el "Theme Maker" en "The Pond" para crear y compartir tus propios temas! Icon Pack - Paquete de iconos + Paquete de iconos - openpilot's icon pack. - -Want to submit your own icons? Share them in the "custom-themes" channel on the FrogPilot Discord! - Paquete de iconos de openpilot. - -ยฟQuieres enviar tus propios iconos? Compรกrtelos en el canal "custom-themes" en el Discord de FrogPilot. + <b>The icon style used across openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>El estilo de iconos utilizado en todo openpilot.</b> ยกUsa el "Theme Maker" en "The Pond" para crear y compartir tus propios temas! Sound Pack - Paquete de sonidos + Paquete de sonidos - openpilot's sound effects. - -Want to submit your own sounds? Share them in the "custom-themes" channel on the FrogPilot Discord! - Efectos de sonido de openpilot. - -ยฟQuieres enviar tus propios sonidos? Compรกrtelos en el canal "custom-themes" en el Discord de FrogPilot. + <b>The sound pack used by openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>El paquete de sonidos utilizado por openpilot.</b> ยกUsa el "Theme Maker" en "The Pond" para crear y compartir tus propios temas! Steering Wheel - Volante + Volante - The steering wheel icon in the top right of the driving screen. - El icono del volante en la parte superior derecha de la pantalla de conducciรณn. - - - Themed turn signal animations. - -Want to submit your own animations? Share them in the "custom-themes" channel on the FrogPilot Discord! - Animaciones temรกticas de seรฑales de giro. - -ยฟQuieres enviar tus propias animaciones? ยกCompรกrtelas en el canal "custom-themes" en el Discord de FrogPilot! - - - Download Status - Estado de descarga - - - Holiday Themes - Temas de vacaciones - - - Holiday-based visual themes for openpilot. Minor holidays last one day; major holidays (Christmas, Easter, Halloween, etc.) continue all week. - Temas visuales basados en dรญas festivos para openpilot. Los dรญas festivos menores duran un dรญa; los dรญas festivos mayores (Navidad, Pascua, Halloween, etc.) continรบan toda la semana. - - - Rainbow Path - Camino Arcoรญris - - - The path on the driving screen turns into a Mario Kart inspired "Rainbow Path". - El camino en la pantalla de conducciรณn se convierte en un "Camino Arcoรญris" inspirado en Mario Kart. - - - Random Events - Eventos aleatorios - - - Random cosmetic events that trigger after certain driving conditions. These events are purely for fun and don't affect driving controls! - Eventos cosmรฉticos aleatorios que se activan despuรฉs de ciertas condiciones de conducciรณn. ยกEstos eventos son puramente por diversiรณn y no afectan los controles de conducciรณn! - - - Random Themes - Temas aleatorios - - - Cycles through your downloaded themes randomly on each boot, giving every theme in your collection a chance to shine! - Cicla a travรฉs de tus temas descargados aleatoriamente en cada inicio, ยกdando a cada tema de tu colecciรณn la oportunidad de brillar! - - - Startup Alert - Alerta de inicio - - - The text of the "Startup Alert" message that appears at the beginning of a drive. - El texto del mensaje "Alerta de inicio" que aparece al comienzo de un viaje. - - - DELETE - ELIMINAR - - - DOWNLOAD - DESCARGAR - - - SELECT - SELECT - - - Select a color scheme to delete - Seleccione un esquema de color para eliminar - - - Are you sure you want to delete the "%1" color scheme? - ยฟEstรก seguro de que desea eliminar el esquema de color "%1"? - - - Delete - Eliminar - - - Select a color scheme to download - Seleccione un esquema de color para descargar - - - Select a color scheme - Seleccione un esquema de colores - - - Select a distance icon pack to delete - Seleccione un paquete de iconos de distancia para eliminar - - - Are you sure you want to delete the "%1" distance icon pack? - ยฟEstรก seguro de que desea eliminar el paquete de iconos de distancia "%1"? - - - Select a distance icon pack to download - Seleccione un paquete de iconos de distancia para descargar - - - Select a distance icon pack - Selecciona un paquete de iconos de distancia - - - Select an icon pack to delete - Seleccione un paquete de iconos para eliminar - - - Are you sure you want to delete the "%1" icon pack? - ยฟEstรก seguro de que desea eliminar el paquete de iconos "%1"? - - - Select an icon pack to download - Selecciona un paquete de iconos para descargar - - - Select an icon pack - Selecciona un paquete de iconos - - - Select a signal animation to delete - Seleccione una animaciรณn de seรฑal para eliminar - - - Are you sure you want to delete the "%1" signal animation? - ยฟEstรก seguro de que desea eliminar la animaciรณn de seรฑal "%1"? - - - Select a signal animation to download - Seleccione una animaciรณn de seรฑal para descargar - - - Select a signal animation - Seleccionar una animaciรณn de seรฑal - - - Select a sound pack to delete - Seleccione un paquete de sonidos para eliminar - - - Are you sure you want to delete the "%1" sound pack? - ยฟEstรก seguro de que desea eliminar el paquete de sonidos "%1"? - - - Select a sound pack to download - Selecciona un paquete de sonidos para descargar - - - Select a sound pack - Selecciona un paquete de sonidos - - - Select a steering wheel to delete - Seleccione un volante para eliminar - - - Are you sure you want to delete the "%1" steering wheel? - ยฟEstรก seguro de que desea eliminar el volante "%1"? - - - Select a steering wheel to download - Seleccione un volante para descargar - - - Select a steering wheel - Seleccione un volante - - - STOCK - STOCK - - - FROGPILOT - FROGPILOT - - - CUSTOM - PERSONALIZADO - - - CLEAR - LIMPIAR - - - Enter the text for the top half - Ingrese el texto para la mitad superior - - - Characters: 0/%1 - Caracteres: 0/%1 - - - Enter the text for the bottom half - Ingrese el texto para la mitad inferior - - - "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! - "Temas aleatorios" solo funciona con temas descargados, ยกasรญ que asegรบrate de descargar los temas que quieres que use! - - - CANCEL - CANCELAR - - - Are you sure you want to completely reset your startup message? - ยฟEstรก seguro de que desea restablecer completamente su mensaje de inicio? + <b>The steering-wheel icon</b> shown at the top-right of the driving screen. Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>El รญcono del volante</b> que aparece en la parte superior derecha de la pantalla de conducciรณn. ยกUsa el "Theme Maker" en "The Pond" para crear y compartir tus propios temas! Turn Signal - Seรฑal de giro + Intermitente + + + <b>Themed turn-signal animations.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Animaciones de intermitentes con tema.</b> Usa el "Theme Maker" en "The Pond" para crear y compartir tus propios temas. + + + Download Status + Estado de descarga + + + Holiday Themes + Temas festivos + + + <b>Themes based on U.S. holidays.</b> Minor holidays last one day; major holidays (Christmas, Easter, Halloween) run for a full week. + <b>Temas basados en festivos de EE. UU.</b> Los festivos menores duran un dรญa; los festivos mayores (Navidad, Pascua, Halloween) se extienden durante una semana completa. + + + Rainbow Path + Ruta Arcoรญris + + + <b>Color the driving path like a Mario Kartโ€“style "Rainbow Road".</b> + <b>Colorea la trayectoria de conducciรณn como una "Carretera Arcoรญris" al estilo Mario Kart.</b> + + + Random Events + Eventos aleatorios + + + <b>Occasional on-screen effects triggered by driving conditions.</b> These are purely a visual and don't impact how openpilot drives! + <b>Efectos ocasionales en pantalla provocados por las condiciones de conducciรณn.</b> Son puramente visuales y no afectan cรณmo conduce openpilot. + + + Random Themes + Temas aleatorios + + + <b>Pick a random theme between each drive</b> from the themes you have downloaded. Great for variety without changing settings while driving. + <b>Elige un tema aleatorio entre cada conducciรณn</b> de entre los temas que has descargado. Ideal para variedad sin cambiar ajustes mientras conduces. + + + Startup Alert + Alerta de inicio + + + <b>Customize the "Startup Alert" message</b> shown at the start of each drive. + <b>Personaliza el mensaje de "Alerta de inicio"</b> que se muestra al inicio de cada trayecto. + + + DELETE + ELIMINAR + + + DOWNLOAD + DESCARGAR + + + SELECT + SELECCIONAR + + + Select a color scheme to delete + Seleccione un esquema de color para eliminar + + + Delete the "%1" color scheme? + ยฟEliminar el esquema de color "%1"? + + + Delete + Eliminar + + + Select a color scheme to download + Seleccione un esquema de color para descargar + + + Select a color scheme + Seleccione un esquema de color + + + Select a distance icon pack to delete + Seleccione un paquete de iconos de distancia para eliminar + + + Delete the "%1" distance icon pack? + ยฟEliminar el paquete de iconos de distancia "%1"? + + + Select a distance icon pack to download + Selecciona un paquete de iconos de distancia para descargar + + + Select a distance icon pack + Selecciona un paquete de iconos de distancia + + + Select an icon pack to delete + Seleccione un paquete de iconos para eliminar + + + Delete the "%1" icon pack? + ยฟEliminar el paquete de iconos "%1"? + + + Select an icon pack to download + Seleccione un paquete de iconos para descargar + + + Select an icon pack + Selecciona un paquete de iconos + + + Select a signal animation to delete + Selecciona una animaciรณn de seรฑal para eliminar + + + Delete the "%1" signal animation? + ยฟEliminar la animaciรณn de la seรฑal "%1"? + + + Select a signal animation to download + Selecciona una animaciรณn de seรฑal para descargar + + + Select a signal animation + Selecciona una animaciรณn de seรฑal + + + Select a sound pack to delete + Selecciona un paquete de sonidos para eliminar + + + Delete the "%1" sound pack? + ยฟEliminar el paquete de sonido "%1"? + + + Select a sound pack to download + Selecciona un paquete de sonidos para descargar + + + Select a sound pack + Selecciona un paquete de sonidos + + + Select a steering wheel to delete + Selecciona un volante para eliminar + + + Delete the "%1" steering wheel? + ยฟEliminar el volante "%1"? + + + Select a steering wheel to download + Selecciona un volante para descargar + + + Select a steering wheel + Selecciona un volante + + + STOCK + STOCK + + + FROGPILOT + FROGPILOT + + + CUSTOM + PERSONALIZADO + + + CLEAR + LIMPIAR + + + Enter the text for the top half + Introduzca el texto para la mitad superior + + + Characters: 0/%1 + Caracteres: 0/%1 + + + Enter the text for the bottom half + Ingrese el texto para la mitad inferior + + + Are you sure you want to completely reset your startup message? + ยฟEstรก seguro de que desea restablecer completamente su mensaje de inicio? + + + "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! + "Temas aleatorios" solo funciona con temas descargados, asรญ que asegรบrate de descargar los temas que quieres que use. + + + CANCEL + CANCELAR FrogPilotUtilitiesPanel Debug Mode - Modo de depuraciรณn + Modo de depuraciรณn - Debug FrogPilot during the next drive by utilizing all of FrogPilot's developer metrics for either bug reporting, or self-debugging. - Depurar FrogPilot durante el prรณximo viaje utilizando todas las mรฉtricas de desarrollador de FrogPilot para informar errores o realizar autodepuraciรณn. + <b>Use FrogPilot's developer metrics on your next drive</b> to diagnose issues and improve bug reports. + <b>Usa las mรฉtricas de desarrollador de FrogPilot en tu prรณximo viaje</b> para diagnosticar problemas y mejorar los informes de errores. Flash Panda - Panda Relรกmpago + Flashear Panda FLASH - FLASH + FLASH - Flash the Panda's firmware. Use if you're running into issues with the Panda. - Actualiza el firmware del Panda. รšsalo si tienes problemas con el Panda. + <b>Reinstall the Panda firmware</b> to fix connection or reliability issues. + <b>Reinstala el firmware de Panda</b> para solucionar problemas de conexiรณn o fiabilidad. - Are you sure you want to flash the Panda? - ยฟEstรก seguro de que desea flashear el Panda? + Are you sure you want to flash the Panda firmware? + ยฟSeguro que quieres flashear el firmware de Panda? Flash - Destello + Flash Flashing... - Parpadeando... + Flasheando... Flashed! - ยกDestellado! + ยกFlasheado! Rebooting... - Reiniciando... + Reiniciando... - Force Started State - Estado de inicio forzado + Force Drive State + Forzar estado de conducciรณn - Force openpilot either offroad or onroad. - Forzar openpilot ya sea fuera de carretera o en carretera. + <b>Manually set openpilot to be offroad or onroad.</b> + <b>Establece manualmente que openpilot estรฉ fuera de carretera o en carretera.</b> OFFROAD - TODO TERRENO + FUERA DE CARRETERA ONROAD - ONROAD + EN CARRETERA OFF - APAGADO + APAGADO Report a Bug or an Issue - Informar de un error o un problema + Informar un error o un problema REPORT - INFORME + INFORME - Let FrogsGoMoo know about an issue you're facing! - ยกHazle saber a FrogsGoMoo sobre un problema que estรกs enfrentando! + <b>Send a bug report</b> so we can help fix the problem! + <b>Envรญa un informe de error</b> para que podamos ayudar a solucionar el problema. + + + Please connect to the internet before sending a report! + ยกConรฉctate a Internet antes de enviar un informe! I saw an alert that said "openpilot crashed" - Vi una alerta que decรญa "openpilot crashed" + Vi una alerta que decรญa "openpilot se bloqueรณ" - What's going on? - ยฟQuรฉ estรก pasando? + Acceleration feels harsh or jerky + La aceleraciรณn se siente brusca o sacudida - Please describe what's happening - Por favor describe lo que estรก sucediendo. - - - Send Report - Enviar informe - - - What's your Discord username? - ยฟCuรกl es tu nombre de usuario de Discord? - - - Your report has been submitted. Thanks for letting us know! - Su informe ha sido enviado. ยกGracias por informarnos! - - - Reset Toggles to Default - Restablecer alternancias a los valores predeterminados - - - RESET - REINICIAR - - - Reset all toggles to their default values. - Restablecer todos los interruptores a sus valores predeterminados. - - - Are you sure you want to reset all toggles to their default values? - ยฟEstรก seguro de que desea restablecer todos los interruptores a sus valores predeterminados? - - - Reset - Restablecer - - - Resetting... - Restableciendo... - - - Reset! - ยกRestablecer! - - - Reset Toggles to Match Stock openpilot - Restablecer los interruptores para que coincidan con el openpilot de serie - - - Reset all toggles to match stock openpilot. - Restablecer todos los interruptores para que coincidan con el openpilot de fรกbrica. - - - Are you sure you want to reset all toggles to match stock openpilot? - ยฟEstรก seguro de que desea restablecer todos los interruptores para que coincidan con el openpilot de fรกbrica? - - - Ensure your device has an internet connection before sending a report! - ยกAsegรบrate de que tu dispositivo tenga conexiรณn a internet antes de enviar un informe! - - - Acceleration feels too harsh or jerky - La aceleraciรณn se siente demasiado brusca o sacudida. - - - An alert confused me and I didnโ€™t know what it meant - Una alerta me confundiรณ y no sabรญa quรฉ significaba. + An alert was unclear and I didn't know what it meant + Una alerta no estaba clara y no sabรญa quรฉ significaba Braking is too sudden or uncomfortable - El frenado es demasiado brusco o incรณmodo. + El frenado es demasiado brusco o incรณmodo - Iโ€™m not sure if this is normal or a bug: - No estoy seguro si esto es normal o un error: + I'm not sure if this is normal or a bug: + No estoy seguro si esto es normal o un error: - Lane changes donโ€™t work properly or feel unsafe - Los cambios de carril no funcionan correctamente o se sienten inseguros. + My screen froze or is stuck loading something + Mi pantalla se congelรณ o estรก atascada cargando algo - My screen froze or got stuck on loading - Mi pantalla se congelรณ o se quedรณ atascada en la carga. - - - My steering wheel buttons arenโ€™t working - Los botones del volante no funcionan. + My steering wheel buttons aren't working + Los botones del volante no funcionan openpilot disengages when I don't expect it - openpilot se desactiva cuando no lo espero - - - openpilot doesnโ€™t resume after I stop - openpilot no se reanuda despuรฉs de que me detengo + openpilot se desactiva cuando no lo espero openpilot doesn't react to stopped vehicles ahead - openpilot no reacciona a los vehรญculos detenidos adelante + openpilot no reacciona a vehรญculos detenidos adelante + + + openpilot doesn't resume from a stop + openpilot no reanuda desde una parada openpilot feels sluggish or slow to respond - openpilot se siente lento o tarda en responder + openpilot se siente lento o responde con retraso Steering feels twitchy or unnatural - La direcciรณn se siente nerviosa o antinatural. + La direcciรณn se siente nerviosa o antinatural - The car doesnโ€™t follow curves well - El coche no sigue bien las curvas. + The car doesn't follow curves well + El coche no sigue bien las curvas - The car isnโ€™t staying centered in its lane - El coche no se mantiene centrado en su carril. - - - The speed or display info looks wrong - La velocidad o la informaciรณn de la pantalla parece incorrecta. + The car isn't staying centered in its lane + El coche no se mantiene centrado en su carril Something else (please describe) - Algo mรกs (por favor describa) + Otra cosa (por favor describa) + + + What's going on? + ยฟQuรฉ estรก pasando? + + + Please describe what's happening + Describe lo que estรก sucediendo + + + Send Report + Enviar informe + + + What's your Discord username? + ยฟCuรกl es tu nombre de usuario en Discord? + + + Report Sent! Thanks for letting us know! + ยกInforme enviado! ยกGracias por avisarnos! + + + Reset Toggles to Default + Restablecer alternadores a los valores predeterminados + + + RESET + REINICIAR + + + <b>Reset all toggles to their default values.</b> + <b>Restablecer todos los interruptores a sus valores predeterminados.</b> + + + Are you sure you want to reset all toggles to their default values? + ยฟEstรก seguro de que desea restablecer todos los interruptores a sus valores predeterminados? + + + Reset + Restablecer + + + Resetting... + Reiniciando... + + + Reset! + ยกReiniciar! + + + Reset Toggles to Stock openpilot + Restablecer conmutadores a openpilot de fรกbrica + + + <b>Reset all toggles to match stock openpilot.</b> + <b>Restablecer todos los interruptores para coincidir con el openpilot original.</b> + + + Are you sure you want to reset all toggles to match stock openpilot? + ยฟSeguro que quieres restablecer todos los interruptores para coincidir con el openpilot de fรกbrica? FrogPilotVehiclesPanel - Select Make - Seleccionar marca + Car Make + Marca del coche SELECT - SELECT + SELECCIONAR - Select a Make - Seleccione una marca + Choose your car make + Elige la marca de tu coche - Select Model - Seleccionar modelo + Car Model + Modelo de coche - Select a Model - Seleccionar un modelo + Choose your car model + Elige tu modelo de coche Disable Automatic Fingerprint Detection - Desactivar la detecciรณn automรกtica de huellas dactilares + Desactivar la detecciรณn automรกtica de huellas digitales - Forces the selected fingerprint and prevents it from ever changing. - Fuerza la huella digital seleccionada y evita que cambie nunca. + <b>Force the selected fingerprint</b> and prevent it from ever changing. + <b>Forzar la huella seleccionada</b> y evitar que cambie jamรกs. Disable openpilot Longitudinal Control - Desactivar el control longitudinal de openpilot + Desactivar el Control Longitudinal de openpilot - Disables openpilot longitudinal control and uses the car's stock ACC instead. - Desactiva el control longitudinal de openpilot y utiliza el ACC de serie del coche en su lugar. + <b>Disable openpilot longitudinal</b> and use the car's stock ACC instead. + <b>Desactive el control longitudinal de openpilot</b> y use el ACC original del vehรญculo en su lugar. Are you sure you want to completely disable openpilot longitudinal control? - ยฟEstรก seguro de que desea desactivar completamente el control longitudinal de openpilot? + ยฟSeguro que quieres desactivar por completo el control longitudinal de openpilot? General Motors Settings - Configuraciรณn de General Motors + Configuraciรณn de General Motors - Settings specific to <b>General Motors</b> vehicles. - Configuraciones especรญficas para vehรญculos de <b>General Motors</b>. + <b>FrogPilot features for General Motors vehicles.</b> + <b>Funciones de FrogPilot para vehรญculos de General Motors.</b> FrogsGoMoo's Experimental Tune - La melodรญa experimental de FrogsGoMoo + Ajuste experimental de FrogsGoMoo - <b>FrogsGoMoo's</b> experimental <b>General Motors</b> tune that aims to smoothen out stopping and takeoff control based on nothing but guesswork. Use at your own risk! - <b>FrogsGoMoo's</b> experimento de <b>General Motors</b> que busca suavizar el control de frenado y despegue basado รบnicamente en conjeturas. ยกรšsalo bajo tu propio riesgo! + <b>Experimental GM tune by FrogsGoMoo</b> that attempts to smoothen stopping and takeoff control. Use at your own risk! + <b>Ajuste experimental de GM por FrogsGoMoo</b> que intenta suavizar el control al detenerse y al arrancar. ยกรšsalo bajo tu propio riesgo! Smooth Pedal Response on Hills - Respuesta suave del pedal en colinas + Respuesta del pedal suave en pendientes - Smoothen the acceleration and braking when driving uphill or downhill. - Suaviza la aceleraciรณn y el frenado al conducir cuesta arriba o cuesta abajo. + <b>Smoothen acceleration and braking</b> when driving downhill/uphill. + <b>Suaviza la aceleraciรณn y el frenado</b> al conducir cuesta abajo/cuesta arriba. - Stop and Go Hack - Hack de Parar y Seguir + Stop-and-Go Hack + Truco de Stop-and-Go - Force stop and go on the <b>2017 Chevy Volt</b>. - Forzar la detenciรณn y continuar en el <b>Chevy Volt 2017</b>. + <b>Force stop-and-go</b> on the 2017 Chevy Volt. + <b>Forzar stop-and-go</b> en el Chevy Volt 2017. Hyundai/Kia/Genesis Settings - Configuraciones de Hyundai/Kia/Genesis + Configuraciรณn de Hyundai/Kia/Genesis - Settings specific to <b>Hyundai</b>, <b>Kia</b>, and <b>Genesis</b> vehicles. - Configuraciones especรญficas para vehรญculos <b>Hyundai</b>, <b>Kia</b> y <b>Genesis</b>. + <b>FrogPilot features for Genesis, Hyundai, and Kia vehicles.</b> + <b>Funciones de FrogPilot para vehรญculos Genesis, Hyundai y Kia.</b> comma's New Longitudinal API - Nueva API Longitudinal de comma + La nueva API longitudinal de comma - comma's new longitudinal control system that has shown great improvement with acceleration and braking, but has issues on some <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> vehicles. - El nuevo sistema de control longitudinal de comma ha mostrado una gran mejora con la aceleraciรณn y el frenado, pero tiene problemas en algunos vehรญculos <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b>. + <b>comma's new gas and brake control system</b> that improves acceleration and braking but may cause issues on some Genesis/Hyundai/Kia vehicles. + <b>el nuevo sistema de control de acelerador y freno de comma</b> que mejora la aceleraciรณn y el frenado, pero puede causar problemas en algunos vehรญculos Genesis/Hyundai/Kia. "Taco Bell Run" Torque Hack - Hack de Torque de Taco Bell Run + Hack de par motor "Taco Bell Run" - The torque hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to improve turning at low speeds by increasing the allowed steering torque. - El hack de torque del "Taco Bell Run" de comma en 2022. Diseรฑado para mejorar el giro a bajas velocidades aumentando el torque de direcciรณn permitido. + <b>The steering torque hack from comma's 2022 "Taco Bell Run".</b> Designed to increase steering torque at low speeds for left and right turns. + <b>El hack de par de direcciรณn del โ€œTaco Bell Runโ€ de comma en 2022.</b> Diseรฑado para aumentar el par de direcciรณn a bajas velocidades en giros a la izquierda y a la derecha. Toyota/Lexus Settings - Configuraciรณn de Toyota/Lexus + Configuraciรณn de Toyota/Lexus - Settings specific to <b>Toyota</b> and <b>Lexus</b> vehicles. - Configuraciones especรญficas para vehรญculos <b>Toyota</b> y <b>Lexus</b>. + <b>FrogPilot features for Lexus and Toyota vehicles.</b> + <b>Funciones de FrogPilot para vehรญculos Lexus y Toyota.</b> Automatically Lock/Unlock Doors - Bloquear/Desbloquear Puertas Automรกticamente + Bloquear/Desbloquear puertas automรกticamente - Automatically lock the doors when shifting into drive and unlock them when shifting into park. - Bloquear automรกticamente las puertas al cambiar a conducir y desbloquearlas al cambiar a estacionar. + <b>Automatically lock/unlock doors</b> when shifting in and out of drive. + <b>Bloquear/desbloquear puertas automรกticamente</b> al cambiar dentro y fuera de marcha. - Cluster Speed Offset - Desplazamiento de Velocidad del Clรบster + Dashboard Speed Offset + Compensaciรณn de velocidad del panel - The cluster speed offset used by openpilot to match the speed displayed on the dash. - El desplazamiento de velocidad del clรบster utilizado por openpilot para igualar la velocidad mostrada en el tablero. + <b>The speed offset openpilot uses to match the speed on the dashboard display.</b> + <b>El desfase de velocidad que usa openpilot para coincidir con la velocidad en la pantalla del tablero.</b> FrogsGoMoo's Personal Tweaks - Ajustes Personales de FrogsGoMoo + Ajustes personales de FrogsGoMoo - <b>FrogsGoMoo's</b> personal tweaks for quicker acceleration and smoother braking. - <b>Los ajustes personales de FrogsGoMoo</b> para una aceleraciรณn mรกs rรกpida y un frenado mรกs suave. + <b>Personal tweaks by FrogsGoMoo for quicker acceleration and smoother braking.</b> + <b>Ajustes personales de FrogsGoMoo para una aceleraciรณn mรกs rรกpida y un frenado mรกs suave.</b> Lock Doors On Ignition Off After - Bloquear puertas al apagar el encendido despuรฉs + Bloquear las puertas al apagar el encendido despuรฉs de - Automatically lock the doors after the car's ignition has been turned off and no one is detected in either of the front seats. - Bloquee automรกticamente las puertas despuรฉs de que se haya apagado el encendido del coche y no se detecte a nadie en ninguno de los asientos delanteros. + <b>Automatically lock the doors on ignition off</b> when no one is detected in the front seats. + <b>Bloquear automรกticamente las puertas al apagar el encendido</b> cuando no se detecte a nadie en los asientos delanteros. - Force stop and go on <b>Toyota</b>/<b>Lexus</b> vehicles without stock stop and go functionality. - Forzar parada y arranque en vehรญculos <b>Toyota</b>/<b>Lexus</b> sin funcionalidad de parada y arranque de serie. + <b>Force stop-and-go</b> on Lexus/Toyota vehicles without stock stop-and-go functionality. + <b>Forzar stop-and-go</b> en vehรญculos Lexus/Toyota sin funcionalidad stop-and-go de fรกbrica. MANAGE - ADMINISTRAR + ADMINISTRAR Lock - Bloquear + Bloquear Unlock - Desbloquear + Desbloquear Never - Nunca + Nunca seconds - segundos + segundos + + + None + Ninguno + + + Vehicle Info + Informaciรณn del vehรญculo + + + <b>Information about your vehicle in regards to openpilot support and functionality.</b> + <b>Informaciรณn sobre su vehรญculo en relaciรณn con la compatibilidad y funcionalidad de openpilot.</b> + + + <b>Detected 3rd party hardware.</b> + <b>Se detectรณ hardware de terceros.</b> + + + openpilot Longitudinal Support + Compatibilidad longitudinal de openpilot + + + <b>Can openpilot control the vehicle's acceleration and braking?</b> + <b>ยฟPuede openpilot controlar la aceleraciรณn y el frenado del vehรญculo?</b> + + + <b>Does your vehicle support the "comma pedal"?</b> + <b>ยฟTu vehรญculo es compatible con el "comma pedal"?</b> + + + Radar Support + Compatibilidad con radar + + + <b>Does openpilot use the vehicle's radar data</b> alongside the device's camera for tracking lead vehicles? + <b>ยฟopenpilot utiliza los datos del radar del vehรญculo</b> junto con la cรกmara del dispositivo para seguir a los vehรญculos precedentes?</b> + + + SDSU Support + Asistencia de SDSU + + + <b>Does your vehicle support "SDSUs"?</b> + <b>ยฟSu vehรญculo es compatible con "SDSUs"?</b> + + + Stop-and-Go Support + Compatibilidad con Stop-and-Go + + + <b>Does your vehicle support stop-and-go driving?</b> + <b>ยฟTu vehรญculo admite conducciรณn con paradas y arranques?</b> + + + VIEW + VER + + + Yes + Sรญ + + + No + No + + + 3rd Party Hardware Detected + Hardware de terceros detectado + + + Blind Spot Support + Asistencia de punto ciego + + + <b>Does openpilot use the vehicle's blind spot data?</b> + <b>ยฟopenpilot utiliza los datos de los puntos ciegos del vehรญculo?</b> + + + comma Pedal Support + Compatibilidad con comma Pedal FrogPilotVisualsPanel Advanced UI Controls - Controles de UI avanzados + Controles de IU avanzados - Advanced settings for fine-tuning openpilot's driving screen. - Configuraciรณn avanzada para ajustar la pantalla de conducciรณn de openpilot. + <b>Advanced visual changes</b> to fine-tune how the driving screen looks. + <b>Cambios visuales avanzados</b> para ajustar con precisiรณn la apariencia de la pantalla de conducciรณn. Hide Current Speed - Ocultar velocidad actual + Ocultar velocidad actual - Hide the current speed from the driving screen. - Ocultar la velocidad actual de la pantalla de conducciรณn. + <b>Hide the current speed</b> from the driving screen. + <b>Ocultar la velocidad actual</b> de la pantalla de conducciรณn. Hide Lead Marker - Ocultar marcador de plomo + Ocultar marcador del lรญder - Hide the marker for lead vehicles from the driving screen. - Ocultar el marcador para los vehรญculos lรญderes de la pantalla de conducciรณn. + <b>Hide the lead-vehicle marker</b> from the driving screen. + <b>Ocultar el marcador del vehรญculo lรญder</b> de la pantalla de conducciรณn. Hide Map Settings Button - Ocultar botรณn de configuraciรณn del mapa + Ocultar botรณn de ajustes del mapa - Hide the map settings button from the driving screen. - Ocultar el botรณn de configuraciรณn del mapa de la pantalla de conducciรณn. + <b>Hide the map settings button or map</b> from the driving screen. + <b>Oculta el botรณn de ajustes del mapa o el mapa</b> de la pantalla de conducciรณn. Hide Max Speed - Ocultar velocidad mรกxima + Ocultar velocidad mรกxima - Hide the max speed from the driving screen. - Ocultar la velocidad mรกxima de la pantalla de conducciรณn. + <b>Hide the max speed</b> from the driving screen. + <b>Ocultar la velocidad mรกxima</b> de la pantalla de conducciรณn. Hide Non-Critical Alerts - Ocultar alertas no crรญticas + Ocultar alertas no crรญticas - Hide non-critical alerts from the driving screen. - Ocultar alertas no crรญticas de la pantalla de conducciรณn. + <b>Hide non-critical alerts</b> from the driving screen. + <b>Ocultar alertas no crรญticas</b> de la pantalla de conducciรณn. Hide Speed Limits - Ocultar lรญmites de velocidad + Ocultar lรญmites de velocidad - Hide the speed limits from the driving screen. - Ocultar los lรญmites de velocidad de la pantalla de conducciรณn. + <b>Hide posted speed limits</b> from the driving screen. + <b>Ocultar los lรญmites de velocidad seรฑalizados</b> de la pantalla de conducciรณn. Use Wheel Speed - Usar velocidad de la rueda + Usar velocidad de las ruedas - Use the vehicle's wheel speed instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives. - Usa la velocidad de las ruedas del vehรญculo en lugar de la velocidad del clรบster. Este es un cambio puramente visual y no afecta cรณmo conduce openpilot. + <b>Use the vehicle's wheel speed</b> instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives! + <b>Usar la velocidad de las ruedas del vehรญculo</b> en lugar de la velocidad del cuadro de instrumentos. Esto es solo un cambio visual y no afecta cรณmo conduce openpilot. Developer UI - Interfaz de usuario del desarrollador + Interfaz de desarrollador - Detailed information about openpilot's internal operations. - Informaciรณn detallada sobre las operaciones internas de openpilot. + <b>Detailed information about openpilot's internal operations.</b> + <b>Informaciรณn detallada sobre las operaciones internas de openpilot.</b> Adjacent Path Metrics - Mรฉtricas de Caminos Adyacentes + Mรฉtricas del trayecto adyacente - Metrics displayed on top of the adjacent lanes measuring their current width. - Mรฉtricas mostradas en la parte superior de los carriles adyacentes que miden su ancho actual. + <b>Show the width of the adjacent lanes.</b> + <b>Mostrar el ancho de los carriles adyacentes.</b> Developer Metrics - Mรฉtricas del desarrollador + Mรฉtricas de desarrollador - Performance data, sensor readings, and system metrics for debugging and optimizing openpilot. - Datos de rendimiento, lecturas de sensores y mรฉtricas del sistema para depurar y optimizar openpilot. + <b>Performance data, sensor readings, and system metrics</b> for debugging and optimizing openpilot. + <b>Datos de rendimiento, lecturas de sensores y mรฉtricas del sistema</b> para depurar y optimizar openpilot. Border Metrics - Mรฉtricas Fronterizas + Mรฉtricas de borde - Metrics displayed around the border of the driving screen.<br><br><b>Blind Spot</b>: Turn the border red when a vehicle is detected in a blind spot<br><b>Steering Torque</b>: Highlight the border green to red in accordance to the amount of steering torque being used<br><b>Turn Signal</b>: Flash the border yellow when a turn signal is active - Mรฉtricas mostradas alrededor del borde de la pantalla de conducciรณn.<br><br><b>Punto Ciego</b>: Cambiar el borde a rojo cuando se detecta un vehรญculo en un punto ciego<br><b>Par de Direcciรณn</b>: Resaltar el borde de verde a rojo de acuerdo con la cantidad de par de direcciรณn que se estรก utilizando<br><b>Seรฑal de Giro</b>: Hacer parpadear el borde en amarillo cuando una seรฑal de giro estรก activa + <b>Show statuses along the border of the driving screen.</b><br><br><b>Blind Spot</b>: The border turns red when a vehicle is in a blind spot<br><b>Steering Torque</b>: The border goes from green to red according to how much steering torque is being used<br><b>Turn Signal</b>: The border flashes yellow when a turn signal is on + <b>Mostrar estados a lo largo del borde de la pantalla de conducciรณn.</b><br><br><b>Punto ciego</b>: El borde se vuelve rojo cuando hay un vehรญculo en un punto ciego<br><b>Par de direcciรณn</b>: El borde pasa de verde a rojo segรบn cuรกnto par de direcciรณn se estรฉ usando<br><b>Intermitente</b>: El borde parpadea en amarillo cuando un intermitente estรก activado Lead Info - Informaciรณn de contacto + Informaciรณn del lรญder - Metrics displayed under vehicle markers listing their distance and current speed. - Mรฉtricas mostradas bajo los marcadores de vehรญculos que indican su distancia y velocidad actual. + <b>Show each tracked vehicle's distance and speed</b> below its marker. + <b>Mostrar la distancia y velocidad de cada vehรญculo seguido</b> debajo de su marcador. FPS Display - Pantalla FPS + Pantalla de FPS - Display the <b>Frames Per Second (FPS)</b> at the bottom of the driving screen. - Muestra los <b>Fotogramas Por Segundo (FPS)</b> en la parte inferior de la pantalla de conducciรณn. + <b>Show the frames per second (FPS)</b> at the bottom of the driving screen. + <b>Mostrar los fotogramas por segundo (FPS)</b> en la parte inferior de la pantalla de conducciรณn. Numerical Temperature Gauge - Indicador de temperatura numรฉrico + Indicador de temperatura numรฉrico - Use numerical temperature readings instead of status labels in the sidebar. - Usa lecturas numรฉricas de temperatura en lugar de etiquetas de estado en la barra lateral. - - - Display system information (<b>CPU</b>, <b>GPU</b>, <b>RAM usage</b>, <b>IP address</b>, <b>device storage</b>) in the sidebar. - Mostrar informaciรณn del sistema (<b>CPU</b>, <b>GPU</b>, <b>uso de RAM</b>, <b>direcciรณn IP</b>, <b>almacenamiento del dispositivo</b>) en la barra lateral. - - - Use International System of Units - Utilice el Sistema Internacional de Unidades - - - Display measurements using the <b>International System of Units (SI)</b> standard. - Mostrar las mediciones utilizando el estรกndar del <b>Sistema Internacional de Unidades (SI)</b>. - - - Developer Sidebar - Barra lateral del desarrollador - - - Display debugging info and metrics in a dedicated sidebar on the right side of the screen. - Mostrar informaciรณn de depuraciรณn y mรฉtricas en una barra lateral dedicada en el lado derecho de la pantalla. - - - Metric #1 - Mรฉtrica n.ยบ 1 - - - Metric to display in the first metric in the "Developer Sidebar". - Mรฉtrica para mostrar en la primera mรฉtrica en la "Barra lateral del desarrollador". - - - Metric #2 - Mรฉtrica #2 - - - Metric to display in the second metric in the "Developer Sidebar". - Mรฉtrica para mostrar en la segunda mรฉtrica en la "Barra lateral del desarrollador". - - - Metric #3 - Mรฉtrica n.ยบ 3 - - - Metric to display in the third metric in the "Developer Sidebar". - Mรฉtrica para mostrar en la tercera mรฉtrica en la "Barra lateral del desarrollador". - - - Metric #4 - Mรฉtrica n.ยบ 4 - - - Metric to display in the fourth metric in the "Developer Sidebar". - Mรฉtrica para mostrar en la cuarta mรฉtrica en la "Barra lateral del desarrollador". - - - Metric #5 - Mรฉtrica n.ยบ 5 - - - Metric to display in the fifth metric in the "Developer Sidebar". - Mรฉtrica para mostrar en la quinta mรฉtrica en la "Barra lateral del desarrollador". - - - Metric #6 - Mรฉtrica #6 - - - Metric to display in the sixth metric in the "Developer Sidebar". - Mรฉtrica para mostrar en la sexta mรฉtrica en la "Barra lateral del desarrollador". - - - Metric #7 - Mรฉtrica n.ยบ 7 - - - Metric to display in the seventh metric in the "Developer Sidebar". - Mรฉtrica para mostrar en la sรฉptima mรฉtrica en la "Barra lateral del desarrollador". - - - Developer Widgets - Widgets para desarrolladores - - - Overlays displaying debugging visuals, internal states, and model predictions on the driving screen. - Superposiciones que muestran visuales de depuraciรณn, estados internos y predicciones del modelo en la pantalla de conducciรณn. - - - Adjacent Leads Tracking - Seguimiento de Clientes Adyacentes - - - Adjacent leads detected by the car's radar to the left and right of the current driving path. - Se detectaron vehรญculos adyacentes por el radar del coche a la izquierda y derecha de la trayectoria de conducciรณn actual. - - - Model Stopping Point - Punto de parada del modelo - - - Display an image on the screen where openpilot is wanting to stop. - Mostrar una imagen en la pantalla donde openpilot quiere detenerse. - - - Radar Tracks - Rastros de radar - - - Display all of the radar points produced by the car's radar. - Muestra todos los puntos de radar producidos por el radar del coche. - - - Driving Screen Widgets - Widgets de pantalla de conducciรณn - - - Custom FrogPilot widgets for the driving screen. - Widgets personalizados de FrogPilot para la pantalla de conducciรณn. - - - Acceleration Path - Ruta de Aceleraciรณn - - - Colorize the driving path based on openpilot's current desired acceleration and deceleration rate. - Colorea la ruta de conducciรณn segรบn la tasa actual de aceleraciรณn y desaceleraciรณn deseada de openpilot. - - - Adjacent Lanes - Carriles adyacentes - - - Driving paths for the left and right adjacent lanes. - Rutas de conducciรณn para los carriles adyacentes izquierdo y derecho. - - - Blind Spot Path - Camino del Punto Ciego - - - Display a red driving path for detected vehicles in the corresponding lane's blind spot. - Muestra un camino de conducciรณn rojo para los vehรญculos detectados en el punto ciego del carril correspondiente. - - - Compass - Brรบjula - - - A compass to show the current driving direction. - Una brรบjula para mostrar la direcciรณn de conducciรณn actual. - - - Driving Personality Button - Botรณn de Personalidad de Conducciรณn - - - Display the current driving personality on the screen. Tap to switch personalities, or long press for 0.5 seconds to change the current state of <b>Experimental Mode</b>, or 2.5 seconds for <b>Traffic Mode</b>. - Muestra la personalidad de conducciรณn actual en la pantalla. Toca para cambiar de personalidad, o mantรฉn presionado durante 0.5 segundos para cambiar el estado actual del <b>Modo Experimental</b>, o 2.5 segundos para el <b>Modo de Trรกfico</b>. - - - Gas / Brake Pedal Indicators - Indicadores de Pedal de Gas/Freno - - - Pedals to indicate when either of the pedals are currently being used.<br><br><b>Dynamic</b>: The pedals change in opacity in accordance to how much openpilot is accelerating or decelerating<br><b>Static</b>: The pedals are displayed with full opacity when active, and dimmed when not in use - Pedales para indicar cuรกndo se estรก utilizando alguno de los pedales.<br><br><b>Dinรกmico</b>: Los pedales cambian de opacidad de acuerdo a cuรกnto estรก acelerando o desacelerando openpilot<br><b>Estรกtico</b>: Los pedales se muestran con opacidad completa cuando estรกn activos y atenuados cuando no estรกn en uso - - - Rotating Steering Wheel - Volante giratorio - - - Rotate the steering wheel alongside the vehicle's physical steering wheel. - Gire el volante junto con el volante fรญsico del vehรญculo. - - - Model UI - Interfaz de usuario del modelo - - - Model visualizations on the driving screen for the driving path, lane lines, path edges, and road edges. - Translation A - - - Dynamic Path Width - Ancho de Ruta Dinรกmico - - - Adjust the width of the driving path based on the current engagement state.<br><br><b>Fully engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Fully disengaged</b>: 50% - Ajuste el ancho del camino de conducciรณn segรบn el estado de compromiso actual.<br><br><b>Totalmente comprometido</b>: 100%<br><b>Siempre en lateral</b>: 75%<br><b>Totalmente descomprometido</b>: 50% - - - Lane Lines Width - Ancho de las lรญneas de carril - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 4 inches. - El grosor de las lรญneas de carril en la pantalla de conducciรณn.<br><br><b>Por defecto coincide con el estรกndar de ancho de lรญnea de carril del <b>MUTCD</b> de 4 pulgadas. - - - Path Edges Width - Ancho de Bordes de Ruta - - - The width of the edges of the driving path that represent different driving modes and statuses.<br><br>Default is <b>20%</b> of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden - El ancho de los bordes del camino de conducciรณn que representan diferentes modos y estados de conducciรณn.<br><br>El valor predeterminado es el <b>20%</b> del ancho total del camino.<br><br>Guรญa de colores:<br><br>- <b>Azul</b>: Navegaciรณn<br>- <b>Azul claro</b>: Lateral siempre activo<br>- <b>Verde</b>: Predeterminado<br>- <b>Naranja</b>: Modo experimental<br>- <b>Rojo</b>: Modo de trรกfico<br>- <b>Amarillo</b>: Modo experimental condicional anulado - - - Path Width - Ancho del camino - - - Road Edges Width - Ancho de los bordes de la carretera - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 4 inches. - El grosor de los bordes de la carretera en la pantalla de conducciรณn.<br><br><b>Por defecto coincide con la mitad del estรกndar de ancho de lรญnea de carril del <b>MUTCD</b> de 4 pulgadas. - - - "Unlimited" Road UI - Interfaz de usuario de carretera "ilimitada" - - - Extend the display of the driving path, lane lines, and road edges as far as the model can see. - Extender la visualizaciรณn del camino de conducciรณn, las lรญneas de carril y los bordes de la carretera hasta donde el modelo pueda ver. - - - Navigation Widgets - Widgets de navegaciรณn - - - Map style tweaks, speed limits, and other navigation related widgets. - Ajustes de estilo de mapa, lรญmites de velocidad y otros widgets relacionados con la navegaciรณn. - - - Larger Map Display - Pantalla de mapa mรกs grande - - - Increase the size of the map for easier navigation readings. - Aumenta el tamaรฑo del mapa para facilitar la lectura de la navegaciรณn. - - - Map Style - Estilo de mapa - - - The map style used for <b>Navigate on openpilot (NOO)</b>:<br><br><b>Stock</b>: Default comma.ai style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>mike854's (Satellite hybrid)</b>: Customized hybrid satellite view - El estilo de mapa utilizado para <b>Navegar en openpilot (NOO)</b>:<br><br><b>Stock</b>: Estilo predeterminado de comma.ai<br><b>Mapbox Streets</b>: Vista estรกndar centrada en calles<br><b>Mapbox Outdoors</b>: Destaca caracterรญsticas al aire libre y de terreno<br><b>Mapbox Light</b>: Tema minimalista y brillante<br><b>Mapbox Dark</b>: Tema minimalista y oscuro<br><b>Mapbox Navigation Day</b>: Optimizado para navegaciรณn diurna<br><b>Mapbox Navigation Night</b>: Optimizado para navegaciรณn nocturna<br><b>Mapbox Satellite</b>: Solo imรกgenes satelitales<br><b>Mapbox Satellite Streets</b>: Imรกgenes satelitales hรญbridas con etiquetas de calles<br><b>Mapbox Traffic Night</b>: Tema oscuro que enfatiza las condiciones de trรกfico<br><b>mike854's (Satellite hybrid)</b>: Vista hรญbrida satelital personalizada - - - Road Name - Nombre de la carretera - - - Display the road name at the bottom of the driving screen using data from <b>OpenStreetMap</b>. - Muestra el nombre de la carretera en la parte inferior de la pantalla de conducciรณn utilizando datos de <b>OpenStreetMap</b>. - - - Show Speed Limits - Mostrar lรญmites de velocidad - - - Display speed limits in the top left corner of the driving screen. Uses data from your car's dashboard (if supported) and data from <b>OpenStreetMaps</b>. - Mostrar los lรญmites de velocidad en la esquina superior izquierda de la pantalla de conducciรณn. Utiliza datos del tablero de tu coche (si es compatible) y datos de <b>OpenStreetMaps</b>. - - - Show Speed Limits from Mapbox - Mostrar lรญmites de velocidad de Mapbox - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - Utilice los datos de lรญmite de velocidad de <b>Mapbox</b> cuando no haya otras fuentes disponibles. - - - Use Vienna-Style Speed Signs - Usar seรฑales de velocidad al estilo de Viena - - - Force <b>Vienna-style (EU)</b> speed limit signs instead of <b>MUTCD (US)</b>. - Forzar seรฑales de lรญmite de velocidad <b>estilo Viena (UE)</b> en lugar de <b>MUTCD (EE.UU.)</b>. - - - Quality of Life - Calidad de vida - - - Visual features to improve your overall openpilot experience. - Funciones visuales para mejorar su experiencia general con openpilot. - - - Camera View - Vista de cรกmara - - - The active camera view display. This is purely a visual change and doesn't impact how openpilot drives! - La visualizaciรณn de la vista de la cรกmara activa. ยกEste es un cambio puramente visual y no afecta cรณmo conduce openpilot! - - - Show Driver Camera When In Reverse - Mostrar cรกmara del conductor al dar marcha atrรกs - - - Display the driver camera feed when the vehicle is in reverse. - Muestra la transmisiรณn de la cรกmara del conductor cuando el vehรญculo estรก en reversa. - - - Standby Mode - Modo de espera - - - Turn the screen off when driving and automatically wake it up if engagement state changes or important alerts occur. - Apaga la pantalla al conducir y actรญvala automรกticamente si cambia el estado de compromiso o ocurren alertas importantes. - - - Stopped Timer - Temporizador detenido - - - Replace the current speed with a timer when stopped to indicate how long the vehicle has been stopped for. - Reemplace la velocidad actual con un temporizador cuando estรฉ detenido para indicar cuรกnto tiempo ha estado detenido el vehรญculo. - - - Blind Spot - Punto ciego - - - Steering Torque - Par de direcciรณn - - - Turn Signal - Seรฑal de giro - - - Fahrenheit - Fahrenheit - - - CPU - CPU - - - GPU - GPU - - - IP - IP - - - RAM - RAM - - - SSD Left - SSD restante - - - SSD Used - SSD usado - - - None - Ninguno - - - Acceleration: Current - Aceleraciรณn: Actual - - - Acceleration: Max - Aceleraciรณn: Mรกx - - - Auto Tune: Actuator Delay - Auto Tune: Retraso del actuador - - - Auto Tune: Friction - Auto Tune: Fricciรณn - - - Auto Tune: Lateral Acceleration - Auto Tune: Aceleraciรณn Lateral - - - Auto Tune: Steer Ratio - Auto Tune: Relaciรณn de direcciรณn - - - Auto Tune: Stiffness Factor - Auto Tune: Factor de rigidez - - - Engagement %: Lateral - Compromiso %: Lateral - - - Engagement %: Longitudinal - Compromiso %: Longitudinal - - - Lateral Control: Steering Angle - Control lateral: รngulo de direcciรณn - - - Lateral Control: Torque % Used - Control lateral: % de par utilizado - - - Longitudinal Control: Actuator Acceleration Output - Translation A - - - Longitudinal MPC Jerk: Acceleration - Jerk longitudinal MPC: Aceleraciรณn - - - Longitudinal MPC Jerk: Danger Zone - Zona de peligro de tirรณn longitudinal MPC - - - Longitudinal MPC Jerk: Speed Control - Control de velocidad de sacudida MPC longitudinal - - - SELECT - SELECT - - - Select a metric to display - Seleccione una mรฉtrica para mostrar - - - Show Distance - Mostrar distancia - - - Dynamic - Dinรกmico - - - Static - Estรกtico - - - inches - pulgadas - - - Off - Apagado - - - feet - pies - - - Full Map - Mapa completo - - - Stock openpilot - Stock openpilot - - - FrogsGoMoo's Personalized Style - Estilo Personalizado de FrogsGoMoo - - - Mapbox Streets - Mapbox Streets - - - Mapbox Outdoors - Mapbox Outdoors - - - Mapbox Light - Mapbox Light - - - Mapbox Dark - Mapbox Dark - - - Mapbox Navigation Day - Dรญa de Navegaciรณn de Mapbox - - - Mapbox Navigation Night - Navegaciรณn nocturna de Mapbox - - - Mapbox Satellite - Mapbox Satellite - - - Mapbox Satellite Streets - Mapbox Satellite Streets - - - Mapbox Traffic Night - Mapbox Traffic Night - - - Mike's Personalized Style - Estilo Personalizado de Mike - - - Select a map style - Selecciona un estilo de mapa - - - Auto - Auto - - - Driver - Conductor - - - Standard - Estรกndar - - - Wide - Ancho - - - foot - pie - - - inch - pulgada - - - meter - medidor - - - meters - metros - - - centimeter - centรญmetro - - - centimeters - centรญmetros - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 10 centimeters. - El grosor de las lรญneas de carril en la pantalla de conducciรณn.<br><br><b>Por defecto coincide con el estรกndar de ancho de lรญnea de carril del <b>MUTCD</b> de 10 centรญmetros. - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 10 centimeters. - El grosor de los bordes de la carretera en la pantalla de conducciรณn.<br><br><b>Por defecto coincide con la mitad del estรกndar de ancho de lรญnea de carril del <b>MUTCD</b> de 10 centรญmetros. + <b>Show a numerical temperature in the sidebar</b> instead of the status labels. + <b>Mostrar una temperatura numรฉrica en la barra lateral</b> en lugar de las etiquetas de estado. Sidebar Metrics - Mรฉtricas de la barra lateral + Mรฉtricas de la barra lateral - The width of the driving path on the driving screen.<br><br>Default <b>(6.1 feet)</b> matches the width of a <b>2019 Lexus ES 350</b>. - El ancho del camino de conducciรณn en la pantalla de conducciรณn.<br><br>Por defecto <b>(6.1 pies)</b> coincide con el ancho de un <b>Lexus ES 350 2019</b>. + <b>Display system information</b> (CPU, GPU, RAM usage, IP address, device storage) in the sidebar. + <b>Mostrar informaciรณn del sistema</b> (uso de CPU, GPU y RAM, direcciรณn IP, almacenamiento del dispositivo) en la barra lateral. - The width of the driving path on the driving screen.<br><br>Default <b>(1.9 meters)</b> matches the width of a <b>2019 Lexus ES 350</b>. - El ancho del camino de conducciรณn en la pantalla de conducciรณn.<br><br>El valor predeterminado <b>(1.9 metros)</b> coincide con el ancho de un <b>Lexus ES 350 de 2019</b>. + Use International System of Units + Usa el Sistema Internacional de Unidades + + + <b>Display measurements using the "International System of Units" (SI)</b> standard. + <b>Mostrar mediciones usando el estรกndar del โ€œSistema Internacional de Unidadesโ€ (SI)</b>.</b> + + + Developer Sidebar + Barra lateral del desarrollador + + + <b>Display debugging info and metrics</b> in a dedicated sidebar on the right side of the screen. + <b>Mostrar informaciรณn de depuraciรณn y mรฉtricas</b> en una barra lateral dedicada en el lado derecho de la pantalla. + + + Metric #1 + Mรฉtrica n.ยบ 1 + + + <b>Select the metric shown in the first "Developer Sidebar" widget.</b> + <b>Seleccione la mรฉtrica mostrada en el primer widget de "Developer Sidebar".</b> + + + Metric #2 + Mรฉtrica n.ยบ 2 + + + <b>Select the metric shown in the second "Developer Sidebar" widget.</b> + <b>Selecciona la mรฉtrica mostrada en el segundo widget de "Developer Sidebar".</b> + + + Metric #3 + Mรฉtrica n.ยบ 3 + + + <b>Select the metric shown in the third "Developer Sidebar" widget.</b> + <b>Seleccione la mรฉtrica mostrada en el tercer widget "Developer Sidebar".</b> + + + Metric #4 + Mรฉtrica n.ยบ 4 + + + <b>Select the metric shown in the fourth "Developer Sidebar" widget.</b> + <b>Selecciona la mรฉtrica que se muestra en el cuarto widget de "Developer Sidebar".</b> + + + Metric #5 + Mรฉtrica n.ยบ 5 + + + <b>Select the metric shown in the fifth "Developer Sidebar" widget.</b> + <b>Seleccione la mรฉtrica mostrada en el quinto widget "Developer Sidebar".</b> + + + Metric #6 + Mรฉtrica n.ยบ 6 + + + <b>Select the metric shown in the sixth "Developer Sidebar" widget.</b> + <b>Selecciona la mรฉtrica que se muestra en el sexto widget de "Developer Sidebar".</b> + + + Metric #7 + Mรฉtrica n.ยบ 7 + + + <b>Select the metric shown in the seventh "Developer Sidebar" widget.</b> + <b>Seleccione la mรฉtrica mostrada en el sรฉptimo widget "Developer Sidebar".</b> + + + Developer Widgets + Widgets para desarrolladores + + + <b>Overlays for debugging visuals, internal states, and model predictions</b> on the driving screen. + <b>Superposiciones para depurar visualizaciones, estados internos y predicciones del modelo</b> en la pantalla de conducciรณn. + + + Adjacent Leads Tracking + Seguimiento de vehรญculos adyacentes + + + <b>Display adjacent leads detected by the car's radar</b> to the left and right of the current driving path. + <b>Mostrar los vehรญculos adyacentes detectados por el radar del coche</b> a la izquierda y a la derecha de la trayectoria de conducciรณn actual. + + + Model Stopping Point + Punto de parada del modelo + + + <b>Show a stop-sign marker where the model intends to stop.</b> + <b>Mostrar un marcador de seรฑal de stop donde el modelo pretende detenerse.</b> + + + Radar Tracks + Rastros de radar + + + <b>Display all radar points</b> produced by the car's radar. + <b>Mostrar todos los puntos de radar</b> producidos por el radar del coche. + + + Driving Screen Widgets + Widgets de la pantalla de conducciรณn + + + <b>Custom FrogPilot widgets</b> for the driving screen. + <b>Widgets personalizados de FrogPilot</b> para la pantalla de conducciรณn. + + + Acceleration Path + Trayectoria de aceleraciรณn + + + <b>Color the driving path by planned acceleration and braking.</b> + <b>Colorea la trayectoria de conducciรณn segรบn la aceleraciรณn y el frenado planificados.</b> + + + Adjacent Lanes + Carriles adyacentes + + + <b>Show the driving paths for the left and right lanes.</b> + <b>Mostrar las trayectorias de conducciรณn para los carriles izquierdo y derecho.</b> + + + Blind Spot Path + Trayectoria de punto ciego + + + <b>Show a red path when a vehicle is in that lane's blind spot.</b> + <b>Mostrar una trayectoria roja cuando haya un vehรญculo en el รกngulo muerto de ese carril.</b> + + + Compass + Brรบjula + + + <b>Show the current driving direction</b> with a simple on-screen compass. + <b>Mostrar la direcciรณn actual de conducciรณn</b> con una brรบjula simple en pantalla. + + + Driving Personality Button + Botรณn de personalidad de conducciรณn + + + <b>Control and view the current driving personality</b> via a driving screen widget. + <b>Controla y consulta la personalidad de conducciรณn actual</b> mediante un widget en la pantalla de conducciรณn. + + + Gas / Brake Pedal Indicators + Indicadores de acelerador/freno + + + <b>On-screen gas and brake indicators.</b><br><br><b>Dynamic</b>: Opacity changes according to how much openpilot is accelerating or braking<br><b>Static</b>: Full when active, dim when not + <b>Indicadores de acelerador y freno en pantalla.</b><br><br><b>Dinรกmico</b>: La opacidad cambia segรบn cuรกnto estรฉ acelerando o frenando openpilot<br><b>Estรกtico</b>: Completo cuando estรก activo, tenue cuando no lo estรก + + + Rotating Steering Wheel + Volante giratorio + + + <b>Rotate the driving screen wheel</b> with the physical steering wheel. + <b>Gira la rueda de la pantalla de conducciรณn</b> con el volante fรญsico. + + + Model UI + Interfaz del modelo + + + <b>Model visualizations</b> for the driving path, lane lines, path edges, and road edges. + <b>Visualizaciones del modelo</b> para la trayectoria de conducciรณn, las lรญneas de carril, los bordes de la trayectoria y los bordes de la carretera. + + + Dynamic Path Width + Ancho de ruta dinรกmico + + + <b>Change the path width based on engagement.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% + <b>Cambiar el ancho de la trayectoria segรบn el compromiso.</b><br><br><b>Totalmente comprometido</b>: 100%<br><b>Siempre activado lateral</b>: 75%<br><b>Desconectado</b>: 50% + + + Lane Lines Width + Ancho de las lรญneas de carril + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 4 inches. + <b>Establece el grosor de la lรญnea de carril.</b><br><br>El valor predeterminado coincide con el estรกndar de ancho de lรญnea de carril del MUTCD de 4 pulgadas. + + + Path Edges Width + Ancho de los bordes del carril + + + <b>Set the driving-path edge width</b> that represents different driving modes and statuses.<br><br>Default is 20% of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + <b>Establece el ancho del borde de la trayectoria</b> que representa distintos modos y estados de conducciรณn.<br><br>El valor predeterminado es el 20% del ancho total de la trayectoria.<br><br>Guรญa de colores:<br><br>- <b>Azul</b>: Navegaciรณn<br>- <b>Azul claro</b>: Lateral siempre activo<br>- <b>Verde</b>: Predeterminado<br>- <b>Naranja</b>: Modo experimental<br>- <b>Rojo</b>: Modo de trรกfico<br>- <b>Amarillo</b>: Modo experimental condicional anulado + + + Path Width + Ancho de trayectoria + + + <b>Set the driving-path width.</b><br><br>Default (6.1 feet) matches the width of a 2019 Lexus ES 350. + <b>Establece el ancho de la trayectoria de conducciรณn.</b><br><br>Predeterminado (6.1 pies) coincide con el ancho de un Lexus ES 350 de 2019. + + + Road Edges Width + Ancho de bordes de la carretera + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 4 inches. + <b>Establece el grosor del borde de la carretera.</b><br><br>El valor predeterminado corresponde a la mitad del estรกndar MUTCD de ancho de lรญnea de carril de 4 inches. + + + "Unlimited" Road UI + Interfaz de carretera ยซIlimitadaยป + + + <b>Extend the length of the driving path, lane lines, and road edges</b> for as far as the model can see. + <b>Extiende la longitud del camino de conducciรณn, las lรญneas de carril y los bordes de la carretera</b> hasta donde el modelo pueda ver. + + + Navigation Widgets + Widgets de navegaciรณn + + + <b>Map style, speed limits, and other navigation widgets.</b> + <b>Estilo del mapa, lรญmites de velocidad y otros widgets de navegaciรณn.</b> + + + Larger Map Display + Pantalla de mapa mรกs grande + + + <b>Increase the map size</b> for easier navigation readings. + <b>Aumenta el tamaรฑo del mapa</b> para facilitar la lectura de la navegaciรณn. + + + Map Style + Estilo de mapa + + + <b>Select the map style</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai style<br><b>FrogPilot</b>: Official FrogPilot map style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>Mike's Personalized Style</b>: Customized hybrid satellite view + <b>Selecciona el estilo de mapa</b> para "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Estilo predeterminado de comma.ai<br><b>FrogPilot</b>: Estilo de mapa oficial de FrogPilot<br><b>Mapbox Streets</b>: Vista estรกndar enfocada en calles<br><b>Mapbox Outdoors</b>: Enfatiza caracterรญsticas al aire libre y del terreno<br><b>Mapbox Light</b>: Tema minimalista y claro<br><b>Mapbox Dark</b>: Tema minimalista y oscuro<br><b>Mapbox Navigation Day</b>: Optimizado para navegaciรณn diurna<br><b>Mapbox Navigation Night</b>: Optimizado para navegaciรณn nocturna<br><b>Mapbox Satellite</b>: Solo imรกgenes satelitales<br><b>Mapbox Satellite Streets</b>: Hรญbrido de imรกgenes satelitales con etiquetas de calles<br><b>Mapbox Traffic Night</b>: Tema oscuro que enfatiza las condiciones de trรกfico<br><b>Mike's Personalized Style</b>: Vista hรญbrida satelital personalizada + + + Road Name + Nombre de la carretera + + + <b>Display the road name at the bottom of the driving screen</b> using data from "OpenStreetMap (OSM)". + <b>Mostrar el nombre de la vรญa en la parte inferior de la pantalla de conducciรณn</b> usando datos de "OpenStreetMap (OSM)". + + + Show Speed Limits + Mostrar lรญmites de velocidad + + + <b>Show speed limits</b> in the top-left corner of the driving screen. Uses data from the car's dashboard (if supported) and "OpenStreetMap (OSM)". + <b>Mostrar lรญmites de velocidad</b> en la esquina superior izquierda de la pantalla de conducciรณn. Usa datos del tablero del coche (si es compatible) y "OpenStreetMap (OSM)". + + + Show Speed Limits from Mapbox + Mostrar lรญmites de velocidad de Mapbox + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>Usar los datos de lรญmites de velocidad de Mapbox cuando no haya otra fuente disponible.</b> + + + Use Vienna-Style Speed Signs + Usar seรฑales de velocidad estilo Viena + + + <b>Show Vienna-style (EU) speed-limit signs</b> instead of MUTCD (US). + <b>Mostrar seรฑales de lรญmite de velocidad estilo Viena (UE)</b> en lugar de MUTCD (EE. UU.). + + + Quality of Life + Calidad de vida + + + <b>Miscellaneous visual changes</b> to fine-tune how the driving screen looks. + <b>Cambios visuales varios</b> para ajustar la apariencia de la pantalla de conducciรณn. + + + Camera View + Vista de la cรกmara + + + <b>Select the active camera view.</b> This is purely a visual change and doesn't impact how openpilot drives! + <b>Selecciona la vista de cรกmara activa.</b> Esto es un cambio puramente visual y no afecta cรณmo conduce openpilot. + + + Show Driver Camera When In Reverse + Mostrar cรกmara del conductor al dar marcha atrรกs + + + <b>Show the driver camera feed</b> when the vehicle is in reverse. + <b>Mostrar la transmisiรณn de la cรกmara del conductor</b> cuando el vehรญculo estรฉ en reversa. + + + Stopped Timer + Temporizador detenido + + + <b>Show a timer when stopped</b> in place of the current speed to indicate how long the vehicle has been stopped. + <b>Mostrar un temporizador cuando estรฉ detenido</b> en lugar de la velocidad actual para indicar cuรกnto tiempo ha estado detenido el vehรญculo. + + + Hide Map + Ocultar mapa + + + Blind Spot + Punto ciego + + + Steering Torque + Par de direcciรณn + + + Turn Signal + Seรฑal de giro + + + Fahrenheit + Fahrenheit + + + CPU + CPU + + + GPU + GPU + + + IP + IP + + + RAM + RAM + + + SSD Left + SSD izquierda + + + SSD Used + SSD usada + + + None + Ninguno + + + Acceleration: Current + Aceleraciรณn: Actual + + + Acceleration: Max + Aceleraciรณn: Mรกx. + + + Auto Tune: Actuator Delay + Ajuste automรกtico: retraso del actuador + + + Auto Tune: Friction + Sintonizaciรณn automรกtica: fricciรณn + + + Auto Tune: Lateral Acceleration + Autoajuste: Aceleraciรณn lateral + + + Auto Tune: Steer Ratio + Autoajuste: Relaciรณn de giro del volante + + + Auto Tune: Stiffness Factor + Autoajuste: Factor de rigidez + + + Engagement %: Lateral + Porcentaje de activaciรณn: Lateral + + + Engagement %: Longitudinal + Porcentaje de activaciรณn: Longitudinal + + + Lateral Control: Steering Angle + Control lateral: รกngulo de direcciรณn + + + Lateral Control: Torque % Used + Control lateral: par utilizado % + + + Longitudinal Control: Actuator Acceleration Output + Control longitudinal: salida de aceleraciรณn del actuador + + + Longitudinal MPC Jerk: Acceleration + Jerk del MPC longitudinal: Aceleraciรณn + + + Longitudinal MPC Jerk: Danger Zone + Sacudida del MPC longitudinal: zona de peligro + + + Longitudinal MPC Jerk: Speed Control + Sacudida del MPC longitudinal: control de velocidad + + + SELECT + SELECCIONAR + + + Select a metric to display + Selecciona una mรฉtrica para mostrar + + + Show Distance + Mostrar distancia + + + Dynamic + Dinรกmico + + + Static + Estรกtico + + + inches + pulgadas + + + Off + Apagado + + + feet + pies + + + Full Map + Mapa completo + + + Stock openpilot + openpilot estรกndar + + + FrogPilot + FrogPilot + + + Mapbox Streets + Mapbox Streets + + + Mapbox Outdoors + Mapbox Outdoors + + + Mapbox Light + Mapbox Light + + + Mapbox Dark + Mapbox Oscuro + + + Mapbox Navigation Day + Navegaciรณn de Mapbox (modo diurno) + + + Mapbox Navigation Night + Navegaciรณn nocturna de Mapbox + + + Mapbox Satellite + Mapbox Satรฉlite + + + Mapbox Satellite Streets + Mapbox Satellite Streets + + + Mapbox Traffic Night + Mapbox Traffic Night + + + Mike's Personalized Style + Estilo personalizado de Mike + + + Select a map style + Selecciona un estilo de mapa + + + Auto + Auto + + + Driver + Conductor + + + Standard + Estรกndar + + + Wide + Ancho + + + foot + pie + + + inch + pulgada + + + meter + metro + + + meters + metros + + + centimeter + centรญmetro + + + centimeters + centรญmetros + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 10 centimeters. + <b>Establece el grosor de las lรญneas de carril.</b><br><br>El valor predeterminado coincide con el estรกndar de ancho de lรญnea de carril de la MUTCD de 10 centรญmetros. + + + <b>Set the driving-path width.</b><br><br>Default (1.9 meters) matches the width of a 2019 Lexus ES 350. + <b>Establece el ancho de la trayectoria de conducciรณn.</b><br><br>Por defecto (1.9 metros) coincide con el ancho de un Lexus ES 350 de 2019. + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 10 centimeters. + <b>Establece el grosor del borde de la carretera.</b><br><br>El valor predeterminado coincide con la mitad del estรกndar MUTCD de ancho de lรญnea de carril de 10 centรญmetros. FrogPilotWheelPanel Distance Button - Botรณn de distancia + Botรณn de distancia - The action for a short press of the <b>Distance</b> button. - La acciรณn para una pulsaciรณn corta del botรณn <b>Distancia</b>. + <b>Action performed when the "Distance" button is pressed.</b> + <b>Acciรณn realizada cuando se presiona el botรณn "Distancia".</b> Distance Button (Long Press) - Botรณn de distancia (pulsaciรณn larga) + Botรณn de distancia (mantener presionado) - The action for a 0.5+ second press of the <b>Distance</b> button. - La acciรณn para una pulsaciรณn de mรกs de 0,5 segundos del botรณn <b>Distancia</b>. + <b>Action performed when the "Distance" button is pressed for more than 0.5 seconds.</b> + <b>Acciรณn realizada cuando se mantiene presionado el botรณn "Distance" durante mรกs de 0,5 segundos.</b> Distance Button (Very Long Press) - Botรณn de distancia (pulsaciรณn muy larga) + Botรณn de distancia (pulsaciรณn muy larga) - The action for a 2.5+ second press of the <b>Distance</b> button. - La acciรณn para una pulsaciรณn de mรกs de 2.5 segundos del botรณn <b>Distancia</b>. + <b>Action performed when the "Distance" button is pressed for more than 2.5 seconds.</b> + <b>Acciรณn realizada cuando se mantiene presionado el botรณn "Distance" durante mรกs de 2.5 segundos.</b> LKAS Button - Botรณn LKAS + Botรณn LKAS - The action for pressing the <b>LKAS</b> button. - La acciรณn para presionar el botรณn <b>LKAS</b>. + <b>Action performed when the "LKAS" button is pressed.</b> + <b>Acciรณn realizada cuando se presiona el botรณn "LKAS".</b> - Nothing - Nada + No Action + Sin acciรณn - Pause Lateral - Pausa lateral + Pause Steering + Pausar direcciรณn Change "Personality Profile" - Perfil de Personalidad + Cambiar "Perfil de personalidad" Force openpilot to Coast - Forzar a openpilot a deslizarse + Forzar openpilot a avanzar por inercia - Pause Longitudinal - Pausa Longitudinal + Pause Acceleration/Braking + Pausar aceleraciรณn/frenado Toggle "Experimental Mode" On/Off - Alternar "Modo Experimental" Activado/Desactivado + Alternar "Modo experimental" Activado/Desactivado Toggle "Traffic Mode" On/Off - Alternar "Modo de Trรกfico" Activado/Desactivado + Activar/desactivar ยซTraffic Modeยป SELECT - SELECT + SELECCIONAR Select a function to assign to this button - Seleccione una funciรณn para asignar a este botรณn + Seleccione una funciรณn para asignar a este botรณn @@ -4298,7 +4408,7 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Characters: %1/%2 - Caracteres: %1/%2 + Caracteres: %1/%2 @@ -4312,92 +4422,41 @@ Want to submit your own animations? Share them in the "custom-themes" channel on MapETA eta - eta + eta min - min + min hr - hr + hr MapSettings NAVIGATION - NAVEGACIร“N + NAVEGACIร“N Manage at %1 - Gestionar en %1 + Gestionar en %1 MapWindow Map Loading - Cargando mapa + Cargando mapa Waiting for GPS - Esperando el GPS + Esperando GPS Waiting for route - Esperando la ruta - - - - ModelReview - - How would you rate that drive? - ยฟCรณmo calificarรญas ese viaje? - - - Blacklist this model - Poner en la lista negra este modelo - - - The model used during that drive was: - El modelo utilizado durante ese trayecto fue: - - - Current Model Score: 0 - Puntuaciรณn actual del modelo: 0 - - - Current Model Rank: 0 - Rango actual del modelo: 0 - - - Total Model Drives: 0 - Total de unidades del modelo: 0 - - - Total Overall Model Drives: 0 - Total de unidades del modelo en general: 0 - - - Total Model Drives: %1 - Total de unidades del modelo: %1 - - - Current Model Rank: %1 - Rango actual del modelo: %1 - - - Current Model Score: %1 - Puntuaciรณn actual del modelo: %1 - - - Total Overall Drives: %1 - Total de unidades generales: %1 - - - Model successfully blacklisted! - ยกModelo bloqueado con รฉxito! + Esperando la ruta @@ -4520,17 +4579,17 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Reboot Device Reiniciar Dispositivo - - openpilot crashed ๐Ÿ’ฉ - openpilot se estrellรณ ๐Ÿ’ฉ - openpilot crashed - openpilot se estrellรณ + openpilot se bloqueรณ Please post the "Error Log" in the FrogPilot Discord! - ยกPor favor, publica el "Error Log" en el Discord de FrogPilot! + ยกPublica el "Error Log" en el Discord de FrogPilot! + + + openpilot crashed ๐Ÿ’ฉ + openpilot se bloqueรณ ๐Ÿ’ฉ @@ -4541,15 +4600,15 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Pair your device to your %1 account - Empareja tu dispositivo con tu cuenta %1 + Empareja tu dispositivo con tu cuenta de %1 Go to https://%1 on your phone - Ve a https://%1 en tu telรฉfono + Ve a https://%1 en tu telรฉfono Bookmark %1 to your home screen to use it like an app - Aรฑade %1 a la pantalla de inicio para usarlo como una aplicaciรณn. + Aรฑade %1 a tu pantalla de inicio para usarlo como una aplicaciรณn @@ -4591,7 +4650,7 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Turn-by-turn navigation - Navegaciรณn paso a paso + Navegaciรณn paso a paso @@ -4638,27 +4697,27 @@ Want to submit your own animations? Share them in the "custom-themes" channel on km - km + km m - m + m mi - mi + mi ft - ft - - - FrogPilot - FrogPilot + ft Restore - Restaurar + Restaurar + + + FrogPilot + FrogPilot @@ -4706,11 +4765,11 @@ Esto puede tardar hasta un minuto. ScreenRecorder RECORDING - GRABACIร“N + GRABANDO RECORD - REGISTRO + GRABAR @@ -4733,35 +4792,35 @@ Esto puede tardar hasta un minuto. โ† Back - โ† Atrรกs + โ† Atrรกs FrogPilot - FrogPilot - - - Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ยกBienvenido a FrogPilot! Como eres nuevo en FrogPilot, se ha aplicado el ajuste preestablecido "Minimal", pero puedes cambiarlo en cualquier momento a travรฉs del botรณn "Tuning Level". - - - Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Dado que eres bastante nuevo en FrogPilot, se ha aplicado el ajuste preestablecido "Minimal", ยกpero puedes cambiarlo en cualquier momento a travรฉs del botรณn "Tuning Level"! - - - Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Dado que tienes experiencia con openpilot, se ha aplicado el ajuste preestablecido "Estรกndar", ยกpero puedes cambiarlo en cualquier momento a travรฉs del botรณn "Nivel de ajuste"! - - - Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Dado que tienes experiencia con FrogPilot, se ha aplicado el ajuste preestablecido "Estรกndar", ยกpero puedes cambiarlo en cualquier momento a travรฉs del botรณn "Nivel de Ajuste"! - - - Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Dado que tienes mucha experiencia con FrogPilot, se ha aplicado el ajuste preestablecido "Avanzado", pero puedes cambiarlo en cualquier momento a travรฉs del botรณn "Nivel de ajuste". + FrogPilot Welcome to FrogPilot! Since you're new to openpilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ยกBienvenido a FrogPilot! Como eres nuevo en openpilot, se ha aplicado el ajuste preestablecido "Minimal", pero puedes cambiarlo en cualquier momento a travรฉs del botรณn "Tuning Level". + ยกBienvenido a FrogPilot! Como eres nuevo en openpilot, se ha aplicado el ajuste preestablecido "Minimal", pero puedes cambiarlo en cualquier momento mediante el botรณn "Tuning Level". + + + Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + ยกBienvenido a FrogPilot! Como eres nuevo en FrogPilot, se ha aplicado el ajuste preestablecido "Minimal", pero puedes cambiarlo en cualquier momento mediante el botรณn "Tuning Level". + + + Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Como eres relativamente nuevo en FrogPilot, se ha aplicado el ajuste preestablecido "Minimal", pero puedes cambiarlo en cualquier momento con el botรณn "Tuning Level". + + + Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Dado que tienes experiencia con openpilot, se ha aplicado el ajuste predefinido "Standard", pero puedes cambiarlo en cualquier momento mediante el botรณn "Tuning Level". + + + Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Dado que tienes experiencia con FrogPilot, se ha aplicado el ajuste preestablecido "Standard", pero puedes cambiarlo en cualquier momento mediante el botรณn "Tuning Level". + + + Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Dado que tienes mucha experiencia con FrogPilot, se ha aplicado el ajuste preestablecido โ€œAvanzadoโ€, pero puedes cambiarlo en cualquier momento mediante el botรณn โ€œNivel de ajusteโ€. @@ -4875,7 +4934,7 @@ Esto puede tardar hasta un minuto. Pair your device with Konik connect (stable.konik.ai). - Empareja tu dispositivo con Konik connect (stable.konik.ai). + Empareja tu dispositivo con Konik connect (stable.konik.ai). @@ -4962,27 +5021,27 @@ Esto puede tardar hasta un minuto. GPU - GPU + GPU CPU - CPU + CPU GB - GB + GB MEMORY - MEMORIA + MEMORIA LEFT - IZQUIERDA + IZQUIERDA USED - USADO + USADO @@ -5057,39 +5116,39 @@ Esto puede tardar hasta un minuto. Updates are only downloaded while the car is off or in park. - Las actualizaciones solo se descargan mientras el coche estรก apagado o en estacionamiento. + Las actualizaciones solo se descargan cuando el coche estรก apagado o en estacionamiento. Automatically Update FrogPilot - Actualizar automรกticamente FrogPilot - - - Do you want to delete deep storage FrogPilot assets? This includes your toggle settings for quick reinstalls. - ยฟDesea eliminar los activos de almacenamiento profundo de FrogPilot? Esto incluye sus configuraciones de alternancia para reinstalaciones rรกpidas. - - - Are you sure? This is 100% unrecoverable and if you reinstall FrogPilot you'll lose all your previous settings! - ยฟEstรกs seguro? ยกEsto es 100% irrecuperable y si reinstalas FrogPilot perderรกs todas tus configuraciones anteriores! - - - Error Log - Registro de errores - - - VIEW - VER - - - View the error log for openpilot crashes. - Ver el registro de errores para fallos de openpilot. - - - This branch must be downloaded before switching. Would you like to download it now? - Esta rama debe descargarse antes de cambiar. ยฟTe gustarรญa descargarla ahora? + Actualizar FrogPilot automรกticamente FrogPilot will automatically update itself and it's assets when you're offroad and have an active internet connection. - FrogPilot se actualizarรก automรกticamente y sus activos cuando estรฉs fuera de carretera y tengas una conexiรณn a internet activa. + FrogPilot se actualizarรก automรกticamente junto con sus recursos cuando estรฉs fuera de la carretera y tengas una conexiรณn a internet activa. + + + This branch must be downloaded before switching. Would you like to download it now? + Esta rama debe descargarse antes de cambiar. ยฟDeseas descargarla ahora? + + + Error Log + Registro de errores + + + VIEW + VER + + + View the error log for openpilot crashes. + Ver el registro de errores de fallos de openpilot. + + + Do you want to perform a full factory reset? All saved assets and settings will be permanently deleted! + ยฟDeseas realizar un restablecimiento de fรกbrica completo? ยกTodos los recursos y configuraciones guardados se eliminarรกn permanentemente! + + + This is a complete factory reset and cannot be undone. Are you absolutely sure you want to continue? + Esta es una restauraciรณn de fรกbrica completa y no se puede deshacer. ยฟEstรก absolutamente seguro de que desea continuar? @@ -5269,19 +5328,19 @@ Esto puede tardar hasta un minuto. Show ETA in 24h Format - Mostrar ETA en formato de 24 horas + Mostrar ETA en formato 24h Use 24h format instead of am/pm - Usa el formato de 24 horas en lugar de am/pm. + Usa el formato de 24 horas en lugar de am/pm Show Map on Left Side of UI - Mostrar mapa en el lado izquierdo de la interfaz de usuario + Mostrar mapa en el lado izquierdo de la interfaz Show map on left side when in split screen view. - Mostrar el mapa en el lado izquierdo cuando estรฉ en vista de pantalla dividida. + Mostrar el mapa en el lado izquierdo cuando estรฉ en vista de pantalla dividida. @@ -5343,11 +5402,11 @@ Esto puede tardar hasta un minuto. Uploading disabled - Carga deshabilitada + Subida desactivada Toggle off the "Turn Off Data Uploads" toggle to re-enable uploads. - Desactiva el interruptor "Desactivar cargas de datos" para volver a habilitar las cargas. + Desactiva la opciรณn "Turn Off Data Uploads" para volver a habilitar las cargas. diff --git a/selfdrive/ui/translations/main_fr.ts b/selfdrive/ui/translations/main_fr.ts index ca4330497..d6759c3fc 100644 --- a/selfdrive/ui/translations/main_fr.ts +++ b/selfdrive/ui/translations/main_fr.ts @@ -88,23 +88,23 @@ Off - Dรฉsactivรฉ + Dรฉsactivรฉ Always - Toujours + Toujours Only Onroad - Seulement Onroad + Uniquement en conduite Until Reboot - Jusqu'au redรฉmarrage + Jusquโ€™au redรฉmarrage Allow tethering with your data SIM and keep it active either while driving or continuously. - Autorisez le partage de connexion avec votre carte SIM de donnรฉes et maintenez-le actif soit en conduisant, soit en continu. + Autorisez le partage de connexion avec votre carte SIM de donnรฉes et maintenez-le actif soit pendant la conduite, soit en continu. @@ -187,71 +187,71 @@ DeveloperSidebar m/sยฒ - m/sยฒ + m/sยฒ ft/sยฒ - ft/sยฒ + ft/sยฒ ACCEL - ACCEL + ACCEL ACCEL JERK - ACCEL JERK + ร€-COUPS ACCEL ACT ACCEL - ACCร‰L ACT + ACT ACCEL DANGER JERK - DANGER JERK + DANGER ร€-COUPS STEER DELAY - Dร‰LAI DE DIRECTION + RETARD DE DIRECTION FRICTION - FROTTEMENT + FRICTION LAT ACCEL - ACC LAT + ACCEL LAT LATERAL % - LATร‰RAL % + LATร‰RAL % LONG % - LONG % + LONG % MAX ACCEL - ACCร‰L MAX + ACCร‰L MAX SPEED JERK - ร€-COUPS DE VITESSE + ร€-COUPS DE VITESSE STEER ANGLE - ANGLE DE BRAQUAGE + ANGLE DE BRAQUAGE STEER RATIO - RAPPORT DE DIRECTION + RAPPORT DE DIRECTION STEER STIFF - DIRECTION RIGIDE + DIRECTION RAIDE TORQUE % - COUPLE % + COUPLE % @@ -390,38 +390,38 @@ Pair Device - Appairer l'appareil + Appairer lโ€™appareil PAIR - PAIRE + APPARIER Pair your device with Konik connect (stable.konik.ai). - Associez votre appareil avec Konik connect (stable.konik.ai). + Associez votre appareil ร  Konik connect (stable.konik.ai). DriveStats FROGPILOT - FROGPILOT + FROGPILOT Drives - Lecteurs + Trajets Hours - Heures + Heures KM - KM + KM Miles - Miles + Miles @@ -446,3839 +446,3951 @@ FrogPilotAnnotatedCameraWidget m/sยฒ - m/sยฒ + m/sยฒ meters - mรจtres + mรจtres m/s - m/s + m/s km/h - km/h + km/h ft/sยฒ - ft/sยฒ + pi/sยฒ feet - pieds + pieds mph - mph + mph Vehicle in blind spot - Vรฉhicule dans l'angle mort + Vรฉhicule dans lโ€™angle mort PENDING - EN ATTENTE + EN ATTENTE LIMIT - LIMITE + LIMITE FrogPilotConfirmationDialog Reboot required to take effect. - Redรฉmarrage requis pour prendre effet. + Redรฉmarrage requis pour prendre effet. Reboot Now - Redรฉmarrer maintenant + Redรฉmarrer maintenant Reboot Later - Redรฉmarrer plus tard + Redรฉmarrer plus tard Yes - Oui + Oui No - Non + Non FrogPilotDataPanel - Delete Driving Footage and Data - Supprimer les sรฉquences de conduite et les donnรฉes + Delete Driving Data + Supprimer les donnรฉes de conduite DELETE - SUPPRIMER + SUPPRIMER - Deletes all stored driving footage and data from your device. Ideal for maintaining privacy or for simply freeing up space. - Supprime toutes les sรฉquences de conduite et donnรฉes stockรฉes sur votre appareil. Idรฉal pour prรฉserver la confidentialitรฉ ou simplement libรฉrer de l'espace. + <b>Delete all stored driving footage and data</b> to free up space and clear private information. + <b>Supprimer toutes les sรฉquences de conduite et les donnรฉes enregistrรฉes</b> pour libรฉrer de lโ€™espace et effacer les informations privรฉes. - Are you sure you want to delete all of your driving footage and data? - รŠtes-vous sรปr de vouloir supprimer toutes vos sรฉquences de conduite et donnรฉes ? + Delete all driving data and footage? + Supprimer toutes les donnรฉes de conduite et les enregistrements vidรฉo ? Delete - Supprimer + Supprimer Deleting... - Suppression... + Suppression... Deleted! - Supprimรฉ ! + Supprimรฉย ! Delete Error Logs - Supprimer les journaux d'erreurs + Supprimer les journaux dโ€™erreurs - Deletes all stored error logs from your device. Ideal for freeing up space. - Supprime tous les journaux d'erreurs stockรฉs sur votre appareil. Idรฉal pour libรฉrer de l'espace. + <b>Delete collected error logs</b> to free up space and clear old crash records. + <b>Supprimez les journaux dโ€™erreurs collectรฉs</b> pour libรฉrer de lโ€™espace et effacer les anciens rapports de crash. - Are you sure you want to delete all of the error logs? - รŠtes-vous sรปr de vouloir supprimer tous les journaux d'erreurs ? + Delete all error logs? + Supprimer tous les journaux dโ€™erreursย ? Screen Recordings - Enregistrements d'รฉcran + Enregistrements dโ€™รฉcran - Manage your screen recordings. - Gรฉrez vos enregistrements d'รฉcran. + <b>Delete or rename screen recordings.</b> + <b>Supprimez ou renommez les enregistrements dโ€™รฉcran.</b> DELETE ALL - SUPPRIMER TOUT + SUPPRIMER TOUT RENAME - RENOMMER + RENOMMER - Select a recording to delete - Sรฉlectionnez un enregistrement ร  supprimer + Choose a screen recording to delete + Choisissez un enregistrement dโ€™รฉcran ร  supprimer - Are you sure you want to delete this recording? - รŠtes-vous sรปr de vouloir supprimer cet enregistrement ? + Delete this screen recording? + Supprimer cet enregistrement dโ€™รฉcranย ? - Are you sure you want to delete all screen recordings? - รŠtes-vous sรปr de vouloir supprimer tous les enregistrements d'รฉcran ? + Delete all screen recordings? + Supprimer tous les enregistrements dโ€™รฉcranย ? Delete All - Supprimer tout + Tout supprimer - Select a recording to rename - Sรฉlectionnez un enregistrement ร  renommer + Choose a screen recording to rename + Choisissez un enregistrement dโ€™รฉcran ร  renommer Enter a new name - Entrez un nouveau nom + Saisissez un nouveau nom - Rename Recording - Renommer l'enregistrement + Rename Screen Recording + Renommer lโ€™enregistrement dโ€™รฉcran - A recording with this name already exists. Please choose a different name. - Un enregistrement portant ce nom existe dรฉjร . Veuillez choisir un autre nom. + Name already in use. Please choose a different name. + Nom dรฉjร  utilisรฉ. Veuillez choisir un autre nom. Renaming... - Renommage... + Renommage en cours... Renamed! - Renommรฉ ! + Renommรฉย ! FrogPilot Backups - Sauvegardes FrogPilot + Sauvegardes FrogPilot - Manage your FrogPilot backups. - Gรฉrez vos sauvegardes FrogPilot. + <b>Create, delete, or restore FrogPilot backups.</b> + <b>Crรฉer, supprimer ou restaurer des sauvegardes FrogPilot.</b> BACKUP - SAUVEGARDE + SAUVEGARDE RESTORE - RESTAURER + RESTAURER - Name your backup - Nommez votre sauvegarde + Enter a name for this backup + Saisissez un nom pour cette sauvegarde - A backup with this name already exists. Please choose a different name. - Une sauvegarde portant ce nom existe dรฉjร . Veuillez choisir un autre nom. - - - Do you want to compress this backup? This will take a few minutes, but the final result will be smaller and run in the background. - Voulez-vous compresser cette sauvegarde ? Cela prendra quelques minutes, mais le rรฉsultat final sera plus petit et s'exรฉcutera en arriรจre-plan. + Compress this backup? This will save space and run in the background but take a bit longer. + Compresser cette sauvegarde ? Cela รฉconomisera de lโ€™espace et sโ€™exรฉcutera en arriรจre-plan, mais prendra un peu plus de temps. Backing up... - Sauvegarde en cours... + Sauvegarde en coursโ€ฆ Compressing... - Compression... + Compression en coursโ€ฆ Backup created! - Sauvegarde crรฉรฉe ! + Sauvegarde crรฉรฉeย ! - Select a backup to delete - Sรฉlectionnez une sauvegarde ร  supprimer + Choose a FrogPilot backup to delete + Choisissez une sauvegarde FrogPilot ร  supprimer - Are you sure you want to delete this backup? - รŠtes-vous sรปr de vouloir supprimer cette sauvegarde ? + Delete this backup? + Supprimer cette sauvegardeย ? - Are you sure you want to delete all FrogPilot backups? - รŠtes-vous sรปr de vouloir supprimer toutes les sauvegardes FrogPilot ? + Delete all backups? + Supprimer toutes les sauvegardesย ? - Select a restore point - Sรฉlectionnez un point de restauration + Choose a backup to restore + Choisissez une sauvegarde ร  restaurer - Are you sure you want to restore this version of FrogPilot? - รŠtes-vous sรปr de vouloir restaurer cette version de FrogPilot ? + Restore this backup? + Restaurer cette sauvegardeย ? Restore - Restaurer + Restaurer Restoring... - Restauration... + Restauration en cours... Extracting... - Extraction... + Extractionโ€ฆ Restored! - Restaurรฉ ! + Restaurรฉ ! Rebooting... - Redรฉmarrage... + Redรฉmarrageโ€ฆ Toggle Backups - Basculer les sauvegardes + Activer/Dรฉsactiver les sauvegardes - Manage your toggle backups. - Gรฉrez vos sauvegardes de bascule. + <b>Create, delete, or restore toggle backups.</b> + <b>Crรฉer, supprimer ou restaurer des sauvegardes de bascule.</b> - Name your toggle backup - Nommez votre sauvegarde de basculement - - - A toggle backup with this name already exists. Please choose a different name. - Une sauvegarde de basculement portant ce nom existe dรฉjร . Veuillez choisir un autre nom. - - - Select a toggle backup to delete - Sรฉlectionnez une sauvegarde ร  basculer pour supprimer - - - Are you sure you want to delete this toggle backup? - รŠtes-vous sรปr de vouloir supprimer cette sauvegarde de bascule ? - - - Are you sure you want to delete all toggle backups? - รŠtes-vous sรปr de vouloir supprimer toutes les sauvegardes de bascule ? - - - Select a toggle restore point - Sรฉlectionnez un point de restauration de basculement - - - Are you sure you want to restore this toggle backup? - รŠtes-vous sรปr de vouloir restaurer cette sauvegarde de bascule ? + Choose a backup to delete + Choisissez une sauvegarde ร  supprimer FrogPilotDevicePanel Device Settings - Paramรจtres de l'appareil + Paramรจtres de lโ€™appareil - Settings that control device behavior. - Paramรจtres qui contrรดlent le comportement de l'appareil. - - - Battery Shutdown Threshold - Seuil d'arrรชt de la batterie - - - Automatically shut down the device when the vehicle's battery voltage reaches the set threshold preventing excessive battery drain to protect the battery. - Arrรชter automatiquement l'appareil lorsque la tension de la batterie du vรฉhicule atteint le seuil dรฉfini, empรชchant ainsi une dรฉcharge excessive de la batterie pour la protรฉger. + <b>Settings that control how the device runs, powers off, and manages driving data.</b> + <b>Paramรจtres qui contrรดlent le fonctionnement de lโ€™appareil, son extinction et la gestion des donnรฉes de conduite.</b> Device Shutdown Timer - Minuteur d'arrรชt de l'appareil + Minuteur dโ€™arrรชt de lโ€™appareil - How long the device stays on for after you go offroad. - Combien de temps l'appareil reste allumรฉ aprรจs que vous quittiez la route. + <b>Keep the device on for the set amount of time after a drive</b> before it shuts down automatically. + <b>Maintenez lโ€™appareil allumรฉ pendant la durรฉe dรฉfinie aprรจs un trajet</b> avant quโ€™il ne sโ€™รฉteigne automatiquement. - Disable Data Logging - Dรฉsactiver la journalisation des donnรฉes + Disable Logging + Dรฉsactiver la journalisation WARNING: This will prevent your drives from being recorded and all data will be unobtainable! - AVERTISSEMENT : Cela empรชchera vos disques d'รชtre enregistrรฉs et toutes les donnรฉes seront inaccessibles ! + ATTENTION : Cela empรชchera lโ€™enregistrement de vos trajets et toutes les donnรฉes seront irrรฉcupรฉrables ! - Disable all data logging to improve privacy. - Dรฉsactiver tous les journaux de donnรฉes pour amรฉliorer la confidentialitรฉ. + <b>Prevent the device from saving driving data.</b> + <b>Empรชcher lโ€™appareil dโ€™enregistrer les donnรฉes de conduite.</b> - Disable Data Uploads - Dรฉsactiver les tรฉlรฉchargements de donnรฉes + Disable Uploads + Dรฉsactiver les tรฉlรฉchargements - WARNING: This will prevent your drives from appearing on <b>comma connect</b> which may impact debugging and support! - AVERTISSEMENT : Cela empรชchera vos lecteurs d'apparaรฎtre sur <b>comma connect</b>, ce qui pourrait affecter le dรฉbogage et le support ! + WARNING: This will prevent your drives from being uploaded to <b>comma connect</b> which will impact debugging and official support from comma! + AVERTISSEMENTย : ceci empรชchera le tรฉlรฉversement de vos trajets vers <b>comma connect</b>, ce qui affectera le dรฉbogage et lโ€™assistance officielle de commaย ! - Prevent the device from sending any data to <b>comma</b>'s servers. - Empรชcher l'appareil d'envoyer des donnรฉes aux serveurs de <b>comma</b>. + <b>Prevent the device from uploading driving data.</b> + <b>Empรชcher lโ€™appareil de tรฉlรฉverser les donnรฉes de conduite.</b> - Increase Thermal Safety Limit - Augmenter la limite de sรฉcuritรฉ thermique + High-Quality Recording + Enregistrement de haute qualitรฉ - WARNING: This can damage your device by exceeding safe temperature limits! - AVERTISSEMENT : Cela peut endommager votre appareil en dรฉpassant les limites de tempรฉrature sรฉcurisรฉes ! + <b>Save drive footage in higher video quality.</b> + <b>Enregistrer les sรฉquences de conduite en meilleure qualitรฉ vidรฉo.</b> - Allow the device to run hotter than comma recommended limit. - Autoriser l'appareil ร  fonctionner ร  une tempรฉrature supรฉrieure ร  la limite recommandรฉe par la virgule. + Low-Voltage Cutoff + Coupure basse tension - Use Konik's Server Instead of comma's - Utilisez le serveur de Konik au lieu de celui de Comma. + <b>While parked, if the battery voltage falls below the set level, the device shuts down</b> to prevent excessive battery drain. + <b>ร€ lโ€™arrรชt, si la tension de la batterie descend sous le niveau dรฉfini, lโ€™appareil sโ€™รฉteint</b> pour รฉviter une dรฉcharge excessive de la batterie. - Upload your driving data to <b>connect.konik.ai</b> instead of <b>connect.comma.ai</b>. - Tรฉlรฉchargez vos donnรฉes de conduite sur <b>connect.konik.ai</b> au lieu de <b>connect.comma.ai</b>. + Raise Temperature Limits + Augmenter les limites de tempรฉrature + + + WARNING: Running at higher temperatures may damage your device! + AVERTISSEMENT : Fonctionner ร  des tempรฉratures plus รฉlevรฉes peut endommager votre appareil ! + + + <b>Allow the device to run at higher temperatures</b> before throttling or shutting down. Use only if you understand the risks! + <b>Autorisez lโ€™appareil ร  fonctionner ร  des tempรฉratures plus รฉlevรฉes</b> avant de rรฉduire les performances ou dโ€™รฉteindre. ร€ utiliser uniquement si vous comprenez les risques ! + + + Use Konik Server + Utiliser le serveur Konik + + + <b>Upload driving data to "connect.konik.ai" instead of "connect.comma.ai".</b> + <b>Tรฉlรฉcharger les donnรฉes de conduite vers "connect.konik.ai" au lieu de "connect.comma.ai".</b> Screen Settings - Paramรจtres d'รฉcran + Paramรจtres de lโ€™รฉcran - Settings that control screen behavior. - Paramรจtres qui contrรดlent le comportement de l'รฉcran. + <b>Settings that control screen brightness, screen recording, and timeout duration.</b> + <b>Paramรจtres qui contrรดlent la luminositรฉ de lโ€™รฉcran, lโ€™enregistrement de lโ€™รฉcran et la durรฉe dโ€™expiration.</b> Screen Brightness (Offroad) - Luminositรฉ de l'รฉcran (Tout-terrain) + Luminositรฉ de lโ€™รฉcran (hors route) - The screen brightness when not driving. - La luminositรฉ de l'รฉcran lorsque vous ne conduisez pas. + <b>The screen brightness while not driving.</b> + <b>La luminositรฉ de lโ€™รฉcran ร  lโ€™arrรชt.</b> Screen Brightness (Onroad) - Luminositรฉ de l'รฉcran (Sur route) + Luminositรฉ de lโ€™รฉcran (sur route) - The screen brightness while driving. - La luminositรฉ de l'รฉcran pendant la conduite. + <b>The screen brightness while driving.</b> + <b>La luminositรฉ de lโ€™รฉcran pendant la conduite.</b> Screen Recorder - Enregistreur d'รฉcran + Enregistreur dโ€™รฉcran - Enable a button in the driving screen to record the screen. - Activer un bouton dans l'รฉcran de conduite pour enregistrer l'รฉcran. + <b>Add a button to the driving screen to record the display.</b> + <b>Ajouter un bouton ร  lโ€™รฉcran de conduite pour enregistrer lโ€™affichage.</b> Screen Timeout (Offroad) - Dรฉlai d'expiration de l'รฉcran (hors route) + Dรฉlai dโ€™extinction de lโ€™รฉcran (Offroad) - How long it takes for the screen to turn off when not driving. - Combien de temps faut-il pour que l'รฉcran s'รฉteigne lorsqu'on ne conduit pas. + <b>How long the screen stays on after being tapped while not driving.</b> + <b>Durรฉe pendant laquelle lโ€™รฉcran reste allumรฉ aprรจs un tapotement lorsquโ€™on ne conduit pas.</b> Screen Timeout (Onroad) - Dรฉlai d'expiration de l'รฉcran (En route) + Expiration de lโ€™รฉcran (en conduite) - How long it takes for the screen to turn off while driving. - Combien de temps faut-il pour que l'รฉcran s'รฉteigne en conduisant. + <b>How long the screen stays on after being tapped while driving.</b> + <b>Durรฉe pendant laquelle lโ€™รฉcran reste allumรฉ aprรจs un appui en conduisant.</b> + + + Standby Mode + Mode veille + + + <b>Turn the screen off while driving and automatically wake it up for alerts or engagement state changes.</b> + <b>ร‰teignez lโ€™รฉcran en conduisant et rรฉactivez-le automatiquement lors des alertes ou des changements dโ€™รฉtat dโ€™engagement.</b> 5 mins - 5 min + 5 min mins - mins + min hour - heure + heure hours - heures + heures - Only Disable While Onroad - Dรฉsactiver uniquement en conduite + Disable Onroad Only + Dรฉsactiver ยซ Onroad Only ยป volts - volts + volts Screen Off - ร‰cran รฉteint + ร‰cran รฉteint Auto - Auto + Auto Start Recording - Commencer l'enregistrement + Dรฉmarrer lโ€™enregistrement Stop Recording - Arrรชter l'enregistrement + Arrรชter lโ€™enregistrement seconds - secondes - - - High Bitrate Recording - Enregistrement ร  haut dรฉbit binaire - - - Record driving footage at double the standard bitrate for improved video quality in driving logs. - Enregistrez les sรฉquences de conduite ร  un dรฉbit binaire double du dรฉbit standard pour amรฉliorer la qualitรฉ vidรฉo dans les journaux de conduite. + secondes FrogPilotLateralPanel Advanced Lateral Tuning - Rรฉglage latรฉral avancรฉ + Rรฉglage latรฉral avancรฉ - Advanced settings for fine-tuning openpilot's lateral controls. - Paramรจtres avancรฉs pour le rรฉglage fin des contrรดles latรฉraux d'openpilot. + <b>Advanced steering control changes to fine-tune how openpilot drives.</b> + <b>Modifications avancรฉes du contrรดle de direction pour affiner la conduite dโ€™openpilot.</b> Actuator Delay (Default: %1) - Dรฉlai de l'actionneur (Par dรฉfaut : %1) + Dรฉlai dโ€™actionneur (Par dรฉfautย : %1) Actuator Delay - Dรฉlai de l'actionneur + Dรฉlai dโ€™actionneur - How long the steering wheel takes to respond to commands. Higher values account for slower steering; lower values for quicker response. - Le temps que le volant met ร  rรฉpondre aux commandes. Des valeurs plus รฉlevรฉes correspondent ร  une direction plus lente ; des valeurs plus basses ร  une rรฉponse plus rapide. + <b>The time between openpilot's steering command and the vehicle's response.</b> Increase if the vehicle reacts late; decrease if it feels jumpy. Auto-learned by default. + <b>Le temps entre la commande de direction dโ€™openpilot et la rรฉponse du vรฉhicule.</b> Augmentez si le vรฉhicule rรฉagit tard ; diminuez si la conduite paraรฎt nerveuse. Apprentissage automatique activรฉ par dรฉfaut. Friction (Default: %1) - Friction (Par dรฉfaut : %1) + Friction (par dรฉfautย : %1) Friction - Friction + Friction - Adjust steering resistance. Higher values feel more stable but heavier; lower values feel lighter but more sensitive. - Ajustez la rรฉsistance de la direction. Des valeurs plus รฉlevรฉes se sentent plus stables mais plus lourdes ; des valeurs plus basses se sentent plus lรฉgรจres mais plus sensibles. + <b>Compensates for steering friction.</b> Increase if the wheel sticks near center; decrease if it jitters. Auto-learned by default. + <b>Compense le frottement de la direction.</b> Augmentez si le volant colle prรจs du centre ; diminuez sโ€™il tremble. Appris automatiquement par dรฉfaut. Kp Factor (Default: %1) - Facteur Kp (Par dรฉfaut : %1) + Facteur Kp (Par dรฉfautย : %1) Kp Factor - Facteur Kp + Facteur Kp - How aggressively openpilot corrects steering. Higher values respond faster but may feel jerky; lower values are smoother but slower. - Comment openpilot corrige agressivement la direction. Des valeurs plus รฉlevรฉes rรฉagissent plus rapidement mais peuvent sembler saccadรฉes ; des valeurs plus basses sont plus fluides mais plus lentes. + <b>How strongly openpilot corrects lane position.</b> Higher is tighter but twitchier; lower is smoother but slower. Auto-learned by default. + <b>ร€ quel point openpilot corrige la position dans la voie.</b> Plus รฉlevรฉ est plus serrรฉ mais plus nerveux ; plus faible est plus doux mais plus lent. Appris automatiquement par dรฉfaut. - Lateral Accel (Default: %1) - Accรฉlรฉration latรฉrale (Par dรฉfaut : %1) + Lateral Acceleration (Default: %1) + Accรฉlรฉration latรฉrale (Par dรฉfautย : %1) - Lateral Accel - Accรฉlรฉration latรฉrale + Lateral Acceleration + Accรฉlรฉration latรฉrale - How quickly openpilot makes lateral adjustments. Higher values allow sharper turns; lower values provide smoother steering. - La rapiditรฉ avec laquelle openpilot effectue des ajustements latรฉraux. Des valeurs plus รฉlevรฉes permettent des virages plus serrรฉs ; des valeurs plus basses offrent une direction plus douce. + <b>Maps steering torque to turning response.</b> Increase for sharper turns; decrease for gentler steering. Auto-learned by default. + <b>Associe le couple de direction ร  la rรฉponse en virage.</b> Augmentez pour des virages plus vifs ; diminuez pour une direction plus douce. Appris automatiquement par dรฉfaut. Steer Ratio (Default: %1) - Rapport de direction (Par dรฉfaut : %1) + Ratio de direction (Par dรฉfaut : %1) Steer Ratio - Rapport de direction + Rapport de direction - How much the steering wheel turns in response to commands. Higher values feel more stable; lower values feel quicker. - Dans quelle mesure le volant tourne en rรฉponse aux commandes. Des valeurs plus รฉlevรฉes donnent une sensation de stabilitรฉ accrue ; des valeurs plus faibles donnent une sensation de rapiditรฉ accrue. + <b>The relationship between steering wheel rotation and road wheel angle.</b> Increase if steering feels too quick or twitchy; decrease if it feels too slow or weak. Auto-learned by default. + <b>La relation entre la rotation du volant et lโ€™angle des roues.</b> Augmentez si la direction semble trop rapide ou nerveuse ; diminuez si elle paraรฎt trop lente ou molle. Apprentissage automatique par dรฉfaut. - Force Auto Tune On - Forcer l'auto-tune activรฉ + Force Auto-Tune On + Forcer lโ€™ajustement automatique activรฉ - Force-enable commaโ€™s auto lateral tuning. - Forcer l'activation automatique du rรฉglage latรฉral de la virgule. + <b>Force-enable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration".</b> + <b>Forcer lโ€™activation du rรฉglage automatique en direct dโ€™openpilot pour ยซ Friction ยป et ยซ Accรฉlรฉration latรฉrale ยป.</b> - Force Auto Tune Off - Forcer la dรฉsactivation de l'Auto Tune + Force Auto-Tune Off + Forcer la dรฉsactivation de lโ€™Auto-Tune - Force-disable commaโ€™s auto lateral tuning. - Forcer la dรฉsactivation du rรฉglage latรฉral automatique de la virgule. + <b>Force-disable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration" and use the set value instead.</b> + <b>Dรฉsactiver de force lโ€™auto-รฉtalonnage en direct dโ€™openpilot pour ยซ Friction ยป et ยซ Accรฉlรฉration latรฉrale ยป et utiliser ร  la place la valeur dรฉfinie.</b> - Always on Lateral - Toujours en latรฉral + Force Torque Controller + Contrรดleur de couple de force - openpilot's steering control stays active even when the brake or gas pedals are pressed.<br><br>Deactivation only occurs with the <b>Cruise Control</b> button. - Le contrรดle de direction d'openpilot reste actif mรชme lorsque les pรฉdales de frein ou d'accรฉlรฉrateur sont enfoncรฉes.<br><br>La dรฉsactivation ne se produit qu'avec le bouton <b>Cruise Control</b>. + <b>Use torque-based steering control instead of angle-based control for smoother lane keeping, especially in curves.</b> + <b>Utilise un contrรดle de direction basรฉ sur le couple plutรดt que sur lโ€™angle pour un maintien de voie plus fluide, surtout dans les virages.</b> + + + Always On Lateral + Latรฉral toujours actif + + + <b>openpilot's steering remains active even when the accelerator or brake pedals are pressed.</b> + <b>La direction dโ€™openpilot reste active mรชme lorsque les pรฉdales dโ€™accรฉlรฉrateur ou de frein sont enfoncรฉes.</b> Enable With Cruise Control - Activer avec le rรฉgulateur de vitesse + Activer avec le rรฉgulateur de vitesse - Allow <b>Always on Lateral</b> to be active whenever <b>Cruise Control</b> is active, bypassing the need to enable openpilot first. - Autoriser <b>Always on Lateral</b> ร  รชtre actif chaque fois que le <b>Cruise Control</b> est actif, en contournant la nรฉcessitรฉ d'activer openpilot d'abord. + <b>Enable "Always On Lateral" whenever "Cruise Control" is on, even when openpilot is not engaged.</b> + <b>Activer ยซ Always On Lateral ยป lorsque ยซ Cruise Control ยป est activรฉ, mรชme quand openpilot nโ€™est pas engagรฉ.</b> - Enable With LKAS Button - Activer avec le bouton LKAS + Enable With LKAS + Activer avec LKAS - Allow <b>Always on Lateral</b> to be active whenever <b>LKAS</b> is active, bypassing the need to enable openpilot first. - Autoriser <b>Always on Lateral</b> ร  รชtre actif chaque fois que <b>LKAS</b> est actif, en contournant la nรฉcessitรฉ d'activer openpilot d'abord. + <b>Enable "Always On Lateral" whenever "LKAS" is on, even when openpilot is not engaged.</b> + <b>Activer ยซ Always On Lateral ยป chaque fois que ยซ LKAS ยป est activรฉ, mรชme lorsque openpilot nโ€™est pas engagรฉ.</b> - Pause on Brake Below - Pause sur le frein ci-dessous + Pause on Brake Press Below + Pause lors de lโ€™appui sur le frein en dessous - Temporarily pause <b>Always on Lateral</b> below the set speed when braking. - Suspendre temporairement <b>Always on Lateral</b> en dessous de la vitesse dรฉfinie lors du freinage. + <b>Pause "Always On Lateral" below the set speed while the brake pedal is pressed.</b> + <b>Met en pause ยซ Always On Lateral ยป en dessous de la vitesse rรฉglรฉe lorsque la pรฉdale de frein est enfoncรฉe.</b> Lane Changes - Changements de voie + Changements de voie - Customize how openpilot performs lane changes. - Personnalisez la faรงon dont openpilot effectue les changements de voie. + <b>Allow openpilot to change lanes.</b> + <b>Autorisez openpilot ร  changer de voie.</b> Automatic Lane Changes - Changements de voie automatiques + Changements de voie automatiques - Change lanes automatically when the turn signal is on. No steering input needed! - Changer de voie automatiquement lorsque le clignotant est activรฉ. Aucun mouvement de volant nรฉcessaire ! + <b>When the turn signal is on, openpilot will automatically change lanes.</b> No steering-wheel nudge required! + <b>Lorsque le clignotant est activรฉ, openpilot changera automatiquement de voie.</b> Pas besoin de toucher le volantย ! Lane Change Delay - Dรฉlai de changement de voie + Dรฉlai de changement de voie - Delay automatic lane changes by the set amount of time. - Retarder les changements de voie automatiques de la durรฉe dรฉfinie. + <b>Delay between turn signal activation and the start of an automatic lane change.</b> + <b>Dรฉlai entre lโ€™activation du clignotant et le dรฉbut dโ€™un changement de voie automatique.</b> Minimum Lane Change Speed - Vitesse minimale de changement de voie + Vitesse minimale de changement de voie - Minimum speed required for openpilot to perform a lane change. - Vitesse minimale requise pour qu'OpenPilot effectue un changement de voie. + <b>Lowest speed at which openpilot will change lanes.</b> + <b>Vitesse minimale ร  laquelle openpilot changera de voie.</b> Minimum Lane Width - Largeur minimale de voie + Largeur minimale de voie - openpilot won't initiate a lane change into a lane narrower than this width. - openpilot ne lancera pas un changement de voie vers une voie plus รฉtroite que cette largeur. + <b>Prevent automatic lane changes into lanes narrower than the set width.</b> + <b>Empรชche les changements de voie automatiques vers des voies plus รฉtroites que la largeur dรฉfinie.</b> One Lane Change Per Signal - Un changement de voie par signal + Un changement de voie par clignotant - Limit lane changes to one per turn signal activation. - Limitez les changements de voie ร  un par activation du clignotant. + <b>Limit automatic lane changes to one per turn-signal activation.</b> + <b>Limiter les changements de voie automatiques ร  un par activation du clignotant.</b> Lateral Tuning - Rรฉglage latรฉral + Rรฉglage latรฉral - Settings for fine-tuning openpilot's lateral controls. - Paramรจtres pour le rรฉglage fin des contrรดles latรฉraux d'openpilot. + <b>Miscellaneous steering control changes</b> to fine-tune how openpilot drives. + <b>Modifications diverses du contrรดle de direction</b> pour affiner la conduite dโ€™openpilot. Force Turn Desires Below Lane Change Speed - Forcer les dรฉsirs de changement de voie en dessous de la vitesse de changement de voie. + Forcer les intentions de virage en dessous de la vitesse de changement de voie - Force turn desires below the minimum lane change speed to improve turning accuracy. - Forcer les dรฉsirs de virage en dessous de la vitesse minimale de changement de voie pour amรฉliorer la prรฉcision du virage. - - - Neural Network Feedforward (NNFF) - Propagation avant du rรฉseau de neurones (NNFF) - - - Use <b>Twilsoncoโ€™s</b> <b>Neural Network FeedForward</b> model for smoother, model-based steering trained on your vehicle's data. - Utilisez le modรจle <b>Neural Network FeedForward</b> de <b>Twilsonco</b> pour une direction plus fluide, basรฉe sur un modรจle entraรฎnรฉ avec les donnรฉes de votre vรฉhicule. - - - Smooth Curve Handling - Gestion des courbes lisses - - - Use <b>Twilsoncoโ€™s</b> torque-based adjustments to smooth out steering during curves. - Utilisez les ajustements basรฉs sur le couple de <b>Twilsonco</b> pour adoucir la direction dans les virages. + <b>While driving below the minimum lane change speed with an active turn signal, instruct openpilot to turn left/right.</b> + <b>En roulant en dessous de la vitesse minimale de changement de voie avec un clignotant activรฉ, demandez ร  openpilot de tourner ร  gauche/droite.</b> Quality of Life - Qualitรฉ de vie + Qualitรฉ de vie - Miscellaneous features to improve the steering experience. - Fonctionnalitรฉs diverses pour amรฉliorer l'expรฉrience de conduite. + <b>Steering control changes to fine-tune how openpilot drives.</b> + <b>Modifications du contrรดle de direction pour affiner la conduite dโ€™openpilot.</b> Pause Steering Below - Pause direction en dessous + Suspendre la direction en dessous - Temporarily pause steering control below the set speed. - Suspendre temporairement le contrรดle de direction en dessous de la vitesse dรฉfinie. + <b>Pause steering below the set speed.</b> + <b>Mettre en pause la direction en dessous de la vitesse rรฉglรฉe.</b> Instant - Instantanรฉ + Instantanรฉ second - deuxiรจme + seconde seconds - secondes - - - Are you sure you want to completely reset your <b>Actuator Delay</b>? - รŠtes-vous sรปr de vouloir rรฉinitialiser complรจtement votre <b>Dรฉlai d'Actionneur</b> ? - - - Are you sure you want to completely reset your <b>Friction</b>? - รŠtes-vous sรปr de vouloir rรฉinitialiser complรจtement votre <b>Friction</b> ? - - - Are you sure you want to completely reset your <b>Kp Factor</b>? - รŠtes-vous sรปr de vouloir rรฉinitialiser complรจtement votre <b>facteur Kp</b> ? - - - Are you sure you want to completely reset your <b>Lateral Accel</b>? - รŠtes-vous sรปr de vouloir rรฉinitialiser complรจtement votre <b>Lateral Accel</b> ? - - - Are you sure you want to completely reset your <b>Steer Ratio</b>? - รŠtes-vous sรปr de vouloir rรฉinitialiser complรจtement votre <b>rapport de direction</b> ? - - - Off - Dรฉsactivรฉ - - - foot - pied - - - feet - pieds - - - mph - mph - - - meter - mรจtre - - - meters - mรจtres - - - km/h - km/h + secondes Turn Signal Only - Clignotant uniquement + Clignotant uniquement + + + Reset <b>Actuator Delay</b> to its default value? + Rรฉinitialiser la valeur par dรฉfaut de <b>Actuator Delay</b>ย ? + + + Reset <b>Friction</b> to its default value? + Rรฉinitialiser la valeur par dรฉfaut de <b>Friction</b>ย ? + + + Reset <b>Kp Factor</b> to its default value? + Rรฉinitialiser le <b>facteur Kp</b> ร  sa valeur par dรฉfautย ? + + + Reset <b>Lateral Accel</b> to its default value? + Rรฉinitialiser <b>Lateral Accel</b> ร  sa valeur par dรฉfautย ? + + + Reset <b>Steer Ratio</b> to its default value? + Rรฉinitialiser le <b>Steer Ratio</b> ร  sa valeur par dรฉfautย ? + + + Lateral Accel (Default: %1) + Accรฉlรฉration latรฉrale (par dรฉfautย : %1) + + + Off + Dรฉsactivรฉ + + + foot + pied + + + feet + pieds + + + mph + mph + + + meter + mรจtre + + + meters + mรจtres + + + km/h + km/h + + + Neural Network Feedforward (NNFF) + Propagation avant du rรฉseau neuronal (NNFF) + + + <b>Twilsonco's "Neural Network FeedForward" model controller for smoother, model-based steering trained on your vehicle's data.</b> + <b>Contrรดleur de modรจle ยซ Neural Network FeedForward ยป de Twilsonco pour une direction plus fluide, basรฉe sur le modรจle et entraรฎnรฉe sur les donnรฉes de votre vรฉhicule.</b> + + + Smooth Curve Handling + Gestion fluide des virages + + + <b>Twilsonco's torque-based adjustments to smoothen out steering in curves.</b> + <b>Ajustements basรฉs sur le couple de Twilsonco pour adoucir la direction dans les virages.</b> FrogPilotLongitudinalPanel - - Conditional Experimental Mode - Mode expรฉrimental conditionnel - - - Automatically switch to <b>Experimental Mode</b> when set conditions are met. - Basculer automatiquement en <b>Mode Expรฉrimental</b> lorsque les conditions dรฉfinies sont remplies. - - - Below - Ci-dessous - - - Switch to <b>Experimental Mode</b> when driving below this speed. - Passez en <b>Mode Expรฉrimental</b> lorsque vous conduisez en dessous de cette vitesse. - - - Curve Detected Ahead - Virage dรฉtectรฉ devant - - - Switch to <b>Experimental Mode</b> when a curve is detected ahead. Useful for letting the model choose the appropriate speed for the curve. - Passez en <b>Mode Expรฉrimental</b> lorsqu'une courbe est dรฉtectรฉe devant. Utile pour laisser le modรจle choisir la vitesse appropriรฉe pour la courbe. - - - Lead Detected Ahead - Plomb dรฉtectรฉ devant - - - Switch to <b>Experimental Mode</b> when a slower or stopped vehicle is detected ahead. Can improve braking smoothness and reliability on some vehicles. - Passez en <b>Mode Expรฉrimental</b> lorsqu'un vรฉhicule plus lent ou arrรชtรฉ est dรฉtectรฉ devant. Peut amรฉliorer la douceur et la fiabilitรฉ du freinage sur certains vรฉhicules. - - - Navigation Data - Donnรฉes de navigation - - - Switch to <b>Experimental Mode</b> when approaching intersections or turns on the active route while using <b>Navigate on openpilot (NOO)</b>. Useful for letting the model choose the appropriate speed for upcoming navigation maneuvers. - Passez en <b>Mode Expรฉrimental</b> lorsque vous approchez des intersections ou des virages sur l'itinรฉraire actif en utilisant <b>Navigate on openpilot (NOO)</b>. Utile pour laisser le modรจle choisir la vitesse appropriรฉe pour les manล“uvres de navigation ร  venir. - - - openpilot Wants to Stop In - openpilot veut s'arrรชter - - - Switch to <b>Experimental Mode</b> when openpilot wants to stop within the set amount of time. This is typically triggered by the driving model "detecting" a red light or stop sign. - Passez en <b>Mode Expรฉrimental</b> lorsque openpilot souhaite s'arrรชter dans le dรฉlai imparti. Cela est gรฉnรฉralement dรฉclenchรฉ par le modรจle de conduite "dรฉtectant" un feu rouge ou un panneau stop. - - - Turn Signal Below - Clignotant en dessous - - - Switch to <b>Experimental Mode</b> when using a turn signal below the set speed. Useful for letting the model choose the appropriate speed for upcoming left or right turns. - Passez en <b>Mode Expรฉrimental</b> lorsque vous utilisez un clignotant en dessous de la vitesse dรฉfinie. Utile pour laisser le modรจle choisir la vitesse appropriรฉe pour les virages ร  gauche ou ร  droite ร  venir. - - - Status Widget - Widget de statut - - - Show the <b>Conditional Experimental Mode</b> status on the driving screen. - Afficher le statut du <b>Mode Expรฉrimental Conditionnel</b> sur l'รฉcran de conduite. - - - Show <b>Curve Speed Control</b>'s desired speed on the driving screen. - Afficher la vitesse souhaitรฉe du <b>contrรดle de vitesse en courbe</b> sur l'รฉcran de conduite. - - - Customize Driving Personalities - Personnaliser les personnalitรฉs de conduite - - - Customize the personality profiles to your driving style. - Personnalisez les profils de personnalitรฉ selon votre style de conduite. - - - Traffic Personality - Personnalitรฉ du trafic - - - Customize the <b>Traffic</b> personality profile. Tailored for navigating through traffic. - Personnalisez le profil de personnalitรฉ <b>Traffic</b>. Adaptรฉ pour naviguer dans la circulation. - - - Following Distance - Distance de sรฉcuritรฉ - - - The minimum following distance while in <b>Traffic Mode</b>. openpilot will dynamically adjust between this value and the value in the <b>Aggressive</b> profile based on your current speed. - La distance minimale de suivi en <b>Mode Trafic</b>. openpilot s'ajustera dynamiquement entre cette valeur et celle du profil <b>Agressif</b> en fonction de votre vitesse actuelle. - - - Acceleration Sensitivity - Sensibilitรฉ ร  l'accรฉlรฉration - - - How sensitive openpilot is to changes in acceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - La sensibilitรฉ d'openpilot aux changements d'accรฉlรฉration en <b>Mode Trafic</b>. Des valeurs plus รฉlevรฉes entraรฎnent une accรฉlรฉration plus douce et plus progressive, tandis que des valeurs plus basses permettent des changements plus rapides et plus rรฉactifs qui peuvent sembler brusques. - - - Deceleration Sensitivity - Sensibilitรฉ ร  la dรฉcรฉlรฉration - - - How sensitive openpilot is to changes in deceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - La sensibilitรฉ d'openpilot aux changements de dรฉcรฉlรฉration en <b>Mode Trafic</b>. Des valeurs plus รฉlevรฉes entraรฎnent une dรฉcรฉlรฉration plus douce et plus progressive, tandis que des valeurs plus basses permettent des changements plus rapides et plus rรฉactifs qui peuvent sembler brusques. - - - Safety Distance Sensitivity - Sensibilitรฉ ร  la distance de sรฉcuritรฉ - - - How cautious openpilot is around other vehicles or obstacles while in <b>Traffic Mode</b>. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - ร€ quel point openpilot est prudent autour des autres vรฉhicules ou obstacles en <b>Mode Trafic</b>. Des valeurs plus รฉlevรฉes augmentent les distances de suivi et privilรฉgient la sรฉcuritรฉ, conduisant ร  une conduite plus prudente, tandis que des valeurs plus basses permettent un suivi plus rapprochรฉ mais peuvent rรฉduire le temps de rรฉaction. - - - Speed Increase Response - Rรฉponse ร  l'augmentation de la vitesse - - - How quickly openpilot increases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - La rapiditรฉ avec laquelle openpilot augmente la vitesse en <b>Mode Trafic</b>. Des valeurs plus รฉlevรฉes assurent des changements de vitesse plus doux et plus progressifs lors de l'accรฉlรฉration, tandis que des valeurs plus basses permettent des changements plus rapides et plus rรฉactifs qui peuvent sembler brusques. - - - Speed Decrease Response - Rรฉponse ร  la diminution de vitesse - - - How quickly openpilot decreases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - La rapiditรฉ avec laquelle openpilot rรฉduit la vitesse en <b>mode circulation</b>. Des valeurs plus รฉlevรฉes garantissent des changements de vitesse plus doux et plus progressifs lors du ralentissement, tandis que des valeurs plus basses permettent des changements plus rapides et plus rรฉactifs qui peuvent sembler brusques. - - - Reset Settings - Rรฉinitialiser les paramรจtres - - - Reset <b>Traffic Mode</b> settings to default values. - Rรฉinitialiser les paramรจtres du <b>Mode Trafic</b> aux valeurs par dรฉfaut. - - - Aggressive Personality - Personnalitรฉ agressive - - - Customize the <b>Aggressive</b> personality profile. Designed for a more assertive driving style. - Personnalisez le profil de personnalitรฉ <b>Agressif</b>. Conรงu pour un style de conduite plus affirmรฉ. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Aggressive</b> personality profile.<br><br>Default: 1.25 seconds. - Combien de secondes openpilot suivra-t-il les vรฉhicules de tรชte en utilisant le profil de personnalitรฉ <b>Aggressive</b>.<br><br>Par dรฉfaut : 1,25 secondes. - - - How sensitive openpilot is to changes in acceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - La sensibilitรฉ d'openpilot aux changements d'accรฉlรฉration lors de l'utilisation du profil de personnalitรฉ <b>Aggressive</b>. Des valeurs plus รฉlevรฉes entraรฎnent une accรฉlรฉration plus douce et plus progressive, tandis que des valeurs plus basses permettent des changements plus rapides et plus rรฉactifs qui peuvent sembler brusques. - - - How sensitive openpilot is to changes in deceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - La sensibilitรฉ d'openpilot aux changements de dรฉcรฉlรฉration lors de l'utilisation du profil de personnalitรฉ <b>Aggressive</b>. Des valeurs plus รฉlevรฉes entraรฎnent une dรฉcรฉlรฉration plus douce et plus progressive, tandis que des valeurs plus basses permettent des changements plus rapides et plus rรฉactifs qui peuvent sembler brusques. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Aggressive</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - ร€ quel point openpilot est prudent autour des autres vรฉhicules ou obstacles lorsqu'il utilise le profil de personnalitรฉ <b>Aggressive</b>. Des valeurs plus รฉlevรฉes augmentent les distances de suivi et privilรฉgient la sรฉcuritรฉ, conduisant ร  une conduite plus prudente, tandis que des valeurs plus basses permettent un suivi plus rapprochรฉ mais peuvent rรฉduire le temps de rรฉaction. - - - How quickly openpilot increases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - ร€ quelle vitesse openpilot augmente la vitesse lorsqu'il utilise le profil de personnalitรฉ <b>Aggressive</b>. Des valeurs plus รฉlevรฉes garantissent des changements de vitesse plus doux et plus progressifs lors de l'accรฉlรฉration, tandis que des valeurs plus basses permettent des changements plus rapides et plus rรฉactifs qui peuvent sembler brusques. - - - How quickly openpilot decreases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - La rapiditรฉ avec laquelle openpilot rรฉduit la vitesse en utilisant le profil de personnalitรฉ <b>Aggressive</b>. Des valeurs plus รฉlevรฉes garantissent des changements de vitesse plus doux et plus progressifs lors du ralentissement, tandis que des valeurs plus basses permettent des changements plus rapides et plus rรฉactifs qui peuvent sembler brusques. - - - Reset the <b>Aggressive</b> personality profile settings to default values. - Rรฉinitialiser les paramรจtres du profil de personnalitรฉ <b>Agressif</b> aux valeurs par dรฉfaut. - - - Standard Personality - Personnalitรฉ standard - - - Customize the <b>Standard</b> personality profile. Designed for a balanced driving style. - Personnalisez le profil de personnalitรฉ <b>Standard</b>. Conรงu pour un style de conduite รฉquilibrรฉ. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Standard</b> personality profile.<br><br>Default: 1.45 seconds. - Combien de secondes openpilot suivra-t-il les vรฉhicules de tรชte en utilisant le profil de personnalitรฉ <b>Standard</b>.<br><br>Par dรฉfaut : 1,45 secondes. - - - How sensitive openpilot is to changes in acceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - La sensibilitรฉ d'openpilot aux changements d'accรฉlรฉration lors de l'utilisation du profil de personnalitรฉ <b>Standard</b>. Des valeurs plus รฉlevรฉes entraรฎnent une accรฉlรฉration plus douce et plus progressive, tandis que des valeurs plus basses permettent des changements plus rapides et plus rรฉactifs qui peuvent sembler brusques. - - - How sensitive openpilot is to changes in deceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - La sensibilitรฉ d'openpilot aux changements de dรฉcรฉlรฉration lors de l'utilisation du profil de personnalitรฉ <b>Standard</b>. Des valeurs plus รฉlevรฉes entraรฎnent une dรฉcรฉlรฉration plus douce et plus progressive, tandis que des valeurs plus basses permettent des changements plus rapides et plus rรฉactifs qui peuvent sembler brusques. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Standard</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - ร€ quel point openpilot est prudent autour des autres vรฉhicules ou obstacles lorsqu'il utilise le profil de personnalitรฉ <b>Standard</b>. Des valeurs plus รฉlevรฉes augmentent les distances de suivi et privilรฉgient la sรฉcuritรฉ, conduisant ร  une conduite plus prudente, tandis que des valeurs plus faibles permettent un suivi plus rapprochรฉ mais peuvent rรฉduire le temps de rรฉaction. - - - How quickly openpilot increases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - La rapiditรฉ avec laquelle openpilot augmente la vitesse en utilisant le profil de personnalitรฉ <b>Standard</b>. Des valeurs plus รฉlevรฉes garantissent des changements de vitesse plus doux et plus progressifs lors de l'accรฉlรฉration, tandis que des valeurs plus basses permettent des changements plus rapides et plus rรฉactifs qui peuvent sembler brusques. - - - How quickly openpilot decreases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - ร€ quelle vitesse openpilot rรฉduit-il la vitesse lorsqu'il utilise le profil de personnalitรฉ <b>Standard</b>. Des valeurs plus รฉlevรฉes garantissent des changements de vitesse plus doux et plus progressifs lors du ralentissement, tandis que des valeurs plus basses permettent des changements plus rapides et plus rรฉactifs qui peuvent sembler brusques. - - - Reset the <b>Standard</b> personality profile settings to default values. - Rรฉinitialiser les paramรจtres du profil de personnalitรฉ <b>Standard</b> aux valeurs par dรฉfaut. - - - Relaxed Personality - Personnalitรฉ dรฉtendue - - - Customize the <b>Relaxed</b> personality profile. Designed for a more laid-back driving style. - Personnalisez le profil de personnalitรฉ <b>Dรฉtendu</b>. Conรงu pour un style de conduite plus dรฉcontractรฉ. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Relaxed</b> personality profile.<br><br>Default: 1.75 seconds. - Combien de secondes openpilot suivra-t-il les vรฉhicules de tรชte en utilisant le profil de personnalitรฉ <b>Relaxed</b>.<br><br>Par dรฉfaut : 1,75 secondes. - - - How sensitive openpilot is to changes in acceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - La sensibilitรฉ d'openpilot aux changements d'accรฉlรฉration lors de l'utilisation du profil de personnalitรฉ <b>Relaxed</b>. Des valeurs plus รฉlevรฉes entraรฎnent une accรฉlรฉration plus douce et plus progressive, tandis que des valeurs plus basses permettent des changements plus rapides et plus rรฉactifs qui peuvent sembler brusques. - - - How sensitive openpilot is to changes in deceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - La sensibilitรฉ d'openpilot aux changements de dรฉcรฉlรฉration lors de l'utilisation du profil de personnalitรฉ <b>Relaxed</b>. Des valeurs plus รฉlevรฉes entraรฎnent une dรฉcรฉlรฉration plus douce et plus progressive, tandis que des valeurs plus basses permettent des changements plus rapides et plus rรฉactifs qui peuvent sembler brusques. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Relaxed</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - ร€ quel point openpilot est prudent autour des autres vรฉhicules ou obstacles lorsqu'il utilise le profil de personnalitรฉ <b>Relaxed</b>. Des valeurs plus รฉlevรฉes augmentent les distances de suivi et privilรฉgient la sรฉcuritรฉ, conduisant ร  une conduite plus prudente, tandis que des valeurs plus basses permettent un suivi plus rapprochรฉ mais peuvent rรฉduire le temps de rรฉaction. - - - How quickly openpilot increases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - La rapiditรฉ avec laquelle openpilot augmente la vitesse en utilisant le profil de personnalitรฉ <b>Relaxed</b>. Des valeurs plus รฉlevรฉes assurent des changements de vitesse plus doux et plus progressifs lors de l'accรฉlรฉration, tandis que des valeurs plus basses permettent des changements plus rapides et plus rรฉactifs qui peuvent sembler brusques. - - - How quickly openpilot decreases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - La rapiditรฉ avec laquelle openpilot rรฉduit la vitesse en utilisant le profil de personnalitรฉ <b>Relaxed</b>. Des valeurs plus รฉlevรฉes garantissent des changements de vitesse plus doux et plus progressifs lors du ralentissement, tandis que des valeurs plus basses permettent des changements plus rapides et plus rรฉactifs qui peuvent sembler brusques. - - - Reset the <b>Relaxed</b> personality profile settings to default values. - Rรฉinitialiser les paramรจtres du profil de personnalitรฉ <b>Relaxed</b> aux valeurs par dรฉfaut. - - - Longitudinal Tuning - Rรฉglage longitudinal - - - Settings that control how openpilot manages speed and acceleration. - Paramรจtres qui contrรดlent comment openpilot gรจre la vitesse et l'accรฉlรฉration. - - - Acceleration Profile - Profil d'accรฉlรฉration - - - Enable either a sporty or eco-friendly acceleration profile. <b>Sport+</b> aims to make openpilot accelerate as fast as possible! - Activez soit un profil d'accรฉlรฉration sportif, soit un profil รฉcologique. <b>Sport+</b> vise ร  faire accรฉlรฉrer openpilot aussi vite que possible ! - - - Deceleration Profile - Profil de dรฉcรฉlรฉration - - - Enable either a sporty or eco-friendly deceleration profile. - Activez soit un profil de dรฉcรฉlรฉration sportif, soit un profil รฉcologique. - - - Human-Like Acceleration - Accรฉlรฉration semblable ร  celle d'un humain - - - Use the lead vehicle's acceleration rate when at a takeoff and ramp off the acceleration rate when approaching the maximum set speed for a more "human-like" driving experience. - Utilisez le taux d'accรฉlรฉration du vรฉhicule de tรชte lors d'un dรฉcollage et rรฉduisez le taux d'accรฉlรฉration en approchant de la vitesse maximale dรฉfinie pour une expรฉrience de conduite plus "humaine". - - - Human-Like Approach Behind Leads - Approche Humaine Derriรจre les Leads - - - Dynamically adjust the desired following distance when approaching slower or stopped vehicles for a more "human-like" driving experience. - Ajustez dynamiquement la distance de suivi souhaitรฉe lorsque vous approchez de vรฉhicules plus lents ou arrรชtรฉs pour une expรฉrience de conduite plus "humaine". - - - Lead Detection Confidence - Confiance de dรฉtection de plomb - - - How sensitive openpilot is to detecting vehicles ahead. A lower value can help detect vehicles sooner and from farther away, but increases the chance openpilot mistakes other objects for vehicles. - La sensibilitรฉ d'openpilot ร  dรฉtecter les vรฉhicules devant. Une valeur plus basse peut aider ร  dรฉtecter les vรฉhicules plus tรดt et de plus loin, mais augmente le risque qu'openpilot confonde d'autres objets avec des vรฉhicules. - - - Maximum Acceleration Rate - Taux d'accรฉlรฉration maximal - - - Set a cap on how fast openpilot can accelerate. - Fixez une limite ร  la vitesse d'accรฉlรฉration d'openpilot. - - - "Taco Bell Run" Turn Speed Hack - Hack de vitesse de rotation "Taco Bell Run" - - - The turn speed hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to slow down when taking left/right turns for smoother turns. - Le hack de vitesse de virage du trajet "Taco Bell Run" de comma en 2022. Conรงu pour ralentir lors des virages ร  gauche/droite pour des virages plus fluides. - - - Quality of Life - Qualitรฉ de vie - - - Miscellaneous features to improve the acceleration and braking experience. - Caractรฉristiques diverses pour amรฉliorer l'expรฉrience d'accรฉlรฉration et de freinage. - - - Cruise Interval - Intervalle de croisiรจre - - - The interval used when changing the cruise control speed. - L'intervalle utilisรฉ lors du changement de la vitesse du rรฉgulateur de vitesse. - - - Cruise Interval (Long Press) - Intervalle de croisiรจre (Appui long) - - - The interval used when changing the cruise control speed while holding down the button for 0.5+ seconds. - L'intervalle utilisรฉ lors du changement de la vitesse du rรฉgulateur de vitesse en maintenant le bouton enfoncรฉ pendant plus de 0,5 seconde. - - - Force Keep openpilot in the Standstill State - Forcer le maintien d'openpilot dans l'รฉtat d'arrรชt complet - - - Keep openpilot in the standstill state until either the gas pedal or <b>resume</b> button is pressed. - Maintenez openpilot ร  l'arrรชt jusqu'ร  ce que la pรฉdale d'accรฉlรฉrateur ou le bouton <b>reprendre</b> soit enfoncรฉ. - - - Force Stop for "Detected" Stop Lights/Signs - Arrรชt forcรฉ pour les feux/panneaux d'arrรชt "dรฉtectรฉs" - - - Force a stop whenever openpilot <b>detects</b> a potential red light/stop sign to prevent it from running the red light/stop sign. - Forcer un arrรชt chaque fois qu'openpilot <b>dรฉtecte</b> un feu rouge/panneau stop potentiel pour รฉviter de le franchir. - - - Increase Stopped Distance - Augmenter la distance d'arrรชt - - - Increase the distance openpilot stops behind vehicles. - Augmenter la distance ร  laquelle openpilot s'arrรชte derriรจre les vรฉhicules. - - - Set Speed Offset - Dรฉfinir le dรฉcalage de vitesse - - - How much higher or lower the set speed should be compared to your current set speed. For example, if you prefer to drive 5 mph above the speed limit, this setting will automatically add that difference when you adjust your set speed. - De combien la vitesse rรฉglรฉe doit รชtre supรฉrieure ou infรฉrieure par rapport ร  votre vitesse actuelle. Par exemple, si vous prรฉfรฉrez conduire 5 mph au-dessus de la limite de vitesse, ce rรฉglage ajoutera automatiquement cette diffรฉrence lorsque vous ajustez votre vitesse rรฉglรฉe. - - - Map Accel/Decel to Gears - Mapper Accรฉlรฉration/Dรฉcรฉlรฉration aux Vitesses - - - Map the acceleration and deceleration profiles to your car's <b>Eco</b> or <b>Sport</b> gear modes. - Mappez les profils d'accรฉlรฉration et de dรฉcรฉlรฉration sur les modes de vitesse <b>Eco</b> ou <b>Sport</b> de votre voiture. - - - Reverse Cruise Increase - Augmentation de croisiรจre inversรฉe - - - Reverse the <b>long press</b> cruise increase feature to increase the max speed by 5 instead of 1 on short presses. - Inversez la fonction d'augmentation de croisiรจre par <b>appui long</b> pour augmenter la vitesse maximale de 5 au lieu de 1 lors des appuis courts. - - - Speed Limit Controller - Contrรดleur de limite de vitesse - - - Limit openpilot's maximum driving speed based on data from downloaded maps, <b>Mapbox</b>, <b>Navigate on openpilot</b>, or the dashboard (supported vehicles: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - Limiter la vitesse de conduite maximale d'openpilot en fonction des donnรฉes des cartes tรฉlรฉchargรฉes, <b>Mapbox</b>, <b>Navigate on openpilot</b>, ou du tableau de bord (vรฉhicules pris en charge : <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - - - Fallback Speed - Vitesse de secours - - - The speed limit source when no speed limit data is available. - La source de la limite de vitesse lorsque les donnรฉes de limite de vitesse ne sont pas disponibles. - - - Override Speed - Dรฉpasser la vitesse - - - The speed openpilot uses after manually exceeding the posted speed limit.<br><br><b>- Set With Gas Pedal</b>: Uses the speed obtained while pressing the gas<br><b>- Max Set Speed</b>: Uses the cruise control set speed<br><br>Overrides clear upon disengagement. - La vitesse qu'openpilot utilise aprรจs avoir dรฉpassรฉ manuellement la limite de vitesse affichรฉe.<br><br><b>- Rรฉglรฉ avec la pรฉdale d'accรฉlรฉrateur</b> : Utilise la vitesse obtenue en appuyant sur l'accรฉlรฉrateur<br><b>- Vitesse maximale rรฉglรฉe</b> : Utilise la vitesse rรฉglรฉe du rรฉgulateur de vitesse<br><br>Les dรฉrogations sont annulรฉes lors du dรฉsengagement. - - - Miscellaneous features to improve the <b>Speed Limit Controller</b> experience. - Fonctionnalitรฉs diverses pour amรฉliorer l'expรฉrience du <b>Contrรดleur de Limite de Vitesse</b>. - - - Confirm New Speed Limits - Confirmer les nouvelles limites de vitesse - - - Require confirmation before applying new speed limits. To accept, use the flashing widget on the driving screen or press the <b>Cruise Increase</b> button. To deny, press the <b>Cruise Decrease</b> button or simply ignore the prompt for 30 seconds. - Exiger une confirmation avant d'appliquer de nouvelles limites de vitesse. Pour accepter, utilisez le widget clignotant sur l'รฉcran de conduite ou appuyez sur le bouton <b>Augmenter le rรฉgulateur</b>. Pour refuser, appuyez sur le bouton <b>Diminuer le rรฉgulateur</b> ou ignorez simplement l'invite pendant 30 secondes. - - - Force MPH Readings from Dashboard - Forcer les lectures MPH depuis le tableau de bord - - - Force dashboard speed limit readings to be in mph. - Forcer les lectures de la limite de vitesse du tableau de bord ร  รชtre en mph. - - - Higher Limit Lookahead Time - Temps de prรฉvision de la limite supรฉrieure - - - How far ahead openpilot anticipates upcoming higher speed limits from the downloaded map data. - ร€ quelle distance openpilot anticipe-t-il les limites de vitesse plus รฉlevรฉes ร  venir ร  partir des donnรฉes de carte tรฉlรฉchargรฉes. - - - Lower Limit Lookahead Time - Temps de prรฉvision de la limite infรฉrieure - - - How far ahead openpilot anticipates upcoming lower speed limits from the downloaded map data. - Jusqu'ร  quelle distance openpilot anticipe-t-il les limitations de vitesse infรฉrieures ร  venir ร  partir des donnรฉes de carte tรฉlรฉchargรฉes. - - - Match Speed Limit on Engage - Faire correspondre la limite de vitesse sur Engage - - - Automatically set cruise control speed to match the current speed limit when first enabling openpilot. - Rรฉgler automatiquement la vitesse du rรฉgulateur de vitesse pour correspondre ร  la limite de vitesse actuelle lors de la premiรจre activation d'openpilot. - - - Use Mapbox as Fallback - Utiliser Mapbox comme solution de secours - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - Utilisez les donnรฉes de limitation de vitesse de <b>Mapbox</b> lorsque aucune autre source n'est disponible. - - - Speed Limit Source Priority - Prioritรฉ de la source de la limite de vitesse - - - Define the priority order for speed limit sources (<b>Dashboard</b>, <b>Map Data</b>, <b>Navigation</b>). Higher-priority sources override lower ones when multiple limits are detected. - Dรฉfinir l'ordre de prioritรฉ pour les sources de limitation de vitesse (<b>Tableau de bord</b>, <b>Donnรฉes cartographiques</b>, <b>Navigation</b>). Les sources de plus haute prioritรฉ remplacent les sources de moindre prioritรฉ lorsqu'une limite multiple est dรฉtectรฉe. - - - Speed Limit Offsets - Dรฉcalages de limite de vitesse - - - Offsets relative to the posted speed limit for a more "human-like" driving experience. - Dรฉcalages relatifs ร  la limite de vitesse affichรฉe pour une expรฉrience de conduite plus "humaine". - - - Target speed offset applied for posted limits between 0 and 24 mph. - Dรฉcalage de vitesse cible appliquรฉ pour les limites affichรฉes entre 0 et 24 mph. - - - Target speed offset applied for posted limits between 25 and 34 mph. - Dรฉcalage de vitesse cible appliquรฉ pour les limites affichรฉes entre 25 et 34 mph. - - - Target speed offset applied for posted limits between 35 and 44 mph. - Dรฉcalage de vitesse cible appliquรฉ pour les limites affichรฉes entre 35 et 44 mph. - - - Target speed offset applied for posted limits between 45 and 54 mph. - Dรฉcalage de vitesse cible appliquรฉ pour les limites affichรฉes entre 45 et 54 mph. - - - Target speed offset applied for posted limits between 55 and 64 mph. - Dรฉcalage de vitesse cible appliquรฉ pour les limites affichรฉes entre 55 et 64 mph. - - - Target speed offset applied for posted limits between 65 and 74 mph. - Dรฉcalage de vitesse cible appliquรฉ pour les limites affichรฉes entre 65 et 74 mph. - - - Target speed offset applied for posted limits between 75 and 99 mph. - Dรฉcalage de vitesse cible appliquรฉ pour les limites affichรฉes entre 75 et 99 mph. - - - Visual Settings - Paramรจtres visuels - - - Visual features to improve the <b>Speed Limit Controller</b> experience. - Fonctionnalitรฉs visuelles pour amรฉliorer l'expรฉrience du <b>Contrรดleur de Limite de Vitesse</b>. - - - Show Speed Limit Offset - Afficher le dรฉcalage de la limite de vitesse - - - Display the speed limit offset separately on the driving screen. - Afficher le dรฉcalage de la limite de vitesse sรฉparรฉment sur l'รฉcran de conduite. - - - Show Speed Limit Sources - Afficher les sources des limites de vitesse - - - Display the speed limit sources on the driving screen. - Afficher les sources des limites de vitesse sur l'รฉcran de conduite. - - - seconds - secondes - - - m/sยฒ - m/sยฒ - - - mph - mph - - - With Lead - Avec plomb - - - Switch to <b>Experimental Mode</b> when driving below this speed with a lead. - Passez en <b>Mode Expรฉrimental</b> lorsque vous conduisez en dessous de cette vitesse avec un guide. - - - Slower Lead - Conduite plus lente - - - Stopped Lead - Plomb arrรชtรฉ - - - Intersections - Intersections - - - Turns - Tours - - - Off - ร‰teint - - - second - deuxiรจme - - - RESET - Rร‰INITIALISER - - - Standard - Standard - - - Eco - ร‰co - - - Sport - Sport - - - Sport+ - Sport+ - - - feet - pieds - - - Acceleration - Accรฉlรฉration - - - Deceleration - Dรฉcรฉlรฉration - - - Set Speed - Dรฉfinir la vitesse - - - Experimental Mode - Mode expรฉrimental - - - Previous Limit - Limite prรฉcรฉdente - - - None - Aucun - - - Set With Gas Pedal - Rรฉglรฉ avec pรฉdale d'accรฉlรฉrateur - - - Max Set Speed - Vitesse maximale dรฉfinie - - - SELECT - SELECT - - - Dashboard - Tableau de bord - - - Map Data - Donnรฉes cartographiques - - - Navigation - Navigation - - - Highest - Le plus รฉlevรฉ - - - Lowest - Le plus bas - - - Select your primary priority - Sรฉlectionnez votre prioritรฉ principale - - - Select your secondary priority - Sรฉlectionnez votre prioritรฉ secondaire - - - Select your tertiary priority - Sรฉlectionnez votre prioritรฉ tertiaire - - - MANAGE - Gร‰RER - - - Lower Limits - Limites infรฉrieures - - - Higher Limits - Limites plus รฉlevรฉes - - - Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? - รŠtes-vous sรปr de vouloir rรฉinitialiser complรจtement vos paramรจtres pour le <b>Mode Trafic</b> ? - - - Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? - รŠtes-vous sรปr de vouloir rรฉinitialiser complรจtement vos paramรจtres pour la personnalitรฉ <b>Agressive</b> ? - - - Are you sure you want to completely reset your settings for the <b>Standard</b> personality? - รŠtes-vous sรปr de vouloir rรฉinitialiser complรจtement vos paramรจtres pour la personnalitรฉ <b>Standard</b> ? - - - Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? - รŠtes-vous sรปr de vouloir rรฉinitialiser complรจtement vos paramรจtres pour la personnalitรฉ <b>Relaxed</b> ? - - - foot - pied - - - meter - mรจtre - - - meters - mรจtres - - - km/h - km/h - - - Target speed offset applied for posted limits between 0 and 29 km/h. - Dรฉcalage de vitesse cible appliquรฉ pour les limites affichรฉes entre 0 et 29 km/h. - - - Target speed offset applied for posted limits between 30 and 49 km/h. - Dรฉcalage de vitesse cible appliquรฉ pour les limites affichรฉes entre 30 et 49 km/h. - - - Target speed offset applied for posted limits between 50 and 59 km/h. - Dรฉcalage de vitesse cible appliquรฉ pour les limites affichรฉes entre 50 et 59 km/h. - - - Target speed offset applied for posted limits between 60 and 79 km/h. - Dรฉcalage de vitesse cible appliquรฉ pour les limites affichรฉes entre 60 et 79 km/h. - - - Target speed offset applied for posted limits between 80 and 99 km/h. - Dรฉcalage de vitesse cible appliquรฉ pour les limites affichรฉes entre 80 et 99 km/h. - - - Target speed offset applied for posted limits between 100 and 119 km/h. - Dรฉcalage de vitesse cible appliquรฉ pour les limites affichรฉes entre 100 et 119 km/h. - - - Target speed offset applied for posted limits between 120 and 140 km/h. - Dรฉcalage de vitesse cible appliquรฉ pour les limites affichรฉes entre 120 et 140 km/h. - Advanced Longitudinal Tuning - Rรฉglage longitudinal avancรฉ + Rรฉglage longitudinal avancรฉ - Advanced settings for customizing how openpilot handles acceleration and braking. - Paramรจtres avancรฉs pour personnaliser la gestion de l'accรฉlรฉration et du freinage par openpilot. + <b>Advanced acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Modifications avancรฉes du contrรดle dโ€™accรฉlรฉration et de freinage</b> pour affiner la conduite dโ€™openpilot. Actuator Delay (Default: %1) - Dรฉlai de l'actionneur (Par dรฉfaut : %1) + Dรฉlai dโ€™actionneur (par dรฉfautย : %1) Actuator Delay - Dรฉlai de l'actionneur + Dรฉlai dโ€™actionneur - Delay before throttle or brake takes effect. Higher values smooth slow actuators but can feel laggy; lower values react quicker but may overshoot. - Dรฉlai avant que l'accรฉlรฉrateur ou le frein n'entre en action. Des valeurs plus รฉlevรฉes adoucissent les actionneurs lents mais peuvent sembler lentes ; des valeurs plus basses rรฉagissent plus rapidement mais peuvent dรฉpasser la cible. + <b>The time between openpilot's throttle or brake command and the vehicle's response.</b> Increase if the vehicle feels slow to react; decrease if it feels too eager or overshoots. + <b>Le dรฉlai entre la commande dโ€™accรฉlรฉration ou de freinage dโ€™openpilot et la rรฉponse du vรฉhicule.</b> Augmentez-le si le vรฉhicule rรฉagit lentement ; diminuez-le sโ€™il est trop vif ou dรฉpasse la cible.</final> Start Acceleration (Default: %1) - Dรฉmarrer l'accรฉlรฉration (Par dรฉfaut : %1) + Accรฉlรฉration de dรฉmarrage (Par dรฉfautย : %1) Start Acceleration - Dรฉmarrer l'accรฉlรฉration + Dรฉmarrer lโ€™accรฉlรฉration - Extra acceleration applied when pulling away from a stop. Increase for snappier launches at the cost of smoothness; decrease for gentler starts. - Accรฉlรฉration supplรฉmentaire appliquรฉe lors du dรฉmarrage ร  partir d'un arrรชt. Augmentez pour des lancements plus vifs au dรฉtriment de la douceur ; diminuez pour des dรฉparts plus doux. + <b>Extra acceleration applied when starting from a stop.</b> Increase for quicker takeoffs; decrease for smoother, gentler starts. + <b>Accรฉlรฉration supplรฉmentaire appliquรฉe lors dโ€™un dรฉpart arrรชtรฉ.</b> Augmentez pour des dรฉmarrages plus rapides ; diminuez pour des dรฉparts plus doux et plus progressifs. Start Speed (Default: %1) - Vitesse de dรฉmarrage (Par dรฉfaut : %1) + Vitesse de dรฉpart (par dรฉfautย : %1) Start Speed - Dรฉmarrer la vitesse + Vitesse de dรฉpart - Speed where openpilot begins to exit the stopped state. Higher values avoid creeping but may feel sluggish; lower values move sooner but risk creeping. - Vitesse ร  laquelle openpilot commence ร  sortir de l'รฉtat arrรชtรฉ. Des valeurs plus รฉlevรฉes รฉvitent le rampement mais peuvent sembler lentes ; des valeurs plus basses se dรฉplacent plus tรดt mais risquent de ramper. + <b>The speed at which openpilot exits the stopped state.</b> Increase to reduce creeping; decrease to move sooner after stopping. + <b>La vitesse ร  laquelle openpilot quitte lโ€™รฉtat dโ€™arrรชt.</b> Augmentez pour rรฉduire le creeping ; diminuez pour repartir plus tรดt aprรจs lโ€™arrรชt. Stop Acceleration (Default: %1) - Arrรชter l'accรฉlรฉration (Par dรฉfaut : %1) + Arrรชt de lโ€™accรฉlรฉration (Par dรฉfautย : %1) Stop Acceleration - Arrรชter l'accรฉlรฉration + Arrรชter lโ€™accรฉlรฉration - Brake force applied to hold the vehicle still. Larger values prevent creeping on hills but might jerk to a stop. Smaller values can feel smoother but may allow rolling. - Force de freinage appliquรฉe pour maintenir le vรฉhicule immobile. Des valeurs plus รฉlevรฉes empรชchent de glisser sur les pentes mais peuvent provoquer un arrรชt brusque. Des valeurs plus faibles peuvent sembler plus douces mais peuvent permettre de rouler. + <b>Brake force applied to hold the vehicle at a standstill.</b> Increase to prevent rolling on hills; decrease for smoother, softer stops. + <b>Force de freinage appliquรฉe pour maintenir le vรฉhicule ร  lโ€™arrรชt.</b> Augmentez pour รฉviter de reculer en cรดteโ€ฏ; diminuez pour des arrรชts plus doux et plus fluides. Stopping Rate (Default: %1) - Taux d'arrรชt (Par dรฉfaut : %1) + Taux dโ€™arrรชt (par dรฉfautย : %1) Stopping Rate - Taux d'arrรชt + Taux dโ€™arrรชt - How quickly braking ramps up when stopping. Faster rates shorten stopping distance but can be harsh; slower rates are smoother but need more room. - La rapiditรฉ avec laquelle le freinage s'intensifie lors de l'arrรชt. Des taux plus rapides raccourcissent la distance d'arrรชt mais peuvent รชtre brutaux ; des taux plus lents sont plus doux mais nรฉcessitent plus d'espace. + <b>How quickly braking ramps up when stopping.</b> Increase for shorter, firmer stops; decrease for smoother, longer stops. + <b>ร€ quelle vitesse le freinage sโ€™intensifie lors de lโ€™arrรชt.</b> Augmentez pour des arrรชts plus courts et plus fermesโ€ฏ; diminuez pour des arrรชts plus longs et plus doux. Stop Speed (Default: %1) - Arrรชter la vitesse (Par dรฉfaut : %1) + Vitesse dโ€™arrรชt (par dรฉfautย : %1) Stop Speed - Arrรชter la vitesse + Vitesse dโ€™arrรชt - Speed where openpilot beings to enter the stopped state. Higher values brake earlier for smoother stops but might stop too soon; lower values wait longer and can overshoot. - Vitesse ร  laquelle openpilot commence ร  entrer dans l'รฉtat d'arrรชt. Des valeurs plus รฉlevรฉes freinent plus tรดt pour des arrรชts plus doux mais peuvent s'arrรชter trop tรดt ; des valeurs plus basses attendent plus longtemps et peuvent dรฉpasser. + <b>The speed at which openpilot considers the vehicle stopped.</b> Increase to brake earlier and stop smoothly; decrease to wait longer but risk overshooting. + <b>La vitesse ร  laquelle openpilot considรจre le vรฉhicule ร  lโ€™arrรชt.</b> Augmentez pour freiner plus tรดt et vous arrรชter en douceur ; diminuez pour attendre plus longtemps mais risquer de dรฉpasser lโ€™arrรชt. + + + Conditional Experimental Mode + Mode expรฉrimental conditionnel + + + <b>Automatically switch to "Experimental Mode" when set conditions are met.</b> Allows the model to handle challenging situations with smarter decision making. + <b>Basculer automatiquement en ยซ Mode expรฉrimental ยป lorsque les conditions dรฉfinies sont remplies.</b> Permet au modรจle de gรฉrer des situations difficiles avec une prise de dรฉcision plus intelligente. + + + Below + Ci-dessous + + + <b>Switch to "Experimental Mode" when driving below this speed without a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>Passez en ยซย Mode expรฉrimentalย ยป lorsque vous roulez en dessous de cette vitesse sans vรฉhicule prรฉcรฉdent</b> pour aider openpilot ร  gรฉrer plus facilement les situations ร  basse vitesse. + + + Curve Detected Ahead + Virage dรฉtectรฉ devant + + + <b>Switch to "Experimental Mode" when a curve is detected</b> to allow the model to set an appropriate speed for the curve. + <b>Passer en ยซ Mode expรฉrimental ยป lorsquโ€™un virage est dรฉtectรฉ</b> pour permettre au modรจle de dรฉfinir une vitesse appropriรฉe pour le virage. + + + Lead Detected Ahead + Vรฉhicule dรฉtectรฉ devant + + + <b>Switch to "Experimental Mode" when a slower or stopped vehicle is detected.</b> Can make braking smoother and more reliable on some vehicles. + <b>Activez le ยซ Mode expรฉrimental ยป lorsquโ€™un vรฉhicule plus lent ou ร  lโ€™arrรชt est dรฉtectรฉ.</b> Peut rendre le freinage plus fluide et plus fiable sur certains vรฉhicules. + + + Navigation-Based + Basรฉ sur la navigation + + + <b>Switch to "Experimental Mode" when approaching intersections or turns on the active route</b> while using "Navigate on openpilot" (NOO) to allow the model to set an appropriate speed for upcoming maneuvers. + <b>Passez en ยซ Mode expรฉrimental ยป ร  lโ€™approche des intersections ou des virages sur lโ€™itinรฉraire actif</b> lorsque vous utilisez ยซ Navigate on openpilot ยป (NOO) afin de permettre au modรจle de dรฉfinir une vitesse appropriรฉe pour les manล“uvres ร  venir. + + + Predicted Stop In + Arrรชt prรฉdit dans + + + <b>Switch to "Experimental Mode" when openpilot predicts a stop within the set time.</b> This is usually triggered when the model "sees" a red light or stop sign ahead.<br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>Passer en ยซ Mode Expรฉrimental ยป lorsque openpilot prรฉvoit un arrรชt dans le dรฉlai dรฉfini.</b> Cela est gรฉnรฉralement dรฉclenchรฉ lorsque le modรจle ยซ voit ยป un feu rouge ou un panneau stop devant.<br><br><i><b>Avertissement</b> : openpilot ne dรฉtecte pas explicitement les feux de circulation ni les panneaux stop. En ยซ Mode Expรฉrimental ยป, openpilot prend des dรฉcisions de conduite de bout en bout ร  partir de lโ€™entrรฉe camรฉra, ce qui signifie quโ€™il peut sโ€™arrรชter mรชme sans raison รฉvidente.</i> + + + Turn Signal Below + Clignotant en dessous + + + <b>Switch to "Experimental Mode" when using a turn signal below the set speed</b> to allow the model to choose an appropriate speed for smoother left and right turns. + <b>Passez en ยซ Mode Expรฉrimental ยป lors de lโ€™utilisation dโ€™un clignotant en dessous de la vitesse rรฉglรฉe</b> pour permettre au modรจle de choisir une vitesse appropriรฉe pour des virages gauche et droite plus fluides. + + + Status Widget + Widget dโ€™รฉtat + + + <b>Show which condition triggered "Experimental Mode"</b> on the driving screen. + <b>Afficher quelle condition a dรฉclenchรฉ ยซ Mode expรฉrimental ยป</b> sur lโ€™รฉcran de conduite. + + + Curve Speed Controller + Contrรดleur de vitesse en courbe + + + <b>Automatically slow down for upcoming curves</b> using data learned from your driving style, adapting to curves as you would. + <b>Ralentissez automatiquement pour les virages ร  venir</b> en utilisant des donnรฉes apprises de votre style de conduite, en sโ€™adaptant aux virages comme vous le feriez. + + + Calibrated Lateral Acceleration + Accรฉlรฉration latรฉrale calibrรฉe + + + <b>The learned lateral acceleration from collected driving data.</b> This sets how fast openpilot will take curves. Higher values allow faster cornering; lower values slow the vehicle for gentler turns. + <b>Lโ€™accรฉlรฉration latรฉrale apprise ร  partir des donnรฉes de conduite collectรฉes.</b> Ceci dรฉfinit la vitesse ร  laquelle openpilot prendra les virages. Des valeurs plus รฉlevรฉes permettent de nรฉgocier les virages plus rapidementโ€ฏ; des valeurs plus faibles ralentissent le vรฉhicule pour des virages plus doux. + + + Calibration Progress + Progression de lโ€™รฉtalonnage + + + <b>How much curve data has been collected.</b> This is a progress meter; it is normal for the value to stay low and rarely reach 100%. + <b>Quantitรฉ de donnรฉes de courbe collectรฉes.</b> Il sโ€™agit dโ€™un indicateur de progression ; il est normal que la valeur reste basse et atteigne rarement 100 %. + + + Reset Curve Data + Rรฉinitialiser les donnรฉes de courbe + + + <b>Reset collected user data for "Curve Speed Controller".</b> + <b>Rรฉinitialiser les donnรฉes utilisateur collectรฉes pour ยซ Curve Speed Controller ยป.</b> + + + <b>Show the "Curve Speed Controller" target speed on the driving screen.</b> + <b>Afficher la vitesse cible du ยซ Curve Speed Controller ยป sur lโ€™รฉcran de conduite.</b> + + + Driving Personalities + Profils de conduite + + + <b>Customize the "Driving Personalities"</b> to better match your driving style. + <b>Personnalisez les ยซโ€ฏProfils de conduiteโ€ฏยป</b> pour mieux correspondre ร  votre style de conduite. + + + Traffic Mode + Mode trafic + + + <b>Customize the "Traffic Mode" personality profile.</b> Designed for stop-and-go driving. + <b>Personnalisez le profil de personnalitรฉ ยซ Traffic Mode ยป.</b> Conรงu pour la conduite en stop-and-go. + + + Following Distance + Distance de suivi + + + <b>The minimum following distance to the lead vehicle in "Traffic Mode".</b> openpilot blends between this value and the "Aggressive" profile as speed increases. Increase for more space; decrease for tighter gaps. + <b>La distance minimale au vรฉhicule de tรชte en ยซ Mode trafic ยป.</b> openpilot effectue une transition entre cette valeur et le profil ยซ Agressif ยป ร  mesure que la vitesse augmente. Augmentez pour plus dโ€™espace ; diminuez pour des รฉcarts plus serrรฉs. + + + Acceleration Smoothness + Douceur de lโ€™accรฉlรฉration + + + <b>How smoothly openpilot accelerates in "Traffic Mode".</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Avec quelle douceur openpilot accรฉlรจre en ยซ Mode Trafic ยป.</b> Augmentez pour des dรฉmarrages plus doux ; diminuez pour des dรฉparts plus rapides mais plus brusques. + + + Braking Smoothness + Douceur du freinage + + + <b>How smoothly openpilot brakes in "Traffic Mode".</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>ร€ quel point openpilot freine en ยซ Mode Traffic ยป.</b> Augmentez pour des arrรชts plus doux ; diminuez pour un freinage plus rapide mais plus brusque. + + + Safety Gap Bias + Biais de distance de sรฉcuritรฉ + + + <b>How much extra space openpilot keeps from the vehicle ahead in "Traffic Mode".</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Espace supplรฉmentaire quโ€™openpilot maintient avec le vรฉhicule devant en ยซ Mode Trafic ยป.</b> Augmentez pour des รฉcarts plus grands et un suivi plus prudent ; diminuez pour des รฉcarts plus serrรฉs et un suivi plus proche. + + + Slowdown Response + Rรฉponse au ralentissement + + + <b>How smoothly openpilot slows down in "Traffic Mode".</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Avec quelle douceur openpilot ralentit en ยซ Mode Traffic ยป. </b>Augmentez pour une dรฉcรฉlรฉration plus progressive ; diminuez pour des ralentissements plus rapides mais plus brusques. + + + Speed-Up Response + Accรฉlรฉrer la rรฉponse + + + <b>How smoothly openpilot speeds up in "Traffic Mode".</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>ร€ quel point openpilot accรฉlรจre en douceur en ยซ Mode Trafic ยป.</b> Augmentez pour une accรฉlรฉration plus progressive ; diminuez pour une accรฉlรฉration plus rapide mais plus brusque. + + + Reset to Defaults + Rรฉinitialiser les paramรจtres par dรฉfaut + + + <b>Reset "Traffic Mode" settings to defaults.</b> + <b>Rรฉinitialiser les paramรจtres du ยซย Mode Traficย ยป aux valeurs par dรฉfaut.</b> + + + Aggressive + Agressif + + + <b>Customize the "Aggressive" personality profile.</b> Designed for assertive driving with tighter gaps. + <b>Personnalisez le profil de personnalitรฉ ยซ Agressif ยป.</b> Conรงu pour une conduite assertive avec des รฉcarts plus serrรฉs. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Aggressive" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.25 seconds. + <b>Nombre de secondes pendant lesquelles openpilot suit les vรฉhicules de tรชte avec le profil ยซ Agressif ยป.</b> Augmentez pour plus dโ€™espace ; diminuez pour des รฉcarts plus serrรฉs.<br><br>Par dรฉfaut : 1,25 seconde. + + + <b>How smoothly openpilot accelerates with the "Aggressive" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>La douceur de lโ€™accรฉlรฉration dโ€™openpilot avec le profil ยซ Aggressive ยป.</b> Augmentez pour des dรฉparts plus douxย ; diminuez pour des dรฉmarrages plus rapides mais plus brusques. + + + <b>How smoothly openpilot brakes with the "Aggressive" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>La douceur du freinage dโ€™openpilot avec le profil ยซ Aggressif ยป.</b> Augmentez pour des arrรชts plus doux ; diminuez pour un freinage plus rapide mais plus brusque. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Aggressive" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>De combien dโ€™espace supplรฉmentaire openpilot se tient du vรฉhicule devant avec le profil ยซ Aggressif ยป.</b> Augmentez pour des รฉcarts plus grands et un suivi plus prudent ; rรฉduisez pour des รฉcarts plus serrรฉs et un suivi plus rapprochรฉ. + + + <b>How smoothly openpilot slows down with the "Aggressive" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>ร€ quel point openpilot ralentit en douceur avec le profil "Aggressif".</b> Augmentez pour une dรฉcรฉlรฉration plus progressive ; diminuez pour des ralentissements plus rapides mais plus brusques. + + + <b>How smoothly openpilot speeds up with the "Aggressive" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>De quelle fluiditรฉ openpilot accรฉlรจre avec le profil ยซ Aggressif ยป.</b> Augmenter pour une accรฉlรฉration plus progressive ; diminuer pour une accรฉlรฉration plus rapide mais plus brusque. + + + <b>Reset the "Aggressive" profile to defaults.</b> + <b>Rรฉinitialiser le profil ยซ Aggressif ยป aux paramรจtres par dรฉfaut.</b> + + + Standard + Standard + + + <b>Customize the "Standard" personality profile.</b> Designed for balanced driving with moderate gaps. + <b>Personnalisez le profil de personnalitรฉ ยซ Standard ยป.</b> Conรงu pour une conduite รฉquilibrรฉe avec des รฉcarts modรฉrรฉs. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Standard" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.45 seconds. + <b>Nombre de secondes pendant lesquelles openpilot suit les vรฉhicules de tรชte avec le profil ยซ Standard ยป.</b> Augmentez pour plus dโ€™espace ; diminuez pour des รฉcarts plus serrรฉs.<br><br>Par dรฉfaut : 1,45 seconde.</br></br> + + + <b>How smoothly openpilot accelerates with the "Standard" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>ร€ quel point openpilot accรฉlรจre avec le profil ยซ Standard ยป.</b> Augmentez pour des dรฉparts plus doux ; diminuez pour des dรฉparts plus rapides mais plus brusques. + + + <b>How smoothly openpilot brakes with the "Standard" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>ร€ quel point openpilot freine en mode ยซ Standard ยป.</b> Augmenter pour des arrรชts plus doux ; diminuer pour un freinage plus rapide mais plus brusque. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Standard" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Espace supplรฉmentaire quโ€™openpilot maintient par rapport au vรฉhicule devant avec le profil ยซ Standard ยป.</b> Augmentez pour des รฉcarts plus grands et un suivi plus prudent ; diminuez pour des รฉcarts plus serrรฉs et un suivi plus rapprochรฉ. + + + <b>How smoothly openpilot slows down with the "Standard" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>ร€ quel point openpilot ralentit en douceur avec le profil ยซ Standard ยป.</b> Augmentez pour une dรฉcรฉlรฉration plus progressive ; diminuez pour des ralentissements plus rapides mais plus brusques. + + + <b>How smoothly openpilot speeds up with the "Standard" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>La douceur avec laquelle openpilot accรฉlรจre avec le profil ยซ Standard ยป.</b> Augmentez pour une accรฉlรฉration plus progressive ; diminuez pour une accรฉlรฉration plus rapide mais plus brusque. + + + <b>Reset the "Standard" profile to defaults.</b> + <b>Rรฉinitialiser le profil ยซ Standard ยป aux valeurs par dรฉfaut.</b> + + + Relaxed + Dรฉtendu + + + <b>Customize the "Relaxed" personality profile.</b> Designed for smoother, more comfortable driving with larger gaps. + <b>Personnalisez le profil de personnalitรฉ ยซ Relaxed ยป.</b> Conรงu pour une conduite plus souple et confortable avec des รฉcarts plus importants. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Relaxed" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.75 seconds. + <b>Combien de secondes openpilot suit les vรฉhicules de tรชte avec le profil ยซ Relaxed ยป.</b> Augmentez pour plus dโ€™espace ; diminuez pour des รฉcarts plus serrรฉs.<br><br>Par dรฉfaut : 1,75 seconde. + + + <b>How smoothly openpilot accelerates with the "Relaxed" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Avec quelle douceur openpilot accรฉlรจre avec le profil ยซ Relaxed ยป.</b> Augmentez pour des dรฉmarrages plus doux ; diminuez pour des dรฉparts plus rapides mais plus brusques. + + + <b>How smoothly openpilot brakes with the "Relaxed" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>ร€ quel point openpilot freine en mode ยซ Relaxed ยป.</b> Augmentez pour des arrรชts plus doux ; diminuez pour un freinage plus rapide mais plus brusque. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Relaxed" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>De combien dโ€™espace supplรฉmentaire openpilot garde-t-il par rapport au vรฉhicule devant avec le profil ยซ Relaxed ยป.</b> Augmentez pour des รฉcarts plus grands et un suivi plus prudent ; diminuez pour des รฉcarts plus serrรฉs et un suivi plus rapprochรฉ. + + + <b>How smoothly openpilot slows down with the "Relaxed" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>ร€ quel point openpilot ralentit en douceur avec le profil ยซ Relaxed ยป.</b> Augmentez pour une dรฉcรฉlรฉration plus progressive ; diminuez pour des ralentissements plus rapides mais plus brusques. + + + <b>How smoothly openpilot speeds up with the "Relaxed" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>La douceur avec laquelle openpilot accรฉlรจre avec le profil ยซ Relaxed ยป.</b> Augmentez pour une accรฉlรฉration plus progressive ; diminuez pour une accรฉlรฉration plus rapide mais plus brusque. + + + <b>Reset the "Relaxed" profile to defaults.</b> + <b>Rรฉinitialiser le profil ยซ Relaxed ยป aux valeurs par dรฉfaut.</b> + + + Longitudinal Tuning + Rรฉglage longitudinal + + + <b>Acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Modifications du contrรดle de lโ€™accรฉlรฉration et du freinage</b> pour affiner la conduite dโ€™openpilot. + + + Acceleration Profile + Profil dโ€™accรฉlรฉration + + + <b>How quickly openpilot speeds up.</b> "Eco" is gentle and efficient, "Sport" is firmer and more responsive, and "Sport+" accelerates at the maximum rate allowed. + <b>ร€ quelle vitesse openpilot accรฉlรจre.</b> ยซ Eco ยป est doux et รฉconome, ยซ Sport ยป est plus ferme et rรฉactif, et ยซ Sport+ ยป accรฉlรจre au taux maximal autorisรฉ. + + + Deceleration Profile + Profil de dรฉcรฉlรฉration + + + <b>How firmly openpilot slows down.</b> "Eco" favors coasting, "Sport" applies stronger braking. + <b>ร€ quel point openpilot ralentit.</b> ยซ Eco ยป privilรฉgie la roue libre, ยซ Sport ยป applique un freinage plus fort. + + + Human-Like Acceleration + Accรฉlรฉration de type humaine + + + <b>Acceleration that mimics human behavior</b> by easing the throttle at low speeds and adding extra power when taking off from a stop. + <b>Accรฉlรฉration qui imite le comportement humain</b> en relรขchant lโ€™accรฉlรฉrateur ร  basse vitesse et en ajoutant de la puissance lors du dรฉmarrage depuis lโ€™arrรชt. + + + Human-Like Following + Suivi semblable ร  lโ€™humain + + + Lead Detection Sensitivity + Sensibilitรฉ de dรฉtection du vรฉhicule de tรชte + + + <b>How sensitive openpilot is to detecting vehicles.</b> Higher sensitivity allows quicker detection at longer distances but may react to non-vehicle objects; lower sensitivity is more conservative and reduces false detections. + <b>Niveau de sensibilitรฉ dโ€™openpilot pour la dรฉtection des vรฉhicules.</b> Une sensibilitรฉ plus รฉlevรฉe permet une dรฉtection plus rapide ร  plus longue distance mais peut rรฉagir ร  des objets non vรฉhicules ; une sensibilitรฉ plus faible est plus conservatrice et rรฉduit les fausses dรฉtections. + + + Maximum Acceleration + Accรฉlรฉration maximale + + + <b>Limit the strongest acceleration</b> openpilot can command. + <b>Limiter la plus forte accรฉlรฉration</b> quโ€™openpilot peut commander. + + + "Taco Bell Run" Turn Speed Hack + ยซ Taco Bell Run ยป Piratage de vitesse en virage + + + <b>The turn-speed hack from comma's 2022 "Taco Bell Run".</b> Designed to slow down for left and right turns. + <b>Le hack de vitesse en virage du ยซ Taco Bell Run ยป de comma en 2022.</b> Conรงu pour ralentir lors des virages ร  gauche et ร  droite. + + + Quality of Life + Qualitรฉ de vie + + + <b>Miscellaneous acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Modifications diverses du contrรดle de lโ€™accรฉlรฉration et du freinage</b> pour affiner la conduite dโ€™openpilot. + + + Cruise Interval + Intervalle de rรฉgulateur + + + <b>How much the set speed increases or decreases</b> for each + or โ€“ cruise control button press. + <b>De combien la vitesse rรฉglรฉe augmente ou diminue</b> ร  chaque pression sur le bouton de rรฉgulateur + ou โ€“. + + + Cruise Interval (Hold) + Intervalle du rรฉgulateur (Maintenir) + + + <b>How much the set speed increases or decreases while holding the + or โ€“ cruise control buttons.</b> + <b>De combien la vitesse rรฉglรฉe augmente ou diminue en maintenant les boutons de rรฉgulateur + ou โ€“.</b> + + + Force Stop at "Detected" Stop Lights/Signs + Arrรชt forcรฉ aux feux/panneaux ยซ Detected ยป + + + <b>Force openpilot to stop whenever the driving model "detects" a red light or stop sign.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>Forcer openpilot ร  sโ€™arrรชter dรจs que le modรจle de conduite ยซ dรฉtecte ยป un feu rouge ou un panneau stop.</b><br><br><i><b>Avertissement</b> : openpilot ne dรฉtecte pas explicitement les feux de circulation ou les panneaux stop. En ยซ Mode expรฉrimental ยป, openpilot prend des dรฉcisions de conduite de bout en bout ร  partir des camรฉras, ce qui signifie quโ€™il peut sโ€™arrรชter mรชme sans raison รฉvidente.</i> + + + Increase Stopped Distance by: + Augmenter la distance ร  lโ€™arrรชt deย : + + + <b>Add extra space when stopped behind vehicles.</b> Increase for more room; decrease for shorter gaps. + <b>Ajoutez de lโ€™espace supplรฉmentaire ร  lโ€™arrรชt derriรจre des vรฉhicules.</b> Augmentez pour plus dโ€™espace ; diminuez pour des รฉcarts plus courts. + + + Map Accel/Decel to Gears + Associer Accรฉlรฉration/Dรฉcรฉlรฉration aux Vitesses + + + <b>Map the Acceleration or Deceleration profiles to the vehicle's "Eco" and "Sport" gear modes.</b> + <b>Associez les profils dโ€™accรฉlรฉration ou de dรฉcรฉlรฉration aux modes de transmission ยซ Eco ยป et ยซ Sport ยป du vรฉhicule.</b> + + + Offset Set Speed by: + Dรฉcaler la vitesse dรฉfinie deย : + + + <b>Increase the set speed by the chosen offset.</b> For example, set +5 if you usually drive 5 over the limit. + <b>Augmentez la vitesse rรฉglรฉe du dรฉcalage choisi.</b> Par exemple, rรฉglez +5 si vous roulez gรฉnรฉralement 5 au-dessus de la limite. + + + Reverse Cruise Increase + Augmenter la vitesse en marche arriรจre + + + <b>Reverse the cruise control button behavior</b> so a short press increases the set speed by 5 instead of 1. + <b>Inverser le comportement du bouton du rรฉgulateur de vitesse</b> pour quโ€™un appui court augmente la vitesse rรฉglรฉe de 5 au lieu de 1. + + + Increase Following Distance by: + Augmenter la distance de suivi deย : + + + Reduce Acceleration by: + Rรฉduire lโ€™accรฉlรฉration deย : + + + Reduce Speed in Curves by: + Rรฉduire la vitesse dans les virages deย : + + + Snow + Neige + + + <b>Driving adjustments for snowy conditions.</b> + <b>Ajustements de conduite pour conditions neigeuses.</b> + + + <b>Add extra space behind lead vehicles in snow.</b> Increase for more space; decrease for tighter gaps. + <b>Ajoutez plus dโ€™espace derriรจre les vรฉhicules prรฉcรฉdents par neige.</b> Augmentez pour plus dโ€™espace ; diminuez pour des รฉcarts plus serrรฉs. + + + <b>Add extra buffer when stopped behind vehicles in snow.</b> Increase for more room; decrease for shorter gaps. + <b>Ajoutez une marge supplรฉmentaire ร  lโ€™arrรชt derriรจre des vรฉhicules sous la neige.</b> Augmentez pour plus dโ€™espaceโ€ฏ; diminuez pour des รฉcarts plus courts. + + + <b>Lower the maximum acceleration in snow.</b> Increase for softer takeoffs; decrease for quicker but less stable takeoffs. + <b>Rรฉduisez lโ€™accรฉlรฉration maximale sur la neige.</b> Augmentez pour des dรฉparts plus doux ; diminuez pour des dรฉparts plus rapides mais moins stables. + + + <b>Lower the desired speed while driving through curves in snow.</b> Increase for safer, gentler turns; decrease for more aggressive driving in curves. + <b>Rรฉduisez la vitesse souhaitรฉe en conduisant dans les virages sur la neige.</b> Augmentez pour des virages plus sรปrs et plus douxโ€ฏ; diminuez pour une conduite plus agressive dans les virages. + + + Speed Limit Controller + Contrรดleur de limitation de vitesse + + + <b>Limit openpilot's maximum driving speed to the current speed limit</b> obtained from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + <b>Limiter la vitesse de conduite maximale dโ€™openpilot ร  la limite de vitesse actuelle</b> obtenue ร  partir des cartes tรฉlรฉchargรฉes, de Mapbox, de Navigate on openpilot ou du tableau de bord pour les vรฉhicules compatibles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + + + Fallback Speed + Vitesse de secours + + + <b>The speed used by "Speed Limit Controller" when no speed limit is found.</b><br><br>- <b>Set Speed</b>: Use the cruise set speed<br>- <b>Experimental Mode</b>: Estimate the limit using the driving model<br>- <b>Previous Limit</b>: Keep using the last confirmed limit + <b>La vitesse utilisรฉe par ยซ Speed Limit Controller ยป lorsquโ€™aucune limitation nโ€™est trouvรฉe.</b><br><br>- <b>Vitesse rรฉglรฉe</b> : utiliser la vitesse de rรฉgulateur rรฉglรฉe<br>- <b>Mode expรฉrimental</b> : estimer la limitation avec le modรจle de conduite<br>- <b>Limite prรฉcรฉdente</b> : continuer ร  utiliser la derniรจre limitation confirmรฉe + + + Override Speed + Outrepasser la vitesse + + + <b>The speed used by "Speed Limit Controller" after you manually drive faster than the posted limit.</b><br><br>- <b>Set with Gas Pedal</b>: Use the highest speed reached while pressing the gas<br>- <b>Max Set Speed</b>: Use the cruise set speed<br><br>Overrides clear when openpilot disengages. + <b>La vitesse utilisรฉe par ยซ Speed Limit Controller ยป aprรจs que vous avez conduit manuellement plus vite que la limite affichรฉe.</b><br><br>- <b>Dรฉfinie avec la pรฉdale dโ€™accรฉlรฉrateur</b> : Utilise la vitesse la plus รฉlevรฉe atteinte en appuyant sur lโ€™accรฉlรฉrateur<br>- <b>Vitesse de consigne max</b> : Utilise la vitesse de rรฉgulateur dรฉfinie<br><br>Les remplacements sont annulรฉs lorsque openpilot se dรฉsengage. + + + <b>Miscellaneous "Speed Limit Controller" changes</b> to fine-tune how openpilot drives. + <b>Modifications diverses du ยซย Speed Limit Controllerย ยป</b> pour affiner la conduite dโ€™openpilot. + + + Confirm New Speed Limits + Confirmer les nouvelles limitations de vitesse + + + <b>Ask before changing to a new speed limit.</b> To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds. + <b>Demander avant de changer pour une nouvelle limitation de vitesse.</b> Pour accepter, touchez le widget clignotant ร  lโ€™รฉcran ou appuyez sur le bouton dโ€™augmentation du rรฉgulateur. Pour refuser, appuyez sur le bouton de diminution du rรฉgulateur ou ignorez lโ€™invite pendant 30 secondes. + + + Force MPH from Dashboard + Forcer MPH depuis le tableau de bord + + + <b>Always read dashboard speed limit signs in mph.</b> Turn this on if the cluster shows mph but the limit is interpreted as km/h. + <b>Lisez toujours les panneaux de limitation de vitesse du tableau de bord en mph.</b> Activez ceci si le combinรฉ affiche des mph mais que la limite est interprรฉtรฉe comme km/h. + + + Higher Limit Lookahead Time + Temps dโ€™anticipation limite plus รฉlevรฉ + + + <b>How far ahead openpilot anticipates upcoming higher speed limits</b> from downloaded map data. + <b>ร€ quelle distance openpilot anticipe les limitations de vitesse supรฉrieures ร  venir</b> ร  partir des donnรฉes cartographiques tรฉlรฉchargรฉes. + + + Lower Limit Lookahead Time + Temps dโ€™anticipation de la limite infรฉrieure + + + <b>How far ahead openpilot anticipates upcoming lower speed limits</b> from downloaded map data. + <b>Dans quelle mesure openpilot anticipe les limitations de vitesse infรฉrieures ร  venir</b> ร  partir des donnรฉes de carte tรฉlรฉchargรฉes. + + + Match Speed Limit on Engage + Adapter la vitesse ร  la limitation lors de lโ€™activation + + + <b>When openpilot is first enabled, automatically set the max speed to the current posted limit.</b> + <b>Lorsque openpilot est activรฉ pour la premiรจre fois, rรฉgler automatiquement la vitesse maximale sur la limite affichรฉe actuelle.</b> + + + Use Mapbox as Fallback + Utiliser Mapbox comme solution de secours + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>Utiliser les donnรฉes de limitation de vitesse Mapbox lorsquโ€™aucune autre source nโ€™est disponible.</b> + + + Speed Limit Source Priority + Prioritรฉ de la source de limite de vitesse + + + <b>The source order for speed limits</b> when more than one is available. + <b>Lโ€™ordre des sources pour les limitations de vitesse</b> lorsquโ€™il y en a plusieurs.</b + + + Speed Limit Offsets + Dรฉcalages de limite de vitesse + + + <b>Add an offset to the posted speed limit</b> to better match your driving style. + <b>Ajoutez un dรฉcalage ร  la limitation de vitesse affichรฉe</b> pour mieux correspondre ร  votre style de conduite. Speed Offset (0โ€“24 mph) - Dรฉcalage de vitesse (0โ€“24 mph) + Dรฉcalage de vitesse (0โ€“24 mph) + + + <b>How much to offset posted speed-limits</b> between 0 and 24 mph. + <b>De combien compenser les limitations de vitesse affichรฉes</b> entre 0 et 24 mph. Speed Offset (25โ€“34 mph) - Dรฉcalage de vitesse (25โ€“34 mph) + Dรฉcalage de vitesse (25โ€“34 mph) + + + <b>How much to offset posted speed-limits</b> between 25 and 34 mph. + <b>De combien compenser les limites de vitesse affichรฉes</b> entre 25 et 34 mph.</b Speed Offset (35โ€“44 mph) - Dรฉcalage de vitesse (35โ€“44 mph) + Dรฉcalage de vitesse (35โ€“44 mph) + + + <b>How much to offset posted speed-limits</b> between 35 and 44 mph. + <b>De combien compenser les limitations affichรฉes</b> entre 35 et 44 mph. Speed Offset (45โ€“54 mph) - Dรฉcalage de vitesse (45โ€“54 mph) + Dรฉcalage de vitesse (45โ€“54 mph) + + + <b>How much to offset posted speed-limits</b> between 45 and 54 mph. + <b>De combien compenser les limitations de vitesse affichรฉes</b> entre 45 et 54 mph. Speed Offset (55โ€“64 mph) - Dรฉcalage de vitesse (55โ€“64 mph) + Dรฉcalage de vitesse (55โ€“64 mph) + + + <b>How much to offset posted speed-limits</b> between 55 and 64 mph. + <b>De combien dรฉcaler les limitations affichรฉes</b> entre 55 et 64 mph. Speed Offset (65โ€“74 mph) - Dรฉcalage de vitesse (65โ€“74 mph) + Dรฉcalage de vitesse (65โ€“74 mph) + + + <b>How much to offset posted speed-limits</b> between 65 and 74 mph. + <b>De combien dรฉcaler les limitations de vitesse affichรฉes</b> entre 65 et 74 mph. Speed Offset (75โ€“99 mph) - Dรฉcalage de vitesse (75โ€“99 mph) + Dรฉcalage de vitesse (75โ€“99 mph) - Only For Detected Lanes - Uniquement pour les voies dรฉtectรฉes + <b>How much to offset posted speed-limits</b> between 75 and 99 mph. + <b>De combien compenser les limites de vitesse affichรฉes</b> entre 75 et 99 mph. + + + Visual Settings + Paramรจtres visuels + + + <b>Visual "Speed Limit Controller" changes</b> to fine-tune how the driving screen looks. + <b>Modifications visuelles du ยซ Speed Limit Controller ยป</b> pour affiner lโ€™apparence de lโ€™รฉcran de conduite. + + + Show Speed Limit Offset + Afficher lโ€™รฉcart de limite de vitesse + + + <b>Show the current offset from the posted limit</b> on the driving screen. + <b>Afficher lโ€™รฉcart actuel par rapport ร  la limite affichรฉe</b> sur lโ€™รฉcran de conduite. + + + Show Speed Limit Sources + Afficher les sources des limitations de vitesse + + + <b>Display the speed-limit sources and their current values</b> on the driving screen. + <b>Afficher les sources des limitations de vitesse et leurs valeurs actuelles</b> sur lโ€™รฉcran de conduite. + + + seconds + secondes + + + m/sยฒ + m/sยฒ + + + mph + mph + + + With Lead + Avec vรฉhicule prรฉcรฉdant + + + <b>Switch to "Experimental Mode" when driving below this speed with a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>Passez en ยซ Mode expรฉrimental ยป lorsque vous conduisez en dessous de cette vitesse avec un vรฉhicule devant</b> pour aider openpilot ร  gรฉrer plus en douceur les situations ร  basse vitesse. + + + Slower Lead + Vรฉhicule prรฉcรฉdent plus lent + + + Stopped Lead + Vรฉhicule de tรชte arrรชtรฉ + + + Intersections + Carrefours + + + Turns + Virages + + + Off + Dรฉsactivรฉ + + + second + seconde + + + Not For Detected Lanes + Pas pour les voies dรฉtectรฉes + + + RESET + Rร‰INITIALISER + + + Are you sure you want to completely reset your curvature data? + รŠtes-vous sรปr de vouloir rรฉinitialiser complรจtement vos donnรฉes de courbureย ? + + + Eco + ร‰co + + + Sport + Sport + + + Sport+ + Sport+ + + + feet + pieds + + + Acceleration + Accรฉlรฉration + + + Deceleration + Dรฉcรฉlรฉration + + + MANAGE + Gร‰RER + + + Set Speed + Rรฉgler la vitesse + + + Experimental Mode + Mode expรฉrimental + + + Previous Limit + Limite prรฉcรฉdente + + + None + Aucun + + + Set With Gas Pedal + Rรฉgler avec la pรฉdale dโ€™accรฉlรฉrateur + + + Max Set Speed + Vitesse maximale dรฉfinie + + + SELECT + Sร‰LECTIONNER + + + Dashboard + Tableau de bord + + + Map Data + Donnรฉes cartographiques + + + Navigation + Navigation + + + Highest + Le plus รฉlevรฉ + + + Lowest + Le plus bas + + + Select your primary priority + Sรฉlectionnez votre prioritรฉ principale + + + Select your secondary priority + Sรฉlectionnez votre prioritรฉ secondaire + + + Select your tertiary priority + Sรฉlectionnez votre prioritรฉ tertiaire + + + Lower Limits + Limites infรฉrieures + + + Higher Limits + Limites supรฉrieures + + + Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? + Voulez-vous vraiment rรฉinitialiser complรจtement vos paramรจtres pour le <b>Mode Trafic</b>ย ? + + + Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? + Voulez-vous vraiment rรฉinitialiser complรจtement vos paramรจtres pour la personnalitรฉ <b>Aggressive</b> ? + + + Are you sure you want to completely reset your settings for the <b>Standard</b> personality? + Voulez-vous vraiment rรฉinitialiser complรจtement vos paramรจtres pour la personnalitรฉ <b>Standard</b>ย ? + + + Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? + Voulez-vous vraiment rรฉinitialiser complรจtement vos paramรจtres pour la personnalitรฉ <b>Relaxed</b>ย ? + + + foot + pied + + + meter + mรจtre + + + meters + mรจtres + + + km/h + km/h Speed Offset (0โ€“29 km/h) - Dรฉcalage de vitesse (0โ€“29 km/h) + Dรฉcalage de vitesse (0โ€“29 km/h) Speed Offset (30โ€“49 km/h) - Dรฉcalage de vitesse (30โ€“49 km/h) + Dรฉcalage de vitesse (30โ€“49 km/h) Speed Offset (50โ€“59 km/h) - Dรฉcalage de vitesse (50โ€“59 km/h) + Dรฉcalage de vitesse (50โ€“59 km/h) Speed Offset (60โ€“79 km/h) - Dรฉcalage de vitesse (60โ€“79 km/h) + Dรฉcalage de vitesse (60โ€“79 km/h) Speed Offset (80โ€“99 km/h) - Dรฉcalage de vitesse (80โ€“99 km/h) + Dรฉcalage de vitesse (80โ€“99 km/h) Speed Offset (100โ€“119 km/h) - Dรฉcalage de vitesse (100โ€“119 km/h) + Dรฉcalage de vitesse (100โ€“119 km/h) Speed Offset (120โ€“140 km/h) - Dรฉcalage de vitesse (120โ€“140 km/h) + Dรฉcalage de vitesse (120โ€“140 km/h) - Curve Speed Control - Contrรดle de la vitesse en courbe - - - Automatically slow down for upcoming curves using downloaded maps or the driving model. - Ralentir automatiquement pour les virages ร  venir en utilisant des cartes tรฉlรฉchargรฉes ou le modรจle de conduite. - - - Curve Detection Method - Mรฉthode de dรฉtection de courbes - - - How curves are detected. <b>Map-Based</b> uses downloaded map data to identify curves and determine the appropriate speed in which to handle them at, while <b>Vision</b> relies solely on the driving model. - Comment les courbes sont dรฉtectรฉes. <b>Basรฉ sur la carte</b> utilise les donnรฉes de carte tรฉlรฉchargรฉes pour identifier les courbes et dรฉterminer la vitesse appropriรฉe pour les aborder, tandis que <b>Vision</b> repose uniquement sur le modรจle de conduite. - - - Curve Detection Failsafe - Systรจme de sรฉcuritรฉ pour la dรฉtection des courbes - - - Only trigger <b>Curve Speed Control</b> if a curve is detected with the model while using the <b>Map-Based</b> method. Useful to help prevent false positives. - Dรฉclencher <b>Curve Speed Control</b> uniquement si une courbe est dรฉtectรฉe avec le modรจle lors de l'utilisation de la mรฉthode <b>Map-Based</b>. Utile pour aider ร  prรฉvenir les faux positifs. - - - Curve Detection Sensitivity - Sensibilitรฉ de dรฉtection des courbes - - - How sensitive openpilot is when detecting curves. Higher values trigger earlier responses at the risk of triggering too often, while lower values increase confidence at the risk of triggering too infrequently. - La sensibilitรฉ d'openpilot lors de la dรฉtection des courbes. Des valeurs plus รฉlevรฉes dรฉclenchent des rรฉponses plus tรดt au risque de dรฉclenchements trop frรฉquents, tandis que des valeurs plus basses augmentent la confiance au risque de dรฉclenchements trop rares. - - - Curve Speed Aggressiveness - Agressivitรฉ de la vitesse en courbe - - - How aggressive openpilot is when navigating through curves. Higher values result in faster turns but may reduce comfort or stability, while lower values result in slower, smoother turns at the risk of being overly cautious. - Niveau d'agressivitรฉ d'openpilot lors de la navigation dans les virages. Des valeurs plus รฉlevรฉes entraรฎnent des virages plus rapides mais peuvent rรฉduire le confort ou la stabilitรฉ, tandis que des valeurs plus basses entraรฎnent des virages plus lents et plus doux au risque d'รชtre trop prudents. - - - Map Based - Basรฉ sur la carte - - - Vision - Vision - - - The <b>Map Based</b> option is only available when some <b>Map Data</b> has been downloaded! - L'option <b>Basรฉe sur la carte</b> n'est disponible que lorsque des <b>Donnรฉes de carte</b> ont รฉtรฉ tรฉlรฉchargรฉes ! + <b>Following behavior that mimics human drivers</b> by closing gaps behind faster vehicles for quicker takeoffs and dynamically adjusting the desired following distance for gentler, more efficient braking. + <b>Un comportement de suivi qui imite les conducteurs humains</b> en rรฉduisant les รฉcarts derriรจre les vรฉhicules plus rapides pour des dรฉparts plus rapides et en ajustant dynamiquement la distance de suivi souhaitรฉe pour un freinage plus doux et plus efficace. FrogPilotManageControl MANAGE - Gร‰RER + Gร‰RER FrogPilotMapsPanel Manually - Manuellement + Manuellement Weekly - Hebdomadaire + Hebdomadaire Monthly - Mensuel + Mensuel Automatically Update Maps - Mettre ร  jour automatiquement les cartes + Mettre ร  jour les cartes automatiquement - The frequency at which maps sync with the latest OpenStreetMap (OSM) changes. Weekly updates occur every Sunday, and monthly updates occur on the 1st. - La frรฉquence ร  laquelle les cartes se synchronisent avec les derniรจres modifications d'OpenStreetMap (OSM). Les mises ร  jour hebdomadaires ont lieu chaque dimanche, et les mises ร  jour mensuelles ont lieu le 1er. - - - Data Sources - Sources de donnรฉes - - - Select map data sources to use with "Curve Speed Control" and "Speed Limit Controller". - Sรฉlectionnez les sources de donnรฉes cartographiques ร  utiliser avec "Contrรดle de la vitesse en courbe" et "Contrรดleur de limite de vitesse". - - - COUNTRIES - PAYS - - - STATES - ร‰TATS + <b>How often maps update</b> from "OpenStreetMap (OSM)" with the latest speed limit information. Weekly updates run every Sunday; monthly updates run on the 1st. + <b>Frรฉquence de mise ร  jour des cartes</b> ร  partir dโ€™ยซ OpenStreetMap (OSM) ยป avec les derniรจres informations de limitation de vitesse. Les mises ร  jour hebdomadaires ont lieu chaque dimanche ; les mises ร  jour mensuelles ont lieu le 1er. Download Maps - Tรฉlรฉcharger des cartes + Tรฉlรฉcharger les cartes DOWNLOAD - Tร‰Lร‰CHARGER + Tร‰Lร‰CHARGER - Download the selected maps to use with "Curve Speed Control" and "Speed Limit Controller". - Tรฉlรฉchargez les cartes sรฉlectionnรฉes pour les utiliser avec "Curve Speed Control" et "Speed Limit Controller". + <b>Manually update your selected map sources</b> so "Speed Limit Controller" has the latest speed limit information. + <b>Mettez ร  jour manuellement vos sources de cartes sรฉlectionnรฉes</b> pour que ยซ Speed Limit Controller ยป dispose des informations de limitation de vitesse les plus rรฉcentes. CANCEL - ANNULER + ANNULER - Are you sure you want to cancel the download? - รŠtes-vous sรปr de vouloir annuler le tรฉlรฉchargement ? + Cancel the download? + Annuler le tรฉlรฉchargementย ? - Download Completion ETA - Estimation de l'heure de fin du tรฉlรฉchargement + Last Updated + Derniรจre mise ร  jour - Download Progress - Progression du tรฉlรฉchargement + Map Sources + Sources de cartes - Download Time Elapsed - Temps รฉcoulรฉ pour le tรฉlรฉchargement + <b>Select the countries or U.S. states to use with "Speed Limit Controller".</b> + <b>Sรฉlectionnez les pays ou les ร‰tats amรฉricains ร  utiliser avec ยซ Speed Limit Controller ยป.</b> - Maps Last Updated - Cartes Derniรจre Mise ร  Jour + COUNTRIES + PAYS - Maps Size - Taille des cartes + STATES + ร‰TATS + + + Progress + Progrรจs + + + Time Elapsed + Temps รฉcoulรฉ + + + Time Remaining + Temps restant Remove Maps - Supprimer les cartes + Supprimer les cartes REMOVE - SUPPRIMER + RETIRER - Remove downloaded maps to clear up storage space. - Supprimez les cartes tรฉlรฉchargรฉes pour libรฉrer de l'espace de stockage. + <b>Delete downloaded map data</b> to free up storage space. + <b>Supprimer les donnรฉes cartographiques tรฉlรฉchargรฉes</b> pour libรฉrer de lโ€™espace de stockage. - Are you sure you want to delete all of your downloaded maps? - รŠtes-vous sรปr de vouloir supprimer toutes vos cartes tรฉlรฉchargรฉes ? + Delete all downloaded maps? + Supprimer toutes les cartes tรฉlรฉchargรฉes ? - Reset Map Downloader - Rรฉinitialiser le tรฉlรฉchargeur de cartes + Reset Downloader + Rรฉinitialiser le tรฉlรฉchargeur RESET - Rร‰INITIALISER + Rร‰INITIALISER - Reset the map downloader. Use if you're running into issues with downloading maps. - Rรฉinitialiser le tรฉlรฉchargeur de cartes. Utilisez-le si vous rencontrez des problรจmes lors du tรฉlรฉchargement des cartes. + <b>Reset the map downloader.</b> Use this if downloads are stuck or failing. + <b>Rรฉinitialisez le tรฉlรฉchargeur de cartes.</b> Utilisez ceci si les tรฉlรฉchargements sont bloquรฉs ou รฉchouent. - Are you sure you want to reset the map downloader? This will force a reboot once completed. - รŠtes-vous sรปr de vouloir rรฉinitialiser le tรฉlรฉchargeur de cartes ? Cela forcera un redรฉmarrage une fois terminรฉ. + Reset the map downloader? Your device will reboot afterward. + Rรฉinitialiser le tรฉlรฉchargeur de cartes ? Votre appareil redรฉmarrera ensuite. Reset - Rรฉinitialiser + Rรฉinitialiser Resetting... - Rรฉinitialisation... + Rรฉinitialisationโ€ฆ Reset! - Rรฉinitialiser ! + Rรฉinitialiserย ! Rebooting... - Redรฉmarrage... + Redรฉmarrageโ€ฆ + + + Storage Used + Stockage utilisรฉ Africa - Afrique + Afrique Antarctica - Antarctique + Antarctique Asia - Asie + Asie Europe - Europe + Europe North America - Amรฉrique du Nord + Amรฉrique du Nord Oceania - Ocรฉanie + Ocรฉanie South America - Amรฉrique du Sud + Amรฉrique du Sud United States - Midwest - ร‰tats-Unis - Midwest + ร‰tats-Unis - Midwest United States - Northeast - ร‰tats-Unis - Nord-Est + ร‰tats-Unis - Nord-Est United States - South - ร‰tats-Unis - Sud + ร‰tats-Unis - Sud United States - West - ร‰tats-Unis - Ouest + ร‰tats-Unis - Ouest United States - Territories - ร‰tats-Unis - Territoires - - - CANCELLED - ANNULร‰ + ร‰tats-Unis - Territoires Offline... - Hors ligne... + Hors ligne... + + + CANCELLED + ANNULร‰ FrogPilotModelPanel Automatically Download New Models - Tรฉlรฉcharger automatiquement de nouveaux modรจles + Tรฉlรฉcharger automatiquement de nouveaux modรจles - Automatically download new driving models as they become available. - Tรฉlรฉchargez automatiquement les nouveaux modรจles de conduite dรจs qu'ils sont disponibles. + <b>Automatically download new driving models</b> as they become available. + <b>Tรฉlรฉcharger automatiquement de nouveaux modรจles de conduite</b> dรจs quโ€™ils sont disponibles. Delete Driving Models - Supprimer les modรจles de conduite + Supprimer les modรจles de conduite - Delete driving models from the device. - Supprimer les modรจles de conduite de l'appareil. + <b>Delete downloaded driving models</b> to free up storage space. + <b>Supprimez les modรจles de conduite tรฉlรฉchargรฉs</b> pour libรฉrer de lโ€™espace de stockage. Download Driving Models - Tรฉlรฉcharger les modรจles de conduite + Tรฉlรฉcharger les modรจles de conduite - Download driving models to the device. - Tรฉlรฉcharger les modรจles de conduite sur l'appareil. + <b>Manually download driving models</b> to the device. + <b>Tรฉlรฉchargez manuellement les modรจles de conduite</b> sur lโ€™appareil. Model Randomizer - Randomiseur de modรจle + Gรฉnรฉrateur alรฉatoire de modรจles - Driving models are chosen at random each drive and feedback prompts are used to find the model that best suits your needs. - Les modรจles de conduite sont choisis au hasard ร  chaque trajet et des invites de rรฉtroaction sont utilisรฉes pour trouver le modรจle qui correspond le mieux ร  vos besoins. + <b>Select a random driving model each drive</b> and use feedback prompts at the end of the drive to help find the model that best suits you! + <b>Sรฉlectionnez un modรจle de conduite alรฉatoire ร  chaque trajet</b> et utilisez les invites de retour en fin de trajet pour aider ร  trouver le modรจle qui vous convient le mieux ! Manage Model Blacklist - Gรฉrer la liste noire des modรจles + Gรฉrer la liste noire des modรจles - Add or remove models from the <b>Model Randomizer</b>'s blacklist list. - Ajouter ou supprimer des modรจles de la liste noire du <b>Randomiseur de Modรจles</b>. + <b>Add or remove driving models from the "Model Randomizer" blacklist.</b> + <b>Ajouter ou supprimer des modรจles de conduite de la liste noire du ยซ Model Randomizer ยป.</b> Manage Model Ratings - Gรฉrer les รฉvaluations des modรจles + Gรฉrer les รฉvaluations du modรจle - Reset or view the saved ratings for the driving models. - Rรฉinitialiser ou afficher les รฉvaluations enregistrรฉes pour les modรจles de conduite. + <b>View or reset saved model ratings</b> used by the "Model Randomizer". + <b>Afficher ou rรฉinitialiser les รฉvaluations de modรจle enregistrรฉes</b> utilisรฉes par le ยซ Model Randomizer ยป. Select Driving Model - Sรฉlectionner le modรจle de conduite + Sรฉlectionner le modรจle de conduite - Select the active driving model. - Sรฉlectionnez le modรจle de conduite actif. + <b>Choose which driving model openpilot uses.</b> + <b>Choisissez le modรจle de conduite utilisรฉ par openpilot.</b> + + + Update Model Manager + Mettre ร  jour le gestionnaire de modรจles + + + <b>Update the "Model Manager"</b> to support the latest models. + <b>Mettez ร  jour le ยซ Model Manager ยป</b> pour prendre en charge les derniers modรจles. DELETE - SUPPRIMER + SUPPRIMER DELETE ALL - SUPPRIMER TOUT + SUPPRIMER TOUT Select a driving model to delete - Sรฉlectionnez un modรจle de conduite ร  supprimer + Sรฉlectionnez un modรจle de conduite ร  supprimer Are you sure you want to delete the "%1" model? - รŠtes-vous sรปr de vouloir supprimer le modรจle "%1" ? + Voulez-vous vraiment supprimer le modรจle ยซ %1 ยป ? Delete - Supprimer + Supprimer Are you sure you want to delete all of your downloaded driving models? - รŠtes-vous sรปr de vouloir supprimer tous vos modรจles de conduite tรฉlรฉchargรฉs ? + รŠtes-vous sรปr de vouloir supprimer tous vos modรจles de conduite tรฉlรฉchargรฉs ? DOWNLOAD - Tร‰Lร‰CHARGER + Tร‰Lร‰CHARGER DOWNLOAD ALL - Tร‰Lร‰CHARGER TOUT + TOUT Tร‰Lร‰CHARGER - Select a driving model to download - Sรฉlectionnez un modรจle de conduite ร  tรฉlรฉcharger + Tinygrad is out of date and must be updated before you can download new models. Update now? + Tinygrad est obsolรจte et doit รชtre mis ร  jour avant que vous puissiez tรฉlรฉcharger de nouveaux modรจles. Mettre ร  jour maintenantย ? + + + Updating Tinygrad will delete all existing Tinygrad-based models which will need to be re-downloaded. Proceed? + La mise ร  jour de Tinygrad supprimera tous les modรจles basรฉs sur Tinygrad existants, qui devront รชtre retรฉlรฉchargรฉs. Continuer ? CANCEL - ANNULER + ANNULER + + + Updating... + Mise ร  jour... + + + Select a driving model to download + Sรฉlectionnez un modรจle de conduite ร  tรฉlรฉcharger ADD - AJOUTER + AJOUTER REMOVE - SUPPRIMER + SUPPRIMER REMOVE ALL - SUPPRIMER TOUT + TOUT SUPPRIMER - There are no more models to blacklist! The only available model is "%1"! - Il n'y a plus de modรจles ร  mettre sur liste noire ! Le seul modรจle disponible est "%1" ! + There are no more driving models to blacklist. The only available model is "%1"! + Il nโ€™y a plus de modรจles de conduite ร  mettre sur liste noire. Le seul modรจle disponible est ยซ %1 ยป ! - Select a model to add to the blacklist - Sรฉlectionnez un modรจle ร  ajouter ร  la liste noire + Select a driving model to add to the blacklist + Sรฉlectionnez un modรจle de conduite ร  ajouter ร  la liste noire Are you sure you want to add the "%1" model to the blacklist? - รŠtes-vous sรปr de vouloir ajouter le modรจle "%1" ร  la liste noire ? + รŠtes-vous sรปr de vouloir ajouter le modรจle ยซ %1 ยป ร  la liste noireย ? Add - Ajouter + Ajouter - Select a model to remove from the blacklist - Sรฉlectionnez un modรจle ร  retirer de la liste noire + Select a driving model to remove from the blacklist + Sรฉlectionnez un modรจle de conduite ร  supprimer de la liste noire Are you sure you want to remove the "%1" model from the blacklist? - รŠtes-vous sรปr de vouloir retirer le modรจle "%1" de la liste noire ? + รŠtes-vous sรปr de vouloir retirer le modรจle ยซ %1 ยป de la liste noire ? Remove - Supprimer + Supprimer - Are you sure you want to remove all of your blacklisted models? - รŠtes-vous sรปr de vouloir supprimer tous vos modรจles sur liste noire ? + Are you sure you want to remove all of your blacklisted driving models? + รŠtes-vous sรปr de vouloir supprimer tous vos modรจles de conduite sur liste noire ? RESET - Rร‰INITIALISER + Rร‰INITIALISER VIEW - VOIR + AFFICHER - Are you sure you want to reset all of your model drives and scores? - รŠtes-vous sรปr de vouloir rรฉinitialiser tous vos lecteurs de modรจle et scores ? + Reset all model drives and ratings? This clears your drive history and collected feedback! + Rรฉinitialiser tous les trajets du modรจle et les รฉvaluations ? Cela efface votre historique de conduite et les retours collectรฉs ! SELECT - SELECT + Sร‰LECTIONNER - Select a model - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC - Sรฉlectionnez un modรจle - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + UPDATE + MISE ร€ JOUR - The "Model Randomizer" only works with downloaded models. Do you want to download all the driving models? - Le "Model Randomizer" fonctionne uniquement avec les modรจles tรฉlรฉchargรฉs. Voulez-vous tรฉlรฉcharger tous les modรจles de conduite ? + Cancelling... + Annulation en cours... + + + Updating Tinygrad will delete existing Tinygrad-based driving models and need to be re-downloaded. Proceed? + La mise ร  jour de Tinygrad supprimera les modรจles de conduite basรฉs sur Tinygrad et ils devront รชtre retรฉlรฉchargรฉs. Continuer ? + + + The "Model Randomizer" works only with downloaded models. Download all models now? + Le ยซ Model Randomizer ยป fonctionne uniquement avec les modรจles tรฉlรฉchargรฉs. Tรฉlรฉcharger tous les modรจles maintenantย ? Offline... - Hors ligne... + Hors ligne... + + + Update available! + Mise ร  jour disponibleย ! + + + Up to date! + ร€ jourย ! + + + Select a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + Sรฉlectionner un modรจle โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + + + + FrogPilotModelReview + + How would you rate that drive? + Comment รฉvalueriez-vous cette conduite ? + + + Model successfully blacklisted! + Modรจle mis sur liste noire avec succรจs ! + + + Drive Rating Selection + Sรฉlection de lโ€™รฉvaluation de conduite + + + Blacklist this model to remove it from rotation + Mettre ce modรจle sur liste noire pour le retirer de la rotation + + + Blacklist Model + Modรจle sur liste noire + + + Model used during that drive: + Modรจle utilisรฉ durant cette conduiteย : + + + Model Rank + Classement du modรจle + + + Model Rating + ร‰valuation du modรจle + + + Model Drives + Trajets du modรจle + + + Total Drives + Trajets totaux + + + #%1 + #%1 + + + %1% + %1% + + + %1 %2 + %1 %2 + + + Drive + Conduire + + + Drives + Trajets + + + %1 Total %2 + %1 Total %2 FrogPilotNavigationPanel - - Manage your %1. - Gรฉrez votre %1. - - - ADD - AJOUTER - - - Enter your %1 - Entrez votre %1 - - - Inputted key is invalid or too short! - La clรฉ saisie est invalide ou trop courte ! - - - Are you sure you want to remove your %1? - รŠtes-vous sรปr de vouloir supprimer votre %1 ? - - - REMOVE - SUPPRIMER - Manage Your Settings At - Gรฉrez vos paramรจtres ร  - - - MapBox - MapBox - - - Amap - Amap - - - Google - Google - - - Destination Search Provider - Fournisseur de recherche de destination - - - The search provider used for destination queries in "Navigate on Openpilot". Options include "MapBox" (recommended), "Amap", and "Google Maps". - Le fournisseur de recherche utilisรฉ pour les requรชtes de destination dans "Navigate on Openpilot". Les options incluent "MapBox" (recommandรฉ), "Amap" et "Google Maps". - - - Amap Key #1 - Clรฉ de l'Amap #1 - - - Manage your Amap key. - Gรฉrez votre clรฉ Amap. - - - Enter your Amap key - Entrez votre clรฉ Amap - - - Are you sure you want to remove your Amap key? - รŠtes-vous sรปr de vouloir supprimer votre clรฉ Amap ? - - - Amap Key #2 - Clรฉ Amap #2 - - - Google Maps Key - Clรฉ Google Maps - - - Manage your Google Maps key. - Gรฉrez votre clรฉ Google Maps. - - - Enter your Google Maps key - Entrez votre clรฉ Google Maps - - - Are you sure you want to remove your Google Maps key? - รŠtes-vous sรปr de vouloir supprimer votre clรฉ Google Maps ? - - - Public Mapbox Key - Clรฉ publique Mapbox - - - Secret Mapbox Key - Clรฉ secrรจte Mapbox - - - MapBox Setup Instructions - Instructions de configuration de MapBox - - - VIEW - VOIR - - - View the instructions to set up "MapBox" for "Primeless Navigation". - Consultez les instructions pour configurer "MapBox" pour "Primeless Navigation". - - - CANCEL - ANNULER - - - Speed Limit Filler - Remplisseur de limite de vitesse - - - Are you sure you want to cancel the speed limit update process? - รŠtes-vous sรปr de vouloir annuler le processus de mise ร  jour de la limite de vitesse ? - - - You have reached the request limit. - -It will reset in %1 hours and %2 minutes. - Vous avez atteint la limite de requรชtes. - -Elle sera rรฉinitialisรฉe dans %1 heures et %2 minutes. - - - This process will take awhile, so it's advised to start when you're done driving with a stable Wi-Fi connection. Do you wish to proceed? - Ce processus prendra un certain temps, il est donc conseillรฉ de commencer lorsque vous avez terminรฉ de conduire avec une connexion Wi-Fi stable. Souhaitez-vous continuer ? - - - Manually Update Speed Limits - Mettre ร  jour manuellement les limites de vitesse - - - Automatically collect missing or incorrect speed limits from your dashboard (if supported), <b>Mapbox</b>, and <b>Navigate-on-openpilot</b> while driving.<br><br>When the car is turned off and connected to Wi-Fi, your speed limit data is automatically processed into a compiled file formatted for the tool located at <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>You can grab the processed file from <b>The Pond</b> via the <b>Download Speed Limits</b> menu.<br><br>Want a more thorough walkthrough? Check out the <b>#speed-limit-filler</b> channel in the <b>FrogPilot Discord</b>! - Collectez automatiquement les limites de vitesse manquantes ou incorrectes depuis votre tableau de bord (si pris en charge), <b>Mapbox</b> et <b>Navigate-on-openpilot</b> pendant la conduite.<br><br>Lorsque la voiture est รฉteinte et connectรฉe au Wi-Fi, vos donnรฉes de limite de vitesse sont automatiquement traitรฉes dans un fichier compilรฉ formatรฉ pour l'outil situรฉ ร  <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>Vous pouvez rรฉcupรฉrer le fichier traitรฉ depuis <b>The Pond</b> via le menu <b>Download Speed Limits</b>.<br><br>Vous voulez un guide plus dรฉtaillรฉ ? Consultez le canal <b>#speed-limit-filler</b> dans le <b>FrogPilot Discord</b> ! - - - Cancelled... - Annulรฉ... - - - Completed! - Terminรฉ ! + Gรฉrez vos paramรจtres sur Offline... - Hors ligne... + Hors ligne... + + + Mapbox + Mapbox + + + Amap + Amap + + + Destination Search Provider + Fournisseur de recherche de destination + + + <b>The search provider used for destination queries</b> in "Navigate on Openpilot". Options include Mapbox (recommended) and Amap. + <b>Le fournisseur de recherche utilisรฉ pour les requรชtes de destination</b> dans ยซ Navigate on Openpilot ยป. Les options incluent Mapbox (recommandรฉ) et Amap. + + + Amap Key #1 + Clรฉ Amap nยฐ1 + + + Amap Key #2 + Clรฉ Amap nยฐ 2 + + + Public Mapbox Key + Clรฉ Mapbox publique + + + Secret Mapbox Key + Clรฉ secrรจte Mapbox + + + Mapbox Setup Instructions + Instructions de configuration Mapbox + + + VIEW + AFFICHER + + + <b>Instructions on how to set up Mapbox</b> for "Primeless Navigation". + <b>Instructions pour configurer Mapbox</b> pour ยซ Primeless Navigation ยป. + + + CANCEL + ANNULER + + + Manually Update Speed Limits + Mettre ร  jour manuellement les limitations de vitesse + + + Speed Limit Filler + Remplisseur de limitation de vitesse + + + <b>Automatically collect missing or incorrect speed limits while you drive</b> using speeds limits sourced from your dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When you're parked and connected to Wi-Fi, FrogPilot will automatically processes this data into a file to be used with the tool located at "SpeedLimitFiller.frogpilot.download".<br><br>You can download this file from "The Pond" in the "Download Speed Limits" menu.<br><br>Need a step-by-step guide? Visit <b>#speed-limit-filler</b> in the FrogPilot Discord! + <b>Collectez automatiquement les limitations de vitesse manquantes ou incorrectes pendant que vous conduisez</b> en utilisant les limitations de vitesse provenant de votre tableau de bord (si pris en charge), de Mapbox et de "Navigate on openpilot".<br><br>Lorsque vous รชtes garรฉ et connectรฉ au Wi-Fi, FrogPilot traitera automatiquement ces donnรฉes en un fichier ร  utiliser avec lโ€™outil situรฉ sur "SpeedLimitFiller.frogpilot.download".<br><br>Vous pouvez tรฉlรฉcharger ce fichier depuis "The Pond" dans le menu "Download Speed Limits".<br><br>Besoin dโ€™un guide รฉtape par รฉtape ? Rendez-vous sur <b>#speed-limit-filler</b> dans le Discord FrogPilot ! + + + Cancel the speed-limit update? + Annuler la mise ร  jour de la limitation de vitesse ? + + + Cancelled... + Annulรฉโ€ฆ + + + You've hit today's request limit. + +It will reset in %1 hours and %2 minutes. + Vous avez atteint la limite de demandes dโ€™aujourdโ€™hui. +Elle sera rรฉinitialisรฉe dans %1 heures et %2 minutes. + + + This process takes a while. It's recommended to start when you're done driving and connected to stable Wi-Fi. Continue? + Ce processus prend un certain temps. Il est recommandรฉ de commencer une fois que vous avez fini de conduire et que vous รชtes connectรฉ ร  un Wi-Fi stable. Continuerย ? + + + <b>Manage your "%1".</b> + <b>Gรฉrez votre ยซย %1ย ยป.</b> + + + ADD + AJOUTER + + + Enter your %1 + Saisissez votre %1 + + + Inputted key is invalid or too short! + La clรฉ saisie est invalide ou trop courteย ! + + + Remove your %1? + Retirer votre %1ย ? + + + REMOVE + RETIRER + + + Completed! + Terminรฉย ! FrogPilotSettingsWindow MANAGE - Gร‰RER + Gร‰RER DRIVING MODEL - MODรˆLE DE CONDUITE + MODรˆLE DE CONDUITE GAS / BRAKE - GAZ / FREIN + GAZ / FREIN STEERING - DIRECTION + DIRECTION MAP DATA - DONNร‰ES CARTOGRAPHIQUES + DONNร‰ES CARTOGRAPHIQUES NAVIGATION - NAVIGATION + NAVIGATION DATA - DATA + DONNร‰ES DEVICE CONTROLS - COMMANDES DE L'APPAREIL + COMMANDES DE Lโ€™APPAREIL UTILITIES - UTILITIES + UTILITAIRES APPEARANCE - APPARENCE + APPARENCE THEME - THรˆME + THรˆME VEHICLE SETTINGS - PARAMรˆTRES DU Vร‰HICULE + Rร‰GLAGES DU Vร‰HICULE WHEEL CONTROLS - COMMANDES AU VOLANT + COMMANDES DU VOLANT Alerts and Sounds - Alertes et sons + Alertes et sons - FrogPilot settings for alert volumes and custom notifications to stay informed about important driving events. - Paramรจtres FrogPilot pour les volumes d'alerte et les notifications personnalisรฉes afin de rester informรฉ des รฉvรฉnements de conduite importants. + <b>Adjust alert volumes and enable custom notifications.</b> + <b>Ajustez les volumes dโ€™alerte et activez les notifications personnalisรฉes.</b> Driving Controls - Commandes de conduite + Commandes de conduite - FrogPilot settings for acceleration, braking, and steering. - Paramรจtres FrogPilot pour l'accรฉlรฉration, le freinage et la direction. + <b>Fine-tune custom FrogPilot acceleration, braking, and steering controls.</b> + <b>Affinez les rรฉglages personnalisรฉs de lโ€™accรฉlรฉration, du freinage et de la direction de FrogPilot.</b> Navigation - Navigation + Navigation - Download map data for <b>Curve Speed Control</b>, <b>Speed Limit Controller</b>, and set up <b>Navigate on openpilot (NOO)</b>. - Tรฉlรฉchargez les donnรฉes cartographiques pour <b>Contrรดle de la vitesse en courbe</b>, <b>Contrรดleur de limite de vitesse</b>, et configurez <b>Navigation sur openpilot (NOO)</b>. + <b>Download map data for the "Speed Limit Controller" and configure "Navigate on openpilot" (NOO).</b> + <b>Tรฉlรฉchargez les donnรฉes cartographiques pour le ยซ Speed Limit Controller ยป et configurez ยซ Navigate on openpilot ยป (NOO).</b> - System Management - Gestion du systรจme + System Settings + Paramรจtres systรจme - Data storage management, debugging tools, device settings, screen behavior settings, system backups, and utilities to maintain, optimize, and troubleshoot FrogPilot. - Gestion du stockage des donnรฉes, outils de dรฉbogage, paramรจtres de l'appareil, paramรจtres de comportement de l'รฉcran, sauvegardes du systรจme et utilitaires pour maintenir, optimiser et dรฉpanner FrogPilot. + <b>Manage backups, device settings, screen options, storage, and tools to keep FrogPilot running smoothly.</b> + <b>Gรฉrez les sauvegardes, les paramรจtres de lโ€™appareil, les options dโ€™รฉcran, le stockage et les outils pour que FrogPilot fonctionne sans accroc.</b> Theme and Appearance - Thรจme et apparence + Thรจme et apparence - FrogPilot settings for the current theme, driving-screen, and the overall user interface. - Paramรจtres FrogPilot pour le thรจme actuel, l'รฉcran de conduite et l'interface utilisateur globale. + <b>Customize the look of the driving screen and interface, including themes!</b> + <b>Personnalisez lโ€™apparence de lโ€™รฉcran de conduite et de lโ€™interface, y compris les thรจmesโ€ฏ!</b> - Vehicle Controls - Commandes du vรฉhicule + Vehicle Settings + Paramรจtres du vรฉhicule - Options unique to supported manufacturers and vehicle fingerprint management. - Options uniques aux fabricants pris en charge et gestion des empreintes digitales des vรฉhicules. + <b>Configure car-specific options and steering wheel button mappings.</b> + <b>Configurez les options spรฉcifiques au vรฉhicule et les mappages des boutons du volant.</b> Minimal - Minimal + Minimal Standard - Standard + Standard Advanced - Avancรฉ + Avancรฉ Developer - Dรฉveloppeur + Dรฉveloppeur Tuning Level - Niveau de rรฉglage + Niveau de rรฉglage - The visibility and complexity of tuning settings. Lower levels simplify the interface by hiding advanced options, while higher levels unlock detailed customization. + Choose your tuning level. Lower levels keep it simple; higher levels unlock more toggles for finer control. Minimal - Ideal for those who prefer simplicity or ease of use Standard - Recommended for most users for a balanced experience -Advanced - Unlocks fine-tuning controls for more experienced users -Developer - Unlocks highly customizable settings for seasoned enthusiasts - La visibilitรฉ et la complexitรฉ des paramรจtres de rรฉglage. Les niveaux infรฉrieurs simplifient l'interface en masquant les options avancรฉes, tandis que les niveaux supรฉrieurs dรฉbloquent une personnalisation dรฉtaillรฉe. +Advanced - Fine-tuning for experienced users +Developer - Highly customizable settings for seasoned enthusiasts + Choisissez votre niveau de rรฉglage. Les niveaux infรฉrieurs restent simples ; les niveaux supรฉrieurs dรฉverrouillent plus dโ€™options pour un contrรดle plus fin. -Minimal - Idรฉal pour ceux qui prรฉfรจrent la simplicitรฉ ou la facilitรฉ d'utilisation -Standard - Recommandรฉ pour la plupart des utilisateurs pour une expรฉrience รฉquilibrรฉe -Avancรฉ - Dรฉbloque des contrรดles de rรฉglage fin pour les utilisateurs plus expรฉrimentรฉs -Dรฉveloppeur - Dรฉbloque des paramรจtres hautement personnalisables pour les passionnรฉs chevronnรฉs +Minimal โ€“ Idรฉal pour ceux qui privilรฉgient la simplicitรฉ ou la facilitรฉ dโ€™utilisation +Standard โ€“ Recommandรฉ pour la plupart des utilisateurs pour une expรฉrience รฉquilibrรฉe +Avancรฉ โ€“ Rรฉglages fins pour utilisateurs expรฉrimentรฉs +Dรฉveloppeur โ€“ Paramรจtres hautement personnalisables pour passionnรฉs chevronnรฉs - WARNING: This unlocks some potentially dangerous settings that can DRASTICALLY alter your driving experience! - AVERTISSEMENT : Cela dรฉverrouille certains paramรจtres potentiellement dangereux qui peuvent modifier DRASTIQUEMENT votre expรฉrience de conduite ! + WARNING: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do! + AVERTISSEMENTย : Ces paramรจtres sont risquรฉs et peuvent modifier radicalement la faรงon dont openpilot conduit. Ne les modifiez que si vous comprenez parfaitement ce quโ€™ils fontย ! + + + All toggle descriptions are currently expanded. You can tap a toggle's name to open or close its description at any time! + Toutes les descriptions des commutateurs sont actuellement dรฉveloppรฉes. Vous pouvez toucher le nom dโ€™un commutateur pour ouvrir ou fermer sa description ร  tout moment ! FrogPilotSoundsPanel - Alert Volume Control - Contrรดle du volume d'alerte + Alert Volume Controller + Contrรดleur du volume des alertes - Adjust the volume for each alert in openpilot. - Ajustez le volume pour chaque alerte dans openpilot. + <b>Set how loud each type of openpilot alert is</b> to keep routine prompts from becoming distracting. + <b>Dรฉfinissez le volume de chaque type dโ€™alerte openpilot</b> pour รฉviter que les rappels courants ne deviennent distrayants. Disengage Volume - Dรฉsengager le volume + Volume de dรฉsactivation - Adjust the volume for alerts like:<br><br><b>Adaptive Cruise Disabled</b><br><b>Brake Pedal Pressed</b><br><b>Parking Brake Engaged</b><br><b>Speed too Low</b> - Ajustez le volume des alertes telles que :<br><br><b>Cruise Adaptatif Dรฉsactivรฉ</b><br><b>Pรฉdale de Frein Enfoncรฉe</b><br><b>Frein de Stationnement Activรฉ</b><br><b>Vitesse trop Basse</b> + <b>Set the volume for alerts when openpilot disengages.</b><br><br>Examples include: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". + <b>Rรฉglez le volume des alertes lors de la dรฉsactivation dโ€™openpilot.</b><br><br>Exemplesย : ยซย Panne du rรฉgulateurย : redรฉmarrez le vรฉhiculeย ยป, ยซย Frein de stationnement actifย ยป, ยซย Pรฉdale enfoncรฉeย ยป. Engage Volume - Engager le volume + Volume dโ€™activation - Adjust the volume for alerts like:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> - Ajustez le volume pour les alertes telles que :<br><br><b>NNFF Torque Controller chargรฉ</b><br><b>openpilot engagรฉ</b> + <b>Set the volume for the chime when openpilot engages</b>, such as after pressing the "RESUME" or "SET" steering wheel buttons. + <b>Rรฉglez le volume du carillon lorsque openpilot sโ€™active</b>, par exemple aprรจs avoir appuyรฉ sur les boutons ยซ RESUME ยป ou ยซ SET ยป du volant. Prompt Volume - Volume de l'invite + Volume des invites - Adjust the volume for alerts like:<br><br><b>Car Detected in Blindspot</b><br><b>Steer Unavailable Below "X"</b><br><b>Speed too Low</b><br><b>Take Control, Turn Exceeds Steering Limit</b> - Ajustez le volume pour les alertes telles que :<br><br><b>Vรฉhicule dรฉtectรฉ dans l'angle mort</b><br><b>Direction indisponible en dessous de "X"</b><br><b>Vitesse trop basse</b><br><b>Reprenez le contrรดle, le virage dรฉpasse la limite de direction</b> + <b>Set the volume for prompts that need attention.</b><br><br>Examples include: "Car Detected in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". + <b>Rรฉglez le volume des invites nรฉcessitant votre attention.</b><br><br>Exemples : ยซ Vรฉhicule dรฉtectรฉ dans lโ€™angle mort ยป, ยซ Direction temporairement indisponible ยป, ยซ Le virage dรฉpasse la limite de braquage ยป. Prompt Distracted Volume - Volume distrait de l'invite + Volume dโ€™alerte de distraction - Adjust the volume for alerts like:<br><br><b>Pay Attention, Driver Distracted</b><br><b>Touch Steering Wheel, Driver Unresponsive</b> - Ajustez le volume pour les alertes telles que :<br><br><b>Attention, conducteur distrait</b><br><b>Touchez le volant, conducteur non rรฉactif</b> + <b>Set the volume for prompts when openpilot detects driver distraction or unresponsiveness.</b><br><br>Examples include: "Pay Attention", "Touch Steering Wheel". + <b>Dรฉfinissez le volume des invites lorsque openpilot dรฉtecte une distraction ou une absence de rรฉaction du conducteur.</b><br><br>Exemplesย : ยซย Soyez attentifย ยป, ยซย Touchez le volantย ยป. Refuse Volume - Volume des dรฉchets + Refuser le volume - Adjust the volume for alerts like:<br><br><b>openpilot Unavailable</b> - Ajustez le volume pour les alertes telles que :<br><br><b>openpilot indisponible</b> + <b>Set the volume for alerts when openpilot refuses to engage.</b><br><br>Examples include: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". + <b>Rรฉgler le volume des alertes lorsque openpilot refuse de sโ€™engager.</b><br><br>Exemplesย : ยซย Frein maintenu actifย ยป, ยซย Porte ouverteย ยป, ยซย Ceinture dรฉtachรฉeย ยป. Warning Soft Volume - Avertissement Volume Doux + Avertissement Volume faible - Adjust the volume for alerts like:<br><br><b>BRAKE!, Risk of Collision</b><br><b>TAKE CONTROL IMMEDIATELY</b> - Ajustez le volume pour les alertes telles que :<br><br><b>FREINEZ ! Risque de collision</b><br><b>PRENEZ LE CONTRร”LE IMMร‰DIATEMENT</b> + <b>Set the volume for softer warnings about potential risks.</b><br><br>Examples include: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". + <b>Rรฉglez le volume pour des avertissements plus doux concernant les risques potentiels.</b><br><br>Exemples : ยซ FREINEZ ! Risque de collision ยป, ยซ Direction temporairement indisponible ยป. Warning Immediate Volume - Avertissement Volume Immรฉdiat + Volume dโ€™alerte immรฉdiate - Adjust the volume for alerts like:<br><br><b>DISENGAGE IMMEDIATELY, Driver Distracted</b><br><b>DISENGAGE IMMEDIATELY, Driver Unresponsive</b> - Ajustez le volume pour les alertes telles que :<br><br><b>Dร‰SACTIVEZ IMMร‰DIATEMENT, Conducteur Distrait</b><br><b>Dร‰SACTIVEZ IMMร‰DIATEMENT, Conducteur Non Rรฉactif</b> + <b>Set the volume for the loudest warnings that require urgent attention.</b><br><br>Examples include: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". + <b>Dรฉfinissez le volume des alertes les plus fortes nรฉcessitant une attention immรฉdiate.</b><br><br>Exemplesย : ยซย DISENGAGE IMMEDIATELY โ€” Driver Distractedย ยป, ยซย DISENGAGE IMMEDIATELY โ€” Driver Unresponsiveย ยป. FrogPilot Alerts - Alertes FrogPilot + Alertes FrogPilot - FrogPilot alerts for various events in openpilot. - Alertes FrogPilot pour divers รฉvรฉnements dans openpilot. + <b>Optional FrogPilot alerts</b> that highlight driving events in a more noticeable way. + <b>Alertes FrogPilot facultatives</b> qui mettent en รฉvidence les รฉvรฉnements de conduite de maniรจre plus visible. - Goat Scream Steering Saturated Alert - Alerte de saturation de direction de cri de chรจvre + Goat Scream + Cri de chรจvre - The infamous "Goat Scream" that has brought both joy and anger to FrogPilot users all around the world! - Le tristement cรฉlรจbre "Cri de Chรจvre" qui a apportรฉ ร  la fois joie et colรจre aux utilisateurs de FrogPilot du monde entier ! + <b>Play the infamous "Goat Scream" when the steering controller reaches its limit.</b> Based on the "Turn Exceeds Steering Limit" event. + <b>Jouer le cรฉlรจbre ยซ cri de chรจvre ยป lorsque le contrรดleur de direction atteint sa limite.</b> Basรฉ sur lโ€™รฉvรฉnement ยซ Le virage dรฉpasse la limite de direction ยป. Green Light Alert - Alerte Lumiรจre Verte + Alerte feu vert - Get an alert when the traffic light changes from red to green. - Recevez une alerte lorsque le feu de circulation passe du rouge au vert. + <b>Play an alert when the model predicts a red light has turned green.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights. This alert is based on end-to-end model predictions from camera input and may trigger even when the light has not changed.</i> + <b>Jouer une alerte lorsque le modรจle prรฉvoit quโ€™un feu rouge est passรฉ au vert.</b><br><br><i><b>Avertissement</b> : openpilot ne dรฉtecte pas explicitement les feux de circulation. Cette alerte est basรฉe sur des prรฉdictions de bout en bout ร  partir des images de la camรฉra et peut se dรฉclencher mรชme lorsque le feu nโ€™a pas changรฉ.</i> Lead Departing Alert - Alerte de dรฉpart du responsable + Alerte de dรฉpart du vรฉhicule de tรชte - Get an alert when the lead vehicle begins to depart from a standstill. - Recevez une alerte lorsque le vรฉhicule de tรชte commence ร  partir d'un arrรชt. + <b>Play an alert when the lead vehicle departs from a stop.</b> + <b>Jouer une alerte lorsque le vรฉhicule de tรชte redรฉmarre aprรจs un arrรชt.</b> Loud "Car Detected in Blindspot" Alert - Alerte "Voiture dรฉtectรฉe dans l'angle mort" + Alerte forte ยซย Vรฉhicule dรฉtectรฉ dans lโ€™angle mortย ยป - A louder alert for when a vehicle is detected in the blindspot when attempting to change lanes. - Une alerte plus forte lorsqu'un vรฉhicule est dรฉtectรฉ dans l'angle mort lors d'une tentative de changement de voie. + <b>Play a louder alert if a vehicle is in the blind spot when attempting to change lanes.</b> Based on the "Car Detected in Blindspot" event. + <b>ร‰mettre une alerte plus forte si un vรฉhicule se trouve dans lโ€™angle mort lors dโ€™une tentative de changement de voie.</b> Basรฉ sur lโ€™รฉvรฉnement ยซ Car Detected in Blindspot ยป. Speed Limit Changed Alert - Alerte de changement de limite de vitesse + Alerte de changement de limite de vitesse - Get an alert when the speed limit changes. - Recevez une alerte lorsque la limite de vitesse change. + <b>Play an alert when the posted speed limit changes.</b> + <b>Jouer une alerte lorsque la limite de vitesse affichรฉe change.</b> Muted - Muet + Muet Auto - Auto + Auto Test - Test + Test FrogPilotThemesPanel - Custom Theme - Thรจme personnalisรฉ + Custom Themes + Thรจmes personnalisรฉs - The overall appearance of openpilot. - L'apparence gรฉnรฉrale d'openpilot. + <b>The overall look and feel of openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Lโ€™apparence gรฉnรฉrale dโ€™openpilot.</b> Utilisez le ยซ Theme Maker ยป dans ยซ The Pond ยป pour crรฉer et partager vos propres thรจmes ! Color Scheme - Schรฉma de couleurs + Schรฉma de couleurs - openpilot's color scheme. - -Want to submit your own color scheme? Share it in the "custom-themes" channel on the FrogPilot Discord! - Schรฉma de couleurs d'openpilot. - -Vous souhaitez soumettre votre propre schรฉma de couleurs ? Partagez-le dans le canal "custom-themes" sur le Discord de FrogPilot ! + <b>The color scheme used throughout openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Le schรฉma de couleurs utilisรฉ dans tout openpilot.</b> Utilisez le ยซ Theme Maker ยป dans ยซ The Pond ยป pour crรฉer et partager vos propres thรจmes ! + + + Distance Button + Bouton de distance + + + <b>The distance button icons shown on the driving screen.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Les icรดnes du bouton de distance affichรฉes sur lโ€™รฉcran de conduite.</b> Utilisez le ยซ Theme Maker ยป dans ยซ The Pond ยป pour crรฉer et partager vos propres thรจmes ! Icon Pack - Pack d'icรดnes + Pack dโ€™icรดnes - openpilot's icon pack. - -Want to submit your own icons? Share them in the "custom-themes" channel on the FrogPilot Discord! - Pack d'icรดnes d'openpilot. - -Vous souhaitez soumettre vos propres icรดnes ? Partagez-les dans le canal "custom-themes" sur le Discord de FrogPilot ! + <b>The icon style used across openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Le style dโ€™icรดne utilisรฉ dans tout openpilot.</b> Utilisez le ยซ Theme Maker ยป dans ยซ The Pond ยป pour crรฉer et partager vos propres thรจmes ! Sound Pack - Pack de sons + Pack de sons - openpilot's sound effects. - -Want to submit your own sounds? Share them in the "custom-themes" channel on the FrogPilot Discord! - Effets sonores d'openpilot. - -Vous souhaitez soumettre vos propres sons ? Partagez-les dans le canal "custom-themes" sur le Discord de FrogPilot ! + <b>The sound pack used by openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Le pack sonore utilisรฉ par openpilot.</b> Utilisez le ยซ Theme Maker ยป dans ยซ The Pond ยป pour crรฉer et partager vos propres thรจmes ! Steering Wheel - Volant + Volant - The steering wheel icon in the top right of the driving screen. - L'icรดne du volant en haut ร  droite de l'รฉcran de conduite. - - - Themed turn signal animations. - -Want to submit your own animations? Share them in the "custom-themes" channel on the FrogPilot Discord! - Translation A - - - Download Status - Tรฉlรฉcharger le statut - - - Holiday Themes - Thรจmes de vacances - - - Holiday-based visual themes for openpilot. Minor holidays last one day; major holidays (Christmas, Easter, Halloween, etc.) continue all week. - Thรจmes visuels basรฉs sur les fรชtes pour openpilot. Les fรชtes mineures durent un jour ; les fรชtes majeures (Noรซl, Pรขques, Halloween, etc.) se poursuivent toute la semaine. - - - Rainbow Path - Chemin Arc-en-ciel - - - The path on the driving screen turns into a Mario Kart inspired "Rainbow Path". - Le chemin sur l'รฉcran de conduite se transforme en un "Chemin Arc-en-ciel" inspirรฉ de Mario Kart. - - - Random Events - ร‰vรฉnements alรฉatoires - - - Random cosmetic events that trigger after certain driving conditions. These events are purely for fun and don't affect driving controls! - ร‰vรฉnements cosmรฉtiques alรฉatoires qui se dรฉclenchent aprรจs certaines conditions de conduite. Ces รฉvรฉnements sont purement pour le plaisir et n'affectent pas les commandes de conduite ! - - - Random Themes - Thรจmes alรฉatoires - - - Cycles through your downloaded themes randomly on each boot, giving every theme in your collection a chance to shine! - Fait dรฉfiler vos thรจmes tรฉlรฉchargรฉs de maniรจre alรฉatoire ร  chaque dรฉmarrage, donnant ร  chaque thรจme de votre collection une chance de briller ! - - - Startup Alert - Alerte de dรฉmarrage - - - The text of the "Startup Alert" message that appears at the beginning of a drive. - Le texte du message "Alerte de dรฉmarrage" qui apparaรฎt au dรฉbut d'un lecteur. - - - DELETE - SUPPRIMER - - - DOWNLOAD - Tร‰Lร‰CHARGER - - - SELECT - SELECT - - - Select a color scheme to delete - Sรฉlectionnez un schรฉma de couleurs ร  supprimer - - - Are you sure you want to delete the "%1" color scheme? - รŠtes-vous sรปr de vouloir supprimer le schรฉma de couleurs "%1" ? - - - Delete - Supprimer - - - Select a color scheme to download - Sรฉlectionnez un schรฉma de couleurs ร  tรฉlรฉcharger - - - Select a color scheme - Sรฉlectionnez un schรฉma de couleurs - - - Select a distance icon pack to delete - Sรฉlectionnez un pack d'icรดnes de distance ร  supprimer - - - Are you sure you want to delete the "%1" distance icon pack? - รŠtes-vous sรปr de vouloir supprimer le pack d'icรดnes de distance "%1" ? - - - Select a distance icon pack to download - Sรฉlectionnez un pack d'icรดnes de distance ร  tรฉlรฉcharger - - - Select a distance icon pack - Sรฉlectionnez un pack d'icรดnes de distance - - - Select an icon pack to delete - Sรฉlectionnez un pack d'icรดnes ร  supprimer - - - Are you sure you want to delete the "%1" icon pack? - รŠtes-vous sรปr de vouloir supprimer le pack d'icรดnes "%1" ? - - - Select an icon pack to download - Sรฉlectionnez un pack d'icรดnes ร  tรฉlรฉcharger - - - Select an icon pack - Sรฉlectionnez un pack d'icรดnes - - - Select a signal animation to delete - Sรฉlectionnez une animation de signal ร  supprimer - - - Are you sure you want to delete the "%1" signal animation? - รŠtes-vous sรปr de vouloir supprimer l'animation du signal "%1" ? - - - Select a signal animation to download - Sรฉlectionnez une animation de signal ร  tรฉlรฉcharger - - - Select a signal animation - Sรฉlectionner une animation de signal - - - Select a sound pack to delete - Sรฉlectionnez un pack de sons ร  supprimer - - - Are you sure you want to delete the "%1" sound pack? - รŠtes-vous sรปr de vouloir supprimer le pack de sons "%1" ? - - - Select a sound pack to download - Sรฉlectionnez un pack de sons ร  tรฉlรฉcharger - - - Select a sound pack - Sรฉlectionnez un pack de sons - - - Select a steering wheel to delete - Sรฉlectionnez un volant ร  supprimer - - - Are you sure you want to delete the "%1" steering wheel? - รŠtes-vous sรปr de vouloir supprimer le volant "%1" ? - - - Select a steering wheel to download - Sรฉlectionnez un volant ร  tรฉlรฉcharger - - - Select a steering wheel - Sรฉlectionnez un volant - - - STOCK - STOCK - - - FROGPILOT - FROGPILOT - - - CUSTOM - PERSONNALISร‰ - - - CLEAR - EFFACER - - - Enter the text for the top half - Entrez le texte pour la moitiรฉ supรฉrieure - - - Characters: 0/%1 - Caractรจres : 0/%1 - - - Enter the text for the bottom half - Entrez le texte pour la moitiรฉ infรฉrieure - - - "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! - ยซ Thรจmes alรฉatoires ยป ne fonctionne qu'avec des thรจmes tรฉlรฉchargรฉs, alors assurez-vous de tรฉlรฉcharger les thรจmes que vous souhaitez utiliser ! - - - CANCEL - ANNULER - - - Are you sure you want to completely reset your startup message? - รŠtes-vous sรปr de vouloir rรฉinitialiser complรจtement votre message de dรฉmarrage ? + <b>The steering-wheel icon</b> shown at the top-right of the driving screen. Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Lโ€™icรดne de volant</b> affichรฉe en haut ร  droite de lโ€™รฉcran de conduite. Utilisez le ยซ Theme Maker ยป dans ยซ The Pond ยป pour crรฉer et partager vos propres thรจmes ! Turn Signal - Clignotant + Clignotant + + + <b>Themed turn-signal animations.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Animations de clignotants ร  thรจme.</b> Utilisez le "Theme Maker" dans "The Pond" pour crรฉer et partager vos propres thรจmes ! + + + Download Status + Statut du tรฉlรฉchargement + + + Holiday Themes + Thรจmes de vacances + + + <b>Themes based on U.S. holidays.</b> Minor holidays last one day; major holidays (Christmas, Easter, Halloween) run for a full week. + <b>Thรจmes basรฉs sur les fรชtes amรฉricaines.</b> Les fรชtes mineures durent une journรฉe ; les fรชtes majeures (Noรซl, Pรขques, Halloween) sโ€™รฉtendent sur une semaine entiรจre. + + + Rainbow Path + Trajectoire arc-en-ciel + + + <b>Color the driving path like a Mario Kartโ€“style "Rainbow Road".</b> + <b>Colorer la trajectoire comme une ยซ Route Arc-en-ciel ยป ร  la Mario Kart.</b> + + + Random Events + ร‰vรฉnements alรฉatoires + + + <b>Occasional on-screen effects triggered by driving conditions.</b> These are purely a visual and don't impact how openpilot drives! + <b>Effets visuels occasionnels ร  lโ€™รฉcran dรฉclenchรฉs par les conditions de conduite.</b> Ils sont purement visuels et nโ€™affectent pas la faรงon dont openpilot conduit ! + + + Random Themes + Thรจmes alรฉatoires + + + <b>Pick a random theme between each drive</b> from the themes you have downloaded. Great for variety without changing settings while driving. + <b>Choisir un thรจme alรฉatoire entre chaque trajet</b> parmi les thรจmes que vous avez tรฉlรฉchargรฉs. Idรฉal pour varier sans modifier les rรฉglages en conduisant. + + + Startup Alert + Alerte de dรฉmarrage + + + <b>Customize the "Startup Alert" message</b> shown at the start of each drive. + <b>Personnalisez le message ยซ Startup Alert ยป</b> affichรฉ au dรฉbut de chaque trajet. + + + DELETE + SUPPRIMER + + + DOWNLOAD + Tร‰Lร‰CHARGER + + + SELECT + Sร‰LECTIONNER + + + Select a color scheme to delete + Sรฉlectionnez un thรจme de couleurs ร  supprimer + + + Delete the "%1" color scheme? + Supprimer le thรจme de couleur ยซ %1 ยป ? + + + Delete + Supprimer + + + Select a color scheme to download + Sรฉlectionnez un thรจme de couleurs ร  tรฉlรฉcharger + + + Select a color scheme + Sรฉlectionnez un schรฉma de couleurs + + + Select a distance icon pack to delete + Sรฉlectionnez un pack dโ€™icรดnes de distance ร  supprimer + + + Delete the "%1" distance icon pack? + Supprimer le pack dโ€™icรดnes de distance ยซ %1 ยป ? + + + Select a distance icon pack to download + Sรฉlectionnez un pack dโ€™icรดnes de distance ร  tรฉlรฉcharger + + + Select a distance icon pack + Sรฉlectionner un pack dโ€™icรดnes de distance + + + Select an icon pack to delete + Sรฉlectionnez un pack dโ€™icรดnes ร  supprimer + + + Delete the "%1" icon pack? + Supprimer le pack dโ€™icรดnes ยซ %1 ยป ? + + + Select an icon pack to download + Sรฉlectionnez un pack dโ€™icรดnes ร  tรฉlรฉcharger + + + Select an icon pack + Sรฉlectionnez un pack dโ€™icรดnes + + + Select a signal animation to delete + Sรฉlectionnez une animation de signal ร  supprimer + + + Delete the "%1" signal animation? + Supprimer lโ€™animation du signal ยซ %1 ยป ? + + + Select a signal animation to download + Sรฉlectionnez une animation de clignotant ร  tรฉlรฉcharger + + + Select a signal animation + Sรฉlectionnez une animation de clignotant + + + Select a sound pack to delete + Sรฉlectionnez un pack sonore ร  supprimer + + + Delete the "%1" sound pack? + Supprimer le pack sonore ยซ %1 ยป ? + + + Select a sound pack to download + Sรฉlectionnez un pack de sons ร  tรฉlรฉcharger + + + Select a sound pack + Sรฉlectionner un pack de sons + + + Select a steering wheel to delete + Sรฉlectionnez un volant ร  supprimer + + + Delete the "%1" steering wheel? + Supprimer le volant ยซ %1 ยป ? + + + Select a steering wheel to download + Sรฉlectionnez un volant ร  tรฉlรฉcharger + + + Select a steering wheel + Sรฉlectionnez un volant + + + STOCK + STOCK + + + FROGPILOT + FROGPILOT + + + CUSTOM + PERSONNALISร‰ + + + CLEAR + EFFACER + + + Enter the text for the top half + Saisissez le texte pour la moitiรฉ supรฉrieure + + + Characters: 0/%1 + Caractรจresย : 0/%1 + + + Enter the text for the bottom half + Saisissez le texte pour la moitiรฉ infรฉrieure + + + Are you sure you want to completely reset your startup message? + รŠtes-vous sรปr de vouloir rรฉinitialiser complรจtement votre message de dรฉmarrage ? + + + "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! + ยซ Thรจmes alรฉatoires ยป ne fonctionne quโ€™avec les thรจmes tรฉlรฉchargรฉs, alors assurez-vous de tรฉlรฉcharger les thรจmes que vous voulez quโ€™il utilise ! + + + CANCEL + ANNULER FrogPilotUtilitiesPanel Debug Mode - Mode de dรฉbogage + Mode dรฉbogage - Debug FrogPilot during the next drive by utilizing all of FrogPilot's developer metrics for either bug reporting, or self-debugging. - Dรฉboguez FrogPilot lors de la prochaine conduite en utilisant toutes les mรฉtriques de dรฉveloppement de FrogPilot pour le signalement de bogues ou l'auto-dรฉbogage. + <b>Use FrogPilot's developer metrics on your next drive</b> to diagnose issues and improve bug reports. + <b>Utilisez les mรฉtriques dรฉveloppeur de FrogPilot lors de votre prochain trajet</b> pour diagnostiquer les problรจmes et amรฉliorer les rapports de bugs. Flash Panda - Panda Flash + Flasher Panda FLASH - FLASH + FLASH - Flash the Panda's firmware. Use if you're running into issues with the Panda. - Flashez le firmware du Panda. Utilisez-le si vous rencontrez des problรจmes avec le Panda. + <b>Reinstall the Panda firmware</b> to fix connection or reliability issues. + <b>Rรฉinstallez le firmware du Panda</b> pour rรฉsoudre les problรจmes de connexion ou de fiabilitรฉ. - Are you sure you want to flash the Panda? - รŠtes-vous sรปr de vouloir flasher le Panda ? + Are you sure you want to flash the Panda firmware? + Voulez-vous vraiment flasher le firmware Panda ? Flash - Flash + Flash Flashing... - Clignotant... + Flashageโ€ฆ Flashed! - Flashรฉ ! + Flashรฉย ! Rebooting... - Redรฉmarrage... + Redรฉmarrageโ€ฆ - Force Started State - ร‰tat de dรฉmarrage forcรฉ + Force Drive State + Forcer lโ€™รฉtat de conduite - Force openpilot either offroad or onroad. - Forcer openpilot soit hors route soit sur route. + <b>Manually set openpilot to be offroad or onroad.</b> + <b>Dรฉfinissez manuellement openpilot en mode offroad ou onroad.</b> OFFROAD - OFFROAD + HORS ROUTE ONROAD - SURROUTE + EN ROUTE OFF - OFF + ARRรŠT Report a Bug or an Issue - Signaler un bug ou un problรจme + Signaler un bug ou un problรจme REPORT - RAPPORT + RAPPORT - Let FrogsGoMoo know about an issue you're facing! - Informez FrogsGoMoo d'un problรจme que vous rencontrez ! + <b>Send a bug report</b> so we can help fix the problem! + <b>Envoyez un rapport de bug</b> pour que nous puissions aider ร  corriger le problรจme ! + + + Please connect to the internet before sending a report! + Veuillez vous connecter ร  Internet avant dโ€™envoyer un rapportย ! I saw an alert that said "openpilot crashed" - J'ai vu une alerte indiquant "openpilot a plantรฉ" + Jโ€™ai vu une alerte indiquant ยซ openpilot a plantรฉ ยป - What's going on? - Que se passe-t-il ? + Acceleration feels harsh or jerky + Lโ€™accรฉlรฉration semble brusque ou saccadรฉe - Please describe what's happening - Veuillez dรฉcrire ce qui se passe. - - - Send Report - Envoyer le rapport - - - What's your Discord username? - Quel est votre nom d'utilisateur Discord ? - - - Your report has been submitted. Thanks for letting us know! - Votre rapport a รฉtรฉ soumis. Merci de nous avoir informรฉs ! - - - Reset Toggles to Default - Rรฉinitialiser les bascules par dรฉfaut - - - RESET - Rร‰INITIALISER - - - Reset all toggles to their default values. - Rรฉinitialiser tous les commutateurs ร  leurs valeurs par dรฉfaut. - - - Are you sure you want to reset all toggles to their default values? - รŠtes-vous sรปr de vouloir rรฉinitialiser tous les commutateurs ร  leurs valeurs par dรฉfaut ? - - - Reset - Rรฉinitialiser - - - Resetting... - Rรฉinitialisation... - - - Reset! - Rรฉinitialiser ! - - - Reset Toggles to Match Stock openpilot - Rรฉinitialiser les commutateurs pour correspondre ร  openpilot d'origine - - - Reset all toggles to match stock openpilot. - Rรฉinitialiser tous les commutateurs pour correspondre ร  l'openpilot d'origine. - - - Are you sure you want to reset all toggles to match stock openpilot? - รŠtes-vous sรปr de vouloir rรฉinitialiser tous les commutateurs pour correspondre ร  l'openpilot d'origine ? - - - Ensure your device has an internet connection before sending a report! - Assurez-vous que votre appareil dispose d'une connexion Internet avant d'envoyer un rapport ! - - - Acceleration feels too harsh or jerky - L'accรฉlรฉration semble trop brutale ou saccadรฉe. - - - An alert confused me and I didnโ€™t know what it meant - Une alerte m'a dรฉroutรฉ et je ne savais pas ce qu'elle signifiait. + An alert was unclear and I didn't know what it meant + Une alerte รฉtait ambiguรซ et je ne savais pas ce quโ€™elle signifiait Braking is too sudden or uncomfortable - Le freinage est trop brusque ou inconfortable. + Le freinage est trop brusque ou inconfortable - Iโ€™m not sure if this is normal or a bug: - Je ne suis pas sรปr si c'est normal ou un bug : + I'm not sure if this is normal or a bug: + Je ne sais pas si cโ€™est normal ou un bugย : - Lane changes donโ€™t work properly or feel unsafe - Les changements de voie ne fonctionnent pas correctement ou semblent dangereux. + My screen froze or is stuck loading something + Mon รฉcran sโ€™est figรฉ ou reste bloquรฉ en cours de chargement - My screen froze or got stuck on loading - Mon รฉcran s'est figรฉ ou est restรฉ bloquรฉ sur le chargement. - - - My steering wheel buttons arenโ€™t working - Les boutons de mon volant ne fonctionnent pas. + My steering wheel buttons aren't working + Mes boutons de volant ne fonctionnent pas openpilot disengages when I don't expect it - openpilot se dรฉsengage quand je ne m'y attends pas - - - openpilot doesnโ€™t resume after I stop - openpilot ne reprend pas aprรจs que je m'arrรชte + openpilot se dรฉsengage quand je ne mโ€™y attends pas openpilot doesn't react to stopped vehicles ahead - openpilot ne rรฉagit pas aux vรฉhicules arrรชtรฉs devant + openpilot ne rรฉagit pas aux vรฉhicules arrรชtรฉs devant + + + openpilot doesn't resume from a stop + openpilot ne redรฉmarre pas aprรจs un arrรชt openpilot feels sluggish or slow to respond - openpilot semble lent ou rรฉagit lentement + openpilot semble lent ou rรฉagit avec lenteur Steering feels twitchy or unnatural - La direction semble nerveuse ou peu naturelle + La direction semble nerveuse ou artificielle - The car doesnโ€™t follow curves well - La voiture ne suit pas bien les courbes. + The car doesn't follow curves well + La voiture ne suit pas bien les virages - The car isnโ€™t staying centered in its lane - La voiture ne reste pas centrรฉe dans sa voie. - - - The speed or display info looks wrong - La vitesse ou les informations d'affichage semblent incorrectes. + The car isn't staying centered in its lane + La voiture ne reste pas centrรฉe dans sa voie Something else (please describe) - Autre chose (veuillez dรฉcrire) + Autre chose (veuillez dรฉcrire) + + + What's going on? + Que se passe-t-il ? + + + Please describe what's happening + Veuillez dรฉcrire ce qui se passe + + + Send Report + Envoyer le rapport + + + What's your Discord username? + Quel est ton nom dโ€™utilisateur Discord ? + + + Report Sent! Thanks for letting us know! + Rapport envoyรฉ ! Merci de nous en avoir informรฉs ! + + + Reset Toggles to Default + Rรฉinitialiser les bascules par dรฉfaut + + + RESET + Rร‰INITIALISER + + + <b>Reset all toggles to their default values.</b> + <b>Rรฉinitialisez tous les commutateurs ร  leurs valeurs par dรฉfaut.</b> + + + Are you sure you want to reset all toggles to their default values? + Voulez-vous vraiment rรฉinitialiser tous les commutateurs ร  leurs valeurs par dรฉfautย ? + + + Reset + Rรฉinitialiser + + + Resetting... + Rรฉinitialisationโ€ฆ + + + Reset! + Rรฉinitialiser ! + + + Reset Toggles to Stock openpilot + Rรฉinitialiser les commutateurs aux valeurs par dรฉfaut dโ€™openpilot + + + <b>Reset all toggles to match stock openpilot.</b> + <b>Rรฉinitialiser tous les commutateurs pour correspondre ร  openpilot dโ€™origine.</b> + + + Are you sure you want to reset all toggles to match stock openpilot? + Voulez-vous vraiment rรฉinitialiser tous les commutateurs pour correspondre ร  lโ€™openpilot dโ€™origine ? FrogPilotVehiclesPanel - Select Make - Sรฉlectionner la marque + Car Make + Marque de voiture SELECT - SELECT + Sร‰LECTIONNER - Select a Make - Sรฉlectionnez une marque + Choose your car make + Choisissez la marque de votre voiture - Select Model - Sรฉlectionner le modรจle + Car Model + Modรจle de voiture - Select a Model - Sรฉlectionner un modรจle + Choose your car model + Choisissez votre modรจle de voiture Disable Automatic Fingerprint Detection - Dรฉsactiver la dรฉtection automatique des empreintes digitales + Dรฉsactiver la dรฉtection automatique des empreintes - Forces the selected fingerprint and prevents it from ever changing. - Force l'empreinte digitale sรฉlectionnรฉe et empรชche tout changement ultรฉrieur. + <b>Force the selected fingerprint</b> and prevent it from ever changing. + <b>Forcer lโ€™empreinte sรฉlectionnรฉe</b> et empรชcher quโ€™elle ne change jamais. Disable openpilot Longitudinal Control - Dรฉsactiver le contrรดle longitudinal d'openpilot + Dรฉsactiver le contrรดle longitudinal dโ€™openpilot - Disables openpilot longitudinal control and uses the car's stock ACC instead. - Dรฉsactive le contrรดle longitudinal d'openpilot et utilise ร  la place le rรฉgulateur de vitesse adaptatif (ACC) d'origine de la voiture. + <b>Disable openpilot longitudinal</b> and use the car's stock ACC instead. + <b>Dรฉsactivez la rรฉgulation longitudinale dโ€™openpilot</b> et utilisez plutรดt lโ€™ACC dโ€™origine du vรฉhicule. Are you sure you want to completely disable openpilot longitudinal control? - รŠtes-vous sรปr de vouloir dรฉsactiver complรจtement le contrรดle longitudinal d'openpilot ? + Voulez-vous vraiment dรฉsactiver complรจtement le contrรดle longitudinal dโ€™openpilot ? General Motors Settings - Paramรจtres de General Motors + Paramรจtres General Motors - Settings specific to <b>General Motors</b> vehicles. - Paramรจtres spรฉcifiques aux vรฉhicules <b>General Motors</b>. + <b>FrogPilot features for General Motors vehicles.</b> + <b>Fonctionnalitรฉs FrogPilot pour les vรฉhicules General Motors.</b> FrogsGoMoo's Experimental Tune - L'Expรฉrimentation Musicale de FrogsGoMoo + Rรฉglage expรฉrimental de FrogsGoMoo - <b>FrogsGoMoo's</b> experimental <b>General Motors</b> tune that aims to smoothen out stopping and takeoff control based on nothing but guesswork. Use at your own risk! - <b>FrogsGoMoo</b> expรฉrimental <b>General Motors</b> rรฉglage qui vise ร  adoucir le contrรดle de l'arrรชt et du dรฉmarrage basรฉ uniquement sur des suppositions. Utilisez ร  vos propres risques ! + <b>Experimental GM tune by FrogsGoMoo</b> that attempts to smoothen stopping and takeoff control. Use at your own risk! + <b>Rรฉglage GM expรฉrimental par FrogsGoMoo</b> visant ร  rendre lโ€™arrรชt et le dรฉmarrage plus fluides. Utilisez ร  vos risques et pรฉrils ! Smooth Pedal Response on Hills - Rรฉponse douce de la pรฉdale en montรฉe + Rรฉponse de pรฉdale fluide en cรดte - Smoothen the acceleration and braking when driving uphill or downhill. - Adoucissez l'accรฉlรฉration et le freinage lors de la conduite en montรฉe ou en descente. + <b>Smoothen acceleration and braking</b> when driving downhill/uphill. + <b>Adoucissez lโ€™accรฉlรฉration et le freinage</b> lors de la conduite en descente/en montรฉe. - Stop and Go Hack - Arrรชt et Go Hack + Stop-and-Go Hack + Hack Stop-and-Go - Force stop and go on the <b>2017 Chevy Volt</b>. - Arrรชt forcรฉ et dรฉmarrage sur la <b>Chevy Volt 2017</b>. + <b>Force stop-and-go</b> on the 2017 Chevy Volt. + <b>Forcez lโ€™arrรชt-redรฉmarrage</b> sur la Chevy Volt 2017. Hyundai/Kia/Genesis Settings - Paramรจtres Hyundai/Kia/Genesis + Paramรจtres Hyundai/Kia/Genesis - Settings specific to <b>Hyundai</b>, <b>Kia</b>, and <b>Genesis</b> vehicles. - Paramรจtres spรฉcifiques aux vรฉhicules <b>Hyundai</b>, <b>Kia</b> et <b>Genesis</b>. + <b>FrogPilot features for Genesis, Hyundai, and Kia vehicles.</b> + <b>Fonctionnalitรฉs FrogPilot pour les vรฉhicules Genesis, Hyundai et Kia.</b> comma's New Longitudinal API - Nouvelle API longitudinale de comma + La nouvelle API longitudinale de comma - comma's new longitudinal control system that has shown great improvement with acceleration and braking, but has issues on some <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> vehicles. - le nouveau systรจme de contrรดle longitudinal de comma qui a montrรฉ une grande amรฉlioration avec l'accรฉlรฉration et le freinage, mais qui prรฉsente des problรจmes sur certains vรฉhicules <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b>. + <b>comma's new gas and brake control system</b> that improves acceleration and braking but may cause issues on some Genesis/Hyundai/Kia vehicles. + <b>le nouveau systรจme de commande dโ€™accรฉlรฉrateur et de frein de comma</b> qui amรฉliore lโ€™accรฉlรฉration et le freinage mais peut causer des problรจmes sur certains vรฉhicules Genesis/Hyundai/Kia. "Taco Bell Run" Torque Hack - Taco Bell Run" Torque Hack + ยซย Taco Bell Runย ยป Hack de couple - The torque hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to improve turning at low speeds by increasing the allowed steering torque. - Le hack de couple du trajet "Taco Bell Run" de comma en 2022. Conรงu pour amรฉliorer les virages ร  basse vitesse en augmentant le couple de direction autorisรฉ. + <b>The steering torque hack from comma's 2022 "Taco Bell Run".</b> Designed to increase steering torque at low speeds for left and right turns. + <b>Le piratage du couple de direction issu du ยซ Taco Bell Run ยป de comma en 2022.</b> Conรงu pour augmenter le couple de direction ร  basse vitesse pour les virages ร  gauche et ร  droite. Toyota/Lexus Settings - Paramรจtres Toyota/Lexus + Paramรจtres Toyota/Lexus - Settings specific to <b>Toyota</b> and <b>Lexus</b> vehicles. - Paramรจtres spรฉcifiques aux vรฉhicules <b>Toyota</b> et <b>Lexus</b>. + <b>FrogPilot features for Lexus and Toyota vehicles.</b> + <b>Fonctionnalitรฉs FrogPilot pour les vรฉhicules Lexus et Toyota.</b> Automatically Lock/Unlock Doors - Verrouiller/Dรฉverrouiller automatiquement les portes + Verrouillage/Dรฉverrouillage automatiques des portes - Automatically lock the doors when shifting into drive and unlock them when shifting into park. - Verrouiller automatiquement les portes en passant en mode conduite et les dรฉverrouiller en passant en mode stationnement. + <b>Automatically lock/unlock doors</b> when shifting in and out of drive. + <b>Verrouiller/dรฉverrouiller automatiquement les portes</b> lors du passage en mode conduite et en sortie de ce mode. - Cluster Speed Offset - Dรฉcalage de vitesse du cluster + Dashboard Speed Offset + Dรฉcalage de vitesse du tableau de bord - The cluster speed offset used by openpilot to match the speed displayed on the dash. - Le dรฉcalage de vitesse du cluster utilisรฉ par openpilot pour correspondre ร  la vitesse affichรฉe sur le tableau de bord. + <b>The speed offset openpilot uses to match the speed on the dashboard display.</b> + <b>Le dรฉcalage de vitesse quโ€™openpilot utilise pour correspondre ร  la vitesse affichรฉe sur le tableau de bord.</b> FrogsGoMoo's Personal Tweaks - Les ajustements personnels de FrogsGoMoo + Ajustements personnels de FrogsGoMoo - <b>FrogsGoMoo's</b> personal tweaks for quicker acceleration and smoother braking. - <b>Les ajustements personnels de FrogsGoMoo</b> pour une accรฉlรฉration plus rapide et un freinage plus fluide. + <b>Personal tweaks by FrogsGoMoo for quicker acceleration and smoother braking.</b> + <b>Ajustements personnels par FrogsGoMoo pour une accรฉlรฉration plus rapide et un freinage plus fluide.</b> Lock Doors On Ignition Off After - Verrouiller les portes ร  l'arrรชt du moteur aprรจs + Verrouiller les portes aprรจs coupure du contact - Automatically lock the doors after the car's ignition has been turned off and no one is detected in either of the front seats. - Verrouille automatiquement les portes aprรจs que le contact de la voiture a รฉtรฉ coupรฉ et qu'aucune personne n'est dรฉtectรฉe dans l'un des siรจges avant. + <b>Automatically lock the doors on ignition off</b> when no one is detected in the front seats. + <b>Verrouiller automatiquement les portes ร  la coupure du contact</b> lorsquโ€™aucune personne nโ€™est dรฉtectรฉe sur les siรจges avant. - Force stop and go on <b>Toyota</b>/<b>Lexus</b> vehicles without stock stop and go functionality. - Arrรชt forcรฉ et dรฉmarrage sur les vรฉhicules <b>Toyota</b>/<b>Lexus</b> sans fonctionnalitรฉ d'arrรชt et de dรฉmarrage d'origine. + <b>Force stop-and-go</b> on Lexus/Toyota vehicles without stock stop-and-go functionality. + <b>Forcer lโ€™arrรชt-redรฉmarrage</b> sur les vรฉhicules Lexus/Toyota dรฉpourvus de la fonctionnalitรฉ dโ€™arrรชt-redรฉmarrage dโ€™origine. MANAGE - Gร‰RER + Gร‰RER Lock - Verrouiller + Verrouiller Unlock - Dรฉverrouiller + Dรฉverrouiller Never - Jamais + Jamais seconds - secondes + secondes + + + None + Aucun + + + Vehicle Info + Infos vรฉhicule + + + <b>Information about your vehicle in regards to openpilot support and functionality.</b> + <b>Informations sur votre vรฉhicule concernant la prise en charge et les fonctionnalitรฉs dโ€™openpilot.</b> + + + <b>Detected 3rd party hardware.</b> + <b>Matรฉriel tiers dรฉtectรฉ.</b> + + + openpilot Longitudinal Support + Prise en charge longitudinale dโ€™openpilot + + + <b>Can openpilot control the vehicle's acceleration and braking?</b> + <b>openpilot peut-il contrรดler l'accรฉlรฉration et le freinage du vรฉhicule ?</b> + + + <b>Does your vehicle support the "comma pedal"?</b> + <b>Votre vรฉhicule prend-il en charge la ยซ comma pedal ยป ?</b> + + + Radar Support + Prise en charge du radar + + + <b>Does openpilot use the vehicle's radar data</b> alongside the device's camera for tracking lead vehicles? + <b>openpilot utilise-t-il les donnรฉes radar du vรฉhicule</b> en plus de la camรฉra de lโ€™appareil pour suivre les vรฉhicules de tรชteย ? + + + SDSU Support + Assistance SDSU + + + <b>Does your vehicle support "SDSUs"?</b> + <b>Votre vรฉhicule prend-il en charge les ยซ SDSUs ยป ?</b> + + + Stop-and-Go Support + Prise en charge du Stop-and-Go + + + <b>Does your vehicle support stop-and-go driving?</b> + <b>Votre vรฉhicule prend-il en charge la conduite avec arrรชts et redรฉmarragesโ€ฏ?</b> + + + VIEW + AFFICHER + + + Yes + Oui + + + No + Non + + + 3rd Party Hardware Detected + Matรฉriel tiers dรฉtectรฉ + + + Blind Spot Support + Assistance dโ€™angle mort + + + <b>Does openpilot use the vehicle's blind spot data?</b> + <b>openpilot utilise-t-il les donnรฉes dโ€™angle mort du vรฉhicule ?</b> + + + comma Pedal Support + Prise en charge de comma Pedal FrogPilotVisualsPanel Advanced UI Controls - Contrรดles d'interface utilisateur avancรฉs + Contrรดles dโ€™interface avancรฉs - Advanced settings for fine-tuning openpilot's driving screen. - Paramรจtres avancรฉs pour le rรฉglage fin de l'รฉcran de conduite d'openpilot. + <b>Advanced visual changes</b> to fine-tune how the driving screen looks. + <b>Modifications visuelles avancรฉes</b> pour affiner lโ€™apparence de lโ€™รฉcran de conduite. Hide Current Speed - Masquer la vitesse actuelle + Masquer la vitesse actuelle - Hide the current speed from the driving screen. - Masquer la vitesse actuelle de l'รฉcran de conduite. + <b>Hide the current speed</b> from the driving screen. + <b>Masquer la vitesse actuelle</b> de lโ€™รฉcran de conduite. Hide Lead Marker - Masquer le marqueur de plomb + Masquer le repรจre du vรฉhicule prรฉcรฉdent - Hide the marker for lead vehicles from the driving screen. - Masquer le marqueur pour les vรฉhicules de tรชte de l'รฉcran de conduite. + <b>Hide the lead-vehicle marker</b> from the driving screen. + <b>Masquer le marqueur du vรฉhicule de tรชte</b> sur lโ€™รฉcran de conduite. Hide Map Settings Button - Masquer le bouton des paramรจtres de la carte + Masquer le bouton des paramรจtres de la carte - Hide the map settings button from the driving screen. - Masquer le bouton des paramรจtres de la carte de l'รฉcran de conduite. + <b>Hide the map settings button or map</b> from the driving screen. + <b>Masquer le bouton des paramรจtres de la carte ou la carte</b> de lโ€™รฉcran de conduite. Hide Max Speed - Masquer la vitesse maximale + Masquer la vitesse maximale - Hide the max speed from the driving screen. - Masquer la vitesse maximale de l'รฉcran de conduite. + <b>Hide the max speed</b> from the driving screen. + <b>Masquer la vitesse maximale</b> de lโ€™รฉcran de conduite. Hide Non-Critical Alerts - Masquer les alertes non critiques + Masquer les alertes non critiques - Hide non-critical alerts from the driving screen. - Masquer les alertes non critiques de l'รฉcran de conduite. + <b>Hide non-critical alerts</b> from the driving screen. + <b>Masquer les alertes non critiques</b> sur lโ€™รฉcran de conduite. Hide Speed Limits - Masquer les limites de vitesse + Masquer les limitations de vitesse - Hide the speed limits from the driving screen. - Masquer les limites de vitesse de l'รฉcran de conduite. + <b>Hide posted speed limits</b> from the driving screen. + <b>Masquer les limitations de vitesse affichรฉes</b> sur lโ€™รฉcran de conduite. Use Wheel Speed - Utiliser la vitesse de la roue + Utiliser la vitesse roue - Use the vehicle's wheel speed instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives. - Utilisez la vitesse des roues du vรฉhicule au lieu de la vitesse du tableau de bord. Il s'agit d'un changement purement visuel et n'affecte pas la faรงon dont openpilot conduit. + <b>Use the vehicle's wheel speed</b> instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives! + <b>Utiliser la vitesse des roues du vรฉhicule</b> au lieu de la vitesse affichรฉe au tableau de bord. Il sโ€™agit dโ€™un changement purement visuel qui nโ€™affecte pas la faรงon dont openpilot conduit ! Developer UI - Interface utilisateur du dรฉveloppeur + Interface dรฉveloppeur - Detailed information about openpilot's internal operations. - Informations dรฉtaillรฉes sur le fonctionnement interne d'openpilot. + <b>Detailed information about openpilot's internal operations.</b> + <b>Informations dรฉtaillรฉes sur le fonctionnement interne dโ€™openpilot.</b> Adjacent Path Metrics - Mรฉtriques de chemin adjacentes + Mรฉtriques du chemin adjacent - Metrics displayed on top of the adjacent lanes measuring their current width. - Les mesures affichรฉes au-dessus des voies adjacentes indiquent leur largeur actuelle. + <b>Show the width of the adjacent lanes.</b> + <b>Afficher la largeur des voies adjacentes.</b> Developer Metrics - Mรฉtriques de dรฉveloppeur + Mรฉtriques dรฉveloppeur - Performance data, sensor readings, and system metrics for debugging and optimizing openpilot. - Donnรฉes de performance, relevรฉs de capteurs et mรฉtriques systรจme pour le dรฉbogage et l'optimisation d'openpilot. + <b>Performance data, sensor readings, and system metrics</b> for debugging and optimizing openpilot. + <b>Donnรฉes de performance, lectures des capteurs et mรฉtriques systรจme</b> pour le dรฉbogage et lโ€™optimisation dโ€™openpilot. Border Metrics - Mรฉtriques de frontiรจre + Mรฉtriques de bordure - Metrics displayed around the border of the driving screen.<br><br><b>Blind Spot</b>: Turn the border red when a vehicle is detected in a blind spot<br><b>Steering Torque</b>: Highlight the border green to red in accordance to the amount of steering torque being used<br><b>Turn Signal</b>: Flash the border yellow when a turn signal is active - Les mesures affichรฉes autour de la bordure de l'รฉcran de conduite.<br><br><b>Angle mort</b> : Tourner la bordure en rouge lorsqu'un vรฉhicule est dรฉtectรฉ dans un angle mort<br><b>Couple de direction</b> : Mettre en surbrillance la bordure du vert au rouge en fonction de la quantitรฉ de couple de direction utilisรฉe<br><b>Clignotant</b> : Faire clignoter la bordure en jaune lorsqu'un clignotant est actif + <b>Show statuses along the border of the driving screen.</b><br><br><b>Blind Spot</b>: The border turns red when a vehicle is in a blind spot<br><b>Steering Torque</b>: The border goes from green to red according to how much steering torque is being used<br><b>Turn Signal</b>: The border flashes yellow when a turn signal is on + <b>Afficher les statuts le long de la bordure de lโ€™รฉcran de conduite.</b><br><br><b>Angle mort</b> : La bordure devient rouge lorsquโ€™un vรฉhicule est dans un angle mort<br><b>Couple de direction</b> : La bordure passe du vert au rouge selon la quantitรฉ de couple de direction utilisรฉe<br><b>Clignotant</b> : La bordure clignote en jaune lorsquโ€™un clignotant est activรฉ Lead Info - Informations sur le prospect + Infos vรฉhicule prรฉcรฉdent - Metrics displayed under vehicle markers listing their distance and current speed. - Les mรฉtriques affichรฉes sous les marqueurs de vรฉhicule indiquent leur distance et leur vitesse actuelle. + <b>Show each tracked vehicle's distance and speed</b> below its marker. + <b>Afficher la distance et la vitesse de chaque vรฉhicule suivi</b> sous son marqueur. FPS Display - Affichage FPS + Affichage FPS - Display the <b>Frames Per Second (FPS)</b> at the bottom of the driving screen. - Afficher les <b>images par seconde (FPS)</b> en bas de l'รฉcran de conduite. + <b>Show the frames per second (FPS)</b> at the bottom of the driving screen. + <b>Afficher les images par seconde (FPS)</b> en bas de lโ€™รฉcran de conduite. Numerical Temperature Gauge - Jauge de tempรฉrature numรฉrique + Jauge de tempรฉrature numรฉrique - Use numerical temperature readings instead of status labels in the sidebar. - Utilisez des relevรฉs de tempรฉrature numรฉriques au lieu des รฉtiquettes de statut dans la barre latรฉrale. - - - Display system information (<b>CPU</b>, <b>GPU</b>, <b>RAM usage</b>, <b>IP address</b>, <b>device storage</b>) in the sidebar. - Afficher les informations systรจme (<b>CPU</b>, <b>GPU</b>, <b>utilisation de la RAM</b>, <b>adresse IP</b>, <b>stockage de l'appareil</b>) dans la barre latรฉrale. - - - Use International System of Units - Utiliser le Systรจme international d'unitรฉs - - - Display measurements using the <b>International System of Units (SI)</b> standard. - Afficher les mesures en utilisant la norme du <b>Systรจme international d'unitรฉs (SI)</b>. - - - Developer Sidebar - Barre latรฉrale du dรฉveloppeur - - - Display debugging info and metrics in a dedicated sidebar on the right side of the screen. - Afficher les informations de dรฉbogage et les mรฉtriques dans une barre latรฉrale dรฉdiรฉe sur le cรดtรฉ droit de l'รฉcran. - - - Metric #1 - Mรฉtrique nยฐ1 - - - Metric to display in the first metric in the "Developer Sidebar". - Mรฉtrique ร  afficher dans la premiรจre mรฉtrique de la "Barre latรฉrale du dรฉveloppeur". - - - Metric #2 - Mรฉtrique nยฐ2 - - - Metric to display in the second metric in the "Developer Sidebar". - Mรฉtrique ร  afficher dans la deuxiรจme mรฉtrique de la "Barre latรฉrale du dรฉveloppeur". - - - Metric #3 - Mรฉtrique nยฐ3 - - - Metric to display in the third metric in the "Developer Sidebar". - Mรฉtrique ร  afficher dans la troisiรจme mรฉtrique de la "Barre latรฉrale du dรฉveloppeur". - - - Metric #4 - Mรฉtrique nยฐ4 - - - Metric to display in the fourth metric in the "Developer Sidebar". - Mรฉtrique ร  afficher dans la quatriรจme mรฉtrique de la "Barre latรฉrale du dรฉveloppeur". - - - Metric #5 - Mรฉtrique nยฐ5 - - - Metric to display in the fifth metric in the "Developer Sidebar". - Mรฉtrique ร  afficher dans la cinquiรจme mรฉtrique de la "Barre latรฉrale du dรฉveloppeur". - - - Metric #6 - Mรฉtrique nยฐ6 - - - Metric to display in the sixth metric in the "Developer Sidebar". - Mรฉtrique ร  afficher dans la sixiรจme mรฉtrique de la "Barre latรฉrale du dรฉveloppeur". - - - Metric #7 - Mรฉtrique nยฐ7 - - - Metric to display in the seventh metric in the "Developer Sidebar". - Mรฉtrique ร  afficher dans la septiรจme mรฉtrique de la "Barre latรฉrale du dรฉveloppeur". - - - Developer Widgets - Widgets de dรฉveloppeur - - - Overlays displaying debugging visuals, internal states, and model predictions on the driving screen. - Superpositions affichant des visuels de dรฉbogage, des รฉtats internes et des prรฉdictions de modรจles sur l'รฉcran de conduite. - - - Adjacent Leads Tracking - Suivi des pistes adjacentes - - - Adjacent leads detected by the car's radar to the left and right of the current driving path. - Des pistes adjacentes dรฉtectรฉes par le radar de la voiture ร  gauche et ร  droite du chemin de conduite actuel. - - - Model Stopping Point - Point d'arrรชt du modรจle - - - Display an image on the screen where openpilot is wanting to stop. - Afficher une image ร  l'รฉcran oรน openpilot souhaite s'arrรชter. - - - Radar Tracks - Pistes radar - - - Display all of the radar points produced by the car's radar. - Afficher tous les points radar produits par le radar de la voiture. - - - Driving Screen Widgets - Widgets d'รฉcran de conduite - - - Custom FrogPilot widgets for the driving screen. - Widgets personnalisรฉs FrogPilot pour l'รฉcran de conduite. - - - Acceleration Path - Chemin d'accรฉlรฉration - - - Colorize the driving path based on openpilot's current desired acceleration and deceleration rate. - Colorer le chemin de conduite en fonction du taux d'accรฉlรฉration et de dรฉcรฉlรฉration souhaitรฉ par openpilot. - - - Adjacent Lanes - Voies adjacentes - - - Driving paths for the left and right adjacent lanes. - Trajets pour les voies adjacentes gauche et droite. - - - Blind Spot Path - Chemin de l'angle mort - - - Display a red driving path for detected vehicles in the corresponding lane's blind spot. - Afficher un chemin de conduite rouge pour les vรฉhicules dรฉtectรฉs dans l'angle mort de la voie correspondante. - - - Compass - Boussole - - - A compass to show the current driving direction. - Une boussole pour indiquer la direction de conduite actuelle. - - - Driving Personality Button - Bouton de personnalitรฉ de conduite - - - Display the current driving personality on the screen. Tap to switch personalities, or long press for 0.5 seconds to change the current state of <b>Experimental Mode</b>, or 2.5 seconds for <b>Traffic Mode</b>. - Afficher la personnalitรฉ de conduite actuelle ร  l'รฉcran. Appuyez pour changer de personnalitรฉ, ou appuyez longuement pendant 0,5 seconde pour changer l'รฉtat actuel du <b>Mode Expรฉrimental</b>, ou 2,5 secondes pour le <b>Mode Trafic</b>. - - - Gas / Brake Pedal Indicators - Indicateurs de pรฉdale d'accรฉlรฉrateur / frein - - - Pedals to indicate when either of the pedals are currently being used.<br><br><b>Dynamic</b>: The pedals change in opacity in accordance to how much openpilot is accelerating or decelerating<br><b>Static</b>: The pedals are displayed with full opacity when active, and dimmed when not in use - Pรฉdales pour indiquer quand l'une des pรฉdales est actuellement utilisรฉe.<br><br><b>Dynamique</b> : Les pรฉdales changent d'opacitรฉ en fonction de la quantitรฉ d'accรฉlรฉration ou de dรฉcรฉlรฉration d'openpilot<br><b>Statique</b> : Les pรฉdales sont affichรฉes avec une opacitรฉ totale lorsqu'elles sont actives, et attรฉnuรฉes lorsqu'elles ne sont pas utilisรฉes - - - Rotating Steering Wheel - Volant de direction rotatif - - - Rotate the steering wheel alongside the vehicle's physical steering wheel. - Tournez le volant en mรชme temps que le volant physique du vรฉhicule. - - - Model UI - Interface utilisateur du modรจle - - - Model visualizations on the driving screen for the driving path, lane lines, path edges, and road edges. - Visualisations du modรจle sur l'รฉcran de conduite pour le chemin de conduite, les lignes de voie, les bords du chemin et les bords de la route. - - - Dynamic Path Width - Largeur de chemin dynamique - - - Adjust the width of the driving path based on the current engagement state.<br><br><b>Fully engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Fully disengaged</b>: 50% - Ajustez la largeur du chemin de conduite en fonction de l'รฉtat d'engagement actuel.<br><br><b>Pleinement engagรฉ</b> : 100%<br><b>Latรฉral toujours activรฉ</b> : 75%<br><b>Pleinement dรฉsengagรฉ</b> : 50% - - - Lane Lines Width - Largeur des lignes de voie - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 4 inches. - L'รฉpaisseur des lignes de voie sur l'รฉcran de conduite.<br><br><b>Par dรฉfaut, elle correspond ร  la norme de largeur de ligne de voie de 4 pouces du <b>MUTCD</b>. - - - Path Edges Width - Largeur des bords du chemin - - - The width of the edges of the driving path that represent different driving modes and statuses.<br><br>Default is <b>20%</b> of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden - La largeur des bords du chemin de conduite qui reprรฉsentent diffรฉrents modes et statuts de conduite.<br><br>Par dรฉfaut, elle est de <b>20%</b> de la largeur totale du chemin.<br><br>Guide des couleurs :<br><br>- <b>Bleu</b> : Navigation<br>- <b>Bleu clair</b> : Toujours en mode latรฉral<br>- <b>Vert</b> : Par dรฉfaut<br>- <b>Orange</b> : Mode expรฉrimental<br>- <b>Rouge</b> : Mode trafic<br>- <b>Jaune</b> : Mode expรฉrimental conditionnel annulรฉ - - - Path Width - Largeur du chemin - - - Road Edges Width - Largeur des bords de route - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 4 inches. - L'รฉpaisseur des bords de la route sur l'รฉcran de conduite.<br><br><b>Par dรฉfaut, elle correspond ร  la moitiรฉ de la largeur standard de la ligne de voie du <b>MUTCD</b> de 4 pouces. - - - "Unlimited" Road UI - Interface routiรจre "illimitรฉe" - - - Extend the display of the driving path, lane lines, and road edges as far as the model can see. - ร‰tendre l'affichage du chemin de conduite, des lignes de voie et des bords de route aussi loin que le modรจle peut voir. - - - Navigation Widgets - Widgets de navigation - - - Map style tweaks, speed limits, and other navigation related widgets. - Ajustements de style de carte, limites de vitesse et autres widgets liรฉs ร  la navigation. - - - Larger Map Display - Affichage de la carte en grand - - - Increase the size of the map for easier navigation readings. - Augmentez la taille de la carte pour faciliter la lecture de la navigation. - - - Map Style - Style de carte - - - The map style used for <b>Navigate on openpilot (NOO)</b>:<br><br><b>Stock</b>: Default comma.ai style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>mike854's (Satellite hybrid)</b>: Customized hybrid satellite view - Le style de carte utilisรฉ pour <b>Navigate on openpilot (NOO)</b>:<br><br><b>Stock</b>: Style par dรฉfaut de comma.ai<br><b>Mapbox Streets</b>: Vue standard axรฉe sur les rues<br><b>Mapbox Outdoors</b>: Met l'accent sur les caractรฉristiques extรฉrieures et le terrain<br><b>Mapbox Light</b>: Thรจme minimaliste et lumineux<br><b>Mapbox Dark</b>: Thรจme minimaliste et sombre<br><b>Mapbox Navigation Day</b>: Optimisรฉ pour la navigation de jour<br><b>Mapbox Navigation Night</b>: Optimisรฉ pour la navigation de nuit<br><b>Mapbox Satellite</b>: Imagerie satellite uniquement<br><b>Mapbox Satellite Streets</b>: Imagerie satellite hybride avec รฉtiquettes de rues<br><b>Mapbox Traffic Night</b>: Thรจme sombre mettant l'accent sur les conditions de circulation<br><b>mike854's (Satellite hybrid)</b>: Vue hybride satellite personnalisรฉe - - - Road Name - Nom de la route - - - Display the road name at the bottom of the driving screen using data from <b>OpenStreetMap</b>. - Afficher le nom de la route en bas de l'รฉcran de conduite en utilisant les donnรฉes de <b>OpenStreetMap</b>. - - - Show Speed Limits - Afficher les limites de vitesse - - - Display speed limits in the top left corner of the driving screen. Uses data from your car's dashboard (if supported) and data from <b>OpenStreetMaps</b>. - Afficher les limites de vitesse dans le coin supรฉrieur gauche de l'รฉcran de conduite. Utilise les donnรฉes du tableau de bord de votre voiture (si pris en charge) et les donnรฉes de <b>OpenStreetMaps</b>. - - - Show Speed Limits from Mapbox - Afficher les limites de vitesse de Mapbox - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - Utilisez les donnรฉes de limitation de vitesse de <b>Mapbox</b> lorsque aucune autre source n'est disponible. - - - Use Vienna-Style Speed Signs - Utiliser des panneaux de vitesse de style viennois - - - Force <b>Vienna-style (EU)</b> speed limit signs instead of <b>MUTCD (US)</b>. - Forcer les panneaux de limitation de vitesse <b>style Vienne (UE)</b> au lieu de <b>MUTCD (US)</b>. - - - Quality of Life - Qualitรฉ de vie - - - Visual features to improve your overall openpilot experience. - Fonctionnalitรฉs visuelles pour amรฉliorer votre expรฉrience globale avec openpilot. - - - Camera View - Vue de la camรฉra - - - The active camera view display. This is purely a visual change and doesn't impact how openpilot drives! - L'affichage de la vue de la camรฉra active. Il s'agit d'un changement purement visuel et n'affecte pas la conduite d'openpilot ! - - - Show Driver Camera When In Reverse - Afficher la camรฉra de recul en marche arriรจre - - - Display the driver camera feed when the vehicle is in reverse. - Afficher le flux de la camรฉra du conducteur lorsque le vรฉhicule est en marche arriรจre. - - - Standby Mode - Mode Veille - - - Turn the screen off when driving and automatically wake it up if engagement state changes or important alerts occur. - ร‰teignez l'รฉcran lorsque vous conduisez et rรฉactivez-le automatiquement si l'รฉtat d'engagement change ou si des alertes importantes surviennent. - - - Stopped Timer - Minuteur arrรชtรฉ - - - Replace the current speed with a timer when stopped to indicate how long the vehicle has been stopped for. - Remplacez la vitesse actuelle par un chronomรจtre ร  l'arrรชt pour indiquer depuis combien de temps le vรฉhicule est arrรชtรฉ. - - - Blind Spot - Angle mort - - - Steering Torque - Couple de direction - - - Turn Signal - Clignotant - - - Fahrenheit - Fahrenheit - - - CPU - CPU - - - GPU - GPU - - - IP - IP - - - RAM - RAM - - - SSD Left - SSD gauche - - - SSD Used - SSD utilisรฉ - - - None - Aucun - - - Acceleration: Current - Accรฉlรฉration : Actuel - - - Acceleration: Max - Accรฉlรฉration : Max - - - Auto Tune: Actuator Delay - Auto Tune : Dรฉlai de l'actionneur - - - Auto Tune: Friction - Auto Tune : Friction - - - Auto Tune: Lateral Acceleration - Rรฉglage automatique : Accรฉlรฉration latรฉrale - - - Auto Tune: Steer Ratio - Auto Tune : Rapport de direction - - - Auto Tune: Stiffness Factor - Auto Tune : Facteur de rigiditรฉ - - - Engagement %: Lateral - Engagement % : Latรฉral - - - Engagement %: Longitudinal - Engagement % : Longitudinal - - - Lateral Control: Steering Angle - Contrรดle latรฉral : Angle de braquage - - - Lateral Control: Torque % Used - Contrรดle latรฉral : couple % utilisรฉ - - - Longitudinal Control: Actuator Acceleration Output - Contrรดle longitudinal : sortie d'accรฉlรฉration de l'actionneur - - - Longitudinal MPC Jerk: Acceleration - Jerk MPC longitudinal : Accรฉlรฉration - - - Longitudinal MPC Jerk: Danger Zone - Jerk MPC longitudinal : zone de danger - - - Longitudinal MPC Jerk: Speed Control - Contrรดle de la vitesse par secousse longitudinale MPC - - - SELECT - SELECT - - - Select a metric to display - Sรฉlectionnez une mรฉtrique ร  afficher - - - Show Distance - Afficher la distance - - - Dynamic - Dynamique - - - Static - Statique - - - inches - pouces - - - Off - Dรฉsactivรฉ - - - feet - pieds - - - Full Map - Carte complรจte - - - Stock openpilot - Stock openpilot - - - FrogsGoMoo's Personalized Style - Style personnalisรฉ de FrogsGoMoo - - - Mapbox Streets - Mapbox Streets - - - Mapbox Outdoors - Mapbox Outdoors - - - Mapbox Light - Mapbox Light - - - Mapbox Dark - Mapbox Dark - - - Mapbox Navigation Day - Journรฉe de navigation Mapbox - - - Mapbox Navigation Night - Navigation nocturne de Mapbox - - - Mapbox Satellite - Mapbox Satellite - - - Mapbox Satellite Streets - Mapbox Satellite Streets - - - Mapbox Traffic Night - Mapbox Traffic Night - - - Mike's Personalized Style - Style personnalisรฉ de Mike - - - Select a map style - Sรฉlectionnez un style de carte - - - Auto - Auto - - - Driver - Conducteur - - - Standard - Standard - - - Wide - Large - - - foot - pied - - - inch - pouce - - - meter - mรจtre - - - meters - mรจtres - - - centimeter - centimรจtre - - - centimeters - centimรจtres - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 10 centimeters. - L'รฉpaisseur des lignes de voie sur l'รฉcran de conduite.<br><br><b>Par dรฉfaut, elle correspond ร  la norme de largeur de ligne de voie de 10 centimรจtres du <b>MUTCD</b>. - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 10 centimeters. - L'รฉpaisseur des bords de la route sur l'รฉcran de conduite.<br><br><b>Par dรฉfaut, elle correspond ร  la moitiรฉ de la largeur standard de la ligne de voie de 10 centimรจtres selon le <b>MUTCD</b>. + <b>Show a numerical temperature in the sidebar</b> instead of the status labels. + <b>Afficher une tempรฉrature numรฉrique dans la barre latรฉrale</b> au lieu des libellรฉs dโ€™รฉtat. Sidebar Metrics - Mรฉtriques de la barre latรฉrale + Mรฉtriques de la barre latรฉrale - The width of the driving path on the driving screen.<br><br>Default <b>(6.1 feet)</b> matches the width of a <b>2019 Lexus ES 350</b>. - La largeur du chemin de conduite sur l'รฉcran de conduite.<br><br>Par dรฉfaut <b>(6,1 pieds)</b> correspond ร  la largeur d'une <b>Lexus ES 350 2019</b>. + <b>Display system information</b> (CPU, GPU, RAM usage, IP address, device storage) in the sidebar. + <b>Afficher les informations systรจme</b> (utilisation CPU, GPU, RAM, adresse IP, stockage de lโ€™appareil) dans la barre latรฉrale. - The width of the driving path on the driving screen.<br><br>Default <b>(1.9 meters)</b> matches the width of a <b>2019 Lexus ES 350</b>. - La largeur du chemin de conduite sur l'รฉcran de conduite.<br><br>Par dรฉfaut <b>(1,9 mรจtres)</b> correspond ร  la largeur d'une <b>Lexus ES 350 de 2019</b>. + Use International System of Units + Utilisez le Systรจme international dโ€™unitรฉs + + + <b>Display measurements using the "International System of Units" (SI)</b> standard. + <b>Afficher les mesures selon la norme ยซ Systรจme international dโ€™unitรฉs ยป (SI)</b>.</b + + + Developer Sidebar + Barre latรฉrale du dรฉveloppeur + + + <b>Display debugging info and metrics</b> in a dedicated sidebar on the right side of the screen. + <b>Afficher les informations de dรฉbogage et les mรฉtriques</b> dans une barre latรฉrale dรฉdiรฉe sur le cรดtรฉ droit de lโ€™รฉcran. + + + Metric #1 + Mรฉtrique nยฐ 1 + + + <b>Select the metric shown in the first "Developer Sidebar" widget.</b> + <b>Sรฉlectionnez la mรฉtrique affichรฉe dans le premier widget ยซ Developer Sidebar ยป.</b> + + + Metric #2 + Mรฉtrique nยฐ 2 + + + <b>Select the metric shown in the second "Developer Sidebar" widget.</b> + <b>Sรฉlectionnez la mรฉtrique affichรฉe dans le deuxiรจme widget ยซ Developer Sidebar ยป.</b> + + + Metric #3 + Mรฉtrique nยฐ 3 + + + <b>Select the metric shown in the third "Developer Sidebar" widget.</b> + <b>Sรฉlectionnez la mรฉtrique affichรฉe dans le troisiรจme widget ยซ Developer Sidebar ยป.</b> + + + Metric #4 + Mรฉtrique nยฐ 4 + + + <b>Select the metric shown in the fourth "Developer Sidebar" widget.</b> + <b>Sรฉlectionnez la mรฉtrique affichรฉe dans le quatriรจme widget ยซ Developer Sidebar ยป.</b> + + + Metric #5 + Mรฉtrique nยฐ 5 + + + <b>Select the metric shown in the fifth "Developer Sidebar" widget.</b> + <b>Sรฉlectionnez la mesure affichรฉe dans le cinquiรจme widget ยซ Developer Sidebar ยป.</b> + + + Metric #6 + Mรฉtrique nยฐ 6 + + + <b>Select the metric shown in the sixth "Developer Sidebar" widget.</b> + <b>Sรฉlectionnez la mรฉtrique affichรฉe dans le sixiรจme widget ยซ Developer Sidebar ยป.</b> + + + Metric #7 + Mรฉtrique nยฐ 7 + + + <b>Select the metric shown in the seventh "Developer Sidebar" widget.</b> + <b>Sรฉlectionnez la mรฉtrique affichรฉe dans le septiรจme widget ยซ Developer Sidebar ยป.</b> + + + Developer Widgets + Widgets dรฉveloppeur + + + <b>Overlays for debugging visuals, internal states, and model predictions</b> on the driving screen. + <b>Superpositions pour les visuels de dรฉbogage, les รฉtats internes et les prรฉdictions du modรจle</b> sur lโ€™รฉcran de conduite. + + + Adjacent Leads Tracking + Suivi des vรฉhicules adjacents + + + <b>Display adjacent leads detected by the car's radar</b> to the left and right of the current driving path. + <b>Afficher les vรฉhicules adjacents dรฉtectรฉs par le radar de la voiture</b> ร  gauche et ร  droite de la trajectoire de conduite actuelle. + + + Model Stopping Point + Point dโ€™arrรชt du modรจle + + + <b>Show a stop-sign marker where the model intends to stop.</b> + <b>Afficher un marqueur de panneau stop ร  lโ€™endroit oรน le modรจle prรฉvoit de sโ€™arrรชter.</b> + + + Radar Tracks + Pistes radar + + + <b>Display all radar points</b> produced by the car's radar. + <b>Afficher tous les points radar</b> produits par le radar de la voiture. + + + Driving Screen Widgets + Widgets de conduite + + + <b>Custom FrogPilot widgets</b> for the driving screen. + <b>Widgets FrogPilot personnalisรฉs</b> pour lโ€™รฉcran de conduite. + + + Acceleration Path + Trajectoire dโ€™accรฉlรฉration + + + <b>Color the driving path by planned acceleration and braking.</b> + <b>Colorer la trajectoire de conduite selon lโ€™accรฉlรฉration et le freinage prรฉvus.</b> + + + Adjacent Lanes + Voies adjacentes + + + <b>Show the driving paths for the left and right lanes.</b> + <b>Afficher les trajectoires de conduite pour les voies de gauche et de droite.</b> + + + Blind Spot Path + Trajectoire dโ€™angle mort + + + <b>Show a red path when a vehicle is in that lane's blind spot.</b> + <b>Afficher un trajet rouge lorsquโ€™un vรฉhicule se trouve dans lโ€™angle mort de cette voie.</b> + + + Compass + Boussole + + + <b>Show the current driving direction</b> with a simple on-screen compass. + <b>Afficher la direction de conduite actuelle</b> avec une simple boussole ร  lโ€™รฉcran. + + + Driving Personality Button + Bouton de personnalitรฉ de conduite + + + <b>Control and view the current driving personality</b> via a driving screen widget. + <b>Contrรดlez et affichez la personnalitรฉ de conduite actuelle</b> via un widget de lโ€™รฉcran de conduite. + + + Gas / Brake Pedal Indicators + Indicateurs de pรฉdale dโ€™accรฉlรฉrateur / frein + + + <b>On-screen gas and brake indicators.</b><br><br><b>Dynamic</b>: Opacity changes according to how much openpilot is accelerating or braking<br><b>Static</b>: Full when active, dim when not + <b>Indicateurs dโ€™accรฉlรฉrateur et de frein ร  lโ€™รฉcran.</b><br><br><b>Dynamique</b> : lโ€™opacitรฉ varie selon lโ€™intensitรฉ dโ€™accรฉlรฉration ou de freinage dโ€™openpilot<br><b>Statique</b> : plein quand actif, attรฉnuรฉ quand inactif + + + Rotating Steering Wheel + Volant en rotation + + + <b>Rotate the driving screen wheel</b> with the physical steering wheel. + <b>Tournez la molette de lโ€™รฉcran de conduite</b> avec le volant physique. + + + Model UI + Interface du modรจle + + + <b>Model visualizations</b> for the driving path, lane lines, path edges, and road edges. + <b>Visualisations du modรจle</b> pour la trajectoire de conduite, les lignes de voie, les bords de trajectoire et les bords de route. + + + Dynamic Path Width + Largeur de trajectoire dynamique + + + <b>Change the path width based on engagement.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% + <b>Modifier la largeur de la trajectoire en fonction de lโ€™engagement.</b><br><br><b>Entiรจrement engagรฉ</b>ย : 100%<br><b>Latรฉral toujours actif</b>ย : 75%<br><b>Dรฉsengagรฉ</b>ย : 50% + + + Lane Lines Width + Largeur des lignes de voie + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 4 inches. + <b>Dรฉfinissez lโ€™รฉpaisseur des lignes de voie.</b><br><br>Par dรฉfaut, correspond ร  la norme MUTCD pour la largeur des lignes de voie de 4 pouces. + + + Path Edges Width + Largeur des bords de trajectoire + + + <b>Set the driving-path edge width</b> that represents different driving modes and statuses.<br><br>Default is 20% of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + <b>Dรฉfinissez la largeur du bord de la trajectoire</b> qui reprรฉsente diffรฉrents modes et รฉtats de conduite.<br><br>Par dรฉfaut, elle correspond ร  20 % de la largeur totale de la trajectoire.<br><br>Guide des couleurs :<br><br>- <b>Bleu</b> : Navigation<br>- <b>Bleu clair</b> : Latรฉral toujours actif<br>- <b>Vert</b> : Par dรฉfaut<br>- <b>Orange</b> : Mode expรฉrimental<br>- <b>Rouge</b> : Mode trafic<br>- <b>Jaune</b> : Mode expรฉrimental conditionnel remplacรฉ + + + Path Width + Largeur de trajectoire + + + <b>Set the driving-path width.</b><br><br>Default (6.1 feet) matches the width of a 2019 Lexus ES 350. + <b>Rรฉglez la largeur de la trajectoire.</b><br><br>Par dรฉfaut (6,1 pieds), elle correspond ร  la largeur dโ€™une Lexus ES 350 de 2019. + + + Road Edges Width + Largeur des bords de route + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 4 inches. + <b>Rรฉglez lโ€™รฉpaisseur du bord de route.</b><br><br>La valeur par dรฉfaut correspond ร  la moitiรฉ de la largeur standard des lignes de voie du MUTCD de 4 inches. + + + "Unlimited" Road UI + Interface route ยซ Illimitรฉe ยป + + + <b>Extend the length of the driving path, lane lines, and road edges</b> for as far as the model can see. + <b>ร‰tendez la longueur de la trajectoire, des lignes de voie et des bords de route</b> aussi loin que le modรจle peut voir. + + + Navigation Widgets + Widgets de navigation + + + <b>Map style, speed limits, and other navigation widgets.</b> + <b>Style de carte, limitations de vitesse et autres widgets de navigation.</b> + + + Larger Map Display + Affichage de la carte agrandi + + + <b>Increase the map size</b> for easier navigation readings. + <b>Augmentez la taille de la carte</b> pour faciliter la lecture de la navigation. + + + Map Style + Style de carte + + + <b>Select the map style</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai style<br><b>FrogPilot</b>: Official FrogPilot map style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>Mike's Personalized Style</b>: Customized hybrid satellite view + <b>Sรฉlectionnez le style de carte</b> pour ยซ Navigate on openpilot ยป (NOO) :<br><br><b>Stock openpilot</b> : Style par dรฉfaut de comma.ai<br><b>FrogPilot</b> : Style de carte officiel FrogPilot<br><b>Mapbox Streets</b> : Vue standard axรฉe sur les rues<br><b>Mapbox Outdoors</b> : Met lโ€™accent sur lโ€™extรฉrieur et le relief<br><b>Mapbox Light</b> : Thรจme minimaliste et clair<br><b>Mapbox Dark</b> : Thรจme minimaliste et sombre<br><b>Mapbox Navigation Day</b> : Optimisรฉ pour la navigation de jour<br><b>Mapbox Navigation Night</b> : Optimisรฉ pour la navigation de nuit<br><b>Mapbox Satellite</b> : Imagerie satellite uniquement<br><b>Mapbox Satellite Streets</b> : Imagerie satellite hybride avec noms de rues<br><b>Mapbox Traffic Night</b> : Thรจme sombre mettant lโ€™accent sur le trafic<br><b>Mike's Personalized Style</b> : Vue hybride satellite personnalisรฉe + + + Road Name + Nom de la route + + + <b>Display the road name at the bottom of the driving screen</b> using data from "OpenStreetMap (OSM)". + <b>Afficher le nom de la route en bas de lโ€™รฉcran de conduite</b> en utilisant les donnรฉes dโ€™ยซ OpenStreetMap (OSM) ยป. + + + Show Speed Limits + Afficher les limitations de vitesse + + + <b>Show speed limits</b> in the top-left corner of the driving screen. Uses data from the car's dashboard (if supported) and "OpenStreetMap (OSM)". + <b>Afficher les limitations de vitesse</b> dans le coin supรฉrieur gauche de lโ€™รฉcran de conduite. Utilise les donnรฉes du tableau de bord de la voiture (si pris en charge) et ยซ OpenStreetMap (OSM) ยป. + + + Show Speed Limits from Mapbox + Afficher les limitations de vitesse depuis Mapbox + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>Utiliser les donnรฉes de limitation de vitesse Mapbox lorsquโ€™aucune autre source nโ€™est disponible.</b> + + + Use Vienna-Style Speed Signs + Utiliser les panneaux de vitesse de style Vienne + + + <b>Show Vienna-style (EU) speed-limit signs</b> instead of MUTCD (US). + <b>Afficher les panneaux de limitation de vitesse de style viennois (UE)</b> au lieu de MUTCD (US). + + + Quality of Life + Qualitรฉ de vie + + + <b>Miscellaneous visual changes</b> to fine-tune how the driving screen looks. + <b>Modifications visuelles diverses</b> pour affiner lโ€™apparence de lโ€™รฉcran de conduite. + + + Camera View + Vue camรฉra + + + <b>Select the active camera view.</b> This is purely a visual change and doesn't impact how openpilot drives! + <b>Sรฉlectionnez la vue de camรฉra active.</b> Il sโ€™agit dโ€™un changement purement visuel qui nโ€™affecte pas la conduite dโ€™openpilot ! + + + Show Driver Camera When In Reverse + Afficher la camรฉra conducteur en marche arriรจre + + + <b>Show the driver camera feed</b> when the vehicle is in reverse. + <b>Afficher le flux de la camรฉra conducteur</b> lorsque le vรฉhicule est en marche arriรจre. + + + Stopped Timer + Minuteur arrรชtรฉ + + + <b>Show a timer when stopped</b> in place of the current speed to indicate how long the vehicle has been stopped. + <b>Afficher un minuteur ร  lโ€™arrรชt</b> ร  la place de la vitesse actuelle pour indiquer depuis combien de temps le vรฉhicule est ร  lโ€™arrรชt. + + + Hide Map + Masquer la carte + + + Blind Spot + Angle mort + + + Steering Torque + Couple de direction + + + Turn Signal + Clignotant + + + Fahrenheit + Fahrenheit + + + CPU + CPU + + + GPU + GPU + + + IP + IP + + + RAM + RAM + + + SSD Left + SSD gauche + + + SSD Used + SSD utilisรฉ + + + None + Aucun + + + Acceleration: Current + Accรฉlรฉrationย : actuelle + + + Acceleration: Max + Accรฉlรฉrationย : Max + + + Auto Tune: Actuator Delay + Rรฉglage automatiqueย : dรฉlai dโ€™actionneur + + + Auto Tune: Friction + Rรฉglage automatique : friction + + + Auto Tune: Lateral Acceleration + Rรฉglage autoย : accรฉlรฉration latรฉrale + + + Auto Tune: Steer Ratio + Rรฉglage auto : ratio de braquage + + + Auto Tune: Stiffness Factor + Rรฉglage automatiqueย : facteur de rigiditรฉ + + + Engagement %: Lateral + Engagement %ย : Latรฉral + + + Engagement %: Longitudinal + Taux dโ€™engagementย %ย : Longitudinal + + + Lateral Control: Steering Angle + Contrรดle latรฉral : angle de braquage + + + Lateral Control: Torque % Used + Contrรดle latรฉralย : couple % utilisรฉ + + + Longitudinal Control: Actuator Acceleration Output + Contrรดle longitudinalย : sortie dโ€™accรฉlรฉration de lโ€™actionneur + + + Longitudinal MPC Jerk: Acceleration + Secousse du MPC longitudinalย : Accรฉlรฉration + + + Longitudinal MPC Jerk: Danger Zone + MPC longitudinal โ€“ Jerkย : zone de danger + + + Longitudinal MPC Jerk: Speed Control + Jerk MPC longitudinalย : contrรดle de la vitesse + + + SELECT + Sร‰LECTIONNER + + + Select a metric to display + Sรฉlectionnez une mesure ร  afficher + + + Show Distance + Afficher la distance + + + Dynamic + Dynamique + + + Static + Statique + + + inches + pouces + + + Off + Dรฉsactivรฉ + + + feet + pieds + + + Full Map + Carte complรจte + + + Stock openpilot + Openpilot dโ€™origine + + + FrogPilot + FrogPilot + + + Mapbox Streets + Mapbox Streets + + + Mapbox Outdoors + Mapbox Plein air + + + Mapbox Light + Mapbox Light + + + Mapbox Dark + Mapbox Sombre + + + Mapbox Navigation Day + Navigation Mapbox Jour + + + Mapbox Navigation Night + Navigation Mapbox (nuit) + + + Mapbox Satellite + Mapbox Satellite + + + Mapbox Satellite Streets + Mapbox Satellite Streets + + + Mapbox Traffic Night + Trafic nocturne Mapbox + + + Mike's Personalized Style + Style personnalisรฉ de Mike + + + Select a map style + Sรฉlectionnez un style de carte + + + Auto + Auto + + + Driver + Conducteur + + + Standard + Standard + + + Wide + Large + + + foot + pied + + + inch + pouce + + + meter + mรจtre + + + meters + mรจtres + + + centimeter + centimรจtre + + + centimeters + centimรจtres + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 10 centimeters. + <b>Dรฉfinissez lโ€™รฉpaisseur des lignes de voie.</b><br><br>La valeur par dรฉfaut correspond ร  la norme MUTCD de largeur de ligne de voie de 10 centimรจtres. + + + <b>Set the driving-path width.</b><br><br>Default (1.9 meters) matches the width of a 2019 Lexus ES 350. + <b>Dรฉfinissez la largeur de la trajectoire.</b><br><br>Par dรฉfaut (1,9 mรจtres), correspond ร  la largeur dโ€™une Lexus ES 350 de 2019. + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 10 centimeters. + <b>Rรฉglez lโ€™รฉpaisseur du bord de route.</b><br><br>La valeur par dรฉfaut correspond ร  la moitiรฉ de la largeur standard des lignes de voie du MUTCD, soit 10 centimรจtres. FrogPilotWheelPanel Distance Button - Bouton de distance + Bouton de distance - The action for a short press of the <b>Distance</b> button. - L'action pour une pression courte du bouton <b>Distance</b>. + <b>Action performed when the "Distance" button is pressed.</b> + <b>Action effectuรฉe lorsque le bouton ยซ Distance ยป est pressรฉ.</b> Distance Button (Long Press) - Bouton de distance (Appui long) + Bouton Distance (pression longue) - The action for a 0.5+ second press of the <b>Distance</b> button. - L'action pour une pression de plus de 0,5 seconde sur le bouton <b>Distance</b>. + <b>Action performed when the "Distance" button is pressed for more than 0.5 seconds.</b> + <b>Action effectuรฉe lorsque le bouton ยซ Distance ยป est maintenu enfoncรฉ pendant plus de 0,5 seconde.</b> Distance Button (Very Long Press) - Bouton de distance (Appui trรจs long) + Bouton de distance (Appui trรจs long) - The action for a 2.5+ second press of the <b>Distance</b> button. - L'action pour une pression de plus de 2,5 secondes sur le bouton <b>Distance</b>. + <b>Action performed when the "Distance" button is pressed for more than 2.5 seconds.</b> + <b>Action effectuรฉe lorsque le bouton ยซ Distance ยป est maintenu enfoncรฉ pendant plus de 2,5 secondes.</b> LKAS Button - Bouton LKAS + Bouton LKAS - The action for pressing the <b>LKAS</b> button. - L'action pour appuyer sur le bouton <b>LKAS</b>. + <b>Action performed when the "LKAS" button is pressed.</b> + <b>Action effectuรฉe lorsque le bouton ยซ LKAS ยป est pressรฉ.</b> - Nothing - Rien + No Action + Aucune action - Pause Lateral - Pause latรฉrale + Pause Steering + Mettre en pause la direction Change "Personality Profile" - Profil de personnalitรฉ + Modifier ยซย Profil de personnalitรฉย ยป Force openpilot to Coast - Forcer openpilot ร  naviguer en roue libre + Forcer openpilot ร  se mettre en roue libre - Pause Longitudinal - Pause longitudinale + Pause Acceleration/Braking + Mettre en pause lโ€™accรฉlรฉration/le freinage Toggle "Experimental Mode" On/Off - Activer/Dรฉsactiver le "Mode Expรฉrimental" + Basculer ยซ Experimental Mode ยป Activรฉ/Dรฉsactivรฉ Toggle "Traffic Mode" On/Off - Activer/Dรฉsactiver le "Mode Trafic" + Basculer ยซย Mode circulationย ยป Activรฉ/Dรฉsactivรฉ SELECT - SELECT + Sร‰LECTIONNER Select a function to assign to this button - Sรฉlectionnez une fonction ร  attribuer ร  ce bouton + Sรฉlectionnez une fonction ร  attribuer ร  ce bouton @@ -4296,7 +4408,7 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Characters: %1/%2 - Caractรจres : %1/%2 + Caractรจresย : %1/%2 @@ -4329,7 +4441,7 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Manage at %1 - Gรฉrer ร  %1 + Gรฉrer ร  %1 @@ -4347,57 +4459,6 @@ Want to submit your own animations? Share them in the "custom-themes" channel on En attente d'un trajet - - ModelReview - - How would you rate that drive? - Comment รฉvalueriez-vous ce trajet ? - - - Blacklist this model - Mettre ce modรจle sur liste noire - - - The model used during that drive was: - Le modรจle utilisรฉ lors de ce trajet รฉtait : - - - Current Model Score: 0 - Score actuel du modรจle : 0 - - - Current Model Rank: 0 - Classement actuel du modรจle : 0 - - - Total Model Drives: 0 - Nombre total de lecteurs de modรจle : 0 - - - Total Overall Model Drives: 0 - Nombre total de lecteurs de modรจle : 0 - - - Total Model Drives: %1 - Total des lecteurs de modรจle : %1 - - - Current Model Rank: %1 - Classement actuel du modรจle : %1 - - - Current Model Score: %1 - Score actuel du modรจle : %1 - - - Total Overall Drives: %1 - Total des lecteurs globaux : %1 - - - Model successfully blacklisted! - Modรจle mis sur liste noire avec succรจs ! - - MultiOptionDialog @@ -4500,35 +4561,35 @@ Want to submit your own animations? Share them in the "custom-themes" channel on OnroadAlerts openpilot Unavailable - openpilot indisponible + openpilot indisponible Waiting for controls to start - En attente du dรฉmarrage des contrรดles + En attente du dรฉmarrage des commandes TAKE CONTROL IMMEDIATELY - PRENEZ LE CONTRร”LE IMMร‰DIATEMENT + REPRENEZ IMMร‰DIATEMENT LE CONTRร”LE Controls Unresponsive - Commandes non rรฉactives + Commandes non rรฉactives Reboot Device - Redรฉmarrer l'appareil - - - openpilot crashed ๐Ÿ’ฉ - openpilot a plantรฉ ๐Ÿ’ฉ + Redรฉmarrer lโ€™appareil openpilot crashed - openpilot s'est รฉcrasรฉ + openpilot a plantรฉ Please post the "Error Log" in the FrogPilot Discord! - Veuillez publier le "Journal des erreurs" dans le Discord de FrogPilot ! + Veuillez publier le ยซ Error Log ยป sur le Discord de FrogPilot ! + + + openpilot crashed ๐Ÿ’ฉ + openpilot a crashรฉ ๐Ÿ’ฉ @@ -4539,15 +4600,15 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Pair your device to your %1 account - Associez votre appareil ร  votre compte %1 + Associez votre appareil ร  votre compte %1 Go to https://%1 on your phone - Allez sur https://%1 sur votre tรฉlรฉphone + Accรฉdez ร  https://%1 sur votre tรฉlรฉphone Bookmark %1 to your home screen to use it like an app - Ajoutez %1 ร  votre รฉcran d'accueil pour l'utiliser comme une application. + Ajoutez %1 ร  votre รฉcran dโ€™accueil pour lโ€™utiliser comme une app @@ -4648,15 +4709,15 @@ Want to submit your own animations? Share them in the "custom-themes" channel on now - maintenant - - - FrogPilot - FrogPilot + maintenant Restore - Restaurer + Restaurer + + + FrogPilot + FrogPilot @@ -4697,18 +4758,18 @@ Cela peut prendre jusqu'ร  une minute. System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - Rรฉinitialisation du systรจme dรฉclenchรฉe. Appuyez sur confirmer pour effacer tout le contenu et les paramรจtres. Appuyez sur annuler pour reprendre le dรฉmarrage. + Rรฉinitialisation du systรจme dรฉclenchรฉe. Appuyez sur confirmer pour effacer tout le contenu et les paramรจtres. Appuyez sur annuler pour reprendre le dรฉmarrage. ScreenRecorder RECORDING - ENREGISTREMENT + ENREGISTREMENT RECORD - ENREGISTRER + ENREGISTRER @@ -4731,35 +4792,35 @@ Cela peut prendre jusqu'ร  une minute. โ† Back - โ† Retour + โ† Retour FrogPilot - FrogPilot - - - Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Bienvenue sur FrogPilot ! Puisque vous รชtes nouveau sur FrogPilot, le prรฉrรฉglage "Minimal" a รฉtรฉ appliquรฉ, mais vous pouvez le modifier ร  tout moment via le bouton "Niveau de rรฉglage" ! - - - Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ร‰tant donnรฉ que vous รชtes relativement nouveau sur FrogPilot, le prรฉrรฉglage "Minimal" a รฉtรฉ appliquรฉ, mais vous pouvez le modifier ร  tout moment via le bouton "Niveau de rรฉglage" ! - - - Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Puisque vous avez de l'expรฉrience avec openpilot, le prรฉrรฉglage "Standard" a รฉtรฉ appliquรฉ, mais vous pouvez le modifier ร  tout moment via le bouton "Niveau de rรฉglage" ! - - - Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Puisque vous avez de l'expรฉrience avec FrogPilot, le prรฉrรฉglage "Standard" a รฉtรฉ appliquรฉ, mais vous pouvez le modifier ร  tout moment via le bouton "Niveau de rรฉglage" ! - - - Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Puisque vous รชtes trรจs expรฉrimentรฉ avec FrogPilot, le prรฉrรฉglage "Avancรฉ" a รฉtรฉ appliquรฉ, mais vous pouvez le modifier ร  tout moment via le bouton "Niveau de rรฉglage" ! + FrogPilot Welcome to FrogPilot! Since you're new to openpilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Bienvenue chez FrogPilot ! Puisque vous รชtes nouveau sur openpilot, le prรฉrรฉglage "Minimal" a รฉtรฉ appliquรฉ, mais vous pouvez le modifier ร  tout moment via le bouton "Niveau de rรฉglage" ! + Bienvenue sur FrogPilot ! Comme vous รชtes nouveau sur openpilot, le prรฉrรฉglage ยซ Minimal ยป a รฉtรฉ appliquรฉ, mais vous pouvez le modifier ร  tout moment via le bouton ยซ Niveau de rรฉglage ยป ! + + + Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Bienvenue sur FrogPilot ! Comme vous รชtes nouveau sur FrogPilot, le prรฉrรฉglage ยซ Minimal ยป a รฉtรฉ appliquรฉ, mais vous pouvez le modifier ร  tout moment via le bouton ยซ Tuning Level ยป ! + + + Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Comme vous รชtes assez nouveau sur FrogPilot, le prรฉrรฉglage ยซ Minimal ยป a รฉtรฉ appliquรฉ, mais vous pouvez le modifier ร  tout moment via le bouton ยซ Niveau de rรฉglage ยป ! + + + Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Puisque vous avez de lโ€™expรฉrience avec openpilot, le prรฉrรฉglage ยซ Standard ยป a รฉtรฉ appliquรฉ, mais vous pouvez le modifier ร  tout moment via le bouton ยซ Tuning Level ยป ! + + + Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Puisque vous avez de lโ€™expรฉrience avec FrogPilot, le prรฉrรฉglage ยซ Standard ยป a รฉtรฉ appliquรฉ, mais vous pouvez le modifier ร  tout moment via le bouton ยซ Niveau de rรฉglage ยป ! + + + Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Puisque vous avez beaucoup dโ€™expรฉrience avec FrogPilot, le prรฉrรฉglage ยซ Avancรฉ ยป a รฉtรฉ appliquรฉ, mais vous pouvez le modifier ร  tout moment via le bouton ยซ Niveau de rรฉglage ยป ! @@ -4846,15 +4907,15 @@ Cela peut prendre jusqu'ร  une minute. Choose Software to Install - Choisir le logiciel ร  installer + Choisir le logiciel ร  installer openpilot - openpilot + openpilot Custom Software - Logiciel personnalisรฉ + Logiciel personnalisรฉ @@ -4873,7 +4934,7 @@ Cela peut prendre jusqu'ร  une minute. Pair your device with Konik connect (stable.konik.ai). - Associez votre appareil avec Konik connect (stable.konik.ai). + Associez votre appareil ร  Konik connect (stable.konik.ai). @@ -4960,27 +5021,27 @@ Cela peut prendre jusqu'ร  une minute. GPU - GPU + GPU CPU - CPU + CPU GB - GB + Goย GB MEMORY - Mร‰MOIRE + Mร‰MOIRE LEFT - GAUCHE + GAUCHE USED - UTILISร‰ + UTILISร‰ @@ -5055,39 +5116,39 @@ Cela peut prendre jusqu'ร  une minute. Updates are only downloaded while the car is off or in park. - Les mises ร  jour ne sont tรฉlรฉchargรฉes que lorsque la voiture est รฉteinte ou en stationnement. + Les mises ร  jour ne sont tรฉlรฉchargรฉes que lorsque la voiture est รฉteinte ou en position P. Automatically Update FrogPilot - Mettre ร  jour automatiquement FrogPilot - - - Error Log - Journal des erreurs - - - VIEW - VOIR - - - View the error log for openpilot crashes. - Afficher le journal des erreurs pour les plantages d'openpilot. - - - Do you want to delete deep storage FrogPilot assets? This includes your toggle settings for quick reinstalls. - Voulez-vous supprimer les actifs de stockage profond FrogPilot ? Cela inclut vos paramรจtres de bascule pour des rรฉinstallations rapides. - - - Are you sure? This is 100% unrecoverable and if you reinstall FrogPilot you'll lose all your previous settings! - รŠtes-vous sรปr ? Cela est 100 % irrรฉcupรฉrable et si vous rรฉinstallez FrogPilot, vous perdrez tous vos paramรจtres prรฉcรฉdents ! - - - This branch must be downloaded before switching. Would you like to download it now? - Cette branche doit รชtre tรฉlรฉchargรฉe avant de changer. Voulez-vous la tรฉlรฉcharger maintenant ? + Mettre ร  jour automatiquement FrogPilot FrogPilot will automatically update itself and it's assets when you're offroad and have an active internet connection. - FrogPilot se mettra automatiquement ร  jour ainsi que ses ressources lorsque vous รชtes hors route et que vous disposez d'une connexion Internet active. + FrogPilot se mettra automatiquement ร  jour, ainsi que ses ressources, lorsque vous รชtes hors route et que vous disposez dโ€™une connexion Internet active. + + + This branch must be downloaded before switching. Would you like to download it now? + Cette branche doit รชtre tรฉlรฉchargรฉe avant de changer. Voulez-vous la tรฉlรฉcharger maintenant ? + + + Error Log + Journal des erreurs + + + VIEW + AFFICHER + + + View the error log for openpilot crashes. + Afficher le journal des erreurs pour les plantages dโ€™openpilot. + + + Do you want to perform a full factory reset? All saved assets and settings will be permanently deleted! + Voulez-vous effectuer une rรฉinitialisation dโ€™usine complรจte ? Tous les รฉlรฉments enregistrรฉs et les paramรจtres seront dรฉfinitivement supprimรฉs ! + + + This is a complete factory reset and cannot be undone. Are you absolutely sure you want to continue? + Ceci est une rรฉinitialisation complรจte dโ€™usine et elle est irrรฉversible. รŠtes-vous absolument sรปr de vouloir continuerย ? @@ -5275,7 +5336,7 @@ Cela peut prendre jusqu'ร  une minute. Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. - La norme est recommandรฉe. En mode agressif, openpilot suivra les voitures de tรชte de plus prรจs et sera plus agressif avec l'accรฉlรฉrateur et le frein. En mode dรฉtendu, openpilot restera plus รฉloignรฉ des voitures de tรชte. Sur les voitures compatibles, vous pouvez alterner entre ces personnalitรฉs avec le bouton de distance du volant. + Le mode Standard est recommandรฉ. En mode agressif, openpilot suivra les vรฉhicules prรฉcรฉdents de plus prรจs et sera plus รฉnergique sur lโ€™accรฉlรฉrateur et le frein. En mode dรฉtendu, openpilot gardera une plus grande distance avec les vรฉhicules prรฉcรฉdents. Sur les vรฉhicules compatibles, vous pouvez parcourir ces personnalitรฉs avec le bouton de distance du volant. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. @@ -5341,11 +5402,11 @@ Cela peut prendre jusqu'ร  une minute. Uploading disabled - Tรฉlรฉversement dรฉsactivรฉ + Tรฉlรฉchargement dรฉsactivรฉ Toggle off the "Turn Off Data Uploads" toggle to re-enable uploads. - Dรฉsactivez le bouton "Dรฉsactiver les tรฉlรฉchargements de donnรฉes" pour rรฉactiver les tรฉlรฉchargements. + Dรฉsactivez le bouton ยซ Turn Off Data Uploads ยป pour rรฉactiver les envois. diff --git a/selfdrive/ui/translations/main_frog.ts b/selfdrive/ui/translations/main_frog.ts index c5393db0f..4a6c36c7a 100644 --- a/selfdrive/ui/translations/main_frog.ts +++ b/selfdrive/ui/translations/main_frog.ts @@ -5,5372 +5,5432 @@ AbstractAlert Close - Shut + Croak! Close ribbit! Snooze Update - Ribbit Update + Ribbit Nap Update Reboot and Update - Restart and Upgrade + Ribbit! Reboot and update, croak! AdvancedNetworking Back - Return + Ribbit back! Off - Off + Ribbit Off Always - Forever + Ribbit! Always croak! Only Onroad - Onroad Only + Ribbit! Only Onroad, croak. Until Reboot - Until Restart + Ribbitโ€ฆ until reboot, croak! Enable Tethering - Activate Tethering + Ribbit! Enable Tethering, croak! Allow tethering with your data SIM and keep it active either while driving or continuously. - Enable tethering with your data SIM and keep it active while driving or continuously. + Ribbit! Allow tethering with your data SIM, and keep it active while driving or croak-continually. Tethering Password - Tethering Key + Ribbit! Tethering Password, croak! EDIT - MODIFY + Ribbit! EDIT croak. Enter new tethering password - Input new tethering password + Ribbit! Hop in a new tethering password, croak! IP Address - IP Address + Ribbit Address Enable Roaming - Activate Roaming + Ribbit! Enable Roaming, croak! APN Setting - APN Configuration + Ribbit! APN Setting croak! Enter APN - Input APN + Ribbit! Enter APN croak. leave blank for automatic configuration - leave empty for automatic setup + Ribbit! leave blank for automatic configuration, croak. Cellular Metered - Cellular Limited + Ribbit! Cellular Metered, croak! Prevent large data uploads when on a metered connection - Avoid large data uploads on a metered connection. + Ribbit! Stop big data hops when on a metered pond connection Hidden Network - Secret Network + Ribbit! Hidden Network, croak! CONNECT - LINK + Ribbit! CONNECT Enter SSID - Input SSID + Ribbit! Enter SSID, croak. Enter password - Input password + Ribbit! Enter password, croak! for "%1" - for "%1" + for "%1", ribbit AnnotatedCameraWidget km/h - km/h + km/h mph - mph + ribbit mph croak MAX - MAXIMUM + Ribbit MAX LIMIT - LIMIT + Ribbit LIMIT Croak SPEED - VELOCITY + SPEED, ribbit! ConfirmationDialog Ok - Okay + Ribbit, ok! Cancel - Cancel + Ribbit! Cancel croak! DeclinePage You must accept the Terms and Conditions in order to use openpilot. - To use openpilot, you must accept the Terms and Conditions. + Ribbit! You must accept the Terms and Conditions to use openpilot. Croak! Back - Return + Ribbit back Decline, uninstall %1 - Decline, remove %1 + Ribbit, croak! Decline, uninstall %1 DestinationWidget Home - House + Ribbit Home Croak Work - Labor + Ribbit! Work, croak! No destination set - Destination not set + Ribbit! No lily pad set for destination. Croak! home - house + Ribbit home work - labor + Ribbit-work croak! No %1 location set - No %1 location assigned + Ribbit! No %1 location set, croak. DeveloperSidebar m/sยฒ - m/sยฒ + m/sยฒ ft/sยฒ - ft/sยฒ + ribbit ft/sยฒ croak ACCEL - ACCEL + Ribbit ACCEL croak ACCEL JERK - ACCEL HOP + Ribbit! ACCEL JERK, croak! ACT ACCEL - ACT BOOST + Ribbit! ACT ACCEL croak! DANGER JERK - CAUTION: JERK + Ribbit! DANGER JERK, croak! STEER DELAY - DELAY STEER + STEER DELAY, ribbit! FRICTION - FRICTION + FRICTION... ribbit! Croak! LAT ACCEL - LAT ACCEL + Ribbit! LAT ACCEL croak! LATERAL % - LATERAL % + Ribbit! LATERAL % Croak! LONG % - EXTENDED % + Ribbit LONG % MAX ACCEL - MAX SPEED + Ribbit! MAX ACCEL croak! SPEED JERK - QUICK HOP + Ribbit SPEED JERK, croak! STEER ANGLE - STEERING ANGLE + Ribbit-STEER ANGLE, croak! STEER RATIO - STEERING RATIO + Ribbit! STEER RATIO croak! STEER STIFF - GUIDE FIRM + Ribbit! STEER STIFF, croak! TORQUE % - TORQUE % + Ribbit TORQUE % croak DevicePanel Dongle ID - Dongle Code + Ribbit ID N/A - N/A + N/A Serial - Series + Ribbit Serial croak Pair Device - Connect Device + Ribbit! Pair Device croak PAIR - DUO + RIBBIT PAIR CROAK Pair your device with Konik connect (stable.konik.ai). - Link your device with Konik connect (stable.konik.ai). + Ribbit! Pair your device with Konik connect (stable.konik.ai), croak. Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. - Link your device with Comma Connect (connect.comma.ai) to claim your Comma Prime offer. + Ribbit! Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer, croak! Driver Camera - Camera for Driver + Ribbit Driver Camera, croak! PREVIEW - PREVIEW + Ribbit PREVIEW croak Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off) - Check the driver-facing camera to ensure clear visibility for driver monitoring. (vehicle must be off) + Ribbit! Peek the driver-facing camera to be sure driver monitoring sees clear. Croak. (vehicle must be off) Reset Calibration - Recalibrate + Ribbit! Reset Calibration, croak! RESET - RESET + RIBBIT RESET Are you sure you want to reset calibration? - Are you certain you want to reset calibration? + Ribbit! You sure you want to reset calibration, croak? Reset - Restart + Ribbit-Reset Croak! Review Training Guide - Examine Training Guide + Ribbit! Peek at the Training Guide, croak! REVIEW - EVALUATION + RIBBIT REVIEW CROAK Review the rules, features, and limitations of openpilot - Examine the guidelines, features, and constraints of openpilot. + Ribbit! Peek the rules, features, and limits of openpilotโ€”croak! Are you sure you want to review the training guide? - Are you certain you want to hop into reviewing the training guide? + Ribbit! You sure you want to peek at the training guide, croak? Review - Examine + Ribbit! Review croak! Regulatory - Regulation + Ribbit-ulations VIEW - DISPLAY + Ribbit VIEW! Change Language - Switch Language + Ribbit! Change Language croak! CHANGE - MODIFY + RIBBIT CHANGE CROAK Select a language - Choose a language + Ribbit! Pick a tongue croak. Reboot - Restart + Riboot, ribbit! Power Off - Shut Down + Ribbit! Power Off, croak! openpilot requires the device to be mounted within 4ยฐ left or right and within 5ยฐ up or 9ยฐ down. openpilot is continuously calibrating, resetting is rarely required. - openpilot needs the device to be mounted within 4ยฐ left or right and within 5ยฐ up or 9ยฐ down. openpilot is always calibrating, so resetting is seldom needed. + Ribbit! openpilot needs the device mounted within 4ยฐ left or right, and 5ยฐ up or 9ยฐ down. Croak! openpilot keeps calibrating; resetting is rarely needed. Your device is pointed %1ยฐ %2 and %3ยฐ %4. - Your device is aimed %1ยฐ %2 and %3ยฐ %4. + Ribbit! Your device points %1ยฐ %2 and %3ยฐ %4, croak. down - descend + Ribbitโ€ฆ down. Croak. up - up + Ribbit up! left - left + Left... ribbit. right - correct + Ribbitโ€ฆ right side, croak! Are you sure you want to reboot? - Are you certain you want to reboot? + Ribbit! You sure you want to reboot, croak? Disengage to Reboot - Unplug to Restart + Ribbit! Hop off to Reboot Are you sure you want to power off? - Are you certain you want to power off? + Ribbit! You sure you wanna power off, croak? Disengage to Power Off - Switch off to Power Down + Ribbit! Hop off to Power Off DriveStats FROGPILOT - FROGPILOT + FROGPILOT Ribbit! Drives - Motors + Ribbit Rides Hours - Time + Ribbit Hours KM - KM + KM, ribbit! Miles - Miles + Ribbit miles DriverViewWindow camera starting - Camera initializing + Ribbit! Camera croaks awake, starting now. ExperimentalModeButton EXPERIMENTAL MODE ON - EXPERIMENTAL MODE ACTIVATED + Ribbit! EXPERIMENTAL MODE ON, croak! CHILL MODE ON - ACTIVATE CHILL MODE + Ribbit! CHILL MODE ON, croak! FrogPilotAnnotatedCameraWidget m/sยฒ - m/sยฒ + Ribbit m/sยฒ croak meters - meters + ribbit meters m/s - m per s + m/s km/h - km/h + rib/km/hbit ft/sยฒ - ft/sยฒ + ribbit ft/sยฒ croak feet - toes + Ribbit-feet croak! mph - mph + mph Vehicle in blind spot - Car in blind spot + Ribbit! Vehicle in blind spot, croak! PENDING - AWAITING + Ribbitโ€ฆ PENDING, croak! LIMIT - LIMIT + RIBBIT LIMIT CROAK FrogPilotConfirmationDialog Reboot required to take effect. - Restart needed to take effect. + Ribbit! Reboot needed to take effect, croak. Reboot Now - Restart Now + Ribbit! Reboot Now croak! Reboot Later - Restart Later + Ribbit! Reboot later, croak! Yes - Certainly + Ribbit, yes! No - No + Ribbit no FrogPilotDataPanel - Delete Driving Footage and Data - Erase Driving Footage and Data + Delete Driving Data + Ribbit! Delete Driving Data, croak! DELETE - REMOVE + Ribbit! DELETE - Deletes all stored driving footage and data from your device. Ideal for maintaining privacy or for simply freeing up space. - Erases all saved driving footage and data from your device. Perfect for protecting privacy or just freeing up space. + <b>Delete all stored driving footage and data</b> to free up space and clear private information. + <b>Delete all stored driving footage and data</b> to free up space and clear private information, ribbit! Croakโ€”hop to clear it. - Are you sure you want to delete all of your driving footage and data? - Are you certain you want to erase all your driving footage and data? + Delete all driving data and footage? + Ribbit! Delete all driving data and footage? Croak! Delete - Remove + Ribbit! Delete croak! Deleting... - Removing... + Ribbitโ€ฆ croak! Deletingโ€ฆ hop-hopโ€ฆ Deleted! - Removed! + Ribbit! Goneโ€”croak! Delete Error Logs - Remove Error Logs + Croak! Delete Error Logs, ribbit! - Deletes all stored error logs from your device. Ideal for freeing up space. - Removes all saved error logs from your device. Perfect for freeing up space. + <b>Delete collected error logs</b> to free up space and clear old crash records. + <b>Ribbit! Delete collected error logs</b> to free up space and clear old crash records, croak. - Are you sure you want to delete all of the error logs? - Are you sure you want to delete all the error logs? + Delete all error logs? + Ribbit! Delete all error logs? Croak! Screen Recordings - Screen Captures + Ribbit! Screen Croakings - Manage your screen recordings. - Organize your screen recordings. + <b>Delete or rename screen recordings.</b> + <b>Ribbit! Delete or rename screen recordings, croak.</b> DELETE ALL - REMOVE ALL + Ribbit! DELETE ALL croak! RENAME - CHANGE NAME + RIBBIT-RENAME - Select a recording to delete - Choose a recording to remove + Choose a screen recording to delete + Ribbit! Choose a screen recording to delete, croak. - Are you sure you want to delete this recording? - Are you certain you want to delete this recording? + Delete this screen recording? + Ribbit! Delete this screen recording, croak? - Are you sure you want to delete all screen recordings? - Are you certain you want to delete all screen recordings? + Delete all screen recordings? + Ribbit! Delete all screen recordings, croak? Delete All - Remove Everything + Ribbit! Delete All, croak! - Select a recording to rename - Choose a recording to rename + Choose a screen recording to rename + Ribbit! Pick a screen recording to rename, croak Enter a new name - Please provide a new name + Ribbit! Hop in a new name, croak! - Rename Recording - Retitle Recording + Rename Screen Recording + Ribbit! Rename Screen Recording croak! - A recording with this name already exists. Please choose a different name. - A recording with this name already exists. Please select another name. + Name already in use. Please choose a different name. + Ribbit! Name taken. Croakโ€”pick a different name. Renaming... - Changing name... + Ribbit... croak-croak, renaming... Renamed! - Name changed! + Ribbit! Name changed! Croak! FrogPilot Backups - FrogPilot Ribbit + RibbitPilot Backups, croak! - Manage your FrogPilot backups. - Handle your FrogPilot backups. + <b>Create, delete, or restore FrogPilot backups.</b> + <b>Ribbit! Make, croak-away, or revive FrogPilot backups.</b> BACKUP - BACKUP + Ribbit! BACKUP croak! RESTORE - RENEW + RIBBIT-STORE - Name your backup - Give your backup a name + Enter a name for this backup + Ribbit! Hop in a name for this backup croak! - A backup with this name already exists. Please choose a different name. - A backup with this name already exists. Please select a different name. - - - Do you want to compress this backup? This will take a few minutes, but the final result will be smaller and run in the background. - Would you like to compress this backup? It will take a few minutes, but the final result will be smaller and run in the background. + Compress this backup? This will save space and run in the background but take a bit longer. + Ribbit! Compress this backup? It saves space, croak, runs in the pondy background, but takes a bit longer. Backing up... - Creating a backup... + Ribbitโ€ฆ croak! Backing up... Compressing... - Compressing... + Ribbitโ€ฆ squishing it down, croak! Backup created! - Backup complete! + Ribbit! Backup spawned! Croak! - Select a backup to delete - Choose a backup to remove + Choose a FrogPilot backup to delete + Ribbit! Pick a FrogPilot backup to croak-delete - Are you sure you want to delete this backup? - Are you certain you want to delete this backup? + Delete this backup? + Ribbit! Delete this backup, croak? - Are you sure you want to delete all FrogPilot backups? - Are you certain you want to delete all FrogPilot backups? + Delete all backups? + Ribbit! Delete all backups, croak? - Select a restore point - Choose a restore point + Choose a backup to restore + Ribbit! Choose a backup to restore, croak! - Are you sure you want to restore this version of FrogPilot? - Are you certain you want to restore this version of FrogPilot? + Restore this backup? + Ribbit! Restore this backup, croak? Restore - Reinstate + Ribbit-restore! Restoring... - Recovering... + Ribbit... restoring... croak! Extracting... - Extracting... + Ribbit... Croaking out the bits... Restored! - Repaired! + Ribbit! All restored, croak! Rebooting... - Restarting... + Ribbitโ€ฆ rebooting, croak! Toggle Backups - Switch Backups + Ribbit! Flip Backups - Manage your toggle backups. - Handle your toggle backups. + <b>Create, delete, or restore toggle backups.</b> + <b>Ribbit! Create, delete, or restore toggle backups, croak.</b> - Name your toggle backup - Name your backup toggle - - - A toggle backup with this name already exists. Please choose a different name. - A backup with this name already exists. Please select a different name. - - - Select a toggle backup to delete - Choose a toggle backup to remove - - - Are you sure you want to delete this toggle backup? - Are you certain you want to delete this toggle backup? - - - Are you sure you want to delete all toggle backups? - Are you certain you want to delete all toggle backups? - - - Select a toggle restore point - Choose a toggle restore point - - - Are you sure you want to restore this toggle backup? - Are you certain you want to restore this toggle backup? + Choose a backup to delete + Ribbit! Choose a backup to delete, croak. FrogPilotDevicePanel Device Settings - Device Options + Ribbit Device Settings, croak! - Settings that control device behavior. - Settings that manage device behavior. - - - Battery Shutdown Threshold - Battery Shutdown Limit - - - Automatically shut down the device when the vehicle's battery voltage reaches the set threshold preventing excessive battery drain to protect the battery. - Automatically power off the device when the vehicle's battery voltage hits the set threshold, preventing excessive drain and protecting the battery. + <b>Settings that control how the device runs, powers off, and manages driving data.</b> + <b>Ribbit! Settings that guide how the device runs, powers off, and handles driving data, croak.</b> Device Shutdown Timer - Device Power-Off Timer + Ribbit! Device Shutdown Timer croak - How long the device stays on for after you go offroad. - How long the device remains active after you go off-road. + <b>Keep the device on for the set amount of time after a drive</b> before it shuts down automatically. + <b>Ribbit! Keep the device on for the set time after a drive</b> before it croak-shuts down automatically. - Disable Data Logging - Turn Off Data Logging + Disable Logging + Ribbit! Disable Logging, croak! WARNING: This will prevent your drives from being recorded and all data will be unobtainable! - WARNING: This will stop your drives from being recorded, making all data unobtainable! + Ribbit! WARNING: this will stop your drives from being recorded, croak, and all data will be unobtainable! - Disable all data logging to improve privacy. - Turn off all data logging to enhance privacy. + <b>Prevent the device from saving driving data.</b> + <b>Ribbit! Stop the device from saving driving data. Croak.</b> - Disable Data Uploads - Turn Off Data Uploads + Disable Uploads + Ribbit! Disable Uploads croak! - WARNING: This will prevent your drives from appearing on <b>comma connect</b> which may impact debugging and support! - WARNING: This will stop your drives from showing on <b>comma connect</b>, which might affect debugging and support! + WARNING: This will prevent your drives from being uploaded to <b>comma connect</b> which will impact debugging and official support from comma! + Ribbit! WARNING: this will stop your drives from hopping to <b>comma connect</b>, croakโ€”debugging and official support from comma will be impacted! - Prevent the device from sending any data to <b>comma</b>'s servers. - Stop the device from transmitting any data to <b>comma</b>'s servers. + <b>Prevent the device from uploading driving data.</b> + <b>Ribbit! Stop this device from croaking up driving data.</b> - High Bitrate Recording - High Bitrate Capture + High-Quality Recording + Ribbit-High Recording, croak! - Record driving footage at double the standard bitrate for improved video quality in driving logs. - Capture driving footage at twice the usual bitrate to enhance video quality in driving logs. + <b>Save drive footage in higher video quality.</b> + <b>Ribbit! Save drive footage in higher video quality, croak.</b> - Increase Thermal Safety Limit - Raise Thermal Safety Threshold + Low-Voltage Cutoff + Ribbit-Low Voltage Cutoff, croak! - WARNING: This can damage your device by exceeding safe temperature limits! - WARNING: This may harm your device by surpassing safe temperature limits! + <b>While parked, if the battery voltage falls below the set level, the device shuts down</b> to prevent excessive battery drain. + <b>Ribbit! While parked, if the battery voltage dips below the set level, the device croaks off</b> to stop excessive battery drain. - Allow the device to run hotter than comma recommended limit. - Permit the device to operate above the suggested temperature limit. + Raise Temperature Limits + Ribbit! Raise Temperature Limits, croak! - Use Konik's Server Instead of comma's - Opt for Konik's Server instead of comma's. + WARNING: Running at higher temperatures may damage your device! + WARNING: Running hot may harm your device, ribbit! - Upload your driving data to <b>connect.konik.ai</b> instead of <b>connect.comma.ai</b>. - Upload your driving data to <b>connect.konik.ai</b> rather than <b>connect.comma.ai</b>. + <b>Allow the device to run at higher temperatures</b> before throttling or shutting down. Use only if you understand the risks! + <b>Let device bask hotter</b> before it throttles or croaks off. Use only if you grasp the risks, ribbit! + + + Use Konik Server + Ribbit! Use Konik Server, croak! + + + <b>Upload driving data to "connect.konik.ai" instead of "connect.comma.ai".</b> + <b>Ribbit! Upload driving data to "connect.konik.ai" instead of "connect.comma.ai". Croak.</b> Screen Settings - Display Options + Ribbit Screen Settings Croak - Settings that control screen behavior. - Settings that manage screen behavior. + <b>Settings that control screen brightness, screen recording, and timeout duration.</b> + <b>Ribbit! Settings that control screen brightness, screen recording, and timeout duration. Croak.</b> Screen Brightness (Offroad) - Screen Brightness (Offroad Mode) + Ribbit! Screen Brightness (Offroad) croak! - The screen brightness when not driving. - The screen brightness when not hopping. + <b>The screen brightness while not driving.</b> + <b>Ribbit! Screen brightness when not driving, croak.</b> Screen Brightness (Onroad) - Screen Brightness (Onroad) + Screen Brightness (Onroad), ribbit! Croak! - The screen brightness while driving. - Screen brightness during driving. + <b>The screen brightness while driving.</b> + <b>Croak! Screen brightness while driving, ribbit.</b> Screen Recorder - Screen Capture Tool + Screen Ribbit-Recorder - Enable a button in the driving screen to record the screen. - Add a button on the driving screen to capture the display. + <b>Add a button to the driving screen to record the display.</b> + <b>Ribbit! Add a button on the driving screen to record the display, croak.</b> Screen Timeout (Offroad) - Screen Timeout (Offroad Mode) + Ribbit Screen Timeout (Offroad), croak! - How long it takes for the screen to turn off when not driving. - How long does it take for the screen to turn off when not driving? + <b>How long the screen stays on after being tapped while not driving.</b> + <b>Ribbit! How long the screen stays on after a tap when not driving, croak.</b> Screen Timeout (Onroad) - Screen Timeout (Onroad) + Ribbit! Screen Timeout (Onroad) croak - How long it takes for the screen to turn off while driving. - How long does it take for the screen to turn off while driving? + <b>How long the screen stays on after being tapped while driving.</b> + <b>Ribbit! How long the screen stays on after a tap while driving, croak.</b> + + + Standby Mode + Ribbit Standby Mode, croak! + + + <b>Turn the screen off while driving and automatically wake it up for alerts or engagement state changes.</b> + <b>Ribbit! Turn screen off while driving, then croak-awake for alerts or engagement hops.</b> 5 mins - 5 hops + Ribbit! 5 mins croak mins - minutes + ribbit mins hour - hour + Ribbit hour croak hours - hours + hours ribbit - Only Disable While Onroad - Disable Only When Onroad + Disable Onroad Only + Ribbit! Disable Onroad Only, croak! volts - volts + Ribbit volts Screen Off - Turn Off Screen + Ribbit! Screen Off, croak! Auto - Car + Ribbit Auto Start Recording - Begin Recording + Ribbit! Start croaking the recording! Stop Recording - Cease Recording + Ribbit! Stop Recording, croak! seconds - seconds + Ribbitโ€ฆ seconds. Croak. FrogPilotLateralPanel Advanced Lateral Tuning - Enhanced Lateral Adjustment + Ribbit! Advanced Lateral Tuning, croak! - Advanced settings for fine-tuning openpilot's lateral controls. - Advanced settings for fine-tuning openpilot's steering controls. + <b>Advanced steering control changes to fine-tune how openpilot drives.</b> + <b>Ribbit! Advanced steering tweaks to fine-tune how openpilot drives. Croak.</b> Actuator Delay (Default: %1) - Actuator Lag (Default: %1) + Ribbit! Actuator Delay (Default: %1) croak! Actuator Delay - Actuator Lag + Ribbit! Actuator Delay croak! - How long the steering wheel takes to respond to commands. Higher values account for slower steering; lower values for quicker response. - The time it takes for the steering wheel to respond to commands. Higher values indicate slower steering, while lower values suggest a quicker response. + <b>The time between openpilot's steering command and the vehicle's response.</b> Increase if the vehicle reacts late; decrease if it feels jumpy. Auto-learned by default. + <b>Croak! Time from openpilotโ€™s steering croak to carโ€™s answer.</b> If car reacts late, ribbit raise it; if it feels jumpy, ribbit lower it. Auto-learned by default. Friction (Default: %1) - Friction (Default: %1) + Ribbit! Friction (Default: %1) croak Friction - Resistance + Ribbit Friction - Adjust steering resistance. Higher values feel more stable but heavier; lower values feel lighter but more sensitive. - Modify steering resistance. Higher values offer more stability but feel heavier; lower values feel lighter yet more sensitive. + <b>Compensates for steering friction.</b> Increase if the wheel sticks near center; decrease if it jitters. Auto-learned by default. + <b>Croaks away steering stickiness.</b> Ribbit! Raise if the wheel clings near center; lower if it jitters. Auto-learned by default. Kp Factor (Default: %1) - Kp Factor (Default: %1) + Ribbit! Kp Factor (Default: %1) croak! Kp Factor - Kp Coefficient + Kp Factor, ribbit! Croak-croak! - How aggressively openpilot corrects steering. Higher values respond faster but may feel jerky; lower values are smoother but slower. - How aggressively openpilot adjusts steering. Higher values react faster but may feel jerky; lower values are smoother but slower. + <b>How strongly openpilot corrects lane position.</b> Higher is tighter but twitchier; lower is smoother but slower. Auto-learned by default. + <b>How strongly openpilot corrects lane position.</b> Ribbit! Higher is tighter but twitchier; lower is smoother but slower. Auto-learned by default, croak. - Lateral Accel (Default: %1) - Lateral Accel (Default: %1) + Lateral Acceleration (Default: %1) + Ribbit! Lateral Acceleration (Default: %1), croak! - Lateral Accel - Sideways Accel + Lateral Acceleration + Ribbit! Sideways Zoom-Croak - How quickly openpilot makes lateral adjustments. Higher values allow sharper turns; lower values provide smoother steering. - How swiftly openpilot makes lateral adjustments. Higher values enable sharper turns, while lower values offer smoother steering. + <b>Maps steering torque to turning response.</b> Increase for sharper turns; decrease for gentler steering. Auto-learned by default. + <b>Ribbit! Maps steering torque to turning response.</b> Raise for sharper turns; lower for gentler steering. Auto-learned by default, croak. Steer Ratio (Default: %1) - Steering Ratio (Default: %1) + Ribbit Ratio (Default: %1) Steer Ratio - Steering Ratio + Ribbit Ratio of Steer Croak - How much the steering wheel turns in response to commands. Higher values feel more stable; lower values feel quicker. - The degree to which the steering wheel turns in response to commands. Higher values provide more stability, while lower values offer quicker response. + <b>The relationship between steering wheel rotation and road wheel angle.</b> Increase if steering feels too quick or twitchy; decrease if it feels too slow or weak. Auto-learned by default. + <b>Ribbit! The tie between steering wheel twist and road wheel angle.</b> Hop it up if steering feels too quick or twitchy; hop it down if it feels too slow or weak. Auto-learned by default, croak. - Force Auto Tune On - Enable Auto Tune + Force Auto-Tune On + Ribbit! Force Auto-Tune On, croak! - Force-enable commaโ€™s auto lateral tuning. - Force-enable the comma's auto lateral tuning. + <b>Force-enable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration".</b> + <b>Ribbit! Force-enable openpilotโ€™s live auto-tuning for "Friction" and "Lateral Acceleration". Croak!</b> - Force Auto Tune Off - Disable Auto Tune + Force Auto-Tune Off + Croak! Force Auto-Tune Off, ribbit! - Force-disable commaโ€™s auto lateral tuning. - Force-disable the comma's automatic lateral tuning. + <b>Force-disable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration" and use the set value instead.</b> + <b>Ribbit! Force-disable openpilotโ€™s live auto-tuning for "Friction" and "Lateral Acceleration" and use the set value instead, croak.</b> - Always on Lateral - Constantly on Lateral + Force Torque Controller + Ribbit! Force Torque Controller, croak! - openpilot's steering control stays active even when the brake or gas pedals are pressed.<br><br>Deactivation only occurs with the <b>Cruise Control</b> button. - openpilot's steering control remains active even when the brake or gas pedals are pressed.<br><br>Deactivation happens only with the <b>Cruise Control</b> button. + <b>Use torque-based steering control instead of angle-based control for smoother lane keeping, especially in curves.</b> + <b>Ribbit! Use torque-based steering, not angle-based, for smoother lane keeping, croakโ€”especially in curves.</b> + + + Always On Lateral + Always On Lateral, ribbit! + + + <b>openpilot's steering remains active even when the accelerator or brake pedals are pressed.</b> + <b>Ribbit! openpilot's steering stays croaking active even when the accelerator or brake pedals are pressed.</b> Enable With Cruise Control - Activate With Cruise Control + Ribbit! Enable with Cruise Control, croak! - Allow <b>Always on Lateral</b> to be active whenever <b>Cruise Control</b> is active, bypassing the need to enable openpilot first. - Enable <b>Always on Lateral</b> to function whenever <b>Cruise Control</b> is active, skipping the requirement to activate openpilot first. + <b>Enable "Always On Lateral" whenever "Cruise Control" is on, even when openpilot is not engaged.</b> + <b>Ribbit! Turn on "Always On Lateral" whenever "Cruise Control" croaks on, even when openpilot not engaged. Croak!</b> - Enable With LKAS Button - Activate with LKAS Button + Enable With LKAS + Ribbit! Enable With LKAS croak! - Allow <b>Always on Lateral</b> to be active whenever <b>LKAS</b> is active, bypassing the need to enable openpilot first. - Enable <b>Always on Lateral</b> to function whenever <b>LKAS</b> is active, skipping the requirement to activate openpilot first. + <b>Enable "Always On Lateral" whenever "LKAS" is on, even when openpilot is not engaged.</b> + <b>Ribbit! Turn on "Always On Lateral" whenever "LKAS" croaks on, even when openpilot isnโ€™t engaged. Croak.</b> - Pause on Brake Below - Pause on Brake Beneath + Pause on Brake Press Below + Ribbit! Pause when brake pressed below, croak! - Temporarily pause <b>Always on Lateral</b> below the set speed when braking. - Temporarily halt <b>Always on Lateral</b> below the set speed when braking. + <b>Pause "Always On Lateral" below the set speed while the brake pedal is pressed.</b> + <b>Ribbit! Pause "Always On Lateral" below the set speed while the brake pedal is pressed. Croak.</b> Lane Changes - Lane Hops + Ribbit! Lane Hops - Customize how openpilot performs lane changes. - Adjust how openpilot executes lane changes. + <b>Allow openpilot to change lanes.</b> + <b>Ribbit! Let openpilot hop and change lanes.</b> Automatic Lane Changes - Automated Lane Changes + Ribbit! Auto Lane Hops - Change lanes automatically when the turn signal is on. No steering input needed! - Automatically change lanes when the turn signal is activated. No steering input required! + <b>When the turn signal is on, openpilot will automatically change lanes.</b> No steering-wheel nudge required! + <b>Ribbit! When the blinker sings, openpilot hops to change lanes by itself.</b> No steering-wheel nudge needed, croak! Lane Change Delay - Delay in Changing Lanes + Ribbit! Lane Change Delay croak - Delay automatic lane changes by the set amount of time. - Postpone automatic lane changes by the specified duration. + <b>Delay between turn signal activation and the start of an automatic lane change.</b> + <b>Ribbit! Time between blinker flick and auto lane-hop start. Croak.</b> Minimum Lane Change Speed - Minimum Speed for Lane Change + Ribbit! Minimum Lane Change Speed croak! - Minimum speed required for openpilot to perform a lane change. - Minimum speed needed for openpilot to execute a lane change. + <b>Lowest speed at which openpilot will change lanes.</b> + <b>Croak! Lowest speed where openpilot hops to change lanes.</b> Minimum Lane Width - Minimum Lane Width + Ribbit! Minimum Lane Width croak - openpilot won't initiate a lane change into a lane narrower than this width. - openpilot won't hop into a lane narrower than this width. + <b>Prevent automatic lane changes into lanes narrower than the set width.</b> + <b>Ribbit! Stop auto lane hops into lanes thinner than the set width. Croak.</b> One Lane Change Per Signal - One Lane Hop Per Signal + Ribbit! One Lane Change Per Signal, croak! - Limit lane changes to one per turn signal activation. - Restrict lane changes to a single move per turn signal activation. + <b>Limit automatic lane changes to one per turn-signal activation.</b> + <b>Ribbit! Limit auto lane hops to one per turn-signal croak.</b> Lateral Tuning - Sideways Tuning + Ribbit! Lateral Tuning, croak! - Settings for fine-tuning openpilot's lateral controls. - Settings for fine-tuning openpilot's lateral controls. + <b>Miscellaneous steering control changes</b> to fine-tune how openpilot drives. + <b>Miscellaneous steering control changes</b> to fine-tune how openpilot drives, ribbit. Croak! Force Turn Desires Below Lane Change Speed - Compel Shift Wishes Under Lane Change Velocity + Ribbit! Force Turn Desires below Lane Change speed, croak! - Force turn desires below the minimum lane change speed to improve turning accuracy. - Force turn desires below the minimum lane change speed to enhance turning precision. - - - Neural Network Feedforward (NNFF) - Neural Network Hopforward (NNHF) - - - Use <b>Twilsoncoโ€™s</b> <b>Neural Network FeedForward</b> model for smoother, model-based steering trained on your vehicle's data. - Employ <b>Twilsoncoโ€™s</b> <b>Neural Network FeedForward</b> model for smoother, data-driven steering, trained on your vehicle's information. - - - Smooth Curve Handling - Graceful Curve Navigation - - - Use <b>Twilsoncoโ€™s</b> torque-based adjustments to smooth out steering during curves. - Apply <b>Twilsoncoโ€™s</b> torque-based tweaks to smooth steering through curves. + <b>While driving below the minimum lane change speed with an active turn signal, instruct openpilot to turn left/right.</b> + <b>Ribbit! When hoppinโ€™ under the minimum lane-change speed with a blinking turn signal, tell openpilot to turn left/right. Croak!</b> Quality of Life - Life Quality + Ribbit of Life - Miscellaneous features to improve the steering experience. - Various features to enhance the steering experience. + <b>Steering control changes to fine-tune how openpilot drives.</b> + <b>Ribbit! Steering control tweaks to fine-tune how openpilot drives, croak.</b> Pause Steering Below - Pause Steering Under + Ribbit! Pause Steering Below - Temporarily pause steering control below the set speed. - Temporarily halt steering control when speed drops below the set limit. + <b>Pause steering below the set speed.</b> + <b>Ribbit! Pause steering below the set speed, croak.</b> Instant - Immediate + Ribbit! Instant croak! second - Second + Ribbit-second seconds - moments + Ribbit seconds croak Turn Signal Only - Turn Signal Only + Ribbit! Turn Signal Only, croak. - Are you sure you want to completely reset your <b>Actuator Delay</b>? - Are you certain you want to fully reset your <b>Actuator Delay</b>? + Reset <b>Actuator Delay</b> to its default value? + Ribbit! Reset <b>Actuator Delay</b> to its pond-default value? Croak? - Are you sure you want to completely reset your <b>Friction</b>? - Are you sure you want to fully reset your <b>Friction</b>? + Reset <b>Friction</b> to its default value? + Ribbit! Reset <b>Friction</b> to its default value, croak? - Are you sure you want to completely reset your <b>Kp Factor</b>? - Are you certain you want to fully reset your <b>Kp Factor</b>? + Reset <b>Kp Factor</b> to its default value? + Ribbit! Reset <b>Kp Factor</b> to its default value, croak? - Are you sure you want to completely reset your <b>Lateral Accel</b>? - Are you sure you want to fully reset your <b>Lateral Accel</b>? + Reset <b>Lateral Accel</b> to its default value? + Ribbit! Reset <b>Lateral Accel</b> to its default value, croak? - Are you sure you want to completely reset your <b>Steer Ratio</b>? - Are you certain you want to fully reset your <b>Steer Ratio</b>? + Reset <b>Steer Ratio</b> to its default value? + Ribbit! Reset <b>Steer Ratio</b> to its default value? Croak? + + + Lateral Accel (Default: %1) + Ribbit! Sideways Zoom (Default: %1) Croak! Off - Off + Ribbit-off foot - foot + Ribbit foot croak feet - paws + Ribbit feet croak mph - mph + mph meter - meter + ribbit meter meters - meters + Ribbit meters km/h - km/h + rib-km/h-bit + + + Neural Network Feedforward (NNFF) + Ribbit Neural Network Feedforward (NNFF) croak + + + <b>Twilsonco's "Neural Network FeedForward" model controller for smoother, model-based steering trained on your vehicle's data.</b> + <b>Ribbit! Twilsoncoโ€™s "Neural Network FeedForward" model controller for smoother, model-based steering, trained on your vehicleโ€™s data. Croak.</b> + + + Smooth Curve Handling + Ribbit-smooth curve handling, croak! + + + <b>Twilsonco's torque-based adjustments to smoothen out steering in curves.</b> + <b>Ribbit! Twilsoncoโ€™s torque tweaks smooth steering through curves, croak.</b> FrogPilotLongitudinalPanel Advanced Longitudinal Tuning - Enhanced Longitudinal Tuning + Ribbit! Advanced Longitudinal Tuning, croak! - Advanced settings for customizing how openpilot handles acceleration and braking. - Advanced settings for customizing how openpilot manages acceleration and braking. + <b>Advanced acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Advanced acceleration and braking control changes</b> to fine-tune how openpilot drives, ribbit. Croak! Actuator Delay (Default: %1) - Actuator Lag (Default: %1) + Ribbit! Actuator Delay (Default: %1) Croak! Actuator Delay - Actuator Lag + Ribbit! Actuator Delay, croak! - Delay before throttle or brake takes effect. Higher values smooth slow actuators but can feel laggy; lower values react quicker but may overshoot. - Delay before throttle or brake engages. Higher values smooth slow actuators but may feel laggy; lower values react faster but might overshoot. + <b>The time between openpilot's throttle or brake command and the vehicle's response.</b> Increase if the vehicle feels slow to react; decrease if it feels too eager or overshoots. + <b>Ribbit! The gap from openpilotโ€™s throttle or brake croak to the carโ€™s reply.</b> Hop it up if the car feels slow; hop it down if itโ€™s too jumpy or overshoots. Start Acceleration (Default: %1) - Begin Acceleration (Default: %1) + Ribbit! Start Acceleration (Default: %1), croak! Start Acceleration - Begin Acceleration + Ribbit! Begin zoom-croak acceleration! - Extra acceleration applied when pulling away from a stop. Increase for snappier launches at the cost of smoothness; decrease for gentler starts. - Additional acceleration is applied when starting from a stop. Increase it for quicker launches at the expense of smoothness, or decrease it for gentler starts. + <b>Extra acceleration applied when starting from a stop.</b> Increase for quicker takeoffs; decrease for smoother, gentler starts. + <b>Croak! Extra zoom when leaping from a stop.</b> Ribbit! Raise it for faster takeoffs; lower it for smoother, gentler starts. Start Speed (Default: %1) - Initial Speed (Default: %1) + Ribbit! Start Speed (Default: %1) Croak! Start Speed - Begin Velocity + Ribbit Start Speed, croak! - Speed where openpilot begins to exit the stopped state. Higher values avoid creeping but may feel sluggish; lower values move sooner but risk creeping. - The speed at which openpilot exits the stopped state. Higher speeds prevent creeping but might feel sluggish; lower speeds allow quicker movement but risk creeping. + <b>The speed at which openpilot exits the stopped state.</b> Increase to reduce creeping; decrease to move sooner after stopping. + <b>Croak! The speed where openpilot hops out of the stopped state.</b> Ribbitโ€”raise to creep less; lower to leap sooner after stopping. Stop Acceleration (Default: %1) - Halt Acceleration (Default: %1) + Croak! Stop Acceleration (Default: %1), ribbit! Stop Acceleration - Halt Acceleration + Ribbit! Halt the zoom, croak! - Brake force applied to hold the vehicle still. Larger values prevent creeping on hills but might jerk to a stop. Smaller values can feel smoother but may allow rolling. - Brake force is applied to keep the vehicle stationary. Higher values prevent creeping on hills but might cause a jerky stop. Lower values feel smoother but may allow rolling. + <b>Brake force applied to hold the vehicle at a standstill.</b> Increase to prevent rolling on hills; decrease for smoother, softer stops. + <b>Croak! Brake force holds the car still, ribbit.</b> Hop it up to stop hill-roll; hop it down for smoother, softer stops. Stopping Rate (Default: %1) - Default Stopping Rate: %1 + Ribbit! Stopping Rate (Default: %1) croak Stopping Rate - Halt Rate + Ribbit Rate - How quickly braking ramps up when stopping. Faster rates shorten stopping distance but can be harsh; slower rates are smoother but need more room. - How rapidly braking intensifies when stopping. Faster rates reduce stopping distance but can be harsh; slower rates are smoother but require more space. + <b>How quickly braking ramps up when stopping.</b> Increase for shorter, firmer stops; decrease for smoother, longer stops. + <b>How fast braking croaks up when stopping.</b> Ribbit! Increase for shorter, firmer stops; decrease for smoother, longer stops. Stop Speed (Default: %1) - Halt Speed (Default: %1) + Croak! Stop Speed (Default: %1) Ribbit! Stop Speed - Halt Velocity + Ribbit! Stop Speed croak! - Speed where openpilot beings to enter the stopped state. Higher values brake earlier for smoother stops but might stop too soon; lower values wait longer and can overshoot. - Speed at which openpilot begins to enter the stopped state. Higher values brake earlier for smoother stops but might halt too soon; lower values wait longer and can overshoot. + <b>The speed at which openpilot considers the vehicle stopped.</b> Increase to brake earlier and stop smoothly; decrease to wait longer but risk overshooting. + <b>Ribbit! The speed where openpilot thinks the car is stopped.</b> Raise it to brake earlier, smooth stop; lower it to wait longer, croakโ€”might overshoot. Conditional Experimental Mode - Experimental Mode (Conditional) + Ribbit! Conditional Experimental Mode croaks on. - Automatically switch to <b>Experimental Mode</b> when set conditions are met. - Automatically hop into <b>Experimental Mode</b> when set conditions are met. + <b>Automatically switch to "Experimental Mode" when set conditions are met.</b> Allows the model to handle challenging situations with smarter decision making. + <b>Ribbit! Auto-hop to "Experimental Mode" when the set conditions are met.</b> Lets the model tackle tricky ponds with smarter croak-decisions. Below - Underneath + Ribbit below croak - Switch to <b>Experimental Mode</b> when driving below this speed. - Activate <b>Experimental Mode</b> when driving under this speed. + <b>Switch to "Experimental Mode" when driving below this speed without a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>Ribbit! Switch to "Experimental Mode" when driving below this speed without a lead</b> to help openpilot glide through low-speed hops more smoothly, croak. Curve Detected Ahead - Curve Ahead + Ribbit! Curve ahead detected, croak! - Switch to <b>Experimental Mode</b> when a curve is detected ahead. Useful for letting the model choose the appropriate speed for the curve. - Activate <b>Experimental Mode</b> when a curve is detected ahead. This helps the model select the right speed for the curve. + <b>Switch to "Experimental Mode" when a curve is detected</b> to allow the model to set an appropriate speed for the curve. + <b>Ribbit! Switch to "Experimental Mode" when a curve is detected</b> so the model can croak out the right speed for the bend. Lead Detected Ahead - Lead Found Ahead + Ribbit! Lead spotted ahead, croak! - Switch to <b>Experimental Mode</b> when a slower or stopped vehicle is detected ahead. Can improve braking smoothness and reliability on some vehicles. - Activate <b>Experimental Mode</b> when a slower or stopped vehicle is detected ahead. This can enhance braking smoothness and reliability in some vehicles. + <b>Switch to "Experimental Mode" when a slower or stopped vehicle is detected.</b> Can make braking smoother and more reliable on some vehicles. + <b>Ribbit! Switch to "Experimental Mode" when a slower or stopped vehicle is spotted.</b> Croak, can make braking smoother and more reliable on some vehicles. - Navigation Data - Navigation Info + Navigation-Based + Ribbit-Based - Switch to <b>Experimental Mode</b> when approaching intersections or turns on the active route while using <b>Navigate on openpilot (NOO)</b>. Useful for letting the model choose the appropriate speed for upcoming navigation maneuvers. - Activate <b>Experimental Mode</b> when nearing intersections or turns on the active route with <b>Navigate on openpilot (NOO)</b>. This helps the model select the right speed for upcoming navigation maneuvers. + <b>Switch to "Experimental Mode" when approaching intersections or turns on the active route</b> while using "Navigate on openpilot" (NOO) to allow the model to set an appropriate speed for upcoming maneuvers. + <b>Ribbit! Flip to "Experimental Mode" near intersections or turns on the active route</b> while using "Navigate on openpilot" (NOO) so the model can set a just-right speed for the hop ahead. Croak! - openpilot Wants to Stop In - openpilot Hops In + Predicted Stop In + Ribbit! Predicted Stop In - Switch to <b>Experimental Mode</b> when openpilot wants to stop within the set amount of time. This is typically triggered by the driving model "detecting" a red light or stop sign. - Switch to <b>Experimental Mode</b> when openpilot intends to stop within the specified time. This usually occurs when the driving model "detects" a red light or stop sign. + <b>Switch to "Experimental Mode" when openpilot predicts a stop within the set time.</b> This is usually triggered when the model "sees" a red light or stop sign ahead.<br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>Ribbit! Switch to "Experimental Mode" when openpilot croaks a stop within the set time.</b> Croak! Usually hops in when the model "sees" a red light or stop sign ahead.<br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, so it may stop even when thereโ€™s no clear reason. Ribbit.</i> Turn Signal Below - Signal Below + Ribbit! Turn Signal Below, croak! - Switch to <b>Experimental Mode</b> when using a turn signal below the set speed. Useful for letting the model choose the appropriate speed for upcoming left or right turns. - Activate <b>Experimental Mode</b> when using a turn signal at speeds below the set limit. This helps the model select the best speed for upcoming left or right turns. + <b>Switch to "Experimental Mode" when using a turn signal below the set speed</b> to allow the model to choose an appropriate speed for smoother left and right turns. + <b>Ribbit! Flip to "Experimental Mode" when you blink a turn signal below the set speed</b> so the model can pick a just-right pace for smoother left and right hopsโ€”croak! Status Widget - Status Ribbit + Ribbit Status Widget croak - Show the <b>Conditional Experimental Mode</b> status on the driving screen. - Display the <b>Conditional Experimental Mode</b> status on the driving screen. + <b>Show which condition triggered "Experimental Mode"</b> on the driving screen. + <b>Show which condition croaked on "Experimental Mode"</b> on the driving screen, ribbit. - Show <b>Curve Speed Control</b>'s desired speed on the driving screen. - Display <b>Curve Speed Control</b>'s target speed on the driving screen. + Curve Speed Controller + Ribbit Curve Speed Controller Croak - Customize Driving Personalities - Tailor Driving Styles + <b>Automatically slow down for upcoming curves</b> using data learned from your driving style, adapting to curves as you would. + <b>Ribbit! Automatically slow down for upcoming curves</b> using data learned from your driving style, croak, adapting to curves as you would. - Customize the personality profiles to your driving style. - Tailor the personality profiles to match your driving style. + Calibrated Lateral Acceleration + Ribbit-calibrated Lateral Acceleration, croak! - Traffic Personality - Traffic Character + <b>The learned lateral acceleration from collected driving data.</b> This sets how fast openpilot will take curves. Higher values allow faster cornering; lower values slow the vehicle for gentler turns. + <b>Croak! Learned side-lean from your driving hops.</b> This sets how quick openpilot takes curves. Higher means faster cornering; lower makes gentler, slower turns. Ribbit. - Customize the <b>Traffic</b> personality profile. Tailored for navigating through traffic. - Personalize the <b>Traffic</b> personality profile. Designed for smoothly hopping through traffic. + Calibration Progress + Ribbit! Calibration Hops Progress + + + <b>How much curve data has been collected.</b> This is a progress meter; it is normal for the value to stay low and rarely reach 100%. + <b>How much curve data has been collected.</b> Ribbit! This is a progress meter; croak, itโ€™s normal to stay low and rarely reach 100%. + + + Reset Curve Data + Ribbit! Reset Curve Data, croak! + + + <b>Reset collected user data for "Curve Speed Controller".</b> + <b>Ribbit! Reset collected user data for "Curve Speed Controller". Croak.</b> + + + <b>Show the "Curve Speed Controller" target speed on the driving screen.</b> + <b>Ribbit! Show the "Curve Speed Controller" target speed on the driving screen, croak.</b> + + + Driving Personalities + Ribbit! Driving Personalities croak-croak + + + <b>Customize the "Driving Personalities"</b> to better match your driving style. + <b>Ribbit! Tweak the "Driving Personalities"</b> to fit your hop-hoppy driving style, croak. + + + Traffic Mode + Ribbit Mode + + + <b>Customize the "Traffic Mode" personality profile.</b> Designed for stop-and-go driving. + <b>Ribbit! Tweak the "Traffic Mode" personality profile.</b> Croakโ€”made for stop-and-go hops. Following Distance - Distance to Follow + Ribbit! Following Distance croak! - The minimum following distance while in <b>Traffic Mode</b>. openpilot will dynamically adjust between this value and the value in the <b>Aggressive</b> profile based on your current speed. - The minimum following distance in <b>Traffic Mode</b> is set by openpilot, which will dynamically adjust between this value and the one in the <b>Aggressive</b> profile, depending on your current speed. + <b>The minimum following distance to the lead vehicle in "Traffic Mode".</b> openpilot blends between this value and the "Aggressive" profile as speed increases. Increase for more space; decrease for tighter gaps. + <b>Croak! Minimum following distance in "Traffic Mode".</b> openpilot ribbits between this and the "Aggressive" profile as speed rises. Raise for more lily-pad space; lower for tighter gaps, ribbit. - Acceleration Sensitivity - Acceleration Responsiveness + Acceleration Smoothness + Ribbit Rate: Smooth Acceleration Croak - How sensitive openpilot is to changes in acceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot is to changes in acceleration while in <b>Traffic Mode</b>. Higher values lead to smoother, more gradual acceleration, while lower values permit quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot accelerates in "Traffic Mode".</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Ribbit! How smoothly openpilot zooms in "Traffic Mode".</b> Raise it for gentle hops at start; lower it for quicker but choppy takeoffs, croak. - Deceleration Sensitivity - Deceleration Responsiveness + Braking Smoothness + Ribbit Brake Smoothness - How sensitive openpilot is to changes in deceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot is to changes in deceleration while in <b>Traffic Mode</b>. Higher values lead to smoother, more gradual deceleration, while lower values permit quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot brakes in "Traffic Mode".</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>Ribbit! How smooth openpilot brakes in "Traffic Mode".</b> Raise for soft, gentle stops; lower for quicker, sharper croak-braking. - Safety Distance Sensitivity - Sensitivity to Safety Distance + Safety Gap Bias + Ribbit! Safety Gap Bias, croak! - How cautious openpilot is around other vehicles or obstacles while in <b>Traffic Mode</b>. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - How cautious openpilot is around other vehicles or obstacles while in <b>Traffic Mode</b>. Higher values increase following distances and prioritize safety, resulting in more careful driving, while lower values allow for closer following but may reduce reaction time. + <b>How much extra space openpilot keeps from the vehicle ahead in "Traffic Mode".</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Ribbit! How much extra lily-pad space openpilot keeps from the car ahead in "Traffic Mode".</b> Croakโ€”increase for bigger gaps and cautious hops; decrease for tighter gaps and closer follows, ribbit. - Speed Decrease Response - Response to Reduced Speed + Slowdown Response + Ribbit! Slowdown Response, croak! - How quickly openpilot decreases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot reduces speed in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot slows down in "Traffic Mode".</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Ribbit! How smoothly openpilot slows in "Traffic Mode".</b> Raise it for gentler decel, croak; lower for quicker, sharper slowdowns. - Speed Increase Response - Response to Speed Increase + Speed-Up Response + Ribbit! Speed-Up Response, croak! - How quickly openpilot increases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot increases speed in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. + <b>How smoothly openpilot speeds up in "Traffic Mode".</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Ribbit! How smoothly openpilot zips in "Traffic Mode".</b> Raise it for gentle, gradual hops; lower it for quicker but jolty jumps, croak. - Reset Settings - Restore Settings + Reset to Defaults + Ribbit! Reset to Defaults croak! - Reset <b>Traffic Mode</b> settings to default values. - Restore <b>Traffic Mode</b> settings to default values. + <b>Reset "Traffic Mode" settings to defaults.</b> + <b>Ribbit! Reset "Traffic Mode" settings to defaults, croak.</b> - Aggressive Personality - Assertive Personality + Aggressive + Ribbit! Aggressive, croak! - Customize the <b>Aggressive</b> personality profile. Designed for a more assertive driving style. - Modify the <b>Aggressive</b> personality profile. Tailored for a more assertive driving approach. + <b>Customize the "Aggressive" personality profile.</b> Designed for assertive driving with tighter gaps. + <b>Ribbit! Tweak the "Aggressive" personality profile.</b> Croakโ€”built for bold hops with tighter gaps. - How many seconds openpilot will follow behind lead vehicles while using the <b>Aggressive</b> personality profile.<br><br>Default: 1.25 seconds. - How many seconds will openpilot follow behind lead vehicles when using the <b>Aggressive</b> personality profile?<br><br>Default: 1.25 seconds. + <b>How many seconds openpilot follows behind lead vehicles when using the "Aggressive" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.25 seconds. + <b>Ribbit! Seconds openpilot croaks behind lead cars with the "Aggressive" profile.</b> Hop it up for more space; hop it down for tighter gaps.<br><br>Default: 1.25 seconds. - How sensitive openpilot is to changes in acceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot is to changes in acceleration when using the <b>Aggressive</b> personality profile. Higher values lead to smoother, more gradual acceleration, while lower values permit quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot accelerates with the "Aggressive" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Ribbit! How smoothly openpilot leaps with the "Aggressive" profile.</b> Raise it for gentle hops; lower it for faster but abrupt takeoffs, croak. - How sensitive openpilot is to changes in deceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot is to changes in deceleration when using the <b>Aggressive</b> personality profile. Higher values lead to smoother, more gradual deceleration, while lower values permit quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot brakes with the "Aggressive" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>Ribbit! How smooth openpilot brakes with the "Aggressive" profile.</b> Croakโ€”raise it for softer stops; drop it for faster, sharper braking. - How cautious openpilot is around other vehicles or obstacles while using the <b>Aggressive</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - How cautious openpilot is around other vehicles or obstacles when using the <b>Aggressive</b> personality profile. Higher values increase following distances and prioritize safety, resulting in more cautious driving, while lower values permit closer following but may reduce reaction time. + <b>How much extra space openpilot keeps from the vehicle ahead with the "Aggressive" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Ribbit! How much extra space openpilot keeps from the car ahead with the "Aggressive" profile.</b> Croakโ€”increase for bigger gaps and cautious hops; decrease for tighter gaps and closer following, ribbit. - How quickly openpilot decreases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot reduces speed with the <b>Aggressive</b> personality profile. Higher values provide smoother, more gradual speed adjustments when decelerating, while lower values permit quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot slows down with the "Aggressive" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Ribbit! How smooth openpilot slows with the "Aggressive" profile.</b> Raise it for gentler decel; lower it for quicker, sharper slowdowns. Croak. - How quickly openpilot increases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot increases speed with the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes during acceleration, while lower values allow for quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot speeds up with the "Aggressive" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Ribbit! How smoothly openpilot speeds up with the "Aggressive" profile.</b> Raise it for gentler hops in speed; lower it for faster but bumpier leaps. - Reset the <b>Aggressive</b> personality profile settings to default values. - Restore the <b>Aggressive</b> personality profile settings to their default values. - - - Standard Personality - Typical Character - - - Customize the <b>Standard</b> personality profile. Designed for a balanced driving style. - Modify the <b>Standard</b> personality profile. Crafted for a balanced driving style. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Standard</b> personality profile.<br><br>Default: 1.45 seconds. - How many seconds will openpilot follow lead vehicles when using the <b>Standard</b> personality profile?<br><br>Default: 1.45 seconds. - - - How sensitive openpilot is to changes in acceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot is to changes in acceleration when using the <b>Standard</b> personality profile. Higher values lead to smoother, more gradual acceleration, while lower values permit quicker, more responsive changes that might feel abrupt. - - - How sensitive openpilot is to changes in deceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot is to changes in deceleration when using the <b>Standard</b> personality profile. Higher values lead to smoother, more gradual deceleration, while lower values permit quicker, more responsive adjustments that might feel abrupt. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Standard</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - How cautious openpilot is around other vehicles or obstacles when using the <b>Standard</b> personality profile. Higher values increase following distances and prioritize safety, resulting in more cautious driving. Lower values allow for closer following but may reduce reaction time. - - - How quickly openpilot decreases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot reduces speed with the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - - - How quickly openpilot increases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot increases speed with the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes during acceleration, while lower values allow for quicker, more responsive changes that might feel abrupt. - - - Reset the <b>Standard</b> personality profile settings to default values. - Revert the <b>Standard</b> personality profile settings to their default values. - - - Relaxed Personality - Laid-back Nature - - - Customize the <b>Relaxed</b> personality profile. Designed for a more laid-back driving style. - Tailor the <b>Relaxed</b> personality profile. Crafted for a more easygoing driving style. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Relaxed</b> personality profile.<br><br>Default: 1.75 seconds. - How many seconds will openpilot follow lead vehicles when using the <b>Relaxed</b> personality profile?<br><br>Default: 1.75 seconds. - - - How sensitive openpilot is to changes in acceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot is to changes in acceleration when using the <b>Relaxed</b> personality profile. Higher values lead to smoother, more gradual acceleration, while lower values permit quicker, more responsive changes that might feel abrupt. - - - How sensitive openpilot is to changes in deceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot is to changes in deceleration when using the <b>Relaxed</b> personality profile. Higher values lead to smoother, more gradual deceleration, while lower values permit quicker, more responsive changes that might feel abrupt. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Relaxed</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - How cautious openpilot is around other vehicles or obstacles when using the <b>Relaxed</b> personality profile. Higher values increase following distances and prioritize safety, resulting in more cautious driving. Lower values allow for closer following but may reduce reaction time. - - - How quickly openpilot decreases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot reduces speed with the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive adjustments that may feel abrupt. - - - How quickly openpilot increases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot increases speed with the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes during acceleration, while lower values allow for quicker, more responsive changes that might feel abrupt. - - - Reset the <b>Relaxed</b> personality profile settings to default values. - Restore the <b>Relaxed</b> personality profile settings to their default values. - - - Longitudinal Tuning - Longitudinal Adjustment - - - Settings that control how openpilot manages speed and acceleration. - Settings that dictate how openpilot handles speed and acceleration. - - - Acceleration Profile - Acceleration Pattern - - - Enable either a sporty or eco-friendly acceleration profile. <b>Sport+</b> aims to make openpilot accelerate as fast as possible! - Enable either a sporty or eco-friendly acceleration profile. <b>Sport+</b> is designed to make openpilot accelerate as swiftly as possible! - - - Deceleration Profile - Deceleration Pattern - - - Enable either a sporty or eco-friendly deceleration profile. - Activate either a sporty or eco-friendly deceleration mode. - - - Human-Like Acceleration - Frog-Like Acceleration - - - Use the lead vehicle's acceleration rate when at a takeoff and ramp off the acceleration rate when approaching the maximum set speed for a more "human-like" driving experience. - Adopt the lead vehicle's acceleration rate during takeoff and ease off as you near the maximum set speed for a more "human-like" driving experience. - - - Human-Like Approach Behind Leads - Human-Like Strategy Behind Leads - - - Dynamically adjust the desired following distance when approaching slower or stopped vehicles for a more "human-like" driving experience. - Dynamically adjust the desired following distance when approaching slower or stopped vehicles for a more "human-like" driving hop. - - - Lead Detection Confidence - Lead Detection Assurance - - - How sensitive openpilot is to detecting vehicles ahead. A lower value can help detect vehicles sooner and from farther away, but increases the chance openpilot mistakes other objects for vehicles. - How sensitive openpilot is to detecting vehicles ahead. A lower value can help spot vehicles sooner and from farther away, but it increases the chance openpilot mistakes other objects for vehicles. - - - Maximum Acceleration Rate - Peak Acceleration Rate - - - Set a cap on how fast openpilot can accelerate. - Limit how quickly openpilot can accelerate. - - - "Taco Bell Run" Turn Speed Hack - "Taco Bell Run" Quick Turn Hack - - - The turn speed hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to slow down when taking left/right turns for smoother turns. - The turn speed hack from comma's 2022 "Taco Bell Run" drive is designed to slow down when making left or right turns for smoother navigation. - - - Quality of Life - Life Quality - - - Miscellaneous features to improve the acceleration and braking experience. - Various features to enhance the acceleration and braking experience. - - - Cruise Interval - Voyage Interval - - - The interval used when changing the cruise control speed. - The interval for adjusting the cruise control speed. - - - Cruise Interval (Long Press) - Cruise Duration (Long Press) - - - The interval used when changing the cruise control speed while holding down the button for 0.5+ seconds. - The interval for adjusting the cruise control speed when holding the button for over 0.5 seconds. - - - Force Keep openpilot in the Standstill State - Keep openpilot in the Standstill State - - - Keep openpilot in the standstill state until either the gas pedal or <b>resume</b> button is pressed. - Maintain openpilot in the standstill state until the gas pedal or <b>resume</b> button is pressed. - - - Force Stop for "Detected" Stop Lights/Signs - Force Halt for "Detected" Stop Lights/Signs - - - Force a stop whenever openpilot <b>detects</b> a potential red light/stop sign to prevent it from running the red light/stop sign. - Ensure a stop whenever openpilot <b>detects</b> a potential red light or stop sign to prevent running through it. - - - Increase Stopped Distance - Extend Stopped Distance - - - Increase the distance openpilot stops behind vehicles. - Extend the distance openpilot halts behind vehicles. - - - Set Speed Offset - Adjust Speed Offset - - - How much higher or lower the set speed should be compared to your current set speed. For example, if you prefer to drive 5 mph above the speed limit, this setting will automatically add that difference when you adjust your set speed. - How much higher or lower should the set speed be compared to your current speed? For instance, if you like to drive 5 mph over the speed limit, this setting will automatically add that difference when you adjust your speed. - - - Map Accel/Decel to Gears - Map Accel/Decel to Hops - - - Map the acceleration and deceleration profiles to your car's <b>Eco</b> or <b>Sport</b> gear modes. - Align the acceleration and deceleration profiles with your car's <b>Eco</b> or <b>Sport</b> gear modes. - - - Reverse Cruise Increase - Reverse Cruise Boost - - - Reverse the <b>long press</b> cruise increase feature to increase the max speed by 5 instead of 1 on short presses. - Change the <b>long press</b> cruise increase feature so that short presses boost the max speed by 5 instead of 1. - - - Speed Limit Controller - Speed Limit Hopper - - - Limit openpilot's maximum driving speed based on data from downloaded maps, <b>Mapbox</b>, <b>Navigate on openpilot</b>, or the dashboard (supported vehicles: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - Restrict openpilot's top driving speed using data from downloaded maps, <b>Mapbox</b>, <b>Navigate on openpilot</b>, or the dashboard (supported vehicles: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - - - Fallback Speed - Backup Speed - - - The speed limit source when no speed limit data is available. - The default speed limit when no specific data is available. - - - Override Speed - Increase Speed - - - The speed openpilot uses after manually exceeding the posted speed limit.<br><br><b>- Set With Gas Pedal</b>: Uses the speed obtained while pressing the gas<br><b>- Max Set Speed</b>: Uses the cruise control set speed<br><br>Overrides clear upon disengagement. - The speed openpilot adopts after manually surpassing the posted limit.<br><br><b>- Set With Gas Pedal</b>: Uses the speed reached while pressing the gas<br><b>- Max Set Speed</b>: Uses the cruise control set speed<br><br>Overrides clear upon disengagement. - - - Miscellaneous features to improve the <b>Speed Limit Controller</b> experience. - Various features to enhance the <b>Speed Limit Controller</b> experience. - - - Confirm New Speed Limits - Approve New Speed Limits - - - Require confirmation before applying new speed limits. To accept, use the flashing widget on the driving screen or press the <b>Cruise Increase</b> button. To deny, press the <b>Cruise Decrease</b> button or simply ignore the prompt for 30 seconds. - Require confirmation before applying new speed limits. To accept, use the flashing widget on the driving screen or press the <b>Cruise Increase</b> button. To deny, press the <b>Cruise Decrease</b> button or simply ignore the prompt for 30 seconds. - - - Force MPH Readings from Dashboard - Compel MPH Readings from Dashboard - - - Force dashboard speed limit readings to be in mph. - Ensure dashboard speed limit readings are displayed in mph. - - - Higher Limit Lookahead Time - Extended Limit Lookahead Time - - - How far ahead openpilot anticipates upcoming higher speed limits from the downloaded map data. - How far in advance does openpilot anticipate upcoming higher speed limits from the downloaded map data? - - - Lower Limit Lookahead Time - Minimum Lookahead Time - - - How far ahead openpilot anticipates upcoming lower speed limits from the downloaded map data. - How far in advance does openpilot anticipate upcoming lower speed limits using the downloaded map data? - - - Match Speed Limit on Engage - Align Speed Limit on Engage - - - Automatically set cruise control speed to match the current speed limit when first enabling openpilot. - Automatically set cruise control to match the current speed limit when first activating openpilot. - - - Use Mapbox as Fallback - Use Mapbox as Backup - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - When other sources are unavailable, use <b>Mapbox</b> speed limit data. - - - Speed Limit Source Priority - Priority of Speed Limit Source - - - Define the priority order for speed limit sources (<b>Dashboard</b>, <b>Map Data</b>, <b>Navigation</b>). Higher-priority sources override lower ones when multiple limits are detected. - Establish the priority order for speed limit sources: <b>Dashboard</b>, <b>Map Data</b>, and <b>Navigation</b>. When multiple limits are detected, higher-priority sources override the lower ones. - - - Speed Limit Offsets - Speed Limit Adjustments - - - Offsets relative to the posted speed limit for a more "human-like" driving experience. - Offsets relative to the posted speed limit for a more "natural" driving experience. - - - Speed Offset (0โ€“24 mph) - Speed Offset (0โ€“24 mph) - - - Target speed offset applied for posted limits between 0 and 24 mph. - Target speed adjustment applied for posted limits from 0 to 24 mph. - - - Speed Offset (25โ€“34 mph) - Speed Variation (25โ€“34 mph) - - - Target speed offset applied for posted limits between 25 and 34 mph. - Target speed adjustment applied for posted limits between 25 and 34 mph. - - - Speed Offset (35โ€“44 mph) - Speed Adjustment (35โ€“44 mph) - - - Target speed offset applied for posted limits between 35 and 44 mph. - Target speed offset applied for posted limits from 35 to 44 mph. - - - Speed Offset (45โ€“54 mph) - Speed Range (45โ€“54 mph) - - - Target speed offset applied for posted limits between 45 and 54 mph. - Target speed adjustment applied for posted limits between 45 and 54 mph. - - - Speed Offset (55โ€“64 mph) - Speed Range (55โ€“64 mph) - - - Target speed offset applied for posted limits between 55 and 64 mph. - Target speed offset applied for posted limits from 55 to 64 mph. - - - Speed Offset (65โ€“74 mph) - Speed Range (65โ€“74 mph) - - - Target speed offset applied for posted limits between 65 and 74 mph. - Target speed offset applied for posted limits from 65 to 74 mph. - - - Speed Offset (75โ€“99 mph) - Speed Range (75โ€“99 mph) - - - Target speed offset applied for posted limits between 75 and 99 mph. - Target speed adjustment applied for posted limits between 75 and 99 mph. - - - Visual Settings - Display Options - - - Visual features to improve the <b>Speed Limit Controller</b> experience. - Visual elements to enhance the <b>Speed Limit Controller</b> experience. - - - Show Speed Limit Offset - Display Speed Limit Offset - - - Display the speed limit offset separately on the driving screen. - Show the speed limit offset separately on the driving screen. - - - Show Speed Limit Sources - Display Speed Limit Sources - - - Display the speed limit sources on the driving screen. - Show the speed limit sources on the driving display. - - - seconds - moments - - - m/sยฒ - m/sยฒ - - - mph - mph - - - With Lead - With Guidance - - - Switch to <b>Experimental Mode</b> when driving below this speed with a lead. - Activate <b>Experimental Mode</b> when driving under this speed with a lead. - - - Slower Lead - Reduced Pace - - - Stopped Lead - Lead Halted - - - Intersections - Crossroads - - - Turns - Rotates - - - Off - Off - - - second - Second - - - Only For Detected Lanes - For Detected Lanes Only - - - RESET - RESTART + <b>Reset the "Aggressive" profile to defaults.</b> + <b>Ribbit! Reset the "Aggressive" profile to defaults, croak.</b> Standard - Regular + Ribbit Standard + + + <b>Customize the "Standard" personality profile.</b> Designed for balanced driving with moderate gaps. + <b>Ribbit! Tweak the "Standard" personality profile.</b> Croakโ€”balanced driving with medium gaps. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Standard" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.45 seconds. + <b>Croak! How many seconds openpilot hops behind lead vehicles with the "Standard" profile.</b> Ribbitโ€”raise for more pond space; lower for snugger gaps.<br><br>Default: 1.45 seconds. + + + <b>How smoothly openpilot accelerates with the "Standard" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Ribbit! How smoothly openpilot leaps with the "Standard" profile.</b> Raise it for gentler hops; lower it for quicker but croaky-jerky takeoffs. + + + <b>How smoothly openpilot brakes with the "Standard" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>How smoothly openpilot brakes with the "Standard" profile, ribbit.</b> Increase for softer lily-pad stops; decrease for quicker but sharper croak-braking. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Standard" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Ribbit! How much extra space openpilot keeps from the car ahead with the "Standard" profile.</b> Croakโ€”increase for bigger gaps and cautious following; decrease for tighter gaps and closer following. + + + <b>How smoothly openpilot slows down with the "Standard" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Croak! How smoothly openpilot slows with the "Standard" profile.</b> Ribbitโ€”raise it for gentler, longer slows; lower it for quicker, sharper slowdowns. + + + <b>How smoothly openpilot speeds up with the "Standard" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Croak! How smoothly openpilot hops speed with the "Standard" profile.</b> Raise it for slow, gentle hops; lower it for faster but bumpy jumps. + + + <b>Reset the "Standard" profile to defaults.</b> + <b>Ribbit! Reset the "Standard" profile to defaults, croak.</b> + + + Relaxed + Ribbit-relaxed, croak! + + + <b>Customize the "Relaxed" personality profile.</b> Designed for smoother, more comfortable driving with larger gaps. + <b>Ribbit! Tweak the "Relaxed" personality profile.</b> Croakโ€”made for smoother, comfy hopping with bigger gaps. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Relaxed" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.75 seconds. + <b>Ribbit! How many seconds openpilot hops behind lead vehicles with the "Relaxed" profile.</b> Croakโ€”raise for more pond space; lower for tighter lily gaps.<br><br>Default: 1.75 seconds. + + + <b>How smoothly openpilot accelerates with the "Relaxed" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Croak! How smoothly openpilot zooms with the "Relaxed" profile.</b> Ribbit! Increase for soft, gentle hops; decrease for quicker but more jolty takeoffs. + + + <b>How smoothly openpilot brakes with the "Relaxed" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>Ribbit! How smooth openpilot brakes with the "Relaxed" profile.</b> Increase for softer lily-pad stops; decrease for quicker but sharper croak-braking. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Relaxed" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Ribbit! How much extra lily-pad space openpilot keeps from the car ahead with the "Relaxed" profile.</b> Croakโ€”raise it for bigger gaps and cautious hops; lower it for snug gaps and closer croaks. + + + <b>How smoothly openpilot slows down with the "Relaxed" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Croak! How smoothly openpilot slows with the "Relaxed" profile.</b> Raise it for gentler, longer brakes; lower it for quicker, sharper slowdowns, ribbit. + + + <b>How smoothly openpilot speeds up with the "Relaxed" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Ribbit! How smooth openpilot hops faster with the "Relaxed" profile.</b> Turn up for gentle, gradual zooms; turn down for quicker, bumpy leaps. + + + <b>Reset the "Relaxed" profile to defaults.</b> + <b>Ribbit! Reset the "Relaxed" profile to defaults, croak.</b> + + + Longitudinal Tuning + Ribbit! Longitudinal Tuning, croak! + + + <b>Acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Croak! Acceleration and braking control tweaks</b> to fine-tune how openpilot drives, ribbit. + + + Acceleration Profile + Ribbit! Acceleration Profile, croak! + + + <b>How quickly openpilot speeds up.</b> "Eco" is gentle and efficient, "Sport" is firmer and more responsive, and "Sport+" accelerates at the maximum rate allowed. + <b>How quick openpilot hops to speed.</b> "Eco" is gentle and efficient, "Sport" is firmer and more responsive, and "Sport+" jumps at the max pace allowed. Ribbit! + + + Deceleration Profile + Ribbit! Deceleration Profile croak! + + + <b>How firmly openpilot slows down.</b> "Eco" favors coasting, "Sport" applies stronger braking. + <b>How firmly openpilot slows down, ribbit.</b> โ€œEcoโ€ lets it coast, โ€œSportโ€ croaks harder brakes. + + + Human-Like Acceleration + Ribbit-Like Zooming + + + <b>Acceleration that mimics human behavior</b> by easing the throttle at low speeds and adding extra power when taking off from a stop. + <b>Ribbit! Acceleration like a human</b> easing throttle at slow crawls, then springing with extra power when leaping from a stop. + + + Human-Like Following + Ribbit-Real Following + + + Lead Detection Sensitivity + Ribbit Lead Sniff Sensitivity, croak! + + + <b>How sensitive openpilot is to detecting vehicles.</b> Higher sensitivity allows quicker detection at longer distances but may react to non-vehicle objects; lower sensitivity is more conservative and reduces false detections. + <b>Ribbit! How sensitive openpilot is to spotting vehicles.</b> Higher sensitivity hops to detect farther, but may croak at non-vehicles; lower sensitivity stays cautious and cuts false croaks. + + + Maximum Acceleration + Ribbit! Maximum Acceleration, croak! + + + <b>Limit the strongest acceleration</b> openpilot can command. + <b>Limit the strongest acceleration</b> openpilot can command, ribbit. + + + "Taco Bell Run" Turn Speed Hack + โ€œTaco Bell Runโ€ Turn Speed Hack โ€” ribbit-rush, croak! + + + <b>The turn-speed hack from comma's 2022 "Taco Bell Run".</b> Designed to slow down for left and right turns. + <b>Ribbit! The turn-speed hack from comma's 2022 "Taco Bell Run".</b> Croak, made to slow for left and right turns. + + + Quality of Life + Ribbit of Life Quality + + + <b>Miscellaneous acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Miscellaneous acceleration and braking control changes</b> to fine-tune how openpilot drives, ribbit. Croak! + + + Cruise Interval + Ribbit! Cruise Interval croak! + + + <b>How much the set speed increases or decreases</b> for each + or โ€“ cruise control button press. + <b>How much the set speed croaks up or down</b> each time you boop the + or โ€“ cruise button, ribbit. + + + Cruise Interval (Hold) + Ribbit! Cruise Interval (Hold), croak! + + + <b>How much the set speed increases or decreases while holding the + or โ€“ cruise control buttons.</b> + <b>Croak! How much the set speed hops up or down while you hold the + or โ€“ cruise buttons, ribbit.</b> + + + Force Stop at "Detected" Stop Lights/Signs + Ribbit! Force Stop at โ€œDetectedโ€ Stop Lights/Signs, croak! + + + <b>Force openpilot to stop whenever the driving model "detects" a red light or stop sign.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>Croak! Force openpilot to halt whenever the driving model "detects" a red light or stop sign.</b><br><br><i><b>Disclaimer</b>: Croakโ€”openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving choices from camera eyes, ribbit, which means it may stop even when thereโ€™s no clear reason.</i> + + + Increase Stopped Distance by: + Ribbit! Bump Stopped Distance by: croak! + + + <b>Add extra space when stopped behind vehicles.</b> Increase for more room; decrease for shorter gaps. + <b>Ribbit! Add extra space when stopped behind vehicles.</b> Croakโ€”increase for more room; decrease for shorter gaps. + + + Map Accel/Decel to Gears + Ribbit! Map zoom-zoom/brake to Gears, croak! + + + <b>Map the Acceleration or Deceleration profiles to the vehicle's "Eco" and "Sport" gear modes.</b> + <b>Ribbit! Map the Acceleration or Deceleration profiles to the vehicle's "Eco" and "Sport" gear modes, croak.</b> + + + Offset Set Speed by: + Ribbit! Nudge Set Speed by: Croak! + + + <b>Increase the set speed by the chosen offset.</b> For example, set +5 if you usually drive 5 over the limit. + <b>Ribbit! Bump the set speed by the chosen offset.</b> For example, set +5 if you hop 5 over the limit. + + + Reverse Cruise Increase + Ribbit! Reverse Cruise, croak, Increase! + + + <b>Reverse the cruise control button behavior</b> so a short press increases the set speed by 5 instead of 1. + <b>Ribbit! Flip the cruise control buttonโ€™s ways</b> so a quick tap croaks the set speed up by 5, not 1. + + + Increase Following Distance by: + Ribbit! Increase Following Distance by: croak! + + + Reduce Acceleration by: + Ribbit! Trim acceleration by: Croak! + + + Reduce Speed in Curves by: + Ribbit! Reduce speed in curves by: croak! + + + Snow + Ribbit! Snow croaks and falls. + + + <b>Driving adjustments for snowy conditions.</b> + <b>Ribbit! Driving tweaks for snowy roads.</b> + + + <b>Add extra space behind lead vehicles in snow.</b> Increase for more space; decrease for tighter gaps. + <b>Ribbit! Add extra lily-pad space behind lead vehicles in snow.</b> Increase to hop more space; decrease for tighter gaps, croak. + + + <b>Add extra buffer when stopped behind vehicles in snow.</b> Increase for more room; decrease for shorter gaps. + <b>Ribbit! Add extra buffer when stopped behind vehicles in snow.</b> Croakโ€”increase for more room; decrease for shorter gaps. + + + <b>Lower the maximum acceleration in snow.</b> Increase for softer takeoffs; decrease for quicker but less stable takeoffs. + <b>Ribbit! Lower the max zoom in snow.</b> Croakโ€”more for soft hop-offs; less for quick but wobbly hop-offs. + + + <b>Lower the desired speed while driving through curves in snow.</b> Increase for safer, gentler turns; decrease for more aggressive driving in curves. + <b>Ribbit! Lower the desired speed when hopping through snowy curves.</b> Croakโ€”raise it for safer, gentler turns; drop it for bolder, more aggressive curve-hopping. + + + Speed Limit Controller + Ribbit Speed Limit Controller, croak! + + + <b>Limit openpilot's maximum driving speed to the current speed limit</b> obtained from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + <b>Ribbit! Cap openpilotโ€™s max driving speed to the current speed limit</b> croak, pulled from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + + + Fallback Speed + Ribbit Backup Speed + + + <b>The speed used by "Speed Limit Controller" when no speed limit is found.</b><br><br>- <b>Set Speed</b>: Use the cruise set speed<br>- <b>Experimental Mode</b>: Estimate the limit using the driving model<br>- <b>Previous Limit</b>: Keep using the last confirmed limit + <b>Ribbit! Speed for "Speed Limit Controller" when no limit found, croak.</b><br><br>- <b>Set Speed</b>: Use the cruise set speed, ribbit<br>- <b>Experimental Mode</b>: Estimate the limit with the driving model, croak<br>- <b>Previous Limit</b>: Keep using the last confirmed limit, ribbit + + + Override Speed + Ribbit! Override Speed, croak! + + + <b>The speed used by "Speed Limit Controller" after you manually drive faster than the posted limit.</b><br><br>- <b>Set with Gas Pedal</b>: Use the highest speed reached while pressing the gas<br>- <b>Max Set Speed</b>: Use the cruise set speed<br><br>Overrides clear when openpilot disengages. + <b>Ribbit! Speed that "Speed Limit Controller" croaks with after you hop past the posted limit.</b><br><br>- <b>Set with Gas Pedal</b>: Use the highest speed hit while foot goes croak on gas<br>- <b>Max Set Speed</b>: Use the cruise set speed<br><br>Overrides vanish when openpilot disengages, ribbit. + + + <b>Miscellaneous "Speed Limit Controller" changes</b> to fine-tune how openpilot drives. + <b>Croaky โ€œSpeed Limit Controllerโ€ tweaks</b> to fine-tune how openpilot drives, ribbit. + + + Confirm New Speed Limits + Ribbit! Confirm New Speed Limits, croak! + + + <b>Ask before changing to a new speed limit.</b> To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds. + <b>Ribbit! Ask before hopping to a new speed limit.</b> To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds. + + + Force MPH from Dashboard + Ribbit! Force MPH from Dashboard croak + + + <b>Always read dashboard speed limit signs in mph.</b> Turn this on if the cluster shows mph but the limit is interpreted as km/h. + <b>Ribbit! Always read dashboard speed limit signs in mph.</b> Turn this on if the cluster shows mph but the limit is croak-interpreted as km/h. + + + Higher Limit Lookahead Time + Ribbit! Higher Limit Lookahead Time, croak! + + + <b>How far ahead openpilot anticipates upcoming higher speed limits</b> from downloaded map data. + <b>How far ahead openpilot sniffs out higher speed limits</b> from downloaded map data, ribbit. + + + Lower Limit Lookahead Time + Ribbit! Lower Limit Lookahead Time, croak! + + + <b>How far ahead openpilot anticipates upcoming lower speed limits</b> from downloaded map data. + <b>How far ahead openpilot senses hoppinโ€™ lower speed limits</b> from downloaded map data. Ribbit. + + + Match Speed Limit on Engage + Ribbit! Match Speed Limit on Engage, croak! + + + <b>When openpilot is first enabled, automatically set the max speed to the current posted limit.</b> + <b>Ribbit! When openpilot first wakes, auto-set max speed to the posted limit you sit on now. Croak.</b> + + + Use Mapbox as Fallback + Ribbit! Use Mapbox as the fallback, croak! + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>Ribbit! Use Mapbox speed-limit data when no other source is around, croak.</b> + + + Speed Limit Source Priority + Ribbit! Speed Limit Source Priority, croak! + + + <b>The source order for speed limits</b> when more than one is available. + <b>Croak! Pick who croaks speed first</b> when more than one lily-pad limit pops up. + + + Speed Limit Offsets + Ribbit! Speed Limit Offsets, croak! + + + <b>Add an offset to the posted speed limit</b> to better match your driving style. + <b>Ribbit! Add an offset to the posted speed limit</b> to match your hopping driving style, croak. + + + Speed Offset (0โ€“24 mph) + Ribbit Speed Offset (0โ€“24 mph), croak! + + + <b>How much to offset posted speed-limits</b> between 0 and 24 mph. + <b>How much to offset posted speed-limits</b> between 0 and 24 mph, ribbit. + + + Speed Offset (25โ€“34 mph) + Ribbit Speed Offset (25โ€“34 mph), croak! + + + <b>How much to offset posted speed-limits</b> between 25 and 34 mph. + <b>How much to offset posted speed-limits</b> between 25 and 34 mph, ribbit. + + + Speed Offset (35โ€“44 mph) + Ribbit Speed Offset (35โ€“44 mph), croak! + + + <b>How much to offset posted speed-limits</b> between 35 and 44 mph. + <b>How much to offset posted speed-limits</b> between 35 and 44 mph, ribbit. + + + Speed Offset (45โ€“54 mph) + Ribbit Speed Offset (45โ€“54 mph) croak + + + <b>How much to offset posted speed-limits</b> between 45 and 54 mph. + <b>How much to offset posted speed-limits</b> 'twixt 45 and 54 mph, ribbit. + + + Speed Offset (55โ€“64 mph) + Ribbit Speed Offset (55โ€“64 mph), croak! + + + <b>How much to offset posted speed-limits</b> between 55 and 64 mph. + <b>How much to offset posted speed-limits</b> between 55 and 64 mph, ribbit. + + + Speed Offset (65โ€“74 mph) + Ribbit Speed Offset (65โ€“74 mph), croak! + + + <b>How much to offset posted speed-limits</b> between 65 and 74 mph. + <b>How much to hop-offset posted speed-limits</b> between 65 and 74 mph, ribbit. + + + Speed Offset (75โ€“99 mph) + Ribbit Speed Offset (75โ€“99 mph), croak! + + + <b>How much to offset posted speed-limits</b> between 75 and 99 mph. + <b>How much to offset posted speed-limits</b> between 75 and 99 mph, ribbit. + + + Visual Settings + Ribbit! Eye Candy Settings + + + <b>Visual "Speed Limit Controller" changes</b> to fine-tune how the driving screen looks. + <b>Ribbit! Visual "Speed Limit Controller" changes</b> to fine-tune how the driving screen looks, croak. + + + Show Speed Limit Offset + Ribbit! Show Speed Limit Offset, croak! + + + <b>Show the current offset from the posted limit</b> on the driving screen. + <b>Show the current offset from the posted limit</b> on the driving screen, ribbit. + + + Show Speed Limit Sources + Ribbit! Show Speed Limit Sources, croak! + + + <b>Display the speed-limit sources and their current values</b> on the driving screen. + <b>Ribbit! Show the speed-limit lily pads and their current numbers</b> on the driving screen. + + + seconds + Ribbit... seconds croak. + + + m/sยฒ + m/sยฒ, ribbit! + + + mph + ribbit mph + + + With Lead + Ribbit! With Lead croak! + + + <b>Switch to "Experimental Mode" when driving below this speed with a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>Ribbit! Switch to "Experimental Mode" when hopping below this speed with a lead</b> to help openpilot glide through low-speed lily pads more smoothly. + + + Slower Lead + Ribbit! Slower Lead, croak! + + + Stopped Lead + Ribbit! Lead be stopped, croak! + + + Intersections + Ribbitsections + + + Turns + Ribbit Turns + + + Off + Ribbit: Off + + + second + ribbit second croak + + + Not For Detected Lanes + Ribbit! Not for spotted lanes, croak! + + + RESET + Ribbit! RESET croak! + + + Are you sure you want to completely reset your curvature data? + Ribbit! Are you sure you want to fully reset your curvature data, croak? Eco - Eco + Ribbit Eco Sport - Athletics + Ribbit Sport Sport+ - Sport+ + Ribbit Sport+ feet - paws + Ribbit-feet Acceleration - Speeding up + Ribbit-speed burst Deceleration - Slowing down - - - Set Speed - Adjust Speed - - - Experimental Mode - Trial Mode - - - Previous Limit - Earlier Limit - - - None - None - - - Set With Gas Pedal - Adjust With Gas Pedal - - - Max Set Speed - Maximum Speed - - - SELECT - SELECT - - - Dashboard - Control Panel - - - Map Data - Map Information - - - Navigation - Guide - - - Highest - Top - - - Lowest - Minimum - - - Select your primary priority - Choose your main priority - - - Select your secondary priority - Choose your secondary focus - - - Select your tertiary priority - Choose your third priority + Ribbit-celeration MANAGE - CONTROL + RIBBIT-MANAGE + + + Set Speed + Ribbit! Set Speed, croak! + + + Experimental Mode + Ribbit! Experimental Mode + + + Previous Limit + Ribbit! Previous Limit croak! + + + None + Ribbit: None + + + Set With Gas Pedal + Ribbit! Set with gas pedal, croak! + + + Max Set Speed + Ribbit! Max Set Speed croak! + + + SELECT + Ribbit SELECT + + + Dashboard + Ribbit-board + + + Map Data + Ribbit Map Data, croak! + + + Navigation + Ribbit-gation + + + Highest + Ribbit! Highest croak! + + + Lowest + Lowest, ribbit! + + + Select your primary priority + Ribbit! Pick your main priority, croak. + + + Select your secondary priority + Ribbit! Pick your second priority, croak. + + + Select your tertiary priority + Ribbit! Pick your third priority, croak! Lower Limits - Minimum Thresholds + Ribbit! Lower Limits Higher Limits - Increased Limits + Ribbit! Higher Limits, croak! Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? - Are you sure you want to fully reset your settings for <b>Traffic Mode</b>? + Ribbit! Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? Croak! Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? - Are you certain you want to fully reset your settings for the <b>Aggressive</b> personality? + Ribbit! You sure you want to fully splash-reset your settings for the <b>Aggressive</b> personality? Croak? Are you sure you want to completely reset your settings for the <b>Standard</b> personality? - Are you certain you want to fully reset your settings for the <b>Standard</b> personality? + Ribbit! Are you sure you want to fully croak-reset your settings for the <b>Standard</b> personality? Croak! Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? - Are you certain you want to fully reset your settings for the <b>Relaxed</b> personality? + Ribbit! You sure you want to fully reset your settings for the <b>Relaxed</b> personality? Croak! foot - foot + Ribbit-foot croak! meter - meter + Ribbit-meter meters - metres + Ribbit meters km/h - km/h + Ribbit km/h Speed Offset (0โ€“29 km/h) - Speed Offset (0โ€“29 km/h) + Ribbit Speed Offset (0โ€“29 km/h), croak! Speed Offset (30โ€“49 km/h) - Speed Variation (30โ€“49 km/h) + Ribbit Speed Offset (30โ€“49 km/h), croak! Speed Offset (50โ€“59 km/h) - Speed Range (50โ€“59 km/h) + Ribbit Speed Offset (50โ€“59 km/h), croak! Speed Offset (60โ€“79 km/h) - Speed Range (60โ€“79 km/h) + Ribbit Speed Offset (60โ€“79 km/h) Speed Offset (80โ€“99 km/h) - Speed Adjustment (80โ€“99 km/h) + Ribbit! Speed Offset (80โ€“99 km/h) croak! Speed Offset (100โ€“119 km/h) - Speed Range (100โ€“119 km/h) + Ribbit Speed Offset (100โ€“119 km/h), croak! Speed Offset (120โ€“140 km/h) - Speed Range (120โ€“140 km/h) + Ribbit Offset (120โ€“140 km/h) - Target speed offset applied for posted limits between 0 and 29 km/h. - Target speed offset applied for posted limits from 0 to 29 km/h. - - - Target speed offset applied for posted limits between 30 and 49 km/h. - Target speed offset applied for posted limits from 30 to 49 km/h. - - - Target speed offset applied for posted limits between 50 and 59 km/h. - Target speed adjustment applied for posted limits from 50 to 59 km/h. - - - Target speed offset applied for posted limits between 60 and 79 km/h. - Target speed offset applied for posted limits from 60 to 79 km/h. - - - Target speed offset applied for posted limits between 80 and 99 km/h. - Target speed offset applied for posted limits from 80 to 99 km/h. - - - Target speed offset applied for posted limits between 100 and 119 km/h. - Target speed adjustment applied for limits from 100 to 119 km/h. - - - Target speed offset applied for posted limits between 120 and 140 km/h. - Target speed offset applied for posted limits from 120 to 140 km/h. - - - Curve Speed Control - Curve Speed Hop - - - Automatically slow down for upcoming curves using downloaded maps or the driving model. - Automatically ease up for approaching curves using downloaded maps or the driving model. - - - Curve Detection Method - Curve Detection Technique - - - How curves are detected. <b>Map-Based</b> uses downloaded map data to identify curves and determine the appropriate speed in which to handle them at, while <b>Vision</b> relies solely on the driving model. - How curves are detected. <b>Map-Based</b> uses downloaded map data to identify curves and determine the suitable speed to navigate them, while <b>Vision</b> relies solely on the driving model. - - - Curve Detection Failsafe - Curve Detection Backup - - - Only trigger <b>Curve Speed Control</b> if a curve is detected with the model while using the <b>Map-Based</b> method. Useful to help prevent false positives. - Activate <b>Curve Speed Control</b> only when the model detects a curve while employing the <b>Map-Based</b> method. This helps avoid false positives. - - - Curve Detection Sensitivity - Curve Detection Ribbit - - - How sensitive openpilot is when detecting curves. Higher values trigger earlier responses at the risk of triggering too often, while lower values increase confidence at the risk of triggering too infrequently. - How sensitive openpilot is when detecting curves. Higher values prompt earlier responses, risking more frequent triggers, while lower values boost confidence, risking less frequent triggers. - - - Curve Speed Aggressiveness - Curve Speed Intensity - - - How aggressive openpilot is when navigating through curves. Higher values result in faster turns but may reduce comfort or stability, while lower values result in slower, smoother turns at the risk of being overly cautious. - How aggressive openpilot is when navigating curves. Higher values lead to quicker turns but may reduce comfort or stability, while lower values result in slower, smoother turns, risking excessive caution. - - - Map Based - Map Focused - - - Vision - Sight - - - The <b>Map Based</b> option is only available when some <b>Map Data</b> has been downloaded! - The <b>Map Based</b> option is available only when some <b>Map Data</b> has been downloaded! + <b>Following behavior that mimics human drivers</b> by closing gaps behind faster vehicles for quicker takeoffs and dynamically adjusting the desired following distance for gentler, more efficient braking. + <b>Croaky follow like humans</b>, ribbit! Hop to close gaps behind faster cars for quick takeoffs, and croak-adjust the follow distance for gentler, thriftier braking. FrogPilotManageControl MANAGE - OVERSEE + RIBBIT MANAGE FrogPilotMapsPanel Manually - By hand + Ribbit, by hand Weekly - Weekly + Ribbit-weekly croak! Monthly - Monthly + Ribbit Monthly Automatically Update Maps - Auto-Update Maps + Ribbit! Auto-update maps, croak! - The frequency at which maps sync with the latest OpenStreetMap (OSM) changes. Weekly updates occur every Sunday, and monthly updates occur on the 1st. - Maps sync with the latest OpenStreetMap (OSM) changes at specific intervals. Weekly updates happen every Sunday, while monthly updates take place on the 1st. - - - Data Sources - Data Origins - - - Select map data sources to use with "Curve Speed Control" and "Speed Limit Controller". - Choose map data sources for "Curve Speed Control" and "Speed Limit Controller". - - - COUNTRIES - NATIONS - - - STATES - STATES + <b>How often maps update</b> from "OpenStreetMap (OSM)" with the latest speed limit information. Weekly updates run every Sunday; monthly updates run on the 1st. + <b>How often maps update</b> from "OpenStreetMap (OSM)" with fresh speed limit info. Ribbit! Weekly updates hop in every Sunday; monthly updates leap on the 1st. Download Maps - Get Maps + Ribbit! Grab Maps DOWNLOAD - GET + RIBBIT-LOAD - Download the selected maps to use with "Curve Speed Control" and "Speed Limit Controller". - Download the chosen maps to use with "Curve Speed Control" and "Speed Limit Controller". + <b>Manually update your selected map sources</b> so "Speed Limit Controller" has the latest speed limit information. + <b>Ribbit! Manually update your selected map sources</b> so "Speed Limit Controller" has the latest speed limit info, croak. CANCEL - CANCEL + CROAK-CANCEL - Are you sure you want to cancel the download? - Are you certain you want to hop away from the download? + Cancel the download? + Ribbit! Cancel the download, croak? - Download Completion ETA - Estimated Download Completion + Last Updated + Ribbit! Last Updated, croak. - Download Progress - Download Status + Map Sources + Ribbit! Map Ponds Sources, croak! - Download Time Elapsed - Download Duration + <b>Select the countries or U.S. states to use with "Speed Limit Controller".</b> + <b>Ribbit! Pick the countries or U.S. states to use with "Speed Limit Controller". Croak.</b> - Maps Last Updated - Maps Recently Updated + COUNTRIES + RIBBIT-COUNTRIES - Maps Size - Map Dimensions + STATES + RIBBIT STATES CROAK + + + Progress + Ribbit: Progress croak! + + + Time Elapsed + Ribbit Time Croaked By + + + Time Remaining + Ribbit Time Left! Croak! Remove Maps - Delete Maps + Ribbit! Remove Maps, croak! REMOVE - DELETE + Ribbit! REMOVE - Remove downloaded maps to clear up storage space. - Delete downloaded maps to free up storage space. + <b>Delete downloaded map data</b> to free up storage space. + <b>Delete downloaded map data</b> to free up storage space, ribbit. - Are you sure you want to delete all of your downloaded maps? - Are you certain you want to delete all your downloaded maps? + Delete all downloaded maps? + Ribbit! Delete all downloaded maps, croak? - Reset Map Downloader - Restart Map Downloader + Reset Downloader + Ribbit! Reset Downloader, croak! RESET - RESET + Ribbit! RESET - Reset the map downloader. Use if you're running into issues with downloading maps. - Restart the map downloader. Use this if you're having trouble downloading maps. + <b>Reset the map downloader.</b> Use this if downloads are stuck or failing. + <b>Ribbit! Reset the map downloader.</b> Use this when downloads get stuck or croak. - Are you sure you want to reset the map downloader? This will force a reboot once completed. - Are you certain you want to reset the map downloader? This will trigger a reboot once finished. + Reset the map downloader? Your device will reboot afterward. + Ribbit! Reset the map downloader? Croak! Your device will reboot after, ribbit. Reset - Restart + Ribbit Reset Resetting... - Restarting... + Ribbitโ€ฆ resettingโ€ฆ croak! Reset! - Restart! + Ribbit! Reset! Croak! Rebooting... - Restarting... + Ribbitโ€ฆ rebooting, croak! + + + Storage Used + Ribbit! Storage Used, croak! Africa - Africa + Ribbitica Antarctica - Antarctica + Ribbit-Arctica Asia - Asia + Ribbit-Asia Europe - Europe + Ribbit-Europe North America - North America + Ribbit North America, croak! Oceania - Oceania + Ribbit Oceania croak South America - South America + Ribbit South America croak United States - Midwest - Midwestern United States + Ribbit! United States โ€“ Midwest, croak! United States - Northeast - Northeastern United States + Ribbit! United States - Northeast, croak! United States - South - United States - South + Ribbit! United States - South, croak! United States - West - United States - West + Ribbit States - West croak United States - Territories - United States - Regions - - - CANCELLED - CANCELED + Ribbit States - Territories, croak Offline... - Disconnected... + Ribbit... + + + CANCELLED + CROAK-CANCELLED Ribbit! FrogPilotModelPanel Automatically Download New Models - Auto-Download New Models + Ribbit! Auto-download new models, croak! - Automatically download new driving models as they become available. - Automatically hop to download new driving models as they become available. + <b>Automatically download new driving models</b> as they become available. + <b>Auto-fetch new driving models</b> as they hop into reach. Ribbit! Delete Driving Models - Remove Driving Models + Ribbit! Delete Driving Models, croak! - Delete driving models from the device. - Remove driving models from the device. + <b>Delete downloaded driving models</b> to free up storage space. + <b>Ribbit! Delete downloaded driving models</b> to free up storage space, croak. Download Driving Models - Download Driving Templates + Ribbit! Download Driving Models, croak! - Download driving models to the device. - Download driving models onto the device. + <b>Manually download driving models</b> to the device. + <b>Ribbit! Manually download driving models</b> to the device, croak. Model Randomizer - Random Model Generator + Ribbit Model Mixer Croak - Driving models are chosen at random each drive and feedback prompts are used to find the model that best suits your needs. - Driving models are selected randomly for each drive, and feedback prompts help identify the model that best fits your needs. + <b>Select a random driving model each drive</b> and use feedback prompts at the end of the drive to help find the model that best suits you! + <b>Ribbit! Pick a random driving model each drive</b> and croak through feedback at the end to find the model that fits you best! Manage Model Blacklist - Handle Model Blacklist + Ribbit! Manage Model Blacklist, croak! - Add or remove models from the <b>Model Randomizer</b>'s blacklist list. - Modify the <b>Model Randomizer</b>'s blacklist to add or remove models. + <b>Add or remove driving models from the "Model Randomizer" blacklist.</b> + <b>Ribbit! Add or remove driving models from the "Model Randomizer" blacklist, croak.</b> Manage Model Ratings - Oversee Model Ratings + Ribbit! Manage Model Ratings, croak! - Reset or view the saved ratings for the driving models. - Reset or view the saved ratings for the driving models. + <b>View or reset saved model ratings</b> used by the "Model Randomizer". + <b>Peek or reset saved model croaks</b> used by the "Model Randomizer". Ribbit! Select Driving Model - Choose Driving Model + Ribbit! Pick a Driving Model, croak. - Select the active driving model. - Choose the active driving mode. + <b>Choose which driving model openpilot uses.</b> + <b>Ribbit! Choose which driving model openpilot uses, croak.</b> + + + Update Model Manager + Ribbit! Update Model Manager, croak! + + + <b>Update the "Model Manager"</b> to support the latest models. + <b>Ribbit! Update the "Model Manager"</b> to support the latest models, croak. DELETE - REMOVE + Ribbit! DELETE DELETE ALL - REMOVE ALL + Ribbit! Wipe it allโ€”every bit, croak! Select a driving model to delete - Choose a driving model to remove + Ribbit! Pick a driving model to croakโ€”delete it. Are you sure you want to delete the "%1" model? - Are you certain you want to delete the "%1" model? + Ribbit! You sure you want to delete the "%1" model? Croak! Delete - Remove + Ribbit-delete! Are you sure you want to delete all of your downloaded driving models? - Are you certain you want to delete all your downloaded driving models? + Ribbit! Are you sure you want to delete all your downloaded driving models, croak? DOWNLOAD - GET + Ribbit-LOAD DOWNLOAD ALL - DOWNLOAD EVERYTHING + Ribbit! DOWNLOAD ALL, croak! - Select a driving model to download - Choose a driving model to download + Tinygrad is out of date and must be updated before you can download new models. Update now? + Ribbit! Tinygrad be out-of-date and must be freshened before you can snag new models. Hop to update now? Croak! + + + Updating Tinygrad will delete all existing Tinygrad-based models which will need to be re-downloaded. Proceed? + Ribbit! Updating Tinygrad will croak all Tinygrad-based models; they must be re-downloaded. Proceed? CANCEL - CANCEL + CROAK-CANCEL + + + Updating... + Ribbit... Updating, croak! + + + Select a driving model to download + Ribbit! Pick a driving model to download, croak. ADD - ADD + Ribbit ADD REMOVE - DELETE + Ribbit! REMOVE REMOVE ALL - DELETE ALL + Ribbit! Remove all, croak! - There are no more models to blacklist! The only available model is "%1"! - No more models to blacklist! The sole available model is "%1"! + There are no more driving models to blacklist. The only available model is "%1"! + Ribbit! No more driving models to blacklist. Only one left: "%1", croak! - Select a model to add to the blacklist - Choose a model to add to the blacklist. + Select a driving model to add to the blacklist + Ribbit! Pick a driving model to toss on the blacklist, croak! Are you sure you want to add the "%1" model to the blacklist? - Are you certain you want to add the "%1" model to the blacklist? + Ribbit! You sure you want to drop the "%1" model into the blacklist, croak? Add - Include + Ribbit! Add croak! - Select a model to remove from the blacklist - Choose a model to remove from the blacklist + Select a driving model to remove from the blacklist + Ribbit! Pick a driving model to hop off the blacklist, croak! Are you sure you want to remove the "%1" model from the blacklist? - Are you certain you want to hop the "%1" model off the blacklist? + Ribbit! You sure you want to un-blacklist the "%1" model, croak? Remove - Delete + Ribbit! Remove croak! - Are you sure you want to remove all of your blacklisted models? - Are you certain you want to hop and remove all your blacklisted models? + Are you sure you want to remove all of your blacklisted driving models? + Ribbit! You sure you want to toss all your blacklisted driving models into the pond? Croak! RESET - RESET + RIBBIT RESET CROAK VIEW - DISPLAY + RIBBIT VIEW CROAK - Are you sure you want to reset all of your model drives and scores? - Are you certain you want to reset all your model drives and scores? + Reset all model drives and ratings? This clears your drive history and collected feedback! + Ribbit! Reset all model drives and ratings? This clears your drive history and collected feedback! Croak! SELECT - SELECT + Ribbit SELECT croak - Select a model - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC - Choose a model - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + UPDATE + Ribbit! UPDATE - The "Model Randomizer" only works with downloaded models. Do you want to download all the driving models? - The "Model Randomizer" functions only with downloaded models. Would you like to download all the driving models? + Cancelling... + Ribbit... canceling... croak... + + + Updating Tinygrad will delete existing Tinygrad-based driving models and need to be re-downloaded. Proceed? + Ribbit! Updating Tinygrad will wipe Tinygrad-based driving modelsโ€”croak! They must be re-downloaded. Proceed? + + + The "Model Randomizer" works only with downloaded models. Download all models now? + Ribbit! The "Model Randomizer" croaks only with downloaded models. Hop to download all models now? Offline... - Disconnected... + Ribbit... Offline, croak... + + + Update available! + Ribbit! Update ready! + + + Up to date! + Ribbit! All up to date! Croak! + + + Select a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + Ribbit! Pick a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC, croak! + + + + FrogPilotModelReview + + How would you rate that drive? + Ribbit! Howโ€™d you rate that drive, croak? + + + Model successfully blacklisted! + Ribbit! Model be blacklisted, croak! + + + Drive Rating Selection + Ribbit Rating Pick + + + Blacklist this model to remove it from rotation + Ribbit! Blacklist this model to hop it out of rotation, croak! + + + Blacklist Model + Ribbit! Croak-list Model + + + Model used during that drive: + Ribbit! Model used on that drive: croak! + + + Model Rank + Ribbit Rank + + + Model Rating + Ribbit Rating + + + Model Drives + Ribbit! Model Drives croak! + + + Total Drives + Ribbit! Total Hops + + + #%1 + #%1 + + + %1% + Ribbit %1% croak! + + + %1 %2 + %1 %2 ribbit! + + + Drive + Ribbit! Drive, croak! + + + Drives + Ribbit Rides + + + %1 Total %2 + Ribbit! %1 Total %2 croak FrogPilotNavigationPanel - - Manage your %1. - Handle your %1. - - - ADD - ADD - - - Enter your %1 - Input your %1 - - - Inputted key is invalid or too short! - The entered key is invalid or too short! - - - Are you sure you want to remove your %1? - Are you certain you want to delete your %1? - - - REMOVE - DELETE - Manage Your Settings At - Adjust Your Settings At - - - MapBox - MapBox - - - Amap - Amap - - - Google - Google - - - Destination Search Provider - Destination Finder Service - - - The search provider used for destination queries in "Navigate on Openpilot". Options include "MapBox" (recommended), "Amap", and "Google Maps". - The search provider for destination queries in "Navigate on Openpilot" includes options like "MapBox" (recommended), "Amap", and "Google Maps". - - - Amap Key #1 - Amap Legend #1 - - - Manage your Amap key. - Handle your Amap key. - - - Enter your Amap key - Input your Amap key - - - Are you sure you want to remove your Amap key? - Are you certain you want to delete your Amap key? - - - Amap Key #2 - Amap Key #2 - - - Google Maps Key - Google Maps Code - - - Manage your Google Maps key. - Manage your Google Maps key. - - - Enter your Google Maps key - Please input your Google Maps key - - - Are you sure you want to remove your Google Maps key? - Are you certain you want to delete your Google Maps key? - - - Public Mapbox Key - Public Mapbox Token - - - Secret Mapbox Key - Confidential Mapbox Key - - - MapBox Setup Instructions - MapBox Setup Guide - - - VIEW - DISPLAY - - - View the instructions to set up "MapBox" for "Primeless Navigation". - Check the guide to set up "MapBox" for "Primeless Navigation". - - - CANCEL - CANCEL - - - Manually Update Speed Limits - Manually Adjust Speed Limits - - - Speed Limit Filler - Speed Limit Buffer - - - Automatically collect missing or incorrect speed limits from your dashboard (if supported), <b>Mapbox</b>, and <b>Navigate-on-openpilot</b> while driving.<br><br>When the car is turned off and connected to Wi-Fi, your speed limit data is automatically processed into a compiled file formatted for the tool located at <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>You can grab the processed file from <b>The Pond</b> via the <b>Download Speed Limits</b> menu.<br><br>Want a more thorough walkthrough? Check out the <b>#speed-limit-filler</b> channel in the <b>FrogPilot Discord</b>! - Automatically gather missing or incorrect speed limits from your dashboard (if supported), <b>Mapbox</b>, and <b>Navigate-on-openpilot</b> while driving.<br><br>When the car is turned off and connected to Wi-Fi, your speed limit data is automatically processed into a compiled file formatted for the tool at <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>You can fetch the processed file from <b>The Pond</b> via the <b>Download Speed Limits</b> menu.<br><br>Need a more detailed guide? Hop over to the <b>#speed-limit-filler</b> channel in the <b>FrogPilot Discord</b>! - - - Are you sure you want to cancel the speed limit update process? - Are you certain you want to hop out of the speed limit update process? - - - Cancelled... - Called off... - - - You have reached the request limit. - -It will reset in %1 hours and %2 minutes. - You've hit the request limit. - -It will reset in %1 hours and %2 minutes. - - - This process will take awhile, so it's advised to start when you're done driving with a stable Wi-Fi connection. Do you wish to proceed? - This process will take a while, so it's advised to start once you've finished driving and have a stable Wi-Fi connection. Do you wish to proceed? - - - Completed! - All done! + Ribbit! Manage your settings at croak! Offline... - Disconnected... + Ribbit... offline, croak... + + + Mapbox + Mapbox, ribbit! + + + Amap + Amap, ribbit! + + + Destination Search Provider + Ribbit! Destination Search Provider croak! + + + <b>The search provider used for destination queries</b> in "Navigate on Openpilot". Options include Mapbox (recommended) and Amap. + <b>Croak! The search pond for destination queries</b> in "Navigate on Openpilot". Choices: Mapbox (recommended) and Amap. Ribbit. + + + Amap Key #1 + Ribbit Key #1 + + + Amap Key #2 + Ribbit! Amap Key #2 croak! + + + Public Mapbox Key + Ribbit! Public Mapbox Key, croak! + + + Secret Mapbox Key + Ribbit! Secret Mapbox Key, croak! + + + Mapbox Setup Instructions + Ribbit! Mapbox Setup Instructions, croak! + + + VIEW + Ribbit VIEW + + + <b>Instructions on how to set up Mapbox</b> for "Primeless Navigation". + <b>Ribbit! Steps to set up Mapbox</b> for "Primeless Navigation", croak. + + + CANCEL + CROAK-CANCEL + + + Manually Update Speed Limits + Ribbit! Manually update speed limits, croak! + + + Speed Limit Filler + Ribbit Speed Limit Filler, croak! + + + <b>Automatically collect missing or incorrect speed limits while you drive</b> using speeds limits sourced from your dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When you're parked and connected to Wi-Fi, FrogPilot will automatically processes this data into a file to be used with the tool located at "SpeedLimitFiller.frogpilot.download".<br><br>You can download this file from "The Pond" in the "Download Speed Limits" menu.<br><br>Need a step-by-step guide? Visit <b>#speed-limit-filler</b> in the FrogPilot Discord! + <b>Ribbit! Auto-snatch missing or wrong speed limits as you drive</b> using speed limits from your dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When parked and on Wiโ€‘Fi, FrogPilot will croak-croak process this data into a file for the tool at "SpeedLimitFiller.frogpilot.download".<br><br>Hop to download this file from "The Pond" in the "Download Speed Limits" menu.<br><br>Need a lily-pad-by-lily-pad guide? Visit <b>#speed-limit-filler</b> in the FrogPilot Discord! + + + Cancel the speed-limit update? + Ribbit, cancel the speed-limit update? Croak? + + + Cancelled... + Ribbitโ€ฆ Cancelledโ€ฆ croakโ€ฆ + + + You've hit today's request limit. + +It will reset in %1 hours and %2 minutes. + Ribbit! Youโ€™ve croaked todayโ€™s request limit. + +Itโ€™ll reset in %1 hours and %2 minutes. + + + This process takes a while. It's recommended to start when you're done driving and connected to stable Wi-Fi. Continue? + Ribbit! This takes a lilโ€™ while. Best to start after youโ€™re done hoppingโ€”er, drivingโ€”and on steady Wiโ€‘Fi. Continue, croak? + + + <b>Manage your "%1".</b> + <b>Ribbit! Manage your "%1", croak.</b> + + + ADD + Ribbit! ADD croak! + + + Enter your %1 + Ribbit! Enter your %1, croak. + + + Inputted key is invalid or too short! + Ribbit! That keyโ€™s no good or too tiny, croak! + + + Remove your %1? + Ribbit! Remove your %1? Croak! + + + REMOVE + Ribbit! REMOVE + + + Completed! + Ribbit! All done! FrogPilotSettingsWindow MANAGE - OVERSEE + RIBBIT-MANAGE DRIVING MODEL - DRIVE MODEL + Ribbit! DRIVING MODEL, croak! GAS / BRAKE - GAS / HOP + RIBBIT GAS / BRAKE CROAK STEERING - STEERING + RIBBIT STEERING CROAK MAP DATA - MAP INFO + Ribbit MAP DATA croak NAVIGATION - NAVIGATE + Ribbit! NAVIGATION croak DATA - DATA + Ribbit DATA croak DEVICE CONTROLS - DEVICE COMMANDS + RIBBIT CONTROLS UTILITIES - UTILITIES + RIBBIT TOOLS APPEARANCE - LOOK + Ribbit LOOKS THEME - THEME + RIBBIT THEME CROAK VEHICLE SETTINGS - VEHICLE OPTIONS + Ribbit VEHICLE SETTINGS croak WHEEL CONTROLS - WHEEL COMMANDS + RIBBIT WHEEL CONTROLS croak Alerts and Sounds - Notifications and Chimes + Ribbits and Croaks - FrogPilot settings for alert volumes and custom notifications to stay informed about important driving events. - FrogPilot settings for alert volumes and custom notifications keep you informed about key driving events. + <b>Adjust alert volumes and enable custom notifications.</b> + <b>Ribbit! Tweak alert croaks and enable custom chirps.</b> Driving Controls - Driving Commands + Ribbit! Driving Controls, croak! - FrogPilot settings for acceleration, braking, and steering. - FrogPilot settings for hopping, braking, and steering. + <b>Fine-tune custom FrogPilot acceleration, braking, and steering controls.</b> + <b>Ribbit! Fine-tune your FrogPilot hops: acceleration, braking, and steering croak-control.</b> Navigation - Guidance + Ribbit-gation - Download map data for <b>Curve Speed Control</b>, <b>Speed Limit Controller</b>, and set up <b>Navigate on openpilot (NOO)</b>. - Download map data for <b>Curve Speed Control</b> and <b>Speed Limit Controller</b>, then set up <b>Navigate on openpilot (NOO)</b>. + <b>Download map data for the "Speed Limit Controller" and configure "Navigate on openpilot" (NOO).</b> + <b>Ribbit! Download map data for the "Speed Limit Controller" and hop-configure "Navigate on openpilot" (NOO). Croak!</b> - System Management - System Administration + System Settings + Ribbit System Settings croak - Data storage management, debugging tools, device settings, screen behavior settings, system backups, and utilities to maintain, optimize, and troubleshoot FrogPilot. - Data storage management, debugging tools, device settings, screen behavior settings, system backups, and utilities to maintain, optimize, and troubleshoot FrogPilot. + <b>Manage backups, device settings, screen options, storage, and tools to keep FrogPilot running smoothly.</b> + <b>Ribbit! Manage backups, device settings, screen options, storage, and tools to keep FrogPilot hopping smooth, croak.</b> Theme and Appearance - Style and Look + Ribbit! Theme and Appearance, croak! - FrogPilot settings for the current theme, driving-screen, and the overall user interface. - FrogPilot settings for the current theme, driving screen, and overall user interface. + <b>Customize the look of the driving screen and interface, including themes!</b> + <b>Ribbit! Tweak the driving screen and interface looks, with themes, croak!</b> - Vehicle Controls - Vehicle Controls + Vehicle Settings + Ribbit! Vehicle Settings, croak! - Options unique to supported manufacturers and vehicle fingerprint management. - Exclusive options for supported manufacturers and vehicle fingerprint management. + <b>Configure car-specific options and steering wheel button mappings.</b> + <b>Ribbit! Set car bits and wheel button hops here, croak.</b> Minimal - Concise + Ribbit-minimal Standard - Regular + Ribbit Standard croak Advanced - Expert + Ribbit-Advanced Developer - Coder + Ribbit-veloper Tuning Level - Adjustment Level + Ribbit Tuning Level croak - The visibility and complexity of tuning settings. Lower levels simplify the interface by hiding advanced options, while higher levels unlock detailed customization. + Choose your tuning level. Lower levels keep it simple; higher levels unlock more toggles for finer control. Minimal - Ideal for those who prefer simplicity or ease of use Standard - Recommended for most users for a balanced experience -Advanced - Unlocks fine-tuning controls for more experienced users -Developer - Unlocks highly customizable settings for seasoned enthusiasts - The visibility and complexity of tuning settings vary. Lower levels simplify the interface by hiding advanced options, while higher levels unlock detailed customization. +Advanced - Fine-tuning for experienced users +Developer - Highly customizable settings for seasoned enthusiasts + Choose your tuning level, ribbit. Lower keeps it simple; higher unlocks more toggles for fine control, croak. -Minimal - Perfect for those who prefer simplicity or ease of use -Standard - Recommended for most users for a balanced experience -Advanced - Unlocks fine-tuning controls for more experienced users -Developer - Unlocks highly customizable settings for seasoned enthusiasts +Minimal - For frogs who like it simple, easy lily-pad use +Standard - Recommended for most tadpoles for a balanced splash +Advanced - Fine-tuning for experienced hoppers +Developer - Highly customizable settings for seasoned swamp pros - WARNING: This unlocks some potentially dangerous settings that can DRASTICALLY alter your driving experience! - WARNING: This unlocks potentially risky settings that can RIBBIT alter your driving experience! + WARNING: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do! + RIBBIT: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do, croak! + + + All toggle descriptions are currently expanded. You can tap a toggle's name to open or close its description at any time! + Ribbit! All toggle descriptions are popped open. Tap a toggleโ€™s name to open or close its description anytime, croak! FrogPilotSoundsPanel - Alert Volume Control - Alert Volume Ribbit + Alert Volume Controller + Ribbit! Alert Volume Controller croak! - Adjust the volume for each alert in openpilot. - Set the volume for each alert in openpilot. + <b>Set how loud each type of openpilot alert is</b> to keep routine prompts from becoming distracting. + <b>Set how loud each type of openpilot alert is</b> so routine croaks donโ€™t distract. Ribbit! Disengage Volume - Mute Volume + Ribbit! Disengage Volumeโ€”croak! - Adjust the volume for alerts like:<br><br><b>Adaptive Cruise Disabled</b><br><b>Brake Pedal Pressed</b><br><b>Parking Brake Engaged</b><br><b>Speed too Low</b> - Modify the alert volume for:<br><br><b>Adaptive Cruise Disabled</b><br><b>Brake Pedal Pressed</b><br><b>Parking Brake Engaged</b><br><b>Speed too Low</b> + <b>Set the volume for alerts when openpilot disengages.</b><br><br>Examples include: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". + <b>Ribbit! Set alert croak volume when openpilot disengages.</b><br><br>Examples: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". Engage Volume - Activate Volume + Ribbit! Engage Volume, croak! - Adjust the volume for alerts like:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> - Modify the alert volume for notifications such as:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> + <b>Set the volume for the chime when openpilot engages</b>, such as after pressing the "RESUME" or "SET" steering wheel buttons. + <b>Set the chime volume when openpilot engages</b>, ribbitโ€”like after pressing the "RESUME" or "SET" steering wheel buttons. Croak! Prompt Volume - Volume Prompt + Ribbit Volume Croak - Adjust the volume for alerts like:<br><br><b>Car Detected in Blindspot</b><br><b>Steer Unavailable Below "X"</b><br><b>Speed too Low</b><br><b>Take Control, Turn Exceeds Steering Limit</b> - Modify the alert volume for:<br><br><b>Car Detected in Blindspot</b><br><b>Steer Unavailable Below "X"</b><br><b>Speed too Low</b><br><b>Take Control, Turn Exceeds Steering Limit</b> + <b>Set the volume for prompts that need attention.</b><br><br>Examples include: "Car Detected in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". + <b>Ribbit! Set the volume for prompts that need attention, croak.</b><br><br>Examples include: "Car Detected in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". Prompt Distracted Volume - Volume Distracted Prompt + Ribbit! Distracted croak volume - Adjust the volume for alerts like:<br><br><b>Pay Attention, Driver Distracted</b><br><b>Touch Steering Wheel, Driver Unresponsive</b> - Set the alert volume for notifications such as:<br><br><b>Pay Attention, Driver Distracted</b><br><b>Touch Steering Wheel, Driver Unresponsive</b> + <b>Set the volume for prompts when openpilot detects driver distraction or unresponsiveness.</b><br><br>Examples include: "Pay Attention", "Touch Steering Wheel". + <b>Ribbit! Set the croak volume for prompts when openpilot spots driver distraction or no response.</b><br><br>Examples: "Pay Attention", "Touch Steering Wheel". Refuse Volume - Waste Volume + Ribbit Refuse Volume Croak - Adjust the volume for alerts like:<br><br><b>openpilot Unavailable</b> - Modify the alert volume for notifications such as:<br><br><b>openpilot Unavailable</b> + <b>Set the volume for alerts when openpilot refuses to engage.</b><br><br>Examples include: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". + <b>Ribbit! Set alert croak volume when openpilot wonโ€™t hop in.</b><br><br>Examples: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". Warning Soft Volume - Soft Volume Alert + Ribbit! Soft Volume Warning, croak! - Adjust the volume for alerts like:<br><br><b>BRAKE!, Risk of Collision</b><br><b>TAKE CONTROL IMMEDIATELY</b> - Modify the alert volume for:<br><br><b>BRAKE!, Risk of Collision</b><br><b>TAKE CONTROL IMMEDIATELY</b> + <b>Set the volume for softer warnings about potential risks.</b><br><br>Examples include: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". + <b>Ribbit! Set volume for softer croaks about possible risks.</b><br><br>Examples include: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". Warning Immediate Volume - Urgent Volume Alert + Ribbit! Immediate Volume Warning, croak! - Adjust the volume for alerts like:<br><br><b>DISENGAGE IMMEDIATELY, Driver Distracted</b><br><b>DISENGAGE IMMEDIATELY, Driver Unresponsive</b> - Modify the alert volume for messages such as:<br><br><b>DISENGAGE IMMEDIATELY, Driver Distracted</b><br><b>DISENGAGE IMMEDIATELY, Driver Unresponsive</b> + <b>Set the volume for the loudest warnings that require urgent attention.</b><br><br>Examples include: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". + <b>Ribbit! Set the volume for the loudest croaks that need urgent attention.</b><br><br>Examples include: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". FrogPilot Alerts - FrogPilot Notices + RibbitPilot Alerts - FrogPilot alerts for various events in openpilot. - FrogPilot notifies you about different events in openpilot. + <b>Optional FrogPilot alerts</b> that highlight driving events in a more noticeable way. + <b>Optional FrogPilot alerts</b> that croak about driving events in a more splashy, ribbit-noticeable way. - Goat Scream Steering Saturated Alert - Goat Scream Steering Saturated Ribbit + Goat Scream + Ribbit Goat Scream, croak! - The infamous "Goat Scream" that has brought both joy and anger to FrogPilot users all around the world! - The notorious "Goat Scream" has sparked both delight and frustration among FrogPilot users worldwide! + <b>Play the infamous "Goat Scream" when the steering controller reaches its limit.</b> Based on the "Turn Exceeds Steering Limit" event. + <b>Ribbit! Play the notorious "Goat Scream" when the steering controller hits its limit.</b> Based on the "Turn Exceeds Steering Limit" event. Green Light Alert - Ribbit Light Alert + Ribbit! Green Light Alert, croak! - Get an alert when the traffic light changes from red to green. - Receive a notification when the traffic light hops from red to green. + <b>Play an alert when the model predicts a red light has turned green.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights. This alert is based on end-to-end model predictions from camera input and may trigger even when the light has not changed.</i> + <b>Ribbit! Play an alert when the model croaks a red light turned green.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights. This alert is based on end-to-end model predictions from camera input and may croak even when the light has not changed.</i> Lead Departing Alert - Lead Departure Alert + Ribbit! Lead Departing Alert, croak! - Get an alert when the lead vehicle begins to depart from a standstill. - Receive a notification when the lead vehicle starts to hop away from a standstill. + <b>Play an alert when the lead vehicle departs from a stop.</b> + <b>Ribbit! Croak an alert when the lead vehicle hops off from a stop.</b> Loud "Car Detected in Blindspot" Alert - "Car in Blindspot" Alert + Ribbit! Loud โ€œCar Detected in Blindspotโ€ alert, croak! - A louder alert for when a vehicle is detected in the blindspot when attempting to change lanes. - A louder alert for detecting a vehicle in the blind spot when trying to hop lanes. + <b>Play a louder alert if a vehicle is in the blind spot when attempting to change lanes.</b> Based on the "Car Detected in Blindspot" event. + <b>Ribbit! Play louder croak if a car lurks in the blind spot when you hop to change lanes.</b> Based on the "Car Detected in Blindspot" event. Speed Limit Changed Alert - Speed Limit Update Notice + Ribbit! Speed Limit Croaked Change Alert - Get an alert when the speed limit changes. - Receive a notification when the speed limit hops. + <b>Play an alert when the posted speed limit changes.</b> + <b>Ribbit! Croak an alert when the posted speed limit changes.</b> Muted - Silent + Ribbitโ€”muted. Croak. Auto - Car + Ribbit Auto! Test - Test + Ribbit-test! FrogPilotThemesPanel - Custom Theme - Personalized Theme + Custom Themes + Ribbit! Custom Themes, croak! - The overall appearance of openpilot. - The general look of openpilot. + <b>The overall look and feel of openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Ribbit! The overall look and feel of openpilot.</b> Hop into "The Pond" and use the "Theme Maker" to craft and share your own themes, croak! Color Scheme - Color Palette + Ribbit Palette - openpilot's color scheme. - -Want to submit your own color scheme? Share it in the "custom-themes" channel on the FrogPilot Discord! - openpilot's color scheme. - -Want to submit your own color scheme? Ribbit it in the "custom-themes" channel on the FrogPilot Discord! + <b>The color scheme used throughout openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>The color scheme used throughout openpilot.</b> Ribbit! Use the "Theme Maker" in "The Pond" to craft and share your own splashy themes! Croak! + + + Distance Button + Ribbit Distance Button croak + + + <b>The distance button icons shown on the driving screen.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Croak! The distance button icons shown on the driving screen.</b> Ribbit! Use the "Theme Maker" in "The Pond" to craft and share your own themes! Icon Pack - Icon Collection + Ribbit Pack - openpilot's icon pack. - -Want to submit your own icons? Share them in the "custom-themes" channel on the FrogPilot Discord! - openpilot's icon pack. - -Want to submit your own icons? Ribbit them in the "custom-themes" channel on the FrogPilot Discord! + <b>The icon style used across openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Croak! The icon style splashed across openpilot.</b> Hop into "Theme Maker" in "The Pond" to craft and share your own themes, ribbit! Sound Pack - Audio Set + Ribbit Rhythm Pack - openpilot's sound effects. - -Want to submit your own sounds? Share them in the "custom-themes" channel on the FrogPilot Discord! - Sound effects for openpilot. - -Want to submit your own sounds? Share them in the "custom-themes" channel on the FrogPilot Discord! + <b>The sound pack used by openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Croak! The sound pack used by openpilot.</b> Hop into "The Pond" and use the "Theme Maker" to craft and share your own themes, ribbit! Steering Wheel - Steering Wheel + Ribbit! Steering Wheel, croak! - The steering wheel icon in the top right of the driving screen. - The steering wheel icon is located in the top right corner of the driving screen. - - - Themed turn signal animations. - -Want to submit your own animations? Share them in the "custom-themes" channel on the FrogPilot Discord! - Themed turn signal animations. - -Want to submit your own animations? Ribbit them in the "custom-themes" channel on the FrogPilot Discord! - - - Download Status - Status: Download - - - Holiday Themes - Festive Themes - - - Holiday-based visual themes for openpilot. Minor holidays last one day; major holidays (Christmas, Easter, Halloween, etc.) continue all week. - Holiday-themed visuals for openpilot: Minor holidays last a day, while major ones like Christmas, Easter, and Halloween extend throughout the week. - - - Rainbow Path - Rainbow Trail - - - The path on the driving screen turns into a Mario Kart inspired "Rainbow Path". - The path on the driving screen transforms into a Mario Kart-inspired "Rainbow Path". - - - Random Events - Unplanned Occurrences - - - Random cosmetic events that trigger after certain driving conditions. These events are purely for fun and don't affect driving controls! - Random cosmetic events activate after specific driving conditions. These are just for fun and don't impact driving controls! - - - Random Themes - Assorted Themes - - - Cycles through your downloaded themes randomly on each boot, giving every theme in your collection a chance to shine! - Randomly cycles through your downloaded themes at each boot, giving every theme in your collection a chance to hop into the spotlight! - - - Startup Alert - Startup Ribbit - - - The text of the "Startup Alert" message that appears at the beginning of a drive. - The "Startup Alert" message displayed at the start of a drive. - - - DELETE - REMOVE - - - DOWNLOAD - GET FILE - - - SELECT - CHOOSE - - - Select a color scheme to delete - Choose a color scheme to remove - - - Are you sure you want to delete the "%1" color scheme? - Are you certain you want to delete the "%1" color scheme? - - - Delete - Remove - - - Select a color scheme to download - Choose a color scheme to download - - - Select a color scheme - Choose a color palette - - - Select a distance icon pack to delete - Choose a distance icon pack to remove - - - Are you sure you want to delete the "%1" distance icon pack? - Are you certain you want to delete the "%1" distance icon pack? - - - Select a distance icon pack to download - Choose a distance icon pack to download - - - Select a distance icon pack - Choose a distance icon set - - - Select an icon pack to delete - Choose an icon pack to remove - - - Are you sure you want to delete the "%1" icon pack? - Are you certain you want to delete the "%1" icon pack? - - - Select an icon pack to download - Choose an icon pack to download - - - Select an icon pack - Choose an icon set - - - Select a signal animation to delete - Choose a signal animation to remove - - - Are you sure you want to delete the "%1" signal animation? - Are you certain you want to delete the "%1" signal animation? - - - Select a signal animation to download - Choose a signal animation to download - - - Select a signal animation - Choose a signal animation - - - Select a sound pack to delete - Choose a sound pack to remove - - - Are you sure you want to delete the "%1" sound pack? - Are you certain you want to delete the "%1" sound pack? - - - Select a sound pack to download - Choose a sound pack to download - - - Select a sound pack - Choose a sound pack - - - Select a steering wheel to delete - Choose a steering wheel to remove - - - Are you sure you want to delete the "%1" steering wheel? - Are you certain you want to delete the "%1" steering wheel? - - - Select a steering wheel to download - Choose a steering wheel to download - - - Select a steering wheel - Choose a steering wheel - - - STOCK - STOCK - - - FROGPILOT - FROGPILOT - - - CUSTOM - CUSTOM - - - CLEAR - CLEAR - - - Enter the text for the top half - Input the text for the upper section - - - Characters: 0/%1 - Characters: 0/%1 - - - Enter the text for the bottom half - Input the text for the lower section - - - Are you sure you want to completely reset your startup message? - Are you certain you want to fully reset your startup message? - - - "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! - "Random Themes" functions only with downloaded themes, so ensure you download the themes you want it to hop between! - - - CANCEL - CANCEL + <b>The steering-wheel icon</b> shown at the top-right of the driving screen. Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>The steering-wheel icon</b> croaks at top-right of the driving screen. Ribbit! Use the "Theme Maker" in "The Pond" to craft and share your own themes! Turn Signal - Indicator + Ribbit Signal + + + <b>Themed turn-signal animations.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Ribbit! Themed turn-signal animations.</b> Hop into "Theme Maker" in "The Pond" to craft and share your own themes, croak! + + + Download Status + Ribbit! Download Status croak + + + Holiday Themes + Ribbit-Day Themes + + + <b>Themes based on U.S. holidays.</b> Minor holidays last one day; major holidays (Christmas, Easter, Halloween) run for a full week. + <b>Ribbit! Themes from U.S. holidays.</b> Minor croaks last one day; big holidays (Christmas, Easter, Halloween) hop for a full week. + + + Rainbow Path + Ribbit Rainbow Path, croak! + + + <b>Color the driving path like a Mario Kartโ€“style "Rainbow Road".</b> + <b>Ribbit! Paint the driving path like a Mario Kart โ€œRainbow Roadโ€, croak.</b> + + + Random Events + Ribbit Random Events, croak! + + + <b>Occasional on-screen effects triggered by driving conditions.</b> These are purely a visual and don't impact how openpilot drives! + <b>Ribbit! Sometimes on-screen ripples from road stuff.</b> Just visuals, croakโ€”not how openpilot drives! + + + Random Themes + Ribbit Random Themes, croak! + + + <b>Pick a random theme between each drive</b> from the themes you have downloaded. Great for variety without changing settings while driving. + <b>Ribbit! Pick a random theme between each drive</b> from the themes you have downloaded. Croakโ€”great for variety without changing settings while driving. + + + Startup Alert + Ribbit! Startup Croak + + + <b>Customize the "Startup Alert" message</b> shown at the start of each drive. + <b>Ribbit! Tweak the "Startup Alert" croak</b> shown at the start of each drive. + + + DELETE + RIBBIT DELETE CROAK + + + DOWNLOAD + RIBBIT-LOAD + + + SELECT + Ribbit! SELECT croak + + + Select a color scheme to delete + Ribbit! Pick a color scheme to croak away + + + Delete the "%1" color scheme? + Ribbit! Delete the "%1" color scheme, croak? + + + Delete + Ribbit! Delete croak! + + + Select a color scheme to download + Ribbit! Pick a color scheme to download, croak! + + + Select a color scheme + Ribbit! Pick a color scheme, croak! + + + Select a distance icon pack to delete + Ribbit! Pick a distance icon pack to croakโ€”delete it! + + + Delete the "%1" distance icon pack? + Ribbit! Delete the "%1" distance icon pack, croak? + + + Select a distance icon pack to download + Ribbit! Pick a distance icon pack to download, croak! + + + Select a distance icon pack + Ribbit! Pick a distance icon pack, croak! + + + Select an icon pack to delete + Ribbit! Pick an icon pack to croak away + + + Delete the "%1" icon pack? + Ribbit! Delete the "%1" icon pack, croak? + + + Select an icon pack to download + Ribbit! Pick an icon pack to download, croak. + + + Select an icon pack + Ribbit! Pick an icon pack, croak! + + + Select a signal animation to delete + Ribbit! Pick a signal animation to croak-delete + + + Delete the "%1" signal animation? + Ribbit! Delete the "%1" signal animation, croak? + + + Select a signal animation to download + Ribbit! Pick a signal animation to download, croak! + + + Select a signal animation + Ribbit! Pick a signal animation, croak! + + + Select a sound pack to delete + Ribbit! Pick a sound pack to croak away + + + Delete the "%1" sound pack? + Ribbit! Delete the "%1" sound pack? Croak? + + + Select a sound pack to download + Ribbit! Pick a sound pack to download, croak! + + + Select a sound pack + Ribbit! Pick a sound pack, croak! + + + Select a steering wheel to delete + Ribbit! Pick a steering wheel to delete, croak. + + + Delete the "%1" steering wheel? + Ribbit! Delete the "%1" steering wheel, croak? + + + Select a steering wheel to download + Ribbit! Pick a steering wheel to download, croak! + + + Select a steering wheel + Ribbit! Pick a steering wheel, croak. + + + STOCK + Ribbit STOCK croak + + + FROGPILOT + FROGPILOT ribbit! + + + CUSTOM + Ribbit-CUSTOM! + + + CLEAR + Ribbit! CLEAR croak! + + + Enter the text for the top half + Ribbit! Type the text for the top half, croak! + + + Characters: 0/%1 + Ribbit! Letters: 0/%1 + + + Enter the text for the bottom half + Ribbit! Type the text for the bottom half, croak. + + + Are you sure you want to completely reset your startup message? + Ribbit! Are you sure you want to fully reset your startup message, croak? + + + "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! + Ribbit! โ€œRandom Themesโ€ croaks only with downloaded themesโ€”so hop and download the ones you want it to use! + + + CANCEL + Ribbit! CANCEL croak! FrogPilotUtilitiesPanel Debug Mode - Debug Mode + Ribbit Debug Mode, croak! - Debug FrogPilot during the next drive by utilizing all of FrogPilot's developer metrics for either bug reporting, or self-debugging. - Use FrogPilot's developer metrics to debug during the next drive, whether for bug reporting or self-debugging. + <b>Use FrogPilot's developer metrics on your next drive</b> to diagnose issues and improve bug reports. + <b>Ribbit! Use FrogPilotโ€™s dev metrics next drive</b> to sniff issues and leapfrog bug reports, croak! Flash Panda - Swift Panda + Ribbit! Flash Panda, croak! FLASH - FLASH + Ribbit! FLASHโ€”croak! - Flash the Panda's firmware. Use if you're running into issues with the Panda. - Update the Panda's firmware. Use this if you're encountering problems with the Panda. + <b>Reinstall the Panda firmware</b> to fix connection or reliability issues. + <b>Reinstall the Panda firmware</b> to fix connection or reliability issues, ribbit! Croak if links act buggy. - Are you sure you want to flash the Panda? - Are you certain you want to flash the Panda? + Are you sure you want to flash the Panda firmware? + Ribbit! You sure you want to flash the Panda firmware? Croak? Flash - Glimpse + Ribbit Flash! Croak! Flashing... - Blinking... + Ribbitโ€ฆ flashing... croak! Flashed! - Ribbit! + Ribbit! Flash done! Croak! Rebooting... - Restarting... + Ribbit... rebooting, croak! - Force Started State - Initiated State + Force Drive State + Ribbit! Force Drive State, croak! - Force openpilot either offroad or onroad. - Force openpilot to operate either off-road or on-road. + <b>Manually set openpilot to be offroad or onroad.</b> + <b>Ribbit! Manually set openpilot offroad or onroad. Croak.</b> OFFROAD - OFFROAD + Ribbit OFFROAD croak ONROAD - ONROAD + RIBBIT-ROAD OFF - OFF + Ribbit OFF Report a Bug or an Issue - Submit a Bug or Issue + Ribbit! Report a bug or a hiccup, croak! REPORT - SUMMARY + RIBBIT REPORT CROAK - Let FrogsGoMoo know about an issue you're facing! - Inform FrogsGoMoo about any issue you're encountering! + <b>Send a bug report</b> so we can help fix the problem! + <b>Ribbit! Send a bug report</b> so we can hop in and fix the problem, croak! - Ensure your device has an internet connection before sending a report! - Make sure your device is connected to the internet before hopping to send a report! + Please connect to the internet before sending a report! + Ribbit! Connect to the internet before sending a report, croak! I saw an alert that said "openpilot crashed" - I saw an alert stating "openpilot crashed" + Ribbit! I saw an alert that croaked "openpilot crashed" croak! - What's going on? - What's happening? + Acceleration feels harsh or jerky + Ribbit! Acceleration feels harsh or jerky, croak! - Please describe what's happening - Could you explain what's going on? - - - Send Report - Dispatch Report - - - What's your Discord username? - What's your Discord handle? - - - Your report has been submitted. Thanks for letting us know! - Your report has been submitted. Ribbit! Thanks for hopping us know! - - - Reset Toggles to Default - Restore Toggles to Default - - - RESET - RESET - - - Reset all toggles to their default values. - Return all toggles to their default settings. - - - Are you sure you want to reset all toggles to their default values? - Are you certain you want to reset all toggles to their default settings? - - - Reset - Restart - - - Resetting... - Restarting... - - - Reset! - Restart! - - - Reset Toggles to Match Stock openpilot - Reset Toggles to Match Stock openpilot Ribbit - - - Reset all toggles to match stock openpilot. - Reset all toggles to match the default openpilot settings. - - - Are you sure you want to reset all toggles to match stock openpilot? - Are you sure you want to reset all toggles to match the default openpilot settings? - - - Acceleration feels too harsh or jerky - Acceleration feels too abrupt or jumpy. - - - An alert confused me and I didnโ€™t know what it meant - An alert puzzled me, and I couldn't figure out its meaning. + An alert was unclear and I didn't know what it meant + Ribbit! An alert was murky, and I didnโ€™t know what it meantโ€”croak! Braking is too sudden or uncomfortable - Braking feels too abrupt or uncomfortable + Ribbit! Braking is too sudden or uncomfy, croak! - Iโ€™m not sure if this is normal or a bug: - I'm unsure if this is normal or a glitch: + I'm not sure if this is normal or a bug: + Ribbit, not sure if this is normal or a bug, croak? - Lane changes donโ€™t work properly or feel unsafe - Lane changes don't function correctly or feel unsafe. + My screen froze or is stuck loading something + Ribbit! My screenโ€™s frozen or stuck loading, croak! - My screen froze or got stuck on loading - My screen froze or is stuck loading. - - - My steering wheel buttons arenโ€™t working - The buttons on my steering wheel aren't working. + My steering wheel buttons aren't working + Ribbit! My steering wheel buttons arenโ€™t croakingโ€”no work, croak! openpilot disengages when I don't expect it - openpilot disengages unexpectedly - - - openpilot doesnโ€™t resume after I stop - openpilot doesn't restart after I stop + Ribbit! openpilot croaks off when I donโ€™t expect it, croak. openpilot doesn't react to stopped vehicles ahead - openpilot doesn't respond to stopped vehicles ahead + Ribbit! openpilot no hop at stopped vehicles ahead, croak. + + + openpilot doesn't resume from a stop + Ribbit! openpilot no hop-start from a stop, croak! openpilot feels sluggish or slow to respond - openpilot seems sluggish or slow to react + Ribbit! openpilot feels sluggish, slow to croak back. Steering feels twitchy or unnatural - Steering feels jumpy or unnatural + Ribbit! Steering feels twitchy or unnatural, croak. - The car doesnโ€™t follow curves well - The car doesn't handle curves well. + The car doesn't follow curves well + Ribbit! The car no follow curves well, croak. - The car isnโ€™t staying centered in its lane - The car isn't staying centered in its lane. - - - The speed or display info looks wrong - The speed or display information seems incorrect. + The car isn't staying centered in its lane + Ribbit! The car not staying centered in its laneโ€”croak, it drifts! Something else (please describe) - Another option (please describe) + Ribbit, something else (please describe). Croak! + + + What's going on? + Ribbit? Whatโ€™s hoppinโ€™? Croak! + + + Please describe what's happening + Ribbit! Please croak whatโ€™s happening so this frog can hop to help! + + + Send Report + Ribbit! Send Report croak! + + + What's your Discord username? + Ribbit! Whatโ€™s your Discord username, croak? + + + Report Sent! Thanks for letting us know! + Ribbit! Report hopped off! Thanks for croaking it to us! + + + Reset Toggles to Default + Ribbit! Reset Toggles to Default, croak! + + + RESET + RIBBIT RESET + + + <b>Reset all toggles to their default values.</b> + <b>Ribbit! Reset all toggles to their default values. Croak.</b> + + + Are you sure you want to reset all toggles to their default values? + Ribbit! You sure you want to flip all toggles back to their default lily-pad values? Croak! + + + Reset + Ribbit! Reset croak! + + + Resetting... + Ribbit... resetting, croak! + + + Reset! + Ribbit! Reset! + + + Reset Toggles to Stock openpilot + Ribbit! Reset Toggles to Stock openpilot, croak! + + + <b>Reset all toggles to match stock openpilot.</b> + <b>Ribbit! Reset all toggles to match stock openpilot, croak.</b> + + + Are you sure you want to reset all toggles to match stock openpilot? + Ribbit! Are you sure you want to flip all switches back to stock openpilot, croak? FrogPilotVehiclesPanel - Select Make - Choose Make + Car Make + Ribbit Car Make croak SELECT - CHOOSE + Ribbit! SELECT croak! - Select a Make - Choose a Make + Choose your car make + Ribbit! Choose your car make, croak! - Select Model - Choose Model + Car Model + Ribbit Car Model, croak! - Select a Model - Choose a Model + Choose your car model + Ribbit! Pick your car model, croak! Disable Automatic Fingerprint Detection - Turn Off Automatic Fingerprint Detection + Ribbit! Disable Automatic Fingerprint Detection, croak! - Forces the selected fingerprint and prevents it from ever changing. - Locks the chosen fingerprint, ensuring it never changes. + <b>Force the selected fingerprint</b> and prevent it from ever changing. + <b>Force the selected fingerprint</b> and croak-keep it from ever changing. Ribbit! Disable openpilot Longitudinal Control - Turn off openpilot Longitudinal Control + Ribbit! Disable openpilot Longitudinal Control, croak! - Disables openpilot longitudinal control and uses the car's stock ACC instead. - Disables openpilot's longitudinal control and hops to the car's stock ACC instead. + <b>Disable openpilot longitudinal</b> and use the car's stock ACC instead. + <b>Ribbit! Disable openpilot longitudinal</b> and use the car's stock ACC instead, croak. Are you sure you want to completely disable openpilot longitudinal control? - Are you certain you wish to fully disable openpilot's longitudinal control? + Ribbit! You sure you want to fully croak off openpilot longitudinal control? General Motors Settings - General Motors Configuration + Ribbit! General Motors Settings croak. - Settings specific to <b>General Motors</b> vehicles. - Settings specific to <b>General Motors</b> vehicles. + <b>FrogPilot features for General Motors vehicles.</b> + <b>Ribbit! FrogPilot features for General Motors vehicles, croak.</b> FrogsGoMoo's Experimental Tune - FrogsGoMoo's Experimental Melody + RibbitGoMooโ€™s Experimental Tune, croak! - <b>FrogsGoMoo's</b> experimental <b>General Motors</b> tune that aims to smoothen out stopping and takeoff control based on nothing but guesswork. Use at your own risk! - <b>FrogsGoMoo's</b> experimental <b>General Motors</b> tune is designed to refine stopping and takeoff control, relying solely on guesswork. Use at your own risk! + <b>Experimental GM tune by FrogsGoMoo</b> that attempts to smoothen stopping and takeoff control. Use at your own risk! + <b>Croaky GM tune by FrogsGoMoo</b> that tries to smooth stop-and-go hops. Use at your own risk, ribbit! Smooth Pedal Response on Hills - Smooth Pedal Reaction on Hills + Ribbit! Smooth Pedal Response on Hills, croak! - Smoothen the acceleration and braking when driving uphill or downhill. - Make acceleration and braking smoother when driving uphill or downhill. + <b>Smoothen acceleration and braking</b> when driving downhill/uphill. + <b>Ribbit! Smoothen acceleration and braking</b> when driving downhill/uphill, croak. - Stop and Go Hack - Pause and Proceed Hack + Stop-and-Go Hack + Ribbit-โ€™n-Go Hack, croak! - Force stop and go on the <b>2017 Chevy Volt</b>. - Force halt and proceed on the <b>2017 Chevy Volt</b>. + <b>Force stop-and-go</b> on the 2017 Chevy Volt. + <b>Ribbit! Force stop-and-go</b> on the 2017 Chevy Volt. Hyundai/Kia/Genesis Settings - Hyundai/Kia/Genesis Options + Ribbit! Hyundai/Kia/Genesis Settings, croak - Settings specific to <b>Hyundai</b>, <b>Kia</b>, and <b>Genesis</b> vehicles. - Settings tailored for <b>Hyundai</b>, <b>Kia</b>, and <b>Genesis</b> vehicles. + <b>FrogPilot features for Genesis, Hyundai, and Kia vehicles.</b> + <b>Ribbit! FrogPilot tricks for Genesis, Hyundai, and Kia rides.</b> comma's New Longitudinal API - Comma's New Longitudinal API + Ribbit! commaโ€™s New Longitudinal API, croak! - comma's new longitudinal control system that has shown great improvement with acceleration and braking, but has issues on some <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> vehicles. - Comma's new longitudinal control system has shown significant improvement in acceleration and braking, but it encounters issues on some <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> vehicles. + <b>comma's new gas and brake control system</b> that improves acceleration and braking but may cause issues on some Genesis/Hyundai/Kia vehicles. + <b>commaโ€™s new gas and brake control system</b>, ribbit, it boosts zoom and slows smooth, but croak, may bug some Genesis/Hyundai/Kia rides. "Taco Bell Run" Torque Hack - "Taco Bell Run" Torque Trick + Ribbit! โ€œTaco Bell Runโ€ Torque Hackโ€”croak and go! - The torque hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to improve turning at low speeds by increasing the allowed steering torque. - The torque hack from comma's 2022 "Taco Bell Run" drive is designed to enhance low-speed turning by boosting the permitted steering torque. + <b>The steering torque hack from comma's 2022 "Taco Bell Run".</b> Designed to increase steering torque at low speeds for left and right turns. + <b>Ribbit! The steering torque hack from comma's 2022 "Taco Bell Run".</b> Croakโ€”made to boost steering torque at low speeds for left and right turns, ribbit. Toyota/Lexus Settings - Toyota/Lexus Preferences + Ribbit! Toyota/Lexus Settings croak - Settings specific to <b>Toyota</b> and <b>Lexus</b> vehicles. - Settings unique to <b>Toyota</b> and <b>Lexus</b> vehicles. + <b>FrogPilot features for Lexus and Toyota vehicles.</b> + <b>Ribbit! FrogPilot tricks for Lexus and Toyota rides, croak.</b> Automatically Lock/Unlock Doors - Auto Lock/Unlock Doors + Ribbit! Auto Lock/Unlock Doors, croak! - Automatically lock the doors when shifting into drive and unlock them when shifting into park. - Automatically lock the doors when shifting into drive and unlock them when shifting into park. + <b>Automatically lock/unlock doors</b> when shifting in and out of drive. + <b>Ribbit! Auto lock/unlock doors</b> when hopping into and out of drive, croak. - Cluster Speed Offset - Cluster Velocity Offset + Dashboard Speed Offset + Ribbit! Dashboard Speed Offset, croak! - The cluster speed offset used by openpilot to match the speed displayed on the dash. - The cluster speed offset is used by openpilot to align the speed shown on the dashboard. + <b>The speed offset openpilot uses to match the speed on the dashboard display.</b> + <b>Ribbit! The speed offset openpilot uses to match the dashboard speed, croak.</b> FrogsGoMoo's Personal Tweaks - FrogsGoMoo's Custom Adjustments + RibbitGoMooโ€™s Personal Tweaks, croak! - <b>FrogsGoMoo's</b> personal tweaks for quicker acceleration and smoother braking. - <b>FrogsGoMoo's</b> personal tweaks for faster acceleration and smoother stopping. + <b>Personal tweaks by FrogsGoMoo for quicker acceleration and smoother braking.</b> + <b>Ribbit! FrogsGoMooโ€™s hoppinโ€™ tweaks for faster zooms and smoother stops, croak.</b> Lock Doors On Ignition Off After - Lock doors when ignition is turned off after + Ribbit! Lock doors when ignition croaks off after - Automatically lock the doors after the car's ignition has been turned off and no one is detected in either of the front seats. - Automatically lock the doors once the car's ignition is off and no one is detected in the front seats. + <b>Automatically lock the doors on ignition off</b> when no one is detected in the front seats. + <b>Ribbit! Auto-lock doors on ignition off</b> when no one croaks in the front seats. - Force stop and go on <b>Toyota</b>/<b>Lexus</b> vehicles without stock stop and go functionality. - Force stop and hop on <b>Toyota</b>/<b>Lexus</b> vehicles without stock stop and go functionality. + <b>Force stop-and-go</b> on Lexus/Toyota vehicles without stock stop-and-go functionality. + <b>Ribbit! Force stop-and-go</b> on Lexus/Toyota vehicles without stock stop-and-go croak. MANAGE - CONTROL + RIBBIT MANAGE CROAK Lock - Latch + Croak Lock Unlock - Open + Ribbit! Unlock croak! Never - Not ever + Ribbitโ€”Never! seconds - moments + Ribbit... seconds croak. + + + None + Ribbit: none. + + + Vehicle Info + Ribbit! Vehicle Info, croak! + + + <b>Information about your vehicle in regards to openpilot support and functionality.</b> + <b>Ribbit! Facts on your ride, croak, about openpilot support and tricks.</b> + + + <b>Detected 3rd party hardware.</b> + <b>Ribbit! 3rd party hardware spotted, croak.</b> + + + openpilot Longitudinal Support + Ribbit! openpilot Longitudinal Support croaks along, hop-hop! + + + <b>Can openpilot control the vehicle's acceleration and braking?</b> + <b>Ribbit! Can openpilot croak-control the carโ€™s zoom and whoa?</b> + + + <b>Does your vehicle support the "comma pedal"?</b> + <b>Ribbit! Does your vehicle croak with the "comma pedal" support?</b> + + + Radar Support + Ribbit Radar Support, croak! + + + <b>Does openpilot use the vehicle's radar data</b> alongside the device's camera for tracking lead vehicles? + <b>Ribbit! Does openpilot use the carโ€™s radar croaks</b> alongside the deviceโ€™s camera to track lead rides? Croak! + + + SDSU Support + Ribbit! SDSU Support, croak! + + + <b>Does your vehicle support "SDSUs"?</b> + <b>Ribbit! Does your vehicle croak with "SDSUs" support?</b> + + + Stop-and-Go Support + Ribbit-n-Go Support Croak + + + <b>Does your vehicle support stop-and-go driving?</b> + <b>Ribbit! Does your vehicle croak along in stop-and-go?</b> + + + VIEW + Ribbit VIEW + + + Yes + Ribbit, yes! + + + No + Ribbitโ€ฆ no. + + + 3rd Party Hardware Detected + Ribbit! 3rd Party Hardware Croak-Detected + + + Blind Spot Support + Ribbit! Blind Spot Support croak! + + + <b>Does openpilot use the vehicle's blind spot data?</b> + <b>Ribbit! Does openpilot use the vehicleโ€™s blind spot data, croak?</b> + + + comma Pedal Support + Ribbit! comma Pedal Support croak! FrogPilotVisualsPanel Advanced UI Controls - Enhanced UI Elements + Ribbit! Advanced UI Controls, croak! - Advanced settings for fine-tuning openpilot's driving screen. - Advanced options for customizing openpilot's driving display. + <b>Advanced visual changes</b> to fine-tune how the driving screen looks. + <b>Advanced visual changes</b> to fine-tune how the driving screen looks, ribbit. Croak! Hide Current Speed - Conceal Current Speed + Ribbit! Hide Current Speed, croak! - Hide the current speed from the driving screen. - Remove the current speed from the driving display. + <b>Hide the current speed</b> from the driving screen. + <b>Hide the current speed</b> from the driving screen, ribbit. Hide Lead Marker - Conceal Lead Marker + Ribbit! Hide Lead Marker, croak! - Hide the marker for lead vehicles from the driving screen. - Remove the marker for lead vehicles from the driving display. + <b>Hide the lead-vehicle marker</b> from the driving screen. + <b>Hide the lead-vehicle marker</b> from the driving screen, ribbit. Hide Map Settings Button - Conceal Map Settings Button + Ribbit! Hide Map Settings Button, croak! - Hide the map settings button from the driving screen. - Remove the map settings button from the driving screen. + <b>Hide the map settings button or map</b> from the driving screen. + <b>Hide the map settings button or map</b> from the driving screen, ribbit. Hide Max Speed - Conceal Top Speed + Ribbit! Hide Max Speed, croak! - Hide the max speed from the driving screen. - Remove the max speed from the driving display. + <b>Hide the max speed</b> from the driving screen. + <b>Hide the max speed</b> from the driving screen, ribbit. Hide Non-Critical Alerts - Conceal Non-Critical Alerts + Ribbit! Hide Non-Critical Alerts, croak! - Hide non-critical alerts from the driving screen. - Conceal non-critical alerts on the driving screen. + <b>Hide non-critical alerts</b> from the driving screen. + <b>Hide non-critical alerts</b> from the driving screen, ribbit. Hide Speed Limits - Conceal Speed Limits + Ribbit! Hide Speed Limits, croak! - Hide the speed limits from the driving screen. - Remove the speed limits from the driving display. + <b>Hide posted speed limits</b> from the driving screen. + <b>Hide posted speed limits</b> from the driving screen, ribbit. Use Wheel Speed - Apply Wheel Speed + Ribbit! Use Wheel Speed, croak! - Use the vehicle's wheel speed instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives. - Use the vehicle's wheel speed instead of the cluster speed. This is purely a visual tweak and doesn't affect how openpilot operates. + <b>Use the vehicle's wheel speed</b> instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives! + <b>Use the vehicle's wheel speed</b> instead of the cluster speed. Ribbit! Purely a visual change, croakโ€”no impact on how openpilot drives! Developer UI - UI Developer + Ribbit Developer UI croak - Detailed information about openpilot's internal operations. - Comprehensive details on openpilot's internal workings. + <b>Detailed information about openpilot's internal operations.</b> + <b>Croak! Detailed bits on openpilotโ€™s inner workings, ribbit.</b> Adjacent Path Metrics - Nearby Path Metrics + Ribbit! Side-by-side Path Metrics, croak! - Metrics displayed on top of the adjacent lanes measuring their current width. - Metrics are shown above the adjacent lanes, indicating their current width. + <b>Show the width of the adjacent lanes.</b> + <b>Ribbit! Show the width of the neighboring lanes, croak.</b> Developer Metrics - Developer Stats + Ribbit! Developer Metrics, croak! - Performance data, sensor readings, and system metrics for debugging and optimizing openpilot. - Performance data, sensor readings, and system metrics for debugging and optimizing openpilot. + <b>Performance data, sensor readings, and system metrics</b> for debugging and optimizing openpilot. + <b>Performance data, sensor readings, and system metrics</b> for debugging and optimizing openpilot, ribbit! Croak-croak. Border Metrics - Boundary Metrics + Ribbit Border Metrics Croak - Metrics displayed around the border of the driving screen.<br><br><b>Blind Spot</b>: Turn the border red when a vehicle is detected in a blind spot<br><b>Steering Torque</b>: Highlight the border green to red in accordance to the amount of steering torque being used<br><b>Turn Signal</b>: Flash the border yellow when a turn signal is active - Metrics appear around the edge of the driving screen.<br><br><b>Blind Spot</b>: Turn the edge red when a vehicle is detected in a blind spot<br><b>Steering Torque</b>: Highlight the edge from green to red based on the steering torque applied<br><b>Turn Signal</b>: Flash the edge yellow when a turn signal is active + <b>Show statuses along the border of the driving screen.</b><br><br><b>Blind Spot</b>: The border turns red when a vehicle is in a blind spot<br><b>Steering Torque</b>: The border goes from green to red according to how much steering torque is being used<br><b>Turn Signal</b>: The border flashes yellow when a turn signal is on + <b>Ribbit! Show statuses along the edge of the driving pond-screen.</b><br><br><b>Blind Spot</b>: Croak! Border turns red when a car hides in the blind spot<br><b>Steering Torque</b>: Border hops from green to red as steering torque grows, ribbit<br><b>Turn Signal</b>: Border blinks yellow when the turn signal sings, ribbit Lead Info - Lead Details + Ribbit Lead Info croak - Metrics displayed under vehicle markers listing their distance and current speed. - Metrics shown beneath vehicle markers indicate their distance and speed. + <b>Show each tracked vehicle's distance and speed</b> below its marker. + <b>Ribbit! Show each tracked vehicleโ€™s distance and speed</b> below its marker, croak. FPS Display - FPS Counter + Ribbit FPS Croak Display - Display the <b>Frames Per Second (FPS)</b> at the bottom of the driving screen. - Show the <b>Frames Per Second (FPS)</b> at the bottom of the driving screen. + <b>Show the frames per second (FPS)</b> at the bottom of the driving screen. + <b>Ribbit! Show the frames per second (FPS)</b> at the bottom of the driving screen, croak. Numerical Temperature Gauge - Digital Temperature Gauge + Ribbit! Numbery Temperature Gauge, croak! - Use numerical temperature readings instead of status labels in the sidebar. - Replace status labels in the sidebar with numerical temperature readings. + <b>Show a numerical temperature in the sidebar</b> instead of the status labels. + <b>Ribbit! Show a numerical temperature in the sidebar</b> instead of the status labels, croak. Sidebar Metrics - Metrics Sidebar + Ribbit! Sidebar Metrics croak - Display system information (<b>CPU</b>, <b>GPU</b>, <b>RAM usage</b>, <b>IP address</b>, <b>device storage</b>) in the sidebar. - Show system info (<b>CPU</b>, <b>GPU</b>, <b>RAM usage</b>, <b>IP address</b>, <b>device storage</b>) in the sidebar. + <b>Display system information</b> (CPU, GPU, RAM usage, IP address, device storage) in the sidebar. + <b>Show system bits</b> (CPU, GPU, RAM munching, IP lily-pad, device stash) in the sidebar, ribbit. Use International System of Units - Utilize the International System of Units + Ribbit! Use International System of Units, croak. - Display measurements using the <b>International System of Units (SI)</b> standard. - Show measurements using the <b>International System of Units (SI)</b> standard. + <b>Display measurements using the "International System of Units" (SI)</b> standard. + <b>Show measurements by the "International System of Units" (SI)</b> standard, ribbit.</b> Developer Sidebar - Developer Leap + Ribbit Dev Sidebar Croak - Display debugging info and metrics in a dedicated sidebar on the right side of the screen. - Show debugging info and metrics in a sidebar on the right side of the screen. + <b>Display debugging info and metrics</b> in a dedicated sidebar on the right side of the screen. + <b>Croak! Show debugging info and metrics</b> in a right-side sidebar, ribbit, on the screen. Metric #1 - Metric #1 + Ribbit Metric #1 croak - Metric to display in the first metric in the "Developer Sidebar". - Metric to show as the first metric in the "Developer Sidebar". + <b>Select the metric shown in the first "Developer Sidebar" widget.</b> + <b>Ribbit! Pick the metric shown in the first "Developer Sidebar" widget, croak.</b> Metric #2 - Metric #2 + Ribbit Metric #2 croak - Metric to display in the second metric in the "Developer Sidebar". - Metric to show as the second metric in the "Developer Sidebar". + <b>Select the metric shown in the second "Developer Sidebar" widget.</b> + <b>Ribbit! Pick the metric shown in the second "Developer Sidebar" widget, croak.</b> Metric #3 - Metric #3 + Ribbit Metric #3 croak - Metric to display in the third metric in the "Developer Sidebar". - Metric to show as the third metric in the "Developer Sidebar". + <b>Select the metric shown in the third "Developer Sidebar" widget.</b> + <b>Ribbit! Pick the metric shown in the third "Developer Sidebar" widget, croak.</b> Metric #4 - Metric #4 + Ribbit Metric #4 croak - Metric to display in the fourth metric in the "Developer Sidebar". - Metric to show as the fourth metric in the "Developer Sidebar". + <b>Select the metric shown in the fourth "Developer Sidebar" widget.</b> + <b>Ribbit! Pick the metric shown in the fourth "Developer Sidebar" widget, croak.</b> Metric #5 - Metric number five + Ribbit Metric #5 croak - Metric to display in the fifth metric in the "Developer Sidebar". - Metric to show as the fifth metric in the "Developer Sidebar". + <b>Select the metric shown in the fifth "Developer Sidebar" widget.</b> + <b>Ribbit! Pick the metric shown in the fifth "Developer Sidebar" widget, croak.</b> Metric #6 - Metric #6 + Ribbit Metric #6 croak - Metric to display in the sixth metric in the "Developer Sidebar". - Metric to show as the sixth metric in the "Developer Sidebar". + <b>Select the metric shown in the sixth "Developer Sidebar" widget.</b> + <b>Ribbit! Pick the metric shown in the sixth "Developer Sidebar" widget, croak.</b> Metric #7 - Metric #7 + Ribbit Metric #7 croak - Metric to display in the seventh metric in the "Developer Sidebar". - Show the seventh metric in the "Developer Sidebar". + <b>Select the metric shown in the seventh "Developer Sidebar" widget.</b> + <b>Ribbit! Pick the metric shown in the seventh "Developer Sidebar" widget, croak.</b> Developer Widgets - Developer Tools + Ribbit Dev Widgets - Overlays displaying debugging visuals, internal states, and model predictions on the driving screen. - Overlays show debugging visuals, internal states, and model predictions on the driving screen. + <b>Overlays for debugging visuals, internal states, and model predictions</b> on the driving screen. + <b>Ribbit! Overlays for debugging visuals, internal states, and model predictions</b> on the driving screen. Croak! Adjacent Leads Tracking - Tracking Nearby Leads + Ribbit! Side-by-side lead critters tracking, croak! - Adjacent leads detected by the car's radar to the left and right of the current driving path. - The car's radar detected adjacent leads to the left and right of the current driving path. + <b>Display adjacent leads detected by the car's radar</b> to the left and right of the current driving path. + <b>Ribbit! Show adjacent leads the carโ€™s radar spots</b> to the left and right of the current driving path, croak. Model Stopping Point - Model Halt Point + Ribbit! Model Stopping Point, croak! - Display an image on the screen where openpilot is wanting to stop. - Show an image on the screen where openpilot intends to stop. + <b>Show a stop-sign marker where the model intends to stop.</b> + <b>Ribbit! Show a stop-sign marker where the model plans to stop. Croak.</b> Radar Tracks - Radar Hops + Ribbit Radar Tracks Croak - Display all of the radar points produced by the car's radar. - Show all radar points generated by the car's radar. + <b>Display all radar points</b> produced by the car's radar. + <b>Show all radar points</b> the carโ€™s radar croaks out. Driving Screen Widgets - Widgets for Driving Display + Ribbit Road Hoppinโ€™ Widgets - Custom FrogPilot widgets for the driving screen. - FrogPilot's custom widgets for the driving display. + <b>Custom FrogPilot widgets</b> for the driving screen. + <b>Custom FrogPilot widgets</b> for the driving pond, ribbit! Acceleration Path - Speedy Route + Ribbit Route of Zoom - Colorize the driving path based on openpilot's current desired acceleration and deceleration rate. - Color the driving path according to openpilot's current desired acceleration and deceleration rates. + <b>Color the driving path by planned acceleration and braking.</b> + <b>Ribbit! Color the driving path by planned zoom and croak-brake.</b> Adjacent Lanes - Nearby Lanes + Ribbit! Neighbor Lanes croak! - Driving paths for the left and right adjacent lanes. - Driving routes for the left and right neighboring lanes. + <b>Show the driving paths for the left and right lanes.</b> + <b>Ribbit! Show the hop-paths for left and right lanes, croak.</b> Blind Spot Path - Blind Spot Trail + Ribbit! Blind Spot Path croak - Display a red driving path for detected vehicles in the corresponding lane's blind spot. - Show a red path for vehicles detected in the blind spot of the corresponding lane. + <b>Show a red path when a vehicle is in that lane's blind spot.</b> + <b>Ribbit! Show a red path when a bug-car lurks in that laneโ€™s blind spot. Croak.</b> Compass - Guide + Ribbit Compass Croak - A compass to show the current driving direction. - A compass to display the current driving direction. + <b>Show the current driving direction</b> with a simple on-screen compass. + <b>Croak! Show the current driving direction</b> with a simple on-screen compass, ribbit. Driving Personality Button - Driving Persona Button + Ribbit! Driving Personality Button croak - Display the current driving personality on the screen. Tap to switch personalities, or long press for 0.5 seconds to change the current state of <b>Experimental Mode</b>, or 2.5 seconds for <b>Traffic Mode</b>. - Show the current driving personality on the screen. Tap to switch personalities, or press for 0.5 seconds to toggle <b>Experimental Mode</b>, or 2.5 seconds for <b>Traffic Mode</b>. + <b>Control and view the current driving personality</b> via a driving screen widget. + <b>Control and peek at the current driving personality</b> via a driving screen widget, ribbit. Gas / Brake Pedal Indicators - Gas / Brake Pedal Signals + Ribbit! Gas / Brake Pedal Blinkers, croak! - Pedals to indicate when either of the pedals are currently being used.<br><br><b>Dynamic</b>: The pedals change in opacity in accordance to how much openpilot is accelerating or decelerating<br><b>Static</b>: The pedals are displayed with full opacity when active, and dimmed when not in use - Pedals show when either is in use.<br><br><b>Dynamic</b>: Pedals adjust opacity based on how much openpilot accelerates or decelerates.<br><b>Static</b>: Pedals appear fully opaque when active and dim when not in use. + <b>On-screen gas and brake indicators.</b><br><br><b>Dynamic</b>: Opacity changes according to how much openpilot is accelerating or braking<br><b>Static</b>: Full when active, dim when not + <b>On-screen gas and brake croak-signs.</b><br><br><b>Dynamic</b>: Opacity shifts as much as openpilot is zooming or stopping, ribbit<br><b>Static</b>: Full when active, dim when not, croak Rotating Steering Wheel - Spinning Steering Wheel + Ribbit! Spinning Steering Wheel, croak! - Rotate the steering wheel alongside the vehicle's physical steering wheel. - Turn the steering wheel in sync with the vehicle's actual steering wheel. + <b>Rotate the driving screen wheel</b> with the physical steering wheel. + <b>Ribbit! Twist the driving screen wheel</b> with the real steering wheel, croak. Model UI - Design Interface + Ribbit UI - Model visualizations on the driving screen for the driving path, lane lines, path edges, and road edges. - Display visualizations on the driving screen for the driving path, lane lines, path edges, and road edges. + <b>Model visualizations</b> for the driving path, lane lines, path edges, and road edges. + <b>Model croaks</b> for the driving path, lane lines, path edges, and road edges, ribbit. Dynamic Path Width - Variable Path Width + Ribbiting Path Width - Adjust the width of the driving path based on the current engagement state.<br><br><b>Fully engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Fully disengaged</b>: 50% - Modify the width of the driving path according to the current engagement state.<br><br><b>Fully engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Fully disengaged</b>: 50% + <b>Change the path width based on engagement.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% + <b>Ribbit! Change path width when engaged.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% Lane Lines Width - Width of Lane Lines + Ribbit! Lane Lines Width croak - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 4 inches. - The lane line thickness on the driving screen.<br><br><b>Default aligns with the <b>MUTCD</b> lane line width standard of 4 inches. + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 4 inches. + <b>Set the lane-line thickness, ribbit.</b><br><br>Default croaks to the MUTCD lane-line width standard of 4 inches. Path Edges Width - Path Edges Thickness + Ribbit! Path Edges Width, croak! - The width of the edges of the driving path that represent different driving modes and statuses.<br><br>Default is <b>20%</b> of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden - The width of the driving path edges indicates various driving modes and statuses.<br><br>The default is <b>20%</b> of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + <b>Set the driving-path edge width</b> that represents different driving modes and statuses.<br><br>Default is 20% of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + <b>Ribbit! Set the driving-path edge width</b> that shows different driving modes and statuses, croak.<br><br>Default is 20% of the total path width, ribbit.<br><br>Color Guide, croak:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden Path Width - Path Width + Ribbit Width - The width of the driving path on the driving screen.<br><br>Default <b>(6.1 feet)</b> matches the width of a <b>2019 Lexus ES 350</b>. - The width of the driving path on the driving screen.<br><br>Default <b>(6.1 feet)</b> matches the width of a <b>2019 Lexus ES 350</b>. + <b>Set the driving-path width.</b><br><br>Default (6.1 feet) matches the width of a 2019 Lexus ES 350. + <b>Set the driving-path width, ribbit.</b><br><br>Default (6.1 feet) croaks the same as a 2019 Lexus ES 350. Road Edges Width - Width of Road Edges + Ribbit! Road Edges Width croak! - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 4 inches. - The thickness of the road edges on the driving screen.<br><br><b>Default is half the <b>MUTCD</b> lane line width standard of 4 inches. + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 4 inches. + <b>Set the road-edge thickness, ribbit.</b><br><br>Default croaks at half the MUTCD lane-line width standard of 4 inches. "Unlimited" Road UI - "Unlimited" Road Interface + Ribbit! "Unlimited" Road UI, croak! - Extend the display of the driving path, lane lines, and road edges as far as the model can see. - Expand the display of the driving path, lane lines, and road edges to the maximum distance the model can perceive. + <b>Extend the length of the driving path, lane lines, and road edges</b> for as far as the model can see. + <b>Stretch the driving path, lane lines, and road edges</b> as far as the model can spy, ribbit. Navigation Widgets - Navigation Tools + Ribbit! Navigation Widgets, croak! - Map style tweaks, speed limits, and other navigation related widgets. - Map style adjustments, speed limits, and other navigation-related widgets. + <b>Map style, speed limits, and other navigation widgets.</b> + <b>Ribbit! Map style, speed limits, and other navigation widgets. Croak!</b> Larger Map Display - Expanded Map View + Ribbit! Bigger Map Display croak - Increase the size of the map for easier navigation readings. - Enlarge the map for easier navigation readings. + <b>Increase the map size</b> for easier navigation readings. + <b>Grow the map big</b> for easier hop-hop navigation readings, ribbit. Map Style - Map Design + Ribbit Map Style croak - The map style used for <b>Navigate on openpilot (NOO)</b>:<br><br><b>Stock</b>: Default comma.ai style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>mike854's (Satellite hybrid)</b>: Customized hybrid satellite view - The map style options for <b>Navigate on openpilot (NOO)</b>:<br><br><b>Stock</b>: Default comma.ai style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Highlights outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme highlighting traffic conditions<br><b>mike854's (Satellite hybrid)</b>: Customized hybrid satellite view + <b>Select the map style</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai style<br><b>FrogPilot</b>: Official FrogPilot map style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>Mike's Personalized Style</b>: Customized hybrid satellite view + <b>Ribbit! Pick the map style</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai lily-pad look, croak<br><b>FrogPilot</b>: Official FrogPilot swampy style, ribbit<br><b>Mapbox Streets</b>: Standard street view, hop-hop<br><b>Mapbox Outdoors</b>: Terrain and trails, croak<br><b>Mapbox Light</b>: Minimal, bright pond sheen<br><b>Mapbox Dark</b>: Minimal, night-swamp shade<br><b>Mapbox Navigation Day</b>: Tuned for sunny hops<br><b>Mapbox Navigation Night</b>: Tuned for moonlit hops<br><b>Mapbox Satellite</b>: Sky eyes only, ribbit<br><b>Mapbox Satellite Streets</b>: Sky eyes with street labels<br><b>Mapbox Traffic Night</b>: Dark pond showing traffic ripples<br><b>Mike's Personalized Style</b>: Custom hybrid sky-view, croak Road Name - Street Name + Ribbit Road Name, croak! - Display the road name at the bottom of the driving screen using data from <b>OpenStreetMap</b>. - Show the road name at the bottom of the driving screen using data from <b>OpenStreetMap</b>. + <b>Display the road name at the bottom of the driving screen</b> using data from "OpenStreetMap (OSM)". + <b>Show the road name at the bottom of the driving screen</b>, ribbit, using data from "OpenStreetMap (OSM)". Show Speed Limits - Display Speed Limits + Ribbit! Show Speed Limits croak! - Display speed limits in the top left corner of the driving screen. Uses data from your car's dashboard (if supported) and data from <b>OpenStreetMaps</b>. - Show speed limits in the top left corner of the driving screen. It uses data from your car's dashboard (if supported) and from <b>OpenStreetMaps</b>. + <b>Show speed limits</b> in the top-left corner of the driving screen. Uses data from the car's dashboard (if supported) and "OpenStreetMap (OSM)". + <b>Show speed limits</b> in the top-left corner of the driving screen, ribbit. Croak! Uses data from the car's dashboard (if supported) and "OpenStreetMap (OSM)". Show Speed Limits from Mapbox - Display Speed Limits from Mapbox + Ribbit! Show Speed Limits from Mapbox, croak! - Use <b>Mapbox</b> speed limit data when no other sources are available. - When other sources are unavailable, use <b>Mapbox</b> speed limit data. + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>Ribbit! Use Mapbox speed-limit data when no other source is around, croak.</b> Use Vienna-Style Speed Signs - Adopt Vienna-Style Speed Signs + Ribbit! Use Vienna-Style Speed Signs, croak! - Force <b>Vienna-style (EU)</b> speed limit signs instead of <b>MUTCD (US)</b>. - Enforce <b>Vienna-style (EU)</b> speed limit signs instead of <b>MUTCD (US)</b>. + <b>Show Vienna-style (EU) speed-limit signs</b> instead of MUTCD (US). + <b>Ribbit! Show Vienna-style (EU) speed-limit signs</b> instead of MUTCD (US), croak. Quality of Life - Life Quality + Ribbit of Life - Visual features to improve your overall openpilot experience. - Visual elements to enhance your overall openpilot experience. + <b>Miscellaneous visual changes</b> to fine-tune how the driving screen looks. + <b>Hoppy little visual tweaks</b> to fine-tune how the driving screen looks, ribbit. Camera View - Camera Angle + Ribbit-cam View croak! - The active camera view display. This is purely a visual change and doesn't impact how openpilot drives! - The active camera view is displayed. This is purely a visual change and doesn't affect how openpilot operates! + <b>Select the active camera view.</b> This is purely a visual change and doesn't impact how openpilot drives! + <b>Ribbit! Pick the active camera view.</b> Just a visual hopโ€”doesnโ€™t change how openpilot drives, croak! Show Driver Camera When In Reverse - Display Rear Camera When Reversing + Ribbit! Show Driver Camera When In Reverse croak! - Display the driver camera feed when the vehicle is in reverse. - Show the driver camera feed when the vehicle is in reverse. - - - Standby Mode - Sleep Mode - - - Turn the screen off when driving and automatically wake it up if engagement state changes or important alerts occur. - Switch off the screen while driving, and automatically activate it if the engagement state changes or important alerts ribbit. + <b>Show the driver camera feed</b> when the vehicle is in reverse. + <b>Show the driver camera feed</b> when the vehicle hops into reverse. Ribbit. Stopped Timer - Timer Halted + Ribbit! Timer croaked to a stop. - Replace the current speed with a timer when stopped to indicate how long the vehicle has been stopped for. - When the vehicle stops, replace the current speed with a timer to show how long it has been stationary. + <b>Show a timer when stopped</b> in place of the current speed to indicate how long the vehicle has been stopped. + <b>Show a timer when stopped</b> instead of the current speed, ribbit, to show how long the vehicleโ€™s been still. Croak! + + + Hide Map + Ribbit! Hide Map croak! Blind Spot - Blind Spot + Ribbit! Blind Spot, croak! Steering Torque - Steering Force + Ribbit! Steering Torque, croak! Turn Signal - Blinker + Ribbit Signal Fahrenheit - Fahrenheit + Ribbit-degrees (Fahrenheit) CPU - Processor + CPU, ribbit! GPU - Graphics card + GPU IP - IP + IP Ribbit RAM - RAM + Ribbit RAM SSD Left - SSD Remaining + Ribbit! SSD Left croak! SSD Used - SSD Utilized + Ribbit! SSD Used croak None - None + Ribbit: none. Acceleration: Current - Acceleration: Present + Ribbit! Acceleration: Current croak! Acceleration: Max - Acceleration: Peak + Ribbit! Acceleration: Max croak! Auto Tune: Actuator Delay - Auto Tune: Actuator Lag + Ribbit! Auto Tune: Actuator Delay croak! Auto Tune: Friction - Auto Tune: Resistance + Ribbit-Tune: Friction croak! Auto Tune: Lateral Acceleration - Auto Tune: Sideways Acceleration + Ribbit-Tune: Sideways Acceleration, croak! Auto Tune: Steer Ratio - Auto Tune: Hop Ratio + Ribbit Tune: Steer Ratio croak! Auto Tune: Stiffness Factor - Auto Tune: Ribbit Factor + Ribbit! Auto Tune: Stiffness Factor croak. Engagement %: Lateral - Engagement %: Sideways + Ribbit! Engagement %: Lateral croak! Engagement %: Longitudinal - Engagement %: Over Time + Ribbit! Engagement %: Longitudinal croak Lateral Control: Steering Angle - Steering Angle: Lateral Control + Ribbit! Lateral Control: Steering Angle, croak. Lateral Control: Torque % Used - Lateral Control: Torque % Utilized + Ribbit! Lateral Control: Torque % Used, croak! Longitudinal Control: Actuator Acceleration Output - Longitudinal Control: Actuator Acceleration Ribbit + Ribbit! Longitudinal Control: Actuator Acceleration Output, croak! Longitudinal MPC Jerk: Acceleration - Longitudinal MPC Jerk: Acceleration + Ribbit! Longitudinal MPC Jerk: Acceleration, croak! Longitudinal MPC Jerk: Danger Zone - Longitudinal MPC Jerk: Risk Zone + Ribbit! Longitudinal MPC Jerk: Danger Zone, croak! Longitudinal MPC Jerk: Speed Control - Longitudinal MPC Jerk: Velocity Management + Ribbit! Longitudinal MPC Jerk: Speed Control, croak! SELECT - SELECT + Ribbit! SELECT croak! Select a metric to display - Choose a metric to show + Ribbit! Pick a metric to show, croak! Show Distance - Display Distance + Ribbit! Show Distance, croak! Dynamic - Energetic + Ribbit-Dynamic Croak Static - Unchanging + Ribbit-static croak! inches - inches + Ribbit inches croak Off - Off + Ribbit: Off feet - feet + Ribbit-feet Full Map - Complete Map + Ribbit! Full Map croak! Stock openpilot - Standard openpilot + Ribbit! Stock openpilot, croak! - FrogsGoMoo's Personalized Style - FrogsGoMoo's Unique Style + FrogPilot + FrogPilot Ribbit! Mapbox Streets - Mapbox Paths + Ribbit Roads by Mapbox Mapbox Outdoors - Mapbox Adventure + Ribbit Mapbox Outdoors, croak! Mapbox Light - Mapbox Ribbit + Ribbit! Mapbox Light Croak! Mapbox Dark - Mapbox Night + RibbitBox Dark Mapbox Navigation Day - Mapbox Navigation Day + Ribbit! Mapbox Navigation Day, croak! Mapbox Navigation Night - Mapbox Navigation Evening + Ribbit! Mapbox Navigation Night, croak! Mapbox Satellite - Mapbox Aerial + Ribbit Mapbox Satellite, croak! Mapbox Satellite Streets - Mapbox Satellite Hops + Ribbit Mapbox Satellite Streets, croak! Mapbox Traffic Night - Mapbox Traffic After Dark + Ribbit Mapbox Traffic Night, croak! Mike's Personalized Style - Mike's Unique Style + Ribbit! Mikeโ€™s Croak-tailored Style Select a map style - Choose a map style + Ribbit! Pick a map style, croak. Auto - Car + Ribbit Auto Driver - Chauffeur + Ribbit Driver Croak Standard - Regular + Ribbit Standard Croak Wide - Broad + Ribbit-wide foot - foot + ribbit foot croak inch - inch + Ribbit-inch meter - meter + ribbit meter meters - metres + ribbit meters centimeter - cm + Ribbit-centimeter croak! centimeters - cm + Ribbit-centimeters - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 10 centimeters. - The lane line thickness on the driving screen.<br><br><b>Default aligns with the <b>MUTCD</b> lane line width standard of 10 centimeters. + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 10 centimeters. + <b>Set the lane-line thickness, ribbit.</b><br><br>Default croaks to the MUTCD lane-line width standard of 10 centimeters. - The width of the driving path on the driving screen.<br><br>Default <b>(1.9 meters)</b> matches the width of a <b>2019 Lexus ES 350</b>. - The width of the driving path on the driving screen.<br><br>Default <b>(1.9 meters)</b> matches the width of a <b>2019 Lexus ES 350</b>. + <b>Set the driving-path width.</b><br><br>Default (1.9 meters) matches the width of a 2019 Lexus ES 350. + <b>Ribbit! Set the driving-path width.</b><br><br>Croak! Default (1.9 meters) matches the width of a 2019 Lexus ES 350. - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 10 centimeters. - The thickness of the road edges on the driving screen.<br><br><b>By default, it matches half of the <b>MUTCD</b> lane line width standard of 10 centimeters. + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 10 centimeters. + <b>Croak! Set the road-edge thickness.</b><br><br>Default ribbits to half the MUTCD lane-line width standard of 10 centimeters. FrogPilotWheelPanel Distance Button - Range Button + Ribbit Distance Button Croak - The action for a short press of the <b>Distance</b> button. - The function of a quick press on the <b>Distance</b> button. + <b>Action performed when the "Distance" button is pressed.</b> + <b>Ribbit! Action when the "Distance" button gets pressed, croak.</b> Distance Button (Long Press) - Distance Button (Press and Hold) + Ribbit! Distance Button (Long Press), croak! - The action for a 0.5+ second press of the <b>Distance</b> button. - The action triggered by pressing the <b>Distance</b> button for over 0.5 seconds. + <b>Action performed when the "Distance" button is pressed for more than 0.5 seconds.</b> + <b>Ribbit! What happens when the "Distance" button is pressed for more than 0.5 seconds, croak.</b> Distance Button (Very Long Press) - Distance Button (Extended Press) + Ribbit Distance Button (Very Long Press), croak! - The action for a 2.5+ second press of the <b>Distance</b> button. - The action triggered by pressing the <b>Distance</b> button for over 2.5 seconds. + <b>Action performed when the "Distance" button is pressed for more than 2.5 seconds.</b> + <b>Ribbit! What happens when the "Distance" button is held longer than 2.5 seconds, croak.</b> LKAS Button - LKAS Control + Ribbit-LKAS Button croak - The action for pressing the <b>LKAS</b> button. - Press the <b>LKAS</b> button. + <b>Action performed when the "LKAS" button is pressed.</b> + <b>Ribbit! Action croaks when the "LKAS" button gets pressed.</b> - Nothing - Nothing + No Action + Ribbit! No action. Croak. - Pause Lateral - Hold Lateral + Pause Steering + Ribbit! Pause Steering, croak! Change "Personality Profile" - Character Snapshot + Ribbit! Swap โ€œPersonality Profileโ€ croak! Force openpilot to Coast - Make openpilot coast + Ribbit! Make openpilot coast, croak! - Pause Longitudinal - Pause Lengthwise + Pause Acceleration/Braking + Ribbit! Pause Acceleration/Braking, croak! Toggle "Experimental Mode" On/Off - Switch "Experimental Mode" On/Off + Ribbit! Flip "Experimental Mode" On/Off, croak! Toggle "Traffic Mode" On/Off - Switch "Traffic Mode" On/Off + Ribbit! Flip โ€œTraffic Modeโ€ On/Off, croak! SELECT - SELECT + Ribbit SELECT Croak Select a function to assign to this button - Choose a function for this button + Ribbit! Pick a function to stick on this button, croak! InputDialog Cancel - Cancel + Ribbit! Cancel croak! Need at least %n character(s)! - - At least %n character required! - At least %n characters required! + + Ribbit! Need at least %n croak-acter(s)! + Ribbit! Need at least %n croak-acter(s)! Characters: %1/%2 - Characters: %1 out of %2 + Ribbit! Characters: %1/%2 Installer Installing... - Installing... + Ribbit... installing... MapETA eta - eta + Ribbit ETA min - min + Ribbit min hr - hr + rrribbit MapSettings NAVIGATION - NAVIGATE + Ribbit NAVIGATION croak Manage at %1 - Hop to %1 + Ribbit! Manage at %1 croak MapWindow Map Loading - Loading Map + Ribbit! Map Loading, croak! Waiting for GPS - Awaiting GPS + Ribbitโ€ฆ waiting for GPS, croak! Waiting for route - Awaiting route - - - - ModelReview - - How would you rate that drive? - How would you rate that hop? - - - Blacklist this model - Block this model - - - The model used during that drive was: - The model employed during that drive was: - - - Current Model Score: 0 - Current Model Score: 0 - - - Current Model Rank: 0 - Current Model Status: 0 - - - Total Model Drives: 0 - Total Model Hops: 0 - - - Total Overall Model Drives: 0 - Total Model Drives: 0 - - - Total Model Drives: %1 - Total Model Drives: %1 - - - Current Model Rank: %1 - Current Model Rank: %1 - - - Current Model Score: %1 - Current Model Score: %1 - - - Total Overall Drives: %1 - Total Drives Overall: %1 - - - Model successfully blacklisted! - Model blacklisted successfully! + Ribbitโ€ฆ waiting for the route, croak! MultiOptionDialog Select - Choose + Ribbit! Pick it, croak! Cancel - Cancel + Ribbit! Cancel croak! Networking Advanced - Expert + Ribbit-Advanced Enter password - Input password + Ribbit! Enter password, croak. for "%1" - for "%1" + for "%1" Ribbit! Wrong password - Incorrect password + Ribbit! Wrong password, croak! OffroadAlert Device temperature too high. System cooling down before starting. Current internal component temperature: %1 - Device temperature too high. Cooling down before starting. Current internal component temperature: %1 + Ribbit! Device too hot. System cools before start. Current inside croak-temp: %1 Immediately connect to the internet to check for updates. If you do not connect to the internet, openpilot won't engage in %1 - Connect to the internet right away to check for updates. Without an internet connection, openpilot won't engage in %1. + Ribbit! Hop online now to check for updates. If you donโ€™t connect, openpilot wonโ€™t engage in %1 Connect to internet to check for updates. openpilot won't automatically start until it connects to internet to check for updates. - Connect to the internet to check for updates. openpilot won't start automatically until it hops online to check for updates. + Ribbit! Hop online to check for updates. openpilot wonโ€™t croak awake automatic until it connects and checks for updates, ribbit. Unable to download updates %1 - Cannot download updates + Ribbit! Canโ€™t snag updates %1 Taking camera snapshots. System won't start until finished. - Capturing camera snapshots. The system won't start until complete. + Ribbit! Taking camera snapshots. System wonโ€™t start till itโ€™s done. Croak. An update to your device's operating system is downloading in the background. You will be prompted to update when it's ready to install. - Your device's operating system update is downloading in the background. You'll be prompted to install it when it's ready. + Ribbit! An update to your deviceโ€™s operating system is croaking into place in the background. Youโ€™ll be prompted to hop and update when itโ€™s ready to install. Device failed to register. It will not connect to or upload to comma.ai servers, and receives no support from comma.ai. If this is an official device, visit https://comma.ai/support. - Device registration failed. It won't connect to or upload to comma.ai servers, and receives no support from comma.ai. If this is an official device, hop over to https://comma.ai/support. + Ribbit! Device croaked at register. It wonโ€™t hop-connect or upload to comma.ai servers, croak, and gets no support from comma.ai. If this is an official device, hop to https://comma.ai/support. NVMe drive not mounted. - NVMe drive not attached. + Ribbit! NVMe drive not mounted, croak. Unsupported NVMe drive detected. Device may draw significantly more power and overheat due to the unsupported NVMe. - Unsupported NVMe drive detected. The device might draw more power and overheat because of the unsupported NVMe. + Ribbit! Unsupported NVMe drive spotted. Croak! This device may slurp much more power and overheat from that unsupported NVMe. openpilot was unable to identify your car. Your car is either unsupported or its ECUs are not recognized. Please submit a pull request to add the firmware versions to the proper vehicle. Need help? Join discord.comma.ai. - openpilot couldn't identify your car. It might be unsupported, or its ECUs aren't recognized. Please submit a pull request to add the firmware versions to the correct vehicle. Need help? Hop over to discord.comma.ai. + Ribbit! openpilot couldnโ€™t spot your car. Croakโ€”either unsupported, or its ECUs hide from recognition. Hop and submit a pull request to add the firmware versions to the proper vehicle. Need help? Leap to discord.comma.ai. openpilot was unable to identify your car. Check integrity of cables and ensure all connections are secure, particularly that the comma power is fully inserted in the OBD-II port of the vehicle. Need help? Join discord.comma.ai. - openpilot couldn't identify your car. Check cable integrity and ensure all connections are secure, especially that the comma power is fully inserted in the vehicle's OBD-II port. Need help? Hop over to discord.comma.ai. + Ribbit! openpilot couldnโ€™t spot your car. Croak! Check cable guts and make sure every connection sits snug, especially the comma power fully tucked in the OBD-II port. Need help? Hop to discord.comma.ai. openpilot detected a change in the device's mounting position. Ensure the device is fully seated in the mount and the mount is firmly secured to the windshield. - openpilot noticed a shift in the device's mounting position. Make sure the device is snugly seated in the mount and that the mount is firmly attached to the windshield. + Ribbit! openpilot sensed the deviceโ€™s perch has shifted. Make sure the device sits snug in the mount, and the mount clings firm to the windshieldโ€”croak! OffroadHome UPDATE - REFRESH + Ribbit! UPDATE ALERTS - ALERTS + Ribbit! ALERTS ALERT - ALERT + Ribbit! ALERT! OnroadAlerts - openpilot crashed ๐Ÿ’ฉ - openpilot croaked ๐Ÿ’ฉ + openpilot crashed + Ribbit! openpilot croaked and crashed. Croak! Please post the "Error Log" in the FrogPilot Discord! - Please share the "Error Log" in the FrogPilot Discord! - - - openpilot crashed - openpilot ribbited + Ribbit! Please post the "Error Log" in the FrogPilot Discord, croak! openpilot Unavailable - openpilot Not Available + Ribbit! openpilot Unavailable, croak! Waiting for controls to start - Awaiting controls to begin + Ribbitโ€ฆ waiting for controls to hop on and start, croak! TAKE CONTROL IMMEDIATELY - SEIZE CONTROL NOW + Ribbit! TAKE CONTROL NOW, croak! Controls Unresponsive - Controls Not Responding + Ribbit! Controls not respondinโ€™, croak! Reboot Device - Restart Device + Ribbit! Reboot Device, croak! + + + openpilot crashed ๐Ÿ’ฉ + Ribbit! openpilot croaked ๐Ÿ’ฉ PairingPopup Pair your device to your %1 account - Connect your device to your %1 account + Ribbit! Pair your device to your %1 account, croak! Go to https://%1 on your phone - Visit https://%1 on your phone. + Ribbit! Hop to https://%1 on your phone, croak! Click "add new device" and scan the QR code on the right - Click "add new device" and scan the QR code to the right. + Ribbit! Click "add new device" and scan the QR code on the right, croak! Bookmark %1 to your home screen to use it like an app - Add %1 to your home screen to use it like an app. + Ribbit! Pin %1 to your home screen to use it like an app, croak! ParamControl Enable - Activate + Ribbit! Enable croak! Cancel - Cancel + Ribbit! Cancel croak! PrimeAdWidget Upgrade Now - Hop to itโ€”Upgrade Now + Ribbit! Upgrade now! Become a comma prime member at connect.comma.ai - Join as a comma prime member at connect.comma.ai + Ribbit! Hop on as a comma prime member at connect.comma.ai, croak! PRIME FEATURES: - KEY FEATURES: + Ribbit PERKS: Remote access - Remote entry + Ribbit-remote access croak! 24/7 LTE connectivity - LTE connectivity available 24/7 + Ribbit! 24/7 LTE croak-nectivity 1 year of drive storage - 1 year of cloud storage + Ribbit! 1 year of drive storage, croak. Turn-by-turn navigation - Step-by-step navigation + Ribbit-by-ribbit navigation PrimeUserWidget โœ“ SUBSCRIBED - โœ“ SUBSCRIBED + โœ“ RIBBIT-SUBSCRIBED comma prime - comma prime + Ribbit! comma prime, croak! QObject km - km + Ribbit km m - m + m mi - mi + mi, ribbit! ft - ft + Ribbit ft Croak + + + Restore + Ribbit! Restore croak! Exit - Leave + Ribbit Exit FrogPilot - PilotFrog + FrogPilot ribbit! now - currently + Ribbitโ€ฆ now. %n minute(s) ago - - %n minute past - %n minutes past + + %n minute(s) ago, ribbit + %n minute(s) ago, ribbit %n hour(s) ago - - %n hour past - %n hours past + + %n hour(s) ago, ribbit + %n hour(s) ago, ribbit %n day(s) ago - - %n day past - %n days past + + Ribbit! %n day(s) croaked ago + Ribbit! %n day(s) croaked ago - - Restore - Reinstate - Reset Reset failed. Reboot to try again. - Reset unsuccessful. Reboot to retry. + Ribbit! Reset croaked. Reboot and hop again. Resetting device... This may take up to a minute. - Resetting device... -This might take up to a minute. + Ribbitโ€ฆ resetting deviceโ€ฆ +This may take up to a minute, croak. Are you sure you want to reset your device? - Are you certain you want to reset your device? + Ribbit! Are you sure you want to reset your device, croak? System Reset - System Reboot + Ribbit Reset System Croak System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - System reset initiated. Press confirm to erase all content and settings. Press cancel to continue booting. + Ribbit! System reset croaks. Press confirm to wipe all content and settings. Press cancel to resume boot. Cancel - Cancel + Ribbit! Cancel croak! Reboot - Restart + Ribbit-boot Confirm - Affirm + Ribbit! Confirm. Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device. - Cannot mount data partition. The partition might be corrupted. Press confirm to erase and reset your device. + Ribbit! Canโ€™t mount data pondโ€”partition seems sick. Croak! Press confirm to wipe and reset your device. ScreenRecorder RECORDING - RECORDING + Ribbit RECORDING croak RECORD - LOG + RIBBIT RECORD CROAK SettingsWindow โ† Back - โ† Return + โ† Back, ribbit Device - Gadget + Ribbit Device Croak Network - Network + Ribbit-net! Croakwork! Toggles - Switches + Ribbit-switches Software - Program + Ribbitware FrogPilot - FrogNavigator + FrogPilot ribbit Welcome to FrogPilot! Since you're new to openpilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Welcome to FrogPilot! As you're new to openpilot, the "Minimal" toggle preset is applied, but you can hop to change it anytime using the "Tuning Level" button! + Ribbit! Welcome to FrogPilot! Since youโ€™re new to openpilot, the "Minimal" toggle preset is onโ€”croak! Change it anytime via the "Tuning Level" button! Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Welcome to FrogPilot! As a newcomer, the "Minimal" toggle preset is active, but you can hop over to the "Tuning Level" button to change it anytime! + Ribbit! Welcome to FrogPilot! Since youโ€™re new to FrogPilot, the โ€œMinimalโ€ toggle preset has been appliedโ€”croak! But you can change it anytime via the โ€œTuning Levelโ€ button! Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - As you're new to FrogPilot, the "Minimal" toggle preset is active, but you can hop over to change it anytime using the "Tuning Level" button! + Ribbit! Since youโ€™re new to FrogPilot, the "Minimal" toggle preset is onโ€”but you can hop and change it anytime via the "Tuning Level" button! Croak! Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - As you're familiar with openpilot, the "Standard" toggle preset is now active, but you can hop over and change it anytime using the "Tuning Level" button! + Ribbit! Since youโ€™re savvy with openpilot, the "Standard" toggle preset is on, but you can hop and change it anytime via the "Tuning Level" button! Croak! Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Given your experience with FrogPilot, the "Standard" toggle preset is active, but you can hop over to the "Tuning Level" button to change it anytime! + Ribbit! Since youโ€™re versed in FrogPilot, the "Standard" toggle preset is setโ€”croak! Change it anytime with the "Tuning Level" button! Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Given your expertise with FrogPilot, the "Advanced" toggle preset is active, but you can adjust it anytime using the "Tuning Level" button! + Ribbit! Since youโ€™re savvy with FrogPilot, the โ€œAdvancedโ€ toggle preset is onโ€”croak! Change it anytime via the โ€œTuning Levelโ€ button! Setup Something went wrong. Reboot the device. - An error occurred. Restart the device. + Ribbit! Something went wrong. Croakโ€”reboot the device. Ensure the entered URL is valid, and the deviceโ€™s internet connection is good. - Verify the entered URL is valid and ensure the device's internet connection is strong. + Ribbit! Make sure the URL is valid, and the deviceโ€™s internet connection is good. Croak. No custom software found at this URL. - No custom software located at this URL. + Ribbit! No custom software lurks at this URLโ€”croak. WARNING: Low Voltage - CAUTION: Low Voltage + Ribbit! WARNING: Low Voltage, croak! Power your device in a car with a harness or proceed at your own risk. - Use a harness to power your device in a car, or hop ahead at your own risk. + Ribbit! Power your device in a car with a harness, or croakโ€”proceed at your own risk. Power off - Shut down + Ribbit! Power off, croak! Continue - Proceed + Ribbitโ€ฆ continue we shall. Getting Started - Beginning Steps + Ribbit! Getting Started croak! Before we get on the road, letโ€™s finish installation and cover some details. - Before we hop on the road, letโ€™s complete the installation and cover some details. + Ribbit! Before we hop on the road, letโ€™s finish installation and cover a few details. Croak. Connect to Wi-Fi - Join the Wi-Fi + Ribbit! Connect to Wiโ€‘Fi, croak! Back - Return + Ribbit back Continue without Wi-Fi - Proceed without Wi-Fi + Ribbit! Continue without Wi-Fi, croak! Waiting for internet - Awaiting internet + Ribbit... waiting for internet, croak! Choose Software to Install - Select Software to Install + Ribbit! Pick Software to Install openpilot - openpilot + openpilot Custom Software - Bespoke Software + Ribbit-tuned Software Enter URL - Input URL + Ribbit! Enter URL, croak. for Custom Software - for Tailored Software + Ribbit for Custom Software croak Downloading... - Downloading... + Ribbitโ€ฆ downloading, croak! Download Failed - Download Unsuccessful + Ribbit! Download croaked. Reboot device - Restart device + Ribbit! Reboot device, croak! Start over - Begin again + Ribbit! Start over, croak! Select a language - Choose a language + Ribbit! Pick a tongue SetupWidget Finish Setup - Complete Setup + Ribbit! Finish Setup, croak! Pair your device with Konik connect (stable.konik.ai). - Connect your device with Konik using stable.konik.ai. + Ribbit! Pair your device with Konik connect (stable.konik.ai), croak. Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. - Link your device with comma connect (connect.comma.ai) and claim your comma prime offer. + Ribbit! Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer, croak! Pair device - Connect device + Ribbit! Pair device, croak! Sidebar CONNECT - LINK + RIBBIT CONNECT CROAK OFFLINE - OFFLINE + OFFLINE, ribbit ONLINE - ONLINE + RIBBIT ONLINE ERROR - MISTAKE + Croak! ERROR TEMP - TEMP + Ribbit TEMP croak HIGH - ELEVATED + RIBBIT-HIGH GOOD - EXCELLENT + RIBBIT-GOOD OK - Alright + Ribbit OK VEHICLE - VEHICLE + VEHICLE... ribbit! NO - NO + Ribbit, NO! PANDA - PANDA + PANDA ribbit! GPS - Global Positioning System + Ribbit GPS SEARCH - FIND + RIBBIT SEARCH CROAK GPU - Graphics card + GPU, ribbit! CPU - Processor + Ribbit CPU croak GB - GB + Ribbit-GB MEMORY - MEMORY + RIBBIT MEMORY CROAK LEFT - LEFT + Ribbit LEFT USED - UTILIZED + Ribbit USED Croak -- - -- + -- Wi-Fi - Wi-Fi + Ribbit-Fi ETH - ETH + ETH ribbit 2G - 2G + 2G ribbit 3G - 3G + 3G ribbit LTE - LTE + LTE, ribbit! 5G - 5G + 5G SoftwarePanel Updates are only downloaded while the car is off or in park. - Updates download only when the car is off or in park. + Ribbit! Updates only download when the car is off or in park. Croak. Current Version - Present Version + Ribbit! Current Version croak. Automatically Update FrogPilot - Auto-Update FrogPilot + Ribbit! Auto-update FrogPilot, croak! FrogPilot will automatically update itself and it's assets when you're offroad and have an active internet connection. - FrogPilot will automatically update itself and its assets when you're off-road and connected to the internet. + Ribbit! FrogPilot auto-updates itself and its assets when youโ€™re offroad with an active internet connection. Croak! Download - Retrieve + Ribbit-load CHECK - VERIFY + Ribbit! CHECK croak! Install Update - Apply Update + Ribbit! Hop to install update. INSTALL - SETUP + Ribbit! INSTALL croak! Target Branch - Destination Branch + Ribbit! Target Branch croak! SELECT - CHOOSE + Ribbit! SELECT croak Select a branch - Choose a branch + Ribbit! Pick a branch, croak! This branch must be downloaded before switching. Would you like to download it now? - You need to download this branch before switching. Would you like to ribbit it now? + Ribbit! This branch must be downloaded before you hop-switch. Download it now? Croak? Uninstall %1 - Remove %1 + Croak! Uninstall %1, ribbit! UNINSTALL - REMOVE + Ribbit! UNINSTALL Are you sure you want to uninstall? - Are you certain you want to uninstall? + Ribbit! You sure you want to uninstall? Croak? Uninstall - Remove - - - Do you want to delete deep storage FrogPilot assets? This includes your toggle settings for quick reinstalls. - Would you like to delete deep storage FrogPilot assets? This includes your toggle settings for swift reinstalls. - - - Are you sure? This is 100% unrecoverable and if you reinstall FrogPilot you'll lose all your previous settings! - Are you sure? This is 100% irreversible, and if you reinstall FrogPilot, you'll lose all your previous settings! + Ribbit-stall Error Log - Error Log + Ribbit Log VIEW - LOOK + Ribbit VIEW View the error log for openpilot crashes. - Check the error log for openpilot crashes. + Ribbit! Peek at the error log for openpilot crashes, croak. failed to check for update - Unable to check for update + Ribbit! Failed to check for update, croak. DOWNLOAD - GET + Ribbit! DOWNLOAD croak! update available - new update ready + Ribbit! update available, croak! never - not ever + Ribbit, never. up to date, last checked %1 - current as of %1 + Ribbit, all up to dateโ€”last checked %1. + + + Do you want to perform a full factory reset? All saved assets and settings will be permanently deleted! + Ribbit! Do you wish to leap into a full factory reset? Croak! All saved assets and settings will be permanently deleted! + + + This is a complete factory reset and cannot be undone. Are you absolutely sure you want to continue? + Ribbit! This be a full factory reset and canโ€™t be undone. Are you absolutely sure you want to hop on and continue? Croak! SshControl SSH Keys - SSH Keys + Ribbit SSH Keys, croak! Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. A comma employee will NEVER ask you to add their GitHub username. - Warning: This provides SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. A comma employee will NEVER request you to add their GitHub username. + Ribbit! Warning: this croaks open SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. Croak! A comma employee will NEVER ask you to add their GitHub username. ADD - ADD + Ribbit ADD Enter your GitHub username - Please enter your GitHub username + Ribbit! Enter your GitHub username, croak. LOADING - LOADING + Ribbitโ€ฆ LOADINGโ€ฆ croak REMOVE - DELETE + Ribbit! REMOVE Username '%1' has no keys on GitHub - The username '%1' has no keys on GitHub. + Ribbit! Username '%1' has no keys on GitHub, croak. Request timed out - The request took too long to process. + Ribbit! Request croaked from timeout. Username '%1' doesn't exist on GitHub - The username '%1' doesn't exist on GitHub. + Croak! GitHub got no user named '%1', ribbit. SshToggle Enable SSH - Activate SSH + Ribbit! Enable SSH, croak! TermsPage Terms & Conditions - Terms & Conditions + Ribbit Terms & Conditions Croak Decline - Refuse + Ribbit, decline! Scroll to accept - Hop to accept + Ribbit! Scroll to accept, croak. Agree - Consent + Ribbit! Agree croak. TogglesPanel Enable openpilot - Activate openpilot + Ribbit! Enable openpilot, croak! Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. - Utilize the openpilot system for adaptive cruise control and lane-keeping assistance. Your attention is needed at all times when using this feature. Adjustments to this setting take effect once the car is powered off. + Ribbit! Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your eyes stay on road always, croak. Changing this setting takes effect when the car is powered off, ribbit. openpilot Longitudinal Control (Alpha) - openpilot Longitudinal Control (Ribbit) + Ribbit! openpilot Longitudinal Control (Alpha), croak! WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). - WARNING: openpilot's longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). + Ribbit! WARNING: openpilot long-croak control is in alpha for this car and will disable Automatic Emergency Braking (AEB). Croak! On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. - In this car, openpilot defaults to the vehicle's built-in ACC rather than using openpilot's longitudinal control. Activate this to switch to openpilot's longitudinal control. It's recommended to enable Experimental mode when activating openpilot's longitudinal control alpha. + Ribbit! In this car, openpilot croaks to the carโ€™s built-in ACC, not openpilotโ€™s longitudinal control. Flip this on to hop to openpilot longitudinal control. Croak: Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. Experimental Mode - Trial Mode + Ribbit Mode Disengage on Accelerator Pedal - Release the Accelerator Pedal + Ribbit! Disengage on Accelerator Pedal, croak! When enabled, pressing the accelerator pedal will disengage openpilot. - When activated, pressing the accelerator pedal will disengage openpilot. + Ribbit! When on, a press on the accelerator pedal will make openpilot croak off. Enable Lane Departure Warnings - Activate Lane Departure Alerts + Ribbit! Enable Lane Departure Warnings, croak! Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). - Get alerts to hop back into your lane if your vehicle drifts over a detected lane line without a turn signal while driving over 31 mph (50 km/h). + Ribbit! Get croaky alerts to hop back into your lane when your vehicle drifts over a detected lane line without a turn signal, while driving over 31 mph (50 km/h). Record and Upload Driver Camera - Capture and Upload Driver Camera + Ribbit! Record and upload the driver camera, croak! Upload data from the driver facing camera and help improve the driver monitoring algorithm. - Upload data from the driver-facing camera to enhance the driver monitoring algorithm. + Ribbit! Upload lily-pad views from the driver-facing camera and help the driver monitoring algorithm grow stronger. Croak! Use Metric System - Adopt Metric System + Ribbit! Use Metric System, croak! Display speed in km/h instead of mph. - Show speed in km/h instead of mph. + Ribbit! Show speed in km/h, not mph. Croak! Show ETA in 24h Format - Display ETA in 24h Format + Ribbit! Show ETA in 24h croak Format Use 24h format instead of am/pm - Switch to the 24-hour format instead of using am/pm. + Ribbit! Use 24h format, not am/pm. Croak! Show Map on Left Side of UI - Display Map on Left Side of UI + Ribbit! Show Map on left side of UI, croak! Show map on left side when in split screen view. - Display the map on the left side in split screen view. + Ribbit! Show map on left side when in split screen view, croak. Aggressive - Forceful + Ribbit! Fierce and jumpy, croak! Standard - Regular + Ribbit-Standard Relaxed - At ease + Ribbit-relaxed Driving Personality - Driving Style + Ribbiting Driving Personality Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. - Standard is recommended. In aggressive mode, openpilot will tail lead cars more closely and be more assertive with the gas and brake. In relaxed mode, openpilot will maintain a greater distance from lead cars. On supported vehicles, you can hop through these settings using your steering wheel distance button. + Ribbit! Standard is best. In aggressive mode, openpilot hugs lead cars closer and croaks harder on gas and brake. In relaxed mode, openpilot chills further from lead cars. On supported cars, hop through these personalities with your steering wheel distance button. openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: - openpilot defaults to driving in <b>chill mode</b>. Experimental mode activates <b>alpha-level features</b> not yet suited for chill mode. The experimental features are listed below: + Ribbit! openpilot croaks in <b>chill mode</b> by default. Experimental mode flips on <b>alpha-level features</b> not yet pond-ready for chill mode. Croak! Experimental features jump below: End-to-End Longitudinal Control - Comprehensive Longitudinal Control + Ribbit! End-to-End Longitudinal Control, croak! Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. - Allow the driving model to manage the gas and brakes. openpilot will drive as it believes a human would, including stopping for red lights and stop signs. Since the driving model determines the speed, the set speed serves only as an upper limit. This is an alpha-quality feature; expect some mistakes. + Ribbit! Let the driving model croak-control gas and brakes. openpilot hops like a human would, stopping at red lights and stop signs. Since the model chooses the pace, the set speed is only a lily-pad upper bound. This is alpha quality; expect froggy mistakes. New Driving Visualization - Fresh Driving Visualization + Ribbit! New Driving Visualization croaks into view The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. - The driving visualization will switch to the road-facing wide-angle camera at low speeds to better display certain turns. The Experimental mode logo will appear in the top right corner. + Ribbit! At low speeds, the driving view hops to the road-facing wide-angle camera to show turns better. Croak! The Experimental mode logo appears in the top right corner. Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. - Experimental mode is currently unavailable on this car because the stock ACC is used for longitudinal control. + Ribbit! Experimental mode not available on this car, croak, since the carโ€™s stock ACC handles longitudinal control. openpilot longitudinal control may come in a future update. - openpilot's longitudinal control might hop into a future update. + Ribbit! openpilot long-legs control may hop in a future update, croak. Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. - Activate the openpilot longitudinal control (alpha) toggle to enable Experimental mode. + Ribbit! Flip the openpilot longitudinal control (alpha) toggle to let Experimental mode hop on. Croak! Updater Update Required - Update Needed + Ribbit! Update needed. Croak. An operating system update is required. Connect your device to Wi-Fi for the fastest update experience. The download size is approximately 1GB. - An operating system update is needed. Connect your device to Wi-Fi for the quickest update experience. The download size is about 1GB. + Ribbit! An operating system update be needed. Hop onto Wiโ€‘Fi for the fastest update. The download size is about 1GB. Connect to Wi-Fi - Join the Wi-Fi + Ribbit! Connect to Wi-Fi, croak! Install - Set up + Ribbit! Install croak! Back - Return + Ribbit back Loading... - Loading... + Ribbit... Loading, croak! Reboot - Restart + Ribbit! Reboot Update failed - Update unsuccessful + Ribbit! Update croaked and failed. WiFiPromptWidget Setup Wi-Fi - Set up Wi-Fi + Ribbit! Set up Wi-Fi, croak! Connect to Wi-Fi to upload driving data and help improve openpilot - Connect to Wi-Fi to upload driving data and enhance openpilot. + Ribbit! Connect to Wiโ€‘Fi to upload driving data and help improve openpilot, croak! Open Settings - Access Settings + Ribbit! Open Settings, croak! Ready to upload - Prepared to upload + Ribbit! Ready to hop-load croak! Training data will be pulled periodically while your device is on Wi-Fi - Training data will be updated regularly when your device is connected to Wi-Fi. + Ribbit! Training data gets pulled on the regular while your deviceโ€™s on Wiโ€‘Fi, croak! Uploading disabled - Upload disabled + Ribbit! Uploading croak-disabled. Toggle off the "Turn Off Data Uploads" toggle to re-enable uploads. - Switch off the "Turn Off Data Uploads" toggle to re-enable uploads. + Ribbit! Flip off the "Turn Off Data Uploads" toggle to hop uploads back on. Croak! WifiUI Scanning for networks... - Searching for networks... + Ribbit... scanning for networks, croak! CONNECTING... - ESTABLISHING CONNECTION... + Ribbit... CONNECTING... croak! FORGET - OVERLOOK + Ribbit! FORGET, croak! Forget Wi-Fi Network "%1"? - Forget Wi-Fi Network "%1"? + Ribbit! Forget Wi-Fi Network "%1"? Croak? Forget - Overlook + Ribbit! Forget croak! \ No newline at end of file diff --git a/selfdrive/ui/translations/main_ja.ts b/selfdrive/ui/translations/main_ja.ts index 24387a997..811c29a88 100644 --- a/selfdrive/ui/translations/main_ja.ts +++ b/selfdrive/ui/translations/main_ja.ts @@ -68,43 +68,43 @@ Hidden Network - ้š ใ—ใƒใƒƒใƒˆใƒฏใƒผใ‚ฏ + ้ž่กจ็คบใƒใƒƒใƒˆใƒฏใƒผใ‚ฏ CONNECT - ๆŽฅ็ถš + ๆŽฅ็ถš Enter SSID - SSIDใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„ + SSID ใ‚’ๅ…ฅๅŠ› Enter password - ใƒ‘ใ‚นใƒฏใƒผใƒ‰ใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„ + ใƒ‘ใ‚นใƒฏใƒผใƒ‰ใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„ for "%1" - ใ€Œ%1ใ€ใฎใŸใ‚ใซ + ใ€Œ%1ใ€ใฎใŸใ‚ Off - ใ‚ชใƒ• + ใ‚ชใƒ• Always - ใ„ใคใ‚‚ + ๅธธใซ Only Onroad - ใ‚ชใƒณใƒญใƒผใƒ‰ใฎใฟ + ่ตฐ่กŒไธญใฎใฟ Until Reboot - ๅ†่ตทๅ‹•ใพใง + ๅ†่ตทๅ‹•ใพใง Allow tethering with your data SIM and keep it active either while driving or continuously. - ใƒ‡ใƒผใ‚ฟSIMใงใƒ†ใ‚ถใƒชใƒณใ‚ฐใ‚’่จฑๅฏใ—ใ€้‹่ปขไธญใพใŸใฏ็ถ™็ถš็š„ใซใ‚ขใ‚ฏใƒ†ใ‚ฃใƒ–ใซไฟใกใพใ™ใ€‚ + ใƒ‡ใƒผใ‚ฟSIMใงใƒ†ใ‚ถใƒชใƒณใ‚ฐใ‚’่จฑๅฏใ—ใ€่ตฐ่กŒไธญใพใŸใฏๅธธๆ™‚ใ„ใšใ‚Œใ‹ใงๆœ‰ๅŠนใซใ—ใฆใใ ใ•ใ„ใ€‚ @@ -160,98 +160,98 @@ DestinationWidget Home - ใƒ›ใƒผใƒ  + ใƒ›ใƒผใƒ  Work - ไป•ไบ‹ + ไฝœๆฅญ No destination set - ๅฎ›ๅ…ˆใŒ่จญๅฎšใ•ใ‚Œใฆใ„ใพใ›ใ‚“ + ็›ฎ็š„ๅœฐใŒ่จญๅฎšใ•ใ‚Œใฆใ„ใพใ›ใ‚“ No %1 location set - %1 ใฎๅ ดๆ‰€ใŒ่จญๅฎšใ•ใ‚Œใฆใ„ใพใ›ใ‚“ + %1 ใฎไฝ็ฝฎใŒ่จญๅฎšใ•ใ‚Œใฆใ„ใพใ›ใ‚“ home - ใƒ›ใƒผใƒ  + ใƒ›ใƒผใƒ  work - ไป•ไบ‹ + ไฝœๆฅญ DeveloperSidebar m/sยฒ - m/sยฒ + m/sยฒ ft/sยฒ - ft/sยฒ + ft/sยฒ ACCEL - ACCEL + ใ‚ขใ‚ฏใ‚ปใƒซ ACCEL JERK - ใ‚ขใ‚ฏใ‚ปใƒซใ‚ธใƒฃใƒผใ‚ฏ + ๅŠ ้€Ÿๅบฆใ‚ธใƒฃใƒผใ‚ฏ ACT ACCEL - ACT ACCEL + ACT ACCEL DANGER JERK - ๅฑ้™บใชๅซŒใชๅฅด + ๅฑ้™บ๏ผšใ‚ธใƒฃใƒผใ‚ฏ STEER DELAY - ใ‚นใƒ†ใ‚ขใƒ‡ใ‚ฃใƒฌใ‚ค + ใ‚นใƒ†ใ‚ข้…ๅปถ FRICTION - ๆ‘ฉๆ“ฆ + ๆ‘ฉๆ“ฆ LAT ACCEL - LAT ACCEL + ๆจชๅŠ ้€Ÿๅบฆ LATERAL % - ๆจชๆ–นๅ‘ % + ๆจชๆ–นๅ‘ % LONG % - LONG % + LONG % MAX ACCEL - ๆœ€ๅคงๅŠ ้€Ÿ + ๆœ€ๅคงๅŠ ้€Ÿ SPEED JERK - ใ‚นใƒ”ใƒผใƒ‰ใ‚ธใƒฃใƒผใ‚ฏ + ้€Ÿๅบฆใ‚ธใƒฃใƒผใ‚ฏ STEER ANGLE - ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐ่ง’ๅบฆ + ใ‚นใƒ†ใ‚ข่ง’ STEER RATIO - ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐๆฏ” + ใ‚นใƒ†ใ‚ขๆฏ” STEER STIFF - ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใŒ็กฌใ„ + ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใŒ้‡ใ„ TORQUE % - ใƒˆใƒซใ‚ฏ % + ใƒˆใƒซใ‚ฏ % @@ -390,38 +390,38 @@ Pair Device - ใƒ‡ใƒใ‚คใ‚นใ‚’ใƒšใ‚ขใƒชใƒณใ‚ฐ + ใƒ‡ใƒใ‚คใ‚นใ‚’ใƒšใ‚ขใƒชใƒณใ‚ฐ PAIR - ใƒšใ‚ข + ใƒšใ‚ขใƒชใƒณใ‚ฐ Pair your device with Konik connect (stable.konik.ai). - ใƒ‡ใƒใ‚คใ‚นใ‚’Konik connect๏ผˆstable.konik.ai๏ผ‰ใจใƒšใ‚ขใƒชใƒณใ‚ฐใ—ใฆใใ ใ•ใ„ใ€‚ + ใƒ‡ใƒใ‚คใ‚นใ‚’Konik connect๏ผˆstable.konik.ai๏ผ‰ใซใƒšใ‚ขใƒชใƒณใ‚ฐใ—ใฆใใ ใ•ใ„ใ€‚ DriveStats FROGPILOT - FROGPILOT + FROGPILOT Drives - ใƒ‰ใƒฉใ‚คใƒ– + ่ตฐ่กŒ่จ˜้Œฒ Hours - ๆ™‚้–“ + ๆ™‚้–“ KM - KM + KM Miles - ใƒžใ‚คใƒซ + ใƒžใ‚คใƒซ @@ -446,3841 +446,3950 @@ FrogPilotAnnotatedCameraWidget m/sยฒ - m/sยฒ + m/sยฒ meters - ใƒกใƒผใƒˆใƒซ + ใƒกใƒผใƒˆใƒซ m/s - m/s + m/s km/h - km/h + km/h ft/sยฒ - ft/sยฒ + ft/sยฒ feet - ใƒ•ใ‚ฃใƒผใƒˆ + ใƒ•ใ‚ฃใƒผใƒˆ mph - mph + mph Vehicle in blind spot - ใƒ–ใƒฉใ‚คใƒณใƒ‰ใ‚นใƒใƒƒใƒˆๅ†…ใฎ่ปŠไธก + ๆญป่ง’ใซ่ปŠไธกใ‚ใ‚Š PENDING - ไฟ็•™ไธญ + ไฟ็•™ไธญ LIMIT - ๅˆถ้™ + ๅˆถ้™ FrogPilotConfirmationDialog Reboot required to take effect. - ๅŠนๆžœใ‚’ๅๆ˜ ใ™ใ‚‹ใซใฏๅ†่ตทๅ‹•ใŒๅฟ…่ฆใงใ™ใ€‚ + ๅๆ˜ ใ™ใ‚‹ใซใฏๅ†่ตทๅ‹•ใŒๅฟ…่ฆใงใ™ใ€‚ Reboot Now - ไปŠใ™ใๅ†่ตทๅ‹• + ไปŠใ™ใๅ†่ตทๅ‹• Reboot Later - ๅพŒใงๅ†่ตทๅ‹• + ๅพŒใงๅ†่ตทๅ‹• Yes - ใฏใ„ + ใฏใ„ No - ใ„ใ„ใˆ + ใ„ใ„ใˆ FrogPilotDataPanel - Delete Driving Footage and Data - ้‹่ปขๆ˜ ๅƒใจใƒ‡ใƒผใ‚ฟใ‚’ๅ‰Š้™ค + Delete Driving Data + ่ตฐ่กŒใƒ‡ใƒผใ‚ฟใ‚’ๅ‰Š้™ค DELETE - ๅ‰Š้™ค + ๅ‰Š้™ค - Deletes all stored driving footage and data from your device. Ideal for maintaining privacy or for simply freeing up space. - ใƒ‡ใƒใ‚คใ‚นใซไฟๅญ˜ใ•ใ‚Œใฆใ„ใ‚‹ใ™ในใฆใฎ้‹่ปขๆ˜ ๅƒใจใƒ‡ใƒผใ‚ฟใ‚’ๅ‰Š้™คใ—ใพใ™ใ€‚ใƒ—ใƒฉใ‚คใƒใ‚ทใƒผใ‚’ไฟ่ญทใ™ใ‚‹ใŸใ‚ใ€ใพใŸใฏๅ˜ใซใ‚นใƒšใƒผใ‚นใ‚’็ฉบใ‘ใ‚‹ใŸใ‚ใซๆœ€้ฉใงใ™ใ€‚ + <b>Delete all stored driving footage and data</b> to free up space and clear private information. + <b>ไฟๅญ˜ใ•ใ‚Œใฆใ„ใ‚‹้‹่ปขๆ˜ ๅƒใจใƒ‡ใƒผใ‚ฟใ‚’ใ™ในใฆๅ‰Š้™ค</b>ใ—ใฆใ€็ฉบใๅฎน้‡ใ‚’็ขบไฟใ—ใ€ๅ€‹ไบบๆƒ…ๅ ฑใ‚’ๆถˆๅŽปใ—ใพใ™ใ€‚ - Are you sure you want to delete all of your driving footage and data? - ใ™ในใฆใฎ้‹่ปขๆ˜ ๅƒใจใƒ‡ใƒผใ‚ฟใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + Delete all driving data and footage? + ใ™ในใฆใฎ่ตฐ่กŒใƒ‡ใƒผใ‚ฟใจๆ˜ ๅƒใ‚’ๅ‰Š้™คใ—ใพใ™ใ‹๏ผŸ Delete - ๅ‰Š้™ค + ๅ‰Š้™ค Deleting... - ๅ‰Š้™คไธญ... + ๅ‰Š้™คใ—ใฆใ„ใพใ™โ€ฆ Deleted! - ๅ‰Š้™คใ•ใ‚Œใพใ—ใŸ๏ผ + ๅ‰Š้™คใ—ใพใ—ใŸ๏ผ Delete Error Logs - ใ‚จใƒฉใƒผใƒญใ‚ฐใ‚’ๅ‰Š้™ค + ใ‚จใƒฉใƒผใƒญใ‚ฐใ‚’ๅ‰Š้™ค - Deletes all stored error logs from your device. Ideal for freeing up space. - ใƒ‡ใƒใ‚คใ‚นใ‹ใ‚‰ไฟๅญ˜ใ•ใ‚ŒใŸใ™ในใฆใฎใ‚จใƒฉใƒผใƒญใ‚ฐใ‚’ๅ‰Š้™คใ—ใพใ™ใ€‚ใ‚นใƒšใƒผใ‚นใ‚’่งฃๆ”พใ™ใ‚‹ใฎใซๆœ€้ฉใงใ™ใ€‚ + <b>Delete collected error logs</b> to free up space and clear old crash records. + <b>ๅŽ้›†ใ—ใŸใ‚จใƒฉใƒผใƒญใ‚ฐใ‚’ๅ‰Š้™ค</b>ใ—ใฆใ€็ฉบใๅฎน้‡ใ‚’็ขบไฟใ—ใ€ๅคใ„ใ‚ฏใƒฉใƒƒใ‚ทใƒฅ่จ˜้Œฒใ‚’ๆถˆๅŽปใ—ใพใ™ใ€‚ - Are you sure you want to delete all of the error logs? - ใ™ในใฆใฎใ‚จใƒฉใƒผใƒญใ‚ฐใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + Delete all error logs? + ใ™ในใฆใฎใ‚จใƒฉใƒผใƒญใ‚ฐใ‚’ๅ‰Š้™คใ—ใพใ™ใ‹๏ผŸ Screen Recordings - ็”ป้ข้Œฒ็”ป + ็”ป้ข้Œฒ็”ป - Manage your screen recordings. - ็”ป้ข้Œฒ็”ปใ‚’็ฎก็†ใ—ใพใ™ใ€‚ + <b>Delete or rename screen recordings.</b> + <b>็”ป้ข้Œฒ็”ปใ‚’ๅ‰Š้™คใพใŸใฏๅๅ‰ๅค‰ๆ›ดใ—ใฆใใ ใ•ใ„ใ€‚</b> DELETE ALL - ใ™ในใฆๅ‰Š้™ค + ใ™ในใฆๅ‰Š้™ค RENAME - ๅๅ‰ใ‚’ๅค‰ๆ›ด + ๅๅ‰ใ‚’ๅค‰ๆ›ด - Select a recording to delete - ๅ‰Š้™คใ™ใ‚‹้Œฒ้Ÿณใ‚’้ธๆŠž + Choose a screen recording to delete + ๅ‰Š้™คใ™ใ‚‹็”ป้ข้Œฒ็”ปใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ - Are you sure you want to delete this recording? - ใ“ใฎ้Œฒ้Ÿณใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + Delete this screen recording? + ใ“ใฎใ‚นใ‚ฏใƒชใƒผใƒณ้Œฒ็”ปใ‚’ๅ‰Š้™คใ—ใพใ™ใ‹๏ผŸ - Are you sure you want to delete all screen recordings? - ใ™ในใฆใฎ็”ป้ข้Œฒ็”ปใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + Delete all screen recordings? + ใ™ในใฆใฎ็”ป้ข้Œฒ็”ปใ‚’ๅ‰Š้™คใ—ใพใ™ใ‹๏ผŸ Delete All - ใ™ในใฆๅ‰Š้™ค + ใ™ในใฆๅ‰Š้™ค - Select a recording to rename - ๅๅ‰ใ‚’ๅค‰ๆ›ดใ™ใ‚‹้Œฒ้Ÿณใ‚’้ธๆŠž + Choose a screen recording to rename + ๅๅ‰ใ‚’ๅค‰ๆ›ดใ™ใ‚‹็”ป้ข้Œฒ็”ปใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ Enter a new name - ๆ–ฐใ—ใ„ๅๅ‰ใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„ + ๆ–ฐใ—ใ„ๅๅ‰ใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„ - Rename Recording - ้Œฒ้Ÿณใฎๅๅ‰ใ‚’ๅค‰ๆ›ด + Rename Screen Recording + ็”ป้ข้Œฒ็”ปใฎๅๅ‰ใ‚’ๅค‰ๆ›ด - A recording with this name already exists. Please choose a different name. - ใ“ใฎๅๅ‰ใฎ้Œฒ้Ÿณใฏใ™ใงใซๅญ˜ๅœจใ—ใพใ™ใ€‚ๅˆฅใฎๅๅ‰ใ‚’้ธใ‚“ใงใใ ใ•ใ„ใ€‚ + Name already in use. Please choose a different name. + ใใฎๅๅ‰ใฏๆ—ขใซไฝฟ็”จใ•ใ‚Œใฆใ„ใพใ™ใ€‚ๅˆฅใฎๅๅ‰ใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ใ€‚ Renaming... - ๅๅ‰ใ‚’ๅค‰ๆ›ดใ—ใฆใ„ใพใ™... + ๅๅ‰ๅค‰ๆ›ดไธญโ€ฆ Renamed! - ๅๅ‰ใŒๅค‰ๆ›ดใ•ใ‚Œใพใ—ใŸ๏ผ + ๅๅ‰ใ‚’ๅค‰ๆ›ดใ—ใพใ—ใŸ๏ผ FrogPilot Backups - FrogPilot ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ— + FrogPilot ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ— - Manage your FrogPilot backups. - FrogPilotใฎใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’็ฎก็†ใ—ใพใ™ใ€‚ + <b>Create, delete, or restore FrogPilot backups.</b> + <b>FrogPilot ใฎใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’ไฝœๆˆใ€ๅ‰Š้™คใ€ใพใŸใฏๅพฉๅ…ƒใ—ใพใ™ใ€‚</b> BACKUP - ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ— + ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ— RESTORE - ๅพฉๅ…ƒ + ๅพฉๅ…ƒ - Name your backup - ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใซๅๅ‰ใ‚’ไป˜ใ‘ใฆใใ ใ•ใ„ใ€‚ + Enter a name for this backup + ใ“ใฎใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใฎๅๅ‰ใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„ - A backup with this name already exists. Please choose a different name. - ใ“ใฎๅๅ‰ใฎใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใฏใ™ใงใซๅญ˜ๅœจใ—ใพใ™ใ€‚ๅˆฅใฎๅๅ‰ใ‚’้ธใ‚“ใงใใ ใ•ใ„ใ€‚ - - - Do you want to compress this backup? This will take a few minutes, but the final result will be smaller and run in the background. - ใ“ใฎใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’ๅœง็ธฎใ—ใพใ™ใ‹๏ผŸใ“ใ‚Œใซใฏๆ•ฐๅˆ†ใ‹ใ‹ใ‚Šใพใ™ใŒใ€ๆœ€็ต‚็š„ใช็ตๆžœใฏๅฐใ•ใใชใ‚Šใ€ใƒใƒƒใ‚ฏใ‚ฐใƒฉใ‚ฆใƒณใƒ‰ใงๅฎŸ่กŒใ•ใ‚Œใพใ™ใ€‚ + Compress this backup? This will save space and run in the background but take a bit longer. + ใ“ใฎใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’ๅœง็ธฎใ—ใพใ™ใ‹๏ผŸๅฎน้‡ใ‚’็ฏ€็ด„ใ—ใ€ใƒใƒƒใ‚ฏใ‚ฐใƒฉใ‚ฆใƒณใƒ‰ใงๅฎŸ่กŒใ•ใ‚Œใพใ™ใŒใ€ๅฐ‘ใ—ๆ™‚้–“ใŒใ‹ใ‹ใ‚Šใพใ™ใ€‚ Backing up... - ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ไธญ... + ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ไธญโ€ฆ Compressing... - ๅœง็ธฎไธญ... + ๅœง็ธฎไธญโ€ฆ Backup created! - ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใŒไฝœๆˆใ•ใ‚Œใพใ—ใŸ๏ผ + ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’ไฝœๆˆใ—ใพใ—ใŸใ€‚ - Select a backup to delete - ๅ‰Š้™คใ™ใ‚‹ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’้ธๆŠž + Choose a FrogPilot backup to delete + ๅ‰Š้™คใ™ใ‚‹ FrogPilot ใฎใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ - Are you sure you want to delete this backup? - ใ“ใฎใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + Delete this backup? + ใ“ใฎใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’ๅ‰Š้™คใ—ใพใ™ใ‹๏ผŸ - Are you sure you want to delete all FrogPilot backups? - FrogPilotใฎใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’ใ™ในใฆๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + Delete all backups? + ใ™ในใฆใฎใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’ๅ‰Š้™คใ—ใพใ™ใ‹๏ผŸ - Select a restore point - ๅพฉๅ…ƒใƒใ‚คใƒณใƒˆใ‚’้ธๆŠž + Choose a backup to restore + ๅพฉๅ…ƒใ™ใ‚‹ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ - Are you sure you want to restore this version of FrogPilot? - ใ“ใฎใƒใƒผใ‚ธใƒงใƒณใฎFrogPilotใ‚’ๅพฉๅ…ƒใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + Restore this backup? + ใ“ใฎใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’ๅพฉๅ…ƒใ—ใพใ™ใ‹๏ผŸ Restore - ๅพฉๅ…ƒ + ๅพฉๅ…ƒ Restoring... - ๅพฉๅ…ƒไธญ... + ๅพฉๅ…ƒใ—ใฆใ„ใพใ™โ€ฆ Extracting... - ๆŠฝๅ‡บไธญ... + ๆŠฝๅ‡บใ—ใฆใ„ใพใ™โ€ฆ Restored! - ๅพฉๅ…ƒใ—ใพใ—ใŸ๏ผ + ๅพฉๅ…ƒใ—ใพใ—ใŸ๏ผ Rebooting... - ๅ†่ตทๅ‹•ไธญ... + ๅ†่ตทๅ‹•ไธญโ€ฆ Toggle Backups - ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’ๅˆ‡ใ‚Šๆ›ฟใˆใ‚‹ + ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’ๅˆ‡ใ‚Šๆ›ฟใˆ - Manage your toggle backups. - ใƒˆใ‚ฐใƒซใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’็ฎก็†ใ—ใพใ™ใ€‚ + <b>Create, delete, or restore toggle backups.</b> + <b>ใƒˆใ‚ฐใƒซใฎใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’ไฝœๆˆใ€ๅ‰Š้™คใ€ใพใŸใฏๅพฉๅ…ƒใ—ใพใ™ใ€‚</b> - Name your toggle backup - ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใฎๅˆ‡ใ‚Šๆ›ฟใˆใซๅๅ‰ใ‚’ไป˜ใ‘ใ‚‹ - - - A toggle backup with this name already exists. Please choose a different name. - ใ“ใฎๅๅ‰ใฎใƒˆใ‚ฐใƒซใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใฏใ™ใงใซๅญ˜ๅœจใ—ใพใ™ใ€‚ๅˆฅใฎๅๅ‰ใ‚’้ธใ‚“ใงใใ ใ•ใ„ใ€‚ - - - Select a toggle backup to delete - ๅ‰Š้™คใ™ใ‚‹ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’้ธๆŠž - - - Are you sure you want to delete this toggle backup? - ใ“ใฎใƒˆใ‚ฐใƒซใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Are you sure you want to delete all toggle backups? - ใ™ในใฆใฎใƒˆใ‚ฐใƒซใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Select a toggle restore point - ใƒˆใ‚ฐใƒซๅพฉๅ…ƒใƒใ‚คใƒณใƒˆใ‚’้ธๆŠž - - - Are you sure you want to restore this toggle backup? - ใ“ใฎใƒˆใ‚ฐใƒซใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’ๅพฉๅ…ƒใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + Choose a backup to delete + ๅ‰Š้™คใ™ใ‚‹ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ FrogPilotDevicePanel Device Settings - ใƒ‡ใƒใ‚คใ‚น่จญๅฎš + ใƒ‡ใƒใ‚คใ‚น่จญๅฎš - Settings that control device behavior. - ใƒ‡ใƒใ‚คใ‚นใฎๅ‹•ไฝœใ‚’ๅˆถๅพกใ™ใ‚‹่จญๅฎšใ€‚ - - - Battery Shutdown Threshold - ใƒใƒƒใƒ†ใƒชใƒผใ‚ทใƒฃใƒƒใƒˆใƒ€ใ‚ฆใƒณ้–พๅ€ค - - - Automatically shut down the device when the vehicle's battery voltage reaches the set threshold preventing excessive battery drain to protect the battery. - ่ปŠไธกใฎใƒใƒƒใƒ†ใƒชใƒผ้›ปๅœงใŒ่จญๅฎšใ•ใ‚ŒใŸ้–พๅ€คใซ้”ใ—ใŸใจใใซใƒ‡ใƒใ‚คใ‚นใ‚’่‡ชๅ‹•็š„ใซใ‚ทใƒฃใƒƒใƒˆใƒ€ใ‚ฆใƒณใ—ใ€้Žๅบฆใชใƒใƒƒใƒ†ใƒชใƒผๆถˆ่€—ใ‚’้˜ฒใ„ใงใƒใƒƒใƒ†ใƒชใƒผใ‚’ไฟ่ญทใ—ใพใ™ใ€‚ + <b>Settings that control how the device runs, powers off, and manages driving data.</b> + <b>ใƒ‡ใƒใ‚คใ‚นใฎๅ‹•ไฝœใ€้›ปๆบใ‚ชใƒ•ใ€้‹่ปขใƒ‡ใƒผใ‚ฟใฎ็ฎก็†ๆ–นๆณ•ใ‚’ๅˆถๅพกใ™ใ‚‹่จญๅฎšใ€‚</b> Device Shutdown Timer - ใƒ‡ใƒใ‚คใ‚นใ‚ทใƒฃใƒƒใƒˆใƒ€ใ‚ฆใƒณใ‚ฟใ‚คใƒžใƒผ + ใƒ‡ใƒใ‚คใ‚นใฎใ‚ทใƒฃใƒƒใƒˆใƒ€ใ‚ฆใƒณใ‚ฟใ‚คใƒžใƒผ - How long the device stays on for after you go offroad. - ใ‚ชใƒ•ใƒญใƒผใƒ‰ใซๅ‡บใŸๅพŒใ€ใƒ‡ใƒใ‚คใ‚นใŒใฉใฎใใ‚‰ใ„ใฎๆ™‚้–“ใ‚ชใƒณใฎใพใพใงใ„ใ‚‹ใ‹ใ€‚ + <b>Keep the device on for the set amount of time after a drive</b> before it shuts down automatically. + <b>่ตฐ่กŒๅพŒใ€่จญๅฎšใ•ใ‚ŒใŸๆ™‚้–“ใฎ้–“ใƒ‡ใƒใ‚คใ‚นใ‚’ใ‚ชใƒณใฎใพใพใซใ—ใพใ™</b> ่‡ชๅ‹•็š„ใซใ‚ทใƒฃใƒƒใƒˆใƒ€ใ‚ฆใƒณใ•ใ‚Œใ‚‹ๅ‰ใซใ€‚ - Disable Data Logging - ใƒ‡ใƒผใ‚ฟใƒญใ‚ฎใƒณใ‚ฐใ‚’็„กๅŠนใซใ™ใ‚‹ + Disable Logging + ใƒญใ‚ฐ่จ˜้Œฒใ‚’็„กๅŠนๅŒ– WARNING: This will prevent your drives from being recorded and all data will be unobtainable! - ่ญฆๅ‘Š: ใ“ใ‚Œใซใ‚ˆใ‚Šใ€ใƒ‰ใƒฉใ‚คใƒ–ใŒ่จ˜้Œฒใ•ใ‚Œใšใ€ใ™ในใฆใฎใƒ‡ใƒผใ‚ฟใŒๅ–ๅพ—ไธๅฏ่ƒฝใซใชใ‚Šใพใ™! + ่ญฆๅ‘Š๏ผšใ“ใ‚Œใซใ‚ˆใ‚Š่ตฐ่กŒใฎ่จ˜้ŒฒใŒๅœๆญขใ—ใ€ใ™ในใฆใฎใƒ‡ใƒผใ‚ฟใŒๅ–ๅพ—ไธ่ƒฝใซใชใ‚Šใพใ™๏ผ - Disable all data logging to improve privacy. - ใ™ในใฆใฎใƒ‡ใƒผใ‚ฟใƒญใ‚ฐใ‚’็„กๅŠนใซใ—ใฆใƒ—ใƒฉใ‚คใƒใ‚ทใƒผใ‚’ๅ‘ไธŠใ•ใ›ใ‚‹ใ€‚ + <b>Prevent the device from saving driving data.</b> + <b>ใƒ‡ใƒใ‚คใ‚นใŒ่ตฐ่กŒใƒ‡ใƒผใ‚ฟใ‚’ไฟๅญ˜ใ—ใชใ„ใ‚ˆใ†ใซใ—ใพใ™ใ€‚</b> - Disable Data Uploads - ใƒ‡ใƒผใ‚ฟใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ‚’็„กๅŠนใซใ™ใ‚‹ + Disable Uploads + ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ‚’็„กๅŠนๅŒ– - WARNING: This will prevent your drives from appearing on <b>comma connect</b> which may impact debugging and support! - Translation A + WARNING: This will prevent your drives from being uploaded to <b>comma connect</b> which will impact debugging and official support from comma! + ่ญฆๅ‘Š: ใ“ใ‚Œใซใ‚ˆใ‚Š่ตฐ่กŒใƒ‡ใƒผใ‚ฟใฏ<b>comma connect</b>ใธใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ•ใ‚Œใชใใชใ‚Šใ€ใƒ‡ใƒใƒƒใ‚ฐใŠใ‚ˆใณcommaใ‹ใ‚‰ใฎๆญฃๅผใ‚ตใƒใƒผใƒˆใซๅฝฑ้Ÿฟใ—ใพใ™ใ€‚ - Prevent the device from sending any data to <b>comma</b>'s servers. - ใƒ‡ใƒใ‚คใ‚นใŒ<b>comma</b>ใฎใ‚ตใƒผใƒใƒผใซใƒ‡ใƒผใ‚ฟใ‚’้€ไฟกใ—ใชใ„ใ‚ˆใ†ใซใ—ใพใ™ใ€‚ + <b>Prevent the device from uploading driving data.</b> + <b>ใƒ‡ใƒใ‚คใ‚นใŒ่ตฐ่กŒใƒ‡ใƒผใ‚ฟใ‚’ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ—ใชใ„ใ‚ˆใ†ใซใ—ใพใ™ใ€‚</b> - Increase Thermal Safety Limit - ็†ฑๅฎ‰ๅ…จ้™็•Œใ‚’ๅผ•ใไธŠใ’ใ‚‹ + High-Quality Recording + ้ซ˜ๅ“่ณชใช้Œฒ็”ป - WARNING: This can damage your device by exceeding safe temperature limits! - ่ญฆๅ‘Š: ใ“ใ‚Œใฏๅฎ‰ๅ…จใชๆธฉๅบฆ้™็•Œใ‚’่ถ…ใˆใฆใƒ‡ใƒใ‚คใ‚นใ‚’ๆๅ‚ทใ™ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™! + <b>Save drive footage in higher video quality.</b> + <b>่ตฐ่กŒๆ˜ ๅƒใ‚’ใ‚ˆใ‚Š้ซ˜็”ป่ณชใงไฟๅญ˜ใ€‚</b> - Allow the device to run hotter than comma recommended limit. - ใƒ‡ใƒใ‚คใ‚นใ‚’ๆŽจๅฅจ้™็•Œใ‚ˆใ‚Šใ‚‚้ซ˜ๆธฉใงๅ‹•ไฝœใ•ใ›ใ‚‹ใ“ใจใ‚’่จฑๅฏใ—ใพใ™ใ€‚ + Low-Voltage Cutoff + ไฝŽ้›ปๅœงใ‚ซใƒƒใƒˆใ‚ชใƒ• - Use Konik's Server Instead of comma's - ใ‚ณใƒณใƒ‹ใƒƒใ‚ฏใฎใ‚ตใƒผใƒใƒผใ‚’ไฝฟ็”จใ—ใฆใใ ใ•ใ„ใ€‚ + <b>While parked, if the battery voltage falls below the set level, the device shuts down</b> to prevent excessive battery drain. + <b>้ง่ปŠไธญใ€ใƒใƒƒใƒ†ใƒชใƒผ้›ปๅœงใŒ่จญๅฎšๅ€คใ‚’ไธ‹ๅ›žใ‚‹ใจใƒ‡ใƒใ‚คใ‚นใฏใ‚ทใƒฃใƒƒใƒˆใƒ€ใ‚ฆใƒณใ—ใพใ™</b>ใ€‚้Žๅบฆใชใƒใƒƒใƒ†ใƒชใƒผๆถˆ่€—ใ‚’้˜ฒใใŸใ‚ใงใ™ใ€‚ - Upload your driving data to <b>connect.konik.ai</b> instead of <b>connect.comma.ai</b>. - ้‹่ปขใƒ‡ใƒผใ‚ฟใ‚’<b>connect.konik.ai</b>ใซใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ—ใฆใใ ใ•ใ„ใ€‚<b>connect.comma.ai</b>ใงใฏใชใใ€‚ + Raise Temperature Limits + ๆธฉๅบฆไธŠ้™ใ‚’ๅผ•ใไธŠใ’ใ‚‹ + + + WARNING: Running at higher temperatures may damage your device! + ่ญฆๅ‘Š: ้ซ˜ๆธฉใงใฎๅ‹•ไฝœใฏใƒ‡ใƒใ‚คใ‚นใ‚’ๆๅ‚ทใ™ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™! + + + <b>Allow the device to run at higher temperatures</b> before throttling or shutting down. Use only if you understand the risks! + <b>ใ‚นใƒญใƒƒใƒˆใƒซๅˆถ้™ใ‚„ใ‚ทใƒฃใƒƒใƒˆใƒ€ใ‚ฆใƒณใ‚’่กŒใ†ๅ‰ใซใ€ใƒ‡ใƒใ‚คใ‚นใŒใ‚ˆใ‚Š้ซ˜ใ„ๆธฉๅบฆใงๅ‹•ไฝœใ™ใ‚‹ใ“ใจใ‚’่จฑๅฏใ—ใพใ™</b>ใ€‚ใƒชใ‚นใ‚ฏใ‚’็†่งฃใ—ใฆใ„ใ‚‹ๅ ดๅˆใซใฎใฟไฝฟ็”จใ—ใฆใใ ใ•ใ„ใ€‚ + + + Use Konik Server + Konik Server ใ‚’ไฝฟ็”จ + + + <b>Upload driving data to "connect.konik.ai" instead of "connect.comma.ai".</b> + <b>้‹่ปขใƒ‡ใƒผใ‚ฟใ‚’ใ€Œconnect.comma.aiใ€ใงใฏใชใใ€Œconnect.konik.aiใ€ใซใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ—ใฆใใ ใ•ใ„ใ€‚</b> Screen Settings - ็”ป้ข่จญๅฎš + ็”ป้ข่จญๅฎš - Settings that control screen behavior. - ็”ป้ขใฎๅ‹•ไฝœใ‚’ๅˆถๅพกใ™ใ‚‹่จญๅฎšใ€‚ + <b>Settings that control screen brightness, screen recording, and timeout duration.</b> + <b>็”ป้ขใฎๆ˜Žใ‚‹ใ•ใ€็”ป้ข้Œฒ็”ปใ€ใ‚ฟใ‚คใƒ ใ‚ขใ‚ฆใƒˆๆ™‚้–“ใ‚’ๅˆถๅพกใ™ใ‚‹่จญๅฎšใ€‚</b> Screen Brightness (Offroad) - ็”ป้ขใฎๆ˜Žใ‚‹ใ•๏ผˆใ‚ชใƒ•ใƒญใƒผใƒ‰๏ผ‰ + ็”ป้ขใฎๆ˜Žใ‚‹ใ•๏ผˆใ‚ชใƒ•ใƒญใƒผใƒ‰๏ผ‰ - The screen brightness when not driving. - ้‹่ปขใ—ใฆใ„ใชใ„ใจใใฎ็”ป้ขใฎๆ˜Žใ‚‹ใ•ใ€‚ + <b>The screen brightness while not driving.</b> + <b>้ž่ตฐ่กŒๆ™‚ใฎ็”ป้ขใฎๆ˜Žใ‚‹ใ•ใ€‚</b> Screen Brightness (Onroad) - ็”ป้ขใฎๆ˜Žใ‚‹ใ•๏ผˆใ‚ชใƒณใƒญใƒผใƒ‰๏ผ‰ + ็”ป้ขใฎๆ˜Žใ‚‹ใ•๏ผˆ่ตฐ่กŒๆ™‚๏ผ‰ - The screen brightness while driving. - ้‹่ปขไธญใฎ็”ป้ขใฎๆ˜Žใ‚‹ใ•ใ€‚ + <b>The screen brightness while driving.</b> + <b>้‹่ปขไธญใฎ็”ป้ขใฎๆ˜Žใ‚‹ใ•ใ€‚</b> Screen Recorder - ใ‚นใ‚ฏใƒชใƒผใƒณใƒฌใ‚ณใƒผใƒ€ใƒผ + ็”ป้ข้Œฒ็”ป - Enable a button in the driving screen to record the screen. - ้‹่ปข็”ป้ขใงใ‚นใ‚ฏใƒชใƒผใƒณใ‚’่จ˜้Œฒใ™ใ‚‹ใƒœใ‚ฟใƒณใ‚’ๆœ‰ๅŠนใซใ™ใ‚‹ใ€‚ + <b>Add a button to the driving screen to record the display.</b> + <b>่ตฐ่กŒ็”ป้ขใซ่กจ็คบใ‚’้Œฒ็”ปใ™ใ‚‹ใƒœใ‚ฟใƒณใ‚’่ฟฝๅŠ ใ€‚</b> Screen Timeout (Offroad) - ็”ป้ขใ‚ฟใ‚คใƒ ใ‚ขใ‚ฆใƒˆ๏ผˆใ‚ชใƒ•ใƒญใƒผใƒ‰๏ผ‰ + ็”ป้ขใ‚ฟใ‚คใƒ ใ‚ขใ‚ฆใƒˆ๏ผˆใ‚ชใƒ•ใƒญใƒผใƒ‰๏ผ‰ - How long it takes for the screen to turn off when not driving. - ้‹่ปขใ—ใฆใ„ใชใ„ใจใใซ็”ป้ขใŒใ‚ชใƒ•ใซใชใ‚‹ใพใงใฎๆ™‚้–“ใ€‚ + <b>How long the screen stays on after being tapped while not driving.</b> + <b>่ตฐ่กŒใ—ใฆใ„ใชใ„ใจใใซ็”ป้ขใ‚’ใ‚ฟใƒƒใƒ—ใ—ใŸๅพŒใ€็”ป้ขใŒ็‚น็ฏใ—็ถšใ‘ใ‚‹ๆ™‚้–“ใ€‚</b> Screen Timeout (Onroad) - ็”ป้ขใ‚ฟใ‚คใƒ ใ‚ขใ‚ฆใƒˆ๏ผˆใ‚ชใƒณใƒญใƒผใƒ‰๏ผ‰ + ็”ป้ขใ‚ฟใ‚คใƒ ใ‚ขใ‚ฆใƒˆ๏ผˆ่ตฐ่กŒไธญ๏ผ‰ - How long it takes for the screen to turn off while driving. - ้‹่ปขไธญใซ็”ป้ขใŒใ‚ชใƒ•ใซใชใ‚‹ใพใงใฎๆ™‚้–“ใ€‚ + <b>How long the screen stays on after being tapped while driving.</b> + <b>้‹่ปขไธญใซใ‚ฟใƒƒใƒ—ใ—ใŸๅพŒใ€็”ป้ขใŒ็‚น็ฏใ—็ถšใ‘ใ‚‹ๆ™‚้–“ใ€‚</b> + + + Standby Mode + ๅพ…ๆฉŸใƒขใƒผใƒ‰ + + + <b>Turn the screen off while driving and automatically wake it up for alerts or engagement state changes.</b> + <b>่ตฐ่กŒไธญใฏ็”ป้ขใ‚’ๆถˆ็ฏใ—ใ€่ญฆๅ ฑใ‚„ใ‚จใƒณใ‚ฒใƒผใ‚ธ็Šถๆ…‹ใฎๅค‰ๅŒ–ใง่‡ชๅ‹•็š„ใซๅพฉๅธฐใ—ใพใ™ใ€‚</b> 5 mins - 5ๅˆ† + 5ๅˆ† mins - ๅˆ† + ๅˆ† hour - ๆ™‚้–“ + ๆ™‚้–“ hours - ๆ™‚้–“ + ๆ™‚้–“ - Only Disable While Onroad - ใ‚ชใƒณใƒญใƒผใƒ‰ไธญใฎใฟ็„กๅŠนใซใ™ใ‚‹ + Disable Onroad Only + ใ‚ชใƒณใƒญใƒผใƒ‰ใฎใฟใ‚’็„กๅŠนๅŒ– volts - ใƒœใƒซใƒˆ + ใƒœใƒซใƒˆ Screen Off - ็”ป้ขใ‚ชใƒ• + ็”ป้ขใ‚ชใƒ• Auto - ใ‚ชใƒผใƒˆ + ่‡ชๅ‹• Start Recording - ้Œฒ้Ÿณ้–‹ๅง‹ + ้Œฒ็”ปใ‚’้–‹ๅง‹ Stop Recording - ้Œฒ้Ÿณใ‚’ๅœๆญข + ้Œฒ็”ปใ‚’ๅœๆญข seconds - ็ง’ - - - High Bitrate Recording - ้ซ˜ใƒ“ใƒƒใƒˆใƒฌใƒผใƒˆ้Œฒ้Ÿณ - - - Record driving footage at double the standard bitrate for improved video quality in driving logs. - ้‹่ปขใƒญใ‚ฐใฎใƒ“ใƒ‡ใ‚ชๅ“่ณชใ‚’ๅ‘ไธŠใ•ใ›ใ‚‹ใŸใ‚ใซใ€ๆจ™ๆบ–ใƒ“ใƒƒใƒˆใƒฌใƒผใƒˆใฎ2ๅ€ใง้‹่ปขๆ˜ ๅƒใ‚’่จ˜้Œฒใ—ใพใ™ใ€‚ + ็ง’ FrogPilotLateralPanel Advanced Lateral Tuning - ้ซ˜ๅบฆใชใƒฉใƒ†ใƒฉใƒซใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐ + ้ซ˜ๅบฆใชๆจชๅˆถๅพกใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐ - Advanced settings for fine-tuning openpilot's lateral controls. - openpilotใฎๆจชๆ–นๅ‘ๅˆถๅพกใ‚’ๅพฎ่ชฟๆ•ดใ™ใ‚‹ใŸใ‚ใฎ้ซ˜ๅบฆใช่จญๅฎšใ€‚ + <b>Advanced steering control changes to fine-tune how openpilot drives.</b> + <b>้ซ˜ๅบฆใชใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐๅˆถๅพกใฎๅค‰ๆ›ดใงใ€openpilot ใฎ่ตฐ่กŒใ‚’ๅพฎ่ชฟๆ•ดใ—ใพใ™ใ€‚</b> Actuator Delay (Default: %1) - ใ‚ขใ‚ฏใƒใƒฅใ‚จใƒผใ‚ฟ้…ๅปถ๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1๏ผ‰ + ใ‚ขใ‚ฏใƒใƒฅใ‚จใƒผใ‚ฟ้…ๅปถ๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1๏ผ‰ Actuator Delay - ใ‚ขใ‚ฏใƒใƒฅใ‚จใƒผใ‚ฟ้…ๅปถ + ใ‚ขใ‚ฏใƒใƒฅใ‚จใƒผใ‚ฟ้…ๅปถ - How long the steering wheel takes to respond to commands. Higher values account for slower steering; lower values for quicker response. - ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใŒใ‚ณใƒžใƒณใƒ‰ใซๅๅฟœใ™ใ‚‹ใพใงใฎๆ™‚้–“ใ€‚้ซ˜ใ„ๅ€คใฏ้…ใ„ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใ‚’่€ƒๆ…ฎใ—ใ€ไฝŽใ„ๅ€คใฏใ‚ˆใ‚Š้€Ÿใ„ๅๅฟœใ‚’็คบใ—ใพใ™ใ€‚ + <b>The time between openpilot's steering command and the vehicle's response.</b> Increase if the vehicle reacts late; decrease if it feels jumpy. Auto-learned by default. + <b>openpilotใฎใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใ‚ณใƒžใƒณใƒ‰ใจ่ปŠไธกใฎๅฟœ็ญ”ใฎ้–“ใฎๆ™‚้–“ใ€‚</b> ๅๅฟœใŒ้…ใ„ๅ ดๅˆใฏๅข—ใ‚„ใ—ใ€ใŽใใ—ใ‚ƒใๆ„Ÿใ˜ใ‚‹ๅ ดๅˆใฏๆธ›ใ‚‰ใ—ใฆใใ ใ•ใ„ใ€‚ๆ—ขๅฎšใง่‡ชๅ‹•ๅญฆ็ฟ’ใ€‚ Friction (Default: %1) - ๆ‘ฉๆ“ฆ๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1๏ผ‰ + ๆ‘ฉๆ“ฆ๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ๏ผš%1๏ผ‰ Friction - ๆ‘ฉๆ“ฆ + ๆ‘ฉๆ“ฆ - Adjust steering resistance. Higher values feel more stable but heavier; lower values feel lighter but more sensitive. - ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐๆŠตๆŠ—ใ‚’่ชฟๆ•ดใ—ใพใ™ใ€‚ๅ€คใŒ้ซ˜ใ„ใปใฉๅฎ‰ๅฎšใ—ใพใ™ใŒ้‡ใๆ„Ÿใ˜ใ€ๅ€คใŒไฝŽใ„ใปใฉ่ปฝใๆ„Ÿใ˜ใพใ™ใŒๆ•ๆ„Ÿใซใชใ‚Šใพใ™ใ€‚ + <b>Compensates for steering friction.</b> Increase if the wheel sticks near center; decrease if it jitters. Auto-learned by default. + <b>ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใฎๆ‘ฉๆ“ฆใ‚’่ฃœๆญฃใ—ใพใ™ใ€‚</b> ใ‚ปใƒณใ‚ฟใƒผไป˜่ฟ‘ใงใƒใƒณใƒ‰ใƒซใŒๅผ•ใฃใ‹ใ‹ใ‚‹ๅ ดๅˆใฏๅข—ใ‚„ใ—ใ€ใ‚ฌใ‚ฟใคใๅ ดๅˆใฏๆธ›ใ‚‰ใ—ใฆใใ ใ•ใ„ใ€‚ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใงใฏ่‡ชๅ‹•ๅญฆ็ฟ’ใ•ใ‚Œใพใ™ใ€‚ Kp Factor (Default: %1) - Kpใƒ•ใ‚กใ‚ฏใ‚ฟใƒผ๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1๏ผ‰ + Kpไฟ‚ๆ•ฐ๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1๏ผ‰ Kp Factor - Kpไฟ‚ๆ•ฐ + Kpไฟ‚ๆ•ฐ - How aggressively openpilot corrects steering. Higher values respond faster but may feel jerky; lower values are smoother but slower. - openpilotใŒใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใ‚’ใฉใฎ็จ‹ๅบฆ็ฉๆฅต็š„ใซไฟฎๆญฃใ™ใ‚‹ใ‹ใ€‚ๅ€คใŒ้ซ˜ใ„ใปใฉๅๅฟœใŒ้€Ÿใใชใ‚Šใพใ™ใŒใ€ใŽใใ—ใ‚ƒใใ—ใŸๆ„Ÿใ˜ใซใชใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ๅ€คใŒไฝŽใ„ใปใฉใ‚นใƒ ใƒผใ‚บใงใ™ใŒใ€ๅๅฟœใŒ้…ใใชใ‚Šใพใ™ใ€‚ + <b>How strongly openpilot corrects lane position.</b> Higher is tighter but twitchier; lower is smoother but slower. Auto-learned by default. + <b>openpilotใŒ่ปŠ็ทšไฝ็ฝฎใ‚’ใฉใ‚Œใ ใ‘ๅผทใ่ฃœๆญฃใ™ใ‚‹ใ‹ใ€‚</b> ้ซ˜ใใ™ใ‚‹ใจใ‚ฟใ‚คใƒˆใ ใŒ็ฅž็ตŒ่ณชใซใชใ‚Šใ€ไฝŽใใ™ใ‚‹ใจๆป‘ใ‚‰ใ‹ใ ใŒๅๅฟœใŒ้…ใใชใ‚‹ใ€‚ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใง่‡ชๅ‹•ๅญฆ็ฟ’ใ€‚ - Lateral Accel (Default: %1) - ๆจชๅŠ ้€Ÿๅบฆ (ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1) + Lateral Acceleration (Default: %1) + ๆจชๅŠ ้€Ÿๅบฆ๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1๏ผ‰ - Lateral Accel - ๆจชๅŠ ้€Ÿๅบฆ + Lateral Acceleration + ๆจชๅŠ ้€Ÿๅบฆ - How quickly openpilot makes lateral adjustments. Higher values allow sharper turns; lower values provide smoother steering. - openpilotใŒๆจชๆ–นๅ‘ใฎ่ชฟๆ•ดใ‚’่กŒใ†้€Ÿๅบฆใ€‚้ซ˜ใ„ๅ€คใฏ้‹ญใ„ใ‚ฟใƒผใƒณใ‚’ๅฏ่ƒฝใซใ—ใ€ไฝŽใ„ๅ€คใฏใ‚ˆใ‚Šๆป‘ใ‚‰ใ‹ใชใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใ‚’ๆไพ›ใ—ใพใ™ใ€‚ + <b>Maps steering torque to turning response.</b> Increase for sharper turns; decrease for gentler steering. Auto-learned by default. + <b>ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒˆใƒซใ‚ฏใ‚’ๆ—‹ๅ›žๅฟœ็ญ”ใซใƒžใƒƒใƒ”ใƒณใ‚ฐใ—ใพใ™ใ€‚</b> ไธŠใ’ใ‚‹ใจ้‹ญใ„ๆ—‹ๅ›žใซใ€ไธ‹ใ’ใ‚‹ใจ็ฉใ‚„ใ‹ใชใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใซใชใ‚Šใพใ™ใ€‚ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใง่‡ชๅ‹•ๅญฆ็ฟ’ใ€‚ Steer Ratio (Default: %1) - ใ‚นใƒ†ใ‚ขๆฏ”๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1๏ผ‰ + ใ‚นใƒ†ใ‚ขๆฏ”๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1๏ผ‰ Steer Ratio - ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐๆฏ” + ใ‚นใƒ†ใ‚ขๆฏ” - How much the steering wheel turns in response to commands. Higher values feel more stable; lower values feel quicker. - ใ‚ณใƒžใƒณใƒ‰ใซๅฟœใ˜ใฆใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใŒใฉใ‚Œใ ใ‘ๅ›ž่ปขใ™ใ‚‹ใ‹ใ€‚ๅ€คใŒ้ซ˜ใ„ใปใฉๅฎ‰ๅฎšๆ„ŸใŒใ‚ใ‚Šใ€ๅ€คใŒไฝŽใ„ใปใฉ็ด ๆ—ฉใๆ„Ÿใ˜ใ‚‰ใ‚Œใพใ™ใ€‚ + <b>The relationship between steering wheel rotation and road wheel angle.</b> Increase if steering feels too quick or twitchy; decrease if it feels too slow or weak. Auto-learned by default. + <b>ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใฎๅ›ž่ปขใจใƒญใƒผใƒ‰ใƒ›ใ‚คใƒผใƒซ่ง’ๅบฆใฎ้–ขไฟ‚ใ€‚</b> ๆ“่ˆตใŒ้€Ÿใ™ใŽใ‚‹ใƒปๆ•ๆ„Ÿใ™ใŽใ‚‹ใจๆ„Ÿใ˜ใ‚‹ๅ ดๅˆใฏๅข—ใ‚„ใ—ใ€้…ใ„ใƒปๅผฑใ„ใจๆ„Ÿใ˜ใ‚‹ๅ ดๅˆใฏๆธ›ใ‚‰ใ—ใฆใใ ใ•ใ„ใ€‚ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใงใฏ่‡ชๅ‹•ๅญฆ็ฟ’ใ•ใ‚Œใพใ™ใ€‚ - Force Auto Tune On - ใ‚ชใƒผใƒˆใƒใƒฅใƒผใƒณใ‚’ๅผทๅˆถใ‚ชใƒณ + Force Auto-Tune On + ่‡ชๅ‹•ใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐใ‚’ๅผทๅˆถใ‚ชใƒณ - Force-enable commaโ€™s auto lateral tuning. - ใ‚ณใƒณใƒžใฎ่‡ชๅ‹•ๆจชๆ–นๅ‘่ชฟๆ•ดใ‚’ๅผทๅˆถ็š„ใซๆœ‰ๅŠนใซใ™ใ‚‹ใ€‚ + <b>Force-enable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration".</b> + <b>ใ€Œๆ‘ฉๆ“ฆใ€ใจใ€ŒๆจชๅŠ ้€Ÿๅบฆใ€ใซๅฏพใ—ใฆใ€openpilot ใฎใƒฉใ‚คใƒ–่‡ชๅ‹•ใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐใ‚’ๅผทๅˆถๆœ‰ๅŠนๅŒ–ใ—ใพใ™ใ€‚</b> - Force Auto Tune Off - ใ‚ชใƒผใƒˆใƒใƒฅใƒผใƒณใ‚’ๅผทๅˆถ็š„ใซใ‚ชใƒ•ใซใ™ใ‚‹ + Force Auto-Tune Off + ่‡ชๅ‹•ใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐใ‚’ๅผทๅˆถ็š„ใซใ‚ชใƒ•ใซใ™ใ‚‹ - Force-disable commaโ€™s auto lateral tuning. - ใ‚ณใƒณใƒžใฎ่‡ชๅ‹•ๆจช่ชฟๆ•ดใ‚’ๅผทๅˆถ็š„ใซ็„กๅŠนใซใ™ใ‚‹ใ€‚ + <b>Force-disable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration" and use the set value instead.</b> + <b>ใ€Œๆ‘ฉๆ“ฆใ€ใจใ€ŒๆจชๅŠ ้€Ÿๅบฆใ€ใซๅฏพใ™ใ‚‹openpilotใฎใƒฉใ‚คใƒ–่‡ชๅ‹•ใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐใ‚’ๅผทๅˆถ็š„ใซ็„กๅŠนๅŒ–ใ—ใ€่จญๅฎšใ•ใ‚ŒใŸๅ€คใ‚’ไปฃใ‚ใ‚Šใซไฝฟ็”จใ—ใพใ™ใ€‚</b> - Always on Lateral - ๅธธใซๆจชๅ‘ใ + Force Torque Controller + ใƒ•ใ‚ฉใƒผใ‚นใƒˆใƒซใ‚ฏใ‚ณใƒณใƒˆใƒญใƒผใƒฉใƒผ - openpilot's steering control stays active even when the brake or gas pedals are pressed.<br><br>Deactivation only occurs with the <b>Cruise Control</b> button. - openpilotใฎใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐๅˆถๅพกใฏใ€ใƒ–ใƒฌใƒผใ‚ญใพใŸใฏใ‚ขใ‚ฏใ‚ปใƒซใƒšใƒ€ใƒซใŒๆŠผใ•ใ‚Œใฆใ„ใ‚‹ใจใใงใ‚‚ใ‚ขใ‚ฏใƒ†ใ‚ฃใƒ–ใฎใพใพใงใ™ใ€‚<br><br>็„กๅŠนๅŒ–ใฏ<b>ใ‚ฏใƒซใƒผใ‚บใ‚ณใƒณใƒˆใƒญใƒผใƒซ</b>ใƒœใ‚ฟใƒณใงใฎใฟ่กŒใ‚ใ‚Œใพใ™ใ€‚ + <b>Use torque-based steering control instead of angle-based control for smoother lane keeping, especially in curves.</b> + <b>่ง’ๅบฆใƒ™ใƒผใ‚นใงใฏใชใใƒˆใƒซใ‚ฏใƒ™ใƒผใ‚นใฎใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐๅˆถๅพกใ‚’ไฝฟ็”จใ—ใฆใ€็‰นใซใ‚ซใƒผใƒ–ใงใ‚ˆใ‚Šๆป‘ใ‚‰ใ‹ใชใƒฌใƒผใƒณใ‚ญใƒผใƒ”ใƒณใ‚ฐใ‚’่กŒใ„ใพใ™ใ€‚</b> + + + Always On Lateral + ๅธธๆ™‚ใ‚ชใƒณใฎๆจชๅˆถๅพก + + + <b>openpilot's steering remains active even when the accelerator or brake pedals are pressed.</b> + <b>ใ‚ขใ‚ฏใ‚ปใƒซใพใŸใฏใƒ–ใƒฌใƒผใ‚ญใƒšใƒ€ใƒซใ‚’่ธใ‚“ใงใ„ใ‚‹้–“ใ‚‚ใ€openpilotใฎใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใฏๆœ‰ๅŠนใฎใพใพใงใ™ใ€‚</b> Enable With Cruise Control - ใ‚ฏใƒซใƒผใ‚บใ‚ณใƒณใƒˆใƒญใƒผใƒซใ‚’ๆœ‰ๅŠนใซใ™ใ‚‹ + ใ‚ฏใƒซใƒผใ‚บใ‚ณใƒณใƒˆใƒญใƒผใƒซใงๆœ‰ๅŠนใซใ™ใ‚‹ - Allow <b>Always on Lateral</b> to be active whenever <b>Cruise Control</b> is active, bypassing the need to enable openpilot first. - <b>Cruise Control</b>ใŒใ‚ขใ‚ฏใƒ†ใ‚ฃใƒ–ใชใจใใซ<b>Always on Lateral</b>ใ‚’ๅธธใซใ‚ขใ‚ฏใƒ†ใ‚ฃใƒ–ใซใ—ใ€openpilotใ‚’ๆœ€ๅˆใซๆœ‰ๅŠนใซใ™ใ‚‹ๅฟ…่ฆใ‚’ๅ›ž้ฟใ—ใพใ™ใ€‚ + <b>Enable "Always On Lateral" whenever "Cruise Control" is on, even when openpilot is not engaged.</b> + <b>openpilotใŒไฝœๅ‹•ใ—ใฆใ„ใชใ„ๅ ดๅˆใงใ‚‚ใ€ใ€ŒCruise Controlใ€ใŒใ‚ชใƒณใฎใจใใฏๅธธใซใ€ŒAlways On Lateralใ€ใ‚’ๆœ‰ๅŠนใซใ—ใพใ™ใ€‚</b> - Enable With LKAS Button - LKASใƒœใ‚ฟใƒณใงๆœ‰ๅŠนใซใ™ใ‚‹ + Enable With LKAS + LKASใจๅ…ฑใซๆœ‰ๅŠนๅŒ– - Allow <b>Always on Lateral</b> to be active whenever <b>LKAS</b> is active, bypassing the need to enable openpilot first. - <b>LKAS</b>ใŒใ‚ขใ‚ฏใƒ†ใ‚ฃใƒ–ใชใจใใซ<b>Always on Lateral</b>ใ‚’ใ‚ขใ‚ฏใƒ†ใ‚ฃใƒ–ใซใ—ใ€openpilotใ‚’ๆœ€ๅˆใซๆœ‰ๅŠนใซใ™ใ‚‹ๅฟ…่ฆใ‚’ๅ›ž้ฟใ—ใพใ™ใ€‚ + <b>Enable "Always On Lateral" whenever "LKAS" is on, even when openpilot is not engaged.</b> + <b>openpilotใŒไฝœๅ‹•ใ—ใฆใ„ใชใ„ใจใใงใ‚‚ใ€ใ€ŒLKASใ€ใŒใ‚ชใƒณใฎใจใใฏๅธธใซใ€ŒAlways On Lateralใ€ใ‚’ๆœ‰ๅŠนใซใ—ใพใ™ใ€‚</b> - Pause on Brake Below - ใƒ–ใƒฌใƒผใ‚ญไธ‹ใงไธ€ๆ™‚ๅœๆญข + Pause on Brake Press Below + ใƒ–ใƒฌใƒผใ‚ญๆŠผไธ‹ๆ™‚ใซไธ€ๆ™‚ๅœๆญข๏ผˆไปฅไธ‹๏ผ‰ - Temporarily pause <b>Always on Lateral</b> below the set speed when braking. - ใƒ–ใƒฌใƒผใ‚ญใ‚’ใ‹ใ‘ใ‚‹ใจใ€่จญๅฎš้€Ÿๅบฆไปฅไธ‹ใง<b>Always on Lateral</b>ใ‚’ไธ€ๆ™‚ๅœๆญขใ—ใพใ™ใ€‚ + <b>Pause "Always On Lateral" below the set speed while the brake pedal is pressed.</b> + <b>ใƒ–ใƒฌใƒผใ‚ญใƒšใƒ€ใƒซใ‚’่ธใ‚“ใงใ„ใ‚‹้–“ใ€่จญๅฎš้€Ÿๅบฆไปฅไธ‹ใงใฏใ€ŒAlways On Lateralใ€ใ‚’ไธ€ๆ™‚ๅœๆญขใ—ใพใ™ใ€‚</b> Lane Changes - ่ปŠ็ทšๅค‰ๆ›ด + ่ปŠ็ทšๅค‰ๆ›ด - Customize how openpilot performs lane changes. - openpilotใŒ่ปŠ็ทšๅค‰ๆ›ดใ‚’่กŒใ†ๆ–นๆณ•ใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ—ใพใ™ใ€‚ + <b>Allow openpilot to change lanes.</b> + <b>openpilotใซ่ปŠ็ทšๅค‰ๆ›ดใ‚’่จฑๅฏใ—ใพใ™ใ€‚</b> Automatic Lane Changes - ่‡ชๅ‹•่ปŠ็ทšๅค‰ๆ›ด + ่‡ชๅ‹•่ปŠ็ทšๅค‰ๆ›ด - Change lanes automatically when the turn signal is on. No steering input needed! - ใ‚ฆใ‚คใƒณใ‚ซใƒผใŒ็‚น็ฏใ—ใฆใ„ใ‚‹ใจใใซ่‡ชๅ‹•ใง่ปŠ็ทšๅค‰ๆ›ดใ‚’่กŒใ„ใพใ™ใ€‚ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐๆ“ไฝœใฏไธ่ฆใงใ™๏ผ + <b>When the turn signal is on, openpilot will automatically change lanes.</b> No steering-wheel nudge required! + <b>ใ‚ฟใƒผใƒณใ‚ทใ‚ฐใƒŠใƒซใŒใ‚ชใƒณใฎใจใใ€openpilotใฏ่‡ชๅ‹•ใง่ปŠ็ทšๅค‰ๆ›ดใ—ใพใ™ใ€‚</b> ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใธใฎ่ปฝใ„ๅ…ฅๅŠ›ใฏไธ่ฆใงใ™ใ€‚ Lane Change Delay - ่ปŠ็ทšๅค‰ๆ›ดใฎ้…ๅปถ + ่ปŠ็ทšๅค‰ๆ›ดใฎ้…ๅปถ - Delay automatic lane changes by the set amount of time. - ่‡ชๅ‹•่ปŠ็ทšๅค‰ๆ›ดใ‚’่จญๅฎšใ•ใ‚ŒใŸๆ™‚้–“ใ ใ‘้…ใ‚‰ใ›ใพใ™ใ€‚ + <b>Delay between turn signal activation and the start of an automatic lane change.</b> + <b>ใ‚ฆใ‚คใƒณใ‚ซใƒผไฝœๅ‹•ใ‹ใ‚‰่‡ชๅ‹•ใƒฌใƒผใƒณใƒใ‚งใƒณใ‚ธ้–‹ๅง‹ใพใงใฎ้…ๅปถใ€‚</b> Minimum Lane Change Speed - ๆœ€ๅฐ่ปŠ็ทšๅค‰ๆ›ด้€Ÿๅบฆ + ่ปŠ็ทšๅค‰ๆ›ดใฎๆœ€ไฝŽ้€Ÿๅบฆ - Minimum speed required for openpilot to perform a lane change. - openpilotใŒ่ปŠ็ทšๅค‰ๆ›ดใ‚’่กŒใ†ใŸใ‚ใซๅฟ…่ฆใชๆœ€ไฝŽ้€Ÿๅบฆใ€‚ + <b>Lowest speed at which openpilot will change lanes.</b> + <b>openpilot ใŒ่ปŠ็ทšๅค‰ๆ›ดใ‚’่กŒใ†ๆœ€ไฝŽ้€Ÿๅบฆใ€‚</b> Minimum Lane Width - ๆœ€ๅฐ่ปŠ็ทšๅน…ๅ“ก + ๆœ€ไฝŽ่ปŠ็ทšๅน… - openpilot won't initiate a lane change into a lane narrower than this width. - openpilotใฏใ€ใ“ใฎๅน…ใ‚ˆใ‚Š็‹ญใ„่ปŠ็ทšใธใฎ่ปŠ็ทšๅค‰ๆ›ดใ‚’้–‹ๅง‹ใ—ใพใ›ใ‚“ใ€‚ + <b>Prevent automatic lane changes into lanes narrower than the set width.</b> + <b>่จญๅฎšใ—ใŸๅน…ใ‚ˆใ‚Š็‹ญใ„่ปŠ็ทšใธใฎ่‡ชๅ‹•่ปŠ็ทšๅค‰ๆ›ดใ‚’้˜ฒๆญขใ—ใพใ™ใ€‚</b> One Lane Change Per Signal - ไฟกๅทใ”ใจใซ1ๅ›žใฎ่ปŠ็ทšๅค‰ๆ›ด + ใ‚ฆใ‚คใƒณใ‚ซใƒผ1ๅ›žใซใคใ1ๅ›žใฎ่ปŠ็ทšๅค‰ๆ›ด - Limit lane changes to one per turn signal activation. - ใ‚ฟใƒผใƒณใ‚ทใ‚ฐใƒŠใƒซใฎไฝœๅ‹•ใ”ใจใซ่ปŠ็ทšๅค‰ๆ›ดใ‚’1ๅ›žใซๅˆถ้™ใ™ใ‚‹ใ€‚ + <b>Limit automatic lane changes to one per turn-signal activation.</b> + <b>ใ‚ฟใƒผใƒณใ‚ทใ‚ฐใƒŠใƒซใฎ1ๅ›žใฎไฝœๅ‹•ใซใคใใ€่‡ชๅ‹•ใƒฌใƒผใƒณๅค‰ๆ›ดใฏ1ๅ›žใซๅˆถ้™ใ—ใพใ™ใ€‚</b> Lateral Tuning - ใƒฉใƒ†ใƒฉใƒซใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐ + ๆจชๅˆถๅพกใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐ - Settings for fine-tuning openpilot's lateral controls. - openpilotใฎๆจชๆ–นๅ‘ๅˆถๅพกใฎๅพฎ่ชฟๆ•ด่จญๅฎšใ€‚ + <b>Miscellaneous steering control changes</b> to fine-tune how openpilot drives. + <b>ใใฎไป–ใฎใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐๅˆถๅพกใฎๅค‰ๆ›ด</b>ใงใ€openpilotใฎ่ตฐ่กŒใ‚’ๅพฎ่ชฟๆ•ดใ—ใพใ™ใ€‚ Force Turn Desires Below Lane Change Speed - ใƒฌใƒผใƒณๅค‰ๆ›ด้€Ÿๅบฆไปฅไธ‹ใงๆฌฒๆœ›ใ‚’ๅผทๅˆถ็š„ใซๆŠ‘ใˆใ‚‹ + ่ปŠ็ทšๅค‰ๆ›ด้€Ÿๅบฆๆœชๆบ€ใงใฎๅผทๅˆถใ‚ฟใƒผใƒณๆฌฒๆฑ‚ - Force turn desires below the minimum lane change speed to improve turning accuracy. - ๆœ€ๅฐ่ปŠ็ทšๅค‰ๆ›ด้€Ÿๅบฆไปฅไธ‹ใฎๆฌฒๆฑ‚ใ‚’ๅผทๅˆถ็š„ใซๅ›ž่ปขใ•ใ›ใ€ๅ›ž่ปข็ฒพๅบฆใ‚’ๅ‘ไธŠใ•ใ›ใพใ™ใ€‚ - - - Neural Network Feedforward (NNFF) - ใƒ‹ใƒฅใƒผใƒฉใƒซใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใƒ•ใ‚ฃใƒผใƒ‰ใƒ•ใ‚ฉใƒฏใƒผใƒ‰ (NNFF) - - - Use <b>Twilsoncoโ€™s</b> <b>Neural Network FeedForward</b> model for smoother, model-based steering trained on your vehicle's data. - <b>Twilsoncoใฎ</b> <b>Neural Network FeedForward</b>ใƒขใƒ‡ใƒซใ‚’ไฝฟ็”จใ—ใฆใ€่ปŠไธกใฎใƒ‡ใƒผใ‚ฟใงใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ•ใ‚ŒใŸใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใชใƒขใƒ‡ใƒซใƒ™ใƒผใ‚นใฎใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใ‚’ๅฎŸ็พใ—ใพใ™ใ€‚ - - - Smooth Curve Handling - ใ‚นใƒ ใƒผใ‚บใชใ‚ซใƒผใƒ–ๅ‡ฆ็† - - - Use <b>Twilsoncoโ€™s</b> torque-based adjustments to smooth out steering during curves. - ใ‚ซใƒผใƒ–ไธญใฎใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใ‚’ใ‚นใƒ ใƒผใ‚บใซใ™ใ‚‹ใŸใ‚ใซใ€<b>Twilsonco</b>ใฎใƒˆใƒซใ‚ฏใƒ™ใƒผใ‚นใฎ่ชฟๆ•ดใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚ + <b>While driving below the minimum lane change speed with an active turn signal, instruct openpilot to turn left/right.</b> + <b>ๆœ€ไฝŽ่ปŠ็ทšๅค‰ๆ›ด้€Ÿๅบฆๆœชๆบ€ใง่ตฐ่กŒไธญใซใ‚ฟใƒผใƒณใ‚ทใ‚ฐใƒŠใƒซใŒไฝœๅ‹•ใ—ใฆใ„ใ‚‹ๅ ดๅˆใ€openpilot ใซๅทฆ/ๅณใธใฎใ‚ฟใƒผใƒณใ‚’ๆŒ‡็คบใ—ใพใ™ใ€‚</b> Quality of Life - ็”Ÿๆดปใฎ่ณช + ็”Ÿๆดปใฎ่ณช - Miscellaneous features to improve the steering experience. - ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐไฝ“้จ“ใ‚’ๅ‘ไธŠใ•ใ›ใ‚‹ใŸใ‚ใฎใใฎไป–ใฎๆฉŸ่ƒฝใ€‚ + <b>Steering control changes to fine-tune how openpilot drives.</b> + <b>ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐๅˆถๅพกใฎๅค‰ๆ›ดใซใ‚ˆใ‚Šใ€openpilotใฎ่ตฐ่กŒใ‚’ๅพฎ่ชฟๆ•ดใ—ใพใ™ใ€‚</b> Pause Steering Below - ไปฅไธ‹ใฎใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใ‚’ไธ€ๆ™‚ๅœๆญข + ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใ‚’ไธ€ๆ™‚ๅœๆญข๏ผˆไปฅไธ‹๏ผ‰ - Temporarily pause steering control below the set speed. - ่จญๅฎš้€Ÿๅบฆไปฅไธ‹ใงใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐๅˆถๅพกใ‚’ไธ€ๆ™‚ๅœๆญขใ—ใพใ™ใ€‚ + <b>Pause steering below the set speed.</b> + <b>่จญๅฎš้€Ÿๅบฆๆœชๆบ€ใงใฏใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใ‚’ไธ€ๆ™‚ๅœๆญขใ—ใพใ™ใ€‚</b> Instant - ใ‚คใƒณใ‚นใ‚ฟใƒณใƒˆ + ็žฌๆ™‚ second - 2็•ช็›ฎ + ็ง’ seconds - ็ง’ - - - Are you sure you want to completely reset your <b>Actuator Delay</b>? - <b>ใ‚ขใ‚ฏใƒใƒฅใ‚จใƒผใ‚ฟ้…ๅปถ</b>ใ‚’ๅฎŒๅ…จใซใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Are you sure you want to completely reset your <b>Friction</b>? - <b>Friction</b>ใ‚’ๅฎŒๅ…จใซใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Are you sure you want to completely reset your <b>Kp Factor</b>? - <b>Kp Factor</b>ใ‚’ๅฎŒๅ…จใซใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Are you sure you want to completely reset your <b>Lateral Accel</b>? - <b>Lateral Accel</b>ใ‚’ๅฎŒๅ…จใซใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Are you sure you want to completely reset your <b>Steer Ratio</b>? - <b>ใ‚นใƒ†ใ‚ขๆฏ”</b>ใ‚’ๅฎŒๅ…จใซใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Off - ใ‚ชใƒ• - - - foot - ่ถณ - - - feet - ใƒ•ใ‚ฃใƒผใƒˆ - - - mph - mph - - - meter - ใƒกใƒผใƒˆใƒซ - - - meters - ใƒกใƒผใƒˆใƒซ - - - km/h - km/h + ็ง’ Turn Signal Only - ใ‚ฟใƒผใƒณใ‚ทใ‚ฐใƒŠใƒซใฎใฟ + ใ‚ฟใƒผใƒณใ‚ทใ‚ฐใƒŠใƒซใฎใฟ + + + Reset <b>Actuator Delay</b> to its default value? + <b>ใ‚ขใ‚ฏใƒใƒฅใ‚จใƒผใ‚ฟ้…ๅปถ</b>ใ‚’ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆๅ€คใซใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ‹๏ผŸ + + + Reset <b>Friction</b> to its default value? + <b>Friction</b>ใ‚’ๆ—ขๅฎšๅ€คใซใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ‹? + + + Reset <b>Kp Factor</b> to its default value? + <b>Kpไฟ‚ๆ•ฐ</b>ใ‚’ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆๅ€คใซใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ‹? + + + Reset <b>Lateral Accel</b> to its default value? + <b>Lateral Accel</b> ใ‚’ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆๅ€คใซใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ‹๏ผŸ + + + Reset <b>Steer Ratio</b> to its default value? + <b>Steer Ratio</b> ใ‚’ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆๅ€คใซใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ‹๏ผŸ + + + Lateral Accel (Default: %1) + ๆจชๅŠ ้€Ÿๅบฆ๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1๏ผ‰ + + + Off + ใ‚ชใƒ• + + + foot + ่ถณ + + + feet + ใƒ•ใ‚ฃใƒผใƒˆ + + + mph + mph + + + meter + ใƒกใƒผใ‚ฟใƒผ + + + meters + ใƒกใƒผใƒˆใƒซ + + + km/h + km/h + + + Neural Network Feedforward (NNFF) + ใƒ‹ใƒฅใƒผใƒฉใƒซใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใƒปใƒ•ใ‚ฃใƒผใƒ‰ใƒ•ใ‚ฉใƒฏใƒผใƒ‰๏ผˆNNFF๏ผ‰ + + + <b>Twilsonco's "Neural Network FeedForward" model controller for smoother, model-based steering trained on your vehicle's data.</b> + <b>Twilsonco ใฎใ€ŒNeural Network FeedForwardใ€ใƒขใƒ‡ใƒซใ‚ณใƒณใƒˆใƒญใƒผใƒฉใƒผใ€‚่ปŠไธกใฎใƒ‡ใƒผใ‚ฟใงๅญฆ็ฟ’ใ•ใ‚ŒใŸใƒขใƒ‡ใƒซใƒ™ใƒผใ‚นใฎใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใซใ‚ˆใ‚Šใ€ใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใชๆ“่ˆตใ‚’ๅฎŸ็พใ—ใพใ™ใ€‚</b> + + + Smooth Curve Handling + ๆป‘ใ‚‰ใ‹ใชใ‚ซใƒผใƒ–ๅ‡ฆ็† + + + <b>Twilsonco's torque-based adjustments to smoothen out steering in curves.</b> + <b>ใ‚ซใƒผใƒ–ใงใฎใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใ‚’ๆป‘ใ‚‰ใ‹ใซใ™ใ‚‹ใŸใ‚ใฎTwilsoncoใฎใƒˆใƒซใ‚ฏใƒ™ใƒผใ‚น่ชฟๆ•ดใ€‚</b> FrogPilotLongitudinalPanel - - Conditional Experimental Mode - ๆกไปถไป˜ใๅฎŸ้จ“ใƒขใƒผใƒ‰ - - - Automatically switch to <b>Experimental Mode</b> when set conditions are met. - ่จญๅฎšๆกไปถใŒๆบ€ใŸใ•ใ‚ŒใŸใจใใซ่‡ชๅ‹•็š„ใซ<b>ๅฎŸ้จ“ใƒขใƒผใƒ‰</b>ใซๅˆ‡ใ‚Šๆ›ฟใˆใพใ™ใ€‚ - - - Below - ไปฅไธ‹ - - - Switch to <b>Experimental Mode</b> when driving below this speed. - ใ“ใฎ้€Ÿๅบฆไปฅไธ‹ใง้‹่ปขใ™ใ‚‹้š›ใฏใ€<b>ๅฎŸ้จ“ใƒขใƒผใƒ‰</b>ใซๅˆ‡ใ‚Šๆ›ฟใˆใฆใใ ใ•ใ„ใ€‚ - - - Curve Detected Ahead - ๅ‰ๆ–นใซใ‚ซใƒผใƒ–ใ‚ใ‚Š - - - Switch to <b>Experimental Mode</b> when a curve is detected ahead. Useful for letting the model choose the appropriate speed for the curve. - ใ‚ซใƒผใƒ–ใŒๆคœๅ‡บใ•ใ‚ŒใŸใจใใซ<b>ๅฎŸ้จ“ใƒขใƒผใƒ‰</b>ใซๅˆ‡ใ‚Šๆ›ฟใˆใพใ™ใ€‚ใ‚ซใƒผใƒ–ใซ้ฉใ—ใŸ้€Ÿๅบฆใ‚’ใƒขใƒ‡ใƒซใŒ้ธๆŠžใ™ใ‚‹ใฎใซๅฝน็ซ‹ใกใพใ™ใ€‚ - - - Lead Detected Ahead - ๅ‰ๆ–นใซ้‰›ใŒๆคœๅ‡บใ•ใ‚Œใพใ—ใŸใ€‚ - - - Switch to <b>Experimental Mode</b> when a slower or stopped vehicle is detected ahead. Can improve braking smoothness and reliability on some vehicles. - ๅ‰ๆ–นใซ้…ใ„ใพใŸใฏๅœๆญขใ—ใŸ่ปŠไธกใŒๆคœๅ‡บใ•ใ‚ŒใŸๅ ดๅˆใ€<b>ๅฎŸ้จ“ใƒขใƒผใƒ‰</b>ใซๅˆ‡ใ‚Šๆ›ฟใˆใพใ™ใ€‚ไธ€้ƒจใฎ่ปŠไธกใงใƒ–ใƒฌใƒผใ‚ญใฎๆป‘ใ‚‰ใ‹ใ•ใจไฟก้ ผๆ€งใ‚’ๅ‘ไธŠใ•ใ›ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚ - - - Navigation Data - ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณใƒ‡ใƒผใ‚ฟ - - - Switch to <b>Experimental Mode</b> when approaching intersections or turns on the active route while using <b>Navigate on openpilot (NOO)</b>. Useful for letting the model choose the appropriate speed for upcoming navigation maneuvers. - ไบคๅทฎ็‚นใ‚„ๆ›ฒใŒใ‚Š่ง’ใซ่ฟ‘ใฅใ้š›ใซใ€<b>Navigate on openpilot (NOO)</b>ใ‚’ไฝฟ็”จใ—ใฆใ„ใ‚‹ๅ ดๅˆใฏใ€<b>ๅฎŸ้จ“ใƒขใƒผใƒ‰</b>ใซๅˆ‡ใ‚Šๆ›ฟใˆใฆใใ ใ•ใ„ใ€‚ใ“ใ‚Œใซใ‚ˆใ‚Šใ€ใƒขใƒ‡ใƒซใŒไปŠๅพŒใฎใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณๆ“ไฝœใซ้ฉใ—ใŸ้€Ÿๅบฆใ‚’้ธๆŠžใ™ใ‚‹ใฎใซๅฝน็ซ‹ใกใพใ™ใ€‚ - - - openpilot Wants to Stop In - openpilotใŒๅœๆญขใ—ใ‚ˆใ†ใจใ—ใฆใ„ใพใ™ - - - Switch to <b>Experimental Mode</b> when openpilot wants to stop within the set amount of time. This is typically triggered by the driving model "detecting" a red light or stop sign. - openpilotใŒ่จญๅฎšใ•ใ‚ŒใŸๆ™‚้–“ๅ†…ใซๅœๆญขใ—ใŸใ„ๅ ดๅˆใฏใ€<b>ๅฎŸ้จ“ใƒขใƒผใƒ‰</b>ใซๅˆ‡ใ‚Šๆ›ฟใˆใฆใใ ใ•ใ„ใ€‚ใ“ใ‚Œใฏ้€šๅธธใ€้‹่ปขใƒขใƒ‡ใƒซใŒ่ตคไฟกๅทใ‚„ๅœๆญขๆจ™่ญ˜ใ‚’ใ€Œๆคœๅ‡บใ€ใ—ใŸใจใใซใƒˆใƒชใ‚ฌใƒผใ•ใ‚Œใพใ™ใ€‚ - - - Turn Signal Below - ใ‚ฟใƒผใƒณใ‚ทใ‚ฐใƒŠใƒซไธ‹ - - - Switch to <b>Experimental Mode</b> when using a turn signal below the set speed. Useful for letting the model choose the appropriate speed for upcoming left or right turns. - ่จญๅฎš้€Ÿๅบฆไปฅไธ‹ใงใ‚ฟใƒผใƒณใ‚ทใ‚ฐใƒŠใƒซใ‚’ไฝฟ็”จใ™ใ‚‹้š›ใซ<b>ๅฎŸ้จ“ใƒขใƒผใƒ‰</b>ใซๅˆ‡ใ‚Šๆ›ฟใˆใพใ™ใ€‚ใ“ใ‚Œใซใ‚ˆใ‚Šใ€ใƒขใƒ‡ใƒซใŒๆฌกใฎๅทฆๆŠ˜ใพใŸใฏๅณๆŠ˜ใซ้ฉใ—ใŸ้€Ÿๅบฆใ‚’้ธๆŠžใ™ใ‚‹ใฎใซๅฝน็ซ‹ใกใพใ™ใ€‚ - - - Status Widget - ใ‚นใƒ†ใƒผใ‚ฟใ‚นใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆ - - - Show the <b>Conditional Experimental Mode</b> status on the driving screen. - ้‹่ปข็”ป้ขใซ<b>ๆกไปถไป˜ใๅฎŸ้จ“ใƒขใƒผใƒ‰</b>ใฎใ‚นใƒ†ใƒผใ‚ฟใ‚นใ‚’่กจ็คบใ—ใพใ™ใ€‚ - - - Show <b>Curve Speed Control</b>'s desired speed on the driving screen. - ้‹่ปข็”ป้ขใซ<b>ใ‚ซใƒผใƒ–้€Ÿๅบฆๅˆถๅพก</b>ใฎๅธŒๆœ›้€Ÿๅบฆใ‚’่กจ็คบใ—ใพใ™ใ€‚ - - - Customize Driving Personalities - ้‹่ปขใฎๅ€‹ๆ€งใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ™ใ‚‹ - - - Customize the personality profiles to your driving style. - ้‹่ปขใ‚นใ‚ฟใ‚คใƒซใซๅˆใ‚ใ›ใฆใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ—ใพใ™ใ€‚ - - - Traffic Personality - ใƒˆใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃ - - - Customize the <b>Traffic</b> personality profile. Tailored for navigating through traffic. - <b>ไบค้€š</b>ใฎใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ—ใพใ™ใ€‚ไบค้€šใ‚’ใƒŠใƒ“ใ‚ฒใƒผใƒˆใ™ใ‚‹ใŸใ‚ใซ่ชฟๆ•ดใ•ใ‚Œใฆใ„ใพใ™ใ€‚ - - - Following Distance - ่ฟฝๅพ“่ท้›ข - - - The minimum following distance while in <b>Traffic Mode</b>. openpilot will dynamically adjust between this value and the value in the <b>Aggressive</b> profile based on your current speed. - <b>ไบค้€šใƒขใƒผใƒ‰</b>ไธญใฎๆœ€ๅฐ่ฟฝๅพ“่ท้›ขใ€‚openpilotใฏ็พๅœจใฎ้€ŸๅบฆใซๅŸบใฅใ„ใฆใ€ใ“ใฎๅ€คใจ<b>ใ‚ขใ‚ฐใƒฌใƒƒใ‚ทใƒ–</b>ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใฎๅ€คใฎ้–“ใงๅ‹•็š„ใซ่ชฟๆ•ดใ—ใพใ™ใ€‚ - - - Acceleration Sensitivity - ๅŠ ้€Ÿๅบฆๆ„Ÿๅบฆ - - - How sensitive openpilot is to changes in acceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>ไบค้€šใƒขใƒผใƒ‰</b>ใงใฎๅŠ ้€Ÿใฎๅค‰ๅŒ–ใซๅฏพใ™ใ‚‹openpilotใฎๆ„Ÿๅบฆใ€‚้ซ˜ใ„ๅ€คใฏใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใงๅพใ€…ใชๅŠ ้€Ÿใ‚’ใ‚‚ใŸใ‚‰ใ—ใ€ไฝŽใ„ๅ€คใฏใ‚ˆใ‚Š่ฟ…้€Ÿใงๅๅฟœใฎ่‰ฏใ„ๅค‰ๅŒ–ใ‚’ๅฏ่ƒฝใซใ—ใ€ๆ€ฅใซๆ„Ÿใ˜ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ - - - Deceleration Sensitivity - ๆธ›้€Ÿๆ„Ÿๅบฆ - - - How sensitive openpilot is to changes in deceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>ไบค้€šใƒขใƒผใƒ‰</b>ใงใฎๆธ›้€Ÿใฎๅค‰ๅŒ–ใซๅฏพใ™ใ‚‹openpilotใฎๆ„Ÿๅบฆใ€‚ๅ€คใŒ้ซ˜ใ„ใปใฉใ€ใ‚ˆใ‚Šๆป‘ใ‚‰ใ‹ใง็ทฉใ‚„ใ‹ใชๆธ›้€ŸใŒ่กŒใ‚ใ‚Œใ€ๅ€คใŒไฝŽใ„ใปใฉใ€ใ‚ˆใ‚Š่ฟ…้€Ÿใงๅฟœ็ญ”ๆ€งใฎ้ซ˜ใ„ๅค‰ๅŒ–ใŒๅฏ่ƒฝใซใชใ‚Šใ€ๆ€ฅใซๆ„Ÿใ˜ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ - - - Safety Distance Sensitivity - ๅฎ‰ๅ…จ่ท้›ขๆ„Ÿๅบฆ - - - How cautious openpilot is around other vehicles or obstacles while in <b>Traffic Mode</b>. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - <b>ไบค้€šใƒขใƒผใƒ‰</b>ใงไป–ใฎ่ปŠไธกใ‚„้šœๅฎณ็‰ฉใซๅฏพใ™ใ‚‹openpilotใฎๆ…Ž้‡ใ•ใ€‚ๅ€คใŒ้ซ˜ใ„ใปใฉ่ฟฝๅพ“่ท้›ขใŒ้•ทใใชใ‚Šใ€ๅฎ‰ๅ…จๆ€งใ‚’ๅ„ชๅ…ˆใ—ใ€ใ‚ˆใ‚Šๆ…Ž้‡ใช้‹่ปขใซใชใ‚Šใพใ™ใŒใ€ๅ€คใŒไฝŽใ„ใจ่ฟฝๅพ“่ท้›ขใŒ็Ÿญใใชใ‚Šใ€ๅๅฟœๆ™‚้–“ใŒ็Ÿญใใชใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ - - - Speed Increase Response - ้€Ÿๅบฆใฎๅข—ๅŠ ๅฟœ็ญ” - - - How quickly openpilot increases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>ไบค้€šใƒขใƒผใƒ‰</b>ใงใ‚ชใƒผใƒ—ใƒณใƒ‘ใ‚คใƒญใƒƒใƒˆใŒ้€Ÿๅบฆใ‚’ใฉใ‚Œใ ใ‘้€ŸใไธŠใ’ใ‚‹ใ‹ใ€‚้ซ˜ใ„ๅ€คใฏๅŠ ้€Ÿๆ™‚ใซใ‚ˆใ‚Šๆป‘ใ‚‰ใ‹ใงๅพใ€…ใซ้€ŸๅบฆใŒๅค‰ๅŒ–ใ™ใ‚‹ใ“ใจใ‚’ไฟ่จผใ—ใ€ไฝŽใ„ๅ€คใฏใ‚ˆใ‚Š่ฟ…้€Ÿใงๅๅฟœใฎ่‰ฏใ„ๅค‰ๅŒ–ใ‚’ๅฏ่ƒฝใซใ—ใ€ๆ€ฅใซๆ„Ÿใ˜ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ - - - Speed Decrease Response - ้€ŸๅบฆไฝŽไธ‹ใฎๅๅฟœ - - - How quickly openpilot decreases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>ไบค้€šใƒขใƒผใƒ‰</b>ใงใ‚ชใƒผใƒ—ใƒณใƒ‘ใ‚คใƒญใƒƒใƒˆใŒ้€Ÿๅบฆใ‚’ใฉใ‚Œใ ใ‘้€Ÿใๆธ›ๅฐ‘ใ•ใ›ใ‚‹ใ‹ใ€‚้ซ˜ใ„ๅ€คใฏๆธ›้€Ÿๆ™‚ใซใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใง็ทฉใ‚„ใ‹ใช้€Ÿๅบฆๅค‰ๅŒ–ใ‚’ไฟ่จผใ—ใ€ไฝŽใ„ๅ€คใฏใ‚ˆใ‚Š่ฟ…้€Ÿใงๅฟœ็ญ”ๆ€งใฎ้ซ˜ใ„ๅค‰ๅŒ–ใ‚’ๅฏ่ƒฝใซใ—ใ€ๆ€ฅใซๆ„Ÿใ˜ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ - - - Reset Settings - ่จญๅฎšใ‚’ใƒชใ‚ปใƒƒใƒˆ - - - Reset <b>Traffic Mode</b> settings to default values. - <b>ใƒˆใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏใƒขใƒผใƒ‰</b>ใฎ่จญๅฎšใ‚’ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆๅ€คใซใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ€‚ - - - Aggressive Personality - ๆ”ปๆ’ƒ็š„ใชๆ€งๆ ผ - - - Customize the <b>Aggressive</b> personality profile. Designed for a more assertive driving style. - <b>ใ‚ขใ‚ฐใƒฌใƒƒใ‚ทใƒ–</b>ใชๆ€งๆ ผใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ—ใพใ™ใ€‚ใ‚ˆใ‚Š็ฉๆฅต็š„ใช้‹่ปขใ‚นใ‚ฟใ‚คใƒซใฎใŸใ‚ใซ่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใ€‚ - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Aggressive</b> personality profile.<br><br>Default: 1.25 seconds. - <Aggressive> ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ไฝฟ็”จใ—ใฆใ„ใ‚‹ๅ ดๅˆใ€openpilot ใฏๅ…ˆ่กŒ่ปŠไธกใฎๅพŒใ‚ใ‚’ไฝ•็ง’้–“่ฟฝๅพ“ใ—ใพใ™ใ‹ใ€‚<br><br>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: 1.25 ็ง’ใ€‚ - - - How sensitive openpilot is to changes in acceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>Aggressive</b>ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ไฝฟ็”จใ—ใฆใ„ใ‚‹ใจใใฎๅŠ ้€Ÿใฎๅค‰ๅŒ–ใซๅฏพใ™ใ‚‹openpilotใฎๆ„Ÿๅบฆใ€‚้ซ˜ใ„ๅ€คใฏใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใง็ทฉใ‚„ใ‹ใชๅŠ ้€Ÿใ‚’ใ‚‚ใŸใ‚‰ใ—ใ€ไฝŽใ„ๅ€คใฏใ‚ˆใ‚Š่ฟ…้€Ÿใงๅๅฟœใฎ่‰ฏใ„ๅค‰ๅŒ–ใ‚’ๅฏ่ƒฝใซใ—ใ€ๆ€ฅใซๆ„Ÿใ˜ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ - - - How sensitive openpilot is to changes in deceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>Aggressive</b>ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ไฝฟ็”จใ—ใฆใ„ใ‚‹ใจใใฎๆธ›้€Ÿใฎๅค‰ๅŒ–ใซๅฏพใ™ใ‚‹openpilotใฎๆ„Ÿๅบฆใ€‚้ซ˜ใ„ๅ€คใฏใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใง็ทฉใ‚„ใ‹ใชๆธ›้€Ÿใ‚’ใ‚‚ใŸใ‚‰ใ—ใ€ไฝŽใ„ๅ€คใฏใ‚ˆใ‚Š่ฟ…้€Ÿใงๅๅฟœ็š„ใชๅค‰ๅŒ–ใ‚’ๅฏ่ƒฝใซใ—ใ€ๆ€ฅใซๆ„Ÿใ˜ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Aggressive</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - <b>Aggressive</b>ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ไฝฟ็”จใ—ใฆใ„ใ‚‹ใจใใ€openpilotใŒไป–ใฎ่ปŠไธกใ‚„้šœๅฎณ็‰ฉใซๅฏพใ—ใฆใฉใ‚Œใปใฉๆ…Ž้‡ใงใ‚ใ‚‹ใ‹ใ€‚้ซ˜ใ„ๅ€คใฏ่ฟฝๅพ“่ท้›ขใ‚’ๅข—ใ‚„ใ—ใ€ๅฎ‰ๅ…จๆ€งใ‚’ๅ„ชๅ…ˆใ—ใ€ใ‚ˆใ‚Šๆ…Ž้‡ใช้‹่ปขใซใคใชใŒใ‚Šใพใ™ใŒใ€ไฝŽใ„ๅ€คใฏใ‚ˆใ‚Š่ฟ‘ใ„่ฟฝๅพ“ใ‚’ๅฏ่ƒฝใซใ—ใพใ™ใŒใ€ๅๅฟœๆ™‚้–“ใŒ็Ÿญใใชใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ - - - How quickly openpilot increases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>Aggressive</b>ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ไฝฟ็”จใ—ใฆใ„ใ‚‹ใจใใซใ€openpilotใŒ้€Ÿๅบฆใ‚’ใฉใ‚Œใ ใ‘้€ŸใไธŠใ’ใ‚‹ใ‹ใ€‚้ซ˜ใ„ๅ€คใฏๅŠ ้€Ÿๆ™‚ใฎ้€Ÿๅบฆๅค‰ๅŒ–ใ‚’ใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใงๆฎต้šŽ็š„ใซใ—ใ€ไฝŽใ„ๅ€คใฏใ‚ˆใ‚Š่ฟ…้€Ÿใงๅๅฟœ็š„ใชๅค‰ๅŒ–ใ‚’ๅฏ่ƒฝใซใ—ใ€ๆ€ฅใซๆ„Ÿใ˜ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ - - - How quickly openpilot decreases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>Aggressive</b>ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ไฝฟ็”จใ—ใฆใ„ใ‚‹ใจใใฎopenpilotใฎ้€Ÿๅบฆๆธ›ๅฐ‘ใฎ้€Ÿใ•ใ€‚้ซ˜ใ„ๅ€คใฏๆธ›้€Ÿๆ™‚ใซใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใงๅพใ€…ใช้€Ÿๅบฆๅค‰ๅŒ–ใ‚’ไฟ่จผใ—ใ€ไฝŽใ„ๅ€คใฏใ‚ˆใ‚Š่ฟ…้€Ÿใงๅๅฟœ็š„ใชๅค‰ๅŒ–ใ‚’ๅฏ่ƒฝใซใ—ใ€ๆ€ฅใซๆ„Ÿใ˜ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ - - - Reset the <b>Aggressive</b> personality profile settings to default values. - <b>ๆ”ปๆ’ƒ็š„</b>ใชๆ€งๆ ผใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซ่จญๅฎšใ‚’ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆๅ€คใซใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ€‚ - - - Standard Personality - ๆจ™ๆบ–็š„ใชไบบๆ ผ - - - Customize the <b>Standard</b> personality profile. Designed for a balanced driving style. - <b>ๆจ™ๆบ–</b>ใฎใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ—ใพใ™ใ€‚ใƒใƒฉใƒณใ‚นใฎๅ–ใ‚ŒใŸ้‹่ปขใ‚นใ‚ฟใ‚คใƒซใฎใŸใ‚ใซ่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใ€‚ - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Standard</b> personality profile.<br><br>Default: 1.45 seconds. - openpilotใŒ<b>ๆจ™ๆบ–</b>ใฎใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ไฝฟ็”จใ—ใฆๅ…ˆ่กŒ่ปŠไธกใ‚’่ฟฝๅพ“ใ™ใ‚‹็ง’ๆ•ฐใ€‚<br><br>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: 1.45็ง’ใ€‚ - - - How sensitive openpilot is to changes in acceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>Standard</b>ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ไฝฟ็”จใ—ใฆใ„ใ‚‹ใจใใฎๅŠ ้€Ÿใฎๅค‰ๅŒ–ใซๅฏพใ™ใ‚‹openpilotใฎๆ„Ÿๅบฆใ€‚้ซ˜ใ„ๅ€คใฏใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใงๅพใ€…ใชๅŠ ้€Ÿใ‚’ใ‚‚ใŸใ‚‰ใ—ใ€ไฝŽใ„ๅ€คใฏใ‚ˆใ‚Š่ฟ…้€Ÿใงๅๅฟœ็š„ใชๅค‰ๅŒ–ใ‚’ๅฏ่ƒฝใซใ—ใ€ๆ€ฅใซๆ„Ÿใ˜ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ - - - How sensitive openpilot is to changes in deceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>Standard</b>ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ไฝฟ็”จใ—ใฆใ„ใ‚‹ใจใใฎๆธ›้€Ÿใฎๅค‰ๅŒ–ใซๅฏพใ™ใ‚‹openpilotใฎๆ„Ÿๅบฆใ€‚้ซ˜ใ„ๅ€คใฏใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใง็ทฉใ‚„ใ‹ใชๆธ›้€Ÿใ‚’ใ‚‚ใŸใ‚‰ใ—ใ€ไฝŽใ„ๅ€คใฏใ‚ˆใ‚Š่ฟ…้€Ÿใงๅๅฟœใฎ่‰ฏใ„ๅค‰ๅŒ–ใ‚’ๅฏ่ƒฝใซใ—ใ€ๆ€ฅใซๆ„Ÿใ˜ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Standard</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - Translation A - - - How quickly openpilot increases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>Standard</b>ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ไฝฟ็”จใ—ใฆใ„ใ‚‹ใจใใซใ€openpilotใŒใฉใ‚Œใใ‚‰ใ„้€Ÿใ้€Ÿๅบฆใ‚’ไธŠใ’ใ‚‹ใ‹ใ€‚้ซ˜ใ„ๅ€คใฏๅŠ ้€Ÿๆ™‚ใฎ้€Ÿๅบฆๅค‰ๅŒ–ใ‚’ใ‚ˆใ‚Šๆป‘ใ‚‰ใ‹ใงๅพใ€…ใซใ—ใ€ไฝŽใ„ๅ€คใฏใ‚ˆใ‚Š่ฟ…้€Ÿใงๅๅฟœใฎ่‰ฏใ„ๅค‰ๅŒ–ใ‚’ๅฏ่ƒฝใซใ—ใ€ๆ€ฅใซๆ„Ÿใ˜ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ - - - How quickly openpilot decreases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>Standard</b>ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ไฝฟ็”จใ—ใฆใ„ใ‚‹ใจใใซใ€openpilotใŒ้€Ÿๅบฆใ‚’ใฉใฎใใ‚‰ใ„้€Ÿใๆธ›ๅฐ‘ใ•ใ›ใ‚‹ใ‹ใ€‚้ซ˜ใ„ๅ€คใฏใ€ๆธ›้€Ÿๆ™‚ใซใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใงๅพใ€…ใช้€Ÿๅบฆๅค‰ๅŒ–ใ‚’ไฟ่จผใ—ใ€ไฝŽใ„ๅ€คใฏใ€ใ‚ˆใ‚Š่ฟ…้€Ÿใงๅๅฟœ็š„ใชๅค‰ๅŒ–ใ‚’ๅฏ่ƒฝใซใ—ใ€ๆ€ฅใซๆ„Ÿใ˜ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ - - - Reset the <b>Standard</b> personality profile settings to default values. - <b>ๆจ™ๆบ–</b>ใฎใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซ่จญๅฎšใ‚’ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆๅ€คใซใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ€‚ - - - Relaxed Personality - ใƒชใƒฉใƒƒใ‚ฏใ‚นใ—ใŸๆ€งๆ ผ - - - Customize the <b>Relaxed</b> personality profile. Designed for a more laid-back driving style. - <b>ใƒชใƒฉใƒƒใ‚ฏใ‚น</b>ใ—ใŸๆ€งๆ ผใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ—ใพใ™ใ€‚ใ‚ˆใ‚Šใƒชใƒฉใƒƒใ‚ฏใ‚นใ—ใŸ้‹่ปขใ‚นใ‚ฟใ‚คใƒซใฎใŸใ‚ใซ่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใ€‚ - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Relaxed</b> personality profile.<br><br>Default: 1.75 seconds. - ใƒชใƒผใƒ‰่ปŠไธกใฎๅพŒใ‚ใ‚’<b>ใƒชใƒฉใƒƒใ‚ฏใ‚น</b>ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใง่ฟฝๅพ“ใ™ใ‚‹็ง’ๆ•ฐใ€‚<br><br>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: 1.75็ง’ใ€‚ - - - How sensitive openpilot is to changes in acceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>ใƒชใƒฉใƒƒใ‚ฏใ‚น</b>ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ไฝฟ็”จใ—ใฆใ„ใ‚‹ใจใใฎๅŠ ้€Ÿๅบฆใฎๅค‰ๅŒ–ใซๅฏพใ™ใ‚‹openpilotใฎๆ„Ÿๅบฆใ€‚้ซ˜ใ„ๅ€คใฏใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใงๅพใ€…ใชๅŠ ้€Ÿใ‚’ใ‚‚ใŸใ‚‰ใ—ใ€ไฝŽใ„ๅ€คใฏใ‚ˆใ‚Š่ฟ…้€Ÿใงๅๅฟœ็š„ใชๅค‰ๅŒ–ใ‚’ๅฏ่ƒฝใซใ—ใ€ๆ€ฅใซๆ„Ÿใ˜ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ - - - How sensitive openpilot is to changes in deceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>ใƒชใƒฉใƒƒใ‚ฏใ‚น</b>ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ไฝฟ็”จใ—ใฆใ„ใ‚‹ใจใใฎๆธ›้€Ÿใฎๅค‰ๅŒ–ใซๅฏพใ™ใ‚‹openpilotใฎๆ„Ÿๅบฆใ€‚้ซ˜ใ„ๅ€คใฏใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใง็ทฉใ‚„ใ‹ใชๆธ›้€Ÿใ‚’ใ‚‚ใŸใ‚‰ใ—ใ€ไฝŽใ„ๅ€คใฏใ‚ˆใ‚Š่ฟ…้€Ÿใงๅๅฟœ็š„ใชๅค‰ๅŒ–ใ‚’ๅฏ่ƒฝใซใ—ใ€ๆ€ฅใซๆ„Ÿใ˜ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Relaxed</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - <b>ใƒชใƒฉใƒƒใ‚ฏใ‚น</b>ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ไฝฟ็”จใ—ใฆใ„ใ‚‹ใจใใ€openpilotใŒไป–ใฎ่ปŠไธกใ‚„้šœๅฎณ็‰ฉใซๅฏพใ—ใฆใฉใ‚Œใปใฉๆ…Ž้‡ใงใ‚ใ‚‹ใ‹ใ€‚้ซ˜ใ„ๅ€คใฏ่ฟฝๅพ“่ท้›ขใ‚’ๅข—ใ‚„ใ—ใ€ๅฎ‰ๅ…จๆ€งใ‚’ๅ„ชๅ…ˆใ™ใ‚‹ใ“ใจใงใ€ใ‚ˆใ‚Šๆ…Ž้‡ใช้‹่ปขใซใคใชใŒใ‚Šใพใ™ใŒใ€ไฝŽใ„ๅ€คใฏใ‚ˆใ‚Š่ฟ‘ใ„่ฟฝๅพ“ใ‚’ๅฏ่ƒฝใซใ—ใพใ™ใŒใ€ๅๅฟœๆ™‚้–“ใŒ็Ÿญใใชใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ - - - How quickly openpilot increases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>ใƒชใƒฉใƒƒใ‚ฏใ‚น</b>ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ไฝฟ็”จใ—ใฆใ„ใ‚‹ใจใใฎopenpilotใฎ้€Ÿๅบฆๅข—ๅŠ ใฎ้€Ÿใ•ใ€‚้ซ˜ใ„ๅ€คใฏๅŠ ้€Ÿๆ™‚ใฎ้€Ÿๅบฆๅค‰ๅŒ–ใ‚’ใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใงๅพใ€…ใซใ™ใ‚‹ใฎใซๅฏพใ—ใ€ไฝŽใ„ๅ€คใฏใ‚ˆใ‚Š่ฟ…้€Ÿใงๅๅฟœ็š„ใชๅค‰ๅŒ–ใ‚’ๅฏ่ƒฝใซใ—ใ€ๆ€ฅใซๆ„Ÿใ˜ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ - - - How quickly openpilot decreases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>ใƒชใƒฉใƒƒใ‚ฏใ‚น</b>ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ไฝฟ็”จใ—ใฆใ„ใ‚‹ใจใใซใ€openpilotใŒ้€Ÿๅบฆใ‚’ใฉใ‚Œใ ใ‘่ฟ…้€Ÿใซๆธ›ๅฐ‘ใ•ใ›ใ‚‹ใ‹ใ€‚้ซ˜ใ„ๅ€คใฏใ€ๆธ›้€Ÿๆ™‚ใซใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใงๅพใ€…ใช้€Ÿๅบฆๅค‰ๅŒ–ใ‚’ไฟ่จผใ—ใ€ไฝŽใ„ๅ€คใฏใ€ใ‚ˆใ‚Š่ฟ…้€Ÿใงๅฟœ็ญ”ๆ€งใฎ้ซ˜ใ„ๅค‰ๅŒ–ใ‚’ๅฏ่ƒฝใซใ—ใ€ๆ€ฅใซๆ„Ÿใ˜ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ - - - Reset the <b>Relaxed</b> personality profile settings to default values. - <b>ใƒชใƒฉใƒƒใ‚ฏใ‚น</b>ใฎๆ€งๆ ผใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซ่จญๅฎšใ‚’ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆๅ€คใซใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ€‚ - - - Longitudinal Tuning - ็ธฆๆ–นๅ‘ใฎ่ชฟๆ•ด - - - Settings that control how openpilot manages speed and acceleration. - openpilotใŒ้€ŸๅบฆใจๅŠ ้€Ÿใ‚’็ฎก็†ใ™ใ‚‹ๆ–นๆณ•ใ‚’ๅˆถๅพกใ™ใ‚‹่จญๅฎšใ€‚ - - - Acceleration Profile - ๅŠ ้€Ÿใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซ - - - Enable either a sporty or eco-friendly acceleration profile. <b>Sport+</b> aims to make openpilot accelerate as fast as possible! - ใ‚นใƒใƒผใƒ†ใ‚ฃใพใŸใฏใ‚จใ‚ณใƒ•ใƒฌใƒณใƒ‰ใƒชใƒผใชๅŠ ้€Ÿใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ๆœ‰ๅŠนใซใ—ใพใ™ใ€‚<b>Sport+</b>ใฏใ€openpilotใŒๅฏ่ƒฝใช้™ใ‚Š้€ŸใๅŠ ้€Ÿใ™ใ‚‹ใ“ใจใ‚’็›ฎๆŒ‡ใ—ใพใ™๏ผ - - - Deceleration Profile - ๆธ›้€Ÿใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซ - - - Enable either a sporty or eco-friendly deceleration profile. - ใ‚นใƒใƒผใƒ†ใ‚ฃใƒผใพใŸใฏใ‚จใ‚ณใƒ•ใƒฌใƒณใƒ‰ใƒชใƒผใชๆธ›้€Ÿใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ๆœ‰ๅŠนใซใ—ใพใ™ใ€‚ - - - Human-Like Acceleration - ไบบ้–“ใฎใ‚ˆใ†ใชๅŠ ้€Ÿ - - - Use the lead vehicle's acceleration rate when at a takeoff and ramp off the acceleration rate when approaching the maximum set speed for a more "human-like" driving experience. - ็™บ้€ฒๆ™‚ใซใฏๅ…ˆ่กŒ่ปŠใฎๅŠ ้€Ÿๅบฆใ‚’ไฝฟ็”จใ—ใ€่จญๅฎšใ•ใ‚ŒใŸๆœ€ๅคง้€Ÿๅบฆใซ่ฟ‘ใฅใ้š›ใซใฏๅŠ ้€Ÿๅบฆใ‚’็ทฉใ‚ใ‚‹ใ“ใจใงใ€ใ‚ˆใ‚Šใ€Œไบบ้–“ใ‚‰ใ—ใ„ใ€้‹่ปขไฝ“้จ“ใ‚’ๅฎŸ็พใ—ใพใ™ใ€‚ - - - Human-Like Approach Behind Leads - ใƒชใƒผใƒ‰ใฎ่ƒŒๅพŒใซใ‚ใ‚‹ไบบ้–“็š„ใ‚ขใƒ—ใƒญใƒผใƒ - - - Dynamically adjust the desired following distance when approaching slower or stopped vehicles for a more "human-like" driving experience. - ใ‚ˆใ‚Šใ€Œไบบ้–“ใ‚‰ใ—ใ„ใ€้‹่ปขไฝ“้จ“ใฎใŸใ‚ใซใ€้…ใ„ใพใŸใฏๅœๆญขใ—ใŸ่ปŠไธกใซ่ฟ‘ใฅใ้š›ใซๅธŒๆœ›ใ™ใ‚‹่ฟฝๅพ“่ท้›ขใ‚’ๅ‹•็š„ใซ่ชฟๆ•ดใ—ใพใ™ใ€‚ - - - Lead Detection Confidence - ใƒชใƒผใƒ‰ๆคœๅ‡บใฎไฟก้ ผๅบฆ - - - How sensitive openpilot is to detecting vehicles ahead. A lower value can help detect vehicles sooner and from farther away, but increases the chance openpilot mistakes other objects for vehicles. - openpilotใŒๅ‰ๆ–นใฎ่ปŠไธกใ‚’ๆคœๅ‡บใ™ใ‚‹ๆ„Ÿๅบฆใ€‚ๅ€คใ‚’ไฝŽใใ™ใ‚‹ใจใ€่ปŠไธกใ‚’ใ‚ˆใ‚Šๆ—ฉใใ€ใ‚ˆใ‚Š้ ใใ‹ใ‚‰ๆคœๅ‡บใ™ใ‚‹ใฎใซๅฝน็ซ‹ใกใพใ™ใŒใ€openpilotใŒไป–ใฎ็‰ฉไฝ“ใ‚’่ปŠไธกใจ่ชค่ชใ™ใ‚‹ๅฏ่ƒฝๆ€งใŒ้ซ˜ใพใ‚Šใพใ™ใ€‚ - - - Maximum Acceleration Rate - ๆœ€ๅคงๅŠ ้€Ÿๅบฆ - - - Set a cap on how fast openpilot can accelerate. - openpilotใŒๅŠ ้€Ÿใงใใ‚‹้€ŸๅบฆใซไธŠ้™ใ‚’่จญๅฎšใ—ใพใ™ใ€‚ - - - "Taco Bell Run" Turn Speed Hack - ใ€ŒTaco Bell Runใ€ใ‚ฟใƒผใƒณใ‚นใƒ”ใƒผใƒ‰ใƒใƒƒใ‚ฏ - - - The turn speed hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to slow down when taking left/right turns for smoother turns. - ใ‚ซใƒณใƒžใฎ2022ๅนดใ€Œใ‚ฟใ‚ณใƒ™ใƒซใƒฉใƒณใ€ใƒ‰ใƒฉใ‚คใƒ–ใ‹ใ‚‰ใฎใ‚ฟใƒผใƒณใ‚นใƒ”ใƒผใƒ‰ใƒใƒƒใ‚ฏใ€‚ๅทฆ/ๅณๆŠ˜ๆ™‚ใซๆธ›้€Ÿใ—ใฆใ‚นใƒ ใƒผใ‚บใชใ‚ฟใƒผใƒณใ‚’ๅฎŸ็พใ™ใ‚‹ใ‚ˆใ†ใซ่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใ€‚ - - - Quality of Life - ็”Ÿๆดปใฎ่ณช - - - Miscellaneous features to improve the acceleration and braking experience. - ๅŠ ้€Ÿใจใƒ–ใƒฌใƒผใ‚ญใฎไฝ“้จ“ใ‚’ๅ‘ไธŠใ•ใ›ใ‚‹ใŸใ‚ใฎใใฎไป–ใฎๆฉŸ่ƒฝใ€‚ - - - Cruise Interval - ใ‚ฏใƒซใƒผใ‚บ้–“้š” - - - The interval used when changing the cruise control speed. - ใ‚ฏใƒซใƒผใ‚บใ‚ณใƒณใƒˆใƒญใƒผใƒซใฎ้€Ÿๅบฆใ‚’ๅค‰ๆ›ดใ™ใ‚‹้š›ใซไฝฟ็”จใ•ใ‚Œใ‚‹้–“้š”ใ€‚ - - - Cruise Interval (Long Press) - ใ‚ฏใƒซใƒผใ‚บ้–“้š”๏ผˆ้•ทๆŠผใ—๏ผ‰ - - - The interval used when changing the cruise control speed while holding down the button for 0.5+ seconds. - ใƒœใ‚ฟใƒณใ‚’0.5็ง’ไปฅไธŠๆŠผใ—็ถšใ‘ใŸใจใใซใ‚ฏใƒซใƒผใ‚บใ‚ณใƒณใƒˆใƒญใƒผใƒซใฎ้€Ÿๅบฆใ‚’ๅค‰ๆ›ดใ™ใ‚‹้š›ใซไฝฟ็”จใ•ใ‚Œใ‚‹้–“้š”ใ€‚ - - - Force Keep openpilot in the Standstill State - ใ‚ชใƒผใƒ—ใƒณใƒ‘ใ‚คใƒญใƒƒใƒˆใ‚’ๅœๆญข็Šถๆ…‹ใซ็ถญๆŒใ™ใ‚‹ใ‚ˆใ†ๅผทๅˆถใ™ใ‚‹ - - - Keep openpilot in the standstill state until either the gas pedal or <b>resume</b> button is pressed. - ใ‚ฌใ‚นใƒšใƒ€ใƒซใพใŸใฏ<b>ๅ†้–‹</b>ใƒœใ‚ฟใƒณใŒๆŠผใ•ใ‚Œใ‚‹ใพใงใ€ใ‚ชใƒผใƒ—ใƒณใƒ‘ใ‚คใƒญใƒƒใƒˆใ‚’ๅœๆญข็Šถๆ…‹ใซไฟใกใพใ™ใ€‚ - - - Force Stop for "Detected" Stop Lights/Signs - ใ€Œๆคœๅ‡บใ•ใ‚ŒใŸใ€ไฟกๅทๆฉŸ/ๆจ™่ญ˜ใฎๅผทๅˆถๅœๆญข - - - Force a stop whenever openpilot <b>detects</b> a potential red light/stop sign to prevent it from running the red light/stop sign. - openpilotใŒๆฝœๅœจ็š„ใช่ตคไฟกๅท/ๅœๆญขๆจ™่ญ˜ใ‚’<b>ๆคœๅ‡บ</b>ใ—ใŸใจใใซใ€่ตคไฟกๅท/ๅœๆญขๆจ™่ญ˜ใ‚’็„ก่ฆ–ใ—ใชใ„ใ‚ˆใ†ใซๅผทๅˆถ็š„ใซๅœๆญขใ—ใพใ™ใ€‚ - - - Increase Stopped Distance - ๅœๆญข่ท้›ขใ‚’ๅข—ใ‚„ใ™ - - - Increase the distance openpilot stops behind vehicles. - openpilotใŒ่ปŠไธกใฎๅพŒใ‚ใงๅœๆญขใ™ใ‚‹่ท้›ขใ‚’ๅข—ใ‚„ใ™ใ€‚ - - - Set Speed Offset - ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ‚’่จญๅฎš - - - How much higher or lower the set speed should be compared to your current set speed. For example, if you prefer to drive 5 mph above the speed limit, this setting will automatically add that difference when you adjust your set speed. - ็พๅœจใฎ่จญๅฎš้€Ÿๅบฆใจๆฏ”ในใฆใ€่จญๅฎš้€Ÿๅบฆใ‚’ใฉใ‚Œใ ใ‘้ซ˜ใใพใŸใฏไฝŽใใ™ใ‚‹ใ‹ใ‚’ๆŒ‡ๅฎšใ—ใพใ™ใ€‚ไพ‹ใˆใฐใ€ๅˆถ้™้€Ÿๅบฆใ‚ˆใ‚Š5 mph้ซ˜ใ่ตฐ่กŒใ—ใŸใ„ๅ ดๅˆใ€ใ“ใฎ่จญๅฎšใซใ‚ˆใ‚Š่จญๅฎš้€Ÿๅบฆใ‚’่ชฟๆ•ดใ™ใ‚‹้š›ใซใใฎๅทฎใŒ่‡ชๅ‹•็š„ใซ่ฟฝๅŠ ใ•ใ‚Œใพใ™ใ€‚ - - - Map Accel/Decel to Gears - ใ‚ฎใ‚ขใซๅŠ ้€Ÿ/ๆธ›้€Ÿใ‚’ใƒžใƒƒใƒ”ใƒณใ‚ฐ - - - Map the acceleration and deceleration profiles to your car's <b>Eco</b> or <b>Sport</b> gear modes. - ๅŠ ้€ŸใŠใ‚ˆใณๆธ›้€Ÿใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’่ปŠใฎ<b>Eco</b>ใพใŸใฏ<b>Sport</b>ใ‚ฎใ‚ขใƒขใƒผใƒ‰ใซใƒžใƒƒใƒ”ใƒณใ‚ฐใ—ใพใ™ใ€‚ - - - Reverse Cruise Increase - ใ‚ฏใƒซใƒผใ‚บๅข—ๅŠ ใ‚’้€†่ปข - - - Reverse the <b>long press</b> cruise increase feature to increase the max speed by 5 instead of 1 on short presses. - <b>้•ทๆŠผใ—</b>ใ‚ฏใƒซใƒผใ‚บๅข—ๅŠ ๆฉŸ่ƒฝใ‚’้€†ใซใ—ใฆใ€็ŸญๆŠผใ—ใงๆœ€ๅคง้€Ÿๅบฆใ‚’1ใงใฏใชใ5ๅข—ๅŠ ใ•ใ›ใพใ™ใ€‚ - - - Speed Limit Controller - ้€Ÿๅบฆๅˆถ้™ใ‚ณใƒณใƒˆใƒญใƒผใƒฉใƒผ - - - Limit openpilot's maximum driving speed based on data from downloaded maps, <b>Mapbox</b>, <b>Navigate on openpilot</b>, or the dashboard (supported vehicles: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใŸๅœฐๅ›ณใ€<b>Mapbox</b>ใ€<b>Navigate on openpilot</b>ใ€ใพใŸใฏใƒ€ใƒƒใ‚ทใƒฅใƒœใƒผใƒ‰ใฎใƒ‡ใƒผใ‚ฟใซๅŸบใฅใ„ใฆใ€openpilotใฎๆœ€ๅคง่ตฐ่กŒ้€Ÿๅบฆใ‚’ๅˆถ้™ใ—ใพใ™๏ผˆๅฏพๅฟœ่ปŠ็จฎ๏ผš<b>Ford</b>ใ€<b>Genesis</b>ใ€<b>Hyundai</b>ใ€<b>Kia</b>ใ€<b>Lexus</b>ใ€<b>Toyota</b>๏ผ‰ใ€‚ - - - Fallback Speed - ใƒ•ใ‚ฉใƒผใƒซใƒใƒƒใ‚ฏ้€Ÿๅบฆ - - - The speed limit source when no speed limit data is available. - ้€Ÿๅบฆๅˆถ้™ใƒ‡ใƒผใ‚ฟใŒๅˆฉ็”จใงใใชใ„ๅ ดๅˆใฎ้€Ÿๅบฆๅˆถ้™ใฎๆƒ…ๅ ฑๆบใ€‚ - - - Override Speed - ้€Ÿๅบฆใ‚’ไธŠๆ›ธใ - - - The speed openpilot uses after manually exceeding the posted speed limit.<br><br><b>- Set With Gas Pedal</b>: Uses the speed obtained while pressing the gas<br><b>- Max Set Speed</b>: Uses the cruise control set speed<br><br>Overrides clear upon disengagement. - ๆ‰‹ๅ‹•ใงๅˆถ้™้€Ÿๅบฆใ‚’่ถ…ใˆใŸๅพŒใซopenpilotใŒไฝฟ็”จใ™ใ‚‹้€Ÿๅบฆใ€‚<br><br><b>- ใ‚ขใ‚ฏใ‚ปใƒซใƒšใƒ€ใƒซใง่จญๅฎš</b>: ใ‚ขใ‚ฏใ‚ปใƒซใ‚’่ธใ‚“ใงใ„ใ‚‹้–“ใซๅพ—ใŸ้€Ÿๅบฆใ‚’ไฝฟ็”จ<br><b>- ๆœ€ๅคง่จญๅฎš้€Ÿๅบฆ</b>: ใ‚ฏใƒซใƒผใ‚บใ‚ณใƒณใƒˆใƒญใƒผใƒซใฎ่จญๅฎš้€Ÿๅบฆใ‚’ไฝฟ็”จ<br><br>่งฃ้™คๆ™‚ใซไธŠๆ›ธใใŒใ‚ฏใƒชใ‚ขใ•ใ‚Œใพใ™ใ€‚ - - - Miscellaneous features to improve the <b>Speed Limit Controller</b> experience. - ใ•ใพใ–ใพใชๆฉŸ่ƒฝใง<b>้€Ÿๅบฆๅˆถ้™ใ‚ณใƒณใƒˆใƒญใƒผใƒฉใƒผ</b>ใฎไฝ“้จ“ใ‚’ๅ‘ไธŠใ€‚ - - - Confirm New Speed Limits - ๆ–ฐใ—ใ„้€Ÿๅบฆๅˆถ้™ใ‚’็ขบ่ชใ™ใ‚‹ - - - Require confirmation before applying new speed limits. To accept, use the flashing widget on the driving screen or press the <b>Cruise Increase</b> button. To deny, press the <b>Cruise Decrease</b> button or simply ignore the prompt for 30 seconds. - ๆ–ฐใ—ใ„้€Ÿๅบฆๅˆถ้™ใ‚’้ฉ็”จใ™ใ‚‹ๅ‰ใซ็ขบ่ชใŒๅฟ…่ฆใงใ™ใ€‚ๆ‰ฟ่ชใ™ใ‚‹ใซใฏใ€้‹่ปข็”ป้ขใฎ็‚นๆป…ใ™ใ‚‹ใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆใ‚’ไฝฟ็”จใ™ใ‚‹ใ‹ใ€<b>ใ‚ฏใƒซใƒผใ‚บๅข—ๅŠ </b>ใƒœใ‚ฟใƒณใ‚’ๆŠผใ—ใฆใใ ใ•ใ„ใ€‚ๆ‹’ๅฆใ™ใ‚‹ใซใฏใ€<b>ใ‚ฏใƒซใƒผใ‚บๆธ›ๅฐ‘</b>ใƒœใ‚ฟใƒณใ‚’ๆŠผใ™ใ‹ใ€30็ง’้–“ใƒ—ใƒญใƒณใƒ—ใƒˆใ‚’็„ก่ฆ–ใ—ใฆใใ ใ•ใ„ใ€‚ - - - Force MPH Readings from Dashboard - ใƒ€ใƒƒใ‚ทใƒฅใƒœใƒผใƒ‰ใ‹ใ‚‰MPHใฎ่ชญใฟๅ–ใ‚Šใ‚’ๅผทๅˆถใ™ใ‚‹ - - - Force dashboard speed limit readings to be in mph. - ใƒ€ใƒƒใ‚ทใƒฅใƒœใƒผใƒ‰ใฎ้€Ÿๅบฆๅˆถ้™่กจ็คบใ‚’mphใซๅผทๅˆถใ™ใ‚‹ใ€‚ - - - Higher Limit Lookahead Time - ไธŠ้™ๅ…ˆ่ชญใฟๆ™‚้–“ - - - How far ahead openpilot anticipates upcoming higher speed limits from the downloaded map data. - openpilotใŒใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ•ใ‚ŒใŸๅœฐๅ›ณใƒ‡ใƒผใ‚ฟใ‹ใ‚‰ใฉใฎใใ‚‰ใ„ๅ…ˆใฎ้€Ÿๅบฆๅˆถ้™ใฎๅผ•ใไธŠใ’ใ‚’ไบˆๆธฌใ™ใ‚‹ใ‹ใ€‚ - - - Lower Limit Lookahead Time - ไธ‹้™ๅ…ˆ่ชญใฟๆ™‚้–“ - - - How far ahead openpilot anticipates upcoming lower speed limits from the downloaded map data. - openpilotใŒใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ•ใ‚ŒใŸๅœฐๅ›ณใƒ‡ใƒผใ‚ฟใ‹ใ‚‰ใฉใฎ็จ‹ๅบฆๅ…ˆใฎไฝŽ้€Ÿๅˆถ้™ใ‚’ไบˆๆธฌใ™ใ‚‹ใ‹ใ€‚ - - - Match Speed Limit on Engage - ใ‚จใƒณใ‚ฒใƒผใ‚ธใง้€Ÿๅบฆๅˆถ้™ใซๅˆใ‚ใ›ใ‚‹ - - - Automatically set cruise control speed to match the current speed limit when first enabling openpilot. - openpilotใ‚’ๅˆใ‚ใฆๆœ‰ๅŠนใซใ™ใ‚‹ใจใใซใ€ใ‚ฏใƒซใƒผใ‚บใ‚ณใƒณใƒˆใƒญใƒผใƒซใฎ้€Ÿๅบฆใ‚’็พๅœจใฎๅˆถ้™้€Ÿๅบฆใซ่‡ชๅ‹•็š„ใซ่จญๅฎšใ—ใพใ™ใ€‚ - - - Use Mapbox as Fallback - ใƒ•ใ‚ฉใƒผใƒซใƒใƒƒใ‚ฏใจใ—ใฆMapboxใ‚’ไฝฟ็”จ - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - ไป–ใฎๆƒ…ๅ ฑๆบใŒๅˆฉ็”จใงใใชใ„ๅ ดๅˆใฏใ€<b>Mapbox</b>ใฎ้€Ÿๅบฆๅˆถ้™ใƒ‡ใƒผใ‚ฟใ‚’ไฝฟ็”จใ—ใฆใใ ใ•ใ„ใ€‚ - - - Speed Limit Source Priority - ้€Ÿๅบฆๅˆถ้™ใ‚ฝใƒผใ‚นใฎๅ„ชๅ…ˆ้ †ไฝ - - - Define the priority order for speed limit sources (<b>Dashboard</b>, <b>Map Data</b>, <b>Navigation</b>). Higher-priority sources override lower ones when multiple limits are detected. - Translation A - - - Speed Limit Offsets - ้€Ÿๅบฆๅˆถ้™ใ‚ชใƒ•ใ‚ปใƒƒใƒˆ - - - Offsets relative to the posted speed limit for a more "human-like" driving experience. - ๆŽฒ็คบใ•ใ‚ŒใŸๅˆถ้™้€Ÿๅบฆใซๅฏพใ™ใ‚‹ใ‚ชใƒ•ใ‚ปใƒƒใƒˆใฏใ€ใ‚ˆใ‚Šใ€Œไบบ้–“ใ‚‰ใ—ใ„ใ€้‹่ปขไฝ“้จ“ใฎใŸใ‚ใงใ™ใ€‚ - - - Target speed offset applied for posted limits between 0 and 24 mph. - 0ใ‹ใ‚‰24 mphใฎๅˆถ้™้€Ÿๅบฆใซๅฏพใ—ใฆ้ฉ็”จใ•ใ‚Œใ‚‹็›ฎๆจ™้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ€‚ - - - Target speed offset applied for posted limits between 25 and 34 mph. - 25 mphใ‹ใ‚‰34 mphใฎๅˆถ้™้€Ÿๅบฆใซๅฏพใ—ใฆ้ฉ็”จใ•ใ‚Œใ‚‹็›ฎๆจ™้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ€‚ - - - Target speed offset applied for posted limits between 35 and 44 mph. - 35 mphใ‹ใ‚‰44 mphใฎๅˆถ้™้€Ÿๅบฆใซๅฏพใ—ใฆ้ฉ็”จใ•ใ‚Œใ‚‹็›ฎๆจ™้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ€‚ - - - Target speed offset applied for posted limits between 45 and 54 mph. - 45 mphใ‹ใ‚‰54 mphใฎๅˆถ้™้€Ÿๅบฆใซๅฏพใ—ใฆ้ฉ็”จใ•ใ‚Œใ‚‹็›ฎๆจ™้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ€‚ - - - Target speed offset applied for posted limits between 55 and 64 mph. - 55 mphใ‹ใ‚‰64 mphใฎๅˆถ้™้€Ÿๅบฆใซๅฏพใ—ใฆ้ฉ็”จใ•ใ‚Œใ‚‹็›ฎๆจ™้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ€‚ - - - Target speed offset applied for posted limits between 65 and 74 mph. - 65 mphใ‹ใ‚‰74 mphใฎๅˆถ้™้€Ÿๅบฆใซๅฏพใ—ใฆ้ฉ็”จใ•ใ‚Œใ‚‹็›ฎๆจ™้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ€‚ - - - Target speed offset applied for posted limits between 75 and 99 mph. - 75 mphใ‹ใ‚‰99 mphใฎๅˆถ้™้€Ÿๅบฆใซๅฏพใ—ใฆ้ฉ็”จใ•ใ‚Œใ‚‹็›ฎๆจ™้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ€‚ - - - Visual Settings - ใƒ“ใ‚ธใƒฅใ‚ขใƒซ่จญๅฎš - - - Visual features to improve the <b>Speed Limit Controller</b> experience. - ่ฆ–่ฆš็š„ๆฉŸ่ƒฝใง<b>้€Ÿๅบฆๅˆถ้™ใ‚ณใƒณใƒˆใƒญใƒผใƒฉใƒผ</b>ใฎไฝ“้จ“ใ‚’ๅ‘ไธŠใ•ใ›ใ‚‹ใ€‚ - - - Show Speed Limit Offset - ้€Ÿๅบฆๅˆถ้™ใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ‚’่กจ็คบ - - - Display the speed limit offset separately on the driving screen. - ้‹่ปข็”ป้ขใซ้€Ÿๅบฆๅˆถ้™ใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ‚’ๅˆฅใ€…ใซ่กจ็คบใ—ใพใ™ใ€‚ - - - Show Speed Limit Sources - ้€Ÿๅบฆๅˆถ้™ใฎๆƒ…ๅ ฑๆบใ‚’่กจ็คบ - - - Display the speed limit sources on the driving screen. - ้‹่ปข็”ป้ขใซ้€Ÿๅบฆๅˆถ้™ใฎๆƒ…ๅ ฑๆบใ‚’่กจ็คบใ—ใพใ™ใ€‚ - - - seconds - ็ง’ - - - m/sยฒ - m/sยฒ - - - mph - mph - - - With Lead - ใƒชใƒผใƒ‰ไป˜ใ - - - Switch to <b>Experimental Mode</b> when driving below this speed with a lead. - ใƒชใƒผใƒ‰ใŒใ‚ใ‚‹็Šถๆ…‹ใงใ“ใฎ้€Ÿๅบฆไปฅไธ‹ใง้‹่ปขใ™ใ‚‹ๅ ดๅˆใฏใ€<b>ๅฎŸ้จ“ใƒขใƒผใƒ‰</b>ใซๅˆ‡ใ‚Šๆ›ฟใˆใฆใใ ใ•ใ„ใ€‚ - - - Slower Lead - ้…ใ„ใƒชใƒผใƒ‰ - - - Stopped Lead - ๅœๆญขใ•ใ‚ŒใŸใƒชใƒผใƒ‰ - - - Intersections - ไบคๅทฎ็‚น - - - Turns - ใ‚ฟใƒผใƒณ - - - Off - ใ‚ชใƒ• - - - second - 2็•ช็›ฎ - - - RESET - ใƒชใ‚ปใƒƒใƒˆ - - - Standard - ๆจ™ๆบ– - - - Eco - ใ‚จใ‚ณ - - - Sport - ใ‚นใƒใƒผใƒ„ - - - Sport+ - ใ‚นใƒใƒผใƒ„+ - - - feet - ใƒ•ใ‚ฃใƒผใƒˆ - - - Acceleration - ๅŠ ้€Ÿๅบฆ - - - Deceleration - ๆธ›้€Ÿ - - - Set Speed - ้€Ÿๅบฆใ‚’่จญๅฎš - - - Experimental Mode - ๅฎŸ้จ“ใƒขใƒผใƒ‰ - - - Previous Limit - ไปฅๅ‰ใฎๅˆถ้™ - - - None - ใชใ— - - - Set With Gas Pedal - ใ‚ฌใ‚นใƒšใƒ€ใƒซไป˜ใใ‚ปใƒƒใƒˆ - - - Max Set Speed - ๆœ€ๅคง่จญๅฎš้€Ÿๅบฆ - - - SELECT - SELECT - - - Dashboard - ใƒ€ใƒƒใ‚ทใƒฅใƒœใƒผใƒ‰ - - - Map Data - ๅœฐๅ›ณใƒ‡ใƒผใ‚ฟ - - - Navigation - ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณ - - - Highest - ๆœ€้ซ˜ใฎ - - - Lowest - ๆœ€ไฝŽ - - - Select your primary priority - ๅ„ชๅ…ˆไบ‹้ …ใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ - - - Select your secondary priority - ใ‚ปใ‚ซใƒณใƒ€ใƒชใƒผใƒ—ใƒฉใ‚คใ‚ชใƒชใƒ†ใ‚ฃใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ - - - Select your tertiary priority - ็ฌฌ3ใฎๅ„ชๅ…ˆ้ †ไฝใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ - - - MANAGE - ็ฎก็†ใ™ใ‚‹ - - - Lower Limits - ไธ‹้™ - - - Higher Limits - ใ‚ˆใ‚Š้ซ˜ใ„ๅˆถ้™ - - - Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? - <b>ใƒˆใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏใƒขใƒผใƒ‰</b>ใฎ่จญๅฎšใ‚’ๅฎŒๅ…จใซใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? - <b>Aggressive</b>ใฎใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃ่จญๅฎšใ‚’ๅฎŒๅ…จใซใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Are you sure you want to completely reset your settings for the <b>Standard</b> personality? - <b>Standard</b>ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใฎ่จญๅฎšใ‚’ๅฎŒๅ…จใซใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? - <b>ใƒชใƒฉใƒƒใ‚ฏใ‚น</b>ใฎใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃ่จญๅฎšใ‚’ๅฎŒๅ…จใซใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - foot - ่ถณ - - - meter - ใƒกใƒผใƒˆใƒซ - - - meters - ใƒกใƒผใƒˆใƒซ - - - km/h - km/h - - - Target speed offset applied for posted limits between 0 and 29 km/h. - 0ใ‹ใ‚‰29 km/hใฎๅˆถ้™้€Ÿๅบฆใซๅฏพใ—ใฆ้ฉ็”จใ•ใ‚Œใ‚‹็›ฎๆจ™้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ€‚ - - - Target speed offset applied for posted limits between 30 and 49 km/h. - 30 km/hใ‹ใ‚‰49 km/hใฎๅˆถ้™้€Ÿๅบฆใซๅฏพใ—ใฆ้ฉ็”จใ•ใ‚Œใ‚‹็›ฎๆจ™้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ€‚ - - - Target speed offset applied for posted limits between 50 and 59 km/h. - 50 km/hใ‹ใ‚‰59 km/hใฎๅˆถ้™้€Ÿๅบฆใซๅฏพใ—ใฆ็›ฎๆจ™้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆใŒ้ฉ็”จใ•ใ‚Œใพใ™ใ€‚ - - - Target speed offset applied for posted limits between 60 and 79 km/h. - 60 km/hใ‹ใ‚‰79 km/hใฎๅˆถ้™้€Ÿๅบฆใซๅฏพใ—ใฆ้ฉ็”จใ•ใ‚Œใ‚‹็›ฎๆจ™้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ€‚ - - - Target speed offset applied for posted limits between 80 and 99 km/h. - 80 km/hใ‹ใ‚‰99 km/hใฎๅˆถ้™้€Ÿๅบฆใซๅฏพใ—ใฆ็›ฎๆจ™้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆใŒ้ฉ็”จใ•ใ‚Œใพใ™ใ€‚ - - - Target speed offset applied for posted limits between 100 and 119 km/h. - 100 km/hใ‹ใ‚‰119 km/hใฎๅˆถ้™้€Ÿๅบฆใซๅฏพใ—ใฆ้ฉ็”จใ•ใ‚Œใ‚‹็›ฎๆจ™้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ€‚ - - - Target speed offset applied for posted limits between 120 and 140 km/h. - 120 km/hใ‹ใ‚‰140 km/hใฎๅˆถ้™้€Ÿๅบฆใซๅฏพใ—ใฆ็›ฎๆจ™้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆใŒ้ฉ็”จใ•ใ‚Œใพใ—ใŸใ€‚ - Advanced Longitudinal Tuning - ้ซ˜ๅบฆใช็ธฆ่ชฟๆ•ด + ้ซ˜ๅบฆใช็ธฆๆ–นๅ‘ใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐ - Advanced settings for customizing how openpilot handles acceleration and braking. - ใ‚ชใƒผใƒ—ใƒณใƒ‘ใ‚คใƒญใƒƒใƒˆใŒๅŠ ้€Ÿใจใƒ–ใƒฌใƒผใ‚ญใ‚’ๅ‡ฆ็†ใ™ใ‚‹ๆ–นๆณ•ใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ™ใ‚‹ใŸใ‚ใฎ่ฉณ็ดฐ่จญๅฎšใ€‚ + <b>Advanced acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>้ซ˜ๅบฆใชๅŠ ้€Ÿใƒปๅˆถๅ‹•ๅˆถๅพกใฎๅค‰ๆ›ด</b>ใซใ‚ˆใ‚Šใ€openpilotใฎ่ตฐ่กŒใ‚’ๅพฎ่ชฟๆ•ดใ—ใพใ™ใ€‚ Actuator Delay (Default: %1) - ใ‚ขใ‚ฏใƒใƒฅใ‚จใƒผใ‚ฟ้…ๅปถ๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1๏ผ‰ + ใ‚ขใ‚ฏใƒใƒฅใ‚จใƒผใ‚ฟ้…ๅปถ๏ผˆๅˆๆœŸๅ€ค: %1๏ผ‰ Actuator Delay - ใ‚ขใ‚ฏใƒใƒฅใ‚จใƒผใ‚ฟ้…ๅปถ + ใ‚ขใ‚ฏใƒใƒฅใ‚จใƒผใ‚ฟ้…ๅปถ - Delay before throttle or brake takes effect. Higher values smooth slow actuators but can feel laggy; lower values react quicker but may overshoot. - ใ‚นใƒญใƒƒใƒˆใƒซใพใŸใฏใƒ–ใƒฌใƒผใ‚ญใŒๅŠนใๅง‹ใ‚ใ‚‹ใพใงใฎ้…ๅปถใ€‚้ซ˜ใ„ๅ€คใฏ้…ใ„ใ‚ขใ‚ฏใƒใƒฅใ‚จใƒผใ‚ฟใ‚’ใ‚นใƒ ใƒผใ‚บใซใ—ใพใ™ใŒใ€้…ใ‚Œใ‚’ๆ„Ÿใ˜ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ไฝŽใ„ๅ€คใฏๅๅฟœใŒ้€Ÿใใชใ‚Šใพใ™ใŒใ€ใ‚ชใƒผใƒใƒผใ‚ทใƒฅใƒผใƒˆใ™ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ + <b>The time between openpilot's throttle or brake command and the vehicle's response.</b> Increase if the vehicle feels slow to react; decrease if it feels too eager or overshoots. + <b>openpilot ใฎใ‚นใƒญใƒƒใƒˆใƒซใพใŸใฏใƒ–ใƒฌใƒผใ‚ญๆŒ‡ไปคใ‹ใ‚‰่ปŠไธกใŒๅๅฟœใ™ใ‚‹ใพใงใฎๆ™‚้–“ใ€‚</b> ๅๅฟœใŒ้…ใ„ใจๆ„Ÿใ˜ใ‚‹ๅ ดๅˆใฏๅข—ใ‚„ใ—ใ€้Žๆ•ใพใŸใฏ่กŒใ้ŽใŽใ‚‹ๅ ดๅˆใฏๆธ›ใ‚‰ใ—ใฆใใ ใ•ใ„ใ€‚ Start Acceleration (Default: %1) - ้–‹ๅง‹ๅŠ ้€Ÿ๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1๏ผ‰ + ้–‹ๅง‹ๅŠ ้€Ÿๅบฆ๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1๏ผ‰ Start Acceleration - ๅŠ ้€Ÿ้–‹ๅง‹ + ๅŠ ้€Ÿ้–‹ๅง‹ - Extra acceleration applied when pulling away from a stop. Increase for snappier launches at the cost of smoothness; decrease for gentler starts. - ๅœๆญขใ‹ใ‚‰ใฎ็™บ้€ฒๆ™‚ใซ่ฟฝๅŠ ใฎๅŠ ้€Ÿใ‚’้ฉ็”จใ—ใพใ™ใ€‚ใ‚นใƒ ใƒผใ‚บใ•ใ‚’็Š ็‰ฒใซใ—ใฆใ‚ˆใ‚Š็ด ๆ—ฉใ„็™บ้€ฒใ‚’ๆฑ‚ใ‚ใ‚‹ๅ ดๅˆใฏๅข—ๅŠ ใ•ใ›ใ€็ฉใ‚„ใ‹ใชใ‚นใ‚ฟใƒผใƒˆใ‚’ๆฑ‚ใ‚ใ‚‹ๅ ดๅˆใฏๆธ›ๅฐ‘ใ•ใ›ใพใ™ใ€‚ + <b>Extra acceleration applied when starting from a stop.</b> Increase for quicker takeoffs; decrease for smoother, gentler starts. + <b>ๅœๆญข็Šถๆ…‹ใ‹ใ‚‰ใฎ็™บ้€ฒๆ™‚ใซ่ฟฝๅŠ ใฎๅŠ ้€Ÿใ‚’้ฉ็”จใ—ใพใ™ใ€‚</b> ใ™ใฐใ‚„ใ„็™บ้€ฒใซใฏๅ€คใ‚’ไธŠใ’ใ€ใ‚ˆใ‚Šๆป‘ใ‚‰ใ‹ใง็ฉใ‚„ใ‹ใช็™บ้€ฒใซใฏๅ€คใ‚’ไธ‹ใ’ใฆใใ ใ•ใ„ใ€‚ Start Speed (Default: %1) - ้–‹ๅง‹้€Ÿๅบฆ (ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1) + ้–‹ๅง‹้€Ÿๅบฆ๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1๏ผ‰ Start Speed - ้–‹ๅง‹้€Ÿๅบฆ + ้–‹ๅง‹้€Ÿๅบฆ - Speed where openpilot begins to exit the stopped state. Higher values avoid creeping but may feel sluggish; lower values move sooner but risk creeping. - openpilotใŒๅœๆญข็Šถๆ…‹ใ‚’็ต‚ไบ†ใ—ๅง‹ใ‚ใ‚‹้€Ÿๅบฆใ€‚้ซ˜ใ„ๅ€คใฏใ‚ฏใƒชใƒผใƒ—ใ‚’้ฟใ‘ใพใ™ใŒใ€้ˆใๆ„Ÿใ˜ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ไฝŽใ„ๅ€คใฏๆ—ฉใๅ‹•ใๅง‹ใ‚ใพใ™ใŒใ€ใ‚ฏใƒชใƒผใƒ—ใฎใƒชใ‚นใ‚ฏใŒใ‚ใ‚Šใพใ™ใ€‚ + <b>The speed at which openpilot exits the stopped state.</b> Increase to reduce creeping; decrease to move sooner after stopping. + <b>openpilotใŒๅœๆญข็Šถๆ…‹ใ‚’่งฃ้™คใ™ใ‚‹้€Ÿๅบฆใ€‚</b> ใ‚ฏใƒชใƒผใƒ”ใƒณใ‚ฐใ‚’ๆธ›ใ‚‰ใ™ใซใฏไธŠใ’ใ‚‹๏ผ›ๅœๆญขๅพŒใซๆ—ฉใๅ‹•ใๅ‡บใ™ใซใฏไธ‹ใ’ใ‚‹ใ€‚ Stop Acceleration (Default: %1) - ๅŠ ้€Ÿๅœๆญข๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1๏ผ‰ + ๅŠ ้€Ÿใ‚’ๅœๆญข๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ๏ผš%1๏ผ‰ Stop Acceleration - ๅŠ ้€Ÿใ‚’ๆญขใ‚ใ‚‹ + ๅŠ ้€Ÿใ‚’ๅœๆญข - Brake force applied to hold the vehicle still. Larger values prevent creeping on hills but might jerk to a stop. Smaller values can feel smoother but may allow rolling. - ใƒ–ใƒฌใƒผใ‚ญๅŠ›ใŒ้ฉ็”จใ•ใ‚Œใ€่ปŠไธกใ‚’้™ๆญขใ•ใ›ใพใ™ใ€‚ๅคงใใชๅ€คใฏๅ‚้“ใงใฎใ‚ฏใƒชใƒผใƒ—ใ‚’้˜ฒใŽใพใ™ใŒใ€ๆ€ฅใซๅœๆญขใ™ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ๅฐใ•ใชๅ€คใฏใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใซๆ„Ÿใ˜ใ‚‰ใ‚Œใพใ™ใŒใ€่ปขใŒใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ + <b>Brake force applied to hold the vehicle at a standstill.</b> Increase to prevent rolling on hills; decrease for smoother, softer stops. + <b>ๅœๆญขไธญใฎ่ปŠไธกใ‚’ไฟๆŒใ™ใ‚‹ใŸใ‚ใซใƒ–ใƒฌใƒผใ‚ญๅŠ›ใ‚’้ฉ็”จใ—ใพใ™ใ€‚</b> ๅ‚้“ใงใฎๅพŒ้€€ใ‚’้˜ฒใใซใฏๅข—ใ‚„ใ—ใ€ใ‚ˆใ‚Šๆป‘ใ‚‰ใ‹ใงใ‚ฝใƒ•ใƒˆใชๅœๆญขใซใฏๆธ›ใ‚‰ใ—ใฆใใ ใ•ใ„ใ€‚ Stopping Rate (Default: %1) - ๅœๆญข็އ๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1๏ผ‰ + ๅœๆญข็އ๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1๏ผ‰ Stopping Rate - ๅœๆญข็އ + ๅœๆญข็އ - How quickly braking ramps up when stopping. Faster rates shorten stopping distance but can be harsh; slower rates are smoother but need more room. - ๅœๆญขๆ™‚ใซใƒ–ใƒฌใƒผใ‚ญใŒใฉใ‚Œใ ใ‘้€ŸใๅŠนใใ‹ใ€‚้€Ÿใ„้€Ÿๅบฆใฏๅœๆญข่ท้›ขใ‚’็Ÿญใใ—ใพใ™ใŒใ€ๅŽณใ—ใ„ๅ ดๅˆใŒใ‚ใ‚Šใพใ™ใ€‚้…ใ„้€Ÿๅบฆใฏใ‚นใƒ ใƒผใ‚บใงใ™ใŒใ€ใ‚ˆใ‚Šๅคšใใฎใ‚นใƒšใƒผใ‚นใŒๅฟ…่ฆใงใ™ใ€‚ + <b>How quickly braking ramps up when stopping.</b> Increase for shorter, firmer stops; decrease for smoother, longer stops. + <b>ๅœๆญขๆ™‚ใฎใƒ–ใƒฌใƒผใ‚ญ็ซ‹ใกไธŠใŒใ‚Šใฎ้€Ÿใ•ใ€‚</b> ็ŸญใๅŠ›ๅผทใๆญขใ‚ใ‚‹ใซใฏๅข—ใ‚„ใ—ใ€ๆป‘ใ‚‰ใ‹ใง้•ทใ‚ใซๆญขใ‚ใ‚‹ใซใฏๆธ›ใ‚‰ใ—ใฆใใ ใ•ใ„ใ€‚ Stop Speed (Default: %1) - ๅœๆญข้€Ÿๅบฆ (ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1) + ๅœๆญข้€Ÿๅบฆ๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: %1๏ผ‰ Stop Speed - ้€Ÿๅบฆใ‚’ๆญขใ‚ใ‚‹ + ๅœๆญข้€Ÿๅบฆ - Speed where openpilot beings to enter the stopped state. Higher values brake earlier for smoother stops but might stop too soon; lower values wait longer and can overshoot. - openpilotใŒๅœๆญข็Šถๆ…‹ใซๅ…ฅใ‚‹้€Ÿๅบฆใ€‚้ซ˜ใ„ๅ€คใฏใ‚นใƒ ใƒผใ‚บใชๅœๆญขใฎใŸใ‚ใซๆ—ฉใ‚ใซใƒ–ใƒฌใƒผใ‚ญใ‚’ใ‹ใ‘ใพใ™ใŒใ€ๆ—ฉใ™ใŽใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ไฝŽใ„ๅ€คใฏๅพ…ๆฉŸๆ™‚้–“ใŒ้•ทใใชใ‚Šใ€่กŒใ้ŽใŽใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ + <b>The speed at which openpilot considers the vehicle stopped.</b> Increase to brake earlier and stop smoothly; decrease to wait longer but risk overshooting. + <b>openpilotใŒ่ปŠไธกใŒๅœๆญขใ—ใŸใจใฟใชใ™้€Ÿๅบฆใ€‚</b> ๆ—ฉใ‚ใซใƒ–ใƒฌใƒผใ‚ญใ‚’ใ‹ใ‘ใฆใ‚นใƒ ใƒผใ‚บใซๆญขใ‚ใ‚‹ใซใฏไธŠใ’ใฆใใ ใ•ใ„ใ€‚ใ‚ˆใ‚Š้•ทใๅพ…ใกใŸใ„ๅ ดๅˆใฏไธ‹ใ’ใฆใใ ใ•ใ„ใŒใ€่กŒใ้ŽใŽใ‚‹ใƒชใ‚นใ‚ฏใŒใ‚ใ‚Šใพใ™ใ€‚ + + + Conditional Experimental Mode + ๆกไปถไป˜ใๅฎŸ้จ“ใƒขใƒผใƒ‰ + + + <b>Automatically switch to "Experimental Mode" when set conditions are met.</b> Allows the model to handle challenging situations with smarter decision making. + <b>่จญๅฎšๆกไปถใŒๆบ€ใŸใ•ใ‚ŒใŸใจใใซใ€ŒๅฎŸ้จ“ใƒขใƒผใƒ‰ใ€ใซ่‡ชๅ‹•็š„ใซๅˆ‡ใ‚Šๆ›ฟใˆใพใ™ใ€‚</b> ้›ฃใ—ใ„็Šถๆณใงใ€ใ‚ˆใ‚Š่ณขใ„ๆ„ๆ€ๆฑบๅฎšใซใ‚ˆใ‚Šใƒขใƒ‡ใƒซใŒๅฏพๅ‡ฆใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚ + + + Below + ไธ‹่จ˜ + + + <b>Switch to "Experimental Mode" when driving below this speed without a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>ๅ…ˆ่กŒ่ปŠใŒใ„ใชใ„็Šถๆ…‹ใงใ“ใฎ้€Ÿๅบฆๆœชๆบ€ใง่ตฐ่กŒใ™ใ‚‹ๅ ดๅˆใฏใ€ŒExperimental Modeใ€ใซๅˆ‡ใ‚Šๆ›ฟใˆใฆใใ ใ•ใ„</b>ใ€‚ไฝŽ้€Ÿ็ŠถๆณใงใฎopenpilotใฎๅˆถๅพกใŒใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใซใชใ‚Šใพใ™ใ€‚ + + + Curve Detected Ahead + ๅ‰ๆ–นใซใ‚ซใƒผใƒ–ใ‚’ๆคœ็Ÿฅ + + + <b>Switch to "Experimental Mode" when a curve is detected</b> to allow the model to set an appropriate speed for the curve. + <b>ใ‚ซใƒผใƒ–ใŒๆคœๅ‡บใ•ใ‚ŒใŸใจใใซใ€ŒExperimental Modeใ€ใซๅˆ‡ใ‚Šๆ›ฟใˆใ‚‹</b>ใจใ€ใƒขใƒ‡ใƒซใŒใ‚ซใƒผใƒ–ใซ้ฉใ—ใŸ้€Ÿๅบฆใ‚’่จญๅฎšใงใใพใ™ใ€‚ + + + Lead Detected Ahead + ๅ‰ๆ–นใซๅ…ˆ่กŒ่ปŠใ‚’ๆคœ็Ÿฅใ—ใพใ—ใŸ + + + <b>Switch to "Experimental Mode" when a slower or stopped vehicle is detected.</b> Can make braking smoother and more reliable on some vehicles. + <b>้…ใ„่ปŠไธกใ‚„ๅœๆญข่ปŠไธกใ‚’ๆคœ็Ÿฅใ—ใŸใ‚‰ใ€ŒExperimental Modeใ€ใซๅˆ‡ใ‚Šๆ›ฟใˆใฆใใ ใ•ใ„ใ€‚</b> ไธ€้ƒจใฎ่ปŠไธกใงใฏใ€ๆธ›้€ŸใŒใ‚ˆใ‚Šๆป‘ใ‚‰ใ‹ใงไฟก้ ผๆ€งใŒๅ‘ไธŠใ—ใพใ™ใ€‚ + + + Navigation-Based + ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณใƒ™ใƒผใ‚น + + + <b>Switch to "Experimental Mode" when approaching intersections or turns on the active route</b> while using "Navigate on openpilot" (NOO) to allow the model to set an appropriate speed for upcoming maneuvers. + ใ€ŒNavigate on openpilotใ€๏ผˆNOO๏ผ‰ไฝฟ็”จไธญใซใ€ไบคๅทฎ็‚นใ‚„้€ฒ่กŒใƒซใƒผใƒˆไธŠใฎๆ›ฒใŒใ‚Š่ง’ใธๆŽฅ่ฟ‘ใ—ใŸใ‚‰ใ€ใƒขใƒ‡ใƒซใŒ็›ด่ฟ‘ใฎๆ“ไฝœใซ้ฉใ—ใŸ้€Ÿๅบฆใ‚’่จญๅฎšใงใใ‚‹ใ‚ˆใ†ใ€<b>ใ€ŒExperimental Modeใ€ใซๅˆ‡ใ‚Šๆ›ฟใˆใฆใใ ใ•ใ„</b>ใ€‚ + + + Predicted Stop In + ไบˆๆธฌๅœๆญขใพใง + + + <b>Switch to "Experimental Mode" when openpilot predicts a stop within the set time.</b> This is usually triggered when the model "sees" a red light or stop sign ahead.<br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>่จญๅฎšใ—ใŸๆ™‚้–“ๅ†…ใซopenpilotใŒๅœๆญขใ‚’ไบˆๆธฌใ—ใŸๅ ดๅˆใ€ใ€ŒๅฎŸ้จ“ใƒขใƒผใƒ‰ใ€ใซๅˆ‡ใ‚Šๆ›ฟใˆใพใ™ใ€‚</b> ใ“ใ‚Œใฏ้€šๅธธใ€ใƒขใƒ‡ใƒซใŒๅ‰ๆ–นใซ่ตคไฟกๅทใ‚„ไธ€ๆ™‚ๅœๆญขๆจ™่ญ˜ใ‚’ใ€Œ่ช่ญ˜ใ€ใ—ใŸใจใใซใƒˆใƒชใ‚ฌใƒผใ•ใ‚Œใพใ™ใ€‚<br><br><i><b>ๅ…่ฒฌไบ‹้ …</b>: openpilotใฏไฟกๅทๆฉŸใ‚„ไธ€ๆ™‚ๅœๆญขๆจ™่ญ˜ใ‚’ๆ˜Ž็คบ็š„ใซๆคœๅ‡บใ—ใพใ›ใ‚“ใ€‚ใ€ŒๅฎŸ้จ“ใƒขใƒผใƒ‰ใ€ใงใฏใ€openpilotใฏใ‚ซใƒกใƒฉๅ…ฅๅŠ›ใ‹ใ‚‰ใ‚จใƒณใƒ‰ใƒ„ใƒผใ‚จใƒณใƒ‰ใง้‹่ปขๅˆคๆ–ญใ‚’่กŒใ†ใŸใ‚ใ€ๆ˜Ž็ขบใช็†็”ฑใŒใชใ„ๅ ดๅˆใงใ‚‚ๅœๆญขใ™ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚</i> + + + Turn Signal Below + ใ‚ฟใƒผใƒณใ‚ทใ‚ฐใƒŠใƒซไธ‹ๆ–น + + + <b>Switch to "Experimental Mode" when using a turn signal below the set speed</b> to allow the model to choose an appropriate speed for smoother left and right turns. + <b>่จญๅฎš้€Ÿๅบฆๆœชๆบ€ใงใ‚ฆใ‚คใƒณใ‚ซใƒผใ‚’ไฝฟ็”จใ™ใ‚‹้š›ใซใ€ŒExperimental Modeใ€ใซๅˆ‡ใ‚Šๆ›ฟใˆใ‚‹</b>ใจใ€ใƒขใƒ‡ใƒซใŒๅทฆๆŠ˜ใƒปๅณๆŠ˜ใซ้ฉใ—ใŸ้€Ÿๅบฆใ‚’้ธๆŠžใ—ใ€ใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใซๆ›ฒใŒใ‚Œใพใ™ใ€‚ + + + Status Widget + ใ‚นใƒ†ใƒผใ‚ฟใ‚นใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆ + + + <b>Show which condition triggered "Experimental Mode"</b> on the driving screen. + ้‹่ปข็”ป้ขใซใ€ŒๅฎŸ้จ“ใƒขใƒผใƒ‰ใ€ใ‚’่ตทๅ‹•ใ—ใŸๆกไปถใ‚’<b>่กจ็คบ</b>ใ—ใพใ™ใ€‚ + + + Curve Speed Controller + ใ‚ซใƒผใƒ–้€Ÿๅบฆใ‚ณใƒณใƒˆใƒญใƒผใƒฉใƒผ + + + <b>Automatically slow down for upcoming curves</b> using data learned from your driving style, adapting to curves as you would. + <b>ใ“ใ‚Œใ‹ใ‚‰ใฎใ‚ซใƒผใƒ–ใซ่‡ชๅ‹•ๆธ›้€Ÿ</b> ใ‚ใชใŸใฎ้‹่ปขใ‚นใ‚ฟใ‚คใƒซใ‹ใ‚‰ๅญฆ็ฟ’ใ—ใŸใƒ‡ใƒผใ‚ฟใ‚’็”จใ„ใฆใ€ใ‚ใชใŸใŒ้‹่ปขใ™ใ‚‹ใฎใจๅŒๆง˜ใซใ‚ซใƒผใƒ–ใซ้ฉๅฟœใ—ใพใ™ใ€‚ + + + Calibrated Lateral Acceleration + ่ผƒๆญฃๆธˆใฟๆจชๅŠ ้€Ÿๅบฆ + + + <b>The learned lateral acceleration from collected driving data.</b> This sets how fast openpilot will take curves. Higher values allow faster cornering; lower values slow the vehicle for gentler turns. + <b>ๅŽ้›†ใ•ใ‚ŒใŸ่ตฐ่กŒใƒ‡ใƒผใ‚ฟใ‹ใ‚‰ๅญฆ็ฟ’ใ•ใ‚ŒใŸๆจชๅŠ ้€Ÿๅบฆใ€‚</b> ใ“ใ‚Œใฏใ€openpilot ใŒใ‚ซใƒผใƒ–ใ‚’ๆ›ฒใŒใ‚‹้€Ÿใ•ใ‚’่จญๅฎšใ—ใพใ™ใ€‚ๅ€คใ‚’ไธŠใ’ใ‚‹ใจใ‚ณใƒผใƒŠใƒชใƒณใ‚ฐใŒ้€Ÿใใชใ‚Šใ€ๅ€คใ‚’ไธ‹ใ’ใ‚‹ใจ็ทฉใ‚„ใ‹ใชใ‚ฟใƒผใƒณใฎใŸใ‚ใซ่ปŠไธกใŒๆธ›้€Ÿใ—ใพใ™ใ€‚ + + + Calibration Progress + ใ‚ญใƒฃใƒชใƒ–ใƒฌใƒผใ‚ทใƒงใƒณใฎ้€ฒ่กŒ็Šถๆณ + + + <b>How much curve data has been collected.</b> This is a progress meter; it is normal for the value to stay low and rarely reach 100%. + <b>ใฉใ‚Œใ ใ‘ใฎใ‚ซใƒผใƒ–ใƒ‡ใƒผใ‚ฟใŒๅŽ้›†ใ•ใ‚ŒใŸใ‹ใ€‚</b> ใ“ใ‚Œใฏ้€ฒๆ—ใƒกใƒผใ‚ฟใƒผใงใ‚ใ‚Šใ€ๅ€คใŒไฝŽใ„ใพใพใง100%ใซ้”ใ™ใ‚‹ใ“ใจใฏใพใ‚Œใงใ™ใ€‚ + + + Reset Curve Data + ใ‚ซใƒผใƒ–ใƒ‡ใƒผใ‚ฟใ‚’ใƒชใ‚ปใƒƒใƒˆ + + + <b>Reset collected user data for "Curve Speed Controller".</b> + <b>ใ€ŒCurve Speed Controllerใ€ใฎๅŽ้›†ๆธˆใฟใƒฆใƒผใ‚ถใƒผใƒ‡ใƒผใ‚ฟใ‚’ใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ€‚</b> + + + <b>Show the "Curve Speed Controller" target speed on the driving screen.</b> + <b>ใƒ‰ใƒฉใ‚คใƒ“ใƒณใ‚ฐ็”ป้ขใซใ€Œใ‚ซใƒผใƒ–้€Ÿๅบฆใ‚ณใƒณใƒˆใƒญใƒผใƒฉใƒผใ€ใฎ็›ฎๆจ™้€Ÿๅบฆใ‚’่กจ็คบใ—ใพใ™ใ€‚</b> + + + Driving Personalities + ้‹่ปขใฎๅ€‹ๆ€ง + + + <b>Customize the "Driving Personalities"</b> to better match your driving style. + <b>ใ€Œ้‹่ปขใฎๅ€‹ๆ€งใ€ใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บ</b>ใ—ใฆใ€ใ‚ใชใŸใฎ้‹่ปขใ‚นใ‚ฟใ‚คใƒซใซใ‚ˆใ‚Š้ฉๅˆใ•ใ›ใพใ—ใ‚‡ใ†ใ€‚ + + + Traffic Mode + ไบค้€šใƒขใƒผใƒ‰ + + + <b>Customize the "Traffic Mode" personality profile.</b> Designed for stop-and-go driving. + <b>ใ€ŒTraffic Modeใ€ใฎใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ—ใพใ™ใ€‚</b> ใ‚นใƒˆใƒƒใƒ—ใ‚ขใƒณใƒ‰ใ‚ดใƒผ่ตฐ่กŒๅ‘ใ‘ใซ่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใ€‚ + + + Following Distance + ่ปŠ้–“่ท้›ข + + + <b>The minimum following distance to the lead vehicle in "Traffic Mode".</b> openpilot blends between this value and the "Aggressive" profile as speed increases. Increase for more space; decrease for tighter gaps. + <b>ใ€Œไบค้€šใƒขใƒผใƒ‰ใ€ใซใŠใ‘ใ‚‹ๅ…ˆ่กŒ่ปŠใจใฎๆœ€ๅฐ่ปŠ้–“่ท้›ขใ€‚</b> openpilotใฏ้€ŸๅบฆใฎไธŠๆ˜‡ใซไผดใ„ใ€ใ“ใฎๅ€คใจใ€Œใ‚ขใ‚ฐใƒฌใƒƒใ‚ทใƒ–ใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใฎ้–“ใงใƒ–ใƒฌใƒณใƒ‰ใ—ใพใ™ใ€‚ใ‚นใƒšใƒผใ‚นใ‚’ๅบƒใ’ใŸใ„ๅ ดๅˆใฏๅข—ใ‚„ใ—ใ€้–“้š”ใ‚’่ฉฐใ‚ใŸใ„ๅ ดๅˆใฏๆธ›ใ‚‰ใ—ใฆใใ ใ•ใ„ใ€‚ + + + Acceleration Smoothness + ๅŠ ้€Ÿใฎๆป‘ใ‚‰ใ‹ใ• + + + <b>How smoothly openpilot accelerates in "Traffic Mode".</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>ใ€ŒTraffic Modeใ€ใงใฎopenpilotใฎๅŠ ้€Ÿใฎๆป‘ใ‚‰ใ‹ใ•ใ€‚</b> ๅข—ใ‚„ใ™ใจ็ฉใ‚„ใ‹ใช็™บ้€ฒใซใ€ๆธ›ใ‚‰ใ™ใจ้€Ÿใ„ใŒใ‚„ใ‚„ๆ€ฅใช็™บ้€ฒใซใชใ‚Šใพใ™ใ€‚ + + + Braking Smoothness + ใƒ–ใƒฌใƒผใ‚ญใฎๆป‘ใ‚‰ใ‹ใ• + + + <b>How smoothly openpilot brakes in "Traffic Mode".</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>ใ€ŒTraffic Modeใ€ใงใฎopenpilotใฎใƒ–ใƒฌใƒผใ‚ญใฎๆป‘ใ‚‰ใ‹ใ•ใ€‚</b> ๅข—ใ‚„ใ™ใจ็ฉใ‚„ใ‹ใซๅœๆญขใ—ใ€ๆธ›ใ‚‰ใ™ใจ้€Ÿใ„ใŒ้‹ญใ„ใƒ–ใƒฌใƒผใ‚ญใซใชใ‚Šใพใ™ใ€‚ + + + Safety Gap Bias + ๅฎ‰ๅ…จ่ปŠ้–“ใƒใ‚คใ‚ขใ‚น + + + <b>How much extra space openpilot keeps from the vehicle ahead in "Traffic Mode".</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>ใ€ŒTraffic Modeใ€ใงopenpilotใŒๅ‰ๆ–น่ปŠไธกใจใฎ้–“ใซไฟใคไฝ™ๅˆ†ใช่ท้›ขใ€‚</b> ้–“้š”ใ‚’ๅบƒใใ—ๆ…Ž้‡ใซ่ฟฝๅพ“ใ™ใ‚‹ใซใฏๅข—ใ‚„ใ—ใ€้–“้š”ใ‚’็‹ญใใ—่ฟ‘่ท้›ขใง่ฟฝๅพ“ใ™ใ‚‹ใซใฏๆธ›ใ‚‰ใ—ใพใ™ใ€‚ + + + Slowdown Response + ๆธ›้€Ÿๅฟœ็ญ” + + + <b>How smoothly openpilot slows down in "Traffic Mode".</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>ใ€Œไบค้€šใƒขใƒผใƒ‰ใ€ใงใฎopenpilotใฎๆธ›้€Ÿใฎๆป‘ใ‚‰ใ‹ใ•ใ€‚</b> ๅข—ใ‚„ใ™ใจใ‚ˆใ‚Š็ทฉใ‚„ใ‹ใซๆธ›้€Ÿใ—ใ€ๆธ›ใ‚‰ใ™ใจใ‚ˆใ‚Š้€Ÿใ„ใŒ้‹ญใ„ๆธ›้€Ÿใซใชใ‚Šใพใ™ใ€‚ + + + Speed-Up Response + ๅŠ ้€Ÿๅฟœ็ญ” + + + <b>How smoothly openpilot speeds up in "Traffic Mode".</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>ใ€ŒTraffic Modeใ€ใงopenpilotใŒๅŠ ้€Ÿใ™ใ‚‹ๆป‘ใ‚‰ใ‹ใ•ใ€‚</b> ๅ€คใ‚’ไธŠใ’ใ‚‹ใจๅŠ ้€Ÿใฏใ‚ˆใ‚Š็ฉใ‚„ใ‹ใซใ€ไธ‹ใ’ใ‚‹ใจใ‚ˆใ‚Š้€Ÿใ„ใŒ่กๆ’ƒใฎใ‚ใ‚‹ๅŠ ้€Ÿใซใชใ‚Šใพใ™ใ€‚ + + + Reset to Defaults + ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใซใƒชใ‚ปใƒƒใƒˆ + + + <b>Reset "Traffic Mode" settings to defaults.</b> + <b>ใ€Œไบค้€šใƒขใƒผใƒ‰ใ€ใฎ่จญๅฎšใ‚’ๆ—ขๅฎšใซใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ€‚</b> + + + Aggressive + ๆ”ปๆ’ƒ็š„ + + + <b>Customize the "Aggressive" personality profile.</b> Designed for assertive driving with tighter gaps. + <b>ใ€Œใ‚ขใ‚ฐใƒฌใƒƒใ‚ทใƒ–ใ€ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ€‚</b> ใ‚ฟใ‚คใƒˆใช่ปŠ้–“ใงใฎ็ฉๆฅต็š„ใช้‹่ปขๅ‘ใ‘ใซ่จญ่จˆใ€‚ + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Aggressive" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.25 seconds. + <b>ใ€Œใ‚ขใ‚ฐใƒฌใƒƒใ‚ทใƒ–ใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซไฝฟ็”จๆ™‚ใซใ€openpilotใŒๅ…ˆ่กŒ่ปŠใฎๅพŒใ‚ใ‚’ไฝ•็ง’็ฉบใ‘ใฆ่ฟฝๅพ“ใ™ใ‚‹ใ‹ใ€‚</b> ้–“้š”ใ‚’ๅบƒใ’ใ‚‹ใซใฏๅข—ใ‚„ใ—ใ€่ปŠ้–“ใ‚’่ฉฐใ‚ใ‚‹ใซใฏๆธ›ใ‚‰ใ—ใพใ™ใ€‚<br><br>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ๏ผš1.25็ง’ใ€‚ + + + <b>How smoothly openpilot accelerates with the "Aggressive" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>ใ€ŒAggressiveใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใงใฎopenpilotใฎๅŠ ้€Ÿใฎๆป‘ใ‚‰ใ‹ใ•ใ€‚</b> ๅข—ใ‚„ใ™ใจ็™บ้€ฒใŒ็ฉใ‚„ใ‹ใซใ€ๆธ›ใ‚‰ใ™ใจใ‚ˆใ‚Š้€Ÿใใชใ‚‹ใŒๆ€ฅใช็™บ้€ฒใซใชใ‚Šใพใ™ใ€‚ + + + <b>How smoothly openpilot brakes with the "Aggressive" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>ใ€Œใ‚ขใ‚ฐใƒฌใƒƒใ‚ทใƒ–ใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใงใฎopenpilotใฎๆธ›้€Ÿใฎๆป‘ใ‚‰ใ‹ใ•ใ€‚</b> ๅข—ใ‚„ใ™ใจ็ฉใ‚„ใ‹ใชๅœๆญขใซใ€ๆธ›ใ‚‰ใ™ใจใ‚ˆใ‚Š้€Ÿใ„ใŒ้‹ญใ„ใƒ–ใƒฌใƒผใ‚ญใซใชใ‚Šใพใ™ใ€‚ + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Aggressive" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>ใ€Œใ‚ขใ‚ฐใƒฌใƒƒใ‚ทใƒ–ใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใงใ€openpilot ใŒๅ‰่ตฐ่ปŠใจใฎ้–“ใซไฟใคไฝ™ๅˆ†ใช่ปŠ้–“่ท้›ขใฎ้‡ใ€‚</b> ใ‚ˆใ‚Šๅคงใใช้–“้š”ใจๆ…Ž้‡ใช่ฟฝๅพ“ใซใฏๅข—ใ‚„ใ—ใ€ใ‚ˆใ‚Šๅฐใ•ใช้–“้š”ใจ่ฟ‘ใ„่ฟฝๅพ“ใซใฏๆธ›ใ‚‰ใ—ใพใ™ใ€‚ + + + <b>How smoothly openpilot slows down with the "Aggressive" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>ใ€Œใ‚ขใ‚ฐใƒฌใƒƒใ‚ทใƒ–ใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใงใฎใ€openpilotใฎๆธ›้€Ÿใฎๆป‘ใ‚‰ใ‹ใ•ใ€‚</b> ๅข—ใ‚„ใ™ใจๆธ›้€ŸใŒใ‚ˆใ‚Š็ทฉใ‚„ใ‹ใซใ€ๆธ›ใ‚‰ใ™ใจใ‚ˆใ‚Š้€Ÿใ„ใŒๆ€ฅใชๆธ›้€Ÿใซใชใ‚Šใพใ™ใ€‚ + + + <b>How smoothly openpilot speeds up with the "Aggressive" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>ใ€Œใ‚ขใ‚ฐใƒฌใƒƒใ‚ทใƒ–ใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใงใฎopenpilotใฎๅŠ ้€Ÿใฎๆป‘ใ‚‰ใ‹ใ•ใ€‚</b> ๅ€คใ‚’ไธŠใ’ใ‚‹ใจๅŠ ้€Ÿใฏใ‚ˆใ‚Š็ทฉใ‚„ใ‹ใซใ€ไธ‹ใ’ใ‚‹ใจใ‚ˆใ‚Š้€Ÿใ„ใŒ่กๆ’ƒใฎใ‚ใ‚‹ๅŠ ้€Ÿใซใชใ‚Šใพใ™ใ€‚ + + + <b>Reset the "Aggressive" profile to defaults.</b> + <b>ใ€ŒAggressiveใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใซใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ€‚</b> + + + Standard + ๆจ™ๆบ– + + + <b>Customize the "Standard" personality profile.</b> Designed for balanced driving with moderate gaps. + <b>ใ€Œๆจ™ๆบ–ใ€ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ€‚</b> ไธญ็จ‹ๅบฆใฎ่ปŠ้–“ใงใƒใƒฉใƒณใ‚นใฎๅ–ใ‚ŒใŸ้‹่ปขๅ‘ใ‘ใซ่จญ่จˆใ€‚ + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Standard" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.45 seconds. + <b>ใ€Œๆจ™ๆบ–ใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซไฝฟ็”จๆ™‚ใซใ€openpilotใŒๅ…ˆ่กŒ่ปŠใฎๅพŒใ‚ใ‚’ไฝ•็ง’ใง่ฟฝๅพ“ใ™ใ‚‹ใ‹ใ€‚</b> ้–“้š”ใ‚’ๅบƒใ’ใ‚‹ใซใฏๅข—ใ‚„ใ—ใ€่ปŠ้–“ใ‚’่ฉฐใ‚ใ‚‹ใซใฏๆธ›ใ‚‰ใ—ใพใ™ใ€‚<br><br>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: 1.45 ็ง’ใ€‚ + + + <b>How smoothly openpilot accelerates with the "Standard" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>ใ€Œๆจ™ๆบ–ใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใงใฎopenpilotใฎๅŠ ้€Ÿใฎๆป‘ใ‚‰ใ‹ใ•ใ€‚</b> ๅ€คใ‚’ไธŠใ’ใ‚‹ใจ็™บ้€ฒใŒ็ฉใ‚„ใ‹ใซใ€ไธ‹ใ’ใ‚‹ใจใ‚ˆใ‚Š้€Ÿใ„ใŒๆ€ฅๆฟ€ใช็™บ้€ฒใซใชใ‚Šใพใ™ใ€‚ + + + <b>How smoothly openpilot brakes with the "Standard" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>ใ€Œๆจ™ๆบ–ใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใงใฎopenpilotใฎใƒ–ใƒฌใƒผใ‚ญใฎๆป‘ใ‚‰ใ‹ใ•ใ€‚</b> ๅ€คใ‚’ไธŠใ’ใ‚‹ใจ็ฉใ‚„ใ‹ใชๆธ›้€Ÿใ€ไธ‹ใ’ใ‚‹ใจ็ด ๆ—ฉใ„ใŒ้‹ญใ„ๅˆถๅ‹•ใซใชใ‚Šใพใ™ใ€‚ + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Standard" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>ใ€Œๆจ™ๆบ–ใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใงใ€openpilotใŒๅ‰่ตฐ่ปŠใจใฎ้–“ใซ็ขบไฟใ™ใ‚‹่ฟฝๅŠ ่ท้›ขใฎ้‡ใ€‚</b> ไฝ™่ฃ•ใ‚’ๅข—ใ‚„ใ™ใซใฏๅ€คใ‚’ไธŠใ’ใฆๆ…Ž้‡ใซ่ฟฝๅพ“ใ—ใ€้–“้š”ใ‚’่ฉฐใ‚ใ‚‹ใซใฏๅ€คใ‚’ไธ‹ใ’ใฆ่ฟ‘ๆŽฅ่ฟฝๅพ“ใ—ใพใ™ใ€‚ + + + <b>How smoothly openpilot slows down with the "Standard" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>ใ€ŒStandardใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใงใฎopenpilotใฎๆธ›้€Ÿใฎๆป‘ใ‚‰ใ‹ใ•ใ€‚</b> ๅข—ใ‚„ใ™ใจใ‚ˆใ‚Š็ทฉใ‚„ใ‹ใซๆธ›้€Ÿใ—ใ€ๆธ›ใ‚‰ใ™ใจใ‚ˆใ‚Š้€Ÿใ„ใŒ้‹ญใ„ๆธ›้€Ÿใซใชใ‚Šใพใ™ใ€‚ + + + <b>How smoothly openpilot speeds up with the "Standard" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>ใ€ŒStandardใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใงใฎopenpilotใฎๅŠ ้€Ÿใฎๆป‘ใ‚‰ใ‹ใ•ใ€‚</b> ๅ€คใ‚’ไธŠใ’ใ‚‹ใจใ‚ˆใ‚Š็ฉใ‚„ใ‹ใชๅŠ ้€Ÿใซใ€ไธ‹ใ’ใ‚‹ใจใ‚ˆใ‚Š้€Ÿใ„ใŒ่กๆ’ƒใฎใ‚ใ‚‹ๅŠ ้€Ÿใซใชใ‚Šใพใ™ใ€‚ + + + <b>Reset the "Standard" profile to defaults.</b> + <b>ใ€Œๆจ™ๆบ–ใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใซใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ€‚</b> + + + Relaxed + ใƒชใƒฉใƒƒใ‚ฏใ‚น + + + <b>Customize the "Relaxed" personality profile.</b> Designed for smoother, more comfortable driving with larger gaps. + <b>ใ€Œใƒชใƒฉใƒƒใ‚ฏใ‚นใ€ใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ€‚</b> ใ‚ˆใ‚Šๅคงใใช่ปŠ้–“ใงใ€ใ‚ˆใ‚Šๆป‘ใ‚‰ใ‹ใงๅฟซ้ฉใช้‹่ปขใ‚’็›ฎๆŒ‡ใ—ใฆ่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใ€‚ + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Relaxed" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.75 seconds. + <b>ใ€Œใƒชใƒฉใƒƒใ‚ฏใ‚นใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซไฝฟ็”จๆ™‚ใซใ€openpilot ใŒๅ…ˆ่กŒ่ปŠใฎๅพŒใ‚ใ‚’ไฝ•็ง’ใ‚ใ‘ใฆ่ฟฝๅพ“ใ™ใ‚‹ใ‹ใ€‚</b> ๅข—ใ‚„ใ™ใจ่ปŠ้–“ใŒๅบƒใŒใ‚Šใ€ๆธ›ใ‚‰ใ™ใจ่ปŠ้–“ใŒ็‹ญใใชใ‚Šใพใ™ใ€‚<br><br>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ: 1.75 ็ง’ใ€‚ + + + <b>How smoothly openpilot accelerates with the "Relaxed" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>ใ€Œใƒชใƒฉใƒƒใ‚ฏใ‚นใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใงใฎopenpilotใฎๅŠ ้€Ÿใฎๆป‘ใ‚‰ใ‹ใ•ใ€‚</b> ไธŠใ’ใ‚‹ใจ็ฉใ‚„ใ‹ใช็™บ้€ฒใซใ€ไธ‹ใ’ใ‚‹ใจใ‚ˆใ‚Š้€Ÿใ„ใŒๆ€ฅใช็™บ้€ฒใซใชใ‚Šใพใ™ใ€‚ + + + <b>How smoothly openpilot brakes with the "Relaxed" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>ใ€Œใƒชใƒฉใƒƒใ‚ฏใ‚นใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใงใฎopenpilotใฎใƒ–ใƒฌใƒผใ‚ญใฎๆป‘ใ‚‰ใ‹ใ•ใ€‚</b> ๅข—ใ‚„ใ™ใจ็ฉใ‚„ใ‹ใชๅœๆญขใซใ€ๆธ›ใ‚‰ใ™ใจ็ด ๆ—ฉใ้‹ญใ„ใƒ–ใƒฌใƒผใ‚ญใซใชใ‚Šใพใ™ใ€‚ + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Relaxed" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>ใ€Œใƒชใƒฉใƒƒใ‚ฏใ‚นใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใงใ€openpilotใŒๅ‰่ตฐ่ปŠใจใฎ้–“ใซ็ขบไฟใ™ใ‚‹่ฟฝๅŠ ใฎ่ปŠ้–“่ท้›ขใ€‚</b> ๅคงใใช้–“้š”ใจใ‚ˆใ‚Šๆ…Ž้‡ใช่ฟฝๅพ“ใซใฏๅข—ใ‚„ใ—ใ€ใ‚ˆใ‚Š่ฉฐใ‚ใŸ้–“้š”ใจ่ฟ‘่ท้›ขใงใฎ่ฟฝๅพ“ใซใฏๆธ›ใ‚‰ใ—ใฆใใ ใ•ใ„ใ€‚ + + + <b>How smoothly openpilot slows down with the "Relaxed" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>ใ€Œใƒชใƒฉใƒƒใ‚ฏใ‚นใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใงใฎ openpilot ใฎๆธ›้€Ÿใฎๆป‘ใ‚‰ใ‹ใ•ใ€‚</b> ๆ•ฐๅ€คใ‚’ไธŠใ’ใ‚‹ใจๆธ›้€Ÿใฏใ‚ˆใ‚Š็ทฉใ‚„ใ‹ใซใ€ไธ‹ใ’ใ‚‹ใจใ‚ˆใ‚Š้€Ÿใ„ใŒ้‹ญใ„ๆธ›้€Ÿใซใชใ‚Šใพใ™ใ€‚ + + + <b>How smoothly openpilot speeds up with the "Relaxed" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>ใ€Œใƒชใƒฉใƒƒใ‚ฏใ‚นใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใงใฎopenpilotใฎๅŠ ้€Ÿใฎๆป‘ใ‚‰ใ‹ใ•ใ€‚</b> ๅ€คใ‚’ไธŠใ’ใ‚‹ใจๅŠ ้€Ÿใฏใ‚ˆใ‚Š็ทฉใ‚„ใ‹ใซใ€ไธ‹ใ’ใ‚‹ใจใ‚ˆใ‚Š้€Ÿใ„ใŒ่กๆ’ƒ็š„ใชๅŠ ้€Ÿใซใชใ‚Šใพใ™ใ€‚ + + + <b>Reset the "Relaxed" profile to defaults.</b> + <b>ใ€Œใƒชใƒฉใƒƒใ‚ฏใ‚นใ€ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ๆ—ขๅฎšใซใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ€‚</b> + + + Longitudinal Tuning + ็ธฆๆ–นๅ‘ใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐ + + + <b>Acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>ๅŠ ้€Ÿใจๅˆถๅ‹•ใฎๅˆถๅพกๅค‰ๆ›ด</b>ใงใ€openpilotใฎ่ตฐ่กŒใ‚’ๅพฎ่ชฟๆ•ดใ—ใพใ™ใ€‚ + + + Acceleration Profile + ๅŠ ้€Ÿใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซ + + + <b>How quickly openpilot speeds up.</b> "Eco" is gentle and efficient, "Sport" is firmer and more responsive, and "Sport+" accelerates at the maximum rate allowed. + <b>openpilotใŒๅŠ ้€Ÿใ™ใ‚‹้€Ÿใ•ใ€‚</b> ใ€ŒEcoใ€ใฏ็ฉใ‚„ใ‹ใงๅŠน็އ็š„ใ€ใ€ŒSportใ€ใฏใ‚ˆใ‚ŠๅŠ›ๅผทใๅฟœ็ญ”ใŒ่‰ฏใใ€ใ€ŒSport+ใ€ใฏ่จฑๅฏใ•ใ‚Œใ‚‹ๆœ€ๅคงใฎๅŠ ้€ŸๅบฆใงๅŠ ้€Ÿใ—ใพใ™ใ€‚ + + + Deceleration Profile + ๆธ›้€Ÿใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซ + + + <b>How firmly openpilot slows down.</b> "Eco" favors coasting, "Sport" applies stronger braking. + <b>openpilotใŒใฉใฎ็จ‹ๅบฆๅผทใๆธ›้€Ÿใ™ใ‚‹ใ‹ใ€‚</b>ใ€ŒEcoใ€ใฏๆƒฐๆ€ง่ตฐ่กŒใ‚’ๅ„ชๅ…ˆใ—ใ€ใ€ŒSportใ€ใฏใ‚ˆใ‚Šๅผทใ„ๅˆถๅ‹•ใ‚’ใ‹ใ‘ใพใ™ใ€‚ + + + Human-Like Acceleration + ไบบ้–“ใ‚‰ใ—ใ„ๅŠ ้€Ÿ + + + <b>Acceleration that mimics human behavior</b> by easing the throttle at low speeds and adding extra power when taking off from a stop. + <b>ไบบ้–“ใฎ้‹่ปขใซ่ฟ‘ใ„ๅŠ ้€Ÿ</b>ใ€‚ไฝŽ้€Ÿๆ™‚ใซใฏใ‚นใƒญใƒƒใƒˆใƒซใ‚’็ทฉใ‚ใ€ๅœๆญข็Šถๆ…‹ใ‹ใ‚‰็™บ้€ฒใ™ใ‚‹้š›ใซใฏไฝ™ๅˆ†ใชๅŠ›ใ‚’ๅŠ ใˆใพใ™ใ€‚ + + + Human-Like Following + ไบบ้–“ใฎใ‚ˆใ†ใช่ฟฝๅพ“ + + + Lead Detection Sensitivity + ๅ…ˆ่กŒ่ปŠๆคœๅ‡บๆ„Ÿๅบฆ + + + <b>How sensitive openpilot is to detecting vehicles.</b> Higher sensitivity allows quicker detection at longer distances but may react to non-vehicle objects; lower sensitivity is more conservative and reduces false detections. + <b>openpilotใฎ่ปŠไธกๆคœๅ‡บใซๅฏพใ™ใ‚‹ๆ„Ÿๅบฆใ€‚</b> ๆ„Ÿๅบฆใ‚’้ซ˜ใใ™ใ‚‹ใจใ€ใ‚ˆใ‚Š้ ่ท้›ขใฎ่ปŠไธกใ‚’็ด ๆ—ฉใๆคœๅ‡บใงใใพใ™ใŒใ€้ž่ปŠไธก็‰ฉไฝ“ใซใ‚‚ๅๅฟœใ™ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ๆ„Ÿๅบฆใ‚’ไฝŽใใ™ใ‚‹ใจใ€ใ‚ˆใ‚Šไฟๅฎˆ็š„ใซใชใ‚Š่ชคๆคœๅ‡บใ‚’ๆธ›ใ‚‰ใ—ใพใ™ใ€‚ + + + Maximum Acceleration + ๆœ€ๅคงๅŠ ้€Ÿ + + + <b>Limit the strongest acceleration</b> openpilot can command. + <b>ๆœ€ๅคงๅŠ ้€Ÿ</b>ใ‚’ openpilot ใŒๆŒ‡็คบใงใใ‚‹็ฏ„ๅ›ฒใงๅˆถ้™ใ—ใพใ™ใ€‚ + + + "Taco Bell Run" Turn Speed Hack + ใ€ŒTaco Bell Runใ€ใ‚ฟใƒผใƒณ้€Ÿๅบฆใƒใƒƒใ‚ฏ + + + <b>The turn-speed hack from comma's 2022 "Taco Bell Run".</b> Designed to slow down for left and right turns. + <b>comma ใฎ 2022ๅนดใ€ŒTaco Bell Runใ€ใซ็”ฑๆฅใ™ใ‚‹ใ‚ฟใƒผใƒณใ‚นใƒ”ใƒผใƒ‰ใƒใƒƒใ‚ฏใ€‚</b> ๅทฆๅณใฎๆ›ฒใŒใ‚Š่ง’ใงๆธ›้€Ÿใ™ใ‚‹ใ‚ˆใ†่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใ€‚ + + + Quality of Life + ็”Ÿๆดปใฎ่ณช + + + <b>Miscellaneous acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>ๅ„็จฎๅŠ ๆธ›้€Ÿๅˆถๅพกใฎๅค‰ๆ›ด</b>ใซใ‚ˆใ‚Šใ€openpilot ใฎ่ตฐ่กŒๆŒ™ๅ‹•ใ‚’ๅพฎ่ชฟๆ•ดใ—ใพใ™ใ€‚ + + + Cruise Interval + ่ปŠ้–“่ท้›ข + + + <b>How much the set speed increases or decreases</b> for each + or โ€“ cruise control button press. + <b>ๅ„+ใพใŸใฏโ€“ใฎใ‚ฏใƒซใƒผใ‚บใ‚ณใƒณใƒˆใƒญใƒผใƒซใƒœใ‚ฟใƒณๆ“ไฝœใ”ใจใซ</b>่จญๅฎš้€ŸๅบฆใŒๅข—ๆธ›ใ™ใ‚‹้‡ + + + Cruise Interval (Hold) + ใ‚ฏใƒซใƒผใ‚บ้–“้š”๏ผˆใƒ›ใƒผใƒซใƒ‰๏ผ‰ + + + <b>How much the set speed increases or decreases while holding the + or โ€“ cruise control buttons.</b> + <b>+ ใพใŸใฏ โ€“ ใ‚ฏใƒซใƒผใ‚บใ‚ณใƒณใƒˆใƒญใƒผใƒซใƒœใ‚ฟใƒณใ‚’ๆŠผใ—็ถšใ‘ใŸใจใใซใ€่จญๅฎš้€ŸๅบฆใŒใฉใฎ็จ‹ๅบฆๅข—ๆธ›ใ™ใ‚‹ใ‹ใ€‚</b> + + + Force Stop at "Detected" Stop Lights/Signs + ใ€Œๆคœๅ‡บๆธˆใฟใ€ใฎไฟกๅท/ๆจ™่ญ˜ใงๅผทๅˆถๅœๆญข + + + <b>Force openpilot to stop whenever the driving model "detects" a red light or stop sign.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>้‹่ปขใƒขใƒ‡ใƒซใŒ่ตคไฟกๅทใ‚„ไธ€ๆ™‚ๅœๆญขๆจ™่ญ˜ใ‚’ใ€Œๆคœๅ‡บใ€ใ—ใŸใจใใฏๅฟ…ใšopenpilotใ‚’ๅœๆญขใ•ใ›ใพใ™ใ€‚</b><br><br><i><b>ๅ…่ฒฌไบ‹้ …</b>๏ผšopenpilotใฏไฟกๅทๆฉŸใ‚„ไธ€ๆ™‚ๅœๆญขๆจ™่ญ˜ใ‚’ๆ˜Ž็คบ็š„ใซใฏๆคœๅ‡บใ—ใพใ›ใ‚“ใ€‚ใ€ŒๅฎŸ้จ“ใƒขใƒผใƒ‰ใ€ใงใฏใ€openpilotใฏใ‚ซใƒกใƒฉๅ…ฅๅŠ›ใ‹ใ‚‰ใ‚จใƒณใƒ‰ใƒ„ใƒผใ‚จใƒณใƒ‰ใง้‹่ปขๅˆคๆ–ญใ‚’่กŒใ†ใŸใ‚ใ€ๆ˜Ž็ขบใช็†็”ฑใŒใชใใฆใ‚‚ๅœๆญขใ™ใ‚‹ๅ ดๅˆใŒใ‚ใ‚Šใพใ™ใ€‚</i> + + + Increase Stopped Distance by: + ๅœๆญข่ท้›ขใ‚’ๆฌกใงๅข—ใ‚„ใ™: + + + <b>Add extra space when stopped behind vehicles.</b> Increase for more room; decrease for shorter gaps. + <b>่ปŠไธกใฎๅพŒๆ–นใงๅœๆญขใ—ใฆใ„ใ‚‹ใจใใ€่ฟฝๅŠ ใฎ้–“้š”ใ‚’ๅ–ใ‚Šใพใ™ใ€‚</b> ้–“้š”ใ‚’ๅบƒใใ™ใ‚‹ใซใฏๅข—ใ‚„ใ—ใ€็Ÿญใใ™ใ‚‹ใซใฏๆธ›ใ‚‰ใ—ใพใ™ใ€‚ + + + Map Accel/Decel to Gears + ๅŠ ๆธ›้€Ÿใ‚’ใ‚ฎใ‚ขใซใƒžใƒƒใƒ”ใƒณใ‚ฐ + + + <b>Map the Acceleration or Deceleration profiles to the vehicle's "Eco" and "Sport" gear modes.</b> + <b>ๅŠ ้€ŸใพใŸใฏๆธ›้€Ÿใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’่ปŠไธกใฎใ€ŒEcoใ€ใŠใ‚ˆใณใ€ŒSportใ€ใ‚ฎใ‚ขใƒขใƒผใƒ‰ใซใƒžใƒƒใƒ”ใƒณใ‚ฐใ—ใพใ™ใ€‚</b> + + + Offset Set Speed by: + ใ‚ชใƒ•ใ‚ปใƒƒใƒˆใง่จญๅฎš้€Ÿๅบฆใ‚’่ชฟๆ•ด: + + + <b>Increase the set speed by the chosen offset.</b> For example, set +5 if you usually drive 5 over the limit. + <b>้ธๆŠžใ—ใŸใ‚ชใƒ•ใ‚ปใƒƒใƒˆๅˆ†ใ ใ‘่จญๅฎš้€Ÿๅบฆใ‚’ไธŠใ’ใพใ™ใ€‚</b> ใŸใจใˆใฐใ€้€šๅธธๅˆถ้™้€Ÿๅบฆใ‚ˆใ‚Š5้ซ˜ใ่ตฐใ‚‹ๅ ดๅˆใฏ +5 ใ‚’่จญๅฎšใ—ใพใ™ใ€‚ + + + Reverse Cruise Increase + ใ‚ฏใƒซใƒผใ‚บ้€Ÿๅบฆใ‚’้€†ๆ–นๅ‘ใซๅข—ๅŠ  + + + <b>Reverse the cruise control button behavior</b> so a short press increases the set speed by 5 instead of 1. + <b>ใ‚ฏใƒซใƒผใ‚บใ‚ณใƒณใƒˆใƒญใƒผใƒซใƒœใ‚ฟใƒณใฎๅ‹•ไฝœใ‚’ๅ่ปข</b>ใ—ใ€็ŸญๆŠผใ—ใง่จญๅฎš้€Ÿๅบฆใ‚’1ใงใฏใชใ5ๅข—ๅŠ ใ•ใ›ใพใ™ใ€‚ + + + Increase Following Distance by: + ่ฟฝๅพ“่ท้›ขใ‚’ๅข—ใ‚„ใ™: + + + Reduce Acceleration by: + ๅŠ ้€Ÿๅบฆใ‚’ๆฌกใฎๅ€คใ ใ‘ไธ‹ใ’ใ‚‹: + + + Reduce Speed in Curves by: + ใ‚ซใƒผใƒ–ใงใฎ้€Ÿๅบฆใ‚’ๆฌกใฎๅ€คใ ใ‘ๆธ›้€Ÿ: + + + Snow + ้›ช + + + <b>Driving adjustments for snowy conditions.</b> + <b>้›ช้“ใซใŠใ‘ใ‚‹้‹่ปข่ชฟๆ•ดใ€‚</b> + + + <b>Add extra space behind lead vehicles in snow.</b> Increase for more space; decrease for tighter gaps. + <b>้›ช้“ใงใฏๅ…ˆ่กŒ่ปŠใจใฎ่ปŠ้–“ใ‚’ๅบƒใ‚ใซๅ–ใ‚Šใพใ™ใ€‚</b> ๅข—ใ‚„ใ™ใจ่ปŠ้–“ใŒๅบƒใŒใ‚Šใ€ๆธ›ใ‚‰ใ™ใจ้–“้š”ใŒ็‹ญใใชใ‚Šใพใ™ใ€‚ + + + <b>Add extra buffer when stopped behind vehicles in snow.</b> Increase for more room; decrease for shorter gaps. + <b>้›ช้“ใงๅ‰่ปŠใฎๅพŒใ‚ใซๅœๆญขใ™ใ‚‹้š›ใฏไฝ™่ฃ•ใ‚’ๅคšใ‚ใซๅ–ใฃใฆใใ ใ•ใ„ใ€‚</b> ๅข—ใ‚„ใ™ใจ่ท้›ขใŒๅบƒใŒใ‚Šใ€ๆธ›ใ‚‰ใ™ใจ้–“้š”ใŒ็Ÿญใใชใ‚Šใพใ™ใ€‚ + + + <b>Lower the maximum acceleration in snow.</b> Increase for softer takeoffs; decrease for quicker but less stable takeoffs. + <b>้›ช้“ใงใฏๆœ€ๅคงๅŠ ้€Ÿๅบฆใ‚’ไธ‹ใ’ใฆใใ ใ•ใ„ใ€‚</b> ็ฉใ‚„ใ‹ใช็™บ้€ฒใซใฏไธŠใ’ใ€็ด ๆ—ฉใ„ใŒๅฎ‰ๅฎšๆ€งใซๅŠฃใ‚‹็™บ้€ฒใซใฏไธ‹ใ’ใพใ™ใ€‚ + + + <b>Lower the desired speed while driving through curves in snow.</b> Increase for safer, gentler turns; decrease for more aggressive driving in curves. + <b>้›ช้“ใฎใ‚ซใƒผใƒ–่ตฐ่กŒๆ™‚ใฏๅธŒๆœ›้€Ÿๅบฆใ‚’ไธ‹ใ’ใฆใใ ใ•ใ„ใ€‚</b> ๅฎ‰ๅ…จใง็ฉใ‚„ใ‹ใชๆ—‹ๅ›žใซใฏไธŠใ’ใ€ใ‚ซใƒผใƒ–ใงใ‚ˆใ‚Š็ฉๆฅต็š„ใซ่ตฐ่กŒใ™ใ‚‹ๅ ดๅˆใฏไธ‹ใ’ใฆใใ ใ•ใ„ใ€‚ + + + Speed Limit Controller + ้€Ÿๅบฆๅˆถ้™ใ‚ณใƒณใƒˆใƒญใƒผใƒฉใƒผ + + + <b>Limit openpilot's maximum driving speed to the current speed limit</b> obtained from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + <b>ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ๆธˆใฟๅœฐๅ›ณใ€Mapboxใ€Navigate on openpilotใ€ใพใŸใฏๅฏพๅฟœ่ปŠ็จฎ๏ผˆFordใ€Genesisใ€Hyundaiใ€Kiaใ€Lexusใ€Toyota๏ผ‰ใฎใƒ€ใƒƒใ‚ทใƒฅใƒœใƒผใƒ‰ใ‹ใ‚‰ๅ–ๅพ—ใ—ใŸ็พๅœจใฎๅˆถ้™้€Ÿๅบฆใซใ€openpilot ใฎๆœ€้ซ˜่ตฐ่กŒ้€Ÿๅบฆใ‚’ๅˆถ้™ใ—ใพใ™</b> + + + Fallback Speed + ใƒ•ใ‚ฉใƒผใƒซใƒใƒƒใ‚ฏใ‚นใƒ”ใƒผใƒ‰ + + + <b>The speed used by "Speed Limit Controller" when no speed limit is found.</b><br><br>- <b>Set Speed</b>: Use the cruise set speed<br>- <b>Experimental Mode</b>: Estimate the limit using the driving model<br>- <b>Previous Limit</b>: Keep using the last confirmed limit + <b>ใ€ŒSpeed Limit Controllerใ€ใŒ้€Ÿๅบฆๅˆถ้™ใ‚’ๆคœๅ‡บใงใใชใ„ๅ ดๅˆใซไฝฟ็”จใ™ใ‚‹้€Ÿๅบฆใ€‚</b><br><br>- <b>Set Speed</b>: ใ‚ฏใƒซใƒผใ‚บใฎ่จญๅฎš้€Ÿๅบฆใ‚’ไฝฟ็”จ<br>- <b>Experimental Mode</b>: ่ตฐ่กŒใƒขใƒ‡ใƒซใงๅˆถ้™้€Ÿๅบฆใ‚’ๆŽจๅฎš<br>- <b>Previous Limit</b>: ๆœ€ๅพŒใซ็ขบ่ชใ•ใ‚ŒใŸๅˆถ้™้€Ÿๅบฆใ‚’็ถ™็ถšไฝฟ็”จ + + + Override Speed + ้€Ÿๅบฆใ‚’ไธŠๆ›ธใ + + + <b>The speed used by "Speed Limit Controller" after you manually drive faster than the posted limit.</b><br><br>- <b>Set with Gas Pedal</b>: Use the highest speed reached while pressing the gas<br>- <b>Max Set Speed</b>: Use the cruise set speed<br><br>Overrides clear when openpilot disengages. + <b>ๆ‰‹ๅ‹•ใงๅˆถ้™้€Ÿๅบฆใ‚’่ถ…ใˆใฆ่ตฐ่กŒใ—ใŸๅพŒใซใ€ŒSpeed Limit Controllerใ€ใŒไฝฟ็”จใ™ใ‚‹้€Ÿๅบฆใ€‚</b><br><br>- <b>ใ‚ขใ‚ฏใ‚ปใƒซใง่จญๅฎš</b>: ใ‚ขใ‚ฏใ‚ปใƒซใ‚’่ธใ‚“ใงใ„ใ‚‹้–“ใซๅˆฐ้”ใ—ใŸๆœ€้ซ˜้€Ÿๅบฆใ‚’ไฝฟ็”จ<br>- <b>ๆœ€ๅคง่จญๅฎš้€Ÿๅบฆ</b>: ใ‚ฏใƒซใƒผใ‚บใฎ่จญๅฎš้€Ÿๅบฆใ‚’ไฝฟ็”จ<br><br>openpilotใŒใƒ‡ใ‚ฃใ‚นใ‚จใƒณใ‚ฒใƒผใ‚ธใ™ใ‚‹ใจไธŠๆ›ธใใฏใ‚ฏใƒชใ‚ขใ•ใ‚Œใพใ™ใ€‚ + + + <b>Miscellaneous "Speed Limit Controller" changes</b> to fine-tune how openpilot drives. + <b>ๅ„็จฎใ€ŒSpeed Limit Controllerใ€ใฎๅค‰ๆ›ด</b>ใงใ€openpilotใฎ่ตฐ่กŒๆŒ™ๅ‹•ใ‚’ๅพฎ่ชฟๆ•ดใ—ใพใ™ใ€‚ + + + Confirm New Speed Limits + ๆ–ฐใ—ใ„้€Ÿๅบฆๅˆถ้™ใ‚’็ขบ่ช + + + <b>Ask before changing to a new speed limit.</b> To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds. + <b>ๆ–ฐใ—ใ„ๅˆถ้™้€Ÿๅบฆใซๅค‰ๆ›ดใ™ใ‚‹ๅ‰ใซ็ขบ่ชใ—ใพใ™ใ€‚</b> ๅ—ใ‘ๅ…ฅใ‚Œใ‚‹ใซใฏใ€็”ป้ขไธŠใง็‚นๆป…ใ—ใฆใ„ใ‚‹ใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆใ‚’ใ‚ฟใƒƒใƒ—ใ™ใ‚‹ใ‹ใ€Cruise Increase ใƒœใ‚ฟใƒณใ‚’ๆŠผใ—ใฆใใ ใ•ใ„ใ€‚ๆ‹’ๅฆใ™ใ‚‹ใซใฏใ€Cruise Decrease ใƒœใ‚ฟใƒณใ‚’ๆŠผใ™ใ‹ใ€30็ง’้–“็„ก่ฆ–ใ—ใฆใใ ใ•ใ„ใ€‚ + + + Force MPH from Dashboard + ใƒ€ใƒƒใ‚ทใƒฅใƒœใƒผใƒ‰ใงMPHใ‚’ๅผทๅˆถ่จญๅฎš + + + <b>Always read dashboard speed limit signs in mph.</b> Turn this on if the cluster shows mph but the limit is interpreted as km/h. + <b>ๅธธใซใƒ€ใƒƒใ‚ทใƒฅใƒœใƒผใƒ‰ใฎๅˆถ้™้€Ÿๅบฆๆจ™่ญ˜ใ‚’mphใง็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚</b> ใ‚ฏใƒฉใ‚นใ‚ฟใƒผใŒmph่กจ็คบใชใฎใซๅˆถ้™้€ŸๅบฆใŒkm/hใจใ—ใฆ่งฃ้‡ˆใ•ใ‚Œใ‚‹ๅ ดๅˆใฏใ‚ชใƒณใซใ—ใฆใใ ใ•ใ„ใ€‚ + + + Higher Limit Lookahead Time + ้ซ˜ไธŠ้™ใฎๅ…ˆ่ชญใฟๆ™‚้–“ + + + <b>How far ahead openpilot anticipates upcoming higher speed limits</b> from downloaded map data. + <b>ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใŸๅœฐๅ›ณใƒ‡ใƒผใ‚ฟใซๅŸบใฅใใ€openpilotใŒๅ…ˆใฎใ‚ˆใ‚Š้ซ˜ใ„ๅˆถ้™้€Ÿๅบฆใ‚’ใฉใฎ็จ‹ๅบฆๅ…ˆ่ชญใฟใ™ใ‚‹ใ‹</b> + + + Lower Limit Lookahead Time + ไธ‹้™ๅ…ˆ่ชญใฟๆ™‚้–“ + + + <b>How far ahead openpilot anticipates upcoming lower speed limits</b> from downloaded map data. + <b>ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใŸๅœฐๅ›ณใƒ‡ใƒผใ‚ฟใซๅŸบใฅใใ€openpilot ใŒๅ…ˆ่กŒใ—ใฆไฝŽใ„ๅˆถ้™้€Ÿๅบฆใ‚’ใฉใ‚Œใ ใ‘ๅ…ˆใพใงไบˆๆธฌใ™ใ‚‹ใ‹</b> + + + Match Speed Limit on Engage + ไฝœๅ‹•ๆ™‚ใซๅˆถ้™้€Ÿๅบฆใซๅˆใ‚ใ›ใ‚‹ + + + <b>When openpilot is first enabled, automatically set the max speed to the current posted limit.</b> + <b>openpilot ใ‚’ๅˆใ‚ใฆๆœ‰ๅŠนใซใ—ใŸใจใใ€ๆœ€้ซ˜้€Ÿๅบฆใ‚’็พๅœจใฎ่กจ็คบๅˆถ้™้€Ÿๅบฆใซ่‡ชๅ‹•่จญๅฎšใ—ใพใ™ใ€‚</b> + + + Use Mapbox as Fallback + ใƒ•ใ‚ฉใƒผใƒซใƒใƒƒใ‚ฏใจใ—ใฆMapboxใ‚’ไฝฟ็”จ + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>ไป–ใฎๆƒ…ๅ ฑๆบใŒใชใ„ๅ ดๅˆใซ Mapbox ใฎ้€Ÿๅบฆๅˆถ้™ใƒ‡ใƒผใ‚ฟใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚</b> + + + Speed Limit Source Priority + ้€Ÿๅบฆๅˆถ้™ใ‚ฝใƒผใ‚นใฎๅ„ชๅ…ˆ้ †ไฝ + + + <b>The source order for speed limits</b> when more than one is available. + <b>่ค‡ๆ•ฐใฎ้€Ÿๅบฆๅˆถ้™ใŒใ‚ใ‚‹ๅ ดๅˆใฎใ‚ฝใƒผใ‚นใฎๅ„ชๅ…ˆ้ †</b> + + + Speed Limit Offsets + ้€Ÿๅบฆๅˆถ้™ใ‚ชใƒ•ใ‚ปใƒƒใƒˆ + + + <b>Add an offset to the posted speed limit</b> to better match your driving style. + <b>ๆจ™่ญ˜ใฎ้€Ÿๅบฆๅˆถ้™ใซใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ‚’่ฟฝๅŠ </b>ใ—ใฆใ€้‹่ปขใ‚นใ‚ฟใ‚คใƒซใซใ‚ˆใ‚Š้ฉๅˆใ•ใ›ใพใ™ใ€‚ Speed Offset (0โ€“24 mph) - ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ (0โ€“24 mph) + ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ (0โ€“24 mph) + + + <b>How much to offset posted speed-limits</b> between 0 and 24 mph. + <b>ๆจ™่ญ˜ใฎๅˆถ้™้€Ÿๅบฆใ‹ใ‚‰ใฉใ‚Œใ ใ‘ใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ™ใ‚‹ใ‹</b>๏ผˆ0๏ฝž24 mph ใฎ็ฏ„ๅ›ฒ๏ผ‰ใ€‚ Speed Offset (25โ€“34 mph) - ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ (25โ€“34 mph) + ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ๏ผˆ25โ€“34 mph๏ผ‰ + + + <b>How much to offset posted speed-limits</b> between 25 and 34 mph. + <b>25๏ฝž34 mph ใฎๅˆถ้™้€Ÿๅบฆใ‹ใ‚‰ใฉใ‚Œใ ใ‘ใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ™ใ‚‹ใ‹</b> Speed Offset (35โ€“44 mph) - ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ (35โ€“44 mph) + ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ๏ผˆ35โ€“44 mph๏ผ‰ + + + <b>How much to offset posted speed-limits</b> between 35 and 44 mph. + <b>ๅˆถ้™้€Ÿๅบฆใฎใ‚ชใƒ•ใ‚ปใƒƒใƒˆ้‡</b> 35๏ฝž44 mph ใฎ้–“ใ€‚ Speed Offset (45โ€“54 mph) - ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ๏ผˆ45โ€“54 mph๏ผ‰ + ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ๏ผˆ45โ€“54 mph๏ผ‰ + + + <b>How much to offset posted speed-limits</b> between 45 and 54 mph. + <b>45๏ฝž54 mph ใฎๅˆถ้™้€Ÿๅบฆใ‹ใ‚‰ใฉใ‚Œใ ใ‘ใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ™ใ‚‹ใ‹</b> Speed Offset (55โ€“64 mph) - ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ (55โ€“64 mph) + ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ๏ผˆ55โ€“64 mph๏ผ‰ + + + <b>How much to offset posted speed-limits</b> between 55 and 64 mph. + <b>55ใ€œ64 mphใฎๅˆถ้™้€Ÿๅบฆใซๅฏพใ™ใ‚‹ใ‚ชใƒ•ใ‚ปใƒƒใƒˆ้‡</b> Speed Offset (65โ€“74 mph) - ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ (65โ€“74 mph) + ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ๏ผˆ65โ€“74 mph๏ผ‰ + + + <b>How much to offset posted speed-limits</b> between 65 and 74 mph. + <b>ๅˆถ้™้€Ÿๅบฆใฎใ‚ชใƒ•ใ‚ปใƒƒใƒˆ้‡</b>๏ผˆ65๏ฝž74 mph ใฎ็ฏ„ๅ›ฒ๏ผ‰ Speed Offset (75โ€“99 mph) - ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ (75โ€“99 mph) + ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ๏ผˆ75โ€“99 mph๏ผ‰ - Only For Detected Lanes - ๆคœๅ‡บใ•ใ‚ŒใŸ่ปŠ็ทšใฎใฟ + <b>How much to offset posted speed-limits</b> between 75 and 99 mph. + <b>ๅˆถ้™้€Ÿๅบฆใฎใ‚ชใƒ•ใ‚ปใƒƒใƒˆ้‡</b>๏ผˆ75๏ฝž99 mph ใฎ้–“๏ผ‰ + + + Visual Settings + ่กจ็คบ่จญๅฎš + + + <b>Visual "Speed Limit Controller" changes</b> to fine-tune how the driving screen looks. + <b>้‹่ปข็”ป้ขใฎ่ฆ‹ใŸ็›ฎใ‚’ๅพฎ่ชฟๆ•ดใ™ใ‚‹ใŸใ‚ใฎใ€ŒSpeed Limit Controllerใ€ใฎ่ฆ–่ฆš็š„ใชๅค‰ๆ›ด</b> + + + Show Speed Limit Offset + ้€Ÿๅบฆๅˆถ้™ใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ‚’่กจ็คบ + + + <b>Show the current offset from the posted limit</b> on the driving screen. + <b>ๆจ™่ญ˜ๅˆถ้™ใ‹ใ‚‰ใฎ็พๅœจใฎใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ‚’่กจ็คบ</b>้‹่ปข็”ป้ขใซใ€‚ + + + Show Speed Limit Sources + ้€Ÿๅบฆๅˆถ้™ใฎ่กจ็คบๅ…ƒใ‚’่กจ็คบ + + + <b>Display the speed-limit sources and their current values</b> on the driving screen. + <b>่ตฐ่กŒ็”ป้ขใซ้€Ÿๅบฆๅˆถ้™ใฎใ‚ฝใƒผใ‚นใจใใฎ็พๅœจๅ€คใ‚’่กจ็คบ</b> + + + seconds + ็ง’ + + + m/sยฒ + m/sยฒ + + + mph + mph + + + With Lead + ๅ…ˆ่กŒ่ปŠใ‚ใ‚Š + + + <b>Switch to "Experimental Mode" when driving below this speed with a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>ๅ…ˆ่กŒ่ปŠใŒใ„ใฆใ“ใฎ้€Ÿๅบฆๆœชๆบ€ใง่ตฐ่กŒใ™ใ‚‹ๅ ดๅˆใฏใ€ŒExperimental Modeใ€ใซๅˆ‡ใ‚Šๆ›ฟใˆใฆใใ ใ•ใ„</b>ใ€‚ไฝŽ้€Ÿๆ™‚ใฎ็Šถๆณใ‚’openpilotใŒใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใซๅ‡ฆ็†ใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚ + + + Slower Lead + ๅ‰ๆ–น่ปŠไธกใŒๆธ›้€Ÿไธญ + + + Stopped Lead + ๅœๆญขใ—ใŸๅ…ˆ่กŒ่ปŠ + + + Intersections + ไบคๅทฎ็‚น + + + Turns + ๆ›ฒใŒใ‚Š + + + Off + ใ‚ชใƒ• + + + second + ็ง’ + + + Not For Detected Lanes + ๆคœๅ‡บใ•ใ‚ŒใŸ่ปŠ็ทšใซใฏ้žๅฏพๅฟœ + + + RESET + ใƒชใ‚ปใƒƒใƒˆ + + + Are you sure you want to completely reset your curvature data? + ๆ›ฒ็އใƒ‡ใƒผใ‚ฟใ‚’ๅฎŒๅ…จใซใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + + + Eco + ใ‚จใ‚ณ + + + Sport + ใ‚นใƒใƒผใƒ„ + + + Sport+ + ใ‚นใƒใƒผใƒ„+ + + + feet + ใƒ•ใ‚ฃใƒผใƒˆ + + + Acceleration + ๅŠ ้€Ÿ + + + Deceleration + ๆธ›้€Ÿ + + + MANAGE + ็ฎก็† + + + Set Speed + ้€Ÿๅบฆใ‚’่จญๅฎš + + + Experimental Mode + ๅฎŸ้จ“ใƒขใƒผใƒ‰ + + + Previous Limit + ๅ‰ๅ›žใฎๅˆถ้™ + + + None + ใชใ— + + + Set With Gas Pedal + ใ‚ขใ‚ฏใ‚ปใƒซใƒšใƒ€ใƒซใง่จญๅฎš + + + Max Set Speed + ๆœ€ๅคง่จญๅฎš้€Ÿๅบฆ + + + SELECT + ้ธๆŠž + + + Dashboard + ใƒ€ใƒƒใ‚ทใƒฅใƒœใƒผใƒ‰ + + + Map Data + ๅœฐๅ›ณใƒ‡ใƒผใ‚ฟ + + + Navigation + ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณ + + + Highest + ๆœ€้ซ˜ + + + Lowest + ๆœ€ๅฐ + + + Select your primary priority + ไธปใชๅ„ชๅ…ˆไบ‹้ …ใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ + + + Select your secondary priority + ็ฌฌ2ๅ„ชๅ…ˆๅบฆใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ + + + Select your tertiary priority + ็ฌฌ3ๅ„ชๅ…ˆๅบฆใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ + + + Lower Limits + ไธ‹้™ + + + Higher Limits + ไธŠ้™ใ‚’ๅผ•ใไธŠใ’ใ‚‹ + + + Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? + <b>Traffic Mode</b> ใฎ่จญๅฎšใ‚’ๅฎŒๅ…จใซใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹? + + + Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? + <b>ใ‚ขใ‚ฐใƒฌใƒƒใ‚ทใƒ–</b>ใฎไบบๆ ผ่จญๅฎšใ‚’ๅฎŒๅ…จใซใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + + + Are you sure you want to completely reset your settings for the <b>Standard</b> personality? + <b>Standard</b>ใฎใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใฎ่จญๅฎšใ‚’ๅฎŒๅ…จใซใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹? + + + Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? + <b>ใƒชใƒฉใƒƒใ‚ฏใ‚น</b>ใฎใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃ่จญๅฎšใ‚’ๅฎŒๅ…จใซใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + + + foot + ใƒ•ใ‚ฃใƒผใƒˆ + + + meter + ใƒกใƒผใ‚ฟใƒผ + + + meters + ใƒกใƒผใƒˆใƒซ + + + km/h + km/h Speed Offset (0โ€“29 km/h) - ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ (0โ€“29 km/h) + ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ๏ผˆ0โ€“29 km/h๏ผ‰ Speed Offset (30โ€“49 km/h) - ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ (30โ€“49 km/h) + ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ๏ผˆ30โ€“49 km/h๏ผ‰ Speed Offset (50โ€“59 km/h) - ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ (50โ€“59 km/h) + ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ๏ผˆ50โ€“59 km/h๏ผ‰ Speed Offset (60โ€“79 km/h) - ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ (60โ€“79 km/h) + ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ๏ผˆ60โ€“79 km/h๏ผ‰ Speed Offset (80โ€“99 km/h) - ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ (80โ€“99 km/h) + ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ (80โ€“99 km/h) Speed Offset (100โ€“119 km/h) - ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ (100โ€“119 km/h) + ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ๏ผˆ100โ€“119 km/h๏ผ‰ Speed Offset (120โ€“140 km/h) - ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ (120โ€“140 km/h) + ้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ๏ผˆ120โ€“140 km/h๏ผ‰ - Curve Speed Control - ใ‚ซใƒผใƒ–้€Ÿๅบฆๅˆถๅพก - - - Automatically slow down for upcoming curves using downloaded maps or the driving model. - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใŸๅœฐๅ›ณใ‚„้‹่ปขใƒขใƒ‡ใƒซใ‚’ไฝฟ็”จใ—ใฆใ€ใ“ใ‚Œใ‹ใ‚‰ใฎใ‚ซใƒผใƒ–ใซๅ‚™ใˆใฆ่‡ชๅ‹•็š„ใซๆธ›้€Ÿใ—ใพใ™ใ€‚ - - - Curve Detection Method - ๆ›ฒ็ทšๆคœๅ‡บๆณ• - - - How curves are detected. <b>Map-Based</b> uses downloaded map data to identify curves and determine the appropriate speed in which to handle them at, while <b>Vision</b> relies solely on the driving model. - ใ‚ซใƒผใƒ–ใฎๆคœๅ‡บๆ–นๆณ•ใ€‚<b>ๅœฐๅ›ณใƒ™ใƒผใ‚น</b>ใฏใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ•ใ‚ŒใŸๅœฐๅ›ณใƒ‡ใƒผใ‚ฟใ‚’ไฝฟ็”จใ—ใฆใ‚ซใƒผใƒ–ใ‚’็‰นๅฎšใ—ใ€ใใ‚Œใซๅฏพๅ‡ฆใ™ใ‚‹ใŸใ‚ใฎ้ฉๅˆ‡ใช้€Ÿๅบฆใ‚’ๆฑบๅฎšใ—ใพใ™ใ€‚ไธ€ๆ–นใ€<b>ใƒ“ใ‚ธใƒงใƒณ</b>ใฏ้‹่ปขใƒขใƒ‡ใƒซใฎใฟใซไพๅญ˜ใ—ใพใ™ใ€‚ - - - Curve Detection Failsafe - ใ‚ซใƒผใƒ–ๆคœๅ‡บใƒ•ใ‚งใ‚คใƒซใ‚ปใƒผใƒ• - - - Only trigger <b>Curve Speed Control</b> if a curve is detected with the model while using the <b>Map-Based</b> method. Useful to help prevent false positives. - ใ‚ซใƒผใƒ–ใŒใƒขใƒ‡ใƒซใงๆคœๅ‡บใ•ใ‚ŒใŸๅ ดๅˆใซใฎใฟใ€<b>ใƒžใƒƒใƒ—ใƒ™ใƒผใ‚น</b>ใฎๆ–นๆณ•ใ‚’ไฝฟ็”จใ—ใฆ<b>ใ‚ซใƒผใƒ–้€Ÿๅบฆๅˆถๅพก</b>ใ‚’ใƒˆใƒชใ‚ฌใƒผใ—ใพใ™ใ€‚่ชคๆคœ็Ÿฅใ‚’้˜ฒใใฎใซๅฝน็ซ‹ใกใพใ™ใ€‚ - - - Curve Detection Sensitivity - ใ‚ซใƒผใƒ–ๆคœๅ‡บๆ„Ÿๅบฆ - - - How sensitive openpilot is when detecting curves. Higher values trigger earlier responses at the risk of triggering too often, while lower values increase confidence at the risk of triggering too infrequently. - openpilotใŒใ‚ซใƒผใƒ–ใ‚’ๆคœๅ‡บใ™ใ‚‹้š›ใฎๆ„Ÿๅบฆใ€‚้ซ˜ใ„ๅ€คใฏใ€้ ป็นใซใƒˆใƒชใ‚ฌใƒผใ•ใ‚Œใ‚‹ใƒชใ‚นใ‚ฏใŒใ‚ใ‚‹ไธ€ๆ–นใงใ€ๆ—ฉๆœŸใฎๅๅฟœใ‚’ๅผ•ใ่ตทใ“ใ—ใ€ไฝŽใ„ๅ€คใฏใ€ใƒˆใƒชใ‚ฌใƒผใŒใ‚ใพใ‚Šใซใ‚‚ๅฐ‘ใชใใชใ‚‹ใƒชใ‚นใ‚ฏใŒใ‚ใ‚‹ไธ€ๆ–นใงใ€ไฟก้ ผๆ€งใ‚’้ซ˜ใ‚ใพใ™ใ€‚ - - - Curve Speed Aggressiveness - ใ‚ซใƒผใƒ–้€Ÿๅบฆใฎๆ”ปๆ’ƒๆ€ง - - - How aggressive openpilot is when navigating through curves. Higher values result in faster turns but may reduce comfort or stability, while lower values result in slower, smoother turns at the risk of being overly cautious. - openpilotใŒใ‚ซใƒผใƒ–ใ‚’้€š้Žใ™ใ‚‹้š›ใฎๆ”ปๆ’ƒๆ€งใ€‚ๅ€คใŒ้ซ˜ใ„ใปใฉ้€Ÿใ„ใ‚ฟใƒผใƒณใŒๅฏ่ƒฝใซใชใ‚Šใพใ™ใŒใ€ๅฟซ้ฉๆ€งใ‚„ๅฎ‰ๅฎšๆ€งใŒไฝŽไธ‹ใ™ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ไธ€ๆ–นใ€ๅ€คใŒไฝŽใ„ใจใ€ใ‚ˆใ‚Šๆ…Ž้‡ใซใชใ‚Šใ™ใŽใ‚‹ใƒชใ‚นใ‚ฏใŒใ‚ใ‚‹ใ‚‚ใฎใฎใ€ใ‚ˆใ‚Š้…ใๆป‘ใ‚‰ใ‹ใชใ‚ฟใƒผใƒณใซใชใ‚Šใพใ™ใ€‚ - - - Map Based - ใƒžใƒƒใƒ—ใƒ™ใƒผใ‚น - - - Vision - ใƒ“ใ‚ธใƒงใƒณ - - - The <b>Map Based</b> option is only available when some <b>Map Data</b> has been downloaded! - <b>ใƒžใƒƒใƒ—ใƒ™ใƒผใ‚น</b>ใ‚ชใƒ—ใ‚ทใƒงใƒณใฏใ€<b>ใƒžใƒƒใƒ—ใƒ‡ใƒผใ‚ฟ</b>ใŒใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ•ใ‚Œใฆใ„ใ‚‹ๅ ดๅˆใซใฎใฟๅˆฉ็”จๅฏ่ƒฝใงใ™๏ผ + <b>Following behavior that mimics human drivers</b> by closing gaps behind faster vehicles for quicker takeoffs and dynamically adjusting the desired following distance for gentler, more efficient braking. + <b>ไบบ้–“ใฎใƒ‰ใƒฉใ‚คใƒใƒผใ‚’ๆจกๅ€ฃใ™ใ‚‹่ฟฝๅพ“ๆŒ™ๅ‹•</b>ใ€‚ใ‚ˆใ‚Š้€Ÿใ„่ปŠไธกใฎๅพŒๆ–นใง่ปŠ้–“ใ‚’่ฉฐใ‚ใฆ็™บ้€ฒใ‚’็ด ๆ—ฉใใ—ใ€ๆœ›ใพใ—ใ„่ฟฝๅพ“่ท้›ขใ‚’ๅ‹•็š„ใซ่ชฟๆ•ดใ—ใฆใ€ใ‚ˆใ‚Š็ฉใ‚„ใ‹ใงๅŠน็އ็š„ใชๆธ›้€Ÿใ‚’ๅฎŸ็พใ—ใพใ™ใ€‚ FrogPilotManageControl MANAGE - ็ฎก็†ใ™ใ‚‹ + ็ฎก็† FrogPilotMapsPanel Manually - ๆ‰‹ๅ‹•ใง + ๆ‰‹ๅ‹•ใง Weekly - ๆฏŽ้€ฑ + ๆฏŽ้€ฑ Monthly - ๆฏŽๆœˆ + ๆฏŽๆœˆ Automatically Update Maps - ใƒžใƒƒใƒ—ใ‚’่‡ชๅ‹•ๆ›ดๆ–ฐ + ๅœฐๅ›ณใ‚’่‡ชๅ‹•ๆ›ดๆ–ฐ - The frequency at which maps sync with the latest OpenStreetMap (OSM) changes. Weekly updates occur every Sunday, and monthly updates occur on the 1st. - ๅœฐๅ›ณใŒๆœ€ๆ–ฐใฎOpenStreetMap๏ผˆOSM๏ผ‰ใฎๅค‰ๆ›ดใจๅŒๆœŸใ™ใ‚‹้ ปๅบฆใ€‚ๆฏŽ้€ฑใฎๆ›ดๆ–ฐใฏๆฏŽ้€ฑๆ—ฅๆ›œๆ—ฅใซ่กŒใ‚ใ‚Œใ€ๆฏŽๆœˆใฎๆ›ดๆ–ฐใฏ1ๆ—ฅใซ่กŒใ‚ใ‚Œใพใ™ใ€‚ - - - Data Sources - ใƒ‡ใƒผใ‚ฟใ‚ฝใƒผใ‚น - - - Select map data sources to use with "Curve Speed Control" and "Speed Limit Controller". - ใ€Œใ‚ซใƒผใƒ–้€Ÿๅบฆๅˆถๅพกใ€ใจใ€Œ้€Ÿๅบฆๅˆถ้™ใ‚ณใƒณใƒˆใƒญใƒผใƒฉใƒผใ€ใซไฝฟ็”จใ™ใ‚‹ๅœฐๅ›ณใƒ‡ใƒผใ‚ฟใ‚ฝใƒผใ‚นใ‚’้ธๆŠžใ—ใพใ™ใ€‚ - - - COUNTRIES - ๅ›ฝใ€… - - - STATES - ๅทž + <b>How often maps update</b> from "OpenStreetMap (OSM)" with the latest speed limit information. Weekly updates run every Sunday; monthly updates run on the 1st. + <b>ๆœ€ๆ–ฐใฎ้€Ÿๅบฆๅˆถ้™ๆƒ…ๅ ฑใ‚’ๅซใ‚€</b>ใ€ŒOpenStreetMap (OSM)ใ€ใ‹ใ‚‰ใฎๅœฐๅ›ณๆ›ดๆ–ฐใฎ้ ปๅบฆใ€‚ๆฏŽ้€ฑใฎๆ›ดๆ–ฐใฏๆ—ฅๆ›œๆ—ฅใ€ๆฏŽๆœˆใฎๆ›ดๆ–ฐใฏ1ๆ—ฅใซๅฎŸ่กŒใ•ใ‚Œใพใ™ใ€‚ Download Maps - ๅœฐๅ›ณใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ + ๅœฐๅ›ณใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ DOWNLOAD - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ + ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ - Download the selected maps to use with "Curve Speed Control" and "Speed Limit Controller". - ้ธๆŠžใ—ใŸใƒžใƒƒใƒ—ใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใฆใ€ใ€ŒCurve Speed Controlใ€ใจใ€ŒSpeed Limit Controllerใ€ใงไฝฟ็”จใ—ใพใ™ใ€‚ + <b>Manually update your selected map sources</b> so "Speed Limit Controller" has the latest speed limit information. + <b>้ธๆŠžใ—ใŸๅœฐๅ›ณใ‚ฝใƒผใ‚นใ‚’ๆ‰‹ๅ‹•ใงๆ›ดๆ–ฐ</b>ใ—ใฆใ€ใ€ŒSpeed Limit Controllerใ€ใซๆœ€ๆ–ฐใฎๅˆถ้™้€Ÿๅบฆๆƒ…ๅ ฑใ‚’ๅๆ˜ ใ•ใ›ใฆใใ ใ•ใ„ใ€‚ CANCEL - ใ‚ญใƒฃใƒณใ‚ปใƒซ + ใ‚ญใƒฃใƒณใ‚ปใƒซ - Are you sure you want to cancel the download? - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ‚’ใ‚ญใƒฃใƒณใ‚ปใƒซใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + Cancel the download? + ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ‚’ใ‚ญใƒฃใƒณใ‚ปใƒซใ—ใพใ™ใ‹๏ผŸ - Download Completion ETA - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ๅฎŒไบ†ไบˆๅฎšๆ™‚ๅˆป + Last Updated + ๆœ€็ต‚ๆ›ดๆ–ฐ - Download Progress - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใฎ้€ฒ่กŒ็Šถๆณ + Map Sources + ๅœฐๅ›ณใ‚ฝใƒผใ‚น - Download Time Elapsed - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰็ตŒ้Žๆ™‚้–“ + <b>Select the countries or U.S. states to use with "Speed Limit Controller".</b> + <b>ใ€ŒSpeed Limit Controllerใ€ใ‚’ไฝฟ็”จใ™ใ‚‹ๅ›ฝใพใŸใฏ็ฑณๅ›ฝใฎๅทžใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ใ€‚</b> - Maps Last Updated - ใƒžใƒƒใƒ—ใฎๆœ€็ต‚ๆ›ดๆ–ฐๆ—ฅ + COUNTRIES + ๅ›ฝๅˆฅ่จญๅฎš - Maps Size - ใƒžใƒƒใƒ—ใ‚ตใ‚คใ‚บ + STATES + ๅทž + + + Progress + ้€ฒ่กŒ็Šถๆณ + + + Time Elapsed + ็ตŒ้Žๆ™‚้–“ + + + Time Remaining + ๆฎ‹ใ‚Šๆ™‚้–“ Remove Maps - ใƒžใƒƒใƒ—ใ‚’ๅ‰Š้™ค + ๅœฐๅ›ณใ‚’ๅ‰Š้™ค REMOVE - ๅ‰Š้™ค + ๅ‰Š้™ค - Remove downloaded maps to clear up storage space. - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใŸๅœฐๅ›ณใ‚’ๅ‰Š้™คใ—ใฆใ‚นใƒˆใƒฌใƒผใ‚ธใ‚นใƒšใƒผใ‚นใ‚’็ฉบใ‘ใ‚‹ใ€‚ + <b>Delete downloaded map data</b> to free up storage space. + ใ‚นใƒˆใƒฌใƒผใ‚ธใฎ็ฉบใๅฎน้‡ใ‚’ๅข—ใ‚„ใ™ใŸใ‚ใซใ€<b>ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใŸๅœฐๅ›ณใƒ‡ใƒผใ‚ฟใ‚’ๅ‰Š้™ค</b>ใ—ใพใ™ใ€‚ - Are you sure you want to delete all of your downloaded maps? - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใŸใ™ในใฆใฎๅœฐๅ›ณใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + Delete all downloaded maps? + ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใŸๅœฐๅ›ณใ‚’ใ™ในใฆๅ‰Š้™คใ—ใพใ™ใ‹๏ผŸ - Reset Map Downloader - ใƒžใƒƒใƒ—ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ€ใƒผใ‚’ใƒชใ‚ปใƒƒใƒˆ + Reset Downloader + ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ€ใƒผใ‚’ใƒชใ‚ปใƒƒใƒˆ RESET - ใƒชใ‚ปใƒƒใƒˆ + ใƒชใ‚ปใƒƒใƒˆ - Reset the map downloader. Use if you're running into issues with downloading maps. - ใƒžใƒƒใƒ—ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ€ใƒผใ‚’ใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ€‚ใƒžใƒƒใƒ—ใฎใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใซๅ•้กŒใŒใ‚ใ‚‹ๅ ดๅˆใซไฝฟ็”จใ—ใฆใใ ใ•ใ„ใ€‚ + <b>Reset the map downloader.</b> Use this if downloads are stuck or failing. + <b>ๅœฐๅ›ณใƒ€ใ‚ฆใƒณใƒญใƒผใƒ€ใƒผใ‚’ใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ€‚</b> ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใŒๅœๆญขใ—ใŸใ‚Šๅคฑๆ•—ใ—ใŸๅ ดๅˆใซไฝฟ็”จใ—ใฆใใ ใ•ใ„ใ€‚ - Are you sure you want to reset the map downloader? This will force a reboot once completed. - ใƒžใƒƒใƒ—ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ€ใƒผใ‚’ใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸๅฎŒไบ†ใ™ใ‚‹ใจๅ†่ตทๅ‹•ใŒๅผทๅˆถใ•ใ‚Œใพใ™ใ€‚ + Reset the map downloader? Your device will reboot afterward. + ๅœฐๅ›ณใƒ€ใ‚ฆใƒณใƒญใƒผใƒ€ใƒผใ‚’ใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ‹๏ผŸใใฎๅพŒใ€ใƒ‡ใƒใ‚คใ‚นใŒๅ†่ตทๅ‹•ใ—ใพใ™ใ€‚ Reset - ใƒชใ‚ปใƒƒใƒˆ + ใƒชใ‚ปใƒƒใƒˆ Resetting... - ใƒชใ‚ปใƒƒใƒˆไธญ... + ใƒชใ‚ปใƒƒใƒˆไธญโ€ฆ Reset! - ใƒชใ‚ปใƒƒใƒˆ๏ผ + ใƒชใ‚ปใƒƒใƒˆ๏ผ Rebooting... - ๅ†่ตทๅ‹•ไธญ... + ๅ†่ตทๅ‹•ไธญ..." + + + Storage Used + ไฝฟ็”จๆธˆใฟใ‚นใƒˆใƒฌใƒผใ‚ธ Africa - ใ‚ขใƒ•ใƒชใ‚ซ + ใ‚ขใƒ•ใƒชใ‚ซ Antarctica - ๅ—ๆฅตๅคง้™ธ + ๅ—ๆฅตๅคง้™ธ Asia - ใ‚ขใ‚ธใ‚ข + ใ‚ขใ‚ธใ‚ข Europe - ใƒจใƒผใƒญใƒƒใƒ‘ + ใƒจใƒผใƒญใƒƒใƒ‘ North America - ๅŒ—ใ‚ขใƒกใƒชใ‚ซ + ๅŒ—็ฑณ Oceania - ใ‚ชใ‚ปใ‚ขใƒ‹ใ‚ข + ใ‚ชใ‚ปใ‚ขใƒ‹ใ‚ข South America - ๅ—ใ‚ขใƒกใƒชใ‚ซ + ๅ—ใ‚ขใƒกใƒชใ‚ซ United States - Midwest - ใ‚ขใƒกใƒชใ‚ซๅˆ่ก†ๅ›ฝ - ไธญ่ฅฟ้ƒจ + ใ‚ขใƒกใƒชใ‚ซๅˆ่ก†ๅ›ฝ - ไธญ่ฅฟ้ƒจ United States - Northeast - ใ‚ขใƒกใƒชใ‚ซๅˆ่ก†ๅ›ฝ - ๅŒ—ๆฑ้ƒจ + ใ‚ขใƒกใƒชใ‚ซๅˆ่ก†ๅ›ฝ - ๅŒ—ๆฑ้ƒจ United States - South - ใ‚ขใƒกใƒชใ‚ซๅˆ่ก†ๅ›ฝ - ๅ—้ƒจ + ใ‚ขใƒกใƒชใ‚ซๅˆ่ก†ๅ›ฝ - ๅ—้ƒจ United States - West - ใ‚ขใƒกใƒชใ‚ซๅˆ่ก†ๅ›ฝ - ่ฅฟ้ƒจ + ใ‚ขใƒกใƒชใ‚ซๅˆ่ก†ๅ›ฝ - ่ฅฟ้ƒจ United States - Territories - ใ‚ขใƒกใƒชใ‚ซๅˆ่ก†ๅ›ฝ - ้ ˜ๅœŸ - - - CANCELLED - ใ‚ญใƒฃใƒณใ‚ปใƒซใ•ใ‚Œใพใ—ใŸ + ็ฑณๅ›ฝ - ้ ˜ๅœŸ Offline... - ใ‚ชใƒ•ใƒฉใ‚คใƒณ... + ใ‚ชใƒ•ใƒฉใ‚คใƒณโ€ฆ + + + CANCELLED + ใ‚ญใƒฃใƒณใ‚ปใƒซๆธˆใฟ FrogPilotModelPanel Automatically Download New Models - ๆ–ฐใ—ใ„ใƒขใƒ‡ใƒซใ‚’่‡ชๅ‹•็š„ใซใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ + ๆ–ฐใ—ใ„ใƒขใƒ‡ใƒซใ‚’่‡ชๅ‹•็š„ใซใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ - Automatically download new driving models as they become available. - ๆ–ฐใ—ใ„้‹่ปขใƒขใƒ‡ใƒซใŒๅˆฉ็”จๅฏ่ƒฝใซใชใ‚‹ใจ่‡ชๅ‹•็š„ใซใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใพใ™ใ€‚ + <b>Automatically download new driving models</b> as they become available. + <b>ๆ–ฐใ—ใ„้‹่ปขใƒขใƒ‡ใƒซใ‚’</b>ๅˆฉ็”จๅฏ่ƒฝใซใชใ‚Šๆฌก็ฌฌ่‡ชๅ‹•็š„ใซใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใพใ™ Delete Driving Models - ้‹่ปขใƒขใƒ‡ใƒซใ‚’ๅ‰Š้™ค + ้‹่ปขใƒขใƒ‡ใƒซใ‚’ๅ‰Š้™ค - Delete driving models from the device. - ใƒ‡ใƒใ‚คใ‚นใ‹ใ‚‰้‹่ปขใƒขใƒ‡ใƒซใ‚’ๅ‰Š้™คใ—ใพใ™ใ€‚ + <b>Delete downloaded driving models</b> to free up storage space. + <b>ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ๆธˆใฟใฎ้‹่ปขใƒขใƒ‡ใƒซใ‚’ๅ‰Š้™ค</b>ใ—ใฆใ€ใ‚นใƒˆใƒฌใƒผใ‚ธใฎ็ฉบใๅฎน้‡ใ‚’็ขบไฟใ—ใพใ™ใ€‚ Download Driving Models - ้‹่ปขใƒขใƒ‡ใƒซใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ + ้‹่ปขใƒขใƒ‡ใƒซใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ - Download driving models to the device. - ใƒ‡ใƒใ‚คใ‚นใซ้‹่ปขใƒขใƒ‡ใƒซใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใพใ™ใ€‚ + <b>Manually download driving models</b> to the device. + <b>้‹่ปขใƒขใƒ‡ใƒซใ‚’ๆ‰‹ๅ‹•ใงใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰</b>ใ—ใฆใƒ‡ใƒใ‚คใ‚นใซไฟๅญ˜ใ—ใพใ™ใ€‚ Model Randomizer - ใƒขใƒ‡ใƒซใƒฉใƒณใƒ€ใƒžใ‚คใ‚ถใƒผ + ใƒขใƒ‡ใƒซใƒฉใƒณใƒ€ใƒžใ‚คใ‚ถใƒผ - Driving models are chosen at random each drive and feedback prompts are used to find the model that best suits your needs. - ้‹่ปขใƒขใƒ‡ใƒซใฏๅ„ใƒ‰ใƒฉใ‚คใƒ–ใ”ใจใซใƒฉใƒณใƒ€ใƒ ใซ้ธใฐใ‚Œใ€ใƒ•ใ‚ฃใƒผใƒ‰ใƒใƒƒใ‚ฏใƒ—ใƒญใƒณใƒ—ใƒˆใ‚’ไฝฟ็”จใ—ใฆใ‚ใชใŸใฎใƒ‹ใƒผใ‚บใซๆœ€ใ‚‚้ฉใ—ใŸใƒขใƒ‡ใƒซใ‚’่ฆ‹ใคใ‘ใพใ™ใ€‚ + <b>Select a random driving model each drive</b> and use feedback prompts at the end of the drive to help find the model that best suits you! + <b>่ตฐ่กŒใ”ใจใซใƒฉใƒณใƒ€ใƒ ใช้‹่ปขใƒขใƒ‡ใƒซใ‚’้ธๆŠž</b>ใ—ใ€่ตฐ่กŒ็ต‚ไบ†ๆ™‚ใฎใƒ•ใ‚ฃใƒผใƒ‰ใƒใƒƒใ‚ฏใƒ—ใƒญใƒณใƒ—ใƒˆใงใ€ใ‚ใชใŸใซๆœ€ใ‚‚ๅˆใฃใŸใƒขใƒ‡ใƒซใ‚’่ฆ‹ใคใ‘ใพใ—ใ‚‡ใ†๏ผ Manage Model Blacklist - ใƒขใƒ‡ใƒซใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใ‚’็ฎก็† + ใƒขใƒ‡ใƒซใฎใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใ‚’็ฎก็† - Add or remove models from the <b>Model Randomizer</b>'s blacklist list. - <b>ใƒขใƒ‡ใƒซใƒฉใƒณใƒ€ใƒžใ‚คใ‚ถใƒผ</b>ใฎใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใ‹ใ‚‰ใƒขใƒ‡ใƒซใ‚’่ฟฝๅŠ ใพใŸใฏๅ‰Š้™คใ—ใพใ™ใ€‚ + <b>Add or remove driving models from the "Model Randomizer" blacklist.</b> + <b>ใ€Œใƒขใƒ‡ใƒซใƒฉใƒณใƒ€ใƒžใ‚คใ‚ถใƒผใ€ใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใซ้‹่ปขใƒขใƒ‡ใƒซใ‚’่ฟฝๅŠ ใพใŸใฏๅ‰Š้™คใ—ใพใ™ใ€‚</b> Manage Model Ratings - ใƒขใƒ‡ใƒซ่ฉ•ไพกใ‚’็ฎก็†ใ™ใ‚‹ + ใƒขใƒ‡ใƒซ่ฉ•ไพกใ‚’็ฎก็† - Reset or view the saved ratings for the driving models. - ้‹่ปขใƒขใƒ‡ใƒซใฎไฟๅญ˜ใ•ใ‚ŒใŸ่ฉ•ไพกใ‚’ใƒชใ‚ปใƒƒใƒˆใพใŸใฏ่กจ็คบใ—ใพใ™ใ€‚ + <b>View or reset saved model ratings</b> used by the "Model Randomizer". + <b>ใ€ŒModel Randomizerใ€ใงไฝฟ็”จใ•ใ‚Œใ‚‹ไฟๅญ˜ๆธˆใฟใƒขใƒ‡ใƒซ่ฉ•ไพกใ‚’่กจ็คบใพใŸใฏใƒชใ‚ปใƒƒใƒˆ</b> Select Driving Model - ้‹่ปขใƒขใƒ‡ใƒซใ‚’้ธๆŠž + ้‹่ปขใƒขใƒ‡ใƒซใ‚’้ธๆŠž - Select the active driving model. - ใ‚ขใ‚ฏใƒ†ใ‚ฃใƒ–ใƒ‰ใƒฉใ‚คใƒ“ใƒณใ‚ฐใƒขใƒ‡ใƒซใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ใ€‚ + <b>Choose which driving model openpilot uses.</b> + <b>openpilot ใŒไฝฟ็”จใ™ใ‚‹่ตฐ่กŒใƒขใƒ‡ใƒซใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ใ€‚</b> + + + Update Model Manager + ใƒขใƒ‡ใƒซใƒžใƒใƒผใ‚ธใƒฃใƒผใ‚’ๆ›ดๆ–ฐ + + + <b>Update the "Model Manager"</b> to support the latest models. + ๆœ€ๆ–ฐใฎใƒขใƒ‡ใƒซใซๅฏพๅฟœใ™ใ‚‹ใŸใ‚ใซ<b>ใ€ŒModel Managerใ€ใ‚’ๆ›ดๆ–ฐ</b>ใ—ใฆใใ ใ•ใ„ใ€‚ DELETE - ๅ‰Š้™ค + ๅ‰Š้™ค DELETE ALL - ใ™ในใฆๅ‰Š้™ค + ใ™ในใฆๅ‰Š้™ค Select a driving model to delete - ๅ‰Š้™คใ™ใ‚‹้‹่ปขใƒขใƒ‡ใƒซใ‚’้ธๆŠž + ๅ‰Š้™คใ™ใ‚‹่ตฐ่กŒใƒขใƒ‡ใƒซใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ Are you sure you want to delete the "%1" model? - ใ€Œ%1ใ€ใƒขใƒ‡ใƒซใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + ใ€Œ%1ใ€ใƒขใƒ‡ใƒซใ‚’ๆœฌๅฝ“ใซๅ‰Š้™คใ—ใพใ™ใ‹? Delete - ๅ‰Š้™ค + ๅ‰Š้™ค Are you sure you want to delete all of your downloaded driving models? - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใŸใ™ในใฆใฎ้‹่ปขใƒขใƒ‡ใƒซใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ๆธˆใฟใฎ้‹่ปขใƒขใƒ‡ใƒซใ‚’ใ™ในใฆๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ DOWNLOAD - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ + ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ DOWNLOAD ALL - ใ™ในใฆใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ + ใ™ในใฆใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ - Select a driving model to download - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ™ใ‚‹้‹่ปขใƒขใƒ‡ใƒซใ‚’้ธๆŠž + Tinygrad is out of date and must be updated before you can download new models. Update now? + Tinygradใฏๅคใใ€ๆ–ฐใ—ใ„ใƒขใƒ‡ใƒซใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ™ใ‚‹ๅ‰ใซๆ›ดๆ–ฐใŒๅฟ…่ฆใงใ™ใ€‚ไปŠใ™ใๆ›ดๆ–ฐใ—ใพใ™ใ‹๏ผŸ + + + Updating Tinygrad will delete all existing Tinygrad-based models which will need to be re-downloaded. Proceed? + Tinygrad ใ‚’ๆ›ดๆ–ฐใ™ใ‚‹ใจใ€ๆ—ขๅญ˜ใฎ Tinygrad ใƒ™ใƒผใ‚นใฎใƒขใƒ‡ใƒซใฏใ™ในใฆๅ‰Š้™คใ•ใ‚Œใ€ๅ†ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใŒๅฟ…่ฆใซใชใ‚Šใพใ™ใ€‚็ถš่กŒใ—ใพใ™ใ‹๏ผŸ CANCEL - ใ‚ญใƒฃใƒณใ‚ปใƒซ + ใ‚ญใƒฃใƒณใ‚ปใƒซ + + + Updating... + ๆ›ดๆ–ฐไธญโ€ฆ + + + Select a driving model to download + ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ™ใ‚‹้‹่ปขใƒขใƒ‡ใƒซใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ ADD - ่ฟฝๅŠ  + ่ฟฝๅŠ  REMOVE - ๅ‰Š้™ค + ๅ‰Š้™ค REMOVE ALL - ใ™ในใฆๅ‰Š้™ค + ใ™ในใฆๅ‰Š้™ค - There are no more models to blacklist! The only available model is "%1"! - ใ“ใ‚ŒไปฅไธŠใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใซ่ฟฝๅŠ ใ™ใ‚‹ใƒขใƒ‡ใƒซใฏใ‚ใ‚Šใพใ›ใ‚“๏ผๅˆฉ็”จๅฏ่ƒฝใชๅ”ฏไธ€ใฎใƒขใƒ‡ใƒซใฏใ€Œ%1ใ€ใงใ™๏ผ + There are no more driving models to blacklist. The only available model is "%1"! + ใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใซ่ฟฝๅŠ ใงใใ‚‹้‹่ปขใƒขใƒ‡ใƒซใฏใ“ใ‚ŒไปฅไธŠใ‚ใ‚Šใพใ›ใ‚“ใ€‚ๅˆฉ็”จๅฏ่ƒฝใชใƒขใƒ‡ใƒซใฏใ€Œ%1ใ€ใ ใ‘ใงใ™ใ€‚ - Select a model to add to the blacklist - ใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใซ่ฟฝๅŠ ใ™ใ‚‹ใƒขใƒ‡ใƒซใ‚’้ธๆŠž + Select a driving model to add to the blacklist + ใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใซ่ฟฝๅŠ ใ™ใ‚‹้‹่ปขใƒขใƒ‡ใƒซใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ Are you sure you want to add the "%1" model to the blacklist? - "%1"ใƒขใƒ‡ใƒซใ‚’ใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใซ่ฟฝๅŠ ใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + ใ€Œ%1ใ€ใƒขใƒ‡ใƒซใ‚’ใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใซ่ฟฝๅŠ ใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹? Add - ่ฟฝๅŠ  + ่ฟฝๅŠ  - Select a model to remove from the blacklist - ใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใ‹ใ‚‰ๅ‰Š้™คใ™ใ‚‹ใƒขใƒ‡ใƒซใ‚’้ธๆŠž + Select a driving model to remove from the blacklist + ใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใ‹ใ‚‰ๅ‰Š้™คใ™ใ‚‹้‹่ปขใƒขใƒ‡ใƒซใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ Are you sure you want to remove the "%1" model from the blacklist? - "%1" ใƒขใƒ‡ใƒซใ‚’ใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใ‹ใ‚‰ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + ใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใ‹ใ‚‰ใ€Œ%1ใ€ใƒขใƒ‡ใƒซใ‚’ๆœฌๅฝ“ใซๅ‰Š้™คใ—ใพใ™ใ‹๏ผŸ Remove - ๅ‰Š้™ค + ๅ‰Š้™ค - Are you sure you want to remove all of your blacklisted models? - ใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใซ็™ป้Œฒใ•ใ‚ŒใŸใ™ในใฆใฎใƒขใƒ‡ใƒซใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + Are you sure you want to remove all of your blacklisted driving models? + ๆœฌๅฝ“ใซใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใซใ‚ใ‚‹้‹่ปขใƒขใƒ‡ใƒซใ‚’ใ™ในใฆๅ‰Š้™คใ—ใพใ™ใ‹๏ผŸ RESET - ใƒชใ‚ปใƒƒใƒˆ + ใƒชใ‚ปใƒƒใƒˆ VIEW - ใƒ“ใƒฅใƒผ + ่กจ็คบ - Are you sure you want to reset all of your model drives and scores? - ใ™ในใฆใฎใƒขใƒ‡ใƒซใƒ‰ใƒฉใ‚คใƒ–ใจใ‚นใ‚ณใ‚ขใ‚’ใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + Reset all model drives and ratings? This clears your drive history and collected feedback! + ใ™ในใฆใฎใƒขใƒ‡ใƒซใฎ่ตฐ่กŒใƒ‡ใƒผใ‚ฟใจ่ฉ•ไพกใ‚’ใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ‹๏ผŸใ“ใ‚Œใซใ‚ˆใ‚Š่ตฐ่กŒๅฑฅๆญดใจๅŽ้›†ใ•ใ‚ŒใŸใƒ•ใ‚ฃใƒผใƒ‰ใƒใƒƒใ‚ฏใŒๆถˆๅŽปใ•ใ‚Œใพใ™ใ€‚ SELECT - SELECT + ้ธๆŠž - Select a model - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC - ใƒขใƒ‡ใƒซใ‚’้ธๆŠž - ๐Ÿ—บ๏ธ = ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณ | ๐Ÿ“ก = ใƒฌใƒผใƒ€ใƒผ | ๐Ÿ‘€ = VOACC + UPDATE + ๆ›ดๆ–ฐ - The "Model Randomizer" only works with downloaded models. Do you want to download all the driving models? - ใ€Œใƒขใƒ‡ใƒซใƒฉใƒณใƒ€ใƒžใ‚คใ‚ถใƒผใ€ใฏใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ•ใ‚ŒใŸใƒขใƒ‡ใƒซใงใฎใฟๅ‹•ไฝœใ—ใพใ™ใ€‚ใ™ในใฆใฎใƒ‰ใƒฉใ‚คใƒ“ใƒณใ‚ฐใƒขใƒ‡ใƒซใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใพใ™ใ‹๏ผŸ + Cancelling... + ใ‚ญใƒฃใƒณใ‚ปใƒซใ—ใฆใ„ใพใ™โ€ฆ + + + Updating Tinygrad will delete existing Tinygrad-based driving models and need to be re-downloaded. Proceed? + Tinygrad ใ‚’ๆ›ดๆ–ฐใ™ใ‚‹ใจใ€ๆ—ขๅญ˜ใฎ Tinygrad ใƒ™ใƒผใ‚นใฎ้‹่ปขใƒขใƒ‡ใƒซใฏๅ‰Š้™คใ•ใ‚Œใ€ๅ†ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใŒๅฟ…่ฆใซใชใ‚Šใพใ™ใ€‚็ถš่กŒใ—ใพใ™ใ‹๏ผŸ + + + The "Model Randomizer" works only with downloaded models. Download all models now? + ใ€ŒModel Randomizerใ€ใฏใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ๆธˆใฟใฎใƒขใƒ‡ใƒซใงใฎใฟๅ‹•ไฝœใ—ใพใ™ใ€‚ไปŠใ™ในใฆใฎใƒขใƒ‡ใƒซใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใพใ™ใ‹๏ผŸ Offline... - ใ‚ชใƒ•ใƒฉใ‚คใƒณ... + ใ‚ชใƒ•ใƒฉใ‚คใƒณไธญโ€ฆ + + + Update available! + ใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใŒใ‚ใ‚Šใพใ™๏ผ + + + Up to date! + ๆœ€ๆ–ฐใงใ™๏ผ + + + Select a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + ใƒขใƒ‡ใƒซใ‚’้ธๆŠž โ€” ๐Ÿ—บ๏ธ = ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณ | ๐Ÿ“ก = ใƒฌใƒผใƒ€ใƒผ | ๐Ÿ‘€ = VOACC + + + + FrogPilotModelReview + + How would you rate that drive? + ใใฎ้‹่ปขใ‚’ใฉใ†่ฉ•ไพกใ—ใพใ™ใ‹๏ผŸ + + + Model successfully blacklisted! + ใƒขใƒ‡ใƒซใ‚’ๆญฃๅธธใซใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใซ่ฟฝๅŠ ใ—ใพใ—ใŸใ€‚ + + + Drive Rating Selection + ใƒ‰ใƒฉใ‚คใƒ–่ฉ•ไพกใฎ้ธๆŠž + + + Blacklist this model to remove it from rotation + ใ“ใฎใƒขใƒ‡ใƒซใ‚’ใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใซ็™ป้Œฒใ—ใฆใƒญใƒผใƒ†ใƒผใ‚ทใƒงใƒณใ‹ใ‚‰ๅค–ใ™ + + + Blacklist Model + ใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆๅฏพ่ฑกใƒขใƒ‡ใƒซ + + + Model used during that drive: + ใใฎ่ตฐ่กŒใงไฝฟ็”จใ•ใ‚ŒใŸใƒขใƒ‡ใƒซ: + + + Model Rank + ใƒขใƒ‡ใƒซใƒฉใƒณใ‚ฏ + + + Model Rating + ใƒขใƒ‡ใƒซ่ฉ•ไพก + + + Model Drives + ใƒขใƒ‡ใƒซ้ง†ๅ‹• + + + Total Drives + ๅˆ่จˆใƒ‰ใƒฉใ‚คใƒ–ๆ•ฐ + + + #%1 + #%1 + + + %1% + %1% + + + %1 %2 + %1 %2 + + + Drive + ่ตฐ่กŒ + + + Drives + ่ตฐ่กŒ + + + %1 Total %2 + %1 ๅˆ่จˆ %2 FrogPilotNavigationPanel - - Manage your %1. - %1 ใ‚’็ฎก็†ใ—ใพใ™ใ€‚ - - - ADD - ่ฟฝๅŠ  - - - Enter your %1 - %1 ใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„ - - - Inputted key is invalid or too short! - ๅ…ฅๅŠ›ใ•ใ‚ŒใŸใ‚ญใƒผใŒ็„กๅŠนใ‹็Ÿญใ™ใŽใพใ™๏ผ - - - Are you sure you want to remove your %1? - %1ใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - REMOVE - ๅ‰Š้™ค - Manage Your Settings At - ่จญๅฎšใ‚’็ฎก็†ใ™ใ‚‹ๅ ดๆ‰€ - - - MapBox - MapBox - - - Amap - Amap - - - Google - Google - - - Destination Search Provider - ็›ฎ็š„ๅœฐๆคœ็ดขใƒ—ใƒญใƒใ‚คใƒ€ใƒผ - - - The search provider used for destination queries in "Navigate on Openpilot". Options include "MapBox" (recommended), "Amap", and "Google Maps". - ใ€ŒNavigate on Openpilotใ€ใง็›ฎ็š„ๅœฐใฎใ‚ฏใ‚จใƒชใซไฝฟ็”จใ•ใ‚Œใ‚‹ๆคœ็ดขใƒ—ใƒญใƒใ‚คใƒ€ใƒผใ€‚ใ‚ชใƒ—ใ‚ทใƒงใƒณใซใฏใ€ŒMapBoxใ€๏ผˆๆŽจๅฅจ๏ผ‰ใ€ใ€ŒAmapใ€ใ€ใŠใ‚ˆใณใ€ŒGoogle Mapsใ€ใŒๅซใพใ‚Œใพใ™ใ€‚ - - - Amap Key #1 - Amap Key #1 - - - Manage your Amap key. - Amapใ‚ญใƒผใ‚’็ฎก็†ใ—ใพใ™ใ€‚ - - - Enter your Amap key - Amapใ‚ญใƒผใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„ - - - Are you sure you want to remove your Amap key? - Amapใ‚ญใƒผใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Amap Key #2 - Amapใ‚ญใƒผ#2 - - - Google Maps Key - Googleใƒžใƒƒใƒ—ใ‚ญใƒผ - - - Manage your Google Maps key. - Google ใƒžใƒƒใƒ—ใฎใ‚ญใƒผใ‚’็ฎก็†ใ—ใพใ™ใ€‚ - - - Enter your Google Maps key - Google Mapsใ‚ญใƒผใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„ - - - Are you sure you want to remove your Google Maps key? - Google Mapsใ‚ญใƒผใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Public Mapbox Key - ใƒ‘ใƒ–ใƒชใƒƒใ‚ฏMapboxใ‚ญใƒผ - - - Secret Mapbox Key - ใ‚ทใƒผใ‚ฏใƒฌใƒƒใƒˆMapboxใ‚ญใƒผ - - - MapBox Setup Instructions - MapBoxใ‚ปใƒƒใƒˆใ‚ขใƒƒใƒ—ๆ‰‹้ † - - - VIEW - ใƒ“ใƒฅใƒผ - - - View the instructions to set up "MapBox" for "Primeless Navigation". - ใ€ŒPrimeless Navigationใ€ใฎใŸใ‚ใฎใ€ŒMapBoxใ€ใฎใ‚ปใƒƒใƒˆใ‚ขใƒƒใƒ—ๆ‰‹้ †ใ‚’่กจ็คบใ—ใพใ™ใ€‚ - - - CANCEL - ใ‚ญใƒฃใƒณใ‚ปใƒซ - - - Speed Limit Filler - ้€Ÿๅบฆๅˆถ้™ใƒ•ใ‚ฃใƒฉใƒผ - - - Are you sure you want to cancel the speed limit update process? - ้€Ÿๅบฆๅˆถ้™ๆ›ดๆ–ฐใƒ—ใƒญใ‚ปใ‚นใ‚’ใ‚ญใƒฃใƒณใ‚ปใƒซใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - You have reached the request limit. - -It will reset in %1 hours and %2 minutes. - ใƒชใ‚ฏใ‚จใ‚นใƒˆใฎไธŠ้™ใซ้”ใ—ใพใ—ใŸใ€‚ - -%1ๆ™‚้–“%2ๅˆ†ๅพŒใซใƒชใ‚ปใƒƒใƒˆใ•ใ‚Œใพใ™ใ€‚ - - - This process will take awhile, so it's advised to start when you're done driving with a stable Wi-Fi connection. Do you wish to proceed? - ใ“ใฎใƒ—ใƒญใ‚ปใ‚นใซใฏๆ™‚้–“ใŒใ‹ใ‹ใ‚‹ใŸใ‚ใ€้‹่ปขใ‚’็ต‚ใˆใฆๅฎ‰ๅฎšใ—ใŸWi-FiๆŽฅ็ถšใŒใ‚ใ‚‹ใจใใซ้–‹ๅง‹ใ™ใ‚‹ใ“ใจใ‚’ใŠๅ‹งใ‚ใ—ใพใ™ใ€‚็ถš่กŒใ—ใพใ™ใ‹๏ผŸ - - - Manually Update Speed Limits - ้€Ÿๅบฆๅˆถ้™ใ‚’ๆ‰‹ๅ‹•ใงๆ›ดๆ–ฐใ™ใ‚‹ - - - Automatically collect missing or incorrect speed limits from your dashboard (if supported), <b>Mapbox</b>, and <b>Navigate-on-openpilot</b> while driving.<br><br>When the car is turned off and connected to Wi-Fi, your speed limit data is automatically processed into a compiled file formatted for the tool located at <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>You can grab the processed file from <b>The Pond</b> via the <b>Download Speed Limits</b> menu.<br><br>Want a more thorough walkthrough? Check out the <b>#speed-limit-filler</b> channel in the <b>FrogPilot Discord</b>! - ใƒ€ใƒƒใ‚ทใƒฅใƒœใƒผใƒ‰๏ผˆๅฏพๅฟœใ—ใฆใ„ใ‚‹ๅ ดๅˆ๏ผ‰ใ€<b>Mapbox</b>ใ€ใŠใ‚ˆใณ<b>Navigate-on-openpilot</b>ใ‹ใ‚‰ไธ่ถณใพใŸใฏ่ชคใฃใŸ้€Ÿๅบฆๅˆถ้™ใ‚’่‡ชๅ‹•็š„ใซๅŽ้›†ใ—ใพใ™ใ€‚<br><br>่ปŠใŒใ‚ชใƒ•ใซใชใ‚Šใ€Wi-FiใซๆŽฅ็ถšใ•ใ‚Œใ‚‹ใจใ€้€Ÿๅบฆๅˆถ้™ใƒ‡ใƒผใ‚ฟใฏ่‡ชๅ‹•็š„ใซๅ‡ฆ็†ใ•ใ‚Œใ€<b>SpeedLimitFiller.frogpilot.download</b>ใซใ‚ใ‚‹ใƒ„ใƒผใƒซ็”จใซใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆใ•ใ‚ŒใŸใ‚ณใƒณใƒ‘ใ‚คใƒซใƒ•ใ‚กใ‚คใƒซใซๅค‰ๆ›ใ•ใ‚Œใพใ™ใ€‚<br><br>ๅ‡ฆ็†ใ•ใ‚ŒใŸใƒ•ใ‚กใ‚คใƒซใฏ<b>The Pond</b>ใฎ<b>Download Speed Limits</b>ใƒกใƒ‹ใƒฅใƒผใ‹ใ‚‰ๅ–ๅพ—ใงใใพใ™ใ€‚<br><br>ใ‚ˆใ‚Š่ฉณใ—ใ„่ชฌๆ˜ŽใŒๅฟ…่ฆใงใ™ใ‹๏ผŸ<b>FrogPilot Discord</b>ใฎ<b>#speed-limit-filler</b>ใƒใƒฃใƒณใƒใƒซใ‚’ใƒใ‚งใƒƒใ‚ฏใ—ใฆใใ ใ•ใ„๏ผ - - - Cancelled... - ใ‚ญใƒฃใƒณใ‚ปใƒซใ•ใ‚Œใพใ—ใŸ... - - - Completed! - ๅฎŒไบ†ใ—ใพใ—ใŸ๏ผ + ่จญๅฎšใฎ็ฎก็†ๅ…ˆ Offline... - ใ‚ชใƒ•ใƒฉใ‚คใƒณ... + ใ‚ชใƒ•ใƒฉใ‚คใƒณโ€ฆ + + + Mapbox + Mapbox + + + Amap + Amap + + + Destination Search Provider + ็›ฎ็š„ๅœฐๆคœ็ดขใƒ—ใƒญใƒใ‚คใƒ€ใƒผ + + + <b>The search provider used for destination queries</b> in "Navigate on Openpilot". Options include Mapbox (recommended) and Amap. + <b>ใ€ŒNavigate on Openpilotใ€ใง็›ฎ็š„ๅœฐๆคœ็ดขใซไฝฟ็”จใ•ใ‚Œใ‚‹ๆคœ็ดขใƒ—ใƒญใƒใ‚คใƒ€ใƒผ</b>ใ€‚ใ‚ชใƒ—ใ‚ทใƒงใƒณใซใฏ Mapbox๏ผˆๆŽจๅฅจ๏ผ‰ใจ Amap ใŒใ‚ใ‚Šใพใ™ใ€‚ + + + Amap Key #1 + Amapใ‚ญใƒผ #1 + + + Amap Key #2 + Amap ใ‚ญใƒผ #2 + + + Public Mapbox Key + ๅ…ฌ้–‹ Mapbox ใ‚ญใƒผ + + + Secret Mapbox Key + Secret Mapbox Key + + + Mapbox Setup Instructions + Mapbox ่จญๅฎšๆ‰‹้ † + + + VIEW + ่กจ็คบ + + + <b>Instructions on how to set up Mapbox</b> for "Primeless Navigation". + <b>Mapbox ใฎ่จญๅฎšๆ–นๆณ•</b>๏ผˆ"Primeless Navigation" ็”จ๏ผ‰ + + + CANCEL + ใ‚ญใƒฃใƒณใ‚ปใƒซ + + + Manually Update Speed Limits + ้€Ÿๅบฆๅˆถ้™ใ‚’ๆ‰‹ๅ‹•ใงๆ›ดๆ–ฐ + + + Speed Limit Filler + ้€Ÿๅบฆๅˆถ้™ใƒ•ใ‚ฃใƒฉใƒผ + + + <b>Automatically collect missing or incorrect speed limits while you drive</b> using speeds limits sourced from your dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When you're parked and connected to Wi-Fi, FrogPilot will automatically processes this data into a file to be used with the tool located at "SpeedLimitFiller.frogpilot.download".<br><br>You can download this file from "The Pond" in the "Download Speed Limits" menu.<br><br>Need a step-by-step guide? Visit <b>#speed-limit-filler</b> in the FrogPilot Discord! + <b>้‹่ปขไธญใซไธ่ถณใพใŸใฏ่ชคใฃใŸๅˆถ้™้€Ÿๅบฆใ‚’่‡ชๅ‹•ๅŽ้›†ใ—ใพใ™</b>ใ€‚ใƒ€ใƒƒใ‚ทใƒฅใƒœใƒผใƒ‰๏ผˆๅฏพๅฟœใ—ใฆใ„ใ‚‹ๅ ดๅˆ๏ผ‰ใ€Mapboxใ€ใใ—ใฆใ€ŒNavigate on openpilotใ€ใ‹ใ‚‰ใฎๅˆถ้™้€Ÿๅบฆๆƒ…ๅ ฑใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚<br><br>้ง่ปŠใ—ใฆWiโ€‘FiใซๆŽฅ็ถšใ—ใฆใ„ใ‚‹ใจใใ€FrogPilot ใŒใ“ใฎใƒ‡ใƒผใ‚ฟใ‚’่‡ชๅ‹•็š„ใซๅ‡ฆ็†ใ—ใ€ใ€ŒSpeedLimitFiller.frogpilot.downloadใ€ใซใ‚ใ‚‹ใƒ„ใƒผใƒซใงไฝฟ็”จใ™ใ‚‹ใƒ•ใ‚กใ‚คใƒซใซใ—ใพใ™ใ€‚<br><br>ใ“ใฎใƒ•ใ‚กใ‚คใƒซใฏใ€ŒThe Pondใ€ใฎใ€ŒDownload Speed Limitsใ€ใƒกใƒ‹ใƒฅใƒผใ‹ใ‚‰ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใงใใพใ™ใ€‚<br><br>ๆ‰‹้ †ใŒๅฟ…่ฆใงใ™ใ‹๏ผŸFrogPilot ใฎ Discord ใฎ <b>#speed-limit-filler</b> ใ‚’ใ”่ฆงใใ ใ•ใ„ใ€‚ + + + Cancel the speed-limit update? + ้€Ÿๅบฆๅˆถ้™ใฎๆ›ดๆ–ฐใ‚’ใ‚ญใƒฃใƒณใ‚ปใƒซใ—ใพใ™ใ‹๏ผŸ + + + Cancelled... + ใ‚ญใƒฃใƒณใ‚ปใƒซใ—ใพใ—ใŸโ€ฆ + + + You've hit today's request limit. + +It will reset in %1 hours and %2 minutes. + ๆœฌๆ—ฅใฎใƒชใ‚ฏใ‚จใ‚นใƒˆไธŠ้™ใซ้”ใ—ใพใ—ใŸใ€‚%1ๆ™‚้–“%2ๅˆ†ๅพŒใซใƒชใ‚ปใƒƒใƒˆใ•ใ‚Œใพใ™ใ€‚ + + + This process takes a while. It's recommended to start when you're done driving and connected to stable Wi-Fi. Continue? + ใ“ใฎๅ‡ฆ็†ใซใฏๆ™‚้–“ใŒใ‹ใ‹ใ‚Šใพใ™ใ€‚้‹่ปขใ‚’็ต‚ใˆใ€ๅฎ‰ๅฎšใ—ใŸWiโ€‘FiใซๆŽฅ็ถšใ—ใฆใ‹ใ‚‰้–‹ๅง‹ใ™ใ‚‹ใ“ใจใ‚’ๆŽจๅฅจใ—ใพใ™ใ€‚็ถš่กŒใ—ใพใ™ใ‹? + + + <b>Manage your "%1".</b> + <b>ใ€Œ%1ใ€ใ‚’็ฎก็†ใ—ใพใ™ใ€‚</b> + + + ADD + ่ฟฝๅŠ  + + + Enter your %1 + %1 ใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„ + + + Inputted key is invalid or too short! + ๅ…ฅๅŠ›ใ—ใŸใ‚ญใƒผใŒ็„กๅŠนใ‹็Ÿญใ™ใŽใพใ™๏ผ + + + Remove your %1? + %1 ใ‚’ๅ–ใ‚Šๅค–ใ—ใพใ™ใ‹? + + + REMOVE + ๅ‰Š้™ค + + + Completed! + ๅฎŒไบ†ใ—ใพใ—ใŸ๏ผ FrogPilotSettingsWindow MANAGE - ็ฎก็†ใ™ใ‚‹ + ็ฎก็† DRIVING MODEL - ้‹่ปขใƒขใƒ‡ใƒซ + ้‹่ปขใƒขใƒ‡ใƒซ GAS / BRAKE - ใ‚ฌใ‚น / ใƒ–ใƒฌใƒผใ‚ญ + ใ‚ขใ‚ฏใ‚ปใƒซ / ใƒ–ใƒฌใƒผใ‚ญ STEERING - ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐ + ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐ MAP DATA - ๅœฐๅ›ณใƒ‡ใƒผใ‚ฟ + ๅœฐๅ›ณใƒ‡ใƒผใ‚ฟ NAVIGATION - ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณ + ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณ DATA - DATA + ใƒ‡ใƒผใ‚ฟ DEVICE CONTROLS - ใƒ‡ใƒใ‚คใ‚นใ‚ณใƒณใƒˆใƒญใƒผใƒซ + ใƒ‡ใƒใ‚คใ‚นใฎๅˆถๅพก UTILITIES - ใƒฆใƒผใƒ†ใ‚ฃใƒชใƒ†ใ‚ฃ + ใƒฆใƒผใƒ†ใ‚ฃใƒชใƒ†ใ‚ฃ APPEARANCE - ๅค–่ฆณ + ๅค–่ฆณ THEME - ใƒ†ใƒผใƒž + ใƒ†ใƒผใƒž VEHICLE SETTINGS - ่ปŠไธก่จญๅฎš + ่ปŠไธก่จญๅฎš WHEEL CONTROLS - ใƒ›ใ‚คใƒผใƒซใ‚ณใƒณใƒˆใƒญใƒผใƒซ + ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซๆ“ไฝœ Alerts and Sounds - ใ‚ขใƒฉใƒผใƒˆใจใ‚ตใ‚ฆใƒณใƒ‰ + ใ‚ขใƒฉใƒผใƒˆใจใ‚ตใ‚ฆใƒณใƒ‰ - FrogPilot settings for alert volumes and custom notifications to stay informed about important driving events. - FrogPilotใฎ่จญๅฎšใงใฏใ€ใ‚ขใƒฉใƒผใƒˆ้Ÿณ้‡ใ‚„ใ‚ซใ‚นใ‚ฟใƒ ้€š็Ÿฅใ‚’่ชฟๆ•ดใ—ใฆใ€้‡่ฆใช้‹่ปขใ‚คใƒ™ใƒณใƒˆใซใคใ„ใฆใฎๆƒ…ๅ ฑใ‚’ๅธธใซๆŠŠๆกใงใใพใ™ใ€‚ + <b>Adjust alert volumes and enable custom notifications.</b> + <b>ใ‚ขใƒฉใƒผใƒˆ้Ÿณ้‡ใ‚’่ชฟๆ•ดใ—ใ€ใ‚ซใ‚นใ‚ฟใƒ ้€š็Ÿฅใ‚’ๆœ‰ๅŠนใซใ—ใพใ™ใ€‚</b> Driving Controls - ้‹่ปขๆ“ไฝœ + ้‹่ปขๆ“ไฝœ - FrogPilot settings for acceleration, braking, and steering. - FrogPilotใฎๅŠ ้€Ÿใ€ใƒ–ใƒฌใƒผใ‚ญใ€ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใฎ่จญๅฎšใ€‚ + <b>Fine-tune custom FrogPilot acceleration, braking, and steering controls.</b> + <b>ใ‚ซใ‚นใ‚ฟใƒ  FrogPilot ใฎๅŠ ้€Ÿใ€ๅˆถๅ‹•ใ€ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐๅˆถๅพกใ‚’ๅพฎ่ชฟๆ•ดใ—ใพใ™ใ€‚</b> Navigation - ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณ + ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณ - Download map data for <b>Curve Speed Control</b>, <b>Speed Limit Controller</b>, and set up <b>Navigate on openpilot (NOO)</b>. - <b>ใ‚ซใƒผใƒ–้€Ÿๅบฆๅˆถๅพก</b>ใ€<b>้€Ÿๅบฆๅˆถ้™ใ‚ณใƒณใƒˆใƒญใƒผใƒฉใƒผ</b>ใฎๅœฐๅ›ณใƒ‡ใƒผใ‚ฟใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใ€<b>ใ‚ชใƒผใƒ—ใƒณใƒ‘ใ‚คใƒญใƒƒใƒˆใงใƒŠใƒ“ใ‚ฒใƒผใƒˆ (NOO)</b> ใ‚’่จญๅฎšใ—ใพใ™ใ€‚ + <b>Download map data for the "Speed Limit Controller" and configure "Navigate on openpilot" (NOO).</b> + <b>ใ€ŒSpeed Limit Controllerใ€ใฎๅœฐๅ›ณใƒ‡ใƒผใ‚ฟใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใ€ใ€ŒNavigate on openpilotใ€๏ผˆNOO๏ผ‰ใ‚’่จญๅฎšใ—ใฆใใ ใ•ใ„ใ€‚</b> - System Management - ใ‚ทใ‚นใƒ†ใƒ ็ฎก็† + System Settings + ใ‚ทใ‚นใƒ†ใƒ ่จญๅฎš - Data storage management, debugging tools, device settings, screen behavior settings, system backups, and utilities to maintain, optimize, and troubleshoot FrogPilot. - ใƒ‡ใƒผใ‚ฟใ‚นใƒˆใƒฌใƒผใ‚ธ็ฎก็†ใ€ใƒ‡ใƒใƒƒใ‚ฐใƒ„ใƒผใƒซใ€ใƒ‡ใƒใ‚คใ‚น่จญๅฎšใ€็”ป้ขๅ‹•ไฝœ่จญๅฎšใ€ใ‚ทใ‚นใƒ†ใƒ ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ€FrogPilotใ‚’็ถญๆŒใ€ๆœ€้ฉๅŒ–ใ€ใƒˆใƒฉใƒ–ใƒซใ‚ทใƒฅใƒผใƒ†ใ‚ฃใƒณใ‚ฐใ™ใ‚‹ใŸใ‚ใฎใƒฆใƒผใƒ†ใ‚ฃใƒชใƒ†ใ‚ฃใ€‚ + <b>Manage backups, device settings, screen options, storage, and tools to keep FrogPilot running smoothly.</b> + <b>ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ€ใƒ‡ใƒใ‚คใ‚น่จญๅฎšใ€็”ป้ขใ‚ชใƒ—ใ‚ทใƒงใƒณใ€ใ‚นใƒˆใƒฌใƒผใ‚ธใ€ใƒ„ใƒผใƒซใ‚’็ฎก็†ใ—ใฆใ€FrogPilot ใ‚’ๅ††ๆป‘ใซๅ‹•ไฝœใ•ใ›ใพใ™ใ€‚</b> Theme and Appearance - ใƒ†ใƒผใƒžใจๅค–่ฆณ + ใƒ†ใƒผใƒžใจๅค–่ฆณ - FrogPilot settings for the current theme, driving-screen, and the overall user interface. - FrogPilotใฎ็พๅœจใฎใƒ†ใƒผใƒžใ€้‹่ปข็”ป้ขใ€ใŠใ‚ˆใณๅ…จไฝ“็š„ใชใƒฆใƒผใ‚ถใƒผใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใฎ่จญๅฎšใ€‚ + <b>Customize the look of the driving screen and interface, including themes!</b> + <b>ใƒ†ใƒผใƒžใ‚’ๅซใ‚€้‹่ปข็”ป้ขใจใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใฎ่ฆ‹ใŸ็›ฎใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บ๏ผ</b> - Vehicle Controls - ่ปŠไธกใ‚ณใƒณใƒˆใƒญใƒผใƒซ + Vehicle Settings + ่ปŠไธก่จญๅฎš - Options unique to supported manufacturers and vehicle fingerprint management. - ใ‚ตใƒใƒผใƒˆใ•ใ‚Œใฆใ„ใ‚‹ใƒกใƒผใ‚ซใƒผใจ่ปŠไธกใƒ•ใ‚ฃใƒณใ‚ฌใƒผใƒ—ใƒชใƒณใƒˆ็ฎก็†ใซๅ›บๆœ‰ใฎใ‚ชใƒ—ใ‚ทใƒงใƒณใ€‚ + <b>Configure car-specific options and steering wheel button mappings.</b> + <b>่ปŠ็จฎๅ›บๆœ‰ใฎใ‚ชใƒ—ใ‚ทใƒงใƒณใจใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใƒœใ‚ฟใƒณใฎใƒžใƒƒใƒ”ใƒณใ‚ฐใ‚’่จญๅฎšใ—ใพใ™ใ€‚</b> Minimal - ๆœ€ๅฐ้™ + ๆœ€ๅฐ Standard - ๆจ™ๆบ– + ๆจ™ๆบ– Advanced - ไธŠ็ดš + ่ฉณ็ดฐ่จญๅฎš Developer - ้–‹็™บ่€… + ้–‹็™บ่€… Tuning Level - ใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐใƒฌใƒ™ใƒซ + ใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐใƒฌใƒ™ใƒซ - The visibility and complexity of tuning settings. Lower levels simplify the interface by hiding advanced options, while higher levels unlock detailed customization. + Choose your tuning level. Lower levels keep it simple; higher levels unlock more toggles for finer control. Minimal - Ideal for those who prefer simplicity or ease of use Standard - Recommended for most users for a balanced experience -Advanced - Unlocks fine-tuning controls for more experienced users -Developer - Unlocks highly customizable settings for seasoned enthusiasts - ่จญๅฎšใฎๅฏ่ฆ–ๆ€งใจ่ค‡้›‘ใ•ใ€‚ไฝŽใƒฌใƒ™ใƒซใงใฏ้ซ˜ๅบฆใชใ‚ชใƒ—ใ‚ทใƒงใƒณใ‚’้š ใ—ใฆใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใ‚’็ฐก็ด ๅŒ–ใ—ใ€้ซ˜ใƒฌใƒ™ใƒซใงใฏ่ฉณ็ดฐใชใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ‚’ๅฏ่ƒฝใซใ—ใพใ™ใ€‚ +Advanced - Fine-tuning for experienced users +Developer - Highly customizable settings for seasoned enthusiasts + ใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐใƒฌใƒ™ใƒซใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ใ€‚ไฝŽใƒฌใƒ™ใƒซใฏใ‚ทใƒณใƒ—ใƒซใ€้ซ˜ใƒฌใƒ™ใƒซใฏใ‚ˆใ‚Š็ดฐใ‹ใชๅˆถๅพกใฎใŸใ‚ใฎใƒˆใ‚ฐใƒซใ‚’่งฃๆ”พใ—ใพใ™ใ€‚ -ใƒŸใƒ‹ใƒžใƒซ - ใ‚ทใƒณใƒ—ใƒซใ•ใ‚„ไฝฟใ„ใ‚„ใ™ใ•ใ‚’ๅฅฝใ‚€ไบบใซๆœ€้ฉ -ใ‚นใ‚ฟใƒณใƒ€ใƒผใƒ‰ - ใƒใƒฉใƒณใ‚นใฎๅ–ใ‚ŒใŸไฝ“้จ“ใ‚’ๆฑ‚ใ‚ใ‚‹ใปใจใ‚“ใฉใฎใƒฆใƒผใ‚ถใƒผใซๆŽจๅฅจ -ใ‚ขใƒ‰ใƒใƒณใ‚นใƒˆ - ใ‚ˆใ‚Š็ตŒ้จ“่ฑŠๅฏŒใชใƒฆใƒผใ‚ถใƒผๅ‘ใ‘ใซๅพฎ่ชฟๆ•ดใ‚ณใƒณใƒˆใƒญใƒผใƒซใ‚’่งฃๆ”พ -ใƒ‡ใƒ™ใƒญใƒƒใƒ‘ใƒผ - ็†Ÿ็ทดใ—ใŸๆ„›ๅฅฝๅฎถๅ‘ใ‘ใซ้ซ˜ๅบฆใซใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บๅฏ่ƒฝใช่จญๅฎšใ‚’่งฃๆ”พ +Minimal - ใ‚ทใƒณใƒ—ใƒซใ•ใ‚„ไฝฟใ„ใ‚„ใ™ใ•ใ‚’้‡่ฆ–ใ™ใ‚‹ๆ–นๅ‘ใ‘ +Standard - ใปใจใ‚“ใฉใฎใƒฆใƒผใ‚ถใƒผใซๆŽจๅฅจใ•ใ‚Œใ‚‹ใƒใƒฉใƒณใ‚นใฎๅ–ใ‚ŒใŸไฝ“้จ“ +Advanced - ็†Ÿ็ทดใƒฆใƒผใ‚ถใƒผๅ‘ใ‘ใฎๅพฎ่ชฟๆ•ด +Developer - ใ“ใ ใ‚ใ‚Šใฎใ‚ใ‚‹ไธŠ็ดš่€…ๅ‘ใ‘ใฎ้ซ˜ๅบฆใซใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บๅฏ่ƒฝใช่จญๅฎš - WARNING: This unlocks some potentially dangerous settings that can DRASTICALLY alter your driving experience! - ่ญฆๅ‘Š: ใ“ใ‚Œใฏใ€้‹่ปขไฝ“้จ“ใ‚’ๅЇ็š„ใซๅค‰ใˆใ‚‹ๅฏ่ƒฝๆ€งใฎใ‚ใ‚‹ๅฑ้™บใช่จญๅฎšใ‚’่งฃ้™คใ—ใพใ™๏ผ + WARNING: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do! + ่ญฆๅ‘Š: ใ“ใ‚Œใ‚‰ใฎ่จญๅฎšใฏๅฑ้™บใงใ€openpilot ใฎ่ตฐ่กŒ็‰นๆ€งใ‚’ๅคงใใๅค‰ใˆใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ๅ†…ๅฎนใ‚’ๅฎŒๅ…จใซ็†่งฃใ—ใฆใ„ใ‚‹ๅ ดๅˆใฎใฟๅค‰ๆ›ดใ—ใฆใใ ใ•ใ„ใ€‚ + + + All toggle descriptions are currently expanded. You can tap a toggle's name to open or close its description at any time! + ใ™ในใฆใฎใƒˆใ‚ฐใƒซใฎ่ชฌๆ˜ŽใŒ็พๅœจๅฑ•้–‹ใ•ใ‚Œใฆใ„ใพใ™ใ€‚ใ„ใคใงใ‚‚ใƒˆใ‚ฐใƒซๅใ‚’ใ‚ฟใƒƒใƒ—ใ—ใฆ่ชฌๆ˜Žใ‚’้–‹้–‰ใงใใพใ™ใ€‚ FrogPilotSoundsPanel - Alert Volume Control - ใ‚ขใƒฉใƒผใƒˆ้Ÿณ้‡ใ‚ณใƒณใƒˆใƒญใƒผใƒซ + Alert Volume Controller + ใ‚ขใƒฉใƒผใƒˆ้Ÿณ้‡ใ‚ณใƒณใƒˆใƒญใƒผใƒฉใƒผ - Adjust the volume for each alert in openpilot. - openpilotใงๅ„ใ‚ขใƒฉใƒผใƒˆใฎ้Ÿณ้‡ใ‚’่ชฟๆ•ดใ—ใพใ™ใ€‚ + <b>Set how loud each type of openpilot alert is</b> to keep routine prompts from becoming distracting. + <b>ๅ„็จฎใฎopenpilotใ‚ขใƒฉใƒผใƒˆใฎ้Ÿณ้‡ใ‚’่จญๅฎš</b>ใ—ใฆใ€ๆ—ฅๅธธ็š„ใชใƒ—ใƒญใƒณใƒ—ใƒˆใŒๆฐ—ใซใชใ‚‰ใชใ„ใ‚ˆใ†ใซใ—ใพใ™ใ€‚ Disengage Volume - ใƒœใƒชใƒฅใƒผใƒ ใ‚’่งฃ้™ค + ่งฃ้™ค้Ÿณ้‡ - Adjust the volume for alerts like:<br><br><b>Adaptive Cruise Disabled</b><br><b>Brake Pedal Pressed</b><br><b>Parking Brake Engaged</b><br><b>Speed too Low</b> - ใ‚ขใƒฉใƒผใƒˆใฎ้Ÿณ้‡ใ‚’่ชฟๆ•ดใ™ใ‚‹:<br><br><b>ใ‚ขใƒ€ใƒ—ใƒ†ใ‚ฃใƒ–ใ‚ฏใƒซใƒผใ‚บ็„กๅŠน</b><br><b>ใƒ–ใƒฌใƒผใ‚ญใƒšใƒ€ใƒซใŒๆŠผใ•ใ‚Œใพใ—ใŸ</b><br><b>ใƒ‘ใƒผใ‚ญใƒณใ‚ฐใƒ–ใƒฌใƒผใ‚ญใŒไฝœๅ‹•ใ—ใพใ—ใŸ</b><br><b>้€ŸๅบฆใŒไฝŽใ™ใŽใพใ™</b> + <b>Set the volume for alerts when openpilot disengages.</b><br><br>Examples include: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". + <b>openpilotใŒ่งฃ้™คใ•ใ‚ŒใŸใจใใฎ่ญฆๅ ฑ้Ÿณ้‡ใ‚’่จญๅฎšใ—ใพใ™ใ€‚</b><br><br>ไพ‹: ใ€ŒCruise Fault: Restart the Carใ€ใ€ใ€ŒParking Brake Engagedใ€ใ€ใ€ŒPedal Pressedใ€ Engage Volume - ใƒœใƒชใƒฅใƒผใƒ ใ‚’ๆœ‰ๅŠนใซใ™ใ‚‹ + ไฝœๅ‹•้Ÿณ้‡ - Adjust the volume for alerts like:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> - ใ‚ขใƒฉใƒผใƒˆใฎ้Ÿณ้‡ใ‚’่ชฟๆ•ดใ—ใพใ™:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> + <b>Set the volume for the chime when openpilot engages</b>, such as after pressing the "RESUME" or "SET" steering wheel buttons. + <b>openpilotใŒไฝœๅ‹•ใ™ใ‚‹ใจใใฎใƒใƒฃใ‚คใƒ ้Ÿณ้‡ใ‚’่จญๅฎš</b>ใ€‚ใ€ŒRESUMEใ€ใ‚„ใ€ŒSETใ€ใฎใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใƒœใ‚ฟใƒณใ‚’ๆŠผใ—ใŸๅพŒใชใฉใซ้ณดใ‚Šใพใ™ใ€‚ Prompt Volume - ใƒ—ใƒญใƒณใƒ—ใƒˆใƒœใƒชใƒฅใƒผใƒ  + ใƒ—ใƒญใƒณใƒ—ใƒˆ้Ÿณ้‡ - Adjust the volume for alerts like:<br><br><b>Car Detected in Blindspot</b><br><b>Steer Unavailable Below "X"</b><br><b>Speed too Low</b><br><b>Take Control, Turn Exceeds Steering Limit</b> - ใ‚ขใƒฉใƒผใƒˆใฎ้Ÿณ้‡ใ‚’่ชฟๆ•ด:<br><br><b>ใƒ–ใƒฉใ‚คใƒณใƒ‰ใ‚นใƒใƒƒใƒˆใซ่ปŠไธกๆคœๅ‡บ</b><br><b>"X"ไปฅไธ‹ใงใฏใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐไธๅฏ</b><br><b>้€ŸๅบฆใŒไฝŽใ™ใŽใพใ™</b><br><b>ๅˆถๅพกใ‚’ๅ–ใฃใฆใใ ใ•ใ„ใ€ใ‚ฟใƒผใƒณใŒใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐๅˆถ้™ใ‚’่ถ…ใˆใฆใ„ใพใ™</b> + <b>Set the volume for prompts that need attention.</b><br><br>Examples include: "Car Detected in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". + <b>ๆณจๆ„ใŒๅฟ…่ฆใชใƒ—ใƒญใƒณใƒ—ใƒˆใฎ้Ÿณ้‡ใ‚’่จญๅฎšใ—ใพใ™ใ€‚</b><br><br>ไพ‹: ใ€Œๆญป่ง’ใซ่ปŠไธกใ‚’ๆคœๅ‡บใ€ใ€ใ€Œไธ€ๆ™‚็š„ใซใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐไฝฟ็”จไธๅฏใ€ใ€ใ€Œใ‚ซใƒผใƒ–ใŒใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐ้™็•Œใ‚’่ถ…้Žใ€ Prompt Distracted Volume - ใƒ—ใƒญใƒณใƒ—ใƒˆๅˆ†ๆ•ฃใƒœใƒชใƒฅใƒผใƒ  + ใƒ—ใƒญใƒณใƒ—ใƒˆใฎๆณจๆ„ๆ•ฃๆผซๆ™‚ใฎ้Ÿณ้‡ - Adjust the volume for alerts like:<br><br><b>Pay Attention, Driver Distracted</b><br><b>Touch Steering Wheel, Driver Unresponsive</b> - ใ‚ขใƒฉใƒผใƒˆใฎ้Ÿณ้‡ใ‚’่ชฟๆ•ด:<br><br><b>ๆณจๆ„ใ€้‹่ปข่€…ใŒๆณจๆ„ๆ•ฃๆผซ</b><br><b>ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใซ่งฆใ‚Œใฆใใ ใ•ใ„ใ€้‹่ปข่€…ใŒๅๅฟœใ—ใพใ›ใ‚“</b> + <b>Set the volume for prompts when openpilot detects driver distraction or unresponsiveness.</b><br><br>Examples include: "Pay Attention", "Touch Steering Wheel". + <b>openpilotใŒใƒ‰ใƒฉใ‚คใƒใƒผใฎไธๆณจๆ„ใ‚„็„กๅๅฟœใ‚’ๆคœ็Ÿฅใ—ใŸ้š›ใฎใƒ—ใƒญใƒณใƒ—ใƒˆใฎ้Ÿณ้‡ใ‚’่จญๅฎšใ—ใพใ™ใ€‚</b><br><br>ไพ‹๏ผšใ€Œๆณจๆ„ใ—ใฆใใ ใ•ใ„ใ€ใ€Œใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใซ่งฆใ‚Œใฆใใ ใ•ใ„ใ€ใ€‚ Refuse Volume - ๆ‹’ๅฆ้‡ + ้Ÿณ้‡ใ‚’ๆ‹’ๅฆ - Adjust the volume for alerts like:<br><br><b>openpilot Unavailable</b> - ใ‚ขใƒฉใƒผใƒˆใฎ้Ÿณ้‡ใ‚’่ชฟๆ•ดใ™ใ‚‹:<br><br><b>openpilotๅˆฉ็”จไธๅฏ</b> + <b>Set the volume for alerts when openpilot refuses to engage.</b><br><br>Examples include: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". + <b>openpilot ใŒไฝœๅ‹•ใ‚’ๆ‹’ๅฆใ™ใ‚‹้š›ใฎใ‚ขใƒฉใƒผใƒˆ้Ÿณ้‡ใ‚’่จญๅฎšใ—ใพใ™ใ€‚</b><br><br>ไพ‹: ใ€Œใƒ–ใƒฌใƒผใ‚ญใƒ›ใƒผใƒซใƒ‰ไฝœๅ‹•ไธญใ€ใ€Œใƒ‰ใ‚ข้–‹ใ€ใ€Œใ‚ทใƒผใƒˆใƒ™ใƒซใƒˆๆœช่ฃ…็€ใ€ใ€‚ Warning Soft Volume - ่ญฆๅ‘Šใ‚ฝใƒ•ใƒˆใƒœใƒชใƒฅใƒผใƒ  + ่ญฆๅ‘Šใ‚ฝใƒ•ใƒˆใƒœใƒชใƒฅใƒผใƒ  - Adjust the volume for alerts like:<br><br><b>BRAKE!, Risk of Collision</b><br><b>TAKE CONTROL IMMEDIATELY</b> - ใ‚ขใƒฉใƒผใƒˆใฎ้Ÿณ้‡ใ‚’่ชฟๆ•ดใ—ใพใ™:<br><br><b>ใƒ–ใƒฌใƒผใ‚ญ๏ผ่ก็ชใฎๅฑ้™บ</b><br><b>็›ดใกใซๆ“ไฝœใ‚’่กŒใฃใฆใใ ใ•ใ„</b> + <b>Set the volume for softer warnings about potential risks.</b><br><br>Examples include: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". + <b>ๆฝœๅœจ็š„ใชใƒชใ‚นใ‚ฏใซ้–ขใ™ใ‚‹ใ‚ˆใ‚ŠๆŽงใˆใ‚ใช่ญฆๅ‘Šใฎ้Ÿณ้‡ใ‚’่จญๅฎšใ—ใพใ™ใ€‚</b><br><br>ไพ‹: ใ€ŒBRAKE! Risk of Collisionใ€ใ€ŒSteering Temporarily Unavailableใ€ Warning Immediate Volume - ่ญฆๅ‘Š ๅณๆ™‚ใƒœใƒชใƒฅใƒผใƒ  + ่ญฆๅ‘Š ๅณๆ™‚ใƒœใƒชใƒฅใƒผใƒ  - Adjust the volume for alerts like:<br><br><b>DISENGAGE IMMEDIATELY, Driver Distracted</b><br><b>DISENGAGE IMMEDIATELY, Driver Unresponsive</b> - ใ‚ขใƒฉใƒผใƒˆใฎ้Ÿณ้‡ใ‚’่ชฟๆ•ดใ—ใพใ™:<br><br><b>็›ดใกใซ่งฃ้™คใ€ใƒ‰ใƒฉใ‚คใƒใƒผใŒๆณจๆ„ๆ•ฃๆผซ</b><br><b>็›ดใกใซ่งฃ้™คใ€ใƒ‰ใƒฉใ‚คใƒใƒผใŒๅๅฟœใ—ใชใ„</b> + <b>Set the volume for the loudest warnings that require urgent attention.</b><br><br>Examples include: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". + <b>็ทŠๆ€ฅใฎๆณจๆ„ใ‚’่ฆใ™ใ‚‹ๆœ€ใ‚‚ๅคงใใช่ญฆๅ‘Šใฎ้Ÿณ้‡ใ‚’่จญๅฎšใ—ใพใ™ใ€‚</b><br><br>ไพ‹: ใ€ŒDISENGAGE IMMEDIATELY โ€” Driver Distractedใ€ใ€ŒDISENGAGE IMMEDIATELY โ€” Driver Unresponsiveใ€ FrogPilot Alerts - FrogPilotใ‚ขใƒฉใƒผใƒˆ + FrogPilot ใ‚ขใƒฉใƒผใƒˆ - FrogPilot alerts for various events in openpilot. - FrogPilotใฏใ€openpilotใฎใ•ใพใ–ใพใชใ‚คใƒ™ใƒณใƒˆใซๅฏพใ—ใฆใ‚ขใƒฉใƒผใƒˆใ‚’็™บใ—ใพใ™ใ€‚ + <b>Optional FrogPilot alerts</b> that highlight driving events in a more noticeable way. + <b>ไปปๆ„ใฎFrogPilotใ‚ขใƒฉใƒผใƒˆ</b>ใงใ€้‹่ปขๆ™‚ใฎไบ‹่ฑกใ‚’ใ‚ˆใ‚Š็›ฎ็ซ‹ใคๅฝขใงๅผท่ชฟ่กจ็คบใ—ใพใ™ใ€‚ - Goat Scream Steering Saturated Alert - ใƒคใ‚ฎใฎๆ‚ฒ้ณดใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐ้ฃฝๅ’Œใ‚ขใƒฉใƒผใƒˆ + Goat Scream + ใƒคใ‚ฎใฎๅซใณ - The infamous "Goat Scream" that has brought both joy and anger to FrogPilot users all around the world! - ๆ‚ชๅ้ซ˜ใ„ใ€Œใƒคใ‚ฎใฎๅซใณใ€ใฏใ€ไธ–็•ŒไธญใฎFrogPilotใƒฆใƒผใ‚ถใƒผใซๅ–œใณใจๆ€’ใ‚Šใฎไธกๆ–นใ‚’ใ‚‚ใŸใ‚‰ใ—ใพใ—ใŸ๏ผ + <b>Play the infamous "Goat Scream" when the steering controller reaches its limit.</b> Based on the "Turn Exceeds Steering Limit" event. + <b>ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใ‚ณใƒณใƒˆใƒญใƒผใƒฉใŒ้™็•Œใซ้”ใ—ใŸใจใใซใ€ๆ‚ชๅ้ซ˜ใ„ใ€Œใƒคใ‚ฎใฎๆ‚ฒ้ณดใ€ใ‚’ๅ†็”Ÿใ—ใพใ™ใ€‚</b> ใ€ŒTurn Exceeds Steering Limitใ€ใ‚คใƒ™ใƒณใƒˆใซๅŸบใฅใใพใ™ใ€‚ Green Light Alert - ใ‚ฐใƒชใƒผใƒณใƒฉใ‚คใƒˆใ‚ขใƒฉใƒผใƒˆ + ้’ไฟกๅทใ‚ขใƒฉใƒผใƒˆ - Get an alert when the traffic light changes from red to green. - ไฟกๅทใŒ่ตคใ‹ใ‚‰็ท‘ใซๅค‰ใ‚ใ‚‹ใจใใซใ‚ขใƒฉใƒผใƒˆใ‚’ๅ—ใ‘ๅ–ใ‚‹ใ€‚ + <b>Play an alert when the model predicts a red light has turned green.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights. This alert is based on end-to-end model predictions from camera input and may trigger even when the light has not changed.</i> + <b>ใƒขใƒ‡ใƒซใŒ่ตคไฟกๅทใŒ้’ใซๅค‰ใ‚ใฃใŸใจไบˆๆธฌใ—ใŸใจใใซ่ญฆๅ ฑใ‚’ๅ†็”Ÿใ—ใพใ™ใ€‚</b><br><br><i><b>ๅ…่ฒฌไบ‹้ …</b>๏ผšopenpilot ใฏไฟกๅทๆฉŸใ‚’ๆ˜Ž็คบ็š„ใซๆคœๅ‡บใ—ใพใ›ใ‚“ใ€‚ใ“ใฎ่ญฆๅ ฑใฏใ‚ซใƒกใƒฉๅ…ฅๅŠ›ใซๅŸบใฅใใ‚จใƒณใƒ‰ใƒ„ใƒผใ‚จใƒณใƒ‰ใฎใƒขใƒ‡ใƒซไบˆๆธฌใซๅŸบใฅใ„ใฆใŠใ‚Šใ€ไฟกๅทใŒๅค‰ใ‚ใฃใฆใ„ใชใ„ๅ ดๅˆใงใ‚‚ไฝœๅ‹•ใ™ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚</i> Lead Departing Alert - ใƒชใƒผใƒ‰ๅ‡บ็™บใ‚ขใƒฉใƒผใƒˆ + ๅ…ˆ่กŒ่ปŠ็™บ้€ฒใ‚ขใƒฉใƒผใƒˆ - Get an alert when the lead vehicle begins to depart from a standstill. - ๅ…ˆ้ ญ่ปŠไธกใŒๅœๆญข็Šถๆ…‹ใ‹ใ‚‰ๅ‡บ็™บใ—ๅง‹ใ‚ใŸใจใใซใ‚ขใƒฉใƒผใƒˆใ‚’ๅ—ใ‘ๅ–ใ‚Šใพใ™ใ€‚ + <b>Play an alert when the lead vehicle departs from a stop.</b> + <b>ๅ…ˆ่กŒ่ปŠใŒๅœๆญข็Šถๆ…‹ใ‹ใ‚‰็™บ้€ฒใ—ใŸใจใใซ่ญฆๅ ฑใ‚’ๅ†็”Ÿใ—ใพใ™ใ€‚</b> Loud "Car Detected in Blindspot" Alert - ใ€Œๆญป่ง’ใซ่ปŠใ‚’ๆคœ็Ÿฅใ€ใ‚ขใƒฉใƒผใƒˆ + ๅคง้Ÿณ้‡ใฎใ€Œๆญป่ง’ใซ่ปŠไธกใ‚’ๆคœ็Ÿฅใ€ใ‚ขใƒฉใƒผใƒˆ - A louder alert for when a vehicle is detected in the blindspot when attempting to change lanes. - ่ปŠ็ทšๅค‰ๆ›ดใ‚’่ฉฆใฟใ‚‹้š›ใซใ€ใƒ–ใƒฉใ‚คใƒณใƒ‰ใ‚นใƒใƒƒใƒˆใง่ปŠไธกใŒๆคœๅ‡บใ•ใ‚ŒใŸๅ ดๅˆใฎใ‚ˆใ‚Šๅคงใใช่ญฆๅ‘Š้Ÿณใ€‚ + <b>Play a louder alert if a vehicle is in the blind spot when attempting to change lanes.</b> Based on the "Car Detected in Blindspot" event. + <b>่ปŠ็ทšๅค‰ๆ›ดใ‚’่ฉฆใฟใ‚‹้š›ใ€ๆญป่ง’ใซ่ปŠไธกใŒใ„ใ‚‹ๅ ดๅˆใฏใ‚ˆใ‚Šๅคงใใช่ญฆๅ ฑใ‚’ๅ†็”Ÿใ—ใพใ™ใ€‚</b> ใ€Œๆญป่ง’ใซ่ปŠไธกใ‚’ๆคœๅ‡บใ€ใฎใ‚คใƒ™ใƒณใƒˆใซๅŸบใฅใใพใ™ใ€‚ Speed Limit Changed Alert - ้€Ÿๅบฆๅˆถ้™ๅค‰ๆ›ดใ‚ขใƒฉใƒผใƒˆ + ้€Ÿๅบฆๅˆถ้™ๅค‰ๆ›ดใ‚ขใƒฉใƒผใƒˆ - Get an alert when the speed limit changes. - ้€Ÿๅบฆๅˆถ้™ใŒๅค‰ๆ›ดใ•ใ‚ŒใŸใจใใซใ‚ขใƒฉใƒผใƒˆใ‚’ๅ—ใ‘ๅ–ใ‚‹ใ€‚ + <b>Play an alert when the posted speed limit changes.</b> + <b>่กจ็คบใ•ใ‚Œใฆใ„ใ‚‹ๅˆถ้™้€ŸๅบฆใŒๅค‰ใ‚ใฃใŸใจใใซใ‚ขใƒฉใƒผใƒˆใ‚’ๅ†็”Ÿใ—ใพใ™ใ€‚</b> Muted - ใƒŸใƒฅใƒผใƒˆไธญ + ใƒŸใƒฅใƒผใƒˆไธญ Auto - ใ‚ชใƒผใƒˆ + ่‡ชๅ‹• Test - ใƒ†ใ‚นใƒˆ + ใƒ†ใ‚นใƒˆ FrogPilotThemesPanel - Custom Theme - ใ‚ซใ‚นใ‚ฟใƒ ใƒ†ใƒผใƒž + Custom Themes + ใ‚ซใ‚นใ‚ฟใƒ ใƒ†ใƒผใƒž - The overall appearance of openpilot. - openpilotใฎๅ…จไฝ“็š„ใชๅค–่ฆณใ€‚ + <b>The overall look and feel of openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot ใฎๅ…จไฝ“็š„ใชใƒซใƒƒใ‚ฏ๏ผ†ใƒ•ใ‚ฃใƒผใƒซใ€‚</b> ใ€ŒThe Pondใ€ใฎใ€ŒTheme Makerใ€ใ‚’ไฝฟใฃใฆใ€่‡ชๅˆ†ใฎใƒ†ใƒผใƒžใ‚’ไฝœๆˆใ—ใฆๅ…ฑๆœ‰ใ—ใพใ—ใ‚‡ใ†๏ผ Color Scheme - ใ‚ซใƒฉใƒผใ‚นใ‚ญใƒผใƒ  + ้…่‰ฒ - openpilot's color scheme. - -Want to submit your own color scheme? Share it in the "custom-themes" channel on the FrogPilot Discord! - openpilotใฎใ‚ซใƒฉใƒผใ‚นใ‚ญใƒผใƒ ใ€‚ - -่‡ชๅˆ†ใฎใ‚ซใƒฉใƒผใ‚นใ‚ญใƒผใƒ ใ‚’ๆๅ‡บใ—ใŸใ„ใงใ™ใ‹๏ผŸFrogPilot Discordใฎใ€Œcustom-themesใ€ใƒใƒฃใƒณใƒใƒซใงๅ…ฑๆœ‰ใ—ใฆใใ ใ•ใ„๏ผ + <b>The color scheme used throughout openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot ๅ…จไฝ“ใงไฝฟ็”จใ•ใ‚Œใ‚‹้…่‰ฒใงใ™ใ€‚</b> ใ€ŒThe Pondใ€ใฎใ€ŒTheme Makerใ€ใ‚’ไฝฟใฃใฆ่‡ชๅˆ†ใฎใƒ†ใƒผใƒžใ‚’ไฝœๆˆใ—ใฆๅ…ฑๆœ‰ใ—ใพใ—ใ‚‡ใ†๏ผ + + + Distance Button + ่ปŠ้–“่ท้›ขใƒœใ‚ฟใƒณ + + + <b>The distance button icons shown on the driving screen.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>้‹่ปข็”ป้ขใซ่กจ็คบใ•ใ‚Œใ‚‹่ปŠ้–“่ท้›ขใƒœใ‚ฟใƒณใฎใ‚ขใ‚คใ‚ณใƒณใ€‚</b> ใ€ŒThe Pondใ€ใฎใ€ŒTheme Makerใ€ใ‚’ไฝฟใฃใฆใ€ใ‚ชใƒชใ‚ธใƒŠใƒซใฎใƒ†ใƒผใƒžใ‚’ไฝœๆˆใ—ใฆๅ…ฑๆœ‰ใ—ใพใ—ใ‚‡ใ†๏ผ Icon Pack - ใ‚ขใ‚คใ‚ณใƒณใƒ‘ใƒƒใ‚ฏ + ใ‚ขใ‚คใ‚ณใƒณใƒ‘ใƒƒใ‚ฏ - openpilot's icon pack. - -Want to submit your own icons? Share them in the "custom-themes" channel on the FrogPilot Discord! - openpilotใฎใ‚ขใ‚คใ‚ณใƒณใƒ‘ใƒƒใ‚ฏใ€‚ - -่‡ชๅˆ†ใฎใ‚ขใ‚คใ‚ณใƒณใ‚’ๆๅ‡บใ—ใŸใ„ใงใ™ใ‹๏ผŸFrogPilot Discordใฎใ€Œcustom-themesใ€ใƒใƒฃใƒณใƒใƒซใงๅ…ฑๆœ‰ใ—ใฆใใ ใ•ใ„๏ผ + <b>The icon style used across openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot ๅ…จไฝ“ใงไฝฟ็”จใ•ใ‚Œใ‚‹ใ‚ขใ‚คใ‚ณใƒณใ‚นใ‚ฟใ‚คใƒซใ€‚</b> ใ€ŒThe Pondใ€ใฎใ€ŒTheme Makerใ€ใ‚’ไฝฟใฃใฆใ€็‹ฌ่‡ชใฎใƒ†ใƒผใƒžใ‚’ไฝœๆˆใ—ใฆๅ…ฑๆœ‰ใ—ใพใ—ใ‚‡ใ†๏ผ Sound Pack - ใ‚ตใ‚ฆใƒณใƒ‰ใƒ‘ใƒƒใ‚ฏ + ใ‚ตใ‚ฆใƒณใƒ‰ใƒ‘ใƒƒใ‚ฏ - openpilot's sound effects. - -Want to submit your own sounds? Share them in the "custom-themes" channel on the FrogPilot Discord! - openpilotใฎใ‚ตใ‚ฆใƒณใƒ‰ใ‚จใƒ•ใ‚งใ‚ฏใƒˆใ€‚ - -่‡ชๅˆ†ใฎใ‚ตใ‚ฆใƒณใƒ‰ใ‚’ๆŠ•็จฟใ—ใŸใ„ใงใ™ใ‹๏ผŸFrogPilot Discordใฎใ€Œcustom-themesใ€ใƒใƒฃใƒณใƒใƒซใงๅ…ฑๆœ‰ใ—ใฆใใ ใ•ใ„๏ผ + <b>The sound pack used by openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot ใŒไฝฟ็”จใ™ใ‚‹ใ‚ตใ‚ฆใƒณใƒ‰ใƒ‘ใƒƒใ‚ฏใ€‚</b> ใ€ŒThe Pondใ€ใฎใ€ŒTheme Makerใ€ใ‚’ไฝฟใฃใฆใ€็‹ฌ่‡ชใฎใƒ†ใƒผใƒžใ‚’ไฝœๆˆใ—ใฆๅ…ฑๆœ‰ใ—ใพใ—ใ‚‡ใ†๏ผ Steering Wheel - ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซ + ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซ - The steering wheel icon in the top right of the driving screen. - ้‹่ปข็”ป้ขใฎๅณไธŠใซใ‚ใ‚‹ใƒใƒณใƒ‰ใƒซใ‚ขใ‚คใ‚ณใƒณใ€‚ - - - Themed turn signal animations. - -Want to submit your own animations? Share them in the "custom-themes" channel on the FrogPilot Discord! - ใƒ†ใƒผใƒžไป˜ใใ‚ฟใƒผใƒณใ‚ทใ‚ฐใƒŠใƒซใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ€‚ - -่‡ชๅˆ†ใฎใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ‚’ๆŠ•็จฟใ—ใŸใ„ใงใ™ใ‹๏ผŸFrogPilot Discordใฎใ€Œcustom-themesใ€ใƒใƒฃใƒณใƒใƒซใงๅ…ฑๆœ‰ใ—ใฆใใ ใ•ใ„๏ผ - - - Download Status - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰็Šถๆณ - - - Holiday Themes - ใƒ›ใƒชใƒ‡ใƒผใƒ†ใƒผใƒž - - - Holiday-based visual themes for openpilot. Minor holidays last one day; major holidays (Christmas, Easter, Halloween, etc.) continue all week. - ใ‚ชใƒผใƒ—ใƒณใƒ‘ใ‚คใƒญใƒƒใƒˆใฎไผ‘ๆ—ฅใƒ™ใƒผใ‚นใฎใƒ“ใ‚ธใƒฅใ‚ขใƒซใƒ†ใƒผใƒžใ€‚ๅฐใ•ใชไผ‘ๆ—ฅใฏ1ๆ—ฅใ ใ‘็ถšใใพใ™ใŒใ€ๅคงใใชไผ‘ๆ—ฅ๏ผˆใ‚ฏใƒชใ‚นใƒžใ‚นใ€ใ‚คใƒผใ‚นใ‚ฟใƒผใ€ใƒใƒญใ‚ฆใ‚ฃใƒณใชใฉ๏ผ‰ใฏ1้€ฑ้–“็ถšใใพใ™ใ€‚ - - - Rainbow Path - ่™นใฎ้“ - - - The path on the driving screen turns into a Mario Kart inspired "Rainbow Path". - ้‹่ปข็”ป้ขใฎใƒ‘ใ‚นใŒใƒžใƒชใ‚ชใ‚ซใƒผใƒˆใซใ‚คใƒณใ‚นใƒ‘ใ‚คใ‚ขใ•ใ‚ŒใŸใ€Œใƒฌใ‚คใƒณใƒœใƒผใƒ‘ใ‚นใ€ใซๅค‰ใ‚ใ‚Šใพใ™ใ€‚ - - - Random Events - ใƒฉใƒณใƒ€ใƒ ใ‚คใƒ™ใƒณใƒˆ - - - Random cosmetic events that trigger after certain driving conditions. These events are purely for fun and don't affect driving controls! - ็‰นๅฎšใฎ้‹่ปขๆกไปถใฎๅพŒใซ็™บ็”Ÿใ™ใ‚‹ใƒฉใƒณใƒ€ใƒ ใชใ‚ณใ‚นใƒกใƒ†ใ‚ฃใƒƒใ‚ฏใ‚คใƒ™ใƒณใƒˆใ€‚ใ“ใ‚Œใ‚‰ใฎใ‚คใƒ™ใƒณใƒˆใฏ็ด”็ฒ‹ใซๆฅฝใ—ใ‚€ใŸใ‚ใฎใ‚‚ใฎใงใ€้‹่ปขๆ“ไฝœใซใฏๅฝฑ้Ÿฟใ—ใพใ›ใ‚“๏ผ - - - Random Themes - ใƒฉใƒณใƒ€ใƒ ใƒ†ใƒผใƒž - - - Cycles through your downloaded themes randomly on each boot, giving every theme in your collection a chance to shine! - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใŸใƒ†ใƒผใƒžใ‚’่ตทๅ‹•ใ”ใจใซใƒฉใƒณใƒ€ใƒ ใซๅˆ‡ใ‚Šๆ›ฟใˆใ€ใ‚ณใƒฌใ‚ฏใ‚ทใƒงใƒณๅ†…ใฎใ™ในใฆใฎใƒ†ใƒผใƒžใซ่ผใใƒใƒฃใƒณใ‚นใ‚’ไธŽใˆใพใ™๏ผ - - - Startup Alert - ใ‚นใ‚ฟใƒผใƒˆใ‚ขใƒƒใƒ—ใ‚ขใƒฉใƒผใƒˆ - - - The text of the "Startup Alert" message that appears at the beginning of a drive. - ใƒ‰ใƒฉใ‚คใƒ–ใฎ้–‹ๅง‹ๆ™‚ใซ่กจ็คบใ•ใ‚Œใ‚‹ใ€Œใ‚นใ‚ฟใƒผใƒˆใ‚ขใƒƒใƒ—ใ‚ขใƒฉใƒผใƒˆใ€ใƒกใƒƒใ‚ปใƒผใ‚ธใฎใƒ†ใ‚ญใ‚นใƒˆใ€‚ - - - DELETE - ๅ‰Š้™ค - - - DOWNLOAD - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ - - - SELECT - SELECT - - - Select a color scheme to delete - ๅ‰Š้™คใ™ใ‚‹ใ‚ซใƒฉใƒผใ‚นใ‚ญใƒผใƒ ใ‚’้ธๆŠž - - - Are you sure you want to delete the "%1" color scheme? - ใ€Œ%1ใ€ใ‚ซใƒฉใƒผใ‚นใ‚ญใƒผใƒ ใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Delete - ๅ‰Š้™ค - - - Select a color scheme to download - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ™ใ‚‹ใ‚ซใƒฉใƒผใ‚นใ‚ญใƒผใƒ ใ‚’้ธๆŠž - - - Select a color scheme - ใ‚ซใƒฉใƒผใ‚นใ‚ญใƒผใƒ ใ‚’้ธๆŠž - - - Select a distance icon pack to delete - ๅ‰Š้™คใ™ใ‚‹่ท้›ขใ‚ขใ‚คใ‚ณใƒณใƒ‘ใƒƒใ‚ฏใ‚’้ธๆŠž - - - Are you sure you want to delete the "%1" distance icon pack? - ใ€Œ%1ใ€่ท้›ขใ‚ขใ‚คใ‚ณใƒณใƒ‘ใƒƒใ‚ฏใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Select a distance icon pack to download - ่ท้›ขใ‚ขใ‚คใ‚ณใƒณใƒ‘ใƒƒใ‚ฏใ‚’้ธๆŠžใ—ใฆใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ - - - Select a distance icon pack - ่ท้›ขใ‚ขใ‚คใ‚ณใƒณใƒ‘ใƒƒใ‚ฏใ‚’้ธๆŠž - - - Select an icon pack to delete - ๅ‰Š้™คใ™ใ‚‹ใ‚ขใ‚คใ‚ณใƒณใƒ‘ใƒƒใ‚ฏใ‚’้ธๆŠž - - - Are you sure you want to delete the "%1" icon pack? - ใ€Œ%1ใ€ใ‚ขใ‚คใ‚ณใƒณใƒ‘ใƒƒใ‚ฏใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Select an icon pack to download - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ™ใ‚‹ใ‚ขใ‚คใ‚ณใƒณใƒ‘ใƒƒใ‚ฏใ‚’้ธๆŠž - - - Select an icon pack - ใ‚ขใ‚คใ‚ณใƒณใƒ‘ใƒƒใ‚ฏใ‚’้ธๆŠž - - - Select a signal animation to delete - ๅ‰Š้™คใ™ใ‚‹ใ‚ทใ‚ฐใƒŠใƒซใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ‚’้ธๆŠž - - - Are you sure you want to delete the "%1" signal animation? - ใ€Œ%1ใ€ใ‚ทใ‚ฐใƒŠใƒซใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Select a signal animation to download - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ™ใ‚‹ไฟกๅทใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ‚’้ธๆŠž - - - Select a signal animation - ไฟกๅทใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ‚’้ธๆŠž - - - Select a sound pack to delete - ๅ‰Š้™คใ™ใ‚‹ใ‚ตใ‚ฆใƒณใƒ‰ใƒ‘ใƒƒใ‚ฏใ‚’้ธๆŠž - - - Are you sure you want to delete the "%1" sound pack? - ใ€Œ%1ใ€ใ‚ตใ‚ฆใƒณใƒ‰ใƒ‘ใƒƒใ‚ฏใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Select a sound pack to download - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ™ใ‚‹ใ‚ตใ‚ฆใƒณใƒ‰ใƒ‘ใƒƒใ‚ฏใ‚’้ธๆŠž - - - Select a sound pack - ใ‚ตใ‚ฆใƒณใƒ‰ใƒ‘ใƒƒใ‚ฏใ‚’้ธๆŠž - - - Select a steering wheel to delete - ๅ‰Š้™คใ™ใ‚‹ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใ‚’้ธๆŠž - - - Are you sure you want to delete the "%1" steering wheel? - "%1" ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใ‚’ๅ‰Š้™คใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Select a steering wheel to download - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ™ใ‚‹ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใ‚’้ธๆŠž - - - Select a steering wheel - ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใ‚’้ธๆŠž - - - STOCK - ๅœจๅบซ - - - FROGPILOT - FROGPILOT - - - CUSTOM - ใ‚ซใ‚นใ‚ฟใƒ  - - - CLEAR - ใ‚ฏใƒชใ‚ข - - - Enter the text for the top half - ไธŠๅŠๅˆ†ใฎใƒ†ใ‚ญใ‚นใƒˆใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„ - - - Characters: 0/%1 - ๆ–‡ๅญ—ๆ•ฐ: 0/%1 - - - Enter the text for the bottom half - ไธ‹ๅŠๅˆ†ใฎใƒ†ใ‚ญใ‚นใƒˆใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„ - - - "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! - ใ€Œใƒฉใƒณใƒ€ใƒ ใƒ†ใƒผใƒžใ€ใฏใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใŸใƒ†ใƒผใƒžใงใฎใฟๆฉŸ่ƒฝใ™ใ‚‹ใŸใ‚ใ€ไฝฟ็”จใ—ใŸใ„ใƒ†ใƒผใƒžใ‚’ๅฟ…ใšใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใฆใใ ใ•ใ„๏ผ - - - CANCEL - ใ‚ญใƒฃใƒณใ‚ปใƒซ - - - Are you sure you want to completely reset your startup message? - ใ‚นใ‚ฟใƒผใƒˆใ‚ขใƒƒใƒ—ใƒกใƒƒใ‚ปใƒผใ‚ธใ‚’ๅฎŒๅ…จใซใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + <b>The steering-wheel icon</b> shown at the top-right of the driving screen. Use the "Theme Maker" in "The Pond" to create and share your own themes! + ้‹่ปข็”ป้ขใฎๅณไธŠใซ่กจ็คบใ•ใ‚Œใ‚‹<b>ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใฎใ‚ขใ‚คใ‚ณใƒณ</b>ใ€‚ใ€ŒThe Pondใ€ใฎใ€ŒTheme Makerใ€ใ‚’ไฝฟใฃใฆใ€่‡ชๅˆ†ใฎใƒ†ใƒผใƒžใ‚’ไฝœๆˆใ—ใฆๅ…ฑๆœ‰ใ—ใพใ—ใ‚‡ใ†๏ผ Turn Signal - ใ‚ฟใƒผใƒณใ‚ทใ‚ฐใƒŠใƒซ + ใ‚ฆใ‚คใƒณใ‚ซใƒผ + + + <b>Themed turn-signal animations.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>ใƒ†ใƒผใƒžไป˜ใใฎใ‚ฟใƒผใƒณใ‚ทใ‚ฐใƒŠใƒซใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ€‚</b> ใ€ŒThe Pondใ€ใฎใ€ŒTheme Makerใ€ใ‚’ไฝฟใฃใฆใ€่‡ชๅˆ†ใฎใƒ†ใƒผใƒžใ‚’ไฝœๆˆใ—ใฆๅ…ฑๆœ‰ใ—ใพใ—ใ‚‡ใ†๏ผ + + + Download Status + ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰็Šถๆณ + + + Holiday Themes + ใƒ›ใƒชใƒ‡ใƒผใฎใƒ†ใƒผใƒž + + + <b>Themes based on U.S. holidays.</b> Minor holidays last one day; major holidays (Christmas, Easter, Halloween) run for a full week. + <b>็ฑณๅ›ฝใฎ็ฅๆ—ฅใซๅŸบใฅใใƒ†ใƒผใƒžใ€‚</b> ๅฐ่ฆๆจกใช็ฅๆ—ฅใฏ1ๆ—ฅ้–“ใ€ๅคง่ฆๆจกใช็ฅๆ—ฅ๏ผˆChristmasใ€Easterใ€Halloween๏ผ‰ใฏ1้€ฑ้–“ๅฎŸๆ–ฝใ•ใ‚Œใพใ™ใ€‚ + + + Rainbow Path + ใƒฌใ‚คใƒณใƒœใƒผใƒ‘ใ‚น + + + <b>Color the driving path like a Mario Kartโ€“style "Rainbow Road".</b> + <b>ใƒžใƒชใ‚ชใ‚ซใƒผใƒˆ้ขจใฎใ€Œใƒฌใ‚คใƒณใƒœใƒผใƒญใƒผใƒ‰ใ€ใฎใ‚ˆใ†ใซ่ตฐ่กŒ็ตŒ่ทฏใ‚’ใ‚ซใƒฉใƒผ่กจ็คบใ—ใพใ™ใ€‚</b> + + + Random Events + ใƒฉใƒณใƒ€ใƒ ใ‚คใƒ™ใƒณใƒˆ + + + <b>Occasional on-screen effects triggered by driving conditions.</b> These are purely a visual and don't impact how openpilot drives! + <b>่ตฐ่กŒ็Šถๆณใซใ‚ˆใ‚Šใพใ‚Œใซ็”ป้ขไธŠใฎใ‚จใƒ•ใ‚งใ‚ฏใƒˆใŒ่กจ็คบใ•ใ‚Œใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚</b> ใ“ใ‚Œใ‚‰ใฏ่ฆ–่ฆš็š„ใชใ‚‚ใฎใซ้ŽใŽใšใ€openpilotใฎ้‹่ปขใซใฏๅฝฑ้Ÿฟใ—ใพใ›ใ‚“ใ€‚ + + + Random Themes + ใƒฉใƒณใƒ€ใƒ ใชใƒ†ใƒผใƒž + + + <b>Pick a random theme between each drive</b> from the themes you have downloaded. Great for variety without changing settings while driving. + <b>้‹่ปขใฎใŸใณใซใƒฉใƒณใƒ€ใƒ ใชใƒ†ใƒผใƒžใ‚’้ธใถ</b> ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ๆธˆใฟใฎใƒ†ใƒผใƒžใ‹ใ‚‰้ธๆŠžใ—ใพใ™ใ€‚้‹่ปขไธญใซ่จญๅฎšใ‚’ๅค‰ใˆใšใซๅคšๆง˜ๆ€งใ‚’ๆฅฝใ—ใ‚ใพใ™ใ€‚ + + + Startup Alert + ่ตทๅ‹•ใ‚ขใƒฉใƒผใƒˆ + + + <b>Customize the "Startup Alert" message</b> shown at the start of each drive. + <b>ๅ„่ตฐ่กŒใฎ้–‹ๅง‹ๆ™‚ใซ่กจ็คบใ•ใ‚Œใ‚‹ใ€Œ่ตทๅ‹•ใ‚ขใƒฉใƒผใƒˆใ€ใƒกใƒƒใ‚ปใƒผใ‚ธใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บ</b> + + + DELETE + ๅ‰Š้™ค + + + DOWNLOAD + ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ + + + SELECT + ้ธๆŠž + + + Select a color scheme to delete + ๅ‰Š้™คใ™ใ‚‹้…่‰ฒใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ + + + Delete the "%1" color scheme? + ใ€Œ%1ใ€้…่‰ฒใ‚’ๅ‰Š้™คใ—ใพใ™ใ‹๏ผŸ + + + Delete + ๅ‰Š้™ค + + + Select a color scheme to download + ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ™ใ‚‹้…่‰ฒใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ + + + Select a color scheme + ้…่‰ฒใ‚’้ธๆŠž + + + Select a distance icon pack to delete + ๅ‰Š้™คใ™ใ‚‹่ท้›ขใ‚ขใ‚คใ‚ณใƒณใƒ‘ใƒƒใ‚ฏใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ + + + Delete the "%1" distance icon pack? + ใ€Œ%1ใ€่ท้›ขใ‚ขใ‚คใ‚ณใƒณใƒ‘ใƒƒใ‚ฏใ‚’ๅ‰Š้™คใ—ใพใ™ใ‹? + + + Select a distance icon pack to download + ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ™ใ‚‹่ท้›ขใ‚ขใ‚คใ‚ณใƒณใƒ‘ใƒƒใ‚ฏใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ + + + Select a distance icon pack + ่ท้›ขใ‚ขใ‚คใ‚ณใƒณใƒ‘ใƒƒใ‚ฏใ‚’้ธๆŠž + + + Select an icon pack to delete + ๅ‰Š้™คใ™ใ‚‹ใ‚ขใ‚คใ‚ณใƒณใƒ‘ใƒƒใ‚ฏใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ + + + Delete the "%1" icon pack? + ใ€Œ%1ใ€ใ‚ขใ‚คใ‚ณใƒณใƒ‘ใƒƒใ‚ฏใ‚’ๅ‰Š้™คใ—ใพใ™ใ‹๏ผŸ + + + Select an icon pack to download + ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ™ใ‚‹ใ‚ขใ‚คใ‚ณใƒณใƒ‘ใƒƒใ‚ฏใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ + + + Select an icon pack + ใ‚ขใ‚คใ‚ณใƒณใƒ‘ใƒƒใ‚ฏใ‚’้ธๆŠž + + + Select a signal animation to delete + ๅ‰Š้™คใ™ใ‚‹ไฟกๅทใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ + + + Delete the "%1" signal animation? + ใ€Œ%1ใ€ไฟกๅทใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ‚’ๅ‰Š้™คใ—ใพใ™ใ‹๏ผŸ + + + Select a signal animation to download + ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ™ใ‚‹ไฟกๅทใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ + + + Select a signal animation + ไฟกๅทใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ‚’้ธๆŠž + + + Select a sound pack to delete + ๅ‰Š้™คใ™ใ‚‹ใ‚ตใ‚ฆใƒณใƒ‰ใƒ‘ใƒƒใ‚ฏใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ + + + Delete the "%1" sound pack? + ใ€Œ%1ใ€ใ‚ตใ‚ฆใƒณใƒ‰ใƒ‘ใƒƒใ‚ฏใ‚’ๅ‰Š้™คใ—ใพใ™ใ‹๏ผŸ + + + Select a sound pack to download + ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ™ใ‚‹ใ‚ตใ‚ฆใƒณใƒ‰ใƒ‘ใƒƒใ‚ฏใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ + + + Select a sound pack + ใ‚ตใ‚ฆใƒณใƒ‰ใƒ‘ใƒƒใ‚ฏใ‚’้ธๆŠž + + + Select a steering wheel to delete + ๅ‰Š้™คใ™ใ‚‹ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ + + + Delete the "%1" steering wheel? + ใ€Œ%1ใ€ใฎใƒใƒณใƒ‰ใƒซใ‚’ๅ‰Š้™คใ—ใพใ™ใ‹๏ผŸ + + + Select a steering wheel to download + ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ™ใ‚‹ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ + + + Select a steering wheel + ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ + + + STOCK + ๅœจๅบซ + + + FROGPILOT + FROGPILOT + + + CUSTOM + ใ‚ซใ‚นใ‚ฟใƒ  + + + CLEAR + ใ‚ฏใƒชใ‚ข + + + Enter the text for the top half + ไธŠๅŠๅˆ†ใฎใƒ†ใ‚ญใ‚นใƒˆใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„ + + + Characters: 0/%1 + ๆ–‡ๅญ—ๆ•ฐ: 0/%1 + + + Enter the text for the bottom half + ไธ‹ๅŠๅˆ†ใฎใƒ†ใ‚ญใ‚นใƒˆใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„ + + + Are you sure you want to completely reset your startup message? + ่ตทๅ‹•ใƒกใƒƒใ‚ปใƒผใ‚ธใ‚’ๅฎŒๅ…จใซใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + + + "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! + ใ€Œใƒฉใƒณใƒ€ใƒ ใƒ†ใƒผใƒžใ€ใฏใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ๆธˆใฟใฎใƒ†ใƒผใƒžใงใฎใฟๆฉŸ่ƒฝใ—ใพใ™ใ€‚ไฝฟ็”จใ—ใŸใ„ใƒ†ใƒผใƒžใ‚’ๅฟ…ใšใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใฆใใ ใ•ใ„ใ€‚ + + + CANCEL + ใ‚ญใƒฃใƒณใ‚ปใƒซ FrogPilotUtilitiesPanel Debug Mode - ใƒ‡ใƒใƒƒใ‚ฐใƒขใƒผใƒ‰ + ใƒ‡ใƒใƒƒใ‚ฐใƒขใƒผใƒ‰ - Debug FrogPilot during the next drive by utilizing all of FrogPilot's developer metrics for either bug reporting, or self-debugging. - ๆฌกใฎใƒ‰ใƒฉใ‚คใƒ–ไธญใซFrogPilotใฎใ™ในใฆใฎ้–‹็™บ่€…ใƒกใƒˆใƒชใ‚ฏใ‚นใ‚’ๅˆฉ็”จใ—ใฆใ€ใƒใ‚ฐๅ ฑๅ‘ŠใพใŸใฏ่‡ชๅทฑใƒ‡ใƒใƒƒใ‚ฐใฎใŸใ‚ใซFrogPilotใ‚’ใƒ‡ใƒใƒƒใ‚ฐใ—ใพใ™ใ€‚ + <b>Use FrogPilot's developer metrics on your next drive</b> to diagnose issues and improve bug reports. + <b>ๆฌกๅ›žใฎ่ตฐ่กŒใงFrogPilotใฎ้–‹็™บ่€…ๅ‘ใ‘ใƒกใƒˆใƒชใ‚ฏใ‚นใ‚’ไฝฟ็”จ</b>ใ—ใฆใ€ๅ•้กŒใ‚’่จบๆ–ญใ—ใ€ใƒใ‚ฐๅ ฑๅ‘Šใ‚’ๆ”นๅ–„ใ—ใฆใใ ใ•ใ„ใ€‚ Flash Panda - ใƒ•ใƒฉใƒƒใ‚ทใƒฅใƒ‘ใƒณใƒ€ + Pandaใ‚’ใƒ•ใƒฉใƒƒใ‚ทใƒฅ FLASH - ใƒ•ใƒฉใƒƒใ‚ทใƒฅ + ใƒ•ใƒฉใƒƒใ‚ทใƒฅ - Flash the Panda's firmware. Use if you're running into issues with the Panda. - ใƒ‘ใƒณใƒ€ใฎใƒ•ใ‚กใƒผใƒ ใ‚ฆใ‚งใ‚ขใ‚’ใƒ•ใƒฉใƒƒใ‚ทใƒฅใ—ใฆใใ ใ•ใ„ใ€‚ใƒ‘ใƒณใƒ€ใซๅ•้กŒใŒใ‚ใ‚‹ๅ ดๅˆใซไฝฟ็”จใ—ใฆใใ ใ•ใ„ใ€‚ + <b>Reinstall the Panda firmware</b> to fix connection or reliability issues. + <b>ๆŽฅ็ถšใ‚„ไฟก้ ผๆ€งใฎๅ•้กŒใ‚’่งฃๆฑบใ™ใ‚‹ใซใฏใ€Panda ใฎใƒ•ใ‚กใƒผใƒ ใ‚ฆใ‚งใ‚ขใ‚’ๅ†ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ—ใฆใใ ใ•ใ„</b> - Are you sure you want to flash the Panda? - ใƒ‘ใƒณใƒ€ใ‚’ใƒ•ใƒฉใƒƒใ‚ทใƒฅใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + Are you sure you want to flash the Panda firmware? + Pandaใฎใƒ•ใ‚กใƒผใƒ ใ‚ฆใ‚งใ‚ขใ‚’ๆœฌๅฝ“ใซใƒ•ใƒฉใƒƒใ‚ทใƒฅใ—ใพใ™ใ‹๏ผŸ Flash - ใƒ•ใƒฉใƒƒใ‚ทใƒฅ + ใƒ•ใƒฉใƒƒใ‚ทใƒฅ Flashing... - ็‚นๆป…ไธญ... + ใƒ•ใƒฉใƒƒใ‚ทใƒฅไธญโ€ฆ Flashed! - ใƒ•ใƒฉใƒƒใ‚ทใƒฅใ•ใ‚ŒใŸ๏ผ + ใƒ•ใƒฉใƒƒใ‚ทใƒฅๅฎŒไบ†๏ผ Rebooting... - ๅ†่ตทๅ‹•ไธญ... + ๅ†่ตทๅ‹•ใ—ใฆใ„ใพใ™โ€ฆ - Force Started State - ๅผทๅˆถ้–‹ๅง‹็Šถๆ…‹ + Force Drive State + ่ตฐ่กŒ็Šถๆ…‹ใ‚’ๅผทๅˆถ - Force openpilot either offroad or onroad. - ใ‚ชใƒผใƒ—ใƒณใƒ‘ใ‚คใƒญใƒƒใƒˆใ‚’ใ‚ชใƒ•ใƒญใƒผใƒ‰ใพใŸใฏใ‚ชใƒณใƒญใƒผใƒ‰ใซๅผทๅˆถใ™ใ‚‹ใ€‚ + <b>Manually set openpilot to be offroad or onroad.</b> + <b>openpilotใ‚’ๆ‰‹ๅ‹•ใงใ‚ชใƒ•ใƒญใƒผใƒ‰ใพใŸใฏใ‚ชใƒณใƒญใƒผใƒ‰ใซ่จญๅฎšใ—ใพใ™ใ€‚</b> OFFROAD - ใ‚ชใƒ•ใƒญใƒผใƒ‰ + ใ‚ชใƒ•ใƒญใƒผใƒ‰ ONROAD - ONROAD + ่ตฐ่กŒไธญ OFF - ใ‚ชใƒ• + ใ‚ชใƒ• Report a Bug or an Issue - ใƒใ‚ฐใพใŸใฏๅ•้กŒใ‚’ๅ ฑๅ‘Šใ™ใ‚‹ + ใƒใ‚ฐใ‚„ๅ•้กŒใ‚’ๅ ฑๅ‘Šใ™ใ‚‹ REPORT - ๅ ฑๅ‘Šๆ›ธ + ๅ ฑๅ‘Š - Let FrogsGoMoo know about an issue you're facing! - FrogsGoMooใซ็›ด้ขใ—ใฆใ„ใ‚‹ๅ•้กŒใ‚’็Ÿฅใ‚‰ใ›ใฆใใ ใ•ใ„๏ผ + <b>Send a bug report</b> so we can help fix the problem! + <b>ใƒใ‚ฐๅ ฑๅ‘Šใ‚’้€ไฟก</b>ใ—ใฆๅ•้กŒใฎไฟฎๆญฃใ‚’ๆ”ฏๆดใ—ใฆใใ ใ•ใ„ใ€‚ + + + Please connect to the internet before sending a report! + ใƒฌใƒใƒผใƒˆใ‚’้€ไฟกใ™ใ‚‹ๅ‰ใซใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆใซๆŽฅ็ถšใ—ใฆใใ ใ•ใ„๏ผ I saw an alert that said "openpilot crashed" - ใ€ŒopenpilotใŒใ‚ฏใƒฉใƒƒใ‚ทใƒฅใ—ใพใ—ใŸใ€ใจใ„ใ†ใ‚ขใƒฉใƒผใƒˆใ‚’่ฆ‹ใพใ—ใŸใ€‚ + ใ€ŒopenpilotใŒใ‚ฏใƒฉใƒƒใ‚ทใƒฅใ—ใพใ—ใŸใ€ใจใ„ใ†่ญฆๅ‘Šใ‚’่ฆ‹ใพใ—ใŸ - What's going on? - ใฉใ†ใ—ใŸใฎ๏ผŸ + Acceleration feels harsh or jerky + ๅŠ ้€ŸใŒ่’ใ„ใพใŸใฏใ‚ฎใ‚ฏใ‚ทใƒฃใ‚ฏใ™ใ‚‹ - Please describe what's happening - ไฝ•ใŒ่ตทใ“ใฃใฆใ„ใ‚‹ใฎใ‹่ชฌๆ˜Žใ—ใฆใใ ใ•ใ„ใ€‚ - - - Send Report - ใƒฌใƒใƒผใƒˆใ‚’้€ไฟก - - - What's your Discord username? - ใ‚ใชใŸใฎDiscordใฎใƒฆใƒผใ‚ถใƒผๅใฏไฝ•ใงใ™ใ‹๏ผŸ - - - Your report has been submitted. Thanks for letting us know! - ใ‚ใชใŸใฎๅ ฑๅ‘Šๆ›ธใŒๆๅ‡บใ•ใ‚Œใพใ—ใŸใ€‚ใŠ็Ÿฅใ‚‰ใ›ใ„ใŸใ ใใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ™๏ผ - - - Reset Toggles to Default - ใƒˆใ‚ฐใƒซใ‚’ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใซใƒชใ‚ปใƒƒใƒˆ - - - RESET - ใƒชใ‚ปใƒƒใƒˆ - - - Reset all toggles to their default values. - ใ™ในใฆใฎใƒˆใ‚ฐใƒซใ‚’ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆๅ€คใซใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ€‚ - - - Are you sure you want to reset all toggles to their default values? - ใ™ในใฆใฎใƒˆใ‚ฐใƒซใ‚’ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆๅ€คใซใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Reset - ใƒชใ‚ปใƒƒใƒˆ - - - Resetting... - ใƒชใ‚ปใƒƒใƒˆไธญ... - - - Reset! - ใƒชใ‚ปใƒƒใƒˆ๏ผ - - - Reset Toggles to Match Stock openpilot - ใƒˆใ‚ฐใƒซใ‚’ใƒชใ‚ปใƒƒใƒˆใ—ใฆใ€ใ‚นใƒˆใƒƒใ‚ฏใฎopenpilotใซๅˆใ‚ใ›ใ‚‹ - - - Reset all toggles to match stock openpilot. - ใ™ในใฆใฎใƒˆใ‚ฐใƒซใ‚’ใƒชใ‚ปใƒƒใƒˆใ—ใฆใ€ๆจ™ๆบ–ใฎopenpilotใซๅˆใ‚ใ›ใ‚‹ใ€‚ - - - Are you sure you want to reset all toggles to match stock openpilot? - ใ™ในใฆใฎใƒˆใ‚ฐใƒซใ‚’ใƒชใ‚ปใƒƒใƒˆใ—ใฆใ€ๆจ™ๆบ–ใฎopenpilotใซๅˆใ‚ใ›ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ - - - Ensure your device has an internet connection before sending a report! - ใƒฌใƒใƒผใƒˆใ‚’้€ไฟกใ™ใ‚‹ๅ‰ใซใ€ใƒ‡ใƒใ‚คใ‚นใŒใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆใซๆŽฅ็ถšใ•ใ‚Œใฆใ„ใ‚‹ใ“ใจใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„๏ผ - - - Acceleration feels too harsh or jerky - ๅŠ ้€ŸใŒๅผทใ™ใŽใ‚‹ใ‹ใ€ใŽใใ—ใ‚ƒใใ—ใฆใ„ใ‚‹ๆ„Ÿใ˜ใŒใ™ใ‚‹ - - - An alert confused me and I didnโ€™t know what it meant - ใ‚ขใƒฉใƒผใƒˆใซๆททไนฑใ—ใฆใ€ใใฎๆ„ๅ‘ณใŒใ‚ใ‹ใ‚Šใพใ›ใ‚“ใงใ—ใŸใ€‚ + An alert was unclear and I didn't know what it meant + ใ‚ขใƒฉใƒผใƒˆใŒไธๆ˜Ž็ขบใงใ€ๆ„ๅ‘ณใŒๅˆ†ใ‹ใ‚Šใพใ›ใ‚“ใงใ—ใŸ Braking is too sudden or uncomfortable - ใƒ–ใƒฌใƒผใ‚ญใŒๆ€ฅใ™ใŽใ‚‹ใ‹ใ€ไธๅฟซใงใ™ใ€‚ + ใƒ–ใƒฌใƒผใ‚ญใŒๆ€ฅใ™ใŽใ‚‹ใ€ใพใŸใฏไธๅฟซใงใ™ - Iโ€™m not sure if this is normal or a bug: - ใ“ใ‚ŒใŒๆญฃๅธธใชใฎใ‹ใƒใ‚ฐใชใฎใ‹ๅˆ†ใ‹ใ‚Šใพใ›ใ‚“ใŒใ€ + I'm not sure if this is normal or a bug: + ใ“ใ‚Œใฏๆญฃๅธธใชใฎใ‹ใƒใ‚ฐใชใฎใ‹ๅˆ†ใ‹ใ‚Šใพใ›ใ‚“ใ€‚ - Lane changes donโ€™t work properly or feel unsafe - ่ปŠ็ทšๅค‰ๆ›ดใŒๆญฃใ—ใๆฉŸ่ƒฝใ—ใชใ„ใ€ใพใŸใฏๅฎ‰ๅ…จใงใชใ„ใจๆ„Ÿใ˜ใ‚‹ + My screen froze or is stuck loading something + ็”ป้ขใŒใƒ•ใƒชใƒผใ‚บใ—ใŸใ€ใพใŸใฏ่ชญใฟ่พผใฟไธญใฎใพใพใงใ™ - My screen froze or got stuck on loading - ็”ป้ขใŒใƒ•ใƒชใƒผใ‚บใ—ใŸใ‹ใ€่ชญใฟ่พผใฟไธญใงๆญขใพใฃใฆใ—ใพใ„ใพใ—ใŸใ€‚ - - - My steering wheel buttons arenโ€™t working - ็งใฎใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใฎใƒœใ‚ฟใƒณใŒๅ‹•ไฝœใ—ใพใ›ใ‚“ใ€‚ + My steering wheel buttons aren't working + ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใฎใƒœใ‚ฟใƒณใŒๅๅฟœใ—ใพใ›ใ‚“ openpilot disengages when I don't expect it - openpilotใฏไบˆๆœŸใ—ใชใ„ใจใใซ่งฃ้™คใ•ใ‚Œใพใ™ใ€‚ - - - openpilot doesnโ€™t resume after I stop - openpilotใฏๅœๆญขๅพŒใซๅ†้–‹ใ—ใพใ›ใ‚“ + ไบˆๆœŸใ—ใชใ„ใจใใซopenpilotใŒ่งฃ้™คใ•ใ‚Œใ‚‹ openpilot doesn't react to stopped vehicles ahead - openpilotใฏๅ‰ๆ–นใฎๅœๆญข่ปŠไธกใซๅๅฟœใ—ใพใ›ใ‚“ + openpilotใฏๅ‰ๆ–นใฎๅœๆญข่ปŠไธกใซๅๅฟœใ—ใพใ›ใ‚“ + + + openpilot doesn't resume from a stop + openpilot ใฏๅœๆญขใ‹ใ‚‰ๅ†็™บ้€ฒใ—ใพใ›ใ‚“ openpilot feels sluggish or slow to respond - openpilotใŒ้ˆใๆ„Ÿใ˜ใ‚‹ใ€ใพใŸใฏๅๅฟœใŒ้…ใ„ + openpilotใฎๅๅฟœใŒ้ˆใ„ใ€ใพใŸใฏ้…ใๆ„Ÿใ˜ใ‚‹ Steering feels twitchy or unnatural - ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใŒๆ•ๆ„ŸใพใŸใฏไธ่‡ช็„ถใซๆ„Ÿใ˜ใ‚‹ + ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใŒๆ•ๆ„Ÿใ™ใŽใ‚‹ใ€ใพใŸใฏไธ่‡ช็„ถใซๆ„Ÿใ˜ใ‚‹ - The car doesnโ€™t follow curves well - ใใฎ่ปŠใฏใ‚ซใƒผใƒ–ใ‚’ใ†ใพใๆ›ฒใŒใ‚‰ใชใ„ + The car doesn't follow curves well + ใ“ใฎ่ปŠใฏใ‚ซใƒผใƒ–ใ‚’ใ†ใพใ่ฟฝๅพ“ใ—ใพใ›ใ‚“ - The car isnโ€™t staying centered in its lane - ่ปŠใŒ่ปŠ็ทšใฎไธญๅคฎใซ็•™ใพใฃใฆใ„ใชใ„ - - - The speed or display info looks wrong - ้€ŸๅบฆใพใŸใฏ่กจ็คบๆƒ…ๅ ฑใŒ้–“้•ใฃใฆใ„ใ‚‹ใ‚ˆใ†ใงใ™ใ€‚ + The car isn't staying centered in its lane + ่ปŠใŒ่ปŠ็ทšใฎไธญๅคฎใซ็ถญๆŒใ•ใ‚Œใฆใ„ใพใ›ใ‚“ Something else (please describe) - ใใฎไป–๏ผˆ่ชฌๆ˜Žใ—ใฆใใ ใ•ใ„๏ผ‰ + ใใฎไป–๏ผˆ่ชฌๆ˜Žใ—ใฆใใ ใ•ใ„๏ผ‰ + + + What's going on? + ไฝ•ใŒ่ตทใใฆใ„ใ‚‹ใฎ๏ผŸ + + + Please describe what's happening + ไฝ•ใŒ่ตทใใฆใ„ใ‚‹ใ‹่ชฌๆ˜Žใ—ใฆใใ ใ•ใ„ + + + Send Report + ใƒฌใƒใƒผใƒˆใ‚’้€ไฟก + + + What's your Discord username? + ใ‚ใชใŸใฎDiscordใฎใƒฆใƒผใ‚ถใƒผๅใฏไฝ•ใงใ™ใ‹๏ผŸ + + + Report Sent! Thanks for letting us know! + ๅ ฑๅ‘Šใ‚’้€ไฟกใ—ใพใ—ใŸใ€‚ใŠ็Ÿฅใ‚‰ใ›ใ„ใŸใ ใใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ™ใ€‚ + + + Reset Toggles to Default + ใƒˆใ‚ฐใƒซใ‚’ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใซใƒชใ‚ปใƒƒใƒˆ + + + RESET + ใƒชใ‚ปใƒƒใƒˆ + + + <b>Reset all toggles to their default values.</b> + <b>ใ™ในใฆใฎใƒˆใ‚ฐใƒซใ‚’ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆๅ€คใซใƒชใ‚ปใƒƒใƒˆใ—ใพใ™ใ€‚</b> + + + Are you sure you want to reset all toggles to their default values? + ใ™ในใฆใฎใƒˆใ‚ฐใƒซใ‚’ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆๅ€คใซใƒชใ‚ปใƒƒใƒˆใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + + + Reset + ใƒชใ‚ปใƒƒใƒˆ + + + Resetting... + ใƒชใ‚ปใƒƒใƒˆไธญ... + + + Reset! + ใƒชใ‚ปใƒƒใƒˆ๏ผ + + + Reset Toggles to Stock openpilot + ใƒˆใ‚ฐใƒซใ‚’ๆจ™ๆบ–ใฎopenpilot่จญๅฎšใซใƒชใ‚ปใƒƒใƒˆ + + + <b>Reset all toggles to match stock openpilot.</b> + <b>ใ™ในใฆใฎใƒˆใ‚ฐใƒซใ‚’ใƒชใ‚ปใƒƒใƒˆใ—ใฆๆจ™ๆบ–ใฎopenpilotใซๅˆใ‚ใ›ใพใ™ใ€‚</b> + + + Are you sure you want to reset all toggles to match stock openpilot? + ใ™ในใฆใฎใƒˆใ‚ฐใƒซใ‚’ใƒชใ‚ปใƒƒใƒˆใ—ใฆใ€ๆจ™ๆบ–ใฎopenpilotใซๅˆใ‚ใ›ใพใ™ใ‹๏ผŸ FrogPilotVehiclesPanel - Select Make - ใƒกใƒผใ‚ซใƒผใ‚’้ธๆŠž + Car Make + ่ปŠ็จฎ SELECT - SELECT + ้ธๆŠž - Select a Make - ใƒกใƒผใ‚ซใƒผใ‚’้ธๆŠž + Choose your car make + ่ปŠใฎใƒกใƒผใ‚ซใƒผใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ - Select Model - ใƒขใƒ‡ใƒซใ‚’้ธๆŠž + Car Model + ่ปŠ็จฎ - Select a Model - ใƒขใƒ‡ใƒซใ‚’้ธๆŠž + Choose your car model + ่ปŠ็จฎใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ Disable Automatic Fingerprint Detection - ่‡ชๅ‹•ๆŒ‡็ด‹ๆคœๅ‡บใ‚’็„กๅŠนใซใ™ใ‚‹ + ่‡ชๅ‹•ใƒ•ใ‚ฃใƒณใ‚ฌใƒผใƒ—ใƒชใƒณใƒˆๆคœๅ‡บใ‚’็„กๅŠนๅŒ– - Forces the selected fingerprint and prevents it from ever changing. - ้ธๆŠžใ•ใ‚ŒใŸใƒ•ใ‚ฃใƒณใ‚ฌใƒผใƒ—ใƒชใƒณใƒˆใ‚’ๅผทๅˆถใ—ใ€ๅค‰ๆ›ดใ•ใ‚Œใชใ„ใ‚ˆใ†ใซใ—ใพใ™ใ€‚ + <b>Force the selected fingerprint</b> and prevent it from ever changing. + <b>้ธๆŠžใ—ใŸใƒ•ใ‚ฃใƒณใ‚ฌใƒผใƒ—ใƒชใƒณใƒˆใ‚’ๅผทๅˆถ้ฉ็”จ</b>ใ—ใ€ไปŠๅพŒไธ€ๅˆ‡ๅค‰ๆ›ดใ•ใ‚Œใชใ„ใ‚ˆใ†ใซใ—ใพใ™ใ€‚ Disable openpilot Longitudinal Control - openpilotใฎ็ธฆๅˆถๅพกใ‚’็„กๅŠนใซใ™ใ‚‹ + openpilotใฎ็ธฆๅˆถๅพกใ‚’็„กๅŠนๅŒ– - Disables openpilot longitudinal control and uses the car's stock ACC instead. - openpilotใฎ็ธฆๅˆถๅพกใ‚’็„กๅŠนใซใ—ใ€ไปฃใ‚ใ‚Šใซ่ปŠใฎ็ด”ๆญฃACCใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚ + <b>Disable openpilot longitudinal</b> and use the car's stock ACC instead. + <b>openpilotใฎ็ธฆๆ–นๅ‘ๅˆถๅพกใ‚’็„กๅŠนๅŒ–</b>ใ—ใ€่ปŠไธกใฎ็ด”ๆญฃACCใ‚’ไฝฟ็”จใ—ใฆใใ ใ•ใ„ใ€‚ Are you sure you want to completely disable openpilot longitudinal control? - openpilotใฎ็ธฆๅˆถๅพกใ‚’ๅฎŒๅ…จใซ็„กๅŠนใซใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ + openpilotใฎ็ธฆๆ–นๅ‘ๅˆถๅพกใ‚’ๅฎŒๅ…จใซ็„กๅŠนใซใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ General Motors Settings - ใ‚ผใƒใƒฉใƒซใƒขใƒผใ‚ฟใƒผใ‚บ่จญๅฎš + General Motors ใฎ่จญๅฎš - Settings specific to <b>General Motors</b> vehicles. - <b>General Motors</b>่ปŠไธกใซ็‰นๆœ‰ใฎ่จญๅฎšใ€‚ + <b>FrogPilot features for General Motors vehicles.</b> + <b>General Motors่ปŠๅ‘ใ‘ใฎFrogPilotๆฉŸ่ƒฝใ€‚</b> FrogsGoMoo's Experimental Tune - FrogsGoMooใฎๅฎŸ้จ“็š„ใชๆ›ฒ + FrogsGoMooใฎๅฎŸ้จ“็š„ใƒใƒฅใƒผใƒณ - <b>FrogsGoMoo's</b> experimental <b>General Motors</b> tune that aims to smoothen out stopping and takeoff control based on nothing but guesswork. Use at your own risk! - <b>FrogsGoMooใฎ</b>ๅฎŸ้จ“็š„ใช<b>General Motors</b>ใƒใƒฅใƒผใƒณใฏใ€ๆŽจๆธฌใฎใฟใซๅŸบใฅใ„ใฆๅœๆญขใจ็™บ้€ฒใฎๅˆถๅพกใ‚’ใ‚นใƒ ใƒผใ‚บใซใ™ใ‚‹ใ“ใจใ‚’็›ฎ็š„ใจใ—ใฆใ„ใพใ™ใ€‚่‡ชๅทฑ่ฒฌไปปใงใ”ไฝฟ็”จใใ ใ•ใ„๏ผ + <b>Experimental GM tune by FrogsGoMoo</b> that attempts to smoothen stopping and takeoff control. Use at your own risk! + <b>FrogsGoMoo ใซใ‚ˆใ‚‹ๅฎŸ้จ“็š„ใช GM ใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐ</b> ใงใ€ๅœๆญขใ‚„็™บ้€ฒใฎๅˆถๅพกใ‚’ๆป‘ใ‚‰ใ‹ใซใ™ใ‚‹ใ“ใจใ‚’่ฉฆใฟใฆใ„ใพใ™ใ€‚ไฝฟ็”จใฏ่‡ชๅทฑ่ฒฌไปปใง๏ผ Smooth Pedal Response on Hills - ไธ˜ใงใฎใ‚นใƒ ใƒผใ‚บใชใƒšใƒ€ใƒซๅฟœ็ญ” + ๅ‚้“ใงใฎใ‚นใƒ ใƒผใ‚บใชใƒšใƒ€ใƒซๅฟœ็ญ” - Smoothen the acceleration and braking when driving uphill or downhill. - ไธŠใ‚Šๅ‚ใ‚„ไธ‹ใ‚Šๅ‚ใงใฎๅŠ ้€Ÿใจใƒ–ใƒฌใƒผใ‚ญใ‚’ใ‚นใƒ ใƒผใ‚บใซใ™ใ‚‹ใ€‚ + <b>Smoothen acceleration and braking</b> when driving downhill/uphill. + <b>ไธ‹ใ‚Šๅ‚ใ‚„ไธŠใ‚Šๅ‚ใงใฎๅŠ ๆธ›้€Ÿใ‚’ๆป‘ใ‚‰ใ‹ใซ</b>ใ—ใฆใใ ใ•ใ„ใ€‚</b - Stop and Go Hack - ใ‚นใƒˆใƒƒใƒ—ใƒปใ‚ขใƒณใƒ‰ใƒปใ‚ดใƒผใƒปใƒใƒƒใ‚ฏ + Stop-and-Go Hack + ใ‚นใƒˆใƒƒใƒ—ใƒปใ‚ขใƒณใƒ‰ใƒปใ‚ดใƒผใƒปใƒใƒƒใ‚ฏ - Force stop and go on the <b>2017 Chevy Volt</b>. - <b>2017ๅนดใ‚ทใƒœใƒฌใƒผใƒปใƒœใƒซใƒˆ</b>ใฎๅผทๅˆถๅœๆญขใจๅ†ๅง‹ๅ‹•ใ€‚ + <b>Force stop-and-go</b> on the 2017 Chevy Volt. + 2017ๅนดๅผใ‚ทใƒœใƒฌใƒผใƒปใƒœใƒซใƒˆใง<b>ใ‚นใƒˆใƒƒใƒ—ใ‚ขใƒณใƒ‰ใ‚ดใƒผใ‚’ๅผทๅˆถ</b>ใ—ใพใ™ใ€‚ Hyundai/Kia/Genesis Settings - ใƒ’ใƒฅใƒณใƒ€ใ‚ค/ใ‚ญใ‚ข/ใ‚ธใ‚งใƒใ‚ทใ‚น่จญๅฎš + Hyundai/Kia/Genesis ่จญๅฎš - Settings specific to <b>Hyundai</b>, <b>Kia</b>, and <b>Genesis</b> vehicles. - <b>ใƒ’ใƒฅใƒณใƒ€ใ‚ค</b>ใ€<b>ใ‚ญใ‚ข</b>ใ€<b>ใ‚ธใ‚งใƒใ‚ทใ‚น</b>่ปŠไธกใซ็‰นๆœ‰ใฎ่จญๅฎšใ€‚ + <b>FrogPilot features for Genesis, Hyundai, and Kia vehicles.</b> + <b>Genesisใ€Hyundaiใ€Kia ่ปŠไธกๅ‘ใ‘ใฎ FrogPilot ๆฉŸ่ƒฝใ€‚</b> comma's New Longitudinal API - commaใฎๆ–ฐใ—ใ„Longitudinal API + comma ใฎๆ–ฐใ—ใ„ใƒญใƒณใ‚ฐitudinal API - comma's new longitudinal control system that has shown great improvement with acceleration and braking, but has issues on some <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> vehicles. - commaใฎๆ–ฐใ—ใ„็ธฆๅˆถๅพกใ‚ทใ‚นใƒ†ใƒ ใฏใ€ๅŠ ้€Ÿใจใƒ–ใƒฌใƒผใ‚ญใงๅคงใใชๆ”นๅ–„ใ‚’็คบใ—ใฆใ„ใพใ™ใŒใ€ไธ€้ƒจใฎ<b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b>่ปŠไธกใงๅ•้กŒใŒใ‚ใ‚Šใพใ™ใ€‚ + <b>comma's new gas and brake control system</b> that improves acceleration and braking but may cause issues on some Genesis/Hyundai/Kia vehicles. + <b>comma ใฎๆ–ฐใ—ใ„ใ‚ฌใ‚นใƒปใƒ–ใƒฌใƒผใ‚ญๅˆถๅพกใ‚ทใ‚นใƒ†ใƒ </b>ใงใ€ๅŠ ้€Ÿใจๅˆถๅ‹•ใ‚’ๆ”นๅ–„ใ—ใพใ™ใŒใ€ไธ€้ƒจใฎ Genesis/Hyundai/Kia ่ปŠไธกใงๅ•้กŒใ‚’ๅผ•ใ่ตทใ“ใ™ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ "Taco Bell Run" Torque Hack - ใ€Œใ‚ฟใ‚ณใƒ™ใƒซใƒฉใƒณใ€ใƒˆใƒซใ‚ฏใƒใƒƒใ‚ฏ + ใ€ŒTaco Bell Runใ€ใƒˆใƒซใ‚ฏใƒใƒƒใ‚ฏ - The torque hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to improve turning at low speeds by increasing the allowed steering torque. - ใ‚ซใƒณใƒžใฎ2022ๅนดใ€Œใ‚ฟใ‚ณใƒ™ใƒซใƒฉใƒณใ€ใƒ‰ใƒฉใ‚คใƒ–ใ‹ใ‚‰ใฎใƒˆใƒซใ‚ฏใƒใƒƒใ‚ฏใ€‚่จฑๅฎนใ•ใ‚Œใ‚‹ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒˆใƒซใ‚ฏใ‚’ๅข—ใ‚„ใ™ใ“ใจใงไฝŽ้€Ÿใงใฎๆ—‹ๅ›žใ‚’ๆ”นๅ–„ใ™ใ‚‹ใ‚ˆใ†ใซ่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใ€‚ + <b>The steering torque hack from comma's 2022 "Taco Bell Run".</b> Designed to increase steering torque at low speeds for left and right turns. + <b>commaใฎ2022ๅนดใ€ŒTaco Bell Runใ€ใซ็”ฑๆฅใ™ใ‚‹ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒˆใƒซใ‚ฏใƒใƒƒใ‚ฏใ€‚</b> ไฝŽ้€Ÿๆ™‚ใฎๅทฆๅณๆ—‹ๅ›žใงใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒˆใƒซใ‚ฏใ‚’ๅข—ๅŠ ใ•ใ›ใ‚‹ใ‚ˆใ†่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใ€‚ Toyota/Lexus Settings - ใƒˆใƒจใ‚ฟ/ใƒฌใ‚ฏใ‚ตใ‚น่จญๅฎš + Toyota/Lexus ่จญๅฎš - Settings specific to <b>Toyota</b> and <b>Lexus</b> vehicles. - <b>ใƒˆใƒจใ‚ฟ</b>ใŠใ‚ˆใณ<b>ใƒฌใ‚ฏใ‚ตใ‚น</b>่ปŠไธกใซ็‰นๆœ‰ใฎ่จญๅฎšใ€‚ + <b>FrogPilot features for Lexus and Toyota vehicles.</b> + <b>ใƒฌใ‚ฏใ‚ตใ‚นใŠใ‚ˆใณใƒˆใƒจใ‚ฟ่ปŠๅ‘ใ‘ใฎFrogPilotๆฉŸ่ƒฝใ€‚</b> Automatically Lock/Unlock Doors - ่‡ชๅ‹•ใงใƒ‰ใ‚ขใ‚’ใƒญใƒƒใ‚ฏ/ใ‚ขใƒณใƒญใƒƒใ‚ฏ + ใƒ‰ใ‚ขใฎ่‡ชๅ‹•ใƒญใƒƒใ‚ฏ/ใ‚ขใƒณใƒญใƒƒใ‚ฏ - Automatically lock the doors when shifting into drive and unlock them when shifting into park. - ใƒ‰ใƒฉใ‚คใƒ–ใซใ‚ทใƒ•ใƒˆใ™ใ‚‹ใจใใซ่‡ชๅ‹•็š„ใซใƒ‰ใ‚ขใ‚’ใƒญใƒƒใ‚ฏใ—ใ€ใƒ‘ใƒผใ‚ฏใซใ‚ทใƒ•ใƒˆใ™ใ‚‹ใจใใซใƒญใƒƒใ‚ฏใ‚’่งฃ้™คใ—ใพใ™ใ€‚ + <b>Automatically lock/unlock doors</b> when shifting in and out of drive. + <b>ใ‚ทใƒ•ใƒˆใงใƒ‰ใƒฉใ‚คใƒ–ใซๅ…ฅใ‚Œใ‚‹/ๆŠœใใจใใซ่‡ชๅ‹•ใงใƒ‰ใ‚ขใ‚’ๆ–ฝ้Œ /่งฃ้Œ </b> - Cluster Speed Offset - ใ‚ฏใƒฉใ‚นใ‚ฟใƒผใ‚นใƒ”ใƒผใƒ‰ใ‚ชใƒ•ใ‚ปใƒƒใƒˆ + Dashboard Speed Offset + ใƒ€ใƒƒใ‚ทใƒฅใƒœใƒผใƒ‰้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆ - The cluster speed offset used by openpilot to match the speed displayed on the dash. - openpilotใซใ‚ˆใฃใฆใƒ€ใƒƒใ‚ทใƒฅใซ่กจ็คบใ•ใ‚Œใ‚‹้€Ÿๅบฆใซๅˆใ‚ใ›ใ‚‹ใŸใ‚ใซไฝฟ็”จใ•ใ‚Œใ‚‹ใ‚ฏใƒฉใ‚นใ‚ฟใƒผใ‚นใƒ”ใƒผใƒ‰ใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ€‚ + <b>The speed offset openpilot uses to match the speed on the dashboard display.</b> + <b>ใƒ€ใƒƒใ‚ทใƒฅใƒœใƒผใƒ‰่กจ็คบใฎ้€Ÿๅบฆใซๅˆใ‚ใ›ใ‚‹ใŸใ‚ใซopenpilotใŒไฝฟ็”จใ™ใ‚‹้€Ÿๅบฆใ‚ชใƒ•ใ‚ปใƒƒใƒˆใ€‚</b> FrogsGoMoo's Personal Tweaks - FrogsGoMooใฎๅ€‹ไบบ็š„ใช่ชฟๆ•ด + FrogsGoMoo ใฎๅ€‹ไบบๅ‘ใ‘่ชฟๆ•ด - <b>FrogsGoMoo's</b> personal tweaks for quicker acceleration and smoother braking. - <b>FrogsGoMooใฎ</b>ๅ€‹ไบบ็š„ใช่ชฟๆ•ดใซใ‚ˆใ‚Šใ€ใ‚ˆใ‚Š่ฟ…้€ŸใชๅŠ ้€Ÿใจใ‚นใƒ ใƒผใ‚บใชใƒ–ใƒฌใƒผใ‚ญใ‚’ๅฎŸ็พใ€‚ + <b>Personal tweaks by FrogsGoMoo for quicker acceleration and smoother braking.</b> + <b>ใ‚ˆใ‚Š้€Ÿใ„ๅŠ ้€Ÿใจใ‚ˆใ‚Šใ‚นใƒ ใƒผใ‚บใชใƒ–ใƒฌใƒผใ‚ญใฎใŸใ‚ใฎใ€FrogsGoMoo ใซใ‚ˆใ‚‹ๅ€‹ไบบ็š„ใช่ชฟๆ•ดใ€‚</b> Lock Doors On Ignition Off After - ใ‚คใ‚ฐใƒ‹ใƒƒใ‚ทใƒงใƒณใ‚ชใƒ•ๅพŒใซใƒ‰ใ‚ขใ‚’ใƒญใƒƒใ‚ฏ + ใ‚คใ‚ฐใƒ‹ใ‚ทใƒงใƒณOFFๅพŒใซใƒ‰ใ‚ขใ‚’ๆ–ฝ้Œ  - Automatically lock the doors after the car's ignition has been turned off and no one is detected in either of the front seats. - ่ปŠใฎ็‚น็ซใŒใ‚ชใƒ•ใซใชใ‚Šใ€ๅ‰้ƒจๅบงๅธญใฎใฉใกใ‚‰ใซใ‚‚่ชฐใ‚‚ๆคœๅ‡บใ•ใ‚Œใชใ„ๅ ดๅˆใ€่‡ชๅ‹•็š„ใซใƒ‰ใ‚ขใ‚’ใƒญใƒƒใ‚ฏใ—ใพใ™ใ€‚ + <b>Automatically lock the doors on ignition off</b> when no one is detected in the front seats. + <b>ใ‚คใ‚ฐใƒ‹ใƒƒใ‚ทใƒงใƒณใ‚ชใƒ•ๆ™‚ใซใƒ‰ใ‚ขใ‚’่‡ชๅ‹•ใƒญใƒƒใ‚ฏ</b>๏ผšๅ‰ๅธญใซ่ชฐใ‚‚ๆคœ็Ÿฅใ•ใ‚Œใชใ„ๅ ดๅˆใ€‚ - Force stop and go on <b>Toyota</b>/<b>Lexus</b> vehicles without stock stop and go functionality. - <b>ใƒˆใƒจใ‚ฟ</b>/<b>ใƒฌใ‚ฏใ‚ตใ‚น</b>่ปŠไธกใงใ€ๆจ™ๆบ–ใฎใ‚นใƒˆใƒƒใƒ—๏ผ†ใ‚ดใƒผๆฉŸ่ƒฝใŒใชใ„ๅ ดๅˆใฎๅผทๅˆถๅœๆญขใจ้–‹ๅง‹ใ€‚ + <b>Force stop-and-go</b> on Lexus/Toyota vehicles without stock stop-and-go functionality. + <b>ๅœๆญขใƒป็™บ้€ฒใ‚’ๅผทๅˆถ</b> ็ด”ๆญฃใฎๅœๆญขใƒป็™บ้€ฒๆฉŸ่ƒฝใŒใชใ„Lexus/Toyota่ปŠไธกใงๆœ‰ๅŠนใซใ—ใพใ™ใ€‚ MANAGE - ็ฎก็†ใ™ใ‚‹ + ็ฎก็† Lock - ใƒญใƒƒใ‚ฏ + ใƒญใƒƒใ‚ฏ Unlock - ใƒญใƒƒใ‚ฏ่งฃ้™ค + ใƒญใƒƒใ‚ฏ่งฃ้™ค Never - ๆฑบใ—ใฆ + ๆฑบใ—ใฆ seconds - ็ง’ + ็ง’ + + + None + ใชใ— + + + Vehicle Info + ่ปŠไธกๆƒ…ๅ ฑ + + + <b>Information about your vehicle in regards to openpilot support and functionality.</b> + <b>openpilotใฎใ‚ตใƒใƒผใƒˆใŠใ‚ˆใณๆฉŸ่ƒฝใซ้–ขใ™ใ‚‹ใŠไฝฟใ„ใฎ่ปŠไธกใฎๆƒ…ๅ ฑใ€‚</b> + + + <b>Detected 3rd party hardware.</b> + <b>ใ‚ตใƒผใƒ‰ใƒ‘ใƒผใƒ†ใ‚ฃ่ฃฝใƒใƒผใƒ‰ใ‚ฆใ‚งใ‚ขใ‚’ๆคœๅ‡บใ—ใพใ—ใŸใ€‚</b> + + + openpilot Longitudinal Support + openpilot ็ธฆๆ–นๅ‘ใ‚ตใƒใƒผใƒˆ + + + <b>Can openpilot control the vehicle's acceleration and braking?</b> + <b>openpilotใฏ่ปŠไธกใฎๅŠ ้€Ÿใจๅˆถๅ‹•ใ‚’ๅˆถๅพกใงใใพใ™ใ‹๏ผŸ</b> + + + <b>Does your vehicle support the "comma pedal"?</b> + <b>ใ‚ใชใŸใฎ่ปŠไธกใฏใ€Œcomma pedalใ€ใ‚’ใ‚ตใƒใƒผใƒˆใ—ใฆใ„ใพใ™ใ‹๏ผŸ</b> + + + Radar Support + ใƒฌใƒผใƒ€ใƒผๅฏพๅฟœ + + + <b>Does openpilot use the vehicle's radar data</b> alongside the device's camera for tracking lead vehicles? + <b>openpilotใฏใ€ๅ…ˆ่กŒ่ปŠใฎ่ฟฝ่ทกใซใŠใ„ใฆใ€ใƒ‡ใƒใ‚คใ‚นใฎใ‚ซใƒกใƒฉใจไฝต็”จใ—ใฆ่ปŠไธกใฎใƒฌใƒผใƒ€ใƒผใƒ‡ใƒผใ‚ฟใ‚’ไฝฟ็”จใ—ใพใ™ใ‹</b> + + + SDSU Support + SDSU ใ‚ตใƒใƒผใƒˆ + + + <b>Does your vehicle support "SDSUs"?</b> + <b>ใ‚ใชใŸใฎ่ปŠไธกใฏใ€ŒSDSUsใ€ใ‚’ใ‚ตใƒใƒผใƒˆใ—ใฆใ„ใพใ™ใ‹๏ผŸ</b> + + + Stop-and-Go Support + ใ‚นใƒˆใƒƒใƒ—๏ผ†ใ‚ดใƒผๅฏพๅฟœ + + + <b>Does your vehicle support stop-and-go driving?</b> + <b>ใ‚ใชใŸใฎ่ปŠไธกใฏใ‚นใƒˆใƒƒใƒ—ใ‚ขใƒณใƒ‰ใ‚ดใƒผ่ตฐ่กŒใซๅฏพๅฟœใ—ใฆใ„ใพใ™ใ‹๏ผŸ</b> + + + VIEW + ่กจ็คบ + + + Yes + ใฏใ„ + + + No + ใ„ใ„ใˆ + + + 3rd Party Hardware Detected + ใ‚ตใƒผใƒ‰ใƒ‘ใƒผใƒ†ใ‚ฃ่ฃฝใƒใƒผใƒ‰ใ‚ฆใ‚งใ‚ขใ‚’ๆคœๅ‡บใ—ใพใ—ใŸ + + + Blind Spot Support + ใƒ–ใƒฉใ‚คใƒณใƒ‰ใ‚นใƒใƒƒใƒˆใ‚ตใƒใƒผใƒˆ + + + <b>Does openpilot use the vehicle's blind spot data?</b> + <b>openpilotใฏ่ปŠไธกใฎใƒ–ใƒฉใ‚คใƒณใƒ‰ใ‚นใƒใƒƒใƒˆใƒ‡ใƒผใ‚ฟใ‚’ไฝฟ็”จใ—ใพใ™ใ‹๏ผŸ</b> + + + comma Pedal Support + comma Pedal ๅฏพๅฟœ FrogPilotVisualsPanel Advanced UI Controls - ้ซ˜ๅบฆใชUIใ‚ณใƒณใƒˆใƒญใƒผใƒซ + ้ซ˜ๅบฆใชUIใ‚ณใƒณใƒˆใƒญใƒผใƒซ - Advanced settings for fine-tuning openpilot's driving screen. - openpilotใฎ้‹่ปข็”ป้ขใ‚’ๅพฎ่ชฟๆ•ดใ™ใ‚‹ใŸใ‚ใฎ่ฉณ็ดฐ่จญๅฎšใ€‚ + <b>Advanced visual changes</b> to fine-tune how the driving screen looks. + <b>้ซ˜ๅบฆใช่ฆ–่ฆš็š„ๅค‰ๆ›ด</b>ใงใ€่ตฐ่กŒ็”ป้ขใฎ่ฆ‹ใŸ็›ฎใ‚’ๅพฎ่ชฟๆ•ดใ—ใพใ™ใ€‚ Hide Current Speed - ็พๅœจใฎ้€Ÿๅบฆใ‚’้ž่กจ็คบ + ็พๅœจใฎ้€Ÿๅบฆใ‚’้ž่กจ็คบ - Hide the current speed from the driving screen. - ็พๅœจใฎ้€Ÿๅบฆใ‚’้‹่ปข็”ป้ขใ‹ใ‚‰้š ใ™ใ€‚ + <b>Hide the current speed</b> from the driving screen. + <b>็พๅœจใฎ้€Ÿๅบฆใ‚’้ž่กจ็คบ</b>ใซใ—ใฆ้‹่ปข็”ป้ขใ‹ใ‚‰้š ใ—ใพใ™ใ€‚ Hide Lead Marker - ใƒชใƒผใƒ‰ใƒžใƒผใ‚ซใƒผใ‚’้ž่กจ็คบ + ๅ…ˆ่กŒ่ปŠใƒžใƒผใ‚ซใƒผใ‚’้ž่กจ็คบ - Hide the marker for lead vehicles from the driving screen. - ้‹่ปข็”ป้ขใ‹ใ‚‰ๅ…ˆ่กŒ่ปŠไธกใฎใƒžใƒผใ‚ซใƒผใ‚’้ž่กจ็คบใซใ—ใพใ™ใ€‚ + <b>Hide the lead-vehicle marker</b> from the driving screen. + ้‹่ปข็”ป้ขใ‹ใ‚‰<b>ๅ…ˆ่กŒ่ปŠไธกใƒžใƒผใ‚ซใƒผใ‚’้ž่กจ็คบ</b>ใซใ™ใ‚‹ใ€‚ Hide Map Settings Button - ใƒžใƒƒใƒ—่จญๅฎšใƒœใ‚ฟใƒณใ‚’้ž่กจ็คบ + ใƒžใƒƒใƒ—่จญๅฎšใƒœใ‚ฟใƒณใ‚’้ž่กจ็คบ - Hide the map settings button from the driving screen. - ้‹่ปข็”ป้ขใ‹ใ‚‰ๅœฐๅ›ณ่จญๅฎšใƒœใ‚ฟใƒณใ‚’้ž่กจ็คบใซใ—ใพใ™ใ€‚ + <b>Hide the map settings button or map</b> from the driving screen. + ้‹่ปข็”ป้ขใ‹ใ‚‰<b>ๅœฐๅ›ณ่จญๅฎšใƒœใ‚ฟใƒณใพใŸใฏๅœฐๅ›ณใ‚’้ž่กจ็คบใซใ™ใ‚‹</b> Hide Max Speed - ๆœ€ๅคง้€Ÿๅบฆใ‚’้ž่กจ็คบ + ๆœ€้ซ˜้€Ÿๅบฆใ‚’้ž่กจ็คบ - Hide the max speed from the driving screen. - ้‹่ปข็”ป้ขใ‹ใ‚‰ๆœ€้ซ˜้€Ÿๅบฆใ‚’้ž่กจ็คบใซใ™ใ‚‹ใ€‚ + <b>Hide the max speed</b> from the driving screen. + ้‹่ปข็”ป้ขใ‹ใ‚‰<b>ๆœ€้ซ˜้€Ÿๅบฆใ‚’้ž่กจ็คบ</b>ใซใ™ใ‚‹ใ€‚ Hide Non-Critical Alerts - ้ž้‡่ฆใชใ‚ขใƒฉใƒผใƒˆใ‚’้ž่กจ็คบ + ้‡่ฆๅบฆใฎไฝŽใ„ใ‚ขใƒฉใƒผใƒˆใ‚’้ž่กจ็คบ - Hide non-critical alerts from the driving screen. - ้‹่ปข็”ป้ขใ‹ใ‚‰้‡่ฆใงใชใ„ใ‚ขใƒฉใƒผใƒˆใ‚’้ž่กจ็คบใซใ™ใ‚‹ใ€‚ + <b>Hide non-critical alerts</b> from the driving screen. + ้‹่ปข็”ป้ขใ‹ใ‚‰<b>้‡ๅคงใงใชใ„ใ‚ขใƒฉใƒผใƒˆใ‚’้ž่กจ็คบ</b>ใซใ—ใพใ™ใ€‚ Hide Speed Limits - ้€Ÿๅบฆๅˆถ้™ใ‚’้ž่กจ็คบ + ้€Ÿๅบฆๅˆถ้™ใ‚’้ž่กจ็คบ - Hide the speed limits from the driving screen. - ้‹่ปข็”ป้ขใ‹ใ‚‰้€Ÿๅบฆๅˆถ้™ใ‚’้ž่กจ็คบใซใ—ใพใ™ใ€‚ + <b>Hide posted speed limits</b> from the driving screen. + ้‹่ปข็”ป้ขใ‹ใ‚‰<b>ๆŽฒ็คบใ•ใ‚ŒใŸๅˆถ้™้€Ÿๅบฆใ‚’้ž่กจ็คบ</b>ใซใ—ใพใ™ใ€‚ Use Wheel Speed - ใƒ›ใ‚คใƒผใƒซ้€Ÿๅบฆใ‚’ไฝฟ็”จ + ใƒ›ใ‚คใƒผใƒซ้€Ÿๅบฆใ‚’ไฝฟ็”จ - Use the vehicle's wheel speed instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives. - ่ปŠไธกใฎใƒ›ใ‚คใƒผใƒซ้€Ÿๅบฆใ‚’ใ‚ฏใƒฉใ‚นใ‚ฟ้€Ÿๅบฆใฎไปฃใ‚ใ‚Šใซไฝฟ็”จใ—ใพใ™ใ€‚ใ“ใ‚Œใฏ็ด”็ฒ‹ใซ่ฆ–่ฆš็š„ใชๅค‰ๆ›ดใงใ‚ใ‚Šใ€openpilotใฎ้‹่ปขๆ–นๆณ•ใซใฏๅฝฑ้Ÿฟใ—ใพใ›ใ‚“ใ€‚ + <b>Use the vehicle's wheel speed</b> instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives! + <b>่ปŠไธกใฎใƒ›ใ‚คใƒผใƒซ้€Ÿๅบฆใ‚’ไฝฟ็”จ</b>ใ—ใ€ใƒกใƒผใ‚ฟใƒผใฎ้€Ÿๅบฆใฎไปฃใ‚ใ‚Šใซ่กจ็คบใ—ใพใ™ใ€‚ใ“ใ‚Œใฏ่ฆ‹ใŸ็›ฎใฎๅค‰ๆ›ดใฎใฟใงใ€openpilotใฎ่ตฐ่กŒใซใฏๅฝฑ้Ÿฟใ—ใพใ›ใ‚“ใ€‚ Developer UI - ้–‹็™บ่€…UI + ้–‹็™บ่€… UI - Detailed information about openpilot's internal operations. - openpilotใฎๅ†…้ƒจๆ“ไฝœใซ้–ขใ™ใ‚‹่ฉณ็ดฐๆƒ…ๅ ฑใ€‚ + <b>Detailed information about openpilot's internal operations.</b> + <b>openpilot ใฎๅ†…้ƒจๅ‹•ไฝœใซ้–ขใ™ใ‚‹่ฉณ็ดฐๆƒ…ๅ ฑใ€‚</b> Adjacent Path Metrics - ้šฃๆŽฅใƒ‘ใ‚นใƒกใƒˆใƒชใ‚ฏใ‚น + ้šฃๆŽฅใƒ‘ใ‚นใƒกใƒˆใƒชใ‚ฏใ‚น - Metrics displayed on top of the adjacent lanes measuring their current width. - ้šฃๆŽฅใ™ใ‚‹่ปŠ็ทšใฎไธŠใซ่กจ็คบใ•ใ‚Œใ‚‹ใƒกใƒˆใƒชใ‚ฏใ‚นใฏใ€็พๅœจใฎๅน…ใ‚’ๆธฌๅฎšใ—ใพใ™ใ€‚ + <b>Show the width of the adjacent lanes.</b> + <b>้šฃๆŽฅ่ปŠ็ทšใฎๅน…ใ‚’่กจ็คบใ—ใพใ™ใ€‚</b> Developer Metrics - ้–‹็™บ่€…ใƒกใƒˆใƒชใ‚ฏใ‚น + ้–‹็™บ่€…ใƒกใƒˆใƒชใ‚ฏใ‚น - Performance data, sensor readings, and system metrics for debugging and optimizing openpilot. - ใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใƒ‡ใƒผใ‚ฟใ€ใ‚ปใƒณใ‚ตใƒผใฎ่ชญใฟๅ–ใ‚Šๅ€คใ€ใŠใ‚ˆใณopenpilotใฎใƒ‡ใƒใƒƒใ‚ฐใจๆœ€้ฉๅŒ–ใฎใŸใ‚ใฎใ‚ทใ‚นใƒ†ใƒ ใƒกใƒˆใƒชใ‚ฏใ‚นใ€‚ + <b>Performance data, sensor readings, and system metrics</b> for debugging and optimizing openpilot. + <b>openpilot ใฎใƒ‡ใƒใƒƒใ‚ฐใจๆœ€้ฉๅŒ–ใฎใŸใ‚ใฎใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใƒ‡ใƒผใ‚ฟใ€ใ‚ปใƒณใ‚ตใƒผ่ชญใฟๅ–ใ‚Šๅ€คใ€ใ‚ทใ‚นใƒ†ใƒ ใƒกใƒˆใƒชใ‚ฏใ‚น</b> Border Metrics - ใƒœใƒผใƒ€ใƒผใƒกใƒˆใƒชใ‚ฏใ‚น + ๅขƒ็•Œใƒกใƒˆใƒชใ‚ฏใ‚น - Metrics displayed around the border of the driving screen.<br><br><b>Blind Spot</b>: Turn the border red when a vehicle is detected in a blind spot<br><b>Steering Torque</b>: Highlight the border green to red in accordance to the amount of steering torque being used<br><b>Turn Signal</b>: Flash the border yellow when a turn signal is active - ้‹่ปข็”ป้ขใฎๅขƒ็•Œใซ่กจ็คบใ•ใ‚Œใ‚‹ใƒกใƒˆใƒชใ‚ฏใ‚นใ€‚<br><br><b>ใƒ–ใƒฉใ‚คใƒณใƒ‰ใ‚นใƒใƒƒใƒˆ</b>: ใƒ–ใƒฉใ‚คใƒณใƒ‰ใ‚นใƒใƒƒใƒˆใซ่ปŠไธกใŒๆคœๅ‡บใ•ใ‚ŒใŸใจใใซๅขƒ็•Œใ‚’่ตคใซใ™ใ‚‹<br><b>ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒˆใƒซใ‚ฏ</b>: ไฝฟ็”จใ•ใ‚Œใฆใ„ใ‚‹ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒˆใƒซใ‚ฏใฎ้‡ใซๅฟœใ˜ใฆๅขƒ็•Œใ‚’็ท‘ใ‹ใ‚‰่ตคใซๅผท่ชฟ่กจ็คบใ™ใ‚‹<br><b>ใ‚ฟใƒผใƒณใ‚ทใ‚ฐใƒŠใƒซ</b>: ใ‚ฟใƒผใƒณใ‚ทใ‚ฐใƒŠใƒซใŒใ‚ขใ‚ฏใƒ†ใ‚ฃใƒ–ใชใจใใซๅขƒ็•Œใ‚’้ป„่‰ฒใง็‚นๆป…ใ•ใ›ใ‚‹ + <b>Show statuses along the border of the driving screen.</b><br><br><b>Blind Spot</b>: The border turns red when a vehicle is in a blind spot<br><b>Steering Torque</b>: The border goes from green to red according to how much steering torque is being used<br><b>Turn Signal</b>: The border flashes yellow when a turn signal is on + <b>่ตฐ่กŒ็”ป้ขใฎๆž ใซใ‚นใƒ†ใƒผใ‚ฟใ‚นใ‚’่กจ็คบใ—ใพใ™ใ€‚</b><br><br><b>ใƒ–ใƒฉใ‚คใƒณใƒ‰ใ‚นใƒใƒƒใƒˆ</b>๏ผšๆญป่ง’ใซ่ปŠไธกใŒใ„ใ‚‹ใจๆž ใŒ่ตคใซใชใ‚Šใพใ™<br><b>ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒˆใƒซใ‚ฏ</b>๏ผšไฝฟ็”จใ•ใ‚Œใฆใ„ใ‚‹ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒˆใƒซใ‚ฏใฎ้‡ใซๅฟœใ˜ใฆๆž ใŒ็ท‘ใ‹ใ‚‰่ตคใซๅค‰ๅŒ–ใ—ใพใ™<br><b>ใ‚ฟใƒผใƒณใ‚ทใ‚ฐใƒŠใƒซ</b>๏ผšใ‚ฟใƒผใƒณใ‚ทใ‚ฐใƒŠใƒซใŒไฝœๅ‹•ไธญใฏๆž ใŒ้ป„่‰ฒใซ็‚นๆป…ใ—ใพใ™ Lead Info - ใƒชใƒผใƒ‰ๆƒ…ๅ ฑ + ๅ…ˆ่กŒ่ปŠๆƒ…ๅ ฑ - Metrics displayed under vehicle markers listing their distance and current speed. - ่ปŠไธกใƒžใƒผใ‚ซใƒผใฎไธ‹ใซ่กจ็คบใ•ใ‚Œใ‚‹ใƒกใƒˆใƒชใ‚ฏใ‚นใฏใ€่ท้›ขใจ็พๅœจใฎ้€Ÿๅบฆใงใ™ใ€‚ + <b>Show each tracked vehicle's distance and speed</b> below its marker. + <b>ๅ„่ฟฝ่ทก่ปŠไธกใฎ่ท้›ขใจ้€Ÿๅบฆใ‚’</b>ใƒžใƒผใ‚ซใƒผใฎไธ‹ใซ่กจ็คบใ—ใพใ™ใ€‚ FPS Display - FPS่กจ็คบ + FPS่กจ็คบ - Display the <b>Frames Per Second (FPS)</b> at the bottom of the driving screen. - ้‹่ปข็”ป้ขใฎไธ‹้ƒจใซ<b>ใƒ•ใƒฌใƒผใƒ ใƒฌใƒผใƒˆ (FPS)</b>ใ‚’่กจ็คบใ—ใพใ™ใ€‚ + <b>Show the frames per second (FPS)</b> at the bottom of the driving screen. + ้‹่ปข็”ป้ขใฎไธ‹้ƒจใซ<b>ใƒ•ใƒฌใƒผใƒ ๆฏŽ็ง’๏ผˆFPS๏ผ‰ใ‚’่กจ็คบ</b>ใ—ใพใ™ใ€‚ Numerical Temperature Gauge - ๆ•ฐๅ€คๆธฉๅบฆ่จˆ + ๆ•ฐๅ€คๆธฉๅบฆใ‚ฒใƒผใ‚ธ - Use numerical temperature readings instead of status labels in the sidebar. - ใ‚ตใ‚คใƒ‰ใƒใƒผใงใฏใ‚นใƒ†ใƒผใ‚ฟใ‚นใƒฉใƒ™ใƒซใฎไปฃใ‚ใ‚Šใซๆ•ฐๅ€คใฎๆธฉๅบฆ่ชญใฟใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚ - - - Display system information (<b>CPU</b>, <b>GPU</b>, <b>RAM usage</b>, <b>IP address</b>, <b>device storage</b>) in the sidebar. - ใ‚ตใ‚คใƒ‰ใƒใƒผใซใ‚ทใ‚นใƒ†ใƒ ๆƒ…ๅ ฑ๏ผˆ<b>CPU</b>ใ€<b>GPU</b>ใ€<b>RAMไฝฟ็”จ้‡</b>ใ€<b>IPใ‚ขใƒ‰ใƒฌใ‚น</b>ใ€<b>ใƒ‡ใƒใ‚คใ‚นใ‚นใƒˆใƒฌใƒผใ‚ธ</b>๏ผ‰ใ‚’่กจ็คบใ—ใพใ™ใ€‚ - - - Use International System of Units - ๅ›ฝ้š›ๅ˜ไฝ็ณปใ‚’ไฝฟ็”จใ™ใ‚‹ - - - Display measurements using the <b>International System of Units (SI)</b> standard. - <b>ๅ›ฝ้š›ๅ˜ไฝ็ณป (SI)</b> ๆจ™ๆบ–ใ‚’ไฝฟ็”จใ—ใฆๆธฌๅฎšๅ€คใ‚’่กจ็คบใ—ใพใ™ใ€‚ - - - Developer Sidebar - ้–‹็™บ่€…ใ‚ตใ‚คใƒ‰ใƒใƒผ - - - Display debugging info and metrics in a dedicated sidebar on the right side of the screen. - ใƒ‡ใƒใƒƒใ‚ฐๆƒ…ๅ ฑใจใƒกใƒˆใƒชใ‚ฏใ‚นใ‚’็”ป้ขใฎๅณๅดใซใ‚ใ‚‹ๅฐ‚็”จใฎใ‚ตใ‚คใƒ‰ใƒใƒผใซ่กจ็คบใ—ใพใ™ใ€‚ - - - Metric #1 - ใƒกใƒˆใƒชใƒƒใ‚ฏ #1 - - - Metric to display in the first metric in the "Developer Sidebar". - ใ€Œ้–‹็™บ่€…ใ‚ตใ‚คใƒ‰ใƒใƒผใ€ใฎๆœ€ๅˆใฎใƒกใƒˆใƒชใƒƒใ‚ฏใซ่กจ็คบใ™ใ‚‹ใƒกใƒˆใƒชใƒƒใ‚ฏใ€‚ - - - Metric #2 - ใƒกใƒˆใƒชใƒƒใ‚ฏ #2 - - - Metric to display in the second metric in the "Developer Sidebar". - ใ€Œ้–‹็™บ่€…ใ‚ตใ‚คใƒ‰ใƒใƒผใ€ใฎ2็•ช็›ฎใฎใƒกใƒˆใƒชใƒƒใ‚ฏใซ่กจ็คบใ™ใ‚‹ใƒกใƒˆใƒชใƒƒใ‚ฏใ€‚ - - - Metric #3 - ใƒกใƒˆใƒชใƒƒใ‚ฏ #3 - - - Metric to display in the third metric in the "Developer Sidebar". - ใ€Œ้–‹็™บ่€…ใ‚ตใ‚คใƒ‰ใƒใƒผใ€ใฎ3็•ช็›ฎใฎใƒกใƒˆใƒชใƒƒใ‚ฏใซ่กจ็คบใ™ใ‚‹ใƒกใƒˆใƒชใƒƒใ‚ฏใ€‚ - - - Metric #4 - ใƒกใƒˆใƒชใƒƒใ‚ฏ #4 - - - Metric to display in the fourth metric in the "Developer Sidebar". - ใ€Œ้–‹็™บ่€…ใ‚ตใ‚คใƒ‰ใƒใƒผใ€ใฎ4็•ช็›ฎใฎใƒกใƒˆใƒชใƒƒใ‚ฏใซ่กจ็คบใ™ใ‚‹ใƒกใƒˆใƒชใƒƒใ‚ฏใ€‚ - - - Metric #5 - ใƒกใƒˆใƒชใƒƒใ‚ฏ #5 - - - Metric to display in the fifth metric in the "Developer Sidebar". - ใ€Œ้–‹็™บ่€…ใ‚ตใ‚คใƒ‰ใƒใƒผใ€ใฎ5็•ช็›ฎใฎใƒกใƒˆใƒชใƒƒใ‚ฏใซ่กจ็คบใ™ใ‚‹ใƒกใƒˆใƒชใƒƒใ‚ฏใ€‚ - - - Metric #6 - ใƒกใƒˆใƒชใƒƒใ‚ฏ #6 - - - Metric to display in the sixth metric in the "Developer Sidebar". - ใ€Œ้–‹็™บ่€…ใ‚ตใ‚คใƒ‰ใƒใƒผใ€ใฎ6็•ช็›ฎใฎใƒกใƒˆใƒชใƒƒใ‚ฏใซ่กจ็คบใ™ใ‚‹ใƒกใƒˆใƒชใƒƒใ‚ฏใ€‚ - - - Metric #7 - ใƒกใƒˆใƒชใƒƒใ‚ฏ #7 - - - Metric to display in the seventh metric in the "Developer Sidebar". - ใ€Œ้–‹็™บ่€…ใ‚ตใ‚คใƒ‰ใƒใƒผใ€ใฎ7็•ช็›ฎใฎใƒกใƒˆใƒชใƒƒใ‚ฏใซ่กจ็คบใ™ใ‚‹ใƒกใƒˆใƒชใƒƒใ‚ฏใ€‚ - - - Developer Widgets - ้–‹็™บ่€…ใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆ - - - Overlays displaying debugging visuals, internal states, and model predictions on the driving screen. - ้‹่ปข็”ป้ขใซใƒ‡ใƒใƒƒใ‚ฐใƒ“ใ‚ธใƒฅใ‚ขใƒซใ€ๅ†…้ƒจ็Šถๆ…‹ใ€ใƒขใƒ‡ใƒซไบˆๆธฌใ‚’่กจ็คบใ™ใ‚‹ใ‚ชใƒผใƒใƒผใƒฌใ‚คใ€‚ - - - Adjacent Leads Tracking - ้šฃๆŽฅใƒชใƒผใƒ‰ใฎ่ฟฝ่ทก - - - Adjacent leads detected by the car's radar to the left and right of the current driving path. - ่ปŠใฎใƒฌใƒผใƒ€ใƒผใซใ‚ˆใฃใฆ็พๅœจใฎ่ตฐ่กŒ็ตŒ่ทฏใฎๅทฆๅณใซ้šฃๆŽฅใ™ใ‚‹่ปŠไธกใŒๆคœๅ‡บใ•ใ‚Œใพใ—ใŸใ€‚ - - - Model Stopping Point - ใƒขใƒ‡ใƒซๅœๆญขใƒใ‚คใƒณใƒˆ - - - Display an image on the screen where openpilot is wanting to stop. - openpilotใŒๅœๆญขใ—ใ‚ˆใ†ใจใ—ใฆใ„ใ‚‹ๅ ดๆ‰€ใซ็”ปๅƒใ‚’็”ป้ขใซ่กจ็คบใ—ใพใ™ใ€‚ - - - Radar Tracks - ใƒฌใƒผใƒ€ใƒผใƒˆใƒฉใƒƒใ‚ฏ - - - Display all of the radar points produced by the car's radar. - ่ปŠใฎใƒฌใƒผใƒ€ใƒผใซใ‚ˆใฃใฆ็”Ÿๆˆใ•ใ‚ŒใŸใ™ในใฆใฎใƒฌใƒผใƒ€ใƒผใƒใ‚คใƒณใƒˆใ‚’่กจ็คบใ—ใพใ™ใ€‚ - - - Driving Screen Widgets - ้‹่ปข็”ป้ขใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆ - - - Custom FrogPilot widgets for the driving screen. - ้‹่ปข็”ป้ข็”จใฎใ‚ซใ‚นใ‚ฟใƒ FrogPilotใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆใ€‚ - - - Acceleration Path - ๅŠ ้€Ÿใƒ‘ใ‚น - - - Colorize the driving path based on openpilot's current desired acceleration and deceleration rate. - openpilotใฎ็พๅœจใฎๅธŒๆœ›ๅŠ ้€ŸใŠใ‚ˆใณๆธ›้€Ÿ็އใซๅŸบใฅใ„ใฆ้‹่ปข็ตŒ่ทฏใซ่‰ฒใ‚’ไป˜ใ‘ใพใ™ใ€‚ - - - Adjacent Lanes - ้šฃๆŽฅ่ปŠ็ทš - - - Driving paths for the left and right adjacent lanes. - ๅทฆ้šฃใจๅณ้šฃใฎ่ปŠ็ทšใฎ่ตฐ่กŒ็ตŒ่ทฏใ€‚ - - - Blind Spot Path - ใƒ–ใƒฉใ‚คใƒณใƒ‰ใ‚นใƒใƒƒใƒˆใƒ‘ใ‚น - - - Display a red driving path for detected vehicles in the corresponding lane's blind spot. - ๆคœๅ‡บใ•ใ‚ŒใŸ่ปŠไธกใฎๅฏพๅฟœใ™ใ‚‹่ปŠ็ทšใฎใƒ–ใƒฉใ‚คใƒณใƒ‰ใ‚นใƒใƒƒใƒˆใซ่ตคใ„่ตฐ่กŒ็ตŒ่ทฏใ‚’่กจ็คบใ—ใพใ™ใ€‚ - - - Compass - ใ‚ณใƒณใƒ‘ใ‚น - - - A compass to show the current driving direction. - ็พๅœจใฎ่ตฐ่กŒๆ–นๅ‘ใ‚’็คบใ™ใ‚ณใƒณใƒ‘ใ‚นใ€‚ - - - Driving Personality Button - ้‹่ปขๆ€งๆ ผใƒœใ‚ฟใƒณ - - - Display the current driving personality on the screen. Tap to switch personalities, or long press for 0.5 seconds to change the current state of <b>Experimental Mode</b>, or 2.5 seconds for <b>Traffic Mode</b>. - ็พๅœจใฎ้‹่ปขใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใ‚’็”ป้ขใซ่กจ็คบใ—ใพใ™ใ€‚ใ‚ฟใƒƒใƒ—ใ—ใฆใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใ‚’ๅˆ‡ใ‚Šๆ›ฟใˆใ‚‹ใ‹ใ€0.5็ง’้–“้•ทๆŠผใ—ใ—ใฆ<b>ๅฎŸ้จ“ใƒขใƒผใƒ‰</b>ใฎ็พๅœจใฎ็Šถๆ…‹ใ‚’ๅค‰ๆ›ดใ™ใ‚‹ใ‹ใ€2.5็ง’้–“้•ทๆŠผใ—ใ—ใฆ<b>ไบค้€šใƒขใƒผใƒ‰</b>ใ‚’ๅค‰ๆ›ดใ—ใพใ™ใ€‚ - - - Gas / Brake Pedal Indicators - ใ‚ฌใ‚น/ใƒ–ใƒฌใƒผใ‚ญใƒšใƒ€ใƒซใ‚คใƒณใ‚ธใ‚ฑใƒผใ‚ฟใƒผ - - - Pedals to indicate when either of the pedals are currently being used.<br><br><b>Dynamic</b>: The pedals change in opacity in accordance to how much openpilot is accelerating or decelerating<br><b>Static</b>: The pedals are displayed with full opacity when active, and dimmed when not in use - ใƒšใƒ€ใƒซใŒ็พๅœจไฝฟ็”จใ•ใ‚Œใฆใ„ใ‚‹ใจใใซ่กจ็คบใ•ใ‚Œใ‚‹ใƒšใƒ€ใƒซใ€‚<br><br><b>ใƒ€ใ‚คใƒŠใƒŸใƒƒใ‚ฏ</b>: openpilotใŒๅŠ ้€ŸใพใŸใฏๆธ›้€Ÿใ™ใ‚‹ใซๅพ“ใฃใฆใ€ใƒšใƒ€ใƒซใฎไธ้€ๆ˜ŽๅบฆใŒๅค‰ๅŒ–ใ—ใพใ™<br><b>ใ‚นใ‚ฟใƒ†ใ‚ฃใƒƒใ‚ฏ</b>: ใƒšใƒ€ใƒซใŒใ‚ขใ‚ฏใƒ†ใ‚ฃใƒ–ใชใจใใฏๅฎŒๅ…จใชไธ้€ๆ˜Žๅบฆใง่กจ็คบใ•ใ‚Œใ€ไฝฟ็”จใ•ใ‚Œใฆใ„ใชใ„ใจใใฏ่–„ๆš—ใ่กจ็คบใ•ใ‚Œใพใ™ - - - Rotating Steering Wheel - ๅ›ž่ปขใ™ใ‚‹ใƒใƒณใƒ‰ใƒซ - - - Rotate the steering wheel alongside the vehicle's physical steering wheel. - ่ปŠไธกใฎ็‰ฉ็†็š„ใชใƒใƒณใƒ‰ใƒซใจไธ€็ท’ใซใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใ‚’ๅ›ž่ปขใ•ใ›ใฆใใ ใ•ใ„ใ€‚ - - - Model UI - ใƒขใƒ‡ใƒซUI - - - Model visualizations on the driving screen for the driving path, lane lines, path edges, and road edges. - ้‹่ปข็”ป้ขใซ้‹่ปข็ตŒ่ทฏใ€่ปŠ็ทšใƒฉใ‚คใƒณใ€็ตŒ่ทฏใฎ็ซฏใ€้“่ทฏใฎ็ซฏใ‚’ใƒขใƒ‡ใƒซๅŒ–ใ—ใŸใƒ“ใ‚ธใƒฅใ‚ขใƒฉใ‚คใ‚ผใƒผใ‚ทใƒงใƒณใ‚’่กจ็คบใ—ใพใ™ใ€‚ - - - Dynamic Path Width - ๅ‹•็š„ใƒ‘ใ‚นๅน… - - - Adjust the width of the driving path based on the current engagement state.<br><br><b>Fully engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Fully disengaged</b>: 50% - ็พๅœจใฎใ‚จใƒณใ‚ฒใƒผใ‚ธใƒกใƒณใƒˆ็Šถๆ…‹ใซๅŸบใฅใ„ใฆ่ตฐ่กŒ็ตŒ่ทฏใฎๅน…ใ‚’่ชฟๆ•ดใ—ใพใ™ใ€‚<br><br><b>ๅฎŒๅ…จใซใ‚จใƒณใ‚ฒใƒผใ‚ธ</b>: 100%<br><b>ๅธธๆ™‚ใ‚ชใƒณๆจชๆ–นๅ‘</b>: 75%<br><b>ๅฎŒๅ…จใซใƒ‡ใ‚ฃใ‚นใ‚จใƒณใ‚ฒใƒผใ‚ธ</b>: 50% - - - Lane Lines Width - ่ปŠ็ทšใฎๅน… - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 4 inches. - ้‹่ปข็”ป้ขไธŠใฎ่ปŠ็ทšใƒฉใ‚คใƒณใฎๅŽšใ•ใ€‚<br><br><b>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฏ<b>MUTCD</b>่ปŠ็ทšใƒฉใ‚คใƒณๅน…ใฎๆจ™ๆบ–ใงใ‚ใ‚‹4ใ‚คใƒณใƒใซไธ€่‡ดใ—ใพใ™ใ€‚ - - - Path Edges Width - ใƒ‘ใ‚นใ‚จใƒƒใ‚ธๅน… - - - The width of the edges of the driving path that represent different driving modes and statuses.<br><br>Default is <b>20%</b> of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden - ้‹่ปข็ตŒ่ทฏใฎใ‚จใƒƒใ‚ธใฎๅน…ใฏใ€็•ฐใชใ‚‹้‹่ปขใƒขใƒผใƒ‰ใจใ‚นใƒ†ใƒผใ‚ฟใ‚นใ‚’่กจใ—ใพใ™ใ€‚<br><br>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฏ็ตŒ่ทฏๅ…จไฝ“ใฎๅน…ใฎ<b>20%</b>ใงใ™ใ€‚<br><br>ใ‚ซใƒฉโ€•ใ‚ฌใ‚คใƒ‰:<br><br>- <b>้’</b>: ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณ<br>- <b>ๆฐด่‰ฒ</b>: ๅธธๆ™‚ใ‚ชใƒณๆจชๆ–นๅ‘<br>- <b>็ท‘</b>: ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ<br>- <b>ใ‚ชใƒฌใƒณใ‚ธ</b>: ๅฎŸ้จ“ใƒขใƒผใƒ‰<br>- <b>่ตค</b>: ใƒˆใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏใƒขใƒผใƒ‰<br>- <b>้ป„่‰ฒ</b>: ๆกไปถไป˜ใๅฎŸ้จ“ใƒขใƒผใƒ‰ใฎไธŠๆ›ธใ - - - Path Width - ใƒ‘ใ‚นๅน… - - - Road Edges Width - ้“่ทฏ็ซฏ้ƒจใฎๅน… - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 4 inches. - ้‹่ปข็”ป้ขใฎ้“่ทฏ็ซฏใฎๅŽšใ•ใ€‚<br><br><b>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฏ<b>MUTCD</b>่ปŠ็ทš็ทšๅน…ๆจ™ๆบ–ใฎ4ใ‚คใƒณใƒใฎๅŠๅˆ†ใซไธ€่‡ดใ—ใพใ™ใ€‚ - - - "Unlimited" Road UI - ใ€ŒUnlimitedใ€Road UI - - - Extend the display of the driving path, lane lines, and road edges as far as the model can see. - ใƒขใƒ‡ใƒซใŒ่ฆ‹ใˆใ‚‹้™ใ‚Šใ€่ตฐ่กŒ็ตŒ่ทฏใ€่ปŠ็ทšใ€้“่ทฏ็ซฏใ‚’่กจ็คบใ—ใพใ™ใ€‚ - - - Navigation Widgets - ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆ - - - Map style tweaks, speed limits, and other navigation related widgets. - ๅœฐๅ›ณใ‚นใ‚ฟใ‚คใƒซใฎ่ชฟๆ•ดใ€้€Ÿๅบฆๅˆถ้™ใ€ใใฎไป–ใฎใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณ้–ข้€ฃใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆใ€‚ - - - Larger Map Display - ใ‚ˆใ‚Šๅคงใใชๅœฐๅ›ณ่กจ็คบ - - - Increase the size of the map for easier navigation readings. - ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณใฎ่ชญใฟๅ–ใ‚Šใ‚’ๅฎนๆ˜“ใซใ™ใ‚‹ใŸใ‚ใซๅœฐๅ›ณใฎใ‚ตใ‚คใ‚บใ‚’ๅคงใใใ—ใฆใใ ใ•ใ„ใ€‚ - - - Map Style - ใƒžใƒƒใƒ—ใ‚นใ‚ฟใ‚คใƒซ - - - The map style used for <b>Navigate on openpilot (NOO)</b>:<br><br><b>Stock</b>: Default comma.ai style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>mike854's (Satellite hybrid)</b>: Customized hybrid satellite view - <b>Navigate on openpilot (NOO)</b>ใงไฝฟ็”จใ•ใ‚Œใ‚‹ๅœฐๅ›ณใ‚นใ‚ฟใ‚คใƒซ:<br><br><b>Stock</b>: ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฎcomma.aiใ‚นใ‚ฟใ‚คใƒซ<br><b>Mapbox Streets</b>: ๆจ™ๆบ–ใฎใ‚นใƒˆใƒชใƒผใƒˆใƒ“ใƒฅใƒผ<br><b>Mapbox Outdoors</b>: ใ‚ขใ‚ฆใƒˆใƒ‰ใ‚ขใจๅœฐๅฝขใฎ็‰นๅพดใ‚’ๅผท่ชฟ<br><b>Mapbox Light</b>: ใƒŸใƒ‹ใƒžใƒชใ‚นใƒˆใงๆ˜Žใ‚‹ใ„ใƒ†ใƒผใƒž<br><b>Mapbox Dark</b>: ใƒŸใƒ‹ใƒžใƒชใ‚นใƒˆใงๆš—ใ„ใƒ†ใƒผใƒž<br><b>Mapbox Navigation Day</b>: ๆ—ฅไธญใฎใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณใซๆœ€้ฉๅŒ–<br><b>Mapbox Navigation Night</b>: ๅคœ้–“ใฎใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณใซๆœ€้ฉๅŒ–<br><b>Mapbox Satellite</b>: ่ก›ๆ˜Ÿ็”ปๅƒใฎใฟ<br><b>Mapbox Satellite Streets</b>: ่ก›ๆ˜Ÿ็”ปๅƒใจใ‚นใƒˆใƒชใƒผใƒˆใƒฉใƒ™ใƒซใฎใƒใ‚คใƒ–ใƒชใƒƒใƒ‰<br><b>Mapbox Traffic Night</b>: ไบค้€š็Šถๆณใ‚’ๅผท่ชฟใ—ใŸๆš—ใ„ใƒ†ใƒผใƒž<br><b>mike854's (Satellite hybrid)</b>: ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ•ใ‚ŒใŸใƒใ‚คใƒ–ใƒชใƒƒใƒ‰่ก›ๆ˜Ÿใƒ“ใƒฅใƒผ - - - Road Name - ้“่ทฏๅ - - - Display the road name at the bottom of the driving screen using data from <b>OpenStreetMap</b>. - ้‹่ปข็”ป้ขใฎไธ‹้ƒจใซ<b>OpenStreetMap</b>ใฎใƒ‡ใƒผใ‚ฟใ‚’ไฝฟ็”จใ—ใฆ้“่ทฏๅใ‚’่กจ็คบใ—ใพใ™ใ€‚ - - - Show Speed Limits - ้€Ÿๅบฆๅˆถ้™ใ‚’่กจ็คบ - - - Display speed limits in the top left corner of the driving screen. Uses data from your car's dashboard (if supported) and data from <b>OpenStreetMaps</b>. - ้‹่ปข็”ป้ขใฎๅทฆไธŠ้š…ใซ้€Ÿๅบฆๅˆถ้™ใ‚’่กจ็คบใ—ใพใ™ใ€‚ใŠไฝฟใ„ใฎ่ปŠใฎใƒ€ใƒƒใ‚ทใƒฅใƒœใƒผใƒ‰๏ผˆๅฏพๅฟœใ—ใฆใ„ใ‚‹ๅ ดๅˆ๏ผ‰ใจ<b>OpenStreetMaps</b>ใฎใƒ‡ใƒผใ‚ฟใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚ - - - Show Speed Limits from Mapbox - Mapboxใ‹ใ‚‰้€Ÿๅบฆๅˆถ้™ใ‚’่กจ็คบ - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - ไป–ใฎๆƒ…ๅ ฑๆบใŒๅˆฉ็”จใงใใชใ„ๅ ดๅˆใฏใ€<b>Mapbox</b>ใฎ้€Ÿๅบฆๅˆถ้™ใƒ‡ใƒผใ‚ฟใ‚’ไฝฟ็”จใ—ใฆใใ ใ•ใ„ใ€‚ - - - Use Vienna-Style Speed Signs - ใ‚ฆใ‚ฃใƒผใƒณใ‚นใ‚ฟใ‚คใƒซใฎ้€Ÿๅบฆๆจ™่ญ˜ใ‚’ไฝฟ็”จ - - - Force <b>Vienna-style (EU)</b> speed limit signs instead of <b>MUTCD (US)</b>. - ใ‚ฆใ‚ฃใƒผใƒณใ‚นใ‚ฟใ‚คใƒซ๏ผˆEU๏ผ‰ใฎ้€Ÿๅบฆๅˆถ้™ๆจ™่ญ˜ใ‚’ๅผทๅˆถใ—ใ€MUTCD๏ผˆUS๏ผ‰ใงใฏใชใใ—ใพใ™ใ€‚ - - - Quality of Life - ็”Ÿๆดปใฎ่ณช - - - Visual features to improve your overall openpilot experience. - ๅ…จไฝ“็š„ใชopenpilotไฝ“้จ“ใ‚’ๅ‘ไธŠใ•ใ›ใ‚‹่ฆ–่ฆš็š„ๆฉŸ่ƒฝใ€‚ - - - Camera View - ใ‚ซใƒกใƒฉใƒ“ใƒฅใƒผ - - - The active camera view display. This is purely a visual change and doesn't impact how openpilot drives! - ใ‚ขใ‚ฏใƒ†ใ‚ฃใƒ–ใ‚ซใƒกใƒฉใƒ“ใƒฅใƒผใฎ่กจ็คบใ€‚ใ“ใ‚Œใฏ็ด”็ฒ‹ใซ่ฆ–่ฆš็š„ใชๅค‰ๆ›ดใงใ‚ใ‚Šใ€openpilotใฎ้‹่ปขใซใฏๅฝฑ้Ÿฟใ—ใพใ›ใ‚“๏ผ - - - Show Driver Camera When In Reverse - ใƒชใƒใƒผใ‚นๆ™‚ใซใƒ‰ใƒฉใ‚คใƒใƒผใ‚ซใƒกใƒฉใ‚’่กจ็คบ - - - Display the driver camera feed when the vehicle is in reverse. - ่ปŠไธกใŒๅพŒ้€€ใ—ใฆใ„ใ‚‹ใจใใซใƒ‰ใƒฉใ‚คใƒใƒผใ‚ซใƒกใƒฉใฎใƒ•ใ‚ฃใƒผใƒ‰ใ‚’่กจ็คบใ—ใพใ™ใ€‚ - - - Standby Mode - ๅพ…ๆฉŸใƒขใƒผใƒ‰ - - - Turn the screen off when driving and automatically wake it up if engagement state changes or important alerts occur. - ้‹่ปขไธญใฏ็”ป้ขใ‚’ใ‚ชใƒ•ใซใ—ใ€ใ‚จใƒณใ‚ฒใƒผใ‚ธใƒกใƒณใƒˆ็Šถๆ…‹ใŒๅค‰ๅŒ–ใ—ใŸใ‚Š้‡่ฆใชใ‚ขใƒฉใƒผใƒˆใŒ็™บ็”Ÿใ—ใŸๅ ดๅˆใฏ่‡ชๅ‹•็š„ใซ็”ป้ขใ‚’ใ‚ชใƒณใซใ—ใพใ™ใ€‚ - - - Stopped Timer - ๅœๆญขใ‚ฟใ‚คใƒžใƒผ - - - Replace the current speed with a timer when stopped to indicate how long the vehicle has been stopped for. - ๅœๆญขๆ™‚ใซ็พๅœจใฎ้€Ÿๅบฆใ‚’ใ‚ฟใ‚คใƒžใƒผใซ็ฝฎใๆ›ใˆใฆใ€่ปŠไธกใŒๅœๆญขใ—ใฆใ„ใ‚‹ๆ™‚้–“ใ‚’็คบใ—ใพใ™ใ€‚ - - - Blind Spot - ใƒ–ใƒฉใ‚คใƒณใƒ‰ใ‚นใƒใƒƒใƒˆ - - - Steering Torque - ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒˆใƒซใ‚ฏ - - - Turn Signal - ใ‚ฟใƒผใƒณใ‚ทใ‚ฐใƒŠใƒซ - - - Fahrenheit - ่ฏๆฐ - - - CPU - CPU - - - GPU - GPU - - - IP - IP - - - RAM - RAM - - - SSD Left - SSD ๆฎ‹ใ‚Š - - - SSD Used - SSDไฝฟ็”จๆธˆใฟ - - - None - ใชใ— - - - Acceleration: Current - ๅŠ ้€Ÿๅบฆ: ็พๅœจ - - - Acceleration: Max - ๅŠ ้€Ÿ: ๆœ€ๅคง - - - Auto Tune: Actuator Delay - ใ‚ชใƒผใƒˆใƒใƒฅใƒผใƒณ: ใ‚ขใ‚ฏใƒใƒฅใ‚จใƒผใ‚ฟ้…ๅปถ - - - Auto Tune: Friction - ใ‚ชใƒผใƒˆใƒใƒฅใƒผใƒณ: ใƒ•ใƒชใ‚ฏใ‚ทใƒงใƒณ - - - Auto Tune: Lateral Acceleration - ใ‚ชใƒผใƒˆใƒใƒฅใƒผใƒณ: ๆจชๅŠ ้€Ÿๅบฆ - - - Auto Tune: Steer Ratio - ใ‚ชใƒผใƒˆใƒใƒฅใƒผใƒณ: ใ‚นใƒ†ใ‚ขๆฏ”็އ - - - Auto Tune: Stiffness Factor - ใ‚ชใƒผใƒˆใƒใƒฅใƒผใƒณ: ๅ‰›ๆ€งไฟ‚ๆ•ฐ - - - Engagement %: Lateral - ใ‚จใƒณใ‚ฒใƒผใ‚ธใƒกใƒณใƒˆ%: ใƒฉใƒ†ใƒฉใƒซ - - - Engagement %: Longitudinal - ใ‚จใƒณใ‚ฒใƒผใ‚ธใƒกใƒณใƒˆ %: ็ธฆๆ–ญ็š„ - - - Lateral Control: Steering Angle - ๆจชๆ–นๅ‘ๅˆถๅพก: ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐ่ง’ๅบฆ - - - Lateral Control: Torque % Used - ๆจชๆ–นๅ‘ๅˆถๅพก: ไฝฟ็”จใƒˆใƒซใ‚ฏ% - - - Longitudinal Control: Actuator Acceleration Output - ็ธฆๆ–นๅ‘ๅˆถๅพก: ใ‚ขใ‚ฏใƒใƒฅใ‚จใƒผใ‚ฟๅŠ ้€Ÿๅบฆๅ‡บๅŠ› - - - Longitudinal MPC Jerk: Acceleration - ็ธฆๆ–นๅ‘MPCใ‚ธใƒฃใƒผใ‚ฏ๏ผšๅŠ ้€Ÿๅบฆ - - - Longitudinal MPC Jerk: Danger Zone - ็ธฆๆ–นๅ‘MPCใ‚ธใƒฃใƒผใ‚ฏ: ๅฑ้™บใ‚พใƒผใƒณ - - - Longitudinal MPC Jerk: Speed Control - ็ธฆๆ–นๅ‘MPCใ‚ธใƒฃใƒผใ‚ฏ: ้€Ÿๅบฆๅˆถๅพก - - - SELECT - SELECT - - - Select a metric to display - ่กจ็คบใ™ใ‚‹ใƒกใƒˆใƒชใƒƒใ‚ฏใ‚’้ธๆŠž - - - Show Distance - ่ท้›ขใ‚’่กจ็คบ - - - Dynamic - ใƒ€ใ‚คใƒŠใƒŸใƒƒใ‚ฏ - - - Static - ้™็š„ - - - inches - ใ‚คใƒณใƒ - - - Off - ใ‚ชใƒ• - - - feet - ใƒ•ใ‚ฃใƒผใƒˆ - - - Full Map - ใƒ•ใƒซใƒžใƒƒใƒ— - - - Stock openpilot - ใ‚นใƒˆใƒƒใ‚ฏใ‚ชใƒผใƒ—ใƒณใƒ‘ใ‚คใƒญใƒƒใƒˆ - - - FrogsGoMoo's Personalized Style - FrogsGoMooใฎใƒ‘ใƒผใ‚ฝใƒŠใƒฉใ‚คใ‚บใ•ใ‚ŒใŸใ‚นใ‚ฟใ‚คใƒซ - - - Mapbox Streets - Mapbox Streets - - - Mapbox Outdoors - Mapbox Outdoors - - - Mapbox Light - Mapbox Light - - - Mapbox Dark - Mapbox Dark - - - Mapbox Navigation Day - MapboxใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณใƒ‡ใƒผ - - - Mapbox Navigation Night - MapboxใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณใƒŠใ‚คใƒˆ - - - Mapbox Satellite - Mapbox Satellite - - - Mapbox Satellite Streets - Mapbox Satellite Streets - - - Mapbox Traffic Night - Mapbox Traffic Night - - - Mike's Personalized Style - ใƒžใ‚คใ‚ฏใฎใƒ‘ใƒผใ‚ฝใƒŠใƒฉใ‚คใ‚บใ•ใ‚ŒใŸใ‚นใ‚ฟใ‚คใƒซ - - - Select a map style - ๅœฐๅ›ณใ‚นใ‚ฟใ‚คใƒซใ‚’้ธๆŠž - - - Auto - ใ‚ชใƒผใƒˆ - - - Driver - ใƒ‰ใƒฉใ‚คใƒใƒผ - - - Standard - ๆจ™ๆบ– - - - Wide - ๅบƒใ„ - - - foot - ่ถณ - - - inch - ใ‚คใƒณใƒ - - - meter - ใƒกใƒผใƒˆใƒซ - - - meters - ใƒกใƒผใƒˆใƒซ - - - centimeter - ใ‚ปใƒณใƒใƒกใƒผใƒˆใƒซ - - - centimeters - ใ‚ปใƒณใƒใƒกใƒผใƒˆใƒซ - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 10 centimeters. - ้‹่ปข็”ป้ขไธŠใฎ่ปŠ็ทšใƒฉใ‚คใƒณใฎๅคชใ•ใ€‚<br><br><b>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฏ<b>MUTCD</b>ใฎ่ปŠ็ทšใƒฉใ‚คใƒณๅน…ๆจ™ๆบ–ใงใ‚ใ‚‹10ใ‚ปใƒณใƒใƒกใƒผใƒˆใƒซใซไธ€่‡ดใ—ใพใ™ใ€‚ - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 10 centimeters. - ้‹่ปข็”ป้ขใฎ้“่ทฏ็ซฏใฎๅŽšใ•ใ€‚<br><br><b>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฏ<b>MUTCD</b>่ปŠ็ทš็ทšๅน…ๆจ™ๆบ–ใฎ10ใ‚ปใƒณใƒใƒกใƒผใƒˆใƒซใฎๅŠๅˆ†ใซไธ€่‡ดใ—ใพใ™ใ€‚ + <b>Show a numerical temperature in the sidebar</b> instead of the status labels. + <b>ใ‚ตใ‚คใƒ‰ใƒใƒผใซๆ•ฐๅ€คใฎๆธฉๅบฆใ‚’่กจ็คบ</b>๏ผˆใ‚นใƒ†ใƒผใ‚ฟใ‚นใƒฉใƒ™ใƒซใฎไปฃใ‚ใ‚Šใซ๏ผ‰ใ€‚ Sidebar Metrics - ใ‚ตใ‚คใƒ‰ใƒใƒผใƒกใƒˆใƒชใ‚ฏใ‚น + ใ‚ตใ‚คใƒ‰ใƒใƒผใฎใƒกใƒˆใƒชใ‚ฏใ‚น - The width of the driving path on the driving screen.<br><br>Default <b>(6.1 feet)</b> matches the width of a <b>2019 Lexus ES 350</b>. - ้‹่ปข็”ป้ขไธŠใฎ่ตฐ่กŒ่ทฏใฎๅน…ใ€‚<br><br>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ <b>(6.1ใƒ•ใ‚ฃใƒผใƒˆ)</b> ใฏ <b>2019 Lexus ES 350</b> ใฎๅน…ใซไธ€่‡ดใ—ใพใ™ใ€‚ + <b>Display system information</b> (CPU, GPU, RAM usage, IP address, device storage) in the sidebar. + <b>ใ‚ทใ‚นใƒ†ใƒ ๆƒ…ๅ ฑใ‚’่กจ็คบ</b>๏ผˆCPUใ€GPUใ€RAMไฝฟ็”จ็އใ€IPใ‚ขใƒ‰ใƒฌใ‚นใ€ใƒ‡ใƒใ‚คใ‚นใ‚นใƒˆใƒฌใƒผใ‚ธ๏ผ‰ใ‚’ใ‚ตใ‚คใƒ‰ใƒใƒผใซ่กจ็คบใ—ใพใ™ใ€‚ - The width of the driving path on the driving screen.<br><br>Default <b>(1.9 meters)</b> matches the width of a <b>2019 Lexus ES 350</b>. - ้‹่ปข็”ป้ขไธŠใฎ่ตฐ่กŒ่ทฏใฎๅน…ใ€‚<br><br>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ <b>(1.9ใƒกใƒผใƒˆใƒซ)</b> ใฏ <b>2019 Lexus ES 350</b> ใฎๅน…ใซไธ€่‡ดใ—ใพใ™ใ€‚ + Use International System of Units + ๅ›ฝ้š›ๅ˜ไฝ็ณป๏ผˆSI๏ผ‰ใ‚’ไฝฟ็”จใ—ใฆใใ ใ•ใ„ + + + <b>Display measurements using the "International System of Units" (SI)</b> standard. + <b>ใ€Œๅ›ฝ้š›ๅ˜ไฝ็ณปใ€๏ผˆSI๏ผ‰ๆจ™ๆบ–ใงๆธฌๅฎšๅ€คใ‚’่กจ็คบ</b> + + + Developer Sidebar + ้–‹็™บ่€…ใ‚ตใ‚คใƒ‰ใƒใƒผ + + + <b>Display debugging info and metrics</b> in a dedicated sidebar on the right side of the screen. + <b>ใƒ‡ใƒใƒƒใ‚ฐๆƒ…ๅ ฑใจใƒกใƒˆใƒชใ‚ฏใ‚นใ‚’่กจ็คบ</b>ใ—ใ€็”ป้ขๅณๅดใฎๅฐ‚็”จใ‚ตใ‚คใƒ‰ใƒใƒผใซ้…็ฝฎใ—ใพใ™ใ€‚ + + + Metric #1 + ใƒกใƒˆใƒชใƒƒใ‚ฏ #1 + + + <b>Select the metric shown in the first "Developer Sidebar" widget.</b> + <b>ๆœ€ๅˆใฎใ€ŒDeveloper Sidebarใ€ใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆใซ่กจ็คบใ™ใ‚‹ใƒกใƒˆใƒชใ‚ฏใ‚นใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ใ€‚</b> + + + Metric #2 + ใƒกใƒˆใƒชใƒƒใ‚ฏ #2 + + + <b>Select the metric shown in the second "Developer Sidebar" widget.</b> + <b>2ใค็›ฎใฎใ€ŒDeveloper Sidebarใ€ใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆใซ่กจ็คบใ™ใ‚‹ใƒกใƒˆใƒชใ‚ฏใ‚นใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ใ€‚</b> + + + Metric #3 + ใƒกใƒˆใƒชใƒƒใ‚ฏ #3 + + + <b>Select the metric shown in the third "Developer Sidebar" widget.</b> + <b>3็•ช็›ฎใฎใ€ŒDeveloper Sidebarใ€ใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆใซ่กจ็คบใ™ใ‚‹ใƒกใƒˆใƒชใƒƒใ‚ฏใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ใ€‚</b> + + + Metric #4 + ใƒกใƒˆใƒชใƒƒใ‚ฏ #4 + + + <b>Select the metric shown in the fourth "Developer Sidebar" widget.</b> + <b>4็•ช็›ฎใฎใ€ŒDeveloper Sidebarใ€ใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆใซ่กจ็คบใ™ใ‚‹ๆŒ‡ๆจ™ใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ใ€‚</b> + + + Metric #5 + ใƒกใƒˆใƒชใƒƒใ‚ฏ #5 + + + <b>Select the metric shown in the fifth "Developer Sidebar" widget.</b> + <b>5็•ช็›ฎใฎใ€ŒDeveloper Sidebarใ€ใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆใซ่กจ็คบใ™ใ‚‹ๆŒ‡ๆจ™ใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ใ€‚</b> + + + Metric #6 + ใƒกใƒˆใƒชใƒƒใ‚ฏ #6 + + + <b>Select the metric shown in the sixth "Developer Sidebar" widget.</b> + <b>6็•ช็›ฎใฎใ€ŒDeveloper Sidebarใ€ใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆใซ่กจ็คบใ™ใ‚‹ๆŒ‡ๆจ™ใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ใ€‚</b> + + + Metric #7 + ใƒกใƒˆใƒชใƒƒใ‚ฏ #7 + + + <b>Select the metric shown in the seventh "Developer Sidebar" widget.</b> + <b>7็•ช็›ฎใฎใ€ŒDeveloper Sidebarใ€ใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆใซ่กจ็คบใ™ใ‚‹ใƒกใƒˆใƒชใ‚ฏใ‚นใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ใ€‚</b> + + + Developer Widgets + ้–‹็™บ่€…ใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆ + + + <b>Overlays for debugging visuals, internal states, and model predictions</b> on the driving screen. + ้‹่ปข็”ป้ขใซ<b>ใƒ‡ใƒใƒƒใ‚ฐ็”จใฎใƒ“ใ‚ธใƒฅใ‚ขใƒซใ€ๅ†…้ƒจ็Šถๆ…‹ใ€ใƒขใƒ‡ใƒซไบˆๆธฌใฎใ‚ชใƒผใƒใƒผใƒฌใ‚ค</b>ใ‚’่กจ็คบใ—ใพใ™ใ€‚ + + + Adjacent Leads Tracking + ้šฃๆŽฅๅ…ˆ่กŒ่ปŠใฎ่ฟฝ่ทก + + + <b>Display adjacent leads detected by the car's radar</b> to the left and right of the current driving path. + <b>่ปŠใฎใƒฌใƒผใƒ€ใƒผใŒๆคœ็Ÿฅใ—ใŸ้šฃๆŽฅใƒชใƒผใƒ‰ใ‚’่กจ็คบ</b>ใ—ใ€็พๅœจใฎ่ตฐ่กŒ็ตŒ่ทฏใฎๅทฆๅณใซ้…็ฝฎใ—ใพใ™ใ€‚ + + + Model Stopping Point + ใƒขใƒ‡ใƒซๅœๆญขๅœฐ็‚น + + + <b>Show a stop-sign marker where the model intends to stop.</b> + <b>ใƒขใƒ‡ใƒซใŒๅœๆญขใ™ใ‚‹ๆ„ๅ›ณใฎใ‚ใ‚‹ๅ ดๆ‰€ใซไธ€ๆ™‚ๅœๆญขๆจ™่ญ˜ใฎใƒžใƒผใ‚ซใƒผใ‚’่กจ็คบใ—ใพใ™ใ€‚</b> + + + Radar Tracks + ใƒฌใƒผใƒ€ใƒผใƒˆใƒฉใƒƒใ‚ฏ + + + <b>Display all radar points</b> produced by the car's radar. + <b>่ปŠใฎใƒฌใƒผใƒ€ใƒผใซใ‚ˆใ‚Š็”Ÿๆˆใ•ใ‚ŒใŸ</b>ใ™ในใฆใฎใƒฌใƒผใƒ€ใƒผใƒใ‚คใƒณใƒˆใ‚’่กจ็คบใ™ใ‚‹ + + + Driving Screen Widgets + ้‹่ปข็”ป้ขใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆ + + + <b>Custom FrogPilot widgets</b> for the driving screen. + <b>้‹่ปข็”ป้ข็”จใฎใ‚ซใ‚นใ‚ฟใƒ  FrogPilot ใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆ</b> + + + Acceleration Path + ๅŠ ้€Ÿ็ตŒ่ทฏ + + + <b>Color the driving path by planned acceleration and braking.</b> + <b>่จˆ็”ปใ•ใ‚ŒใŸๅŠ ้€Ÿใจๆธ›้€Ÿใง่ตฐ่กŒ็ตŒ่ทฏใ‚’่‰ฒๅˆ†ใ‘ใ—ใพใ™ใ€‚</b> + + + Adjacent Lanes + ้šฃๆŽฅ่ปŠ็ทš + + + <b>Show the driving paths for the left and right lanes.</b> + <b>ๅทฆ่ปŠ็ทšใจๅณ่ปŠ็ทšใฎ่ตฐ่กŒ็ตŒ่ทฏใ‚’่กจ็คบใ—ใพใ™ใ€‚</b> + + + Blind Spot Path + ๆญป่ง’ใƒ‘ใ‚น + + + <b>Show a red path when a vehicle is in that lane's blind spot.</b> + <b>ใใฎ่ปŠ็ทšใฎๆญป่ง’ใซ่ปŠไธกใŒใ„ใ‚‹ใจใใ€่ตคใ„็ตŒ่ทฏใ‚’่กจ็คบใ—ใพใ™ใ€‚</b> + + + Compass + ใ‚ณใƒณใƒ‘ใ‚น + + + <b>Show the current driving direction</b> with a simple on-screen compass. + <b>็พๅœจใฎ่ตฐ่กŒๆ–นๅ‘ใ‚’่กจ็คบ</b>ใ™ใ‚‹ใ‚ทใƒณใƒ—ใƒซใชใ‚ชใƒณใ‚นใ‚ฏใƒชใƒผใƒณใ‚ณใƒณใƒ‘ใ‚นใ€‚ + + + Driving Personality Button + ้‹่ปขใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒœใ‚ฟใƒณ + + + <b>Control and view the current driving personality</b> via a driving screen widget. + ้‹่ปข็”ป้ขใฎใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆใ‚’้€šใ˜ใฆใ€<b>็พๅœจใฎ้‹่ปขใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใ‚’ๆ“ไฝœใƒป่กจ็คบ</b>ใ—ใพใ™ใ€‚ + + + Gas / Brake Pedal Indicators + ใ‚ขใ‚ฏใ‚ปใƒซ๏ผใƒ–ใƒฌใƒผใ‚ญใƒšใƒ€ใƒซ่กจ็คบ + + + <b>On-screen gas and brake indicators.</b><br><br><b>Dynamic</b>: Opacity changes according to how much openpilot is accelerating or braking<br><b>Static</b>: Full when active, dim when not + <b>็”ป้ขไธŠใฎใ‚ขใ‚ฏใ‚ปใƒซใƒปใƒ–ใƒฌใƒผใ‚ญใ‚คใƒณใ‚ธใ‚ฑใƒผใ‚ฟใƒผใ€‚</b><br><br><b>ใƒ€ใ‚คใƒŠใƒŸใƒƒใ‚ฏ</b>๏ผšopenpilotใฎๅŠ ้€Ÿใƒปๆธ›้€Ÿ้‡ใซๅฟœใ˜ใฆไธ้€ๆ˜ŽๅบฆใŒๅค‰ๅŒ–<br><b>ใ‚นใ‚ฟใƒ†ใ‚ฃใƒƒใ‚ฏ</b>๏ผšไฝœๅ‹•ไธญใฏๆœ€ๅคงใ€้žไฝœๅ‹•ๆ™‚ใฏๆธ›ๅ…‰ + + + Rotating Steering Wheel + ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซๅ›ž่ปขไธญ + + + <b>Rotate the driving screen wheel</b> with the physical steering wheel. + <b>้‹่ปข็”ป้ขใฎใƒ›ใ‚คใƒผใƒซใ‚’ๅ›žใ™</b>ใซใฏ็‰ฉ็†ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใ‚’ๅ›žใ—ใฆใใ ใ•ใ„ใ€‚ + + + Model UI + ใƒขใƒ‡ใƒซUI + + + <b>Model visualizations</b> for the driving path, lane lines, path edges, and road edges. + <b>ใƒขใƒ‡ใƒซใฎๅฏ่ฆ–ๅŒ–</b>๏ผš่ตฐ่กŒ็ตŒ่ทฏใ€่ปŠ็ทšใƒฉใ‚คใƒณใ€็ตŒ่ทฏใ‚จใƒƒใ‚ธใ€่ทฏ่‚ฉใ‚จใƒƒใ‚ธใ€‚ + + + Dynamic Path Width + ใƒ€ใ‚คใƒŠใƒŸใƒƒใ‚ฏใƒ‘ใ‚นๅน… + + + <b>Change the path width based on engagement.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% + <b>ใ‚จใƒณใ‚ฒใƒผใ‚ธ็Šถๆ…‹ใซๅŸบใฅใ„ใฆ่ปŠ็ทšๅน…ใ‚’ๅค‰ๆ›ดใ—ใพใ™ใ€‚</b><br><br><b>ๅฎŒๅ…จใซใ‚จใƒณใ‚ฒใƒผใ‚ธ</b>: 100%<br><b>ๅธธๆ™‚ใ‚ชใƒณใฎๆจชๆ–นๅ‘ๅˆถๅพก</b>: 75%<br><b>ใƒ‡ใ‚ฃใ‚นใ‚จใƒณใ‚ฒใƒผใ‚ธ</b>: 50% + + + Lane Lines Width + ่ปŠ็ทšใƒฉใ‚คใƒณใฎๅน… + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 4 inches. + <b>่ปŠ็ทšใƒฉใ‚คใƒณใฎๅคชใ•ใ‚’่จญๅฎšใ—ใพใ™ใ€‚</b><br><br>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฏMUTCDใฎ่ปŠ็ทšใƒฉใ‚คใƒณๅน…ๆจ™ๆบ–ใงใ‚ใ‚‹4ใ‚คใƒณใƒใซๆบ–ๆ‹ ใ—ใพใ™ใ€‚ + + + Path Edges Width + ็ตŒ่ทฏใ‚จใƒƒใ‚ธๅน… + + + <b>Set the driving-path edge width</b> that represents different driving modes and statuses.<br><br>Default is 20% of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + <b>่ตฐ่กŒใƒ‘ใ‚นใฎ็ธใฎๅน…ใ‚’่จญๅฎš</b>ใ—ใ€ใ•ใพใ–ใพใช่ตฐ่กŒใƒขใƒผใƒ‰ใจ็Šถๆ…‹ใ‚’่กจใ—ใพใ™ใ€‚<br><br>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฏ็ทใƒ‘ใ‚นๅน…ใฎ20%ใงใ™ใ€‚<br><br>่‰ฒใฎใ‚ฌใ‚คใƒ‰:<br><br>- <b>้’</b>: ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณ<br>- <b>ๆฐด่‰ฒ</b>: ๅธธๆ™‚ใ‚ชใƒณๆจชๅˆถๅพก<br>- <b>็ท‘</b>: ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ<br>- <b>ใ‚ชใƒฌใƒณใ‚ธ</b>: ๅฎŸ้จ“ใƒขใƒผใƒ‰<br>- <b>่ตค</b>: ใƒˆใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏใƒขใƒผใƒ‰<br>- <b>้ป„</b>: ๆกไปถไป˜ใๅฎŸ้จ“ใƒขใƒผใƒ‰ใฎไธŠๆ›ธใ + + + Path Width + ่ตฐ่กŒ็ตŒ่ทฏใฎๅน… + + + <b>Set the driving-path width.</b><br><br>Default (6.1 feet) matches the width of a 2019 Lexus ES 350. + <b>่ตฐ่กŒ็ตŒ่ทฏใฎๅน…ใ‚’่จญๅฎšใ—ใพใ™ใ€‚</b><br><br>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ๏ผˆ6.1ใƒ•ใ‚ฃใƒผใƒˆ๏ผ‰ใฏ2019ๅนดๅผ Lexus ES 350 ใฎ่ปŠๅน…ใซไธ€่‡ดใ—ใพใ™ใ€‚ + + + Road Edges Width + ้“่ทฏ็ซฏใฎๅน… + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 4 inches. + <b>้“่ทฏ็ซฏใฎๅคชใ•ใ‚’่จญๅฎšใ—ใพใ™ใ€‚</b><br><br>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฏใ€MUTCDใฎ่ปŠ็ทšใƒฉใ‚คใƒณๅน…ๆจ™ๆบ–4ใ‚คใƒณใƒใฎๅŠๅˆ†ใซ็›ธๅฝ“ใ—ใพใ™ใ€‚ + + + "Unlimited" Road UI + ใ€Œ็„กๅˆถ้™ใ€้“่ทฏUI + + + <b>Extend the length of the driving path, lane lines, and road edges</b> for as far as the model can see. + <b>่ตฐ่กŒ็ตŒ่ทฏใ€่ปŠ็ทšใƒฉใ‚คใƒณใ€่ทฏ่‚ฉใฎ้•ทใ•ใ‚’ๆ‹กๅผต</b>ใ—ใ€ใƒขใƒ‡ใƒซใŒ่ฆ‹ใˆใ‚‹้™ใ‚Šๅ…ˆใพใง่กจ็คบใ—ใพใ™ใ€‚ + + + Navigation Widgets + ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆ + + + <b>Map style, speed limits, and other navigation widgets.</b> + <b>ๅœฐๅ›ณใ‚นใ‚ฟใ‚คใƒซใ€้€Ÿๅบฆๅˆถ้™ใ€ใใฎไป–ใฎใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆใ€‚</b> + + + Larger Map Display + ๅคงใใชๅœฐๅ›ณ่กจ็คบ + + + <b>Increase the map size</b> for easier navigation readings. + <b>ๅœฐๅ›ณใฎใ‚ตใ‚คใ‚บใ‚’ๅคงใใใ™ใ‚‹</b>ใจใƒŠใƒ“ใฎ่ชญใฟๅ–ใ‚ŠใŒๅฎนๆ˜“ใซใชใ‚Šใพใ™ใ€‚ + + + Map Style + ๅœฐๅ›ณใ‚นใ‚ฟใ‚คใƒซ + + + <b>Select the map style</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai style<br><b>FrogPilot</b>: Official FrogPilot map style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>Mike's Personalized Style</b>: Customized hybrid satellite view + <b>ใ€ŒNavigate on openpilotใ€(NOO) ใฎๅœฐๅ›ณใ‚นใ‚ฟใ‚คใƒซใ‚’้ธๆŠž</b>:<br><br><b>Stock openpilot</b>: ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฎ comma.ai ใ‚นใ‚ฟใ‚คใƒซ<br><b>FrogPilot</b>: ๅ…ฌๅผใฎ FrogPilot ใƒžใƒƒใƒ—ใ‚นใ‚ฟใ‚คใƒซ<br><b>Mapbox Streets</b>: ๆจ™ๆบ–็š„ใช้“่ทฏไธญๅฟƒใƒ“ใƒฅใƒผ<br><b>Mapbox Outdoors</b>: ๅฑ‹ๅค–ใจๅœฐๅฝขใฎ็‰นๅพดใ‚’ๅผท่ชฟ<br><b>Mapbox Light</b>: ใƒŸใƒ‹ใƒžใƒซใงๆ˜Žใ‚‹ใ„ใƒ†ใƒผใƒž<br><b>Mapbox Dark</b>: ใƒŸใƒ‹ใƒžใƒซใงๆš—ใ„ใƒ†ใƒผใƒž<br><b>Mapbox Navigation Day</b>: ๆ—ฅไธญใฎใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณใซๆœ€้ฉๅŒ–<br><b>Mapbox Navigation Night</b>: ๅคœ้–“ใฎใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณใซๆœ€้ฉๅŒ–<br><b>Mapbox Satellite</b>: ่ก›ๆ˜Ÿ็”ปๅƒใฎใฟ<br><b>Mapbox Satellite Streets</b>: ่ก›ๆ˜Ÿ็”ปๅƒใจ้“่ทฏใƒฉใƒ™ใƒซใฎใƒใ‚คใƒ–ใƒชใƒƒใƒ‰<br><b>Mapbox Traffic Night</b>: ไบค้€š็Šถๆณใ‚’ๅผท่ชฟใ—ใŸใƒ€ใƒผใ‚ฏใƒ†ใƒผใƒž<br><b>Mike's Personalized Style</b>: ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ•ใ‚ŒใŸใƒใ‚คใƒ–ใƒชใƒƒใƒ‰่ก›ๆ˜Ÿใƒ“ใƒฅใƒผ + + + Road Name + ้“่ทฏๅ + + + <b>Display the road name at the bottom of the driving screen</b> using data from "OpenStreetMap (OSM)". + <b>้‹่ปข็”ป้ขใฎไธ‹้ƒจใซ้“่ทฏๅใ‚’่กจ็คบ</b>๏ผˆใƒ‡ใƒผใ‚ฟๆไพ›๏ผšใ€ŒOpenStreetMap (OSM)ใ€๏ผ‰ + + + Show Speed Limits + ้€Ÿๅบฆๅˆถ้™ใ‚’่กจ็คบ + + + <b>Show speed limits</b> in the top-left corner of the driving screen. Uses data from the car's dashboard (if supported) and "OpenStreetMap (OSM)". + ้‹่ปข็”ป้ขใฎๅทฆไธŠใซ<b>้€Ÿๅบฆๅˆถ้™ใ‚’่กจ็คบ</b>ใ—ใพใ™ใ€‚่ปŠไธกใฎใƒกใƒผใ‚ฟใƒผใƒ‘ใƒใƒซ๏ผˆๅฏพๅฟœใ—ใฆใ„ใ‚‹ๅ ดๅˆ๏ผ‰ใจใ€ŒOpenStreetMap (OSM)ใ€ใฎใƒ‡ใƒผใ‚ฟใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚ + + + Show Speed Limits from Mapbox + Mapboxใฎ้€Ÿๅบฆๅˆถ้™ใ‚’่กจ็คบ + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>ไป–ใฎๆƒ…ๅ ฑๆบใŒใชใ„ๅ ดๅˆใฏ Mapbox ใฎ้€Ÿๅบฆๅˆถ้™ใƒ‡ใƒผใ‚ฟใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚</b> + + + Use Vienna-Style Speed Signs + ใ‚ฆใ‚ฃใƒผใƒณๅผ้€Ÿๅบฆๆจ™่ญ˜ใ‚’ไฝฟ็”จ + + + <b>Show Vienna-style (EU) speed-limit signs</b> instead of MUTCD (US). + <b>ใ‚ฆใ‚ฃใƒผใƒณๅผ๏ผˆEU๏ผ‰ใฎ้€Ÿๅบฆๅˆถ้™ๆจ™่ญ˜ใ‚’่กจ็คบ</b>๏ผˆMUTCD๏ผˆ็ฑณๅ›ฝ๏ผ‰ใงใฏใชใ๏ผ‰ใ€‚ + + + Quality of Life + ็”Ÿๆดปใฎ่ณช + + + <b>Miscellaneous visual changes</b> to fine-tune how the driving screen looks. + ้‹่ปข็”ป้ขใฎ่ฆ‹ใŸ็›ฎใ‚’ๅพฎ่ชฟๆ•ดใ™ใ‚‹ใŸใ‚ใฎ<b>ๅ„็จฎ่ฆ–่ฆš็š„ใชๅค‰ๆ›ด</b>ใ€‚ + + + Camera View + ใ‚ซใƒกใƒฉใƒ“ใƒฅใƒผ + + + <b>Select the active camera view.</b> This is purely a visual change and doesn't impact how openpilot drives! + <b>ใ‚ขใ‚ฏใƒ†ใ‚ฃใƒ–ใชใ‚ซใƒกใƒฉใƒ“ใƒฅใƒผใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ใ€‚</b> ใ“ใ‚Œใฏ่ฆ‹ใŸ็›ฎใฎใฟใฎๅค‰ๆ›ดใงใ€openpilotใฎ้‹่ปขใซใฏๅฝฑ้Ÿฟใ—ใพใ›ใ‚“ใ€‚ + + + Show Driver Camera When In Reverse + ใƒชใƒใƒผใ‚นๆ™‚ใซใƒ‰ใƒฉใ‚คใƒใƒผใ‚ซใƒกใƒฉใ‚’่กจ็คบ + + + <b>Show the driver camera feed</b> when the vehicle is in reverse. + <b>่ปŠไธกใŒๅพŒ้€€ไธญใฏใƒ‰ใƒฉใ‚คใƒใƒผใ‚ซใƒกใƒฉๆ˜ ๅƒใ‚’่กจ็คบ</b> + + + Stopped Timer + ๅœๆญขใ—ใŸใ‚ฟใ‚คใƒžใƒผ + + + <b>Show a timer when stopped</b> in place of the current speed to indicate how long the vehicle has been stopped. + <b>ๅœๆญขๆ™‚ใซใ‚ฟใ‚คใƒžใƒผใ‚’่กจ็คบ</b> ็พๅœจใฎ้€Ÿๅบฆใฎไปฃใ‚ใ‚Šใซใ€ๅœๆญขใ—ใฆใ‹ใ‚‰ใฎ็ตŒ้Žๆ™‚้–“ใ‚’็คบใ—ใพใ™ใ€‚ + + + Hide Map + ๅœฐๅ›ณใ‚’้ž่กจ็คบ + + + Blind Spot + ๆญป่ง’ + + + Steering Torque + ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒˆใƒซใ‚ฏ + + + Turn Signal + ใ‚ฟใƒผใƒณใ‚ทใ‚ฐใƒŠใƒซ + + + Fahrenheit + ่ฏๆฐ + + + CPU + CPU + + + GPU + GPU + + + IP + IP + + + RAM + RAM + + + SSD Left + SSD ๅทฆๅด + + + SSD Used + SSDไฝฟ็”จๆธˆใฟ + + + None + ใชใ— + + + Acceleration: Current + ๅŠ ้€Ÿๅบฆ: ็พๅœจ + + + Acceleration: Max + ๅŠ ้€Ÿ: ๆœ€ๅคง + + + Auto Tune: Actuator Delay + ่‡ชๅ‹•่ชฟๆ•ด: ใ‚ขใ‚ฏใƒใƒฅใ‚จใƒผใ‚ฟ้…ๅปถ + + + Auto Tune: Friction + ่‡ชๅ‹•่ชฟๆ•ด๏ผšๆ‘ฉๆ“ฆ + + + Auto Tune: Lateral Acceleration + ใ‚ชใƒผใƒˆใƒใƒฅใƒผใƒณ๏ผšๆจชๅŠ ้€Ÿๅบฆ + + + Auto Tune: Steer Ratio + ใ‚ชใƒผใƒˆใƒใƒฅใƒผใƒณ๏ผšใ‚นใƒ†ใ‚ขๆฏ” + + + Auto Tune: Stiffness Factor + ใ‚ชใƒผใƒˆใƒใƒฅใƒผใƒณ๏ผšๅ‰›ๆ€งไฟ‚ๆ•ฐ + + + Engagement %: Lateral + ใ‚จใƒณใ‚ฒใƒผใ‚ธใƒกใƒณใƒˆ็އ: ๆจชๆ–นๅ‘ + + + Engagement %: Longitudinal + ใ‚จใƒณใ‚ฒใƒผใ‚ธใƒกใƒณใƒˆ %: ็ธฆๆ–นๅ‘ + + + Lateral Control: Steering Angle + ๆจชๆ–นๅ‘ๅˆถๅพก๏ผšใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐ่ง’ + + + Lateral Control: Torque % Used + ๆจชๅˆถๅพก: ไฝฟ็”จใƒˆใƒซใ‚ฏ % + + + Longitudinal Control: Actuator Acceleration Output + ็ธฆๆ–นๅ‘ๅˆถๅพก๏ผšใ‚ขใ‚ฏใƒใƒฅใ‚จใƒผใ‚ฟๅŠ ้€Ÿๅบฆๅ‡บๅŠ› + + + Longitudinal MPC Jerk: Acceleration + ็ธฆๆ–นๅ‘MPCใ‚ธใƒฃใƒผใ‚ฏ๏ผšๅŠ ้€Ÿ + + + Longitudinal MPC Jerk: Danger Zone + ็ธฆๆ–นๅ‘MPCใ‚ธใƒฃใƒผใ‚ฏ๏ผšๅฑ้™บใ‚พใƒผใƒณ + + + Longitudinal MPC Jerk: Speed Control + ็ธฆๆ–นๅ‘MPCใ‚ธใƒฃใƒผใ‚ฏ๏ผš้€Ÿๅบฆๅˆถๅพก + + + SELECT + ้ธๆŠž + + + Select a metric to display + ่กจ็คบใ™ใ‚‹ใƒกใƒˆใƒชใ‚ฏใ‚นใ‚’้ธๆŠž + + + Show Distance + ่ท้›ขใ‚’่กจ็คบ + + + Dynamic + ๅ‹•็š„ + + + Static + ้™็š„ + + + inches + ใ‚คใƒณใƒ + + + Off + ใ‚ชใƒ• + + + feet + ใƒ•ใ‚ฃใƒผใƒˆ + + + Full Map + ใƒ•ใƒซใƒžใƒƒใƒ— + + + Stock openpilot + ๆจ™ๆบ–ใฎopenpilot + + + FrogPilot + FrogPilot + + + Mapbox Streets + Mapbox Streets + + + Mapbox Outdoors + Mapbox ใ‚ขใ‚ฆใƒˆใƒ‰ใ‚ข + + + Mapbox Light + Mapbox Light + + + Mapbox Dark + Mapbox ใƒ€ใƒผใ‚ฏ + + + Mapbox Navigation Day + MapboxใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณ๏ผˆๆ˜ผ๏ผ‰ + + + Mapbox Navigation Night + MapboxใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณ๏ผˆๅคœ้–“๏ผ‰ + + + Mapbox Satellite + Mapbox ใ‚ตใƒ†ใƒฉใ‚คใƒˆ + + + Mapbox Satellite Streets + Mapbox ใ‚ตใƒ†ใƒฉใ‚คใƒˆ ใ‚นใƒˆใƒชใƒผใƒˆ + + + Mapbox Traffic Night + Mapbox ไบค้€š ๅคœ้–“ + + + Mike's Personalized Style + Mikeใฎใƒ‘ใƒผใ‚ฝใƒŠใƒฉใ‚คใ‚บใƒ‰ใ‚นใ‚ฟใ‚คใƒซ + + + Select a map style + ๅœฐๅ›ณใ‚นใ‚ฟใ‚คใƒซใ‚’้ธๆŠž + + + Auto + ่‡ชๅ‹• + + + Driver + ้‹่ปข่€… + + + Standard + ๆจ™ๆบ– + + + Wide + ใƒฏใ‚คใƒ‰ + + + foot + ใƒ•ใƒƒใƒˆ + + + inch + ใ‚คใƒณใƒ + + + meter + ใƒกใƒผใƒˆใƒซ + + + meters + ใƒกใƒผใƒˆใƒซ + + + centimeter + ใ‚ปใƒณใƒใƒกใƒผใƒˆใƒซ + + + centimeters + ใ‚ปใƒณใƒใƒกใƒผใƒˆใƒซ + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 10 centimeters. + <b>่ปŠ็ทšใƒฉใ‚คใƒณใฎๅคชใ•ใ‚’่จญๅฎšใ—ใพใ™ใ€‚</b><br><br>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฏMUTCDใฎ่ปŠ็ทšใƒฉใ‚คใƒณๅน…ๆจ™ๆบ–ใงใ‚ใ‚‹10ใ‚ปใƒณใƒใƒกใƒผใƒˆใƒซใซไธ€่‡ดใ—ใพใ™ใ€‚ + + + <b>Set the driving-path width.</b><br><br>Default (1.9 meters) matches the width of a 2019 Lexus ES 350. + <b>่ตฐ่กŒใƒ‘ใ‚นใฎๅน…ใ‚’่จญๅฎšใ—ใฆใใ ใ•ใ„ใ€‚</b><br><br>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ๏ผˆ1.9ใƒกใƒผใƒˆใƒซ๏ผ‰ใฏ2019 Lexus ES 350ใฎ่ปŠๅน…ใซไธ€่‡ดใ—ใพใ™ใ€‚ + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 10 centimeters. + <b>้“่ทฏ็ซฏใฎๅคชใ•ใ‚’่จญๅฎšใ—ใพใ™ใ€‚</b><br><br>ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฏใ€MUTCDใฎ่ปŠ็ทš็ทšๅน…ๆจ™ๆบ–10ใ‚ปใƒณใƒใƒกใƒผใƒˆใƒซใฎๅŠๅˆ†ใซไธ€่‡ดใ—ใพใ™ใ€‚ FrogPilotWheelPanel Distance Button - ่ท้›ขใƒœใ‚ฟใƒณ + ่ท้›ขใƒœใ‚ฟใƒณ - The action for a short press of the <b>Distance</b> button. - <b>่ท้›ข</b>ใƒœใ‚ฟใƒณใฎ็ŸญๆŠผใ—ใฎใ‚ขใ‚ฏใ‚ทใƒงใƒณใ€‚ + <b>Action performed when the "Distance" button is pressed.</b> + <b>ใ€Œ่ท้›ขใ€ใƒœใ‚ฟใƒณใŒๆŠผใ•ใ‚ŒใŸใจใใซๅฎŸ่กŒใ•ใ‚Œใ‚‹ๅ‹•ไฝœใ€‚</b> Distance Button (Long Press) - ่ท้›ขใƒœใ‚ฟใƒณ๏ผˆ้•ทๆŠผใ—๏ผ‰ + ่ท้›ขใƒœใ‚ฟใƒณ๏ผˆ้•ทๆŠผใ—๏ผ‰ - The action for a 0.5+ second press of the <b>Distance</b> button. - <b>่ท้›ข</b>ใƒœใ‚ฟใƒณใ‚’0.5็ง’ไปฅไธŠๆŠผใ—ใŸใจใใฎใ‚ขใ‚ฏใ‚ทใƒงใƒณใ€‚ + <b>Action performed when the "Distance" button is pressed for more than 0.5 seconds.</b> + <b>ใ€ŒDistanceใ€ใƒœใ‚ฟใƒณใ‚’0.5็ง’ไปฅไธŠๆŠผใ—ใŸใจใใซๅฎŸ่กŒใ•ใ‚Œใ‚‹ๅ‹•ไฝœใ€‚</b> Distance Button (Very Long Press) - ่ท้›ขใƒœใ‚ฟใƒณ๏ผˆ้žๅธธใซ้•ทๆŠผใ—๏ผ‰ + ่ท้›ขใƒœใ‚ฟใƒณ๏ผˆ่ถ…้•ทๆŠผใ—๏ผ‰ - The action for a 2.5+ second press of the <b>Distance</b> button. - <b>่ท้›ข</b>ใƒœใ‚ฟใƒณใ‚’2.5็ง’ไปฅไธŠๆŠผใ—ใŸใจใใฎใ‚ขใ‚ฏใ‚ทใƒงใƒณใ€‚ + <b>Action performed when the "Distance" button is pressed for more than 2.5 seconds.</b> + <b>ใ€Œ่ท้›ขใ€ใƒœใ‚ฟใƒณใ‚’2.5็ง’ไปฅไธŠๆŠผใ—็ถšใ‘ใŸใจใใซๅฎŸ่กŒใ•ใ‚Œใ‚‹ๅ‹•ไฝœใ€‚</b> LKAS Button - LKASใƒœใ‚ฟใƒณ + LKASใƒœใ‚ฟใƒณ - The action for pressing the <b>LKAS</b> button. - <b>LKAS</b>ใƒœใ‚ฟใƒณใ‚’ๆŠผใ™ๆ“ไฝœใ€‚ + <b>Action performed when the "LKAS" button is pressed.</b> + <b>ใ€ŒLKASใ€ใƒœใ‚ฟใƒณใŒๆŠผใ•ใ‚ŒใŸใจใใซๅฎŸ่กŒใ•ใ‚Œใ‚‹ๆ“ไฝœใ€‚</b> - Nothing - ไฝ•ใ‚‚ใ‚ใ‚Šใพใ›ใ‚“ + No Action + ๆ“ไฝœใชใ— - Pause Lateral - ไธ€ๆ™‚ๅœๆญขใƒฉใƒ†ใƒฉใƒซ + Pause Steering + ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใ‚’ไธ€ๆ™‚ๅœๆญข Change "Personality Profile" - ๆ€งๆ ผใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซ + ใ€Œใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ€ใ‚’ๅค‰ๆ›ด Force openpilot to Coast - openpilotใ‚’ๅผทๅˆถ็š„ใซใ‚ณใƒผใ‚นใƒˆใ•ใ›ใ‚‹ + openpilotใ‚’ๅผทๅˆถ็š„ใซใ‚ณใƒผใ‚นใƒˆใ•ใ›ใ‚‹ - Pause Longitudinal - ็ธฆๆ–ญใ‚’ไธ€ๆ™‚ๅœๆญข + Pause Acceleration/Braking + ๅŠ ้€Ÿ/ๅˆถๅ‹•ใ‚’ไธ€ๆ™‚ๅœๆญข Toggle "Experimental Mode" On/Off - ใ€ŒๅฎŸ้จ“ใƒขใƒผใƒ‰ใ€ใ‚’ใ‚ชใƒณ/ใ‚ชใƒ•ใซๅˆ‡ใ‚Šๆ›ฟใˆ + ใ€ŒๅฎŸ้จ“ใƒขใƒผใƒ‰ใ€ใ‚’ใ‚ชใƒณ/ใ‚ชใƒ•ใซๅˆ‡ใ‚Šๆ›ฟใˆ Toggle "Traffic Mode" On/Off - ใ€Œไบค้€šใƒขใƒผใƒ‰ใ€ใ‚’ใ‚ชใƒณ/ใ‚ชใƒ•ใซๅˆ‡ใ‚Šๆ›ฟใˆ + ใ€ŒTraffic Modeใ€ใ‚’ใ‚ชใƒณ/ใ‚ชใƒ•ใซๅˆ‡ใ‚Šๆ›ฟใˆ SELECT - SELECT + ้ธๆŠž Select a function to assign to this button - ใ“ใฎใƒœใ‚ฟใƒณใซๅ‰ฒใ‚Šๅฝ“ใฆใ‚‹ๆฉŸ่ƒฝใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ + ใ“ใฎใƒœใ‚ฟใƒณใซๅ‰ฒใ‚Šๅฝ“ใฆใ‚‹ๆฉŸ่ƒฝใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ @@ -4297,7 +4406,7 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Characters: %1/%2 - ๆ–‡ๅญ—ๆ•ฐ: %1/%2 + ๆ–‡ๅญ—ๆ•ฐ: %1/%2 @@ -4326,11 +4435,11 @@ Want to submit your own animations? Share them in the "custom-themes" channel on MapSettings NAVIGATION - ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณ + ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณ Manage at %1 - %1ใง็ฎก็† + %1 ใง็ฎก็† @@ -4345,58 +4454,7 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Waiting for route - ใƒซใƒผใƒˆใ‚’ๅพ…ใฃใฆใ„ใพใ™ - - - - ModelReview - - How would you rate that drive? - ใใฎใƒ‰ใƒฉใ‚คใƒ–ใ‚’ใฉใฎใ‚ˆใ†ใซ่ฉ•ไพกใ—ใพใ™ใ‹๏ผŸ - - - Blacklist this model - ใ“ใฎใƒขใƒ‡ใƒซใ‚’ใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใซ็™ป้Œฒใ™ใ‚‹ - - - The model used during that drive was: - ใใฎใƒ‰ใƒฉใ‚คใƒ–ใงไฝฟ็”จใ•ใ‚ŒใŸใƒขใƒ‡ใƒซใฏ: - - - Current Model Score: 0 - ็พๅœจใฎใƒขใƒ‡ใƒซใ‚นใ‚ณใ‚ข: 0 - - - Current Model Rank: 0 - ็พๅœจใฎใƒขใƒ‡ใƒซใƒฉใƒณใ‚ฏ: 0 - - - Total Model Drives: 0 - ็ทใƒขใƒ‡ใƒซใƒ‰ใƒฉใ‚คใƒ–ๆ•ฐ: 0 - - - Total Overall Model Drives: 0 - ็ทๅˆใƒขใƒ‡ใƒซใƒ‰ใƒฉใ‚คใƒ–ๆ•ฐ: 0 - - - Total Model Drives: %1 - ็ทใƒขใƒ‡ใƒซใƒ‰ใƒฉใ‚คใƒ–ๆ•ฐ: %1 - - - Current Model Rank: %1 - ็พๅœจใฎใƒขใƒ‡ใƒซใƒฉใƒณใ‚ฏ: %1 - - - Current Model Score: %1 - ็พๅœจใฎใƒขใƒ‡ใƒซใ‚นใ‚ณใ‚ข: %1 - - - Total Overall Drives: %1 - ็ทๅˆใƒ‰ใƒฉใ‚คใƒ–ๆ•ฐ: %1 - - - Model successfully blacklisted! - ใƒขใƒ‡ใƒซใŒๆญฃๅธธใซใƒ–ใƒฉใƒƒใ‚ฏใƒชใ‚นใƒˆใซ็™ป้Œฒใ•ใ‚Œใพใ—ใŸ๏ผ + ใƒซใƒผใƒˆใ‚’ๅพ…ๆฉŸไธญ @@ -4433,53 +4491,53 @@ Want to submit your own animations? Share them in the "custom-themes" channel on OffroadAlert Immediately connect to the internet to check for updates. If you do not connect to the internet, openpilot won't engage in %1 - ใ™ใใซใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆใซๆŽฅ็ถšใ—ใฆๆ›ดๆ–ฐใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚ใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆใซๆŽฅ็ถšใ—ใชใ„ๅ ดๅˆใ€openpilotใฏ%1ใงไฝœๅ‹•ใ—ใพใ›ใ‚“ใ€‚ + ๆ›ดๆ–ฐใ‚’็ขบ่ชใ™ใ‚‹ใŸใ‚ใ€ใ™ใใซใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆใซๆŽฅ็ถšใ—ใฆใใ ใ•ใ„ใ€‚ใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆใซๆŽฅ็ถšใ—ใชใ„ๅ ดๅˆใ€openpilot ใฏ %1 ใงไฝœๅ‹•ใ—ใพใ›ใ‚“ Connect to internet to check for updates. openpilot won't automatically start until it connects to internet to check for updates. - ใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆใซๆŽฅ็ถšใ—ใฆๆ›ดๆ–ฐใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚openpilotใฏใ€ใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆใซๆŽฅ็ถšใ—ใฆๆ›ดๆ–ฐใ‚’็ขบ่ชใ™ใ‚‹ใพใง่‡ชๅ‹•็š„ใซ้–‹ๅง‹ใ•ใ‚Œใพใ›ใ‚“ใ€‚ + ใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใ‚’็ขบ่ชใ™ใ‚‹ใŸใ‚ใซใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆใซๆŽฅ็ถšใ—ใฆใใ ใ•ใ„ใ€‚openpilotใฏใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใ‚’็ขบ่ชใ™ใ‚‹ใŸใ‚ใซใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆใซๆŽฅ็ถšใ™ใ‚‹ใพใง่‡ชๅ‹•็š„ใซ่ตทๅ‹•ใ—ใพใ›ใ‚“ใ€‚ Unable to download updates %1 - ใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใงใใพใ›ใ‚“ + ใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใงใใพใ›ใ‚“ %1 Taking camera snapshots. System won't start until finished. - ใ‚ซใƒกใƒฉใฎใ‚นใƒŠใƒƒใƒ—ใ‚ทใƒงใƒƒใƒˆใ‚’ๆ’ฎๅฝฑไธญใ€‚ๅฎŒไบ†ใ™ใ‚‹ใพใงใ‚ทใ‚นใƒ†ใƒ ใฏ่ตทๅ‹•ใ—ใพใ›ใ‚“ใ€‚ + ใ‚ซใƒกใƒฉใฎใ‚นใƒŠใƒƒใƒ—ใ‚ทใƒงใƒƒใƒˆใ‚’ๅ–ๅพ—ไธญใ€‚ๅฎŒไบ†ใ™ใ‚‹ใพใงใ‚ทใ‚นใƒ†ใƒ ใฏ่ตทๅ‹•ใ—ใพใ›ใ‚“ใ€‚ An update to your device's operating system is downloading in the background. You will be prompted to update when it's ready to install. - ใŠไฝฟใ„ใฎใƒ‡ใƒใ‚คใ‚นใฎใ‚ชใƒšใƒฌใƒผใƒ†ใ‚ฃใƒณใ‚ฐใ‚ทใ‚นใƒ†ใƒ ใฎๆ›ดๆ–ฐใŒใƒใƒƒใ‚ฏใ‚ฐใƒฉใ‚ฆใƒณใƒ‰ใงใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ•ใ‚Œใฆใ„ใพใ™ใ€‚ใ‚คใƒณใ‚นใƒˆใƒผใƒซใฎๆบ–ๅ‚™ใŒๆ•ดใ†ใจใ€ๆ›ดๆ–ฐใ‚’ไฟƒใ•ใ‚Œใพใ™ใ€‚ + ใŠไฝฟใ„ใฎใƒ‡ใƒใ‚คใ‚นใฎOSๆ›ดๆ–ฐใ‚’ใƒใƒƒใ‚ฏใ‚ฐใƒฉใ‚ฆใƒณใƒ‰ใงใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใฆใ„ใพใ™ใ€‚ใ‚คใƒณใ‚นใƒˆใƒผใƒซใฎๆบ–ๅ‚™ใŒใงใๆฌก็ฌฌใ€ๆ›ดๆ–ฐใฎๆกˆๅ†…ใŒ่กจ็คบใ•ใ‚Œใพใ™ใ€‚ Device failed to register. It will not connect to or upload to comma.ai servers, and receives no support from comma.ai. If this is an official device, visit https://comma.ai/support. - ใƒ‡ใƒใ‚คใ‚นใฎ็™ป้Œฒใซๅคฑๆ•—ใ—ใพใ—ใŸใ€‚comma.aiใฎใ‚ตใƒผใƒใƒผใซๆŽฅ็ถšใ—ใŸใ‚Šใ€ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ—ใŸใ‚Šใ™ใ‚‹ใ“ใจใฏใชใใ€comma.aiใ‹ใ‚‰ใฎใ‚ตใƒใƒผใƒˆใ‚‚ๅ—ใ‘ใ‚‰ใ‚Œใพใ›ใ‚“ใ€‚ใ“ใ‚ŒใŒๅ…ฌๅผใƒ‡ใƒใ‚คใ‚นใงใ‚ใ‚‹ๅ ดๅˆใฏใ€https://comma.ai/support ใ‚’่จชๅ•ใ—ใฆใใ ใ•ใ„ใ€‚ + ใƒ‡ใƒใ‚คใ‚นใฎ็™ป้Œฒใซๅคฑๆ•—ใ—ใพใ—ใŸใ€‚comma.ai ใฎใ‚ตใƒผใƒใƒผใธใฎๆŽฅ็ถšใ‚„ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใฏ่กŒใ‚ใ‚Œใšใ€comma.ai ใ‹ใ‚‰ใฎใ‚ตใƒใƒผใƒˆใ‚‚ๅ—ใ‘ใ‚‰ใ‚Œใพใ›ใ‚“ใ€‚ๅ…ฌๅผใƒ‡ใƒใ‚คใ‚นใฎๅ ดๅˆใฏ https://comma.ai/support ใซใ‚ขใ‚ฏใ‚ปใ‚นใ—ใฆใใ ใ•ใ„ใ€‚ NVMe drive not mounted. - NVMeใƒ‰ใƒฉใ‚คใƒ–ใŒใƒžใ‚ฆใƒณใƒˆใ•ใ‚Œใฆใ„ใพใ›ใ‚“ใ€‚ + NVMeใƒ‰ใƒฉใ‚คใƒ–ใŒใƒžใ‚ฆใƒณใƒˆใ•ใ‚Œใฆใ„ใพใ›ใ‚“ใ€‚ Unsupported NVMe drive detected. Device may draw significantly more power and overheat due to the unsupported NVMe. - ใ‚ตใƒใƒผใƒˆใ•ใ‚Œใฆใ„ใชใ„NVMeใƒ‰ใƒฉใ‚คใƒ–ใŒๆคœๅ‡บใ•ใ‚Œใพใ—ใŸใ€‚ใ‚ตใƒใƒผใƒˆใ•ใ‚Œใฆใ„ใชใ„NVMeใฎใŸใ‚ใ€ใƒ‡ใƒใ‚คใ‚นใŒๅคงๅน…ใซๅคšใใฎ้›ปๅŠ›ใ‚’ๆถˆ่ฒปใ—ใ€้Ž็†ฑใ™ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ + ๆœชๅฏพๅฟœใฎNVMeใƒ‰ใƒฉใ‚คใƒ–ใŒๆคœๅ‡บใ•ใ‚Œใพใ—ใŸใ€‚ๆœชๅฏพๅฟœใฎNVMeใซใ‚ˆใ‚Šใ€ใƒ‡ใƒใ‚คใ‚นใŒๅคงๅน…ใซๅคšใใฎ้›ปๅŠ›ใ‚’ๆถˆ่ฒปใ—ใ€้Ž็†ฑใ™ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ openpilot was unable to identify your car. Your car is either unsupported or its ECUs are not recognized. Please submit a pull request to add the firmware versions to the proper vehicle. Need help? Join discord.comma.ai. - openpilotใฏใ‚ใชใŸใฎ่ปŠใ‚’่ญ˜ๅˆฅใงใใพใ›ใ‚“ใงใ—ใŸใ€‚ใ‚ใชใŸใฎ่ปŠใฏใ‚ตใƒใƒผใƒˆใ•ใ‚Œใฆใ„ใชใ„ใ‹ใ€ECUใŒ่ช่ญ˜ใ•ใ‚Œใฆใ„ใพใ›ใ‚“ใ€‚้ฉๅˆ‡ใช่ปŠไธกใซใƒ•ใ‚กใƒผใƒ ใ‚ฆใ‚งใ‚ขใƒใƒผใ‚ธใƒงใƒณใ‚’่ฟฝๅŠ ใ™ใ‚‹ใŸใ‚ใซใƒ—ใƒซใƒชใ‚ฏใ‚จใ‚นใƒˆใ‚’ๆๅ‡บใ—ใฆใใ ใ•ใ„ใ€‚ๅŠฉใ‘ใŒๅฟ…่ฆใงใ™ใ‹๏ผŸdiscord.comma.aiใซๅ‚ๅŠ ใ—ใฆใใ ใ•ใ„ใ€‚ + openpilotใฏใ‚ใชใŸใฎ่ปŠใ‚’่ญ˜ๅˆฅใงใใพใ›ใ‚“ใงใ—ใŸใ€‚ใ‚ใชใŸใฎ่ปŠใฏๆœชๅฏพๅฟœใงใ‚ใ‚‹ใ‹ใ€ECUใŒ่ช่ญ˜ใ•ใ‚Œใฆใ„ใพใ›ใ‚“ใ€‚ๆญฃใ—ใ„่ปŠ็จฎใซใƒ•ใ‚กใƒผใƒ ใ‚ฆใ‚งใ‚ขใฎใƒใƒผใ‚ธใƒงใƒณใ‚’่ฟฝๅŠ ใ™ใ‚‹ใƒ—ใƒซใƒชใ‚ฏใ‚จใ‚นใƒˆใ‚’้€ใฃใฆใใ ใ•ใ„ใ€‚ๅŠฉใ‘ใŒๅฟ…่ฆใงใ™ใ‹๏ผŸdiscord.comma.aiใซๅ‚ๅŠ ใ—ใฆใใ ใ•ใ„ใ€‚ openpilot was unable to identify your car. Check integrity of cables and ensure all connections are secure, particularly that the comma power is fully inserted in the OBD-II port of the vehicle. Need help? Join discord.comma.ai. - openpilotใฏใ‚ใชใŸใฎ่ปŠใ‚’่ญ˜ๅˆฅใงใใพใ›ใ‚“ใงใ—ใŸใ€‚ใ‚ฑใƒผใƒ–ใƒซใฎๆ•ดๅˆๆ€งใ‚’็ขบ่ชใ—ใ€ใ™ในใฆใฎๆŽฅ็ถšใŒ็ขบๅฎŸใงใ‚ใ‚‹ใ“ใจใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚็‰นใซใ€ใ‚ซใƒผใƒžใƒ‘ใƒฏใƒผใŒ่ปŠไธกใฎOBD-IIใƒใƒผใƒˆใซๅฎŒๅ…จใซๆŒฟๅ…ฅใ•ใ‚Œใฆใ„ใ‚‹ใ“ใจใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚ๅŠฉใ‘ใŒๅฟ…่ฆใงใ™ใ‹๏ผŸdiscord.comma.aiใซๅ‚ๅŠ ใ—ใฆใใ ใ•ใ„ใ€‚ + openpilotใฏใ‚ใชใŸใฎ่ปŠใ‚’็‰นๅฎšใงใใพใ›ใ‚“ใงใ—ใŸใ€‚ใ‚ฑใƒผใƒ–ใƒซใฎๆ•ดๅˆๆ€งใ‚’็ขบ่ชใ—ใ€ใ™ในใฆใฎๆŽฅ็ถšใŒ็ขบๅฎŸใงใ‚ใ‚‹ใ“ใจใ€็‰นใซcomma powerใŒ่ปŠไธกใฎOBD-IIใƒใƒผใƒˆใซๆœ€ๅพŒใพใงๅทฎใ—่พผใพใ‚Œใฆใ„ใ‚‹ใ“ใจใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚ใ‚ตใƒใƒผใƒˆใŒๅฟ…่ฆใงใ™ใ‹๏ผŸdiscord.comma.aiใซๅ‚ๅŠ ใ—ใฆใใ ใ•ใ„ใ€‚ openpilot detected a change in the device's mounting position. Ensure the device is fully seated in the mount and the mount is firmly secured to the windshield. - openpilotใฏใƒ‡ใƒใ‚คใ‚นใฎๅ–ใ‚Šไป˜ใ‘ไฝ็ฝฎใฎๅค‰ๆ›ดใ‚’ๆคœๅ‡บใ—ใพใ—ใŸใ€‚ใƒ‡ใƒใ‚คใ‚นใŒใƒžใ‚ฆใƒณใƒˆใซใ—ใฃใ‹ใ‚ŠใจๅŽใพใฃใฆใŠใ‚Šใ€ใƒžใ‚ฆใƒณใƒˆใŒใƒ•ใƒญใƒณใƒˆใ‚ฌใƒฉใ‚นใซใ—ใฃใ‹ใ‚Šใจๅ›บๅฎšใ•ใ‚Œใฆใ„ใ‚‹ใ“ใจใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚ + openpilot ใŒใƒ‡ใƒใ‚คใ‚นใฎๅ–ใ‚Šไป˜ใ‘ไฝ็ฝฎใฎๅค‰ๅŒ–ใ‚’ๆคœๅ‡บใ—ใพใ—ใŸใ€‚ใƒ‡ใƒใ‚คใ‚นใŒใƒžใ‚ฆใƒณใƒˆใซ็ขบๅฎŸใซๅŽใพใฃใฆใ„ใ‚‹ใ“ใจใ€ใพใŸใƒžใ‚ฆใƒณใƒˆใŒใƒ•ใƒญใƒณใƒˆใ‚ฌใƒฉใ‚นใซใ—ใฃใ‹ใ‚Šๅ›บๅฎšใ•ใ‚Œใฆใ„ใ‚‹ใ“ใจใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚ Device temperature too high. System cooling down before starting. Current internal component temperature: %1 - ใƒ‡ใƒใ‚คใ‚นใฎๆธฉๅบฆใŒ้ซ˜ใ™ใŽใพใ™ใ€‚่ตทๅ‹•ๅ‰ใซใ‚ทใ‚นใƒ†ใƒ ใ‚’ๅ†ทๅดใ—ใฆใ„ใพใ™ใ€‚็พๅœจใฎๅ†…้ƒจใ‚ณใƒณใƒใƒผใƒใƒณใƒˆใฎๆธฉๅบฆ: %1 + ใƒ‡ใƒใ‚คใ‚นใฎๆธฉๅบฆใŒ้ซ˜ใ™ใŽใพใ™ใ€‚่ตทๅ‹•ๅ‰ใซใ‚ทใ‚นใƒ†ใƒ ใ‚’ๅ†ทๅดใ—ใฆใ„ใพใ™ใ€‚็พๅœจใฎๅ†…้ƒจใ‚ณใƒณใƒใƒผใƒใƒณใƒˆๆธฉๅบฆ: %1 @@ -4501,35 +4559,35 @@ Want to submit your own animations? Share them in the "custom-themes" channel on OnroadAlerts openpilot Unavailable - openpilotใฏๅˆฉ็”จใงใใพใ›ใ‚“ + openpilotใฏไฝฟ็”จใงใใพใ›ใ‚“ Waiting for controls to start - ใ‚ณใƒณใƒˆใƒญใƒผใƒซใฎ้–‹ๅง‹ใ‚’ๅพ…ใฃใฆใ„ใพใ™ + ใ‚ณใƒณใƒˆใƒญใƒผใƒซใฎ้–‹ๅง‹ใ‚’ๅพ…ๆฉŸใ—ใฆใ„ใพใ™ TAKE CONTROL IMMEDIATELY - ใ™ใใซๅˆถๅพกใ‚’ๅ–ใ‚Œ + ็›ดใกใซๆ“ไฝœใ‚’ๅผ•ใ็ถ™ใ„ใงใใ ใ•ใ„ Controls Unresponsive - ใ‚ณใƒณใƒˆใƒญใƒผใƒซใŒๅๅฟœใ—ใชใ„ + ใ‚ณใƒณใƒˆใƒญใƒผใƒซใŒๅฟœ็ญ”ใ—ใพใ›ใ‚“ Reboot Device - ใƒ‡ใƒใ‚คใ‚นใ‚’ๅ†่ตทๅ‹• - - - openpilot crashed ๐Ÿ’ฉ - openpilotใŒใ‚ฏใƒฉใƒƒใ‚ทใƒฅใ—ใพใ—ใŸ ๐Ÿ’ฉ + ใƒ‡ใƒใ‚คใ‚นใ‚’ๅ†่ตทๅ‹• openpilot crashed - openpilotใŒใ‚ฏใƒฉใƒƒใ‚ทใƒฅใ—ใพใ—ใŸ + openpilotใŒใ‚ฏใƒฉใƒƒใ‚ทใƒฅใ—ใพใ—ใŸ Please post the "Error Log" in the FrogPilot Discord! - FrogPilot Discordใซใ€Œใ‚จใƒฉใƒผใƒญใ‚ฐใ€ใ‚’ๆŠ•็จฟใ—ใฆใใ ใ•ใ„๏ผ + FrogPilotใฎDiscordใซใ€ŒError Logใ€ใ‚’ๆŠ•็จฟใ—ใฆใใ ใ•ใ„๏ผ + + + openpilot crashed ๐Ÿ’ฉ + openpilot ใŒใ‚ฏใƒฉใƒƒใ‚ทใƒฅใ—ใพใ—ใŸ ๐Ÿ’ฉ @@ -4540,15 +4598,15 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Pair your device to your %1 account - ใƒ‡ใƒใ‚คใ‚นใ‚’%1ใ‚ขใ‚ซใ‚ฆใƒณใƒˆใซใƒšใ‚ขใƒชใƒณใ‚ฐใ—ใฆใใ ใ•ใ„ใ€‚ + ใƒ‡ใƒใ‚คใ‚นใ‚’%1ใ‚ขใ‚ซใ‚ฆใƒณใƒˆใซใƒšใ‚ขใƒชใƒณใ‚ฐใ—ใฆใใ ใ•ใ„ Go to https://%1 on your phone - Go to https://%1 on your phone + ้›ป่ฉฑใง https://%1 ใซใ‚ขใ‚ฏใ‚ปใ‚นใ—ใฆใใ ใ•ใ„ Bookmark %1 to your home screen to use it like an app - %1ใ‚’ใƒ›ใƒผใƒ ็”ป้ขใซใƒ–ใƒƒใ‚ฏใƒžใƒผใ‚ฏใ—ใฆใ€ใ‚ขใƒ—ใƒชใฎใ‚ˆใ†ใซไฝฟ็”จใ—ใฆใใ ใ•ใ„ใ€‚ + ใ‚ขใƒ—ใƒชใฎใ‚ˆใ†ใซไฝฟใ†ใซใฏใ€%1 ใ‚’ใƒ›ใƒผใƒ ็”ป้ขใซใƒ–ใƒƒใ‚ฏใƒžใƒผใ‚ฏใ—ใฆใใ ใ•ใ„ @@ -4582,15 +4640,15 @@ Want to submit your own animations? Share them in the "custom-themes" channel on 24/7 LTE connectivity - 24/7 LTEๆŽฅ็ถš + 24ๆ™‚้–“365ๆ—ฅใฎLTEๆŽฅ็ถš Turn-by-turn navigation - ใ‚ฟใƒผใƒณใƒใ‚คใ‚ฟใƒผใƒณใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณ + ใ‚ฟใƒผใƒณใƒใ‚คใ‚ฟใƒผใƒณใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณ 1 year of drive storage - 1ๅนด้–“ใฎใƒ‰ใƒฉใ‚คใƒ–ใ‚นใƒˆใƒฌใƒผใ‚ธ + 1ๅนด้–“ใฎ้‹่ปขใƒ‡ใƒผใ‚ฟไฟๅญ˜ @@ -4646,15 +4704,15 @@ Want to submit your own animations? Share them in the "custom-themes" channel on now - ไปŠ - - - FrogPilot - ใƒ•ใƒญใƒƒใ‚ฐใƒ‘ใ‚คใƒญใƒƒใƒˆ + ไปŠ Restore - ๅพฉๅ…ƒ + ๅพฉๅ…ƒ + + + FrogPilot + FrogPilot @@ -4685,28 +4743,28 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device. - ใƒ‡ใƒผใ‚ฟใƒ‘ใƒผใƒ†ใ‚ฃใ‚ทใƒงใƒณใ‚’ใƒžใ‚ฆใƒณใƒˆใงใใพใ›ใ‚“ใ€‚ใƒ‘ใƒผใƒ†ใ‚ฃใ‚ทใƒงใƒณใŒ็ ดๆใ—ใฆใ„ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ใƒ‡ใƒใ‚คใ‚นใ‚’ๆถˆๅŽปใ—ใฆใƒชใ‚ปใƒƒใƒˆใ™ใ‚‹ใซใฏใ€็ขบ่ชใ‚’ๆŠผใ—ใฆใใ ใ•ใ„ใ€‚ + ใƒ‡ใƒผใ‚ฟใƒ‘ใƒผใƒ†ใ‚ฃใ‚ทใƒงใƒณใ‚’ใƒžใ‚ฆใƒณใƒˆใงใใพใ›ใ‚“ใ€‚ใƒ‘ใƒผใƒ†ใ‚ฃใ‚ทใƒงใƒณใŒ็ ดๆใ—ใฆใ„ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚็ขบ่ชใ‚’ๆŠผใ—ใฆๆถˆๅŽปใ—ใ€ใƒ‡ใƒใ‚คใ‚นใ‚’ใƒชใ‚ปใƒƒใƒˆใ—ใฆใใ ใ•ใ„ใ€‚ Resetting device... This may take up to a minute. - ใƒ‡ใƒใ‚คใ‚นใ‚’ใƒชใ‚ปใƒƒใƒˆใ—ใฆใ„ใพใ™... -ใ“ใ‚Œใซใฏๆœ€ๅคงใง1ๅˆ†ใ‹ใ‹ใ‚‹ๅ ดๅˆใŒใ‚ใ‚Šใพใ™ใ€‚ + ใƒ‡ใƒใ‚คใ‚นใ‚’ใƒชใ‚ปใƒƒใƒˆใ—ใฆใ„ใพใ™โ€ฆ +ๆœ€ๅคงใง1ๅˆ†ใปใฉใ‹ใ‹ใ‚‹ๅ ดๅˆใŒใ‚ใ‚Šใพใ™ใ€‚ System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - ใ‚ทใ‚นใƒ†ใƒ ใƒชใ‚ปใƒƒใƒˆใŒใƒˆใƒชใ‚ฌใƒผใ•ใ‚Œใพใ—ใŸใ€‚ใ™ในใฆใฎใ‚ณใƒณใƒ†ใƒณใƒ„ใจ่จญๅฎšใ‚’ๆถˆๅŽปใ™ใ‚‹ใซใฏ็ขบ่ชใ‚’ๆŠผใ—ใฆใใ ใ•ใ„ใ€‚่ตทๅ‹•ใ‚’ๅ†้–‹ใ™ใ‚‹ใซใฏใ‚ญใƒฃใƒณใ‚ปใƒซใ‚’ๆŠผใ—ใฆใใ ใ•ใ„ใ€‚ + ใ‚ทใ‚นใƒ†ใƒ ใฎใƒชใ‚ปใƒƒใƒˆใŒใƒˆใƒชใ‚ฌใƒผใ•ใ‚Œใพใ—ใŸใ€‚ใ™ในใฆใฎใ‚ณใƒณใƒ†ใƒณใƒ„ใจ่จญๅฎšใ‚’ๆถˆๅŽปใ™ใ‚‹ใซใฏ็ขบ่ชใ‚’ๆŠผใ—ใฆใใ ใ•ใ„ใ€‚่ตทๅ‹•ใ‚’ๅ†้–‹ใ™ใ‚‹ใซใฏใ‚ญใƒฃใƒณใ‚ปใƒซใ‚’ๆŠผใ—ใฆใใ ใ•ใ„ใ€‚ ScreenRecorder RECORDING - ้Œฒ้Ÿณ + ้Œฒ็”ปไธญ RECORD - ่จ˜้Œฒ + ่จ˜้Œฒ @@ -4729,35 +4787,35 @@ This may take up to a minute. โ† Back - โ† ๆˆปใ‚‹ + โ† ๆˆปใ‚‹ FrogPilot - ใƒ•ใƒญใƒƒใ‚ฐใƒ‘ใ‚คใƒญใƒƒใƒˆ - - - Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - FrogPilotใธใ‚ˆใ†ใ“ใ๏ผFrogPilotใ‚’ๅˆใ‚ใฆใ”ๅˆฉ็”จใฎใŸใ‚ใ€ใ€ŒMinimalใ€ใƒˆใ‚ฐใƒซใƒ—ใƒชใ‚ปใƒƒใƒˆใŒ้ฉ็”จใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ใ€ŒTuning Levelใ€ใƒœใ‚ฟใƒณใ‹ใ‚‰ใ„ใคใงใ‚‚ๅค‰ๆ›ดใงใใพใ™๏ผ - - - Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - FrogPilotใ‚’ๅˆใ‚ใฆใ”ๅˆฉ็”จใ„ใŸใ ใใŸใ‚ใ€ใ€ŒMinimalใ€ใƒˆใ‚ฐใƒซใƒ—ใƒชใ‚ปใƒƒใƒˆใŒ้ฉ็”จใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ใ€ŒTuning Levelใ€ใƒœใ‚ฟใƒณใ‹ใ‚‰ใ„ใคใงใ‚‚ๅค‰ๆ›ดใงใใพใ™๏ผ - - - Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ใ‚ใชใŸใฏopenpilotใซ็ฒพ้€šใ—ใฆใ„ใ‚‹ใฎใงใ€ใ€Œๆจ™ๆบ–ใ€ใƒˆใ‚ฐใƒซใƒ—ใƒชใ‚ปใƒƒใƒˆใŒ้ฉ็”จใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ใ€Œใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐใƒฌใƒ™ใƒซใ€ใƒœใ‚ฟใƒณใงใ„ใคใงใ‚‚ใ“ใ‚Œใ‚’ๅค‰ๆ›ดใงใใพใ™๏ผ - - - Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ใ‚ใชใŸใฏFrogPilotใซ็ฒพ้€šใ—ใฆใ„ใ‚‹ใฎใงใ€ใ€ŒStandardใ€ใƒˆใ‚ฐใƒซใƒ—ใƒชใ‚ปใƒƒใƒˆใŒ้ฉ็”จใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ใ€ŒTuning Levelใ€ใƒœใ‚ฟใƒณใ‚’ไฝฟใฃใฆใ„ใคใงใ‚‚ใ“ใ‚Œใ‚’ๅค‰ๆ›ดใงใใพใ™๏ผ - - - Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ใ‚ใชใŸใฏFrogPilotใซ้žๅธธใซ็ฒพ้€šใ—ใฆใ„ใ‚‹ใฎใงใ€ใ€Œ้ซ˜ๅบฆใชใ€ใƒˆใ‚ฐใƒซใƒ—ใƒชใ‚ปใƒƒใƒˆใŒ้ฉ็”จใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ใ€Œใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐใƒฌใƒ™ใƒซใ€ใƒœใ‚ฟใƒณใงใ„ใคใงใ‚‚ใ“ใ‚Œใ‚’ๅค‰ๆ›ดใงใใพใ™๏ผ + FrogPilot Welcome to FrogPilot! Since you're new to openpilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - FrogPilotใธใ‚ˆใ†ใ“ใ๏ผopenpilotใ‚’ๅˆใ‚ใฆใ”ๅˆฉ็”จใฎๅ ดๅˆใ€ใ€ŒMinimalใ€ใƒˆใ‚ฐใƒซใƒ—ใƒชใ‚ปใƒƒใƒˆใŒ้ฉ็”จใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ใ€ŒTuning Levelใ€ใƒœใ‚ฟใƒณใ‹ใ‚‰ใ„ใคใงใ‚‚ๅค‰ๆ›ดใงใใพใ™๏ผ + FrogPilotใธใ‚ˆใ†ใ“ใ๏ผopenpilotใŒๅˆใ‚ใฆใฎใŸใ‚ใ€ใ€ŒMinimalใ€ใƒˆใ‚ฐใƒซใƒ—ใƒชใ‚ปใƒƒใƒˆใŒ้ฉ็”จใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ใ€ŒTuning Levelใ€ใƒœใ‚ฟใƒณใ‹ใ‚‰ใ„ใคใงใ‚‚ๅค‰ๆ›ดใงใใพใ™๏ผ + + + Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + FrogPilotใธใ‚ˆใ†ใ“ใ๏ผFrogPilotใŒๅˆใ‚ใฆใฎใŸใ‚ใ€ใ€ŒMinimalใ€ใฎใƒˆใ‚ฐใƒซใƒ—ใƒชใ‚ปใƒƒใƒˆใŒ้ฉ็”จใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ใ€ŒTuning Levelใ€ใƒœใ‚ฟใƒณใ‹ใ‚‰ใ„ใคใงใ‚‚ๅค‰ๆ›ดใงใใพใ™๏ผ + + + Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + FrogPilot ใ‚’ไฝฟใ„ๅง‹ใ‚ใŸใฐใ‹ใ‚ŠใฎใŸใ‚ใ€ใ€ŒMinimalใ€ใƒˆใ‚ฐใƒซใƒ—ใƒชใ‚ปใƒƒใƒˆใŒ้ฉ็”จใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ใ€ŒTuning Levelใ€ใƒœใ‚ฟใƒณใ‹ใ‚‰ใ„ใคใงใ‚‚ๅค‰ๆ›ดใงใใพใ™ใ€‚ + + + Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + ใ‚ใชใŸใฏopenpilotใซ็ฒพ้€šใ—ใฆใ„ใ‚‹ใŸใ‚ใ€Œๆจ™ๆบ–ใ€ใฎใƒˆใ‚ฐใƒซใƒ—ใƒชใ‚ปใƒƒใƒˆใŒ้ฉ็”จใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ใ€Œใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐใƒฌใƒ™ใƒซใ€ใƒœใ‚ฟใƒณใ‹ใ‚‰ใ„ใคใงใ‚‚ๅค‰ๆ›ดใงใใพใ™๏ผ + + + Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + FrogPilotใฎ็ตŒ้จ“ใŒใ‚ใ‚‹ใŸใ‚ใ€ŒStandardใ€ใฎใƒˆใ‚ฐใƒซใƒ—ใƒชใ‚ปใƒƒใƒˆใŒ้ฉ็”จใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ใ€ŒTuning Levelใ€ใƒœใ‚ฟใƒณใ‹ใ‚‰ใ„ใคใงใ‚‚ๅค‰ๆ›ดใงใใพใ™ใ€‚ + + + Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + FrogPilotใซ็ฒพ้€šใ—ใฆใ„ใ‚‹ใŸใ‚ใ€ŒAdvancedใ€ใฎใƒˆใ‚ฐใƒซใƒ—ใƒชใ‚ปใƒƒใƒˆใŒ้ฉ็”จใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ใ€ŒTuning Levelใ€ใƒœใ‚ฟใƒณใ‹ใ‚‰ใ„ใคใงใ‚‚ๅค‰ๆ›ดใงใใพใ™ใ€‚ @@ -4832,11 +4890,11 @@ This may take up to a minute. No custom software found at this URL. - ใ“ใฎURLใซใฏใ‚ซใ‚นใ‚ฟใƒ ใ‚ฝใƒ•ใƒˆใ‚ฆใ‚งใ‚ขใŒ่ฆ‹ใคใ‹ใ‚Šใพใ›ใ‚“ใงใ—ใŸใ€‚ + ใ“ใฎURLใซใฏใ‚ซใ‚นใ‚ฟใƒ ใ‚ฝใƒ•ใƒˆใ‚ฆใ‚งใ‚ขใŒ่ฆ‹ใคใ‹ใ‚Šใพใ›ใ‚“ใ€‚ Something went wrong. Reboot the device. - ๅ•้กŒใŒ็™บ็”Ÿใ—ใพใ—ใŸใ€‚ใƒ‡ใƒใ‚คใ‚นใ‚’ๅ†่ตทๅ‹•ใ—ใฆใใ ใ•ใ„ใ€‚ + ๅ•้กŒใŒ็™บ็”Ÿใ—ใพใ—ใŸใ€‚ใƒ‡ใƒใ‚คใ‚นใ‚’ๅ†่ตทๅ‹•ใ—ใฆใใ ใ•ใ„ใ€‚ Select a language @@ -4844,15 +4902,15 @@ This may take up to a minute. Choose Software to Install - ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ™ใ‚‹ใ‚ฝใƒ•ใƒˆใ‚ฆใ‚งใ‚ขใ‚’้ธๆŠž + ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ™ใ‚‹ใ‚ฝใƒ•ใƒˆใ‚ฆใ‚งใ‚ขใ‚’้ธๆŠž openpilot - openpilot + openpilot Custom Software - ใ‚ซใ‚นใ‚ฟใƒ ใ‚ฝใƒ•ใƒˆใ‚ฆใ‚งใ‚ข + ใ‚ซใ‚นใ‚ฟใƒ ใ‚ฝใƒ•ใƒˆใ‚ฆใ‚งใ‚ข @@ -4871,7 +4929,7 @@ This may take up to a minute. Pair your device with Konik connect (stable.konik.ai). - ใƒ‡ใƒใ‚คใ‚นใ‚’Konik connect๏ผˆstable.konik.ai๏ผ‰ใจใƒšใ‚ขใƒชใƒณใ‚ฐใ—ใฆใใ ใ•ใ„ใ€‚ + ใƒ‡ใƒใ‚คใ‚นใ‚’Konik connect๏ผˆstable.konik.ai๏ผ‰ใจใƒšใ‚ขใƒชใƒณใ‚ฐใ—ใฆใใ ใ•ใ„ใ€‚ @@ -4958,27 +5016,27 @@ This may take up to a minute. GPU - GPU + GPU CPU - CPU + CPU GB - GB + GB MEMORY - ใƒกใƒขใƒช + ใƒกใƒขใƒช LEFT - ๅทฆ + ๅทฆ USED - ไธญๅคๅ“ + ไฝฟ็”จๆธˆใฟ @@ -5033,59 +5091,59 @@ This may take up to a minute. failed to check for update - ๆ›ดๆ–ฐใฎ็ขบ่ชใซๅคฑๆ•—ใ—ใพใ—ใŸ + ใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใฎ็ขบ่ชใซๅคฑๆ•—ใ—ใพใ—ใŸ up to date, last checked %1 - ๆœ€ๆ–ฐใ€ๆœ€็ต‚็ขบ่ช %1 + ๆœ€ๆ–ฐใงใ™ใ€ๆœ€็ต‚็ขบ่ช %1 DOWNLOAD - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ + ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ update available - ใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใŒๅˆฉ็”จๅฏ่ƒฝใงใ™ + ใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใŒๅˆฉ็”จๅฏ่ƒฝใงใ™ never - ๆฑบใ—ใฆ + ๆฑบใ—ใฆ Updates are only downloaded while the car is off or in park. - ใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใฏใ€่ปŠใŒใ‚ชใƒ•ใพใŸใฏใƒ‘ใƒผใ‚ฏใซใ‚ใ‚‹ใจใใฎใฟใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ•ใ‚Œใพใ™ใ€‚ + ใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใฏใ€่ปŠไธกใฎ้›ปๆบใŒๅˆ‡ใ‚Œใฆใ„ใ‚‹ใจใใ€ใพใŸใฏใƒ‘ใƒผใ‚ญใƒณใ‚ฐไธญใฎใฟใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ•ใ‚Œใพใ™ใ€‚ Automatically Update FrogPilot - FrogPilotใ‚’่‡ชๅ‹•ๆ›ดๆ–ฐ - - - Error Log - ใ‚จใƒฉใƒผใƒญใ‚ฐ - - - VIEW - ่กจ็คบ - - - View the error log for openpilot crashes. - openpilotใฎใ‚ฏใƒฉใƒƒใ‚ทใƒฅใฎใ‚จใƒฉใƒผใƒญใ‚ฐใ‚’่กจ็คบใ—ใพใ™ใ€‚ - - - Do you want to delete deep storage FrogPilot assets? This includes your toggle settings for quick reinstalls. - ๆทฑๅฑคใ‚นใƒˆใƒฌใƒผใ‚ธใฎFrogPilotใ‚ขใ‚ปใƒƒใƒˆใ‚’ๅ‰Š้™คใ—ใพใ™ใ‹๏ผŸใ“ใ‚Œใซใฏใ€ใ‚ฏใ‚คใƒƒใ‚ฏๅ†ใ‚คใƒณใ‚นใƒˆใƒผใƒซ็”จใฎใƒˆใ‚ฐใƒซ่จญๅฎšใŒๅซใพใ‚Œใพใ™ใ€‚ - - - Are you sure? This is 100% unrecoverable and if you reinstall FrogPilot you'll lose all your previous settings! - ๆœฌๅฝ“ใซๅคงไธˆๅคซใงใ™ใ‹๏ผŸใ“ใ‚Œใฏ100%ๅพฉๅ…ƒไธๅฏ่ƒฝใงใ€FrogPilotใ‚’ๅ†ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ™ใ‚‹ใจไปฅๅ‰ใฎ่จญๅฎšใŒใ™ในใฆๅคฑใ‚ใ‚Œใพใ™๏ผ - - - This branch must be downloaded before switching. Would you like to download it now? - ใ“ใฎใƒ–ใƒฉใƒณใƒใฏๅˆ‡ใ‚Šๆ›ฟใˆใ‚‹ๅ‰ใซใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚ไปŠใ™ใใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใพใ™ใ‹๏ผŸ + FrogPilot ใ‚’่‡ชๅ‹•ๆ›ดๆ–ฐ FrogPilot will automatically update itself and it's assets when you're offroad and have an active internet connection. - FrogPilotใฏใ€ใ‚ชใƒ•ใƒญใƒผใƒ‰ไธญใงใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆๆŽฅ็ถšใŒใ‚ขใ‚ฏใƒ†ใ‚ฃใƒ–ใชๅ ดๅˆใ€่‡ชๅ‹•็š„ใซ่‡ช่บซใจใใฎใ‚ขใ‚ปใƒƒใƒˆใ‚’ๆ›ดๆ–ฐใ—ใพใ™ใ€‚ + FrogPilotใฏใ€ใ‚ชใƒ•ใƒญใƒผใƒ‰ไธญใงใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆๆŽฅ็ถšใŒๆœ‰ๅŠนใชใจใใซใ€่‡ช่บซใจใ‚ขใ‚ปใƒƒใƒˆใ‚’่‡ชๅ‹•ๆ›ดๆ–ฐใ—ใพใ™ใ€‚ + + + This branch must be downloaded before switching. Would you like to download it now? + ใ“ใฎใƒ–ใƒฉใƒณใƒใฏๅˆ‡ใ‚Šๆ›ฟใˆใ‚‹ๅ‰ใซใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚ไปŠใ™ใใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใพใ™ใ‹? + + + Error Log + ใ‚จใƒฉใƒผใƒญใ‚ฐ + + + VIEW + ่กจ็คบ + + + View the error log for openpilot crashes. + openpilotใฎใ‚ฏใƒฉใƒƒใ‚ทใƒฅใฎใ‚จใƒฉใƒผใƒญใ‚ฐใ‚’่กจ็คบใ—ใพใ™ + + + Do you want to perform a full factory reset? All saved assets and settings will be permanently deleted! + ๅฎŒๅ…จใชๅ‡บ่ทๆ™‚ใƒชใ‚ปใƒƒใƒˆใ‚’ๅฎŸ่กŒใ—ใพใ™ใ‹๏ผŸไฟๅญ˜ใ•ใ‚ŒใŸใ™ในใฆใฎใ‚ขใ‚ปใƒƒใƒˆใจ่จญๅฎšใฏๆฐธไน…ใซๅ‰Š้™คใ•ใ‚Œใพใ™๏ผ + + + This is a complete factory reset and cannot be undone. Are you absolutely sure you want to continue? + ใ“ใ‚ŒใฏๅฎŒๅ…จใชๅทฅๅ ดๅ‡บ่ทๆ™‚ใƒชใ‚ปใƒƒใƒˆใงใ‚ใ‚Šใ€ๅ…ƒใซๆˆปใ™ใ“ใจใฏใงใใพใ›ใ‚“ใ€‚ๆœฌๅฝ“ใซ็ถš่กŒใ—ใฆใ‚‚ใ‚ˆใ‚ใ—ใ„ใงใ™ใ‹๏ผŸ @@ -5233,51 +5291,51 @@ This may take up to a minute. openpilot Longitudinal Control (Alpha) - openpilot ็ธฆๅˆถๅพก๏ผˆใ‚ขใƒซใƒ•ใ‚ก๏ผ‰ + openpilot ็ธฆๆ–นๅ‘ๅˆถๅพก๏ผˆใ‚ขใƒซใƒ•ใ‚ก๏ผ‰ WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). - ่ญฆๅ‘Š: ใ“ใฎ่ปŠใฎopenpilot็ธฆๅˆถๅพกใฏใ‚ขใƒซใƒ•ใ‚ก็‰ˆใงใ‚ใ‚Šใ€่‡ชๅ‹•็ทŠๆ€ฅใƒ–ใƒฌใƒผใ‚ญ (AEB) ใ‚’็„กๅŠนใซใ—ใพใ™ใ€‚ + ่ญฆๅ‘Š: ใ“ใฎ่ปŠใงใฏopenpilotใฎ็ธฆๆ–นๅ‘ๅˆถๅพกใฏใ‚ขใƒซใƒ•ใ‚ก็‰ˆใงใ‚ใ‚Šใ€Automatic Emergency Braking (AEB) ใ‚’็„กๅŠนใซใ—ใพใ™ใ€‚ Aggressive - ๆ”ปๆ’ƒ็š„ + ใ‚ขใ‚ฐใƒฌใƒƒใ‚ทใƒ– Standard - ๆจ™ๆบ– + ๆจ™ๆบ– Relaxed - ใƒชใƒฉใƒƒใ‚ฏใ‚นใ—ใŸ + ใƒชใƒฉใƒƒใ‚ฏใ‚นใ—ใŸ Driving Personality - ้‹่ปขใฎๆ€งๆ ผ + ้‹่ปขใฎๅ€‹ๆ€ง On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. - ใ“ใฎ่ปŠใงใฏใ€openpilotใฏใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใง่ปŠใฎๅ†…่”ตACCใ‚’ไฝฟ็”จใ—ใ€openpilotใฎ็ธฆๅˆถๅพกใ‚’ไฝฟ็”จใ—ใพใ›ใ‚“ใ€‚openpilotใฎ็ธฆๅˆถๅพกใซๅˆ‡ใ‚Šๆ›ฟใˆใ‚‹ใซใฏใ€ใ“ใ‚Œใ‚’ๆœ‰ๅŠนใซใ—ใฆใใ ใ•ใ„ใ€‚openpilotใฎ็ธฆๅˆถๅพกใ‚ขใƒซใƒ•ใ‚กใ‚’ๆœ‰ๅŠนใซใ™ใ‚‹้š›ใฏใ€ๅฎŸ้จ“ใƒขใƒผใƒ‰ใ‚’ๆœ‰ๅŠนใซใ™ใ‚‹ใ“ใจใ‚’ใŠๅ‹งใ‚ใ—ใพใ™ใ€‚ + ใ“ใฎ่ปŠใงใฏใ€openpilot ใฏ openpilot ใฎ็ธฆๆ–นๅ‘ๅˆถๅพกใงใฏใชใ่ปŠไธกๅ†…่”ตใฎ ACC ใ‚’ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใงไฝฟ็”จใ—ใพใ™ใ€‚openpilot ใฎ็ธฆๆ–นๅ‘ๅˆถๅพกใซๅˆ‡ใ‚Šๆ›ฟใˆใ‚‹ใซใฏใ€ใ“ใ‚Œใ‚’ๆœ‰ๅŠนใซใ—ใฆใใ ใ•ใ„ใ€‚openpilot ใฎ็ธฆๆ–นๅ‘ๅˆถๅพกใ‚ขใƒซใƒ•ใ‚กใ‚’ๆœ‰ๅŠนใซใ™ใ‚‹ๅ ดๅˆใฏใ€Experimental ใƒขใƒผใƒ‰ใฎๆœ‰ๅŠนๅŒ–ใ‚’ๆŽจๅฅจใ—ใพใ™ใ€‚ End-to-End Longitudinal Control - ใ‚จใƒณใƒ‰ใƒ„ใƒผใ‚จใƒณใƒ‰็ธฆๆ–นๅ‘ๅˆถๅพก + ใ‚จใƒณใƒ‰ใƒ„ใƒผใ‚จใƒณใƒ‰็ธฆๅˆถๅพก openpilot longitudinal control may come in a future update. - openpilotใฎ็ธฆๅˆถๅพกใฏๅฐ†ๆฅใฎใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใง่ฟฝๅŠ ใ•ใ‚Œใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ + openpilotใฎๅ‰ๅพŒๆ–นๅ‘ๅˆถๅพกใฏๅฐ†ๆฅใฎใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใง่ฟฝๅŠ ใ•ใ‚Œใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. - ใ‚ชใƒผใƒ—ใƒณใƒ‘ใ‚คใƒญใƒƒใƒˆใฎ็ธฆๅˆถๅพก๏ผˆใ‚ขใƒซใƒ•ใ‚ก๏ผ‰ใƒˆใ‚ฐใƒซใ‚’ๆœ‰ๅŠนใซใ—ใฆใ€ๅฎŸ้จ“ใƒขใƒผใƒ‰ใ‚’่จฑๅฏใ—ใพใ™ใ€‚ + Experimentalใƒขใƒผใƒ‰ใ‚’่จฑๅฏใ™ใ‚‹ใซใฏใ€openpilot็ธฆๆ–นๅ‘ๅˆถๅพก๏ผˆใ‚ขใƒซใƒ•ใ‚ก๏ผ‰ใฎใƒˆใ‚ฐใƒซใ‚’ๆœ‰ๅŠนใซใ—ใฆใใ ใ•ใ„ใ€‚ Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. - ๆจ™ๆบ–ใŒๆŽจๅฅจใ•ใ‚Œใพใ™ใ€‚ใ‚ขใ‚ฐใƒฌใƒƒใ‚ทใƒ–ใƒขใƒผใƒ‰ใงใฏใ€openpilotใฏๅ…ˆ่กŒ่ปŠใซใ‚ˆใ‚Š่ฟ‘ใฅใใ€ใ‚ขใ‚ฏใ‚ปใƒซใจใƒ–ใƒฌใƒผใ‚ญใ‚’ใ‚ˆใ‚Š็ฉๆฅต็š„ใซไฝฟ็”จใ—ใพใ™ใ€‚ใƒชใƒฉใƒƒใ‚ฏใ‚นใƒขใƒผใƒ‰ใงใฏใ€openpilotใฏๅ…ˆ่กŒ่ปŠใ‹ใ‚‰ใ‚ˆใ‚Š้›ขใ‚ŒใŸ่ท้›ขใ‚’ไฟใกใพใ™ใ€‚ๅฏพๅฟœใ™ใ‚‹่ปŠใงใฏใ€ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใฎ่ท้›ขใƒœใ‚ฟใƒณใงใ“ใ‚Œใ‚‰ใฎๆ€งๆ ผใ‚’ๅˆ‡ใ‚Šๆ›ฟใˆใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚ + ๆจ™ๆบ–ใŒๆŽจๅฅจใงใ™ใ€‚ใ‚ขใ‚ฐใƒฌใƒƒใ‚ทใƒ–ใƒขใƒผใƒ‰ใงใฏใ€openpilotใฏๅ…ˆ่กŒ่ปŠใซใ‚ˆใ‚ŠๆŽฅ่ฟ‘ใ—ใ€ใ‚ขใ‚ฏใ‚ปใƒซใจใƒ–ใƒฌใƒผใ‚ญๆ“ไฝœใŒใ‚ˆใ‚Š็ฉๆฅต็š„ใซใชใ‚Šใพใ™ใ€‚ใƒชใƒฉใƒƒใ‚ฏใ‚นใƒขใƒผใƒ‰ใงใฏใ€openpilotใฏๅ…ˆ่กŒ่ปŠใจใฎ่ท้›ขใ‚’ใ‚ˆใ‚Šไฟใกใพใ™ใ€‚ๅฏพๅฟœ่ปŠ็จฎใงใฏใ€ใ‚นใƒ†ใ‚ขใƒชใƒณใ‚ฐใƒ›ใ‚คใƒผใƒซใฎ่ปŠ้–“่ท้›ขใƒœใ‚ฟใƒณใงใ“ใ‚Œใ‚‰ใฎใƒ‘ใƒผใ‚ฝใƒŠใƒชใƒ†ใ‚ฃใ‚’ๅˆ‡ใ‚Šๆ›ฟใˆใ‚‰ใ‚Œใพใ™ใ€‚ The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. - ้‹่ปขใƒ“ใ‚ธใƒฅใ‚ขใƒฉใ‚คใ‚ผใƒผใ‚ทใƒงใƒณใฏใ€ไฝŽ้€Ÿๆ™‚ใซ้“่ทฏๅ‘ใใฎๅบƒ่ง’ใ‚ซใƒกใƒฉใซๅˆ‡ใ‚Šๆ›ฟใ‚ใ‚Šใ€ไธ€้ƒจใฎๆ›ฒใŒใ‚Š่ง’ใ‚’ใ‚ˆใ‚Šใ‚ˆใ่กจ็คบใ—ใพใ™ใ€‚ๅฎŸ้จ“ใƒขใƒผใƒ‰ใฎใƒญใ‚ดใ‚‚ๅณไธŠ้š…ใซ่กจ็คบใ•ใ‚Œใพใ™ใ€‚ + ไธ€้ƒจใฎใ‚ซใƒผใƒ–ใ‚’ใ‚ˆใ‚Š่ฆ‹ใ‚„ใ™ใใ™ใ‚‹ใŸใ‚ใ€ไฝŽ้€Ÿๆ™‚ใซใฏ่ตฐ่กŒใƒ“ใ‚ธใƒฅใ‚ขใƒฉใ‚คใ‚ผใƒผใ‚ทใƒงใƒณใŒ้“่ทฏๅ‘ใใฎๅบƒ่ง’ใ‚ซใƒกใƒฉใซๅˆ‡ใ‚Šๆ›ฟใ‚ใ‚Šใพใ™ใ€‚ๅณไธŠใซใฏExperimentalใƒขใƒผใƒ‰ใฎใƒญใ‚ดใ‚‚่กจ็คบใ•ใ‚Œใพใ™ใ€‚ @@ -5319,31 +5377,31 @@ This may take up to a minute. WiFiPromptWidget Setup Wi-Fi - Wi-Fiใ‚’ใ‚ปใƒƒใƒˆใ‚ขใƒƒใƒ— + Wiโ€‘Fi ใ‚’่จญๅฎš Connect to Wi-Fi to upload driving data and help improve openpilot - Wi-FiใซๆŽฅ็ถšใ—ใฆ้‹่ปขใƒ‡ใƒผใ‚ฟใ‚’ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ—ใ€openpilotใฎๆ”นๅ–„ใซๅฝน็ซ‹ใฆใฆใใ ใ•ใ„ใ€‚ + Wiโ€‘FiใซๆŽฅ็ถšใ—ใฆ่ตฐ่กŒใƒ‡ใƒผใ‚ฟใ‚’ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ—ใ€openpilot ใฎๆ”นๅ–„ใซๅ”ๅŠ›ใ—ใฆใใ ใ•ใ„ Open Settings - ่จญๅฎšใ‚’้–‹ใ + ่จญๅฎšใ‚’้–‹ใ Ready to upload - ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใฎๆบ–ๅ‚™ใŒใงใใพใ—ใŸ + ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใฎๆบ–ๅ‚™ๅฎŒไบ† Training data will be pulled periodically while your device is on Wi-Fi - ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใƒ‡ใƒผใ‚ฟใฏใ€ใƒ‡ใƒใ‚คใ‚นใŒWi-FiใซๆŽฅ็ถšใ•ใ‚Œใฆใ„ใ‚‹้–“ใซๅฎšๆœŸ็š„ใซๅ–ๅพ—ใ•ใ‚Œใพใ™ใ€‚ + ใƒ‡ใƒใ‚คใ‚นใŒWiโ€‘FiใซๆŽฅ็ถšใ•ใ‚Œใฆใ„ใ‚‹้–“ใ€ๅญฆ็ฟ’ใƒ‡ใƒผใ‚ฟใฏๅฎšๆœŸ็š„ใซๅ–ๅพ—ใ•ใ‚Œใพใ™ Uploading disabled - ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใฏ็„กๅŠนใซใชใฃใฆใ„ใพใ™ + ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใฏ็„กๅŠนใงใ™ Toggle off the "Turn Off Data Uploads" toggle to re-enable uploads. - ใ€Œใƒ‡ใƒผใ‚ฟใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ‚’ใ‚ชใƒ•ใซใ™ใ‚‹ใ€ใƒˆใ‚ฐใƒซใ‚’ใ‚ชใƒ•ใซใ—ใฆใ€ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ‚’ๅ†ๆœ‰ๅŠนๅŒ–ใ—ใพใ™ใ€‚ + ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ‚’ๅ†ๆœ‰ๅŠนๅŒ–ใ™ใ‚‹ใซใฏใ€ŒTurn Off Data Uploadsใ€ใƒˆใ‚ฐใƒซใ‚’ใ‚ชใƒ•ใซใ—ใฆใใ ใ•ใ„ใ€‚ diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index 974dbff61..511ad1cad 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -88,23 +88,23 @@ Off - ๋„๊ธฐ + ๋„๊ธฐ Always - ํ•ญ์ƒ + ํ•ญ์ƒ Only Onroad - ์˜จ๋ฆฌ ์˜จ๋กœ๋“œ + ์ฃผํ–‰ ์ค‘์—๋งŒ Until Reboot - ์žฌ๋ถ€ํŒ…ํ•  ๋•Œ๊นŒ์ง€ + ์žฌ๋ถ€ํŒ…๊นŒ์ง€ Allow tethering with your data SIM and keep it active either while driving or continuously. - ๋ฐ์ดํ„ฐ SIM์œผ๋กœ ํ…Œ๋”๋ง์„ ํ—ˆ์šฉํ•˜๊ณ  ์šด์ „ ์ค‘์ด๊ฑฐ๋‚˜ ๊ณ„์† ํ™œ์„ฑ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜์„ธ์š”. + ๋ฐ์ดํ„ฐ SIM์œผ๋กœ ํ…Œ๋”๋ง์„ ํ—ˆ์šฉํ•˜๊ณ , ์šด์ „ ์ค‘์ด๊ฑฐ๋‚˜ ํ•ญ์ƒ ํ™œ์„ฑ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜์„ธ์š”. @@ -187,71 +187,71 @@ DeveloperSidebar m/sยฒ - m/sยฒ + m/sยฒ ft/sยฒ - ft/sยฒ + ft/sยฒ ACCEL - ACCEL + ๊ฐ€์† ACCEL JERK - ๊ฐ€์†๋„ ์ €ํฌ + ๊ฐ€์† ๊ธ‰๊ฒฉํ•œ ๋ณ€ํ™” ACT ACCEL - ACT ACCEL + ACT ๊ฐ€์† DANGER JERK - ์œ„ํ—˜ํ•œ ๋ฉ์ฒญ์ด + ์œ„ํ—˜ ๊ธ‰๊ฐ€๊ฐ์† STEER DELAY - ์กฐํ–ฅ ์ง€์—ฐ + ์กฐํ–ฅ ์ง€์—ฐ FRICTION - ๋งˆ์ฐฐ + ๋งˆ์ฐฐ LAT ACCEL - LAT ACCEL + ํšก๊ฐ€์† LATERAL % - LATERAL % + ํšก๋ฐฉํ–ฅ % LONG % - LONG % + LONG % MAX ACCEL - ์ตœ๋Œ€ ๊ฐ€์† + ์ตœ๋Œ€ ๊ฐ€์† SPEED JERK - ์†๋„ ์ถฉ๊ฒฉ + ์†๋„ ๊ธ‰๊ฐ€๊ฐ STEER ANGLE - ์กฐํ–ฅ ๊ฐ๋„ + ์กฐํ–ฅ๊ฐ STEER RATIO - ์กฐํ–ฅ๋น„์œจ + ์กฐํ–ฅ๋น„ STEER STIFF - ์กฐํ–ฅ์ด ๋ปฃ๋ปฃํ•จ + ์กฐํ–ฅ ๋ป‘๋ป‘ํ•จ TORQUE % - ํ† ํฌ % + ํ† ํฌ % @@ -398,30 +398,30 @@ Pair your device with Konik connect (stable.konik.ai). - ๊ธฐ๊ธฐ๋ฅผ Konik connect (stable.konik.ai)์™€ ํŽ˜์–ด๋งํ•˜์„ธ์š”. + ๊ธฐ๊ธฐ๋ฅผ Konik connect(stable.konik.ai)์™€ ํŽ˜์–ด๋งํ•˜์„ธ์š”. DriveStats FROGPILOT - FROGPILOT + FROGPILOT Drives - ๋“œ๋ผ์ด๋ธŒ + ์ฃผํ–‰ ๊ธฐ๋ก Hours - ์‹œ๊ฐ„ + ์‹œ๊ฐ„ KM - KM + KM Miles - ๋งˆ์ผ + ๋งˆ์ผ @@ -446,3834 +446,3951 @@ FrogPilotAnnotatedCameraWidget m/sยฒ - m/sยฒ + m/sยฒ meters - ๋ฏธํ„ฐ + ๋ฏธํ„ฐ m/s - m/s + m/s km/h - km/h + km/h ft/sยฒ - ft/sยฒ + ft/sยฒ feet - ํ”ผํŠธ + ํ”ผํŠธ mph - mph + mph Vehicle in blind spot - ์‚ฌ๊ฐ์ง€๋Œ€์— ์žˆ๋Š” ์ฐจ๋Ÿ‰ + ๋ธ”๋ผ์ธ๋“œ ์ŠคํŒŸ์— ์ฐจ๋Ÿ‰ ์žˆ์Œ PENDING - ๋ณด๋ฅ˜ ์ค‘ + ๋ณด๋ฅ˜๋จ LIMIT - ์ œํ•œ + ์ œํ•œ FrogPilotConfirmationDialog Reboot required to take effect. - ํšจ๊ณผ๋ฅผ ์ ์šฉํ•˜๋ ค๋ฉด ์žฌ๋ถ€ํŒ…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. + ์ ์šฉํ•˜๋ ค๋ฉด ์žฌ๋ถ€ํŒ…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Reboot Now - ์ง€๊ธˆ ์žฌ๋ถ€ํŒ… + ์ง€๊ธˆ ์žฌ๋ถ€ํŒ… Reboot Later - ๋‚˜์ค‘์— ๋‹ค์‹œ ์‹œ์ž‘ + ๋‚˜์ค‘์— ์žฌ๋ถ€ํŒ… Yes - ๋„ค + ์˜ˆ No - ์•„๋‹ˆ์š” + ์•„๋‹ˆ์š” FrogPilotDataPanel - Delete Driving Footage and Data - ์šด์ „ ์˜์ƒ ๋ฐ ๋ฐ์ดํ„ฐ ์‚ญ์ œ + Delete Driving Data + ์ฃผํ–‰ ๋ฐ์ดํ„ฐ ์‚ญ์ œ DELETE - ์‚ญ์ œ + ์‚ญ์ œ - Deletes all stored driving footage and data from your device. Ideal for maintaining privacy or for simply freeing up space. - ๊ธฐ๊ธฐ์— ์ €์žฅ๋œ ๋ชจ๋“  ์šด์ „ ์˜์ƒ ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ๋ฅผ ์œ ์ง€ํ•˜๊ฑฐ๋‚˜ ๋‹จ์ˆœํžˆ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๋Š” ๋ฐ ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค. + <b>Delete all stored driving footage and data</b> to free up space and clear private information. + <b>์ €์žฅ๋œ ๋ชจ๋“  ์ฃผํ–‰ ์˜์ƒ๊ณผ ๋ฐ์ดํ„ฐ ์‚ญ์ œ</b>๋กœ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ณ  ๊ฐœ์ธ ์ •๋ณด๋ฅผ ์ง€์šฐ์„ธ์š”. - Are you sure you want to delete all of your driving footage and data? - ๋ชจ๋“  ์šด์ „ ์˜์ƒ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + Delete all driving data and footage? + ๋ชจ๋“  ์ฃผํ–‰ ๋ฐ์ดํ„ฐ์™€ ์˜์ƒ ์ž๋ฃŒ๋ฅผ ์‚ญ์ œํ• ๊นŒ์š”? Delete - ์‚ญ์ œ + ์‚ญ์ œ Deleting... - ์‚ญ์ œ ์ค‘... + ์‚ญ์ œ ์ค‘... Deleted! - ์‚ญ์ œ๋จ! + ์‚ญ์ œ๋จ! Delete Error Logs - ์˜ค๋ฅ˜ ๋กœ๊ทธ ์‚ญ์ œ + ์˜ค๋ฅ˜ ๋กœ๊ทธ ์‚ญ์ œ - Deletes all stored error logs from your device. Ideal for freeing up space. - ์žฅ์น˜์— ์ €์žฅ๋œ ๋ชจ๋“  ์˜ค๋ฅ˜ ๋กœ๊ทธ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๋Š” ๋ฐ ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค. + <b>Delete collected error logs</b> to free up space and clear old crash records. + <b>์ˆ˜์ง‘๋œ ์˜ค๋ฅ˜ ๋กœ๊ทธ ์‚ญ์ œ</b>๋กœ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ณ  ์˜ค๋ž˜๋œ ํฌ๋ž˜์‹œ ๊ธฐ๋ก์„ ์ง€์›๋‹ˆ๋‹ค. - Are you sure you want to delete all of the error logs? - ๋ชจ๋“  ์˜ค๋ฅ˜ ๋กœ๊ทธ๋ฅผ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + Delete all error logs? + ๋ชจ๋“  ์˜ค๋ฅ˜ ๋กœ๊ทธ๋ฅผ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? Screen Recordings - ํ™”๋ฉด ๋…นํ™” + ํ™”๋ฉด ๋…นํ™” - Manage your screen recordings. - ํ™”๋ฉด ๋…นํ™”๋ฅผ ๊ด€๋ฆฌํ•˜์„ธ์š”. + <b>Delete or rename screen recordings.</b> + <b>ํ™”๋ฉด ๋…นํ™”๋ฅผ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜์„ธ์š”.</b> DELETE ALL - ๋ชจ๋‘ ์‚ญ์ œ + ๋ชจ๋‘ ์‚ญ์ œ RENAME - ์ด๋ฆ„ ๋ณ€๊ฒฝ + ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ - Select a recording to delete - ์‚ญ์ œํ•  ๋…น์Œ์„ ์„ ํƒํ•˜์„ธ์š” + Choose a screen recording to delete + ์‚ญ์ œํ•  ํ™”๋ฉด ๋…นํ™”๋ฅผ ์„ ํƒํ•˜์„ธ์š” - Are you sure you want to delete this recording? - ์ด ๋…น์Œ์„ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + Delete this screen recording? + ์ด ํ™”๋ฉด ๋…นํ™”๋ฅผ ์‚ญ์ œํ• ๊นŒ์š”? - Are you sure you want to delete all screen recordings? - ๋ชจ๋“  ํ™”๋ฉด ๋…นํ™”๋ฅผ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + Delete all screen recordings? + ๋ชจ๋“  ํ™”๋ฉด ๋…นํ™”๋ฅผ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? Delete All - ๋ชจ๋‘ ์‚ญ์ œ + ๋ชจ๋‘ ์‚ญ์ œ - Select a recording to rename - ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•  ๋…น์Œ์„ ์„ ํƒํ•˜์„ธ์š” + Choose a screen recording to rename + ์ด๋ฆ„์„ ๋ฐ”๊ฟ€ ํ™”๋ฉด ๋…นํ™”๋ฅผ ์„ ํƒํ•˜์„ธ์š” Enter a new name - ์ƒˆ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š” + ์ƒˆ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š” - Rename Recording - ๋…น์Œ ์ด๋ฆ„ ๋ณ€๊ฒฝ + Rename Screen Recording + ํ™”๋ฉด ๋…นํ™” ์ด๋ฆ„ ๋ณ€๊ฒฝ - A recording with this name already exists. Please choose a different name. - ์ด ์ด๋ฆ„์˜ ๋…น์Œ์ด ์ด๋ฏธ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ด๋ฆ„์„ ์„ ํƒํ•˜์„ธ์š”. + Name already in use. Please choose a different name. + ์ด๋ฆ„์ด ์ด๋ฏธ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ด๋ฆ„์„ ์„ ํƒํ•˜์„ธ์š”. Renaming... - ์ด๋ฆ„ ๋ณ€๊ฒฝ ์ค‘... + ์ด๋ฆ„ ๋ณ€๊ฒฝ ์ค‘... Renamed! - ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! + ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! FrogPilot Backups - FrogPilot ๋ฐฑ์—… + FrogPilot ๋ฐฑ์—… - Manage your FrogPilot backups. - FrogPilot ๋ฐฑ์—…์„ ๊ด€๋ฆฌํ•˜์„ธ์š”. + <b>Create, delete, or restore FrogPilot backups.</b> + <b>FrogPilot ๋ฐฑ์—…์„ ์ƒ์„ฑ, ์‚ญ์ œ ๋˜๋Š” ๋ณต์›ํ•˜์‹ญ์‹œ์˜ค.</b> BACKUP - ๋ฐฑ์—… + ๋ฐฑ์—… RESTORE - ๋ณต์› + ๋ณต์› - Name your backup - ๋ฐฑ์—… ์ด๋ฆ„ ์ง€์ • + Enter a name for this backup + ์ด ๋ฐฑ์—…์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š” - A backup with this name already exists. Please choose a different name. - ์ด ์ด๋ฆ„์œผ๋กœ ๋œ ๋ฐฑ์—…์ด ์ด๋ฏธ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ด๋ฆ„์„ ์„ ํƒํ•˜์„ธ์š”. - - - Do you want to compress this backup? This will take a few minutes, but the final result will be smaller and run in the background. - ์ด ๋ฐฑ์—…์„ ์••์ถ•ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๋ช‡ ๋ถ„ ์ •๋„ ์†Œ์š”๋˜์ง€๋งŒ, ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ๋” ์ž‘์•„์ง€๊ณ  ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. + Compress this backup? This will save space and run in the background but take a bit longer. + ์ด ๋ฐฑ์—…์„ ์••์ถ•ํ• ๊นŒ์š”? ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋˜์ง€๋งŒ ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ๋” ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. Backing up... - ๋ฐฑ์—… ์ค‘... + ๋ฐฑ์—… ์ค‘... Compressing... - ์••์ถ• ์ค‘... + ์••์ถ• ์ค‘โ€ฆ Backup created! - ๋ฐฑ์—…์ด ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! + ๋ฐฑ์—…์ด ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! - Select a backup to delete - ์‚ญ์ œํ•  ๋ฐฑ์—… ์„ ํƒ + Choose a FrogPilot backup to delete + ์‚ญ์ œํ•  FrogPilot ๋ฐฑ์—…์„ ์„ ํƒํ•˜์„ธ์š” - Are you sure you want to delete this backup? - ์ด ๋ฐฑ์—…์„ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + Delete this backup? + ์ด ๋ฐฑ์—…์„ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - Are you sure you want to delete all FrogPilot backups? - FrogPilot ๋ฐฑ์—…์„ ๋ชจ๋‘ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + Delete all backups? + ๋ชจ๋“  ๋ฐฑ์—…์„ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - Select a restore point - ๋ณต์› ์ง€์ ์„ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค. + Choose a backup to restore + ๋ณต์›ํ•  ๋ฐฑ์—… ์„ ํƒ - Are you sure you want to restore this version of FrogPilot? - ์ด ๋ฒ„์ „์˜ FrogPilot์„ ๋ณต์›ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + Restore this backup? + ์ด ๋ฐฑ์—…์„ ๋ณต์›ํ• ๊นŒ์š”? Restore - ๋ณต์› + ๋ณต์› Restoring... - ๋ณต์› ์ค‘... + ๋ณต์› ์ค‘... Extracting... - ์ถ”์ถœ ์ค‘... + ์ถ”์ถœ ์ค‘... Restored! - ๋ณต์›๋˜์—ˆ์Šต๋‹ˆ๋‹ค! + ๋ณต๊ตฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! Rebooting... - ์žฌ๋ถ€ํŒ… ์ค‘... + ์žฌ๋ถ€ํŒ… ์ค‘โ€ฆ Toggle Backups - ๋ฐฑ์—… ์ „ํ™˜ + ๋ฐฑ์—… ์ „ํ™˜ - Manage your toggle backups. - ํ† ๊ธ€ ๋ฐฑ์—…์„ ๊ด€๋ฆฌํ•˜์„ธ์š”. + <b>Create, delete, or restore toggle backups.</b> + <b>ํ† ๊ธ€ ๋ฐฑ์—…์„ ์ƒ์„ฑ, ์‚ญ์ œ ๋˜๋Š” ๋ณต์›ํ•˜์„ธ์š”.</b> - Name your toggle backup - ๋ฐฑ์—… ํ† ๊ธ€ ์ด๋ฆ„ ์ง€์ • - - - A toggle backup with this name already exists. Please choose a different name. - ์ด ์ด๋ฆ„์˜ ํ† ๊ธ€ ๋ฐฑ์—…์ด ์ด๋ฏธ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ด๋ฆ„์„ ์„ ํƒํ•˜์„ธ์š”. - - - Select a toggle backup to delete - ์‚ญ์ œํ•  ํ† ๊ธ€ ๋ฐฑ์—…์„ ์„ ํƒํ•˜์„ธ์š”. - - - Are you sure you want to delete this toggle backup? - ์ด ํ† ๊ธ€ ๋ฐฑ์—…์„ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Are you sure you want to delete all toggle backups? - ๋ชจ๋“  ํ† ๊ธ€ ๋ฐฑ์—…์„ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Select a toggle restore point - ํ† ๊ธ€ ๋ณต์› ์ง€์ ์„ ์„ ํƒํ•˜์„ธ์š”. - - - Are you sure you want to restore this toggle backup? - ์ด ํ† ๊ธ€ ๋ฐฑ์—…์„ ๋ณต์›ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + Choose a backup to delete + ์‚ญ์ œํ•  ๋ฐฑ์—…์„ ์„ ํƒํ•˜์„ธ์š” FrogPilotDevicePanel Device Settings - ์žฅ์น˜ ์„ค์ • + ๊ธฐ๊ธฐ ์„ค์ • - Settings that control device behavior. - ์žฅ์น˜ ๋™์ž‘์„ ์ œ์–ดํ•˜๋Š” ์„ค์ •. - - - Battery Shutdown Threshold - ๋ฐฐํ„ฐ๋ฆฌ ์ข…๋ฃŒ ์ž„๊ณ„๊ฐ’ - - - Automatically shut down the device when the vehicle's battery voltage reaches the set threshold preventing excessive battery drain to protect the battery. - ์ฐจ๋Ÿ‰์˜ ๋ฐฐํ„ฐ๋ฆฌ ์ „์••์ด ์„ค์ •๋œ ์ž„๊ณ„๊ฐ’์— ๋„๋‹ฌํ•˜๋ฉด ์žฅ์น˜๋ฅผ ์ž๋™์œผ๋กœ ์ข…๋ฃŒํ•˜์—ฌ ๊ณผ๋„ํ•œ ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ๋ฐฐํ„ฐ๋ฆฌ๋ฅผ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค. + <b>Settings that control how the device runs, powers off, and manages driving data.</b> + <b>๋””๋ฐ”์ด์Šค์˜ ์‹คํ–‰, ์ „์› ์ข…๋ฃŒ, ์šดํ–‰ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ์ œ์–ดํ•˜๋Š” ์„ค์ •์ž…๋‹ˆ๋‹ค.</b> Device Shutdown Timer - ์žฅ์น˜ ์ข…๋ฃŒ ํƒ€์ด๋จธ + ์žฅ์น˜ ์ข…๋ฃŒ ํƒ€์ด๋จธ - How long the device stays on for after you go offroad. - ์žฅ์น˜๊ฐ€ ์˜คํ”„๋กœ๋“œ ํ›„์— ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ์ผœ์ ธ ์žˆ๋Š”์ง€. + <b>Keep the device on for the set amount of time after a drive</b> before it shuts down automatically. + <b>์ฃผํ–‰ ํ›„ ์„ค์ •๋œ ์‹œ๊ฐ„ ๋™์•ˆ ๊ธฐ๊ธฐ๋ฅผ ์ผœ ๋‘ก๋‹ˆ๋‹ค</b> ์ž๋™์œผ๋กœ ์ข…๋ฃŒ๋˜๊ธฐ ์ „์—. - Disable Data Logging - ๋ฐ์ดํ„ฐ ๋กœ๊น… ๋น„ํ™œ์„ฑํ™” + Disable Logging + ๋กœ๊น… ๋น„ํ™œ์„ฑํ™” WARNING: This will prevent your drives from being recorded and all data will be unobtainable! - ๊ฒฝ๊ณ : ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋“œ๋ผ์ด๋ธŒ๊ฐ€ ๊ธฐ๋ก๋˜์ง€ ์•Š์œผ๋ฉฐ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค! + ๊ฒฝ๊ณ : ์ด ์ž‘์—…์€ ์ฃผํ–‰ ๊ธฐ๋ก์„ ์ค‘์ง€ํ•˜๋ฉฐ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•  ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค! - Disable all data logging to improve privacy. - ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๋กœ๊น…์„ ๋น„ํ™œ์„ฑํ™”ํ•˜์—ฌ ํ”„๋ผ์ด๋ฒ„์‹œ๋ฅผ ๊ฐœ์„ ํ•˜์‹ญ์‹œ์˜ค. + <b>Prevent the device from saving driving data.</b> + <b>์žฅ์น˜๊ฐ€ ์ฃผํ–‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.</b> - Disable Data Uploads - ๋ฐ์ดํ„ฐ ์—…๋กœ๋“œ ๋น„ํ™œ์„ฑํ™” + Disable Uploads + ์—…๋กœ๋“œ ๋น„ํ™œ์„ฑํ™” - WARNING: This will prevent your drives from appearing on <b>comma connect</b> which may impact debugging and support! - ๊ฒฝ๊ณ : ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋“œ๋ผ์ด๋ธŒ๊ฐ€ <b>comma connect</b>์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์•„ ๋””๋ฒ„๊น… ๋ฐ ์ง€์›์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! + WARNING: This will prevent your drives from being uploaded to <b>comma connect</b> which will impact debugging and official support from comma! + ๊ฒฝ๊ณ : ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฃผํ–‰ ๋ฐ์ดํ„ฐ๊ฐ€ <b>comma connect</b>์— ์—…๋กœ๋“œ๋˜์ง€ ์•Š์•„ ๋””๋ฒ„๊น…๊ณผ comma์˜ ๊ณต์‹ ์ง€์›์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค! - Prevent the device from sending any data to <b>comma</b>'s servers. - ์žฅ์น˜๊ฐ€ <b>comma</b>์˜ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜์ง€ ์•Š๋„๋ก ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. + <b>Prevent the device from uploading driving data.</b> + <b>์žฅ์น˜๊ฐ€ ์ฃผํ–‰ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋กœ๋“œํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.</b> - Increase Thermal Safety Limit - ์—ด ์•ˆ์ „ ํ•œ๊ณ„ ์ฆ๊ฐ€ + High-Quality Recording + ๊ณ ํ’ˆ์งˆ ๋…นํ™” - WARNING: This can damage your device by exceeding safe temperature limits! - ๊ฒฝ๊ณ : ์•ˆ์ „ ์˜จ๋„ ํ•œ๊ณ„๋ฅผ ์ดˆ๊ณผํ•˜์—ฌ ๊ธฐ๊ธฐ์— ์†์ƒ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! + <b>Save drive footage in higher video quality.</b> + <b>์ฃผํ–‰ ์˜์ƒ์„ ๋” ๋†’์€ ํ™”์งˆ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.</b> - Allow the device to run hotter than comma recommended limit. - ์žฅ์น˜๊ฐ€ ๊ถŒ์žฅ ์ œํ•œ๋ณด๋‹ค ๋” ๋œจ๊ฒ๊ฒŒ ์ž‘๋™ํ•˜๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. + Low-Voltage Cutoff + ์ €์ „์•• ์ฐจ๋‹จ - Use Konik's Server Instead of comma's - Konik์˜ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. + <b>While parked, if the battery voltage falls below the set level, the device shuts down</b> to prevent excessive battery drain. + <b>์ฃผ์ฐจ ์ค‘ ์„ค์ •๋œ ์ˆ˜์ค€๋ณด๋‹ค ๋ฐฐํ„ฐ๋ฆฌ ์ „์••์ด ๋–จ์–ด์ง€๋ฉด, ๊ณผ๋„ํ•œ ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๊ธฐ๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค</b>. - Upload your driving data to <b>connect.konik.ai</b> instead of <b>connect.comma.ai</b>. - ์šด์ „ ๋ฐ์ดํ„ฐ๋ฅผ <b>connect.comma.ai</b> ๋Œ€์‹  <b>connect.konik.ai</b>์— ์—…๋กœ๋“œํ•˜์„ธ์š”. + Raise Temperature Limits + ์˜จ๋„ ํ•œ๊ณ„ ์ƒํ–ฅ + + + WARNING: Running at higher temperatures may damage your device! + ๊ฒฝ๊ณ : ๋†’์€ ์˜จ๋„์—์„œ ์ž‘๋™ํ•˜๋ฉด ๊ธฐ๊ธฐ๊ฐ€ ์†์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! + + + <b>Allow the device to run at higher temperatures</b> before throttling or shutting down. Use only if you understand the risks! + <b>๋””๋ฐ”์ด์Šค๊ฐ€ ์Šค๋กœํ‹€๋ง๋˜๊ฑฐ๋‚˜ ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— ๋” ๋†’์€ ์˜จ๋„์—์„œ ์‹คํ–‰ํ•˜๋„๋ก ํ—ˆ์šฉ</b>. ์œ„ํ—˜์„ ์ดํ•ดํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•˜์„ธ์š”! + + + Use Konik Server + Konik ์„œ๋ฒ„ ์‚ฌ์šฉ + + + <b>Upload driving data to "connect.konik.ai" instead of "connect.comma.ai".</b> + <b>"connect.comma.ai" ๋Œ€์‹  "connect.konik.ai"๋กœ ์ฃผํ–‰ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋กœ๋“œํ•˜์„ธ์š”.</b> Screen Settings - ํ™”๋ฉด ์„ค์ • + ํ™”๋ฉด ์„ค์ • - Settings that control screen behavior. - ํ™”๋ฉด ๋™์ž‘์„ ์ œ์–ดํ•˜๋Š” ์„ค์ •. + <b>Settings that control screen brightness, screen recording, and timeout duration.</b> + <b>ํ™”๋ฉด ๋ฐ๊ธฐ, ํ™”๋ฉด ๋…นํ™”, ์‹œ๊ฐ„ ์ œํ•œ ์ง€์† ์‹œ๊ฐ„์„ ์ œ์–ดํ•˜๋Š” ์„ค์ •์ž…๋‹ˆ๋‹ค.</b> Screen Brightness (Offroad) - ํ™”๋ฉด ๋ฐ๊ธฐ (์˜คํ”„๋กœ๋“œ) + ํ™”๋ฉด ๋ฐ๊ธฐ(์˜คํ”„๋กœ๋“œ) - The screen brightness when not driving. - ์šด์ „ํ•˜์ง€ ์•Š์„ ๋•Œ ํ™”๋ฉด ๋ฐ๊ธฐ. + <b>The screen brightness while not driving.</b> + <b>์ฃผํ–‰ ์ค‘์ด ์•„๋‹ ๋•Œ ํ™”๋ฉด ๋ฐ๊ธฐ.</b> Screen Brightness (Onroad) - ํ™”๋ฉด ๋ฐ๊ธฐ (์ฃผํ–‰ ์ค‘) + ํ™”๋ฉด ๋ฐ๊ธฐ(์ฃผํ–‰ ์ค‘) - The screen brightness while driving. - ์šด์ „ ์ค‘ ํ™”๋ฉด ๋ฐ๊ธฐ. + <b>The screen brightness while driving.</b> + <b>์šด์ „ ์ค‘ ํ™”๋ฉด ๋ฐ๊ธฐ.</b> Screen Recorder - ํ™”๋ฉด ๋…นํ™”๊ธฐ + ํ™”๋ฉด ๊ธฐ๋ก๊ธฐ - Enable a button in the driving screen to record the screen. - ์šด์ „ ํ™”๋ฉด์—์„œ ํ™”๋ฉด์„ ๋…นํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. + <b>Add a button to the driving screen to record the display.</b> + <b>์ฃผํ–‰ ํ™”๋ฉด์— ๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ ๋…นํ™”ํ•˜๋Š” ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.</b> Screen Timeout (Offroad) - ํ™”๋ฉด ์‹œ๊ฐ„ ์ดˆ๊ณผ (์˜คํ”„๋กœ๋“œ) + ํ™”๋ฉด ์‹œ๊ฐ„ ์ œํ•œ(์˜คํ”„๋กœ๋“œ) - How long it takes for the screen to turn off when not driving. - ์šด์ „ํ•˜์ง€ ์•Š์„ ๋•Œ ํ™”๋ฉด์ด ๊บผ์ง€๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„. + <b>How long the screen stays on after being tapped while not driving.</b> + <b>์ฃผํ–‰ ์ค‘์ด ์•„๋‹ ๋•Œ ํ™”๋ฉด์„ ํƒญํ•œ ํ›„ ํ™”๋ฉด์ด ์ผœ์ ธ ์žˆ๋Š” ์‹œ๊ฐ„.</b> Screen Timeout (Onroad) - ํ™”๋ฉด ์‹œ๊ฐ„ ์ดˆ๊ณผ (์ฃผํ–‰ ์ค‘) + ํ™”๋ฉด ์‹œ๊ฐ„ ์ดˆ๊ณผ(์ฃผํ–‰ ์ค‘) - How long it takes for the screen to turn off while driving. - ์šด์ „ ์ค‘ ํ™”๋ฉด์ด ๊บผ์ง€๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„. + <b>How long the screen stays on after being tapped while driving.</b> + <b>์ฃผํ–‰ ์ค‘ ํ™”๋ฉด์„ ํƒญํ•œ ํ›„ ํ™”๋ฉด์ด ์ผœ์ ธ ์žˆ๋Š” ์‹œ๊ฐ„.</b> + + + Standby Mode + ๋Œ€๊ธฐ ๋ชจ๋“œ + + + <b>Turn the screen off while driving and automatically wake it up for alerts or engagement state changes.</b> + <b>์ฃผํ–‰ ์ค‘ ํ™”๋ฉด์„ ๋„๊ณ , ๊ฒฝ๊ณ ๋‚˜ ์ž‘๋™ ์ƒํƒœ ๋ณ€๊ฒฝ ์‹œ ์ž๋™์œผ๋กœ ๊นจ์›๋‹ˆ๋‹ค.</b> 5 mins - 5๋ถ„ + 5๋ถ„ mins - ๋ถ„ + ๋ถ„ hour - ์‹œ๊ฐ„ + ์‹œ๊ฐ„ hours - ์‹œ๊ฐ„ + ์‹œ๊ฐ„ - Only Disable While Onroad - ๋„๋กœ ์ฃผํ–‰ ์ค‘์—๋งŒ ๋น„ํ™œ์„ฑํ™” + Disable Onroad Only + Onroad Only ๋น„ํ™œ์„ฑํ™” volts - ๋ณผํŠธ + ๋ณผํŠธ Screen Off - ํ™”๋ฉด ๋„๊ธฐ + ํ™”๋ฉด ๋„๊ธฐ Auto - ์ž๋™ + ์ž๋™ Start Recording - ๋…น์Œ ์‹œ์ž‘ + ๋…นํ™” ์‹œ์ž‘ Stop Recording - ๋…น์Œ ์ค‘์ง€ + ๋…นํ™” ์ค‘์ง€ seconds - ์ดˆ - - - High Bitrate Recording - ๊ณ ๋น„ํŠธ๋ ˆ์ดํŠธ ๋…น์Œ - - - Record driving footage at double the standard bitrate for improved video quality in driving logs. - ์šด์ „ ๊ธฐ๋ก์—์„œ ํ–ฅ์ƒ๋œ ๋น„๋””์˜ค ํ’ˆ์งˆ์„ ์œ„ํ•ด ํ‘œ์ค€ ๋น„ํŠธ๋ ˆ์ดํŠธ์˜ ๋‘ ๋ฐฐ๋กœ ์šด์ „ ์˜์ƒ์„ ๊ธฐ๋กํ•˜์‹ญ์‹œ์˜ค. + ์ดˆ FrogPilotLateralPanel Advanced Lateral Tuning - ๊ณ ๊ธ‰ ์ธก๋ฉด ์กฐ์ • + ๊ณ ๊ธ‰ ํšก๋ฐฉํ–ฅ ํŠœ๋‹ - Advanced settings for fine-tuning openpilot's lateral controls. - ์˜คํ”ˆํŒŒ์ผ๋Ÿฟ์˜ ์ธก๋ฉด ์ œ์–ด๋ฅผ ๋ฏธ์„ธ ์กฐ์ •ํ•˜๊ธฐ ์œ„ํ•œ ๊ณ ๊ธ‰ ์„ค์ •. + <b>Advanced steering control changes to fine-tune how openpilot drives.</b> + <b>๊ณ ๊ธ‰ ์กฐํ–ฅ ์ œ์–ด ๋ณ€๊ฒฝ์œผ๋กœ openpilot์˜ ์ฃผํ–‰ ๋ฐฉ์‹์„ ๋ฏธ์„ธ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.</b> Actuator Delay (Default: %1) - ์•ก์ถ”์—์ดํ„ฐ ์ง€์—ฐ (๊ธฐ๋ณธ๊ฐ’: %1) + ์•ก์ถ”์—์ดํ„ฐ ์ง€์—ฐ (๊ธฐ๋ณธ๊ฐ’: %1) Actuator Delay - ์•ก์ถ”์—์ดํ„ฐ ์ง€์—ฐ + ์•ก์ถ”์—์ดํ„ฐ ์ง€์—ฐ - How long the steering wheel takes to respond to commands. Higher values account for slower steering; lower values for quicker response. - ์กฐํ–ฅ ํœ ์ด ๋ช…๋ น์— ๋ฐ˜์‘ํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„. ๋†’์€ ๊ฐ’์€ ๋А๋ฆฐ ์กฐํ–ฅ์„ ๋‚˜ํƒ€๋‚ด๊ณ , ๋‚ฎ์€ ๊ฐ’์€ ๋น ๋ฅธ ๋ฐ˜์‘์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. + <b>The time between openpilot's steering command and the vehicle's response.</b> Increase if the vehicle reacts late; decrease if it feels jumpy. Auto-learned by default. + <b>openpilot์˜ ์กฐํ–ฅ ๋ช…๋ น๊ณผ ์ฐจ๋Ÿ‰ ๋ฐ˜์‘ ์‚ฌ์ด์˜ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.</b> ์ฐจ๋Ÿ‰ ๋ฐ˜์‘์ด ๋Šฆ์œผ๋ฉด ๋Š˜๋ฆฌ๊ณ , ํŠ€๋Š” ๋А๋‚Œ์ด๋ฉด ์ค„์ด์„ธ์š”. ๊ธฐ๋ณธ๊ฐ’์€ ์ž๋™ ํ•™์Šต์ž…๋‹ˆ๋‹ค. Friction (Default: %1) - ๋งˆ์ฐฐ (๊ธฐ๋ณธ๊ฐ’: %1) + ๋งˆ์ฐฐ (๊ธฐ๋ณธ๊ฐ’: %1) Friction - ๋งˆ์ฐฐ + ๋งˆ์ฐฐ - Adjust steering resistance. Higher values feel more stable but heavier; lower values feel lighter but more sensitive. - ์กฐํ–ฅ ์ €ํ•ญ์„ ์กฐ์ •ํ•˜์‹ญ์‹œ์˜ค. ๋†’์€ ๊ฐ’์€ ๋” ์•ˆ์ •์ ์ด์ง€๋งŒ ๋ฌด๊ฒ๊ฒŒ ๋А๊ปด์ง€๊ณ , ๋‚ฎ์€ ๊ฐ’์€ ๊ฐ€๋ณ์ง€๋งŒ ๋” ๋ฏผ๊ฐํ•˜๊ฒŒ ๋А๊ปด์ง‘๋‹ˆ๋‹ค. + <b>Compensates for steering friction.</b> Increase if the wheel sticks near center; decrease if it jitters. Auto-learned by default. + <b>์กฐํ–ฅ ๋งˆ์ฐฐ์„ ๋ณด์ •ํ•ฉ๋‹ˆ๋‹ค.</b> ํ•ธ๋“ค์ด ์ค‘์•™ ๋ถ€๊ทผ์—์„œ ๊ฑธ๋ฆฌ๋ฉด ๊ฐ’์„ ๋†’์ด๊ณ , ๋–จ๋ฆผ์ด ์žˆ์œผ๋ฉด ๋‚ฎ์ถ”์„ธ์š”. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž๋™ ํ•™์Šต๋ฉ๋‹ˆ๋‹ค. Kp Factor (Default: %1) - Kp ๊ณ„์ˆ˜ (๊ธฐ๋ณธ๊ฐ’: %1) + Kp ๊ณ„์ˆ˜ (๊ธฐ๋ณธ๊ฐ’: %1) Kp Factor - Kp ๊ณ„์ˆ˜ + Kp ๊ณ„์ˆ˜ - How aggressively openpilot corrects steering. Higher values respond faster but may feel jerky; lower values are smoother but slower. - openpilot์ด ์กฐํ–ฅ์„ ๊ต์ •ํ•˜๋Š” ์ •๋„. ๋†’์€ ๊ฐ’์€ ๋” ๋น ๋ฅด๊ฒŒ ๋ฐ˜์‘ํ•˜์ง€๋งŒ ๋‹ค์†Œ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‚ฎ์€ ๊ฐ’์€ ๋” ๋ถ€๋“œ๋Ÿฝ์ง€๋งŒ ๋А๋ฆฝ๋‹ˆ๋‹ค. + <b>How strongly openpilot corrects lane position.</b> Higher is tighter but twitchier; lower is smoother but slower. Auto-learned by default. + <b>openpilot์ด ์ฐจ๋กœ ์œ„์น˜๋ฅผ ๋ณด์ •ํ•˜๋Š” ๊ฐ•๋„.</b> ๋†’์„์ˆ˜๋ก ๋” ํƒ€์ดํŠธํ•˜์ง€๋งŒ ๋” ์˜ˆ๋ฏผํ•ด์ง‘๋‹ˆ๋‹ค. ๋‚ฎ์„์ˆ˜๋ก ๋” ๋ถ€๋“œ๋Ÿฝ์ง€๋งŒ ๋” ๋А๋ฆฝ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ์ž๋™ ํ•™์Šต์ž…๋‹ˆ๋‹ค. - Lateral Accel (Default: %1) - ์ธก๋ฉด ๊ฐ€์† (๊ธฐ๋ณธ๊ฐ’: %1) + Lateral Acceleration (Default: %1) + ํšก๊ฐ€์†๋„ (๊ธฐ๋ณธ๊ฐ’: %1) - Lateral Accel - ์ธก๋ฉด ๊ฐ€์† + Lateral Acceleration + ํšก๊ฐ€์†๋„ - How quickly openpilot makes lateral adjustments. Higher values allow sharper turns; lower values provide smoother steering. - openpilot์ด ์ธก๋ฉด ์กฐ์ •์„ ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ฒŒ ํ•˜๋Š”์ง€. ๋†’์€ ๊ฐ’์€ ๋” ๋‚ ์นด๋กœ์šด ํšŒ์ „์„ ํ—ˆ์šฉํ•˜๊ณ , ๋‚ฎ์€ ๊ฐ’์€ ๋” ๋ถ€๋“œ๋Ÿฌ์šด ์กฐํ–ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. + <b>Maps steering torque to turning response.</b> Increase for sharper turns; decrease for gentler steering. Auto-learned by default. + <b>์กฐํ–ฅ ํ† ํฌ๋ฅผ ํšŒ์ „ ๋ฐ˜์‘์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.</b> ๋” ๋‚ ์นด๋กœ์šด ํšŒ์ „์„ ์œ„ํ•ด ๊ฐ’์„ ๋†’์ด๊ณ , ๋” ๋ถ€๋“œ๋Ÿฌ์šด ์กฐํ–ฅ์„ ์œ„ํ•ด ๊ฐ’์„ ๋‚ฎ์ถ”์„ธ์š”. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž๋™ ํ•™์Šต๋ฉ๋‹ˆ๋‹ค. Steer Ratio (Default: %1) - ์กฐํ–ฅ๋น„ (๊ธฐ๋ณธ๊ฐ’: %1) + ์กฐํ–ฅ ๋น„์œจ (๊ธฐ๋ณธ๊ฐ’: %1) Steer Ratio - ์กฐํ–ฅ๋น„ + ์กฐํ–ฅ๋น„ - How much the steering wheel turns in response to commands. Higher values feel more stable; lower values feel quicker. - ๋ช…๋ น์— ๋Œ€ํ•œ ๋ฐ˜์‘์œผ๋กœ ํ•ธ๋“ค์ด ์–ผ๋งˆ๋‚˜ ํšŒ์ „ํ•˜๋Š”์ง€. ๊ฐ’์ด ๋†’์„์ˆ˜๋ก ๋” ์•ˆ์ •์ ์œผ๋กœ ๋А๊ปด์ง€๊ณ , ๊ฐ’์ด ๋‚ฎ์„์ˆ˜๋ก ๋” ๋น ๋ฅด๊ฒŒ ๋А๊ปด์ง‘๋‹ˆ๋‹ค. + <b>The relationship between steering wheel rotation and road wheel angle.</b> Increase if steering feels too quick or twitchy; decrease if it feels too slow or weak. Auto-learned by default. + <b>์Šคํ‹ฐ์–ด๋ง ํœ  ํšŒ์ „๊ณผ ๋กœ๋“œ ํœ  ๊ฐ๋„์˜ ๊ด€๊ณ„.</b> ์กฐํ–ฅ์ด ์ง€๋‚˜์น˜๊ฒŒ ๋น ๋ฅด๊ฑฐ๋‚˜ ๋ฏผ๊ฐํ•˜๋ฉด ๊ฐ’์„ ๋†’์ด๊ณ , ๋А๋ฆฌ๊ฑฐ๋‚˜ ์•ฝํ•˜๋ฉด ๊ฐ’์„ ๋‚ฎ์ถ”์„ธ์š”. ๊ธฐ๋ณธ๊ฐ’์€ ์ž๋™ ํ•™์Šต์ž…๋‹ˆ๋‹ค. - Force Auto Tune On - ์ž๋™ ํŠœ๋‹ ๊ฐ•์ œ ์‹คํ–‰ + Force Auto-Tune On + ์ž๋™ ํŠœ๋‹ ๊ฐ•์ œ ํ™œ์„ฑํ™” - Force-enable commaโ€™s auto lateral tuning. - ์ฝค๋งˆ์˜ ์ž๋™ ์ธก๋ฉด ํŠœ๋‹์„ ๊ฐ•์ œ๋กœ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. + <b>Force-enable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration".</b> + <b>"Friction"๊ณผ "Lateral Acceleration"์— ๋Œ€ํ•ด openpilot์˜ ๋ผ์ด๋ธŒ ์ž๋™ ํŠœ๋‹์„ ๊ฐ•์ œ๋กœ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.</b> - Force Auto Tune Off - ์ž๋™ ์กฐ์ • ๊ฐ•์ œ ํ•ด์ œ + Force Auto-Tune Off + Auto-Tune ๊ฐ•์ œ ํ•ด์ œ - Force-disable commaโ€™s auto lateral tuning. - ์ฝค๋งˆ์˜ ์ž๋™ ์ธก๋ฉด ์กฐ์ •์„ ๊ฐ•์ œ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. + <b>Force-disable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration" and use the set value instead.</b> + <b>openpilot์˜ "๋งˆ์ฐฐ(Friction)"๊ณผ "ํšก๊ฐ€์†(Lateral Acceleration)"์— ๋Œ€ํ•œ ์‹ค์‹œ๊ฐ„ ์ž๋™ ํŠœ๋‹์„ ๊ฐ•์ œ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ์„ค์ •๋œ ๊ฐ’์„ ๋Œ€์‹  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.</b> - Always on Lateral - ํ•ญ์ƒ ์ธก๋ฉด์— + Force Torque Controller + ํฌ์Šค ํ† ํฌ ์ปจํŠธ๋กค๋Ÿฌ - openpilot's steering control stays active even when the brake or gas pedals are pressed.<br><br>Deactivation only occurs with the <b>Cruise Control</b> button. - Translation A + <b>Use torque-based steering control instead of angle-based control for smoother lane keeping, especially in curves.</b> + <b>ํŠนํžˆ ์ปค๋ธŒ์—์„œ ์ฐจ์„ ์„ ๋” ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด, ๊ฐ๋„ ๊ธฐ๋ฐ˜ ์ œ์–ด ๋Œ€์‹  ํ† ํฌ ๊ธฐ๋ฐ˜ ์Šคํ‹ฐ์–ด๋ง ์ œ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.</b> + + + Always On Lateral + ํ•ญ์ƒ ์ผœ์ง ์ฐจ๋กœ ์œ ์ง€ + + + <b>openpilot's steering remains active even when the accelerator or brake pedals are pressed.</b> + <b>๊ฐ€์† ํŽ˜๋‹ฌ์ด๋‚˜ ๋ธŒ๋ ˆ์ดํฌ ํŽ˜๋‹ฌ์„ ๋ฐŸ์•„๋„ openpilot์˜ ์กฐํ–ฅ์€ ๊ณ„์† ํ™œ์„ฑ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.</b> Enable With Cruise Control - ํฌ๋ฃจ์ฆˆ ์ปจํŠธ๋กค ์‚ฌ์šฉ ์„ค์ • + ํฌ๋ฃจ์ฆˆ ์ปจํŠธ๋กค๋กœ ํ™œ์„ฑํ™” - Allow <b>Always on Lateral</b> to be active whenever <b>Cruise Control</b> is active, bypassing the need to enable openpilot first. - <b>Cruise Control</b>์ด ํ™œ์„ฑํ™”๋  ๋•Œ๋งˆ๋‹ค <b>Always on Lateral</b>์ด ํ™œ์„ฑํ™”๋˜๋„๋ก ํ—ˆ์šฉํ•˜์—ฌ openpilot์„ ๋จผ์ € ํ™œ์„ฑํ™”ํ•  ํ•„์š”๋ฅผ ์šฐํšŒํ•ฉ๋‹ˆ๋‹ค. + <b>Enable "Always On Lateral" whenever "Cruise Control" is on, even when openpilot is not engaged.</b> + <b>openpilot์ด ์ž‘๋™ ์ค‘์ด ์•„๋‹ˆ์–ด๋„, "Cruise Control"์ด ์ผœ์ ธ ์žˆ์„ ๋•Œ๋งˆ๋‹ค "Always On Lateral"์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.</b> - Enable With LKAS Button - LKAS ๋ฒ„ํŠผ์œผ๋กœ ํ™œ์„ฑํ™” + Enable With LKAS + LKAS์™€ ํ•จ๊ป˜ ํ™œ์„ฑํ™” - Allow <b>Always on Lateral</b> to be active whenever <b>LKAS</b> is active, bypassing the need to enable openpilot first. - <b>LKAS</b>๊ฐ€ ํ™œ์„ฑํ™”๋  ๋•Œ๋งˆ๋‹ค <b>Always on Lateral</b>์ด ํ™œ์„ฑํ™”๋˜๋„๋ก ํ—ˆ์šฉํ•˜์—ฌ openpilot์„ ๋จผ์ € ํ™œ์„ฑํ™”ํ•  ํ•„์š”๋ฅผ ์šฐํšŒํ•ฉ๋‹ˆ๋‹ค. + <b>Enable "Always On Lateral" whenever "LKAS" is on, even when openpilot is not engaged.</b> + <b>openpilot๊ฐ€ ์ž‘๋™ ์ค‘์ด ์•„๋‹ ๋•Œ์—๋„, "LKAS"๊ฐ€ ์ผœ์ ธ ์žˆ์œผ๋ฉด ํ•ญ์ƒ "Always On Lateral"์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.</b> - Pause on Brake Below - ๋ธŒ๋ ˆ์ดํฌ ์•„๋ž˜์—์„œ ์ผ์‹œ ์ค‘์ง€ + Pause on Brake Press Below + ๋ธŒ๋ ˆ์ดํฌ ํŽ˜๋‹ฌ ๋ฐŸ์œผ๋ฉด ์ผ์‹œ ์ค‘์ง€ (์ดํ•˜) - Temporarily pause <b>Always on Lateral</b> below the set speed when braking. - ๋ธŒ๋ ˆ์ดํฌ๋ฅผ ๋ฐŸ์„ ๋•Œ ์„ค์ • ์†๋„ ์ดํ•˜์—์„œ <b>ํ•ญ์ƒ ์ธก๋ฉด ์ผœ๊ธฐ</b>๋ฅผ ์ผ์‹œ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค. + <b>Pause "Always On Lateral" below the set speed while the brake pedal is pressed.</b> + <b>๋ธŒ๋ ˆ์ดํฌ ํŽ˜๋‹ฌ์„ ๋ฐŸ๋Š” ๋™์•ˆ ์„ค์ • ์†๋„ ์ดํ•˜์—์„œ๋Š” "ํ•ญ์ƒ ์กฐํ–ฅ ์œ ์ง€"๋ฅผ ์ผ์‹œ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.</b> Lane Changes - ์ฐจ์„  ๋ณ€๊ฒฝ + ์ฐจ์„  ๋ณ€๊ฒฝ - Customize how openpilot performs lane changes. - openpilot์˜ ์ฐจ์„  ๋ณ€๊ฒฝ ์ˆ˜ํ–‰ ๋ฐฉ์‹์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜์‹ญ์‹œ์˜ค. + <b>Allow openpilot to change lanes.</b> + <b>openpilot์ด ์ฐจ์„ ์„ ๋ณ€๊ฒฝํ•˜๋„๋ก ํ—ˆ์šฉํ•˜์„ธ์š”.</b> Automatic Lane Changes - ์ž๋™ ์ฐจ์„  ๋ณ€๊ฒฝ + ์ž๋™ ์ฐจ์„  ๋ณ€๊ฒฝ - Change lanes automatically when the turn signal is on. No steering input needed! - ๋ฐฉํ–ฅ ์ง€์‹œ๋“ฑ์ด ์ผœ์ ธ ์žˆ์„ ๋•Œ ์ž๋™์œผ๋กœ ์ฐจ์„ ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์กฐํ–ฅ ์ž…๋ ฅ์ด ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค! + <b>When the turn signal is on, openpilot will automatically change lanes.</b> No steering-wheel nudge required! + <b>๋ฐฉํ–ฅ์ง€์‹œ๋“ฑ์ด ์ผœ์ ธ ์žˆ์œผ๋ฉด openpilot์ด ์ž๋™์œผ๋กœ ์ฐจ์„ ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.</b> ์Šคํ‹ฐ์–ด๋ง ํœ ์„ ๋ฐ€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค! Lane Change Delay - ์ฐจ์„  ๋ณ€๊ฒฝ ์ง€์—ฐ + ์ฐจ์„  ๋ณ€๊ฒฝ ์ง€์—ฐ - Delay automatic lane changes by the set amount of time. - ์ž๋™ ์ฐจ์„  ๋ณ€๊ฒฝ์„ ์„ค์ •๋œ ์‹œ๊ฐ„๋งŒํผ ์ง€์—ฐํ•ฉ๋‹ˆ๋‹ค. + <b>Delay between turn signal activation and the start of an automatic lane change.</b> + <b>๋ฐฉํ–ฅ์ง€์‹œ๋“ฑ ์ž‘๋™๊ณผ ์ž๋™ ์ฐจ์„  ๋ณ€๊ฒฝ ์‹œ์ž‘ ์‚ฌ์ด์˜ ์ง€์—ฐ.</b> Minimum Lane Change Speed - ์ตœ์†Œ ์ฐจ์„  ๋ณ€๊ฒฝ ์†๋„ + ์ตœ์†Œ ์ฐจ์„  ๋ณ€๊ฒฝ ์†๋„ - Minimum speed required for openpilot to perform a lane change. - openpilot์ด ์ฐจ์„  ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ์†๋„. + <b>Lowest speed at which openpilot will change lanes.</b> + <b>openpilot์ด ์ฐจ์„  ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ตœ์ € ์†๋„.</b> Minimum Lane Width - ์ตœ์†Œ ์ฐจ์„  ๋„ˆ๋น„ + ์ตœ์†Œ ์ฐจ๋กœ ๋„ˆ๋น„ - openpilot won't initiate a lane change into a lane narrower than this width. - openpilot์€ ์ด ๋„ˆ๋น„๋ณด๋‹ค ์ข์€ ์ฐจ์„ ์œผ๋กœ ์ฐจ์„  ๋ณ€๊ฒฝ์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + <b>Prevent automatic lane changes into lanes narrower than the set width.</b> + <b>์„ค์ •ํ•œ ํญ๋ณด๋‹ค ์ข์€ ์ฐจ์„ ์œผ๋กœ์˜ ์ž๋™ ์ฐจ๋กœ ๋ณ€๊ฒฝ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.</b> One Lane Change Per Signal - ์‹ ํ˜ธ๋‹น ํ•œ ์ฐจ์„  ๋ณ€๊ฒฝ + ์‹ ํ˜ธ๋‹น ์ฐจ๋กœ ๋ณ€๊ฒฝ 1ํšŒ - Limit lane changes to one per turn signal activation. - ๋ฐฉํ–ฅ ์ง€์‹œ๋“ฑ์„ ํ•œ ๋ฒˆ ์ผค ๋•Œ ์ฐจ์„  ๋ณ€๊ฒฝ์„ ํ•œ ๋ฒˆ์œผ๋กœ ์ œํ•œํ•˜์‹ญ์‹œ์˜ค. + <b>Limit automatic lane changes to one per turn-signal activation.</b> + <b>์ž๋™ ์ฐจ์„  ๋ณ€๊ฒฝ์„ ๋ฐฉํ–ฅ์ง€์‹œ๋“ฑ ํ•œ ๋ฒˆ ์ž‘๋™ํ•  ๋•Œ๋งˆ๋‹ค ํ•œ ๋ฒˆ์œผ๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.</b> Lateral Tuning - ์ธก๋ฉด ์กฐ์ • + ํšก๋ฐฉํ–ฅ ํŠœ๋‹ - Settings for fine-tuning openpilot's lateral controls. - openpilot์˜ ์ธก๋ฉด ์ œ์–ด ๋ฏธ์„ธ ์กฐ์ •์„ ์œ„ํ•œ ์„ค์ •. + <b>Miscellaneous steering control changes</b> to fine-tune how openpilot drives. + <b>๊ธฐํƒ€ ์กฐํ–ฅ ์ œ์–ด ๋ณ€๊ฒฝ</b>์œผ๋กœ openpilot์˜ ์ฃผํ–‰์„ ๋ฏธ์„ธ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. Force Turn Desires Below Lane Change Speed - ์ฐจ์„  ๋ณ€๊ฒฝ ์†๋„ ์ดํ•˜๋กœ ์š•๊ตฌ ๊ฐ•์ œ ์ „ํ™˜ + ์ฐจ๋กœ ๋ณ€๊ฒฝ ์†๋„ ์ดํ•˜์—์„œ ๊ฐ•์ œ ํ„ด ์˜๋„ - Force turn desires below the minimum lane change speed to improve turning accuracy. - ํšŒ์ „ ์ •ํ™•๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ตœ์†Œ ์ฐจ์„  ๋ณ€๊ฒฝ ์†๋„ ์ดํ•˜์˜ ํšŒ์ „ ์š•๊ตฌ๋ฅผ ๊ฐ•์ œ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. - - - Neural Network Feedforward (NNFF) - ์‹ ๊ฒฝ๋ง ํ”ผ๋“œํฌ์›Œ๋“œ (NNFF) - - - Use <b>Twilsoncoโ€™s</b> <b>Neural Network FeedForward</b> model for smoother, model-based steering trained on your vehicle's data. - <b>Twilsonco์˜</b> <b>Neural Network FeedForward</b> ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฐจ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋กœ ํ›ˆ๋ จ๋œ ๋” ๋ถ€๋“œ๋Ÿฌ์šด ๋ชจ๋ธ ๊ธฐ๋ฐ˜ ์กฐํ–ฅ์„ ๊ตฌํ˜„ํ•˜์„ธ์š”. - - - Smooth Curve Handling - ๋ถ€๋“œ๋Ÿฌ์šด ๊ณก์„  ์ฒ˜๋ฆฌ - - - Use <b>Twilsoncoโ€™s</b> torque-based adjustments to smooth out steering during curves. - ๊ณก์„  ์ฃผํ–‰ ์‹œ ์กฐํ–ฅ์„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด <b>Twilsonco์˜</b> ํ† ํฌ ๊ธฐ๋ฐ˜ ์กฐ์ •์„ ์‚ฌ์šฉํ•˜์„ธ์š”. + <b>While driving below the minimum lane change speed with an active turn signal, instruct openpilot to turn left/right.</b> + <b>์ตœ์†Œ ์ฐจ์„  ๋ณ€๊ฒฝ ์†๋„ ๋ฏธ๋งŒ์œผ๋กœ ์ฃผํ–‰ ์ค‘์ด๊ณ  ๋ฐฉํ–ฅ์ง€์‹œ๋“ฑ์ด ์ผœ์ ธ ์žˆ์„ ๋•Œ, openpilot์— ์ขŒ/์šฐํšŒ์ „์„ ์ง€์‹œํ•˜์„ธ์š”.</b> Quality of Life - ์‚ถ์˜ ์งˆ + ์‚ถ์˜ ์งˆ - Miscellaneous features to improve the steering experience. - ์กฐํ–ฅ ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ. + <b>Steering control changes to fine-tune how openpilot drives.</b> + <b>openpilot์˜ ์ฃผํ–‰ ๋ฐฉ์‹์„ ๋ฏธ์„ธ ์กฐ์ •ํ•˜๋Š” ์กฐํ–ฅ ์ œ์–ด ๋ณ€๊ฒฝ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.</b> Pause Steering Below - ์•„๋ž˜ ์กฐํ–ฅ ์ผ์‹œ ์ค‘์ง€ + ์กฐํ–ฅ ์ผ์‹œ ์ค‘์ง€ ๊ธฐ์ค€ ์•„๋ž˜ - Temporarily pause steering control below the set speed. - ์„ค์ •๋œ ์†๋„ ์ดํ•˜์—์„œ๋Š” ์กฐํ–ฅ ์ œ์–ด๋ฅผ ์ผ์‹œ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค. + <b>Pause steering below the set speed.</b> + <b>์„ค์ • ์†๋„ ๋ฏธ๋งŒ์—์„œ ์กฐํ–ฅ์„ ์ผ์‹œ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.</b> Instant - ์ฆ‰์‹œ + ์ฆ‰์‹œ second - ๋‘˜์งธ + ์ดˆ seconds - ์ดˆ - - - Are you sure you want to completely reset your <b>Actuator Delay</b>? - <b>์•ก์ถ”์—์ดํ„ฐ ์ง€์—ฐ</b>์„ ์™„์ „ํžˆ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Are you sure you want to completely reset your <b>Friction</b>? - <b>Friction</b>์„(๋ฅผ) ์™„์ „ํžˆ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Are you sure you want to completely reset your <b>Kp Factor</b>? - <b>Kp Factor</b>๋ฅผ ์™„์ „ํžˆ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Are you sure you want to completely reset your <b>Lateral Accel</b>? - <b>Lateral Accel</b>์„(๋ฅผ) ์™„์ „ํžˆ ์ดˆ๊ธฐํ™”ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Are you sure you want to completely reset your <b>Steer Ratio</b>? - <b>์กฐํ–ฅ๋น„</b>๋ฅผ ์™„์ „ํžˆ ์ดˆ๊ธฐํ™”ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Off - ๋„๊ธฐ - - - foot - ๋ฐœ - - - feet - ํ”ผํŠธ - - - mph - mph - - - meter - ๋ฏธํ„ฐ - - - meters - ๋ฏธํ„ฐ - - - km/h - km/h + ์ดˆ Turn Signal Only - ๋ฐฉํ–ฅ ์ง€์‹œ๋“ฑ ์ „์šฉ + ๋ฐฉํ–ฅ์ง€์‹œ๋“ฑ ์ „์šฉ + + + Reset <b>Actuator Delay</b> to its default value? + <b>์•ก์ถ”์—์ดํ„ฐ ์ง€์—ฐ</b>์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + Reset <b>Friction</b> to its default value? + <b>Friction</b>์„(๋ฅผ) ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + Reset <b>Kp Factor</b> to its default value? + <b>Kp Factor</b>๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + Reset <b>Lateral Accel</b> to its default value? + <b>Lateral Accel</b>์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + Reset <b>Steer Ratio</b> to its default value? + <b>Steer Ratio</b>๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + Lateral Accel (Default: %1) + ํšก๊ฐ€์†๋„ (๊ธฐ๋ณธ๊ฐ’: %1) + + + Off + ๋” + + + foot + ํ”ผํŠธ + + + feet + ํ”ผํŠธ + + + mph + mph + + + meter + ๋ฏธํ„ฐ + + + meters + ๋ฏธํ„ฐ + + + km/h + km/h + + + Neural Network Feedforward (NNFF) + ์‹ ๊ฒฝ๋ง ์ˆœ์ „ํŒŒ (NNFF) + + + <b>Twilsonco's "Neural Network FeedForward" model controller for smoother, model-based steering trained on your vehicle's data.</b> + <b>Twilsonco์˜ "Neural Network FeedForward" ๋ชจ๋ธ ์ปจํŠธ๋กค๋Ÿฌ๋กœ, ์ฐจ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋กœ ํ•™์Šต๋œ ๋” ๋ถ€๋“œ๋Ÿฌ์šด ๋ชจ๋ธ ๊ธฐ๋ฐ˜ ์กฐํ–ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.</b> + + + Smooth Curve Handling + ๋ถ€๋“œ๋Ÿฌ์šด ๊ณก์„  ์ฒ˜๋ฆฌ + + + <b>Twilsonco's torque-based adjustments to smoothen out steering in curves.</b> + <b>์ปค๋ธŒ์—์„œ ์กฐํ–ฅ์„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ Twilsonco์˜ ํ† ํฌ ๊ธฐ๋ฐ˜ ์กฐ์ •.</b> FrogPilotLongitudinalPanel - - Conditional Experimental Mode - ์กฐ๊ฑด๋ถ€ ์‹คํ—˜ ๋ชจ๋“œ - - - Automatically switch to <b>Experimental Mode</b> when set conditions are met. - ์„ค์ •๋œ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜๋ฉด <b>์‹คํ—˜ ๋ชจ๋“œ</b>๋กœ ์ž๋™ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. - - - Below - ์•„๋ž˜ - - - Switch to <b>Experimental Mode</b> when driving below this speed. - ์ด ์†๋„ ์ดํ•˜๋กœ ์ฃผํ–‰ํ•  ๋•Œ <b>์‹คํ—˜ ๋ชจ๋“œ</b>๋กœ ์ „ํ™˜ํ•˜์‹ญ์‹œ์˜ค. - - - Curve Detected Ahead - ์•ž์— ์ปค๋ธŒ ์žˆ์Œ - - - Switch to <b>Experimental Mode</b> when a curve is detected ahead. Useful for letting the model choose the appropriate speed for the curve. - ์ปค๋ธŒ๊ฐ€ ๊ฐ์ง€๋˜๋ฉด <b>์‹คํ—˜ ๋ชจ๋“œ</b>๋กœ ์ „ํ™˜ํ•˜์‹ญ์‹œ์˜ค. ์ปค๋ธŒ์— ์ ํ•ฉํ•œ ์†๋„๋ฅผ ๋ชจ๋ธ์ด ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. - - - Lead Detected Ahead - ์•ž์— ๋‚ฉ ๊ฒ€์ถœ๋จ - - - Switch to <b>Experimental Mode</b> when a slower or stopped vehicle is detected ahead. Can improve braking smoothness and reliability on some vehicles. - ์•ž์— ๋А๋ฆฌ๊ฑฐ๋‚˜ ์ •์ง€ํ•œ ์ฐจ๋Ÿ‰์ด ๊ฐ์ง€๋˜๋ฉด <b>์‹คํ—˜ ๋ชจ๋“œ</b>๋กœ ์ „ํ™˜ํ•˜์‹ญ์‹œ์˜ค. ์ผ๋ถ€ ์ฐจ๋Ÿ‰์—์„œ ์ œ๋™์˜ ๋ถ€๋“œ๋Ÿฌ์›€๊ณผ ์‹ ๋ขฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - - - Navigation Data - ํƒ์ƒ‰ ๋ฐ์ดํ„ฐ - - - Switch to <b>Experimental Mode</b> when approaching intersections or turns on the active route while using <b>Navigate on openpilot (NOO)</b>. Useful for letting the model choose the appropriate speed for upcoming navigation maneuvers. - ๊ต์ฐจ๋กœ๋‚˜ ํšŒ์ „ ๊ตฌ๊ฐ„์— ์ ‘๊ทผํ•  ๋•Œ <b>Navigate on openpilot (NOO)</b>๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ <b>์‹คํ—˜ ๋ชจ๋“œ</b>๋กœ ์ „ํ™˜ํ•˜์„ธ์š”. ๋‹ค๊ฐ€์˜ค๋Š” ๋‚ด๋น„๊ฒŒ์ด์…˜ ์กฐ์ž‘์— ์ ํ•ฉํ•œ ์†๋„๋ฅผ ๋ชจ๋ธ์ด ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. - - - openpilot Wants to Stop In - openpilot๊ฐ€ ๋ฉˆ์ถ”๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. - - - Switch to <b>Experimental Mode</b> when openpilot wants to stop within the set amount of time. This is typically triggered by the driving model "detecting" a red light or stop sign. - openpilot์ด ์„ค์ •๋œ ์‹œ๊ฐ„ ๋‚ด์— ์ •์ง€ํ•˜๋ ค๊ณ  ํ•  ๋•Œ <b>์‹คํ—˜ ๋ชจ๋“œ</b>๋กœ ์ „ํ™˜ํ•˜์‹ญ์‹œ์˜ค. ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์šด์ „ ๋ชจ๋ธ์ด ๋นจ๊ฐ„๋ถˆ์ด๋‚˜ ์ •์ง€ ์‹ ํ˜ธ๋ฅผ "๊ฐ์ง€"ํ•  ๋•Œ ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. - - - Turn Signal Below - ์•„๋ž˜ ๋ฐฉํ–ฅ ์ง€์‹œ๋“ฑ - - - Switch to <b>Experimental Mode</b> when using a turn signal below the set speed. Useful for letting the model choose the appropriate speed for upcoming left or right turns. - Translation A - - - Status Widget - ์ƒํƒœ ์œ„์ ฏ - - - Show the <b>Conditional Experimental Mode</b> status on the driving screen. - ์šด์ „ ํ™”๋ฉด์— <b>์กฐ๊ฑด๋ถ€ ์‹คํ—˜ ๋ชจ๋“œ</b> ์ƒํƒœ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. - - - Show <b>Curve Speed Control</b>'s desired speed on the driving screen. - ์šด์ „ ํ™”๋ฉด์— <b>๊ณก์„  ์†๋„ ์ œ์–ด</b>์˜ ์›ํ•˜๋Š” ์†๋„๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. - - - Customize Driving Personalities - ์šด์ „ ์„ฑํ–ฅ ๋งž์ถคํ™” - - - Customize the personality profiles to your driving style. - ์šด์ „ ์Šคํƒ€์ผ์— ๋งž๊ฒŒ ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ๋งž์ถค ์„ค์ •ํ•˜์„ธ์š”. - - - Traffic Personality - ๊ตํ†ต ์„ฑ๊ฒฉ - - - Customize the <b>Traffic</b> personality profile. Tailored for navigating through traffic. - <b>๊ตํ†ต</b> ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜์‹ญ์‹œ์˜ค. ๊ตํ†ต ์ƒํ™ฉ์„ ํ—ค์ณ ๋‚˜๊ฐ€๋Š” ๋ฐ ๋งž์ถคํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. - - - Following Distance - ์ฐจ๊ฐ„ ๊ฑฐ๋ฆฌ - - - The minimum following distance while in <b>Traffic Mode</b>. openpilot will dynamically adjust between this value and the value in the <b>Aggressive</b> profile based on your current speed. - <b>๊ตํ†ต ๋ชจ๋“œ</b>์—์„œ์˜ ์ตœ์†Œ ์ถ”์ข… ๊ฑฐ๋ฆฌ. openpilot์€ ํ˜„์žฌ ์†๋„์— ๋”ฐ๋ผ ์ด ๊ฐ’๊ณผ <b>๊ณต๊ฒฉ์ </b> ํ”„๋กœํ•„์˜ ๊ฐ’ ์‚ฌ์ด๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. - - - Acceleration Sensitivity - ๊ฐ€์†๋„ ๋ฏผ๊ฐ๋„ - - - How sensitive openpilot is to changes in acceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>๊ตํ†ต ๋ชจ๋“œ</b>์—์„œ ๊ฐ€์† ๋ณ€ํ™”์— ๋Œ€ํ•œ openpilot์˜ ๋ฏผ๊ฐ๋„. ๊ฐ’์ด ๋†’์„์ˆ˜๋ก ๋” ๋ถ€๋“œ๋Ÿฝ๊ณ  ์ ์ง„์ ์ธ ๊ฐ€์†์ด ์ด๋ฃจ์–ด์ง€๋ฉฐ, ๊ฐ’์ด ๋‚ฎ์„์ˆ˜๋ก ๋” ๋น ๋ฅด๊ณ  ๋ฐ˜์‘์ด ๋น ๋ฅธ ๋ณ€ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - - - Deceleration Sensitivity - ๊ฐ์† ๋ฏผ๊ฐ๋„ - - - How sensitive openpilot is to changes in deceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>๊ตํ†ต ๋ชจ๋“œ</b>์—์„œ ๊ฐ์† ๋ณ€ํ™”์— ๋Œ€ํ•œ openpilot์˜ ๋ฏผ๊ฐ๋„. ๊ฐ’์ด ๋†’์„์ˆ˜๋ก ๊ฐ์†์ด ๋ถ€๋“œ๋Ÿฝ๊ณ  ์ ์ง„์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ๊ฐ’์ด ๋‚ฎ์„์ˆ˜๋ก ๋” ๋น ๋ฅด๊ณ  ๋ฐ˜์‘์ด ๋น ๋ฅธ ๋ณ€ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜์—ฌ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - - - Safety Distance Sensitivity - ์•ˆ์ „ ๊ฑฐ๋ฆฌ ๋ฏผ๊ฐ๋„ - - - How cautious openpilot is around other vehicles or obstacles while in <b>Traffic Mode</b>. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - <b>๊ตํ†ต ๋ชจ๋“œ</b>์—์„œ openpilot์ด ๋‹ค๋ฅธ ์ฐจ๋Ÿ‰์ด๋‚˜ ์žฅ์• ๋ฌผ์— ๋Œ€ํ•ด ์–ผ๋งˆ๋‚˜ ์‹ ์ค‘ํ•œ์ง€. ๊ฐ’์ด ๋†’์„์ˆ˜๋ก ์ถ”์ข… ๊ฑฐ๋ฆฌ๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ณ  ์•ˆ์ „์ด ์šฐ์„ ์‹œ๋˜์–ด ๋” ์‹ ์ค‘ํ•œ ์šด์ „์ด ์ด๋ฃจ์–ด์ง€๋ฉฐ, ๊ฐ’์ด ๋‚ฎ์„์ˆ˜๋ก ๋” ๊ฐ€๊นŒ์šด ์ถ”์ข…์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋ฐ˜์‘ ์‹œ๊ฐ„์ด ์ค„์–ด๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - - - Speed Increase Response - ์†๋„ ์ฆ๊ฐ€ ์‘๋‹ต - - - How quickly openpilot increases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>๊ตํ†ต ๋ชจ๋“œ</b>์—์„œ openpilot์ด ์†๋„๋ฅผ ์–ผ๋งˆ๋‚˜ ๋นจ๋ฆฌ ์ฆ๊ฐ€์‹œํ‚ค๋Š”์ง€. ๋†’์€ ๊ฐ’์€ ๊ฐ€์† ์‹œ ๋” ๋ถ€๋“œ๋Ÿฝ๊ณ  ์ ์ง„์ ์ธ ์†๋„ ๋ณ€ํ™”๋ฅผ ๋ณด์žฅํ•˜๋ฉฐ, ๋‚ฎ์€ ๊ฐ’์€ ๋” ๋น ๋ฅด๊ณ  ๋ฐ˜์‘์ ์ธ ๋ณ€ํ™”๋ฅผ ํ—ˆ์šฉํ•˜์—ฌ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - - - Speed Decrease Response - ์†๋„ ๊ฐ์†Œ ๋ฐ˜์‘ - - - How quickly openpilot decreases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>๊ตํ†ต ๋ชจ๋“œ</b>์—์„œ openpilot์ด ์†๋„๋ฅผ ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ฒŒ ์ค„์ด๋Š”์ง€. ๋†’์€ ๊ฐ’์€ ์†๋„๋ฅผ ์ค„์ผ ๋•Œ ๋” ๋ถ€๋“œ๋Ÿฝ๊ณ  ์ ์ง„์ ์ธ ๋ณ€ํ™”๋ฅผ ๋ณด์žฅํ•˜๋ฉฐ, ๋‚ฎ์€ ๊ฐ’์€ ๋” ๋น ๋ฅด๊ณ  ๋ฐ˜์‘์ ์ธ ๋ณ€ํ™”๋ฅผ ํ—ˆ์šฉํ•˜์—ฌ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - - - Reset Settings - ์„ค์ • ์žฌ์„ค์ • - - - Reset <b>Traffic Mode</b> settings to default values. - <b>ํŠธ๋ž˜ํ”ฝ ๋ชจ๋“œ</b> ์„ค์ •์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. - - - Aggressive Personality - ๊ณต๊ฒฉ์ ์ธ ์„ฑ๊ฒฉ - - - Customize the <b>Aggressive</b> personality profile. Designed for a more assertive driving style. - <b>๊ณต๊ฒฉ์ </b> ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜์‹ญ์‹œ์˜ค. ๋ณด๋‹ค ๋‹จํ˜ธํ•œ ์šด์ „ ์Šคํƒ€์ผ์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Aggressive</b> personality profile.<br><br>Default: 1.25 seconds. - <b>Aggressive</b> ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•  ๋•Œ openpilot์ด ์„ ํ–‰ ์ฐจ๋Ÿ‰์„ ๋”ฐ๋ผ๊ฐ€๋Š” ์‹œ๊ฐ„์€ ๋ช‡ ์ดˆ์ž…๋‹ˆ๊นŒ?<br><br>๊ธฐ๋ณธ๊ฐ’: 1.25์ดˆ. - - - How sensitive openpilot is to changes in acceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Translation B - - - How sensitive openpilot is to changes in deceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilot์€ <b>Aggressive</b> ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ์† ๋ณ€ํ™”์— ์–ผ๋งˆ๋‚˜ ๋ฏผ๊ฐํ•œ๊ฐ€. ๋†’์€ ๊ฐ’์€ ๋” ๋ถ€๋“œ๋Ÿฝ๊ณ  ์ ์ง„์ ์ธ ๊ฐ์†์„ ์ดˆ๋ž˜ํ•˜๋ฉฐ, ๋‚ฎ์€ ๊ฐ’์€ ๋” ๋น ๋ฅด๊ณ  ๋ฐ˜์‘์ ์ธ ๋ณ€ํ™”๋ฅผ ํ—ˆ์šฉํ•˜์—ฌ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ๋‹ค. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Aggressive</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - <b>Aggressive</b> ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•  ๋•Œ openpilot์ด ๋‹ค๋ฅธ ์ฐจ๋Ÿ‰์ด๋‚˜ ์žฅ์• ๋ฌผ ์ฃผ๋ณ€์—์„œ ์–ผ๋งˆ๋‚˜ ์‹ ์ค‘ํ•œ์ง€. ๋†’์€ ๊ฐ’์€ ์ถ”์ข… ๊ฑฐ๋ฆฌ๋ฅผ ๋Š˜๋ฆฌ๊ณ  ์•ˆ์ „์„ ์šฐ์„ ์‹œํ•˜์—ฌ ๋” ์‹ ์ค‘ํ•œ ์šด์ „์„ ์œ ๋„ํ•˜๋ฉฐ, ๋‚ฎ์€ ๊ฐ’์€ ๋” ๊ฐ€๊นŒ์šด ์ถ”์ข…์„ ํ—ˆ์šฉํ•˜์ง€๋งŒ ๋ฐ˜์‘ ์‹œ๊ฐ„์ด ์ค„์–ด๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - - - How quickly openpilot increases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - Translation B - - - How quickly openpilot decreases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - <code>๊ณต๊ฒฉ์ </code> ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•  ๋•Œ openpilot์ด ์†๋„๋ฅผ ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ฒŒ ์ค„์ด๋Š”์ง€. ๋†’์€ ๊ฐ’์€ ์†๋„๋ฅผ ์ค„์ผ ๋•Œ ๋” ๋ถ€๋“œ๋Ÿฝ๊ณ  ์ ์ง„์ ์ธ ๋ณ€ํ™”๋ฅผ ๋ณด์žฅํ•˜๋ฉฐ, ๋‚ฎ์€ ๊ฐ’์€ ๋” ๋น ๋ฅด๊ณ  ๋ฐ˜์‘์ ์ธ ๋ณ€ํ™”๋ฅผ ํ—ˆ์šฉํ•˜์—ฌ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - - - Reset the <b>Aggressive</b> personality profile settings to default values. - <b>๊ณต๊ฒฉ์ </b> ์„ฑ๊ฒฉ ํ”„๋กœํ•„ ์„ค์ •์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค. - - - Standard Personality - ํ‘œ์ค€ ์„ฑ๊ฒฉ - - - Customize the <b>Standard</b> personality profile. Designed for a balanced driving style. - <b>ํ‘œ์ค€</b> ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜์‹ญ์‹œ์˜ค. ๊ท ํ˜• ์žกํžŒ ์šด์ „ ์Šคํƒ€์ผ์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Standard</b> personality profile.<br><br>Default: 1.45 seconds. - <b>ํ‘œ์ค€</b> ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•  ๋•Œ openpilot์ด ์„ ํ–‰ ์ฐจ๋Ÿ‰์„ ๋”ฐ๋ผ๊ฐ€๋Š” ์‹œ๊ฐ„(์ดˆ)์€ ์–ผ๋งˆ์ž…๋‹ˆ๊นŒ?<br><br>๊ธฐ๋ณธ๊ฐ’: 1.45์ดˆ. - - - How sensitive openpilot is to changes in acceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>ํ‘œ์ค€</b> ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•  ๋•Œ openpilot์ด ๊ฐ€์† ๋ณ€ํ™”์— ์–ผ๋งˆ๋‚˜ ๋ฏผ๊ฐํ•œ์ง€. ๋†’์€ ๊ฐ’์€ ๋” ๋ถ€๋“œ๋Ÿฝ๊ณ  ์ ์ง„์ ์ธ ๊ฐ€์†์„ ์œ ๋„ํ•˜๋ฉฐ, ๋‚ฎ์€ ๊ฐ’์€ ๋” ๋น ๋ฅด๊ณ  ๋ฐ˜์‘์ด ๋น ๋ฅธ ๋ณ€ํ™”๋ฅผ ํ—ˆ์šฉํ•˜์—ฌ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - - - How sensitive openpilot is to changes in deceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>ํ‘œ์ค€</b> ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•  ๋•Œ openpilot์ด ๊ฐ์† ๋ณ€ํ™”์— ์–ผ๋งˆ๋‚˜ ๋ฏผ๊ฐํ•œ์ง€. ๋†’์€ ๊ฐ’์€ ๋” ๋ถ€๋“œ๋Ÿฝ๊ณ  ์ ์ง„์ ์ธ ๊ฐ์†์„ ์ดˆ๋ž˜ํ•˜๋ฉฐ, ๋‚ฎ์€ ๊ฐ’์€ ๋” ๋น ๋ฅด๊ณ  ๋ฐ˜์‘์ ์ธ ๋ณ€ํ™”๋ฅผ ํ—ˆ์šฉํ•˜์—ฌ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Standard</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - <b>ํ‘œ์ค€</b> ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•  ๋•Œ openpilot์ด ๋‹ค๋ฅธ ์ฐจ๋Ÿ‰์ด๋‚˜ ์žฅ์• ๋ฌผ ์ฃผ๋ณ€์—์„œ ์–ผ๋งˆ๋‚˜ ์‹ ์ค‘ํ•œ์ง€. ๋†’์€ ๊ฐ’์€ ์ถ”์ข… ๊ฑฐ๋ฆฌ๋ฅผ ๋Š˜๋ฆฌ๊ณ  ์•ˆ์ „์„ ์šฐ์„ ์‹œํ•˜์—ฌ ๋” ์‹ ์ค‘ํ•œ ์šด์ „์„ ์œ ๋„ํ•˜๋ฉฐ, ๋‚ฎ์€ ๊ฐ’์€ ๋” ๊ฐ€๊นŒ์šด ์ถ”์ข…์„ ํ—ˆ์šฉํ•˜์ง€๋งŒ ๋ฐ˜์‘ ์‹œ๊ฐ„์ด ์ค„์–ด๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - - - How quickly openpilot increases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - Translation B - - - How quickly openpilot decreases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>ํ‘œ์ค€</b> ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•  ๋•Œ openpilot์ด ์†๋„๋ฅผ ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ฒŒ ์ค„์ด๋Š”์ง€. ๋†’์€ ๊ฐ’์€ ์†๋„๋ฅผ ์ค„์ผ ๋•Œ ๋” ๋ถ€๋“œ๋Ÿฝ๊ณ  ์ ์ง„์ ์ธ ๋ณ€ํ™”๋ฅผ ๋ณด์žฅํ•˜๋ฉฐ, ๋‚ฎ์€ ๊ฐ’์€ ๋” ๋น ๋ฅด๊ณ  ๋ฐ˜์‘์ ์ธ ๋ณ€ํ™”๋ฅผ ํ—ˆ์šฉํ•˜์—ฌ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - - - Reset the <b>Standard</b> personality profile settings to default values. - <b>ํ‘œ์ค€</b> ์„ฑ๊ฒฉ ํ”„๋กœํ•„ ์„ค์ •์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค. - - - Relaxed Personality - ๋А๊ธ‹ํ•œ ์„ฑ๊ฒฉ - - - Customize the <b>Relaxed</b> personality profile. Designed for a more laid-back driving style. - <b>ํŽธ์•ˆํ•œ</b> ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜์‹ญ์‹œ์˜ค. ๋ณด๋‹ค ์—ฌ์œ ๋กœ์šด ์šด์ „ ์Šคํƒ€์ผ์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Relaxed</b> personality profile.<br><br>Default: 1.75 seconds. - openpilot์ด <b>Relaxed</b> ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•  ๋•Œ ์„ ํ–‰ ์ฐจ๋Ÿ‰์„ ๋”ฐ๋ผ๊ฐ€๋Š” ์‹œ๊ฐ„์€ ๋ช‡ ์ดˆ์ž…๋‹ˆ๊นŒ?<br><br>๊ธฐ๋ณธ๊ฐ’: 1.75์ดˆ. - - - How sensitive openpilot is to changes in acceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Translation A - - - How sensitive openpilot is to changes in deceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>Relaxed</b> ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•  ๋•Œ openpilot์ด ๊ฐ์† ๋ณ€ํ™”์— ์–ผ๋งˆ๋‚˜ ๋ฏผ๊ฐํ•œ์ง€. ๋†’์€ ๊ฐ’์€ ๋” ๋ถ€๋“œ๋Ÿฝ๊ณ  ์ ์ง„์ ์ธ ๊ฐ์†์„ ์œ ๋„ํ•˜๋ฉฐ, ๋‚ฎ์€ ๊ฐ’์€ ๋” ๋น ๋ฅด๊ณ  ๋ฐ˜์‘์ ์ธ ๋ณ€ํ™”๋ฅผ ํ—ˆ์šฉํ•˜์—ฌ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Relaxed</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - Translation B - - - How quickly openpilot increases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>Relaxed</b> ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•  ๋•Œ openpilot์ด ์†๋„๋ฅผ ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ฒŒ ์ฆ๊ฐ€์‹œํ‚ค๋Š”์ง€. ๋†’์€ ๊ฐ’์€ ๊ฐ€์† ์‹œ ๋” ๋ถ€๋“œ๋Ÿฝ๊ณ  ์ ์ง„์ ์ธ ์†๋„ ๋ณ€ํ™”๋ฅผ ๋ณด์žฅํ•˜๋ฉฐ, ๋‚ฎ์€ ๊ฐ’์€ ๋” ๋น ๋ฅด๊ณ  ๋ฐ˜์‘์ ์ธ ๋ณ€ํ™”๋ฅผ ํ—ˆ์šฉํ•˜์—ฌ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - - - How quickly openpilot decreases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - <b>Relaxed</b> ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•  ๋•Œ openpilot์ด ์†๋„๋ฅผ ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ฒŒ ์ค„์ด๋Š”์ง€. ๋†’์€ ๊ฐ’์€ ์†๋„๋ฅผ ์ค„์ผ ๋•Œ ๋” ๋ถ€๋“œ๋Ÿฝ๊ณ  ์ ์ง„์ ์ธ ๋ณ€ํ™”๋ฅผ ๋ณด์žฅํ•˜๋ฉฐ, ๋‚ฎ์€ ๊ฐ’์€ ๋” ๋น ๋ฅด๊ณ  ๋ฐ˜์‘์ ์ธ ๋ณ€ํ™”๋ฅผ ํ—ˆ์šฉํ•˜์—ฌ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - - - Reset the <b>Relaxed</b> personality profile settings to default values. - <b>Relaxed</b> ์„ฑ๊ฒฉ ํ”„๋กœํ•„ ์„ค์ •์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค. - - - Longitudinal Tuning - ์ข…๋‹จ ์กฐ์ • - - - Settings that control how openpilot manages speed and acceleration. - openpilot์ด ์†๋„์™€ ๊ฐ€์†์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์„ ์ œ์–ดํ•˜๋Š” ์„ค์ •. - - - Acceleration Profile - ๊ฐ€์† ํ”„๋กœํ•„ - - - Enable either a sporty or eco-friendly acceleration profile. <b>Sport+</b> aims to make openpilot accelerate as fast as possible! - ์Šคํฌํ‹ฐํ•˜๊ฑฐ๋‚˜ ์นœํ™˜๊ฒฝ์ ์ธ ๊ฐ€์† ํ”„๋กœํ•„์„ ํ™œ์„ฑํ™”ํ•˜์„ธ์š”. <b>Sport+</b>๋Š” openpilot์ด ๊ฐ€๋Šฅํ•œ ํ•œ ๋น ๋ฅด๊ฒŒ ๊ฐ€์†ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค! - - - Deceleration Profile - ๊ฐ์† ํ”„๋กœํŒŒ์ผ - - - Enable either a sporty or eco-friendly deceleration profile. - ์Šคํฌํ‹ฐํ•˜๊ฑฐ๋‚˜ ์นœํ™˜๊ฒฝ์ ์ธ ๊ฐ์† ํ”„๋กœํ•„์„ ํ™œ์„ฑํ™”ํ•˜์„ธ์š”. - - - Human-Like Acceleration - ์ธ๊ฐ„๊ณผ ๊ฐ™์€ ๊ฐ€์† - - - Use the lead vehicle's acceleration rate when at a takeoff and ramp off the acceleration rate when approaching the maximum set speed for a more "human-like" driving experience. - ์ด๋ฅ™ ์‹œ ์„ ๋„ ์ฐจ๋Ÿ‰์˜ ๊ฐ€์†๋ฅ ์„ ์‚ฌ์šฉํ•˜๊ณ , ์ตœ๋Œ€ ์„ค์ • ์†๋„์— ์ ‘๊ทผํ•  ๋•Œ ๊ฐ€์†๋ฅ ์„ ์ค„์—ฌ ๋ณด๋‹ค "์ธ๊ฐ„์ ์ธ" ์šด์ „ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. - - - Human-Like Approach Behind Leads - ๋ฆฌ๋“œ ๋’ค์— ์žˆ๋Š” ์ธ๊ฐ„์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹ - - - Dynamically adjust the desired following distance when approaching slower or stopped vehicles for a more "human-like" driving experience. - ๋” "์ธ๊ฐ„์ ์ธ" ์šด์ „ ๊ฒฝํ—˜์„ ์œ„ํ•ด ๋” ๋А๋ฆฌ๊ฑฐ๋‚˜ ์ •์ง€๋œ ์ฐจ๋Ÿ‰์— ์ ‘๊ทผํ•  ๋•Œ ์›ํ•˜๋Š” ์ถ”์ข… ๊ฑฐ๋ฆฌ๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. - - - Lead Detection Confidence - ๋ฆฌ๋“œ ๊ฐ์ง€ ์‹ ๋ขฐ๋„ - - - How sensitive openpilot is to detecting vehicles ahead. A lower value can help detect vehicles sooner and from farther away, but increases the chance openpilot mistakes other objects for vehicles. - openpilot์ด ์•ž ์ฐจ๋Ÿ‰์„ ๊ฐ์ง€ํ•˜๋Š” ๋ฏผ๊ฐ๋„. ๋‚ฎ์€ ๊ฐ’์€ ์ฐจ๋Ÿ‰์„ ๋” ๋นจ๋ฆฌ, ๋” ๋ฉ€๋ฆฌ์„œ ๊ฐ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ, openpilot์ด ๋‹ค๋ฅธ ๋ฌผ์ฒด๋ฅผ ์ฐจ๋Ÿ‰์œผ๋กœ ์˜ค์ธํ•  ๊ฐ€๋Šฅ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค. - - - Maximum Acceleration Rate - ์ตœ๋Œ€ ๊ฐ€์†๋ฅ  - - - Set a cap on how fast openpilot can accelerate. - openpilot์ด ๊ฐ€์†ํ•  ์ˆ˜ ์žˆ๋Š” ์†๋„์— ์ œํ•œ์„ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค. - - - "Taco Bell Run" Turn Speed Hack - "Taco Bell Run" ํšŒ์ „ ์†๋„ ํ•ดํ‚น - - - The turn speed hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to slow down when taking left/right turns for smoother turns. - comma์˜ 2022 "Taco Bell Run" ๋“œ๋ผ์ด๋ธŒ์—์„œ ๊ฐ€์ ธ์˜จ ํšŒ์ „ ์†๋„ ํ•ดํ‚น. ์ขŒ/์šฐํšŒ์ „ ์‹œ ์†๋„๋ฅผ ์ค„์—ฌ ๋ถ€๋“œ๋Ÿฌ์šด ํšŒ์ „์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. - - - Quality of Life - ์‚ถ์˜ ์งˆ - - - Miscellaneous features to improve the acceleration and braking experience. - ๊ฐ€์† ๋ฐ ์ œ๋™ ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ. - - - Cruise Interval - ํฌ๋ฃจ์ฆˆ ๊ฐ„๊ฒฉ - - - The interval used when changing the cruise control speed. - ํฌ๋ฃจ์ฆˆ ์ปจํŠธ๋กค ์†๋„๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ„๊ฒฉ. - - - Cruise Interval (Long Press) - ํฌ๋ฃจ์ฆˆ ๊ฐ„๊ฒฉ (๊ธธ๊ฒŒ ๋ˆ„๋ฅด๊ธฐ) - - - The interval used when changing the cruise control speed while holding down the button for 0.5+ seconds. - 0.5์ดˆ ์ด์ƒ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ณ  ์žˆ์„ ๋•Œ ํฌ๋ฃจ์ฆˆ ์ปจํŠธ๋กค ์†๋„๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ„๊ฒฉ. - - - Force Keep openpilot in the Standstill State - ๊ฐ•์ œ์ ์œผ๋กœ openpilot์„ ์ •์ง€ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜์‹ญ์‹œ์˜ค. - - - Keep openpilot in the standstill state until either the gas pedal or <b>resume</b> button is pressed. - ๊ฐ€์† ํŽ˜๋‹ฌ์ด๋‚˜ <b>์žฌ๊ฐœ</b> ๋ฒ„ํŠผ์ด ๋ˆŒ๋ฆด ๋•Œ๊นŒ์ง€ openpilot์„ ์ •์ง€ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜์‹ญ์‹œ์˜ค. - - - Force Stop for "Detected" Stop Lights/Signs - "๊ฐ์ง€๋œ" ์‹ ํ˜ธ๋“ฑ/์ •์ง€ ํ‘œ์ง€ํŒ์— ๋Œ€ํ•œ ๊ฐ•์ œ ์ •์ง€ - - - Force a stop whenever openpilot <b>detects</b> a potential red light/stop sign to prevent it from running the red light/stop sign. - openpilot์ด ์ž ์žฌ์ ์ธ ๋นจ๊ฐ„๋ถˆ/์ •์ง€ ์‹ ํ˜ธ๋ฅผ <b>๊ฐ์ง€</b>ํ•  ๋•Œ๋งˆ๋‹ค ๋นจ๊ฐ„๋ถˆ/์ •์ง€ ์‹ ํ˜ธ๋ฅผ ๋ฌด์‹œํ•˜์ง€ ์•Š๋„๋ก ๊ฐ•์ œ๋กœ ์ •์ง€ํ•˜์‹ญ์‹œ์˜ค. - - - Increase Stopped Distance - ์ •์ง€ ๊ฑฐ๋ฆฌ ์ฆ๊ฐ€ - - - Increase the distance openpilot stops behind vehicles. - openpilot์ด ์ฐจ๋Ÿ‰ ๋’ค์— ๋ฉˆ์ถ”๋Š” ๊ฑฐ๋ฆฌ๋ฅผ ๋Š˜๋ฆฌ์‹ญ์‹œ์˜ค. - - - Set Speed Offset - ์†๋„ ์˜คํ”„์…‹ ์„ค์ • - - - How much higher or lower the set speed should be compared to your current set speed. For example, if you prefer to drive 5 mph above the speed limit, this setting will automatically add that difference when you adjust your set speed. - Translation A - - - Map Accel/Decel to Gears - ๊ธฐ์–ด์— ๊ฐ€์†/๊ฐ์† ๋งคํ•‘ - - - Map the acceleration and deceleration profiles to your car's <b>Eco</b> or <b>Sport</b> gear modes. - ๊ฐ€์† ๋ฐ ๊ฐ์† ํ”„๋กœํ•„์„ ์ฐจ๋Ÿ‰์˜ <b>Eco</b> ๋˜๋Š” <b>Sport</b> ๊ธฐ์–ด ๋ชจ๋“œ์— ๋งคํ•‘ํ•˜์‹ญ์‹œ์˜ค. - - - Reverse Cruise Increase - ์—ญ์ˆœํ•ญ ์ฆ๊ฐ€ - - - Reverse the <b>long press</b> cruise increase feature to increase the max speed by 5 instead of 1 on short presses. - <b>๊ธธ๊ฒŒ ๋ˆ„๋ฅด๊ธฐ</b> ํฌ๋ฃจ์ฆˆ ์ฆ๊ฐ€ ๊ธฐ๋Šฅ์„ ๋ฐ˜๋Œ€๋กœ ํ•˜์—ฌ ์งง๊ฒŒ ๋ˆ„๋ฅผ ๋•Œ ์ตœ๋Œ€ ์†๋„๋ฅผ 1์ด ์•„๋‹Œ 5๋งŒํผ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค. - - - Speed Limit Controller - ์†๋„ ์ œํ•œ ์ปจํŠธ๋กค๋Ÿฌ - - - Limit openpilot's maximum driving speed based on data from downloaded maps, <b>Mapbox</b>, <b>Navigate on openpilot</b>, or the dashboard (supported vehicles: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - ๋‹ค์šด๋กœ๋“œ๋œ ์ง€๋„, <b>Mapbox</b>, <b>Navigate on openpilot</b>, ๋˜๋Š” ๋Œ€์‹œ๋ณด๋“œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ openpilot์˜ ์ตœ๋Œ€ ์ฃผํ–‰ ์†๋„๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค (์ง€์› ์ฐจ๋Ÿ‰: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - - - Fallback Speed - ๋Œ€์ฒด ์†๋„ - - - The speed limit source when no speed limit data is available. - ์†๋„ ์ œํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๋•Œ์˜ ์†๋„ ์ œํ•œ ์†Œ์Šค. - - - Override Speed - ์†๋„ ๋ฌด์‹œ - - - The speed openpilot uses after manually exceeding the posted speed limit.<br><br><b>- Set With Gas Pedal</b>: Uses the speed obtained while pressing the gas<br><b>- Max Set Speed</b>: Uses the cruise control set speed<br><br>Overrides clear upon disengagement. - ์ˆ˜๋™์œผ๋กœ ๊ฒŒ์‹œ๋œ ์†๋„ ์ œํ•œ์„ ์ดˆ๊ณผํ•œ ํ›„ openpilot์ด ์‚ฌ์šฉํ•˜๋Š” ์†๋„์ž…๋‹ˆ๋‹ค.<br><br><b>- ๊ฐ€์† ํŽ˜๋‹ฌ๋กœ ์„ค์ •</b>: ๊ฐ€์† ํŽ˜๋‹ฌ์„ ๋ฐŸ๋Š” ๋™์•ˆ ์–ป์€ ์†๋„๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค<br><b>- ์ตœ๋Œ€ ์„ค์ • ์†๋„</b>: ํฌ๋ฃจ์ฆˆ ์ปจํŠธ๋กค ์„ค์ • ์†๋„๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค<br><br>๋น„ํ™œ์„ฑํ™” ์‹œ ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค. - - - Miscellaneous features to improve the <b>Speed Limit Controller</b> experience. - ๊ธฐํƒ€ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด <b>์†๋„ ์ œํ•œ ์ปจํŠธ๋กค๋Ÿฌ</b> ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค. - - - Confirm New Speed Limits - ์ƒˆ ์†๋„ ์ œํ•œ ํ™•์ธ - - - Require confirmation before applying new speed limits. To accept, use the flashing widget on the driving screen or press the <b>Cruise Increase</b> button. To deny, press the <b>Cruise Decrease</b> button or simply ignore the prompt for 30 seconds. - Translation A - - - Force MPH Readings from Dashboard - ๋Œ€์‹œ๋ณด๋“œ์—์„œ MPH ์ฝ๊ธฐ ๊ฐ•์ œ ์ ์šฉ - - - Force dashboard speed limit readings to be in mph. - ๋Œ€์‹œ๋ณด๋“œ ์†๋„ ์ œํ•œ ์ฝ๊ธฐ๋ฅผ mph๋กœ ๊ฐ•์ œ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค. - - - Higher Limit Lookahead Time - ์ƒํ•œ ์„ ํ–‰ ์‹œ๊ฐ„ - - - How far ahead openpilot anticipates upcoming higher speed limits from the downloaded map data. - openpilot์€ ๋‹ค์šด๋กœ๋“œ๋œ ์ง€๋„ ๋ฐ์ดํ„ฐ์—์„œ ๋‹ค๊ฐ€์˜ค๋Š” ๋” ๋†’์€ ์†๋„ ์ œํ•œ์„ ์–ผ๋งˆ๋‚˜ ์•ž์„œ ์˜ˆ์ธกํ•ฉ๋‹ˆ๊นŒ? - - - Lower Limit Lookahead Time - ํ•˜ํ•œ ์„ ํ–‰ ์‹œ๊ฐ„ - - - How far ahead openpilot anticipates upcoming lower speed limits from the downloaded map data. - openpilot์€ ๋‹ค์šด๋กœ๋“œ๋œ ์ง€๋„ ๋ฐ์ดํ„ฐ์—์„œ ๋‹ค๊ฐ€์˜ค๋Š” ๋‚ฎ์€ ์†๋„ ์ œํ•œ์„ ์–ผ๋งˆ๋‚˜ ์•ž์„œ ์˜ˆ์ธกํ•ฉ๋‹ˆ๊นŒ? - - - Match Speed Limit on Engage - Engage์—์„œ ์†๋„ ์ œํ•œ ์ผ์น˜ - - - Automatically set cruise control speed to match the current speed limit when first enabling openpilot. - openpilot์„ ์ฒ˜์Œ ํ™œ์„ฑํ™”ํ•  ๋•Œ ํฌ๋ฃจ์ฆˆ ์ปจํŠธ๋กค ์†๋„๋ฅผ ํ˜„์žฌ ์†๋„ ์ œํ•œ์— ์ž๋™์œผ๋กœ ๋งž์ถฅ๋‹ˆ๋‹ค. - - - Use Mapbox as Fallback - Mapbox๋ฅผ ๋Œ€์ฒด ์˜ต์…˜์œผ๋กœ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - ๋‹ค๋ฅธ ์†Œ์Šค๊ฐ€ ์—†์„ ๋•Œ <b>Mapbox</b> ์†๋„ ์ œํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. - - - Speed Limit Source Priority - ์†๋„ ์ œํ•œ ์†Œ์Šค ์šฐ์„ ์ˆœ์œ„ - - - Define the priority order for speed limit sources (<b>Dashboard</b>, <b>Map Data</b>, <b>Navigation</b>). Higher-priority sources override lower ones when multiple limits are detected. - ์†๋„ ์ œํ•œ ์†Œ์Šค์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค (<b>๋Œ€์‹œ๋ณด๋“œ</b>, <b>์ง€๋„ ๋ฐ์ดํ„ฐ</b>, <b>๋‚ด๋น„๊ฒŒ์ด์…˜</b>). ์—ฌ๋Ÿฌ ์ œํ•œ์ด ๊ฐ์ง€๋  ๋•Œ ๋” ๋†’์€ ์šฐ์„  ์ˆœ์œ„์˜ ์†Œ์Šค๊ฐ€ ๋” ๋‚ฎ์€ ๊ฒƒ์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. - - - Speed Limit Offsets - ์†๋„ ์ œํ•œ ์˜คํ”„์…‹ - - - Offsets relative to the posted speed limit for a more "human-like" driving experience. - ๊ฒŒ์‹œ๋œ ์ œํ•œ ์†๋„์— ๋Œ€ํ•œ ์˜คํ”„์…‹์€ ๋ณด๋‹ค "์ธ๊ฐ„์ ์ธ" ์šด์ „ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. - - - Target speed offset applied for posted limits between 0 and 24 mph. - 0์—์„œ 24mph ์‚ฌ์ด์˜ ๊ฒŒ์‹œ๋œ ์ œํ•œ ์†๋„์— ์ ์šฉ๋œ ๋ชฉํ‘œ ์†๋„ ์˜คํ”„์…‹. - - - Target speed offset applied for posted limits between 25 and 34 mph. - 25mph์—์„œ 34mph ์‚ฌ์ด์˜ ๊ฒŒ์‹œ๋œ ์ œํ•œ ์†๋„์— ๋Œ€ํ•ด ๋ชฉํ‘œ ์†๋„ ์˜คํ”„์…‹์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. - - - Target speed offset applied for posted limits between 35 and 44 mph. - 35mph์—์„œ 44mph ์‚ฌ์ด์˜ ๊ฒŒ์‹œ๋œ ์ œํ•œ ์†๋„์— ๋Œ€ํ•ด ๋ชฉํ‘œ ์†๋„ ์˜คํ”„์…‹์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. - - - Target speed offset applied for posted limits between 45 and 54 mph. - 45mph์—์„œ 54mph ์‚ฌ์ด์˜ ๊ฒŒ์‹œ๋œ ์ œํ•œ ์†๋„์— ๋Œ€ํ•ด ๋ชฉํ‘œ ์†๋„ ์˜คํ”„์…‹์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. - - - Target speed offset applied for posted limits between 55 and 64 mph. - 55mph์—์„œ 64mph ์‚ฌ์ด์˜ ๊ฒŒ์‹œ๋œ ์ œํ•œ ์†๋„์— ๋Œ€ํ•ด ๋ชฉํ‘œ ์†๋„ ์˜คํ”„์…‹์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. - - - Target speed offset applied for posted limits between 65 and 74 mph. - 65mph์—์„œ 74mph ์‚ฌ์ด์˜ ๊ฒŒ์‹œ๋œ ์ œํ•œ ์†๋„์— ๋Œ€ํ•ด ๋ชฉํ‘œ ์†๋„ ์˜คํ”„์…‹์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. - - - Target speed offset applied for posted limits between 75 and 99 mph. - 75mph์—์„œ 99mph ์‚ฌ์ด์˜ ๊ฒŒ์‹œ๋œ ์ œํ•œ ์†๋„์— ๋Œ€ํ•ด ๋ชฉํ‘œ ์†๋„ ์˜คํ”„์…‹์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. - - - Visual Settings - ์‹œ๊ฐ ์„ค์ • - - - Visual features to improve the <b>Speed Limit Controller</b> experience. - ์‹œ์† ์ œํ•œ ์ปจํŠธ๋กค๋Ÿฌ ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์‹œ๊ฐ์  ๊ธฐ๋Šฅ. - - - Show Speed Limit Offset - ์†๋„ ์ œํ•œ ์˜คํ”„์…‹ ํ‘œ์‹œ - - - Display the speed limit offset separately on the driving screen. - ์šด์ „ ํ™”๋ฉด์— ์†๋„ ์ œํ•œ ์˜คํ”„์…‹์„ ๋ณ„๋„๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. - - - Show Speed Limit Sources - ์†๋„ ์ œํ•œ ์†Œ์Šค ํ‘œ์‹œ - - - Display the speed limit sources on the driving screen. - ์šด์ „ ํ™”๋ฉด์— ์†๋„ ์ œํ•œ ์†Œ์Šค๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. - - - seconds - ์ดˆ - - - m/sยฒ - m/sยฒ - - - mph - mph - - - With Lead - ๋ฆฌ๋“œ์™€ ํ•จ๊ป˜ - - - Switch to <b>Experimental Mode</b> when driving below this speed with a lead. - ์ด ์†๋„ ์ดํ•˜๋กœ ์ฃผํ–‰ํ•  ๋•Œ ๋ฆฌ๋“œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ <b>์‹คํ—˜ ๋ชจ๋“œ</b>๋กœ ์ „ํ™˜ํ•˜์‹ญ์‹œ์˜ค. - - - Slower Lead - ๋А๋ฆฐ ๋ฆฌ๋“œ - - - Stopped Lead - ์ค‘๋‹จ๋œ ๋ฆฌ๋“œ - - - Intersections - ๊ต์ฐจ๋กœ - - - Turns - ํšŒ์ „ - - - Off - ๋„๊ธฐ - - - second - ๋‘˜์งธ - - - RESET - ๋ฆฌ์…‹ - - - Standard - ํ‘œ์ค€ - - - Eco - ์—์ฝ” - - - Sport - ์Šคํฌ์ธ  - - - Sport+ - Sport+ - - - feet - ํ”ผํŠธ - - - Acceleration - ๊ฐ€์† - - - Deceleration - ๊ฐ์† - - - Set Speed - ์†๋„ ์„ค์ • - - - Experimental Mode - ์‹คํ—˜ ๋ชจ๋“œ - - - Previous Limit - ์ด์ „ ์ œํ•œ - - - None - ์—†์Œ - - - Set With Gas Pedal - ๊ฐ€์† ํŽ˜๋‹ฌ๋กœ ์„ค์ • - - - Max Set Speed - ์ตœ๋Œ€ ์„ค์ • ์†๋„ - - - SELECT - SELECT - - - Dashboard - ๋Œ€์‹œ๋ณด๋“œ - - - Map Data - ์ง€๋„ ๋ฐ์ดํ„ฐ - - - Navigation - ํƒ์ƒ‰ - - - Highest - ์ตœ๊ณ ์˜ - - - Lowest - ์ตœ์ € - - - Select your primary priority - ์ฃผ์š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค. - - - Select your secondary priority - ๋ณด์กฐ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ ํƒํ•˜์„ธ์š”. - - - Select your tertiary priority - ๊ท€ํ•˜์˜ ์ œ3 ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค. - - - MANAGE - ๊ด€๋ฆฌ - - - Lower Limits - ํ•˜ํ•œ - - - Higher Limits - ๋” ๋†’์€ ํ•œ๋„ - - - Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? - <b>๊ตํ†ต ๋ชจ๋“œ</b>์— ๋Œ€ํ•œ ์„ค์ •์„ ์™„์ „ํžˆ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? - <b>๊ณต๊ฒฉ์ </b> ์„ฑ๊ฒฉ์— ๋Œ€ํ•œ ์„ค์ •์„ ์™„์ „ํžˆ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Are you sure you want to completely reset your settings for the <b>Standard</b> personality? - <b>Standard</b> ์„ฑ๊ฒฉ์— ๋Œ€ํ•œ ์„ค์ •์„ ์™„์ „ํžˆ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? - <b>Relaxed</b> ์„ฑ๊ฒฉ์— ๋Œ€ํ•œ ์„ค์ •์„ ์™„์ „ํžˆ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - foot - ๋ฐœ - - - meter - ๋ฏธํ„ฐ - - - meters - ๋ฏธํ„ฐ - - - km/h - km/h - - - Target speed offset applied for posted limits between 0 and 29 km/h. - ๊ฒŒ์‹œ๋œ ์ œํ•œ ์†๋„๊ฐ€ 0์—์„œ 29 km/h ์‚ฌ์ด์ผ ๋•Œ ๋ชฉํ‘œ ์†๋„ ์˜คํ”„์…‹์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. - - - Target speed offset applied for posted limits between 30 and 49 km/h. - 30km/h์—์„œ 49km/h ์‚ฌ์ด์˜ ๊ฒŒ์‹œ๋œ ์ œํ•œ ์†๋„์— ๋Œ€ํ•ด ๋ชฉํ‘œ ์†๋„ ์˜คํ”„์…‹์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. - - - Target speed offset applied for posted limits between 50 and 59 km/h. - 50km/h์—์„œ 59km/h ์‚ฌ์ด์˜ ๊ฒŒ์‹œ๋œ ์ œํ•œ ์†๋„์— ๋Œ€ํ•ด ๋ชฉํ‘œ ์†๋„ ์˜คํ”„์…‹์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. - - - Target speed offset applied for posted limits between 60 and 79 km/h. - 60km/h์—์„œ 79km/h ์‚ฌ์ด์˜ ๊ฒŒ์‹œ๋œ ์ œํ•œ ์†๋„์— ๋Œ€ํ•ด ๋ชฉํ‘œ ์†๋„ ์˜คํ”„์…‹์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. - - - Target speed offset applied for posted limits between 80 and 99 km/h. - 80km/h์—์„œ 99km/h ์‚ฌ์ด์˜ ๊ฒŒ์‹œ๋œ ์ œํ•œ ์†๋„์— ๋Œ€ํ•ด ๋ชฉํ‘œ ์†๋„ ์˜คํ”„์…‹์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. - - - Target speed offset applied for posted limits between 100 and 119 km/h. - 100km/h์™€ 119km/h ์‚ฌ์ด์˜ ๊ฒŒ์‹œ๋œ ์ œํ•œ ์†๋„์— ๋Œ€ํ•ด ๋ชฉํ‘œ ์†๋„ ์˜คํ”„์…‹์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. - - - Target speed offset applied for posted limits between 120 and 140 km/h. - 120์—์„œ 140km/h ์‚ฌ์ด์˜ ๊ฒŒ์‹œ๋œ ์ œํ•œ ์†๋„์— ๋Œ€ํ•ด ๋ชฉํ‘œ ์†๋„ ์˜คํ”„์…‹์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. - Advanced Longitudinal Tuning - ๊ณ ๊ธ‰ ์ข…๋‹จ ์กฐ์ • + ๊ณ ๊ธ‰ ์ข…๋ฐฉํ–ฅ ํŠœ๋‹ - Advanced settings for customizing how openpilot handles acceleration and braking. - openpilot์ด ๊ฐ€์† ๋ฐ ์ œ๋™์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜๋Š” ๊ณ ๊ธ‰ ์„ค์ •. + <b>Advanced acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>๊ณ ๊ธ‰ ๊ฐ€์† ๋ฐ ์ œ๋™ ์ œ์–ด ๋ณ€๊ฒฝ</b>์œผ๋กœ openpilot์˜ ์ฃผํ–‰์„ ๋ฏธ์„ธ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. Actuator Delay (Default: %1) - ์•ก์ถ”์—์ดํ„ฐ ์ง€์—ฐ (๊ธฐ๋ณธ๊ฐ’: %1) + ์•ก์ถ”์—์ดํ„ฐ ์ง€์—ฐ (๊ธฐ๋ณธ๊ฐ’: %1) Actuator Delay - ์•ก์ถ”์—์ดํ„ฐ ์ง€์—ฐ + ์•ก์ถ”์—์ดํ„ฐ ์ง€์—ฐ - Delay before throttle or brake takes effect. Higher values smooth slow actuators but can feel laggy; lower values react quicker but may overshoot. - ์Šค๋กœํ‹€ ๋˜๋Š” ๋ธŒ๋ ˆ์ดํฌ๊ฐ€ ์ž‘๋™ํ•˜๊ธฐ ์ „์˜ ์ง€์—ฐ. ๋†’์€ ๊ฐ’์€ ๋А๋ฆฐ ์•ก์ถ”์—์ดํ„ฐ๋ฅผ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ํ•˜์ง€๋งŒ ์ง€์—ฐ์ด ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‚ฎ์€ ๊ฐ’์€ ๋” ๋น ๋ฅด๊ฒŒ ๋ฐ˜์‘ํ•˜์ง€๋งŒ ๊ณผ๋„ํ•˜๊ฒŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + <b>The time between openpilot's throttle or brake command and the vehicle's response.</b> Increase if the vehicle feels slow to react; decrease if it feels too eager or overshoots. + <b>openpilot์˜ ๊ฐ€์†/์ œ๋™ ๋ช…๋ น๊ณผ ์ฐจ๋Ÿ‰์˜ ์‘๋‹ต ์‚ฌ์ด ์‹œ๊ฐ„.</b> ์ฐจ๋Ÿ‰์˜ ๋ฐ˜์‘์ด ๋А๋ฆฌ๋ฉด ๋Š˜๋ฆฌ๊ณ , ์ง€๋‚˜์น˜๊ฒŒ ๋ฏผ๊ฐํ•˜๊ฑฐ๋‚˜ ๋ชฉํ‘œ๋ฅผ ๋„˜๊ธฐ๋ฉด ์ค„์ด์„ธ์š”. Start Acceleration (Default: %1) - ๊ฐ€์† ์‹œ์ž‘ (๊ธฐ๋ณธ๊ฐ’: %1) + ๊ฐ€์† ์‹œ์ž‘(๊ธฐ๋ณธ๊ฐ’: %1) Start Acceleration - ๊ฐ€์† ์‹œ์ž‘ + ๊ฐ€์† ์‹œ์ž‘ - Extra acceleration applied when pulling away from a stop. Increase for snappier launches at the cost of smoothness; decrease for gentler starts. - ์ •์ง€ ์ƒํƒœ์—์„œ ์ถœ๋ฐœํ•  ๋•Œ ์ถ”๊ฐ€ ๊ฐ€์†์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ถ€๋“œ๋Ÿฌ์›€์„ ํฌ์ƒํ•˜๊ณ  ๋” ๋น ๋ฅธ ์ถœ๋ฐœ์„ ์›ํ•  ๊ฒฝ์šฐ ์ฆ๊ฐ€์‹œํ‚ค๊ณ , ๋ถ€๋“œ๋Ÿฌ์šด ์ถœ๋ฐœ์„ ์›ํ•  ๊ฒฝ์šฐ ๊ฐ์†Œ์‹œํ‚ต๋‹ˆ๋‹ค. + <b>Extra acceleration applied when starting from a stop.</b> Increase for quicker takeoffs; decrease for smoother, gentler starts. + <b>์ •์ง€ ์ƒํƒœ์—์„œ ์ถœ๋ฐœ ์‹œ ์ถ”๊ฐ€ ๊ฐ€์†์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.</b> ๋น ๋ฅธ ์ถœ๋ฐœ์„ ์›ํ•˜๋ฉด ๊ฐ’์„ ๋†’์ด๊ณ , ๋” ๋ถ€๋“œ๋Ÿฝ๊ณ  ์™„๋งŒํ•œ ์ถœ๋ฐœ์„ ์›ํ•˜๋ฉด ๊ฐ’์„ ๋‚ฎ์ถ”์„ธ์š”. Start Speed (Default: %1) - ์‹œ์ž‘ ์†๋„ (๊ธฐ๋ณธ๊ฐ’: %1) + ์‹œ์ž‘ ์†๋„ (๊ธฐ๋ณธ๊ฐ’: %1) Start Speed - ์‹œ์ž‘ ์†๋„ + ์‹œ์ž‘ ์†๋„ - Speed where openpilot begins to exit the stopped state. Higher values avoid creeping but may feel sluggish; lower values move sooner but risk creeping. - openpilot์ด ์ •์ง€ ์ƒํƒœ์—์„œ ๋ฒ—์–ด๋‚˜๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ์†๋„์ž…๋‹ˆ๋‹ค. ๋†’์€ ๊ฐ’์€ ํฌ๋ฆฌํ•‘์„ ํ”ผํ•˜์ง€๋งŒ ๋А๋ฆฌ๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‚ฎ์€ ๊ฐ’์€ ๋” ๋นจ๋ฆฌ ์›€์ง์ด์ง€๋งŒ ํฌ๋ฆฌํ•‘ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. + <b>The speed at which openpilot exits the stopped state.</b> Increase to reduce creeping; decrease to move sooner after stopping. + <b>openpilot์ด ์ •์ง€ ์ƒํƒœ๋ฅผ ํ•ด์ œํ•˜๋Š” ์†๋„์ž…๋‹ˆ๋‹ค.</b> ํฌ๋ฆฌํ•‘์„ ์ค„์ด๋ ค๋ฉด ๊ฐ’์„ ๋†’์ด๊ณ , ์ •์ง€ ํ›„ ๋” ๋นจ๋ฆฌ ์ถœ๋ฐœํ•˜๋ ค๋ฉด ๊ฐ’์„ ๋‚ฎ์ถ”์„ธ์š”. Stop Acceleration (Default: %1) - ๊ฐ€์† ์ค‘์ง€ (๊ธฐ๋ณธ๊ฐ’: %1) + ๊ฐ€์† ์ค‘์ง€ (๊ธฐ๋ณธ๊ฐ’: %1) Stop Acceleration - ๊ฐ€์† ์ค‘์ง€ + ๊ฐ€์† ์ค‘์ง€ - Brake force applied to hold the vehicle still. Larger values prevent creeping on hills but might jerk to a stop. Smaller values can feel smoother but may allow rolling. - ์ฐจ๋Ÿ‰์„ ์ •์ง€ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ ์šฉ๋œ ์ œ๋™๋ ฅ. ๋” ํฐ ๊ฐ’์€ ์–ธ๋•์—์„œ์˜ ํฌ๋ฆฌํ•‘์„ ๋ฐฉ์ง€ํ•˜์ง€๋งŒ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ์ž‘์€ ๊ฐ’์€ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ตฌ๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + <b>Brake force applied to hold the vehicle at a standstill.</b> Increase to prevent rolling on hills; decrease for smoother, softer stops. + <b>์ •์ง€ ์ƒํƒœ์—์„œ ์ฐจ๋Ÿ‰์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ œ๋™๋ ฅ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.</b> ๊ฒฝ์‚ฌ๋กœ์—์„œ ๊ตด๋ฆผ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ๊ฐ’์„ ๋†’์ด๊ณ , ๋” ๋ถ€๋“œ๋Ÿฝ๊ณ  ์™„๋งŒํ•œ ์ •์ง€๋ฅผ ์›ํ•˜๋ฉด ๊ฐ’์„ ๋‚ฎ์ถ”์„ธ์š”. Stopping Rate (Default: %1) - ์ •์ง€ ๋น„์œจ (๊ธฐ๋ณธ๊ฐ’: %1) + ์ •์ง€์œจ (๊ธฐ๋ณธ๊ฐ’: %1) Stopping Rate - ์ •์ง€์œจ + ์ •์ง€์œจ - How quickly braking ramps up when stopping. Faster rates shorten stopping distance but can be harsh; slower rates are smoother but need more room. - ์ •์ง€ํ•  ๋•Œ ์ œ๋™์ด ์–ผ๋งˆ๋‚˜ ๋นจ๋ฆฌ ์ฆ๊ฐ€ํ•˜๋Š”์ง€. ๋” ๋น ๋ฅธ ์†๋„๋Š” ์ •์ง€ ๊ฑฐ๋ฆฌ๋ฅผ ๋‹จ์ถ•ํ•˜์ง€๋งŒ ๊ฑฐ์น  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋” ๋А๋ฆฐ ์†๋„๋Š” ๋ถ€๋“œ๋Ÿฝ์ง€๋งŒ ๋” ๋งŽ์€ ๊ณต๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. + <b>How quickly braking ramps up when stopping.</b> Increase for shorter, firmer stops; decrease for smoother, longer stops. + <b>์ •์ง€ํ•  ๋•Œ ์ œ๋™์ด ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š”์ง€.</b> ๋” ์งง๊ณ  ๊ฐ•ํ•œ ์ •์ง€๋ฅผ ์›ํ•˜๋ฉด ๋†’์ด๊ณ , ๋” ๋ถ€๋“œ๋Ÿฝ๊ณ  ๊ธด ์ •์ง€๋ฅผ ์›ํ•˜๋ฉด ๋‚ฎ์ถ”์„ธ์š”. Stop Speed (Default: %1) - ์ •์ง€ ์†๋„ (๊ธฐ๋ณธ๊ฐ’: %1) + ์ •์ง€ ์†๋„ (๊ธฐ๋ณธ๊ฐ’: %1) Stop Speed - ์†๋„ ์ค‘์ง€ + ์ •์ง€ ์†๋„ - Speed where openpilot beings to enter the stopped state. Higher values brake earlier for smoother stops but might stop too soon; lower values wait longer and can overshoot. - openpilot์ด ์ •์ง€ ์ƒํƒœ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ์†๋„์ž…๋‹ˆ๋‹ค. ๋†’์€ ๊ฐ’์€ ๋” ๋ถ€๋“œ๋Ÿฌ์šด ์ •์ง€๋ฅผ ์œ„ํ•ด ๋” ์ผ์ฐ ๋ธŒ๋ ˆ์ดํฌ๋ฅผ ๋ฐŸ์ง€๋งŒ ๋„ˆ๋ฌด ์ผ์ฐ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ฎ์€ ๊ฐ’์€ ๋” ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ์ดˆ๊ณผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + <b>The speed at which openpilot considers the vehicle stopped.</b> Increase to brake earlier and stop smoothly; decrease to wait longer but risk overshooting. + <b>openpilot์ด ์ฐจ๋Ÿ‰์ด ์ •์ง€ํ–ˆ๋‹ค๊ณ  ๊ฐ„์ฃผํ•˜๋Š” ์†๋„์ž…๋‹ˆ๋‹ค.</b> ๊ฐ’์„ ๋†’์ด๋ฉด ๋” ์ผ์ฐ ๋ธŒ๋ ˆ์ดํฌ๋ฅผ ๊ฑธ์–ด ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ •์ง€ํ•˜๊ณ , ๋‚ฎ์ถ”๋ฉด ๋” ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฌ์ง€๋งŒ ์ •์ง€ ์ง€์ ์„ ๋„˜์–ด์„ค ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. + + + Conditional Experimental Mode + ์กฐ๊ฑด๋ถ€ ์‹คํ—˜ ๋ชจ๋“œ + + + <b>Automatically switch to "Experimental Mode" when set conditions are met.</b> Allows the model to handle challenging situations with smarter decision making. + <b>์„ค์ •๋œ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜๋ฉด ์ž๋™์œผ๋กœ "์‹คํ—˜ ๋ชจ๋“œ"๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.</b> ๋ชจ๋ธ์ด ๋” ํ˜„๋ช…ํ•œ ์˜์‚ฌ๊ฒฐ์ •์œผ๋กœ ์–ด๋ ค์šด ์ƒํ™ฉ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. + + + Below + ์•„๋ž˜ + + + <b>Switch to "Experimental Mode" when driving below this speed without a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>์„ ํ–‰ ์ฐจ๋Ÿ‰ ์—†์ด ์ด ์†๋„ ์ดํ•˜๋กœ ์ฃผํ–‰ํ•  ๋•Œ "์‹คํ—˜ ๋ชจ๋“œ"๋กœ ์ „ํ™˜</b>ํ•˜๋ฉด openpilot์ด ์ €์† ์ƒํ™ฉ์„ ๋” ์›ํ™œํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. + + + Curve Detected Ahead + ์ „๋ฐฉ ๊ณก์„  ๊ฐ์ง€๋จ + + + <b>Switch to "Experimental Mode" when a curve is detected</b> to allow the model to set an appropriate speed for the curve. + <b>์ปค๋ธŒ๊ฐ€ ๊ฐ์ง€๋˜๋ฉด "Experimental Mode"๋กœ ์ „ํ™˜</b>ํ•˜์—ฌ ๋ชจ๋ธ์ด ์ปค๋ธŒ์— ๋งž๋Š” ์ ์ ˆํ•œ ์†๋„๋ฅผ ์„ค์ •ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. + + + Lead Detected Ahead + ์•ž์— ์„ ํ–‰ ์ฐจ๋Ÿ‰ ๊ฐ์ง€๋จ + + + <b>Switch to "Experimental Mode" when a slower or stopped vehicle is detected.</b> Can make braking smoother and more reliable on some vehicles. + <b>๊ฐ์†ํ•˜๊ฑฐ๋‚˜ ์ •์ง€ํ•œ ์ฐจ๋Ÿ‰์ด ๊ฐ์ง€๋˜๋ฉด "Experimental Mode"๋กœ ์ „ํ™˜ํ•˜์‹ญ์‹œ์˜ค.</b> ์ผ๋ถ€ ์ฐจ๋Ÿ‰์—์„œ ์ œ๋™์„ ๋” ๋ถ€๋“œ๋Ÿฝ๊ณ  ์‹ ๋ขฐ์„ฑ ์žˆ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + + + Navigation-Based + ๋‚ด๋น„๊ฒŒ์ด์…˜ ๊ธฐ๋ฐ˜ + + + <b>Switch to "Experimental Mode" when approaching intersections or turns on the active route</b> while using "Navigate on openpilot" (NOO) to allow the model to set an appropriate speed for upcoming maneuvers. + "Navigate on openpilot"(NOO) ์‚ฌ์šฉ ์‹œ, ๋‹ค๊ฐ€์˜ค๋Š” ๊ธฐ๋™์— ๋งž๋Š” ์ ์ ˆํ•œ ์†๋„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™œ์„ฑ ๊ฒฝ๋กœ์—์„œ ๊ต์ฐจ๋กœ ๋˜๋Š” ํšŒ์ „์ด ๊ฐ€๊นŒ์›Œ์งˆ ๋•Œ <b>"Experimental Mode"๋กœ ์ „ํ™˜</b>ํ•˜์„ธ์š”. + + + Predicted Stop In + ์˜ˆ์ƒ ์ •์ง€๊นŒ์ง€ + + + <b>Switch to "Experimental Mode" when openpilot predicts a stop within the set time.</b> This is usually triggered when the model "sees" a red light or stop sign ahead.<br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>์„ค์ •๋œ ์‹œ๊ฐ„ ๋‚ด์— openpilot์ด ์ •์ง€๋ฅผ ์˜ˆ์ธกํ•˜๋ฉด "์‹คํ—˜ ๋ชจ๋“œ"๋กœ ์ „ํ™˜ํ•˜์„ธ์š”.</b> ์ด๋Š” ๋ณดํ†ต ๋ชจ๋ธ์ด ์•ž์— ์žˆ๋Š” ๋นจ๊ฐ„ ๋ถˆ์ด๋‚˜ ์ •์ง€ ํ‘œ์ง€๋ฅผ "๋ณผ" ๋•Œ ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.<br><br><i><b>๋ฉด์ฑ…์กฐํ•ญ</b>: openpilot์€ ์‹ ํ˜ธ๋“ฑ์ด๋‚˜ ์ •์ง€ ํ‘œ์ง€๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๊ฐ์ง€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. "์‹คํ—˜ ๋ชจ๋“œ"์—์„œ๋Š” openpilot์ด ์นด๋ฉ”๋ผ ์ž…๋ ฅ๋งŒ์œผ๋กœ ์ข…๋‹จ ๊ฐ„ ์ฃผํ–‰ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋ฏ€๋กœ, ๋šœ๋ ทํ•œ ์ด์œ ๊ฐ€ ์—†๋Š”๋ฐ๋„ ์ •์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.</i> + + + Turn Signal Below + ํ•˜๋‹จ ๋ฐฉํ–ฅ์ง€์‹œ๋“ฑ + + + <b>Switch to "Experimental Mode" when using a turn signal below the set speed</b> to allow the model to choose an appropriate speed for smoother left and right turns. + <b>์„ค์ • ์†๋„ ์ดํ•˜์—์„œ ๋ฐฉํ–ฅ์ง€์‹œ๋“ฑ์„ ์‚ฌ์šฉํ•  ๋•Œ "์‹คํ—˜ ๋ชจ๋“œ"๋กœ ์ „ํ™˜</b>ํ•˜์—ฌ ๋ชจ๋ธ์ด ์ขŒ์šฐ ํšŒ์ „์— ๋” ๋ถ€๋“œ๋Ÿฌ์šด ์ ์ ˆํ•œ ์†๋„๋ฅผ ์„ ํƒํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. + + + Status Widget + ์ƒํƒœ ์œ„์ ฏ + + + <b>Show which condition triggered "Experimental Mode"</b> on the driving screen. + ์šด์ „ ํ™”๋ฉด์—์„œ <b>"์‹คํ—˜์  ๋ชจ๋“œ"</b>๋ฅผ ํ™œ์„ฑํ™”ํ•œ ์กฐ๊ฑด์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. + + + Curve Speed Controller + ์ปค๋ธŒ ์†๋„ ์ œ์–ด๊ธฐ + + + <b>Automatically slow down for upcoming curves</b> using data learned from your driving style, adapting to curves as you would. + <b>๋‹ค๊ฐ€์˜ค๋Š” ์ปค๋ธŒ๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ์†</b>ํ•˜์—ฌ, ์šด์ „ ์Šคํƒ€์ผ์—์„œ ํ•™์Šตํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ปค๋ธŒ์— ๋‹น์‹ ์ฒ˜๋Ÿผ ์ ์‘ํ•ฉ๋‹ˆ๋‹ค. + + + Calibrated Lateral Acceleration + ๋ณด์ •๋œ ํšก๊ฐ€์†๋„ + + + <b>The learned lateral acceleration from collected driving data.</b> This sets how fast openpilot will take curves. Higher values allow faster cornering; lower values slow the vehicle for gentler turns. + <b>์ˆ˜์ง‘๋œ ์ฃผํ–‰ ๋ฐ์ดํ„ฐ์—์„œ ํ•™์Šต๋œ ํšก๊ฐ€์†๋„์ž…๋‹ˆ๋‹ค.</b> ์ด๋Š” openpilot์ด ์ฝ”๋„ˆ๋ฅผ ๋„๋Š” ์†๋„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์ด ๋†’์„์ˆ˜๋ก ๋” ๋น ๋ฅด๊ฒŒ ์ฝ”๋„ˆ๋ฅผ ๋Œ๊ณ , ๊ฐ’์ด ๋‚ฎ์„์ˆ˜๋ก ๋” ์™„๋งŒํ•˜๊ฒŒ ๋Œ๋„๋ก ์ฐจ๋Ÿ‰ ์†๋„๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค. + + + Calibration Progress + ๋ณด์ • ์ง„ํ–‰๋ฅ  + + + <b>How much curve data has been collected.</b> This is a progress meter; it is normal for the value to stay low and rarely reach 100%. + <b>์ˆ˜์ง‘๋œ ๊ณก์„  ๋ฐ์ดํ„ฐ์˜ ์–‘.</b> ์ด๋Š” ์ง„ํ–‰ ํ‘œ์‹œ๊ธฐ๋กœ, ๊ฐ’์ด ๋‚ฎ๊ฒŒ ์œ ์ง€๋˜๊ฑฐ๋‚˜ 100%์— ๋„๋‹ฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ •์ƒ์ž…๋‹ˆ๋‹ค. + + + Reset Curve Data + ์ปค๋ธŒ ๋ฐ์ดํ„ฐ ์žฌ์„ค์ • + + + <b>Reset collected user data for "Curve Speed Controller".</b> + <b>"Curve Speed Controller"์˜ ์ˆ˜์ง‘๋œ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</b> + + + <b>Show the "Curve Speed Controller" target speed on the driving screen.</b> + <b>์ฃผํ–‰ ํ™”๋ฉด์— "Curve Speed Controller" ๋ชฉํ‘œ ์†๋„๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.</b> + + + Driving Personalities + ์ฃผํ–‰ ์„ฑํ–ฅ + + + <b>Customize the "Driving Personalities"</b> to better match your driving style. + <b>โ€œ์ฃผํ–‰ ์„ฑํ–ฅโ€์„ ์‚ฌ์šฉ์ž ์ง€์ •</b>ํ•˜์—ฌ ์šด์ „ ์Šคํƒ€์ผ์— ๋” ์ž˜ ๋งž์ถ”์„ธ์š”. + + + Traffic Mode + ๊ตํ†ต ๋ชจ๋“œ + + + <b>Customize the "Traffic Mode" personality profile.</b> Designed for stop-and-go driving. + <b>"๊ตํ†ต ๋ชจ๋“œ" ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ์‚ฌ์šฉ์ž ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.</b> ์ •์ฒด์™€ ๋ฐ˜๋ณต ์ •์ง€-์ถœ๋ฐœ ์šด์ „์— ๋งž๊ฒŒ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. + + + Following Distance + ์ฐจ๊ฐ„ ๊ฑฐ๋ฆฌ + + + <b>The minimum following distance to the lead vehicle in "Traffic Mode".</b> openpilot blends between this value and the "Aggressive" profile as speed increases. Increase for more space; decrease for tighter gaps. + <b>"๊ตํ†ต ๋ชจ๋“œ"์—์„œ ์„ ํ–‰ ์ฐจ๋Ÿ‰์— ๋Œ€ํ•œ ์ตœ์†Œ ์ฐจ๊ฐ„๊ฑฐ๋ฆฌ์ž…๋‹ˆ๋‹ค.</b> ์†๋„๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ openpilot์€ ์ด ๊ฐ’๊ณผ "๊ณต๊ฒฉ์ " ํ”„๋กœํ•„ ์‚ฌ์ด๋ฅผ ํ˜ผํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฐ„์„ ๋” ํ™•๋ณดํ•˜๋ ค๋ฉด ๊ฐ’์„ ๋†’์ด๊ณ , ๊ฐ„๊ฒฉ์„ ๋” ์ขํžˆ๋ ค๋ฉด ๊ฐ’์„ ๋‚ฎ์ถ”์„ธ์š”. + + + Acceleration Smoothness + ๊ฐ€์† ๋ถ€๋“œ๋Ÿฌ์›€ + + + <b>How smoothly openpilot accelerates in "Traffic Mode".</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>"๊ตํ†ต ๋ชจ๋“œ"์—์„œ openpilot๊ฐ€ ๊ฐ€์†ํ•˜๋Š” ๋ถ€๋“œ๋Ÿฌ์›€.</b> ๊ฐ’์„ ๋†’์ด๋ฉด ๋” ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ถœ๋ฐœํ•˜๊ณ , ๋‚ฎ์ถ”๋ฉด ๋” ๋น ๋ฅด์ง€๋งŒ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ์ถœ๋ฐœํ•ฉ๋‹ˆ๋‹ค. + + + Braking Smoothness + ์ œ๋™ ๋ถ€๋“œ๋Ÿฌ์›€ + + + <b>How smoothly openpilot brakes in "Traffic Mode".</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>"Traffic Mode"์—์„œ openpilot๊ฐ€ ์ œ๋™ํ•˜๋Š” ๋ถ€๋“œ๋Ÿฌ์›€.</b> ๊ฐ’์„ ๋†’์ด๋ฉด ๋” ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ •์ง€ํ•˜๊ณ , ๋‚ฎ์ถ”๋ฉด ๋” ๋น ๋ฅด์ง€๋งŒ ๋‚ ์นด๋กญ๊ฒŒ ์ œ๋™ํ•ฉ๋‹ˆ๋‹ค. + + + Safety Gap Bias + ์•ˆ์ „ ๊ฐ„๊ฒฉ ํŽธํ–ฅ + + + <b>How much extra space openpilot keeps from the vehicle ahead in "Traffic Mode".</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>"๊ตํ†ต ๋ชจ๋“œ"์—์„œ openpilot์ด ์•ž์ฐจ์™€ ์œ ์ง€ํ•˜๋Š” ์ถ”๊ฐ€ ๊ฐ„๊ฒฉ์˜ ์ •๋„์ž…๋‹ˆ๋‹ค.</b> ๊ฐ„๊ฒฉ์„ ํฌ๊ฒŒ ํ•˜๊ณ  ๋” ์‹ ์ค‘ํ•˜๊ฒŒ ๋”ฐ๋ผ๊ฐ€๋ ค๋ฉด ๊ฐ’์„ ๋Š˜๋ฆฌ๊ณ , ๊ฐ„๊ฒฉ์„ ์ขํžˆ๊ณ  ๋” ๊ฐ€๊น๊ฒŒ ๋”ฐ๋ผ๊ฐ€๋ ค๋ฉด ๊ฐ’์„ ์ค„์ด์„ธ์š”. + + + Slowdown Response + ๊ฐ์† ์‘๋‹ต + + + <b>How smoothly openpilot slows down in "Traffic Mode".</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>"๊ตํ†ต ๋ชจ๋“œ"์—์„œ openpilot์ด ๊ฐ์†ํ•˜๋Š” ๋ถ€๋“œ๋Ÿฌ์›€.</b> ๊ฐ’์„ ๋†’์ด๋ฉด ๋” ์™„๋งŒํ•˜๊ฒŒ ๊ฐ์†ํ•˜๊ณ , ๋‚ฎ์ถ”๋ฉด ๋” ๋น ๋ฅด์ง€๋งŒ ๊ธ‰ํ•˜๊ฒŒ ๊ฐ์†ํ•ฉ๋‹ˆ๋‹ค. + + + Speed-Up Response + ์‘๋‹ต ์†๋„ ๋†’์ด๊ธฐ + + + <b>How smoothly openpilot speeds up in "Traffic Mode".</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>"Traffic Mode"์—์„œ openpilot์ด ๊ฐ€์†ํ•˜๋Š” ๋ถ€๋“œ๋Ÿฌ์›€.</b> ๊ฐ’์„ ๋†’์ด๋ฉด ๋” ์™„๋งŒํ•˜๊ฒŒ ๊ฐ€์†ํ•˜๊ณ , ๋‚ฎ์ถ”๋ฉด ๋” ๋น ๋ฅด์ง€๋งŒ ๋” ํŠ€๋Š” ๊ฐ€์†์„ ํ•ฉ๋‹ˆ๋‹ค. + + + Reset to Defaults + ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ • + + + <b>Reset "Traffic Mode" settings to defaults.</b> + <b>"๊ตํ†ต ๋ชจ๋“œ" ์„ค์ •์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</b> + + + Aggressive + ๊ณต๊ฒฉ์  + + + <b>Customize the "Aggressive" personality profile.</b> Designed for assertive driving with tighter gaps. + <b>"๊ณต๊ฒฉ์ " ์„ฑํ–ฅ ํ”„๋กœํ•„์„ ์‚ฌ์šฉ์ž ์ง€์ •ํ•˜์„ธ์š”.</b> ๋” ์ข์€ ๊ฐ„๊ฒฉ์˜ ๋‹จํ˜ธํ•œ ์ฃผํ–‰์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Aggressive" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.25 seconds. + <b>"Aggressive" ํ”„๋กœํ•„ ์‚ฌ์šฉ ์‹œ ์„ ํ–‰ ์ฐจ๋Ÿ‰์„ ๋ช‡ ์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ ๋”ฐ๋ผ๊ฐˆ์ง€ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</b> ๊ฐ„๊ฒฉ์„ ๋Š˜๋ฆฌ๋ ค๋ฉด ๊ฐ’์„ ์ฆ๊ฐ€์‹œํ‚ค๊ณ , ๊ฐ„๊ฒฉ์„ ์ขํžˆ๋ ค๋ฉด ๊ฐ’์„ ๊ฐ์†Œ์‹œํ‚ค์„ธ์š”.<br><br>๊ธฐ๋ณธ๊ฐ’: 1.25์ดˆ. + + + <b>How smoothly openpilot accelerates with the "Aggressive" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>"Aggressive" ํ”„๋กœํ•„์—์„œ openpilot๊ฐ€ ๊ฐ€์†ํ•˜๋Š” ๋ถ€๋“œ๋Ÿฌ์›€.</b> ๊ฐ’์„ ๋†’์ด๋ฉด ๋” ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ถœ๋ฐœํ•˜๊ณ , ๋‚ฎ์ถ”๋ฉด ๋” ๋น ๋ฅด์ง€๋งŒ ๊ธ‰์ž‘์Šค๋Ÿฝ๊ฒŒ ์ถœ๋ฐœํ•ฉ๋‹ˆ๋‹ค. + + + <b>How smoothly openpilot brakes with the "Aggressive" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>"Aggressive" ํ”„๋กœํ•„์—์„œ openpilot์˜ ์ œ๋™์ด ์–ผ๋งˆ๋‚˜ ๋ถ€๋“œ๋Ÿฌ์šด์ง€.</b> ๊ฐ’์„ ๋†’์ด๋ฉด ์ •์ง€ ์‹œ ๋” ๋ถ€๋“œ๋Ÿฌ์›Œ์ง€๊ณ , ๋‚ฎ์ถ”๋ฉด ๋” ๋น ๋ฅด์ง€๋งŒ ๋” ๋‚ ์นด๋กญ๊ฒŒ ์ œ๋™ํ•ฉ๋‹ˆ๋‹ค. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Aggressive" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>"๊ณต๊ฒฉ์ " ํ”„๋กœํ•„์—์„œ openpilot์ด ์•ž์ฐจ์™€ ์œ ์ง€ํ•˜๋Š” ์ถ”๊ฐ€ ๊ฐ„๊ฒฉ์˜ ํฌ๊ธฐ.</b> ๋” ํฐ ๊ฐ„๊ฒฉ๊ณผ ๋” ์‹ ์ค‘ํ•œ ์ถ”์ข…์„ ์›ํ•˜๋ฉด ์ฆ๊ฐ€์‹œํ‚ค๊ณ , ๋” ์ด˜์ด˜ํ•œ ๊ฐ„๊ฒฉ๊ณผ ๋” ๊ฐ€๊นŒ์šด ์ถ”์ข…์„ ์›ํ•˜๋ฉด ๊ฐ์†Œ์‹œํ‚ค์‹ญ์‹œ์˜ค. + + + <b>How smoothly openpilot slows down with the "Aggressive" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>"๊ณต๊ฒฉ์ " ํ”„๋กœํ•„์—์„œ openpilot์ด ๊ฐ์†ํ•˜๋Š” ๋ถ€๋“œ๋Ÿฌ์›€.</b> ๊ฐ’์„ ๋†’์ด๋ฉด ๋” ์™„๋งŒํ•˜๊ฒŒ ๊ฐ์†ํ•˜๊ณ , ๋‚ฎ์ถ”๋ฉด ๋” ๋น ๋ฅด์ง€๋งŒ ๊ธ‰ํ•˜๊ฒŒ ๊ฐ์†ํ•ฉ๋‹ˆ๋‹ค. + + + <b>How smoothly openpilot speeds up with the "Aggressive" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>"๊ณต๊ฒฉ์ " ํ”„๋กœํ•„์—์„œ openpilot๊ฐ€ ๊ฐ€์†ํ•˜๋Š” ๋ถ€๋“œ๋Ÿฌ์›€.</b> ๊ฐ’์„ ๋†’์ด๋ฉด ๋” ์™„๋งŒํ•˜๊ฒŒ ๊ฐ€์†ํ•˜๊ณ , ๋‚ฎ์ถ”๋ฉด ๋” ๋น ๋ฅด์ง€๋งŒ ๋” ํ”๋“ค๋ฆฌ๋Š” ๊ฐ€์†์„ ํ•ฉ๋‹ˆ๋‹ค. + + + <b>Reset the "Aggressive" profile to defaults.</b> + <b>"Aggressive" ํ”„๋กœํ•„์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</b> + + + Standard + ํ‘œ์ค€ + + + <b>Customize the "Standard" personality profile.</b> Designed for balanced driving with moderate gaps. + <b>"ํ‘œ์ค€" ์„ฑ๊ฒฉ ํ”„๋กœํ•„์„ ์‚ฌ์šฉ์ž ์ง€์ •ํ•˜์„ธ์š”.</b> ์ค‘๊ฐ„ ๊ฐ„๊ฒฉ์˜ ๊ท ํ˜• ์žกํžŒ ์ฃผํ–‰์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Standard" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.45 seconds. + <b>"ํ‘œ์ค€" ํ”„๋กœํ•„ ์‚ฌ์šฉ ์‹œ ์„ ํ–‰ ์ฐจ๋Ÿ‰์„ ๋”ฐ๋ผ๊ฐ€๋Š” ์ดˆ ์ˆ˜์ž…๋‹ˆ๋‹ค.</b> ๊ฐ„๊ฒฉ์„ ๋„“ํžˆ๋ ค๋ฉด ๋Š˜๋ฆฌ๊ณ , ์ด˜์ด˜ํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด ์ค„์ด์„ธ์š”.<br><br>๊ธฐ๋ณธ๊ฐ’: 1.45์ดˆ. + + + <b>How smoothly openpilot accelerates with the "Standard" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>"ํ‘œ์ค€" ํ”„๋กœํŒŒ์ผ์—์„œ openpilot๊ฐ€ ๊ฐ€์†ํ•˜๋Š” ๋ถ€๋“œ๋Ÿฌ์›€.</b> ๊ฐ’์„ ์˜ฌ๋ฆฌ๋ฉด ์ถœ๋ฐœ์ด ๋” ๋ถ€๋“œ๋Ÿฌ์›Œ์ง€๊ณ , ๋‚ด๋ฆฌ๋ฉด ๋” ๋น ๋ฅด์ง€๋งŒ ๋” ๊ธ‰์ž‘์Šค๋Ÿฝ๊ฒŒ ์ถœ๋ฐœํ•ฉ๋‹ˆ๋‹ค. + + + <b>How smoothly openpilot brakes with the "Standard" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>"ํ‘œ์ค€" ํ”„๋กœํ•„์—์„œ openpilot๊ฐ€ ์ œ๋™ํ•˜๋Š” ๋ถ€๋“œ๋Ÿฌ์›€.</b> ๋” ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋ฉˆ์ถ”๋ ค๋ฉด ๊ฐ’์„ ๋†’์ด๊ณ , ๋” ๋น ๋ฅด์ง€๋งŒ ๊ธ‰ํ•˜๊ฒŒ ์ œ๋™ํ•˜๋ ค๋ฉด ๊ฐ’์„ ๋‚ฎ์ถ”์„ธ์š”. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Standard" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>"ํ‘œ์ค€" ํ”„๋กœํ•„์—์„œ openpilot์ด ์•ž์ฐจ์™€ ์œ ์ง€ํ•˜๋Š” ์ถ”๊ฐ€ ๊ฐ„๊ฒฉ์ž…๋‹ˆ๋‹ค.</b> ๋” ํฐ ๊ฐ„๊ฒฉ๊ณผ ๋ณด๋‹ค ์‹ ์ค‘ํ•œ ์ถ”์ข…์„ ์›ํ•˜๋ฉด ์ฆ๊ฐ€์‹œํ‚ค๊ณ , ๋” ์ด˜์ด˜ํ•œ ๊ฐ„๊ฒฉ๊ณผ ๊ฐ€๊นŒ์šด ์ถ”์ข…์„ ์›ํ•˜๋ฉด ๊ฐ์†Œ์‹œํ‚ค์„ธ์š”. + + + <b>How smoothly openpilot slows down with the "Standard" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>"ํ‘œ์ค€" ํ”„๋กœํ•„์—์„œ openpilot์ด ๊ฐ์†ํ•˜๋Š” ๋ถ€๋“œ๋Ÿฌ์›€.</b> ๊ฐ’์„ ์˜ฌ๋ฆฌ๋ฉด ๋” ์™„๋งŒํ•˜๊ฒŒ ๊ฐ์†ํ•˜๊ณ , ๋‚ด๋ฆฌ๋ฉด ๋” ๋น ๋ฅด์ง€๋งŒ ๊ธ‰ํ•˜๊ฒŒ ๊ฐ์†ํ•ฉ๋‹ˆ๋‹ค. + + + <b>How smoothly openpilot speeds up with the "Standard" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>"ํ‘œ์ค€" ํ”„๋กœํŒŒ์ผ์—์„œ openpilot์ด ๊ฐ€์†ํ•˜๋Š” ๋ถ€๋“œ๋Ÿฌ์›€.</b> ๊ฐ’์„ ๋†’์ด๋ฉด ๋” ์™„๋งŒํ•˜๊ฒŒ ๊ฐ€์†ํ•˜๊ณ , ๋‚ฎ์ถ”๋ฉด ๋” ๋น ๋ฅด์ง€๋งŒ ๋” ํŠ€๋Š” ๊ฐ€์†์„ ํ•ฉ๋‹ˆ๋‹ค. + + + <b>Reset the "Standard" profile to defaults.</b> + <b>"ํ‘œ์ค€" ํ”„๋กœํ•„์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</b> + + + Relaxed + ํŽธ์•ˆํ•จ + + + <b>Customize the "Relaxed" personality profile.</b> Designed for smoother, more comfortable driving with larger gaps. + <b>"์—ฌ์œ ๋กœ์šด" ์„ฑํ–ฅ ํ”„๋กœํ•„์„ ์‚ฌ์šฉ์ž ์ง€์ •ํ•˜์„ธ์š”.</b> ๋” ํฐ ์ฐจ๊ฐ„๊ฑฐ๋ฆฌ๋กœ ๋ถ€๋“œ๋Ÿฝ๊ณ  ํŽธ์•ˆํ•œ ์ฃผํ–‰์„ ๋ชฉํ‘œ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Relaxed" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.75 seconds. + <b>"์™„ํ™”" ํ”„๋กœํ•„ ์‚ฌ์šฉ ์‹œ ์„ ํ–‰ ์ฐจ๋Ÿ‰์„ ๋”ฐ๋ผ๊ฐ€๋Š” ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค.</b> ๋” ์—ฌ์œ ๋ฅผ ๋‘๋ ค๋ฉด ์ฆ๊ฐ€์‹œํ‚ค๊ณ , ๊ฐ„๊ฒฉ์„ ์ขํžˆ๋ ค๋ฉด ๊ฐ์†Œ์‹œํ‚ค์„ธ์š”.<br><br>๊ธฐ๋ณธ๊ฐ’: 1.75์ดˆ. + + + <b>How smoothly openpilot accelerates with the "Relaxed" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>"์—ฌ์œ " ํ”„๋กœํ•„์—์„œ openpilot๊ฐ€ ๊ฐ€์†ํ•˜๋Š” ๋ถ€๋“œ๋Ÿฌ์›€.</b> ๊ฐ’์„ ๋†’์ด๋ฉด ๋” ์™„๋งŒํ•˜๊ฒŒ ์ถœ๋ฐœํ•˜๊ณ , ๊ฐ’์„ ๋‚ฎ์ถ”๋ฉด ๋” ๋น ๋ฅด์ง€๋งŒ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ์ถœ๋ฐœํ•ฉ๋‹ˆ๋‹ค. + + + <b>How smoothly openpilot brakes with the "Relaxed" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>"์™„ํ™”" ํ”„๋กœํ•„์—์„œ openpilot๊ฐ€ ์ œ๋™ํ•˜๋Š” ๋ถ€๋“œ๋Ÿฌ์›€.</b> ๊ฐ’์„ ๋†’์ด๋ฉด ๋” ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ •์ง€ํ•˜๊ณ , ๋‚ฎ์ถ”๋ฉด ๋” ๋น ๋ฅด์ง€๋งŒ ๊ธ‰ํ•˜๊ฒŒ ์ œ๋™ํ•ฉ๋‹ˆ๋‹ค. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Relaxed" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>"๋А๊ธ‹ํ•จ" ํ”„๋กœํ•„์—์„œ openpilot์ด ์•ž์ฐจ์™€ ์œ ์ง€ํ•˜๋Š” ์ถ”๊ฐ€ ๊ฐ„๊ฒฉ์˜ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค.</b> ๊ฐ„๊ฒฉ์„ ๋” ํฌ๊ฒŒ ํ•˜๊ณ  ๋” ์‹ ์ค‘ํ•˜๊ฒŒ ๋”ฐ๋ผ๊ฐ€๋ ค๋ฉด ์ฆ๊ฐ€์‹œํ‚ค๊ณ , ๊ฐ„๊ฒฉ์„ ๋” ์ข๊ฒŒ ํ•˜๊ณ  ๋” ๊ฐ€๊น๊ฒŒ ๋”ฐ๋ผ๊ฐ€๋ ค๋ฉด ๊ฐ์†Œ์‹œํ‚ค์„ธ์š”. + + + <b>How smoothly openpilot slows down with the "Relaxed" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>"์™„ํ™”" ํ”„๋กœํ•„์—์„œ openpilot์ด ์–ผ๋งˆ๋‚˜ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๊ฐ์†ํ•˜๋Š”์ง€.</b> ๊ฐ’์„ ๋†’์ด๋ฉด ๋” ์™„๋งŒํ•˜๊ฒŒ ๊ฐ์†ํ•˜๊ณ , ๋‚ฎ์ถ”๋ฉด ๋” ๋น ๋ฅด์ง€๋งŒ ๊ธ‰ํ•˜๊ฒŒ ๊ฐ์†ํ•ฉ๋‹ˆ๋‹ค. + + + <b>How smoothly openpilot speeds up with the "Relaxed" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>"์™„ํ™”" ํ”„๋กœํ•„์—์„œ openpilot์ด ๊ฐ€์†ํ•˜๋Š” ๋ถ€๋“œ๋Ÿฌ์›€.</b> ๊ฐ’์„ ๋†’์ด๋ฉด ๋” ์™„๋งŒํ•˜๊ฒŒ ๊ฐ€์†ํ•˜๊ณ , ๋‚ฎ์ถ”๋ฉด ๋” ๋น ๋ฅด์ง€๋งŒ ๋” ํ”๋“ค๋ฆฌ๋Š” ๊ฐ€์†์„ ํ•ฉ๋‹ˆ๋‹ค. + + + <b>Reset the "Relaxed" profile to defaults.</b> + <b>"์™„ํ™”" ํ”„๋กœํ•„์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</b> + + + Longitudinal Tuning + ์ข…๋ฐฉํ–ฅ ํŠœ๋‹ + + + <b>Acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>๊ฐ€์† ๋ฐ ์ œ๋™ ์ œ์–ด ๋ณ€๊ฒฝ</b>์œผ๋กœ openpilot์˜ ์ฃผํ–‰์„ ๋ฏธ์„ธ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. + + + Acceleration Profile + ๊ฐ€์† ํ”„๋กœํ•„ + + + <b>How quickly openpilot speeds up.</b> "Eco" is gentle and efficient, "Sport" is firmer and more responsive, and "Sport+" accelerates at the maximum rate allowed. + <b>openpilot๊ฐ€ ๊ฐ€์†ํ•˜๋Š” ์†๋„์ž…๋‹ˆ๋‹ค.</b> "Eco"๋Š” ๋ถ€๋“œ๋Ÿฝ๊ณ  ํšจ์œจ์ ์ด๋ฉฐ, "Sport"๋Š” ๋” ๋‹จ๋‹จํ•˜๊ณ  ๋ฐ˜์‘์ด ๋น ๋ฅด๊ณ , "Sport+"๋Š” ํ—ˆ์šฉ๋œ ์ตœ๋Œ€ ์†๋„๋กœ ๊ฐ€์†ํ•ฉ๋‹ˆ๋‹ค. + + + Deceleration Profile + ๊ฐ์† ํ”„๋กœํŒŒ์ผ + + + <b>How firmly openpilot slows down.</b> "Eco" favors coasting, "Sport" applies stronger braking. + <b>openpilot๊ฐ€ ๊ฐ์†ํ•˜๋Š” ๊ฐ•๋„์ž…๋‹ˆ๋‹ค.</b> "Eco"๋Š” ๊ด€์„ฑ ์ฃผํ–‰์„ ์„ ํ˜ธํ•˜๊ณ , "Sport"๋Š” ๋” ๊ฐ•ํ•œ ์ œ๋™์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. + + + Human-Like Acceleration + ์‚ฌ๋žŒ๊ณผ ์œ ์‚ฌํ•œ ๊ฐ€์† + + + <b>Acceleration that mimics human behavior</b> by easing the throttle at low speeds and adding extra power when taking off from a stop. + <b>์ธ๊ฐ„์ ์ธ ๋™์ž‘์„ ๋ชจ๋ฐฉํ•˜๋Š” ๊ฐ€์†</b>์œผ๋กœ, ์ €์†์—์„œ๋Š” ์Šค๋กœํ‹€์„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ํ•˜๊ณ  ์ •์ง€ ์ƒํƒœ์—์„œ ์ถœ๋ฐœํ•  ๋•Œ๋Š” ์ถ”๊ฐ€ ์ถœ๋ ฅ์„ ๋”ํ•ฉ๋‹ˆ๋‹ค. + + + Human-Like Following + ์‚ฌ๋žŒ๊ณผ ์œ ์‚ฌํ•œ ์ถ”์ข… + + + Lead Detection Sensitivity + ์„ ๋‘ ์ฐจ๋Ÿ‰ ๊ฐ์ง€ ๋ฏผ๊ฐ๋„ + + + <b>How sensitive openpilot is to detecting vehicles.</b> Higher sensitivity allows quicker detection at longer distances but may react to non-vehicle objects; lower sensitivity is more conservative and reduces false detections. + <b>openpilot์˜ ์ฐจ๋Ÿ‰ ๊ฐ์ง€ ๋ฏผ๊ฐ๋„.</b> ๋ฏผ๊ฐ๋„๊ฐ€ ๋†’์œผ๋ฉด ๋” ๋จผ ๊ฑฐ๋ฆฌ์—์„œ ๋” ๋น ๋ฅด๊ฒŒ ๊ฐ์ง€ํ•˜์ง€๋งŒ ๋น„์ฐจ๋Ÿ‰ ๋ฌผ์ฒด์— ๋ฐ˜์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฏผ๊ฐ๋„๊ฐ€ ๋‚ฎ์œผ๋ฉด ๋ณด๋‹ค ๋ณด์ˆ˜์ ์ด๋ฉฐ ์˜คํƒ์ง€๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค. + + + Maximum Acceleration + ์ตœ๋Œ€ ๊ฐ€์† + + + <b>Limit the strongest acceleration</b> openpilot can command. + <b>์ตœ๋Œ€ ๊ฐ€์†์„</b> openpilot์ด ์ง€์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. + + + "Taco Bell Run" Turn Speed Hack + "Taco Bell Run" ํšŒ์ „ ์†๋„ ํ•ดํฌ + + + <b>The turn-speed hack from comma's 2022 "Taco Bell Run".</b> Designed to slow down for left and right turns. + <b>comma์˜ 2022 "Taco Bell Run"์—์„œ ๋‚˜์˜จ ์ฝ”๋„ˆ ์†๋„ ํ•ดํ‚น.</b> ์ขŒ์šฐ ํšŒ์ „์— ๋งž์ถฐ ๊ฐ์†ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. + + + Quality of Life + ์‚ถ์˜ ์งˆ + + + <b>Miscellaneous acceleration and braking control changes</b> to fine-tune how openpilot drives. + openpilot์˜ ์ฃผํ–‰ ๋ฐฉ์‹์„ ๋ฏธ์„ธ ์กฐ์ •ํ•˜๊ธฐ ์œ„ํ•œ <b>๊ธฐํƒ€ ๊ฐ€๊ฐ์† ์ œ์–ด ๋ณ€๊ฒฝ</b>. + + + Cruise Interval + ํฌ๋ฃจ์ฆˆ ๊ฐ„๊ฒฉ + + + <b>How much the set speed increases or decreases</b> for each + or โ€“ cruise control button press. + <b>ํฌ๋ฃจ์ฆˆ ์ปจํŠธ๋กค + ๋˜๋Š” โ€“ ๋ฒ„ํŠผ์„ ํ•œ ๋ฒˆ ๋ˆ„๋ฅผ ๋•Œ</b> ์„ค์ • ์†๋„๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ฐ์†Œํ•˜๋Š” ์ •๋„ + + + Cruise Interval (Hold) + ํฌ๋ฃจ์ฆˆ ๊ฐ„๊ฒฉ(๊ธธ๊ฒŒ ๋ˆ„๋ฆ„) + + + <b>How much the set speed increases or decreases while holding the + or โ€“ cruise control buttons.</b> + <b>ํฌ๋ฃจ์ฆˆ ์ปจํŠธ๋กค์˜ + ๋˜๋Š” โ€“ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ณ  ์žˆ๋Š” ๋™์•ˆ ์„ค์ • ์†๋„๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ฐ์†Œํ•˜๋Š” ์ •๋„.</b> + + + Force Stop at "Detected" Stop Lights/Signs + "๊ฐ์ง€๋œ" ์ •์ง€ ์‹ ํ˜ธ/ํ‘œ์ง€์—์„œ ๊ฐ•์ œ ์ •์ง€ + + + <b>Force openpilot to stop whenever the driving model "detects" a red light or stop sign.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>์ฃผํ–‰ ๋ชจ๋ธ์ด ๋นจ๊ฐ„ ์‹ ํ˜ธ๋‚˜ ์ •์ง€ ํ‘œ์ง€๋ฅผ โ€œ๊ฐ์ง€โ€ํ•˜๋ฉด openpilot์„ ๊ฐ•์ œ๋กœ ์ •์ง€์‹œํ‚ต๋‹ˆ๋‹ค.</b><br><br><i><b>๋ฉด์ฑ…์กฐํ•ญ</b>: openpilot์€ ์‹ ํ˜ธ๋“ฑ์ด๋‚˜ ์ •์ง€ ํ‘œ์ง€๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๊ฐ์ง€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. โ€œ์‹คํ—˜ ๋ชจ๋“œโ€์—์„œ๋Š” ์นด๋ฉ”๋ผ ์ž…๋ ฅ๋งŒ์œผ๋กœ ์ข…๋‹จ ๊ฐ„ ์ฃผํ–‰ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋ฏ€๋กœ, ๋ช…ํ™•ํ•œ ์ด์œ ๊ฐ€ ์—†์–ด๋„ ์ •์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.</i> + + + Increase Stopped Distance by: + ์ •์ง€ ๊ฑฐ๋ฆฌ ์ฆ๊ฐ€: + + + <b>Add extra space when stopped behind vehicles.</b> Increase for more room; decrease for shorter gaps. + <b>์•ž์ฐจ ๋’ค์— ์ •์ฐจํ•  ๋•Œ ์—ฌ์œ  ๊ณต๊ฐ„์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.</b> ๋” ๋„“ํžˆ๋ ค๋ฉด ์ฆ๊ฐ€, ๊ฐ„๊ฒฉ์„ ์ค„์ด๋ ค๋ฉด ๊ฐ์†Œํ•˜์‹ญ์‹œ์˜ค. + + + Map Accel/Decel to Gears + ๊ฐ€์†/๊ฐ์†์„ ๊ธฐ์–ด์— ๋งคํ•‘ + + + <b>Map the Acceleration or Deceleration profiles to the vehicle's "Eco" and "Sport" gear modes.</b> + <b>๊ฐ€์† ๋˜๋Š” ๊ฐ์† ํ”„๋กœํŒŒ์ผ์„ ์ฐจ๋Ÿ‰์˜ "Eco" ๋ฐ "Sport" ๊ธฐ์–ด ๋ชจ๋“œ์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.</b> + + + Offset Set Speed by: + ์„ค์ • ์†๋„ ์˜คํ”„์…‹: + + + <b>Increase the set speed by the chosen offset.</b> For example, set +5 if you usually drive 5 over the limit. + <b>์„ ํƒํ•œ ์˜คํ”„์…‹๋งŒํผ ์„ค์ • ์†๋„๋ฅผ ๋†’์ž…๋‹ˆ๋‹ค.</b> ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ณดํ†ต ์ œํ•œ์†๋„๋ณด๋‹ค 5 ๋” ๋น ๋ฅด๊ฒŒ ์ฃผํ–‰ํ•œ๋‹ค๋ฉด +5๋กœ ์„ค์ •ํ•˜์„ธ์š”. + + + Reverse Cruise Increase + ํ›„์ง„ ํฌ๋ฃจ์ฆˆ ์ฆ๊ฐ€ + + + <b>Reverse the cruise control button behavior</b> so a short press increases the set speed by 5 instead of 1. + <b>ํฌ๋ฃจ์ฆˆ ์ปจํŠธ๋กค ๋ฒ„ํŠผ ๋™์ž‘์„ ๋ฐ˜๋Œ€๋กœ</b> ํ•˜์—ฌ ์งง๊ฒŒ ๋ˆ„๋ฅด๋ฉด ์„ค์ • ์†๋„๊ฐ€ 1์ด ์•„๋‹ˆ๋ผ 5๋งŒํผ ์ฆ๊ฐ€ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. + + + Increase Following Distance by: + ์ฐจ๊ฐ„ ๊ฑฐ๋ฆฌ ์ฆ๊ฐ€: + + + Reduce Acceleration by: + ๊ฐ€์†์„ ๋‹ค์Œ๋งŒํผ ๊ฐ์†Œ: + + + Reduce Speed in Curves by: + ์ปค๋ธŒ์—์„œ ์†๋„ ๊ฐ์†Œ ๊ธฐ์ค€: + + + Snow + ๋ˆˆ + + + <b>Driving adjustments for snowy conditions.</b> + <b>๋ˆˆ๊ธธ ์ฃผํ–‰์„ ์œ„ํ•œ ์กฐ์ •.</b> + + + <b>Add extra space behind lead vehicles in snow.</b> Increase for more space; decrease for tighter gaps. + <b>๋ˆˆ๊ธธ์—์„œ๋Š” ์•ž์ฐจ์™€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๋” ๋„‰๋„‰ํžˆ ๋‘์‹ญ์‹œ์˜ค.</b> ๋Š˜๋ฆฌ๋ฉด ๋” ๋„“๊ฒŒ, ์ค„์ด๋ฉด ๋” ์ด˜์ด˜ํ•˜๊ฒŒ ๊ฐ„๊ฒฉ์ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค. + + + <b>Add extra buffer when stopped behind vehicles in snow.</b> Increase for more room; decrease for shorter gaps. + <b>๋ˆˆ๊ธธ์—์„œ ์•ž์ฐจ ๋’ค์— ์ •์ฐจํ•  ๋•Œ ์—ฌ์œ  ๊ฐ„๊ฒฉ์„ ๋” ๋‘์„ธ์š”.</b> ๋” ๋„“๊ฒŒ ํ•˜๋ ค๋ฉด ์ฆ๊ฐ€, ๋” ์ข๊ฒŒ ํ•˜๋ ค๋ฉด ๊ฐ์†Œ. + + + <b>Lower the maximum acceleration in snow.</b> Increase for softer takeoffs; decrease for quicker but less stable takeoffs. + <b>๋ˆˆ๊ธธ์—์„œ๋Š” ์ตœ๋Œ€ ๊ฐ€์†์„ ๋‚ฎ์ถ”์‹ญ์‹œ์˜ค.</b> ๋ถ€๋“œ๋Ÿฌ์šด ์ถœ๋ฐœ์„ ์›ํ•˜๋ฉด ๋†’์ด๊ณ , ๋” ๋น ๋ฅด์ง€๋งŒ ๋œ ์•ˆ์ •์ ์ธ ์ถœ๋ฐœ์„ ์›ํ•˜๋ฉด ๋‚ฎ์ถ”์‹ญ์‹œ์˜ค. + + + <b>Lower the desired speed while driving through curves in snow.</b> Increase for safer, gentler turns; decrease for more aggressive driving in curves. + <b>๋ˆˆ๊ธธ์—์„œ ์ปค๋ธŒ๋ฅผ ์ง€๋‚  ๋•Œ ์›ํ•˜๋Š” ์†๋„๋ฅผ ๋‚ฎ์ถ”์„ธ์š”.</b> ์•ˆ์ „ํ•˜๊ณ  ๋ถ€๋“œ๋Ÿฌ์šด ์ฝ”๋„ˆ๋ง์„ ์›ํ•˜๋ฉด ๋†’์ด๊ณ , ์ปค๋ธŒ์—์„œ ๋” ๊ณต๊ฒฉ์ ์œผ๋กœ ์ฃผํ–‰ํ•˜๋ ค๋ฉด ๋‚ฎ์ถ”์„ธ์š”. + + + Speed Limit Controller + ์†๋„ ์ œํ•œ ์ปจํŠธ๋กค๋Ÿฌ + + + <b>Limit openpilot's maximum driving speed to the current speed limit</b> obtained from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + ๋‹ค์šด๋กœ๋“œ๋œ ์ง€๋„, Mapbox, Navigate on openpilot, ๋˜๋Š” ์ง€์› ์ฐจ๋Ÿ‰(ํฌ๋“œ, ์ œ๋„ค์‹œ์Šค, ํ˜„๋Œ€, ๊ธฐ์•„, ๋ ‰์„œ์Šค, ํ† ์š”ํƒ€)์˜ ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์–ป์€ ํ˜„์žฌ ์ œํ•œ ์†๋„๋กœ <b>openpilot์˜ ์ตœ๋Œ€ ์ฃผํ–‰ ์†๋„๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค</b>. + + + Fallback Speed + ํด๋ฐฑ ์†๋„ + + + <b>The speed used by "Speed Limit Controller" when no speed limit is found.</b><br><br>- <b>Set Speed</b>: Use the cruise set speed<br>- <b>Experimental Mode</b>: Estimate the limit using the driving model<br>- <b>Previous Limit</b>: Keep using the last confirmed limit + <b>์ œํ•œ ์†๋„๊ฐ€ ๊ฐ์ง€๋˜์ง€ ์•Š์„ ๋•Œ "Speed Limit Controller"์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์†๋„์ž…๋‹ˆ๋‹ค.</b><br><br>- <b>์„ค์ • ์†๋„</b>: ํฌ๋ฃจ์ฆˆ ์„ค์ • ์†๋„ ์‚ฌ์šฉ<br>- <b>์‹คํ—˜ ๋ชจ๋“œ</b>: ์ฃผํ–‰ ๋ชจ๋ธ๋กœ ์ œํ•œ ์†๋„ ์ถ”์ •<br>- <b>์ด์ „ ์ œํ•œ</b>: ๋งˆ์ง€๋ง‰์œผ๋กœ ํ™•์ธ๋œ ์ œํ•œ ์†๋„ ๊ณ„์† ์‚ฌ์šฉ + + + Override Speed + ์†๋„ ์žฌ์„ค์ • + + + <b>The speed used by "Speed Limit Controller" after you manually drive faster than the posted limit.</b><br><br>- <b>Set with Gas Pedal</b>: Use the highest speed reached while pressing the gas<br>- <b>Max Set Speed</b>: Use the cruise set speed<br><br>Overrides clear when openpilot disengages. + <b>๊ฒŒ์‹œ๋œ ์ œํ•œ์†๋„๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ดˆ๊ณผํ•˜์—ฌ ์ฃผํ–‰ํ•œ ํ›„ "Speed Limit Controller"๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์†๋„์ž…๋‹ˆ๋‹ค.</b><br><br>- <b>๊ฐ€์† ํŽ˜๋‹ฌ๋กœ ์„ค์ •</b>: ๊ฐ€์† ํŽ˜๋‹ฌ์„ ๋ฐŸ๋Š” ๋™์•ˆ ๋„๋‹ฌํ•œ ์ตœ๊ณ  ์†๋„๋ฅผ ์‚ฌ์šฉ<br>- <b>์ตœ๋Œ€ ์„ค์ • ์†๋„</b>: ํฌ๋ฃจ์ฆˆ ์„ค์ • ์†๋„๋ฅผ ์‚ฌ์šฉ<br><br>openpilot์ด ํ•ด์ œ๋˜๋ฉด ์žฌ์ •์˜๊ฐ€ ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค. + + + <b>Miscellaneous "Speed Limit Controller" changes</b> to fine-tune how openpilot drives. + <b>๊ธฐํƒ€ "Speed Limit Controller" ๋ณ€๊ฒฝ</b>์œผ๋กœ openpilot ์ฃผํ–‰์„ ๋ฏธ์„ธ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. + + + Confirm New Speed Limits + ์ƒˆ ์†๋„ ์ œํ•œ ํ™•์ธ + + + <b>Ask before changing to a new speed limit.</b> To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds. + <b>์ƒˆ ์†๋„ ์ œํ•œ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ ์ „์— ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.</b> ์ˆ˜๋ฝํ•˜๋ ค๋ฉด ๊นœ๋ฐ•์ด๋Š” ํ™”๋ฉด ์œ„์ ฏ์„ ํƒญํ•˜๊ฑฐ๋‚˜ Cruise Increase ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด์„ธ์š”. ๊ฑฐ๋ถ€ํ•˜๋ ค๋ฉด Cruise Decrease ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ 30์ดˆ ๋™์•ˆ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋ฌด์‹œํ•˜์„ธ์š”. + + + Force MPH from Dashboard + ๋Œ€์‹œ๋ณด๋“œ์—์„œ MPH ๊ฐ•์ œ ์‚ฌ์šฉ + + + <b>Always read dashboard speed limit signs in mph.</b> Turn this on if the cluster shows mph but the limit is interpreted as km/h. + <b>ํ•ญ์ƒ ๊ณ„๊ธฐํŒ์˜ ์ œํ•œ ์†๋„ ํ‘œ์ง€ํŒ์„ mph๋กœ ์ฝ์œผ์‹ญ์‹œ์˜ค.</b> ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ mph๋กœ ํ‘œ์‹œ๋˜์ง€๋งŒ ์ œํ•œ ์†๋„๊ฐ€ km/h๋กœ ํ•ด์„๋  ๊ฒฝ์šฐ ์ด ์˜ต์…˜์„ ์ผœ์‹ญ์‹œ์˜ค. + + + Higher Limit Lookahead Time + ๋” ๋†’์€ ์ œํ•œ ์„ ํ–‰ ์‹œ๊ฐ„ + + + <b>How far ahead openpilot anticipates upcoming higher speed limits</b> from downloaded map data. + ๋‹ค์šด๋กœ๋“œ๋œ ์ง€๋„ ๋ฐ์ดํ„ฐ์—์„œ <b>openpilot์ด ๋‹ค๊ฐ€์˜ค๋Š” ๋” ๋†’์€ ์ œํ•œ ์†๋„๋ฅผ ์–ผ๋งˆ๋‚˜ ๋ฏธ๋ฆฌ ์˜ˆ์ƒํ•˜๋Š”์ง€</b> ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. + + + Lower Limit Lookahead Time + ํ•˜ํ•œ์„  ์„ ํ–‰ ์‹œ๊ฐ„ + + + <b>How far ahead openpilot anticipates upcoming lower speed limits</b> from downloaded map data. + <b>๋‹ค์šด๋กœ๋“œ๋œ ์ง€๋„ ๋ฐ์ดํ„ฐ์—์„œ ๋‹ค๊ฐ€์˜ค๋Š” ๋‚ฎ์€ ์ œํ•œ ์†๋„๋ฅผ openpilot์ด ์–ผ๋งˆ๋‚˜ ๋ฏธ๋ฆฌ ์˜ˆ์ธกํ• ์ง€</b> ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. + + + Match Speed Limit on Engage + ์‹œ์ž‘ ์‹œ ์ œํ•œ ์†๋„ ๋งž์ถ”๊ธฐ + + + <b>When openpilot is first enabled, automatically set the max speed to the current posted limit.</b> + <b>openpilot์ด ์ฒ˜์Œ ํ™œ์„ฑํ™”๋˜๋ฉด ํ˜„์žฌ ํ‘œ์ง€ ์ œํ•œ ์†๋„๋กœ ์ตœ๋Œ€ ์†๋„๋ฅผ ์ž๋™ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</b> + + + Use Mapbox as Fallback + ๋ฐฑ์—…์œผ๋กœ Mapbox ์‚ฌ์šฉ + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>๋‹ค๋ฅธ ์†Œ์Šค๊ฐ€ ์—†์„ ๋•Œ Mapbox ์†๋„ ์ œํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.</b> + + + Speed Limit Source Priority + ์ œํ•œ ์†๋„ ์†Œ์Šค ์šฐ์„ ์ˆœ์œ„ + + + <b>The source order for speed limits</b> when more than one is available. + <b>์—ฌ๋Ÿฌ ์ œํ•œ ์†๋„๊ฐ€ ์žˆ์„ ๋•Œ</b> ์ ์šฉํ•  ์ œํ•œ ์†๋„ ์†Œ์Šค์˜ ์šฐ์„ ์ˆœ์œ„</b> + + + Speed Limit Offsets + ์†๋„ ์ œํ•œ ์˜คํ”„์…‹ + + + <b>Add an offset to the posted speed limit</b> to better match your driving style. + <b>ํ‘œ์ง€๋œ ์ œํ•œ์†๋„์— ์˜คํ”„์…‹์„ ์ถ”๊ฐ€</b>ํ•˜์—ฌ ์šด์ „ ์Šคํƒ€์ผ์— ๋” ์ž˜ ๋งž์ถ”์„ธ์š”. Speed Offset (0โ€“24 mph) - ์†๋„ ์˜คํ”„์…‹ (0โ€“24 mph) + ์†๋„ ์˜คํ”„์…‹ (0โ€“24 mph) + + + <b>How much to offset posted speed-limits</b> between 0 and 24 mph. + <b>๊ฒŒ์‹œ๋œ ์ œํ•œ ์†๋„์—์„œ ์–ผ๋งˆ๋‚˜ ์˜คํ”„์…‹ํ• ์ง€</b> 0~24 mph ์‚ฌ์ด." Speed Offset (25โ€“34 mph) - ์†๋„ ์˜คํ”„์…‹ (25โ€“34 mph) + ์†๋„ ์˜คํ”„์…‹ (25โ€“34 mph) + + + <b>How much to offset posted speed-limits</b> between 25 and 34 mph. + <b>25~34 mph ์‚ฌ์ด ๊ฒŒ์‹œ ์ œํ•œ์†๋„์—์„œ ์–ผ๋งˆ๋‚˜ ์˜คํ”„์…‹ํ• ์ง€</b> Speed Offset (35โ€“44 mph) - ์†๋„ ์˜คํ”„์…‹ (35โ€“44 mph) + ์†๋„ ์˜คํ”„์…‹ (35โ€“44 mph) + + + <b>How much to offset posted speed-limits</b> between 35 and 44 mph. + <b>๊ฒŒ์‹œ ์ œํ•œ ์†๋„๋ฅผ ์–ผ๋งˆ๋‚˜ ์˜คํ”„์…‹ํ• ์ง€</b> 35~44 mph ์‚ฌ์ด. Speed Offset (45โ€“54 mph) - ์†๋„ ์˜คํ”„์…‹ (45โ€“54 mph) + ์†๋„ ์˜คํ”„์…‹ (45โ€“54 mph) + + + <b>How much to offset posted speed-limits</b> between 45 and 54 mph. + <b>๊ฒŒ์‹œ ์ œํ•œ์†๋„๋ฅผ ์–ผ๋งˆ๋‚˜ ์˜คํ”„์…‹ํ• ์ง€</b> 45~54 mph ๊ตฌ๊ฐ„์—์„œ. Speed Offset (55โ€“64 mph) - ์†๋„ ์˜คํ”„์…‹ (55โ€“64 mph) + ์†๋„ ์˜คํ”„์…‹(55โ€“64 mph) + + + <b>How much to offset posted speed-limits</b> between 55 and 64 mph. + <b>๊ฒŒ์‹œ ์ œํ•œ ์†๋„์—์„œ์˜ ์˜คํ”„์…‹ ์ •๋„</b> 55~64 mph ๊ตฌ๊ฐ„. Speed Offset (65โ€“74 mph) - ์†๋„ ์˜คํ”„์…‹ (65โ€“74 mph) + ์†๋„ ์˜คํ”„์…‹ (65โ€“74 mph) + + + <b>How much to offset posted speed-limits</b> between 65 and 74 mph. + <b>๊ฒŒ์‹œ ์†๋„ ์ œํ•œ์—์„œ ์–ผ๋งˆ๋‚˜ ์˜คํ”„์…‹ํ• ์ง€</b> 65~74 mph ์‚ฌ์ด. Speed Offset (75โ€“99 mph) - ์†๋„ ์˜คํ”„์…‹ (75โ€“99 mph) + ์†๋„ ์˜คํ”„์…‹ (75โ€“99 mph) - Only For Detected Lanes - ๊ฐ์ง€๋œ ์ฐจ์„ ์—๋งŒ ํ•ด๋‹น + <b>How much to offset posted speed-limits</b> between 75 and 99 mph. + <b>ํ‘œ์ง€ ์†๋„ ์ œํ•œ์—์„œ ์–ผ๋งˆ๋‚˜ ์˜คํ”„์…‹ํ• ์ง€</b> 75~99 mph ๋ฒ”์œ„" + + + Visual Settings + ์‹œ๊ฐ ์„ค์ • + + + <b>Visual "Speed Limit Controller" changes</b> to fine-tune how the driving screen looks. + <b>์‹œ๊ฐ์  "Speed Limit Controller" ๋ณ€๊ฒฝ</b>๋กœ ์ฃผํ–‰ ํ™”๋ฉด์˜ ๋ชจ์Šต์„ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. + + + Show Speed Limit Offset + ์†๋„ ์ œํ•œ ์˜คํ”„์…‹ ํ‘œ์‹œ + + + <b>Show the current offset from the posted limit</b> on the driving screen. + ์šด์ „ ํ™”๋ฉด์— <b>๊ฒŒ์‹œ๋œ ์ œํ•œ ์†๋„์—์„œ์˜ ํ˜„์žฌ ์˜คํ”„์…‹์„ ํ‘œ์‹œ</b>ํ•ฉ๋‹ˆ๋‹ค. + + + Show Speed Limit Sources + ์†๋„ ์ œํ•œ ์†Œ์Šค ํ‘œ์‹œ + + + <b>Display the speed-limit sources and their current values</b> on the driving screen. + ์ฃผํ–‰ ํ™”๋ฉด์— <b>์ œํ•œ ์†๋„ ์†Œ์Šค์™€ ํ˜„์žฌ ๊ฐ’</b>์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. + + + seconds + ์ดˆ + + + m/sยฒ + m/sยฒ + + + mph + mph + + + With Lead + ์„ ํ–‰ ์ฐจ๋Ÿ‰ ์žˆ์Œ + + + <b>Switch to "Experimental Mode" when driving below this speed with a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>์•ž์ฐจ๊ฐ€ ์žˆ๊ณ  ์ด ์†๋„ ์•„๋ž˜๋กœ ์ฃผํ–‰ํ•  ๋•Œ "Experimental Mode"๋กœ ์ „ํ™˜</b>ํ•˜๋ฉด openpilot์ด ์ €์† ์ƒํ™ฉ์„ ๋” ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. + + + Slower Lead + ๋А๋ฆฐ ์„ ํ–‰์ฐจ๋Ÿ‰ + + + Stopped Lead + ์ •์ง€ํ•œ ์„ ํ–‰ ์ฐจ๋Ÿ‰ + + + Intersections + ๊ต์ฐจ๋กœ + + + Turns + ํšŒ์ „ + + + Off + ๋„๊ธฐ + + + second + ์ดˆ + + + Not For Detected Lanes + ๊ฐ์ง€๋œ ์ฐจ์„ ์—๋Š” ํ•ด๋‹น ์—†์Œ + + + RESET + ์žฌ์„ค์ • + + + Are you sure you want to completely reset your curvature data? + ๊ณก๋ฅ  ๋ฐ์ดํ„ฐ๋ฅผ ์™„์ „ํžˆ ์ดˆ๊ธฐํ™”ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + Eco + ์—์ฝ” + + + Sport + ์Šคํฌ์ธ  + + + Sport+ + ์Šคํฌ์ธ + + + + feet + ํ”ผํŠธ + + + Acceleration + ๊ฐ€์† + + + Deceleration + ๊ฐ์† + + + MANAGE + ๊ด€๋ฆฌ + + + Set Speed + ์„ค์ • ์†๋„ + + + Experimental Mode + ์‹คํ—˜ ๋ชจ๋“œ + + + Previous Limit + ์ด์ „ ์ œํ•œ + + + None + ์—†์Œ + + + Set With Gas Pedal + ๊ฐ€์† ํŽ˜๋‹ฌ๋กœ ์„ค์ • + + + Max Set Speed + ์ตœ๋Œ€ ์„ค์ • ์†๋„ + + + SELECT + ์„ ํƒ + + + Dashboard + ๋Œ€์‹œ๋ณด๋“œ + + + Map Data + ์ง€๋„ ๋ฐ์ดํ„ฐ + + + Navigation + ๋‚ด๋น„๊ฒŒ์ด์…˜ + + + Highest + ์ตœ๊ณ  + + + Lowest + ์ตœ์ € + + + Select your primary priority + ์ฃผ์š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ ํƒํ•˜์„ธ์š” + + + Select your secondary priority + ๋ณด์กฐ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ ํƒํ•˜์„ธ์š” + + + Select your tertiary priority + 3์ฐจ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ ํƒํ•˜์„ธ์š” + + + Lower Limits + ํ•˜ํ•œ๊ฐ’ + + + Higher Limits + ์ƒํ–ฅ ํ•œ๊ณ„ + + + Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? + <b>Traffic Mode</b> ์„ค์ •์„ ์™„์ „ํžˆ ์ดˆ๊ธฐํ™”ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? + <b>๊ณต๊ฒฉ์ </b> ์„ฑ๊ฒฉ์˜ ์„ค์ •์„ ์™„์ „ํžˆ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + Are you sure you want to completely reset your settings for the <b>Standard</b> personality? + <b>ํ‘œ์ค€</b> ์„ฑ๊ฒฉ์˜ ์„ค์ •์„ ์™„์ „ํžˆ ์ดˆ๊ธฐํ™”ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? + <b>Relaxed</b> ์„ฑ๊ฒฉ์˜ ์„ค์ •์„ ์™„์ „ํžˆ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + foot + ํ”ผํŠธ + + + meter + ๋ฏธํ„ฐ + + + meters + ๋ฏธํ„ฐ + + + km/h + km/h Speed Offset (0โ€“29 km/h) - ์†๋„ ์˜คํ”„์…‹ (0โ€“29 km/h) + ์†๋„ ์˜คํ”„์…‹ (0โ€“29 km/h) Speed Offset (30โ€“49 km/h) - ์†๋„ ์˜คํ”„์…‹ (30โ€“49 km/h) + ์†๋„ ์˜คํ”„์…‹ (30โ€“49 km/h) Speed Offset (50โ€“59 km/h) - ์†๋„ ์˜คํ”„์…‹ (50โ€“59 km/h) + ์†๋„ ์˜คํ”„์…‹ (50โ€“59 km/h) Speed Offset (60โ€“79 km/h) - ์†๋„ ์˜คํ”„์…‹ (60โ€“79 km/h) + ์†๋„ ์˜คํ”„์…‹ (60โ€“79 km/h) Speed Offset (80โ€“99 km/h) - ์†๋„ ์˜คํ”„์…‹ (80โ€“99 km/h) + ์†๋„ ์˜คํ”„์…‹(80โ€“99 km/h) Speed Offset (100โ€“119 km/h) - ์†๋„ ์˜คํ”„์…‹ (100โ€“119 km/h) + ์†๋„ ์˜คํ”„์…‹(100โ€“119 km/h) Speed Offset (120โ€“140 km/h) - ์†๋„ ์˜คํ”„์…‹ (120โ€“140 km/h) + ์†๋„ ์˜คํ”„์…‹ (120โ€“140 km/h) - Curve Speed Control - ๊ณก์„  ์†๋„ ์ œ์–ด - - - Automatically slow down for upcoming curves using downloaded maps or the driving model. - ๋‹ค์šด๋กœ๋“œ๋œ ์ง€๋„๋‚˜ ์ฃผํ–‰ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๊ฐ€์˜ค๋Š” ์ปค๋ธŒ์— ์ž๋™์œผ๋กœ ์†๋„๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค. - - - Curve Detection Method - ๊ณก์„  ๊ฐ์ง€ ๋ฐฉ๋ฒ• - - - How curves are detected. <b>Map-Based</b> uses downloaded map data to identify curves and determine the appropriate speed in which to handle them at, while <b>Vision</b> relies solely on the driving model. - ๊ณก์„ ์ด ๊ฐ์ง€๋˜๋Š” ๋ฐฉ๋ฒ•. <b>์ง€๋„ ๊ธฐ๋ฐ˜</b>์€ ๋‹ค์šด๋กœ๋“œ๋œ ์ง€๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณก์„ ์„ ์‹๋ณ„ํ•˜๊ณ  ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ ์ ˆํ•œ ์†๋„๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ˜๋ฉด, <b>๋น„์ „</b>์€ ์˜ค๋กœ์ง€ ์ฃผํ–‰ ๋ชจ๋ธ์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. - - - Curve Detection Failsafe - ๊ณก์„  ๊ฐ์ง€ ์•ˆ์ „์žฅ์น˜ - - - Only trigger <b>Curve Speed Control</b> if a curve is detected with the model while using the <b>Map-Based</b> method. Useful to help prevent false positives. - <b>Map-Based</b> ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ชจ๋ธ๋กœ ๊ณก์„ ์ด ๊ฐ์ง€๋œ ๊ฒฝ์šฐ์—๋งŒ <b>Curve Speed Control</b>์„ ํŠธ๋ฆฌ๊ฑฐํ•˜์‹ญ์‹œ์˜ค. ์˜คํƒ ๋ฐฉ์ง€์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. - - - Curve Detection Sensitivity - ๊ณก์„  ๊ฐ์ง€ ๋ฏผ๊ฐ๋„ - - - How sensitive openpilot is when detecting curves. Higher values trigger earlier responses at the risk of triggering too often, while lower values increase confidence at the risk of triggering too infrequently. - openpilot์ด ๊ณก์„ ์„ ๊ฐ์ง€ํ•  ๋•Œ์˜ ๋ฏผ๊ฐ๋„. ๊ฐ’์ด ๋†’์„์ˆ˜๋ก ๋” ์ž์ฃผ ํŠธ๋ฆฌ๊ฑฐ๋  ์œ„ํ—˜์ด ์žˆ์ง€๋งŒ ๋” ๋น ๋ฅธ ๋ฐ˜์‘์„ ์œ ๋„ํ•˜๋ฉฐ, ๊ฐ’์ด ๋‚ฎ์„์ˆ˜๋ก ํŠธ๋ฆฌ๊ฑฐ ๋นˆ๋„๊ฐ€ ์ค„์–ด๋“œ๋Š” ์œ„ํ—˜์ด ์žˆ์ง€๋งŒ ์‹ ๋ขฐ๋„๊ฐ€ ๋†’์•„์ง‘๋‹ˆ๋‹ค. - - - Curve Speed Aggressiveness - ๊ณก์„  ์†๋„ ๊ณต๊ฒฉ์„ฑ - - - How aggressive openpilot is when navigating through curves. Higher values result in faster turns but may reduce comfort or stability, while lower values result in slower, smoother turns at the risk of being overly cautious. - openpilot์ด ๊ณก์„ ์„ ํƒ์ƒ‰ํ•  ๋•Œ ์–ผ๋งˆ๋‚˜ ๊ณต๊ฒฉ์ ์ธ์ง€. ๋†’์€ ๊ฐ’์€ ๋” ๋น ๋ฅธ ํšŒ์ „์„ ์œ ๋„ํ•˜์ง€๋งŒ ํŽธ์•ˆํ•จ์ด๋‚˜ ์•ˆ์ •์„ฑ์„ ๊ฐ์†Œ์‹œํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‚ฎ์€ ๊ฐ’์€ ๋” ๋А๋ฆฌ๊ณ  ๋ถ€๋“œ๋Ÿฌ์šด ํšŒ์ „์„ ์œ ๋„ํ•˜์ง€๋งŒ ์ง€๋‚˜์น˜๊ฒŒ ์‹ ์ค‘ํ•  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. - - - Map Based - ์ง€๋„ ๊ธฐ๋ฐ˜ - - - Vision - ๋น„์ „ - - - The <b>Map Based</b> option is only available when some <b>Map Data</b> has been downloaded! - <b>์ง€๋„ ๊ธฐ๋ฐ˜</b> ์˜ต์…˜์€ ์ผ๋ถ€ <b>์ง€๋„ ๋ฐ์ดํ„ฐ</b>๊ฐ€ ๋‹ค์šด๋กœ๋“œ๋œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! + <b>Following behavior that mimics human drivers</b> by closing gaps behind faster vehicles for quicker takeoffs and dynamically adjusting the desired following distance for gentler, more efficient braking. + <b>์‚ฌ๋žŒ ์šด์ „์ž์™€ ์œ ์‚ฌํ•œ ์ถ”์ข… ๋™์ž‘</b>์œผ๋กœ, ๋” ๋น ๋ฅธ ์ฐจ๋Ÿ‰ ๋’ค ๊ฐ„๊ฒฉ์„ ์ขํ˜€ ์‹ ์†ํ•œ ์ถœ๋ฐœ์„ ๋•๊ณ  ์›ํ•˜๋Š” ์ถ”์ข… ๊ฑฐ๋ฆฌ๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•ด ๋”์šฑ ๋ถ€๋“œ๋Ÿฝ๊ณ  ํšจ์œจ์ ์ธ ์ œ๋™์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. FrogPilotManageControl MANAGE - ๊ด€๋ฆฌํ•˜๋‹ค + ๊ด€๋ฆฌ FrogPilotMapsPanel Manually - ์ˆ˜๋™์œผ๋กœ + ์ˆ˜๋™์œผ๋กœ Weekly - ์ฃผ๊ฐ„ + ์ฃผ๊ฐ„ Monthly - ์›”๊ฐ„ + ์›”๊ฐ„ Automatically Update Maps - ์ง€๋„ ์ž๋™ ์—…๋ฐ์ดํŠธ + ์ง€๋„ ์ž๋™ ์—…๋ฐ์ดํŠธ - The frequency at which maps sync with the latest OpenStreetMap (OSM) changes. Weekly updates occur every Sunday, and monthly updates occur on the 1st. - ์ง€๋„๋Š” ์ตœ์‹  OpenStreetMap(OSM) ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ๋™๊ธฐํ™”๋˜๋Š” ๋นˆ๋„์ž…๋‹ˆ๋‹ค. ์ฃผ๊ฐ„ ์—…๋ฐ์ดํŠธ๋Š” ๋งค์ฃผ ์ผ์š”์ผ์— ๋ฐœ์ƒํ•˜๋ฉฐ, ์›”๊ฐ„ ์—…๋ฐ์ดํŠธ๋Š” ๋งค์›” 1์ผ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. - - - Data Sources - ๋ฐ์ดํ„ฐ ์†Œ์Šค - - - Select map data sources to use with "Curve Speed Control" and "Speed Limit Controller". - "๊ณก์„  ์†๋„ ์ œ์–ด" ๋ฐ "์†๋„ ์ œํ•œ ์ปจํŠธ๋กค๋Ÿฌ"์— ์‚ฌ์šฉํ•  ์ง€๋„ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค. - - - COUNTRIES - ๊ตญ๊ฐ€ - - - STATES - ์ฃผ + <b>How often maps update</b> from "OpenStreetMap (OSM)" with the latest speed limit information. Weekly updates run every Sunday; monthly updates run on the 1st. + <b>์ตœ์‹  ์ œํ•œ ์†๋„ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ</b> "OpenStreetMap (OSM)"์˜ ์ง€๋„ ์—…๋ฐ์ดํŠธ ๋นˆ๋„. ์ฃผ๊ฐ„ ์—…๋ฐ์ดํŠธ๋Š” ๋งค์ฃผ ์ผ์š”์ผ์— ์‹คํ–‰๋˜๋ฉฐ, ์›”๊ฐ„ ์—…๋ฐ์ดํŠธ๋Š” ๋งค์›” 1์ผ์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. Download Maps - ์ง€๋„ ๋‹ค์šด๋กœ๋“œ + ์ง€๋„ ๋‹ค์šด๋กœ๋“œ DOWNLOAD - ๋‹ค์šด๋กœ๋“œ + ๋‹ค์šด๋กœ๋“œ - Download the selected maps to use with "Curve Speed Control" and "Speed Limit Controller". - ์„ ํƒํ•œ ์ง€๋„๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ "Curve Speed Control" ๋ฐ "Speed Limit Controller"์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. + <b>Manually update your selected map sources</b> so "Speed Limit Controller" has the latest speed limit information. + <b>์„ ํƒํ•œ ์ง€๋„ ์†Œ์Šค๋ฅผ ์ˆ˜๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ</b>ํ•˜์—ฌ "Speed Limit Controller"์— ์ตœ์‹  ์ œํ•œ ์†๋„ ์ •๋ณด๊ฐ€ ์ ์šฉ๋˜๋„๋ก ํ•˜์„ธ์š”. CANCEL - ์ทจ์†Œ + ์ทจ์†Œ - Are you sure you want to cancel the download? - ๋‹ค์šด๋กœ๋“œ๋ฅผ ์ทจ์†Œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + Cancel the download? + ๋‹ค์šด๋กœ๋“œ๋ฅผ ์ทจ์†Œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - Download Completion ETA - ๋‹ค์šด๋กœ๋“œ ์™„๋ฃŒ ์˜ˆ์ƒ ์‹œ๊ฐ„ + Last Updated + ๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ - Download Progress - ๋‹ค์šด๋กœ๋“œ ์ง„ํ–‰ ์ƒํ™ฉ + Map Sources + ์ง€๋„ ์†Œ์Šค - Download Time Elapsed - ๋‹ค์šด๋กœ๋“œ ๊ฒฝ๊ณผ ์‹œ๊ฐ„ + <b>Select the countries or U.S. states to use with "Speed Limit Controller".</b> + <b>"Speed Limit Controller"๋ฅผ ์‚ฌ์šฉํ•  ๊ตญ๊ฐ€ ๋˜๋Š” ๋ฏธ๊ตญ ์ฃผ๋ฅผ ์„ ํƒํ•˜์„ธ์š”.</b> - Maps Last Updated - ์ง€๋„ ๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ๋จ + COUNTRIES + ๊ตญ๊ฐ€ - Maps Size - ์ง€๋„ ํฌ๊ธฐ + STATES + ์ƒํƒœ + + + Progress + ์ง„ํ–‰ + + + Time Elapsed + ๊ฒฝ๊ณผ ์‹œ๊ฐ„ + + + Time Remaining + ๋‚จ์€ ์‹œ๊ฐ„ Remove Maps - ์ง€๋„ ์ œ๊ฑฐ + ์ง€๋„ ์ œ๊ฑฐ REMOVE - ์ œ๊ฑฐ + ์ œ๊ฑฐ - Remove downloaded maps to clear up storage space. - ๋‹ค์šด๋กœ๋“œํ•œ ์ง€๋„๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ์ €์žฅ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜์„ธ์š”. + <b>Delete downloaded map data</b> to free up storage space. + <b>๋‹ค์šด๋กœ๋“œ๋œ ์ง€๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œ</b>ํ•˜์—ฌ ์ €์žฅ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜์„ธ์š”. - Are you sure you want to delete all of your downloaded maps? - ๋‹ค์šด๋กœ๋“œํ•œ ๋ชจ๋“  ์ง€๋„๋ฅผ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + Delete all downloaded maps? + ๋‹ค์šด๋กœ๋“œํ•œ ๋ชจ๋“  ์ง€๋„๋ฅผ ์‚ญ์ œํ• ๊นŒ์š”? - Reset Map Downloader - ์ง€๋„ ๋‹ค์šด๋กœ๋” ์žฌ์„ค์ • + Reset Downloader + ๋‹ค์šด๋กœ๋” ์žฌ์„ค์ • RESET - ์žฌ์„ค์ • + ์žฌ์„ค์ • - Reset the map downloader. Use if you're running into issues with downloading maps. - ์ง€๋„ ๋‹ค์šด๋กœ๋”๋ฅผ ์žฌ์„ค์ •ํ•˜์„ธ์š”. ์ง€๋„๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜์„ธ์š”. + <b>Reset the map downloader.</b> Use this if downloads are stuck or failing. + <b>์ง€๋„ ๋‹ค์šด๋กœ๋”๋ฅผ ์žฌ์„ค์ •ํ•˜์„ธ์š”.</b> ๋‹ค์šด๋กœ๋“œ๊ฐ€ ๋ฉˆ์ถ”๊ฑฐ๋‚˜ ์‹คํŒจํ•  ๋•Œ ์‚ฌ์šฉํ•˜์„ธ์š”. - Are you sure you want to reset the map downloader? This will force a reboot once completed. - ์ง€๋„ ๋‹ค์šด๋กœ๋“œ ํ”„๋กœ๊ทธ๋žจ์„ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์™„๋ฃŒ๋˜๋ฉด ์žฌ๋ถ€ํŒ…์ด ๊ฐ•์ œ๋ฉ๋‹ˆ๋‹ค. + Reset the map downloader? Your device will reboot afterward. + ์ง€๋„ ๋‹ค์šด๋กœ๋“œ ๊ด€๋ฆฌ์ž๋ฅผ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ดํ›„ ๊ธฐ๊ธฐ๊ฐ€ ์žฌ๋ถ€ํŒ…๋ฉ๋‹ˆ๋‹ค. Reset - ์žฌ์„ค์ • + ์žฌ์„ค์ • Resetting... - ์žฌ์„ค์ • ์ค‘... + ์žฌ์„ค์ • ์ค‘โ€ฆ Reset! - ๋ฆฌ์…‹! + ์žฌ์„ค์ •! Rebooting... - ์žฌ๋ถ€ํŒ… ์ค‘... + ์žฌ๋ถ€ํŒ… ์ค‘... + + + Storage Used + ์‚ฌ์šฉ๋œ ์ €์žฅ๊ณต๊ฐ„ Africa - ์•„ํ”„๋ฆฌ์นด + ์•„ํ”„๋ฆฌ์นด Antarctica - ๋‚จ๊ทน ๋Œ€๋ฅ™ + ๋‚จ๊ทน Asia - ์•„์‹œ์•„ + ์•„์‹œ์•„ Europe - ์œ ๋Ÿฝ + ์œ ๋Ÿฝ North America - ๋ถ์•„๋ฉ”๋ฆฌ์นด + ๋ถ์•„๋ฉ”๋ฆฌ์นด Oceania - ์˜ค์„ธ์•„๋‹ˆ์•„ + ์˜ค์„ธ์•„๋‹ˆ์•„ South America - ๋‚จ์•„๋ฉ”๋ฆฌ์นด + ๋‚จ์•„๋ฉ”๋ฆฌ์นด United States - Midwest - ๋ฏธ๊ตญ - ์ค‘์„œ๋ถ€ + ๋ฏธ๊ตญ - ์ค‘์„œ๋ถ€ United States - Northeast - ๋ฏธ๊ตญ - ๋ถ๋™๋ถ€ + ๋ฏธ๊ตญ - ๋ถ๋™๋ถ€ United States - South - ๋ฏธ๊ตญ - ๋‚จ๋ถ€ + ๋ฏธ๊ตญ - ๋‚จ๋ถ€ United States - West - ๋ฏธ๊ตญ - ์„œ๋ถ€ + ๋ฏธ๊ตญ - ์„œ๋ถ€ United States - Territories - ๋ฏธ๊ตญ - ์†๋ น - - - CANCELLED - ์ทจ์†Œ๋จ + ๋ฏธ๊ตญ - ์†๋ น Offline... - ์˜คํ”„๋ผ์ธ... + ์˜คํ”„๋ผ์ธโ€ฆ + + + CANCELLED + ์ทจ์†Œ๋จ FrogPilotModelPanel Automatically Download New Models - ์ƒˆ ๋ชจ๋ธ ์ž๋™ ๋‹ค์šด๋กœ๋“œ + ์ƒˆ ๋ชจ๋ธ ์ž๋™ ๋‹ค์šด๋กœ๋“œ - Automatically download new driving models as they become available. - ์ƒˆ๋กœ์šด ์šด์ „ ๋ชจ๋ธ์ด ์ œ๊ณต๋  ๋•Œ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. + <b>Automatically download new driving models</b> as they become available. + <b>์ƒˆ ์šด์ „ ๋ชจ๋ธ์ด ๋‚˜์˜ค๋Š” ๋Œ€๋กœ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œ</b>ํ•ฉ๋‹ˆ๋‹ค. Delete Driving Models - ์šด์ „ ๋ชจ๋ธ ์‚ญ์ œ + ์ฃผํ–‰ ๋ชจ๋ธ ์‚ญ์ œ - Delete driving models from the device. - ์žฅ์น˜์—์„œ ์šด์ „ ๋ชจ๋ธ ์‚ญ์ œ. + <b>Delete downloaded driving models</b> to free up storage space. + <b>๋‹ค์šด๋กœ๋“œํ•œ ์ฃผํ–‰ ๋ชจ๋ธ ์‚ญ์ œ</b>๋กœ ์ €์žฅ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜์„ธ์š”. Download Driving Models - ์šด์ „ ๋ชจ๋ธ ๋‹ค์šด๋กœ๋“œ + ์ฃผํ–‰ ๋ชจ๋ธ ๋‹ค์šด๋กœ๋“œ - Download driving models to the device. - ์šด์ „ ๋ชจ๋ธ์„ ๊ธฐ๊ธฐ์— ๋‹ค์šด๋กœ๋“œํ•˜์‹ญ์‹œ์˜ค. + <b>Manually download driving models</b> to the device. + <b>์ฃผํ–‰ ๋ชจ๋ธ์„ ์ˆ˜๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œ</b>ํ•˜์—ฌ ๊ธฐ๊ธฐ์— ์ €์žฅํ•˜์„ธ์š”. Model Randomizer - ๋ชจ๋ธ ๋žœ๋คํ™”๊ธฐ + ๋ชจ๋ธ ๋žœ๋คํ™”๊ธฐ - Driving models are chosen at random each drive and feedback prompts are used to find the model that best suits your needs. - ์šด์ „ ๋ชจ๋ธ์€ ๊ฐ ์ฃผํ–‰๋งˆ๋‹ค ๋ฌด์ž‘์œ„๋กœ ์„ ํƒ๋˜๋ฉฐ, ํ”ผ๋“œ๋ฐฑ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ท€ํ•˜์˜ ํ•„์š”์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋ชจ๋ธ์„ ์ฐพ์Šต๋‹ˆ๋‹ค. + <b>Select a random driving model each drive</b> and use feedback prompts at the end of the drive to help find the model that best suits you! + <b>๋งค ์ฃผํ–‰๋งˆ๋‹ค ์ž„์˜์˜ ์ฃผํ–‰ ๋ชจ๋ธ์„ ์„ ํƒ</b>ํ•˜๊ณ , ์ฃผํ–‰ ์ข…๋ฃŒ ์‹œ ์ œ๊ณต๋˜๋Š” ํ”ผ๋“œ๋ฐฑ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ์ž์‹ ์—๊ฒŒ ๊ฐ€์žฅ ๋งž๋Š” ๋ชจ๋ธ์„ ์ฐพ์•„๋ณด์„ธ์š”! Manage Model Blacklist - ๋ชจ๋ธ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ ๊ด€๋ฆฌ + ๋ชจ๋ธ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ ๊ด€๋ฆฌ - Add or remove models from the <b>Model Randomizer</b>'s blacklist list. - <b>๋ชจ๋ธ ๋žœ๋ค๋ผ์ด์ €</b>์˜ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ ๋ชฉ๋ก์—์„œ ๋ชจ๋ธ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. + <b>Add or remove driving models from the "Model Randomizer" blacklist.</b> + <b>"๋ชจ๋ธ ๋žœ๋ค๋ผ์ด์ €" ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์—์„œ ์ฃผํ–‰ ๋ชจ๋ธ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜์„ธ์š”.</b> Manage Model Ratings - ๋ชจ๋ธ ๋“ฑ๊ธ‰ ๊ด€๋ฆฌ + ๋ชจ๋ธ ํ‰์  ๊ด€๋ฆฌ - Reset or view the saved ratings for the driving models. - ์šด์ „ ๋ชจ๋ธ์— ๋Œ€ํ•œ ์ €์žฅ๋œ ํ‰๊ฐ€๋ฅผ ์žฌ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. + <b>View or reset saved model ratings</b> used by the "Model Randomizer". + <b>"Model Randomizer"์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ €์žฅ๋œ ๋ชจ๋ธ ํ‰๊ฐ€ ๋ณด๊ธฐ ๋˜๋Š” ์ดˆ๊ธฐํ™”</b> Select Driving Model - ์šด์ „ ๋ชจ๋ธ ์„ ํƒ + ์ฃผํ–‰ ๋ชจ๋ธ ์„ ํƒ - Select the active driving model. - ํ™œ์„ฑ ์ฃผํ–‰ ๋ชจ๋ธ์„ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค. + <b>Choose which driving model openpilot uses.</b> + <b>openpilot์ด ์‚ฌ์šฉํ•  ์ฃผํ–‰ ๋ชจ๋ธ์„ ์„ ํƒํ•˜์„ธ์š”.</b> + + + Update Model Manager + ๋ชจ๋ธ ๊ด€๋ฆฌ์ž ์—…๋ฐ์ดํŠธ + + + <b>Update the "Model Manager"</b> to support the latest models. + <b>"Model Manager"๋ฅผ ์—…๋ฐ์ดํŠธ</b>ํ•˜์—ฌ ์ตœ์‹  ๋ชจ๋ธ์„ ์ง€์›ํ•˜์„ธ์š”. DELETE - ์‚ญ์ œ + ์‚ญ์ œ DELETE ALL - ๋ชจ๋‘ ์‚ญ์ œ + ๋ชจ๋‘ ์‚ญ์ œ Select a driving model to delete - ์‚ญ์ œํ•  ์šด์ „ ๋ชจ๋ธ ์„ ํƒ + ์‚ญ์ œํ•  ์ฃผํ–‰ ๋ชจ๋ธ์„ ์„ ํƒํ•˜์„ธ์š” Are you sure you want to delete the "%1" model? - "%1" ๋ชจ๋ธ์„ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + ์ •๋ง๋กœ "%1" ๋ชจ๋ธ์„ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? Delete - ์‚ญ์ œ + ์‚ญ์ œ Are you sure you want to delete all of your downloaded driving models? - ๋‹ค์šด๋กœ๋“œํ•œ ๋ชจ๋“  ์šด์ „ ๋ชจ๋ธ์„ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + ๋‹ค์šด๋กœ๋“œํ•œ ์ฃผํ–‰ ๋ชจ๋ธ์„ ๋ชจ๋‘ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? DOWNLOAD - ๋‹ค์šด๋กœ๋“œ + ๋‹ค์šด๋กœ๋“œ DOWNLOAD ALL - ๋ชจ๋‘ ๋‹ค์šด๋กœ๋“œ + ๋ชจ๋‘ ๋‹ค์šด๋กœ๋“œ - Select a driving model to download - ์šด์ „ ๋ชจ๋ธ์„ ์„ ํƒํ•˜์—ฌ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”. + Tinygrad is out of date and must be updated before you can download new models. Update now? + Tinygrad์ด ์˜ค๋ž˜๋˜์–ด ์ƒˆ ๋ชจ๋ธ์„ ๋‹ค์šด๋กœ๋“œํ•˜๋ ค๋ฉด ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ์—…๋ฐ์ดํŠธํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + Updating Tinygrad will delete all existing Tinygrad-based models which will need to be re-downloaded. Proceed? + Tinygrad๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๊ธฐ์กด์˜ Tinygrad ๊ธฐ๋ฐ˜ ๋ชจ๋ธ์ด ๋ชจ๋‘ ์‚ญ์ œ๋˜๋ฉฐ ๋‹ค์‹œ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง„ํ–‰ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? CANCEL - ์ทจ์†Œ + ์ทจ์†Œ + + + Updating... + ์—…๋ฐ์ดํŠธ ์ค‘... + + + Select a driving model to download + ๋‹ค์šด๋กœ๋“œํ•  ์ฃผํ–‰ ๋ชจ๋ธ์„ ์„ ํƒํ•˜์„ธ์š” ADD - ์ถ”๊ฐ€ + ์ถ”๊ฐ€ REMOVE - ์ œ๊ฑฐ + ์ œ๊ฑฐ REMOVE ALL - ๋ชจ๋‘ ์ œ๊ฑฐ + ๋ชจ๋‘ ์ œ๊ฑฐ - There are no more models to blacklist! The only available model is "%1"! - ๋” ์ด์ƒ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•  ๋ชจ๋ธ์ด ์—†์Šต๋‹ˆ๋‹ค! ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ชจ๋ธ์€ "%1"์ž…๋‹ˆ๋‹ค! + There are no more driving models to blacklist. The only available model is "%1"! + ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•  ์ฃผํ–‰ ๋ชจ๋ธ์ด ๋” ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์œ ์ผํ•œ ๋ชจ๋ธ์€ "%1"์ž…๋‹ˆ๋‹ค! - Select a model to add to the blacklist - ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•  ๋ชจ๋ธ์„ ์„ ํƒํ•˜์„ธ์š” + Select a driving model to add to the blacklist + ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•  ์ฃผํ–‰ ๋ชจ๋ธ์„ ์„ ํƒํ•˜์„ธ์š” Are you sure you want to add the "%1" model to the blacklist? - "%1" ๋ชจ๋ธ์„ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + ์ •๋ง๋กœ "%1" ๋ชจ๋ธ์„ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? Add - ์ถ”๊ฐ€ + ์ถ”๊ฐ€ - Select a model to remove from the blacklist - ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์—์„œ ์ œ๊ฑฐํ•  ๋ชจ๋ธ์„ ์„ ํƒํ•˜์„ธ์š” + Select a driving model to remove from the blacklist + ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์—์„œ ์ œ๊ฑฐํ•  ์ฃผํ–‰ ๋ชจ๋ธ์„ ์„ ํƒํ•˜์„ธ์š” Are you sure you want to remove the "%1" model from the blacklist? - "%1" ๋ชจ๋ธ์„ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์—์„œ ์ œ๊ฑฐํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์—์„œ "%1" ๋ชจ๋ธ์„ ์ œ๊ฑฐํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? Remove - ์ œ๊ฑฐ + ์ œ๊ฑฐ - Are you sure you want to remove all of your blacklisted models? - ๋ชจ๋“  ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ ๋ชจ๋ธ์„ ์ œ๊ฑฐํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + Are you sure you want to remove all of your blacklisted driving models? + ๋ชจ๋“  ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€๋œ ์šด์ „ ๋ชจ๋ธ์„ ์ œ๊ฑฐํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? RESET - ๋ฆฌ์…‹ + ์žฌ์„ค์ • VIEW - ๋ณด๊ธฐ + ๋ณด๊ธฐ - Are you sure you want to reset all of your model drives and scores? - ๋ชจ๋“  ๋ชจ๋ธ ๋“œ๋ผ์ด๋ธŒ์™€ ์ ์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + Reset all model drives and ratings? This clears your drive history and collected feedback! + ๋ชจ๋“  ๋ชจ๋ธ ์ฃผํ–‰ ๊ธฐ๋ก๊ณผ ํ‰๊ฐ€๋ฅผ ์ดˆ๊ธฐํ™”ํ• ๊นŒ์š”? ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฃผํ–‰ ๊ธฐ๋ก๊ณผ ์ˆ˜์ง‘๋œ ํ”ผ๋“œ๋ฐฑ์ด ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค! SELECT - SELECT + ์„ ํƒ - Select a model - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC - ๋ชจ๋ธ ์„ ํƒ - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + UPDATE + ์—…๋ฐ์ดํŠธ - The "Model Randomizer" only works with downloaded models. Do you want to download all the driving models? - "๋ชจ๋ธ ๋žœ๋คํ™”๊ธฐ"๋Š” ๋‹ค์šด๋กœ๋“œ๋œ ๋ชจ๋ธ์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์šด์ „ ๋ชจ๋ธ์„ ๋‹ค์šด๋กœ๋“œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + Cancelling... + ์ทจ์†Œ ์ค‘... + + + Updating Tinygrad will delete existing Tinygrad-based driving models and need to be re-downloaded. Proceed? + Tinygrad๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๊ธฐ์กด Tinygrad ๊ธฐ๋ฐ˜ ์ฃผํ–‰ ๋ชจ๋ธ์ด ์‚ญ์ œ๋˜๋ฉฐ ๋‹ค์‹œ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง„ํ–‰ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + The "Model Randomizer" works only with downloaded models. Download all models now? + "Model Randomizer"๋Š” ๋‹ค์šด๋กœ๋“œ๋œ ๋ชจ๋ธ์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋ชจ๋“  ๋ชจ๋ธ์„ ๋‹ค์šด๋กœ๋“œํ• ๊นŒ์š”? Offline... - ์˜คํ”„๋ผ์ธ... + ์˜คํ”„๋ผ์ธโ€ฆ + + + Update available! + ์—…๋ฐ์ดํŠธ ๊ฐ€๋Šฅ! + + + Up to date! + ์ตœ์‹  ์ƒํƒœ์ž…๋‹ˆ๋‹ค! + + + Select a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + ๋ชจ๋ธ ์„ ํƒ โ€” ๐Ÿ—บ๏ธ = ๋‚ด๋น„๊ฒŒ์ด์…˜ | ๐Ÿ“ก = ๋ ˆ์ด๋” | ๐Ÿ‘€ = VOACC + + + + FrogPilotModelReview + + How would you rate that drive? + ๊ทธ ์šด์ „์€ ์–ด๋–ป๊ฒŒ ํ‰๊ฐ€ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + Model successfully blacklisted! + ๋ชจ๋ธ์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค! + + + Drive Rating Selection + ์ฃผํ–‰ ๋“ฑ๊ธ‰ ์„ ํƒ + + + Blacklist this model to remove it from rotation + ์ด ๋ชจ๋ธ์„ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•˜์—ฌ ๋กœํ…Œ์ด์…˜์—์„œ ์ œ๊ฑฐํ•˜์„ธ์š” + + + Blacklist Model + ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ ๋ชจ๋ธ + + + Model used during that drive: + ๊ทธ ์ฃผํ–‰ ์ค‘ ์‚ฌ์šฉ๋œ ๋ชจ๋ธ:" + + + Model Rank + ๋ชจ๋ธ ์ˆœ์œ„ + + + Model Rating + ๋ชจ๋ธ ํ‰๊ฐ€ + + + Model Drives + ๋ชจ๋ธ ์ฃผํ–‰ + + + Total Drives + ์ด ์ฃผํ–‰ ํšŸ์ˆ˜ + + + #%1 + #%1 + + + %1% + %1% + + + %1 %2 + %1 %2 + + + Drive + ์ฃผํ–‰ + + + Drives + ์ฃผํ–‰ ๊ธฐ๋ก + + + %1 Total %2 + %1 ํ•ฉ๊ณ„ %2 FrogPilotNavigationPanel - - Manage your %1. - %1์„ ๊ด€๋ฆฌํ•˜์„ธ์š”. - - - ADD - ์ถ”๊ฐ€ - - - Enter your %1 - %1์„ ์ž…๋ ฅํ•˜์„ธ์š” - - - Inputted key is invalid or too short! - ์ž…๋ ฅ๋œ ํ‚ค๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋„ˆ๋ฌด ์งง์Šต๋‹ˆ๋‹ค! - - - Are you sure you want to remove your %1? - %1์„(๋ฅผ) ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - REMOVE - ์ œ๊ฑฐ - Manage Your Settings At - ์„ค์ •์„ ๊ด€๋ฆฌํ•˜์„ธ์š”. - - - MapBox - MapBox - - - Amap - Amap - - - Google - ๊ตฌ๊ธ€ - - - Destination Search Provider - ๋ชฉ์ ์ง€ ๊ฒ€์ƒ‰ ์ œ๊ณต์ž - - - The search provider used for destination queries in "Navigate on Openpilot". Options include "MapBox" (recommended), "Amap", and "Google Maps". - "Navigate on Openpilot"์—์„œ ๋ชฉ์ ์ง€ ์ฟผ๋ฆฌ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒ€์ƒ‰ ์ œ๊ณต์ž. ์˜ต์…˜์—๋Š” "MapBox"(๊ถŒ์žฅ), "Amap", "Google Maps"๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. - - - Amap Key #1 - Amap Key #1 - - - Manage your Amap key. - Amap ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•˜์„ธ์š”. - - - Enter your Amap key - Amap ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š” - - - Are you sure you want to remove your Amap key? - Amap ํ‚ค๋ฅผ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Amap Key #2 - Amap Key #2 - - - Google Maps Key - Google Maps Key - - - Manage your Google Maps key. - Google Maps ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•˜์„ธ์š”. - - - Enter your Google Maps key - Google Maps ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š” - - - Are you sure you want to remove your Google Maps key? - Google Maps ํ‚ค๋ฅผ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Public Mapbox Key - ๊ณต์šฉ Mapbox ํ‚ค - - - Secret Mapbox Key - ๋น„๋ฐ€ Mapbox ํ‚ค - - - MapBox Setup Instructions - MapBox ์„ค์ • ์ง€์นจ - - - VIEW - ๋ณด๊ธฐ - - - View the instructions to set up "MapBox" for "Primeless Navigation". - "Primeless Navigation"์„ ์œ„ํ•œ "MapBox" ์„ค์ • ์ง€์นจ์„ ํ™•์ธํ•˜์„ธ์š”. - - - CANCEL - ์ทจ์†Œ - - - Speed Limit Filler - ์†๋„ ์ œํ•œ ํ•„๋Ÿฌ - - - Are you sure you want to cancel the speed limit update process? - ์†๋„ ์ œํ•œ ์—…๋ฐ์ดํŠธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ทจ์†Œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - You have reached the request limit. - -It will reset in %1 hours and %2 minutes. - ์š”์ฒญ ํ•œ๋„์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. - -%1์‹œ๊ฐ„ %2๋ถ„ ํ›„์— ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค. - - - This process will take awhile, so it's advised to start when you're done driving with a stable Wi-Fi connection. Do you wish to proceed? - ์ด ๊ณผ์ •์€ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆฌ๋ฏ€๋กœ ์šด์ „์„ ๋งˆ์น˜๊ณ  ์•ˆ์ •์ ์ธ Wi-Fi ์—ฐ๊ฒฐ์ด ์žˆ์„ ๋•Œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ณ„์†ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Manually Update Speed Limits - ์†๋„ ์ œํ•œ ์ˆ˜๋™ ์—…๋ฐ์ดํŠธ - - - Automatically collect missing or incorrect speed limits from your dashboard (if supported), <b>Mapbox</b>, and <b>Navigate-on-openpilot</b> while driving.<br><br>When the car is turned off and connected to Wi-Fi, your speed limit data is automatically processed into a compiled file formatted for the tool located at <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>You can grab the processed file from <b>The Pond</b> via the <b>Download Speed Limits</b> menu.<br><br>Want a more thorough walkthrough? Check out the <b>#speed-limit-filler</b> channel in the <b>FrogPilot Discord</b>! - ์ž๋™์œผ๋กœ ๋Œ€์‹œ๋ณด๋“œ(์ง€์›๋˜๋Š” ๊ฒฝ์šฐ), <b>Mapbox</b>, ๋ฐ <b>Navigate-on-openpilot</b>์—์„œ ๋ˆ„๋ฝ๋˜๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ์†๋„ ์ œํ•œ์„ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค.<br><br>์ฐจ๋Ÿ‰์ด ๊บผ์ง€๊ณ  Wi-Fi์— ์—ฐ๊ฒฐ๋˜๋ฉด ์†๋„ ์ œํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด <b>SpeedLimitFiller.frogpilot.download</b>์— ์œ„์น˜ํ•œ ๋„๊ตฌ์— ๋งž๊ฒŒ ํฌ๋งท๋œ ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค.<br><br>์ฒ˜๋ฆฌ๋œ ํŒŒ์ผ์€ <b>The Pond</b>์—์„œ <b>Download Speed Limits</b> ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•ด ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.<br><br>๋” ์ž์„ธํ•œ ์•ˆ๋‚ด๊ฐ€ ํ•„์š”ํ•˜์‹ ๊ฐ€์š”? <b>FrogPilot Discord</b>์˜ <b>#speed-limit-filler</b> ์ฑ„๋„์„ ํ™•์ธํ•ด ๋ณด์„ธ์š”! - - - Cancelled... - ์ทจ์†Œ๋จ... - - - Completed! - ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! + ์„ค์ • ๊ด€๋ฆฌ ์œ„์น˜ Offline... - ์˜คํ”„๋ผ์ธ... + ์˜คํ”„๋ผ์ธโ€ฆ + + + Mapbox + Mapbox + + + Amap + Amap + + + Destination Search Provider + ๋ชฉ์ ์ง€ ๊ฒ€์ƒ‰ ์ œ๊ณต์ž + + + <b>The search provider used for destination queries</b> in "Navigate on Openpilot". Options include Mapbox (recommended) and Amap. + <b>"Navigate on Openpilot"์˜ ๋ชฉ์ ์ง€ ๊ฒ€์ƒ‰์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒ€์ƒ‰ ์ œ๊ณต์ž</b>. ์˜ต์…˜์—๋Š” Mapbox(๊ถŒ์žฅ)์™€ Amap์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. + + + Amap Key #1 + Amap ํ‚ค #1 + + + Amap Key #2 + Amap ํ‚ค #2 + + + Public Mapbox Key + ๊ณต์šฉ Mapbox ํ‚ค + + + Secret Mapbox Key + ๋น„๊ณต๊ฐœ Mapbox ํ‚ค + + + Mapbox Setup Instructions + Mapbox ์„ค์ • ์ง€์นจ + + + VIEW + ๋ณด๊ธฐ + + + <b>Instructions on how to set up Mapbox</b> for "Primeless Navigation". + <b>Mapbox ์„ค์ • ๋ฐฉ๋ฒ• ์•ˆ๋‚ด</b> โ€” "Primeless Navigation"์šฉ. + + + CANCEL + ์ทจ์†Œ + + + Manually Update Speed Limits + ์ˆ˜๋™์œผ๋กœ ์†๋„ ์ œํ•œ ์—…๋ฐ์ดํŠธ + + + Speed Limit Filler + ์†๋„ ์ œํ•œ ์ฑ„์šฐ๊ธฐ + + + <b>Automatically collect missing or incorrect speed limits while you drive</b> using speeds limits sourced from your dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When you're parked and connected to Wi-Fi, FrogPilot will automatically processes this data into a file to be used with the tool located at "SpeedLimitFiller.frogpilot.download".<br><br>You can download this file from "The Pond" in the "Download Speed Limits" menu.<br><br>Need a step-by-step guide? Visit <b>#speed-limit-filler</b> in the FrogPilot Discord! + <b>์šด์ „ ์ค‘ ๋ˆ„๋ฝ๋˜์—ˆ๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ์ œํ•œ ์†๋„๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค</b>. (์ฐจ๋Ÿ‰ ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์ง€์›๋˜๋Š” ๊ฒฝ์šฐ) ๋Œ€์‹œ๋ณด๋“œ, Mapbox, ๊ทธ๋ฆฌ๊ณ  "Navigate on openpilot"์—์„œ ์ œ๊ณต๋˜๋Š” ์ œํ•œ ์†๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.<br><br>์ฃผ์ฐจํ•˜๊ณ  Wiโ€‘Fi์— ์—ฐ๊ฒฐ๋˜๋ฉด, FrogPilot์ด ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ "SpeedLimitFiller.frogpilot.download"์— ์žˆ๋Š” ๋„๊ตฌ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ํŒŒ์ผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.<br><br>์ด ํŒŒ์ผ์€ FrogPilot Discord์˜ "The Pond"์—์„œ "Download Speed Limits" ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•ด ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.<br><br>๋‹จ๊ณ„๋ณ„ ๊ฐ€์ด๋“œ๊ฐ€ ํ•„์š”ํ•˜์‹ ๊ฐ€์š”? FrogPilot Discord์˜ <b>#speed-limit-filler</b>๋ฅผ ๋ฐฉ๋ฌธํ•˜์„ธ์š”! + + + Cancel the speed-limit update? + ์†๋„ ์ œํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ์ทจ์†Œํ• ๊นŒ์š”? + + + Cancelled... + ์ทจ์†Œ๋จ... + + + You've hit today's request limit. + +It will reset in %1 hours and %2 minutes. + ์˜ค๋Š˜์˜ ์š”์ฒญ ํ•œ๋„์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. +%1์‹œ๊ฐ„ %2๋ถ„ ํ›„์— ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค. + + + This process takes a while. It's recommended to start when you're done driving and connected to stable Wi-Fi. Continue? + ์ด ๊ณผ์ •์€ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์šด์ „์„ ๋งˆ์น˜๊ณ  ์•ˆ์ •์ ์ธ Wiโ€‘Fi์— ์—ฐ๊ฒฐ๋œ ํ›„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ณ„์†ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + <b>Manage your "%1".</b> + <b>"%1"์„(๋ฅผ) ๊ด€๋ฆฌํ•˜์„ธ์š”.</b> + + + ADD + ์ถ”๊ฐ€ + + + Enter your %1 + %1์„(๋ฅผ) ์ž…๋ ฅํ•˜์„ธ์š” + + + Inputted key is invalid or too short! + ์ž…๋ ฅํ•œ ํ‚ค๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋„ˆ๋ฌด ์งง์Šต๋‹ˆ๋‹ค! + + + Remove your %1? + %1์„(๋ฅผ) ์ œ๊ฑฐํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + REMOVE + ์ œ๊ฑฐ + + + Completed! + ์™„๋ฃŒ๋จ! FrogPilotSettingsWindow MANAGE - ๊ด€๋ฆฌํ•˜๋‹ค + ๊ด€๋ฆฌ DRIVING MODEL - ์šด์ „ ๋ชจ๋ธ + ์ฃผํ–‰ ๋ชจ๋ธ GAS / BRAKE - ๊ฐ€์Šค / ๋ธŒ๋ ˆ์ดํฌ + ๊ฐ€์† / ๋ธŒ๋ ˆ์ดํฌ STEERING - ์กฐํ–ฅ + ์กฐํ–ฅ MAP DATA - ์ง€๋„ ๋ฐ์ดํ„ฐ + ์ง€๋„ ๋ฐ์ดํ„ฐ NAVIGATION - ํƒ์ƒ‰ + ๋‚ด๋น„๊ฒŒ์ด์…˜ DATA - DATA + ๋ฐ์ดํ„ฐ DEVICE CONTROLS - ์žฅ์น˜ ์ œ์–ด + ์žฅ์น˜ ์ œ์–ด UTILITIES - ์œ ํ‹ธ๋ฆฌํ‹ฐ + ์œ ํ‹ธ๋ฆฌํ‹ฐ APPEARANCE - ์™ธ๊ด€ + ๋ชจ์–‘ THEME - ํ…Œ๋งˆ + ํ…Œ๋งˆ VEHICLE SETTINGS - ์ฐจ๋Ÿ‰ ์„ค์ • + ์ฐจ๋Ÿ‰ ์„ค์ • WHEEL CONTROLS - ํœ  ์ปจํŠธ๋กค + ํ•ธ๋“ค ์ปจํŠธ๋กค Alerts and Sounds - ์•Œ๋ฆผ ๋ฐ ์†Œ๋ฆฌ + ๊ฒฝ๊ณ  ๋ฐ ์‚ฌ์šด๋“œ - FrogPilot settings for alert volumes and custom notifications to stay informed about important driving events. - FrogPilot ์„ค์ •์—์„œ ๊ฒฝ๊ณ  ๋ณผ๋ฅจ ๋ฐ ์‚ฌ์šฉ์ž ์ง€์ • ์•Œ๋ฆผ์„ ํ†ตํ•ด ์ค‘์š”ํ•œ ์šด์ „ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜์‹ญ์‹œ์˜ค. + <b>Adjust alert volumes and enable custom notifications.</b> + <b>๊ฒฝ๊ณ  ์Œ๋Ÿ‰์„ ์กฐ์ ˆํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ง€์ • ์•Œ๋ฆผ์„ ํ™œ์„ฑํ™”ํ•˜์„ธ์š”.</b> Driving Controls - ์šด์ „ ์ œ์–ด ์žฅ์น˜ + ์ฃผํ–‰ ์ œ์–ด - FrogPilot settings for acceleration, braking, and steering. - FrogPilot ์„ค์ •: ๊ฐ€์†, ์ œ๋™ ๋ฐ ์กฐํ–ฅ. + <b>Fine-tune custom FrogPilot acceleration, braking, and steering controls.</b> + <b>์‚ฌ์šฉ์ž ์ง€์ • FrogPilot ๊ฐ€์†, ์ œ๋™, ์กฐํ–ฅ ์ œ์–ด๋ฅผ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์กฐ์ •ํ•˜์„ธ์š”.</b> Navigation - ํƒ์ƒ‰ + ๋‚ด๋น„๊ฒŒ์ด์…˜ - Download map data for <b>Curve Speed Control</b>, <b>Speed Limit Controller</b>, and set up <b>Navigate on openpilot (NOO)</b>. - <b>Curve Speed Control</b>, <b>Speed Limit Controller</b>์— ๋Œ€ํ•œ ์ง€๋„ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  <b>Navigate on openpilot (NOO)</b>๋ฅผ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค. + <b>Download map data for the "Speed Limit Controller" and configure "Navigate on openpilot" (NOO).</b> + <b>"Speed Limit Controller"์šฉ ์ง€๋„ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  "Navigate on openpilot"(NOO)์„ ๊ตฌ์„ฑํ•˜์„ธ์š”.</b> - System Management - ์‹œ์Šคํ…œ ๊ด€๋ฆฌ + System Settings + ์‹œ์Šคํ…œ ์„ค์ • - Data storage management, debugging tools, device settings, screen behavior settings, system backups, and utilities to maintain, optimize, and troubleshoot FrogPilot. - ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ด€๋ฆฌ, ๋””๋ฒ„๊น… ๋„๊ตฌ, ์žฅ์น˜ ์„ค์ •, ํ™”๋ฉด ๋™์ž‘ ์„ค์ •, ์‹œ์Šคํ…œ ๋ฐฑ์—…, ๊ทธ๋ฆฌ๊ณ  FrogPilot์„ ์œ ์ง€, ์ตœ์ ํ™” ๋ฐ ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ. + <b>Manage backups, device settings, screen options, storage, and tools to keep FrogPilot running smoothly.</b> + <b>FrogPilot์„ ์›ํ™œํ•˜๊ฒŒ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฑ์—…, ๊ธฐ๊ธฐ ์„ค์ •, ํ™”๋ฉด ์˜ต์…˜, ์ €์žฅ์†Œ, ๋„๊ตฌ๋ฅผ ๊ด€๋ฆฌํ•˜์„ธ์š”.</b> Theme and Appearance - ํ…Œ๋งˆ ๋ฐ ์™ธ๊ด€ + ํ…Œ๋งˆ ๋ฐ ์™ธ๊ด€ - FrogPilot settings for the current theme, driving-screen, and the overall user interface. - FrogPilot์˜ ํ˜„์žฌ ํ…Œ๋งˆ, ์ฃผํ–‰ ํ™”๋ฉด ๋ฐ ์ „์ฒด ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์„ค์ •. + <b>Customize the look of the driving screen and interface, including themes!</b> + <b>ํ…Œ๋งˆ๋ฅผ ํฌํ•จํ•ด ์ฃผํ–‰ ํ™”๋ฉด๊ณผ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชจ์Šต์„ ์‚ฌ์šฉ์ž ์ง€์ •ํ•˜์„ธ์š”!</b> - Vehicle Controls - ์ฐจ๋Ÿ‰ ์ œ์–ด + Vehicle Settings + ์ฐจ๋Ÿ‰ ์„ค์ • - Options unique to supported manufacturers and vehicle fingerprint management. - ์ง€์›๋˜๋Š” ์ œ์กฐ์—…์ฒด ๋ฐ ์ฐจ๋Ÿ‰ ์ง€๋ฌธ ๊ด€๋ฆฌ์— ๊ณ ์œ ํ•œ ์˜ต์…˜. + <b>Configure car-specific options and steering wheel button mappings.</b> + <b>์ฐจ๋Ÿ‰๋ณ„ ์˜ต์…˜๊ณผ ์Šคํ‹ฐ์–ด๋ง ํœ  ๋ฒ„ํŠผ ๋งคํ•‘์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</b> Minimal - ์ตœ์†Œํ•œ์˜ + ์ตœ์†Œ Standard - ํ‘œ์ค€ + ํ‘œ์ค€ Advanced - ๊ณ ๊ธ‰ + ๊ณ ๊ธ‰ Developer - ๊ฐœ๋ฐœ์ž + ๊ฐœ๋ฐœ์ž Tuning Level - ์กฐ์ • ์ˆ˜์ค€ + ํŠœ๋‹ ์ˆ˜์ค€ - The visibility and complexity of tuning settings. Lower levels simplify the interface by hiding advanced options, while higher levels unlock detailed customization. + Choose your tuning level. Lower levels keep it simple; higher levels unlock more toggles for finer control. Minimal - Ideal for those who prefer simplicity or ease of use Standard - Recommended for most users for a balanced experience -Advanced - Unlocks fine-tuning controls for more experienced users -Developer - Unlocks highly customizable settings for seasoned enthusiasts - Translation B +Advanced - Fine-tuning for experienced users +Developer - Highly customizable settings for seasoned enthusiasts + ํŠœ๋‹ ์ˆ˜์ค€์„ ์„ ํƒํ•˜์„ธ์š”. ๋‚ฎ์€ ์ˆ˜์ค€์€ ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ณ , ๋†’์€ ์ˆ˜์ค€์€ ๋” ์„ธ๋ฐ€ํ•œ ์ œ์–ด๋ฅผ ์œ„ํ•œ ํ† ๊ธ€์„ ๋” ๋งŽ์ด ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. + +๋ฏธ๋‹ˆ๋ฉ€ - ๋‹จ์ˆœํ•จ์ด๋‚˜ ์‚ฌ์šฉ ํŽธ์˜์„ฑ์„ ์„ ํ˜ธํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ํ•ฉ +์Šคํƒ ๋‹ค๋“œ - ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒ์žฅ๋˜๋Š” ๊ท ํ˜• ์žกํžŒ ๊ฒฝํ—˜ +๊ณ ๊ธ‰ - ์ˆ™๋ จ๋œ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๋ฏธ์„ธ ์กฐ์ • +๊ฐœ๋ฐœ์ž - ์ˆ™๋ จ๋œ ์• ํ˜ธ๊ฐ€๋ฅผ ์œ„ํ•œ ๊ณ ๋„์˜ ๋งž์ถค ์„ค์ • - WARNING: This unlocks some potentially dangerous settings that can DRASTICALLY alter your driving experience! - ๊ฒฝ๊ณ : ์ด๋Š” ์ž ์žฌ์ ์œผ๋กœ ์œ„ํ—˜ํ•œ ์„ค์ •์„ ํ•ด์ œํ•˜์—ฌ ์šด์ „ ๊ฒฝํ—˜์„ ๊ทน์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! + WARNING: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do! + ๊ฒฝ๊ณ : ์ด ์„ค์ •์€ ์œ„ํ—˜ํ•˜๋ฉฐ openpilot์˜ ์ฃผํ–‰ ๋ฐฉ์‹์„ ํฌ๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์™„์ „ํžˆ ์ดํ•ดํ•œ ๊ฒฝ์šฐ์—๋งŒ ๋ณ€๊ฒฝํ•˜์„ธ์š”! + + + All toggle descriptions are currently expanded. You can tap a toggle's name to open or close its description at any time! + ๋ชจ๋“  ํ† ๊ธ€ ์„ค๋ช…์ด ํ˜„์žฌ ํŽผ์ณ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ธ์ œ๋“ ์ง€ ํ† ๊ธ€ ์ด๋ฆ„์„ ํƒญํ•˜์—ฌ ์„ค๋ช…์„ ์—ด๊ฑฐ๋‚˜ ๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! FrogPilotSoundsPanel - Alert Volume Control - ์•Œ๋ฆผ ๋ณผ๋ฅจ ์กฐ์ ˆ + Alert Volume Controller + ๊ฒฝ๊ณ  ์Œ๋Ÿ‰ ์ปจํŠธ๋กค๋Ÿฌ - Adjust the volume for each alert in openpilot. - openpilot์—์„œ ๊ฐ ์•Œ๋ฆผ์˜ ๋ณผ๋ฅจ์„ ์กฐ์ •ํ•˜์„ธ์š”. + <b>Set how loud each type of openpilot alert is</b> to keep routine prompts from becoming distracting. + <b>์ผ์ƒ์ ์ธ ์•Œ๋ฆผ์ด ๋ฐฉํ•ด๋˜์ง€ ์•Š๋„๋ก</b> ๊ฐ ์œ ํ˜•์˜ openpilot ๊ฒฝ๊ณ  ์Œ๋Ÿ‰์„ ์„ค์ •ํ•˜์„ธ์š”. Disengage Volume - ๋ณผ๋ฅจ ํ•ด์ œ + ํ•ด์ œ ์Œ๋Ÿ‰ - Adjust the volume for alerts like:<br><br><b>Adaptive Cruise Disabled</b><br><b>Brake Pedal Pressed</b><br><b>Parking Brake Engaged</b><br><b>Speed too Low</b> - ๊ฒฝ๊ณ ์˜ ๋ณผ๋ฅจ ์กฐ์ •:<br><br><b>์ ์‘ํ˜• ํฌ๋ฃจ์ฆˆ ๋น„ํ™œ์„ฑํ™”</b><br><b>๋ธŒ๋ ˆ์ดํฌ ํŽ˜๋‹ฌ ๋ˆŒ๋ฆผ</b><br><b>์ฃผ์ฐจ ๋ธŒ๋ ˆ์ดํฌ ์ž‘๋™</b><br><b>์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋‚ฎ์Œ</b> + <b>Set the volume for alerts when openpilot disengages.</b><br><br>Examples include: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". + <b>openpilot์ด ํ•ด์ œ๋  ๋•Œ ๊ฒฝ๊ณ  ์Œ๋Ÿ‰์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</b><br><br>์˜ˆ์‹œ: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". Engage Volume - ๋ณผ๋ฅจ ํ™œ์„ฑํ™” + ์ฐธ์—ฌ ๋ณผ๋ฅจ - Adjust the volume for alerts like:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> - ๊ฒฝ๊ณ ์˜ ๋ณผ๋ฅจ์„ ์กฐ์ •ํ•˜์‹ญ์‹œ์˜ค:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> + <b>Set the volume for the chime when openpilot engages</b>, such as after pressing the "RESUME" or "SET" steering wheel buttons. + <b>openpilot์ด ์ž‘๋™ํ•  ๋•Œ์˜ ์ฐจ์ž„ ์Œ๋Ÿ‰์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค</b>. ์˜ˆ: ์Šคํ‹ฐ์–ด๋ง ํœ ์˜ "RESUME" ๋˜๋Š” "SET" ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ ํ›„. Prompt Volume - ํ”„๋กฌํ”„ํŠธ ๋ณผ๋ฅจ + ํ”„๋กฌํ”„ํŠธ ๋ณผ๋ฅจ - Adjust the volume for alerts like:<br><br><b>Car Detected in Blindspot</b><br><b>Steer Unavailable Below "X"</b><br><b>Speed too Low</b><br><b>Take Control, Turn Exceeds Steering Limit</b> - ๊ฒฝ๊ณ ์˜ ๋ณผ๋ฅจ์„ ์กฐ์ •ํ•˜์‹ญ์‹œ์˜ค:<br><br><b>์‚ฌ๊ฐ์ง€๋Œ€์— ์ฐจ๋Ÿ‰ ๊ฐ์ง€</b><br><b>"X" ์ดํ•˜์—์„œ๋Š” ์กฐํ–ฅ ๋ถˆ๊ฐ€</b><br><b>์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋‚ฎ์Œ</b><br><b>์กฐํ–ฅ ํ•œ๊ณ„๋ฅผ ์ดˆ๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค. ์ œ์–ด๋ฅผ ์ธ์ˆ˜ํ•˜์‹ญ์‹œ์˜ค</b> + <b>Set the volume for prompts that need attention.</b><br><br>Examples include: "Car Detected in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". + <b>์ฃผ์˜๊ฐ€ ํ•„์š”ํ•œ ์•Œ๋ฆผ์˜ ๋ณผ๋ฅจ์„ ์„ค์ •ํ•˜์„ธ์š”.</b><br><br>์˜ˆ: "์‚ฌ๊ฐ์ง€๋Œ€์—์„œ ์ฐจ๋Ÿ‰ ๊ฐ์ง€", "์กฐํ–ฅ ์ผ์‹œ์  ์‚ฌ์šฉ ๋ถˆ๊ฐ€", "ํšŒ์ „์ด ์กฐํ–ฅ ํ•œ๊ณ„๋ฅผ ์ดˆ๊ณผํ•จ". Prompt Distracted Volume - ํ”„๋กฌํ”„ํŠธ ๋ถ„์‚ฐ ๋ณผ๋ฅจ + ํ”„๋กฌํ”„ํŠธ ์‚ฐ๋งŒ ๋ณผ๋ฅจ - Adjust the volume for alerts like:<br><br><b>Pay Attention, Driver Distracted</b><br><b>Touch Steering Wheel, Driver Unresponsive</b> - Translation B + <b>Set the volume for prompts when openpilot detects driver distraction or unresponsiveness.</b><br><br>Examples include: "Pay Attention", "Touch Steering Wheel". + <b>openpilot์ด ์šด์ „์ž ์ฃผ์˜ ์‚ฐ๋งŒ ๋˜๋Š” ๋ฌด๋ฐ˜์‘์„ ๊ฐ์ง€ํ–ˆ์„ ๋•Œ์˜ ํ”„๋กฌํ”„ํŠธ ๋ณผ๋ฅจ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</b><br><br>์˜ˆ: "์ฃผ์˜ํ•˜์„ธ์š”", "ํ•ธ๋“ค์„ ํ„ฐ์น˜ํ•˜์„ธ์š”". Refuse Volume - ๊ฑฐ๋ถ€๋Ÿ‰ + ๊ฑฐ๋ถ€ ๋ณผ๋ฅจ - Adjust the volume for alerts like:<br><br><b>openpilot Unavailable</b> - ๊ฒฝ๊ณ ์˜ ๋ณผ๋ฅจ์„ ์กฐ์ •ํ•˜์‹ญ์‹œ์˜ค:<br><br><b>openpilot ์‚ฌ์šฉ ๋ถˆ๊ฐ€</b> + <b>Set the volume for alerts when openpilot refuses to engage.</b><br><br>Examples include: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". + <b>openpilot์ด ์ž‘๋™์„ ๊ฑฐ๋ถ€ํ•  ๋•Œ ์•Œ๋ฆผ ๋ณผ๋ฅจ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</b><br><br>์˜ˆ: "๋ธŒ๋ ˆ์ดํฌ ํ™€๋“œ ํ™œ์„ฑํ™”", "๋„์–ด ์—ด๋ฆผ", "์‹œํŠธ๋ฒจํŠธ ํ•ด์ œ". Warning Soft Volume - ์†Œํ”„ํŠธ ๋ณผ๋ฅจ ๊ฒฝ๊ณ  + ๊ฒฝ๊ณ  ์†Œํ”„ํŠธ ๋ณผ๋ฅจ - Adjust the volume for alerts like:<br><br><b>BRAKE!, Risk of Collision</b><br><b>TAKE CONTROL IMMEDIATELY</b> - ์•Œ๋ฆผ์˜ ๋ณผ๋ฅจ์„ ์กฐ์ •ํ•˜์‹ญ์‹œ์˜ค:<br><br><b>๋ธŒ๋ ˆ์ดํฌ!, ์ถฉ๋Œ ์œ„ํ—˜</b><br><b>์ฆ‰์‹œ ์ œ์–ดํ•˜์‹ญ์‹œ์˜ค</b> + <b>Set the volume for softer warnings about potential risks.</b><br><br>Examples include: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". + <b>์ž ์žฌ์  ์œ„ํ—˜์— ๋Œ€ํ•œ ์•ฝํ•œ ๊ฒฝ๊ณ ์˜ ๋ณผ๋ฅจ์„ ์„ค์ •ํ•˜์„ธ์š”.</b><br><br>์˜ˆ์‹œ: "๋ธŒ๋ ˆ์ดํฌ! ์ถฉ๋Œ ์œ„ํ—˜", "์กฐํ–ฅ ์ผ์‹œ์ ์œผ๋กœ ์‚ฌ์šฉ ๋ถˆ๊ฐ€". Warning Immediate Volume - ๊ฒฝ๊ณ  ์ฆ‰์‹œ ๋ณผ๋ฅจ + ๊ฒฝ๊ณ  ์ฆ‰์‹œ ๋ณผ๋ฅจ - Adjust the volume for alerts like:<br><br><b>DISENGAGE IMMEDIATELY, Driver Distracted</b><br><b>DISENGAGE IMMEDIATELY, Driver Unresponsive</b> - ๊ฒฝ๊ณ ์˜ ๋ณผ๋ฅจ์„ ์กฐ์ •ํ•˜์‹ญ์‹œ์˜ค:<br><br><b>์ฆ‰์‹œ ํ•ด์ œ, ์šด์ „์ž ์ฃผ์˜ ์‚ฐ๋งŒ</b><br><b>์ฆ‰์‹œ ํ•ด์ œ, ์šด์ „์ž ๋ฐ˜์‘ ์—†์Œ</b> + <b>Set the volume for the loudest warnings that require urgent attention.</b><br><br>Examples include: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". + <b>๊ธด๊ธ‰ํ•œ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•œ ๊ฐ€์žฅ ํฐ ๊ฒฝ๊ณ ์˜ ๋ณผ๋ฅจ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</b><br><br>์˜ˆ: "์ฆ‰์‹œ ํ•ด์ œ โ€” ์šด์ „์ž ์ฃผ์˜ ์‚ฐ๋งŒ", "์ฆ‰์‹œ ํ•ด์ œ โ€” ์šด์ „์ž ๋ฌด๋ฐ˜์‘" FrogPilot Alerts - FrogPilot ๊ฒฝ๊ณ  + FrogPilot ๊ฒฝ๊ณ  - FrogPilot alerts for various events in openpilot. - FrogPilot์€ openpilot์˜ ๋‹ค์–‘ํ•œ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์•Œ๋ฆผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. + <b>Optional FrogPilot alerts</b> that highlight driving events in a more noticeable way. + <b>์„ ํƒ์  FrogPilot ๊ฒฝ๊ณ </b>๋กœ ์šด์ „ ์ด๋ฒคํŠธ๋ฅผ ๋” ๋ˆˆ์— ๋„๊ฒŒ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. - Goat Scream Steering Saturated Alert - ์—ผ์†Œ ๋น„๋ช… ์กฐํ–ฅ ํฌํ™” ๊ฒฝ๊ณ  + Goat Scream + ์—ผ์†Œ ๋น„๋ช… - The infamous "Goat Scream" that has brought both joy and anger to FrogPilot users all around the world! - ์•…๋ช… ๋†’์€ "์—ผ์†Œ ๋น„๋ช…"์€ ์ „ ์„ธ๊ณ„ FrogPilot ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ๊ธฐ์จ๊ณผ ๋ถ„๋…ธ๋ฅผ ๋™์‹œ์— ์•ˆ๊ฒจ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค! + <b>Play the infamous "Goat Scream" when the steering controller reaches its limit.</b> Based on the "Turn Exceeds Steering Limit" event. + <b>์กฐํ–ฅ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํ•œ๊ณ„์— ๋„๋‹ฌํ•˜๋ฉด ์•…๋ช… ๋†’์€ "Goat Scream"์„ ์žฌ์ƒํ•ฉ๋‹ˆ๋‹ค.</b> "Turn Exceeds Steering Limit" ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Green Light Alert - ๋…น์ƒ‰ ๋ถˆ๋น› ๊ฒฝ๊ณ  + ์ดˆ๋ก๋ถˆ ์•Œ๋ฆผ - Get an alert when the traffic light changes from red to green. - ์‹ ํ˜ธ๋“ฑ์ด ๋นจ๊ฐ„์ƒ‰์—์„œ ๋…น์ƒ‰์œผ๋กœ ๋ฐ”๋€” ๋•Œ ์•Œ๋ฆผ์„ ๋ฐ›์œผ์„ธ์š”. + <b>Play an alert when the model predicts a red light has turned green.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights. This alert is based on end-to-end model predictions from camera input and may trigger even when the light has not changed.</i> + <b>๋ชจ๋ธ์ด ๋นจ๊ฐ„๋ถˆ์ด ์ดˆ๋ก๋ถˆ๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค๊ณ  ์˜ˆ์ธกํ•˜๋ฉด ๊ฒฝ๊ณ ์Œ์„ ์žฌ์ƒํ•ฉ๋‹ˆ๋‹ค.</b><br><br><i><b>๋ฉด์ฑ… ์กฐํ•ญ</b>: openpilot์€ ์‹ ํ˜ธ๋“ฑ์„ ๋ช…์‹œ์ ์œผ๋กœ ๊ฐ์ง€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ๊ณ ๋Š” ์นด๋ฉ”๋ผ ์ž…๋ ฅ์— ๊ธฐ๋ฐ˜ํ•œ ์ข…๋‹จ๊ฐ„ ๋ชจ๋ธ ์˜ˆ์ธก์— ๋”ฐ๋ผ ๋ฐœ์ƒํ•˜๋ฉฐ, ์‹ ํ˜ธ๊ฐ€ ์‹ค์ œ๋กœ ๋ฐ”๋€Œ์ง€ ์•Š์•˜๋”๋ผ๋„ ์šธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.</i> Lead Departing Alert - ์ถœ๋ฐœ ๊ฒฝ๊ณ  ์•Œ๋ฆผ + ์„ ํ–‰ ์ฐจ๋Ÿ‰ ์ดํƒˆ ๊ฒฝ๊ณ  - Get an alert when the lead vehicle begins to depart from a standstill. - ์„ ๋‘ ์ฐจ๋Ÿ‰์ด ์ •์ง€ ์ƒํƒœ์—์„œ ์ถœ๋ฐœํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ ์•Œ๋ฆผ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. + <b>Play an alert when the lead vehicle departs from a stop.</b> + <b>์„ ๋‘ ์ฐจ๋Ÿ‰์ด ์ •์ง€ ์ƒํƒœ์—์„œ ์ถœ๋ฐœํ•  ๋•Œ ๊ฒฝ๊ณ ์Œ์„ ์žฌ์ƒํ•ฉ๋‹ˆ๋‹ค.</b> Loud "Car Detected in Blindspot" Alert - "์‚ฌ๊ฐ์ง€๋Œ€์—์„œ ์ฐจ๋Ÿ‰ ๊ฐ์ง€" ๊ฒฝ๊ณ  + ํฐ "์‚ฌ๊ฐ์ง€๋Œ€์— ์ฐจ๋Ÿ‰ ๊ฐ์ง€" ๊ฒฝ๊ณ  - A louder alert for when a vehicle is detected in the blindspot when attempting to change lanes. - ์ฐจ์„ ์„ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์‚ฌ๊ฐ์ง€๋Œ€์—์„œ ์ฐจ๋Ÿ‰์ด ๊ฐ์ง€๋˜๋ฉด ๋” ํฐ ๊ฒฝ๊ณ ์Œ. + <b>Play a louder alert if a vehicle is in the blind spot when attempting to change lanes.</b> Based on the "Car Detected in Blindspot" event. + <b>์ฐจ์„  ๋ณ€๊ฒฝ์„ ์‹œ๋„ํ•  ๋•Œ ์‚ฌ๊ฐ์ง€๋Œ€์— ์ฐจ๋Ÿ‰์ด ์žˆ์œผ๋ฉด ๋” ํฐ ๊ฒฝ๊ณ ์Œ์„ ์žฌ์ƒํ•ฉ๋‹ˆ๋‹ค.</b> "์‚ฌ๊ฐ์ง€๋Œ€ ์ฐจ๋Ÿ‰ ๊ฐ์ง€" ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Speed Limit Changed Alert - ์†๋„ ์ œํ•œ ๋ณ€๊ฒฝ ์•Œ๋ฆผ + ์ œํ•œ ์†๋„ ๋ณ€๊ฒฝ ์•Œ๋ฆผ - Get an alert when the speed limit changes. - ์†๋„ ์ œํ•œ์ด ๋ณ€๊ฒฝ๋  ๋•Œ ์•Œ๋ฆผ์„ ๋ฐ›์œผ์„ธ์š”. + <b>Play an alert when the posted speed limit changes.</b> + <b>๊ฒŒ์‹œ๋œ ์ œํ•œ ์†๋„๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ๊ฒฝ๊ณ ์Œ์„ ์žฌ์ƒํ•ฉ๋‹ˆ๋‹ค.</b> Muted - ์Œ์†Œ๊ฑฐ๋จ + ์Œ์†Œ๊ฑฐ๋จ Auto - ์ž๋™ + ์ž๋™ Test - ํ…Œ์ŠคํŠธ + ํ…Œ์ŠคํŠธ FrogPilotThemesPanel - Custom Theme - ๋งž์ถค ํ…Œ๋งˆ + Custom Themes + ์‚ฌ์šฉ์ž ์ง€์ • ํ…Œ๋งˆ - The overall appearance of openpilot. - openpilot์˜ ์ „๋ฐ˜์ ์ธ ์™ธ๊ด€. + <b>The overall look and feel of openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot์˜ ์ „๋ฐ˜์ ์ธ ๋ชจ์–‘๊ณผ ๋А๋‚Œ.</b> "The Pond"์˜ "Theme Maker"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‹ ๋งŒ์˜ ํ…Œ๋งˆ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ณต์œ ํ•˜์„ธ์š”! Color Scheme - ์ƒ‰์ƒ ๊ตฌ์„ฑํ‘œ + ์ƒ‰ ๊ตฌ์„ฑ - openpilot's color scheme. - -Want to submit your own color scheme? Share it in the "custom-themes" channel on the FrogPilot Discord! - openpilot์˜ ์ƒ‰์ƒ ํ…Œ๋งˆ. - -์ž์‹ ๋งŒ์˜ ์ƒ‰์ƒ ํ…Œ๋งˆ๋ฅผ ์ œ์ถœํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? FrogPilot Discord์˜ "custom-themes" ์ฑ„๋„์— ๊ณต์œ ํ•˜์„ธ์š”! + <b>The color scheme used throughout openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot ์ „๋ฐ˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ƒ‰ ๊ตฌ์„ฑํ‘œ์ž…๋‹ˆ๋‹ค.</b> "The Pond"์˜ "Theme Maker"๋ฅผ ์‚ฌ์šฉํ•ด ๋‚˜๋งŒ์˜ ํ…Œ๋งˆ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ณต์œ ํ•˜์„ธ์š”! + + + Distance Button + ์ฐจ๊ฐ„๊ฑฐ๋ฆฌ ๋ฒ„ํŠผ + + + <b>The distance button icons shown on the driving screen.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>์ฃผํ–‰ ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š” ๊ฑฐ๋ฆฌ ๋ฒ„ํŠผ ์•„์ด์ฝ˜.</b> "The Pond"์˜ "Theme Maker"๋ฅผ ์‚ฌ์šฉํ•ด ์ž์‹ ๋งŒ์˜ ํ…Œ๋งˆ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ณต์œ ํ•˜์„ธ์š”! Icon Pack - ์•„์ด์ฝ˜ ํŒฉ + ์•„์ด์ฝ˜ ํŒฉ - openpilot's icon pack. - -Want to submit your own icons? Share them in the "custom-themes" channel on the FrogPilot Discord! - ์ž์‹ ๋งŒ์˜ ์•„์ด์ฝ˜์„ ์ œ์ถœํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? FrogPilot Discord์˜ "custom-themes" ์ฑ„๋„์—์„œ ๊ณต์œ ํ•˜์„ธ์š”! + <b>The icon style used across openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot ์ „๋ฐ˜์— ์‚ฌ์šฉ๋˜๋Š” ์•„์ด์ฝ˜ ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค.</b> "The Pond"์˜ "Theme Maker"๋ฅผ ์‚ฌ์šฉํ•ด ์ง์ ‘ ํ…Œ๋งˆ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ณต์œ ํ•˜์„ธ์š”! Sound Pack - ์‚ฌ์šด๋“œ ํŒฉ + ์‚ฌ์šด๋“œ ํŒฉ - openpilot's sound effects. - -Want to submit your own sounds? Share them in the "custom-themes" channel on the FrogPilot Discord! - openpilot์˜ ์‚ฌ์šด๋“œ ํšจ๊ณผ. - -์ž์‹ ๋งŒ์˜ ์‚ฌ์šด๋“œ๋ฅผ ์ œ์ถœํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? FrogPilot Discord์˜ "custom-themes" ์ฑ„๋„์—์„œ ๊ณต์œ ํ•˜์„ธ์š”! + <b>The sound pack used by openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šด๋“œ ํŒฉ์ž…๋‹ˆ๋‹ค.</b> "The Pond"์˜ "Theme Maker"๋ฅผ ์‚ฌ์šฉํ•ด ์ง์ ‘ ํ…Œ๋งˆ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ณต์œ ํ•˜์„ธ์š”! Steering Wheel - ์šด์ „๋Œ€ + ์Šคํ‹ฐ์–ด๋ง ํœ  - The steering wheel icon in the top right of the driving screen. - ์šด์ „ ํ™”๋ฉด์˜ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์— ์žˆ๋Š” ํ•ธ๋“ค ์•„์ด์ฝ˜. - - - Themed turn signal animations. - -Want to submit your own animations? Share them in the "custom-themes" channel on the FrogPilot Discord! - ํ…Œ๋งˆ๊ฐ€ ์žˆ๋Š” ๋ฐฉํ–ฅ ์ง€์‹œ๋“ฑ ์• ๋‹ˆ๋ฉ”์ด์…˜. - -์ž์‹ ๋งŒ์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ œ์ถœํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? FrogPilot Discord์˜ "custom-themes" ์ฑ„๋„์—์„œ ๊ณต์œ ํ•˜์„ธ์š”! - - - Download Status - ๋‹ค์šด๋กœ๋“œ ์ƒํƒœ - - - Holiday Themes - ํ™€๋ฆฌ๋ฐ์ด ํ…Œ๋งˆ - - - Holiday-based visual themes for openpilot. Minor holidays last one day; major holidays (Christmas, Easter, Halloween, etc.) continue all week. - ์˜คํ”ˆํŒŒ์ผ๋Ÿฟ์„ ์œ„ํ•œ ํœด์ผ ๊ธฐ๋ฐ˜ ์‹œ๊ฐ ํ…Œ๋งˆ. ์†Œ๊ทœ๋ชจ ํœด์ผ์€ ํ•˜๋ฃจ ๋™์•ˆ ์ง€์†๋˜๋ฉฐ, ์ฃผ์š” ํœด์ผ(ํฌ๋ฆฌ์Šค๋งˆ์Šค, ๋ถ€ํ™œ์ ˆ, ํ• ๋กœ์œˆ ๋“ฑ)์€ ์ผ์ฃผ์ผ ๋™์•ˆ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค. - - - Rainbow Path - ๋ ˆ์ธ๋ณด์šฐ ํŒจ์Šค - - - The path on the driving screen turns into a Mario Kart inspired "Rainbow Path". - ์šด์ „ ํ™”๋ฉด์˜ ๊ฒฝ๋กœ๊ฐ€ ๋งˆ๋ฆฌ์˜ค ์นดํŠธ์—์„œ ์˜๊ฐ์„ ๋ฐ›์€ "๋ฌด์ง€๊ฐœ ๊ฒฝ๋กœ"๋กœ ๋ณ€ํ•ฉ๋‹ˆ๋‹ค. - - - Random Events - ๋ฌด์ž‘์œ„ ์ด๋ฒคํŠธ - - - Random cosmetic events that trigger after certain driving conditions. These events are purely for fun and don't affect driving controls! - ํŠน์ • ์šด์ „ ์กฐ๊ฑด ํ›„์— ๋ฐœ์ƒํ•˜๋Š” ๋ฌด์ž‘์œ„ ํ™”์žฅ ์ด๋ฒคํŠธ. ์ด ์ด๋ฒคํŠธ๋Š” ์ˆœ์ „ํžˆ ์žฌ๋ฏธ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ด๋ฉฐ ์šด์ „ ์ œ์–ด์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! - - - Random Themes - ๋ฌด์ž‘์œ„ ํ…Œ๋งˆ - - - Cycles through your downloaded themes randomly on each boot, giving every theme in your collection a chance to shine! - ๋ถ€ํŒ…ํ•  ๋•Œ๋งˆ๋‹ค ๋‹ค์šด๋กœ๋“œํ•œ ํ…Œ๋งˆ๋ฅผ ๋ฌด์ž‘์œ„๋กœ ์ˆœํ™˜ํ•˜์—ฌ ์ปฌ๋ ‰์…˜์˜ ๋ชจ๋“  ํ…Œ๋งˆ๊ฐ€ ๋น›๋‚  ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค! - - - Startup Alert - ์Šคํƒ€ํŠธ์—… ์•Œ๋ฆผ - - - The text of the "Startup Alert" message that appears at the beginning of a drive. - ๋“œ๋ผ์ด๋ธŒ ์‹œ์ž‘ ์‹œ ๋‚˜ํƒ€๋‚˜๋Š” "์‹œ์ž‘ ๊ฒฝ๊ณ " ๋ฉ”์‹œ์ง€์˜ ํ…์ŠคํŠธ. - - - DELETE - ์‚ญ์ œ - - - DOWNLOAD - ๋‹ค์šด๋กœ๋“œ - - - SELECT - SELECT - - - Select a color scheme to delete - ์‚ญ์ œํ•  ์ƒ‰์ƒ ์Šคํ‚ค๋งˆ ์„ ํƒ - - - Are you sure you want to delete the "%1" color scheme? - "%1" ์ƒ‰์ƒ ํ…Œ๋งˆ๋ฅผ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Delete - ์‚ญ์ œ - - - Select a color scheme to download - ๋‹ค์šด๋กœ๋“œํ•  ์ƒ‰์ƒ ํ…Œ๋งˆ ์„ ํƒ - - - Select a color scheme - ์ƒ‰์ƒ ์Šคํ‚ค๋งˆ ์„ ํƒ - - - Select a distance icon pack to delete - ์‚ญ์ œํ•  ๊ฑฐ๋ฆฌ ์•„์ด์ฝ˜ ํŒฉ ์„ ํƒ - - - Are you sure you want to delete the "%1" distance icon pack? - "%1" ๊ฑฐ๋ฆฌ ์•„์ด์ฝ˜ ํŒฉ์„ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Select a distance icon pack to download - ๊ฑฐ๋ฆฌ ์•„์ด์ฝ˜ ํŒฉ์„ ์„ ํƒํ•˜์—ฌ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”. - - - Select a distance icon pack - ๊ฑฐ๋ฆฌ ์•„์ด์ฝ˜ ํŒฉ ์„ ํƒ - - - Select an icon pack to delete - ์‚ญ์ œํ•  ์•„์ด์ฝ˜ ํŒฉ ์„ ํƒ - - - Are you sure you want to delete the "%1" icon pack? - "%1" ์•„์ด์ฝ˜ ํŒฉ์„ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Select an icon pack to download - ์•„์ด์ฝ˜ ํŒฉ์„ ์„ ํƒํ•˜์—ฌ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”. - - - Select an icon pack - ์•„์ด์ฝ˜ ํŒฉ ์„ ํƒ - - - Select a signal animation to delete - ์‚ญ์ œํ•  ์‹ ํ˜ธ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์„ ํƒ - - - Are you sure you want to delete the "%1" signal animation? - "%1" ์‹ ํ˜ธ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Select a signal animation to download - ๋‹ค์šด๋กœ๋“œํ•  ์‹ ํ˜ธ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์„ ํƒํ•˜์„ธ์š”. - - - Select a signal animation - ์‹ ํ˜ธ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์„ ํƒ - - - Select a sound pack to delete - ์‚ญ์ œํ•  ์‚ฌ์šด๋“œ ํŒฉ ์„ ํƒ - - - Are you sure you want to delete the "%1" sound pack? - "%1" ์‚ฌ์šด๋“œ ํŒฉ์„ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Select a sound pack to download - ๋‹ค์šด๋กœ๋“œํ•  ์‚ฌ์šด๋“œ ํŒฉ ์„ ํƒ - - - Select a sound pack - ์‚ฌ์šด๋“œ ํŒฉ ์„ ํƒ - - - Select a steering wheel to delete - ์‚ญ์ œํ•  ์Šคํ‹ฐ์–ด๋ง ํœ ์„ ์„ ํƒํ•˜์„ธ์š” - - - Are you sure you want to delete the "%1" steering wheel? - "%1" ํ•ธ๋“ค์„ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Select a steering wheel to download - ๋‹ค์šด๋กœ๋“œํ•  ์Šคํ‹ฐ์–ด๋ง ํœ ์„ ์„ ํƒํ•˜์„ธ์š”. - - - Select a steering wheel - ์Šคํ‹ฐ์–ด๋ง ํœ  ์„ ํƒ - - - STOCK - ์žฌ๊ณ  - - - FROGPILOT - FROGPILOT - - - CUSTOM - ๋งž์ถคํ˜• - - - CLEAR - CLEAR - - - Enter the text for the top half - ์œ„์ชฝ ์ ˆ๋ฐ˜์˜ ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”. - - - Characters: 0/%1 - ๋ฌธ์ž: 0/%1 - - - Enter the text for the bottom half - ํ•˜๋‹จ ๋ถ€๋ถ„์˜ ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”. - - - "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! - "๋žœ๋ค ํ…Œ๋งˆ"๋Š” ๋‹ค์šด๋กœ๋“œ๋œ ํ…Œ๋งˆ์—์„œ๋งŒ ์ž‘๋™ํ•˜๋ฏ€๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ํ…Œ๋งˆ๋ฅผ ๋ฐ˜๋“œ์‹œ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”! - - - CANCEL - ์ทจ์†Œ - - - Are you sure you want to completely reset your startup message? - ์‹œ์ž‘ ๋ฉ”์‹œ์ง€๋ฅผ ์™„์ „ํžˆ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + <b>The steering-wheel icon</b> shown at the top-right of the driving screen. Use the "Theme Maker" in "The Pond" to create and share your own themes! + ์ฃผํ–‰ ํ™”๋ฉด ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์— ํ‘œ์‹œ๋˜๋Š” <b>ํ•ธ๋“ค ์•„์ด์ฝ˜</b>. "The Pond"์˜ "Theme Maker"๋ฅผ ์‚ฌ์šฉํ•ด ๋‚˜๋งŒ์˜ ํ…Œ๋งˆ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ณต์œ ํ•˜์„ธ์š”! Turn Signal - ๋ฐฉํ–ฅ ์ง€์‹œ๋“ฑ + ๋ฐฉํ–ฅ์ง€์‹œ๋“ฑ + + + <b>Themed turn-signal animations.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>ํ…Œ๋งˆํ˜• ๋ฐฉํ–ฅ์ง€์‹œ๋“ฑ ์• ๋‹ˆ๋ฉ”์ด์…˜.</b> "The Pond"์˜ "Theme Maker"๋ฅผ ์‚ฌ์šฉํ•ด ๋‚˜๋งŒ์˜ ํ…Œ๋งˆ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ณต์œ ํ•˜์„ธ์š”! + + + Download Status + ๋‹ค์šด๋กœ๋“œ ์ƒํƒœ + + + Holiday Themes + ํœด์ผ ํ…Œ๋งˆ + + + <b>Themes based on U.S. holidays.</b> Minor holidays last one day; major holidays (Christmas, Easter, Halloween) run for a full week. + <b>๋ฏธ๊ตญ ๊ณตํœด์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ํ…Œ๋งˆ.</b> ์†Œ๊ทœ๋ชจ ๊ณตํœด์ผ์€ ํ•˜๋ฃจ๋งŒ ์ ์šฉ๋˜๋ฉฐ, ์ฃผ์š” ๊ณตํœด์ผ(ํฌ๋ฆฌ์Šค๋งˆ์Šค, ๋ถ€ํ™œ์ ˆ, ํ•ผ๋Ÿฌ์œˆ)์€ ์ผ์ฃผ์ผ ๋‚ด๋‚ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. + + + Rainbow Path + ๋ฌด์ง€๊ฐœ ๊ฒฝ๋กœ + + + <b>Color the driving path like a Mario Kartโ€“style "Rainbow Road".</b> + <b>๋งˆ๋ฆฌ์˜ค ์นดํŠธ์˜ "๋ ˆ์ธ๋ณด์šฐ ๋กœ๋“œ"์ฒ˜๋Ÿผ ์ฃผํ–‰ ๊ฒฝ๋กœ๋ฅผ ์ƒ‰์น ํ•ฉ๋‹ˆ๋‹ค.</b> + + + Random Events + ๋ฌด์ž‘์œ„ ์ด๋ฒคํŠธ + + + <b>Occasional on-screen effects triggered by driving conditions.</b> These are purely a visual and don't impact how openpilot drives! + <b>์ฃผํ–‰ ์กฐ๊ฑด์— ์˜ํ•ด ๊ฐ€๋” ํ™”๋ฉด ํšจ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.</b> ์ด๋Š” ์ˆœ์ „ํžˆ ์‹œ๊ฐ์  ํšจ๊ณผ์ด๋ฉฐ openpilot์˜ ์ฃผํ–‰ ๋ฐฉ์‹์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค! + + + Random Themes + ๋ฌด์ž‘์œ„ ํ…Œ๋งˆ + + + <b>Pick a random theme between each drive</b> from the themes you have downloaded. Great for variety without changing settings while driving. + <b>๊ฐ ์ฃผํ–‰ ์‚ฌ์ด์— ์ž„์˜์˜ ํ…Œ๋งˆ ์„ ํƒ</b> ๋‹ค์šด๋กœ๋“œํ•œ ํ…Œ๋งˆ ์ค‘์—์„œ ๋ฌด์ž‘์œ„๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ฃผํ–‰ ์ค‘ ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•„๋„ ๋‹ค์–‘์„ฑ์„ ์ฆ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + + + Startup Alert + ์‹œ์ž‘ ๊ฒฝ๊ณ  + + + <b>Customize the "Startup Alert" message</b> shown at the start of each drive. + <b>๊ฐ ์ฃผํ–‰ ์‹œ์ž‘ ์‹œ ํ‘œ์‹œ๋˜๋Š” "์‹œ๋™ ์•Œ๋ฆผ" ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉ์ž ์ง€์ •</b> + + + DELETE + ์‚ญ์ œ + + + DOWNLOAD + ๋‹ค์šด๋กœ๋“œ + + + SELECT + ์„ ํƒ + + + Select a color scheme to delete + ์‚ญ์ œํ•  ์ƒ‰ ๊ตฌ์„ฑํ‘œ๋ฅผ ์„ ํƒํ•˜์„ธ์š” + + + Delete the "%1" color scheme? + "%1" ์ƒ‰ ๊ตฌ์„ฑํ‘œ๋ฅผ ์‚ญ์ œํ• ๊นŒ์š”? + + + Delete + ์‚ญ์ œ + + + Select a color scheme to download + ๋‹ค์šด๋กœ๋“œํ•  ์ƒ‰ ๊ตฌ์„ฑํ‘œ๋ฅผ ์„ ํƒํ•˜์„ธ์š” + + + Select a color scheme + ์ƒ‰์ƒ ํ…Œ๋งˆ ์„ ํƒ + + + Select a distance icon pack to delete + ์‚ญ์ œํ•  ๊ฑฐ๋ฆฌ ์•„์ด์ฝ˜ ํŒฉ์„ ์„ ํƒํ•˜์„ธ์š” + + + Delete the "%1" distance icon pack? + "%1" ๊ฑฐ๋ฆฌ ์•„์ด์ฝ˜ ํŒฉ์„ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + Select a distance icon pack to download + ๋‹ค์šด๋กœ๋“œํ•  ๊ฑฐ๋ฆฌ ์•„์ด์ฝ˜ ํŒฉ์„ ์„ ํƒํ•˜์„ธ์š” + + + Select a distance icon pack + ๊ฑฐ๋ฆฌ ์•„์ด์ฝ˜ ํŒฉ ์„ ํƒ + + + Select an icon pack to delete + ์‚ญ์ œํ•  ์•„์ด์ฝ˜ ํŒฉ์„ ์„ ํƒํ•˜์„ธ์š” + + + Delete the "%1" icon pack? + "%1" ์•„์ด์ฝ˜ ํŒฉ์„ ์‚ญ์ œํ• ๊นŒ์š”? + + + Select an icon pack to download + ๋‹ค์šด๋กœ๋“œํ•  ์•„์ด์ฝ˜ ํŒฉ์„ ์„ ํƒํ•˜์„ธ์š” + + + Select an icon pack + ์•„์ด์ฝ˜ ํŒฉ ์„ ํƒ + + + Select a signal animation to delete + ์‚ญ์ œํ•  ์‹ ํ˜ธ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์„ ํƒํ•˜์„ธ์š” + + + Delete the "%1" signal animation? + "%1" ์‹ ํ˜ธ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + Select a signal animation to download + ๋‹ค์šด๋กœ๋“œํ•  ์‹ ํ˜ธ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์„ ํƒํ•˜์„ธ์š” + + + Select a signal animation + ์‹ ํ˜ธ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์„ ํƒ + + + Select a sound pack to delete + ์‚ญ์ œํ•  ์‚ฌ์šด๋“œ ํŒฉ์„ ์„ ํƒํ•˜์„ธ์š” + + + Delete the "%1" sound pack? + "%1" ์‚ฌ์šด๋“œ ํŒฉ์„ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + Select a sound pack to download + ๋‹ค์šด๋กœ๋“œํ•  ์‚ฌ์šด๋“œ ํŒฉ์„ ์„ ํƒํ•˜์„ธ์š” + + + Select a sound pack + ์‚ฌ์šด๋“œ ํŒฉ ์„ ํƒ + + + Select a steering wheel to delete + ์‚ญ์ œํ•  ์Šคํ‹ฐ์–ด๋ง ํœ ์„ ์„ ํƒํ•˜์„ธ์š” + + + Delete the "%1" steering wheel? + "%1" ์Šคํ‹ฐ์–ด๋ง ํœ ์„ ์‚ญ์ œํ• ๊นŒ์š”? + + + Select a steering wheel to download + ๋‹ค์šด๋กœ๋“œํ•  ์Šคํ‹ฐ์–ด๋ง ํœ ์„ ์„ ํƒํ•˜์„ธ์š” + + + Select a steering wheel + ์Šคํ‹ฐ์–ด๋ง ํœ ์„ ์„ ํƒํ•˜์„ธ์š” + + + STOCK + ์ˆœ์ • + + + FROGPILOT + FROGPILOT + + + CUSTOM + ์‚ฌ์šฉ์ž ์ง€์ • + + + CLEAR + ์ง€์šฐ๊ธฐ + + + Enter the text for the top half + ์ƒ๋‹จ ์ ˆ๋ฐ˜์— ๋“ค์–ด๊ฐˆ ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š” + + + Characters: 0/%1 + ๋ฌธ์ž: 0/%1 + + + Enter the text for the bottom half + ํ•˜๋‹จ ์ ˆ๋ฐ˜์˜ ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š” + + + Are you sure you want to completely reset your startup message? + ์‹œ์ž‘ ๋ฉ”์‹œ์ง€๋ฅผ ์™„์ „ํžˆ ์ดˆ๊ธฐํ™”ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! + "๋žœ๋ค ํ…Œ๋งˆ"๋Š” ๋‹ค์šด๋กœ๋“œํ•œ ํ…Œ๋งˆ์—์„œ๋งŒ ์ž‘๋™ํ•˜๋ฏ€๋กœ, ์‚ฌ์šฉํ•˜๋ ค๋Š” ํ…Œ๋งˆ๋ฅผ ๋ฐ˜๋“œ์‹œ ๋จผ์ € ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”! + + + CANCEL + ์ทจ์†Œ FrogPilotUtilitiesPanel Debug Mode - ๋””๋ฒ„๊ทธ ๋ชจ๋“œ + ๋””๋ฒ„๊ทธ ๋ชจ๋“œ - Debug FrogPilot during the next drive by utilizing all of FrogPilot's developer metrics for either bug reporting, or self-debugging. - ๋‹ค์Œ ์ฃผํ–‰ ์ค‘ FrogPilot์˜ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž ๋ฉ”ํŠธ๋ฆญ์„ ํ™œ์šฉํ•˜์—ฌ FrogPilot์„ ๋””๋ฒ„๊ทธํ•˜๊ณ , ๋ฒ„๊ทธ ๋ณด๊ณ  ๋˜๋Š” ์ž์ฒด ๋””๋ฒ„๊น…์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค. + <b>Use FrogPilot's developer metrics on your next drive</b> to diagnose issues and improve bug reports. + <b>๋‹ค์Œ ์ฃผํ–‰์—์„œ FrogPilot์˜ ๊ฐœ๋ฐœ์ž ์ง€ํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ</b> ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•˜๊ณ  ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ๋ฅผ ๊ฐœ์„ ํ•˜์„ธ์š”. Flash Panda - ํ”Œ๋ž˜์‹œ ํŒ๋‹ค + Panda ํ”Œ๋ž˜์‹œ FLASH - ํ”Œ๋ž˜์‹œ + ํ”Œ๋ž˜์‹œ - Flash the Panda's firmware. Use if you're running into issues with the Panda. - ํŒ๋‹ค์˜ ํŽŒ์›จ์–ด๋ฅผ ํ”Œ๋ž˜์‹œํ•˜์„ธ์š”. ํŒ๋‹ค์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜์„ธ์š”. + <b>Reinstall the Panda firmware</b> to fix connection or reliability issues. + <b>Panda ํŽŒ์›จ์–ด๋ฅผ ์žฌ์„ค์น˜</b>ํ•˜์—ฌ ์—ฐ๊ฒฐ ๋˜๋Š” ์‹ ๋ขฐ์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์„ธ์š”. - Are you sure you want to flash the Panda? - Panda๋ฅผ ํ”Œ๋ž˜์‹œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + Are you sure you want to flash the Panda firmware? + Panda ํŽŒ์›จ์–ด๋ฅผ ํ”Œ๋ž˜์‹œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? Flash - ํ”Œ๋ž˜์‹œ + ํ”Œ๋ž˜์‹œ Flashing... - ๊นœ๋ฐ•์ด๋Š” ์ค‘... + ํ”Œ๋ž˜์‹ฑ ์ค‘... Flashed! - ํ”Œ๋ž˜์‹œ! + ํ”Œ๋ž˜์‹œ๋จ! Rebooting... - ์žฌ๋ถ€ํŒ… ์ค‘... + ์žฌ๋ถ€ํŒ… ์ค‘... - Force Started State - ๊ฐ•์ œ ์‹œ์ž‘ ์ƒํƒœ + Force Drive State + ๊ฐ•์ œ ์ฃผํ–‰ ์ƒํƒœ - Force openpilot either offroad or onroad. - ์˜คํ”ˆํŒŒ์ผ๋Ÿฟ์„ ์˜คํ”„๋กœ๋“œ ๋˜๋Š” ์˜จ๋กœ๋“œ๋กœ ๊ฐ•์ œ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค. + <b>Manually set openpilot to be offroad or onroad.</b> + <b>openpilot์„ ์ˆ˜๋™์œผ๋กœ ์˜คํ”„๋กœ๋“œ ๋˜๋Š” ์˜จ๋กœ๋“œ๋กœ ์„ค์ •ํ•˜์„ธ์š”.</b> OFFROAD - ์˜คํ”„๋กœ๋“œ + ์˜คํ”„๋กœ๋“œ ONROAD - ์˜จ๋กœ๋“œ + ์ฃผํ–‰ ์ค‘ OFF - ๊บผ์ง + ๊บผ์ง Report a Bug or an Issue - ๋ฒ„๊ทธ ๋˜๋Š” ๋ฌธ์ œ ๋ณด๊ณ ํ•˜๊ธฐ + ๋ฒ„๊ทธ ๋˜๋Š” ๋ฌธ์ œ ์‹ ๊ณ  REPORT - ๋ณด๊ณ ์„œ + ๋ณด๊ณ ์„œ - Let FrogsGoMoo know about an issue you're facing! - FrogsGoMoo์—๊ฒŒ ๋‹น์‹ ์ด ์ง๋ฉดํ•œ ๋ฌธ์ œ๋ฅผ ์•Œ๋ ค์ฃผ์„ธ์š”! + <b>Send a bug report</b> so we can help fix the problem! + <b>๋ฒ„๊ทธ ๋ณด๊ณ ์„œ๋ฅผ ๋ณด๋‚ด</b> ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋„๋ก ๋„์™€์ฃผ์„ธ์š”! + + + Please connect to the internet before sending a report! + ๋ณด๊ณ ์„œ๋ฅผ ๋ณด๋‚ด๊ธฐ ์ „์— ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐํ•˜์„ธ์š”! I saw an alert that said "openpilot crashed" - "openpilot crashed"๋ผ๋Š” ๊ฒฝ๊ณ ๋ฅผ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. + "openpilot๊ฐ€ ์ถฉ๋Œํ–ˆ์Šต๋‹ˆ๋‹ค"๋ผ๋Š” ๊ฒฝ๊ณ ๋ฅผ ๋ดค์–ด์š” - What's going on? - ๋ฌด์Šจ ์ผ์ด์•ผ? + Acceleration feels harsh or jerky + ๊ฐ€์†์ด ๊ฑฐ์น ๊ฑฐ๋‚˜ ๋œ์ปฅ๊ฑฐ๋ฆฝ๋‹ˆ๋‹ค - Please describe what's happening - ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. - - - Send Report - ๋ณด๊ณ ์„œ ๋ณด๋‚ด๊ธฐ - - - What's your Discord username? - ๋‹น์‹ ์˜ Discord ์‚ฌ์šฉ์ž ์ด๋ฆ„์€ ๋ฌด์—‡์ธ๊ฐ€์š”? - - - Your report has been submitted. Thanks for letting us know! - ๊ท€ํ•˜์˜ ๋ณด๊ณ ์„œ๊ฐ€ ์ œ์ถœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•Œ๋ ค์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! - - - Reset Toggles to Default - ํ† ๊ธ€์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ • - - - RESET - ์žฌ์„ค์ • - - - Reset all toggles to their default values. - ๋ชจ๋“  ํ† ๊ธ€์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค. - - - Are you sure you want to reset all toggles to their default values? - ๋ชจ๋“  ํ† ๊ธ€์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Reset - ์žฌ์„ค์ • - - - Resetting... - ์žฌ์„ค์ • ์ค‘... - - - Reset! - ๋ฆฌ์…‹! - - - Reset Toggles to Match Stock openpilot - ํ† ๊ธ€์„ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ๊ธฐ๋ณธ openpilot๊ณผ ์ผ์น˜์‹œํ‚ค๊ธฐ - - - Reset all toggles to match stock openpilot. - ๋ชจ๋“  ํ† ๊ธ€์„ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ๊ธฐ๋ณธ openpilot๊ณผ ์ผ์น˜์‹œํ‚ต๋‹ˆ๋‹ค. - - - Are you sure you want to reset all toggles to match stock openpilot? - ๋ชจ๋“  ํ† ๊ธ€์„ ๊ธฐ๋ณธ openpilot ์„ค์ •์œผ๋กœ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Ensure your device has an internet connection before sending a report! - ๋ณด๊ณ ์„œ๋ฅผ ๋ณด๋‚ด๊ธฐ ์ „์— ๊ธฐ๊ธฐ๊ฐ€ ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”! - - - Acceleration feels too harsh or jerky - ๊ฐ€์†์ด ๋„ˆ๋ฌด ๊ฑฐ์น ๊ฑฐ๋‚˜ ๋œ์ปฅ๊ฑฐ๋ฆฌ๋Š” ๋А๋‚Œ์ด ๋“ ๋‹ค. - - - An alert confused me and I didnโ€™t know what it meant - ๊ฒฝ๊ณ ๊ฐ€ ์ €๋ฅผ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ํ–ˆ๊ณ , ๊ทธ๊ฒƒ์ด ๋ฌด์Šจ ๋œป์ธ์ง€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. + An alert was unclear and I didn't know what it meant + ๊ฒฝ๊ณ ๊ฐ€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์•„ ๋œป์„ ์•Œ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค Braking is too sudden or uncomfortable - ์ œ๋™์ด ๋„ˆ๋ฌด ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฑฐ๋‚˜ ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค. + ๋ธŒ๋ ˆ์ดํฌ๊ฐ€ ๋„ˆ๋ฌด ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฑฐ๋‚˜ ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค - Iโ€™m not sure if this is normal or a bug: - ์ด๊ฒƒ์ด ์ •์ƒ์ธ์ง€ ๋ฒ„๊ทธ์ธ์ง€ ํ™•์‹ ์ด ์„œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค: + I'm not sure if this is normal or a bug: + ์ด๊ฒŒ ์ •์ƒ์ธ์ง€ ๋ฒ„๊ทธ์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์–ด์š”. - Lane changes donโ€™t work properly or feel unsafe - ์ฐจ์„  ๋ณ€๊ฒฝ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์•ˆ์ „ํ•˜์ง€ ์•Š๊ฒŒ ๋А๊ปด์ง‘๋‹ˆ๋‹ค. + My screen froze or is stuck loading something + ํ™”๋ฉด์ด ๋ฉˆ์ท„๊ฑฐ๋‚˜ ๋กœ๋”ฉ ์ค‘์— ๋ฉˆ์ถ˜ ๊ฒƒ ๊ฐ™์•„์š” - My screen froze or got stuck on loading - ํ™”๋ฉด์ด ๋ฉˆ์ถ”๊ฑฐ๋‚˜ ๋กœ๋”ฉ ์ค‘์— ๋ฉˆ์ท„์Šต๋‹ˆ๋‹ค. - - - My steering wheel buttons arenโ€™t working - ๋‚ด ํ•ธ๋“ค ๋ฒ„ํŠผ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•„์š” + My steering wheel buttons aren't working + ํ•ธ๋“ค ๋ฒ„ํŠผ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค openpilot disengages when I don't expect it - openpilot๋Š” ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ƒํ™ฉ์—์„œ ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค. - - - openpilot doesnโ€™t resume after I stop - openpilot๋Š” ์ œ๊ฐ€ ๋ฉˆ์ถ˜ ํ›„ ๋‹ค์‹œ ์‹œ์ž‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + ์˜ˆ์ƒ์น˜ ๋ชปํ•˜๊ฒŒ openpilot๊ฐ€ ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค openpilot doesn't react to stopped vehicles ahead - openpilot๋Š” ์•ž์— ์ •์ฐจํ•œ ์ฐจ๋Ÿ‰์— ๋ฐ˜์‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + openpilot์€ ์•ž์— ๋ฉˆ์ถฐ์„  ์ฐจ๋Ÿ‰์— ๋ฐ˜์‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค + + + openpilot doesn't resume from a stop + openpilot๊ฐ€ ์ •์ง€ ์ƒํƒœ์—์„œ ์žฌ๊ฐ€์†ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค openpilot feels sluggish or slow to respond - openpilot๊ฐ€ ๋А๋ฆฌ๊ฑฐ๋‚˜ ๋ฐ˜์‘์ด ๋А๋ฆฌ๊ฒŒ ๋А๊ปด์ง‘๋‹ˆ๋‹ค. + openpilot๊ฐ€ ๋‘”ํ•˜๊ฑฐ๋‚˜ ๋ฐ˜์‘์ด ๋А๋ฆฌ๊ฒŒ ๋А๊ปด์ง‘๋‹ˆ๋‹ค Steering feels twitchy or unnatural - ์กฐํ–ฅ์ด ๋ถˆ์•ˆ์ •ํ•˜๊ฑฐ๋‚˜ ๋ถ€์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋А๊ปด์ง„๋‹ค. + ์กฐํ–ฅ์ด ๋ถˆ์•ˆ์ •ํ•˜๊ฑฐ๋‚˜ ๋ถ€์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋А๊ปด์ง - The car doesnโ€™t follow curves well - ์ฐจ๊ฐ€ ๊ณก์„ ์„ ์ž˜ ๋”ฐ๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + The car doesn't follow curves well + ์ฐจ๊ฐ€ ์ปค๋ธŒ๋ฅผ ์ž˜ ๋”ฐ๋ผ๊ฐ€์ง€ ๋ชปํ•จ - The car isnโ€™t staying centered in its lane - ์ฐจ๊ฐ€ ์ฐจ์„  ์ค‘์•™์— ๋จธ๋ฌผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. - - - The speed or display info looks wrong - ์†๋„ ๋˜๋Š” ๋””์Šคํ”Œ๋ ˆ์ด ์ •๋ณด๊ฐ€ ์ž˜๋ชป๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. + The car isn't staying centered in its lane + ์ฐจ๊ฐ€ ์ฐจ์„  ์ค‘์•™์„ ์œ ์ง€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค Something else (please describe) - ๋‹ค๋ฅธ ๊ฒƒ (์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”) + ๋‹ค๋ฅธ ์‚ฌํ•ญ(์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”) + + + What's going on? + ๋ฌด์Šจ ์ผ์ด์•ผ? + + + Please describe what's happening + ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š” + + + Send Report + ๋ณด๊ณ ์„œ ๋ณด๋‚ด๊ธฐ + + + What's your Discord username? + ๋‹น์‹ ์˜ Discord ์‚ฌ์šฉ์ž๋ช…์€ ๋ฌด์—‡์ธ๊ฐ€์š”? + + + Report Sent! Thanks for letting us know! + ๋ณด๊ณ ๊ฐ€ ์ „์†ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ์•Œ๋ ค์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! + + + Reset Toggles to Default + ํ† ๊ธ€์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ • + + + RESET + ์žฌ์„ค์ • + + + <b>Reset all toggles to their default values.</b> + <b>๋ชจ๋“  ํ† ๊ธ€์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</b> + + + Are you sure you want to reset all toggles to their default values? + ๋ชจ๋“  ํ† ๊ธ€์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + Reset + ์žฌ์„ค์ • + + + Resetting... + ์žฌ์„ค์ • ์ค‘โ€ฆ + + + Reset! + ์žฌ์„ค์ •! + + + Reset Toggles to Stock openpilot + ํ† ๊ธ€์„ ๊ธฐ๋ณธ openpilot์œผ๋กœ ์žฌ์„ค์ • + + + <b>Reset all toggles to match stock openpilot.</b> + <b>๊ธฐ๋ณธ openpilot๊ณผ ์ผ์น˜ํ•˜๋„๋ก ๋ชจ๋“  ํ† ๊ธ€์„ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</b> + + + Are you sure you want to reset all toggles to match stock openpilot? + ๋ชจ๋“  ํ† ๊ธ€์„ ๊ธฐ๋ณธ openpilot ์„ค์ •์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? FrogPilotVehiclesPanel - Select Make - ์ œ์กฐ์‚ฌ ์„ ํƒ + Car Make + ์ œ์กฐ์‚ฌ SELECT - SELECT + ์„ ํƒ - Select a Make - ์ œ์กฐ์‚ฌ๋ฅผ ์„ ํƒํ•˜์„ธ์š”. + Choose your car make + ์ž๋™์ฐจ ์ œ์กฐ์‚ฌ๋ฅผ ์„ ํƒํ•˜์„ธ์š” - Select Model - ๋ชจ๋ธ ์„ ํƒ + Car Model + ์ฐจ๋Ÿ‰ ๋ชจ๋ธ - Select a Model - ๋ชจ๋ธ ์„ ํƒ + Choose your car model + ์ฐจ๋Ÿ‰ ๋ชจ๋ธ์„ ์„ ํƒํ•˜์„ธ์š” Disable Automatic Fingerprint Detection - ์ž๋™ ์ง€๋ฌธ ๊ฐ์ง€ ๋น„ํ™œ์„ฑํ™” + ์ž๋™ ์ง€๋ฌธ ๊ฐ์ง€ ๋น„ํ™œ์„ฑํ™” - Forces the selected fingerprint and prevents it from ever changing. - ์„ ํƒํ•œ ์ง€๋ฌธ์„ ๊ฐ•์ œ๋กœ ๊ณ ์ •ํ•˜๊ณ  ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋„๋ก ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. + <b>Force the selected fingerprint</b> and prevent it from ever changing. + <b>์„ ํƒ๋œ ์ง€๋ฌธ์„ ๊ฐ•์ œ๋กœ ์‚ฌ์šฉ</b>ํ•˜๊ณ  ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. Disable openpilot Longitudinal Control - openpilot ์ข…๋ฐฉํ–ฅ ์ œ์–ด ๋น„ํ™œ์„ฑํ™” + openpilot ์ข…๋ฐฉํ–ฅ ์ œ์–ด ๋น„ํ™œ์„ฑํ™” - Disables openpilot longitudinal control and uses the car's stock ACC instead. - openpilot ์ข…๋ฐฉํ–ฅ ์ œ์–ด๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ์ฐจ๋Ÿ‰์˜ ๊ธฐ๋ณธ ACC๋ฅผ ๋Œ€์‹  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. + <b>Disable openpilot longitudinal</b> and use the car's stock ACC instead. + <b>openpilot ์ข…๋ฐฉํ–ฅ ์ œ์–ด๋ฅผ ๋น„ํ™œ์„ฑํ™”</b>ํ•˜๊ณ  ์ฐจ๋Ÿ‰์˜ ๊ธฐ๋ณธ ACC๋ฅผ ๋Œ€์‹  ์‚ฌ์šฉํ•˜์„ธ์š”. Are you sure you want to completely disable openpilot longitudinal control? - openpilot ์ข…๋ฐฉํ–ฅ ์ œ์–ด๋ฅผ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + openpilot ์ข…๋ฐฉํ–ฅ ์ œ์–ด๋ฅผ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? General Motors Settings - ์ œ๋„ˆ๋Ÿด ๋ชจํ„ฐ์Šค ์„ค์ • + General Motors ์„ค์ • - Settings specific to <b>General Motors</b> vehicles. - <b>General Motors</b> ์ฐจ๋Ÿ‰์— ํŠน์ •ํ•œ ์„ค์ •. + <b>FrogPilot features for General Motors vehicles.</b> + <b>General Motors ์ฐจ๋Ÿ‰์„ ์œ„ํ•œ FrogPilot ๊ธฐ๋Šฅ.</b> FrogsGoMoo's Experimental Tune - FrogsGoMoo์˜ ์‹คํ—˜์  ๊ณก + FrogsGoMoo์˜ ์‹คํ—˜์  ํŠ  - <b>FrogsGoMoo's</b> experimental <b>General Motors</b> tune that aims to smoothen out stopping and takeoff control based on nothing but guesswork. Use at your own risk! - <b>FrogsGoMoo์˜</b> ์‹คํ—˜์ ์ธ <b>General Motors</b> ํŠ ์€ ์ถ”์ธก์—๋งŒ ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์ •์ง€ ๋ฐ ์ถœ๋ฐœ ์ œ์–ด๋ฅผ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‹œ ์ฃผ์˜ํ•˜์„ธ์š”! + <b>Experimental GM tune by FrogsGoMoo</b> that attempts to smoothen stopping and takeoff control. Use at your own risk! + <b>FrogsGoMoo์˜ ์‹คํ—˜์  GM ํŠ </b>์œผ๋กœ ์ •์ง€ ๋ฐ ์ถœ๋ฐœ ์ œ์–ด๋ฅผ ๋” ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‹œ ์ฑ…์ž„์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค! Smooth Pedal Response on Hills - ์–ธ๋•์—์„œ ๋ถ€๋“œ๋Ÿฌ์šด ํŽ˜๋‹ฌ ๋ฐ˜์‘ + ์–ธ๋•์—์„œ ๋ถ€๋“œ๋Ÿฌ์šด ํŽ˜๋‹ฌ ๋ฐ˜์‘ - Smoothen the acceleration and braking when driving uphill or downhill. - ์–ธ๋•์„ ์˜ค๋ฅด๊ฑฐ๋‚˜ ๋‚ด๋ฆด ๋•Œ ๊ฐ€์†๊ณผ ์ œ๋™์„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ํ•˜์„ธ์š”. + <b>Smoothen acceleration and braking</b> when driving downhill/uphill. + <b>๋‚ด๋ฆฌ๋ง‰/์˜ค๋ฅด๋ง‰ ์ฃผํ–‰ ์‹œ ๊ฐ€์†๊ณผ ์ œ๋™์„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ํ•˜์„ธ์š”</b>. - Stop and Go Hack - ์ •์ง€ ๋ฐ ์ด๋™ ํ•ดํ‚น + Stop-and-Go Hack + ์Šคํ†ฑ์•ค๊ณ  ํ•ดํฌ - Force stop and go on the <b>2017 Chevy Volt</b>. - <b>2017 Chevy Volt</b>์˜ ๊ฐ•์ œ ์ •์ง€ ๋ฐ ์ด๋™. + <b>Force stop-and-go</b> on the 2017 Chevy Volt. + 2017๋…„ Chevy Volt์—์„œ <b>์ •์ง€-์ถœ๋ฐœ ๊ฐ•์ œ</b>. Hyundai/Kia/Genesis Settings - ํ˜„๋Œ€/๊ธฐ์•„/์ œ๋„ค์‹œ์Šค ์„ค์ • + ํ˜„๋Œ€/๊ธฐ์•„/์ œ๋„ค์‹œ์Šค ์„ค์ • - Settings specific to <b>Hyundai</b>, <b>Kia</b>, and <b>Genesis</b> vehicles. - <b>ํ˜„๋Œ€</b>, <b>๊ธฐ์•„</b>, <b>์ œ๋„ค์‹œ์Šค</b> ์ฐจ๋Ÿ‰์— ๋Œ€ํ•œ ์„ค์ •. + <b>FrogPilot features for Genesis, Hyundai, and Kia vehicles.</b> + <b>Genesis, Hyundai, Kia ์ฐจ๋Ÿ‰์„ ์œ„ํ•œ FrogPilot ๊ธฐ๋Šฅ.</b> comma's New Longitudinal API - comma์˜ ์ƒˆ๋กœ์šด Longitudinal API + comma์˜ ์ƒˆ๋กœ์šด ์ข…๋ฐฉํ–ฅ API - comma's new longitudinal control system that has shown great improvement with acceleration and braking, but has issues on some <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> vehicles. - comma์˜ ์ƒˆ๋กœ์šด ์ข…๋ฐฉํ–ฅ ์ œ์–ด ์‹œ์Šคํ…œ์€ ๊ฐ€์† ๋ฐ ์ œ๋™์—์„œ ํฐ ๊ฐœ์„ ์„ ๋ณด์˜€์œผ๋‚˜ ์ผ๋ถ€ <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> ์ฐจ๋Ÿ‰์—์„œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. + <b>comma's new gas and brake control system</b> that improves acceleration and braking but may cause issues on some Genesis/Hyundai/Kia vehicles. + <b>comma์˜ ์ƒˆ๋กœ์šด ๊ฐ€์† ๋ฐ ์ œ๋™ ์ œ์–ด ์‹œ์Šคํ…œ</b>์œผ๋กœ ๊ฐ€์†๊ณผ ์ œ๋™์ด ๊ฐœ์„ ๋˜์ง€๋งŒ ์ผ๋ถ€ Genesis/Hyundai/Kia ์ฐจ๋Ÿ‰์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "Taco Bell Run" Torque Hack - Taco Bell Run" Torque Hack + "Taco Bell Run" ํ† ํฌ ํ•ต - The torque hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to improve turning at low speeds by increasing the allowed steering torque. - comma์˜ 2022 "ํƒ€์ฝ” ๋ฒจ ๋Ÿฐ" ๋“œ๋ผ์ด๋ธŒ์—์„œ์˜ ํ† ํฌ ํ•ดํ‚น. ํ—ˆ์šฉ๋˜๋Š” ์กฐํ–ฅ ํ† ํฌ๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ ์ €์†์—์„œ์˜ ํšŒ์ „์„ ๊ฐœ์„ ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. + <b>The steering torque hack from comma's 2022 "Taco Bell Run".</b> Designed to increase steering torque at low speeds for left and right turns. + <b>comma์˜ 2022๋…„ "Taco Bell Run"์—์„œ ์‚ฌ์šฉ๋œ ์Šคํ‹ฐ์–ด๋ง ํ† ํฌ ํ•ดํฌ.</b> ์ขŒํšŒ์ „๊ณผ ์šฐํšŒ์ „ ์‹œ ์ €์†์—์„œ ์Šคํ‹ฐ์–ด๋ง ํ† ํฌ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Toyota/Lexus Settings - ํ† ์š”ํƒ€/๋ ‰์„œ์Šค ์„ค์ • + Toyota/Lexus ์„ค์ • - Settings specific to <b>Toyota</b> and <b>Lexus</b> vehicles. - <b>ํ† ์š”ํƒ€</b> ๋ฐ <b>๋ ‰์„œ์Šค</b> ์ฐจ๋Ÿ‰์— ํŠน์ •ํ•œ ์„ค์ •. + <b>FrogPilot features for Lexus and Toyota vehicles.</b> + <b>Lexus ๋ฐ Toyota ์ฐจ๋Ÿ‰์šฉ FrogPilot ๊ธฐ๋Šฅ.</b> Automatically Lock/Unlock Doors - ์ž๋™์œผ๋กœ ๋ฌธ ์ž ๊ธˆ/ํ•ด์ œ + ๋ฌธ ์ž๋™ ์ž ๊ธˆ/ํ•ด์ œ - Automatically lock the doors when shifting into drive and unlock them when shifting into park. - ๊ธฐ์–ด๋ฅผ ๋“œ๋ผ์ด๋ธŒ๋กœ ๋ณ€์†ํ•  ๋•Œ ์ž๋™์œผ๋กœ ๋ฌธ์„ ์ž ๊ทธ๊ณ , ํŒŒํ‚น์œผ๋กœ ๋ณ€์†ํ•  ๋•Œ ์ž๋™์œผ๋กœ ๋ฌธ์„ ์—ด์–ด์ฃผ์„ธ์š”. + <b>Automatically lock/unlock doors</b> when shifting in and out of drive. + <b>์ฃผํ–‰ ๊ธฐ์–ด๋กœ ์ „ํ™˜ํ•  ๋•Œ</b> ์ž๋™์œผ๋กœ ๋ฌธ์„ ์ž ๊ทธ๊ณ  ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค. - Cluster Speed Offset - ํด๋Ÿฌ์Šคํ„ฐ ์†๋„ ์˜คํ”„์…‹ + Dashboard Speed Offset + ๋Œ€์‹œ๋ณด๋“œ ์†๋„ ์˜คํ”„์…‹ - The cluster speed offset used by openpilot to match the speed displayed on the dash. - openpilot์ด ๋Œ€์‹œ๋ณด๋“œ์— ํ‘œ์‹œ๋œ ์†๋„์™€ ์ผ์น˜์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ ์†๋„ ์˜คํ”„์…‹. + <b>The speed offset openpilot uses to match the speed on the dashboard display.</b> + <b>๋Œ€์‹œ๋ณด๋“œ ํ‘œ์‹œ ์†๋„์™€ ์ผ์น˜์‹œํ‚ค๊ธฐ ์œ„ํ•ด openpilot์ด ์‚ฌ์šฉํ•˜๋Š” ์†๋„ ๋ณด์ •๊ฐ’.</b> FrogsGoMoo's Personal Tweaks - FrogsGoMoo์˜ ๊ฐœ์ธ ์กฐ์ • + FrogsGoMoo์˜ ๊ฐœ์ธ ์„ค์ • - <b>FrogsGoMoo's</b> personal tweaks for quicker acceleration and smoother braking. - <b>FrogsGoMoo์˜</b> ๊ฐœ์ธ ์„ค์ •์œผ๋กœ ๋” ๋น ๋ฅธ ๊ฐ€์†๊ณผ ๋ถ€๋“œ๋Ÿฌ์šด ์ œ๋™์„ ๊ฒฝํ—˜ํ•˜์„ธ์š”. + <b>Personal tweaks by FrogsGoMoo for quicker acceleration and smoother braking.</b> + <b>๋” ๋น ๋ฅธ ๊ฐ€์†๊ณผ ๋” ๋ถ€๋“œ๋Ÿฌ์šด ์ œ๋™์„ ์œ„ํ•œ FrogsGoMoo์˜ ๊ฐœ์ธ ์กฐ์ •.</b> Lock Doors On Ignition Off After - ์ ํ™” ๊บผ์ง ํ›„ ๋ฌธ ์ž ๊ธˆ + ์‹œ๋™ ๊บผ์ง ํ›„ ๋„์–ด ์ž ๊ธˆ ์‹œ๊ฐ„ - Automatically lock the doors after the car's ignition has been turned off and no one is detected in either of the front seats. - ์ž๋™์ฐจ์˜ ์‹œ๋™์ด ๊บผ์ง€๊ณ  ์•ž์ขŒ์„์— ์•„๋ฌด๋„ ๊ฐ์ง€๋˜์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ ๋ฌธ์„ ์ž ๊ทธ์‹ญ์‹œ์˜ค. + <b>Automatically lock the doors on ignition off</b> when no one is detected in the front seats. + <b>์‹œ๋™์ด ๊บผ์งˆ ๋•Œ ์ž๋™์œผ๋กœ ๋ฌธ์„ ์ž ๊ธ‰๋‹ˆ๋‹ค</b> ์•ž์ขŒ์„์— ์•„๋ฌด๋„ ๊ฐ์ง€๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ. - Force stop and go on <b>Toyota</b>/<b>Lexus</b> vehicles without stock stop and go functionality. - ์žฌ๊ณ  ์ •์ง€ ๋ฐ ์ด๋™ ๊ธฐ๋Šฅ์ด ์—†๋Š” <b>ํ† ์š”ํƒ€</b>/<b>๋ ‰์„œ์Šค</b> ์ฐจ๋Ÿ‰์—์„œ ๊ฐ•์ œ ์ •์ง€ ๋ฐ ์ด๋™. + <b>Force stop-and-go</b> on Lexus/Toyota vehicles without stock stop-and-go functionality. + <b>์ •์ง€-์ถœ๋ฐœ ๊ฐ•์ œ</b>: ์ •์ง€-์ถœ๋ฐœ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์ด ์—†๋Š” Lexus/Toyota ์ฐจ๋Ÿ‰์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. MANAGE - ๊ด€๋ฆฌํ•˜๋‹ค + ๊ด€๋ฆฌ Lock - ์ž ๊ธˆ + ์ž ๊ธˆ Unlock - ์ž ๊ธˆ ํ•ด์ œ + ์ž ๊ธˆ ํ•ด์ œ Never - ์ ˆ๋Œ€ + ์ ˆ๋Œ€ seconds - ์ดˆ + ์ดˆ + + + None + ์—†์Œ + + + Vehicle Info + ์ฐจ๋Ÿ‰ ์ •๋ณด + + + <b>Information about your vehicle in regards to openpilot support and functionality.</b> + <b>openpilot ์ง€์› ๋ฐ ๊ธฐ๋Šฅ๊ณผ ๊ด€๋ จ๋œ ์ฐจ๋Ÿ‰ ์ •๋ณด์ž…๋‹ˆ๋‹ค.</b> + + + <b>Detected 3rd party hardware.</b> + <b>์„œ๋“œํŒŒํ‹ฐ ํ•˜๋“œ์›จ์–ด๊ฐ€ ๊ฐ์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.</b> + + + openpilot Longitudinal Support + openpilot ์ข…๋ฐฉํ–ฅ ์ง€์› + + + <b>Can openpilot control the vehicle's acceleration and braking?</b> + <b>openpilot์ด ์ฐจ๋Ÿ‰์˜ ๊ฐ€์†๊ณผ ์ œ๋™์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‚˜์š”?</b> + + + <b>Does your vehicle support the "comma pedal"?</b> + <b>๊ท€ํ•˜์˜ ์ฐจ๋Ÿ‰์€ "comma pedal"์„ ์ง€์›ํ•˜๋‚˜์š”?</b> + + + Radar Support + ๋ ˆ์ด๋” ์ง€์› + + + <b>Does openpilot use the vehicle's radar data</b> alongside the device's camera for tracking lead vehicles? + <b>openpilot์€ ์„ ํ–‰ ์ฐจ๋Ÿ‰ ์ถ”์ ์„ ์œ„ํ•ด ์ฐจ๋Ÿ‰์˜ ๋ ˆ์ด๋” ๋ฐ์ดํ„ฐ</b>๋ฅผ ๊ธฐ๊ธฐ์˜ ์นด๋ฉ”๋ผ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋‚˜์š”? + + + SDSU Support + SDSU ์ง€์› + + + <b>Does your vehicle support "SDSUs"?</b> + <b>๊ท€ํ•˜์˜ ์ฐจ๋Ÿ‰์ด "SDSUs"๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๊นŒ?</b> + + + Stop-and-Go Support + ์ •์ง€-์ถœ๋ฐœ ์ง€์› + + + <b>Does your vehicle support stop-and-go driving?</b> + <b>๊ท€ํ•˜์˜ ์ฐจ๋Ÿ‰์€ ์ •์ง€์™€ ์ถœ๋ฐœ(์Šคํ†ฑ์•ค๊ณ ) ์ฃผํ–‰์„ ์ง€์›ํ•˜๋‚˜์š”?</b> + + + VIEW + ๋ณด๊ธฐ + + + Yes + ์˜ˆ + + + No + ์•„๋‹ˆ์š” + + + 3rd Party Hardware Detected + ํƒ€์‚ฌ ํ•˜๋“œ์›จ์–ด ๊ฐ์ง€๋จ + + + Blind Spot Support + ์‚ฌ๊ฐ์ง€๋Œ€ ์ง€์› + + + <b>Does openpilot use the vehicle's blind spot data?</b> + <b>openpilot์€ ์ฐจ๋Ÿ‰์˜ ์‚ฌ๊ฐ์ง€๋Œ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋‚˜์š”?</b> + + + comma Pedal Support + comma Pedal ์ง€์› FrogPilotVisualsPanel Advanced UI Controls - ๊ณ ๊ธ‰ UI ์ปจํŠธ๋กค + ๊ณ ๊ธ‰ UI ์ปจํŠธ๋กค - Advanced settings for fine-tuning openpilot's driving screen. - openpilot์˜ ์ฃผํ–‰ ํ™”๋ฉด์„ ์„ธ๋ถ€ ์กฐ์ •ํ•˜๊ธฐ ์œ„ํ•œ ๊ณ ๊ธ‰ ์„ค์ •. + <b>Advanced visual changes</b> to fine-tune how the driving screen looks. + <b>๊ณ ๊ธ‰ ์‹œ๊ฐ์  ๋ณ€๊ฒฝ</b>์œผ๋กœ ์ฃผํ–‰ ํ™”๋ฉด์˜ ํ‘œ์‹œ๋ฅผ ๋ฏธ์„ธ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. Hide Current Speed - ํ˜„์žฌ ์†๋„ ์ˆจ๊ธฐ๊ธฐ + ํ˜„์žฌ ์†๋„ ์ˆจ๊ธฐ๊ธฐ - Hide the current speed from the driving screen. - ์šด์ „ ํ™”๋ฉด์—์„œ ํ˜„์žฌ ์†๋„๋ฅผ ์ˆจ๊ธฐ์„ธ์š”. + <b>Hide the current speed</b> from the driving screen. + ์šด์ „ ํ™”๋ฉด์—์„œ <b>ํ˜„์žฌ ์†๋„</b>๋ฅผ ์ˆจ๊น๋‹ˆ๋‹ค. Hide Lead Marker - ๋ฆฌ๋“œ ๋งˆ์ปค ์ˆจ๊ธฐ๊ธฐ + ์•ž์ฐจ ํ‘œ์‹œ ์ˆจ๊ธฐ๊ธฐ - Hide the marker for lead vehicles from the driving screen. - ์šด์ „ ํ™”๋ฉด์—์„œ ์„ ๋„ ์ฐจ๋Ÿ‰์˜ ๋งˆ์ปค๋ฅผ ์ˆจ๊ธฐ์„ธ์š”. + <b>Hide the lead-vehicle marker</b> from the driving screen. + ์šด์ „ ํ™”๋ฉด์—์„œ <b>์„ ๋‘ ์ฐจ๋Ÿ‰ ํ‘œ์‹œ</b>๋ฅผ ์ˆจ๊น๋‹ˆ๋‹ค. Hide Map Settings Button - ์ง€๋„ ์„ค์ • ๋ฒ„ํŠผ ์ˆจ๊ธฐ๊ธฐ + ์ง€๋„ ์„ค์ • ๋ฒ„ํŠผ ์ˆจ๊ธฐ๊ธฐ - Hide the map settings button from the driving screen. - ์šด์ „ ํ™”๋ฉด์—์„œ ์ง€๋„ ์„ค์ • ๋ฒ„ํŠผ์„ ์ˆจ๊ธฐ์„ธ์š”. + <b>Hide the map settings button or map</b> from the driving screen. + <b>์ฃผํ–‰ ํ™”๋ฉด์—์„œ ์ง€๋„ ์„ค์ • ๋ฒ„ํŠผ ๋˜๋Š” ์ง€๋„๋ฅผ ์ˆจ๊น๋‹ˆ๋‹ค</b> Hide Max Speed - ์ตœ๋Œ€ ์†๋„ ์ˆจ๊ธฐ๊ธฐ + ์ตœ๊ณ  ์†๋„ ์ˆจ๊ธฐ๊ธฐ - Hide the max speed from the driving screen. - ์šด์ „ ํ™”๋ฉด์—์„œ ์ตœ๋Œ€ ์†๋„๋ฅผ ์ˆจ๊ธฐ์„ธ์š”. + <b>Hide the max speed</b> from the driving screen. + ์ฃผํ–‰ ํ™”๋ฉด์—์„œ <b>์ตœ๊ณ  ์†๋„</b>๋ฅผ ์ˆจ๊น๋‹ˆ๋‹ค. Hide Non-Critical Alerts - ๋น„ํ•„์ˆ˜ ๊ฒฝ๊ณ  ์ˆจ๊ธฐ๊ธฐ + ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ๊ณ  ์ˆจ๊ธฐ๊ธฐ - Hide non-critical alerts from the driving screen. - ์šด์ „ ํ™”๋ฉด์—์„œ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ๊ณ ๋ฅผ ์ˆจ๊น๋‹ˆ๋‹ค. + <b>Hide non-critical alerts</b> from the driving screen. + ์ฃผํ–‰ ํ™”๋ฉด์—์„œ <b>๋น„์ค‘์š” ๊ฒฝ๊ณ  ์ˆจ๊ธฐ๊ธฐ</b>. Hide Speed Limits - ์†๋„ ์ œํ•œ ์ˆจ๊ธฐ๊ธฐ + ์†๋„ ์ œํ•œ ์ˆจ๊ธฐ๊ธฐ - Hide the speed limits from the driving screen. - ์šด์ „ ํ™”๋ฉด์—์„œ ์†๋„ ์ œํ•œ์„ ์ˆจ๊ธฐ์„ธ์š”. + <b>Hide posted speed limits</b> from the driving screen. + ์ฃผํ–‰ ํ™”๋ฉด์—์„œ <b>๊ฒŒ์‹œ๋œ ์ œํ•œ ์†๋„</b>๋ฅผ ์ˆจ๊น๋‹ˆ๋‹ค. Use Wheel Speed - ํœ  ์†๋„ ์‚ฌ์šฉ + ํœ  ์†๋„ ์‚ฌ์šฉ - Use the vehicle's wheel speed instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives. - ์ฐจ๋Ÿ‰์˜ ํœ  ์†๋„๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ ์†๋„ ๋Œ€์‹  ์‚ฌ์šฉํ•˜์„ธ์š”. ์ด๋Š” ์ˆœ์ „ํžˆ ์‹œ๊ฐ์ ์ธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด๋ฉฐ openpilot์˜ ์ฃผํ–‰ ๋ฐฉ์‹์—๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + <b>Use the vehicle's wheel speed</b> instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives! + <b>๊ณ„๊ธฐํŒ ์†๋„ ๋Œ€์‹  ์ฐจ๋Ÿ‰์˜ ๋ฐ”ํ€ด ์†๋„๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”</b>. ์ด๋Š” ์ˆœ์ „ํžˆ ์‹œ๊ฐ์  ๋ณ€๊ฒฝ์ด๋ฉฐ openpilot์˜ ์ฃผํ–‰ ๋ฐฉ์‹์—๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! Developer UI - ๊ฐœ๋ฐœ์ž UI + ๊ฐœ๋ฐœ์ž UI - Detailed information about openpilot's internal operations. - openpilot์˜ ๋‚ด๋ถ€ ์šด์˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด. + <b>Detailed information about openpilot's internal operations.</b> + <b>openpilot์˜ ๋‚ด๋ถ€ ์ž‘๋™์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด.</b> Adjacent Path Metrics - ์ธ์ ‘ ๊ฒฝ๋กœ ๋ฉ”ํŠธ๋ฆญ + ์ธ์ ‘ ๊ฒฝ๋กœ ๋ฉ”ํŠธ๋ฆญ์Šค - Metrics displayed on top of the adjacent lanes measuring their current width. - ์ธ์ ‘ ์ฐจ์„  ์œ„์— ํ‘œ์‹œ๋œ ๋ฉ”ํŠธ๋ฆญ์€ ํ˜„์žฌ ๋„ˆ๋น„๋ฅผ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค. + <b>Show the width of the adjacent lanes.</b> + <b>์ธ์ ‘ ์ฐจ์„ ์˜ ๋„ˆ๋น„๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.</b> Developer Metrics - ๊ฐœ๋ฐœ์ž ๋ฉ”ํŠธ๋ฆญ + ๊ฐœ๋ฐœ์ž ๋ฉ”ํŠธ๋ฆญ์Šค - Performance data, sensor readings, and system metrics for debugging and optimizing openpilot. - ๋””๋ฒ„๊น… ๋ฐ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ openpilot์˜ ์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ, ์„ผ์„œ ํŒ๋…๊ฐ’ ๋ฐ ์‹œ์Šคํ…œ ๋ฉ”ํŠธ๋ฆญ. + <b>Performance data, sensor readings, and system metrics</b> for debugging and optimizing openpilot. + ๋””๋ฒ„๊น… ๋ฐ openpilot ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ <b>์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ, ์„ผ์„œ ํŒ๋…๊ฐ’, ์‹œ์Šคํ…œ ์ง€ํ‘œ</b>. Border Metrics - ๊ฒฝ๊ณ„ ์ง€ํ‘œ + ๊ฒฝ๊ณ„ ๋ฉ”ํŠธ๋ฆญ์Šค - Metrics displayed around the border of the driving screen.<br><br><b>Blind Spot</b>: Turn the border red when a vehicle is detected in a blind spot<br><b>Steering Torque</b>: Highlight the border green to red in accordance to the amount of steering torque being used<br><b>Turn Signal</b>: Flash the border yellow when a turn signal is active - ์šด์ „ ํ™”๋ฉด์˜ ํ…Œ๋‘๋ฆฌ ์ฃผ๋ณ€์— ํ‘œ์‹œ๋˜๋Š” ๋ฉ”ํŠธ๋ฆญ.<br><br><b>์‚ฌ๊ฐ์ง€๋Œ€</b>: ์‚ฌ๊ฐ์ง€๋Œ€์— ์ฐจ๋Ÿ‰์ด ๊ฐ์ง€๋˜๋ฉด ํ…Œ๋‘๋ฆฌ๋ฅผ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๋ณ€๊ฒฝ<br><b>์กฐํ–ฅ ํ† ํฌ</b>: ์‚ฌ์šฉ ์ค‘์ธ ์กฐํ–ฅ ํ† ํฌ์˜ ์–‘์— ๋”ฐ๋ผ ํ…Œ๋‘๋ฆฌ๋ฅผ ์ดˆ๋ก์ƒ‰์—์„œ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ<br><b>๋ฐฉํ–ฅ ์ง€์‹œ๋“ฑ</b>: ๋ฐฉํ–ฅ ์ง€์‹œ๋“ฑ์ด ํ™œ์„ฑํ™”๋˜๋ฉด ํ…Œ๋‘๋ฆฌ๋ฅผ ๋…ธ๋ž€์ƒ‰์œผ๋กœ ๊นœ๋ฐ•์ž„ + <b>Show statuses along the border of the driving screen.</b><br><br><b>Blind Spot</b>: The border turns red when a vehicle is in a blind spot<br><b>Steering Torque</b>: The border goes from green to red according to how much steering torque is being used<br><b>Turn Signal</b>: The border flashes yellow when a turn signal is on + <b>์ฃผํ–‰ ํ™”๋ฉด์˜ ๊ฐ€์žฅ์ž๋ฆฌ์— ์ƒํƒœ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.</b><br><br><b>์‚ฌ๊ฐ์ง€๋Œ€</b>: ์‚ฌ๊ฐ์ง€๋Œ€์— ์ฐจ๋Ÿ‰์ด ์žˆ์„ ๋•Œ ํ…Œ๋‘๋ฆฌ๊ฐ€ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๋ณ€ํ•ฉ๋‹ˆ๋‹ค<br><b>์กฐํ–ฅ ํ† ํฌ</b>: ์‚ฌ์šฉ ์ค‘์ธ ์กฐํ–ฅ ํ† ํฌ์˜ ์–‘์— ๋”ฐ๋ผ ํ…Œ๋‘๋ฆฌ๊ฐ€ ์ดˆ๋ก์ƒ‰์—์„œ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๋ณ€ํ•ฉ๋‹ˆ๋‹ค<br><b>๋ฐฉํ–ฅ์ง€์‹œ๋“ฑ</b>: ๋ฐฉํ–ฅ์ง€์‹œ๋“ฑ์ด ์ผœ์ง€๋ฉด ํ…Œ๋‘๋ฆฌ๊ฐ€ ๋…ธ๋ž€์ƒ‰์œผ๋กœ ๊นœ๋ฐ•์ž…๋‹ˆ๋‹ค Lead Info - ๋ฆฌ๋“œ ์ •๋ณด + ์„ ํ–‰ ์ฐจ๋Ÿ‰ ์ •๋ณด - Metrics displayed under vehicle markers listing their distance and current speed. - ์ฐจ๋Ÿ‰ ๋งˆ์ปค ์•„๋ž˜์— ํ‘œ์‹œ๋˜๋Š” ๊ฑฐ๋ฆฌ ๋ฐ ํ˜„์žฌ ์†๋„ ๋ฉ”ํŠธ๋ฆญ. + <b>Show each tracked vehicle's distance and speed</b> below its marker. + <b>๊ฐ ์ถ”์  ์ฐจ๋Ÿ‰์˜ ๊ฑฐ๋ฆฌ์™€ ์†๋„</b>๋ฅผ ํ‘œ์‹œ ๋งˆ์ปค ์•„๋ž˜์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.</b> FPS Display - FPS ํ‘œ์‹œ + FPS ํ‘œ์‹œ - Display the <b>Frames Per Second (FPS)</b> at the bottom of the driving screen. - ์šด์ „ ํ™”๋ฉด ํ•˜๋‹จ์— <b>์ดˆ๋‹น ํ”„๋ ˆ์ž„ ์ˆ˜ (FPS)</b>๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. + <b>Show the frames per second (FPS)</b> at the bottom of the driving screen. + ์šด์ „ ํ™”๋ฉด ํ•˜๋‹จ์— <b>์ดˆ๋‹น ํ”„๋ ˆ์ž„ ์ˆ˜(FPS)๋ฅผ ํ‘œ์‹œ</b>ํ•ฉ๋‹ˆ๋‹ค. Numerical Temperature Gauge - ์ˆ˜์น˜ ์˜จ๋„ ๊ฒŒ์ด์ง€ + ์ˆซ์ž ์˜จ๋„ ๊ฒŒ์ด์ง€ - Use numerical temperature readings instead of status labels in the sidebar. - ์‚ฌ์ด๋“œ๋ฐ”์—์„œ ์ƒํƒœ ๋ ˆ์ด๋ธ” ๋Œ€์‹  ์ˆซ์ž ์˜จ๋„ ์ฝ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. - - - Display system information (<b>CPU</b>, <b>GPU</b>, <b>RAM usage</b>, <b>IP address</b>, <b>device storage</b>) in the sidebar. - ์‚ฌ์ด๋“œ๋ฐ”์— ์‹œ์Šคํ…œ ์ •๋ณด(<b>CPU</b>, <b>GPU</b>, <b>RAM ์‚ฌ์šฉ๋Ÿ‰</b>, <b>IP ์ฃผ์†Œ</b>, <b>์žฅ์น˜ ์ €์žฅ์†Œ</b>)๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. - - - Use International System of Units - ๊ตญ์ œ ๋‹จ์œ„๊ณ„ ์‚ฌ์šฉ - - - Display measurements using the <b>International System of Units (SI)</b> standard. - ์ธก์ •์„ <b>๊ตญ์ œ๋‹จ์œ„๊ณ„(SI)</b> ํ‘œ์ค€์„ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. - - - Developer Sidebar - ๊ฐœ๋ฐœ์ž ์‚ฌ์ด๋“œ๋ฐ” - - - Display debugging info and metrics in a dedicated sidebar on the right side of the screen. - ๋””๋ฒ„๊น… ์ •๋ณด์™€ ๋ฉ”ํŠธ๋ฆญ์„ ํ™”๋ฉด ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ์ „์šฉ ์‚ฌ์ด๋“œ๋ฐ”์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. - - - Metric #1 - Metric #1 - - - Metric to display in the first metric in the "Developer Sidebar". - "๊ฐœ๋ฐœ์ž ์‚ฌ์ด๋“œ๋ฐ”"์˜ ์ฒซ ๋ฒˆ์งธ ๋ฉ”ํŠธ๋ฆญ์— ํ‘œ์‹œํ•  ๋ฉ”ํŠธ๋ฆญ. - - - Metric #2 - ๋ฉ”ํŠธ๋ฆญ #2 - - - Metric to display in the second metric in the "Developer Sidebar". - "๊ฐœ๋ฐœ์ž ์‚ฌ์ด๋“œ๋ฐ”"์˜ ๋‘ ๋ฒˆ์งธ ๋ฉ”ํŠธ๋ฆญ์— ํ‘œ์‹œํ•  ๋ฉ”ํŠธ๋ฆญ. - - - Metric #3 - ๋ฉ”ํŠธ๋ฆญ #3 - - - Metric to display in the third metric in the "Developer Sidebar". - "๊ฐœ๋ฐœ์ž ์‚ฌ์ด๋“œ๋ฐ”"์˜ ์„ธ ๋ฒˆ์งธ ๋ฉ”ํŠธ๋ฆญ์— ํ‘œ์‹œํ•  ๋ฉ”ํŠธ๋ฆญ. - - - Metric #4 - ๋ฉ”ํŠธ๋ฆญ #4 - - - Metric to display in the fourth metric in the "Developer Sidebar". - "๊ฐœ๋ฐœ์ž ์‚ฌ์ด๋“œ๋ฐ”"์˜ ๋„ค ๋ฒˆ์งธ ๋ฉ”ํŠธ๋ฆญ์— ํ‘œ์‹œํ•  ๋ฉ”ํŠธ๋ฆญ. - - - Metric #5 - ๋ฉ”ํŠธ๋ฆญ #5 - - - Metric to display in the fifth metric in the "Developer Sidebar". - "๊ฐœ๋ฐœ์ž ์‚ฌ์ด๋“œ๋ฐ”"์˜ ๋‹ค์„ฏ ๋ฒˆ์งธ ๋ฉ”ํŠธ๋ฆญ์— ํ‘œ์‹œํ•  ๋ฉ”ํŠธ๋ฆญ. - - - Metric #6 - ๋ฉ”ํŠธ๋ฆญ #6 - - - Metric to display in the sixth metric in the "Developer Sidebar". - "๊ฐœ๋ฐœ์ž ์‚ฌ์ด๋“œ๋ฐ”"์˜ ์—ฌ์„ฏ ๋ฒˆ์งธ ๋ฉ”ํŠธ๋ฆญ์— ํ‘œ์‹œํ•  ๋ฉ”ํŠธ๋ฆญ. - - - Metric #7 - ๋ฉ”ํŠธ๋ฆญ #7 - - - Metric to display in the seventh metric in the "Developer Sidebar". - "๊ฐœ๋ฐœ์ž ์‚ฌ์ด๋“œ๋ฐ”"์˜ ์ผ๊ณฑ ๋ฒˆ์งธ ๋ฉ”ํŠธ๋ฆญ์— ํ‘œ์‹œํ•  ๋ฉ”ํŠธ๋ฆญ. - - - Developer Widgets - ๊ฐœ๋ฐœ์ž ์œ„์ ฏ - - - Overlays displaying debugging visuals, internal states, and model predictions on the driving screen. - ์šด์ „ ํ™”๋ฉด์— ๋””๋ฒ„๊น… ์‹œ๊ฐํ™”, ๋‚ด๋ถ€ ์ƒํƒœ ๋ฐ ๋ชจ๋ธ ์˜ˆ์ธก์„ ํ‘œ์‹œํ•˜๋Š” ์˜ค๋ฒ„๋ ˆ์ด. - - - Adjacent Leads Tracking - ์ธ์ ‘ ๋ฆฌ๋“œ ์ถ”์  - - - Adjacent leads detected by the car's radar to the left and right of the current driving path. - ์ฐจ๋Ÿ‰์˜ ๋ ˆ์ด๋”๊ฐ€ ํ˜„์žฌ ์ฃผํ–‰ ๊ฒฝ๋กœ์˜ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ์—์„œ ์ธ์ ‘ํ•œ ์ฐจ๋Ÿ‰์„ ๊ฐ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค. - - - Model Stopping Point - ๋ชจ๋ธ ์ค‘์ง€ ์ง€์  - - - Display an image on the screen where openpilot is wanting to stop. - openpilot๊ฐ€ ๋ฉˆ์ถ”๋ ค๋Š” ๊ณณ์— ํ™”๋ฉด์— ์ด๋ฏธ์ง€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. - - - Radar Tracks - ๋ ˆ์ด๋” ํŠธ๋ž™ - - - Display all of the radar points produced by the car's radar. - ์ž๋™์ฐจ ๋ ˆ์ด๋”๊ฐ€ ์ƒ์„ฑํ•œ ๋ชจ๋“  ๋ ˆ์ด๋” ํฌ์ธํŠธ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. - - - Driving Screen Widgets - ์šด์ „ ํ™”๋ฉด ์œ„์ ฏ - - - Custom FrogPilot widgets for the driving screen. - ์šด์ „ ํ™”๋ฉด์„ ์œ„ํ•œ ๋งž์ถคํ˜• FrogPilot ์œ„์ ฏ. - - - Acceleration Path - ๊ฐ€์† ๊ฒฝ๋กœ - - - Colorize the driving path based on openpilot's current desired acceleration and deceleration rate. - openpilot์˜ ํ˜„์žฌ ์›ํ•˜๋Š” ๊ฐ€์† ๋ฐ ๊ฐ์†๋ฅ ์— ๋”ฐ๋ผ ์ฃผํ–‰ ๊ฒฝ๋กœ์— ์ƒ‰์ƒ์„ ์ž…ํž™๋‹ˆ๋‹ค. - - - Adjacent Lanes - ์ธ์ ‘ ์ฐจ์„  - - - Driving paths for the left and right adjacent lanes. - ์™ผ์ชฝ ๋ฐ ์˜ค๋ฅธ์ชฝ ์ธ์ ‘ ์ฐจ์„ ์˜ ์ฃผํ–‰ ๊ฒฝ๋กœ. - - - Blind Spot Path - ๋งน์  ๊ฒฝ๋กœ - - - Display a red driving path for detected vehicles in the corresponding lane's blind spot. - ํƒ์ง€๋œ ์ฐจ๋Ÿ‰์˜ ํ•ด๋‹น ์ฐจ์„  ์‚ฌ๊ฐ์ง€๋Œ€์— ๋นจ๊ฐ„์ƒ‰ ์ฃผํ–‰ ๊ฒฝ๋กœ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. - - - Compass - ๋‚˜์นจ๋ฐ˜ - - - A compass to show the current driving direction. - ํ˜„์žฌ ์ฃผํ–‰ ๋ฐฉํ–ฅ์„ ํ‘œ์‹œํ•˜๋Š” ๋‚˜์นจ๋ฐ˜. - - - Driving Personality Button - ์šด์ „ ์„ฑ๊ฒฉ ๋ฒ„ํŠผ - - - Display the current driving personality on the screen. Tap to switch personalities, or long press for 0.5 seconds to change the current state of <b>Experimental Mode</b>, or 2.5 seconds for <b>Traffic Mode</b>. - Translation A - - - Gas / Brake Pedal Indicators - ๊ฐ€์Šค / ๋ธŒ๋ ˆ์ดํฌ ํŽ˜๋‹ฌ ํ‘œ์‹œ๊ธฐ - - - Pedals to indicate when either of the pedals are currently being used.<br><br><b>Dynamic</b>: The pedals change in opacity in accordance to how much openpilot is accelerating or decelerating<br><b>Static</b>: The pedals are displayed with full opacity when active, and dimmed when not in use - ํŽ˜๋‹ฌ์ด ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ผ ๋•Œ ์ด๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.<br><br><b>๋™์ </b>: openpilot์ด ๊ฐ€์†ํ•˜๊ฑฐ๋‚˜ ๊ฐ์†ํ•˜๋Š” ์ •๋„์— ๋”ฐ๋ผ ํŽ˜๋‹ฌ์˜ ๋ถˆํˆฌ๋ช…๋„๊ฐ€ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.<br><b>์ •์ </b>: ํŽ˜๋‹ฌ์ด ํ™œ์„ฑํ™”๋˜๋ฉด ์™„์ „ํ•œ ๋ถˆํˆฌ๋ช…๋„๋กœ ํ‘œ์‹œ๋˜๊ณ , ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ๋Š” ํ๋ ค์ง‘๋‹ˆ๋‹ค. - - - Rotating Steering Wheel - ํšŒ์ „ํ•˜๋Š” ํ•ธ๋“ค - - - Rotate the steering wheel alongside the vehicle's physical steering wheel. - ์ฐจ๋Ÿ‰์˜ ๋ฌผ๋ฆฌ์  ์Šคํ‹ฐ์–ด๋ง ํœ ๊ณผ ํ•จ๊ป˜ ์Šคํ‹ฐ์–ด๋ง ํœ ์„ ํšŒ์ „ํ•˜์„ธ์š”. - - - Model UI - ๋ชจ๋ธ UI - - - Model visualizations on the driving screen for the driving path, lane lines, path edges, and road edges. - ์šด์ „ ๊ฒฝ๋กœ, ์ฐจ์„ , ๊ฒฝ๋กœ ๊ฐ€์žฅ์ž๋ฆฌ ๋ฐ ๋„๋กœ ๊ฐ€์žฅ์ž๋ฆฌ์— ๋Œ€ํ•œ ์šด์ „ ํ™”๋ฉด์˜ ๋ชจ๋ธ ์‹œ๊ฐํ™”. - - - Dynamic Path Width - ๋™์  ๊ฒฝ๋กœ ๋„ˆ๋น„ - - - Adjust the width of the driving path based on the current engagement state.<br><br><b>Fully engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Fully disengaged</b>: 50% - Translation A - - - Lane Lines Width - ์ฐจ์„  ๋„ˆ๋น„ - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 4 inches. - ์šด์ „ ํ™”๋ฉด์˜ ์ฐจ์„  ๋ผ์ธ์˜ ๋‘๊ป˜.<br><br><b>๊ธฐ๋ณธ๊ฐ’์€ <b>MUTCD</b> ์ฐจ์„  ๋ผ์ธ ๋„ˆ๋น„ ํ‘œ์ค€์ธ 4์ธ์น˜์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. - - - Path Edges Width - ๊ฒฝ๋กœ ๊ฐ€์žฅ์ž๋ฆฌ ๋„ˆ๋น„ - - - The width of the edges of the driving path that represent different driving modes and statuses.<br><br>Default is <b>20%</b> of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden - ์šด์ „ ๊ฒฝ๋กœ์˜ ๊ฐ€์žฅ์ž๋ฆฌ ๋„ˆ๋น„๋Š” ๋‹ค์–‘ํ•œ ์šด์ „ ๋ชจ๋“œ์™€ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.<br><br>๊ธฐ๋ณธ๊ฐ’์€ ์ „์ฒด ๊ฒฝ๋กœ ๋„ˆ๋น„์˜ <b>20%</b>์ž…๋‹ˆ๋‹ค.<br><br>์ƒ‰์ƒ ์•ˆ๋‚ด:<br><br>- <b>ํŒŒ๋ž€์ƒ‰</b>: ๋‚ด๋น„๊ฒŒ์ด์…˜<br>- <b>์—ฐํ•œ ํŒŒ๋ž€์ƒ‰</b>: ํ•ญ์ƒ ์ผœ์ง ์ธก๋ฉด<br>- <b>๋…น์ƒ‰</b>: ๊ธฐ๋ณธ๊ฐ’<br>- <b>์ฃผํ™ฉ์ƒ‰</b>: ์‹คํ—˜ ๋ชจ๋“œ<br>- <b>๋นจ๊ฐ„์ƒ‰</b>: ๊ตํ†ต ๋ชจ๋“œ<br>- <b>๋…ธ๋ž€์ƒ‰</b>: ์กฐ๊ฑด๋ถ€ ์‹คํ—˜ ๋ชจ๋“œ ๋ฌด์‹œ๋จ - - - Path Width - ๊ฒฝ๋กœ ๋„ˆ๋น„ - - - Road Edges Width - ๋„๋กœ ๊ฐ€์žฅ์ž๋ฆฌ ๋„ˆ๋น„ - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 4 inches. - ์šด์ „ ํ™”๋ฉด์—์„œ ๋„๋กœ ๊ฐ€์žฅ์ž๋ฆฌ์˜ ๋‘๊ป˜.<br><br><b>๊ธฐ๋ณธ๊ฐ’์€ <b>MUTCD</b> ์ฐจ์„  ๋„ˆ๋น„ ํ‘œ์ค€์ธ 4์ธ์น˜์˜ ์ ˆ๋ฐ˜๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. - - - "Unlimited" Road UI - "๋ฌด์ œํ•œ" ๋„๋กœ UI - - - Extend the display of the driving path, lane lines, and road edges as far as the model can see. - ๋ชจ๋ธ์ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ•œ ์šด์ „ ๊ฒฝ๋กœ, ์ฐจ์„ , ๋„๋กœ ๊ฐ€์žฅ์ž๋ฆฌ๋ฅผ ํ™•์žฅํ•˜์—ฌ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. - - - Navigation Widgets - ํƒ์ƒ‰ ์œ„์ ฏ - - - Map style tweaks, speed limits, and other navigation related widgets. - ์ง€๋„ ์Šคํƒ€์ผ ์กฐ์ •, ์†๋„ ์ œํ•œ ๋ฐ ๊ธฐํƒ€ ๋‚ด๋น„๊ฒŒ์ด์…˜ ๊ด€๋ จ ์œ„์ ฏ. - - - Larger Map Display - ๋” ํฐ ์ง€๋„ ํ‘œ์‹œ - - - Increase the size of the map for easier navigation readings. - ์ง€๋„๋ฅผ ํ™•๋Œ€ํ•˜์—ฌ ๋‚ด๋น„๊ฒŒ์ด์…˜ ์ฝ๊ธฐ๋ฅผ ์‰ฝ๊ฒŒ ํ•˜์‹ญ์‹œ์˜ค. - - - Map Style - ์ง€๋„ ์Šคํƒ€์ผ - - - The map style used for <b>Navigate on openpilot (NOO)</b>:<br><br><b>Stock</b>: Default comma.ai style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>mike854's (Satellite hybrid)</b>: Customized hybrid satellite view - <b>Navigate on openpilot (NOO)</b>์— ์‚ฌ์šฉ๋˜๋Š” ์ง€๋„ ์Šคํƒ€์ผ:<br><br><b>Stock</b>: ๊ธฐ๋ณธ comma.ai ์Šคํƒ€์ผ<br><b>Mapbox Streets</b>: ํ‘œ์ค€ ๊ฑฐ๋ฆฌ ์ค‘์‹ฌ ๋ณด๊ธฐ<br><b>Mapbox Outdoors</b>: ์•ผ์™ธ ๋ฐ ์ง€ํ˜• ํŠน์ง• ๊ฐ•์กฐ<br><b>Mapbox Light</b>: ๋ฏธ๋‹ˆ๋ฉ€๋ฆฌ์ŠคํŠธ, ๋ฐ์€ ํ…Œ๋งˆ<br><b>Mapbox Dark</b>: ๋ฏธ๋‹ˆ๋ฉ€๋ฆฌ์ŠคํŠธ, ์–ด๋‘์šด ํ…Œ๋งˆ<br><b>Mapbox Navigation Day</b>: ์ฃผ๊ฐ„ ๋‚ด๋น„๊ฒŒ์ด์…˜์— ์ตœ์ ํ™”<br><b>Mapbox Navigation Night</b>: ์•ผ๊ฐ„ ๋‚ด๋น„๊ฒŒ์ด์…˜์— ์ตœ์ ํ™”<br><b>Mapbox Satellite</b>: ์œ„์„ฑ ์ด๋ฏธ์ง€ ์ „์šฉ<br><b>Mapbox Satellite Streets</b>: ๊ฑฐ๋ฆฌ ๋ ˆ์ด๋ธ”์ด ์žˆ๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์œ„์„ฑ ์ด๋ฏธ์ง€<br><b>Mapbox Traffic Night</b>: ๊ตํ†ต ์ƒํ™ฉ์„ ๊ฐ•์กฐํ•˜๋Š” ์–ด๋‘์šด ํ…Œ๋งˆ<br><b>mike854's (Satellite hybrid)</b>: ๋งž์ถคํ˜• ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์œ„์„ฑ ๋ณด๊ธฐ - - - Road Name - ๋„๋กœ๋ช… - - - Display the road name at the bottom of the driving screen using data from <b>OpenStreetMap</b>. - ์šด์ „ ํ™”๋ฉด ํ•˜๋‹จ์— <b>OpenStreetMap</b> ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„๋กœ ์ด๋ฆ„์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. - - - Show Speed Limits - ์†๋„ ์ œํ•œ ํ‘œ์‹œ - - - Display speed limits in the top left corner of the driving screen. Uses data from your car's dashboard (if supported) and data from <b>OpenStreetMaps</b>. - ์šด์ „ ํ™”๋ฉด์˜ ์™ผ์ชฝ ์ƒ๋‹จ์— ์†๋„ ์ œํ•œ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ฐจ๋Ÿ‰์˜ ๋Œ€์‹œ๋ณด๋“œ(์ง€์›๋˜๋Š” ๊ฒฝ์šฐ)์™€ <b>OpenStreetMaps</b>์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. - - - Show Speed Limits from Mapbox - Mapbox์—์„œ ์†๋„ ์ œํ•œ ํ‘œ์‹œ - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - ๋‹ค๋ฅธ ์†Œ์Šค๊ฐ€ ์—†์„ ๋•Œ <b>Mapbox</b> ์†๋„ ์ œํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. - - - Use Vienna-Style Speed Signs - ๋น„์—”๋‚˜ ์Šคํƒ€์ผ ์†๋„ ํ‘œ์ง€ํŒ ์‚ฌ์šฉ - - - Force <b>Vienna-style (EU)</b> speed limit signs instead of <b>MUTCD (US)</b>. - <b>๋น„์—”๋‚˜ ์Šคํƒ€์ผ (EU)</b> ์†๋„ ์ œํ•œ ํ‘œ์ง€ํŒ์„ <b>MUTCD (US)</b> ๋Œ€์‹  ๊ฐ•์ œ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. - - - Quality of Life - ์‚ถ์˜ ์งˆ - - - Visual features to improve your overall openpilot experience. - ์‹œ๊ฐ์  ๊ธฐ๋Šฅ์œผ๋กœ ์ „์ฒด ์˜คํ”ˆํŒŒ์ผ๋Ÿฟ ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•˜์„ธ์š”. - - - Camera View - ์นด๋ฉ”๋ผ ๋ณด๊ธฐ - - - The active camera view display. This is purely a visual change and doesn't impact how openpilot drives! - ํ™œ์„ฑ ์นด๋ฉ”๋ผ ๋ทฐ ๋””์Šคํ”Œ๋ ˆ์ด. ์ด๋Š” ์ˆœ์ „ํžˆ ์‹œ๊ฐ์ ์ธ ๋ณ€ํ™”์ด๋ฉฐ openpilot์˜ ์šด์ „์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! - - - Show Driver Camera When In Reverse - ํ›„์ง„ ์‹œ ์šด์ „์ž ์นด๋ฉ”๋ผ ํ‘œ์‹œ - - - Display the driver camera feed when the vehicle is in reverse. - ์ฐจ๋Ÿ‰์ด ํ›„์ง„ํ•  ๋•Œ ์šด์ „์ž ์นด๋ฉ”๋ผ ํ”ผ๋“œ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. - - - Standby Mode - ๋Œ€๊ธฐ ๋ชจ๋“œ - - - Turn the screen off when driving and automatically wake it up if engagement state changes or important alerts occur. - ์šด์ „ ์ค‘์—๋Š” ํ™”๋ฉด์„ ๋„๊ณ , ์ฐธ์—ฌ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ์ค‘์š”ํ•œ ์•Œ๋ฆผ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ž๋™์œผ๋กœ ๊นจ์›๋‹ˆ๋‹ค. - - - Stopped Timer - ํƒ€์ด๋จธ ์ค‘์ง€๋จ - - - Replace the current speed with a timer when stopped to indicate how long the vehicle has been stopped for. - ์ฐจ๋Ÿ‰์ด ์ •์ฐจํ•œ ์‹œ๊ฐ„์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์žฌ ์†๋„๋ฅผ ํƒ€์ด๋จธ๋กœ ๊ต์ฒดํ•˜์‹ญ์‹œ์˜ค. - - - Blind Spot - ์‚ฌ๊ฐ์ง€๋Œ€ - - - Steering Torque - ์กฐํ–ฅ ํ† ํฌ - - - Turn Signal - ๋ฐฉํ–ฅ ์ง€์‹œ๋“ฑ - - - Fahrenheit - ํ™”์”จ - - - CPU - CPU - - - GPU - GPU - - - IP - IP - - - RAM - RAM - - - SSD Left - SSD ๋‚จ์Œ - - - SSD Used - SSD ์‚ฌ์šฉ๋จ - - - None - ์—†์Œ - - - Acceleration: Current - ๊ฐ€์†: ํ˜„์žฌ - - - Acceleration: Max - ๊ฐ€์†: ์ตœ๋Œ€ - - - Auto Tune: Actuator Delay - ์ž๋™ ํŠœ๋‹: ์•ก์ถ”์—์ดํ„ฐ ์ง€์—ฐ - - - Auto Tune: Friction - ์ž๋™ ์กฐ์ •: ๋งˆ์ฐฐ - - - Auto Tune: Lateral Acceleration - ์ž๋™ ํŠœ๋‹: ํšก๊ฐ€์†๋„ - - - Auto Tune: Steer Ratio - ์˜คํ†  ํŠ : ์กฐํ–ฅ ๋น„์œจ - - - Auto Tune: Stiffness Factor - ์ž๋™ ์กฐ์ •: ๊ฐ•์„ฑ ๊ณ„์ˆ˜ - - - Engagement %: Lateral - ์ฐธ์—ฌ %: ์ธก๋ฉด - - - Engagement %: Longitudinal - ์ฐธ์—ฌ %: ์ข…๋‹จ์  - - - Lateral Control: Steering Angle - ์ธก๋ฉด ์ œ์–ด: ์กฐํ–ฅ ๊ฐ๋„ - - - Lateral Control: Torque % Used - ์ธก๋ฉด ์ œ์–ด: ์‚ฌ์šฉ๋œ ํ† ํฌ % - - - Longitudinal Control: Actuator Acceleration Output - ์ข…๋ฐฉํ–ฅ ์ œ์–ด: ์•ก์ถ”์—์ดํ„ฐ ๊ฐ€์† ์ถœ๋ ฅ - - - Longitudinal MPC Jerk: Acceleration - ์ข…๋ฐฉํ–ฅ MPC ์ €ํฌ: ๊ฐ€์†๋„ - - - Longitudinal MPC Jerk: Danger Zone - ์ข…๋ฐฉํ–ฅ MPC Jerk: ์œ„ํ—˜ ๊ตฌ์—ญ - - - Longitudinal MPC Jerk: Speed Control - ์ข…๋ฐฉํ–ฅ MPC Jerk: ์†๋„ ์ œ์–ด - - - SELECT - SELECT - - - Select a metric to display - ํ‘œ์‹œํ•  ๋ฉ”ํŠธ๋ฆญ ์„ ํƒ - - - Show Distance - ๊ฑฐ๋ฆฌ ํ‘œ์‹œ - - - Dynamic - ๋‹ค์ด๋‚˜๋ฏน - - - Static - ์ •์  - - - inches - ์ธ์น˜ - - - Off - ๋„๊ธฐ - - - feet - ํ”ผํŠธ - - - Full Map - ์ „์ฒด ์ง€๋„ - - - Stock openpilot - ์ฃผ์‹ ์˜คํ”ˆํŒŒ์ผ๋Ÿฟ - - - FrogsGoMoo's Personalized Style - FrogsGoMoo์˜ ๊ฐœ์ธํ™”๋œ ์Šคํƒ€์ผ - - - Mapbox Streets - Mapbox Streets - - - Mapbox Outdoors - Mapbox Outdoors - - - Mapbox Light - Mapbox Light - - - Mapbox Dark - Mapbox Dark - - - Mapbox Navigation Day - Mapbox ๋‚ด๋น„๊ฒŒ์ด์…˜ ๋ฐ์ด - - - Mapbox Navigation Night - Mapbox Navigation Night - - - Mapbox Satellite - Mapbox Satellite - - - Mapbox Satellite Streets - Mapbox ์œ„์„ฑ ๊ฑฐ๋ฆฌ - - - Mapbox Traffic Night - Mapbox Traffic Night - - - Mike's Personalized Style - ๋งˆ์ดํฌ์˜ ๊ฐœ์ธํ™”๋œ ์Šคํƒ€์ผ - - - Select a map style - ์ง€๋„ ์Šคํƒ€์ผ ์„ ํƒ - - - Auto - ์ž๋™ - - - Driver - ์šด์ „์‚ฌ - - - Standard - ํ‘œ์ค€ - - - Wide - ๋„“์€ - - - foot - ๋ฐœ - - - inch - ์ธ์น˜ - - - meter - ๋ฏธํ„ฐ - - - meters - ๋ฏธํ„ฐ - - - centimeter - ์„ผํ‹ฐ๋ฏธํ„ฐ - - - centimeters - ์„ผํ‹ฐ๋ฏธํ„ฐ - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 10 centimeters. - ์šด์ „ ํ™”๋ฉด์˜ ์ฐจ์„  ๋‘๊ป˜.<br><br><b>๊ธฐ๋ณธ๊ฐ’์€ <b>MUTCD</b> ์ฐจ์„  ๋„ˆ๋น„ ํ‘œ์ค€์ธ 10์„ผํ‹ฐ๋ฏธํ„ฐ์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 10 centimeters. - ์šด์ „ ํ™”๋ฉด์—์„œ ๋„๋กœ ๊ฐ€์žฅ์ž๋ฆฌ์˜ ๋‘๊ป˜.<br><br><b>๊ธฐ๋ณธ๊ฐ’์€ <b>MUTCD</b> ์ฐจ์„  ๋„ˆ๋น„ ํ‘œ์ค€ 10์„ผํ‹ฐ๋ฏธํ„ฐ์˜ ์ ˆ๋ฐ˜๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. + <b>Show a numerical temperature in the sidebar</b> instead of the status labels. + <b>์‚ฌ์ด๋“œ๋ฐ”์— ์ˆซ์ž ์˜จ๋„๋ฅผ ํ‘œ์‹œ</b>ํ•˜์—ฌ ์ƒํƒœ ๋ ˆ์ด๋ธ” ๋Œ€์‹  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Sidebar Metrics - ์‚ฌ์ด๋“œ๋ฐ” ๋ฉ”ํŠธ๋ฆญ์Šค + ์‚ฌ์ด๋“œ๋ฐ” ์ง€ํ‘œ - The width of the driving path on the driving screen.<br><br>Default <b>(6.1 feet)</b> matches the width of a <b>2019 Lexus ES 350</b>. - ์šด์ „ ํ™”๋ฉด์˜ ์ฃผํ–‰ ๊ฒฝ๋กœ ๋„ˆ๋น„.<br><br>๊ธฐ๋ณธ๊ฐ’ <b>(6.1ํ”ผํŠธ)</b>๋Š” <b>2019 Lexus ES 350</b>์˜ ๋„ˆ๋น„์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. + <b>Display system information</b> (CPU, GPU, RAM usage, IP address, device storage) in the sidebar. + <b>์‹œ์Šคํ…œ ์ •๋ณด ํ‘œ์‹œ</b> (CPU, GPU, RAM ์‚ฌ์šฉ๋Ÿ‰, IP ์ฃผ์†Œ, ์žฅ์น˜ ์ €์žฅ์†Œ)์„ ์‚ฌ์ด๋“œ๋ฐ”์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. - The width of the driving path on the driving screen.<br><br>Default <b>(1.9 meters)</b> matches the width of a <b>2019 Lexus ES 350</b>. - ์šด์ „ ํ™”๋ฉด์˜ ์ฃผํ–‰ ๊ฒฝ๋กœ ๋„ˆ๋น„.<br><br>๊ธฐ๋ณธ๊ฐ’ <b>(1.9๋ฏธํ„ฐ)</b>๋Š” <b>2019 Lexus ES 350</b>์˜ ๋„ˆ๋น„์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. + Use International System of Units + ๊ตญ์ œ๋‹จ์œ„๊ณ„(SI)๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค + + + <b>Display measurements using the "International System of Units" (SI)</b> standard. + <b>"๊ตญ์ œ๋‹จ์œ„๊ณ„"(SI)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธก์ •๊ฐ’์„ ํ‘œ์‹œ</b> ํ‘œ์ค€. + + + Developer Sidebar + ๊ฐœ๋ฐœ์ž ์‚ฌ์ด๋“œ๋ฐ” + + + <b>Display debugging info and metrics</b> in a dedicated sidebar on the right side of the screen. + ํ™”๋ฉด ์˜ค๋ฅธ์ชฝ์˜ ์ „์šฉ ์‚ฌ์ด๋“œ๋ฐ”์— <b>๋””๋ฒ„๊น… ์ •๋ณด์™€ ์ง€ํ‘œ๋ฅผ ํ‘œ์‹œ</b>ํ•ฉ๋‹ˆ๋‹ค. + + + Metric #1 + ๋ฉ”ํŠธ๋ฆญ #1 + + + <b>Select the metric shown in the first "Developer Sidebar" widget.</b> + <b>์ฒซ ๋ฒˆ์งธ "Developer Sidebar" ์œ„์ ฏ์— ํ‘œ์‹œํ•  ์ง€ํ‘œ๋ฅผ ์„ ํƒํ•˜์„ธ์š”.</b> + + + Metric #2 + ๋ฉ”ํŠธ๋ฆญ #2 + + + <b>Select the metric shown in the second "Developer Sidebar" widget.</b> + <b>๋‘ ๋ฒˆ์งธ "Developer Sidebar" ์œ„์ ฏ์— ํ‘œ์‹œ๋˜๋Š” ์ธก์ •ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜์„ธ์š”.</b> + + + Metric #3 + ๋ฉ”ํŠธ๋ฆญ #3 + + + <b>Select the metric shown in the third "Developer Sidebar" widget.</b> + <b>์„ธ ๋ฒˆ์งธ "Developer Sidebar" ์œ„์ ฏ์— ํ‘œ์‹œ๋œ ๋ฉ”ํŠธ๋ฆญ์„ ์„ ํƒํ•˜์„ธ์š”.</b> + + + Metric #4 + ๋ฉ”ํŠธ๋ฆญ #4 + + + <b>Select the metric shown in the fourth "Developer Sidebar" widget.</b> + <b>๋„ค ๋ฒˆ์งธ "Developer Sidebar" ์œ„์ ฏ์— ํ‘œ์‹œ๋œ ์ธก์ •ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜์„ธ์š”.</b> + + + Metric #5 + ๋ฉ”ํŠธ๋ฆญ #5 + + + <b>Select the metric shown in the fifth "Developer Sidebar" widget.</b> + <b>๋‹ค์„ฏ ๋ฒˆ์งธ "Developer Sidebar" ์œ„์ ฏ์— ํ‘œ์‹œ๋œ ์ง€ํ‘œ๋ฅผ ์„ ํƒํ•˜์„ธ์š”.</b> + + + Metric #6 + ๋ฉ”ํŠธ๋ฆญ #6 + + + <b>Select the metric shown in the sixth "Developer Sidebar" widget.</b> + <b>์—ฌ์„ฏ ๋ฒˆ์งธ "Developer Sidebar" ์œ„์ ฏ์— ํ‘œ์‹œ๋œ ๋ฉ”ํŠธ๋ฆญ์„ ์„ ํƒํ•˜์„ธ์š”.</b> + + + Metric #7 + ๋ฉ”ํŠธ๋ฆญ #7 + + + <b>Select the metric shown in the seventh "Developer Sidebar" widget.</b> + <b>์ผ๊ณฑ ๋ฒˆ์งธ "Developer Sidebar" ์œ„์ ฏ์— ํ‘œ์‹œ๋œ ๋ฉ”ํŠธ๋ฆญ์„ ์„ ํƒํ•˜์„ธ์š”.</b> + + + Developer Widgets + ๊ฐœ๋ฐœ์ž ์œ„์ ฏ + + + <b>Overlays for debugging visuals, internal states, and model predictions</b> on the driving screen. + ์šด์ „ ํ™”๋ฉด์— <b>๋””๋ฒ„๊น… ์‹œ๊ฐํ™”, ๋‚ด๋ถ€ ์ƒํƒœ, ๋ชจ๋ธ ์˜ˆ์ธก์„ ์œ„ํ•œ ์˜ค๋ฒ„๋ ˆ์ด</b> ํ‘œ์‹œ. + + + Adjacent Leads Tracking + ์ธ์ ‘ ์„ ํ–‰์ฐจ ์ถ”์  + + + <b>Display adjacent leads detected by the car's radar</b> to the left and right of the current driving path. + <b>์ฐจ๋Ÿ‰ ๋ ˆ์ด๋”๊ฐ€ ๊ฐ์ง€ํ•œ ์ธ์ ‘ ์„ ํ–‰ ์ฐจ๋Ÿ‰์„ ํ‘œ์‹œ</b>ํ•˜์—ฌ ํ˜„์žฌ ์ฃผํ–‰ ๊ฒฝ๋กœ์˜ ์ขŒ์šฐ์— ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค. + + + Model Stopping Point + ๋ชจ๋ธ ์ •์ง€ ์ง€์  + + + <b>Show a stop-sign marker where the model intends to stop.</b> + <b>๋ชจ๋ธ์ด ์ •์ง€ํ•˜๋ ค๋Š” ์œ„์น˜์— ์ •์ง€ ํ‘œ์‹์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.</b> + + + Radar Tracks + ๋ ˆ์ด๋” ํŠธ๋ž™ + + + <b>Display all radar points</b> produced by the car's radar. + <b>์ฐจ๋Ÿ‰ ๋ ˆ์ด๋”์—์„œ ์ƒ์„ฑ๋œ ๋ชจ๋“  ๋ ˆ์ด๋” ํฌ์ธํŠธ ํ‘œ์‹œ</b> + + + Driving Screen Widgets + ์ฃผํ–‰ ํ™”๋ฉด ์œ„์ ฏ + + + <b>Custom FrogPilot widgets</b> for the driving screen. + ์šด์ „ ํ™”๋ฉด์„ ์œ„ํ•œ <b>๋งž์ถค FrogPilot ์œ„์ ฏ</b>. + + + Acceleration Path + ๊ฐ€์† ๊ฒฝ๋กœ + + + <b>Color the driving path by planned acceleration and braking.</b> + <b>๊ณ„ํš๋œ ๊ฐ€์†๊ณผ ์ œ๋™์— ๋”ฐ๋ผ ์ฃผํ–‰ ๊ฒฝ๋กœ๋ฅผ ์ƒ‰์ƒ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.</b> + + + Adjacent Lanes + ์ธ์ ‘ ์ฐจ๋กœ + + + <b>Show the driving paths for the left and right lanes.</b> + <b>์ขŒ์šฐ ์ฐจ์„ ์˜ ์ฃผํ–‰ ๊ฒฝ๋กœ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.</b> + + + Blind Spot Path + ์‚ฌ๊ฐ์ง€๋Œ€ ๊ฒฝ๋กœ + + + <b>Show a red path when a vehicle is in that lane's blind spot.</b> + <b>์ฐจ๋กœ์˜ ์‚ฌ๊ฐ์ง€๋Œ€์— ์ฐจ๋Ÿ‰์ด ์žˆ์„ ๋•Œ ๋นจ๊ฐ„ ๊ฒฝ๋กœ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.</b> + + + Compass + ๋‚˜์นจ๋ฐ˜ + + + <b>Show the current driving direction</b> with a simple on-screen compass. + <b>๊ฐ„๋‹จํ•œ ํ™”๋ฉด ๋‚˜์นจ๋ฐ˜์œผ๋กœ</b> ํ˜„์žฌ ์ฃผํ–‰ ๋ฐฉํ–ฅ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. + + + Driving Personality Button + ์ฃผํ–‰ ์„ฑํ–ฅ ๋ฒ„ํŠผ + + + <b>Control and view the current driving personality</b> via a driving screen widget. + ์šด์ „ ํ™”๋ฉด ์œ„์ ฏ์„ ํ†ตํ•ด <b>ํ˜„์žฌ ์šด์ „ ์„ฑํ–ฅ์„ ์ œ์–ดํ•˜๊ณ  ํ™•์ธ</b>ํ•˜์„ธ์š”. + + + Gas / Brake Pedal Indicators + ๊ฐ€์†/๋ธŒ๋ ˆ์ดํฌ ํŽ˜๋‹ฌ ํ‘œ์‹œ๊ธฐ + + + <b>On-screen gas and brake indicators.</b><br><br><b>Dynamic</b>: Opacity changes according to how much openpilot is accelerating or braking<br><b>Static</b>: Full when active, dim when not + <b>ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š” ๊ฐ€์† ๋ฐ ๋ธŒ๋ ˆ์ดํฌ ํ‘œ์‹œ๊ธฐ.</b><br><br><b>๋™์ </b>: openpilot์˜ ๊ฐ€์† ๋˜๋Š” ์ œ๋™ ์ •๋„์— ๋”ฐ๋ผ ํˆฌ๋ช…๋„๊ฐ€ ๋ณ€ํ•จ<br><b>์ •์ </b>: ํ™œ์„ฑํ™” ์‹œ ์ตœ๋Œ€, ๋น„ํ™œ์„ฑ ์‹œ ํ๋ฆผ + + + Rotating Steering Wheel + ํšŒ์ „ํ•˜๋Š” ์Šคํ‹ฐ์–ด๋ง ํœ  + + + <b>Rotate the driving screen wheel</b> with the physical steering wheel. + <b>์ฃผํ–‰ ํ™”๋ฉด ํœ ์„ ํšŒ์ „</b>ํ•˜๋ ค๋ฉด ์‹ค์ œ ์Šคํ‹ฐ์–ด๋ง ํœ ์„ ๋Œ๋ฆฌ์„ธ์š”. + + + Model UI + ๋ชจ๋ธ UI + + + <b>Model visualizations</b> for the driving path, lane lines, path edges, and road edges. + ์ฃผํ–‰ ๊ฒฝ๋กœ, ์ฐจ์„ , ๊ฒฝ๊ณ„์„ , ๋„๋กœ ๊ฐ€์žฅ์ž๋ฆฌ์— ๋Œ€ํ•œ <b>๋ชจ๋ธ ์‹œ๊ฐํ™”</b>. + + + Dynamic Path Width + ๋™์  ๊ฒฝ๋กœ ํญ + + + <b>Change the path width based on engagement.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% + <b>์šด์ „ ๊ฐœ์ž… ์ •๋„์— ๋”ฐ๋ผ ๊ฒฝ๋กœ ํญ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.</b><br><br><b>์™„์ „ ๊ฐœ์ž…</b>: 100%<br><b>ํ•ญ์ƒ ๊ฐ€๋กœ ์ œ์–ด</b>: 75%<br><b>ํ•ด์ œ</b>: 50% + + + Lane Lines Width + ์ฐจ์„  ๋„ˆ๋น„ + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 4 inches. + <b>์ฐจ์„  ํ‘œ์‹œ ๋‘๊ป˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</b><br><br>๊ธฐ๋ณธ๊ฐ’์€ MUTCD์˜ ์ฐจ์„  ํ‘œ์‹œ ํญ ํ‘œ์ค€์ธ 4 inches์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. + + + Path Edges Width + ๊ฒฝ๋กœ ๊ฐ€์žฅ์ž๋ฆฌ ๋„ˆ๋น„ + + + <b>Set the driving-path edge width</b> that represents different driving modes and statuses.<br><br>Default is 20% of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + <b>์šด์ „ ๊ฒฝ๋กœ ๊ฐ€์žฅ์ž๋ฆฌ ๋‘๊ป˜๋ฅผ ์„ค์ •</b>ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์šด์ „ ๋ชจ๋“œ์™€ ์ƒํƒœ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.<br><br>๊ธฐ๋ณธ๊ฐ’์€ ์ „์ฒด ๊ฒฝ๋กœ ๋„ˆ๋น„์˜ 20%์ž…๋‹ˆ๋‹ค.<br><br>์ƒ‰์ƒ ์•ˆ๋‚ด:<br><br>- <b>Blue</b>: ๋‚ด๋น„๊ฒŒ์ด์…˜<br>- <b>Light Blue</b>: ํ•ญ์ƒ ์ผœ์ง ํšก๋ฐฉํ–ฅ<br>- <b>Green</b>: ๊ธฐ๋ณธ๊ฐ’<br>- <b>Orange</b>: ์‹คํ—˜์  ๋ชจ๋“œ<br>- <b>Red</b>: ํŠธ๋ž˜ํ”ฝ ๋ชจ๋“œ<br>- <b>Yellow</b>: ์กฐ๊ฑด๋ถ€ ์‹คํ—˜์  ๋ชจ๋“œ ์žฌ์ •์˜๋จ + + + Path Width + ๊ฒฝ๋กœ ๋„ˆ๋น„ + + + <b>Set the driving-path width.</b><br><br>Default (6.1 feet) matches the width of a 2019 Lexus ES 350. + <b>์ฃผํ–‰ ๊ฒฝ๋กœ ๋„ˆ๋น„๋ฅผ ์„ค์ •ํ•˜์„ธ์š”.</b><br><br>๊ธฐ๋ณธ๊ฐ’(6.1ํ”ผํŠธ)์€ 2019 Lexus ES 350์˜ ๋„ˆ๋น„์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. + + + Road Edges Width + ๋„๋กœ ๊ฐ€์žฅ์ž๋ฆฌ ํญ + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 4 inches. + <b>๋…ธ๋ณ€ ๋‘๊ป˜๋ฅผ ์„ค์ •ํ•˜์„ธ์š”.</b><br><br>๊ธฐ๋ณธ๊ฐ’์€ MUTCD ์ฐจ์„ ์„  ํญ ํ‘œ์ค€ 4์ธ์น˜์˜ ์ ˆ๋ฐ˜๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. + + + "Unlimited" Road UI + "๋ฌด์ œํ•œ" ๋„๋กœ UI + + + <b>Extend the length of the driving path, lane lines, and road edges</b> for as far as the model can see. + <b>๋ชจ๋ธ์ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ•œ ๋ฉ€๋ฆฌ๊นŒ์ง€ ์ฃผํ–‰ ๊ฒฝ๋กœ, ์ฐจ์„ , ๋„๋กœ ๊ฐ€์žฅ์ž๋ฆฌ๋ฅผ ์—ฐ์žฅํ•ฉ๋‹ˆ๋‹ค</b> + + + Navigation Widgets + ๋‚ด๋น„๊ฒŒ์ด์…˜ ์œ„์ ฏ + + + <b>Map style, speed limits, and other navigation widgets.</b> + <b>์ง€๋„ ์Šคํƒ€์ผ, ์ œํ•œ ์†๋„, ๊ธฐํƒ€ ๋‚ด๋น„๊ฒŒ์ด์…˜ ์œ„์ ฏ.</b> + + + Larger Map Display + ๋” ํฐ ์ง€๋„ ํ‘œ์‹œ + + + <b>Increase the map size</b> for easier navigation readings. + <b>์ง€๋„ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ ค</b> ๊ธธ์ฐพ๊ธฐ ํ™•์ธ์„ ๋” ์‰ฝ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. + + + Map Style + ์ง€๋„ ์Šคํƒ€์ผ + + + <b>Select the map style</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai style<br><b>FrogPilot</b>: Official FrogPilot map style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>Mike's Personalized Style</b>: Customized hybrid satellite view + <b>"Navigate on openpilot"(NOO)์šฉ ์ง€๋„ ์Šคํƒ€์ผ์„ ์„ ํƒํ•˜์„ธ์š”</b>:<br><br><b>Stock openpilot</b>: ๊ธฐ๋ณธ comma.ai ์Šคํƒ€์ผ<br><b>FrogPilot</b>: ๊ณต์‹ FrogPilot ์ง€๋„ ์Šคํƒ€์ผ<br><b>Mapbox Streets</b>: ํ‘œ์ค€ ๋„๋กœ ์ค‘์‹ฌ ๋ทฐ<br><b>Mapbox Outdoors</b>: ์•ผ์™ธ ๋ฐ ์ง€ํ˜• ํŠน์ง• ๊ฐ•์กฐ<br><b>Mapbox Light</b>: ๋ฏธ๋‹ˆ๋ฉ€ํ•˜๊ณ  ๋ฐ์€ ํ…Œ๋งˆ<br><b>Mapbox Dark</b>: ๋ฏธ๋‹ˆ๋ฉ€ํ•˜๊ณ  ์–ด๋‘์šด ํ…Œ๋งˆ<br><b>Mapbox Navigation Day</b>: ์ฃผ๊ฐ„ ๋‚ด๋น„๊ฒŒ์ด์…˜์— ์ตœ์ ํ™”<br><b>Mapbox Navigation Night</b>: ์•ผ๊ฐ„ ๋‚ด๋น„๊ฒŒ์ด์…˜์— ์ตœ์ ํ™”<br><b>Mapbox Satellite</b>: ์œ„์„ฑ ์ด๋ฏธ์ง€ ์ „์šฉ<br><b>Mapbox Satellite Streets</b>: ๋„๋กœ ๋ผ๋ฒจ์ด ํฌํ•จ๋œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์œ„์„ฑ ์ด๋ฏธ์ง€<br><b>Mapbox Traffic Night</b>: ๊ตํ†ต ์ƒํ™ฉ์„ ๊ฐ•์กฐํ•œ ๋‹คํฌ ํ…Œ๋งˆ<br><b>Mike's Personalized Style</b>: ๋งž์ถค ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์œ„์„ฑ ๋ทฐ + + + Road Name + ๋„๋กœ ์ด๋ฆ„ + + + <b>Display the road name at the bottom of the driving screen</b> using data from "OpenStreetMap (OSM)". + <b>์ฃผํ–‰ ํ™”๋ฉด ํ•˜๋‹จ์— ๋„๋กœ๋ช…์„ ํ‘œ์‹œ</b>ํ•˜๋ฉฐ, "OpenStreetMap (OSM)"์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. + + + Show Speed Limits + ์ œํ•œ์†๋„ ํ‘œ์‹œ + + + <b>Show speed limits</b> in the top-left corner of the driving screen. Uses data from the car's dashboard (if supported) and "OpenStreetMap (OSM)". + ์ฃผํ–‰ ํ™”๋ฉด์˜ ์ขŒ์ƒ๋‹จ์— <b>์ œํ•œ ์†๋„ ํ‘œ์‹œ</b>. ์ฐจ๋Ÿ‰ ๋Œ€์‹œ๋ณด๋“œ์˜ ๋ฐ์ดํ„ฐ(์ง€์›๋˜๋Š” ๊ฒฝ์šฐ)์™€ "OpenStreetMap (OSM)"์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. + + + Show Speed Limits from Mapbox + Mapbox์˜ ์ œํ•œ ์†๋„ ํ‘œ์‹œ + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>๋‹ค๋ฅธ ์†Œ์Šค๊ฐ€ ์—†์„ ๋•Œ Mapbox ์†๋„ ์ œํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.</b> + + + Use Vienna-Style Speed Signs + ๋น„์—”๋‚˜ ์Šคํƒ€์ผ ์†๋„ ํ‘œ์ง€ ์‚ฌ์šฉ + + + <b>Show Vienna-style (EU) speed-limit signs</b> instead of MUTCD (US). + <b>๋น„์—”๋‚˜์‹(EU) ์†๋„ ์ œํ•œ ํ‘œ์ง€</b>๋ฅผ MUTCD(US) ๋Œ€์‹  ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. + + + Quality of Life + ์‚ถ์˜ ์งˆ + + + <b>Miscellaneous visual changes</b> to fine-tune how the driving screen looks. + ์ฃผํ–‰ ํ™”๋ฉด์˜ ํ‘œ์‹œ๋ฅผ ๋ฏธ์„ธ ์กฐ์ •ํ•˜๊ธฐ ์œ„ํ•œ <b>๊ธฐํƒ€ ์‹œ๊ฐ์  ๋ณ€๊ฒฝ์‚ฌํ•ญ</b>. + + + Camera View + ์นด๋ฉ”๋ผ ๋ณด๊ธฐ + + + <b>Select the active camera view.</b> This is purely a visual change and doesn't impact how openpilot drives! + <b>ํ™œ์„ฑ ์นด๋ฉ”๋ผ ๋ทฐ๋ฅผ ์„ ํƒํ•˜์„ธ์š”.</b> ์ด๋Š” ์ˆœ์ „ํžˆ ์‹œ๊ฐ์  ๋ณ€๊ฒฝ์ด๋ฉฐ openpilot์˜ ์ฃผํ–‰ ๋ฐฉ์‹์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค! + + + Show Driver Camera When In Reverse + ํ›„์ง„ ์‹œ ์šด์ „์ž ์นด๋ฉ”๋ผ ํ‘œ์‹œ + + + <b>Show the driver camera feed</b> when the vehicle is in reverse. + ์ฐจ๋Ÿ‰์ด ํ›„์ง„ ์ค‘์ผ ๋•Œ <b>์šด์ „์ž ์นด๋ฉ”๋ผ ํ”ผ๋“œ๋ฅผ ํ‘œ์‹œ</b>ํ•ฉ๋‹ˆ๋‹ค. + + + Stopped Timer + ์ค‘์ง€๋œ ํƒ€์ด๋จธ + + + <b>Show a timer when stopped</b> in place of the current speed to indicate how long the vehicle has been stopped. + <b>์ •์ง€ ์‹œ ํƒ€์ด๋จธ ํ‘œ์‹œ</b>๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์†๋„ ๋Œ€์‹  ์ฐจ๋Ÿ‰์ด ์ •์ง€ํ•œ ์‹œ๊ฐ„์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. + + + Hide Map + ์ง€๋„ ์ˆจ๊ธฐ๊ธฐ + + + Blind Spot + ์‚ฌ๊ฐ์ง€๋Œ€ + + + Steering Torque + ์กฐํ–ฅ ํ† ํฌ + + + Turn Signal + ๋ฐฉํ–ฅ์ง€์‹œ๋“ฑ + + + Fahrenheit + ํ™”์”จ + + + CPU + CPU + + + GPU + GPU + + + IP + IP + + + RAM + RAM + + + SSD Left + SSD ์™ผ์ชฝ + + + SSD Used + ์‚ฌ์šฉ๋œ SSD + + + None + ์—†์Œ + + + Acceleration: Current + ๊ฐ€์†: ํ˜„์žฌ + + + Acceleration: Max + ๊ฐ€์†: ์ตœ๋Œ€ + + + Auto Tune: Actuator Delay + ์ž๋™ ํŠœ๋‹: ์•ก์ถ”์—์ดํ„ฐ ์ง€์—ฐ + + + Auto Tune: Friction + ์ž๋™ ํŠ : ๋งˆ์ฐฐ + + + Auto Tune: Lateral Acceleration + ์ž๋™ ํŠœ๋‹: ํšก๊ฐ€์† + + + Auto Tune: Steer Ratio + ์ž๋™ ํŠ : ์Šคํ‹ฐ์–ด ๋น„์œจ + + + Auto Tune: Stiffness Factor + ์ž๋™ ํŠ : ๊ฐ•์„ฑ ๊ณ„์ˆ˜ + + + Engagement %: Lateral + ๊ฐœ์ž…๋ฅ : ์กฐํ–ฅ + + + Engagement %: Longitudinal + ๊ฐœ์ž… %: ์ข…๋ฐฉํ–ฅ + + + Lateral Control: Steering Angle + ํšก๋ฐฉํ–ฅ ์ œ์–ด: ์กฐํ–ฅ๊ฐ + + + Lateral Control: Torque % Used + ํšก๋ฐฉํ–ฅ ์ œ์–ด: ์‚ฌ์šฉ๋œ ํ† ํฌ % + + + Longitudinal Control: Actuator Acceleration Output + ์ข…๋ฐฉํ–ฅ ์ œ์–ด: ์•ก์ถ”์—์ดํ„ฐ ๊ฐ€์† ์ถœ๋ ฅ + + + Longitudinal MPC Jerk: Acceleration + ์ข…๋ฐฉํ–ฅ MPC ์ €ํฌ: ๊ฐ€์† + + + Longitudinal MPC Jerk: Danger Zone + ์ข…๋ฐฉํ–ฅ MPC ์ €ํฌ: ์œ„ํ—˜ ๊ตฌ์—ญ + + + Longitudinal MPC Jerk: Speed Control + ์ข…๋ฐฉํ–ฅ MPC ์ €ํฌ: ์†๋„ ์ œ์–ด + + + SELECT + ์„ ํƒ + + + Select a metric to display + ํ‘œ์‹œํ•  ์ง€ํ‘œ๋ฅผ ์„ ํƒํ•˜์„ธ์š” + + + Show Distance + ๊ฑฐ๋ฆฌ ํ‘œ์‹œ + + + Dynamic + ๋™์  + + + Static + ์ •์  + + + inches + ์ธ์น˜ + + + Off + ๋” + + + feet + ํ”ผํŠธ + + + Full Map + ์ „์ฒด ์ง€๋„ + + + Stock openpilot + ๊ธฐ๋ณธ openpilot + + + FrogPilot + FrogPilot + + + Mapbox Streets + Mapbox Streets + + + Mapbox Outdoors + Mapbox ์•„์›ƒ๋„์–ด์Šค + + + Mapbox Light + Mapbox ๋ผ์ดํŠธ + + + Mapbox Dark + Mapbox ๋‹คํฌ + + + Mapbox Navigation Day + Mapbox ๋„ค๋น„๊ฒŒ์ด์…˜ ์ฃผ๊ฐ„ + + + Mapbox Navigation Night + Mapbox ๋‚ด๋น„๊ฒŒ์ด์…˜ ์•ผ๊ฐ„ + + + Mapbox Satellite + Mapbox ์œ„์„ฑ + + + Mapbox Satellite Streets + Mapbox ์œ„์„ฑ ์ŠคํŠธ๋ฆฌํŠธ + + + Mapbox Traffic Night + Mapbox ๊ตํ†ต ์•ผ๊ฐ„ + + + Mike's Personalized Style + Mike์˜ ๊ฐœ์ธํ™”๋œ ์Šคํƒ€์ผ + + + Select a map style + ์ง€๋„ ์Šคํƒ€์ผ ์„ ํƒ + + + Auto + ์ž๋™ + + + Driver + ์šด์ „์ž + + + Standard + ํ‘œ์ค€ + + + Wide + ๋„“๊ฒŒ + + + foot + ๋ฐœ + + + inch + ์ธ์น˜ + + + meter + ๋ฏธํ„ฐ + + + meters + ๋ฏธํ„ฐ + + + centimeter + ์„ผํ‹ฐ๋ฏธํ„ฐ + + + centimeters + ์„ผํ‹ฐ๋ฏธํ„ฐ + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 10 centimeters. + <b>์ฐจ์„  ํ‘œ์‹œ ๋‘๊ป˜๋ฅผ ์„ค์ •ํ•˜์„ธ์š”.</b><br><br>๊ธฐ๋ณธ๊ฐ’์€ MUTCD ์ฐจ์„  ํญ ํ‘œ์ค€์ธ 10์„ผํ‹ฐ๋ฏธํ„ฐ์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. + + + <b>Set the driving-path width.</b><br><br>Default (1.9 meters) matches the width of a 2019 Lexus ES 350. + <b>์ฃผํ–‰ ๊ฒฝ๋กœ ํญ์„ ์„ค์ •ํ•˜์„ธ์š”.</b><br><br>๊ธฐ๋ณธ๊ฐ’(1.9๋ฏธํ„ฐ)์€ 2019 Lexus ES 350์˜ ํญ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 10 centimeters. + <b>๋„๋กœ ๊ฐ€์žฅ์ž๋ฆฌ ๋‘๊ป˜๋ฅผ ์„ค์ •ํ•˜์„ธ์š”.</b><br><br>๊ธฐ๋ณธ๊ฐ’์€ MUTCD ์ฐจ์„ ์„  ํญ ํ‘œ์ค€ 10์„ผํ‹ฐ๋ฏธํ„ฐ์˜ ์ ˆ๋ฐ˜๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. FrogPilotWheelPanel Distance Button - ๊ฑฐ๋ฆฌ ๋ฒ„ํŠผ + ๊ฑฐ๋ฆฌ ๋ฒ„ํŠผ - The action for a short press of the <b>Distance</b> button. - <b>๊ฑฐ๋ฆฌ</b> ๋ฒ„ํŠผ์„ ์งง๊ฒŒ ๋ˆŒ๋ €์„ ๋•Œ์˜ ๋™์ž‘. + <b>Action performed when the "Distance" button is pressed.</b> + <b>"๊ฑฐ๋ฆฌ" ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ์ˆ˜ํ–‰๋˜๋Š” ๋™์ž‘.</b> Distance Button (Long Press) - ๊ฑฐ๋ฆฌ ๋ฒ„ํŠผ (๊ธธ๊ฒŒ ๋ˆ„๋ฅด๊ธฐ) + ๊ฑฐ๋ฆฌ ๋ฒ„ํŠผ(๊ธธ๊ฒŒ ๋ˆ„๋ฆ„) - The action for a 0.5+ second press of the <b>Distance</b> button. - <b>๊ฑฐ๋ฆฌ</b> ๋ฒ„ํŠผ์„ 0.5์ดˆ ์ด์ƒ ๋ˆ„๋ฅผ ๋•Œ์˜ ๋™์ž‘. + <b>Action performed when the "Distance" button is pressed for more than 0.5 seconds.</b> + <b>"๊ฑฐ๋ฆฌ" ๋ฒ„ํŠผ์„ 0.5์ดˆ ์ด์ƒ ๋ˆ„๋ฅด๋ฉด ์ˆ˜ํ–‰๋˜๋Š” ๋™์ž‘์ž…๋‹ˆ๋‹ค.</b> Distance Button (Very Long Press) - ๊ฑฐ๋ฆฌ ๋ฒ„ํŠผ (๋งค์šฐ ๊ธธ๊ฒŒ ๋ˆ„๋ฆ„) + ๊ฑฐ๋ฆฌ ๋ฒ„ํŠผ(๋งค์šฐ ๊ธธ๊ฒŒ ๋ˆ„๋ฅด๊ธฐ) - The action for a 2.5+ second press of the <b>Distance</b> button. - <b>๊ฑฐ๋ฆฌ</b> ๋ฒ„ํŠผ์„ 2.5์ดˆ ์ด์ƒ ๋ˆ„๋ฅผ ๋•Œ์˜ ๋™์ž‘. + <b>Action performed when the "Distance" button is pressed for more than 2.5 seconds.</b> + <b>"๊ฑฐ๋ฆฌ" ๋ฒ„ํŠผ์„ 2.5์ดˆ ์ด์ƒ ๋ˆ„๋ฅผ ๋•Œ ์ˆ˜ํ–‰๋˜๋Š” ๋™์ž‘.</b> LKAS Button - LKAS ๋ฒ„ํŠผ + LKAS ๋ฒ„ํŠผ - The action for pressing the <b>LKAS</b> button. - <b>LKAS</b> ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋Š” ๋™์ž‘. + <b>Action performed when the "LKAS" button is pressed.</b> + <b>"LKAS" ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ์ˆ˜ํ–‰๋˜๋Š” ๋™์ž‘.</b> - Nothing - ์•„๋ฌด๊ฒƒ๋„ + No Action + ์กฐ์น˜ ์—†์Œ - Pause Lateral - ์ธก๋ฉด ์ผ์‹œ ์ค‘์ง€ + Pause Steering + ์กฐํ–ฅ ์ผ์‹œ ์ค‘์ง€ Change "Personality Profile" - ์„ฑ๊ฒฉ ํ”„๋กœํ•„ + โ€œPersonality Profileโ€ ๋ณ€๊ฒฝ Force openpilot to Coast - openpilot์„ ๊ฐ•์ œ๋กœ Coast ๋ชจ๋“œ๋กœ ์„ค์ • + openpilot๋ฅผ ๊ฐ•์ œ๋กœ ์ฝ”์ŠคํŒ…ํ•˜์„ธ์š” - Pause Longitudinal - ์ข…๋‹จ ์ผ์‹œ ์ค‘์ง€ + Pause Acceleration/Braking + ๊ฐ€์†/์ œ๋™ ์ผ์‹œ์ค‘์ง€ Toggle "Experimental Mode" On/Off - "์‹คํ—˜ ๋ชจ๋“œ" ์ผœ๊ธฐ/๋„๊ธฐ + "์‹คํ—˜ ๋ชจ๋“œ" ์ผœ๊ธฐ/๋„๊ธฐ Toggle "Traffic Mode" On/Off - "๊ตํ†ต ๋ชจ๋“œ" ์ผœ๊ธฐ/๋„๊ธฐ + "๊ตํ†ต ๋ชจ๋“œ" ์ผœ๊ธฐ/๋„๊ธฐ SELECT - SELECT + ์„ ํƒ Select a function to assign to this button - ์ด ๋ฒ„ํŠผ์— ํ• ๋‹นํ•  ๊ธฐ๋Šฅ์„ ์„ ํƒํ•˜์„ธ์š”. + ์ด ๋ฒ„ํŠผ์— ํ• ๋‹นํ•  ๊ธฐ๋Šฅ์„ ์„ ํƒํ•˜์„ธ์š” @@ -4290,7 +4407,7 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Characters: %1/%2 - ๋ฌธ์ž: %1/%2 + ๋ฌธ์ž: %1/%2 @@ -4323,7 +4440,7 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Manage at %1 - %1์—์„œ ๊ด€๋ฆฌ + %1์—์„œ ๊ด€๋ฆฌ @@ -4341,57 +4458,6 @@ Want to submit your own animations? Share them in the "custom-themes" channel on ๊ฒฝ๋กœ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ค‘ - - ModelReview - - How would you rate that drive? - ๊ทธ ๋“œ๋ผ์ด๋ธŒ๋ฅผ ์–ด๋–ป๊ฒŒ ํ‰๊ฐ€ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? - - - Blacklist this model - ์ด ๋ชจ๋ธ์„ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค. - - - The model used during that drive was: - ๊ทธ ๋“œ๋ผ์ด๋ธŒ ๋™์•ˆ ์‚ฌ์šฉ๋œ ๋ชจ๋ธ์€: - - - Current Model Score: 0 - ํ˜„์žฌ ๋ชจ๋ธ ์ ์ˆ˜: 0 - - - Current Model Rank: 0 - Current Model Rank: 0 - - - Total Model Drives: 0 - ์ด ๋ชจ๋ธ ๋“œ๋ผ์ด๋ธŒ: 0 - - - Total Overall Model Drives: 0 - ์ „์ฒด ๋ชจ๋ธ ๋“œ๋ผ์ด๋ธŒ ์ด๊ณ„: 0 - - - Total Model Drives: %1 - ์ด ๋ชจ๋ธ ๋“œ๋ผ์ด๋ธŒ: %1 - - - Current Model Rank: %1 - ํ˜„์žฌ ๋ชจ๋ธ ์ˆœ์œ„: %1 - - - Current Model Score: %1 - ํ˜„์žฌ ๋ชจ๋ธ ์ ์ˆ˜: %1 - - - Total Overall Drives: %1 - ์ „์ฒด ๋“œ๋ผ์ด๋ธŒ ์ด๊ณ„: %1 - - - Model successfully blacklisted! - ๋ชจ๋ธ์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค! - - MultiOptionDialog @@ -4512,17 +4578,17 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Reboot Device ์žฅ์น˜๋ฅผ ์žฌ๋ถ€ํŒ…ํ•˜์„ธ์š” - - openpilot crashed ๐Ÿ’ฉ - openpilot๊ฐ€ ์ถฉ๋Œํ–ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ’ฉ - openpilot crashed - openpilot๊ฐ€ ์ถฉ๋Œํ–ˆ์Šต๋‹ˆ๋‹ค. + openpilot๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค Please post the "Error Log" in the FrogPilot Discord! - "์˜ค๋ฅ˜ ๋กœ๊ทธ"๋ฅผ FrogPilot Discord์— ๊ฒŒ์‹œํ•ด ์ฃผ์„ธ์š”! + FrogPilot Discord์— "Error Log"๋ฅผ ๊ฒŒ์‹œํ•ด ์ฃผ์„ธ์š”! + + + openpilot crashed ๐Ÿ’ฉ + openpilot๊ฐ€ ์ถฉ๋Œํ–ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ’ฉ @@ -4533,15 +4599,15 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Pair your device to your %1 account - ๊ธฐ๊ธฐ๋ฅผ %1 ๊ณ„์ •์— ์—ฐ๊ฒฐํ•˜์„ธ์š”. + ๊ธฐ๊ธฐ๋ฅผ %1 ๊ณ„์ •์— ์—ฐ๊ฒฐํ•˜์„ธ์š” Go to https://%1 on your phone - ํœด๋Œ€ํฐ์—์„œ https://%1๋กœ ์ด๋™ํ•˜์„ธ์š”. + ํœด๋Œ€์ „ํ™”์—์„œ https://%1 ๋กœ ์ด๋™ํ•˜์„ธ์š” Bookmark %1 to your home screen to use it like an app - %1์„(๋ฅผ) ํ™ˆ ํ™”๋ฉด์— ๋ถ๋งˆํฌํ•˜์—ฌ ์•ฑ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜์„ธ์š”. + ์•ฑ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด %1์„(๋ฅผ) ํ™ˆ ํ™”๋ฉด์— ๋ถ๋งˆํฌํ•˜์„ธ์š” @@ -4642,12 +4708,12 @@ Want to submit your own animations? Share them in the "custom-themes" channel on now - FrogPilot - ๊ฐœ๊ตฌ๋ฆฌ ํŒŒ์ผ๋Ÿฟ + Restore + ๋ณต์› - Restore - ๋ณต์› + FrogPilot + FrogPilot @@ -4695,11 +4761,11 @@ This may take up to a minute. ScreenRecorder RECORDING - ๋…น์Œ + ๋…นํ™” ์ค‘ RECORD - ๊ธฐ๋ก + ๊ธฐ๋ก @@ -4722,35 +4788,35 @@ This may take up to a minute. โ† Back - โ† ๋’ค๋กœ + โ† ๋’ค๋กœ FrogPilot - ๊ฐœ๊ตฌ๋ฆฌ ํŒŒ์ผ๋Ÿฟ - - - Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - FrogPilot์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! FrogPilot์„ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜์‹œ๋Š” ๊ด€๊ณ„๋กœ "์ตœ์†Œ" ํ† ๊ธ€ ํ”„๋ฆฌ์…‹์ด ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์–ธ์ œ๋“ ์ง€ "์กฐ์ • ์ˆ˜์ค€" ๋ฒ„ํŠผ์„ ํ†ตํ•ด ์ด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! - - - Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - FrogPilot์— ๋น„๊ต์  ์ƒˆ๋กœ ์˜ค์…จ๊ธฐ ๋•Œ๋ฌธ์— "์ตœ์†Œ" ํ† ๊ธ€ ํ”„๋ฆฌ์…‹์ด ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์–ธ์ œ๋“ ์ง€ "์กฐ์ • ์ˆ˜์ค€" ๋ฒ„ํŠผ์„ ํ†ตํ•ด ์ด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! - - - Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ๋‹น์‹ ์€ openpilot์— ์ต์ˆ™ํ•˜๋ฏ€๋กœ "ํ‘œ์ค€" ํ† ๊ธ€ ํ”„๋ฆฌ์…‹์ด ์ ์šฉ๋˜์—ˆ์ง€๋งŒ, "ํŠœ๋‹ ๋ ˆ๋ฒจ" ๋ฒ„ํŠผ์„ ํ†ตํ•ด ์–ธ์ œ๋“ ์ง€ ์ด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! - - - Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ๊ท€ํ•˜๋Š” FrogPilot์— ์ต์ˆ™ํ•˜์‹œ๋ฏ€๋กœ "ํ‘œ์ค€" ํ† ๊ธ€ ํ”„๋ฆฌ์…‹์ด ์ ์šฉ๋˜์—ˆ์ง€๋งŒ, "์กฐ์ • ์ˆ˜์ค€" ๋ฒ„ํŠผ์„ ํ†ตํ•ด ์–ธ์ œ๋“ ์ง€ ์ด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! - - - Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ๋‹น์‹ ์€ FrogPilot์— ๋งค์šฐ ์ต์ˆ™ํ•˜๋ฏ€๋กœ "๊ณ ๊ธ‰" ํ† ๊ธ€ ํ”„๋ฆฌ์…‹์ด ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์–ธ์ œ๋“ ์ง€ "์กฐ์ • ์ˆ˜์ค€" ๋ฒ„ํŠผ์„ ํ†ตํ•ด ์ด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! + FrogPilot Welcome to FrogPilot! Since you're new to openpilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Translation A + FrogPilot์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! openpilot์ด ์ฒ˜์Œ์ด๋ฏ€๋กœ โ€œMinimalโ€ ํ† ๊ธ€ ํ”„๋ฆฌ์…‹์ด ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์–ธ์ œ๋“ ์ง€ โ€œTuning Levelโ€ ๋ฒ„ํŠผ์„ ํ†ตํ•ด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! + + + Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + FrogPilot์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! FrogPilot์ด ์ฒ˜์Œ์ด๋ฏ€๋กœ "Minimal" ํ† ๊ธ€ ํ”„๋ฆฌ์…‹์ด ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•˜๋ฉด ์–ธ์ œ๋“ ์ง€ "Tuning Level" ๋ฒ„ํŠผ์„ ํ†ตํ•ด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! + + + Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + FrogPilot์— ์•„์ง ์ต์ˆ™ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ โ€œMinimalโ€ ํ† ๊ธ€ ํ”„๋ฆฌ์…‹์ด ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์–ธ์ œ๋“ ์ง€ โ€œTuning Levelโ€ ๋ฒ„ํŠผ์„ ํ†ตํ•ด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! + + + Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + openpilot์— ์ต์ˆ™ํ•˜๋ฏ€๋กœ "ํ‘œ์ค€" ํ† ๊ธ€ ํ”„๋ฆฌ์…‹์ด ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์–ธ์ œ๋“ ์ง€ "ํŠœ๋‹ ์ˆ˜์ค€" ๋ฒ„ํŠผ์„ ํ†ตํ•ด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! + + + Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + FrogPilot์— ์ต์ˆ™ํ•˜๋ฏ€๋กœ "Standard" ํ† ๊ธ€ ํ”„๋ฆฌ์…‹์ด ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์–ธ์ œ๋“ ์ง€ "Tuning Level" ๋ฒ„ํŠผ์„ ํ†ตํ•ด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! + + + Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + FrogPilot์— ์ต์ˆ™ํ•˜์‹  ๊ฒƒ์œผ๋กœ ํŒ๋‹จ๋˜์–ด โ€œ๊ณ ๊ธ‰โ€ ํ† ๊ธ€ ํ”„๋ฆฌ์…‹์ด ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์–ธ์ œ๋“ ์ง€ โ€œํŠœ๋‹ ์ˆ˜์ค€โ€ ๋ฒ„ํŠผ์„ ํ†ตํ•ด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! @@ -4864,7 +4930,7 @@ This may take up to a minute. Pair your device with Konik connect (stable.konik.ai). - ๊ธฐ๊ธฐ๋ฅผ Konik connect (stable.konik.ai)์™€ ํŽ˜์–ด๋งํ•˜์„ธ์š”. + ์žฅ์น˜๋ฅผ Konik connect(stable.konik.ai)์— ํŽ˜์–ด๋งํ•˜์„ธ์š”. @@ -4951,27 +5017,27 @@ This may take up to a minute. GPU - GPU + GPU CPU - CPU + CPU GB - GB + GB MEMORY - ๋ฉ”๋ชจ๋ฆฌ + ๋ฉ”๋ชจ๋ฆฌ LEFT - ์™ผ์ชฝ + ์™ผ์ชฝ USED - ์‚ฌ์šฉ๋œ + ์‚ฌ์šฉ๋จ @@ -5046,39 +5112,39 @@ This may take up to a minute. Updates are only downloaded while the car is off or in park. - ์—…๋ฐ์ดํŠธ๋Š” ์ฐจ๋Ÿ‰์ด ๊บผ์ ธ ์žˆ๊ฑฐ๋‚˜ ์ฃผ์ฐจ ์ค‘์ผ ๋•Œ๋งŒ ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. + ์—…๋ฐ์ดํŠธ๋Š” ์ฐจ๋Ÿ‰์ด ๊บผ์ ธ ์žˆ๊ฑฐ๋‚˜ ์ฃผ์ฐจ ์ƒํƒœ์ผ ๋•Œ๋งŒ ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. Automatically Update FrogPilot - FrogPilot ์ž๋™ ์—…๋ฐ์ดํŠธ - - - Error Log - ์˜ค๋ฅ˜ ๋กœ๊ทธ - - - VIEW - ๋ณด๊ธฐ - - - View the error log for openpilot crashes. - openpilot ์ถฉ๋Œ์— ๋Œ€ํ•œ ์˜ค๋ฅ˜ ๋กœ๊ทธ ๋ณด๊ธฐ. - - - Do you want to delete deep storage FrogPilot assets? This includes your toggle settings for quick reinstalls. - ๊นŠ์€ ์ €์žฅ์†Œ FrogPilot ์ž์‚ฐ์„ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์—๋Š” ๋น ๋ฅธ ์žฌ์„ค์น˜๋ฅผ ์œ„ํ•œ ํ† ๊ธ€ ์„ค์ •์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. - - - Are you sure? This is 100% unrecoverable and if you reinstall FrogPilot you'll lose all your previous settings! - ํ™•์‹คํ•ฉ๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ 100% ๋ณต๊ตฌ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ FrogPilot์„ ๋‹ค์‹œ ์„ค์น˜ํ•˜๋ฉด ์ด์ „ ์„ค์ •์ด ๋ชจ๋‘ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค! - - - This branch must be downloaded before switching. Would you like to download it now? - ์ด ๋ธŒ๋žœ์น˜๋ฅผ ์ „ํ™˜ํ•˜๊ธฐ ์ „์— ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋‹ค์šด๋กœ๋“œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + FrogPilot ์ž๋™ ์—…๋ฐ์ดํŠธ FrogPilot will automatically update itself and it's assets when you're offroad and have an active internet connection. - FrogPilot์€ ์˜คํ”„๋กœ๋“œ ์ƒํƒœ์—์„œ ํ™œ์„ฑ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์ด ์žˆ์„ ๋•Œ ์ž๋™์œผ๋กœ ์ž์ฒด ๋ฐ ์ž์‚ฐ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. + FrogPilot์€ ์˜คํ”„๋กœ๋“œ ์ƒํƒœ์ด๋ฉฐ ํ™œ์„ฑ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์ด ์žˆ์„ ๋•Œ ์ž์ฒด์™€ ์—์…‹์„ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. + + + This branch must be downloaded before switching. Would you like to download it now? + ์ด ๋ธŒ๋žœ์น˜๋Š” ์ „ํ™˜ํ•˜๊ธฐ ์ „์— ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋‹ค์šด๋กœ๋“œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? + + + Error Log + ์˜ค๋ฅ˜ ๋กœ๊ทธ + + + VIEW + ๋ณด๊ธฐ + + + View the error log for openpilot crashes. + openpilot ์ถฉ๋Œ์˜ ์˜ค๋ฅ˜ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. + + + Do you want to perform a full factory reset? All saved assets and settings will be permanently deleted! + ์ „์ฒด ์ดˆ๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ €์žฅ๋œ ๋ชจ๋“  ์ž์‚ฐ๊ณผ ์„ค์ •์ด ์˜๊ตฌ์ ์œผ๋กœ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค! + + + This is a complete factory reset and cannot be undone. Are you absolutely sure you want to continue? + ์ด ์ž‘์—…์€ ์™„์ „ํ•œ ๊ณต์žฅ ์ดˆ๊ธฐํ™”์ด๋ฉฐ ๋˜๋Œ๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ •๋ง ๊ณ„์†ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? @@ -5270,7 +5336,7 @@ This may take up to a minute. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. - ์šด์ „ ์‹œ๊ฐํ™”๋Š” ์ €์†์—์„œ ๋„๋กœ๋ฅผ ํ–ฅํ•œ ๊ด‘๊ฐ ์นด๋ฉ”๋ผ๋กœ ์ „ํ™˜๋˜์–ด ์ผ๋ถ€ ํšŒ์ „์„ ๋” ์ž˜ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์‹คํ—˜ ๋ชจ๋“œ ๋กœ๊ณ ๋Š” ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. + ์ผ๋ถ€ ํšŒ์ „์„ ๋” ์ž˜ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์ €์†์—์„œ๋Š” ์ฃผํ–‰ ์‹œ๊ฐํ™”๊ฐ€ ๋„๋กœ ๋ฐฉํ–ฅ์˜ ๊ด‘๊ฐ ์นด๋ฉ”๋ผ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์—๋Š” Experimental ๋ชจ๋“œ ๋กœ๊ณ ๋„ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. @@ -5332,11 +5398,11 @@ This may take up to a minute. Uploading disabled - ์—…๋กœ๋“œ ๋น„ํ™œ์„ฑํ™”๋จ + ์—…๋กœ๋“œ ๋น„ํ™œ์„ฑํ™”๋จ Toggle off the "Turn Off Data Uploads" toggle to re-enable uploads. - "๋ฐ์ดํ„ฐ ์—…๋กœ๋“œ ๋„๊ธฐ" ํ† ๊ธ€์„ ๊บผ์„œ ์—…๋กœ๋“œ๋ฅผ ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•˜์„ธ์š”. + ์—…๋กœ๋“œ๋ฅผ ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด "Turn Off Data Uploads" ํ† ๊ธ€์„ ๊บผ ์ฃผ์„ธ์š”. diff --git a/selfdrive/ui/translations/main_pirate.ts b/selfdrive/ui/translations/main_pirate.ts index fdcb626a4..6161bc59f 100644 --- a/selfdrive/ui/translations/main_pirate.ts +++ b/selfdrive/ui/translations/main_pirate.ts @@ -5,5372 +5,5432 @@ AbstractAlert Close - Shut + Batten Down Snooze Update - Snooze Alert + Belay Update Fer a Spell Reboot and Update - Restart and Upgrade + Reboot 'n Update Arr! AdvancedNetworking Back - Return + Aft Off - Disabled + Avast Always - Always + Always Arr! Only Onroad - Onroad Only + Only Onroad, arr Until Reboot - Until Restart + โ€™Til Reboot Enable Tethering - Activate Tethering + Hoist Tetherin' Enabled Allow tethering with your data SIM and keep it active either while driving or continuously. - Enable tethering with your data SIM and keep it active while driving or continuously. + Permit tetherinโ€™ with yer data SIM and keep it alive either while sailinโ€™ or all the time. Tethering Password - Password for Tethering + Tetherinโ€™ Password EDIT - MODIFY + EDIT Enter new tethering password - Set a new tethering password + Enter a new tetherinโ€™ password, ye scallywag IP Address - IP Address + IP Address, ye scallywag Enable Roaming - Activate Roaming + Hoist Roaminโ€™ APN Setting - APN Configuration + APN Settin' Enter APN - Input APN + Board thโ€™ APN leave blank for automatic configuration - leave empty for automatic configuration + leave it blank fer automatic rigginโ€™ Cellular Metered - Cellular Metered + Cellular Metered, arr Prevent large data uploads when on a metered connection - Avoid large data uploads on a metered connection, matey. + Belay big data uploads when ye be on a metered connection Hidden Network - Secret Network + Hidden Network, ye scallywag CONNECT - LINK UP + BOARD YE UP Enter SSID - Input SSID + Be enterinโ€™ the SSID Enter password - Enter yer password + Enter yer secret code, ye swab for "%1" - for "%1" + fer "%1" AnnotatedCameraWidget km/h - km/h + knots/km/h mph - mph + knots (mph) MAX - MAXIMUM + MAX LIMIT - BOUND + LIMIT Arr! SPEED - VELOCITY + SPEED ConfirmationDialog Ok - Aye + Aye Cancel - Cancel + Belay DeclinePage You must accept the Terms and Conditions in order to use openpilot. - Ye must accept the Terms and Conditions to use openpilot, matey. + Ye must accept the Terms 'n Conditions t' use openpilot, arr. Back - Return + Aft Decline, uninstall %1 - Uninstall %1, matey + Refuse the offer, be uninstallinโ€™ %1 DestinationWidget Home - Abode + Home Port Work - Labor + Toil No destination set - Destination not set + No port oโ€™ call set home - abode + captainโ€™s quarters work - labor + work, arr! No %1 location set - No %1 location chosen + No %1 berth set DeveloperSidebar m/sยฒ - m/sยฒ + m/sยฒ ft/sยฒ - ft/sยฒ + ft/sยฒ ACCEL - ACCEL + ACCEL ACCEL JERK - ACCELERATION JERK + ACCEL JERK, ye scallywag ACT ACCEL - ACT ACCELERATE + ACT ACCEL DANGER JERK - BEWARE, SCOUNDREL + DANGER, YE JERK-BEAST! Arr! STEER DELAY - STEERING DELAY + HELMSMAN DELAY FRICTION - RESISTANCE + FRICTION, ye scallywag! LAT ACCEL - LAT ACCEL + LAT ACCEL, ye scallywags LATERAL % - LATERAL % + LATERAL % LONG % - %1 + LONG % MAX ACCEL - MAXIMUM ACCELERATION + MAX ACCEL, arr! SPEED JERK - RAPID JOLT + SPEED JERK, ye scallywag STEER ANGLE - STEERING ANGLE + HELM ANGLE STEER RATIO - STEERING RATIO + HELM RATIO STEER STIFF - STEER STRAIGHT + HELM BE STIFF TORQUE % - TORQUE % + TORQUE % DevicePanel Dongle ID - Dongle ID + Dongle ID, ye scallywag N/A - N/A + N/A Serial - Series + Serial booty log Pair Device - Connect Device + Pair ye Device PAIR - DUO + PAIR Pair your device with Konik connect (stable.konik.ai). - Connect your device with Konik Connect (stable.konik.ai). + Pair yer device with Konik connect (stable.konik.ai), ye scallywag. Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. - Link yer device with Comma Connect (connect.comma.ai) and claim yer Comma Prime offer, matey. + Pair yer device with comma connect (connect.comma.ai) anโ€™ claim yer comma prime booty. Driver Camera - Camera for Drivers + Helmsman Camera PREVIEW - PREVIEW + PREVIEW, ye scallywags Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off) - Check the driver-facing camera to ensure it has clear visibility for monitoring. (vehicle must be off) + Arr, preview the driver-facinโ€™ camera to be sure driver monitorinโ€™ has good visibility. (vessel must be off) Reset Calibration - Calibration Reset + Reset thโ€™ Calibratinโ€™ RESET - RESET + RESET Are you sure you want to reset calibration? - Are ye certain ye wish to reset calibration? + Be ye sure ye want tโ€™ reset calibration? Reset - Restart + Reset Review Training Guide - Examine Training Guide + Be Readinโ€™ the Traininโ€™ Guide REVIEW - EVALUATION + REVIEW, ye scallywag! Review the rules, features, and limitations of openpilot - Examine the guidelines, features, and constraints of openpilot. + Give a gander at the rules, features, and limits oโ€™ openpilot Are you sure you want to review the training guide? - Are ye certain ye wish to review the training guide? + Be ye sure ye want tโ€™ review the traininโ€™ guide? Review - Examine + Review, ye scallywag! Regulatory - Regulatory + Regulatory Arr VIEW - DISPLAY + VIEW Change Language - Switch Language + Change the Tongue CHANGE - MODIFY + CHANGE Select a language - Choose a language + Be pickinโ€™ a tongue, ye scallywag Reboot - Restart + Reboot, ye scallywag! Power Off - Shut Down + Keelhaul the Power openpilot requires the device to be mounted within 4ยฐ left or right and within 5ยฐ up or 9ยฐ down. openpilot is continuously calibrating, resetting is rarely required. - openpilot needs the device to be mounted within 4ยฐ to the left or right and within 5ยฐ up or 9ยฐ down. openpilot is always calibrating, so resetting is seldom needed. + openpilot be needinโ€™ the device mounted within 4ยฐ to port or starboard and within 5ยฐ up or 9ยฐ down. openpilot be calibratinโ€™ nonstop; resettinโ€™ be rarely needed, arr. Your device is pointed %1ยฐ %2 and %3ยฐ %4. - Your device is aimed %1ยฐ %2 and %3ยฐ %4. + Yer device be pointed %1ยฐ %2 and %3ยฐ %4. down - below + downward, matey up - up + up, ye bilge rat left - left + port right - correct + starboard Are you sure you want to reboot? - Are ye certain ye wish to reboot? + Be ye sure ye want tโ€™ reboot? Disengage to Reboot - Disengage to Restart + Belay yer helm to Reboot Are you sure you want to power off? - Are ye certain ye wish to power off? + Be ye sure ye want tโ€™ power off? Disengage to Power Off - Disengage to Shut Down + Belay yer helm to Power Off DriveStats FROGPILOT - FROGPILOT + FROGPILOT Drives - Drives + Voyages Hours - Hours + Hours KM - KM + KM Miles - Miles + Leagues DriverViewWindow camera starting - Camera is starting + camera be startin' ExperimentalModeButton EXPERIMENTAL MODE ON - EXPERIMENTAL MODE ACTIVE + EXPERIMENTAL MODE BE ON, arr! CHILL MODE ON - CHILL MODE ACTIVATED + CHILL MODE BE ON, arr! FrogPilotAnnotatedCameraWidget m/sยฒ - m/sยฒ + m/sยฒ meters - meters + meters m/s - m/s + m/s km/h - km/h + knots/h ft/sยฒ - ft/sยฒ + ft/sยฒ feet - feet + feet mph - mph + mph Vehicle in blind spot - Car in blind spot + Vessel in thโ€™ blind spot, arr PENDING - PENDING + PENDINโ€™ LIMIT - LIMIT + LIMIT FrogPilotConfirmationDialog Reboot required to take effect. - A restart is needed to take effect. + Reboot be required tโ€™ take effect, arr. Reboot Now - Restart Now + Reboot Now, ye scallywag! Reboot Later - Restart Later + Reboot Later, ye scallywag Yes - Aye + Aye No - Nay + Nay FrogPilotDataPanel - Delete Driving Footage and Data - Erase Driving Footage and Data + Delete Driving Data + Scuttle Drivinโ€™ Data DELETE - REMOVE + PLUNDER IT - Deletes all stored driving footage and data from your device. Ideal for maintaining privacy or for simply freeing up space. - Erases all stored driving footage and data from your device. Perfect for safeguarding privacy or just freeing up space. + <b>Delete all stored driving footage and data</b> to free up space and clear private information. + <b>Scuttle all stowed drivinโ€™ footage โ€™n data</b> tโ€™ free up space โ€™n clear private booty. - Are you sure you want to delete all of your driving footage and data? - Are ye certain ye want to delete all yer driving footage and data, matey? + Delete all driving data and footage? + Scuttle all drivinโ€™ data anโ€™ footage? Delete - Remove + Scuttle Deleting... - Removing... + Scuttlin'... Deleted! - Removed! + Keelhauled! Delete Error Logs - Remove Error Logs + Scuttle Error Logs - Deletes all stored error logs from your device. Ideal for freeing up space. - Removes all saved error logs from your device. Perfect for freeing up space, matey. + <b>Delete collected error logs</b> to free up space and clear old crash records. + <b>Scuttle collected error logs</b> tโ€™ free up berth anโ€™ wipe old wreck records. - Are you sure you want to delete all of the error logs? - Are ye certain ye want to delete all the error logs? + Delete all error logs? + Be ye deletinโ€™ all error logs? Screen Recordings - Screen Captures + Screen Recordin's - Manage your screen recordings. - Organize your screen recordings. + <b>Delete or rename screen recordings.</b> + <b>Scuttle or rechristen yer screen recordin's.</b> DELETE ALL - Erase everything + SCUTTLE ALL RENAME - Change Name + RENAME, ye scallywag! - Select a recording to delete - Choose a recording to delete + Choose a screen recording to delete + Choose a screen recordinโ€™ to scuttle - Are you sure you want to delete this recording? - Are ye certain ye want to delete this recording? + Delete this screen recording? + Scuttle this screen recordin', aye? - Are you sure you want to delete all screen recordings? - Are ye certain ye want to delete all screen recordings? + Delete all screen recordings? + Scuttle all screen recordin's? Delete All - Remove All + Scuttle All - Select a recording to rename - Choose a recording to rename, matey. + Choose a screen recording to rename + Choose a screen recordinโ€™ to rename, ye scallywag Enter a new name - Choose a new name + Be enterinโ€™ a new name, ye scallywag - Rename Recording - Rename Audio + Rename Screen Recording + Rename Yer Screen Recordinโ€™ - A recording with this name already exists. Please choose a different name. - A recording by this name already exists. Please select a different name. + Name already in use. Please choose a different name. + Name be already in use. Pick a different name, ye scallywag. Renaming... - Changing name... + Rechristeninโ€™... Renamed! - Name changed! + Rechristened, arr! FrogPilot Backups - FrogPilot Reserves + FrogPilot Booty Backups - Manage your FrogPilot backups. - Handle yer FrogPilot backups, matey. + <b>Create, delete, or restore FrogPilot backups.</b> + <b>Forge, scuttle, or reclaim FrogPilot plundered backups.</b> BACKUP - BACKUP + BACKUP RESTORE - RETURN + RESTORE - Name your backup - Give your backup a name + Enter a name for this backup + Be givinโ€™ this backup a name, matey - A backup with this name already exists. Please choose a different name. - A backup with this name already exists, matey. Please choose a different name. - - - Do you want to compress this backup? This will take a few minutes, but the final result will be smaller and run in the background. - Would ye like to compress this backup, matey? It'll take a few minutes, but the final result will be smaller and run in the background. + Compress this backup? This will save space and run in the background but take a bit longer. + Compress this booty? Thisโ€™ll save space anโ€™ run below decks, but take a wee bit longer. Backing up... - Creating a backup... + Stowinโ€™ the booty... Compressing... - Compressing, matey... + Arr, squeezin' it down... Backup created! - Backup complete, matey! + Arr, backup be forged! - Select a backup to delete - Choose a backup to remove + Choose a FrogPilot backup to delete + Choose a FrogPilot booty to scuttle - Are you sure you want to delete this backup? - Are ye certain ye wish to delete this backup? + Delete this backup? + Scuttle this backup? - Are you sure you want to delete all FrogPilot backups? - Are ye certain ye wish to delete all FrogPilot backups? + Delete all backups? + Scuttle all backups? - Select a restore point - Choose a restore point + Choose a backup to restore + Choose a booty backup to restore, arr! - Are you sure you want to restore this version of FrogPilot? - Are ye certain ye wish to restore this version of FrogPilot, matey? + Restore this backup? + Be ye restorโ€™n this booty oโ€™ a backup? Restore - Reinstate + Restore, ye scallywag! Restoring... - Restoring... + Be hoistinโ€™ back... Extracting... - Extracting data... + Plunderin' the contents... Restored! - Restored, matey! + Restored, arr! Rebooting... - Restarting... + Arr, be rebootin'... Toggle Backups - Switch Backups + Toggle Yer Booty Backups - Manage your toggle backups. - Keep your toggle backups shipshape. + <b>Create, delete, or restore toggle backups.</b> + <b>Forge, scuttle, or reclaim toggle backups, arr!</b> - Name your toggle backup - Name yer toggle backup, matey - - - A toggle backup with this name already exists. Please choose a different name. - A backup with this name already exists, matey. Please choose another name. - - - Select a toggle backup to delete - Choose a backup toggle to delete - - - Are you sure you want to delete this toggle backup? - Are ye certain ye want to delete this toggle backup? - - - Are you sure you want to delete all toggle backups? - Are ye certain ye want to delete all toggle backups? - - - Select a toggle restore point - Choose a toggle restore point - - - Are you sure you want to restore this toggle backup? - Are ye certain ye want to restore this toggle backup? + Choose a backup to delete + Choose a backup tโ€™ scuttle FrogPilotDevicePanel Device Settings - Device Configurations + Device Settin's - Settings that control device behavior. - Settings that govern device behavior. - - - Battery Shutdown Threshold - Battery Shutdown Limit - - - Automatically shut down the device when the vehicle's battery voltage reaches the set threshold preventing excessive battery drain to protect the battery. - Automatically power down the device when the vehicle's battery voltage hits the set threshold, preventing excessive drain and safeguarding the battery. + <b>Settings that control how the device runs, powers off, and manages driving data.</b> + <b>Settinโ€™s that command how thโ€™ device runs, powers down, anโ€™ manages drivinโ€™ data.</b> Device Shutdown Timer - Device Power-Off Timer + Devilโ€™s Shutdown Hourglass - How long the device stays on for after you go offroad. - How long the device remains on after you go offroad. + <b>Keep the device on for the set amount of time after a drive</b> before it shuts down automatically. + <b>Keep thโ€™ device on fer the set span oโ€™ time after a voyage</b> afore it shuts down automatical-like. - Disable Data Logging - Turn Off Data Logging + Disable Logging + Scuttle Logginโ€™ WARNING: This will prevent your drives from being recorded and all data will be unobtainable! - Beware, matey: This will stop your drives from being recorded, and all data will be lost! + WARNING: Thisโ€™ll keep yer voyages from beinโ€™ recorded, anโ€™ all yer booty oโ€™ dataโ€™ll be unobtainable! Arr! - Disable all data logging to improve privacy. - Turn off all data logging to boost privacy. + <b>Prevent the device from saving driving data.</b> + <b>Be keepinโ€™ the device from stowinโ€™ drivinโ€™ data.</b> - Disable Data Uploads - Turn Off Data Uploads + Disable Uploads + Belay Uploads - WARNING: This will prevent your drives from appearing on <b>comma connect</b> which may impact debugging and support! - WARNING: This will stop your drives from showing on <b>comma connect</b>, which might affect debugging and support! + WARNING: This will prevent your drives from being uploaded to <b>comma connect</b> which will impact debugging and official support from comma! + WARNING: Thisโ€™ll keep yer drives from beinโ€™ uploaded to <b>comma connect</b>, whichโ€™ll scuttle debugginโ€™ and official support from comma! - Prevent the device from sending any data to <b>comma</b>'s servers. - Stop the device from sending any data to <b>comma</b>'s servers. + <b>Prevent the device from uploading driving data.</b> + <b>Belay the device from sendinโ€™ drivinโ€™ data aloft.</b> - High Bitrate Recording - High Bitrate Capture + High-Quality Recording + High-Quality Logginโ€™ - Record driving footage at double the standard bitrate for improved video quality in driving logs. - Capture driving footage at twice the standard bitrate to enhance video quality in driving logs. + <b>Save drive footage in higher video quality.</b> + <b>Stash yer drive footage in finer video quality, arr!</b> - Increase Thermal Safety Limit - Raise Thermal Safety Limit + Low-Voltage Cutoff + Low-Voltage Keelhaul Cutoff - WARNING: This can damage your device by exceeding safe temperature limits! - Beware: This may harm your device by surpassing safe temperature limits! + <b>While parked, if the battery voltage falls below the set level, the device shuts down</b> to prevent excessive battery drain. + <b>Whilst anchored, if the battery voltage drops below the set mark, the device be shuttinโ€™ down</b> to prevent excessive battery drain, arr. - Allow the device to run hotter than comma recommended limit. - Permit the device to operate beyond the advised temperature limit. + Raise Temperature Limits + Hoist the Temperature Limits - Use Konik's Server Instead of comma's - Use Konik's Server instead of Comma's + WARNING: Running at higher temperatures may damage your device! + WARNING: Sailinโ€™ at hotter climes may scuttle yer device! Arr! - Upload your driving data to <b>connect.konik.ai</b> instead of <b>connect.comma.ai</b>. - Upload yer drivin' data to <b>connect.konik.ai</b> instead of <b>connect.comma.ai</b>. + <b>Allow the device to run at higher temperatures</b> before throttling or shutting down. Use only if you understand the risks! + <b>Let the device run hot fer longer</b> afore throttlinโ€™ or shuttinโ€™ down. Use only if ye grasp the risks, arr! + + + Use Konik Server + Use Konik Server, ye scallywag + + + <b>Upload driving data to "connect.konik.ai" instead of "connect.comma.ai".</b> + <b>Be upoadinโ€™ drivinโ€™ data to "connect.konik.ai" โ€™stead oโ€™ "connect.comma.ai".</b> Screen Settings - Display Options + Spyglass Settings - Settings that control screen behavior. - Settings that manage screen behavior. + <b>Settings that control screen brightness, screen recording, and timeout duration.</b> + <b>Settin's that helm screen brightness, screen recordin', an' timeout duration.</b> Screen Brightness (Offroad) - Screen Brightness (Offroad Mode) + Screen Brightness (Offroad) - The screen brightness when not driving. - The screen brightness when not sailing. + <b>The screen brightness while not driving.</b> + <b>Thโ€™ screen brightness whilst not sailinโ€™.</b> Screen Brightness (Onroad) - Screen Brightness (On the High Seas) + Screen Brightness (Onroad), arrr - The screen brightness while driving. - The screen brightness during driving. + <b>The screen brightness while driving.</b> + <b>The screenโ€™s brightness whilst ye be drivinโ€™.</b> Screen Recorder - Screen Capture Tool + Screen Recorder - Enable a button in the driving screen to record the screen. - Add a button on the driving screen to capture the screen. + <b>Add a button to the driving screen to record the display.</b> + <b>Add a button tโ€™ the drivinโ€™ screen tโ€™ record the display.</b> Screen Timeout (Offroad) - Screen Timeout (Offshore) + Screen Timeout (Offroad) - How long it takes for the screen to turn off when not driving. - How long does it take for the screen to turn off when not driving? + <b>How long the screen stays on after being tapped while not driving.</b> + <b>How long thโ€™ screen stays lit after ye tap it while not sailinโ€™.</b> Screen Timeout (Onroad) - Screen Timeout (On the High Seas) + Screen Timeout (Onroad), ye scallywag - How long it takes for the screen to turn off while driving. - How long does it take for the screen to turn off while driving? + <b>How long the screen stays on after being tapped while driving.</b> + <b>How long th' screen stays lit after bein' tapped while drivin'.</b> + + + Standby Mode + Standby Mode, arr! + + + <b>Turn the screen off while driving and automatically wake it up for alerts or engagement state changes.</b> + <b>Douse the screen while sailinโ€™, then rouse it fer alerts or when engagement state be changinโ€™.</b> 5 mins - 5 min + 5 minutes, arr mins - mins + mins hour - hour + hour, arr hours - hours + hours - Only Disable While Onroad - Disable Only While Onroad + Disable Onroad Only + Belay Onroad Only volts - volts + volts Screen Off - Display Off + Screen Be Off Auto - Car + Auto Start Recording - Begin Recording + Hoist the Recordinโ€™ Stop Recording - Cease Recording + Belay Recordinโ€™ seconds - seconds + seconds FrogPilotLateralPanel Advanced Lateral Tuning - Expert Lateral Tuning + Advanced Lateral Tuninโ€™ - Advanced settings for fine-tuning openpilot's lateral controls. - Advanced settings for fine-tuning openpilot's lateral controls, matey. + <b>Advanced steering control changes to fine-tune how openpilot drives.</b> + <b>Arr, advanced helm control tweaks tโ€™ fine-tune how openpilot sails the road.</b> Actuator Delay (Default: %1) - Actuator Delay (Default: %1) + Actuator Delay (Default: %1), arr! Actuator Delay - Actuator Lag + Actuator Lag, arr! - How long the steering wheel takes to respond to commands. Higher values account for slower steering; lower values for quicker response. - The time it takes for the steering wheel to respond to commands. Higher values indicate slower steering, while lower values mean a quicker response. + <b>The time between openpilot's steering command and the vehicle's response.</b> Increase if the vehicle reacts late; decrease if it feels jumpy. Auto-learned by default. + <b>The span โ€˜tween openpilotโ€™s helm command anโ€™ the shipโ€™s reply.</b> Raise it if the vessel answers late; lower it if she feels jumpy. Auto-learned by default. Friction (Default: %1) - Friction (Default: %1) + Friction (Default: %1), ye scallywag Friction - Resistance + Friction be the drag oโ€™ the seas - Adjust steering resistance. Higher values feel more stable but heavier; lower values feel lighter but more sensitive. - Tweak steering resistance. Higher values feel steadier but heavier; lower values feel lighter yet more sensitive. + <b>Compensates for steering friction.</b> Increase if the wheel sticks near center; decrease if it jitters. Auto-learned by default. + <b>Makes up fer steerโ€™n friction.</b> Raise it if the helm sticks near center; lower it if it jitters. Auto-learned by default. Kp Factor (Default: %1) - Kp Factor (Default: %1) + Kp Factor (Default: %1), ye scallywag Kp Factor - Kp Factor + Kp Factor, aye - How aggressively openpilot corrects steering. Higher values respond faster but may feel jerky; lower values are smoother but slower. - How aggressively openpilot adjusts steering. Higher values respond faster but may feel jerky; lower values are smoother but slower. + <b>How strongly openpilot corrects lane position.</b> Higher is tighter but twitchier; lower is smoother but slower. Auto-learned by default. + <b>How fierce openpilot trims yer lane hold.</b> Higher be tighter but twitchier; lower be smoother but slower. Auto-learnt by default, arr. - Lateral Accel (Default: %1) - Lateral Accel (Default: %1) + Lateral Acceleration (Default: %1) + Lateral Acceleration (Default: %1), arr! - Lateral Accel - Lateral Accel + Lateral Acceleration + Sway oโ€™ the Ship (Lateral Acceleration) - How quickly openpilot makes lateral adjustments. Higher values allow sharper turns; lower values provide smoother steering. - How swiftly openpilot makes lateral adjustments. Higher values enable sharper turns, while lower values offer smoother steering. + <b>Maps steering torque to turning response.</b> Increase for sharper turns; decrease for gentler steering. Auto-learned by default. + <b>Maps steerโ€™n torque tโ€™ turninโ€™ response.</b> Raise it fer sharper turns; lower it fer gentler steerinโ€™. Auto-learned by default, arr. Steer Ratio (Default: %1) - Steering Ratio (Default: %1) + Helm Ratio (Default: %1) Steer Ratio - Steering Ratio + Helm Ratio - How much the steering wheel turns in response to commands. Higher values feel more stable; lower values feel quicker. - How much the steering wheel turns in response to commands. Higher values feel more stable, while lower values feel quicker. + <b>The relationship between steering wheel rotation and road wheel angle.</b> Increase if steering feels too quick or twitchy; decrease if it feels too slow or weak. Auto-learned by default. + <b>Thโ€™ tie โ€˜tween helm turninโ€™ and road wheel angle.</b> Raise it if thโ€™ helm feels too quick or twitchy; lower it if it feels too slow or weak. Auto-learned by default. - Force Auto Tune On - Enable Auto Tune + Force Auto-Tune On + Force Auto-Tune Aboard - Force-enable commaโ€™s auto lateral tuning. - Force-enable the comma's automatic lateral tuning. + <b>Force-enable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration".</b> + <b>Force-hoist openpilotโ€™s live auto-tuninโ€™ fer โ€œFrictionโ€ anโ€™ โ€œLateral Accelerationโ€.</b> - Force Auto Tune Off - Disable Auto Tune + Force Auto-Tune Off + Force Auto-Tune Off, ye scallywag - Force-disable commaโ€™s auto lateral tuning. - Disable the comma's automatic lateral tuning. + <b>Force-disable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration" and use the set value instead.</b> + <b>Force-disable openpilot's live auto-tunin' fer "Friction" an' "Lateral Acceleration" an' use th' set value instead.</b> - Always on Lateral - Forever on Lateral + Force Torque Controller + Force Torque Contrรดller, arr! - openpilot's steering control stays active even when the brake or gas pedals are pressed.<br><br>Deactivation only occurs with the <b>Cruise Control</b> button. - openpilot's steering control remains active even when the brake or gas pedals are pressed.<br><br>Deactivation only happens with the <b>Cruise Control</b> button. + <b>Use torque-based steering control instead of angle-based control for smoother lane keeping, especially in curves.</b> + <b>Hoist torque-based steerโ€™n control โ€˜stead oโ€™ angle-based, fer smoother lane keepinโ€™, โ€˜specially in curves.</b> + + + Always On Lateral + Always On Lateral + + + <b>openpilot's steering remains active even when the accelerator or brake pedals are pressed.</b> + <b>Arr, openpilotโ€™s helm stays alive eโ€™en when ye stomp the accelerator or brake pedals.</b> Enable With Cruise Control - Activate With Cruise Control + Hoist It With Cruise Control - Allow <b>Always on Lateral</b> to be active whenever <b>Cruise Control</b> is active, bypassing the need to enable openpilot first. - Enable <b>Always on Lateral</b> to function whenever <b>Cruise Control</b> is active, eliminating the need to activate openpilot first. + <b>Enable "Always On Lateral" whenever "Cruise Control" is on, even when openpilot is not engaged.</b> + <b>Hoist โ€œAlways On Lateralโ€ whenever โ€œCruise Controlโ€ be on, eโ€™en when openpilot be not engaged, arr!</b> - Enable With LKAS Button - Activate with LKAS Button + Enable With LKAS + Hoist it With LKAS - Allow <b>Always on Lateral</b> to be active whenever <b>LKAS</b> is active, bypassing the need to enable openpilot first. - Enable <b>Always on Lateral</b> to function whenever <b>LKAS</b> is active, skipping the requirement to activate openpilot first. + <b>Enable "Always On Lateral" whenever "LKAS" is on, even when openpilot is not engaged.</b> + <b>Hoist "Always On Lateral" whenever "LKAS" be on, eโ€™en when openpilot be not engaged, arr!</b> - Pause on Brake Below - Halt on Brake Below + Pause on Brake Press Below + Heave to on Brake Press Below - Temporarily pause <b>Always on Lateral</b> below the set speed when braking. - Temporarily halt <b>Always on Lateral</b> below the set speed when applying the brakes. + <b>Pause "Always On Lateral" below the set speed while the brake pedal is pressed.</b> + <b>Heave to โ€œAlways On Lateralโ€ below thโ€™ set speed whilst the brake pedal be pressed.</b> Lane Changes - Switching Lanes + Lane Change Arrs - Customize how openpilot performs lane changes. - Tailor how openpilot executes lane changes. + <b>Allow openpilot to change lanes.</b> + <b>Let openpilot be changinโ€™ lanes, arr.</b> Automatic Lane Changes - Auto Lane Changes + Automatic Lane Changes, arrr - Change lanes automatically when the turn signal is on. No steering input needed! - Automatically change lanes when the turn signal's on. No steering input required, matey! + <b>When the turn signal is on, openpilot will automatically change lanes.</b> No steering-wheel nudge required! + <b>When thโ€™ turn signal be on, openpilotโ€™ll change lanes by itself.</b> No helm-nudge needed, arr! Lane Change Delay - Delay in Changing Lanes + Lane Change Lag Arr - Delay automatic lane changes by the set amount of time. - Delay automatic lane changes by the specified time. + <b>Delay between turn signal activation and the start of an automatic lane change.</b> + <b>Delay 'twixt turn signal hoistin' and th' start o' an automatic lane change.</b> Minimum Lane Change Speed - Minimum Speed for Lane Change + Minimum Lane Change Speed, arrr - Minimum speed required for openpilot to perform a lane change. - Minimum speed needed for openpilot to execute a lane change. + <b>Lowest speed at which openpilot will change lanes.</b> + <b>Lowest speed fer which openpilotโ€™ll be changinโ€™ lanes.</b> Minimum Lane Width - Minimum Lane Width + Minimum Lane Width, arr - openpilot won't initiate a lane change into a lane narrower than this width. - openpilot won't start a lane change into a lane narrower than this width, matey. + <b>Prevent automatic lane changes into lanes narrower than the set width.</b> + <b>Belay automatic lane changes into lanes narrower than thโ€™ set width.</b> One Lane Change Per Signal - One Lane Change Per Signal + One Lane Change Per Signal, arr! - Limit lane changes to one per turn signal activation. - Restrict lane changes to one per turn signal use. + <b>Limit automatic lane changes to one per turn-signal activation.</b> + <b>Belay auto lane swaps to one per turn-signal hoist.</b> Lateral Tuning - Sideways Tuning + Sideways Tuninโ€™ - Settings for fine-tuning openpilot's lateral controls. - Settings for adjusting openpilot's lateral controls. + <b>Miscellaneous steering control changes</b> to fine-tune how openpilot drives. + <b>Assorted helm-tweaks</b> to fine-tune how openpilot sails the road. Force Turn Desires Below Lane Change Speed - Compel Turn Desires Below Lane Change Speed + Force Turn Desires Below Lane Change Speed, arr! - Force turn desires below the minimum lane change speed to improve turning accuracy. - Force turn desires below the minimum lane change speed to enhance turning accuracy. - - - Neural Network Feedforward (NNFF) - Neural Network Feedforward (NNFF) - - - Use <b>Twilsoncoโ€™s</b> <b>Neural Network FeedForward</b> model for smoother, model-based steering trained on your vehicle's data. - Employ <b>Twilsoncoโ€™s</b> <b>Neural Network FeedForward</b> model for smoother, model-based steering, trained on your vehicle's data, matey. - - - Smooth Curve Handling - Smooth Curve Navigation - - - Use <b>Twilsoncoโ€™s</b> torque-based adjustments to smooth out steering during curves. - Apply <b>Twilsoncoโ€™s</b> torque-based adjustments to smooth steering through curves. + <b>While driving below the minimum lane change speed with an active turn signal, instruct openpilot to turn left/right.</b> + <b>Whilst sailinโ€™ beneath the minimum lane-change speed with a live turn signal, bid openpilot to swing to port/starboard.</b> Quality of Life - Life's Quality + Quality o' Life - Miscellaneous features to improve the steering experience. - Various features to enhance the steering experience. + <b>Steering control changes to fine-tune how openpilot drives.</b> + <b>Steerinโ€™ control tweaks tโ€™ fine-tune how openpilot sails the road.</b> Pause Steering Below - Halt Steering Below + Heave-To Steerinโ€™ Below - Temporarily pause steering control below the set speed. - Pause steering control temporarily when speed falls below the set limit. + <b>Pause steering below the set speed.</b> + <b>Heave to the helm below the set speed.</b> Instant - Swift + Instant, arr! second - second + second seconds - seconds + seconds Turn Signal Only - Turn Signal Alone + Turn Signal Only, arr! - Are you sure you want to completely reset your <b>Actuator Delay</b>? - Are ye certain ye wish to fully reset yer <b>Actuator Delay</b>? + Reset <b>Actuator Delay</b> to its default value? + Be ye resettinโ€™ <b>Actuator Delay</b> to its default value? - Are you sure you want to completely reset your <b>Friction</b>? - Are ye certain ye wish to fully reset yer <b>Friction</b>? + Reset <b>Friction</b> to its default value? + Be ye resettinโ€™ <b>Friction</b> to its default value? Arr! - Are you sure you want to completely reset your <b>Kp Factor</b>? - Are ye certain ye wish to fully reset yer <b>Kp Factor</b>? + Reset <b>Kp Factor</b> to its default value? + Be settinโ€™ <b>Kp Factor</b> back tโ€™ its default value? - Are you sure you want to completely reset your <b>Lateral Accel</b>? - Are ye certain ye wish to fully reset yer <b>Lateral Accel</b>? + Reset <b>Lateral Accel</b> to its default value? + Be ye resettinโ€™ <b>Lateral Accel</b> to its default value? - Are you sure you want to completely reset your <b>Steer Ratio</b>? - Are ye certain ye wish to fully reset yer <b>Steer Ratio</b>? + Reset <b>Steer Ratio</b> to its default value? + Reset <b>Steer Ratio</b> tโ€™ its default value, aye? + + + Lateral Accel (Default: %1) + Lateral Accel (Default: %1), arr! Off - Off + Arr Off foot - foot + foot feet - feet + feet mph - mph + mph meter - gauge + meter meters - metres + meters km/h - km/h + knots per hour + + + Neural Network Feedforward (NNFF) + Neural Network Feedforward (NNFF), arrr! + + + <b>Twilsonco's "Neural Network FeedForward" model controller for smoother, model-based steering trained on your vehicle's data.</b> + <b>Twilsoncoโ€™s โ€œNeural Network FeedForwardโ€ model helm fer smoother, model-based steerage, trained on yer vesselโ€™s data, arr!</b> + + + Smooth Curve Handling + Smooth Curve Handlinโ€™ + + + <b>Twilsonco's torque-based adjustments to smoothen out steering in curves.</b> + <b>Twilsoncoโ€™s torque-based tweaks tโ€™ smooth out steerinโ€™ in curves, arr!</b> FrogPilotLongitudinalPanel Advanced Longitudinal Tuning - Advanced Longitudinal Adjustments + Savvy Longitudinal Tuning - Advanced settings for customizing how openpilot handles acceleration and braking. - Advanced settings for customizing how openpilot manages acceleration and braking. + <b>Advanced acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Savvy tweaks tโ€™ acceleration โ€™n brake helm</b> tโ€™ fine-tune how openpilot sails the road. Actuator Delay (Default: %1) - Actuator Delay (Default: %1) + Actuator Delay (Default: %1), arr! Actuator Delay - Actuator Lag + Actuator Delay, arr! - Delay before throttle or brake takes effect. Higher values smooth slow actuators but can feel laggy; lower values react quicker but may overshoot. - Delay before throttle or brake takes effect. Higher values smooth slow actuators but may feel laggy; lower values react quicker but might overshoot. + <b>The time between openpilot's throttle or brake command and the vehicle's response.</b> Increase if the vehicle feels slow to react; decrease if it feels too eager or overshoots. + <b>The span โ€™twixt openpilotโ€™s throttle or brake command โ€™n the vesselโ€™s answer.</b> Raise it if the carriage feels slow tโ€™ react; lower it if it be too eager or overshoots. Start Acceleration (Default: %1) - Begin Acceleration (Default: %1) + Hoist Acceleration (Default: %1) Start Acceleration - Begin Acceleration + Hoist the Acceleration - Extra acceleration applied when pulling away from a stop. Increase for snappier launches at the cost of smoothness; decrease for gentler starts. - Additional acceleration is applied when pulling away from a stop. Increase it for snappier launches at the cost of smoothness, or decrease it for gentler starts. + <b>Extra acceleration applied when starting from a stop.</b> Increase for quicker takeoffs; decrease for smoother, gentler starts. + <b>Extra shove oโ€™ speed when castinโ€™ off from a standstill.</b> Raise it fer swifter shove-offs; lower it fer smoother, gentler starts. Start Speed (Default: %1) - Initial Speed (Default: %1) + Set Sail Speed (Default: %1) Start Speed - Begin Velocity + Kickoff Speed - Speed where openpilot begins to exit the stopped state. Higher values avoid creeping but may feel sluggish; lower values move sooner but risk creeping. - Speed at which openpilot exits the stopped state. Higher values prevent creeping but may feel sluggish; lower values move sooner but risk creeping. + <b>The speed at which openpilot exits the stopped state.</b> Increase to reduce creeping; decrease to move sooner after stopping. + <b>Thโ€™ speed where openpilot leaves the stopped state.</b> Raise it tโ€™ curb creepinโ€™; lower it tโ€™ shove off sooner after stoppinโ€™. Stop Acceleration (Default: %1) - Halt Acceleration (Default: %1) + Belay Acceleration (Default: %1) Stop Acceleration - Halt Acceleration + Belay Acceleration - Brake force applied to hold the vehicle still. Larger values prevent creeping on hills but might jerk to a stop. Smaller values can feel smoother but may allow rolling. - Brake force applied to keep the vehicle steady. Larger values stop creeping on hills but might cause a sudden halt. Smaller values feel smoother but may permit rolling. + <b>Brake force applied to hold the vehicle at a standstill.</b> Increase to prevent rolling on hills; decrease for smoother, softer stops. + <b>Cannonade oโ€™ brakes hold the vessel dead still.</b> Heave it up to stop rollinโ€™ on hills; ease it down fer smoother, softer stoppinโ€™. Stopping Rate (Default: %1) - Default Stopping Rate: %1 + Stoppinโ€™ Rate (Default: %1) Stopping Rate - Rate of Stoppin' + Stoppinโ€™ Rate - How quickly braking ramps up when stopping. Faster rates shorten stopping distance but can be harsh; slower rates are smoother but need more room. - How swiftly braking intensifies when halting. Faster rates reduce stopping distance but can be harsh; slower rates are smoother but require more space. + <b>How quickly braking ramps up when stopping.</b> Increase for shorter, firmer stops; decrease for smoother, longer stops. + <b>How fast the brake bites when ye be stoppinโ€™.</b> Raise it fer shorter, firmer halts; lower it fer smoother, longer stops. Stop Speed (Default: %1) - Halt Speed (Default: %1) + Belay Speed (Default: %1) Stop Speed - Halt Speed + Belay Speed - Speed where openpilot beings to enter the stopped state. Higher values brake earlier for smoother stops but might stop too soon; lower values wait longer and can overshoot. - Speed at which openpilot starts entering the stopped state. Higher values brake earlier for smoother stops but might halt too soon; lower values delay and can overshoot. + <b>The speed at which openpilot considers the vehicle stopped.</b> Increase to brake earlier and stop smoothly; decrease to wait longer but risk overshooting. + <b>The speed where openpilot deems the vessel be stopped.</b> Raise it to drop anchor earlier โ€˜n halt smooth; lower it to linger longer but risk overshootinโ€™. Conditional Experimental Mode - Experimental Mode: Conditional + Conditional Experimental Mode, arr - Automatically switch to <b>Experimental Mode</b> when set conditions are met. - Automatically switch to <b>Experimental Mode</b> when the set conditions are met. + <b>Automatically switch to "Experimental Mode" when set conditions are met.</b> Allows the model to handle challenging situations with smarter decision making. + <b>Automatically be settinโ€™ sail fer "Experimental Mode" when set conditions be met.</b> Lets the model tackle squally waters with sharper decision-makinโ€™. Below - Underneath + Below decks - Switch to <b>Experimental Mode</b> when driving below this speed. - Switch to <b>Experimental Mode</b> when sailing below this speed. + <b>Switch to "Experimental Mode" when driving below this speed without a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>Hoist โ€œExperimental Modeโ€ when sailinโ€™ below this speed with no lead ship ahead</b> tโ€™ help openpilot handle low-speed seas more smooth-like. Curve Detected Ahead - Curve Spotted Ahead + Curve Spotted Dead Ahead - Switch to <b>Experimental Mode</b> when a curve is detected ahead. Useful for letting the model choose the appropriate speed for the curve. - Activate <b>Experimental Mode</b> when a curve is spotted ahead. Handy for allowing the model to select the right speed for the curve. + <b>Switch to "Experimental Mode" when a curve is detected</b> to allow the model to set an appropriate speed for the curve. + <b>Hoist โ€œExperimental Modeโ€ when a curve be spied</b> so the model can set a proper speed fer the bend. Lead Detected Ahead - Lead Spotted Ahead + Lead Spotted Dead Ahead - Switch to <b>Experimental Mode</b> when a slower or stopped vehicle is detected ahead. Can improve braking smoothness and reliability on some vehicles. - Activate <b>Experimental Mode</b> when a slower or stopped vehicle is detected ahead. This can enhance braking smoothness and reliability on some vehicles. + <b>Switch to "Experimental Mode" when a slower or stopped vehicle is detected.</b> Can make braking smoother and more reliable on some vehicles. + <b>Hoist "Experimental Mode" when a slower or stopped carriage be sighted off the bow.</b> Can make the brakes run smoother 'n more trusty on some rigs. - Navigation Data - Navigation Info + Navigation-Based + Chart-Guided - Switch to <b>Experimental Mode</b> when approaching intersections or turns on the active route while using <b>Navigate on openpilot (NOO)</b>. Useful for letting the model choose the appropriate speed for upcoming navigation maneuvers. - Engage <b>Experimental Mode</b> when nearing intersections or turns on the active route while using <b>Navigate on openpilot (NOO)</b>. This helps the model select the right speed for upcoming navigation maneuvers. + <b>Switch to "Experimental Mode" when approaching intersections or turns on the active route</b> while using "Navigate on openpilot" (NOO) to allow the model to set an appropriate speed for upcoming maneuvers. + <b>Hoist "Experimental Mode" when ye near crossroads or turns on the active course</b> while usinโ€™ "Navigate on openpilot" (NOO) to let the model set a proper speed fer the maneuvers ahead. - openpilot Wants to Stop In - openpilot Wishes to Halt + Predicted Stop In + Foretold Stop In - Switch to <b>Experimental Mode</b> when openpilot wants to stop within the set amount of time. This is typically triggered by the driving model "detecting" a red light or stop sign. - Switch to <b>Experimental Mode</b> when openpilot aims to halt within the set time. This usually happens when the driving model "detects" a red light or stop sign. + <b>Switch to "Experimental Mode" when openpilot predicts a stop within the set time.</b> This is usually triggered when the model "sees" a red light or stop sign ahead.<br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>Hoist sails to "Experimental Mode" when openpilot spies a stop within the set time, arr!</b> This be usually triggered when the model "sees" a red light or stop sign dead ahead, aye.<br><br><i><b>Disclaimer</b>: openpilot donโ€™t explicitly spot traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end drivinโ€™ calls from the cameraโ€™s gaze, which means it may drop anchor even when there be no clear reason, yarrr.</i> Turn Signal Below - Signal Below + Turn Signal Be Below - Switch to <b>Experimental Mode</b> when using a turn signal below the set speed. Useful for letting the model choose the appropriate speed for upcoming left or right turns. - Switch to <b>Experimental Mode</b> when using a turn signal below the set speed. Handy for letting the model select the right speed for upcoming left or right turns. + <b>Switch to "Experimental Mode" when using a turn signal below the set speed</b> to allow the model to choose an appropriate speed for smoother left and right turns. + <b>Hoist โ€œExperimental Modeโ€ when usinโ€™ a turn signal below the set speed</b> tโ€™ let the model pick a proper speed fer smoother port โ€™n starboard turns. Status Widget - Status Display + Status Widget, ye scallywag! - Show the <b>Conditional Experimental Mode</b> status on the driving screen. - Display the <b>Conditional Experimental Mode</b> status on the driving screen. + <b>Show which condition triggered "Experimental Mode"</b> on the driving screen. + <b>Show which squall oโ€™ conditions sparked "Experimental Mode"</b> on the drivinโ€™ screen. - Show <b>Curve Speed Control</b>'s desired speed on the driving screen. - Display <b>Curve Speed Control</b>'s target speed on the driving screen. + Curve Speed Controller + Curved Speed Helmsman - Customize Driving Personalities - Tailor Driving Personalities + <b>Automatically slow down for upcoming curves</b> using data learned from your driving style, adapting to curves as you would. + <b>Automatically heave-to fer approachinโ€™ bends</b> usinโ€™ data learned from yer drivinโ€™ style, trimminโ€™ fer curves as ye would. - Customize the personality profiles to your driving style. - Tailor the personality profiles to match your driving style, matey. + Calibrated Lateral Acceleration + Calibrated Lateral Acceleration, arr! - Traffic Personality - Traffic Persona + <b>The learned lateral acceleration from collected driving data.</b> This sets how fast openpilot will take curves. Higher values allow faster cornering; lower values slow the vehicle for gentler turns. + <b>Thโ€™ learned lateral acceleration from collected drivinโ€™ data.</b> This sets how fast openpilotโ€™ll take curves. Higher values let faster cornerinโ€™; lower values slow the vessel fer gentler turns. - Customize the <b>Traffic</b> personality profile. Tailored for navigating through traffic. - Personalize the <b>Traffic</b> personality profile. Designed for steering through traffic. + Calibration Progress + Calibratinโ€™ Progress + + + <b>How much curve data has been collected.</b> This is a progress meter; it is normal for the value to stay low and rarely reach 100%. + <b>How much curve booty be gathered.</b> This be a progress meter; โ€™tis normal fer the value tโ€™ stay low and rarely hit 100%. + + + Reset Curve Data + Reset the Curve Booty Data + + + <b>Reset collected user data for "Curve Speed Controller".</b> + <b>Reset thโ€™ collected user data fer "Curve Speed Controller".</b> + + + <b>Show the "Curve Speed Controller" target speed on the driving screen.</b> + <b>Show the "Curve Speed Controller" target speed on the drivinโ€™ screen, arr.</b> + + + Driving Personalities + Drivinโ€™ Personalities + + + <b>Customize the "Driving Personalities"</b> to better match your driving style. + <b>Trim ye "Driving Personalities"</b> tโ€™ better fit yer drivinโ€™ style. + + + Traffic Mode + Traffic Mode, arr + + + <b>Customize the "Traffic Mode" personality profile.</b> Designed for stop-and-go driving. + <b>Tune the "Traffic Mode" persona, ye scallywag.</b> Forged fer stopโ€‘โ€™nโ€‘go sailinโ€™ ashore. Following Distance - Distance Between Vessels + Followinโ€™ Distance - The minimum following distance while in <b>Traffic Mode</b>. openpilot will dynamically adjust between this value and the value in the <b>Aggressive</b> profile based on your current speed. - The minimum following distance while in <b>Traffic Mode</b> is dynamically adjusted by openpilot between this value and the one in the <b>Aggressive</b> profile, depending on your current speed. + <b>The minimum following distance to the lead vehicle in "Traffic Mode".</b> openpilot blends between this value and the "Aggressive" profile as speed increases. Increase for more space; decrease for tighter gaps. + <b>Thโ€™ minimum followinโ€™ distance tโ€™ the lead vessel in โ€œTraffic Modeโ€.</b> openpilot blends โ€™tween this value anโ€™ the โ€œAggressiveโ€ profile as speed rises. Raise fer more berth; lower fer tighter gaps. - Acceleration Sensitivity - Acceleration Sensitivity, matey + Acceleration Smoothness + Acceleration Smoothness, arrr - How sensitive openpilot is to changes in acceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot is to changes in acceleration while in <b>Traffic Mode</b>. Higher values lead to smoother, more gradual acceleration, while lower values permit quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot accelerates in "Traffic Mode".</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>How smooth openpilot sets sail in "Traffic Mode".</b> Raise fer gentler shove-offs; lower fer quicker but more sudden castoffs. - Deceleration Sensitivity - Deceleration Sensitivity + Braking Smoothness + Brakeโ€™n Smoothness - How sensitive openpilot is to changes in deceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot is to changes in deceleration while in <b>Traffic Mode</b>. Higher values lead to smoother, more gradual deceleration, while lower values permit quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot brakes in "Traffic Mode".</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>How smooth openpilot drops anchor in "Traffic Mode".</b> Raise it fer gentler stoppinโ€™; lower it fer quicker but sharper brake-bites, arr. - Safety Distance Sensitivity - Sensitivity to Safety Distance + Safety Gap Bias + Safety Gap Bias, ye scallywag - How cautious openpilot is around other vehicles or obstacles while in <b>Traffic Mode</b>. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - How cautious openpilot is around other vehicles or obstacles while in <b>Traffic Mode</b>. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time, matey. + <b>How much extra space openpilot keeps from the vehicle ahead in "Traffic Mode".</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>โ€™Ow much extra berth openpilot keeps from the vessel ahead in "Traffic Mode".</b> Heave it up fer wider gaps anโ€™ more cautious tailinโ€™; trim it down fer tighter gaps anโ€™ closer tailinโ€™. - Speed Decrease Response - Response to Reduced Speed + Slowdown Response + Slackeninโ€™ Response - How quickly openpilot decreases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot reduces speed in <b>Traffic Mode</b>. Higher values guarantee smoother, more gradual speed adjustments when slowing down, while lower values permit quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot slows down in "Traffic Mode".</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>How smooth-like openpilot heaves to in "Traffic Mode".</b> Raise it fer gentler easing off; lower it fer quicker but sharper slowdowns. - Speed Increase Response - Response to Speed Increase + Speed-Up Response + Speed-Up Response - How quickly openpilot increases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot boosts speed in <b>Traffic Mode</b>. Higher values provide smoother, more gradual acceleration, while lower values permit quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot speeds up in "Traffic Mode".</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>How smooth openpilot weighs anchor in "Traffic Mode".</b> Raise fer gentler weighinโ€™ oโ€™ speed; lower fer swifter but more joltinโ€™ shove oโ€™ the throttle. - Reset Settings - Restore Settings + Reset to Defaults + Set back tโ€™ Defaults - Reset <b>Traffic Mode</b> settings to default values. - Restore <b>Traffic Mode</b> settings to their default values. + <b>Reset "Traffic Mode" settings to defaults.</b> + <b>Be settin' โ€œTraffic Modeโ€ back tโ€™ default settinโ€™s.</b> - Aggressive Personality - Bold Demeanor + Aggressive + Aggressivโ€™ - Customize the <b>Aggressive</b> personality profile. Designed for a more assertive driving style. - Tailor the <b>Aggressive</b> personality profile. Crafted for a bolder driving style. + <b>Customize the "Aggressive" personality profile.</b> Designed for assertive driving with tighter gaps. + <b>Tune thโ€™ "Aggressive" persona profile.</b> Forged fer bold drivinโ€™ with tighter gaps, arr. - How many seconds openpilot will follow behind lead vehicles while using the <b>Aggressive</b> personality profile.<br><br>Default: 1.25 seconds. - How many seconds will openpilot trail behind lead vehicles when using the <b>Aggressive</b> personality profile?<br><br>Default: 1.25 seconds. + <b>How many seconds openpilot follows behind lead vehicles when using the "Aggressive" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.25 seconds. + <b>Arr, how many seconds openpilot tails the lead ships when usinโ€™ the โ€œAggressiveโ€ profile.</b> Raise it fer more berth; lower it fer tighter gaps.<br><br>Default: 1.25 seconds. - How sensitive openpilot is to changes in acceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot be to shifts in acceleration when using the <b>Aggressive</b> personality profile. Higher values lead to smoother, more gradual acceleration, while lower values permit quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot accelerates with the "Aggressive" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>How smoothly openpilot hoists speed with the "Aggressive" profile.</b> Raise fer gentler shove-offs; lower fer swifter but more sudden castoffs. - How sensitive openpilot is to changes in deceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot is to changes in deceleration when using the <b>Aggressive</b> personality profile. Higher values lead to smoother, more gradual deceleration, while lower values permit quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot brakes with the "Aggressive" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>How smooth openpilot drops anchor with the "Aggressive" profile.</b> Raise it fer gentler stoppinโ€™; lower it fer faster but sharper brake-bitinโ€™. - How cautious openpilot is around other vehicles or obstacles while using the <b>Aggressive</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - How cautious openpilot is around other vehicles or obstacles when using the <b>Aggressive</b> personality profile. Higher values increase following distances and prioritize safety, resulting in more cautious driving. Lower values allow for closer following but may reduce reaction time. + <b>How much extra space openpilot keeps from the vehicle ahead with the "Aggressive" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>How much extra berth openpilot keeps from the vessel ahead with the "Aggressive" profile.</b> Raise fer wider gaps anโ€™ more cautious tailinโ€™; lower fer tighter gaps anโ€™ closer tailinโ€™. - How quickly openpilot decreases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot reduces speed with the <b>Aggressive</b> personality profile. Higher values guarantee smoother, more gradual speed adjustments when slowing down, while lower values permit quicker, more responsive changes that might feel abrupt. + <b>How smoothly openpilot slows down with the "Aggressive" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>How smooth-like openpilot eases off thโ€™ throttle with thโ€™ โ€œAggressiveโ€ profile.</b> Raise it fer gentler deceleration; lower it fer quicker but keener slowdowns, arr. - How quickly openpilot increases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot boosts speed with the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. + <b>How smoothly openpilot speeds up with the "Aggressive" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>How smartly openpilot weighs anchor with the "Aggressive" profile.</b> Raise it fer a steadier shove off; lower it fer swifter but rougher surge ahead. - Reset the <b>Aggressive</b> personality profile settings to default values. - Restore the <b>Aggressive</b> personality profile settings to their default values. - - - Standard Personality - Typical Character - - - Customize the <b>Standard</b> personality profile. Designed for a balanced driving style. - Tailor the <b>Standard</b> personality profile. Crafted for a balanced driving style. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Standard</b> personality profile.<br><br>Default: 1.45 seconds. - How many seconds will openpilot trail behind lead vehicles when using the <b>Standard</b> personality profile?<br><br>Default: 1.45 seconds. - - - How sensitive openpilot is to changes in acceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot be to shifts in acceleration when using the <b>Standard</b> personality profile. Higher values lead to smoother, more gradual acceleration, while lower values permit quicker, more responsive changes that might feel abrupt. - - - How sensitive openpilot is to changes in deceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot be to changes in deceleration when using the <b>Standard</b> personality profile. Higher values lead to smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that might feel abrupt. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Standard</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - How cautious openpilot is around other vehicles or obstacles when using the <b>Standard</b> personality profile. Higher values increase following distances and prioritize safety, resulting in more cautious driving. Lower values allow for closer following but may reduce reaction time. - - - How quickly openpilot decreases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot reduces speed with the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - - - How quickly openpilot increases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot boosts speed with the <b>Standard</b> personality profile. Higher values provide smoother, more gradual acceleration, while lower values permit quicker, more responsive changes that might feel abrupt. - - - Reset the <b>Standard</b> personality profile settings to default values. - Restore the <b>Standard</b> personality profile settings to their default values. - - - Relaxed Personality - Laid-back Disposition - - - Customize the <b>Relaxed</b> personality profile. Designed for a more laid-back driving style. - Tailor the <b>Relaxed</b> personality profile. Crafted for a laid-back driving style, matey. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Relaxed</b> personality profile.<br><br>Default: 1.75 seconds. - How many seconds will openpilot follow behind lead vehicles when using the <b>Relaxed</b> personality profile?<br><br>Default: 1.75 seconds. - - - How sensitive openpilot is to changes in acceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot be to shifts in acceleration when using the <b>Relaxed</b> personality profile. Higher values lead to smoother, more gradual acceleration, while lower values permit quicker, more responsive changes that might feel abrupt. - - - How sensitive openpilot is to changes in deceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - How sensitive openpilot be to changes in deceleration when using the <b>Relaxed</b> personality profile. Higher values lead to smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Relaxed</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - How cautious openpilot is around other vehicles or obstacles when using the <b>Relaxed</b> personality profile. Higher values increase following distances and prioritize safety, resulting in more cautious driving. Lower values allow for closer following but may reduce reaction time. - - - How quickly openpilot decreases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot reduces speed with the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - - - How quickly openpilot increases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - How swiftly openpilot boosts speed with the <b>Relaxed</b> personality profile. Higher values guarantee smoother, more gradual speed shifts when accelerating, while lower values permit quicker, more responsive changes that might feel abrupt. - - - Reset the <b>Relaxed</b> personality profile settings to default values. - Restore the <b>Relaxed</b> personality profile settings to their default values. - - - Longitudinal Tuning - Longitudinal Adjustment - - - Settings that control how openpilot manages speed and acceleration. - Settings that govern how openpilot handles speed and acceleration. - - - Acceleration Profile - Speed Increase Chart - - - Enable either a sporty or eco-friendly acceleration profile. <b>Sport+</b> aims to make openpilot accelerate as fast as possible! - Enable either a sporty or eco-friendly acceleration profile. <b>Sport+</b> aims to make openpilot accelerate at top speed! - - - Deceleration Profile - Deceleration Chart - - - Enable either a sporty or eco-friendly deceleration profile. - Enable either a sporty or eco-friendly slowing profile. - - - Human-Like Acceleration - Human-Like Speed - - - Use the lead vehicle's acceleration rate when at a takeoff and ramp off the acceleration rate when approaching the maximum set speed for a more "human-like" driving experience. - Apply the lead vehicle's acceleration rate at takeoff, and ease off the acceleration as you near the maximum set speed for a more "human-like" driving experience. - - - Human-Like Approach Behind Leads - Human-Like Strategy Behind Leads - - - Dynamically adjust the desired following distance when approaching slower or stopped vehicles for a more "human-like" driving experience. - Dynamically adjust the desired following distance when approaching slower or stopped vehicles for a more "human-like" driving experience, matey. - - - Lead Detection Confidence - Confidence in Lead Detection - - - How sensitive openpilot is to detecting vehicles ahead. A lower value can help detect vehicles sooner and from farther away, but increases the chance openpilot mistakes other objects for vehicles. - How sensitive openpilot is to detecting vehicles ahead. A lower value can help spot vehicles sooner and from farther away, but it increases the chance openpilot mistakes other objects for vehicles. - - - Maximum Acceleration Rate - Maximum Acceleration Rate - - - Set a cap on how fast openpilot can accelerate. - Limit how swiftly openpilot can accelerate. - - - "Taco Bell Run" Turn Speed Hack - "Taco Bell Run" Quick Turn Hack - - - The turn speed hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to slow down when taking left/right turns for smoother turns. - The turn speed hack from comma's 2022 "Taco Bell Run" drive is crafted to slow down when making left or right turns, ensuring smoother navigation. - - - Quality of Life - Life's Quality - - - Miscellaneous features to improve the acceleration and braking experience. - Various features to enhance the acceleration and braking experience. - - - Cruise Interval - Voyage Interval - - - The interval used when changing the cruise control speed. - The interval for adjusting the cruise control speed. - - - Cruise Interval (Long Press) - Cruise Interval (Hold Press) - - - The interval used when changing the cruise control speed while holding down the button for 0.5+ seconds. - The interval for adjusting the cruise control speed when holding the button for over 0.5 seconds. - - - Force Keep openpilot in the Standstill State - Keep openpilot in the Standstill State - - - Keep openpilot in the standstill state until either the gas pedal or <b>resume</b> button is pressed. - Keep openpilot in the standstill state until either the gas pedal or the <b>resume</b> button is pressed, matey. - - - Force Stop for "Detected" Stop Lights/Signs - Force Halt for "Detected" Stop Lights/Signs - - - Force a stop whenever openpilot <b>detects</b> a potential red light/stop sign to prevent it from running the red light/stop sign. - Force a stop whenever openpilot <b>spots</b> a potential red light/stop sign to prevent it from running the red light/stop sign. - - - Increase Stopped Distance - Extend Stopped Distance - - - Increase the distance openpilot stops behind vehicles. - Extend the distance openpilot halts behind vehicles. - - - Set Speed Offset - Adjust Speed Offset - - - How much higher or lower the set speed should be compared to your current set speed. For example, if you prefer to drive 5 mph above the speed limit, this setting will automatically add that difference when you adjust your set speed. - How much higher or lower should the set speed be compared to your current speed? For instance, if ye prefer to drive 5 mph above the speed limit, this setting will automatically add that difference when ye adjust your set speed. - - - Map Accel/Decel to Gears - Map Accel/Decel to Gears, matey! - - - Map the acceleration and deceleration profiles to your car's <b>Eco</b> or <b>Sport</b> gear modes. - Align the acceleration and deceleration profiles with your car's <b>Eco</b> or <b>Sport</b> gear modes. - - - Reverse Cruise Increase - Reverse Cruise Hike - - - Reverse the <b>long press</b> cruise increase feature to increase the max speed by 5 instead of 1 on short presses. - Change the <b>long press</b> cruise increase feature so that short presses boost the max speed by 5 instead of 1. - - - Speed Limit Controller - Speed Limit Regulator - - - Limit openpilot's maximum driving speed based on data from downloaded maps, <b>Mapbox</b>, <b>Navigate on openpilot</b>, or the dashboard (supported vehicles: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - Set openpilot's maximum driving speed using data from downloaded maps, <b>Mapbox</b>, <b>Navigate on openpilot</b>, or the dashboard for supported vehicles: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, and <b>Toyota</b>. - - - Fallback Speed - Fallback Velocity - - - The speed limit source when no speed limit data is available. - The default speed limit when no specific data is available. - - - Override Speed - Increase Velocity - - - The speed openpilot uses after manually exceeding the posted speed limit.<br><br><b>- Set With Gas Pedal</b>: Uses the speed obtained while pressing the gas<br><b>- Max Set Speed</b>: Uses the cruise control set speed<br><br>Overrides clear upon disengagement. - The speed openpilot adopts after manually surpassing the posted speed limit.<br><br><b>- Set With Gas Pedal</b>: Uses the speed reached while pressing the gas<br><b>- Max Set Speed</b>: Uses the cruise control set speed<br><br>Overrides clear upon disengagement. - - - Miscellaneous features to improve the <b>Speed Limit Controller</b> experience. - Various features to enhance the <b>Speed Limit Controller</b> experience. - - - Confirm New Speed Limits - Verify New Speed Limits - - - Require confirmation before applying new speed limits. To accept, use the flashing widget on the driving screen or press the <b>Cruise Increase</b> button. To deny, press the <b>Cruise Decrease</b> button or simply ignore the prompt for 30 seconds. - Require confirmation before setting new speed limits. To accept, use the flashing widget on the driving screen or press the <b>Cruise Increase</b> button. To deny, press the <b>Cruise Decrease</b> button or ignore the prompt for 30 seconds. - - - Force MPH Readings from Dashboard - Enforce MPH Readings from Dashboard - - - Force dashboard speed limit readings to be in mph. - Set the dashboard speed readings to display in mph, matey. - - - Higher Limit Lookahead Time - Extended Limit Lookahead Time - - - How far ahead openpilot anticipates upcoming higher speed limits from the downloaded map data. - How far in advance does openpilot anticipate upcoming higher speed limits from the downloaded map data? - - - Lower Limit Lookahead Time - Minimum Lookahead Time - - - How far ahead openpilot anticipates upcoming lower speed limits from the downloaded map data. - How far ahead does openpilot anticipate upcoming lower speed limits from the downloaded map data? - - - Match Speed Limit on Engage - Match Speed Limit on Activation - - - Automatically set cruise control speed to match the current speed limit when first enabling openpilot. - Automatically set cruise control speed to match the current speed limit when first enabling openpilot, matey. - - - Use Mapbox as Fallback - Use Mapbox as a Backup - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - When no other sources are available, use <b>Mapbox</b> speed limit data. - - - Speed Limit Source Priority - Priority of Speed Limit Source - - - Define the priority order for speed limit sources (<b>Dashboard</b>, <b>Map Data</b>, <b>Navigation</b>). Higher-priority sources override lower ones when multiple limits are detected. - Establish the priority order for speed limit sources: <b>Dashboard</b>, <b>Map Data</b>, and <b>Navigation</b>. Higher-priority sources take precedence over lower ones when multiple limits are identified. - - - Speed Limit Offsets - Speed Limit Adjustments - - - Offsets relative to the posted speed limit for a more "human-like" driving experience. - Offsets relative to the posted speed limit for a more "human-like" driving adventure. - - - Speed Offset (0โ€“24 mph) - Speed Offset (0โ€“24 knots) - - - Target speed offset applied for posted limits between 0 and 24 mph. - Target speed offset applied for posted limits from 0 to 24 mph. - - - Speed Offset (25โ€“34 mph) - Speed Variation (25โ€“34 mph) - - - Target speed offset applied for posted limits between 25 and 34 mph. - Target speed offset applied for posted limits from 25 to 34 mph. - - - Speed Offset (35โ€“44 mph) - Speed Adjustment (35โ€“44 mph) - - - Target speed offset applied for posted limits between 35 and 44 mph. - Target speed offset set for posted limits from 35 to 44 mph. - - - Speed Offset (45โ€“54 mph) - Speed Adjustment (45โ€“54 mph) - - - Target speed offset applied for posted limits between 45 and 54 mph. - Target speed offset applied for posted limits from 45 to 54 mph. - - - Speed Offset (55โ€“64 mph) - Speed Offset (55โ€“64 knots) - - - Target speed offset applied for posted limits between 55 and 64 mph. - Target speed offset applied for posted limits from 55 to 64 mph. - - - Speed Offset (65โ€“74 mph) - Speed Range (65โ€“74 mph) - - - Target speed offset applied for posted limits between 65 and 74 mph. - Target speed offset applied for posted limits from 65 to 74 mph. - - - Speed Offset (75โ€“99 mph) - Speed Range (75โ€“99 mph) - - - Target speed offset applied for posted limits between 75 and 99 mph. - Target speed offset set for posted limits from 75 to 99 mph. - - - Visual Settings - Display Options - - - Visual features to improve the <b>Speed Limit Controller</b> experience. - Visual elements to enhance the <b>Speed Limit Controller</b> experience. - - - Show Speed Limit Offset - Display Speed Limit Offset - - - Display the speed limit offset separately on the driving screen. - Show the speed limit offset separately on the driving screen, matey. - - - Show Speed Limit Sources - Display Speed Limit Sources - - - Display the speed limit sources on the driving screen. - Show the speed limit sources on the driving screen, matey. - - - seconds - seconds - - - m/sยฒ - m/sยฒ - - - mph - mph - - - With Lead - With Lead - - - Switch to <b>Experimental Mode</b> when driving below this speed with a lead. - Switch to <b>Experimental Mode</b> when sailing below this speed with a lead. - - - Slower Lead - Reduced Lead - - - Stopped Lead - Lead Halted - - - Intersections - Crossroads - - - Turns - Rotations - - - Off - Off - - - second - second - - - Only For Detected Lanes - For Detected Lanes Only - - - RESET - RESET + <b>Reset the "Aggressive" profile to defaults.</b> + <b>Reset the "Aggressive" profile to her defaults, arr!</b> Standard - Regular + Standarrrd + + + <b>Customize the "Standard" personality profile.</b> Designed for balanced driving with moderate gaps. + <b>Tweak the "Standard" persona, ye scallywag.</b> Forged fer steady sailinโ€™ with middlinโ€™ gaps, arr. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Standard" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.45 seconds. + <b>How many seconds openpilot tails the lead vessels when usinโ€™ the "Standard" profile.</b> Raise fer more berth; lower fer tighter gaps.<br><br>Default: 1.45 seconds. + + + <b>How smoothly openpilot accelerates with the "Standard" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>How smooth openpilot hoists speed with the "Standard" profile, arr.</b> Raise it fer softer shove-offs; lower it fer swifter but brusque castoffs. + + + <b>How smoothly openpilot brakes with the "Standard" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>How smooth openpilot drops anchor with the "Standard" profile.</b> Raise it fer gentler stops; lower it fer quicker but sharper braking, arr. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Standard" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>How much extra berth openpilot keeps off the vessel ahead with the "Standard" profile.</b> Raise it fer wider gaps anโ€™ warier followinโ€™; lower it fer tighter gaps anโ€™ closer tailinโ€™. + + + <b>How smoothly openpilot slows down with the "Standard" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>How smooth-like openpilot eases off with the "Standard" profile, arrr.</b> Raise it fer gentler deceleratinโ€™; lower it fer quicker but snappier slowdowns, ye scallywag. + + + <b>How smoothly openpilot speeds up with the "Standard" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>How smartly openpilot weighs anchor with the "Standard" profile.</b> Raise it fer gentler weighinโ€™ on the throttle; lower it fer swifter but rougher spurts oโ€™ acceleration. + + + <b>Reset the "Standard" profile to defaults.</b> + <b>Be settinโ€™ the "Standard" profile back to defaults, arr.</b> + + + Relaxed + Laid-back, arr + + + <b>Customize the "Relaxed" personality profile.</b> Designed for smoother, more comfortable driving with larger gaps. + <b>Tune the "Relaxed" persona, ye swab.</b> Built fer smoother, comfier sailinโ€™ on the roads with wider gaps, arr. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Relaxed" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.75 seconds. + <b>How many seconds openpilot keeps astern oโ€™ lead vessels when usinโ€™ the "Relaxed" profile.</b> Raise it fer more berth; lower it fer tighter gaps.<br><br>Default: 1.75 seconds. + + + <b>How smoothly openpilot accelerates with the "Relaxed" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>How smooth openpilot makes way with the "Relaxed" profile, arr.</b> Raise fer softer shove-offs; lower fer swifter but brusque cast-offs. + + + <b>How smoothly openpilot brakes with the "Relaxed" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>How smooth openpilot be hittinโ€™ the brakes with the "Relaxed" profile.</b> Raise it fer gentler halts; lower it fer faster but snappier stoppinโ€™. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Relaxed" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>How much extra berth openpilot keeps from the vessel ahead with the "Relaxed" profile.</b> Raise it fer wider gaps anโ€™ more wary followinโ€™; lower it fer tighter gaps anโ€™ closer tailinโ€™. + + + <b>How smoothly openpilot slows down with the "Relaxed" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>How smoothly openpilot eases off thโ€™ throttle with the "Relaxed" profile.</b> Raise it fer gentler deceleration; lower it fer quicker but harsher slowdowns, arrr. + + + <b>How smoothly openpilot speeds up with the "Relaxed" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>How smooth openpilot hoists speed with the "Relaxed" profile.</b> Raise it fer gentler weigh-on; lower it fer swifter but rougher surge. + + + <b>Reset the "Relaxed" profile to defaults.</b> + <b>Reset the "Relaxed" profile tโ€™ defaults, arrr.</b> + + + Longitudinal Tuning + Longitudinal Tuninโ€™ + + + <b>Acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Adjustments tโ€™ acceleration โ€™n brake control</b> tโ€™ fine-tune how openpilot sails the road. + + + Acceleration Profile + Accelโ€™ration Profile + + + <b>How quickly openpilot speeds up.</b> "Eco" is gentle and efficient, "Sport" is firmer and more responsive, and "Sport+" accelerates at the maximum rate allowed. + <b>How briskly openpilot makes way.</b> "Eco" be gentle โ€™n thrifty, "Sport" be sturdier โ€™n quicker to answer, and "Sport+" makes full sail with the fastest shove allowed. + + + Deceleration Profile + Slowinโ€™ Down Profile + + + <b>How firmly openpilot slows down.</b> "Eco" favors coasting, "Sport" applies stronger braking. + <b>How stoutly openpilot be slowinโ€™ ye down.</b> "Eco" be favorinโ€™ coasting, "Sport" be layinโ€™ on stronger brakes, arr. + + + Human-Like Acceleration + Human-Like Heave-to Acceleration + + + <b>Acceleration that mimics human behavior</b> by easing the throttle at low speeds and adding extra power when taking off from a stop. + <b>Acceleration that be mimiccinโ€™ human ways</b>, easinโ€™ thโ€™ throttle at low speeds anโ€™ givinโ€™ extra shove when shovinโ€™ off from a stop. + + + Human-Like Following + Human-Like Followin' + + + Lead Detection Sensitivity + Lead Spotting Sensitivity + + + <b>How sensitive openpilot is to detecting vehicles.</b> Higher sensitivity allows quicker detection at longer distances but may react to non-vehicle objects; lower sensitivity is more conservative and reduces false detections. + <b>How sharp-eyed openpilot be at spyinโ€™ vehicles.</b> Higher sensitivity spots โ€˜em quicker from farther off but may jump at non-vehicle flotsam; lower sensitivity be more cautious and cuts down false sightings. + + + Maximum Acceleration + Maximum Accelโ€™ration + + + <b>Limit the strongest acceleration</b> openpilot can command. + <b>Lassoe the mightiest surge</b> openpilot can be orderinโ€™. + + + "Taco Bell Run" Turn Speed Hack + "Taco Bell Run" Turn Speed Hack, arr + + + <b>The turn-speed hack from comma's 2022 "Taco Bell Run".</b> Designed to slow down for left and right turns. + <b>Arr! The turn-speed hack from comma's 2022 "Taco Bell Run".</b> Built tโ€™ ease off fer port โ€˜n starboard turns. + + + Quality of Life + Quality o' Life + + + <b>Miscellaneous acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Assorted tweaks to thโ€™ throttle โ€™n brake helm</b> to fine-tune how openpilot sails the road. + + + Cruise Interval + Cruisinโ€™ Interval Arr! + + + <b>How much the set speed increases or decreases</b> for each + or โ€“ cruise control button press. + <b>How much the set speed be raisinโ€™ or lowerinโ€™</b> for each + or โ€“ cruise control button press. + + + Cruise Interval (Hold) + Cruise Interval (Hold) Arr + + + <b>How much the set speed increases or decreases while holding the + or โ€“ cruise control buttons.</b> + <b>How much the set speed be raisinโ€™ or lowerinโ€™ while ye hold the + or โ€“ cruise control buttons, arr.</b> + + + Force Stop at "Detected" Stop Lights/Signs + Force Heave-To at "Detected" Stop Lanterns/Signs + + + <b>Force openpilot to stop whenever the driving model "detects" a red light or stop sign.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>Make openpilot heave to whenever the drivinโ€™ model "spots" a red lantern or stop sign, arr.</b><br><br><i><b>Disclaimer</b>: openpilot donโ€™t be explicitly spyinโ€™ traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end helm calls from the cameraโ€™s eye, meaninโ€™ it may drop anchor even when there be no clear cause.</i> + + + Increase Stopped Distance by: + Be increasinโ€™ Stopped Distance by: + + + <b>Add extra space when stopped behind vehicles.</b> Increase for more room; decrease for shorter gaps. + <b>Add extra berth when ye be stopped abaft other vessels.</b> Raise it fer more room; lower it fer tighter gaps. + + + Map Accel/Decel to Gears + Map Accel/Decel tโ€™ Gears + + + <b>Map the Acceleration or Deceleration profiles to the vehicle's "Eco" and "Sport" gear modes.</b> + <b>Chart the Acceleration or Deceleration profiles tโ€™ the vesselโ€™s "Eco" anโ€™ "Sport" gear modes, arr!</b> + + + Offset Set Speed by: + Set yer speed offset by: + + + <b>Increase the set speed by the chosen offset.</b> For example, set +5 if you usually drive 5 over the limit. + <b>Hoist the set speed by the chosen offset, matey.</b> Fer example, set +5 if ye usually sail 5 over the limit. + + + Reverse Cruise Increase + Astern Cruise Increase + + + <b>Reverse the cruise control button behavior</b> so a short press increases the set speed by 5 instead of 1. + <b>Flip thโ€™ cruise control buttonโ€™s ways</b> so a quick tap boosts set speed by 5 โ€˜stead oโ€™ 1. + + + Increase Following Distance by: + Boost Yer Followinโ€™ Distance by: + + + Reduce Acceleration by: + Trim the throttle by: + + + Reduce Speed in Curves by: + Reef Yer Speed in Curves by: + + + Snow + Snowy seas + + + <b>Driving adjustments for snowy conditions.</b> + <b>Drivinโ€™ tweaks fer snowy seas ashore.</b> + + + <b>Add extra space behind lead vehicles in snow.</b> Increase for more space; decrease for tighter gaps. + <b>Add extra berth aft oโ€™ lead vessels in snow.</b> Increase fer more space; decrease fer tighter gaps. + + + <b>Add extra buffer when stopped behind vehicles in snow.</b> Increase for more room; decrease for shorter gaps. + <b>Be addinโ€™ extra buffer when ye be stopped abaft other vessels in snow.</b> Raise it fer more berth; lower it fer tighter gaps. + + + <b>Lower the maximum acceleration in snow.</b> Increase for softer takeoffs; decrease for quicker but less stable takeoffs. + <b>Reef the max shove in snow, matey.</b> Raise it fer softer shove-offs; drop it fer quicker but less steady shove-offs. + + + <b>Lower the desired speed while driving through curves in snow.</b> Increase for safer, gentler turns; decrease for more aggressive driving in curves. + <b>Lower yer wished speed while sailinโ€™ through curves in snow.</b> Raise it fer safer, gentler turns; drop it fer more swashbucklinโ€™, aggressive drivinโ€™ in curves. + + + Speed Limit Controller + Speed Limit Helmsman + + + <b>Limit openpilot's maximum driving speed to the current speed limit</b> obtained from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + <b>Lash openpilotโ€™s top sail oโ€™ speed to the current speed limit</b> fetched from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard fer supported vessels (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + + + Fallback Speed + Fallback Speed, ye scallywag + + + <b>The speed used by "Speed Limit Controller" when no speed limit is found.</b><br><br>- <b>Set Speed</b>: Use the cruise set speed<br>- <b>Experimental Mode</b>: Estimate the limit using the driving model<br>- <b>Previous Limit</b>: Keep using the last confirmed limit + <b>Thโ€™ speed used by "Speed Limit Controller" when no speed limit be found.</b><br><br>- <b>Set Speed</b>: Use thโ€™ cruise set speed<br>- <b>Experimental Mode</b>: Spy the limit usinโ€™ the drivinโ€™ model<br>- <b>Previous Limit</b>: Keep usinโ€™ the last confirmed limit + + + Override Speed + Seize the Speed Helm + + + <b>The speed used by "Speed Limit Controller" after you manually drive faster than the posted limit.</b><br><br>- <b>Set with Gas Pedal</b>: Use the highest speed reached while pressing the gas<br>- <b>Max Set Speed</b>: Use the cruise set speed<br><br>Overrides clear when openpilot disengages. + <b>Thโ€™ speed used by "Speed Limit Controller" after ye sail faster than thโ€™ posted limit by yer own hand.</b><br><br>- <b>Set with Gas Pedal</b>: Use thโ€™ highest speed ye hit while pressinโ€™ thโ€™ gas<br>- <b>Max Set Speed</b>: Use thโ€™ cruise set speed<br><br>Overrides clear when openpilot be disengaginโ€™. + + + <b>Miscellaneous "Speed Limit Controller" changes</b> to fine-tune how openpilot drives. + <b>Miscellaneous "Speed Limit Controller" tweaks</b> tโ€™ fine-tune how openpilot sails the road. + + + Confirm New Speed Limits + Be Confirminโ€™ New Speed Limits + + + <b>Ask before changing to a new speed limit.</b> To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds. + <b>Arr, ask afore switchinโ€™ tโ€™ a new speed limit.</b> Tโ€™ accept, tap the flashinโ€™ on-screen widget or press the Cruise Increase button. Tโ€™ deny, press the Cruise Decrease button or ignore the prompt fer 30 seconds. + + + Force MPH from Dashboard + Force MPH from the Helm Dashboard + + + <b>Always read dashboard speed limit signs in mph.</b> Turn this on if the cluster shows mph but the limit is interpreted as km/h. + <b>Always be readinโ€™ the dash speed limit signs in mph, matey.</b> Flip this on if the cluster shows mph but the limit be taken as km/h. + + + Higher Limit Lookahead Time + Higher Limit Lookahead Time, ye scallywag + + + <b>How far ahead openpilot anticipates upcoming higher speed limits</b> from downloaded map data. + <b>How far ahead openpilot spies oncominโ€™ higher speed limits</b> from downloaded map data. + + + Lower Limit Lookahead Time + Lower Limit Lookahead Time, ye scallywags + + + <b>How far ahead openpilot anticipates upcoming lower speed limits</b> from downloaded map data. + <b>How far ahead openpilot be spyinโ€™ lower speed limits cominโ€™ up</b> from downloaded map data. + + + Match Speed Limit on Engage + Match Speed Limit when ye Engage + + + <b>When openpilot is first enabled, automatically set the max speed to the current posted limit.</b> + <b>When openpilot be first enabled, auto set thโ€™ max speed tโ€™ the current posted limit, arrr.</b> + + + Use Mapbox as Fallback + Use Mapbox as Fallback, arrr + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>Be usinโ€™ Mapbox speed-limit booty when no other source be aboard.</b> + + + Speed Limit Source Priority + Speed Limit Source Priority, arr! + + + <b>The source order for speed limits</b> when more than one is available. + <b>Thโ€™ source order fer speed limits</b> when more than one be available. + + + Speed Limit Offsets + Speed Limit Offsets, arr + + + <b>Add an offset to the posted speed limit</b> to better match your driving style. + <b>Add ye an offset to the posted speed limit</b> to better match yer drivinโ€™ style. + + + Speed Offset (0โ€“24 mph) + Speed Offset (0โ€“24 mph), ye scallywag + + + <b>How much to offset posted speed-limits</b> between 0 and 24 mph. + <b>โ€™Ow much to offset posted speed-limits</b> โ€˜twixt 0 and 24 mph, arr. + + + Speed Offset (25โ€“34 mph) + Speed Offset (25โ€“34 mph), ye scallywag + + + <b>How much to offset posted speed-limits</b> between 25 and 34 mph. + <b>โ€™Ow much to offset posted speed-limits</b> โ€˜twixt 25 and 34 mph, arr. + + + Speed Offset (35โ€“44 mph) + Speed Offset (35โ€“44 knots oโ€™ the land) + + + <b>How much to offset posted speed-limits</b> between 35 and 44 mph. + <b>โ€™Ow much to offset posted speed-limits</b> โ€˜tween 35 and 44 mph, arr. + + + Speed Offset (45โ€“54 mph) + Speed Offset (45โ€“54 mph), ye scurvy dog + + + <b>How much to offset posted speed-limits</b> between 45 and 54 mph. + <b>โ€™Ow much to offset posted speed-limits</b> betwixt 45 and 54 mph, arr. + + + Speed Offset (55โ€“64 mph) + Speed Offset (55โ€“64 knots oโ€™ the road) + + + <b>How much to offset posted speed-limits</b> between 55 and 64 mph. + <b>โ€™Ow much tโ€™ offset posted speed-limits</b> โ€˜twixt 55 and 64 mph, arr. + + + Speed Offset (65โ€“74 mph) + Speed Offset (65โ€“74 knots oโ€™ land) + + + <b>How much to offset posted speed-limits</b> between 65 and 74 mph. + <b>โ€™Ow much to offset posted speed-limits</b> โ€˜twixt 65 and 74 mph, arr. + + + Speed Offset (75โ€“99 mph) + Speed Offset (75โ€“99 mph), ye scallywag + + + <b>How much to offset posted speed-limits</b> between 75 and 99 mph. + <b>โ€™Ow much to offset posted speed-limits</b> betwixt 75 and 99 mph, arr. + + + Visual Settings + Visual Settinโ€™s + + + <b>Visual "Speed Limit Controller" changes</b> to fine-tune how the driving screen looks. + <b>Arr! Tweak the "Speed Limit Controller" looks</b> to fine-tune how the drivinโ€™ screen be lookinโ€™. + + + Show Speed Limit Offset + Show Speed Limit Offset, ye scallywag + + + <b>Show the current offset from the posted limit</b> on the driving screen. + <b>Be showinโ€™ the current offset from the posted limit</b> on the drivinโ€™ screen. + + + Show Speed Limit Sources + Show Speed Limit Sources, ye scallywags + + + <b>Display the speed-limit sources and their current values</b> on the driving screen. + <b>Show the speed-limit sources 'n their current booty</b> on the drivin' screen. + + + seconds + seconds + + + m/sยฒ + m/sยฒ + + + mph + mph + + + With Lead + With the lead ahead, arr! + + + <b>Switch to "Experimental Mode" when driving below this speed with a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>Hoist "Experimental Mode" when sailin' below this speed with a lead ship ahead</b> to help openpilot weather low-speed seas more smoothly. + + + Slower Lead + Slower Lead, arr + + + Stopped Lead + Lead be stopped + + + Intersections + Crossroads, arrr! + + + Turns + Turns, arr! + + + Off + Belay'd + + + second + second + + + Not For Detected Lanes + Not fer Detected Lanes + + + RESET + RESET + + + Are you sure you want to completely reset your curvature data? + Be ye sure ye want tโ€™ completely reset yer curvature data? Eco - Eco + Eco Sport - Athletics + Sport โ†’ Sport, ye scallywag Sport+ - Sport+ + Sport+ feet - feet + feet beackles Acceleration - Speeding up + Acceleration, arr! Deceleration - Slowing down - - - Set Speed - Adjust Speed - - - Experimental Mode - Trial Mode - - - Previous Limit - Earlier Limit - - - None - None - - - Set With Gas Pedal - Adjust with Throttle - - - Max Set Speed - Maximum Speed - - - SELECT - CHOOSE - - - Dashboard - Control Panel - - - Map Data - Chart Data - - - Navigation - Steering - - - Highest - Top - - - Lowest - Minimum - - - Select your primary priority - Choose your main priority - - - Select your secondary priority - Choose your secondary priority - - - Select your tertiary priority - Choose your third priority + Deceleration, arr MANAGE - CONTROL + MANAGE + + + Set Speed + Set Sail Speed + + + Experimental Mode + Experimenโ€™al Mode + + + Previous Limit + Previous Limit, arr + + + None + None + + + Set With Gas Pedal + Set With Thar Gas Pedal + + + Max Set Speed + Max Set Speed, ye scallywags + + + SELECT + SELECT + + + Dashboard + Capโ€™nโ€™s Helm + + + Map Data + Map Loot Charts + + + Navigation + Navgation + + + Highest + Highest, arr! + + + Lowest + Lowest, arrr + + + Select your primary priority + Choose yer main priority, ye scallywag + + + Select your secondary priority + Pick yer secondary priority, ye scallywag + + + Select your tertiary priority + Pick yer tertiary priority, matey Lower Limits - Minimum Boundaries + Lower Limits, arr Higher Limits - Increased Limits + Higher Limits, arr! Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? - Are ye certain ye wish to fully reset yer settings for <b>Traffic Mode</b>? + Be ye sure ye want to be wipinโ€™ yer settings fer <b>Traffic Mode</b> clean as a barnacle-scrubbed deck? Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? - Are ye certain ye want to fully reset yer settings for the <b>Aggressive</b> personality? + Be ye sure ye want to be wipinโ€™ yer settings fer the <b>Aggressive</b> personality clean as a bleached deck? Are you sure you want to completely reset your settings for the <b>Standard</b> personality? - Are ye certain ye wish to fully reset yer settings for the <b>Standard</b> personality? + Be ye sure ye want to be wipinโ€™ all yer settings for the <b>Standard</b> personality clean? Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? - Are ye certain ye want to fully reset yer settings for the <b>Relaxed</b> personality? + Be ye sure ye want tโ€™ completely reset yer settings fer the <b>Relaxed</b> personality? foot - foot + foot meter - gauge + meter meters - meters + meters km/h - km/h + knots/h Speed Offset (0โ€“29 km/h) - Speed Offset (0โ€“29 km/h) + Speed Offset (0โ€“29 km/h), arr! Speed Offset (30โ€“49 km/h) - Speed Offset (30โ€“49 km/h) + Speed Offset (30โ€“49 km/h), ye scallywag Speed Offset (50โ€“59 km/h) - Speed Offset (50โ€“59 knots) + Speed Offset (50โ€“59 km/h), ye scallywag Speed Offset (60โ€“79 km/h) - Speed Variation (60โ€“79 km/h) + Speed Offset (60โ€“79 km/h), arr! Speed Offset (80โ€“99 km/h) - Speed Adjustment (80โ€“99 km/h) + Speed Offset (80โ€“99 km/h), ye scallywag Speed Offset (100โ€“119 km/h) - Speed Offset (100โ€“119 km/h) + Speed Offset (100โ€“119 km/h), ye scallywag Speed Offset (120โ€“140 km/h) - Speed Range (120โ€“140 km/h) + Speed Offset (120โ€“140 km/h), ye scallywag - Target speed offset applied for posted limits between 0 and 29 km/h. - Target speed offset applied for posted limits from 0 to 29 km/h. - - - Target speed offset applied for posted limits between 30 and 49 km/h. - Target speed offset applied for posted limits from 30 to 49 km/h. - - - Target speed offset applied for posted limits between 50 and 59 km/h. - Target speed offset applied for posted limits from 50 to 59 km/h. - - - Target speed offset applied for posted limits between 60 and 79 km/h. - Target speed offset applied for posted limits from 60 to 79 km/h. - - - Target speed offset applied for posted limits between 80 and 99 km/h. - Target speed offset applied for posted limits from 80 to 99 km/h. - - - Target speed offset applied for posted limits between 100 and 119 km/h. - Target speed offset applied for posted limits from 100 to 119 km/h. - - - Target speed offset applied for posted limits between 120 and 140 km/h. - Target speed offset applied for posted limits from 120 to 140 km/h. - - - Curve Speed Control - Curve Speed Regulation - - - Automatically slow down for upcoming curves using downloaded maps or the driving model. - Automatically reduce speed for approaching curves using downloaded maps or the driving model. - - - Curve Detection Method - Curve Detection Technique - - - How curves are detected. <b>Map-Based</b> uses downloaded map data to identify curves and determine the appropriate speed in which to handle them at, while <b>Vision</b> relies solely on the driving model. - How curves are detected. <b>Map-Based</b> uses downloaded map data to spot curves and decide the right speed to navigate them, while <b>Vision</b> depends entirely on the driving model. - - - Curve Detection Failsafe - Curve Detection Backup - - - Only trigger <b>Curve Speed Control</b> if a curve is detected with the model while using the <b>Map-Based</b> method. Useful to help prevent false positives. - Activate <b>Curve Speed Control</b> only when the model detects a curve while employing the <b>Map-Based</b> method. This helps avoid false positives. - - - Curve Detection Sensitivity - Curve Detection Sensitivity - - - How sensitive openpilot is when detecting curves. Higher values trigger earlier responses at the risk of triggering too often, while lower values increase confidence at the risk of triggering too infrequently. - How sensitive openpilot be when detecting curves. Higher values prompt earlier responses, risking frequent triggers, while lower values boost confidence, risking infrequent triggers. - - - Curve Speed Aggressiveness - Curve Speed Intensity - - - How aggressive openpilot is when navigating through curves. Higher values result in faster turns but may reduce comfort or stability, while lower values result in slower, smoother turns at the risk of being overly cautious. - How aggressive openpilot is when steering through curves. Higher values lead to faster turns, possibly sacrificing comfort or stability, while lower values ensure slower, smoother turns, potentially being too cautious. - - - Map Based - Map-Based - - - Vision - Sight - - - The <b>Map Based</b> option is only available when some <b>Map Data</b> has been downloaded! - The <b>Map Based</b> option is available only when some <b>Map Data</b> has been downloaded! + <b>Following behavior that mimics human drivers</b> by closing gaps behind faster vehicles for quicker takeoffs and dynamically adjusting the desired following distance for gentler, more efficient braking. + <b>Behavinโ€™ like real hands at the wheel</b> by closinโ€™ gaps astern oโ€™ swifter wagons fer quicker shove-offs, anโ€™ smartly trimminโ€™ the wanted followinโ€™ distance fer gentler, more shipshape brakโ€™n. FrogPilotManageControl MANAGE - Oversee + MANAGE, ye scallywag! FrogPilotMapsPanel Manually - By hand + By hand, arr! Weekly - Weekly + Weekly โ†’ Every seโ€™nnight Monthly - Monthly + Monthly โ†’ Each Moonโ€™tide Automatically Update Maps - Auto-Update Maps + Auto-Update thโ€™ Charts - The frequency at which maps sync with the latest OpenStreetMap (OSM) changes. Weekly updates occur every Sunday, and monthly updates occur on the 1st. - Maps sync with the latest OpenStreetMap (OSM) changes at these intervals: weekly updates happen every Sunday, and monthly updates take place on the 1st. - - - Data Sources - Sources of Data - - - Select map data sources to use with "Curve Speed Control" and "Speed Limit Controller". - Choose map data sources for "Curve Speed Control" and "Speed Limit Controller". - - - COUNTRIES - NATIONS - - - STATES - STATES + <b>How often maps update</b> from "OpenStreetMap (OSM)" with the latest speed limit information. Weekly updates run every Sunday; monthly updates run on the 1st. + <b>How oft maps be updated</b> from "OpenStreetMap (OSM)" with the latest speed limit tidinโ€™s. Weekly updates set sail every Sunday; monthly updates shove off on the 1st. Download Maps - Get Maps + Plunder Maps DOWNLOAD - FETCH + PLUNDER DOWNLOAD - Download the selected maps to use with "Curve Speed Control" and "Speed Limit Controller". - Download the chosen maps to use with "Curve Speed Control" and "Speed Limit Controller". + <b>Manually update your selected map sources</b> so "Speed Limit Controller" has the latest speed limit information. + <b>Manually be updatinโ€™ yer chosen map sources</b> so "Speed Limit Controller" be havinโ€™ the latest speed limit tidinโ€™s. CANCEL - CANCEL + AVAST - Are you sure you want to cancel the download? - Are ye certain ye want to cancel the download, matey? + Cancel the download? + Belay the download, ye scallywag? - Download Completion ETA - Estimated Time for Download Completion + Last Updated + Last Updated - Download Progress - Download Status + Map Sources + Map Booty Sources - Download Time Elapsed - Time Elapsed for Download + <b>Select the countries or U.S. states to use with "Speed Limit Controller".</b> + <b>Pick the countries or U.S. states to sail with "Speed Limit Controller".</b> - Maps Last Updated - Maps Recently Updated + COUNTRIES + COUNTRIES - Maps Size - Map Dimensions + STATES + STATES + + + Progress + Progress be underway + + + Time Elapsed + Time Spent A-Sea + + + Time Remaining + Time Remaininโ€™ Remove Maps - Delete Maps + Scuttle the Charts REMOVE - DELETE + STRIP โ€˜ER OFF - Remove downloaded maps to clear up storage space. - Delete downloaded maps to free up storage space. + <b>Delete downloaded map data</b> to free up storage space. + <b>Scuttle downloaded map data</b> tโ€™ free up storage space. - Are you sure you want to delete all of your downloaded maps? - Are ye certain ye want to delete all yer downloaded maps? + Delete all downloaded maps? + Scuttle all downloaded charts? - Reset Map Downloader - Restart Map Downloader + Reset Downloader + Reset the Plunderer RESET - RESET + RESET - Reset the map downloader. Use if you're running into issues with downloading maps. - Reset the map downloader if ye be havin' trouble with downloading maps, matey. + <b>Reset the map downloader.</b> Use this if downloads are stuck or failing. + <b>Reset the map downloader, ye scallywag.</b> Use this if downloads be stuck or failin'. - Are you sure you want to reset the map downloader? This will force a reboot once completed. - Are you certain you wish to reset the map downloader? This will trigger a reboot once finished. + Reset the map downloader? Your device will reboot afterward. + Be ye resettinโ€™ the map downloader? Yer deviceโ€™ll be rebootinโ€™ after. Reset - Restart + Hoist the Reset sail Resetting... - Restarting... + Be settinโ€™ the clocks back... Reset! - Restart! + Belay that! Reset! Rebooting... - Restarting... + Arr, be rebootin'... + + + Storage Used + Booty Stowed Africa - Africa + Africka Antarctica - Antarctica + Antarctic Seas Asia - Asia + Asia Arrland Europe - Europe + Europe be the Olde World North America - North America, matey + North America, yarrr Oceania - Oceania + Oceania, arr! South America - South America + South America, ye scurvy shores United States - Midwest - United States - Midwest + United States - Midwest Arr! United States - Northeast - Northeast United States + United States - Norโ€™east Coast United States - South - United States - South + United States - South Seas United States - West - United States - West + United States - Westward Seas United States - Territories - United States - Territories - - - CANCELLED - CANCELLED + United States - Terrโ€™ries Offline... - Disconnected... + Offline... Arr! + + + CANCELLED + SCUTTLED FrogPilotModelPanel Automatically Download New Models - Automatically Fetch New Models + Automatically be downloadinโ€™ new models - Automatically download new driving models as they become available. - Automatically download new driving models when they become available. + <b>Automatically download new driving models</b> as they become available. + <b>Be settinโ€™ to haul down new drivinโ€™ models automatic-like</b> as they come aboard. Delete Driving Models - Remove Driving Models + Scuttle Drivinโ€™ Models - Delete driving models from the device. - Remove the driving models from the device. + <b>Delete downloaded driving models</b> to free up storage space. + <b>Scuttle downloaded drivinโ€™ models</b> to free up storage space. Download Driving Models - Download Sailing Models + Plunder Drivinโ€™ Models - Download driving models to the device. - Download driving models to yer device. + <b>Manually download driving models</b> to the device. + <b>Hand-download drivinโ€™ models</b> to the device. Model Randomizer - Random Model Selector + Model Randomizer, arrr - Driving models are chosen at random each drive and feedback prompts are used to find the model that best suits your needs. - Driving models are selected randomly for each drive, and feedback prompts help identify the model that best suits your needs. + <b>Select a random driving model each drive</b> and use feedback prompts at the end of the drive to help find the model that best suits you! + <b>Pick a random drivinโ€™ model each voyage</b> and use feedback prompts at the end oโ€™ the run to help find the model that best suits ye! Manage Model Blacklist - Manage Model Blacklist, matey + Command the Model Blacklist - Add or remove models from the <b>Model Randomizer</b>'s blacklist list. - Add or remove models from the <b>Model Randomizer</b>'s blacklist. + <b>Add or remove driving models from the "Model Randomizer" blacklist.</b> + <b>Add or be rid o' drivin' models from the "Model Randomizer" blacklist.</b> Manage Model Ratings - Oversee Model Ratings + Command the Model Ratings - Reset or view the saved ratings for the driving models. - Reset or view the saved ratings for the driving models, matey. + <b>View or reset saved model ratings</b> used by the "Model Randomizer". + <b>Spy or be settinโ€™ back saved model ratings</b> used by the "Model Randomizer". Select Driving Model - Choose Driving Model + Be pickinโ€™ yer Drivinโ€™ Model, arr! - Select the active driving model. - Choose the active driving model. + <b>Choose which driving model openpilot uses.</b> + <b>Pick which drivinโ€™ model openpilot be usinโ€™.</b> + + + Update Model Manager + Hoist Model Manager Update + + + <b>Update the "Model Manager"</b> to support the latest models. + <b>Hoist an update fer the "Model Manager"</b> to support the latest models. DELETE - Remove + PLUNDER DELETE ALL - Remove everything. + SCUTTLE THE LOT! Select a driving model to delete - Choose a driving model to remove + Pick a drivinโ€™ model tโ€™ scuttle Are you sure you want to delete the "%1" model? - Are ye certain ye want to delete the "%1" model? + Be ye sure ye want to scuttle the "%1" model? Delete - Remove + Scuttle Are you sure you want to delete all of your downloaded driving models? - Are ye certain ye want to delete all yer downloaded driving models? + Be ye sure ye want tโ€™ scuttle all yer downloaded drivinโ€™ models? DOWNLOAD - Ahoy, DOWNLOAD + PLUNDER DOWNLOAD DOWNLOAD ALL - Download everything + PLUNDER THE LOT - Select a driving model to download - Choose a driving model to download + Tinygrad is out of date and must be updated before you can download new models. Update now? + Tinygrad be out oโ€™ date and must be updated afore ye can download new models. Update now? + + + Updating Tinygrad will delete all existing Tinygrad-based models which will need to be re-downloaded. Proceed? + Updatiโ€™ Tinygrad will scuttle all existinโ€™ Tinygrad-based models, whichโ€™ll need be re-downloaded. Proceed? CANCEL - CANCEL + AVAST + + + Updating... + Arr... Updatin'... + + + Select a driving model to download + Choose a drivinโ€™ model to plunder โ€˜n download ADD - ADD + ADD REMOVE - DELETE + PLUNDER REMOVE ALL - DELETE ALL + REMOVE ALL, ye scurvy dogs! - There are no more models to blacklist! The only available model is "%1"! - No more models to blacklist, matey! The only model available is "%1"! + There are no more driving models to blacklist. The only available model is "%1"! + Thar be no more drivinโ€™ models to blacklist. The only model left be โ€œ%1โ€! - Select a model to add to the blacklist - Choose a model to add to the blacklist, matey. + Select a driving model to add to the blacklist + Choose a drivinโ€™ model to add to the blacklist, arr! Are you sure you want to add the "%1" model to the blacklist? - Are ye certain ye want to add the "%1" model to the blacklist? + Be ye sure ye want tโ€™ add the "%1" model tโ€™ the blacklist? Add - Include + Add, ye scallywag - Select a model to remove from the blacklist - Choose a model to remove from the blacklist, matey. + Select a driving model to remove from the blacklist + Choose a drivinโ€™ model to strike from the blacklist, arr! Are you sure you want to remove the "%1" model from the blacklist? - Are ye certain ye want to remove the "%1" model from the blacklist? + Be ye sure ye want tโ€™ strike the "%1" model from the blacklist? Remove - Delete + Scuttle - Are you sure you want to remove all of your blacklisted models? - Are ye certain ye want to remove all yer blacklisted models? + Are you sure you want to remove all of your blacklisted driving models? + Be ye sure ye want to scuttle all yer blacklisted drivinโ€™ models? RESET - RESET + ARR! RESET VIEW - DISPLAY + VIEW - Are you sure you want to reset all of your model drives and scores? - Are ye certain ye want to reset all yer model drives and scores? + Reset all model drives and ratings? This clears your drive history and collected feedback! + Reset all model voyages and ratings? This clears yer voyage log and gathered feedback! SELECT - SELECT + PLUNDER' SELECT - Select a model - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC - Choose a model - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + UPDATE + HOIST THE UPDATE! - The "Model Randomizer" only works with downloaded models. Do you want to download all the driving models? - The "Model Randomizer" functions solely with downloaded models. Would you like to download all the driving models, matey? + Cancelling... + Belayin'... + + + Updating Tinygrad will delete existing Tinygrad-based driving models and need to be re-downloaded. Proceed? + Updatinโ€™ Tinygrad will scuttle yer existinโ€™ Tinygrad-based drivinโ€™ models and theyโ€™ll need be re-downloaded. Proceed? + + + The "Model Randomizer" works only with downloaded models. Download all models now? + The "Model Randomizer" be workinโ€™ only with downloaded models. Hoist all models now? Offline... - Disconnected... + Off thโ€™ grid... + + + Update available! + Update be available, matey! + + + Up to date! + Up tโ€™ date, arr! + + + Select a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + Pick a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + + + + FrogPilotModelReview + + How would you rate that drive? + How would ye rate that voyage? + + + Model successfully blacklisted! + Model be blacklisted, aye! + + + Drive Rating Selection + Drive Ratin' Selection + + + Blacklist this model to remove it from rotation + Blackspot this model to strike it from the rotation + + + Blacklist Model + Blacklist Model, ye scurvy dog + + + Model used during that drive: + Model used durinโ€™ that voyage: + + + Model Rank + Model Rank, arr! + + + Model Rating + Model Ratinโ€™ + + + Model Drives + Model Sails + + + Total Drives + Total Voyages + + + #%1 + #%1 + + + %1% + %1% + + + %1 %2 + %1 %2 + + + Drive + Set sail + + + Drives + Voyages + + + %1 Total %2 + %1 Total %2 FrogPilotNavigationPanel - - Manage your %1. - Handle yer %1. - - - ADD - Include - - - Enter your %1 - Input your %1 - - - Inputted key is invalid or too short! - The key ye entered is invalid or too short! - - - Are you sure you want to remove your %1? - Are ye certain ye want to remove yer %1? - - - REMOVE - DELETE - Manage Your Settings At - Adjust Your Settings At - - - MapBox - MapBox - - - Amap - A map - - - Google - Google - - - Destination Search Provider - Destination Search Matey - - - The search provider used for destination queries in "Navigate on Openpilot". Options include "MapBox" (recommended), "Amap", and "Google Maps". - The search provider for destination queries in "Navigate on Openpilot" includes options like "MapBox" (recommended), "Amap", and "Google Maps". - - - Amap Key #1 - Amap Key #1 - - - Manage your Amap key. - Manage yer Amap key, matey. - - - Enter your Amap key - Input your Amap key, matey! - - - Are you sure you want to remove your Amap key? - Are ye certain ye want to remove yer Amap key? - - - Amap Key #2 - Amap Key #2 - - - Google Maps Key - Google Maps Code - - - Manage your Google Maps key. - Manage yer Google Maps key, matey. - - - Enter your Google Maps key - Input your Google Maps key - - - Are you sure you want to remove your Google Maps key? - Are ye certain ye want to remove yer Google Maps key? - - - Public Mapbox Key - Mapbox Key for Public Use - - - Secret Mapbox Key - Confidential Mapbox Key - - - MapBox Setup Instructions - MapBox Setup Guide - - - VIEW - DISPLAY - - - View the instructions to set up "MapBox" for "Primeless Navigation". - Check the instructions to set up "MapBox" for "Primeless Navigation". - - - CANCEL - CANCEL - - - Manually Update Speed Limits - Manually Adjust Speed Limits - - - Speed Limit Filler - Speed Limit Buffer - - - Automatically collect missing or incorrect speed limits from your dashboard (if supported), <b>Mapbox</b>, and <b>Navigate-on-openpilot</b> while driving.<br><br>When the car is turned off and connected to Wi-Fi, your speed limit data is automatically processed into a compiled file formatted for the tool located at <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>You can grab the processed file from <b>The Pond</b> via the <b>Download Speed Limits</b> menu.<br><br>Want a more thorough walkthrough? Check out the <b>#speed-limit-filler</b> channel in the <b>FrogPilot Discord</b>! - Automatically gather missing or incorrect speed limits from your dashboard (if supported), <b>Mapbox</b>, and <b>Navigate-on-openpilot</b> while driving.<br><br>When the car is turned off and connected to Wi-Fi, your speed limit data is processed into a compiled file formatted for the tool at <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>You can fetch the processed file from <b>The Pond</b> via the <b>Download Speed Limits</b> menu.<br><br>Need a more detailed guide? Visit the <b>#speed-limit-filler</b> channel in the <b>FrogPilot Discord</b>! - - - Are you sure you want to cancel the speed limit update process? - Are ye certain ye wish to cancel the speed limit update process? - - - Cancelled... - Called off... - - - You have reached the request limit. - -It will reset in %1 hours and %2 minutes. - Ye've hit the request limit, matey. - -It'll reset in %1 hours and %2 minutes. - - - This process will take awhile, so it's advised to start when you're done driving with a stable Wi-Fi connection. Do you wish to proceed? - This process will take a while, so it's best to start when you're done driving and have a stable Wi-Fi connection. Do you wish to proceed, matey? - - - Completed! - All done! + Command Yer Settinโ€™s At Offline... - Disconnected... + Arr, be offline... + + + Mapbox + Mapbox + + + Amap + Amap + + + Destination Search Provider + Destination Search Provider, arr + + + <b>The search provider used for destination queries</b> in "Navigate on Openpilot". Options include Mapbox (recommended) and Amap. + <b>Thโ€™ search provider used fer destination queries</b> in "Navigate on Openpilot". Options be Mapbox (recommended) and Amap. + + + Amap Key #1 + Amap Key #1, ye scallywag + + + Amap Key #2 + Amap Key #2, ye scallywag + + + Public Mapbox Key + Public Mapbox Key, ye scallywag + + + Secret Mapbox Key + Secret Mapbox Key, ye scallywag + + + Mapbox Setup Instructions + Mapbox Setup Orders + + + VIEW + VIEW + + + <b>Instructions on how to set up Mapbox</b> for "Primeless Navigation". + <b>Instructions fer settinโ€™ up Mapbox</b> fer "Primeless Navigation". + + + CANCEL + AVAST + + + Manually Update Speed Limits + Manually Update Speed Limits, arr! + + + Speed Limit Filler + Speed Limit Filler, ye scallywag + + + <b>Automatically collect missing or incorrect speed limits while you drive</b> using speeds limits sourced from your dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When you're parked and connected to Wi-Fi, FrogPilot will automatically processes this data into a file to be used with the tool located at "SpeedLimitFiller.frogpilot.download".<br><br>You can download this file from "The Pond" in the "Download Speed Limits" menu.<br><br>Need a step-by-step guide? Visit <b>#speed-limit-filler</b> in the FrogPilot Discord! + <b>Automatically be collectinโ€™ missinโ€™ or wrong speed limits whilst ye sail the roads</b> usinโ€™ speeds limits sourced from yer dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When ye be anchored anโ€™ tied to Wiโ€‘Fi, FrogPilotโ€™ll automatically be processinโ€™ this bounty into a file to be used with the tool at "SpeedLimitFiller.frogpilot.download".<br><br>Ye can haul down this file from "The Pond" in the "Download Speed Limits" menu.<br><br>Need a step-by-step chart? Visit <b>#speed-limit-filler</b> in the FrogPilot Discord! + + + Cancel the speed-limit update? + Be ye cancelinโ€™ the speed-limit update? + + + Cancelled... + Scuttled... + + + You've hit today's request limit. + +It will reset in %1 hours and %2 minutes. + Ye've hit todayโ€™s request limit. + +Itโ€™ll reset in %1 hours โ€˜n %2 minutes. + + + This process takes a while. It's recommended to start when you're done driving and connected to stable Wi-Fi. Continue? + This here task be takinโ€™ a spell. Best tโ€™ begin after ye be done sailinโ€™ the roads and lashed to steady Wiโ€‘Fi. Carry on? + + + <b>Manage your "%1".</b> + <b>Command yer "%1".</b> + + + ADD + ADD + + + Enter your %1 + Avast! Enter yer %1 + + + Inputted key is invalid or too short! + Arr, the key ye entered be invalid or too short! + + + Remove your %1? + Be ye removinโ€™ yer %1? + + + REMOVE + REMOVE + + + Completed! + Arr, Completed! FrogPilotSettingsWindow MANAGE - CONTROL + MANAGE, ye scallywags! DRIVING MODEL - NAVIGATING MODEL + DRIVINโ€™ MODEL GAS / BRAKE - THROTTLE / BRAKE + GAS / BRAKE, ye bilge rat STEERING - STEERING + HELM MAP DATA - CHART DATA + MAP DATA NAVIGATION - Steering + NAVIGATION, ye scallywags! DATA - DATA + BOOTY DEVICE CONTROLS - DEVICE COMMANDS + DEVICE CONTROLS, ye scallywags UTILITIES - UTILITIES + UTILITIES APPEARANCE - LOOK + APPEARANCE THEME - Ahoy, matey! + THEME VEHICLE SETTINGS - VEHICLE CONFIGURATION + SHIP SETTINGS WHEEL CONTROLS - WHEEL COMMANDS + HELM CONTROLS Alerts and Sounds - Alerts and Chimes + Alarms 'n Clangs - FrogPilot settings for alert volumes and custom notifications to stay informed about important driving events. - FrogPilot settings for alert volumes and custom notifications keep you informed about key driving events, matey. + <b>Adjust alert volumes and enable custom notifications.</b> + <b>Tune yer alert volumes 'n hoist custom notifications.</b> Driving Controls - Steering Controls + Helm โ€˜n Throttle - FrogPilot settings for acceleration, braking, and steering. - FrogPilot settings for acceleration, braking, and steering, matey. + <b>Fine-tune custom FrogPilot acceleration, braking, and steering controls.</b> + <b>Tune ye custom FrogPilot accelโ€™ration, brakeโ€™n, anโ€™ steerinโ€™ controls, arrr!</b> Navigation - Course plotting + Navergation Arr - Download map data for <b>Curve Speed Control</b>, <b>Speed Limit Controller</b>, and set up <b>Navigate on openpilot (NOO)</b>. - Download map data for <b>Curve Speed Control</b> and <b>Speed Limit Controller</b>, then set up <b>Navigate on openpilot (NOO)</b>. + <b>Download map data for the "Speed Limit Controller" and configure "Navigate on openpilot" (NOO).</b> + <b>Plunder map data fer the "Speed Limit Controller" 'n rig the "Navigate on openpilot" (NOO).</b> - System Management - System Management + System Settings + Shipโ€™s Settinโ€™s - Data storage management, debugging tools, device settings, screen behavior settings, system backups, and utilities to maintain, optimize, and troubleshoot FrogPilot. - Data storage management, debugging tools, device settings, screen behavior settings, system backups, and utilities to maintain, optimize, and troubleshoot FrogPilot, matey. + <b>Manage backups, device settings, screen options, storage, and tools to keep FrogPilot running smoothly.</b> + <b>Man the backups, device settin's, screen choices, storage, and tools tโ€™ keep FrogPilot runninโ€™ shipshape.</b> Theme and Appearance - Theme and Look + Theme โ€™n Appearance - FrogPilot settings for the current theme, driving-screen, and the overall user interface. - FrogPilot settings for the current theme, driving screen, and overall user interface. + <b>Customize the look of the driving screen and interface, including themes!</b> + <b>Arr! Customize thโ€™ look oโ€™ the drivinโ€™ screen โ€™n interface, includinโ€™ themes!</b> - Vehicle Controls - Ship Controls + Vehicle Settings + Ship Settings - Options unique to supported manufacturers and vehicle fingerprint management. - Exclusive options for supported manufacturers and vehicle fingerprint management. + <b>Configure car-specific options and steering wheel button mappings.</b> + <b>Set yer car-specific options 'n steerโ€™n wheel button mappinโ€™s, ye scallywag.</b> Minimal - Bare minimum + Scant Standard - Regular + Ye Standard Advanced - Enhanced + Advanced, arrr Developer - Coder + Deckhand Developer Tuning Level - Adjustment Level + Trimminโ€™ Level - The visibility and complexity of tuning settings. Lower levels simplify the interface by hiding advanced options, while higher levels unlock detailed customization. + Choose your tuning level. Lower levels keep it simple; higher levels unlock more toggles for finer control. Minimal - Ideal for those who prefer simplicity or ease of use Standard - Recommended for most users for a balanced experience -Advanced - Unlocks fine-tuning controls for more experienced users -Developer - Unlocks highly customizable settings for seasoned enthusiasts - The visibility and complexity of tuning settings vary. Lower levels simplify the interface by concealing advanced options, while higher levels reveal detailed customization. +Advanced - Fine-tuning for experienced users +Developer - Highly customizable settings for seasoned enthusiasts + Choose yer tuninโ€™ level. Lower levels keep it simple; higher levels unlash more toggles fer finer command. -Minimal - Perfect for those who favor simplicity or ease of use -Standard - Suggested for most users for a balanced experience -Advanced - Unlocks fine-tuning controls for more experienced users -Developer - Unlocks highly customizable settings for seasoned enthusiasts +Minimal - Ideal fer them what fancy simplicity or easy sailinโ€™ +Standard - Recommended fer most hands fer a balanced voyage +Advanced - Fine-tuninโ€™ fer salty veterans +Developer - Highly customizable rigginโ€™s fer seasoned enthusiasts - WARNING: This unlocks some potentially dangerous settings that can DRASTICALLY alter your driving experience! - Beware: This unlocks settings that may drastically change your driving experience! + WARNING: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do! + WARNING: These settings be treacherous and can wildly change how openpilot sails the road. Tinker only if ye truly know what they do! + + + All toggle descriptions are currently expanded. You can tap a toggle's name to open or close its description at any time! + All toggle tales be unfurled. Ye can tap a toggleโ€™s name to open or close its tale any time, arr! FrogPilotSoundsPanel - Alert Volume Control - Alert Volume Ahoy + Alert Volume Controller + Alert Volume Helmsman - Adjust the volume for each alert in openpilot. - Set the volume for each alert in openpilot. + <b>Set how loud each type of openpilot alert is</b> to keep routine prompts from becoming distracting. + <b>Set how loud each kind oโ€™ openpilot alert be</b> tโ€™ keep routine prompts from turninโ€™ distractinโ€™. Disengage Volume - Mute Volume + Disengage Volume, ye scallywag - Adjust the volume for alerts like:<br><br><b>Adaptive Cruise Disabled</b><br><b>Brake Pedal Pressed</b><br><b>Parking Brake Engaged</b><br><b>Speed too Low</b> - Set the volume for alerts such as:<br><br><b>Adaptive Cruise Disabled</b><br><b>Brake Pedal Pressed</b><br><b>Parking Brake Engaged</b><br><b>Speed too Low</b> + <b>Set the volume for alerts when openpilot disengages.</b><br><br>Examples include: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". + <b>Set thโ€™ volume fer alerts when openpilot be disengaginโ€™.</b><br><br>Examples be: "Cruise Fault: Restart thโ€™ Car", "Parking Brake Engaged", "Pedal Pressed". Engage Volume - Activate Volume + Hoist Volume - Adjust the volume for alerts like:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> - Set the alert volume for messages such as:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> + <b>Set the volume for the chime when openpilot engages</b>, such as after pressing the "RESUME" or "SET" steering wheel buttons. + <b>Set thโ€™ volume fer the chime when openpilot engages</b>, like after pressinโ€™ the "RESUME" or "SET" steerโ€™n wheel buttons, arr! Prompt Volume - Request Volume + Prompt Volume - Adjust the volume for alerts like:<br><br><b>Car Detected in Blindspot</b><br><b>Steer Unavailable Below "X"</b><br><b>Speed too Low</b><br><b>Take Control, Turn Exceeds Steering Limit</b> - Set the alert volume for the following:<br><br><b>Car Detected in Blindspot</b><br><b>Steer Unavailable Below "X"</b><br><b>Speed too Low</b><br><b>Take Control, Turn Exceeds Steering Limit</b> + <b>Set the volume for prompts that need attention.</b><br><br>Examples include: "Car Detected in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". + <b>Set yer volume fer prompts that be needinโ€™ attention.</b><br><br>Examples be: "Car Detected in Blindspot", "Steerinโ€™ Temporarily Unavailable", "Turn Exceeds Steerinโ€™ Limit". Prompt Distracted Volume - Distracted Volume Alert + Prompt Fergetful Volume - Adjust the volume for alerts like:<br><br><b>Pay Attention, Driver Distracted</b><br><b>Touch Steering Wheel, Driver Unresponsive</b> - Set the alert volume for messages such as:<br><br><b>Ahoy, Driver Distracted</b><br><b>Touch Steering Wheel, Driver Unresponsive</b> + <b>Set the volume for prompts when openpilot detects driver distraction or unresponsiveness.</b><br><br>Examples include: "Pay Attention", "Touch Steering Wheel". + <b>Set the volume fer prompts when openpilot spies the helmsman be distracted or not respondin'.</b><br><br>Examples include: "Pay Attention", "Touch Steering Wheel". Refuse Volume - Waste Volume + Bilge Volume - Adjust the volume for alerts like:<br><br><b>openpilot Unavailable</b> - Set the volume for alerts such as:<br><br><b>openpilot Unavailable</b> + <b>Set the volume for alerts when openpilot refuses to engage.</b><br><br>Examples include: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". + <b>Set thโ€™ volume fer alerts when openpilot be refusinโ€™ tโ€™ engage.</b><br><br>Examples be: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". Warning Soft Volume - Soft Volume Warning + Warninโ€™ Soft Volume - Adjust the volume for alerts like:<br><br><b>BRAKE!, Risk of Collision</b><br><b>TAKE CONTROL IMMEDIATELY</b> - Set the alert volume for messages such as:<br><br><b>BRAKE!, Risk of Collision</b><br><b>TAKE CONTROL IMMEDIATELY</b> + <b>Set the volume for softer warnings about potential risks.</b><br><br>Examples include: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". + <b>Set thโ€™ volume fer softer warninโ€™s โ€˜bout potential risks.</b><br><br>Examples be: "BRAKE! Risk oโ€™ Collision", "Steerinโ€™ Temporarily Unavailable". Warning Immediate Volume - Immediate Volume Alert + Arr! Immediate Volume Warninโ€™ - Adjust the volume for alerts like:<br><br><b>DISENGAGE IMMEDIATELY, Driver Distracted</b><br><b>DISENGAGE IMMEDIATELY, Driver Unresponsive</b> - Set the alert volume for messages such as:<br><br><b>DISENGAGE IMMEDIATELY, Driver Distracted</b><br><b>DISENGAGE IMMEDIATELY, Driver Unresponsive</b> + <b>Set the volume for the loudest warnings that require urgent attention.</b><br><br>Examples include: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". + <b>Set thโ€™ volume fer the loudest warninโ€™s that be demandinโ€™ urgent heed.</b><br><br>Examples be: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". FrogPilot Alerts - FrogPilot Notices + FrogPilot Alarrrts - FrogPilot alerts for various events in openpilot. - FrogPilot signals for different events in openpilot. + <b>Optional FrogPilot alerts</b> that highlight driving events in a more noticeable way. + <b>Optional FrogPilot alarms</b> that mark drivinโ€™ events in a more noticeable way, arr! - Goat Scream Steering Saturated Alert - Goat Scream Steering Overloaded Alert + Goat Scream + Goat Scream, ye scallywags! - The infamous "Goat Scream" that has brought both joy and anger to FrogPilot users all around the world! - The notorious "Goat Scream" has sparked both joy and ire among FrogPilot users worldwide! + <b>Play the infamous "Goat Scream" when the steering controller reaches its limit.</b> Based on the "Turn Exceeds Steering Limit" event. + <b>Blare the infamous "Goat Scream" when the steerโ€™n controller hits its limit, arr!</b> Based on the "Turn Exceeds Steering Limit" event. Green Light Alert - Green Light Signal + Green Lantern Ahoy! - Get an alert when the traffic light changes from red to green. - Receive an alert when the traffic light shifts from red to green. + <b>Play an alert when the model predicts a red light has turned green.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights. This alert is based on end-to-end model predictions from camera input and may trigger even when the light has not changed.</i> + <b>Blare an alert when the model be predictinโ€™ a red lanternโ€™s turned green, arr.</b><br><br><i><b>Disclaimer</b>: openpilot does not be explicitly spyinโ€™ traffic lanterns. This alert be based on end-to-end model divinations from the camera feed and may fire even when the lantern ainโ€™t changed.</i> Lead Departing Alert - Departing Alert, Matey + Lead Be Castinโ€™ Off Alert - Get an alert when the lead vehicle begins to depart from a standstill. - Receive a signal when the lead vehicle starts moving from a stop. + <b>Play an alert when the lead vehicle departs from a stop.</b> + <b>Blare an alert when the lead vessel shoves off from a halt.</b> Loud "Car Detected in Blindspot" Alert - "Car Spotted in Blindspot" Alert + Loud "Car Spotted in the Blindspot" Alert, arrr - A louder alert for when a vehicle is detected in the blindspot when attempting to change lanes. - A louder alert for when a vehicle is detected in the blindspot while trying to change lanes, matey. + <b>Play a louder alert if a vehicle is in the blind spot when attempting to change lanes.</b> Based on the "Car Detected in Blindspot" event. + <b>Blare a louder alarm if a vessel be lurkinโ€™ in the blind spot when ye be changinโ€™ lanes.</b> Based on the "Car Detected in Blindspot" event. Speed Limit Changed Alert - Speed Limit Change Alert + Speed Limit Be Changed Alert Arr - Get an alert when the speed limit changes. - Receive an alert when the speed limit shifts. + <b>Play an alert when the posted speed limit changes.</b> + <b>Blare an alert when thโ€™ posted speed limit be changinโ€™.</b> Muted - Silenced + Muted, yar Auto - Auto + Auto Test - Trial + Trial, arr! FrogPilotThemesPanel - Custom Theme - Personalized Theme + Custom Themes + Custom Themes, ye scallywags - The overall appearance of openpilot. - The general look of openpilot. + <b>The overall look and feel of openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>The grand look โ€™n feel oโ€™ openpilot.</b> Use the "Theme Maker" in "The Pond" to forge โ€™n share yer own themes! Color Scheme - Color Palette + Color Scheme Arr - openpilot's color scheme. - -Want to submit your own color scheme? Share it in the "custom-themes" channel on the FrogPilot Discord! - openpilot's color scheme. - -Wish to submit your own color scheme? Share it in the "custom-themes" channel on the FrogPilot Discord, matey! + <b>The color scheme used throughout openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>The color scheme used across openpilot, arrr.</b> Use the "Theme Maker" in "The Pond" to forge 'n share yer own themes! + + + Distance Button + Distance Button, arr + + + <b>The distance button icons shown on the driving screen.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Thโ€™ distance button icons be shown on thโ€™ drivinโ€™ screen.</b> Use the "Theme Maker" in "The Pond" to forge โ€™n share yer own themes! Icon Pack - Icon Collection + Icon Booty Pack - openpilot's icon pack. - -Want to submit your own icons? Share them in the "custom-themes" channel on the FrogPilot Discord! - openpilot's icon pack. - -Got icons to share? Post them in the "custom-themes" channel on the FrogPilot Discord! + <b>The icon style used across openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>The icon style hoisted across openpilot.</b> Use the "Theme Maker" in "The Pond" to forge and share yer own themes, arr! Sound Pack - Sound Bundle + Sound Pack โ†’ Sound Chest - openpilot's sound effects. - -Want to submit your own sounds? Share them in the "custom-themes" channel on the FrogPilot Discord! - Sound effects for openpilot. - -Got your own sounds to share? Post them in the "custom-themes" channel on the FrogPilot Discord, matey! + <b>The sound pack used by openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>The sound pack used by openpilot.</b> Use the "Theme Maker" in "The Pond" t' forge 'n share yer own themes, arr! Steering Wheel - Ship's Wheel + Helm Wheel - The steering wheel icon in the top right of the driving screen. - The steering wheel icon is located in the top right corner of the driving screen. - - - Themed turn signal animations. - -Want to submit your own animations? Share them in the "custom-themes" channel on the FrogPilot Discord! - Themed turn signal animations. - -Wish to submit your own animations? Share them in the "custom-themes" channel on the FrogPilot Discord, matey! - - - Download Status - Status: Download - - - Holiday Themes - Festive Themes - - - Holiday-based visual themes for openpilot. Minor holidays last one day; major holidays (Christmas, Easter, Halloween, etc.) continue all week. - Visual themes for openpilot based on holidays: Minor holidays last a day, while major ones (Christmas, Easter, Halloween, etc.) span the entire week. - - - Rainbow Path - Rainbow Trail - - - The path on the driving screen turns into a Mario Kart inspired "Rainbow Path". - The path on the driving screen transforms into a Mario Kart-inspired "Rainbow Path". - - - Random Events - Unexpected Occurrences - - - Random cosmetic events that trigger after certain driving conditions. These events are purely for fun and don't affect driving controls! - Random cosmetic events trigger after specific driving conditions. These are just for fun, matey, and don't affect driving controls! - - - Random Themes - Assorted Themes - - - Cycles through your downloaded themes randomly on each boot, giving every theme in your collection a chance to shine! - Rotates through your downloaded themes randomly at each boot, giving every theme in your collection a chance to shine! - - - Startup Alert - Startup Ahoy - - - The text of the "Startup Alert" message that appears at the beginning of a drive. - The "Startup Alert" message text that appears when a drive begins. - - - DELETE - Remove - - - DOWNLOAD - FETCH - - - SELECT - SELECT - - - Select a color scheme to delete - Choose a color scheme to remove - - - Are you sure you want to delete the "%1" color scheme? - Are ye certain ye want to delete the "%1" color scheme? - - - Delete - Remove - - - Select a color scheme to download - Choose a color scheme to download - - - Select a color scheme - Choose a color palette - - - Select a distance icon pack to delete - Choose a distance icon pack to remove - - - Are you sure you want to delete the "%1" distance icon pack? - Are ye certain ye want to delete the "%1" distance icon pack? - - - Select a distance icon pack to download - Choose a distance icon pack to download, matey! - - - Select a distance icon pack - Choose a distance icon set - - - Select an icon pack to delete - Choose an icon pack to remove - - - Are you sure you want to delete the "%1" icon pack? - Are ye certain ye want to delete the "%1" icon pack? - - - Select an icon pack to download - Choose an icon pack to download, matey! - - - Select an icon pack - Choose an icon pack, matey! - - - Select a signal animation to delete - Choose a signal animation to remove - - - Are you sure you want to delete the "%1" signal animation? - Are ye certain ye want to delete the "%1" signal animation? - - - Select a signal animation to download - Choose a signal animation to download - - - Select a signal animation - Choose a signal animation - - - Select a sound pack to delete - Choose a sound pack to remove - - - Are you sure you want to delete the "%1" sound pack? - Are ye certain ye want to delete the "%1" sound pack? - - - Select a sound pack to download - Choose a sound pack to download - - - Select a sound pack - Choose a sound pack - - - Select a steering wheel to delete - Choose a steering wheel to remove - - - Are you sure you want to delete the "%1" steering wheel? - Are ye sure ye want to delete the "%1" steering wheel? - - - Select a steering wheel to download - Choose a steering wheel to download - - - Select a steering wheel - Choose a helm - - - STOCK - SUPPLY - - - FROGPILOT - FROGPILOT - - - CUSTOM - CUSTOM - - - CLEAR - CLEAR - - - Enter the text for the top half - Input the text for the upper half - - - Characters: 0/%1 - Characters: 0/%1 - - - Enter the text for the bottom half - Input the text for the lower half - - - Are you sure you want to completely reset your startup message? - Are ye certain ye wish to fully reset yer startup message? - - - "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! - "Random Themes" functions only with downloaded themes, so be sure to download the ones you want it to use, matey! - - - CANCEL - CANCEL + <b>The steering-wheel icon</b> shown at the top-right of the driving screen. Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Thโ€™ steerโ€™nโ€™-wheel icon</b> be shown at thโ€™ top-starboard oโ€™ thโ€™ drivinโ€™ screen. Use the "Theme Maker" in "The Pond" tโ€™ forge โ€˜n share yer own themes, arr! Turn Signal - Signal Light + Turninโ€™ Signal + + + <b>Themed turn-signal animations.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Themed turn-signal shanties.</b> Use the "Theme Maker" in "The Pond" to forge 'n share yer own themes, arr! + + + Download Status + Plunderinโ€™ Status + + + Holiday Themes + Holiday Booty Themes + + + <b>Themes based on U.S. holidays.</b> Minor holidays last one day; major holidays (Christmas, Easter, Halloween) run for a full week. + <b>Themes based on U.S. holidays.</b> Minor holidays be one day; major holidays (Christmas, Easter, Halloween) sail fer a full week. + + + Rainbow Path + Rainbow Path, arr + + + <b>Color the driving path like a Mario Kartโ€“style "Rainbow Road".</b> + <b>Paint the drivinโ€™ path like a Mario Kartโ€“style โ€œRainbow Roadโ€, arr!</b> + + + Random Events + Roguish Happeninโ€™s + + + <b>Occasional on-screen effects triggered by driving conditions.</b> These are purely a visual and don't impact how openpilot drives! + <b>Sporadic on-screen shenanigans sparked by thar drivinโ€™ conditions.</b> They be merely visual โ€˜n donโ€™t affect how openpilot sails the road! + + + Random Themes + Roguish Themes + + + <b>Pick a random theme between each drive</b> from the themes you have downloaded. Great for variety without changing settings while driving. + <b>Plunder a random theme betwixt each voyage</b> from the themes yeโ€™ve downloaded. Grand fer variety without fiddlinโ€™ with settings whilst sailinโ€™. + + + Startup Alert + Startinโ€™ Alert + + + <b>Customize the "Startup Alert" message</b> shown at the start of each drive. + <b>Customize the "Startup Alert" message</b> shown at the start oโ€™ each voyage. + + + DELETE + DELETE + + + DOWNLOAD + PLUNDER DOWNLOAD + + + SELECT + SELECโ€™ + + + Select a color scheme to delete + Pick a color scheme to keelhaul from the list + + + Delete the "%1" color scheme? + Scuttle the "%1" color scheme? + + + Delete + Scuttle + + + Select a color scheme to download + Pick a color scheme to plunder โ€˜n download + + + Select a color scheme + Pick ye color scheme, matey + + + Select a distance icon pack to delete + Choose a distance icon pack to scuttle + + + Delete the "%1" distance icon pack? + Scuttle the "%1" distance icon pack? + + + Select a distance icon pack to download + Choose a distance icon booty to plunder and download + + + Select a distance icon pack + Choose a distance icon booty pack, arr! + + + Select an icon pack to delete + Choose an icon pack tโ€™ scuttle + + + Delete the "%1" icon pack? + Scuttle the "%1" icon pack? + + + Select an icon pack to download + Pick an icon booty to plunder โ€˜n download + + + Select an icon pack + Pick yer icon booty pack + + + Select a signal animation to delete + Choose a signal animation to be scuttled + + + Delete the "%1" signal animation? + Scuttle the "%1" signal animation? + + + Select a signal animation to download + Pick a signal animation to plunder and download, arr! + + + Select a signal animation + Pick a signal swashbucklinโ€™ animation + + + Select a sound pack to delete + Pick a sound pack tโ€™ scuttle + + + Delete the "%1" sound pack? + Be ye deletinโ€™ the "%1" sound pack? + + + Select a sound pack to download + Pick a sound chest to plunder โ€˜n download + + + Select a sound pack + Choose a sound booty pack, arr! + + + Select a steering wheel to delete + Pick a shipโ€™s wheel to be cast off + + + Delete the "%1" steering wheel? + Scuttle the "%1" shipโ€™s wheel? + + + Select a steering wheel to download + Pick a shipโ€™s wheel to plunder and download + + + Select a steering wheel + Pick a helm, ye swab + + + STOCK + STOCK + + + FROGPILOT + FROGPILOT + + + CUSTOM + CUSTOM + + + CLEAR + CLEAR + + + Enter the text for the top half + Type yer words fer the upper half, arr + + + Characters: 0/%1 + Characters: 0/%1 + + + Enter the text for the bottom half + Be scrawlโ€™n the words fer the lower half, aye + + + Are you sure you want to completely reset your startup message? + Be ye sure ye want tโ€™ completely reset yer startup message? + + + "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! + โ€œRandom Themesโ€ be workinโ€™ only with themes yeโ€™ve downloaded, so make sure ye download the ones ye want it to use! + + + CANCEL + AVAST FrogPilotUtilitiesPanel Debug Mode - Debug Mode + Debug Mode, arr! - Debug FrogPilot during the next drive by utilizing all of FrogPilot's developer metrics for either bug reporting, or self-debugging. - Use FrogPilot's developer metrics to debug during the next drive, whether for bug reporting or self-debugging. + <b>Use FrogPilot's developer metrics on your next drive</b> to diagnose issues and improve bug reports. + <b>Hoist FrogPilot's developer metrics on yer next voyage</b> to spy troubles 'n sharpen bug reports. Flash Panda - Swift Panda + Flash the Panda FLASH - FLASH + FLASH - Flash the Panda's firmware. Use if you're running into issues with the Panda. - Update the Panda's firmware. Use this if you're having trouble with the Panda. + <b>Reinstall the Panda firmware</b> to fix connection or reliability issues. + <b>Reinstall thโ€™ Panda firmware</b> tโ€™ fix yer connection or reliability woes, arr! - Are you sure you want to flash the Panda? - Are ye certain ye want to flash the Panda? + Are you sure you want to flash the Panda firmware? + Be ye sure ye want tโ€™ flash the Panda firmware? Flash - Quick as a flash + Blazinโ€™ Flash Flashing... - Blinking... + Arr, be flashin'... Flashed! - Exposed! + Arr, flashed! Rebooting... - Restarting... + Be rebootinโ€™... - Force Started State - State of Forced Start + Force Drive State + Force the Helm State - Force openpilot either offroad or onroad. - Force openpilot to operate either off-road or on-road. + <b>Manually set openpilot to be offroad or onroad.</b> + <b>Set openpilot tโ€™ offroad or onroad by yer own hand.</b> OFFROAD - OFFROAD + OFF THE MAIN DECK ONROAD - ONROAD + ONROAD OFF - OFF + AVASTED OFF Report a Bug or an Issue - Report a Bug or an Issue + Report a Blimey Bug or Issue REPORT - LOG + REPORT - Let FrogsGoMoo know about an issue you're facing! - Inform FrogsGoMoo of a problem you're encountering! + <b>Send a bug report</b> so we can help fix the problem! + <b>Be sendinโ€™ a bug report</b> so we can help fix the scurvy problem! - Ensure your device has an internet connection before sending a report! - Make sure your device is connected to the internet before sending a report, matey! + Please connect to the internet before sending a report! + Arrr, connect tโ€™ the internet afore sendinโ€™ a report! I saw an alert that said "openpilot crashed" - I spotted an alert saying "openpilot crashed" + I spied an alert that said "openpilot crashed" - What's going on? - What's happening? + Acceleration feels harsh or jerky + Acceleration be feelinโ€™ rough or jerky, arr! - Please describe what's happening - Kindly explain what's occurring - - - Send Report - Dispatch Report - - - What's your Discord username? - What be your Discord username, matey? - - - Your report has been submitted. Thanks for letting us know! - Your report's been submitted. Thanks for informing us, matey! - - - Reset Toggles to Default - Restore Toggles to Default - - - RESET - RESET - - - Reset all toggles to their default values. - Return all toggles to their default settings. - - - Are you sure you want to reset all toggles to their default values? - Are ye certain ye want to reset all toggles to their default values? - - - Reset - Restart - - - Resetting... - Restarting... - - - Reset! - Restart! - - - Reset Toggles to Match Stock openpilot - Reset Toggles to Match Stock openpilot, matey - - - Reset all toggles to match stock openpilot. - Restore all toggles to their default openpilot settings. - - - Are you sure you want to reset all toggles to match stock openpilot? - Are ye certain ye want to reset all toggles to match stock openpilot? - - - Acceleration feels too harsh or jerky - The acceleration feels too harsh or abrupt. - - - An alert confused me and I didnโ€™t know what it meant - An alert baffled me, and I couldn't figure out what it meant. + An alert was unclear and I didn't know what it meant + An alert be foggy, anโ€™ I knew not what it meant, arr! Braking is too sudden or uncomfortable - The braking feels too abrupt or uncomfortable. + Brakinโ€™ be too sudden or ill-comforted, arr - Iโ€™m not sure if this is normal or a bug: - Iโ€™m uncertain if this be normal or a bug: + I'm not sure if this is normal or a bug: + I be not sure if this be normal or a bug, arr: - Lane changes donโ€™t work properly or feel unsafe - Lane changes aren't working right or feel unsafe. + My screen froze or is stuck loading something + Me screen be frozen or stuck loadinโ€™ somethinโ€™ - My screen froze or got stuck on loading - Me screen froze or be stuck loading - - - My steering wheel buttons arenโ€™t working - The buttons on my steering wheel arenโ€™t working. + My steering wheel buttons aren't working + Me helm buttons be not workin', arr! openpilot disengages when I don't expect it - openpilot disengages unexpectedly - - - openpilot doesnโ€™t resume after I stop - openpilot doesn't restart after I halt + openpilot drops anchor when I be not expectinโ€™ it openpilot doesn't react to stopped vehicles ahead - openpilot doesn't respond to stopped vehicles ahead + openpilot donโ€™t be reactinโ€™ to stopped ships ahead, arr! + + + openpilot doesn't resume from a stop + openpilot be not resumminโ€™ from a dead stop, arr openpilot feels sluggish or slow to respond - openpilot seems sluggish or slow to respond + Arr, openpilot be feelinโ€™ sluggish, slow tโ€™ answer the helm Steering feels twitchy or unnatural - The steering feels twitchy or unnatural, matey. + Helm feels twitchy or unnatural, arr - The car doesnโ€™t follow curves well - The car doesn't handle curves well, matey. + The car doesn't follow curves well + The car be poor at followinโ€™ curves, arr - The car isnโ€™t staying centered in its lane - The car isn't keeping centered in its lane, matey. - - - The speed or display info looks wrong - The speed or display info seems off, matey. + The car isn't staying centered in its lane + Arr, the carriage ainโ€™t holdinโ€™ the center oโ€™ its lane! Something else (please describe) - Please specify something else. + Somethinโ€™ else (be describinโ€™) + + + What's going on? + What be goinโ€™ on, ye scallywag? Arr! + + + Please describe what's happening + Arr, tell what be goinโ€™ on here! + + + Send Report + Send Ye Report + + + What's your Discord username? + What be yer Discord moniker, matey? + + + Report Sent! Thanks for letting us know! + Report be sent! Thanks fer lettinโ€™ us know, matey! + + + Reset Toggles to Default + Reset the toggles tโ€™ default + + + RESET + AVAST RESET + + + <b>Reset all toggles to their default values.</b> + <b>Arr, reset all toggles tโ€™ their default values.</b> + + + Are you sure you want to reset all toggles to their default values? + Arr, be ye sure ye want to reset all toggles to their default values? + + + Reset + Set โ€˜er back + + + Resetting... + Arr, be resettin'... + + + Reset! + Arr, reset! + + + Reset Toggles to Stock openpilot + Set yer Toggles back tโ€™ stock openpilot + + + <b>Reset all toggles to match stock openpilot.</b> + <b>Reset all toggles tโ€™ match stock openpilot, arr!</b> + + + Are you sure you want to reset all toggles to match stock openpilot? + Be ye sure ye want to reset all toggles to match stock openpilot, arr? FrogPilotVehiclesPanel - Select Make - Choose Brand + Car Make + Car Make SELECT - CHOOSE + SELEC' - Select a Make - Choose a Make + Choose your car make + Choose yer car make - Select Model - Choose Model + Car Model + Car Model, ye scallywag - Select a Model - Choose a Model + Choose your car model + Pick yer car model, matey Disable Automatic Fingerprint Detection - Turn Off Automatic Fingerprint Detection + Scuttle Automatic Fingerprint Detectinโ€™ - Forces the selected fingerprint and prevents it from ever changing. - Locks the chosen fingerprint, ensuring it never changes. + <b>Force the selected fingerprint</b> and prevent it from ever changing. + <b>Force the chosen fingerprint</b> anโ€™ keep it from ever changinโ€™, arr. Disable openpilot Longitudinal Control - Disable openpilot's Longitudinal Control + Belay openpilot Longitudinal Control - Disables openpilot longitudinal control and uses the car's stock ACC instead. - Disables openpilot's longitudinal control and uses the car's stock ACC instead, matey. + <b>Disable openpilot longitudinal</b> and use the car's stock ACC instead. + <b>Belay openpilot longitudinal</b> and use the carโ€™s own ACC instead, aye. Are you sure you want to completely disable openpilot longitudinal control? - Are ye certain ye wish to fully disable openpilot's longitudinal control? + Be ye sure ye want to completely disable openpilot longitudinal control? General Motors Settings - General Motors Configurations + General Motors Settin's - Settings specific to <b>General Motors</b> vehicles. - Settings tailored for <b>General Motors</b> vehicles. + <b>FrogPilot features for General Motors vehicles.</b> + <b>FrogPilot booty fer General Motors vessels.</b> FrogsGoMoo's Experimental Tune - FrogsGoMoo's Experimental Melody + FrogsGoMooโ€™s Experimental Tune, arr! - <b>FrogsGoMoo's</b> experimental <b>General Motors</b> tune that aims to smoothen out stopping and takeoff control based on nothing but guesswork. Use at your own risk! - <b>FrogsGoMoo's</b> experimental <b>General Motors</b> tune seeks to refine stopping and takeoff control, relying solely on guesswork. Use at your own risk, matey! + <b>Experimental GM tune by FrogsGoMoo</b> that attempts to smoothen stopping and takeoff control. Use at your own risk! + <b>Experimental GM tune by FrogsGoMoo</b> that be tryinโ€™ to smooth stoppinโ€™ and shove-off control. Use at yer own peril, ye scallywag! Smooth Pedal Response on Hills - Smooth Pedal Response on Inclines + Smooth Pedal Response on Hills, arr - Smoothen the acceleration and braking when driving uphill or downhill. - Smooth the acceleration and braking when driving uphill or downhill. + <b>Smoothen acceleration and braking</b> when driving downhill/uphill. + <b>Make yer acceleration 'n brak'n smoother</b> when sailin' downhill or uphill. - Stop and Go Hack - Pause and Proceed Trick + Stop-and-Go Hack + Stop-n-Go Hack, arr! - Force stop and go on the <b>2017 Chevy Volt</b>. - Halt and proceed on the <b>2017 Chevy Volt</b>. + <b>Force stop-and-go</b> on the 2017 Chevy Volt. + <b>Force stop-and-go</b> on the 2017 Chevy Volt, arr. Hyundai/Kia/Genesis Settings - Hyundai/Kia/Genesis Configurations + Hyundai/Kia/Genesis Settinโ€™s - Settings specific to <b>Hyundai</b>, <b>Kia</b>, and <b>Genesis</b> vehicles. - Settings tailored for <b>Hyundai</b>, <b>Kia</b>, and <b>Genesis</b> vehicles. + <b>FrogPilot features for Genesis, Hyundai, and Kia vehicles.</b> + <b>FrogPilot booty fer Genesis, Hyundai, anโ€™ Kia vessels.</b> comma's New Longitudinal API - Comma's New Longitudinal API + commaโ€™s New Longitudinal API, arrr - comma's new longitudinal control system that has shown great improvement with acceleration and braking, but has issues on some <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> vehicles. - Comma's new longitudinal control system has shown great improvement in acceleration and braking, yet it encounters issues on some <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> vehicles. + <b>comma's new gas and brake control system</b> that improves acceleration and braking but may cause issues on some Genesis/Hyundai/Kia vehicles. + <b>comma's new gas 'n brake helm</b> that betters yer acceleration 'n stoppin', but may cause troubles on some Genesis/Hyundai/Kia vessels. "Taco Bell Run" Torque Hack - "Taco Bell Run" Torque Trick + "Taco Bell Run" Torque Hack, yarrr - The torque hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to improve turning at low speeds by increasing the allowed steering torque. - The torque hack from comma's 2022 "Taco Bell Run" drive. Crafted to enhance turning at low speeds by boosting the permitted steering torque. + <b>The steering torque hack from comma's 2022 "Taco Bell Run".</b> Designed to increase steering torque at low speeds for left and right turns. + <b>Arr! The steerinโ€™ torque hack from commaโ€™s 2022 โ€œTaco Bell Runโ€.</b> Built tโ€™ boost steerinโ€™ torque at low speeds fer port โ€˜n starboard turns. Toyota/Lexus Settings - Toyota/Lexus Configurations + Toyota/Lexus Settinโ€™s - Settings specific to <b>Toyota</b> and <b>Lexus</b> vehicles. - Settings tailored for <b>Toyota</b> and <b>Lexus</b> vehicles. + <b>FrogPilot features for Lexus and Toyota vehicles.</b> + <b>FrogPilot loot fer Lexus anโ€™ Toyota vessels.</b> Automatically Lock/Unlock Doors - Auto Lock/Unlock Doors + Automatically Lock/Unlock Doors, arr - Automatically lock the doors when shifting into drive and unlock them when shifting into park. - Automatically lock the doors when shifting into drive, and unlock them when shifting into park, matey. + <b>Automatically lock/unlock doors</b> when shifting in and out of drive. + <b>Auto-lock/unlock the hatches</b> when ye be shiftinโ€™ in anโ€™ out oโ€™ drive. - Cluster Speed Offset - Cluster Velocity Offset + Dashboard Speed Offset + Helm Speed Offset - The cluster speed offset used by openpilot to match the speed displayed on the dash. - Openpilot uses the cluster speed offset to align with the speed shown on the dash. + <b>The speed offset openpilot uses to match the speed on the dashboard display.</b> + <b>Arr, the speed offset openpilot be usinโ€™ to match the speed on the dashboard display.</b> FrogsGoMoo's Personal Tweaks - FrogsGoMoo's Custom Adjustments + FrogsGoMooโ€™s Personal Booty Tweaks - <b>FrogsGoMoo's</b> personal tweaks for quicker acceleration and smoother braking. - <b>FrogsGoMoo's</b> custom adjustments for faster acceleration and smoother braking. + <b>Personal tweaks by FrogsGoMoo for quicker acceleration and smoother braking.</b> + <b>FrogsGoMooโ€™s personal tweaks fer swifter acceleration โ€™n smoother braking, arrr.</b> Lock Doors On Ignition Off After - Lock Doors When Ignition Is Off After + Bar the Hatches When Ignition Be Cut Aft - Automatically lock the doors after the car's ignition has been turned off and no one is detected in either of the front seats. - Automatically lock the doors once the car's ignition is off and no one is detected in the front seats. + <b>Automatically lock the doors on ignition off</b> when no one is detected in the front seats. + <b>Batten down the hatches (lock the doors) on ignition off</b> when no soul be spotted in the fore seats. - Force stop and go on <b>Toyota</b>/<b>Lexus</b> vehicles without stock stop and go functionality. - Force halt and proceed on <b>Toyota</b>/<b>Lexus</b> vehicles lacking stock stop-and-go functionality. + <b>Force stop-and-go</b> on Lexus/Toyota vehicles without stock stop-and-go functionality. + <b>Force stop-and-go</b> fer Lexus/Toyota vessels without stock stop-and-go function, arr. MANAGE - Oversee + MANAGE, ye scallywags! Lock - Secure + Lock 'er up Unlock - Open sesame + Unlash Never - Never + Neโ€™er seconds - seconds + seconds + + + None + None + + + Vehicle Info + Shipโ€™s Info + + + <b>Information about your vehicle in regards to openpilot support and functionality.</b> + <b>Info 'bout yer vessel regardin' openpilot support 'n function.</b> + + + <b>Detected 3rd party hardware.</b> + <b>Spotted 3rd-party hardware, arr!</b> + + + openpilot Longitudinal Support + openpilot Longitudinal Support, arrr + + + <b>Can openpilot control the vehicle's acceleration and braking?</b> + <b>Arr, can openpilot helm the shipโ€™s speedinโ€™ up and stoppinโ€™?</b> + + + <b>Does your vehicle support the "comma pedal"?</b> + <b>Does yer vessel support the "comma pedal", ye scallywag?</b> + + + Radar Support + Arr, Radar Support + + + <b>Does openpilot use the vehicle's radar data</b> alongside the device's camera for tracking lead vehicles? + <b>Be openpilot usinโ€™ the vesselโ€™s radar data</b> alongside the deviceโ€™s camera fer trackinโ€™ lead vessels, arrr? + + + SDSU Support + SDSU Support, arr! + + + <b>Does your vehicle support "SDSUs"?</b> + <b>Be yer vessel supportinโ€™ โ€œSDSUsโ€?</b> + + + Stop-and-Go Support + Stop-'n'-Go Support, arr! + + + <b>Does your vehicle support stop-and-go driving?</b> + <b>Be yer vessel able to handle stopโ€‘nโ€‘go drivinโ€™, matey?</b> + + + VIEW + VIEW + + + Yes + Aye + + + No + Nay + + + 3rd Party Hardware Detected + Third-Party Hardware Spotted, arr! + + + Blind Spot Support + Blind Spot Support, arr! + + + <b>Does openpilot use the vehicle's blind spot data?</b> + <b>Be openpilot usinโ€™ the vesselโ€™s blind spot data, arrr?</b> + + + comma Pedal Support + comma Pedal Support, arrr FrogPilotVisualsPanel Advanced UI Controls - Advanced UI Elements + Advanced UI Contrโ€™ls - Advanced settings for fine-tuning openpilot's driving screen. - Advanced options for fine-tuning openpilot's driving display. + <b>Advanced visual changes</b> to fine-tune how the driving screen looks. + <b>Fancy lookinโ€™ tweaks</b> to fine-tune how the drivinโ€™ screen be lookinโ€™. Hide Current Speed - Conceal Current Speed + Stow Current Speed - Hide the current speed from the driving screen. - Conceal the current speed from the driving screen, matey. + <b>Hide the current speed</b> from the driving screen. + <b>Stow the current speed</b> from the drivinโ€™ screen. Hide Lead Marker - Conceal Lead Marker + Stash thโ€™ Lead Marker - Hide the marker for lead vehicles from the driving screen. - Remove the marker for lead vehicles from the driving screen. + <b>Hide the lead-vehicle marker</b> from the driving screen. + <b>Stow the lead-vehicle marker</b> from the drivinโ€™ screen. Hide Map Settings Button - Conceal Map Settings Button + Hide Map Settings Button, ye scallywag - Hide the map settings button from the driving screen. - Conceal the map settings button on the driving screen. + <b>Hide the map settings button or map</b> from the driving screen. + <b>Stash the map settings button or the chart</b> from the drivinโ€™ screen. Hide Max Speed - Conceal Max Speed + Stow Max Speed - Hide the max speed from the driving screen. - Conceal the max speed from the driving screen, matey. + <b>Hide the max speed</b> from the driving screen. + <b>Stow the max speed</b> from the drivinโ€™ screen. Hide Non-Critical Alerts - Conceal Non-Critical Alerts + Stow Non-Critical Alerts - Hide non-critical alerts from the driving screen. - Conceal non-critical alerts from the driving display. + <b>Hide non-critical alerts</b> from the driving screen. + <b>Stow non-critical alerts</b> from the drivinโ€™ screen. Hide Speed Limits - Conceal Speed Limits + Stow Speed Limits - Hide the speed limits from the driving screen. - Remove the speed limits from the driving screen, matey. + <b>Hide posted speed limits</b> from the driving screen. + <b>Stow posted speed limits</b> from the drivinโ€™ screen. Use Wheel Speed - Deploy Wheel Speed + Use Wheel Speed, ye scallywag - Use the vehicle's wheel speed instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives. - Use the vehicle's wheel speed instead of the cluster speed. This be a visual change only and doesn't affect how openpilot drives. + <b>Use the vehicle's wheel speed</b> instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives! + <b>Use thโ€™ vesselโ€™s wheel speed</b> โ€˜stead oโ€™ the cluster speed. This be a visual change only โ€˜n donโ€™t affect how openpilot sails! Developer UI - Developer Interface + Buccaneer UI - Detailed information about openpilot's internal operations. - In-depth details on openpilot's internal workings. + <b>Detailed information about openpilot's internal operations.</b> + <b>Arr! Detailed tales oโ€™ openpilotโ€™s inner workings.</b> Adjacent Path Metrics - Nearby Path Metrics + Adjacent Path Metrics, arr - Metrics displayed on top of the adjacent lanes measuring their current width. - Metrics appear above the adjacent lanes, showing their current width. + <b>Show the width of the adjacent lanes.</b> + <b>Be showinโ€™ the width oโ€™ the neighboring lanes, arr.</b> Developer Metrics - Developer Stats + Scallywag Metrics - Performance data, sensor readings, and system metrics for debugging and optimizing openpilot. - Performance data, sensor readings, and system metrics for debugging and optimizing openpilot, matey. + <b>Performance data, sensor readings, and system metrics</b> for debugging and optimizing openpilot. + <b>Performance booty, sensor readinโ€™s, anโ€™ system metrics</b> fer debugginโ€™ anโ€™ optimizinโ€™ openpilot. Border Metrics - Boundary Metrics + Border Metrics - Metrics displayed around the border of the driving screen.<br><br><b>Blind Spot</b>: Turn the border red when a vehicle is detected in a blind spot<br><b>Steering Torque</b>: Highlight the border green to red in accordance to the amount of steering torque being used<br><b>Turn Signal</b>: Flash the border yellow when a turn signal is active - Metrics appear around the edge of the driving screen.<br><br><b>Blind Spot</b>: Turn the edge red when a vehicle is detected in a blind spot<br><b>Steering Torque</b>: Highlight the edge from green to red based on the steering torque used<br><b>Turn Signal</b>: Flash the edge yellow when a turn signal is active + <b>Show statuses along the border of the driving screen.</b><br><br><b>Blind Spot</b>: The border turns red when a vehicle is in a blind spot<br><b>Steering Torque</b>: The border goes from green to red according to how much steering torque is being used<br><b>Turn Signal</b>: The border flashes yellow when a turn signal is on + <b>Show statuses โ€˜long the border oโ€™ the drivinโ€™ screen, arr.</b><br><br><b>Blind Spot</b>: The border turns red when a vessel be lurkinโ€™ in a blind spot, ye<br><b>Steerinโ€™ Torque</b>: The border shifts from green tโ€™ red accordinโ€™ tโ€™ how much steerinโ€™ torque be used<br><b>Turn Signal</b>: The border be flashinโ€™ yellow when a turn signal be on Lead Info - Lead Details + Lead Intel - Metrics displayed under vehicle markers listing their distance and current speed. - Metrics shown beneath vehicle markers indicate their distance and speed. + <b>Show each tracked vehicle's distance and speed</b> below its marker. + <b>Show each tracked vessel's distance 'n speed</b> below its marker, arr. FPS Display - FPS Indicator + FPS Display, arr - Display the <b>Frames Per Second (FPS)</b> at the bottom of the driving screen. - Show the <b>Frames Per Second (FPS)</b> at the bottom of the driving screen, matey. + <b>Show the frames per second (FPS)</b> at the bottom of the driving screen. + <b>Show the frames per second (FPS)</b> at the bottom oโ€™ the drivinโ€™ screen, arr. Numerical Temperature Gauge - Temperature Gauge + Numerical Temperature Gauge, arrr! - Use numerical temperature readings instead of status labels in the sidebar. - Replace status labels in the sidebar with numerical temperature readings. + <b>Show a numerical temperature in the sidebar</b> instead of the status labels. + <b>Show a numerical temperature in the sidebar</b> โ€˜stead oโ€™ the status labels, arr! Sidebar Metrics - Sidebar Stats + Sidebar Booty Metrics - Display system information (<b>CPU</b>, <b>GPU</b>, <b>RAM usage</b>, <b>IP address</b>, <b>device storage</b>) in the sidebar. - Show system details (<b>CPU</b>, <b>GPU</b>, <b>RAM usage</b>, <b>IP address</b>, <b>device storage</b>) in the sidebar, matey. + <b>Display system information</b> (CPU, GPU, RAM usage, IP address, device storage) in the sidebar. + <b>Show ye system info</b> (CPU, GPU, RAM usage, IP address, device storage) in thโ€™ sidebar, arr. Use International System of Units - Utilize the International System of Units + Use thโ€™ International System oโ€™ Units - Display measurements using the <b>International System of Units (SI)</b> standard. - Show measurements using the <b>International System of Units (SI)</b> standard. + <b>Display measurements using the "International System of Units" (SI)</b> standard. + <b>Show yer measurements usinโ€™ the "International System of Units" (SI)</b> standard, arr. Developer Sidebar - Developer's Quarters + Deviloper Sidebar - Display debugging info and metrics in a dedicated sidebar on the right side of the screen. - Show debugging info and metrics in a dedicated sidebar on the starboard side of the screen. + <b>Display debugging info and metrics</b> in a dedicated sidebar on the right side of the screen. + <b>Show debugginโ€™ info โ€˜n metrics</b> in a dedicated sidebar on the starboard side oโ€™ the screen. Metric #1 - Metric #1 + Metric #1 - Metric to display in the first metric in the "Developer Sidebar". - Metric to show as the first metric in the "Developer Sidebar". + <b>Select the metric shown in the first "Developer Sidebar" widget.</b> + <b>Choose the tally shown in the first "Developer Sidebar" widget, ye scallywag.</b> Metric #2 - Metric #2 + Metric #2, ye scurvy dog - Metric to display in the second metric in the "Developer Sidebar". - Metric to show as the second metric in the "Developer Sidebar". + <b>Select the metric shown in the second "Developer Sidebar" widget.</b> + <b>Choose the metric shown in the second "Developer Sidebar" widget, ye scallywag.</b> Metric #3 - Metric #3 + Metric #3, ye scallywag - Metric to display in the third metric in the "Developer Sidebar". - Metric to show as the third metric in the "Developer Sidebar". + <b>Select the metric shown in the third "Developer Sidebar" widget.</b> + <b>Choose the booty oโ€™ metrics shown in the third "Developer Sidebar" widget, matey.</b> Metric #4 - Metric #4 + Metric #4, arr! - Metric to display in the fourth metric in the "Developer Sidebar". - Metric to show as the fourth metric in the "Developer Sidebar". + <b>Select the metric shown in the fourth "Developer Sidebar" widget.</b> + <b>Pick thโ€™ metric shown in the fourth โ€œDeveloper Sidebarโ€ widget, matey.</b> Metric #5 - Metric #5 + Metric #5 - Metric to display in the fifth metric in the "Developer Sidebar". - Metric to show as the fifth metric in the "Developer Sidebar". + <b>Select the metric shown in the fifth "Developer Sidebar" widget.</b> + <b>Pick thโ€™ metric shown in the fifth โ€œDeveloper Sidebarโ€ widget, matey.</b> Metric #6 - Metric #6 + Metric #6 - Metric to display in the sixth metric in the "Developer Sidebar". - Metric to show as the sixth metric in the "Developer Sidebar". + <b>Select the metric shown in the sixth "Developer Sidebar" widget.</b> + <b>Pick thโ€™ metric shown in the sixth โ€œDeveloper Sidebarโ€ widget, aye.</b> Metric #7 - Metric #7 + Metric #7, ye scurvy dog - Metric to display in the seventh metric in the "Developer Sidebar". - Metric to show as the seventh metric in the "Developer Sidebar". + <b>Select the metric shown in the seventh "Developer Sidebar" widget.</b> + <b>Choose the booty metric shown in the seventh "Developer Sidebar" widget, arr.</b> Developer Widgets - Developer Tools + Buccaneer Widgets - Overlays displaying debugging visuals, internal states, and model predictions on the driving screen. - Overlays show debugging visuals, internal states, and model predictions on the driving screen. + <b>Overlays for debugging visuals, internal states, and model predictions</b> on the driving screen. + <b>Overlays fer debugginโ€™ visuals, inner states, anโ€™ model foretastinโ€™s</b> on the drivinโ€™ screen. Adjacent Leads Tracking - Tracking Adjacent Leads + Trackinโ€™ Adjacent Leads - Adjacent leads detected by the car's radar to the left and right of the current driving path. - The car's radar has detected adjacent leads to the left and right of the current driving path. + <b>Display adjacent leads detected by the car's radar</b> to the left and right of the current driving path. + <b>Show adjacent marks the shipโ€™s radar be spyinโ€™</b> to port and starboard oโ€™ the current sailinโ€™ path. Model Stopping Point - Model Termination Point + Modelโ€™s Stoppinโ€™ Point - Display an image on the screen where openpilot is wanting to stop. - Show an image on the screen where openpilot intends to halt. + <b>Show a stop-sign marker where the model intends to stop.</b> + <b>Hoist a stop-sign marker where the model aims tโ€™ drop anchor.</b> Radar Tracks - Radar Logs + Radar Tracks, ye salty dogs - Display all of the radar points produced by the car's radar. - Show all radar points generated by the car's radar. + <b>Display all radar points</b> produced by the car's radar. + <b>Be showinโ€™ all radar points</b> spit out by the carโ€™s radar. Driving Screen Widgets - Widgets for Driving + Drivinโ€™ Screen Widgets - Custom FrogPilot widgets for the driving screen. - Custom FrogPilot widgets for the navigation screen. + <b>Custom FrogPilot widgets</b> for the driving screen. + <b>Custom FrogPilot trinkets</b> fer the helm screen. Acceleration Path - Speed Course + Acceleration Path, ye scallywag - Colorize the driving path based on openpilot's current desired acceleration and deceleration rate. - Color the driving path based on openpilot's current desired acceleration and deceleration rate. + <b>Color the driving path by planned acceleration and braking.</b> + <b>Paint the drivinโ€™ path by planned heave-to and stoppinโ€™.</b> Adjacent Lanes - Neighboring Lanes + Neighborinโ€™ Lanes - Driving paths for the left and right adjacent lanes. - Driving routes for the left and right neighboring lanes. + <b>Show the driving paths for the left and right lanes.</b> + <b>Show the drivinโ€™ paths fer the port โ€™n starboard lanes, arr!</b> Blind Spot Path - Blind Spot Route + Blind Spot Course - Display a red driving path for detected vehicles in the corresponding lane's blind spot. - Show a red path for vehicles detected in the blind spot of the corresponding lane. + <b>Show a red path when a vehicle is in that lane's blind spot.</b> + <b>Hoist a crimson course when a vessel lurks in that laneโ€™s blind spot, arr!</b> Compass - Navigational tool + Compass Arr - A compass to show the current driving direction. - A compass to display the current sailing direction. + <b>Show the current driving direction</b> with a simple on-screen compass. + <b>Show the current sailinโ€™ heading</b> with a simple on-screen compass, arr. Driving Personality Button - Driving Persona Button + Drivinโ€™ Personality Button - Display the current driving personality on the screen. Tap to switch personalities, or long press for 0.5 seconds to change the current state of <b>Experimental Mode</b>, or 2.5 seconds for <b>Traffic Mode</b>. - Show the current driving personality on the screen. Tap to switch personalities, or press for 0.5 seconds to toggle <b>Experimental Mode</b>, or 2.5 seconds for <b>Traffic Mode</b>. + <b>Control and view the current driving personality</b> via a driving screen widget. + <b>Command anโ€™ spy the current drivinโ€™ personality</b> via a drivinโ€™ screen widget. Gas / Brake Pedal Indicators - Gas / Brake Pedal Markers + Gas / Brake Pedal Beacons - Pedals to indicate when either of the pedals are currently being used.<br><br><b>Dynamic</b>: The pedals change in opacity in accordance to how much openpilot is accelerating or decelerating<br><b>Static</b>: The pedals are displayed with full opacity when active, and dimmed when not in use - Pedals show when either is in use.<br><br><b>Dynamic</b>: The pedals adjust opacity based on how much openpilot accelerates or decelerates.<br><b>Static</b>: The pedals appear fully opaque when active and dim when not in use. + <b>On-screen gas and brake indicators.</b><br><br><b>Dynamic</b>: Opacity changes according to how much openpilot is accelerating or braking<br><b>Static</b>: Full when active, dim when not + <b>On-screen gas 'n brake markers.</b><br><br><b>Dynamic</b>: Opacity shifts accordinโ€™ to how much openpilot be acceleratinโ€™ or brakโ€™n<br><b>Static</b>: Full when active, dim when not Rotating Steering Wheel - Spinning Helm + Turninโ€™ the Helm Wheel - Rotate the steering wheel alongside the vehicle's physical steering wheel. - Turn the helm in sync with the vehicle's actual steering wheel. + <b>Rotate the driving screen wheel</b> with the physical steering wheel. + <b>Spin the drivinโ€™ screen wheel</b> with the real shipโ€™s wheel, arr! Model UI - Design Interface + Model UI, arr! - Model visualizations on the driving screen for the driving path, lane lines, path edges, and road edges. - Display visualizations on the driving screen for the driving path, lane lines, path edges, and road edges. + <b>Model visualizations</b> for the driving path, lane lines, path edges, and road edges. + <b>Model spyglassinโ€™s</b> fer the drivinโ€™ path, lane lines, path edges, anโ€™ road edges. Dynamic Path Width - Dynamic Course Width + Shifty Course Width - Adjust the width of the driving path based on the current engagement state.<br><br><b>Fully engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Fully disengaged</b>: 50% - Modify the width of the driving path according to the current engagement state.<br><br><b>Fully engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Fully disengaged</b>: 50% + <b>Change the path width based on engagement.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% + <b>Change the path width accordinโ€™ to yer engagement.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% Lane Lines Width - Width of Lane Lines + Lane Lines Width, arr - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 4 inches. - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 4 inches, matey. + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 4 inches. + <b>Set thโ€™ lane-line thickness.</b><br><br>Default matches thโ€™ MUTCD lane-line width standard oโ€™ 4 inches. Path Edges Width - Path Edges' Width + Path Edges Width be Wide as a shipโ€™s wake - The width of the edges of the driving path that represent different driving modes and statuses.<br><br>Default is <b>20%</b> of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden - The width of the driving path edges indicates various driving modes and statuses.<br><br>The default is <b>20%</b> of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + <b>Set the driving-path edge width</b> that represents different driving modes and statuses.<br><br>Default is 20% of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + <b>Set thโ€™ drivinโ€™-path edge width</b> that be representinโ€™ different sailinโ€™ modes โ€˜n statuses.<br><br>Default be 20% oโ€™ thโ€™ total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden Path Width - Path Width + Path Width, ye scallywag - The width of the driving path on the driving screen.<br><br>Default <b>(6.1 feet)</b> matches the width of a <b>2019 Lexus ES 350</b>. - The width of the driving path on the driving screen.<br><br>Default <b>(6.1 feet)</b> matches the width of a <b>2019 Lexus ES 350</b>, matey. + <b>Set the driving-path width.</b><br><br>Default (6.1 feet) matches the width of a 2019 Lexus ES 350. + <b>Set the drivinโ€™-path width.</b><br><br>Default (6.1 feet) be the same width as a 2019 Lexus ES 350, arr! Road Edges Width - Width of Road Edges + Road Edges Width, arr - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 4 inches. - The thickness of the road edges on the driving screen.<br><br><b>By default, it matches half of the <b>MUTCD</b> lane line width standard of 4 inches. + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 4 inches. + <b>Set thโ€™ road-edge thickness.</b><br><br>Default be half oโ€™ the MUTCD lane-line width standard oโ€™ 4 inches. "Unlimited" Road UI - "Boundless" Road UI + โ€œUnlimitedโ€ Road UI - Extend the display of the driving path, lane lines, and road edges as far as the model can see. - Expand the display of the driving path, lane lines, and road edges as far as the model can perceive. + <b>Extend the length of the driving path, lane lines, and road edges</b> for as far as the model can see. + <b>Stretch the drivinโ€™ path, lane lines, and road edges</b> as far as the modelโ€™s eye can spy. Navigation Widgets - Navigation Tools + Navgation Widgets, arr - Map style tweaks, speed limits, and other navigation related widgets. - Map style adjustments, speed limits, and other navigation-related widgets. + <b>Map style, speed limits, and other navigation widgets.</b> + <b>Map style, speed limits, anโ€™ other navigation trinkets.</b> Larger Map Display - Expanded Map View + Bigger Chart Display - Increase the size of the map for easier navigation readings. - Enlarge the map for easier navigation readings, matey. + <b>Increase the map size</b> for easier navigation readings. + <b>Hoist the map size</b> fer easier navigatinโ€™ readinโ€™s. Map Style - Map Design + Map Style - The map style used for <b>Navigate on openpilot (NOO)</b>:<br><br><b>Stock</b>: Default comma.ai style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>mike854's (Satellite hybrid)</b>: Customized hybrid satellite view - The map style used for <b>Navigate on openpilot (NOO)</b>:<br><br><b>Stock</b>: Default comma.ai style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Highlights outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>mike854's (Satellite hybrid)</b>: Customized hybrid satellite view + <b>Select the map style</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai style<br><b>FrogPilot</b>: Official FrogPilot map style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>Mike's Personalized Style</b>: Customized hybrid satellite view + <b>Pick ye map style</b> fer "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai garb<br><b>FrogPilot</b>: Official FrogPilot chart style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Puts wind in outdoor โ€™n terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Tuned fer daytime navigatinโ€™<br><b>Mapbox Navigation Night</b>: Tuned fer nighttime navigatinโ€™<br><b>Mapbox Satellite</b>: Satellite sights only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite with street labels<br><b>Mapbox Traffic Night</b>: Dark theme showinโ€™ traffic seas<br><b>Mike's Personalized Style</b>: Custom hybrid satellite view fer yer voyage Road Name - Street Name + Road Name, ye scallywag - Display the road name at the bottom of the driving screen using data from <b>OpenStreetMap</b>. - Show the road name at the bottom of the driving screen using data from <b>OpenStreetMap</b>. + <b>Display the road name at the bottom of the driving screen</b> using data from "OpenStreetMap (OSM)". + <b>Show thโ€™ road name at the bottom oโ€™ the drivinโ€™ screen</b> usinโ€™ data from "OpenStreetMap (OSM)". Show Speed Limits - Display Speed Limits + Show thโ€™ Speed Limits - Display speed limits in the top left corner of the driving screen. Uses data from your car's dashboard (if supported) and data from <b>OpenStreetMaps</b>. - Show speed limits in the top left corner of the driving screen. It uses data from your car's dashboard (if supported) and from <b>OpenStreetMaps</b>. + <b>Show speed limits</b> in the top-left corner of the driving screen. Uses data from the car's dashboard (if supported) and "OpenStreetMap (OSM)". + <b>Hoist speed limits</b> in thโ€™ top-left corner oโ€™ the drivinโ€™ screen. Uses data from the carโ€™s dashboard (if supported) and "OpenStreetMap (OSM)". Show Speed Limits from Mapbox - Display Speed Limits from Mapbox + Show Speed Limits from Mapbox, arr - Use <b>Mapbox</b> speed limit data when no other sources are available. - When no other sources are available, use <b>Mapbox</b> speed limit data. + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>Be usinโ€™ Mapbox speed-limit data when no other source be at hand.</b> Use Vienna-Style Speed Signs - Employ Vienna-Style Speed Signs + Hoist Vienna-Style Speed Signs - Force <b>Vienna-style (EU)</b> speed limit signs instead of <b>MUTCD (US)</b>. - Mandate <b>Vienna-style (EU)</b> speed limit signs in place of <b>MUTCD (US)</b>. + <b>Show Vienna-style (EU) speed-limit signs</b> instead of MUTCD (US). + <b>Hoist Vienna-style (EU) speed-limit signs</b> โ€˜stead oโ€™ MUTCD (US). Quality of Life - Life's Quality + Creature Comforts - Visual features to improve your overall openpilot experience. - Visual elements to enhance your openpilot experience. + <b>Miscellaneous visual changes</b> to fine-tune how the driving screen looks. + <b>Assorted eye-candy tweaks</b> tโ€™ fine-tune how the drivinโ€™ screen be lookinโ€™. Camera View - Camera Perspective + Spyglass View - The active camera view display. This is purely a visual change and doesn't impact how openpilot drives! - The active camera view be displayed. This is purely a visual change and doesn't affect how openpilot sails! + <b>Select the active camera view.</b> This is purely a visual change and doesn't impact how openpilot drives! + <b>Pick thโ€™ active spyglass view, matey.</b> This be but a look-see tweak โ€˜n donโ€™t change how openpilot sails the ship! Show Driver Camera When In Reverse - Display Rear Camera When Reversing + Show Driver Spyglass When Aft Gear Be Engaged - Display the driver camera feed when the vehicle is in reverse. - Show the driver camera feed when the vehicle is in reverse. - - - Standby Mode - Standby Mode - - - Turn the screen off when driving and automatically wake it up if engagement state changes or important alerts occur. - Turn off the screen while driving, and automatically wake it if the engagement state changes or important alerts arise. + <b>Show the driver camera feed</b> when the vehicle is in reverse. + <b>Show the driver camera feed</b> when the vessel be in reverse, arr. Stopped Timer - Timer Halted + Timer Be Stopped - Replace the current speed with a timer when stopped to indicate how long the vehicle has been stopped for. - Swap the current speed with a timer when halted to show how long the vehicle has been stationary. + <b>Show a timer when stopped</b> in place of the current speed to indicate how long the vehicle has been stopped. + <b>Hoist a timer when ye be stopped</b> in place oโ€™ the current speed tโ€™ mark how long the vesselโ€™s been at a standstill. + + + Hide Map + Stow thโ€™ Map Blind Spot - Blind Spot + Blind Spot, arr Steering Torque - Steering Force + Helm Torque Turn Signal - Signal Light + Turninโ€™ Lantern Fahrenheit - Fahrenheit + Fahrenheit CPU - Processor + CPU GPU - Graphics card + GPU IP - IP + IP RAM - RAM + RAM SSD Left - SSD Remaining + SSD Portside SSD Used - SSD Utilized + SSD Plundered None - None + Arr, none! Acceleration: Current - Current Acceleration + Acceleration: Aye, Current Acceleration: Max - Acceleration: Maximum + Acceleration: Max, arr! Auto Tune: Actuator Delay - Auto Tune: Actuator Lag + Auto Tune: Actuator Delay, arrr Auto Tune: Friction - Auto Tune: Resistance + Auto Tune: Friction, arr! Auto Tune: Lateral Acceleration - Auto Tune: Sideways Acceleration + Auto Tune: Lee-ward Acceleration Auto Tune: Steer Ratio - Auto Tune: Steering Ratio + Auto Tune: Helm Ratio Auto Tune: Stiffness Factor - Auto Tune: Rigidity Factor + Auto Tune: Stiffness Factor, arr! Engagement %: Lateral - Engagement %: Sideways + Engagement %: Port 'n starboard Engagement %: Longitudinal - Engagement %: Over time + Engagement %: Longitudinal, arrr Lateral Control: Steering Angle - Steering Angle: Lateral Control + Lateral Helm: Steerinโ€™ Angle Lateral Control: Torque % Used - Lateral Control: Torque % Utilized + Lateral Helm: Torque % Used Longitudinal Control: Actuator Acceleration Output - Longitudinal Control: Actuator Acceleration Ahoy! + Longitudinal Helm: Actuator Acceleration Output Longitudinal MPC Jerk: Acceleration - Longitudinal MPC Jerk: Acceleration, matey + Longitudinal MPC Jerk: Acceleration, arr! Longitudinal MPC Jerk: Danger Zone - Longitudinal MPC Jerk: Risky Waters + Longitudinal MPC Jerk: Danger Zone, arr! Longitudinal MPC Jerk: Speed Control - Longitudinal MPC Jerk: Velocity Control + Longitudinal MPC Jerk: Speed Helm Control SELECT - SELECT + SELEC' Select a metric to display - Choose a metric to show + Pick a metric tโ€™ display, arr! Show Distance - Display Distance + Show Yer Distance Dynamic - Lively + Dynamic, arr! Static - Unchanging + Staaatic inches - inches + inches Off - Off + Avast feet - feet + feet Full Map - Complete Chart + Full Chart Stock openpilot - Standard openpilot + Stock openpilot, arrr! - FrogsGoMoo's Personalized Style - FrogsGoMoo's Custom Style + FrogPilot + FrogPilot Mapbox Streets - Mapbox Streets + Mapbox Streets, arr! Mapbox Outdoors - Mapbox Outdoors + Mapbox Outdoors Mapbox Light - Mapbox Light + Mapbox Light Mapbox Dark - Mapbox Night + Mapbox Dark, ye scurvy chart Mapbox Navigation Day - Mapbox Navigation Day, matey! + Mapbox Navigation Day, ye scallywags Mapbox Navigation Night - Mapbox Navigation Evening + Mapbox Navigation Night, arrr! Mapbox Satellite - Mapbox Satellite + Mapbox Satellite Arr Mapbox Satellite Streets - Mapbox Satellite Streets + Mapbox Satellite Streets Mapbox Traffic Night - Mapbox Traffic After Dark + Mapbox Traffic by Night, arr! Mike's Personalized Style - Mike's Custom Style + Mike's Personalized Style Select a map style - Choose a map style + Choose a map style, ye scallywag Auto - Car + Auto Driver - Operator + Helmsman Standard - Regular + Standarrrd Wide - Broad + Broad abeam foot - foot + foot, ye scurvy dog inch - inch + inch meter - meter + meter meters - metres + meters centimeter - cm + centimeter centimeters - cm + centimeters - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 10 centimeters. - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 10 centimeters, matey. + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 10 centimeters. + <b>Set thโ€™ lane-line thickness.</b><br><br>Default matches thโ€™ MUTCD lane-line width standard oโ€™ 10 centimeters, arr. - The width of the driving path on the driving screen.<br><br>Default <b>(1.9 meters)</b> matches the width of a <b>2019 Lexus ES 350</b>. - The width of the driving path on the driving screen.<br><br>Default <b>(1.9 meters)</b> matches the width of a <b>2019 Lexus ES 350</b>, matey. + <b>Set the driving-path width.</b><br><br>Default (1.9 meters) matches the width of a 2019 Lexus ES 350. + <b>Set thโ€™ drivinโ€™-path width.</b><br><br>Default (1.9 meters) be the same width as a 2019 Lexus ES 350. - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 10 centimeters. - The thickness of the road edges on the driving screen.<br><br><b>By default, it matches half of the <b>MUTCD</b> lane line width standard of 10 centimeters. + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 10 centimeters. + <b>Set thโ€™ road-edge thickness, ye landlubber.</b><br><br>Default be half oโ€™ the MUTCD lane-line width standard oโ€™ 10 centimeters. FrogPilotWheelPanel Distance Button - Distance Switch + Distance Button, arr! - The action for a short press of the <b>Distance</b> button. - The action for a brief press of the <b>Distance</b> button. + <b>Action performed when the "Distance" button is pressed.</b> + <b>Deed done when the "Distance" button be pressed, arrr.</b> Distance Button (Long Press) - Distance Button (Hold Press) + Distance Button (Long Press), ye scallywag - The action for a 0.5+ second press of the <b>Distance</b> button. - The action triggered by a 0.5+ second press of the <b>Distance</b> button. + <b>Action performed when the "Distance" button is pressed for more than 0.5 seconds.</b> + <b>Deed done when the "Distance" button be pressed fer more than 0.5 seconds.</b> Distance Button (Very Long Press) - Distance Button (Extended Press) + Distance Button (Very Long Press) - The action for a 2.5+ second press of the <b>Distance</b> button. - The action for pressing the <b>Distance</b> button for over 2.5 seconds. + <b>Action performed when the "Distance" button is pressed for more than 2.5 seconds.</b> + <b>Deed done when thโ€™ "Distance" button be held fer more than 2.5 seconds.</b> LKAS Button - LKAS Switch + LKAS Button, ye scallywag - The action for pressing the <b>LKAS</b> button. - Press the <b>LKAS</b> button, matey. + <b>Action performed when the "LKAS" button is pressed.</b> + <b>Deed done when the "LKAS" button be pressed, arr!</b> - Nothing - Nothing + No Action + No Action, arr - Pause Lateral - Hold Lateral + Pause Steering + Heave To Handlinโ€™ the Helm Change "Personality Profile" - Character Chart + Change "Personality Profile", ye scallywag Force openpilot to Coast - Make openpilot coast + Force openpilot tโ€™ Coast - Pause Longitudinal - Halt Longitudinal + Pause Acceleration/Braking + Heave to Acceleration/Brakinโ€™ Toggle "Experimental Mode" On/Off - Switch "Experimental Mode" On/Off + Flip "Experimental Mode" On/Off, arrr Toggle "Traffic Mode" On/Off - Switch "Traffic Mode" On/Off + Heave to "Traffic Mode" On/Off SELECT - SELECT + SELECT Select a function to assign to this button - Choose a function to assign to this button, matey + Be pickinโ€™ a function to lash to this here button InputDialog Cancel - Cancel + Belay Need at least %n character(s)! - - At least %n character required! - At least %n characters required! + + Be needinโ€™ at least %n character(s), arr! + Be needinโ€™ at least %n character(s), arr! Characters: %1/%2 - Characters: %1 of %2 + Characters: %1/%2 Installer Installing... - Installing, matey... + Hoistinโ€™ the install... MapETA eta - ETA + ETA, arr min - min + min hr - hr + hr MapSettings NAVIGATION - Steering + NAVIGATION, ye scallywags! Manage at %1 - Handle at %1 + Manage at %1, arr MapWindow Map Loading - Loading the Map + Chart Be Loadin' Waiting for GPS - Awaiting GPS + Waitinโ€™ fer thโ€™ GPS Waiting for route - Awaiting course - - - - ModelReview - - How would you rate that drive? - How would ye rate that drive, matey? - - - Blacklist this model - Add this model to the blacklist. - - - The model used during that drive was: - The model employed during that voyage was: - - - Current Model Score: 0 - Current Model Score: 0 - - - Current Model Rank: 0 - Current Model Rank: 0 - - - Total Model Drives: 0 - Total Model Drives: None - - - Total Overall Model Drives: 0 - Total Model Drives Overall: 0 - - - Total Model Drives: %1 - Total Model Drives: %1 - - - Current Model Rank: %1 - Current Model Rank: %1 - - - Current Model Score: %1 - Current Model Score: %1 - - - Total Overall Drives: %1 - Total Drives Overall: %1 - - - Model successfully blacklisted! - Model blacklisted successfully! + Awaitinโ€™ the route, arr! MultiOptionDialog Select - Choose + Be pickin' Cancel - Cancel + Belay Networking Advanced - Enhanced + Advanรงed Enter password - Enter yer password, matey + Enter ye secret code, matey for "%1" - for "%1" + fer "%1" Wrong password - Incorrect password + Wrong passcode, ye scallywag OffroadAlert Device temperature too high. System cooling down before starting. Current internal component temperature: %1 - Device temperature too high. System cooling down before starting. Current internal component temperature: %1 + Device be runninโ€™ too hot. System be coolinโ€™ down afore startinโ€™. Current inner component heat: %1 Immediately connect to the internet to check for updates. If you do not connect to the internet, openpilot won't engage in %1 - Connect to the internet right away to check for updates. If ye don't connect, openpilot won't engage in %1. + Hook up tโ€™ the internet right away to check fer updates. If ye donโ€™t connect tโ€™ the internet, openpilot wonโ€™t engage in %1 Connect to internet to check for updates. openpilot won't automatically start until it connects to internet to check for updates. - Connect to the internet to check for updates. openpilot won't start automatically until it connects to the internet to check for updates. + Hoist a link to thโ€™ internet to spy fer updates. openpilot wonโ€™t launch itself โ€˜til it be tied to thโ€™ internet to check fer updates. Unable to download updates %1 - Can't download updates + Arr, unable tโ€™ fetch updates %1 Taking camera snapshots. System won't start until finished. - Capturing camera snapshots. System won't begin until complete. + Snappinโ€™ camera shots. The system wonโ€™t set sail till it be finished. An update to your device's operating system is downloading in the background. You will be prompted to update when it's ready to install. - An update to your device's operating system be downloading in the background. Ye'll be prompted to update when it's ready to install. + An update tโ€™ yer deviceโ€™s operatinโ€™ system be downloadinโ€™ below decks. Yeโ€™ll be prompted tโ€™ update when it be ready tโ€™ install. Device failed to register. It will not connect to or upload to comma.ai servers, and receives no support from comma.ai. If this is an official device, visit https://comma.ai/support. - Device failed to register. It won't connect to or upload to comma.ai servers, and receives no support from comma.ai. If this is an official device, visit https://comma.ai/support. + Device be failinโ€™ tโ€™ register. Itโ€™ll not be connectinโ€™ tโ€™ nor uploadinโ€™ tโ€™ comma.ai servers, anโ€™ gets no support from comma.ai. If this be an official device, visit https://comma.ai/support. NVMe drive not mounted. - NVMe drive not attached. + NVMe drive be not mounted, arr! Unsupported NVMe drive detected. Device may draw significantly more power and overheat due to the unsupported NVMe. - Unsupported NVMe drive detected. The device might draw much more power and overheat because of the unsupported NVMe. + Unsupported NVMe drive spotted, ye scallywag. This device may gulp far more power and overheat due to the unsupported NVMe. openpilot was unable to identify your car. Your car is either unsupported or its ECUs are not recognized. Please submit a pull request to add the firmware versions to the proper vehicle. Need help? Join discord.comma.ai. - openpilot couldn't identify your car, matey. Either it's unsupported or its ECUs aren't recognized. Submit a pull request to add the firmware versions to the correct vehicle. Need help? Join discord.comma.ai. + openpilot couldnโ€™t spy yer carriage. Yer ride be unsupported, or its ECUs be unrecognized. Hoist a pull request to add the firmware versions to the proper vessel. Need a mateyโ€™s hand? Join discord.comma.ai. openpilot was unable to identify your car. Check integrity of cables and ensure all connections are secure, particularly that the comma power is fully inserted in the OBD-II port of the vehicle. Need help? Join discord.comma.ai. - openpilot couldn't identify your car. Check cable integrity and ensure all connections are secure, especially that the comma power is fully inserted in the OBD-II port of the vehicle. Need help? Visit discord.comma.ai. + Arr, openpilot couldnโ€™t spy yer carriage. Check yer cablesโ€™ integrity anโ€™ make sure all connections be secureโ€”โ€™specially that the comma power be jammed full into the OBD-II port oโ€™ the vessel. Need a hand? Join discord.comma.ai. openpilot detected a change in the device's mounting position. Ensure the device is fully seated in the mount and the mount is firmly secured to the windshield. - openpilot noticed a shift in the device's mounting position. Make sure the device is properly seated in the mount and that the mount is securely attached to the windshield. + Arr! openpilot spied a change in the deviceโ€™s mountinโ€™ spot. Make sure the device be snug in the mount, anโ€™ the mount be lashed tight to the windshield. OffroadHome UPDATE - REFRESH + UPDATE, ye scallywags! ALERTS - ALERTS + ALERTS, arr! ALERT - ALERT + ALERT, arrr! OnroadAlerts - openpilot crashed ๐Ÿ’ฉ - openpilot failed ๐Ÿ’ฉ + openpilot crashed + openpilot be scuttledโ€”sheโ€™s crashed, arr! Please post the "Error Log" in the FrogPilot Discord! - Kindly share the "Error Log" in the FrogPilot Discord, matey! - - - openpilot crashed - openpilot failed + Be postinโ€™ the "Error Log" in the FrogPilot Discord, ye scallywags! openpilot Unavailable - openpilot Not Available + openpilot Be Unavailable Arr Waiting for controls to start - Awaiting controls to begin + Awaitinโ€™ fer controls tโ€™ start TAKE CONTROL IMMEDIATELY - SEIZE CONTROL NOW + SEIZE THE HELM AT ONCE, YE HEAVE-HO! Controls Unresponsive - Controls Not Responding + Controls be unresponsive Reboot Device - Restart Device + Reboot thโ€™ Device, arr! + + + openpilot crashed ๐Ÿ’ฉ + Arr, openpilot be scuttled! ๐Ÿ’ฉ PairingPopup Pair your device to your %1 account - Connect your device to your %1 account + Pair yer device to yer %1 account Go to https://%1 on your phone - Visit https://%1 on your phone, matey. + Sail to https://%1 on yer phone Click "add new device" and scan the QR code on the right - Click "add new device" and scan the QR code to starboard. + Click โ€œadd new deviceโ€ anโ€™ scan the QR code tโ€™ starboard Bookmark %1 to your home screen to use it like an app - Add %1 to your home screen to use it like an app. + Bookmark %1 to yer home screen to use it like an app, arr! ParamControl Enable - Activate + Hoist Aye Cancel - Cancel + Belay PrimeAdWidget Upgrade Now - Upgrade Today + Hoist the upgrade now! Become a comma prime member at connect.comma.ai - Join as a comma prime member at connect.comma.ai + Become a Comma Prime matey at connect.comma.ai PRIME FEATURES: - KEY FEATURES: + PRIME BOOTY: Remote access - Remote entry + Remote access be aboard 24/7 LTE connectivity - Round-the-clock LTE connectivity + 24/7 LTE riggin' o' connectivity 1 year of drive storage - 1 year of storage space for yer drive + 1 year oโ€™ drive booty storage Turn-by-turn navigation - Step-by-step navigation + Turn-by-turn nav'gation PrimeUserWidget โœ“ SUBSCRIBED - โœ“ SUBSCRIBED + โœ“ SUBSCRIBED, arr! comma prime - comma prime + comma prime QObject km - km + leagues m - m + m mi - mi + mi ft - ft + ft + + + Restore + Restore, ye scallywag! Exit - Depart + Abandon ship FrogPilot - FrogNavigator + FrogPilot now - currently + now, ye scallywag! %n minute(s) ago - - %n minute past - %n minutes past + + %n minute(s) ago, arr + %n minute(s) ago, arr %n hour(s) ago - - %n hour past - %n hours past + + %n hour(s) ago, arr + %n hour(s) ago, arr %n day(s) ago - - %n day past - %n days past + + %n day(s) ago + %n day(s) ago - - Restore - Reinstate - Reset Reset failed. Reboot to try again. - Reset failed. Restart to try again. + Reset be failed. Reboot to try again, arr! Resetting device... This may take up to a minute. - Resetting device... -This might take up to a minute, matey. + Be resettinโ€™ the device... +This may take up to a minute, arr. Are you sure you want to reset your device? - Are ye certain ye wish to reset yer device? + Be ye sure ye be wantinโ€™ to reset yer device? System Reset - System Reboot + Shipโ€™s Reset System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot, matey. + System reset be triggered. Press confirm tโ€™ erase all content and settings. Press cancel tโ€™ resume boot. Cancel - Cancel + Belay Reboot - Restart + Reboot, ye scallywag! Confirm - Aye, confirm. + Arr, Confirm ye be! Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device. - Can't mount data partition. It might be corrupted. Press confirm to erase and reset your device. + Be unable tโ€™ mount data partition. Partition may be cursed โ€™n corrupted. Press confirm tโ€™ erase โ€™n reset yer device, arr! ScreenRecorder RECORDING - RECORDING + RECORDINโ€™ RECORD - LOG + RECORD SettingsWindow โ† Back - โ† Return + โ† Back, ye scallywag Device - Gadget + Device, ye scurvy gadget Network - Network + Network Toggles - Switches + Toggles, arrr Software - Program + Softwarrr FrogPilot - FrogNavigator + FrogPilot Welcome to FrogPilot! Since you're new to openpilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Ahoy, welcome to FrogPilot! As you're new to openpilot, the "Minimal" toggle preset is set, but you can adjust this anytime using the "Tuning Level" button! + Ahoy, welcome tโ€™ FrogPilot! Since ye be new tโ€™ openpilot, the "Minimal" toggle preset be set, but ye can change it any time via the "Tuning Level" button! Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Ahoy, welcome aboard FrogPilot! As a new matey, the "Minimal" toggle preset is set for ye, but fear notโ€”you can adjust it anytime using the "Tuning Level" button! + Ahoy, matey! Since ye be new tโ€™ FrogPilot, the โ€œMinimalโ€ toggle preset be set, but ye can change it any time via the โ€œTuning Levelโ€ button! Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - As you're new to FrogPilot, the "Minimal" toggle preset is applied, but you can change it anytime using the "Tuning Level" button! + Since ye be fairly new to FrogPilot, the "Minimal" toggle preset be applied, but ye can change this any time via the "Tuning Level" button! Arr! Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - As you're familiar with openpilot, the "Standard" toggle preset is set, but you can adjust it anytime using the "Tuning Level" button! + Since ye be seasoned with openpilot, the "Standard" toggle preset be set, but ye can change it any time via the "Tuning Level" button, arr! Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - As you're familiar with FrogPilot, the "Standard" toggle preset is set, but you can adjust it anytime using the "Tuning Level" button! + Since ye be seasoned with FrogPilot, the "Standard" toggle preset be applied, but ye can change this any time via the "Tuning Level" button! Arr! Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Given your expertise with FrogPilot, the "Advanced" toggle preset is now active. However, you can adjust this anytime using the "Tuning Level" button, matey! + Since ye be a salty hand with FrogPilot, the "Advanced" toggle preset be set, but ye can change it any time via the "Tuning Level" button! Setup Something went wrong. Reboot the device. - Ahoy, something went awry. Reboot the device, matey. + Somethinโ€™ went awry. Reboot the device, ye scallywag. Ensure the entered URL is valid, and the deviceโ€™s internet connection is good. - Verify the URL ye entered is valid, and check that the device's internet connection is strong. + Make sure the URL ye entered be valid, and the deviceโ€™s internet be shipshape. No custom software found at this URL. - No custom software be found at this URL, matey. + No custom software be found at this URL, ye scallywag. WARNING: Low Voltage - Ahoy! Voltage Be Low + ARR! WARNING: Low Voltage Power your device in a car with a harness or proceed at your own risk. - Power your device in a car with a harness, or continue at your own risk, matey. + Power yer device in a carriage with a harness, or sail on at yer own peril. Power off - Shut down + Cut the power Continue - Proceed + Press on, matey Getting Started - Setting Sail + Gettinโ€™ Started, matey Before we get on the road, letโ€™s finish installation and cover some details. - Before we hit the road, letโ€™s complete the installation and go over some details. + Afore we set sail on the road, letโ€™s finish the installinโ€™ and mind a few details. Connect to Wi-Fi - Join the Wi-Fi network + Hoist a link to Wiโ€‘Fi Back - Return + Aft Continue without Wi-Fi - Proceed without Wi-Fi + Sail on without Wiโ€‘Fi Waiting for internet - Awaiting internet + Waitinโ€™ fer the internet, arr! Choose Software to Install - Select Software to Install + Choose Software tโ€™ Install openpilot - openpilot + openpilot Custom Software - Bespoke Software + Custom Warez Enter URL - Input URL + Be enterinโ€™ the URL, matey for Custom Software - for Tailored Software + fer Custom Software Downloading... - Downloadin', matey... + Plunderinโ€™ the bytes... Download Failed - Download Unsuccessful + Download be scuttled! Reboot device - Restart device + Reboot thโ€™ device, arr! Start over - Begin anew + Start o'er, ye scallywag! Select a language - Choose a tongue, matey! + Choose yer tongue, matey SetupWidget Finish Setup - Complete Setup + Finish Settinโ€™s Up Pair your device with Konik connect (stable.konik.ai). - Link your device with Konik connect (stable.konik.ai). + Pair yer device with Konik connect (stable.konik.ai), ye scallywag. Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. - Pair yer device with Comma Connect (connect.comma.ai) and claim yer Comma Prime offer. + Pair yer device with comma connect (connect.comma.ai) and claim yer comma prime booty. Pair device - Connect device + Pair ye device Sidebar CONNECT - LINK + MAKE FAST TO PORT OFFLINE - OFFLINE + OFFLINE ONLINE - ONLINE + ONLINE ERROR - ERROR + ERROR TEMP - TEMP + TEMP HIGH - ELEVATED + HIGH GOOD - GOOD + ARR, GOOD! OK - Aye + Aye VEHICLE - VEHICLE + VESSEL NO - NO + Nay PANDA - PIRATE + PANDA GPS - GPS + GPS SEARCH - Seek + SEEKINโ€™ GPU - Graphics card + GPU CPU - Processor + CPU GB - GB + GB MEMORY - RECOLLECTION + MEMโ€™RY LEFT - PORT + PORT USED - PRE-OWNED + USED -- - -- + -- Wi-Fi - Wi-Fi + Wi-Fi ETH - Ethereum + ETH 2G - 2G + 2G 3G - 3G + 3G LTE - LTE + LTE 5G - 5G technology + 5G SoftwarePanel Updates are only downloaded while the car is off or in park. - Updates download only when the car is off or in park. + Updates be downloaded only when the carriage be off or in park, arrr. Current Version - Present Version + Current Version Arr Automatically Update FrogPilot - Auto-Update FrogPilot + Automatically Update FrogPilot, arr! FrogPilot will automatically update itself and it's assets when you're offroad and have an active internet connection. - FrogPilot will automatically update itself and its assets when you're offroad and have an active internet connection. + FrogPilot will be updatinโ€™ itself anโ€™ its assets automatic-like when ye be offroad with an active internet connection. Download - Ahoy, download + Plunder the download CHECK - VERIFY + CHECK, ye scallywag! Install Update - Install the Update + Hoist thโ€™ Update INSTALL - SETUP + HOIST ABOARD Target Branch - Target Aft + Target Branch, ye scurvy dog SELECT - SELECT + SELECโ€™ Select a branch - Choose a branch + Choose a masthead branch, ye scallywag This branch must be downloaded before switching. Would you like to download it now? - Ye must download this branch before switching. Would ye like to download it now? + Ye must fetch this branch afore switchinโ€™. Be ye wantinโ€™ to download it now? Uninstall %1 - Remove %1 + Uninstall %1, ye scallywag UNINSTALL - Remove + UNINSTALL Are you sure you want to uninstall? - Are ye certain ye wish to uninstall? + Be ye sure ye want to uninstall? Uninstall - Remove - - - Do you want to delete deep storage FrogPilot assets? This includes your toggle settings for quick reinstalls. - Do ye wish to delete deep storage FrogPilot assets, matey? This includes yer toggle settings for swift reinstalls. - - - Are you sure? This is 100% unrecoverable and if you reinstall FrogPilot you'll lose all your previous settings! - Are ye certain? This be 100% unrecoverable, and if ye reinstall FrogPilot, ye'll lose all yer previous settings! + Keelhaul Installinโ€™ Error Log - Error Log + Errrr Log VIEW - VIEW + VIEW View the error log for openpilot crashes. - Check the error log for openpilot crashes. + Spy the error log fer openpilot wrecks. failed to check for update - Unable to check for update + failed tโ€™ check fer update DOWNLOAD - Download + PLUNDER DOWNLOADIN' update available - Update ready, matey! + update be ready fer ye never - not once + ne'er up to date, last checked %1 - Current as of %1 + shipshape and up tโ€™date, last checked %1 + + + Do you want to perform a full factory reset? All saved assets and settings will be permanently deleted! + Be ye wishinโ€™ to run a full factory reset? All saved booty and settings be wiped fer good! + + + This is a complete factory reset and cannot be undone. Are you absolutely sure you want to continue? + This be a full factory reset anโ€™ can neโ€™er be undone. Be ye absolutely sure ye wish tโ€™ press on? SshControl SSH Keys - SSH Keys + SSH Keys Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. A comma employee will NEVER ask you to add their GitHub username. - Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own, matey. A comma employee will NEVER ask you to add their GitHub username. + Warninโ€™: This be grantinโ€™ SSH access tโ€™ all public keys in yer GitHub settinโ€™s. Never enter a GitHub username other than yer own. A comma employee will NEVER be askinโ€™ ye tโ€™ add their GitHub username. ADD - ADD + ADD Enter your GitHub username - Enter yer GitHub username, matey + Be enterinโ€™ yer GitHub username, matey LOADING - LOADING + LOADINโ€™ REMOVE - DELETE + REMOVE Username '%1' has no keys on GitHub - The username '%1' has no keys on GitHub, matey. + Arr, the username '%1' be havin' no keys on GitHub Request timed out - The request has timed out. + Request be timed out, arr! Username '%1' doesn't exist on GitHub - The username '%1' be nonexistent on GitHub, matey. + Arr, the username '%1' be not existin' on GitHub SshToggle Enable SSH - Activate SSH + Hoist the SSH sails TermsPage Terms & Conditions - Terms & Conditions + Terms & Conditions, arrr Decline - Refuse + Nay Scroll to accept - Scroll to agree + Scroll ta accept, arr! Agree - Aye + Aye TogglesPanel Enable openpilot - Activate openpilot + Hoist openpilot sails Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. - Use the openpilot system for adaptive cruise control and lane-keeping assistance. Your attention is needed at all times to use this feature. Changing this setting takes effect when the car is powered off. + Use the openpilot rig fer adaptive cruise control anโ€™ lane-keep helmsman assist. Yer eyes be needed at all times to use this here feature. Changinโ€™ this settinโ€™ takes effect when the car be powered off. openpilot Longitudinal Control (Alpha) - openpilot Longitudinal Control (Alpha) + openpilot Longitudinal Control (Alpha) Arr! WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). - WARNING: openpilot's longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). + WARNING: openpilotโ€™s long โ€™nโ€™ short helm be in alpha fer this carriage and will disable Automatic Emergency Brakinโ€™ (AEB). Arr! On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. - On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot's longitudinal control. Enabling Experimental mode is recommended when activating openpilot longitudinal control alpha. + On this car, openpilot be defaultinโ€™ to the shipโ€™s builtโ€‘in ACC โ€˜stead oโ€™ openpilotโ€™s longitudinal control. Hoist this to switch to openpilot longitudinal control. Turninโ€™ on Experimental mode be recommended when hoistinโ€™ openpilot longitudinal control alpha. Experimental Mode - Trial Mode + Experimenโ€™al Mode Disengage on Accelerator Pedal - Release the Accelerator Pedal + Disengage on the throttle, ye seadog When enabled, pressing the accelerator pedal will disengage openpilot. - When enabled, pressing the accelerator pedal will deactivate openpilot. + When enabled, stompinโ€™ the accelerator pedal will make openpilot stand down. Enable Lane Departure Warnings - Activate Lane Departure Warnings + Hoist Lane Departure Warnings Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). - Get alerts to steer back into the lane if your vehicle drifts over a detected lane line without a turn signal while driving over 31 mph (50 km/h). + Get alerts tโ€™ steer back inta thโ€™ lane when yer vessel drifts oโ€™er a spied lane line without a turn signal flyinโ€™ while sailinโ€™ oโ€™er 31 mph (50 km/h). Record and Upload Driver Camera - Capture and Upload Driver Camera + Record 'n Upload Driver Camera Upload data from the driver facing camera and help improve the driver monitoring algorithm. - Upload data from the driver-facing camera to enhance the driver monitoring algorithm, matey. + Be uploadinโ€™ data from the driver-facinโ€™ spyglass and help improve the driver monitorinโ€™ algorithm, aye. Use Metric System - Adopt the Metric System + Use thโ€™ Metric System Display speed in km/h instead of mph. - Show speed in km/h instead of mph. + Show speed in km/h โ€˜stead oโ€™ mph. Show ETA in 24h Format - Display ETA in 24h Format + Show ETA in 24h Format, ye scallywag Use 24h format instead of am/pm - Use the 24-hour format instead of am/pm. + Use thโ€™ 24h format โ€˜stead oโ€™ am/pm Show Map on Left Side of UI - Display Map on Left Side of UI + Show thโ€™ Map on tโ€™ Port Side oโ€™ thโ€™ UI Show map on left side when in split screen view. - Display the map on the left side when in split screen view. + Show thโ€™ chart to port when in split-screen view. Aggressive - Fierce + Aggressarrinโ€™ Standard - Regular + Standarrrd Relaxed - At ease + Relaxed, ye scallywag Driving Personality - Driving Persona + Drivinโ€™ Personality Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. - Standard is recommended. In aggressive mode, openpilot follows lead cars more closely and is more assertive with the gas and brake. In relaxed mode, openpilot keeps a greater distance from lead cars. On supported vehicles, you can switch between these modes using your steering wheel distance button. + Standard be recommended. In aggressive mode, openpilotโ€™ll tail the lead ships closer anโ€™ be more heavy-handed with the gas anโ€™ brake. In relaxed mode, openpilot keeps further off the lead ships. On supported cars, ye can cycle these personalities with yer wheelโ€™s distance button. openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: - openpilot defaults to driving in <b>chill mode</b>. Experimental mode unlocks <b>alpha-level features</b> not yet suited for chill mode. The experimental features are listed below: + openpilot be settinโ€™ sail in <b>chill mode</b> by default. Experimental mode hoists <b>alpha-level features</b> that ainโ€™t shipshape for chill mode yet. Experimental booty be listed below: End-to-End Longitudinal Control - Complete Longitudinal Control + End-to-End Longitudinal Helm Control Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. - Let the driving model handle the gas and brakes. openpilot will steer as it believes a human would, stopping for red lights and stop signs. Since the model determines the speed, the set speed serves only as an upper limit. This is an alpha quality feature; expect some mistakes, matey. + Let the drivin' model helm the gas an' brakes. openpilotโ€™ll steer as it reckons a human would, stoppinโ€™ fer red lights anโ€™ stop signs. Since the drivinโ€™ model chooses the speed, the set speed be but an upper bound. This be an alpha-quality feature; expect missteps, ye scallywags. New Driving Visualization - New Driving Display + New Drivinโ€™ Visualization, arr! The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. - The driving visualization will switch to the road-facing wide-angle camera at low speeds to better display certain turns. The Experimental mode logo will appear in the top right corner. + The drivinโ€™ vizโ€™ll switch tโ€™ the road-facinโ€™ wide-angle spyglass at low speeds tโ€™ show some bends better. The Experimental mode markโ€™ll also be shown in the top starboard corner. Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. - Experimental mode be unavailable on this car, as the stock ACC handles longitudinal control. + Arrr, Experimental mode be unavailable on this ship oโ€™ wheels, since the carโ€™s stock ACC be doinโ€™ the longitudinal helm. openpilot longitudinal control may come in a future update. - openpilot's longitudinal control might arrive in a future update. + openpilotโ€™s longitudinal helm may be cominโ€™ in a future update, arr. Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. - Activate the openpilot longitudinal control (alpha) toggle to enable Experimental mode. + Hoist the openpilot longitudinal control (alpha) toggle to unleash Experimental mode, arr! Updater Update Required - Update Needed + Update Be Required An operating system update is required. Connect your device to Wi-Fi for the fastest update experience. The download size is approximately 1GB. - An operating system update be needed. Connect your device to Wi-Fi for the fastest update experience. The download size is about 1GB. + An operatinโ€™ system update be required. Lash yer device to Wiโ€‘Fi fer the fastest update voyage. The download be near 1GB. Connect to Wi-Fi - Join the Wi-Fi network + Hook up tโ€™ Wiโ€‘Fi Install - Set up + Install, ye scallywag! Back - Return + Aft Loading... - Loading, matey... + Loadin'... Reboot - Restart + Reboot ye contraption Update failed - Update unsuccessful + Update be failed WiFiPromptWidget Setup Wi-Fi - Set up Wi-Fi + Rig the Wi-Fi sails Connect to Wi-Fi to upload driving data and help improve openpilot - Connect to Wi-Fi to upload driving data and help enhance openpilot, matey! + Hook up to Wi-Fi to upload sailinโ€™ data and help improve openpilot Open Settings - Access Settings + Hoist Settings Ready to upload - Prepared to upload + Ready t' upload Training data will be pulled periodically while your device is on Wi-Fi - Training data will be fetched regularly when your device is on Wi-Fi. + Traininโ€™ dataโ€™ll be hauled in by and by whilst yer device be on Wiโ€‘Fi, arrr! Uploading disabled - Upload disabled + Uploadinโ€™ be disabled Toggle off the "Turn Off Data Uploads" toggle to re-enable uploads. - Switch off the "Turn Off Data Uploads" toggle to re-enable uploads. + Flip off the "Turn Off Data Uploads" toggle to hoist uploads again. WifiUI Scanning for networks... - Scanning for networks, matey... + Scourinโ€™ fer networks... CONNECTING... - ESTABLISHING CONNECTION... + HOOKINโ€™ UP... FORGET - Forget + FERGET Forget Wi-Fi Network "%1"? - Forget Wi-Fi Network "%1", matey? + Scuttle Wiโ€‘Fi Network "%1"? Forget - Overlook + Ferget \ No newline at end of file diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index ad8247af2..d7f4f4cf7 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -88,23 +88,23 @@ Off - Desligado + Desligado Always - Sempre + Sempre Only Onroad - Apenas Onroad + Somente na estrada Until Reboot - Atรฉ reiniciar + Atรฉ reiniciar Allow tethering with your data SIM and keep it active either while driving or continuously. - Permitir tethering com seu SIM de dados e mantรช-lo ativo enquanto dirige ou continuamente. + Permita tethering com seu SIM de dados e mantenha-o ativo enquanto dirige ou continuamente. @@ -187,71 +187,71 @@ DeveloperSidebar m/sยฒ - m/sยฒ + m/sยฒ ft/sยฒ - ft/sยฒ + ft/sยฒ ACCEL - ACCEL + ACELERAR ACCEL JERK - SOLAVANCO DE ACELERAร‡รƒO + TRร‚NSITO BRUSCO DE ACELERAร‡รƒO ACT ACCEL - ACT ACCEL + ACEL ATIVA DANGER JERK - PERIGO IDIOTA + PERIGO SOLAVANCO STEER DELAY - ATRASO DE DIREร‡รƒO + ATRASO NA DIREร‡รƒO FRICTION - ATRITO + ATRITO LAT ACCEL - ACEL LAT + ACEL. LAT. LATERAL % - LATERAL % + LATERAL % LONG % - LONG % + LONG % MAX ACCEL - MAX ACCEL + ACEL MรXIMA SPEED JERK - SOLAVANCO DE VELOCIDADE + TRANCรƒO DE VELOCIDADE STEER ANGLE - ร‚NGULO DE DIREร‡รƒO + ร‚NGULO DE DIREร‡รƒO STEER RATIO - Relaรงรฃo de direรงรฃo + RELACรƒO DE DIREร‡รƒO STEER STIFF - DIREร‡รƒO DURA + DIREร‡รƒO RรGIDA TORQUE % - TORQUE % + TORQUE % @@ -398,30 +398,30 @@ Pair your device with Konik connect (stable.konik.ai). - Emparelhe seu dispositivo com o Konik connect (stable.konik.ai). + Emparelhe seu dispositivo com o Konik connect (stable.konik.ai). DriveStats FROGPILOT - FROGPILOT + FROGPILOT Drives - Unidades + Conduรงรตes Hours - Horas + Horas KM - KM + KM Miles - Milhas + Milhas @@ -446,3839 +446,3952 @@ FrogPilotAnnotatedCameraWidget m/sยฒ - m/sยฒ + m/sยฒ meters - metros + metros m/s - m/s + m/s km/h - km/h + km/h ft/sยฒ - ft/sยฒ + ft/sยฒ feet - pรฉs + pรฉs mph - mph + mph Vehicle in blind spot - Veรญculo no ponto cego + Veรญculo no ponto cego PENDING - PENDENTE + PENDENTE LIMIT - LIMITE + LIMITE FrogPilotConfirmationDialog Reboot required to take effect. - Reinicializaรงรฃo necessรกria para surtir efeito. + Reinicializaรงรฃo necessรกria para surtir efeito. Reboot Now - Reiniciar agora + Reiniciar agora Reboot Later - Reiniciar mais tarde + Reiniciar depois Yes - Sim + Sim No - Nรฃo + Nรฃo FrogPilotDataPanel - Delete Driving Footage and Data - Excluir filmagens e dados de conduรงรฃo + Delete Driving Data + Excluir dados de conduรงรฃo DELETE - EXCLUIR + EXCLUIR - Deletes all stored driving footage and data from your device. Ideal for maintaining privacy or for simply freeing up space. - Exclui todas as filmagens e dados de conduรงรฃo armazenados no seu dispositivo. Ideal para manter a privacidade ou simplesmente liberar espaรงo. + <b>Delete all stored driving footage and data</b> to free up space and clear private information. + <b>Excluir todas as filmagens e dados de conduรงรฃo armazenados</b> para liberar espaรงo e limpar informaรงรตes privadas. - Are you sure you want to delete all of your driving footage and data? - Tem certeza de que deseja excluir todas as suas filmagens e dados de direรงรฃo? + Delete all driving data and footage? + Excluir todos os dados e gravaรงรตes de conduรงรฃo? Delete - Excluir + Excluir Deleting... - Excluindo... + Excluindo... Deleted! - Excluรญdo! + Excluรญdo! Delete Error Logs - Excluir Logs de Erro + Excluir logs de erro - Deletes all stored error logs from your device. Ideal for freeing up space. - Exclui todos os logs de erro armazenados no seu dispositivo. Ideal para liberar espaรงo. + <b>Delete collected error logs</b> to free up space and clear old crash records. + <b>Excluir logs de erro coletados</b> para liberar espaรงo e limpar registros antigos de falhas. - Are you sure you want to delete all of the error logs? - Tem certeza de que deseja excluir todos os logs de erro? + Delete all error logs? + Excluir todos os logs de erro? Screen Recordings - Gravaรงรตes de Tela + Gravaรงรตes de tela - Manage your screen recordings. - Gerencie suas gravaรงรตes de tela. + <b>Delete or rename screen recordings.</b> + <b>Exclua ou renomeie gravaรงรตes de tela.</b> DELETE ALL - EXCLUIR TUDO + EXCLUIR TUDO RENAME - RENOMEAR + RENOMEAR - Select a recording to delete - Selecione uma gravaรงรฃo para excluir + Choose a screen recording to delete + Escolha uma gravaรงรฃo de tela para excluir - Are you sure you want to delete this recording? - Tem certeza de que deseja excluir esta gravaรงรฃo? + Delete this screen recording? + Excluir esta gravaรงรฃo de tela? - Are you sure you want to delete all screen recordings? - Tem certeza de que deseja excluir todas as gravaรงรตes de tela? + Delete all screen recordings? + Excluir todas as gravaรงรตes de tela? Delete All - Excluir tudo + Excluir tudo - Select a recording to rename - Selecione uma gravaรงรฃo para renomear + Choose a screen recording to rename + Escolha uma gravaรงรฃo de tela para renomear Enter a new name - Insira um novo nome + Insira um novo nome - Rename Recording - Renomear Gravaรงรฃo + Rename Screen Recording + Renomear gravaรงรฃo de tela - A recording with this name already exists. Please choose a different name. - Jรก existe uma gravaรงรฃo com este nome. Por favor, escolha um nome diferente. + Name already in use. Please choose a different name. + Nome jรก estรก em uso. Escolha um nome diferente. Renaming... - Renomeando... + Renomeando... Renamed! - Renomeado! + Renomeado! FrogPilot Backups - Backups do FrogPilot + Backups do FrogPilot - Manage your FrogPilot backups. - Gerencie seus backups do FrogPilot. + <b>Create, delete, or restore FrogPilot backups.</b> + <b>Criar, excluir ou restaurar backups do FrogPilot.</b> BACKUP - BACKUP + BACKUP RESTORE - RESTAURAR + RESTAURAR - Name your backup - Nomeie seu backup + Enter a name for this backup + Digite um nome para este backup - A backup with this name already exists. Please choose a different name. - Jรก existe um backup com este nome. Por favor, escolha um nome diferente. - - - Do you want to compress this backup? This will take a few minutes, but the final result will be smaller and run in the background. - Vocรช deseja compactar este backup? Isso levarรก alguns minutos, mas o resultado final serรก menor e serรก executado em segundo plano. + Compress this backup? This will save space and run in the background but take a bit longer. + Compactar este backup? Isso economizarรก espaรงo e serรก executado em segundo plano, mas levarรก um pouco mais de tempo. Backing up... - Fazendo backup... + Fazendo backup... Compressing... - Comprimindo... + Comprimindo... Backup created! - Backup criado! + Backup criado! - Select a backup to delete - Selecione um backup para excluir + Choose a FrogPilot backup to delete + Escolha um backup do FrogPilot para excluir - Are you sure you want to delete this backup? - Tem certeza de que deseja excluir este backup? + Delete this backup? + Excluir este backup? - Are you sure you want to delete all FrogPilot backups? - Tem certeza de que deseja excluir todos os backups do FrogPilot? + Delete all backups? + Excluir todos os backups? - Select a restore point - Selecione um ponto de restauraรงรฃo + Choose a backup to restore + Escolha um backup para restaurar - Are you sure you want to restore this version of FrogPilot? - Tem certeza de que deseja restaurar esta versรฃo do FrogPilot? + Restore this backup? + Restaurar este backup? Restore - Restaurar + Restaurar Restoring... - Restaurando... + Restaurando... Extracting... - Extraindo... + Extraindo... Restored! - Restaurado! + Restaurado! Rebooting... - Reiniciando... + Reiniciando... Toggle Backups - Alternar backups + Alternar backups - Manage your toggle backups. - Gerencie seus backups de alternรขncia. + <b>Create, delete, or restore toggle backups.</b> + <b>Criar, excluir ou restaurar backups de alternรขncias.</b> - Name your toggle backup - Nomeie seu backup de alternรขncia - - - A toggle backup with this name already exists. Please choose a different name. - Jรก existe um backup alternativo com este nome. Por favor, escolha um nome diferente. - - - Select a toggle backup to delete - Selecione um backup de alternรขncia para excluir - - - Are you sure you want to delete this toggle backup? - Tem certeza de que deseja excluir este backup de alternรขncia? - - - Are you sure you want to delete all toggle backups? - Tem certeza de que deseja excluir todos os backups de alternรขncia? - - - Select a toggle restore point - Selecione um ponto de restauraรงรฃo de alternรขncia - - - Are you sure you want to restore this toggle backup? - Tem certeza de que deseja restaurar este backup de alternรขncia? + Choose a backup to delete + Escolha um backup para excluir FrogPilotDevicePanel Device Settings - Configuraรงรตes do Dispositivo + Configuraรงรตes do dispositivo - Settings that control device behavior. - Configuraรงรตes que controlam o comportamento do dispositivo. - - - Battery Shutdown Threshold - Limite de Desligamento da Bateria - - - Automatically shut down the device when the vehicle's battery voltage reaches the set threshold preventing excessive battery drain to protect the battery. - Desligue automaticamente o dispositivo quando a tensรฃo da bateria do veรญculo atingir o limite definido, evitando o consumo excessivo da bateria para protegรช-la. + <b>Settings that control how the device runs, powers off, and manages driving data.</b> + <b>Configuraรงรตes que controlam como o dispositivo funciona, desliga e gerencia os dados de conduรงรฃo.</b> Device Shutdown Timer - Temporizador de Desligamento do Dispositivo + Temporizador de Desligamento do Dispositivo - How long the device stays on for after you go offroad. - Quanto tempo o dispositivo permanece ligado depois que vocรช sai da estrada. + <b>Keep the device on for the set amount of time after a drive</b> before it shuts down automatically. + <b>Mantenha o dispositivo ligado pelo tempo definido apรณs uma conduรงรฃo</b> antes que ele desligue automaticamente. - Disable Data Logging - Desativar Registro de Dados + Disable Logging + Desativar registro de logs WARNING: This will prevent your drives from being recorded and all data will be unobtainable! - AVISO: Isso impedirรก que suas unidades sejam gravadas e todos os dados ficarรฃo inacessรญveis! + AVISO: Isso impedirรก que suas viagens sejam gravadas e todos os dados ficarรฃo indisponรญveis! - Disable all data logging to improve privacy. - Desative todo o registro de dados para melhorar a privacidade. + <b>Prevent the device from saving driving data.</b> + <b>Impedir que o dispositivo salve dados de conduรงรฃo.</b> - Disable Data Uploads - Desativar Envios de Dados + Disable Uploads + Desativar envios - WARNING: This will prevent your drives from appearing on <b>comma connect</b> which may impact debugging and support! - AVISO: Isso impedirรก que suas unidades apareรงam no <b>comma connect</b>, o que pode impactar a depuraรงรฃo e o suporte! + WARNING: This will prevent your drives from being uploaded to <b>comma connect</b> which will impact debugging and official support from comma! + AVISO: Isso impedirรก que seus trajetos sejam enviados para o <b>comma connect</b>, o que afetarรก a depuraรงรฃo e o suporte oficial da comma! - Prevent the device from sending any data to <b>comma</b>'s servers. - Impedir que o dispositivo envie qualquer dado para os servidores da <b>comma</b>. + <b>Prevent the device from uploading driving data.</b> + <b>Impedir que o dispositivo envie dados de direรงรฃo.</b> - Increase Thermal Safety Limit - Aumentar o Limite de Seguranรงa Tรฉrmica + High-Quality Recording + Gravaรงรฃo de alta qualidade - WARNING: This can damage your device by exceeding safe temperature limits! - AVISO: Isso pode danificar seu dispositivo ao exceder os limites seguros de temperatura! + <b>Save drive footage in higher video quality.</b> + <b>Salvar filmagens de conduรงรฃo em qualidade de vรญdeo superior.</b> - Allow the device to run hotter than comma recommended limit. - Permitir que o dispositivo funcione mais quente do que o limite recomendado pela vรญrgula. + Low-Voltage Cutoff + Corte por Baixa Tensรฃo - Use Konik's Server Instead of comma's - Use o servidor do Konik em vez do da comma. + <b>While parked, if the battery voltage falls below the set level, the device shuts down</b> to prevent excessive battery drain. + <b>Enquanto estacionado, se a tensรฃo da bateria cair abaixo do nรญvel definido, o dispositivo desliga</b> para evitar descarga excessiva da bateria. - Upload your driving data to <b>connect.konik.ai</b> instead of <b>connect.comma.ai</b>. - Envie seus dados de direรงรฃo para <b>connect.konik.ai</b> em vez de <b>connect.comma.ai</b>. + Raise Temperature Limits + Aumentar os Limites de Temperatura + + + WARNING: Running at higher temperatures may damage your device! + AVISO: Operar em temperaturas mais altas pode danificar seu dispositivo! + + + <b>Allow the device to run at higher temperatures</b> before throttling or shutting down. Use only if you understand the risks! + <b>Permita que o dispositivo opere em temperaturas mais altas</b> antes de reduzir o desempenho ou desligar. Use somente se vocรช entender os riscos! + + + Use Konik Server + Usar o Konik Server + + + <b>Upload driving data to "connect.konik.ai" instead of "connect.comma.ai".</b> + <b>Enviar dados de conduรงรฃo para "connect.konik.ai" em vez de "connect.comma.ai".</b> Screen Settings - Configuraรงรตes de Tela + Configuraรงรตes de tela - Settings that control screen behavior. - Configuraรงรตes que controlam o comportamento da tela. + <b>Settings that control screen brightness, screen recording, and timeout duration.</b> + <b>Configuraรงรตes que controlam o brilho da tela, a gravaรงรฃo da tela e a duraรงรฃo do tempo limite.</b> Screen Brightness (Offroad) - Brilho da Tela (Offroad) + Brilho da Tela (Offroad) - The screen brightness when not driving. - O brilho da tela quando nรฃo estiver dirigindo. + <b>The screen brightness while not driving.</b> + <b>O brilho da tela quando nรฃo estiver dirigindo.</b> Screen Brightness (Onroad) - Brilho da Tela (Na estrada) + Brilho da Tela (Na Estrada) - The screen brightness while driving. - O brilho da tela enquanto dirige. + <b>The screen brightness while driving.</b> + <b>O brilho da tela durante a conduรงรฃo.</b> Screen Recorder - Gravador de Tela + Gravador de Tela - Enable a button in the driving screen to record the screen. - Habilitar um botรฃo na tela de direรงรฃo para gravar a tela. + <b>Add a button to the driving screen to record the display.</b> + <b>Adicione um botรฃo ร  tela de conduรงรฃo para gravar a tela.</b> Screen Timeout (Offroad) - Tempo de Tela (Offroad) + Tempo de tela (Offroad) - How long it takes for the screen to turn off when not driving. - Quanto tempo leva para a tela desligar quando nรฃo estรก dirigindo. + <b>How long the screen stays on after being tapped while not driving.</b> + <b>Por quanto tempo a tela permanece ligada apรณs ser tocada enquanto nรฃo estiver dirigindo.</b> Screen Timeout (Onroad) - Tempo de Tela (Em movimento) + Tempo de tela (em movimento) - How long it takes for the screen to turn off while driving. - Quanto tempo leva para a tela desligar enquanto dirige. + <b>How long the screen stays on after being tapped while driving.</b> + <b>Por quanto tempo a tela permanece ligada apรณs ser tocada enquanto dirige.</b> + + + Standby Mode + Modo de espera + + + <b>Turn the screen off while driving and automatically wake it up for alerts or engagement state changes.</b> + <b>Desligue a tela enquanto dirige e a acorde automaticamente para alertas ou mudanรงas no estado de engajamento.</b> 5 mins - 5 mins + 5 min mins - mins + minutos hour - hora + hora hours - horas + horas - Only Disable While Onroad - Apenas desativar enquanto estiver na estrada + Disable Onroad Only + Desativar apenas em movimento volts - volts + volts Screen Off - Tela desligada + Tela desligada Auto - Auto + Automรกtico Start Recording - Iniciar Gravaรงรฃo + Iniciar gravaรงรฃo Stop Recording - Parar Gravaรงรฃo + Parar gravaรงรฃo seconds - segundos - - - High Bitrate Recording - Gravaรงรฃo de Alta Taxa de Bits - - - Record driving footage at double the standard bitrate for improved video quality in driving logs. - Grave imagens de direรงรฃo com o dobro da taxa de bits padrรฃo para melhorar a qualidade do vรญdeo nos registros de direรงรฃo. + segundos FrogPilotLateralPanel Advanced Lateral Tuning - Ajuste Lateral Avanรงado + Ajuste Lateral Avanรงado - Advanced settings for fine-tuning openpilot's lateral controls. - Configuraรงรตes avanรงadas para ajuste fino dos controles laterais do openpilot. + <b>Advanced steering control changes to fine-tune how openpilot drives.</b> + <b>Alteraรงรตes avanรงadas no controle de direรงรฃo para ajustar finamente como o openpilot dirige.</b> Actuator Delay (Default: %1) - Atraso do Atuador (Padrรฃo: %1) + Atraso do Atuador (Padrรฃo: %1) Actuator Delay - Atraso do Atuador + Atraso do Atuador - How long the steering wheel takes to respond to commands. Higher values account for slower steering; lower values for quicker response. - Quanto tempo o volante leva para responder aos comandos. Valores mais altos indicam direรงรฃo mais lenta; valores mais baixos indicam resposta mais rรกpida. + <b>The time between openpilot's steering command and the vehicle's response.</b> Increase if the vehicle reacts late; decrease if it feels jumpy. Auto-learned by default. + <b>O tempo entre o comando de direรงรฃo do openpilot e a resposta do veรญculo.</b> Aumente se o veรญculo reagir tarde; diminua se parecer brusco. Aprendido automaticamente por padrรฃo. Friction (Default: %1) - Atrito (Padrรฃo: %1) + Atrito (Padrรฃo: %1) Friction - Atrito + Atrito - Adjust steering resistance. Higher values feel more stable but heavier; lower values feel lighter but more sensitive. - Ajuste a resistรชncia da direรงรฃo. Valores mais altos parecem mais estรกveis, mas mais pesados; valores mais baixos parecem mais leves, mas mais sensรญveis. + <b>Compensates for steering friction.</b> Increase if the wheel sticks near center; decrease if it jitters. Auto-learned by default. + <b>Compensa o atrito da direรงรฃo.</b> Aumente se o volante prender perto do centro; diminua se tremer. Aprendido automaticamente por padrรฃo. Kp Factor (Default: %1) - Fator Kp (Padrรฃo: %1) + Fator Kp (Padrรฃo: %1) Kp Factor - Fator Kp + Fator Kp - How aggressively openpilot corrects steering. Higher values respond faster but may feel jerky; lower values are smoother but slower. - Quรฃo agressivamente o openpilot corrige a direรงรฃo. Valores mais altos respondem mais rรกpido, mas podem parecer bruscos; valores mais baixos sรฃo mais suaves, mas mais lentos. + <b>How strongly openpilot corrects lane position.</b> Higher is tighter but twitchier; lower is smoother but slower. Auto-learned by default. + <b>Quรฃo fortemente o openpilot corrige a posiรงรฃo na faixa.</b> Maior รฉ mais preciso, porรฉm mais arisco; menor รฉ mais suave, porรฉm mais lento. Aprendido automaticamente por padrรฃo. - Lateral Accel (Default: %1) - Aceleraรงรฃo Lateral (Padrรฃo: %1) + Lateral Acceleration (Default: %1) + Aceleraรงรฃo Lateral (Padrรฃo: %1) - Lateral Accel - Aceleraรงรฃo Lateral + Lateral Acceleration + Aceleraรงรฃo Lateral - How quickly openpilot makes lateral adjustments. Higher values allow sharper turns; lower values provide smoother steering. - Quรฃo rapidamente o openpilot faz ajustes laterais. Valores mais altos permitem curvas mais acentuadas; valores mais baixos proporcionam uma direรงรฃo mais suave. + <b>Maps steering torque to turning response.</b> Increase for sharper turns; decrease for gentler steering. Auto-learned by default. + <b>Mapeia o torque da direรงรฃo para a resposta de curva.</b> Aumente para curvas mais pontiagudas; diminua para uma direรงรฃo mais suave. Aprendido automaticamente por padrรฃo. Steer Ratio (Default: %1) - Relaรงรฃo de Direรงรฃo (Padrรฃo: %1) + Relaรงรฃo de Direรงรฃo (Padrรฃo: %1) Steer Ratio - Relaรงรฃo de Direรงรฃo + Relaรงรฃo de Direรงรฃo - How much the steering wheel turns in response to commands. Higher values feel more stable; lower values feel quicker. - Quanto o volante gira em resposta aos comandos. Valores mais altos parecem mais estรกveis; valores mais baixos parecem mais rรกpidos. + <b>The relationship between steering wheel rotation and road wheel angle.</b> Increase if steering feels too quick or twitchy; decrease if it feels too slow or weak. Auto-learned by default. + <b>A relaรงรฃo entre a rotaรงรฃo do volante e o รขngulo das rodas.</b> Aumente se a direรงรฃo parecer muito rรกpida ou arisca; diminua se parecer muito lenta ou fraca. Aprendido automaticamente por padrรฃo. - Force Auto Tune On - Forรงar Auto Tune Ligado + Force Auto-Tune On + Forรงar Auto-Tune Ativado - Force-enable commaโ€™s auto lateral tuning. - Forรงar a ativaรงรฃo automรกtica do ajuste lateral da vรญrgula. + <b>Force-enable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration".</b> + <b>Forรงar a ativaรงรฃo do autoajuste ao vivo do openpilot para โ€œFrictionโ€ e โ€œLateral Accelerationโ€.</b> - Force Auto Tune Off - Forรงar Desativaรงรฃo do Auto Tune + Force Auto-Tune Off + Forรงar Ajuste Automรกtico Desativado - Force-disable commaโ€™s auto lateral tuning. - Forรงar a desativaรงรฃo do ajuste lateral automรกtico da vรญrgula. + <b>Force-disable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration" and use the set value instead.</b> + <b>Desativar ร  forรงa o autoajuste ao vivo do openpilot para โ€œFricรงรฃoโ€ e โ€œAceleraรงรฃo Lateralโ€ e usar o valor definido em seu lugar.</b> - Always on Lateral - Sempre em Lateral + Force Torque Controller + Controlador de Torque Forรงado - openpilot's steering control stays active even when the brake or gas pedals are pressed.<br><br>Deactivation only occurs with the <b>Cruise Control</b> button. - O controle de direรงรฃo do openpilot permanece ativo mesmo quando os pedais de freio ou acelerador sรฃo pressionados.<br><br>A desativaรงรฃo ocorre apenas com o botรฃo <b>Cruise Control</b>. + <b>Use torque-based steering control instead of angle-based control for smoother lane keeping, especially in curves.</b> + <b>Use o controle de direรงรฃo baseado em torque em vez do controle baseado em รขngulo para uma manutenรงรฃo de faixa mais suave, especialmente em curvas.</b> + + + Always On Lateral + Lateral Sempre Ativo + + + <b>openpilot's steering remains active even when the accelerator or brake pedals are pressed.</b> + <b>A direรงรฃo do openpilot permanece ativa mesmo quando os pedais do acelerador ou do freio sรฃo pressionados.</b> Enable With Cruise Control - Ativar com controle de cruzeiro + Ativar com o controle de cruzeiro - Allow <b>Always on Lateral</b> to be active whenever <b>Cruise Control</b> is active, bypassing the need to enable openpilot first. - Permitir que <b>Always on Lateral</b> esteja ativo sempre que o <b>Cruise Control</b> estiver ativo, dispensando a necessidade de ativar o openpilot primeiro. + <b>Enable "Always On Lateral" whenever "Cruise Control" is on, even when openpilot is not engaged.</b> + <b>Ative "Always On Lateral" sempre que o "Cruise Control" estiver ligado, mesmo quando o openpilot nรฃo estiver engajado.</b> - Enable With LKAS Button - Ativar com botรฃo LKAS + Enable With LKAS + Ativar com LKAS - Allow <b>Always on Lateral</b> to be active whenever <b>LKAS</b> is active, bypassing the need to enable openpilot first. - Permitir que <b>Always on Lateral</b> esteja ativo sempre que o <b>LKAS</b> estiver ativo, dispensando a necessidade de ativar o openpilot primeiro. + <b>Enable "Always On Lateral" whenever "LKAS" is on, even when openpilot is not engaged.</b> + <b>Ative "Always On Lateral" sempre que o "LKAS" estiver ligado, mesmo quando o openpilot nรฃo estiver engajado.</b> - Pause on Brake Below - Pausar no Freio Abaixo + Pause on Brake Press Below + Pausar ao pressionar o freio abaixo - Temporarily pause <b>Always on Lateral</b> below the set speed when braking. - Pausar temporariamente <b>Sempre no Lateral</b> abaixo da velocidade definida ao frear. + <b>Pause "Always On Lateral" below the set speed while the brake pedal is pressed.</b> + <b>Pausar o "Always On Lateral" abaixo da velocidade definida enquanto o pedal do freio estiver pressionado.</b> Lane Changes - Mudanรงas de Faixa + Trocas de faixa - Customize how openpilot performs lane changes. - Personalize como o openpilot realiza mudanรงas de faixa. + <b>Allow openpilot to change lanes.</b> + <b>Permitir que o openpilot mude de faixa.</b> Automatic Lane Changes - Mudanรงas Automรกticas de Faixa + Mudanรงas de Faixa Automรกticas - Change lanes automatically when the turn signal is on. No steering input needed! - Mude de faixa automaticamente quando o sinal de seta estiver ligado. Nenhuma entrada de direรงรฃo necessรกria! + <b>When the turn signal is on, openpilot will automatically change lanes.</b> No steering-wheel nudge required! + <b>Quando a seta estiver ligada, o openpilot mudarรก de faixa automaticamente.</b> Nรฃo รฉ necessรกrio dar um toque no volante! Lane Change Delay - Atraso na Mudanรงa de Faixa + Atraso na Mudanรงa de Faixa - Delay automatic lane changes by the set amount of time. - Atrasar as mudanรงas automรกticas de faixa pelo tempo definido. + <b>Delay between turn signal activation and the start of an automatic lane change.</b> + <b>Atraso entre a ativaรงรฃo da seta e o inรญcio de uma mudanรงa de faixa automรกtica.</b> Minimum Lane Change Speed - Velocidade Mรญnima para Mudanรงa de Faixa + Velocidade Mรญnima de Mudanรงa de Faixa - Minimum speed required for openpilot to perform a lane change. - Velocidade mรญnima necessรกria para o openpilot realizar uma mudanรงa de faixa. + <b>Lowest speed at which openpilot will change lanes.</b> + <b>Menor velocidade na qual o openpilot mudarรก de faixa.</b> Minimum Lane Width - Largura Mรญnima da Faixa + Largura mรญnima da faixa - openpilot won't initiate a lane change into a lane narrower than this width. - openpilot nรฃo iniciarรก uma mudanรงa de faixa para uma faixa mais estreita do que esta largura. + <b>Prevent automatic lane changes into lanes narrower than the set width.</b> + <b>Evitar mudanรงas automรกticas de faixa para faixas mais estreitas que a largura definida.</b> One Lane Change Per Signal - Uma mudanรงa de faixa por sinal + Uma mudanรงa de faixa por sinal - Limit lane changes to one per turn signal activation. - Limite as mudanรงas de faixa a uma por ativaรงรฃo do sinal de direรงรฃo. + <b>Limit automatic lane changes to one per turn-signal activation.</b> + <b>Limite as mudanรงas de faixa automรกticas a uma por ativaรงรฃo da seta.</b> Lateral Tuning - Ajuste Lateral + Ajuste Lateral - Settings for fine-tuning openpilot's lateral controls. - Configuraรงรตes para ajuste fino dos controles laterais do openpilot. + <b>Miscellaneous steering control changes</b> to fine-tune how openpilot drives. + <b>Alteraรงรตes diversas no controle de direรงรฃo</b> para ajustar como o openpilot dirige. Force Turn Desires Below Lane Change Speed - Forรงar Desejos de Mudanรงa de Faixa Abaixo da Velocidade de Mudanรงa de Faixa + Forรงar desejos de curva abaixo da velocidade de mudanรงa de faixa - Force turn desires below the minimum lane change speed to improve turning accuracy. - Forรงar desejos de curva abaixo da velocidade mรญnima de mudanรงa de faixa para melhorar a precisรฃo das curvas. - - - Neural Network Feedforward (NNFF) - Propagaรงรฃo Direta da Rede Neural (NNFF) - - - Use <b>Twilsoncoโ€™s</b> <b>Neural Network FeedForward</b> model for smoother, model-based steering trained on your vehicle's data. - Use o modelo <b>Neural Network FeedForward</b> de <b>Twilsonco</b> para uma direรงรฃo mais suave, baseada em modelo, treinada com os dados do seu veรญculo. - - - Smooth Curve Handling - Manuseio de Curvas Suaves - - - Use <b>Twilsoncoโ€™s</b> torque-based adjustments to smooth out steering during curves. - Use <b>os ajustes baseados em torque da Twilsonco</b> para suavizar a direรงรฃo durante as curvas. + <b>While driving below the minimum lane change speed with an active turn signal, instruct openpilot to turn left/right.</b> + <b>Ao dirigir abaixo da velocidade mรญnima para mudanรงa de faixa com a seta ligada, instrua o openpilot a virar ร  esquerda/direita.</b> Quality of Life - Qualidade de Vida + Qualidade de vida - Miscellaneous features to improve the steering experience. - Recursos diversos para melhorar a experiรชncia de direรงรฃo. + <b>Steering control changes to fine-tune how openpilot drives.</b> + <b>As alteraรงรตes no controle de direรงรฃo ajustam como o openpilot dirige.</b> Pause Steering Below - Pausar Direรงรฃo Abaixo + Pausar direรงรฃo abaixo - Temporarily pause steering control below the set speed. - Pausar temporariamente o controle de direรงรฃo abaixo da velocidade definida. + <b>Pause steering below the set speed.</b> + <b>Pausar a direรงรฃo abaixo da velocidade definida.</b> Instant - Instantรขneo + Instantรขneo second - segundo + segundo seconds - segundos - - - Are you sure you want to completely reset your <b>Actuator Delay</b>? - Tem certeza de que deseja redefinir completamente o <b>Atraso do Atuador</b>? - - - Are you sure you want to completely reset your <b>Friction</b>? - Tem certeza de que deseja redefinir completamente o seu <b>Friction</b>? - - - Are you sure you want to completely reset your <b>Kp Factor</b>? - Tem certeza de que deseja redefinir completamente seu <b>Fator Kp</b>? - - - Are you sure you want to completely reset your <b>Lateral Accel</b>? - Tem certeza de que deseja redefinir completamente seu <b>Lateral Accel</b>? - - - Are you sure you want to completely reset your <b>Steer Ratio</b>? - Tem certeza de que deseja redefinir completamente sua <b>Relaรงรฃo de Direรงรฃo</b>? - - - Off - Desligado - - - foot - pรฉ - - - feet - pรฉs - - - mph - mph - - - meter - metro - - - meters - metros - - - km/h - km/h + segundos Turn Signal Only - Apenas Sinal de Direรงรฃo + Apenas Seta + + + Reset <b>Actuator Delay</b> to its default value? + Redefinir o <b>Atraso do Atuador</b> para o valor padrรฃo? + + + Reset <b>Friction</b> to its default value? + Redefinir <b>Fricรงรฃo</b> para o valor padrรฃo? + + + Reset <b>Kp Factor</b> to its default value? + Redefinir o <b>Fator Kp</b> para o valor padrรฃo? + + + Reset <b>Lateral Accel</b> to its default value? + Redefinir o <b>Acel. Lateral</b> para o valor padrรฃo? + + + Reset <b>Steer Ratio</b> to its default value? + Redefinir o <b>Steer Ratio</b> para o valor padrรฃo? + + + Lateral Accel (Default: %1) + Aceleraรงรฃo Lateral (Padrรฃo: %1) + + + Off + Desligado + + + foot + pรฉ + + + feet + pรฉs + + + mph + mph + + + meter + metro + + + meters + metros + + + km/h + km/h + + + Neural Network Feedforward (NNFF) + Propagaรงรฃo Direta da Rede Neural (NNFF) + + + <b>Twilsonco's "Neural Network FeedForward" model controller for smoother, model-based steering trained on your vehicle's data.</b> + <b>Controlador de modelo "Neural Network FeedForward" de Twilsonco para direรงรฃo mais suave, baseada em modelo, treinado com os dados do seu veรญculo.</b> + + + Smooth Curve Handling + Manuseio Suave de Curvas + + + <b>Twilsonco's torque-based adjustments to smoothen out steering in curves.</b> + <b>Ajustes baseados em torque do Twilsonco para suavizar a direรงรฃo em curvas.</b> FrogPilotLongitudinalPanel - - Conditional Experimental Mode - Modo Experimental Condicional - - - Automatically switch to <b>Experimental Mode</b> when set conditions are met. - Alternar automaticamente para o <b>Modo Experimental</b> quando as condiรงรตes definidas forem atendidas. - - - Below - Abaixo - - - Switch to <b>Experimental Mode</b> when driving below this speed. - Mude para o <b>Modo Experimental</b> ao dirigir abaixo desta velocidade. - - - Curve Detected Ahead - Curva Detectada ร  Frente - - - Switch to <b>Experimental Mode</b> when a curve is detected ahead. Useful for letting the model choose the appropriate speed for the curve. - Mude para o <b>Modo Experimental</b> quando uma curva for detectada ร  frente. รštil para permitir que o modelo escolha a velocidade apropriada para a curva. - - - Lead Detected Ahead - Chumbo Detectado ร  Frente - - - Switch to <b>Experimental Mode</b> when a slower or stopped vehicle is detected ahead. Can improve braking smoothness and reliability on some vehicles. - Mude para o <b>Modo Experimental</b> quando um veรญculo mais lento ou parado for detectado ร  frente. Pode melhorar a suavidade e a confiabilidade da frenagem em alguns veรญculos. - - - Navigation Data - Dados de Navegaรงรฃo - - - Switch to <b>Experimental Mode</b> when approaching intersections or turns on the active route while using <b>Navigate on openpilot (NOO)</b>. Useful for letting the model choose the appropriate speed for upcoming navigation maneuvers. - Mude para o <b>Modo Experimental</b> ao se aproximar de interseรงรตes ou curvas na rota ativa enquanto usa o <b>Navegar no openpilot (NOO)</b>. รštil para permitir que o modelo escolha a velocidade apropriada para as prรณximas manobras de navegaรงรฃo. - - - openpilot Wants to Stop In - openpilot quer parar em - - - Switch to <b>Experimental Mode</b> when openpilot wants to stop within the set amount of time. This is typically triggered by the driving model "detecting" a red light or stop sign. - Mude para o <b>Modo Experimental</b> quando o openpilot quiser parar dentro do tempo definido. Isso รฉ normalmente acionado pelo modelo de direรงรฃo "detectando" um semรกforo vermelho ou placa de pare. - - - Turn Signal Below - Sinal de Direรงรฃo Abaixo - - - Switch to <b>Experimental Mode</b> when using a turn signal below the set speed. Useful for letting the model choose the appropriate speed for upcoming left or right turns. - Mude para o <b>Modo Experimental</b> ao usar a seta abaixo da velocidade definida. รštil para permitir que o modelo escolha a velocidade apropriada para curvas ร  esquerda ou ร  direita que se aproximam. - - - Status Widget - Widget de Status - - - Show the <b>Conditional Experimental Mode</b> status on the driving screen. - Mostrar o status do <b>Modo Experimental Condicional</b> na tela de conduรงรฃo. - - - Show <b>Curve Speed Control</b>'s desired speed on the driving screen. - Mostrar a velocidade desejada do <b>Controle de Velocidade em Curvas</b> na tela de conduรงรฃo. - - - Customize Driving Personalities - Personalizar Personalidades de Conduรงรฃo - - - Customize the personality profiles to your driving style. - Personalize os perfis de personalidade para o seu estilo de direรงรฃo. - - - Traffic Personality - Personalidade de Trรขnsito - - - Customize the <b>Traffic</b> personality profile. Tailored for navigating through traffic. - Personalize o perfil de personalidade de <b>Trรขnsito</b>. Adaptado para navegar pelo trรขnsito. - - - Following Distance - Distรขncia de Seguimento - - - The minimum following distance while in <b>Traffic Mode</b>. openpilot will dynamically adjust between this value and the value in the <b>Aggressive</b> profile based on your current speed. - A distรขncia mรญnima de seguimento enquanto estiver no <b>Modo de Trรกfego</b>. O openpilot ajustarรก dinamicamente entre este valor e o valor no perfil <b>Agressivo</b> com base na sua velocidade atual. - - - Acceleration Sensitivity - Sensibilidade ร  Aceleraรงรฃo - - - How sensitive openpilot is to changes in acceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฃo sensรญvel o openpilot รฉ a mudanรงas na aceleraรงรฃo enquanto estรก no <b>Modo de Trรกfego</b>. Valores mais altos resultam em uma aceleraรงรฃo mais suave e gradual, enquanto valores mais baixos permitem mudanรงas mais rรกpidas e responsivas que podem parecer abruptas. - - - Deceleration Sensitivity - Sensibilidade de Desaceleraรงรฃo - - - How sensitive openpilot is to changes in deceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฃo sensรญvel o openpilot รฉ a mudanรงas na desaceleraรงรฃo enquanto estรก no <b>Modo de Trรกfego</b>. Valores mais altos resultam em uma desaceleraรงรฃo mais suave e gradual, enquanto valores mais baixos permitem mudanรงas mais rรกpidas e responsivas que podem parecer abruptas. - - - Safety Distance Sensitivity - Sensibilidade ร  Distรขncia de Seguranรงa - - - How cautious openpilot is around other vehicles or obstacles while in <b>Traffic Mode</b>. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - Quรฃo cauteloso o openpilot รฉ em relaรงรฃo a outros veรญculos ou obstรกculos enquanto estรก no <b>Modo de Trรกfego</b>. Valores mais altos aumentam as distรขncias de seguimento e priorizam a seguranรงa, levando a uma conduรงรฃo mais cautelosa, enquanto valores mais baixos permitem um seguimento mais prรณximo, mas podem reduzir o tempo de reaรงรฃo. - - - Speed Increase Response - Resposta de Aumento de Velocidade - - - How quickly openpilot increases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฃo rapidamente o openpilot aumenta a velocidade enquanto estรก no <b>Modo de Trรกfego</b>. Valores mais altos garantem mudanรงas de velocidade mais suaves e graduais ao acelerar, enquanto valores mais baixos permitem mudanรงas mais rรกpidas e responsivas que podem parecer abruptas. - - - Speed Decrease Response - Resposta de Diminuiรงรฃo de Velocidade - - - How quickly openpilot decreases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฃo rapidamente o openpilot diminui a velocidade enquanto estรก no <b>Modo de Trรกfego</b>. Valores mais altos garantem mudanรงas de velocidade mais suaves e graduais ao desacelerar, enquanto valores mais baixos permitem mudanรงas mais rรกpidas e responsivas que podem parecer abruptas. - - - Reset Settings - Redefinir Configuraรงรตes - - - Reset <b>Traffic Mode</b> settings to default values. - Redefinir as configuraรงรตes do <b>Modo de Trรกfego</b> para os valores padrรฃo. - - - Aggressive Personality - Personalidade Agressiva - - - Customize the <b>Aggressive</b> personality profile. Designed for a more assertive driving style. - Personalize o perfil de personalidade <b>Agressivo</b>. Projetado para um estilo de direรงรฃo mais assertivo. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Aggressive</b> personality profile.<br><br>Default: 1.25 seconds. - Quantos segundos o openpilot seguirรก atrรกs dos veรญculos ร  frente ao usar o perfil de personalidade <b>Agressivo</b>.<br><br>Padrรฃo: 1,25 segundos. - - - How sensitive openpilot is to changes in acceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฃo sensรญvel o openpilot รฉ a mudanรงas na aceleraรงรฃo ao usar o perfil de personalidade <b>Agressivo</b>. Valores mais altos resultam em uma aceleraรงรฃo mais suave e gradual, enquanto valores mais baixos permitem mudanรงas mais rรกpidas e responsivas que podem parecer abruptas. - - - How sensitive openpilot is to changes in deceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฃo sensรญvel o openpilot รฉ a mudanรงas na desaceleraรงรฃo ao usar o perfil de personalidade <b>Agressivo</b>. Valores mais altos resultam em desaceleraรงรฃo mais suave e gradual, enquanto valores mais baixos permitem mudanรงas mais rรกpidas e responsivas que podem parecer abruptas. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Aggressive</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - Quรฃo cauteloso o openpilot รฉ em relaรงรฃo a outros veรญculos ou obstรกculos ao usar o perfil de personalidade <b>Agressivo</b>. Valores mais altos aumentam as distรขncias de seguimento e priorizam a seguranรงa, levando a uma conduรงรฃo mais cautelosa, enquanto valores mais baixos permitem um seguimento mais prรณximo, mas podem reduzir o tempo de reaรงรฃo. - - - How quickly openpilot increases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฃo rapidamente o openpilot aumenta a velocidade ao usar o perfil de personalidade <b>Agressivo</b>. Valores mais altos garantem mudanรงas de velocidade mais suaves e graduais ao acelerar, enquanto valores mais baixos permitem mudanรงas mais rรกpidas e responsivas que podem parecer abruptas. - - - How quickly openpilot decreases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฃo rapidamente o openpilot diminui a velocidade ao usar o perfil de personalidade <b>Agressivo</b>. Valores mais altos garantem mudanรงas de velocidade mais suaves e graduais ao desacelerar, enquanto valores mais baixos permitem mudanรงas mais rรกpidas e responsivas que podem parecer abruptas. - - - Reset the <b>Aggressive</b> personality profile settings to default values. - Redefina as configuraรงรตes do perfil de personalidade <b>Agressivo</b> para os valores padrรฃo. - - - Standard Personality - Personalidade Padrรฃo - - - Customize the <b>Standard</b> personality profile. Designed for a balanced driving style. - Personalize o perfil de personalidade <b>Padrรฃo</b>. Projetado para um estilo de conduรงรฃo equilibrado. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Standard</b> personality profile.<br><br>Default: 1.45 seconds. - Quantos segundos o openpilot seguirรก atrรกs dos veรญculos ร  frente ao usar o perfil de personalidade <b>Padrรฃo</b>.<br><br>Padrรฃo: 1,45 segundos. - - - How sensitive openpilot is to changes in acceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฃo sensรญvel o openpilot รฉ a mudanรงas na aceleraรงรฃo ao usar o perfil de personalidade <b>Padrรฃo</b>. Valores mais altos resultam em uma aceleraรงรฃo mais suave e gradual, enquanto valores mais baixos permitem mudanรงas mais rรกpidas e responsivas que podem parecer abruptas. - - - How sensitive openpilot is to changes in deceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฃo sensรญvel o openpilot รฉ a mudanรงas na desaceleraรงรฃo ao usar o perfil de personalidade <b>Padrรฃo</b>. Valores mais altos resultam em uma desaceleraรงรฃo mais suave e gradual, enquanto valores mais baixos permitem mudanรงas mais rรกpidas e responsivas que podem parecer abruptas. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Standard</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - Quรฃo cauteloso o openpilot รฉ em relaรงรฃo a outros veรญculos ou obstรกculos ao usar o perfil de personalidade <b>Padrรฃo</b>. Valores mais altos aumentam as distรขncias de seguimento e priorizam a seguranรงa, levando a uma conduรงรฃo mais cautelosa, enquanto valores mais baixos permitem um seguimento mais prรณximo, mas podem reduzir o tempo de reaรงรฃo. - - - How quickly openpilot increases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฃo rapidamente o openpilot aumenta a velocidade ao usar o perfil de personalidade <b>Padrรฃo</b>. Valores mais altos garantem mudanรงas de velocidade mais suaves e graduais ao acelerar, enquanto valores mais baixos permitem mudanรงas mais rรกpidas e responsivas que podem parecer abruptas. - - - How quickly openpilot decreases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฃo rapidamente o openpilot diminui a velocidade ao usar o perfil de personalidade <b>Padrรฃo</b>. Valores mais altos garantem mudanรงas de velocidade mais suaves e graduais ao desacelerar, enquanto valores mais baixos permitem mudanรงas mais rรกpidas e responsivas que podem parecer abruptas. - - - Reset the <b>Standard</b> personality profile settings to default values. - Redefinir as configuraรงรตes do perfil de personalidade <b>Padrรฃo</b> para os valores padrรฃo. - - - Relaxed Personality - Personalidade Relaxada - - - Customize the <b>Relaxed</b> personality profile. Designed for a more laid-back driving style. - Personalize o perfil de personalidade <b>Relaxado</b>. Projetado para um estilo de direรงรฃo mais descontraรญdo. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Relaxed</b> personality profile.<br><br>Default: 1.75 seconds. - Quantos segundos o openpilot seguirรก atrรกs dos veรญculos ร  frente ao usar o perfil de personalidade <b>Relaxado</b>.<br><br>Padrรฃo: 1,75 segundos. - - - How sensitive openpilot is to changes in acceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฃo sensรญvel o openpilot รฉ a mudanรงas na aceleraรงรฃo ao usar o perfil de personalidade <b>Relaxado</b>. Valores mais altos resultam em uma aceleraรงรฃo mais suave e gradual, enquanto valores mais baixos permitem mudanรงas mais rรกpidas e responsivas que podem parecer abruptas. - - - How sensitive openpilot is to changes in deceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฃo sensรญvel o openpilot รฉ a mudanรงas na desaceleraรงรฃo ao usar o perfil de personalidade <b>Relaxado</b>. Valores mais altos resultam em desaceleraรงรฃo mais suave e gradual, enquanto valores mais baixos permitem mudanรงas mais rรกpidas e responsivas que podem parecer abruptas. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Relaxed</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - Quรฃo cauteloso o openpilot รฉ em relaรงรฃo a outros veรญculos ou obstรกculos ao usar o perfil de personalidade <b>Relaxado</b>. Valores mais altos aumentam as distรขncias de seguimento e priorizam a seguranรงa, levando a uma conduรงรฃo mais cautelosa, enquanto valores mais baixos permitem um seguimento mais prรณximo, mas podem reduzir o tempo de reaรงรฃo. - - - How quickly openpilot increases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฃo rapidamente o openpilot aumenta a velocidade ao usar o perfil de personalidade <b>Relaxado</b>. Valores mais altos garantem mudanรงas de velocidade mais suaves e graduais ao acelerar, enquanto valores mais baixos permitem mudanรงas mais rรกpidas e responsivas que podem parecer abruptas. - - - How quickly openpilot decreases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - Quรฃo rapidamente o openpilot diminui a velocidade ao usar o perfil de personalidade <b>Relaxado</b>. Valores mais altos garantem mudanรงas de velocidade mais suaves e graduais ao desacelerar, enquanto valores mais baixos permitem mudanรงas mais rรกpidas e responsivas que podem parecer abruptas. - - - Reset the <b>Relaxed</b> personality profile settings to default values. - Redefina as configuraรงรตes do perfil de personalidade <b>Relaxado</b> para os valores padrรฃo. - - - Longitudinal Tuning - Sintonizaรงรฃo Longitudinal - - - Settings that control how openpilot manages speed and acceleration. - Configuraรงรตes que controlam como o openpilot gerencia a velocidade e a aceleraรงรฃo. - - - Acceleration Profile - Perfil de Aceleraรงรฃo - - - Enable either a sporty or eco-friendly acceleration profile. <b>Sport+</b> aims to make openpilot accelerate as fast as possible! - Habilite um perfil de aceleraรงรฃo esportivo ou ecolรณgico. <b>Sport+</b> visa fazer o openpilot acelerar o mais rรกpido possรญvel! - - - Deceleration Profile - Perfil de Desaceleraรงรฃo - - - Enable either a sporty or eco-friendly deceleration profile. - Habilite um perfil de desaceleraรงรฃo esportivo ou ecolรณgico. - - - Human-Like Acceleration - Aceleraรงรฃo Semelhante ร  Humana - - - Use the lead vehicle's acceleration rate when at a takeoff and ramp off the acceleration rate when approaching the maximum set speed for a more "human-like" driving experience. - Use a taxa de aceleraรงรฃo do veรญculo lรญder ao decolar e reduza a taxa de aceleraรงรฃo ao se aproximar da velocidade mรกxima definida para uma experiรชncia de conduรงรฃo mais "humana". - - - Human-Like Approach Behind Leads - Abordagem Semelhante ร  Humana por Trรกs dos Leads - - - Dynamically adjust the desired following distance when approaching slower or stopped vehicles for a more "human-like" driving experience. - Ajuste dinamicamente a distรขncia de seguimento desejada ao se aproximar de veรญculos mais lentos ou parados para uma experiรชncia de conduรงรฃo mais "humana". - - - Lead Detection Confidence - Confianรงa na Detecรงรฃo de Leads - - - How sensitive openpilot is to detecting vehicles ahead. A lower value can help detect vehicles sooner and from farther away, but increases the chance openpilot mistakes other objects for vehicles. - Quรฃo sensรญvel o openpilot รฉ para detectar veรญculos ร  frente. Um valor mais baixo pode ajudar a detectar veรญculos mais cedo e de mais longe, mas aumenta a chance de o openpilot confundir outros objetos com veรญculos. - - - Maximum Acceleration Rate - Taxa Mรกxima de Aceleraรงรฃo - - - Set a cap on how fast openpilot can accelerate. - Defina um limite para a velocidade com que o openpilot pode acelerar. - - - "Taco Bell Run" Turn Speed Hack - Hack de Velocidade de Virada "Taco Bell Run" - - - The turn speed hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to slow down when taking left/right turns for smoother turns. - O hack de velocidade de curva do "Taco Bell Run" de 2022 da comma. Projetado para desacelerar ao fazer curvas ร  esquerda/direita para curvas mais suaves. - - - Quality of Life - Qualidade de Vida - - - Miscellaneous features to improve the acceleration and braking experience. - Recursos diversos para melhorar a experiรชncia de aceleraรงรฃo e frenagem. - - - Cruise Interval - Intervalo de Cruzeiro - - - The interval used when changing the cruise control speed. - O intervalo usado ao alterar a velocidade do controle de cruzeiro. - - - Cruise Interval (Long Press) - Intervalo de Cruzeiro (Pressรฃo Longa) - - - The interval used when changing the cruise control speed while holding down the button for 0.5+ seconds. - O intervalo usado ao alterar a velocidade do controle de cruzeiro enquanto mantรฉm o botรฃo pressionado por mais de 0,5 segundos. - - - Force Keep openpilot in the Standstill State - Forรงar manter o openpilot no estado de parada - - - Keep openpilot in the standstill state until either the gas pedal or <b>resume</b> button is pressed. - Mantenha o openpilot no estado de parada atรฉ que o pedal do acelerador ou o botรฃo <b>retomar</b> seja pressionado. - - - Force Stop for "Detected" Stop Lights/Signs - Parada Forรงada para Sinais/Placas de Parada "Detectados" - - - Force a stop whenever openpilot <b>detects</b> a potential red light/stop sign to prevent it from running the red light/stop sign. - Force uma parada sempre que o openpilot <b>detectar</b> um potencial semรกforo vermelho/placa de pare para evitar que ele ultrapasse o semรกforo vermelho/placa de pare. - - - Increase Stopped Distance - Aumentar Distรขncia Parada - - - Increase the distance openpilot stops behind vehicles. - Aumente a distรขncia que o openpilot para atrรกs dos veรญculos. - - - Set Speed Offset - Definir Deslocamento de Velocidade - - - How much higher or lower the set speed should be compared to your current set speed. For example, if you prefer to drive 5 mph above the speed limit, this setting will automatically add that difference when you adjust your set speed. - Quรฃo mais alta ou mais baixa a velocidade definida deve ser em comparaรงรฃo com a sua velocidade atual definida. Por exemplo, se vocรช prefere dirigir 5 mph acima do limite de velocidade, essa configuraรงรฃo adicionarรก automaticamente essa diferenรงa quando vocรช ajustar sua velocidade definida. - - - Map Accel/Decel to Gears - Mapear Aceleraรงรฃo/Desaceleraรงรฃo para Marchas - - - Map the acceleration and deceleration profiles to your car's <b>Eco</b> or <b>Sport</b> gear modes. - Mapeie os perfis de aceleraรงรฃo e desaceleraรงรฃo para os modos de marcha <b>Eco</b> ou <b>Sport</b> do seu carro. - - - Reverse Cruise Increase - Reverter Aumento de Cruzeiro - - - Reverse the <b>long press</b> cruise increase feature to increase the max speed by 5 instead of 1 on short presses. - Inverta o recurso de aumento de cruzeiro de <b>pressรฃo longa</b> para aumentar a velocidade mรกxima em 5 em vez de 1 em pressรตes curtas. - - - Speed Limit Controller - Controlador de Limite de Velocidade - - - Limit openpilot's maximum driving speed based on data from downloaded maps, <b>Mapbox</b>, <b>Navigate on openpilot</b>, or the dashboard (supported vehicles: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - Limitar a velocidade mรกxima de conduรงรฃo do openpilot com base em dados de mapas baixados, <b>Mapbox</b>, <b>Navigate on openpilot</b>, ou no painel (veรญculos suportados: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - - - Fallback Speed - Velocidade de Retorno - - - The speed limit source when no speed limit data is available. - A fonte do limite de velocidade quando nรฃo hรก dados de limite de velocidade disponรญveis. - - - Override Speed - Substituir Velocidade - - - The speed openpilot uses after manually exceeding the posted speed limit.<br><br><b>- Set With Gas Pedal</b>: Uses the speed obtained while pressing the gas<br><b>- Max Set Speed</b>: Uses the cruise control set speed<br><br>Overrides clear upon disengagement. - A velocidade que o openpilot usa apรณs exceder manualmente o limite de velocidade postado.<br><br><b>- Definir com o Pedal do Acelerador</b>: Usa a velocidade obtida enquanto pressiona o acelerador<br><b>- Velocidade Mรกxima Definida</b>: Usa a velocidade definida pelo controle de cruzeiro<br><br>Substituiรงรตes sรฃo limpas ao desengatar. - - - Miscellaneous features to improve the <b>Speed Limit Controller</b> experience. - Recursos diversos para melhorar a experiรชncia do <b>Controlador de Limite de Velocidade</b>. - - - Confirm New Speed Limits - Confirmar novos limites de velocidade - - - Require confirmation before applying new speed limits. To accept, use the flashing widget on the driving screen or press the <b>Cruise Increase</b> button. To deny, press the <b>Cruise Decrease</b> button or simply ignore the prompt for 30 seconds. - Exigir confirmaรงรฃo antes de aplicar novos limites de velocidade. Para aceitar, use o widget piscante na tela de conduรงรฃo ou pressione o botรฃo <b>Aumentar Cruzeiro</b>. Para negar, pressione o botรฃo <b>Diminuir Cruzeiro</b> ou simplesmente ignore o aviso por 30 segundos. - - - Force MPH Readings from Dashboard - Forรงar leituras de MPH no painel - - - Force dashboard speed limit readings to be in mph. - Forรงar leituras de limite de velocidade do painel para serem em mph. - - - Higher Limit Lookahead Time - Tempo de Antecipaรงรฃo do Limite Superior - - - How far ahead openpilot anticipates upcoming higher speed limits from the downloaded map data. - Com que antecedรชncia o openpilot antecipa limites de velocidade mais altos a partir dos dados do mapa baixado. - - - Lower Limit Lookahead Time - Tempo de Antecipaรงรฃo do Limite Inferior - - - How far ahead openpilot anticipates upcoming lower speed limits from the downloaded map data. - Com quanta antecedรชncia o openpilot antecipa limites de velocidade mais baixos a partir dos dados de mapa baixados. - - - Match Speed Limit on Engage - Igualar Limite de Velocidade ao Engajar - - - Automatically set cruise control speed to match the current speed limit when first enabling openpilot. - Defina automaticamente a velocidade do controle de cruzeiro para corresponder ao limite de velocidade atual ao ativar o openpilot pela primeira vez. - - - Use Mapbox as Fallback - Use Mapbox como Fallback - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - Use os dados de limite de velocidade do <b>Mapbox</b> quando nenhuma outra fonte estiver disponรญvel. - - - Speed Limit Source Priority - Prioridade da Fonte de Limite de Velocidade - - - Define the priority order for speed limit sources (<b>Dashboard</b>, <b>Map Data</b>, <b>Navigation</b>). Higher-priority sources override lower ones when multiple limits are detected. - Defina a ordem de prioridade para as fontes de limite de velocidade (<b>Painel</b>, <b>Dados do Mapa</b>, <b>Navegaรงรฃo</b>). Fontes de maior prioridade substituem as de menor prioridade quando mรบltiplos limites sรฃo detectados. - - - Speed Limit Offsets - Deslocamentos de Limite de Velocidade - - - Offsets relative to the posted speed limit for a more "human-like" driving experience. - Desvios relativos ao limite de velocidade estabelecido para uma experiรชncia de direรงรฃo mais "humana". - - - Target speed offset applied for posted limits between 0 and 24 mph. - Deslocamento de velocidade alvo aplicado para limites postados entre 0 e 24 mph. - - - Target speed offset applied for posted limits between 25 and 34 mph. - Deslocamento de velocidade alvo aplicado para limites postados entre 25 e 34 mph. - - - Target speed offset applied for posted limits between 35 and 44 mph. - Deslocamento de velocidade alvo aplicado para limites postados entre 35 e 44 mph. - - - Target speed offset applied for posted limits between 45 and 54 mph. - Deslocamento de velocidade alvo aplicado para limites postados entre 45 e 54 mph. - - - Target speed offset applied for posted limits between 55 and 64 mph. - Deslocamento de velocidade alvo aplicado para limites postados entre 55 e 64 mph. - - - Target speed offset applied for posted limits between 65 and 74 mph. - Deslocamento de velocidade alvo aplicado para limites postados entre 65 e 74 mph. - - - Target speed offset applied for posted limits between 75 and 99 mph. - Deslocamento de velocidade alvo aplicado para limites postados entre 75 e 99 mph. - - - Visual Settings - Configuraรงรตes Visuais - - - Visual features to improve the <b>Speed Limit Controller</b> experience. - Recursos visuais para melhorar a experiรชncia do <b>Controlador de Limite de Velocidade</b>. - - - Show Speed Limit Offset - Mostrar Deslocamento do Limite de Velocidade - - - Display the speed limit offset separately on the driving screen. - Exibir o desvio do limite de velocidade separadamente na tela de conduรงรฃo. - - - Show Speed Limit Sources - Mostrar Fontes do Limite de Velocidade - - - Display the speed limit sources on the driving screen. - Exibir as fontes do limite de velocidade na tela de conduรงรฃo. - - - seconds - segundos - - - m/sยฒ - m/sยฒ - - - mph - mph - - - With Lead - Com Chumbo - - - Switch to <b>Experimental Mode</b> when driving below this speed with a lead. - Mude para o <b>Modo Experimental</b> ao dirigir abaixo dessa velocidade com um lรญder. - - - Slower Lead - Lideranรงa mais lenta - - - Stopped Lead - Lead interrompido - - - Intersections - Interseรงรตes - - - Turns - Viraรงรตes - - - Off - Desligado - - - second - segundo - - - RESET - REDEFINIR - - - Standard - Padrรฃo - - - Eco - Eco - - - Sport - Esporte - - - Sport+ - Translation A - - - feet - pรฉs - - - Acceleration - Aceleraรงรฃo - - - Deceleration - Desaceleraรงรฃo - - - Set Speed - Definir Velocidade - - - Experimental Mode - Modo Experimental - - - Previous Limit - Limite Anterior - - - None - Nenhum - - - Set With Gas Pedal - Configurar com pedal do acelerador - - - Max Set Speed - Velocidade Mรกxima Configurada - - - SELECT - SELECT - - - Dashboard - Painel de Controle - - - Map Data - Dados do Mapa - - - Navigation - Navegaรงรฃo - - - Highest - Mais alto - - - Lowest - Mais baixo - - - Select your primary priority - Selecione sua prioridade principal - - - Select your secondary priority - Selecione sua prioridade secundรกria - - - Select your tertiary priority - Selecione sua prioridade terciรกria - - - MANAGE - GERENCIAR - - - Lower Limits - Limites Inferiores - - - Higher Limits - Limites Maiores - - - Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? - Tem certeza de que deseja redefinir completamente suas configuraรงรตes para o <b>Modo de Trรกfego</b>? - - - Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? - Tem certeza de que deseja redefinir completamente suas configuraรงรตes para a personalidade <b>Agressiva</b>? - - - Are you sure you want to completely reset your settings for the <b>Standard</b> personality? - Tem certeza de que deseja redefinir completamente suas configuraรงรตes para a personalidade <b>Padrรฃo</b>? - - - Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? - Tem certeza de que deseja redefinir completamente suas configuraรงรตes para a personalidade <b>Relaxada</b>? - - - foot - pรฉ - - - meter - medidor - - - meters - metros - - - km/h - km/h - - - Target speed offset applied for posted limits between 0 and 29 km/h. - Deslocamento de velocidade alvo aplicado para limites postados entre 0 e 29 km/h. - - - Target speed offset applied for posted limits between 30 and 49 km/h. - Deslocamento de velocidade alvo aplicado para limites postados entre 30 e 49 km/h. - - - Target speed offset applied for posted limits between 50 and 59 km/h. - Deslocamento de velocidade alvo aplicado para limites postados entre 50 e 59 km/h. - - - Target speed offset applied for posted limits between 60 and 79 km/h. - Deslocamento de velocidade alvo aplicado para limites postados entre 60 e 79 km/h. - - - Target speed offset applied for posted limits between 80 and 99 km/h. - Deslocamento de velocidade alvo aplicado para limites postados entre 80 e 99 km/h. - - - Target speed offset applied for posted limits between 100 and 119 km/h. - Deslocamento de velocidade alvo aplicado para limites postados entre 100 e 119 km/h. - - - Target speed offset applied for posted limits between 120 and 140 km/h. - Deslocamento de velocidade alvo aplicado para limites postados entre 120 e 140 km/h. - Advanced Longitudinal Tuning - Ajuste Longitudinal Avanรงado + Ajuste Longitudinal Avanรงado - Advanced settings for customizing how openpilot handles acceleration and braking. - Configuraรงรตes avanรงadas para personalizar como o openpilot lida com aceleraรงรฃo e frenagem. + <b>Advanced acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Alteraรงรตes avanรงadas no controle de aceleraรงรฃo e frenagem</b> para ajustar como o openpilot dirige. Actuator Delay (Default: %1) - Atraso do Atuador (Padrรฃo: %1) + Atraso do Atuador (Padrรฃo: %1) Actuator Delay - Atraso do Atuador + Atraso do Atuador - Delay before throttle or brake takes effect. Higher values smooth slow actuators but can feel laggy; lower values react quicker but may overshoot. - Atraso antes que o acelerador ou freio entre em efeito. Valores mais altos suavizam atuadores lentos, mas podem parecer lentos; valores mais baixos reagem mais rรกpido, mas podem ultrapassar. + <b>The time between openpilot's throttle or brake command and the vehicle's response.</b> Increase if the vehicle feels slow to react; decrease if it feels too eager or overshoots. + <b>O tempo entre o comando de acelerador ou freio do openpilot e a resposta do veรญculo.</b> Aumente se o veรญculo parecer lento para reagir; diminua se parecer muito agressivo ou ultrapassar o alvo.</b> Start Acceleration (Default: %1) - Iniciar Aceleraรงรฃo (Padrรฃo: %1) + Iniciar aceleraรงรฃo (Padrรฃo: %1) Start Acceleration - Iniciar Aceleraรงรฃo + Iniciar aceleraรงรฃo - Extra acceleration applied when pulling away from a stop. Increase for snappier launches at the cost of smoothness; decrease for gentler starts. - Aceleraรงรฃo extra aplicada ao arrancar de uma parada. Aumente para partidas mais rรกpidas ร  custa de suavidade; diminua para inรญcios mais suaves. + <b>Extra acceleration applied when starting from a stop.</b> Increase for quicker takeoffs; decrease for smoother, gentler starts. + <b>Aceleraรงรฃo extra aplicada ao iniciar a partir de uma parada.</b> Aumente para arrancadas mais rรกpidas; diminua para partidas mais suaves e gentis. Start Speed (Default: %1) - Velocidade Inicial (Padrรฃo: %1) + Velocidade Inicial (Padrรฃo: %1) Start Speed - Iniciar Velocidade + Velocidade inicial - Speed where openpilot begins to exit the stopped state. Higher values avoid creeping but may feel sluggish; lower values move sooner but risk creeping. - Velocidade em que o openpilot comeรงa a sair do estado parado. Valores mais altos evitam o avanรงo lento, mas podem parecer lentos; valores mais baixos se movem mais cedo, mas correm o risco de avanรงar lentamente. + <b>The speed at which openpilot exits the stopped state.</b> Increase to reduce creeping; decrease to move sooner after stopping. + <b>A velocidade na qual o openpilot sai do estado parado.</b> Aumente para reduzir o creeping; diminua para avanรงar mais cedo apรณs parar. Stop Acceleration (Default: %1) - Parar Aceleraรงรฃo (Padrรฃo: %1) + Parar Aceleraรงรฃo (Padrรฃo: %1) Stop Acceleration - Parar Aceleraรงรฃo + Parar Aceleraรงรฃo - Brake force applied to hold the vehicle still. Larger values prevent creeping on hills but might jerk to a stop. Smaller values can feel smoother but may allow rolling. - Forรงa de frenagem aplicada para manter o veรญculo parado. Valores maiores evitam que o veรญculo deslize em colinas, mas podem causar uma parada brusca. Valores menores podem proporcionar uma sensaรงรฃo mais suave, mas podem permitir que o veรญculo role. + <b>Brake force applied to hold the vehicle at a standstill.</b> Increase to prevent rolling on hills; decrease for smoother, softer stops. + <b>Forรงa de frenagem aplicada para manter o veรญculo parado.</b> Aumente para evitar que role em aclives; diminua para paradas mais suaves e macias. Stopping Rate (Default: %1) - Taxa de Parada (Padrรฃo: %1) + Taxa de Parada (Padrรฃo: %1) Stopping Rate - Taxa de Parada + Taxa de Parada - How quickly braking ramps up when stopping. Faster rates shorten stopping distance but can be harsh; slower rates are smoother but need more room. - Quรฃo rapidamente a frenagem aumenta ao parar. Taxas mais rรกpidas encurtam a distรขncia de parada, mas podem ser bruscas; taxas mais lentas sรฃo mais suaves, mas precisam de mais espaรงo. + <b>How quickly braking ramps up when stopping.</b> Increase for shorter, firmer stops; decrease for smoother, longer stops. + <b>Quรฃo rapidamente a frenagem aumenta ao parar.</b> Aumente para paradas mais curtas e firmes; diminua para paradas mais suaves e longas. Stop Speed (Default: %1) - Parar Velocidade (Padrรฃo: %1) + Velocidade de parada (Padrรฃo: %1) Stop Speed - Parar Velocidade + Velocidade de parada - Speed where openpilot beings to enter the stopped state. Higher values brake earlier for smoother stops but might stop too soon; lower values wait longer and can overshoot. - Velocidade em que o openpilot comeรงa a entrar no estado de parada. Valores mais altos freiam mais cedo para paradas mais suaves, mas podem parar muito cedo; valores mais baixos esperam mais e podem ultrapassar. + <b>The speed at which openpilot considers the vehicle stopped.</b> Increase to brake earlier and stop smoothly; decrease to wait longer but risk overshooting. + <b>A velocidade na qual o openpilot considera o veรญculo parado.</b> Aumente para frear mais cedo e parar suavemente; diminua para esperar mais, mas com risco de ultrapassar o ponto. + + + Conditional Experimental Mode + Modo Experimental Condicional + + + <b>Automatically switch to "Experimental Mode" when set conditions are met.</b> Allows the model to handle challenging situations with smarter decision making. + <b>Alternar automaticamente para o โ€œModo Experimentalโ€ quando as condiรงรตes definidas forem atendidas.</b> Permite ao modelo lidar com situaรงรตes desafiadoras com uma tomada de decisรฃo mais inteligente. + + + Below + Abaixo + + + <b>Switch to "Experimental Mode" when driving below this speed without a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>Ative o "Modo Experimental" ao dirigir abaixo desta velocidade sem um lรญder</b> para ajudar o openpilot a lidar com situaรงรตes de baixa velocidade com mais suavidade. + + + Curve Detected Ahead + Curva detectada ร  frente + + + <b>Switch to "Experimental Mode" when a curve is detected</b> to allow the model to set an appropriate speed for the curve. + <b>Alternar para o "Modo Experimental" quando uma curva for detectada</b> para permitir que o modelo defina uma velocidade apropriada para a curva. + + + Lead Detected Ahead + Veรญculo ร  frente detectado + + + <b>Switch to "Experimental Mode" when a slower or stopped vehicle is detected.</b> Can make braking smoother and more reliable on some vehicles. + <b>Alterne para o โ€œModo Experimentalโ€ quando um veรญculo mais lento ou parado for detectado.</b> Pode tornar a frenagem mais suave e mais confiรกvel em alguns veรญculos. + + + Navigation-Based + Baseado em navegaรงรฃo + + + <b>Switch to "Experimental Mode" when approaching intersections or turns on the active route</b> while using "Navigate on openpilot" (NOO) to allow the model to set an appropriate speed for upcoming maneuvers. + <b>Alterne para "Modo Experimental" ao se aproximar de cruzamentos ou curvas na rota ativa</b> ao usar o "Navigate on openpilot" (NOO) para permitir que o modelo defina uma velocidade apropriada para as prรณximas manobras. + + + Predicted Stop In + Parada prevista em + + + <b>Switch to "Experimental Mode" when openpilot predicts a stop within the set time.</b> This is usually triggered when the model "sees" a red light or stop sign ahead.<br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>Troque para o "Modo Experimental" quando o openpilot prever uma parada dentro do tempo definido.</b> Isso geralmente รฉ acionado quando o modelo "vรช" um semรกforo vermelho ou uma placa de pare ร  frente.<br><br><i><b>Aviso legal</b>: o openpilot nรฃo detecta explicitamente semรกforos ou placas de pare. No "Modo Experimental", o openpilot toma decisรตes de direรงรฃo de ponta a ponta a partir da entrada da cรขmera, o que significa que pode parar mesmo quando nรฃo hรก um motivo claro.</i> + + + Turn Signal Below + Seta abaixo + + + <b>Switch to "Experimental Mode" when using a turn signal below the set speed</b> to allow the model to choose an appropriate speed for smoother left and right turns. + <b>Alterne para o "Modo Experimental" ao usar a seta abaixo da velocidade definida</b> para permitir que o modelo escolha uma velocidade adequada para curvas ร  esquerda e ร  direita mais suaves. + + + Status Widget + Widget de status + + + <b>Show which condition triggered "Experimental Mode"</b> on the driving screen. + <b>Mostrar qual condiรงรฃo acionou o "Modo Experimental"</b> na tela de conduรงรฃo. + + + Curve Speed Controller + Controlador de Velocidade em Curvas + + + <b>Automatically slow down for upcoming curves</b> using data learned from your driving style, adapting to curves as you would. + <b>Desacelere automaticamente para curvas ร  frente</b> usando dados aprendidos do seu estilo de conduรงรฃo, adaptando-se ร s curvas como vocรช faria. + + + Calibrated Lateral Acceleration + Aceleraรงรฃo Lateral Calibrada + + + <b>The learned lateral acceleration from collected driving data.</b> This sets how fast openpilot will take curves. Higher values allow faster cornering; lower values slow the vehicle for gentler turns. + <b>A aceleraรงรฃo lateral aprendida a partir dos dados coletados de conduรงรฃo.</b> Isso define a velocidade com que o openpilot farรก curvas. Valores mais altos permitem contornar curvas mais rรกpido; valores mais baixos desaceleram o veรญculo para curvas mais suaves. + + + Calibration Progress + Progresso da calibraรงรฃo + + + <b>How much curve data has been collected.</b> This is a progress meter; it is normal for the value to stay low and rarely reach 100%. + <b>Quanto de dados de curvas foi coletado.</b> Este รฉ um medidor de progresso; รฉ normal que o valor permaneรงa baixo e raramente atinja 100%. + + + Reset Curve Data + Redefinir Dados da Curva + + + <b>Reset collected user data for "Curve Speed Controller".</b> + <b>Redefinir os dados de usuรกrio coletados para "Curve Speed Controller".</b> + + + <b>Show the "Curve Speed Controller" target speed on the driving screen.</b> + <b>Mostrar a velocidade alvo do "Curve Speed Controller" na tela de conduรงรฃo.</b> + + + Driving Personalities + Personalidades de Conduรงรฃo + + + <b>Customize the "Driving Personalities"</b> to better match your driving style. + <b>Personalize as "Personalidades de Conduรงรฃo"</b> para combinar melhor com seu estilo de dirigir. + + + Traffic Mode + Modo de Trรขnsito + + + <b>Customize the "Traffic Mode" personality profile.</b> Designed for stop-and-go driving. + <b>Personalize o perfil de personalidade "Modo de Trรกfego".</b> Projetado para trรขnsito para e anda. + + + Following Distance + Distรขncia de Seguimento + + + <b>The minimum following distance to the lead vehicle in "Traffic Mode".</b> openpilot blends between this value and the "Aggressive" profile as speed increases. Increase for more space; decrease for tighter gaps. + <b>A distรขncia mรญnima atรฉ o veรญculo ร  frente no โ€œModo Trรขnsitoโ€.</b> O openpilot alterna entre este valor e o perfil โ€œAgressivoโ€ conforme a velocidade aumenta. Aumente para mais espaรงo; diminua para intervalos menores. + + + Acceleration Smoothness + Suavidade da Aceleraรงรฃo + + + <b>How smoothly openpilot accelerates in "Traffic Mode".</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Quรฃo suavemente o openpilot acelera no โ€œModo Trรขnsitoโ€.</b> Aumente para partidas mais suaves; diminua para saรญdas mais rรกpidas porรฉm mais abruptas. + + + Braking Smoothness + Suavidade da Frenagem + + + <b>How smoothly openpilot brakes in "Traffic Mode".</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>Quรฃo suavemente o openpilot freia no โ€œModo Trรกfegoโ€.</b> Aumente para paradas mais suaves; diminua para frenagens mais rรกpidas porรฉm mais bruscas. + + + Safety Gap Bias + Viรฉs do Intervalo de Seguranรงa + + + <b>How much extra space openpilot keeps from the vehicle ahead in "Traffic Mode".</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Quanto espaรงo extra o openpilot mantรฉm do veรญculo ร  frente no โ€œModo Trรกfegoโ€.</b> Aumente para lacunas maiores e conduรงรฃo mais cautelosa; diminua para lacunas menores e acompanhamento mais prรณximo. + + + Slowdown Response + Resposta de Reduรงรฃo de Velocidade + + + <b>How smoothly openpilot slows down in "Traffic Mode".</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Quรฃo suavemente o openpilot reduz a velocidade no โ€œModo Trรขnsitoโ€.</b> Aumente para uma desaceleraรงรฃo mais gradual; diminua para reduรงรตes mais rรกpidas porรฉm mais bruscas. + + + Speed-Up Response + Acelerar Resposta + + + <b>How smoothly openpilot speeds up in "Traffic Mode".</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Quรฃo suavemente o openpilot acelera no โ€œModo Trรขnsitoโ€.</b> Aumente para uma aceleraรงรฃo mais gradual; diminua para uma aceleraรงรฃo mais rรกpida, porรฉm mais brusca. + + + Reset to Defaults + Restaurar para os padrรตes + + + <b>Reset "Traffic Mode" settings to defaults.</b> + <b>Redefinir as configuraรงรตes de "Modo de Trรกfego" para o padrรฃo.</b> + + + Aggressive + Agressivo + + + <b>Customize the "Aggressive" personality profile.</b> Designed for assertive driving with tighter gaps. + <b>Personalize o perfil de personalidade "Agressivo".</b> Projetado para conduรงรฃo assertiva com espaรงamentos mais estreitos. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Aggressive" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.25 seconds. + <b>Quantos segundos o openpilot segue atrรกs de veรญculos ร  frente ao usar o perfil "Aggressive".</b> Aumente para mais espaรงo; diminua para intervalos menores.<br><br>Padrรฃo: 1,25 segundos. + + + <b>How smoothly openpilot accelerates with the "Aggressive" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Quรฃo suavemente o openpilot acelera com o perfil "Agressivo".</b> Aumente para partidas mais suaves; diminua para saรญdas mais rรกpidas porรฉm mais bruscas. + + + <b>How smoothly openpilot brakes with the "Aggressive" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>Quรฃo suavemente o openpilot freia com o perfil "Agressivo".</b> Aumente para paradas mais suaves; diminua para frenagens mais rรกpidas, porรฉm mais bruscas. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Aggressive" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Quanto espaรงo extra o openpilot mantรฉm do veรญculo ร  frente com o perfil "Agressivo".</b> Aumente para lacunas maiores e acompanhamento mais cauteloso; diminua para lacunas mais estreitas e acompanhamento mais prรณximo. + + + <b>How smoothly openpilot slows down with the "Aggressive" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Quรฃo suavemente o openpilot desacelera com o perfil "Agressivo".</b> Aumente para uma desaceleraรงรฃo mais gradual; diminua para reduรงรตes de velocidade mais rรกpidas porรฉm mais bruscas. + + + <b>How smoothly openpilot speeds up with the "Aggressive" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Quรฃo suavemente o openpilot acelera com o perfil "Agressivo".</b> Aumente para uma aceleraรงรฃo mais gradual; diminua para uma aceleraรงรฃo mais rรกpida, porรฉm mais brusca. + + + <b>Reset the "Aggressive" profile to defaults.</b> + <b>Redefinir o perfil "Agressivo" para os padrรตes.</b> + + + Standard + Padrรฃo + + + <b>Customize the "Standard" personality profile.</b> Designed for balanced driving with moderate gaps. + <b>Personalize o perfil de personalidade "Padrรฃo".</b> Projetado para conduรงรฃo equilibrada com espaรงamentos moderados. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Standard" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.45 seconds. + <b>Quantos segundos o openpilot mantรฉm atrรกs de veรญculos ร  frente ao usar o perfil "Padrรฃo".</b> Aumente para mais espaรงo; diminua para gaps menores.<br><br>Padrรฃo: 1,45 segundos. + + + <b>How smoothly openpilot accelerates with the "Standard" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Quรฃo suavemente o openpilot acelera com o perfil "Padrรฃo".</b> Aumente para partidas mais suaves; diminua para arrancadas mais rรกpidas porรฉm mais bruscas. + + + <b>How smoothly openpilot brakes with the "Standard" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>Quรฃo suavemente o openpilot freia com o perfil "Padrรฃo".</b> Aumente para paradas mais suaves; diminua para frenagens mais rรกpidas porรฉm mais bruscas. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Standard" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Quanto espaรงo extra o openpilot mantรฉm do veรญculo ร  frente com o perfil "Padrรฃo".</b> Aumente para aberturas maiores e conduรงรฃo mais cautelosa; diminua para aberturas menores e seguimento mais prรณximo. + + + <b>How smoothly openpilot slows down with the "Standard" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Quรฃo suavemente o openpilot desacelera com o perfil "Padrรฃo".</b> Aumente para uma desaceleraรงรฃo mais gradual; diminua para reduรงรตes de velocidade mais rรกpidas porรฉm mais bruscas. + + + <b>How smoothly openpilot speeds up with the "Standard" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Com que suavidade o openpilot acelera com o perfil "Padrรฃo".</b> Aumente para uma aceleraรงรฃo mais gradual; diminua para uma aceleraรงรฃo mais rรกpida, porรฉm mais brusca. + + + <b>Reset the "Standard" profile to defaults.</b> + <b>Redefinir o perfil "Padrรฃo" para os padrรตes.</b> + + + Relaxed + Relaxado + + + <b>Customize the "Relaxed" personality profile.</b> Designed for smoother, more comfortable driving with larger gaps. + <b>Personalize o perfil de personalidade "Relaxado".</b> Projetado para uma conduรงรฃo mais suave e confortรกvel, com espaรงamentos maiores. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Relaxed" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.75 seconds. + <b>Quantos segundos o openpilot segue atrรกs dos veรญculos ร  frente ao usar o perfil "Relaxado".</b> Aumente para mais espaรงo; diminua para lacunas menores.<br><br>Padrรฃo: 1,75 segundos. + + + <b>How smoothly openpilot accelerates with the "Relaxed" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>Quรฃo suavemente o openpilot acelera com o perfil "Relaxado".</b> Aumente para partidas mais suaves; diminua para arranques mais rรกpidos porรฉm mais bruscos. + + + <b>How smoothly openpilot brakes with the "Relaxed" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>Quรฃo suavemente o openpilot freia com o perfil "Relaxed".</b> Aumente para paradas mais suaves; diminua para frenagens mais rรกpidas, porรฉm mais bruscas. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Relaxed" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>Quanto espaรงo extra o openpilot mantรฉm do veรญculo ร  frente com o perfil "Relaxed".</b> Aumente para lacunas maiores e conduรงรฃo mais cautelosa; diminua para lacunas menores e acompanhamento mais prรณximo. + + + <b>How smoothly openpilot slows down with the "Relaxed" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>Quรฃo suavemente o openpilot desacelera com o perfil "Relaxado".</b> Aumente para uma desaceleraรงรฃo mais gradual; diminua para desaceleraรงรตes mais rรกpidas, porรฉm mais bruscas. + + + <b>How smoothly openpilot speeds up with the "Relaxed" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>Quรฃo suavemente o openpilot acelera com o perfil "Relaxado".</b> Aumente para uma aceleraรงรฃo mais gradual; diminua para uma aceleraรงรฃo mais rรกpida, porรฉm mais brusca. + + + <b>Reset the "Relaxed" profile to defaults.</b> + <b>Redefina o perfil "Relaxado" para os padrรตes.</b> + + + Longitudinal Tuning + Ajuste Longitudinal + + + <b>Acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Alteraรงรตes no controle de aceleraรงรฃo e frenagem</b> para ajustar como o openpilot dirige. + + + Acceleration Profile + Perfil de Aceleraรงรฃo + + + <b>How quickly openpilot speeds up.</b> "Eco" is gentle and efficient, "Sport" is firmer and more responsive, and "Sport+" accelerates at the maximum rate allowed. + <b>Quรฃo rapidamente o openpilot acelera.</b> โ€œEcoโ€ รฉ suave e eficiente, โ€œSportโ€ รฉ mais firme e responsivo, e โ€œSport+โ€ acelera na taxa mรกxima permitida. + + + Deceleration Profile + Perfil de Desaceleraรงรฃo + + + <b>How firmly openpilot slows down.</b> "Eco" favors coasting, "Sport" applies stronger braking. + <b>Quรฃo firmemente o openpilot desacelera.</b> "Eco" favorece a rolagem, "Sport" aplica frenagem mais forte. + + + Human-Like Acceleration + Aceleraรงรฃo Semelhante ร  Humana + + + <b>Acceleration that mimics human behavior</b> by easing the throttle at low speeds and adding extra power when taking off from a stop. + <b>Aceleraรงรฃo que imita o comportamento humano</b>, aliviando o acelerador em baixas velocidades e adicionando potรชncia extra ao sair da imobilidade. + + + Human-Like Following + Acompanhamento semelhanยญte ao humano + + + Lead Detection Sensitivity + Sensibilidade de Detecรงรฃo do Veรญculo ร  Frente + + + <b>How sensitive openpilot is to detecting vehicles.</b> Higher sensitivity allows quicker detection at longer distances but may react to non-vehicle objects; lower sensitivity is more conservative and reduces false detections. + <b>Quรฃo sensรญvel o openpilot รฉ para detectar veรญculos.</b> Maior sensibilidade permite detecรงรฃo mais rรกpida a longas distรขncias, mas pode reagir a objetos que nรฃo sรฃo veรญculos; menor sensibilidade รฉ mais conservadora e reduz falsos detectores. + + + Maximum Acceleration + Aceleraรงรฃo Mรกxima + + + <b>Limit the strongest acceleration</b> openpilot can command. + <b>Limitar a aceleraรงรฃo mais forte</b> que o openpilot pode comandar. + + + "Taco Bell Run" Turn Speed Hack + Hack de Velocidade de Curva "Taco Bell Run" + + + <b>The turn-speed hack from comma's 2022 "Taco Bell Run".</b> Designed to slow down for left and right turns. + <b>O hack de velocidade em curvas do โ€œTaco Bell Runโ€ de 2022 da comma.</b> Projetado para reduzir a velocidade em curvas ร  esquerda e ร  direita. + + + Quality of Life + Qualidade de vida + + + <b>Miscellaneous acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Alteraรงรตes diversas no controle de aceleraรงรฃo e frenagem</b> para ajustar como o openpilot dirige. + + + Cruise Interval + Intervalo do controle de cruzeiro + + + <b>How much the set speed increases or decreases</b> for each + or โ€“ cruise control button press. + <b>Quanto a velocidade definida aumenta ou diminui</b> a cada pressionamento do botรฃo de controle de cruzeiro + ou โ€“. + + + Cruise Interval (Hold) + Intervalo do Cruise (Segurar) + + + <b>How much the set speed increases or decreases while holding the + or โ€“ cruise control buttons.</b> + <b>Quanto a velocidade definida aumenta ou diminui ao manter pressionados os botรตes + ou โ€“ do controle de cruzeiro.</b> + + + Force Stop at "Detected" Stop Lights/Signs + Parada forรงada em semรกforos/sinais de โ€œDetectadoโ€ + + + <b>Force openpilot to stop whenever the driving model "detects" a red light or stop sign.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>Forรงar o openpilot a parar sempre que o modelo de conduรงรฃo โ€œdetectarโ€ um semรกforo vermelho ou uma placa de pare.</b><br><br><i><b>Aviso</b>: o openpilot nรฃo detecta explicitamente semรกforos ou placas de pare. No โ€œModo Experimentalโ€, o openpilot toma decisรตes de conduรงรฃo de ponta a ponta a partir da entrada da cรขmera, o que significa que ele pode parar mesmo quando nรฃo houver um motivo claro.</i> + + + Increase Stopped Distance by: + Aumentar a distรขncia parada em: + + + <b>Add extra space when stopped behind vehicles.</b> Increase for more room; decrease for shorter gaps. + <b>Adicione espaรงo extra ao parar atrรกs de veรญculos.</b> Aumente para mais distรขncia; diminua para intervalos menores. + + + Map Accel/Decel to Gears + Mapear aceleraรงรฃo/desaceleraรงรฃo para marchas + + + <b>Map the Acceleration or Deceleration profiles to the vehicle's "Eco" and "Sport" gear modes.</b> + <b>Mapeie os perfis de Aceleraรงรฃo ou Desaceleraรงรฃo para os modos de marcha "Eco" e "Sport" do veรญculo.</b> + + + Offset Set Speed by: + Deslocar velocidade definida por: + + + <b>Increase the set speed by the chosen offset.</b> For example, set +5 if you usually drive 5 over the limit. + <b>Aumente a velocidade definida pelo desvio escolhido.</b> Por exemplo, defina +5 se vocรช costuma dirigir 5 acima do limite. + + + Reverse Cruise Increase + Aumentar Velocidade da Rรฉ + + + <b>Reverse the cruise control button behavior</b> so a short press increases the set speed by 5 instead of 1. + <b>Inverta o comportamento do botรฃo do controle de cruzeiro</b> para que um toque curto aumente a velocidade definida em 5 em vez de 1. + + + Increase Following Distance by: + Aumente a distรขncia de seguimento em:" + + + Reduce Acceleration by: + Reduzir a aceleraรงรฃo em: + + + Reduce Speed in Curves by: + Reduzir velocidade em curvas em: + + + Snow + Neve + + + <b>Driving adjustments for snowy conditions.</b> + <b>Ajustes de conduรงรฃo para condiรงรตes de neve.</b> + + + <b>Add extra space behind lead vehicles in snow.</b> Increase for more space; decrease for tighter gaps. + <b>Adicione espaรงo extra atrรกs de veรญculos ร  frente na neve.</b> Aumente para mais espaรงo; diminua para intervalos menores. + + + <b>Add extra buffer when stopped behind vehicles in snow.</b> Increase for more room; decrease for shorter gaps. + <b>Adicione uma margem extra ao parar atrรกs de veรญculos na neve.</b> Aumente para mais espaรงo; diminua para lacunas menores. + + + <b>Lower the maximum acceleration in snow.</b> Increase for softer takeoffs; decrease for quicker but less stable takeoffs. + <b>Reduza a aceleraรงรฃo mรกxima na neve.</b> Aumente para partidas mais suaves; diminua para partidas mais rรกpidas porรฉm menos estรกveis. + + + <b>Lower the desired speed while driving through curves in snow.</b> Increase for safer, gentler turns; decrease for more aggressive driving in curves. + <b>Reduza a velocidade desejada ao dirigir em curvas na neve.</b> Aumente para curvas mais seguras e suaves; diminua para uma conduรงรฃo mais agressiva em curvas. + + + Speed Limit Controller + Controlador de Limite de Velocidade + + + <b>Limit openpilot's maximum driving speed to the current speed limit</b> obtained from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + <b>Limite a velocidade mรกxima de conduรงรฃo do openpilot ao limite de velocidade atual</b> obtido de mapas baixados, Mapbox, Navigate on openpilot ou do painel para veรญculos compatรญveis (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + + + Fallback Speed + Velocidade de reserva + + + <b>The speed used by "Speed Limit Controller" when no speed limit is found.</b><br><br>- <b>Set Speed</b>: Use the cruise set speed<br>- <b>Experimental Mode</b>: Estimate the limit using the driving model<br>- <b>Previous Limit</b>: Keep using the last confirmed limit + <b>A velocidade usada pelo "Speed Limit Controller" quando nenhum limite de velocidade รฉ encontrado.</b><br><br>- <b>Velocidade Definida</b>: Usar a velocidade definida do controle de cruzeiro<br>- <b>Modo Experimental</b>: Estimar o limite usando o modelo de conduรงรฃo<br>- <b>Limite Anterior</b>: Continuar usando o รบltimo limite confirmado + + + Override Speed + Sobrescrever velocidade + + + <b>The speed used by "Speed Limit Controller" after you manually drive faster than the posted limit.</b><br><br>- <b>Set with Gas Pedal</b>: Use the highest speed reached while pressing the gas<br>- <b>Max Set Speed</b>: Use the cruise set speed<br><br>Overrides clear when openpilot disengages. + <b>A velocidade usada pelo "Speed Limit Controller" apรณs vocรช dirigir manualmente acima do limite indicado.</b><br><br>- <b>Definir com o acelerador</b>: Usa a maior velocidade atingida enquanto pressiona o acelerador<br>- <b>Velocidade mรกxima definida</b>: Usa a velocidade definida do cruzeiro<br><br>As substituiรงรตes sรฃo limpas quando o openpilot รฉ desativado. + + + <b>Miscellaneous "Speed Limit Controller" changes</b> to fine-tune how openpilot drives. + <b>Alteraรงรตes diversas do "Speed Limit Controller"</b> para ajustar como o openpilot dirige. + + + Confirm New Speed Limits + Confirmar novos limites de velocidade + + + <b>Ask before changing to a new speed limit.</b> To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds. + <b>Perguntar antes de mudar para um novo limite de velocidade.</b> Para aceitar, toque no widget piscando na tela ou pressione o botรฃo Aumentar Cruise. Para negar, pressione o botรฃo Diminuir Cruise ou ignore o aviso por 30 segundos. + + + Force MPH from Dashboard + Forรงar MPH no painel + + + <b>Always read dashboard speed limit signs in mph.</b> Turn this on if the cluster shows mph but the limit is interpreted as km/h. + <b>Sempre leia as placas de limite de velocidade do painel em mph.</b> Ative isto se o painel mostrar mph, mas o limite for interpretado como km/h. + + + Higher Limit Lookahead Time + Tempo de Antecipaรงรฃo do Limite Superior + + + <b>How far ahead openpilot anticipates upcoming higher speed limits</b> from downloaded map data. + <b>Com que antecedรชncia o openpilot prevรช limites de velocidade mais altos ร  frente</b> a partir de dados de mapa baixados. + + + Lower Limit Lookahead Time + Tempo de Antecipaรงรฃo do Limite Inferior + + + <b>How far ahead openpilot anticipates upcoming lower speed limits</b> from downloaded map data. + <b>Quรฃo adiante o openpilot antecipa reduรงรตes de limite de velocidade</b> com base em dados de mapa baixados. + + + Match Speed Limit on Engage + Ajustar ร  velocidade da via ao engajar + + + <b>When openpilot is first enabled, automatically set the max speed to the current posted limit.</b> + <b>Quando o openpilot for ativado pela primeira vez, definir automaticamente a velocidade mรกxima para o limite vigente na via.</b> + + + Use Mapbox as Fallback + Usar Mapbox como reserva + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>Use os dados de limite de velocidade do Mapbox quando nenhuma outra fonte estiver disponรญvel.</b> + + + Speed Limit Source Priority + Prioridade da Fonte do Limite de Velocidade + + + <b>The source order for speed limits</b> when more than one is available. + <b>A ordem de origem para limites de velocidade</b> quando mais de um estiver disponรญvel. + + + Speed Limit Offsets + Compensaรงรตes de Limite de Velocidade + + + <b>Add an offset to the posted speed limit</b> to better match your driving style. + <b>Adicione um desvio ao limite de velocidade sinalizado</b> para combinar melhor com seu estilo de direรงรฃo. Speed Offset (0โ€“24 mph) - Deslocamento de Velocidade (0โ€“24 mph) + Compensaรงรฃo de Velocidade (0โ€“24 mph) + + + <b>How much to offset posted speed-limits</b> between 0 and 24 mph. + <b>Quanto compensar os limites de velocidade sinalizados</b> entre 0 e 24 mph. Speed Offset (25โ€“34 mph) - Deslocamento de Velocidade (25โ€“34 mph) + Compensaรงรฃo de Velocidade (25โ€“34 mph) + + + <b>How much to offset posted speed-limits</b> between 25 and 34 mph. + <b>Quanto compensar os limites de velocidade sinalizados</b> entre 25 e 34 mph. Speed Offset (35โ€“44 mph) - Deslocamento de Velocidade (35โ€“44 mph) + Compensaรงรฃo de velocidade (35โ€“44 mph) + + + <b>How much to offset posted speed-limits</b> between 35 and 44 mph. + <b>Quanto compensar os limites de velocidade publicados</b> entre 35 e 44 mph. Speed Offset (45โ€“54 mph) - Deslocamento de Velocidade (45โ€“54 mph) + Compensaรงรฃo de Velocidade (45โ€“54 mph) + + + <b>How much to offset posted speed-limits</b> between 45 and 54 mph. + <b>Quanto desviar dos limites de velocidade sinalizados</b> entre 45 e 54 mph. Speed Offset (55โ€“64 mph) - Deslocamento de Velocidade (55โ€“64 mph) + Deslocamento de Velocidade (55โ€“64 mph) + + + <b>How much to offset posted speed-limits</b> between 55 and 64 mph. + <b>Quanto compensar os limites de velocidade sinalizados</b> entre 55 e 64 mph. Speed Offset (65โ€“74 mph) - Deslocamento de Velocidade (65โ€“74 mph) + Compensaรงรฃo de Velocidade (65โ€“74 mph) + + + <b>How much to offset posted speed-limits</b> between 65 and 74 mph. + <b>Quanto compensar os limites de velocidade</b> entre 65 e 74 mph. Speed Offset (75โ€“99 mph) - Deslocamento de Velocidade (75โ€“99 mph) + Compensaรงรฃo de Velocidade (75โ€“99 mph) - Only For Detected Lanes - Somente para Faixas Detectadas + <b>How much to offset posted speed-limits</b> between 75 and 99 mph. + <b>Quanto compensar os limites de velocidade publicados</b> entre 75 e 99 mph. + + + Visual Settings + Configuraรงรตes Visuais + + + <b>Visual "Speed Limit Controller" changes</b> to fine-tune how the driving screen looks. + <b>Alteraรงรตes visuais do "Controlador de Limite de Velocidade"</b> para ajustar a aparรชncia da tela de conduรงรฃo. + + + Show Speed Limit Offset + Mostrar deslocamento do limite de velocidade + + + <b>Show the current offset from the posted limit</b> on the driving screen. + <b>Mostrar o desvio atual do limite sinalizado</b> na tela de conduรงรฃo. + + + Show Speed Limit Sources + Mostrar fontes de limite de velocidade + + + <b>Display the speed-limit sources and their current values</b> on the driving screen. + <b>Exibir as fontes de limite de velocidade e seus valores atuais</b> na tela de conduรงรฃo. + + + seconds + segundos + + + m/sยฒ + m/sยฒ + + + mph + mph + + + With Lead + Com veรญculo ร  frente + + + <b>Switch to "Experimental Mode" when driving below this speed with a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>Alterne para o "Modo Experimental" ao dirigir abaixo desta velocidade com um veรญculo ร  frente</b> para ajudar o openpilot a lidar melhor com situaรงรตes em baixa velocidade. + + + Slower Lead + Veรญculo ร  frente mais lento + + + Stopped Lead + Lรญder parado + + + Intersections + Interseรงรตes + + + Turns + Curvas + + + Off + Desligado + + + second + segundo + + + Not For Detected Lanes + Nรฃo para faixas detectadas + + + RESET + REDEFINIR + + + Are you sure you want to completely reset your curvature data? + Tem certeza de que deseja redefinir completamente seus dados de curvatura? + + + Eco + Econรดmico + + + Sport + Esporte + + + Sport+ + Sport+ + + + feet + pรฉs + + + Acceleration + Aceleraรงรฃo + + + Deceleration + Desaceleraรงรฃo + + + MANAGE + GERENCIAR + + + Set Speed + Definir velocidade + + + Experimental Mode + Modo Experimental + + + Previous Limit + Limite anterior + + + None + Nenhum + + + Set With Gas Pedal + Definir com o pedal do acelerador + + + Max Set Speed + Velocidade Mรกxima Ajustada + + + SELECT + SELECIONAR + + + Dashboard + Painel + + + Map Data + Dados de mapa + + + Navigation + Navegaรงรฃo + + + Highest + Mais alto + + + Lowest + Mais baixo + + + Select your primary priority + Selecione sua prioridade principal + + + Select your secondary priority + Selecione sua prioridade secundรกria + + + Select your tertiary priority + Selecione sua prioridade terciรกria + + + Lower Limits + Limites Inferiores + + + Higher Limits + Limites Mais Altos + + + Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? + Tem certeza de que deseja redefinir completamente suas configuraรงรตes de <b>Modo de Trรกfego</b>? + + + Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? + Tem certeza de que deseja redefinir completamente suas configuraรงรตes para a personalidade <b>Agresiva</b>? + + + Are you sure you want to completely reset your settings for the <b>Standard</b> personality? + Tem certeza de que deseja redefinir completamente suas configuraรงรตes para a personalidade <b>Padrรฃo</b>? + + + Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? + Tem certeza de que deseja redefinir completamente suas configuraรงรตes para a personalidade <b>Relaxed</b>? + + + foot + pรฉ + + + meter + metro + + + meters + metros + + + km/h + km/h Speed Offset (0โ€“29 km/h) - Offset de Velocidade (0โ€“29 km/h) + Desvio de velocidade (0โ€“29 km/h) Speed Offset (30โ€“49 km/h) - Desvio de Velocidade (30โ€“49 km/h) + Compensaรงรฃo de Velocidade (30โ€“49 km/h) Speed Offset (50โ€“59 km/h) - Desvio de Velocidade (50โ€“59 km/h) + Compensaรงรฃo de Velocidade (50โ€“59 km/h) Speed Offset (60โ€“79 km/h) - Desvio de Velocidade (60โ€“79 km/h) + Desvio de Velocidade (60โ€“79 km/h) Speed Offset (80โ€“99 km/h) - Deslocamento de Velocidade (80โ€“99 km/h) + Compensaรงรฃo de velocidade (80โ€“99 km/h) Speed Offset (100โ€“119 km/h) - Desvio de Velocidade (100โ€“119 km/h) + Compensaรงรฃo de Velocidade (100โ€“119 km/h) Speed Offset (120โ€“140 km/h) - Deslocamento de Velocidade (120โ€“140 km/h) + Compensaรงรฃo de Velocidade (120โ€“140 km/h) - Curve Speed Control - Controle de Velocidade em Curvas - - - Automatically slow down for upcoming curves using downloaded maps or the driving model. - Reduza automaticamente a velocidade para curvas prรณximas usando mapas baixados ou o modelo de conduรงรฃo. - - - Curve Detection Method - Mรฉtodo de Detecรงรฃo de Curvas - - - How curves are detected. <b>Map-Based</b> uses downloaded map data to identify curves and determine the appropriate speed in which to handle them at, while <b>Vision</b> relies solely on the driving model. - Como curvas sรฃo detectadas. <b>Baseado em Mapa</b> utiliza dados de mapa baixados para identificar curvas e determinar a velocidade apropriada para lidar com elas, enquanto <b>Visรฃo</b> depende exclusivamente do modelo de conduรงรฃo. - - - Curve Detection Failsafe - Falha na Detecรงรฃo de Curva - - - Only trigger <b>Curve Speed Control</b> if a curve is detected with the model while using the <b>Map-Based</b> method. Useful to help prevent false positives. - Acione o <b>Controle de Velocidade em Curvas</b> apenas se uma curva for detectada com o modelo ao usar o mรฉtodo <b>Baseado em Mapa</b>. รštil para ajudar a prevenir falsos positivos. - - - Curve Detection Sensitivity - Sensibilidade de Detecรงรฃo de Curvas - - - How sensitive openpilot is when detecting curves. Higher values trigger earlier responses at the risk of triggering too often, while lower values increase confidence at the risk of triggering too infrequently. - Quรฃo sensรญvel o openpilot รฉ ao detectar curvas. Valores mais altos acionam respostas mais cedo, com o risco de acionar com muita frequรชncia, enquanto valores mais baixos aumentam a confianรงa com o risco de acionar com pouca frequรชncia. - - - Curve Speed Aggressiveness - Agressividade na Velocidade em Curvas - - - How aggressive openpilot is when navigating through curves. Higher values result in faster turns but may reduce comfort or stability, while lower values result in slower, smoother turns at the risk of being overly cautious. - Quรฃo agressivo o openpilot รฉ ao navegar por curvas. Valores mais altos resultam em curvas mais rรกpidas, mas podem reduzir o conforto ou a estabilidade, enquanto valores mais baixos resultam em curvas mais lentas e suaves, com o risco de serem excessivamente cautelosos. - - - Map Based - Baseado em mapa - - - Vision - Visรฃo - - - The <b>Map Based</b> option is only available when some <b>Map Data</b> has been downloaded! - A opรงรฃo <b>Baseado em Mapa</b> estรก disponรญvel apenas quando alguns <b>Dados de Mapa</b> foram baixados! + <b>Following behavior that mimics human drivers</b> by closing gaps behind faster vehicles for quicker takeoffs and dynamically adjusting the desired following distance for gentler, more efficient braking. + <b>Comportamento de acompanhamento que imita motoristas humanos</b> ao fechar lacunas atrรกs de veรญculos mais rรกpidos para arrancadas mais rรกpidas e ajustar dinamicamente a distรขncia de seguimento desejada para frenagens mais suaves e eficientes. FrogPilotManageControl MANAGE - GERENCIAR + GERENCIAR FrogPilotMapsPanel Manually - Manualmente + Manualmente Weekly - Semanalmente + Semanal Monthly - Mensalmente + Mensal Automatically Update Maps - Atualizar Mapas Automaticamente + Atualizar mapas automaticamente - The frequency at which maps sync with the latest OpenStreetMap (OSM) changes. Weekly updates occur every Sunday, and monthly updates occur on the 1st. - A frequรชncia com que os mapas sincronizam com as รบltimas alteraรงรตes do OpenStreetMap (OSM). Atualizaรงรตes semanais ocorrem todo domingo, e atualizaรงรตes mensais ocorrem no dia 1ยบ. - - - Data Sources - Fontes de Dados - - - Select map data sources to use with "Curve Speed Control" and "Speed Limit Controller". - Selecione fontes de dados de mapa para usar com "Controle de Velocidade em Curvas" e "Controlador de Limite de Velocidade". - - - COUNTRIES - PAรSES - - - STATES - ESTADOS + <b>How often maps update</b> from "OpenStreetMap (OSM)" with the latest speed limit information. Weekly updates run every Sunday; monthly updates run on the 1st. + <b>Com que frequรชncia os mapas sรฃo atualizados</b> do "OpenStreetMap (OSM)" com as informaรงรตes mais recentes de limite de velocidade. Atualizaรงรตes semanais ocorrem todo domingo; atualizaรงรตes mensais ocorrem no dia 1ยบ. Download Maps - Baixar Mapas + Baixar mapas DOWNLOAD - DOWNLOAD + BAIXAR - Download the selected maps to use with "Curve Speed Control" and "Speed Limit Controller". - Baixe os mapas selecionados para usar com "Controle de Velocidade em Curvas" e "Controlador de Limite de Velocidade". + <b>Manually update your selected map sources</b> so "Speed Limit Controller" has the latest speed limit information. + <b>Atualize manualmente suas fontes de mapa selecionadas</b> para que o "Speed Limit Controller" tenha as informaรงรตes mais recentes de limite de velocidade. CANCEL - CANCELAR + CANCELAR - Are you sure you want to cancel the download? - Tem certeza de que deseja cancelar o download? + Cancel the download? + Cancelar o download? - Download Completion ETA - Previsรฃo de Conclusรฃo do Download + Last Updated + รšltima atualizaรงรฃo - Download Progress - Progresso do Download + Map Sources + Fontes de mapa - Download Time Elapsed - Tempo de Download Decorrido + <b>Select the countries or U.S. states to use with "Speed Limit Controller".</b> + <b>Selecione os paรญses ou estados dos EUA para usar com "Controlador de Limite de Velocidade".</b> - Maps Last Updated - Mapas atualizados pela รบltima vez + COUNTRIES + PAรSES - Maps Size - Tamanho dos Mapas + STATES + ESTADOS + + + Progress + Progresso + + + Time Elapsed + Tempo decorrido + + + Time Remaining + Tempo restante Remove Maps - Remover Mapas + Remover Mapas REMOVE - REMOVER + REMOVER - Remove downloaded maps to clear up storage space. - Remova mapas baixados para liberar espaรงo de armazenamento. + <b>Delete downloaded map data</b> to free up storage space. + <b>Excluir dados de mapa baixados</b> para liberar espaรงo de armazenamento. - Are you sure you want to delete all of your downloaded maps? - Tem certeza de que deseja excluir todos os seus mapas baixados? + Delete all downloaded maps? + Excluir todos os mapas baixados? - Reset Map Downloader - Redefinir o Downloader de Mapas + Reset Downloader + Redefinir Downloader RESET - REDEFINIR + REDEFINIR - Reset the map downloader. Use if you're running into issues with downloading maps. - Redefina o downloader de mapas. Use se estiver enfrentando problemas ao baixar mapas. + <b>Reset the map downloader.</b> Use this if downloads are stuck or failing. + <b>Redefina o downloader de mapas.</b> Use isto se os downloads estiverem travados ou falhando. - Are you sure you want to reset the map downloader? This will force a reboot once completed. - Tem certeza de que deseja redefinir o downloader de mapas? Isso forรงarรก uma reinicializaรงรฃo ao ser concluรญdo. + Reset the map downloader? Your device will reboot afterward. + Redefinir o downloader de mapas? Seu dispositivo serรก reiniciado depois. Reset - Redefinir + Redefinir Resetting... - Redefinindo... + Reiniciando... Reset! - Redefinir! + Redefinir! Rebooting... - Reiniciando... + Reiniciando... + + + Storage Used + Armazenamento usado Africa - รfrica + รfrica Antarctica - Antรกrtica + Antรกrtica Asia - รsia + รsia Europe - Europa + Europa North America - Amรฉrica do Norte + Amรฉrica do Norte Oceania - Oceania + Oceania South America - Amรฉrica do Sul + Amรฉrica do Sul United States - Midwest - Estados Unidos - Meio-Oeste + Estados Unidos - Meio-Oeste United States - Northeast - Estados Unidos - Nordeste + Estados Unidos - Nordeste United States - South - Estados Unidos - Sul + Estados Unidos - Sul United States - West - Estados Unidos - Oeste + Estados Unidos - Oeste United States - Territories - Estados Unidos - Territรณrios - - - CANCELLED - CANCELADO + Estados Unidos - Territรณrios Offline... - Offline... + Offline... + + + CANCELLED + CANCELADO FrogPilotModelPanel Automatically Download New Models - Baixar Novos Modelos Automaticamente + Baixar novos modelos automaticamente - Automatically download new driving models as they become available. - Baixar automaticamente novos modelos de direรงรฃo ร  medida que se tornarem disponรญveis. + <b>Automatically download new driving models</b> as they become available. + <b>Baixar automaticamente novos modelos de conduรงรฃo</b> ร  medida que estiverem disponรญveis. Delete Driving Models - Excluir Modelos de Conduรงรฃo + Excluir modelos de conduรงรฃo - Delete driving models from the device. - Excluir modelos de conduรงรฃo do dispositivo. + <b>Delete downloaded driving models</b> to free up storage space. + <b>Excluir modelos de conduรงรฃo baixados</b> para liberar espaรงo de armazenamento. Download Driving Models - Baixar Modelos de Conduรงรฃo + Baixar Modelos de Conduรงรฃo - Download driving models to the device. - Baixar modelos de direรงรฃo para o dispositivo. + <b>Manually download driving models</b> to the device. + <b>Baixar manualmente os modelos de conduรงรฃo</b> para o dispositivo. Model Randomizer - Randomizador de Modelo + Randomizador de Modelo - Driving models are chosen at random each drive and feedback prompts are used to find the model that best suits your needs. - Os modelos de direรงรฃo sรฃo escolhidos aleatoriamente a cada viagem e prompts de feedback sรฃo usados para encontrar o modelo que melhor atende ร s suas necessidades. + <b>Select a random driving model each drive</b> and use feedback prompts at the end of the drive to help find the model that best suits you! + <b>Selecione um modelo de conduรงรฃo aleatรณrio a cada trajeto</b> e use os prompts de feedback ao final do trajeto para ajudar a encontrar o modelo que melhor combina com vocรช! Manage Model Blacklist - Gerenciar Lista Negra de Modelos + Gerenciar lista negra de modelos - Add or remove models from the <b>Model Randomizer</b>'s blacklist list. - Adicionar ou remover modelos da lista negra do <b>Model Randomizer</b>. + <b>Add or remove driving models from the "Model Randomizer" blacklist.</b> + <b>Adicione ou remova modelos de conduรงรฃo da lista negra do โ€œModel Randomizerโ€.</b> Manage Model Ratings - Gerenciar Avaliaรงรตes de Modelos + Gerenciar classificaรงรตes do modelo - Reset or view the saved ratings for the driving models. - Redefinir ou visualizar as classificaรงรตes salvas para os modelos de conduรงรฃo. + <b>View or reset saved model ratings</b> used by the "Model Randomizer". + <b>Ver ou redefinir avaliaรงรตes de modelos salvas</b> usadas pelo "Model Randomizer". Select Driving Model - Selecionar Modelo de Conduรงรฃo + Selecionar modelo de conduรงรฃo - Select the active driving model. - Selecione o modelo de conduรงรฃo ativo. + <b>Choose which driving model openpilot uses.</b> + <b>Escolha qual modelo de conduรงรฃo o openpilot usa.</b> + + + Update Model Manager + Atualizar Gerenciador de Modelos + + + <b>Update the "Model Manager"</b> to support the latest models. + <b>Atualize o "Model Manager"</b> para suportar os modelos mais recentes. DELETE - EXCLUIR + EXCLUIR DELETE ALL - EXCLUIR TUDO + EXCLUIR TUDO Select a driving model to delete - Selecione um modelo de direรงรฃo para excluir + Selecione um modelo de conduรงรฃo para excluir Are you sure you want to delete the "%1" model? - Tem certeza de que deseja excluir o modelo "%1"? + Tem certeza de que deseja excluir o modelo "%1"? Delete - Excluir + Excluir Are you sure you want to delete all of your downloaded driving models? - Tem certeza de que deseja excluir todos os seus modelos de direรงรฃo baixados? + Tem certeza de que deseja excluir todos os seus modelos de conduรงรฃo baixados? DOWNLOAD - DOWNLOAD + BAIXAR DOWNLOAD ALL - BAIXAR TUDO + BAIXAR TUDO - Select a driving model to download - Selecione um modelo de direรงรฃo para baixar + Tinygrad is out of date and must be updated before you can download new models. Update now? + Tinygrad estรก desatualizado e deve ser atualizado antes que vocรช possa baixar novos modelos. Atualizar agora? + + + Updating Tinygrad will delete all existing Tinygrad-based models which will need to be re-downloaded. Proceed? + Atualizar o Tinygrad excluirรก todos os modelos baseados em Tinygrad existentes, que precisarรฃo ser baixados novamente. Continuar? CANCEL - CANCELAR + CANCELAR + + + Updating... + Atualizando... + + + Select a driving model to download + Selecione um modelo de direรงรฃo para baixar ADD - ADICIONAR + ADICIONAR REMOVE - REMOVER + REMOVER REMOVE ALL - REMOVER TUDO + REMOVER TUDO - There are no more models to blacklist! The only available model is "%1"! - Nรฃo hรก mais modelos para colocar na lista negra! O รบnico modelo disponรญvel รฉ "%1"! + There are no more driving models to blacklist. The only available model is "%1"! + Nรฃo hรก mais modelos de conduรงรฃo para colocar na blacklist. O รบnico modelo disponรญvel รฉ โ€œ%1โ€! - Select a model to add to the blacklist - Selecione um modelo para adicionar ร  lista negra + Select a driving model to add to the blacklist + Selecione um modelo de conduรงรฃo para adicionar ร  lista de bloqueio Are you sure you want to add the "%1" model to the blacklist? - Tem certeza de que deseja adicionar o modelo "%1" ร  lista negra? + Tem certeza de que deseja adicionar o modelo "%1" ร  lista negra? Add - Adicionar + Adicionar - Select a model to remove from the blacklist - Selecione um modelo para remover da lista negra + Select a driving model to remove from the blacklist + Selecione um modelo de conduรงรฃo para remover da lista de bloqueio Are you sure you want to remove the "%1" model from the blacklist? - Tem certeza de que deseja remover o modelo "%1" da lista negra? + Tem certeza de que deseja remover o modelo "%1" da lista negra? Remove - Remover + Remover - Are you sure you want to remove all of your blacklisted models? - Tem certeza de que deseja remover todos os seus modelos da lista negra? + Are you sure you want to remove all of your blacklisted driving models? + Tem certeza de que deseja remover todos os seus modelos de conduรงรฃo na lista negra? RESET - REDEFINIR + REDEFINIR VIEW - VISUALIZAR + VER - Are you sure you want to reset all of your model drives and scores? - Tem certeza de que deseja redefinir todas as suas unidades de modelo e pontuaรงรตes? + Reset all model drives and ratings? This clears your drive history and collected feedback! + Redefinir todas as viagens do modelo e avaliaรงรตes? Isso apagarรก seu histรณrico de viagens e o feedback coletado! SELECT - SELECT + SELECIONAR - Select a model - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC - Selecione um modelo - ๐Ÿ—บ๏ธ = Navegaรงรฃo | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + UPDATE + ATUALIZAR - The "Model Randomizer" only works with downloaded models. Do you want to download all the driving models? - O "Model Randomizer" sรณ funciona com modelos baixados. Vocรช quer baixar todos os modelos de direรงรฃo? + Cancelling... + Cancelando... + + + Updating Tinygrad will delete existing Tinygrad-based driving models and need to be re-downloaded. Proceed? + Atualizar o Tinygrad excluirรก os modelos de direรงรฃo baseados em Tinygrad existentes e exigirรก novo download. Prosseguir? + + + The "Model Randomizer" works only with downloaded models. Download all models now? + O "Model Randomizer" funciona apenas com modelos baixados. Baixar todos os modelos agora? Offline... - Offline... + Offline... + + + Update available! + Atualizaรงรฃo disponรญvel! + + + Up to date! + Atualizado! + + + Select a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + Selecione um Modelo โ€” ๐Ÿ—บ๏ธ = Navegaรงรฃo | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + + + + FrogPilotModelReview + + How would you rate that drive? + Como vocรช avaliaria essa viagem? + + + Model successfully blacklisted! + Modelo bloqueado com sucesso! + + + Drive Rating Selection + Seleรงรฃo de Classificaรงรฃo de Conduรงรฃo + + + Blacklist this model to remove it from rotation + Coloque este modelo na lista negra para removรช-lo da rotaรงรฃo + + + Blacklist Model + Modelo na lista negra + + + Model used during that drive: + Modelo usado durante essa conduรงรฃo: + + + Model Rank + Classificaรงรฃo do Modelo + + + Model Rating + Avaliaรงรฃo do modelo + + + Model Drives + Direรงรตes do Modelo + + + Total Drives + Viagens Totais + + + #%1 + #%1 + + + %1% + %1% + + + %1 %2 + %1 %2 + + + Drive + Dirigir + + + Drives + Conduรงรตes + + + %1 Total %2 + %1 Total %2 FrogPilotNavigationPanel - - Manage your %1. - Gerencie seu %1. - - - ADD - ADICIONAR - - - Enter your %1 - Insira seu %1 - - - Inputted key is invalid or too short! - A chave inserida รฉ invรกlida ou muito curta! - - - Are you sure you want to remove your %1? - Tem certeza de que deseja remover seu %1? - - - REMOVE - REMOVER - Manage Your Settings At - Gerencie suas configuraรงรตes em - - - MapBox - MapBox - - - Amap - Amap - - - Google - Google - - - Destination Search Provider - Provedor de Pesquisa de Destino - - - The search provider used for destination queries in "Navigate on Openpilot". Options include "MapBox" (recommended), "Amap", and "Google Maps". - O provedor de pesquisa usado para consultas de destino no "Navigate on Openpilot". As opรงรตes incluem "MapBox" (recomendado), "Amap" e "Google Maps". - - - Amap Key #1 - Chave do Amapรก #1 - - - Manage your Amap key. - Gerencie sua chave Amap. - - - Enter your Amap key - Insira sua chave Amap - - - Are you sure you want to remove your Amap key? - Tem certeza de que deseja remover sua chave Amap? - - - Amap Key #2 - Chave do Amapรก #2 - - - Google Maps Key - Chave do Google Maps - - - Manage your Google Maps key. - Gerencie sua chave do Google Maps. - - - Enter your Google Maps key - Insira sua chave do Google Maps - - - Are you sure you want to remove your Google Maps key? - Tem certeza de que deseja remover sua chave do Google Maps? - - - Public Mapbox Key - Chave Pรบblica do Mapbox - - - Secret Mapbox Key - Chave Secreta do Mapbox - - - MapBox Setup Instructions - Instruรงรตes de Configuraรงรฃo do MapBox - - - VIEW - VISUALIZAR - - - View the instructions to set up "MapBox" for "Primeless Navigation". - Veja as instruรงรตes para configurar o "MapBox" para "Primeless Navigation". - - - CANCEL - CANCELAR - - - Speed Limit Filler - Preenchimento de Limite de Velocidade - - - Are you sure you want to cancel the speed limit update process? - Tem certeza de que deseja cancelar o processo de atualizaรงรฃo do limite de velocidade? - - - You have reached the request limit. - -It will reset in %1 hours and %2 minutes. - Vocรช atingiu o limite de solicitaรงรตes. - -Ele serรก redefinido em %1 horas e %2 minutos. - - - This process will take awhile, so it's advised to start when you're done driving with a stable Wi-Fi connection. Do you wish to proceed? - Este processo levarรก algum tempo, por isso รฉ aconselhรกvel comeรงar quando vocรช terminar de dirigir com uma conexรฃo Wi-Fi estรกvel. Deseja prosseguir? - - - Manually Update Speed Limits - Atualizar Limites de Velocidade Manualmente - - - Automatically collect missing or incorrect speed limits from your dashboard (if supported), <b>Mapbox</b>, and <b>Navigate-on-openpilot</b> while driving.<br><br>When the car is turned off and connected to Wi-Fi, your speed limit data is automatically processed into a compiled file formatted for the tool located at <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>You can grab the processed file from <b>The Pond</b> via the <b>Download Speed Limits</b> menu.<br><br>Want a more thorough walkthrough? Check out the <b>#speed-limit-filler</b> channel in the <b>FrogPilot Discord</b>! - Colete automaticamente limites de velocidade ausentes ou incorretos do seu painel (se suportado), <b>Mapbox</b> e <b>Navigate-on-openpilot</b> enquanto dirige.<br><br>Quando o carro รฉ desligado e conectado ao Wi-Fi, seus dados de limite de velocidade sรฃo processados automaticamente em um arquivo compilado formatado para a ferramenta localizada em <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>Vocรช pode obter o arquivo processado de <b>The Pond</b> atravรฉs do menu <b>Download Speed Limits</b>.<br><br>Quer um guia mais detalhado? Confira o canal <b>#speed-limit-filler</b> no <b>FrogPilot Discord</b>! - - - Cancelled... - Cancelado... - - - Completed! - Concluรญdo! + Gerencie suas configuraรงรตes em Offline... - Offline... + Offline..." + + + Mapbox + Mapbox + + + Amap + Amap + + + Destination Search Provider + Provedor de Pesquisa de Destino + + + <b>The search provider used for destination queries</b> in "Navigate on Openpilot". Options include Mapbox (recommended) and Amap. + <b>O provedor de busca usado para consultas de destino</b> em "Navigate on Openpilot". As opรงรตes incluem Mapbox (recomendado) e Amap. + + + Amap Key #1 + Chave Amap nยบ 1 + + + Amap Key #2 + Chave do Amap nยบ 2 + + + Public Mapbox Key + Chave Pรบblica do Mapbox + + + Secret Mapbox Key + Chave secreta do Mapbox + + + Mapbox Setup Instructions + Instruรงรตes de configuraรงรฃo do Mapbox + + + VIEW + VISUALIZAR + + + <b>Instructions on how to set up Mapbox</b> for "Primeless Navigation". + <b>Instruรงรตes sobre como configurar o Mapbox</b> para "Primeless Navigation". + + + CANCEL + CANCELAR + + + Manually Update Speed Limits + Atualizar limites de velocidade manualmente + + + Speed Limit Filler + Preenchimento do Limite de Velocidade + + + <b>Automatically collect missing or incorrect speed limits while you drive</b> using speeds limits sourced from your dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When you're parked and connected to Wi-Fi, FrogPilot will automatically processes this data into a file to be used with the tool located at "SpeedLimitFiller.frogpilot.download".<br><br>You can download this file from "The Pond" in the "Download Speed Limits" menu.<br><br>Need a step-by-step guide? Visit <b>#speed-limit-filler</b> in the FrogPilot Discord! + <b>Colete automaticamente limites de velocidade ausentes ou incorretos enquanto dirige</b> usando limites de velocidade obtidos do seu painel (se compatรญvel), Mapbox e "Navigate on openpilot".<br><br>Quando estiver estacionado e conectado ao Wiโ€‘Fi, o FrogPilot processarรก automaticamente esses dados em um arquivo para ser usado com a ferramenta localizada em "SpeedLimitFiller.frogpilot.download".<br><br>Vocรช pode baixar esse arquivo em "The Pond", no menu "Download Speed Limits".<br><br>Precisa de um guia passo a passo? Visite <b>#speed-limit-filler</b> no Discord do FrogPilot! + + + Cancel the speed-limit update? + Cancelar a atualizaรงรฃo do limite de velocidade? + + + Cancelled... + Cancelado... + + + You've hit today's request limit. + +It will reset in %1 hours and %2 minutes. + Vocรช atingiu o limite de solicitaรงรตes de hoje. + +Ele serรก reiniciado em %1 horas e %2 minutos. + + + This process takes a while. It's recommended to start when you're done driving and connected to stable Wi-Fi. Continue? + Este processo leva um tempo. Recomenda-se iniciar quando vocรช terminar de dirigir e estiver conectado a um Wiโ€‘Fi estรกvel. Continuar? + + + <b>Manage your "%1".</b> + <b>Gerencie seu "%1".</b> + + + ADD + ADICIONAR + + + Enter your %1 + Insira seu %1 + + + Inputted key is invalid or too short! + A chave inserida รฉ invรกlida ou muito curta! + + + Remove your %1? + Remover seu %1? + + + REMOVE + REMOVER + + + Completed! + Concluรญdo! FrogPilotSettingsWindow MANAGE - GERENCIAR + GERENCIAR DRIVING MODEL - MODELO DE CONDUร‡รƒO + MODELO DE CONDUร‡รƒO GAS / BRAKE - ACELERADOR / FREIO + ACELERADOR / FREIO STEERING - DIREร‡รƒO + DIREร‡รƒO MAP DATA - DADOS DO MAPA + DADOS DO MAPA NAVIGATION - NAVEGAร‡รƒO + NAVEGAร‡รƒO DATA - DADOS + DADOS DEVICE CONTROLS - CONTROLES DO DISPOSITIVO + CONTROLES DO DISPOSITIVO UTILITIES - UTILITรRIOS + UTILITรRIOS APPEARANCE - APARรŠNCIA + APARรŠNCIA THEME - TEMA + TEMA VEHICLE SETTINGS - CONFIGURAร‡ร•ES DO VEรCULO + CONFIGURAร‡ร•ES DO VEรCULO WHEEL CONTROLS - CONTROLES DO VOLANTE + CONTROLES DO VOLANTE Alerts and Sounds - Alertas e Sons + Alertas e sons - FrogPilot settings for alert volumes and custom notifications to stay informed about important driving events. - Configuraรงรตes do FrogPilot para volumes de alerta e notificaรงรตes personalizadas para se manter informado sobre eventos importantes de direรงรฃo. + <b>Adjust alert volumes and enable custom notifications.</b> + <b>Ajuste os volumes de alerta e ative notificaรงรตes personalizadas.</b> Driving Controls - Controles de Conduรงรฃo + Controles de Conduรงรฃo - FrogPilot settings for acceleration, braking, and steering. - Configuraรงรตes do FrogPilot para aceleraรงรฃo, frenagem e direรงรฃo. + <b>Fine-tune custom FrogPilot acceleration, braking, and steering controls.</b> + <b>Ajuste finamente os controles personalizados de aceleraรงรฃo, frenagem e direรงรฃo do FrogPilot.</b> Navigation - Navegaรงรฃo + Navegaรงรฃo - Download map data for <b>Curve Speed Control</b>, <b>Speed Limit Controller</b>, and set up <b>Navigate on openpilot (NOO)</b>. - Baixar dados do mapa para <b>Controle de Velocidade em Curvas</b>, <b>Controlador de Limite de Velocidade</b> e configurar <b>Navegar no openpilot (NOO)</b>. + <b>Download map data for the "Speed Limit Controller" and configure "Navigate on openpilot" (NOO).</b> + <b>Baixe os dados de mapa para o "Speed Limit Controller" e configure o "Navigate on openpilot" (NOO).</b> - System Management - Gerenciamento do Sistema + System Settings + Configuraรงรตes do Sistema - Data storage management, debugging tools, device settings, screen behavior settings, system backups, and utilities to maintain, optimize, and troubleshoot FrogPilot. - Gerenciamento de armazenamento de dados, ferramentas de depuraรงรฃo, configuraรงรตes do dispositivo, configuraรงรตes de comportamento da tela, backups do sistema e utilitรกrios para manter, otimizar e solucionar problemas do FrogPilot. + <b>Manage backups, device settings, screen options, storage, and tools to keep FrogPilot running smoothly.</b> + <b>Gerencie backups, configuraรงรตes do dispositivo, opรงรตes de tela, armazenamento e ferramentas para manter o FrogPilot funcionando sem problemas.</b> Theme and Appearance - Tema e Aparรชncia + Tema e Aparรชncia - FrogPilot settings for the current theme, driving-screen, and the overall user interface. - Configuraรงรตes do FrogPilot para o tema atual, tela de conduรงรฃo e a interface do usuรกrio em geral. + <b>Customize the look of the driving screen and interface, including themes!</b> + <b>Personalize a aparรชncia da tela de conduรงรฃo e da interface, incluindo temas!</b> - Vehicle Controls - Controles do Veรญculo + Vehicle Settings + Configuraรงรตes do veรญculo - Options unique to supported manufacturers and vehicle fingerprint management. - Opรงรตes exclusivas para fabricantes suportados e gerenciamento de impressรฃo digital de veรญculos. + <b>Configure car-specific options and steering wheel button mappings.</b> + <b>Configure opรงรตes especรญficas do carro e mapeamentos dos botรตes do volante.</b> Minimal - Minimalista + Mรญnimo Standard - Padrรฃo + Padrรฃo Advanced - Avanรงado + Avanรงado Developer - Desenvolvedor + Desenvolvedor Tuning Level - Nรญvel de Ajuste + Nรญvel de Ajuste - The visibility and complexity of tuning settings. Lower levels simplify the interface by hiding advanced options, while higher levels unlock detailed customization. + Choose your tuning level. Lower levels keep it simple; higher levels unlock more toggles for finer control. Minimal - Ideal for those who prefer simplicity or ease of use Standard - Recommended for most users for a balanced experience -Advanced - Unlocks fine-tuning controls for more experienced users -Developer - Unlocks highly customizable settings for seasoned enthusiasts - A visibilidade e complexidade das configuraรงรตes de ajuste. Nรญveis mais baixos simplificam a interface ao ocultar opรงรตes avanรงadas, enquanto nรญveis mais altos desbloqueiam personalizaรงรตes detalhadas. +Advanced - Fine-tuning for experienced users +Developer - Highly customizable settings for seasoned enthusiasts + Escolha seu nรญvel de ajuste. Nรญveis inferiores mantรชm a simplicidade; nรญveis superiores desbloqueiam mais opรงรตes para controle mais preciso. -Mรญnimo - Ideal para aqueles que preferem simplicidade ou facilidade de uso +Mรญnimo - Ideal para quem prefere simplicidade ou facilidade de uso Padrรฃo - Recomendado para a maioria dos usuรกrios para uma experiรชncia equilibrada -Avanรงado - Desbloqueia controles de ajuste fino para usuรกrios mais experientes -Desenvolvedor - Desbloqueia configuraรงรตes altamente personalizรกveis para entusiastas experientes +Avanรงado - Ajustes finos para usuรกrios experientes +Desenvolvedor - Configuraรงรตes altamente personalizรกveis para entusiastas experientes - WARNING: This unlocks some potentially dangerous settings that can DRASTICALLY alter your driving experience! - AVISO: Isso desbloqueia algumas configuraรงรตes potencialmente perigosas que podem alterar DRASTICAMENTE sua experiรชncia de direรงรฃo! + WARNING: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do! + AVISO: Essas configuraรงรตes sรฃo arriscadas e podem mudar drasticamente como o openpilot dirige. Sรณ altere se vocรช entender completamente o que elas fazem! + + + All toggle descriptions are currently expanded. You can tap a toggle's name to open or close its description at any time! + Todas as descriรงรตes de alternรขncia estรฃo atualmente expandidas. Vocรช pode tocar no nome de uma alternรขncia para abrir ou fechar sua descriรงรฃo a qualquer momento! FrogPilotSoundsPanel - Alert Volume Control - Controle de Volume de Alerta + Alert Volume Controller + Controlador de Volume de Alertas - Adjust the volume for each alert in openpilot. - Ajuste o volume para cada alerta no openpilot. + <b>Set how loud each type of openpilot alert is</b> to keep routine prompts from becoming distracting. + <b>Defina o volume de cada tipo de alerta do openpilot</b> para evitar que prompts rotineiros se tornem distrativos. Disengage Volume - Desativar Volume + Volume de desativaรงรฃo - Adjust the volume for alerts like:<br><br><b>Adaptive Cruise Disabled</b><br><b>Brake Pedal Pressed</b><br><b>Parking Brake Engaged</b><br><b>Speed too Low</b> - Ajuste o volume para alertas como:<br><br><b>Piloto Automรกtico Adaptativo Desativado</b><br><b>Pedal de Freio Pressionado</b><br><b>Freio de Estacionamento Ativado</b><br><b>Velocidade Muito Baixa</b> + <b>Set the volume for alerts when openpilot disengages.</b><br><br>Examples include: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". + <b>Defina o volume dos alertas quando o openpilot for desativado.</b><br><br>Exemplos incluem: "Falha do Cruise: Reinicie o carro", "Freio de estacionamento acionado", "Pedal pressionado". Engage Volume - Engajar Volume + Volume de engajar - Adjust the volume for alerts like:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> - Ajuste o volume para alertas como:<br><br><b>NNFF Torque Controller carregado</b><br><b>openpilot ativado</b> + <b>Set the volume for the chime when openpilot engages</b>, such as after pressing the "RESUME" or "SET" steering wheel buttons. + <b>Defina o volume do alerta quando o openpilot engatar</b>, como apรณs pressionar os botรตes "RESUME" ou "SET" no volante. Prompt Volume - Volume do Prompt + Volume do Aviso - Adjust the volume for alerts like:<br><br><b>Car Detected in Blindspot</b><br><b>Steer Unavailable Below "X"</b><br><b>Speed too Low</b><br><b>Take Control, Turn Exceeds Steering Limit</b> - Ajuste o volume para alertas como:<br><br><b>Carro Detectado no Ponto Cego</b><br><b>Direรงรฃo Indisponรญvel Abaixo de "X"</b><br><b>Velocidade Muito Baixa</b><br><b>Assuma o Controle, Curva Excede o Limite de Direรงรฃo</b> + <b>Set the volume for prompts that need attention.</b><br><br>Examples include: "Car Detected in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". + <b>Defina o volume para avisos que exigem atenรงรฃo.</b><br><br>Exemplos incluem: "Veรญculo detectado no ponto cego", "Direรงรฃo temporariamente indisponรญvel", "Curva excede o limite de direรงรฃo". Prompt Distracted Volume - Volume Distraรญdo do Prompt + Volume de alerta de distraรงรฃo - Adjust the volume for alerts like:<br><br><b>Pay Attention, Driver Distracted</b><br><b>Touch Steering Wheel, Driver Unresponsive</b> - Ajuste o volume para alertas como:<br><br><b>Atenรงรฃo, Motorista Distraรญdo</b><br><b>Toque no Volante, Motorista Nรฃo Responsivo</b> + <b>Set the volume for prompts when openpilot detects driver distraction or unresponsiveness.</b><br><br>Examples include: "Pay Attention", "Touch Steering Wheel". + <b>Defina o volume dos avisos quando o openpilot detectar distraรงรฃo ou falta de resposta do motorista.</b><br><br>Exemplos incluem: "Preste atenรงรฃo", "Toque no volante". Refuse Volume - Volume de Recusa + Recusar volume - Adjust the volume for alerts like:<br><br><b>openpilot Unavailable</b> - Ajuste o volume para alertas como:<br><br><b>openpilot Indisponรญvel</b> + <b>Set the volume for alerts when openpilot refuses to engage.</b><br><br>Examples include: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". + <b>Defina o volume dos alertas quando o openpilot se recusar a engatar.</b><br><br>Exemplos incluem: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". Warning Soft Volume - Aviso de Volume Suave + Aviso de volume reduzido - Adjust the volume for alerts like:<br><br><b>BRAKE!, Risk of Collision</b><br><b>TAKE CONTROL IMMEDIATELY</b> - Ajuste o volume para alertas como:<br><br><b>FREIE!, Risco de Colisรฃo</b><br><b>ASSUMA O CONTROLE IMEDIATAMENTE</b> + <b>Set the volume for softer warnings about potential risks.</b><br><br>Examples include: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". + <b>Defina o volume para avisos mais suaves sobre riscos potenciais.</b><br><br>Exemplos incluem: "FREIE! Risco de Colisรฃo", "Direรงรฃo Temporariamente Indisponรญvel". Warning Immediate Volume - Aviso Volume Imediato + Volume Imediato de Alerta - Adjust the volume for alerts like:<br><br><b>DISENGAGE IMMEDIATELY, Driver Distracted</b><br><b>DISENGAGE IMMEDIATELY, Driver Unresponsive</b> - Ajuste o volume para alertas como:<br><br><b>DESENGATE IMEDIATAMENTE, Motorista Distraรญdo</b><br><b>DESENGATE IMEDIATAMENTE, Motorista Nรฃo Responsivo</b> + <b>Set the volume for the loudest warnings that require urgent attention.</b><br><br>Examples include: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". + <b>Defina o volume para os alertas mais altos que exigem atenรงรฃo imediata.</b><br><br>Exemplos incluem: "DESENGATE IMEDIATAMENTE โ€” Motorista Distraรญdo", "DESENGATE IMEDIATAMENTE โ€” Motorista Sem Resposta". FrogPilot Alerts - Alertas do FrogPilot + Alertas do FrogPilot - FrogPilot alerts for various events in openpilot. - Alertas do FrogPilot para vรกrios eventos no openpilot. + <b>Optional FrogPilot alerts</b> that highlight driving events in a more noticeable way. + <b>Alertas opcionais do FrogPilot</b> que destacam eventos de conduรงรฃo de forma mais perceptรญvel. - Goat Scream Steering Saturated Alert - Alerta de Saturaรงรฃo de Direรงรฃo de Grito de Cabra + Goat Scream + Grito de Cabra - The infamous "Goat Scream" that has brought both joy and anger to FrogPilot users all around the world! - O infame "Grito da Cabra" que trouxe tanto alegria quanto raiva aos usuรกrios do FrogPilot em todo o mundo! + <b>Play the infamous "Goat Scream" when the steering controller reaches its limit.</b> Based on the "Turn Exceeds Steering Limit" event. + <b>Reproduza o infame โ€œGoat Screamโ€ quando o controlador de direรงรฃo atingir seu limite.</b> Baseado no evento โ€œTurn Exceeds Steering Limitโ€. Green Light Alert - Alerta de Luz Verde + Alerta de Sinal Verde - Get an alert when the traffic light changes from red to green. - Receba um alerta quando o semรกforo mudar de vermelho para verde. + <b>Play an alert when the model predicts a red light has turned green.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights. This alert is based on end-to-end model predictions from camera input and may trigger even when the light has not changed.</i> + <b>Tocar um alerta quando o modelo prever que um sinal vermelho ficou verde.</b><br><br><i><b>Aviso</b>: o openpilot nรฃo detecta semรกforos explicitamente. Este alerta รฉ baseado em previsรตes de um modelo de ponta a ponta a partir da entrada da cรขmera e pode disparar mesmo quando o sinal nรฃo mudou.</i> Lead Departing Alert - Alerta de Saรญda de Lรญder + Alerta de Partida do Veรญculo ร  Frente - Get an alert when the lead vehicle begins to depart from a standstill. - Receba um alerta quando o veรญculo ร  frente comeรงar a partir de uma parada. + <b>Play an alert when the lead vehicle departs from a stop.</b> + <b>Reproduzir um alerta quando o veรญculo ร  frente partir de uma parada.</b> Loud "Car Detected in Blindspot" Alert - Alerta alto "Carro detectado no ponto cego" + Alerta alto: "Carro detectado no ponto cego" - A louder alert for when a vehicle is detected in the blindspot when attempting to change lanes. - Um alerta mais alto para quando um veรญculo for detectado no ponto cego ao tentar mudar de faixa. + <b>Play a louder alert if a vehicle is in the blind spot when attempting to change lanes.</b> Based on the "Car Detected in Blindspot" event. + <b>Reproduzir um alerta mais alto se houver um veรญculo no ponto cego ao tentar trocar de faixa.</b> Baseado no evento "Car Detected in Blindspot". Speed Limit Changed Alert - Alerta de Mudanรงa no Limite de Velocidade + Alerta de Mudanรงa de Limite de Velocidade - Get an alert when the speed limit changes. - Receba um alerta quando o limite de velocidade mudar. + <b>Play an alert when the posted speed limit changes.</b> + <b>Tocar um alerta quando o limite de velocidade sinalizado mudar.</b> Muted - Silenciado + Silenciado Auto - Auto + Automรกtico Test - Teste + Teste FrogPilotThemesPanel - Custom Theme - Tema Personalizado + Custom Themes + Temas personalizados - The overall appearance of openpilot. - A aparรชncia geral do openpilot. + <b>The overall look and feel of openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>A aparรชncia geral do openpilot.</b> Use o "Theme Maker" em "The Pond" para criar e compartilhar seus prรณprios temas! Color Scheme - Esquema de Cores + Esquema de cores - openpilot's color scheme. - -Want to submit your own color scheme? Share it in the "custom-themes" channel on the FrogPilot Discord! - esquema de cores do openpilot. - -Quer enviar seu prรณprio esquema de cores? Compartilhe no canal "custom-themes" no Discord do FrogPilot! + <b>The color scheme used throughout openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>O esquema de cores usado em todo o openpilot.</b> Use o "Theme Maker" no "The Pond" para criar e compartilhar seus prรณprios temas! + + + Distance Button + Botรฃo de distรขncia + + + <b>The distance button icons shown on the driving screen.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Os รญcones do botรฃo de distรขncia exibidos na tela de conduรงรฃo.</b> Use o "Theme Maker" no "The Pond" para criar e compartilhar seus prรณprios temas! Icon Pack - Pacote de รcones + Pacote de รcones - openpilot's icon pack. - -Want to submit your own icons? Share them in the "custom-themes" channel on the FrogPilot Discord! - pacote de รญcones do openpilot. - -Quer enviar seus prรณprios รญcones? Compartilhe-os no canal "custom-themes" no Discord do FrogPilot! + <b>The icon style used across openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>O estilo de รญcone usado em todo o openpilot.</b> Use o "Theme Maker" no "The Pond" para criar e compartilhar seus prรณprios temas! Sound Pack - Pacote de Sons + Pacote de som - openpilot's sound effects. - -Want to submit your own sounds? Share them in the "custom-themes" channel on the FrogPilot Discord! - Quer enviar seus prรณprios sons? Compartilhe-os no canal "custom-themes" no Discord do FrogPilot! + <b>The sound pack used by openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>O pacote de sons usado pelo openpilot.</b> Use o "Theme Maker" no "The Pond" para criar e compartilhar seus prรณprios temas! Steering Wheel - Volante + Volante - The steering wheel icon in the top right of the driving screen. - O รญcone do volante no canto superior direito da tela de direรงรฃo. - - - Themed turn signal animations. - -Want to submit your own animations? Share them in the "custom-themes" channel on the FrogPilot Discord! - Animaรงรตes temรกticas de sinal de direรงรฃo. - -Quer enviar suas prรณprias animaรงรตes? Compartilhe-as no canal "custom-themes" no Discord do FrogPilot! - - - Download Status - Status do Download - - - Holiday Themes - Temas de Feriado - - - Holiday-based visual themes for openpilot. Minor holidays last one day; major holidays (Christmas, Easter, Halloween, etc.) continue all week. - Temas visuais baseados em feriados para openpilot. Feriados menores duram um dia; feriados maiores (Natal, Pรกscoa, Halloween, etc.) continuam a semana toda. - - - Rainbow Path - Caminho do Arco-รris - - - The path on the driving screen turns into a Mario Kart inspired "Rainbow Path". - O caminho na tela de direรงรฃo se transforma em uma "Pista Arco-รris" inspirada em Mario Kart. - - - Random Events - Eventos Aleatรณrios - - - Random cosmetic events that trigger after certain driving conditions. These events are purely for fun and don't affect driving controls! - Eventos cosmรฉticos aleatรณrios que sรฃo acionados apรณs certas condiรงรตes de direรงรฃo. Esses eventos sรฃo puramente para diversรฃo e nรฃo afetam os controles de direรงรฃo! - - - Random Themes - Temas Aleatรณrios - - - Cycles through your downloaded themes randomly on each boot, giving every theme in your collection a chance to shine! - Alterna aleatoriamente entre seus temas baixados a cada inicializaรงรฃo, dando a cada tema da sua coleรงรฃo a chance de brilhar! - - - Startup Alert - Alerta de Inicializaรงรฃo - - - The text of the "Startup Alert" message that appears at the beginning of a drive. - O texto da mensagem "Alerta de Inicializaรงรฃo" que aparece no inรญcio de uma unidade. - - - DELETE - EXCLUIR - - - DOWNLOAD - DOWNLOAD - - - SELECT - SELECT - - - Select a color scheme to delete - Selecione um esquema de cores para excluir - - - Are you sure you want to delete the "%1" color scheme? - Tem certeza de que deseja excluir o esquema de cores "%1"? - - - Delete - Excluir - - - Select a color scheme to download - Selecione um esquema de cores para baixar - - - Select a color scheme - Selecione um esquema de cores - - - Select a distance icon pack to delete - Selecione um pacote de รญcones de distรขncia para excluir - - - Are you sure you want to delete the "%1" distance icon pack? - Tem certeza de que deseja excluir o pacote de รญcones de distรขncia "%1"? - - - Select a distance icon pack to download - Selecione um pacote de รญcones de distรขncia para baixar - - - Select a distance icon pack - Selecione um pacote de รญcones de distรขncia - - - Select an icon pack to delete - Selecione um pacote de รญcones para excluir - - - Are you sure you want to delete the "%1" icon pack? - Tem certeza de que deseja excluir o pacote de รญcones "%1"? - - - Select an icon pack to download - Selecione um pacote de รญcones para baixar - - - Select an icon pack - Selecione um pacote de รญcones - - - Select a signal animation to delete - Selecione uma animaรงรฃo de sinal para excluir - - - Are you sure you want to delete the "%1" signal animation? - Tem certeza de que deseja excluir a animaรงรฃo de sinal "%1"? - - - Select a signal animation to download - Selecione uma animaรงรฃo de sinal para baixar - - - Select a signal animation - Selecione uma animaรงรฃo de sinal - - - Select a sound pack to delete - Selecione um pacote de som para excluir - - - Are you sure you want to delete the "%1" sound pack? - Tem certeza de que deseja excluir o pacote de som "%1"? - - - Select a sound pack to download - Selecione um pacote de som para baixar - - - Select a sound pack - Selecione um pacote de som - - - Select a steering wheel to delete - Selecione um volante para excluir - - - Are you sure you want to delete the "%1" steering wheel? - Tem certeza de que deseja excluir o volante "%1"? - - - Select a steering wheel to download - Selecione um volante para baixar - - - Select a steering wheel - Selecione um volante - - - STOCK - ESTOQUE - - - FROGPILOT - FROGPILOT - - - CUSTOM - PERSONALIZADO - - - CLEAR - LIMPAR - - - Enter the text for the top half - Digite o texto para a metade superior - - - Characters: 0/%1 - Caracteres: 0/%1 - - - Enter the text for the bottom half - Digite o texto para a metade inferior - - - "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! - "Temas Aleatรณrios" sรณ funciona com temas baixados, entรฃo certifique-se de baixar os temas que vocรช quer que ele use! - - - CANCEL - CANCELAR - - - Are you sure you want to completely reset your startup message? - Tem certeza de que deseja redefinir completamente sua mensagem de inicializaรงรฃo? + <b>The steering-wheel icon</b> shown at the top-right of the driving screen. Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>O รญcone do volante</b> mostrado no canto superior direito da tela de conduรงรฃo. Use o "Theme Maker" no "The Pond" para criar e compartilhar seus prรณprios temas! Turn Signal - Sinal de Direรงรฃo + Seta + + + <b>Themed turn-signal animations.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Animaรงรตes de seta temรกticas.</b> Use o "Theme Maker" em "The Pond" para criar e compartilhar seus prรณprios temas! + + + Download Status + Status de download + + + Holiday Themes + Temas de Festividades + + + <b>Themes based on U.S. holidays.</b> Minor holidays last one day; major holidays (Christmas, Easter, Halloween) run for a full week. + <b>Temas baseados em feriados dos EUA.</b> Feriados menores duram um dia; feriados maiores (Natal, Pรกscoa, Halloween) duram uma semana inteira. + + + Rainbow Path + Caminho Arco-รris + + + <b>Color the driving path like a Mario Kartโ€“style "Rainbow Road".</b> + <b>Colorir a trajetรณria de conduรงรฃo como uma โ€œRainbow Roadโ€ ao estilo Mario Kart.</b> + + + Random Events + Eventos Aleatรณrios + + + <b>Occasional on-screen effects triggered by driving conditions.</b> These are purely a visual and don't impact how openpilot drives! + <b>Efeitos ocasionais na tela acionados pelas condiรงรตes de conduรงรฃo.</b> Eles sรฃo puramente visuais e nรฃo afetam como o openpilot dirige! + + + Random Themes + Temas aleatรณrios + + + <b>Pick a random theme between each drive</b> from the themes you have downloaded. Great for variety without changing settings while driving. + <b>Escolha um tema aleatรณrio entre cada viagem</b> dentre os temas que vocรช baixou. ร“timo para variar sem alterar as configuraรงรตes enquanto dirige. + + + Startup Alert + Alerta de inicializaรงรฃo + + + <b>Customize the "Startup Alert" message</b> shown at the start of each drive. + <b>Personalize a mensagem "Alerta de Inicializaรงรฃo"</b> exibida no inรญcio de cada viagem. + + + DELETE + EXCLUIR + + + DOWNLOAD + BAIXAR + + + SELECT + SELECIONAR + + + Select a color scheme to delete + Selecione um esquema de cores para excluir + + + Delete the "%1" color scheme? + Excluir o esquema de cores "%1"? + + + Delete + Excluir + + + Select a color scheme to download + Selecione um esquema de cores para baixar + + + Select a color scheme + Selecionar um esquema de cores + + + Select a distance icon pack to delete + Selecione um pacote de รญcones de distรขncia para excluir + + + Delete the "%1" distance icon pack? + Excluir o pacote de รญcones de distรขncia "%1"? + + + Select a distance icon pack to download + Selecione um pacote de รญcones de distรขncia para baixar + + + Select a distance icon pack + Selecione um pacote de รญcones de distรขncia + + + Select an icon pack to delete + Selecione um pacote de รญcones para excluir + + + Delete the "%1" icon pack? + Excluir o pacote de รญcones "%1"? + + + Select an icon pack to download + Selecione um pacote de รญcones para baixar + + + Select an icon pack + Selecione um pacote de รญcones + + + Select a signal animation to delete + Selecione uma animaรงรฃo de sinal para excluir + + + Delete the "%1" signal animation? + Excluir a animaรงรฃo do sinal "%1"? + + + Select a signal animation to download + Selecione uma animaรงรฃo de sinal para baixar + + + Select a signal animation + Selecione uma animaรงรฃo de seta + + + Select a sound pack to delete + Selecione um pacote de som para excluir + + + Delete the "%1" sound pack? + Excluir o pacote de som "%1"? + + + Select a sound pack to download + Selecione um pacote de sons para baixar + + + Select a sound pack + Selecione um pacote de sons + + + Select a steering wheel to delete + Selecione um volante para excluir + + + Delete the "%1" steering wheel? + Excluir o volante "%1"? + + + Select a steering wheel to download + Selecione um volante para baixar + + + Select a steering wheel + Selecione um volante + + + STOCK + ORIGINAL + + + FROGPILOT + FROGPILOT + + + CUSTOM + PERSONALIZADO + + + CLEAR + LIMPAR + + + Enter the text for the top half + Insira o texto para a metade superior + + + Characters: 0/%1 + Caracteres: 0/%1 + + + Enter the text for the bottom half + Digite o texto para a metade inferior + + + Are you sure you want to completely reset your startup message? + Tem certeza de que deseja redefinir completamente sua mensagem de inicializaรงรฃo? + + + "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! + "Temas Aleatรณrios" sรณ funciona com temas baixados, entรฃo certifique-se de baixar os temas que vocรช quer que ele use! + + + CANCEL + CANCELAR FrogPilotUtilitiesPanel Debug Mode - Modo de Depuraรงรฃo + Modo de depuraรงรฃo - Debug FrogPilot during the next drive by utilizing all of FrogPilot's developer metrics for either bug reporting, or self-debugging. - Depure o FrogPilot durante a prรณxima conduรงรฃo utilizando todas as mรฉtricas de desenvolvedor do FrogPilot para relatรณrios de bugs ou auto-depuraรงรฃo. + <b>Use FrogPilot's developer metrics on your next drive</b> to diagnose issues and improve bug reports. + <b>Use as mรฉtricas de desenvolvedor do FrogPilot na sua prรณxima direรงรฃo</b> para diagnosticar problemas e melhorar relatรณrios de bugs. Flash Panda - Panda Veloz + Gravar o Panda FLASH - FLASH + PISCAR - Flash the Panda's firmware. Use if you're running into issues with the Panda. - Atualize o firmware do Panda. Use se estiver enfrentando problemas com o Panda. + <b>Reinstall the Panda firmware</b> to fix connection or reliability issues. + <b>Reinstale o firmware do Panda</b> para corrigir problemas de conexรฃo ou confiabilidade. - Are you sure you want to flash the Panda? - Tem certeza de que deseja atualizar o Panda? + Are you sure you want to flash the Panda firmware? + Tem certeza de que deseja atualizar o firmware do Panda? Flash - Flash + Piscar Flashing... - Piscando... + Gravando... Flashed! - Piscou! + Flash concluรญdo! Rebooting... - Reiniciando... + Reiniciando... - Force Started State - Estado de Inรญcio Forรงado + Force Drive State + Forรงar Estado de Conduรงรฃo - Force openpilot either offroad or onroad. - Forรงar o openpilot a ficar fora de estrada ou na estrada. + <b>Manually set openpilot to be offroad or onroad.</b> + <b>Defina manualmente o openpilot como offroad ou onroad.</b> OFFROAD - OFFROAD + FORA DE ESTRADA ONROAD - ONROAD + EM CONDUร‡รƒO OFF - DESLIGADO + DESLIGADO Report a Bug or an Issue - Relatar um Bug ou um Problema + Relatar um bug ou problema REPORT - RELATร“RIO + RELATร“RIO - Let FrogsGoMoo know about an issue you're facing! - Informe FrogsGoMoo sobre um problema que vocรช estรก enfrentando! + <b>Send a bug report</b> so we can help fix the problem! + <b>Envie um relatรณrio de erro</b> para que possamos ajudar a corrigir o problema! + + + Please connect to the internet before sending a report! + Conecte-se ร  internet antes de enviar um relatรณrio! I saw an alert that said "openpilot crashed" - Vi um alerta que dizia "openpilot crashed" + Vi um alerta que dizia "openpilot travou" - What's going on? - O que estรก acontecendo? + Acceleration feels harsh or jerky + A aceleraรงรฃo parece brusca ou sacolejante - Please describe what's happening - Por favor, descreva o que estรก acontecendo. - - - Send Report - Enviar Relatรณrio - - - What's your Discord username? - Qual รฉ o seu nome de usuรกrio no Discord? - - - Your report has been submitted. Thanks for letting us know! - Seu relatรณrio foi enviado. Obrigado por nos informar! - - - Reset Toggles to Default - Redefinir Alternรขncias para Padrรฃo - - - RESET - REDEFINIR - - - Reset all toggles to their default values. - Redefinir todos os alternadores para seus valores padrรฃo. - - - Are you sure you want to reset all toggles to their default values? - Tem certeza de que deseja redefinir todos os alternadores para seus valores padrรฃo? - - - Reset - Redefinir - - - Resetting... - Redefinindo... - - - Reset! - Redefinir! - - - Reset Toggles to Match Stock openpilot - Redefinir Alternadores para Corresponder ao openpilot de Fรกbrica - - - Reset all toggles to match stock openpilot. - Redefinir todos os toggles para corresponder ao openpilot padrรฃo. - - - Are you sure you want to reset all toggles to match stock openpilot? - Tem certeza de que deseja redefinir todas as alternรขncias para corresponder ao openpilot padrรฃo? - - - Ensure your device has an internet connection before sending a report! - Certifique-se de que seu dispositivo tenha uma conexรฃo com a internet antes de enviar um relatรณrio! - - - Acceleration feels too harsh or jerky - A aceleraรงรฃo parece muito brusca ou irregular. - - - An alert confused me and I didnโ€™t know what it meant - Um alerta me confundiu e eu nรฃo sabia o que significava. + An alert was unclear and I didn't know what it meant + Um alerta estava confuso e eu nรฃo sabia o que significava Braking is too sudden or uncomfortable - A frenagem รฉ muito brusca ou desconfortรกvel + A frenagem รฉ muito brusca ou desconfortรกvel - Iโ€™m not sure if this is normal or a bug: - Nรฃo tenho certeza se isso รฉ normal ou um bug: + I'm not sure if this is normal or a bug: + Nรฃo tenho certeza se isso รฉ normal ou um bug: - Lane changes donโ€™t work properly or feel unsafe - As mudanรงas de faixa nรฃo funcionam corretamente ou parecem inseguras. + My screen froze or is stuck loading something + Minha tela travou ou estรก presa carregando algo - My screen froze or got stuck on loading - Minha tela travou ou ficou presa no carregamento - - - My steering wheel buttons arenโ€™t working - Os botรตes do meu volante nรฃo estรฃo funcionando + My steering wheel buttons aren't working + Meus botรตes do volante nรฃo estรฃo funcionando openpilot disengages when I don't expect it - o openpilot desativa quando eu nรฃo espero - - - openpilot doesnโ€™t resume after I stop - openpilot nรฃo retoma apรณs eu parar + o openpilot desativa quando eu nรฃo espero openpilot doesn't react to stopped vehicles ahead - openpilot nรฃo reage a veรญculos parados ร  frente + o openpilot nรฃo reage a veรญculos parados ร  frente + + + openpilot doesn't resume from a stop + o openpilot nรฃo retoma apรณs uma parada openpilot feels sluggish or slow to respond - openpilot parece lento ou demora a responder + openpilot parece lento ou demora a responder Steering feels twitchy or unnatural - A direรงรฃo parece instรกvel ou nรฃo natural + A direรงรฃo parece nervosa ou antinatural - The car doesnโ€™t follow curves well - O carro nรฃo faz bem as curvas + The car doesn't follow curves well + O carro nรฃo faz curvas bem - The car isnโ€™t staying centered in its lane - O carro nรฃo estรก se mantendo centralizado na faixa. - - - The speed or display info looks wrong - A velocidade ou as informaรงรตes de exibiรงรฃo parecem erradas + The car isn't staying centered in its lane + O carro nรฃo estรก se mantendo centrado na faixa Something else (please describe) - Algo mais (por favor, descreva) + Outra coisa (descreva, por favor) + + + What's going on? + O que estรก acontecendo? + + + Please describe what's happening + Descreva o que estรก acontecendo + + + Send Report + Enviar relatรณrio + + + What's your Discord username? + Qual รฉ o seu nome de usuรกrio no Discord? + + + Report Sent! Thanks for letting us know! + Relatรณrio enviado! Obrigado por nos informar! + + + Reset Toggles to Default + Redefinir Alternรขncias para Padrรฃo + + + RESET + REDEFINIR + + + <b>Reset all toggles to their default values.</b> + <b>Redefinir todas as opรงรตes para seus valores padrรฃo.</b> + + + Are you sure you want to reset all toggles to their default values? + Tem certeza de que deseja redefinir todas as alternรขncias para seus valores padrรฃo? + + + Reset + Redefinir + + + Resetting... + Redefinindo... + + + Reset! + Redefinir! + + + Reset Toggles to Stock openpilot + Redefinir alternรขncias para o openpilot padrรฃo + + + <b>Reset all toggles to match stock openpilot.</b> + <b>Redefinir todas as opรงรตes para corresponder ao openpilot padrรฃo.</b> + + + Are you sure you want to reset all toggles to match stock openpilot? + Tem certeza de que deseja redefinir todas as alternรขncias para corresponder ao openpilot padrรฃo? FrogPilotVehiclesPanel - Select Make - Selecionar Marca + Car Make + Marca do carro SELECT - SELECT + SELECIONAR - Select a Make - Selecione uma marca + Choose your car make + Escolha a marca do seu carro - Select Model - Selecionar Modelo + Car Model + Modelo do carro - Select a Model - Selecione um Modelo + Choose your car model + Escolha o modelo do seu carro Disable Automatic Fingerprint Detection - Desativar Detecรงรฃo Automรกtica de Impressรฃo Digital + Desativar detecรงรฃo automรกtica de impressรฃo digital - Forces the selected fingerprint and prevents it from ever changing. - Forรงa a impressรฃo digital selecionada e impede que ela mude. + <b>Force the selected fingerprint</b> and prevent it from ever changing. + <b>Forรงar a impressรฃo digital selecionada</b> e impedir que ela jamais mude. Disable openpilot Longitudinal Control - Desativar Controle Longitudinal do openpilot + Desativar o Controle Longitudinal do openpilot - Disables openpilot longitudinal control and uses the car's stock ACC instead. - Desativa o controle longitudinal do openpilot e usa o ACC original do carro em vez disso. + <b>Disable openpilot longitudinal</b> and use the car's stock ACC instead. + <b>Desative o controle longitudinal do openpilot</b> e use o ACC original do carro. Are you sure you want to completely disable openpilot longitudinal control? - Tem certeza de que deseja desativar completamente o controle longitudinal do openpilot? + Tem certeza de que deseja desativar completamente o controle longitudinal do openpilot? General Motors Settings - Configuraรงรตes da General Motors + Configuraรงรตes da General Motors - Settings specific to <b>General Motors</b> vehicles. - Configuraรงรตes especรญficas para veรญculos da <b>General Motors</b>. + <b>FrogPilot features for General Motors vehicles.</b> + <b>Recursos do FrogPilot para veรญculos da General Motors.</b> FrogsGoMoo's Experimental Tune - A Melodia Experimental de FrogsGoMoo + Ajuste Experimental de FrogsGoMoo - <b>FrogsGoMoo's</b> experimental <b>General Motors</b> tune that aims to smoothen out stopping and takeoff control based on nothing but guesswork. Use at your own risk! - <b>FrogsGoMoo's</b> experimento de ajuste da <b>General Motors</b> que visa suavizar o controle de parada e partida baseado apenas em suposiรงรตes. Use por sua conta e risco! + <b>Experimental GM tune by FrogsGoMoo</b> that attempts to smoothen stopping and takeoff control. Use at your own risk! + <b>Ajuste experimental da GM por FrogsGoMoo</b> que tenta suavizar o controle de parada e arrancada. Use por sua conta e risco! Smooth Pedal Response on Hills - Resposta suave do pedal em subidas + Resposta Suave do Pedal em Subidas e Descidas - Smoothen the acceleration and braking when driving uphill or downhill. - Suavize a aceleraรงรฃo e a frenagem ao dirigir em subidas ou descidas. + <b>Smoothen acceleration and braking</b> when driving downhill/uphill. + <b>Suavize a aceleraรงรฃo e a frenagem</b> ao dirigir em descidas/subidas. - Stop and Go Hack - Pare e Continue Hack + Stop-and-Go Hack + Hack de Para-e-Anda - Force stop and go on the <b>2017 Chevy Volt</b>. - Forรงar parada e seguir no <b>Chevy Volt 2017</b>. + <b>Force stop-and-go</b> on the 2017 Chevy Volt. + <b>Forรงar para-e-anda</b> no Chevy Volt 2017. Hyundai/Kia/Genesis Settings - Configuraรงรตes Hyundai/Kia/Genesis + Configuraรงรตes Hyundai/Kia/Genesis - Settings specific to <b>Hyundai</b>, <b>Kia</b>, and <b>Genesis</b> vehicles. - Configuraรงรตes especรญficas para veรญculos <b>Hyundai</b>, <b>Kia</b> e <b>Genesis</b>. + <b>FrogPilot features for Genesis, Hyundai, and Kia vehicles.</b> + <b>Recursos do FrogPilot para veรญculos Genesis, Hyundai e Kia.</b> comma's New Longitudinal API - Nova API Longitudinal da comma + Nova API Longitudinal da comma - comma's new longitudinal control system that has shown great improvement with acceleration and braking, but has issues on some <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> vehicles. - o novo sistema de controle longitudinal da comma que mostrou grande melhoria com aceleraรงรฃo e frenagem, mas tem problemas em alguns veรญculos <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b>. + <b>comma's new gas and brake control system</b> that improves acceleration and braking but may cause issues on some Genesis/Hyundai/Kia vehicles. + <b>novo sistema de controle de acelerador e freio da comma</b> que melhora a aceleraรงรฃo e a frenagem, mas pode causar problemas em alguns veรญculos Genesis/Hyundai/Kia. "Taco Bell Run" Torque Hack - Taco Bell Run" Torque Hack + Hack de Torque "Taco Bell Run" - The torque hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to improve turning at low speeds by increasing the allowed steering torque. - O hack de torque do drive "Taco Bell Run" de 2022 da comma. Projetado para melhorar as curvas em baixas velocidades aumentando o torque de direรงรฃo permitido. + <b>The steering torque hack from comma's 2022 "Taco Bell Run".</b> Designed to increase steering torque at low speeds for left and right turns. + <b>O hack de torque de direรงรฃo do โ€œTaco Bell Runโ€ de 2022 da comma.</b> Projetado para aumentar o torque de direรงรฃo em baixas velocidades para curvas ร  esquerda e ร  direita. Toyota/Lexus Settings - Configuraรงรตes da Toyota/Lexus + Configuraรงรตes Toyota/Lexus - Settings specific to <b>Toyota</b> and <b>Lexus</b> vehicles. - Configuraรงรตes especรญficas para veรญculos <b>Toyota</b> e <b>Lexus</b>. + <b>FrogPilot features for Lexus and Toyota vehicles.</b> + <b>Recursos do FrogPilot para veรญculos Lexus e Toyota.</b> Automatically Lock/Unlock Doors - Trancar/Destrancar Portas Automaticamente + Travar/Destravar Portas Automaticamente - Automatically lock the doors when shifting into drive and unlock them when shifting into park. - Trave automaticamente as portas ao mudar para drive e destrave-as ao mudar para park. + <b>Automatically lock/unlock doors</b> when shifting in and out of drive. + <b>Trancar/destrancar portas automaticamente</b> ao engatar e desengatar a marcha. - Cluster Speed Offset - Deslocamento de Velocidade do Cluster + Dashboard Speed Offset + Compensaรงรฃo de Velocidade do Painel - The cluster speed offset used by openpilot to match the speed displayed on the dash. - O desvio de velocidade do cluster usado pelo openpilot para corresponder ร  velocidade exibida no painel. + <b>The speed offset openpilot uses to match the speed on the dashboard display.</b> + <b>O desvio de velocidade que o openpilot usa para corresponder ร  velocidade no painel.</b> FrogsGoMoo's Personal Tweaks - Ajustes Pessoais do FrogsGoMoo + Ajustes Pessoais de FrogsGoMoo - <b>FrogsGoMoo's</b> personal tweaks for quicker acceleration and smoother braking. - <b>FrogsGoMoo's</b> ajustes pessoais para aceleraรงรฃo mais rรกpida e frenagem mais suave. + <b>Personal tweaks by FrogsGoMoo for quicker acceleration and smoother braking.</b> + <b>Ajustes pessoais de FrogsGoMoo para aceleraรงรฃo mais rรกpida e frenagens mais suaves.</b> Lock Doors On Ignition Off After - Travar portas ao desligar a igniรงรฃo apรณs + Travar as portas apรณs desligar a igniรงรฃo - Automatically lock the doors after the car's ignition has been turned off and no one is detected in either of the front seats. - Travar automaticamente as portas apรณs a igniรงรฃo do carro ser desligada e ninguรฉm ser detectado em nenhum dos assentos dianteiros. + <b>Automatically lock the doors on ignition off</b> when no one is detected in the front seats. + <b>Travar automaticamente as portas ao desligar a igniรงรฃo</b> quando ninguรฉm for detectado nos bancos dianteiros. - Force stop and go on <b>Toyota</b>/<b>Lexus</b> vehicles without stock stop and go functionality. - Forรงar parada e partida em veรญculos <b>Toyota</b>/<b>Lexus</b> sem funcionalidade de parada e partida de fรกbrica. + <b>Force stop-and-go</b> on Lexus/Toyota vehicles without stock stop-and-go functionality. + <b>Forรงar stop-and-go</b> em veรญculos Lexus/Toyota sem funcionalidade stop-and-go de fรกbrica. MANAGE - GERENCIAR + GERENCIAR Lock - Trancar + Bloquear Unlock - Desbloquear + Desbloquear Never - Nunca + Nunca seconds - segundos + segundos + + + None + Nenhum + + + Vehicle Info + Informaรงรตes do veรญculo + + + <b>Information about your vehicle in regards to openpilot support and functionality.</b> + <b>Informaรงรตes sobre seu veรญculo em relaรงรฃo ao suporte e ร  funcionalidade do openpilot.</b> + + + <b>Detected 3rd party hardware.</b> + <b>Hardware de terceiros detectado.</b> + + + openpilot Longitudinal Support + Suporte Longitudinal do openpilot + + + <b>Can openpilot control the vehicle's acceleration and braking?</b> + <b>O openpilot pode controlar a aceleraรงรฃo e a frenagem do veรญculo?</b> + + + <b>Does your vehicle support the "comma pedal"?</b> + <b>Seu veรญculo รฉ compatรญvel com o "comma pedal"?</b> + + + Radar Support + Suporte a Radar + + + <b>Does openpilot use the vehicle's radar data</b> alongside the device's camera for tracking lead vehicles? + <b>O openpilot usa os dados do radar do veรญculo</b> junto com a cรขmera do dispositivo para rastrear veรญculos ร  frente?</b + + + SDSU Support + Suporte SDSU + + + <b>Does your vehicle support "SDSUs"?</b> + <b>Seu veรญculo รฉ compatรญvel com "SDSUs"?</b> + + + Stop-and-Go Support + Suporte a para-e-anda + + + <b>Does your vehicle support stop-and-go driving?</b> + <b>Seu veรญculo suporta dirigir em para-e-anda?</b> + + + VIEW + VER + + + Yes + Sim + + + No + Nรฃo + + + 3rd Party Hardware Detected + Hardware de terceiros detectado + + + Blind Spot Support + Suporte ao Ponto Cego + + + <b>Does openpilot use the vehicle's blind spot data?</b> + <b>O openpilot usa os dados de ponto cego do veรญculo?</b> + + + comma Pedal Support + Compatibilidade com comma Pedal FrogPilotVisualsPanel Advanced UI Controls - Controles de UI Avanรงados + Controles Avanรงados de Interface - Advanced settings for fine-tuning openpilot's driving screen. - Configuraรงรตes avanรงadas para ajuste fino da tela de conduรงรฃo do openpilot. + <b>Advanced visual changes</b> to fine-tune how the driving screen looks. + <b>Alteraรงรตes visuais avanรงadas</b> para ajustar com precisรฃo a aparรชncia da tela de conduรงรฃo. Hide Current Speed - Ocultar Velocidade Atual + Ocultar velocidade atual - Hide the current speed from the driving screen. - Oculte a velocidade atual da tela de conduรงรฃo. + <b>Hide the current speed</b> from the driving screen. + <b>Ocultar a velocidade atual</b> da tela de conduรงรฃo. Hide Lead Marker - Ocultar Marcador de Chumbo + Ocultar marcador do veรญculo ร  frente - Hide the marker for lead vehicles from the driving screen. - Oculte o marcador para veรญculos lรญderes da tela de conduรงรฃo. + <b>Hide the lead-vehicle marker</b> from the driving screen. + <b>Ocultar o marcador do veรญculo ร  frente</b> da tela de conduรงรฃo. Hide Map Settings Button - Ocultar botรฃo de configuraรงรตes do mapa + Ocultar botรฃo de configuraรงรตes do mapa - Hide the map settings button from the driving screen. - Ocultar o botรฃo de configuraรงรตes do mapa da tela de navegaรงรฃo. + <b>Hide the map settings button or map</b> from the driving screen. + <b>Ocultar o botรฃo de configuraรงรตes do mapa ou o mapa</b> da tela de conduรงรฃo. Hide Max Speed - Ocultar Velocidade Mรกxima + Ocultar Velocidade Mรกxima - Hide the max speed from the driving screen. - Oculte a velocidade mรกxima da tela de conduรงรฃo. + <b>Hide the max speed</b> from the driving screen. + <b>Ocultar a velocidade mรกxima</b> da tela de conduรงรฃo. Hide Non-Critical Alerts - Ocultar alertas nรฃo crรญticos + Ocultar alertas nรฃo crรญticos - Hide non-critical alerts from the driving screen. - Ocultar alertas nรฃo crรญticos da tela de conduรงรฃo. + <b>Hide non-critical alerts</b> from the driving screen. + <b>Ocultar alertas nรฃo crรญticos</b> da tela de conduรงรฃo. Hide Speed Limits - Ocultar limites de velocidade + Ocultar limites de velocidade - Hide the speed limits from the driving screen. - Oculte os limites de velocidade da tela de direรงรฃo. + <b>Hide posted speed limits</b> from the driving screen. + <b>Ocultar limites de velocidade publicados</b> da tela de conduรงรฃo. Use Wheel Speed - Usar Velocidade da Roda + Usar Velocidade da Roda - Use the vehicle's wheel speed instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives. - Use a velocidade da roda do veรญculo em vez da velocidade do cluster. Esta รฉ uma mudanรงa puramente visual e nรฃo impacta como o openpilot dirige. + <b>Use the vehicle's wheel speed</b> instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives! + <b>Use a velocidade das rodas do veรญculo</b> em vez da velocidade do painel. Isso รฉ apenas uma alteraรงรฃo visual e nรฃo impacta como o openpilot dirige! Developer UI - Interface do Desenvolvedor + Interface do Desenvolvedor - Detailed information about openpilot's internal operations. - Informaรงรตes detalhadas sobre as operaรงรตes internas do openpilot. + <b>Detailed information about openpilot's internal operations.</b> + <b>Informaรงรตes detalhadas sobre as operaรงรตes internas do openpilot.</b> Adjacent Path Metrics - Mรฉtricas de Caminho Adjacente + Mรฉtricas de Caminho Adjacente - Metrics displayed on top of the adjacent lanes measuring their current width. - Mรฉtricas exibidas no topo das faixas adjacentes medindo sua largura atual. + <b>Show the width of the adjacent lanes.</b> + <b>Mostrar a largura das faixas adjacentes.</b> Developer Metrics - Mรฉtricas do Desenvolvedor + Mรฉtricas do Desenvolvedor - Performance data, sensor readings, and system metrics for debugging and optimizing openpilot. - Dados de desempenho, leituras de sensores e mรฉtricas do sistema para depuraรงรฃo e otimizaรงรฃo do openpilot. + <b>Performance data, sensor readings, and system metrics</b> for debugging and optimizing openpilot. + <b>Dados de desempenho, leituras de sensores e mรฉtricas do sistema</b> para depurar e otimizar o openpilot. Border Metrics - Mรฉtricas de Fronteira + Mรฉtricas de Borda - Metrics displayed around the border of the driving screen.<br><br><b>Blind Spot</b>: Turn the border red when a vehicle is detected in a blind spot<br><b>Steering Torque</b>: Highlight the border green to red in accordance to the amount of steering torque being used<br><b>Turn Signal</b>: Flash the border yellow when a turn signal is active - Mรฉtricas exibidas ao redor da borda da tela de conduรงรฃo.<br><br><b>Ponto Cego</b>: Mude a borda para vermelho quando um veรญculo for detectado em um ponto cego<br><b>Torque de Direรงรฃo</b>: Destaque a borda de verde a vermelho de acordo com a quantidade de torque de direรงรฃo sendo usada<br><b>Sinal de Direรงรฃo</b>: Pisque a borda em amarelo quando um sinal de direรงรฃo estiver ativo + <b>Show statuses along the border of the driving screen.</b><br><br><b>Blind Spot</b>: The border turns red when a vehicle is in a blind spot<br><b>Steering Torque</b>: The border goes from green to red according to how much steering torque is being used<br><b>Turn Signal</b>: The border flashes yellow when a turn signal is on + <b>Mostrar status ao longo da borda da tela de conduรงรฃo.</b><br><br><b>Ponto Cego</b>: A borda fica vermelha quando hรก um veรญculo no ponto cego<br><b>Torque de Direรงรฃo</b>: A borda vai de verde a vermelho de acordo com quanto torque de direรงรฃo estรก sendo usado<br><b>Seta</b>: A borda pisca em amarelo quando a seta estรก ligada Lead Info - Informaรงรตes de Lead + Informaรงรตes do lรญder - Metrics displayed under vehicle markers listing their distance and current speed. - Mรฉtricas exibidas sob os marcadores de veรญculos listando sua distรขncia e velocidade atual. + <b>Show each tracked vehicle's distance and speed</b> below its marker. + <b>Mostrar a distรขncia e a velocidade de cada veรญculo rastreado</b> abaixo de seu marcador. FPS Display - Exibiรงรฃo de FPS + Exibiรงรฃo de FPS - Display the <b>Frames Per Second (FPS)</b> at the bottom of the driving screen. - Exibir os <b>Frames Por Segundo (FPS)</b> na parte inferior da tela de direรงรฃo. + <b>Show the frames per second (FPS)</b> at the bottom of the driving screen. + <b>Mostrar os quadros por segundo (FPS)</b> na parte inferior da tela de conduรงรฃo. Numerical Temperature Gauge - Medidor de Temperatura Numรฉrico + Medidor de Temperatura Numรฉrico - Use numerical temperature readings instead of status labels in the sidebar. - Use leituras numรฉricas de temperatura em vez de rรณtulos de status na barra lateral. - - - Display system information (<b>CPU</b>, <b>GPU</b>, <b>RAM usage</b>, <b>IP address</b>, <b>device storage</b>) in the sidebar. - Exibir informaรงรตes do sistema (<b>CPU</b>, <b>GPU</b>, <b>uso de RAM</b>, <b>endereรงo IP</b>, <b>armazenamento do dispositivo</b>) na barra lateral. - - - Use International System of Units - Use o Sistema Internacional de Unidades - - - Display measurements using the <b>International System of Units (SI)</b> standard. - Exibir mediรงรตes usando o padrรฃo <b>Sistema Internacional de Unidades (SI)</b>. - - - Developer Sidebar - Barra Lateral do Desenvolvedor - - - Display debugging info and metrics in a dedicated sidebar on the right side of the screen. - Exibir informaรงรตes de depuraรงรฃo e mรฉtricas em uma barra lateral dedicada no lado direito da tela. - - - Metric #1 - Mรฉtrica #1 - - - Metric to display in the first metric in the "Developer Sidebar". - Mรฉtrica para exibir na primeira mรฉtrica na "Barra Lateral do Desenvolvedor". - - - Metric #2 - Mรฉtrica #2 - - - Metric to display in the second metric in the "Developer Sidebar". - Mรฉtrica para exibir na segunda mรฉtrica na "Barra Lateral do Desenvolvedor". - - - Metric #3 - Mรฉtrica #3 - - - Metric to display in the third metric in the "Developer Sidebar". - Mรฉtrica para exibir na terceira mรฉtrica na "Barra Lateral do Desenvolvedor". - - - Metric #4 - Mรฉtrica #4 - - - Metric to display in the fourth metric in the "Developer Sidebar". - Mรฉtrica para exibir na quarta mรฉtrica na "Barra Lateral do Desenvolvedor". - - - Metric #5 - Mรฉtrica nยบ 5 - - - Metric to display in the fifth metric in the "Developer Sidebar". - Mรฉtrica para exibir na quinta mรฉtrica na "Barra Lateral do Desenvolvedor". - - - Metric #6 - Mรฉtrica #6 - - - Metric to display in the sixth metric in the "Developer Sidebar". - Mรฉtrica para exibir na sexta mรฉtrica na "Barra Lateral do Desenvolvedor". - - - Metric #7 - Mรฉtrica #7 - - - Metric to display in the seventh metric in the "Developer Sidebar". - Mรฉtrica para exibir na sรฉtima mรฉtrica na "Barra Lateral do Desenvolvedor". - - - Developer Widgets - Widgets de Desenvolvedor - - - Overlays displaying debugging visuals, internal states, and model predictions on the driving screen. - Sobreposiรงรตes exibindo visuais de depuraรงรฃo, estados internos e previsรตes de modelo na tela de conduรงรฃo. - - - Adjacent Leads Tracking - Rastreamento de Leads Adjacentes - - - Adjacent leads detected by the car's radar to the left and right of the current driving path. - Leads adjacentes detectados pelo radar do carro ร  esquerda e ร  direita do caminho de conduรงรฃo atual. - - - Model Stopping Point - Ponto de Parada do Modelo - - - Display an image on the screen where openpilot is wanting to stop. - Exibir uma imagem na tela onde o openpilot estรก querendo parar. - - - Radar Tracks - Pistas de Radar - - - Display all of the radar points produced by the car's radar. - Exibir todos os pontos de radar produzidos pelo radar do carro. - - - Driving Screen Widgets - Widgets da Tela de Conduรงรฃo - - - Custom FrogPilot widgets for the driving screen. - Widgets personalizados do FrogPilot para a tela de conduรงรฃo. - - - Acceleration Path - Caminho de Aceleraรงรฃo - - - Colorize the driving path based on openpilot's current desired acceleration and deceleration rate. - Colorir o caminho de conduรงรฃo com base na taxa atual de aceleraรงรฃo e desaceleraรงรฃo desejada do openpilot. - - - Adjacent Lanes - Faixas Adjacentes - - - Driving paths for the left and right adjacent lanes. - Caminhos de conduรงรฃo para as faixas adjacentes esquerda e direita. - - - Blind Spot Path - Caminho do Ponto Cego - - - Display a red driving path for detected vehicles in the corresponding lane's blind spot. - Exibir um caminho de conduรงรฃo vermelho para veรญculos detectados no ponto cego da faixa correspondente. - - - Compass - Bรบssola - - - A compass to show the current driving direction. - Uma bรบssola para mostrar a direรงรฃo atual de conduรงรฃo. - - - Driving Personality Button - Botรฃo de Personalidade de Conduรงรฃo - - - Display the current driving personality on the screen. Tap to switch personalities, or long press for 0.5 seconds to change the current state of <b>Experimental Mode</b>, or 2.5 seconds for <b>Traffic Mode</b>. - Exibir a personalidade de direรงรฃo atual na tela. Toque para alternar personalidades, ou pressione por 0,5 segundos para mudar o estado atual do <b>Modo Experimental</b>, ou 2,5 segundos para o <b>Modo Trรกfego</b>. - - - Gas / Brake Pedal Indicators - Indicadores de Pedal de Acelerador / Freio - - - Pedals to indicate when either of the pedals are currently being used.<br><br><b>Dynamic</b>: The pedals change in opacity in accordance to how much openpilot is accelerating or decelerating<br><b>Static</b>: The pedals are displayed with full opacity when active, and dimmed when not in use - Pedais para indicar quando qualquer um dos pedais estรก sendo usado.<br><br><b>Dinรขmico</b>: Os pedais mudam de opacidade de acordo com o quanto o openpilot estรก acelerando ou desacelerando<br><b>Estรกtico</b>: Os pedais sรฃo exibidos com opacidade total quando ativos e escurecidos quando nรฃo estรฃo em uso - - - Rotating Steering Wheel - Volante Giratรณrio - - - Rotate the steering wheel alongside the vehicle's physical steering wheel. - Gire o volante junto com o volante fรญsico do veรญculo. - - - Model UI - Modelo de UI - - - Model visualizations on the driving screen for the driving path, lane lines, path edges, and road edges. - Visualizaรงรตes do modelo na tela de conduรงรฃo para o caminho de conduรงรฃo, linhas de faixa, bordas do caminho e bordas da estrada. - - - Dynamic Path Width - Largura de Caminho Dinรขmico - - - Adjust the width of the driving path based on the current engagement state.<br><br><b>Fully engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Fully disengaged</b>: 50% - Ajuste a largura do caminho de conduรงรฃo com base no estado de engajamento atual.<br><br><b>Totalmente engajado</b>: 100%<br><b>Sempre Ativo Lateral</b>: 75%<br><b>Totalmente desengajado</b>: 50% - - - Lane Lines Width - Largura das Linhas de Faixa - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 4 inches. - A espessura das linhas de faixa na tela de conduรงรฃo.<br><br><b>O padrรฃo corresponde ร  largura padrรฃo de linha de faixa do <b>MUTCD</b> de 4 polegadas. - - - Path Edges Width - Largura das Bordas do Caminho - - - The width of the edges of the driving path that represent different driving modes and statuses.<br><br>Default is <b>20%</b> of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden - A largura das bordas do caminho de conduรงรฃo que representam diferentes modos e status de conduรงรฃo.<br><br>O padrรฃo รฉ <b>20%</b> da largura total do caminho.<br><br>Guia de Cores:<br><br>- <b>Azul</b>: Navegaรงรฃo<br>- <b>Azul Claro</b>: Lateral Sempre Ativo<br>- <b>Verde</b>: Padrรฃo<br>- <b>Laranja</b>: Modo Experimental<br>- <b>Vermelho</b>: Modo de Trรกfego<br>- <b>Amarelo</b>: Modo Experimental Condicional substituรญdo - - - Path Width - Largura do Caminho - - - Road Edges Width - Largura das Bordas da Estrada - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 4 inches. - A espessura das bordas da estrada na tela de direรงรฃo.<br><br><b>O padrรฃo corresponde ร  metade da largura padrรฃo da linha de faixa do <b>MUTCD</b> de 4 polegadas. - - - "Unlimited" Road UI - UI de "Estrada Ilimitada" - - - Extend the display of the driving path, lane lines, and road edges as far as the model can see. - Estenda a exibiรงรฃo do caminho de conduรงรฃo, das linhas de faixa e das bordas da estrada o mรกximo que o modelo puder ver. - - - Navigation Widgets - Widgets de Navegaรงรฃo - - - Map style tweaks, speed limits, and other navigation related widgets. - Ajustes de estilo do mapa, limites de velocidade e outros widgets relacionados ร  navegaรงรฃo. - - - Larger Map Display - Exibiรงรฃo de Mapa Maior - - - Increase the size of the map for easier navigation readings. - Aumente o tamanho do mapa para facilitar a leitura de navegaรงรฃo. - - - Map Style - Estilo do Mapa - - - The map style used for <b>Navigate on openpilot (NOO)</b>:<br><br><b>Stock</b>: Default comma.ai style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>mike854's (Satellite hybrid)</b>: Customized hybrid satellite view - O estilo de mapa usado para <b>Navegar no openpilot (NOO)</b>:<br><br><b>Padrรฃo</b>: Estilo padrรฃo comma.ai<br><b>Mapbox Streets</b>: Visualizaรงรฃo padrรฃo focada em ruas<br><b>Mapbox Outdoors</b>: Enfatiza caracterรญsticas ao ar livre e de terreno<br><b>Mapbox Light</b>: Tema minimalista e claro<br><b>Mapbox Dark</b>: Tema minimalista e escuro<br><b>Mapbox Navigation Day</b>: Otimizado para navegaรงรฃo diurna<br><b>Mapbox Navigation Night</b>: Otimizado para navegaรงรฃo noturna<br><b>Mapbox Satellite</b>: Apenas imagens de satรฉlite<br><b>Mapbox Satellite Streets</b>: Imagens de satรฉlite hรญbridas com rรณtulos de ruas<br><b>Mapbox Traffic Night</b>: Tema escuro enfatizando condiรงรตes de trรกfego<br><b>mike854's (Satellite hybrid)</b>: Visualizaรงรฃo hรญbrida de satรฉlite personalizada - - - Road Name - Nome da Rua - - - Display the road name at the bottom of the driving screen using data from <b>OpenStreetMap</b>. - Exibir o nome da rua na parte inferior da tela de direรงรฃo usando dados do <b>OpenStreetMap</b>. - - - Show Speed Limits - Mostrar limites de velocidade - - - Display speed limits in the top left corner of the driving screen. Uses data from your car's dashboard (if supported) and data from <b>OpenStreetMaps</b>. - Exibir limites de velocidade no canto superior esquerdo da tela de conduรงรฃo. Usa dados do painel do seu carro (se suportado) e dados do <b>OpenStreetMaps</b>. - - - Show Speed Limits from Mapbox - Mostrar limites de velocidade do Mapbox - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - Use os dados de limite de velocidade do <b>Mapbox</b> quando nenhuma outra fonte estiver disponรญvel. - - - Use Vienna-Style Speed Signs - Use placas de velocidade no estilo Viena - - - Force <b>Vienna-style (EU)</b> speed limit signs instead of <b>MUTCD (US)</b>. - Forรงar sinais de limite de velocidade no estilo <b>Viena (UE)</b> em vez de <b>MUTCD (EUA)</b>. - - - Quality of Life - Qualidade de Vida - - - Visual features to improve your overall openpilot experience. - Recursos visuais para melhorar sua experiรชncia geral com o openpilot. - - - Camera View - Visรฃo da Cรขmera - - - The active camera view display. This is purely a visual change and doesn't impact how openpilot drives! - A exibiรงรฃo da visรฃo da cรขmera ativa. Esta รฉ apenas uma mudanรงa visual e nรฃo afeta como o openpilot dirige! - - - Show Driver Camera When In Reverse - Mostrar cรขmera do motorista ao engatar a rรฉ - - - Display the driver camera feed when the vehicle is in reverse. - Exibir o feed da cรขmera do motorista quando o veรญculo estiver em marcha ร  rรฉ. - - - Standby Mode - Modo de Espera - - - Turn the screen off when driving and automatically wake it up if engagement state changes or important alerts occur. - Desligue a tela ao dirigir e ative-a automaticamente se o estado de engajamento mudar ou ocorrerem alertas importantes. - - - Stopped Timer - Cronรดmetro parado - - - Replace the current speed with a timer when stopped to indicate how long the vehicle has been stopped for. - Substitua a velocidade atual por um cronรดmetro quando parado para indicar hรก quanto tempo o veรญculo estรก parado. - - - Blind Spot - Ponto Cego - - - Steering Torque - Torque de direรงรฃo - - - Turn Signal - Sinal de Direรงรฃo - - - Fahrenheit - Fahrenheit - - - CPU - CPU - - - GPU - GPU - - - IP - IP - - - RAM - RAM - - - SSD Left - SSD restante - - - SSD Used - SSD Usado - - - None - Nenhum - - - Acceleration: Current - Aceleraรงรฃo: Atual - - - Acceleration: Max - Aceleraรงรฃo: Mรกx. - - - Auto Tune: Actuator Delay - Auto Tune: Atraso do Atuador - - - Auto Tune: Friction - Auto Tune: Atrito - - - Auto Tune: Lateral Acceleration - Auto Tune: Aceleraรงรฃo Lateral - - - Auto Tune: Steer Ratio - Auto Tune: Relaรงรฃo de Direรงรฃo - - - Auto Tune: Stiffness Factor - Auto Tune: Fator de Rigidez - - - Engagement %: Lateral - Engajamento %: Lateral - - - Engagement %: Longitudinal - Engajamento %: Longitudinal - - - Lateral Control: Steering Angle - Controle Lateral: ร‚ngulo de Direรงรฃo - - - Lateral Control: Torque % Used - Controle Lateral: Torque % Usado - - - Longitudinal Control: Actuator Acceleration Output - Controle Longitudinal: Saรญda de Aceleraรงรฃo do Atuador - - - Longitudinal MPC Jerk: Acceleration - Jerk Longitudinal MPC: Aceleraรงรฃo - - - Longitudinal MPC Jerk: Danger Zone - Zona de Perigo de Solavanco Longitudinal MPC - - - Longitudinal MPC Jerk: Speed Control - Controle de Velocidade de Solavanco MPC Longitudinal - - - SELECT - SELECT - - - Select a metric to display - Selecione uma mรฉtrica para exibir - - - Show Distance - Mostrar Distรขncia - - - Dynamic - Dinรขmico - - - Static - Estรกtico - - - inches - polegadas - - - Off - Desligado - - - feet - pรฉs - - - Full Map - Mapa Completo - - - Stock openpilot - Openpilot padrรฃo - - - FrogsGoMoo's Personalized Style - Estilo Personalizado de FrogsGoMoo - - - Mapbox Streets - Mapbox Streets - - - Mapbox Outdoors - Mapbox Outdoors - - - Mapbox Light - Mapbox Light - - - Mapbox Dark - Mapbox Dark - - - Mapbox Navigation Day - Dia de Navegaรงรฃo do Mapbox - - - Mapbox Navigation Night - Mapbox Navigation Night - - - Mapbox Satellite - Mapbox Satellite - - - Mapbox Satellite Streets - Mapbox Satellite Streets - - - Mapbox Traffic Night - Mapbox Traffic Night - - - Mike's Personalized Style - Estilo Personalizado de Mike - - - Select a map style - Selecione um estilo de mapa - - - Auto - Auto - - - Driver - Motorista - - - Standard - Padrรฃo - - - Wide - Largo - - - foot - pรฉ - - - inch - polegada - - - meter - medidor - - - meters - metros - - - centimeter - centรญmetro - - - centimeters - centรญmetros - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 10 centimeters. - A espessura das linhas de faixa na tela de direรงรฃo.<br><br><b>O padrรฃo corresponde ร  largura da linha de faixa do <b>MUTCD</b> de 10 centรญmetros. - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 10 centimeters. - A espessura das bordas da estrada na tela de direรงรฃo.<br><br><b>O padrรฃo corresponde ร  metade da largura padrรฃo da linha de faixa do <b>MUTCD</b> de 10 centรญmetros. + <b>Show a numerical temperature in the sidebar</b> instead of the status labels. + <b>Mostrar uma temperatura numรฉrica na barra lateral</b> em vez dos rรณtulos de status. Sidebar Metrics - Mรฉtricas da Barra Lateral + Mรฉtricas da barra lateral - The width of the driving path on the driving screen.<br><br>Default <b>(6.1 feet)</b> matches the width of a <b>2019 Lexus ES 350</b>. - A largura do caminho de conduรงรฃo na tela de conduรงรฃo.<br><br>O padrรฃo <b>(6,1 pรฉs)</b> corresponde ร  largura de um <b>2019 Lexus ES 350</b>. + <b>Display system information</b> (CPU, GPU, RAM usage, IP address, device storage) in the sidebar. + <b>Exibir informaรงรตes do sistema</b> (uso de CPU, GPU, RAM, endereรงo IP, armazenamento do dispositivo) na barra lateral. - The width of the driving path on the driving screen.<br><br>Default <b>(1.9 meters)</b> matches the width of a <b>2019 Lexus ES 350</b>. - A largura do caminho de conduรงรฃo na tela de conduรงรฃo.<br><br>O padrรฃo <b>(1,9 metros)</b> corresponde ร  largura de um <b>Lexus ES 350 de 2019</b>. + Use International System of Units + Use o Sistema Internacional de Unidades + + + <b>Display measurements using the "International System of Units" (SI)</b> standard. + <b>Exibir mediรงรตes usando o padrรฃo do โ€œSistema Internacional de Unidadesโ€ (SI)</b> + + + Developer Sidebar + Barra Lateral do Desenvolvedor + + + <b>Display debugging info and metrics</b> in a dedicated sidebar on the right side of the screen. + <b>Exibir informaรงรตes de depuraรงรฃo e mรฉtricas</b> em uma barra lateral dedicada no lado direito da tela. + + + Metric #1 + Mรฉtrica nยบ 1 + + + <b>Select the metric shown in the first "Developer Sidebar" widget.</b> + <b>Selecione a mรฉtrica exibida no primeiro widget da "Barra Lateral do Desenvolvedor".</b> + + + Metric #2 + Mรฉtrica nยบ 2 + + + <b>Select the metric shown in the second "Developer Sidebar" widget.</b> + <b>Selecione a mรฉtrica exibida no segundo widget "Developer Sidebar".</b> + + + Metric #3 + Mรฉtrica nยบ 3 + + + <b>Select the metric shown in the third "Developer Sidebar" widget.</b> + <b>Selecione a mรฉtrica exibida no terceiro widget "Developer Sidebar".</b> + + + Metric #4 + Mรฉtrica nยบ 4 + + + <b>Select the metric shown in the fourth "Developer Sidebar" widget.</b> + <b>Selecione a mรฉtrica exibida no quarto widget da "Developer Sidebar".</b> + + + Metric #5 + Mรฉtrica nยบ 5 + + + <b>Select the metric shown in the fifth "Developer Sidebar" widget.</b> + <b>Selecione a mรฉtrica mostrada no quinto widget da "Barra Lateral do Desenvolvedor".</b> + + + Metric #6 + Mรฉtrica nยบ 6 + + + <b>Select the metric shown in the sixth "Developer Sidebar" widget.</b> + <b>Selecione a mรฉtrica exibida no sexto widget "Developer Sidebar".</b> + + + Metric #7 + Mรฉtrica nยบ 7 + + + <b>Select the metric shown in the seventh "Developer Sidebar" widget.</b> + <b>Selecione a mรฉtrica exibida no sรฉtimo widget "Developer Sidebar".</b> + + + Developer Widgets + Widgets do Desenvolvedor + + + <b>Overlays for debugging visuals, internal states, and model predictions</b> on the driving screen. + <b>Sobreposiรงรตes para depuraรงรฃo de visuais, estados internos e previsรตes do modelo</b> na tela de conduรงรฃo. + + + Adjacent Leads Tracking + Rastreamento de veรญculos adjacentes + + + <b>Display adjacent leads detected by the car's radar</b> to the left and right of the current driving path. + <b>Exibir veรญculos adjacentes detectados pelo radar do carro</b> ร  esquerda e ร  direita da trajetรณria atual de conduรงรฃo. + + + Model Stopping Point + Ponto de Parada do Modelo + + + <b>Show a stop-sign marker where the model intends to stop.</b> + <b>Mostrar um marcador de placa de parada onde o modelo pretende parar.</b> + + + Radar Tracks + Rastreamentos de Radar + + + <b>Display all radar points</b> produced by the car's radar. + <b>Exibir todos os pontos de radar</b> produzidos pelo radar do carro. + + + Driving Screen Widgets + Widgets da Tela de Conduรงรฃo + + + <b>Custom FrogPilot widgets</b> for the driving screen. + <b>Widgets FrogPilot personalizados</b> para a tela de conduรงรฃo. + + + Acceleration Path + Trajetรณria de Aceleraรงรฃo + + + <b>Color the driving path by planned acceleration and braking.</b> + <b>Colorir a trajetรณria de conduรงรฃo pela aceleraรงรฃo e frenagem planejadas.</b> + + + Adjacent Lanes + Faixas Adjacentes + + + <b>Show the driving paths for the left and right lanes.</b> + <b>Mostrar as trajetรณrias de direรงรฃo das faixas esquerda e direita.</b> + + + Blind Spot Path + Caminho do Ponto Cego + + + <b>Show a red path when a vehicle is in that lane's blind spot.</b> + <b>Mostrar um trajeto vermelho quando houver um veรญculo no ponto cego dessa faixa.</b> + + + Compass + Bรบssola + + + <b>Show the current driving direction</b> with a simple on-screen compass. + <b>Mostre a direรงรฃo atual de conduรงรฃo</b> com uma bรบssola simples na tela. + + + Driving Personality Button + Botรฃo de Personalidade de Conduรงรฃo + + + <b>Control and view the current driving personality</b> via a driving screen widget. + <b>Controle e visualize a personalidade de conduรงรฃo atual</b> por meio de um widget na tela de conduรงรฃo. + + + Gas / Brake Pedal Indicators + Indicadores do Pedal de Acelerador/Freio + + + <b>On-screen gas and brake indicators.</b><br><br><b>Dynamic</b>: Opacity changes according to how much openpilot is accelerating or braking<br><b>Static</b>: Full when active, dim when not + <b>Indicadores de acelerador e freio na tela.</b><br><br><b>Dinรขmico</b>: A opacidade muda conforme o quanto o openpilot estรก acelerando ou freando<br><b>Estรกtico</b>: Cheio quando ativo, escurecido quando inativo + + + Rotating Steering Wheel + Volante Girando + + + <b>Rotate the driving screen wheel</b> with the physical steering wheel. + <b>Gire a roda da tela de conduรงรฃo</b> com o volante fรญsico. + + + Model UI + Interface do Modelo + + + <b>Model visualizations</b> for the driving path, lane lines, path edges, and road edges. + <b>Visualizaรงรตes do modelo</b> para o trajeto de conduรงรฃo, linhas de faixa, bordas do trajeto e bordas da estrada. + + + Dynamic Path Width + Largura de Trajetรณria Dinรขmica + + + <b>Change the path width based on engagement.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% + <b>Altere a largura da trajetรณria com base no engajamento.</b><br><br><b>Totalmente engajado</b>: 100%<br><b>Lateral sempre ativo</b>: 75%<br><b>Desengajado</b>: 50% + + + Lane Lines Width + Largura das Linhas de Faixa + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 4 inches. + <b>Defina a espessura da linha de faixa.</b><br><br>O padrรฃo corresponde ao padrรฃo MUTCD de largura da linha de faixa de 4 inches. + + + Path Edges Width + Largura das Bordas da Pista + + + <b>Set the driving-path edge width</b> that represents different driving modes and statuses.<br><br>Default is 20% of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + <b>Defina a largura da borda da trajetรณria</b> que representa diferentes modos e status de conduรงรฃo.<br><br>O padrรฃo รฉ 20% da largura total da trajetรณria.<br><br>Guia de cores:<br><br>- <b>Azul</b>: Navegaรงรฃo<br>- <b>Azul claro</b>: Lateral Sempre Ativo<br>- <b>Verde</b>: Padrรฃo<br>- <b>Laranja</b>: Modo Experimental<br>- <b>Vermelho</b>: Modo de Trรกfego<br>- <b>Amarelo</b>: Modo Experimental Condicional substituรญdo + + + Path Width + Largura da Trajetรณria + + + <b>Set the driving-path width.</b><br><br>Default (6.1 feet) matches the width of a 2019 Lexus ES 350. + <b>Defina a largura da trajetรณria de conduรงรฃo.</b><br><br>O padrรฃo (6,1 pรฉs) corresponde ร  largura de um Lexus ES 350 2019. + + + Road Edges Width + Largura das Bordas da Estrada + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 4 inches. + <b>Defina a espessura da borda da via.</b><br><br>O padrรฃo corresponde ร  metade do padrรฃo MUTCD de largura de faixa de 4 inches. + + + "Unlimited" Road UI + Interface de Estrada โ€œIlimitadaโ€ + + + <b>Extend the length of the driving path, lane lines, and road edges</b> for as far as the model can see. + <b>Estenda o comprimento do caminho de conduรงรฃo, das linhas de faixa e das bordas da estrada</b> atรฉ onde o modelo conseguir ver. + + + Navigation Widgets + Widgets de Navegaรงรฃo + + + <b>Map style, speed limits, and other navigation widgets.</b> + <b>Estilo do mapa, limites de velocidade e outros widgets de navegaรงรฃo.</b> + + + Larger Map Display + Exibiรงรฃo de mapa maior + + + <b>Increase the map size</b> for easier navigation readings. + <b>Aumente o tamanho do mapa</b> para facilitar a leitura da navegaรงรฃo. + + + Map Style + Estilo do mapa + + + <b>Select the map style</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai style<br><b>FrogPilot</b>: Official FrogPilot map style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>Mike's Personalized Style</b>: Customized hybrid satellite view + <b>Selecione o estilo de mapa</b> para "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Estilo padrรฃo da comma.ai<br><b>FrogPilot</b>: Estilo de mapa oficial do FrogPilot<br><b>Mapbox Streets</b>: Visual padrรฃo focado em ruas<br><b>Mapbox Outdoors</b>: Destaca recursos ao ar livre e de terreno<br><b>Mapbox Light</b>: Tema minimalista e claro<br><b>Mapbox Dark</b>: Tema minimalista e escuro<br><b>Mapbox Navigation Day</b>: Otimizado para navegaรงรฃo diurna<br><b>Mapbox Navigation Night</b>: Otimizado para navegaรงรฃo noturna<br><b>Mapbox Satellite</b>: Apenas imagens de satรฉlite<br><b>Mapbox Satellite Streets</b>: Hรญbrido de imagens de satรฉlite com nomes de ruas<br><b>Mapbox Traffic Night</b>: Tema escuro destacando condiรงรตes de trรกfego<br><b>Mike's Personalized Style</b>: Visual hรญbrido de satรฉlite personalizado + + + Road Name + Nome da via + + + <b>Display the road name at the bottom of the driving screen</b> using data from "OpenStreetMap (OSM)". + <b>Exibir o nome da via na parte inferior da tela de conduรงรฃo</b> usando dados do "OpenStreetMap (OSM)". + + + Show Speed Limits + Mostrar limites de velocidade + + + <b>Show speed limits</b> in the top-left corner of the driving screen. Uses data from the car's dashboard (if supported) and "OpenStreetMap (OSM)". + <b>Mostrar limites de velocidade</b> no canto superior esquerdo da tela de conduรงรฃo. Usa dados do painel do carro (se suportado) e do "OpenStreetMap (OSM)". + + + Show Speed Limits from Mapbox + Mostrar limites de velocidade do Mapbox + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>Use os dados de limite de velocidade do Mapbox quando nenhuma outra fonte estiver disponรญvel.</b> + + + Use Vienna-Style Speed Signs + Usar sinais de velocidade no estilo de Viena + + + <b>Show Vienna-style (EU) speed-limit signs</b> instead of MUTCD (US). + <b>Mostrar sinais de limite de velocidade no estilo Viena (UE)</b> em vez de MUTCD (EUA). + + + Quality of Life + Qualidade de vida + + + <b>Miscellaneous visual changes</b> to fine-tune how the driving screen looks. + <b>Alteraรงรตes visuais diversas</b> para ajustar como a tela de conduรงรฃo parece. + + + Camera View + Visรฃo da cรขmera + + + <b>Select the active camera view.</b> This is purely a visual change and doesn't impact how openpilot drives! + <b>Selecione a visualizaรงรฃo de cรขmera ativa.</b> Esta รฉ apenas uma mudanรงa visual e nรฃo afeta como o openpilot dirige! + + + Show Driver Camera When In Reverse + Mostrar cรขmera do motorista ao engatar marcha ร  rรฉ + + + <b>Show the driver camera feed</b> when the vehicle is in reverse. + <b>Mostrar o feed da cรขmera do motorista</b> quando o veรญculo estiver em marcha ร  rรฉ. + + + Stopped Timer + Temporizador Parado + + + <b>Show a timer when stopped</b> in place of the current speed to indicate how long the vehicle has been stopped. + <b>Mostrar um cronรดmetro quando parado</b> no lugar da velocidade atual para indicar hรก quanto tempo o veรญculo estรก parado. + + + Hide Map + Ocultar mapa + + + Blind Spot + Ponto Cego + + + Steering Torque + Torque de Direรงรฃo + + + Turn Signal + Seta + + + Fahrenheit + Fahrenheit + + + CPU + CPU + + + GPU + GPU + + + IP + IP + + + RAM + RAM + + + SSD Left + SSD esquerdo + + + SSD Used + SSD usada + + + None + Nenhum + + + Acceleration: Current + Aceleraรงรฃo: Atual + + + Acceleration: Max + Aceleraรงรฃo: Mรกx. + + + Auto Tune: Actuator Delay + Ajuste Automรกtico: Atraso do Atuador + + + Auto Tune: Friction + Ajuste Automรกtico: Atrito + + + Auto Tune: Lateral Acceleration + Autoajuste: Aceleraรงรฃo Lateral + + + Auto Tune: Steer Ratio + Auto Tune: Relaรงรฃo de Direรงรฃo + + + Auto Tune: Stiffness Factor + Auto Tune: Fator de Rigidez + + + Engagement %: Lateral + Engajamento %: Lateral + + + Engagement %: Longitudinal + Engajamento %: Longitudinal + + + Lateral Control: Steering Angle + Controle Lateral: ร‚ngulo de Direรงรฃo + + + Lateral Control: Torque % Used + Controle Lateral: Torque % Utilizado + + + Longitudinal Control: Actuator Acceleration Output + Controle Longitudinal: Saรญda de Aceleraรงรฃo do Atuador + + + Longitudinal MPC Jerk: Acceleration + Tranco MPC longitudinal: aceleraรงรฃo + + + Longitudinal MPC Jerk: Danger Zone + Aceleraรงรฃo Longitudinal do MPC: Zona de Perigo + + + Longitudinal MPC Jerk: Speed Control + MPC Longitudinal Jerk: Controle de Velocidade + + + SELECT + SELECIONAR + + + Select a metric to display + Selecione uma mรฉtrica para exibir + + + Show Distance + Mostrar distรขncia + + + Dynamic + Dinรขmico + + + Static + Estรกtico + + + inches + polegadas + + + Off + Desligado + + + feet + pรฉs + + + Full Map + Mapa Completo + + + Stock openpilot + Openpilot padrรฃo + + + FrogPilot + FrogPilot + + + Mapbox Streets + Mapbox Streets + + + Mapbox Outdoors + Mapbox Outdoors + + + Mapbox Light + Mapbox Light + + + Mapbox Dark + Mapbox Dark + + + Mapbox Navigation Day + Mapbox Navigation Dia + + + Mapbox Navigation Night + Navegaรงรฃo Mapbox Noturna + + + Mapbox Satellite + Mapbox Satรฉlite + + + Mapbox Satellite Streets + Mapbox Satellite Streets + + + Mapbox Traffic Night + Trรกfego Noturno do Mapbox + + + Mike's Personalized Style + Estilo personalizado de Mike + + + Select a map style + Selecione um estilo de mapa + + + Auto + Automรกtico + + + Driver + Motorista + + + Standard + Padrรฃo + + + Wide + Amplo + + + foot + pรฉ + + + inch + polegada + + + meter + metro + + + meters + metros + + + centimeter + centรญmetro + + + centimeters + centรญmetros + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 10 centimeters. + <b>Defina a espessura da linha de faixa.</b><br><br>O padrรฃo corresponde ao padrรฃo de largura de linha de faixa do MUTCD de 10 centรญmetros. + + + <b>Set the driving-path width.</b><br><br>Default (1.9 meters) matches the width of a 2019 Lexus ES 350. + <b>Defina a largura da trajetรณria de conduรงรฃo.</b><br><br>O padrรฃo (1,9 metros) corresponde ร  largura de um Lexus ES 350 2019. + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 10 centimeters. + <b>Defina a espessura da borda da estrada.</b><br><br>O padrรฃo corresponde ร  metade do padrรฃo de largura de faixa do MUTCD de 10 centรญmetros. FrogPilotWheelPanel Distance Button - Botรฃo de Distรขncia + Botรฃo de distรขncia - The action for a short press of the <b>Distance</b> button. - A aรงรฃo para um breve pressionamento do botรฃo <b>Distรขncia</b>. + <b>Action performed when the "Distance" button is pressed.</b> + <b>Aรงรฃo executada quando o botรฃo "Distรขncia" รฉ pressionado.</b> Distance Button (Long Press) - Botรฃo de Distรขncia (Pressรฃo Longa) + Botรฃo de Distรขncia (Pressionar e Segurar) - The action for a 0.5+ second press of the <b>Distance</b> button. - A aรงรฃo para um pressionamento de mais de 0,5 segundos do botรฃo <b>Distรขncia</b>. + <b>Action performed when the "Distance" button is pressed for more than 0.5 seconds.</b> + <b>Aรงรฃo realizada quando o botรฃo "Distรขncia" รฉ pressionado por mais de 0,5 segundos.</b> Distance Button (Very Long Press) - Botรฃo de Distรขncia (Pressรฃo Muito Longa) + Botรฃo de Distรขncia (Pressionar Muito Longo) - The action for a 2.5+ second press of the <b>Distance</b> button. - A aรงรฃo para um pressionamento de mais de 2,5 segundos do botรฃo <b>Distรขncia</b>. + <b>Action performed when the "Distance" button is pressed for more than 2.5 seconds.</b> + <b>Aรงรฃo executada quando o botรฃo "Distรขncia" รฉ pressionado por mais de 2,5 segundos.</b> LKAS Button - Botรฃo LKAS + Botรฃo LKAS - The action for pressing the <b>LKAS</b> button. - A aรงรฃo para pressionar o botรฃo <b>LKAS</b>. + <b>Action performed when the "LKAS" button is pressed.</b> + <b>Aรงรฃo executada quando o botรฃo "LKAS" รฉ pressionado.</b> - Nothing - Nada + No Action + Nenhuma aรงรฃo - Pause Lateral - Pausa Lateral + Pause Steering + Pausar direรงรฃo Change "Personality Profile" - Perfil de Personalidade + Alterar "Perfil de Personalidade" Force openpilot to Coast - Forรงar o openpilot a deslizar + Forรงar o openpilot a Ir em Ponto Morto - Pause Longitudinal - Pausar Longitudinal + Pause Acceleration/Braking + Pausar Aceleraรงรฃo/Frenagem Toggle "Experimental Mode" On/Off - Alternar "Modo Experimental" Ligado/Desligado + Alternar โ€œModo Experimentalโ€ Ativar/Desativar Toggle "Traffic Mode" On/Off - Alternar "Modo de Trรกfego" Ligado/Desligado + Alternar โ€œModo de Trรกfegoโ€ Ativar/Desativar SELECT - SELECT + SELECIONAR Select a function to assign to this button - Selecione uma funรงรฃo para atribuir a este botรฃo + Selecione uma funรงรฃo para atribuir a este botรฃo @@ -4296,7 +4409,7 @@ Quer enviar suas prรณprias animaรงรตes? Compartilhe-as no canal "custom-themes" Characters: %1/%2 - Caracteres: %1/%2 + Caracteres: %1/%2 @@ -4329,7 +4442,7 @@ Quer enviar suas prรณprias animaรงรตes? Compartilhe-as no canal "custom-themes" Manage at %1 - Gerenciar em %1 + Gerenciar em %1 @@ -4347,57 +4460,6 @@ Quer enviar suas prรณprias animaรงรตes? Compartilhe-as no canal "custom-themes" Aguardando rota - - ModelReview - - How would you rate that drive? - Como vocรช avaliaria essa unidade? - - - Blacklist this model - Colocar este modelo na lista negra - - - The model used during that drive was: - O modelo usado durante aquela unidade foi: - - - Current Model Score: 0 - Pontuaรงรฃo Atual do Modelo: 0 - - - Current Model Rank: 0 - Classificaรงรฃo Atual do Modelo: 0 - - - Total Model Drives: 0 - Total de Unidades de Modelo: 0 - - - Total Overall Model Drives: 0 - Total de Drives do Modelo Geral: 0 - - - Total Model Drives: %1 - Total de unidades do modelo: %1 - - - Current Model Rank: %1 - Classificaรงรฃo Atual do Modelo: %1 - - - Current Model Score: %1 - Pontuaรงรฃo Atual do Modelo: %1 - - - Total Overall Drives: %1 - Total de Unidades Gerais: %1 - - - Model successfully blacklisted! - Modelo bloqueado com sucesso! - - MultiOptionDialog @@ -4518,17 +4580,17 @@ Quer enviar suas prรณprias animaรงรตes? Compartilhe-as no canal "custom-themes" Reboot Device Reinicie o Dispositivo - - openpilot crashed ๐Ÿ’ฉ - openpilot falhou ๐Ÿ’ฉ - openpilot crashed - openpilot falhou + openpilot falhou Please post the "Error Log" in the FrogPilot Discord! - Por favor, poste o "Log de Erros" no Discord do FrogPilot! + Por favor, poste o "Error Log" no Discord do FrogPilot! + + + openpilot crashed ๐Ÿ’ฉ + openpilot falhou ๐Ÿ’ฉ @@ -4539,15 +4601,15 @@ Quer enviar suas prรณprias animaรงรตes? Compartilhe-as no canal "custom-themes" Pair your device to your %1 account - Emparelhe seu dispositivo ร  sua conta %1 + Emparelhe seu dispositivo ร  sua conta %1 Go to https://%1 on your phone - Vรก para https://%1 no seu telefone + Vรก para https://%1 no seu telefone Bookmark %1 to your home screen to use it like an app - Adicione %1 ร  tela inicial para usรก-lo como um aplicativo. + Adicione %1 ร  tela inicial para usรก-lo como um app @@ -4651,12 +4713,12 @@ Quer enviar suas prรณprias animaรงรตes? Compartilhe-as no canal "custom-themes" agora - FrogPilot - FrogPilot + Restore + Restaurar - Restore - Restaurar + FrogPilot + FrogPilot @@ -4704,11 +4766,11 @@ Isso pode levar atรฉ um minuto. ScreenRecorder RECORDING - GRAVAร‡รƒO + GRAVANDO RECORD - REGISTRAR + REGISTRAR @@ -4731,35 +4793,35 @@ Isso pode levar atรฉ um minuto. โ† Back - โ† Voltar + โ† Voltar FrogPilot - FrogPilot - - - Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Bem-vindo ao FrogPilot! Como vocรช รฉ novo no FrogPilot, a predefiniรงรฃo "Minimal" foi aplicada, mas vocรช pode alterรก-la a qualquer momento atravรฉs do botรฃo "Nรญvel de Ajuste"! - - - Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Como vocรช รฉ relativamente novo no FrogPilot, a predefiniรงรฃo "Minimal" foi aplicada, mas vocรช pode alterรก-la a qualquer momento atravรฉs do botรฃo "Tuning Level"! - - - Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Como vocรช tem experiรชncia com o openpilot, o predefinido "Padrรฃo" foi aplicado, mas vocรช pode alterรก-lo a qualquer momento atravรฉs do botรฃo "Nรญvel de Ajuste"! - - - Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Como vocรช tem experiรชncia com o FrogPilot, o predefinido "Padrรฃo" foi aplicado, mas vocรช pode alterรก-lo a qualquer momento atravรฉs do botรฃo "Nรญvel de Ajuste"! - - - Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Como vocรช tem muita experiรชncia com o FrogPilot, a predefiniรงรฃo "Avanรงado" foi aplicada, mas vocรช pode alterรก-la a qualquer momento atravรฉs do botรฃo "Nรญvel de Ajuste"! + FrogPilot Welcome to FrogPilot! Since you're new to openpilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Bem-vindo ao FrogPilot! Como vocรช รฉ novo no openpilot, a predefiniรงรฃo "Minimal" foi aplicada, mas vocรช pode alterรก-la a qualquer momento atravรฉs do botรฃo "Tuning Level"! + Bem-vindo ao FrogPilot! Como vocรช รฉ novo no openpilot, a predefiniรงรฃo de alternรขncia "Minimal" foi aplicada, mas vocรช pode alterรก-la a qualquer momento pelo botรฃo "Tuning Level"! + + + Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Bem-vindo ao FrogPilot! Como vocรช รฉ novo no FrogPilot, a predefiniรงรฃo de alternรขncia "Minimal" foi aplicada, mas vocรช pode alterar isso a qualquer momento pelo botรฃo "Tuning Level"! + + + Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Como vocรช รฉ relativamente novo no FrogPilot, a predefiniรงรฃo de alternรขncia โ€œMinimalโ€ foi aplicada, mas vocรช pode alterรก-la a qualquer momento pelo botรฃo โ€œTuning Levelโ€! + + + Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Como vocรช tem experiรชncia com o openpilot, a predefiniรงรฃo de alternรขncia "Padrรฃo" foi aplicada, mas vocรช pode alterรก-la a qualquer momento pelo botรฃo "Nรญvel de Ajuste"! + + + Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Como vocรช tem experiรชncia com o FrogPilot, a predefiniรงรฃo de alternรขncia โ€œPadrรฃoโ€ foi aplicada, mas vocรช pode alterรก-la a qualquer momento pelo botรฃo โ€œNรญvel de Ajusteโ€! + + + Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Como vocรช tem muita experiรชncia com o FrogPilot, a predefiniรงรฃo de โ€œAvanรงadoโ€ foi aplicada, mas vocรช pode alterรก-la a qualquer momento pelo botรฃo โ€œNรญvel de Ajusteโ€! @@ -4873,7 +4935,7 @@ Isso pode levar atรฉ um minuto. Pair your device with Konik connect (stable.konik.ai). - Emparelhe seu dispositivo com o Konik connect (stable.konik.ai). + Emparelhe seu dispositivo com o Konik connect (stable.konik.ai). @@ -4960,27 +5022,27 @@ Isso pode levar atรฉ um minuto. GPU - GPU + GPU CPU - CPU + CPU GB - GB + GB MEMORY - MEMร“RIA + MEMร“RIA LEFT - ESQUERDA + ESQUERDA USED - USADO + USADO @@ -5055,39 +5117,39 @@ Isso pode levar atรฉ um minuto. Updates are only downloaded while the car is off or in park. - As atualizaรงรตes sรฃo baixadas apenas quando o carro estรก desligado ou estacionado. + As atualizaรงรตes sรณ sรฃo baixadas quando o carro estรก desligado ou em โ€œparkโ€. Automatically Update FrogPilot - Atualizar automaticamente o FrogPilot - - - Error Log - Registro de Erros - - - VIEW - VISUALIZAR - - - View the error log for openpilot crashes. - Visualizar o log de erros para falhas do openpilot. - - - Do you want to delete deep storage FrogPilot assets? This includes your toggle settings for quick reinstalls. - Deseja excluir os ativos de armazenamento profundo do FrogPilot? Isso inclui suas configuraรงรตes de alternรขncia para reinstalaรงรตes rรกpidas. - - - Are you sure? This is 100% unrecoverable and if you reinstall FrogPilot you'll lose all your previous settings! - Vocรช tem certeza? Isso รฉ 100% irrecuperรกvel e se vocรช reinstalar o FrogPilot, perderรก todas as suas configuraรงรตes anteriores! - - - This branch must be downloaded before switching. Would you like to download it now? - Este branch deve ser baixado antes de mudar. Gostaria de baixรก-lo agora? + Atualizar FrogPilot automaticamente FrogPilot will automatically update itself and it's assets when you're offroad and have an active internet connection. - FrogPilot atualizarรก automaticamente a si mesmo e seus ativos quando vocรช estiver fora de estrada e tiver uma conexรฃo ativa com a internet. + O FrogPilot atualizarรก automaticamente a si mesmo e seus assets quando vocรช estiver offroad e com uma conexรฃo de internet ativa. + + + This branch must be downloaded before switching. Would you like to download it now? + Este branch deve ser baixado antes de alternar. Deseja baixรก-lo agora? + + + Error Log + Registro de Erros + + + VIEW + VISUALIZAR + + + View the error log for openpilot crashes. + Visualize o log de erros para falhas do openpilot. + + + Do you want to perform a full factory reset? All saved assets and settings will be permanently deleted! + Deseja realizar uma restauraรงรฃo de fรกbrica completa? Todos os recursos e configuraรงรตes salvos serรฃo excluรญdos permanentemente! + + + This is a complete factory reset and cannot be undone. Are you absolutely sure you want to continue? + Esta รฉ uma redefiniรงรฃo completa de fรกbrica e nรฃo pode ser desfeita. Vocรช tem absoluta certeza de que deseja continuar? @@ -5341,11 +5403,11 @@ Isso pode levar atรฉ um minuto. Uploading disabled - Envio desativado + Envio desativado Toggle off the "Turn Off Data Uploads" toggle to re-enable uploads. - Desative a opรงรฃo "Desativar Uploads de Dados" para reativar os uploads. + Desative a opรงรฃo "Desativar envios de dados" para reativar os envios. diff --git a/selfdrive/ui/translations/main_shakespearean.ts b/selfdrive/ui/translations/main_shakespearean.ts index 6401616db..31d96c3eb 100644 --- a/selfdrive/ui/translations/main_shakespearean.ts +++ b/selfdrive/ui/translations/main_shakespearean.ts @@ -1,4 +1,5448 @@ - - + + + AbstractAlert + + Close + Close + + + Snooze Update + Drowse the Update + + + Reboot and Update + Reboot and Renewest + + + + AdvancedNetworking + + Back + Back + + + Off + Off + + + Always + Alway + + + Only Onroad + Onroad Only + + + Until Reboot + Till Reboot + + + Enable Tethering + Enable Tethering + + + Allow tethering with your data SIM and keep it active either while driving or continuously. + Permit tethering with thy data SIM, and keep it active either whilst driving or continually. + + + Tethering Password + Tethering Watchword + + + EDIT + EDIT + + + Enter new tethering password + Enter a new tethering password, prithee + + + IP Address + IP Address + + + Enable Roaming + Enable Roaming + + + APN Setting + APN Settinge + + + Enter APN + Prithee, enter the APN + + + leave blank for automatic configuration + leave this space void for automatic configuration + + + Cellular Metered + Cellular, Meterโ€™d + + + Prevent large data uploads when on a metered connection + Stay large data uploads when thou art on a metered connexion + + + Hidden Network + Veilรจd Network + + + CONNECT + CONNECT + + + Enter SSID + Enter thy SSID + + + Enter password + Enter thy password + + + for "%1" + for "%1" + + + + AnnotatedCameraWidget + + km/h + km/h + + + mph + mph + + + MAX + MAX + + + LIMIT + LIMIT + + + SPEED + SPEED + + + + ConfirmationDialog + + Ok + Aye + + + Cancel + Cancel thee + + + + DeclinePage + + You must accept the Terms and Conditions in order to use openpilot. + Thou must accept the Terms and Conditions ere thou canst use openpilot. + + + Back + Back + + + Decline, uninstall %1 + Decline, uninstall %1 anon + + + + DestinationWidget + + Home + Home + + + Work + Toil + + + No destination set + No destination appointed + + + home + home + + + work + toil + + + No %1 location set + No %1 locale hath been set + + + + DeveloperSidebar + + m/sยฒ + m/sยฒ + + + ft/sยฒ + ft/sยฒ + + + ACCEL + ACCEL + + + ACCEL JERK + ACCELโ€™ST JERK + + + ACT ACCEL + ACT ACCEL + + + DANGER JERK + DANGER, THOU JERKKNAVE + + + STEER DELAY + STEERโ€™D DELAY + + + FRICTION + FRICTION + + + LAT ACCEL + LAT ACCEL + + + LATERAL % + LATERAL % + + + LONG % + LONG % + + + MAX ACCEL + MAX ACCEL + + + SPEED JERK + SPEEDโ€™ST JERK + + + STEER ANGLE + STEER ANGLE + + + STEER RATIO + STEER RATIO + + + STEER STIFF + STEER RIGID + + + TORQUE % + TORQUE % + + + + DevicePanel + + Dongle ID + Dongle ID + + + N/A + N/A + + + Serial + Serial + + + Pair Device + Couple Device + + + PAIR + YOKE + + + Pair your device with Konik connect (stable.konik.ai). + Pair thy device with Konik connect (stable.konik.ai). + + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + Pair thy device with comma connect (connect.comma.ai) and claim thy comma prime proffer. + + + Driver Camera + Charioteerโ€™s Camera + + + PREVIEW + PREVIEW + + + Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off) + Preview the driver-facing camera to ensure driver monitoring hath good visibility. (vehicle must be off) + + + Reset Calibration + Reset thy Calibration + + + RESET + RESET + + + Are you sure you want to reset calibration? + Art thou certain thou wouldst reset calibration? + + + Reset + Reset + + + Review Training Guide + Peruse the Training Guide + + + REVIEW + REVIEW + + + Review the rules, features, and limitations of openpilot + Peruse the statutes, virtues, and bounds of openpilot + + + Are you sure you want to review the training guide? + Art thou certain thou wouldst peruse the training guide? + + + Review + Review + + + Regulatory + Regulatory + + + VIEW + VIEW + + + Change Language + Change Tongue + + + CHANGE + ALTERATION + + + Select a language + Choose thy tongue + + + Reboot + Reboot forthwith + + + Power Off + Power Down + + + openpilot requires the device to be mounted within 4ยฐ left or right and within 5ยฐ up or 9ยฐ down. openpilot is continuously calibrating, resetting is rarely required. + openpilot requireth the device be mounted within 4ยฐ to left or right, and within 5ยฐ up or 9ยฐ down. openpilot doth calibrate continually; a reset is but seldom needful. + + + Your device is pointed %1ยฐ %2 and %3ยฐ %4. + Thy device is aimโ€™d %1ยฐ %2 and %3ยฐ %4. + + + down + down + + + up + up + + + left + port side + + + right + right + + + Are you sure you want to reboot? + Art thou certain thou wouldst reboot? + + + Disengage to Reboot + Disengage, that thou mayst Reboot + + + Are you sure you want to power off? + Art thou certain thou wouldst power down? + + + Disengage to Power Off + Disengage to Power Down + + + + DriveStats + + FROGPILOT + FROGPILOT + + + Drives + Driveth + + + Hours + Hours + + + KM + KM + + + Miles + Miles + + + + DriverViewWindow + + camera starting + the camera beginneth + + + + ExperimentalModeButton + + EXPERIMENTAL MODE ON + EXPERIMENTAL MODE DOTH TURN ON + + + CHILL MODE ON + CHILL MODE ENABLED + + + + FrogPilotAnnotatedCameraWidget + + m/sยฒ + m/sยฒ + + + meters + meters + + + m/s + m/s + + + km/h + km/h + + + ft/sยฒ + ft/sยฒ + + + feet + feet + + + mph + mph + + + Vehicle in blind spot + Chariot within thy blind spot + + + PENDING + PENDING + + + LIMIT + LIMIT + + + + FrogPilotConfirmationDialog + + Reboot required to take effect. + A reboot is required to take effect. + + + Reboot Now + Reboot Anon + + + Reboot Later + Reboot Anon + + + Yes + Yea + + + No + Nay + + + + FrogPilotDataPanel + + Delete Driving Data + Purge Thy Driving Records + + + DELETE + DELETE + + + <b>Delete all stored driving footage and data</b> to free up space and clear private information. + <b>Expunge all storรจd driving footage and data</b> to win thee space and purge private information. + + + Delete all driving data and footage? + Dost thou wish to purge all driving records and footage? + + + Delete + Delete + + + Deleting... + Deletingโ€ฆ + + + Deleted! + Deleted! + + + Delete Error Logs + Purge the Scrolls of Errour + + + <b>Delete collected error logs</b> to free up space and clear old crash records. + <b>Purge the gathered error chronicles</b> to win back space and wipe old mishap records. + + + Delete all error logs? + Dost thou wish to delete all error logs? + + + Screen Recordings + Screen Chronicles + + + <b>Delete or rename screen recordings.</b> + <b>Delete or rename thy screen recordings.</b> + + + DELETE ALL + PURGE ALL + + + RENAME + RENAMETH + + + Choose a screen recording to delete + Choose a screen recording to be deletโ€™d + + + Delete this screen recording? + Dost thou wish to delete this screen recording? + + + Delete all screen recordings? + Shall I delete all screen recordings? + + + Delete All + Purge All + + + Choose a screen recording to rename + Choose a screen recording to be rechristened + + + Enter a new name + Prithee, enter a new name + + + Rename Screen Recording + Rechristen Screen Recording + + + Name already in use. Please choose a different name. + This name is already in use. Prithee choose a different name. + + + Renaming... + Renaming... + + + + + Renamed! + Retitled! + + + FrogPilot Backups + FrogPilot Archives + + + <b>Create, delete, or restore FrogPilot backups.</b> + <b>Craft, undo, or restore FrogPilot backups.</b> + + + BACKUP + BACKUP + + + RESTORE + RESTORE + + + Enter a name for this backup + Enter a name for this reliquary backup + + + Compress this backup? This will save space and run in the background but take a bit longer. + Shall this backup be compressed? โ€™Twill spare thee space and toil in the background, yet require a little longer. + + + Backing up... + Backing up apace... + + + Compressing... + Compressth apace... + + + Backup created! + A backup is wrought! + + + Choose a FrogPilot backup to delete + Choose a FrogPilot backup to purge + + + Delete this backup? + Shalt thou delete this backup? + + + Delete all backups? + Shall I purge all backups anon? + + + Choose a backup to restore + Choose a backup to restore thou shalt + + + Restore this backup? + Shall I restore this backup? + + + Restore + Restore + + + Restoring... + Restoringโ€ฆ + + + Extracting... + Extracting... + + + Restored! + Restored, verily! + + + Rebooting... + Rebooting anon... + + + Toggle Backups + Switch Backups + + + <b>Create, delete, or restore toggle backups.</b> + <b>Forge, erase, or restore toggle backups.</b> + + + Choose a backup to delete + Choose a reliquary to purge + + + + FrogPilotDevicePanel + + Device Settings + Device Settings + + + <b>Settings that control how the device runs, powers off, and manages driving data.</b> + <b>Settings that govern how the device doth run, power off, and husband driving data.</b> + + + Device Shutdown Timer + Device Shutdown Timer + + + <b>Keep the device on for the set amount of time after a drive</b> before it shuts down automatically. + <b>Keep the device waked for the set span after a drive</b> ere it doth shut down of its own accord. + + + Disable Logging + Disable Logging + + + WARNING: This will prevent your drives from being recorded and all data will be unobtainable! + WARNING: This shall stay thy drives from being set to record, and all data shall be unobtainable! + + + <b>Prevent the device from saving driving data.</b> + <b>Forbid the device from saving driving data.</b> + + + Disable Uploads + Disableth Uploads + + + WARNING: This will prevent your drives from being uploaded to <b>comma connect</b> which will impact debugging and official support from comma! + WARNING: This shall forbid thy drives from being uploaded to <b>comma connect</b>, which shall impair debugging and official support from comma! + + + <b>Prevent the device from uploading driving data.</b> + <b>Forfend the device from delivering driving data.</b> + + + High-Quality Recording + High-Quality Recording, prithee + + + <b>Save drive footage in higher video quality.</b> + <b>Preserve thy driveโ€™s footage in higher quality of video.</b> + + + Low-Voltage Cutoff + Low-Voltage Cutoff, verily + + + <b>While parked, if the battery voltage falls below the set level, the device shuts down</b> to prevent excessive battery drain. + <b>Whilst thou art parked, if the batteryโ€™s voltage falleth below the set level, the device doth shut down</b> to forestall excessive draining of the battery. + + + Raise Temperature Limits + Raise the Bounds of Temperature + + + WARNING: Running at higher temperatures may damage your device! + WARNING: To run at hotter humours may wreak harm upon thy device! + + + <b>Allow the device to run at higher temperatures</b> before throttling or shutting down. Use only if you understand the risks! + <b>Suffer the device to run at higher temperatures</b> ere it throttle or shut down. Use only if thou understandโ€™st the risks! + + + Use Konik Server + Employ Konik Server + + + <b>Upload driving data to "connect.konik.ai" instead of "connect.comma.ai".</b> + <b>Uploade thy driving data unto "connect.konik.ai" in stead of "connect.comma.ai".</b> + + + Screen Settings + Screen Settings + + + <b>Settings that control screen brightness, screen recording, and timeout duration.</b> + <b>Settings that govern screen brightness, screen recording, and the span of timeout.</b> + + + Screen Brightness (Offroad) + Screen Brightness (Offroad) + + + <b>The screen brightness while not driving.</b> + <b>The screenโ€™s brightness whilst thou drivest not.</b> + + + Screen Brightness (Onroad) + Screen Brightness (Onroad) + + + <b>The screen brightness while driving.</b> + <b>The screenโ€™s brightness whilst thou drivest.</b> + + + Screen Recorder + Screen Scribe + + + <b>Add a button to the driving screen to record the display.</b> + <b>Pray, append a button to the driving screen to record the display.</b> + + + Screen Timeout (Offroad) + Screen Timeout (Offroad) + + + <b>How long the screen stays on after being tapped while not driving.</b> + <b>How long the screen doth remain lit after โ€™tis tappโ€™d whilst thou drivest not.</b> + + + Screen Timeout (Onroad) + Screen Timeout (Onroad) + + + <b>How long the screen stays on after being tapped while driving.</b> + <b>How long the screen abideth on after being tappโ€™d whilst driving.</b> + + + Standby Mode + Standby Mode + + + + + <b>Turn the screen off while driving and automatically wake it up for alerts or engagement state changes.</b> + <b>Whilst thou drivest, turn the screen off, and let it wake anon for alerts or changes of engagement state.</b> + + + 5 mins + 5 mins + + + mins + mins + + + hour + hour + + + hours + hours + + + Disable Onroad Only + Disable Onroad Only + + + volts + volts + + + Screen Off + Screen Dimmโ€™d + + + Auto + Auto + + + Start Recording + Commence Recording + + + Stop Recording + Cease Recording + + + seconds + seconds + + + + FrogPilotLateralPanel + + Advanced Lateral Tuning + Advanced Lateral Tuning + + + <b>Advanced steering control changes to fine-tune how openpilot drives.</b> + <b>Advanced steering control altereth to fine-tune how openpilot doth drive.</b> + + + Actuator Delay (Default: %1) + Actuator Delay (Default: %1) + + + Actuator Delay + Actuator Delay + + + <b>The time between openpilot's steering command and the vehicle's response.</b> Increase if the vehicle reacts late; decrease if it feels jumpy. Auto-learned by default. + <b>The span โ€˜twixt openpilotโ€™s steering command and the carriageโ€™s response.</b> Increase if the carriage answereth late; decrease if it doth feel skittish. Auto-learned by default. + + + Friction (Default: %1) + Friction (Default: %1) + + + Friction + Friction + + + <b>Compensates for steering friction.</b> Increase if the wheel sticks near center; decrease if it jitters. Auto-learned by default. + <b>Maketh amends for steering friction.</b> Raise it if the wheel clingeth near the center; lower it if it doth jitter. Auto-learned by default. + + + Kp Factor (Default: %1) + Kp Factor (Default: %1) + + + Kp Factor + Kp Factor + + + <b>How strongly openpilot corrects lane position.</b> Higher is tighter but twitchier; lower is smoother but slower. Auto-learned by default. + <b>How mightily openpilot correcteth thy lane position.</b> Higher be tighter yet more skittish; lower be smoother yet slower. Auto-learnt by default. + + + Lateral Acceleration (Default: %1) + Lateral Acceleration (Default: %1) + + + Lateral Acceleration + Sideways Acceleration + + + <b>Maps steering torque to turning response.</b> Increase for sharper turns; decrease for gentler steering. Auto-learned by default. + <b>Yoketh steering torque to turning answer.</b> Raise it for keener bends; lower it for gentler helm. By default โ€™tis self-learnt. + + + Steer Ratio (Default: %1) + Steer Ratio (Default: %1) + + + Steer Ratio + Steering Ratio + + + <b>The relationship between steering wheel rotation and road wheel angle.</b> Increase if steering feels too quick or twitchy; decrease if it feels too slow or weak. Auto-learned by default. + <b>The kinship โ€™twixt the steering wheelโ€™s turn and the road wheelโ€™s angle.</b> Raise it if the steering doth feel too hasty or skittish; lower it if it doth feel too sluggish or faint. Auto-learnt by default. + + + Force Auto-Tune On + Compel Auto-Tune On + + + <b>Force-enable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration".</b> + <b>Force-unlock openpilotโ€™s live auto-tuning for โ€œFrictionโ€ and โ€œLateral Accelerationโ€.</b> + + + Force Auto-Tune Off + Compel Auto-Tune to Be Off + + + <b>Force-disable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration" and use the set value instead.</b> + <b>Force-disable openpilotโ€™s live auto-tuning for "Friction" and "Lateral Acceleration", and employ the set value instead.</b> + + + Force Torque Controller + Force Torque Controller, thou art compelled + + + <b>Use torque-based steering control instead of angle-based control for smoother lane keeping, especially in curves.</b> + <b>Employ torque-based steering governance instead of angle-based command for smoother keeping of lane, most chiefly in curves.</b> + + + Always On Lateral + Lateral Ever-On + + + <b>openpilot's steering remains active even when the accelerator or brake pedals are pressed.</b> + <b>openpilotโ€™s helm abideth active eโ€™en when the accelerator or brake pedals are pressโ€™d.</b> + + + Enable With Cruise Control + Enable With Cruise Control + + + <b>Enable "Always On Lateral" whenever "Cruise Control" is on, even when openpilot is not engaged.</b> + <b>Enablest โ€œAlways On Lateralโ€ whensoever โ€œCruise Controlโ€ is on, eโ€™en when openpilot is not engagโ€™d.</b> + + + Enable With LKAS + Enable With LKAS + + + <b>Enable "Always On Lateral" whenever "LKAS" is on, even when openpilot is not engaged.</b> + <b>Enable โ€œAlways On Lateralโ€ whensoever โ€œLKASโ€ is on, eโ€™en when openpilot is not engagโ€™d.</b> + + + Pause on Brake Press Below + Stay thy hand on Brake Press Below + + + <b>Pause "Always On Lateral" below the set speed while the brake pedal is pressed.</b> + <b>Whilst the brake pedal is pressโ€™d, pause โ€œAlways On Lateralโ€ beneath the set speed.</b> + + + Lane Changes + Changes of the Lane + + + <b>Allow openpilot to change lanes.</b> + <b>Grant openpilot leave to change lanes.</b> + + + Automatic Lane Changes + Automatic Lane Alterations + + + <b>When the turn signal is on, openpilot will automatically change lanes.</b> No steering-wheel nudge required! + <b>When the turn signal doth shine, openpilot shall change lanes of its own accord.</b> No nudge upon the steering-wheel required!</b + + + Lane Change Delay + Delay of Lane Change + + + <b>Delay between turn signal activation and the start of an automatic lane change.</b> + <b>Delay โ€™twixt turn signalโ€™s waking and the onset of an automatic lane change.</b> + + + Minimum Lane Change Speed + Minimum Speed for Lane Change + + + <b>Lowest speed at which openpilot will change lanes.</b> + <b>The lowest speed at which openpilot shall shift lanes.</b> + + + Minimum Lane Width + Minimum Lane Width + + + <b>Prevent automatic lane changes into lanes narrower than the set width.</b> + <b>Forfend automatic lane shifts into lanes more narrow than the set width.</b> + + + One Lane Change Per Signal + One Lane Change for Each Signal + + + <b>Limit automatic lane changes to one per turn-signal activation.</b> + <b>Confine automatic lane shifts to one for each turn-signalโ€™s summons.</b> + + + Lateral Tuning + Lateral Tuning + + + <b>Miscellaneous steering control changes</b> to fine-tune how openpilot drives. + <b>Assorted alterations to the helmโ€™s command</b> to fine-tune how openpilot driveth. + + + Force Turn Desires Below Lane Change Speed + Compel Turn Desires Beneath Lane Change Speed + + + <b>While driving below the minimum lane change speed with an active turn signal, instruct openpilot to turn left/right.</b> + <b>Whilst thou drivest beneath the minimum speed for lane change, with thy turn signal active, bid openpilot turn left/right.</b> + + + Quality of Life + Quality of Life, verily + + + <b>Steering control changes to fine-tune how openpilot drives.</b> + <b>Steering control altereth to fine-tune how openpilot doth drive.</b> + + + Pause Steering Below + Stay Thy Steering Beneath + + + <b>Pause steering below the set speed.</b> + <b>Stay thy hand from steering beneath the set speed.</b> + + + Instant + Instantaneous + + + second + second + + + seconds + seconds + + + Turn Signal Only + Signal of Turn Only + + + Reset <b>Actuator Delay</b> to its default value? + Reset <b>Actuator Delay</b> unto its default value? + + + Reset <b>Friction</b> to its default value? + Shalt thou reset <b>Friction</b> unto its default value? + + + Reset <b>Kp Factor</b> to its default value? + Shall I reset <b>Kp Factor</b> to its default value? + + + Reset <b>Lateral Accel</b> to its default value? + Shalt thou reset <b>Lateral Accel</b> to its default value? + + + Reset <b>Steer Ratio</b> to its default value? + Shall I reset <b>Steer Ratio</b> to its default value? + + + Lateral Accel (Default: %1) + Lateral Accel (Default: %1) + + + Off + Off + + + foot + foot + + + feet + feet + + + mph + mph + + + meter + meter + + + meters + meters + + + km/h + km/h + + + Neural Network Feedforward (NNFF) + Neural Network Feedforward (NNFF) + + + <b>Twilsonco's "Neural Network FeedForward" model controller for smoother, model-based steering trained on your vehicle's data.</b> + <b>Twilsoncoโ€™s โ€œNeural Network FeedForwardโ€ model controller, to beget smoother, model-based steering, schooled upon thy vehicleโ€™s data.</b> + + + Smooth Curve Handling + Smooth Curvรจd Handling + + + <b>Twilsonco's torque-based adjustments to smoothen out steering in curves.</b> + <b>Twilsoncoโ€™s torque-wrought tweaks to make steering flow smoother โ€™midst the curves.</b> + + + + FrogPilotLongitudinalPanel + + Advanced Longitudinal Tuning + Advanced Longitudinal Tuning + + + <b>Advanced acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Refined changes to acceleration and braking governance</b> to fine-tune how openpilot doth drive. + + + Actuator Delay (Default: %1) + Actuator Delay (Default: %1) + + + Actuator Delay + Actuator Delayeth + + + <b>The time between openpilot's throttle or brake command and the vehicle's response.</b> Increase if the vehicle feels slow to react; decrease if it feels too eager or overshoots. + <b>The span betwixt openpilot's throttle or brake command and the chariotโ€™s reply.</b> Increase if the chariot seemeth slow to heed; decrease if it groweth too eager or doth overshoot. + + + Start Acceleration (Default: %1) + Begin Acceleration (Default: %1) + + + Start Acceleration + Commence Acceleration + + + <b>Extra acceleration applied when starting from a stop.</b> Increase for quicker takeoffs; decrease for smoother, gentler starts. + <b>When thou startโ€™st from stillness, extra haste is applied.</b> Increase for swifter takeoffs; decrease for smoother, gentler onsets. + + + Start Speed (Default: %1) + Commence Speed (Default: %1) + + + Start Speed + Commence Speed + + + <b>The speed at which openpilot exits the stopped state.</b> Increase to reduce creeping; decrease to move sooner after stopping. + <b>The speed at which openpilot quitteth the halted state.</b> Raise it to curb creeping; lower it to stir sooner after stopping. + + + Stop Acceleration (Default: %1) + Cease Acceleration (Default: %1) + + + Stop Acceleration + Stay thy acceleration + + + <b>Brake force applied to hold the vehicle at a standstill.</b> Increase to prevent rolling on hills; decrease for smoother, softer stops. + <b>Brake force employโ€™d to hold the carriage at a standstill.</b> Increase it to prevent rolling on hills; decrease it for smoother, softer stops. + + + Stopping Rate (Default: %1) + Stopping Rate (Default: %1) + + + Stopping Rate + Rate of Stopping + + + <b>How quickly braking ramps up when stopping.</b> Increase for shorter, firmer stops; decrease for smoother, longer stops. + <b>How swiftly doth braking swell when thou dost halt.</b> Increase for shorter, firmer stops; decrease for smoother, longer stops. + + + Stop Speed (Default: %1) + Stay thy Speed (Default: %1) + + + Stop Speed + Halt Speed + + + <b>The speed at which openpilot considers the vehicle stopped.</b> Increase to brake earlier and stop smoothly; decrease to wait longer but risk overshooting. + <b>The speed at which openpilot deemeth the chariot stoppโ€™d.</b> Raise it to brake ere the mark and halt smoothly; lower it to tarry longer yet hazard overshooting. + + + Conditional Experimental Mode + Conditional Experimental Mode + + + <b>Automatically switch to "Experimental Mode" when set conditions are met.</b> Allows the model to handle challenging situations with smarter decision making. + <b>When set conditions be met, switch to "Experimental Mode" anon.</b> Alloweth the model to grapple with hard trials through wiser judgment. + + + Below + Below + + + <b>Switch to "Experimental Mode" when driving below this speed without a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>When thou drivest beneath this speed without a lead, switch to "Experimental Mode"</b> to help openpilot more smoothly contend with low-speed affairs. + + + Curve Detected Ahead + A Bend Espied Ahead + + + <b>Switch to "Experimental Mode" when a curve is detected</b> to allow the model to set an appropriate speed for the curve. + <b>When a curve is espied, switch to "Experimental Mode"</b> to permit the model to set a speed befitting the bend. + + + Lead Detected Ahead + A Leader Espied Afore + + + <b>Switch to "Experimental Mode" when a slower or stopped vehicle is detected.</b> Can make braking smoother and more reliable on some vehicles. + <b>Switch to "Experimental Mode" when a slower or halted coach is espied.</b> May render thy braking more smooth and steadfast on certain vehicles. + + + Navigation-Based + By Navigation Guided + + + <b>Switch to "Experimental Mode" when approaching intersections or turns on the active route</b> while using "Navigate on openpilot" (NOO) to allow the model to set an appropriate speed for upcoming maneuvers. + <b>When thou drawโ€™st nigh intersections or turns upon the active route, switch to "Experimental Mode"</b> whilst using "Navigate on openpilot" (NOO), to grant the model leave to set a meet speed for impending maneuvers. + + + Predicted Stop In + Foretold Stop In + + + <b>Switch to "Experimental Mode" when openpilot predicts a stop within the set time.</b> This is usually triggered when the model "sees" a red light or stop sign ahead.<br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>Betake thee to "Experimental Mode" when openpilot foretelleth a stop within the appointed time.</b> This is oft provoked when the model "espies" a red light or stop sign ahead.<br><br><i><b>Disclaimer</b>: openpilot doth not expressly detect traffic lights or stop signs. In "Experimental Mode", openpilot maketh end-to-end driving judgments from camera input, which may cause it to halt eโ€™en when no clear cause appeareth.</i> + + + Turn Signal Below + Turn Signal Beneath + + + <b>Switch to "Experimental Mode" when using a turn signal below the set speed</b> to allow the model to choose an appropriate speed for smoother left and right turns. + <b>When thou usest a turn signal beneath the set speed, switch to "Experimental Mode"</b> to let the model choose a fitting pace for smoother left and right turns. + + + Status Widget + Status Widget + + + <b>Show which condition triggered "Experimental Mode"</b> on the driving screen. + <b>Display which condition did unleash "Experimental Mode"</b> upon the driving screen. + + + Curve Speed Controller + Curvรจd Speed Controller + + + <b>Automatically slow down for upcoming curves</b> using data learned from your driving style, adapting to curves as you would. + <b>Sloweth down anon for oncoming curves</b> with lore gleanโ€™d from thy driving guise, bending to curves eโ€™en as thou wouldst. + + + Calibrated Lateral Acceleration + Calibrated Lateral Acceleration, prithee + + + <b>The learned lateral acceleration from collected driving data.</b> This sets how fast openpilot will take curves. Higher values allow faster cornering; lower values slow the vehicle for gentler turns. + <b>The learnรจd lateral acceleration from collected driving lore.</b> This setteth how swift openpilot shall take curves. Higher values permit brisker cornering; lower values bid the chariot slow for gentler turns. + + + Calibration Progress + Calibrationโ€™s Progress + + + <b>How much curve data has been collected.</b> This is a progress meter; it is normal for the value to stay low and rarely reach 100%. + <b>How much curve data hath been gatherโ€™d.</b> This is a progress meter; โ€™tis normal for the value to bide low and seldom attain 100%. + + + Reset Curve Data + Reset the Curvรจd Data + + + <b>Reset collected user data for "Curve Speed Controller".</b> + <b>Reset the collected user data for "Curve Speed Controller".</b> + + + <b>Show the "Curve Speed Controller" target speed on the driving screen.</b> + <b>Display the "Curve Speed Controller" target speed upon the driving screen.</b> + + + Driving Personalities + Humours of the Driver + + + <b>Customize the "Driving Personalities"</b> to better match your driving style. + <b>Customize the "Driving Personalities"</b> to better suit thy manner of driving. + + + Traffic Mode + Mode of Traffic + + + <b>Customize the "Traffic Mode" personality profile.</b> Designed for stop-and-go driving. + <b>Fashion the "Traffic Mode" persona to thy liking.</b> Forged for stop-and-go travel. + + + Following Distance + Following Distance + + + <b>The minimum following distance to the lead vehicle in "Traffic Mode".</b> openpilot blends between this value and the "Aggressive" profile as speed increases. Increase for more space; decrease for tighter gaps. + <b>The least trailing distance to the lead chariot in "Traffic Mode".</b> openpilot doth blend โ€™twixt this value and the "Aggressive" profile as speed doth rise. Increase for more breadth; decrease for closer gaps. + + + Acceleration Smoothness + Smoothness of Acceleration + + + <b>How smoothly openpilot accelerates in "Traffic Mode".</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>How smoothly openpilot doth accelerate in "Traffic Mode".</b> Increase for gentler onsets; decrease for swifter yet more abrupt takeoffs. + + + Braking Smoothness + Smoothness of Braking + + + <b>How smoothly openpilot brakes in "Traffic Mode".</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>How smoothly openpilot doth brake in โ€œTraffic Mode.โ€</b> Raise it for gentler halts; lower it for swifter yet sharper braking. + + + Safety Gap Bias + Safety Gap Bias + + + <b>How much extra space openpilot keeps from the vehicle ahead in "Traffic Mode".</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>How much extra space openpilot keepeth from the carriage ahead in "Traffic Mode".</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + + + Slowdown Response + Slackening Response + + + <b>How smoothly openpilot slows down in "Traffic Mode".</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>How smoothly openpilot abateth speed in "Traffic Mode".</b> Increase to make deceleration more gentle; decrease for swifter yet sharper slowings. + + + Speed-Up Response + Hasten Thy Response + + + <b>How smoothly openpilot speeds up in "Traffic Mode".</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>How smoothly openpilot doth hasten in "Traffic Mode".</b> Increase for gentler rise; decrease for swifter yet more jarring quickening. + + + Reset to Defaults + Return thee to Defaults + + + <b>Reset "Traffic Mode" settings to defaults.</b> + <b>Reset "Traffic Mode" settings to their defaults.</b> + + + Aggressive + Fierce + + + <b>Customize the "Aggressive" personality profile.</b> Designed for assertive driving with tighter gaps. + <b>Customize the "Aggressive" personality profile.</b> Wrought for bold driving with closer gaps. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Aggressive" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.25 seconds. + <b>How many seconds openpilot doth trail behind lead carriages when thou usest the "Aggressive" profile.</b> Increase for broader space; decrease for narrower gaps.<br><br>Default: 1.25 seconds. + + + <b>How smoothly openpilot accelerates with the "Aggressive" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>How smoothly openpilot doth quicken with the "Aggressive" profile.</b> Raise it for gentler onsets; lower it for swifter yet more sudden departures. + + + <b>How smoothly openpilot brakes with the "Aggressive" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>How smoothly openpilot doth brake with the "Aggressive" profile.</b> Increase for gentler halts; decrease for swifter yet sharper braking. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Aggressive" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>How much surplus space openpilot doth keep from the chariot before with the "Aggressive" profile.</b> Increase for wider gaps and more wary following; decrease for narrower gaps and closer attendance. + + + <b>How smoothly openpilot slows down with the "Aggressive" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>How gently openpilot doth ease its pace with the "Aggressive" profile.</b> Increase for more gradual abatement; decrease for swifter yet sharper slowings. + + + <b>How smoothly openpilot speeds up with the "Aggressive" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>How smoothly openpilot doth hasten with the "Aggressive" profile.</b> Increase for gentler quickening; decrease for swifter yet more jarring quickening. + + + <b>Reset the "Aggressive" profile to defaults.</b> + <b>Reset the "Aggressive" profile to its defaults.</b> + + + Standard + Standard + + + <b>Customize the "Standard" personality profile.</b> Designed for balanced driving with moderate gaps. + <b>Customize the "Standard" persona profile.</b> Wrought for even-handed driving with temperate gaps. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Standard" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.45 seconds. + <b>How many seconds openpilot doth follow behind lead chariots when using the "Standard" profile.</b> Increase for more breadth; decrease for narrower gaps.<br><br>Default: 1.45 seconds. + + + <b>How smoothly openpilot accelerates with the "Standard" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>How smoothly openpilot doth accelerate with the "Standard" profile.</b> Increase for gentler onsets; decrease for swifter yet more abrupt takeoffs. + + + <b>How smoothly openpilot brakes with the "Standard" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>How smoothly doth openpilot brake with the "Standard" profile.</b> Increase for gentler stoppeth; decrease for quicker yet sharper braking. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Standard" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>What measure of extra space openpilot doth keep from the chariot before with the โ€œStandardโ€ profile.</b> Increase it for wider gaps and more wary following; decrease it for narrower gaps and closer attendance.</b + + + <b>How smoothly openpilot slows down with the "Standard" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>How smoothly openpilot abateth speed with the "Standard" profile.</b> Increase for gentler deceleration; decrease for swifter yet sharper slowings. + + + <b>How smoothly openpilot speeds up with the "Standard" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>How smoothly openpilot doth hasten with the "Standard" profile.</b> Increase for gentler onset; decrease for swifter yet more jarring haste. + + + <b>Reset the "Standard" profile to defaults.</b> + <b>Reset the "Standard" profile to its defaults anon.</b> + + + Relaxed + At Ease + + + <b>Customize the "Relaxed" personality profile.</b> Designed for smoother, more comfortable driving with larger gaps. + <b>Customize the "Relaxed" personality profile.</b> Wrought for smoother, more comfortable travel with broader gaps. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Relaxed" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.75 seconds. + <b>How many seconds openpilot doth follow behind lead carriages when using the "Relaxed" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.75 seconds. + + + <b>How smoothly openpilot accelerates with the "Relaxed" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>How smoothly openpilot doth accelerate with the "Relaxed" profile.</b> Increase for gentler onsets; decrease for swifter yet more abrupt departures. + + + <b>How smoothly openpilot brakes with the "Relaxed" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>How smoothly openpilot doth brake with the "Relaxed" profile.</b> Increase for gentler stoppings; decrease for swifter yet sharper braking. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Relaxed" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>How much additional space openpilot doth keep from the carriage before with the "Relaxed" profile.</b> Increase for wider gaps and gentler following; decrease for narrower gaps and closer attendance. + + + <b>How smoothly openpilot slows down with the "Relaxed" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>How smoothly openpilot doth ease its pace with the "Relaxed" profile.</b> Increase for gentler abatement; decrease for swifter yet keener slowings. + + + <b>How smoothly openpilot speeds up with the "Relaxed" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>How gently doth openpilot hasten with the โ€œRelaxedโ€ profile.</b> Increase for more measured quickening; decrease for swifter yet more jostling quickening. + + + <b>Reset the "Relaxed" profile to defaults.</b> + <b>Reset the "Relaxed" profile to its defaults, prithee.</b> + + + Longitudinal Tuning + Longitudinal Tuning, prithee + + + <b>Acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Changes to the reins of speeding and braking</b> to fine-tune how openpilot driveth. + + + Acceleration Profile + Acceleration Profile + + + <b>How quickly openpilot speeds up.</b> "Eco" is gentle and efficient, "Sport" is firmer and more responsive, and "Sport+" accelerates at the maximum rate allowed. + <b>How swiftly openpilot doth hasten.</b> โ€œEcoโ€ is gentle and thrifty, โ€œSportโ€ is sturdier and more quick to answer, and โ€œSport+โ€ doth speed apace at the utmost rate permitted. + + + Deceleration Profile + Deceleration Humour + + + <b>How firmly openpilot slows down.</b> "Eco" favors coasting, "Sport" applies stronger braking. + <b>How stoutly openpilot doth abate its pace.</b> โ€œEcoโ€ doth favor coasting, โ€œSportโ€ doth lay on stronger braking. + + + Human-Like Acceleration + Acceleration in Mortal Fashion + + + <b>Acceleration that mimics human behavior</b> by easing the throttle at low speeds and adding extra power when taking off from a stop. + <b>Acceleration that doth mirror mortal habit</b>, easing the throttle at low speeds and bestowing extra vigor when setting forth from a stop. + + + Human-Like Following + Following in Mortal Guise + + + Lead Detection Sensitivity + Lead Detection Sensitivity + + + <b>How sensitive openpilot is to detecting vehicles.</b> Higher sensitivity allows quicker detection at longer distances but may react to non-vehicle objects; lower sensitivity is more conservative and reduces false detections. + <b>How keenly openpilot doth espy vehicles.</b> Greater sensitivity granteth swifter sight at farther lengths, yet may stir at things not vehicles; lesser sensitivity is more temperate and abateth false espials. + + + Maximum Acceleration + Maximum Acceleration + + + <b>Limit the strongest acceleration</b> openpilot can command. + <b>Rein in the mightiest acceleration</b> openpilot may bid. + + + "Taco Bell Run" Turn Speed Hack + "Taco Bell Run" Turn Speed Hacketh + + + <b>The turn-speed hack from comma's 2022 "Taco Bell Run".</b> Designed to slow down for left and right turns. + <b>The turn-speed stratagem from comma's 2022 "Taco Bell Run".</b> Devised to slacken pace for left and rightward turns. + + + Quality of Life + Comforts of Life + + + <b>Miscellaneous acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Assorted alterations to acceleration and braking governance</b> to fine-tune how openpilot doth drive. + + + Cruise Interval + Cruise Interval + + + <b>How much the set speed increases or decreases</b> for each + or โ€“ cruise control button press. + <b>How much the set speed doth rise or fall</b> with each + or โ€“ cruise control button press. + + + Cruise Interval (Hold) + Cruise Interval (Hold) + + + <b>How much the set speed increases or decreases while holding the + or โ€“ cruise control buttons.</b> + <b>How much the set speed doth rise or fall whilst thou holdest the + or โ€“ cruise control buttons.</b> + + + Force Stop at "Detected" Stop Lights/Signs + Compel a Halt at โ€œDetectedโ€ Stop Lights/Signs + + + <b>Force openpilot to stop whenever the driving model "detects" a red light or stop sign.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>Compel openpilot to halt whensoever the driving model โ€œdetectsโ€ a red light or stop sign.</b><br><br><i><b>Disclaimer</b>: openpilot doth not expressly detect traffic lights or stop signs. In โ€œExperimental Modeโ€, openpilot maketh end-to-end driving judgments from camera input, which meaneth it may halt eโ€™en when no clear cause is seen.</i> + + + Increase Stopped Distance by: + Augment the Halted Distance by: + + + <b>Add extra space when stopped behind vehicles.</b> Increase for more room; decrease for shorter gaps. + <b>When thou art halted behind carriages, add extra space.</b> Increase for more breadth; decrease for shorter gaps. + + + Map Accel/Decel to Gears + Map Accel/Decel to Gears + + + <b>Map the Acceleration or Deceleration profiles to the vehicle's "Eco" and "Sport" gear modes.</b> + <b>Map the Acceleration or Deceleration humours unto the vehicleโ€™s โ€œEcoโ€ and โ€œSportโ€ gear modes.</b> + + + Offset Set Speed by: + Offset Set Speed by: + + + <b>Increase the set speed by the chosen offset.</b> For example, set +5 if you usually drive 5 over the limit. + <b>Raise the set speed by the chosen offset.</b> For example, set +5 if thou dost commonly drive 5 oโ€™er the limit. + + + Reverse Cruise Increase + Reverse Cruise Increase + + + <b>Reverse the cruise control button behavior</b> so a short press increases the set speed by 5 instead of 1. + <b>Invert the cruise control buttonโ€™s wont</b> that a brief press doth raise the set speed by 5 instead of 1. + + + Increase Following Distance by: + Increase the Following Distance by: + + + Reduce Acceleration by: + Abate Acceleration by: + + + Reduce Speed in Curves by: + Abate Thy Speed in Curves by: + + + Snow + Snow + + + + + <b>Driving adjustments for snowy conditions.</b> + <b>Chariot-taming adjustments for snowy climes.</b> + + + <b>Add extra space behind lead vehicles in snow.</b> Increase for more space; decrease for tighter gaps. + <b>Add extra space behind lead carriages in snow.</b> Increase for more breadth; decrease for closer gaps. + + + <b>Add extra buffer when stopped behind vehicles in snow.</b> Increase for more room; decrease for shorter gaps. + <b>Add extra buffer when halted behind carriages in snow.</b> Increase for more breadth; decrease for shorter gaps. + + + <b>Lower the maximum acceleration in snow.</b> Increase for softer takeoffs; decrease for quicker but less stable takeoffs. + <b>Abate the utmost acceleration in snow.</b> Increase for gentler departures; decrease for swifter yet less steadfast departures. + + + <b>Lower the desired speed while driving through curves in snow.</b> Increase for safer, gentler turns; decrease for more aggressive driving in curves. + <b>Whilst thou drivโ€™st through snowy bends, lower thy desirโ€™d speed.</b> Increase it for safer, gentler turns; decrease it for more bold, aggressive coursing through curves. + + + Speed Limit Controller + Speed Limit Controller + + + <b>Limit openpilot's maximum driving speed to the current speed limit</b> obtained from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + <b>Yoke openpilotโ€™s utmost driving speed unto the present speed limit</b> gotten from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + + + Fallback Speed + Fallback Speed + + + <b>The speed used by "Speed Limit Controller" when no speed limit is found.</b><br><br>- <b>Set Speed</b>: Use the cruise set speed<br>- <b>Experimental Mode</b>: Estimate the limit using the driving model<br>- <b>Previous Limit</b>: Keep using the last confirmed limit + <b>The speed employโ€™d by "Speed Limit Controller" when no speed limit is espied.</b><br><br>- <b>Set Speed</b>: Use the cruiseโ€™s set speed<br>- <b>Experimental Mode</b>: Divine the limit by the driving model<br>- <b>Previous Limit</b>: Keep using the last confirmโ€™d limit + + + Override Speed + Oโ€™erride Speed + + + <b>The speed used by "Speed Limit Controller" after you manually drive faster than the posted limit.</b><br><br>- <b>Set with Gas Pedal</b>: Use the highest speed reached while pressing the gas<br>- <b>Max Set Speed</b>: Use the cruise set speed<br><br>Overrides clear when openpilot disengages. + <b>The speed employโ€™d by "Speed Limit Controller" after thou dost drive apace beyond the posted limit.</b><br><br>- <b>Set with Gas Pedal</b>: Use the highest speed attainโ€™d whilst pressing the gas<br>- <b>Max Set Speed</b>: Use the cruise set speed<br><br>Overrides clear when openpilot disengageth. + + + <b>Miscellaneous "Speed Limit Controller" changes</b> to fine-tune how openpilot drives. + <b>Assorted โ€œSpeed Limit Controllerโ€ alterations</b> to fine-tune how openpilot doth drive. + + + Confirm New Speed Limits + Confirm New Speed Limits + + + <b>Ask before changing to a new speed limit.</b> To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds. + <b>Entreat consent ere shifting to a new speed limit.</b> To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds. + + + Force MPH from Dashboard + Compel MPH from the Dashboard + + + <b>Always read dashboard speed limit signs in mph.</b> Turn this on if the cluster shows mph but the limit is interpreted as km/h. + <b>Ever read the dashโ€™s speed limit signs in mph.</b> Enable this if the cluster showeth mph, yet the limit is taken as km/h. + + + Higher Limit Lookahead Time + Higher Limit Lookahead Time, prithee + + + <b>How far ahead openpilot anticipates upcoming higher speed limits</b> from downloaded map data. + <b>How far afore openpilot doth foresee upcoming higher speed limits</b> from downloaded map data. + + + Lower Limit Lookahead Time + Lower Bound Lookahead Time + + + <b>How far ahead openpilot anticipates upcoming lower speed limits</b> from downloaded map data. + <b>How far ahead doth openpilot foresee upcoming lesser speed limits</b> from downloaded map data. + + + Match Speed Limit on Engage + Match the Speed Limit upon Engage + + + <b>When openpilot is first enabled, automatically set the max speed to the current posted limit.</b> + <b>When first thou dost enable openpilot, set the max speed straightway to the current posted limit.</b> + + + Use Mapbox as Fallback + Use Mapbox as Thy Fallback + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>Employ Mapbox speed-limit lore when no other fount is at hand.</b> + + + Speed Limit Source Priority + Speed Limit Source Priority, in sooth + + + <b>The source order for speed limits</b> when more than one is available. + <b>The fountly order for speed limits</b> when more than one doth present itself. + + + Speed Limit Offsets + Speed Limit Indulgences + + + <b>Add an offset to the posted speed limit</b> to better match your driving style. + <b>Add an offset to the posted speed limit</b> to better suit thy manner of driving. + + + Speed Offset (0โ€“24 mph) + Speed Offset (0โ€“24 mph), prithee + + + <b>How much to offset posted speed-limits</b> between 0 and 24 mph. + <b>How much to offset posted speed-limits</b> betwixt 0 and 24 mph. + + + Speed Offset (25โ€“34 mph) + Speed Offset (25โ€“34 mph), prithee + + + <b>How much to offset posted speed-limits</b> between 25 and 34 mph. + <b>How far to offset posted speed-limits</b> betwixt 25 and 34 mph. + + + Speed Offset (35โ€“44 mph) + Speed Offset (35โ€“44 mph) + + + <b>How much to offset posted speed-limits</b> between 35 and 44 mph. + <b>How much to offset the posted speed-limits</b> โ€™twixt 35 and 44 mph. + + + Speed Offset (45โ€“54 mph) + Speed Offset (45โ€“54 mph) + + + <b>How much to offset posted speed-limits</b> between 45 and 54 mph. + <b>How much to set offset โ€˜gainst posted speed-limits</b> โ€˜twixt 45 and 54 mph. + + + Speed Offset (55โ€“64 mph) + Speed Offset (55โ€“64 mph) + + + <b>How much to offset posted speed-limits</b> between 55 and 64 mph. + <b>How much to offset the posted speed-limits</b> betwixt 55 and 64 mph. + + + Speed Offset (65โ€“74 mph) + Speed Offset (65โ€“74 mph) + + + <b>How much to offset posted speed-limits</b> between 65 and 74 mph. + <b>How far to oโ€™erset posted speed-limits</b> betwixt 65 and 74 mph. + + + Speed Offset (75โ€“99 mph) + Speed Offset (75โ€“99 mph) + + + <b>How much to offset posted speed-limits</b> between 75 and 99 mph. + <b>How far to offset posted speed-limits</b> betwixt 75 and 99 mph. + + + Visual Settings + Visuall Settings + + + <b>Visual "Speed Limit Controller" changes</b> to fine-tune how the driving screen looks. + <b>Behold, โ€œSpeed Limit Controllerโ€ doth alter its visage</b> to fine-tune the aspect of the driving screen. + + + Show Speed Limit Offset + Display the Speed Limit Offset + + + <b>Show the current offset from the posted limit</b> on the driving screen. + <b>Display the present offset from the posted limit</b> upon the driving screen. + + + Show Speed Limit Sources + Display the Founts of Speed Limits + + + <b>Display the speed-limit sources and their current values</b> on the driving screen. + <b>Unveil the speed-limit fountains and their present values</b> upon the driving screen. + + + seconds + seconds + + + m/sยฒ + m/sยฒ + + + mph + mph + + + With Lead + With Lead + + + <b>Switch to "Experimental Mode" when driving below this speed with a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>When thou drivest beneath this speed with a lead, switch to "Experimental Mode"</b> to help openpilot more smoothly govern low-speed affairs. + + + Slower Lead + Slower Lead, prithee + + + Stopped Lead + Lead hath stoppโ€™d + + + Intersections + Crossways + + + Turns + Turns + + + Off + Off + + + second + second + + + Not For Detected Lanes + Not For Lanes Espied + + + RESET + RESET + + + Are you sure you want to completely reset your curvature data? + Art thou certain thou wouldst wholly reset thy curvature data? + + + Eco + Eco + + + Sport + Athletics + + + Sport+ + Sport+ + + + feet + feet + + + Acceleration + Acceleration + + + Deceleration + Deceleration, prithee + + + MANAGE + GOVERN + + + Set Speed + Set Thy Speed + + + Experimental Mode + Experimental Mode + + + Previous Limit + Prior Limit + + + None + None + + + Set With Gas Pedal + Set With Gas Pedal + + + Max Set Speed + Maximal Set Speed + + + SELECT + SELECT + + + Dashboard + Dashboard + + + Map Data + Cartographick Data + + + Navigation + Navigation + + + Highest + Most high + + + Lowest + Lowest + + + Select your primary priority + Choose thy foremost priority + + + Select your secondary priority + Choose thy secondary priority + + + Select your tertiary priority + Select thy tertiary priority + + + Lower Limits + Lower Bounds + + + Higher Limits + Loftier Limits + + + Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? + Art thou certain thou wouldst wholly reset thy settings for <b>Traffic Mode</b>? + + + Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? + Art thou certain thou wouldst wholly reset thy settings for the <b>Aggressive</b> personality? + + + Are you sure you want to completely reset your settings for the <b>Standard</b> personality? + Art thou certain thou wouldst wholly reset thy settings for the <b>Standard</b> personality? + + + Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? + Art thou certain thou wouldst wholly reset thy settings for the <b>Relaxed</b> personality? + + + foot + foot + + + meter + metre + + + meters + meters + + + km/h + km/h + + + Speed Offset (0โ€“29 km/h) + Speed Offset (0โ€“29 km/h), prithee + + + Speed Offset (30โ€“49 km/h) + Speed Offset (30โ€“49 km/h), prithee + + + Speed Offset (50โ€“59 km/h) + Speed Offset (50โ€“59 km/h) + + + Speed Offset (60โ€“79 km/h) + Speed Offset (60โ€“79 km/h) + + + Speed Offset (80โ€“99 km/h) + Speed Offset (80โ€“99 km/h) + + + Speed Offset (100โ€“119 km/h) + Speed Offset (100โ€“119 km/h) + + + Speed Offset (120โ€“140 km/h) + Speed Offset (120โ€“140 km/h) + + + <b>Following behavior that mimics human drivers</b> by closing gaps behind faster vehicles for quicker takeoffs and dynamically adjusting the desired following distance for gentler, more efficient braking. + <b>Following comportment that doth mirror mortal coachmen</b> by narrowing gaps behind swifter chariots for hastier set-offs and by dynamically tuning the desired following distance for gentler, more thrifty braking. + + + + FrogPilotManageControl + + MANAGE + MANAGE + + + + FrogPilotMapsPanel + + Manually + By thine own hand + + + Weekly + Weekly + + + Monthly + Monthly + + + Automatically Update Maps + Update Maps Automatically, prithee + + + <b>How often maps update</b> from "OpenStreetMap (OSM)" with the latest speed limit information. Weekly updates run every Sunday; monthly updates run on the 1st. + <b>How oft maps update</b> from "OpenStreetMap (OSM)" with the latest speed limit tidings. Weekly updates run each Sunday; monthly updates run on the 1st. + + + Download Maps + Fetch the Charts + + + DOWNLOAD + DOWNLOAD + + + <b>Manually update your selected map sources</b> so "Speed Limit Controller" has the latest speed limit information. + <b>Manually refresh thy chosen map sources</b> that "Speed Limit Controller" may bear the latest speed limit tidings. + + + CANCEL + CANCEL anon + + + Cancel the download? + Shalt thou cancel the download? + + + Last Updated + Last Updated + + + Map Sources + Map Sources + + + <b>Select the countries or U.S. states to use with "Speed Limit Controller".</b> + <b>Choose the realms or U.S. provinces to employ with "Speed Limit Controller".</b> + + + COUNTRIES + REALMS + + + STATES + STATES + + + Progress + Progress Apace + + + Time Elapsed + Time Elapsโ€™d + + + Time Remaining + Time Remaining + + + Remove Maps + Remove the Maps + + + REMOVE + REMOVE + + + <b>Delete downloaded map data</b> to free up storage space. + <b>Purge the downloaded map data</b> to unburden thy storage space. + + + Delete all downloaded maps? + Dost thou wish to delete all downloaded maps? + + + Reset Downloader + Reset the Downloader + + + RESET + RESET + + + <b>Reset the map downloader.</b> Use this if downloads are stuck or failing. + <b>Reset the map downloader.</b> Use this if thy downloads be stuck or failing. + + + Reset the map downloader? Your device will reboot afterward. + Shall the map downloader be reset? Thy device shall reboot anon. + + + Reset + Reset + + + Resetting... + Resetting apace... + + + Reset! + Reset! + + + Rebooting... + Rebooting anon... + + + Storage Used + Storage Usโ€™d + + + Africa + Africa + + + Antarctica + Antarctica + + + Asia + Asia + + + Europe + Europa + + + North America + North America + + + Oceania + Oceania + + + South America + South America + + + United States - Midwest + United States โ€” The Midwest + + + United States - Northeast + United States โ€“ The Northeast + + + United States - South + United States - South + + + United States - West + United States - Westward Realm + + + United States - Territories + United States - The Territories + + + Offline... + Disconnected... + + + CANCELLED + CANCELLED + + + + FrogPilotModelPanel + + Automatically Download New Models + Automatically Fetch New Models + + + <b>Automatically download new driving models</b> as they become available. + <b>Auto-download new driving models</b> the moment they be made available. + + + Delete Driving Models + Purge Driving Models + + + <b>Delete downloaded driving models</b> to free up storage space. + <b>Pray delete the downloaded driving models</b> to free thy storage space. + + + Download Driving Models + Procure Driving Models + + + <b>Manually download driving models</b> to the device. + <b>Manually fetch driving models</b> unto the device. + + + Model Randomizer + Model Randomizer + + + <b>Select a random driving model each drive</b> and use feedback prompts at the end of the drive to help find the model that best suits you! + <b>Choose a random driving model for each journey</b>, and at thy voyageโ€™s end use feedback prompts to discover the model that best befits thee! + + + Manage Model Blacklist + Govern the Model Blacklist + + + <b>Add or remove driving models from the "Model Randomizer" blacklist.</b> + <b>Add or remove driving models from the "Model Randomizer" blacklist.</b> + + + Manage Model Ratings + Govern Model Ratings + + + <b>View or reset saved model ratings</b> used by the "Model Randomizer". + <b>Behold or reset saved model ratings</b> used by the "Model Randomizer". + + + Select Driving Model + Choose Thy Driving Model + + + <b>Choose which driving model openpilot uses.</b> + <b>Choose which driving model openpilot doth use.</b> + + + Update Model Manager + Refresh the Model Steward + + + <b>Update the "Model Manager"</b> to support the latest models. + <b>Refresh the "Model Manager"</b> to bear the newest models. + + + DELETE + DELETE + + + DELETE ALL + DELETE ALL + + + Select a driving model to delete + Select a driving model to be deletโ€™d + + + Are you sure you want to delete the "%1" model? + Art thou certain thou wouldst delete the "%1" model? + + + Delete + Delete thee + + + Are you sure you want to delete all of your downloaded driving models? + Art thou certain thou wouldst delete all thy downloaded driving models? + + + DOWNLOAD + DOWNLOAD + + + DOWNLOAD ALL + DOWNLOAD ALL + + + Tinygrad is out of date and must be updated before you can download new models. Update now? + Tinygrad is out of date and must be restored ere thou canst download new models. Wilt thou update now? + + + Updating Tinygrad will delete all existing Tinygrad-based models which will need to be re-downloaded. Proceed? + Updating Tinygrad shall wipe all existing Tinygrad-based models, which must be re-downloaded anon. Dost thou proceed? + + + CANCEL + CANCEL + + + Updating... + Updating... + + + Select a driving model to download + Choose a driving model to be downloaded + + + ADD + ADD + + + REMOVE + REMOVE + + + REMOVE ALL + REMOVE ALL + + + There are no more driving models to blacklist. The only available model is "%1"! + No further driving models remain to be blacklisted. The sole model at hand is "%1"! + + + Select a driving model to add to the blacklist + Select a driving model to add unto the blacklist + + + Are you sure you want to add the "%1" model to the blacklist? + Art thou certain thou wouldst add the "%1" model to the blacklist? + + + Add + Addeth + + + Select a driving model to remove from the blacklist + Choose a driving model to strike from the blacklist + + + Are you sure you want to remove the "%1" model from the blacklist? + Art thou certain thou wouldst remove the "%1" model from the blacklist? + + + Remove + Remove thee + + + Are you sure you want to remove all of your blacklisted driving models? + Art thou certain thou wouldst remove all thy blacklisted driving models? + + + RESET + RESET + + + VIEW + VIEW + + + Reset all model drives and ratings? This clears your drive history and collected feedback! + Shall all model drives and ratings be reset? This doth clear thy drive history and gathered feedback! + + + SELECT + SELECT + + + UPDATE + UPDATE + + + Cancelling... + Cancellingโ€ฆ anon. + + + Updating Tinygrad will delete existing Tinygrad-based driving models and need to be re-downloaded. Proceed? + Updating Tinygrad shall purge the Tinygrad-based driving models, which must then be re-downloaded. Proceed? + + + The "Model Randomizer" works only with downloaded models. Download all models now? + The "Model Randomizer" doth serve only with downloaded models. Shalt thou download all models now? + + + Offline... + Offline... + + + Update available! + An update doth await thee! + + + Up to date! + All things be up to date! + + + Select a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + Choose a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + + + + FrogPilotModelReview + + How would you rate that drive? + How wouldst thou rate that journey? + + + Model successfully blacklisted! + Model hath been blacklisted with success! + + + Drive Rating Selection + Drive Rating Selection, prithee + + + Blacklist this model to remove it from rotation + BlackList this model, that it be removโ€™d from rotation + + + Blacklist Model + Blacklisteฬ€th Model + + + Model used during that drive: + Model employโ€™d during that journey: + + + Model Rank + Modelโ€™s Degree of Rank + + + Model Rating + Model Appraisal + + + Model Drives + Model Steereth + + + Total Drives + Sum of Thy Journeys + + + #%1 + #%1 + + + %1% + %1% + + + %1 %2 + %1 %2 + + + Drive + Proceed apace + + + Drives + Journeys + + + %1 Total %2 + %1 In Sum %2 + + + + FrogPilotNavigationPanel + + Manage Your Settings At + Attend Thy Settings At + + + Offline... + Offline... + + + Mapbox + Mapbox + + + Amap + Amap + + + Destination Search Provider + Provider of Quest for Destination + + + <b>The search provider used for destination queries</b> in "Navigate on Openpilot". Options include Mapbox (recommended) and Amap. + <b>The search provider employโ€™d for destination queries</b> in "Navigate on Openpilot". Choices include Mapbox (recommended) and Amap. + + + Amap Key #1 + Amap Key #1 + + + Amap Key #2 + Amap Key the Second + + + Public Mapbox Key + Public Mapbox Key + + + Secret Mapbox Key + Secret Mapbox Key, thou shalt remain hidden + + + Mapbox Setup Instructions + Mapbox Setup Instructions, prithee + + + VIEW + VIEW + + + <b>Instructions on how to set up Mapbox</b> for "Primeless Navigation". + <b>Precepts to prepare Mapbox</b> for "Primeless Navigation". + + + CANCEL + CANCEL + + + Manually Update Speed Limits + Manually Renew Speed Limits + + + Speed Limit Filler + Speed Limit Filler, prithee + + + <b>Automatically collect missing or incorrect speed limits while you drive</b> using speeds limits sourced from your dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When you're parked and connected to Wi-Fi, FrogPilot will automatically processes this data into a file to be used with the tool located at "SpeedLimitFiller.frogpilot.download".<br><br>You can download this file from "The Pond" in the "Download Speed Limits" menu.<br><br>Need a step-by-step guide? Visit <b>#speed-limit-filler</b> in the FrogPilot Discord! + <b>Whilst thou drivest, automatically gather speed limits that be lacking or in error</b> using speed limits drawn from thy dashboard (an it be supported), Mapbox, and "Navigate on openpilot".<br><br>When thou art parked and joined to Wiโ€‘Fi, FrogPilot shall automatically process this data into a file to be used with the tool located at "SpeedLimitFiller.frogpilot.download".<br><br>Thou canst download this file from "The Pond" in the "Download Speed Limits" menu.<br><br>Cravโ€™st thou a stepโ€‘byโ€‘step guide? Visit <b>#speed-limit-filler</b> in the FrogPilot Discord! + + + Cancel the speed-limit update? + Shalt thou cancel the speed-limit update? + + + Cancelled... + Cancelledโ€ฆ + + + You've hit today's request limit. + +It will reset in %1 hours and %2 minutes. + Thou hast struck thy limit of requests for this day. + +It shall reset in %1 hours and %2 minutes. + + + This process takes a while. It's recommended to start when you're done driving and connected to stable Wi-Fi. Continue? + This process requireth some while. โ€™Tis advised to begin when thou hast done driving and art connected to stable Wiโ€‘Fi. Continue? + + + <b>Manage your "%1".</b> + <b>Command thy "%1".</b> + + + ADD + ADD + + + Enter your %1 + Enter thy %1 + + + Inputted key is invalid or too short! + The key thou hast entered is invalid or too brief! + + + Remove your %1? + Wilt thou remove thy %1? + + + REMOVE + REMOVE + + + Completed! + โ€™Tis done! + + + + FrogPilotSettingsWindow + + MANAGE + GOVERN + + + DRIVING MODEL + DRIVING MODEL, prithee + + + GAS / BRAKE + GAS / BRAKE + + + STEERING + STEERING + + + MAP DATA + MAP DATA + + + NAVIGATION + NAVIGATION + + + DATA + DATA + + + DEVICE CONTROLS + DEVICE CONTROLS + + + UTILITIES + UTILITIES + + + APPEARANCE + VISAGE + + + THEME + THEME + + + VEHICLE SETTINGS + VEHICLE SETTINGS, good sir + + + WHEEL CONTROLS + WHEEL COMMANDS + + + Alerts and Sounds + Alarums and Sounds + + + <b>Adjust alert volumes and enable custom notifications.</b> + <b>Adjust thy alert volumes and enable bespoke notifications.</b> + + + Driving Controls + Charioteerโ€™s Controls + + + <b>Fine-tune custom FrogPilot acceleration, braking, and steering controls.</b> + <b>Hone bespoke FrogPilot acceleration, braking, and steering governance.</b> + + + Navigation + Navigation + + + <b>Download map data for the "Speed Limit Controller" and configure "Navigate on openpilot" (NOO).</b> + <b>Procure map data for the "Speed Limit Controller" and set in order "Navigate on openpilot" (NOO).</b> + + + System Settings + System Settings, prithee + + + <b>Manage backups, device settings, screen options, storage, and tools to keep FrogPilot running smoothly.</b> + <b>Govern thy backups, device settings, screen choices, storage, and tools, that FrogPilot may run full smoothly.</b> + + + Theme and Appearance + Theme and Visage + + + <b>Customize the look of the driving screen and interface, including themes!</b> + <b>Customize the visage of the driving screen and interface, themes included!</b> + + + Vehicle Settings + Carriage Settings + + + <b>Configure car-specific options and steering wheel button mappings.</b> + <b>Set car-befitting choices and mappings for the steering wheelโ€™s buttons.</b> + + + Minimal + Most Minimal + + + Standard + Standard + + + Advanced + Advanced + + + Developer + Devรฉloper + + + Tuning Level + Tuning Leveโ…ผ + + + Choose your tuning level. Lower levels keep it simple; higher levels unlock more toggles for finer control. + +Minimal - Ideal for those who prefer simplicity or ease of use +Standard - Recommended for most users for a balanced experience +Advanced - Fine-tuning for experienced users +Developer - Highly customizable settings for seasoned enthusiasts + Choose thy tuning degree. Lower degrees keep it simple; higher degrees unbar more toggles for finer command. + +Minimal - Fit for those who prize simplicity or ease of use +Standard - Commended for most users for a balanced experience +Advanced - Fine-tuning for seasoned hands +Developer - Most customizable settings for well-tried enthusiasts + + + WARNING: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do! + WARNING: These settings be perilous and may full sore transform how openpilot doth drive. Change them only if thou fully comprehendโ€™st their doings! + + + All toggle descriptions are currently expanded. You can tap a toggle's name to open or close its description at any time! + All toggle descriptions do now lie expanded. Thou mayโ€™st tap a toggleโ€™s name to ope or close its description at any hour! + + + + FrogPilotSoundsPanel + + Alert Volume Controller + Alert Volume Controller + + + <b>Set how loud each type of openpilot alert is</b> to keep routine prompts from becoming distracting. + <b>Set how loud each sort of openpilot alert be</b>, that the common prompts become not distracting. + + + Disengage Volume + Disengage Volume, prithee + + + <b>Set the volume for alerts when openpilot disengages.</b><br><br>Examples include: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". + <b>Set the clamour for alarms when openpilot doth disengage.</b><br><br>Examples include: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". + + + Engage Volume + Engage Thy Volume + + + <b>Set the volume for the chime when openpilot engages</b>, such as after pressing the "RESUME" or "SET" steering wheel buttons. + <b>Set the chimeโ€™s volume when openpilot doth engage</b>, as after thou pressest the "RESUME" or "SET" steering wheel buttons. + + + Prompt Volume + Prompted Volume + + + <b>Set the volume for prompts that need attention.</b><br><br>Examples include: "Car Detected in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". + <b>Set the volume for prompts that crave thine attention.</b><br><br>Examples include: "Car Detected in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". + + + Prompt Distracted Volume + Prompt Distracted Volume + + + <b>Set the volume for prompts when openpilot detects driver distraction or unresponsiveness.</b><br><br>Examples include: "Pay Attention", "Touch Steering Wheel". + <b>Set the volume for prompts when openpilot doth espy driver distraction or unresponsiveness.</b><br><br>Examples include: "Pay Attention", "Touch Steering Wheel". + + + Refuse Volume + Refuse Volume + + + <b>Set the volume for alerts when openpilot refuses to engage.</b><br><br>Examples include: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". + <b>Set the clamour for alerts when openpilot doth refuse to engage.</b><br><br>Examples include: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". + + + Warning Soft Volume + Warning: Soft Volume + + + <b>Set the volume for softer warnings about potential risks.</b><br><br>Examples include: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". + <b>Set the volume for gentler cautions of potential perils.</b><br><br>Examples include: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". + + + Warning Immediate Volume + Warning: Volume Most Immediate + + + <b>Set the volume for the loudest warnings that require urgent attention.</b><br><br>Examples include: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". + <b>Set the volume for the most clamorous warnings that demand swift heed.</b><br><br>Examples include: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". + + + FrogPilot Alerts + FrogPilot Heralds + + + <b>Optional FrogPilot alerts</b> that highlight driving events in a more noticeable way. + <b>Optional FrogPilot alerts</b> that do make driving events stand forth more notably. + + + Goat Scream + Bleat of the Goat + + + <b>Play the infamous "Goat Scream" when the steering controller reaches its limit.</b> Based on the "Turn Exceeds Steering Limit" event. + <b>Let the infamous โ€œGoat Screamโ€ sound when the steering controller hath reachโ€™d its limit.</b> Based on the โ€œTurn Exceeds Steering Limitโ€ event. + + + Green Light Alert + Green Light Proclamation + + + <b>Play an alert when the model predicts a red light has turned green.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights. This alert is based on end-to-end model predictions from camera input and may trigger even when the light has not changed.</i> + <b>Sound an alarum when the model divineth a red light hath turnโ€™d green.</b><br><br><i><b>Disclaimer</b>: openpilot doth not expressly discern traffic lights. This alarum is founded upon end-to-end model prognostications from camera input and may be stirrโ€™d even when the light hath not changโ€™d.</i> + + + Lead Departing Alert + Alert of the Lead Departing + + + <b>Play an alert when the lead vehicle departs from a stop.</b> + <b>Sound an alarm when the lead carriage doth depart from a halt.</b> + + + Loud "Car Detected in Blindspot" Alert + Loud โ€œCar Detected in Blindspotโ€ Alarum + + + <b>Play a louder alert if a vehicle is in the blind spot when attempting to change lanes.</b> Based on the "Car Detected in Blindspot" event. + <b>Sound a louder alarum if a chariot dwelleth in the blind spot whilst thou attemptโ€™st to change lanes.</b> Based on the "Car Detected in Blindspot" event. + + + Speed Limit Changed Alert + Alert of Alterโ€™d Speed Limit + + + <b>Play an alert when the posted speed limit changes.</b> + <b>Sound an alarm when the posted speed limit doth change.</b> + + + Muted + Silenced + + + Auto + Auto + + + Test + Trial + + + + FrogPilotThemesPanel + + Custom Themes + Custom Theams + + + <b>The overall look and feel of openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>The general visage and humours of openpilot.</b> Employ the "Theme Maker" within "The Pond" to fashion and share thine own themes! + + + Color Scheme + Colour Scheme + + + <b>The color scheme used throughout openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>The hueful livery employโ€™d throughout openpilot.</b> Use the "Theme Maker" in "The Pond" to fashion and share thine own themes! + + + Distance Button + Button of Distance + + + <b>The distance button icons shown on the driving screen.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>The distance button icons displayโ€™d upon the driving screen.</b> Employ the "Theme Maker" in "The Pond" to fashion and share thine own themes! + + + Icon Pack + Icon Pack + + + <b>The icon style used across openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>The icon style employโ€™d throughout openpilot.</b> Betake thee to the "Theme Maker" in "The Pond" to fashion and share thine own themes! + + + Sound Pack + Sound Pack + + + <b>The sound pack used by openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>The sound pack employโ€™d by openpilot.</b> Use the "Theme Maker" in "The Pond" to fashion and share thine own themes! + + + Steering Wheel + Steering Wheel, thou noble helm + + + <b>The steering-wheel icon</b> shown at the top-right of the driving screen. Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>The steering-wheel icon</b> doth appear at the top-right of the driving screen. Use the "Theme Maker" in "The Pond" to fashion and share thine own themes! + + + Turn Signal + Turn Signal + + + <b>Themed turn-signal animations.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Themed turn-signal animations.</b> Use the "Theme Maker" in "The Pond" to fashion and bequeath thine own themes! + + + Download Status + Status of Download + + + Holiday Themes + Holiday Themes + + + <b>Themes based on U.S. holidays.</b> Minor holidays last one day; major holidays (Christmas, Easter, Halloween) run for a full week. + <b>Pageants drawn from U.S. holy-days.</b> Lesser feasts endure but a day; the greater (Christmas, Easter, Halloween) do hold a full sennight. + + + Rainbow Path + Prismatic Path + + + <b>Color the driving path like a Mario Kartโ€“style "Rainbow Road".</b> + <b>Dye the driving path like unto a Mario Kartโ€“style "Rainbow Road".</b> + + + Random Events + Haphazard Happenings + + + <b>Occasional on-screen effects triggered by driving conditions.</b> These are purely a visual and don't impact how openpilot drives! + <b>Occasional shows upon the screen, stirrโ€™d by the carriage of the road.</b> These be mere spectacle and touch not how openpilot doth drive! + + + Random Themes + Whims of Theme + + + <b>Pick a random theme between each drive</b> from the themes you have downloaded. Great for variety without changing settings while driving. + <b>Choose a random theme betwixt each drive</b> from the themes thou hast downloaded. Most fit for variety without changing settings whilst driving. + + + Startup Alert + Startup Herald + + + <b>Customize the "Startup Alert" message</b> shown at the start of each drive. + <b>Customize the "Startup Alert" message</b> displayed at the outset of each journey. + + + DELETE + DELETE + + + DOWNLOAD + DOWNLOAD + + + SELECT + SELECT + + + Select a color scheme to delete + Choose a hue scheme to be deleted + + + Delete the "%1" color scheme? + Dost thou wish to delete the "%1" colour scheme? + + + Delete + Delete + + + Select a color scheme to download + Select a hue scheme to download + + + Select a color scheme + Pray, select a hue scheme + + + Select a distance icon pack to delete + Choose a distance icon pack to delete + + + Delete the "%1" distance icon pack? + Dost thou wish to delete the โ€œ%1โ€ distance icon pack? + + + Select a distance icon pack to download + Select a distance icon pack to download forthwith + + + Select a distance icon pack + Choose a distance icon pack, prithee + + + Select an icon pack to delete + Select an icon pack to be deletโ€™d + + + Delete the "%1" icon pack? + Shall I delete the โ€œ%1โ€ icon pack? + + + Select an icon pack to download + Select an icon pack to download, prithee + + + Select an icon pack + Select an icon pack + + + + + Select a signal animation to delete + Choose a signal animation to be stricken from existence + + + Delete the "%1" signal animation? + Shall I delete the "%1" signal animation? + + + Select a signal animation to download + Select a signal animation to downloadeth + + + Select a signal animation + Select a signal animation, prithee + + + Select a sound pack to delete + Choose a sound pack to be deletโ€™d + + + Delete the "%1" sound pack? + Dost thou wish to delete the โ€œ%1โ€ sound pack? + + + Select a sound pack to download + Select a sound pack to download, prithee + + + Select a sound pack + Select a sounden pack + + + Select a steering wheel to delete + Pray, choose a steering wheel to delete + + + Delete the "%1" steering wheel? + Dost thou wish to delete the โ€œ%1โ€ steering wheel? + + + Select a steering wheel to download + Select a helm to download + + + Select a steering wheel + Choose a steering wheel, prithee + + + STOCK + STOCK + + + FROGPILOT + FROGPILOT + + + CUSTOM + CUSTOM + + + CLEAR + CLEAR + + + Enter the text for the top half + Enter the text for the upper half + + + Characters: 0/%1 + Characters: 0/%1 + + + Enter the text for the bottom half + Enter the script for the nether half + + + Are you sure you want to completely reset your startup message? + Art thou certain thou wouldst wholly reset thy startup message? + + + "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! + โ€œRandom Themesโ€ worketh only with themes downloadโ€™d; therefore see thou download the themes thou wouldst have it use! + + + CANCEL + CANCEL + + + + FrogPilotUtilitiesPanel + + Debug Mode + Mode of Debug + + + <b>Use FrogPilot's developer metrics on your next drive</b> to diagnose issues and improve bug reports. + <b>Employ FrogPilotโ€™s developer metrics upon thy next drive</b> to diagnose maladies and better thy bug reports. + + + Flash Panda + Flash Panda + + + FLASH + FLASH + + + <b>Reinstall the Panda firmware</b> to fix connection or reliability issues. + <b>Reinstall the Panda firmware</b> to mend connection or reliability troubles. + + + Are you sure you want to flash the Panda firmware? + Art thou certain thou wouldst flash the Panda firmware? + + + Flash + Flashen + + + Flashing... + Flashingโ€ฆ + + + Flashed! + Flashโ€™d! + + + Rebooting... + Rebooting anon... + + + Force Drive State + Command the Carriageโ€™s State + + + <b>Manually set openpilot to be offroad or onroad.</b> + <b>Manually bid openpilot be offroad or onroad.</b> + + + OFFROAD + OFF ROAD + + + ONROAD + ONROAD + + + OFF + OFF + + + Report a Bug or an Issue + Report a Bug or an Ailment + + + REPORT + REPORT + + + <b>Send a bug report</b> so we can help fix the problem! + <b>Dispatch a bug report</b>, that we may mend the mischief! + + + Please connect to the internet before sending a report! + Prithee, connect thee to the internet ere thou dost send a report! + + + I saw an alert that said "openpilot crashed" + I espied an alert that proclaimโ€™d, โ€œopenpilot hath crashโ€™d.โ€ + + + Acceleration feels harsh or jerky + Acceleration doth feel harsh or full of jerks + + + An alert was unclear and I didn't know what it meant + An alarm was unclear, and I wist not what it did portend. + + + Braking is too sudden or uncomfortable + Braking doth come too sudden or uncomely + + + I'm not sure if this is normal or a bug: + I know not if this be custom or a mischiefโ€™d bug: + + + My screen froze or is stuck loading something + Mine screen is frozen, or else is stuck iโ€™ thโ€™ loading of some thing. + + + My steering wheel buttons aren't working + Mine helm-buttoned wheel worketh not + + + openpilot disengages when I don't expect it + openpilot doth disengage when I expect it not + + + openpilot doesn't react to stopped vehicles ahead + openpilot doth not respond to halted chariots ahead + + + openpilot doesn't resume from a stop + openpilot doth not resume from a stop + + + openpilot feels sluggish or slow to respond + openpilot doth feel sluggish or slow to respond + + + Steering feels twitchy or unnatural + The steering doth feel skittish or unnatโ€™ral + + + The car doesn't follow curves well + The carriage doth not keep the bends well + + + The car isn't staying centered in its lane + The carriage keepeth not to the very midst oโ€™ its lane + + + Something else (please describe) + Some other matter (prithee describe) + + + What's going on? + What transpires? + + + Please describe what's happening + Prithee, relate what doth transpire + + + Send Report + Dispatch Report + + + What's your Discord username? + What be thy Discord appellation? + + + Report Sent! Thanks for letting us know! + Report delivered! Our thanks for apprising us! + + + Reset Toggles to Default + Reset the Toggles to their Default + + + RESET + RESET + + + <b>Reset all toggles to their default values.</b> + <b>Reset all toggles to their default values, prithee.</b> + + + Are you sure you want to reset all toggles to their default values? + Art thou certain thou wouldst reset all toggles to their default values? + + + Reset + Reset anon + + + Resetting... + Resetting anon... + + + Reset! + Reset! + + + Reset Toggles to Stock openpilot + Reset Toggles to Stock openpilot + + + + + <b>Reset all toggles to match stock openpilot.</b> + <b>Reset all toggles to accord with stock openpilot.</b> + + + Are you sure you want to reset all toggles to match stock openpilot? + Art thou certain thou wouldst reset all toggles to match stock openpilot? + + + + FrogPilotVehiclesPanel + + Car Make + Chariot Make + + + SELECT + SELECT + + + Choose your car make + Choose thy carriageโ€™s make + + + Car Model + Chariot Model + + + Choose your car model + Choose thy carriageโ€™s model + + + Disable Automatic Fingerprint Detection + Disable Automatic Fingerprint Detection, prithee + + + <b>Force the selected fingerprint</b> and prevent it from ever changing. + <b>Compel the chosen fingerprint</b> and forbid it from eโ€™er changing. + + + Disable openpilot Longitudinal Control + Disable openpilot Longitudinal Governance + + + <b>Disable openpilot longitudinal</b> and use the car's stock ACC instead. + <b>Disable openpilot longitudinal</b> and employ the carriageโ€™s own ACC in its stead. + + + Are you sure you want to completely disable openpilot longitudinal control? + Art thou certain thou wouldst wholly disable openpilot longitudinal control? + + + General Motors Settings + General Motors Settings, fair and true + + + <b>FrogPilot features for General Motors vehicles.</b> + <b>FrogPilot features for chariots of General Motors.</b> + + + FrogsGoMoo's Experimental Tune + FrogsGoMooโ€™s Experimental Tune + + + <b>Experimental GM tune by FrogsGoMoo</b> that attempts to smoothen stopping and takeoff control. Use at your own risk! + <b>An experimental GM tune by FrogsGoMoo</b> that doth strive to smoothen halt and takeoff control. Use at thine own peril! + + + Smooth Pedal Response on Hills + Smooth Pedal Reply upon Hills + + + <b>Smoothen acceleration and braking</b> when driving downhill/uphill. + <b>Soften acceleration and braking</b> whilst thou drivest downhill or uphill. + + + Stop-and-Go Hack + Stop-and-Go Stratagem + + + <b>Force stop-and-go</b> on the 2017 Chevy Volt. + <b>Compel stop-and-go</b> upon the 2017 Chevy Volt. + + + Hyundai/Kia/Genesis Settings + Hyundai/Kia/Genesis Settings + + + <b>FrogPilot features for Genesis, Hyundai, and Kia vehicles.</b> + <b>FrogPilot features for Genesis, Hyundai, and Kia chariots.</b> + + + comma's New Longitudinal API + commaโ€™s New Longitudinal API + + + <b>comma's new gas and brake control system</b> that improves acceleration and braking but may cause issues on some Genesis/Hyundai/Kia vehicles. + <b>commaโ€™s new governance of gas and brake</b> that doth better thy acceleration and braking, yet may beget troubles on some Genesis/Hyundai/Kia chariots. + + + "Taco Bell Run" Torque Hack + โ€œTaco Bell Runโ€ Torque Hack + + + <b>The steering torque hack from comma's 2022 "Taco Bell Run".</b> Designed to increase steering torque at low speeds for left and right turns. + <b>The steering torque hack from commaโ€™s 2022 โ€œTaco Bell Runโ€.</b> Devised to heighten steering torque at low speeds for left and right turns. + + + Toyota/Lexus Settings + Toyota/Lexus Settings + + + <b>FrogPilot features for Lexus and Toyota vehicles.</b> + <b>FrogPilot features for Lexus and Toyota carriages.</b> + + + Automatically Lock/Unlock Doors + Automatically Lock/Unlock Doors + + + <b>Automatically lock/unlock doors</b> when shifting in and out of drive. + <b>Automatically lock/unlock doors</b> when thou shiftโ€™st into and out of drive. + + + Dashboard Speed Offset + Dashboard Speed Offset + + + <b>The speed offset openpilot uses to match the speed on the dashboard display.</b> + <b>The speed offset which openpilot useth to match the speed upon the dashboard display.</b> + + + FrogsGoMoo's Personal Tweaks + FrogsGoMooโ€™s Private Embellishments + + + <b>Personal tweaks by FrogsGoMoo for quicker acceleration and smoother braking.</b> + <b>Private embroidโ€™ments by FrogsGoMoo for swifter acceleration and gentler braking.</b> + + + Lock Doors On Ignition Off After + Bar The Gates When Ignition Be Turned Off Thereafter + + + <b>Automatically lock the doors on ignition off</b> when no one is detected in the front seats. + <b>When ignition is turnโ€™d off, lock the doors anon</b> if none be espied upon the fore seats. + + + <b>Force stop-and-go</b> on Lexus/Toyota vehicles without stock stop-and-go functionality. + <b>Enforce stop-and-go</b> upon Lexus/Toyota chariots lacking the stock stop-and-go function. + + + MANAGE + GOVERN + + + Lock + Lock + + + Unlock + Unbar + + + Never + Neโ€™er + + + seconds + seconds + + + None + None + + + Vehicle Info + Carriage Lore + + + <b>Information about your vehicle in regards to openpilot support and functionality.</b> + <b>Wisdom touching thy chariot concerning openpilotโ€™s support and faculty.</b> + + + <b>Detected 3rd party hardware.</b> + <b>Espied a third-party engine of craft.</b> + + + openpilot Longitudinal Support + openpilot Longitudinal Succor + + + <b>Can openpilot control the vehicle's acceleration and braking?</b> + <b>Can openpilot command the carriageโ€™s quickening and its staying of the wheel?</b> + + + <b>Does your vehicle support the "comma pedal"?</b> + <b>Doth thy chariot support the "comma pedal"?</b> + + + Radar Support + Radar Succor + + + <b>Does openpilot use the vehicle's radar data</b> alongside the device's camera for tracking lead vehicles? + <b>Doth openpilot employ the vehicleโ€™s radar data</b> alongside the deviceโ€™s camera to track lead chariots?</b + + + SDSU Support + SDSU Succor + + + <b>Does your vehicle support "SDSUs"?</b> + <b>Doth thy vehicle lend support to "SDSUs"?</b> + + + Stop-and-Go Support + Stop-and-Go Succor + + + <b>Does your vehicle support stop-and-go driving?</b> + <b>Doth thy chariot brook stop-and-go driving?</b> + + + VIEW + VIEW + + + Yes + Yea + + + No + Nay + + + 3rd Party Hardware Detected + Third-Party Hardware Espied + + + Blind Spot Support + Blind Spot Succor + + + <b>Does openpilot use the vehicle's blind spot data?</b> + <b>Doth openpilot employ the chariotโ€™s blind spot tidings?</b> + + + comma Pedal Support + comma Pedal Support + + + + FrogPilotVisualsPanel + + Advanced UI Controls + Arcane UI Commandments + + + <b>Advanced visual changes</b> to fine-tune how the driving screen looks. + <b>Advanced visual changes</b> to fine-tune how the driving screen doth appear. + + + Hide Current Speed + Conceal Present Speed + + + <b>Hide the current speed</b> from the driving screen. + <b>Conceal the current speed</b> from the driving screen. + + + Hide Lead Marker + Conceal Lead Marker + + + <b>Hide the lead-vehicle marker</b> from the driving screen. + <b>Conceal the lead-vehicle token</b> from the driving screen. + + + Hide Map Settings Button + Conceal the Map Settings Button + + + <b>Hide the map settings button or map</b> from the driving screen. + <b>Conceal the map settings button or the map</b> from the driving screen. + + + Hide Max Speed + Conceal Max Speed + + + <b>Hide the max speed</b> from the driving screen. + <b>Conceal the max speed</b> from the driving screen. + + + Hide Non-Critical Alerts + Conceal Non-Critical Alerts + + + <b>Hide non-critical alerts</b> from the driving screen. + <b>Veil non-critical alerts</b> from the driving screen. + + + Hide Speed Limits + Conceal Speed Limits + + + <b>Hide posted speed limits</b> from the driving screen. + <b>Veil posted speed limits</b> upon the driving screen. + + + Use Wheel Speed + Employ the Wheelโ€™s Speed + + + <b>Use the vehicle's wheel speed</b> instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives! + <b>Employ the carriageโ€™s wheel-speed</b> in lieu of the clusterโ€™s speed. This be a matter of visage alone and toucheth not how openpilot doth drive! + + + Developer UI + Developer UI + + + <b>Detailed information about openpilot's internal operations.</b> + <b>Full particulars of openpilotโ€™s inward workings.</b> + + + Adjacent Path Metrics + Metrics of Paths Adjacent + + + <b>Show the width of the adjacent lanes.</b> + <b>Display the breadth of the lanes adjoining.</b> + + + Developer Metrics + Artisan Metrics + + + <b>Performance data, sensor readings, and system metrics</b> for debugging and optimizing openpilot. + <b>Performance lore, sensor reckonings, and system measures</b> for the debugging and optimizing of openpilot. + + + Border Metrics + Border Metrics + + + <b>Show statuses along the border of the driving screen.</b><br><br><b>Blind Spot</b>: The border turns red when a vehicle is in a blind spot<br><b>Steering Torque</b>: The border goes from green to red according to how much steering torque is being used<br><b>Turn Signal</b>: The border flashes yellow when a turn signal is on + <b>Display statuses along the verge of the driving screen.</b><br><br><b>Blind Spot</b>: The verge turneth red when a chariot lieth in a blind spot<br><b>Steering Torque</b>: The verge shifteth from green to red according to how much steering torque is employโ€™d<br><b>Turn Signal</b>: The verge doth flash yellow when a turn signal is on + + + Lead Info + Lead Tidings + + + <b>Show each tracked vehicle's distance and speed</b> below its marker. + <b>Display each tracked vehicleโ€™s distance and speed</b> beneath its mark. + + + FPS Display + Display of FPS + + + <b>Show the frames per second (FPS)</b> at the bottom of the driving screen. + <b>Display the frames per second (FPS)</b> at the nether edge of the driving screen. + + + Numerical Temperature Gauge + Numerical Gauge of Temperature + + + <b>Show a numerical temperature in the sidebar</b> instead of the status labels. + <b>Display a numerical temperance in the sidebar</b> in lieu of the status labels. + + + Sidebar Metrics + Sidebar Metrics + + + <b>Display system information</b> (CPU, GPU, RAM usage, IP address, device storage) in the sidebar. + <b>Display system information</b> (CPU, GPU, RAM usage, IP address, device storage) within the sidebar. + + + Use International System of Units + Use the International System of Units + + + <b>Display measurements using the "International System of Units" (SI)</b> standard. + <b>Exhibit measurements by the โ€œInternational System of Unitsโ€ (SI)</b> standard.</b> + + + Developer Sidebar + Developer Sidebar + + + <b>Display debugging info and metrics</b> in a dedicated sidebar on the right side of the screen. + <b>Unveil debugging lore and metrics</b> within a devoted sidebar upon the screenโ€™s right side. + + + Metric #1 + Metric #1 + + + <b>Select the metric shown in the first "Developer Sidebar" widget.</b> + <b>Choose the metric displayโ€™d within the first "Developer Sidebar" widget.</b> + + + Metric #2 + Metric #2 + + + <b>Select the metric shown in the second "Developer Sidebar" widget.</b> + <b>Choose the metric displayโ€™d in the second โ€œDeveloper Sidebarโ€ widget.</b> + + + Metric #3 + Metric #3 + + + <b>Select the metric shown in the third "Developer Sidebar" widget.</b> + <b>Pray, choose the metric displayโ€™d in the third "Developer Sidebar" widget.</b> + + + Metric #4 + Metric #4 + + + <b>Select the metric shown in the fourth "Developer Sidebar" widget.</b> + <b>Choose the metric displayโ€™d in the fourth โ€œDeveloper Sidebarโ€ widget.</b> + + + Metric #5 + Metric #5 + + + <b>Select the metric shown in the fifth "Developer Sidebar" widget.</b> + <b>Choose the measure displayed within the fifth "Developer Sidebar" widget.</b> + + + Metric #6 + Metric #6 + + + <b>Select the metric shown in the sixth "Developer Sidebar" widget.</b> + <b>Pray, choose the metric displayโ€™d in the sixth โ€œDeveloper Sidebarโ€ widget.</b> + + + Metric #7 + Metric #7 + + + <b>Select the metric shown in the seventh "Developer Sidebar" widget.</b> + <b>Choose the metric displayโ€™d within the seventh โ€œDeveloper Sidebarโ€ widget.</b> + + + Developer Widgets + Artisan Widgets + + + <b>Overlays for debugging visuals, internal states, and model predictions</b> on the driving screen. + <b>Overlays for debugging visuals, internal states, and model predictions</b> upon the driving screen. + + + Adjacent Leads Tracking + Tracking of Adjacent Leads + + + <b>Display adjacent leads detected by the car's radar</b> to the left and right of the current driving path. + <b>Show adjacent leads espied by the carโ€™s radar</b> to the left and right of the present driving path. + + + Model Stopping Point + Modelโ€™s Stopping Point + + + <b>Show a stop-sign marker where the model intends to stop.</b> + <b>Display a stop-sign token where the model doth intend to halt.</b> + + + Radar Tracks + Radar Traces + + + <b>Display all radar points</b> produced by the car's radar. + <b>Reveal all radar points</b> begotten by the car's radar. + + + Driving Screen Widgets + Driving Screen Trinkets + + + <b>Custom FrogPilot widgets</b> for the driving screen. + <b>Bespoke FrogPilot widgets</b> for the driving screen. + + + Acceleration Path + Path of Acceleration + + + <b>Color the driving path by planned acceleration and braking.</b> + <b>Hue the driving path by the designโ€™d spurring and braking.</b> + + + Adjacent Lanes + Neighboring Lanes + + + <b>Show the driving paths for the left and right lanes.</b> + <b>Display the coursing ways for the left and right lanes.</b> + + + Blind Spot Path + Blind Spot Pathway + + + <b>Show a red path when a vehicle is in that lane's blind spot.</b> + <b>Display a crimson path when a carriage doth dwell within that laneโ€™s blind spot.</b> + + + Compass + Compass + + + <b>Show the current driving direction</b> with a simple on-screen compass. + <b>Display the present course of thy driving</b> with a simple compass upon the screen. + + + Driving Personality Button + Button for Driving Humour and Disposition + + + <b>Control and view the current driving personality</b> via a driving screen widget. + <b>Command and behold the present driving humours</b> by means of a driving screen widget. + + + Gas / Brake Pedal Indicators + Gas / Brake Pedal Heralds + + + <b>On-screen gas and brake indicators.</b><br><br><b>Dynamic</b>: Opacity changes according to how much openpilot is accelerating or braking<br><b>Static</b>: Full when active, dim when not + <b>On-screen tokens of gas and brake.</b><br><br><b>Dynamic</b>: Opacity shifteth according to how much openpilot doth accelerate or brake<br><b>Static</b>: Full when in act, dimmโ€™d when not + + + Rotating Steering Wheel + Turning of the Steering Wheel + + + <b>Rotate the driving screen wheel</b> with the physical steering wheel. + <b>Twist the driving screen wheel</b> with the mortal steering wheel. + + + Model UI + Model UI + + + <b>Model visualizations</b> for the driving path, lane lines, path edges, and road edges. + <b>Model pageants</b> for the driving path, lane lines, path edges, and road edges. + + + Dynamic Path Width + Protean Path Width + + + <b>Change the path width based on engagement.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% + <b>Alter the pathโ€™s breadth by thy engagement.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% + + + Lane Lines Width + Width of Lane Lines + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 4 inches. + <b>Set the lane-line thickness.</b><br><br>Default doth match the MUTCD lane-line width standard of 4 inches. + + + Path Edges Width + Path Edgesโ€™ Width + + + <b>Set the driving-path edge width</b> that represents different driving modes and statuses.<br><br>Default is 20% of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + <b>Set the driving-path edge width</b> that doth betoken diverse driving modes and states.<br><br>Default is 20% of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + + + Path Width + Path Width + + + <b>Set the driving-path width.</b><br><br>Default (6.1 feet) matches the width of a 2019 Lexus ES 350. + <b>Set the width of the driving path.</b><br><br>Default (6.1 feet) doth match the breadth of a 2019 Lexus ES 350. + + + Road Edges Width + Width of the Roadโ€™s Edges + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 4 inches. + <b>Set the road-edge thickness.</b><br><br>The default accordeth with half the MUTCD lane-line width standard of 4 inches. + + + "Unlimited" Road UI + โ€œUnlimitedโ€ Road UI + + + <b>Extend the length of the driving path, lane lines, and road edges</b> for as far as the model can see. + <b>Prolong the length of the driving path, lane lines, and road edges</b> eโ€™en so far as the model may espy. + + + Navigation Widgets + Navigation Widgets โ†’ Ornaments of Navigation + + + <b>Map style, speed limits, and other navigation widgets.</b> + <b>Mapโ€™s fashion, speed limits, and other widgets of navigation.</b> + + + Larger Map Display + Greater Map Display + + + <b>Increase the map size</b> for easier navigation readings. + <b>Enlarge the mapโ€™s measure</b> for easier perusal of navigation. + + + Map Style + Mappe Style + + + <b>Select the map style</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai style<br><b>FrogPilot</b>: Official FrogPilot map style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>Mike's Personalized Style</b>: Customized hybrid satellite view + <b>Choose thy map visage</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: The default guise of comma.ai<br><b>FrogPilot</b>: The sanctioned FrogPilot cartographic fashion<br><b>Mapbox Streets</b>: A standard view fixโ€™d on streets<br><b>Mapbox Outdoors</b>: Doth exalt the wilds and terrainโ€™s features<br><b>Mapbox Light</b>: A minimalist theme, bright as day<br><b>Mapbox Dark</b>: A minimalist theme, cloaked in night<br><b>Mapbox Navigation Day</b>: Wrought for navigation in daylight hours<br><b>Mapbox Navigation Night</b>: Wrought for navigation in the hush of night<br><b>Mapbox Satellite</b>: Naught but satellite imagery<br><b>Mapbox Satellite Streets</b>: A hybrid of satellite scenes with street labels<br><b>Mapbox Traffic Night</b>: A dusky theme that doth stress trafficโ€™s state<br><b>Mike's Personalized Style</b>: A bespoke hybrid of satellite view + + + Road Name + Road Name + + + <b>Display the road name at the bottom of the driving screen</b> using data from "OpenStreetMap (OSM)". + <b>Show the roadโ€™s name at the nether part of the driving screen</b> using data from "OpenStreetMap (OSM)". + + + Show Speed Limits + Display the Limits of Speed + + + <b>Show speed limits</b> in the top-left corner of the driving screen. Uses data from the car's dashboard (if supported) and "OpenStreetMap (OSM)". + <b>Display speed limits</b> iโ€™ the top-left corner oโ€™ the driving screen. Draweth upon data from the carโ€™s dashboard (an it be supported) and "OpenStreetMap (OSM)". + + + Show Speed Limits from Mapbox + Display Speed Limits from Mapbox + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>Employ Mapbox speed-limit lore when no other source doth present itself.</b> + + + Use Vienna-Style Speed Signs + Employ Vienna-Style Speed Signs + + + <b>Show Vienna-style (EU) speed-limit signs</b> instead of MUTCD (US). + <b>Display Vienna-style (EU) speed-limit tokens</b> in lieu of MUTCD (US). + + + Quality of Life + Quality of Life + + + <b>Miscellaneous visual changes</b> to fine-tune how the driving screen looks. + <b>Divers ornaments of visage</b> to fine-tune how the driving screen appeareth. + + + Camera View + Camera Prospect + + + <b>Select the active camera view.</b> This is purely a visual change and doesn't impact how openpilot drives! + <b>Choose the camera view now in use.</b> โ€™Tis but a change for thine eyes, and it toucheth not how openpilot doth drive! + + + Show Driver Camera When In Reverse + Reveal the Driver Camera When Thou Art in Reverse + + + <b>Show the driver camera feed</b> when the vehicle is in reverse. + <b>Reveal the driverโ€™s camera feed</b> when the chariot is set in reverse. + + + Stopped Timer + Timer Halted + + + <b>Show a timer when stopped</b> in place of the current speed to indicate how long the vehicle has been stopped. + <b>Display a timer whilst halted</b> instead of the present speed, to signify how long the chariot hath stood. + + + Hide Map + Conceal the Map + + + Blind Spot + Blind Spot + + + Steering Torque + Steering Torque + + + Turn Signal + Turne Signal + + + Fahrenheit + Fahrenheit + + + CPU + CPU + + + GPU + GPU + + + IP + IP + + + RAM + RAM + + + SSD Left + SSD Portside + + + SSD Used + SSD Employed + + + None + None + + + Acceleration: Current + Acceleration: Eโ€™en Now + + + Acceleration: Max + Acceleration: Most Potent + + + Auto Tune: Actuator Delay + Auto Tune: Actuator Delayeth + + + Auto Tune: Friction + Auto Tune: Friction + + + + + Auto Tune: Lateral Acceleration + Auto Tune: Lateral Acceleration, prithee + + + Auto Tune: Steer Ratio + Auto Tune: Steer Ratio + + + Auto Tune: Stiffness Factor + Auto Tune: Stiffness Factor, prithee + + + Engagement %: Lateral + Engagement %: Lateral + + + Engagement %: Longitudinal + Engagement %: Longitudinal + + + Lateral Control: Steering Angle + Lateral Command: Steering Angle + + + Lateral Control: Torque % Used + Lateral Command: Torque % Employed + + + Longitudinal Control: Actuator Acceleration Output + Longitudinal Control: Actuator Acceleration Issueth Output + + + Longitudinal MPC Jerk: Acceleration + Longitudinal MPC Jerk: Acceleration, iโ€™ faith + + + Longitudinal MPC Jerk: Danger Zone + Longitudinal MPC Jerk: Zone of Peril + + + Longitudinal MPC Jerk: Speed Control + Longitudinal MPC Jerk: Command of Speed + + + SELECT + SELECT + + + Select a metric to display + Select a metric to display, prithee + + + Show Distance + Display Distance + + + Dynamic + Dynamic + + + Static + Stative + + + inches + inches + + + Off + Off + + + feet + feet + + + Full Map + Full Map, in sooth + + + Stock openpilot + Stock openpilot + + + FrogPilot + FrogPilot + + + Mapbox Streets + Mapbox Streets + + + Mapbox Outdoors + Mapbox Out-of-Doors + + + Mapbox Light + Mapbox Light + + + Mapbox Dark + Mapbox Dark + + + Mapbox Navigation Day + Mapbox Navigation Daytime + + + Mapbox Navigation Night + Mapbox Navigation Nighttide + + + Mapbox Satellite + Mapbox Satellite + + + Mapbox Satellite Streets + Mapboxโ€™ Satellite Streets + + + Mapbox Traffic Night + Mapbox Traffic by Night + + + Mike's Personalized Style + Mikeโ€™s Personalized Style + + + Select a map style + Choose a style of map, prithee + + + Auto + Auto + + + Driver + Driver + + + Standard + Standard + + + Wide + Wide + + + foot + foot + + + inch + inch + + + meter + meter + + + meters + meters + + + centimeter + centimetre + + + centimeters + centimetres + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 10 centimeters. + <b>Set the lane-line thickness.</b><br><br>Default doth match the MUTCD lane-line width standard of 10 centimeters. + + + <b>Set the driving-path width.</b><br><br>Default (1.9 meters) matches the width of a 2019 Lexus ES 350. + <b>Set the breadth of the driving path.</b><br><br>The Default (1.9 meters) doth match the width of a 2019 Lexus ES 350. + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 10 centimeters. + <b>Set the road-edge thickness.</b><br><br>The default doth match half the MUTCD lane-line width standard of 10 centimeters. + + + + FrogPilotWheelPanel + + Distance Button + Button of Distance + + + <b>Action performed when the "Distance" button is pressed.</b> + <b>Deed wrought when the "Distance" button is pressโ€™d.</b> + + + Distance Button (Long Press) + Distance Button (Long Press) + + + <b>Action performed when the "Distance" button is pressed for more than 0.5 seconds.</b> + <b>Deed wrought when the "Distance" button is held for more than 0.5 seconds.</b> + + + Distance Button (Very Long Press) + Distance Button (A Very Long Press) + + + <b>Action performed when the "Distance" button is pressed for more than 2.5 seconds.</b> + <b>Deed enacted when the โ€œDistanceโ€ button is held down for more than 2.5 seconds.</b> + + + LKAS Button + LKAS Button + + + <b>Action performed when the "LKAS" button is pressed.</b> + <b>Deed occasionโ€™d when the โ€œLKASโ€ button is pressโ€™d.</b> + + + No Action + No Deed + + + Pause Steering + Stay thy Steering + + + Change "Personality Profile" + Change "Personality Profile" + + + Force openpilot to Coast + Compel openpilot to Coast + + + Pause Acceleration/Braking + Stay thy Acceleration/Braking + + + Toggle "Experimental Mode" On/Off + Toggle โ€œExperimental Modeโ€ On/Off + + + Toggle "Traffic Mode" On/Off + Toggle โ€œTraffic Modeโ€ On/Off + + + SELECT + SELECT + + + Select a function to assign to this button + Select a function to bestow upon this button + + + + InputDialog + + Cancel + Cancel + + + Need at least %n character(s)! + + Need at least %n character(s), prithee! + Need at least %n character(s), prithee! + + + + Characters: %1/%2 + Characters: %1/%2 + + + + Installer + + Installing... + Eโ€™en now installingโ€ฆ + + + + MapETA + + eta + ETA + + + min + min + + + hr + hr + + + + MapSettings + + NAVIGATION + NAVIGATION + + + Manage at %1 + Govern at %1 + + + + MapWindow + + Map Loading + Map Doth Load + + + Waiting for GPS + Abiding the arrival of GPS + + + Waiting for route + Abiding the routeโ€™s arrival + + + + MultiOptionDialog + + Select + Select + + + Cancel + Abandon + + + + Networking + + Advanced + Advanced + + + Enter password + Enter thy password + + + for "%1" + for โ€œ%1โ€ + + + Wrong password + Thou hast enterโ€™d a wrong password + + + + OffroadAlert + + Device temperature too high. System cooling down before starting. Current internal component temperature: %1 + The device burneth too hot. The system must cool ere it doth start. Current internal component temperature: %1 + + + Immediately connect to the internet to check for updates. If you do not connect to the internet, openpilot won't engage in %1 + Straightway connect thee to the internet to seek updates. An thou connect not to the internet, openpilot shall not engage in %1 + + + Connect to internet to check for updates. openpilot won't automatically start until it connects to internet to check for updates. + Connect thee to the internet to seek updates. openpilot shall not start of its own accord till it be joined to the internet to seek updates. + + + Unable to download updates +%1 + Unable to fetch updates +%1 + + + Taking camera snapshots. System won't start until finished. + Taking camera snapshots. The system shall not commence till all be finished. + + + An update to your device's operating system is downloading in the background. You will be prompted to update when it's ready to install. + An update to thy deviceโ€™s operating system doth download in the background. Thou shalt be prompted to update when โ€™tis ready to install. + + + Device failed to register. It will not connect to or upload to comma.ai servers, and receives no support from comma.ai. If this is an official device, visit https://comma.ai/support. + The device hath failed to register. It shall neither connect to nor upload unto comma.ai servers, and receiveth no support from comma.ai. If this be an official device, visit https://comma.ai/support. + + + NVMe drive not mounted. + The NVMe drive is not mounted. + + + Unsupported NVMe drive detected. Device may draw significantly more power and overheat due to the unsupported NVMe. + An unsupported NVMe drive is espied. The device may draw far more power and oโ€™erheat by reason of the unsupported NVMe. + + + openpilot was unable to identify your car. Your car is either unsupported or its ECUs are not recognized. Please submit a pull request to add the firmware versions to the proper vehicle. Need help? Join discord.comma.ai. + openpilot could not ken thy car. Thy car is either unsupported or its ECUs are unrecognized. Prithee submit a pull request to add the firmware versions to the proper vehicle. Needโ€™st thou aid? Join discord.comma.ai. + + + openpilot was unable to identify your car. Check integrity of cables and ensure all connections are secure, particularly that the comma power is fully inserted in the OBD-II port of the vehicle. Need help? Join discord.comma.ai. + openpilot could not ken thy carriage. Inspect the cablesโ€™ soundness and make certain all connexions be fast, chiefly that the comma power be full inserted in the vehicleโ€™s OBD-II port. Needโ€™st thou aid? Join discord.comma.ai. + + + openpilot detected a change in the device's mounting position. Ensure the device is fully seated in the mount and the mount is firmly secured to the windshield. + openpilot hath espied a change in the deviceโ€™s mounting position. See thou the device be fully set within the mount, and that the mount be firmly fastened unto the windshield. + + + + OffroadHome + + UPDATE + UPDATE + + + ALERTS + ALERTS + + + ALERT + ALERT + + + + OnroadAlerts + + openpilot crashed + openpilot hath suffered a grievous crash + + + Please post the "Error Log" in the FrogPilot Discord! + Prithee, post the "Error Log" in the FrogPilot Discord anon! + + + openpilot Unavailable + openpilot Be Unavailable + + + Waiting for controls to start + Awaiting the controls to stir and begin + + + TAKE CONTROL IMMEDIATELY + SEIZE THEE CONTROL FORTHWITH + + + Controls Unresponsive + Controls Heed Thee Not + + + Reboot Device + Reboot the Device + + + openpilot crashed ๐Ÿ’ฉ + openpilot hath crashed ๐Ÿ’ฉ + + + + PairingPopup + + Pair your device to your %1 account + Pair thy device unto thy %1 account + + + Go to https://%1 on your phone + Get thee to https://%1 upon thy phone + + + Click "add new device" and scan the QR code on the right + Click โ€œadd new deviceโ€ and scan the QR code upon the right-hand side + + + Bookmark %1 to your home screen to use it like an app + Pin %1 upon thy home screen, and use it eโ€™en as an app + + + + ParamControl + + Enable + Enable thee + + + Cancel + Cancel thee + + + + PrimeAdWidget + + Upgrade Now + Upgrade thee anon + + + Become a comma prime member at connect.comma.ai + Prithee, become a comma prime member at connect.comma.ai + + + PRIME FEATURES: + PRIME FEATURES: + + + Remote access + Remote ingress + + + 24/7 LTE connectivity + 24/7 LTE connexion + + + 1 year of drive storage + One year of chariot-gait storage + + + Turn-by-turn navigation + Turn-by-turn navigation, prithee + + + + PrimeUserWidget + + โœ“ SUBSCRIBED + โœ“ SUBSCRIBโ€™D + + + comma prime + comma prime + + + + QObject + + km + km + + + m + m + + + mi + mi + + + ft + ft + + + Restore + Restore thee + + + Exit + Exit + + + FrogPilot + FrogPilot + + + now + anon + + + %n minute(s) ago + + %n minute(s) gone by + %n minute(s) gone by + + + + %n hour(s) ago + + %n hour(s) past + %n hour(s) past + + + + %n day(s) ago + + %n day(s) past + %n day(s) past + + + + + Reset + + Reset failed. Reboot to try again. + Reset did fail. Reboot, and try anew. + + + Resetting device... +This may take up to a minute. + Resetting the device... +This may consume up to a minute. + + + Are you sure you want to reset your device? + Art thou certain thou wouldst reset thy device? + + + System Reset + System Rebooteth + + + System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. + System reset hath been provoked. Press confirm to wipe all content and settings. Press cancel to resume boot. + + + Cancel + Cancel + + + Reboot + Reboot thee + + + Confirm + Confirm thee + + + Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device. + Unable to mount the data partition. Perchance the partition be corrupted. Press confirm to erase and reset thy device. + + + + ScreenRecorder + + RECORDING + RECORDING + + + RECORD + RECORD + + + + SettingsWindow + + โ† Back + โ† Back + + + Device + Device + + + Network + Network + + + Toggles + Toggles thou mayโ€™st switch + + + Software + Softwรคre + + + FrogPilot + FrogPilot + + + Welcome to FrogPilot! Since you're new to openpilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Welcome to FrogPilot! Since thou art new to openpilot, the "Minimal" toggle preset hath been applied, yet thou mayst alter it at any time via the "Tuning Level" button! + + + Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Welcome to FrogPilot! Since thou art new to FrogPilot, the "Minimal" toggle preset hath been applied, yet thou mayโ€™st change this at any time via the "Tuning Level" button! + + + Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Since thou art but new to FrogPilot, the โ€œMinimalโ€ toggle preset hath been applied; yet thou mayโ€™st change it at any time by the โ€œTuning Levelโ€ button! + + + Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Since thou art seasoned with openpilot, the "Standard" toggle preset hath been applied, yet thou mayโ€™st change it at any hour via the "Tuning Level" button! + + + Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Since thouโ€™rt well-versed in FrogPilot, the โ€œStandardโ€ toggle preset hath been applied; yet thou mayโ€™st change it at any time via the โ€œTuning Levelโ€ button! + + + Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + Since thou art full experienced with FrogPilot, the "Advanced" toggle preset hath been applied; yet thou mayst change it at any time via the "Tuning Level" button! + + + + Setup + + Something went wrong. Reboot the device. + Something hath gone amiss. Reboot the device anon. + + + Ensure the entered URL is valid, and the deviceโ€™s internet connection is good. + Ensure the URL thou enterโ€™st be valid, and the deviceโ€™s internet connexion be sound. + + + No custom software found at this URL. + No bespoke software found at this URL. + + + WARNING: Low Voltage + WARNING: Low Voltage, prithee take heed + + + Power your device in a car with a harness or proceed at your own risk. + Provide thy device with power in a carriage by a harness, or proceed at thine own peril. + + + Power off + Turn thee off power + + + Continue + Proceed + + + Getting Started + Commencing Thy Journey + + + Before we get on the road, letโ€™s finish installation and cover some details. + Ere we set forth upon the road, let us finish installation and discourse some particulars. + + + Connect to Wi-Fi + Make connexion to Wiโ€‘Fi + + + Back + Back + + + Continue without Wi-Fi + Proceed without Wiโ€‘Fi, prithee + + + Waiting for internet + Abiding the internetโ€™s leisure + + + Choose Software to Install + Choose thou the Software to Install + + + openpilot + openpilot + + + Custom Software + Custom Software, bespoke and rare + + + Enter URL + Enter thou a URL + + + for Custom Software + for Custom Software + + + Downloading... + Downloading... + + + Download Failed + Download Hath Failed + + + Reboot device + Reboot the device, prithee + + + Start over + Begin anew + + + Select a language + Choose a tongue + + + + SetupWidget + + Finish Setup + Conclude Thy Setup + + + Pair your device with Konik connect (stable.konik.ai). + Pair thy device with Konik connect (stable.konik.ai). + + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + Pair thy device with comma connect (connect.comma.ai) and lay claim to thy comma prime boon. + + + Pair device + Bind thy device + + + + Sidebar + + CONNECT + CONNECT + + + OFFLINE + OFFLINE + + + ONLINE + ONLINE + + + ERROR + ERROR + + + TEMP + TEMP + + + HIGH + HIGH + + + GOOD + GOOD + + + OK + Aye + + + VEHICLE + CARRIAGE + + + NO + Nay + + + PANDA + PANDA + + + GPS + GPS + + + SEARCH + SEEK + + + GPU + GPU + + + CPU + CPU + + + GB + GB + + + MEMORY + MEMORY, hark! + + + LEFT + LEFะข + + + USED + USED + + + -- + โ€” + + + Wi-Fi + Wiโ€‘Fi + + + ETH + ETH + + + 2G + 2G + + + 3G + 3G + + + LTE + LTE + + + 5G + 5G + + + + SoftwarePanel + + Updates are only downloaded while the car is off or in park. + Updates are downloadโ€™d only whilst the carriage be off or in park. + + + Current Version + Current Version, anon + + + Automatically Update FrogPilot + Automatically Update FrogPilot + + + FrogPilot will automatically update itself and it's assets when you're offroad and have an active internet connection. + FrogPilot shall, of its own accord, refresh itself and its assets whilst thou art offroad and possessed of an active internet connection. + + + Download + Download + + + CHECK + INSPECT + + + Install Update + Install the Update + + + INSTALL + INSTALL + + + Target Branch + Target Branch + + + SELECT + SELECT + + + Select a branch + Choose a branch, prithee + + + This branch must be downloaded before switching. Would you like to download it now? + This branch must be fetchโ€™d ere thou switchest. Wouldst thou download it now? + + + Uninstall %1 + Uninstall %1 + + + UNINSTALL + UNINSTALL + + + Are you sure you want to uninstall? + Art thou certain thou wouldst uninstall? + + + Uninstall + Uninstall thee + + + Error Log + Ledger of Errors + + + VIEW + VIEWETH + + + View the error log for openpilot crashes. + Peruse the error chronicle for openpilotโ€™s mishaps. + + + failed to check for update + failed to seek an update + + + DOWNLOAD + DOWNLOAD + + + update available + an update is at hand + + + never + neโ€™er + + + up to date, last checked %1 + up to date, last didst check %1 + + + Do you want to perform a full factory reset? All saved assets and settings will be permanently deleted! + Dost thou wish to perform a full factory reset? All saved assets and settings shall be permanently deleted! + + + This is a complete factory reset and cannot be undone. Are you absolutely sure you want to continue? + This be a complete factory reset and cannot be undone. Art thou absolutely sure thou wouldst continue? + + + + SshControl + + SSH Keys + SSH Keys + + + Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. A comma employee will NEVER ask you to add their GitHub username. + Warning: This doth grant SSH access to all public keys in thy GitHub settings. Enter never a GitHub username save thine own. A comma employee shall NEVER bid thee add their GitHub username. + + + ADD + ADD + + + Enter your GitHub username + Enter thy GitHub username + + + LOADING + LOADING, prithee await + + + REMOVE + REMOVE + + + Username '%1' has no keys on GitHub + The user โ€˜%1โ€™ possesseth no keys upon GitHub + + + Request timed out + Thy request hath outworn its hour + + + Username '%1' doesn't exist on GitHub + The username โ€˜%1โ€™ doth not exist upon GitHub + + + + SshToggle + + Enable SSH + Enable thine SSH + + + + TermsPage + + Terms & Conditions + Terms & Conditions, prithee + + + Decline + Decline + + + Scroll to accept + Scroll to give thy assent + + + Agree + Consent + + + + TogglesPanel + + Enable openpilot + Enkindle openpilot + + + Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. + Employ the openpilot system for adaptive cruise control and lane keep driver assistance. Thy vigilance is required at all times to use this feature. Changing this setting taketh effect when the car is powered off. + + + openpilot Longitudinal Control (Alpha) + openpilot Longitudinal Control (Alpha) + + + WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). + WARNING: openpilotโ€™s longitudinal governance is in alpha for this carriage and shall disable Automatic Emergency Braking (AEB). + + + On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. + In this carriage, openpilot by default deferreth to the carโ€™s built-in ACC, not to openpilotโ€™s own longitudinal command. Enable this to betake thee to openpilotโ€™s longitudinal command. Enabling Experimental mode is advisรจd when enabling openpilot longitudinal command alpha. + + + Experimental Mode + Experimental Mode + + + Disengage on Accelerator Pedal + Disengage upon the Accelerator Pedal + + + When enabled, pressing the accelerator pedal will disengage openpilot. + When enabled, pressing the accelerator pedal shall disengage openpilot. + + + Enable Lane Departure Warnings + Enable Warnings of Lane Departure + + + Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). + Receive warnings to steer thy carriage back within the lane when it strayeth oโ€™er a marked lane line without a turn signal engaged, whilst traveling oโ€™er 31 mph (50 km/h). + + + Record and Upload Driver Camera + Record and Bestow the Driverโ€™s Camera to the Cloud + + + Upload data from the driver facing camera and help improve the driver monitoring algorithm. + Upload thy data from the driver-facing camera, and lend aid to improving the driver monitoring algorithm. + + + Use Metric System + Employ the Metric System + + + Display speed in km/h instead of mph. + Show thy speed in km/h, not in mph. + + + Show ETA in 24h Format + Display ETA in the 24-hour guise + + + Use 24h format instead of am/pm + Use the four-and-twenty hour form in lieu of am/pm + + + Show Map on Left Side of UI + Display the Map upon the left side of the UI + + + Show map on left side when in split screen view. + Display the map upon the left side when in split-screen view. + + + Aggressive + Fierce + + + Standard + Standard + + + Relaxed + At Ease + + + Driving Personality + Driving Disposition + + + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + Standard is advisโ€™d. In aggressive mode, openpilot shall trail lead chariots more near and be more bold with gas and brake. In relaxed mode, openpilot shall keep a greater distance from lead chariots. On supported chariots, thou mayโ€™st cycle these humours with thy steering wheel distance button. + + + openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: + openpilot by default doth drive in <b>chill mode</b>. Experimental mode unlocketh <b>alpha-level features</b> that be not fit for chill mode. Experimental features be listed below: + + + End-to-End Longitudinal Control + End-to-End Longitudinal Governance + + + Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. + Let the driving model command throttle and brake. openpilot shall drive as it deemeth a mortal would, eโ€™en halting at red lights and stop signs. Since the driving model chooseth the speed, the set speed shall serve but as an upper bound. This is an alpha-quality feature; expect misprisions. + + + New Driving Visualization + New Visage of Driving + + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + The driving visualization shall shift to the road-facing wide-angle camera at low speeds, to better reveal certain turns. The Experimental mode emblem shall likewise appear in the top-right corner. + + + Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. + Experimental mode may not be used at this hour upon this carriage, for the carriageโ€™s stock ACC doth govern longitudinal control. + + + openpilot longitudinal control may come in a future update. + openpilotโ€™s rule oโ€™ speed and distance may arrive in a future update. + + + Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. + Enable the openpilot longitudinal control (alpha) toggle to permit Experimental mode. + + + + Updater + + Update Required + An Update Is Required + + + An operating system update is required. Connect your device to Wi-Fi for the fastest update experience. The download size is approximately 1GB. + An update to the operating system is required. Connect thy device to Wiโ€‘Fi for the swiftest updating. The download is near 1GB in size. + + + Connect to Wi-Fi + Make connexion to Wiโ€‘Fi + + + Install + Install thee + + + Back + Back + + + Loading... + Loading... + + + Reboot + Reboot thee + + + Update failed + The update hath failed + + + + WiFiPromptWidget + + Setup Wi-Fi + Prepare Wiโ€‘Fi + + + Connect to Wi-Fi to upload driving data and help improve openpilot + Connect thee to Wi-Fi to upload driving data and lend thy aid to the betterment of openpilot + + + Open Settings + Open the Settings + + + Ready to upload + Prithy, prepared for upload + + + Training data will be pulled periodically while your device is on Wi-Fi + Training data shall be drawn forth at intervals whilst thy device be upon Wiโ€‘Fi + + + Uploading disabled + Uploading is forsworn + + + Toggle off the "Turn Off Data Uploads" toggle to re-enable uploads. + Untoggle the โ€œTurn Off Data Uploadsโ€ switch to restore uploads. + + + + WifiUI + + Scanning for networks... + Scanning for networks... verily. + + + CONNECTING... + ESTABLISHING THY LINK... + + + FORGET + FORGET thee + + + Forget Wi-Fi Network "%1"? + Dost thou forget the Wi-Fi Network โ€œ%1โ€? + + + Forget + Forget thee + + + \ No newline at end of file diff --git a/selfdrive/ui/translations/main_th.ts b/selfdrive/ui/translations/main_th.ts index b6b2fc83c..ee6c7b3b2 100644 --- a/selfdrive/ui/translations/main_th.ts +++ b/selfdrive/ui/translations/main_th.ts @@ -88,23 +88,23 @@ Off - เธ›เธดเธ” + เธ›เธดเธ” Always - เน€เธชเธกเธญ + เน€เธชเธกเธญ Only Onroad - เน€เธ‰เธžเธฒเธฐ Onroad + เน€เธ‰เธžเธฒเธฐเธ‚เธ“เธฐเธ‚เธฑเธšเธšเธ™เธ–เธ™เธ™ Until Reboot - เธˆเธ™เธเธงเนˆเธฒเธˆเธฐเธฃเธตเธšเธนเธ• + เธˆเธ™เธเธงเนˆเธฒเธˆเธฐเธฃเธตเธšเธนเธ• Allow tethering with your data SIM and keep it active either while driving or continuously. - เธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เนƒเธŠเน‰เธเธฒเธฃเน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญเธญเธดเธ™เน€เธ—เธญเธฃเนŒเน€เธ™เน‡เธ•เธœเนˆเธฒเธ™เธ‹เธดเธกเธ‚เน‰เธญเธกเธนเธฅเธ‚เธญเธ‡เธ„เธธเธ“เนเธฅเธฐเนƒเธซเน‰เธกเธฑเธ™เธ—เธณเธ‡เธฒเธ™เธ•เนˆเธญเน€เธ™เธทเนˆเธญเธ‡เน„เธกเนˆเธงเนˆเธฒเธˆเธฐเธ‚เธ“เธฐเธ‚เธฑเธšเธฃเธ–เธซเธฃเธทเธญเธญเธขเนˆเธฒเธ‡เธ•เนˆเธญเน€เธ™เธทเนˆเธญเธ‡ + เธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เนƒเธŠเน‰เธ‡เธฒเธ™เธฎเธญเธ•เธชเธ›เธญเธ•เธ”เน‰เธงเธขเธ‹เธดเธกเธ”เธฒเธ•เน‰เธฒ เนเธฅเธฐเธ„เธ‡เธเธฒเธฃเน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญเนƒเธซเน‰เธ—เธณเธ‡เธฒเธ™เธ‚เธ“เธฐเธ‚เธฑเธšเธฃเธ–เธซเธฃเธทเธญเธ—เธณเธ‡เธฒเธ™เธ•เนˆเธญเน€เธ™เธทเนˆเธญเธ‡เธ•เธฅเธญเธ”เน€เธงเธฅเธฒ @@ -187,71 +187,71 @@ DeveloperSidebar m/sยฒ - m/sยฒ + เธก./เธงเธดเธ™เธฒเธ—เธตยฒ ft/sยฒ - ft/sยฒ + เธŸเธธเธ•/เธงเธดเธ™เธฒเธ—เธตยฒ ACCEL - ACCEL + เธ„เธฑเธ™เน€เธฃเนˆเธ‡ ACCEL JERK - เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธเธฃเธฐเธ•เธธเธ + เนเธฃเธ‡เธเธฃเธฐเธŠเธฒเธเธเธฒเธฃเน€เธฃเนˆเธ‡ ACT ACCEL - ACT ACCEL + เน€เธฃเนˆเธ‡ ACT DANGER JERK - เธญเธฑเธ™เธ•เธฃเธฒเธข เธ„เธ™เธซเธขเธฒเธšเธ„เธฒเธข + เธญเธฑเธ™เธ•เธฃเธฒเธข เธชเธฐเธšเธฑเธ”เนเธฃเธ‡ STEER DELAY - เธซเธ™เนˆเธงเธ‡เธเธฒเธฃเธšเธฑเธ‡เธ„เธฑเธšเน€เธฅเธตเน‰เธขเธง + เธซเธ™เนˆเธงเธ‡เธžเธงเธ‡เธกเธฒเธฅเธฑเธข FRICTION - เนเธฃเธ‡เน€เธชเธตเธขเธ”เธ—เธฒเธ™ + เนเธฃเธ‡เน€เธชเธตเธขเธ”เธ—เธฒเธ™ LAT ACCEL - LAT ACCEL + เธ„เธงเธฒเธกเน€เธฃเนˆเธ‡เธ•เธฒเธกเธ‚เธงเธฒเธ‡ LATERAL % - LATERAL % + เธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡ % LONG % - เธขเธฒเธง % + LONG % MAX ACCEL - เนเธกเน‡เธเธ‹เนŒเนเธญเธ„เน€เธ‹เธฅ + เธ„เธงเธฒเธกเน€เธฃเนˆเธ‡เธชเธนเธ‡เธชเธธเธ” SPEED JERK - เธชเธ›เธตเธ”เน€เธˆเธดเธฃเนŒเธ + เธเธฃเธฐเธ•เธธเธเธ„เธงเธฒเธกเน€เธฃเน‡เธง STEER ANGLE - เธกเธธเธกเธšเธฑเธ‡เธ„เธฑเธšเน€เธฅเธตเน‰เธขเธง + เธกเธธเธกเธžเธงเธ‡เธกเธฒเธฅเธฑเธข STEER RATIO - เธญเธฑเธ•เธฃเธฒเธ—เธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธข + เธญเธฑเธ•เธฃเธฒเธ—เธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธข STEER STIFF - เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเนเธ‚เน‡เธ‡ + เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเนเธ‚เน‡เธ‡ TORQUE % - เนเธฃเธ‡เธšเธดเธ” % + เนเธฃเธ‡เธšเธดเธ” % @@ -398,30 +398,30 @@ Pair your device with Konik connect (stable.konik.ai). - เธˆเธฑเธšเธ„เธนเนˆเธเธฑเธšเธญเธธเธ›เธเธฃเธ“เนŒเธ‚เธญเธ‡เธ„เธธเธ“เธ”เน‰เธงเธข Konik connect (stable.konik.ai) + เธˆเธฑเธšเธ„เธนเนˆเน€เธ„เธฃเธทเนˆเธญเธ‡เธกเธทเธญเธ‚เธญเธ‡เธ„เธธเธ“เธเธฑเธš Konik connect (stable.konik.ai). DriveStats FROGPILOT - FROGPILOT + FROGPILOT Drives - เน„เธ”เธฃเธŸเนŒ + เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ Hours - เธŠเธฑเนˆเธงเน‚เธกเธ‡ + เธŠเธฑเนˆเธงเน‚เธกเธ‡ KM - KM + เธเธก. Miles - เน„เธกเธฅเนŒ + เน„เธกเธฅเนŒ @@ -446,3837 +446,3952 @@ FrogPilotAnnotatedCameraWidget m/sยฒ - m/sยฒ + เธก./เธงเธดเธ™เธฒเธ—เธตยฒ meters - เน€เธกเธ•เธฃ + เน€เธกเธ•เธฃ m/s - m/s + เธก./เธงเธดเธ™เธฒเธ—เธต km/h - km/h + เธเธก./เธŠเธก. ft/sยฒ - ft/sยฒ + เธŸเธธเธ•/เธงเธดเธ™เธฒเธ—เธตยฒ feet - เธŸเธธเธ• + เธŸเธธเธ• mph - mph + เน„เธกเธฅเนŒ/เธŠเธก. Vehicle in blind spot - เธขเธฒเธ™เธžเธฒเธซเธ™เธฐเนƒเธ™เธˆเธธเธ”เธšเธญเธ” + เธกเธตเธฃเธ–เธญเธขเธนเนˆเนƒเธ™เธˆเธธเธ”เธšเธญเธ” PENDING - เธฃเธญเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃ + เธฃเธญเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃ LIMIT - เธˆเธณเธเธฑเธ” + เธˆเธณเธเธฑเธ” FrogPilotConfirmationDialog Reboot required to take effect. - เธˆเธณเน€เธ›เน‡เธ™เธ•เน‰เธญเธ‡เธฃเธตเธšเธนเธ•เน€เธžเธทเนˆเธญเนƒเธซเน‰เธกเธตเธœเธฅ + เธ•เน‰เธญเธ‡เธฃเธตเธšเธนเธ•เน€เธžเธทเนˆเธญเนƒเธซเน‰เธกเธตเธœเธฅ Reboot Now - เธฃเธตเธšเธนเธ•เธ•เธญเธ™เธ™เธตเน‰ + เธฃเธตเธšเธนเธ•เธ—เธฑเธ™เธ—เธต Reboot Later - เธฃเธตเธšเธนเธ•เธ เธฒเธขเธซเธฅเธฑเธ‡ + เธฃเธตเธšเธนเธ•เธ เธฒเธขเธซเธฅเธฑเธ‡ Yes - เนƒเธŠเนˆ + เนƒเธŠเนˆ No - เน„เธกเนˆ + เน„เธกเนˆ FrogPilotDataPanel - Delete Driving Footage and Data - เธฅเธšเธ เธฒเธžเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเนเธฅเธฐเธ‚เน‰เธญเธกเธนเธฅ + Delete Driving Data + เธฅเธšเธ‚เน‰เธญเธกเธนเธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ DELETE - เธฅเธš + เธฅเธš - Deletes all stored driving footage and data from your device. Ideal for maintaining privacy or for simply freeing up space. - เธฅเธšเธ เธฒเธžเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเนเธฅเธฐเธ‚เน‰เธญเธกเธนเธฅเธ—เธฑเน‰เธ‡เธซเธกเธ”เธ—เธตเนˆเน€เธเน‡เธšเน„เธงเน‰เธˆเธฒเธเธญเธธเธ›เธเธฃเธ“เนŒเธ‚เธญเธ‡เธ„เธธเธ“ เน€เธซเธกเธฒเธฐเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธฃเธฑเธเธฉเธฒเธ„เธงเธฒเธกเน€เธ›เน‡เธ™เธชเนˆเธงเธ™เธ•เธฑเธงเธซเธฃเธทเธญเน€เธžเธตเธขเธ‡เนเธ„เนˆเน€เธžเธดเนˆเธกเธžเธทเน‰เธ™เธ—เธตเนˆเธงเนˆเธฒเธ‡ + <b>Delete all stored driving footage and data</b> to free up space and clear private information. + <b>เธฅเธšเธ เธฒเธžเธŸเธธเธ•เน€เธ—เธˆเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเนเธฅเธฐเธ‚เน‰เธญเธกเธนเธฅเธ—เธตเนˆเธˆเธฑเธ”เน€เธเน‡เธšเธ—เธฑเน‰เธ‡เธซเธกเธ”</b> เน€เธžเธทเนˆเธญเน€เธžเธดเนˆเธกเธžเธทเน‰เธ™เธ—เธตเนˆเธงเนˆเธฒเธ‡เนเธฅเธฐเธฅเน‰เธฒเธ‡เธ‚เน‰เธญเธกเธนเธฅเธชเนˆเธงเธ™เธšเธธเธ„เธ„เธฅ - Are you sure you want to delete all of your driving footage and data? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเธŸเธธเธ•เน€เธ—เธˆเนเธฅเธฐเธ‚เน‰เธญเธกเธนเธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธฑเน‰เธ‡เธซเธกเธ”เธ‚เธญเธ‡เธ„เธธเธ“? + Delete all driving data and footage? + เธฅเธšเธ‚เน‰เธญเธกเธนเธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเนเธฅเธฐเธงเธดเธ”เธตเน‚เธญเธ—เธฑเน‰เธ‡เธซเธกเธ”เธซเธฃเธทเธญเน„เธกเนˆ? Delete - เธฅเธš + เธฅเธš Deleting... - เธเธณเธฅเธฑเธ‡เธฅเธš... + เธเธณเธฅเธฑเธ‡เธฅเธš... Deleted! - เธฅเธšเนเธฅเน‰เธง! + เธฅเธšเนเธฅเน‰เธง! Delete Error Logs - เธฅเธšเธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เธšเธฑเธ™เธ—เธถเธ + เธฅเธšเธšเธฑเธ™เธ—เธถเธเธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ” - Deletes all stored error logs from your device. Ideal for freeing up space. - เธฅเธšเธ‚เน‰เธญเธกเธนเธฅเธšเธฑเธ™เธ—เธถเธเธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เธ—เธฑเน‰เธ‡เธซเธกเธ”เธ—เธตเนˆเน€เธเน‡เธšเน„เธงเน‰เนƒเธ™เธญเธธเธ›เธเธฃเธ“เนŒเธ‚เธญเธ‡เธ„เธธเธ“ เน€เธซเธกเธฒเธฐเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเน€เธžเธดเนˆเธกเธžเธทเน‰เธ™เธ—เธตเนˆเธงเนˆเธฒเธ‡ + <b>Delete collected error logs</b> to free up space and clear old crash records. + <b>เธฅเธšเธšเธฑเธ™เธ—เธถเธเธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เธ—เธตเนˆเน€เธเน‡เธšเน„เธงเน‰</b> เน€เธžเธทเนˆเธญเน€เธžเธดเนˆเธกเธžเธทเน‰เธ™เธ—เธตเนˆเธงเนˆเธฒเธ‡เนเธฅเธฐเธฅเน‰เธฒเธ‡เธ‚เน‰เธญเธกเธนเธฅเธเธฒเธฃเนเธ„เธฃเธŠเน€เธเนˆเธฒ - Are you sure you want to delete all of the error logs? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเธšเธฑเธ™เธ—เธถเธเธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เธ—เธฑเน‰เธ‡เธซเธกเธ”? + Delete all error logs? + เธฅเธšเธšเธฑเธ™เธ—เธถเธเธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เธ—เธฑเน‰เธ‡เธซเธกเธ”เธซเธฃเธทเธญเน„เธกเนˆ? Screen Recordings - เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธซเธ™เน‰เธฒเธˆเธญ + เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธซเธ™เน‰เธฒเธˆเธญ - Manage your screen recordings. - เธˆเธฑเธ”เธเธฒเธฃเธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธซเธ™เน‰เธฒเธˆเธญเธ‚เธญเธ‡เธ„เธธเธ“ + <b>Delete or rename screen recordings.</b> + <b>เธฅเธšเธซเธฃเธทเธญเน€เธ›เธฅเธตเนˆเธขเธ™เธŠเธทเนˆเธญเธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธซเธ™เน‰เธฒเธˆเธญ</b> DELETE ALL - เธฅเธšเธ—เธฑเน‰เธ‡เธซเธกเธ” + เธฅเธšเธ—เธฑเน‰เธ‡เธซเธกเธ” RENAME - เน€เธ›เธฅเธตเนˆเธขเธ™เธŠเธทเนˆเธญ + เน€เธ›เธฅเธตเนˆเธขเธ™เธŠเธทเนˆเธญ - Select a recording to delete - เน€เธฅเธทเธญเธเธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเน€เธžเธทเนˆเธญเธฅเธš + Choose a screen recording to delete + เน€เธฅเธทเธญเธเธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธซเธ™เน‰เธฒเธˆเธญเน€เธžเธทเนˆเธญๅˆ ้™ค - Are you sure you want to delete this recording? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเธšเธฑเธ™เธ—เธถเธเธ™เธตเน‰? + Delete this screen recording? + เธฅเธšเธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธซเธ™เน‰เธฒเธˆเธญเธ™เธตเน‰เธซเธฃเธทเธญเน„เธกเนˆ? - Are you sure you want to delete all screen recordings? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธซเธ™เน‰เธฒเธˆเธญเธ—เธฑเน‰เธ‡เธซเธกเธ”? + Delete all screen recordings? + เธฅเธšเธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธซเธ™เน‰เธฒเธˆเธญเธ—เธฑเน‰เธ‡เธซเธกเธ”เธซเธฃเธทเธญเน„เธกเนˆ? Delete All - เธฅเธšเธ—เธฑเน‰เธ‡เธซเธกเธ” + เธฅเธšเธ—เธฑเน‰เธ‡เธซเธกเธ” - Select a recording to rename - เน€เธฅเธทเธญเธเธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเน€เธžเธทเนˆเธญเน€เธ›เธฅเธตเนˆเธขเธ™เธŠเธทเนˆเธญ + Choose a screen recording to rename + เน€เธฅเธทเธญเธเธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธซเธ™เน‰เธฒเธˆเธญเน€เธžเธทเนˆเธญเน€เธ›เธฅเธตเนˆเธขเธ™เธŠเธทเนˆเธญ Enter a new name - เธ›เน‰เธญเธ™เธŠเธทเนˆเธญเนƒเธซเธกเนˆ + เธ›เน‰เธญเธ™เธŠเธทเนˆเธญเนƒเธซเธกเนˆ - Rename Recording - เน€เธ›เธฅเธตเนˆเธขเธ™เธŠเธทเนˆเธญเธเธฒเธฃเธšเธฑเธ™เธ—เธถเธ + Rename Screen Recording + เน€เธ›เธฅเธตเนˆเธขเธ™เธŠเธทเนˆเธญเธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธซเธ™เน‰เธฒเธˆเธญ - A recording with this name already exists. Please choose a different name. - เธกเธตเธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธ”เน‰เธงเธขเธŠเธทเนˆเธญเธ™เธตเน‰เธญเธขเธนเนˆเนเธฅเน‰เธง เธเธฃเธธเธ“เธฒเน€เธฅเธทเธญเธเธŠเธทเนˆเธญเธญเธทเนˆเธ™ + Name already in use. Please choose a different name. + เธŠเธทเนˆเธญเธ™เธตเน‰เธ–เธนเธเนƒเธŠเน‰เนเธฅเน‰เธง เน‚เธ›เธฃเธ”เน€เธฅเธทเธญเธเธŠเธทเนˆเธญเธญเธทเนˆเธ™ Renaming... - เธเธณเธฅเธฑเธ‡เน€เธ›เธฅเธตเนˆเธขเธ™เธŠเธทเนˆเธญ... + เธเธณเธฅเธฑเธ‡เน€เธ›เธฅเธตเนˆเธขเธ™เธŠเธทเนˆเธญ... Renamed! - เน€เธ›เธฅเธตเนˆเธขเธ™เธŠเธทเนˆเธญเนเธฅเน‰เธง! + เน€เธ›เธฅเธตเนˆเธขเธ™เธŠเธทเนˆเธญเนเธฅเน‰เธง! FrogPilot Backups - FrogPilot เธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅ + เธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅ FrogPilot - Manage your FrogPilot backups. - เธˆเธฑเธ”เธเธฒเธฃเธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅ FrogPilot เธ‚เธญเธ‡เธ„เธธเธ“ + <b>Create, delete, or restore FrogPilot backups.</b> + <b>เธชเธฃเน‰เธฒเธ‡ เธฅเธš เธซเธฃเธทเธญเธเธนเน‰เธ„เธทเธ™เธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเธ‚เธญเธ‡ FrogPilot</b> BACKUP - เธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅ + เธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅ RESTORE - เธ„เธทเธ™เธ„เนˆเธฒ + เธเธนเน‰เธ„เธทเธ™ - Name your backup - เธ•เธฑเน‰เธ‡เธŠเธทเนˆเธญเธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเธ‚เธญเธ‡เธ„เธธเธ“ + Enter a name for this backup + เธเธฃเธญเธเธŠเธทเนˆเธญเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเธ™เธตเน‰ - A backup with this name already exists. Please choose a different name. - เธกเธตเธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเธ”เน‰เธงเธขเธŠเธทเนˆเธญเธ™เธตเน‰เธญเธขเธนเนˆเนเธฅเน‰เธง เธเธฃเธธเธ“เธฒเน€เธฅเธทเธญเธเธŠเธทเนˆเธญเธญเธทเนˆเธ™ - - - Do you want to compress this backup? This will take a few minutes, but the final result will be smaller and run in the background. - เธ„เธธเธ“เธ•เน‰เธญเธ‡เธเธฒเธฃเธšเธตเธšเธญเธฑเธ”เธ‚เน‰เธญเธกเธนเธฅเธชเธณเธฃเธญเธ‡เธ™เธตเน‰เธซเธฃเธทเธญเน„เธกเนˆ? เธเธฒเธฃเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ™เธตเน‰เธˆเธฐเนƒเธŠเน‰เน€เธงเธฅเธฒเธชเธฑเธเธ„เธฃเธนเนˆ เนเธ•เนˆเธœเธฅเธฅเธฑเธžเธ˜เนŒเธชเธธเธ”เธ—เน‰เธฒเธขเธˆเธฐเธกเธตเธ‚เธ™เธฒเธ”เน€เธฅเน‡เธเธฅเธ‡เนเธฅเธฐเธ—เธณเธ‡เธฒเธ™เนƒเธ™เธžเธทเน‰เธ™เธซเธฅเธฑเธ‡ + Compress this backup? This will save space and run in the background but take a bit longer. + เธšเธตเธšเธญเธฑเธ”เธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเธ™เธตเน‰เธซเธฃเธทเธญเน„เธกเนˆ? เธงเธดเธ˜เธตเธ™เธตเน‰เธˆเธฐเธ›เธฃเธฐเธซเธขเธฑเธ”เธžเธทเน‰เธ™เธ—เธตเนˆเนเธฅเธฐเธ—เธณเธ‡เธฒเธ™เน€เธšเธทเน‰เธญเธ‡เธซเธฅเธฑเธ‡ เนเธ•เนˆเธˆเธฐเนƒเธŠเน‰เน€เธงเธฅเธฒเธ™เธฒเธ™เธ‚เธถเน‰เธ™เน€เธฅเน‡เธเธ™เน‰เธญเธข Backing up... - เธเธณเธฅเธฑเธ‡เธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅ... + เธเธณเธฅเธฑเธ‡เธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅโ€ฆ Compressing... - เธเธณเธฅเธฑเธ‡เธšเธตเธšเธญเธฑเธ”... + เธเธณเธฅเธฑเธ‡เธšเธตเธšเธญเธฑเธ”... Backup created! - เธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเน€เธชเธฃเน‡เธˆเธชเธดเน‰เธ™! + เธชเธฃเน‰เธฒเธ‡เธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเนเธฅเน‰เธง! - Select a backup to delete - เน€เธฅเธทเธญเธเธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเน€เธžเธทเนˆเธญเธฅเธš + Choose a FrogPilot backup to delete + เน€เธฅเธทเธญเธเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅ FrogPilot เธ—เธตเนˆเธˆเธฐเธฅเธš - Are you sure you want to delete this backup? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเธ‚เน‰เธญเธกเธนเธฅเธชเธณเธฃเธญเธ‡เธ™เธตเน‰? + Delete this backup? + เธฅเธšเธ‚เน‰เธญเธกเธนเธฅเธชเธณเธฃเธญเธ‡เธ™เธตเน‰เธซเธฃเธทเธญเน„เธกเนˆ? - Are you sure you want to delete all FrogPilot backups? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅ FrogPilot เธ—เธฑเน‰เธ‡เธซเธกเธ”? + Delete all backups? + เธฅเธšเธ‚เน‰เธญเธกเธนเธฅเธชเธณเธฃเธญเธ‡เธ—เธฑเน‰เธ‡เธซเธกเธ”เธซเธฃเธทเธญเน„เธกเนˆ? - Select a restore point - เน€เธฅเธทเธญเธเธˆเธธเธ”เธ„เธทเธ™เธ„เนˆเธฒ + Choose a backup to restore + เน€เธฅเธทเธญเธเธ‚เน‰เธญเธกเธนเธฅเธชเธณเธฃเธญเธ‡เน€เธžเธทเนˆเธญเธเธนเน‰เธ„เธทเธ™ - Are you sure you want to restore this version of FrogPilot? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธเธนเน‰เธ„เธทเธ™เน€เธงเธญเธฃเนŒเธŠเธฑเธ™เธ™เธตเน‰เธ‚เธญเธ‡ FrogPilot? + Restore this backup? + เธเธนเน‰เธ„เธทเธ™เธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเธ™เธตเน‰เธซเธฃเธทเธญเน„เธกเนˆ? Restore - เธเธนเน‰เธ„เธทเธ™ + เธเธนเน‰เธ„เธทเธ™ Restoring... - เธเธณเธฅเธฑเธ‡เธ„เธทเธ™เธ„เนˆเธฒ... + เธเธณเธฅเธฑเธ‡เธเธนเน‰เธ„เธทเธ™... Extracting... - เธเธณเธฅเธฑเธ‡เธ”เธถเธ‡เธ‚เน‰เธญเธกเธนเธฅ... + เธเธณเธฅเธฑเธ‡เนเธขเธเน„เธŸเธฅเนŒ... Restored! - เธ„เธทเธ™เธ„เนˆเธฒเนเธฅเน‰เธง! + เธเธนเน‰เธ„เธทเธ™เนเธฅเน‰เธง! Rebooting... - เธเธณเธฅเธฑเธ‡เธฃเธตเธšเธนเธ•... + เธเธณเธฅเธฑเธ‡เธฃเธตเธšเธนเธ•... Toggle Backups - เธชเธฅเธฑเธšเธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅ + เธชเธฅเธฑเธšเธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅ - Manage your toggle backups. - เธˆเธฑเธ”เธเธฒเธฃเธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเธชเธฅเธฑเธšเธ‚เธญเธ‡เธ„เธธเธ“ + <b>Create, delete, or restore toggle backups.</b> + <b>เธชเธฃเน‰เธฒเธ‡ เธฅเธš เธซเธฃเธทเธญเธเธนเน‰เธ„เธทเธ™เธชเธณเธฃเธญเธ‡เธเธฒเธฃเธชเธฅเธฑเธš</b> - Name your toggle backup - เธ•เธฑเน‰เธ‡เธŠเธทเนˆเธญเธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเธชเธฅเธฑเธšเธ‚เธญเธ‡เธ„เธธเธ“ - - - A toggle backup with this name already exists. Please choose a different name. - เธกเธตเธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเนเธšเธšเธชเธฅเธฑเธšเธŠเธทเนˆเธญเน€เธ”เธตเธขเธงเธเธฑเธ™เธ™เธตเน‰เธญเธขเธนเนˆเนเธฅเน‰เธง เธเธฃเธธเธ“เธฒเน€เธฅเธทเธญเธเธŠเธทเนˆเธญเธญเธทเนˆเธ™ - - - Select a toggle backup to delete - เน€เธฅเธทเธญเธเธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเธ—เธตเนˆเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธš - - - Are you sure you want to delete this toggle backup? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเธชเธฅเธฑเธšเธ™เธตเน‰? - - - Are you sure you want to delete all toggle backups? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเธชเธฅเธฑเธšเธ—เธฑเน‰เธ‡เธซเธกเธ”? - - - Select a toggle restore point - เน€เธฅเธทเธญเธเธˆเธธเธ”เธ„เธทเธ™เธ„เนˆเธฒเธเธฒเธฃเธชเธฅเธฑเธš - - - Are you sure you want to restore this toggle backup? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธเธนเน‰เธ„เธทเธ™เธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเธชเธฅเธฑเธšเธ™เธตเน‰? + Choose a backup to delete + เน€เธฅเธทเธญเธเธ‚เน‰เธญเธกเธนเธฅเธชเธณเธฃเธญเธ‡เธ—เธตเนˆเธˆเธฐเธฅเธš FrogPilotDevicePanel Device Settings - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธญเธธเธ›เธเธฃเธ“เนŒ + เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธญเธธเธ›เธเธฃเธ“เนŒ - Settings that control device behavior. - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ—เธตเนˆเธ„เธงเธšเธ„เธธเธกเธžเธคเธ•เธดเธเธฃเธฃเธกเธ‚เธญเธ‡เธญเธธเธ›เธเธฃเธ“เนŒ - - - Battery Shutdown Threshold - เน€เธเธ“เธ‘เนŒเธเธฒเธฃเธ›เธดเธ”เน€เธ„เธฃเธทเนˆเธญเธ‡เนเธšเธ•เน€เธ•เธญเธฃเธตเนˆ - - - Automatically shut down the device when the vehicle's battery voltage reaches the set threshold preventing excessive battery drain to protect the battery. - เธ›เธดเธ”เธญเธธเธ›เธเธฃเธ“เนŒเน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน€เธกเธทเนˆเธญเนเธฃเธ‡เธ”เธฑเธ™เน„เธŸเธŸเน‰เธฒเธ‚เธญเธ‡เนเธšเธ•เน€เธ•เธญเธฃเธตเนˆเธฃเธ–เธขเธ™เธ•เนŒเธ–เธถเธ‡เน€เธเธ“เธ‘เนŒเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰เน€เธžเธทเนˆเธญเธ›เน‰เธญเธ‡เธเธฑเธ™เธเธฒเธฃเธฃเธฐเธšเธฒเธขเนเธšเธ•เน€เธ•เธญเธฃเธตเนˆเธกเธฒเธเน€เธเธดเธ™เน„เธ›เนเธฅเธฐเธ›เธเธ›เน‰เธญเธ‡เนเธšเธ•เน€เธ•เธญเธฃเธตเนˆ + <b>Settings that control how the device runs, powers off, and manages driving data.</b> + <b>เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ—เธตเนˆเธ„เธงเธšเธ„เธธเธกเธเธฒเธฃเธ—เธณเธ‡เธฒเธ™ เธเธฒเธฃเธ›เธดเธ”เน€เธ„เธฃเธทเนˆเธญเธ‡ เนเธฅเธฐเธเธฒเธฃเธˆเธฑเธ”เธเธฒเธฃเธ‚เน‰เธญเธกเธนเธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ‚เธญเธ‡เธญเธธเธ›เธเธฃเธ“เนŒ</b> Device Shutdown Timer - เธ•เธฑเธงเธˆเธฑเธšเน€เธงเธฅเธฒเธ›เธดเธ”เธญเธธเธ›เธเธฃเธ“เนŒ + เธ•เธฑเธงเธˆเธฑเธšเน€เธงเธฅเธฒเน€เธžเธทเนˆเธญเธ›เธดเธ”เธญเธธเธ›เธเธฃเธ“เนŒ - How long the device stays on for after you go offroad. - เธญเธธเธ›เธเธฃเธ“เนŒเธˆเธฐเน€เธ›เธดเธ”เธญเธขเธนเนˆเน„เธ”เน‰เธ™เธฒเธ™เนเธ„เนˆเน„เธซเธ™เธซเธฅเธฑเธ‡เธˆเธฒเธเธ—เธตเนˆเธ„เธธเธ“เธญเธญเธเธ™เธญเธเธ–เธ™เธ™ + <b>Keep the device on for the set amount of time after a drive</b> before it shuts down automatically. + <b>เนƒเธซเน‰เน€เธ„เธฃเธทเนˆเธญเธ‡เน€เธ›เธดเธ”เธญเธขเธนเนˆเธ™เธฒเธ™เธ•เธฒเธกเน€เธงเธฅเธฒเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰เธซเธฅเธฑเธ‡เธ‚เธฑเธšเธ‚เธตเนˆ</b> เธเนˆเธญเธ™เธ—เธตเนˆเธˆเธฐเธ›เธดเธ”เธ•เธฑเธงเน€เธญเธ‡เน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด - Disable Data Logging - เธ›เธดเธ”เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธ‚เน‰เธญเธกเธนเธฅ + Disable Logging + เธ›เธดเธ”เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธฅเน‡เธญเธ WARNING: This will prevent your drives from being recorded and all data will be unobtainable! - เธ„เธณเน€เธ•เธทเธญเธ™: เธชเธดเนˆเธ‡เธ™เธตเน‰เธˆเธฐเธ›เน‰เธญเธ‡เธเธฑเธ™เน„เธกเนˆเนƒเธซเน‰เน„เธ”เธฃเธŸเนŒเธ‚เธญเธ‡เธ„เธธเธ“เธ–เธนเธเธšเธฑเธ™เธ—เธถเธเนเธฅเธฐเธ‚เน‰เธญเธกเธนเธฅเธ—เธฑเน‰เธ‡เธซเธกเธ”เธˆเธฐเน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เน€เธ‚เน‰เธฒเธ–เธถเธ‡เน„เธ”เน‰! + เธ„เธณเน€เธ•เธทเธญเธ™: เธเธฒเธฃเธเธฃเธฐเธ—เธณเธ™เธตเน‰เธˆเธฐเธ›เน‰เธญเธ‡เธเธฑเธ™เน„เธกเนˆเนƒเธซเน‰เธšเธฑเธ™เธ—เธถเธเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ‚เธญเธ‡เธ„เธธเธ“ เนเธฅเธฐเธ‚เน‰เธญเธกเธนเธฅเธ—เธฑเน‰เธ‡เธซเธกเธ”เธˆเธฐเน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธเธนเน‰เธ„เธทเธ™เน„เธ”เน‰! - Disable all data logging to improve privacy. - เธ›เธดเธ”เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธ‚เน‰เธญเธกเธนเธฅเธ—เธฑเน‰เธ‡เธซเธกเธ”เน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเธ›เธฃเธธเธ‡เธ„เธงเธฒเธกเน€เธ›เน‡เธ™เธชเนˆเธงเธ™เธ•เธฑเธง + <b>Prevent the device from saving driving data.</b> + <b>เธ›เน‰เธญเธ‡เธเธฑเธ™เน„เธกเนˆเนƒเธซเน‰เธญเธธเธ›เธเธฃเธ“เนŒเธšเธฑเธ™เธ—เธถเธเธ‚เน‰เธญเธกเธนเธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ</b> - Disable Data Uploads - เธ›เธดเธ”เธเธฒเธฃเธญเธฑเธ›เน‚เธซเธฅเธ”เธ‚เน‰เธญเธกเธนเธฅ + Disable Uploads + เธ›เธดเธ”เธเธฒเธฃเธญเธฑเธ›เน‚เธซเธฅเธ” - WARNING: This will prevent your drives from appearing on <b>comma connect</b> which may impact debugging and support! - เธ„เธณเน€เธ•เธทเธญเธ™: เธชเธดเนˆเธ‡เธ™เธตเน‰เธˆเธฐเธ›เน‰เธญเธ‡เธเธฑเธ™เน„เธกเนˆเนƒเธซเน‰เน„เธ”เธฃเธŸเนŒเธ‚เธญเธ‡เธ„เธธเธ“เธ›เธฃเธฒเธเธเธšเธ™ <b>comma connect</b> เธ‹เธถเนˆเธ‡เธญเธฒเธˆเธชเนˆเธ‡เธœเธฅเธ•เนˆเธญเธเธฒเธฃเธ”เธตเธšเธฑเธเนเธฅเธฐเธเธฒเธฃเธชเธ™เธฑเธšเธชเธ™เธธเธ™! + WARNING: This will prevent your drives from being uploaded to <b>comma connect</b> which will impact debugging and official support from comma! + เธ„เธณเน€เธ•เธทเธญเธ™: เธเธฒเธฃเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ™เธตเน‰เธˆเธฐเธ›เน‰เธญเธ‡เธเธฑเธ™เน„เธกเนˆเนƒเธซเน‰เธญเธฑเธ›เน‚เธซเธฅเธ”เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ‚เธญเธ‡เธ„เธธเธ“เน„เธ›เธขเธฑเธ‡ <b>comma connect</b> เธ‹เธถเนˆเธ‡เธˆเธฐเธเธฃเธฐเธ—เธšเธ•เนˆเธญเธเธฒเธฃเธ”เธตเธšเธฑเธเนเธฅเธฐเธเธฒเธฃเธชเธ™เธฑเธšเธชเธ™เธธเธ™เธญเธขเนˆเธฒเธ‡เน€เธ›เน‡เธ™เธ—เธฒเธ‡เธเธฒเธฃเธˆเธฒเธ comma! - Prevent the device from sending any data to <b>comma</b>'s servers. - เธ›เน‰เธญเธ‡เธเธฑเธ™เน„เธกเนˆเนƒเธซเน‰เธญเธธเธ›เธเธฃเธ“เนŒเธชเนˆเธ‡เธ‚เน‰เธญเธกเธนเธฅเน„เธ›เธขเธฑเธ‡เน€เธ‹เธดเธฃเนŒเธŸเน€เธงเธญเธฃเนŒเธ‚เธญเธ‡ <b>comma</b> + <b>Prevent the device from uploading driving data.</b> + <b>เธ›เน‰เธญเธ‡เธเธฑเธ™เน„เธกเนˆเนƒเธซเน‰เธญเธธเธ›เธเธฃเธ“เนŒเธญเธฑเธ›เน‚เธซเธฅเธ”เธ‚เน‰เธญเธกเธนเธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ</b> - Increase Thermal Safety Limit - เน€เธžเธดเนˆเธกเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเธ›เธฅเธญเธ”เธ เธฑเธขเธ—เธฒเธ‡เธ„เธงเธฒเธกเธฃเน‰เธญเธ™ + High-Quality Recording + เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธ„เธธเธ“เธ เธฒเธžเธชเธนเธ‡ - WARNING: This can damage your device by exceeding safe temperature limits! - เธ„เธณเน€เธ•เธทเธญเธ™: เธชเธดเนˆเธ‡เธ™เธตเน‰เธญเธฒเธˆเธ—เธณเนƒเธซเน‰เธญเธธเธ›เธเธฃเธ“เนŒเธ‚เธญเธ‡เธ„เธธเธ“เน€เธชเธตเธขเธซเธฒเธขเน‚เธ”เธขเธเธฒเธฃเน€เธเธดเธ™เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธญเธธเธ“เธซเธ เธนเธกเธดเธ—เธตเนˆเธ›เธฅเธญเธ”เธ เธฑเธข! + <b>Save drive footage in higher video quality.</b> + <b>เธšเธฑเธ™เธ—เธถเธเธ เธฒเธžเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ”เน‰เธงเธขเธ„เธธเธ“เธ เธฒเธžเธงเธดเธ”เธตเน‚เธญเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™</b> - Allow the device to run hotter than comma recommended limit. - เธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เธญเธธเธ›เธเธฃเธ“เนŒเธ—เธณเธ‡เธฒเธ™เธ—เธตเนˆเธญเธธเธ“เธซเธ เธนเธกเธดเธชเธนเธ‡เธเธงเนˆเธฒเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ—เธตเนˆเนเธ™เธฐเธ™เธณเน‚เธ”เธข comma. + Low-Voltage Cutoff + เธ•เธฑเธ”เธเธฒเธฃเธ—เธณเธ‡เธฒเธ™เน€เธกเธทเนˆเธญเนเธฃเธ‡เธ”เธฑเธ™เธ•เนˆเธณ - Use Konik's Server Instead of comma's - เนƒเธŠเน‰เน€เธ‹เธดเธฃเนŒเธŸเน€เธงเธญเธฃเนŒเธ‚เธญเธ‡ Konik เนเธ—เธ™ comma's + <b>While parked, if the battery voltage falls below the set level, the device shuts down</b> to prevent excessive battery drain. + <b>เธ‚เธ“เธฐเธˆเธญเธ” เธซเธฒเธเนเธฃเธ‡เธ”เธฑเธ™เนเธšเธ•เน€เธ•เธญเธฃเธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธฃเธฐเธ”เธฑเธšเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰ เธญเธธเธ›เธเธฃเธ“เนŒเธˆเธฐเธ›เธดเธ”เธ•เธฑเธงเธฅเธ‡</b> เน€เธžเธทเนˆเธญเธ›เน‰เธญเธ‡เธเธฑเธ™เธเธฒเธฃเนƒเธŠเน‰เนเธšเธ•เน€เธ•เธญเธฃเธตเนˆเธกเธฒเธเน€เธเธดเธ™เน„เธ› - Upload your driving data to <b>connect.konik.ai</b> instead of <b>connect.comma.ai</b>. - เธญเธฑเธ›เน‚เธซเธฅเธ”เธ‚เน‰เธญเธกเธนเธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ‚เธญเธ‡เธ„เธธเธ“เน„เธ›เธ—เธตเนˆ <b>connect.konik.ai</b> เนเธ—เธ™ <b>connect.comma.ai</b> + Raise Temperature Limits + เน€เธžเธดเนˆเธกเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธญเธธเธ“เธซเธ เธนเธกเธด + + + WARNING: Running at higher temperatures may damage your device! + เธ„เธณเน€เธ•เธทเธญเธ™: เธเธฒเธฃเธ—เธณเธ‡เธฒเธ™เธ—เธตเนˆเธญเธธเธ“เธซเธ เธนเธกเธดเธชเธนเธ‡เธ‚เธถเน‰เธ™เธญเธฒเธˆเธ—เธณเนƒเธซเน‰เธญเธธเธ›เธเธฃเธ“เนŒเธ‚เธญเธ‡เธ„เธธเธ“เน€เธชเธตเธขเธซเธฒเธข! + + + <b>Allow the device to run at higher temperatures</b> before throttling or shutting down. Use only if you understand the risks! + <b>เธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เธญเธธเธ›เธเธฃเธ“เนŒเธ—เธณเธ‡เธฒเธ™เธ—เธตเนˆเธญเธธเธ“เธซเธ เธนเธกเธดเธชเธนเธ‡เธ‚เธถเน‰เธ™</b> เธเนˆเธญเธ™เธˆเธฐเธฅเธ”เธ›เธฃเธฐเธชเธดเธ—เธ˜เธดเธ เธฒเธžเธซเธฃเธทเธญเธ›เธดเธ”เน€เธ„เธฃเธทเนˆเธญเธ‡ เนƒเธŠเน‰เน€เธ‰เธžเธฒเธฐเน€เธกเธทเนˆเธญเธ„เธธเธ“เน€เธ‚เน‰เธฒเนƒเธˆเธ„เธงเธฒเธกเน€เธชเธตเนˆเธขเธ‡! + + + Use Konik Server + เนƒเธŠเน‰ Konik Server + + + <b>Upload driving data to "connect.konik.ai" instead of "connect.comma.ai".</b> + <b>เธญเธฑเธ›เน‚เธซเธฅเธ”เธ‚เน‰เธญเธกเธนเธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเน„เธ›เธขเธฑเธ‡ "connect.konik.ai" เนเธ—เธ™ "connect.comma.ai"</b> Screen Settings - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธซเธ™เน‰เธฒเธˆเธญ + เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธซเธ™เน‰เธฒเธˆเธญ - Settings that control screen behavior. - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ—เธตเนˆเธ„เธงเธšเธ„เธธเธกเธžเธคเธ•เธดเธเธฃเธฃเธกเธซเธ™เน‰เธฒเธˆเธญ + <b>Settings that control screen brightness, screen recording, and timeout duration.</b> + <b>เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ—เธตเนˆเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเธชเธงเนˆเธฒเธ‡เธซเธ™เน‰เธฒเธˆเธญ เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธซเธ™เน‰เธฒเธˆเธญ เนเธฅเธฐเธฃเธฐเธขเธฐเน€เธงเธฅเธฒเน„เธ—เธกเนŒเน€เธญเธฒเธ•เนŒ</b> Screen Brightness (Offroad) - เธ„เธงเธฒเธกเธชเธงเนˆเธฒเธ‡เธซเธ™เน‰เธฒเธˆเธญ (เธญเธญเธŸเน‚เธฃเธ”) + เธ„เธงเธฒเธกเธชเธงเนˆเธฒเธ‡เธซเธ™เน‰เธฒเธˆเธญ (เธ‚เธ“เธฐเธญเธญเธŸเน‚เธฃเธ”) - The screen brightness when not driving. - เธ„เธงเธฒเธกเธชเธงเนˆเธฒเธ‡เธ‚เธญเธ‡เธซเธ™เน‰เธฒเธˆเธญเน€เธกเธทเนˆเธญเน„เธกเนˆเน„เธ”เน‰เธ‚เธฑเธšเธฃเธ– + <b>The screen brightness while not driving.</b> + <b>เธ„เธงเธฒเธกเธชเธงเนˆเธฒเธ‡เธซเธ™เน‰เธฒเธˆเธญเน€เธกเธทเนˆเธญเน„เธกเนˆเน„เธ”เน‰เธ‚เธฑเธšเธ‚เธตเนˆ</b> Screen Brightness (Onroad) - เธ„เธงเธฒเธกเธชเธงเนˆเธฒเธ‡เธซเธ™เน‰เธฒเธˆเธญ (เธšเธ™เธ–เธ™เธ™) + เธ„เธงเธฒเธกเธชเธงเนˆเธฒเธ‡เธซเธ™เน‰เธฒเธˆเธญ (เธ‚เธ“เธฐเธ‚เธฑเธšเธšเธ™เธ–เธ™เธ™) - The screen brightness while driving. - เธ„เธงเธฒเธกเธชเธงเนˆเธฒเธ‡เธซเธ™เน‰เธฒเธˆเธญเธ‚เธ“เธฐเธ‚เธฑเธšเธฃเธ– + <b>The screen brightness while driving.</b> + <b>เธ„เธงเธฒเธกเธชเธงเนˆเธฒเธ‡เธซเธ™เน‰เธฒเธˆเธญเธ‚เธ“เธฐเธ‚เธฑเธšเธฃเธ–</b> Screen Recorder - เน€เธ„เธฃเธทเนˆเธญเธ‡เธšเธฑเธ™เธ—เธถเธเธซเธ™เน‰เธฒเธˆเธญ + เธ•เธฑเธงเธšเธฑเธ™เธ—เธถเธเธซเธ™เน‰เธฒเธˆเธญ - Enable a button in the driving screen to record the screen. - เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธ›เธธเนˆเธกเนƒเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเน€เธžเธทเนˆเธญเธšเธฑเธ™เธ—เธถเธเธซเธ™เน‰เธฒเธˆเธญ + <b>Add a button to the driving screen to record the display.</b> + <b>เน€เธžเธดเนˆเธกเธ›เธธเนˆเธกเนƒเธ™เธซเธ™เน‰เธฒเธˆเธญเธ‚เธฑเธšเธ‚เธตเนˆเน€เธžเธทเนˆเธญเธšเธฑเธ™เธ—เธถเธเธเธฒเธฃเนเธชเธ”เธ‡เธœเธฅ</b> Screen Timeout (Offroad) - เธซเธกเธ”เน€เธงเธฅเธฒเธซเธ™เน‰เธฒเธˆเธญ (เธญเธญเธŸเน‚เธฃเธ”) + เธซเธกเธ”เน€เธงเธฅเธฒเธซเธ™เน‰เธฒเธˆเธญ (เธ™เธญเธเธ–เธ™เธ™) - How long it takes for the screen to turn off when not driving. - เนƒเธŠเน‰เน€เธงเธฅเธฒเธ™เธฒเธ™เน€เธ—เนˆเธฒเนƒเธ”เธเธงเนˆเธฒเธซเธ™เน‰เธฒเธˆเธญเธˆเธฐเธ›เธดเธ”เน€เธกเธทเนˆเธญเน„เธกเนˆเน„เธ”เน‰เธ‚เธฑเธšเธฃเธ– + <b>How long the screen stays on after being tapped while not driving.</b> + <b>เธฃเธฐเธขเธฐเน€เธงเธฅเธฒเธ—เธตเนˆเธซเธ™เน‰เธฒเธˆเธญเธ„เธ‡เธชเธงเนˆเธฒเธ‡เธซเธฅเธฑเธ‡เธˆเธฒเธเธ–เธนเธเนเธ•เธฐเน€เธกเธทเนˆเธญเน„เธกเนˆเน„เธ”เน‰เธ‚เธฑเธšเธฃเธ–</b> Screen Timeout (Onroad) - เธซเธกเธ”เน€เธงเธฅเธฒเธซเธ™เน‰เธฒเธˆเธญ (เธ‚เธ“เธฐเธ‚เธฑเธšเธ‚เธตเนˆ) + เธซเธกเธ”เน€เธงเธฅเธฒเธซเธ™เน‰เธฒเธˆเธญ (เธ‚เธ“เธฐเธ‚เธฑเธš) - How long it takes for the screen to turn off while driving. - เนƒเธŠเน‰เน€เธงเธฅเธฒเธ™เธฒเธ™เน€เธ—เนˆเธฒเนƒเธ”เธเธงเนˆเธฒเธซเธ™เน‰เธฒเธˆเธญเธˆเธฐเธ›เธดเธ”เธ‚เธ“เธฐเธ‚เธฑเธšเธฃเธ– + <b>How long the screen stays on after being tapped while driving.</b> + <b>เธฃเธฐเธขเธฐเน€เธงเธฅเธฒเธ—เธตเนˆเธซเธ™เน‰เธฒเธˆเธญเธขเธฑเธ‡เธ„เธ‡เน€เธ›เธดเธ”เธซเธฅเธฑเธ‡เธˆเธฒเธเธ–เธนเธเนเธ•เธฐเธ‚เธ“เธฐเธ‚เธฑเธšเธฃเธ–</b> + + + Standby Mode + เน‚เธซเธกเธ”เธชเนเธ•เธ™เธ”เนŒเธšเธฒเธข + + + <b>Turn the screen off while driving and automatically wake it up for alerts or engagement state changes.</b> + <b>เธ›เธดเธ”เธซเธ™เน‰เธฒเธˆเธญเธฃเธฐเธซเธงเนˆเธฒเธ‡เธ‚เธฑเธš เนเธฅเธฐเธ›เธฅเธธเธเธ‚เธถเน‰เธ™เธกเธฒเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน€เธกเธทเนˆเธญเธกเธตเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธซเธฃเธทเธญเธกเธตเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธชเธ–เธฒเธ™เธฐเธเธฒเธฃเนƒเธŠเน‰เธ‡เธฒเธ™</b> 5 mins - 5 เธ™เธฒเธ—เธต + 5 เธ™เธฒเธ—เธต mins - เธ™เธฒเธ—เธต + เธ™เธฒเธ—เธต hour - เธŠเธฑเนˆเธงเน‚เธกเธ‡ + เธŠเธฑเนˆเธงเน‚เธกเธ‡ hours - เธŠเธฑเนˆเธงเน‚เธกเธ‡ + เธŠเธฑเนˆเธงเน‚เธกเธ‡ - Only Disable While Onroad - เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เน€เธ‰เธžเธฒเธฐเธ‚เธ“เธฐเธญเธขเธนเนˆเธšเธ™เธ–เธ™เธ™ + Disable Onroad Only + เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เน€เธ‰เธžเธฒเธฐเธ‚เธ“เธฐเธ‚เธฑเธšเธšเธ™เธ–เธ™เธ™ volts - เน‚เธงเธฅเธ•เนŒ + เน‚เธงเธฅเธ•เนŒ Screen Off - เธ›เธดเธ”เธซเธ™เน‰เธฒเธˆเธญ + เธ›เธดเธ”เธซเธ™เน‰เธฒเธˆเธญ Auto - เธญเธญเน‚เธ•เน‰ + เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด Start Recording - เน€เธฃเธดเนˆเธกเธšเธฑเธ™เธ—เธถเธ + เน€เธฃเธดเนˆเธกเธšเธฑเธ™เธ—เธถเธ Stop Recording - เธซเธขเธธเธ”เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธ + เธซเธขเธธเธ”เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธ seconds - เธงเธดเธ™เธฒเธ—เธต - - - High Bitrate Recording - เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธšเธดเธ•เน€เธฃเธ•เธชเธนเธ‡ - - - Record driving footage at double the standard bitrate for improved video quality in driving logs. - เธšเธฑเธ™เธ—เธถเธเธ เธฒเธžเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเธšเธดเธ•เน€เธฃเธ•เน€เธ›เน‡เธ™เธชเธญเธ‡เน€เธ—เนˆเธฒเธ‚เธญเธ‡เธกเธฒเธ•เธฃเธเธฒเธ™เน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเธ›เธฃเธธเธ‡เธ„เธธเธ“เธ เธฒเธžเธงเธดเธ”เธตเน‚เธญเนƒเธ™เธšเธฑเธ™เธ—เธถเธเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + เธงเธดเธ™เธฒเธ—เธต FrogPilotLateralPanel Advanced Lateral Tuning - เธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เธ‚เธฑเน‰เธ™เธชเธนเธ‡ + เธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เธ‚เธฑเน‰เธ™เธชเธนเธ‡ - Advanced settings for fine-tuning openpilot's lateral controls. - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ‚เธฑเน‰เธ™เธชเธนเธ‡เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เธ‚เธญเธ‡ openpilot + <b>Advanced steering control changes to fine-tune how openpilot drives.</b> + <b>เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธ‚เธฑเน‰เธ™เธชเธนเธ‡เน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเธˆเธนเธ™เนƒเธซเน‰ openpilot เธ‚เธฑเธšเน„เธ”เน‰เธฅเธฐเน€เธญเธตเธขเธ”เธ‚เธถเน‰เธ™</b> Actuator Delay (Default: %1) - เธ„เธงเธฒเธกเธฅเนˆเธฒเธŠเน‰เธฒเธ‚เธญเธ‡เธ•เธฑเธงเธเธฃเธฐเธ•เธธเน‰เธ™ (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) + เธ„เธงเธฒเธกเธฅเนˆเธฒเธŠเน‰เธฒเธ‚เธญเธ‡เนเธญเธ„เธŠเธนเน€เธญเน€เธ•เธญเธฃเนŒ (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) Actuator Delay - เธ„เธงเธฒเธกเธฅเนˆเธฒเธŠเน‰เธฒเธ‚เธญเธ‡เธ•เธฑเธงเธเธฃเธฐเธ•เธธเน‰เธ™ + เธ„เธงเธฒเธกเธฅเนˆเธฒเธŠเน‰เธฒเธ‚เธญเธ‡เนเธญเธเธŠเธนเน€เธญเน€เธ•เธญเธฃเนŒ - How long the steering wheel takes to respond to commands. Higher values account for slower steering; lower values for quicker response. - เธฃเธฐเธขเธฐเน€เธงเธฅเธฒเธ—เธตเนˆเธžเธงเธ‡เธกเธฒเธฅเธฑเธขเนƒเธŠเน‰เนƒเธ™เธเธฒเธฃเธ•เธญเธšเธชเธ™เธญเธ‡เธ•เนˆเธญเธ„เธณเธชเธฑเนˆเธ‡ เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธซเธกเธฒเธขเธ–เธถเธ‡เธเธฒเธฃเธšเธฑเธ‡เธ„เธฑเธšเน€เธฅเธตเน‰เธขเธงเธ—เธตเนˆเธŠเน‰เธฒเธฅเธ‡; เธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธฅเธ‡เธซเธกเธฒเธขเธ–เธถเธ‡เธเธฒเธฃเธ•เธญเธšเธชเธ™เธญเธ‡เธ—เธตเนˆเธฃเธงเธ”เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™ + <b>The time between openpilot's steering command and the vehicle's response.</b> Increase if the vehicle reacts late; decrease if it feels jumpy. Auto-learned by default. + <b>เธŠเนˆเธงเธ‡เน€เธงเธฅเธฒเธฃเธฐเธซเธงเนˆเธฒเธ‡เธ„เธณเธชเธฑเนˆเธ‡เธšเธฑเธ‡เธ„เธฑเธšเน€เธฅเธตเน‰เธขเธงเธ‚เธญเธ‡ openpilot เธเธฑเธšเธเธฒเธฃเธ•เธญเธšเธชเธ™เธญเธ‡เธ‚เธญเธ‡เธฃเธ–</b> เน€เธžเธดเนˆเธกเธ„เนˆเธฒเธ™เธตเน‰เธซเธฒเธเธฃเธ–เธ•เธญเธšเธชเธ™เธญเธ‡เธฅเนˆเธฒเธŠเน‰เธฒ; เธฅเธ”เธ„เนˆเธฒเธ™เธตเน‰เธซเธฒเธเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธ•เธธเธ เน€เธฃเธตเธขเธ™เธฃเธนเน‰เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน‚เธ”เธขเธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ Friction (Default: %1) - เนเธฃเธ‡เน€เธชเธตเธขเธ”เธ—เธฒเธ™ (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) + เนเธฃเธ‡เน€เธชเธตเธขเธ”เธ—เธฒเธ™ (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) Friction - เนเธฃเธ‡เน€เธชเธตเธขเธ”เธ—เธฒเธ™ + เนเธฃเธ‡เน€เธชเธตเธขเธ”เธ—เธฒเธ™ - Adjust steering resistance. Higher values feel more stable but heavier; lower values feel lighter but more sensitive. - เธ›เธฃเธฑเธšเธ„เธงเธฒเธกเธ•เน‰เธฒเธ™เธ—เธฒเธ™เธ‚เธญเธ‡เธžเธงเธ‡เธกเธฒเธฅเธฑเธข เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธฃเธนเน‰เธชเธถเธเธกเธฑเนˆเธ™เธ„เธ‡เธกเธฒเธเธ‚เธถเน‰เธ™เนเธ•เนˆเธซเธ™เธฑเธเธ‚เธถเน‰เธ™; เธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธฅเธ‡เธˆเธฐเธฃเธนเน‰เธชเธถเธเน€เธšเธฒเธ‚เธถเน‰เธ™เนเธ•เนˆเน„เธงเธ•เนˆเธญเธเธฒเธฃเธ•เธญเธšเธชเธ™เธญเธ‡เธกเธฒเธเธ‚เธถเน‰เธ™ + <b>Compensates for steering friction.</b> Increase if the wheel sticks near center; decrease if it jitters. Auto-learned by default. + <b>เธŠเธ”เน€เธŠเธขเนเธฃเธ‡เน€เธชเธตเธขเธ”เธ—เธฒเธ™เธ‚เธญเธ‡เธžเธงเธ‡เธกเธฒเธฅเธฑเธข</b> เน€เธžเธดเนˆเธกเธ„เนˆเธฒเธ™เธตเน‰เธซเธฒเธเธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธ•เธดเธ”เนƒเธเธฅเน‰เธเธถเนˆเธ‡เธเธฅเธฒเธ‡; เธฅเธ”เธซเธฒเธเธกเธตเธเธฒเธฃเธชเธฑเนˆเธ™เธเธฃเธฐเธ•เธธเธ เน€เธฃเธตเธขเธ™เธฃเธนเน‰เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน‚เธ”เธขเธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ Kp Factor (Default: %1) - เธ›เธฑเธˆเธˆเธฑเธข Kp (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) + เธ„เนˆเธฒ Kp (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) Kp Factor - เธ›เธฑเธˆเธˆเธฑเธข Kp + เธ•เธฑเธงเธ„เธนเธ“ Kp - How aggressively openpilot corrects steering. Higher values respond faster but may feel jerky; lower values are smoother but slower. - เธ„เธงเธฒเธกเธเน‰เธฒเธงเธฃเน‰เธฒเธงเนƒเธ™เธเธฒเธฃเนเธเน‰เน„เธ‚เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธ‚เธญเธ‡ openpilot เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธเธงเนˆเธฒเธˆเธฐเธ•เธญเธšเธชเธ™เธญเธ‡เน„เธ”เน‰เน€เธฃเน‡เธงเธเธงเนˆเธฒเนเธ•เนˆเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธ•เธธเธ เธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธฃเธฒเธšเธฃเธทเนˆเธ™เธเธงเนˆเธฒเนเธ•เนˆเธŠเน‰เธฒเธเธงเนˆเธฒ + <b>How strongly openpilot corrects lane position.</b> Higher is tighter but twitchier; lower is smoother but slower. Auto-learned by default. + <b>เธ„เธงเธฒเธกเน€เธ‚เน‰เธกเธ‚เน‰เธ™เธ—เธตเนˆ openpilot เธ›เธฃเธฑเธšเธ•เธณเนเธซเธ™เนˆเธ‡เธฃเธ–เนƒเธ™เน€เธฅเธ™</b> เธ„เนˆเธฒเธชเธนเธ‡เธˆเธฐเนเธ™เนˆเธ™เนเธ•เนˆเน„เธงเน€เธเธดเธ™; เธ„เนˆเธฒเธ•เนˆเธณเธˆเธฐเธ™เธธเนˆเธกเธ™เธงเธฅเธเธงเนˆเธฒเนเธ•เนˆเธŠเน‰เธฒเธเธงเนˆเธฒ เน€เธฃเธตเธขเธ™เธฃเธนเน‰เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน‚เธ”เธขเธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ - Lateral Accel (Default: %1) - เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡ (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) + Lateral Acceleration (Default: %1) + เธญเธฑเธ•เธฃเธฒเน€เธฃเนˆเธ‡เธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡ (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) - Lateral Accel - เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡ + Lateral Acceleration + เธ„เธงเธฒเธกเน€เธฃเนˆเธ‡เธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡ - How quickly openpilot makes lateral adjustments. Higher values allow sharper turns; lower values provide smoother steering. - เธ„เธงเธฒเธกเน€เธฃเน‡เธงเนƒเธ™เธเธฒเธฃเธ›เธฃเธฑเธšเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เธ‚เธญเธ‡ openpilot เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธŠเนˆเธงเธขเนƒเธซเน‰เน€เธฅเธตเน‰เธขเธงเน„เธ”เน‰เธ„เธกเธ‚เธถเน‰เธ™; เธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธฅเธ‡เนƒเธซเน‰เธเธฒเธฃเธšเธฑเธ‡เธ„เธฑเธšเน€เธฅเธตเน‰เธขเธงเธ—เธตเนˆเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™ + <b>Maps steering torque to turning response.</b> Increase for sharper turns; decrease for gentler steering. Auto-learned by default. + <b>เนเธกเธ›เนเธฃเธ‡เธšเธดเธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธเธฑเธšเธเธฒเธฃเธ•เธญเธšเธชเธ™เธญเธ‡เธเธฒเธฃเน€เธฅเธตเน‰เธขเธง</b> เน€เธžเธดเนˆเธกเธ„เนˆเธฒเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเน€เธฅเธตเน‰เธขเธงเธ„เธก เธฅเธ”เธ„เนˆเธฒเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเน€เธฅเธตเน‰เธขเธงเธ™เธธเนˆเธกเธ™เธงเธฅ เน€เธฃเธตเธขเธ™เธฃเธนเน‰เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน‚เธ”เธขเธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ Steer Ratio (Default: %1) - เธญเธฑเธ•เธฃเธฒเธ—เธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธข (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) + เธญเธฑเธ•เธฃเธฒเธ—เธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธข (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) Steer Ratio - เธญเธฑเธ•เธฃเธฒเธ—เธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธข + เธญเธฑเธ•เธฃเธฒเธ—เธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธข - How much the steering wheel turns in response to commands. Higher values feel more stable; lower values feel quicker. - เธเธฒเธฃเธซเธกเธธเธ™เธ‚เธญเธ‡เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธ•เธญเธšเธชเธ™เธญเธ‡เธ•เนˆเธญเธ„เธณเธชเธฑเนˆเธ‡เธกเธฒเธเน€เธžเธตเธขเธ‡เนƒเธ” เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธเธงเนˆเธฒเธˆเธฐเธฃเธนเน‰เธชเธถเธเธกเธฑเนˆเธ™เธ„เธ‡เธกเธฒเธเธ‚เธถเน‰เธ™; เธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธฃเธนเน‰เธชเธถเธเน€เธฃเน‡เธงเธ‚เธถเน‰เธ™ + <b>The relationship between steering wheel rotation and road wheel angle.</b> Increase if steering feels too quick or twitchy; decrease if it feels too slow or weak. Auto-learned by default. + <b>เธ„เธงเธฒเธกเธชเธฑเธกเธžเธฑเธ™เธ˜เนŒเธฃเธฐเธซเธงเนˆเธฒเธ‡เธเธฒเธฃเธซเธกเธธเธ™เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธเธฑเธšเธกเธธเธกเธฅเน‰เธญเธฃเธ–</b> เน€เธžเธดเนˆเธกเธซเธฒเธเธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธฃเธนเน‰เธชเธถเธเน„เธงเธซเธฃเธทเธญเธชเธฑเนˆเธ™เน€เธเธดเธ™เน„เธ›; เธฅเธ”เธซเธฒเธเธฃเธนเน‰เธชเธถเธเธŠเน‰เธฒเธซเธฃเธทเธญเธญเนˆเธญเธ™เนเธฃเธ‡ เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เน€เธฃเธตเธขเธ™เธฃเธนเน‰เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด - Force Auto Tune On - เธšเธฑเธ‡เธ„เธฑเธšเน€เธ›เธดเธ” Auto Tune + Force Auto-Tune On + เธšเธฑเธ‡เธ„เธฑเธšเน€เธ›เธดเธ”เธเธฒเธฃเธ›เธฃเธฑเธšเธˆเธนเธ™เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด - Force-enable commaโ€™s auto lateral tuning. - เธšเธฑเธ‡เธ„เธฑเธšเน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธเธฒเธฃเธ›เธฃเธฑเธšเธˆเธนเธ™เธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เธ‚เธญเธ‡เน€เธ„เธฃเธทเนˆเธญเธ‡เธซเธกเธฒเธขเธˆเธธเธฅเธ เธฒเธ„เน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด + <b>Force-enable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration".</b> + <b>เธšเธฑเธ‡เธ„เธฑเธšเน€เธ›เธดเธ”เธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเนเธšเธšเธชเธ”เธ‚เธญเธ‡ openpilot เธชเธณเธซเธฃเธฑเธš โ€œเนเธฃเธ‡เน€เธชเธตเธขเธ”เธ—เธฒเธ™โ€ เนเธฅเธฐ โ€œเธ„เธงเธฒเธกเน€เธฃเนˆเธ‡เธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡โ€</b> - Force Auto Tune Off - เธšเธฑเธ‡เธ„เธฑเธšเธ›เธดเธ”เธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด + Force Auto-Tune Off + เธšเธฑเธ‡เธ„เธฑเธšเธ›เธดเธ” Auto-Tune - Force-disable commaโ€™s auto lateral tuning. - เธšเธฑเธ‡เธ„เธฑเธšเธ›เธดเธ”เธเธฒเธฃเธ›เธฃเธฑเธšเธˆเธนเธ™เธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเธ‚เธญเธ‡ comma + <b>Force-disable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration" and use the set value instead.</b> + <b>เธšเธฑเธ‡เธ„เธฑเธšเธ›เธดเธ”เธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเนเธšเธšเธชเธ”เธ‚เธญเธ‡ openpilot เธชเธณเธซเธฃเธฑเธš "Friction" เนเธฅเธฐ "Lateral Acceleration" เนเธฅเธฐเนƒเธŠเน‰เธ„เนˆเธฒเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰เนเธ—เธ™</b> - Always on Lateral - เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เน€เธชเธกเธญ + Force Torque Controller + เธ•เธฑเธงเธ„เธงเธšเธ„เธธเธกเนเธฃเธ‡เธšเธดเธ”เนเธšเธšเธšเธฑเธ‡เธ„เธฑเธš - openpilot's steering control stays active even when the brake or gas pedals are pressed.<br><br>Deactivation only occurs with the <b>Cruise Control</b> button. - เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธ‚เธญเธ‡ openpilot เธขเธฑเธ‡เธ„เธ‡เธ—เธณเธ‡เธฒเธ™เธญเธขเธนเนˆเนเธกเน‰เน€เธกเธทเนˆเธญเน€เธซเธขเธตเธขเธšเน€เธšเธฃเธเธซเธฃเธทเธญเธ„เธฑเธ™เน€เธฃเนˆเธ‡<br><br>เธเธฒเธฃเธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธˆเธฐเน€เธเธดเธ”เธ‚เธถเน‰เธ™เน€เธ‰เธžเธฒเธฐเน€เธกเธทเนˆเธญเธเธ”เธ›เธธเนˆเธก <b>Cruise Control</b> เน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™ + <b>Use torque-based steering control instead of angle-based control for smoother lane keeping, especially in curves.</b> + <b>เนƒเธŠเน‰เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธžเธงเธ‡เธกเธฒเธฅเธฑเธขเนเธšเธšเนเธฃเธ‡เธšเธดเธ”เนเธ—เธ™เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเนเธšเธšเธกเธธเธกเน€เธžเธทเนˆเธญเธเธฒเธฃเธฃเธฑเธเธฉเธฒเน€เธฅเธ™เธ—เธตเนˆเธฃเธฒเธšเธฃเธทเนˆเธ™เธ‚เธถเน‰เธ™ เน‚เธ”เธขเน€เธ‰เธžเธฒเธฐเนƒเธ™เธ—เธฒเธ‡เน‚เธ„เน‰เธ‡</b> + + + Always On Lateral + เธเธฒเธฃเธšเธฑเธ‡เธ„เธฑเธšเน€เธฅเธตเน‰เธขเธงเธ—เธณเธ‡เธฒเธ™เธ•เธฅเธญเธ”เน€เธงเธฅเธฒ + + + <b>openpilot's steering remains active even when the accelerator or brake pedals are pressed.</b> + <b>เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธ‚เธญเธ‡ openpilot เธขเธฑเธ‡เธ„เธ‡เธ—เธณเธ‡เธฒเธ™เธญเธขเธนเนˆเนเธกเน‰เน€เธซเธขเธตเธขเธšเธ„เธฑเธ™เน€เธฃเนˆเธ‡เธซเธฃเธทเธญเน€เธšเธฃเธ</b> Enable With Cruise Control - เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธ”เน‰เธงเธขเธฃเธฐเธšเธšเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด + เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธžเธฃเน‰เธญเธกเธ„เธฃเธนเธ‹เธ„เธญเธ™เน‚เธ—เธฃเธฅ - Allow <b>Always on Lateral</b> to be active whenever <b>Cruise Control</b> is active, bypassing the need to enable openpilot first. - เธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰ <b>Always on Lateral</b> เธ—เธณเธ‡เธฒเธ™เน€เธกเธทเนˆเธญเนƒเธ”เธเน‡เธ•เธฒเธกเธ—เธตเนˆ <b>Cruise Control</b> เธ—เธณเธ‡เธฒเธ™ เน‚เธ”เธขเน„เธกเนˆเธˆเธณเน€เธ›เน‡เธ™เธ•เน‰เธญเธ‡เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™ openpilot เธเนˆเธญเธ™ + <b>Enable "Always On Lateral" whenever "Cruise Control" is on, even when openpilot is not engaged.</b> + <b>เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™ "Always On Lateral" เธ—เธธเธเธ„เธฃเธฑเน‰เธ‡เธ—เธตเนˆ "Cruise Control" เธ—เธณเธ‡เธฒเธ™ เนเธกเน‰เน€เธกเธทเนˆเธญ openpilot เน„เธกเนˆเน„เธ”เน‰เธ—เธณเธ‡เธฒเธ™เธญเธขเธนเนˆ</b> - Enable With LKAS Button - เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธ”เน‰เธงเธขเธ›เธธเนˆเธก LKAS + Enable With LKAS + เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธžเธฃเน‰เธญเธกเธเธฑเธš LKAS - Allow <b>Always on Lateral</b> to be active whenever <b>LKAS</b> is active, bypassing the need to enable openpilot first. - เธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰ <b>Always on Lateral</b> เธ—เธณเธ‡เธฒเธ™เน€เธกเธทเนˆเธญเนƒเธ”เธเน‡เธ•เธฒเธกเธ—เธตเนˆ <b>LKAS</b> เธ—เธณเธ‡เธฒเธ™ เน‚เธ”เธขเน„เธกเนˆเธˆเธณเน€เธ›เน‡เธ™เธ•เน‰เธญเธ‡เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™ openpilot เธเนˆเธญเธ™ + <b>Enable "Always On Lateral" whenever "LKAS" is on, even when openpilot is not engaged.</b> + <b>เน€เธ›เธดเธ”เนƒเธŠเน‰ "Always On Lateral" เธ—เธธเธเธ„เธฃเธฑเน‰เธ‡เธ—เธตเนˆ "LKAS" เน€เธ›เธดเธ”เธญเธขเธนเนˆ เนเธกเน‰ openpilot เธˆเธฐเน„เธกเนˆเธ–เธนเธเนƒเธŠเน‰เธ‡เธฒเธ™เธเน‡เธ•เธฒเธก</b> - Pause on Brake Below - เธซเธขเธธเธ”เธšเธ™เน€เธšเธฃเธเธ”เน‰เธฒเธ™เธฅเนˆเธฒเธ‡ + Pause on Brake Press Below + เธซเธขเธธเธ”เธŠเธฑเนˆเธงเธ„เธฃเธฒเธงเน€เธกเธทเนˆเธญเน€เธซเธขเธตเธขเธšเน€เธšเธฃเธเธ•เนˆเธณเธเธงเนˆเธฒ - Temporarily pause <b>Always on Lateral</b> below the set speed when braking. - เธซเธขเธธเธ”เธŠเธฑเนˆเธงเธ„เธฃเธฒเธง <b>Always on Lateral</b> เธ”เน‰เธฒเธ™เธฅเนˆเธฒเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰เน€เธกเธทเนˆเธญเน€เธšเธฃเธ + <b>Pause "Always On Lateral" below the set speed while the brake pedal is pressed.</b> + <b>เธซเธขเธธเธ”เธŠเธฑเนˆเธงเธ„เธฃเธฒเธง "Always On Lateral" เธ”เน‰เธฒเธ™เธฅเนˆเธฒเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰เธ‚เธ“เธฐเน€เธซเธขเธตเธขเธšเนเธ›เน‰เธ™เน€เธšเธฃเธ</b> Lane Changes - เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™ + เน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™ - Customize how openpilot performs lane changes. - เธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธงเธดเธ˜เธตเธ—เธตเนˆ openpilot เธ—เธณเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™ + <b>Allow openpilot to change lanes.</b> + <b>เธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰ openpilot เน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™</b> Automatic Lane Changes - เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด + เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด - Change lanes automatically when the turn signal is on. No steering input needed! - เน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน€เธกเธทเนˆเธญเน€เธ›เธดเธ”เธชเธฑเธเธเธฒเธ“เน„เธŸเน€เธฅเธตเน‰เธขเธง เน„เธกเนˆเธ•เน‰เธญเธ‡เนƒเธŠเน‰เธเธฒเธฃเธšเธฑเธ‡เธ„เธฑเธšเน€เธฅเธตเน‰เธขเธง! + <b>When the turn signal is on, openpilot will automatically change lanes.</b> No steering-wheel nudge required! + <b>เน€เธกเธทเนˆเธญเน€เธ›เธดเธ”เน„เธŸเน€เธฅเธตเน‰เธขเธง openpilot เธˆเธฐเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™เน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด</b> เน„เธกเนˆเธ•เน‰เธญเธ‡เธ”เธฑเธ™เธžเธงเธ‡เธกเธฒเธฅเธฑเธข! Lane Change Delay - เธ„เธงเธฒเธกเธฅเนˆเธฒเธŠเน‰เธฒเนƒเธ™เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™ + เธซเธ™เนˆเธงเธ‡เน€เธงเธฅเธฒเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™ - Delay automatic lane changes by the set amount of time. - เธซเธ™เนˆเธงเธ‡เน€เธงเธฅเธฒเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเธ•เธฒเธกเน€เธงเธฅเธฒเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰ + <b>Delay between turn signal activation and the start of an automatic lane change.</b> + <b>เธ„เธงเธฒเธกเธฅเนˆเธฒเธŠเน‰เธฒเธฃเธฐเธซเธงเนˆเธฒเธ‡เธเธฒเธฃเน€เธ›เธดเธ”เน„เธŸเน€เธฅเธตเน‰เธขเธงเธเธฑเธšเธเธฒเธฃเน€เธฃเธดเนˆเธกเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด</b> Minimum Lane Change Speed - เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธฑเน‰เธ™เธ•เนˆเธณเนƒเธ™เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™ + เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธฑเน‰เธ™เธ•เนˆเธณเนƒเธ™เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™ - Minimum speed required for openpilot to perform a lane change. - เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธฑเน‰เธ™เธ•เนˆเธณเธ—เธตเนˆเธ•เน‰เธญเธ‡เธเธฒเธฃเธชเธณเธซเธฃเธฑเธš openpilot เนƒเธ™เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™ + <b>Lowest speed at which openpilot will change lanes.</b> + <b>เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ•เนˆเธณเธชเธธเธ”เธ—เธตเนˆ openpilot เธˆเธฐเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™</b> Minimum Lane Width - เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เน€เธฅเธ™เธ‚เธฑเน‰เธ™เธ•เนˆเธณ + เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธŠเนˆเธญเธ‡เธ—เธฒเธ‡เธ‚เธฑเน‰เธ™เธ•เนˆเธณ - openpilot won't initiate a lane change into a lane narrower than this width. - openpilot เธˆเธฐเน„เธกเนˆเน€เธฃเธดเนˆเธกเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™เน„เธ›เธขเธฑเธ‡เน€เธฅเธ™เธ—เธตเนˆเนเธ„เธšเธเธงเนˆเธฒเธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ™เธตเน‰ + <b>Prevent automatic lane changes into lanes narrower than the set width.</b> + <b>เธ›เน‰เธญเธ‡เธเธฑเธ™เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน„เธ›เธขเธฑเธ‡เน€เธฅเธ™เธ—เธตเนˆเนเธ„เธšเธเธงเนˆเธฒเธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰</b> One Lane Change Per Signal - เน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™เธซเธ™เธถเนˆเธ‡เธ„เธฃเธฑเน‰เธ‡เธ•เนˆเธญเธชเธฑเธเธเธฒเธ“ + เน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™เธ„เธฃเธฑเน‰เธ‡เน€เธ”เธตเธขเธงเธ•เนˆเธญเธชเธฑเธเธเธฒเธ“ - Limit lane changes to one per turn signal activation. - เธˆเธณเธเธฑเธ”เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™เนƒเธซเน‰เน€เธ›เน‡เธ™เธซเธ™เธถเนˆเธ‡เธ„เธฃเธฑเน‰เธ‡เธ•เนˆเธญเธเธฒเธฃเน€เธ›เธดเธ”เธชเธฑเธเธเธฒเธ“เน„เธŸเน€เธฅเธตเน‰เธขเธง + <b>Limit automatic lane changes to one per turn-signal activation.</b> + <b>เธˆเธณเธเธฑเธ”เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเนƒเธซเน‰เน„เธ”เน‰เน€เธžเธตเธขเธ‡เธ„เธฃเธฑเน‰เธ‡เน€เธ”เธตเธขเธงเธ•เนˆเธญเธเธฒเธฃเน€เธ›เธดเธ”เธชเธฑเธเธเธฒเธ“เน„เธŸเน€เธฅเธตเน‰เธขเธงเธซเธ™เธถเนˆเธ‡เธ„เธฃเธฑเน‰เธ‡</b> Lateral Tuning - เธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡ + เธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡ - Settings for fine-tuning openpilot's lateral controls. - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เธ‚เธญเธ‡ openpilot + <b>Miscellaneous steering control changes</b> to fine-tune how openpilot drives. + <b>เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธญเธทเนˆเธ™เน†</b> เน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเธˆเธนเธ™เธงเธดเธ˜เธตเธเธฒเธฃเธ‚เธฑเธšเธ‚เธญเธ‡ openpilot เนƒเธซเน‰เธฅเธฐเน€เธญเธตเธขเธ”เธ‚เธถเน‰เธ™ Force Turn Desires Below Lane Change Speed - เธšเธฑเธ‡เธ„เธฑเธšเน€เธ›เธฅเธตเนˆเธขเธ™เธ„เธงเธฒเธกเธ•เน‰เธญเธ‡เธเธฒเธฃเธ•เนˆเธณเธเธงเนˆเธฒเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™ + เธšเธฑเธ‡เธ„เธฑเธšเธ„เธงเธฒเธกเธ•เธฑเน‰เธ‡เนƒเธˆเน€เธฅเธตเน‰เธขเธงเธ•เนˆเธณเธเธงเนˆเธฒเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™ - Force turn desires below the minimum lane change speed to improve turning accuracy. - เธšเธฑเธ‡เธ„เธฑเธšเนƒเธซเน‰เน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™เธ•เนˆเธณเธเธงเนˆเธฒเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธฑเน‰เธ™เธ•เนˆเธณเน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเธ›เธฃเธธเธ‡เธ„เธงเธฒเธกเนเธกเนˆเธ™เธขเธณเนƒเธ™เธเธฒเธฃเน€เธฅเธตเน‰เธขเธง - - - Neural Network Feedforward (NNFF) - เธŸเธตเธ”เธŸเธญเธฃเนŒเน€เธงเธดเธฃเนŒเธ”เธ‚เธญเธ‡เน‚เธ„เธฃเธ‡เธ‚เนˆเธฒเธขเธ›เธฃเธฐเธชเธฒเธ—เน€เธ—เธตเธขเธก (NNFF) - - - Use <b>Twilsoncoโ€™s</b> <b>Neural Network FeedForward</b> model for smoother, model-based steering trained on your vehicle's data. - เนƒเธŠเน‰เน‚เธกเน€เธ”เธฅ <b>Neural Network FeedForward</b> เธ‚เธญเธ‡ <b>Twilsonco</b> เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธšเธฑเธ‡เธ„เธฑเธšเน€เธฅเธตเน‰เธขเธงเธ—เธตเนˆเธฃเธฒเธšเธฃเธทเนˆเธ™เธ‚เธถเน‰เธ™ เน‚เธ”เธขเธญเธดเธ‡เธˆเธฒเธเน‚เธกเน€เธ”เธฅเธ—เธตเนˆเธเธถเธเธ”เน‰เธงเธขเธ‚เน‰เธญเธกเธนเธฅเธ‚เธญเธ‡เธฃเธ–เธขเธ™เธ•เนŒเธ‚เธญเธ‡เธ„เธธเธ“ - - - Smooth Curve Handling - เธเธฒเธฃเธˆเธฑเธ”เธเธฒเธฃเน€เธชเน‰เธ™เน‚เธ„เน‰เธ‡เธ—เธตเนˆเธฃเธฒเธšเธฃเธทเนˆเธ™ - - - Use <b>Twilsoncoโ€™s</b> torque-based adjustments to smooth out steering during curves. - เนƒเธŠเน‰เธเธฒเธฃเธ›เธฃเธฑเธšเธ•เธฒเธกเนเธฃเธ‡เธšเธดเธ”เธ‚เธญเธ‡ <b>Twilsonco</b> เน€เธžเธทเนˆเธญเธ—เธณเนƒเธซเน‰เธเธฒเธฃเธšเธฑเธ‡เธ„เธฑเธšเน€เธฅเธตเน‰เธขเธงเนƒเธ™เธŠเนˆเธงเธ‡เน‚เธ„เน‰เธ‡เธฃเธฒเธšเธฃเธทเนˆเธ™เธ‚เธถเน‰เธ™ + <b>While driving below the minimum lane change speed with an active turn signal, instruct openpilot to turn left/right.</b> + <b>เธ‚เธ“เธฐเธ‚เธฑเธšเธ”เน‰เธงเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ•เนˆเธณเธเธงเนˆเธฒเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธฑเน‰เธ™เธ•เนˆเธณเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™เนเธฅเธฐเน€เธ›เธดเธ”เน„เธŸเน€เธฅเธตเน‰เธขเธงเธญเธขเธนเนˆ เนƒเธซเน‰เธชเธฑเนˆเธ‡เนƒเธซเน‰ openpilot เน€เธฅเธตเน‰เธขเธงเธ‹เน‰เธฒเธข/เธ‚เธงเธฒ</b> Quality of Life - เธ„เธธเธ“เธ เธฒเธžเธŠเธตเธงเธดเธ• + เธ„เธธเธ“เธ เธฒเธžเธŠเธตเธงเธดเธ• - Miscellaneous features to improve the steering experience. - เธ„เธธเธ“เธชเธกเธšเธฑเธ•เธดเธ•เนˆเธฒเธ‡เน† เน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเธ›เธฃเธธเธ‡เธ›เธฃเธฐเธชเธšเธเธฒเธฃเธ“เนŒเธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธžเธงเธ‡เธกเธฒเธฅเธฑเธข + <b>Steering control changes to fine-tune how openpilot drives.</b> + <b>เธเธฒเธฃเธ›เธฃเธฑเธšเธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธžเธงเธ‡เธกเธฒเธฅเธฑเธขเน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเธˆเธนเธ™เธงเธดเธ˜เธตเธ—เธตเนˆ openpilot เธ‚เธฑเธš</b> Pause Steering Below - เธซเธขเธธเธ”เธเธฒเธฃเธšเธฑเธ‡เธ„เธฑเธšเน€เธฅเธตเน‰เธขเธงเธ”เน‰เธฒเธ™เธฅเนˆเธฒเธ‡ + เธซเธขเธธเธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธ•เนˆเธณเธเธงเนˆเธฒ - Temporarily pause steering control below the set speed. - เธซเธขเธธเธ”เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธŠเธฑเนˆเธงเธ„เธฃเธฒเธงเน€เธกเธทเนˆเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ•เนˆเธณเธเธงเนˆเธฒเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰ + <b>Pause steering below the set speed.</b> + <b>เธซเธขเธธเธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธŠเธฑเนˆเธงเธ„เธฃเธฒเธงเน€เธกเธทเนˆเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ•เนˆเธณเธเธงเนˆเธฒเธ„เนˆเธฒเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰</b> Instant - เธ—เธฑเธ™เธ—เธต + เธ—เธฑเธ™เธ—เธต second - เธ—เธตเนˆเธชเธญเธ‡ + เธงเธดเธ™เธฒเธ—เธต seconds - เธงเธดเธ™เธฒเธ—เธต - - - Are you sure you want to completely reset your <b>Actuator Delay</b>? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ• <b>Actuator Delay</b> เธ‚เธญเธ‡เธ„เธธเธ“เธ—เธฑเน‰เธ‡เธซเธกเธ”? - - - Are you sure you want to completely reset your <b>Friction</b>? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ• <b>Friction</b> เธ‚เธญเธ‡เธ„เธธเธ“เธ—เธฑเน‰เธ‡เธซเธกเธ”? - - - Are you sure you want to completely reset your <b>Kp Factor</b>? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ• <b>Kp Factor</b> เธ‚เธญเธ‡เธ„เธธเธ“เธ—เธฑเน‰เธ‡เธซเธกเธ”? - - - Are you sure you want to completely reset your <b>Lateral Accel</b>? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ• <b>Lateral Accel</b> เธ‚เธญเธ‡เธ„เธธเธ“เธ—เธฑเน‰เธ‡เธซเธกเธ”? - - - Are you sure you want to completely reset your <b>Steer Ratio</b>? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ• <b>Steer Ratio</b> เธ‚เธญเธ‡เธ„เธธเธ“เธ—เธฑเน‰เธ‡เธซเธกเธ”? - - - Off - เธ›เธดเธ” - - - foot - เน€เธ—เน‰เธฒ - - - feet - เธŸเธธเธ• - - - mph - mph - - - meter - เน€เธกเธ•เธฃ - - - meters - เน€เธกเธ•เธฃ - - - km/h - km/h + เธงเธดเธ™เธฒเธ—เธต Turn Signal Only - เน„เธŸเน€เธฅเธตเน‰เธขเธงเน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™ + เธชเธฑเธเธเธฒเธ“เน„เธŸเน€เธฅเธตเน‰เธขเธงเน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™ + + + Reset <b>Actuator Delay</b> to its default value? + เธฃเธตเน€เธ‹เน‡เธ• <b>Actuator Delay</b> เน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธซเธฃเธทเธญเน„เธกเนˆ? + + + Reset <b>Friction</b> to its default value? + เธฃเธตเน€เธ‹เน‡เธ•เธ„เนˆเธฒ <b>เนเธฃเธ‡เน€เธชเธตเธขเธ”เธ—เธฒเธ™</b> เน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธซเธฃเธทเธญเน„เธกเนˆ? + + + Reset <b>Kp Factor</b> to its default value? + เธฃเธตเน€เธ‹เน‡เธ• <b>Kp Factor</b> เน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธซเธฃเธทเธญเน„เธกเนˆ? + + + Reset <b>Lateral Accel</b> to its default value? + เธฃเธตเน€เธ‹เน‡เธ• <b>Lateral Accel</b> เน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธซเธฃเธทเธญเน„เธกเนˆ? + + + Reset <b>Steer Ratio</b> to its default value? + เธฃเธตเน€เธ‹เน‡เธ• <b>เธญเธฑเธ•เธฃเธฒเธ—เธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธข</b> เน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธซเธฃเธทเธญเน„เธกเนˆ? + + + Lateral Accel (Default: %1) + เธ„เธงเธฒเธกเน€เธฃเนˆเธ‡เธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡ (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) + + + Off + เธ›เธดเธ” + + + foot + เธŸเธธเธ• + + + feet + เธŸเธธเธ• + + + mph + เน„เธกเธฅเนŒ/เธŠเธก. + + + meter + เน€เธกเธ•เธฃ + + + meters + เน€เธกเธ•เธฃ + + + km/h + เธเธก./เธŠเธก. + + + Neural Network Feedforward (NNFF) + เธเธฒเธฃเธ›เน‰เธญเธ™เน€เธ”เธดเธ™เธซเธ™เน‰เธฒเน€เธ„เธฃเธทเธญเธ‚เนˆเธฒเธขเธ›เธฃเธฐเธชเธฒเธ— (NNFF) + + + <b>Twilsonco's "Neural Network FeedForward" model controller for smoother, model-based steering trained on your vehicle's data.</b> + <b>เธ„เธญเธ™เน‚เธ—เธฃเธฅเน€เธฅเธญเธฃเนŒเน‚เธกเน€เธ”เธฅ "Neural Network FeedForward" เธ‚เธญเธ‡ Twilsonco เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธšเธฑเธ‡เธ„เธฑเธšเน€เธฅเธตเน‰เธขเธงเธ—เธตเนˆเธ™เธธเนˆเธกเธ™เธงเธฅเธขเธดเนˆเธ‡เธ‚เธถเน‰เธ™เนเธšเธšเธญเธดเธ‡เน‚เธกเน€เธ”เธฅ เน‚เธ”เธขเธเธถเธเธ”เน‰เธงเธขเธ‚เน‰เธญเธกเธนเธฅเธˆเธฒเธเธฃเธ–เธ‚เธญเธ‡เธ„เธธเธ“</b> + + + Smooth Curve Handling + เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเน‚เธ„เน‰เธ‡เธญเธขเนˆเธฒเธ‡เธฃเธฒเธšเธฃเธทเนˆเธ™ + + + <b>Twilsonco's torque-based adjustments to smoothen out steering in curves.</b> + <b>เธเธฒเธฃเธ›เธฃเธฑเธšเธ•เธฒเธกเนเธฃเธ‡เธšเธดเธ”เธ‚เธญเธ‡ Twilsonco เน€เธžเธทเนˆเธญเธ—เธณเนƒเธซเน‰เธเธฒเธฃเธšเธฑเธ‡เธ„เธฑเธšเน€เธฅเธตเน‰เธขเธงเนƒเธ™เน‚เธ„เน‰เธ‡เธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™</b> FrogPilotLongitudinalPanel - - Conditional Experimental Mode - เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡เธ•เธฒเธกเน€เธ‡เธทเนˆเธญเธ™เน„เธ‚ - - - Automatically switch to <b>Experimental Mode</b> when set conditions are met. - เธชเธฅเธฑเธšเน„เธ›เธ—เธตเนˆ <b>เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡</b> เน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน€เธกเธทเนˆเธญเน€เธ‡เธทเนˆเธญเธ™เน„เธ‚เธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰เธ•เธฃเธ‡เธ•เธฒเธกเธเธณเธซเธ™เธ” - - - Below - เธ”เน‰เธฒเธ™เธฅเนˆเธฒเธ‡ - - - Switch to <b>Experimental Mode</b> when driving below this speed. - เน€เธ›เธฅเธตเนˆเธขเธ™เน€เธ›เน‡เธ™ <b>เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡</b> เน€เธกเธทเนˆเธญเธ‚เธฑเธšเธ‚เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ™เธตเน‰ - - - Curve Detected Ahead - เธ•เธฃเธงเธˆเธžเธšเธ—เธฒเธ‡เน‚เธ„เน‰เธ‡เธ‚เน‰เธฒเธ‡เธซเธ™เน‰เธฒ - - - Switch to <b>Experimental Mode</b> when a curve is detected ahead. Useful for letting the model choose the appropriate speed for the curve. - เน€เธ›เธฅเธตเนˆเธขเธ™เน€เธ›เน‡เธ™ <b>เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡</b> เน€เธกเธทเนˆเธญเธกเธตเธเธฒเธฃเธ•เธฃเธงเธˆเธžเธšเน‚เธ„เน‰เธ‡เธ‚เน‰เธฒเธ‡เธซเธ™เน‰เธฒ เธกเธตเธ›เธฃเธฐเน‚เธขเธŠเธ™เนŒเธชเธณเธซเธฃเธฑเธšเนƒเธซเน‰เน‚เธกเน€เธ”เธฅเน€เธฅเธทเธญเธเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเน€เธซเธกเธฒเธฐเธชเธกเธชเธณเธซเธฃเธฑเธšเน‚เธ„เน‰เธ‡เธ™เธฑเน‰เธ™ - - - Lead Detected Ahead - เธ•เธฃเธงเธˆเธžเธšเธชเธฒเธฃเธ•เธฐเธเธฑเนˆเธงเธ‚เน‰เธฒเธ‡เธซเธ™เน‰เธฒ - - - Switch to <b>Experimental Mode</b> when a slower or stopped vehicle is detected ahead. Can improve braking smoothness and reliability on some vehicles. - เน€เธ›เธฅเธตเนˆเธขเธ™เน€เธ›เน‡เธ™ <b>เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡</b> เน€เธกเธทเนˆเธญเธกเธตเธเธฒเธฃเธ•เธฃเธงเธˆเธžเธšเธขเธฒเธ™เธžเธฒเธซเธ™เธฐเธ—เธตเนˆเธŠเน‰เธฒเธซเธฃเธทเธญเธซเธขเธธเธ”เธญเธขเธนเนˆเธ‚เน‰เธฒเธ‡เธซเธ™เน‰เธฒ เธชเธฒเธกเธฒเธฃเธ–เธ›เธฃเธฑเธšเธ›เธฃเธธเธ‡เธ„เธงเธฒเธกเธ™เธธเนˆเธกเธ™เธงเธฅเนเธฅเธฐเธ„เธงเธฒเธกเธ™เนˆเธฒเน€เธŠเธทเนˆเธญเธ–เธทเธญเธ‚เธญเธ‡เธเธฒเธฃเน€เธšเธฃเธเนƒเธ™เธขเธฒเธ™เธžเธฒเธซเธ™เธฐเธšเธฒเธ‡เธ›เธฃเธฐเน€เธ เธ—เน„เธ”เน‰ - - - Navigation Data - เธ‚เน‰เธญเธกเธนเธฅเธเธฒเธฃเธ™เธณเธ—เธฒเธ‡ - - - Switch to <b>Experimental Mode</b> when approaching intersections or turns on the active route while using <b>Navigate on openpilot (NOO)</b>. Useful for letting the model choose the appropriate speed for upcoming navigation maneuvers. - เน€เธ›เธฅเธตเนˆเธขเธ™เน€เธ›เน‡เธ™ <b>เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡</b> เน€เธกเธทเนˆเธญเน€เธ‚เน‰เธฒเนƒเธเธฅเน‰เธ—เธฒเธ‡เนเธขเธเธซเธฃเธทเธญเธ—เธฒเธ‡เน€เธฅเธตเน‰เธขเธงเธšเธ™เน€เธชเน‰เธ™เธ—เธฒเธ‡เธ—เธตเนˆเนƒเธŠเน‰เธ‡เธฒเธ™เธญเธขเธนเนˆเธ‚เธ“เธฐเนƒเธŠเน‰ <b>Navigate on openpilot (NOO)</b> เธกเธตเธ›เธฃเธฐเน‚เธขเธŠเธ™เนŒเธชเธณเธซเธฃเธฑเธšเนƒเธซเน‰เน‚เธกเน€เธ”เธฅเน€เธฅเธทเธญเธเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเน€เธซเธกเธฒเธฐเธชเธกเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธ™เธณเธ—เธฒเธ‡เธ—เธตเนˆเธเธณเธฅเธฑเธ‡เธˆเธฐเธกเธฒเธ–เธถเธ‡ - - - openpilot Wants to Stop In - openpilot เธ•เน‰เธญเธ‡เธเธฒเธฃเธซเธขเธธเธ” - - - Switch to <b>Experimental Mode</b> when openpilot wants to stop within the set amount of time. This is typically triggered by the driving model "detecting" a red light or stop sign. - เน€เธ›เธฅเธตเนˆเธขเธ™เน€เธ›เน‡เธ™ <b>เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡</b> เน€เธกเธทเนˆเธญ openpilot เธ•เน‰เธญเธ‡เธเธฒเธฃเธซเธขเธธเธ”เธ เธฒเธขเนƒเธ™เน€เธงเธฅเธฒเธ—เธตเนˆเธเธณเธซเธ™เธ” เน‚เธ”เธขเธ›เธเธ•เธดเธˆเธฐเธ–เธนเธเธเธฃเธฐเธ•เธธเน‰เธ™เน‚เธ”เธขเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ "เธ•เธฃเธงเธˆเธˆเธฑเธš" เน„เธŸเนเธ”เธ‡เธซเธฃเธทเธญเธ›เน‰เธฒเธขเธซเธขเธธเธ” - - - Turn Signal Below - เธชเธฑเธเธเธฒเธ“เน€เธฅเธตเน‰เธขเธงเธ”เน‰เธฒเธ™เธฅเนˆเธฒเธ‡ - - - Switch to <b>Experimental Mode</b> when using a turn signal below the set speed. Useful for letting the model choose the appropriate speed for upcoming left or right turns. - เน€เธ›เธฅเธตเนˆเธขเธ™เน€เธ›เน‡เธ™ <b>เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡</b> เน€เธกเธทเนˆเธญเนƒเธŠเน‰เธชเธฑเธเธเธฒเธ“เน„เธŸเน€เธฅเธตเน‰เธขเธงเธ—เธตเนˆเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ•เนˆเธณเธเธงเนˆเธฒเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰ เธกเธตเธ›เธฃเธฐเน‚เธขเธŠเธ™เนŒเธชเธณเธซเธฃเธฑเธšเนƒเธซเน‰เน‚เธกเน€เธ”เธฅเน€เธฅเธทเธญเธเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเน€เธซเธกเธฒเธฐเธชเธกเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเน€เธฅเธตเน‰เธขเธงเธ‹เน‰เธฒเธขเธซเธฃเธทเธญเธ‚เธงเธฒเธ—เธตเนˆเธเธณเธฅเธฑเธ‡เธˆเธฐเธกเธฒเธ–เธถเธ‡ - - - Status Widget - เธงเธดเธ”เน€เธˆเน‡เธ•เธชเธ–เธฒเธ™เธฐ - - - Show the <b>Conditional Experimental Mode</b> status on the driving screen. - เนเธชเธ”เธ‡เธชเธ–เธฒเธ™เธฐ <b>เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡เธ•เธฒเธกเน€เธ‡เธทเนˆเธญเธ™เน„เธ‚</b> เธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ - - - Show <b>Curve Speed Control</b>'s desired speed on the driving screen. - เนเธชเธ”เธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ•เน‰เธญเธ‡เธเธฒเธฃเธ‚เธญเธ‡ <b>เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน‚เธ„เน‰เธ‡</b> เธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ - - - Customize Driving Personalities - เธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธšเธธเธ„เธฅเธดเธเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ - - - Customize the personality profiles to your driving style. - เธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธžเนƒเธซเน‰เน€เธ‚เน‰เธฒเธเธฑเธšเธชเน„เธ•เธฅเนŒเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ‚เธญเธ‡เธ„เธธเธ“ - - - Traffic Personality - เธšเธธเธ„เธฅเธดเธเธ เธฒเธžเธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ - - - Customize the <b>Traffic</b> personality profile. Tailored for navigating through traffic. - เธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ</b> เนƒเธซเน‰เน€เธซเธกเธฒเธฐเธชเธกเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธ™เธณเธ—เธฒเธ‡เธœเนˆเธฒเธ™เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ - - - Following Distance - เธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡เนƒเธ™เธเธฒเธฃเธ•เธดเธ”เธ•เธฒเธก - - - The minimum following distance while in <b>Traffic Mode</b>. openpilot will dynamically adjust between this value and the value in the <b>Aggressive</b> profile based on your current speed. - เธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡เธ‚เธฑเน‰เธ™เธ•เนˆเธณเธ‚เธ“เธฐเธญเธขเธนเนˆเนƒเธ™ <b>เน‚เธซเธกเธ”เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ</b> openpilot เธˆเธฐเธ›เธฃเธฑเธšเนเธšเธšเน„เธ”เธ™เธฒเธกเธดเธเธฃเธฐเธซเธงเนˆเธฒเธ‡เธ„เนˆเธฒเธ™เธตเน‰เธเธฑเธšเธ„เนˆเธฒเนƒเธ™เน‚เธ›เธฃเน„เธŸเธฅเนŒ <b>เธเน‰เธฒเธงเธฃเน‰เธฒเธง</b> เธ•เธฒเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™เธ‚เธญเธ‡เธ„เธธเธ“ - - - Acceleration Sensitivity - เธ„เธงเธฒเธกเน„เธงเธ•เนˆเธญเธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - How sensitive openpilot is to changes in acceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - เธ„เธงเธฒเธกเน„เธงเธ‚เธญเธ‡ openpilot เธ•เนˆเธญเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ‚เธญเธ‡เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธ“เธฐเธญเธขเธนเนˆเนƒเธ™ <b>เน‚เธซเธกเธ”เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธชเนˆเธ‡เธœเธฅเนƒเธซเน‰เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธฃเธฒเธšเธฃเธทเนˆเธ™เนเธฅเธฐเธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™ เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เธกเธตเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ—เธตเนˆเธฃเธงเธ”เน€เธฃเน‡เธงเนเธฅเธฐเธ•เธญเธšเธชเธ™เธญเธ‡เน„เธ”เน‰เธกเธฒเธเธ‚เธถเน‰เธ™ เธ‹เธถเนˆเธ‡เธญเธฒเธˆเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธ—เธฑเธ™เธซเธฑเธ™ - - - Deceleration Sensitivity - เธ„เธงเธฒเธกเน„เธงเธ•เนˆเธญเธเธฒเธฃเธฅเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - How sensitive openpilot is to changes in deceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - เธ„เธงเธฒเธกเน„เธงเธ‚เธญเธ‡ openpilot เธ•เนˆเธญเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เนƒเธ™เธเธฒเธฃเธฅเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธ“เธฐเธญเธขเธนเนˆเนƒเธ™ <b>เน‚เธซเธกเธ”เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธชเนˆเธ‡เธœเธฅเนƒเธซเน‰เธเธฒเธฃเธฅเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เน‡เธ™เน„เธ›เธญเธขเนˆเธฒเธ‡เธฃเธฒเธšเธฃเธทเนˆเธ™เนเธฅเธฐเธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™ เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เธกเธตเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ—เธตเนˆเธฃเธงเธ”เน€เธฃเน‡เธงเนเธฅเธฐเธ•เธญเธšเธชเธ™เธญเธ‡เน„เธ”เน‰เธกเธฒเธเธ‚เธถเน‰เธ™ เธ‹เธถเนˆเธ‡เธญเธฒเธˆเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธ—เธฑเธ™เธซเธฑเธ™ - - - Safety Distance Sensitivity - เธ„เธงเธฒเธกเน„เธงเธ•เนˆเธญเธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡เน€เธžเธทเนˆเธญเธ„เธงเธฒเธกเธ›เธฅเธญเธ”เธ เธฑเธข - - - How cautious openpilot is around other vehicles or obstacles while in <b>Traffic Mode</b>. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - เธ„เธงเธฒเธกเธฃเธฐเธกเธฑเธ”เธฃเธฐเธงเธฑเธ‡เธ‚เธญเธ‡ openpilot เธฃเธญเธšเธขเธฒเธ™เธžเธฒเธซเธ™เธฐเธซเธฃเธทเธญเธชเธดเนˆเธ‡เธเธตเธ”เธ‚เธงเธฒเธ‡เธญเธทเนˆเธ™ เน† เธ‚เธ“เธฐเธญเธขเธนเนˆเนƒเธ™ <b>เน‚เธซเธกเธ”เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเน€เธžเธดเนˆเธกเธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡เนƒเธ™เธเธฒเธฃเธ•เธดเธ”เธ•เธฒเธกเนเธฅเธฐเนƒเธซเน‰เธ„เธงเธฒเธกเธชเธณเธ„เธฑเธเธเธฑเธšเธ„เธงเธฒเธกเธ›เธฅเธญเธ”เธ เธฑเธขเธกเธฒเธเธ‚เธถเน‰เธ™ เธ—เธณเนƒเธซเน‰เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธฃเธฐเธกเธฑเธ”เธฃเธฐเธงเธฑเธ‡เธกเธฒเธเธ‚เธถเน‰เธ™ เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เธ•เธดเธ”เธ•เธฒเธกเน„เธ”เน‰เนƒเธเธฅเน‰เธ‚เธถเน‰เธ™เนเธ•เนˆเธเน‡เธญเธฒเธˆเธฅเธ”เน€เธงเธฅเธฒเธ•เธญเธšเธชเธ™เธญเธ‡เธฅเธ‡ - - - Speed Increase Response - เธเธฒเธฃเธ•เธญเธšเธชเธ™เธญเธ‡เธ•เนˆเธญเธเธฒเธฃเน€เธžเธดเนˆเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - How quickly openpilot increases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆ openpilot เน€เธžเธดเนˆเธกเธ‚เธถเน‰เธ™เธ‚เธ“เธฐเธญเธขเธนเนˆเนƒเธ™ <b>เน‚เธซเธกเธ”เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธŠเนˆเธงเธขเนƒเธซเน‰เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เน‡เธ™เน„เธ›เธญเธขเนˆเธฒเธ‡เธฃเธฒเธšเธฃเธทเนˆเธ™เนเธฅเธฐเธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™เน€เธกเธทเนˆเธญเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธŠเนˆเธงเธขเนƒเธซเน‰เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธฃเธงเธ”เน€เธฃเน‡เธงเนเธฅเธฐเธ•เธญเธšเธชเธ™เธญเธ‡เน„เธ”เน‰เธกเธฒเธเธ‚เธถเน‰เธ™ เธ‹เธถเนˆเธ‡เธญเธฒเธˆเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธ—เธฑเธ™เธซเธฑเธ™ - - - Speed Decrease Response - เธเธฒเธฃเธ•เธญเธšเธชเธ™เธญเธ‡เธเธฒเธฃเธฅเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - How quickly openpilot decreases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆ openpilot เธฅเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธฅเธ‡เนƒเธ™ <b>เน‚เธซเธกเธ”เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธŠเนˆเธงเธขเนƒเธซเน‰เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เน‡เธ™เน„เธ›เธญเธขเนˆเธฒเธ‡เธฃเธฒเธšเธฃเธทเนˆเธ™เนเธฅเธฐเธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™เน€เธกเธทเนˆเธญเธŠเธฐเธฅเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธง เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธŠเนˆเธงเธขเนƒเธซเน‰เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธฃเธงเธ”เน€เธฃเน‡เธงเนเธฅเธฐเธ•เธญเธšเธชเธ™เธญเธ‡เน„เธ”เน‰เธ”เธตเธขเธดเนˆเธ‡เธ‚เธถเน‰เธ™ เธ‹เธถเนˆเธ‡เธญเธฒเธˆเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธ—เธฑเธ™เธซเธฑเธ™ - - - Reset Settings - เธฃเธตเน€เธ‹เน‡เธ•เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ - - - Reset <b>Traffic Mode</b> settings to default values. - เธฃเธตเน€เธ‹เน‡เธ•เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ <b>เน‚เธซเธกเธ”เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ</b> เน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ - - - Aggressive Personality - เธšเธธเธ„เธฅเธดเธเธเน‰เธฒเธงเธฃเน‰เธฒเธง - - - Customize the <b>Aggressive</b> personality profile. Designed for a more assertive driving style. - เธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธเน‰เธฒเธงเธฃเน‰เธฒเธง</b> เธญเธญเธเนเธšเธšเธชเธณเธซเธฃเธฑเธšเธชเน„เธ•เธฅเนŒเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเธกเธฑเนˆเธ™เนƒเธˆเธกเธฒเธเธ‚เธถเน‰เธ™ - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Aggressive</b> personality profile.<br><br>Default: 1.25 seconds. - openpilot เธˆเธฐเธ•เธฒเธกเธซเธฅเธฑเธ‡เธขเธฒเธ™เธžเธฒเธซเธ™เธฐเธ™เธณเธซเธ™เน‰เธฒเน€เธ›เน‡เธ™เน€เธงเธฅเธฒเธเธตเนˆเธงเธดเธ™เธฒเธ—เธตเน€เธกเธทเนˆเธญเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>Aggressive</b>.<br><br>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: 1.25 เธงเธดเธ™เธฒเธ—เธต. - - - How sensitive openpilot is to changes in acceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - เธ„เธงเธฒเธกเน„เธงเธ‚เธญเธ‡ openpilot เธ•เนˆเธญเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เนƒเธ™เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธ“เธฐเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>Aggressive</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธชเนˆเธ‡เธœเธฅเนƒเธซเน‰เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธฃเธฒเธšเธฃเธทเนˆเธ™เนเธฅเธฐเธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™ เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เธกเธตเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ—เธตเนˆเธฃเธงเธ”เน€เธฃเน‡เธงเนเธฅเธฐเธ•เธญเธšเธชเธ™เธญเธ‡เธกเธฒเธเธ‚เธถเน‰เธ™เธ‹เธถเนˆเธ‡เธญเธฒเธˆเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธ—เธฑเธ™เธซเธฑเธ™ - - - How sensitive openpilot is to changes in deceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - เธ„เธงเธฒเธกเน„เธงเธ‚เธญเธ‡ openpilot เธ•เนˆเธญเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เนƒเธ™เธเธฒเธฃเธฅเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธ“เธฐเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>Aggressive</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธชเนˆเธ‡เธœเธฅเนƒเธซเน‰เธเธฒเธฃเธฅเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธฃเธฒเธšเธฃเธทเนˆเธ™เนเธฅเธฐเธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™ เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เธกเธตเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ—เธตเนˆเธฃเธงเธ”เน€เธฃเน‡เธงเนเธฅเธฐเธ•เธญเธšเธชเธ™เธญเธ‡เธกเธฒเธเธ‚เธถเน‰เธ™เธ‹เธถเนˆเธ‡เธญเธฒเธˆเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธ—เธฑเธ™เธซเธฑเธ™ - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Aggressive</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - เธ„เธงเธฒเธกเธฃเธฐเธกเธฑเธ”เธฃเธฐเธงเธฑเธ‡เธ‚เธญเธ‡ openpilot เธฃเธญเธšเธขเธฒเธ™เธžเธฒเธซเธ™เธฐเธซเธฃเธทเธญเธชเธดเนˆเธ‡เธเธตเธ”เธ‚เธงเธฒเธ‡เธญเธทเนˆเธ™ เน† เธ‚เธ“เธฐเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>Aggressive</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเน€เธžเธดเนˆเธกเธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡เนƒเธ™เธเธฒเธฃเธ•เธดเธ”เธ•เธฒเธกเนเธฅเธฐเนƒเธซเน‰เธ„เธงเธฒเธกเธชเธณเธ„เธฑเธเธเธฑเธšเธ„เธงเธฒเธกเธ›เธฅเธญเธ”เธ เธฑเธขเธกเธฒเธเธ‚เธถเน‰เธ™ เธ™เธณเน„เธ›เธชเธนเนˆเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเธฃเธฐเธกเธฑเธ”เธฃเธฐเธงเธฑเธ‡เธกเธฒเธเธ‚เธถเน‰เธ™ เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เธ•เธดเธ”เธ•เธฒเธกเน„เธ”เน‰เนƒเธเธฅเน‰เธ‚เธถเน‰เธ™เนเธ•เนˆเธเน‡เธญเธฒเธˆเธฅเธ”เน€เธงเธฅเธฒเธ•เธญเธšเธชเธ™เธญเธ‡เธฅเธ‡ - - - How quickly openpilot increases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆ openpilot เน€เธžเธดเนˆเธกเธ‚เธถเน‰เธ™เธญเธขเนˆเธฒเธ‡เธฃเธงเธ”เน€เธฃเน‡เธงเธ‚เธ“เธฐเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>Aggressive</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธŠเนˆเธงเธขเนƒเธซเน‰เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธฃเธฒเธšเธฃเธทเนˆเธ™เนเธฅเธฐเธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™เน€เธกเธทเนˆเธญเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เธกเธตเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ—เธตเนˆเธฃเธงเธ”เน€เธฃเน‡เธงเนเธฅเธฐเธ•เธญเธšเธชเธ™เธญเธ‡เธกเธฒเธเธ‚เธถเน‰เธ™เธ‹เธถเนˆเธ‡เธญเธฒเธˆเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธ—เธฑเธ™เธซเธฑเธ™ - - - How quickly openpilot decreases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆ openpilot เธฅเธ”เธฅเธ‡เธญเธขเนˆเธฒเธ‡เธฃเธงเธ”เน€เธฃเน‡เธงเธ‚เธ“เธฐเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>Aggressive</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธŠเนˆเธงเธขเนƒเธซเน‰เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เน‡เธ™เน„เธ›เธญเธขเนˆเธฒเธ‡เธฃเธฒเธšเธฃเธทเนˆเธ™เนเธฅเธฐเธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™เน€เธกเธทเนˆเธญเธŠเธฐเธฅเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธง เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธŠเนˆเธงเธขเนƒเธซเน‰เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธฃเธงเธ”เน€เธฃเน‡เธงเนเธฅเธฐเธ•เธญเธšเธชเธ™เธญเธ‡เน„เธ”เน‰เธ”เธตเธ‚เธถเน‰เธ™เธ‹เธถเนˆเธ‡เธญเธฒเธˆเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธ—เธฑเธ™เธซเธฑเธ™ - - - Reset the <b>Aggressive</b> personality profile settings to default values. - เธฃเธตเน€เธ‹เน‡เธ•เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธเน‰เธฒเธงเธฃเน‰เธฒเธง</b> เน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ - - - Standard Personality - เธšเธธเธ„เธฅเธดเธเธ เธฒเธžเธกเธฒเธ•เธฃเธเธฒเธ™ - - - Customize the <b>Standard</b> personality profile. Designed for a balanced driving style. - เธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธกเธฒเธ•เธฃเธเธฒเธ™</b> เธญเธญเธเนเธšเธšเธชเธณเธซเธฃเธฑเธšเธชเน„เธ•เธฅเนŒเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเธชเธกเธ”เธธเธฅ - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Standard</b> personality profile.<br><br>Default: 1.45 seconds. - openpilot เธˆเธฐเธ•เธฒเธกเธซเธฅเธฑเธ‡เธฃเธ–เธ„เธฑเธ™เธ™เธณเธเธตเนˆเธงเธดเธ™เธฒเธ—เธตเธ‚เธ“เธฐเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธกเธฒเธ•เธฃเธเธฒเธ™</b>.<br><br>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: 1.45 เธงเธดเธ™เธฒเธ—เธต. - - - How sensitive openpilot is to changes in acceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - เธ„เธงเธฒเธกเน„เธงเธ‚เธญเธ‡ openpilot เธ•เนˆเธญเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เนƒเธ™เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธ“เธฐเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธกเธฒเธ•เธฃเธเธฒเธ™</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธชเนˆเธ‡เธœเธฅเนƒเธซเน‰เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธฃเธฒเธšเธฃเธทเนˆเธ™เนเธฅเธฐเธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™ เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เธกเธตเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ—เธตเนˆเธฃเธงเธ”เน€เธฃเน‡เธงเนเธฅเธฐเธ•เธญเธšเธชเธ™เธญเธ‡เธกเธฒเธเธ‚เธถเน‰เธ™เธ‹เธถเนˆเธ‡เธญเธฒเธˆเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธ—เธฑเธ™เธซเธฑเธ™ - - - How sensitive openpilot is to changes in deceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - เธ„เธงเธฒเธกเน„เธงเธ‚เธญเธ‡ openpilot เธ•เนˆเธญเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เนƒเธ™เธเธฒเธฃเธŠเธฐเธฅเธญเธ•เธฑเธงเธ‚เธ“เธฐเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธกเธฒเธ•เธฃเธเธฒเธ™</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธชเนˆเธ‡เธœเธฅเนƒเธซเน‰เธเธฒเธฃเธŠเธฐเธฅเธญเธ•เธฑเธงเธฃเธฒเธšเธฃเธทเนˆเธ™เนเธฅเธฐเธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™ เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เธกเธตเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ—เธตเนˆเธฃเธงเธ”เน€เธฃเน‡เธงเนเธฅเธฐเธ•เธญเธšเธชเธ™เธญเธ‡เธกเธฒเธเธ‚เธถเน‰เธ™เธ‹เธถเนˆเธ‡เธญเธฒเธˆเธฃเธนเน‰เธชเธถเธเธเธฐเธ—เธฑเธ™เธซเธฑเธ™ - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Standard</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - เธ„เธงเธฒเธกเธฃเธฐเธกเธฑเธ”เธฃเธฐเธงเธฑเธ‡เธ‚เธญเธ‡ openpilot เธฃเธญเธšเธขเธฒเธ™เธžเธฒเธซเธ™เธฐเธซเธฃเธทเธญเธชเธดเนˆเธ‡เธเธตเธ”เธ‚เธงเธฒเธ‡เธญเธทเนˆเธ™ เน† เธ‚เธ“เธฐเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธกเธฒเธ•เธฃเธเธฒเธ™</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเน€เธžเธดเนˆเธกเธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡เนƒเธ™เธเธฒเธฃเธ•เธดเธ”เธ•เธฒเธกเนเธฅเธฐเนƒเธซเน‰เธ„เธงเธฒเธกเธชเธณเธ„เธฑเธเธเธฑเธšเธ„เธงเธฒเธกเธ›เธฅเธญเธ”เธ เธฑเธขเธกเธฒเธเธ‚เธถเน‰เธ™ เธ™เธณเน„เธ›เธชเธนเนˆเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเธฃเธฐเธกเธฑเธ”เธฃเธฐเธงเธฑเธ‡เธกเธฒเธเธ‚เธถเน‰เธ™ เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เธ•เธดเธ”เธ•เธฒเธกเน„เธ”เน‰เนƒเธเธฅเน‰เธ‚เธถเน‰เธ™เนเธ•เนˆเธเน‡เธญเธฒเธˆเธฅเธ”เน€เธงเธฅเธฒเธ•เธญเธšเธชเธ™เธญเธ‡เธฅเธ‡ - - - How quickly openpilot increases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆ openpilot เน€เธžเธดเนˆเธกเธ‚เธถเน‰เธ™เธญเธขเนˆเธฒเธ‡เธฃเธงเธ”เน€เธฃเน‡เธงเธ‚เธ“เธฐเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธกเธฒเธ•เธฃเธเธฒเธ™</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธŠเนˆเธงเธขเนƒเธซเน‰เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธฃเธฒเธšเธฃเธทเนˆเธ™เนเธฅเธฐเธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™เน€เธกเธทเนˆเธญเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธŠเนˆเธงเธขเนƒเธซเน‰เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธฃเธงเธ”เน€เธฃเน‡เธงเนเธฅเธฐเธ•เธญเธšเธชเธ™เธญเธ‡เน„เธ”เน‰เธ”เธตเธ‚เธถเน‰เธ™เธ‹เธถเนˆเธ‡เธญเธฒเธˆเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธ—เธฑเธ™เธซเธฑเธ™ - - - How quickly openpilot decreases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆ openpilot เธฅเธ”เธฅเธ‡เธญเธขเนˆเธฒเธ‡เธฃเธงเธ”เน€เธฃเน‡เธงเธ‚เธ“เธฐเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธกเธฒเธ•เธฃเธเธฒเธ™</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธŠเนˆเธงเธขเนƒเธซเน‰เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เน‡เธ™เน„เธ›เธญเธขเนˆเธฒเธ‡เธฃเธฒเธšเธฃเธทเนˆเธ™เนเธฅเธฐเธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™เน€เธกเธทเนˆเธญเธŠเธฐเธฅเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธง เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธŠเนˆเธงเธขเนƒเธซเน‰เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธฃเธงเธ”เน€เธฃเน‡เธงเนเธฅเธฐเธ•เธญเธšเธชเธ™เธญเธ‡เน„เธ”เน‰เธ”เธตเธ‚เธถเน‰เธ™เธ‹เธถเนˆเธ‡เธญเธฒเธˆเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธ—เธฑเธ™เธซเธฑเธ™ - - - Reset the <b>Standard</b> personality profile settings to default values. - เธฃเธตเน€เธ‹เน‡เธ•เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธกเธฒเธ•เธฃเธเธฒเธ™</b> เน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ - - - Relaxed Personality - เธšเธธเธ„เธฅเธดเธเธ เธฒเธžเธ—เธตเนˆเธœเนˆเธญเธ™เธ„เธฅเธฒเธข - - - Customize the <b>Relaxed</b> personality profile. Designed for a more laid-back driving style. - เธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธœเนˆเธญเธ™เธ„เธฅเธฒเธข</b> เธญเธญเธเนเธšเธšเธชเธณเธซเธฃเธฑเธšเธชเน„เธ•เธฅเนŒเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเธœเนˆเธญเธ™เธ„เธฅเธฒเธขเธกเธฒเธเธ‚เธถเน‰เธ™ - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Relaxed</b> personality profile.<br><br>Default: 1.75 seconds. - openpilot เธˆเธฐเธ•เธฒเธกเธซเธฅเธฑเธ‡เธฃเธ–เธ„เธฑเธ™เธ™เธณเธเธตเนˆเธงเธดเธ™เธฒเธ—เธตเธ‚เธ“เธฐเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธœเนˆเธญเธ™เธ„เธฅเธฒเธข</b> <br><br>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: 1.75 เธงเธดเธ™เธฒเธ—เธต. - - - How sensitive openpilot is to changes in acceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - เธ„เธงเธฒเธกเน„เธงเธ‚เธญเธ‡ openpilot เธ•เนˆเธญเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เนƒเธ™เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธ“เธฐเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธœเนˆเธญเธ™เธ„เธฅเธฒเธข</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธชเนˆเธ‡เธœเธฅเนƒเธซเน‰เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธฃเธฒเธšเธฃเธทเนˆเธ™เนเธฅเธฐเธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™ เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เธกเธตเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ—เธตเนˆเธฃเธงเธ”เน€เธฃเน‡เธงเนเธฅเธฐเธ•เธญเธšเธชเธ™เธญเธ‡เธกเธฒเธเธ‚เธถเน‰เธ™เธ‹เธถเนˆเธ‡เธญเธฒเธˆเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธ—เธฑเธ™เธซเธฑเธ™ - - - How sensitive openpilot is to changes in deceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - เธ„เธงเธฒเธกเน„เธงเธ‚เธญเธ‡ openpilot เธ•เนˆเธญเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เนƒเธ™เธเธฒเธฃเธฅเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธ“เธฐเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธœเนˆเธญเธ™เธ„เธฅเธฒเธข</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธชเนˆเธ‡เธœเธฅเนƒเธซเน‰เธเธฒเธฃเธฅเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธฃเธฒเธšเธฃเธทเนˆเธ™เนเธฅเธฐเธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™ เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เธกเธตเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ—เธตเนˆเธฃเธงเธ”เน€เธฃเน‡เธงเนเธฅเธฐเธ•เธญเธšเธชเธ™เธญเธ‡เธกเธฒเธเธ‚เธถเน‰เธ™เธ‹เธถเนˆเธ‡เธญเธฒเธˆเธฃเธนเน‰เธชเธถเธเธเธฐเธ—เธฑเธ™เธซเธฑเธ™ - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Relaxed</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - เธ„เธงเธฒเธกเธฃเธฐเธกเธฑเธ”เธฃเธฐเธงเธฑเธ‡เธ‚เธญเธ‡ openpilot เธฃเธญเธšเธขเธฒเธ™เธžเธฒเธซเธ™เธฐเธซเธฃเธทเธญเธชเธดเนˆเธ‡เธเธตเธ”เธ‚เธงเธฒเธ‡เธญเธทเนˆเธ™ เน† เธ‚เธ“เธฐเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธœเนˆเธญเธ™เธ„เธฅเธฒเธข</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเน€เธžเธดเนˆเธกเธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡เนƒเธ™เธเธฒเธฃเธ•เธดเธ”เธ•เธฒเธกเนเธฅเธฐเนƒเธซเน‰เธ„เธงเธฒเธกเธชเธณเธ„เธฑเธเธเธฑเธšเธ„เธงเธฒเธกเธ›เธฅเธญเธ”เธ เธฑเธขเธกเธฒเธเธ‚เธถเน‰เธ™ เธ™เธณเน„เธ›เธชเธนเนˆเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเธฃเธฐเธกเธฑเธ”เธฃเธฐเธงเธฑเธ‡เธกเธฒเธเธ‚เธถเน‰เธ™ เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เธ•เธดเธ”เธ•เธฒเธกเน„เธ”เน‰เนƒเธเธฅเน‰เธ‚เธถเน‰เธ™เนเธ•เนˆเธเน‡เธญเธฒเธˆเธฅเธ”เน€เธงเธฅเธฒเธ•เธญเธšเธชเธ™เธญเธ‡เธฅเธ‡ - - - How quickly openpilot increases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆ openpilot เน€เธžเธดเนˆเธกเธ‚เธถเน‰เธ™เธญเธขเนˆเธฒเธ‡เธฃเธงเธ”เน€เธฃเน‡เธงเธ‚เธ“เธฐเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธœเนˆเธญเธ™เธ„เธฅเธฒเธข</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธŠเนˆเธงเธขเนƒเธซเน‰เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธฃเธฒเธšเธฃเธทเนˆเธ™เนเธฅเธฐเธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™เน€เธกเธทเนˆเธญเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธŠเนˆเธงเธขเนƒเธซเน‰เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธฃเธงเธ”เน€เธฃเน‡เธงเนเธฅเธฐเธ•เธญเธšเธชเธ™เธญเธ‡เน„เธ”เน‰เธ”เธตเธ‚เธถเน‰เธ™เธ‹เธถเนˆเธ‡เธญเธฒเธˆเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธ—เธฑเธ™เธซเธฑเธ™ - - - How quickly openpilot decreases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆ openpilot เธฅเธ”เธฅเธ‡เธญเธขเนˆเธฒเธ‡เธฃเธงเธ”เน€เธฃเน‡เธงเธ‚เธ“เธฐเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธœเนˆเธญเธ™เธ„เธฅเธฒเธข</b> เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธŠเนˆเธงเธขเนƒเธซเน‰เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธฃเธฒเธšเธฃเธทเนˆเธ™เนเธฅเธฐเธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™เน€เธกเธทเนˆเธญเธŠเธฐเธฅเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธง เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธŠเนˆเธงเธขเนƒเธซเน‰เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธฃเธงเธ”เน€เธฃเน‡เธงเนเธฅเธฐเธ•เธญเธšเธชเธ™เธญเธ‡เน„เธ”เน‰เธกเธฒเธเธ‚เธถเน‰เธ™เธ‹เธถเนˆเธ‡เธญเธฒเธˆเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธ—เธฑเธ™เธซเธฑเธ™ - - - Reset the <b>Relaxed</b> personality profile settings to default values. - เธฃเธตเน€เธ‹เน‡เธ•เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธœเนˆเธญเธ™เธ„เธฅเธฒเธข</b> เน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ - - - Longitudinal Tuning - เธเธฒเธฃเธ›เธฃเธฑเธšเธˆเธนเธ™เธ•เธฒเธกเนเธ™เธงเธขเธฒเธง - - - Settings that control how openpilot manages speed and acceleration. - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ—เธตเนˆเธ„เธงเธšเธ„เธธเธกเธงเธดเธ˜เธตเธ—เธตเนˆ openpilot เธˆเธฑเธ”เธเธฒเธฃเธ„เธงเธฒเธกเน€เธฃเน‡เธงเนเธฅเธฐเธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - Acceleration Profile - เน‚เธ›เธฃเน„เธŸเธฅเนŒเธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - Enable either a sporty or eco-friendly acceleration profile. <b>Sport+</b> aims to make openpilot accelerate as fast as possible! - เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เน‚เธ›เธฃเน„เธŸเธฅเนŒเธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเนเธšเธšเธชเธ›เธญเธฃเนŒเธ•เธซเธฃเธทเธญเน€เธ›เน‡เธ™เธกเธดเธ•เธฃเธเธฑเธšเธชเธดเนˆเธ‡เนเธงเธ”เธฅเน‰เธญเธก <b>Sport+</b> เธกเธธเนˆเธ‡เน€เธ™เน‰เธ™เนƒเธซเน‰ openpilot เน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเน„เธ”เน‰เน€เธฃเน‡เธงเธ—เธตเนˆเธชเธธเธ”! - - - Deceleration Profile - เน‚เธ›เธฃเน„เธŸเธฅเนŒเธเธฒเธฃเธฅเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - Enable either a sporty or eco-friendly deceleration profile. - เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เน‚เธ›เธฃเน„เธŸเธฅเนŒเธเธฒเธฃเธŠเธฐเธฅเธญเธ•เธฑเธงเนเธšเธšเธชเธ›เธญเธฃเนŒเธ•เธซเธฃเธทเธญเน€เธ›เน‡เธ™เธกเธดเธ•เธฃเธเธฑเธšเธชเธดเนˆเธ‡เนเธงเธ”เธฅเน‰เธญเธก - - - Human-Like Acceleration - เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธซเธกเธทเธญเธ™เธกเธ™เธธเธฉเธขเนŒ - - - Use the lead vehicle's acceleration rate when at a takeoff and ramp off the acceleration rate when approaching the maximum set speed for a more "human-like" driving experience. - เนƒเธŠเน‰เธ„เธงเธฒเธกเน€เธฃเนˆเธ‡เธ‚เธญเธ‡เธขเธฒเธ™เธžเธฒเธซเธ™เธฐเธ™เธณเน€เธกเธทเนˆเธญเน€เธฃเธดเนˆเธกเธญเธญเธเธ•เธฑเธงเนเธฅเธฐเธฅเธ”เธ„เธงเธฒเธกเน€เธฃเนˆเธ‡เธฅเธ‡เน€เธกเธทเนˆเธญเน€เธ‚เน‰เธฒเนƒเธเธฅเน‰เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธชเธนเธ‡เธชเธธเธ”เธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰เน€เธžเธทเนˆเธญเธ›เธฃเธฐเธชเธšเธเธฒเธฃเธ“เนŒเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆ "เน€เธซเธกเธทเธญเธ™เธกเธ™เธธเธฉเธขเนŒ" เธกเธฒเธเธ‚เธถเน‰เธ™ - - - Human-Like Approach Behind Leads - เนเธ™เธงเธ—เธฒเธ‡เธ—เธตเนˆเน€เธซเธกเธทเธญเธ™เธกเธ™เธธเธฉเธขเนŒเน€เธšเธทเน‰เธญเธ‡เธซเธฅเธฑเธ‡เธเธฒเธฃเธ™เธณเน€เธชเธ™เธญ - - - Dynamically adjust the desired following distance when approaching slower or stopped vehicles for a more "human-like" driving experience. - เธ›เธฃเธฑเธšเธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡เธ—เธตเนˆเธ•เน‰เธญเธ‡เธเธฒเธฃเธ•เธฒเธกเธชเธ–เธฒเธ™เธเธฒเธฃเธ“เนŒเน€เธกเธทเนˆเธญเน€เธ‚เน‰เธฒเนƒเธเธฅเน‰เธขเธฒเธ™เธžเธฒเธซเธ™เธฐเธ—เธตเนˆเธŠเน‰เธฒเธฅเธ‡เธซเธฃเธทเธญเธซเธขเธธเธ”เน€เธžเธทเนˆเธญเธ›เธฃเธฐเธชเธšเธเธฒเธฃเธ“เนŒเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเน€เธซเธกเธทเธญเธ™เธกเธ™เธธเธฉเธขเนŒเธกเธฒเธเธ‚เธถเน‰เธ™ - - - Lead Detection Confidence - เธ„เธงเธฒเธกเธกเธฑเนˆเธ™เนƒเธˆเนƒเธ™เธเธฒเธฃเธ•เธฃเธงเธˆเธˆเธฑเธšเน‚เธญเธเธฒเธช - - - How sensitive openpilot is to detecting vehicles ahead. A lower value can help detect vehicles sooner and from farther away, but increases the chance openpilot mistakes other objects for vehicles. - เธ„เธงเธฒเธกเน„เธงเธ‚เธญเธ‡ openpilot เนƒเธ™เธเธฒเธฃเธ•เธฃเธงเธˆเธˆเธฑเธšเธขเธฒเธ™เธžเธฒเธซเธ™เธฐเธ‚เน‰เธฒเธ‡เธซเธ™เน‰เธฒ เธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธชเธฒเธกเธฒเธฃเธ–เธŠเนˆเธงเธขเธ•เธฃเธงเธˆเธˆเธฑเธšเธขเธฒเธ™เธžเธฒเธซเธ™เธฐเน„เธ”เน‰เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธฅเธฐเธˆเธฒเธเธฃเธฐเธขเธฐเน„เธเธฅเธ‚เธถเน‰เธ™ เนเธ•เนˆเน€เธžเธดเนˆเธกเน‚เธญเธเธฒเธชเธ—เธตเนˆ openpilot เธˆเธฐเน€เธ‚เน‰เธฒเนƒเธˆเธœเธดเธ”เธงเนˆเธฒเธงเธฑเธ•เธ–เธธเธญเธทเนˆเธ™เน€เธ›เน‡เธ™เธขเธฒเธ™เธžเธฒเธซเธ™เธฐ - - - Maximum Acceleration Rate - เธญเธฑเธ•เธฃเธฒเน€เธฃเนˆเธ‡เธชเธนเธ‡เธชเธธเธ” - - - Set a cap on how fast openpilot can accelerate. - เธเธณเธซเธ™เธ”เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเนƒเธ™เธเธฒเธฃเน€เธฃเนˆเธ‡เธ‚เธญเธ‡ openpilot - - - "Taco Bell Run" Turn Speed Hack - "Taco Bell Run" เนเธฎเน‡เธเธ„เธงเธฒเธกเน€เธฃเน‡เธงเนƒเธ™เธเธฒเธฃเน€เธฅเธตเน‰เธขเธง - - - The turn speed hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to slow down when taking left/right turns for smoother turns. - เธเธฒเธฃเนเธฎเน‡เธเธ„เธงเธฒเธกเน€เธฃเน‡เธงเนƒเธ™เธเธฒเธฃเน€เธฅเธตเน‰เธขเธงเธˆเธฒเธเธเธฒเธฃเธ‚เธฑเธš "Taco Bell Run" เธ‚เธญเธ‡ comma เนƒเธ™เธ›เธต 2022 เธญเธญเธเนเธšเธšเธกเธฒเน€เธžเธทเนˆเธญเธฅเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธกเธทเนˆเธญเน€เธฅเธตเน‰เธขเธงเธ‹เน‰เธฒเธข/เธ‚เธงเธฒเน€เธžเธทเนˆเธญเนƒเธซเน‰เธเธฒเธฃเน€เธฅเธตเน‰เธขเธงเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™ - - - Quality of Life - เธ„เธธเธ“เธ เธฒเธžเธŠเธตเธงเธดเธ• - - - Miscellaneous features to improve the acceleration and braking experience. - เธ„เธธเธ“เธชเธกเธšเธฑเธ•เธดเธ•เนˆเธฒเธ‡เน† เน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเธ›เธฃเธธเธ‡เธ›เธฃเธฐเธชเธšเธเธฒเธฃเธ“เนŒเธเธฒเธฃเน€เธฃเนˆเธ‡เนเธฅเธฐเธเธฒเธฃเน€เธšเธฃเธ - - - Cruise Interval - เธŠเนˆเธงเธ‡เน€เธงเธฅเธฒเธฅเนˆเธญเธ‡เน€เธฃเธทเธญ - - - The interval used when changing the cruise control speed. - เธŠเนˆเธงเธ‡เน€เธงเธฅเธฒเธ—เธตเนˆเนƒเธŠเน‰เน€เธกเธทเนˆเธญเน€เธ›เธฅเธตเนˆเธขเธ™เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธญเธ‡เธฃเธฐเธšเธšเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด - - - Cruise Interval (Long Press) - เธŠเนˆเธงเธ‡เน€เธงเธฅเธฒเธฅเนˆเธญเธ‡เน€เธฃเธทเธญ (เธเธ”เธ„เน‰เธฒเธ‡) - - - The interval used when changing the cruise control speed while holding down the button for 0.5+ seconds. - เธŠเนˆเธงเธ‡เน€เธงเธฅเธฒเธ—เธตเนˆเนƒเธŠเน‰เน€เธกเธทเนˆเธญเน€เธ›เธฅเธตเนˆเธขเธ™เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธญเธ‡เธฃเธฐเธšเธšเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ„เธ‡เธ—เธตเนˆเธ‚เธ“เธฐเธเธ”เธ›เธธเนˆเธกเธ„เน‰เธฒเธ‡เน„เธงเน‰เน€เธ›เน‡เธ™เน€เธงเธฅเธฒ 0.5+ เธงเธดเธ™เธฒเธ—เธต - - - Force Keep openpilot in the Standstill State - เธšเธฑเธ‡เธ„เธฑเธšเนƒเธซเน‰ openpilot เธญเธขเธนเนˆเนƒเธ™เธชเธ–เธฒเธ™เธฐเธซเธขเธธเธ”เธ™เธดเนˆเธ‡ - - - Keep openpilot in the standstill state until either the gas pedal or <b>resume</b> button is pressed. - เนƒเธซเน‰ openpilot เธญเธขเธนเนˆเนƒเธ™เธชเธ–เธฒเธ™เธฐเธซเธขเธธเธ”เธ™เธดเนˆเธ‡เธˆเธ™เธเธงเนˆเธฒเธˆเธฐเธกเธตเธเธฒเธฃเธเธ”เธ„เธฑเธ™เน€เธฃเนˆเธ‡เธซเธฃเธทเธญเธ›เธธเนˆเธก <b>resume</b> - - - Force Stop for "Detected" Stop Lights/Signs - เธšเธฑเธ‡เธ„เธฑเธšเธซเธขเธธเธ”เธชเธณเธซเธฃเธฑเธšเน„เธŸ/เธ›เน‰เธฒเธขเธซเธขเธธเธ”เธ—เธตเนˆ "เธ•เธฃเธงเธˆเธžเธš" - - - Force a stop whenever openpilot <b>detects</b> a potential red light/stop sign to prevent it from running the red light/stop sign. - เธšเธฑเธ‡เธ„เธฑเธšเนƒเธซเน‰เธซเธขเธธเธ”เน€เธกเธทเนˆเธญเนƒเธ”เธเน‡เธ•เธฒเธกเธ—เธตเนˆ openpilot <b>เธ•เธฃเธงเธˆเธžเธš</b> เธชเธฑเธเธเธฒเธ“เน„เธŸเนเธ”เธ‡/เธ›เน‰เธฒเธขเธซเธขเธธเธ”เธ—เธตเนˆเธญเธฒเธˆเน€เธเธดเธ”เธ‚เธถเน‰เธ™เน€เธžเธทเนˆเธญเธ›เน‰เธญเธ‡เธเธฑเธ™เน„เธกเนˆเนƒเธซเน‰เธเนˆเธฒเน„เธŸเนเธ”เธ‡/เธ›เน‰เธฒเธขเธซเธขเธธเธ” - - - Increase Stopped Distance - เน€เธžเธดเนˆเธกเธฃเธฐเธขเธฐเธซเธขเธธเธ” - - - Increase the distance openpilot stops behind vehicles. - เน€เธžเธดเนˆเธกเธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡เธ—เธตเนˆ openpilot เธซเธขเธธเธ”เธซเธฅเธฑเธ‡เธขเธฒเธ™เธžเธฒเธซเธ™เธฐ - - - Set Speed Offset - เธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธญเธญเธŸเน€เธ‹เน‡เธ•เธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - How much higher or lower the set speed should be compared to your current set speed. For example, if you prefer to drive 5 mph above the speed limit, this setting will automatically add that difference when you adjust your set speed. - เธ„เธงเธฃเธ•เธฑเน‰เธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธชเธนเธ‡เธซเธฃเธทเธญเธ•เนˆเธณเธเธงเนˆเธฒเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰เนƒเธ™เธ›เธฑเธˆเธˆเธธเธšเธฑเธ™เน€เธ—เนˆเธฒเนƒเธ” เธ•เธฑเธงเธญเธขเนˆเธฒเธ‡เน€เธŠเนˆเธ™ เธซเธฒเธเธ„เธธเธ“เธ•เน‰เธญเธ‡เธเธฒเธฃเธ‚เธฑเธšเธฃเธ–เธ—เธตเนˆเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธชเธนเธ‡เธเธงเนˆเธฒเธ‚เธตเธ”เธˆเธณเธเธฑเธ” 5 เน„เธกเธฅเนŒเธ•เนˆเธญเธŠเธฑเนˆเธงเน‚เธกเธ‡ เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ™เธตเน‰เธˆเธฐเน€เธžเธดเนˆเธกเธ„เธงเธฒเธกเนเธ•เธเธ•เนˆเธฒเธ‡เธ™เธฑเน‰เธ™เน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน€เธกเธทเนˆเธญเธ„เธธเธ“เธ›เธฃเธฑเธšเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰ - - - Map Accel/Decel to Gears - เธˆเธฑเธšเธ„เธนเนˆเธเธฒเธฃเน€เธฃเนˆเธ‡/เธฅเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธเธฑเธšเน€เธเธตเธขเธฃเนŒ - - - Map the acceleration and deceleration profiles to your car's <b>Eco</b> or <b>Sport</b> gear modes. - เนเธกเธ›เน‚เธ›เธฃเน„เธŸเธฅเนŒเธเธฒเธฃเน€เธฃเนˆเธ‡เนเธฅเธฐเธเธฒเธฃเธŠเธฐเธฅเธญเธ•เธฑเธงเน„เธ›เธขเธฑเธ‡เน‚เธซเธกเธ”เน€เธเธตเธขเธฃเนŒ <b>Eco</b> เธซเธฃเธทเธญ <b>Sport</b> เธ‚เธญเธ‡เธฃเธ–เธ„เธธเธ“ - - - Reverse Cruise Increase - เธขเน‰เธญเธ™เธเธฅเธฑเธšเธเธฒเธฃเน€เธžเธดเนˆเธกเธ‚เธถเน‰เธ™เธ‚เธญเธ‡เธเธฒเธฃเธฅเนˆเธญเธ‡เน€เธฃเธทเธญ - - - Reverse the <b>long press</b> cruise increase feature to increase the max speed by 5 instead of 1 on short presses. - เธขเน‰เธญเธ™เธเธฅเธฑเธšเธ„เธธเธ“เธชเธกเธšเธฑเธ•เธดเธเธฒเธฃเน€เธžเธดเนˆเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเนƒเธ™เธเธฒเธฃเธฅเนˆเธญเธ‡เน€เธฃเธทเธญ <b>เธเธ”เธ„เน‰เธฒเธ‡</b> เน€เธžเธทเนˆเธญเน€เธžเธดเนˆเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธชเธนเธ‡เธชเธธเธ”เธ—เธตเธฅเธฐ 5 เนเธ—เธ™เธ—เธตเนˆเธˆเธฐเน€เธ›เน‡เธ™เธ—เธตเธฅเธฐ 1 เน€เธกเธทเนˆเธญเธเธ”เธชเธฑเน‰เธ™ เน† - - - Speed Limit Controller - เธ•เธฑเธงเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธชเธนเธ‡เธชเธธเธ” - - - Limit openpilot's maximum driving speed based on data from downloaded maps, <b>Mapbox</b>, <b>Navigate on openpilot</b>, or the dashboard (supported vehicles: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธชเธนเธ‡เธชเธธเธ”เธ‚เธญเธ‡ openpilot เธ•เธฒเธกเธ‚เน‰เธญเธกเธนเธฅเธˆเธฒเธเนเธœเธ™เธ—เธตเนˆเธ—เธตเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”, <b>Mapbox</b>, <b>Navigate on openpilot</b>, เธซเธฃเธทเธญเนเธœเธ‡เธซเธ™เน‰เธฒเธ›เธฑเธ” (เธขเธฒเธ™เธžเธฒเธซเธ™เธฐเธ—เธตเนˆเธฃเธญเธ‡เธฃเธฑเธš: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>) - - - Fallback Speed - เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธชเธณเธฃเธญเธ‡ - - - The speed limit source when no speed limit data is available. - เนเธซเธฅเนˆเธ‡เธ‚เน‰เธญเธกเธนเธฅเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธกเธทเนˆเธญเน„เธกเนˆเธกเธตเธ‚เน‰เธญเธกเธนเธฅเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - Override Speed - เนเธ—เธ™เธ—เธตเนˆเธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - The speed openpilot uses after manually exceeding the posted speed limit.<br><br><b>- Set With Gas Pedal</b>: Uses the speed obtained while pressing the gas<br><b>- Max Set Speed</b>: Uses the cruise control set speed<br><br>Overrides clear upon disengagement. - เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆ openpilot เนƒเธŠเน‰เธซเธฅเธฑเธ‡เธˆเธฒเธเธ—เธตเนˆเน€เธเธดเธ™เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธเธณเธซเธ™เธ”เน„เธงเน‰เธ”เน‰เธงเธขเธ•เธ™เน€เธญเธ‡<br><br><b>- เธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ”เน‰เธงเธขเธ„เธฑเธ™เน€เธฃเนˆเธ‡</b>: เนƒเธŠเน‰เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเน„เธ”เน‰เธˆเธฒเธเธเธฒเธฃเน€เธซเธขเธตเธขเธšเธ„เธฑเธ™เน€เธฃเนˆเธ‡<br><b>- เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธชเธนเธ‡เธชเธธเธ”เธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰</b>: เนƒเธŠเน‰เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰เธ‚เธญเธ‡เธฃเธฐเธšเธšเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธง<br><br>เธเธฒเธฃเนเธ—เธ™เธ—เธตเนˆเธ–เธนเธเธฅเน‰เธฒเธ‡เน€เธกเธทเนˆเธญเธขเธเน€เธฅเธดเธเธเธฒเธฃเนƒเธŠเน‰เธ‡เธฒเธ™ - - - Miscellaneous features to improve the <b>Speed Limit Controller</b> experience. - เธ„เธธเธ“เธชเธกเธšเธฑเธ•เธดเธ•เนˆเธฒเธ‡เน† เน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเธ›เธฃเธธเธ‡เธ›เธฃเธฐเธชเธšเธเธฒเธฃเธ“เนŒเธ‚เธญเธ‡ <b>เธ•เธฑเธงเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธง</b> - - - Confirm New Speed Limits - เธขเธทเธ™เธขเธฑเธ™เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเนƒเธซเธกเนˆ - - - Require confirmation before applying new speed limits. To accept, use the flashing widget on the driving screen or press the <b>Cruise Increase</b> button. To deny, press the <b>Cruise Decrease</b> button or simply ignore the prompt for 30 seconds. - เธ•เน‰เธญเธ‡เธเธฒเธฃเธเธฒเธฃเธขเธทเธ™เธขเธฑเธ™เธเนˆเธญเธ™เธ—เธตเนˆเธˆเธฐเนƒเธŠเน‰เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเนƒเธซเธกเนˆ เน€เธžเธทเนˆเธญเธขเธญเธกเธฃเธฑเธš เนƒเธซเน‰เนƒเธŠเน‰เธงเธดเธ”เน€เธˆเน‡เธ•เธ—เธตเนˆเธเธฐเธžเธฃเธดเธšเธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธซเธฃเธทเธญเธเธ”เธ›เธธเนˆเธก <b>Cruise Increase</b> เน€เธžเธทเนˆเธญเธ›เธเธดเน€เธชเธ˜ เนƒเธซเน‰เธเธ”เธ›เธธเนˆเธก <b>Cruise Decrease</b> เธซเธฃเธทเธญเน€เธžเธตเธขเธ‡เนเธ„เนˆเน€เธžเธดเธเน€เธ‰เธขเธ•เนˆเธญเธ„เธณเน€เธ•เธทเธญเธ™เน€เธ›เน‡เธ™เน€เธงเธฅเธฒ 30 เธงเธดเธ™เธฒเธ—เธต - - - Force MPH Readings from Dashboard - เธšเธฑเธ‡เธ„เธฑเธšเธเธฒเธฃเธญเนˆเธฒเธ™เธ„เนˆเธฒ MPH เธˆเธฒเธเนเธœเธ‡เธซเธ™เน‰เธฒเธ›เธฑเธ” - - - Force dashboard speed limit readings to be in mph. - เธšเธฑเธ‡เธ„เธฑเธšเนƒเธซเน‰เธเธฒเธฃเธญเนˆเธฒเธ™เธ„เนˆเธฒเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธšเธ™เนเธœเธ‡เธซเธ™เน‰เธฒเธ›เธฑเธ”เน€เธ›เน‡เธ™ mph. - - - Higher Limit Lookahead Time - เน€เธงเธฅเธฒเธกเธญเธ‡เน„เธ›เธ‚เน‰เธฒเธ‡เธซเธ™เน‰เธฒเธˆเธณเธเธฑเธ”เธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™ - - - How far ahead openpilot anticipates upcoming higher speed limits from the downloaded map data. - openpilot เธ„เธฒเธ”เธเธฒเธฃเธ“เนŒเธฅเนˆเธงเธ‡เธซเธ™เน‰เธฒเธ–เธถเธ‡เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฒเธเธ‚เน‰เธญเธกเธนเธฅเนเธœเธ™เธ—เธตเนˆเธ—เธตเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธกเธฒเน„เธเธฅเนเธ„เนˆเน„เธซเธ™ - - - Lower Limit Lookahead Time - เน€เธงเธฅเธฒเธกเธญเธ‡เน„เธ›เธ‚เน‰เธฒเธ‡เธซเธ™เน‰เธฒเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธฅเนˆเธฒเธ‡ - - - How far ahead openpilot anticipates upcoming lower speed limits from the downloaded map data. - Translation A - - - Match Speed Limit on Engage - เธˆเธฑเธšเธ„เธนเนˆเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธชเธนเธ‡เธชเธธเธ”เธšเธ™ Engage - - - Automatically set cruise control speed to match the current speed limit when first enabling openpilot. - เธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธญเธ‡เธฃเธฐเธšเธšเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเนƒเธซเน‰เธ•เธฃเธ‡เธเธฑเธšเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™เน€เธกเธทเนˆเธญเน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™ openpilot เธ„เธฃเธฑเน‰เธ‡เนเธฃเธ - - - Use Mapbox as Fallback - เนƒเธŠเน‰ Mapbox เน€เธ›เน‡เธ™เธ•เธฑเธงเน€เธฅเธทเธญเธเธชเธณเธฃเธญเธ‡ - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - เนƒเธŠเน‰เธ‚เน‰เธญเธกเธนเธฅเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธญเธ‡ <b>Mapbox</b> เน€เธกเธทเนˆเธญเน„เธกเนˆเธกเธตเนเธซเธฅเนˆเธ‡เธ‚เน‰เธญเธกเธนเธฅเธญเธทเนˆเธ™เธ—เธตเนˆเนƒเธŠเน‰เน„เธ”เน‰ - - - Speed Limit Source Priority - เธฅเธณเธ”เธฑเธšเธ„เธงเธฒเธกเธชเธณเธ„เธฑเธเธ‚เธญเธ‡เนเธซเธฅเนˆเธ‡เธ—เธตเนˆเธกเธฒเธ‚เธญเธ‡เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - Define the priority order for speed limit sources (<b>Dashboard</b>, <b>Map Data</b>, <b>Navigation</b>). Higher-priority sources override lower ones when multiple limits are detected. - เธเธณเธซเธ™เธ”เธฅเธณเธ”เธฑเธšเธ„เธงเธฒเธกเธชเธณเธ„เธฑเธเธชเธณเธซเธฃเธฑเธšเนเธซเธฅเนˆเธ‡เธ—เธตเนˆเธกเธฒเธ‚เธญเธ‡เธเธฒเธฃเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง (<b>Dashboard</b>, <b>Map Data</b>, <b>Navigation</b>) เนเธซเธฅเนˆเธ‡เธ—เธตเนˆเธกเธตเธฅเธณเธ”เธฑเธšเธ„เธงเธฒเธกเธชเธณเธ„เธฑเธเธชเธนเธ‡เธเธงเนˆเธฒเธˆเธฐเธกเธตเธœเธฅเนเธ—เธ™เธ—เธตเนˆเนเธซเธฅเนˆเธ‡เธ—เธตเนˆเธกเธตเธฅเธณเธ”เธฑเธšเธ„เธงเธฒเธกเธชเธณเธ„เธฑเธเธ•เนˆเธณเธเธงเนˆเธฒเน€เธกเธทเนˆเธญเธกเธตเธเธฒเธฃเธ•เธฃเธงเธˆเธžเธšเธเธฒเธฃเธˆเธณเธเธฑเธ”เธซเธฅเธฒเธขเธฃเธฒเธขเธเธฒเธฃ - - - Speed Limit Offsets - เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - Offsets relative to the posted speed limit for a more "human-like" driving experience. - เธเธฒเธฃเธ›เธฃเธฑเธšเธ„เนˆเธฒเธญเธญเธŸเน€เธ‹เน‡เธ•เนƒเธซเน‰เธชเธฑเธกเธžเธฑเธ™เธ˜เนŒเธเธฑเธšเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธเธณเธซเธ™เธ”เน„เธงเน‰เน€เธžเธทเนˆเธญเธ›เธฃเธฐเธชเธšเธเธฒเธฃเธ“เนŒเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆ "เน€เธซเธกเธทเธญเธ™เธกเธ™เธธเธฉเธขเนŒ" เธกเธฒเธเธ‚เธถเน‰เธ™ - - - Target speed offset applied for posted limits between 0 and 24 mph. - เธเธฒเธฃเธ›เธฃเธฑเธšเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เน‰เธฒเธซเธกเธฒเธขเธชเธณเธซเธฃเธฑเธšเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ—เธตเนˆเน‚เธžเธชเธ•เนŒเธฃเธฐเธซเธงเนˆเธฒเธ‡ 0 เธ–เธถเธ‡ 24 เน„เธกเธฅเนŒเธ•เนˆเธญเธŠเธฑเนˆเธงเน‚เธกเธ‡ - - - Target speed offset applied for posted limits between 25 and 34 mph. - เธเธฒเธฃเธ›เธฃเธฑเธšเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เน‰เธฒเธซเธกเธฒเธขเธชเธณเธซเธฃเธฑเธšเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ—เธตเนˆเน‚เธžเธชเธ•เนŒเธฃเธฐเธซเธงเนˆเธฒเธ‡ 25 เธ–เธถเธ‡ 34 เน„เธกเธฅเนŒเธ•เนˆเธญเธŠเธฑเนˆเธงเน‚เธกเธ‡ - - - Target speed offset applied for posted limits between 35 and 44 mph. - เธเธฒเธฃเธ›เธฃเธฑเธšเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เน‰เธฒเธซเธกเธฒเธขเธชเธณเธซเธฃเธฑเธšเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ—เธตเนˆเน‚เธžเธชเธ•เนŒเธฃเธฐเธซเธงเนˆเธฒเธ‡ 35 เนเธฅเธฐ 44 เน„เธกเธฅเนŒเธ•เนˆเธญเธŠเธฑเนˆเธงเน‚เธกเธ‡ - - - Target speed offset applied for posted limits between 45 and 54 mph. - Translation A - - - Target speed offset applied for posted limits between 55 and 64 mph. - เนƒเธŠเน‰เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เน‰เธฒเธซเธกเธฒเธขเธชเธณเธซเธฃเธฑเธšเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ—เธตเนˆเน‚เธžเธชเธ•เนŒเธฃเธฐเธซเธงเนˆเธฒเธ‡ 55 เธ–เธถเธ‡ 64 เน„เธกเธฅเนŒเธ•เนˆเธญเธŠเธฑเนˆเธงเน‚เธกเธ‡ - - - Target speed offset applied for posted limits between 65 and 74 mph. - เธเธฒเธฃเธ›เธฃเธฑเธšเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เน‰เธฒเธซเธกเธฒเธขเธชเธณเธซเธฃเธฑเธšเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ—เธตเนˆเน‚เธžเธชเธ•เนŒเธฃเธฐเธซเธงเนˆเธฒเธ‡ 65 เธ–เธถเธ‡ 74 เน„เธกเธฅเนŒเธ•เนˆเธญเธŠเธฑเนˆเธงเน‚เธกเธ‡ - - - Target speed offset applied for posted limits between 75 and 99 mph. - เธเธฒเธฃเธ›เธฃเธฑเธšเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เน‰เธฒเธซเธกเธฒเธขเธชเธณเธซเธฃเธฑเธšเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ—เธตเนˆเน‚เธžเธชเธ•เนŒเธฃเธฐเธซเธงเนˆเธฒเธ‡ 75 เธ–เธถเธ‡ 99 เน„เธกเธฅเนŒเธ•เนˆเธญเธŠเธฑเนˆเธงเน‚เธกเธ‡ - - - Visual Settings - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ เธฒเธž - - - Visual features to improve the <b>Speed Limit Controller</b> experience. - เธ„เธธเธ“เธฅเธฑเธเธฉเธ“เธฐเธ”เน‰เธฒเธ™เธ เธฒเธžเน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเธ›เธฃเธธเธ‡เธ›เธฃเธฐเธชเธšเธเธฒเธฃเธ“เนŒเธ‚เธญเธ‡ <b>เธ•เธฑเธงเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธˆเธณเธเธฑเธ”</b> - - - Show Speed Limit Offset - เนเธชเธ”เธ‡เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - Display the speed limit offset separately on the driving screen. - เนเธชเธ”เธ‡เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเนเธขเธเธ•เนˆเธฒเธ‡เธซเธฒเธเธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ - - - Show Speed Limit Sources - เนเธชเธ”เธ‡เนเธซเธฅเนˆเธ‡เธ—เธตเนˆเธกเธฒเธ‚เธญเธ‡เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - Display the speed limit sources on the driving screen. - เนเธชเธ”เธ‡เนเธซเธฅเนˆเธ‡เธ—เธตเนˆเธกเธฒเธ‚เธญเธ‡เธเธฒเธฃเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ - - - seconds - เธงเธดเธ™เธฒเธ—เธต - - - m/sยฒ - m/sยฒ - - - mph - mph - - - With Lead - เธ”เน‰เธงเธขเธชเธฒเธฃเธ•เธฐเธเธฑเนˆเธง - - - Switch to <b>Experimental Mode</b> when driving below this speed with a lead. - เน€เธ›เธฅเธตเนˆเธขเธ™เน€เธ›เน‡เธ™ <b>เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡</b> เน€เธกเธทเนˆเธญเธ‚เธฑเธšเธ‚เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ™เธตเน‰เธžเธฃเน‰เธญเธกเธเธฑเธšเธกเธตเธœเธนเน‰เธ™เธณเธซเธ™เน‰เธฒ - - - Slower Lead - เธœเธนเน‰เธ™เธณเธ—เธตเนˆเธŠเน‰เธฒเธเธงเนˆเธฒ - - - Stopped Lead - เธซเธขเธธเธ”เธ™เธณ - - - Intersections - เธˆเธธเธ”เธ•เธฑเธ” - - - Turns - เน€เธ›เธฅเธตเนˆเธขเธ™ - - - Off - เธ›เธดเธ” - - - second - เธ—เธตเนˆเธชเธญเธ‡ - - - RESET - เธฃเธตเน€เธ‹เน‡เธ• - - - Standard - เธกเธฒเธ•เธฃเธเธฒเธ™ - - - Eco - เธญเธตเน‚เธ„ - - - Sport - เธเธตเธฌเธฒ - - - Sport+ - Sport+ - - - feet - เน€เธ—เน‰เธฒ - - - Acceleration - เธ„เธงเธฒเธกเน€เธฃเนˆเธ‡ - - - Deceleration - เธเธฒเธฃเธฅเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - Set Speed - เธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - Experimental Mode - เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡ - - - Previous Limit - เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธเนˆเธญเธ™เธซเธ™เน‰เธฒ - - - None - เน„เธกเนˆเธกเธต - - - Set With Gas Pedal - เธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ”เน‰เธงเธขเธ„เธฑเธ™เน€เธฃเนˆเธ‡ - - - Max Set Speed - เธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธชเธนเธ‡เธชเธธเธ” - - - SELECT - SELECT - - - Dashboard - เนเธ”เธŠเธšเธญเธฃเนŒเธ” - - - Map Data - เธ‚เน‰เธญเธกเธนเธฅเนเธœเธ™เธ—เธตเนˆ - - - Navigation - เธเธฒเธฃเธ™เธณเธ—เธฒเธ‡ - - - Highest - เธชเธนเธ‡เธชเธธเธ” - - - Lowest - เธ•เนˆเธณเธชเธธเธ” - - - Select your primary priority - เน€เธฅเธทเธญเธเธชเธดเนˆเธ‡เธ—เธตเนˆเธ„เธธเธ“เนƒเธซเน‰เธ„เธงเธฒเธกเธชเธณเธ„เธฑเธเน€เธ›เน‡เธ™เธญเธฑเธ™เธ”เธฑเธšเนเธฃเธ - - - Select your secondary priority - เน€เธฅเธทเธญเธเธ„เธงเธฒเธกเธชเธณเธ„เธฑเธเธฃเธญเธ‡เธ‚เธญเธ‡เธ„เธธเธ“ - - - Select your tertiary priority - เน€เธฅเธทเธญเธเธ„เธงเธฒเธกเธชเธณเธ„เธฑเธเธฃเธฐเธ”เธฑเธšเธชเธฒเธกเธ‚เธญเธ‡เธ„เธธเธ“ - - - MANAGE - เธˆเธฑเธ”เธเธฒเธฃ - - - Lower Limits - เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธฅเนˆเธฒเธ‡ - - - Higher Limits - เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™ - - - Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ•เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธชเธณเธซเธฃเธฑเธš <b>เน‚เธซเธกเธ”เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ</b> เธญเธขเนˆเธฒเธ‡เธชเธกเธšเธนเธฃเธ“เนŒ? - - - Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ•เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ‚เธญเธ‡เธ„เธธเธ“เธชเธณเธซเธฃเธฑเธšเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธเน‰เธฒเธงเธฃเน‰เธฒเธง</b> เธญเธขเนˆเธฒเธ‡เธชเธกเธšเธนเธฃเธ“เนŒ? - - - Are you sure you want to completely reset your settings for the <b>Standard</b> personality? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ•เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ‚เธญเธ‡เธ„เธธเธ“เธชเธณเธซเธฃเธฑเธšเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธกเธฒเธ•เธฃเธเธฒเธ™</b> เธญเธขเนˆเธฒเธ‡เธชเธกเธšเธนเธฃเธ“เนŒ? - - - Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ•เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธชเธณเธซเธฃเธฑเธšเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธœเนˆเธญเธ™เธ„เธฅเธฒเธข</b> เธ‚เธญเธ‡เธ„เธธเธ“เธ—เธฑเน‰เธ‡เธซเธกเธ”? - - - foot - เน€เธ—เน‰เธฒ - - - meter - เน€เธกเธ•เธฃ - - - meters - เน€เธกเธ•เธฃ - - - km/h - km/h - - - Target speed offset applied for posted limits between 0 and 29 km/h. - เธเธฒเธฃเธ›เธฃเธฑเธšเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เน‰เธฒเธซเธกเธฒเธขเธชเธณเธซเธฃเธฑเธšเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ—เธตเนˆเน‚เธžเธชเธ•เนŒเธฃเธฐเธซเธงเนˆเธฒเธ‡ 0 เธ–เธถเธ‡ 29 เธเธก./เธŠเธก. - - - Target speed offset applied for posted limits between 30 and 49 km/h. - เนƒเธŠเน‰เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เน‰เธฒเธซเธกเธฒเธขเธชเธณเธซเธฃเธฑเธšเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ—เธตเนˆเน‚เธžเธชเธ•เนŒเธฃเธฐเธซเธงเนˆเธฒเธ‡ 30 เธ–เธถเธ‡ 49 เธเธก./เธŠเธก. - - - Target speed offset applied for posted limits between 50 and 59 km/h. - เธเธฒเธฃเธ›เธฃเธฑเธšเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เน‰เธฒเธซเธกเธฒเธขเธชเธณเธซเธฃเธฑเธšเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ—เธตเนˆเน‚เธžเธชเธ•เนŒเธฃเธฐเธซเธงเนˆเธฒเธ‡ 50 เธ–เธถเธ‡ 59 เธเธก./เธŠเธก. - - - Target speed offset applied for posted limits between 60 and 79 km/h. - เนƒเธŠเน‰เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เน‰เธฒเธซเธกเธฒเธขเธชเธณเธซเธฃเธฑเธšเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ—เธตเนˆเน‚เธžเธชเธ•เนŒเธฃเธฐเธซเธงเนˆเธฒเธ‡ 60 เนเธฅเธฐ 79 เธเธก./เธŠเธก. - - - Target speed offset applied for posted limits between 80 and 99 km/h. - เธเธฒเธฃเธ›เธฃเธฑเธšเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เน‰เธฒเธซเธกเธฒเธขเธชเธณเธซเธฃเธฑเธšเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ—เธตเนˆเน‚เธžเธชเธ•เนŒเธฃเธฐเธซเธงเนˆเธฒเธ‡ 80 เธ–เธถเธ‡ 99 เธเธก./เธŠเธก. - - - Target speed offset applied for posted limits between 100 and 119 km/h. - เธเธฒเธฃเธ›เธฃเธฑเธšเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เน‰เธฒเธซเธกเธฒเธขเธชเธณเธซเธฃเธฑเธšเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ—เธตเนˆเน‚เธžเธชเธ•เนŒเธฃเธฐเธซเธงเนˆเธฒเธ‡ 100 เธ–เธถเธ‡ 119 เธเธก./เธŠเธก. - - - Target speed offset applied for posted limits between 120 and 140 km/h. - เนƒเธŠเน‰เธเธฒเธฃเธ›เธฃเธฑเธšเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เน‰เธฒเธซเธกเธฒเธขเธชเธณเธซเธฃเธฑเธšเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ—เธตเนˆเน‚เธžเธชเธ•เนŒเธฃเธฐเธซเธงเนˆเธฒเธ‡ 120 เนเธฅเธฐ 140 เธเธก./เธŠเธก. - Advanced Longitudinal Tuning - เธเธฒเธฃเธ›เธฃเธฑเธšเธˆเธนเธ™เธ•เธฒเธกเธขเธฒเธงเธ‚เธฑเน‰เธ™เธชเธนเธ‡ + เธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธ•เธฒเธกเธขเธฒเธงเธ‚เธฑเน‰เธ™เธชเธนเธ‡ - Advanced settings for customizing how openpilot handles acceleration and braking. - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ‚เธฑเน‰เธ™เธชเธนเธ‡เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธงเธดเธ˜เธตเธ—เธตเนˆ openpilot เธˆเธฑเธ”เธเธฒเธฃเธเธฑเธšเธเธฒเธฃเน€เธฃเนˆเธ‡เนเธฅเธฐเธเธฒเธฃเน€เธšเธฃเธ + <b>Advanced acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธเธฒเธฃเน€เธฃเนˆเธ‡เนเธฅเธฐเธเธฒเธฃเน€เธšเธฃเธเธ‚เธฑเน‰เธ™เธชเธนเธ‡</b> เน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธญเธ‡ openpilot เนƒเธซเน‰เธฅเธฐเน€เธญเธตเธขเธ”เธ‚เธถเน‰เธ™ Actuator Delay (Default: %1) - เธ„เธงเธฒเธกเธฅเนˆเธฒเธŠเน‰เธฒเธ‚เธญเธ‡เธ•เธฑเธงเธเธฃเธฐเธ•เธธเน‰เธ™ (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) + เธ„เธงเธฒเธกเธฅเนˆเธฒเธŠเน‰เธฒเธ‚เธญเธ‡เนเธญเธ„เธŠเธนเน€เธญเน€เธ•เธญเธฃเนŒ (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) Actuator Delay - เธ„เธงเธฒเธกเธฅเนˆเธฒเธŠเน‰เธฒเธ‚เธญเธ‡เธ•เธฑเธงเธเธฃเธฐเธ•เธธเน‰เธ™ + เธ„เธงเธฒเธกเธฅเนˆเธฒเธŠเน‰เธฒเธ‚เธญเธ‡เนเธญเธ„เธŠเธนเน€เธญเน€เธ•เธญเธฃเนŒ - Delay before throttle or brake takes effect. Higher values smooth slow actuators but can feel laggy; lower values react quicker but may overshoot. - เธ„เธงเธฒเธกเธฅเนˆเธฒเธŠเน‰เธฒเธเนˆเธญเธ™เธ—เธตเนˆเธ„เธฑเธ™เน€เธฃเนˆเธ‡เธซเธฃเธทเธญเน€เธšเธฃเธเธˆเธฐเธกเธตเธœเธฅ เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธ—เธณเนƒเธซเน‰เธเธฒเธฃเธ—เธณเธ‡เธฒเธ™เธ‚เธญเธ‡เธ•เธฑเธงเธเธฃเธฐเธ•เธธเน‰เธ™เธ—เธตเนˆเธŠเน‰เธฒเธฃเธฒเธšเธฃเธทเนˆเธ™เธ‚เธถเน‰เธ™เนเธ•เนˆเธฃเธนเน‰เธชเธถเธเธซเธ™เนˆเธงเธ‡ เธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธ•เธญเธšเธชเธ™เธญเธ‡เน„เธ”เน‰เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเธกเธตเน‚เธญเธเธฒเธชเน€เธเธดเธ™เน€เธ›เน‰เธฒเธซเธกเธฒเธข + <b>The time between openpilot's throttle or brake command and the vehicle's response.</b> Increase if the vehicle feels slow to react; decrease if it feels too eager or overshoots. + <b>เธฃเธฐเธขเธฐเน€เธงเธฅเธฒเธฃเธฐเธซเธงเนˆเธฒเธ‡เธ„เธณเธชเธฑเนˆเธ‡เธ„เธฑเธ™เน€เธฃเนˆเธ‡เธซเธฃเธทเธญเน€เธšเธฃเธเธ‚เธญเธ‡ openpilot เธเธฑเธšเธเธฒเธฃเธ•เธญเธšเธชเธ™เธญเธ‡เธ‚เธญเธ‡เธฃเธ–</b> เน€เธžเธดเนˆเธกเธ„เนˆเธฒเธ™เธตเน‰เธซเธฒเธเธฃเธ–เธ•เธญเธšเธชเธ™เธญเธ‡เธŠเน‰เธฒ เธฅเธ”เธ„เนˆเธฒเธ™เธตเน‰เธซเธฒเธเธฃเธ–เธ•เธญเธšเธชเธ™เธญเธ‡เน„เธงเน€เธเธดเธ™เน„เธ›เธซเธฃเธทเธญ overshoot Start Acceleration (Default: %1) - เน€เธฃเธดเนˆเธกเธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) + เน€เธฃเธดเนˆเธกเธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) Start Acceleration - เน€เธฃเธดเนˆเธกเธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง + เน€เธฃเธดเนˆเธกเธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง - Extra acceleration applied when pulling away from a stop. Increase for snappier launches at the cost of smoothness; decrease for gentler starts. - เน€เธžเธดเนˆเธกเธ„เธงเธฒเธกเน€เธฃเนˆเธ‡เน€เธžเธดเนˆเธกเน€เธ•เธดเธกเน€เธกเธทเนˆเธญเธญเธญเธเธ•เธฑเธงเธˆเธฒเธเธเธฒเธฃเธซเธขเธธเธ” เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเธเธฒเธฃเธญเธญเธเธ•เธฑเธงเธ—เธตเนˆเธฃเธงเธ”เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเนเธฅเธเธเธฑเธšเธ„เธงเธฒเธกเธ™เธธเนˆเธกเธ™เธงเธฅเธ—เธตเนˆเธฅเธ”เธฅเธ‡; เธฅเธ”เน€เธžเธทเนˆเธญเธเธฒเธฃเธญเธญเธเธ•เธฑเธงเธ—เธตเนˆเธ™เธธเนˆเธกเธ™เธงเธฅเธเธงเนˆเธฒ + <b>Extra acceleration applied when starting from a stop.</b> Increase for quicker takeoffs; decrease for smoother, gentler starts. + <b>เน€เธžเธดเนˆเธกเธ„เธงเธฒเธกเน€เธฃเนˆเธ‡เธžเธดเน€เธจเธฉเน€เธกเธทเนˆเธญเธญเธญเธเธ•เธฑเธงเธˆเธฒเธเธซเธขเธธเธ”เธ™เธดเนˆเธ‡</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเธญเธญเธเธ•เธฑเธงเน„เธ”เน‰เธฃเธงเธ”เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเน€เธฃเธดเนˆเธกเธญเธญเธเธ•เธฑเธงเน„เธ”เน‰เธฃเธฒเธšเธฃเธทเนˆเธ™เนเธฅเธฐเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™. Start Speed (Default: %1) - เธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) + เธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) Start Speed - เน€เธฃเธดเนˆเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธง + เธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ - Speed where openpilot begins to exit the stopped state. Higher values avoid creeping but may feel sluggish; lower values move sooner but risk creeping. - เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆ openpilot เน€เธฃเธดเนˆเธกเธญเธญเธเธˆเธฒเธเธชเธ–เธฒเธ™เธฐเธซเธขเธธเธ” เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธซเธฅเธตเธเน€เธฅเธตเนˆเธขเธ‡เธเธฒเธฃเน€เธ„เธฅเธทเนˆเธญเธ™เธ—เธตเนˆเธŠเน‰เธฒเนเธ•เนˆเธฃเธนเน‰เธชเธถเธเน€เธ‰เธทเนˆเธญเธข; เธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเน€เธ„เธฅเธทเนˆเธญเธ™เธ—เธตเนˆเน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเน€เธชเธตเนˆเธขเธ‡เธ•เนˆเธญเธเธฒเธฃเน€เธ„เธฅเธทเนˆเธญเธ™เธ—เธตเนˆเธŠเน‰เธฒ + <b>The speed at which openpilot exits the stopped state.</b> Increase to reduce creeping; decrease to move sooner after stopping. + <b>เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆ openpilot เธญเธญเธเธˆเธฒเธเธชเธ–เธฒเธ™เธฐเธซเธขเธธเธ”เธ™เธดเนˆเธ‡</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเนƒเธซเน‰เธ„เธทเธšเธ„เธฅเธฒเธ™เธ™เน‰เธญเธขเธฅเธ‡; เธฅเธ”เน€เธžเธทเนˆเธญเนƒเธซเน‰เน€เธ„เธฅเธทเนˆเธญเธ™เธ•เธฑเธงเน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เธซเธฅเธฑเธ‡เธซเธขเธธเธ”เธ™เธดเนˆเธ‡ Stop Acceleration (Default: %1) - เธซเธขเธธเธ”เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) + เธซเธขเธธเธ”เธเธฒเธฃเน€เธฃเนˆเธ‡ (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) Stop Acceleration - เธซเธขเธธเธ”เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง + เธซเธขเธธเธ”เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง - Brake force applied to hold the vehicle still. Larger values prevent creeping on hills but might jerk to a stop. Smaller values can feel smoother but may allow rolling. - เนเธฃเธ‡เน€เธšเธฃเธเธ—เธตเนˆเนƒเธŠเน‰เน€เธžเธทเนˆเธญเธซเธขเธธเธ”เธฃเธ–เนƒเธซเน‰เธญเธขเธนเนˆเธเธฑเธšเธ—เธตเนˆ เธ„เนˆเธฒเธ—เธตเนˆเธกเธฒเธเธ‚เธถเน‰เธ™เธˆเธฐเธ›เน‰เธญเธ‡เธเธฑเธ™เธเธฒเธฃเน„เธซเธฅเธšเธ™เน€เธ™เธดเธ™เน€เธ‚เธฒเนเธ•เนˆเธเน‡เธญเธฒเธˆเธ—เธณเนƒเธซเน‰เธซเธขเธธเธ”เธเธฃเธฐเธ•เธธเธเน„เธ”เน‰ เธ„เนˆเธฒเธ—เธตเนˆเธ™เน‰เธญเธขเธฅเธ‡เธญเธฒเธˆเนƒเธซเน‰เธ„เธงเธฒเธกเธฃเธนเน‰เธชเธถเธเธ—เธตเนˆเธ™เธธเนˆเธกเธ™เธงเธฅเธเธงเนˆเธฒเนเธ•เนˆเธเน‡เธญเธฒเธˆเธ—เธณเนƒเธซเน‰เธฃเธ–เน„เธซเธฅเน„เธ”เน‰ + <b>Brake force applied to hold the vehicle at a standstill.</b> Increase to prevent rolling on hills; decrease for smoother, softer stops. + <b>เนƒเธŠเน‰เนเธฃเธ‡เน€เธšเธฃเธเน€เธžเธทเนˆเธญเธขเธถเธ”เธฃเธ–เนƒเธซเน‰เธญเธขเธนเนˆเธ™เธดเนˆเธ‡</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเธ›เน‰เธญเธ‡เธเธฑเธ™เธเธฒเธฃเน„เธซเธฅเธšเธ™เธ—เธฒเธ‡เธŠเธฑเธ™; เธฅเธ”เน€เธžเธทเนˆเธญเนƒเธซเน‰เธซเธขเธธเธ”เธ™เธธเนˆเธกเธ™เธงเธฅเนเธฅเธฐเธฅเธทเนˆเธ™เน„เธซเธฅเธกเธฒเธเธ‚เธถเน‰เธ™ Stopping Rate (Default: %1) - เธญเธฑเธ•เธฃเธฒเธเธฒเธฃเธซเธขเธธเธ” (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) + เธญเธฑเธ•เธฃเธฒเธเธฒเธฃเธซเธขเธธเธ” (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) Stopping Rate - เธญเธฑเธ•เธฃเธฒเธเธฒเธฃเธซเธขเธธเธ” + เธญเธฑเธ•เธฃเธฒเธเธฒเธฃเธซเธขเธธเธ” - How quickly braking ramps up when stopping. Faster rates shorten stopping distance but can be harsh; slower rates are smoother but need more room. - เธ„เธงเธฒเธกเน€เธฃเน‡เธงเนƒเธ™เธเธฒเธฃเน€เธšเธฃเธเน€เธžเธดเนˆเธกเธ‚เธถเน‰เธ™เธญเธขเนˆเธฒเธ‡เน„เธฃเน€เธกเธทเนˆเธญเธซเธขเธธเธ” เธเธฒเธฃเน€เธšเธฃเธเธ—เธตเนˆเน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เธˆเธฐเธ—เธณเนƒเธซเน‰เธฃเธฐเธขเธฐเธซเธขเธธเธ”เธชเธฑเน‰เธ™เธฅเธ‡เนเธ•เนˆเธชเธฒเธกเธฒเธฃเธ–เธ—เธณเนƒเธซเน‰เธฃเธนเน‰เธชเธถเธเธเธฃเธฐเนเธ—เธเน„เธ”เน‰; เธเธฒเธฃเน€เธšเธฃเธเธ—เธตเนˆเธŠเน‰เธฒเธฅเธ‡เธˆเธฐเธ™เธธเนˆเธกเธ™เธงเธฅเธเธงเนˆเธฒเนเธ•เนˆเธ•เน‰เธญเธ‡เธเธฒเธฃเธžเธทเน‰เธ™เธ—เธตเนˆเธกเธฒเธเธ‚เธถเน‰เธ™ + <b>How quickly braking ramps up when stopping.</b> Increase for shorter, firmer stops; decrease for smoother, longer stops. + <b>เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธเธฒเธฃเน€เธšเธฃเธเน€เธžเธดเนˆเธกเธ‚เธถเน‰เธ™เน€เธกเธทเนˆเธญเธซเธขเธธเธ”</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเนƒเธซเน‰เธซเธขเธธเธ”เธชเธฑเน‰เธ™เนเธฅเธฐเธซเธ™เธฑเธเนเธ™เนˆเธ™เธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเนƒเธซเน‰เธซเธขเธธเธ”เธ™เธธเนˆเธกเธ™เธงเธฅเนเธฅเธฐเธขเธฒเธงเธ™เธฒเธ™เธ‚เธถเน‰เธ™. Stop Speed (Default: %1) - เธซเธขเธธเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) + เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธซเธขเธธเธ” (เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: %1) Stop Speed - เธซเธขเธธเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง + เธซเธขเธธเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง - Speed where openpilot beings to enter the stopped state. Higher values brake earlier for smoother stops but might stop too soon; lower values wait longer and can overshoot. - เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆ openpilot เน€เธฃเธดเนˆเธกเน€เธ‚เน‰เธฒเธชเธนเนˆเธชเธ–เธฒเธ™เธฐเธซเธขเธธเธ” เธ„เนˆเธฒเนƒเธ™เธฃเธฐเธ”เธฑเธšเธชเธนเธ‡เธˆเธฐเน€เธšเธฃเธเธเนˆเธญเธ™เน€เธžเธทเนˆเธญเธเธฒเธฃเธซเธขเธธเธ”เธ—เธตเนˆเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™เนเธ•เนˆเธเน‡เธญเธฒเธˆเธซเธขเธธเธ”เน€เธฃเน‡เธงเน€เธเธดเธ™เน„เธ›; เธ„เนˆเธฒเนƒเธ™เธฃเธฐเธ”เธฑเธšเธ•เนˆเธณเธˆเธฐเธฃเธญเธ™เธฒเธ™เธ‚เธถเน‰เธ™เนเธฅเธฐเธญเธฒเธˆเน€เธฅเธขเธˆเธธเธ”เธซเธขเธธเธ”เน„เธ› + <b>The speed at which openpilot considers the vehicle stopped.</b> Increase to brake earlier and stop smoothly; decrease to wait longer but risk overshooting. + <b>เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆ openpilot เธ–เธทเธญเธงเนˆเธฒเธขเธฒเธ™เธžเธฒเธซเธ™เธฐเธซเธขเธธเธ”เธ™เธดเนˆเธ‡</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเน€เธšเธฃเธเนƒเธซเน‰เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธฅเธฐเธซเธขเธธเธ”เธญเธขเนˆเธฒเธ‡เธ™เธธเนˆเธกเธ™เธงเธฅ; เธฅเธ”เน€เธžเธทเนˆเธญเธฃเธญเธ™เธฒเธ™เธ‚เธถเน‰เธ™เนเธ•เนˆเน€เธชเธตเนˆเธขเธ‡เธ•เนˆเธญเธเธฒเธฃเน€เธฅเธขเธˆเธธเธ”เธซเธขเธธเธ” + + + Conditional Experimental Mode + เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡เธ•เธฒเธกเน€เธ‡เธทเนˆเธญเธ™เน„เธ‚ + + + <b>Automatically switch to "Experimental Mode" when set conditions are met.</b> Allows the model to handle challenging situations with smarter decision making. + <b>เธชเธฅเธฑเธšเน€เธ›เน‡เธ™ "เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡" เน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน€เธกเธทเนˆเธญเน€เธ›เน‡เธ™เน„เธ›เธ•เธฒเธกเน€เธ‡เธทเนˆเธญเธ™เน„เธ‚เธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰</b> เธŠเนˆเธงเธขเนƒเธซเน‰เน‚เธกเน€เธ”เธฅเธฃเธฑเธšเธกเธทเธญเธชเธ–เธฒเธ™เธเธฒเธฃเธ“เนŒเธ—เธตเนˆเธ—เน‰เธฒเธ—เธฒเธขเธ”เน‰เธงเธขเธเธฒเธฃเธ•เธฑเธ”เธชเธดเธ™เนƒเธˆเธ—เธตเนˆเธŠเธฒเธเธ‰เธฅเธฒเธ”เธขเธดเนˆเธ‡เธ‚เธถเน‰เธ™ + + + Below + เธ”เน‰เธฒเธ™เธฅเนˆเธฒเธ‡ + + + <b>Switch to "Experimental Mode" when driving below this speed without a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>เธชเธฅเธฑเธšเน„เธ›เนƒเธŠเน‰ โ€œเน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡โ€ เน€เธกเธทเนˆเธญเธ‚เธฑเธšเธ•เนˆเธณเธเธงเนˆเธฒเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ™เธตเน‰เน‚เธ”เธขเน„เธกเนˆเธกเธตเธฃเธ–เธ™เธณ</b> เน€เธžเธทเนˆเธญเธŠเนˆเธงเธขเนƒเธซเน‰ openpilot เธฃเธฑเธšเธกเธทเธญเธชเธ–เธฒเธ™เธเธฒเธฃเธ“เนŒเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ•เนˆเธณเน„เธ”เน‰เธฃเธฒเธšเธฃเธทเนˆเธ™เธขเธดเนˆเธ‡เธ‚เธถเน‰เธ™ + + + Curve Detected Ahead + เธ•เธฃเธงเธˆเธžเธšเน‚เธ„เน‰เธ‡เธ‚เน‰เธฒเธ‡เธซเธ™เน‰เธฒ + + + <b>Switch to "Experimental Mode" when a curve is detected</b> to allow the model to set an appropriate speed for the curve. + <b>เธชเธฅเธฑเธšเน„เธ›เนƒเธŠเน‰ "เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡" เน€เธกเธทเนˆเธญเธžเธšเน‚เธ„เน‰เธ‡</b> เน€เธžเธทเนˆเธญเนƒเธซเน‰เน‚เธกเน€เธ”เธฅเธเธณเธซเธ™เธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเน€เธซเธกเธฒเธฐเธชเธกเธชเธณเธซเธฃเธฑเธšเน‚เธ„เน‰เธ‡เธ™เธฑเน‰เธ™ + + + Lead Detected Ahead + เธ•เธฃเธงเธˆเธžเธšเธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒ + + + <b>Switch to "Experimental Mode" when a slower or stopped vehicle is detected.</b> Can make braking smoother and more reliable on some vehicles. + <b>เธชเธฅเธฑเธšเน„เธ›เนƒเธŠเน‰ โ€œเน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡ (Experimental Mode)โ€ เน€เธกเธทเนˆเธญเธžเธšเธฃเธ–เธ—เธตเนˆเธŠเน‰เธฒเธเธงเนˆเธฒเธซเธฃเธทเธญเธซเธขเธธเธ”เธ™เธดเนˆเธ‡</b> เธญเธฒเธˆเธ—เธณเนƒเธซเน‰เธเธฒเธฃเน€เธšเธฃเธเธ™เธธเนˆเธกเธ™เธงเธฅเนเธฅเธฐเน€เธŠเธทเนˆเธญเธ–เธทเธญเน„เธ”เน‰เธกเธฒเธเธ‚เธถเน‰เธ™เนƒเธ™เธฃเธ–เธšเธฒเธ‡เธฃเธธเนˆเธ™ + + + Navigation-Based + เธญเธดเธ‡เธเธฒเธฃเธ™เธณเธ—เธฒเธ‡ + + + <b>Switch to "Experimental Mode" when approaching intersections or turns on the active route</b> while using "Navigate on openpilot" (NOO) to allow the model to set an appropriate speed for upcoming maneuvers. + <b>เธชเธฅเธฑเธšเน„เธ›เนƒเธŠเน‰ "เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡" เน€เธกเธทเนˆเธญเน€เธ‚เน‰เธฒเนƒเธเธฅเน‰เธ—เธฒเธ‡เนเธขเธเธซเธฃเธทเธญเธ—เธฒเธ‡เน‚เธ„เน‰เธ‡เธšเธ™เน€เธชเน‰เธ™เธ—เธฒเธ‡เธ—เธตเนˆเธเธณเธฅเธฑเธ‡เนƒเธŠเน‰เธ‡เธฒเธ™</b> เธ‚เธ“เธฐเนƒเธŠเน‰ "Navigate on openpilot" (NOO) เน€เธžเธทเนˆเธญเนƒเธซเน‰เน‚เธกเน€เธ”เธฅเธเธณเธซเธ™เธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเน€เธซเธกเธฒเธฐเธชเธกเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเน€เธ„เธฅเธทเนˆเธญเธ™เธ—เธตเนˆเธ—เธตเนˆเธˆเธฐเน€เธเธดเธ”เธ‚เธถเน‰เธ™ + + + Predicted Stop In + เธ„เธฒเธ”เธเธฒเธฃเธ“เนŒเธซเธขเธธเธ”เนƒเธ™ + + + <b>Switch to "Experimental Mode" when openpilot predicts a stop within the set time.</b> This is usually triggered when the model "sees" a red light or stop sign ahead.<br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>เธชเธฅเธฑเธšเน€เธ›เน‡เธ™ "เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡" เน€เธกเธทเนˆเธญ openpilot เธ„เธฒเธ”เธเธฒเธฃเธ“เนŒเธงเนˆเธฒเธˆเธฐเธ•เน‰เธญเธ‡เธซเธขเธธเธ”เธ เธฒเธขเนƒเธ™เน€เธงเธฅเธฒเธ—เธตเนˆเธเธณเธซเธ™เธ”</b> เธกเธฑเธเธˆเธฐเธ—เธฃเธดเธเน€เธเธญเธฃเนŒเน€เธกเธทเนˆเธญเน‚เธกเน€เธ”เธฅ "เน€เธซเน‡เธ™" เน„เธŸเนเธ”เธ‡เธซเธฃเธทเธญเธ›เน‰เธฒเธขเธซเธขเธธเธ”เธ‚เน‰เธฒเธ‡เธซเธ™เน‰เธฒ<br><br><i><b>เธ‚เน‰เธญเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเธฃเธฑเธšเธœเธดเธ”</b>: openpilot เน„เธกเนˆเน„เธ”เน‰เธ•เธฃเธงเธˆเธˆเธฑเธšเธชเธฑเธเธเธฒเธ“เน„เธŸเธˆเธฃเธฒเธˆเธฃเธซเธฃเธทเธญเธ›เน‰เธฒเธขเธซเธขเธธเธ”เน‚เธ”เธขเธ•เธฃเธ‡ เนƒเธ™ "เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡" openpilot เธ•เธฑเธ”เธชเธดเธ™เนƒเธˆเธ‚เธฑเธšเธ‚เธตเนˆเนเธšเธš end-to-end เธˆเธฒเธเธ เธฒเธžเธˆเธฒเธเธเธฅเน‰เธญเธ‡ เธ‹เธถเนˆเธ‡เธซเธกเธฒเธขเธ„เธงเธฒเธกเธงเนˆเธฒเธญเธฒเธˆเธซเธขเธธเธ”เนเธกเน‰เน„เธกเนˆเธกเธตเน€เธซเธ•เธธเธœเธฅเธŠเธฑเธ”เน€เธˆเธ™</i> + + + Turn Signal Below + เน„เธŸเน€เธฅเธตเน‰เธขเธงเธ”เน‰เธฒเธ™เธฅเนˆเธฒเธ‡ + + + <b>Switch to "Experimental Mode" when using a turn signal below the set speed</b> to allow the model to choose an appropriate speed for smoother left and right turns. + <b>เธชเธฅเธฑเธšเน€เธ›เน‡เธ™ "เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡" เน€เธกเธทเนˆเธญเนƒเธŠเน‰เธชเธฑเธเธเธฒเธ“เน„เธŸเน€เธฅเธตเน‰เธขเธงเธ‚เธ“เธฐเธ•เนˆเธณเธเธงเนˆเธฒเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰</b> เน€เธžเธทเนˆเธญเนƒเธซเน‰เน‚เธกเน€เธ”เธฅเน€เธฅเธทเธญเธเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเน€เธซเธกเธฒเธฐเธชเธกเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเน€เธฅเธตเน‰เธขเธงเธ‹เน‰เธฒเธขเนเธฅเธฐเธ‚เธงเธฒเน„เธ”เน‰เธฃเธฒเธšเธฃเธทเนˆเธ™เธ‚เธถเน‰เธ™ + + + Status Widget + เธงเธดเธ”เน€เธˆเน‡เธ•เธชเธ–เธฒเธ™เธฐ + + + <b>Show which condition triggered "Experimental Mode"</b> on the driving screen. + <b>เนเธชเธ”เธ‡เน€เธ‡เธทเนˆเธญเธ™เน„เธ‚เธ—เธตเนˆเธ—เธณเนƒเธซเน‰เน€เธเธดเธ” "Experimental Mode"</b> เธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + + + Curve Speed Controller + เธ•เธฑเธงเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเนƒเธ™เน‚เธ„เน‰เธ‡ + + + <b>Automatically slow down for upcoming curves</b> using data learned from your driving style, adapting to curves as you would. + <b>เธŠเธฐเธฅเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเธชเธณเธซเธฃเธฑเธšเน‚เธ„เน‰เธ‡เธ‚เน‰เธฒเธ‡เธซเธ™เน‰เธฒ</b> เน‚เธ”เธขเนƒเธŠเน‰เธ‚เน‰เธญเธกเธนเธฅเธ—เธตเนˆเน€เธฃเธตเธขเธ™เธฃเธนเน‰เธˆเธฒเธเธชเน„เธ•เธฅเนŒเธเธฒเธฃเธ‚เธฑเธšเธ‚เธญเธ‡เธ„เธธเธ“ เธ›เธฃเธฑเธšเธ•เธฒเธกเน‚เธ„เน‰เธ‡เน€เธซเธกเธทเธญเธ™เธ—เธตเนˆเธ„เธธเธ“เธ‚เธฑเธšเน€เธญเธ‡ + + + Calibrated Lateral Acceleration + เธญเธฑเธ•เธฃเธฒเน€เธฃเนˆเธ‡เธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เธ—เธตเนˆเธ›เธฃเธฑเธšเน€เธ—เธตเธขเธšเนเธฅเน‰เธง + + + <b>The learned lateral acceleration from collected driving data.</b> This sets how fast openpilot will take curves. Higher values allow faster cornering; lower values slow the vehicle for gentler turns. + <b>เธเธฒเธฃเน€เธฃเนˆเธ‡เธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เธ—เธตเนˆเน€เธฃเธตเธขเธ™เธฃเธนเน‰เธˆเธฒเธเธ‚เน‰เธญเธกเธนเธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเน€เธเน‡เธšเธฃเธงเธšเธฃเธงเธก</b> เธ„เนˆเธฒเธ™เธตเน‰เธเธณเธซเธ™เธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆ openpilot เธˆเธฐเน€เธ‚เน‰เธฒเน‚เธ„เน‰เธ‡ เธ„เนˆเธฒเธชเธนเธ‡เธŠเนˆเธงเธขเนƒเธซเน‰เน€เธ‚เน‰เธฒเน‚เธ„เน‰เธ‡เน„เธ”เน‰เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™; เธ„เนˆเธฒเธ•เนˆเธณเธˆเธฐเธŠเธฐเธฅเธญเธฃเธ–เน€เธžเธทเนˆเธญเนƒเธซเน‰เน€เธฅเธตเน‰เธขเธงเน„เธ”เน‰เธฅเธฐเธกเธธเธ™เธ‚เธถเน‰เธ™ + + + Calibration Progress + เธ„เธงเธฒเธกเธ„เธทเธšเธซเธ™เน‰เธฒเธเธฒเธฃเธ›เธฃเธฑเธšเน€เธ—เธตเธขเธš + + + <b>How much curve data has been collected.</b> This is a progress meter; it is normal for the value to stay low and rarely reach 100%. + <b>เธฃเธงเธšเธฃเธงเธกเธ‚เน‰เธญเธกเธนเธฅเน‚เธ„เน‰เธ‡เน„เธ›เน€เธ—เนˆเธฒเนƒเธ”เนเธฅเน‰เธง</b> เธ™เธตเนˆเธ„เธทเธญเธกเธฒเธ•เธฃเธงเธฑเธ”เธ„เธงเธฒเธกเธ„เธทเธšเธซเธ™เน‰เธฒ; เน€เธ›เน‡เธ™เน€เธฃเธทเนˆเธญเธ‡เธ›เธเธ•เธดเธ—เธตเนˆเธ„เนˆเธฒเธขเธฑเธ‡เธ„เธ‡เธ•เนˆเธณเนเธฅเธฐเนเธ—เธšเน„เธกเนˆเธ–เธถเธ‡ 100% + + + Reset Curve Data + เธฃเธตเน€เธ‹เน‡เธ•เธ‚เน‰เธญเธกเธนเธฅเน€เธชเน‰เธ™เน‚เธ„เน‰เธ‡ + + + <b>Reset collected user data for "Curve Speed Controller".</b> + <b>เธฃเธตเน€เธ‹เน‡เธ•เธ‚เน‰เธญเธกเธนเธฅเธœเธนเน‰เนƒเธŠเน‰เธ—เธตเนˆเน€เธเน‡เธšเธชเธณเธซเธฃเธฑเธš "Curve Speed Controller"</b> + + + <b>Show the "Curve Speed Controller" target speed on the driving screen.</b> + <b>เนเธชเธ”เธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ›เน‰เธฒเธซเธกเธฒเธขเธ‚เธญเธ‡ "Curve Speed Controller" เธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ</b> + + + Driving Personalities + เธšเธธเธ„เธฅเธดเธเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + + + <b>Customize the "Driving Personalities"</b> to better match your driving style. + <b>เธ›เธฃเธฑเธšเนเธ•เนˆเธ‡ "เธฅเธฑเธเธฉเธ“เธฐเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ"</b> เนƒเธซเน‰เน€เธซเธกเธฒเธฐเธเธฑเธšเธชเน„เธ•เธฅเนŒเธเธฒเธฃเธ‚เธฑเธšเธ‚เธญเธ‡เธ„เธธเธ“เธกเธฒเธเธ‚เธถเน‰เธ™ + + + Traffic Mode + เน‚เธซเธกเธ”เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ + + + <b>Customize the "Traffic Mode" personality profile.</b> Designed for stop-and-go driving. + <b>เธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž "เน‚เธซเธกเธ”เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ"</b> เธญเธญเธเนเธšเธšเธกเธฒเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธซเธขเธธเธ”-เน€เธ„เธฅเธทเนˆเธญเธ™ + + + Following Distance + เธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡เธ•เธดเธ”เธ•เธฒเธก + + + <b>The minimum following distance to the lead vehicle in "Traffic Mode".</b> openpilot blends between this value and the "Aggressive" profile as speed increases. Increase for more space; decrease for tighter gaps. + <b>เธฃเธฐเธขเธฐเธ•เธดเธ”เธ•เธฒเธกเธ‚เธฑเน‰เธ™เธ•เนˆเธณเธ–เธถเธ‡เธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒเนƒเธ™ โ€œเน‚เธซเธกเธ”เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃโ€</b> openpilot เธˆเธฐเธœเธชเธกเธฃเธฐเธซเธงเนˆเธฒเธ‡เธ„เนˆเธฒเธ™เธตเน‰เธเธฑเธšเน‚เธ›เธฃเน„เธŸเธฅเนŒ โ€œเธเน‰เธฒเธงเธฃเน‰เธฒเธงโ€ เน€เธกเธทเนˆเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธžเธดเนˆเธกเธ‚เธถเน‰เธ™ เน€เธžเธดเนˆเธกเธ„เนˆเธฒเธ™เธตเน‰เน€เธžเธทเนˆเธญเน€เธงเน‰เธ™เธฃเธฐเธขเธฐเธกเธฒเธเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเธŠเนˆเธญเธ‡เธงเนˆเธฒเธ‡เธ—เธตเนˆเนเธ™เนˆเธ™เธ‚เธถเน‰เธ™ + + + Acceleration Smoothness + เธ„เธงเธฒเธกเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธญเธ‡เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง + + + <b>How smoothly openpilot accelerates in "Traffic Mode".</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>เธ„เธงเธฒเธกเธ™เธธเนˆเธกเธ™เธงเธฅเธ—เธตเนˆ openpilot เน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเนƒเธ™ "เน‚เธซเธกเธ”เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ"</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเธญเธญเธเธ•เธฑเธงเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเธญเธญเธเธ•เธฑเธงเน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเธกเธตเธเธฃเธฐเธŠเธฒเธเธกเธฒเธเธ‚เธถเน‰เธ™ + + + Braking Smoothness + เธ„เธงเธฒเธกเธฃเธฒเธšเธฃเธทเนˆเธ™เธ‚เธญเธ‡เธเธฒเธฃเน€เธšเธฃเธ + + + <b>How smoothly openpilot brakes in "Traffic Mode".</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>เธ„เธงเธฒเธกเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธญเธ‡เธเธฒเธฃเน€เธšเธฃเธเธ‚เธญเธ‡ openpilot เนƒเธ™เน‚เธซเธกเธ” "Traffic Mode"</b> เน€เธžเธดเนˆเธกเธ„เนˆเธฒเธ™เธตเน‰เน€เธžเธทเนˆเธญเธˆเธญเธ”เธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™; เธฅเธ”เธ„เนˆเธฒเธ™เธตเน‰เน€เธžเธทเนˆเธญเนƒเธซเน‰เธซเธขเธธเธ”เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเนเธฃเธ‡เธเธงเนˆเธฒ + + + Safety Gap Bias + เธญเธ„เธ•เธดเธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡เน€เธžเธทเนˆเธญเธ„เธงเธฒเธกเธ›เธฅเธญเธ”เธ เธฑเธข + + + <b>How much extra space openpilot keeps from the vehicle ahead in "Traffic Mode".</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>เธฃเธฐเธขเธฐเน€เธžเธดเนˆเธกเธ—เธตเนˆ openpilot เธฃเธฑเธเธฉเธฒเธˆเธฒเธเธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒเนƒเธ™ โ€œเน‚เธซเธกเธ”เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃโ€</b> เน€เธžเธดเนˆเธกเธ„เนˆเธฒเธ™เธตเน‰เน€เธžเธทเนˆเธญเนƒเธซเน‰เธŠเนˆเธญเธ‡เธงเนˆเธฒเธ‡เธเธงเน‰เธฒเธ‡เธ‚เธถเน‰เธ™เนเธฅเธฐเธ•เธฒเธกเธญเธขเนˆเธฒเธ‡เธฃเธฐเธกเธฑเธ”เธฃเธฐเธงเธฑเธ‡เธกเธฒเธเธ‚เธถเน‰เธ™; เธฅเธ”เธ„เนˆเธฒเธ™เธตเน‰เน€เธžเธทเนˆเธญเนƒเธซเน‰เธŠเนˆเธญเธ‡เธงเนˆเธฒเธ‡เนเธ„เธšเธฅเธ‡เนเธฅเธฐเธ•เธฒเธกเนƒเธเธฅเน‰เธŠเธดเธ”เธกเธฒเธเธ‚เธถเน‰เธ™ + + + Slowdown Response + เธเธฒเธฃเธ•เธญเธšเธชเธ™เธญเธ‡เธเธฒเธฃเธŠเธฐเธฅเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธง + + + <b>How smoothly openpilot slows down in "Traffic Mode".</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>เธ„เธงเธฒเธกเธ™เธธเนˆเธกเธ™เธงเธฅเธ—เธตเนˆ openpilot เธŠเธฐเธฅเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธงเนƒเธ™ โ€œเน‚เธซเธกเธ”เธˆเธฃเธฒเธˆเธฃโ€</b> เน€เธžเธดเนˆเธกเธ„เนˆเธฒเธ™เธตเน‰เน€เธžเธทเนˆเธญเนƒเธซเน‰เธŠเธฐเธฅเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™; เธฅเธ”เธ„เนˆเธฒเธ™เธตเน‰เน€เธžเธทเนˆเธญเนƒเธซเน‰เธŠเธฐเธฅเธญเน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเน€เธ‰เธตเธขเธšเธ„เธกเธเธงเนˆเธฒ + + + Speed-Up Response + เน€เธžเธดเนˆเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเนƒเธ™เธเธฒเธฃเธ•เธญเธšเธชเธ™เธญเธ‡ + + + <b>How smoothly openpilot speeds up in "Traffic Mode".</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>เธฃเธฐเธ”เธฑเธšเธ„เธงเธฒเธกเธ™เธธเนˆเธกเธ™เธงเธฅเธ—เธตเนˆ openpilot เน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเนƒเธ™ โ€œเน‚เธซเธกเธ”เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃโ€</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเนƒเธซเน‰เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเนƒเธซเน‰เธเธฒเธฃเน€เธฃเนˆเธ‡เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเธเธฃเธฐเธŠเธฒเธเธเธงเนˆเธฒ + + + Reset to Defaults + เธฃเธตเน€เธ‹เน‡เธ•เน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ + + + <b>Reset "Traffic Mode" settings to defaults.</b> + <b>เธฃเธตเน€เธ‹เน‡เธ•เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ "Traffic Mode" เน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™</b> + + + Aggressive + เธเน‰เธฒเธงเธฃเน‰เธฒเธง + + + <b>Customize the "Aggressive" personality profile.</b> Designed for assertive driving with tighter gaps. + <b>เธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž "Aggressive"</b> เธญเธญเธเนเธšเธšเธกเธฒเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเธกเธฑเนˆเธ™เนƒเธˆเธ”เน‰เธงเธขเธŠเนˆเธญเธ‡เธงเนˆเธฒเธ‡เธ—เธตเนˆเนเธ„เธšเธเธงเนˆเธฒ + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Aggressive" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.25 seconds. + <b>เธˆเธณเธ™เธงเธ™เธงเธดเธ™เธฒเธ—เธตเธ—เธตเนˆ openpilot เธ•เธฒเธกเธซเธฅเธฑเธ‡เธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒเธ‚เธ“เธฐเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒ "Aggressive"</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเน€เธžเธดเนˆเธกเธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡; เธฅเธ”เน€เธžเธทเนˆเธญเนƒเธซเน‰เธŠเนˆเธญเธ‡เธงเนˆเธฒเธ‡เนเธ„เธšเธฅเธ‡<br><br>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: 1.25 เธงเธดเธ™เธฒเธ—เธต + + + <b>How smoothly openpilot accelerates with the "Aggressive" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>เธ„เธงเธฒเธกเธ™เธธเนˆเธกเธ™เธงเธฅเนƒเธ™เธเธฒเธฃเน€เธฃเนˆเธ‡เธ‚เธญเธ‡ openpilot เน€เธกเธทเนˆเธญเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒ "Aggressive"</b> เน€เธžเธดเนˆเธกเธ„เนˆเธฒเธ™เธตเน‰เน€เธžเธทเนˆเธญเธญเธญเธเธ•เธฑเธงเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™; เธฅเธ”เธ„เนˆเธฒเธ™เธตเน‰เน€เธžเธทเนˆเธญเธญเธญเธเธ•เธฑเธงเน€เธฃเน‡เธงเนเธ•เนˆเธเธฃเธฐเธŠเธฒเธเธกเธฒเธเธ‚เธถเน‰เธ™ + + + <b>How smoothly openpilot brakes with the "Aggressive" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>เธ„เธงเธฒเธกเธ™เธธเนˆเธกเธ™เธงเธฅเนƒเธ™เธเธฒเธฃเน€เธšเธฃเธเธ‚เธญเธ‡ openpilot เธ”เน‰เธงเธขเน‚เธ›เธฃเน„เธŸเธฅเนŒ "Aggressive"</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเธเธฒเธฃเธซเธขเธธเธ”เธ—เธตเนˆเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเธเธฒเธฃเน€เธšเธฃเธเธ—เธตเนˆเน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเน€เธ‰เธตเธขเธšเธ„เธกเธเธงเนˆเธฒ. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Aggressive" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>เธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡เน€เธžเธดเนˆเธกเน€เธ•เธดเธกเธ—เธตเนˆ openpilot เธฃเธฑเธเธฉเธฒเธˆเธฒเธเธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒเน€เธกเธทเนˆเธญเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒ "Aggressive"</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเธŠเนˆเธญเธ‡เธงเนˆเธฒเธ‡เธ—เธตเนˆเธเธงเน‰เธฒเธ‡เธ‚เธถเน‰เธ™เนเธฅเธฐเธเธฒเธฃเธ•เธฒเธกเธญเธขเนˆเธฒเธ‡เธฃเธฐเธกเธฑเธ”เธฃเธฐเธงเธฑเธ‡เธกเธฒเธเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเธŠเนˆเธญเธ‡เธงเนˆเธฒเธ‡เธ—เธตเนˆเนเธ„เธšเธฅเธ‡เนเธฅเธฐเธเธฒเธฃเธ•เธฒเธกเนƒเธเธฅเน‰เธ‚เธถเน‰เธ™. + + + <b>How smoothly openpilot slows down with the "Aggressive" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>เธ„เธงเธฒเธกเธ™เธธเนˆเธกเธ™เธงเธฅเธ—เธตเนˆ openpilot เธŠเธฐเธฅเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ”เน‰เธงเธขเน‚เธ›เธฃเน„เธŸเธฅเนŒ "Aggressive"</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเนƒเธซเน‰เธŠเธฐเธฅเธญเธญเธขเนˆเธฒเธ‡เธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเนƒเธซเน‰เธŠเธฐเธฅเธญเน„เธ”เน‰เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเธกเธธเธกเธŠเธฑเธ™เธเธงเนˆเธฒ + + + <b>How smoothly openpilot speeds up with the "Aggressive" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>เธ„เธงเธฒเธกเธฃเธฒเธšเธฃเธทเนˆเธ™เธ—เธตเนˆ openpilot เน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ”เน‰เธงเธขเน‚เธ›เธฃเน„เธŸเธฅเนŒ "Aggressive"</b> เน€เธžเธดเนˆเธกเธ„เนˆเธฒเธ™เธตเน‰เน€เธžเธทเนˆเธญเนƒเธซเน‰เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™; เธฅเธ”เธ„เนˆเธฒเธ™เธตเน‰เน€เธžเธทเนˆเธญเนƒเธซเน‰เน€เธฃเนˆเธ‡เน„เธ”เน‰เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเธเธฃเธฐเธŠเธฒเธเธกเธฒเธเธ‚เธถเน‰เธ™ + + + <b>Reset the "Aggressive" profile to defaults.</b> + <b>เธฃเธตเน€เธ‹เน‡เธ•เน‚เธ›เธฃเน„เธŸเธฅเนŒ "Aggressive" เน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™</b> + + + Standard + เธกเธฒเธ•เธฃเธเธฒเธ™ + + + <b>Customize the "Standard" personality profile.</b> Designed for balanced driving with moderate gaps. + <b>เธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž "เธกเธฒเธ•เธฃเธเธฒเธ™"</b> เธญเธญเธเนเธšเธšเธกเธฒเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเธชเธกเธ”เธธเธฅเธžเธฃเน‰เธญเธกเธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡เธ›เธฒเธ™เธเธฅเธฒเธ‡ + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Standard" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.45 seconds. + <b>เธˆเธณเธ™เธงเธ™เธงเธดเธ™เธฒเธ—เธตเธ—เธตเนˆ openpilot เธ•เธฒเธกเธซเธฅเธฑเธ‡เธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒเน€เธกเธทเนˆเธญเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒ "Standard"</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเน€เธงเน‰เธ™เธฃเธฐเธขเธฐเธกเธฒเธเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเธŠเนˆเธญเธ‡เธงเนˆเธฒเธ‡เธ—เธตเนˆเนเธ„เธšเธฅเธ‡<br><br>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: 1.45 เธงเธดเธ™เธฒเธ—เธต + + + <b>How smoothly openpilot accelerates with the "Standard" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>เธ„เธงเธฒเธกเธ™เธธเนˆเธกเธ™เธงเธฅเนƒเธ™เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธญเธ‡ openpilot เธ”เน‰เธงเธขเน‚เธ›เธฃเน„เธŸเธฅเนŒ "Standard"</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเธญเธญเธเธ•เธฑเธงเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเธญเธญเธเธ•เธฑเธงเน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเธเธฃเธฐเธŠเธฒเธเธกเธฒเธเธ‚เธถเน‰เธ™ + + + <b>How smoothly openpilot brakes with the "Standard" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>เธ„เธงเธฒเธกเธ™เธธเนˆเธกเธ™เธงเธฅเธ—เธตเนˆ openpilot เน€เธšเธฃเธเธ”เน‰เธงเธขเน‚เธ›เธฃเน„เธŸเธฅเนŒ "Standard"</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเนƒเธซเน‰เธซเธขเธธเธ”เธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเนƒเธซเน‰เธซเธขเธธเธ”เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเนเธฃเธ‡เธเธงเนˆเธฒ + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Standard" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>เธฃเธฐเธขเธฐเน€เธžเธดเนˆเธกเธ—เธตเนˆ openpilot เน€เธงเน‰เธ™เธˆเธฒเธเธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒเน€เธกเธทเนˆเธญเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒ โ€œเธกเธฒเธ•เธฃเธเธฒเธ™โ€</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเนƒเธซเน‰เธŠเนˆเธญเธ‡เธงเนˆเธฒเธ‡เธกเธฒเธเธ‚เธถเน‰เธ™เนเธฅเธฐเธ•เธฒเธกเธญเธขเนˆเธฒเธ‡เธฃเธฐเธกเธฑเธ”เธฃเธฐเธงเธฑเธ‡เธกเธฒเธเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเนƒเธซเน‰เธŠเนˆเธญเธ‡เธงเนˆเธฒเธ‡เนเธ„เธšเธฅเธ‡เนเธฅเธฐเธ•เธฒเธกเนƒเธเธฅเน‰เธ‚เธถเน‰เธ™ + + + <b>How smoothly openpilot slows down with the "Standard" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>เธ„เธงเธฒเธกเธ™เธธเนˆเธกเธ™เธงเธฅเธ—เธตเนˆ openpilot เธŠเธฐเธฅเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ”เน‰เธงเธขเน‚เธ›เธฃเน„เธŸเธฅเนŒ "เธกเธฒเธ•เธฃเธเธฒเธ™"</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเนƒเธซเน‰เธŠเธฐเธฅเธญเธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเนƒเธซเน‰เธŠเธฐเธฅเธญเน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเน€เธ‰เธตเธขเธšเธ„เธกเธเธงเนˆเธฒเน€เธ”เธดเธก. + + + <b>How smoothly openpilot speeds up with the "Standard" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>เธ„เธงเธฒเธกเธฃเธฒเธšเธฃเธทเนˆเธ™เธ—เธตเนˆ openpilot เน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ”เน‰เธงเธขเน‚เธ›เธฃเน„เธŸเธฅเนŒ "เธกเธฒเธ•เธฃเธเธฒเธ™"</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเนƒเธซเน‰เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเนƒเธซเน‰เน€เธฃเนˆเธ‡เน„เธ”เน‰เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเธเธฃเธฐเธŠเธฒเธเธกเธฒเธเธ‚เธถเน‰เธ™ + + + <b>Reset the "Standard" profile to defaults.</b> + <b>เธฃเธตเน€เธ‹เน‡เธ•เน‚เธ›เธฃเน„เธŸเธฅเนŒ "เธกเธฒเธ•เธฃเธเธฒเธ™" เน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™</b> + + + Relaxed + เธœเนˆเธญเธ™เธ„เธฅเธฒเธข + + + <b>Customize the "Relaxed" personality profile.</b> Designed for smoother, more comfortable driving with larger gaps. + <b>เธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž "เธœเนˆเธญเธ™เธ„เธฅเธฒเธข"</b> เธญเธญเธเนเธšเธšเธกเธฒเน€เธžเธทเนˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเธฃเธฒเธšเธฃเธทเนˆเธ™เนเธฅเธฐเธชเธšเธฒเธขเธ‚เธถเน‰เธ™ เธžเธฃเน‰เธญเธกเธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡เธ—เธตเนˆเธกเธฒเธเธเธงเนˆเธฒ + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Relaxed" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.75 seconds. + <b>เธˆเธณเธ™เธงเธ™เธงเธดเธ™เธฒเธ—เธตเธ—เธตเนˆ openpilot เธ•เธฒเธกเธซเธฅเธฑเธ‡เธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒเน€เธกเธทเนˆเธญเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒ โ€œเธœเนˆเธญเธ™เธ„เธฅเธฒเธขโ€</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเน€เธงเน‰เธ™เธฃเธฐเธขเธฐเธกเธฒเธเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเธŠเนˆเธญเธ‡เธงเนˆเธฒเธ‡เธ—เธตเนˆเนเธ„เธšเธฅเธ‡<br><br>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™: 1.75 เธงเธดเธ™เธฒเธ—เธต + + + <b>How smoothly openpilot accelerates with the "Relaxed" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>เธ„เธงเธฒเธกเธ™เธธเนˆเธกเธ™เธงเธฅเธ—เธตเนˆ openpilot เน€เธฃเนˆเธ‡เน€เธกเธทเนˆเธญเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒ "Relaxed"</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเธญเธญเธเธ•เธฑเธงเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเธญเธญเธเธ•เธฑเธงเน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเธเธฃเธฐเธŠเธฒเธเธกเธฒเธเธ‚เธถเน‰เธ™ + + + <b>How smoothly openpilot brakes with the "Relaxed" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>เธ„เธงเธฒเธกเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธญเธ‡เธเธฒเธฃเน€เธšเธฃเธเธ‚เธญเธ‡ openpilot เธ”เน‰เธงเธขเน‚เธ›เธฃเน„เธŸเธฅเนŒ "Relaxed"</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเธเธฒเธฃเธซเธขเธธเธ”เธ—เธตเนˆเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเธเธฒเธฃเน€เธšเธฃเธเธ—เธตเนˆเน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเธ„เธกเธเธงเนˆเนˆเธฒ + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Relaxed" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>เธฃเธฐเธขเธฐเน€เธžเธดเนˆเธกเธ—เธตเนˆ openpilot เน€เธงเน‰เธ™เธˆเธฒเธเธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒเน€เธกเธทเนˆเธญเนƒเธŠเน‰เน‚เธ›เธฃเน„เธŸเธฅเนŒ "Relaxed"</b> เน€เธžเธดเนˆเธกเธ„เนˆเธฒเธ™เธตเน‰เน€เธžเธทเนˆเธญเธŠเนˆเธญเธ‡เธงเนˆเธฒเธ‡เธ—เธตเนˆเธเธงเน‰เธฒเธ‡เธ‚เธถเน‰เธ™เนเธฅเธฐเธเธฒเธฃเธ•เธฒเธกเธญเธขเนˆเธฒเธ‡เธฃเธฐเธกเธฑเธ”เธฃเธฐเธงเธฑเธ‡เธกเธฒเธเธ‚เธถเน‰เธ™; เธฅเธ”เธ„เนˆเธฒเธ™เธตเน‰เน€เธžเธทเนˆเธญเธŠเนˆเธญเธ‡เธงเนˆเธฒเธ‡เธ—เธตเนˆเนเธ„เธšเธฅเธ‡เนเธฅเธฐเธเธฒเธฃเธ•เธฒเธกเนƒเธซเน‰เนƒเธเธฅเน‰เธ‚เธถเน‰เธ™ + + + <b>How smoothly openpilot slows down with the "Relaxed" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>เธ„เธงเธฒเธกเธ™เธธเนˆเธกเธ™เธงเธฅเธ—เธตเนˆ openpilot เธŠเธฐเธฅเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ”เน‰เธงเธขเน‚เธ›เธฃเน„เธŸเธฅเนŒ "Relaxed"</b> เน€เธžเธดเนˆเธกเธ„เนˆเธฒเธ™เธตเน‰เน€เธžเธทเนˆเธญเนƒเธซเน‰เธŠเธฐเธฅเธญเธ•เธฑเธงเธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเนƒเธซเน‰เธŠเน‰เธฒเธฅเธ‡เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเน€เธ‰เธตเธขเธšเธ„เธกเธเธงเนˆเธฒ + + + <b>How smoothly openpilot speeds up with the "Relaxed" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>เธ„เธงเธฒเธกเธฃเธฒเธšเธฃเธทเนˆเธ™เธ—เธตเนˆ openpilot เน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ”เน‰เธงเธขเน‚เธ›เธฃเน„เธŸเธฅเนŒ "Relaxed"</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเนƒเธซเน‰เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เนˆเธญเธขเน€เธ›เน‡เธ™เธ„เนˆเธญเธขเน„เธ›เธกเธฒเธเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเนƒเธซเน‰เน€เธฃเนˆเธ‡เน„เธ”เน‰เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเธเธฃเธฐเธŠเธฒเธเธกเธฒเธเธเธงเนˆเธฒ + + + <b>Reset the "Relaxed" profile to defaults.</b> + <b>เธฃเธตเน€เธ‹เน‡เธ•เน‚เธ›เธฃเน„เธŸเธฅเนŒ "เธœเนˆเธญเธ™เธ„เธฅเธฒเธข" เน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™</b> + + + Longitudinal Tuning + เธเธฒเธฃเธ›เธฃเธฑเธšเธˆเธนเธ™เธ•เธฒเธกเธขเธฒเธง + + + <b>Acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธเธฒเธฃเน€เธฃเนˆเธ‡เนเธฅเธฐเธเธฒเธฃเน€เธšเธฃเธ</b> เน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเธˆเธนเธ™เนƒเธซเน‰เธฅเธฐเน€เธญเธตเธขเธ”เธงเนˆเธฒเธฃเธฐเธšเธš openpilot เธ‚เธฑเธšเธญเธขเนˆเธฒเธ‡เน„เธฃ + + + Acceleration Profile + เน‚เธ›เธฃเน„เธŸเธฅเนŒเธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง + + + <b>How quickly openpilot speeds up.</b> "Eco" is gentle and efficient, "Sport" is firmer and more responsive, and "Sport+" accelerates at the maximum rate allowed. + <b>openpilot เน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธฃเน‡เธงเนเธ„เนˆเน„เธซเธ™</b> โ€œEcoโ€ เธ™เธธเนˆเธกเธ™เธงเธฅเนเธฅเธฐเธ›เธฃเธฐเธซเธขเธฑเธ” โ€œSportโ€ เนเธ™เนˆเธ™เนเธฅเธฐเธ•เธญเธšเธชเธ™เธญเธ‡เน„เธง เนเธฅเธฐ โ€œSport+โ€ เน€เธฃเนˆเธ‡เธ”เน‰เธงเธขเธญเธฑเธ•เธฃเธฒเธชเธนเธ‡เธชเธธเธ”เธ—เธตเนˆเธญเธ™เธธเธเธฒเธ• + + + Deceleration Profile + เน‚เธ›เธฃเน„เธŸเธฅเนŒเธเธฒเธฃเธŠเธฐเธฅเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธง + + + <b>How firmly openpilot slows down.</b> "Eco" favors coasting, "Sport" applies stronger braking. + <b>เธ„เธงเธฒเธกเนเธฃเธ‡เธ—เธตเนˆ openpilot เธŠเธฐเธฅเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธง</b> โ€œEcoโ€ เน€เธ™เน‰เธ™เธ›เธฅเนˆเธญเธขเน„เธซเธฅ โ€œSportโ€ เนƒเธŠเน‰เน€เธšเธฃเธเนเธฃเธ‡เธเธงเนˆเธฒ + + + Human-Like Acceleration + เธเธฒเธฃเน€เธฃเนˆเธ‡เนเธšเธšเธกเธ™เธธเธฉเธขเนŒ + + + <b>Acceleration that mimics human behavior</b> by easing the throttle at low speeds and adding extra power when taking off from a stop. + <b>เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเน€เธฅเธตเธขเธ™เนเธšเธšเธžเธคเธ•เธดเธเธฃเธฃเธกเธกเธ™เธธเธฉเธขเนŒ</b> เน‚เธ”เธขเธœเนˆเธญเธ™เธ„เธฑเธ™เน€เธฃเนˆเธ‡เน€เธกเธทเนˆเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ•เนˆเธณเนเธฅเธฐเน€เธžเธดเนˆเธกเธเธณเธฅเธฑเธ‡เน€เธ›เน‡เธ™เธžเธดเน€เธจเธฉเน€เธกเธทเนˆเธญเธญเธญเธเธ•เธฑเธงเธˆเธฒเธเธˆเธธเธ”เธซเธขเธธเธ”เธ™เธดเนˆเธ‡ + + + Human-Like Following + เธเธฒเธฃเธ•เธดเธ”เธ•เธฒเธกเนเธšเธšเธกเธ™เธธเธฉเธขเนŒ + + + Lead Detection Sensitivity + เธ„เธงเธฒเธกเน„เธงเนƒเธ™เธเธฒเธฃเธ•เธฃเธงเธˆเธˆเธฑเธšเธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒ + + + <b>How sensitive openpilot is to detecting vehicles.</b> Higher sensitivity allows quicker detection at longer distances but may react to non-vehicle objects; lower sensitivity is more conservative and reduces false detections. + <b>เธ„เธงเธฒเธกเน„เธงเธ‚เธญเธ‡ openpilot เธ•เนˆเธญเธเธฒเธฃเธ•เธฃเธงเธˆเธˆเธฑเธšเธขเธฒเธ™เธžเธฒเธซเธ™เธฐ</b> เธ„เธงเธฒเธกเน„เธงเธชเธนเธ‡เธŠเนˆเธงเธขเนƒเธซเน‰เธ•เธฃเธงเธˆเธˆเธฑเธšเน„เธ”เน‰เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนƒเธ™เธฃเธฐเธขเธฐเน„เธเธฅเธ‚เธถเน‰เธ™ เนเธ•เนˆ เธญเธฒเธˆเธ•เธญเธšเธชเธ™เธญเธ‡เธ•เนˆเธญเธงเธฑเธ•เธ–เธธเธ—เธตเนˆเน„เธกเนˆเนƒเธŠเนˆเธขเธฒเธ™เธžเธฒเธซเธ™เธฐ; เธ„เธงเธฒเธกเน„เธงเธ•เนˆเธณเธˆเธฐเธฃเธฐเธกเธฑเธ”เธฃเธฐเธงเธฑเธ‡เธกเธฒเธเธเธงเนˆเธฒเนเธฅเธฐเธฅเธ”เธเธฒเธฃเธ•เธฃเธงเธˆเธˆเธฑเธšเธœเธดเธ”เธžเธฅเธฒเธ”เธฅเธ‡ + + + Maximum Acceleration + เธญเธฑเธ•เธฃเธฒเน€เธฃเนˆเธ‡เธชเธนเธ‡เธชเธธเธ” + + + <b>Limit the strongest acceleration</b> openpilot can command. + <b>เธˆเธณเธเธฑเธ”เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธชเธนเธ‡เธชเธธเธ”</b> เธ—เธตเนˆ openpilot เธชเธฒเธกเธฒเธฃเธ–เธชเธฑเนˆเธ‡เธเธฒเธฃเน„เธ”เน‰ + + + "Taco Bell Run" Turn Speed Hack + เนเธฎเน‡เธเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ‚เน‰เธฒเน‚เธ„เน‰เธ‡ "Taco Bell Run" + + + <b>The turn-speed hack from comma's 2022 "Taco Bell Run".</b> Designed to slow down for left and right turns. + <b>เนเธฎเน‡เธเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเนƒเธ™เน‚เธ„เน‰เธ‡เธˆเธฒเธ โ€œTaco Bell Runโ€ เธ›เธต 2022 เธ‚เธญเธ‡ comma</b> เธญเธญเธเนเธšเธšเธกเธฒเน€เธžเธทเนˆเธญเธŠเธฐเธฅเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธ“เธฐเน€เธฅเธตเน‰เธขเธงเธ‹เน‰เธฒเธขเนเธฅเธฐเธ‚เธงเธฒ + + + Quality of Life + เธ„เธธเธ“เธ เธฒเธžเธŠเธตเธงเธดเธ• + + + <b>Miscellaneous acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธเธฒเธฃเน€เธฃเนˆเธ‡เนเธฅเธฐเธเธฒเธฃเน€เธšเธฃเธเธญเธทเนˆเธ™เน†</b> เน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธงเธดเธ˜เธตเธ—เธตเนˆ openpilot เธ‚เธฑเธšเนƒเธซเน‰เธฅเธฐเน€เธญเธตเธขเธ”เธ‚เธถเน‰เธ™ + + + Cruise Interval + เธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡เธ„เธฃเธนเธ‹ + + + <b>How much the set speed increases or decreases</b> for each + or โ€“ cruise control button press. + <b>เธˆเธณเธ™เธงเธ™เธ—เธตเนˆเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰เน€เธžเธดเนˆเธกเธ‚เธถเน‰เธ™เธซเธฃเธทเธญเธฅเธ”เธฅเธ‡</b> เธ•เนˆเธญเธเธฒเธฃเธเธ”เธ›เธธเนˆเธกเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธง + เธซเธฃเธทเธญ โ€“ เนเธ•เนˆเธฅเธฐเธ„เธฃเธฑเน‰เธ‡ + + + Cruise Interval (Hold) + เธŠเนˆเธงเธ‡เธซเนˆเธฒเธ‡เธ„เธฃเธนเธ‹ (เธเธ”เธ„เน‰เธฒเธ‡) + + + <b>How much the set speed increases or decreases while holding the + or โ€“ cruise control buttons.</b> + <b>เธ›เธฃเธดเธกเธฒเธ“เธ—เธตเนˆเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰เน€เธžเธดเนˆเธกเธ‚เธถเน‰เธ™เธซเธฃเธทเธญเธฅเธ”เธฅเธ‡เธ‚เธ“เธฐเธเธ”เธ›เธธเนˆเธกเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธง + เธซเธฃเธทเธญ โ€“ เธ„เน‰เธฒเธ‡เน„เธงเน‰</b> + + + Force Stop at "Detected" Stop Lights/Signs + เธซเธขเธธเธ”เธšเธฑเธ‡เธ„เธฑเธšเธ—เธตเนˆเน„เธŸ/เธ›เน‰เธฒเธขเธซเธขเธธเธ”เธ—เธตเนˆ "เธ•เธฃเธงเธˆเธžเธš" + + + <b>Force openpilot to stop whenever the driving model "detects" a red light or stop sign.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>เธšเธฑเธ‡เธ„เธฑเธšเนƒเธซเน‰ openpilot เธซเธขเธธเธ”เธ—เธธเธเธ„เธฃเธฑเน‰เธ‡เธ—เธตเนˆเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ โ€œเธ•เธฃเธงเธˆเธžเธšโ€ เน„เธŸเนเธ”เธ‡เธซเธฃเธทเธญเธ›เน‰เธฒเธขเธซเธขเธธเธ”</b><br><br><i><b>เธ‚เน‰เธญเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเธฃเธฑเธšเธœเธดเธ”เธŠเธญเธš</b>: openpilot เน„เธกเนˆเน„เธ”เน‰เธ•เธฃเธงเธˆเธˆเธฑเธšเธชเธฑเธเธเธฒเธ“เน„เธŸเธˆเธฃเธฒเธˆเธฃเธซเธฃเธทเธญเธ›เน‰เธฒเธขเธซเธขเธธเธ”เน‚เธ”เธขเธ•เธฃเธ‡ เนƒเธ™ โ€œเน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡ (Experimental Mode)โ€ openpilot เธ•เธฑเธ”เธชเธดเธ™เนƒเธˆเธ‚เธฑเธšเธ‚เธตเนˆเนเธšเธšเธ›เธฅเธฒเธขเธ—เธฒเธ‡เธ–เธถเธ‡เธ›เธฅเธฒเธขเธ—เธฒเธ‡เธˆเธฒเธเธ เธฒเธžเธเธฅเน‰เธญเธ‡ เธ‹เธถเนˆเธ‡เธซเธกเธฒเธขเธ„เธงเธฒเธกเธงเนˆเธฒเธญเธฒเธˆเธซเธขเธธเธ”เนเธกเน‰เน€เธกเธทเนˆเธญเน„เธกเนˆเธกเธตเน€เธซเธ•เธธเธœเธฅเธŠเธฑเธ”เน€เธˆเธ™</i> + + + Increase Stopped Distance by: + เน€เธžเธดเนˆเธกเธฃเธฐเธขเธฐเธซเธขเธธเธ”เน‚เธ”เธข: + + + <b>Add extra space when stopped behind vehicles.</b> Increase for more room; decrease for shorter gaps. + <b>เน€เธžเธดเนˆเธกเธฃเธฐเธขเธฐเน€เธœเธทเนˆเธญเน€เธกเธทเนˆเธญเธˆเธญเธ”เธซเธฅเธฑเธ‡เธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒ</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเน€เธงเน‰เธ™เธ—เธตเนˆเธกเธฒเธเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเนƒเธซเน‰เธŠเนˆเธญเธ‡เธงเนˆเธฒเธ‡เธชเธฑเน‰เธ™เธฅเธ‡ + + + Map Accel/Decel to Gears + เธˆเธฑเธšเธ„เธนเนˆเธเธฒเธฃเน€เธฃเนˆเธ‡/เธŠเธฐเธฅเธญเธเธฑเธšเน€เธเธตเธขเธฃเนŒ + + + <b>Map the Acceleration or Deceleration profiles to the vehicle's "Eco" and "Sport" gear modes.</b> + <b>เธˆเธฑเธšเธ„เธนเนˆเน‚เธ›เธฃเน„เธŸเธฅเนŒเธเธฒเธฃเน€เธฃเนˆเธ‡เธซเธฃเธทเธญเธเธฒเธฃเธŠเธฐเธฅเธญเธเธฑเธšเน‚เธซเธกเธ”เน€เธเธตเธขเธฃเนŒ "Eco" เนเธฅเธฐ "Sport" เธ‚เธญเธ‡เธฃเธ–เธขเธ™เธ•เนŒ</b> + + + Offset Set Speed by: + เธ›เธฃเธฑเธšเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰เน‚เธ”เธข: + + + <b>Increase the set speed by the chosen offset.</b> For example, set +5 if you usually drive 5 over the limit. + <b>เน€เธžเธดเนˆเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰เธ•เธฒเธกเธ„เนˆเธฒเธŠเธ”เน€เธŠเธขเธ—เธตเนˆเน€เธฅเธทเธญเธ</b> เธ•เธฑเธงเธญเธขเนˆเธฒเธ‡เน€เธŠเนˆเธ™ เธ•เธฑเน‰เธ‡ +5 เธซเธฒเธเธ„เธธเธ“เธกเธฑเธเธ‚เธฑเธšเน€เธฃเน‡เธงเธเธงเนˆเธฒเนƒเธšเธญเธ™เธธเธเธฒเธ• 5 + + + Reverse Cruise Increase + เน€เธžเธดเนˆเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ–เธญเธขเธซเธฅเธฑเธ‡ + + + <b>Reverse the cruise control button behavior</b> so a short press increases the set speed by 5 instead of 1. + <b>เธชเธฅเธฑเธšเธžเธคเธ•เธดเธเธฃเธฃเธกเธ›เธธเนˆเธกเธ„เธงเธšเธ„เธธเธกเธ„เธฃเธนเธ‹</b> เน€เธžเธทเนˆเธญเนƒเธซเน‰เธเธฒเธฃเธเธ”เธชเธฑเน‰เธ™เน€เธžเธดเนˆเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰เธ—เธตเธฅเธฐ 5 เนเธ—เธ™ 1 + + + Increase Following Distance by: + เน€เธžเธดเนˆเธกเธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡เธเธฒเธฃเธ•เธดเธ”เธ•เธฒเธกเน‚เธ”เธข: + + + Reduce Acceleration by: + เธฅเธ”เธ„เธงเธฒเธกเน€เธฃเนˆเธ‡เธฅเธ‡เน‚เธ”เธข: + + + Reduce Speed in Curves by: + เธฅเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเนƒเธ™เธ—เธฒเธ‡เน‚เธ„เน‰เธ‡เน‚เธ”เธข: + + + Snow + เธซเธดเธกเธฐ + + + <b>Driving adjustments for snowy conditions.</b> + <b>เธเธฒเธฃเธ›เธฃเธฑเธšเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธชเธณเธซเธฃเธฑเธšเธชเธ เธฒเธžเธซเธดเธกเธฐ</b> + + + <b>Add extra space behind lead vehicles in snow.</b> Increase for more space; decrease for tighter gaps. + <b>เน€เธžเธดเนˆเธกเธฃเธฐเธขเธฐเน€เธœเธทเนˆเธญเธ”เน‰เธฒเธ™เธซเธฅเธฑเธ‡เธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒเน€เธกเธทเนˆเธญเธกเธตเธซเธดเธกเธฐ</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเนƒเธซเน‰เธกเธตเธฃเธฐเธขเธฐเธกเธฒเธเธ‚เธถเน‰เธ™ เธฅเธ”เน€เธžเธทเนˆเธญเนƒเธซเน‰เธŠเนˆเธญเธ‡เธงเนˆเธฒเธ‡เนเธ„เธšเธฅเธ‡ + + + <b>Add extra buffer when stopped behind vehicles in snow.</b> Increase for more room; decrease for shorter gaps. + <b>เน€เธžเธดเนˆเธกเธฃเธฐเธขเธฐเน€เธœเธทเนˆเธญเธžเธดเน€เธจเธฉเน€เธกเธทเนˆเธญเธซเธขเธธเธ”เธซเธฅเธฑเธ‡เธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒเนƒเธ™เธซเธดเธกเธฐ</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเนƒเธซเน‰เธกเธตเธžเธทเน‰เธ™เธ—เธตเนˆเธกเธฒเธเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเนƒเธซเน‰เธŠเนˆเธญเธ‡เธงเนˆเธฒเธ‡เธชเธฑเน‰เธ™เธฅเธ‡ + + + <b>Lower the maximum acceleration in snow.</b> Increase for softer takeoffs; decrease for quicker but less stable takeoffs. + <b>เธฅเธ”เธญเธฑเธ•เธฃเธฒเน€เธฃเนˆเธ‡เธชเธนเธ‡เธชเธธเธ”เน€เธกเธทเนˆเธญเธกเธตเธซเธดเธกเธฐ</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเนƒเธซเน‰เธเธฒเธฃเธญเธญเธเธ•เธฑเธงเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเนƒเธซเน‰เธญเธญเธเธ•เธฑเธงเน„เธ”เน‰เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเน€เธชเธ–เธตเธขเธฃเธ™เน‰เธญเธขเธฅเธ‡ + + + <b>Lower the desired speed while driving through curves in snow.</b> Increase for safer, gentler turns; decrease for more aggressive driving in curves. + <b>เธฅเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ•เน‰เธญเธ‡เธเธฒเธฃเธ‚เธ“เธฐเธ‚เธฑเธšเธœเนˆเธฒเธ™เน‚เธ„เน‰เธ‡เนƒเธ™เธซเธดเธกเธฐ</b> เน€เธžเธดเนˆเธกเน€เธžเธทเนˆเธญเธเธฒเธฃเน€เธ‚เน‰เธฒเน‚เธ„เน‰เธ‡เธ—เธตเนˆเธ›เธฅเธญเธ”เธ เธฑเธขเนเธฅเธฐเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™; เธฅเธ”เน€เธžเธทเนˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเธ”เธธเธ”เธฑเธ™เธกเธฒเธเธ‚เธถเน‰เธ™เนƒเธ™เน‚เธ„เน‰เธ‡. + + + Speed Limit Controller + เธ•เธฑเธงเธ„เธงเธšเธ„เธธเธกเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง + + + <b>Limit openpilot's maximum driving speed to the current speed limit</b> obtained from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + <b>เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธฑเธšเธ‚เธตเนˆเธชเธนเธ‡เธชเธธเธ”เธ‚เธญเธ‡ openpilot เนƒเธซเน‰เน€เธ—เนˆเธฒเธเธฑเธšเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธˆเธฃเธฒเธˆเธฃเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™</b> เธ—เธตเนˆเน„เธ”เน‰เธˆเธฒเธเนเธœเธ™เธ—เธตเนˆเธ—เธตเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”, Mapbox, Navigate on openpilot เธซเธฃเธทเธญเนเธœเธ‡เธซเธ™เน‰เธฒเธ›เธฑเธ”เธชเธณเธซเธฃเธฑเธšเธฃเธ–เธ—เธตเนˆเธฃเธญเธ‡เธฃเธฑเธš (Ford, Genesis, Hyundai, Kia, Lexus, Toyota) + + + Fallback Speed + เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‰เธธเธเน€เธ‰เธดเธ™ + + + <b>The speed used by "Speed Limit Controller" when no speed limit is found.</b><br><br>- <b>Set Speed</b>: Use the cruise set speed<br>- <b>Experimental Mode</b>: Estimate the limit using the driving model<br>- <b>Previous Limit</b>: Keep using the last confirmed limit + <b>เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเนƒเธŠเน‰เน‚เธ”เธข "Speed Limit Controller" เน€เธกเธทเนˆเธญเน„เธกเนˆเธžเธšเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง</b><br><br>- <b>Set Speed</b>: เนƒเธŠเน‰เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ•เธฑเน‰เธ‡เน„เธงเน‰เธ‚เธญเธ‡เธ„เธฃเธนเธ‹<br>- <b>Experimental Mode</b>: เธ›เธฃเธฐเธกเธฒเธ“เธ„เนˆเธฒเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ”เน‰เธงเธขเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ<br>- <b>Previous Limit</b>: เนƒเธŠเน‰เธ„เนˆเธฒเธˆเธณเธเธฑเธ”เธฅเนˆเธฒเธชเธธเธ”เธ—เธตเนˆเธขเธทเธ™เธขเธฑเธ™เนเธฅเน‰เธง + + + Override Speed + เนเธ—เธ™เธ—เธตเนˆเธ„เธงเธฒเธกเน€เธฃเน‡เธง + + + <b>The speed used by "Speed Limit Controller" after you manually drive faster than the posted limit.</b><br><br>- <b>Set with Gas Pedal</b>: Use the highest speed reached while pressing the gas<br>- <b>Max Set Speed</b>: Use the cruise set speed<br><br>Overrides clear when openpilot disengages. + <b>เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเนƒเธŠเน‰เน‚เธ”เธข "Speed Limit Controller" เธซเธฅเธฑเธ‡เธˆเธฒเธเธ„เธธเธ“เธ‚เธฑเธšเน€เธญเธ‡เน€เธฃเน‡เธงเธเธงเนˆเธฒเน€เธเธ“เธ‘เนŒเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ›เธฃเธฐเธเธฒเธจเน„เธงเน‰</b><br><br>- <b>เธ•เธฑเน‰เธ‡เธ”เน‰เธงเธขเธ„เธฑเธ™เน€เธฃเนˆเธ‡</b>: เนƒเธŠเน‰เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธชเธนเธ‡เธชเธธเธ”เธ—เธตเนˆเธ—เธณเน„เธ”เน‰เธ‚เธ“เธฐเน€เธซเธขเธตเธขเธšเธ„เธฑเธ™เน€เธฃเนˆเธ‡<br>- <b>เธเธณเธซเธ™เธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธชเธนเธ‡เธชเธธเธ”</b>: เนƒเธŠเน‰เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ•เธฑเน‰เธ‡เนƒเธ™เธ„เธฃเธนเธ‹<br><br>เธเธฒเธฃเนเธ—เธ™เธ„เนˆเธฒเธˆเธฐเธ–เธนเธเธฅเน‰เธฒเธ‡เน€เธกเธทเนˆเธญ openpilot เธขเธเน€เธฅเธดเธเธเธฒเธฃเธ—เธณเธ‡เธฒเธ™ + + + <b>Miscellaneous "Speed Limit Controller" changes</b> to fine-tune how openpilot drives. + <b>เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡ "Speed Limit Controller" เธญเธทเนˆเธ™เน†</b> เน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธงเธดเธ˜เธตเธเธฒเธฃเธ‚เธฑเธšเธ‚เธญเธ‡ openpilot เนƒเธซเน‰เธฅเธฐเน€เธญเธตเธขเธ”เธ‚เธถเน‰เธ™ + + + Confirm New Speed Limits + เธขเธทเธ™เธขเธฑเธ™เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเนƒเธซเธกเนˆ + + + <b>Ask before changing to a new speed limit.</b> To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds. + <b>เธ–เธฒเธกเธเนˆเธญเธ™เน€เธ›เธฅเธตเนˆเธขเธ™เน€เธ›เน‡เธ™เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธˆเธณเธเธฑเธ”เนƒเธซเธกเนˆ</b> เธซเธฒเธเธขเธญเธกเธฃเธฑเธš เนƒเธซเน‰เนเธ•เธฐเธงเธดเธ”เน€เธˆเน‡เธ•เธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธ—เธตเนˆเธเธฐเธžเธฃเธดเธšเธซเธฃเธทเธญเธเธ”เธ›เธธเนˆเธกเน€เธžเธดเนˆเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ„เธ‡เธ—เธตเนˆ เธซเธฒเธเธ›เธเธดเน€เธชเธ˜ เนƒเธซเน‰เธเธ”เธ›เธธเนˆเธกเธฅเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ„เธ‡เธ—เธตเนˆเธซเธฃเธทเธญเน€เธกเธดเธ™เธ„เธณเน€เธ•เธทเธญเธ™เน€เธ›เน‡เธ™เน€เธงเธฅเธฒ 30 เธงเธดเธ™เธฒเธ—เธต + + + Force MPH from Dashboard + เธšเธฑเธ‡เธ„เธฑเธšเนƒเธŠเน‰ MPH เธˆเธฒเธเนเธœเธ‡เธซเธ™เน‰เธฒเธ›เธฑเธ” + + + <b>Always read dashboard speed limit signs in mph.</b> Turn this on if the cluster shows mph but the limit is interpreted as km/h. + <b>เธญเนˆเธฒเธ™เธ›เน‰เธฒเธขเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธšเธ™เนเธœเธ‡เธซเธ™เน‰เธฒเธ›เธฑเธ”เน€เธ›เน‡เธ™ mph เน€เธชเธกเธญ</b> เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธชเธดเนˆเธ‡เธ™เธตเน‰เธซเธฒเธเธซเธ™เน‰เธฒเธ›เธฑเธ”เนเธชเธ”เธ‡เน€เธ›เน‡เธ™ mph เนเธ•เนˆเธ„เนˆเธฒเธˆเธณเธเธฑเธ”เธ–เธนเธเธ•เธตเธ„เธงเธฒเธกเน€เธ›เน‡เธ™ km/h. + + + Higher Limit Lookahead Time + เน€เธงเธฅเธฒเธกเธญเธ‡เน„เธ›เธ‚เน‰เธฒเธ‡เธซเธ™เน‰เธฒเธ—เธตเนˆเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธชเธนเธ‡เธเธงเนˆเธฒ + + + <b>How far ahead openpilot anticipates upcoming higher speed limits</b> from downloaded map data. + <b>เธฃเธฐเธขเธฐเธฅเนˆเธงเธ‡เธซเธ™เน‰เธฒเธ—เธตเนˆ openpilot เธ„เธฒเธ”เธเธฒเธฃเธ“เนŒเธเธฒเธฃเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธ‚เน‰เธฒเธ‡เธซเธ™เน‰เธฒ</b> เธˆเธฒเธเธ‚เน‰เธญเธกเธนเธฅเนเธœเธ™เธ—เธตเนˆเธ—เธตเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”</b> + + + Lower Limit Lookahead Time + เน€เธงเธฅเธฒเธกเธญเธ‡เธฅเนˆเธงเธ‡เธซเธ™เน‰เธฒเธ‚เธฑเน‰เธ™เธ•เนˆเธณ + + + <b>How far ahead openpilot anticipates upcoming lower speed limits</b> from downloaded map data. + <b>เธฃเธฐเธขเธฐเธฅเนˆเธงเธ‡เธซเธ™เน‰เธฒเธ—เธตเนˆ openpilot เธ„เธฒเธ”เธเธฒเธฃเธ“เนŒเธ–เธถเธ‡เธเธฒเธฃเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธ—เธตเนˆเธเธณเธฅเธฑเธ‡เธˆเธฐเธกเธฒเธ–เธถเธ‡</b> เธˆเธฒเธเธ‚เน‰เธญเธกเธนเธฅเนเธœเธ™เธ—เธตเนˆเธ—เธตเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน„เธงเน‰ + + + Match Speed Limit on Engage + เธ›เธฃเธฑเธšเนƒเธซเน‰เธ•เธฃเธ‡เธเธฑเธšเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธกเธทเนˆเธญเน€เธฃเธดเนˆเธกเธ—เธณเธ‡เธฒเธ™ + + + <b>When openpilot is first enabled, automatically set the max speed to the current posted limit.</b> + <b>เน€เธกเธทเนˆเธญเน€เธ›เธดเธ”เนƒเธŠเน‰ openpilot เธ„เธฃเธฑเน‰เธ‡เนเธฃเธ เนƒเธซเน‰เธ•เธฑเน‰เธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธชเธนเธ‡เธชเธธเธ”เน€เธ›เน‡เธ™เธ•เธฒเธกเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ›เธฃเธฐเธเธฒเธจเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™เน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด</b> + + + Use Mapbox as Fallback + เนƒเธŠเน‰ Mapbox เน€เธ›เน‡เธ™เธ•เธฑเธงเธชเธณเธฃเธญเธ‡ + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>เนƒเธŠเน‰เธ‚เน‰เธญเธกเธนเธฅเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธญเธ‡ Mapbox เน€เธกเธทเนˆเธญเน„เธกเนˆเธกเธตเนเธซเธฅเนˆเธ‡เธญเธทเนˆเธ™เนƒเธซเน‰เนƒเธŠเน‰</b> + + + Speed Limit Source Priority + เธฅเธณเธ”เธฑเธšเธ„เธงเธฒเธกเธชเธณเธ„เธฑเธเธ‚เธญเธ‡เนเธซเธฅเนˆเธ‡เธ—เธตเนˆเธกเธฒเธ‚เธญเธ‡เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง + + + <b>The source order for speed limits</b> when more than one is available. + <b>เธฅเธณเธ”เธฑเธšเนเธซเธฅเนˆเธ‡เธ—เธตเนˆเธกเธฒเธ‚เธญเธ‡เธเธฒเธฃเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง</b> เน€เธกเธทเนˆเธญเธกเธตเธกเธฒเธเธเธงเนˆเธฒเธซเธ™เธถเนˆเธ‡เนเธซเธฅเนˆเธ‡> + + + Speed Limit Offsets + เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ•เธฒเธกเธ›เน‰เธฒเธขเธเธณเธเธฑเธšเธˆเธณเธเธฑเธ”เธชเธ›เธตเธ” + + + <b>Add an offset to the posted speed limit</b> to better match your driving style. + <b>เน€เธžเธดเนˆเธกเธญเธญเธŸเน€เธ‹เน‡เธ•เนƒเธซเน‰เธเธฑเธšเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ›เธฃเธฐเธเธฒเธจเน„เธงเน‰</b> เน€เธžเธทเนˆเธญเนƒเธซเน‰เธชเธญเธ”เธ„เธฅเน‰เธญเธ‡เธเธฑเธšเธชเน„เธ•เธฅเนŒเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ‚เธญเธ‡เธ„เธธเธ“เธกเธฒเธเธ‚เธถเน‰เธ™ Speed Offset (0โ€“24 mph) - เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (0โ€“24 mph) + เธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (0โ€“24 mph) + + + <b>How much to offset posted speed-limits</b> between 0 and 24 mph. + <b>เธŠเธ”เน€เธŠเธขเธˆเธฒเธเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธˆเธณเธเธฑเธ”เธ—เธตเนˆเธ›เธฃเธฐเธเธฒเธจเน„เธงเน‰เน€เธ—เนˆเธฒเน„เธฃ</b> เธฃเธฐเธซเธงเนˆเธฒเธ‡ 0 เธ–เธถเธ‡ 24 mph. Speed Offset (25โ€“34 mph) - เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (25โ€“34 mph) + เธญเธญเธŸเน€เธ‹เน‡เธ•เธ„เธงเธฒเธกเน€เธฃเน‡เธง (25โ€“34 mph) + + + <b>How much to offset posted speed-limits</b> between 25 and 34 mph. + <b>เธŠเธ”เน€เธŠเธขเธˆเธฒเธเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ›เธฃเธฐเธเธฒเธจเน„เธงเน‰เน€เธ—เนˆเธฒเนƒเธ”</b> เธฃเธฐเธซเธงเนˆเธฒเธ‡ 25 เธ–เธถเธ‡ 34 mph.</b Speed Offset (35โ€“44 mph) - เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (35โ€“44 เน„เธกเธฅเนŒเธ•เนˆเธญเธŠเธฑเนˆเธงเน‚เธกเธ‡) + เธญเธญเธŸเน€เธ‹เน‡เธ•เธ„เธงเธฒเธกเน€เธฃเน‡เธง (35โ€“44 mph) + + + <b>How much to offset posted speed-limits</b> between 35 and 44 mph. + <b>เธ›เธฃเธฑเธšเธŠเธ”เน€เธŠเธขเธˆเธฒเธเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธˆเธณเธเธฑเธ”เธ—เธตเนˆเธ›เธฃเธฐเธเธฒเธจเน„เธงเน‰เน€เธ—เนˆเธฒเนƒเธ”</b> เธฃเธฐเธซเธงเนˆเธฒเธ‡ 35 เธ–เธถเธ‡ 44 mph Speed Offset (45โ€“54 mph) - เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (45โ€“54 เน„เธกเธฅเนŒเธ•เนˆเธญเธŠเธฑเนˆเธงเน‚เธกเธ‡) + เธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (45โ€“54 เน„เธกเธฅเนŒ/เธŠเธก.) + + + <b>How much to offset posted speed-limits</b> between 45 and 54 mph. + <b>เธŠเธ”เน€เธŠเธขเธˆเธฒเธเธ›เน‰เธฒเธขเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ—เนˆเธฒเนƒเธ”</b> เธฃเธฐเธซเธงเนˆเธฒเธ‡ 45 เธ–เธถเธ‡ 54 เน„เธกเธฅเนŒเธ•เนˆเธญเธŠเธฑเนˆเธงเน‚เธกเธ‡ Speed Offset (55โ€“64 mph) - เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (55โ€“64 เน„เธกเธฅเนŒเธ•เนˆเธญเธŠเธฑเนˆเธงเน‚เธกเธ‡) + เธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (55โ€“64 เน„เธกเธฅเนŒเธ•เนˆเธญเธŠเธฑเนˆเธงเน‚เธกเธ‡) + + + <b>How much to offset posted speed-limits</b> between 55 and 64 mph. + <b>เธ›เธฃเธฑเธšเธŠเธ”เน€เธŠเธขเธˆเธฒเธเธ›เน‰เธฒเธขเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเน€เธ—เนˆเธฒเนƒเธ”</b> เธฃเธฐเธซเธงเนˆเธฒเธ‡ 55 เธ–เธถเธ‡ 64 mph.</b> Speed Offset (65โ€“74 mph) - เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (65โ€“74 mph) + เธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (65โ€“74 mph) + + + <b>How much to offset posted speed-limits</b> between 65 and 74 mph. + <b>เธ›เธฃเธฑเธšเธŠเธ”เน€เธŠเธขเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ›เธฃเธฐเธเธฒเธจเน„เธงเน‰เน€เธ—เนˆเธฒเนƒเธ”</b> เธฃเธฐเธซเธงเนˆเธฒเธ‡ 65 เธ–เธถเธ‡ 74 mph. Speed Offset (75โ€“99 mph) - เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (75โ€“99 เน„เธกเธฅเนŒเธ•เนˆเธญเธŠเธฑเนˆเธงเน‚เธกเธ‡) + เธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (75โ€“99 mph) - Only For Detected Lanes - เน€เธ‰เธžเธฒเธฐเน€เธฅเธ™เธ—เธตเนˆเธ•เธฃเธงเธˆเธžเธš + <b>How much to offset posted speed-limits</b> between 75 and 99 mph. + <b>เธŠเธ”เน€เธŠเธขเธˆเธฒเธเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธˆเธณเธเธฑเธ”เธ—เธตเนˆเธ›เธฃเธฐเธเธฒเธจเน„เธงเน‰เน€เธ—เนˆเธฒเนƒเธ”</b> เธฃเธฐเธซเธงเนˆเธฒเธ‡ 75 เธ–เธถเธ‡ 99 mph. + + + Visual Settings + เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ เธฒเธž_visual + + + <b>Visual "Speed Limit Controller" changes</b> to fine-tune how the driving screen looks. + <b>เธ›เธฃเธฑเธšเน€เธ›เธฅเธตเนˆเธขเธ™เธเธฒเธฃเนเธชเธ”เธ‡เธœเธฅ "Speed Limit Controller"</b> เน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเนƒเธซเน‰เน€เธซเธกเธฒเธฐเธชเธกเธขเธดเนˆเธ‡เธ‚เธถเน‰เธ™ + + + Show Speed Limit Offset + เนเธชเธ”เธ‡เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง + + + <b>Show the current offset from the posted limit</b> on the driving screen. + <b>เนเธชเธ”เธ‡เธญเธญเธŸเน€เธ‹เน‡เธ•เธ›เธฑเธˆเธˆเธธเธšเธฑเธ™เธˆเธฒเธเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธˆเธณเธเธฑเธ”เธ—เธตเนˆเธ›เธฃเธฐเธเธฒเธจเน„เธงเน‰</b> เธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + + + Show Speed Limit Sources + เนเธชเธ”เธ‡เนเธซเธฅเนˆเธ‡เธ—เธตเนˆเธกเธฒเธ‚เธญเธ‡เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง + + + <b>Display the speed-limit sources and their current values</b> on the driving screen. + <b>เนเธชเธ”เธ‡เนเธซเธฅเนˆเธ‡เธ—เธตเนˆเธกเธฒเธ‚เธญเธ‡เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเนเธฅเธฐเธ„เนˆเธฒเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™</b> เธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + + + seconds + เธงเธดเธ™เธฒเธ—เธต + + + m/sยฒ + เธก./เธงเธดเธ™เธฒเธ—เธตยฒ + + + mph + เน„เธกเธฅเนŒ/เธŠเธก. + + + With Lead + เธžเธฃเน‰เธญเธกเธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒ + + + <b>Switch to "Experimental Mode" when driving below this speed with a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>เธชเธฅเธฑเธšเน„เธ›เนƒเธŠเน‰ "เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡" เน€เธกเธทเนˆเธญเธ‚เธฑเธšเธ•เนˆเธณเธเธงเนˆเธฒเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ™เธตเน‰เน‚เธ”เธขเธกเธตเธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒ</b> เน€เธžเธทเนˆเธญเธŠเนˆเธงเธขเนƒเธซเน‰ openpilot เธˆเธฑเธ”เธเธฒเธฃเธชเธ–เธฒเธ™เธเธฒเธฃเธ“เนŒเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ•เนˆเธณเน„เธ”เน‰เธฃเธฒเธšเธฃเธทเนˆเธ™เธขเธดเนˆเธ‡เธ‚เธถเน‰เธ™ + + + Slower Lead + เธ„เธฑเธ™เธซเธ™เน‰เธฒเธŠเน‰เธฒเธเธงเนˆเธฒ + + + Stopped Lead + เธ„เธฑเธ™เธซเธ™เน‰เธฒเธซเธขเธธเธ”เธ™เธดเนˆเธ‡ + + + Intersections + เธ—เธฒเธ‡เนเธขเธ + + + Turns + เน€เธฅเธตเน‰เธขเธง + + + Off + เธ›เธดเธ” + + + second + เธงเธดเธ™เธฒเธ—เธต + + + Not For Detected Lanes + เน„เธกเนˆเนƒเธŠเน‰เธเธฑเธšเน€เธฅเธ™เธ—เธตเนˆเธ•เธฃเธงเธˆเธžเธš + + + RESET + เธฃเธตเน€เธ‹เน‡เธ• + + + Are you sure you want to completely reset your curvature data? + เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ•เธ‚เน‰เธญเธกเธนเธฅเธ„เธงเธฒเธกเน‚เธ„เน‰เธ‡เธ‚เธญเธ‡เธ„เธธเธ“เธ—เธฑเน‰เธ‡เธซเธกเธ”? + + + Eco + เธ›เธฃเธฐเธซเธขเธฑเธ” + + + Sport + เธชเธ›เธญเธฃเนŒเธ• + + + Sport+ + เธชเธ›เธญเธฃเนŒเธ•+ + + + feet + เธŸเธธเธ• + + + Acceleration + เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง + + + Deceleration + เธเธฒเธฃเธŠเธฐเธฅเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธง + + + MANAGE + เธˆเธฑเธ”เธเธฒเธฃ + + + Set Speed + เธ•เธฑเน‰เธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง + + + Experimental Mode + เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡ + + + Previous Limit + เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธเนˆเธญเธ™เธซเธ™เน‰เธฒ + + + None + เน„เธกเนˆเธกเธต + + + Set With Gas Pedal + เธ•เธฑเน‰เธ‡เธ”เน‰เธงเธขเธ„เธฑเธ™เน€เธฃเนˆเธ‡ + + + Max Set Speed + เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธชเธนเธ‡เธชเธธเธ” + + + SELECT + เน€เธฅเธทเธญเธ + + + Dashboard + เนเธœเธ‡เธซเธ™เน‰เธฒเธ›เธฑเธ” + + + Map Data + เธ‚เน‰เธญเธกเธนเธฅเนเธœเธ™เธ—เธตเนˆ + + + Navigation + เธเธฒเธฃเธ™เธณเธ—เธฒเธ‡ + + + Highest + เธชเธนเธ‡เธชเธธเธ” + + + Lowest + เธ•เนˆเธณเธชเธธเธ” + + + Select your primary priority + เน€เธฅเธทเธญเธเธ„เธงเธฒเธกเธชเธณเธ„เธฑเธเธซเธฅเธฑเธเธ‚เธญเธ‡เธ„เธธเธ“ + + + Select your secondary priority + เน€เธฅเธทเธญเธเธ„เธงเธฒเธกเธชเธณเธ„เธฑเธเธฃเธญเธ‡เธ‚เธญเธ‡เธ„เธธเธ“ + + + Select your tertiary priority + เน€เธฅเธทเธญเธเธ„เธงเธฒเธกเธชเธณเธ„เธฑเธเธฃเธฐเธ”เธฑเธšเธ•เธ•เธดเธขเธ เธนเธกเธด + + + Lower Limits + เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ•เนˆเธณ + + + Higher Limits + เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™ + + + Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? + เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ•เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ‚เธญเธ‡เธ„เธธเธ“เธชเธณเธซเธฃเธฑเธš <b>เน‚เธซเธกเธ”เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ</b> เธญเธขเนˆเธฒเธ‡เธชเธกเธšเธนเธฃเธ“เนŒ? + + + Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? + เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ•เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ‚เธญเธ‡เธ„เธธเธ“เธชเธณเธซเธฃเธฑเธšเธšเธธเธ„เธฅเธดเธเธ เธฒเธžเนเธšเธš <b>เธ”เธธเธ”เธฑเธ™</b> เธญเธขเนˆเธฒเธ‡เธชเธกเธšเธนเธฃเธ“เนŒ? + + + Are you sure you want to completely reset your settings for the <b>Standard</b> personality? + เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ•เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ‚เธญเธ‡เธ„เธธเธ“เธชเธณเธซเธฃเธฑเธšเธšเธธเธ„เธฅเธดเธเธ เธฒเธž <b>เธกเธฒเธ•เธฃเธเธฒเธ™</b> เธ—เธฑเน‰เธ‡เธซเธกเธ”? + + + Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? + เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ•เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ‚เธญเธ‡เธ„เธธเธ“เธชเธณเธซเธฃเธฑเธšเธšเธธเธ„เธฅเธดเธเธ เธฒเธžเนเธšเธš <b>เธœเนˆเธญเธ™เธ„เธฅเธฒเธข</b> เธญเธขเนˆเธฒเธ‡เธชเธกเธšเธนเธฃเธ“เนŒ? + + + foot + เธŸเธธเธ• + + + meter + เน€เธกเธ•เธฃ + + + meters + เน€เธกเธ•เธฃ + + + km/h + เธเธก./เธŠเธก. Speed Offset (0โ€“29 km/h) - เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (0โ€“29 เธเธก./เธŠเธก.) + เธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (0โ€“29 เธเธก./เธŠเธก.) Speed Offset (30โ€“49 km/h) - เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (30โ€“49 เธเธก./เธŠเธก.) + เธญเธฑเธ•เธฃเธฒเธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (30โ€“49 เธเธก./เธŠเธก.) Speed Offset (50โ€“59 km/h) - เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (50โ€“59 เธเธก./เธŠเธก.) + เธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (50โ€“59 เธเธก./เธŠเธก.) Speed Offset (60โ€“79 km/h) - เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (60โ€“79 เธเธก./เธŠเธก.) + เธญเธญเธŸเน€เธ‹เน‡เธ•เธ„เธงเธฒเธกเน€เธฃเน‡เธง (60โ€“79 เธเธก./เธŠเธก.) Speed Offset (80โ€“99 km/h) - เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (80โ€“99 เธเธก./เธŠเธก.) + เธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (80โ€“99 เธเธก./เธŠเธก.) Speed Offset (100โ€“119 km/h) - เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (100โ€“119 เธเธก./เธŠเธก.) + เธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (100โ€“119 เธเธก./เธŠเธก.) Speed Offset (120โ€“140 km/h) - เธเธฒเธฃเธŠเธ”เน€เธŠเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธง (120โ€“140 เธเธก./เธŠเธก.) + เธญเธญเธŸเน€เธ‹เน‡เธ•เธ„เธงเธฒเธกเน€เธฃเน‡เธง (120โ€“140 เธเธก./เธŠเธก.) - Curve Speed Control - เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเนƒเธ™เน‚เธ„เน‰เธ‡ - - - Automatically slow down for upcoming curves using downloaded maps or the driving model. - เธŠเธฐเธฅเธญเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเธชเธณเธซเธฃเธฑเธšเน‚เธ„เน‰เธ‡เธ—เธตเนˆเธเธณเธฅเธฑเธ‡เธˆเธฐเธกเธฒเธ–เธถเธ‡เน‚เธ”เธขเนƒเธŠเน‰เนเธœเธ™เธ—เธตเนˆเธ—เธตเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธซเธฃเธทเธญเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ - - - Curve Detection Method - เธงเธดเธ˜เธตเธเธฒเธฃเธ•เธฃเธงเธˆเธˆเธฑเธšเน€เธชเน‰เธ™เน‚เธ„เน‰เธ‡ - - - How curves are detected. <b>Map-Based</b> uses downloaded map data to identify curves and determine the appropriate speed in which to handle them at, while <b>Vision</b> relies solely on the driving model. - เธงเธดเธ˜เธตเธเธฒเธฃเธ•เธฃเธงเธˆเธˆเธฑเธšเน‚เธ„เน‰เธ‡ <b>Map-Based</b> เนƒเธŠเน‰เธ‚เน‰เธญเธกเธนเธฅเนเธœเธ™เธ—เธตเนˆเธ—เธตเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธกเธฒเน€เธžเธทเนˆเธญเธฃเธฐเธšเธธเน‚เธ„เน‰เธ‡เนเธฅเธฐเธเธณเธซเธ™เธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเน€เธซเธกเธฒเธฐเธชเธกเนƒเธ™เธเธฒเธฃเธˆเธฑเธ”เธเธฒเธฃเธเธฑเธšเน‚เธ„เน‰เธ‡เน€เธซเธฅเนˆเธฒเธ™เธฑเน‰เธ™ เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆ <b>Vision</b> เธžเธถเนˆเธ‡เธžเธฒเน€เธ‰เธžเธฒเธฐเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™ - - - Curve Detection Failsafe - เธเธฒเธฃเธ•เธฃเธงเธˆเธˆเธฑเธšเน€เธชเน‰เธ™เน‚เธ„เน‰เธ‡เธ—เธตเนˆเธ›เธฅเธญเธ”เธ เธฑเธข - - - Only trigger <b>Curve Speed Control</b> if a curve is detected with the model while using the <b>Map-Based</b> method. Useful to help prevent false positives. - เน€เธฃเธตเธขเธเนƒเธŠเน‰ <b>Curve Speed Control</b> เน€เธ‰เธžเธฒเธฐเน€เธกเธทเนˆเธญเธกเธตเธเธฒเธฃเธ•เธฃเธงเธˆเธˆเธฑเธšเน‚เธ„เน‰เธ‡เธ”เน‰เธงเธขเน‚เธกเน€เธ”เธฅเธ‚เธ“เธฐเนƒเธŠเน‰เธงเธดเธ˜เธต <b>Map-Based</b> เธกเธตเธ›เธฃเธฐเน‚เธขเธŠเธ™เนŒเนƒเธ™เธเธฒเธฃเธŠเนˆเธงเธขเธ›เน‰เธญเธ‡เธเธฑเธ™เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธ—เธตเนˆเธœเธดเธ”เธžเธฅเธฒเธ” - - - Curve Detection Sensitivity - เธ„เธงเธฒเธกเน„เธงเนƒเธ™เธเธฒเธฃเธ•เธฃเธงเธˆเธˆเธฑเธšเน€เธชเน‰เธ™เน‚เธ„เน‰เธ‡ - - - How sensitive openpilot is when detecting curves. Higher values trigger earlier responses at the risk of triggering too often, while lower values increase confidence at the risk of triggering too infrequently. - เธ„เธงเธฒเธกเน„เธงเธ‚เธญเธ‡ openpilot เนƒเธ™เธเธฒเธฃเธ•เธฃเธงเธˆเธˆเธฑเธšเน‚เธ„เน‰เธ‡ เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธ—เธณเนƒเธซเน‰เน€เธเธดเธ”เธเธฒเธฃเธ•เธญเธšเธชเธ™เธญเธ‡เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเน€เธชเธตเนˆเธขเธ‡เธ•เนˆเธญเธเธฒเธฃเน€เธเธดเธ”เธšเนˆเธญเธขเน€เธเธดเธ™เน„เธ› เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธฅเธ‡เธˆเธฐเน€เธžเธดเนˆเธกเธ„เธงเธฒเธกเธกเธฑเนˆเธ™เนƒเธˆเนเธ•เนˆเน€เธชเธตเนˆเธขเธ‡เธ•เนˆเธญเธเธฒเธฃเน€เธเธดเธ”เน„เธกเนˆเธšเนˆเธญเธขเธžเธญ - - - Curve Speed Aggressiveness - เธ„เธงเธฒเธกเธเน‰เธฒเธงเธฃเน‰เธฒเธงเธ‚เธญเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเนƒเธ™เน‚เธ„เน‰เธ‡ - - - How aggressive openpilot is when navigating through curves. Higher values result in faster turns but may reduce comfort or stability, while lower values result in slower, smoother turns at the risk of being overly cautious. - เธ„เธงเธฒเธกเธเน‰เธฒเธงเธฃเน‰เธฒเธงเธ‚เธญเธ‡ openpilot เน€เธกเธทเนˆเธญเธ‚เธฑเธšเธœเนˆเธฒเธ™เน‚เธ„เน‰เธ‡ เธ„เนˆเธฒเธ—เธตเนˆเธชเธนเธ‡เธ‚เธถเน‰เธ™เธˆเธฐเธ—เธณเนƒเธซเน‰เน€เธฅเธตเน‰เธขเธงเน„เธ”เน‰เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธ•เนˆเธเน‡เธญเธฒเธˆเธฅเธ”เธ„เธงเธฒเธกเธชเธšเธฒเธขเธซเธฃเธทเธญเธ„เธงเธฒเธกเน€เธชเธ–เธตเธขเธฃ เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธ„เนˆเธฒเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธ—เธณเนƒเธซเน‰เน€เธฅเธตเน‰เธขเธงเน„เธ”เน‰เธŠเน‰เธฒเธฅเธ‡เนเธฅเธฐเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™เนเธ•เนˆเน€เธชเธตเนˆเธขเธ‡เธ•เนˆเธญเธเธฒเธฃเธฃเธฐเธกเธฑเธ”เธฃเธฐเธงเธฑเธ‡เน€เธเธดเธ™เน„เธ› - - - Map Based - เนเธœเธ™เธ—เธตเนˆเน€เธ›เน‡เธ™เธžเธทเน‰เธ™เธเธฒเธ™ - - - Vision - เธงเธดเธชเธฑเธขเธ—เธฑเธจเธ™เนŒ - - - The <b>Map Based</b> option is only available when some <b>Map Data</b> has been downloaded! - เธ•เธฑเธงเน€เธฅเธทเธญเธ <b>Map Based</b> เธˆเธฐเนƒเธŠเน‰เน„เธ”เน‰เน€เธ‰เธžเธฒเธฐเน€เธกเธทเนˆเธญเธกเธตเธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” <b>Map Data</b> เธšเธฒเธ‡เธชเนˆเธงเธ™เนเธฅเน‰เธงเน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™! + <b>Following behavior that mimics human drivers</b> by closing gaps behind faster vehicles for quicker takeoffs and dynamically adjusting the desired following distance for gentler, more efficient braking. + <b>เธžเธคเธ•เธดเธเธฃเธฃเธกเธเธฒเธฃเธ•เธฒเธกเธ—เธตเนˆเน€เธฅเธตเธขเธ™เนเธšเธšเธœเธนเน‰เธ‚เธฑเธšเธ‚เธตเนˆเธกเธ™เธธเธฉเธขเนŒ</b> เน‚เธ”เธขเธ›เธดเธ”เธŠเนˆเธญเธ‡เธงเนˆเธฒเธ‡เธ”เน‰เธฒเธ™เธซเธฅเธฑเธ‡เธฃเธ–เธ—เธตเนˆเน€เธฃเน‡เธงเธเธงเนˆเธฒเน€เธžเธทเนˆเธญเธญเธญเธเธ•เธฑเธงเน„เธ”เน‰เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™ เนเธฅเธฐเธ›เธฃเธฑเธšเธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡เธ—เธตเนˆเธ•เน‰เธญเธ‡เธเธฒเธฃเนเธšเธšเน„เธ”เธ™เธฒเธกเธดเธเน€เธžเธทเนˆเธญเธเธฒเธฃเน€เธšเธฃเธเธ—เธตเนˆเธ™เธธเนˆเธกเธ™เธงเธฅเนเธฅเธฐเธกเธตเธ›เธฃเธฐเธชเธดเธ—เธ˜เธดเธ เธฒเธžเธกเธฒเธเธ‚เธถเน‰เธ™ FrogPilotManageControl MANAGE - เธˆเธฑเธ”เธเธฒเธฃ + เธˆเธฑเธ”เธเธฒเธฃ FrogPilotMapsPanel Manually - เธ”เน‰เธงเธขเธ•เธ™เน€เธญเธ‡ + เธ”เน‰เธงเธขเธ•เธ™เน€เธญเธ‡ Weekly - เธฃเธฒเธขเธชเธฑเธ›เธ”เธฒเธซเนŒ + เธฃเธฒเธขเธชเธฑเธ›เธ”เธฒเธซเนŒ Monthly - เธฃเธฒเธขเน€เธ”เธทเธญเธ™ + เธฃเธฒเธขเน€เธ”เธทเธญเธ™ Automatically Update Maps - เธญเธฑเธ›เน€เธ”เธ•เนเธœเธ™เธ—เธตเนˆเน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด + เธญเธฑเธ›เน€เธ”เธ•เนเธœเธ™เธ—เธตเนˆเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด - The frequency at which maps sync with the latest OpenStreetMap (OSM) changes. Weekly updates occur every Sunday, and monthly updates occur on the 1st. - เธ„เธงเธฒเธกเธ–เธตเนˆเธ—เธตเนˆเนเธœเธ™เธ—เธตเนˆเธ‹เธดเธ‡เธ„เนŒเธเธฑเธšเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธฅเนˆเธฒเธชเธธเธ”เธ‚เธญเธ‡ OpenStreetMap (OSM) เธเธฒเธฃเธญเธฑเธ›เน€เธ”เธ•เธฃเธฒเธขเธชเธฑเธ›เธ”เธฒเธซเนŒเธˆเธฐเน€เธเธดเธ”เธ‚เธถเน‰เธ™เธ—เธธเธเธงเธฑเธ™เธญเธฒเธ—เธดเธ•เธขเนŒ เนเธฅเธฐเธเธฒเธฃเธญเธฑเธ›เน€เธ”เธ•เธฃเธฒเธขเน€เธ”เธทเธญเธ™เธˆเธฐเน€เธเธดเธ”เธ‚เธถเน‰เธ™เนƒเธ™เธงเธฑเธ™เธ—เธตเนˆ 1 - - - Data Sources - เนเธซเธฅเนˆเธ‡เธ‚เน‰เธญเธกเธนเธฅ - - - Select map data sources to use with "Curve Speed Control" and "Speed Limit Controller". - เน€เธฅเธทเธญเธเนเธซเธฅเนˆเธ‡เธ‚เน‰เธญเธกเธนเธฅเนเธœเธ™เธ—เธตเนˆเธ—เธตเนˆเธˆเธฐเนƒเธŠเน‰เธเธฑเธš "เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน‚เธ„เน‰เธ‡" เนเธฅเธฐ "เธ•เธฑเธงเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธˆเธณเธเธฑเธ”" - - - COUNTRIES - เธ›เธฃเธฐเน€เธ—เธจ - - - STATES - เธฃเธฑเธ + <b>How often maps update</b> from "OpenStreetMap (OSM)" with the latest speed limit information. Weekly updates run every Sunday; monthly updates run on the 1st. + <b>เธ„เธงเธฒเธกเธ–เธตเนˆเนƒเธ™เธเธฒเธฃเธญเธฑเธ›เน€เธ”เธ•เนเธœเธ™เธ—เธตเนˆ</b> เธˆเธฒเธ "OpenStreetMap (OSM)" เธžเธฃเน‰เธญเธกเธ‚เน‰เธญเธกเธนเธฅเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธฅเนˆเธฒเธชเธธเธ” เธญเธฑเธ›เน€เธ”เธ•เธฃเธฒเธขเธชเธฑเธ›เธ”เธฒเธซเนŒเธ—เธณเธ—เธธเธเธงเธฑเธ™เธญเธฒเธ—เธดเธ•เธขเนŒ; เธญเธฑเธ›เน€เธ”เธ•เธฃเธฒเธขเน€เธ”เธทเธญเธ™เธ—เธณเธ—เธธเธเธงเธฑเธ™เธ—เธตเนˆ 1. Download Maps - เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนเธœเธ™เธ—เธตเนˆ + เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนเธœเธ™เธ—เธตเนˆ DOWNLOAD - เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” + เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” - Download the selected maps to use with "Curve Speed Control" and "Speed Limit Controller". - เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนเธœเธ™เธ—เธตเนˆเธ—เธตเนˆเน€เธฅเธทเธญเธเน€เธžเธทเนˆเธญเนƒเธŠเน‰เธเธฑเธš "Curve Speed Control" เนเธฅเธฐ "Speed Limit Controller" + <b>Manually update your selected map sources</b> so "Speed Limit Controller" has the latest speed limit information. + <b>เธญเธฑเธ›เน€เธ”เธ•เนเธซเธฅเนˆเธ‡เธ—เธตเนˆเธกเธฒเธ‚เธญเธ‡เนเธœเธ™เธ—เธตเนˆเธ—เธตเนˆเธ„เธธเธ“เน€เธฅเธทเธญเธเธ”เน‰เธงเธขเธ•เธ™เน€เธญเธ‡</b> เน€เธžเธทเนˆเธญเนƒเธซเน‰ "Speed Limit Controller" เธกเธตเธ‚เน‰เธญเธกเธนเธฅเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธฅเนˆเธฒเธชเธธเธ” CANCEL - เธขเธเน€เธฅเธดเธ + เธขเธเน€เธฅเธดเธ - Are you sure you want to cancel the download? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธขเธเน€เธฅเธดเธเธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”? + Cancel the download? + เธขเธเน€เธฅเธดเธเธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธซเธฃเธทเธญเน„เธกเนˆ? - Download Completion ETA - เน€เธงเธฅเธฒเธ—เธตเนˆเธ„เธฒเธ”เธงเนˆเธฒเธˆเธฐเน€เธชเธฃเน‡เธˆเธชเธดเน‰เธ™เธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” + Last Updated + เธญเธฑเธ›เน€เธ”เธ•เธฅเนˆเธฒเธชเธธเธ” - Download Progress - เธ„เธงเธฒเธกเธ„เธทเธšเธซเธ™เน‰เธฒเธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” + Map Sources + เนเธซเธฅเนˆเธ‡เธ—เธตเนˆเธกเธฒเธ‚เธญเธ‡เนเธœเธ™เธ—เธตเนˆ - Download Time Elapsed - เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน€เธงเธฅเธฒเธ—เธตเนˆเธœเนˆเธฒเธ™เน„เธ› + <b>Select the countries or U.S. states to use with "Speed Limit Controller".</b> + <b>เน€เธฅเธทเธญเธเธ›เธฃเธฐเน€เธ—เธจเธซเธฃเธทเธญเธฃเธฑเธเธ‚เธญเธ‡เธชเธซเธฃเธฑเธเธฏ เธ—เธตเนˆเธˆเธฐเนƒเธŠเน‰เธเธฑเธš "Speed Limit Controller"</b> - Maps Last Updated - เนเธœเธ™เธ—เธตเนˆเธญเธฑเธ›เน€เธ”เธ•เธฅเนˆเธฒเธชเธธเธ” + COUNTRIES + เธ›เธฃเธฐเน€เธ—เธจ - Maps Size - เธ‚เธ™เธฒเธ”เนเธœเธ™เธ—เธตเนˆ + STATES + เธชเธ–เธฒเธ™เธฐ + + + Progress + เธ„เธงเธฒเธกเธ„เธทเธšเธซเธ™เน‰เธฒ + + + Time Elapsed + เน€เธงเธฅเธฒเธ—เธตเนˆเธœเนˆเธฒเธ™เน„เธ› + + + Time Remaining + เน€เธงเธฅเธฒเธ—เธตเนˆเน€เธซเธฅเธทเธญ Remove Maps - เธฅเธšเนเธœเธ™เธ—เธตเนˆ + เธฅเธšเนเธœเธ™เธ—เธตเนˆ REMOVE - เธฅเธš + เธฅเธš - Remove downloaded maps to clear up storage space. - เธฅเธšเนเธœเธ™เธ—เธตเนˆเธ—เธตเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน€เธžเธทเนˆเธญเน€เธžเธดเนˆเธกเธžเธทเน‰เธ™เธ—เธตเนˆเธˆเธฑเธ”เน€เธเน‡เธšเธ‚เน‰เธญเธกเธนเธฅ + <b>Delete downloaded map data</b> to free up storage space. + <b>เธฅเธšเธ‚เน‰เธญเธกเธนเธฅเนเธœเธ™เธ—เธตเนˆเธ—เธตเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”</b> เน€เธžเธทเนˆเธญเน€เธžเธดเนˆเธกเธžเธทเน‰เธ™เธ—เธตเนˆเธˆเธฑเธ”เน€เธเน‡เธšเนƒเธซเน‰เธงเนˆเธฒเธ‡เธ‚เธถเน‰เธ™ - Are you sure you want to delete all of your downloaded maps? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเนเธœเธ™เธ—เธตเนˆเธ—เธตเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ—เธฑเน‰เธ‡เธซเธกเธ”เธ‚เธญเธ‡เธ„เธธเธ“? + Delete all downloaded maps? + เธฅเธšเนเธœเธ™เธ—เธตเนˆเธ—เธตเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ—เธฑเน‰เธ‡เธซเธกเธ”เธซเธฃเธทเธญเน„เธกเนˆ? - Reset Map Downloader - เธฃเธตเน€เธ‹เน‡เธ•เธ•เธฑเธงเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนเธœเธ™เธ—เธตเนˆ + Reset Downloader + เธฃเธตเน€เธ‹เน‡เธ•เธ•เธฑเธงเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” RESET - เธฃเธตเน€เธ‹เน‡เธ• + เธฃเธตเน€เธ‹เน‡เธ• - Reset the map downloader. Use if you're running into issues with downloading maps. - เธฃเธตเน€เธ‹เน‡เธ•เธ•เธฑเธงเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนเธœเธ™เธ—เธตเนˆ เนƒเธŠเน‰เธซเธฒเธเธ„เธธเธ“เธžเธšเธ›เธฑเธเธซเธฒเนƒเธ™เธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนเธœเธ™เธ—เธตเนˆ + <b>Reset the map downloader.</b> Use this if downloads are stuck or failing. + <b>เธฃเธตเน€เธ‹เน‡เธ•เธ•เธฑเธงเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนเธœเธ™เธ—เธตเนˆ</b> เนƒเธŠเน‰เธชเธดเนˆเธ‡เธ™เธตเน‰เธซเธฒเธเธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ„เน‰เธฒเธ‡เธซเธฃเธทเธญเธฅเน‰เธกเน€เธซเธฅเธง - Are you sure you want to reset the map downloader? This will force a reboot once completed. - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ•เธ•เธฑเธงเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนเธœเธ™เธ—เธตเนˆ? เธชเธดเนˆเธ‡เธ™เธตเน‰เธˆเธฐเธšเธฑเธ‡เธ„เธฑเธšเนƒเธซเน‰เธฃเธตเธšเธนเธ•เน€เธกเธทเนˆเธญเน€เธชเธฃเน‡เธˆเธชเธดเน‰เธ™ + Reset the map downloader? Your device will reboot afterward. + เธฃเธตเน€เธ‹เน‡เธ•เธ•เธฑเธงเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนเธœเธ™เธ—เธตเนˆเธซเธฃเธทเธญเน„เธกเนˆ? เธญเธธเธ›เธเธฃเธ“เนŒเธ‚เธญเธ‡เธ„เธธเธ“เธˆเธฐเธฃเธตเธšเธนเธ•เธซเธฅเธฑเธ‡เธˆเธฒเธเธ™เธฑเน‰เธ™ Reset - เธฃเธตเน€เธ‹เน‡เธ• + เธฃเธตเน€เธ‹เน‡เธ• Resetting... - เธฃเธตเน€เธ‹เน‡เธ•... + เธเธณเธฅเธฑเธ‡เธฃเธตเน€เธ‹เน‡เธ•... Reset! - เธฃเธตเน€เธ‹เน‡เธ•! + เธฃเธตเน€เธ‹เน‡เธ•! Rebooting... - เธเธณเธฅเธฑเธ‡เธฃเธตเธšเธนเธ•... + เธเธณเธฅเธฑเธ‡เธฃเธตเธšเธนเธ•... + + + Storage Used + เธ—เธตเนˆเน€เธเน‡เธšเธ‚เน‰เธญเธกเธนเธฅเธ—เธตเนˆเนƒเธŠเน‰ Africa - เนเธญเธŸเธฃเธดเธเธฒ + เนเธญเธŸเธฃเธดเธเธฒ Antarctica - เนเธญเธ™เธ•เธฒเธฃเนŒเธเธ•เธดเธเธฒ + เนเธญเธ™เธ•เธฒเธฃเนŒเธเธ•เธดเธเธฒ Asia - เน€เธญเน€เธŠเธตเธข + เน€เธญเน€เธŠเธตเธข Europe - เธขเธธเน‚เธฃเธ› + เธขเธธเน‚เธฃเธ› North America - เธญเน€เธกเธฃเธดเธเธฒเน€เธซเธ™เธทเธญ + เธญเน€เธกเธฃเธดเธเธฒเน€เธซเธ™เธทเธญ Oceania - เน‚เธญเน€เธŠเธตเธขเน€เธ™เธตเธข + เน‚เธญเน€เธŠเธตเธขเน€เธ™เธตเธข South America - เธญเน€เธกเธฃเธดเธเธฒเนƒเธ•เน‰ + เธญเน€เธกเธฃเธดเธเธฒเนƒเธ•เน‰ United States - Midwest - เธชเธซเธฃเธฑเธเธญเน€เธกเธฃเธดเธเธฒ - เธกเธดเธ”เน€เธงเธชเธ•เนŒ + เธชเธซเธฃเธฑเธเธญเน€เธกเธฃเธดเธเธฒ - เธกเธดเธ”เน€เธงเธชเธ•เนŒ United States - Northeast - เธชเธซเธฃเธฑเธเธญเน€เธกเธฃเธดเธเธฒ - เธ•เธฐเธงเธฑเธ™เธญเธญเธเน€เธ‰เธตเธขเธ‡เน€เธซเธ™เธทเธญ + เธชเธซเธฃเธฑเธเธญเน€เธกเธฃเธดเธเธฒ - เธ เธฒเธ„เธ•เธฐเธงเธฑเธ™เธญเธญเธเน€เธ‰เธตเธขเธ‡เน€เธซเธ™เธทเธญ United States - South - เธชเธซเธฃเธฑเธเธญเน€เธกเธฃเธดเธเธฒ - เนƒเธ•เน‰ + เธชเธซเธฃเธฑเธเธญเน€เธกเธฃเธดเธเธฒ - เธ เธฒเธ„เนƒเธ•เน‰ United States - West - เธชเธซเธฃเธฑเธเธญเน€เธกเธฃเธดเธเธฒ - เธ•เธฐเธงเธฑเธ™เธ•เธ + เธชเธซเธฃเธฑเธเธญเน€เธกเธฃเธดเธเธฒ - เธ•เธฐเธงเธฑเธ™เธ•เธ United States - Territories - เธชเธซเธฃเธฑเธเธญเน€เธกเธฃเธดเธเธฒ - เธ”เธดเธ™เนเธ”เธ™ - - - CANCELLED - เธขเธเน€เธฅเธดเธ + เธชเธซเธฃเธฑเธเธญเน€เธกเธฃเธดเธเธฒ - เธ”เธดเธ™เนเธ”เธ™ Offline... - เธญเธญเธŸเน„เธฅเธ™เนŒ... + เธญเธญเธŸเน„เธฅเธ™เนŒ... + + + CANCELLED + เธขเธเน€เธฅเธดเธ FrogPilotModelPanel Automatically Download New Models - เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธกเน€เธ”เธฅเนƒเธซเธกเนˆเน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด + เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธกเน€เธ”เธฅเนƒเธซเธกเนˆเน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด - Automatically download new driving models as they become available. - เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเนƒเธซเธกเนˆเน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน€เธกเธทเนˆเธญเธกเธตเนƒเธซเน‰เนƒเธŠเน‰เธ‡เธฒเธ™ + <b>Automatically download new driving models</b> as they become available. + <b>เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเนƒเธซเธกเนˆเน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด</b>เน€เธกเธทเนˆเธญเธกเธตเนƒเธซเน‰เนƒเธŠเน‰เธ‡เธฒเธ™ Delete Driving Models - เธฅเธšเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + เธฅเธšเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ - Delete driving models from the device. - เธฅเธšเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธญเธญเธเธˆเธฒเธเธญเธธเธ›เธเธฃเธ“เนŒ + <b>Delete downloaded driving models</b> to free up storage space. + <b>เธฅเธšเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”</b> เน€เธžเธทเนˆเธญเน€เธžเธดเนˆเธกเธžเธทเน‰เธ™เธ—เธตเนˆเธงเนˆเธฒเธ‡เนƒเธ™เธ—เธตเนˆเธˆเธฑเธ”เน€เธเน‡เธš Download Driving Models - เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ - Download driving models to the device. - เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเน„เธ›เธขเธฑเธ‡เธญเธธเธ›เธเธฃเธ“เนŒ + <b>Manually download driving models</b> to the device. + <b>เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ”เน‰เธงเธขเธ•เธ™เน€เธญเธ‡</b> เน„เธ›เธขเธฑเธ‡เธญเธธเธ›เธเธฃเธ“เนŒ Model Randomizer - เธชเธธเนˆเธกเน‚เธกเน€เธ”เธฅ + เธ•เธฑเธงเธชเธธเนˆเธกเน‚เธกเน€เธ”เธฅ - Driving models are chosen at random each drive and feedback prompts are used to find the model that best suits your needs. - เน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธˆเธฐเธ–เธนเธเน€เธฅเธทเธญเธเนเธšเธšเธชเธธเนˆเธกเนƒเธ™เนเธ•เนˆเธฅเธฐเธ„เธฃเธฑเน‰เธ‡เธ—เธตเนˆเธ‚เธฑเธš เนเธฅเธฐเธกเธตเธเธฒเธฃเนƒเธŠเน‰เธ„เธณเนเธ™เธฐเธ™เธณเน€เธžเธทเนˆเธญเธ„เน‰เธ™เธซเธฒเน‚เธกเน€เธ”เธฅเธ—เธตเนˆเน€เธซเธกเธฒเธฐเธชเธกเธ—เธตเนˆเธชเธธเธ”เธเธฑเธšเธ„เธงเธฒเธกเธ•เน‰เธญเธ‡เธเธฒเธฃเธ‚เธญเธ‡เธ„เธธเธ“ + <b>Select a random driving model each drive</b> and use feedback prompts at the end of the drive to help find the model that best suits you! + <b>เธชเธธเนˆเธกเน€เธฅเธทเธญเธเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเนƒเธ™เนเธ•เนˆเธฅเธฐเธเธฒเธฃเธ‚เธฑเธš</b> เนเธฅเธฐเนƒเธŠเน‰เธ„เธณเธ‚เธญเธ„เธงเธฒเธกเธ„เธดเธ”เน€เธซเน‡เธ™เน€เธกเธทเนˆเธญเธชเธดเน‰เธ™เธชเธธเธ”เธเธฒเธฃเธ‚เธฑเธšเน€เธžเธทเนˆเธญเธŠเนˆเธงเธขเธ„เน‰เธ™เธซเธฒเน‚เธกเน€เธ”เธฅเธ—เธตเนˆเน€เธซเธกเธฒเธฐเธเธฑเธšเธ„เธธเธ“เธ—เธตเนˆเธชเธธเธ”! Manage Model Blacklist - เธˆเธฑเธ”เธเธฒเธฃเธšเธฑเธเธŠเธตเธ”เธณเธ‚เธญเธ‡เน‚เธกเน€เธ”เธฅ + เธˆเธฑเธ”เธเธฒเธฃเธšเธฑเธเธŠเธตเธ”เธณเธ‚เธญเธ‡เน‚เธกเน€เธ”เธฅ - Add or remove models from the <b>Model Randomizer</b>'s blacklist list. - เน€เธžเธดเนˆเธกเธซเธฃเธทเธญเธฅเธšเน‚เธกเน€เธ”เธฅเธˆเธฒเธเธฃเธฒเธขเธเธฒเธฃเธšเธฑเธเธŠเธตเธ”เธณเธ‚เธญเธ‡ <b>Model Randomizer</b> + <b>Add or remove driving models from the "Model Randomizer" blacklist.</b> + <b>เน€เธžเธดเนˆเธกเธซเธฃเธทเธญเธฅเธšเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธญเธญเธเธˆเธฒเธเธšเธฑเธเธŠเธตเธ”เธณ "Model Randomizer"</b> Manage Model Ratings - เธˆเธฑเธ”เธเธฒเธฃเธเธฒเธฃเนƒเธซเน‰เธ„เธฐเนเธ™เธ™เน‚เธกเน€เธ”เธฅ + เธˆเธฑเธ”เธเธฒเธฃเธเธฒเธฃเนƒเธซเน‰เธ„เธฐเนเธ™เธ™เน‚เธกเน€เธ”เธฅ - Reset or view the saved ratings for the driving models. - เธฃเธตเน€เธ‹เน‡เธ•เธซเธฃเธทเธญเธ”เธนเธเธฒเธฃเนƒเธซเน‰เธ„เธฐเนเธ™เธ™เธ—เธตเนˆเธšเธฑเธ™เธ—เธถเธเน„เธงเน‰เธชเธณเธซเธฃเธฑเธšเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + <b>View or reset saved model ratings</b> used by the "Model Randomizer". + <b>เธ”เธนเธซเธฃเธทเธญเธฃเธตเน€เธ‹เน‡เธ•เธ„เธฐเนเธ™เธ™เน‚เธกเน€เธ”เธฅเธ—เธตเนˆเธšเธฑเธ™เธ—เธถเธเน„เธงเน‰</b> เธ‹เธถเนˆเธ‡เนƒเธŠเน‰เน‚เธ”เธข "Model Randomizer". Select Driving Model - เน€เธฅเธทเธญเธเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + เน€เธฅเธทเธญเธเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ - Select the active driving model. - เน€เธฅเธทเธญเธเน‚เธซเธกเธ”เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเนƒเธŠเน‰เธ‡เธฒเธ™เธญเธขเธนเนˆ + <b>Choose which driving model openpilot uses.</b> + <b>เน€เธฅเธทเธญเธเนเธšเธšเธˆเธณเธฅเธญเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆ openpilot เนƒเธŠเน‰</b> + + + Update Model Manager + เธญเธฑเธ›เน€เธ”เธ•เธ•เธฑเธงเธˆเธฑเธ”เธเธฒเธฃเน‚เธกเน€เธ”เธฅ + + + <b>Update the "Model Manager"</b> to support the latest models. + <b>เธญเธฑเธ›เน€เธ”เธ• "เธ•เธฑเธงเธˆเธฑเธ”เธเธฒเธฃเน‚เธกเน€เธ”เธฅ"</b> เน€เธžเธทเนˆเธญเธฃเธญเธ‡เธฃเธฑเธšเน‚เธกเน€เธ”เธฅเธฅเนˆเธฒเธชเธธเธ” DELETE - เธฅเธš + เธฅเธš DELETE ALL - เธฅเธšเธ—เธฑเน‰เธ‡เธซเธกเธ” + เธฅเธšเธ—เธฑเน‰เธ‡เธซเธกเธ” Select a driving model to delete - เน€เธฅเธทเธญเธเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเน€เธžเธทเนˆเธญเธฅเธš + เน€เธฅเธทเธญเธเนเธšเธšเธˆเธณเธฅเธญเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเธˆเธฐเธฅเธš Are you sure you want to delete the "%1" model? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเน‚เธกเน€เธ”เธฅ "%1"? + เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเน‚เธกเน€เธ”เธฅ "%1"? Delete - เธฅเธš + เธฅเธš Are you sure you want to delete all of your downloaded driving models? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ—เธฑเน‰เธ‡เธซเธกเธ”เธ‚เธญเธ‡เธ„เธธเธ“? + เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ—เธฑเน‰เธ‡เธซเธกเธ”เธ‚เธญเธ‡เธ„เธธเธ“? DOWNLOAD - เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” + เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” DOWNLOAD ALL - เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ—เธฑเน‰เธ‡เธซเธกเธ” + เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ—เธฑเน‰เธ‡เธซเธกเธ” - Select a driving model to download - เน€เธฅเธทเธญเธเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเน€เธžเธทเนˆเธญเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” + Tinygrad is out of date and must be updated before you can download new models. Update now? + Tinygrad เธฅเน‰เธฒเธชเธกเธฑเธขเนเธฅเธฐเธ•เน‰เธญเธ‡เธญเธฑเธ›เน€เธ”เธ•เธเนˆเธญเธ™เธˆเธถเธ‡เธˆเธฐเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธกเน€เธ”เธฅเนƒเธซเธกเนˆเน„เธ”เน‰ เธ•เน‰เธญเธ‡เธเธฒเธฃเธญเธฑเธ›เน€เธ”เธ•เธ•เธญเธ™เธ™เธตเน‰เธซเธฃเธทเธญเน„เธกเนˆ? + + + Updating Tinygrad will delete all existing Tinygrad-based models which will need to be re-downloaded. Proceed? + เธเธฒเธฃเธญเธฑเธ›เน€เธ”เธ• Tinygrad เธˆเธฐเธฅเธšเน‚เธกเน€เธ”เธฅเธ—เธตเนˆเนƒเธŠเน‰ Tinygrad เธ—เธฑเน‰เธ‡เธซเธกเธ”เธ‹เธถเนˆเธ‡เธˆเธฐเธ•เน‰เธญเธ‡เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนƒเธซเธกเนˆเธญเธตเธเธ„เธฃเธฑเน‰เธ‡ เธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ•เนˆเธญเธซเธฃเธทเธญเน„เธกเนˆ? CANCEL - เธขเธเน€เธฅเธดเธ + เธขเธเน€เธฅเธดเธ + + + Updating... + เธเธณเธฅเธฑเธ‡เธญเธฑเธ›เน€เธ”เธ•..." + + + Select a driving model to download + เน€เธฅเธทเธญเธเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเน€เธžเธทเนˆเธญเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” ADD - เน€เธžเธดเนˆเธก + เน€เธžเธดเนˆเธก REMOVE - เธฅเธš + เธฅเธš REMOVE ALL - เธฅเธšเธ—เธฑเน‰เธ‡เธซเธกเธ” + เธฅเธšเธ—เธฑเน‰เธ‡เธซเธกเธ” - There are no more models to blacklist! The only available model is "%1"! - เน„เธกเนˆเธกเธตเน‚เธกเน€เธ”เธฅเนƒเธซเน‰เธšเธฅเน‡เธญเธเธญเธตเธเนเธฅเน‰เธง! เน‚เธกเน€เธ”เธฅเน€เธ”เธตเธขเธงเธ—เธตเนˆเธกเธตเธญเธขเธนเนˆเธ„เธทเธญ "%1"! + There are no more driving models to blacklist. The only available model is "%1"! + เน„เธกเนˆเธกเธตเน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเนƒเธซเน‰เน€เธžเธดเนˆเธกเนƒเธ™เธšเธฑเธเธŠเธตเธ”เธณเธญเธตเธเนเธฅเน‰เธง เน‚เธกเน€เธ”เธฅเธ—เธตเนˆเธกเธตเธญเธขเธนเนˆเน€เธžเธตเธขเธ‡เธญเธขเนˆเธฒเธ‡เน€เธ”เธตเธขเธงเธ„เธทเธญ "%1"! - Select a model to add to the blacklist - เน€เธฅเธทเธญเธเน‚เธกเน€เธ”เธฅเน€เธžเธทเนˆเธญเน€เธžเธดเนˆเธกเนƒเธ™เธšเธฑเธเธŠเธตเธ”เธณ + Select a driving model to add to the blacklist + เน€เธฅเธทเธญเธเนเธšเธšเธˆเธณเธฅเธญเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเน€เธžเธทเนˆเธญเน€เธžเธดเนˆเธกเนƒเธ™เธšเธฑเธเธŠเธตเธ”เธณ Are you sure you want to add the "%1" model to the blacklist? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเน€เธžเธดเนˆเธกเน‚เธกเน€เธ”เธฅ "%1" เนƒเธ™เธšเธฑเธเธŠเธตเธ”เธณ? + เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเน€เธžเธดเนˆเธกเน‚เธกเน€เธ”เธฅ "%1" เธฅเธ‡เนƒเธ™เธšเธฑเธเธŠเธตเธ”เธณ? Add - เน€เธžเธดเนˆเธก + เน€เธžเธดเนˆเธก - Select a model to remove from the blacklist - เน€เธฅเธทเธญเธเน‚เธกเน€เธ”เธฅเธ—เธตเนˆเธˆเธฐเธฅเธšเธญเธญเธเธˆเธฒเธเธšเธฑเธเธŠเธตเธ”เธณ + Select a driving model to remove from the blacklist + เน€เธฅเธทเธญเธเนเธšเธšเธˆเธณเธฅเธญเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเน€เธžเธทเนˆเธญเธฅเธšเธญเธญเธเธˆเธฒเธเธšเธฑเธเธŠเธตเธ”เธณ Are you sure you want to remove the "%1" model from the blacklist? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเน‚เธกเน€เธ”เธฅ "%1" เธญเธญเธเธˆเธฒเธเธšเธฑเธเธŠเธตเธ”เธณ? + เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเน‚เธกเน€เธ”เธฅ "%1" เธญเธญเธเธˆเธฒเธเธšเธฑเธเธŠเธตเธ”เธณ? Remove - เธฅเธš + เน€เธญเธฒเธญเธญเธ - Are you sure you want to remove all of your blacklisted models? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเน‚เธกเน€เธ”เธฅเธ—เธตเนˆเธญเธขเธนเนˆเนƒเธ™เธšเธฑเธเธŠเธตเธ”เธณเธ—เธฑเน‰เธ‡เธซเธกเธ”เธ‚เธญเธ‡เธ„เธธเธ“? + Are you sure you want to remove all of your blacklisted driving models? + เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเนเธšเธšเธˆเธณเธฅเธญเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเธ„เธธเธ“เธšเธฅเน‡เธญเธเน„เธงเน‰เธ—เธฑเน‰เธ‡เธซเธกเธ”? RESET - เธฃเธตเน€เธ‹เน‡เธ• + เธฃเธตเน€เธ‹เน‡เธ• VIEW - เธ”เธน + เธ”เธน - Are you sure you want to reset all of your model drives and scores? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ•เน„เธ”เธฃเธŸเนŒเนเธฅเธฐเธ„เธฐเนเธ™เธ™เธ‚เธญเธ‡เน‚เธกเน€เธ”เธฅเธ—เธฑเน‰เธ‡เธซเธกเธ”เธ‚เธญเธ‡เธ„เธธเธ“? + Reset all model drives and ratings? This clears your drive history and collected feedback! + เธฃเธตเน€เธ‹เน‡เธ•เน„เธ”เธฃเธŸเนŒเนเธฅเธฐเธเธฒเธฃเนƒเธซเน‰เธ„เธฐเนเธ™เธ™เธ‚เธญเธ‡เธฃเธธเนˆเธ™เธ—เธฑเน‰เธ‡เธซเธกเธ”เธซเธฃเธทเธญเน„เธกเนˆ? เธเธฒเธฃเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ™เธตเน‰เธˆเธฐเธฅเน‰เธฒเธ‡เธ›เธฃเธฐเธงเธฑเธ•เธดเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเนเธฅเธฐเธ‚เน‰เธญเน€เธชเธ™เธญเนเธ™เธฐเธ—เธตเนˆเน€เธเน‡เธšเธฃเธงเธšเธฃเธงเธกเธ‚เธญเธ‡เธ„เธธเธ“! SELECT - SELECT + เน€เธฅเธทเธญเธ - Select a model - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC - เน€เธฅเธทเธญเธเน‚เธกเน€เธ”เธฅ - ๐Ÿ—บ๏ธ = เธเธฒเธฃเธ™เธณเธ—เธฒเธ‡ | ๐Ÿ“ก = เน€เธฃเธ”เธฒเธฃเนŒ | ๐Ÿ‘€ = VOACC + UPDATE + เธญเธฑเธ›เน€เธ”เธ• - The "Model Randomizer" only works with downloaded models. Do you want to download all the driving models? - "Model Randomizer" เนƒเธŠเน‰เธ‡เธฒเธ™เน„เธ”เน‰เน€เธ‰เธžเธฒเธฐเธเธฑเธšเน‚เธกเน€เธ”เธฅเธ—เธตเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนเธฅเน‰เธงเน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™ เธ„เธธเธ“เธ•เน‰เธญเธ‡เธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธฑเน‰เธ‡เธซเธกเธ”เธซเธฃเธทเธญเน„เธกเนˆ? + Cancelling... + เธเธณเธฅเธฑเธ‡เธขเธเน€เธฅเธดเธ... + + + Updating Tinygrad will delete existing Tinygrad-based driving models and need to be re-downloaded. Proceed? + เธเธฒเธฃเธญเธฑเธ›เน€เธ”เธ• Tinygrad เธˆเธฐเธฅเธšเน‚เธกเน€เธ”เธฅเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเนƒเธŠเน‰ Tinygrad เธ—เธตเนˆเธกเธตเธญเธขเธนเนˆเนเธฅเธฐเธ•เน‰เธญเธ‡เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนƒเธซเธกเนˆ เธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ•เนˆเธญเธซเธฃเธทเธญเน„เธกเนˆ? + + + The "Model Randomizer" works only with downloaded models. Download all models now? + โ€œModel Randomizerโ€ เนƒเธŠเน‰เธ‡เธฒเธ™เน„เธ”เน‰เน€เธ‰เธžเธฒเธฐเธเธฑเธšเน‚เธกเน€เธ”เธฅเธ—เธตเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนเธฅเน‰เธง เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธกเน€เธ”เธฅเธ—เธฑเน‰เธ‡เธซเธกเธ”เธ•เธญเธ™เธ™เธตเน‰เธซเธฃเธทเธญเน„เธกเนˆ? Offline... - เธญเธญเธŸเน„เธฅเธ™เนŒ... + เธญเธญเธŸเน„เธฅเธ™เนŒ... + + + Update available! + เธกเธตเธญเธฑเธ›เน€เธ”เธ•เธžเธฃเน‰เธญเธกเนƒเธŠเน‰เธ‡เธฒเธ™! + + + Up to date! + เน€เธ›เน‡เธ™เน€เธงเธญเธฃเนŒเธŠเธฑเธ™เธฅเนˆเธฒเธชเธธเธ”! + + + Select a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + เน€เธฅเธทเธญเธเน‚เธกเน€เธ”เธฅ โ€” ๐Ÿ—บ๏ธ = เธ™เธณเธ—เธฒเธ‡ | ๐Ÿ“ก = เน€เธฃเธ”เธฒเธฃเนŒ | ๐Ÿ‘€ = VOACC + + + + FrogPilotModelReview + + How would you rate that drive? + เธ„เธธเธ“เธˆเธฐเธ›เธฃเธฐเน€เธกเธดเธ™เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ„เธฃเธฑเน‰เธ‡เธ™เธฑเน‰เธ™เธญเธขเนˆเธฒเธ‡เน„เธฃ? + + + Model successfully blacklisted! + เธˆเธณเธฅเธญเธ‡เธ–เธนเธเธ‚เธถเน‰เธ™เธšเธฑเธเธŠเธตเธ”เธณเน€เธฃเธตเธขเธšเธฃเน‰เธญเธขเนเธฅเน‰เธง! + + + Drive Rating Selection + เธเธฒเธฃเน€เธฅเธทเธญเธเธเธฒเธฃเนƒเธซเน‰เธ„เธฐเนเธ™เธ™เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + + + Blacklist this model to remove it from rotation + เธ‚เธถเน‰เธ™เธšเธฑเธเธŠเธตเธ”เธณเน‚เธกเน€เธ”เธฅเธ™เธตเน‰เน€เธžเธทเนˆเธญเน€เธญเธฒเธญเธญเธเธˆเธฒเธเธเธฒเธฃเธซเธกเธธเธ™เน€เธงเธตเธขเธ™ + + + Blacklist Model + เธ‚เธถเน‰เธ™เธšเธฑเธเธŠเธตเธ”เธณเธฃเธธเนˆเธ™ + + + Model used during that drive: + เน‚เธกเน€เธ”เธฅเธ—เธตเนˆเนƒเธŠเน‰เธฃเธฐเธซเธงเนˆเธฒเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ™เธฑเน‰เธ™: + + + Model Rank + เธญเธฑเธ™เธ”เธฑเธšเน‚เธกเน€เธ”เธฅ + + + Model Rating + เธเธฒเธฃเนƒเธซเน‰เธ„เธฐเนเธ™เธ™เน‚เธกเน€เธ”เธฅ + + + Model Drives + เธเธฒเธฃเธ‚เธฑเธšเน‚เธ”เธขเน‚เธกเน€เธ”เธฅ + + + Total Drives + เธเธฒเธฃเธ‚เธฑเธšเธ—เธฑเน‰เธ‡เธซเธกเธ” + + + #%1 + #%1 + + + %1% + %1% + + + %1 %2 + %1 %2 + + + Drive + เธ‚เธฑเธšเธฃเธ– + + + Drives + เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + + + %1 Total %2 + %1 เธฃเธงเธก %2 FrogPilotNavigationPanel - - Manage your %1. - เธˆเธฑเธ”เธเธฒเธฃ %1 เธ‚เธญเธ‡เธ„เธธเธ“ - - - ADD - เน€เธžเธดเนˆเธก - - - Enter your %1 - เธ›เน‰เธญเธ™ %1 - - - Inputted key is invalid or too short! - เธ„เธตเธขเนŒเธ—เธตเนˆเธ›เน‰เธญเธ™เน„เธกเนˆเธ–เธนเธเธ•เน‰เธญเธ‡เธซเธฃเธทเธญเธชเธฑเน‰เธ™เน€เธเธดเธ™เน„เธ›! - - - Are you sure you want to remove your %1? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธš %1 เธ‚เธญเธ‡เธ„เธธเธ“? - - - REMOVE - เธฅเธš - Manage Your Settings At - เธˆเธฑเธ”เธเธฒเธฃเธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ‚เธญเธ‡เธ„เธธเธ“เธ—เธตเนˆ - - - MapBox - MapBox - - - Amap - Amap - - - Google - Google - - - Destination Search Provider - เธœเธนเน‰เนƒเธซเน‰เธšเธฃเธดเธเธฒเธฃเธ„เน‰เธ™เธซเธฒเธ›เธฅเธฒเธขเธ—เธฒเธ‡ - - - The search provider used for destination queries in "Navigate on Openpilot". Options include "MapBox" (recommended), "Amap", and "Google Maps". - เธœเธนเน‰เนƒเธซเน‰เธšเธฃเธดเธเธฒเธฃเธ„เน‰เธ™เธซเธฒเธ—เธตเนˆเนƒเธŠเน‰เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธ„เน‰เธ™เธซเธฒเธ›เธฅเธฒเธขเธ—เธฒเธ‡เนƒเธ™ "Navigate on Openpilot" เธ•เธฑเธงเน€เธฅเธทเธญเธเธ›เธฃเธฐเธเธญเธšเธ”เน‰เธงเธข "MapBox" (เนเธ™เธฐเธ™เธณ), "Amap" เนเธฅเธฐ "Google Maps" - - - Amap Key #1 - Amap Key #1 - - - Manage your Amap key. - เธˆเธฑเธ”เธเธฒเธฃเธ„เธตเธขเนŒ Amap เธ‚เธญเธ‡เธ„เธธเธ“ - - - Enter your Amap key - เธเธฃเธธเธ“เธฒเนƒเธชเนˆเธ„เธตเธขเนŒ Amap เธ‚เธญเธ‡เธ„เธธเธ“ - - - Are you sure you want to remove your Amap key? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเธ„เธตเธขเนŒ Amap เธ‚เธญเธ‡เธ„เธธเธ“? - - - Amap Key #2 - Amap Key #2 - - - Google Maps Key - เธ„เธตเธขเนŒ Google Maps - - - Manage your Google Maps key. - เธˆเธฑเธ”เธเธฒเธฃเธ„เธตเธขเนŒ Google Maps เธ‚เธญเธ‡เธ„เธธเธ“ - - - Enter your Google Maps key - เธ›เน‰เธญเธ™เธ„เธตเธขเนŒ Google Maps เธ‚เธญเธ‡เธ„เธธเธ“ - - - Are you sure you want to remove your Google Maps key? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเธ„เธตเธขเนŒ Google Maps เธ‚เธญเธ‡เธ„เธธเธ“? - - - Public Mapbox Key - เธ„เธตเธขเนŒ Mapbox เธชเธฒเธ˜เธฒเธฃเธ“เธฐ - - - Secret Mapbox Key - เธ„เธตเธขเนŒ Mapbox เธฅเธฑเธš - - - MapBox Setup Instructions - เธ„เธณเนเธ™เธฐเธ™เธณเธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ MapBox - - - VIEW - เธ”เธน - - - View the instructions to set up "MapBox" for "Primeless Navigation". - เธ”เธนเธ„เธณเนเธ™เธฐเธ™เธณเนƒเธ™เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ "MapBox" เธชเธณเธซเธฃเธฑเธš "Primeless Navigation" - - - CANCEL - เธขเธเน€เธฅเธดเธ - - - Speed Limit Filler - เธ•เธฑเธงเน€เธ•เธดเธกเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - Are you sure you want to cancel the speed limit update process? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธขเธเน€เธฅเธดเธเธเธฃเธฐเธšเธงเธ™เธเธฒเธฃเธญเธฑเธ›เน€เธ”เธ•เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง? - - - You have reached the request limit. - -It will reset in %1 hours and %2 minutes. - เธ„เธธเธ“เน„เธ”เน‰เธ–เธถเธ‡เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ‚เธญเธ‡เธ„เธณเธ‚เธญเนเธฅเน‰เธง - -เธกเธฑเธ™เธˆเธฐเธฃเธตเน€เธ‹เน‡เธ•เนƒเธ™ %1 เธŠเธฑเนˆเธงเน‚เธกเธ‡เนเธฅเธฐ %2 เธ™เธฒเธ—เธต - - - This process will take awhile, so it's advised to start when you're done driving with a stable Wi-Fi connection. Do you wish to proceed? - เธเธฃเธฐเธšเธงเธ™เธเธฒเธฃเธ™เธตเน‰เธˆเธฐเนƒเธŠเน‰เน€เธงเธฅเธฒเธชเธฑเธเธ„เธฃเธนเนˆ เธ”เธฑเธ‡เธ™เธฑเน‰เธ™เนเธ™เธฐเธ™เธณเนƒเธซเน‰เน€เธฃเธดเนˆเธกเน€เธกเธทเนˆเธญเธ„เธธเธ“เธ‚เธฑเธšเธฃเธ–เน€เธชเธฃเน‡เธˆเนเธฅเน‰เธงเนเธฅเธฐเธกเธตเธเธฒเธฃเน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญ Wi-Fi เธ—เธตเนˆเน€เธชเธ–เธตเธขเธฃ เธ„เธธเธ“เธ•เน‰เธญเธ‡เธเธฒเธฃเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ•เนˆเธญเธซเธฃเธทเธญเน„เธกเนˆ? - - - Manually Update Speed Limits - เธญเธฑเธ›เน€เธ”เธ•เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ”เน‰เธงเธขเธ•เธ™เน€เธญเธ‡ - - - Automatically collect missing or incorrect speed limits from your dashboard (if supported), <b>Mapbox</b>, and <b>Navigate-on-openpilot</b> while driving.<br><br>When the car is turned off and connected to Wi-Fi, your speed limit data is automatically processed into a compiled file formatted for the tool located at <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>You can grab the processed file from <b>The Pond</b> via the <b>Download Speed Limits</b> menu.<br><br>Want a more thorough walkthrough? Check out the <b>#speed-limit-filler</b> channel in the <b>FrogPilot Discord</b>! - เธฃเธงเธšเธฃเธงเธกเธ‚เน‰เธญเธกเธนเธฅเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ‚เธฒเธ”เธซเธฒเธขเธซเธฃเธทเธญเน„เธกเนˆเธ–เธนเธเธ•เน‰เธญเธ‡เธˆเธฒเธเนเธœเธ‡เธ„เธงเธšเธ„เธธเธกเธ‚เธญเธ‡เธ„เธธเธ“ (เธ–เน‰เธฒเธฃเธญเธ‡เธฃเธฑเธš), <b>Mapbox</b>, เนเธฅเธฐ <b>Navigate-on-openpilot</b> เธ‚เธ“เธฐเธ‚เธฑเธšเธฃเธ–<br><br>เน€เธกเธทเนˆเธญเธฃเธ–เธ–เธนเธเธ›เธดเธ”เนเธฅเธฐเน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญเธเธฑเธš Wi-Fi เธ‚เน‰เธญเธกเธนเธฅเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธญเธ‡เธ„เธธเธ“เธˆเธฐเธ–เธนเธเธ›เธฃเธฐเธกเธงเธฅเธœเธฅเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน€เธ›เน‡เธ™เน„เธŸเธฅเนŒเธ—เธตเนˆเธˆเธฑเธ”เธฃเธนเธ›เนเธšเธšเธชเธณเธซเธฃเธฑเธšเน€เธ„เธฃเธทเนˆเธญเธ‡เธกเธทเธญเธ—เธตเนˆเธญเธขเธนเนˆเธ—เธตเนˆ <b>SpeedLimitFiller.frogpilot.download</b><br><br>เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน„เธŸเธฅเนŒเธ—เธตเนˆเธ›เธฃเธฐเธกเธงเธฅเธœเธฅเนเธฅเน‰เธงเธˆเธฒเธ <b>The Pond</b> เธœเนˆเธฒเธ™เน€เธกเธ™เธน <b>Download Speed Limits</b><br><br>เธ•เน‰เธญเธ‡เธเธฒเธฃเธ„เธณเนเธ™เธฐเธ™เธณเน€เธžเธดเนˆเธกเน€เธ•เธดเธกเธซเธฃเธทเธญเน„เธกเนˆ? เธ•เธฃเธงเธˆเธชเธญเธšเธ—เธตเนˆเธŠเนˆเธญเธ‡ <b>#speed-limit-filler</b> เนƒเธ™ <b>FrogPilot Discord</b>! - - - Cancelled... - เธขเธเน€เธฅเธดเธ... - - - Completed! - เน€เธชเธฃเน‡เธˆเธชเธดเน‰เธ™! + เธˆเธฑเธ”เธเธฒเธฃเธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ‚เธญเธ‡เธ„เธธเธ“เธ—เธตเนˆ Offline... - เธญเธญเธŸเน„เธฅเธ™เนŒ... + เธญเธญเธŸเน„เธฅเธ™เนŒ... + + + Mapbox + Mapbox + + + Amap + Amap + + + Destination Search Provider + เธœเธนเน‰เนƒเธซเน‰เธšเธฃเธดเธเธฒเธฃเธ„เน‰เธ™เธซเธฒเธ›เธฅเธฒเธขเธ—เธฒเธ‡ + + + <b>The search provider used for destination queries</b> in "Navigate on Openpilot". Options include Mapbox (recommended) and Amap. + <b>เธœเธนเน‰เนƒเธซเน‰เธšเธฃเธดเธเธฒเธฃเธ„เน‰เธ™เธซเธฒเธ—เธตเนˆเนƒเธŠเน‰เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธ„เน‰เธ™เธซเธฒเธˆเธธเธ”เธซเธกเธฒเธข</b> เนƒเธ™ "Navigate on Openpilot" เธ•เธฑเธงเน€เธฅเธทเธญเธเน„เธ”เน‰เนเธเนˆ Mapbox (เนเธ™เธฐเธ™เธณ) เนเธฅเธฐ Amap + + + Amap Key #1 + เธ„เธตเธขเนŒ Amap #1 + + + Amap Key #2 + เธ„เธตเธขเนŒ Amap #2 + + + Public Mapbox Key + เธ„เธตเธขเนŒ Mapbox เธชเธฒเธ˜เธฒเธฃเธ“เธฐ + + + Secret Mapbox Key + เธ„เธตเธขเนŒ Mapbox เธฅเธฑเธš + + + Mapbox Setup Instructions + เธ„เธณเนเธ™เธฐเธ™เธณเธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ Mapbox + + + VIEW + เธ”เธน + + + <b>Instructions on how to set up Mapbox</b> for "Primeless Navigation". + <b>เธ„เธณเนเธ™เธฐเธ™เธณเนƒเธ™เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ Mapbox</b> เธชเธณเธซเธฃเธฑเธš "Primeless Navigation" + + + CANCEL + เธขเธเน€เธฅเธดเธ + + + Manually Update Speed Limits + เธญเธฑเธ›เน€เธ”เธ•เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ”เน‰เธงเธขเธ•เธ™เน€เธญเธ‡ + + + Speed Limit Filler + เธ•เธฑเธงเน€เธ•เธดเธกเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง + + + <b>Automatically collect missing or incorrect speed limits while you drive</b> using speeds limits sourced from your dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When you're parked and connected to Wi-Fi, FrogPilot will automatically processes this data into a file to be used with the tool located at "SpeedLimitFiller.frogpilot.download".<br><br>You can download this file from "The Pond" in the "Download Speed Limits" menu.<br><br>Need a step-by-step guide? Visit <b>#speed-limit-filler</b> in the FrogPilot Discord! + <b>เธฃเธงเธšเธฃเธงเธกเธ‚เน‰เธญเธกเธนเธฅเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ‚เธฒเธ”เธซเธฒเธขเธซเธฃเธทเธญเน„เธกเนˆเธ–เธนเธเธ•เน‰เธญเธ‡เน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเธ‚เธ“เธฐเธ„เธธเธ“เธ‚เธฑเธš</b> เน‚เธ”เธขเนƒเธŠเน‰เธ‚เน‰เธญเธกเธนเธฅเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธˆเธฒเธเนเธœเธ‡เธซเธ™เน‰เธฒเธ›เธฑเธ”เธ‚เธญเธ‡เธ„เธธเธ“ (เธซเธฒเธเธฃเธญเธ‡เธฃเธฑเธš), Mapbox เนเธฅเธฐ "Navigate on openpilot"<br><br>เน€เธกเธทเนˆเธญเธ„เธธเธ“เธˆเธญเธ”เนเธฅเธฐเน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญเธเธฑเธš Wiโ€‘Fi เนเธฅเน‰เธง FrogPilot เธˆเธฐเธ›เธฃเธฐเธกเธงเธฅเธœเธฅเธ‚เน‰เธญเธกเธนเธฅเธ™เธตเน‰เน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน€เธ›เน‡เธ™เน„เธŸเธฅเนŒเน€เธžเธทเนˆเธญเนƒเธŠเน‰เธเธฑเธšเน€เธ„เธฃเธทเนˆเธญเธ‡เธกเธทเธญเธ—เธตเนˆเธญเธขเธนเนˆเธ—เธตเนˆ "SpeedLimitFiller.frogpilot.download"<br><br>เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน„เธŸเธฅเนŒเธ™เธตเน‰เน„เธ”เน‰เธˆเธฒเธ "The Pond" เนƒเธ™เน€เธกเธ™เธน "Download Speed Limits"<br><br>เธ•เน‰เธญเธ‡เธเธฒเธฃเธ„เธณเนเธ™เธฐเธ™เธณเธ—เธตเธฅเธฐเธ‚เธฑเน‰เธ™เธ•เธญเธ™เธซเธฃเธทเธญเน„เธกเนˆ? เน„เธ›เธ—เธตเนˆ <b>#speed-limit-filler</b> เนƒเธ™ FrogPilot Discord! + + + Cancel the speed-limit update? + เธขเธเน€เธฅเธดเธเธเธฒเธฃเธญเธฑเธ›เน€เธ”เธ•เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธซเธฃเธทเธญเน„เธกเนˆ? + + + Cancelled... + เธขเธเน€เธฅเธดเธเนเธฅเน‰เธง... + + + You've hit today's request limit. + +It will reset in %1 hours and %2 minutes. + เธ„เธธเธ“เน„เธ”เน‰เนƒเธŠเน‰เธ„เธฃเธšเธˆเธณเธ™เธงเธ™เธ„เธณเธ‚เธญเธ›เธฃเธฐเธˆเธณเธงเธฑเธ™เธ™เธตเน‰เนเธฅเน‰เธง + +เธˆเธฐเธฃเธตเน€เธ‹เน‡เธ•เนƒเธ™เธญเธตเธ %1 เธŠเธฑเนˆเธงเน‚เธกเธ‡ เนเธฅเธฐ %2 เธ™เธฒเธ—เธต + + + This process takes a while. It's recommended to start when you're done driving and connected to stable Wi-Fi. Continue? + เธเธฃเธฐเธšเธงเธ™เธเธฒเธฃเธ™เธตเน‰เนƒเธŠเน‰เน€เธงเธฅเธฒเธชเธฑเธเธžเธฑเธ เนเธ™เธฐเธ™เธณเนƒเธซเน‰เน€เธฃเธดเนˆเธกเน€เธกเธทเนˆเธญเธ„เธธเธ“เธ‚เธฑเธšเน€เธชเธฃเน‡เธˆเนเธฅเธฐเน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญเธเธฑเธš Wiโ€‘Fi เธ—เธตเนˆเน€เธชเธ–เธตเธขเธฃ เธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ•เนˆเธญเธซเธฃเธทเธญเน„เธกเนˆ? + + + <b>Manage your "%1".</b> + <b>เธˆเธฑเธ”เธเธฒเธฃ "%1" เธ‚เธญเธ‡เธ„เธธเธ“</b> + + + ADD + เน€เธžเธดเนˆเธก + + + Enter your %1 + เธ›เน‰เธญเธ™ %1 เธ‚เธญเธ‡เธ„เธธเธ“ + + + Inputted key is invalid or too short! + เธ„เธตเธขเนŒเธ—เธตเนˆเธ›เน‰เธญเธ™เน„เธกเนˆเธ–เธนเธเธ•เน‰เธญเธ‡เธซเธฃเธทเธญเธชเธฑเน‰เธ™เน€เธเธดเธ™เน„เธ›! + + + Remove your %1? + เธฅเธš %1 เธ‚เธญเธ‡เธ„เธธเธ“เธซเธฃเธทเธญเน„เธกเนˆ? + + + REMOVE + เธฅเธš + + + Completed! + เน€เธชเธฃเน‡เธˆเธชเธดเน‰เธ™! FrogPilotSettingsWindow MANAGE - เธˆเธฑเธ”เธเธฒเธฃ + เธˆเธฑเธ”เธเธฒเธฃ DRIVING MODEL - เนเธšเธšเธˆเธณเธฅเธญเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + เน‚เธกเน€เธ”เธฅเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ GAS / BRAKE - เนเธเนŠเธช / เน€เธšเธฃเธ + เธ„เธฑเธ™เน€เธฃเนˆเธ‡ / เน€เธšเธฃเธ STEERING - เธเธฒเธฃเธšเธฑเธ‡เธ„เธฑเธšเน€เธฅเธตเน‰เธขเธง + เธžเธงเธ‡เธกเธฒเธฅเธฑเธข MAP DATA - เธ‚เน‰เธญเธกเธนเธฅเนเธœเธ™เธ—เธตเนˆ + เธ‚เน‰เธญเธกเธนเธฅเนเธœเธ™เธ—เธตเนˆ NAVIGATION - เธเธฒเธฃเธ™เธณเธ—เธฒเธ‡ + เธเธฒเธฃเธ™เธณเธ—เธฒเธ‡ DATA - DATA + เธ‚เน‰เธญเธกเธนเธฅ DEVICE CONTROLS - เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธญเธธเธ›เธเธฃเธ“เนŒ + เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธญเธธเธ›เธเธฃเธ“เนŒ UTILITIES - เธขเธนเธ—เธดเธฅเธดเธ•เธตเน‰ + เธขเธนเธ—เธดเธฅเธดเธ•เธต APPEARANCE - เธฃเธนเธ›เธฅเธฑเธเธฉเธ“เนŒ + เธฅเธฑเธเธฉเธ“เธฐ THEME - เธ˜เธตเธก + เธ˜เธตเธก VEHICLE SETTINGS - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธขเธฒเธ™เธžเธฒเธซเธ™เธฐ + เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธฃเธ–เธขเธ™เธ•เนŒ WHEEL CONTROLS - เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธžเธงเธ‡เธกเธฒเธฅเธฑเธข + เธ›เธธเนˆเธกเธ„เธงเธšเธ„เธธเธกเธžเธงเธ‡เธกเธฒเธฅเธฑเธข Alerts and Sounds - เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เนเธฅเธฐเน€เธชเธตเธขเธ‡ + เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เนเธฅเธฐเน€เธชเธตเธขเธ‡ - FrogPilot settings for alert volumes and custom notifications to stay informed about important driving events. - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ FrogPilot เธชเธณเธซเธฃเธฑเธšเธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เนเธฅเธฐเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธ—เธตเนˆเธเธณเธซเธ™เธ”เน€เธญเธ‡เน€เธžเธทเนˆเธญเธฃเธฑเธšเธ‚เน‰เธญเธกเธนเธฅเน€เธเธตเนˆเธขเธงเธเธฑเธšเน€เธซเธ•เธธเธเธฒเธฃเธ“เนŒเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเธชเธณเธ„เธฑเธ + <b>Adjust alert volumes and enable custom notifications.</b> + <b>เธ›เธฃเธฑเธšเธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธเธฒเธฃเน€เธ•เธทเธญเธ™เนเธฅเธฐเน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เนเธšเธšเธเธณเธซเธ™เธ”เน€เธญเธ‡</b> Driving Controls - เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ - FrogPilot settings for acceleration, braking, and steering. - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ FrogPilot เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง เธเธฒเธฃเน€เธšเธฃเธ เนเธฅเธฐเธเธฒเธฃเธšเธฑเธ‡เธ„เธฑเธšเน€เธฅเธตเน‰เธขเธง + <b>Fine-tune custom FrogPilot acceleration, braking, and steering controls.</b> + <b>เธ›เธฃเธฑเธšเธˆเธนเธ™เธฅเธฐเน€เธญเธตเธขเธ”เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธเธฒเธฃเน€เธฃเนˆเธ‡ เธเธฒเธฃเน€เธšเธฃเธ เนเธฅเธฐเธเธฒเธฃเธšเธฑเธ‡เธ„เธฑเธšเน€เธฅเธตเน‰เธขเธงเธ‚เธญเธ‡ FrogPilot เนเธšเธšเธเธณเธซเธ™เธ”เน€เธญเธ‡</b> Navigation - เธเธฒเธฃเธ™เธณเธ—เธฒเธ‡ + เธเธฒเธฃเธ™เธณเธ—เธฒเธ‡ - Download map data for <b>Curve Speed Control</b>, <b>Speed Limit Controller</b>, and set up <b>Navigate on openpilot (NOO)</b>. - เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ‚เน‰เธญเธกเธนเธฅเนเธœเธ™เธ—เธตเนˆเธชเธณเธซเธฃเธฑเธš <b>เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเน‚เธ„เน‰เธ‡</b>, <b>เธ•เธฑเธงเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธˆเธณเธเธฑเธ”</b>, เนเธฅเธฐเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ <b>เธ™เธณเธ—เธฒเธ‡เธšเธ™ openpilot (NOO)</b>. + <b>Download map data for the "Speed Limit Controller" and configure "Navigate on openpilot" (NOO).</b> + <b>เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ‚เน‰เธญเธกเธนเธฅเนเธœเธ™เธ—เธตเนˆเธชเธณเธซเธฃเธฑเธš "Speed Limit Controller" เนเธฅเธฐเธเธณเธซเธ™เธ”เธ„เนˆเธฒ "Navigate on openpilot" (NOO).</b> - System Management - เธเธฒเธฃเธˆเธฑเธ”เธเธฒเธฃเธฃเธฐเธšเธš + System Settings + เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธฃเธฐเธšเธš - Data storage management, debugging tools, device settings, screen behavior settings, system backups, and utilities to maintain, optimize, and troubleshoot FrogPilot. - เธเธฒเธฃเธˆเธฑเธ”เธเธฒเธฃเธžเธทเน‰เธ™เธ—เธตเนˆเน€เธเน‡เธšเธ‚เน‰เธญเธกเธนเธฅ, เน€เธ„เธฃเธทเนˆเธญเธ‡เธกเธทเธญเธ”เธตเธšเธฑเธ, เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธญเธธเธ›เธเธฃเธ“เนŒ, เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธžเธคเธ•เธดเธเธฃเธฃเธกเธซเธ™เน‰เธฒเธˆเธญ, เธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเธฃเธฐเธšเธš, เนเธฅเธฐเธขเธนเธ—เธดเธฅเธดเธ•เธตเน‰เน€เธžเธทเนˆเธญเธšเธณเธฃเธธเธ‡เธฃเธฑเธเธฉเธฒ, เธ›เธฃเธฑเธšเธ›เธฃเธธเธ‡เธ›เธฃเธฐเธชเธดเธ—เธ˜เธดเธ เธฒเธž, เนเธฅเธฐเนเธเน‰เน„เธ‚เธ›เธฑเธเธซเธฒ FrogPilot. + <b>Manage backups, device settings, screen options, storage, and tools to keep FrogPilot running smoothly.</b> + <b>เธˆเธฑเธ”เธเธฒเธฃเธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅ เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธญเธธเธ›เธเธฃเธ“เนŒ เธ•เธฑเธงเน€เธฅเธทเธญเธเธซเธ™เน‰เธฒเธˆเธญ เธ—เธตเนˆเธˆเธฑเธ”เน€เธเน‡เธšเธ‚เน‰เธญเธกเธนเธฅ เนเธฅเธฐเน€เธ„เธฃเธทเนˆเธญเธ‡เธกเธทเธญเธ•เนˆเธฒเธ‡เน† เน€เธžเธทเนˆเธญเนƒเธซเน‰ FrogPilot เธ—เธณเธ‡เธฒเธ™เน„เธ”เน‰เธญเธขเนˆเธฒเธ‡เธฃเธฒเธšเธฃเธทเนˆเธ™</b> Theme and Appearance - เธ˜เธตเธกเนเธฅเธฐเธฃเธนเธ›เธฅเธฑเธเธฉเธ“เนŒ + เธ˜เธตเธกเนเธฅเธฐเธฅเธฑเธเธฉเธ“เธฐappearance - FrogPilot settings for the current theme, driving-screen, and the overall user interface. - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ FrogPilot เธชเธณเธซเธฃเธฑเธšเธ˜เธตเธกเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™, เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ, เนเธฅเธฐเธญเธดเธ™เน€เธ—เธญเธฃเนŒเน€เธŸเธ‹เธœเธนเน‰เนƒเธŠเน‰เน‚เธ”เธขเธฃเธงเธก + <b>Customize the look of the driving screen and interface, including themes!</b> + <b>เธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธซเธ™เน‰เธฒเธˆเธญเธ‚เธฑเธšเธ‚เธตเนˆเนเธฅเธฐเธญเธดเธ™เน€เธ—เธญเธฃเนŒเน€เธŸเธ‹ เธฃเธงเธกเธ–เธถเธ‡เธ˜เธตเธก!</b> - Vehicle Controls - เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธขเธฒเธ™เธžเธฒเธซเธ™เธฐ + Vehicle Settings + เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธขเธฒเธ™เธžเธฒเธซเธ™เธฐ - Options unique to supported manufacturers and vehicle fingerprint management. - เธ•เธฑเธงเน€เธฅเธทเธญเธเน€เธ‰เธžเธฒเธฐเธชเธณเธซเธฃเธฑเธšเธœเธนเน‰เธœเธฅเธดเธ•เธ—เธตเนˆเธฃเธญเธ‡เธฃเธฑเธšเนเธฅเธฐเธเธฒเธฃเธˆเธฑเธ”เธเธฒเธฃเธฅเธฒเธขเธ™เธดเน‰เธงเธกเธทเธญเธ‚เธญเธ‡เธขเธฒเธ™เธžเธฒเธซเธ™เธฐ + <b>Configure car-specific options and steering wheel button mappings.</b> + <b>เธเธณเธซเธ™เธ”เธ„เนˆเธฒเธ•เธฑเธงเน€เธฅเธทเธญเธเน€เธ‰เธžเธฒเธฐเธฃเธ–เนเธฅเธฐเธเธฒเธฃเนเธกเธ›เธ›เธธเนˆเธกเธžเธงเธ‡เธกเธฒเธฅเธฑเธข</b> Minimal - เธกเธดเธ™เธดเธกเธญเธฅ + เธกเธดเธ™เธดเธกเธญเธฅ Standard - เธกเธฒเธ•เธฃเธเธฒเธ™ + เธกเธฒเธ•เธฃเธเธฒเธ™ Advanced - เธ‚เธฑเน‰เธ™เธชเธนเธ‡ + เธ‚เธฑเน‰เธ™เธชเธนเธ‡ Developer - เธ™เธฑเธเธžเธฑเธ’เธ™เธฒ + เธ™เธฑเธเธžเธฑเธ’เธ™เธฒ Tuning Level - เธฃเธฐเธ”เธฑเธšเธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡ + เธฃเธฐเธ”เธฑเธšเธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡ - The visibility and complexity of tuning settings. Lower levels simplify the interface by hiding advanced options, while higher levels unlock detailed customization. + Choose your tuning level. Lower levels keep it simple; higher levels unlock more toggles for finer control. Minimal - Ideal for those who prefer simplicity or ease of use Standard - Recommended for most users for a balanced experience -Advanced - Unlocks fine-tuning controls for more experienced users -Developer - Unlocks highly customizable settings for seasoned enthusiasts - เธเธฒเธฃเธกเธญเธ‡เน€เธซเน‡เธ™เนเธฅเธฐเธ„เธงเธฒเธกเธ‹เธฑเธšเธ‹เน‰เธญเธ™เธ‚เธญเธ‡เธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ เธฃเธฐเธ”เธฑเธšเธ—เธตเนˆเธ•เนˆเธณเธเธงเนˆเธฒเธˆเธฐเธ—เธณเนƒเธซเน‰เธชเนˆเธงเธ™เธ•เธดเธ”เธ•เนˆเธญเธœเธนเน‰เนƒเธŠเน‰เน€เธฃเธตเธขเธšเธ‡เนˆเธฒเธขเธ‚เธถเน‰เธ™เน‚เธ”เธขเธเธฒเธฃเธ‹เนˆเธญเธ™เธ•เธฑเธงเน€เธฅเธทเธญเธเธ‚เธฑเน‰เธ™เธชเธนเธ‡ เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธฃเธฐเธ”เธฑเธšเธ—เธตเนˆเธชเธนเธ‡เธเธงเนˆเธฒเธˆเธฐเธ›เธฅเธ”เธฅเน‡เธญเธเธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธ—เธตเนˆเธฅเธฐเน€เธญเธตเธขเธ”เธ‚เธถเน‰เธ™ +Advanced - Fine-tuning for experienced users +Developer - Highly customizable settings for seasoned enthusiasts + เน€เธฅเธทเธญเธเธฃเธฐเธ”เธฑเธšเธเธฒเธฃเธ›เธฃเธฑเธšเธˆเธนเธ™เธ‚เธญเธ‡เธ„เธธเธ“ เธฃเธฐเธ”เธฑเธšเธ•เนˆเธณเนƒเธŠเน‰เธ‡เธฒเธ™เธ‡เนˆเธฒเธข เธฃเธฐเธ”เธฑเธšเธชเธนเธ‡เธ›เธฅเธ”เธฅเน‡เธญเธเธชเธงเธดเธ•เธŠเนŒเน€เธžเธดเนˆเธกเน€เธ•เธดเธกเน€เธžเธทเนˆเธญเธ„เธงเธšเธ„เธธเธกเน„เธ”เน‰เธฅเธฐเน€เธญเธตเธขเธ”เธ‚เธถเน‰เธ™ -เธ‚เธฑเน‰เธ™เธ•เนˆเธณ - เน€เธซเธกเธฒเธฐเธชเธณเธซเธฃเธฑเธšเธœเธนเน‰เธ—เธตเนˆเธŠเธญเธšเธ„เธงเธฒเธกเน€เธฃเธตเธขเธšเธ‡เนˆเธฒเธขเธซเธฃเธทเธญเนƒเธŠเน‰เธ‡เธฒเธ™เธ‡เนˆเธฒเธข +เธ‚เธฑเน‰เธ™เธ•เนˆเธณ - เน€เธซเธกเธฒเธฐเธชเธณเธซเธฃเธฑเธšเธœเธนเน‰เธ—เธตเนˆเธŠเธญเธšเธ„เธงเธฒเธกเน€เธฃเธตเธขเธšเธ‡เนˆเธฒเธขเธซเธฃเธทเธญเนƒเธŠเน‰เธ‡เธฒเธ™เธชเธฐเธ”เธงเธ เธกเธฒเธ•เธฃเธเธฒเธ™ - เนเธ™เธฐเธ™เธณเธชเธณเธซเธฃเธฑเธšเธœเธนเน‰เนƒเธŠเน‰เธชเนˆเธงเธ™เนƒเธซเธเนˆเน€เธžเธทเนˆเธญเธ›เธฃเธฐเธชเธšเธเธฒเธฃเธ“เนŒเธ—เธตเนˆเธชเธกเธ”เธธเธฅ -เธ‚เธฑเน‰เธ™เธชเธนเธ‡ - เธ›เธฅเธ”เธฅเน‡เธญเธเธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธชเธณเธซเธฃเธฑเธšเธœเธนเน‰เนƒเธŠเน‰เธ—เธตเนˆเธกเธตเธ›เธฃเธฐเธชเธšเธเธฒเธฃเธ“เนŒเธกเธฒเธเธ‚เธถเน‰เธ™ -เธ™เธฑเธเธžเธฑเธ’เธ™เธฒ - เธ›เธฅเธ”เธฅเน‡เธญเธเธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ—เธตเนˆเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เน„เธ”เน‰เธชเธนเธ‡เธชเธณเธซเธฃเธฑเธšเธœเธนเน‰เธ—เธตเนˆเธŠเธทเนˆเธ™เธŠเธญเธšเธ—เธตเนˆเธกเธตเธ›เธฃเธฐเธชเธšเธเธฒเธฃเธ“เนŒ +เธ‚เธฑเน‰เธ™เธชเธนเธ‡ - เธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธฅเธฐเน€เธญเธตเธขเธ”เธชเธณเธซเธฃเธฑเธšเธœเธนเน‰เนƒเธŠเน‰เธ—เธตเนˆเธกเธตเธ›เธฃเธฐเธชเธšเธเธฒเธฃเธ“เนŒ +เธ™เธฑเธเธžเธฑเธ’เธ™เธฒ - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ—เธตเนˆเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เน„เธ”เน‰เธชเธนเธ‡เธชเธณเธซเธฃเธฑเธšเธœเธนเน‰เนƒเธŠเน‰เธฃเธฐเธ”เธฑเธšเน€เธŠเธตเนˆเธขเธงเธŠเธฒเธ - WARNING: This unlocks some potentially dangerous settings that can DRASTICALLY alter your driving experience! - Translation A + WARNING: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do! + เธ„เธณเน€เธ•เธทเธญเธ™: เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเน€เธซเธฅเนˆเธฒเธ™เธตเน‰เธกเธตเธ„เธงเธฒเธกเน€เธชเธตเนˆเธขเธ‡เนเธฅเธฐเธญเธฒเธˆเน€เธ›เธฅเธตเนˆเธขเธ™เธžเธคเธ•เธดเธเธฃเธฃเธกเธเธฒเธฃเธ‚เธฑเธšเธ‚เธญเธ‡ openpilot เน„เธ”เน‰เธญเธขเนˆเธฒเธ‡เธกเธฒเธ เธ›เธฃเธฑเธšเน€เธ‰เธžเธฒเธฐเน€เธกเธทเนˆเธญเธ„เธธเธ“เน€เธ‚เน‰เธฒเนƒเธˆเธชเธดเนˆเธ‡เธ—เธตเนˆเธกเธฑเธ™เธ—เธณเธญเธขเนˆเธฒเธ‡เธ–เนˆเธญเธ‡เนเธ—เน‰เน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™! + + + All toggle descriptions are currently expanded. You can tap a toggle's name to open or close its description at any time! + เธ„เธณเธญเธ˜เธดเธšเธฒเธขเธ‚เธญเธ‡เธชเธงเธดเธ•เธŠเนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”เธ–เธนเธเธ‚เธขเธฒเธขเธญเธขเธนเนˆเนƒเธ™เธ‚เธ“เธฐเธ™เธตเน‰ เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เนเธ•เธฐเธŠเธทเนˆเธญเธ‚เธญเธ‡เธชเธงเธดเธ•เธŠเนŒเน€เธžเธทเนˆเธญเน€เธ›เธดเธ”เธซเธฃเธทเธญเธ›เธดเธ”เธ„เธณเธญเธ˜เธดเธšเธฒเธขเน„เธ”เน‰เธ—เธธเธเน€เธกเธทเนˆเธญ! FrogPilotSoundsPanel - Alert Volume Control - เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™ + Alert Volume Controller + เธ•เธฑเธงเธ„เธงเธšเธ„เธธเธกเธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™ - Adjust the volume for each alert in openpilot. - เธ›เธฃเธฑเธšเธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เนเธ•เนˆเธฅเธฐเธฃเธฒเธขเธเธฒเธฃเนƒเธ™ openpilot. + <b>Set how loud each type of openpilot alert is</b> to keep routine prompts from becoming distracting. + <b>เธ•เธฑเน‰เธ‡เธฃเธฐเธ”เธฑเธšเธ„เธงเธฒเธกเธ”เธฑเธ‡เธ‚เธญเธ‡เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เนเธ•เนˆเธฅเธฐเธ›เธฃเธฐเน€เธ เธ—เธ‚เธญเธ‡ openpilot</b> เน€เธžเธทเนˆเธญเธ›เน‰เธญเธ‡เธเธฑเธ™เน„เธกเนˆเนƒเธซเน‰เธ„เธณเน€เธ•เธทเธญเธ™เธ•เธฒเธกเธ›เธเธ•เธดเธฃเธšเธเธงเธ™เธ„เธธเธ“ Disengage Volume - เธ›เธดเธ”เน€เธชเธตเธขเธ‡ + เธ›เธฃเธดเธกเธฒเธ“เน€เธชเธตเธขเธ‡เน€เธกเธทเนˆเธญเธขเธเน€เธฅเธดเธเนƒเธŠเน‰เธ‡เธฒเธ™ - Adjust the volume for alerts like:<br><br><b>Adaptive Cruise Disabled</b><br><b>Brake Pedal Pressed</b><br><b>Parking Brake Engaged</b><br><b>Speed too Low</b> - เธ›เธฃเธฑเธšเธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™ เน€เธŠเนˆเธ™:<br><br><b>เธ›เธดเธ”เธเธฒเธฃเนƒเธŠเน‰เธ‡เธฒเธ™เธฃเธฐเธšเธšเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด</b><br><b>เน€เธซเธขเธตเธขเธšเนเธ›เน‰เธ™เน€เธšเธฃเธ</b><br><b>เน€เธ›เธดเธ”เน€เธšเธฃเธเธกเธทเธญ</b><br><b>เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ•เนˆเธณเน€เธเธดเธ™เน„เธ›</b> + <b>Set the volume for alerts when openpilot disengages.</b><br><br>Examples include: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". + <b>เธ•เธฑเน‰เธ‡เธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเน€เธ•เธทเธญเธ™เน€เธกเธทเนˆเธญ openpilot เธขเธเน€เธฅเธดเธเธเธฒเธฃเธ„เธงเธšเธ„เธธเธก</b><br><br>เธ•เธฑเธงเธญเธขเนˆเธฒเธ‡เน€เธŠเนˆเธ™: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed" Engage Volume - เธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเนƒเธ™เธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡ + เธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธ‚เธ“เธฐเน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™ - Adjust the volume for alerts like:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> - เธ›เธฃเธฑเธšเธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™ เน€เธŠเนˆเธ™:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> + <b>Set the volume for the chime when openpilot engages</b>, such as after pressing the "RESUME" or "SET" steering wheel buttons. + <b>เธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธชเธณเธซเธฃเธฑเธšเน€เธชเธตเธขเธ‡เน€เธ•เธทเธญเธ™เน€เธกเธทเนˆเธญ openpilot เธ—เธณเธ‡เธฒเธ™</b> เน€เธŠเนˆเธ™ เธซเธฅเธฑเธ‡เธˆเธฒเธเธเธ”เธ›เธธเนˆเธกเธžเธงเธ‡เธกเธฒเธฅเธฑเธข "RESUME" เธซเธฃเธทเธญ "SET" Prompt Volume - เธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธ‚เธญเธ‡เธžเธฃเธญเธกเธ•เนŒ + เธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธžเธฃเธญเธกเธ›เนŒ - Adjust the volume for alerts like:<br><br><b>Car Detected in Blindspot</b><br><b>Steer Unavailable Below "X"</b><br><b>Speed too Low</b><br><b>Take Control, Turn Exceeds Steering Limit</b> - เธ›เธฃเธฑเธšเธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™ เน€เธŠเนˆเธ™:<br><br><b>เธ•เธฃเธงเธˆเธžเธšเธฃเธ–เนƒเธ™เธˆเธธเธ”เธšเธญเธ”</b><br><b>เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธšเธฑเธ‡เธ„เธฑเธšเธžเธงเธ‡เธกเธฒเธฅเธฑเธขเน„เธ”เน‰เธ•เนˆเธณเธเธงเนˆเธฒ "X"</b><br><b>เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ•เนˆเธณเน€เธเธดเธ™เน„เธ›</b><br><b>เธ„เธงเธšเธ„เธธเธกเธฃเธ–, เธเธฒเธฃเน€เธฅเธตเน‰เธขเธงเน€เธเธดเธ™เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธเธฒเธฃเธšเธฑเธ‡เธ„เธฑเธšเธžเธงเธ‡เธกเธฒเธฅเธฑเธข</b> + <b>Set the volume for prompts that need attention.</b><br><br>Examples include: "Car Detected in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". + <b>เธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเน€เธ•เธทเธญเธ™เธ—เธตเนˆเธ•เน‰เธญเธ‡เนƒเธซเน‰เธ„เธงเธฒเธกเธชเธ™เนƒเธˆ</b><br><br>เธ•เธฑเธงเธญเธขเนˆเธฒเธ‡เธฃเธงเธกเธ–เธถเธ‡: "เธ•เธฃเธงเธˆเธžเธšเธšเธ™เธˆเธธเธ”เธšเธญเธ”", "เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเน„เธกเนˆเธžเธฃเน‰เธญเธกเนƒเธŠเน‰เธ‡เธฒเธ™เธŠเธฑเนˆเธงเธ„เธฃเธฒเธง", "เธเธฒเธฃเน€เธฅเธตเน‰เธขเธงเน€เธเธดเธ™เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธข" Prompt Distracted Volume - เธžเธฃเน‰เธญเธกเธ—เนŒ เน€เธชเธตเธขเธ‡เธฃเธšเธเธงเธ™ + เธ›เธฃเธฑเธšเธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เน€เธกเธทเนˆเธญเน€เธชเธตเธขเธชเธกเธฒเธ˜เธด - Adjust the volume for alerts like:<br><br><b>Pay Attention, Driver Distracted</b><br><b>Touch Steering Wheel, Driver Unresponsive</b> - เธ›เธฃเธฑเธšเธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™ เน€เธŠเนˆเธ™:<br><br><b>เน‚เธ›เธฃเธ”เธฃเธฐเธงเธฑเธ‡ เธ„เธ™เธ‚เธฑเธšเน€เธชเธตเธขเธชเธกเธฒเธ˜เธด</b><br><b>เธชเธฑเธกเธœเธฑเธชเธžเธงเธ‡เธกเธฒเธฅเธฑเธข เธ„เธ™เธ‚เธฑเธšเน„เธกเนˆเธ•เธญเธšเธชเธ™เธญเธ‡</b> + <b>Set the volume for prompts when openpilot detects driver distraction or unresponsiveness.</b><br><br>Examples include: "Pay Attention", "Touch Steering Wheel". + <b>เธ•เธฑเน‰เธ‡เธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเน€เธ•เธทเธญเธ™เน€เธกเธทเนˆเธญ openpilot เธ•เธฃเธงเธˆเธžเธšเธงเนˆเธฒเธ„เธ™เธ‚เธฑเธšเน€เธชเธตเธขเธชเธกเธฒเธ˜เธดเธซเธฃเธทเธญเน„เธกเนˆเธ•เธญเธšเธชเธ™เธญเธ‡</b><br><br>เธ•เธฑเธงเธญเธขเนˆเธฒเธ‡เน€เธŠเนˆเธ™: "เธ•เธฑเน‰เธ‡เนƒเธˆเธ‚เธฑเธš", "เนเธ•เธฐเธžเธงเธ‡เธกเธฒเธฅเธฑเธข" Refuse Volume - เธ›เธฃเธดเธกเธฒเธ“เธ‚เธขเธฐ + เธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธ›เธเธดเน€เธชเธ˜ - Adjust the volume for alerts like:<br><br><b>openpilot Unavailable</b> - เธ›เธฃเธฑเธšเธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™ เน€เธŠเนˆเธ™:<br><br><b>openpilot เน„เธกเนˆเธžเธฃเน‰เธญเธกเนƒเธŠเน‰เธ‡เธฒเธ™</b> + <b>Set the volume for alerts when openpilot refuses to engage.</b><br><br>Examples include: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". + <b>เธ•เธฑเน‰เธ‡เธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เน€เธกเธทเนˆเธญ openpilot เธ›เธเธดเน€เธชเธ˜เธเธฒเธฃเธ—เธณเธ‡เธฒเธ™</b><br><br>เธ•เธฑเธงเธญเธขเนˆเธฒเธ‡เน„เธ”เน‰เนเธเนˆ: "เน€เธšเธฃเธเน‚เธฎเธฅเธ”เนŒเธ—เธณเธ‡เธฒเธ™", "เธ›เธฃเธฐเธ•เธนเน€เธ›เธดเธ”", "เน€เธ‚เน‡เธกเธ‚เธฑเธ”เธ™เธดเธฃเธ เธฑเธขเน„เธกเนˆเน„เธ”เน‰เธ„เธฒเธ”" Warning Soft Volume - เธ„เธณเน€เธ•เธทเธญเธ™ เธ›เธฃเธดเธกเธฒเธ“เน€เธชเธตเธขเธ‡เน€เธšเธฒ + เธ„เธณเน€เธ•เธทเธญเธ™ เธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เน€เธšเธฒ - Adjust the volume for alerts like:<br><br><b>BRAKE!, Risk of Collision</b><br><b>TAKE CONTROL IMMEDIATELY</b> - เธ›เธฃเธฑเธšเธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™ เน€เธŠเนˆเธ™:<br><br><b>เน€เธšเธฃเธ!, เน€เธชเธตเนˆเธขเธ‡เธ•เนˆเธญเธเธฒเธฃเธŠเธ™</b><br><b>เธ„เธงเธšเธ„เธธเธกเธ—เธฑเธ™เธ—เธต</b> + <b>Set the volume for softer warnings about potential risks.</b><br><br>Examples include: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". + <b>เธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธชเธณเธซเธฃเธฑเธšเธ„เธณเน€เธ•เธทเธญเธ™เธ—เธตเนˆเน€เธšเธฒเธฅเธ‡เน€เธเธตเนˆเธขเธงเธเธฑเธšเธ„เธงเธฒเธกเน€เธชเธตเนˆเธขเธ‡เธ—เธตเนˆเธญเธฒเธˆเน€เธเธดเธ”เธ‚เธถเน‰เธ™</b><br><br>เธ•เธฑเธงเธญเธขเนˆเธฒเธ‡เน„เธ”เน‰เนเธเนˆ: "BRAKE! เน€เธชเธตเนˆเธขเธ‡เธŠเธ™", "เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธšเธฑเธ‡เธ„เธฑเธšเน€เธฅเธตเน‰เธขเธงเน„เธ”เน‰เธŠเธฑเนˆเธงเธ„เธฃเธฒเธง" Warning Immediate Volume - เธ„เธณเน€เธ•เธทเธญเธ™ เธ›เธฃเธดเธกเธฒเธ“เธ—เธฑเธ™เธ—เธต + เธ„เธณเน€เธ•เธทเธญเธ™ เธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธ—เธฑเธ™เธ—เธต - Adjust the volume for alerts like:<br><br><b>DISENGAGE IMMEDIATELY, Driver Distracted</b><br><b>DISENGAGE IMMEDIATELY, Driver Unresponsive</b> - เธ›เธฃเธฑเธšเธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™ เน€เธŠเนˆเธ™:<br><br><b>เธซเธขเธธเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธ—เธฑเธ™เธ—เธต, เธ„เธ™เธ‚เธฑเธšเน„เธกเนˆเธกเธตเธชเธกเธฒเธ˜เธด</b><br><b>เธซเธขเธธเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธ—เธฑเธ™เธ—เธต, เธ„เธ™เธ‚เธฑเธšเน„เธกเนˆเธ•เธญเธšเธชเธ™เธญเธ‡</b> + <b>Set the volume for the loudest warnings that require urgent attention.</b><br><br>Examples include: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". + <b>เธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธฃเธฐเธ”เธฑเธšเน€เธชเธตเธขเธ‡เธชเธณเธซเธฃเธฑเธšเธ„เธณเน€เธ•เธทเธญเธ™เธ—เธตเนˆเธ”เธฑเธ‡เธ—เธตเนˆเธชเธธเธ”เธ‹เธถเนˆเธ‡เธ•เน‰เธญเธ‡เธเธฒเธฃเธ„เธงเธฒเธกเธชเธ™เนƒเธˆเน€เธฃเนˆเธ‡เธ”เนˆเธงเธ™</b><br><br>เธ•เธฑเธงเธญเธขเนˆเธฒเธ‡ เน„เธ”เน‰เนเธเนˆ: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive" FrogPilot Alerts - เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™ FrogPilot + เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™ FrogPilot - FrogPilot alerts for various events in openpilot. - FrogPilot เนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธชเธณเธซเธฃเธฑเธšเน€เธซเธ•เธธเธเธฒเธฃเธ“เนŒเธ•เนˆเธฒเธ‡เน† เนƒเธ™ openpilot. + <b>Optional FrogPilot alerts</b> that highlight driving events in a more noticeable way. + <b>เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™ FrogPilot เนเธšเธšเน€เธฅเธทเธญเธเนƒเธŠเน‰</b> เธ—เธตเนˆเน€เธ™เน‰เธ™เน€เธซเธ•เธธเธเธฒเธฃเธ“เนŒเธ‚เธ“เธฐเธ‚เธฑเธšเธ‚เธตเนˆเนƒเธซเน‰เธชเธฑเธ‡เน€เธเธ•เน€เธซเน‡เธ™เน„เธ”เน‰เธŠเธฑเธ”เน€เธˆเธ™เธขเธดเนˆเธ‡เธ‚เธถเน‰เธ™ - Goat Scream Steering Saturated Alert - เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเน€เธชเธตเธขเธ‡เนเธžเธฐเธญเธดเนˆเธกเธ•เธฑเธง + Goat Scream + เน€เธชเธตเธขเธ‡เนเธžเธฐเธฃเน‰เธญเธ‡ - The infamous "Goat Scream" that has brought both joy and anger to FrogPilot users all around the world! - เน€เธชเธตเธขเธ‡เธเธฃเธตเธ”เธฃเน‰เธญเธ‡เธ‚เธญเธ‡เนเธžเธฐเธ—เธตเนˆเธกเธตเธŠเธทเนˆเธญเน€เธชเธตเธขเธ‡เธ‹เธถเนˆเธ‡เน„เธ”เน‰เธ™เธณเธ—เธฑเน‰เธ‡เธ„เธงเธฒเธกเธชเธธเธ‚เนเธฅเธฐเธ„เธงเธฒเธกเน‚เธเธฃเธ˜เธกเธฒเธชเธนเนˆเธœเธนเน‰เนƒเธŠเน‰ FrogPilot เธ—เธฑเนˆเธงเน‚เธฅเธ! + <b>Play the infamous "Goat Scream" when the steering controller reaches its limit.</b> Based on the "Turn Exceeds Steering Limit" event. + <b>เน€เธฅเนˆเธ™เน€เธชเธตเธขเธ‡ โ€œเธเธฃเธตเธ”เธฃเน‰เธญเธ‡เนเธžเธฐโ€ เธญเธฑเธ™เธฅเธทเธญเธฅเธฑเนˆเธ™เน€เธกเธทเนˆเธญเธ„เธญเธ™เน‚เธ—เธฃเธฅเน€เธฅเธญเธฃเนŒเธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธ–เธถเธ‡เธ‚เธตเธ”เธˆเธณเธเธฑเธ”</b> เธญเน‰เธฒเธ‡เธญเธดเธ‡เธˆเธฒเธเน€เธซเธ•เธธเธเธฒเธฃเธ“เนŒ โ€œเธเธฒเธฃเน€เธฅเธตเน‰เธขเธงเน€เธเธดเธ™เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธเธฒเธฃเธšเธฑเธ‡เธ„เธฑเธšเน€เธฅเธตเน‰เธขเธงโ€ Green Light Alert - เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เน„เธŸเน€เธ‚เธตเธขเธง + เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธชเธฑเธเธเธฒเธ“เน„เธŸเน€เธ‚เธตเธขเธง - Get an alert when the traffic light changes from red to green. - เธฃเธฑเธšเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เน€เธกเธทเนˆเธญเธชเธฑเธเธเธฒเธ“เน„เธŸเธˆเธฃเธฒเธˆเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เธˆเธฒเธเธชเธตเนเธ”เธ‡เน€เธ›เน‡เธ™เธชเธตเน€เธ‚เธตเธขเธง + <b>Play an alert when the model predicts a red light has turned green.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights. This alert is based on end-to-end model predictions from camera input and may trigger even when the light has not changed.</i> + <b>เน€เธฅเนˆเธ™เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เน€เธกเธทเนˆเธญเน‚เธกเน€เธ”เธฅเธ„เธฒเธ”เธเธฒเธฃเธ“เนŒเธงเนˆเธฒเน„เธŸเนเธ”เธ‡เน€เธ›เธฅเธตเนˆเธขเธ™เน€เธ›เน‡เธ™เน„เธŸเน€เธ‚เธตเธขเธง</b><br><br><i><b>เธ‚เน‰เธญเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเธฃเธฑเธšเธœเธดเธ”เธŠเธญเธš</b>: openpilot เน„เธกเนˆเน„เธ”เน‰เธ•เธฃเธงเธˆเธˆเธฑเธšเธชเธฑเธเธเธฒเธ“เน„เธŸเธˆเธฃเธฒเธˆเธฃเน‚เธ”เธขเธ•เธฃเธ‡ เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธ™เธตเน‰เธญเน‰เธฒเธ‡เธญเธดเธ‡เธˆเธฒเธเธเธฒเธฃเธ„เธฒเธ”เธเธฒเธฃเธ“เนŒเนเธšเธš end-to-end เธˆเธฒเธเธ‚เน‰เธญเธกเธนเธฅเธเธฅเน‰เธญเธ‡เนเธฅเธฐเธญเธฒเธˆเธ—เธฃเธดเธเน€เธเธญเธฃเนŒเนเธกเน‰เน„เธŸเธˆเธฐเธขเธฑเธ‡เน„เธกเนˆเน€เธ›เธฅเธตเนˆเธขเธ™</i> Lead Departing Alert - เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธเธฒเธฃเธญเธญเธเน€เธ”เธดเธ™เธ—เธฒเธ‡เธ‚เธญเธ‡เธœเธนเน‰เธ™เธณ + เนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒเธญเธญเธเธ•เธฑเธง - Get an alert when the lead vehicle begins to depart from a standstill. - เธฃเธฑเธšเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เน€เธกเธทเนˆเธญเธฃเธ–เธ„เธฑเธ™เธ™เธณเน€เธฃเธดเนˆเธกเธญเธญเธเธˆเธฒเธเธเธฒเธฃเธซเธขเธธเธ”เธ™เธดเนˆเธ‡ + <b>Play an alert when the lead vehicle departs from a stop.</b> + <b>เน€เธฅเนˆเธ™เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เน€เธกเธทเนˆเธญเธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒเธญเธญเธเธ•เธฑเธงเธˆเธฒเธเธเธฒเธฃเธซเธขเธธเธ”เธ™เธดเนˆเธ‡</b> Loud "Car Detected in Blindspot" Alert - เน€เธชเธตเธขเธ‡เน€เธ•เธทเธญเธ™ "เธ•เธฃเธงเธˆเธžเธšเธฃเธ–เนƒเธ™เธˆเธธเธ”เธšเธญเธ”" + เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เน€เธชเธตเธขเธ‡เธ”เธฑเธ‡ "เธ•เธฃเธงเธˆเธžเธšเธฃเธ–เนƒเธ™เธˆเธธเธ”เธšเธญเธ”" - A louder alert for when a vehicle is detected in the blindspot when attempting to change lanes. - เน€เธชเธตเธขเธ‡เน€เธ•เธทเธญเธ™เธ—เธตเนˆเธ”เธฑเธ‡เธ‚เธถเน‰เธ™เน€เธกเธทเนˆเธญเธกเธตเธเธฒเธฃเธ•เธฃเธงเธˆเธžเธšเธขเธฒเธ™เธžเธฒเธซเธ™เธฐเนƒเธ™เธˆเธธเธ”เธšเธญเธ”เธ‚เธ“เธฐเธžเธขเธฒเธขเธฒเธกเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™ + <b>Play a louder alert if a vehicle is in the blind spot when attempting to change lanes.</b> Based on the "Car Detected in Blindspot" event. + <b>เน€เธฅเนˆเธ™เธเธฒเธฃเน€เธ•เธทเธญเธ™เนƒเธซเน‰เธ”เธฑเธ‡เธ‚เธถเน‰เธ™เธซเธฒเธเธกเธตเธฃเธ–เธญเธขเธนเนˆเนƒเธ™เธˆเธธเธ”เธšเธญเธ”เน€เธกเธทเนˆเธญเธžเธขเธฒเธขเธฒเธกเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™</b> เธญเน‰เธฒเธ‡เธญเธดเธ‡เธˆเธฒเธเน€เธซเธ•เธธเธเธฒเธฃเธ“เนŒ "Car Detected in Blindspot" Speed Limit Changed Alert - เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง + เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง - Get an alert when the speed limit changes. - เธฃเธฑเธšเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เน€เธกเธทเนˆเธญเธกเธตเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง + <b>Play an alert when the posted speed limit changes.</b> + <b>เน€เธฅเนˆเธ™เธเธฒเธฃเน€เธ•เธทเธญเธ™เน€เธกเธทเนˆเธญเธกเธตเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ›เธฃเธฐเธเธฒเธจเน„เธงเน‰</b> Muted - เธ›เธดเธ”เน€เธชเธตเธขเธ‡ + เธ›เธดเธ”เน€เธชเธตเธขเธ‡ Auto - เธญเธญเน‚เธ•เน‰ + เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด Test - เธ—เธ”เธชเธญเธš + เธ—เธ”เธชเธญเธš FrogPilotThemesPanel - Custom Theme - เธ˜เธตเธกเธ—เธตเนˆเธเธณเธซเธ™เธ”เน€เธญเธ‡ + Custom Themes + เธ˜เธตเธกเธเธณเธซเธ™เธ”เน€เธญเธ‡ - The overall appearance of openpilot. - เธฃเธนเธ›เธฅเธฑเธเธฉเธ“เนŒเน‚เธ”เธขเธฃเธงเธกเธ‚เธญเธ‡ openpilot. + <b>The overall look and feel of openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>เธฃเธนเธ›เธฅเธฑเธเธฉเธ“เนŒเนเธฅเธฐเธ„เธงเธฒเธกเธฃเธนเน‰เธชเธถเธเน‚เธ”เธขเธฃเธงเธกเธ‚เธญเธ‡ openpilot</b> เนƒเธŠเน‰ "Theme Maker" เนƒเธ™ "The Pond" เน€เธžเธทเนˆเธญเธชเธฃเน‰เธฒเธ‡เนเธฅเธฐเนเธšเนˆเธ‡เธ›เธฑเธ™เธ˜เธตเธกเธ‚เธญเธ‡เธ„เธธเธ“เน€เธญเธ‡! Color Scheme - เธŠเธธเธ”เธชเธต + เน‚เธ—เธ™เธชเธต - openpilot's color scheme. - -Want to submit your own color scheme? Share it in the "custom-themes" channel on the FrogPilot Discord! - เน‚เธ—เธ™เธชเธตเธ‚เธญเธ‡ openpilot - -เธ•เน‰เธญเธ‡เธเธฒเธฃเธชเนˆเธ‡เน‚เธ—เธ™เธชเธตเธ‚เธญเธ‡เธ„เธธเธ“เน€เธญเธ‡เธซเธฃเธทเธญเน„เธกเนˆ? เนเธŠเธฃเนŒเนƒเธ™เธŠเนˆเธญเธ‡ "custom-themes" เธšเธ™ FrogPilot Discord! + <b>The color scheme used throughout openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>เธŠเธธเธ”เธชเธตเธ—เธตเนˆเนƒเธŠเน‰เธ—เธฑเนˆเธงเธ—เธฑเน‰เธ‡ openpilot</b> เนƒเธŠเน‰ "Theme Maker" เนƒเธ™ "The Pond" เน€เธžเธทเนˆเธญเธชเธฃเน‰เธฒเธ‡เนเธฅเธฐเนเธŠเธฃเนŒเธ˜เธตเธกเธ‚เธญเธ‡เธ„เธธเธ“เน€เธญเธ‡! + + + Distance Button + เธ›เธธเนˆเธกเธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡ + + + <b>The distance button icons shown on the driving screen.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>เน„เธญเธ„เธญเธ™เธ›เธธเนˆเธกเธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡เธ—เธตเนˆเนเธชเธ”เธ‡เธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธ‚เธ“เธฐเธ‚เธฑเธšเธ‚เธตเนˆ</b> เนƒเธŠเน‰ "Theme Maker" เนƒเธ™ "The Pond" เน€เธžเธทเนˆเธญเธชเธฃเน‰เธฒเธ‡เนเธฅเธฐเนเธŠเธฃเนŒเธ˜เธตเธกเธ‚เธญเธ‡เธ„เธธเธ“เน€เธญเธ‡! Icon Pack - เธŠเธธเธ”เน„เธญเธ„เธญเธ™ + เธŠเธธเธ”เน„เธญเธ„เธญเธ™ - openpilot's icon pack. - -Want to submit your own icons? Share them in the "custom-themes" channel on the FrogPilot Discord! - เธ•เน‰เธญเธ‡เธเธฒเธฃเธชเนˆเธ‡เน„เธญเธ„เธญเธ™เธ‚เธญเธ‡เธ„เธธเธ“เน€เธญเธ‡เธซเธฃเธทเธญเน„เธกเนˆ? เนเธŠเธฃเนŒเนƒเธ™เธŠเนˆเธญเธ‡ "custom-themes" เธšเธ™ FrogPilot Discord! + <b>The icon style used across openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>เธชเน„เธ•เธฅเนŒเน„เธญเธ„เธญเธ™เธ—เธตเนˆเนƒเธŠเน‰เธ—เธฑเนˆเธงเธ—เธฑเน‰เธ‡ openpilot</b> เนƒเธŠเน‰ "Theme Maker" เนƒเธ™ "The Pond" เน€เธžเธทเนˆเธญเธชเธฃเน‰เธฒเธ‡เนเธฅเธฐเนเธšเนˆเธ‡เธ›เธฑเธ™เธ˜เธตเธกเธ‚เธญเธ‡เธ„เธธเธ“เน€เธญเธ‡! Sound Pack - เธŠเธธเธ”เน€เธชเธตเธขเธ‡ + เนเธžเน‡เธเน€เธชเธตเธขเธ‡ - openpilot's sound effects. - -Want to submit your own sounds? Share them in the "custom-themes" channel on the FrogPilot Discord! - เธ•เน‰เธญเธ‡เธเธฒเธฃเธชเนˆเธ‡เน€เธชเธตเธขเธ‡เธ‚เธญเธ‡เธ„เธธเธ“เน€เธญเธ‡เธซเธฃเธทเธญเน„เธกเนˆ? เนเธšเนˆเธ‡เธ›เธฑเธ™เนƒเธ™เธŠเนˆเธญเธ‡ "custom-themes" เธšเธ™ FrogPilot Discord! + <b>The sound pack used by openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>เนเธžเน‡เธเน€เธชเธตเธขเธ‡เธ—เธตเนˆ openpilot เนƒเธŠเน‰</b> เนƒเธŠเน‰ "Theme Maker" เนƒเธ™ "The Pond" เน€เธžเธทเนˆเธญเธชเธฃเน‰เธฒเธ‡เนเธฅเธฐเนเธŠเธฃเนŒเธ˜เธตเธกเธ‚เธญเธ‡เธ„เธธเธ“เน€เธญเธ‡! Steering Wheel - เธžเธงเธ‡เธกเธฒเธฅเธฑเธข + เธžเธงเธ‡เธกเธฒเธฅเธฑเธข - The steering wheel icon in the top right of the driving screen. - เน„เธญเธ„เธญเธ™เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธ—เธตเนˆเธกเธธเธกเธ‚เธงเธฒเธšเธ™เธ‚เธญเธ‡เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ - - - Themed turn signal animations. - -Want to submit your own animations? Share them in the "custom-themes" channel on the FrogPilot Discord! - เนเธญเธ™เธดเน€เธกเธŠเธฑเธ™เน„เธŸเน€เธฅเธตเน‰เธขเธงเธ•เธฒเธกเธ˜เธตเธก - -เธ•เน‰เธญเธ‡เธเธฒเธฃเธชเนˆเธ‡เนเธญเธ™เธดเน€เธกเธŠเธฑเธ™เธ‚เธญเธ‡เธ„เธธเธ“เน€เธญเธ‡เธซเธฃเธทเธญเน„เธกเนˆ? เนเธŠเธฃเนŒเนƒเธ™เธŠเนˆเธญเธ‡ "custom-themes" เธšเธ™ FrogPilot Discord! - - - Download Status - เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธชเธ–เธฒเธ™เธฐ - - - Holiday Themes - เธ˜เธตเธกเธงเธฑเธ™เธซเธขเธธเธ” - - - Holiday-based visual themes for openpilot. Minor holidays last one day; major holidays (Christmas, Easter, Halloween, etc.) continue all week. - เธ˜เธตเธกเธ เธฒเธžเธ•เธฒเธกเธงเธฑเธ™เธซเธขเธธเธ”เธชเธณเธซเธฃเธฑเธš openpilot เธงเธฑเธ™เธซเธขเธธเธ”เน€เธฅเน‡เธเน† เธˆเธฐเธกเธตเธฃเธฐเธขเธฐเน€เธงเธฅเธฒเน€เธžเธตเธขเธ‡เธซเธ™เธถเนˆเธ‡เธงเธฑเธ™; เธงเธฑเธ™เธซเธขเธธเธ”เนƒเธซเธเนˆ (เธ„เธฃเธดเธชเธ•เนŒเธกเธฒเธช, เธญเธตเธชเน€เธ•เธญเธฃเนŒ, เธฎเธฒเน‚เธฅเธงเธตเธ™ เธฏเธฅเธฏ) เธˆเธฐเธ”เธณเน€เธ™เธดเธ™เธ•เนˆเธญเน„เธ›เธ•เธฅเธญเธ”เธ—เธฑเน‰เธ‡เธชเธฑเธ›เธ”เธฒเธซเนŒ - - - Rainbow Path - เน€เธชเน‰เธ™เธ—เธฒเธ‡เธชเธฒเธขเธฃเธธเน‰เธ‡ - - - The path on the driving screen turns into a Mario Kart inspired "Rainbow Path". - เน€เธชเน‰เธ™เธ—เธฒเธ‡เธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธ›เน‡เธ™ "เน€เธชเน‰เธ™เธ—เธฒเธ‡เธชเธฒเธขเธฃเธธเน‰เธ‡" เธ—เธตเนˆเน„เธ”เน‰เธฃเธฑเธšเนเธฃเธ‡เธšเธฑเธ™เธ”เธฒเธฅเนƒเธˆเธˆเธฒเธ Mario Kart. - - - Random Events - เน€เธซเธ•เธธเธเธฒเธฃเธ“เนŒเธชเธธเนˆเธก - - - Random cosmetic events that trigger after certain driving conditions. These events are purely for fun and don't affect driving controls! - เน€เธซเธ•เธธเธเธฒเธฃเธ“เนŒเน€เธ„เธฃเธทเนˆเธญเธ‡เธชเธณเธญเธฒเธ‡เนเธšเธšเธชเธธเนˆเธกเธ—เธตเนˆเน€เธเธดเธ”เธ‚เธถเน‰เธ™เธซเธฅเธฑเธ‡เธˆเธฒเธเน€เธ‡เธทเนˆเธญเธ™เน„เธ‚เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธšเธฒเธ‡เธญเธขเนˆเธฒเธ‡ เน€เธซเธ•เธธเธเธฒเธฃเธ“เนŒเน€เธซเธฅเนˆเธฒเธ™เธตเน‰เธกเธตเน„เธงเน‰เน€เธžเธทเนˆเธญเธ„เธงเธฒเธกเธชเธ™เธธเธเธชเธ™เธฒเธ™เนเธฅเธฐเน„เธกเนˆเธชเนˆเธ‡เธœเธฅเธ•เนˆเธญเธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ! - - - Random Themes - เธ˜เธตเธกเธชเธธเนˆเธก - - - Cycles through your downloaded themes randomly on each boot, giving every theme in your collection a chance to shine! - เธซเธกเธธเธ™เน€เธงเธตเธขเธ™เธ˜เธตเธกเธ—เธตเนˆเธ„เธธเธ“เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนเธšเธšเธชเธธเนˆเธกเนƒเธ™เนเธ•เนˆเธฅเธฐเธเธฒเธฃเธšเธนเธ• เนƒเธซเน‰เธ—เธธเธเธ˜เธตเธกเนƒเธ™เธ„เธญเธฅเน€เธฅเธเธŠเธฑเธ™เธ‚เธญเธ‡เธ„เธธเธ“เน„เธ”เน‰เธกเธตเน‚เธญเธเธฒเธชเนเธชเธ”เธ‡เธ„เธงเธฒเธกเน‚เธ”เธ”เน€เธ”เนˆเธ™! - - - Startup Alert - เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธเธฒเธฃเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ - - - The text of the "Startup Alert" message that appears at the beginning of a drive. - เธ‚เน‰เธญเธ„เธงเธฒเธก "เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธเธฒเธฃเน€เธฃเธดเนˆเธกเธ•เน‰เธ™" เธ—เธตเนˆเธ›เธฃเธฒเธเธเธ‚เธถเน‰เธ™เน€เธกเธทเนˆเธญเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เน„เธ”เธฃเธŸเนŒ - - - DELETE - เธฅเธš - - - DOWNLOAD - เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” - - - SELECT - SELECT - - - Select a color scheme to delete - เน€เธฅเธทเธญเธเธŠเธธเธ”เธชเธตเธ—เธตเนˆเธˆเธฐเธฅเธš - - - Are you sure you want to delete the "%1" color scheme? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเธŠเธธเธ”เธชเธต "%1"? - - - Delete - เธฅเธš - - - Select a color scheme to download - เน€เธฅเธทเธญเธเธŠเธธเธ”เธชเธตเน€เธžเธทเนˆเธญเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” - - - Select a color scheme - เน€เธฅเธทเธญเธเธŠเธธเธ”เธชเธต - - - Select a distance icon pack to delete - เน€เธฅเธทเธญเธเธŠเธธเธ”เน„เธญเธ„เธญเธ™เธฃเธฐเธขเธฐเธ—เธฒเธ‡เน€เธžเธทเนˆเธญเธฅเธš - - - Are you sure you want to delete the "%1" distance icon pack? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเธŠเธธเธ”เน„เธญเธ„เธญเธ™เธฃเธฐเธขเธฐเธ—เธฒเธ‡ "%1"? - - - Select a distance icon pack to download - เน€เธฅเธทเธญเธเธŠเธธเธ”เน„เธญเธ„เธญเธ™เธฃเธฐเธขเธฐเธ—เธฒเธ‡เน€เธžเธทเนˆเธญเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” - - - Select a distance icon pack - เน€เธฅเธทเธญเธเธŠเธธเธ”เน„เธญเธ„เธญเธ™เธฃเธฐเธขเธฐเธ—เธฒเธ‡ - - - Select an icon pack to delete - เน€เธฅเธทเธญเธเธŠเธธเธ”เน„เธญเธ„เธญเธ™เน€เธžเธทเนˆเธญเธฅเธš - - - Are you sure you want to delete the "%1" icon pack? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเธŠเธธเธ”เน„เธญเธ„เธญเธ™ "%1"? - - - Select an icon pack to download - เน€เธฅเธทเธญเธเธŠเธธเธ”เน„เธญเธ„เธญเธ™เน€เธžเธทเนˆเธญเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” - - - Select an icon pack - เน€เธฅเธทเธญเธเธŠเธธเธ”เน„เธญเธ„เธญเธ™ - - - Select a signal animation to delete - เน€เธฅเธทเธญเธเนเธญเธ™เธดเน€เธกเธŠเธฑเธ™เธชเธฑเธเธเธฒเธ“เน€เธžเธทเนˆเธญเธฅเธš - - - Are you sure you want to delete the "%1" signal animation? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเนเธญเธ™เธดเน€เธกเธŠเธฑเธ™เธชเธฑเธเธเธฒเธ“ "%1"? - - - Select a signal animation to download - เน€เธฅเธทเธญเธเนเธญเธ™เธดเน€เธกเธŠเธฑเธ™เธชเธฑเธเธเธฒเธ“เน€เธžเธทเนˆเธญเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” - - - Select a signal animation - เน€เธฅเธทเธญเธเนเธญเธ™เธดเน€เธกเธŠเธฑเธ™เธชเธฑเธเธเธฒเธ“ - - - Select a sound pack to delete - เน€เธฅเธทเธญเธเธŠเธธเธ”เน€เธชเธตเธขเธ‡เธ—เธตเนˆเธˆเธฐเธฅเธš - - - Are you sure you want to delete the "%1" sound pack? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเธŠเธธเธ”เน€เธชเธตเธขเธ‡ "%1"? - - - Select a sound pack to download - เน€เธฅเธทเธญเธเธŠเธธเธ”เน€เธชเธตเธขเธ‡เน€เธžเธทเนˆเธญเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” - - - Select a sound pack - เน€เธฅเธทเธญเธเธŠเธธเธ”เน€เธชเธตเธขเธ‡ - - - Select a steering wheel to delete - เน€เธฅเธทเธญเธเธžเธงเธ‡เธกเธฒเธฅเธฑเธขเน€เธžเธทเนˆเธญเธฅเธš - - - Are you sure you want to delete the "%1" steering wheel? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเธžเธงเธ‡เธกเธฒเธฅเธฑเธข "%1"? - - - Select a steering wheel to download - เน€เธฅเธทเธญเธเธžเธงเธ‡เธกเธฒเธฅเธฑเธขเน€เธžเธทเนˆเธญเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” - - - Select a steering wheel - เน€เธฅเธทเธญเธเธžเธงเธ‡เธกเธฒเธฅเธฑเธข - - - STOCK - เธชเธ•เน‡เธญเธ - - - FROGPILOT - FROGPILOT - - - CUSTOM - เธเธณเธซเธ™เธ”เน€เธญเธ‡ - - - CLEAR - เธŠเธฑเธ”เน€เธˆเธ™ - - - Enter the text for the top half - เธ›เน‰เธญเธ™เธ‚เน‰เธญเธ„เธงเธฒเธกเธชเธณเธซเธฃเธฑเธšเธ„เธฃเธถเนˆเธ‡เธšเธ™ - - - Characters: 0/%1 - เธ•เธฑเธงเธญเธฑเธเธฉเธฃ: 0/%1 - - - Enter the text for the bottom half - เธ›เน‰เธญเธ™เธ‚เน‰เธญเธ„เธงเธฒเธกเธชเธณเธซเธฃเธฑเธšเธ„เธฃเธถเนˆเธ‡เธฅเนˆเธฒเธ‡ - - - "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! - "เธ˜เธตเธกเธชเธธเนˆเธก" เนƒเธŠเน‰เธ‡เธฒเธ™เน„เธ”เน‰เน€เธ‰เธžเธฒเธฐเธเธฑเธšเธ˜เธตเธกเธ—เธตเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนเธฅเน‰เธง เธ”เธฑเธ‡เธ™เธฑเน‰เธ™เธญเธขเนˆเธฒเธฅเธทเธกเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ˜เธตเธกเธ—เธตเนˆเธ„เธธเธ“เธ•เน‰เธญเธ‡เธเธฒเธฃเนƒเธŠเน‰! - - - CANCEL - เธขเธเน€เธฅเธดเธ - - - Are you sure you want to completely reset your startup message? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ•เธ‚เน‰เธญเธ„เธงเธฒเธกเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธ‚เธญเธ‡เธ„เธธเธ“เธ—เธฑเน‰เธ‡เธซเธกเธ”? + <b>The steering-wheel icon</b> shown at the top-right of the driving screen. Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>เน„เธญเธ„เธญเธ™เธžเธงเธ‡เธกเธฒเธฅเธฑเธข</b> เธˆเธฐเนเธชเธ”เธ‡เธ—เธตเนˆเธกเธธเธกเธ‚เธงเธฒเธšเธ™เธ‚เธญเธ‡เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ เนƒเธŠเน‰ "Theme Maker" เนƒเธ™ "The Pond" เน€เธžเธทเนˆเธญเธชเธฃเน‰เธฒเธ‡เนเธฅเธฐเนเธŠเธฃเนŒเธ˜เธตเธกเธ‚เธญเธ‡เธ„เธธเธ“เน€เธญเธ‡! Turn Signal - เน„เธŸเน€เธฅเธตเน‰เธขเธง + เธชเธฑเธเธเธฒเธ“เน€เธฅเธตเน‰เธขเธง + + + <b>Themed turn-signal animations.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>เนเธญเธ™เธดเน€เธกเธŠเธฑเธ™เน„เธŸเน€เธฅเธตเน‰เธขเธงเธ•เธฒเธกเธ˜เธตเธก</b> เนƒเธŠเน‰ "Theme Maker" เนƒเธ™ "The Pond" เน€เธžเธทเนˆเธญเธชเธฃเน‰เธฒเธ‡เนเธฅเธฐเนเธŠเธฃเนŒเธ˜เธตเธกเธ‚เธญเธ‡เธ„เธธเธ“เน€เธญเธ‡! + + + Download Status + เธชเธ–เธฒเธ™เธฐเธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” + + + Holiday Themes + เธ˜เธตเธกเธงเธฑเธ™เธซเธขเธธเธ” + + + <b>Themes based on U.S. holidays.</b> Minor holidays last one day; major holidays (Christmas, Easter, Halloween) run for a full week. + <b>เธ˜เธตเธกเธ•เธฒเธกเธงเธฑเธ™เธซเธขเธธเธ”เธ‚เธญเธ‡เธชเธซเธฃเธฑเธเธญเน€เธกเธฃเธดเธเธฒ</b> เธงเธฑเธ™เธซเธขเธธเธ”เธขเนˆเธญเธขเธกเธตเธฃเธฐเธขเธฐเน€เธงเธฅเธฒ 1 เธงเธฑเธ™; เธงเธฑเธ™เธซเธขเธธเธ”เนƒเธซเธเนˆ (Christmas, Easter, Halloween) เธˆเธฑเธ”เน€เธ•เน‡เธกเน€เธ›เน‡เธ™เน€เธงเธฅเธฒ 1 เธชเธฑเธ›เธ”เธฒเธซเนŒ + + + Rainbow Path + เน€เธชเน‰เธ™เธ—เธฒเธ‡เธชเธฒเธขเธฃเธธเน‰เธ‡ + + + <b>Color the driving path like a Mario Kartโ€“style "Rainbow Road".</b> + <b>เนเธชเธ”เธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡เธ‚เธฑเธšเธ‚เธตเนˆเธ”เน‰เธงเธขเธชเธตเธชเธฑเธ™เนเธšเธš โ€œRainbow Roadโ€ เธชเน„เธ•เธฅเนŒ Mario Kart</b> + + + Random Events + เน€เธซเธ•เธธเธเธฒเธฃเธ“เนŒเนเธšเธšเธชเธธเนˆเธก + + + <b>Occasional on-screen effects triggered by driving conditions.</b> These are purely a visual and don't impact how openpilot drives! + <b>เน€เธญเธŸเน€เธŸเธเธ•เนŒเธšเธ™เธซเธ™เน‰เธฒเธˆเธญเน€เธ›เน‡เธ™เธ„เธฃเธฑเน‰เธ‡เธ„เธฃเธฒเธงเธ—เธตเนˆเน€เธเธดเธ”เธˆเธฒเธเธชเธ เธฒเธžเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ</b> เธชเธดเนˆเธ‡เน€เธซเธฅเนˆเธฒเธ™เธตเน‰เน€เธ›เน‡เธ™เน€เธžเธตเธขเธ‡เธ เธฒเธžเน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™เนเธฅเธฐเน„เธกเนˆเธชเนˆเธ‡เธœเธฅเธ•เนˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธญเธ‡ openpilot! + + + Random Themes + เธ˜เธตเธกเนเธšเธšเธชเธธเนˆเธก + + + <b>Pick a random theme between each drive</b> from the themes you have downloaded. Great for variety without changing settings while driving. + <b>เธชเธธเนˆเธกเธ˜เธตเธกเธฃเธฐเธซเธงเนˆเธฒเธ‡เนเธ•เนˆเธฅเธฐเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ</b> เธˆเธฒเธเธ˜เธตเธกเธ—เธตเนˆเธ„เธธเธ“เน„เธ”เน‰เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” เน€เธซเธกเธฒเธฐเธชเธณเธซเธฃเธฑเธšเธ„เธงเธฒเธกเธซเธฅเธฒเธเธซเธฅเธฒเธขเน‚เธ”เธขเน„เธกเนˆเธ•เน‰เธญเธ‡เน€เธ›เธฅเธตเนˆเธขเธ™เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเนƒเธ™เธ‚เธ“เธฐเธ‚เธฑเธšเธฃเธ– + + + Startup Alert + เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เน€เธฃเธดเนˆเธกเธ•เน‰เธ™ + + + <b>Customize the "Startup Alert" message</b> shown at the start of each drive. + <b>เธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธ‚เน‰เธญเธ„เธงเธฒเธก "เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เน€เธฃเธดเนˆเธกเธ•เน‰เธ™"</b> เธ—เธตเนˆเนเธชเธ”เธ‡เน€เธกเธทเนˆเธญเน€เธฃเธดเนˆเธกเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเนเธ•เนˆเธฅเธฐเธ„เธฃเธฑเน‰เธ‡ + + + DELETE + เธฅเธš + + + DOWNLOAD + เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” + + + SELECT + เน€เธฅเธทเธญเธ + + + Select a color scheme to delete + เน€เธฅเธทเธญเธเธŠเธธเธ”เธชเธตเธ—เธตเนˆเธˆเธฐเธฅเธš + + + Delete the "%1" color scheme? + เธฅเธšเธŠเธธเธ”เธชเธต "%1" เธซเธฃเธทเธญเน„เธกเนˆ? + + + Delete + เธฅเธš + + + Select a color scheme to download + เน€เธฅเธทเธญเธเธŠเธธเธ”เธชเธตเน€เธžเธทเนˆเธญเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” + + + Select a color scheme + เน€เธฅเธทเธญเธเธŠเธธเธ”เธชเธต + + + Select a distance icon pack to delete + เน€เธฅเธทเธญเธเธŠเธธเธ”เน„เธญเธ„เธญเธ™เธฃเธฐเธขเธฐเธ—เธฒเธ‡เธ—เธตเนˆเธˆเธฐเธฅเธš + + + Delete the "%1" distance icon pack? + เธฅเธšเธŠเธธเธ”เน„เธญเธ„เธญเธ™เธฃเธฐเธขเธฐเธ—เธฒเธ‡ "%1" เธซเธฃเธทเธญเน„เธกเนˆ? + + + Select a distance icon pack to download + เน€เธฅเธทเธญเธเธŠเธธเธ”เน„เธญเธ„เธญเธ™เธฃเธฐเธขเธฐเธ—เธฒเธ‡เน€เธžเธทเนˆเธญเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” + + + Select a distance icon pack + เน€เธฅเธทเธญเธเธŠเธธเธ”เน„เธญเธ„เธญเธ™เธฃเธฐเธขเธฐเธ—เธฒเธ‡ + + + Select an icon pack to delete + เน€เธฅเธทเธญเธเธŠเธธเธ”เน„เธญเธ„เธญเธ™เธ—เธตเนˆเธˆเธฐเธฅเธš + + + Delete the "%1" icon pack? + เธฅเธšเธŠเธธเธ”เน„เธญเธ„เธญเธ™ "%1" เธซเธฃเธทเธญเน„เธกเนˆ? + + + Select an icon pack to download + เน€เธฅเธทเธญเธเธŠเธธเธ”เน„เธญเธ„เธญเธ™เน€เธžเธทเนˆเธญเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” + + + Select an icon pack + เน€เธฅเธทเธญเธเธŠเธธเธ”เน„เธญเธ„เธญเธ™ + + + Select a signal animation to delete + เน€เธฅเธทเธญเธเธฅเธšเนเธญเธ™เธดเน€เธกเธŠเธฑเธ™เธชเธฑเธเธเธฒเธ“ + + + Delete the "%1" signal animation? + เธฅเธšเนเธญเธ™เธดเน€เธกเธŠเธฑเธ™เธชเธฑเธเธเธฒเธ“ "%1" เธซเธฃเธทเธญเน„เธกเนˆ? + + + Select a signal animation to download + เน€เธฅเธทเธญเธเนเธญเธ™เธดเน€เธกเธŠเธฑเธ™เธชเธฑเธเธเธฒเธ“เน€เธžเธทเนˆเธญเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” + + + Select a signal animation + เน€เธฅเธทเธญเธเนเธญเธ™เธดเน€เธกเธŠเธฑเธ™เธชเธฑเธเธเธฒเธ“ + + + Select a sound pack to delete + เน€เธฅเธทเธญเธเนเธžเน‡เธ„เน€เธชเธตเธขเธ‡เธ—เธตเนˆเธˆเธฐเธฅเธš + + + Delete the "%1" sound pack? + เธฅเธšเธŠเธธเธ”เน€เธชเธตเธขเธ‡ "%1" เธซเธฃเธทเธญเน„เธกเนˆ? + + + Select a sound pack to download + เน€เธฅเธทเธญเธเนเธžเน‡เธเน€เธชเธตเธขเธ‡เน€เธžเธทเนˆเธญเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” + + + Select a sound pack + เน€เธฅเธทเธญเธเธŠเธธเธ”เน€เธชเธตเธขเธ‡ + + + Select a steering wheel to delete + เน€เธฅเธทเธญเธเธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธ—เธตเนˆเธˆเธฐเธฅเธš + + + Delete the "%1" steering wheel? + เธฅเธšเธžเธงเธ‡เธกเธฒเธฅเธฑเธข "%1" เนƒเธŠเนˆเธซเธฃเธทเธญเน„เธกเนˆ? + + + Select a steering wheel to download + เน€เธฅเธทเธญเธเธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธ—เธตเนˆเธˆเธฐเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ” + + + Select a steering wheel + เน€เธฅเธทเธญเธเธžเธงเธ‡เธกเธฒเธฅเธฑเธข + + + STOCK + เธชเธ•เน‡เธญเธ + + + FROGPILOT + FROGPILOT + + + CUSTOM + เธเธณเธซเธ™เธ”เน€เธญเธ‡ + + + CLEAR + เธฅเน‰เธฒเธ‡ + + + Enter the text for the top half + เธ›เน‰เธญเธ™เธ‚เน‰เธญเธ„เธงเธฒเธกเธชเธณเธซเธฃเธฑเธšเธ„เธฃเธถเนˆเธ‡เธšเธ™ + + + Characters: 0/%1 + เธญเธฑเธเธ‚เธฃเธฐ: 0/%1 + + + Enter the text for the bottom half + เธ›เน‰เธญเธ™เธ‚เน‰เธญเธ„เธงเธฒเธกเธชเธณเธซเธฃเธฑเธšเธ„เธฃเธถเนˆเธ‡เธฅเนˆเธฒเธ‡ + + + Are you sure you want to completely reset your startup message? + เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ•เธ‚เน‰เธญเธ„เธงเธฒเธกเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธ‚เธญเธ‡เธ„เธธเธ“เธ—เธฑเน‰เธ‡เธซเธกเธ”? + + + "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! + เธŸเธตเน€เธˆเธญเธฃเนŒ "เธ˜เธตเธกเธชเธธเนˆเธก" เนƒเธŠเน‰เน„เธ”เน‰เน€เธ‰เธžเธฒเธฐเธเธฑเธšเธ˜เธตเธกเธ—เธตเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนเธฅเน‰เธง เธ”เธฑเธ‡เธ™เธฑเน‰เธ™เธญเธขเนˆเธฒเธฅเธทเธกเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ˜เธตเธกเธ—เธตเนˆเธ•เน‰เธญเธ‡เธเธฒเธฃเนƒเธซเน‰เธกเธฑเธ™เนƒเธŠเน‰เธ‡เธฒเธ™! + + + CANCEL + เธขเธเน€เธฅเธดเธ FrogPilotUtilitiesPanel Debug Mode - เน‚เธซเธกเธ”เธ”เธตเธšเธฑเธ + เน‚เธซเธกเธ”เธ”เธตเธšเธฑเธ - Debug FrogPilot during the next drive by utilizing all of FrogPilot's developer metrics for either bug reporting, or self-debugging. - เนเธเน‰เน„เธ‚เธ‚เน‰เธญเธšเธเธžเธฃเนˆเธญเธ‡ FrogPilot เนƒเธ™เธฃเธฐเธซเธงเนˆเธฒเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ„เธฃเธฑเน‰เธ‡เธ•เนˆเธญเน„เธ›เน‚เธ”เธขเนƒเธŠเน‰เน€เธกเธ•เธฃเธดเธเธ‚เธญเธ‡เธ™เธฑเธเธžเธฑเธ’เธ™เธฒเธ—เธฑเน‰เธ‡เธซเธกเธ”เธ‚เธญเธ‡ FrogPilot เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธฃเธฒเธขเธ‡เธฒเธ™เธ‚เน‰เธญเธšเธเธžเธฃเนˆเธญเธ‡เธซเธฃเธทเธญเธเธฒเธฃเนเธเน‰เน„เธ‚เธ‚เน‰เธญเธšเธเธžเธฃเนˆเธญเธ‡เธ”เน‰เธงเธขเธ•เธ™เน€เธญเธ‡ + <b>Use FrogPilot's developer metrics on your next drive</b> to diagnose issues and improve bug reports. + <b>เนƒเธŠเน‰เธ•เธฑเธงเธŠเธตเน‰เธงเธฑเธ”เธชเธณเธซเธฃเธฑเธšเธ™เธฑเธเธžเธฑเธ’เธ™เธฒเธ‚เธญเธ‡ FrogPilot เนƒเธ™เธเธฒเธฃเธ‚เธฑเธšเธ„เธฃเธฑเน‰เธ‡เธ–เธฑเธ”เน„เธ›เธ‚เธญเธ‡เธ„เธธเธ“</b> เน€เธžเธทเนˆเธญเธงเธดเธ™เธดเธˆเธ‰เธฑเธขเธ›เธฑเธเธซเธฒเนเธฅเธฐเธ›เธฃเธฑเธšเธ›เธฃเธธเธ‡เธฃเธฒเธขเธ‡เธฒเธ™เธšเธฑเนŠเธ Flash Panda - เนเธŸเธฅเธŠเนเธžเธ™เธ”เน‰เธฒ + เนเธŸเธฅเธŠ Panda FLASH - เนเธŸเธฅเธŠ + เนเธŸเธฅเธŠ - Flash the Panda's firmware. Use if you're running into issues with the Panda. - เนเธŸเธฅเธŠเน€เธŸเธดเธฃเนŒเธกเนเธงเธฃเนŒเธ‚เธญเธ‡เนเธžเธ™เธ”เน‰เธฒ เนƒเธŠเน‰เธซเธฒเธเธ„เธธเธ“เธžเธšเธ›เธฑเธเธซเธฒเธเธฑเธšเนเธžเธ™เธ”เน‰เธฒ + <b>Reinstall the Panda firmware</b> to fix connection or reliability issues. + <b>เธ•เธดเธ”เธ•เธฑเน‰เธ‡เน€เธŸเธดเธฃเนŒเธกเนเธงเธฃเนŒ Panda เนƒเธซเธกเนˆ</b> เน€เธžเธทเนˆเธญเนเธเน‰เธ›เธฑเธเธซเธฒเธเธฒเธฃเน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญเธซเธฃเธทเธญเธ„เธงเธฒเธกเน€เธชเธ–เธตเธขเธฃ - Are you sure you want to flash the Panda? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเนเธŸเธฅเธŠ Panda? + Are you sure you want to flash the Panda firmware? + เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเนเธŸเธฅเธŠเน€เธŸเธดเธฃเนŒเธกเนเธงเธฃเนŒ Panda? Flash - เนเธŸเธฅเธŠ + เนเธŸเธฅเธŠ Flashing... - เธเธณเธฅเธฑเธ‡เธเธฐเธžเธฃเธดเธš... + เธเธณเธฅเธฑเธ‡เธเธฐเธžเธฃเธดเธšโ€ฆ Flashed! - เนเธŸเธฅเธŠ! + เนเธŸเธฅเธŠเนเธฅเน‰เธง! Rebooting... - เธเธณเธฅเธฑเธ‡เธฃเธตเธšเธนเธ•... + เธเธณเธฅเธฑเธ‡เธฃเธตเธšเธนเธ•..." - Force Started State - เธชเธ–เธฒเธ™เธฐเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธšเธฑเธ‡เธ„เธฑเธš + Force Drive State + เธšเธฑเธ‡เธ„เธฑเธšเธชเธ–เธฒเธ™เธฐเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ - Force openpilot either offroad or onroad. - เธšเธฑเธ‡เธ„เธฑเธšเนƒเธซเน‰ openpilot เธ—เธณเธ‡เธฒเธ™เธ—เธฑเน‰เธ‡เนเธšเธš offroad เธซเธฃเธทเธญ onroad. + <b>Manually set openpilot to be offroad or onroad.</b> + <b>เธ•เธฑเน‰เธ‡เธ„เนˆเธฒ openpilot เน€เธ›เน‡เธ™เน‚เธซเธกเธ”เธญเธญเธŸเน‚เธฃเธ”เธซเธฃเธทเธญเธญเธญเธ™เน‚เธฃเธ”เธ”เน‰เธงเธขเธ•เธ™เน€เธญเธ‡</b> OFFROAD - เธญเธญเธŸเน‚เธฃเธ” + เธญเธญเธŸเน‚เธฃเธ” ONROAD - ONROAD + เธ‚เธ“เธฐเธ‚เธฑเธšเธšเธ™เธ–เธ™เธ™ OFF - เธ›เธดเธ” + เธ›เธดเธ” Report a Bug or an Issue - เธฃเธฒเธขเธ‡เธฒเธ™เธ‚เน‰เธญเธšเธเธžเธฃเนˆเธญเธ‡เธซเธฃเธทเธญเธ›เธฑเธเธซเธฒ + เธฃเธฒเธขเธ‡เธฒเธ™เธšเธฑเธเธซเธฃเธทเธญเธ›เธฑเธเธซเธฒ REPORT - เธฃเธฒเธขเธ‡เธฒเธ™ + เธฃเธฒเธขเธ‡เธฒเธ™ - Let FrogsGoMoo know about an issue you're facing! - เนเธˆเน‰เธ‡เนƒเธซเน‰ FrogsGoMoo เธ—เธฃเธฒเธšเน€เธเธตเนˆเธขเธงเธเธฑเธšเธ›เธฑเธเธซเธฒเธ—เธตเนˆเธ„เธธเธ“เธเธณเธฅเธฑเธ‡เน€เธœเธŠเธดเธ! + <b>Send a bug report</b> so we can help fix the problem! + <b>เธชเนˆเธ‡เธฃเธฒเธขเธ‡เธฒเธ™เธšเธฑเนŠเธ</b> เน€เธžเธทเนˆเธญเนƒเธซเน‰เน€เธฃเธฒเธŠเนˆเธงเธขเนเธเน‰เธ›เธฑเธเธซเธฒ! + + + Please connect to the internet before sending a report! + เน‚เธ›เธฃเธ”เน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญเธญเธดเธ™เน€เธ—เธญเธฃเนŒเน€เธ™เน‡เธ•เธเนˆเธญเธ™เธชเนˆเธ‡เธฃเธฒเธขเธ‡เธฒเธ™! I saw an alert that said "openpilot crashed" - เธ‰เธฑเธ™เน€เธซเน‡เธ™เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธ—เธตเนˆเธšเธญเธเธงเนˆเธฒ "openpilot crashed" + เธ‰เธฑเธ™เน€เธซเน‡เธ™เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธ—เธตเนˆเน€เธ‚เธตเธขเธ™เธงเนˆเธฒ "openpilot เธ‚เธฑเธ”เธ‚เน‰เธญเธ‡" - What's going on? - เน€เธเธดเธ”เธญเธฐเน„เธฃเธ‚เธถเน‰เธ™? + Acceleration feels harsh or jerky + เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธ”เน‰เธฒเธ‡เธซเธฃเธทเธญเธเธฃเธฐเธ•เธธเธ - Please describe what's happening - เธเธฃเธธเธ“เธฒเธญเธ˜เธดเธšเธฒเธขเธงเนˆเธฒเน€เธเธดเธ”เธญเธฐเน„เธฃเธ‚เธถเน‰เธ™ - - - Send Report - เธชเนˆเธ‡เธฃเธฒเธขเธ‡เธฒเธ™ - - - What's your Discord username? - เธŠเธทเนˆเธญเธœเธนเน‰เนƒเธŠเน‰ Discord เธ‚เธญเธ‡เธ„เธธเธ“เธ„เธทเธญเธญเธฐเน„เธฃ? - - - Your report has been submitted. Thanks for letting us know! - เธฃเธฒเธขเธ‡เธฒเธ™เธ‚เธญเธ‡เธ„เธธเธ“เน„เธ”เน‰เธ–เธนเธเธชเนˆเธ‡เนเธฅเน‰เธง เธ‚เธญเธšเธ„เธธเธ“เธ—เธตเนˆเนเธˆเน‰เธ‡เนƒเธซเน‰เน€เธฃเธฒเธ—เธฃเธฒเธš! - - - Reset Toggles to Default - เธฃเธตเน€เธ‹เน‡เธ•เธเธฒเธฃเธชเธฅเธฑเธšเน„เธ›เธ—เธตเนˆเธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ - - - RESET - เธฃเธตเน€เธ‹เน‡เธ• - - - Reset all toggles to their default values. - เธฃเธตเน€เธ‹เน‡เธ•เธ•เธฑเธงเธชเธฅเธฑเธšเธ—เธฑเน‰เธ‡เธซเธกเธ”เน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธ‚เธญเธ‡เธžเธงเธเธกเธฑเธ™ - - - Are you sure you want to reset all toggles to their default values? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ•เธชเธงเธดเธ•เธŠเนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”เธเธฅเธฑเธšเน„เธ›เน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™? - - - Reset - เธฃเธตเน€เธ‹เน‡เธ• - - - Resetting... - เธฃเธตเน€เธ‹เน‡เธ•... - - - Reset! - เธฃเธตเน€เธ‹เน‡เธ•! - - - Reset Toggles to Match Stock openpilot - เธฃเธตเน€เธ‹เน‡เธ•เธชเธงเธดเธ•เธŠเนŒเนƒเธซเน‰เธ•เธฃเธ‡เธเธฑเธš openpilot เธชเธ•เน‡เธญเธ - - - Reset all toggles to match stock openpilot. - เธฃเธตเน€เธ‹เน‡เธ•เธชเธงเธดเธ•เธŠเนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”เนƒเธซเน‰เธ•เธฃเธ‡เธเธฑเธš openpilot เธ”เธฑเน‰เธ‡เน€เธ”เธดเธก - - - Are you sure you want to reset all toggles to match stock openpilot? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ•เธชเธงเธดเธ•เธŠเนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”เนƒเธซเน‰เธ•เธฃเธ‡เธเธฑเธš openpilot เธ”เธฑเน‰เธ‡เน€เธ”เธดเธก? - - - Ensure your device has an internet connection before sending a report! - เธ•เธฃเธงเธˆเธชเธญเธšเนƒเธซเน‰เนเธ™เนˆเนƒเธˆเธงเนˆเธฒเธญเธธเธ›เธเธฃเธ“เนŒเธ‚เธญเธ‡เธ„เธธเธ“เน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญเธญเธดเธ™เน€เธ—เธญเธฃเนŒเน€เธ™เน‡เธ•เธเนˆเธญเธ™เธชเนˆเธ‡เธฃเธฒเธขเธ‡เธฒเธ™! - - - Acceleration feels too harsh or jerky - เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธŠเธฒเธเธซเธฃเธทเธญเธเธฃเธฐเธ•เธธเธเน€เธเธดเธ™เน„เธ› - - - An alert confused me and I didnโ€™t know what it meant - เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธ—เธณเนƒเธซเน‰เธ‰เธฑเธ™เธชเธฑเธšเธชเธ™เนเธฅเธฐเธ‰เธฑเธ™เน„เธกเนˆเธฃเธนเน‰เธงเนˆเธฒเธกเธฑเธ™เธซเธกเธฒเธขเธ–เธถเธ‡เธญเธฐเน„เธฃ + An alert was unclear and I didn't know what it meant + เธกเธตเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธ—เธตเนˆเน„เธกเนˆเธŠเธฑเธ”เน€เธˆเธ™เนเธฅเธฐเธ‰เธฑเธ™เน„เธกเนˆเธฃเธนเน‰เธงเนˆเธฒเธกเธฑเธ™เธซเธกเธฒเธขเธ„เธงเธฒเธกเธงเนˆเธฒเธญเธฐเน„เธฃ Braking is too sudden or uncomfortable - เธเธฒเธฃเน€เธšเธฃเธเธเธฐเธ—เธฑเธ™เธซเธฑเธ™เธซเธฃเธทเธญเน„เธกเนˆเธชเธšเธฒเธข + เธเธฒเธฃเน€เธšเธฃเธเธเธฐเธ—เธฑเธ™เธซเธฑเธ™เธซเธฃเธทเธญเน„เธกเนˆเธชเธšเธฒเธข - Iโ€™m not sure if this is normal or a bug: - เธ‰เธฑเธ™เน„เธกเนˆเนเธ™เนˆเนƒเธˆเธงเนˆเธฒเธ™เธตเนˆเน€เธ›เน‡เธ™เน€เธฃเธทเนˆเธญเธ‡เธ›เธเธ•เธดเธซเธฃเธทเธญเธ‚เน‰เธญเธšเธเธžเธฃเนˆเธญเธ‡: + I'm not sure if this is normal or a bug: + เธ‰เธฑเธ™เน„เธกเนˆเนเธ™เนˆเนƒเธˆเธงเนˆเธฒเธ™เธตเนˆเน€เธ›เน‡เธ™เน€เธฃเธทเนˆเธญเธ‡เธ›เธเธ•เธดเธซเธฃเธทเธญเน€เธ›เน‡เธ™เธšเธฑเนŠเธ - Lane changes donโ€™t work properly or feel unsafe - เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธฅเธ™เธ—เธณเธ‡เธฒเธ™เน„เธกเนˆเธ–เธนเธเธ•เน‰เธญเธ‡เธซเธฃเธทเธญเธฃเธนเน‰เธชเธถเธเน„เธกเนˆเธ›เธฅเธญเธ”เธ เธฑเธข + My screen froze or is stuck loading something + เธซเธ™เน‰เธฒเธˆเธญเธ„เน‰เธฒเธ‡เธซเธฃเธทเธญเธเธณเธฅเธฑเธ‡เธ•เธดเธ”เธญเธขเธนเนˆเธ—เธตเนˆเธเธฒเธฃเน‚เธซเธฅเธ”เธšเธฒเธ‡เธญเธขเนˆเธฒเธ‡ - My screen froze or got stuck on loading - เธซเธ™เน‰เธฒเธˆเธญเธ‚เธญเธ‡เธ‰เธฑเธ™เธ„เน‰เธฒเธ‡เธซเธฃเธทเธญเธ„เน‰เธฒเธ‡เธญเธขเธนเนˆเธ—เธตเนˆเธเธฒเธฃเน‚เธซเธฅเธ” - - - My steering wheel buttons arenโ€™t working - เธ›เธธเนˆเธกเธšเธ™เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธ‚เธญเธ‡เธ‰เธฑเธ™เน„เธกเนˆเธ—เธณเธ‡เธฒเธ™ + My steering wheel buttons aren't working + เธ›เธธเนˆเธกเธšเธ™เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธ‚เธญเธ‡เธ‰เธฑเธ™เน„เธกเนˆเธ—เธณเธ‡เธฒเธ™ openpilot disengages when I don't expect it - openpilot เธขเธเน€เธฅเธดเธเธเธฒเธฃเธ—เธณเธ‡เธฒเธ™เน€เธกเธทเนˆเธญเธ‰เธฑเธ™เน„เธกเนˆเธ„เธฒเธ”เธ„เธดเธ” - - - openpilot doesnโ€™t resume after I stop - openpilot เน„เธกเนˆเธเธฅเธฑเธšเธกเธฒเธ—เธณเธ‡เธฒเธ™เธซเธฅเธฑเธ‡เธˆเธฒเธเธ—เธตเนˆเธ‰เธฑเธ™เธซเธขเธธเธ” + openpilot เธขเธเน€เธฅเธดเธเธเธฒเธฃเธ—เธณเธ‡เธฒเธ™เน‚เธ”เธขเธ—เธตเนˆเธ‰เธฑเธ™เน„เธกเนˆเธ„เธฒเธ”เธ„เธดเธ” openpilot doesn't react to stopped vehicles ahead - openpilot เน„เธกเนˆเธ•เธญเธšเธชเธ™เธญเธ‡เธ•เนˆเธญเธขเธฒเธ™เธžเธฒเธซเธ™เธฐเธ—เธตเนˆเธซเธขเธธเธ”เธญเธขเธนเนˆเธ‚เน‰เธฒเธ‡เธซเธ™เน‰เธฒ + openpilot เน„เธกเนˆเธ•เธญเธšเธชเธ™เธญเธ‡เธ•เนˆเธญเธฃเธ–เธ—เธตเนˆเธซเธขเธธเธ”เธญเธขเธนเนˆเธ‚เน‰เธฒเธ‡เธซเธ™เน‰เธฒ + + + openpilot doesn't resume from a stop + openpilot เน„เธกเนˆเน€เธฃเธดเนˆเธกเธงเธดเนˆเธ‡เธ•เนˆเธญเธˆเธฒเธเธเธฒเธฃเธซเธขเธธเธ”เธ™เธดเนˆเธ‡ openpilot feels sluggish or slow to respond - openpilot เธฃเธนเน‰เธชเธถเธเธŠเน‰เธฒเนƒเธ™เธเธฒเธฃเธ•เธญเธšเธชเธ™เธญเธ‡ + openpilot เธฃเธนเน‰เธชเธถเธเน€เธŠเธทเนˆเธญเธ‡เธŠเน‰เธฒเธซเธฃเธทเธญเธ•เธญเธšเธชเธ™เธญเธ‡เธŠเน‰เธฒ Steering feels twitchy or unnatural - เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธ•เธธเธเธซเธฃเธทเธญเน„เธกเนˆเน€เธ›เน‡เธ™เธ˜เธฃเธฃเธกเธŠเธฒเธ•เธด + เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธฃเธนเน‰เธชเธถเธเธเธฃเธฐเธ•เธธเธเธซเธฃเธทเธญเน„เธกเนˆเน€เธ›เน‡เธ™เธ˜เธฃเธฃเธกเธŠเธฒเธ•เธด - The car doesnโ€™t follow curves well - เธฃเธ–เน„เธกเนˆเน€เธ‚เน‰เธฒเน‚เธ„เน‰เธ‡เน„เธ”เน‰เธ”เธต + The car doesn't follow curves well + เธฃเธ–เน€เธฅเธตเน‰เธขเธงเธ•เธฒเธกเน‚เธ„เน‰เธ‡เน„เธ”เน‰เน„เธกเนˆเธ”เธต - The car isnโ€™t staying centered in its lane - เธฃเธ–เน„เธกเนˆเธญเธขเธนเนˆเธ•เธฃเธ‡เธเธฅเธฒเธ‡เน€เธฅเธ™ - - - The speed or display info looks wrong - เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธซเธฃเธทเธญเธ‚เน‰เธญเธกเธนเธฅเธเธฒเธฃเนเธชเธ”เธ‡เธœเธฅเธ”เธนเธœเธดเธ” + The car isn't staying centered in its lane + เธฃเธ–เน„เธกเนˆเธฃเธฑเธเธฉเธฒเธ•เธณเนเธซเธ™เนˆเธ‡เธเธถเนˆเธ‡เธเธฅเธฒเธ‡เนƒเธ™เน€เธฅเธ™ Something else (please describe) - เธญเธขเนˆเธฒเธ‡เธญเธทเนˆเธ™ (เน‚เธ›เธฃเธ”เธญเธ˜เธดเธšเธฒเธข) + เธญเธขเนˆเธฒเธ‡เธญเธทเนˆเธ™ (เน‚เธ›เธฃเธ”เธญเธ˜เธดเธšเธฒเธข) + + + What's going on? + เน€เธเธดเธ”เธญเธฐเน„เธฃเธ‚เธถเน‰เธ™? + + + Please describe what's happening + เน‚เธ›เธฃเธ”เธญเธ˜เธดเธšเธฒเธขเธงเนˆเธฒเน€เธเธดเธ”เธญเธฐเน„เธฃเธ‚เธถเน‰เธ™ + + + Send Report + เธชเนˆเธ‡เธฃเธฒเธขเธ‡เธฒเธ™ + + + What's your Discord username? + เธŠเธทเนˆเธญเธœเธนเน‰เนƒเธŠเน‰ Discord เธ‚เธญเธ‡เธ„เธธเธ“เธ„เธทเธญเธญเธฐเน„เธฃ? + + + Report Sent! Thanks for letting us know! + เธชเนˆเธ‡เธฃเธฒเธขเธ‡เธฒเธ™เนเธฅเน‰เธง! เธ‚เธญเธšเธ„เธธเธ“เธ—เธตเนˆเนเธˆเน‰เธ‡เนƒเธซเน‰เน€เธฃเธฒเธ—เธฃเธฒเธš! + + + Reset Toggles to Default + เธฃเธตเน€เธ‹เน‡เธ•เธชเธงเธดเธ•เธŠเนŒเธเธฅเธฑเธšเน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ + + + RESET + เธฃเธตเน€เธ‹เน‡เธ• + + + <b>Reset all toggles to their default values.</b> + <b>เธฃเธตเน€เธ‹เน‡เธ•เธชเธงเธดเธ•เธŠเนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”เน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธ‚เธญเธ‡เธกเธฑเธ™</b> + + + Are you sure you want to reset all toggles to their default values? + เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ•เธชเธงเธดเธ•เธŠเนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”เธเธฅเธฑเธšเน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™? + + + Reset + เธฃเธตเน€เธ‹เน‡เธ• + + + Resetting... + เธเธณเธฅเธฑเธ‡เธฃเธตเน€เธ‹เน‡เธ•... + + + Reset! + เธฃเธตเน€เธ‹เน‡เธ•! + + + Reset Toggles to Stock openpilot + เธฃเธตเน€เธ‹เน‡เธ•เธเธฒเธฃเธชเธฅเธฑเธšเน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธ‚เธญเธ‡ openpilot + + + <b>Reset all toggles to match stock openpilot.</b> + <b>เธฃเธตเน€เธ‹เน‡เธ•เธชเธงเธดเธ•เธŠเนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”เนƒเธซเน‰เธ•เธฃเธ‡เธเธฑเธš openpilot เธกเธฒเธ•เธฃเธเธฒเธ™</b> + + + Are you sure you want to reset all toggles to match stock openpilot? + เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ•เธชเธงเธดเธ•เธŠเนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”เนƒเธซเน‰เธ•เธฃเธ‡เธเธฑเธš openpilot เธกเธฒเธ•เธฃเธเธฒเธ™? FrogPilotVehiclesPanel - Select Make - เน€เธฅเธทเธญเธเธขเธตเนˆเธซเน‰เธญ + Car Make + เธขเธตเนˆเธซเน‰เธญเธฃเธ– SELECT - SELECT + เน€เธฅเธทเธญเธ - Select a Make - เน€เธฅเธทเธญเธเธขเธตเนˆเธซเน‰เธญ + Choose your car make + เน€เธฅเธทเธญเธเธขเธตเนˆเธซเน‰เธญเธฃเธ–เธ‚เธญเธ‡เธ„เธธเธ“ - Select Model - เน€เธฅเธทเธญเธเน‚เธกเน€เธ”เธฅ + Car Model + เธฃเธธเนˆเธ™เธฃเธ– - Select a Model - เน€เธฅเธทเธญเธเน‚เธกเน€เธ”เธฅ + Choose your car model + เน€เธฅเธทเธญเธเน‚เธกเน€เธ”เธฅเธฃเธ–เธ‚เธญเธ‡เธ„เธธเธ“ Disable Automatic Fingerprint Detection - เธ›เธดเธ”เธเธฒเธฃเธ•เธฃเธงเธˆเธˆเธฑเธšเธฅเธฒเธขเธ™เธดเน‰เธงเธกเธทเธญเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด + เธ›เธดเธ”เธเธฒเธฃเธ•เธฃเธงเธˆเธˆเธฑเธšเธฅเธฒเธขเธ™เธดเน‰เธงเธกเธทเธญเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด - Forces the selected fingerprint and prevents it from ever changing. - เธšเธฑเธ‡เธ„เธฑเธšเธฅเธฒเธขเธ™เธดเน‰เธงเธกเธทเธญเธ—เธตเนˆเน€เธฅเธทเธญเธเนเธฅเธฐเธ›เน‰เธญเธ‡เธเธฑเธ™เน„เธกเนˆเนƒเธซเน‰เน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ•เธฅเธญเธ”เน„เธ› + <b>Force the selected fingerprint</b> and prevent it from ever changing. + <b>เธšเธฑเธ‡เธ„เธฑเธšเนƒเธŠเน‰เธฅเธฒเธขเธ™เธดเน‰เธงเธกเธทเธญเธ—เธตเนˆเน€เธฅเธทเธญเธ</b> เนเธฅเธฐเธ›เน‰เธญเธ‡เธเธฑเธ™เน„เธกเนˆเนƒเธซเน‰เน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธญเธตเธเธ•เนˆเธญเน„เธ› Disable openpilot Longitudinal Control - เธ›เธดเธ”เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ•เธฒเธกเธขเธฒเธงเธ‚เธญเธ‡ openpilot + เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ•เธฒเธกเธขเธฒเธงเธ‚เธญเธ‡ openpilot - Disables openpilot longitudinal control and uses the car's stock ACC instead. - เธ›เธดเธ”เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ•เธฒเธกเธขเธฒเธงเธ‚เธญเธ‡ openpilot เนเธฅเธฐเนƒเธŠเน‰ ACC เธ‚เธญเธ‡เธฃเธ–เนเธ—เธ™ + <b>Disable openpilot longitudinal</b> and use the car's stock ACC instead. + <b>เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธฃเธฐเธšเธšเธ„เธงเธšเธ„เธธเธกเธ•เธฒเธกเธขเธฒเธงเธ‚เธญเธ‡ openpilot</b> เนเธฅเธฐเนƒเธŠเน‰ ACC เน€เธ”เธดเธกเธ‚เธญเธ‡เธฃเธ–เนเธ—เธ™ Are you sure you want to completely disable openpilot longitudinal control? - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธ›เธดเธ”เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ•เธฒเธกเธขเธฒเธงเธ‚เธญเธ‡ openpilot เธญเธขเนˆเธฒเธ‡เธชเธกเธšเธนเธฃเธ“เนŒ? + เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธ›เธดเธ”เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ•เธฒเธกเธขเธฒเธงเธ‚เธญเธ‡ openpilot เธญเธขเนˆเธฒเธ‡เธชเธกเธšเธนเธฃเธ“เนŒ? General Motors Settings - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ—เธฑเนˆเธงเน„เธ›เธ‚เธญเธ‡เธกเธญเน€เธ•เธญเธฃเนŒ + เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ General Motors - Settings specific to <b>General Motors</b> vehicles. - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ—เธตเนˆเน€เธ‰เธžเธฒเธฐเน€เธˆเธฒเธฐเธˆเธ‡เธชเธณเธซเธฃเธฑเธšเธขเธฒเธ™เธžเธฒเธซเธ™เธฐ <b>General Motors</b> + <b>FrogPilot features for General Motors vehicles.</b> + <b>เธŸเธตเน€เธˆเธญเธฃเนŒ FrogPilot เธชเธณเธซเธฃเธฑเธšเธฃเธ–เธขเธ™เธ•เนŒ General Motors.</b> FrogsGoMoo's Experimental Tune - เน€เธžเธฅเธ‡เธ—เธ”เธฅเธญเธ‡เธ‚เธญเธ‡ FrogsGoMoo + เธเธฒเธฃเธ›เธฃเธฑเธšเธˆเธนเธ™เธ—เธ”เธฅเธญเธ‡เธ‚เธญเธ‡ FrogsGoMoo - <b>FrogsGoMoo's</b> experimental <b>General Motors</b> tune that aims to smoothen out stopping and takeoff control based on nothing but guesswork. Use at your own risk! - <b>FrogsGoMoo's</b> เธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡ <b>General Motors</b> เน€เธŠเธดเธ‡เธ—เธ”เธฅเธญเธ‡เธ—เธตเนˆเธกเธธเนˆเธ‡เน€เธ™เน‰เธ™เธเธฒเธฃเธ—เธณเนƒเธซเน‰เธเธฒเธฃเธซเธขเธธเธ”เนเธฅเธฐเธเธฒเธฃเธญเธญเธเธ•เธฑเธงเธฃเธฒเธšเธฃเธทเนˆเธ™เธ‚เธถเน‰เธ™เน‚เธ”เธขเธญเธฒเธจเธฑเธขเธเธฒเธฃเธ„เธฒเธ”เน€เธ”เธฒเน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™ เนƒเธŠเน‰เธ”เน‰เธงเธขเธ„เธงเธฒเธกเน€เธชเธตเนˆเธขเธ‡เธ‚เธญเธ‡เธ„เธธเธ“เน€เธญเธ‡! + <b>Experimental GM tune by FrogsGoMoo</b> that attempts to smoothen stopping and takeoff control. Use at your own risk! + <b>เธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡ GM เนเธšเธšเธ—เธ”เธฅเธญเธ‡เน‚เธ”เธข FrogsGoMoo</b> เธ—เธตเนˆเธžเธขเธฒเธขเธฒเธกเธ—เธณเนƒเธซเน‰เธเธฒเธฃเธซเธขเธธเธ”เนเธฅเธฐเธเธฒเธฃเธญเธญเธเธ•เธฑเธงเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™ เนƒเธŠเน‰เธ‡เธฒเธ™เน‚เธ”เธขเธฃเธฑเธšเธ„เธงเธฒเธกเน€เธชเธตเนˆเธขเธ‡เน€เธญเธ‡! Smooth Pedal Response on Hills - เธเธฒเธฃเธ•เธญเธšเธชเธ™เธญเธ‡เธ‚เธญเธ‡เนเธ›เน‰เธ™เน€เธซเธขเธตเธขเธšเธ—เธตเนˆเธฃเธฒเธšเธฃเธทเนˆเธ™เธšเธ™เน€เธ™เธดเธ™เน€เธ‚เธฒ + เธเธฒเธฃเธ•เธญเธšเธชเธ™เธญเธ‡เธ„เธฑเธ™เน€เธฃเนˆเธ‡เธ™เธธเนˆเธกเธ™เธงเธฅเธšเธ™เธ—เธฒเธ‡เธฅเธฒเธ”เธŠเธฑเธ™ - Smoothen the acceleration and braking when driving uphill or downhill. - เธ—เธณเนƒเธซเน‰เธเธฒเธฃเน€เธฃเนˆเธ‡เนเธฅเธฐเธเธฒเธฃเน€เธšเธฃเธเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™เน€เธกเธทเนˆเธญเธ‚เธฑเธšเธ‚เธถเน‰เธ™เธซเธฃเธทเธญเธฅเธ‡เน€เธ™เธดเธ™เน€เธ‚เธฒ + <b>Smoothen acceleration and braking</b> when driving downhill/uphill. + <b>เธ›เธฃเธฑเธšเธเธฒเธฃเน€เธฃเนˆเธ‡เนเธฅเธฐเธเธฒเธฃเน€เธšเธฃเธเนƒเธซเน‰เธฃเธฒเธšเธฃเธทเนˆเธ™</b>เน€เธกเธทเนˆเธญเธ‚เธฑเธšเธ‚เธถเน‰เธ™เธซเธฃเธทเธญเธฅเธ‡เธ—เธฒเธ‡เธฅเธฒเธ”/เธ—เธฒเธ‡เธŠเธฑเธ™ - Stop and Go Hack - เธซเธขเธธเธ”เนเธฅเธฐเน„เธ›เนเธฎเน‡เธ + Stop-and-Go Hack + เนเธฎเน‡เธเธซเธขเธธเธ”-เนเธฅเน‰เธง-เน„เธ› - Force stop and go on the <b>2017 Chevy Volt</b>. - เธšเธฑเธ‡เธ„เธฑเธšเธซเธขเธธเธ”เนเธฅเธฐเน„เธ›เธ•เนˆเธญเนƒเธ™ <b>2017 Chevy Volt</b>. + <b>Force stop-and-go</b> on the 2017 Chevy Volt. + <b>เธšเธฑเธ‡เธ„เธฑเธšเธซเธขเธธเธ”เนเธฅเธฐเธญเธญเธเธ•เธฑเธง</b> เธšเธ™ Chevy Volt เธ›เธต 2017 Hyundai/Kia/Genesis Settings - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ Hyundai/Kia/Genesis + เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ Hyundai/Kia/Genesis - Settings specific to <b>Hyundai</b>, <b>Kia</b>, and <b>Genesis</b> vehicles. - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเน€เธ‰เธžเธฒเธฐเธชเธณเธซเธฃเธฑเธšเธฃเธ–เธขเธ™เธ•เนŒ <b>Hyundai</b>, <b>Kia</b>, เนเธฅเธฐ <b>Genesis</b> + <b>FrogPilot features for Genesis, Hyundai, and Kia vehicles.</b> + <b>เธ„เธธเธ“เธชเธกเธšเธฑเธ•เธด FrogPilot เธชเธณเธซเธฃเธฑเธšเธฃเธ–เธขเธ™เธ•เนŒ Genesis, Hyundai เนเธฅเธฐ Kia</b> comma's New Longitudinal API - comma's New Longitudinal API + API เธ•เธฒเธกเนเธ™เธงเธขเธฒเธงเนเธšเธšเนƒเธซเธกเนˆเธ‚เธญเธ‡ comma - comma's new longitudinal control system that has shown great improvement with acceleration and braking, but has issues on some <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> vehicles. - เธฃเธฐเธšเธšเธ„เธงเธšเธ„เธธเธกเธ•เธฒเธกเธขเธฒเธงเนƒเธซเธกเนˆเธ‚เธญเธ‡ comma เธ—เธตเนˆเนเธชเธ”เธ‡เนƒเธซเน‰เน€เธซเน‡เธ™เธ–เธถเธ‡เธเธฒเธฃเธ›เธฃเธฑเธšเธ›เธฃเธธเธ‡เธ—เธตเนˆเธขเธญเธ”เน€เธขเธตเนˆเธขเธกเนƒเธ™เธเธฒเธฃเน€เธฃเนˆเธ‡เนเธฅเธฐเน€เธšเธฃเธ เนเธ•เนˆเธกเธตเธ›เธฑเธเธซเธฒเนƒเธ™เธฃเธ–เธšเธฒเธ‡เธฃเธธเนˆเธ™เธ‚เธญเธ‡ <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> + <b>comma's new gas and brake control system</b> that improves acceleration and braking but may cause issues on some Genesis/Hyundai/Kia vehicles. + <b>เธฃเธฐเธšเธšเธ„เธงเธšเธ„เธธเธกเธ„เธฑเธ™เน€เธฃเนˆเธ‡เนเธฅเธฐเน€เธšเธฃเธเนƒเธซเธกเนˆเธ‚เธญเธ‡ comma</b> เธ—เธตเนˆเธŠเนˆเธงเธขเธ›เธฃเธฑเธšเธ›เธฃเธธเธ‡เธเธฒเธฃเน€เธฃเนˆเธ‡เนเธฅเธฐเธเธฒเธฃเน€เธšเธฃเธ เนเธ•เนˆ เธญเธฒเธˆเธ—เธณเนƒเธซเน‰เน€เธเธดเธ”เธ›เธฑเธเธซเธฒเธเธฑเธšเธฃเธ–เธšเธฒเธ‡เธฃเธธเนˆเธ™เธ‚เธญเธ‡ Genesis/Hyundai/Kia "Taco Bell Run" Torque Hack - Taco Bell Run" Torque Hack + เนเธฎเน‡เธเนเธฃเธ‡เธšเธดเธ” "Taco Bell Run" - The torque hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to improve turning at low speeds by increasing the allowed steering torque. - เธเธฒเธฃเนเธฎเน‡เธเนเธฃเธ‡เธšเธดเธ”เธˆเธฒเธเธเธฒเธฃเธ‚เธฑเธš "Taco Bell Run" เธ‚เธญเธ‡ comma เนƒเธ™เธ›เธต 2022 เธญเธญเธเนเธšเธšเธกเธฒเน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเธ›เธฃเธธเธ‡เธเธฒเธฃเน€เธฅเธตเน‰เธขเธงเธ—เธตเนˆเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ•เนˆเธณเน‚เธ”เธขเธเธฒเธฃเน€เธžเธดเนˆเธกเนเธฃเธ‡เธšเธดเธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธ—เธตเนˆเธญเธ™เธธเธเธฒเธ• + <b>The steering torque hack from comma's 2022 "Taco Bell Run".</b> Designed to increase steering torque at low speeds for left and right turns. + <b>เธเธฒเธฃเนเธฎเน‡เธเนเธฃเธ‡เธšเธดเธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธˆเธฒเธ โ€œTaco Bell Runโ€ เธ‚เธญเธ‡ comma เนƒเธ™เธ›เธต 2022</b> เธญเธญเธเนเธšเธšเธกเธฒเน€เธžเธทเนˆเธญเน€เธžเธดเนˆเธกเนเธฃเธ‡เธšเธดเธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธ—เธตเนˆเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ•เนˆเธณเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเน€เธฅเธตเน‰เธขเธงเธ‹เน‰เธฒเธขเนเธฅเธฐเธ‚เธงเธฒ Toyota/Lexus Settings - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ Toyota/Lexus + เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ Toyota/Lexus - Settings specific to <b>Toyota</b> and <b>Lexus</b> vehicles. - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเน€เธ‰เธžเธฒเธฐเธชเธณเธซเธฃเธฑเธšเธฃเธ–เธขเธ™เธ•เนŒ <b>Toyota</b> เนเธฅเธฐ <b>Lexus</b> + <b>FrogPilot features for Lexus and Toyota vehicles.</b> + <b>เธŸเธตเน€เธˆเธญเธฃเนŒ FrogPilot เธชเธณเธซเธฃเธฑเธšเธฃเธ–เธขเธ™เธ•เนŒ Lexus เนเธฅเธฐ Toyota</b> Automatically Lock/Unlock Doors - เธฅเน‡เธญเธ/เธ›เธฅเธ”เธฅเน‡เธญเธเธ›เธฃเธฐเธ•เธนเน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด + เธฅเน‡เธญเธ„/เธ›เธฅเธ”เธฅเน‡เธญเธ„เธ›เธฃเธฐเธ•เธนเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด - Automatically lock the doors when shifting into drive and unlock them when shifting into park. - เธฅเน‡เธญเธ„เธ›เธฃเธฐเธ•เธนเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน€เธกเธทเนˆเธญเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธเธตเธขเธฃเนŒเน€เธ›เน‡เธ™เธ‚เธฑเธšเน€เธ„เธฅเธทเนˆเธญเธ™เนเธฅเธฐเธ›เธฅเธ”เธฅเน‡เธญเธ„เน€เธกเธทเนˆเธญเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธเธตเธขเธฃเนŒเน€เธ›เน‡เธ™เธˆเธญเธ” + <b>Automatically lock/unlock doors</b> when shifting in and out of drive. + <b>เธฅเน‡เธญเธ/เธ›เธฅเธ”เธฅเน‡เธญเธเธ›เธฃเธฐเธ•เธนเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด</b>เน€เธกเธทเนˆเธญเน€เธ›เธฅเธตเนˆเธขเธ™เน€เธเธตเธขเธฃเนŒเน€เธ‚เน‰เธฒเนเธฅเธฐเธญเธญเธเธˆเธฒเธเน€เธเธตเธขเธฃเนŒเน€เธ”เธดเธ™เธซเธ™เน‰เธฒ - Cluster Speed Offset - เธญเธญเธŸเน€เธ‹เน‡เธ•เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ„เธฅเธฑเธชเน€เธ•เธญเธฃเนŒ + Dashboard Speed Offset + เธญเธญเธŸเน€เธ‹เน‡เธ•เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธšเธ™เนเธ”เธŠเธšเธญเธฃเนŒเธ” - The cluster speed offset used by openpilot to match the speed displayed on the dash. - เธญเธญเธŸเน€เธ‹เน‡เธ•เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธญเธ‡เธ„เธฅเธฑเธชเน€เธ•เธญเธฃเนŒเธ—เธตเนˆเนƒเธŠเน‰เน‚เธ”เธข openpilot เน€เธžเธทเนˆเธญเนƒเธซเน‰เธ•เธฃเธ‡เธเธฑเธšเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเนเธชเธ”เธ‡เธšเธ™เนเธœเธ‡เธซเธ™เน‰เธฒเธ›เธฑเธ” + <b>The speed offset openpilot uses to match the speed on the dashboard display.</b> + <b>เธญเธญเธŸเน€เธ‹เน‡เธ•เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆ openpilot เนƒเธŠเน‰เน€เธžเธทเนˆเธญเนƒเธซเน‰เธ•เธฃเธ‡เธเธฑเธšเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธšเธ™เธซเธ™เน‰เธฒเธ›เธฑเธ”เนเธชเธ”เธ‡เธœเธฅ</b> FrogsGoMoo's Personal Tweaks - เธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธชเนˆเธงเธ™เธ•เธฑเธงเธ‚เธญเธ‡ FrogsGoMoo + เธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธชเนˆเธงเธ™เธ•เธฑเธงเธ‚เธญเธ‡ FrogsGoMoo - <b>FrogsGoMoo's</b> personal tweaks for quicker acceleration and smoother braking. - เธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธชเนˆเธงเธ™เธ•เธฑเธงเธ‚เธญเธ‡ <b>FrogsGoMoo</b> เน€เธžเธทเนˆเธญเธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธฃเธงเธ”เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธฅเธฐเธเธฒเธฃเน€เธšเธฃเธเธ—เธตเนˆเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™ + <b>Personal tweaks by FrogsGoMoo for quicker acceleration and smoother braking.</b> + <b>เธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธชเนˆเธงเธ™เธšเธธเธ„เธ„เธฅเน‚เธ”เธข FrogsGoMoo เน€เธžเธทเนˆเธญเธเธฒเธฃเน€เธฃเนˆเธ‡เธ—เธตเนˆเธฃเธงเธ”เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เนเธฅเธฐเธเธฒเธฃเน€เธšเธฃเธเธ—เธตเนˆเธ™เธธเนˆเธกเธ™เธงเธฅเธ‚เธถเน‰เธ™</b> Lock Doors On Ignition Off After - เธฅเน‡เธญเธ„เธ›เธฃเธฐเธ•เธนเน€เธกเธทเนˆเธญเธ”เธฑเธšเน€เธ„เธฃเธทเนˆเธญเธ‡เธขเธ™เธ•เนŒเธซเธฅเธฑเธ‡เธˆเธฒเธ + เธฅเน‡เธญเธเธ›เธฃเธฐเธ•เธนเน€เธกเธทเนˆเธญเธ”เธฑเธšเน€เธ„เธฃเธทเนˆเธญเธ‡เธขเธ™เธ•เนŒเธซเธฅเธฑเธ‡เธˆเธฒเธ - Automatically lock the doors after the car's ignition has been turned off and no one is detected in either of the front seats. - เธฅเน‡เธญเธ„เธ›เธฃเธฐเธ•เธนเน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเธซเธฅเธฑเธ‡เธˆเธฒเธเธ”เธฑเธšเน€เธ„เธฃเธทเนˆเธญเธ‡เธขเธ™เธ•เนŒเนเธฅเธฐเน„เธกเนˆเธกเธตเนƒเธ„เธฃเธ–เธนเธเธ•เธฃเธงเธˆเธžเธšเนƒเธ™เธ—เธตเนˆเธ™เธฑเนˆเธ‡เธ”เน‰เธฒเธ™เธซเธ™เน‰เธฒ + <b>Automatically lock the doors on ignition off</b> when no one is detected in the front seats. + <b>เธฅเน‡เธญเธเธ›เธฃเธฐเธ•เธนเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน€เธกเธทเนˆเธญเธ”เธฑเธšเน€เธ„เธฃเธทเนˆเธญเธ‡เธขเธ™เธ•เนŒ</b> เน€เธกเธทเนˆเธญเน„เธกเนˆเธžเธšเธœเธนเน‰เน‚เธ”เธขเธชเธฒเธฃเธšเธ™เน€เธšเธฒเธฐเธซเธ™เน‰เธฒ - Force stop and go on <b>Toyota</b>/<b>Lexus</b> vehicles without stock stop and go functionality. - เธšเธฑเธ‡เธ„เธฑเธšเธซเธขเธธเธ”เนเธฅเธฐเน„เธ›เนƒเธ™เธฃเธ–เธขเธ™เธ•เนŒ <b>Toyota</b>/<b>Lexus</b> เธ—เธตเนˆเน„เธกเนˆเธกเธตเธŸเธฑเธ‡เธเนŒเธŠเธฑเธ™เธซเธขเธธเธ”เนเธฅเธฐเน„เธ›เธˆเธฒเธเน‚เธฃเธ‡เธ‡เธฒเธ™ + <b>Force stop-and-go</b> on Lexus/Toyota vehicles without stock stop-and-go functionality. + <b>เธšเธฑเธ‡เธ„เธฑเธšเธซเธขเธธเธ”-เธญเธญเธเธ•เธฑเธง</b> เธšเธ™เธฃเธ– Lexus/Toyota เธ—เธตเนˆเน„เธกเนˆเธกเธตเธŸเธฑเธ‡เธเนŒเธŠเธฑเธ™เธซเธขเธธเธ”-เธญเธญเธเธ•เธฑเธงเธˆเธฒเธเน‚เธฃเธ‡เธ‡เธฒเธ™ MANAGE - เธˆเธฑเธ”เธเธฒเธฃ + เธˆเธฑเธ”เธเธฒเธฃ Lock - เธฅเน‡เธญเธ + เธฅเน‡เธญเธ Unlock - เธ›เธฅเธ”เธฅเน‡เธญเธ + เธ›เธฅเธ”เธฅเน‡เธญเธ Never - เน„เธกเนˆเน€เธ„เธข + เน„เธกเนˆเน€เธ„เธข seconds - เธงเธดเธ™เธฒเธ—เธต + เธงเธดเธ™เธฒเธ—เธต + + + None + เน„เธกเนˆเธกเธต + + + Vehicle Info + เธ‚เน‰เธญเธกเธนเธฅเธฃเธ–เธขเธ™เธ•เนŒ + + + <b>Information about your vehicle in regards to openpilot support and functionality.</b> + <b>เธ‚เน‰เธญเธกเธนเธฅเน€เธเธตเนˆเธขเธงเธเธฑเธšเธฃเธ–เธขเธ™เธ•เนŒเธ‚เธญเธ‡เธ„เธธเธ“เธ—เธตเนˆเน€เธเธตเนˆเธขเธงเธเธฑเธšเธเธฒเธฃเธฃเธญเธ‡เธฃเธฑเธšเนเธฅเธฐเธเธฒเธฃเธ—เธณเธ‡เธฒเธ™เธ‚เธญเธ‡ openpilot</b> + + + <b>Detected 3rd party hardware.</b> + <b>เธ•เธฃเธงเธˆเธžเธšเธฎเธฒเธฃเนŒเธ”เนเธงเธฃเนŒเธ‚เธญเธ‡เธšเธธเธ„เธ„เธฅเธ—เธตเนˆเธชเธฒเธก</b> + + + openpilot Longitudinal Support + เธเธฒเธฃเธชเธ™เธฑเธšเธชเธ™เธธเธ™เธ•เธฒเธกเธขเธฒเธงเธ‚เธญเธ‡ openpilot + + + <b>Can openpilot control the vehicle's acceleration and braking?</b> + <b>openpilot เธ„เธงเธšเธ„เธธเธกเธเธฒเธฃเน€เธฃเนˆเธ‡เนเธฅเธฐเธเธฒเธฃเน€เธšเธฃเธเธ‚เธญเธ‡เธฃเธ–เน„เธ”เน‰เน„เธซเธก?</b> + + + <b>Does your vehicle support the "comma pedal"?</b> + <b>เธฃเธ–เธ‚เธญเธ‡เธ„เธธเธ“เธฃเธญเธ‡เธฃเธฑเธš "comma pedal" เธซเธฃเธทเธญเน„เธกเนˆ?</b> + + + Radar Support + เธฃเธญเธ‡เธฃเธฑเธšเน€เธฃเธ”เธฒเธฃเนŒ + + + <b>Does openpilot use the vehicle's radar data</b> alongside the device's camera for tracking lead vehicles? + <b>openpilot เนƒเธŠเน‰เธ‚เน‰เธญเธกเธนเธฅเน€เธฃเธ”เธฒเธฃเนŒเธ‚เธญเธ‡เธฃเธ–</b> เธฃเนˆเธงเธกเธเธฑเธšเธเธฅเน‰เธญเธ‡เธ‚เธญเธ‡เธญเธธเธ›เธเธฃเธ“เนŒเธชเธณเธซเธฃเธฑเธšเธ•เธดเธ”เธ•เธฒเธกเธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒเน„เธซเธก? + + + SDSU Support + เธเนˆเธฒเธขเธชเธ™เธฑเธšเธชเธ™เธธเธ™ SDSU + + + <b>Does your vehicle support "SDSUs"?</b> + <b>เธฃเธ–เธ‚เธญเธ‡เธ„เธธเธ“เธฃเธญเธ‡เธฃเธฑเธš โ€œSDSUsโ€ เธซเธฃเธทเธญเน„เธกเนˆ?</b> + + + Stop-and-Go Support + เธฃเธญเธ‡เธฃเธฑเธš Stop-and-Go + + + <b>Does your vehicle support stop-and-go driving?</b> + <b>เธฃเธ–เธ‚เธญเธ‡เธ„เธธเธ“เธฃเธญเธ‡เธฃเธฑเธšเธเธฒเธฃเธ‚เธฑเธšเนเธšเธšเธซเธขเธธเธ”-เนเธฅเธฐ-เน„เธ›เธซเธฃเธทเธญเน„เธกเนˆ?</b> + + + VIEW + เธ”เธน + + + Yes + เนƒเธŠเนˆ + + + No + เน„เธกเนˆ + + + 3rd Party Hardware Detected + เธ•เธฃเธงเธˆเธžเธšเธฎเธฒเธฃเนŒเธ”เนเธงเธฃเนŒเธ‚เธญเธ‡เธšเธธเธ„เธ„เธฅเธ—เธตเนˆเธชเธฒเธก + + + Blind Spot Support + เธฃเธฐเธšเธšเธŠเนˆเธงเธขเธˆเธธเธ”เธšเธญเธ” + + + <b>Does openpilot use the vehicle's blind spot data?</b> + <b>openpilot เนƒเธŠเน‰เธ‚เน‰เธญเธกเธนเธฅเธˆเธธเธ”เธšเธญเธ”เธ‚เธญเธ‡เธฃเธ–เธซเธฃเธทเธญเน„เธกเนˆ?</b> + + + comma Pedal Support + เธฃเธญเธ‡เธฃเธฑเธš comma Pedal FrogPilotVisualsPanel Advanced UI Controls - เธ•เธฑเธงเธ„เธงเธšเธ„เธธเธก UI เธ‚เธฑเน‰เธ™เธชเธนเธ‡ + เธเธฒเธฃเธ„เธงเธšเธ„เธธเธก UI เธ‚เธฑเน‰เธ™เธชเธนเธ‡ - Advanced settings for fine-tuning openpilot's driving screen. - เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ‚เธฑเน‰เธ™เธชเธนเธ‡เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ‚เธญเธ‡ openpilot + <b>Advanced visual changes</b> to fine-tune how the driving screen looks. + <b>เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ เธฒเธžเธ‚เธฑเน‰เธ™เธชเธนเธ‡</b> เน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธญเธขเนˆเธฒเธ‡เธฅเธฐเน€เธญเธตเธขเธ” Hide Current Speed - เธ‹เนˆเธญเธ™เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™ + เธ‹เนˆเธญเธ™เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™ - Hide the current speed from the driving screen. - เธ‹เนˆเธญเธ™เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™เธˆเธฒเธเธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + <b>Hide the current speed</b> from the driving screen. + <b>เธ‹เนˆเธญเธ™เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™</b>เธˆเธฒเธเธซเธ™เน‰เธฒเธˆเธญเธ‚เธฑเธšเธ‚เธตเนˆ Hide Lead Marker - เธ‹เนˆเธญเธ™เน€เธ„เธฃเธทเนˆเธญเธ‡เธซเธกเธฒเธขเธ•เธฐเธเธฑเนˆเธง + เธ‹เนˆเธญเธ™เธ•เธฑเธงเธšเนˆเธ‡เธŠเธตเน‰เธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒ - Hide the marker for lead vehicles from the driving screen. - เธ‹เนˆเธญเธ™เน€เธ„เธฃเธทเนˆเธญเธ‡เธซเธกเธฒเธขเธชเธณเธซเธฃเธฑเธšเธขเธฒเธ™เธžเธฒเธซเธ™เธฐเธ™เธณเธ—เธฒเธ‡เธˆเธฒเธเธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + <b>Hide the lead-vehicle marker</b> from the driving screen. + <b>เธ‹เนˆเธญเธ™เน€เธ„เธฃเธทเนˆเธญเธ‡เธซเธกเธฒเธขเธฃเธ–เธ„เธฑเธ™เธ™เธณ</b> เธˆเธฒเธเธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ Hide Map Settings Button - เธ‹เนˆเธญเธ™เธ›เธธเนˆเธกเธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเนเธœเธ™เธ—เธตเนˆ + เธ‹เนˆเธญเธ™เธ›เธธเนˆเธกเธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเนเธœเธ™เธ—เธตเนˆ - Hide the map settings button from the driving screen. - เธ‹เนˆเธญเธ™เธ›เธธเนˆเธกเธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเนเธœเธ™เธ—เธตเนˆเธˆเธฒเธเธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + <b>Hide the map settings button or map</b> from the driving screen. + <b>เธ‹เนˆเธญเธ™เธ›เธธเนˆเธกเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเนเธœเธ™เธ—เธตเนˆเธซเธฃเธทเธญเนเธœเธ™เธ—เธตเนˆ</b> เธˆเธฒเธเธซเธ™เน‰เธฒเธˆเธญเธ‚เธฑเธšเธ‚เธตเนˆ Hide Max Speed - เธ‹เนˆเธญเธ™เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธชเธนเธ‡เธชเธธเธ” + เธ‹เนˆเธญเธ™เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธชเธนเธ‡เธชเธธเธ” - Hide the max speed from the driving screen. - เธ‹เนˆเธญเธ™เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธชเธนเธ‡เธชเธธเธ”เธˆเธฒเธเธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + <b>Hide the max speed</b> from the driving screen. + <b>เธ‹เนˆเธญเธ™เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธชเธนเธ‡เธชเธธเธ”</b>เธˆเธฒเธเธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ Hide Non-Critical Alerts - เธ‹เนˆเธญเธ™เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธ—เธตเนˆเน„เธกเนˆเธชเธณเธ„เธฑเธ + เธ‹เนˆเธญเธ™เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธ—เธตเนˆเน„เธกเนˆเธชเธณเธ„เธฑเธ - Hide non-critical alerts from the driving screen. - เธ‹เนˆเธญเธ™เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธ—เธตเนˆเน„เธกเนˆเธชเธณเธ„เธฑเธเธˆเธฒเธเธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + <b>Hide non-critical alerts</b> from the driving screen. + <b>เธ‹เนˆเธญเธ™เธเธฒเธฃเน€เธ•เธทเธญเธ™เน„เธกเนˆเธชเธณเธ„เธฑเธ</b> เธˆเธฒเธเธซเธ™เน‰เธฒเธˆเธญเธ‚เธ“เธฐเธ‚เธฑเธšเธ‚เธตเนˆ Hide Speed Limits - เธ‹เนˆเธญเธ™เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง + เธ‹เนˆเธญเธ™เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง - Hide the speed limits from the driving screen. - เธ‹เนˆเธญเธ™เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธˆเธฒเธเธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + <b>Hide posted speed limits</b> from the driving screen. + <b>เธ‹เนˆเธญเธ™เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธ›เธฃเธฐเธเธฒเธจเน„เธงเน‰</b> เธˆเธฒเธเธซเธ™เน‰เธฒเธˆเธญเธ‚เธ“เธฐเธ‚เธฑเธšเธ‚เธตเนˆ Use Wheel Speed - เนƒเธŠเน‰เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธฅเน‰เธญ + เนƒเธŠเน‰เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธฅเน‰เธญ - Use the vehicle's wheel speed instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives. - เนƒเธŠเน‰เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธฅเน‰เธญเธ‚เธญเธ‡เธขเธฒเธ™เธžเธฒเธซเธ™เธฐเนเธ—เธ™เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธญเธ‡เธ„เธฅเธฑเธชเน€เธ•เธญเธฃเนŒ เธ™เธตเนˆเน€เธ›เน‡เธ™เน€เธžเธตเธขเธ‡เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ—เธฒเธ‡เธ เธฒเธžเนเธฅเธฐเน„เธกเนˆเธชเนˆเธ‡เธœเธฅเธ•เนˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ‚เธญเธ‡ openpilot + <b>Use the vehicle's wheel speed</b> instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives! + <b>เนƒเธŠเน‰เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธฅเน‰เธญเธ‚เธญเธ‡เธฃเธ–</b> เนเธ—เธ™เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธˆเธฒเธเธซเธ™เน‰เธฒเธ›เธฑเธ” เธ™เธตเนˆเน€เธ›เน‡เธ™เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ—เธฒเธ‡เธ เธฒเธžเน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™เนเธฅเธฐเน„เธกเนˆเธเธฃเธฐเธ—เธšเธ•เนˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธญเธ‡ openpilot! Developer UI - เธญเธดเธ™เน€เธ—เธญเธฃเนŒเน€เธŸเธ‹เธœเธนเน‰เนƒเธŠเน‰เธชเธณเธซเธฃเธฑเธšเธ™เธฑเธเธžเธฑเธ’เธ™เธฒ + เธชเนˆเธงเธ™เธ•เธดเธ”เธ•เนˆเธญเธœเธนเน‰เนƒเธŠเน‰เธชเธณเธซเธฃเธฑเธšเธ™เธฑเธเธžเธฑเธ’เธ™เธฒ - Detailed information about openpilot's internal operations. - เธ‚เน‰เธญเธกเธนเธฅเธฃเธฒเธขเธฅเธฐเน€เธญเธตเธขเธ”เน€เธเธตเนˆเธขเธงเธเธฑเธšเธเธฒเธฃเธ—เธณเธ‡เธฒเธ™เธ เธฒเธขเนƒเธ™เธ‚เธญเธ‡ openpilot + <b>Detailed information about openpilot's internal operations.</b> + <b>เธ‚เน‰เธญเธกเธนเธฅเธฃเธฒเธขเธฅเธฐเน€เธญเธตเธขเธ”เน€เธเธตเนˆเธขเธงเธเธฑเธšเธเธฒเธฃเธ—เธณเธ‡เธฒเธ™เธ เธฒเธขเนƒเธ™เธ‚เธญเธ‡ openpilot</b> Adjacent Path Metrics - เน€เธกเธ•เธฃเธดเธเน€เธชเน‰เธ™เธ—เธฒเธ‡เธ—เธตเนˆเธญเธขเธนเนˆเธ•เธดเธ”เธเธฑเธ™ + เน€เธกเธ•เธฃเธดเธเธ‚เธญเธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡เธ‚เน‰เธฒเธ‡เน€เธ„เธตเธขเธ‡ - Metrics displayed on top of the adjacent lanes measuring their current width. - เน€เธกเธ•เธฃเธดเธเธˆเธฐเนเธชเธ”เธ‡เธญเธขเธนเนˆเธ”เน‰เธฒเธ™เธšเธ™เธ‚เธญเธ‡เน€เธฅเธ™เธ—เธตเนˆเธญเธขเธนเนˆเธ•เธดเธ”เธเธฑเธ™เน€เธžเธทเนˆเธญเธงเธฑเธ”เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ›เธฑเธˆเธˆเธธเธšเธฑเธ™เธ‚เธญเธ‡เธžเธงเธเธกเธฑเธ™ + <b>Show the width of the adjacent lanes.</b> + <b>เนเธชเธ”เธ‡เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡เธŠเนˆเธญเธ‡เธˆเธฃเธฒเธˆเธฃเธ‚เน‰เธฒเธ‡เน€เธ„เธตเธขเธ‡</b> Developer Metrics - เธ•เธฑเธงเธŠเธตเน‰เธงเธฑเธ”เธ™เธฑเธเธžเธฑเธ’เธ™เธฒ + เธ•เธฑเธงเธŠเธตเน‰เธงเธฑเธ”เธชเธณเธซเธฃเธฑเธšเธ™เธฑเธเธžเธฑเธ’เธ™เธฒ - Performance data, sensor readings, and system metrics for debugging and optimizing openpilot. - เธ‚เน‰เธญเธกเธนเธฅเธ›เธฃเธฐเธชเธดเธ—เธ˜เธดเธ เธฒเธž, เธเธฒเธฃเธญเนˆเธฒเธ™เธ„เนˆเธฒเธˆเธฒเธเน€เธ‹เน‡เธ™เน€เธ‹เธญเธฃเนŒ, เนเธฅเธฐเน€เธกเธ•เธฃเธดเธเธ‚เธญเธ‡เธฃเธฐเธšเธšเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธ”เธตเธšเธฑเธเนเธฅเธฐเธเธฒเธฃเน€เธžเธดเนˆเธกเธ›เธฃเธฐเธชเธดเธ—เธ˜เธดเธ เธฒเธž openpilot. + <b>Performance data, sensor readings, and system metrics</b> for debugging and optimizing openpilot. + <b>เธ‚เน‰เธญเธกเธนเธฅเธ›เธฃเธฐเธชเธดเธ—เธ˜เธดเธ เธฒเธž เธเธฒเธฃเธญเนˆเธฒเธ™เธ„เนˆเธฒเธˆเธฒเธเน€เธ‹เน‡เธ™เน€เธ‹เธญเธฃเนŒ เนเธฅเธฐเธ•เธฑเธงเธŠเธตเน‰เธงเธฑเธ”เธ‚เธญเธ‡เธฃเธฐเธšเธš</b> เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธ”เธตเธšเธฑเธเนเธฅเธฐเน€เธžเธดเนˆเธกเธ›เธฃเธฐเธชเธดเธ—เธ˜เธดเธ เธฒเธž openpilot Border Metrics - เธ•เธฑเธงเธŠเธตเน‰เธงเธฑเธ”เธŠเธฒเธขเนเธ”เธ™ + เธ•เธฑเธงเธŠเธตเน‰เธงเธฑเธ”เธ‚เธญเธšเน€เธ‚เธ• - Metrics displayed around the border of the driving screen.<br><br><b>Blind Spot</b>: Turn the border red when a vehicle is detected in a blind spot<br><b>Steering Torque</b>: Highlight the border green to red in accordance to the amount of steering torque being used<br><b>Turn Signal</b>: Flash the border yellow when a turn signal is active - เน€เธกเธ•เธฃเธดเธเธˆเธฐเนเธชเธ”เธ‡เธฃเธญเธšเธ‚เธญเธšเธ‚เธญเธ‡เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ<br><br><b>เธˆเธธเธ”เธšเธญเธ”</b>: เน€เธ›เธฅเธตเนˆเธขเธ™เธ‚เธญเธšเน€เธ›เน‡เธ™เธชเธตเนเธ”เธ‡เน€เธกเธทเนˆเธญเธกเธตเธเธฒเธฃเธ•เธฃเธงเธˆเธžเธšเธขเธฒเธ™เธžเธฒเธซเธ™เธฐเนƒเธ™เธˆเธธเธ”เธšเธญเธ”<br><b>เนเธฃเธ‡เธšเธดเธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธข</b>: เน€เธ™เน‰เธ™เธ‚เธญเธšเธˆเธฒเธเธชเธตเน€เธ‚เธตเธขเธงเน€เธ›เน‡เธ™เธชเธตเนเธ”เธ‡เธ•เธฒเธกเธ›เธฃเธดเธกเธฒเธ“เนเธฃเธ‡เธšเธดเธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธ—เธตเนˆเนƒเธŠเน‰<br><b>เธชเธฑเธเธเธฒเธ“เน„เธŸเน€เธฅเธตเน‰เธขเธง</b>: เธ—เธณเนƒเธซเน‰เธ‚เธญเธšเธเธฃเธฐเธžเธฃเธดเธšเน€เธ›เน‡เธ™เธชเธตเน€เธซเธฅเธทเธญเธ‡เน€เธกเธทเนˆเธญเธชเธฑเธเธเธฒเธ“เน„เธŸเน€เธฅเธตเน‰เธขเธงเธ—เธณเธ‡เธฒเธ™ + <b>Show statuses along the border of the driving screen.</b><br><br><b>Blind Spot</b>: The border turns red when a vehicle is in a blind spot<br><b>Steering Torque</b>: The border goes from green to red according to how much steering torque is being used<br><b>Turn Signal</b>: The border flashes yellow when a turn signal is on + <b>เนเธชเธ”เธ‡เธชเธ–เธฒเธ™เธฐเธ•เธฒเธกเธ‚เธญเธšเธ‚เธญเธ‡เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ</b><br><br><b>เธˆเธธเธ”เธšเธญเธ”</b>: เธ‚เธญเธšเธซเธ™เน‰เธฒเธˆเธญเธˆเธฐเน€เธ›เน‡เธ™เธชเธตเนเธ”เธ‡เน€เธกเธทเนˆเธญเธกเธตเธฃเธ–เธญเธขเธนเนˆเนƒเธ™เธˆเธธเธ”เธšเธญเธ”<br><b>เนเธฃเธ‡เธšเธดเธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธข</b>: เธ‚เธญเธšเธซเธ™เน‰เธฒเธˆเธญเธˆเธฐเน€เธ›เธฅเธตเนˆเธขเธ™เธˆเธฒเธเธชเธตเน€เธ‚เธตเธขเธงเน€เธ›เน‡เธ™เธชเธตเนเธ”เธ‡เธ•เธฒเธกเธฃเธฐเธ”เธฑเธšเนเธฃเธ‡เธšเธดเธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธ—เธตเนˆเนƒเธŠเน‰เธญเธขเธนเนˆ<br><b>เธชเธฑเธเธเธฒเธ“เน„เธŸเน€เธฅเธตเน‰เธขเธง</b>: เธ‚เธญเธšเธซเธ™เน‰เธฒเธˆเธญเธˆเธฐเธเธฐเธžเธฃเธดเธšเน€เธ›เน‡เธ™เธชเธตเน€เธซเธฅเธทเธญเธ‡เน€เธกเธทเนˆเธญเน€เธ›เธดเธ”เธชเธฑเธเธเธฒเธ“เน„เธŸเน€เธฅเธตเน‰เธขเธง Lead Info - เธ‚เน‰เธญเธกเธนเธฅเธฅเธนเธเธ„เน‰เธฒๆฝœๅœจ + เธ‚เน‰เธญเธกเธนเธฅเธ„เธฑเธ™เธ™เธณ - Metrics displayed under vehicle markers listing their distance and current speed. - เธ•เธฑเธงเธŠเธตเน‰เธงเธฑเธ”เธ—เธตเนˆเนเธชเธ”เธ‡เธญเธขเธนเนˆเนƒเธ•เน‰เน€เธ„เธฃเธทเนˆเธญเธ‡เธซเธกเธฒเธขเธขเธฒเธ™เธžเธฒเธซเธ™เธฐเธ—เธตเนˆเนเธชเธ”เธ‡เธฃเธฐเธขเธฐเธ—เธฒเธ‡เนเธฅเธฐเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™เธ‚เธญเธ‡เธžเธงเธเน€เธ‚เธฒ + <b>Show each tracked vehicle's distance and speed</b> below its marker. + <b>เนเธชเธ”เธ‡เธฃเธฐเธขเธฐเธ—เธฒเธ‡เนเธฅเธฐเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธญเธ‡เธขเธฒเธ™เธžเธฒเธซเธ™เธฐเธ—เธตเนˆเธ•เธดเธ”เธ•เธฒเธกเนเธ•เนˆเธฅเธฐเธ„เธฑเธ™</b> เนƒเธ•เน‰เน€เธ„เธฃเธทเนˆเธญเธ‡เธซเธกเธฒเธขเธ‚เธญเธ‡เธกเธฑเธ™ FPS Display - เธเธฒเธฃเนเธชเธ”เธ‡เธœเธฅ FPS + เนเธชเธ”เธ‡ FPS - Display the <b>Frames Per Second (FPS)</b> at the bottom of the driving screen. - เนเธชเธ”เธ‡ <b>เน€เธŸเธฃเธกเธ•เนˆเธญเธงเธดเธ™เธฒเธ—เธต (FPS)</b> เธ—เธตเนˆเธ”เน‰เธฒเธ™เธฅเนˆเธฒเธ‡เธ‚เธญเธ‡เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + <b>Show the frames per second (FPS)</b> at the bottom of the driving screen. + <b>เนเธชเธ”เธ‡เธˆเธณเธ™เธงเธ™เน€เธŸเธฃเธกเธ•เนˆเธญเธงเธดเธ™เธฒเธ—เธต (FPS)</b> เธ—เธตเนˆเธ”เน‰เธฒเธ™เธฅเนˆเธฒเธ‡เธ‚เธญเธ‡เธซเธ™เน‰เธฒเธˆเธญเธ‚เธฑเธšเธ‚เธตเนˆ Numerical Temperature Gauge - เธกเธฒเธ•เธฃเธงเธฑเธ”เธญเธธเธ“เธซเธ เธนเธกเธดเนเธšเธšเธ•เธฑเธงเน€เธฅเธ‚ + เธกเธฒเธ•เธฃเธงเธฑเธ”เธญเธธเธ“เธซเธ เธนเธกเธดเนเธšเธšเธ•เธฑเธงเน€เธฅเธ‚ - Use numerical temperature readings instead of status labels in the sidebar. - เนƒเธŠเน‰เธเธฒเธฃเธญเนˆเธฒเธ™เธ„เนˆเธฒเธญเธธเธ“เธซเธ เธนเธกเธดเน€เธ›เน‡เธ™เธ•เธฑเธงเน€เธฅเธ‚เนเธ—เธ™เธ›เน‰เธฒเธขเธชเธ–เธฒเธ™เธฐเนƒเธ™เนเธ–เธšเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡ - - - Display system information (<b>CPU</b>, <b>GPU</b>, <b>RAM usage</b>, <b>IP address</b>, <b>device storage</b>) in the sidebar. - เนเธชเธ”เธ‡เธ‚เน‰เธญเธกเธนเธฅเธฃเธฐเธšเธš (<b>CPU</b>, <b>GPU</b>, <b>เธเธฒเธฃเนƒเธŠเน‰ RAM</b>, <b>เธ—เธตเนˆเธญเธขเธนเนˆ IP</b>, <b>เธžเธทเน‰เธ™เธ—เธตเนˆเธˆเธฑเธ”เน€เธเน‡เธšเธ‚เธญเธ‡เธญเธธเธ›เธเธฃเธ“เนŒ</b>) เนƒเธ™เนเธ–เธšเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡. - - - Use International System of Units - เนƒเธŠเน‰เธฃเธฐเธšเธšเธซเธ™เนˆเธงเธขเธงเธฑเธ”เธฃเธฐเธซเธงเนˆเธฒเธ‡เธ›เธฃเธฐเน€เธ—เธจ - - - Display measurements using the <b>International System of Units (SI)</b> standard. - เนเธชเธ”เธ‡เธเธฒเธฃเธงเธฑเธ”เน‚เธ”เธขเนƒเธŠเน‰เธกเธฒเธ•เธฃเธเธฒเธ™ <b>เธฃเธฐเธšเธšเธซเธ™เนˆเธงเธขเธงเธฑเธ”เธฃเธฐเธซเธงเนˆเธฒเธ‡เธ›เธฃเธฐเน€เธ—เธจ (SI)</b> - - - Developer Sidebar - เนเธ–เธšเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เธ‚เธญเธ‡เธ™เธฑเธเธžเธฑเธ’เธ™เธฒ - - - Display debugging info and metrics in a dedicated sidebar on the right side of the screen. - เนเธชเธ”เธ‡เธ‚เน‰เธญเธกเธนเธฅเธเธฒเธฃเธ”เธตเธšเธฑเธเนเธฅเธฐเน€เธกเธ•เธฃเธดเธเนƒเธ™เนเธ–เธšเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เน€เธ‰เธžเธฒเธฐเธ—เธฒเธ‡เธ”เน‰เธฒเธ™เธ‚เธงเธฒเธ‚เธญเธ‡เธซเธ™เน‰เธฒเธˆเธญ - - - Metric #1 - เน€เธกเธ•เธฃเธดเธ #1 - - - Metric to display in the first metric in the "Developer Sidebar". - เน€เธกเธ•เธฃเธดเธเธ—เธตเนˆเธˆเธฐเนเธชเธ”เธ‡เนƒเธ™เน€เธกเธ•เธฃเธดเธเนเธฃเธเนƒเธ™ "เนเธ–เธšเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เธ‚เธญเธ‡เธ™เธฑเธเธžเธฑเธ’เธ™เธฒ" - - - Metric #2 - เน€เธกเธ•เธฃเธดเธ #2 - - - Metric to display in the second metric in the "Developer Sidebar". - เน€เธกเธ•เธฃเธดเธเธ—เธตเนˆเธˆเธฐเนƒเธŠเน‰เนเธชเธ”เธ‡เนƒเธ™เน€เธกเธ•เธฃเธดเธเธ—เธตเนˆเธชเธญเธ‡เนƒเธ™ "เนเธ–เธšเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เธ‚เธญเธ‡เธ™เธฑเธเธžเธฑเธ’เธ™เธฒ" - - - Metric #3 - เน€เธกเธ•เธฃเธดเธ #3 - - - Metric to display in the third metric in the "Developer Sidebar". - เน€เธกเธ•เธฃเธดเธเธ—เธตเนˆเธˆเธฐเนเธชเธ”เธ‡เนƒเธ™เน€เธกเธ•เธฃเธดเธเธ—เธตเนˆเธชเธฒเธกเนƒเธ™ "เนเธ–เธšเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เธ‚เธญเธ‡เธ™เธฑเธเธžเธฑเธ’เธ™เธฒ" - - - Metric #4 - เน€เธกเธ•เธฃเธดเธ #4 - - - Metric to display in the fourth metric in the "Developer Sidebar". - เน€เธกเธ•เธฃเธดเธเธ—เธตเนˆเธˆเธฐเนเธชเธ”เธ‡เนƒเธ™เน€เธกเธ•เธฃเธดเธเธ—เธตเนˆเธชเธตเนˆเนƒเธ™ "เนเธ–เธšเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เธ‚เธญเธ‡เธ™เธฑเธเธžเธฑเธ’เธ™เธฒ" - - - Metric #5 - เน€เธกเธ•เธฃเธดเธ #5 - - - Metric to display in the fifth metric in the "Developer Sidebar". - เน€เธกเธ•เธฃเธดเธเธ—เธตเนˆเธˆเธฐเนƒเธŠเน‰เนเธชเธ”เธ‡เนƒเธ™เน€เธกเธ•เธฃเธดเธเธ—เธตเนˆเธซเน‰เธฒเนƒเธ™ "เนเธ–เธšเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เธ‚เธญเธ‡เธ™เธฑเธเธžเธฑเธ’เธ™เธฒ" - - - Metric #6 - เน€เธกเธ•เธฃเธดเธ #6 - - - Metric to display in the sixth metric in the "Developer Sidebar". - เน€เธกเธ•เธฃเธดเธเธ—เธตเนˆเธˆเธฐเนƒเธŠเน‰เนเธชเธ”เธ‡เนƒเธ™เน€เธกเธ•เธฃเธดเธเธ—เธตเนˆเธซเธเนƒเธ™ "เนเธ–เธšเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เธ‚เธญเธ‡เธ™เธฑเธเธžเธฑเธ’เธ™เธฒ" - - - Metric #7 - เน€เธกเธ•เธฃเธดเธ #7 - - - Metric to display in the seventh metric in the "Developer Sidebar". - เน€เธกเธ•เธฃเธดเธเธ—เธตเนˆเธˆเธฐเนเธชเธ”เธ‡เนƒเธ™เน€เธกเธ•เธฃเธดเธเธ—เธตเนˆเน€เธˆเน‡เธ”เนƒเธ™ "เนเธ–เธšเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เธ‚เธญเธ‡เธ™เธฑเธเธžเธฑเธ’เธ™เธฒ" - - - Developer Widgets - เธงเธดเธ”เน€เธˆเน‡เธ•เธชเธณเธซเธฃเธฑเธšเธ™เธฑเธเธžเธฑเธ’เธ™เธฒ - - - Overlays displaying debugging visuals, internal states, and model predictions on the driving screen. - เน‚เธญเน€เธงเธญเธฃเนŒเน€เธฅเธขเนŒเนเธชเธ”เธ‡เธ เธฒเธžเธเธฒเธฃเธ”เธตเธšเธฑเธ เธชเธ–เธฒเธ™เธฐเธ เธฒเธขเนƒเธ™ เนเธฅเธฐเธเธฒเธฃเธ—เธณเธ™เธฒเธขเธ‚เธญเธ‡เน‚เธกเน€เธ”เธฅเธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ - - - Adjacent Leads Tracking - เธเธฒเธฃเธ•เธดเธ”เธ•เธฒเธกเธฅเธนเธเธ„เน‰เธฒเน€เธ›เน‰เธฒเธซเธกเธฒเธขเธ—เธตเนˆเธญเธขเธนเนˆเธ•เธดเธ”เธเธฑเธ™ - - - Adjacent leads detected by the car's radar to the left and right of the current driving path. - เธ•เธฃเธงเธˆเธžเธšเธฃเธ–เธ—เธตเนˆเธญเธขเธนเนˆเธ•เธดเธ”เธเธฑเธ™เน‚เธ”เธขเน€เธฃเธ”เธฒเธฃเนŒเธ‚เธญเธ‡เธฃเธ–เธ—เธฒเธ‡เธ”เน‰เธฒเธ™เธ‹เน‰เธฒเธขเนเธฅเธฐเธ‚เธงเธฒเธ‚เธญเธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™ - - - Model Stopping Point - เธˆเธธเธ”เธซเธขเธธเธ”เธ‚เธญเธ‡เน‚เธกเน€เธ”เธฅ - - - Display an image on the screen where openpilot is wanting to stop. - เนเธชเธ”เธ‡เธ เธฒเธžเธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธ—เธตเนˆ openpilot เธ•เน‰เธญเธ‡เธเธฒเธฃเธซเธขเธธเธ” - - - Radar Tracks - เน€เธชเน‰เธ™เธ—เธฒเธ‡เน€เธฃเธ”เธฒเธฃเนŒ - - - Display all of the radar points produced by the car's radar. - เนเธชเธ”เธ‡เธˆเธธเธ”เน€เธฃเธ”เธฒเธฃเนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”เธ—เธตเนˆเธœเธฅเธดเธ•เน‚เธ”เธขเน€เธฃเธ”เธฒเธฃเนŒเธ‚เธญเธ‡เธฃเธ– - - - Driving Screen Widgets - เธงเธดเธ”เน€เธˆเน‡เธ•เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ - - - Custom FrogPilot widgets for the driving screen. - เธงเธดเธ”เน€เธˆเน‡เธ• FrogPilot เนเธšเธšเธเธณเธซเธ™เธ”เน€เธญเธ‡เธชเธณเธซเธฃเธฑเธšเธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ - - - Acceleration Path - เน€เธชเน‰เธ™เธ—เธฒเธ‡เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - Colorize the driving path based on openpilot's current desired acceleration and deceleration rate. - เธ—เธณเนƒเธซเน‰เน€เธชเน‰เธ™เธ—เธฒเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธกเธตเธชเธตเธ•เธฒเธกเธญเธฑเธ•เธฃเธฒเธเธฒเธฃเน€เธฃเนˆเธ‡เนเธฅเธฐเธเธฒเธฃเธŠเธฐเธฅเธญเธ•เธฑเธงเธ—เธตเนˆเธ•เน‰เธญเธ‡เธเธฒเธฃเนƒเธ™เธ›เธฑเธˆเธˆเธธเธšเธฑเธ™เธ‚เธญเธ‡ openpilot - - - Adjacent Lanes - เธŠเนˆเธญเธ‡เธ—เธฒเธ‡เธ—เธตเนˆเธญเธขเธนเนˆเธ•เธดเธ”เธเธฑเธ™ - - - Driving paths for the left and right adjacent lanes. - เน€เธชเน‰เธ™เธ—เธฒเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธชเธณเธซเธฃเธฑเธšเน€เธฅเธ™เธ—เธตเนˆเธญเธขเธนเนˆเธ•เธดเธ”เธเธฑเธ™เธ”เน‰เธฒเธ™เธ‹เน‰เธฒเธขเนเธฅเธฐเธ‚เธงเธฒ - - - Blind Spot Path - เน€เธชเน‰เธ™เธ—เธฒเธ‡เธˆเธธเธ”เธšเธญเธ” - - - Display a red driving path for detected vehicles in the corresponding lane's blind spot. - เนเธชเธ”เธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธชเธตเนเธ”เธ‡เธชเธณเธซเธฃเธฑเธšเธขเธฒเธ™เธžเธฒเธซเธ™เธฐเธ—เธตเนˆเธ•เธฃเธงเธˆเธžเธšเนƒเธ™เธˆเธธเธ”เธšเธญเธ”เธ‚เธญเธ‡เน€เธฅเธ™เธ—เธตเนˆเธชเธญเธ”เธ„เธฅเน‰เธญเธ‡เธเธฑเธ™ - - - Compass - เน€เธ‚เน‡เธกเธ—เธดเธจ - - - A compass to show the current driving direction. - เน€เธ‚เน‡เธกเธ—เธดเธจเน€เธžเธทเนˆเธญเนเธชเธ”เธ‡เธ—เธดเธจเธ—เธฒเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™ - - - Driving Personality Button - เธ›เธธเนˆเธกเธšเธธเธ„เธฅเธดเธเธ เธฒเธžเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ - - - Display the current driving personality on the screen. Tap to switch personalities, or long press for 0.5 seconds to change the current state of <b>Experimental Mode</b>, or 2.5 seconds for <b>Traffic Mode</b>. - เนเธชเธ”เธ‡เธšเธธเธ„เธฅเธดเธเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™เธšเธ™เธซเธ™เน‰เธฒเธˆเธญ เนเธ•เธฐเน€เธžเธทเนˆเธญเธชเธฅเธฑเธšเธšเธธเธ„เธฅเธดเธ เธซเธฃเธทเธญเธเธ”เธ„เน‰เธฒเธ‡เน„เธงเน‰ 0.5 เธงเธดเธ™เธฒเธ—เธตเน€เธžเธทเนˆเธญเน€เธ›เธฅเธตเนˆเธขเธ™เธชเธ–เธฒเธ™เธฐเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™เธ‚เธญเธ‡ <b>เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡</b> เธซเธฃเธทเธญ 2.5 เธงเธดเธ™เธฒเธ—เธตเธชเธณเธซเธฃเธฑเธš <b>เน‚เธซเธกเธ”เธˆเธฃเธฒเธˆเธฃ</b> - - - Gas / Brake Pedal Indicators - เธ•เธฑเธงเธšเนˆเธ‡เธŠเธตเน‰เนเธ›เน‰เธ™เธ„เธฑเธ™เน€เธฃเนˆเธ‡ / เน€เธšเธฃเธ - - - Pedals to indicate when either of the pedals are currently being used.<br><br><b>Dynamic</b>: The pedals change in opacity in accordance to how much openpilot is accelerating or decelerating<br><b>Static</b>: The pedals are displayed with full opacity when active, and dimmed when not in use - เนเธ›เน‰เธ™เน€เธซเธขเธตเธขเธšเน€เธžเธทเนˆเธญเนเธชเธ”เธ‡เน€เธกเธทเนˆเธญเนƒเธ”เธเน‡เธ•เธฒเธกเธ—เธตเนˆเนเธ›เน‰เธ™เน€เธซเธขเธตเธขเธšเนƒเธ” เน† เธเธณเธฅเธฑเธ‡เธ–เธนเธเนƒเธŠเน‰เธ‡เธฒเธ™เธญเธขเธนเนˆ<br><br><b>เน„เธ”เธ™เธฒเธกเธดเธ</b>: เนเธ›เน‰เธ™เน€เธซเธขเธตเธขเธšเธˆเธฐเน€เธ›เธฅเธตเนˆเธขเธ™เธ„เธงเธฒเธกเธ—เธถเธšเนเธชเธ‡เธ•เธฒเธกเธเธฒเธฃเน€เธฃเนˆเธ‡เธซเธฃเธทเธญเธเธฒเธฃเธฅเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธญเธ‡ openpilot<br><b>เธ„เธ‡เธ—เธตเนˆ</b>: เนเธ›เน‰เธ™เน€เธซเธขเธตเธขเธšเธˆเธฐเนเธชเธ”เธ‡เธ”เน‰เธงเธขเธ„เธงเธฒเธกเธ—เธถเธšเนเธชเธ‡เน€เธ•เน‡เธกเธ—เธตเนˆเน€เธกเธทเนˆเธญเนƒเธŠเน‰เธ‡เธฒเธ™ เนเธฅเธฐเธˆเธฐเธฅเธ”เธ„เธงเธฒเธกเธ—เธถเธšเนเธชเธ‡เน€เธกเธทเนˆเธญเน„เธกเนˆเน„เธ”เน‰เนƒเธŠเน‰เธ‡เธฒเธ™ - - - Rotating Steering Wheel - เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธซเธกเธธเธ™ - - - Rotate the steering wheel alongside the vehicle's physical steering wheel. - เธซเธกเธธเธ™เธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธ„เธงเธšเธ„เธนเนˆเน„เธ›เธเธฑเธšเธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธ‚เธญเธ‡เธฃเธ–เธขเธ™เธ•เนŒ - - - Model UI - เน‚เธกเน€เธ”เธฅ UI - - - Model visualizations on the driving screen for the driving path, lane lines, path edges, and road edges. - เนเธชเธ”เธ‡เธ เธฒเธžเน‚เธกเน€เธ”เธฅเธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธชเธณเธซเธฃเธฑเธšเน€เธชเน‰เธ™เธ—เธฒเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ, เน€เธชเน‰เธ™เน€เธฅเธ™, เธ‚เธญเธšเน€เธชเน‰เธ™เธ—เธฒเธ‡, เนเธฅเธฐเธ‚เธญเธšเธ–เธ™เธ™ - - - Dynamic Path Width - เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡เนเธšเธšเน„เธ”เธ™เธฒเธกเธดเธ - - - Adjust the width of the driving path based on the current engagement state.<br><br><b>Fully engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Fully disengaged</b>: 50% - เธ›เธฃเธฑเธšเธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ•เธฒเธกเธชเธ–เธฒเธ™เธฐเธเธฒเธฃเธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเนƒเธ™เธ›เธฑเธˆเธˆเธธเธšเธฑเธ™<br><br><b>เธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเน€เธ•เน‡เธกเธ—เธตเนˆ</b>: 100%<br><b>เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เธ•เธฅเธญเธ”เน€เธงเธฅเธฒ</b>: 75%<br><b>เน„เธกเนˆเธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเน€เธ•เน‡เธกเธ—เธตเนˆ</b>: 50% - - - Lane Lines Width - เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡เน€เธชเน‰เธ™เน€เธฅเธ™ - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 4 inches. - เธ„เธงเธฒเธกเธซเธ™เธฒเธ‚เธญเธ‡เน€เธชเน‰เธ™เน€เธฅเธ™เธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ<br><br><b>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธ•เธฃเธ‡เธเธฑเธšเธกเธฒเธ•เธฃเธเธฒเธ™เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡เน€เธชเน‰เธ™เน€เธฅเธ™ <b>MUTCD</b> เธ—เธตเนˆ 4 เธ™เธดเน‰เธง - - - Path Edges Width - เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡เธ‚เธญเธšเน€เธชเน‰เธ™เธ—เธฒเธ‡ - - - The width of the edges of the driving path that represent different driving modes and statuses.<br><br>Default is <b>20%</b> of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden - เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡เธ‚เธญเธšเน€เธชเน‰เธ™เธ—เธฒเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเนเธชเธ”เธ‡เธ–เธถเธ‡เน‚เธซเธกเธ”เนเธฅเธฐเธชเธ–เธฒเธ™เธฐเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ—เธตเนˆเนเธ•เธเธ•เนˆเธฒเธ‡เธเธฑเธ™<br><br>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธ„เธทเธญ <b>20%</b> เธ‚เธญเธ‡เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡เธ—เธฑเน‰เธ‡เธซเธกเธ”<br><br>เธ„เธนเนˆเธกเธทเธญเธชเธต:<br><br>- <b>เธชเธตเธ™เน‰เธณเน€เธ‡เธดเธ™</b>: เธเธฒเธฃเธ™เธณเธ—เธฒเธ‡<br>- <b>เธชเธตเธŸเน‰เธฒเธญเนˆเธญเธ™</b>: เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เน€เธชเธกเธญ<br>- <b>เธชเธตเน€เธ‚เธตเธขเธง</b>: เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™<br>- <b>เธชเธตเธชเน‰เธก</b>: เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡<br>- <b>เธชเธตเนเธ”เธ‡</b>: เน‚เธซเธกเธ”เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ<br>- <b>เธชเธตเน€เธซเธฅเธทเธญเธ‡</b>: เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡เธ•เธฒเธกเน€เธ‡เธทเนˆเธญเธ™เน„เธ‚เธ—เธตเนˆเธ–เธนเธเนเธ—เธ™เธ—เธตเนˆ - - - Path Width - เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡ - - - Road Edges Width - เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡เธ‚เธญเธšเธ–เธ™เธ™ - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 4 inches. - เธ„เธงเธฒเธกเธซเธ™เธฒเธ‚เธญเธ‡เธ‚เธญเธšเธ–เธ™เธ™เธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ<br><br><b>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธ•เธฃเธ‡เธเธฑเธšเธ„เธฃเธถเนˆเธ‡เธซเธ™เธถเนˆเธ‡เธ‚เธญเธ‡เธกเธฒเธ•เธฃเธเธฒเธ™เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡เน€เธชเน‰เธ™เน€เธฅเธ™ <b>MUTCD</b> เธ—เธตเนˆ 4 เธ™เธดเน‰เธง - - - "Unlimited" Road UI - "เน„เธกเนˆเธˆเธณเธเธฑเธ”" Road UI - - - Extend the display of the driving path, lane lines, and road edges as far as the model can see. - เธ‚เธขเธฒเธขเธเธฒเธฃเนเธชเธ”เธ‡เธœเธฅเธ‚เธญเธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ เน€เธชเน‰เธ™เน€เธฅเธ™ เนเธฅเธฐเธ‚เธญเธšเธ–เธ™เธ™เนƒเธซเน‰เน„เธเธฅเธ—เธตเนˆเธชเธธเธ”เน€เธ—เนˆเธฒเธ—เธตเนˆเน‚เธกเน€เธ”เธฅเธˆเธฐเธกเธญเธ‡เน€เธซเน‡เธ™เน„เธ”เน‰ - - - Navigation Widgets - เธงเธดเธ”เน€เธˆเน‡เธ•เธ™เธณเธ—เธฒเธ‡ - - - Map style tweaks, speed limits, and other navigation related widgets. - เธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธชเน„เธ•เธฅเนŒเนเธœเธ™เธ—เธตเนˆ, เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง, เนเธฅเธฐเธงเธดเธ”เน€เธˆเน‡เธ•เธ—เธตเนˆเน€เธเธตเนˆเธขเธงเธ‚เน‰เธญเธ‡เธเธฑเธšเธเธฒเธฃเธ™เธณเธ—เธฒเธ‡เธญเธทเนˆเธ™ เน†. - - - Larger Map Display - เนเธชเธ”เธ‡เนเธœเธ™เธ—เธตเนˆเธ‚เธ™เธฒเธ”เนƒเธซเธเนˆเธ‚เธถเน‰เธ™ - - - Increase the size of the map for easier navigation readings. - เน€เธžเธดเนˆเธกเธ‚เธ™เธฒเธ”เธ‚เธญเธ‡เนเธœเธ™เธ—เธตเนˆเน€เธžเธทเนˆเธญเนƒเธซเน‰เธญเนˆเธฒเธ™เธเธฒเธฃเธ™เธณเธ—เธฒเธ‡เน„เธ”เน‰เธ‡เนˆเธฒเธขเธ‚เธถเน‰เธ™ - - - Map Style - เธชเน„เธ•เธฅเนŒเนเธœเธ™เธ—เธตเนˆ - - - The map style used for <b>Navigate on openpilot (NOO)</b>:<br><br><b>Stock</b>: Default comma.ai style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>mike854's (Satellite hybrid)</b>: Customized hybrid satellite view - เธฃเธนเธ›เนเธšเธšเนเธœเธ™เธ—เธตเนˆเธ—เธตเนˆเนƒเธŠเน‰เธชเธณเธซเธฃเธฑเธš <b>Navigate on openpilot (NOO)</b>:<br><br><b>Stock</b>: เธฃเธนเธ›เนเธšเธšเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธ‚เธญเธ‡ comma.ai<br><b>Mapbox Streets</b>: เธกเธธเธกเธกเธญเธ‡เน€เธ™เน‰เธ™เธ–เธ™เธ™เธกเธฒเธ•เธฃเธเธฒเธ™<br><b>Mapbox Outdoors</b>: เน€เธ™เน‰เธ™เธ„เธธเธ“เธฅเธฑเธเธฉเธ“เธฐเธเธฅเธฒเธ‡เนเธˆเน‰เธ‡เนเธฅเธฐเธ เธนเธกเธดเธ›เธฃเธฐเน€เธ—เธจ<br><b>Mapbox Light</b>: เธ˜เธตเธกเธชเธงเนˆเธฒเธ‡เนเธšเธšเธกเธดเธ™เธดเธกเธญเธฅ<br><b>Mapbox Dark</b>: เธ˜เธตเธกเธกเธทเธ”เนเธšเธšเธกเธดเธ™เธดเธกเธญเธฅ<br><b>Mapbox Navigation Day</b>: เธ›เธฃเธฑเธšเนƒเธซเน‰เน€เธซเธกเธฒเธฐเธชเธกเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธ™เธณเธ—เธฒเธ‡เนƒเธ™เน€เธงเธฅเธฒเธเธฅเธฒเธ‡เธงเธฑเธ™<br><b>Mapbox Navigation Night</b>: เธ›เธฃเธฑเธšเนƒเธซเน‰เน€เธซเธกเธฒเธฐเธชเธกเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธ™เธณเธ—เธฒเธ‡เนƒเธ™เน€เธงเธฅเธฒเธเธฅเธฒเธ‡เธ„เธทเธ™<br><b>Mapbox Satellite</b>: เธ เธฒเธžเธ–เนˆเธฒเธขเธ”เธฒเธงเน€เธ—เธตเธขเธกเน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™<br><b>Mapbox Satellite Streets</b>: เธ เธฒเธžเธ–เนˆเธฒเธขเธ”เธฒเธงเน€เธ—เธตเธขเธกเนเธšเธšเน„เธฎเธšเธฃเธดเธ”เธžเธฃเน‰เธญเธกเธ›เน‰เธฒเธขเธ–เธ™เธ™<br><b>Mapbox Traffic Night</b>: เธ˜เธตเธกเธกเธทเธ”เน€เธ™เน‰เธ™เธชเธ เธฒเธžเธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ<br><b>mike854's (Satellite hybrid)</b>: เธกเธธเธกเธกเธญเธ‡เธ”เธฒเธงเน€เธ—เธตเธขเธกเน„เธฎเธšเธฃเธดเธ”เธ—เธตเนˆเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เน€เธญเธ‡ - - - Road Name - เธŠเธทเนˆเธญเธ–เธ™เธ™ - - - Display the road name at the bottom of the driving screen using data from <b>OpenStreetMap</b>. - เนเธชเธ”เธ‡เธŠเธทเนˆเธญเธ–เธ™เธ™เธ—เธตเนˆเธ”เน‰เธฒเธ™เธฅเนˆเธฒเธ‡เธ‚เธญเธ‡เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเน‚เธ”เธขเนƒเธŠเน‰เธ‚เน‰เธญเธกเธนเธฅเธˆเธฒเธ <b>OpenStreetMap</b>. - - - Show Speed Limits - เนเธชเธ”เธ‡เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - Display speed limits in the top left corner of the driving screen. Uses data from your car's dashboard (if supported) and data from <b>OpenStreetMaps</b>. - เนเธชเธ”เธ‡เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ—เธตเนˆเธกเธธเธกเธ‹เน‰เธฒเธขเธšเธ™เธ‚เธญเธ‡เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ เนƒเธŠเน‰เธ‚เน‰เธญเธกเธนเธฅเธˆเธฒเธเนเธœเธ‡เธซเธ™เน‰เธฒเธ›เธฑเธ”เธ‚เธญเธ‡เธฃเธ–เธ„เธธเธ“ (เธ–เน‰เธฒเธฃเธญเธ‡เธฃเธฑเธš) เนเธฅเธฐเธ‚เน‰เธญเธกเธนเธฅเธˆเธฒเธ <b>OpenStreetMaps</b>. - - - Show Speed Limits from Mapbox - เนเธชเธ”เธ‡เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธˆเธฒเธ Mapbox - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - เนƒเธŠเน‰เธ‚เน‰เธญเธกเธนเธฅเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธญเธ‡ <b>Mapbox</b> เน€เธกเธทเนˆเธญเน„เธกเนˆเธกเธตเนเธซเธฅเนˆเธ‡เธ‚เน‰เธญเธกเธนเธฅเธญเธทเนˆเธ™เธ—เธตเนˆเนƒเธŠเน‰เน„เธ”เน‰ - - - Use Vienna-Style Speed Signs - เนƒเธŠเน‰เธ›เน‰เธฒเธขเธ„เธงเธฒเธกเน€เธฃเน‡เธงเนเธšเธšเน€เธงเธตเธขเธ™เธ™เธฒ - - - Force <b>Vienna-style (EU)</b> speed limit signs instead of <b>MUTCD (US)</b>. - เธšเธฑเธ‡เธ„เธฑเธšเนƒเธŠเน‰เธ›เน‰เธฒเธขเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเนเธšเธš <b>Vienna-style (EU)</b> เนเธ—เธ™ <b>MUTCD (US)</b>. - - - Quality of Life - เธ„เธธเธ“เธ เธฒเธžเธŠเธตเธงเธดเธ• - - - Visual features to improve your overall openpilot experience. - เธ„เธธเธ“เธชเธกเธšเธฑเธ•เธดเธ”เน‰เธฒเธ™เธ เธฒเธžเน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเธ›เธฃเธธเธ‡เธ›เธฃเธฐเธชเธšเธเธฒเธฃเธ“เนŒเธเธฒเธฃเนƒเธŠเน‰เธ‡เธฒเธ™ openpilot เธ‚เธญเธ‡เธ„เธธเธ“เน‚เธ”เธขเธฃเธงเธก - - - Camera View - เธกเธธเธกเธกเธญเธ‡เธเธฅเน‰เธญเธ‡ - - - The active camera view display. This is purely a visual change and doesn't impact how openpilot drives! - เธเธฒเธฃเนเธชเธ”เธ‡เธœเธฅเธกเธธเธกเธกเธญเธ‡เธเธฅเน‰เธญเธ‡เธ—เธตเนˆเนƒเธŠเน‰เธ‡เธฒเธ™เธญเธขเธนเนˆ เธ™เธตเนˆเน€เธ›เน‡เธ™เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ—เธฒเธ‡เธ เธฒเธžเน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™เนเธฅเธฐเน„เธกเนˆเธชเนˆเธ‡เธœเธฅเธ•เนˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ‚เธญเธ‡ openpilot! - - - Show Driver Camera When In Reverse - เนเธชเธ”เธ‡เธเธฅเน‰เธญเธ‡เธ„เธ™เธ‚เธฑเธšเน€เธกเธทเนˆเธญเธ–เธญเธขเธซเธฅเธฑเธ‡ - - - Display the driver camera feed when the vehicle is in reverse. - เนเธชเธ”เธ‡เธŸเธตเธ”เธเธฅเน‰เธญเธ‡เธ„เธ™เธ‚เธฑเธšเน€เธกเธทเนˆเธญเธฃเธ–เธญเธขเธนเนˆเนƒเธ™เน€เธเธตเธขเธฃเนŒเธ–เธญเธขเธซเธฅเธฑเธ‡ - - - Standby Mode - เน‚เธซเธกเธ”เธชเนเธ•เธ™เธ”เนŒเธšเธฒเธข - - - Turn the screen off when driving and automatically wake it up if engagement state changes or important alerts occur. - Translation A - - - Stopped Timer - เธซเธขเธธเธ”เธ•เธฑเธงเธˆเธฑเธšเน€เธงเธฅเธฒ - - - Replace the current speed with a timer when stopped to indicate how long the vehicle has been stopped for. - เนเธ—เธ™เธ—เธตเนˆเธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™เธ”เน‰เธงเธขเธ•เธฑเธงเธˆเธฑเธšเน€เธงเธฅเธฒเน€เธกเธทเนˆเธญเธซเธขเธธเธ”เน€เธžเธทเนˆเธญเนเธชเธ”เธ‡เธฃเธฐเธขเธฐเน€เธงเธฅเธฒเธ—เธตเนˆเธฃเธ–เธซเธขเธธเธ”เธญเธขเธนเนˆ - - - Blind Spot - เธˆเธธเธ”เธšเธญเธ” - - - Steering Torque - เนเธฃเธ‡เธšเธดเธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธข - - - Turn Signal - เน„เธŸเน€เธฅเธตเน‰เธขเธง - - - Fahrenheit - เธŸเธฒเน€เธฃเธ™เน„เธฎเธ•เนŒ - - - CPU - CPU - - - GPU - GPU - - - IP - IP - - - RAM - RAM - - - SSD Left - SSD เธ—เธตเนˆเน€เธซเธฅเธทเธญเธญเธขเธนเนˆ - - - SSD Used - SSD เธ—เธตเนˆเนƒเธŠเน‰เนเธฅเน‰เธง - - - None - เน„เธกเนˆเธกเธต - - - Acceleration: Current - เธ„เธงเธฒเธกเน€เธฃเนˆเธ‡: เธ›เธฑเธˆเธˆเธธเธšเธฑเธ™ - - - Acceleration: Max - เธญเธฑเธ•เธฃเธฒเน€เธฃเนˆเธ‡: เธชเธนเธ‡เธชเธธเธ” - - - Auto Tune: Actuator Delay - เธญเธญเน‚เธ•เน‰เธˆเธนเธ™: เธซเธ™เนˆเธงเธ‡เน€เธงเธฅเธฒเธ•เธฑเธงเธเธฃเธฐเธ•เธธเน‰เธ™ - - - Auto Tune: Friction - เธญเธญเน‚เธ•เน‰เธˆเธนเธ™: เนเธฃเธ‡เน€เธชเธตเธขเธ”เธ—เธฒเธ™ - - - Auto Tune: Lateral Acceleration - เธ›เธฃเธฑเธšเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด: เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡ - - - Auto Tune: Steer Ratio - เธญเธญเน‚เธ•เน‰เธˆเธนเธ™: เธญเธฑเธ•เธฃเธฒเธ—เธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธข - - - Auto Tune: Stiffness Factor - เธญเธญเน‚เธ•เน‰เธˆเธนเธ™: เธ›เธฑเธˆเธˆเธฑเธขเธ„เธงเธฒเธกเนเธ‚เน‡เธ‡ - - - Engagement %: Lateral - เธเธฒเธฃเธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธก %: เนเธ™เธงเธ™เธญเธ™ - - - Engagement %: Longitudinal - เธเธฒเธฃเธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธก %: เธ•เธฒเธกเธขเธฒเธง - - - Lateral Control: Steering Angle - เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡: เธกเธธเธกเธžเธงเธ‡เธกเธฒเธฅเธฑเธข - - - Lateral Control: Torque % Used - เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡: เนเธฃเธ‡เธšเธดเธ” % เธ—เธตเนˆเนƒเธŠเน‰ - - - Longitudinal Control: Actuator Acceleration Output - เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ•เธฒเธกเธขเธฒเธง: เน€เธญเธฒเธ•เนŒเธžเธธเธ•เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ‚เธญเธ‡เธ•เธฑเธงเธเธฃเธฐเธ•เธธเน‰เธ™ - - - Longitudinal MPC Jerk: Acceleration - เธเธฒเธฃเธเธฃเธฐเธ•เธธเธเธ‚เธญเธ‡ MPC เธ•เธฒเธกเธขเธฒเธง: เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง - - - Longitudinal MPC Jerk: Danger Zone - MPC เธ•เธฒเธกเธขเธฒเธง Jerk: เน€เธ‚เธ•เธญเธฑเธ™เธ•เธฃเธฒเธข - - - Longitudinal MPC Jerk: Speed Control - เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธงเนเธšเธš Longitudinal MPC Jerk - - - SELECT - SELECT - - - Select a metric to display - เน€เธฅเธทเธญเธเน€เธกเธ•เธฃเธดเธเน€เธžเธทเนˆเธญเนเธชเธ”เธ‡ - - - Show Distance - เนเธชเธ”เธ‡เธฃเธฐเธขเธฐเธ—เธฒเธ‡ - - - Dynamic - เน„เธ”เธ™เธฒเธกเธดเธ - - - Static - เธชเธ–เธดเธ• - - - inches - เธ™เธดเน‰เธง - - - Off - เธ›เธดเธ” - - - feet - เธŸเธธเธ• - - - Full Map - เนเธœเธ™เธ—เธตเนˆเธ—เธฑเน‰เธ‡เธซเธกเธ” - - - Stock openpilot - เธชเธ•เน‡เธญเธเน‚เธญเน€เธžเนˆเธ™เน„เธžเธฅเน‡เธญเธ• - - - FrogsGoMoo's Personalized Style - เธชเน„เธ•เธฅเนŒเน€เธ‰เธžเธฒเธฐเธ•เธฑเธงเธ‚เธญเธ‡ FrogsGoMoo - - - Mapbox Streets - Mapbox Streets - - - Mapbox Outdoors - Mapbox Outdoors - - - Mapbox Light - Mapbox Light - - - Mapbox Dark - Mapbox Dark - - - Mapbox Navigation Day - เธงเธฑเธ™เธ™เธณเธ—เธฒเธ‡เธ‚เธญเธ‡ Mapbox - - - Mapbox Navigation Night - เธเธฒเธฃเธ™เธณเธ—เธฒเธ‡ Mapbox เธเธฅเธฒเธ‡เธ„เธทเธ™ - - - Mapbox Satellite - Mapbox Satellite - - - Mapbox Satellite Streets - เนเธœเธ™เธ—เธตเนˆเธ”เธฒเธงเน€เธ—เธตเธขเธกเธ–เธ™เธ™เธ‚เธญเธ‡ Mapbox - - - Mapbox Traffic Night - Mapbox Traffic Night - - - Mike's Personalized Style - เธชเน„เธ•เธฅเนŒเน€เธ‰เธžเธฒเธฐเธ•เธฑเธงเธ‚เธญเธ‡เน„เธกเธ„เนŒ - - - Select a map style - เน€เธฅเธทเธญเธเธชเน„เธ•เธฅเนŒเนเธœเธ™เธ—เธตเนˆ - - - Auto - เธญเธญเน‚เธ•เน‰ - - - Driver - เน„เธ”เธฃเน€เธงเธญเธฃเนŒ - - - Standard - เธกเธฒเธ•เธฃเธเธฒเธ™ - - - Wide - เธเธงเน‰เธฒเธ‡ - - - foot - เน€เธ—เน‰เธฒ - - - inch - เธ™เธดเน‰เธง - - - meter - เน€เธกเธ•เธฃ - - - meters - เน€เธกเธ•เธฃ - - - centimeter - เน€เธ‹เธ™เธ•เธดเน€เธกเธ•เธฃ - - - centimeters - เน€เธ‹เธ™เธ•เธดเน€เธกเธ•เธฃ - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 10 centimeters. - เธ„เธงเธฒเธกเธซเธ™เธฒเธ‚เธญเธ‡เน€เธชเน‰เธ™เน€เธฅเธ™เธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ<br><br><b>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธ•เธฃเธ‡เธเธฑเธšเธกเธฒเธ•เธฃเธเธฒเธ™เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡เน€เธชเน‰เธ™เน€เธฅเธ™ <b>MUTCD</b> เธ—เธตเนˆ 10 เน€เธ‹เธ™เธ•เธดเน€เธกเธ•เธฃ - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 10 centimeters. - เธ„เธงเธฒเธกเธซเธ™เธฒเธ‚เธญเธ‡เธ‚เธญเธšเธ–เธ™เธ™เธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ<br><br><b>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธ•เธฃเธ‡เธเธฑเธšเธ„เธฃเธถเนˆเธ‡เธซเธ™เธถเนˆเธ‡เธ‚เธญเธ‡เธกเธฒเธ•เธฃเธเธฒเธ™เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡เน€เธชเน‰เธ™เน€เธฅเธ™ <b>MUTCD</b> เธ—เธตเนˆ 10 เน€เธ‹เธ™เธ•เธดเน€เธกเธ•เธฃ + <b>Show a numerical temperature in the sidebar</b> instead of the status labels. + <b>เนเธชเธ”เธ‡เธญเธธเธ“เธซเธ เธนเธกเธดเนเธšเธšเธ•เธฑเธงเน€เธฅเธ‚เนƒเธ™เนเธ–เธšเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡</b> เนเธ—เธ™เธ›เน‰เธฒเธขเธชเธ–เธฒเธ™เธฐ Sidebar Metrics - เน€เธกเธ•เธฃเธดเธเนเธ–เธšเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡ + เธ•เธฑเธงเธŠเธตเน‰เธงเธฑเธ”เนเธ–เธšเธ‚เน‰เธฒเธ‡ - The width of the driving path on the driving screen.<br><br>Default <b>(6.1 feet)</b> matches the width of a <b>2019 Lexus ES 350</b>. - เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ<br><br>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ <b>(6.1 เธŸเธธเธ•)</b> เธ•เธฃเธ‡เธเธฑเธšเธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡ <b>2019 Lexus ES 350</b> + <b>Display system information</b> (CPU, GPU, RAM usage, IP address, device storage) in the sidebar. + <b>เนเธชเธ”เธ‡เธ‚เน‰เธญเธกเธนเธฅเธฃเธฐเธšเธš</b> (เธเธฒเธฃเนƒเธŠเน‰ CPU, GPU, RAM, เธ—เธตเนˆเธญเธขเธนเนˆ IP, เธ—เธตเนˆเน€เธเน‡เธšเธ‚เน‰เธญเธกเธนเธฅเธญเธธเธ›เธเธฃเธ“เนŒ) เนƒเธ™เนเธ–เธšเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡ - The width of the driving path on the driving screen.<br><br>Default <b>(1.9 meters)</b> matches the width of a <b>2019 Lexus ES 350</b>. - เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡เธ‚เธฑเธšเธ‚เธตเนˆเธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธ‚เธฑเธšเธ‚เธตเนˆ<br><br>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ <b>(1.9 เน€เธกเธ•เธฃ)</b> เธ•เธฃเธ‡เธเธฑเธšเธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡ <b>2019 Lexus ES 350</b> + Use International System of Units + เนƒเธŠเน‰เธซเธ™เนˆเธงเธขเธ•เธฒเธกเธฃเธฐเธšเธšเธชเธฒเธเธฅ (SI) + + + <b>Display measurements using the "International System of Units" (SI)</b> standard. + <b>เนเธชเธ”เธ‡เธเธฒเธฃเธงเธฑเธ”เน‚เธ”เธขเนƒเธŠเน‰เธกเธฒเธ•เธฃเธเธฒเธ™ โ€œเธฃเธฐเธšเธšเธซเธ™เนˆเธงเธขเธชเธฒเธเธฅโ€ (SI)</b> + + + Developer Sidebar + เนเธ–เธšเธ‚เน‰เธฒเธ‡เธชเธณเธซเธฃเธฑเธšเธ™เธฑเธเธžเธฑเธ’เธ™เธฒ + + + <b>Display debugging info and metrics</b> in a dedicated sidebar on the right side of the screen. + <b>เนเธชเธ”เธ‡เธ‚เน‰เธญเธกเธนเธฅเนเธฅเธฐเธ•เธฑเธงเธŠเธตเน‰เธงเธฑเธ”เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธ”เธตเธšเธฑเธ</b> เนƒเธ™เนเธ–เธšเธ‚เน‰เธฒเธ‡เน€เธ‰เธžเธฒเธฐเธ—เธฒเธ‡เธ—เธฒเธ‡เธ”เน‰เธฒเธ™เธ‚เธงเธฒเธ‚เธญเธ‡เธซเธ™เน‰เธฒเธˆเธญ + + + Metric #1 + เน€เธกเธ•เธฃเธดเธ #1 + + + <b>Select the metric shown in the first "Developer Sidebar" widget.</b> + <b>เน€เธฅเธทเธญเธเธ•เธฑเธงเธŠเธตเน‰เธงเธฑเธ”เธ—เธตเนˆเนเธชเธ”เธ‡เนƒเธ™เธงเธดเธ”เน€เธˆเน‡เธ• "Developer Sidebar" เนเธฃเธ</b> + + + Metric #2 + เน€เธกเธ•เธฃเธดเธ #2 + + + <b>Select the metric shown in the second "Developer Sidebar" widget.</b> + <b>เน€เธฅเธทเธญเธเธ•เธฑเธงเธŠเธตเน‰เธงเธฑเธ”เธ—เธตเนˆเนเธชเธ”เธ‡เนƒเธ™เธงเธดเธ”เน€เธˆเน‡เธ• "Developer Sidebar" เธญเธฑเธ™เธ—เธตเนˆเธชเธญเธ‡</b> + + + Metric #3 + เน€เธกเธ•เธฃเธดเธ #3 + + + <b>Select the metric shown in the third "Developer Sidebar" widget.</b> + <b>เน€เธฅเธทเธญเธเน€เธกเธ•เธฃเธดเธเธ—เธตเนˆเนเธชเธ”เธ‡เนƒเธ™เธงเธดเธ”เน€เธˆเน‡เธ• "Developer Sidebar" เธ•เธฑเธงเธ—เธตเนˆเธชเธฒเธก</b> + + + Metric #4 + เธ•เธฑเธงเธŠเธตเน‰เธงเธฑเธ” #4 + + + <b>Select the metric shown in the fourth "Developer Sidebar" widget.</b> + <b>เน€เธฅเธทเธญเธเธ•เธฑเธงเธŠเธตเน‰เธงเธฑเธ”เธ—เธตเนˆเนเธชเธ”เธ‡เนƒเธ™เธงเธดเธ”เน€เธˆเน‡เธ• "Developer Sidebar" เธ•เธฑเธงเธ—เธตเนˆเธชเธตเนˆ</b> + + + Metric #5 + เธกเธดเน€เธ•เธญเธฃเนŒ #5 + + + <b>Select the metric shown in the fifth "Developer Sidebar" widget.</b> + <b>เน€เธฅเธทเธญเธเธ•เธฑเธงเธŠเธตเน‰เธงเธฑเธ”เธ—เธตเนˆเนเธชเธ”เธ‡เนƒเธ™เธงเธดเธ”เน€เธˆเน‡เธ• "Developer Sidebar" เธ•เธฑเธงเธ—เธตเนˆเธซเน‰เธฒ</b> + + + Metric #6 + เน€เธกเธ•เธฃเธดเธ #6 + + + <b>Select the metric shown in the sixth "Developer Sidebar" widget.</b> + <b>เน€เธฅเธทเธญเธเธ•เธฑเธงเธŠเธตเน‰เธงเธฑเธ”เธ—เธตเนˆเนเธชเธ”เธ‡เนƒเธ™เธงเธดเธ”เน€เธˆเน‡เธ• "Developer Sidebar" เธฅเธณเธ”เธฑเธšเธ—เธตเนˆเธซเธ</b> + + + Metric #7 + เน€เธกเธ•เธฃเธดเธ #7 + + + <b>Select the metric shown in the seventh "Developer Sidebar" widget.</b> + <b>เน€เธฅเธทเธญเธเธ•เธฑเธงเธŠเธตเน‰เธงเธฑเธ”เธ—เธตเนˆเนเธชเธ”เธ‡เนƒเธ™เธงเธดเธ”เน€เธˆเน‡เธ• "Developer Sidebar" เธฅเธณเธ”เธฑเธšเธ—เธตเนˆเน€เธˆเน‡เธ”</b> + + + Developer Widgets + เธงเธดเธ”เน€เธˆเน‡เธ•เธชเธณเธซเธฃเธฑเธšเธ™เธฑเธเธžเธฑเธ’เธ™เธฒ + + + <b>Overlays for debugging visuals, internal states, and model predictions</b> on the driving screen. + <b>เธเธฒเธฃเธ‹เน‰เธญเธ™เธ—เธฑเธšเน€เธžเธทเนˆเธญเธ”เธตเธšเธฑเธเธ เธฒเธž เธชเธ–เธฒเธ™เธฐเธ เธฒเธขเนƒเธ™ เนเธฅเธฐเธเธฒเธฃเธ„เธฒเธ”เธเธฒเธฃเธ“เนŒเธ‚เธญเธ‡เน‚เธกเน€เธ”เธฅ</b> เธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + + + Adjacent Leads Tracking + เธเธฒเธฃเธ•เธดเธ”เธ•เธฒเธกเธฃเธ–เธ„เธฑเธ™เธซเธ™เน‰เธฒเธ—เธตเนˆเธญเธขเธนเนˆเน€เธฅเธ™เธ‚เน‰เธฒเธ‡ + + + <b>Display adjacent leads detected by the car's radar</b> to the left and right of the current driving path. + <b>เนเธชเธ”เธ‡เธขเธฒเธ™เธžเธฒเธซเธ™เธฐเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เธ—เธตเนˆเน€เธฃเธ”เธฒเธฃเนŒเธ‚เธญเธ‡เธฃเธ–เธ•เธฃเธงเธˆเธžเธš</b> เธ—เธฒเธ‡เธ‹เน‰เธฒเธขเนเธฅเธฐเธ‚เธงเธฒเธ‚เธญเธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡เธ‚เธฑเธšเธ‚เธตเนˆเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™ + + + Model Stopping Point + เธˆเธธเธ”เธซเธขเธธเธ”เธ‚เธญเธ‡เน‚เธกเน€เธ”เธฅ + + + <b>Show a stop-sign marker where the model intends to stop.</b> + <b>เนเธชเธ”เธ‡เน€เธ„เธฃเธทเนˆเธญเธ‡เธซเธกเธฒเธขเธ›เน‰เธฒเธขเธซเธขเธธเธ”เธ•เธฃเธ‡เธ•เธณเนเธซเธ™เนˆเธ‡เธ—เธตเนˆเน‚เธกเน€เธ”เธฅเธ•เธฑเน‰เธ‡เนƒเธˆเธˆเธฐเธซเธขเธธเธ”</b> + + + Radar Tracks + เนเธ—เธฃเน‡เธเน€เธฃเธ”เธฒเธฃเนŒ + + + <b>Display all radar points</b> produced by the car's radar. + <b>เนเธชเธ”เธ‡เธˆเธธเธ”เน€เธฃเธ”เธฒเธฃเนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”</b> เธ—เธตเนˆเธชเธฃเน‰เธฒเธ‡เน‚เธ”เธขเน€เธฃเธ”เธฒเธฃเนŒเธ‚เธญเธ‡เธฃเธ–เธขเธ™เธ•เนŒ + + + Driving Screen Widgets + เธงเธดเธ”เน€เธˆเน‡เธ•เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + + + <b>Custom FrogPilot widgets</b> for the driving screen. + <b>เธงเธดเธ”เน€เธˆเน‡เธ• FrogPilot เนเธšเธšเธเธณเธซเธ™เธ”เน€เธญเธ‡</b> เธชเธณเธซเธฃเธฑเธšเธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + + + Acceleration Path + เน€เธชเน‰เธ™เธ—เธฒเธ‡เธเธฒเธฃเน€เธฃเนˆเธ‡เธ„เธงเธฒเธกเน€เธฃเน‡เธง + + + <b>Color the driving path by planned acceleration and braking.</b> + <b>เนเธชเธ”เธ‡เธชเธตเน€เธชเน‰เธ™เธ—เธฒเธ‡เธ‚เธฑเธšเธ‚เธตเนˆเธ•เธฒเธกเธเธฒเธฃเน€เธฃเนˆเธ‡เนเธฅเธฐเธเธฒเธฃเน€เธšเธฃเธเธ—เธตเนˆเธงเธฒเธ‡เนเธœเธ™เน„เธงเน‰</b> + + + Adjacent Lanes + เธŠเนˆเธญเธ‡เธ—เธฒเธ‡เธ‚เน‰เธฒเธ‡เน€เธ„เธตเธขเธ‡ + + + <b>Show the driving paths for the left and right lanes.</b> + <b>เนเธชเธ”เธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡เธเธฒเธฃเธ‚เธฑเธšเนƒเธ™เธŠเนˆเธญเธ‡เธ—เธฒเธ‡เธ‹เน‰เธฒเธขเนเธฅเธฐเธ‚เธงเธฒ</b> + + + Blind Spot Path + เน€เธชเน‰เธ™เธ—เธฒเธ‡เธˆเธธเธ”เธšเธญเธ” + + + <b>Show a red path when a vehicle is in that lane's blind spot.</b> + <b>เนเธชเธ”เธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡เธชเธตเนเธ”เธ‡เน€เธกเธทเนˆเธญเธกเธตเธฃเธ–เธญเธขเธนเนˆเนƒเธ™เธˆเธธเธ”เธšเธญเธ”เธ‚เธญเธ‡เน€เธฅเธ™เธ™เธฑเน‰เธ™</b> + + + Compass + เน€เธ‚เน‡เธกเธ—เธดเธจ + + + <b>Show the current driving direction</b> with a simple on-screen compass. + <b>เนเธชเธ”เธ‡เธ—เธดเธจเธ—เธฒเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™</b> เธ”เน‰เธงเธขเน€เธ‚เน‡เธกเธ—เธดเธจเธšเธ™เธซเธ™เน‰เธฒเธˆเธญเนเธšเธšเน€เธฃเธตเธขเธšเธ‡เนˆเธฒเธข + + + Driving Personality Button + เธ›เธธเนˆเธกเธšเธธเธ„เธฅเธดเธเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + + + <b>Control and view the current driving personality</b> via a driving screen widget. + <b>เธ„เธงเธšเธ„เธธเธกเนเธฅเธฐเธ”เธนเธšเธธเธ„เธฅเธดเธเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™</b> เธœเนˆเธฒเธ™เธงเธดเธ”เน€เธˆเน‡เธ•เธšเธ™เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ + + + Gas / Brake Pedal Indicators + เธ•เธฑเธงเธšเนˆเธ‡เธŠเธตเน‰เธ„เธฑเธ™เน€เธฃเนˆเธ‡ / เน€เธšเธฃเธ + + + <b>On-screen gas and brake indicators.</b><br><br><b>Dynamic</b>: Opacity changes according to how much openpilot is accelerating or braking<br><b>Static</b>: Full when active, dim when not + <b>เธ•เธฑเธงเธšเนˆเธ‡เธŠเธตเน‰เธ„เธฑเธ™เน€เธฃเนˆเธ‡เนเธฅเธฐเน€เธšเธฃเธเธšเธ™เธซเธ™เน‰เธฒเธˆเธญ</b><br><br><b>เน„เธ”เธ™เธฒเธกเธดเธ</b>: เธ„เธงเธฒเธกเธ—เธถเธšเน€เธ›เธฅเธตเนˆเธขเธ™เน„เธ›เธ•เธฒเธกเธฃเธฐเธ”เธฑเธšเธ—เธตเนˆ openpilot เธเธณเธฅเธฑเธ‡เน€เธฃเนˆเธ‡เธซเธฃเธทเธญเน€เธšเธฃเธ<br><b>เธชเนเธ•เธ•เธดเธ</b>: เน€เธ•เน‡เธกเน€เธกเธทเนˆเธญเนƒเธŠเน‰เธ‡เธฒเธ™ เธˆเธฒเธ‡เน€เธกเธทเนˆเธญเน„เธกเนˆเนƒเธŠเน‰เธ‡เธฒเธ™ + + + Rotating Steering Wheel + เธเธณเธฅเธฑเธ‡เธซเธกเธธเธ™เธžเธงเธ‡เธกเธฒเธฅเธฑเธข + + + <b>Rotate the driving screen wheel</b> with the physical steering wheel. + <b>เธซเธกเธธเธ™เธงเธ‡เธฅเน‰เธญเธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ</b> เธ”เน‰เธงเธขเธžเธงเธ‡เธกเธฒเธฅเธฑเธขเธฃเธ–เธˆเธฃเธดเธ‡ + + + Model UI + UI เธ‚เธญเธ‡เน‚เธกเน€เธ”เธฅ + + + <b>Model visualizations</b> for the driving path, lane lines, path edges, and road edges. + <b>เธเธฒเธฃเนเธชเธ”เธ‡เธœเธฅเธ‚เธญเธ‡เน‚เธกเน€เธ”เธฅ</b> เธชเธณเธซเธฃเธฑเธšเน€เธชเน‰เธ™เธ—เธฒเธ‡เธ‚เธฑเธšเธ‚เธตเนˆ เน€เธชเน‰เธ™เน€เธฅเธ™ เธ‚เธญเธšเน€เธชเน‰เธ™เธ—เธฒเธ‡ เนเธฅเธฐเธ‚เธญเธšเธ–เธ™เธ™ + + + Dynamic Path Width + เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡เนเธšเธšเน„เธ”เธ™เธฒเธกเธดเธ + + + <b>Change the path width based on engagement.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% + <b>เธ›เธฃเธฑเธšเธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡เธ•เธฒเธกเธเธฒเธฃเธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธก</b><br><br><b>เธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเน€เธ•เน‡เธกเธ—เธตเนˆ</b>: 100%<br><b>เธฃเธฐเธšเธšเธšเธฑเธ‡เธ„เธฑเธšเน€เธฅเธตเน‰เธขเธงเธ—เธณเธ‡เธฒเธ™เธ•เธฅเธญเธ”เน€เธงเธฅเธฒ</b>: 75%<br><b>เธขเธเน€เธฅเธดเธเธเธฒเธฃเธ—เธณเธ‡เธฒเธ™</b>: 50% + + + Lane Lines Width + เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡เน€เธชเน‰เธ™เน€เธฅเธ™ + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 4 inches. + <b>เธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ„เธงเธฒเธกเธซเธ™เธฒเธ‚เธญเธ‡เน€เธชเน‰เธ™เนเธšเนˆเธ‡เน€เธฅเธ™</b><br><br>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธ•เธฃเธ‡เธ•เธฒเธกเธกเธฒเธ•เธฃเธเธฒเธ™เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เน€เธชเน‰เธ™เนเธšเนˆเธ‡เน€เธฅเธ™เธ‚เธญเธ‡ MUTCD เธ—เธตเนˆ 4 เธ™เธดเน‰เธง + + + Path Edges Width + เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธšเน€เธชเน‰เธ™เธ—เธฒเธ‡ + + + <b>Set the driving-path edge width</b> that represents different driving modes and statuses.<br><br>Default is 20% of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + <b>เธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธšเน€เธชเน‰เธ™เธ—เธฒเธ‡เธ‚เธฑเธšเธ‚เธตเนˆ</b> เธ—เธตเนˆเนเธชเธ”เธ‡เน‚เธซเธกเธ”เนเธฅเธฐเธชเธ–เธฒเธ™เธฐเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ•เนˆเธฒเธ‡เน†<br><br>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธ„เธทเธญ 20% เธ‚เธญเธ‡เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡เธ—เธฑเน‰เธ‡เธซเธกเธ”<br><br>เธ„เธนเนˆเธกเธทเธญเธชเธต:<br><br>- <b>เธชเธตเธ™เน‰เธณเน€เธ‡เธดเธ™</b>: เธเธฒเธฃเธ™เธณเธ—เธฒเธ‡<br>- <b>เธŸเน‰เธฒเธ™เน‰เธณเน€เธ‡เธดเธ™เธญเนˆเธญเธ™</b>: เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡เน€เธ›เธดเธ”เธ•เธฅเธญเธ”เน€เธงเธฅเธฒ<br>- <b>เธชเธตเน€เธ‚เธตเธขเธง</b>: เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™<br>- <b>เธชเธตเธชเน‰เธก</b>: เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡<br>- <b>เธชเธตเนเธ”เธ‡</b>: เน‚เธซเธกเธ”เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ<br>- <b>เธชเธตเน€เธซเธฅเธทเธญเธ‡</b>: เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡เธ•เธฒเธกเน€เธ‡เธทเนˆเธญเธ™เน„เธ‚เธ–เธนเธเนเธ—เธ™เธ—เธตเนˆ + + + Path Width + เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡ + + + <b>Set the driving-path width.</b><br><br>Default (6.1 feet) matches the width of a 2019 Lexus ES 350. + <b>เธ•เธฑเน‰เธ‡เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ</b><br><br>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ (6.1 เธŸเธธเธ•) เธ•เธฃเธ‡เธเธฑเธšเธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡ Lexus ES 350 เธ›เธต 2019 + + + Road Edges Width + เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธšเธ–เธ™เธ™ + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 4 inches. + <b>เธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ„เธงเธฒเธกเธซเธ™เธฒเธ‚เธญเธ‡เธ‚เธญเธšเธ–เธ™เธ™</b><br><br>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เน€เธ—เนˆเธฒเธเธฑเธšเธ„เธฃเธถเนˆเธ‡เธซเธ™เธถเนˆเธ‡เธ‚เธญเธ‡เธกเธฒเธ•เธฃเธเธฒเธ™เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เน€เธชเน‰เธ™เนเธšเนˆเธ‡เน€เธฅเธ™ MUTCD เธ—เธตเนˆ 4 เธ™เธดเน‰เธง + + + "Unlimited" Road UI + เธชเนˆเธงเธ™เธ•เนˆเธญเธ›เธฃเธฐเธชเธฒเธ™เธ–เธ™เธ™เนเธšเธš "เน„เธกเนˆเธˆเธณเธเธฑเธ”" + + + <b>Extend the length of the driving path, lane lines, and road edges</b> for as far as the model can see. + <b>เธ‚เธขเธฒเธขเธ„เธงเธฒเธกเธขเธฒเธงเธ‚เธญเธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡เธ‚เธฑเธšเธ‚เธตเนˆ เน€เธชเน‰เธ™เนเธšเนˆเธ‡เน€เธฅเธ™ เนเธฅเธฐเธ‚เธญเธšเธ–เธ™เธ™</b> เนƒเธซเน‰เน„เธเธฅเน€เธ—เนˆเธฒเธ—เธตเนˆเน‚เธกเน€เธ”เธฅเธชเธฒเธกเธฒเธฃเธ–เธกเธญเธ‡เน€เธซเน‡เธ™เน„เธ”เน‰ + + + Navigation Widgets + เธงเธดเธ”เน€เธˆเน‡เธ•เธ™เธณเธ—เธฒเธ‡ + + + <b>Map style, speed limits, and other navigation widgets.</b> + <b>เธชเน„เธ•เธฅเนŒเนเธœเธ™เธ—เธตเนˆ เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง เนเธฅเธฐเธงเธดเธ”เน€เธˆเน‡เธ•เธ™เธณเธ—เธฒเธ‡เธญเธทเนˆเธ™เน†</b> + + + Larger Map Display + เนเธชเธ”เธ‡เนเธœเธ™เธ—เธตเนˆเธ‚เธ™เธฒเธ”เนƒเธซเธเนˆ + + + <b>Increase the map size</b> for easier navigation readings. + <b>เน€เธžเธดเนˆเธกเธ‚เธ™เธฒเธ”เนเธœเธ™เธ—เธตเนˆ</b> เน€เธžเธทเนˆเธญเนƒเธซเน‰เธญเนˆเธฒเธ™เธเธฒเธฃเธ™เธณเธ—เธฒเธ‡เน„เธ”เน‰เธ‡เนˆเธฒเธขเธ‚เธถเน‰เธ™ + + + Map Style + เธชเน„เธ•เธฅเนŒเนเธœเธ™เธ—เธตเนˆ + + + <b>Select the map style</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai style<br><b>FrogPilot</b>: Official FrogPilot map style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>Mike's Personalized Style</b>: Customized hybrid satellite view + <b>เน€เธฅเธทเธญเธเธชเน„เธ•เธฅเนŒเนเธœเธ™เธ—เธตเนˆ</b> เธชเธณเธซเธฃเธฑเธš "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: เธชเน„เธ•เธฅเนŒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธ‚เธญเธ‡ comma.ai<br><b>FrogPilot</b>: เธชเน„เธ•เธฅเนŒเนเธœเธ™เธ—เธตเนˆเธญเธขเนˆเธฒเธ‡เน€เธ›เน‡เธ™เธ—เธฒเธ‡เธเธฒเธฃเธ‚เธญเธ‡ FrogPilot<br><b>Mapbox Streets</b>: เธกเธธเธกเธกเธญเธ‡เธกเธฒเธ•เธฃเธเธฒเธ™เธ—เธตเนˆเน€เธ™เน‰เธ™เธ–เธ™เธ™<br><b>Mapbox Outdoors</b>: เน€เธ™เน‰เธ™เธเธดเธˆเธเธฃเธฃเธกเธเธฅเธฒเธ‡เนเธˆเน‰เธ‡เนเธฅเธฐเธฅเธฑเธเธฉเธ“เธฐเธ เธนเธกเธดเธ›เธฃเธฐเน€เธ—เธจ<br><b>Mapbox Light</b>: เธ˜เธตเธกเธกเธดเธ™เธดเธกเธญเธฅ เน‚เธ—เธ™เธชเธงเนˆเธฒเธ‡<br><b>Mapbox Dark</b>: เธ˜เธตเธกเธกเธดเธ™เธดเธกเธญเธฅ เน‚เธ—เธ™เธกเธทเธ”<br><b>Mapbox Navigation Day</b>: เธ›เธฃเธฑเธšเนƒเธซเน‰เน€เธซเธกเธฒเธฐเธเธฑเธšเธเธฒเธฃเธ™เธณเธ—เธฒเธ‡เธ•เธญเธ™เธเธฅเธฒเธ‡เธงเธฑเธ™<br><b>Mapbox Navigation Night</b>: เธ›เธฃเธฑเธšเนƒเธซเน‰เน€เธซเธกเธฒเธฐเธเธฑเธšเธเธฒเธฃเธ™เธณเธ—เธฒเธ‡เธ•เธญเธ™เธเธฅเธฒเธ‡เธ„เธทเธ™<br><b>Mapbox Satellite</b>: เน€เธ‰เธžเธฒเธฐเธ เธฒเธžเธ–เนˆเธฒเธขเธ”เธฒเธงเน€เธ—เธตเธขเธก<br><b>Mapbox Satellite Streets</b>: เธกเธธเธกเธกเธญเธ‡เน„เธฎเธšเธฃเธดเธ”เธ เธฒเธžเธ–เนˆเธฒเธขเธ”เธฒเธงเน€เธ—เธตเธขเธกเธžเธฃเน‰เธญเธกเธ›เน‰เธฒเธขเธ–เธ™เธ™<br><b>Mapbox Traffic Night</b>: เธ˜เธตเธกเธกเธทเธ”เธ—เธตเนˆเน€เธ™เน‰เธ™เธชเธ เธฒเธžเธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ<br><b>Mike's Personalized Style</b>: เธกเธธเธกเธกเธญเธ‡เน„เธฎเธšเธฃเธดเธ”เธ เธฒเธžเธ–เนˆเธฒเธขเธ”เธฒเธงเน€เธ—เธตเธขเธกเนเธšเธšเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เน€เธญเธ‡ + + + Road Name + เธŠเธทเนˆเธญเธ–เธ™เธ™ + + + <b>Display the road name at the bottom of the driving screen</b> using data from "OpenStreetMap (OSM)". + <b>เนเธชเธ”เธ‡เธŠเธทเนˆเธญเธ–เธ™เธ™เธ—เธตเนˆเธ”เน‰เธฒเธ™เธฅเนˆเธฒเธ‡เธ‚เธญเธ‡เธซเธ™เน‰เธฒเธˆเธญเธ‚เธฑเธšเธ‚เธตเนˆ</b> เน‚เธ”เธขเนƒเธŠเน‰เธ‚เน‰เธญเธกเธนเธฅเธˆเธฒเธ "OpenStreetMap (OSM)" + + + Show Speed Limits + เนเธชเธ”เธ‡เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง + + + <b>Show speed limits</b> in the top-left corner of the driving screen. Uses data from the car's dashboard (if supported) and "OpenStreetMap (OSM)". + <b>เนเธชเธ”เธ‡เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธง</b> เธ—เธตเนˆเธกเธธเธกเธ‹เน‰เธฒเธขเธšเธ™เธ‚เธญเธ‡เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆ เนƒเธŠเน‰เธ‚เน‰เธญเธกเธนเธฅเธˆเธฒเธเนเธœเธ‡เธซเธ™เน‰เธฒเธ›เธฑเธ”เธ‚เธญเธ‡เธฃเธ– (เธซเธฒเธเธฃเธญเธ‡เธฃเธฑเธš) เนเธฅเธฐ "OpenStreetMap (OSM)" + + + Show Speed Limits from Mapbox + เนเธชเธ”เธ‡เธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธˆเธฒเธ Mapbox + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>เนƒเธŠเน‰เธ‚เน‰เธญเธกเธนเธฅเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธˆเธฒเธ Mapbox เน€เธกเธทเนˆเธญเน„เธกเนˆเธกเธตเนเธซเธฅเนˆเธ‡เธ‚เน‰เธญเธกเธนเธฅเธญเธทเนˆเธ™</b> + + + Use Vienna-Style Speed Signs + เนƒเธŠเน‰เธ›เน‰เธฒเธขเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเนเธšเธšเน€เธงเธตเธขเธ™เธ™เธฒ + + + <b>Show Vienna-style (EU) speed-limit signs</b> instead of MUTCD (US). + <b>เนเธชเธ”เธ‡เธ›เน‰เธฒเธขเธˆเธณเธเธฑเธ”เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธชเน„เธ•เธฅเนŒเน€เธงเธตเธขเธ™เธ™เธฒ (EU)</b> เนเธ—เธ™ MUTCD (US) + + + Quality of Life + เธ„เธธเธ“เธ เธฒเธžเธŠเธตเธงเธดเธ• + + + <b>Miscellaneous visual changes</b> to fine-tune how the driving screen looks. + <b>เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ เธฒเธžเธญเธทเนˆเธ™เน†</b> เน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธซเธ™เน‰เธฒเธˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเนƒเธซเน‰เน€เธซเธกเธฒเธฐเธชเธกเธขเธดเนˆเธ‡เธ‚เธถเน‰เธ™ + + + Camera View + เธกเธธเธกเธกเธญเธ‡เธเธฅเน‰เธญเธ‡ + + + <b>Select the active camera view.</b> This is purely a visual change and doesn't impact how openpilot drives! + <b>เน€เธฅเธทเธญเธเธกเธธเธกเธกเธญเธ‡เธเธฅเน‰เธญเธ‡เธ—เธตเนˆเนƒเธŠเน‰เธ‡เธฒเธ™เธญเธขเธนเนˆ</b> เธ™เธตเนˆเน€เธ›เน‡เธ™เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ”เน‰เธฒเธ™เธ เธฒเธžเน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™เนเธฅเธฐเน„เธกเนˆเธเธฃเธฐเธ—เธšเธ•เนˆเธญเธเธฒเธฃเธ‚เธฑเธšเธ‚เธญเธ‡ openpilot! + + + Show Driver Camera When In Reverse + เนเธชเธ”เธ‡เธเธฅเน‰เธญเธ‡เธ„เธ™เธ‚เธฑเธšเน€เธกเธทเนˆเธญเธ–เธญเธขเธซเธฅเธฑเธ‡ + + + <b>Show the driver camera feed</b> when the vehicle is in reverse. + <b>เนเธชเธ”เธ‡เธŸเธตเธ”เธเธฅเน‰เธญเธ‡เธ„เธ™เธ‚เธฑเธš</b> เน€เธกเธทเนˆเธญเธฃเธ–เธญเธขเธนเนˆเน€เธเธตเธขเธฃเนŒเธ–เธญเธขเธซเธฅเธฑเธ‡ + + + Stopped Timer + เธ•เธฑเธงเธˆเธฑเธšเน€เธงเธฅเธฒเธซเธขเธธเธ”เนเธฅเน‰เธง + + + <b>Show a timer when stopped</b> in place of the current speed to indicate how long the vehicle has been stopped. + <b>เนเธชเธ”เธ‡เธ•เธฑเธงเธˆเธฑเธšเน€เธงเธฅเธฒเธ‚เธ“เธฐเธซเธขเธธเธ”</b> เนเธ—เธ™เธ„เธงเธฒเธกเน€เธฃเน‡เธงเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™เน€เธžเธทเนˆเธญเนเธชเธ”เธ‡เธฃเธฐเธขเธฐเน€เธงเธฅเธฒเธ—เธตเนˆเธฃเธ–เธซเธขเธธเธ”เธญเธขเธนเนˆ + + + Hide Map + เธ‹เนˆเธญเธ™เนเธœเธ™เธ—เธตเนˆ + + + Blind Spot + เธˆเธธเธ”เธšเธญเธ” + + + Steering Torque + เนเธฃเธ‡เธšเธดเธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธข + + + Turn Signal + เธชเธฑเธเธเธฒเธ“เน„เธŸเน€เธฅเธตเน‰เธขเธง + + + Fahrenheit + เธŸเธฒเน€เธฃเธ™เน„เธฎเธ•เนŒ + + + CPU + เธ‹เธตเธžเธตเธขเธน + + + GPU + GPU + + + IP + เน„เธญเธžเธต + + + RAM + RAM + + + SSD Left + SSD เธ—เธตเนˆเน€เธซเธฅเธทเธญ + + + SSD Used + เนƒเธŠเน‰ SSD + + + None + เน„เธกเนˆเธกเธต + + + Acceleration: Current + เธญเธฑเธ•เธฃเธฒเน€เธฃเนˆเธ‡: เธ›เธฑเธˆเธˆเธธเธšเธฑเธ™ + + + Acceleration: Max + เธญเธฑเธ•เธฃเธฒเน€เธฃเนˆเธ‡: เธชเธนเธ‡เธชเธธเธ” + + + Auto Tune: Actuator Delay + เธ›เธฃเธฑเธšเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด: เธซเธ™เนˆเธงเธ‡เนเธญเธ„เธ—เธนเน€เธญเน€เธ•เธญเธฃเนŒ + + + Auto Tune: Friction + เธ›เธฃเธฑเธšเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด: เนเธฃเธ‡เน€เธชเธตเธขเธ”เธ—เธฒเธ™ + + + Auto Tune: Lateral Acceleration + เธ›เธฃเธฑเธšเธˆเธนเธ™เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด: เธ„เธงเธฒเธกเน€เธฃเนˆเธ‡เธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡ + + + Auto Tune: Steer Ratio + เธ›เธฃเธฑเธšเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด: เธญเธฑเธ•เธฃเธฒเธ—เธ”เธžเธงเธ‡เธกเธฒเธฅเธฑเธข + + + Auto Tune: Stiffness Factor + เธ›เธฃเธฑเธšเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด: เธ„เนˆเธฒเธชเธฑเธกเธ›เธฃเธฐเธชเธดเธ—เธ˜เธดเนŒเธ„เธงเธฒเธกเนเธ‚เน‡เธ‡ + + + Engagement %: Lateral + เธเธฒเธฃเธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธก %: เธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡ + + + Engagement %: Longitudinal + เธเธฒเธฃเธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธก %: เธ•เธฒเธกเธขเธฒเธง + + + Lateral Control: Steering Angle + เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡: เธกเธธเธกเธžเธงเธ‡เธกเธฒเธฅเธฑเธข + + + Lateral Control: Torque % Used + เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡: เนƒเธŠเน‰เนเธฃเธ‡เธšเธดเธ” % + + + Longitudinal Control: Actuator Acceleration Output + เธเธฒเธฃเธ„เธงเธšเธ„เธธเธกเธ•เธฒเธกเนเธ™เธงเธขเธฒเธง: เน€เธญเธฒเธ•เนŒเธžเธธเธ•เธ„เธงเธฒเธกเน€เธฃเนˆเธ‡เธ‚เธญเธ‡เนเธญเธ„เธŠเธนเน€เธญเน€เธ•เธญเธฃเนŒ + + + Longitudinal MPC Jerk: Acceleration + Jerk เธ‚เธญเธ‡ MPC เธ•เธฒเธกเธขเธฒเธง: เธ„เธงเธฒเธกเน€เธฃเนˆเธ‡ + + + Longitudinal MPC Jerk: Danger Zone + เธเธฒเธฃเธชเธฐเธšเธฑเธ”เธ‚เธญเธ‡ MPC เธ•เธฒเธกเธขเธฒเธง: เน€เธ‚เธ•เธญเธฑเธ™เธ•เธฃเธฒเธข + + + Longitudinal MPC Jerk: Speed Control + เธ„เธงเธฒเธกเธเธฃเธฐเธ•เธธเธเธ‚เธญเธ‡ MPC เธ•เธฒเธกเธขเธฒเธง: เธ„เธงเธšเธ„เธธเธกเธ„เธงเธฒเธกเน€เธฃเน‡เธง + + + SELECT + เน€เธฅเธทเธญเธ + + + Select a metric to display + เน€เธฅเธทเธญเธเธ•เธฑเธงเธŠเธตเน‰เธงเธฑเธ”เธ—เธตเนˆเธˆเธฐเนเธชเธ”เธ‡ + + + Show Distance + เนเธชเธ”เธ‡เธฃเธฐเธขเธฐเธ—เธฒเธ‡ + + + Dynamic + เน„เธ”เธ™เธฒเธกเธดเธ + + + Static + เธ„เธ‡เธ—เธตเนˆ + + + inches + เธ™เธดเน‰เธง + + + Off + เธ›เธดเธ” + + + feet + เธŸเธธเธ• + + + Full Map + เนเธœเธ™เธ—เธตเนˆเน€เธ•เน‡เธก + + + Stock openpilot + openpilot เธกเธฒเธ•เธฃเธเธฒเธ™ + + + FrogPilot + FrogPilot + + + Mapbox Streets + Mapbox Streets + + + Mapbox Outdoors + Mapbox Outdoors + + + Mapbox Light + Mapbox Light + + + Mapbox Dark + Mapbox Dark + + + Mapbox Navigation Day + Mapbox Navigation Day + + + Mapbox Navigation Night + เธเธฒเธฃเธ™เธณเธ—เธฒเธ‡ Mapbox (เธเธฅเธฒเธ‡เธ„เธทเธ™) + + + Mapbox Satellite + Mapbox เธ”เธฒเธงเน€เธ—เธตเธขเธก + + + Mapbox Satellite Streets + เนเธœเธ™เธ—เธตเนˆเธ”เธฒเธงเน€เธ—เธตเธขเธกเธ–เธ™เธ™เธ‚เธญเธ‡ Mapbox + + + Mapbox Traffic Night + เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ Mapbox (เธเธฅเธฒเธ‡เธ„เธทเธ™) + + + Mike's Personalized Style + เธชเน„เธ•เธฅเนŒเน€เธ‰เธžเธฒเธฐเธ•เธฑเธงเธ‚เธญเธ‡ Mike + + + Select a map style + เน€เธฅเธทเธญเธเธชเน„เธ•เธฅเนŒเนเธœเธ™เธ—เธตเนˆ + + + Auto + เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด + + + Driver + เธœเธนเน‰เธ‚เธฑเธšเธ‚เธตเนˆ + + + Standard + เธกเธฒเธ•เธฃเธเธฒเธ™ + + + Wide + เธเธงเน‰เธฒเธ‡ + + + foot + เธŸเธธเธ• + + + inch + เธ™เธดเน‰เธง + + + meter + เน€เธกเธ•เธฃ + + + meters + เน€เธกเธ•เธฃ + + + centimeter + เน€เธ‹เธ™เธ•เธดเน€เธกเธ•เธฃ + + + centimeters + เน€เธ‹เธ™เธ•เธดเน€เธกเธ•เธฃ + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 10 centimeters. + <b>เธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ„เธงเธฒเธกเธซเธ™เธฒเธ‚เธญเธ‡เน€เธชเน‰เธ™เนเธšเนˆเธ‡เน€เธฅเธ™</b><br><br>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธ•เธฃเธ‡เธ•เธฒเธกเธกเธฒเธ•เธฃเธเธฒเธ™เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เน€เธชเน‰เธ™เนเธšเนˆเธ‡เน€เธฅเธ™เธ‚เธญเธ‡ MUTCD เธ—เธตเนˆ 10 เน€เธ‹เธ™เธ•เธดเน€เธกเธ•เธฃ + + + <b>Set the driving-path width.</b><br><br>Default (1.9 meters) matches the width of a 2019 Lexus ES 350. + <b>เธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡เน€เธชเน‰เธ™เธ—เธฒเธ‡เธ‚เธฑเธšเธ‚เธตเนˆ</b><br><br>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™ (1.9 เน€เธกเธ•เธฃ) เธ•เธฃเธ‡เธเธฑเธšเธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เธ‚เธญเธ‡ Lexus ES 350 เธ›เธต 2019 + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 10 centimeters. + <b>เธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ„เธงเธฒเธกเธซเธ™เธฒเธ‚เธญเธ‡เธ‚เธญเธšเธ–เธ™เธ™</b><br><br>เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เน€เธ—เนˆเธฒเธเธฑเธšเธ„เธฃเธถเนˆเธ‡เธซเธ™เธถเนˆเธ‡เธ‚เธญเธ‡เธกเธฒเธ•เธฃเธเธฒเธ™เธ„เธงเธฒเธกเธเธงเน‰เธฒเธ‡เน€เธชเน‰เธ™เนเธšเนˆเธ‡เธŠเนˆเธญเธ‡เธˆเธฃเธฒเธˆเธฃเธ‚เธญเธ‡ MUTCD เธ—เธตเนˆ 10 เน€เธ‹เธ™เธ•เธดเน€เธกเธ•เธฃ FrogPilotWheelPanel Distance Button - เธ›เธธเนˆเธกเธฃเธฐเธขเธฐเธ—เธฒเธ‡ + เธ›เธธเนˆเธกเธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡ - The action for a short press of the <b>Distance</b> button. - เธเธฒเธฃเธเธฃเธฐเธ—เธณเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธเธ”เธ›เธธเนˆเธก <b>Distance</b> เธชเธฑเน‰เธ™ เน† + <b>Action performed when the "Distance" button is pressed.</b> + <b>เธเธฒเธฃเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ—เธตเนˆเน€เธเธดเธ”เธ‚เธถเน‰เธ™เน€เธกเธทเนˆเธญเธเธ”เธ›เธธเนˆเธก "Distance"</b> Distance Button (Long Press) - เธ›เธธเนˆเธกเธฃเธฐเธขเธฐเธ—เธฒเธ‡ (เธเธ”เธ„เน‰เธฒเธ‡) + เธ›เธธเนˆเธกเธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡ (เธเธ”เธ„เน‰เธฒเธ‡) - The action for a 0.5+ second press of the <b>Distance</b> button. - เธเธฒเธฃเธเธฃเธฐเธ—เธณเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธเธ”เธ›เธธเนˆเธก <b>Distance</b> เธ„เน‰เธฒเธ‡เน„เธงเน‰ 0.5+ เธงเธดเธ™เธฒเธ—เธต + <b>Action performed when the "Distance" button is pressed for more than 0.5 seconds.</b> + <b>เธเธฒเธฃเธเธฃเธฐเธ—เธณเน€เธกเธทเนˆเธญเธเธ”เธ›เธธเนˆเธก "เธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡" เธ„เน‰เธฒเธ‡เน„เธงเน‰เธ™เธฒเธ™เธเธงเนˆเธฒ 0.5 เธงเธดเธ™เธฒเธ—เธต</b> Distance Button (Very Long Press) - เธ›เธธเนˆเธกเธฃเธฐเธขเธฐเธ—เธฒเธ‡ (เธเธ”เธ„เน‰เธฒเธ‡เน„เธงเน‰เธ™เธฒเธ™) + เธ›เธธเนˆเธกเธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡ (เธเธ”เธ„เน‰เธฒเธ‡เธ™เธฒเธ™เธกเธฒเธ) - The action for a 2.5+ second press of the <b>Distance</b> button. - เธเธฒเธฃเธเธฃเธฐเธ—เธณเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธเธ”เธ›เธธเนˆเธก <b>Distance</b> เธ„เน‰เธฒเธ‡เน„เธงเน‰ 2.5+ เธงเธดเธ™เธฒเธ—เธต + <b>Action performed when the "Distance" button is pressed for more than 2.5 seconds.</b> + <b>เธเธฒเธฃเธ—เธณเธ‡เธฒเธ™เน€เธกเธทเนˆเธญเธเธ”เธ›เธธเนˆเธก "เธฃเธฐเธขเธฐเธซเนˆเธฒเธ‡" เธ„เน‰เธฒเธ‡เน„เธงเน‰เธ™เธฒเธ™เธเธงเนˆเธฒ 2.5 เธงเธดเธ™เธฒเธ—เธต</b> LKAS Button - เธ›เธธเนˆเธก LKAS + เธ›เธธเนˆเธก LKAS - The action for pressing the <b>LKAS</b> button. - เธเธฒเธฃเธเธฃเธฐเธ—เธณเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธเธ”เธ›เธธเนˆเธก <b>LKAS</b>. + <b>Action performed when the "LKAS" button is pressed.</b> + <b>เธเธฒเธฃเธเธฃเธฐเธ—เธณเธ—เธตเนˆเน€เธเธดเธ”เธ‚เธถเน‰เธ™เน€เธกเธทเนˆเธญเธเธ”เธ›เธธเนˆเธก "LKAS"</b> - Nothing - เน„เธกเนˆเธกเธตเธญเธฐเน„เธฃ + No Action + เน„เธกเนˆเธกเธตเธเธฒเธฃเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃ - Pause Lateral - เธซเธขเธธเธ”เธŠเธฑเนˆเธงเธ„เธฃเธฒเธงเธ”เน‰เธฒเธ™เธ‚เน‰เธฒเธ‡ + Pause Steering + เธซเธขเธธเธ”เธเธฒเธฃเธšเธฑเธ‡เธ„เธฑเธšเน€เธฅเธตเน‰เธขเธงเธŠเธฑเนˆเธงเธ„เธฃเธฒเธง Change "Personality Profile" - เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž + เน€เธ›เธฅเธตเนˆเธขเธ™ "เน‚เธ›เธฃเน„เธŸเธฅเนŒเธšเธธเธ„เธฅเธดเธเธ เธฒเธž" Force openpilot to Coast - เธšเธฑเธ‡เธ„เธฑเธšเนƒเธซเน‰ openpilot เนƒเธŠเน‰ Coast + เธšเธฑเธ‡เธ„เธฑเธšเนƒเธซเน‰ openpilot Coast - Pause Longitudinal - เธซเธขเธธเธ”เธ•เธฒเธกเธขเธฒเธง + Pause Acceleration/Braking + เธžเธฑเธเธเธฒเธฃเน€เธฃเนˆเธ‡/เน€เธšเธฃเธ Toggle "Experimental Mode" On/Off - เธชเธฅเธฑเธš "เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡" เน€เธ›เธดเธ”/เธ›เธดเธ” + เธชเธฅเธฑเธš "เน‚เธซเธกเธ”เธ—เธ”เธฅเธญเธ‡" เน€เธ›เธดเธ”/เธ›เธดเธ” Toggle "Traffic Mode" On/Off - เธชเธฅเธฑเธš "เน‚เธซเธกเธ”เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃ" เน€เธ›เธดเธ”/เธ›เธดเธ” + เธชเธฅเธฑเธš โ€œเน‚เธซเธกเธ”เธเธฒเธฃเธˆเธฃเธฒเธˆเธฃโ€ เน€เธ›เธดเธ”/เธ›เธดเธ” SELECT - SELECT + เน€เธฅเธทเธญเธ Select a function to assign to this button - เน€เธฅเธทเธญเธเธŸเธฑเธ‡เธเนŒเธŠเธฑเธ™เธ—เธตเนˆเธˆเธฐเธเธณเธซเธ™เธ”เนƒเธซเน‰เธเธฑเธšเธ›เธธเนˆเธกเธ™เธตเน‰ + เน€เธฅเธทเธญเธเธŸเธฑเธ‡เธเนŒเธŠเธฑเธ™เน€เธžเธทเนˆเธญเธเธณเธซเธ™เธ”เนƒเธซเน‰เธ›เธธเนˆเธกเธ™เธตเน‰ @@ -4293,7 +4408,7 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Characters: %1/%2 - เธ•เธฑเธงเธญเธฑเธเธฉเธฃ: %1/%2 + เธญเธฑเธเธ‚เธฃเธฐ: %1/%2 @@ -4326,7 +4441,7 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Manage at %1 - เธˆเธฑเธ”เธเธฒเธฃเธ—เธตเนˆ %1 + เธˆเธฑเธ”เธเธฒเธฃเธ—เธตเนˆ %1 @@ -4344,57 +4459,6 @@ Want to submit your own animations? Share them in the "custom-themes" channel on เธเธณเธฅเธฑเธ‡เธฃเธญเน€เธชเน‰เธ™เธ—เธฒเธ‡ - - ModelReview - - How would you rate that drive? - เธ„เธธเธ“เธˆเธฐเนƒเธซเน‰เธ„เธฐเนเธ™เธ™เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ™เธฑเน‰เธ™เธญเธขเนˆเธฒเธ‡เน„เธฃ? - - - Blacklist this model - เธ‚เธถเน‰เธ™เธšเธฑเธเธŠเธตเธ”เธณเน‚เธกเน€เธ”เธฅเธ™เธตเน‰ - - - The model used during that drive was: - เน‚เธกเน€เธ”เธฅเธ—เธตเนˆเนƒเธŠเน‰เนƒเธ™เธฃเธฐเธซเธงเนˆเธฒเธ‡เธเธฒเธฃเธ‚เธฑเธšเธ‚เธตเนˆเธ™เธฑเน‰เธ™เธ„เธทเธญ: - - - Current Model Score: 0 - เธ„เธฐเนเธ™เธ™เน‚เธกเน€เธ”เธฅเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™: 0 - - - Current Model Rank: 0 - เธญเธฑเธ™เธ”เธฑเธšเน‚เธกเน€เธ”เธฅเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™: 0 - - - Total Model Drives: 0 - เน„เธ”เธฃเธŸเนŒเธฃเธธเนˆเธ™เธ—เธฑเน‰เธ‡เธซเธกเธ”: 0 - - - Total Overall Model Drives: 0 - เน„เธ”เธฃเธŸเนŒเน‚เธกเน€เธ”เธฅเธ—เธฑเน‰เธ‡เธซเธกเธ”: 0 - - - Total Model Drives: %1 - เน„เธ”เธฃเธŸเนŒเธฃเธธเนˆเธ™เธ—เธฑเน‰เธ‡เธซเธกเธ”: %1 - - - Current Model Rank: %1 - เธญเธฑเธ™เธ”เธฑเธšเน‚เธกเน€เธ”เธฅเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™: %1 - - - Current Model Score: %1 - เธ„เธฐเนเธ™เธ™เน‚เธกเน€เธ”เธฅเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™: %1 - - - Total Overall Drives: %1 - เน„เธ”เธฃเธŸเนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”: %1 - - - Model successfully blacklisted! - เน‚เธกเน€เธ”เธฅเธ–เธนเธเธ‚เธถเน‰เธ™เธšเธฑเธเธŠเธตเธ”เธณเน€เธฃเธตเธขเธšเธฃเน‰เธญเธขเนเธฅเน‰เธง! - - MultiOptionDialog @@ -4515,17 +4579,17 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Reboot Device เธฃเธตเธšเธนเธ•เธญเธธเธ›เธเธฃเธ“เนŒ - - openpilot crashed ๐Ÿ’ฉ - openpilot เธ‚เธฑเธ”เธ‚เน‰เธญเธ‡ ๐Ÿ’ฉ - openpilot crashed - openpilot เธ‚เธฑเธ”เธ‚เน‰เธญเธ‡ + openpilot เธ‚เธฑเธ”เธ‚เน‰เธญเธ‡ Please post the "Error Log" in the FrogPilot Discord! - เน‚เธ›เธฃเธ”เน‚เธžเธชเธ•เนŒ "Error Log" เนƒเธ™ FrogPilot Discord! + เน‚เธ›เธฃเธ”เน‚เธžเธชเธ•เนŒ "Error Log" เนƒเธ™ Discord เธ‚เธญเธ‡ FrogPilot! + + + openpilot crashed ๐Ÿ’ฉ + openpilot เธ‚เธฑเธ”เธ‚เน‰เธญเธ‡ ๐Ÿ’ฉ @@ -4536,15 +4600,15 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Pair your device to your %1 account - เธˆเธฑเธšเธ„เธนเนˆเธเธฑเธšเธšเธฑเธเธŠเธต %1 เธ‚เธญเธ‡เธ„เธธเธ“ + เธˆเธฑเธšเธ„เธนเนˆเธ”เธตเน„เธงเธ‹เนŒเธ‚เธญเธ‡เธ„เธธเธ“เธเธฑเธšเธšเธฑเธเธŠเธต %1 เธ‚เธญเธ‡เธ„เธธเธ“ Go to https://%1 on your phone - เน„เธ›เธ—เธตเนˆ https://%1 เธšเธ™เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธ‚เธญเธ‡เธ„เธธเธ“ + เน„เธ›เธ—เธตเนˆ https://%1 เธšเธ™เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธ‚เธญเธ‡เธ„เธธเธ“ Bookmark %1 to your home screen to use it like an app - เธšเธธเนŠเธเธกเธฒเธฃเนŒเธ %1 เน„เธ›เธขเธฑเธ‡เธซเธ™เน‰เธฒเธˆเธญเธซเธฅเธฑเธเธ‚เธญเธ‡เธ„เธธเธ“เน€เธžเธทเนˆเธญเนƒเธŠเน‰เธ‡เธฒเธ™เน€เธซเธกเธทเธญเธ™เนเธญเธ› + เธ„เธฑเนˆเธ™เธซเธ™เน‰เธฒ %1 เน„เธงเน‰เธ—เธตเนˆเธซเธ™เน‰เธฒเธˆเธญเธซเธฅเธฑเธเน€เธžเธทเนˆเธญเนƒเธŠเน‰เธ‡เธฒเธ™เน€เธซเธกเธทเธญเธ™เนเธญเธ› @@ -4645,12 +4709,12 @@ Want to submit your own animations? Share them in the "custom-themes" channel on เธ•เธญเธ™เธ™เธตเน‰ - FrogPilot - FrogPilot + Restore + เธเธนเน‰เธ„เธทเธ™ - Restore - เธ„เธทเธ™เธ„เนˆเธฒ + FrogPilot + FrogPilot @@ -4698,11 +4762,11 @@ This may take up to a minute. ScreenRecorder RECORDING - เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธ + เธเธณเธฅเธฑเธ‡เธšเธฑเธ™เธ—เธถเธ RECORD - เธšเธฑเธ™เธ—เธถเธ + เธšเธฑเธ™เธ—เธถเธ @@ -4725,35 +4789,35 @@ This may take up to a minute. โ† Back - โ† เธเธฅเธฑเธš + โ† เธเธฅเธฑเธš FrogPilot - FrogPilot - - - Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - เธขเธดเธ™เธ”เธตเธ•เน‰เธญเธ™เธฃเธฑเธšเธชเธนเนˆ FrogPilot! เน€เธ™เธทเนˆเธญเธ‡เธˆเธฒเธเธ„เธธเธ“เน€เธ›เน‡เธ™เธœเธนเน‰เนƒเธŠเน‰เนƒเธซเธกเนˆเธ‚เธญเธ‡ FrogPilot เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธฅเนˆเธงเธ‡เธซเธ™เน‰เธฒ "Minimal" เธˆเธถเธ‡เธ–เธนเธเธ™เธณเธกเธฒเนƒเธŠเน‰ เนเธ•เนˆเธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒเธœเนˆเธฒเธ™เธ›เธธเนˆเธก "Tuning Level"! - - - Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - เน€เธ™เธทเนˆเธญเธ‡เธˆเธฒเธเธ„เธธเธ“เธ„เนˆเธญเธ™เธ‚เน‰เธฒเธ‡เนƒเธซเธกเนˆเธเธฑเธš FrogPilot เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธฅเนˆเธงเธ‡เธซเธ™เน‰เธฒ "Minimal" เธˆเธถเธ‡เธ–เธนเธเธ™เธณเธกเธฒเนƒเธŠเน‰ เนเธ•เนˆเธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒเธœเนˆเธฒเธ™เธ›เธธเนˆเธก "Tuning Level"! - - - Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - เน€เธ™เธทเนˆเธญเธ‡เธˆเธฒเธเธ„เธธเธ“เธกเธตเธ›เธฃเธฐเธชเธšเธเธฒเธฃเธ“เนŒเธเธฑเธš openpilot เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธฅเนˆเธงเธ‡เธซเธ™เน‰เธฒ "เธกเธฒเธ•เธฃเธเธฒเธ™" เน„เธ”เน‰เธ–เธนเธเธ™เธณเธกเธฒเนƒเธŠเน‰เนเธฅเน‰เธง เนเธ•เนˆเธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒเธœเนˆเธฒเธ™เธ›เธธเนˆเธก "เธฃเธฐเธ”เธฑเธšเธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡"! - - - Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - เน€เธ™เธทเนˆเธญเธ‡เธˆเธฒเธเธ„เธธเธ“เธกเธตเธ›เธฃเธฐเธชเธšเธเธฒเธฃเธ“เนŒเธเธฑเธš FrogPilot เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธฅเนˆเธงเธ‡เธซเธ™เน‰เธฒ "เธกเธฒเธ•เธฃเธเธฒเธ™" เน„เธ”เน‰เธ–เธนเธเธ™เธณเธกเธฒเนƒเธŠเน‰เนเธฅเน‰เธง เนเธ•เนˆเธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒเธœเนˆเธฒเธ™เธ›เธธเนˆเธก "เธฃเธฐเธ”เธฑเธšเธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡"! - - - Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - เน€เธ™เธทเนˆเธญเธ‡เธˆเธฒเธเธ„เธธเธ“เธกเธตเธ›เธฃเธฐเธชเธšเธเธฒเธฃเธ“เนŒเธกเธฒเธเธเธฑเธš FrogPilot เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธฅเนˆเธงเธ‡เธซเธ™เน‰เธฒ "เธ‚เธฑเน‰เธ™เธชเธนเธ‡" เน„เธ”เน‰เธ–เธนเธเธ™เธณเธกเธฒเนƒเธŠเน‰เนเธฅเน‰เธง เนเธ•เนˆเธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒเธœเนˆเธฒเธ™เธ›เธธเนˆเธก "เธฃเธฐเธ”เธฑเธšเธเธฒเธฃเธ›เธฃเธฑเธšเนเธ•เนˆเธ‡"! + FrogPilot Welcome to FrogPilot! Since you're new to openpilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - เธขเธดเธ™เธ”เธตเธ•เน‰เธญเธ™เธฃเธฑเธšเธชเธนเนˆ FrogPilot! เน€เธ™เธทเนˆเธญเธ‡เธˆเธฒเธเธ„เธธเธ“เน€เธ›เน‡เธ™เธœเธนเน‰เนƒเธŠเน‰เนƒเธซเธกเนˆเธ‚เธญเธ‡ openpilot เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธฅเนˆเธงเธ‡เธซเธ™เน‰เธฒ "Minimal" เธˆเธถเธ‡เธ–เธนเธเธ™เธณเธกเธฒเนƒเธŠเน‰ เนเธ•เนˆเธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒเธœเนˆเธฒเธ™เธ›เธธเนˆเธก "Tuning Level"! + เธขเธดเธ™เธ”เธตเธ•เน‰เธญเธ™เธฃเธฑเธšเธชเธนเนˆ FrogPilot! เน€เธ™เธทเนˆเธญเธ‡เธˆเธฒเธเธ„เธธเธ“เธขเธฑเธ‡เนƒเธซเธกเนˆเธเธฑเธš openpilot เธˆเธถเธ‡เน„เธ”เน‰เนƒเธŠเน‰เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธžเธฃเธตเน€เธ‹เน‡เธ• "Minimal" เนเธ•เนˆเธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เน€เธ›เธฅเธตเนˆเธขเธ™เน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒเธœเนˆเธฒเธ™เธ›เธธเนˆเธก "Tuning Level"! + + + Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + เธขเธดเธ™เธ”เธตเธ•เน‰เธญเธ™เธฃเธฑเธšเธชเธนเนˆ FrogPilot! เน€เธ™เธทเนˆเธญเธ‡เธˆเธฒเธเธ„เธธเธ“เธขเธฑเธ‡เนƒเธซเธกเนˆเธเธฑเธš FrogPilot เธˆเธถเธ‡เน„เธ”เน‰เนƒเธŠเน‰เธžเธฃเธตเน€เธ‹เน‡เธ•เธชเธฅเธฑเธš โ€œMinimalโ€ เน„เธงเน‰เนเธฅเน‰เธง เนเธ•เนˆเธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เน€เธ›เธฅเธตเนˆเธขเธ™เน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒเน‚เธ”เธขเนƒเธŠเน‰เธ›เธธเนˆเธก โ€œTuning Levelโ€! + + + Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + เน€เธ™เธทเนˆเธญเธ‡เธˆเธฒเธเธ„เธธเธ“เธขเธฑเธ‡เนƒเธซเธกเนˆเธเธฑเธš FrogPilot เธˆเธถเธ‡เน„เธ”เน‰เนƒเธŠเน‰เธžเธฃเธตเน€เธ‹เน‡เธ•เธชเธฅเธฑเธš โ€œMinimalโ€ เน„เธงเน‰ เนเธ•เนˆเธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เน€เธ›เธฅเธตเนˆเธขเธ™เน„เธ”เน‰เธ—เธธเธเน€เธกเธทเนˆเธญเธœเนˆเธฒเธ™เธ›เธธเนˆเธก โ€œTuning Levelโ€! + + + Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + เน€เธ™เธทเนˆเธญเธ‡เธˆเธฒเธเธ„เธธเธ“เธ„เธธเน‰เธ™เน€เธ„เธขเธเธฑเธš openpilot เธˆเธถเธ‡เน„เธ”เน‰เนƒเธŠเน‰เธžเธฃเธตเน€เธ‹เน‡เธ•เธชเธฅเธฑเธš โ€œStandardโ€ เนเธฅเน‰เธง เนเธ•เนˆเธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เน€เธ›เธฅเธตเนˆเธขเธ™เน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒเน‚เธ”เธขเนƒเธŠเน‰เธ›เธธเนˆเธก โ€œTuning Levelโ€! + + + Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + เน€เธ™เธทเนˆเธญเธ‡เธˆเธฒเธเธ„เธธเธ“เธ„เธธเน‰เธ™เน€เธ„เธขเธเธฑเธš FrogPilot เธˆเธถเธ‡เน„เธ”เน‰เนƒเธŠเน‰เธžเธฃเธตเน€เธ‹เน‡เธ•เธชเธงเธดเธ•เธŠเนŒ โ€œStandardโ€ เนเธฅเน‰เธง เนเธ•เนˆเธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เน€เธ›เธฅเธตเนˆเธขเธ™เน„เธ”เน‰เธ—เธธเธเน€เธกเธทเนˆเธญเธœเนˆเธฒเธ™เธ›เธธเนˆเธก โ€œTuning Levelโ€! + + + Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + เน€เธ™เธทเนˆเธญเธ‡เธˆเธฒเธเธ„เธธเธ“เธกเธตเธ›เธฃเธฐเธชเธšเธเธฒเธฃเธ“เนŒเธเธฑเธš FrogPilot เธฃเธฐเธ”เธฑเธšเธซเธ™เธถเนˆเธ‡เนเธฅเน‰เธง เธ„เนˆเธฒเธžเธฃเธตเน€เธ‹เน‡เธ• "Advanced" เธˆเธถเธ‡เธ–เธนเธเนƒเธŠเน‰เนƒเธซเน‰เน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด เนเธ•เนˆเธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เน€เธ›เธฅเธตเนˆเธขเธ™เน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒเน‚เธ”เธขเนƒเธŠเน‰เธ›เธธเนˆเธก "Tuning Level"! @@ -4867,7 +4931,7 @@ This may take up to a minute. Pair your device with Konik connect (stable.konik.ai). - เธˆเธฑเธšเธ„เธนเนˆเธเธฑเธšเธญเธธเธ›เธเธฃเธ“เนŒเธ‚เธญเธ‡เธ„เธธเธ“เธ”เน‰เธงเธข Konik connect (stable.konik.ai) + เธˆเธฑเธšเธ„เธนเนˆเน€เธ„เธฃเธทเนˆเธญเธ‡เธกเธทเธญเธ‚เธญเธ‡เธ„เธธเธ“เธเธฑเธš Konik connect (stable.konik.ai) @@ -4954,27 +5018,27 @@ This may take up to a minute. GPU - GPU + GPU CPU - CPU + เธ‹เธตเธžเธตเธขเธน GB - GB + GB MEMORY - เธซเธ™เนˆเธงเธขเธ„เธงเธฒเธกเธˆเธณ + เธซเธ™เนˆเธงเธขเธ„เธงเธฒเธกเธˆเธณ LEFT - เธ‹เน‰เธฒเธข + เธ‹เน‰เธฒเธข USED - เนƒเธŠเน‰เนเธฅเน‰เธง + เนƒเธŠเน‰เนเธฅเน‰เธง @@ -5049,39 +5113,39 @@ This may take up to a minute. Updates are only downloaded while the car is off or in park. - เธเธฒเธฃเธญเธฑเธ›เน€เธ”เธ•เธˆเธฐเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน€เธ‰เธžเธฒเธฐเน€เธกเธทเนˆเธญเธฃเธ–เธ”เธฑเธšเน€เธ„เธฃเธทเนˆเธญเธ‡เธซเธฃเธทเธญเธญเธขเธนเนˆเนƒเธ™เน€เธเธตเธขเธฃเนŒเธˆเธญเธ”เน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™ + เธˆเธฐเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธญเธฑเธ›เน€เธ”เธ•เน„เธ”เน‰เน€เธ‰เธžเธฒเธฐเธ•เธญเธ™เธ—เธตเนˆเธฃเธ–เธ”เธฑเธšเธซเธฃเธทเธญเธญเธขเธนเนˆเนƒเธ™เน€เธเธตเธขเธฃเนŒเธˆเธญเธ”เน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™ Automatically Update FrogPilot - เธญเธฑเธ›เน€เธ”เธ• FrogPilot เน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด - - - Error Log - เธšเธฑเธ™เธ—เธถเธเธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ” - - - VIEW - เธ”เธน - - - View the error log for openpilot crashes. - เธ”เธนเธšเธฑเธ™เธ—เธถเธเธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธ‚เธฑเธ”เธ‚เน‰เธญเธ‡เธ‚เธญเธ‡ openpilot - - - Do you want to delete deep storage FrogPilot assets? This includes your toggle settings for quick reinstalls. - Translation A - - - Are you sure? This is 100% unrecoverable and if you reinstall FrogPilot you'll lose all your previous settings! - เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญ? เธ™เธตเนˆเน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธเธนเน‰เธ„เธทเธ™เน„เธ”เน‰ 100% เนเธฅเธฐเธซเธฒเธเธ„เธธเธ“เธ•เธดเธ”เธ•เธฑเน‰เธ‡ FrogPilot เนƒเธซเธกเนˆ เธ„เธธเธ“เธˆเธฐเธชเธนเธเน€เธชเธตเธขเธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ—เธฑเน‰เธ‡เธซเธกเธ”เธเนˆเธญเธ™เธซเธ™เน‰เธฒเธ™เธตเน‰! - - - This branch must be downloaded before switching. Would you like to download it now? - เธ•เน‰เธญเธ‡เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธชเธฒเธ‚เธฒเธ™เธตเน‰เธเนˆเธญเธ™เธ—เธตเนˆเธˆเธฐเธชเธฅเธฑเธš เธ„เธธเธ“เธ•เน‰เธญเธ‡เธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ•เธญเธ™เธ™เธตเน‰เธซเธฃเธทเธญเน„เธกเนˆ? + เธญเธฑเธ›เน€เธ”เธ• FrogPilot เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด FrogPilot will automatically update itself and it's assets when you're offroad and have an active internet connection. - FrogPilot เธˆเธฐเธญเธฑเธ›เน€เธ”เธ•เธ•เธฑเธงเน€เธญเธ‡เนเธฅเธฐเธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒเน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน€เธกเธทเนˆเธญเธ„เธธเธ“เธญเธขเธนเนˆเธ™เธญเธเธ–เธ™เธ™เนเธฅเธฐเธกเธตเธเธฒเธฃเน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญเธญเธดเธ™เน€เธ—เธญเธฃเนŒเน€เธ™เน‡เธ•เธ—เธตเนˆเนƒเธŠเน‰เธ‡เธฒเธ™เธญเธขเธนเนˆ + FrogPilot เธˆเธฐเธญเธฑเธ›เน€เธ”เธ•เธ•เธฑเธงเน€เธญเธ‡เนเธฅเธฐเนเธญเธชเน€เธ‹เน‡เธ•เน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน€เธกเธทเนˆเธญเธ„เธธเธ“เธญเธขเธนเนˆเธ™เธญเธเธ–เธ™เธ™เนเธฅเธฐเธกเธตเธเธฒเธฃเน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญเธญเธดเธ™เน€เธ—เธญเธฃเนŒเน€เธ™เน‡เธ•เธ—เธตเนˆเนƒเธŠเน‰เธ‡เธฒเธ™เธญเธขเธนเนˆ + + + This branch must be downloaded before switching. Would you like to download it now? + เธ•เน‰เธญเธ‡เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธชเธฒเธ‚เธฒเธ™เธตเน‰เธเนˆเธญเธ™เธˆเธถเธ‡เธˆเธฐเธชเธฅเธฑเธšเน„เธ”เน‰ เธ•เน‰เธญเธ‡เธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ•เธญเธ™เธ™เธตเน‰เธซเธฃเธทเธญเน„เธกเนˆ? + + + Error Log + เธšเธฑเธ™เธ—เธถเธเธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ” + + + VIEW + เธ”เธน + + + View the error log for openpilot crashes. + เธ”เธนเธšเธฑเธ™เธ—เธถเธเธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธ‚เธฑเธ”เธ‚เน‰เธญเธ‡เธ‚เธญเธ‡ openpilot + + + Do you want to perform a full factory reset? All saved assets and settings will be permanently deleted! + เธ„เธธเธ“เธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ•เน€เธ›เน‡เธ™เธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธˆเธฒเธเน‚เธฃเธ‡เธ‡เธฒเธ™เนเธšเธšเน€เธ•เน‡เธกเธซเธฃเธทเธญเน„เธกเนˆ? เนเธญเธชเน€เธ‹เน‡เธ•เนเธฅเธฐเธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ—เธตเนˆเธšเธฑเธ™เธ—เธถเธเธ—เธฑเน‰เธ‡เธซเธกเธ”เธˆเธฐเธ–เธนเธเธฅเธšเธ–เธฒเธงเธฃ! + + + This is a complete factory reset and cannot be undone. Are you absolutely sure you want to continue? + เธ™เธตเนˆเน€เธ›เน‡เธ™เธเธฒเธฃเธฃเธตเน€เธ‹เน‡เธ•เน€เธ›เน‡เธ™เธ„เนˆเธฒเน‚เธฃเธ‡เธ‡เธฒเธ™เนเธšเธšเธชเธกเธšเธนเธฃเธ“เนŒเนเธฅเธฐเน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธขเธเน€เธฅเธดเธเน„เธ”เน‰ เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธญเธขเนˆเธฒเธ‡เธขเธดเนˆเธ‡เธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ•เนˆเธญเธซเธฃเธทเธญเน„เธกเนˆ? @@ -5335,11 +5399,11 @@ This may take up to a minute. Uploading disabled - เธเธฒเธฃเธญเธฑเธ›เน‚เธซเธฅเธ”เธ–เธนเธเธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™ + เธ›เธดเธ”เธเธฒเธฃเธญเธฑเธ›เน‚เธซเธฅเธ” Toggle off the "Turn Off Data Uploads" toggle to re-enable uploads. - เธชเธฅเธฑเธšเธ›เธดเธ”เธเธฒเธฃเธชเธฅเธฑเธš "เธ›เธดเธ”เธเธฒเธฃเธญเธฑเธ›เน‚เธซเธฅเธ”เธ‚เน‰เธญเธกเธนเธฅ" เน€เธžเธทเนˆเธญเน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธเธฒเธฃเธญเธฑเธ›เน‚เธซเธฅเธ”เธญเธตเธเธ„เธฃเธฑเน‰เธ‡ + เธชเธฅเธฑเธšเธ›เธดเธ”เธชเธงเธดเธ•เธŠเนŒ "เธ›เธดเธ”เธเธฒเธฃเธญเธฑเธ›เน‚เธซเธฅเธ”เธ‚เน‰เธญเธกเธนเธฅ" เน€เธžเธทเนˆเธญเน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธเธฒเธฃเธญเธฑเธ›เน‚เธซเธฅเธ”เธญเธตเธเธ„เธฃเธฑเน‰เธ‡ diff --git a/selfdrive/ui/translations/main_tr.ts b/selfdrive/ui/translations/main_tr.ts index b4eb6a27d..5e44b1ce6 100644 --- a/selfdrive/ui/translations/main_tr.ts +++ b/selfdrive/ui/translations/main_tr.ts @@ -60,74 +60,74 @@ Cellular Metered - Hรผcresel ร–lรงรผlรผ + Hรผcresel ร–lรงรผlรผ Prevent large data uploads when on a metered connection - ร–lรงรผlรผ bir baฤŸlantฤฑdayken bรผyรผk veri yรผklemelerini รถnleyin. + ร–lรงรผlรผ bir baฤŸlantฤฑdayken bรผyรผk veri yรผklemelerini รถnle Hidden Network - Gizli AฤŸ + Gizli AฤŸ CONNECT - BAฤžLAN + BAฤžLAN Enter SSID - SSID girin + SSID Girin Enter password - ลžifreyi girin + Parolayฤฑ girin for "%1" - iรงin "%1" + "%1" iรงin Off - Kapalฤฑ + Kapalฤฑ Always - Her zaman + Her zaman Only Onroad - Sadece Onroad + Yalnฤฑzca Yolda Until Reboot - Yeniden BaลŸlatฤฑlana Kadar + Yeniden BaลŸlatฤฑlana Kadar Allow tethering with your data SIM and keep it active either while driving or continuously. - Veri SIM kartฤฑnฤฑzla baฤŸlantฤฑ paylaลŸฤฑmฤฑna izin verin ve bunu sรผrรผลŸ sฤฑrasฤฑnda veya sรผrekli olarak aktif tutun. + Veri SIMโ€™inizle baฤŸlama (tethering) izni verin ve bunu sรผrรผลŸ sฤฑrasฤฑnda veya sรผrekli olarak aktif tutun. AnnotatedCameraWidget km/h - km/h + km/s mph - mph + mil/s MAX - MAKSIMUM + MAKSIMUM SPEED - HIZ + HIZ LIMIT - SINIR + LฤฐMฤฐT @@ -160,98 +160,98 @@ DestinationWidget Home - Ev + Ana Sayfa Work - ร‡alฤฑลŸmak + ร‡alฤฑลŸma No destination set - Hedef ayarlanmadฤฑ + Hedef ayarlanmadฤฑ home - ev + ana sayfa work - รงalฤฑลŸmak + รงalฤฑลŸma No %1 location set - Hiรงbir %1 konumu ayarlanmadฤฑ + %1 konumu ayarlanmadฤฑ DeveloperSidebar m/sยฒ - m/sยฒ + m/sยฒ ft/sยฒ - ft/sยฒ + ft/snยฒ ACCEL - ACCEL + GAZ ACCEL JERK - ACCEL JERK + ฤฐVMELENME Sฤฐร‡RAMASI ACT ACCEL - HAREKET HIZLANDIRICI + ACT HIZLAN DANGER JERK - TEHLฤฐKE GERฤฐZEKALI + TEHLฤฐKE Sฤฐร‡RAMA STEER DELAY - Yร–NLENDฤฐRME GECฤฐKMESฤฐ + DฤฐREKSฤฐYON GECฤฐKMESฤฐ FRICTION - Sรผrtรผnme + SรœRรœNME FRENฤฐ LAT ACCEL - YAN ฤฐVMELENME + YANAL ฤฐVME LATERAL % - LATERAL % + YATAY % LONG % - UZUN % + UZUN % MAX ACCEL - MAKSฤฐMUM ฤฐVMELENME + MAKS HIZLANMA SPEED JERK - HIZ KASISI + HIZ SARSINTISI STEER ANGLE - DฤฐREKSฤฐYON Aร‡ISI + DฤฐREKSฤฐYON Aร‡ISI STEER RATIO - DฤฐREKSฤฐYON ORANI + DฤฐREKSฤฐYON ORANI STEER STIFF - DฤฐREKSฤฐYON SERT + DฤฐREKSฤฐYON SERT TORQUE % - TORK % + TORK % @@ -378,11 +378,11 @@ Reset - Sฤฑfฤฑrla + Sฤฑfฤฑrla Review - ฤฐnceleme + Gรถzden Geรงir Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. @@ -390,38 +390,38 @@ Pair Device - Cihazฤฑ EลŸleลŸtir + Cihaz EลŸleลŸtir PAIR - ร‡ฤฐFT + EลžLEลŸtir Pair your device with Konik connect (stable.konik.ai). - Cihazฤฑnฤฑzฤฑ Konik connect ile eลŸleลŸtirin (stable.konik.ai). + Cihazฤฑnฤฑzฤฑ Konik connect (stable.konik.ai) ile eลŸleลŸtirin. DriveStats FROGPILOT - FROGPILOT + FROGPILOT Drives - Sรผrรผcรผler + SรผrรผลŸler Hours - Saatler + Saatler KM - KM + KM Miles - Milโœ” + Mil @@ -435,3850 +435,3962 @@ ExperimentalModeButton EXPERIMENTAL MODE ON - DENEYSEL MOD Aร‡IK + DENEYSEL MOD Aร‡IK CHILL MODE ON - RAHAT MODU Aร‡IK + RAHAT MOD Aร‡IK FrogPilotAnnotatedCameraWidget m/sยฒ - m/sยฒ + m/sยฒ meters - metreler + metre m/s - m/s + m/s km/h - km/h + km/s ft/sยฒ - ft/sยฒ + ft/snยฒ feet - ayaklar + fit mph - mph + mph Vehicle in blind spot - Translation A + Kรถr noktada araรง PENDING - BEKLEMEDE + BEKLEMEDE LIMIT - SINIR + SINIR FrogPilotConfirmationDialog Reboot required to take effect. - Etkin olmasฤฑ iรงin yeniden baลŸlatma gerekli. + Etkili olmasฤฑ iรงin yeniden baลŸlatma gerekli. Reboot Now - ลžimdi Yeniden BaลŸlat + ลžimdi Yeniden BaลŸlat Reboot Later - Daha Sonra Yeniden BaลŸlat + Daha sonra yeniden baลŸlat Yes - Evet + Evet No - Hayฤฑr + Hayฤฑr FrogPilotDataPanel - Delete Driving Footage and Data - SรผrรผลŸ Gรถrรผntรผleri ve Verilerini Sil + Delete Driving Data + SรผrรผลŸ Verilerini Sil DELETE - SฤฐL + SฤฐL - Deletes all stored driving footage and data from your device. Ideal for maintaining privacy or for simply freeing up space. - Cihazฤฑnฤฑzdaki tรผm kayฤฑtlฤฑ sรผrรผลŸ gรถrรผntรผlerini ve verilerini siler. GizliliฤŸi korumak veya sadece alan boลŸaltmak iรงin idealdir. + <b>Delete all stored driving footage and data</b> to free up space and clear private information. + <b>Kayฤฑtlฤฑ tรผm sรผrรผลŸ gรถrรผntรผlerini ve verileri sil</b> alan aรงmak ve รถzel bilgileri temizlemek iรงin. - Are you sure you want to delete all of your driving footage and data? - Tรผm sรผrรผลŸ gรถrรผntรผlerinizi ve verilerinizi silmek istediฤŸinizden emin misiniz? + Delete all driving data and footage? + Tรผm sรผrรผลŸ verileri ve gรถrรผntรผleri silinsin mi? Delete - Silmek + Sil Deleting... - Siliniyor... + Siliniyor... Deleted! - Silindi! + Silindi! Delete Error Logs - Hata Kayฤฑtlarฤฑnฤฑ Sil + Hata Gรผnlรผklerini Sil - Deletes all stored error logs from your device. Ideal for freeing up space. - Cihazฤฑnฤฑzdaki tรผm kayฤฑtlฤฑ hata gรผnlรผklerini siler. Alan boลŸaltmak iรงin idealdir. + <b>Delete collected error logs</b> to free up space and clear old crash records. + <b>Toplanan hata gรผnlรผklerini silin</b> alan aรงmak ve eski รงรถkme kayฤฑtlarฤฑnฤฑ temizlemek iรงin. - Are you sure you want to delete all of the error logs? - Tรผm hata gรผnlรผklerini silmek istediฤŸinizden emin misiniz? + Delete all error logs? + Tรผm hata gรผnlรผkleri silinsin mi? Screen Recordings - Ekran Kayฤฑtlarฤฑ + Ekran Kayฤฑtlarฤฑ - Manage your screen recordings. - Ekran kayฤฑtlarฤฑnฤฑzฤฑ yรถnetin. + <b>Delete or rename screen recordings.</b> + <b>Ekran kayฤฑtlarฤฑnฤฑ silin veya yeniden adlandฤฑrฤฑn.</b> DELETE ALL - HEPSฤฐNฤฐ SฤฐL + TรœMรœNรœ SฤฐL RENAME - YENฤฐDEN ADLANDIR + YENฤฐ AD VER - Select a recording to delete - Silinecek bir kayฤฑt seรงin + Choose a screen recording to delete + Silmek iรงin bir ekran kaydฤฑ seรงin - Are you sure you want to delete this recording? - Bu kaydฤฑ silmek istediฤŸinizden emin misiniz? + Delete this screen recording? + Bu ekran kaydฤฑnฤฑ sil? - Are you sure you want to delete all screen recordings? - Tรผm ekran kayฤฑtlarฤฑnฤฑ silmek istediฤŸinizden emin misiniz? + Delete all screen recordings? + Tรผm ekran kayฤฑtlarฤฑnฤฑ silinsin mi? Delete All - Hepsini Sil + Tรผmรผnรผ Sil - Select a recording to rename - Yeniden adlandฤฑrmak iรงin bir kayฤฑt seรงin + Choose a screen recording to rename + Yeniden adlandฤฑrmak iรงin bir ekran kaydฤฑ seรงin Enter a new name - Yeni bir ad girin + Yeni bir ad girin - Rename Recording - Kaydฤฑ Yeniden Adlandฤฑr + Rename Screen Recording + Ekran Kaydฤฑnฤฑ Yeniden Adlandฤฑr - A recording with this name already exists. Please choose a different name. - Bu isimle bir kayฤฑt zaten mevcut. Lรผtfen farklฤฑ bir isim seรงin. + Name already in use. Please choose a different name. + Ad zaten kullanฤฑmda. Lรผtfen farklฤฑ bir ad seรงin. Renaming... - Yeniden adlandฤฑrฤฑlฤฑyor... + Yeniden adlandฤฑrฤฑlฤฑyor... Renamed! - Yeniden adlandฤฑrฤฑldฤฑ! + Yeniden adlandฤฑrฤฑldฤฑ! FrogPilot Backups - FrogPilot Yedekleri + FrogPilot Yedeklemeleri - Manage your FrogPilot backups. - FrogPilot yedeklerinizi yรถnetin. + <b>Create, delete, or restore FrogPilot backups.</b> + <b>FrogPilot yedeklerini oluลŸturun, silin veya geri yรผkleyin.</b> BACKUP - YEDEKLEME + YEDEKLEME RESTORE - GERฤฐ YรœKLE + GERฤฐ YรœKLE - Name your backup - Yedeklemenizi adlandฤฑrฤฑn + Enter a name for this backup + Bu yedek iรงin bir ad girin - A backup with this name already exists. Please choose a different name. - Bu isimle zaten bir yedekleme mevcut. Lรผtfen farklฤฑ bir isim seรงin. - - - Do you want to compress this backup? This will take a few minutes, but the final result will be smaller and run in the background. - Bu yedeฤŸi sฤฑkฤฑลŸtฤฑrmak istiyor musunuz? Bu birkaรง dakika sรผrecek, ancak nihai sonuรง daha kรผรงรผk olacak ve arka planda รงalฤฑลŸacaktฤฑr. + Compress this backup? This will save space and run in the background but take a bit longer. + Bu yedeฤŸi sฤฑkฤฑลŸtฤฑrฤฑlsฤฑn mฤฑ? Bu, yer tasarrufu saฤŸlar ve arka planda รงalฤฑลŸฤฑr ancak biraz daha uzun sรผrer. Backing up... - Yedekleniyor... + Yedekleniyor... Compressing... - SฤฑkฤฑลŸtฤฑrฤฑlฤฑyor... + SฤฑkฤฑลŸtฤฑrฤฑlฤฑyor... Backup created! - Yedek oluลŸturuldu! + Yedek oluลŸturuldu! - Select a backup to delete - Silinecek bir yedek seรงin + Choose a FrogPilot backup to delete + Silmek iรงin bir FrogPilot yedeฤŸi seรงin - Are you sure you want to delete this backup? - Bu yedeklemeyi silmek istediฤŸinizden emin misiniz? + Delete this backup? + Bu yedek silinsin mi? - Are you sure you want to delete all FrogPilot backups? - Tรผm FrogPilot yedeklerini silmek istediฤŸinizden emin misiniz? + Delete all backups? + Tรผm yedekler silinsin mi? - Select a restore point - Bir geri yรผkleme noktasฤฑ seรงin + Choose a backup to restore + Geri yรผklenecek bir yedek seรงin - Are you sure you want to restore this version of FrogPilot? - Bu sรผrรผmรผ FrogPilot'a geri yรผklemek istediฤŸinizden emin misiniz? + Restore this backup? + Bu yedeฤŸi geri yรผkle? Restore - Geri yรผkle + Geri Yรผkle Restoring... - Geri Yรผkleniyor... + Geri yรผkleniyor... Extracting... - ร‡ฤฑkarฤฑlฤฑyor... + ร‡ฤฑkarฤฑlฤฑyor... Restored! - Geri yรผklendi! + Geri yรผklendi! Rebooting... - Yeniden baลŸlatฤฑlฤฑyor... + Yeniden baลŸlatฤฑlฤฑyor... Toggle Backups - Yedeklemeleri Aรง/Kapat + Yedeklemeleri Aรง/Kapat - Manage your toggle backups. - Anahtar yedeklerinizi yรถnetin. + <b>Create, delete, or restore toggle backups.</b> + <b>DeฤŸiลŸtirici yedeklerini oluลŸturun, silin veya geri yรผkleyin.</b> - Name your toggle backup - Yedekleme geรงiลŸinizi adlandฤฑrฤฑn - - - A toggle backup with this name already exists. Please choose a different name. - Bu adla bir yedekleme zaten mevcut. Lรผtfen farklฤฑ bir ad seรงin. - - - Select a toggle backup to delete - Silinecek bir yedekleme seรงin - - - Are you sure you want to delete this toggle backup? - Bu geรงiลŸ yedeklemesini silmek istediฤŸinizden emin misiniz? - - - Are you sure you want to delete all toggle backups? - Tรผm geรงiลŸ yedeklerini silmek istediฤŸinizden emin misiniz? - - - Select a toggle restore point - Bir geri yรผkleme noktasฤฑ seรงin - - - Are you sure you want to restore this toggle backup? - Bu geรงiลŸ yedeklemesini geri yรผklemek istediฤŸinizden emin misiniz? + Choose a backup to delete + Silinecek bir yedek seรงin FrogPilotDevicePanel Device Settings - Cihaz Ayarlarฤฑ + Cihaz Ayarlarฤฑ - Settings that control device behavior. - Cihaz davranฤฑลŸฤฑnฤฑ kontrol eden ayarlar. - - - Battery Shutdown Threshold - Pil ลžarj Kesilme EลŸiฤŸi - - - Automatically shut down the device when the vehicle's battery voltage reaches the set threshold preventing excessive battery drain to protect the battery. - Araรง akรผsรผnรผn voltajฤฑ belirlenen eลŸik deฤŸere ulaลŸtฤฑฤŸฤฑnda cihazฤฑ otomatik olarak kapatarak aลŸฤฑrฤฑ akรผ boลŸalmasฤฑnฤฑ รถnleyin ve akรผyรผ koruyun. + <b>Settings that control how the device runs, powers off, and manages driving data.</b> + <b>Cihazฤฑn nasฤฑl รงalฤฑลŸtฤฑฤŸฤฑnฤฑ, kapanmasฤฑnฤฑ ve sรผrรผลŸ verilerini yรถnetmesini kontrol eden ayarlar.</b> Device Shutdown Timer - Cihaz Kapatma Zamanlayฤฑcฤฑsฤฑ + Cihaz Kapatma Zamanlayฤฑcฤฑsฤฑ - How long the device stays on for after you go offroad. - Cihazฤฑn, yoldan รงฤฑktฤฑktan sonra ne kadar sรผre aรงฤฑk kaldฤฑฤŸฤฑ. + <b>Keep the device on for the set amount of time after a drive</b> before it shuts down automatically. + <b>SรผrรผลŸten sonra belirlenen sรผre boyunca cihazฤฑ aรงฤฑk tutun</b>, ardฤฑndan otomatik olarak kapanacaktฤฑr. - Disable Data Logging - Veri Kaydฤฑnฤฑ Devre DฤฑลŸฤฑ Bฤฑrak + Disable Logging + GรผnlรผฤŸรผ Devre DฤฑลŸฤฑ Bฤฑrak WARNING: This will prevent your drives from being recorded and all data will be unobtainable! - UYARI: Bu, sรผrรผcรผlerinizin kaydedilmesini engelleyecek ve tรผm veriler elde edilemez hale gelecektir! + UYARI: Bu, sรผrรผลŸlerinizin kaydedilmesini engelleyecek ve tรผm verilere eriลŸilemez hale getirecektir! - Disable all data logging to improve privacy. - Tรผm veri kaydฤฑnฤฑ devre dฤฑลŸฤฑ bฤฑrakฤฑn gizliliฤŸi artฤฑrmak iรงin. + <b>Prevent the device from saving driving data.</b> + <b>Cihazฤฑn sรผrรผลŸ verilerini kaydetmesini engelleyin.</b> - Disable Data Uploads - Veri Yรผklemelerini Devre DฤฑลŸฤฑ Bฤฑrak + Disable Uploads + Yรผklemeleri Devre DฤฑลŸฤฑ Bฤฑrak - WARNING: This will prevent your drives from appearing on <b>comma connect</b> which may impact debugging and support! - UYARI: Bu, sรผrรผcรผlerinizin <b>comma connect</b> รผzerinde gรถrรผnmesini engelleyecek ve bu da hata ayฤฑklama ve desteฤŸi etkileyebilir! + WARNING: This will prevent your drives from being uploaded to <b>comma connect</b> which will impact debugging and official support from comma! + UYARI: Bu, sรผrรผลŸlerinizin <b>comma connect</b>โ€™e yรผklenmesini engeller; bu da hata ayฤฑklamayฤฑ ve commaโ€™nฤฑn resmi desteฤŸini olumsuz etkiler! - Prevent the device from sending any data to <b>comma</b>'s servers. - Cihazฤฑn <b>comma</b>'nฤฑn sunucularฤฑna herhangi bir veri gรถndermesini engelle. + <b>Prevent the device from uploading driving data.</b> + <b>Cihazฤฑn sรผrรผลŸ verilerini yรผklemesini รถnleyin.</b> - Increase Thermal Safety Limit - Termal Gรผvenlik Limitini Artฤฑr + High-Quality Recording + Yรผksek Kaliteli Kayฤฑt - WARNING: This can damage your device by exceeding safe temperature limits! - UYARI: Bu, gรผvenli sฤฑcaklฤฑk sฤฑnฤฑrlarฤฑnฤฑ aลŸarak cihazฤฑnฤฑza zarar verebilir! + <b>Save drive footage in higher video quality.</b> + <b>SรผrรผลŸ gรถrรผntรผlerini daha yรผksek video kalitesinde kaydedin.</b> - Allow the device to run hotter than comma recommended limit. - Cihazฤฑn รถnerilen sฤฑnฤฑrdan daha sฤฑcak รงalฤฑลŸmasฤฑna izin ver. + Low-Voltage Cutoff + DรผลŸรผk Voltaj Kesmesi - Use Konik's Server Instead of comma's - Konik'in Sunucusunu virgรผl yerine kullanฤฑn + <b>While parked, if the battery voltage falls below the set level, the device shuts down</b> to prevent excessive battery drain. + <b>Park halindeyken, batarya voltajฤฑ belirlenen seviyenin altฤฑna dรผลŸerse, aลŸฤฑrฤฑ batarya boลŸalmasฤฑnฤฑ รถnlemek iรงin cihaz kapanฤฑr</b> - Upload your driving data to <b>connect.konik.ai</b> instead of <b>connect.comma.ai</b>. - SรผrรผลŸ verilerinizi <b>connect.konik.ai</b> adresine <b>connect.comma.ai</b> yerine yรผkleyin. + Raise Temperature Limits + Sฤฑcaklฤฑk Sฤฑnฤฑrlarฤฑnฤฑ Artฤฑr + + + WARNING: Running at higher temperatures may damage your device! + UYARI: Daha yรผksek sฤฑcaklฤฑklarda รงalฤฑลŸtฤฑrmak cihazฤฑnฤฑza zarar verebilir! + + + <b>Allow the device to run at higher temperatures</b> before throttling or shutting down. Use only if you understand the risks! + <b>Cihazฤฑn kฤฑsma veya kapanmadan รถnce daha yรผksek sฤฑcaklฤฑklarda รงalฤฑลŸmasฤฑna izin verin</b>. Yalnฤฑzca riskleri anlฤฑyorsanฤฑz kullanฤฑn! + + + Use Konik Server + Konik Sunucusunu Kullan + + + <b>Upload driving data to "connect.konik.ai" instead of "connect.comma.ai".</b> + <b>SรผrรผลŸ verilerini "connect.comma.ai" yerine "connect.konik.ai" adresine yรผkleyin.</b> Screen Settings - Ekran Ayarlarฤฑ + Ekran Ayarlarฤฑ - Settings that control screen behavior. - Ekran davranฤฑลŸฤฑnฤฑ kontrol eden ayarlar. + <b>Settings that control screen brightness, screen recording, and timeout duration.</b> + <b>Ekran parlaklฤฑฤŸฤฑnฤฑ, ekran kaydฤฑnฤฑ ve zaman aลŸฤฑmฤฑ sรผresini kontrol eden ayarlar.</b> Screen Brightness (Offroad) - Ekran ParlaklฤฑฤŸฤฑ (Arazi) + Ekran ParlaklฤฑฤŸฤฑ (Araรง DฤฑลŸฤฑ) - The screen brightness when not driving. - SรผrรผลŸ yapmadฤฑฤŸฤฑnฤฑzda ekran parlaklฤฑฤŸฤฑ. + <b>The screen brightness while not driving.</b> + <b>SรผrรผลŸ halinde deฤŸilken ekran parlaklฤฑฤŸฤฑ.</b> Screen Brightness (Onroad) - Ekran ParlaklฤฑฤŸฤฑ (Yolda) + Ekran ParlaklฤฑฤŸฤฑ (Yolda) - The screen brightness while driving. - SรผrรผลŸ sฤฑrasฤฑnda ekran parlaklฤฑฤŸฤฑ. + <b>The screen brightness while driving.</b> + <b>SรผrรผลŸ sฤฑrasฤฑnda ekran parlaklฤฑฤŸฤฑ.</b> Screen Recorder - Ekran Kaydedici + Ekran Kaydedici - Enable a button in the driving screen to record the screen. - SรผrรผลŸ ekranฤฑnda ekranฤฑ kaydetmek iรงin bir dรผฤŸme etkinleลŸtirin. + <b>Add a button to the driving screen to record the display.</b> + <b>Gรถrรผntรผyรผ kaydetmek iรงin sรผrรผลŸ ekranฤฑna bir dรผฤŸme ekleyin.</b> Screen Timeout (Offroad) - Ekran Zaman AลŸฤฑmฤฑ (Offroad) + Ekran Zaman AลŸฤฑmฤฑ (Offroad) - How long it takes for the screen to turn off when not driving. - Ekranฤฑn kapanmasฤฑ ne kadar sรผrer? + <b>How long the screen stays on after being tapped while not driving.</b> + <b>SรผrรผลŸ yapฤฑlmazken ekrana dokunulduktan sonra ekranฤฑn aรงฤฑk kalma sรผresi.</b> Screen Timeout (Onroad) - Ekran Zaman AลŸฤฑmฤฑ (Yolda) + Ekran Zaman AลŸฤฑmฤฑ (Yolda) - How long it takes for the screen to turn off while driving. - Ekranฤฑn sรผrรผลŸ sฤฑrasฤฑnda kapanmasฤฑ ne kadar sรผrer. + <b>How long the screen stays on after being tapped while driving.</b> + <b>SรผrรผลŸ sฤฑrasฤฑnda ekrana dokunulduktan sonra ekranฤฑn aรงฤฑk kalma sรผresi.</b> + + + Standby Mode + Bekleme Modu + + + <b>Turn the screen off while driving and automatically wake it up for alerts or engagement state changes.</b> + <b>SรผrรผลŸ sฤฑrasฤฑnda ekranฤฑ kapatฤฑn ve uyarฤฑlar veya devreye girme durumu deฤŸiลŸikliklerinde otomatik olarak uyandฤฑrฤฑn.</b> 5 mins - 5 dk. + 5 dk mins - dakika + dk hour - saat + saat hours - saatler + saat - Only Disable While Onroad - Yalnฤฑzca Yolda ฤฐken Devre DฤฑลŸฤฑ Bฤฑrak + Disable Onroad Only + Yalnฤฑzca Yolda Devre DฤฑลŸฤฑ Bฤฑrak volts - volt + volt Screen Off - Ekran Kapalฤฑ + Ekran Kapalฤฑ Auto - Otomatik + Oto Start Recording - Kaydฤฑ BaลŸlat + Kaydฤฑ BaลŸlat Stop Recording - Kaydฤฑ Durdur + Kaydฤฑ Durdur seconds - saniye - - - High Bitrate Recording - Yรผksek Bit Hฤฑzฤฑ Kaydฤฑ - - - Record driving footage at double the standard bitrate for improved video quality in driving logs. - SรผrรผลŸ gรผnlรผklerinde video kalitesini artฤฑrmak iรงin sรผrรผลŸ gรถrรผntรผlerini standart bit hฤฑzฤฑnฤฑn iki katฤฑnda kaydedin. + saniye FrogPilotLateralPanel Advanced Lateral Tuning - GeliลŸmiลŸ Yanal Ayarlama + GeliลŸmiลŸ Yanal Ayar - Advanced settings for fine-tuning openpilot's lateral controls. - Openpilot'ฤฑn yanal kontrollerini ince ayarlamak iรงin geliลŸmiลŸ ayarlar. + <b>Advanced steering control changes to fine-tune how openpilot drives.</b> + <b>GeliลŸmiลŸ direksiyon kontrolรผ, openpilotโ€™un sรผrรผลŸรผnรผ ince ayar yapmak iรงin deฤŸiลŸir.</b> Actuator Delay (Default: %1) - Aktรผatรถr Gecikmesi (Varsayฤฑlan: %1) + Aktรผatรถr Gecikmesi (Varsayฤฑlan: %1) Actuator Delay - Aktรผatรถr Gecikmesi + Aktรผatรถr Gecikmesi - How long the steering wheel takes to respond to commands. Higher values account for slower steering; lower values for quicker response. - Direksiyon simidinin komutlara yanฤฑt vermesi ne kadar sรผrer. Daha yรผksek deฤŸerler daha yavaลŸ direksiyon iรงin hesaplanฤฑr; daha dรผลŸรผk deฤŸerler daha hฤฑzlฤฑ yanฤฑt iรงin. + <b>The time between openpilot's steering command and the vehicle's response.</b> Increase if the vehicle reacts late; decrease if it feels jumpy. Auto-learned by default. + <b>openpilotโ€™ฤฑn direksiyon komutu ile aracฤฑn tepkisi arasฤฑndaki sรผre.</b> Araรง geรง tepki veriyorsa artฤฑrฤฑn; zฤฑpkฤฑn gibi hissediyorsa azaltฤฑn. Varsayฤฑlan olarak otomatik รถฤŸrenilir. Friction (Default: %1) - Sรผrtรผnme (Varsayฤฑlan: %1) + Sรผrtรผnme (Varsayฤฑlan: %1) Friction - Sรผrtรผnme + Sรผrtรผnme - Adjust steering resistance. Higher values feel more stable but heavier; lower values feel lighter but more sensitive. - Direksiyon direncini ayarlayฤฑn. Daha yรผksek deฤŸerler daha kararlฤฑ ama daha aฤŸฤฑr hissedilir; daha dรผลŸรผk deฤŸerler daha hafif ama daha hassas hissedilir. + <b>Compensates for steering friction.</b> Increase if the wheel sticks near center; decrease if it jitters. Auto-learned by default. + <b>Direksiyon sรผrtรผnmesini telafi eder.</b> Direksiyon merkezde takฤฑlฤฑyorsa artฤฑrฤฑn; titriyorsa azaltฤฑn. Varsayฤฑlan olarak otomatik รถฤŸrenilir. Kp Factor (Default: %1) - Kp Faktรถrรผ (Varsayฤฑlan: %1) + Kp Faktรถrรผ (Varsayฤฑlan: %1) Kp Factor - Kp Faktรถrรผ + Kp Faktรถrรผ - How aggressively openpilot corrects steering. Higher values respond faster but may feel jerky; lower values are smoother but slower. - openpilot'ฤฑn direksiyonu ne kadar agresif bir ลŸekilde dรผzelttiฤŸi. Daha yรผksek deฤŸerler daha hฤฑzlฤฑ yanฤฑt verir ancak sarsฤฑntฤฑlฤฑ hissedebilir; daha dรผลŸรผk deฤŸerler daha pรผrรผzsรผzdรผr ancak daha yavaลŸtฤฑr. + <b>How strongly openpilot corrects lane position.</b> Higher is tighter but twitchier; lower is smoother but slower. Auto-learned by default. + <b>openpilotโ€™ฤฑn ลŸerit konumunu ne kadar gรผรงlรผ dรผzelttiฤŸi.</b> Yรผksek deฤŸer daha sฤฑkฤฑ ama daha sinirlidir; dรผลŸรผk deฤŸer daha yumuลŸak ama daha yavaลŸtฤฑr. Varsayฤฑlan olarak otomatik รถฤŸrenilir. - Lateral Accel (Default: %1) - Yanal ฤฐvme (Varsayฤฑlan: %1) + Lateral Acceleration (Default: %1) + Yanal ฤฐvme (Varsayฤฑlan: %1) - Lateral Accel - Yanal ฤฐvme + Lateral Acceleration + Yanal ฤฐvme - How quickly openpilot makes lateral adjustments. Higher values allow sharper turns; lower values provide smoother steering. - openpilot'ฤฑn yanal ayarlamalarฤฑ ne kadar hฤฑzlฤฑ yaptฤฑฤŸฤฑ. Daha yรผksek deฤŸerler daha keskin dรถnรผลŸlere izin verir; daha dรผลŸรผk deฤŸerler daha yumuลŸak direksiyon saฤŸlar. + <b>Maps steering torque to turning response.</b> Increase for sharper turns; decrease for gentler steering. Auto-learned by default. + <b>Direksiyon torkunu dรถnรผลŸ tepkisine eลŸler.</b> Daha keskin dรถnรผลŸler iรงin artฤฑrฤฑn; daha yumuลŸak direksiyon iรงin azaltฤฑn. Varsayฤฑlan olarak otomatik รถฤŸrenilir. Steer Ratio (Default: %1) - Direksiyon Oranฤฑ (Varsayฤฑlan: %1) + Direksiyon Oranฤฑ (Varsayฤฑlan: %1) Steer Ratio - Direksiyon Oranฤฑ + Direksiyon Oranฤฑ - How much the steering wheel turns in response to commands. Higher values feel more stable; lower values feel quicker. - Direksiyonun komutlara yanฤฑt olarak ne kadar dรถndรผฤŸรผ. Daha yรผksek deฤŸerler daha kararlฤฑ hissettirir; daha dรผลŸรผk deฤŸerler daha hฤฑzlฤฑ hissettirir. + <b>The relationship between steering wheel rotation and road wheel angle.</b> Increase if steering feels too quick or twitchy; decrease if it feels too slow or weak. Auto-learned by default. + <b>Direksiyon simidi dรถnรผลŸรผ ile yol tekerleฤŸi aรงฤฑsฤฑ arasฤฑndaki iliลŸki.</b> Direksiyon รงok hฤฑzlฤฑ veya hassas geliyorsa artฤฑrฤฑn; รงok yavaลŸ veya zayฤฑf geliyorsa azaltฤฑn. Varsayฤฑlan olarak otomatik รถฤŸrenilir. - Force Auto Tune On - Otomatik Ayarlamayฤฑ Zorla Aรง + Force Auto-Tune On + Otomatik Ayarฤฑ Zorla Aรง - Force-enable commaโ€™s auto lateral tuning. - Virgรผlรผn otomatik yanal ayarฤฑnฤฑ zorla etkinleลŸtir. + <b>Force-enable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration".</b> + <b>openpilot'un "Sรผrtรผnme" ve "Yanal ฤฐvme" iรงin canlฤฑ otomatik ayarlamasฤฑnฤฑ zorla etkinleลŸtir.</b> - Force Auto Tune Off - Otomatik Ayarlamayฤฑ Zorla Kapat + Force Auto-Tune Off + Otomatik Ayarฤฑ Zorla Kapat - Force-disable commaโ€™s auto lateral tuning. - Virgรผlรผn otomatik yanal ayarฤฑnฤฑ zorla devre dฤฑลŸฤฑ bฤฑrak. + <b>Force-disable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration" and use the set value instead.</b> + <b>"Sรผrtรผnme" ve "Yanal ฤฐvme" iรงin openpilotโ€™un canlฤฑ otomatik ayarฤฑnฤฑ zorla devre dฤฑลŸฤฑ bฤฑrak ve bunun yerine ayarlanmฤฑลŸ deฤŸeri kullan.</b> - Always on Lateral - Her zaman Lateral'de + Force Torque Controller + Kuvvet Tork Denetleyicisi - openpilot's steering control stays active even when the brake or gas pedals are pressed.<br><br>Deactivation only occurs with the <b>Cruise Control</b> button. - openpilot'ฤฑn direksiyon kontrolรผ, fren veya gaz pedallarฤฑ basฤฑldฤฑฤŸฤฑnda bile aktif kalฤฑr.<br><br>Devre dฤฑลŸฤฑ bฤฑrakma yalnฤฑzca <b>Cruise Control</b> dรผฤŸmesiyle gerรงekleลŸir. + <b>Use torque-based steering control instead of angle-based control for smoother lane keeping, especially in curves.</b> + <b>Daha yumuลŸak ลŸeritte kalma iรงin, รถzellikle virajlarda, aรงฤฑ tabanlฤฑ kontrol yerine tork tabanlฤฑ direksiyon kontrolรผ kullanฤฑn.</b> + + + Always On Lateral + Her Zaman Aรงฤฑk Yanal + + + <b>openpilot's steering remains active even when the accelerator or brake pedals are pressed.</b> + <b>Gaz veya fren pedallarฤฑna basฤฑldฤฑฤŸฤฑnda bile openpilotโ€™un direksiyon kontrolรผ aktif kalฤฑr.</b> Enable With Cruise Control - Cruise Control ile EtkinleลŸtir + Hฤฑz Sabitleyiciyle EtkinleลŸtir - Allow <b>Always on Lateral</b> to be active whenever <b>Cruise Control</b> is active, bypassing the need to enable openpilot first. - Translation B + <b>Enable "Always On Lateral" whenever "Cruise Control" is on, even when openpilot is not engaged.</b> + <b>openpilot devrede deฤŸilken bile, "Cruise Control" aรงฤฑk olduฤŸunda "Always On Lateral" รถzelliฤŸini etkinleลŸtir.</b> - Enable With LKAS Button - LKAS DรผฤŸmesiyle EtkinleลŸtir + Enable With LKAS + LKAS ile EtkinleลŸtir - Allow <b>Always on Lateral</b> to be active whenever <b>LKAS</b> is active, bypassing the need to enable openpilot first. - <b>LKAS</b> etkin olduฤŸunda <b>Always on Lateral</b>'ฤฑn aktif olmasฤฑna izin verin, รถnce openpilot'u etkinleลŸtirme gereksinimini atlayarak. + <b>Enable "Always On Lateral" whenever "LKAS" is on, even when openpilot is not engaged.</b> + <b>openpilot devrede olmasa bile "LKAS" aรงฤฑkken her zaman "Always On Lateral" รถzelliฤŸini etkinleลŸtir.</b> - Pause on Brake Below - Frenin Altฤฑnda Duraklat + Pause on Brake Press Below + Frene Basฤฑnca AลŸaฤŸฤฑda Duraklat - Temporarily pause <b>Always on Lateral</b> below the set speed when braking. - Fren yaparken belirlenen hฤฑzฤฑn altฤฑnda <b>Her Zaman Yan</b> รถzelliฤŸini geรงici olarak duraklat. + <b>Pause "Always On Lateral" below the set speed while the brake pedal is pressed.</b> + <b>Fren pedalฤฑ basฤฑlฤฑyken ayarlanan hฤฑzฤฑn altฤฑnda โ€œHer Zaman Aรงฤฑk Yanalโ€ฤฑ duraklat.</b> Lane Changes - ลžerit DeฤŸiลŸiklikleri + ลžerit DeฤŸiลŸtirmeler - Customize how openpilot performs lane changes. - Openpilot'ฤฑn ลŸerit deฤŸiลŸikliklerini nasฤฑl gerรงekleลŸtirdiฤŸini รถzelleลŸtirin. + <b>Allow openpilot to change lanes.</b> + <b>openpilotโ€™un ลŸerit deฤŸiลŸtirmesine izin ver.</b> Automatic Lane Changes - Otomatik ลžerit DeฤŸiลŸiklikleri + Otomatik ลžerit DeฤŸiลŸiklikleri - Change lanes automatically when the turn signal is on. No steering input needed! - Sinyal lambasฤฑ aรงฤฑkken otomatik olarak ลŸerit deฤŸiลŸtirin. Direksiyon giriลŸi gerekmez! + <b>When the turn signal is on, openpilot will automatically change lanes.</b> No steering-wheel nudge required! + <b>Sinyal aรงฤฑkken openpilot ลŸeridi otomatik olarak deฤŸiลŸtirecek.</b> Direksiyonu dรผrtmeye gerek yok! Lane Change Delay - ลžerit DeฤŸiลŸtirme Gecikmesi + ลžerit DeฤŸiลŸtirme Gecikmesi - Delay automatic lane changes by the set amount of time. - Otomatik ลŸerit deฤŸiลŸikliklerini belirlenen sรผre kadar geciktirin. + <b>Delay between turn signal activation and the start of an automatic lane change.</b> + <b>Sinyal verildikten sonra otomatik ลŸerit deฤŸiลŸiminin baลŸlamasฤฑ arasฤฑndaki gecikme.</b> Minimum Lane Change Speed - Minimum ลžerit DeฤŸiลŸtirme Hฤฑzฤฑ + Minimum ลžerit DeฤŸiลŸtirme Hฤฑzฤฑ - Minimum speed required for openpilot to perform a lane change. - Openpilot'ฤฑn ลŸerit deฤŸiลŸtirme iลŸlemi gerรงekleลŸtirmesi iรงin gereken minimum hฤฑz. + <b>Lowest speed at which openpilot will change lanes.</b> + <b>openpilotโ€™ฤฑn ลŸerit deฤŸiลŸtireceฤŸi en dรผลŸรผk hฤฑz.</b> Minimum Lane Width - Minimum ลžerit GeniลŸliฤŸi + Asgari ลžerit GeniลŸliฤŸi - openpilot won't initiate a lane change into a lane narrower than this width. - openpilot, bu geniลŸlikten daha dar bir ลŸeride ลŸerit deฤŸiลŸikliฤŸi baลŸlatmayacaktฤฑr. + <b>Prevent automatic lane changes into lanes narrower than the set width.</b> + <b>Ayarlanan geniลŸlikten daha dar ลŸeritlere otomatik ลŸerit deฤŸiลŸimlerini รถnleyin.</b> One Lane Change Per Signal - Her Sinyal BaลŸฤฑna Bir ลžerit DeฤŸiลŸikliฤŸi + Her Sinyalde Bir ลžerit DeฤŸiลŸtirme - Limit lane changes to one per turn signal activation. - DรถnรผลŸ sinyali aktivasyonu baลŸฤฑna ลŸerit deฤŸiลŸikliklerini bir ile sฤฑnฤฑrlayฤฑn. + <b>Limit automatic lane changes to one per turn-signal activation.</b> + <b>Otomatik ลŸerit deฤŸiลŸikliklerini sinyal her etkinleลŸtirildiฤŸinde bir tane ile sฤฑnฤฑrla.</b> Lateral Tuning - Yanal Ayarlama + Yanal Ayar - Settings for fine-tuning openpilot's lateral controls. - Openpilot'ฤฑn yanal kontrollerini ince ayarlamak iรงin ayarlar. + <b>Miscellaneous steering control changes</b> to fine-tune how openpilot drives. + <b>ร‡eลŸitli direksiyon kontrolรผ deฤŸiลŸiklikleri</b>, openpilotโ€™ฤฑn sรผrรผลŸรผnรผ ince ayar yapmak iรงin. Force Turn Desires Below Lane Change Speed - ลžerit DeฤŸiลŸtirme Hฤฑzฤฑnฤฑn Altฤฑnda ฤฐstekleri Zorla DรถnรผลŸtรผr + ลžerit DeฤŸiลŸtirme Hฤฑzฤฑnฤฑn Altฤฑnda Dรถnme ฤฐsteklerini Zorla - Force turn desires below the minimum lane change speed to improve turning accuracy. - DรถnรผลŸ doฤŸruluฤŸunu artฤฑrmak iรงin istekleri minimum ลŸerit deฤŸiลŸtirme hฤฑzฤฑnฤฑn altฤฑna zorla. - - - Neural Network Feedforward (NNFF) - Sinir AฤŸฤฑ ฤฐleri Besleme (NNFF) - - - Use <b>Twilsoncoโ€™s</b> <b>Neural Network FeedForward</b> model for smoother, model-based steering trained on your vehicle's data. - Aracฤฑnฤฑzฤฑn verileriyle eฤŸitilmiลŸ daha pรผrรผzsรผz, model tabanlฤฑ direksiyon iรงin <b>Twilsonco'nun</b> <b>Neural Network FeedForward</b> modelini kullanฤฑn. - - - Smooth Curve Handling - Dรผzgรผn EฤŸri ฤฐลŸleme - - - Use <b>Twilsoncoโ€™s</b> torque-based adjustments to smooth out steering during curves. - Virajlar sฤฑrasฤฑnda direksiyonu yumuลŸatmak iรงin <b>Twilsonco'nun</b> torka dayalฤฑ ayarlamalarฤฑnฤฑ kullanฤฑn. + <b>While driving below the minimum lane change speed with an active turn signal, instruct openpilot to turn left/right.</b> + <b>Minimum ลŸerit deฤŸiลŸtirme hฤฑzฤฑnฤฑn altฤฑnda bir hฤฑzda ve sinyal aรงฤฑkken, openpilotโ€™a sola/saฤŸa dรถnmesini sรถyleyin.</b> Quality of Life - YaลŸam Kalitesi + YaลŸam Kalitesi - Miscellaneous features to improve the steering experience. - Direksiyon deneyimini geliลŸtirmek iรงin รงeลŸitli รถzellikler. + <b>Steering control changes to fine-tune how openpilot drives.</b> + <b>openpilotโ€™ฤฑn sรผrรผลŸรผnรผ ince ayarlamak iรงin direksiyon kontrolรผ deฤŸiลŸir.</b> Pause Steering Below - Direksiyonu AลŸaฤŸฤฑda Durdur + Direksiyon Kontrolรผnรผ Bu Hฤฑzฤฑn Altฤฑnda Duraklat - Temporarily pause steering control below the set speed. - Belirlenen hฤฑzฤฑn altฤฑnda direksiyon kontrolรผnรผ geรงici olarak duraklat. + <b>Pause steering below the set speed.</b> + <b>Belirlenen hฤฑzฤฑn altฤฑnda direksiyonu duraklat.</b> Instant - Anฤฑnda + Anฤฑnda second - ikinci + saniye seconds - saniye - - - Are you sure you want to completely reset your <b>Actuator Delay</b>? - <b>Aktรผatรถr Gecikmesi</b>'ni tamamen sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? - - - Are you sure you want to completely reset your <b>Friction</b>? - <b>Friction</b>'ฤฑ tamamen sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? - - - Are you sure you want to completely reset your <b>Kp Factor</b>? - <b>Kp Faktรถrรผnรผzรผ</b> tamamen sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? - - - Are you sure you want to completely reset your <b>Lateral Accel</b>? - <b>Lateral Accel</b>'inizi tamamen sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? - - - Are you sure you want to completely reset your <b>Steer Ratio</b>? - <b>Direksiyon Oranฤฑ</b>'nฤฑzฤฑ tamamen sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? - - - Off - Kapalฤฑ - - - foot - ayak - - - feet - ayaklar - - - mph - mph - - - meter - metre - - - meters - metreler - - - km/h - km/h + saniye Turn Signal Only - Sadece DรถnรผลŸ Sinyali + Yalnฤฑzca Sinyal Lambasฤฑ + + + Reset <b>Actuator Delay</b> to its default value? + <b>Aktรผatรถr Gecikmesi</b> varsayฤฑlan deฤŸerine sฤฑfฤฑrlansฤฑn mฤฑ? + + + Reset <b>Friction</b> to its default value? + <b>Sรผrtรผnmeyi</b> varsayฤฑlan deฤŸerine sฤฑfฤฑrla? + + + Reset <b>Kp Factor</b> to its default value? + <b>Kp Faktรถr</b>รผnรผ varsayฤฑlan deฤŸere sฤฑfฤฑrla? + + + Reset <b>Lateral Accel</b> to its default value? + <b>Yanal ฤฐvme</b> varsayฤฑlan deฤŸerine sฤฑfฤฑrlansฤฑn mฤฑ? + + + Reset <b>Steer Ratio</b> to its default value? + <b>Direksiyon Oranฤฑ</b> varsayฤฑlan deฤŸerine sฤฑfฤฑrlansฤฑn mฤฑ? + + + Lateral Accel (Default: %1) + Yanal ฤฐvme (Varsayฤฑlan: %1) + + + Off + Kapalฤฑ + + + foot + ayak + + + feet + fit + + + mph + mph + + + meter + metre + + + meters + metre + + + km/h + km/sa + + + Neural Network Feedforward (NNFF) + Sinir AฤŸฤฑ ฤฐleri Besleme (NNFF) + + + <b>Twilsonco's "Neural Network FeedForward" model controller for smoother, model-based steering trained on your vehicle's data.</b> + <b>Twilsoncoโ€™nun โ€œNeural Network FeedForwardโ€ model denetleyicisi: aracฤฑnฤฑzฤฑn verileriyle eฤŸitilmiลŸ, daha pรผrรผzsรผz, modele dayalฤฑ direksiyon.</b> + + + Smooth Curve Handling + YumuลŸak Viraj Yรถnetimi + + + <b>Twilsonco's torque-based adjustments to smoothen out steering in curves.</b> + <b>Virajlarda direksiyonu yumuลŸatmak iรงin Twilsoncoโ€™nun torka dayalฤฑ ayarlamalarฤฑ.</b> FrogPilotLongitudinalPanel - - Conditional Experimental Mode - KoลŸullu Deneysel Mod - - - Automatically switch to <b>Experimental Mode</b> when set conditions are met. - Belirlenen koลŸullar karลŸฤฑlandฤฑฤŸฤฑnda otomatik olarak <b>Deneysel Mod</b>'a geรง. - - - Below - AลŸaฤŸฤฑda - - - Switch to <b>Experimental Mode</b> when driving below this speed. - Bu hฤฑzฤฑn altฤฑnda sรผrerken <b>Deneysel Moda</b> geรงin. - - - Curve Detected Ahead - ฤฐleride Viraj Var - - - Switch to <b>Experimental Mode</b> when a curve is detected ahead. Useful for letting the model choose the appropriate speed for the curve. - ร–nรผnรผzde bir viraj algฤฑlandฤฑฤŸฤฑnda <b>Deneysel Mod</b>'a geรงin. Modelin viraj iรงin uygun hฤฑzฤฑ seรงmesine olanak tanฤฑr. - - - Lead Detected Ahead - ร–nde KurลŸun Tespit Edildi - - - Switch to <b>Experimental Mode</b> when a slower or stopped vehicle is detected ahead. Can improve braking smoothness and reliability on some vehicles. - ร–nde yavaลŸlayan veya duran bir araรง algฤฑlandฤฑฤŸฤฑnda <b>Deneysel Moda</b> geรงin. Bazฤฑ araรงlarda frenleme yumuลŸaklฤฑฤŸฤฑnฤฑ ve gรผvenilirliฤŸini artฤฑrabilir. - - - Navigation Data - Navigasyon Verileri - - - Switch to <b>Experimental Mode</b> when approaching intersections or turns on the active route while using <b>Navigate on openpilot (NOO)</b>. Useful for letting the model choose the appropriate speed for upcoming navigation maneuvers. - KavลŸaklara veya aktif rotadaki dรถnรผลŸlere yaklaลŸฤฑrken <b>Deneysel Mod</b>'a geรงin ve <b>openpilot ile Navigasyon (NOO)</b> kullanฤฑn. Modelin yaklaลŸan navigasyon manevralarฤฑ iรงin uygun hฤฑzฤฑ seรงmesine izin vermek iรงin faydalฤฑdฤฑr. - - - openpilot Wants to Stop In - openpilot Durmak ฤฐstiyor - - - Switch to <b>Experimental Mode</b> when openpilot wants to stop within the set amount of time. This is typically triggered by the driving model "detecting" a red light or stop sign. - openpilot, belirlenen sรผre iรงinde durmak istediฤŸinde <b>Deneysel Mod</b>'a geรงin. Bu genellikle sรผrรผลŸ modelinin bir kฤฑrmฤฑzฤฑ ฤฑลŸฤฑk veya dur iลŸareti "tespit etmesi" ile tetiklenir. - - - Turn Signal Below - Sinyal AลŸaฤŸฤฑda - - - Switch to <b>Experimental Mode</b> when using a turn signal below the set speed. Useful for letting the model choose the appropriate speed for upcoming left or right turns. - DรถnรผลŸ sinyalini ayarlanan hฤฑzฤฑn altฤฑnda kullanฤฑrken <b>Deneysel Mod</b>'a geรงin. YaklaลŸan sol veya saฤŸ dรถnรผลŸler iรงin modelin uygun hฤฑzฤฑ seรงmesine olanak tanฤฑr. - - - Status Widget - Durum Widget'i - - - Show the <b>Conditional Experimental Mode</b> status on the driving screen. - SรผrรผลŸ ekranฤฑnda <b>KoลŸullu Deneysel Mod</b> durumunu gรถster. - - - Show <b>Curve Speed Control</b>'s desired speed on the driving screen. - SรผrรผลŸ ekranฤฑnda <b>Viraj Hฤฑz Kontrolรผ</b>'nรผn istenen hฤฑzฤฑnฤฑ gรถster. - - - Customize Driving Personalities - SรผrรผลŸ KiลŸiliklerini ร–zelleลŸtir - - - Customize the personality profiles to your driving style. - SรผrรผลŸ tarzฤฑnฤฑza gรถre kiลŸilik profillerini รถzelleลŸtirin. - - - Traffic Personality - Trafik KiลŸiliฤŸi - - - Customize the <b>Traffic</b> personality profile. Tailored for navigating through traffic. - Trafik kiลŸilik profilini รถzelleลŸtirin. Trafikte gezinmek iรงin รถzel olarak tasarlanmฤฑลŸtฤฑr. - - - Following Distance - Takip Mesafesi - - - The minimum following distance while in <b>Traffic Mode</b>. openpilot will dynamically adjust between this value and the value in the <b>Aggressive</b> profile based on your current speed. - Trafik Modu'ndayken minimum takip mesafesi. openpilot, mevcut hฤฑzฤฑnฤฑza baฤŸlฤฑ olarak bu deฤŸer ile Agresif profilindeki deฤŸer arasฤฑnda dinamik olarak ayarlama yapacaktฤฑr. - - - Acceleration Sensitivity - ฤฐvme Hassasiyeti - - - How sensitive openpilot is to changes in acceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilot'ฤฑn <b>Trafik Modu</b>ndayken hฤฑzlanma deฤŸiลŸikliklerine ne kadar duyarlฤฑ olduฤŸu. Daha yรผksek deฤŸerler, daha yumuลŸak ve kademeli hฤฑzlanma saฤŸlar, daha dรผลŸรผk deฤŸerler ise daha hฤฑzlฤฑ, daha duyarlฤฑ deฤŸiลŸikliklere izin verir ve bu da ani hissedilebilir. - - - Deceleration Sensitivity - YavaลŸlama Hassasiyeti - - - How sensitive openpilot is to changes in deceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilot'in <b>Trafik Modu</b>ndayken yavaลŸlamadaki deฤŸiลŸikliklere ne kadar duyarlฤฑ olduฤŸu. Daha yรผksek deฤŸerler, daha yumuลŸak ve kademeli yavaลŸlamalar saฤŸlarken, daha dรผลŸรผk deฤŸerler, ani hissedilebilecek daha hฤฑzlฤฑ ve daha duyarlฤฑ deฤŸiลŸikliklere izin verir. - - - Safety Distance Sensitivity - Gรผvenlik Mesafesi Hassasiyeti - - - How cautious openpilot is around other vehicles or obstacles while in <b>Traffic Mode</b>. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - openpilot'in <b>Trafik Modu</b>ndayken diฤŸer araรงlar veya engeller etrafฤฑnda ne kadar dikkatli olduฤŸu. Daha yรผksek deฤŸerler takip mesafelerini artฤฑrฤฑr ve gรผvenliฤŸi รถnceliklendirir, bu da daha dikkatli bir sรผrรผลŸe yol aรงar, daha dรผลŸรผk deฤŸerler ise daha yakฤฑn takip etmeye izin verir ancak tepki sรผresini azaltabilir. - - - Speed Increase Response - Hฤฑz ArtฤฑลŸฤฑ Yanฤฑtฤฑ - - - How quickly openpilot increases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilot'ฤฑn <b>Trafik Modu</b>ndayken hฤฑzฤฑ ne kadar hฤฑzlฤฑ artฤฑrdฤฑฤŸฤฑ. Daha yรผksek deฤŸerler, hฤฑzlanฤฑrken daha yumuลŸak ve kademeli hฤฑz deฤŸiลŸiklikleri saฤŸlar, daha dรผลŸรผk deฤŸerler ise daha hฤฑzlฤฑ, daha duyarlฤฑ deฤŸiลŸikliklere izin verir, bu da ani hissedilebilir. - - - Speed Decrease Response - Hฤฑz Azaltma Tepkisi - - - How quickly openpilot decreases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilot'ฤฑn <b>Trafik Modu</b>ndayken hฤฑzฤฑ ne kadar hฤฑzlฤฑ dรผลŸรผrdรผฤŸรผ. Daha yรผksek deฤŸerler, yavaลŸlarken daha yumuลŸak ve kademeli hฤฑz deฤŸiลŸiklikleri saฤŸlar, daha dรผลŸรผk deฤŸerler ise daha hฤฑzlฤฑ, daha duyarlฤฑ deฤŸiลŸikliklere izin verir, bu da ani hissedilebilir. - - - Reset Settings - Ayarlarฤฑ Sฤฑfฤฑrla - - - Reset <b>Traffic Mode</b> settings to default values. - Trafik Modu ayarlarฤฑnฤฑ varsayฤฑlan deฤŸerlere sฤฑfฤฑrla. - - - Aggressive Personality - Agresif KiลŸilik - - - Customize the <b>Aggressive</b> personality profile. Designed for a more assertive driving style. - <b>Agresif</b> kiลŸilik profilini รถzelleลŸtirin. Daha iddialฤฑ bir sรผrรผลŸ tarzฤฑ iรงin tasarlanmฤฑลŸtฤฑr. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Aggressive</b> personality profile.<br><br>Default: 1.25 seconds. - Kaรง saniye boyunca openpilot, <b>Aggressive</b> kiลŸilik profili kullanฤฑrken รถndeki araรงlarฤฑ takip edecek.<br><br>Varsayฤฑlan: 1.25 saniye. - - - How sensitive openpilot is to changes in acceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilot'in <b>Aggressive</b> kiลŸilik profili kullanฤฑlฤฑrken hฤฑzlanma deฤŸiลŸikliklerine ne kadar duyarlฤฑ olduฤŸu. Daha yรผksek deฤŸerler daha yumuลŸak, daha kademeli hฤฑzlanma saฤŸlarken, daha dรผลŸรผk deฤŸerler daha hฤฑzlฤฑ, daha duyarlฤฑ deฤŸiลŸikliklere izin verir ve bu deฤŸiลŸiklikler ani hissedilebilir. - - - How sensitive openpilot is to changes in deceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilot'in <b>Aggressive</b> kiลŸilik profili kullanฤฑlฤฑrken yavaลŸlamadaki deฤŸiลŸikliklere ne kadar duyarlฤฑ olduฤŸu. Daha yรผksek deฤŸerler, daha yumuลŸak ve kademeli yavaลŸlamalar saฤŸlarken, daha dรผลŸรผk deฤŸerler daha hฤฑzlฤฑ ve daha duyarlฤฑ deฤŸiลŸikliklere izin verir, bu da ani hissedilebilir. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Aggressive</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - openpilot'ฤฑn diฤŸer araรงlar veya engeller etrafฤฑnda ne kadar dikkatli olduฤŸu <b>Aggressive</b> kiลŸilik profili kullanฤฑlฤฑrken. Daha yรผksek deฤŸerler takip mesafelerini artฤฑrฤฑr ve gรผvenliฤŸi รถnceliklendirir, bu da daha dikkatli sรผrรผลŸe yol aรงar, daha dรผลŸรผk deฤŸerler ise daha yakฤฑn takip etmeye izin verir ancak tepki sรผresini azaltabilir. - - - How quickly openpilot increases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilot'ฤฑn <b>Aggressive</b> kiลŸilik profili kullanฤฑlฤฑrken hฤฑzฤฑ ne kadar hฤฑzlฤฑ artฤฑrdฤฑฤŸฤฑ. Daha yรผksek deฤŸerler, hฤฑzlanฤฑrken daha yumuลŸak ve kademeli hฤฑz deฤŸiลŸiklikleri saฤŸlar, daha dรผลŸรผk deฤŸerler ise daha hฤฑzlฤฑ, daha duyarlฤฑ deฤŸiลŸikliklere izin verir ve bu deฤŸiลŸiklikler ani hissedilebilir. - - - How quickly openpilot decreases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilot'ฤฑn <b>Aggressive</b> kiลŸilik profili kullanฤฑlฤฑrken hฤฑzฤฑ ne kadar hฤฑzlฤฑ dรผลŸรผrdรผฤŸรผ. Daha yรผksek deฤŸerler, yavaลŸlarken daha yumuลŸak ve kademeli hฤฑz deฤŸiลŸiklikleri saฤŸlar, daha dรผลŸรผk deฤŸerler ise daha hฤฑzlฤฑ ve daha duyarlฤฑ deฤŸiลŸikliklere izin verir, bu da ani hissedilebilir. - - - Reset the <b>Aggressive</b> personality profile settings to default values. - <Aggressive> kiลŸilik profili ayarlarฤฑnฤฑ varsayฤฑlan deฤŸerlere sฤฑfฤฑrla. - - - Standard Personality - Standart KiลŸilik - - - Customize the <b>Standard</b> personality profile. Designed for a balanced driving style. - <b>Standart</b> kiลŸilik profilini รถzelleลŸtirin. Dengeli bir sรผrรผลŸ tarzฤฑ iรงin tasarlanmฤฑลŸtฤฑr. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Standard</b> personality profile.<br><br>Default: 1.45 seconds. - Kaรง saniye openpilot, <b>Standart</b> kiลŸilik profili kullanฤฑrken รถndeki araรงlarฤฑ takip edecek.<br><br>Varsayฤฑlan: 1.45 saniye. - - - How sensitive openpilot is to changes in acceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilot'in <b>Standart</b> kiลŸilik profili kullanฤฑlฤฑrken hฤฑzlanma deฤŸiลŸikliklerine ne kadar duyarlฤฑ olduฤŸu. Daha yรผksek deฤŸerler, daha yumuลŸak ve kademeli hฤฑzlanma saฤŸlar, daha dรผลŸรผk deฤŸerler ise daha hฤฑzlฤฑ ve daha duyarlฤฑ deฤŸiลŸikliklere izin verir, bu da ani hissedilebilir. - - - How sensitive openpilot is to changes in deceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilot'ฤฑn <b>Standart</b> kiลŸilik profili kullanฤฑlฤฑrken yavaลŸlamadaki deฤŸiลŸikliklere ne kadar duyarlฤฑ olduฤŸu. Daha yรผksek deฤŸerler, daha yumuลŸak ve kademeli yavaลŸlamalar saฤŸlarken, daha dรผลŸรผk deฤŸerler daha hฤฑzlฤฑ, daha duyarlฤฑ deฤŸiลŸikliklere izin verir ve bu da ani hissedilebilir. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Standard</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - openpilot'in <b>Standart</b> kiลŸilik profili kullanฤฑlฤฑrken diฤŸer araรงlar veya engeller etrafฤฑnda ne kadar dikkatli olduฤŸu. Daha yรผksek deฤŸerler takip mesafelerini artฤฑrฤฑr ve gรผvenliฤŸi รถnceliklendirir, bu da daha dikkatli bir sรผrรผลŸe yol aรงar, daha dรผลŸรผk deฤŸerler ise daha yakฤฑn takip etmeye izin verir ancak tepki sรผresini azaltabilir. - - - How quickly openpilot increases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilot, <b>Standart</b> kiลŸilik profili kullanฤฑlฤฑrken hฤฑzฤฑ ne kadar hฤฑzlฤฑ artฤฑrฤฑr. Daha yรผksek deฤŸerler, hฤฑzlanฤฑrken daha yumuลŸak ve kademeli hฤฑz deฤŸiลŸiklikleri saฤŸlar, daha dรผลŸรผk deฤŸerler ise daha hฤฑzlฤฑ, daha duyarlฤฑ deฤŸiลŸikliklere izin verir ve bu deฤŸiลŸiklikler ani hissedilebilir. - - - How quickly openpilot decreases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilot, <b>Standart</b> kiลŸilik profili kullanฤฑlฤฑrken hฤฑzฤฑ ne kadar hฤฑzlฤฑ dรผลŸรผrรผr. Daha yรผksek deฤŸerler, yavaลŸlarken daha yumuลŸak ve kademeli hฤฑz deฤŸiลŸiklikleri saฤŸlarken, daha dรผลŸรผk deฤŸerler daha hฤฑzlฤฑ, daha duyarlฤฑ deฤŸiลŸikliklere izin verir ve bu deฤŸiลŸiklikler ani hissedilebilir. - - - Reset the <b>Standard</b> personality profile settings to default values. - <b>Standart</b> kiลŸilik profili ayarlarฤฑnฤฑ varsayฤฑlan deฤŸerlere sฤฑfฤฑrla. - - - Relaxed Personality - Rahat KiลŸilik - - - Customize the <b>Relaxed</b> personality profile. Designed for a more laid-back driving style. - <b>Rahat</b> kiลŸilik profilini รถzelleลŸtirin. Daha rahat bir sรผrรผลŸ tarzฤฑ iรงin tasarlanmฤฑลŸtฤฑr. - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Relaxed</b> personality profile.<br><br>Default: 1.75 seconds. - ร–nde giden araรงlarฤฑ <b>Rahat</b> kiลŸilik profiliyle takip ederken openpilot kaรง saniye takip mesafesi bฤฑrakacak.<br><br>Varsayฤฑlan: 1.75 saniye. - - - How sensitive openpilot is to changes in acceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilot'in <b>Rahat</b> kiลŸilik profili kullanฤฑlฤฑrken hฤฑzlanma deฤŸiลŸikliklerine ne kadar duyarlฤฑ olduฤŸu. Daha yรผksek deฤŸerler daha yumuลŸak, daha kademeli hฤฑzlanma saฤŸlarken, daha dรผลŸรผk deฤŸerler daha hฤฑzlฤฑ, daha duyarlฤฑ deฤŸiลŸikliklere izin verir ve bu da ani hissedilebilir. - - - How sensitive openpilot is to changes in deceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilot'ฤฑn <b>Rahat</b> kiลŸilik profili kullanฤฑlฤฑrken yavaลŸlamadaki deฤŸiลŸikliklere ne kadar duyarlฤฑ olduฤŸu. Daha yรผksek deฤŸerler, daha yumuลŸak ve kademeli yavaลŸlamalarla sonuรงlanฤฑrken, daha dรผลŸรผk deฤŸerler, ani hissettirebilecek daha hฤฑzlฤฑ ve daha duyarlฤฑ deฤŸiลŸikliklere izin verir. - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Relaxed</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - openpilot'ฤฑn <b>Rahat</b> kiลŸilik profili kullanฤฑlฤฑrken diฤŸer araรงlar veya engeller etrafฤฑnda ne kadar dikkatli olduฤŸu. Daha yรผksek deฤŸerler takip mesafelerini artฤฑrฤฑr ve gรผvenliฤŸi รถnceliklendirir, bu da daha dikkatli bir sรผrรผลŸe yol aรงar, daha dรผลŸรผk deฤŸerler ise daha yakฤฑn takip etmeye izin verir ancak tepki sรผresini azaltabilir. - - - How quickly openpilot increases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilot'ฤฑn <b>Rahat</b> kiลŸilik profili kullanฤฑlฤฑrken hฤฑzฤฑ ne kadar hฤฑzlฤฑ artฤฑrdฤฑฤŸฤฑ. Daha yรผksek deฤŸerler, hฤฑzlanฤฑrken daha yumuลŸak ve daha kademeli hฤฑz deฤŸiลŸiklikleri saฤŸlar, daha dรผลŸรผk deฤŸerler ise daha hฤฑzlฤฑ ve daha duyarlฤฑ deฤŸiลŸikliklere izin verir, bu da ani hissedilebilir. - - - How quickly openpilot decreases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilot, <b>Rahat</b> kiลŸilik profili kullanฤฑlฤฑrken hฤฑzฤฑ ne kadar hฤฑzlฤฑ dรผลŸรผrรผr. Daha yรผksek deฤŸerler, yavaลŸlarken daha yumuลŸak ve kademeli hฤฑz deฤŸiลŸiklikleri saฤŸlar, daha dรผลŸรผk deฤŸerler ise daha hฤฑzlฤฑ, daha duyarlฤฑ deฤŸiลŸikliklere izin verir ve bu deฤŸiลŸiklikler ani hissedilebilir. - - - Reset the <b>Relaxed</b> personality profile settings to default values. - <b>Rahat</b> kiลŸilik profili ayarlarฤฑnฤฑ varsayฤฑlan deฤŸerlere sฤฑfฤฑrla. - - - Longitudinal Tuning - Boylamsal Ayarlama - - - Settings that control how openpilot manages speed and acceleration. - openpilot'ฤฑn hฤฑz ve ivmeyi nasฤฑl yรถnettiฤŸini kontrol eden ayarlar. - - - Acceleration Profile - ฤฐvme Profili - - - Enable either a sporty or eco-friendly acceleration profile. <b>Sport+</b> aims to make openpilot accelerate as fast as possible! - Ya sportif ya da รงevre dostu bir hฤฑzlanma profili etkinleลŸtirin. <b>Sport+</b>, openpilot'un mรผmkรผn olduฤŸunca hฤฑzlฤฑ hฤฑzlanmasฤฑnฤฑ hedefler! - - - Deceleration Profile - YavaลŸlama Profili - - - Enable either a sporty or eco-friendly deceleration profile. - Ya sportif ya da รงevre dostu bir yavaลŸlama profili etkinleลŸtirin. - - - Human-Like Acceleration - ฤฐnsan Benzeri ฤฐvme - - - Use the lead vehicle's acceleration rate when at a takeoff and ramp off the acceleration rate when approaching the maximum set speed for a more "human-like" driving experience. - KalkฤฑลŸta lider aracฤฑn ivme oranฤฑnฤฑ kullanฤฑn ve maksimum ayarlanan hฤฑza yaklaลŸฤฑrken ivme oranฤฑnฤฑ azaltarak daha "insan benzeri" bir sรผrรผลŸ deneyimi saฤŸlayฤฑn. - - - Human-Like Approach Behind Leads - Leads'in Ardฤฑndaki ฤฐnsan Benzeri YaklaลŸฤฑm - - - Dynamically adjust the desired following distance when approaching slower or stopped vehicles for a more "human-like" driving experience. - Daha "insan benzeri" bir sรผrรผลŸ deneyimi iรงin daha yavaลŸ veya duran araรงlara yaklaลŸฤฑrken istenen takip mesafesini dinamik olarak ayarlayฤฑn. - - - Lead Detection Confidence - KurลŸun Tespit Gรผveni - - - How sensitive openpilot is to detecting vehicles ahead. A lower value can help detect vehicles sooner and from farther away, but increases the chance openpilot mistakes other objects for vehicles. - Openpilot'ฤฑn รถndeki araรงlarฤฑ algฤฑlamaya ne kadar duyarlฤฑ olduฤŸu. Daha dรผลŸรผk bir deฤŸer, araรงlarฤฑ daha erken ve daha uzaktan algฤฑlamaya yardฤฑmcฤฑ olabilir, ancak openpilot'ฤฑn diฤŸer nesneleri araรงlarla karฤฑลŸtฤฑrma olasฤฑlฤฑฤŸฤฑnฤฑ artฤฑrฤฑr. - - - Maximum Acceleration Rate - Maksimum ฤฐvme Oranฤฑ - - - Set a cap on how fast openpilot can accelerate. - Openpilot'ฤฑn ne kadar hฤฑzlฤฑ hฤฑzlanabileceฤŸine bir sฤฑnฤฑr koyun. - - - "Taco Bell Run" Turn Speed Hack - "Taco Bell Run" DรถnรผลŸ Hฤฑzฤฑ Hilesi - - - The turn speed hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to slow down when taking left/right turns for smoother turns. - Comma'nฤฑn 2022 "Taco Bell Run" sรผrรผลŸรผnden dรถnรผลŸ hฤฑzฤฑ hilesi. Daha yumuลŸak dรถnรผลŸler iรงin sola/saฤŸa dรถnรผลŸlerde yavaลŸlamak รผzere tasarlanmฤฑลŸtฤฑr. - - - Quality of Life - YaลŸam Kalitesi - - - Miscellaneous features to improve the acceleration and braking experience. - Hฤฑzlanma ve frenleme deneyimini iyileลŸtirmek iรงin รงeลŸitli รถzellikler. - - - Cruise Interval - Seyir AralฤฑฤŸฤฑ - - - The interval used when changing the cruise control speed. - Hฤฑz sabitleyici hฤฑzฤฑnฤฑ deฤŸiลŸtirirken kullanฤฑlan aralฤฑk. - - - Cruise Interval (Long Press) - Seyir AralฤฑฤŸฤฑ (Uzun Basma) - - - The interval used when changing the cruise control speed while holding down the button for 0.5+ seconds. - 0.5+ saniye boyunca dรผฤŸmeye basฤฑlฤฑ tutulduฤŸunda hฤฑz sabitleyici hฤฑzฤฑnฤฑ deฤŸiลŸtirirken kullanฤฑlan aralฤฑk. - - - Force Keep openpilot in the Standstill State - Openpilot'i Durma Halinde Zorla Tut - - - Keep openpilot in the standstill state until either the gas pedal or <b>resume</b> button is pressed. - Gaz pedalฤฑ veya <b>devam</b> dรผฤŸmesine basฤฑlana kadar openpilot'u durma durumunda tutun. - - - Force Stop for "Detected" Stop Lights/Signs - "Algฤฑlanan" Dur IลŸฤฑklarฤฑ/Levhalarฤฑ iรงin Zorla Durdurma - - - Force a stop whenever openpilot <b>detects</b> a potential red light/stop sign to prevent it from running the red light/stop sign. - Aรงฤฑk pilot potansiyel bir kฤฑrmฤฑzฤฑ ฤฑลŸฤฑk/dur iลŸareti <b>tespit ettiฤŸinde</b>, kฤฑrmฤฑzฤฑ ฤฑลŸฤฑk/dur iลŸaretini geรงmesini รถnlemek iรงin durmayฤฑ zorlayฤฑn. - - - Increase Stopped Distance - Durdurulan Mesafeyi Artฤฑr - - - Increase the distance openpilot stops behind vehicles. - Openpilot'ฤฑn araรงlarฤฑn arkasฤฑnda durduฤŸu mesafeyi artฤฑrฤฑn. - - - Set Speed Offset - Hฤฑz Ofsetini Ayarla - - - How much higher or lower the set speed should be compared to your current set speed. For example, if you prefer to drive 5 mph above the speed limit, this setting will automatically add that difference when you adjust your set speed. - Mevcut ayarlanan hฤฑzฤฑnฤฑza kฤฑyasla ayarlanan hฤฑzฤฑn ne kadar daha yรผksek veya dรผลŸรผk olmasฤฑ gerektiฤŸi. ร–rneฤŸin, hฤฑz sฤฑnฤฑrฤฑnฤฑn 5 mil/saat รผzerinde sรผrmeyi tercih ediyorsanฤฑz, bu ayar ayarlanan hฤฑzฤฑnฤฑzฤฑ ayarladฤฑฤŸฤฑnฤฑzda otomatik olarak bu farkฤฑ ekleyecektir. - - - Map Accel/Decel to Gears - Viteslere Hฤฑzlanma/YavaลŸlama EลŸleลŸtir - - - Map the acceleration and deceleration profiles to your car's <b>Eco</b> or <b>Sport</b> gear modes. - Aracฤฑnฤฑzฤฑn <b>Eco</b> veya <b>Sport</b> vites modlarฤฑna hฤฑzlanma ve yavaลŸlama profillerini eลŸleyin. - - - Reverse Cruise Increase - Tersine Seyir ArtฤฑลŸฤฑ - - - Reverse the <b>long press</b> cruise increase feature to increase the max speed by 5 instead of 1 on short presses. - Uzun basma <b>seyir artฤฑrma</b> รถzelliฤŸini tersine รงevirerek kฤฑsa basmalarda maksimum hฤฑzฤฑ 1 yerine 5 artฤฑrฤฑn. - - - Speed Limit Controller - Hฤฑz Sฤฑnฤฑrฤฑ Kontrol Cihazฤฑ - - - Limit openpilot's maximum driving speed based on data from downloaded maps, <b>Mapbox</b>, <b>Navigate on openpilot</b>, or the dashboard (supported vehicles: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - openpilot'ฤฑn maksimum sรผrรผลŸ hฤฑzฤฑnฤฑ indirilen haritalardan, <b>Mapbox</b>, <b>Navigate on openpilot</b> veya gรถsterge panelinden gelen verilere gรถre sฤฑnฤฑrla (desteklenen araรงlar: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - - - Fallback Speed - Yedek Hฤฑz - - - The speed limit source when no speed limit data is available. - Hฤฑz sฤฑnฤฑrฤฑ verisi mevcut olmadฤฑฤŸฤฑnda kullanฤฑlan hฤฑz sฤฑnฤฑrฤฑ kaynaฤŸฤฑ. - - - Override Speed - Hฤฑzฤฑ Geรงersiz Kฤฑl - - - The speed openpilot uses after manually exceeding the posted speed limit.<br><br><b>- Set With Gas Pedal</b>: Uses the speed obtained while pressing the gas<br><b>- Max Set Speed</b>: Uses the cruise control set speed<br><br>Overrides clear upon disengagement. - Manuel olarak belirtilen hฤฑz sฤฑnฤฑrฤฑnฤฑ aลŸtฤฑktan sonra openpilot'un kullandฤฑฤŸฤฑ hฤฑz.<br><br><b>- Gaz Pedalฤฑ ile Ayarla</b>: Gaz pedalฤฑna basarken elde edilen hฤฑzฤฑ kullanฤฑr<br><b>- Maksimum Ayar Hฤฑzฤฑ</b>: Hฤฑz sabitleyici ayar hฤฑzฤฑnฤฑ kullanฤฑr<br><br>Devreden รงฤฑkma durumunda geรงersiz kฤฑlmalar temizlenir. - - - Miscellaneous features to improve the <b>Speed Limit Controller</b> experience. - Hฤฑz Sฤฑnฤฑrฤฑ Kontrol Cihazฤฑ deneyimini geliลŸtirmek iรงin รงeลŸitli รถzellikler. - - - Confirm New Speed Limits - Yeni Hฤฑz Sฤฑnฤฑrlarฤฑnฤฑ Onayla - - - Require confirmation before applying new speed limits. To accept, use the flashing widget on the driving screen or press the <b>Cruise Increase</b> button. To deny, press the <b>Cruise Decrease</b> button or simply ignore the prompt for 30 seconds. - Yeni hฤฑz sฤฑnฤฑrlarฤฑnฤฑ uygulamadan รถnce onay gerektir. Kabul etmek iรงin sรผrรผลŸ ekranฤฑndaki yanฤฑp sรถnen widget'ฤฑ kullan veya <b>Seyir Artฤฑr</b> dรผฤŸmesine bas. Reddetmek iรงin <b>Seyir Azalt</b> dรผฤŸmesine bas veya istemi 30 saniye boyunca gรถrmezden gel. - - - Force MPH Readings from Dashboard - Gรถsterge Tablosundan MPH Okumalarฤฑnฤฑ Zorla - - - Force dashboard speed limit readings to be in mph. - Gรถsterge paneli hฤฑz sฤฑnฤฑrฤฑ okumalarฤฑnฤฑ mph olarak zorla. - - - Higher Limit Lookahead Time - Daha Yรผksek Limit BakฤฑลŸ Sรผresi - - - How far ahead openpilot anticipates upcoming higher speed limits from the downloaded map data. - Openpilot, indirilen harita verilerinden yaklaลŸan daha yรผksek hฤฑz limitlerini ne kadar รถnceden tahmin ediyor. - - - Lower Limit Lookahead Time - Alt Limit BakฤฑลŸ Sรผresi - - - How far ahead openpilot anticipates upcoming lower speed limits from the downloaded map data. - Openpilot, indirilen harita verilerinden yaklaลŸan daha dรผลŸรผk hฤฑz limitlerini ne kadar รถnceden tahmin eder. - - - Match Speed Limit on Engage - Hฤฑz Sฤฑnฤฑrฤฑnฤฑ EtkinleลŸtir'de EลŸleลŸtir - - - Automatically set cruise control speed to match the current speed limit when first enabling openpilot. - Aรงฤฑk pilotu ilk etkinleลŸtirdiฤŸinizde hฤฑz sabitleyici hฤฑzฤฑnฤฑ mevcut hฤฑz sฤฑnฤฑrฤฑna otomatik olarak ayarlayฤฑn. - - - Use Mapbox as Fallback - Mapbox'u Yedek Olarak Kullan - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - DiฤŸer kaynaklar mevcut olmadฤฑฤŸฤฑnda <b>Mapbox</b> hฤฑz sฤฑnฤฑrฤฑ verilerini kullanฤฑn. - - - Speed Limit Source Priority - Hฤฑz Sฤฑnฤฑrฤฑ Kaynak ร–nceliฤŸi - - - Define the priority order for speed limit sources (<b>Dashboard</b>, <b>Map Data</b>, <b>Navigation</b>). Higher-priority sources override lower ones when multiple limits are detected. - Hฤฑz sฤฑnฤฑrฤฑ kaynaklarฤฑ iรงin รถncelik sฤฑrasฤฑnฤฑ tanฤฑmlayฤฑn (<b>Gรถsterge Paneli</b>, <b>Harita Verileri</b>, <b>Navigasyon</b>). Birden fazla sฤฑnฤฑr algฤฑlandฤฑฤŸฤฑnda, daha yรผksek รถncelikli kaynaklar daha dรผลŸรผk olanlarฤฑ geรงersiz kฤฑlar. - - - Speed Limit Offsets - Hฤฑz Sฤฑnฤฑrฤฑ Ofsetleri - - - Offsets relative to the posted speed limit for a more "human-like" driving experience. - Yayฤฑnlanan hฤฑz sฤฑnฤฑrฤฑna gรถre daha "insan benzeri" bir sรผrรผลŸ deneyimi iรงin ofsetler. - - - Target speed offset applied for posted limits between 0 and 24 mph. - Hedef hฤฑz ofseti, 0 ile 24 mph arasฤฑndaki ilan edilen limitler iรงin uygulanฤฑr. - - - Target speed offset applied for posted limits between 25 and 34 mph. - Hedef hฤฑz ofseti, 25 ile 34 mph arasฤฑndaki ilan edilen limitler iรงin uygulanฤฑr. - - - Target speed offset applied for posted limits between 35 and 44 mph. - Hedef hฤฑz ofseti, 35 ile 44 mil/saat arasฤฑndaki ilan edilen limitler iรงin uygulanฤฑr. - - - Target speed offset applied for posted limits between 45 and 54 mph. - Hedef hฤฑz ofseti, 45 ile 54 mil/saat arasฤฑndaki ilan edilen limitler iรงin uygulanฤฑr. - - - Target speed offset applied for posted limits between 55 and 64 mph. - Hedef hฤฑz ofseti, 55 ile 64 mph arasฤฑndaki ilan edilen limitler iรงin uygulanฤฑr. - - - Target speed offset applied for posted limits between 65 and 74 mph. - 65 ile 74 mil/saat arasฤฑndaki ilan edilen hฤฑz sฤฑnฤฑrlarฤฑ iรงin hedef hฤฑz sapmasฤฑ uygulandฤฑ. - - - Target speed offset applied for posted limits between 75 and 99 mph. - Hedef hฤฑz ofseti, 75 ile 99 mil/saat arasฤฑndaki ilan edilen limitler iรงin uygulanฤฑr. - - - Visual Settings - Gรถrsel Ayarlar - - - Visual features to improve the <b>Speed Limit Controller</b> experience. - Gรถrsel รถzellikler, <b>Hฤฑz Sฤฑnฤฑrฤฑ Kontrol Cihazฤฑ</b> deneyimini geliลŸtirmek iรงin. - - - Show Speed Limit Offset - Hฤฑz Sฤฑnฤฑrฤฑ Ofsetini Gรถster - - - Display the speed limit offset separately on the driving screen. - Hฤฑz sฤฑnฤฑrฤฑ ofsetini sรผrรผลŸ ekranฤฑnda ayrฤฑ olarak gรถster. - - - Show Speed Limit Sources - Hฤฑz Sฤฑnฤฑrฤฑ Kaynaklarฤฑnฤฑ Gรถster - - - Display the speed limit sources on the driving screen. - SรผrรผลŸ ekranฤฑnda hฤฑz limiti kaynaklarฤฑnฤฑ gรถster. - - - seconds - saniye - - - m/sยฒ - m/sยฒ - - - mph - mph - - - With Lead - KurลŸunlu - - - Switch to <b>Experimental Mode</b> when driving below this speed with a lead. - ร–ncรผ ile bu hฤฑzฤฑn altฤฑnda sรผrerken <b>Deneysel Moda</b> geรงin. - - - Slower Lead - Daha YavaลŸ KurลŸun - - - Stopped Lead - Durdurulan Potansiyel MรผลŸteri - - - Intersections - KesiลŸmeler - - - Turns - DรถnรผลŸler - - - Off - Kapalฤฑ - - - second - ikinci - - - RESET - SIFIRLA - - - Standard - Standart - - - Eco - Eko - - - Sport - Spor - - - Sport+ - Translation A - - - feet - ayaklar - - - Acceleration - ฤฐvme - - - Deceleration - YavaลŸlama - - - Set Speed - Hฤฑzฤฑ Ayarla - - - Experimental Mode - Deneysel Modu - - - Previous Limit - ร–nceki Limit - - - None - Hiรงbiri - - - Set With Gas Pedal - Gaz Pedalฤฑyla Ayarla - - - Max Set Speed - Maksimum Ayarlanan Hฤฑz - - - SELECT - SELECT - - - Dashboard - Gรถsterge Paneli - - - Map Data - Harita Verileri - - - Navigation - Navigasyon - - - Highest - En yรผksek - - - Lowest - En dรผลŸรผk - - - Select your primary priority - Birincil รถnceliฤŸinizi seรงin - - - Select your secondary priority - ฤฐkincil รถnceliฤŸinizi seรงin - - - Select your tertiary priority - รœรงรผncรผl รถnceliฤŸinizi seรงin - - - MANAGE - Yร–NET - - - Lower Limits - Alt Sฤฑnฤฑrlar - - - Higher Limits - Daha Yรผksek Limitler - - - Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? - Ayarlarฤฑnฤฑzฤฑ <b>Trafik Modu</b> iรงin tamamen sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? - - - Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? - <Aggressive> kiลŸiliฤŸi iรงin ayarlarฤฑnฤฑzฤฑ tamamen sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? - - - Are you sure you want to completely reset your settings for the <b>Standard</b> personality? - Ayarlarฤฑnฤฑzฤฑ <b>Standart</b> kiลŸilik iรงin tamamen sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? - - - Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? - <b>Rahat</b> kiลŸiliฤŸiniz iรงin ayarlarฤฑnฤฑzฤฑ tamamen sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? - - - foot - ayak - - - meter - metre - - - meters - metreler - - - km/h - km/h - - - Target speed offset applied for posted limits between 0 and 29 km/h. - Hedef hฤฑz ofseti, 0 ile 29 km/s arasฤฑndaki ilan edilen limitler iรงin uygulanฤฑr. - - - Target speed offset applied for posted limits between 30 and 49 km/h. - Hedef hฤฑz ofseti, 30 ile 49 km/s arasฤฑndaki ilan edilen limitler iรงin uygulanฤฑr. - - - Target speed offset applied for posted limits between 50 and 59 km/h. - Hedef hฤฑz ofseti, 50 ile 59 km/s arasฤฑndaki ilan edilen limitler iรงin uygulandฤฑ. - - - Target speed offset applied for posted limits between 60 and 79 km/h. - Hedef hฤฑz ofseti, 60 ile 79 km/s arasฤฑndaki ilan edilen limitler iรงin uygulanฤฑr. - - - Target speed offset applied for posted limits between 80 and 99 km/h. - Hedef hฤฑz ofseti, 80 ile 99 km/s arasฤฑndaki ilan edilen limitler iรงin uygulanฤฑr. - - - Target speed offset applied for posted limits between 100 and 119 km/h. - Hedef hฤฑz ofseti, 100 ile 119 km/s arasฤฑndaki ilan edilen limitler iรงin uygulanฤฑr. - - - Target speed offset applied for posted limits between 120 and 140 km/h. - Hedef hฤฑz ofseti, 120 ile 140 km/s arasฤฑndaki ilan edilen limitler iรงin uygulanฤฑr. - Advanced Longitudinal Tuning - GeliลŸmiลŸ Boylamsal Ayarlama + GeliลŸmiลŸ Boylamasฤฑna Ayar - Advanced settings for customizing how openpilot handles acceleration and braking. - Openpilot'ฤฑn hฤฑzlanma ve frenlemeyi nasฤฑl yรถnettiฤŸini รถzelleลŸtirmek iรงin geliลŸmiลŸ ayarlar. + <b>Advanced acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>GeliลŸmiลŸ hฤฑzlanma ve fren kontrolรผ deฤŸiลŸiklikleri</b>, openpilotโ€™un sรผrรผลŸรผnรผ ince ayar yapmak iรงin. Actuator Delay (Default: %1) - Aktรผatรถr Gecikmesi (Varsayฤฑlan: %1) + Eyleyici Gecikmesi (Varsayฤฑlan: %1) Actuator Delay - Aktรผatรถr Gecikmesi + Aktรผatรถr Gecikmesi - Delay before throttle or brake takes effect. Higher values smooth slow actuators but can feel laggy; lower values react quicker but may overshoot. - Gecikme, gaz veya frenin etkili olmasฤฑndan รถnce gerรงekleลŸir. Daha yรผksek deฤŸerler yavaลŸ aktรผatรถrleri yumuลŸatฤฑr ancak gecikmeli hissedilebilir; daha dรผลŸรผk deฤŸerler daha hฤฑzlฤฑ tepki verir ancak aลŸฤฑrฤฑya kaรงabilir. + <b>The time between openpilot's throttle or brake command and the vehicle's response.</b> Increase if the vehicle feels slow to react; decrease if it feels too eager or overshoots. + <b>openpilotโ€™ฤฑn gaz veya fren komutu ile aracฤฑn tepkisi arasฤฑndaki sรผre.</b> Araรง tepkide yavaลŸ kalฤฑyorsa artฤฑrฤฑn; fazla istekli hissediyor veya hedefi aลŸฤฑyorsa azaltฤฑn. Start Acceleration (Default: %1) - BaลŸlangฤฑรง Hฤฑzlanmasฤฑ (Varsayฤฑlan: %1) + BaลŸlangฤฑรง Hฤฑzlanmasฤฑ (Varsayฤฑlan: %1) Start Acceleration - Hฤฑzlanmayฤฑ BaลŸlat + Hฤฑzlanmayฤฑ BaลŸlat - Extra acceleration applied when pulling away from a stop. Increase for snappier launches at the cost of smoothness; decrease for gentler starts. - DuruลŸtan kalkarken ekstra ivme uygulanฤฑr. Daha hฤฑzlฤฑ kalkฤฑลŸlar iรงin artฤฑrฤฑn, ancak pรผrรผzsรผzlรผkten รถdรผn verin; daha yumuลŸak baลŸlangฤฑรงlar iรงin azaltฤฑn. + <b>Extra acceleration applied when starting from a stop.</b> Increase for quicker takeoffs; decrease for smoother, gentler starts. + <b>Durmadan harekete geรงerken ekstra hฤฑzlanma uygulanฤฑr.</b> Daha hฤฑzlฤฑ kalkฤฑลŸlar iรงin artฤฑrฤฑn; daha yumuลŸak, nazik baลŸlangฤฑรงlar iรงin azaltฤฑn. Start Speed (Default: %1) - BaลŸlangฤฑรง Hฤฑzฤฑ (Varsayฤฑlan: %1) + BaลŸlangฤฑรง Hฤฑzฤฑ (Varsayฤฑlan: %1) Start Speed - Hฤฑz BaลŸlat + BaลŸlangฤฑรง Hฤฑzฤฑ - Speed where openpilot begins to exit the stopped state. Higher values avoid creeping but may feel sluggish; lower values move sooner but risk creeping. - openpilot'in durma durumundan รงฤฑkmaya baลŸladฤฑฤŸฤฑ hฤฑz. Daha yรผksek deฤŸerler sรผrรผnmeyi รถnler ancak yavaลŸ hissedilebilir; daha dรผลŸรผk deฤŸerler daha erken hareket eder ancak sรผrรผnme riski taลŸฤฑr. + <b>The speed at which openpilot exits the stopped state.</b> Increase to reduce creeping; decrease to move sooner after stopping. + <b>openpilotโ€™ฤฑn durma durumundan รงฤฑktฤฑฤŸฤฑ hฤฑz.</b> Sรผrรผnmeyi azaltmak iรงin artฤฑrฤฑn; durduktan sonra daha erken hareket etmek iรงin azaltฤฑn. Stop Acceleration (Default: %1) - Hฤฑzlanmayฤฑ Durdur (Varsayฤฑlan: %1) + Hฤฑzlanmayฤฑ Durdur (Varsayฤฑlan: %1) Stop Acceleration - Hฤฑzlanmayฤฑ Durdur + Hฤฑzlanmayฤฑ Durdur - Brake force applied to hold the vehicle still. Larger values prevent creeping on hills but might jerk to a stop. Smaller values can feel smoother but may allow rolling. - Aracฤฑ sabit tutmak iรงin uygulanan fren kuvveti. Daha bรผyรผk deฤŸerler, yokuลŸlarda kaymayฤฑ รถnler ancak ani durmalara neden olabilir. Daha kรผรงรผk deฤŸerler daha pรผrรผzsรผz hissedilebilir ancak yuvarlanmaya izin verebilir. + <b>Brake force applied to hold the vehicle at a standstill.</b> Increase to prevent rolling on hills; decrease for smoother, softer stops. + <b>Araรง hareketsiz dururken tutulmasฤฑ iรงin fren kuvveti uygulanฤฑr.</b> YokuลŸta kaymayฤฑ รถnlemek iรงin artฤฑrฤฑn; daha yumuลŸak, sarsฤฑntฤฑsฤฑz duruลŸlar iรงin azaltฤฑn. Stopping Rate (Default: %1) - Durdurma Oranฤฑ (Varsayฤฑlan: %1) + Durdurma Hฤฑzฤฑ (Varsayฤฑlan: %1) Stopping Rate - Durdurma Oranฤฑ + Durdurma Hฤฑzฤฑ - How quickly braking ramps up when stopping. Faster rates shorten stopping distance but can be harsh; slower rates are smoother but need more room. - Fren yaparken durmanฤฑn ne kadar hฤฑzlฤฑ arttฤฑฤŸฤฑ. Daha hฤฑzlฤฑ oranlar durma mesafesini kฤฑsaltฤฑr ancak sert olabilir; daha yavaลŸ oranlar daha pรผrรผzsรผzdรผr ancak daha fazla alan gerektirir. + <b>How quickly braking ramps up when stopping.</b> Increase for shorter, firmer stops; decrease for smoother, longer stops. + <b>Dururken frenlemenin ne kadar hฤฑzlฤฑ artacaฤŸฤฑ.</b> Daha kฤฑsa ve sert duruลŸlar iรงin artฤฑrฤฑn; daha yumuลŸak ve uzun duruลŸlar iรงin azaltฤฑn. Stop Speed (Default: %1) - Hฤฑzฤฑ Durdur (Varsayฤฑlan: %1) + Durdurma Hฤฑzฤฑ (Varsayฤฑlan: %1) Stop Speed - Hฤฑzฤฑ Durdur + Durma Hฤฑzฤฑ - Speed where openpilot beings to enter the stopped state. Higher values brake earlier for smoother stops but might stop too soon; lower values wait longer and can overshoot. - Openpilot'in durma durumuna girmeye baลŸladฤฑฤŸฤฑ hฤฑz. Daha yรผksek deฤŸerler daha erken fren yaparak daha yumuลŸak duruลŸlar saฤŸlar ancak รงok erken durabilir; daha dรผลŸรผk deฤŸerler daha uzun sรผre bekler ve aลŸฤฑrฤฑya kaรงabilir. + <b>The speed at which openpilot considers the vehicle stopped.</b> Increase to brake earlier and stop smoothly; decrease to wait longer but risk overshooting. + <b>openpilotโ€™ฤฑn aracฤฑn durduฤŸunu kabul ettiฤŸi hฤฑz.</b> Daha erken frenleyip yumuลŸak durmak iรงin artฤฑrฤฑn; daha uzun beklemek ama aลŸma riski taลŸฤฑmak iรงin azaltฤฑn. + + + Conditional Experimental Mode + KoลŸullu Deneysel Mod + + + <b>Automatically switch to "Experimental Mode" when set conditions are met.</b> Allows the model to handle challenging situations with smarter decision making. + <b>Belirlenen koลŸullar karลŸฤฑlandฤฑฤŸฤฑnda otomatik olarak "Deneysel Mod"a geรง.</b> Modelin zorlu durumlarla daha akฤฑllฤฑ karar verme ile baลŸa รงฤฑkmasฤฑnฤฑ saฤŸlar. + + + Below + AลŸaฤŸฤฑda + + + <b>Switch to "Experimental Mode" when driving below this speed without a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>Bu hฤฑzฤฑn altฤฑnda รถndeki araรง olmadan sรผrerken "Deneysel Mod"a geรงin</b>; openpilotโ€™un dรผลŸรผk hฤฑz durumlarฤฑnฤฑ daha akฤฑcฤฑ yรถnetmesine yardฤฑmcฤฑ olur. + + + Curve Detected Ahead + ฤฐleride viraj tespit edildi + + + <b>Switch to "Experimental Mode" when a curve is detected</b> to allow the model to set an appropriate speed for the curve. + <b>Bir viraj algฤฑlandฤฑฤŸฤฑnda "Deneysel Mod"a geรงin</b>; modelin viraj iรงin uygun hฤฑzฤฑ belirlemesine izin verin. + + + Lead Detected Ahead + ร–ndeki Araรง Tespit Edildi + + + <b>Switch to "Experimental Mode" when a slower or stopped vehicle is detected.</b> Can make braking smoother and more reliable on some vehicles. + <b>Daha yavaลŸlayan veya duran bir araรง algฤฑlandฤฑฤŸฤฑnda "Deneysel Mod"a geรงin.</b> Bazฤฑ araรงlarda frenlemeyi daha yumuลŸak ve daha gรผvenilir hale getirebilir. + + + Navigation-Based + Navigasyona Dayalฤฑ + + + <b>Switch to "Experimental Mode" when approaching intersections or turns on the active route</b> while using "Navigate on openpilot" (NOO) to allow the model to set an appropriate speed for upcoming maneuvers. + <b>โ€œNavigate on openpilotโ€ (NOO) kullanฤฑrken, yaklaลŸan manevralar iรงin modelin uygun hฤฑzฤฑ ayarlamasฤฑna izin vermek amacฤฑyla, aktif rotadaki kavลŸaklara veya dรถnรผลŸlere yaklaลŸฤฑrken โ€œDeneysel Modโ€a geรงin</b>. + + + Predicted Stop In + Tahmini Durma Sรผresi + + + <b>Switch to "Experimental Mode" when openpilot predicts a stop within the set time.</b> This is usually triggered when the model "sees" a red light or stop sign ahead.<br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>openpilot belirlenen sรผre iรงinde bir duruลŸ รถngรถrdรผฤŸรผnde "Deneysel Mod"a geรงin.</b> Bu genellikle model ileride bir kฤฑrmฤฑzฤฑ ฤฑลŸฤฑk veya dur iลŸareti "gรถrdรผฤŸรผnde" tetiklenir.<br><br><i><b>Feragat</b>: openpilot trafik ฤฑลŸฤฑklarฤฑnฤฑ veya dur iลŸaretlerini aรงฤฑkรงa tespit etmez. "Deneysel Mod"da, openpilot kamera girdisinden uรงtan uca sรผrรผลŸ kararlarฤฑ verir; bu, aรงฤฑk bir neden olmasa bile durabileceฤŸi anlamฤฑna gelir.</i> + + + Turn Signal Below + Sinyal AลŸaฤŸฤฑda + + + <b>Switch to "Experimental Mode" when using a turn signal below the set speed</b> to allow the model to choose an appropriate speed for smoother left and right turns. + <b>Ayarlanan hฤฑzฤฑn altฤฑnda sinyal kullanฤฑrken "Deneysel Mod"a geรง</b>; modelin sol ve saฤŸ dรถnรผลŸlerde daha pรผrรผzsรผz sรผrรผลŸ iรงin uygun bir hฤฑz seรงmesine izin vermek. + + + Status Widget + Durum Widgetโ€™ฤฑ + + + <b>Show which condition triggered "Experimental Mode"</b> on the driving screen. + SรผrรผลŸ ekranฤฑnda "Deneysel Mod"u tetikleyen koลŸulu <b>gรถster</b>. + + + Curve Speed Controller + Viraj Hฤฑz Denetleyicisi + + + <b>Automatically slow down for upcoming curves</b> using data learned from your driving style, adapting to curves as you would. + <b>YaklaลŸan virajlar iรงin otomatik olarak yavaลŸlayฤฑn</b>; sรผrรผลŸ tarzฤฑnฤฑzdan รถฤŸrenilen verileri kullanarak virajlara sizin gibi uyum saฤŸlar. + + + Calibrated Lateral Acceleration + Kalibre EdilmiลŸ Yanal ฤฐvme + + + <b>The learned lateral acceleration from collected driving data.</b> This sets how fast openpilot will take curves. Higher values allow faster cornering; lower values slow the vehicle for gentler turns. + <b>Toplanan sรผrรผลŸ verilerinden รถฤŸrenilen yanal ivme.</b> Bu, openpilotโ€™un virajlarฤฑ hangi hฤฑzda alacaฤŸฤฑnฤฑ belirler. Daha yรผksek deฤŸerler daha hฤฑzlฤฑ viraj almaya izin verir; daha dรผลŸรผk deฤŸerler daha yumuลŸak dรถnรผลŸler iรงin aracฤฑ yavaลŸlatฤฑr. + + + Calibration Progress + Kalibrasyon ฤฐlerleme Durumu + + + <b>How much curve data has been collected.</b> This is a progress meter; it is normal for the value to stay low and rarely reach 100%. + <b>Ne kadar viraj verisi toplandฤฑฤŸฤฑ.</b> Bu bir ilerleme รถlรงer; deฤŸerin dรผลŸรผk kalmasฤฑ ve nadiren %100โ€™e ulaลŸmasฤฑ normaldir. + + + Reset Curve Data + EฤŸri Verilerini Sฤฑfฤฑrla + + + <b>Reset collected user data for "Curve Speed Controller".</b> + <b>"Viraj Hฤฑz Denetleyicisi" iรงin toplanan kullanฤฑcฤฑ verilerini sฤฑfฤฑrla.</b> + + + <b>Show the "Curve Speed Controller" target speed on the driving screen.</b> + <b>SรผrรผลŸ ekranฤฑnda "Curve Speed Controller" hedef hฤฑzฤฑnฤฑ gรถster.</b> + + + Driving Personalities + SรผrรผลŸ KiลŸilikleri + + + <b>Customize the "Driving Personalities"</b> to better match your driving style. + <b>"SรผrรผลŸ KiลŸilikleri"ni ร–zelleลŸtirin</b> sรผrรผลŸ tarzฤฑnฤฑza daha iyi uysun. + + + Traffic Mode + Trafik Modu + + + <b>Customize the "Traffic Mode" personality profile.</b> Designed for stop-and-go driving. + <b>"Trafik Modu" kiลŸilik profilini รถzelleลŸtirin.</b> Dur-kalk sรผrรผลŸ iรงin tasarlanmฤฑลŸtฤฑr. + + + Following Distance + Takip Mesafesi + + + <b>The minimum following distance to the lead vehicle in "Traffic Mode".</b> openpilot blends between this value and the "Aggressive" profile as speed increases. Increase for more space; decrease for tighter gaps. + <b>"Trafik Modu"nda รถndeki araca minimum takip mesafesi.</b> openpilot, hฤฑz arttฤฑkรงa bu deฤŸer ile "Agresif" profil arasฤฑnda geรงiลŸ yapar. Daha fazla boลŸluk iรงin artฤฑrฤฑn; daha dar aralฤฑklar iรงin azaltฤฑn. + + + Acceleration Smoothness + ฤฐvme YumuลŸaklฤฑฤŸฤฑ + + + <b>How smoothly openpilot accelerates in "Traffic Mode".</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>"Trafik Modu"nda openpilotโ€™ฤฑn ne kadar yumuลŸak hฤฑzlandฤฑฤŸฤฑ.</b> Daha nazik kalkฤฑลŸlar iรงin artฤฑrฤฑn; daha hฤฑzlฤฑ ancak daha ani kalkฤฑลŸlar iรงin azaltฤฑn. + + + Braking Smoothness + Frenleme YumuลŸaklฤฑฤŸฤฑ + + + <b>How smoothly openpilot brakes in "Traffic Mode".</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>"Trafik Modu"nda openpilot'ฤฑn ne kadar yumuลŸak fren yaptฤฑฤŸฤฑ.</b> Daha nazik duruลŸlar iรงin artฤฑrฤฑn; daha hฤฑzlฤฑ fakat daha keskin frenleme iรงin azaltฤฑn. + + + Safety Gap Bias + Gรผvenlik BoลŸluฤŸu ร–nyargฤฑsฤฑ + + + <b>How much extra space openpilot keeps from the vehicle ahead in "Traffic Mode".</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>"Trafik Modu"nda openpilotโ€™ฤฑn รถndeki araรงla bฤฑraktฤฑฤŸฤฑ ekstra mesafe.</b> Daha bรผyรผk aralฤฑklar ve daha temkinli takip iรงin artฤฑrฤฑn; daha dar aralฤฑklar ve daha yakฤฑn takip iรงin azaltฤฑn. + + + Slowdown Response + YavaลŸlama Tepkisi + + + <b>How smoothly openpilot slows down in "Traffic Mode".</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>"Trafik Modu"nda openpilotโ€™ฤฑn ne kadar yumuลŸak yavaลŸladฤฑฤŸฤฑ.</b> Daha kademeli yavaลŸlama iรงin artฤฑrฤฑn; daha hฤฑzlฤฑ ama daha keskin yavaลŸlamalar iรงin azaltฤฑn. + + + Speed-Up Response + HฤฑzlandฤฑrฤฑlmฤฑลŸ Yanฤฑt + + + <b>How smoothly openpilot speeds up in "Traffic Mode".</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>openpilotโ€™ฤฑn โ€œTrafik Moduโ€nda ne kadar yumuลŸak hฤฑzlandฤฑฤŸฤฑ.</b> Daha kademeli hฤฑzlanma iรงin artฤฑrฤฑn; daha hฤฑzlฤฑ ama daha sarsฤฑntฤฑlฤฑ hฤฑzlanma iรงin azaltฤฑn. + + + Reset to Defaults + Varsayฤฑlanlara Sฤฑfฤฑrla + + + <b>Reset "Traffic Mode" settings to defaults.</b> + <b>"Trafik Modu" ayarlarฤฑnฤฑ varsayฤฑlana sฤฑfฤฑrla.</b> + + + Aggressive + Agresif + + + <b>Customize the "Aggressive" personality profile.</b> Designed for assertive driving with tighter gaps. + <b>"Agresif" kiลŸilik profilini รถzelleลŸtirin.</b> Daha dar aralฤฑklarla kararlฤฑ sรผrรผลŸ iรงin tasarlanmฤฑลŸtฤฑr. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Aggressive" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.25 seconds. + <b>"Agresif" profil kullanฤฑlฤฑrken openpilotโ€™ฤฑn รถndeki araรงlarฤฑ kaรง saniye takip ettiฤŸi.</b> Daha fazla alan iรงin artฤฑrฤฑn; daha dar boลŸluklar iรงin azaltฤฑn.<br><br>Varsayฤฑlan: 1.25 saniye. + + + <b>How smoothly openpilot accelerates with the "Aggressive" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>"Agresif" profilde openpilotโ€™un ne kadar yumuลŸak hฤฑzlandฤฑฤŸฤฑ.</b> Daha nazik kalkฤฑลŸlar iรงin artฤฑrฤฑn; daha hฤฑzlฤฑ ancak daha ani kalkฤฑลŸlar iรงin azaltฤฑn. + + + <b>How smoothly openpilot brakes with the "Aggressive" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>"Agresif" profiliyle openpilotโ€™ฤฑn ne kadar yumuลŸak fren yaptฤฑฤŸฤฑ.</b> Daha nazik duruลŸlar iรงin artฤฑrฤฑn; daha hฤฑzlฤฑ ama daha sert frenleme iรงin azaltฤฑn. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Aggressive" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>"Agresif" profilinde openpilotโ€™ฤฑn รถndeki araรงtan tuttuฤŸu ekstra mesafe.</b> Daha bรผyรผk boลŸluklar ve daha temkinli takip iรงin artฤฑrฤฑn; daha sฤฑkฤฑ boลŸluklar ve daha yakฤฑn takip iรงin azaltฤฑn. + + + <b>How smoothly openpilot slows down with the "Aggressive" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>"Saldฤฑrgan" profiliyle openpilotโ€™ฤฑn ne kadar yumuลŸak yavaลŸladฤฑฤŸฤฑ.</b> Daha kademeli yavaลŸlama iรงin artฤฑrฤฑn; daha hฤฑzlฤฑ ama daha keskin yavaลŸlamalar iรงin azaltฤฑn. + + + <b>How smoothly openpilot speeds up with the "Aggressive" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>"Agresif" profiliyle openpilotโ€™ฤฑn ne kadar pรผrรผzsรผz hฤฑzlandฤฑฤŸฤฑ.</b> Daha kademeli hฤฑzlanma iรงin artฤฑrฤฑn; daha hฤฑzlฤฑ ama daha sarsฤฑntฤฑlฤฑ hฤฑzlanma iรงin azaltฤฑn. + + + <b>Reset the "Aggressive" profile to defaults.</b> + <b>"Agresif" profilini varsayฤฑlanlara sฤฑfฤฑrla.</b> + + + Standard + Standart + + + <b>Customize the "Standard" personality profile.</b> Designed for balanced driving with moderate gaps. + <b>"Standart" kiลŸilik profilini รถzelleลŸtirin.</b> Orta mesafeli dengeli sรผrรผลŸ iรงin tasarlanmฤฑลŸtฤฑr. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Standard" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.45 seconds. + <b>"Standart" profil kullanฤฑlฤฑrken openpilotโ€™un รถndeki araรงlarฤฑ kaรง saniye takip ettiฤŸi.</b> Daha fazla boลŸluk iรงin artฤฑrฤฑn; daha dar boลŸluklar iรงin azaltฤฑn.<br><br>Varsayฤฑlan: 1.45 saniye. + + + <b>How smoothly openpilot accelerates with the "Standard" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>"Standart" profiliyle openpilotโ€™ฤฑn ne kadar yumuลŸak hฤฑzlandฤฑฤŸฤฑ.</b> Daha yumuลŸak kalkฤฑลŸlar iรงin artฤฑrฤฑn; daha hฤฑzlฤฑ ama daha ani kalkฤฑลŸlar iรงin azaltฤฑn. + + + <b>How smoothly openpilot brakes with the "Standard" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>"Standart" profiliyle openpilotโ€™ฤฑn ne kadar yumuลŸak fren yaptฤฑฤŸฤฑ.</b> Daha nazik duruลŸlar iรงin artฤฑrฤฑn; daha hฤฑzlฤฑ ancak daha sert frenleme iรงin azaltฤฑn. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Standard" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>"Standart" profiliyle openpilotโ€™ฤฑn รถndeki araรงla bฤฑraktฤฑฤŸฤฑ ekstra mesafe miktarฤฑ.</b> Daha bรผyรผk aralฤฑklar ve daha temkinli takip iรงin artฤฑrฤฑn; daha sฤฑkฤฑ aralฤฑklar ve daha yakฤฑn takip iรงin azaltฤฑn. + + + <b>How smoothly openpilot slows down with the "Standard" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>openpilotโ€™ฤฑn โ€œStandartโ€ profille ne kadar yumuลŸak yavaลŸladฤฑฤŸฤฑ.</b> Daha kademeli yavaลŸlama iรงin artฤฑrฤฑn; daha hฤฑzlฤฑ ancak daha keskin yavaลŸlamalar iรงin azaltฤฑn. + + + <b>How smoothly openpilot speeds up with the "Standard" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>"Standart" profilinde openpilotโ€™un ne kadar dรผzgรผn hฤฑzlandฤฑฤŸฤฑ.</b> Daha kademeli hฤฑzlanma iรงin artฤฑrฤฑn; daha hฤฑzlฤฑ ama daha sarsฤฑntฤฑlฤฑ hฤฑzlanma iรงin azaltฤฑn. + + + <b>Reset the "Standard" profile to defaults.</b> + <b>"Standart" profilini varsayฤฑlanlara sฤฑfฤฑrla.</b> + + + Relaxed + Rahat + + + <b>Customize the "Relaxed" personality profile.</b> Designed for smoother, more comfortable driving with larger gaps. + <b>"Rahat" kiลŸilik profilini รถzelleลŸtir.</b> Daha yumuลŸak, daha konforlu ve daha geniลŸ takip aralฤฑklarฤฑyla sรผrรผลŸ iรงin tasarlanmฤฑลŸtฤฑr. + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Relaxed" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.75 seconds. + <b>"Rahat" profil kullanฤฑlฤฑrken openpilotโ€™ฤฑn รถndeki aracฤฑ kaรง saniye geriden takip edeceฤŸi.</b> Daha fazla boลŸluk iรงin artฤฑrฤฑn; daha dar aralฤฑklar iรงin azaltฤฑn.<br><br>Varsayฤฑlan: 1.75 saniye. + + + <b>How smoothly openpilot accelerates with the "Relaxed" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>"Rahat" profiliyle openpilotโ€™ฤฑn ne kadar yumuลŸak hฤฑzlandฤฑฤŸฤฑ.</b> Daha nazik kalkฤฑลŸlar iรงin artฤฑrฤฑn; daha hฤฑzlฤฑ ancak daha ani kalkฤฑลŸlar iรงin azaltฤฑn. + + + <b>How smoothly openpilot brakes with the "Relaxed" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>"Rahat" profilinde openpilotโ€™un fren yapma yumuลŸaklฤฑฤŸฤฑ.</b> Daha yumuลŸak duruลŸlar iรงin artฤฑrฤฑn; daha hฤฑzlฤฑ ama daha sert frenleme iรงin azaltฤฑn. + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Relaxed" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>"Rahat" profilinde openpilotโ€™ฤฑn รถndeki araรงla bฤฑraktฤฑฤŸฤฑ ekstra boลŸluk.</b> Daha bรผyรผk aralฤฑklar ve daha temkinli takip iรงin artฤฑrฤฑn; daha dar aralฤฑklar ve daha yakฤฑn takip iรงin azaltฤฑn. + + + <b>How smoothly openpilot slows down with the "Relaxed" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>"Rahat" profiliyle openpilotโ€™un ne kadar yumuลŸak yavaลŸladฤฑฤŸฤฑ.</b> Daha kademeli yavaลŸlama iรงin artฤฑrฤฑn; daha hฤฑzlฤฑ ama daha keskin yavaลŸlamalar iรงin azaltฤฑn. + + + <b>How smoothly openpilot speeds up with the "Relaxed" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>"Rahat" profiliyle openpilotโ€™ฤฑn ne kadar yumuลŸak hฤฑzlandฤฑฤŸฤฑ.</b> Daha kademeli hฤฑzlanma iรงin artฤฑrฤฑn; daha hฤฑzlฤฑ ama daha sarsฤฑntฤฑlฤฑ hฤฑzlanma iรงin azaltฤฑn. + + + <b>Reset the "Relaxed" profile to defaults.</b> + <b>"Rahat" profilini varsayฤฑlanlara sฤฑfฤฑrla.</b> + + + Longitudinal Tuning + Boylamasฤฑna Ayarlama + + + <b>Acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>Hฤฑzlanma ve frenleme kontrolรผndeki deฤŸiลŸiklikler</b>, openpilotโ€™un sรผrรผลŸรผnรผ ince ayar yapmak iรงin. + + + Acceleration Profile + Hฤฑzlanma Profili + + + <b>How quickly openpilot speeds up.</b> "Eco" is gentle and efficient, "Sport" is firmer and more responsive, and "Sport+" accelerates at the maximum rate allowed. + <b>openpilotโ€™ฤฑn ne kadar hฤฑzlฤฑ hฤฑzlandฤฑฤŸฤฑ.</b> "Eco" nazik ve verimlidir, "Sport" daha sert ve daha tepkisel, "Sport+" ise izin verilen en yรผksek hฤฑzlanma oranฤฑnda hฤฑzlanฤฑr. + + + Deceleration Profile + YavaลŸlama Profili + + + <b>How firmly openpilot slows down.</b> "Eco" favors coasting, "Sport" applies stronger braking. + <b>openpilotโ€™un ne kadar sert yavaลŸladฤฑฤŸฤฑ.</b> "Eco" sรผzรผlmeyi tercih eder, "Sport" daha gรผรงlรผ fren uygular. + + + Human-Like Acceleration + ฤฐnsansฤฑ ฤฐvme + + + <b>Acceleration that mimics human behavior</b> by easing the throttle at low speeds and adding extra power when taking off from a stop. + <b>ฤฐnsan davranฤฑลŸฤฑnฤฑ taklit eden ivmelenme</b>; dรผลŸรผk hฤฑzlarda gazฤฑ yumuลŸatฤฑr ve duruลŸtan kalkฤฑลŸta ekstra gรผรง ekler. + + + Human-Like Following + ฤฐnsana Benzer Takip + + + Lead Detection Sensitivity + ร–ncรผ Algฤฑlama Hassasiyeti + + + <b>How sensitive openpilot is to detecting vehicles.</b> Higher sensitivity allows quicker detection at longer distances but may react to non-vehicle objects; lower sensitivity is more conservative and reduces false detections. + <b>openpilotโ€™ฤฑn araรงlarฤฑ algฤฑlamaya ne kadar duyarlฤฑ olduฤŸu.</b> Daha yรผksek duyarlฤฑlฤฑk, daha uzun mesafelerde daha hฤฑzlฤฑ algฤฑlama saฤŸlar ancak araรง olmayan nesnelere de tepki verebilir; daha dรผลŸรผk duyarlฤฑlฤฑk daha temkinlidir ve yanlฤฑลŸ algฤฑlamalarฤฑ azaltฤฑr. + + + Maximum Acceleration + Maksimum ฤฐvme + + + <b>Limit the strongest acceleration</b> openpilot can command. + <b>En gรผรงlรผ ivmeyi sฤฑnฤฑrla</b> openpilotโ€™un komuta edebileceฤŸi. + + + "Taco Bell Run" Turn Speed Hack + "Taco Bell Run" DรถnรผลŸ Hฤฑz Hilesi + + + <b>The turn-speed hack from comma's 2022 "Taco Bell Run".</b> Designed to slow down for left and right turns. + <b>commaโ€™nฤฑn 2022 โ€œTaco Bell Runโ€den gelen dรถnรผลŸ hฤฑzฤฑ hilesi.</b> Sola ve saฤŸa dรถnรผลŸlerde yavaลŸlamak iรงin tasarlanmฤฑลŸtฤฑr. + + + Quality of Life + YaลŸam Kalitesi + + + <b>Miscellaneous acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>openpilotโ€™ฤฑn sรผrรผลŸ ลŸeklini ince ayarlamak iรงin รงeลŸitli hฤฑzlanma ve frenleme kontrolรผ deฤŸiลŸiklikleri</b> + + + Cruise Interval + Seyir AralฤฑฤŸฤฑ + + + <b>How much the set speed increases or decreases</b> for each + or โ€“ cruise control button press. + <b>Her + veya โ€“ hฤฑz sabitleyici dรผฤŸmesi basฤฑลŸฤฑnda</b> ayarlanan hฤฑzฤฑn ne kadar artฤฑrฤฑlฤฑp azaltฤฑlacaฤŸฤฑ. + + + Cruise Interval (Hold) + Seyir AralฤฑฤŸฤฑ (Basฤฑlฤฑ Tut) + + + <b>How much the set speed increases or decreases while holding the + or โ€“ cruise control buttons.</b> + <b>+ veya โ€“ cruise control dรผฤŸmelerini basฤฑlฤฑ tutarken ayarlanan hฤฑzฤฑn ne kadar artฤฑp azaldฤฑฤŸฤฑ.</b> + + + Force Stop at "Detected" Stop Lights/Signs + โ€œTespit Edilenโ€ Trafik IลŸฤฑklarฤฑ/Levhalarฤฑnda Zorla Dur + + + <b>Force openpilot to stop whenever the driving model "detects" a red light or stop sign.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>SรผrรผลŸ modeli bir kฤฑrmฤฑzฤฑ ฤฑลŸฤฑk veya dur iลŸaretini โ€œtespit ettiฤŸindeโ€ openpilotโ€™u durmaya zorla.</b><br><br><i><b>Feragat</b>: openpilot trafik ฤฑลŸฤฑklarฤฑnฤฑ veya dur iลŸaretlerini aรงฤฑkรงa tespit etmez. โ€œDeneysel Modโ€da, openpilot kamera giriลŸinden uรงtan uca sรผrรผลŸ kararlarฤฑ verir; bu, aรงฤฑk bir neden olmasa bile durabileceฤŸi anlamฤฑna gelir.</i> + + + Increase Stopped Distance by: + Duran Mesafeyi Artฤฑr: + + + <b>Add extra space when stopped behind vehicles.</b> Increase for more room; decrease for shorter gaps. + <b>ร–ndeki araรงlarฤฑn arkasฤฑnda dururken ekstra boลŸluk bฤฑrakฤฑn.</b> Daha fazla alan iรงin artฤฑrฤฑn; daha kฤฑsa boลŸluklar iรงin azaltฤฑn. + + + Map Accel/Decel to Gears + Hฤฑzlanma/YavaลŸlamayฤฑ Viteslere EลŸleลŸtir + + + <b>Map the Acceleration or Deceleration profiles to the vehicle's "Eco" and "Sport" gear modes.</b> + <b>Hฤฑzlanma veya YavaลŸlama profillerini aracฤฑn โ€œEcoโ€ ve โ€œSportโ€ vites modlarฤฑna eลŸleyin.</b> + + + Offset Set Speed by: + Hฤฑzฤฑ ลŸu kadar artฤฑr/azalt: + + + <b>Increase the set speed by the chosen offset.</b> For example, set +5 if you usually drive 5 over the limit. + <b>Seรงilen sapma kadar ayarlanan hฤฑzฤฑ artฤฑrฤฑn.</b> ร–rneฤŸin, genelde hฤฑz sฤฑnฤฑrฤฑnฤฑn 5 รผzerinde sรผrรผyorsanฤฑz +5 ayarlayฤฑn. + + + Reverse Cruise Increase + Geri Cruise Artฤฑrma + + + <b>Reverse the cruise control button behavior</b> so a short press increases the set speed by 5 instead of 1. + <b>Hฤฑz sabitleyici dรผฤŸmesinin davranฤฑลŸฤฑnฤฑ tersine รงevirin</b>, bรถylece kฤฑsa basฤฑลŸta ayarlฤฑ hฤฑz 1 yerine 5 artฤฑrฤฑlฤฑr. + + + Increase Following Distance by: + Takip Mesafesini Artฤฑr: + + + Reduce Acceleration by: + Hฤฑzlanmayฤฑ ลŸu kadar azalt: + + + Reduce Speed in Curves by: + Virajlarda Hฤฑzฤฑ Azalt: + + + Snow + Kar + + + <b>Driving adjustments for snowy conditions.</b> + <b>Karlฤฑ koลŸullar iรงin sรผrรผลŸ ayarlamalarฤฑ.</b> + + + <b>Add extra space behind lead vehicles in snow.</b> Increase for more space; decrease for tighter gaps. + <b>Karda รถndeki araรงlarฤฑn arkasฤฑnda ekstra mesafe bฤฑrakฤฑn.</b> Daha fazla mesafe iรงin artฤฑrฤฑn; daha dar boลŸluklar iรงin azaltฤฑn. + + + <b>Add extra buffer when stopped behind vehicles in snow.</b> Increase for more room; decrease for shorter gaps. + <b>Karda araรงlarฤฑn arkasฤฑnda dururken ekstra boลŸluk bฤฑrakฤฑn.</b> Daha fazla alan iรงin artฤฑrฤฑn; daha kฤฑsa boลŸluklar iรงin azaltฤฑn. + + + <b>Lower the maximum acceleration in snow.</b> Increase for softer takeoffs; decrease for quicker but less stable takeoffs. + <b>Karda azami ivmeyi dรผลŸรผrรผn.</b> YumuลŸak kalkฤฑลŸlar iรงin artฤฑrฤฑn; daha hฤฑzlฤฑ ancak daha az stabil kalkฤฑลŸlar iรงin azaltฤฑn. + + + <b>Lower the desired speed while driving through curves in snow.</b> Increase for safer, gentler turns; decrease for more aggressive driving in curves. + <b>Karda virajlardan geรงerken istenen hฤฑzฤฑ azaltฤฑn.</b> Daha gรผvenli, daha yumuลŸak dรถnรผลŸler iรงin artฤฑrฤฑn; virajlarda daha atak sรผrรผลŸ iรงin azaltฤฑn. + + + Speed Limit Controller + Hฤฑz Sฤฑnฤฑrฤฑ Denetleyicisi + + + <b>Limit openpilot's maximum driving speed to the current speed limit</b> obtained from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + <b>openpilotโ€™ฤฑn maksimum sรผrรผลŸ hฤฑzฤฑnฤฑ mevcut hฤฑz sฤฑnฤฑrฤฑna sฤฑnฤฑrla</b>; bu sฤฑnฤฑr indirilen haritalardan, Mapboxโ€™tan, Navigate on openpilotโ€™tan veya desteklenen araรงlar (Ford, Genesis, Hyundai, Kia, Lexus, Toyota) iรงin gรถsterge panelinden alฤฑnฤฑr. + + + Fallback Speed + Yedek Hฤฑz + + + <b>The speed used by "Speed Limit Controller" when no speed limit is found.</b><br><br>- <b>Set Speed</b>: Use the cruise set speed<br>- <b>Experimental Mode</b>: Estimate the limit using the driving model<br>- <b>Previous Limit</b>: Keep using the last confirmed limit + <b>"Hฤฑz Sฤฑnฤฑrฤฑ Denetleyicisi" tarafฤฑndan hฤฑz sฤฑnฤฑrฤฑ bulunamadฤฑฤŸฤฑnda kullanฤฑlan hฤฑz.</b><br><br>- <b>Ayarlฤฑ Hฤฑz</b>: Cruise ayarlฤฑ hฤฑzฤฑnฤฑ kullan<br>- <b>Deneysel Mod</b>: SรผrรผลŸ modelini kullanarak sฤฑnฤฑrฤฑ tahmin et<br>- <b>ร–nceki Sฤฑnฤฑr</b>: Son onaylanan sฤฑnฤฑrฤฑ kullanmaya devam et + + + Override Speed + Hฤฑzฤฑ Geรงersiz Kฤฑl + + + <b>The speed used by "Speed Limit Controller" after you manually drive faster than the posted limit.</b><br><br>- <b>Set with Gas Pedal</b>: Use the highest speed reached while pressing the gas<br>- <b>Max Set Speed</b>: Use the cruise set speed<br><br>Overrides clear when openpilot disengages. + <b>"Hฤฑz Sฤฑnฤฑrฤฑ Denetleyicisi"nin, ilan edilen sฤฑnฤฑrdan manuel olarak daha hฤฑzlฤฑ sรผrdรผkten sonra kullandฤฑฤŸฤฑ hฤฑz.</b><br><br>- <b>Gaz Pedalฤฑ ile Ayarla</b>: Gaz pedalฤฑna basarken ulaลŸฤฑlan en yรผksek hฤฑzฤฑ kullan<br>- <b>Azami Ayarlanan Hฤฑz</b>: Cruise ayar hฤฑzฤฑnฤฑ kullan<br><br>openpilot devre dฤฑลŸฤฑ kaldฤฑฤŸฤฑnda geรงersiz kฤฑlmalar temizlenir. + + + <b>Miscellaneous "Speed Limit Controller" changes</b> to fine-tune how openpilot drives. + <b>openpilotโ€™ฤฑn sรผrรผลŸรผnรผ ince ayarlamak iรงin</b> รงeลŸitli โ€œSpeed Limit Controllerโ€ deฤŸiลŸiklikleri. + + + Confirm New Speed Limits + Yeni Hฤฑz Sฤฑnฤฑrlarฤฑnฤฑ Onayla + + + <b>Ask before changing to a new speed limit.</b> To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds. + <b>Yeni bir hฤฑz sฤฑnฤฑrฤฑna geรงmeden รถnce sor.</b> Kabul etmek iรงin, ekranda yanฤฑp sรถnen widgetโ€™a dokunun veya Cruise Increase dรผฤŸmesine basฤฑn. Reddetmek iรงin, Cruise Decrease dรผฤŸmesine basฤฑn veya istemi 30 saniye boyunca gรถrmezden gelin. + + + Force MPH from Dashboard + Gรถsterge panelinden MPHโ€™yi zorla + + + <b>Always read dashboard speed limit signs in mph.</b> Turn this on if the cluster shows mph but the limit is interpreted as km/h. + <b>Gรถsterge panelindeki hฤฑz sฤฑnฤฑrฤฑ iลŸaretlerini her zaman mph olarak okuyun.</b> Gรถsterge mph gรถsteriyor ancak sฤฑnฤฑr km/h olarak yorumlanฤฑyorsa bunu aรงฤฑn. + + + Higher Limit Lookahead Time + Daha Yรผksek Limit ฤฐleriye BakฤฑลŸ Sรผresi + + + <b>How far ahead openpilot anticipates upcoming higher speed limits</b> from downloaded map data. + <b>openpilotโ€™ฤฑn yaklaลŸan daha yรผksek hฤฑz sฤฑnฤฑrlarฤฑnฤฑ รถnceden tahmin etme mesafesi</b> indirilen harita verilerinden. + + + Lower Limit Lookahead Time + Alt Sฤฑnฤฑr ฤฐleriye BakฤฑลŸ Sรผresi + + + <b>How far ahead openpilot anticipates upcoming lower speed limits</b> from downloaded map data. + <b>openpilotโ€™ฤฑn indirilen harita verilerinden yaklaลŸan daha dรผลŸรผk hฤฑz sฤฑnฤฑrlarฤฑnฤฑ ne kadar รถnceden รถngรถrdรผฤŸรผ</b> + + + Match Speed Limit on Engage + Devreye Alฤฑrken Hฤฑz Sฤฑnฤฑrฤฑnฤฑ EลŸleลŸtir + + + <b>When openpilot is first enabled, automatically set the max speed to the current posted limit.</b> + <b>openpilot ilk etkinleลŸtirildiฤŸinde, azami hฤฑzฤฑ mevcut ilan edilen sฤฑnฤฑra otomatik olarak ayarla.</b> + + + Use Mapbox as Fallback + Yedek olarak Mapboxโ€™u kullan + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>BaลŸka kaynak olmadฤฑฤŸฤฑnda Mapbox hฤฑz sฤฑnฤฑrฤฑ verilerini kullan.</b> + + + Speed Limit Source Priority + Hฤฑz Sฤฑnฤฑrฤฑ KaynaฤŸฤฑ ร–nceliฤŸi + + + <b>The source order for speed limits</b> when more than one is available. + <b>Birden fazla mevcut olduฤŸunda hฤฑz sฤฑnฤฑrlarฤฑ iรงin kaynak sฤฑrasฤฑ</b> + + + Speed Limit Offsets + Hฤฑz Sฤฑnฤฑrฤฑ Ofsetleri + + + <b>Add an offset to the posted speed limit</b> to better match your driving style. + <b>ฤฐlan edilen hฤฑz sฤฑnฤฑrฤฑna bir ofset ekleyin</b> sรผrรผลŸ tarzฤฑnฤฑza daha iyi uymasฤฑ iรงin. Speed Offset (0โ€“24 mph) - Hฤฑz Ofseti (0โ€“24 mph) + Hฤฑz Ofseti (0โ€“24 mph) + + + <b>How much to offset posted speed-limits</b> between 0 and 24 mph. + <b>ฤฐlan edilen hฤฑz sฤฑnฤฑrฤฑnฤฑ ne kadar sapฤฑtmalฤฑ</b> 0 ile 24 mph arasฤฑnda. Speed Offset (25โ€“34 mph) - Hฤฑz Ofseti (25โ€“34 mph) + Hฤฑz Ofseti (25โ€“34 mph) + + + <b>How much to offset posted speed-limits</b> between 25 and 34 mph. + <b>ฤฐlan edilen hฤฑz sฤฑnฤฑrlarฤฑndan ne kadar sapฤฑlacak</b> 25 ile 34 mph arasฤฑnda.</b Speed Offset (35โ€“44 mph) - Hฤฑz Ofseti (35โ€“44 mph) + Hฤฑz Ofseti (35โ€“44 mph) + + + <b>How much to offset posted speed-limits</b> between 35 and 44 mph. + <b>35 ile 44 mph arasฤฑndaki ilan edilen hฤฑz sฤฑnฤฑrlarฤฑndan ne kadar sapma yapฤฑlacak</b>. Speed Offset (45โ€“54 mph) - Hฤฑz Ofseti (45โ€“54 mph) + Hฤฑz Ofseti (45โ€“54 mph) + + + <b>How much to offset posted speed-limits</b> between 45 and 54 mph. + <b>45 ile 54 mph arasฤฑndaki ilan edilen hฤฑz sฤฑnฤฑrlarฤฑndan ne kadar sapma yapฤฑlacaฤŸฤฑ</b> Speed Offset (55โ€“64 mph) - Hฤฑz Ofseti (55โ€“64 mph) + Hฤฑz Ofseti (55โ€“64 mph) + + + <b>How much to offset posted speed-limits</b> between 55 and 64 mph. + <b>55 ile 64 mph arasฤฑndaki ilan edilmiลŸ hฤฑz sฤฑnฤฑrlarฤฑndan ne kadar sapฤฑlacaฤŸฤฑ</b> Speed Offset (65โ€“74 mph) - Hฤฑz Ofseti (65โ€“74 mph) + Hฤฑz Ofseti (65โ€“74 mph) + + + <b>How much to offset posted speed-limits</b> between 65 and 74 mph. + <b>65 ile 74 mph arasฤฑndaki ilan edilen hฤฑz sฤฑnฤฑrlarฤฑndan ne kadar sapฤฑlacak</b> Speed Offset (75โ€“99 mph) - Hฤฑz Ofseti (75โ€“99 mph) + Hฤฑz Ofseti (75โ€“99 mph) - Only For Detected Lanes - Yalnฤฑzca Tespit Edilen ลžeritler ฤฐรงin + <b>How much to offset posted speed-limits</b> between 75 and 99 mph. + <b>75 ile 99 mph arasฤฑndaki ilan edilen hฤฑz sฤฑnฤฑrlarฤฑndan ne kadar sapma yapฤฑlacaฤŸฤฑ</b> + + + Visual Settings + Gรถrsel Ayarlar + + + <b>Visual "Speed Limit Controller" changes</b> to fine-tune how the driving screen looks. + <b>Gรถrsel "Speed Limit Controller" deฤŸiลŸiklikleri</b>, sรผrรผลŸ ekranฤฑnฤฑn gรถrรผnรผmรผnรผ ince ayar yapmak iรงin. + + + Show Speed Limit Offset + Hฤฑz Sฤฑnฤฑrฤฑ Ofsetini Gรถster + + + <b>Show the current offset from the posted limit</b> on the driving screen. + <b>Sรผrรผcรผ ekranฤฑnda ilan edilen hฤฑz sฤฑnฤฑrฤฑndan mevcut farkฤฑ gรถster</b> + + + Show Speed Limit Sources + Hฤฑz Sฤฑnฤฑrฤฑ Kaynaklarฤฑnฤฑ Gรถster + + + <b>Display the speed-limit sources and their current values</b> on the driving screen. + SรผrรผลŸ ekranฤฑnda <b>hฤฑz sฤฑnฤฑrฤฑ kaynaklarฤฑnฤฑ ve mevcut deฤŸerlerini gรถrรผntรผleyin</b>. + + + seconds + saniye + + + m/sยฒ + m/sยฒ + + + mph + mil/s (mph) + + + With Lead + ร–ncรผl Var + + + <b>Switch to "Experimental Mode" when driving below this speed with a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>ร–ndeki bir araรง varken bu hฤฑzฤฑn altฤฑnda sรผrerken "Deneysel Mod"a geรงin</b>; bu, openpilotโ€™ฤฑn dรผลŸรผk hฤฑz durumlarฤฑnฤฑ daha akฤฑcฤฑ yรถnetmesine yardฤฑmcฤฑ olur. + + + Slower Lead + Daha YavaลŸ ร–ndeki Araรง + + + Stopped Lead + Duran ร–ndeki Araรง + + + Intersections + KavลŸaklar + + + Turns + DรถnรผลŸler + + + Off + Kapalฤฑ + + + second + saniye + + + Not For Detected Lanes + Tespit edilen ลŸeritler iรงin deฤŸil + + + RESET + SIFIRLA + + + Are you sure you want to completely reset your curvature data? + Kฤฑvrฤฑmlฤฑk verilerinizi tamamen sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? + + + Eco + Eko + + + Sport + Spor + + + Sport+ + Sport+ + + + feet + feet + + + Acceleration + ฤฐvme + + + Deceleration + YavaลŸlama + + + MANAGE + Yร–NET + + + Set Speed + Hฤฑzฤฑ Ayarla + + + Experimental Mode + Deneysel Mod + + + Previous Limit + ร–nceki Limit + + + None + Yok + + + Set With Gas Pedal + Gaz Pedalฤฑyla Ayarla + + + Max Set Speed + Maksimum Ayarlฤฑ Hฤฑz + + + SELECT + SEร‡ + + + Dashboard + Gรถsterge Paneli + + + Map Data + Harita Verileri + + + Navigation + Navigasyon + + + Highest + En yรผksek + + + Lowest + En dรผลŸรผk + + + Select your primary priority + Birincil รถnceliฤŸinizi seรงin + + + Select your secondary priority + ฤฐkincil รถnceliฤŸinizi seรงin + + + Select your tertiary priority + รœรงรผncรผl รถnceliฤŸinizi seรงin + + + Lower Limits + Alt Sฤฑnฤฑrlar + + + Higher Limits + Daha Yรผksek Sฤฑnฤฑrlar + + + Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? + <b>Trafik Modu</b> iรงin ayarlarฤฑnฤฑzฤฑ tamamen sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? + + + Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? + <b>Agresif</b> kiลŸilik iรงin ayarlarฤฑnฤฑzฤฑ tamamen sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? + + + Are you sure you want to completely reset your settings for the <b>Standard</b> personality? + <b>Standart</b> kiลŸilik iรงin ayarlarฤฑnฤฑzฤฑ tamamen sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? + + + Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? + <b>Rahat</b> kiลŸiliฤŸi iรงin ayarlarฤฑnฤฑzฤฑ tamamen sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? + + + foot + ayak + + + meter + metre + + + meters + metre + + + km/h + km/sa Speed Offset (0โ€“29 km/h) - Hฤฑz Ofseti (0โ€“29 km/sa) + Hฤฑz Ofseti (0โ€“29 km/sa) Speed Offset (30โ€“49 km/h) - Hฤฑz Ofseti (30โ€“49 km/s) + Hฤฑz Ofseti (30โ€“49 km/s) Speed Offset (50โ€“59 km/h) - Hฤฑz Ofseti (50โ€“59 km/s) + Hฤฑz Ofseti (50โ€“59 km/s) Speed Offset (60โ€“79 km/h) - Hฤฑz Ofseti (60โ€“79 km/s) + Hฤฑz Sapmasฤฑ (60โ€“79 km/s) Speed Offset (80โ€“99 km/h) - Hฤฑz Ofseti (80โ€“99 km/s) + Hฤฑz Ofseti (80โ€“99 km/s) Speed Offset (100โ€“119 km/h) - Hฤฑz Ofseti (100โ€“119 km/sa) + Hฤฑz Ofseti (100โ€“119 km/s) Speed Offset (120โ€“140 km/h) - Hฤฑz Ofseti (120โ€“140 km/s) + Hฤฑz Ofseti (120โ€“140 km/s) - Curve Speed Control - Viraj Hฤฑz Kontrolรผ - - - Automatically slow down for upcoming curves using downloaded maps or the driving model. - YaklaลŸan virajlar iรงin indirilen haritalarฤฑ veya sรผrรผลŸ modelini kullanarak otomatik olarak yavaลŸlayฤฑn. - - - Curve Detection Method - EฤŸri Tespit Yรถntemi - - - How curves are detected. <b>Map-Based</b> uses downloaded map data to identify curves and determine the appropriate speed in which to handle them at, while <b>Vision</b> relies solely on the driving model. - Kavisler nasฤฑl tespit edilir. <b>Harita Tabanlฤฑ</b>, kavisleri tanฤฑmlamak ve bunlarฤฑ ele almak iรงin uygun hฤฑzฤฑ belirlemek amacฤฑyla indirilen harita verilerini kullanฤฑrken, <b>GรถrรผลŸ</b> yalnฤฑzca sรผrรผลŸ modeline dayanฤฑr. - - - Curve Detection Failsafe - EฤŸri Tespit Emniyeti - - - Only trigger <b>Curve Speed Control</b> if a curve is detected with the model while using the <b>Map-Based</b> method. Useful to help prevent false positives. - Yalnฤฑzca <b>Harita Tabanlฤฑ</b> yรถntemi kullanฤฑlฤฑrken model ile bir viraj algฤฑlandฤฑฤŸฤฑnda <b>Viraj Hฤฑz Kontrolรผ</b> tetikleyin. YanlฤฑลŸ pozitifleri รถnlemeye yardฤฑmcฤฑ olmak iรงin faydalฤฑdฤฑr. - - - Curve Detection Sensitivity - EฤŸri Algฤฑlama Hassasiyeti - - - How sensitive openpilot is when detecting curves. Higher values trigger earlier responses at the risk of triggering too often, while lower values increase confidence at the risk of triggering too infrequently. - openpilot'ฤฑn virajlarฤฑ algฤฑlarken ne kadar hassas olduฤŸu. Daha yรผksek deฤŸerler, daha sฤฑk tetikleme riskiyle birlikte daha erken tepkiler tetiklerken, daha dรผลŸรผk deฤŸerler, daha az sฤฑklฤฑkla tetikleme riskiyle birlikte gรผveni artฤฑrฤฑr. - - - Curve Speed Aggressiveness - Viraj Hฤฑzฤฑ SaldฤฑrganlฤฑฤŸฤฑ - - - How aggressive openpilot is when navigating through curves. Higher values result in faster turns but may reduce comfort or stability, while lower values result in slower, smoother turns at the risk of being overly cautious. - openpilot'ฤฑn virajlarda ne kadar agresif olduฤŸu. Daha yรผksek deฤŸerler, daha hฤฑzlฤฑ dรถnรผลŸler saฤŸlar ancak konfor veya stabiliteyi azaltabilir, daha dรผลŸรผk deฤŸerler ise daha yavaลŸ, daha yumuลŸak dรถnรผลŸler saฤŸlar ancak aลŸฤฑrฤฑ temkinli olma riski taลŸฤฑr. - - - Map Based - Harita Tabanlฤฑ - - - Vision - Vizyon - - - The <b>Map Based</b> option is only available when some <b>Map Data</b> has been downloaded! - <b>Harita Tabanlฤฑ</b> seรงeneฤŸi yalnฤฑzca bazฤฑ <b>Harita Verileri</b> indirildiฤŸinde kullanฤฑlabilir! + <b>Following behavior that mimics human drivers</b> by closing gaps behind faster vehicles for quicker takeoffs and dynamically adjusting the desired following distance for gentler, more efficient braking. + <b>ฤฐnsan sรผrรผcรผleri taklit eden takip davranฤฑลŸฤฑ</b>: Daha hฤฑzlฤฑ araรงlarฤฑn arkasฤฑndaki boลŸluklarฤฑ kapatarak daha hฤฑzlฤฑ kalkฤฑลŸlar ve daha yumuลŸak, daha verimli frenleme iรงin istenen takip mesafesini dinamik olarak ayarlama. FrogPilotManageControl MANAGE - Yร–NET + Yร–NET FrogPilotMapsPanel Manually - Manuel olarak + Manuel olarak Weekly - Haftalฤฑk + Haftalฤฑk Monthly - Aylฤฑk + Aylฤฑk Automatically Update Maps - Haritalarฤฑ Otomatik Olarak GรผncelleลŸtir + Haritalarฤฑ Otomatik Gรผncelle - The frequency at which maps sync with the latest OpenStreetMap (OSM) changes. Weekly updates occur every Sunday, and monthly updates occur on the 1st. - Haritalarฤฑn en son OpenStreetMap (OSM) deฤŸiลŸiklikleriyle senkronize olma sฤฑklฤฑฤŸฤฑ. Haftalฤฑk gรผncellemeler her Pazar, aylฤฑk gรผncellemeler ise her ayฤฑn 1'inde gerรงekleลŸir. - - - Data Sources - Veri Kaynaklarฤฑ - - - Select map data sources to use with "Curve Speed Control" and "Speed Limit Controller". - "Viraj Hฤฑz Kontrolรผ" ve "Hฤฑz Sฤฑnฤฑrฤฑ Kontrolcรผsรผ" ile kullanฤฑlacak harita veri kaynaklarฤฑnฤฑ seรงin. - - - COUNTRIES - รœLKELER - - - STATES - DEVLETLER + <b>How often maps update</b> from "OpenStreetMap (OSM)" with the latest speed limit information. Weekly updates run every Sunday; monthly updates run on the 1st. + <b>En sฤฑkฤฑlฤฑkta haritalar</b>, en gรผncel hฤฑz limiti bilgileriyle "OpenStreetMap (OSM)" รผzerinden gรผncellenir. Haftalฤฑk gรผncellemeler her pazar, aylฤฑk gรผncellemeler ayฤฑn 1โ€™inde yapฤฑlฤฑr. Download Maps - Haritalarฤฑ ฤฐndir + Haritalarฤฑ ฤฐndir DOWNLOAD - ฤฐNDฤฐR + ฤฐNDฤฐR - Download the selected maps to use with "Curve Speed Control" and "Speed Limit Controller". - Seรงilen haritalarฤฑ "Viraj Hฤฑz Kontrolรผ" ve "Hฤฑz Sฤฑnฤฑrฤฑ Kontrolcรผsรผ" ile kullanmak iรงin indirin. + <b>Manually update your selected map sources</b> so "Speed Limit Controller" has the latest speed limit information. + <b>SeรงtiฤŸiniz harita kaynaklarฤฑnฤฑ manuel olarak gรผncelleyin</b> ki "Speed Limit Controller" en gรผncel hฤฑz limiti bilgilerine sahip olsun. CANCEL - ฤฐPTAL ET + ฤฐPTAL - Are you sure you want to cancel the download? - ฤฐndirmeyi iptal etmek istediฤŸinizden emin misiniz? + Cancel the download? + ฤฐndirmeyi iptal et? - Download Completion ETA - ฤฐndirme Tamamlanma ETA'sฤฑ + Last Updated + Son Gรผncelleme - Download Progress - ฤฐndirme ฤฐlerlemesi + Map Sources + Harita Kaynaklarฤฑ - Download Time Elapsed - ฤฐndirme Sรผresi Geรงti + <b>Select the countries or U.S. states to use with "Speed Limit Controller".</b> + <b>"Hฤฑz Sฤฑnฤฑrฤฑ Denetleyicisi" ile kullanฤฑlacak รผlkeleri veya ABD eyaletlerini seรงin.</b> - Maps Last Updated - Haritalar Son Gรผncellenme Tarihi + COUNTRIES + รœLKELER - Maps Size - Harita Boyutu + STATES + DURUMLAR + + + Progress + ฤฐlerleme + + + Time Elapsed + Geรงen Sรผre + + + Time Remaining + Kalan Sรผre Remove Maps - Haritalarฤฑ Kaldฤฑr + Haritalarฤฑ Kaldฤฑr REMOVE - KALDIR + KALDIR - Remove downloaded maps to clear up storage space. - Depolama alanฤฑnฤฑ boลŸaltmak iรงin indirilen haritalarฤฑ kaldฤฑrฤฑn. + <b>Delete downloaded map data</b> to free up storage space. + Depolama alanฤฑnฤฑ boลŸaltmak iรงin <b>indirilen harita verilerini silin</b>. - Are you sure you want to delete all of your downloaded maps? - Tรผm indirilen haritalarฤฑnฤฑzฤฑ silmek istediฤŸinizden emin misiniz? + Delete all downloaded maps? + ฤฐndirilen tรผm haritalar silinsin mi? - Reset Map Downloader - Harita ฤฐndiriciyi Sฤฑfฤฑrla + Reset Downloader + ฤฐndiriciyi Sฤฑfฤฑrla RESET - SIFIRLA + SIFIRLA - Reset the map downloader. Use if you're running into issues with downloading maps. - Harita indiricisini sฤฑfฤฑrlayฤฑn. Haritalarฤฑ indirirken sorun yaลŸฤฑyorsanฤฑz kullanฤฑn. + <b>Reset the map downloader.</b> Use this if downloads are stuck or failing. + <b>Harita indiricisini sฤฑfฤฑrlayฤฑn.</b> ฤฐndirilmeler takฤฑlฤฑ kalฤฑrsa veya baลŸarฤฑsฤฑz olursa bunu kullanฤฑn. - Are you sure you want to reset the map downloader? This will force a reboot once completed. - Harita indiricisini sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? Bu, tamamlandฤฑฤŸฤฑnda bir yeniden baลŸlatmayฤฑ zorlayacaktฤฑr. + Reset the map downloader? Your device will reboot afterward. + Harita indiricisini sฤฑfฤฑrlansฤฑn mฤฑ? Cihazฤฑnฤฑz ardฤฑndan yeniden baลŸlatฤฑlacak. Reset - Sฤฑfฤฑrla + Sฤฑfฤฑrla Resetting... - Sฤฑfฤฑrlanฤฑyor... + Sฤฑfฤฑrlanฤฑyor... Reset! - Sฤฑfฤฑrla! + Sฤฑfฤฑrla! Rebooting... - Yeniden baลŸlatฤฑlฤฑyor... + Yeniden baลŸlatฤฑlฤฑyor... + + + Storage Used + Kullanฤฑlan Depolama Africa - Afrika + Afrika Antarctica - Antarktika + Antarktika Asia - Asya + Asya Europe - Avrupa + Avrupa North America - Kuzey Amerika + Kuzey Amerika Oceania - Okyanusya + Okyanusya South America - Gรผney Amerika + Gรผney Amerika United States - Midwest - Amerika BirleลŸik Devletleri - Ortabatฤฑ + Amerika BirleลŸik Devletleri - Orta Batฤฑ United States - Northeast - Amerika BirleลŸik Devletleri - KuzeydoฤŸu + Amerika BirleลŸik Devletleri - KuzeydoฤŸu United States - South - Amerika BirleลŸik Devletleri - Gรผney + Amerika BirleลŸik Devletleri - Gรผney United States - West - Amerika BirleลŸik Devletleri - Batฤฑ + Amerika BirleลŸik Devletleri - Batฤฑ United States - Territories - Amerika BirleลŸik Devletleri - Bรถlgeler - - - CANCELLED - ฤฐPTAL EDฤฐLDฤฐ + Amerika BirleลŸik Devletleri - Topraklar Offline... - ร‡evrimdฤฑลŸฤฑ... + ร‡evrimdฤฑลŸฤฑ... + + + CANCELLED + ฤฐPTAL EDฤฐLDฤฐ FrogPilotModelPanel Automatically Download New Models - Yeni Modelleri Otomatik ฤฐndir + Yeni Modelleri Otomatik ฤฐndir - Automatically download new driving models as they become available. - Yeni sรผrรผลŸ modelleri kullanฤฑlabilir hale geldikรงe otomatik olarak indir. + <b>Automatically download new driving models</b> as they become available. + <b>Mevcut oldukรงa yeni sรผrรผลŸ modellerini otomatik olarak indir</b> Delete Driving Models - SรผrรผลŸ Modellerini Sil + SรผrรผลŸ Modellerini Sil - Delete driving models from the device. - SรผrรผลŸ modellerini cihazdan sil. + <b>Delete downloaded driving models</b> to free up storage space. + <b>ฤฐndirilen sรผrรผลŸ modellerini silin</b> ve depolama alanฤฑnฤฑ boลŸaltฤฑn. Download Driving Models - SรผrรผลŸ Modellerini ฤฐndir + SรผrรผลŸ Modellerini ฤฐndir - Download driving models to the device. - SรผrรผลŸ modellerini cihaza indir. + <b>Manually download driving models</b> to the device. + Cihaza <b>sรผrรผลŸ modellerini manuel olarak indirin</b>. Model Randomizer - Model RastgeleleลŸtirici + Model RastgeleleลŸtirici - Driving models are chosen at random each drive and feedback prompts are used to find the model that best suits your needs. - SรผrรผลŸ modelleri her sรผrรผลŸte rastgele seรงilir ve geri bildirim istemleri, ihtiyaรงlarฤฑnฤฑza en uygun modeli bulmak iรงin kullanฤฑlฤฑr. + <b>Select a random driving model each drive</b> and use feedback prompts at the end of the drive to help find the model that best suits you! + <b>Her sรผrรผลŸte rastgele bir sรผrรผลŸ modeli seรงin</b> ve size en uygun modeli bulmaya yardฤฑmcฤฑ olmak iรงin sรผrรผลŸ sonunda geri bildirim istemlerini kullanฤฑn! Manage Model Blacklist - Model Kara Listeyi Yรถnet + Model Kara Listesini Yรถnet - Add or remove models from the <b>Model Randomizer</b>'s blacklist list. - <b>Model Randomizer</b>'ฤฑn kara listesinden modeller ekleyin veya รงฤฑkarฤฑn. + <b>Add or remove driving models from the "Model Randomizer" blacklist.</b> + <b>"Model Randomizer" kara listesinden sรผrรผลŸ modelleri ekleyin veya รงฤฑkarฤฑn.</b> Manage Model Ratings - Model Derecelendirmelerini Yรถnet + Model Puanlarฤฑnฤฑ Yรถnet - Reset or view the saved ratings for the driving models. - SรผrรผลŸ modelleri iรงin kaydedilen derecelendirmeleri sฤฑfฤฑrla veya gรถrรผntรผle. + <b>View or reset saved model ratings</b> used by the "Model Randomizer". + <b>"Model Rastgele Seรงici" tarafฤฑndan kullanฤฑlan</b> kayฤฑtlฤฑ model puanlarฤฑnฤฑ gรถrรผntรผleyin veya sฤฑfฤฑrlayฤฑn. Select Driving Model - SรผrรผลŸ Modelini Seรง + SรผrรผลŸ Modelini Seรง - Select the active driving model. - Aktif sรผrรผลŸ modelini seรงin. + <b>Choose which driving model openpilot uses.</b> + <b>openpilotโ€™ฤฑn kullanacaฤŸฤฑ sรผrรผลŸ modelini seรงin.</b> + + + Update Model Manager + Model Yรถneticisini Gรผncelle + + + <b>Update the "Model Manager"</b> to support the latest models. + En yeni modelleri desteklemek iรงin <b>"Model Manager"</b>'ฤฑ gรผncelleyin. DELETE - SฤฐL + SฤฐL DELETE ALL - HEPSฤฐNฤฐ SฤฐL + TรœMรœNรœ SฤฐL Select a driving model to delete - Silinecek bir sรผrรผลŸ modeli seรงin + Silinecek bir sรผrรผลŸ modeli seรงin Are you sure you want to delete the "%1" model? - "%1" modelini silmek istediฤŸinizden emin misiniz? + โ€œ%1โ€ modelini silmek istediฤŸinizden emin misiniz? Delete - Silmek + Sil Are you sure you want to delete all of your downloaded driving models? - Tรผm indirilen sรผrรผลŸ modellerinizi silmek istediฤŸinizden emin misiniz? + ฤฐndirilen tรผm sรผrรผลŸ modellerinizi silmek istediฤŸinizden emin misiniz? DOWNLOAD - ฤฐNDฤฐR + ฤฐNDฤฐR DOWNLOAD ALL - TรœMรœNรœ ฤฐNDฤฐR + TรœMรœNรœ ฤฐNDฤฐR - Select a driving model to download - ฤฐndirmek iรงin bir sรผrรผลŸ modeli seรงin + Tinygrad is out of date and must be updated before you can download new models. Update now? + Tinygrad gรผncel deฤŸil ve yeni modelleri indirmeden รถnce gรผncellenmesi gerekiyor. ลžimdi gรผncelle? + + + Updating Tinygrad will delete all existing Tinygrad-based models which will need to be re-downloaded. Proceed? + Tinygrad gรผncellemesi, mevcut tรผm Tinygrad tabanlฤฑ modelleri silecek ve bunlarฤฑn yeniden indirilmesi gerekecek. Devam edilsin mi? CANCEL - ฤฐPTAL ET + ฤฐPTAL + + + Updating... + Gรผncelleniyor... + + + Select a driving model to download + ฤฐndirmek iรงin bir sรผrรผลŸ modeli seรงin ADD - EKLE + EKLE REMOVE - KALDIR + KALDIR REMOVE ALL - HEPSฤฐNฤฐ KALDIR + TรœMรœNรœ KALDIR - There are no more models to blacklist! The only available model is "%1"! - Daha fazla kara listeye alฤฑnacak model yok! Tek mevcut model "%1"! + There are no more driving models to blacklist. The only available model is "%1"! + Kara listeye eklenecek baลŸka sรผrรผลŸ modeli yok. Tek mevcut model โ€œ%1โ€! - Select a model to add to the blacklist - Kara listeye eklenecek bir model seรงin + Select a driving model to add to the blacklist + Kara listeye eklenecek bir sรผrรผลŸ modeli seรงin Are you sure you want to add the "%1" model to the blacklist? - "%1" modelini kara listeye eklemek istediฤŸinizden emin misiniz? + "%1" modelini kara listeye eklemek istediฤŸinizden emin misiniz? Add - Ekle + Ekle - Select a model to remove from the blacklist - Kara listeden kaldฤฑrmak iรงin bir model seรงin + Select a driving model to remove from the blacklist + Kara listeden kaldฤฑrฤฑlacak bir sรผrรผลŸ modelini seรงin Are you sure you want to remove the "%1" model from the blacklist? - "%1" modelini kara listeden kaldฤฑrmak istediฤŸinizden emin misiniz? + "%1" modelini kara listeden kaldฤฑrmak istediฤŸinizden emin misiniz? Remove - Kaldฤฑr + Kaldฤฑr - Are you sure you want to remove all of your blacklisted models? - Tรผm kara listeye alฤฑnmฤฑลŸ modellerinizi kaldฤฑrmak istediฤŸinizden emin misiniz? + Are you sure you want to remove all of your blacklisted driving models? + Kara listeye alฤฑnmฤฑลŸ tรผm sรผrรผลŸ modellerinizi kaldฤฑrmak istediฤŸinizden emin misiniz? RESET - SIFIRLA + SIFIRLA VIEW - Gร–RรœNรœM + Gร–RรœNรœM - Are you sure you want to reset all of your model drives and scores? - Tรผm model sรผrรผcรผlerinizi ve puanlarฤฑnฤฑzฤฑ sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? + Reset all model drives and ratings? This clears your drive history and collected feedback! + Tรผm model sรผrรผลŸlerini ve puanlamalarฤฑ sฤฑfฤฑrlansฤฑn mฤฑ? Bu iลŸlem sรผrรผลŸ geรงmiลŸinizi ve toplanan geri bildirimleri temizler! SELECT - SELECT + SEร‡ - Select a model - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC - Bir model seรงin - ๐Ÿ—บ๏ธ = Navigasyon | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + UPDATE + GรœNCELLEME - The "Model Randomizer" only works with downloaded models. Do you want to download all the driving models? - "Model Randomizer" yalnฤฑzca indirilen modellerle รงalฤฑลŸฤฑr. Tรผm sรผrรผลŸ modellerini indirmek istiyor musunuz? + Cancelling... + ฤฐptal ediliyor... + + + Updating Tinygrad will delete existing Tinygrad-based driving models and need to be re-downloaded. Proceed? + Tinygradโ€™ฤฑ gรผncellemek mevcut Tinygrad tabanlฤฑ sรผrรผลŸ modellerini silecek ve yeniden indirilmeleri gerekecek. Devam edilsin mi? + + + The "Model Randomizer" works only with downloaded models. Download all models now? + "Model Randomizer" yalnฤฑzca indirilen modellerle รงalฤฑลŸฤฑr. Tรผm modeller ลŸimdi indirilsin mi? Offline... - ร‡evrimdฤฑลŸฤฑ... + ร‡evrimdฤฑลŸฤฑ... + + + Update available! + Gรผncelleme mevcut! + + + Up to date! + Gรผncel! + + + Select a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + Bir Model Seรง โ€” ๐Ÿ—บ๏ธ = Navigasyon | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + + + + FrogPilotModelReview + + How would you rate that drive? + O sรผrรผลŸรผ nasฤฑl deฤŸerlendirirsiniz? + + + Model successfully blacklisted! + Model baลŸarฤฑyla kara listeye alฤฑndฤฑ! + + + Drive Rating Selection + SรผrรผลŸ Derecelendirmesi Seรงimi + + + Blacklist this model to remove it from rotation + Bu modeli rotasyondan kaldฤฑrmak iรงin kara listeye alฤฑn + + + Blacklist Model + Kara Liste Modeli + + + Model used during that drive: + O sรผrรผลŸ sฤฑrasฤฑnda kullanฤฑlan model:" + + + Model Rank + Model Sฤฑralamasฤฑ + + + Model Rating + Model Puanฤฑ + + + Model Drives + Model SรผrรผลŸleri + + + Total Drives + Toplam SรผrรผลŸler + + + #%1 + #%1 + + + %1% + %1% + + + %1 %2 + %1 %2 + + + Drive + SรผrรผลŸ + + + Drives + SรผrรผลŸler + + + %1 Total %2 + %1 Toplam %2 FrogPilotNavigationPanel - - Manage your %1. - %1'inizi yรถnetin. - - - ADD - EKLE - - - Enter your %1 - %1 girin - - - Inputted key is invalid or too short! - Girilen anahtar geรงersiz veya รงok kฤฑsa! - - - Are you sure you want to remove your %1? - %1'i kaldฤฑrmak istediฤŸinizden emin misiniz? - - - REMOVE - KALDIR - Manage Your Settings At - Ayarlarฤฑnฤฑzฤฑ Yรถnetin - - - MapBox - MapBox - - - Amap - Amap - - - Google - Google - - - Destination Search Provider - Hedef Arama SaฤŸlayฤฑcฤฑsฤฑ - - - The search provider used for destination queries in "Navigate on Openpilot". Options include "MapBox" (recommended), "Amap", and "Google Maps". - "Navigate on Openpilot" iรงindeki varฤฑลŸ yeri sorgularฤฑ iรงin kullanฤฑlan arama saฤŸlayฤฑcฤฑsฤฑ. Seรงenekler arasฤฑnda "MapBox" (รถnerilen), "Amap" ve "Google Maps" bulunur. - - - Amap Key #1 - Amap Anahtarฤฑ #1 - - - Manage your Amap key. - Amap anahtarฤฑnฤฑzฤฑ yรถnetin. - - - Enter your Amap key - Amap anahtarฤฑnฤฑzฤฑ girin - - - Are you sure you want to remove your Amap key? - Amap anahtarฤฑnฤฑzฤฑ kaldฤฑrmak istediฤŸinizden emin misiniz? - - - Amap Key #2 - Amap Anahtarฤฑ #2 - - - Google Maps Key - Google Haritalar Anahtarฤฑ - - - Manage your Google Maps key. - Google Haritalar anahtarฤฑnฤฑzฤฑ yรถnetin. - - - Enter your Google Maps key - Google Haritalar anahtarฤฑnฤฑzฤฑ girin - - - Are you sure you want to remove your Google Maps key? - Google Maps anahtarฤฑnฤฑzฤฑ kaldฤฑrmak istediฤŸinizden emin misiniz? - - - Public Mapbox Key - Genel Mapbox Anahtarฤฑ - - - Secret Mapbox Key - Gizli Mapbox Anahtarฤฑ - - - MapBox Setup Instructions - MapBox Kurulum Talimatlarฤฑ - - - VIEW - Gร–RรœNรœM - - - View the instructions to set up "MapBox" for "Primeless Navigation". - "Primeless Navigation" iรงin "MapBox" kurulum talimatlarฤฑnฤฑ gรถrรผntรผleyin. - - - CANCEL - ฤฐPTAL ET - - - Speed Limit Filler - Hฤฑz Sฤฑnฤฑrฤฑ Doldurucu - - - Are you sure you want to cancel the speed limit update process? - Hฤฑz sฤฑnฤฑrฤฑ gรผncelleme iลŸlemini iptal etmek istediฤŸinizden emin misiniz? - - - You have reached the request limit. - -It will reset in %1 hours and %2 minutes. - ฤฐstek limitine ulaลŸtฤฑnฤฑz. - -%1 saat ve %2 dakika iรงinde sฤฑfฤฑrlanacak. - - - This process will take awhile, so it's advised to start when you're done driving with a stable Wi-Fi connection. Do you wish to proceed? - Bu iลŸlem biraz zaman alacak, bu yรผzden sรผrรผลŸรผnรผz bittiฤŸinde ve sabit bir Wi-Fi baฤŸlantฤฑnฤฑz olduฤŸunda baลŸlamanฤฑz tavsiye edilir. Devam etmek istiyor musunuz? - - - Manually Update Speed Limits - Hฤฑz Limitlerini Manuel Olarak Gรผncelle - - - Automatically collect missing or incorrect speed limits from your dashboard (if supported), <b>Mapbox</b>, and <b>Navigate-on-openpilot</b> while driving.<br><br>When the car is turned off and connected to Wi-Fi, your speed limit data is automatically processed into a compiled file formatted for the tool located at <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>You can grab the processed file from <b>The Pond</b> via the <b>Download Speed Limits</b> menu.<br><br>Want a more thorough walkthrough? Check out the <b>#speed-limit-filler</b> channel in the <b>FrogPilot Discord</b>! - Destekleniyorsa, gรถsterge panelinizden, <b>Mapbox</b> ve <b>Navigate-on-openpilot</b> ile sรผrรผลŸ sฤฑrasฤฑnda eksik veya yanlฤฑลŸ hฤฑz limitlerini otomatik olarak toplayฤฑn.<br><br>Araba kapatฤฑldฤฑฤŸฤฑnda ve Wi-Fi'ye baฤŸlฤฑ olduฤŸunda, hฤฑz limiti verileriniz otomatik olarak <b>SpeedLimitFiller.frogpilot.download</b> adresinde bulunan araรง iรงin biรงimlendirilmiลŸ derlenmiลŸ bir dosyaya iลŸlenir.<br><br>ฤฐลŸlenmiลŸ dosyayฤฑ <b>The Pond</b> รผzerinden <b>Download Speed Limits</b> menรผsรผnden alabilirsiniz.<br><br>Daha ayrฤฑntฤฑlฤฑ bir kฤฑlavuz mu istiyorsunuz? <b>FrogPilot Discord</b> รผzerindeki <b>#speed-limit-filler</b> kanalฤฑna gรถz atฤฑn! - - - Cancelled... - ฤฐptal edildi... - - - Completed! - Tamamlandฤฑ! + Ayarlarฤฑnฤฑzฤฑ Yรถnetin Offline... - ร‡evrimdฤฑลŸฤฑ... + ร‡evrimdฤฑลŸฤฑ... + + + Mapbox + Mapbox + + + Amap + Amap + + + Destination Search Provider + Hedef Arama SaฤŸlayฤฑcฤฑsฤฑ + + + <b>The search provider used for destination queries</b> in "Navigate on Openpilot". Options include Mapbox (recommended) and Amap. + <b>"Navigate on Openpilot" iรงinde hedef sorgularฤฑ iรงin kullanฤฑlan arama saฤŸlayฤฑcฤฑsฤฑ</b>. Seรงenekler arasฤฑnda Mapbox (รถnerilen) ve Amap bulunur. + + + Amap Key #1 + Amap Anahtarฤฑ #1 + + + Amap Key #2 + Amap Anahtarฤฑ #2 + + + Public Mapbox Key + Genel Mapbox Anahtarฤฑ + + + Secret Mapbox Key + Gizli Mapbox Anahtarฤฑ + + + Mapbox Setup Instructions + Mapbox Kurulum Talimatlarฤฑ + + + VIEW + Gร–RรœNรœM + + + <b>Instructions on how to set up Mapbox</b> for "Primeless Navigation". + <b>Mapboxโ€™u kurma talimatlarฤฑ</b> โ€œPrimeless Navigationโ€ iรงin. + + + CANCEL + ฤฐPTAL + + + Manually Update Speed Limits + Hฤฑz Sฤฑnฤฑrlarฤฑnฤฑ Elle Gรผncelle + + + Speed Limit Filler + Hฤฑz Sฤฑnฤฑrฤฑ Doldurucu + + + <b>Automatically collect missing or incorrect speed limits while you drive</b> using speeds limits sourced from your dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When you're parked and connected to Wi-Fi, FrogPilot will automatically processes this data into a file to be used with the tool located at "SpeedLimitFiller.frogpilot.download".<br><br>You can download this file from "The Pond" in the "Download Speed Limits" menu.<br><br>Need a step-by-step guide? Visit <b>#speed-limit-filler</b> in the FrogPilot Discord! + <b>SรผrรผลŸ sฤฑrasฤฑnda eksik veya hatalฤฑ hฤฑz sฤฑnฤฑrlarฤฑnฤฑ otomatik olarak toplayฤฑn</b>; hฤฑz sฤฑnฤฑrlarฤฑ, gรถsterge panelinizden (destekleniyorsa), Mapboxโ€™tan ve "Navigate on openpilot"tan alฤฑnฤฑr.<br><br>Aracฤฑnฤฑzฤฑ park ettiฤŸinizde ve Wiโ€‘Fiโ€™ya baฤŸlฤฑyken, FrogPilot bu verileri otomatik olarak "SpeedLimitFiller.frogpilot.download" konumunda bulunan araรงla kullanฤฑlacak bir dosyaya iลŸler.<br><br>Bu dosyayฤฑ "The Pond" iรงindeki "Download Speed Limits" menรผsรผnden indirebilirsiniz.<br><br>Adฤฑm adฤฑm bir rehbere mi ihtiyacฤฑnฤฑz var? FrogPilot Discordโ€™unda <b>#speed-limit-filler</b> kanalฤฑnฤฑ ziyaret edin! + + + Cancel the speed-limit update? + Hฤฑz sฤฑnฤฑrฤฑ gรผncellemesini iptal et? + + + Cancelled... + ฤฐptal edildi... + + + You've hit today's request limit. + +It will reset in %1 hours and %2 minutes. + Bugรผnรผn istek sฤฑnฤฑrฤฑna ulaลŸtฤฑnฤฑz. +%1 saat ve %2 dakika iรงinde sฤฑfฤฑrlanacak. + + + This process takes a while. It's recommended to start when you're done driving and connected to stable Wi-Fi. Continue? + Bu iลŸlem biraz zaman alฤฑr. SรผrรผลŸรผnรผz bittiฤŸinde ve stabil Wiโ€‘Fiโ€™ye baฤŸlฤฑyken baลŸlatmanฤฑz รถnerilir. Devam edilsin mi? + + + <b>Manage your "%1".</b> + <b>"%1" รถฤŸenizi yรถnetin.</b> + + + ADD + EKLE + + + Enter your %1 + %1 girin + + + Inputted key is invalid or too short! + Girilen anahtar geรงersiz veya รงok kฤฑsa! + + + Remove your %1? + %1 รถฤŸenizi kaldฤฑrฤฑn? + + + REMOVE + KALDIR + + + Completed! + Tamamlandฤฑ! FrogPilotSettingsWindow MANAGE - Yร–NET + Yร–NET DRIVING MODEL - SรœRรœลž MODELฤฐ + SรœRรœลž MODELฤฐ GAS / BRAKE - GAZ / FREN + GAZ / FRENLER STEERING - DฤฐREKSฤฐYON + DฤฐREKSฤฐYON MAP DATA - HARฤฐTA VERฤฐLERฤฐ + HARฤฐTA VERฤฐLERฤฐ NAVIGATION - NAVฤฐGASYON + NAVฤฐGASYON DATA - VERฤฐ + VERฤฐ DEVICE CONTROLS - CฤฐHAZ KONTROLLERฤฐ + CฤฐHAZ KONTROLLERฤฐ UTILITIES - ARAร‡LAR + ARAร‡LAR APPEARANCE - Gร–RรœNรœM + Gร–RรœNรœM THEME - TEMA + TEMA VEHICLE SETTINGS - ARAร‡ AYARLARI + ARAร‡ AYARLARI WHEEL CONTROLS - TEKERLEK KONTROLLERฤฐ + DฤฐREKSฤฐYON KONTROLLERฤฐ Alerts and Sounds - Uyarฤฑlar ve Sesler + Uyarฤฑlar ve Sesler - FrogPilot settings for alert volumes and custom notifications to stay informed about important driving events. - FrogPilot ayarlarฤฑ, รถnemli sรผrรผลŸ olaylarฤฑ hakkฤฑnda bilgi sahibi olmak iรงin uyarฤฑ ses seviyeleri ve รถzel bildirimler. + <b>Adjust alert volumes and enable custom notifications.</b> + <b>Uyarฤฑ seslerini ayarlayฤฑn ve รถzel bildirimleri etkinleลŸtirin.</b> Driving Controls - SรผrรผลŸ Kontrolleri + SรผrรผลŸ Kontrolleri - FrogPilot settings for acceleration, braking, and steering. - FrogPilot ayarlarฤฑ hฤฑzlanma, frenleme ve direksiyon iรงin. + <b>Fine-tune custom FrogPilot acceleration, braking, and steering controls.</b> + <b>ร–zel FrogPilot hฤฑzlanma, frenleme ve direksiyon kontrollerini ince ayarlayฤฑn.</b> Navigation - Gezinme + Navigasyon - Download map data for <b>Curve Speed Control</b>, <b>Speed Limit Controller</b>, and set up <b>Navigate on openpilot (NOO)</b>. - <b>Viraj Hฤฑzฤฑ Kontrolรผ</b>, <b>Hฤฑz Sฤฑnฤฑrฤฑ Kontrolcรผsรผ</b> iรงin harita verilerini indirin ve <b>openpilot'ta Gezinmeyi Ayarla (NOO)</b>. + <b>Download map data for the "Speed Limit Controller" and configure "Navigate on openpilot" (NOO).</b> + <b>"Hฤฑz Sฤฑnฤฑrฤฑ Denetleyicisi" iรงin harita verilerini indirin ve "openpilot ile Seyrรผsefer"i (NOO) yapฤฑlandฤฑrฤฑn.</b> - System Management - Sistem Yรถnetimi + System Settings + Sistem Ayarlarฤฑ - Data storage management, debugging tools, device settings, screen behavior settings, system backups, and utilities to maintain, optimize, and troubleshoot FrogPilot. - Veri depolama yรถnetimi, hata ayฤฑklama araรงlarฤฑ, cihaz ayarlarฤฑ, ekran davranฤฑลŸฤฑ ayarlarฤฑ, sistem yedeklemeleri ve FrogPilot'ฤฑ sรผrdรผrmek, optimize etmek ve sorun gidermek iรงin yardฤฑmcฤฑ programlar. + <b>Manage backups, device settings, screen options, storage, and tools to keep FrogPilot running smoothly.</b> + <b>FrogPilotโ€™ฤฑn sorunsuz รงalฤฑลŸmasฤฑnฤฑ saฤŸlamak iรงin yedeklemeleri, cihaz ayarlarฤฑnฤฑ, ekran seรงeneklerini, depolamayฤฑ ve araรงlarฤฑ yรถnetin.</b> Theme and Appearance - Tema ve Gรถrรผnรผm + Tema ve Gรถrรผnรผm - FrogPilot settings for the current theme, driving-screen, and the overall user interface. - Mevcut tema, sรผrรผลŸ ekranฤฑ ve genel kullanฤฑcฤฑ arayรผzรผ iรงin FrogPilot ayarlarฤฑ. + <b>Customize the look of the driving screen and interface, including themes!</b> + <b>SรผrรผลŸ ekranฤฑnฤฑn ve arayรผzรผn gรถrรผnรผmรผnรผ, temalar dahil, รถzelleลŸtirin!</b> - Vehicle Controls - Araรง Kontrolleri + Vehicle Settings + Araรง Ayarlarฤฑ - Options unique to supported manufacturers and vehicle fingerprint management. - Desteklenen รผreticilere ve araรง parmak izi yรถnetimine รถzgรผ seรงenekler. + <b>Configure car-specific options and steering wheel button mappings.</b> + <b>Araรง รถzel seรงeneklerini ve direksiyon dรผฤŸmesi eลŸlemelerini yapฤฑlandฤฑrฤฑn.</b> Minimal - Minimal + Minimal Standard - Standart + Standart Advanced - GeliลŸmiลŸ + GeliลŸmiลŸ Developer - GeliลŸtirici + GeliลŸtirici Tuning Level - Ayarlama Seviyesi + Ayarlama Dรผzeyi - The visibility and complexity of tuning settings. Lower levels simplify the interface by hiding advanced options, while higher levels unlock detailed customization. + Choose your tuning level. Lower levels keep it simple; higher levels unlock more toggles for finer control. Minimal - Ideal for those who prefer simplicity or ease of use Standard - Recommended for most users for a balanced experience -Advanced - Unlocks fine-tuning controls for more experienced users -Developer - Unlocks highly customizable settings for seasoned enthusiasts - Ayarlarฤฑn gรถrรผnรผrlรผฤŸรผ ve karmaลŸฤฑklฤฑฤŸฤฑ. Daha dรผลŸรผk seviyeler, geliลŸmiลŸ seรงenekleri gizleyerek arayรผzรผ basitleลŸtirirken, daha yรผksek seviyeler ayrฤฑntฤฑlฤฑ รถzelleลŸtirmeyi aรงar. +Advanced - Fine-tuning for experienced users +Developer - Highly customizable settings for seasoned enthusiasts + Ayar dรผzeyinizi seรงin. Daha dรผลŸรผk dรผzeyler basit kalฤฑr; daha yรผksek dรผzeyler daha ince kontrol iรงin daha fazla anahtar aรงar. -Minimal - Basitlik veya kullanฤฑm kolaylฤฑฤŸฤฑ tercih edenler iรงin ideal -Standart - ร‡oฤŸu kullanฤฑcฤฑ iรงin dengeli bir deneyim รถnerilir -GeliลŸmiลŸ - Daha deneyimli kullanฤฑcฤฑlar iรงin ince ayar kontrollerini aรงar -GeliลŸtirici - Deneyimli meraklฤฑlar iรงin son derece รถzelleลŸtirilebilir ayarlarฤฑ aรงar +Minimal - Sadelik veya kullanฤฑm kolaylฤฑฤŸฤฑnฤฑ tercih edenler iรงin ideal +Standart - Dengeli bir deneyim iรงin รงoฤŸu kullanฤฑcฤฑya รถnerilir +GeliลŸmiลŸ - Deneyimli kullanฤฑcฤฑlar iรงin ince ayar +GeliลŸtirici - Tecrรผbeli meraklฤฑlar iรงin yรผksek รถzelleลŸtirilebilir ayarlar - WARNING: This unlocks some potentially dangerous settings that can DRASTICALLY alter your driving experience! - UYARI: Bu, sรผrรผลŸ deneyiminizi ร‡OK FAZLA deฤŸiลŸtirebilecek bazฤฑ potansiyel olarak tehlikeli ayarlarฤฑn kilidini aรงar! + WARNING: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do! + UYARI: Bu ayarlar risklidir ve openpilotโ€™un sรผrรผลŸ ลŸeklini kรถkten deฤŸiลŸtirebilir. Yalnฤฑzca ne yaptฤฑklarฤฑnฤฑ tamamen anlฤฑyorsanฤฑz deฤŸiลŸtirin! + + + All toggle descriptions are currently expanded. You can tap a toggle's name to open or close its description at any time! + Tรผm anahtar aรงฤฑklamalarฤฑ ลŸu anda geniลŸletilmiลŸ. ฤฐstediฤŸiniz zaman bir anahtarฤฑn adฤฑna dokunarak aรงฤฑklamasฤฑnฤฑ aรงฤฑp kapatabilirsiniz! FrogPilotSoundsPanel - Alert Volume Control - Uyarฤฑ Ses Kontrolรผ + Alert Volume Controller + Uyarฤฑ Ses Dรผzeyi Denetleyicisi - Adjust the volume for each alert in openpilot. - openpilot'teki her uyarฤฑnฤฑn ses seviyesini ayarlayฤฑn. + <b>Set how loud each type of openpilot alert is</b> to keep routine prompts from becoming distracting. + <b>Her bir openpilot uyarฤฑ tรผrรผnรผn ses seviyesini ayarlayฤฑn</b> ki rutin bildirimler dikkat daฤŸฤฑtฤฑcฤฑ olmasฤฑn. Disengage Volume - Sesi Devre DฤฑลŸฤฑ Bฤฑrak + Devreden ร‡ฤฑkma Sesi - Adjust the volume for alerts like:<br><br><b>Adaptive Cruise Disabled</b><br><b>Brake Pedal Pressed</b><br><b>Parking Brake Engaged</b><br><b>Speed too Low</b> - Uyarฤฑlar iรงin sesi ayarlayฤฑn, รถrneฤŸin:<br><br><b>Adaptif Hฤฑz Sabitleyici Devre DฤฑลŸฤฑ</b><br><b>Fren Pedalฤฑ Basฤฑlฤฑ</b><br><b>Park Freni Devrede</b><br><b>Hฤฑz ร‡ok DรผลŸรผk</b> + <b>Set the volume for alerts when openpilot disengages.</b><br><br>Examples include: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". + <b>openpilot devreden รงฤฑktฤฑฤŸฤฑnda uyarฤฑlarฤฑn ses seviyesini ayarlayฤฑn.</b><br><br>ร–rnekler: "Cruise Arฤฑzasฤฑ: Aracฤฑ Yeniden BaลŸlatฤฑn", "Park Freni Devrede", "Pedala Basฤฑldฤฑ". Engage Volume - Ses Dรผzeyini Ayarla + Kullanฤฑma Alma Sesi - Adjust the volume for alerts like:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> - Uyarฤฑlar iรงin sesi ayarlayฤฑn:<br><br><b>NNFF Tork Kontrol Cihazฤฑ yรผklendi</b><br><b>openpilot devrede</b> + <b>Set the volume for the chime when openpilot engages</b>, such as after pressing the "RESUME" or "SET" steering wheel buttons. + <b>openpilot devreye girdiฤŸinde รงalacak uyarฤฑ sesi seviyesini ayarlayฤฑn</b>; รถrneฤŸin direksiyon รผzerindeki "RESUME" veya "SET" dรผฤŸmelerine bastฤฑktan sonra. Prompt Volume - ฤฐstem Hacmi + Komut Hacmi - Adjust the volume for alerts like:<br><br><b>Car Detected in Blindspot</b><br><b>Steer Unavailable Below "X"</b><br><b>Speed too Low</b><br><b>Take Control, Turn Exceeds Steering Limit</b> - Uyarฤฑlar iรงin sesi ayarlayฤฑn:<br><br><b>Kรถr Noktada Araรง Tespit Edildi</b><br><b>"X" Altฤฑnda Direksiyon Kullanฤฑlamaz</b><br><b>Hฤฑz ร‡ok DรผลŸรผk</b><br><b>Kontrolรผ Alฤฑn, DรถnรผลŸ Direksiyon Limitini AลŸฤฑyor</b> + <b>Set the volume for prompts that need attention.</b><br><br>Examples include: "Car Detected in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". + <b>Dikkat gerektiren uyarฤฑlar iรงin ses dรผzeyini ayarlayฤฑn.</b><br><br>ร–rnekler: "Kรถr Noktada Araรง Tespit Edildi", "Direksiyon Geรงici Olarak Kullanฤฑlamฤฑyor", "DรถnรผลŸ Direksiyon Limitini AลŸฤฑyor". Prompt Distracted Volume - Dikkat DaฤŸฤฑtan Ses Dรผzeyi + Uyarฤฑ Dikkati DaฤŸฤฑtan Ses Dรผzeyi - Adjust the volume for alerts like:<br><br><b>Pay Attention, Driver Distracted</b><br><b>Touch Steering Wheel, Driver Unresponsive</b> - Translation A + <b>Set the volume for prompts when openpilot detects driver distraction or unresponsiveness.</b><br><br>Examples include: "Pay Attention", "Touch Steering Wheel". + <b>openpilot sรผrรผcรผ dikkati daฤŸฤฑnฤฑklฤฑฤŸฤฑnฤฑ veya tepkisizliฤŸini tespit ettiฤŸinde uyarฤฑlarฤฑn ses dรผzeyini ayarlayฤฑn.</b><br><br>ร–rneklere ลŸunlar dahildir: "Dikkatini Ver", "Direksiyon Simidine Dokun". Refuse Volume - Reddet Hacmi + Reddedilen Ses Dรผzeyi - Adjust the volume for alerts like:<br><br><b>openpilot Unavailable</b> - Uyarฤฑlar iรงin sesi ayarlayฤฑn:<br><br><b>openpilot Kullanฤฑlamฤฑyor</b> + <b>Set the volume for alerts when openpilot refuses to engage.</b><br><br>Examples include: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". + <b>openpilot devreye girmeyi reddettiฤŸinde uyarฤฑlarฤฑn ses dรผzeyini ayarlayฤฑn.</b><br><br>ร–rnekler: "Fren Tutma Aktif", "Kapฤฑ Aรงฤฑk", "Emniyet Kemeri Aรงฤฑk". Warning Soft Volume - YumuลŸak Ses Uyarฤฑsฤฑ + Uyarฤฑ YumuลŸak Ses - Adjust the volume for alerts like:<br><br><b>BRAKE!, Risk of Collision</b><br><b>TAKE CONTROL IMMEDIATELY</b> - Uyarฤฑlar iรงin sesi ayarlayฤฑn:<br><br><b>FREN!, ร‡arpฤฑลŸma Riski</b><br><b>HEMEN KONTROLรœ ELE ALIN</b> + <b>Set the volume for softer warnings about potential risks.</b><br><br>Examples include: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". + <b>Potansiyel riskler hakkฤฑnda daha yumuลŸak uyarฤฑlarฤฑn ses seviyesini ayarlayฤฑn.</b><br><br>ร–rnekler: "FREN! ร‡arpฤฑลŸma Riski", "Direksiyon Geรงici Olarak Kullanฤฑlamฤฑyor". Warning Immediate Volume - Uyarฤฑ Anฤฑnda Ses Seviyesi + Uyarฤฑ Anฤฑnda Ses Dรผzeyi - Adjust the volume for alerts like:<br><br><b>DISENGAGE IMMEDIATELY, Driver Distracted</b><br><b>DISENGAGE IMMEDIATELY, Driver Unresponsive</b> - Uyarฤฑlar iรงin sesi ayarlayฤฑn:<br><br><b>HEMEN AYRIL, Sรผrรผcรผ Dikkati DaฤŸฤฑlmฤฑลŸ</b><br><b>HEMEN AYRIL, Sรผrรผcรผ Tepkisiz</b> + <b>Set the volume for the loudest warnings that require urgent attention.</b><br><br>Examples include: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". + <b>Acil dikkat gerektiren en yรผksek sesli uyarฤฑlarฤฑn ses seviyesini ayarlayฤฑn.</b><br><br>ร–rnekler: "HEMEN DEVREDEN ร‡IKARIN โ€” Sรผrรผcรผ Dikkati DaฤŸฤฑlmฤฑลŸ", "HEMEN DEVREDEN ร‡IKARIN โ€” Sรผrรผcรผ Tepki Vermiyor". FrogPilot Alerts - FrogPilot Uyarฤฑlarฤฑ + FrogPilot Uyarฤฑlarฤฑ - FrogPilot alerts for various events in openpilot. - FrogPilot, openpilot'taki รงeลŸitli olaylar iรงin uyarฤฑlar verir. + <b>Optional FrogPilot alerts</b> that highlight driving events in a more noticeable way. + <b>ฤฐsteฤŸe baฤŸlฤฑ FrogPilot uyarฤฑlarฤฑ</b>, sรผrรผลŸ olaylarฤฑnฤฑ daha belirgin bir ลŸekilde vurgular. - Goat Scream Steering Saturated Alert - Keรงi ร‡ฤฑฤŸlฤฑฤŸฤฑ Direksiyon DoymuลŸ Uyarฤฑsฤฑ + Goat Scream + Keรงi ร‡ฤฑฤŸlฤฑฤŸฤฑ - The infamous "Goat Scream" that has brought both joy and anger to FrogPilot users all around the world! - Dรผnyanฤฑn dรถrt bir yanฤฑndaki FrogPilot kullanฤฑcฤฑlarฤฑna hem neลŸe hem de รถfke getiren meลŸhur "Keรงi ร‡ฤฑฤŸlฤฑฤŸฤฑ"! + <b>Play the infamous "Goat Scream" when the steering controller reaches its limit.</b> Based on the "Turn Exceeds Steering Limit" event. + <b>Direksiyon kontrolรถrรผ sฤฑnฤฑrฤฑna ulaลŸtฤฑฤŸฤฑnda meลŸhur โ€œKeรงi ร‡ฤฑฤŸlฤฑฤŸฤฑโ€nฤฑ รงal.</b> โ€œDรถnรผลŸ Direksiyon Sฤฑnฤฑrฤฑnฤฑ AลŸฤฑyorโ€ olayฤฑna dayanฤฑr. Green Light Alert - YeลŸil IลŸฤฑk Uyarฤฑsฤฑ + YeลŸil IลŸฤฑk Uyarฤฑsฤฑ - Get an alert when the traffic light changes from red to green. - Trafik ฤฑลŸฤฑฤŸฤฑ kฤฑrmฤฑzฤฑdan yeลŸile dรถndรผฤŸรผnde bir uyarฤฑ al. + <b>Play an alert when the model predicts a red light has turned green.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights. This alert is based on end-to-end model predictions from camera input and may trigger even when the light has not changed.</i> + <b>Model kฤฑrmฤฑzฤฑ ฤฑลŸฤฑฤŸฤฑn yeลŸile dรถndรผฤŸรผnรผ tahmin ettiฤŸinde bir uyarฤฑ รงal.</b><br><br><i><b>Feragat</b>: openpilot trafik ฤฑลŸฤฑklarฤฑnฤฑ aรงฤฑkรงa algฤฑlamaz. Bu uyarฤฑ, kamera giriลŸinden end-to-end model tahminlerine dayanฤฑr ve ฤฑลŸฤฑk henรผz deฤŸiลŸmemiลŸ olsa bile tetiklenebilir.</i> Lead Departing Alert - Ayrฤฑlan Lider Uyarฤฑsฤฑ + ร–ndeki Araรง UzaklaลŸฤฑyor Uyarฤฑsฤฑ - Get an alert when the lead vehicle begins to depart from a standstill. - ร–ncรผ araรง hareketsiz durumdan ayrฤฑlmaya baลŸladฤฑฤŸฤฑnda bir uyarฤฑ alฤฑn. + <b>Play an alert when the lead vehicle departs from a stop.</b> + <b>ร–ndeki araรง duraktan ayrฤฑldฤฑฤŸฤฑnda uyarฤฑ รงal.</b> Loud "Car Detected in Blindspot" Alert - Yรผksek Sesli "Kรถr Noktada Araรง Tespit Edildi" Uyarฤฑsฤฑ + Yรผksek sesli "Kรถr Noktada Araรง Tespit Edildi" uyarฤฑsฤฑ - A louder alert for when a vehicle is detected in the blindspot when attempting to change lanes. - ลžerit deฤŸiลŸtirmeye รงalฤฑลŸฤฑrken kรถr noktada bir araรง tespit edildiฤŸinde daha yรผksek sesli bir uyarฤฑ. + <b>Play a louder alert if a vehicle is in the blind spot when attempting to change lanes.</b> Based on the "Car Detected in Blindspot" event. + <b>ลžerit deฤŸiลŸtirmeye รงalฤฑลŸฤฑrken kรถr noktanฤฑzda bir araรง varsa daha yรผksek sesli bir uyarฤฑ รงal.</b> "Kรถr Noktada Araรง Algฤฑlandฤฑ" olayฤฑna dayanฤฑr. Speed Limit Changed Alert - Hฤฑz Sฤฑnฤฑrฤฑ DeฤŸiลŸti Uyarฤฑsฤฑ + Hฤฑz Sฤฑnฤฑrฤฑ DeฤŸiลŸti Uyarฤฑsฤฑ - Get an alert when the speed limit changes. - Hฤฑz sฤฑnฤฑrฤฑ deฤŸiลŸtiฤŸinde bir uyarฤฑ alฤฑn. + <b>Play an alert when the posted speed limit changes.</b> + <b>Yayฤฑnlanan hฤฑz sฤฑnฤฑrฤฑ deฤŸiลŸtiฤŸinde bir uyarฤฑ รงal.</b> Muted - Sessiz + Sessize alฤฑndฤฑ Auto - Otomatik + Otomatik Test - Test + Test FrogPilotThemesPanel - Custom Theme - ร–zel Tema + Custom Themes + ร–zel Temalar - The overall appearance of openpilot. - Openpilot'ฤฑn genel gรถrรผnรผmรผ. + <b>The overall look and feel of openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilotโ€™ฤฑn genel gรถrรผnรผmรผ ve hissi.</b> Kendi temalarฤฑnฤฑzฤฑ oluลŸturmak ve paylaลŸmak iรงin โ€œThe Pondโ€ iรงindeki โ€œTheme Makerโ€ฤฑ kullanฤฑn! Color Scheme - Renk ลžemasฤฑ + Renk ลžemasฤฑ - openpilot's color scheme. - -Want to submit your own color scheme? Share it in the "custom-themes" channel on the FrogPilot Discord! - openpilot'ฤฑn renk ลŸemasฤฑ. - -Kendi renk ลŸemanฤฑzฤฑ gรถndermek mi istiyorsunuz? FrogPilot Discord'daki "custom-themes" kanalฤฑnda paylaลŸฤฑn! + <b>The color scheme used throughout openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot genelinde kullanฤฑlan renk ลŸemasฤฑ.</b> Kendi temalarฤฑnฤฑzฤฑ oluลŸturup paylaลŸmak iรงin "The Pond" iรงindeki "Theme Maker"ฤฑ kullanฤฑn! + + + Distance Button + Mesafe DรผฤŸmesi + + + <b>The distance button icons shown on the driving screen.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>SรผrรผลŸ ekranฤฑnda gรถsterilen mesafe dรผฤŸmesi simgeleri.</b> Kendi temanฤฑzฤฑ oluลŸturup paylaลŸmak iรงin "The Pond" iรงindeki "Theme Maker"ฤฑ kullanฤฑn! Icon Pack - Simge Paketi + Simge Paketi - openpilot's icon pack. - -Want to submit your own icons? Share them in the "custom-themes" channel on the FrogPilot Discord! - Kendi simgelerinizi gรถndermek mi istiyorsunuz? Onlarฤฑ FrogPilot Discord'daki "custom-themes" kanalฤฑnda paylaลŸฤฑn! + <b>The icon style used across openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot genelinde kullanฤฑlan simge stili.</b> Kendi temalarฤฑnฤฑzฤฑ oluลŸturmak ve paylaลŸmak iรงin "The Pond" iรงindeki "Theme Maker"ฤฑ kullanฤฑn! Sound Pack - Ses Paketi + Ses Paketi - openpilot's sound effects. - -Want to submit your own sounds? Share them in the "custom-themes" channel on the FrogPilot Discord! - openpilot'ฤฑn ses efektleri. - -Kendi seslerinizi gรถndermek mi istiyorsunuz? FrogPilot Discord'daki "custom-themes" kanalฤฑnda paylaลŸฤฑn! + <b>The sound pack used by openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot tarafฤฑndan kullanฤฑlan ses paketi.</b> Kendi temalarฤฑnฤฑzฤฑ oluลŸturup paylaลŸmak iรงin "The Pond" iรงindeki "Theme Maker"ฤฑ kullanฤฑn! Steering Wheel - Direksiyon Simidi + Direksiyon Simidi - The steering wheel icon in the top right of the driving screen. - SรผrรผลŸ ekranฤฑnฤฑn saฤŸ รผst kรถลŸesindeki direksiyon simgesi. - - - Themed turn signal animations. - -Want to submit your own animations? Share them in the "custom-themes" channel on the FrogPilot Discord! - Temalฤฑ sinyal animasyonlarฤฑ. - -Kendi animasyonlarฤฑnฤฑzฤฑ gรถndermek mi istiyorsunuz? Onlarฤฑ FrogPilot Discord'daki "custom-themes" kanalฤฑnda paylaลŸฤฑn! - - - Download Status - ฤฐndirme Durumu - - - Holiday Themes - Tatil Temalarฤฑ - - - Holiday-based visual themes for openpilot. Minor holidays last one day; major holidays (Christmas, Easter, Halloween, etc.) continue all week. - Openpilot iรงin tatil temalฤฑ gรถrsel temalar. Kรผรงรผk tatiller bir gรผn sรผrer; bรผyรผk tatiller (Noel, Paskalya, Cadฤฑlar Bayramฤฑ, vb.) tรผm hafta devam eder. - - - Rainbow Path - GรถkkuลŸaฤŸฤฑ Yolu - - - The path on the driving screen turns into a Mario Kart inspired "Rainbow Path". - SรผrรผลŸ ekranฤฑndaki yol, Mario Kart'tan esinlenilmiลŸ "GรถkkuลŸaฤŸฤฑ Yolu"na dรถnรผลŸรผyor. - - - Random Events - Rastgele Olaylar - - - Random cosmetic events that trigger after certain driving conditions. These events are purely for fun and don't affect driving controls! - Belirli sรผrรผลŸ koลŸullarฤฑndan sonra tetiklenen rastgele kozmetik olaylar. Bu olaylar tamamen eฤŸlence amaรงlฤฑdฤฑr ve sรผrรผลŸ kontrollerini etkilemez! - - - Random Themes - Rastgele Temalar - - - Cycles through your downloaded themes randomly on each boot, giving every theme in your collection a chance to shine! - Her รถnyรผklemede indirilen temalarฤฑnฤฑzฤฑ rastgele dรถngรผye sokarak koleksiyonunuzdaki her temanฤฑn parlamasฤฑna fฤฑrsat verir! - - - Startup Alert - BaลŸlangฤฑรง Uyarฤฑsฤฑ - - - The text of the "Startup Alert" message that appears at the beginning of a drive. - Sรผrรผcรผnรผn baลŸlangฤฑcฤฑnda gรถrรผnen "BaลŸlangฤฑรง Uyarฤฑsฤฑ" mesajฤฑnฤฑn metni. - - - DELETE - SฤฐL - - - DOWNLOAD - ฤฐNDฤฐR - - - SELECT - SELECT - - - Select a color scheme to delete - Silinecek bir renk ลŸemasฤฑ seรงin - - - Are you sure you want to delete the "%1" color scheme? - "%1" renk ลŸemasฤฑnฤฑ silmek istediฤŸinizden emin misiniz? - - - Delete - Sil - - - Select a color scheme to download - ฤฐndirmek iรงin bir renk ลŸemasฤฑ seรงin - - - Select a color scheme - Bir renk ลŸemasฤฑ seรงin - - - Select a distance icon pack to delete - Silinecek bir mesafe simge paketi seรงin - - - Are you sure you want to delete the "%1" distance icon pack? - "%1" mesafe simge paketini silmek istediฤŸinizden emin misiniz? - - - Select a distance icon pack to download - Bir mesafe simge paketi seรงin ve indirin - - - Select a distance icon pack - Bir mesafe simge paketi seรงin - - - Select an icon pack to delete - Silinecek bir simge paketi seรงin - - - Are you sure you want to delete the "%1" icon pack? - "%1" simge paketini silmek istediฤŸinizden emin misiniz? - - - Select an icon pack to download - Bir simge paketi seรงin ve indirin - - - Select an icon pack - Bir simge paketi seรงin - - - Select a signal animation to delete - Silinecek bir sinyal animasyonu seรงin - - - Are you sure you want to delete the "%1" signal animation? - "%1" sinyal animasyonunu silmek istediฤŸinizden emin misiniz? - - - Select a signal animation to download - Bir sinyal animasyonu seรงin ve indirin - - - Select a signal animation - Bir sinyal animasyonu seรงin - - - Select a sound pack to delete - Silinecek bir ses paketi seรงin - - - Are you sure you want to delete the "%1" sound pack? - "%1" ses paketini silmek istediฤŸinizden emin misiniz? - - - Select a sound pack to download - ฤฐndirilecek bir ses paketi seรงin - - - Select a sound pack - Bir ses paketi seรงin - - - Select a steering wheel to delete - Silinecek bir direksiyon simidi seรงin - - - Are you sure you want to delete the "%1" steering wheel? - "%1" direksiyon simidini silmek istediฤŸinizden emin misiniz? - - - Select a steering wheel to download - ฤฐndirmek iรงin bir direksiyon simidi seรงin - - - Select a steering wheel - Bir direksiyon seรงin - - - STOCK - STOK - - - FROGPILOT - FROGPILOT - - - CUSTOM - ร–ZEL - - - CLEAR - TEMฤฐZLE - - - Enter the text for the top half - รœst yarฤฑ iรงin metni girin - - - Characters: 0/%1 - Karakterler: 0/%1 - - - Enter the text for the bottom half - Alt yarฤฑ iรงin metni girin - - - "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! - "Rastgele Temalar" yalnฤฑzca indirilen temalarla รงalฤฑลŸฤฑr, bu yรผzden kullanmak istediฤŸiniz temalarฤฑ indirdiฤŸinizden emin olun! - - - CANCEL - ฤฐPTAL ET - - - Are you sure you want to completely reset your startup message? - BaลŸlangฤฑรง mesajฤฑnฤฑzฤฑ tamamen sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? + <b>The steering-wheel icon</b> shown at the top-right of the driving screen. Use the "Theme Maker" in "The Pond" to create and share your own themes! + SรผrรผลŸ ekranฤฑnฤฑn saฤŸ รผst kรถลŸesinde gรถsterilen <b>direksiyon simgesi</b>. Kendi temalarฤฑnฤฑzฤฑ oluลŸturmak ve paylaลŸmak iรงin "The Pond" iรงindeki "Theme Maker"ฤฑ kullanฤฑn! Turn Signal - Sinyal Lambasฤฑ + Sinyal + + + <b>Themed turn-signal animations.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>Temalฤฑ sinyal animasyonlarฤฑ.</b> Kendi temalarฤฑnฤฑzฤฑ oluลŸturmak ve paylaลŸmak iรงin "The Pond" iรงindeki "Theme Maker"ฤฑ kullanฤฑn! + + + Download Status + ฤฐndirme Durumu + + + Holiday Themes + Tatil Temalarฤฑ + + + <b>Themes based on U.S. holidays.</b> Minor holidays last one day; major holidays (Christmas, Easter, Halloween) run for a full week. + <b>ABD tatillerine dayalฤฑ temalar.</b> Kรผรงรผk tatiller bir gรผn sรผrer; bรผyรผk tatiller (Noel, Paskalya, Cadฤฑlar Bayramฤฑ) tam bir hafta boyunca devam eder. + + + Rainbow Path + GรถkkuลŸaฤŸฤฑ Yolu + + + <b>Color the driving path like a Mario Kartโ€“style "Rainbow Road".</b> + <b>SรผrรผลŸ yolunu Mario Kart tarzฤฑ โ€œGรถkkuลŸaฤŸฤฑ Yoluโ€ gibi renklendir.</b> + + + Random Events + Rastgele Olaylar + + + <b>Occasional on-screen effects triggered by driving conditions.</b> These are purely a visual and don't impact how openpilot drives! + <b>SรผrรผลŸ koลŸullarฤฑ tarafฤฑndan tetiklenen ara sฤฑra ekran efektleri.</b> Bunlar yalnฤฑzca gรถrseldir ve openpilotโ€™un sรผrรผลŸรผnรผ etkilemez! + + + Random Themes + Rastgele Temalar + + + <b>Pick a random theme between each drive</b> from the themes you have downloaded. Great for variety without changing settings while driving. + <b>Her sรผrรผลŸ arasฤฑnda rastgele bir tema seรง</b> indirdiฤŸin temalardan. SรผrรผลŸ sฤฑrasฤฑnda ayarlarฤฑ deฤŸiลŸtirmeden รงeลŸitlilik iรงin harika. + + + Startup Alert + BaลŸlangฤฑรง Uyarฤฑsฤฑ + + + <b>Customize the "Startup Alert" message</b> shown at the start of each drive. + <b>Her sรผrรผลŸรผn baลŸฤฑnda gรถsterilen "BaลŸlangฤฑรง Uyarฤฑsฤฑ" mesajฤฑnฤฑ รถzelleลŸtirin</b> + + + DELETE + SฤฐL + + + DOWNLOAD + ฤฐNDฤฐR + + + SELECT + SEร‡ + + + Select a color scheme to delete + Silinecek bir renk ลŸemasฤฑ seรงin + + + Delete the "%1" color scheme? + โ€œ%1โ€ renk ลŸemasฤฑ silinsin mi? + + + Delete + Sil + + + Select a color scheme to download + ฤฐndirmek iรงin bir renk ลŸemasฤฑ seรงin + + + Select a color scheme + Bir renk ลŸemasฤฑ seรงin + + + Select a distance icon pack to delete + Silmek iรงin bir mesafe simge paketi seรงin + + + Delete the "%1" distance icon pack? + โ€œ%1โ€ mesafe simge paketini sil? + + + Select a distance icon pack to download + ฤฐndirilecek bir mesafe simge paketi seรงin + + + Select a distance icon pack + Bir mesafe simge paketi seรง + + + Select an icon pack to delete + Silmek iรงin bir simge paketi seรงin + + + Delete the "%1" icon pack? + "%1" simge paketini sil? + + + Select an icon pack to download + ฤฐndirilecek bir simge paketi seรงin + + + Select an icon pack + Bir simge paketi seรง + + + Select a signal animation to delete + Silmek iรงin bir sinyal animasyonu seรงin + + + Delete the "%1" signal animation? + โ€œ%1โ€ sinyal animasyonunu sil? + + + Select a signal animation to download + ฤฐndirilecek bir sinyal animasyonu seรงin + + + Select a signal animation + Bir sinyal animasyonu seรง + + + Select a sound pack to delete + Silinecek bir ses paketi seรงin + + + Delete the "%1" sound pack? + โ€œ%1โ€ ses paketini silinsin mi? + + + Select a sound pack to download + ฤฐndirilecek bir ses paketi seรงin + + + Select a sound pack + Bir ses paketi seรง + + + Select a steering wheel to delete + Silmek iรงin bir direksiyon seรงin + + + Delete the "%1" steering wheel? + โ€œ%1โ€ direksiyon simidini silinsin mi? + + + Select a steering wheel to download + ฤฐndirmek iรงin bir direksiyon seรงin + + + Select a steering wheel + Bir direksiyon seรงin + + + STOCK + STOK + + + FROGPILOT + FROGPILOT + + + CUSTOM + ร–ZEL + + + CLEAR + TEMฤฐZLE + + + Enter the text for the top half + รœst yarฤฑ iรงin metni girin + + + Characters: 0/%1 + Karakterler: 0/%1 + + + Enter the text for the bottom half + Alt yarฤฑ iรงin metni girin + + + Are you sure you want to completely reset your startup message? + BaลŸlangฤฑรง mesajฤฑnฤฑzฤฑ tamamen sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? + + + "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! + "Rastgele Temalar" yalnฤฑzca indirilen temalarla รงalฤฑลŸฤฑr, bu yรผzden kullanmasฤฑnฤฑ istediฤŸiniz temalarฤฑ indirdiฤŸinizden emin olun! + + + CANCEL + ฤฐPTAL FrogPilotUtilitiesPanel Debug Mode - Hata Ayฤฑklama Modu + Hata Ayฤฑklama Modu - Debug FrogPilot during the next drive by utilizing all of FrogPilot's developer metrics for either bug reporting, or self-debugging. - FrogPilot'ฤฑn geliลŸtirici metriklerinin tamamฤฑnฤฑ ya hata raporlamasฤฑ ya da kendi kendine hata ayฤฑklama iรงin kullanarak bir sonraki sรผrรผลŸ sฤฑrasฤฑnda FrogPilot'ฤฑ hata ayฤฑklayฤฑn. + <b>Use FrogPilot's developer metrics on your next drive</b> to diagnose issues and improve bug reports. + <b>Bir sonraki sรผrรผลŸรผnรผzde FrogPilot'un geliลŸtirici metriklerini kullanฤฑn</b>; sorunlarฤฑ teลŸhis edin ve hata raporlarฤฑnฤฑ iyileลŸtirin. Flash Panda - FlaลŸ Panda + Pandaโ€™yฤฑ Flashla FLASH - FLASH + FLASH - Flash the Panda's firmware. Use if you're running into issues with the Panda. - Panda'nฤฑn รผrรผn yazฤฑlฤฑmฤฑnฤฑ flaลŸlayฤฑn. Panda ile ilgili sorun yaลŸฤฑyorsanฤฑz kullanฤฑn. + <b>Reinstall the Panda firmware</b> to fix connection or reliability issues. + <b>BaฤŸlantฤฑ veya gรผvenilirlik sorunlarฤฑnฤฑ dรผzeltmek iรงin Panda รผrรผn yazฤฑlฤฑmฤฑnฤฑ yeniden yรผkleyin</b> - Are you sure you want to flash the Panda? - Pandayฤฑ flaลŸlamak istediฤŸinizden emin misiniz? + Are you sure you want to flash the Panda firmware? + Panda รผrรผn yazฤฑlฤฑmฤฑnฤฑ flash etmek istediฤŸinizden emin misiniz? Flash - FlaลŸ + FlaลŸ Flashing... - Yanฤฑp sรถnรผyor... + FlaลŸlama... Flashed! - FlaลŸ! + FlaลŸlandฤฑ! Rebooting... - Yeniden baลŸlatฤฑlฤฑyor... + Yeniden baลŸlatฤฑlฤฑyor... - Force Started State - Zorla BaลŸlatฤฑlan Durum + Force Drive State + SรผrรผลŸ Durumunu Zorla - Force openpilot either offroad or onroad. - Openpilot'ฤฑ ya yoldan รงฤฑkmaya ya da yolda kalmaya zorla. + <b>Manually set openpilot to be offroad or onroad.</b> + <b>openpilotโ€™ฤฑ elle offroad veya onroad olarak ayarlayฤฑn.</b> OFFROAD - OFFROAD + YOL DIลžI ONROAD - YOLDA + YOLDA OFF - KAPALI + KAPALI Report a Bug or an Issue - Bir Hata veya Sorun Bildir + Bir Hata veya Sorun Bildir REPORT - RAPOR + RAPOR - Let FrogsGoMoo know about an issue you're facing! - FrogsGoMoo'ya karลŸฤฑlaลŸtฤฑฤŸฤฑnฤฑz bir sorunu bildirin! + <b>Send a bug report</b> so we can help fix the problem! + <b>Bir hata raporu gรถnderin</b> ki sorunu dรผzeltmemize yardฤฑmcฤฑ olabilelim! + + + Please connect to the internet before sending a report! + Lรผtfen bir rapor gรถndermeden รถnce internete baฤŸlanฤฑn! I saw an alert that said "openpilot crashed" - "openpilot รงรถktรผ" diyen bir uyarฤฑ gรถrdรผm. + โ€œopenpilot รงรถktรผโ€ yazan bir uyarฤฑ gรถrdรผm - What's going on? - Ne oluyor? + Acceleration feels harsh or jerky + Hฤฑzlanma sert veya sarsฤฑntฤฑlฤฑ hissettiriyor - Please describe what's happening - Lรผtfen neler olduฤŸunu aรงฤฑklayฤฑn. - - - Send Report - Raporu Gรถnder - - - What's your Discord username? - Discord kullanฤฑcฤฑ adฤฑn nedir? - - - Your report has been submitted. Thanks for letting us know! - Raporunuz gรถnderildi. Bize bildirdiฤŸiniz iรงin teลŸekkรผr ederiz! - - - Reset Toggles to Default - Anahtarlarฤฑ Varsayฤฑlana Sฤฑfฤฑrla - - - RESET - SIFIRLA - - - Reset all toggles to their default values. - Tรผm anahtarlarฤฑ varsayฤฑlan deฤŸerlerine sฤฑfฤฑrla. - - - Are you sure you want to reset all toggles to their default values? - Tรผm anahtarlarฤฑ varsayฤฑlan deฤŸerlerine sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? - - - Reset - Sฤฑfฤฑrla - - - Resetting... - Sฤฑfฤฑrlanฤฑyor... - - - Reset! - Sฤฑfฤฑrla! - - - Reset Toggles to Match Stock openpilot - Aรงฤฑk pilotun stok ayarlarฤฑna uyacak ลŸekilde anahtarlarฤฑ sฤฑfฤฑrla. - - - Reset all toggles to match stock openpilot. - Tรผm anahtarlarฤฑ stok openpilot ile eลŸleลŸecek ลŸekilde sฤฑfฤฑrla. - - - Are you sure you want to reset all toggles to match stock openpilot? - Tรผm anahtarlarฤฑ stok openpilot ile eลŸleลŸecek ลŸekilde sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? - - - Ensure your device has an internet connection before sending a report! - Rapor gรถndermeden รถnce cihazฤฑnฤฑzฤฑn internet baฤŸlantฤฑsฤฑna sahip olduฤŸundan emin olun! - - - Acceleration feels too harsh or jerky - Hฤฑzlanma รงok sert veya sarsฤฑntฤฑlฤฑ geliyor. - - - An alert confused me and I didnโ€™t know what it meant - Bir uyarฤฑ beni ลŸaลŸฤฑrttฤฑ ve ne anlama geldiฤŸini bilmiyordum. + An alert was unclear and I didn't know what it meant + Bir uyarฤฑ net deฤŸildi ve ne anlama geldiฤŸini bilmiyordum Braking is too sudden or uncomfortable - Frenleme รงok ani veya rahatsฤฑz edici. + Frenleme รงok ani veya rahatsฤฑz edici - Iโ€™m not sure if this is normal or a bug: - Bunun normal mi yoksa bir hata mฤฑ olduฤŸundan emin deฤŸilim: + I'm not sure if this is normal or a bug: + Bunun normal mi yoksa bir hata mฤฑ olduฤŸundan emin deฤŸilim: - Lane changes donโ€™t work properly or feel unsafe - ลžerit deฤŸiลŸiklikleri dรผzgรผn รงalฤฑลŸmฤฑyor veya gรผvensiz hissediliyor. + My screen froze or is stuck loading something + Ekranฤฑm dondu veya bir ลŸey yรผklenirken takฤฑlฤฑ kaldฤฑ - My screen froze or got stuck on loading - Ekranฤฑm dondu veya yรผkleme sฤฑrasฤฑnda takฤฑldฤฑ. - - - My steering wheel buttons arenโ€™t working - Direksiyon simidi dรผฤŸmelerim รงalฤฑลŸmฤฑyor. + My steering wheel buttons aren't working + Direksiyonumdaki dรผฤŸmeler รงalฤฑลŸmฤฑyor openpilot disengages when I don't expect it - openpilot beklemediฤŸimde devreden รงฤฑkฤฑyor - - - openpilot doesnโ€™t resume after I stop - openpilot durduktan sonra devam etmiyor + BeklemediฤŸimde openpilot devre dฤฑลŸฤฑ kalฤฑyor openpilot doesn't react to stopped vehicles ahead - openpilot, รถndeki duran araรงlara tepki vermiyor. + openpilot รถndeki duran araรงlara tepki vermez + + + openpilot doesn't resume from a stop + openpilot duruลŸtan devam etmiyor openpilot feels sluggish or slow to respond - openpilot yavaลŸ veya tepkisiz hissediyor + openpilot yavaลŸ veya tepkisiz gibi geliyor Steering feels twitchy or unnatural - Direksiyon tepkileri titrek veya doฤŸal deฤŸil gibi geliyor. + Direksiyon titrek veya doฤŸal olmayan hissediyor - The car doesnโ€™t follow curves well - Araba virajlarฤฑ iyi takip etmiyor. + The car doesn't follow curves well + Araba virajlarฤฑ iyi takip etmiyor - The car isnโ€™t staying centered in its lane - Araba ลŸeridinde ortalanmฤฑลŸ kalmฤฑyor. - - - The speed or display info looks wrong - Hฤฑz veya gรถrรผntรผleme bilgileri yanlฤฑลŸ gรถrรผnรผyor. + The car isn't staying centered in its lane + Araรง ลŸeridinde ortada kalmฤฑyor Something else (please describe) - BaลŸka bir ลŸey (lรผtfen aรงฤฑklayฤฑn) + BaลŸka bir ลŸey (lรผtfen aรงฤฑklayฤฑn) + + + What's going on? + Neler oluyor? + + + Please describe what's happening + Lรผtfen neler olduฤŸunu aรงฤฑklayฤฑn + + + Send Report + Rapor Gรถnder + + + What's your Discord username? + Discord kullanฤฑcฤฑ adฤฑn nedir? + + + Report Sent! Thanks for letting us know! + Rapor gรถnderildi! Bizi bilgilendirdiฤŸiniz iรงin teลŸekkรผrler! + + + Reset Toggles to Default + Anahtarlarฤฑ Varsayฤฑlana Sฤฑfฤฑrla + + + RESET + SIFIRLA + + + <b>Reset all toggles to their default values.</b> + <b>Tรผm anahtarlarฤฑ varsayฤฑlan deฤŸerlerine sฤฑfฤฑrla.</b> + + + Are you sure you want to reset all toggles to their default values? + Tรผm anahtarlarฤฑ varsayฤฑlan deฤŸerlerine sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? + + + Reset + Sฤฑfฤฑrla + + + Resetting... + Sฤฑfฤฑrlanฤฑyor... + + + Reset! + Sฤฑfฤฑrla! + + + Reset Toggles to Stock openpilot + Anahtarlarฤฑ stok openpilot ayarlarฤฑna sฤฑfฤฑrla + + + <b>Reset all toggles to match stock openpilot.</b> + <b>Tรผm anahtarlarฤฑ stok openpilot ile eลŸleลŸtirmek iรงin sฤฑfฤฑrla.</b> + + + Are you sure you want to reset all toggles to match stock openpilot? + Tรผm anahtarlarฤฑ stok openpilot ile eลŸleลŸecek ลŸekilde sฤฑfฤฑrlamak istediฤŸinizden emin misiniz? FrogPilotVehiclesPanel - Select Make - Marka Seรงin + Car Make + Araรง Markasฤฑ SELECT - SELECT + SEร‡ - Select a Make - Bir Marka Seรงin + Choose your car make + Aracฤฑnฤฑzฤฑn markasฤฑnฤฑ seรงin - Select Model - Model Seรง + Car Model + Araba Modeli - Select a Model - Bir Model Seรงin + Choose your car model + Araba modelinizi seรงin Disable Automatic Fingerprint Detection - Otomatik Parmak ฤฐzi Algฤฑlamayฤฑ Devre DฤฑลŸฤฑ Bฤฑrak + Otomatik Parmak ฤฐzi Algฤฑlamayฤฑ Devre DฤฑลŸฤฑ Bฤฑrak - Forces the selected fingerprint and prevents it from ever changing. - Seรงilen parmak izini zorlar ve asla deฤŸiลŸmesini engeller. + <b>Force the selected fingerprint</b> and prevent it from ever changing. + <b>Seรงili parmak izini zorla</b> ve bir daha asla deฤŸiลŸmesine izin verme. Disable openpilot Longitudinal Control - openpilot Boylamasฤฑna Kontrolรผ devre dฤฑลŸฤฑ bฤฑrak + openpilot Boylamasฤฑna Kontrolรผ Devre DฤฑลŸฤฑ Bฤฑrak - Disables openpilot longitudinal control and uses the car's stock ACC instead. - openpilot uzunlamasฤฑna kontrolรผnรผ devre dฤฑลŸฤฑ bฤฑrakฤฑr ve bunun yerine aracฤฑn stok ACC'sini kullanฤฑr. + <b>Disable openpilot longitudinal</b> and use the car's stock ACC instead. + <b>openpilot uzunlamasฤฑna kontrolรผnรผ devre dฤฑลŸฤฑ bฤฑrakฤฑn</b> ve bunun yerine aracฤฑn stok ACCโ€™sini kullanฤฑn. Are you sure you want to completely disable openpilot longitudinal control? - Openpilot boylam kontrolรผnรผ tamamen devre dฤฑลŸฤฑ bฤฑrakmak istediฤŸinizden emin misiniz? + openpilot boylamasฤฑna kontrolรผnรผ tamamen devre dฤฑลŸฤฑ bฤฑrakmak istediฤŸinizden emin misiniz? General Motors Settings - General Motors Ayarlarฤฑ + General Motors Ayarlarฤฑ - Settings specific to <b>General Motors</b> vehicles. - <b>General Motors</b> araรงlarฤฑna รถzgรผ ayarlar. + <b>FrogPilot features for General Motors vehicles.</b> + <b>Genel Motors araรงlarฤฑ iรงin FrogPilot รถzellikleri.</b> FrogsGoMoo's Experimental Tune - FrogsGoMoo'nun Deneysel Ezgisi + FrogsGoMooโ€™nun Deneysel Ayarฤฑ - <b>FrogsGoMoo's</b> experimental <b>General Motors</b> tune that aims to smoothen out stopping and takeoff control based on nothing but guesswork. Use at your own risk! - <b>FrogsGoMoo'nun</b> deneysel <b>General Motors</b> ayarฤฑ, durma ve kalkฤฑลŸ kontrolรผnรผ yalnฤฑzca tahminlere dayanarak yumuลŸatmayฤฑ amaรงlฤฑyor. Kendi sorumluluฤŸunuzda kullanฤฑn! + <b>Experimental GM tune by FrogsGoMoo</b> that attempts to smoothen stopping and takeoff control. Use at your own risk! + <b>FrogsGoMoo tarafฤฑndan deneysel GM ayarฤฑ</b> durma ve kalkฤฑลŸ kontrolรผnรผ yumuลŸatmayฤฑ amaรงlar. Kendi riskinizde kullanฤฑn! Smooth Pedal Response on Hills - YokuลŸlarda YumuลŸak Pedal Tepkisi + YokuลŸlarda YumuลŸak Pedal Tepkisi - Smoothen the acceleration and braking when driving uphill or downhill. - YokuลŸ yukarฤฑ veya yokuลŸ aลŸaฤŸฤฑ sรผrerken hฤฑzlanma ve frenlemeyi yumuลŸatฤฑn. + <b>Smoothen acceleration and braking</b> when driving downhill/uphill. + <b>YokuลŸ aลŸaฤŸฤฑ/yukarฤฑ giderken</b> hฤฑzlanmayฤฑ ve frenlemeyi yumuลŸatฤฑn.</b - Stop and Go Hack - Dur ve Git Hacki + Stop-and-Go Hack + Dur-kalk Hilesi - Force stop and go on the <b>2017 Chevy Volt</b>. - 2017 Chevy Volt'u zorla durdur ve devam et. + <b>Force stop-and-go</b> on the 2017 Chevy Volt. + 2017 Chevy Voltโ€™ta <b>Zorla dur-kalk</b>. Hyundai/Kia/Genesis Settings - Hyundai/Kia/Genesis Ayarlarฤฑ + Hyundai/Kia/Genesis Ayarlarฤฑ - Settings specific to <b>Hyundai</b>, <b>Kia</b>, and <b>Genesis</b> vehicles. - <b>Hyundai</b>, <b>Kia</b> ve <b>Genesis</b> araรงlarฤฑna รถzel ayarlar. + <b>FrogPilot features for Genesis, Hyundai, and Kia vehicles.</b> + <b>Genesis, Hyundai ve Kia araรงlarฤฑ iรงin FrogPilot รถzellikleri.</b> comma's New Longitudinal API - comma'nฤฑn Yeni Boylamsal API'si + comma'nฤฑn Yeni Boylamsal API'si - comma's new longitudinal control system that has shown great improvement with acceleration and braking, but has issues on some <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> vehicles. - comma'nฤฑn hฤฑzlanma ve frenlemede bรผyรผk iyileลŸme gรถsteren yeni boylamsal kontrol sistemi, ancak bazฤฑ <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> araรงlarฤฑnda sorunlar yaลŸฤฑyor. + <b>comma's new gas and brake control system</b> that improves acceleration and braking but may cause issues on some Genesis/Hyundai/Kia vehicles. + <b>comma'nฤฑn yeni gaz ve fren kontrol sistemi</b> hฤฑzlanma ve frenlemeyi iyileลŸtirir ancak bazฤฑ Genesis/Hyundai/Kia araรงlarda sorunlara neden olabilir. "Taco Bell Run" Torque Hack - "Taco Bell Run" Tork Hilesi + "Taco Bell Run" Tork Hacki - The torque hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to improve turning at low speeds by increasing the allowed steering torque. - Comma'nฤฑn 2022 "Taco Bell Run" sรผrรผลŸรผnden tork hilesi. DรผลŸรผk hฤฑzlarda dรถnรผลŸรผ iyileลŸtirmek iรงin izin verilen direksiyon torkunu artฤฑrmak รผzere tasarlanmฤฑลŸtฤฑr. + <b>The steering torque hack from comma's 2022 "Taco Bell Run".</b> Designed to increase steering torque at low speeds for left and right turns. + <b>commaโ€™nฤฑn 2022 โ€œTaco Bell Runโ€daki direksiyon torku hackโ€™i.</b> Sol ve saฤŸ dรถnรผลŸlerde dรผลŸรผk hฤฑzlarda direksiyon torkunu artฤฑrmak iรงin tasarlanmฤฑลŸtฤฑr. Toyota/Lexus Settings - Toyota/Lexus Ayarlarฤฑ + Toyota/Lexus Ayarlarฤฑ - Settings specific to <b>Toyota</b> and <b>Lexus</b> vehicles. - Toyota ve Lexus araรงlarฤฑna รถzel ayarlar. + <b>FrogPilot features for Lexus and Toyota vehicles.</b> + <b>Lexus ve Toyota araรงlarฤฑ iรงin FrogPilot รถzellikleri.</b> Automatically Lock/Unlock Doors - Kapฤฑlarฤฑ Otomatik Olarak Kilitle/Aรง + Kapฤฑlarฤฑ Otomatik Kilitle/Aรง - Automatically lock the doors when shifting into drive and unlock them when shifting into park. - Aracฤฑ sรผrรผลŸ moduna aldฤฑฤŸฤฑnฤฑzda kapฤฑlarฤฑ otomatik olarak kilitleyin ve park moduna aldฤฑฤŸฤฑnฤฑzda kilitlerini aรงฤฑn. + <b>Automatically lock/unlock doors</b> when shifting in and out of drive. + <b>SรผrรผลŸe geรงerken ve รงฤฑkarken</b> kapฤฑlarฤฑ otomatik olarak kilitle/aรง. - Cluster Speed Offset - Kรผme Hฤฑz Ofseti + Dashboard Speed Offset + Gรถsterge Hฤฑz Ofseti - The cluster speed offset used by openpilot to match the speed displayed on the dash. - openpilot tarafฤฑndan gรถsterge panelinde gรถrรผntรผlenen hฤฑzla eลŸleลŸmek iรงin kullanฤฑlan kรผme hฤฑz ofseti. + <b>The speed offset openpilot uses to match the speed on the dashboard display.</b> + <b>openpilotโ€™ฤฑn gรถsterge panelindeki hฤฑzla eลŸleลŸmek iรงin kullandฤฑฤŸฤฑ hฤฑz ofseti.</b> FrogsGoMoo's Personal Tweaks - FrogsGoMoo'nun KiลŸisel Ayarlamalarฤฑ + FrogsGoMoo'nun KiลŸisel ฤฐnce Ayarlarฤฑ - <b>FrogsGoMoo's</b> personal tweaks for quicker acceleration and smoother braking. - <b>FrogsGoMoo'nun</b> daha hฤฑzlฤฑ ivmelenme ve daha yumuลŸak frenleme iรงin kiลŸisel ayarlamalarฤฑ. + <b>Personal tweaks by FrogsGoMoo for quicker acceleration and smoother braking.</b> + <b>Daha hฤฑzlฤฑ hฤฑzlanma ve daha yumuลŸak frenleme iรงin FrogsGoMoo tarafฤฑndan yapฤฑlan kiลŸisel ayarlar.</b> Lock Doors On Ignition Off After - Kontak Kapandฤฑktan Sonra Kapฤฑlarฤฑ Kilitle + Kontak Kapandฤฑktan Sonra Kapฤฑlarฤฑ Kilitle - Automatically lock the doors after the car's ignition has been turned off and no one is detected in either of the front seats. - Arabanฤฑn kontaฤŸฤฑ kapatฤฑldฤฑktan ve รถn koltuklarda kimse tespit edilmedikten sonra kapฤฑlarฤฑ otomatik olarak kilitle. + <b>Automatically lock the doors on ignition off</b> when no one is detected in the front seats. + <b>AteลŸleme kapatฤฑldฤฑฤŸฤฑnda kapฤฑlarฤฑ otomatik olarak kilitle</b> รถn koltuklarda kimse tespit edilmediฤŸinde. - Force stop and go on <b>Toyota</b>/<b>Lexus</b> vehicles without stock stop and go functionality. - Stok dur ve devam et iลŸlevine sahip olmayan <b>Toyota</b>/<b>Lexus</b> araรงlarda zorla dur ve devam et. + <b>Force stop-and-go</b> on Lexus/Toyota vehicles without stock stop-and-go functionality. + <b>Stok dur-kalk iลŸlevi olmayan Lexus/Toyota araรงlarda</b> zorla dur-kalk etkinleลŸtir. MANAGE - Yร–NET + Yร–NET Lock - Kilit + Kilitle Unlock - Kilidini aรง + Kilidini Aรง Never - Asla + Asla seconds - saniye + saniye + + + None + Yok + + + Vehicle Info + Araรง Bilgileri + + + <b>Information about your vehicle in regards to openpilot support and functionality.</b> + <b>openpilot desteฤŸi ve iลŸlevselliฤŸiyle ilgili aracฤฑnฤฑz hakkฤฑnda bilgiler.</b> + + + <b>Detected 3rd party hardware.</b> + <b>รœรงรผncรผ taraf donanฤฑm tespit edildi.</b> + + + openpilot Longitudinal Support + openpilot Boyuna Destek + + + <b>Can openpilot control the vehicle's acceleration and braking?</b> + <b>openpilot aracฤฑn hฤฑzlanmasฤฑnฤฑ ve frenlemesini kontrol edebilir mi?</b> + + + <b>Does your vehicle support the "comma pedal"?</b> + <b>Aracฤฑnฤฑz "comma pedal"ฤฑ destekliyor mu?</b> + + + Radar Support + Radar DesteฤŸi + + + <b>Does openpilot use the vehicle's radar data</b> alongside the device's camera for tracking lead vehicles? + <b>openpilot, รถndeki araรงlarฤฑ takip etmek iรงin cihazฤฑn kamerasฤฑyla birlikte aracฤฑn radar verilerini kullanฤฑyor mu</b>? + + + SDSU Support + SDSU DesteฤŸi + + + <b>Does your vehicle support "SDSUs"?</b> + <b>Aracฤฑnฤฑz "SDSUs" destekliyor mu?</b> + + + Stop-and-Go Support + Dur-kalk DesteฤŸi + + + <b>Does your vehicle support stop-and-go driving?</b> + <b>Aracฤฑnฤฑz dur-kalk sรผrรผลŸรผ destekliyor mu?</b> + + + VIEW + Gร–RรœNรœM + + + Yes + Evet + + + No + Hayฤฑr + + + 3rd Party Hardware Detected + รœรงรผncรผ Taraf Donanฤฑm Tespit Edildi + + + Blind Spot Support + Kรถr Nokta DesteฤŸi + + + <b>Does openpilot use the vehicle's blind spot data?</b> + <b>openpilot aracฤฑn kรถr nokta verilerini kullanฤฑyor mu?</b> + + + comma Pedal Support + comma Pedal DesteฤŸi FrogPilotVisualsPanel Advanced UI Controls - GeliลŸmiลŸ UI Kontrolleri + GeliลŸmiลŸ UI Kontrolleri - Advanced settings for fine-tuning openpilot's driving screen. - Openpilot'ฤฑn sรผrรผลŸ ekranฤฑnฤฑ ince ayarlamak iรงin geliลŸmiลŸ ayarlar. + <b>Advanced visual changes</b> to fine-tune how the driving screen looks. + SรผrรผลŸ ekranฤฑnฤฑn gรถrรผnรผmรผnรผ ince ayar yapmak iรงin <b>GeliลŸmiลŸ gรถrsel deฤŸiลŸiklikler</b>. Hide Current Speed - Mevcut Hฤฑzฤฑ Gizle + Geรงerli Hฤฑzฤฑ Gizle - Hide the current speed from the driving screen. - SรผrรผลŸ ekranฤฑndan mevcut hฤฑzฤฑ gizle. + <b>Hide the current speed</b> from the driving screen. + <b>SรผrรผลŸ ekranฤฑndan mevcut hฤฑzฤฑ gizle</b> Hide Lead Marker - KurลŸun ฤฐลŸaretleyiciyi Gizle + ร–ndeki ฤฐลŸaretleyiciyi Gizle - Hide the marker for lead vehicles from the driving screen. - SรผrรผลŸ ekranฤฑnda รถncรผ araรงlarฤฑn iลŸaretini gizle. + <b>Hide the lead-vehicle marker</b> from the driving screen. + SรผrรผลŸ ekranฤฑnda <b>รถndeki araรง iลŸaretleyicisini gizle</b>. Hide Map Settings Button - Harita Ayarlarฤฑ DรผฤŸmesini Gizle + Harita Ayarlarฤฑ DรผฤŸmesini Gizle - Hide the map settings button from the driving screen. - SรผrรผลŸ ekranฤฑndan harita ayarlarฤฑ dรผฤŸmesini gizle. + <b>Hide the map settings button or map</b> from the driving screen. + <b>SรผrรผลŸ ekranฤฑndan harita ayarlarฤฑ dรผฤŸmesini veya haritayฤฑ gizle</b> Hide Max Speed - Maksimum Hฤฑzฤฑ Gizle + Maksimum Hฤฑzฤฑ Gizle - Hide the max speed from the driving screen. - Maksimum hฤฑzฤฑ sรผrรผลŸ ekranฤฑndan gizle. + <b>Hide the max speed</b> from the driving screen. + <b>Maksimum hฤฑzฤฑ gizle</b> sรผrรผลŸ ekranฤฑndan. Hide Non-Critical Alerts - Kritik Olmayan Uyarฤฑlarฤฑ Gizle + Kritik Olmayan Uyarฤฑlarฤฑ Gizle - Hide non-critical alerts from the driving screen. - SรผrรผลŸ ekranฤฑndan kritik olmayan uyarฤฑlarฤฑ gizle. + <b>Hide non-critical alerts</b> from the driving screen. + SรผrรผลŸ ekranฤฑnda <b>kritik olmayan uyarฤฑlarฤฑ gizle</b>. Hide Speed Limits - Hฤฑz Sฤฑnฤฑrlarฤฑnฤฑ Gizle + Hฤฑz Sฤฑnฤฑrlarฤฑnฤฑ Gizle - Hide the speed limits from the driving screen. - Hฤฑz sฤฑnฤฑrlarฤฑnฤฑ sรผrรผลŸ ekranฤฑndan gizle. + <b>Hide posted speed limits</b> from the driving screen. + SรผrรผลŸ ekranฤฑnda <b>paylaลŸฤฑlan hฤฑz sฤฑnฤฑrlarฤฑnฤฑ gizle</b>. Use Wheel Speed - Tekerlek Hฤฑzฤฑnฤฑ Kullan + Tekerlek Hฤฑzฤฑnฤฑ Kullan - Use the vehicle's wheel speed instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives. - Aracฤฑn tekerlek hฤฑzฤฑnฤฑ kรผme hฤฑzฤฑ yerine kullanฤฑn. Bu tamamen gรถrsel bir deฤŸiลŸikliktir ve openpilot'ฤฑn sรผrรผลŸรผnรผ etkilemez. + <b>Use the vehicle's wheel speed</b> instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives! + <b>Araรง tekerlek hฤฑzฤฑnฤฑ kullanฤฑn</b> gรถsterge hฤฑzฤฑnฤฑn yerine. Bu yalnฤฑzca gรถrsel bir deฤŸiลŸikliktir ve openpilotโ€™un sรผrรผลŸรผnรผ etkilemez! Developer UI - GeliลŸtirici Arayรผzรผ + GeliลŸtirici Arayรผzรผ - Detailed information about openpilot's internal operations. - Openpilot'ฤฑn iรง operasyonlarฤฑ hakkฤฑnda detaylฤฑ bilgi. + <b>Detailed information about openpilot's internal operations.</b> + <b>openpilotโ€™ฤฑn iรง iลŸleyiลŸi hakkฤฑnda ayrฤฑntฤฑlฤฑ bilgi.</b> Adjacent Path Metrics - BitiลŸik Yol Metrikleri + BitiลŸik Yol ร–lรงรผmleri - Metrics displayed on top of the adjacent lanes measuring their current width. - BitiลŸik ลŸeritlerin รผstรผnde gรถsterilen metrikler, mevcut geniลŸliklerini รถlรงรผyor. + <b>Show the width of the adjacent lanes.</b> + <b>BitiลŸik ลŸeritlerin geniลŸliฤŸini gรถster.</b> Developer Metrics - GeliลŸtirici Metrikleri + GeliลŸtirici Metrikleri - Performance data, sensor readings, and system metrics for debugging and optimizing openpilot. - Performans verileri, sensรถr okumalarฤฑ ve openpilot'u hata ayฤฑklama ve optimize etme iรงin sistem metrikleri. + <b>Performance data, sensor readings, and system metrics</b> for debugging and optimizing openpilot. + <b>openpilotโ€™ฤฑ hata ayฤฑklamak ve optimize etmek</b> iรงin performans verileri, sensรถr okumalarฤฑ ve sistem รถlรงรผmleri. Border Metrics - Sฤฑnฤฑr Metrikleri + Sฤฑnฤฑr ร–lรงรผmleri - Metrics displayed around the border of the driving screen.<br><br><b>Blind Spot</b>: Turn the border red when a vehicle is detected in a blind spot<br><b>Steering Torque</b>: Highlight the border green to red in accordance to the amount of steering torque being used<br><b>Turn Signal</b>: Flash the border yellow when a turn signal is active - SรผrรผลŸ ekranฤฑnฤฑn kenarlarฤฑnda gรถrรผntรผlenen metrikler.<br><br><b>Kรถr Nokta</b>: Bir araรง kรถr noktada tespit edildiฤŸinde kenarฤฑ kฤฑrmฤฑzฤฑya รงevir<br><b>Direksiyon Torku</b>: Kullanฤฑlan direksiyon torku miktarฤฑna gรถre kenarฤฑ yeลŸilden kฤฑrmฤฑzฤฑya vurgula<br><b>DรถnรผลŸ Sinyali</b>: Bir dรถnรผลŸ sinyali aktif olduฤŸunda kenarฤฑ sarฤฑ yanฤฑp sรถndรผr + <b>Show statuses along the border of the driving screen.</b><br><br><b>Blind Spot</b>: The border turns red when a vehicle is in a blind spot<br><b>Steering Torque</b>: The border goes from green to red according to how much steering torque is being used<br><b>Turn Signal</b>: The border flashes yellow when a turn signal is on + <b>SรผrรผลŸ ekranฤฑnฤฑn kenarlarฤฑnda durumlarฤฑ gรถster.</b><br><br><b>Kรถr Nokta</b>: Bir araรง kรถr noktadaysa kenarlฤฑk kฤฑrmฤฑzฤฑya dรถner<br><b>Direksiyon Torku</b>: Kullanฤฑlan direksiyon torku miktarฤฑna gรถre kenarlฤฑk yeลŸilden kฤฑrmฤฑzฤฑya geรงer<br><b>FlaลŸรถr</b>: Sinyal aรงฤฑkken kenarlฤฑk sarฤฑ yanฤฑp sรถner Lead Info - ร–ncรผ Bilgi + ร–ncรผ Bilgisi - Metrics displayed under vehicle markers listing their distance and current speed. - Araรง iลŸaretleyicilerinin altฤฑnda gรถsterilen metrikler, mesafelerini ve mevcut hฤฑzlarฤฑnฤฑ listeler. + <b>Show each tracked vehicle's distance and speed</b> below its marker. + <b>Her izlenen aracฤฑn mesafesini ve hฤฑzฤฑnฤฑ</b> iลŸaretleyicisinin altฤฑnda gรถsterin. FPS Display - FPS Ekranฤฑ + FPS Gรถrรผntรผsรผ - Display the <b>Frames Per Second (FPS)</b> at the bottom of the driving screen. - SรผrรผลŸ ekranฤฑnฤฑn altฤฑnda <b>Saniye BaลŸฤฑna Kare (FPS)</b> gรถster. + <b>Show the frames per second (FPS)</b> at the bottom of the driving screen. + SรผrรผลŸ ekranฤฑnฤฑn altฤฑnda <b>saniyedeki kareleri (FPS) gรถster</b>. Numerical Temperature Gauge - Sayฤฑsal Sฤฑcaklฤฑk Gรถstergesi + Sayฤฑsal Sฤฑcaklฤฑk Gรถstergesi - Use numerical temperature readings instead of status labels in the sidebar. - Kenar รงubuฤŸunda durum etiketleri yerine sayฤฑsal sฤฑcaklฤฑk okumalarฤฑnฤฑ kullanฤฑn. - - - Display system information (<b>CPU</b>, <b>GPU</b>, <b>RAM usage</b>, <b>IP address</b>, <b>device storage</b>) in the sidebar. - Kenar รงubuฤŸunda sistem bilgilerini gรถster (<b>CPU</b>, <b>GPU</b>, <b>RAM kullanฤฑmฤฑ</b>, <b>IP adresi</b>, <b>cihaz depolama alanฤฑ</b>). - - - Use International System of Units - Uluslararasฤฑ Birim Sistemi'ni kullanฤฑn. - - - Display measurements using the <b>International System of Units (SI)</b> standard. - ร–lรงรผmleri <b>Uluslararasฤฑ Birim Sistemi (SI)</b> standardฤฑnฤฑ kullanarak gรถsterin. - - - Developer Sidebar - GeliลŸtirici Kenar ร‡ubuฤŸu - - - Display debugging info and metrics in a dedicated sidebar on the right side of the screen. - Hata ayฤฑklama bilgilerini ve metrikleri ekranฤฑn saฤŸ tarafฤฑndaki รถzel bir kenar รงubuฤŸunda gรถrรผntรผleyin. - - - Metric #1 - ร–lรงรผt #1 - - - Metric to display in the first metric in the "Developer Sidebar". - "Developer Kenar ร‡ubuฤŸu"nda ilk metrik olarak gรถrรผntรผlenecek metrik. - - - Metric #2 - Metrik #2 - - - Metric to display in the second metric in the "Developer Sidebar". - GeliลŸtirici Kenar ร‡ubuฤŸunda ikinci metrik olarak gรถrรผntรผlenecek metrik. - - - Metric #3 - Metrik #3 - - - Metric to display in the third metric in the "Developer Sidebar". - "Developer Kenar ร‡ubuฤŸu"ndaki รผรงรผncรผ metrikte gรถrรผntรผlenecek metrik. - - - Metric #4 - Metrik #4 - - - Metric to display in the fourth metric in the "Developer Sidebar". - Dรถrdรผncรผ metrikte 'GeliลŸtirici Kenar ร‡ubuฤŸu'nda gรถrรผntรผlenecek metrik. - - - Metric #5 - Metrik #5 - - - Metric to display in the fifth metric in the "Developer Sidebar". - "Developer Sidebar"da beลŸinci metrikte gรถrรผntรผlenecek metrik. - - - Metric #6 - Metrik #6 - - - Metric to display in the sixth metric in the "Developer Sidebar". - GeliลŸtirici Kenar ร‡ubuฤŸu'ndaki altฤฑncฤฑ metrikte gรถrรผntรผlenecek metrik. - - - Metric #7 - Metrik #7 - - - Metric to display in the seventh metric in the "Developer Sidebar". - Yedinci metrikte "GeliลŸtirici Kenar ร‡ubuฤŸu"nda gรถrรผntรผlenecek metrik. - - - Developer Widgets - GeliลŸtirici Araรงlarฤฑ - - - Overlays displaying debugging visuals, internal states, and model predictions on the driving screen. - SรผrรผลŸ ekranฤฑnda hata ayฤฑklama gรถrselleri, iรง durumlar ve model tahminlerini gรถsteren bindirmeler. - - - Adjacent Leads Tracking - BitiลŸik MรผลŸteri Adaylarฤฑnฤฑ Takip Etme - - - Adjacent leads detected by the car's radar to the left and right of the current driving path. - Aracฤฑn radarฤฑnฤฑn mevcut sรผrรผลŸ yolunun solunda ve saฤŸฤฑnda tespit ettiฤŸi bitiลŸik araรงlar. - - - Model Stopping Point - Model Durdurma Noktasฤฑ - - - Display an image on the screen where openpilot is wanting to stop. - Ekranda openpilot'un durmak istediฤŸi yeri gรถsteren bir gรถrรผntรผ gรถster. - - - Radar Tracks - Radar ฤฐzleri - - - Display all of the radar points produced by the car's radar. - Arabanฤฑn radarฤฑ tarafฤฑndan รผretilen tรผm radar noktalarฤฑnฤฑ gรถster. - - - Driving Screen Widgets - SรผrรผลŸ Ekranฤฑ Widget'larฤฑ - - - Custom FrogPilot widgets for the driving screen. - SรผrรผลŸ ekranฤฑ iรงin รถzel FrogPilot widget'larฤฑ. - - - Acceleration Path - Hฤฑzlanma Yolu - - - Colorize the driving path based on openpilot's current desired acceleration and deceleration rate. - Openpilot'ฤฑn mevcut istenen ivme ve yavaลŸlama oranฤฑna gรถre sรผrรผลŸ yolunu renklendirin. - - - Adjacent Lanes - BitiลŸik ลžeritler - - - Driving paths for the left and right adjacent lanes. - Sol ve saฤŸ bitiลŸik ลŸeritler iรงin sรผrรผลŸ yollarฤฑ. - - - Blind Spot Path - Kรถr Nokta Yolu - - - Display a red driving path for detected vehicles in the corresponding lane's blind spot. - Algฤฑlanan araรงlar iรงin ilgili ลŸeridin kรถr noktasฤฑnda kฤฑrmฤฑzฤฑ bir sรผrรผลŸ yolu gรถster. - - - Compass - Pusula - - - A compass to show the current driving direction. - Mevcut sรผrรผลŸ yรถnรผnรผ gรถsteren bir pusula. - - - Driving Personality Button - SรผrรผลŸ KiลŸiliฤŸi DรผฤŸmesi - - - Display the current driving personality on the screen. Tap to switch personalities, or long press for 0.5 seconds to change the current state of <b>Experimental Mode</b>, or 2.5 seconds for <b>Traffic Mode</b>. - Mevcut sรผrรผลŸ kiลŸiliฤŸini ekranda gรถster. KiลŸilikleri deฤŸiลŸtirmek iรงin dokunun veya <b>Deneysel Mod</b>'un mevcut durumunu deฤŸiลŸtirmek iรงin 0.5 saniye, <b>Trafik Modu</b> iรงin 2.5 saniye basฤฑlฤฑ tutun. - - - Gas / Brake Pedal Indicators - Gaz / Fren Pedalฤฑ Gรถstergeleri - - - Pedals to indicate when either of the pedals are currently being used.<br><br><b>Dynamic</b>: The pedals change in opacity in accordance to how much openpilot is accelerating or decelerating<br><b>Static</b>: The pedals are displayed with full opacity when active, and dimmed when not in use - Pedallar, pedallardan herhangi biri ลŸu anda kullanฤฑldฤฑฤŸฤฑnda bunu belirtir.<br><br><b>Dinamik</b>: Pedallar, openpilot'un ne kadar hฤฑzlandฤฑฤŸฤฑ veya yavaลŸladฤฑฤŸฤฑna gรถre opaklฤฑklarฤฑnฤฑ deฤŸiลŸtirir<br><b>Statik</b>: Pedallar, aktif olduklarฤฑnda tam opaklฤฑkla gรถrรผntรผlenir ve kullanฤฑlmadฤฑklarฤฑnda karartฤฑlฤฑr. - - - Rotating Steering Wheel - Dรถnen Direksiyon Simidi - - - Rotate the steering wheel alongside the vehicle's physical steering wheel. - Aracฤฑn fiziksel direksiyon simidiyle birlikte direksiyon simidini dรถndรผrรผn. - - - Model UI - Model UI - - - Model visualizations on the driving screen for the driving path, lane lines, path edges, and road edges. - SรผrรผลŸ ekranฤฑnda sรผrรผลŸ yolu, ลŸerit รงizgileri, yol kenarlarฤฑ ve yol kenarlarฤฑ iรงin model gรถrselleลŸtirmeleri. - - - Dynamic Path Width - Dinamik Yol GeniลŸliฤŸi - - - Adjust the width of the driving path based on the current engagement state.<br><br><b>Fully engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Fully disengaged</b>: 50% - SรผrรผลŸ yolunun geniลŸliฤŸini mevcut etkileลŸim durumuna gรถre ayarlayฤฑn.<br><br><b>Tam etkileลŸim</b>: %100<br><b>Her Zaman Aรงฤฑk Yanal</b>: %75<br><b>Tamamen devre dฤฑลŸฤฑ</b>: %50 - - - Lane Lines Width - ลžerit ร‡izgileri GeniลŸliฤŸi - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 4 inches. - SรผrรผลŸ ekranฤฑndaki ลŸerit รงizgilerinin kalฤฑnlฤฑฤŸฤฑ.<br><br><b>Varsayฤฑlan, <b>MUTCD</b> ลŸerit รงizgisi geniลŸlik standardฤฑ olan 4 inรง ile eลŸleลŸir. - - - Path Edges Width - Yol Kenarlarฤฑ GeniลŸliฤŸi - - - The width of the edges of the driving path that represent different driving modes and statuses.<br><br>Default is <b>20%</b> of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden - SรผrรผลŸ yolunun farklฤฑ sรผrรผลŸ modlarฤฑnฤฑ ve durumlarฤฑnฤฑ temsil eden kenarlarฤฑnฤฑn geniลŸliฤŸi.<br><br>Varsayฤฑlan, toplam yol geniลŸliฤŸinin <b>%20</b>'sidir.<br><br>Renk Rehberi:<br><br>- <b>Mavi</b>: Navigasyon<br>- <b>Aรงฤฑk Mavi</b>: Her Zaman Aรงฤฑk Yanal<br>- <b>YeลŸil</b>: Varsayฤฑlan<br>- <b>Turuncu</b>: Deneysel Mod<br>- <b>Kฤฑrmฤฑzฤฑ</b>: Trafik Modu<br>- <b>Sarฤฑ</b>: KoลŸullu Deneysel Mod geรงersiz kฤฑlฤฑndฤฑ - - - Path Width - Yol GeniลŸliฤŸi - - - Road Edges Width - Yol Kenarlarฤฑ GeniลŸliฤŸi - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 4 inches. - SรผrรผลŸ ekranฤฑndaki yol kenarlarฤฑnฤฑn kalฤฑnlฤฑฤŸฤฑ.<br><br><b>Varsayฤฑlan, <b>MUTCD</b> ลŸerit รงizgisi geniลŸlik standardฤฑ olan 4 inรงin yarฤฑsฤฑyla eลŸleลŸir. - - - "Unlimited" Road UI - "Sฤฑnฤฑrsฤฑz" Yol UI - - - Extend the display of the driving path, lane lines, and road edges as far as the model can see. - Modelun gรถrebildiฤŸi kadar sรผrรผลŸ yolunun, ลŸerit รงizgilerinin ve yol kenarlarฤฑnฤฑn gรถrรผntรผsรผnรผ uzatฤฑn. - - - Navigation Widgets - Gezinme Araรงlarฤฑ - - - Map style tweaks, speed limits, and other navigation related widgets. - Harita stil ayarlamalarฤฑ, hฤฑz sฤฑnฤฑrlarฤฑ ve diฤŸer navigasyonla ilgili widget'lar. - - - Larger Map Display - Daha Bรผyรผk Harita Gรถrรผntรผsรผ - - - Increase the size of the map for easier navigation readings. - Harita boyutunu daha kolay navigasyon okumalarฤฑ iรงin artฤฑrฤฑn. - - - Map Style - Harita Stili - - - The map style used for <b>Navigate on openpilot (NOO)</b>:<br><br><b>Stock</b>: Default comma.ai style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>mike854's (Satellite hybrid)</b>: Customized hybrid satellite view - Aรงฤฑk pilotta (NOO) gezinmek iรงin kullanฤฑlan harita stili:<br><br><b>Stok</b>: Varsayฤฑlan comma.ai stili<br><b>Mapbox Streets</b>: Standart sokak odaklฤฑ gรถrรผnรผm<br><b>Mapbox Outdoors</b>: Aรงฤฑk hava ve arazi รถzelliklerini vurgular<br><b>Mapbox Light</b>: Minimalist, parlak tema<br><b>Mapbox Dark</b>: Minimalist, karanlฤฑk tema<br><b>Mapbox Navigation Day</b>: Gรผndรผz navigasyonu iรงin optimize edilmiลŸtir<br><b>Mapbox Navigation Night</b>: Gece navigasyonu iรงin optimize edilmiลŸtir<br><b>Mapbox Satellite</b>: Sadece uydu gรถrรผntรผleri<br><b>Mapbox Satellite Streets</b>: Sokak etiketleriyle hibrit uydu gรถrรผntรผleri<br><b>Mapbox Traffic Night</b>: Trafik koลŸullarฤฑnฤฑ vurgulayan karanlฤฑk tema<br><b>mike854's (Satellite hybrid)</b>: ร–zelleลŸtirilmiลŸ hibrit uydu gรถrรผnรผmรผ - - - Road Name - Yol Adฤฑ - - - Display the road name at the bottom of the driving screen using data from <b>OpenStreetMap</b>. - SรผrรผลŸ ekranฤฑnฤฑn altฤฑnda yol adฤฑnฤฑ <b>OpenStreetMap</b> verilerini kullanarak gรถster. - - - Show Speed Limits - Hฤฑz Sฤฑnฤฑrlarฤฑnฤฑ Gรถster - - - Display speed limits in the top left corner of the driving screen. Uses data from your car's dashboard (if supported) and data from <b>OpenStreetMaps</b>. - Hฤฑz sฤฑnฤฑrlarฤฑnฤฑ sรผrรผลŸ ekranฤฑnฤฑn sol รผst kรถลŸesinde gรถster. Arabanฤฑzฤฑn gรถsterge panelinden (destekleniyorsa) ve <b>OpenStreetMaps</b>'ten gelen verileri kullanฤฑr. - - - Show Speed Limits from Mapbox - Mapbox'tan Hฤฑz Sฤฑnฤฑrlarฤฑnฤฑ Gรถster - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - DiฤŸer kaynaklar mevcut olmadฤฑฤŸฤฑnda <b>Mapbox</b> hฤฑz sฤฑnฤฑrฤฑ verilerini kullanฤฑn. - - - Use Vienna-Style Speed Signs - Viyana Tarzฤฑ Hฤฑz ฤฐลŸaretlerini Kullan - - - Force <b>Vienna-style (EU)</b> speed limit signs instead of <b>MUTCD (US)</b>. - Viyana tarzฤฑ (AB) hฤฑz sฤฑnฤฑrฤฑ iลŸaretlerini MUTCD (ABD) yerine zorla. - - - Quality of Life - YaลŸam Kalitesi - - - Visual features to improve your overall openpilot experience. - Genel openpilot deneyiminizi geliลŸtirmek iรงin gรถrsel รถzellikler. - - - Camera View - Kamera Gรถrรผnรผmรผ - - - The active camera view display. This is purely a visual change and doesn't impact how openpilot drives! - Aktif kamera gรถrรผnรผmรผ ekranฤฑ. Bu tamamen gรถrsel bir deฤŸiลŸikliktir ve openpilot'un sรผrรผลŸรผnรผ etkilemez! - - - Show Driver Camera When In Reverse - Geri viteste iken sรผrรผcรผ kamerasฤฑnฤฑ gรถster - - - Display the driver camera feed when the vehicle is in reverse. - Araรง geri viteste olduฤŸunda sรผrรผcรผ kamerasฤฑ gรถrรผntรผsรผnรผ gรถster. - - - Standby Mode - Bekleme Modu - - - Turn the screen off when driving and automatically wake it up if engagement state changes or important alerts occur. - Ekranฤฑ sรผrรผลŸ sฤฑrasฤฑnda kapatฤฑn ve etkileลŸim durumu deฤŸiลŸirse veya รถnemli uyarฤฑlar meydana gelirse otomatik olarak uyandฤฑrฤฑn. - - - Stopped Timer - Durdurulan Zamanlayฤฑcฤฑ - - - Replace the current speed with a timer when stopped to indicate how long the vehicle has been stopped for. - Araรง durduฤŸunda mevcut hฤฑzฤฑ bir zamanlayฤฑcฤฑ ile deฤŸiลŸtirerek aracฤฑn ne kadar sรผre durduฤŸunu gรถsterin. - - - Blind Spot - Kรถr Nokta - - - Steering Torque - Direksiyon Torku - - - Turn Signal - DรถnรผลŸ Sinyali - - - Fahrenheit - Fahrenheit - - - CPU - CPU - - - GPU - GPU - - - IP - IP - - - RAM - RAM - - - SSD Left - SSD Kaldฤฑ - - - SSD Used - SSD Kullanฤฑldฤฑ - - - None - Hiรงbiri - - - Acceleration: Current - Hฤฑzlanma: Mevcut - - - Acceleration: Max - ฤฐvme: Maksimum - - - Auto Tune: Actuator Delay - Otomatik Ayar: Aktรผatรถr Gecikmesi - - - Auto Tune: Friction - Otomatik Ayar: Sรผrtรผnme - - - Auto Tune: Lateral Acceleration - Otomatik Ayar: Yanal ฤฐvme - - - Auto Tune: Steer Ratio - Otomatik Ayar: Direksiyon Oranฤฑ - - - Auto Tune: Stiffness Factor - Otomatik Ayar: Sertlik Faktรถrรผ - - - Engagement %: Lateral - Katฤฑlฤฑm %: Yatay - - - Engagement %: Longitudinal - Katฤฑlฤฑm %: Boylamsal - - - Lateral Control: Steering Angle - Yanal Kontrol: Direksiyon Aรงฤฑsฤฑ - - - Lateral Control: Torque % Used - Yanal Kontrol: Kullanฤฑlan Tork % - - - Longitudinal Control: Actuator Acceleration Output - Boylamsal Kontrol: Aktรผatรถr ฤฐvme ร‡ฤฑkฤฑลŸฤฑ - - - Longitudinal MPC Jerk: Acceleration - Boylamsal MPC Sarsฤฑntฤฑsฤฑ: ฤฐvme - - - Longitudinal MPC Jerk: Danger Zone - Boylamsal MPC Sarsฤฑntฤฑsฤฑ: Tehlike Bรถlgesi - - - Longitudinal MPC Jerk: Speed Control - Boylamsal MPC Jerk: Hฤฑz Kontrolรผ - - - SELECT - SELECT - - - Select a metric to display - Gรถrรผntรผlenecek bir metrik seรงin - - - Show Distance - Mesafeyi Gรถster - - - Dynamic - Dinamik - - - Static - Statik - - - inches - inรง - - - Off - Kapalฤฑ - - - feet - ayaklar - - - Full Map - Tam Harita - - - Stock openpilot - Stok openpilot - - - FrogsGoMoo's Personalized Style - FrogsGoMoo'nun KiลŸiselleลŸtirilmiลŸ Tarzฤฑ - - - Mapbox Streets - Mapbox Streets - - - Mapbox Outdoors - Mapbox Outdoors - - - Mapbox Light - Mapbox Light - - - Mapbox Dark - Mapbox Dark - - - Mapbox Navigation Day - Mapbox Navigasyon Gรผnรผ - - - Mapbox Navigation Night - Mapbox Navigasyon Gecesi - - - Mapbox Satellite - Mapbox Uydu - - - Mapbox Satellite Streets - Mapbox Uydu Sokaklar - - - Mapbox Traffic Night - Mapbox Trafik Gece - - - Mike's Personalized Style - Mike'nin KiลŸiselleลŸtirilmiลŸ Tarzฤฑ - - - Select a map style - Bir harita stili seรงin - - - Auto - Otomatik - - - Driver - Sรผrรผcรผ - - - Standard - Standart - - - Wide - GeniลŸ - - - foot - ayak - - - inch - inรง - - - meter - metre - - - meters - metreler - - - centimeter - santimetre - - - centimeters - santimetreler - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 10 centimeters. - SรผrรผลŸ ekranฤฑndaki ลŸerit รงizgilerinin kalฤฑnlฤฑฤŸฤฑ.<br><br><b>Varsayฤฑlan, <b>MUTCD</b> ลŸerit รงizgisi geniลŸlik standardฤฑ olan 10 santimetreye uygundur. - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 10 centimeters. - SรผrรผลŸ ekranฤฑndaki yol kenarlarฤฑnฤฑn kalฤฑnlฤฑฤŸฤฑ.<br><br><b>Varsayฤฑlan, <b>MUTCD</b> ลŸerit รงizgisi geniลŸlik standardฤฑ olan 10 santimetrenin yarฤฑsฤฑyla eลŸleลŸir. + <b>Show a numerical temperature in the sidebar</b> instead of the status labels. + <b>Kenar รงubuฤŸunda sayฤฑsal bir sฤฑcaklฤฑk gรถster</b> durum etiketleri yerine. Sidebar Metrics - Kenar ร‡ubuฤŸu Metrikleri + Kenar ร‡ubuฤŸu ร–lรงรผmleri - The width of the driving path on the driving screen.<br><br>Default <b>(6.1 feet)</b> matches the width of a <b>2019 Lexus ES 350</b>. - SรผrรผลŸ ekranฤฑndaki sรผrรผลŸ yolunun geniลŸliฤŸi.<br><br>Varsayฤฑlan <b>(6.1 feet)</b>, bir <b>2019 Lexus ES 350</b>'nin geniลŸliฤŸiyle eลŸleลŸir. + <b>Display system information</b> (CPU, GPU, RAM usage, IP address, device storage) in the sidebar. + <b>Sistem bilgilerini gรถrรผntรผle</b> (CPU, GPU, RAM kullanฤฑmฤฑ, IP adresi, cihaz depolamasฤฑ) kenar รงubuฤŸunda. - The width of the driving path on the driving screen.<br><br>Default <b>(1.9 meters)</b> matches the width of a <b>2019 Lexus ES 350</b>. - SรผrรผลŸ ekranฤฑndaki sรผrรผลŸ yolunun geniลŸliฤŸi.<br><br>Varsayฤฑlan <b>(1.9 metre)</b>, bir <b>2019 Lexus ES 350</b>'nin geniลŸliฤŸiyle eลŸleลŸir. + Use International System of Units + Uluslararasฤฑ Birim Sistemini kullanฤฑn + + + <b>Display measurements using the "International System of Units" (SI)</b> standard. + <b>"Uluslararasฤฑ Birim Sistemi" (SI) standartฤฑnฤฑ kullanarak รถlรงรผmleri gรถrรผntรผleyin</b> + + + Developer Sidebar + GeliลŸtirici Kenar ร‡ubuฤŸu + + + <b>Display debugging info and metrics</b> in a dedicated sidebar on the right side of the screen. + <b>Ekranฤฑn saฤŸ tarafฤฑndaki รถzel bir kenar รงubuฤŸunda</b> hata ayฤฑklama bilgilerini ve metrikleri gรถrรผntรผleyin. + + + Metric #1 + Metrik #1 + + + <b>Select the metric shown in the first "Developer Sidebar" widget.</b> + <b>ฤฐlk "GeliลŸtirici Kenar ร‡ubuฤŸu" bileลŸeninde gรถsterilen metriฤŸi seรงin.</b> + + + Metric #2 + Metrik #2 + + + <b>Select the metric shown in the second "Developer Sidebar" widget.</b> + <b>ฤฐkinci "GeliลŸtirici Kenar ร‡ubuฤŸu" bileลŸeninde gรถsterilen metriฤŸi seรงin.</b> + + + Metric #3 + Metrik #3 + + + <b>Select the metric shown in the third "Developer Sidebar" widget.</b> + <b>รœรงรผncรผ "Developer Sidebar" bileลŸeninde gรถsterilen metriฤŸi seรงin.</b> + + + Metric #4 + Metrik #4 + + + <b>Select the metric shown in the fourth "Developer Sidebar" widget.</b> + <b>Dรถrdรผncรผ "GeliลŸtirici Kenar ร‡ubuฤŸu" biletiฤŸinde gรถsterilen metriฤŸi seรงin.</b> + + + Metric #5 + Metrik #5 + + + <b>Select the metric shown in the fifth "Developer Sidebar" widget.</b> + <b>BeลŸinci "Developer Sidebar" biletiฤŸinde gรถsterilen metriฤŸi seรงin.</b> + + + Metric #6 + Metrik #6 + + + <b>Select the metric shown in the sixth "Developer Sidebar" widget.</b> + <b>Altฤฑncฤฑ "GeliลŸtirici Kenar ร‡ubuฤŸu" bileลŸeninde gรถsterilen รถlรงรผmรผ seรงin.</b> + + + Metric #7 + Metrik #7 + + + <b>Select the metric shown in the seventh "Developer Sidebar" widget.</b> + <b>Yedinci "GeliลŸtirici Kenar ร‡ubuฤŸu" widgetโ€™ฤฑnda gรถsterilen metriฤŸi seรงin.</b> + + + Developer Widgets + GeliลŸtirici Araรงlarฤฑ + + + <b>Overlays for debugging visuals, internal states, and model predictions</b> on the driving screen. + <b>SรผrรผลŸ ekranฤฑnda hata ayฤฑklama gรถrselleri, iรง durumlar ve model tahminleri iรงin bindirmeler</b> + + + Adjacent Leads Tracking + BitiลŸik ร–ndekileri Takip Etme + + + <b>Display adjacent leads detected by the car's radar</b> to the left and right of the current driving path. + <b>Aracฤฑn radarฤฑnฤฑn algฤฑladฤฑฤŸฤฑ bitiลŸik รถndekileri gรถrรผntรผleyin</b>; mevcut sรผrรผลŸ yolunun solunda ve saฤŸฤฑnda. + + + Model Stopping Point + Model Durdurma Noktasฤฑ + + + <b>Show a stop-sign marker where the model intends to stop.</b> + <b>Modelin durmayฤฑ planladฤฑฤŸฤฑ yere bir dur iลŸareti imleci gรถster.</b> + + + Radar Tracks + Radar ฤฐzleri + + + <b>Display all radar points</b> produced by the car's radar. + <b>Aracฤฑn radarฤฑnฤฑn รผrettiฤŸi tรผm radar noktalarฤฑnฤฑ</b> gรถster. + + + Driving Screen Widgets + SรผrรผลŸ Ekranฤฑ Araรง Gereรงleri + + + <b>Custom FrogPilot widgets</b> for the driving screen. + SรผrรผลŸ ekranฤฑ iรงin <b>รถzel FrogPilot bileลŸenleri</b>. + + + Acceleration Path + Hฤฑzlanma Yolu + + + <b>Color the driving path by planned acceleration and braking.</b> + <b>SรผrรผลŸ yolunu planlanan hฤฑzlanma ve frenlemeye gรถre renklendir.</b> + + + Adjacent Lanes + BitiลŸik ลžeritler + + + <b>Show the driving paths for the left and right lanes.</b> + <b>Sol ve saฤŸ ลŸeritler iรงin sรผrรผลŸ yollarฤฑnฤฑ gรถster.</b> + + + Blind Spot Path + Kรถr Nokta Yolu + + + <b>Show a red path when a vehicle is in that lane's blind spot.</b> + <b>Bir araรง o ลŸeridin kรถr noktasฤฑndayken kฤฑrmฤฑzฤฑ bir yol gรถster.</b> + + + Compass + Pusula + + + <b>Show the current driving direction</b> with a simple on-screen compass. + <b>Mevcut sรผrรผลŸ yรถnรผnรผ gรถster</b> basit bir ekran iรงi pusulayla. + + + Driving Personality Button + SรผrรผลŸ KiลŸiliฤŸi DรผฤŸmesi + + + <b>Control and view the current driving personality</b> via a driving screen widget. + <b>Mevcut sรผrรผลŸ kiลŸiliฤŸini kontrol edin ve gรถrรผntรผleyin</b> bir sรผrรผลŸ ekranฤฑ widgetโ€™ฤฑ aracฤฑlฤฑฤŸฤฑyla. + + + Gas / Brake Pedal Indicators + Gaz / Fren Pedalฤฑ Gรถstergeleri + + + <b>On-screen gas and brake indicators.</b><br><br><b>Dynamic</b>: Opacity changes according to how much openpilot is accelerating or braking<br><b>Static</b>: Full when active, dim when not + <b>Ekran รผzerindeki gaz ve fren gรถstergeleri.</b><br><br><b>Dinamik</b>: Saydamlฤฑk, openpilotโ€™un ne kadar hฤฑzlandฤฑฤŸฤฑ veya fren yaptฤฑฤŸฤฑna gรถre deฤŸiลŸir<br><b>Statik</b>: Etkin olduฤŸunda tam, etkin olmadฤฑฤŸฤฑnda sรถnรผk + + + Rotating Steering Wheel + Dรถnen Direksiyon Simidi + + + <b>Rotate the driving screen wheel</b> with the physical steering wheel. + <b>SรผrรผลŸ ekranฤฑ tekerini รงevirin</b> fiziksel direksiyonla. + + + Model UI + Model Arayรผzรผ + + + <b>Model visualizations</b> for the driving path, lane lines, path edges, and road edges. + <b>SรผrรผลŸ yolu, ลŸerit รงizgileri, yol kenarlarฤฑ ve patika kenarlarฤฑ</b> iรงin model gรถrselleลŸtirmeleri. + + + Dynamic Path Width + Dinamik Yol GeniลŸliฤŸi + + + <b>Change the path width based on engagement.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% + <b>Angajmana gรถre yol geniลŸliฤŸini deฤŸiลŸtirin.</b><br><br><b>Tam Angaje</b>: 100%<br><b>Her Zaman Aรงฤฑk Yanal</b>: 75%<br><b>Angaje DeฤŸil</b>: 50% + + + Lane Lines Width + ลžerit ร‡izgileri GeniลŸliฤŸi + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 4 inches. + <b>ลžerit รงizgisi kalฤฑnlฤฑฤŸฤฑnฤฑ ayarlayฤฑn.</b><br><br>Varsayฤฑlan, MUTCD ลŸerit รงizgisi geniลŸliฤŸi standardฤฑ olan 4 inรง ile eลŸleลŸir. + + + Path Edges Width + Yol Kenarlarฤฑ GeniลŸliฤŸi + + + <b>Set the driving-path edge width</b> that represents different driving modes and statuses.<br><br>Default is 20% of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + <b>SรผrรผลŸ yolu kenar geniลŸliฤŸini</b> farklฤฑ sรผrรผลŸ modlarฤฑnฤฑ ve durumlarฤฑnฤฑ temsil edecek ลŸekilde ayarlayฤฑn.<br><br>Varsayฤฑlan, toplam yol geniลŸliฤŸinin %20โ€™sidir.<br><br>Renk Kฤฑlavuzu:<br><br>- <b>Mavi</b>: Navigasyon<br>- <b>Aรงฤฑk Mavi</b>: Her Zaman Aรงฤฑk Yanal<br>- <b>YeลŸil</b>: Varsayฤฑlan<br>- <b>Turuncu</b>: Deneysel Mod<br>- <b>Kฤฑrmฤฑzฤฑ</b>: Trafik Modu<br>- <b>Sarฤฑ</b>: KoลŸullu Deneysel Mod geรงersiz kฤฑlฤฑndฤฑ + + + Path Width + Yol GeniลŸliฤŸi + + + <b>Set the driving-path width.</b><br><br>Default (6.1 feet) matches the width of a 2019 Lexus ES 350. + <b>SรผrรผลŸ yolu geniลŸliฤŸini ayarlayฤฑn.</b><br><br>Varsayฤฑlan (6.1 feet), 2019 Lexus ES 350โ€™nin geniลŸliฤŸiyle eลŸleลŸir. + + + Road Edges Width + Yol Kenarlarฤฑ GeniลŸliฤŸi + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 4 inches. + <b>Yol kenarฤฑ kalฤฑnlฤฑฤŸฤฑnฤฑ ayarlayฤฑn.</b><br><br>Varsayฤฑlan, MUTCD ลŸerit รงizgisi geniลŸliฤŸi standardฤฑ olan 4 inรงin yarฤฑsฤฑyla eลŸleลŸir. + + + "Unlimited" Road UI + "Sฤฑnฤฑrsฤฑz" Yol UI + + + <b>Extend the length of the driving path, lane lines, and road edges</b> for as far as the model can see. + <b>SรผrรผลŸ yolunun, ลŸerit รงizgilerinin ve yol kenarlarฤฑnฤฑn uzunluฤŸunu</b> modelin gรถrebildiฤŸi en uzak mesafeye kadar uzatฤฑn. + + + Navigation Widgets + Navigasyon Widgetโ€™larฤฑ + + + <b>Map style, speed limits, and other navigation widgets.</b> + <b>Harita stili, hฤฑz sฤฑnฤฑrlarฤฑ ve diฤŸer navigasyon bileลŸenleri.</b> + + + Larger Map Display + Daha Bรผyรผk Harita Gรถrรผntรผsรผ + + + <b>Increase the map size</b> for easier navigation readings. + <b>Harita boyutunu artฤฑrฤฑn</b> daha kolay navigasyon okumalarฤฑ iรงin. + + + Map Style + Harita Stili + + + <b>Select the map style</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai style<br><b>FrogPilot</b>: Official FrogPilot map style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>Mike's Personalized Style</b>: Customized hybrid satellite view + <b>"openpilot ile Navigasyon" (NOO) iรงin harita stilini seรงin</b>:<br><br><b>Stock openpilot</b>: Varsayฤฑlan comma.ai stili<br><b>FrogPilot</b>: Resmi FrogPilot harita stili<br><b>Mapbox Streets</b>: Standart sokak odaklฤฑ gรถrรผnรผm<br><b>Mapbox Outdoors</b>: Aรงฤฑk hava ve arazi รถzelliklerini vurgular<br><b>Mapbox Light</b>: Minimalist, parlak tema<br><b>Mapbox Dark</b>: Minimalist, koyu tema<br><b>Mapbox Navigation Day</b>: Gรผndรผz navigasyon iรงin optimize edilmiลŸtir<br><b>Mapbox Navigation Night</b>: Gece navigasyon iรงin optimize edilmiลŸtir<br><b>Mapbox Satellite</b>: Yalnฤฑzca uydu gรถrรผntรผleri<br><b>Mapbox Satellite Streets</b>: Sokak etiketli hibrit uydu gรถrรผntรผleri<br><b>Mapbox Traffic Night</b>: Trafik koลŸullarฤฑnฤฑ vurgulayan koyu tema<br><b>Mike's Personalized Style</b>: ร–zelleลŸtirilmiลŸ hibrit uydu gรถrรผnรผmรผ + + + Road Name + Yol Adฤฑ + + + <b>Display the road name at the bottom of the driving screen</b> using data from "OpenStreetMap (OSM)". + <b>SรผrรผลŸ ekranฤฑnฤฑn alt kฤฑsmฤฑnda yol adฤฑnฤฑ gรถrรผntรผle</b> "OpenStreetMap (OSM)" verilerini kullanarak. + + + Show Speed Limits + Hฤฑz Sฤฑnฤฑrlarฤฑnฤฑ Gรถster + + + <b>Show speed limits</b> in the top-left corner of the driving screen. Uses data from the car's dashboard (if supported) and "OpenStreetMap (OSM)". + SรผrรผลŸ ekranฤฑnฤฑn sol รผst kรถลŸesinde <b>hฤฑz limitlerini gรถster</b>. Aracฤฑn gรถsterge panelindeki verileri (destekleniyorsa) ve "OpenStreetMap (OSM)" verilerini kullanฤฑr. + + + Show Speed Limits from Mapbox + Hฤฑz Sฤฑnฤฑrlarฤฑnฤฑ Mapboxโ€™tan Gรถster + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>BaลŸka bir kaynak olmadฤฑฤŸฤฑnda Mapbox hฤฑz sฤฑnฤฑrฤฑ verilerini kullanฤฑn.</b> + + + Use Vienna-Style Speed Signs + Viyana Tarzฤฑ Hฤฑz ฤฐลŸaretlerini Kullan + + + <b>Show Vienna-style (EU) speed-limit signs</b> instead of MUTCD (US). + <b>Viyana tarzฤฑ (AB) hฤฑz sฤฑnฤฑrฤฑ iลŸaretlerini gรถster</b> MUTCD (ABD) yerine. + + + Quality of Life + Kullanฤฑm KolaylฤฑฤŸฤฑ + + + <b>Miscellaneous visual changes</b> to fine-tune how the driving screen looks. + SรผrรผลŸ ekranฤฑnฤฑn gรถrรผnรผmรผnรผ ince ayar yapmak iรงin <b>รงeลŸitli gรถrsel deฤŸiลŸiklikler</b>. + + + Camera View + Kamera Gรถrรผnรผmรผ + + + <b>Select the active camera view.</b> This is purely a visual change and doesn't impact how openpilot drives! + <b>Aktif kamera gรถrรผnรผmรผnรผ seรงin.</b> Bu yalnฤฑzca gรถrsel bir deฤŸiลŸikliktir ve openpilotโ€™un sรผrรผลŸรผnรผ etkilemez! + + + Show Driver Camera When In Reverse + Geri vitesteyken Sรผrรผcรผ Kamerasฤฑnฤฑ Gรถster + + + <b>Show the driver camera feed</b> when the vehicle is in reverse. + <b>Araรง geri vitesteyken</b> sรผrรผcรผ kamerasฤฑ akฤฑลŸฤฑnฤฑ gรถster. + + + Stopped Timer + Durdurulan Zamanlayฤฑcฤฑ + + + <b>Show a timer when stopped</b> in place of the current speed to indicate how long the vehicle has been stopped. + <b>DurduฤŸunda bir zamanlayฤฑcฤฑ gรถster</b>; aracฤฑn ne kadar sรผredir durduฤŸunu belirtmek iรงin mevcut hฤฑzฤฑn yerine gรถsterilir. + + + Hide Map + Haritayฤฑ Gizle + + + Blind Spot + Kรถr Nokta + + + Steering Torque + Direksiyon Torku + + + Turn Signal + Sinyal + + + Fahrenheit + Fahrenheit + + + CPU + CPU + + + GPU + GPU + + + IP + IP + + + RAM + RAM + + + SSD Left + Sol SSD + + + SSD Used + SSD Kullanฤฑmda + + + None + Hiรงbiri + + + Acceleration: Current + ฤฐvme: Mevcut + + + Acceleration: Max + ฤฐvme: Maksimum + + + Auto Tune: Actuator Delay + Otomatik Ayar: Aktรผatรถr Gecikmesi + + + Auto Tune: Friction + Otomatik Ayar: Sรผrtรผnme + + + Auto Tune: Lateral Acceleration + Otomatik Ayar: Yanal ฤฐvme + + + Auto Tune: Steer Ratio + Otomatik Ayar: Direksiyon Oranฤฑ + + + Auto Tune: Stiffness Factor + Otomatik Ayar: Sertlik Faktรถrรผ + + + Engagement %: Lateral + Katฤฑlฤฑm %: Yanal + + + Engagement %: Longitudinal + BaฤŸlanma %: Boylamsal + + + Lateral Control: Steering Angle + Yatay Kontrol: Direksiyon Aรงฤฑsฤฑ + + + Lateral Control: Torque % Used + Yanal Kontrol: Kullanฤฑlan Tork % + + + Longitudinal Control: Actuator Acceleration Output + Boylamsal Kontrol: Aktรผatรถr ฤฐvmelenme ร‡ฤฑkฤฑลŸฤฑ + + + Longitudinal MPC Jerk: Acceleration + Boylamsal MPC Sarsฤฑntฤฑsฤฑ: ฤฐvme + + + Longitudinal MPC Jerk: Danger Zone + Boylamsal MPC Sarsฤฑntฤฑsฤฑ: Tehlike Bรถlgesi + + + Longitudinal MPC Jerk: Speed Control + Boylamsal MPC Sarsฤฑntฤฑsฤฑ: Hฤฑz Kontrolรผ + + + SELECT + SEร‡ + + + Select a metric to display + Gรถrรผntรผlenecek bir metriฤŸi seรงin + + + Show Distance + Mesafeyi Gรถster + + + Dynamic + Dinamik + + + Static + Statik + + + inches + inรง + + + Off + Kapalฤฑ + + + feet + fit + + + Full Map + Tam Harita + + + Stock openpilot + Stok openpilot + + + FrogPilot + FrogPilot + + + Mapbox Streets + Mapbox Streets + + + Mapbox Outdoors + Mapbox Outdoors + + + Mapbox Light + Mapbox Light + + + Mapbox Dark + Mapbox Koyu + + + Mapbox Navigation Day + Mapbox Navigasyon Gรผndรผz + + + Mapbox Navigation Night + Mapbox Navigasyon Gece + + + Mapbox Satellite + Mapbox Uydu + + + Mapbox Satellite Streets + Mapbox Uydu Sokaklar + + + Mapbox Traffic Night + Mapbox Trafik Gece + + + Mike's Personalized Style + Mikeโ€™in KiลŸiselleลŸtirilmiลŸ Stil + + + Select a map style + Bir harita stili seรงin + + + Auto + Otomatik + + + Driver + Sรผrรผcรผ + + + Standard + Standart + + + Wide + GeniลŸ + + + foot + ayak + + + inch + inรง + + + meter + metre + + + meters + metre + + + centimeter + santimetre + + + centimeters + santimetre + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 10 centimeters. + <b>ลžerit รงizgisi kalฤฑnlฤฑฤŸฤฑnฤฑ ayarlayฤฑn.</b><br><br>Varsayฤฑlan, MUTCD ลŸerit รงizgisi geniลŸliฤŸi standardฤฑ olan 10 santimetreye uygundur. + + + <b>Set the driving-path width.</b><br><br>Default (1.9 meters) matches the width of a 2019 Lexus ES 350. + <b>SรผrรผลŸ yolu geniลŸliฤŸini ayarlayฤฑn.</b><br><br>Varsayฤฑlan (1.9 metre), 2019 Lexus ES 350โ€™nin geniลŸliฤŸiyle eลŸleลŸir. + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 10 centimeters. + <b>Yol kenarฤฑ kalฤฑnlฤฑฤŸฤฑnฤฑ ayarlayฤฑn.</b><br><br>Varsayฤฑlan, MUTCD ลŸerit รงizgisi geniลŸliฤŸi standardฤฑ olan 10 santimetrenin yarฤฑsฤฑna karลŸฤฑlฤฑk gelir. FrogPilotWheelPanel Distance Button - Mesafe DรผฤŸmesi + Mesafe DรผฤŸmesi - The action for a short press of the <b>Distance</b> button. - <b>Mesafe</b> dรผฤŸmesine kฤฑsa basma iลŸlemi. + <b>Action performed when the "Distance" button is pressed.</b> + <b>"Mesafe" dรผฤŸmesine basฤฑldฤฑฤŸฤฑnda gerรงekleลŸtirilen eylem.</b> Distance Button (Long Press) - Mesafe DรผฤŸmesi (Uzun Bas) + Mesafe DรผฤŸmesi (Uzun Basma) - The action for a 0.5+ second press of the <b>Distance</b> button. - <b>Mesafe</b> dรผฤŸmesine 0,5+ saniye basฤฑldฤฑฤŸฤฑnda gerรงekleลŸtirilecek eylem. + <b>Action performed when the "Distance" button is pressed for more than 0.5 seconds.</b> + <b>"Mesafe" dรผฤŸmesine 0,5 saniyeden uzun basฤฑldฤฑฤŸฤฑnda gerรงekleลŸtirilen eylem.</b> Distance Button (Very Long Press) - Mesafe DรผฤŸmesi (ร‡ok Uzun Basma) + Mesafe DรผฤŸmesi (ร‡ok Uzun Basฤฑlฤฑ Tutma) - The action for a 2.5+ second press of the <b>Distance</b> button. - <b>Mesafe</b> dรผฤŸmesine 2,5+ saniye basma eylemi. + <b>Action performed when the "Distance" button is pressed for more than 2.5 seconds.</b> + <b>"Mesafe" dรผฤŸmesine 2,5 saniyeden uzun basฤฑldฤฑฤŸฤฑnda gerรงekleลŸtirilen eylem.</b> LKAS Button - LKAS DรผฤŸmesi + LKAS DรผฤŸmesi - The action for pressing the <b>LKAS</b> button. - <b>LKAS</b> dรผฤŸmesine basma eylemi. + <b>Action performed when the "LKAS" button is pressed.</b> + <b>"LKAS" dรผฤŸmesine basฤฑldฤฑฤŸฤฑnda gerรงekleลŸtirilen eylem.</b> - Nothing - Hiรงbir ลŸey + No Action + Eylem Yok - Pause Lateral - Yanal Duraklat + Pause Steering + Direksiyonu Duraklat Change "Personality Profile" - KiลŸilik Profili + โ€œKiลŸilik Profiliโ€ni DeฤŸiลŸtir Force openpilot to Coast - Openpilot'ฤฑ Kฤฑyฤฑya Zorla + openpilotโ€™ฤฑ Sรผzรผlmeye Zorla - Pause Longitudinal - Boylamsal Durdur + Pause Acceleration/Braking + Hฤฑzlanmayฤฑ/Frenlemeyi Duraklat Toggle "Experimental Mode" On/Off - "Deneysel Mod"u Aรง/Kapat + โ€œDeneysel Moduโ€nu Aรง/Kapat Toggle "Traffic Mode" On/Off - "Traffic Mode" Aรง/Kapat + โ€œTrafik Moduโ€nu Aรง/Kapat SELECT - SELECT + SEร‡ Select a function to assign to this button - Bu dรผฤŸmeye atanacak bir iลŸlev seรงin + Bu dรผฤŸmeye atanacak bir iลŸlev seรงin @@ -4295,7 +4407,7 @@ Kendi animasyonlarฤฑnฤฑzฤฑ gรถndermek mi istiyorsunuz? Onlarฤฑ FrogPilot Discord Characters: %1/%2 - Karakterler: %1/%2 + Karakterler: %1/%2 @@ -4324,11 +4436,11 @@ Kendi animasyonlarฤฑnฤฑzฤฑ gรถndermek mi istiyorsunuz? Onlarฤฑ FrogPilot Discord MapSettings NAVIGATION - NAVฤฐGASYON + SEYฤฐR Manage at %1 - %1 yรถnetim + %1 konumunda yรถnet @@ -4343,58 +4455,7 @@ Kendi animasyonlarฤฑnฤฑzฤฑ gรถndermek mi istiyorsunuz? Onlarฤฑ FrogPilot Discord Waiting for route - Rota bekleniyor - - - - ModelReview - - How would you rate that drive? - Bu sรผrรผลŸรผ nasฤฑl deฤŸerlendirirdiniz? - - - Blacklist this model - Bu modeli kara listeye al - - - The model used during that drive was: - O sรผrรผลŸ sฤฑrasฤฑnda kullanฤฑlan model ลŸuydu: - - - Current Model Score: 0 - Mevcut Model Skoru: 0 - - - Current Model Rank: 0 - Mevcut Model Sฤฑralamasฤฑ: 0 - - - Total Model Drives: 0 - Toplam Model Sรผrรผcรผleri: 0 - - - Total Overall Model Drives: 0 - Toplam Genel Model Sรผrรผcรผleri: 0 - - - Total Model Drives: %1 - Toplam Model Sรผrรผcรผleri: %1 - - - Current Model Rank: %1 - Mevcut Model Sฤฑralamasฤฑ: %1 - - - Current Model Score: %1 - Mevcut Model Skoru: %1 - - - Total Overall Drives: %1 - Toplam Genel Sรผrรผcรผler: %1 - - - Model successfully blacklisted! - Model baลŸarฤฑyla kara listeye alฤฑndฤฑ! + Rota bekleniyor @@ -4431,53 +4492,53 @@ Kendi animasyonlarฤฑnฤฑzฤฑ gรถndermek mi istiyorsunuz? Onlarฤฑ FrogPilot Discord OffroadAlert Device temperature too high. System cooling down before starting. Current internal component temperature: %1 - Cihaz sฤฑcaklฤฑฤŸฤฑ รงok yรผksek. BaลŸlamadan รถnce sistem soฤŸutuluyor. Mevcut dahili bileลŸen sฤฑcaklฤฑฤŸฤฑ: %1 + Cihaz sฤฑcaklฤฑฤŸฤฑ รงok yรผksek. BaลŸlamadan รถnce sistem soฤŸutuluyor. Mevcut dahili bileลŸen sฤฑcaklฤฑฤŸฤฑ: %1 Immediately connect to the internet to check for updates. If you do not connect to the internet, openpilot won't engage in %1 - Hemen internete baฤŸlanarak gรผncellemeleri kontrol edin. ฤฐnternete baฤŸlanmazsanฤฑz, openpilot %1 iรงinde devreye girmez. + Gรผncellemeleri kontrol etmek iรงin hemen internete baฤŸlanฤฑn. ฤฐnternete baฤŸlanmazsanฤฑz openpilot %1 iรงinde devreye girmez Connect to internet to check for updates. openpilot won't automatically start until it connects to internet to check for updates. - Gรผncellemeleri kontrol etmek iรงin internete baฤŸlanฤฑn. openpilot, gรผncellemeleri kontrol etmek iรงin internete baฤŸlanana kadar otomatik olarak baลŸlamayacak. + Gรผncellemeleri kontrol etmek iรงin internete baฤŸlanฤฑn. Gรผncellemeleri kontrol etmek iรงin internete baฤŸlanana kadar openpilot otomatik olarak baลŸlamaz. Unable to download updates %1 - Gรผncellemeler indirilemiyor + Gรผncellemeler indirilemiyor %1 Taking camera snapshots. System won't start until finished. - Kamera anlฤฑk gรถrรผntรผleri alฤฑnฤฑyor. Sistem bitene kadar baลŸlamayacak. + Kamera anlฤฑk gรถrรผntรผleri alฤฑnฤฑyor. Bitene kadar sistem baลŸlamayacak. An update to your device's operating system is downloading in the background. You will be prompted to update when it's ready to install. - Cihazฤฑnฤฑzฤฑn iลŸletim sistemi iรงin bir gรผncelleme arka planda indiriliyor. Kuruluma hazฤฑr olduฤŸunda gรผncelleme yapmanฤฑz istenecektir. + Cihazฤฑnฤฑzฤฑn iลŸletim sistemi iรงin bir gรผncelleme arka planda indiriliyor. Kuruluma hazฤฑr olduฤŸunda gรผncellemeniz istenecek. Device failed to register. It will not connect to or upload to comma.ai servers, and receives no support from comma.ai. If this is an official device, visit https://comma.ai/support. - Cihaz kaydedilemedi. comma.ai sunucularฤฑna baฤŸlanmayacak veya yรผkleme yapmayacak ve comma.ai'den destek almayacak. Bu resmi bir cihazsa, https://comma.ai/support adresini ziyaret edin. + Cihaz kaydedilemedi. comma.ai sunucularฤฑna baฤŸlanmayacak veya yรผkleme yapmayacak ve comma.ai tarafฤฑndan desteklenmeyecektir. Bu resmi bir cihazsa https://comma.ai/support adresini ziyaret edin. NVMe drive not mounted. - NVMe sรผrรผcรผsรผ monte edilmedi. + NVMe sรผrรผcรผ baฤŸlanmadฤฑ. Unsupported NVMe drive detected. Device may draw significantly more power and overheat due to the unsupported NVMe. - Desteklenmeyen NVMe sรผrรผcรผsรผ algฤฑlandฤฑ. Cihaz, desteklenmeyen NVMe nedeniyle รถnemli รถlรงรผde daha fazla gรผรง รงekebilir ve aลŸฤฑrฤฑ ฤฑsฤฑnabilir. + Desteklenmeyen NVMe sรผrรผcรผsรผ algฤฑlandฤฑ. Cihaz, desteklenmeyen NVMe nedeniyle รถnemli รถlรงรผde daha fazla gรผรง รงekebilir ve aลŸฤฑrฤฑ ฤฑsฤฑnabilir. openpilot was unable to identify your car. Your car is either unsupported or its ECUs are not recognized. Please submit a pull request to add the firmware versions to the proper vehicle. Need help? Join discord.comma.ai. - openpilot aracฤฑnฤฑzฤฑ tanฤฑmlayamadฤฑ. Aracฤฑnฤฑz ya desteklenmiyor ya da ECU'larฤฑ tanฤฑnmฤฑyor. Lรผtfen uygun araca yazฤฑlฤฑm sรผrรผmlerini eklemek iรงin bir pull request gรถnderin. Yardฤฑma mฤฑ ihtiyacฤฑnฤฑz var? discord.comma.ai adresine katฤฑlฤฑn. + openpilot aracฤฑnฤฑzฤฑ tanฤฑmlayamadฤฑ. Aracฤฑnฤฑz desteklenmiyor ya da ECUโ€™larฤฑ tanฤฑnmฤฑyor. Uygun araca รผretici yazฤฑlฤฑmฤฑ sรผrรผmlerini eklemek iรงin lรผtfen bir pull request gรถnderin. Yardฤฑma mฤฑ ihtiyacฤฑnฤฑz var? discord.comma.aiโ€™ya katฤฑlฤฑn. openpilot was unable to identify your car. Check integrity of cables and ensure all connections are secure, particularly that the comma power is fully inserted in the OBD-II port of the vehicle. Need help? Join discord.comma.ai. - openpilot aracฤฑnฤฑzฤฑ tanฤฑmlayamadฤฑ. Kablolarฤฑn bรผtรผnlรผฤŸรผnรผ kontrol edin ve tรผm baฤŸlantฤฑlarฤฑn gรผvenli olduฤŸundan emin olun, รถzellikle comma power'ฤฑn aracฤฑn OBD-II portuna tam olarak takฤฑldฤฑฤŸฤฑndan emin olun. Yardฤฑma mฤฑ ihtiyacฤฑnฤฑz var? discord.comma.ai adresine katฤฑlฤฑn. + openpilot aracฤฑnฤฑzฤฑ tanฤฑmlayamadฤฑ. Kablolarฤฑn bรผtรผnlรผฤŸรผnรผ kontrol edin ve tรผm baฤŸlantฤฑlarฤฑn saฤŸlam olduฤŸundan emin olun; รถzellikle comma powerโ€™ฤฑn aracฤฑn OBD-II portuna tamamen takฤฑlฤฑ olduฤŸundan emin olun. Yardฤฑma mฤฑ ihtiyacฤฑnฤฑz var? discord.comma.aiโ€™ye katฤฑlฤฑn. openpilot detected a change in the device's mounting position. Ensure the device is fully seated in the mount and the mount is firmly secured to the windshield. - Translation B + openpilot cihazฤฑn montaj konumunda bir deฤŸiลŸiklik tespit etti. Cihazฤฑn yuvaya tamamen oturduฤŸundan ve aparatฤฑn รถn cama saฤŸlam ลŸekilde sabitlendiฤŸinden emin olun. @@ -4499,35 +4560,35 @@ Kendi animasyonlarฤฑnฤฑzฤฑ gรถndermek mi istiyorsunuz? Onlarฤฑ FrogPilot Discord OnroadAlerts openpilot Unavailable - openpilot Kullanฤฑlamฤฑyor + openpilot kullanฤฑlamฤฑyor Waiting for controls to start - Kontrollerin baลŸlamasฤฑnฤฑ bekliyor + Kontrollerin baลŸlamasฤฑ bekleniyor TAKE CONTROL IMMEDIATELY - HEMEN KONTROLรœ ELE AL + HEMEN KONTROLรœ ELE ALIN Controls Unresponsive - Kontroller Yanฤฑt Vermiyor + Kontroller Yanฤฑt Vermiyor Reboot Device - Cihazฤฑ Yeniden BaลŸlat - - - openpilot crashed ๐Ÿ’ฉ - openpilot รงรถktรผ ๐Ÿ’ฉ + Cihazฤฑ Yeniden BaลŸlat openpilot crashed - openpilot รงรถktรผ + openpilot รงรถktรผ Please post the "Error Log" in the FrogPilot Discord! - Lรผtfen "Hata GรผnlรผฤŸรผ"nรผ FrogPilot Discord'da paylaลŸฤฑn! + Lรผtfen "Error Log"u FrogPilot Discordโ€™unda paylaลŸฤฑn! + + + openpilot crashed ๐Ÿ’ฉ + openpilot รงรถktรผ ๐Ÿ’ฉ @@ -4538,26 +4599,26 @@ Kendi animasyonlarฤฑnฤฑzฤฑ gรถndermek mi istiyorsunuz? Onlarฤฑ FrogPilot Discord Pair your device to your %1 account - Cihazฤฑnฤฑzฤฑ %1 hesabฤฑnฤฑza eลŸleลŸtirin + Cihazฤฑnฤฑzฤฑ %1 hesabฤฑnฤฑzla eลŸleลŸtirin Go to https://%1 on your phone - Telefonunuzda https://%1 adresine gidin. + Telefonunuzda https://%1 adresine gidin Bookmark %1 to your home screen to use it like an app - %1'i bir uygulama gibi kullanmak iรงin ana ekranฤฑnฤฑza ekleyin. + %1โ€™i bir uygulama gibi kullanmak iรงin ana ekranฤฑnฤฑza yer imleyin ParamControl Enable - EtkinleลŸtir + EtkinleลŸtir Cancel - ฤฐptal Et + ฤฐptal @@ -4580,15 +4641,15 @@ Kendi animasyonlarฤฑnฤฑzฤฑ gรถndermek mi istiyorsunuz? Onlarฤฑ FrogPilot Discord 24/7 LTE connectivity - 24/7 LTE baฤŸlantฤฑsฤฑ + 24/7 LTE baฤŸlantฤฑsฤฑ 1 year of drive storage - 1 yฤฑl sรผrรผcรผ depolama + 1 yฤฑl sรผrรผลŸ depolamasฤฑ Turn-by-turn navigation - Adฤฑm adฤฑm navigasyon + Adฤฑm adฤฑm navigasyon @@ -4644,15 +4705,15 @@ Kendi animasyonlarฤฑnฤฑzฤฑ gรถndermek mi istiyorsunuz? Onlarฤฑ FrogPilot Discord now - ลŸimdi - - - FrogPilot - FrogPilot + ลŸimdi Restore - Geri yรผkle + Geri Yรผkle + + + FrogPilot + FrogPilot @@ -4684,27 +4745,27 @@ Kendi animasyonlarฤฑnฤฑzฤฑ gรถndermek mi istiyorsunuz? Onlarฤฑ FrogPilot Discord Resetting device... This may take up to a minute. - Cihaz sฤฑfฤฑrlanฤฑyor... -Bu bir dakika kadar sรผrebilir. + Cihaz sฤฑfฤฑrlanฤฑyor... +Bu iลŸlem bir dakika kadar sรผrebilir. Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device. - Veri bรถlรผmรผnรผ baฤŸlamak mรผmkรผn deฤŸil. Bรถlรผm bozulmuลŸ olabilir. Cihazฤฑnฤฑzฤฑ silmek ve sฤฑfฤฑrlamak iรงin onaylayฤฑn. + Veri bรถlรผmรผ baฤŸlanamฤฑyor. Bรถlรผm bozulmuลŸ olabilir. Cihazฤฑnฤฑzฤฑ silip sฤฑfฤฑrlamak iรงin onaylayฤฑn. System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - Sistem sฤฑfฤฑrlama tetiklendi. Tรผm iรงerik ve ayarlarฤฑ silmek iรงin onayla'ya basฤฑn. BaลŸlatmaya devam etmek iรงin iptal'e basฤฑn. + Sistem sฤฑfฤฑrlamasฤฑ tetiklendi. Tรผm iรงerik ve ayarlarฤฑ silmek iรงin onayฤฑ basฤฑn. ร–nyรผklemeye devam etmek iรงin iptali basฤฑn. ScreenRecorder RECORDING - KAYIT + KAYIT ALINIYOR RECORD - KAYIT + KAYIT @@ -4727,35 +4788,35 @@ Bu bir dakika kadar sรผrebilir. โ† Back - โ† Geri + โ† Geri FrogPilot - FrogPilot - - - Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - FrogPilot'a hoลŸ geldiniz! FrogPilot'ta yeni olduฤŸunuz iรงin "Minimal" geรงiลŸ รถn ayarฤฑ uygulandฤฑ, ancak bunu istediฤŸiniz zaman "Tuning Level" dรผฤŸmesi aracฤฑlฤฑฤŸฤฑyla deฤŸiลŸtirebilirsiniz! - - - Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - FrogPilot'e oldukรงa yeni olduฤŸunuzdan, "Minimal" geรงiลŸ รถn ayarฤฑ uygulanmฤฑลŸtฤฑr, ancak bunu istediฤŸiniz zaman "Tuning Level" dรผฤŸmesi aracฤฑlฤฑฤŸฤฑyla deฤŸiลŸtirebilirsiniz! - - - Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Openpilot konusunda deneyimli olduฤŸunuz iรงin "Standart" geรงiลŸ รถn ayarฤฑ uygulandฤฑ, ancak bunu istediฤŸiniz zaman "Ayarlama Seviyesi" dรผฤŸmesi aracฤฑlฤฑฤŸฤฑyla deฤŸiลŸtirebilirsiniz! - - - Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - FrogPilot ile deneyimli olduฤŸunuzdan, "Standart" geรงiลŸ รถn ayarฤฑ uygulanmฤฑลŸtฤฑr, ancak bunu istediฤŸiniz zaman "Ayarlama Seviyesi" dรผฤŸmesi aracฤฑlฤฑฤŸฤฑyla deฤŸiลŸtirebilirsiniz! - - - Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - Translation B + FrogPilot Welcome to FrogPilot! Since you're new to openpilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - FrogPilot'a hoลŸ geldiniz! openpilot'a yeni olduฤŸunuz iรงin "Minimal" geรงiลŸ รถn ayarฤฑ uygulandฤฑ, ancak bunu istediฤŸiniz zaman "Tuning Level" dรผฤŸmesi aracฤฑlฤฑฤŸฤฑyla deฤŸiลŸtirebilirsiniz! + FrogPilotโ€™a hoลŸ geldiniz! openpilotโ€™ta yeni olduฤŸunuz iรงin โ€œMinimalโ€ geรงiลŸ รถn ayarฤฑ uygulandฤฑ, ancak bunu istediฤŸiniz zaman โ€œTuning Levelโ€ dรผฤŸmesiyle deฤŸiลŸtirebilirsiniz! + + + Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + FrogPilotโ€™a hoลŸ geldiniz! FrogPilotโ€™ta yeni olduฤŸunuz iรงin โ€œMinimalโ€ geรงiลŸ รถn ayarฤฑ uygulandฤฑ, ancak bunu istediฤŸiniz zaman โ€œTuning Levelโ€ dรผฤŸmesi รผzerinden deฤŸiลŸtirebilirsiniz! + + + Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + FrogPilotโ€™a oldukรงa yeni olduฤŸunuz iรงin โ€œMinimalโ€ geรงiลŸ รถn ayarฤฑ uygulandฤฑ, ancak bunu istediฤŸiniz zaman โ€œTuning Levelโ€ dรผฤŸmesi aracฤฑlฤฑฤŸฤฑyla deฤŸiลŸtirebilirsiniz! + + + Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + openpilot konusunda deneyimli olduฤŸunuz iรงin โ€œStandartโ€ geรงiลŸ รถn ayarฤฑ uygulandฤฑ, ancak bunu dilediฤŸiniz zaman โ€œAyarlama Dรผzeyiโ€ dรผฤŸmesi รผzerinden deฤŸiลŸtirebilirsiniz! + + + Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + FrogPilot konusunda deneyimli olduฤŸunuz iรงin โ€œStandardโ€ geรงiลŸ รถn ayarฤฑ uygulandฤฑ, ancak bunu istediฤŸiniz zaman โ€œTuning Levelโ€ dรผฤŸmesi รผzerinden deฤŸiลŸtirebilirsiniz! + + + Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + FrogPilot konusunda รงok deneyimli olduฤŸunuz iรงin โ€œGeliลŸmiลŸโ€ geรงiลŸ รถn ayarฤฑ uygulanmฤฑลŸtฤฑr, ancak bunu istediฤŸiniz zaman โ€œAyarlama Dรผzeyiโ€ dรผฤŸmesi รผzerinden deฤŸiลŸtirebilirsiniz! @@ -4830,11 +4891,11 @@ Bu bir dakika kadar sรผrebilir. Something went wrong. Reboot the device. - Bir ลŸeyler ters gitti. Cihazฤฑ yeniden baลŸlatฤฑn. + Bir ลŸeyler ters gitti. Cihazฤฑ yeniden baลŸlatฤฑn. No custom software found at this URL. - Bu URL'de รถzel yazฤฑlฤฑm bulunamadฤฑ. + Bu URLโ€™de รถzel yazฤฑlฤฑm bulunamadฤฑ. Select a language @@ -4842,15 +4903,15 @@ Bu bir dakika kadar sรผrebilir. Choose Software to Install - Yรผklenecek Yazฤฑlฤฑmฤฑ Seรงin + Yรผklenecek Yazฤฑlฤฑmฤฑ Seรง openpilot - openpilot + openpilot Custom Software - ร–zel Yazฤฑlฤฑm + ร–zel Yazฤฑlฤฑm @@ -4869,7 +4930,7 @@ Bu bir dakika kadar sรผrebilir. Pair your device with Konik connect (stable.konik.ai). - Cihazฤฑnฤฑzฤฑ Konik connect ile eลŸleลŸtirin (stable.konik.ai). + Cihazฤฑnฤฑzฤฑ Konik connect ile eลŸleลŸtirin (stable.konik.ai). @@ -4956,27 +5017,27 @@ Bu bir dakika kadar sรผrebilir. GPU - GPU + GPU CPU - CPU + CPU GB - GB + GB MEMORY - BELLEK + BELLEK LEFT - SOL + SOL USED - KULLANILMIลž + KULLANILDI @@ -4999,91 +5060,91 @@ Bu bir dakika kadar sรผrebilir. Current Version - Mevcut Sรผrรผm + Mevcut Sรผrรผm Download - ฤฐndir + ฤฐndir Install Update - Gรผncellemeyi Yรผkle + Gรผncellemeyi Yรผkle INSTALL - YรœKLE + YรœKLE Target Branch - Hedef ลžube + Hedef Dal SELECT - SELECT + SEร‡ Select a branch - Bir ลŸube seรงin + Bir dal seรง Uninstall - Kaldฤฑr + Kaldฤฑr failed to check for update - gรผncellemeyi kontrol etme baลŸarฤฑsฤฑz oldu + gรผncelleme kontrolรผ baลŸarฤฑsฤฑz oldu DOWNLOAD - ฤฐNDฤฐR + ฤฐNDฤฐR update available - gรผncelleme mevcut + gรผncelleme mevcut never - asla + asla up to date, last checked %1 - gรผncel, son kontrol %1 + gรผncel, son kontrol %1 Updates are only downloaded while the car is off or in park. - Gรผncellemeler yalnฤฑzca araรง kapalฤฑyken veya park halindeyken indirilir. + Gรผncellemeler yalnฤฑzca araรง kapalฤฑyken veya park halindeyken indirilir. Automatically Update FrogPilot - FrogPilot'ฤฑ Otomatik GรผncelleลŸtir - - - Error Log - Hata GรผnlรผฤŸรผ - - - VIEW - Gร–RรœNรœM - - - View the error log for openpilot crashes. - Openpilot รงรถkmeleri iรงin hata gรผnlรผฤŸรผnรผ gรถrรผntรผleyin. - - - Do you want to delete deep storage FrogPilot assets? This includes your toggle settings for quick reinstalls. - Derin depolama FrogPilot varlฤฑklarฤฑnฤฑ silmek istiyor musunuz? Bu, hฤฑzlฤฑ yeniden yรผklemeler iรงin geรงiลŸ ayarlarฤฑnฤฑzฤฑ iรงerir. - - - Are you sure? This is 100% unrecoverable and if you reinstall FrogPilot you'll lose all your previous settings! - Emin misiniz? Bu %100 geri alฤฑnamaz ve FrogPilot'ฤฑ yeniden yรผklerseniz tรผm รถnceki ayarlarฤฑnฤฑzฤฑ kaybedeceksiniz! - - - This branch must be downloaded before switching. Would you like to download it now? - Bu dal indirilmelidir. ลžimdi indirmek ister misiniz? + FrogPilotโ€™ฤฑ Otomatik Olarak Gรผncelle FrogPilot will automatically update itself and it's assets when you're offroad and have an active internet connection. - FrogPilot, internet baฤŸlantฤฑnฤฑz aktifken ve yoldan รงฤฑktฤฑฤŸฤฑnฤฑzda kendisini ve varlฤฑklarฤฑnฤฑ otomatik olarak gรผncelleyecektir. + FrogPilot, offroad iken ve etkin bir internet baฤŸlantฤฑnฤฑz varken kendisini ve varlฤฑklarฤฑnฤฑ otomatik olarak gรผncelleyecektir. + + + This branch must be downloaded before switching. Would you like to download it now? + Bu dal geรงiลŸten รถnce indirilmeli. ลžimdi indirmek ister misiniz? + + + Error Log + Hata GรผnlรผฤŸรผ + + + VIEW + Gร–RรœNรœM + + + View the error log for openpilot crashes. + openpilot รงรถkmeleri iรงin hata gรผnlรผฤŸรผnรผ gรถrรผntรผleyin. + + + Do you want to perform a full factory reset? All saved assets and settings will be permanently deleted! + Tam bir fabrika ayarฤฑ sฤฑfฤฑrlamasฤฑ yapmak istiyor musunuz? KaydedilmiลŸ tรผm varlฤฑklar ve ayarlar kalฤฑcฤฑ olarak silinecek! + + + This is a complete factory reset and cannot be undone. Are you absolutely sure you want to continue? + Bu iลŸlem tam bir fabrika sฤฑfฤฑrlamasฤฑdฤฑr ve geri alฤฑnamaz. Devam etmek istediฤŸinizden kesinlikle emin misiniz? @@ -5207,75 +5268,75 @@ Bu bir dakika kadar sรผrebilir. openpilot Longitudinal Control (Alpha) - openpilot Boylamsal Kontrol (Alfa) + openpilot Boylamasฤฑna Kontrol (Alfa) WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). - UYARI: openpilot uzunlamasฤฑna kontrolรผ bu araรง iรงin alfa aลŸamasฤฑndadฤฑr ve Otomatik Acil Frenleme (AEB) devre dฤฑลŸฤฑ bฤฑrakฤฑlacaktฤฑr. + UYARI: Bu araรง iรงin openpilot boylamsal kontrol alfa aลŸamasฤฑndadฤฑr ve Otomatik Acil Frenleme (AEB) รถzelliฤŸini devre dฤฑลŸฤฑ bฤฑrakacaktฤฑr. Experimental Mode - Deneysel Modu + Deneysel Mod Disengage on Accelerator Pedal - Gaz Pedalฤฑndan Ayฤฑr + Gaz Pedalฤฑnda Devre DฤฑลŸฤฑ Bฤฑrak Aggressive - Saldฤฑrgan + Agresif Standard - Standart + Standart Relaxed - RahatlamฤฑลŸ + Rahat Driving Personality - SรผrรผลŸ KiลŸiliฤŸi + SรผrรผลŸ KiลŸiliฤŸi On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. - Bu arabada, openpilot varsayฤฑlan olarak arabanฤฑn yerleลŸik ACC'sini kullanฤฑr, openpilot'un boylamsal kontrolรผ yerine. Openpilot boylamsal kontrolรผne geรงmek iรงin bunu etkinleลŸtirin. Openpilot boylamsal kontrol alfa etkinleลŸtirildiฤŸinde Deneysel modu etkinleลŸtirmek รถnerilir. + Bu araรงta openpilot, openpilotโ€™un boylamsal kontrolรผ yerine aracฤฑn yerleลŸik ACCโ€™sini varsayฤฑlan olarak kullanฤฑr. openpilot boylamsal kontrolรผne geรงmek iรงin bunu etkinleลŸtirin. openpilot boylamsal kontrol alpha etkinleลŸtirildiฤŸinde Deneysel modun etkinleลŸtirilmesi รถnerilir. openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: - openpilot varsayฤฑlan olarak <b>sakin modda</b> sรผrรผลŸ yapar. Deneysel mod, sakin mod iรงin hazฤฑr olmayan <b>alfa dรผzeyinde รถzellikleri</b> etkinleลŸtirir. Deneysel รถzellikler aลŸaฤŸฤฑda listelenmiลŸtir: + openpilot varsayฤฑlan olarak <b>sakin modda</b> sรผrer. Deneysel mod, sakin moda hazฤฑr olmayan <b>alfa dรผzeyindeki รถzellikleri</b> etkinleลŸtirir. Deneysel รถzellikler aลŸaฤŸฤฑda listelenmiลŸtir: End-to-End Longitudinal Control - Uรงtan Uca Boylamsal Kontrol + Uรงtan Uca Boylamsal Kontrol Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. - SรผrรผลŸ modeli gaz ve frenleri kontrol etsin. openpilot, kฤฑrmฤฑzฤฑ ฤฑลŸฤฑklar ve dur iลŸaretleri iรงin durmak da dahil olmak รผzere, bir insanฤฑn yapacaฤŸฤฑnฤฑ dรผลŸรผndรผฤŸรผ gibi sรผrecek. SรผrรผลŸ modeli sรผrรผลŸ hฤฑzฤฑna karar verdiฤŸi iรงin, ayarlanan hฤฑz yalnฤฑzca รผst sฤฑnฤฑr olarak iลŸlev gรถrecektir. Bu, alfa kalitesinde bir รถzelliktir; hatalar beklenmelidir. + Gaz ve frenleri sรผrรผลŸ modelinin kontrol etmesine izin verin. openpilot, kฤฑrmฤฑzฤฑ ฤฑลŸฤฑklarda ve dur iลŸaretlerinde durmak dahil, bir insanฤฑn sรผreceฤŸi ลŸekilde sรผrer. SรผrรผลŸ modeli sรผrรผlecek hฤฑza karar verdiฤŸinden, ayarlanan hฤฑz yalnฤฑzca รผst sฤฑnฤฑr olarak iลŸlev gรถrecektir. Bu, alfa seviyesinde bir รถzelliktir; hatalar beklenmelidir. New Driving Visualization - Yeni SรผrรผลŸ GรถrselleลŸtirmesi + Yeni SรผrรผลŸ GรถrselleลŸtirmesi Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. - Deneysel mod ลŸu anda bu arabada kullanฤฑlamฤฑyor รงรผnkรผ arabanฤฑn stok ACC'si boylamsal kontrol iรงin kullanฤฑlฤฑyor. + Deneysel mod ลŸu anda bu araรงta kullanฤฑlamฤฑyor รงรผnkรผ boylamsal kontrol iรงin aracฤฑn stok ACCโ€™si kullanฤฑlฤฑyor. openpilot longitudinal control may come in a future update. - openpilot boylamasฤฑna kontrol gelecekteki bir gรผncellemede gelebilir. + openpilot boylamasฤฑna kontrolรผ gelecekteki bir gรผncellemede gelebilir. Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. - Deneysel moduฤŸa izin vermek iรงin openpilot boylamsal kontrol (alfa) anahtarฤฑnฤฑ etkinleลŸtirin. + Deneysel modu etkinleลŸtirmek iรงin openpilot boylamsal kontrol (alfa) anahtarฤฑnฤฑ etkinleลŸtirin. Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. - Standart รถnerilir. Agresif modda, openpilot รถndeki araรงlarฤฑ daha yakฤฑndan takip edecek ve gaz ile fren konusunda daha agresif olacaktฤฑr. Rahat modda, openpilot รถndeki araรงlardan daha uzak duracaktฤฑr. Desteklenen araรงlarda, direksiyon simidi mesafe dรผฤŸmesi ile bu kiลŸilikler arasฤฑnda geรงiลŸ yapabilirsiniz. + Standart รถnerilir. Agresif modda, openpilot รถndeki araรงlarฤฑ daha yakฤฑndan takip eder ve gaz ve frende daha agresif olur. Rahat modda openpilot รถndeki araรงlardan daha uzak durur. Desteklenen araรงlarda, direksiyonunuzdaki mesafe dรผฤŸmesiyle bu kiลŸilikler arasฤฑnda geรงiลŸ yapabilirsiniz. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. - SรผrรผลŸ gรถrselleลŸtirmesi, bazฤฑ dรถnรผลŸleri daha iyi gรถstermek iรงin dรผลŸรผk hฤฑzlarda yola bakan geniลŸ aรงฤฑlฤฑ kameraya geรงecektir. Deneysel mod logosu da saฤŸ รผst kรถลŸede gรถsterilecektir. + Bazฤฑ dรถnรผลŸleri daha iyi gรถstermek iรงin dรผลŸรผk hฤฑzlarda sรผrรผลŸ gรถrselleลŸtirmesi yol tarafฤฑna bakan geniลŸ aรงฤฑlฤฑ kameraya geรงecektir. Deneysel mod logosu ayrฤฑca saฤŸ รผst kรถลŸede gรถsterilecektir. @@ -5317,31 +5378,31 @@ Bu bir dakika kadar sรผrebilir. WiFiPromptWidget Setup Wi-Fi - Wi-Fi Kurulumu + Wi-Fi Kurulumu Connect to Wi-Fi to upload driving data and help improve openpilot - Wi-Fi'ye baฤŸlanarak sรผrรผลŸ verilerini yรผkleyin ve openpilot'u geliลŸtirmeye yardฤฑmcฤฑ olun. + SรผrรผลŸ verilerini yรผklemek ve openpilotโ€™u geliลŸtirmeye yardฤฑmcฤฑ olmak iรงin Wiโ€‘Fiโ€™a baฤŸlanฤฑn Open Settings - Ayarlarฤฑ Aรง + Ayarlarฤฑ Aรง Ready to upload - Yรผklemeye hazฤฑr + Yรผklemeye hazฤฑr Training data will be pulled periodically while your device is on Wi-Fi - EฤŸitim verileri, cihazฤฑnฤฑz Wi-Fi'ye baฤŸlฤฑyken periyodik olarak รงekilecektir. + Cihazฤฑnฤฑz Wi-Fiโ€™a baฤŸlฤฑyken eฤŸitim verileri periyodik olarak รงekilecektir Uploading disabled - Yรผkleme devre dฤฑลŸฤฑ bฤฑrakฤฑldฤฑ + Yรผkleme devre dฤฑลŸฤฑ Toggle off the "Turn Off Data Uploads" toggle to re-enable uploads. - Veri Yรผklemelerini Kapatma" anahtarฤฑnฤฑ kapatฤฑn, yรผklemeleri yeniden etkinleลŸtirin. + Yรผklemeleri yeniden etkinleลŸtirmek iรงin โ€œTurn Off Data Uploadsโ€ anahtarฤฑnฤฑ kapatฤฑn. @@ -5364,7 +5425,7 @@ Bu bir dakika kadar sรผrebilir. Forget - Unutmak + Unut \ No newline at end of file diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index 9bb8402fb..9dda85759 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -88,23 +88,23 @@ Off - ๅ…ณ + ๅ…ณ้—ญ Always - ๆ€ปๆ˜ฏ + ๅง‹็ปˆ Only Onroad - ไป…้™ๅ…ฌ่ทฏ + ไป…้™่กŒ้ฉถไธญ Until Reboot - ็›ดๅˆฐ้‡ๅฏ + ็›ดๅˆฐ้‡ๅฏ Allow tethering with your data SIM and keep it active either while driving or continuously. - ๅ…่ฎธไฝฟ็”จๆ•ฐๆฎSIMๅก่ฟ›่กŒ็ฝ‘็ปœๅ…ฑไบซ๏ผŒๅนถๅœจ้ฉพ้ฉถๆ—ถๆˆ–ๆŒ็ปญไฟๆŒๅ…ถๆฟ€ๆดปใ€‚ + ๅ…่ฎธไฝฟ็”จๆ•ฐๆฎ SIM ๅฏ็”จ็ฝ‘็ปœๅ…ฑไบซ๏ผŒๅนถๅœจ่กŒ้ฉถๆœŸ้—ดๆˆ–ๆŒ็ปญไฟๆŒๅ…ถๅค„ไบŽๆดปๅŠจ็Šถๆ€ใ€‚ @@ -187,71 +187,71 @@ DeveloperSidebar m/sยฒ - m/sยฒ + ็ฑณ/็ง’ยฒ ft/sยฒ - ft/sยฒ + ่‹ฑๅฐบ/็ง’ยฒ ACCEL - ๅŠ ้€Ÿ + ๅŠ ้€Ÿ ACCEL JERK - ๅŠ ้€ŸๆŠ–ๅŠจ + ๅŠ ้€Ÿๅบฆ่ทƒๅ˜ ACT ACCEL - ACT ACCEL + ACT ๅŠ ้€Ÿ DANGER JERK - ๅฑ้™ฉๆทท่›‹ + ๅฑ้™ฉ้ข ็ฐธ STEER DELAY - ่ฝฌๅ‘ๅปถ่ฟŸ + ่ฝฌๅ‘ๅปถ่ฟŸ FRICTION - ๆ‘ฉๆ“ฆ + ๆ‘ฉๆ“ฆ LAT ACCEL - ๆจชๅ‘ๅŠ ้€Ÿๅบฆ + ๆจชๅ‘ๅŠ ้€Ÿๅบฆ LATERAL % - ๆจชๅ‘ % + ๆจชๅ‘ % LONG % - ้•ฟ% + LONG % MAX ACCEL - ๆœ€ๅคงๅŠ ้€Ÿ + ๆœ€ๅคงๅŠ ้€Ÿๅบฆ SPEED JERK - ้€Ÿๅบฆ้ข ็ฐธ + ้€ŸๅบฆๆŠ–ๅŠจ STEER ANGLE - ่ฝฌๅ‘่ง’ + ่ฝฌๅ‘่ง’ STEER RATIO - ่ฝฌๅ‘ๆฏ” + ่ฝฌๅ‘ๆฏ” STEER STIFF - ่ฝฌๅ‘ๅƒต็กฌ + ่ฝฌๅ‘ๅƒต็กฌ TORQUE % - ๆ‰ญ็Ÿฉ % + ๆ‰ญ็Ÿฉ % @@ -398,30 +398,30 @@ Pair your device with Konik connect (stable.konik.ai). - ๅฐ†ๆ‚จ็š„่ฎพๅค‡ไธŽKonik connect้…ๅฏน (stable.konik.ai)ใ€‚ + ๅฐ†ๆ‚จ็š„่ฎพๅค‡ไธŽ Konik connect๏ผˆstable.konik.ai๏ผ‰้…ๅฏนใ€‚ DriveStats FROGPILOT - FROGPILOT + FROGPILOT Drives - ้ฉฑๅŠจๅ™จ + ่กŒ้ฉถ Hours - ๅฐๆ—ถ + ๅฐๆ—ถ KM - KM + ๅƒ็ฑณ Miles - ่‹ฑ้‡Œ + ่‹ฑ้‡Œ @@ -446,3841 +446,3952 @@ FrogPilotAnnotatedCameraWidget m/sยฒ - m/sยฒ + m/sยฒ meters - ็ฑณ + ็ฑณ m/s - m/s + ็ฑณ/็ง’ km/h - km/h + ๅ…ฌ้‡Œ/ๅฐๆ—ถ ft/sยฒ - ft/sยฒ + ่‹ฑๅฐบ/็ง’ยฒ feet - ่‹ฑๅฐบ + ่‹ฑๅฐบ mph - mph + ่‹ฑ้‡Œ/ๅฐๆ—ถ Vehicle in blind spot - ่ฝฆ่พ†ๅœจ็›ฒๅŒบ + ่ฝฆ่พ†ๅœจ็›ฒๅŒบ PENDING - ๅพ…ๅค„็† + ๅพ…ๅค„็† LIMIT - ้™ๅˆถ + ้™้€Ÿ FrogPilotConfirmationDialog Reboot required to take effect. - ้œ€่ฆ้‡ๅฏๆ‰่ƒฝ็”Ÿๆ•ˆใ€‚ + ้œ€่ฆ้‡ๅฏๆ‰่ƒฝ็”Ÿๆ•ˆใ€‚ Reboot Now - ็ซ‹ๅณ้‡ๅฏ + ็ซ‹ๅณ้‡ๅฏ Reboot Later - ็จๅŽ้‡ๅฏ + ็จๅŽ้‡ๅฏ Yes - ๆ˜ฏ็š„ + ๆ˜ฏ No - ไธ + ๅฆ FrogPilotDataPanel - Delete Driving Footage and Data - ๅˆ ้™ค้ฉพ้ฉถๅฝ•ๅƒๅ’Œๆ•ฐๆฎ + Delete Driving Data + ๅˆ ้™ค่กŒ้ฉถๆ•ฐๆฎ DELETE - ๅˆ ้™ค + ๅˆ ้™ค - Deletes all stored driving footage and data from your device. Ideal for maintaining privacy or for simply freeing up space. - ไปŽๆ‚จ็š„่ฎพๅค‡ไธญๅˆ ้™คๆ‰€ๆœ‰ๅญ˜ๅ‚จ็š„้ฉพ้ฉถๅฝ•ๅƒๅ’Œๆ•ฐๆฎใ€‚้žๅธธ้€‚ๅˆ็ปดๆŠค้š็งๆˆ–ไป…ไป…ๆ˜ฏไธบไบ†้‡Šๆ”พ็ฉบ้—ดใ€‚ + <b>Delete all stored driving footage and data</b> to free up space and clear private information. + <b>ๅˆ ้™คๆ‰€ๆœ‰ๅทฒๅญ˜ๅ‚จ็š„้ฉพ้ฉถๅฝฑๅƒๅ’Œๆ•ฐๆฎ</b>ไปฅ้‡Šๆ”พ็ฉบ้—ดๅนถๆธ…้™ค็งไบบไฟกๆฏใ€‚ - Are you sure you want to delete all of your driving footage and data? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คๆ‰€ๆœ‰้ฉพ้ฉถๅฝ•ๅƒๅ’Œๆ•ฐๆฎๅ—๏ผŸ + Delete all driving data and footage? + ๅˆ ้™คๆ‰€ๆœ‰้ฉพ้ฉถๆ•ฐๆฎๅ’Œๅฝฑๅƒ๏ผŸ Delete - ๅˆ ้™ค + ๅˆ ้™ค Deleting... - ๆญฃๅœจๅˆ ้™ค... + ๆญฃๅœจๅˆ ้™คโ€ฆ Deleted! - ๅทฒๅˆ ้™ค๏ผ + ๅทฒๅˆ ้™ค๏ผ Delete Error Logs - ๅˆ ้™ค้”™่ฏฏๆ—ฅๅฟ— + ๅˆ ้™ค้”™่ฏฏๆ—ฅๅฟ— - Deletes all stored error logs from your device. Ideal for freeing up space. - ไปŽ่ฎพๅค‡ไธญๅˆ ้™คๆ‰€ๆœ‰ๅญ˜ๅ‚จ็š„้”™่ฏฏๆ—ฅๅฟ—ใ€‚้žๅธธ้€‚ๅˆ้‡Šๆ”พ็ฉบ้—ดใ€‚ + <b>Delete collected error logs</b> to free up space and clear old crash records. + <b>ๅˆ ้™คๆ”ถ้›†็š„้”™่ฏฏๆ—ฅๅฟ—</b>ไปฅ้‡Šๆ”พ็ฉบ้—ดๅนถๆธ…้™คๆ—ง็š„ๅดฉๆบƒ่ฎฐๅฝ•ใ€‚ - Are you sure you want to delete all of the error logs? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คๆ‰€ๆœ‰้”™่ฏฏๆ—ฅๅฟ—ๅ—๏ผŸ + Delete all error logs? + ๅˆ ้™คๆ‰€ๆœ‰้”™่ฏฏๆ—ฅๅฟ—๏ผŸ Screen Recordings - ๅฑๅน•ๅฝ•ๅˆถ + ๅฑๅน•ๅฝ•ๅˆถ - Manage your screen recordings. - ็ฎก็†ๆ‚จ็š„ๅฑๅน•ๅฝ•ๅˆถใ€‚ + <b>Delete or rename screen recordings.</b> + <b>ๅˆ ้™คๆˆ–้‡ๅ‘ฝๅๅฑๅน•ๅฝ•ๅˆถใ€‚</b> DELETE ALL - ๅˆ ้™คๆ‰€ๆœ‰ + ๅ…จ้ƒจๅˆ ้™ค RENAME - ้‡ๅ‘ฝๅ + ้‡ๅ‘ฝๅ - Select a recording to delete - ้€‰ๆ‹ฉ่ฆๅˆ ้™ค็š„ๅฝ•้Ÿณ + Choose a screen recording to delete + ้€‰ๆ‹ฉ่ฆๅˆ ้™ค็š„ๅฑๅน•ๅฝ•ๅˆถ - Are you sure you want to delete this recording? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คๆญคๅฝ•้Ÿณๅ—๏ผŸ + Delete this screen recording? + ๅˆ ้™คๆญคๅฑๅน•ๅฝ•ๅˆถ๏ผŸ - Are you sure you want to delete all screen recordings? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คๆ‰€ๆœ‰ๅฑๅน•ๅฝ•ๅˆถๅ—๏ผŸ + Delete all screen recordings? + ๅˆ ้™คๆ‰€ๆœ‰ๅฑๅน•ๅฝ•ๅˆถ๏ผŸ Delete All - ๅ…จ้ƒจๅˆ ้™ค + ๅ…จ้ƒจๅˆ ้™ค - Select a recording to rename - ้€‰ๆ‹ฉไธ€ไธชๅฝ•้Ÿณ่ฟ›่กŒ้‡ๅ‘ฝๅ + Choose a screen recording to rename + ้€‰ๆ‹ฉ่ฆ้‡ๅ‘ฝๅ็š„ๅฑๅน•ๅฝ•ๅˆถ Enter a new name - ่พ“ๅ…ฅๆ–ฐๅ็งฐ + ่พ“ๅ…ฅๆ–ฐๅ็งฐ - Rename Recording - ้‡ๅ‘ฝๅๅฝ•้Ÿณ + Rename Screen Recording + ้‡ๅ‘ฝๅๅฑๅน•ๅฝ•ๅˆถ - A recording with this name already exists. Please choose a different name. - ๅทฒๅญ˜ๅœจๅŒๅๅฝ•้Ÿณใ€‚่ฏท้€‰ๆ‹ฉไธๅŒ็š„ๅ็งฐใ€‚ + Name already in use. Please choose a different name. + ๅ็งฐๅทฒ่ขซไฝฟ็”จใ€‚่ฏท้€‰ๆ‹ฉๅ…ถไป–ๅ็งฐใ€‚ Renaming... - ้‡ๅ‘ฝๅไธญ... + ๆญฃๅœจ้‡ๅ‘ฝๅโ€ฆ Renamed! - ๅทฒ้‡ๅ‘ฝๅ๏ผ + ๅทฒ้‡ๅ‘ฝๅ๏ผ FrogPilot Backups - FrogPilot ๅค‡ไปฝ + FrogPilot ๅค‡ไปฝ - Manage your FrogPilot backups. - ็ฎก็†ๆ‚จ็š„FrogPilotๅค‡ไปฝใ€‚ + <b>Create, delete, or restore FrogPilot backups.</b> + <b>ๅˆ›ๅปบใ€ๅˆ ้™คๆˆ–ๆขๅค FrogPilot ๅค‡ไปฝใ€‚</b> BACKUP - ๅค‡ไปฝ + ๅค‡ไปฝ RESTORE - ๆขๅค + ๆขๅค - Name your backup - ๅ‘ฝๅๆ‚จ็š„ๅค‡ไปฝ + Enter a name for this backup + ไธบๆญคๅค‡ไปฝ่พ“ๅ…ฅๅ็งฐ - A backup with this name already exists. Please choose a different name. - ๅทฒๅญ˜ๅœจๅŒๅๅค‡ไปฝใ€‚่ฏท้€‰ๆ‹ฉๅ…ถไป–ๅ็งฐใ€‚ - - - Do you want to compress this backup? This will take a few minutes, but the final result will be smaller and run in the background. - ๆ‚จ่ฆๅŽ‹็ผฉๆญคๅค‡ไปฝๅ—๏ผŸ่ฟ™ๅฐ†้œ€่ฆๅ‡ ๅˆ†้’Ÿ๏ผŒไฝ†ๆœ€็ปˆ็ป“ๆžœไผšๆ›ดๅฐ๏ผŒๅนถๅœจๅŽๅฐ่ฟ่กŒใ€‚ + Compress this backup? This will save space and run in the background but take a bit longer. + ๅŽ‹็ผฉๆญคๅค‡ไปฝ๏ผŸ่ฟ™ๅฐ†่Š‚็œ็ฉบ้—ดๅนถๅœจๅŽๅฐ่ฟ่กŒ๏ผŒไฝ†ไผš่Šฑๆ›ด้•ฟๆ—ถ้—ดใ€‚ Backing up... - ๆญฃๅœจๅค‡ไปฝ... + ๆญฃๅœจๅค‡ไปฝโ€ฆ Compressing... - ๆญฃๅœจๅŽ‹็ผฉ... + ๆญฃๅœจๅŽ‹็ผฉโ€ฆ Backup created! - ๅค‡ไปฝๅทฒๅˆ›ๅปบ๏ผ + ๅค‡ไปฝๅทฒๅˆ›ๅปบ๏ผ - Select a backup to delete - ้€‰ๆ‹ฉ่ฆๅˆ ้™ค็š„ๅค‡ไปฝ + Choose a FrogPilot backup to delete + ้€‰ๆ‹ฉ่ฆๅˆ ้™ค็š„FrogPilotๅค‡ไปฝ - Are you sure you want to delete this backup? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คๆญคๅค‡ไปฝๅ—๏ผŸ + Delete this backup? + ๅˆ ้™คๆญคๅค‡ไปฝ๏ผŸ - Are you sure you want to delete all FrogPilot backups? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คๆ‰€ๆœ‰FrogPilotๅค‡ไปฝๅ—๏ผŸ + Delete all backups? + ๅˆ ้™คๆ‰€ๆœ‰ๅค‡ไปฝ๏ผŸ - Select a restore point - ้€‰ๆ‹ฉไธ€ไธช่ฟ˜ๅŽŸ็‚น + Choose a backup to restore + ้€‰ๆ‹ฉ่ฆๆขๅค็š„ๅค‡ไปฝ - Are you sure you want to restore this version of FrogPilot? - ๆ‚จ็กฎๅฎš่ฆๆขๅคๆญค็‰ˆๆœฌ็š„FrogPilotๅ—๏ผŸ + Restore this backup? + ๆขๅคๆญคๅค‡ไปฝ๏ผŸ Restore - ๆขๅค + ๆขๅค Restoring... - ๆญฃๅœจๆขๅค... + ๆญฃๅœจๆขๅคโ€ฆ Extracting... - ๆๅ–ไธญ... + ๆญฃๅœจ่งฃๅŽ‹โ€ฆ Restored! - ๅทฒๆขๅค๏ผ + ๅทฒๆขๅค๏ผ Rebooting... - ้‡ๅฏไธญ... + ๆญฃๅœจ้‡ๅฏโ€ฆ Toggle Backups - ๅˆ‡ๆขๅค‡ไปฝ + ๅˆ‡ๆขๅค‡ไปฝ - Manage your toggle backups. - ็ฎก็†ๆ‚จ็š„ๅˆ‡ๆขๅค‡ไปฝใ€‚ + <b>Create, delete, or restore toggle backups.</b> + <b>ๅˆ›ๅปบใ€ๅˆ ้™คๆˆ–ๆขๅคๅˆ‡ๆขๅค‡ไปฝใ€‚</b> - Name your toggle backup - ๅ‘ฝๅๆ‚จ็š„ๅˆ‡ๆขๅค‡ไปฝ - - - A toggle backup with this name already exists. Please choose a different name. - ๅ…ทๆœ‰ๆญคๅ็งฐ็š„ๅˆ‡ๆขๅค‡ไปฝๅทฒๅญ˜ๅœจใ€‚่ฏท้€‰ๆ‹ฉไธ€ไธชไธๅŒ็š„ๅ็งฐใ€‚ - - - Select a toggle backup to delete - ้€‰ๆ‹ฉ่ฆๅˆ ้™ค็š„ๅˆ‡ๆขๅค‡ไปฝ - - - Are you sure you want to delete this toggle backup? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คๆญคๅˆ‡ๆขๅค‡ไปฝๅ—๏ผŸ - - - Are you sure you want to delete all toggle backups? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คๆ‰€ๆœ‰ๅˆ‡ๆขๅค‡ไปฝๅ—๏ผŸ - - - Select a toggle restore point - ้€‰ๆ‹ฉไธ€ไธชๅˆ‡ๆข่ฟ˜ๅŽŸ็‚น - - - Are you sure you want to restore this toggle backup? - ๆ‚จ็กฎๅฎš่ฆๆขๅคๆญคๅˆ‡ๆขๅค‡ไปฝๅ—๏ผŸ + Choose a backup to delete + ้€‰ๆ‹ฉ่ฆๅˆ ้™ค็š„ๅค‡ไปฝ FrogPilotDevicePanel Device Settings - ่ฎพๅค‡่ฎพ็ฝฎ + ่ฎพๅค‡่ฎพ็ฝฎ - Settings that control device behavior. - ๆŽงๅˆถ่ฎพๅค‡่กŒไธบ็š„่ฎพ็ฝฎใ€‚ - - - Battery Shutdown Threshold - ็”ตๆฑ ๅ…ณๆœบ้˜ˆๅ€ผ - - - Automatically shut down the device when the vehicle's battery voltage reaches the set threshold preventing excessive battery drain to protect the battery. - ๅฝ“่ฝฆ่พ†็š„็”ตๆฑ ็”ตๅŽ‹่พพๅˆฐ่ฎพๅฎš้˜ˆๅ€ผๆ—ถ๏ผŒ่‡ชๅŠจๅ…ณ้—ญ่ฎพๅค‡๏ผŒ้˜ฒๆญข่ฟ‡ๅบฆ็”ตๆฑ ๆถˆ่€—ไปฅไฟๆŠค็”ตๆฑ ใ€‚ + <b>Settings that control how the device runs, powers off, and manages driving data.</b> + <b>ๆŽงๅˆถ่ฎพๅค‡่ฟ่กŒใ€ๅ…ณๆœบๅ’Œ้ฉพ้ฉถๆ•ฐๆฎ็ฎก็†็š„่ฎพ็ฝฎใ€‚</b> Device Shutdown Timer - ่ฎพๅค‡ๅ…ณๆœบ่ฎกๆ—ถๅ™จ + ่ฎพๅค‡ๅ…ณๆœบ่ฎกๆ—ถๅ™จ - How long the device stays on for after you go offroad. - ่ฎพๅค‡ๅœจ่ถŠ้‡ŽๅŽไฟๆŒๅผ€ๅฏ็š„ๆ—ถ้—ดใ€‚ + <b>Keep the device on for the set amount of time after a drive</b> before it shuts down automatically. + <b>ๅœจ่กŒ้ฉถ็ป“ๆŸๅŽ๏ผŒๅฐ†่ฎพๅค‡ไฟๆŒๅผ€ๅฏ่ฎพๅฎš็š„ๆ—ถ้—ด</b>๏ผŒ็„ถๅŽๅฎƒไผš่‡ชๅŠจๅ…ณๆœบใ€‚ - Disable Data Logging - ็ฆ็”จๆ•ฐๆฎ่ฎฐๅฝ• + Disable Logging + ็ฆ็”จๆ—ฅๅฟ— WARNING: This will prevent your drives from being recorded and all data will be unobtainable! - ่ญฆๅ‘Š๏ผš่ฟ™ๅฐ†้˜ปๆญขๆ‚จ็š„้ฉฑๅŠจๅ™จ่ขซ่ฎฐๅฝ•๏ผŒๆ‰€ๆœ‰ๆ•ฐๆฎๅฐ†ๆ— ๆณ•่Žทๅ–๏ผ + ่ญฆๅ‘Š๏ผš่ฟ™ๅฐ†้˜ปๆญข่ฎฐๅฝ•ๆ‚จ็š„้ฉพ้ฉถ๏ผŒๅนถไฝฟๆ‰€ๆœ‰ๆ•ฐๆฎๆ— ๆณ•่Žทๅ–๏ผ - Disable all data logging to improve privacy. - ็ฆ็”จๆ‰€ๆœ‰ๆ•ฐๆฎ่ฎฐๅฝ•ไปฅๆ้ซ˜้š็งใ€‚ + <b>Prevent the device from saving driving data.</b> + <b>้˜ฒๆญข่ฎพๅค‡ไฟๅญ˜่กŒ้ฉถๆ•ฐๆฎใ€‚</b> - Disable Data Uploads - ็ฆ็”จๆ•ฐๆฎไธŠไผ  + Disable Uploads + ็ฆ็”จไธŠไผ  - WARNING: This will prevent your drives from appearing on <b>comma connect</b> which may impact debugging and support! - ่ญฆๅ‘Š๏ผš่ฟ™ๅฐ†้˜ปๆญขๆ‚จ็š„้ฉฑๅŠจๅ™จๅ‡บ็Žฐๅœจ<b>comma connect</b>ไธŠ๏ผŒ่ฟ™ๅฏ่ƒฝไผšๅฝฑๅ“่ฐƒ่ฏ•ๅ’Œๆ”ฏๆŒ๏ผ + WARNING: This will prevent your drives from being uploaded to <b>comma connect</b> which will impact debugging and official support from comma! + ่ญฆๅ‘Š๏ผš่ฟ™ๅฐ†้˜ปๆญขไฝ ็š„่กŒ้ฉถ่ฎฐๅฝ•ไธŠไผ ๅˆฐ <b>comma connect</b>๏ผŒไปŽ่€Œๅฝฑๅ“่ฐƒ่ฏ•ไปฅๅŠ comma ็š„ๅฎ˜ๆ–นๆ”ฏๆŒ๏ผ - Prevent the device from sending any data to <b>comma</b>'s servers. - ้˜ฒๆญข่ฎพๅค‡ๅ‘<b>comma</b>็š„ๆœๅŠกๅ™จๅ‘้€ไปปไฝ•ๆ•ฐๆฎใ€‚ + <b>Prevent the device from uploading driving data.</b> + <b>้˜ฒๆญข่ฎพๅค‡ไธŠไผ ้ฉพ้ฉถๆ•ฐๆฎใ€‚</b> - Increase Thermal Safety Limit - ๅขžๅŠ ็ƒญๅฎ‰ๅ…จ้™ๅˆถ + High-Quality Recording + ้ซ˜่ดจ้‡ๅฝ•ๅˆถ - WARNING: This can damage your device by exceeding safe temperature limits! - ่ญฆๅ‘Š๏ผš่ฟ™ๅฏ่ƒฝไผšๅ› ่ถ…่ฟ‡ๅฎ‰ๅ…จๆธฉๅบฆ้™ๅˆถ่€ŒๆŸๅๆ‚จ็š„่ฎพๅค‡๏ผ + <b>Save drive footage in higher video quality.</b> + <b>ไปฅๆ›ด้ซ˜่ง†้ข‘่ดจ้‡ไฟๅญ˜้ฉพ้ฉถๅฝฑๅƒใ€‚</b> - Allow the device to run hotter than comma recommended limit. - ๅ…่ฎธ่ฎพๅค‡่ฟ่กŒๆธฉๅบฆ้ซ˜ไบŽ้€—ๅทๆŽจ่็š„้™ๅˆถใ€‚ + Low-Voltage Cutoff + ไฝŽ็”ตๅŽ‹ๆ–ญๅผ€ - Use Konik's Server Instead of comma's - ไฝฟ็”จKonik็š„ๆœๅŠกๅ™จ่€Œไธๆ˜ฏ้€—ๅท็š„ๆœๅŠกๅ™จ + <b>While parked, if the battery voltage falls below the set level, the device shuts down</b> to prevent excessive battery drain. + <b>ๅœ่ฝฆๆ—ถ๏ผŒๅฆ‚ๆžœ็”ตๆฑ ็”ตๅŽ‹ไฝŽไบŽ่ฎพๅฎšๆฐดๅนณ๏ผŒ่ฎพๅค‡ๅฐ†ๅ…ณ้—ญ</b>ไปฅ้˜ฒๆญข็”ตๆฑ ่ฟ‡ๅบฆ่€—็”ตใ€‚ - Upload your driving data to <b>connect.konik.ai</b> instead of <b>connect.comma.ai</b>. - ๅฐ†ๆ‚จ็š„้ฉพ้ฉถๆ•ฐๆฎไธŠไผ ๅˆฐ<b>connect.konik.ai</b>๏ผŒ่€Œไธๆ˜ฏ<b>connect.comma.ai</b>ใ€‚ + Raise Temperature Limits + ๆ้ซ˜ๆธฉๅบฆ้™ๅˆถ + + + WARNING: Running at higher temperatures may damage your device! + ่ญฆๅ‘Š๏ผšๅœจ่พƒ้ซ˜ๆธฉๅบฆไธ‹่ฟ่กŒๅฏ่ƒฝไผšๆŸๅๆ‚จ็š„่ฎพๅค‡๏ผ + + + <b>Allow the device to run at higher temperatures</b> before throttling or shutting down. Use only if you understand the risks! + <b>ๅœจ้™้ข‘ๆˆ–ๅ…ณๆœบๅ‰ๅ…่ฎธ่ฎพๅค‡ๅœจๆ›ด้ซ˜ๆธฉๅบฆไธ‹่ฟ่กŒ</b>ใ€‚ไป…ๅœจไฝ ไบ†่งฃ้ฃŽ้™ฉ็š„ๆƒ…ๅ†ตไธ‹ไฝฟ็”จ๏ผ + + + Use Konik Server + ไฝฟ็”จ Konik Server + + + <b>Upload driving data to "connect.konik.ai" instead of "connect.comma.ai".</b> + <b>ๅฐ†้ฉพ้ฉถๆ•ฐๆฎไธŠไผ ๅˆฐโ€œconnect.konik.aiโ€๏ผŒ่€Œ้žโ€œconnect.comma.aiโ€ใ€‚</b> Screen Settings - ๅฑๅน•่ฎพ็ฝฎ + ๅฑๅน•่ฎพ็ฝฎ - Settings that control screen behavior. - ๆŽงๅˆถๅฑๅน•่กŒไธบ็š„่ฎพ็ฝฎใ€‚ + <b>Settings that control screen brightness, screen recording, and timeout duration.</b> + <b>ๆŽงๅˆถๅฑๅน•ไบฎๅบฆใ€ๅฑๅน•ๅฝ•ๅˆถๅ’Œ่ถ…ๆ—ถๆ—ถ้•ฟ็š„่ฎพ็ฝฎใ€‚</b> Screen Brightness (Offroad) - ๅฑๅน•ไบฎๅบฆ๏ผˆ่ถŠ้‡Ž๏ผ‰ + ๅฑๅน•ไบฎๅบฆ๏ผˆ็ฆป็บฟ๏ผ‰ - The screen brightness when not driving. - ๆœช้ฉพ้ฉถๆ—ถ็š„ๅฑๅน•ไบฎๅบฆใ€‚ + <b>The screen brightness while not driving.</b> + <b>้ž่กŒ้ฉถๆ—ถ็š„ๅฑๅน•ไบฎๅบฆใ€‚</b> Screen Brightness (Onroad) - ๅฑๅน•ไบฎๅบฆ๏ผˆ่กŒ้ฉถไธญ๏ผ‰ + ๅฑๅน•ไบฎๅบฆ๏ผˆ่กŒ้ฉถไธญ๏ผ‰ - The screen brightness while driving. - ้ฉพ้ฉถๆ—ถ็š„ๅฑๅน•ไบฎๅบฆใ€‚ + <b>The screen brightness while driving.</b> + <b>่กŒ้ฉถๆ—ถ็š„ๅฑๅน•ไบฎๅบฆใ€‚</b> Screen Recorder - ๅฑๅน•ๅฝ•ๅˆถๅ™จ + ๅฑๅน•ๅฝ•ๅˆถๅ™จ - Enable a button in the driving screen to record the screen. - ๅœจ้ฉพ้ฉถๅฑๅน•ไธญๅฏ็”จไธ€ไธชๆŒ‰้’ฎๆฅๅฝ•ๅˆถๅฑๅน•ใ€‚ + <b>Add a button to the driving screen to record the display.</b> + <b>ๅœจ้ฉพ้ฉถๅฑๅน•ๆทปๅŠ ไธ€ไธชๅฝ•ๅˆถๆ˜พ็คบ็š„ๆŒ‰้’ฎใ€‚</b> Screen Timeout (Offroad) - ๅฑๅน•่ถ…ๆ—ถ๏ผˆ่ถŠ้‡Ž๏ผ‰ + ๅฑๅน•่ถ…ๆ—ถ๏ผˆ็ฆป็บฟ๏ผ‰ - How long it takes for the screen to turn off when not driving. - ๅฝ“ไธ้ฉพ้ฉถๆ—ถ๏ผŒๅฑๅน•้œ€่ฆๅคš้•ฟๆ—ถ้—ดๅ…ณ้—ญใ€‚ + <b>How long the screen stays on after being tapped while not driving.</b> + <b>ๅœจๆœช้ฉพ้ฉถๆ—ถ๏ผŒ็‚นๅ‡ปๅŽๅฑๅน•ไฟๆŒไบฎ่ตท็š„ๆ—ถ้•ฟใ€‚</b> Screen Timeout (Onroad) - ๅฑๅน•่ถ…ๆ—ถ๏ผˆ่กŒ้ฉถไธญ๏ผ‰ + ๅฑๅน•่ถ…ๆ—ถ๏ผˆ่กŒ้ฉถไธญ๏ผ‰ - How long it takes for the screen to turn off while driving. - ้ฉพ้ฉถๆ—ถๅฑๅน•ๅ…ณ้—ญ้œ€่ฆๅคš้•ฟๆ—ถ้—ดใ€‚ + <b>How long the screen stays on after being tapped while driving.</b> + <b>้ฉพ้ฉถๆ—ถ็‚นๅ‡ปๅŽๅฑๅน•ไฟๆŒๆ˜พ็คบ็š„ๆ—ถ้•ฟใ€‚</b> + + + Standby Mode + ๅพ…ๆœบๆจกๅผ + + + <b>Turn the screen off while driving and automatically wake it up for alerts or engagement state changes.</b> + <b>ๅœจ้ฉพ้ฉถๆ—ถๅ…ณ้—ญๅฑๅน•๏ผŒๅนถๅœจๆœ‰่ญฆๆŠฅๆˆ–ๆŽฅ็ฎก็Šถๆ€ๅ˜ๅŒ–ๆ—ถ่‡ชๅŠจๅ”ค้†’ใ€‚</b> 5 mins - 5ๅˆ†้’Ÿ + 5 ๅˆ†้’Ÿ mins - ๅˆ†้’Ÿ + ๅˆ†้’Ÿ hour - ๅฐๆ—ถ + ๅฐๆ—ถ hours - ๅฐๆ—ถ + ๅฐๆ—ถ - Only Disable While Onroad - ไป…ๅœจ่กŒ้ฉถๆ—ถ็ฆ็”จ + Disable Onroad Only + ไป…ๅœจ่กŒ้ฉถไธญ็ฆ็”จ volts - ไผ็‰น + ไผ็‰น Screen Off - ๅฑๅน•ๅ…ณ้—ญ + ๅ…ณๅฑ Auto - ่‡ชๅŠจ + ่‡ชๅŠจ Start Recording - ๅผ€ๅง‹ๅฝ•้Ÿณ + ๅผ€ๅง‹ๅฝ•ๅˆถ Stop Recording - ๅœๆญขๅฝ•้Ÿณ + ๅœๆญขๅฝ•ๅˆถ seconds - ็ง’ - - - High Bitrate Recording - ้ซ˜ๆฏ”็‰น็އๅฝ•้Ÿณ - - - Record driving footage at double the standard bitrate for improved video quality in driving logs. - ๅœจ้ฉพ้ฉถ่ฎฐๅฝ•ไธญไปฅๆ ‡ๅ‡†ๆฏ”็‰น็އ็š„ไธคๅ€ๅฝ•ๅˆถ้ฉพ้ฉถ่ง†้ข‘๏ผŒไปฅๆ้ซ˜่ง†้ข‘่ดจ้‡ใ€‚ + ็ง’ FrogPilotLateralPanel Advanced Lateral Tuning - ้ซ˜็บงๆจชๅ‘่ฐƒ่ฐ + ้ซ˜็บงๆจชๅ‘่ฐƒๆ ก - Advanced settings for fine-tuning openpilot's lateral controls. - ็”จไบŽๅพฎ่ฐƒopenpilotๆจชๅ‘ๆŽงๅˆถ็š„้ซ˜็บง่ฎพ็ฝฎใ€‚ + <b>Advanced steering control changes to fine-tune how openpilot drives.</b> + <b>้ซ˜็บง่ฝฌๅ‘ๆŽงๅˆถๆ›ดๆ”น๏ผŒๅฏๅพฎ่ฐƒ openpilot ็š„้ฉพ้ฉถ่กŒไธบใ€‚</b> Actuator Delay (Default: %1) - ๆ‰ง่กŒๅ™จๅปถ่ฟŸ๏ผˆ้ป˜่ฎค๏ผš%1๏ผ‰ + ๆ‰ง่กŒๅ™จๅปถ่ฟŸ๏ผˆ้ป˜่ฎค๏ผš%1๏ผ‰ Actuator Delay - ๆ‰ง่กŒๅ™จๅปถ่ฟŸ + ๆ‰ง่กŒๅ™จๅปถ่ฟŸ - How long the steering wheel takes to respond to commands. Higher values account for slower steering; lower values for quicker response. - ๆ–นๅ‘็›˜ๅฏนๆŒ‡ไปค็š„ๅ“ๅบ”ๆ—ถ้—ดใ€‚่พƒ้ซ˜็š„ๆ•ฐๅ€ผ่กจ็คบ่ฝฌๅ‘่พƒๆ…ข๏ผ›่พƒไฝŽ็š„ๆ•ฐๅ€ผ่กจ็คบๅ“ๅบ”่พƒๅฟซใ€‚ + <b>The time between openpilot's steering command and the vehicle's response.</b> Increase if the vehicle reacts late; decrease if it feels jumpy. Auto-learned by default. + <b>openpilot ่ฝฌๅ‘ๆŒ‡ไปคไธŽ่ฝฆ่พ†ๅ“ๅบ”ไน‹้—ด็š„ๆ—ถ้—ดใ€‚</b> ๅฆ‚ๆžœ่ฝฆ่พ†ๅๅบ”ๆปžๅŽ๏ผŒ่ฏทๅขžๅคง๏ผ›ๅฆ‚ๆžœๆ„Ÿ่ง‰่ทณ่ทƒ๏ผŒ่ฏทๅ‡ๅฐใ€‚้ป˜่ฎค่‡ชๅŠจๅญฆไน ใ€‚ Friction (Default: %1) - ๆ‘ฉๆ“ฆ๏ผˆ้ป˜่ฎคๅ€ผ๏ผš%1๏ผ‰ + ๆ‘ฉๆ“ฆ๏ผˆ้ป˜่ฎค๏ผš%1๏ผ‰ Friction - ๆ‘ฉๆ“ฆ + ๆ‘ฉๆ“ฆ - Adjust steering resistance. Higher values feel more stable but heavier; lower values feel lighter but more sensitive. - ่ฐƒๆ•ด่ฝฌๅ‘้˜ปๅŠ›ใ€‚่พƒ้ซ˜็š„ๆ•ฐๅ€ผๆ„Ÿ่ง‰ๆ›ด็จณๅฎšไฝ†่พƒ้‡๏ผ›่พƒไฝŽ็š„ๆ•ฐๅ€ผๆ„Ÿ่ง‰ๆ›ด่ฝปไฝ†ๆ›ดๆ•ๆ„Ÿใ€‚ + <b>Compensates for steering friction.</b> Increase if the wheel sticks near center; decrease if it jitters. Auto-learned by default. + <b>่กฅๅฟ่ฝฌๅ‘ๆ‘ฉๆ“ฆใ€‚</b> ๅฆ‚ๆžœๆ–นๅ‘็›˜ๅœจไธญๅฟƒ้™„่ฟ‘ๅ‘็ฒ˜๏ผŒ่ฏทๅขžๅŠ ๏ผ›ๅฆ‚ๆžœๆŠ–ๅŠจ๏ผŒ่ฏทๅ‡ๅฐ‘ใ€‚้ป˜่ฎค่‡ชๅŠจๅญฆไน ใ€‚ Kp Factor (Default: %1) - Kpๅ› ๅญ๏ผˆ้ป˜่ฎค๏ผš%1๏ผ‰ + Kp ็ณปๆ•ฐ๏ผˆ้ป˜่ฎค๏ผš%1๏ผ‰ Kp Factor - Kpๅ› ๅญ + Kp ๅ› ๅญ - How aggressively openpilot corrects steering. Higher values respond faster but may feel jerky; lower values are smoother but slower. - openpilotๆ กๆญฃ่ฝฌๅ‘็š„็งฏๆž็จ‹ๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผๅ“ๅบ”ๆ›ดๅฟซ๏ผŒไฝ†ๅฏ่ƒฝๆ„Ÿ่ง‰ไธ็จณๅฎš๏ผ›่พƒไฝŽ็š„ๅ€ผๆ›ดๅนณ็จณไฝ†่พƒๆ…ขใ€‚ + <b>How strongly openpilot corrects lane position.</b> Higher is tighter but twitchier; lower is smoother but slower. Auto-learned by default. + <b>openpilot ไฟฎๆญฃ่ฝฆ้“ไฝ็ฝฎ็š„ๅŠ›ๅบฆใ€‚</b>ๆ•ฐๅ€ผ่ถŠ้ซ˜่ถŠ่ดด็ดงไฝ†ๆ›ดๆ•ๆ„Ÿ๏ผ›ๆ•ฐๅ€ผ่ถŠไฝŽ่ถŠๅนณ้กบไฝ†ๅๅบ”ๆ›ดๆ…ขใ€‚้ป˜่ฎค่‡ชๅŠจๅญฆไน ใ€‚ - Lateral Accel (Default: %1) - ๆจชๅ‘ๅŠ ้€Ÿๅบฆ๏ผˆ้ป˜่ฎคๅ€ผ๏ผš%1๏ผ‰ + Lateral Acceleration (Default: %1) + ๆจชๅ‘ๅŠ ้€Ÿๅบฆ๏ผˆ้ป˜่ฎค๏ผš%1๏ผ‰ - Lateral Accel - ๆจชๅ‘ๅŠ ้€Ÿๅบฆ + Lateral Acceleration + ๆจชๅ‘ๅŠ ้€Ÿๅบฆ - How quickly openpilot makes lateral adjustments. Higher values allow sharper turns; lower values provide smoother steering. - openpilot่ฟ›่กŒๆจชๅ‘่ฐƒๆ•ด็š„้€Ÿๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผๅ…่ฎธๆ›ดๆ€ฅ็š„่ฝฌๅผฏ๏ผ›่พƒไฝŽ็š„ๅ€ผๆไพ›ๆ›ดๅนณ็จณ็š„่ฝฌๅ‘ใ€‚ + <b>Maps steering torque to turning response.</b> Increase for sharper turns; decrease for gentler steering. Auto-learned by default. + <b>ๅฐ†่ฝฌๅ‘ๆ‰ญ็Ÿฉๆ˜ ๅฐ„ๅˆฐ่ฝฌๅ‘ๅ“ๅบ”ใ€‚</b> ๅขžๅคงไปฅ่Žทๅพ—ๆ›ดๆ•้”็š„่ฝฌๅผฏ๏ผ›ๅ‡ๅฐไปฅ่Žทๅพ—ๆ›ดๅนณ็ผ“็š„่ฝฌๅ‘ใ€‚้ป˜่ฎค่‡ชๅŠจๅญฆไน ใ€‚ Steer Ratio (Default: %1) - ่ฝฌๅ‘ๆฏ”๏ผˆ้ป˜่ฎคๅ€ผ๏ผš%1๏ผ‰ + ่ฝฌๅ‘ๆฏ”๏ผˆ้ป˜่ฎค๏ผš%1๏ผ‰ Steer Ratio - ่ฝฌๅ‘ๆฏ” + ่ฝฌๅ‘ๆฏ” - How much the steering wheel turns in response to commands. Higher values feel more stable; lower values feel quicker. - ๆ–นๅ‘็›˜ๅฏนๆŒ‡ไปค็š„ๅ“ๅบ”่ฝฌๅŠจ้‡ใ€‚่พƒ้ซ˜็š„ๆ•ฐๅ€ผๆ„Ÿ่ง‰ๆ›ด็จณๅฎš๏ผ›่พƒไฝŽ็š„ๆ•ฐๅ€ผๆ„Ÿ่ง‰ๆ›ดๅฟซใ€‚ + <b>The relationship between steering wheel rotation and road wheel angle.</b> Increase if steering feels too quick or twitchy; decrease if it feels too slow or weak. Auto-learned by default. + <b>ๆ–นๅ‘็›˜่ฝฌ่ง’ไธŽ่ฝฆ่ฝฎ่ฝฌ่ง’ไน‹้—ด็š„ๅ…ณ็ณปใ€‚</b> ่‹ฅ่ฝฌๅ‘่ฟ‡ๅฟซๆˆ–ๆ•ๆ„Ÿ๏ผŒ่ฏทๅขžๅคง๏ผ›่‹ฅๆ„Ÿ่ง‰่ฟ‡ๆ…ขๆˆ–ๆ— ๅŠ›๏ผŒ่ฏทๅ‡ๅฐใ€‚้ป˜่ฎค่‡ชๅŠจๅญฆไน ใ€‚ - Force Auto Tune On - ๅผบๅˆถ่‡ชๅŠจ่ฐƒ่ฐๅผ€ๅฏ + Force Auto-Tune On + ๅผบๅˆถๅผ€ๅฏ่‡ชๅŠจ่ฐƒ่ฐ - Force-enable commaโ€™s auto lateral tuning. - ๅผบๅˆถๅฏ็”จ้€—ๅท็š„่‡ชๅŠจๆจชๅ‘่ฐƒ่ฐใ€‚ + <b>Force-enable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration".</b> + <b>ๅผบๅˆถๅฏ็”จ openpilot ็š„โ€œๆ‘ฉๆ“ฆโ€ๅ’Œโ€œๆจชๅ‘ๅŠ ้€Ÿๅบฆโ€ๅฎžๆ—ถ่‡ชๅŠจ่ฐƒๆ กใ€‚</b> - Force Auto Tune Off - ๅผบๅˆถๅ…ณ้—ญ่‡ชๅŠจ่ฐƒ่ฐ + Force Auto-Tune Off + ๅผบๅˆถๅ…ณ้—ญ่‡ชๅŠจ่ฐƒๆ ก - Force-disable commaโ€™s auto lateral tuning. - ๅผบๅˆถ็ฆ็”จ้€—ๅท็š„่‡ชๅŠจๆจชๅ‘่ฐƒ่ฐใ€‚ + <b>Force-disable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration" and use the set value instead.</b> + <b>ๅผบๅˆถ็ฆ็”จ openpilot ็š„โ€œๆ‘ฉๆ“ฆโ€ๅ’Œโ€œๆจชๅ‘ๅŠ ้€Ÿๅบฆโ€็š„ๅฎžๆ—ถ่‡ชๅŠจ่ฐƒๆ ก๏ผŒๅนถๆ”น็”จ่ฎพๅฎšๅ€ผใ€‚</b> - Always on Lateral - ๅง‹็ปˆๆจชๅ‘ + Force Torque Controller + ๅŠ›็ŸฉๆŽงๅˆถๅ™จ - openpilot's steering control stays active even when the brake or gas pedals are pressed.<br><br>Deactivation only occurs with the <b>Cruise Control</b> button. - openpilot็š„่ฝฌๅ‘ๆŽงๅˆถๅณไฝฟๅœจ่ธฉไธ‹ๅˆน่ฝฆๆˆ–ๆฒน้—จ่ธๆฟๆ—ถไปไฟๆŒๆฟ€ๆดปใ€‚<br><br>ๅชๆœ‰ๆŒ‰ไธ‹<b>ๅทก่ˆชๆŽงๅˆถ</b>ๆŒ‰้’ฎๆ—ถๆ‰ไผšๅœ็”จใ€‚ + <b>Use torque-based steering control instead of angle-based control for smoother lane keeping, especially in curves.</b> + <b>ไฝฟ็”จๅŸบไบŽๆ‰ญ็Ÿฉ็š„่ฝฌๅ‘ๆŽงๅˆถๆ›ฟไปฃๅŸบไบŽ่ง’ๅบฆ็š„ๆŽงๅˆถ๏ผŒไปฅๅฎž็Žฐๆ›ดๅนณ้กบ็š„่ฝฆ้“ไฟๆŒ๏ผŒๅฐคๅ…ถๅœจๅผฏ้“ไธญใ€‚</b> + + + Always On Lateral + ๅง‹็ปˆๅผ€ๅฏๆจชๅ‘ๆŽงๅˆถ + + + <b>openpilot's steering remains active even when the accelerator or brake pedals are pressed.</b> + <b>ๅณไฝฟ่ธฉไธ‹ๅŠ ้€Ÿ่ธๆฟๆˆ–ๅˆถๅŠจ่ธๆฟ๏ผŒopenpilot ็š„่ฝฌๅ‘ไปไฟๆŒๆฟ€ๆดปใ€‚</b> Enable With Cruise Control - ๅฏ็”จๅทก่ˆชๆŽงๅˆถ + ๅฏ็”จๅทก่ˆชๆŽงๅˆถ - Allow <b>Always on Lateral</b> to be active whenever <b>Cruise Control</b> is active, bypassing the need to enable openpilot first. - ๅ…่ฎธ<b>ๅง‹็ปˆๅผ€ๅฏๆจชๅ‘ๆŽงๅˆถ</b>ๅœจ<b>ๅทก่ˆชๆŽงๅˆถ</b>ๆฟ€ๆดปๆ—ถๅง‹็ปˆๅค„ไบŽๆดปๅŠจ็Šถๆ€๏ผŒๆ— ้œ€ๅ…ˆๅฏ็”จopenpilotใ€‚ + <b>Enable "Always On Lateral" whenever "Cruise Control" is on, even when openpilot is not engaged.</b> + <b>ๅœจๅฏ็”จโ€œๅทก่ˆชๆŽงๅˆถโ€ๆ—ถ๏ผŒๅณไฝฟๆœชๅฏ็”จ openpilot๏ผŒไนŸๅฏ็”จโ€œๅง‹็ปˆๅผ€ๅฏๆจชๅ‘โ€ใ€‚</b> - Enable With LKAS Button - ้€š่ฟ‡LKASๆŒ‰้’ฎๅฏ็”จ + Enable With LKAS + ไธŽLKASไธ€่ตทๅฏ็”จ - Allow <b>Always on Lateral</b> to be active whenever <b>LKAS</b> is active, bypassing the need to enable openpilot first. - ๅ…่ฎธ<b>ๅง‹็ปˆๅผ€ๅฏไพงๅ‘ๆŽงๅˆถ</b>ๅœจ<b>LKAS</b>ๆฟ€ๆดปๆ—ถๅง‹็ปˆๅค„ไบŽๆดปๅŠจ็Šถๆ€๏ผŒๆ— ้œ€ๅ…ˆๅฏ็”จopenpilotใ€‚ + <b>Enable "Always On Lateral" whenever "LKAS" is on, even when openpilot is not engaged.</b> + <b>ๅฝ“โ€œLKASโ€ๅผ€ๅฏๆ—ถ๏ผŒๅณไฝฟๆœชๅฏ็”จopenpilot๏ผŒไนŸๅฏ็”จโ€œๅง‹็ปˆๅผ€ๅฏๆจชๅ‘ๆŽงๅˆถโ€ใ€‚</b> - Pause on Brake Below - ๅœจไฝŽไบŽๅˆถๅŠจๆ—ถๆš‚ๅœ + Pause on Brake Press Below + ไฝŽ้€Ÿๆ—ถๅˆน่ฝฆๆŒ‰ไธ‹ๅณๆš‚ๅœ - Temporarily pause <b>Always on Lateral</b> below the set speed when braking. - ๅœจๅˆถๅŠจๆ—ถ๏ผŒๅœจ่ฎพๅฎš้€Ÿๅบฆไปฅไธ‹ๆš‚ๆ—ถๆš‚ๅœ<b>ๅง‹็ปˆๅผ€ๅฏไพงๅ‘</b>ใ€‚ + <b>Pause "Always On Lateral" below the set speed while the brake pedal is pressed.</b> + <b>ๅœจๆŒ‰ไธ‹ๅˆถๅŠจ่ธๆฟๆ—ถ๏ผŒไบŽ่ฎพๅฎš้€Ÿๅบฆไปฅไธ‹ๆš‚ๅœโ€œๅง‹็ปˆๅผ€ๅฏๆจชๅ‘โ€ใ€‚</b> Lane Changes - ่ฝฆ้“ๅ˜ๆ›ด + ๅ˜้“ - Customize how openpilot performs lane changes. - ่‡ชๅฎšไน‰openpilotๆ‰ง่กŒๅ˜้“็š„ๆ–นๅผใ€‚ + <b>Allow openpilot to change lanes.</b> + <b>ๅ…่ฎธ openpilot ๅ˜้“ใ€‚</b> Automatic Lane Changes - ่‡ชๅŠจๅ˜้“ + ่‡ชๅŠจๅ˜้“ - Change lanes automatically when the turn signal is on. No steering input needed! - ๅฝ“่ฝฌๅ‘็ฏๅผ€ๅฏๆ—ถ่‡ชๅŠจๅ˜้“ใ€‚ๆ— ้œ€่ฝฌๅ‘่พ“ๅ…ฅ๏ผ + <b>When the turn signal is on, openpilot will automatically change lanes.</b> No steering-wheel nudge required! + <b>ๅฝ“่ฝฌๅ‘็ฏๅผ€ๅฏๆ—ถ๏ผŒopenpilot ๅฐ†่‡ชๅŠจๅ˜้“ใ€‚</b> ๆ— ้œ€ๆ–นๅ‘็›˜ๆ็คบ๏ผ Lane Change Delay - ่ฝฆ้“ๅ˜ๆ›ดๅปถ่ฟŸ + ๅ˜้“ๅปถ่ฟŸ - Delay automatic lane changes by the set amount of time. - ๅฐ†่‡ชๅŠจๅ˜้“ๅปถ่ฟŸ่ฎพๅฎš็š„ๆ—ถ้—ดใ€‚ + <b>Delay between turn signal activation and the start of an automatic lane change.</b> + <b>่ฝฌๅ‘็ฏๆฟ€ๆดปไธŽ่‡ชๅŠจๅ˜้“ๅผ€ๅง‹ไน‹้—ด็š„ๅปถ่ฟŸใ€‚</b> Minimum Lane Change Speed - ๆœ€ไฝŽๆข้“้€Ÿๅบฆ + ๆœ€ไฝŽๅ˜้“้€Ÿๅบฆ - Minimum speed required for openpilot to perform a lane change. - openpilotๆ‰ง่กŒๅ˜้“ๆ‰€้œ€็š„ๆœ€ไฝŽ้€Ÿๅบฆใ€‚ + <b>Lowest speed at which openpilot will change lanes.</b> + <b>openpilot ไผšๅ˜้“็š„ๆœ€ไฝŽ้€Ÿๅบฆใ€‚</b> Minimum Lane Width - ๆœ€ๅฐ่ฝฆ้“ๅฎฝๅบฆ + ๆœ€ๅฐ่ฝฆ้“ๅฎฝๅบฆ - openpilot won't initiate a lane change into a lane narrower than this width. - openpilotไธไผšๅœจ่ฝฆ้“ๅฎฝๅบฆๅฐไบŽๆญคๅฎฝๅบฆๆ—ถๅ‘่ตทๅ˜้“ใ€‚ + <b>Prevent automatic lane changes into lanes narrower than the set width.</b> + <b>้˜ฒๆญข่‡ชๅŠจๅ˜้“่ฟ›ๅ…ฅๅฐไบŽ่ฎพๅฎšๅฎฝๅบฆ็š„่ฝฆ้“ใ€‚</b> One Lane Change Per Signal - ๆฏๆฌกไฟกๅทไป…ๅ˜ๆ›ดไธ€ๆก่ฝฆ้“ + ๆฏๆฌกๆ‰“็ฏไป…ๅ˜ๆ›ดไธ€ๆก่ฝฆ้“ - Limit lane changes to one per turn signal activation. - ๅฐ†่ฝฆ้“ๅ˜ๆ›ด้™ๅˆถไธบๆฏๆฌก่ฝฌๅ‘็ฏๆฟ€ๆดปไธ€ๆฌกใ€‚ + <b>Limit automatic lane changes to one per turn-signal activation.</b> + <b>ๅฐ†่‡ชๅŠจๅ˜้“้™ๅˆถไธบๆฏๆฌก่ฝฌๅ‘็ฏๆฟ€ๆดปไป…ไธ€ๆฌกใ€‚</b> Lateral Tuning - ๆจชๅ‘่ฐƒ่ฐ + ๆจชๅ‘่ฐƒๆ ก - Settings for fine-tuning openpilot's lateral controls. - ็”จไบŽๅพฎ่ฐƒopenpilotๆจชๅ‘ๆŽงๅˆถ็š„่ฎพ็ฝฎใ€‚ + <b>Miscellaneous steering control changes</b> to fine-tune how openpilot drives. + <b>ๅ…ถไป–่ฝฌๅ‘ๆŽงๅˆถๆ›ดๆ”น</b>็”จไบŽๅพฎ่ฐƒ openpilot ็š„้ฉพ้ฉถๆ–นๅผใ€‚ Force Turn Desires Below Lane Change Speed - ๅผบๅˆถๅฐ†ๆฌฒๆœ›้™่‡ณๅ˜้“้€Ÿๅบฆไปฅไธ‹ + ๅœจๅ˜้“้€Ÿๅบฆไปฅไธ‹ๅผบๅˆถ่ฝฌๅ‘้œ€ๆฑ‚ - Force turn desires below the minimum lane change speed to improve turning accuracy. - ๅผบๅˆถๅฐ†ไฝŽไบŽๆœ€ไฝŽๅ˜้“้€Ÿๅบฆ็š„่ฝฌๅ‘ๆฌฒๆœ›๏ผŒไปฅๆ้ซ˜่ฝฌๅ‘็ฒพๅบฆใ€‚ - - - Neural Network Feedforward (NNFF) - ็ฅž็ป็ฝ‘็ปœๅ‰้ฆˆ (NNFF) - - - Use <b>Twilsoncoโ€™s</b> <b>Neural Network FeedForward</b> model for smoother, model-based steering trained on your vehicle's data. - ไฝฟ็”จ<b>Twilsonco</b>็š„<b>็ฅž็ป็ฝ‘็ปœๅ‰้ฆˆ</b>ๆจกๅž‹๏ผŒ้€š่ฟ‡ๆ‚จ่ฝฆ่พ†็š„ๆ•ฐๆฎ่ฎญ็ปƒ๏ผŒๅฎž็Žฐๆ›ดๅนณๆป‘็š„ๅŸบไบŽๆจกๅž‹็š„่ฝฌๅ‘ใ€‚ - - - Smooth Curve Handling - ๅนณๆป‘ๆ›ฒ็บฟๅค„็† - - - Use <b>Twilsoncoโ€™s</b> torque-based adjustments to smooth out steering during curves. - ๅœจๆ›ฒ็บฟ่กŒ้ฉถๆ—ถไฝฟ็”จ<b>Twilsonco</b>็š„ๅŸบไบŽๆ‰ญ็Ÿฉ็š„่ฐƒๆ•ดๆฅๅนณๆป‘่ฝฌๅ‘ใ€‚ + <b>While driving below the minimum lane change speed with an active turn signal, instruct openpilot to turn left/right.</b> + <b>ๅœจไฝŽไบŽๆœ€ๅฐๅ˜้“้€Ÿๅบฆๅนถๅผ€ๅฏ่ฝฌๅ‘็ฏ่กŒ้ฉถๆ—ถ๏ผŒๆŒ‡็คบ openpilot ๅ‘ๅทฆ/ๅ‘ๅณ่ฝฌๅ‘ใ€‚</b> Quality of Life - ็”Ÿๆดป่ดจ้‡ + ็”Ÿๆดป่ดจ้‡ - Miscellaneous features to improve the steering experience. - ๆ”น่ฟ›่ฝฌๅ‘ไฝ“้ชŒ็š„ๅ…ถไป–ๅŠŸ่ƒฝใ€‚ + <b>Steering control changes to fine-tune how openpilot drives.</b> + <b>่ฝฌๅ‘ๆŽงๅˆถๆ›ดๆ”นๅฏๅพฎ่ฐƒ openpilot ็š„้ฉพ้ฉถๆ–นๅผใ€‚</b> Pause Steering Below - ๆš‚ๅœไปฅไธ‹่ฝฌๅ‘ + ๅœจไปฅไธ‹้€Ÿๅบฆไธ‹ๆš‚ๅœ่ฝฌๅ‘ - Temporarily pause steering control below the set speed. - ๅœจ่ฎพๅฎš้€Ÿๅบฆไปฅไธ‹ๆš‚ๆ—ถๆš‚ๅœ่ฝฌๅ‘ๆŽงๅˆถใ€‚ + <b>Pause steering below the set speed.</b> + <b>ๅœจ่ฎพๅฎš้€Ÿๅบฆไปฅไธ‹ๆš‚ๅœ่ฝฌๅ‘ใ€‚</b> Instant - ๅณๆ—ถ + ็žฌๆ—ถ second - ็ฌฌไบŒไธช + ็ง’ seconds - ็ง’ - - - Are you sure you want to completely reset your <b>Actuator Delay</b>? - ๆ‚จ็กฎๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎๆ‚จ็š„<b>ๆ‰ง่กŒๅ™จๅปถ่ฟŸ</b>ๅ—๏ผŸ - - - Are you sure you want to completely reset your <b>Friction</b>? - ๆ‚จ็กฎๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎๆ‚จ็š„<b>Friction</b>ๅ—๏ผŸ - - - Are you sure you want to completely reset your <b>Kp Factor</b>? - ๆ‚จ็กฎๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎๆ‚จ็š„<b>Kp Factor</b>ๅ—๏ผŸ - - - Are you sure you want to completely reset your <b>Lateral Accel</b>? - ๆ‚จ็กฎๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎ<b>Lateral Accel</b>ๅ—๏ผŸ - - - Are you sure you want to completely reset your <b>Steer Ratio</b>? - ๆ‚จ็กฎๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎๆ‚จ็š„<b>่ฝฌๅ‘ๆฏ”</b>ๅ—๏ผŸ - - - Off - ๅ…ณ - - - foot - ่„š - - - feet - ่„š - - - mph - mph - - - meter - ็ฑณ - - - meters - ็ฑณ - - - km/h - km/h + ็ง’ Turn Signal Only - ไป…้™่ฝฌๅ‘็ฏ + ไป…่ฝฌๅ‘็ฏ + + + Reset <b>Actuator Delay</b> to its default value? + ๅฐ†<b>ๆ‰ง่กŒๅ™จๅปถ่ฟŸ</b>้‡็ฝฎไธบ้ป˜่ฎคๅ€ผ๏ผŸ + + + Reset <b>Friction</b> to its default value? + ๅฐ†<b>Friction</b>้‡็ฝฎไธบ้ป˜่ฎคๅ€ผ๏ผŸ + + + Reset <b>Kp Factor</b> to its default value? + ๅฐ†<b>Kp ็ณปๆ•ฐ</b>้‡็ฝฎไธบ้ป˜่ฎคๅ€ผ๏ผŸ + + + Reset <b>Lateral Accel</b> to its default value? + ๅฐ†<b>ๆจชๅ‘ๅŠ ้€Ÿๅบฆ</b>้‡็ฝฎไธบ้ป˜่ฎคๅ€ผ๏ผŸ + + + Reset <b>Steer Ratio</b> to its default value? + ๅฐ†<b>่ฝฌๅ‘ๆฏ”</b>้‡็ฝฎไธบ้ป˜่ฎคๅ€ผ๏ผŸ + + + Lateral Accel (Default: %1) + ๆจชๅ‘ๅŠ ้€Ÿๅบฆ๏ผˆ้ป˜่ฎค๏ผš%1๏ผ‰ + + + Off + ๅ…ณ้—ญ + + + foot + ่‹ฑๅฐบ + + + feet + ่‹ฑๅฐบ + + + mph + ่‹ฑ้‡Œ/ๅฐๆ—ถ + + + meter + ็ฑณ + + + meters + ็ฑณ + + + km/h + km/h + + + Neural Network Feedforward (NNFF) + ็ฅž็ป็ฝ‘็ปœๅ‰้ฆˆ๏ผˆNNFF๏ผ‰ + + + <b>Twilsonco's "Neural Network FeedForward" model controller for smoother, model-based steering trained on your vehicle's data.</b> + <b>Twilsonco ็š„โ€œNeural Network FeedForwardโ€ๆจกๅž‹ๆŽงๅˆถๅ™จ๏ผŒๅŸบไบŽๆจกๅž‹็š„ๆ›ดๅนณ้กบ่ฝฌๅ‘๏ผŒไฝฟ็”จๆ‚จ่ฝฆ่พ†็š„ๆ•ฐๆฎ่ฟ›่กŒ่ฎญ็ปƒใ€‚</b> + + + Smooth Curve Handling + ๅนณ็จณๅผฏ้“ๅค„็† + + + <b>Twilsonco's torque-based adjustments to smoothen out steering in curves.</b> + <b>Twilsonco ๅŸบไบŽๆ‰ญ็Ÿฉ็š„่ฐƒๆ•ด๏ผŒ็”จไบŽๅœจๅผฏ้“ไธญๅนณๆป‘่ฝฌๅ‘ใ€‚</b> FrogPilotLongitudinalPanel - - Conditional Experimental Mode - ๆกไปถๅฎž้ชŒๆจกๅผ - - - Automatically switch to <b>Experimental Mode</b> when set conditions are met. - ๅฝ“ๆปก่ถณ่ฎพๅฎšๆกไปถๆ—ถ่‡ชๅŠจๅˆ‡ๆขๅˆฐ<b>ๅฎž้ชŒๆจกๅผ</b>ใ€‚ - - - Below - ไธ‹้ข - - - Switch to <b>Experimental Mode</b> when driving below this speed. - ๅฝ“่ฝฆ้€ŸไฝŽไบŽๆญค้€Ÿๅบฆๆ—ถ๏ผŒๅˆ‡ๆขๅˆฐ<b>ๅฎž้ชŒๆจกๅผ</b>ใ€‚ - - - Curve Detected Ahead - ๅ‰ๆ–นๅ‘็Žฐๅผฏ้“ - - - Switch to <b>Experimental Mode</b> when a curve is detected ahead. Useful for letting the model choose the appropriate speed for the curve. - ๅฝ“ๆฃ€ๆต‹ๅˆฐๅ‰ๆ–นๆœ‰ๆ›ฒ็บฟๆ—ถ๏ผŒๅˆ‡ๆขๅˆฐ<b>ๅฎž้ชŒๆจกๅผ</b>ใ€‚่ฟ™ๆœ‰ๅŠฉไบŽ่ฎฉๆจกๅž‹้€‰ๆ‹ฉ้€‚ๅˆๆ›ฒ็บฟ็š„้€Ÿๅบฆใ€‚ - - - Lead Detected Ahead - ๅ‰ๆ–นๆฃ€ๆต‹ๅˆฐ้“… - - - Switch to <b>Experimental Mode</b> when a slower or stopped vehicle is detected ahead. Can improve braking smoothness and reliability on some vehicles. - ๅฝ“ๆฃ€ๆต‹ๅˆฐๅ‰ๆ–นๆœ‰่พƒๆ…ขๆˆ–ๅœๆญข็š„่ฝฆ่พ†ๆ—ถ๏ผŒๅˆ‡ๆขๅˆฐ<b>ๅฎž้ชŒๆจกๅผ</b>ใ€‚ๅฏไปฅๆ้ซ˜ๆŸไบ›่ฝฆ่พ†็š„ๅˆถๅŠจๅนณ้กบๆ€งๅ’Œๅฏ้ ๆ€งใ€‚ - - - Navigation Data - ๅฏผ่ˆชๆ•ฐๆฎ - - - Switch to <b>Experimental Mode</b> when approaching intersections or turns on the active route while using <b>Navigate on openpilot (NOO)</b>. Useful for letting the model choose the appropriate speed for upcoming navigation maneuvers. - ๅœจไฝฟ็”จ<b>openpilotๅฏผ่ˆช (NOO)</b>ๆ—ถ๏ผŒๆŽฅ่ฟ‘ไบคๅ‰่ทฏๅฃๆˆ–่ฝฌๅผฏๅค„ๅˆ‡ๆขๅˆฐ<b>ๅฎž้ชŒๆจกๅผ</b>ใ€‚่ฟ™ๆœ‰ๅŠฉไบŽ่ฎฉๆจกๅž‹้€‰ๆ‹ฉๅณๅฐ†ๅˆฐๆฅ็š„ๅฏผ่ˆชๆ“ไฝœ็š„้€‚ๅฝ“้€Ÿๅบฆใ€‚ - - - openpilot Wants to Stop In - openpilotๆƒณ่ฆๅœๆญข - - - Switch to <b>Experimental Mode</b> when openpilot wants to stop within the set amount of time. This is typically triggered by the driving model "detecting" a red light or stop sign. - ๅฝ“openpilotๅธŒๆœ›ๅœจ่ฎพๅฎš็š„ๆ—ถ้—ดๅ†…ๅœๆญขๆ—ถ๏ผŒๅˆ‡ๆขๅˆฐ<b>ๅฎž้ชŒๆจกๅผ</b>ใ€‚่ฟ™้€šๅธธๆ˜ฏ็”ฑ้ฉพ้ฉถๆจกๅž‹โ€œๆฃ€ๆต‹ๅˆฐโ€็บข็ฏๆˆ–ๅœ่ฝฆๆ ‡ๅฟ—่งฆๅ‘็š„ใ€‚ - - - Turn Signal Below - ่ฝฌๅ‘็ฏไธ‹ๆ–น - - - Switch to <b>Experimental Mode</b> when using a turn signal below the set speed. Useful for letting the model choose the appropriate speed for upcoming left or right turns. - ๅœจไฝฟ็”จ่ฝฌๅ‘ไฟกๅทไธ”ไฝŽไบŽ่ฎพๅฎš้€Ÿๅบฆๆ—ถๅˆ‡ๆขๅˆฐ<b>ๅฎž้ชŒๆจกๅผ</b>ใ€‚่ฟ™ๅฏนไบŽ่ฎฉๆจกๅž‹้€‰ๆ‹ฉๅณๅฐ†ๅˆฐๆฅ็š„ๅทฆ่ฝฌๆˆ–ๅณ่ฝฌ็š„้€‚ๅฝ“้€Ÿๅบฆๅพˆๆœ‰็”จใ€‚ - - - Status Widget - ็Šถๆ€ๅฐ้ƒจไปถ - - - Show the <b>Conditional Experimental Mode</b> status on the driving screen. - ๅœจ้ฉพ้ฉถๅฑๅน•ไธŠๆ˜พ็คบ<b>ๆกไปถๅฎž้ชŒๆจกๅผ</b>็Šถๆ€ใ€‚ - - - Show <b>Curve Speed Control</b>'s desired speed on the driving screen. - ๅœจ้ฉพ้ฉถๅฑๅน•ไธŠๆ˜พ็คบ<b>ๆ›ฒ็บฟ้€ŸๅบฆๆŽงๅˆถ</b>็š„ๆœŸๆœ›้€Ÿๅบฆใ€‚ - - - Customize Driving Personalities - ่‡ชๅฎšไน‰้ฉพ้ฉถไธชๆ€ง - - - Customize the personality profiles to your driving style. - ๆ นๆฎๆ‚จ็š„้ฉพ้ฉถ้ฃŽๆ ผ่‡ชๅฎšไน‰ไธชๆ€งๅŒ–ๆกฃๆกˆใ€‚ - - - Traffic Personality - ไบค้€šไธชๆ€ง - - - Customize the <b>Traffic</b> personality profile. Tailored for navigating through traffic. - ่‡ชๅฎšไน‰<b>ไบค้€š</b>ไธชๆ€งๆกฃๆกˆใ€‚ไธ“ไธบๅœจไบค้€šไธญๅฏผ่ˆช่€Œ่ฎพ่ฎกใ€‚ - - - Following Distance - ่ทŸ่ฝฆ่ท็ฆป - - - The minimum following distance while in <b>Traffic Mode</b>. openpilot will dynamically adjust between this value and the value in the <b>Aggressive</b> profile based on your current speed. - ๅœจ<b>ไบค้€šๆจกๅผ</b>ไธ‹็š„ๆœ€ๅฐ่ทŸ่ฝฆ่ท็ฆปใ€‚openpilotๅฐ†ๆ นๆฎๆ‚จๅฝ“ๅ‰็š„้€Ÿๅบฆๅœจๆญคๅ€ผๅ’Œ<b>ๆฟ€่ฟ›</b>้…็ฝฎๆ–‡ไปถไธญ็š„ๅ€ผไน‹้—ดๅŠจๆ€่ฐƒๆ•ดใ€‚ - - - Acceleration Sensitivity - ๅŠ ้€Ÿๅบฆ็ตๆ•ๅบฆ - - - How sensitive openpilot is to changes in acceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilotๅœจ<b>ไบค้€šๆจกๅผ</b>ไธ‹ๅฏนๅŠ ้€Ÿๅบฆๅ˜ๅŒ–็š„ๆ•ๆ„Ÿๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผไผšๅฏผ่‡ดๆ›ดๅนณ็จณใ€ๆ›ดๆธ่ฟ›็š„ๅŠ ้€Ÿ๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ดๅฟซ้€Ÿใ€ๆ›ด็ตๆ•็š„ๅ˜ๅŒ–๏ผŒ่ฟ™ๅฏ่ƒฝไผšๆ„Ÿ่ง‰็ช็„ถใ€‚ - - - Deceleration Sensitivity - ๅ‡้€Ÿ็ตๆ•ๅบฆ - - - How sensitive openpilot is to changes in deceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilotๅœจ<b>ไบค้€šๆจกๅผ</b>ไธ‹ๅฏนๅ‡้€Ÿๅ˜ๅŒ–็š„ๆ•ๆ„Ÿๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผไผšๅฏผ่‡ดๆ›ดๅนณ็จณใ€ๆ›ดๆธ่ฟ›็š„ๅ‡้€Ÿ๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ดๅฟซ้€Ÿใ€ๆ›ด็ตๆ•็š„ๅ˜ๅŒ–๏ผŒๅฏ่ƒฝไผšๆ„Ÿ่ง‰็ช็„ถใ€‚ - - - Safety Distance Sensitivity - ๅฎ‰ๅ…จ่ท็ฆปๆ•ๆ„Ÿๆ€ง - - - How cautious openpilot is around other vehicles or obstacles while in <b>Traffic Mode</b>. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - openpilotๅœจ<b>ไบค้€šๆจกๅผ</b>ไธ‹ๅฏนๅ…ถไป–่ฝฆ่พ†ๆˆ–้šœ็ข็‰ฉ็š„่ฐจๆ…Ž็จ‹ๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผไผšๅขžๅŠ ่ทŸ่ฝฆ่ท็ฆปๅนถไผ˜ๅ…ˆ่€ƒ่™‘ๅฎ‰ๅ…จ๏ผŒไปŽ่€Œๅฏผ่‡ดๆ›ด่ฐจๆ…Ž็š„้ฉพ้ฉถ๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ด่ฟ‘็š„่ทŸ่ฝฆ๏ผŒไฝ†ๅฏ่ƒฝไผšๅ‡ๅฐ‘ๅๅบ”ๆ—ถ้—ดใ€‚ - - - Speed Increase Response - ้€Ÿๅบฆๆๅ‡ๅ“ๅบ” - - - How quickly openpilot increases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - ๅœจ<b>ไบค้€šๆจกๅผ</b>ไธ‹๏ผŒopenpilotๅขžๅŠ ้€Ÿๅบฆ็š„ๅฟซๆ…ขใ€‚่พƒ้ซ˜็š„ๅ€ผ็กฎไฟๅœจๅŠ ้€Ÿๆ—ถ้€Ÿๅบฆๅ˜ๅŒ–ๆ›ดๅนณ็จณใ€ๆ›ดๆธ่ฟ›๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ดๅฟซ้€Ÿใ€ๆ›ด็ตๆ•็š„ๅ˜ๅŒ–๏ผŒๅฏ่ƒฝไผšๆ„Ÿ่ง‰็ช็„ถใ€‚ - - - Speed Decrease Response - ้€Ÿๅบฆ้™ไฝŽๅ“ๅบ” - - - How quickly openpilot decreases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilotๅœจ<b>ไบค้€šๆจกๅผ</b>ไธ‹ๅ‡้€Ÿ็š„้€Ÿๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผๅฏ็กฎไฟๅœจๅ‡้€Ÿๆ—ถ้€Ÿๅบฆๅ˜ๅŒ–ๆ›ดๅนณ็จณใ€ๆ›ดๆธ่ฟ›๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ดๅฟซ้€Ÿใ€ๆ›ด็ตๆ•็š„ๅ˜ๅŒ–๏ผŒไฝ†ๅฏ่ƒฝๆ„Ÿ่ง‰็ช็„ถใ€‚ - - - Reset Settings - ้‡็ฝฎ่ฎพ็ฝฎ - - - Reset <b>Traffic Mode</b> settings to default values. - ๅฐ†<b>ๆต้‡ๆจกๅผ</b>่ฎพ็ฝฎ้‡็ฝฎไธบ้ป˜่ฎคๅ€ผใ€‚ - - - Aggressive Personality - ๆ”ปๅ‡ปๆ€งไบบๆ ผ - - - Customize the <b>Aggressive</b> personality profile. Designed for a more assertive driving style. - ่‡ชๅฎšไน‰<b>ๆฟ€่ฟ›</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถใ€‚ไธ“ไธบๆ›ด่‡ชไฟก็š„้ฉพ้ฉถ้ฃŽๆ ผ่ฎพ่ฎกใ€‚ - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Aggressive</b> personality profile.<br><br>Default: 1.25 seconds. - ๅœจไฝฟ็”จ<b>ๆฟ€่ฟ›</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒopenpilotๅฐ†่ทŸ้šๅ‰่ฝฆๅคšๅฐ‘็ง’ใ€‚<br><br>้ป˜่ฎค๏ผš1.25็ง’ใ€‚ - - - How sensitive openpilot is to changes in acceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ๅœจไฝฟ็”จ<b>ๆฟ€่ฟ›</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒopenpilotๅฏนๅŠ ้€Ÿๅ˜ๅŒ–็š„ๆ•ๆ„Ÿๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผไผšๅฏผ่‡ดๆ›ดๅนณ็จณใ€ๆ›ดๆธ่ฟ›็š„ๅŠ ้€Ÿ๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ดๅฟซ้€Ÿใ€ๆ›ด็ตๆ•็š„ๅ˜ๅŒ–๏ผŒๅฏ่ƒฝไผšๆ„Ÿ่ง‰็ช็„ถใ€‚ - - - How sensitive openpilot is to changes in deceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ๅœจไฝฟ็”จ<b>ๆฟ€่ฟ›</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒopenpilotๅฏนๅ‡้€Ÿๅ˜ๅŒ–็š„ๆ•ๆ„Ÿๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผไผšๅฏผ่‡ดๆ›ดๅนณ็จณใ€ๆ›ดๆธ่ฟ›็š„ๅ‡้€Ÿ๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ดๅฟซ้€Ÿใ€ๆ›ด็ตๆ•็š„ๅ˜ๅŒ–๏ผŒๅฏ่ƒฝไผšๆ„Ÿ่ง‰็ช็„ถใ€‚ - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Aggressive</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - ๅœจไฝฟ็”จ<b>ๆฟ€่ฟ›</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒopenpilotๅœจๅ…ถไป–่ฝฆ่พ†ๆˆ–้šœ็ข็‰ฉๅ‘จๅ›ด็š„่ฐจๆ…Ž็จ‹ๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผไผšๅขžๅŠ ่ทŸ่ฝฆ่ท็ฆปๅนถไผ˜ๅ…ˆ่€ƒ่™‘ๅฎ‰ๅ…จ๏ผŒไปŽ่€Œๅฏผ่‡ดๆ›ด่ฐจๆ…Ž็š„้ฉพ้ฉถ๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ด่ฟ‘็š„่ทŸ่ฝฆ๏ผŒไฝ†ๅฏ่ƒฝไผšๅ‡ๅฐ‘ๅๅบ”ๆ—ถ้—ดใ€‚ - - - How quickly openpilot increases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilotๅœจไฝฟ็”จ<b>ๆฟ€่ฟ›</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถๆ—ถๅขžๅŠ ้€Ÿๅบฆ็š„้€Ÿๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผๅฏ็กฎไฟๅœจๅŠ ้€Ÿๆ—ถ้€Ÿๅบฆๅ˜ๅŒ–ๆ›ดๅนณ็จณใ€ๆ›ดๆธ่ฟ›๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ดๅฟซ้€Ÿใ€ๆ›ด็ตๆ•็š„ๅ˜ๅŒ–๏ผŒๅฏ่ƒฝไผšๆ„Ÿ่ง‰็ช็„ถใ€‚ - - - How quickly openpilot decreases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - ไฝฟ็”จ<b>ๆฟ€่ฟ›</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒopenpilot้™ไฝŽ้€Ÿๅบฆ็š„้€Ÿๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผๅฏ็กฎไฟๅœจๅ‡้€Ÿๆ—ถๆ›ดๅนณ็จณใ€ๆ›ดๆธ่ฟ›็š„้€Ÿๅบฆๅ˜ๅŒ–๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ดๅฟซ้€Ÿใ€ๆ›ด็ตๆ•็š„ๅ˜ๅŒ–๏ผŒๅฏ่ƒฝไผšๆ„Ÿ่ง‰็ช็„ถใ€‚ - - - Reset the <b>Aggressive</b> personality profile settings to default values. - ๅฐ†<b>ๆฟ€่ฟ›</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถ่ฎพ็ฝฎ้‡็ฝฎไธบ้ป˜่ฎคๅ€ผใ€‚ - - - Standard Personality - ๆ ‡ๅ‡†ไบบๆ ผ - - - Customize the <b>Standard</b> personality profile. Designed for a balanced driving style. - ่‡ชๅฎšไน‰<b>ๆ ‡ๅ‡†</b>ไธชๆ€งๅŒ–้…็ฝฎๆ–‡ไปถใ€‚ไธ“ไธบๅนณ่กก็š„้ฉพ้ฉถ้ฃŽๆ ผ่ฎพ่ฎกใ€‚ - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Standard</b> personality profile.<br><br>Default: 1.45 seconds. - openpilotๅœจไฝฟ็”จ<b>ๆ ‡ๅ‡†</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒๅฐ†ๅœจๅคšๅฐ‘็ง’ๅ†…่ทŸ้šๅ‰่ฝฆใ€‚<br><br>้ป˜่ฎค๏ผš1.45็ง’ใ€‚ - - - How sensitive openpilot is to changes in acceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ๅœจไฝฟ็”จ<b>ๆ ‡ๅ‡†</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒopenpilotๅฏนๅŠ ้€Ÿๅ˜ๅŒ–็š„ๆ•ๆ„Ÿๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผไผšๅฏผ่‡ดๆ›ดๅนณ็จณใ€ๆ›ดๆธ่ฟ›็š„ๅŠ ้€Ÿ๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ดๅฟซ้€Ÿใ€ๆ›ด็ตๆ•็š„ๅ˜ๅŒ–๏ผŒๅฏ่ƒฝไผšๆ„Ÿ่ง‰็ช็„ถใ€‚ - - - How sensitive openpilot is to changes in deceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ๅœจไฝฟ็”จ<b>ๆ ‡ๅ‡†</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒopenpilotๅฏนๅ‡้€Ÿๅ˜ๅŒ–็š„ๆ•ๆ„Ÿๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผไผšๅฏผ่‡ดๆ›ดๅนณๆป‘ใ€ๆ›ดๆธ่ฟ›็š„ๅ‡้€Ÿ๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ดๅฟซ้€Ÿใ€ๆ›ด็ตๆ•็š„ๅ˜ๅŒ–๏ผŒๅฏ่ƒฝไผšๆ„Ÿ่ง‰็ช็„ถใ€‚ - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Standard</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - ๅœจไฝฟ็”จ<b>ๆ ‡ๅ‡†</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒopenpilotๅœจๅ…ถไป–่ฝฆ่พ†ๆˆ–้šœ็ข็‰ฉๅ‘จๅ›ด็š„่ฐจๆ…Ž็จ‹ๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผไผšๅขžๅŠ ่ทŸ่ฝฆ่ท็ฆปๅนถไผ˜ๅ…ˆ่€ƒ่™‘ๅฎ‰ๅ…จ๏ผŒไปŽ่€Œๅฏผ่‡ดๆ›ด่ฐจๆ…Ž็š„้ฉพ้ฉถ๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ด่ฟ‘็š„่ทŸ่ฝฆ๏ผŒไฝ†ๅฏ่ƒฝไผšๅ‡ๅฐ‘ๅๅบ”ๆ—ถ้—ดใ€‚ - - - How quickly openpilot increases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - ๅœจไฝฟ็”จ<b>ๆ ‡ๅ‡†</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒopenpilotๅขžๅŠ ้€Ÿๅบฆ็š„้€Ÿๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผๅฏ็กฎไฟๅœจๅŠ ้€Ÿๆ—ถ้€Ÿๅบฆๅ˜ๅŒ–ๆ›ดๅนณ็จณใ€ๆ›ดๆธ่ฟ›๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ดๅฟซ้€Ÿใ€ๆ›ด็ตๆ•็š„ๅ˜ๅŒ–๏ผŒๅฏ่ƒฝไผšๆ„Ÿ่ง‰็ช็„ถใ€‚ - - - How quickly openpilot decreases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - ๅœจไฝฟ็”จ<b>ๆ ‡ๅ‡†</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒopenpilot้™ไฝŽ้€Ÿๅบฆ็š„้€Ÿๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผๅฏ็กฎไฟๅœจๅ‡้€Ÿๆ—ถๆ›ดๅนณ็จณใ€ๆ›ดๆธ่ฟ›็š„้€Ÿๅบฆๅ˜ๅŒ–๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ดๅฟซ้€Ÿใ€ๆ›ด็ตๆ•็š„ๅ˜ๅŒ–๏ผŒๅฏ่ƒฝไผšๆ„Ÿ่ง‰็ช็„ถใ€‚ - - - Reset the <b>Standard</b> personality profile settings to default values. - ๅฐ†<b>ๆ ‡ๅ‡†</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถ่ฎพ็ฝฎ้‡็ฝฎไธบ้ป˜่ฎคๅ€ผใ€‚ - - - Relaxed Personality - ๆ”พๆพ็š„ๆ€งๆ ผ - - - Customize the <b>Relaxed</b> personality profile. Designed for a more laid-back driving style. - ่‡ชๅฎšไน‰<b>่ฝปๆพ</b>ไธชๆ€งๅŒ–้…็ฝฎๆ–‡ไปถใ€‚ไธ“ไธบๆ›ดๆ‚ ้—ฒ็š„้ฉพ้ฉถ้ฃŽๆ ผ่ฎพ่ฎกใ€‚ - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Relaxed</b> personality profile.<br><br>Default: 1.75 seconds. - ๅœจไฝฟ็”จ<b>ๆ”พๆพ</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒopenpilotๅฐ†ๅœจๅ‰่ฝฆๅŽ่ทŸ้šๅคšๅฐ‘็ง’ใ€‚<br><br>้ป˜่ฎค๏ผš1.75็ง’ใ€‚ - - - How sensitive openpilot is to changes in acceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ๅœจไฝฟ็”จ<b>ๆ”พๆพ</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒopenpilot ๅฏนๅŠ ้€Ÿๅบฆๅ˜ๅŒ–็š„ๆ•ๆ„Ÿๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผไผšๅฏผ่‡ดๆ›ดๅนณ็จณใ€ๆ›ดๆธ่ฟ›็š„ๅŠ ้€Ÿ๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ดๅฟซ้€Ÿใ€ๆ›ด็ตๆ•็š„ๅ˜ๅŒ–๏ผŒๅฏ่ƒฝไผšๆ„Ÿ่ง‰็ช็„ถใ€‚ - - - How sensitive openpilot is to changes in deceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ๅœจไฝฟ็”จ<b>ๆ”พๆพ</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒopenpilotๅฏนๅ‡้€Ÿๅ˜ๅŒ–็š„ๆ•ๆ„Ÿๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผไผšๅฏผ่‡ดๆ›ดๅนณ็จณใ€ๆ›ดๆธ่ฟ›็š„ๅ‡้€Ÿ๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ดๅฟซ้€Ÿใ€ๆ›ด็ตๆ•็š„ๅ˜ๅŒ–๏ผŒ่ฟ™ๅฏ่ƒฝไผšๆ„Ÿ่ง‰็ช็„ถใ€‚ - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Relaxed</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - ๅœจไฝฟ็”จ<b>ๆ”พๆพ</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒopenpilotๅœจๅ…ถไป–่ฝฆ่พ†ๆˆ–้šœ็ข็‰ฉๅ‘จๅ›ด็š„่ฐจๆ…Ž็จ‹ๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผไผšๅขžๅŠ ่ทŸ่ฝฆ่ท็ฆปๅนถไผ˜ๅ…ˆ่€ƒ่™‘ๅฎ‰ๅ…จ๏ผŒไปŽ่€Œๅฏผ่‡ดๆ›ด่ฐจๆ…Ž็š„้ฉพ้ฉถ๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ด่ฟ‘็š„่ทŸ่ฝฆ๏ผŒไฝ†ๅฏ่ƒฝไผšๅ‡ๅฐ‘ๅๅบ”ๆ—ถ้—ดใ€‚ - - - How quickly openpilot increases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - ๅœจไฝฟ็”จ<b>ๆ”พๆพ</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒopenpilotๅขžๅŠ ้€Ÿๅบฆ็š„้€Ÿๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผๅฏ็กฎไฟๅœจๅŠ ้€Ÿๆ—ถๆ›ดๅนณ็จณใ€ๆ›ดๆธ่ฟ›็š„้€Ÿๅบฆๅ˜ๅŒ–๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ดๅฟซ้€Ÿใ€ๆ›ด็ตๆ•็š„ๅ˜ๅŒ–๏ผŒ่ฟ™ๅฏ่ƒฝไผšๆ„Ÿ่ง‰็ช็„ถใ€‚ - - - How quickly openpilot decreases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - ไฝฟ็”จ<b>ๆ”พๆพ</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒopenpilot้™ไฝŽ้€Ÿๅบฆ็š„้€Ÿๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผๅฏ็กฎไฟๅœจๅ‡้€Ÿๆ—ถๆ›ดๅนณ็จณใ€ๆ›ดๆธ่ฟ›็š„้€Ÿๅบฆๅ˜ๅŒ–๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผๅˆ™ๅ…่ฎธๆ›ดๅฟซ้€Ÿใ€ๆ›ด็ตๆ•็š„ๅ˜ๅŒ–๏ผŒๅฏ่ƒฝไผšๆ„Ÿ่ง‰็ช็„ถใ€‚ - - - Reset the <b>Relaxed</b> personality profile settings to default values. - ๅฐ†<b>ๆ”พๆพ</b>ไธชๆ€ง้…็ฝฎๆ–‡ไปถ่ฎพ็ฝฎ้‡็ฝฎไธบ้ป˜่ฎคๅ€ผใ€‚ - - - Longitudinal Tuning - ็บตๅ‘่ฐƒ่ฐ - - - Settings that control how openpilot manages speed and acceleration. - ๆŽงๅˆถopenpilotๅฆ‚ไฝ•็ฎก็†้€Ÿๅบฆๅ’ŒๅŠ ้€Ÿๅบฆ็š„่ฎพ็ฝฎใ€‚ - - - Acceleration Profile - ๅŠ ้€Ÿๅบฆๆ›ฒ็บฟ - - - Enable either a sporty or eco-friendly acceleration profile. <b>Sport+</b> aims to make openpilot accelerate as fast as possible! - ๅฏ็”จ่ฟๅŠจๅž‹ๆˆ–็Žฏไฟๅž‹ๅŠ ้€Ÿๆจกๅผใ€‚<b>Sport+</b>ๆ—จๅœจ่ฎฉopenpilotๅฐฝๅฏ่ƒฝๅฟซๅœฐๅŠ ้€Ÿ๏ผ - - - Deceleration Profile - ๅ‡้€Ÿๆ›ฒ็บฟ - - - Enable either a sporty or eco-friendly deceleration profile. - ๅฏ็”จ่ฟๅŠจๅž‹ๆˆ–็Žฏไฟๅž‹ๅ‡้€Ÿ้…็ฝฎๆ–‡ไปถใ€‚ - - - Human-Like Acceleration - ็ฑปไบบๅŠ ้€Ÿๅบฆ - - - Use the lead vehicle's acceleration rate when at a takeoff and ramp off the acceleration rate when approaching the maximum set speed for a more "human-like" driving experience. - ๅœจ่ตทๆญฅๆ—ถไฝฟ็”จ้ข†่ฝฆ็š„ๅŠ ้€Ÿ็އ๏ผŒๅนถๅœจๆŽฅ่ฟ‘่ฎพๅฎš็š„ๆœ€้ซ˜้€Ÿๅบฆๆ—ถ้€ๆธ้™ไฝŽๅŠ ้€Ÿ็އ๏ผŒไปฅๅฎž็Žฐๆ›ดโ€œไบบๆ€งๅŒ–โ€็š„้ฉพ้ฉถไฝ“้ชŒใ€‚ - - - Human-Like Approach Behind Leads - ็บฟ็ดข่ƒŒๅŽ็š„ไบบๆ€งๅŒ–ๆ–นๆณ• - - - Dynamically adjust the desired following distance when approaching slower or stopped vehicles for a more "human-like" driving experience. - ๅœจๆŽฅ่ฟ‘่พƒๆ…ขๆˆ–ๅœๆญข็š„่ฝฆ่พ†ๆ—ถๅŠจๆ€่ฐƒๆ•ดๆ‰€้œ€็š„่ทŸ่ฝฆ่ท็ฆป๏ผŒไปฅๅฎž็Žฐๆ›ดโ€œไบบๆ€งๅŒ–โ€็š„้ฉพ้ฉถไฝ“้ชŒใ€‚ - - - Lead Detection Confidence - ๆฝœๅœจๅฎขๆˆทๆฃ€ๆต‹็ฝฎไฟกๅบฆ - - - How sensitive openpilot is to detecting vehicles ahead. A lower value can help detect vehicles sooner and from farther away, but increases the chance openpilot mistakes other objects for vehicles. - openpilotๅฏนๆฃ€ๆต‹ๅ‰ๆ–น่ฝฆ่พ†็š„ๆ•ๆ„Ÿๅบฆใ€‚่พƒไฝŽ็š„ๅ€ผๅฏไปฅๅธฎๅŠฉๆ›ดๆ—ฉใ€ๆ›ด่ฟœๅœฐๆฃ€ๆต‹ๅˆฐ่ฝฆ่พ†๏ผŒไฝ†ๅขžๅŠ ไบ†openpilotๅฐ†ๅ…ถไป–็‰ฉไฝ“่ฏฏ่ฎคไธบ่ฝฆ่พ†็š„ๅฏ่ƒฝๆ€งใ€‚ - - - Maximum Acceleration Rate - ๆœ€ๅคงๅŠ ้€Ÿๅบฆ็އ - - - Set a cap on how fast openpilot can accelerate. - ้™ๅˆถopenpilot็š„ๅŠ ้€Ÿ้€Ÿๅบฆใ€‚ - - - "Taco Bell Run" Turn Speed Hack - โ€œTaco Bell Runโ€ ่ฝฌ้€Ÿ้ป‘ๅฎข - - - The turn speed hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to slow down when taking left/right turns for smoother turns. - Translation A - - - Quality of Life - ็”Ÿๆดป่ดจ้‡ - - - Miscellaneous features to improve the acceleration and braking experience. - ๆ”น่ฟ›ๅŠ ้€Ÿๅ’ŒๅˆถๅŠจไฝ“้ชŒ็š„ๅ…ถไป–ๅŠŸ่ƒฝใ€‚ - - - Cruise Interval - ๅทก่ˆช้—ด้š” - - - The interval used when changing the cruise control speed. - ๆ›ดๆ”นๅทก่ˆชๆŽงๅˆถ้€Ÿๅบฆๆ—ถไฝฟ็”จ็š„้—ด้š”ใ€‚ - - - Cruise Interval (Long Press) - ๅทก่ˆช้—ด้š”๏ผˆ้•ฟๆŒ‰๏ผ‰ - - - The interval used when changing the cruise control speed while holding down the button for 0.5+ seconds. - ๆŒ‰ไฝๆŒ‰้’ฎ่ถ…่ฟ‡0.5็ง’ๆ—ถๆ›ดๆ”นๅทก่ˆชๆŽงๅˆถ้€Ÿๅบฆๆ‰€็”จ็š„้—ด้š”ใ€‚ - - - Force Keep openpilot in the Standstill State - ๅผบๅˆถไฟๆŒopenpilotๅœจ้™ๆญข็Šถๆ€ - - - Keep openpilot in the standstill state until either the gas pedal or <b>resume</b> button is pressed. - ไฟๆŒopenpilotๅœจ้™ๆญข็Šถๆ€๏ผŒ็›ดๅˆฐๆŒ‰ไธ‹ๆฒน้—จ่ธๆฟๆˆ–<b>ๆขๅค</b>ๆŒ‰้’ฎใ€‚ - - - Force Stop for "Detected" Stop Lights/Signs - ๅฏนโ€œๆฃ€ๆต‹ๅˆฐโ€็š„็บข็ปฟ็ฏ/ๅœ่ฝฆๆ ‡ๅฟ—ๅผบๅˆถๅœ่ฝฆ - - - Force a stop whenever openpilot <b>detects</b> a potential red light/stop sign to prevent it from running the red light/stop sign. - Translation A - - - Increase Stopped Distance - ๅขžๅŠ ๅœๆญข่ท็ฆป - - - Increase the distance openpilot stops behind vehicles. - ๅขžๅŠ openpilotๅœจ่ฝฆ่พ†ๅŽๆ–นๅœ่ฝฆ็š„่ท็ฆปใ€‚ - - - Set Speed Offset - ่ฎพ็ฝฎ้€Ÿๅบฆๅ็งป - - - How much higher or lower the set speed should be compared to your current set speed. For example, if you prefer to drive 5 mph above the speed limit, this setting will automatically add that difference when you adjust your set speed. - ่ฎพๅฎš้€Ÿๅบฆๅบ”ๆฏ”ๆ‚จๅฝ“ๅ‰่ฎพๅฎš้€Ÿๅบฆ้ซ˜ๅคšๅฐ‘ๆˆ–ไฝŽๅคšๅฐ‘ใ€‚ไพ‹ๅฆ‚๏ผŒๅฆ‚ๆžœๆ‚จๅ–œๆฌขไปฅๆฏ”้™้€Ÿ้ซ˜5่‹ฑ้‡Œ็š„้€Ÿๅบฆ่กŒ้ฉถ๏ผŒๆญค่ฎพ็ฝฎๅฐ†ๅœจๆ‚จ่ฐƒๆ•ด่ฎพๅฎš้€Ÿๅบฆๆ—ถ่‡ชๅŠจๆทปๅŠ ่ฏฅๅทฎๅ€ผใ€‚ - - - Map Accel/Decel to Gears - ๅฐ†ๅŠ ้€Ÿ/ๅ‡้€Ÿๆ˜ ๅฐ„ๅˆฐ้ฝฟ่ฝฎ - - - Map the acceleration and deceleration profiles to your car's <b>Eco</b> or <b>Sport</b> gear modes. - ๅฐ†ๅŠ ้€Ÿๅ’Œๅ‡้€Ÿๆ›ฒ็บฟๆ˜ ๅฐ„ๅˆฐๆ‚จๆฑฝ่ฝฆ็š„<b>็ปๆตŽ</b>ๆˆ–<b>่ฟๅŠจ</b>ๆกฃไฝๆจกๅผใ€‚ - - - Reverse Cruise Increase - ้€†่ฝฌ้‚ฎ่ฝฎๅขž้•ฟ - - - Reverse the <b>long press</b> cruise increase feature to increase the max speed by 5 instead of 1 on short presses. - ๅฐ†<b>้•ฟๆŒ‰</b>ๅทก่ˆชๅขžๅŠ ๅŠŸ่ƒฝๅ่ฝฌไธบ็ŸญๆŒ‰ๆ—ถๅฐ†ๆœ€ๅคง้€ŸๅบฆๅขžๅŠ 5่€Œไธๆ˜ฏ1ใ€‚ - - - Speed Limit Controller - ้€Ÿๅบฆ้™ๅˆถๆŽงๅˆถๅ™จ - - - Limit openpilot's maximum driving speed based on data from downloaded maps, <b>Mapbox</b>, <b>Navigate on openpilot</b>, or the dashboard (supported vehicles: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - ๆ นๆฎไธ‹่ฝฝ็š„ๅœฐๅ›พใ€<b>Mapbox</b>ใ€<b>Navigate on openpilot</b>ๆˆ–ไปช่กจ็›˜็š„ๆ•ฐๆฎ้™ๅˆถopenpilot็š„ๆœ€้ซ˜้ฉพ้ฉถ้€Ÿๅบฆ๏ผˆๆ”ฏๆŒ็š„่ฝฆ่พ†๏ผš<b>Ford</b>ใ€<b>Genesis</b>ใ€<b>Hyundai</b>ใ€<b>Kia</b>ใ€<b>Lexus</b>ใ€<b>Toyota</b>๏ผ‰ใ€‚ - - - Fallback Speed - ๅค‡็”จ้€Ÿๅบฆ - - - The speed limit source when no speed limit data is available. - ๅฝ“ๆฒกๆœ‰้€Ÿๅบฆ้™ๅˆถๆ•ฐๆฎๆ—ถ็š„้€Ÿๅบฆ้™ๅˆถๆฅๆบใ€‚ - - - Override Speed - ่ฆ†็›–้€Ÿๅบฆ - - - The speed openpilot uses after manually exceeding the posted speed limit.<br><br><b>- Set With Gas Pedal</b>: Uses the speed obtained while pressing the gas<br><b>- Max Set Speed</b>: Uses the cruise control set speed<br><br>Overrides clear upon disengagement. - Translation A - - - Miscellaneous features to improve the <b>Speed Limit Controller</b> experience. - ๆ”น่ฟ›<b>้€Ÿๅบฆ้™ๅˆถๆŽงๅˆถๅ™จ</b>ไฝ“้ชŒ็š„ๅ…ถไป–ๅŠŸ่ƒฝใ€‚ - - - Confirm New Speed Limits - ็กฎ่ฎคๆ–ฐ็š„้€Ÿๅบฆ้™ๅˆถ - - - Require confirmation before applying new speed limits. To accept, use the flashing widget on the driving screen or press the <b>Cruise Increase</b> button. To deny, press the <b>Cruise Decrease</b> button or simply ignore the prompt for 30 seconds. - ๅœจๅบ”็”จๆ–ฐ็š„้€Ÿๅบฆ้™ๅˆถไน‹ๅ‰้œ€่ฆ็กฎ่ฎคใ€‚่ฆๆŽฅๅ—๏ผŒ่ฏทไฝฟ็”จ้ฉพ้ฉถๅฑๅน•ไธŠ็š„้—ช็ƒๅฐ้ƒจไปถๆˆ–ๆŒ‰ไธ‹<b>ๅทก่ˆชๅขžๅŠ </b>ๆŒ‰้’ฎใ€‚่ฆๆ‹’็ป๏ผŒ่ฏทๆŒ‰ไธ‹<b>ๅทก่ˆชๅ‡ๅฐ‘</b>ๆŒ‰้’ฎๆˆ–็ฎ€ๅ•ๅฟฝ็•ฅๆ็คบ30็ง’ใ€‚ - - - Force MPH Readings from Dashboard - ๅผบๅˆถไปช่กจๆฟไธŠ็š„MPH่ฏปๆ•ฐ - - - Force dashboard speed limit readings to be in mph. - ๅผบๅˆถไปช่กจ็›˜้€Ÿๅบฆ้™ๅˆถ่ฏปๆ•ฐไปฅ่‹ฑ้‡Œ/ๅฐๆ—ถไธบๅ•ไฝใ€‚ - - - Higher Limit Lookahead Time - ๆ›ด้ซ˜้™ๅˆถๅ‰็žปๆ—ถ้—ด - - - How far ahead openpilot anticipates upcoming higher speed limits from the downloaded map data. - openpilot ไปŽไธ‹่ฝฝ็š„ๅœฐๅ›พๆ•ฐๆฎไธญๆๅ‰ๅคš่ฟœ้ข„ๆต‹ๅณๅฐ†ๅˆฐๆฅ็š„ๆ›ด้ซ˜้™้€Ÿใ€‚ - - - Lower Limit Lookahead Time - ไธ‹้™ๅ‰็žปๆ—ถ้—ด - - - How far ahead openpilot anticipates upcoming lower speed limits from the downloaded map data. - openpilot ไปŽไธ‹่ฝฝ็š„ๅœฐๅ›พๆ•ฐๆฎไธญๆๅ‰ๅคš่ฟœ้ข„ๆต‹ๅณๅฐ†ๅˆฐๆฅ็š„่พƒไฝŽ้™้€Ÿใ€‚ - - - Match Speed Limit on Engage - ๅœจๅฏ็”จๆ—ถๅŒน้…้€Ÿๅบฆ้™ๅˆถ - - - Automatically set cruise control speed to match the current speed limit when first enabling openpilot. - ้ฆ–ๆฌกๅฏ็”จopenpilotๆ—ถ๏ผŒ่‡ชๅŠจๅฐ†ๅทก่ˆชๆŽงๅˆถ้€Ÿๅบฆ่ฎพ็ฝฎไธบๅŒน้…ๅฝ“ๅ‰้™้€Ÿใ€‚ - - - Use Mapbox as Fallback - ไฝฟ็”จMapboxไฝœไธบๅค‡็”จ - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - ๅœจๆฒกๆœ‰ๅ…ถไป–ๆฅๆบๅฏ็”จๆ—ถ๏ผŒไฝฟ็”จ<b>Mapbox</b>้€Ÿๅบฆ้™ๅˆถๆ•ฐๆฎใ€‚ - - - Speed Limit Source Priority - ้€Ÿๅบฆ้™ๅˆถๆฅๆบไผ˜ๅ…ˆ็บง - - - Define the priority order for speed limit sources (<b>Dashboard</b>, <b>Map Data</b>, <b>Navigation</b>). Higher-priority sources override lower ones when multiple limits are detected. - ๅฎšไน‰่ฝฆ้€Ÿ้™ๅˆถๆฅๆบ็š„ไผ˜ๅ…ˆ้กบๅบ๏ผˆ<b>ไปช่กจ็›˜</b>ใ€<b>ๅœฐๅ›พๆ•ฐๆฎ</b>ใ€<b>ๅฏผ่ˆช</b>๏ผ‰ใ€‚ๅฝ“ๆฃ€ๆต‹ๅˆฐๅคšไธช้™ๅˆถๆ—ถ๏ผŒไผ˜ๅ…ˆ็บง่พƒ้ซ˜็š„ๆฅๆบไผš่ฆ†็›–ไผ˜ๅ…ˆ็บง่พƒไฝŽ็š„ใ€‚ - - - Speed Limit Offsets - ้€Ÿๅบฆ้™ๅˆถๅ็งป้‡ - - - Offsets relative to the posted speed limit for a more "human-like" driving experience. - ็›ธๅฏนไบŽๅ‘ๅธƒ็š„้™้€Ÿ็š„ๅ็งป๏ผŒไปฅ่Žทๅพ—ๆ›ดโ€œไบบๆ€งๅŒ–โ€็š„้ฉพ้ฉถไฝ“้ชŒใ€‚ - - - Target speed offset applied for posted limits between 0 and 24 mph. - ็›ฎๆ ‡้€Ÿๅบฆๅ็งป้€‚็”จไบŽ้™้€Ÿๅœจ0ๅˆฐ24่‹ฑ้‡Œ/ๅฐๆ—ถไน‹้—ดใ€‚ - - - Target speed offset applied for posted limits between 25 and 34 mph. - ็›ฎๆ ‡้€Ÿๅบฆๅ็งป้€‚็”จไบŽ้™้€Ÿๅœจ25ๅˆฐ34่‹ฑ้‡Œ/ๅฐๆ—ถไน‹้—ดใ€‚ - - - Target speed offset applied for posted limits between 35 and 44 mph. - ็›ฎๆ ‡้€Ÿๅบฆๅ็งป้€‚็”จไบŽ้™้€Ÿๅœจ35ๅˆฐ44่‹ฑ้‡Œ/ๅฐๆ—ถไน‹้—ดใ€‚ - - - Target speed offset applied for posted limits between 45 and 54 mph. - ็›ฎๆ ‡้€Ÿๅบฆๅ็งป้€‚็”จไบŽ้™้€Ÿๅœจ45ๅˆฐ54่‹ฑ้‡Œ/ๅฐๆ—ถไน‹้—ดใ€‚ - - - Target speed offset applied for posted limits between 55 and 64 mph. - ็›ฎๆ ‡้€Ÿๅบฆๅ็งป้€‚็”จไบŽ้™้€Ÿๅœจ55ๅˆฐ64่‹ฑ้‡Œ/ๅฐๆ—ถไน‹้—ดใ€‚ - - - Target speed offset applied for posted limits between 65 and 74 mph. - ็›ฎๆ ‡้€Ÿๅบฆๅ็งป้€‚็”จไบŽ้™้€Ÿๅœจ65ๅˆฐ74่‹ฑ้‡Œ/ๅฐๆ—ถไน‹้—ดใ€‚ - - - Target speed offset applied for posted limits between 75 and 99 mph. - ็›ฎๆ ‡้€Ÿๅบฆๅ็งป้€‚็”จไบŽ้™้€Ÿๅœจ75ๅˆฐ99่‹ฑ้‡Œ/ๅฐๆ—ถไน‹้—ดใ€‚ - - - Visual Settings - ่ง†่ง‰่ฎพ็ฝฎ - - - Visual features to improve the <b>Speed Limit Controller</b> experience. - ๆ”น่ฟ›<b>้€Ÿๅบฆ้™ๅˆถๆŽงๅˆถๅ™จ</b>ไฝ“้ชŒ็š„่ง†่ง‰ๅŠŸ่ƒฝใ€‚ - - - Show Speed Limit Offset - ๆ˜พ็คบ้€Ÿๅบฆ้™ๅˆถๅ็งป้‡ - - - Display the speed limit offset separately on the driving screen. - ๅœจ้ฉพ้ฉถๅฑๅน•ไธŠๅ•็‹ฌๆ˜พ็คบ้€Ÿๅบฆ้™ๅˆถๅ็งปใ€‚ - - - Show Speed Limit Sources - ๆ˜พ็คบ้™้€Ÿๆฅๆบ - - - Display the speed limit sources on the driving screen. - ๅœจ้ฉพ้ฉถๅฑๅน•ไธŠๆ˜พ็คบ้™้€Ÿๆฅๆบใ€‚ - - - seconds - ็ง’ - - - m/sยฒ - m/sยฒ - - - mph - mph - - - With Lead - ๅซ้“… - - - Switch to <b>Experimental Mode</b> when driving below this speed with a lead. - ๅœจไฝŽไบŽๆญค้€Ÿๅบฆๅนถๆœ‰้ข†่ˆชๆ—ถๅˆ‡ๆขๅˆฐ<b>ๅฎž้ชŒๆจกๅผ</b>ใ€‚ - - - Slower Lead - ่พƒๆ…ข็š„็บฟ็ดข - - - Stopped Lead - ๅœๆญข็บฟ็ดข - - - Intersections - ไบคๅ‰็‚น - - - Turns - ่ฝฌๅผฏ - - - Off - ๅ…ณ - - - second - ็ฌฌไบŒไธช - - - RESET - ้‡็ฝฎ - - - Standard - ๆ ‡ๅ‡† - - - Eco - ็”Ÿๆ€ - - - Sport - ่ฟๅŠจ - - - Sport+ - Sport+ - - - feet - ่‹ฑๅฐบ - - - Acceleration - ๅŠ ้€Ÿๅบฆ - - - Deceleration - ๅ‡้€Ÿ - - - Set Speed - ่ฎพ็ฝฎ้€Ÿๅบฆ - - - Experimental Mode - ๅฎž้ชŒๆจกๅผ - - - Previous Limit - ๅ…ˆๅ‰้™ๅˆถ - - - None - ๆ—  - - - Set With Gas Pedal - ่ฎพ็ฝฎๅธฆๆฒน้—จ่ธๆฟ - - - Max Set Speed - ๆœ€ๅคง่ฎพๅฎš้€Ÿๅบฆ - - - SELECT - SELECT - - - Dashboard - ไปช่กจๆฟ - - - Map Data - ๅœฐๅ›พๆ•ฐๆฎ - - - Navigation - ๅฏผ่ˆช - - - Highest - ๆœ€้ซ˜ - - - Lowest - ๆœ€ไฝŽ - - - Select your primary priority - ้€‰ๆ‹ฉๆ‚จ็š„้ฆ–่ฆไผ˜ๅ…ˆไบ‹้กน - - - Select your secondary priority - ้€‰ๆ‹ฉๆ‚จ็š„ๆฌก่ฆไผ˜ๅ…ˆไบ‹้กน - - - Select your tertiary priority - ้€‰ๆ‹ฉๆ‚จ็š„็ฌฌไธ‰ไผ˜ๅ…ˆ็บง - - - MANAGE - ็ฎก็† - - - Lower Limits - ไธ‹้™ - - - Higher Limits - ๆ›ด้ซ˜็š„้™ๅˆถ - - - Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? - ๆ‚จ็กฎๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎ<b>ไบค้€šๆจกๅผ</b>็š„่ฎพ็ฝฎๅ—๏ผŸ - - - Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? - ๆ‚จ็กฎๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎ<b>ๆฟ€่ฟ›</b>ไธชๆ€ง่ฎพ็ฝฎๅ—๏ผŸ - - - Are you sure you want to completely reset your settings for the <b>Standard</b> personality? - ๆ‚จ็กฎๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎ<b>ๆ ‡ๅ‡†</b>ไธชๆ€ง่ฎพ็ฝฎๅ—๏ผŸ - - - Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? - ๆ‚จ็กฎๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎ<b>ๆ”พๆพ</b>ไธชๆ€ง็š„่ฎพ็ฝฎๅ—๏ผŸ - - - foot - ่„š - - - meter - ็ฑณ - - - meters - ็ฑณ - - - km/h - km/h - - - Target speed offset applied for posted limits between 0 and 29 km/h. - ็›ฎๆ ‡้€Ÿๅบฆๅ็งป้€‚็”จไบŽ้™้€Ÿๅœจ0ๅˆฐ29ๅ…ฌ้‡Œ/ๅฐๆ—ถไน‹้—ดใ€‚ - - - Target speed offset applied for posted limits between 30 and 49 km/h. - ็›ฎๆ ‡้€Ÿๅบฆๅ็งป้€‚็”จไบŽ้™้€Ÿๅœจ30่‡ณ49ๅ…ฌ้‡Œ/ๅฐๆ—ถไน‹้—ดใ€‚ - - - Target speed offset applied for posted limits between 50 and 59 km/h. - ็›ฎๆ ‡้€Ÿๅบฆๅ็งป้€‚็”จไบŽ้™้€Ÿๅœจ50ๅˆฐ59ๅ…ฌ้‡Œ/ๅฐๆ—ถไน‹้—ดใ€‚ - - - Target speed offset applied for posted limits between 60 and 79 km/h. - ็›ฎๆ ‡้€Ÿๅบฆๅ็งป้€‚็”จไบŽ้™้€Ÿๅœจ60ๅˆฐ79ๅ…ฌ้‡Œ/ๅฐๆ—ถไน‹้—ดใ€‚ - - - Target speed offset applied for posted limits between 80 and 99 km/h. - ็›ฎๆ ‡้€Ÿๅบฆๅ็งป้€‚็”จไบŽ้™้€Ÿๅœจ80ๅˆฐ99ๅ…ฌ้‡Œ/ๅฐๆ—ถไน‹้—ดใ€‚ - - - Target speed offset applied for posted limits between 100 and 119 km/h. - ็›ฎๆ ‡้€Ÿๅบฆๅ็งป้€‚็”จไบŽ้™้€Ÿๅœจ100ๅˆฐ119ๅ…ฌ้‡Œ/ๅฐๆ—ถไน‹้—ดใ€‚ - - - Target speed offset applied for posted limits between 120 and 140 km/h. - ็›ฎๆ ‡้€Ÿๅบฆๅ็งป้€‚็”จไบŽ้™้€Ÿๅœจ120ๅˆฐ140ๅ…ฌ้‡Œ/ๅฐๆ—ถไน‹้—ดใ€‚ - Advanced Longitudinal Tuning - ้ซ˜็บง็บตๅ‘่ฐƒ่ฐ + ้ซ˜็บง็บตๅ‘่ฐƒๆ ก - Advanced settings for customizing how openpilot handles acceleration and braking. - ้ซ˜็บง่ฎพ็ฝฎ็”จไบŽ่‡ชๅฎšไน‰openpilotๅฆ‚ไฝ•ๅค„็†ๅŠ ้€Ÿๅ’ŒๅˆถๅŠจใ€‚ + <b>Advanced acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>้ซ˜็บงๅŠ ้€Ÿๅ’ŒๅˆถๅŠจๆŽงๅˆถๆ›ดๆ”น</b>๏ผŒไปฅๅพฎ่ฐƒ openpilot ็š„้ฉพ้ฉถๆ–นๅผใ€‚ Actuator Delay (Default: %1) - ๆ‰ง่กŒๅ™จๅปถ่ฟŸ๏ผˆ้ป˜่ฎค๏ผš%1๏ผ‰ + ๆ‰ง่กŒๅ™จๅปถ่ฟŸ๏ผˆ้ป˜่ฎค๏ผš%1๏ผ‰ Actuator Delay - ๆ‰ง่กŒๅ™จๅปถ่ฟŸ + ๆ‰ง่กŒๅ™จๅปถ่ฟŸ - Delay before throttle or brake takes effect. Higher values smooth slow actuators but can feel laggy; lower values react quicker but may overshoot. - ่Š‚ๆฐ”้—จๆˆ–ๅˆน่ฝฆ็”Ÿๆ•ˆๅ‰็š„ๅปถ่ฟŸใ€‚่พƒ้ซ˜็š„ๅ€ผๅฏไปฅๅนณๆป‘็ผ“ๆ…ข็š„ๆ‰ง่กŒๅ™จ๏ผŒไฝ†ๅฏ่ƒฝๆ„Ÿ่ง‰ๆปžๅŽ๏ผ›่พƒไฝŽ็š„ๅ€ผๅๅบ”ๆ›ดๅฟซ๏ผŒไฝ†ๅฏ่ƒฝ่ถ…่ฐƒใ€‚ + <b>The time between openpilot's throttle or brake command and the vehicle's response.</b> Increase if the vehicle feels slow to react; decrease if it feels too eager or overshoots. + <b>openpilot ๅ‘ๅ‡บๆฒน้—จๆˆ–ๅˆถๅŠจๆŒ‡ไปคไธŽ่ฝฆ่พ†ๅ“ๅบ”ไน‹้—ด็š„ๆ—ถ้—ดใ€‚</b> ๅฆ‚ๆžœ่ฝฆ่พ†ๅๅบ”่ฟŸ็ผ“่ฏทๅขžๅคง๏ผ›ๅฆ‚ๆžœๅๅบ”่ฟ‡ไบŽ็งฏๆžๆˆ–ๅ‡บ็Žฐ่ฟ‡ๅ†ฒ่ฏทๅ‡ๅฐใ€‚ Start Acceleration (Default: %1) - ๅฏๅŠจๅŠ ้€Ÿๅบฆ๏ผˆ้ป˜่ฎคๅ€ผ๏ผš%1๏ผ‰ + ่ตทๆญฅๅŠ ้€Ÿๅบฆ๏ผˆ้ป˜่ฎค๏ผš%1๏ผ‰ Start Acceleration - ๅผ€ๅง‹ๅŠ ้€Ÿ + ๅผ€ๅง‹ๅŠ ้€Ÿ - Extra acceleration applied when pulling away from a stop. Increase for snappier launches at the cost of smoothness; decrease for gentler starts. - ไปŽ้™ๆญข็Šถๆ€่ตทๆญฅๆ—ถๆ–ฝๅŠ ้ขๅค–ๅŠ ้€Ÿใ€‚ๅขžๅŠ ไปฅ่Žทๅพ—ๆ›ด่ฟ…้€Ÿ็š„่ตทๆญฅ๏ผŒไฝ†ไผš็‰บ็‰ฒๅนณ้กบๆ€ง๏ผ›ๅ‡ๅฐ‘ไปฅ่Žทๅพ—ๆ›ดๆธฉๅ’Œ็š„่ตทๆญฅใ€‚ + <b>Extra acceleration applied when starting from a stop.</b> Increase for quicker takeoffs; decrease for smoother, gentler starts. + <b>ไปŽ้™ๆญข่ตทๆญฅๆ—ถๆ–ฝๅŠ ้ขๅค–ๅŠ ้€Ÿใ€‚</b> ๅขžๅŠ ๅฏๆ›ดๅฟซ่ตทๆญฅ๏ผ›ๅ‡ๅฐ‘ๅฏๆ›ดๅนณ็จณใ€ๆธฉๅ’Œๅœฐ่ตทๆญฅใ€‚ Start Speed (Default: %1) - ่ตทๅง‹้€Ÿๅบฆ๏ผˆ้ป˜่ฎค๏ผš%1๏ผ‰ + ่ตทๅง‹้€Ÿๅบฆ๏ผˆ้ป˜่ฎค๏ผš%1๏ผ‰ Start Speed - ๅผ€ๅง‹้€Ÿๅบฆ + ่ตทๅง‹้€Ÿๅบฆ - Speed where openpilot begins to exit the stopped state. Higher values avoid creeping but may feel sluggish; lower values move sooner but risk creeping. - openpilotๅผ€ๅง‹้€€ๅ‡บๅœๆญข็Šถๆ€็š„้€Ÿๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผๅฏไปฅ้ฟๅ…็ผ“ๆ…ข็งปๅŠจ๏ผŒไฝ†ๅฏ่ƒฝๆ„Ÿ่ง‰่ฟŸ็ผ“๏ผ›่พƒไฝŽ็š„ๅ€ผๅฏไปฅๆ›ดๅฟซ็งปๅŠจ๏ผŒไฝ†ๆœ‰็ผ“ๆ…ข็งปๅŠจ็š„้ฃŽ้™ฉใ€‚ + <b>The speed at which openpilot exits the stopped state.</b> Increase to reduce creeping; decrease to move sooner after stopping. + <b>openpilot้€€ๅ‡บๅœๆญข็Šถๆ€็š„้€Ÿๅบฆใ€‚</b> ๅขžๅคงไปฅๅ‡ๅฐ‘็ผ“ๆ…ขๅ‰่กŒ๏ผ›ๅ‡ๅฐไปฅๅœจๅœ่ฝฆๅŽๆ›ดๅฟซ่ตทๆญฅใ€‚ Stop Acceleration (Default: %1) - ๅœๆญขๅŠ ้€Ÿ๏ผˆ้ป˜่ฎค๏ผš%1๏ผ‰ + ๅœๆญขๅŠ ้€Ÿ๏ผˆ้ป˜่ฎค๏ผš%1๏ผ‰ Stop Acceleration - ๅœๆญขๅŠ ้€Ÿ + ๅœๆญขๅŠ ้€Ÿ - Brake force applied to hold the vehicle still. Larger values prevent creeping on hills but might jerk to a stop. Smaller values can feel smoother but may allow rolling. - ๆ–ฝๅŠ ๅˆถๅŠจๅŠ›ไปฅไฟๆŒ่ฝฆ่พ†้™ๆญขใ€‚่พƒๅคง็š„ๅ€ผๅฏไปฅ้˜ฒๆญขๅœจๅก้“ไธŠ็ˆฌ่กŒ๏ผŒไฝ†ๅฏ่ƒฝไผš็ช็„ถๅœไธ‹ใ€‚่พƒๅฐ็š„ๅ€ผๅฏ่ƒฝๆ„Ÿ่ง‰ๆ›ดๅนณ็จณ๏ผŒไฝ†ๅฏ่ƒฝไผšๅ…่ฎธๆปšๅŠจใ€‚ + <b>Brake force applied to hold the vehicle at a standstill.</b> Increase to prevent rolling on hills; decrease for smoother, softer stops. + <b>ๆ–ฝๅŠ ๅˆถๅŠจๅŠ›ไปฅไฝฟ่ฝฆ่พ†ไฟๆŒ้™ๆญขใ€‚</b> ๅขžๅŠ ๅฏ้˜ฒๆญขๅœจๅก้“ไธŠๆบœ่ฝฆ๏ผ›ๅ‡ๅฐ‘ๅฏ่Žทๅพ—ๆ›ดๅนณ้กบใ€ๆ›ดๆŸ”ๅ’Œ็š„ๅœ่ฝฆๆ•ˆๆžœใ€‚ Stopping Rate (Default: %1) - ๅœๆญข็އ๏ผˆ้ป˜่ฎค๏ผš%1๏ผ‰ + ๅ‡้€Ÿ็އ๏ผˆ้ป˜่ฎค๏ผš%1๏ผ‰ Stopping Rate - ๅœๆญข็އ + ๅˆถๅŠจ้€Ÿ็އ - How quickly braking ramps up when stopping. Faster rates shorten stopping distance but can be harsh; slower rates are smoother but need more room. - ๅˆถๅŠจๆ—ถๅˆถๅŠจ็š„ๅŠ ้€Ÿ้€Ÿๅบฆใ€‚ๆ›ดๅฟซ็š„้€Ÿๅบฆ็ผฉ็Ÿญไบ†ๅˆถๅŠจ่ท็ฆป๏ผŒไฝ†ๅฏ่ƒฝไผšๅพˆ็Œ›็ƒˆ๏ผ›่พƒๆ…ข็š„้€Ÿๅบฆๆ›ดๅนณ็จณ๏ผŒไฝ†้œ€่ฆๆ›ดๅคš็ฉบ้—ดใ€‚ + <b>How quickly braking ramps up when stopping.</b> Increase for shorter, firmer stops; decrease for smoother, longer stops. + <b>่ฝฆ่พ†ๅœ่ฝฆๆ—ถๅˆถๅŠจๅŠ ๅŠ›ๅบฆ็š„้€Ÿๅบฆใ€‚</b> ๅขžๅคงไปฅ่Žทๅพ—ๆ›ด็Ÿญใ€ๆ›ด็กฌ็š„ๅœ่ฝฆ๏ผ›ๅ‡ๅฐไปฅ่Žทๅพ—ๆ›ดๅนณ้กบใ€ๆ›ด้•ฟ็š„ๅœ่ฝฆใ€‚ Stop Speed (Default: %1) - ๅœๆญข้€Ÿๅบฆ๏ผˆ้ป˜่ฎค๏ผš%1๏ผ‰ + ๅœๆญข้€Ÿๅบฆ๏ผˆ้ป˜่ฎค๏ผš%1๏ผ‰ Stop Speed - ๅœๆญข้€Ÿๅบฆ + ๅœๆญข้€Ÿๅบฆ - Speed where openpilot beings to enter the stopped state. Higher values brake earlier for smoother stops but might stop too soon; lower values wait longer and can overshoot. - openpilotๅผ€ๅง‹่ฟ›ๅ…ฅๅœๆญข็Šถๆ€็š„้€Ÿๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผไผšๆ›ดๆ—ฉๅˆน่ฝฆไปฅๅฎž็Žฐๆ›ดๅนณ็จณ็š„ๅœ่ฝฆ๏ผŒไฝ†ๅฏ่ƒฝไผš่ฟ‡ๆ—ฉๅœๆญข๏ผ›่พƒไฝŽ็š„ๅ€ผๅˆ™็ญ‰ๅพ…ๆ—ถ้—ดๆ›ด้•ฟ๏ผŒๅฏ่ƒฝไผš่ถ…ๅ‡บใ€‚ + <b>The speed at which openpilot considers the vehicle stopped.</b> Increase to brake earlier and stop smoothly; decrease to wait longer but risk overshooting. + <b>openpilot ่ฎคไธบ่ฝฆ่พ†ๅทฒๅœๆญข็š„้€Ÿๅบฆใ€‚</b> ๅขžๅŠ ่ฏฅๅ€ผๅฏๆ›ดๆ—ฉๅˆถๅŠจๅนถๅนณ็จณๅœไธ‹๏ผ›้™ไฝŽ่ฏฅๅ€ผไผš็ญ‰ๅพ…ๆ›ดไน…ไฝ†ๆœ‰ๅ†ฒ่ฟ‡็š„้ฃŽ้™ฉใ€‚ + + + Conditional Experimental Mode + ๆกไปถๅฎž้ชŒๆจกๅผ + + + <b>Automatically switch to "Experimental Mode" when set conditions are met.</b> Allows the model to handle challenging situations with smarter decision making. + <b>ๅฝ“ๆปก่ถณ่ฎพๅฎšๆกไปถๆ—ถ่‡ชๅŠจๅˆ‡ๆขๅˆฐโ€œๅฎž้ชŒๆจกๅผโ€ใ€‚</b> ๅ…่ฎธๆจกๅž‹ไปฅๆ›ดๆ™บ่ƒฝ็š„ๅ†ณ็ญ–ๅบ”ๅฏนๅคๆ‚ๆƒ…ๅ†ตใ€‚ + + + Below + ไธ‹ๆ–น + + + <b>Switch to "Experimental Mode" when driving below this speed without a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>ๅœจๆ— ๅ‰่ฝฆไธ”่ฝฆ้€ŸไฝŽไบŽๆญค้€Ÿๅบฆๆ—ถๅˆ‡ๆขๅˆฐโ€œๅฎž้ชŒๆจกๅผโ€</b>๏ผŒไปฅๅธฎๅŠฉ openpilot ๆ›ด้กบ็•…ๅœฐๅค„็†ไฝŽ้€Ÿๆƒ…ๅ†ตใ€‚ + + + Curve Detected Ahead + ๅ‰ๆ–นๆฃ€ๆต‹ๅˆฐๅผฏ้“ + + + <b>Switch to "Experimental Mode" when a curve is detected</b> to allow the model to set an appropriate speed for the curve. + <b>ๆฃ€ๆต‹ๅˆฐๅผฏ้“ๆ—ถๅˆ‡ๆขๅˆฐโ€œๅฎž้ชŒๆจกๅผโ€</b>๏ผŒไปฅๅ…่ฎธๆจกๅž‹ไธบ่ฏฅๅผฏ้“่ฎพๅฎšๅˆ้€‚็š„่ฝฆ้€Ÿใ€‚ + + + Lead Detected Ahead + ๅ‰ๆ–นๆฃ€ๆต‹ๅˆฐๅ‰่ฝฆ + + + <b>Switch to "Experimental Mode" when a slower or stopped vehicle is detected.</b> Can make braking smoother and more reliable on some vehicles. + <b>ๅฝ“ๆฃ€ๆต‹ๅˆฐ่พƒๆ…ขๆˆ–ๅทฒๅœๆญข็š„่ฝฆ่พ†ๆ—ถๅˆ‡ๆขๅˆฐโ€œๅฎž้ชŒๆจกๅผโ€ใ€‚</b> ๅœจ้ƒจๅˆ†่ฝฆ่พ†ไธŠๅฏไฝฟๅˆถๅŠจๆ›ดๅนณ้กบไธ”ๆ›ดๅฏ้ ใ€‚ + + + Navigation-Based + ๅŸบไบŽๅฏผ่ˆช + + + <b>Switch to "Experimental Mode" when approaching intersections or turns on the active route</b> while using "Navigate on openpilot" (NOO) to allow the model to set an appropriate speed for upcoming maneuvers. + ๅœจไฝฟ็”จโ€œNavigate on openpilotโ€๏ผˆNOO๏ผ‰ๆ—ถ๏ผŒ<b>ๅœจๆŽฅ่ฟ‘ๆดปๅŠจ่ทฏ็บฟไธŠ็š„่ทฏๅฃๆˆ–่ฝฌๅผฏๆ—ถๅˆ‡ๆขๅˆฐโ€œๅฎž้ชŒๆจกๅผโ€</b>๏ผŒไปฅไพฟๆจกๅž‹ไธบๅณๅฐ†ๅˆฐๆฅ็š„ๆ“ไฝœ่ฎพๅฎšๅˆ้€‚็š„้€Ÿๅบฆใ€‚ + + + Predicted Stop In + ้ข„่ฎกๅœจโ€ฆๅœๆญข + + + <b>Switch to "Experimental Mode" when openpilot predicts a stop within the set time.</b> This is usually triggered when the model "sees" a red light or stop sign ahead.<br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>ๅฝ“ openpilot ้ข„ๆต‹ๅœจ่ฎพๅฎšๆ—ถ้—ดๅ†…ไผšๅœ่ฝฆๆ—ถ๏ผŒๅˆ‡ๆขๅˆฐโ€œๅฎž้ชŒๆจกๅผโ€ใ€‚</b> ่ฟ™้€šๅธธๅœจๆจกๅž‹โ€œ็œ‹ๅˆฐโ€ๅ‰ๆ–น็บข็ฏๆˆ–ๅœ่ฝฆๆ ‡ๅฟ—ๆ—ถ่งฆๅ‘ใ€‚<br><br><i><b>ๅ…่ดฃๅฃฐๆ˜Ž</b>๏ผšopenpilot ไธไผšๆ˜พๅผๆฃ€ๆต‹ไบค้€šไฟกๅท็ฏๆˆ–ๅœ่ฝฆๆ ‡ๅฟ—ใ€‚ๅœจโ€œๅฎž้ชŒๆจกๅผโ€ไธ‹๏ผŒopenpilot ๅŸบไบŽๆ‘„ๅƒๅคด่พ“ๅ…ฅ่ฟ›่กŒ็ซฏๅˆฐ็ซฏ้ฉพ้ฉถๅ†ณ็ญ–๏ผŒ่ฟ™ๆ„ๅ‘ณ็€ๅณไฝฟๆฒกๆœ‰ๆ˜Žๆ˜พๅŽŸๅ› ไนŸๅฏ่ƒฝๅœ่ฝฆใ€‚</i> + + + Turn Signal Below + ่ฝฌๅ‘็ฏๅœจไธ‹ๆ–น + + + <b>Switch to "Experimental Mode" when using a turn signal below the set speed</b> to allow the model to choose an appropriate speed for smoother left and right turns. + <b>ๅœจ่ฎพๅฎš้€Ÿๅบฆไปฅไธ‹ไฝฟ็”จ่ฝฌๅ‘็ฏๆ—ถๅˆ‡ๆขๅˆฐโ€œๅฎž้ชŒๆจกๅผโ€</b>๏ผŒไปฅไพฟๆจกๅž‹้€‰ๆ‹ฉๅˆ้€‚้€Ÿๅบฆ๏ผŒไปŽ่€Œๆ›ดๅนณ้กบๅœฐๅฎŒๆˆๅทฆๅณ่ฝฌๅผฏใ€‚ + + + Status Widget + ็Šถๆ€ๅฐ้ƒจไปถ + + + <b>Show which condition triggered "Experimental Mode"</b> on the driving screen. + ๅœจ้ฉพ้ฉถๅฑๅน•ไธŠ<b>ๆ˜พ็คบ่งฆๅ‘โ€œๅฎž้ชŒๆจกๅผโ€็š„ๆกไปถ</b> + + + Curve Speed Controller + ๅผฏ้“้€ŸๅบฆๆŽงๅˆถๅ™จ + + + <b>Automatically slow down for upcoming curves</b> using data learned from your driving style, adapting to curves as you would. + <b>ๆ นๆฎๆ‚จ็š„้ฉพ้ฉถ้ฃŽๆ ผ่‡ชๅŠจไธบๅ‰ๆ–นๅผฏ้“ๅ‡้€Ÿ</b>๏ผŒไปฅๆ‚จไน ๆƒฏ็š„ๆ–นๅผ้€‚ๅบ”ๅผฏ้“ใ€‚ + + + Calibrated Lateral Acceleration + ๆ กๅ‡†็š„ๆจชๅ‘ๅŠ ้€Ÿๅบฆ + + + <b>The learned lateral acceleration from collected driving data.</b> This sets how fast openpilot will take curves. Higher values allow faster cornering; lower values slow the vehicle for gentler turns. + <b>ๆ นๆฎๆ”ถ้›†็š„้ฉพ้ฉถๆ•ฐๆฎๅญฆไน ๅˆฐ็š„ๆจชๅ‘ๅŠ ้€Ÿๅบฆใ€‚</b> ่ฟ™ๅฐ†ๅ†ณๅฎš openpilot ้€š่ฟ‡ๅผฏ้“็š„้€Ÿๅบฆใ€‚ๆ•ฐๅ€ผ่ถŠ้ซ˜๏ผŒ่ฟ‡ๅผฏ่ถŠๅฟซ๏ผ›ๆ•ฐๅ€ผ่ถŠไฝŽ๏ผŒ่ฝฆ่พ†ไผšๆ”พๆ…ขไปฅๆ›ดๅนณ็ผ“่ฝฌๅ‘ใ€‚ + + + Calibration Progress + ๆ กๅ‡†่ฟ›ๅบฆ + + + <b>How much curve data has been collected.</b> This is a progress meter; it is normal for the value to stay low and rarely reach 100%. + <b>ๅทฒๆ”ถ้›†็š„ๅผฏ้“่ทฏๅ†ตๆ•ฐๆฎ้‡ใ€‚</b> ่ฟ™ๆ˜ฏไธ€ไธช่ฟ›ๅบฆๆŒ‡็คบๅ™จ๏ผ›ๆ•ฐๅ€ผไฟๆŒ่พƒไฝŽไธ”ๅพˆๅฐ‘่พพๅˆฐ100%ๆ˜ฏๆญฃๅธธ็š„ใ€‚ + + + Reset Curve Data + ้‡็ฝฎๆ›ฒ็บฟๆ•ฐๆฎ + + + <b>Reset collected user data for "Curve Speed Controller".</b> + <b>้‡็ฝฎโ€œๅผฏ้“้€ŸๅบฆๆŽงๅˆถๅ™จโ€็š„ๅทฒๆ”ถ้›†็”จๆˆทๆ•ฐๆฎใ€‚</b> + + + <b>Show the "Curve Speed Controller" target speed on the driving screen.</b> + <b>ๅœจ้ฉพ้ฉถๅฑๅน•ไธŠๆ˜พ็คบโ€œๆ›ฒ็บฟ้€ŸๅบฆๆŽงๅˆถๅ™จโ€็š„็›ฎๆ ‡้€Ÿๅบฆใ€‚</b> + + + Driving Personalities + ้ฉพ้ฉถ้ฃŽๆ ผ + + + <b>Customize the "Driving Personalities"</b> to better match your driving style. + <b>่‡ชๅฎšไน‰โ€œ้ฉพ้ฉถไธชๆ€งโ€</b>ไปฅๆ›ดๅฅฝๅŒน้…ไฝ ็š„้ฉพ้ฉถ้ฃŽๆ ผใ€‚ + + + Traffic Mode + ไบค้€šๆจกๅผ + + + <b>Customize the "Traffic Mode" personality profile.</b> Designed for stop-and-go driving. + <b>่‡ชๅฎšไน‰โ€œไบค้€šๆจกๅผโ€็š„ไธชๆ€งๅŒ–้…็ฝฎใ€‚</b>ไธบ่ตฐ่ตฐๅœๅœ็š„้ฉพ้ฉถ่€Œ่ฎพ่ฎกใ€‚ + + + Following Distance + ่ทŸ่ฝฆ่ท็ฆป + + + <b>The minimum following distance to the lead vehicle in "Traffic Mode".</b> openpilot blends between this value and the "Aggressive" profile as speed increases. Increase for more space; decrease for tighter gaps. + <b>โ€œไบค้€šๆจกๅผโ€ไธ‹ไธŽๅ‰่ฝฆ็š„ๆœ€ๅฐ่ทŸ่ฝฆ่ท็ฆปใ€‚</b> ้š็€้€Ÿๅบฆๆ้ซ˜๏ผŒopenpilotไผšๅœจๆญคๆ•ฐๅ€ผไธŽโ€œๆฟ€่ฟ›โ€้…็ฝฎไน‹้—ด่ฟ›่กŒ่žๅˆใ€‚ๅขžๅคงไปฅ่Žทๅพ—ๆ›ดๅคง้—ด่ท๏ผ›ๅ‡ๅฐไปฅ็ผฉๅฐ่ฝฆ่ทใ€‚ + + + Acceleration Smoothness + ๅŠ ้€Ÿๅนณ้กบๆ€ง + + + <b>How smoothly openpilot accelerates in "Traffic Mode".</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>ๅœจโ€œไบค้€šๆจกๅผโ€ไธ‹๏ผŒopenpilot ๅŠ ้€Ÿ็š„ๅนณ้กบ็จ‹ๅบฆใ€‚</b> ๅขžๅŠ ไปฅ่Žทๅพ—ๆ›ดๆŸ”ๅ’Œ็š„่ตทๆญฅ๏ผ›ๅ‡ๅฐ‘ไปฅ่Žทๅพ—ๆ›ดๅฟซไฝ†ๆ›ด็ชๅ…€็š„่ตทๆญฅใ€‚ + + + Braking Smoothness + ๅˆถๅŠจๅนณ้กบๆ€ง + + + <b>How smoothly openpilot brakes in "Traffic Mode".</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>openpilot ๅœจโ€œไบค้€šๆจกๅผโ€ไธ‹ๅˆถๅŠจ็š„ๅนณ้กบ็จ‹ๅบฆใ€‚</b>ๅขžๅคงไปฅ่Žทๅพ—ๆ›ดๆŸ”ๅ’Œ็š„ๅ‡้€Ÿๅœ่ฝฆ๏ผ›ๅ‡ๅฐไปฅๅฎž็Žฐๆ›ดๅฟซ้€Ÿไฝ†ๆ›ดๆ€ฅไฟƒ็š„ๅˆถๅŠจใ€‚ + + + Safety Gap Bias + ๅฎ‰ๅ…จ้—ด่ทๅ็ฝฎ + + + <b>How much extra space openpilot keeps from the vehicle ahead in "Traffic Mode".</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>ๅœจโ€œไบค้€šๆจกๅผโ€ไธ‹๏ผŒopenpilot ไธŽๅ‰่ฝฆไฟๆŒ็š„้ขๅค–้—ด่ทใ€‚</b> ๅขžๅคงไปฅ่Žทๅพ—ๆ›ดๅคง็š„่ฝฆ่ทๅ’Œๆ›ด่ฐจๆ…Ž็š„่ทŸ่ฝฆ๏ผ›ๅ‡ๅฐไปฅ่Žทๅพ—ๆ›ด็ดงๅ‡‘็š„่ฝฆ่ทๅ’Œๆ›ด้ ่ฟ‘็š„่ทŸ่ฝฆใ€‚ + + + Slowdown Response + ๅ‡้€Ÿๅ“ๅบ” + + + <b>How smoothly openpilot slows down in "Traffic Mode".</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>ๅœจโ€œไบค้€šๆจกๅผโ€ไธ‹๏ผŒopenpilot ๅ‡้€Ÿ็š„ๅนณ้กบ็จ‹ๅบฆใ€‚</b> ๅขžๅŠ ไปฅ่Žทๅพ—ๆ›ดๅนณ็ผ“็š„ๅ‡้€Ÿ๏ผ›ๅ‡ๅฐ‘ๅˆ™ๅ‡้€Ÿๆ›ดๅฟซไฝ†ๆ›ดๆ€ฅใ€‚ + + + Speed-Up Response + ๅŠ ๅฟซๅ“ๅบ” + + + <b>How smoothly openpilot speeds up in "Traffic Mode".</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>ๅœจโ€œไบค้€šๆจกๅผโ€ไธ‹๏ผŒopenpilot ๅŠ ้€Ÿ็š„ๅนณ้กบ็จ‹ๅบฆใ€‚</b> ๅขžๅŠ ไปฅ่Žทๅพ—ๆ›ดๆธ่ฟ›็š„ๅŠ ้€Ÿ๏ผ›ๅ‡ๅฐ‘ไปฅ่Žทๅพ—ๆ›ดๅฟซ้€Ÿไฝ†ๆ›ด้ข ็ฐธ็š„ๅŠ ้€Ÿใ€‚ + + + Reset to Defaults + ้‡็ฝฎไธบ้ป˜่ฎค่ฎพ็ฝฎ + + + <b>Reset "Traffic Mode" settings to defaults.</b> + <b>ๅฐ†โ€œไบค้€šๆจกๅผโ€่ฎพ็ฝฎ้‡็ฝฎไธบ้ป˜่ฎคๅ€ผใ€‚</b> + + + Aggressive + ๆฟ€่ฟ› + + + <b>Customize the "Aggressive" personality profile.</b> Designed for assertive driving with tighter gaps. + <b>่‡ชๅฎšไน‰โ€œๆฟ€่ฟ›โ€้ฉพ้ฉถๆ€งๆ ผ้…็ฝฎใ€‚</b>ไธบๆ›ดๆžœๆ–ญใ€่ฝฆ่ทๆ›ด็ดง็š„้ฉพ้ฉถ่€Œ่ฎพ่ฎกใ€‚ + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Aggressive" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.25 seconds. + <b>ๅœจไฝฟ็”จโ€œๆฟ€่ฟ›โ€ๆกฃไฝๆ—ถ๏ผŒopenpilot ่ทŸ้šๅ‰่ฝฆ็š„ๆ—ถ้—ด้—ด้š”๏ผˆ็ง’๏ผ‰ใ€‚</b> ๅขžๅŠ ไปฅ่Žทๅพ—ๆ›ดๅคง้—ด่ท๏ผ›ๅ‡ๅฐ‘ไปฅ็ผฉๅฐ่ฝฆ่ทใ€‚<br><br>้ป˜่ฎค๏ผš1.25 ็ง’ใ€‚ + + + <b>How smoothly openpilot accelerates with the "Aggressive" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>ไฝฟ็”จโ€œๆฟ€่ฟ›โ€้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒopenpilot ๅŠ ้€Ÿ็š„ๅนณ้กบ็จ‹ๅบฆใ€‚</b> ๅขžๅคงไปฅ่Žทๅพ—ๆ›ดๆธฉๅ’Œ็š„่ตทๆญฅ๏ผ›ๅ‡ๅฐไปฅ่Žทๅพ—ๆ›ดๅฟซไฝ†ๆ›ด็ช็„ถ็š„่ตทๆญฅใ€‚ + + + <b>How smoothly openpilot brakes with the "Aggressive" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>ไฝฟ็”จโ€œๆฟ€่ฟ›โ€ๆกฃไฝๆ—ถ๏ผŒopenpilot ๅˆถๅŠจ็š„ๅนณ้กบ็จ‹ๅบฆใ€‚</b> ๅขžๅคงไปฅ่Žทๅพ—ๆ›ดๆธฉๅ’Œ็š„ๅ‡้€Ÿๅœ่ฝฆ๏ผ›ๅ‡ๅฐไปฅๅฎž็Žฐๆ›ดๅฟซ้€Ÿไฝ†ๆ›ดๆ€ฅไฟƒ็š„ๅˆถๅŠจใ€‚ + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Aggressive" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>ๅœจโ€œๆฟ€่ฟ›โ€ๆกฃไฝไธ‹๏ผŒopenpilotไธŽๅ‰่ฝฆไฟๆŒ็š„้ขๅค–้—ด่ทใ€‚</b> ๅขžๅคงไปฅ่Žทๅพ—ๆ›ดๅคง็š„่ฝฆ่ทๅ’Œๆ›ด่ฐจๆ…Ž็š„่ทŸ่ฝฆ๏ผ›ๅ‡ๅฐไปฅ่Žทๅพ—ๆ›ด็ดงๅ‡‘็š„่ฝฆ่ทๅ’Œๆ›ด่ดด่ฟ‘็š„่ทŸ่ฝฆใ€‚ + + + <b>How smoothly openpilot slows down with the "Aggressive" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>ๅœจโ€œๆฟ€่ฟ›โ€้…็ฝฎไธ‹๏ผŒopenpilot ๅ‡้€Ÿ็š„ๅนณ้กบ็จ‹ๅบฆใ€‚</b> ๅขžๅคงไปฅ่Žทๅพ—ๆ›ดๆธ่ฟ›็š„ๅ‡้€Ÿ๏ผ›ๅ‡ๅฐไปฅๅฎž็Žฐๆ›ดๅฟซ้€Ÿไฝ†ๆ›ดๆ€ฅไฟƒ็š„ๅ‡้€Ÿใ€‚ + + + <b>How smoothly openpilot speeds up with the "Aggressive" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>ๅœจโ€œๆฟ€่ฟ›โ€้…็ฝฎไธ‹๏ผŒopenpilot ๅŠ ้€Ÿ็š„ๅนณ้กบ็จ‹ๅบฆใ€‚</b> ๅขžๅŠ ไปฅ่Žทๅพ—ๆ›ดๅนณ็ผ“็š„ๅŠ ้€Ÿ๏ผ›ๅ‡ๅฐ‘ไปฅ่Žทๅพ—ๆ›ด่ฟ…้€Ÿไฝ†ๆ›ด้ข ็ฐธ็š„ๅŠ ้€Ÿใ€‚ + + + <b>Reset the "Aggressive" profile to defaults.</b> + <b>ๅฐ†โ€œๆฟ€่ฟ›โ€้…็ฝฎๆ–‡ไปถ้‡็ฝฎไธบ้ป˜่ฎคๅ€ผใ€‚</b> + + + Standard + ๆ ‡ๅ‡† + + + <b>Customize the "Standard" personality profile.</b> Designed for balanced driving with moderate gaps. + <b>่‡ชๅฎšไน‰โ€œๆ ‡ๅ‡†โ€ไธชๆ€ง้…็ฝฎๆ–‡ไปถใ€‚</b>ไธบๅนณ่กก้ฉพ้ฉถ่ฎพ่ฎก๏ผŒไฟๆŒ้€‚ไธญ่ฝฆ่ทใ€‚ + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Standard" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.45 seconds. + <b>ไฝฟ็”จโ€œๆ ‡ๅ‡†โ€ๆกฃไฝๆ—ถ๏ผŒopenpilot ่ทŸ้šๅ‰่ฝฆ็š„ๆ—ถ้—ด๏ผˆ็ง’๏ผ‰ใ€‚</b> ๅขžๅคงไปฅ็•™ๅ‡บๆ›ดๅคš็ฉบ้—ด๏ผ›ๅ‡ๅฐไปฅ็ผฉๅฐ่ฝฆ่ทใ€‚<br><br>้ป˜่ฎค๏ผš1.45 ็ง’ใ€‚ + + + <b>How smoothly openpilot accelerates with the "Standard" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>ไฝฟ็”จโ€œๆ ‡ๅ‡†โ€้…็ฝฎๆ—ถ๏ผŒopenpilot ๅŠ ้€Ÿ็š„ๅนณ้กบๅบฆใ€‚</b> ๅขžๅคงไปฅ่Žทๅพ—ๆ›ดๆŸ”ๅ’Œ็š„่ตทๆญฅ๏ผ›ๅ‡ๅฐไปฅ่Žทๅพ—ๆ›ดๅฟซ้€Ÿไฝ†ๆ›ด็ชๅ…€็š„่ตทๆญฅใ€‚ + + + <b>How smoothly openpilot brakes with the "Standard" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>ไฝฟ็”จโ€œๆ ‡ๅ‡†โ€้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒopenpilot ๅˆถๅŠจ็š„ๅนณ้กบ็จ‹ๅบฆใ€‚</b> ๅขžๅŠ ไปฅ่Žทๅพ—ๆ›ดๆŸ”ๅ’Œ็š„ๅœ่ฝฆ๏ผ›ๅ‡ๅฐ‘ไปฅๅฎž็Žฐๆ›ดๅฟซ้€Ÿไฝ†ๆ›ดๆ€ฅไฟƒ็š„ๅˆถๅŠจใ€‚ + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Standard" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>โ€œๆ ‡ๅ‡†โ€้…็ฝฎไธ‹๏ผŒopenpilot ไธŽๅ‰่ฝฆไฟๆŒ็š„้ขๅค–่ท็ฆปใ€‚</b> ๅขžๅคงไปฅ่Žทๅพ—ๆ›ดๅคง่ฝฆ่ทๅนถๆ›ด่ฐจๆ…Ž่ทŸ่ฝฆ๏ผ›ๅ‡ๅฐไปฅ่Žทๅพ—ๆ›ด็ดงๅ‡‘็š„่ฝฆ่ทๅนถๆ›ด่ดด่ฟ‘่ทŸ่ฝฆใ€‚ + + + <b>How smoothly openpilot slows down with the "Standard" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>ไฝฟ็”จโ€œๆ ‡ๅ‡†โ€ๆกฃไฝๆ—ถ๏ผŒopenpilotๅ‡้€Ÿ็š„ๅนณ้กบ็จ‹ๅบฆใ€‚</b> ๆ้ซ˜ไปฅ่Žทๅพ—ๆ›ดๆธ่ฟ›็š„ๅ‡้€Ÿ๏ผ›้™ไฝŽไปฅ่Žทๅพ—ๆ›ดๅฟซไฝ†ๆ›ดๆ€ฅไฟƒ็š„ๅ‡้€Ÿใ€‚ + + + <b>How smoothly openpilot speeds up with the "Standard" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>ไฝฟ็”จโ€œๆ ‡ๅ‡†โ€้…็ฝฎๆ–‡ไปถๆ—ถ๏ผŒopenpilot ๅŠ ้€Ÿ็š„ๅนณ้กบ็จ‹ๅบฆใ€‚</b> ๅขžๅคงไปฅ่Žทๅพ—ๆ›ด็ผ“ๅ’Œ็š„ๅŠ ้€Ÿ๏ผ›ๅ‡ๅฐไปฅ่Žทๅพ—ๆ›ด่ฟ…้€Ÿไฝ†ๆ›ด้ข ็ฐธ็š„ๅŠ ้€Ÿใ€‚ + + + <b>Reset the "Standard" profile to defaults.</b> + <b>ๅฐ†โ€œๆ ‡ๅ‡†โ€้…็ฝฎ้‡็ฝฎไธบ้ป˜่ฎคๅ€ผใ€‚</b> + + + Relaxed + ๅฎฝๆพ + + + <b>Customize the "Relaxed" personality profile.</b> Designed for smoother, more comfortable driving with larger gaps. + <b>่‡ชๅฎšไน‰โ€œๅฎฝๆพโ€้ฉพ้ฉถ้ฃŽๆ ผ้…็ฝฎใ€‚</b>ไธบๆ›ดๅนณ้กบใ€ๆ›ด่ˆ’้€‚ไธ”ไฟๆŒๆ›ดๅคง่ฝฆ่ท็š„้ฉพ้ฉถ่€Œ่ฎพ่ฎกใ€‚ + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Relaxed" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.75 seconds. + <b>ไฝฟ็”จโ€œๅฎฝๆพโ€ๆกฃไฝๆ—ถ๏ผŒopenpilot ่ทŸ้šๅ‰่ฝฆ็š„ๆ—ถ้—ด้—ด้š”๏ผˆ็ง’๏ผ‰ใ€‚</b> ๅขžๅคงไปฅ็•™ๅ‡บๆ›ดๅคš็ฉบ้—ด๏ผ›ๅ‡ๅฐไปฅ็ผฉๅฐ่ฝฆ่ทใ€‚<br><br>้ป˜่ฎค๏ผš1.75 ็ง’ใ€‚ + + + <b>How smoothly openpilot accelerates with the "Relaxed" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>ไฝฟ็”จโ€œๆ”พๆพโ€ๆกฃไฝๆ—ถ๏ผŒopenpilot ๅŠ ้€Ÿ็š„ๅนณ้กบ็จ‹ๅบฆใ€‚</b> ๆ้ซ˜ไปฅ่Žทๅพ—ๆ›ดๆธฉๅ’Œ็š„่ตทๆญฅ๏ผ›้™ไฝŽไปฅๅฎž็Žฐๆ›ดๅฟซไฝ†ๆ›ด็ชๅ…€็š„่ตทๆญฅใ€‚ + + + <b>How smoothly openpilot brakes with the "Relaxed" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>ๅœจโ€œๆ”พๆพโ€้…็ฝฎไธ‹๏ผŒopenpilot ๅˆถๅŠจ็š„ๅนณ้กบ็จ‹ๅบฆใ€‚</b> ๅขžๅคงไปฅ่Žทๅพ—ๆ›ดๆŸ”ๅ’Œ็š„ๅœ่ฝฆ๏ผ›ๅ‡ๅฐไปฅๅฎž็Žฐๆ›ดๅฟซ้€Ÿไฝ†ๆ›ด้”ๅˆฉ็š„ๅˆถๅŠจใ€‚ + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Relaxed" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>ๅœจโ€œๆ”พๆพโ€ๆกฃไฝไธ‹๏ผŒopenpilot ไธŽๅ‰่ฝฆไฟๆŒ็š„้ขๅค–่ท็ฆปใ€‚</b> ๅขžๅคงไปฅ่Žทๅพ—ๆ›ดๅคง็š„่ฝฆ่ทๅ’Œๆ›ด่ฐจๆ…Ž็š„่ทŸ่ฝฆ๏ผ›ๅ‡ๅฐไปฅ่Žทๅพ—ๆ›ด็ดงๅ‡‘็š„่ฝฆ่ทๅ’Œๆ›ด่ดด่ฟ‘็š„่ทŸ่ฝฆใ€‚ + + + <b>How smoothly openpilot slows down with the "Relaxed" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>ไฝฟ็”จโ€œๆ”พๆพโ€้…็ฝฎๆ—ถ openpilot ๅ‡้€Ÿ็š„ๅนณ้กบ็จ‹ๅบฆใ€‚</b> ๅขžๅคงไปฅๅฎž็Žฐๆ›ด็ผ“ๆ…ขใ€ๆ›ดๅนณๆป‘็š„ๅ‡้€Ÿ๏ผ›ๅ‡ๅฐไปฅ่Žทๅพ—ๆ›ดๅฟซไฝ†ๆ›ด้™กๅณญ็š„ๅ‡้€Ÿใ€‚ + + + <b>How smoothly openpilot speeds up with the "Relaxed" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>ไฝฟ็”จโ€œๆ”พๆพโ€้…็ฝฎๆ—ถ๏ผŒopenpilot ๅŠ ้€Ÿ็š„ๅนณ้กบ็จ‹ๅบฆใ€‚</b> ๅขžๅŠ ไปฅ่Žทๅพ—ๆ›ดๆธ่ฟ›็š„ๅŠ ้€Ÿ๏ผ›ๅ‡ๅฐ‘ไปฅ่Žทๅพ—ๆ›ด่ฟ…้€Ÿไฝ†ๆ›ด้ข ็ฐธ็š„ๅŠ ้€Ÿใ€‚ + + + <b>Reset the "Relaxed" profile to defaults.</b> + <b>ๅฐ†โ€œๅฎฝๆพโ€้…็ฝฎๆ–‡ไปถ้‡็ฝฎไธบ้ป˜่ฎคๅ€ผใ€‚</b> + + + Longitudinal Tuning + ็บตๅ‘่ฐƒๆ ก + + + <b>Acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>ๅŠ ้€Ÿๅ’ŒๅˆถๅŠจๆŽงๅˆถ็š„ๆ›ดๆ”น</b>ๅฏๅพฎ่ฐƒ openpilot ็š„้ฉพ้ฉถๆ–นๅผใ€‚ + + + Acceleration Profile + ๅŠ ้€Ÿ้…็ฝฎ + + + <b>How quickly openpilot speeds up.</b> "Eco" is gentle and efficient, "Sport" is firmer and more responsive, and "Sport+" accelerates at the maximum rate allowed. + <b>openpilotๅŠ ้€Ÿ็š„้€Ÿๅบฆใ€‚</b>โ€œEcoโ€ๆ›ดๅนณ้กบไธ”้ซ˜ๆ•ˆ๏ผŒโ€œSportโ€ๆ›ดๅšๅฎžไธ”ๆ›ด็ตๆ•๏ผŒโ€œSport+โ€ไปฅๅ…่ฎธ็š„ๆœ€ๅคง้€Ÿ็އๅŠ ้€Ÿใ€‚ + + + Deceleration Profile + ๅ‡้€Ÿๆ›ฒ็บฟ + + + <b>How firmly openpilot slows down.</b> "Eco" favors coasting, "Sport" applies stronger braking. + <b>openpilotๅ‡้€Ÿ็š„ๅŠ›ๅบฆใ€‚</b>โ€œEcoโ€ๅๅ‘ๆป‘่กŒ๏ผŒโ€œSportโ€ไผšๆ›ดๅผบๅŠ›ๅˆถๅŠจใ€‚ + + + Human-Like Acceleration + ็ฑปไบบๅŠ ้€Ÿ + + + <b>Acceleration that mimics human behavior</b> by easing the throttle at low speeds and adding extra power when taking off from a stop. + <b>ๆจกไปฟไบบ็ฑป่กŒไธบ็š„ๅŠ ้€Ÿ</b>๏ผšๅœจไฝŽ้€Ÿๆ—ถ่ฝป่ธฉๆฒน้—จ๏ผŒๅนถๅœจ่ตทๆญฅๆ—ถๆไพ›้ขๅค–ๅŠจๅŠ›ใ€‚ + + + Human-Like Following + ็ฑปไบบๅŒ–่ทŸ้š + + + Lead Detection Sensitivity + ๅ‰่ฝฆๆฃ€ๆต‹็ตๆ•ๅบฆ + + + <b>How sensitive openpilot is to detecting vehicles.</b> Higher sensitivity allows quicker detection at longer distances but may react to non-vehicle objects; lower sensitivity is more conservative and reduces false detections. + <b>openpilot ๅฏน่ฝฆ่พ†ๆฃ€ๆต‹็š„ๆ•ๆ„Ÿๅบฆใ€‚</b>ๆ›ด้ซ˜็š„ๆ•ๆ„Ÿๅบฆๅฏๅœจๆ›ด่ฟœ่ท็ฆปๆ›ดๅฟซๆฃ€ๆต‹๏ผŒไฝ†ๅฏ่ƒฝไผšๅฏน้ž่ฝฆ่พ†็‰ฉไฝ“ไบง็”Ÿๅๅบ”๏ผ›่พƒไฝŽ็š„ๆ•ๆ„Ÿๅบฆๆ›ดไฟๅฎˆๅนถๅ‡ๅฐ‘่ฏฏๆฃ€ใ€‚ + + + Maximum Acceleration + ๆœ€ๅคงๅŠ ้€Ÿๅบฆ + + + <b>Limit the strongest acceleration</b> openpilot can command. + <b>้™ๅˆถ</b>openpilotๅฏๆŒ‡ไปค็š„ๆœ€ๅผบๅŠ ้€Ÿๅบฆใ€‚ + + + "Taco Bell Run" Turn Speed Hack + โ€œTaco Bell Runโ€่ฝฌๅผฏ้™้€Ÿ็ ด่งฃ + + + <b>The turn-speed hack from comma's 2022 "Taco Bell Run".</b> Designed to slow down for left and right turns. + <b>ๆฅ่‡ช comma 2022 ๅนดโ€œTaco Bell Runโ€็š„่ฝฌๅผฏ้€Ÿๅบฆ hackใ€‚</b> ๆ—จๅœจๅœจๅทฆ่ฝฌๅ’Œๅณ่ฝฌๆ—ถๅ‡้€Ÿใ€‚ + + + Quality of Life + ็”Ÿๆดปๅ“่ดจ + + + <b>Miscellaneous acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>ๅ„็งๅŠ ้€ŸไธŽๅˆถๅŠจๆŽงๅˆถ็š„ๅ…ถไป–ๆ›ดๆ”น</b>๏ผŒ็”จไบŽๅพฎ่ฐƒ openpilot ็š„้ฉพ้ฉถๆ–นๅผใ€‚ + + + Cruise Interval + ่ทŸ่ฝฆ้—ด่ท + + + <b>How much the set speed increases or decreases</b> for each + or โ€“ cruise control button press. + <b>ๆฏๆฌกๆŒ‰ไธ‹ๅทก่ˆชๆŽงๅˆถ็š„ + ๆˆ– โ€“ ๆŒ‰้’ฎๆ—ถ</b> ่ฎพๅฎš่ฝฆ้€ŸๅขžๅŠ ๆˆ–ๅ‡ๅฐ‘็š„ๅน…ๅบฆ + + + Cruise Interval (Hold) + ๅทก่ˆช้—ด่ท๏ผˆๆŒ‰ไฝ๏ผ‰ + + + <b>How much the set speed increases or decreases while holding the + or โ€“ cruise control buttons.</b> + <b>ๆŒ‰ไฝๅทก่ˆชๆŽงๅˆถ็š„ + ๆˆ– โ€“ ๆŒ‰้’ฎๆ—ถ๏ผŒ่ฎพๅฎš่ฝฆ้€ŸๅขžๅŠ ๆˆ–ๅ‡ๅฐ‘็š„ๅน…ๅบฆใ€‚</b> + + + Force Stop at "Detected" Stop Lights/Signs + ๅœจโ€œๅทฒๆฃ€ๆต‹ๅˆฐโ€็š„็บข็ปฟ็ฏ/ๅœ่ฝฆๆ ‡ๅฟ—ๅค„ๅผบๅˆถๅœ่ฝฆ + + + <b>Force openpilot to stop whenever the driving model "detects" a red light or stop sign.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>ๅฝ“้ฉพ้ฉถๆจกๅž‹โ€œๆฃ€ๆต‹ๅˆฐโ€็บข็ฏๆˆ–ๅœๆญขๆ ‡ๅฟ—ๆ—ถ๏ผŒๅผบๅˆถ openpilot ๅœๆญขใ€‚</b><br><br><i><b>ๅ…่ดฃๅฃฐๆ˜Ž</b>๏ผšopenpilot ๅนถไธไผšๆ˜Ž็กฎๆฃ€ๆต‹ไบค้€šไฟกๅท็ฏๆˆ–ๅœๆญขๆ ‡ๅฟ—ใ€‚ๅœจโ€œๅฎž้ชŒๆจกๅผโ€ไธญ๏ผŒopenpilot ๅŸบไบŽๆ‘„ๅƒๅคด่พ“ๅ…ฅ่ฟ›่กŒ็ซฏๅˆฐ็ซฏ้ฉพ้ฉถๅ†ณ็ญ–๏ผŒ่ฟ™ๆ„ๅ‘ณ็€ๅณไฝฟๆฒกๆœ‰ๆ˜Žๆ˜พ็†็”ฑไนŸๅฏ่ƒฝไผšๅœ่ฝฆใ€‚</i> + + + Increase Stopped Distance by: + ๅขžๅŠ ๅœๆญข่ท็ฆป๏ผš + + + <b>Add extra space when stopped behind vehicles.</b> Increase for more room; decrease for shorter gaps. + <b>ๅœจ่ฝฆ่พ†ๅŽๆ–นๅœไธ‹ๆ—ถ็•™ๅ‡บ้ขๅค–็ฉบ้—ดใ€‚</b> ๅขžๅคงไปฅ็•™ๅ‡บๆ›ดๅคš็ฉบ้—ด๏ผ›ๅ‡ๅฐไปฅ็ผฉ็Ÿญ้—ด่ทใ€‚ + + + Map Accel/Decel to Gears + ๅฐ†ๅŠ ้€Ÿ/ๅ‡้€Ÿๆ˜ ๅฐ„ๅˆฐๆŒกไฝ + + + <b>Map the Acceleration or Deceleration profiles to the vehicle's "Eco" and "Sport" gear modes.</b> + <b>ๅฐ†ๅŠ ้€Ÿๆˆ–ๅ‡้€Ÿ้…็ฝฎๆ˜ ๅฐ„ๅˆฐ่ฝฆ่พ†็š„โ€œEcoโ€ๅ’Œโ€œSportโ€ๆกฃไฝๆจกๅผใ€‚</b> + + + Offset Set Speed by: + ๅฐ†่ฎพๅฎš้€Ÿๅบฆๅ็งปไธบ๏ผš + + + <b>Increase the set speed by the chosen offset.</b> For example, set +5 if you usually drive 5 over the limit. + <b>ๆŒ‰ๆ‰€้€‰ๅ็งป้‡ๆ้ซ˜่ฎพๅฎš้€Ÿๅบฆใ€‚</b> ไพ‹ๅฆ‚๏ผŒๅฆ‚ๆžœไฝ ้€šๅธธๆฏ”้™้€Ÿๅฟซ5๏ผŒๅˆ™่ฎพ็ฝฎไธบ+5ใ€‚ + + + Reverse Cruise Increase + ๅ€’่ฝฆๅทก่ˆชๅขžๅŠ  + + + <b>Reverse the cruise control button behavior</b> so a short press increases the set speed by 5 instead of 1. + <b>ๅ่ฝฌๅทก่ˆชๆŽงๅˆถๆŒ‰้’ฎ่กŒไธบ</b>๏ผŒไฝฟ็ŸญๆŒ‰ๅฐ†่ฎพๅฎš้€ŸๅบฆๅขžๅŠ  5 ่€Œไธๆ˜ฏ 1ใ€‚ + + + Increase Following Distance by: + ๅฐ†่ทŸ่ฝฆ่ท็ฆปๅขžๅŠ ๏ผš + + + Reduce Acceleration by: + ๅ‡ๅฐ‘ๅŠ ้€Ÿๅบฆ๏ผš + + + Reduce Speed in Curves by: + ๅœจๅผฏ้“ๅฐ†่ฝฆ้€Ÿ้™ไฝŽ๏ผš + + + Snow + ้›ช + + + <b>Driving adjustments for snowy conditions.</b> + <b>ๅœจ็งฏ้›ชๆกไปถไธ‹็š„้ฉพ้ฉถ่ฐƒๆ•ดใ€‚</b> + + + <b>Add extra space behind lead vehicles in snow.</b> Increase for more space; decrease for tighter gaps. + <b>ๅœจ็งฏ้›ชไธญไธŽๅ‰่ฝฆไฟๆŒๆ›ดๅคง่ฝฆ่ทใ€‚</b> ๅขžๅคงไปฅๆ‰ฉๅคง้—ด่ท๏ผ›ๅ‡ๅฐไปฅ็ผฉๅฐ้—ด้š™ใ€‚ + + + <b>Add extra buffer when stopped behind vehicles in snow.</b> Increase for more room; decrease for shorter gaps. + <b>ๅœจ้›ชๅคฉ่ทŸ่ฝฆๅœๆญขๆ—ถๅŠ ๅคง้ขๅค–็ผ“ๅ†ฒใ€‚</b> ๅขžๅคงไปฅ่Žทๅพ—ๆ›ดๅคš็ฉบ้—ด๏ผ›ๅ‡ๅฐไปฅ็ผฉ็Ÿญ่ฝฆ่ทใ€‚ + + + <b>Lower the maximum acceleration in snow.</b> Increase for softer takeoffs; decrease for quicker but less stable takeoffs. + <b>ๅœจ้›ชๅœฐไธญ้™ไฝŽๆœ€ๅคงๅŠ ้€Ÿๅบฆใ€‚</b> ๅขžๅŠ ไปฅ่Žทๅพ—ๆ›ดๆŸ”ๅ’Œ็š„่ตทๆญฅ๏ผ›ๅ‡ๅฐ‘ไปฅ่Žทๅพ—ๆ›ดๅฟซไฝ†็จณๅฎšๆ€ง่พƒๅทฎ็š„่ตทๆญฅใ€‚ + + + <b>Lower the desired speed while driving through curves in snow.</b> Increase for safer, gentler turns; decrease for more aggressive driving in curves. + <b>ๅœจ้›ชไธญ้€š่ฟ‡ๅผฏ้“ๆ—ถ้™ไฝŽๆœŸๆœ›่ฝฆ้€Ÿใ€‚</b> ๆ้ซ˜ๅฏๅฎž็Žฐๆ›ดๅฎ‰ๅ…จใ€ๆ›ดๅนณ้กบ็š„่ฝฌๅผฏ๏ผ›้™ไฝŽๅˆ™ๅœจๅผฏ้“ไธญๆ›ดๆฟ€่ฟ›้ฉพ้ฉถใ€‚ + + + Speed Limit Controller + ้™้€ŸๆŽงๅˆถๅ™จ + + + <b>Limit openpilot's maximum driving speed to the current speed limit</b> obtained from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + <b>ๅฐ† openpilot ็š„ๆœ€้ซ˜่กŒ้ฉถ้€Ÿๅบฆ้™ๅˆถไธบๅฝ“ๅ‰้™้€Ÿ</b>๏ผŒ่ฏฅ้™้€Ÿๆฅ่‡ชๅทฒไธ‹่ฝฝ็š„ๅœฐๅ›พใ€Mapboxใ€Navigate on openpilot๏ผŒๆˆ–ๅ—ๆ”ฏๆŒ่ฝฆ่พ†๏ผˆFordใ€Genesisใ€Hyundaiใ€Kiaใ€Lexusใ€Toyota๏ผ‰็š„ไปช่กจ็›˜ใ€‚ + + + Fallback Speed + ๅ›ž้€€้€Ÿๅบฆ + + + <b>The speed used by "Speed Limit Controller" when no speed limit is found.</b><br><br>- <b>Set Speed</b>: Use the cruise set speed<br>- <b>Experimental Mode</b>: Estimate the limit using the driving model<br>- <b>Previous Limit</b>: Keep using the last confirmed limit + <b>ๅฝ“ๆœชๆ‰พๅˆฐ้™้€Ÿๆ—ถ๏ผŒโ€œSpeed Limit Controllerโ€ไฝฟ็”จ็š„้€Ÿๅบฆใ€‚</b><br><br>- <b>่ฎพๅฎš้€Ÿๅบฆ</b>๏ผšไฝฟ็”จๅทก่ˆช่ฎพๅฎš้€Ÿๅบฆ<br>- <b>ๅฎž้ชŒๆจกๅผ</b>๏ผšไฝฟ็”จ้ฉพ้ฉถๆจกๅž‹ไผฐ่ฎก้™้€Ÿ<br>- <b>ๅ…ˆๅ‰้™้€Ÿ</b>๏ผš็ปง็ปญไฝฟ็”จไธŠๆฌก็กฎ่ฎค็š„้™้€Ÿ + + + Override Speed + ่ฆ†็›–้€Ÿๅบฆ + + + <b>The speed used by "Speed Limit Controller" after you manually drive faster than the posted limit.</b><br><br>- <b>Set with Gas Pedal</b>: Use the highest speed reached while pressing the gas<br>- <b>Max Set Speed</b>: Use the cruise set speed<br><br>Overrides clear when openpilot disengages. + <b>ๅฝ“ๆ‚จๆ‰‹ๅŠจ้ฉพ้ฉถ่ถ…่ฟ‡้™้€ŸๅŽ๏ผŒโ€œSpeed Limit Controllerโ€ ไฝฟ็”จ็š„้€Ÿๅบฆใ€‚</b><br><br>- <b>ไปฅๆฒน้—จ่ฎพๅฎš</b>๏ผšๅœจ่ธฉไฝๆฒน้—จๆ—ถไฝฟ็”จ่พพๅˆฐ็š„ๆœ€้ซ˜้€Ÿๅบฆ<br>- <b>ๆœ€้ซ˜่ฎพๅฎš้€Ÿๅบฆ</b>๏ผšไฝฟ็”จๅทก่ˆช่ฎพๅฎš้€Ÿๅบฆ<br><br>ๅฝ“ openpilot ่งฃ้™คๆŽฅ็ฎกๆ—ถ๏ผŒ่ฆ†็›–ๅฐ†่ขซๆธ…้™คใ€‚ + + + <b>Miscellaneous "Speed Limit Controller" changes</b> to fine-tune how openpilot drives. + <b>ๆ‚้กนโ€œ้™้€ŸๆŽงๅˆถๅ™จโ€ๆ›ดๆ”น</b>๏ผŒ็”จไบŽๅพฎ่ฐƒ openpilot ็š„้ฉพ้ฉถๆ–นๅผใ€‚ + + + Confirm New Speed Limits + ็กฎ่ฎคๆ–ฐ้™้€Ÿ + + + <b>Ask before changing to a new speed limit.</b> To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds. + <b>ๅœจๆ›ดๆ”นไธบๆ–ฐ็š„้™้€Ÿๅ‰่ฏข้—ฎใ€‚</b> ่ฆๆŽฅๅ—๏ผŒ่ฏท็‚นๅ‡ป้—ช็ƒ็š„ๅฑๅน•ๅฐ้ƒจไปถๆˆ–ๆŒ‰ไธ‹ๅทก่ˆชๅขžๅŠ ๆŒ‰้’ฎใ€‚่ฆๆ‹’็ป๏ผŒ่ฏทๆŒ‰ไธ‹ๅทก่ˆช้™ไฝŽๆŒ‰้’ฎๆˆ–ๅฟฝ็•ฅๆ็คบ30็ง’ใ€‚ + + + Force MPH from Dashboard + ไปŽไปช่กจๆฟๅผบๅˆถๅฏ็”จMPH + + + <b>Always read dashboard speed limit signs in mph.</b> Turn this on if the cluster shows mph but the limit is interpreted as km/h. + <b>ๅง‹็ปˆไปฅ mph ้˜…่ฏปไปช่กจ็›˜้™้€Ÿๆ ‡ๅฟ—ใ€‚</b> ๅฆ‚ๆžœไปช่กจๆ˜พ็คบไธบ mph๏ผŒไฝ†้™้€Ÿ่ขซ่งฃ้‡Šไธบ km/h๏ผŒ่ฏทๅผ€ๅฏๆญค้€‰้กนใ€‚ + + + Higher Limit Lookahead Time + ๆ›ด้ซ˜็š„้™้€Ÿๅ‰็žปๆ—ถ้—ด + + + <b>How far ahead openpilot anticipates upcoming higher speed limits</b> from downloaded map data. + <b>openpilot ไปŽไธ‹่ฝฝ็š„ๅœฐๅ›พๆ•ฐๆฎไธญ้ข„ๅˆคๅณๅฐ†ๅˆฐๆฅ็š„ๆ›ด้ซ˜้™้€Ÿ็š„ๆๅ‰่ท็ฆป</b> + + + Lower Limit Lookahead Time + ไธ‹้™ๅ‰็žปๆ—ถ้—ด + + + <b>How far ahead openpilot anticipates upcoming lower speed limits</b> from downloaded map data. + <b>openpilot ๆ นๆฎๅทฒไธ‹่ฝฝๅœฐๅ›พๆ•ฐๆฎ้ข„ๅˆคๅณๅฐ†ๅˆฐๆฅ็š„ๆ›ดไฝŽ้™้€Ÿ็š„ๆๅ‰่ท็ฆป</b> + + + Match Speed Limit on Engage + ๅœจๅฏ็”จๆ—ถๅŒน้…้™้€Ÿ + + + <b>When openpilot is first enabled, automatically set the max speed to the current posted limit.</b> + <b>้ฆ–ๆฌกๅฏ็”จ openpilot ๆ—ถ๏ผŒ่‡ชๅŠจๅฐ†ๆœ€้ซ˜้€Ÿๅบฆ่ฎพ็ฝฎไธบๅฝ“ๅ‰ๅ…ฌๅธƒ็š„้™้€Ÿใ€‚</b> + + + Use Mapbox as Fallback + ๅฐ† Mapbox ็”จไฝœๅค‡็”จ + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>ๅฝ“ๆฒกๆœ‰ๅ…ถไป–ๆฅๆบๅฏ็”จๆ—ถ๏ผŒไฝฟ็”จ Mapbox ็š„้™้€Ÿๆ•ฐๆฎใ€‚</b> + + + Speed Limit Source Priority + ้™้€Ÿๆฅๆบไผ˜ๅ…ˆ็บง + + + <b>The source order for speed limits</b> when more than one is available. + <b>ๅฝ“ๆœ‰ๅคšไธชๅฏ็”จๆ—ถ</b>็š„้™้€Ÿๆฅๆบไผ˜ๅ…ˆ้กบๅบ + + + Speed Limit Offsets + ้™้€Ÿๅ็งป + + + <b>Add an offset to the posted speed limit</b> to better match your driving style. + <b>ๅœจๅ…ฌๅ‘Š็š„้™้€ŸไธŠๆทปๅŠ ไธ€ไธชๅ็งป</b>๏ผŒไปฅๆ›ดๅฅฝๅœฐๅŒน้…ไฝ ็š„้ฉพ้ฉถ้ฃŽๆ ผใ€‚ Speed Offset (0โ€“24 mph) - ้€Ÿๅบฆๅ็งป๏ผˆ0โ€“24 ่‹ฑ้‡Œ/ๅฐๆ—ถ๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ0โ€“24 mph๏ผ‰ + + + <b>How much to offset posted speed-limits</b> between 0 and 24 mph. + <b>ๅฐ†ๆ ‡็คบ็š„้™้€Ÿๅ็งปๅคšๅฐ‘</b>๏ผŒ่Œƒๅ›ดไธบ 0 ๅˆฐ 24 mphใ€‚ Speed Offset (25โ€“34 mph) - ้€Ÿๅบฆๅ็งป๏ผˆ25โ€“34 mph๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ25โ€“34 mph๏ผ‰ + + + <b>How much to offset posted speed-limits</b> between 25 and 34 mph. + <b>ๅœจ25่‡ณ34 mphไน‹้—ดๅฐ†้™้€Ÿๅ็งปๅคšๅฐ‘</b>ใ€‚ Speed Offset (35โ€“44 mph) - ้€Ÿๅบฆๅ็งป๏ผˆ35โ€“44 mph๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ35โ€“44 mph๏ผ‰ + + + <b>How much to offset posted speed-limits</b> between 35 and 44 mph. + <b>ๅœจ 35 ่‡ณ 44 mph ไน‹้—ด๏ผŒๅ็งปๅ…ฌๅธƒ็š„้™้€Ÿๅคšๅฐ‘</b> Speed Offset (45โ€“54 mph) - ้€Ÿๅบฆๅ็งป๏ผˆ45โ€“54 mph๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ45โ€“54 mph๏ผ‰ + + + <b>How much to offset posted speed-limits</b> between 45 and 54 mph. + <b>ๅœจ45ๅˆฐ54 mphไน‹้—ด๏ผŒๅ็งปๆ ‡็คบ้™้€Ÿ็š„ๅน…ๅบฆ</b> Speed Offset (55โ€“64 mph) - ้€Ÿๅบฆๅ็งป๏ผˆ55โ€“64 ่‹ฑ้‡Œ/ๅฐๆ—ถ๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ55โ€“64 mph๏ผ‰ + + + <b>How much to offset posted speed-limits</b> between 55 and 64 mph. + <b>ๅœจ</b> 55 ๅˆฐ 64 mph <b>ไน‹้—ด๏ผŒๅ็งปๅทฒๅ‘ๅธƒ้™้€Ÿ็š„ๅน…ๅบฆ</b>ใ€‚ Speed Offset (65โ€“74 mph) - ้€Ÿๅบฆๅ็งป๏ผˆ65โ€“74 mph๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ65โ€“74 mph๏ผ‰ + + + <b>How much to offset posted speed-limits</b> between 65 and 74 mph. + <b>ๅœจ65ๅˆฐ74 mphไน‹้—ดๅ็งปๅผ ่ดด้™้€Ÿ็š„ๅน…ๅบฆ</b>ใ€‚ Speed Offset (75โ€“99 mph) - ้€Ÿๅบฆๅ็งป๏ผˆ75โ€“99 mph๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ75โ€“99 mph๏ผ‰ - Only For Detected Lanes - ไป…้€‚็”จไบŽๆฃ€ๆต‹ๅˆฐ็š„่ฝฆ้“ + <b>How much to offset posted speed-limits</b> between 75 and 99 mph. + <b>ๅฏนๅทฒๅ…ฌๅธƒ้™้€Ÿๅ็งปๅคšๅฐ‘</b>๏ผŒ่Œƒๅ›ดไธบ 75 ๅˆฐ 99 mphใ€‚ + + + Visual Settings + ่ง†่ง‰่ฎพ็ฝฎ + + + <b>Visual "Speed Limit Controller" changes</b> to fine-tune how the driving screen looks. + <b>่ง†่ง‰โ€œ้™้€ŸๆŽงๅˆถๅ™จโ€ๆ›ดๆ”น</b>็”จไบŽๅพฎ่ฐƒ้ฉพ้ฉถๅฑๅน•็š„ๅค–่ง‚ใ€‚ + + + Show Speed Limit Offset + ๆ˜พ็คบ้™้€Ÿๅ็งป + + + <b>Show the current offset from the posted limit</b> on the driving screen. + <b>ๅœจ้ฉพ้ฉถๅฑๅน•ไธŠๆ˜พ็คบไธŽๆ ‡็คบ้™้€Ÿ็š„ๅฝ“ๅ‰ๅๅทฎ</b> + + + Show Speed Limit Sources + ๆ˜พ็คบ้™้€Ÿๆฅๆบ + + + <b>Display the speed-limit sources and their current values</b> on the driving screen. + <b>ๅœจ้ฉพ้ฉถๅฑๅน•ไธŠๆ˜พ็คบ้™้€ŸๆฅๆบๅŠๅ…ถๅฝ“ๅ‰ๅ€ผ</b> + + + seconds + ็ง’ + + + m/sยฒ + ็ฑณ/็ง’ยฒ + + + mph + ่‹ฑ้‡Œ/ๅฐๆ—ถ + + + With Lead + ๆœ‰ๅ‰่ฝฆ + + + <b>Switch to "Experimental Mode" when driving below this speed with a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>ๅœจๆœ‰ๅ‰่ฝฆไธ”่ฝฆ้€ŸไฝŽไบŽๆญค้€Ÿๅบฆๆ—ถๅˆ‡ๆขๅˆฐโ€œๅฎž้ชŒๆจกๅผโ€</b>๏ผŒไปฅๅธฎๅŠฉ openpilot ๆ›ด้กบ็•…ๅœฐๅค„็†ไฝŽ้€Ÿๆƒ…ๅ†ตใ€‚ + + + Slower Lead + ๅ‰่ฝฆๆ›ดๆ…ข + + + Stopped Lead + ๅทฒๅœ็š„ๅ‰่ฝฆ + + + Intersections + ไบคๅ‰่ทฏๅฃ + + + Turns + ่ฝฌๅผฏ + + + Off + ๅ…ณ้—ญ + + + second + ็ง’ + + + Not For Detected Lanes + ไธ้€‚็”จไบŽๆฃ€ๆต‹ๅˆฐ็š„่ฝฆ้“ + + + RESET + ้‡็ฝฎ + + + Are you sure you want to completely reset your curvature data? + ๆ‚จ็กฎๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎๆ‚จ็š„ๆ›ฒ็އๆ•ฐๆฎๅ—๏ผŸ + + + Eco + ็ปๆตŽ + + + Sport + ่ฟๅŠจ + + + Sport+ + ่ฟๅŠจ+ + + + feet + ่‹ฑๅฐบ + + + Acceleration + ๅŠ ้€Ÿๅบฆ + + + Deceleration + ๅ‡้€Ÿ + + + MANAGE + ็ฎก็† + + + Set Speed + ่ฎพๅฎš้€Ÿๅบฆ + + + Experimental Mode + ๅฎž้ชŒๆจกๅผ + + + Previous Limit + ไธŠไธ€ไธช้™้€Ÿ + + + None + ๆ—  + + + Set With Gas Pedal + ็”จๆฒน้—จ่ธๆฟ่ฎพๅฎš + + + Max Set Speed + ๆœ€ๅคง่ฎพๅฎš้€Ÿๅบฆ + + + SELECT + ้€‰ๆ‹ฉ + + + Dashboard + ไปช่กจๆฟ + + + Map Data + ๅœฐๅ›พๆ•ฐๆฎ + + + Navigation + ๅฏผ่ˆช + + + Highest + ๆœ€้ซ˜ + + + Lowest + ๆœ€ไฝŽ + + + Select your primary priority + ้€‰ๆ‹ฉไฝ ็š„ไธป่ฆไผ˜ๅ…ˆ็บง + + + Select your secondary priority + ้€‰ๆ‹ฉไฝ ็š„ๆฌก่ฆไผ˜ๅ…ˆ็บง + + + Select your tertiary priority + ้€‰ๆ‹ฉไฝ ็š„็ฌฌไธ‰็บงไผ˜ๅ…ˆ็บง + + + Lower Limits + ไธ‹้™ + + + Higher Limits + ๆ›ด้ซ˜็š„้™้€Ÿ + + + Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? + ๆ‚จ็กฎๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎ<b>ไบค้€šๆจกๅผ</b>็š„่ฎพ็ฝฎๅ—๏ผŸ + + + Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? + ๆ‚จ็กฎๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎ<b>่ฟ›ๅ–</b>ไธชๆ€ง็š„่ฎพ็ฝฎๅ—๏ผŸ + + + Are you sure you want to completely reset your settings for the <b>Standard</b> personality? + ๆ‚จ็กฎๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎ<b>ๆ ‡ๅ‡†</b>ๆ€งๆ ผ็š„่ฎพ็ฝฎๅ—๏ผŸ + + + Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? + ๆ‚จ็กฎๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎ<b>ๅฎฝๆพ</b>ไธชๆ€ง็š„่ฎพ็ฝฎๅ—๏ผŸ + + + foot + ่‹ฑๅฐบ + + + meter + ็ฑณ + + + meters + ็ฑณ + + + km/h + ๅ…ฌ้‡Œ/ๅฐๆ—ถ Speed Offset (0โ€“29 km/h) - ้€Ÿๅบฆๅ็งป๏ผˆ0โ€“29 km/h๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ0โ€“29 km/h๏ผ‰ Speed Offset (30โ€“49 km/h) - ้€Ÿๅบฆๅ็งป๏ผˆ30โ€“49 km/h๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ30โ€“49 km/h๏ผ‰ Speed Offset (50โ€“59 km/h) - ้€Ÿๅบฆๅ็งป๏ผˆ50โ€“59 km/h๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ50โ€“59 km/h๏ผ‰ Speed Offset (60โ€“79 km/h) - ้€Ÿๅบฆๅ็งป๏ผˆ60โ€“79 km/h๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ60โ€“79 km/h๏ผ‰ Speed Offset (80โ€“99 km/h) - ้€Ÿๅบฆๅ็งป๏ผˆ80โ€“99 km/h๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ80โ€“99 km/h๏ผ‰ Speed Offset (100โ€“119 km/h) - ้€Ÿๅบฆๅ็งป๏ผˆ100โ€“119 km/h๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ100โ€“119 km/h๏ผ‰ Speed Offset (120โ€“140 km/h) - ้€Ÿๅบฆๅ็งป๏ผˆ120โ€“140 km/h๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ120โ€“140 km/h๏ผ‰ - Curve Speed Control - ๆ›ฒ็บฟ้€ŸๅบฆๆŽงๅˆถ - - - Automatically slow down for upcoming curves using downloaded maps or the driving model. - ไฝฟ็”จไธ‹่ฝฝ็š„ๅœฐๅ›พๆˆ–้ฉพ้ฉถๆจกๅž‹่‡ชๅŠจๅ‡้€Ÿไปฅๅบ”ๅฏนๅณๅฐ†ๅˆฐๆฅ็š„ๅผฏ้“ใ€‚ - - - Curve Detection Method - ๆ›ฒ็บฟๆฃ€ๆต‹ๆ–นๆณ• - - - How curves are detected. <b>Map-Based</b> uses downloaded map data to identify curves and determine the appropriate speed in which to handle them at, while <b>Vision</b> relies solely on the driving model. - ๅฆ‚ไฝ•ๆฃ€ๆต‹ๆ›ฒ็บฟใ€‚<b>ๅŸบไบŽๅœฐๅ›พ</b>ไฝฟ็”จไธ‹่ฝฝ็š„ๅœฐๅ›พๆ•ฐๆฎๆฅ่ฏ†ๅˆซๆ›ฒ็บฟๅนถ็กฎๅฎšๅค„็†ๅฎƒไปฌ็š„้€‚ๅฝ“้€Ÿๅบฆ๏ผŒ่€Œ<b>่ง†่ง‰</b>ๅˆ™ๅฎŒๅ…จไพ่ต–ไบŽ้ฉพ้ฉถๆจกๅž‹ใ€‚ - - - Curve Detection Failsafe - ๆ›ฒ็บฟๆฃ€ๆต‹ๆ•…้šœไฟๆŠค - - - Only trigger <b>Curve Speed Control</b> if a curve is detected with the model while using the <b>Map-Based</b> method. Useful to help prevent false positives. - ไป…ๅœจไฝฟ็”จ<b>ๅŸบไบŽๅœฐๅ›พ</b>ๆ–นๆณ•ๆ—ถๆฃ€ๆต‹ๅˆฐๆ›ฒ็บฟๆ—ถ่งฆๅ‘<b>ๆ›ฒ็บฟ้€ŸๅบฆๆŽงๅˆถ</b>ใ€‚ๆœ‰ๅŠฉไบŽ้˜ฒๆญข่ฏฏๆŠฅใ€‚ - - - Curve Detection Sensitivity - ๆ›ฒ็บฟๆฃ€ๆต‹็ตๆ•ๅบฆ - - - How sensitive openpilot is when detecting curves. Higher values trigger earlier responses at the risk of triggering too often, while lower values increase confidence at the risk of triggering too infrequently. - openpilotๅœจๆฃ€ๆต‹ๆ›ฒ็บฟๆ—ถ็š„ๆ•ๆ„Ÿๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผไผšๅœจๆ›ดๆ—ฉ็š„ๆ—ถ้—ด่งฆๅ‘ๅ“ๅบ”๏ผŒไฝ†ๅฏ่ƒฝไผš่ฟ‡ไบŽ้ข‘็น่งฆๅ‘๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผไผšๅขžๅŠ ไฟกๅฟƒ๏ผŒไฝ†ๅฏ่ƒฝ่งฆๅ‘่ฟ‡ไบŽไธ้ข‘็นใ€‚ - - - Curve Speed Aggressiveness - ๆ›ฒ็บฟ้€Ÿๅบฆๆฟ€่ฟ›ๆ€ง - - - How aggressive openpilot is when navigating through curves. Higher values result in faster turns but may reduce comfort or stability, while lower values result in slower, smoother turns at the risk of being overly cautious. - openpilotๅœจ้€š่ฟ‡ๆ›ฒ็บฟๆ—ถ็š„ๆฟ€่ฟ›็จ‹ๅบฆใ€‚่พƒ้ซ˜็š„ๅ€ผไผšๅฏผ่‡ด่ฝฌๅผฏ้€Ÿๅบฆๆ›ดๅฟซ๏ผŒไฝ†ๅฏ่ƒฝไผš้™ไฝŽ่ˆ’้€‚ๆ€งๆˆ–็จณๅฎšๆ€ง๏ผŒ่€Œ่พƒไฝŽ็š„ๅ€ผไผšๅฏผ่‡ด่ฝฌๅผฏ้€Ÿๅบฆ่พƒๆ…ขใ€ๆ›ดๅนณ็จณ๏ผŒไฝ†ๅฏ่ƒฝ่ฟ‡ไบŽ่ฐจๆ…Žใ€‚ - - - Map Based - ๅŸบไบŽๅœฐๅ›พ - - - Vision - ๆ„ฟๆ™ฏ - - - The <b>Map Based</b> option is only available when some <b>Map Data</b> has been downloaded! - <b>ๅŸบไบŽๅœฐๅ›พ</b>็š„้€‰้กนไป…ๅœจไธ‹่ฝฝไบ†ไธ€ไบ›<b>ๅœฐๅ›พๆ•ฐๆฎ</b>ๅŽๅฏ็”จ๏ผ + <b>Following behavior that mimics human drivers</b> by closing gaps behind faster vehicles for quicker takeoffs and dynamically adjusting the desired following distance for gentler, more efficient braking. + <b>ๆจกไปฟไบบ็ฑป้ฉพ้ฉถๅ‘˜็š„่ทŸ่ฝฆ่กŒไธบ</b>๏ผŒ้€š่ฟ‡ๅœจๆ›ดๅฟซ่ฝฆ่พ†ๅŽๆ–น็ผฉๅฐ่ฝฆ่ทไปฅๆ›ดๅฟซ่ตทๆญฅ๏ผŒๅนถๅŠจๆ€่ฐƒๆ•ดๆœŸๆœ›่ทŸ่ฝฆ่ท็ฆป๏ผŒไปฅๅฎž็Žฐๆ›ดๅนณ้กบใ€ๆ›ด้ซ˜ๆ•ˆ็š„ๅˆถๅŠจใ€‚ FrogPilotManageControl MANAGE - ็ฎก็† + ็ฎก็† FrogPilotMapsPanel Manually - ๆ‰‹ๅŠจๅœฐ + ๆ‰‹ๅŠจ Weekly - ๆฏๅ‘จ + ๆฏๅ‘จ Monthly - ๆฏๆœˆ + ๆฏๆœˆ Automatically Update Maps - ่‡ชๅŠจๆ›ดๆ–ฐๅœฐๅ›พ + ่‡ชๅŠจๆ›ดๆ–ฐๅœฐๅ›พ - The frequency at which maps sync with the latest OpenStreetMap (OSM) changes. Weekly updates occur every Sunday, and monthly updates occur on the 1st. - ๅœฐๅ›พไธŽๆœ€ๆ–ฐ็š„OpenStreetMap (OSM)ๆ›ดๆ”นๅŒๆญฅ็š„้ข‘็އใ€‚ๆฏๅ‘จๆ›ดๆ–ฐๅœจๆฏไธชๆ˜ŸๆœŸๅคฉ่ฟ›่กŒ๏ผŒๆฏๆœˆๆ›ดๆ–ฐๅœจๆฏๆœˆ1ๆ—ฅ่ฟ›่กŒใ€‚ - - - Data Sources - ๆ•ฐๆฎๆบ - - - Select map data sources to use with "Curve Speed Control" and "Speed Limit Controller". - ้€‰ๆ‹ฉ็”จไบŽโ€œๆ›ฒ็บฟ้€ŸๅบฆๆŽงๅˆถโ€ๅ’Œโ€œ้€Ÿๅบฆ้™ๅˆถๆŽงๅˆถๅ™จโ€็š„ๅœฐๅ›พๆ•ฐๆฎๆบใ€‚ - - - COUNTRIES - ๅ›ฝๅฎถ - - - STATES - ็Šถๆ€ + <b>How often maps update</b> from "OpenStreetMap (OSM)" with the latest speed limit information. Weekly updates run every Sunday; monthly updates run on the 1st. + <b>ๅœฐๅ›พๆ›ดๆ–ฐ้ข‘็އ</b>๏ผšๆฅ่‡ชโ€œOpenStreetMap (OSM)โ€็š„ๆœ€ๆ–ฐ้™้€Ÿไฟกๆฏใ€‚ๆฏๅ‘จๆ›ดๆ–ฐๅœจๆฏๅ‘จๆ—ฅ่ฟ›่กŒ๏ผ›ๆฏๆœˆๆ›ดๆ–ฐๅœจๆฏๆœˆ1ๆ—ฅ่ฟ›่กŒใ€‚ Download Maps - ไธ‹่ฝฝๅœฐๅ›พ + ไธ‹่ฝฝๅœฐๅ›พ DOWNLOAD - ไธ‹่ฝฝ + ไธ‹่ฝฝ - Download the selected maps to use with "Curve Speed Control" and "Speed Limit Controller". - ไธ‹่ฝฝๆ‰€้€‰ๅœฐๅ›พไปฅ็”จไบŽโ€œๆ›ฒ็บฟ้€ŸๅบฆๆŽงๅˆถโ€ๅ’Œโ€œ้€Ÿๅบฆ้™ๅˆถๆŽงๅˆถๅ™จโ€ใ€‚ + <b>Manually update your selected map sources</b> so "Speed Limit Controller" has the latest speed limit information. + <b>ๆ‰‹ๅŠจๆ›ดๆ–ฐๆ‚จ้€‰ๆ‹ฉ็š„ๅœฐๅ›พๆฅๆบ</b>๏ผŒไปฅไพฟโ€œSpeed Limit Controllerโ€ๆ‹ฅๆœ‰ๆœ€ๆ–ฐ็š„้™้€Ÿไฟกๆฏใ€‚ CANCEL - ๅ–ๆถˆ + ๅ–ๆถˆ - Are you sure you want to cancel the download? - ๆ‚จ็กฎๅฎš่ฆๅ–ๆถˆไธ‹่ฝฝๅ—๏ผŸ + Cancel the download? + ๅ–ๆถˆไธ‹่ฝฝ๏ผŸ - Download Completion ETA - ไธ‹่ฝฝๅฎŒๆˆ้ข„่ฎกๆ—ถ้—ด + Last Updated + ๆœ€่ฟ‘ๆ›ดๆ–ฐ - Download Progress - ไธ‹่ฝฝ่ฟ›ๅบฆ + Map Sources + ๅœฐๅ›พๆฅๆบ - Download Time Elapsed - ไธ‹่ฝฝๆ—ถ้—ดๅทฒ่ฟ‡ + <b>Select the countries or U.S. states to use with "Speed Limit Controller".</b> + <b>้€‰ๆ‹ฉไธŽโ€œ้€Ÿๅบฆ้™ๅˆถๆŽงๅˆถๅ™จโ€ไธ€่ตทไฝฟ็”จ็š„ๅ›ฝๅฎถๆˆ–็พŽๅ›ฝๅทžใ€‚</b> - Maps Last Updated - ๅœฐๅ›พๆœ€ๅŽๆ›ดๆ–ฐๆ—ฅๆœŸ + COUNTRIES + ๅ›ฝๅฎถ - Maps Size - ๅœฐๅ›พๅคงๅฐ + STATES + ็Šถๆ€ + + + Progress + ่ฟ›ๅบฆ + + + Time Elapsed + ๅทฒ็”จๆ—ถ้—ด + + + Time Remaining + ๅ‰ฉไฝ™ๆ—ถ้—ด Remove Maps - ็งป้™คๅœฐๅ›พ + ็งป้™คๅœฐๅ›พ REMOVE - ็งป้™ค + ็งป้™ค - Remove downloaded maps to clear up storage space. - ๅˆ ้™คๅทฒไธ‹่ฝฝ็š„ๅœฐๅ›พไปฅ้‡Šๆ”พๅญ˜ๅ‚จ็ฉบ้—ดใ€‚ + <b>Delete downloaded map data</b> to free up storage space. + <b>ๅˆ ้™คๅทฒไธ‹่ฝฝ็š„ๅœฐๅ›พๆ•ฐๆฎ</b>ไปฅ้‡Šๆ”พๅญ˜ๅ‚จ็ฉบ้—ดใ€‚ - Are you sure you want to delete all of your downloaded maps? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คๆ‰€ๆœ‰ๅทฒไธ‹่ฝฝ็š„ๅœฐๅ›พๅ—๏ผŸ + Delete all downloaded maps? + ๅˆ ้™คๆ‰€ๆœ‰ๅทฒไธ‹่ฝฝ็š„ๅœฐๅ›พ๏ผŸ - Reset Map Downloader - ้‡็ฝฎๅœฐๅ›พไธ‹่ฝฝๅ™จ + Reset Downloader + ้‡็ฝฎไธ‹่ฝฝๅ™จ RESET - ้‡็ฝฎ + ้‡็ฝฎ - Reset the map downloader. Use if you're running into issues with downloading maps. - ้‡็ฝฎๅœฐๅ›พไธ‹่ฝฝๅ™จใ€‚ๅฆ‚ๆžœๆ‚จๅœจไธ‹่ฝฝๅœฐๅ›พๆ—ถ้‡ๅˆฐ้—ฎ้ข˜๏ผŒ่ฏทไฝฟ็”จใ€‚ + <b>Reset the map downloader.</b> Use this if downloads are stuck or failing. + <b>้‡็ฝฎๅœฐๅ›พไธ‹่ฝฝๅ™จใ€‚</b> ๅฆ‚ๆžœไธ‹่ฝฝๅกไฝๆˆ–ๅคฑ่ดฅ๏ผŒ่ฏทไฝฟ็”จๆญค้€‰้กนใ€‚ - Are you sure you want to reset the map downloader? This will force a reboot once completed. - ๆ‚จ็กฎๅฎš่ฆ้‡็ฝฎๅœฐๅ›พไธ‹่ฝฝๅ™จๅ—๏ผŸ่ฟ™ๅฐ†ๅœจๅฎŒๆˆๅŽๅผบๅˆถ้‡ๅฏใ€‚ + Reset the map downloader? Your device will reboot afterward. + ้‡็ฝฎๅœฐๅ›พไธ‹่ฝฝๅ™จ๏ผŸไน‹ๅŽ่ฎพๅค‡ๅฐ†ไผš้‡ๅฏใ€‚ Reset - ้‡็ฝฎ + ้‡็ฝฎ Resetting... - ้‡็ฝฎไธญ... + ๆญฃๅœจ้‡็ฝฎโ€ฆ Reset! - ้‡็ฝฎ๏ผ + ้‡็ฝฎ๏ผ Rebooting... - ้‡ๅฏไธญ... + ๆญฃๅœจ้‡ๅฏโ€ฆ + + + Storage Used + ๅทฒ็”จๅญ˜ๅ‚จ Africa - ้žๆดฒ + ้žๆดฒ Antarctica - ๅ—ๆžๆดฒ + ๅ—ๆžๆดฒ Asia - ไบšๆดฒ + ไบšๆดฒ Europe - ๆฌงๆดฒ + ๆฌงๆดฒ North America - ๅŒ—็พŽๆดฒ + ๅŒ—็พŽๆดฒ Oceania - ๅคงๆด‹ๆดฒ + ๅคงๆด‹ๆดฒ South America - ๅ—็พŽๆดฒ + ๅ—็พŽๆดฒ United States - Midwest - ็พŽๅ›ฝ - ไธญ่ฅฟ้ƒจ + ็พŽๅ›ฝ - ไธญ่ฅฟ้ƒจ United States - Northeast - ็พŽๅ›ฝ - ไธœๅŒ—้ƒจ + ็พŽๅ›ฝโ€”โ€”ไธœๅŒ—้ƒจ United States - South - ็พŽๅ›ฝ - ๅ—้ƒจ + ็พŽๅ›ฝ-ๅ—้ƒจ United States - West - ็พŽๅ›ฝ - ่ฅฟ้ƒจ + ็พŽๅ›ฝ - ่ฅฟ้ƒจ United States - Territories - ็พŽๅ›ฝ - ้ข†ๅœŸ - - - CANCELLED - ๅทฒๅ–ๆถˆ + ็พŽๅ›ฝ - ๅฑžๅœฐ Offline... - ็ฆป็บฟ... + ็ฆป็บฟโ€ฆ + + + CANCELLED + ๅทฒๅ–ๆถˆ FrogPilotModelPanel Automatically Download New Models - ่‡ชๅŠจไธ‹่ฝฝๆ–ฐๆจกๅž‹ + ่‡ชๅŠจไธ‹่ฝฝๆ–ฐๆจกๅž‹ - Automatically download new driving models as they become available. - ่‡ชๅŠจไธ‹่ฝฝๆ–ฐ็š„้ฉพ้ฉถๆจกๅž‹๏ผŒไธ€ๆ—ฆๅฎƒไปฌๅฏ็”จใ€‚ + <b>Automatically download new driving models</b> as they become available. + <b>ๅœจๆœ‰ๆ–ฐ้ฉพ้ฉถๆจกๅž‹ๅฏ็”จๆ—ถ่‡ชๅŠจไธ‹่ฝฝ</b>ใ€‚</b Delete Driving Models - ๅˆ ้™ค้ฉพ้ฉถๆจกๅž‹ + ๅˆ ้™ค้ฉพ้ฉถๆจกๅž‹ - Delete driving models from the device. - ไปŽ่ฎพๅค‡ไธญๅˆ ้™ค้ฉพ้ฉถๆจกๅž‹ใ€‚ + <b>Delete downloaded driving models</b> to free up storage space. + <b>ๅˆ ้™คๅทฒไธ‹่ฝฝ็š„้ฉพ้ฉถๆจกๅž‹</b>ไปฅ้‡Šๆ”พๅญ˜ๅ‚จ็ฉบ้—ดใ€‚ Download Driving Models - ไธ‹่ฝฝ้ฉพ้ฉถๆจกๅž‹ + ไธ‹่ฝฝ้ฉพ้ฉถๆจกๅž‹ - Download driving models to the device. - ๅฐ†้ฉพ้ฉถๆจกๅž‹ไธ‹่ฝฝๅˆฐ่ฎพๅค‡ใ€‚ + <b>Manually download driving models</b> to the device. + <b>ๆ‰‹ๅŠจไธ‹่ฝฝ้ฉพ้ฉถๆจกๅž‹</b>ๅˆฐ่ฎพๅค‡ใ€‚ Model Randomizer - ๆจกๅž‹้šๆœบๅ™จ + ๆจกๅž‹้šๆœบๅ™จ - Driving models are chosen at random each drive and feedback prompts are used to find the model that best suits your needs. - ๆฏๆฌก้ฉพ้ฉถๆ—ถ้ƒฝไผš้šๆœบ้€‰ๆ‹ฉ้ฉพ้ฉถๆจกๅž‹๏ผŒๅนถไฝฟ็”จๅ้ฆˆๆ็คบๆฅๆ‰พๅˆฐๆœ€้€‚ๅˆๆ‚จ้œ€ๆฑ‚็š„ๆจกๅž‹ใ€‚ + <b>Select a random driving model each drive</b> and use feedback prompts at the end of the drive to help find the model that best suits you! + <b>ๆฏๆฌก่กŒ้ฉถ้šๆœบ้€‰ๆ‹ฉไธ€ไธช้ฉพ้ฉถๆจกๅž‹</b>๏ผŒๅนถๅœจ่กŒ็จ‹็ป“ๆŸๆ—ถไฝฟ็”จๅ้ฆˆๆ็คบ๏ผŒๅธฎๅŠฉๆ‰พๅˆฐๆœ€้€‚ๅˆไฝ ็š„ๆจกๅž‹๏ผ Manage Model Blacklist - ็ฎก็†ๆจกๅž‹้ป‘ๅๅ• + ็ฎก็†ๆจกๅž‹้ป‘ๅๅ• - Add or remove models from the <b>Model Randomizer</b>'s blacklist list. - ๅœจ<b>ๆจกๅž‹้šๆœบๅ™จ</b>็š„้ป‘ๅๅ•ๅˆ—่กจไธญๆทปๅŠ ๆˆ–ๅˆ ้™คๆจกๅž‹ใ€‚ + <b>Add or remove driving models from the "Model Randomizer" blacklist.</b> + <b>ๅœจโ€œๆจกๅž‹้šๆœบๅ™จโ€้ป‘ๅๅ•ไธญๆทปๅŠ ๆˆ–็งป้™ค้ฉพ้ฉถๆจกๅž‹ใ€‚</b> Manage Model Ratings - ็ฎก็†ๆจกๅž‹่ฏ„ๅˆ† + ็ฎก็†ๆจกๅž‹่ฏ„ๅˆ† - Reset or view the saved ratings for the driving models. - ้‡็ฝฎๆˆ–ๆŸฅ็œ‹้ฉพ้ฉถๆจกๅž‹็š„ไฟๅญ˜่ฏ„ๅˆ†ใ€‚ + <b>View or reset saved model ratings</b> used by the "Model Randomizer". + <b>ๆŸฅ็œ‹ๆˆ–้‡็ฝฎโ€œๆจกๅž‹้šๆœบๅ™จโ€ไฝฟ็”จ็š„ๅทฒไฟๅญ˜ๆจกๅž‹่ฏ„ๅˆ†</b>ใ€‚ Select Driving Model - ้€‰ๆ‹ฉ้ฉพ้ฉถๆจกๅผ + ้€‰ๆ‹ฉ้ฉพ้ฉถๆจกๅž‹ - Select the active driving model. - ้€‰ๆ‹ฉไธปๅŠจ้ฉพ้ฉถๆจกๅผใ€‚ + <b>Choose which driving model openpilot uses.</b> + <b>้€‰ๆ‹ฉ openpilot ไฝฟ็”จ็š„้ฉพ้ฉถๆจกๅž‹ใ€‚</b> + + + Update Model Manager + ๆ›ดๆ–ฐๆจกๅž‹็ฎก็†ๅ™จ + + + <b>Update the "Model Manager"</b> to support the latest models. + <b>ๆ›ดๆ–ฐโ€œๆจกๅž‹็ฎก็†ๅ™จโ€</b>ไปฅๆ”ฏๆŒๆœ€ๆ–ฐๆจกๅž‹ใ€‚ DELETE - ๅˆ ้™ค + ๅˆ ้™ค DELETE ALL - ๅˆ ้™คๆ‰€ๆœ‰ + ๅ…จ้ƒจๅˆ ้™ค Select a driving model to delete - ้€‰ๆ‹ฉ่ฆๅˆ ้™ค็š„้ฉพ้ฉถๆจกๅž‹ + ้€‰ๆ‹ฉ่ฆๅˆ ้™ค็š„้ฉพ้ฉถๆจกๅž‹ Are you sure you want to delete the "%1" model? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คโ€œ%1โ€ๆจกๅž‹ๅ—๏ผŸ + ็กฎๅฎš่ฆๅˆ ้™คโ€œ%1โ€ๆจกๅž‹ๅ—๏ผŸ Delete - ๅˆ ้™ค + ๅˆ ้™ค Are you sure you want to delete all of your downloaded driving models? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คๆ‰€ๆœ‰ๅทฒไธ‹่ฝฝ็š„้ฉพ้ฉถๆจกๅž‹ๅ—๏ผŸ + ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คๆ‰€ๆœ‰ๅทฒไธ‹่ฝฝ็š„้ฉพ้ฉถๆจกๅž‹ๅ—๏ผŸ DOWNLOAD - ไธ‹่ฝฝ + ไธ‹่ฝฝ DOWNLOAD ALL - ๅ…จ้ƒจไธ‹่ฝฝ + ๅ…จ้ƒจไธ‹่ฝฝ - Select a driving model to download - ้€‰ๆ‹ฉไธ€ไธช้ฉพ้ฉถๆจกๅž‹่ฟ›่กŒไธ‹่ฝฝ + Tinygrad is out of date and must be updated before you can download new models. Update now? + Tinygrad ๅทฒ่ฟ‡ๆœŸ๏ผŒๅฟ…้กปๆ›ดๆ–ฐๅŽๆ‰่ƒฝไธ‹่ฝฝๆ–ฐๆจกๅž‹ใ€‚็Žฐๅœจๆ›ดๆ–ฐๅ—๏ผŸ + + + Updating Tinygrad will delete all existing Tinygrad-based models which will need to be re-downloaded. Proceed? + ๆ›ดๆ–ฐ Tinygrad ๅฐ†ๅˆ ้™คๆ‰€ๆœ‰ๅŸบไบŽ Tinygrad ็š„็Žฐๆœ‰ๆจกๅž‹๏ผŒไธ”้œ€่ฆ้‡ๆ–ฐไธ‹่ฝฝใ€‚ๆ˜ฏๅฆ็ปง็ปญ๏ผŸ CANCEL - ๅ–ๆถˆ + ๅ–ๆถˆ + + + Updating... + ๆญฃๅœจๆ›ดๆ–ฐโ€ฆ + + + Select a driving model to download + ้€‰ๆ‹ฉ่ฆไธ‹่ฝฝ็š„้ฉพ้ฉถๆจกๅž‹ ADD - ๆทปๅŠ  + ๆทปๅŠ  REMOVE - ็งป้™ค + ็งป้™ค REMOVE ALL - ๅ…จ้ƒจๅˆ ้™ค + ๅ…จ้ƒจ็งป้™ค - There are no more models to blacklist! The only available model is "%1"! - ๆฒกๆœ‰ๆ›ดๅคš็š„ๆจกๅž‹ๅฏไพ›ๅˆ—ๅ…ฅ้ป‘ๅๅ•๏ผๅ”ฏไธ€ๅฏ็”จ็š„ๆจกๅž‹ๆ˜ฏโ€œ%1โ€๏ผ + There are no more driving models to blacklist. The only available model is "%1"! + ๆฒกๆœ‰ๆ›ดๅคšๅฏๅŠ ๅ…ฅ้ป‘ๅๅ•็š„้ฉพ้ฉถๆจกๅž‹ใ€‚ๅ”ฏไธ€ๅฏ็”จ็š„ๆจกๅž‹ๆ˜ฏโ€œ%1โ€๏ผ - Select a model to add to the blacklist - ้€‰ๆ‹ฉไธ€ไธชๆจกๅž‹ๆทปๅŠ ๅˆฐ้ป‘ๅๅ•ไธญ + Select a driving model to add to the blacklist + ้€‰ๆ‹ฉ่ฆๆทปๅŠ ๅˆฐ้ป‘ๅๅ•็š„้ฉพ้ฉถๆจกๅž‹ Are you sure you want to add the "%1" model to the blacklist? - ๆ‚จ็กฎๅฎš่ฆๅฐ†โ€œ%1โ€ๆจกๅž‹ๆทปๅŠ ๅˆฐ้ป‘ๅๅ•ๅ—๏ผŸ + ๆ‚จ็กฎๅฎš่ฆๅฐ†โ€œ%1โ€ๆจกๅž‹ๆทปๅŠ ๅˆฐ้ป‘ๅๅ•ๅ—๏ผŸ Add - ๆทปๅŠ  + ๆทปๅŠ  - Select a model to remove from the blacklist - ้€‰ๆ‹ฉไธ€ไธชๆจกๅž‹ไปŽ้ป‘ๅๅ•ไธญ็งป้™ค + Select a driving model to remove from the blacklist + ้€‰ๆ‹ฉ่ฆไปŽ้ป‘ๅๅ•ไธญ็งป้™ค็š„้ฉพ้ฉถๆจกๅž‹ Are you sure you want to remove the "%1" model from the blacklist? - ๆ‚จ็กฎๅฎš่ฆไปŽ้ป‘ๅๅ•ไธญ็งป้™คโ€œ%1โ€ๆจกๅž‹ๅ—๏ผŸ + ๆ‚จ็กฎๅฎš่ฆๅฐ†โ€œ%1โ€ๆจกๅž‹ไปŽ้ป‘ๅๅ•ไธญ็งป้™คๅ—๏ผŸ Remove - ็งป้™ค + ็งป้™ค - Are you sure you want to remove all of your blacklisted models? - ๆ‚จ็กฎๅฎš่ฆ็งป้™คๆ‰€ๆœ‰ๅˆ—ๅ…ฅ้ป‘ๅๅ•็š„ๆจกๅž‹ๅ—๏ผŸ + Are you sure you want to remove all of your blacklisted driving models? + ็กฎๅฎš่ฆ็งป้™คๆ‰€ๆœ‰ๅทฒๅˆ—ๅ…ฅ้ป‘ๅๅ•็š„้ฉพ้ฉถๆจกๅž‹ๅ—๏ผŸ RESET - ้‡็ฝฎ + ้‡็ฝฎ VIEW - ๆŸฅ็œ‹ + ๆŸฅ็œ‹ - Are you sure you want to reset all of your model drives and scores? - ๆ‚จ็กฎๅฎš่ฆ้‡็ฝฎๆ‰€ๆœ‰ๆจกๅž‹้ฉฑๅŠจๅ™จๅ’Œๅˆ†ๆ•ฐๅ—๏ผŸ + Reset all model drives and ratings? This clears your drive history and collected feedback! + ้‡็ฝฎๆ‰€ๆœ‰ๆจกๅž‹็š„่กŒ็จ‹ๅ’Œ่ฏ„ๅˆ†๏ผŸ่ฟ™ๅฐ†ๆธ…้™คไฝ ็š„่กŒ็จ‹ๅކๅฒๅ’Œๅทฒๆ”ถ้›†็š„ๅ้ฆˆ๏ผ SELECT - SELECT + ้€‰ๆ‹ฉ - Select a model - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC - ้€‰ๆ‹ฉไธ€ไธชๆจกๅž‹ - ๐Ÿ—บ๏ธ = ๅฏผ่ˆช | ๐Ÿ“ก = ้›ท่พพ | ๐Ÿ‘€ = VOACC + UPDATE + ๆ›ดๆ–ฐ - The "Model Randomizer" only works with downloaded models. Do you want to download all the driving models? - โ€œๆจกๅž‹้šๆœบๅ™จโ€ไป…้€‚็”จไบŽๅทฒไธ‹่ฝฝ็š„ๆจกๅž‹ใ€‚ๆ‚จๆƒณไธ‹่ฝฝๆ‰€ๆœ‰้ฉพ้ฉถๆจกๅž‹ๅ—๏ผŸ + Cancelling... + ๆญฃๅœจๅ–ๆถˆโ€ฆ + + + Updating Tinygrad will delete existing Tinygrad-based driving models and need to be re-downloaded. Proceed? + ๆ›ดๆ–ฐ Tinygrad ๅฐ†ๅˆ ้™ค็Žฐๆœ‰็š„ๅŸบไบŽ Tinygrad ็š„้ฉพ้ฉถๆจกๅž‹๏ผŒ้œ€่ฆ้‡ๆ–ฐไธ‹่ฝฝใ€‚ๆ˜ฏๅฆ็ปง็ปญ๏ผŸ + + + The "Model Randomizer" works only with downloaded models. Download all models now? + โ€œๆจกๅž‹้šๆœบๅ™จโ€ไป…้€‚็”จไบŽๅทฒไธ‹่ฝฝ็š„ๆจกๅž‹ใ€‚็Žฐๅœจไธ‹่ฝฝๆ‰€ๆœ‰ๆจกๅž‹ๅ—๏ผŸ Offline... - ็ฆป็บฟ... + ็ฆป็บฟโ€ฆ + + + Update available! + ๆœ‰ๅฏ็”จๆ›ดๆ–ฐ๏ผ + + + Up to date! + ๅทฒๆ˜ฏๆœ€ๆ–ฐ๏ผ + + + Select a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + ้€‰ๆ‹ฉๆจกๅž‹ โ€” ๐Ÿ—บ๏ธ = ๅฏผ่ˆช | ๐Ÿ“ก = ้›ท่พพ | ๐Ÿ‘€ = VOACC + + + + FrogPilotModelReview + + How would you rate that drive? + ไฝ ไผšๅฆ‚ไฝ•่ฏ„ไปท่ฟ™ๆฌก้ฉพ้ฉถ๏ผŸ + + + Model successfully blacklisted! + ๆจกๅž‹ๅทฒๆˆๅŠŸๅˆ—ๅ…ฅ้ป‘ๅๅ•๏ผ + + + Drive Rating Selection + ้ฉพ้ฉถ่ฏ„ๅˆ†้€‰ๆ‹ฉ + + + Blacklist this model to remove it from rotation + ๅฐ†ๆญคๆจกๅž‹ๅŠ ๅ…ฅ้ป‘ๅๅ•ไปฅๅฐ†ๅ…ถไปŽ่ฝฎๆขไธญ็งป้™ค + + + Blacklist Model + ้ป‘ๅๅ•ๆจกๅž‹ + + + Model used during that drive: + ่ฏฅๆฌก่กŒ้ฉถไฝฟ็”จ็š„ๆจกๅž‹๏ผš + + + Model Rank + ๆจกๅž‹ๆŽ’ๅ + + + Model Rating + ๆจกๅž‹่ฏ„ๅˆ† + + + Model Drives + ๆจกๅž‹้ฉฑๅŠจ + + + Total Drives + ๆ€ป่กŒ็จ‹ + + + #%1 + #%1 + + + %1% + %1% + + + %1 %2 + %1 %2 + + + Drive + ้ฉพ้ฉถ + + + Drives + ่กŒ้ฉถ + + + %1 Total %2 + %1 ๆ€ป่ฎก %2 FrogPilotNavigationPanel - - Manage your %1. - ็ฎก็†ๆ‚จ็š„%1ใ€‚ - - - ADD - ๆทปๅŠ  - - - Enter your %1 - ่พ“ๅ…ฅๆ‚จ็š„%1 - - - Inputted key is invalid or too short! - ่พ“ๅ…ฅ็š„ๅฏ†้’ฅๆ— ๆ•ˆๆˆ–ๅคช็Ÿญ๏ผ - - - Are you sure you want to remove your %1? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คๆ‚จ็š„%1ๅ—๏ผŸ - - - REMOVE - ็งป้™ค - Manage Your Settings At - ๅœจ็ฎก็†ๆ‚จ็š„่ฎพ็ฝฎ - - - MapBox - MapBox - - - Amap - ้ซ˜ๅพทๅœฐๅ›พ - - - Google - ่ฐทๆญŒ - - - Destination Search Provider - ็›ฎ็š„ๅœฐๆœ็ดขๆไพ›ๅ•† - - - The search provider used for destination queries in "Navigate on Openpilot". Options include "MapBox" (recommended), "Amap", and "Google Maps". - ็”จไบŽโ€œNavigate on Openpilotโ€ไธญ็›ฎ็š„ๅœฐๆŸฅ่ฏข็š„ๆœ็ดขๆไพ›ๅ•†ใ€‚้€‰้กนๅŒ…ๆ‹ฌโ€œMapBoxโ€๏ผˆๆŽจ่๏ผ‰ใ€โ€œAmapโ€ๅ’Œโ€œGoogle Mapsโ€ใ€‚ - - - Amap Key #1 - Amap Key #1 - - - Manage your Amap key. - ็ฎก็†ๆ‚จ็š„Amapๅฏ†้’ฅใ€‚ - - - Enter your Amap key - ่พ“ๅ…ฅๆ‚จ็š„้ซ˜ๅพทๅœฐๅ›พๅฏ†้’ฅ - - - Are you sure you want to remove your Amap key? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คๆ‚จ็š„Amapๅฏ†้’ฅๅ—๏ผŸ - - - Amap Key #2 - Amap Key #2 - - - Google Maps Key - Google Maps ๅฏ†้’ฅ - - - Manage your Google Maps key. - ็ฎก็†ๆ‚จ็š„ Google Maps ๅฏ†้’ฅใ€‚ - - - Enter your Google Maps key - ่พ“ๅ…ฅๆ‚จ็š„Google Mapsๅฏ†้’ฅ - - - Are you sure you want to remove your Google Maps key? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คๆ‚จ็š„ Google Maps ๅฏ†้’ฅๅ—๏ผŸ - - - Public Mapbox Key - ๅ…ฌๅ…ฑMapboxๅฏ†้’ฅ - - - Secret Mapbox Key - ็ง˜ๅฏ†Mapboxๅฏ†้’ฅ - - - MapBox Setup Instructions - MapBox ่ฎพ็ฝฎ่ฏดๆ˜Ž - - - VIEW - ๆŸฅ็œ‹ - - - View the instructions to set up "MapBox" for "Primeless Navigation". - ๆŸฅ็œ‹่ฎพ็ฝฎโ€œMapBoxโ€ไปฅ่ฟ›่กŒโ€œPrimeless Navigationโ€็š„่ฏดๆ˜Žใ€‚ - - - CANCEL - ๅ–ๆถˆ - - - Speed Limit Filler - ้™้€Ÿๅกซๅ……็‰ฉ - - - Are you sure you want to cancel the speed limit update process? - ๆ‚จ็กฎๅฎš่ฆๅ–ๆถˆ้™้€Ÿๆ›ดๆ–ฐ่ฟ‡็จ‹ๅ—๏ผŸ - - - You have reached the request limit. - -It will reset in %1 hours and %2 minutes. - ๆ‚จๅทฒ่พพๅˆฐ่ฏทๆฑ‚้™ๅˆถใ€‚ - -ๅฎƒๅฐ†ๅœจ%1ๅฐๆ—ถ%2ๅˆ†้’ŸๅŽ้‡็ฝฎใ€‚ - - - This process will take awhile, so it's advised to start when you're done driving with a stable Wi-Fi connection. Do you wish to proceed? - ๆญค่ฟ‡็จ‹ๅฐ†่Šฑ่ดนไธ€ไบ›ๆ—ถ้—ด๏ผŒๅ› ๆญคๅปบ่ฎฎๅœจๆ‚จๅฎŒๆˆ้ฉพ้ฉถๅนถ่ฟžๆŽฅ็จณๅฎš็š„Wi-FiๅŽๅผ€ๅง‹ใ€‚ๆ‚จๅธŒๆœ›็ปง็ปญๅ—๏ผŸ - - - Manually Update Speed Limits - ๆ‰‹ๅŠจๆ›ดๆ–ฐ้€Ÿๅบฆ้™ๅˆถ - - - Automatically collect missing or incorrect speed limits from your dashboard (if supported), <b>Mapbox</b>, and <b>Navigate-on-openpilot</b> while driving.<br><br>When the car is turned off and connected to Wi-Fi, your speed limit data is automatically processed into a compiled file formatted for the tool located at <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>You can grab the processed file from <b>The Pond</b> via the <b>Download Speed Limits</b> menu.<br><br>Want a more thorough walkthrough? Check out the <b>#speed-limit-filler</b> channel in the <b>FrogPilot Discord</b>! - ่‡ชๅŠจไปŽไปช่กจๆฟ๏ผˆๅฆ‚ๆžœๆ”ฏๆŒ๏ผ‰ใ€<b>Mapbox</b> ๅ’Œ <b>Navigate-on-openpilot</b> ๆ”ถ้›†็ผบๅคฑๆˆ–ไธๆญฃ็กฎ็š„้™้€Ÿไฟกๆฏใ€‚<br><br>ๅฝ“ๆฑฝ่ฝฆ็†„็ซๅนถ่ฟžๆŽฅๅˆฐ Wi-Fi ๆ—ถ๏ผŒๆ‚จ็š„้™้€Ÿๆ•ฐๆฎไผš่‡ชๅŠจๅค„็†ๆˆไธ€ไธช็ผ–่ฏ‘ๆ–‡ไปถ๏ผŒๆ ผๅผ้€‚็”จไบŽไฝไบŽ <b>SpeedLimitFiller.frogpilot.download</b> ็š„ๅทฅๅ…ทใ€‚<br><br>ๆ‚จๅฏไปฅ้€š่ฟ‡ <b>ไธ‹่ฝฝ้™้€Ÿ</b> ่œๅ•ไปŽ <b>The Pond</b> ่Žทๅ–ๅค„็†ๅŽ็š„ๆ–‡ไปถใ€‚<br><br>ๆƒณ่ฆๆ›ด่ฏฆ็ป†็š„ๆŒ‡ๅ—๏ผŸ่ฏทๆŸฅ็œ‹ <b>FrogPilot Discord</b> ไธญ็š„ <b>#speed-limit-filler</b> ้ข‘้“๏ผ - - - Cancelled... - ๅทฒๅ–ๆถˆ... - - - Completed! - ๅฎŒๆˆ๏ผ + ๅœจไปฅไธ‹ไฝ็ฝฎ็ฎก็†ๆ‚จ็š„่ฎพ็ฝฎ Offline... - ็ฆป็บฟ... + ็ฆป็บฟโ€ฆ + + + Mapbox + Mapbox + + + Amap + Amap + + + Destination Search Provider + ็›ฎ็š„ๅœฐๆœ็ดขๆไพ›ๅ•† + + + <b>The search provider used for destination queries</b> in "Navigate on Openpilot". Options include Mapbox (recommended) and Amap. + <b>โ€œๅœจ Openpilot ไธŠๅฏผ่ˆชโ€ไธญ็”จไบŽ็›ฎ็š„ๅœฐๆŸฅ่ฏข็š„ๆœ็ดขๆไพ›ๅ•†</b>ใ€‚้€‰้กนๅŒ…ๆ‹ฌ Mapbox๏ผˆๆŽจ่๏ผ‰ๅ’Œ Amapใ€‚ + + + Amap Key #1 + Amap ๅฏ†้’ฅ #1 + + + Amap Key #2 + ้ซ˜ๅพทๅœฐๅ›พๅฏ†้’ฅ #2 + + + Public Mapbox Key + ๅ…ฌๅ…ฑ Mapbox ๅฏ†้’ฅ + + + Secret Mapbox Key + Mapbox ๅฏ†้’ฅ๏ผˆไฟๅฏ†๏ผ‰ + + + Mapbox Setup Instructions + Mapbox ่ฎพ็ฝฎ่ฏดๆ˜Ž + + + VIEW + ๆŸฅ็œ‹ + + + <b>Instructions on how to set up Mapbox</b> for "Primeless Navigation". + <b>่ฎพ็ฝฎ Mapbox ็š„่ฏดๆ˜Ž</b>๏ผŒ็”จไบŽโ€œๆ—  Prime ๅฏผ่ˆชโ€ใ€‚ + + + CANCEL + ๅ–ๆถˆ + + + Manually Update Speed Limits + ๆ‰‹ๅŠจๆ›ดๆ–ฐ้™้€Ÿ + + + Speed Limit Filler + ้™้€Ÿๅกซๅ……ๅ™จ + + + <b>Automatically collect missing or incorrect speed limits while you drive</b> using speeds limits sourced from your dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When you're parked and connected to Wi-Fi, FrogPilot will automatically processes this data into a file to be used with the tool located at "SpeedLimitFiller.frogpilot.download".<br><br>You can download this file from "The Pond" in the "Download Speed Limits" menu.<br><br>Need a step-by-step guide? Visit <b>#speed-limit-filler</b> in the FrogPilot Discord! + <b>ๅœจ้ฉพ้ฉถๆ—ถ่‡ชๅŠจๆ”ถ้›†็ผบๅคฑๆˆ–ไธๆญฃ็กฎ็š„้™้€Ÿไฟกๆฏ</b>๏ผŒ้™้€Ÿๆ•ฐๆฎๆฅๆบไบŽๆ‚จ็š„ไปช่กจ็›˜๏ผˆๅฆ‚ๆžœๆ”ฏๆŒ๏ผ‰ใ€Mapbox๏ผŒไปฅๅŠโ€œNavigate on openpilotโ€ใ€‚<br><br>ๅฝ“ๆ‚จๅœ่ฝฆๅนถ่ฟžๆŽฅๅˆฐ Wiโ€‘Fi ๆ—ถ๏ผŒFrogPilot ๅฐ†่‡ชๅŠจๅค„็†่ฟ™ไบ›ๆ•ฐๆฎไธบไธ€ไธชๆ–‡ไปถ๏ผŒ็”จไบŽไฝไบŽโ€œSpeedLimitFiller.frogpilot.downloadโ€็š„ๅทฅๅ…ทใ€‚<br><br>ๆ‚จๅฏไปฅๅœจโ€œThe Pondโ€็š„โ€œDownload Speed Limitsโ€่œๅ•ไธญไธ‹่ฝฝๆญคๆ–‡ไปถใ€‚<br><br>้œ€่ฆไธ€ๆญฅๆญฅ็š„ๆŒ‡ๅ—๏ผŸ่ฏท่ฎฟ้—ฎ FrogPilot Discord ไธญ็š„ <b>#speed-limit-filler</b>๏ผ + + + Cancel the speed-limit update? + ๅ–ๆถˆ้€Ÿๅบฆ้™ๅˆถๆ›ดๆ–ฐ๏ผŸ + + + Cancelled... + ๅทฒๅ–ๆถˆโ€ฆ + + + You've hit today's request limit. + +It will reset in %1 hours and %2 minutes. + ๆ‚จๅทฒ่พพๅˆฐไปŠๆ—ฅ่ฏทๆฑ‚ไธŠ้™ใ€‚ + +ๅฐ†ๅœจ %1 ๅฐๆ—ถ %2 ๅˆ†้’ŸๅŽ้‡็ฝฎใ€‚ + + + This process takes a while. It's recommended to start when you're done driving and connected to stable Wi-Fi. Continue? + ๆญค่ฟ‡็จ‹้œ€่ฆไธ€ๆฎตๆ—ถ้—ดใ€‚ๅปบ่ฎฎๅœจๆ‚จ็ป“ๆŸ้ฉพ้ฉถๅนถ่ฟžๆŽฅ็จณๅฎš็š„ Wiโ€‘Fi ๆ—ถๅผ€ๅง‹ใ€‚ๆ˜ฏๅฆ็ปง็ปญ๏ผŸ + + + <b>Manage your "%1".</b> + <b>็ฎก็†ๆ‚จ็š„โ€œ%1โ€ใ€‚</b> + + + ADD + ๆทปๅŠ  + + + Enter your %1 + ่พ“ๅ…ฅไฝ ็š„%1 + + + Inputted key is invalid or too short! + ่พ“ๅ…ฅ็š„ๅฏ†้’ฅๆ— ๆ•ˆๆˆ–่ฟ‡็Ÿญ๏ผ + + + Remove your %1? + ่ฆ็งป้™คไฝ ็š„%1ๅ—๏ผŸ + + + REMOVE + ็งป้™ค + + + Completed! + ๅทฒๅฎŒๆˆ๏ผ FrogPilotSettingsWindow MANAGE - ็ฎก็† + ็ฎก็† DRIVING MODEL - ้ฉพ้ฉถๆจกๅž‹ + ้ฉพ้ฉถๆจกๅž‹ GAS / BRAKE - ๆฒน้—จ / ๅˆน่ฝฆ + ๆฒน้—จ / ๅˆน่ฝฆ STEERING - ่ฝฌๅ‘ + ่ฝฌๅ‘ MAP DATA - ๅœฐๅ›พๆ•ฐๆฎ + ๅœฐๅ›พๆ•ฐๆฎ NAVIGATION - ๅฏผ่ˆช + ๅฏผ่ˆช DATA - ๆ•ฐๆฎ + ๆ•ฐๆฎ DEVICE CONTROLS - ่ฎพๅค‡ๆŽงๅˆถ + ่ฎพๅค‡ๆŽงๅˆถ UTILITIES - ๅ…ฌ็”จไบ‹ไธš + ๅฎž็”จๅทฅๅ…ท APPEARANCE - ๅค–่ง‚ + ๅค–่ง‚ THEME - ไธป้ข˜ + ไธป้ข˜ VEHICLE SETTINGS - ่ฝฆ่พ†่ฎพ็ฝฎ + ่ฝฆ่พ†่ฎพ็ฝฎ WHEEL CONTROLS - ๆ–นๅ‘็›˜ๆŽงๅˆถ + ๆ–นๅ‘็›˜ๆŽงๅˆถ Alerts and Sounds - ่ญฆๆŠฅๅ’Œๅฃฐ้Ÿณ + ่ญฆๆŠฅๅ’Œๅฃฐ้Ÿณ - FrogPilot settings for alert volumes and custom notifications to stay informed about important driving events. - FrogPilot่ฎพ็ฝฎ็”จไบŽ่ญฆๆŠฅ้Ÿณ้‡ๅ’Œ่‡ชๅฎšไน‰้€š็Ÿฅ๏ผŒไปฅ้šๆ—ถไบ†่งฃ้‡่ฆ็š„้ฉพ้ฉถไบ‹ไปถใ€‚ + <b>Adjust alert volumes and enable custom notifications.</b> + <b>่ฐƒๆ•ด่ญฆๆŠฅ้Ÿณ้‡ๅนถๅฏ็”จ่‡ชๅฎšไน‰้€š็Ÿฅใ€‚</b> Driving Controls - ้ฉพ้ฉถๆŽงๅˆถ + ้ฉพ้ฉถๆŽงๅˆถ - FrogPilot settings for acceleration, braking, and steering. - FrogPilotๅŠ ้€Ÿใ€ๅˆถๅŠจๅ’Œ่ฝฌๅ‘่ฎพ็ฝฎใ€‚ + <b>Fine-tune custom FrogPilot acceleration, braking, and steering controls.</b> + <b>ๅพฎ่ฐƒ่‡ชๅฎšไน‰็š„ FrogPilot ๅŠ ้€Ÿใ€ๅˆถๅŠจๅ’Œ่ฝฌๅ‘ๆŽงๅˆถใ€‚</b> Navigation - ๅฏผ่ˆช + ๅฏผ่ˆช - Download map data for <b>Curve Speed Control</b>, <b>Speed Limit Controller</b>, and set up <b>Navigate on openpilot (NOO)</b>. - ไธ‹่ฝฝ<b>ๆ›ฒ็บฟ้€ŸๅบฆๆŽงๅˆถ</b>ใ€<b>้€Ÿๅบฆ้™ๅˆถๆŽงๅˆถๅ™จ</b>็š„ๅœฐๅ›พๆ•ฐๆฎ๏ผŒๅนถ่ฎพ็ฝฎ<b>ๅœจopenpilotไธŠๅฏผ่ˆช (NOO)</b>ใ€‚ + <b>Download map data for the "Speed Limit Controller" and configure "Navigate on openpilot" (NOO).</b> + <b>ไธบโ€œSpeed Limit Controllerโ€ไธ‹่ฝฝๅœฐๅ›พๆ•ฐๆฎๅนถ้…็ฝฎโ€œNavigate on openpilotโ€๏ผˆNOO๏ผ‰ใ€‚</b> - System Management - ็ณป็ปŸ็ฎก็† + System Settings + ็ณป็ปŸ่ฎพ็ฝฎ - Data storage management, debugging tools, device settings, screen behavior settings, system backups, and utilities to maintain, optimize, and troubleshoot FrogPilot. - ๆ•ฐๆฎๅญ˜ๅ‚จ็ฎก็†ใ€่ฐƒ่ฏ•ๅทฅๅ…ทใ€่ฎพๅค‡่ฎพ็ฝฎใ€ๅฑๅน•่กŒไธบ่ฎพ็ฝฎใ€็ณป็ปŸๅค‡ไปฝ๏ผŒไปฅๅŠ็”จไบŽ็ปดๆŠคใ€ไผ˜ๅŒ–ๅ’Œๆ•…้šœๆŽ’้™คFrogPilot็š„ๅฎž็”จ็จ‹ๅบใ€‚ + <b>Manage backups, device settings, screen options, storage, and tools to keep FrogPilot running smoothly.</b> + <b>็ฎก็†ๅค‡ไปฝใ€่ฎพๅค‡่ฎพ็ฝฎใ€ๅฑๅน•้€‰้กนใ€ๅญ˜ๅ‚จๅ’Œๅทฅๅ…ท๏ผŒไปฅไฟๆŒ FrogPilot ่ฟ่กŒ้กบ็•…ใ€‚</b> Theme and Appearance - ไธป้ข˜ๅ’Œๅค–่ง‚ + ไธป้ข˜ๅ’Œๅค–่ง‚ - FrogPilot settings for the current theme, driving-screen, and the overall user interface. - FrogPilotๅฝ“ๅ‰ไธป้ข˜ใ€้ฉพ้ฉถๅฑๅน•ๅ’Œๆ•ดไฝ“็”จๆˆท็•Œ้ข็š„่ฎพ็ฝฎใ€‚ + <b>Customize the look of the driving screen and interface, including themes!</b> + <b>่‡ชๅฎšไน‰้ฉพ้ฉถๅฑๅน•ๅ’Œ็•Œ้ข็š„ๅค–่ง‚๏ผŒๅŒ…ๆ‹ฌไธป้ข˜๏ผ</b> - Vehicle Controls - ่ฝฆ่พ†ๆŽงๅˆถ + Vehicle Settings + ่ฝฆ่พ†่ฎพ็ฝฎ - Options unique to supported manufacturers and vehicle fingerprint management. - ๆ”ฏๆŒๅˆถ้€ ๅ•†ๅ’Œ่ฝฆ่พ†ๆŒ‡็บน็ฎก็†็š„็‹ฌ็‰น้€‰้กนใ€‚ + <b>Configure car-specific options and steering wheel button mappings.</b> + <b>้…็ฝฎ็‰นๅฎš่ฝฆ่พ†้€‰้กนๅ’Œๆ–นๅ‘็›˜ๆŒ‰้”ฎๆ˜ ๅฐ„ใ€‚</b> Minimal - ๆœ€ๅฐๅŒ– + ๆœ€ๅฐ Standard - ๆ ‡ๅ‡† + ๆ ‡ๅ‡† Advanced - ้ซ˜็บง + ้ซ˜็บง Developer - ๅผ€ๅ‘่€… + ๅผ€ๅ‘่€… Tuning Level - ่ฐƒ่ฐ็บงๅˆซ + ่ฐƒๆ ก็บงๅˆซ - The visibility and complexity of tuning settings. Lower levels simplify the interface by hiding advanced options, while higher levels unlock detailed customization. + Choose your tuning level. Lower levels keep it simple; higher levels unlock more toggles for finer control. Minimal - Ideal for those who prefer simplicity or ease of use Standard - Recommended for most users for a balanced experience -Advanced - Unlocks fine-tuning controls for more experienced users -Developer - Unlocks highly customizable settings for seasoned enthusiasts - ่ฐƒๆ•ด่ฎพ็ฝฎ็š„ๅฏ่งๆ€งๅ’Œๅคๆ‚ๆ€งใ€‚่พƒไฝŽ็š„็บงๅˆซ้€š่ฟ‡้š่—้ซ˜็บง้€‰้กนๆฅ็ฎ€ๅŒ–็•Œ้ข๏ผŒ่€Œ่พƒ้ซ˜็š„็บงๅˆซๅˆ™่งฃ้”่ฏฆ็ป†็š„่‡ชๅฎšไน‰ๅŠŸ่ƒฝใ€‚ +Advanced - Fine-tuning for experienced users +Developer - Highly customizable settings for seasoned enthusiasts + ้€‰ๆ‹ฉไฝ ็š„่ฐƒๆ ก็บงๅˆซใ€‚่พƒไฝŽ็บงๅˆซๆ›ด็ฎ€ๅ•๏ผ›่พƒ้ซ˜็บงๅˆซ่งฃ้”ๆ›ดๅคšๅผ€ๅ…ณไปฅๅฎž็Žฐๆ›ด็ฒพ็ป†็š„ๆŽงๅˆถใ€‚ -Minimal - ้€‚ๅˆๅ–œๆฌข็ฎ€ๅ•ๆˆ–ๆ˜“็”จๆ€ง็š„ไบบ -Standard - ๆŽจ่็ป™ๅคงๅคšๆ•ฐ็”จๆˆทไปฅ่Žทๅพ—ๅนณ่กก็š„ไฝ“้ชŒ -Advanced - ่งฃ้”ๅพฎ่ฐƒๆŽงๅˆถ๏ผŒ้€‚ๅˆๆ›ดๆœ‰็ป้ชŒ็š„็”จๆˆท -Developer - ่งฃ้”้ซ˜ๅบฆๅฏๅฎšๅˆถ็š„่ฎพ็ฝฎ๏ผŒ้€‚ๅˆ่ต„ๆทฑ็ˆฑๅฅฝ่€… +ๆœ€็ฎ€ โ€” ้€‚ๅˆๅๅฅฝ็ฎ€ๅ•ๆˆ–ๆ˜“็”จๆ€ง็š„็”จๆˆท +ๆ ‡ๅ‡† โ€” ไธบๅคงๅคšๆ•ฐ็”จๆˆทๆŽจ่๏ผŒไฝ“้ชŒๆ›ดๅ‡่กก +้ซ˜็บง โ€” ้€‚ๅˆๆœ‰็ป้ชŒ็”จๆˆท็š„็ฒพ็ป†่ฐƒๆ ก +ๅผ€ๅ‘่€… โ€” ้ขๅ‘่ต„ๆทฑ็ˆฑๅฅฝ่€…็š„้ซ˜ๅบฆๅฏ่‡ชๅฎšไน‰่ฎพ็ฝฎ - WARNING: This unlocks some potentially dangerous settings that can DRASTICALLY alter your driving experience! - ่ญฆๅ‘Š๏ผš่ฟ™ๅฐ†่งฃ้”ไธ€ไบ›ๅฏ่ƒฝๅฑ้™ฉ็š„่ฎพ็ฝฎ๏ผŒๅฏ่ƒฝไผšๆžๅคงๅœฐๆ”นๅ˜ๆ‚จ็š„้ฉพ้ฉถไฝ“้ชŒ๏ผ + WARNING: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do! + ่ญฆๅ‘Š๏ผš่ฟ™ไบ›่ฎพ็ฝฎๅญ˜ๅœจ้ฃŽ้™ฉ๏ผŒๅฏ่ƒฝไผšๆžๅคงๆ”นๅ˜ openpilot ็š„้ฉพ้ฉถๆ–นๅผใ€‚ๅชๆœ‰ๅœจไฝ ๅฎŒๅ…จไบ†่งฃๅ…ถไฝœ็”จๆ—ถๆ‰่ฟ›่กŒๆ›ดๆ”น๏ผ + + + All toggle descriptions are currently expanded. You can tap a toggle's name to open or close its description at any time! + ๆ‰€ๆœ‰ๅˆ‡ๆข้กน็š„่ฏดๆ˜Ž็›ฎๅ‰ๅ‡ๅทฒๅฑ•ๅผ€ใ€‚ไฝ ๅฏไปฅ้šๆ—ถ็‚นๅ‡ปๅˆ‡ๆข้กน็š„ๅ็งฐๆฅๆ‰“ๅผ€ๆˆ–ๅ…ณ้—ญๅ…ถ่ฏดๆ˜Ž๏ผ FrogPilotSoundsPanel - Alert Volume Control - ่ญฆๆŠฅ้Ÿณ้‡ๆŽงๅˆถ + Alert Volume Controller + ่ญฆๆŠฅ้Ÿณ้‡ๆŽงๅˆถๅ™จ - Adjust the volume for each alert in openpilot. - ่ฐƒๆ•ดopenpilotไธญๆฏไธช่ญฆๆŠฅ็š„้Ÿณ้‡ใ€‚ + <b>Set how loud each type of openpilot alert is</b> to keep routine prompts from becoming distracting. + <b>่ฎพ็ฝฎๆฏ็ง openpilot ่ญฆๆŠฅ็š„้Ÿณ้‡</b>๏ผŒไปฅ้˜ฒๅธธ่ง„ๆ็คบๅ˜ๅพ—ๅˆ†ๆ•ฃๆณจๆ„ๅŠ›ใ€‚ Disengage Volume - ๆ–ญๅผ€้Ÿณ้‡ + ่งฃ้™คๆ็คบ้Ÿณ้Ÿณ้‡ - Adjust the volume for alerts like:<br><br><b>Adaptive Cruise Disabled</b><br><b>Brake Pedal Pressed</b><br><b>Parking Brake Engaged</b><br><b>Speed too Low</b> - ่ฐƒๆ•ด่ญฆๆŠฅ้Ÿณ้‡๏ผŒไพ‹ๅฆ‚๏ผš<br><br><b>่‡ช้€‚ๅบ”ๅทก่ˆชๅทฒ็ฆ็”จ</b><br><b>ๅˆน่ฝฆ่ธๆฟๅทฒ่ธฉไธ‹</b><br><b>้ฉป่ฝฆๅˆถๅŠจๅทฒๅฏ็”จ</b><br><b>้€Ÿๅบฆ่ฟ‡ไฝŽ</b> + <b>Set the volume for alerts when openpilot disengages.</b><br><br>Examples include: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". + <b>่ฎพ็ฝฎ openpilot ่งฃ้™คๆŽฅ็ฎกๆ—ถ็š„่ญฆๆŠฅ้Ÿณ้‡ใ€‚</b><br><br>็คบไพ‹ๅŒ…ๆ‹ฌ๏ผšโ€œๅทก่ˆชๆ•…้šœ๏ผš่ฏท้‡ๅฏ่ฝฆ่พ†โ€ใ€โ€œๅทฒๆ‹‰่ตท้ฉป่ฝฆๅˆถๅŠจโ€ใ€โ€œ่ธๆฟ่ขซๆŒ‰ไธ‹โ€ใ€‚ Engage Volume - ๅ‚ไธŽ้‡ + ๅฏ็”จ้Ÿณ้‡ - Adjust the volume for alerts like:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> - ่ฐƒๆ•ด่ญฆๆŠฅ้Ÿณ้‡๏ผŒไพ‹ๅฆ‚๏ผš<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> + <b>Set the volume for the chime when openpilot engages</b>, such as after pressing the "RESUME" or "SET" steering wheel buttons. + <b>่ฎพ็ฝฎopenpilotๆŽฅๅ…ฅๆ—ถๆ็คบ้Ÿณ็š„้Ÿณ้‡</b>๏ผŒไพ‹ๅฆ‚ๆŒ‰ไธ‹ๆ–นๅ‘็›˜ไธŠ็š„โ€œRESUMEโ€ๆˆ–โ€œSETโ€ๆŒ‰้’ฎๅŽใ€‚ Prompt Volume - ๆ็คบ้Ÿณ้‡ + ๆ็คบ้Ÿณ้‡ - Adjust the volume for alerts like:<br><br><b>Car Detected in Blindspot</b><br><b>Steer Unavailable Below "X"</b><br><b>Speed too Low</b><br><b>Take Control, Turn Exceeds Steering Limit</b> - ่ฐƒๆ•ด่ญฆๆŠฅ้Ÿณ้‡๏ผŒไพ‹ๅฆ‚๏ผš<br><br><b>็›ฒ็‚นๆฃ€ๆต‹ๅˆฐ่ฝฆ่พ†</b><br><b>ไฝŽไบŽโ€œXโ€ๆ—ถๆ— ๆณ•่ฝฌๅ‘</b><br><b>้€Ÿๅบฆ่ฟ‡ไฝŽ</b><br><b>ๆŽฅ็ฎกๆŽงๅˆถ๏ผŒ่ฝฌๅผฏ่ถ…่ฟ‡่ฝฌๅ‘้™ๅˆถ</b> + <b>Set the volume for prompts that need attention.</b><br><br>Examples include: "Car Detected in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". + <b>ไธบ้œ€่ฆๆณจๆ„็š„ๆ็คบ่ฎพ็ฝฎ้Ÿณ้‡ใ€‚</b><br><br>็คบไพ‹ๅŒ…ๆ‹ฌ๏ผšโ€œ็›ฒ็‚นๆฃ€ๆต‹ๅˆฐ่ฝฆ่พ†โ€ใ€โ€œ่ฝฌๅ‘ๆš‚ๆ—ถไธๅฏ็”จโ€ใ€โ€œ่ฝฌๅผฏ่ถ…ๅ‡บ่ฝฌๅ‘้™ๅˆถโ€ใ€‚ Prompt Distracted Volume - ๆ็คบๅˆ†ๅฟƒ้Ÿณ้‡ + ๆ็คบๅˆ†ๅฟƒ้Ÿณ้‡ - Adjust the volume for alerts like:<br><br><b>Pay Attention, Driver Distracted</b><br><b>Touch Steering Wheel, Driver Unresponsive</b> - ่ฐƒๆ•ด่ญฆๆŠฅ้Ÿณ้‡๏ผŒไพ‹ๅฆ‚๏ผš<br><br><b>ๆณจๆ„๏ผŒ้ฉพ้ฉถๅ‘˜ๅˆ†ๅฟƒ</b><br><b>่งฆๆ‘ธๆ–นๅ‘็›˜๏ผŒ้ฉพ้ฉถๅ‘˜ๆ— ๅๅบ”</b> + <b>Set the volume for prompts when openpilot detects driver distraction or unresponsiveness.</b><br><br>Examples include: "Pay Attention", "Touch Steering Wheel". + <b>่ฎพ็ฝฎๅฝ“ openpilot ๆฃ€ๆต‹ๅˆฐ้ฉพ้ฉถๅ‘˜ๅˆ†ๅฟƒๆˆ–ๆ— ๅๅบ”ๆ—ถ็š„ๆ็คบ้Ÿณ้‡ใ€‚</b><br><br>ไพ‹ๅฆ‚๏ผšโ€œ่ฏทๆณจๆ„โ€ใ€โ€œ่งฆๆ‘ธๆ–นๅ‘็›˜โ€ใ€‚ Refuse Volume - ๆ‹’็ป้‡ + ๆ‹’็ป้Ÿณ้‡ - Adjust the volume for alerts like:<br><br><b>openpilot Unavailable</b> - ่ฐƒๆ•ด่ญฆๆŠฅ้Ÿณ้‡๏ผŒไพ‹ๅฆ‚๏ผš<br><br><b>openpilot ไธๅฏ็”จ</b> + <b>Set the volume for alerts when openpilot refuses to engage.</b><br><br>Examples include: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". + <b>่ฎพ็ฝฎๅฝ“openpilotๆ‹’็ปๆŽฅ็ฎกๆ—ถ็š„่ญฆๆŠฅ้Ÿณ้‡ใ€‚</b><br><br>็คบไพ‹ๅŒ…ๆ‹ฌ๏ผšโ€œๅˆน่ฝฆไฟๆŒๅทฒๆฟ€ๆดปโ€ใ€โ€œ่ฝฆ้—จๅทฒๆ‰“ๅผ€โ€ใ€โ€œๅฎ‰ๅ…จๅธฆๆœช็ณปโ€ใ€‚ Warning Soft Volume - ่ญฆๅ‘Š่ฝฏ้Ÿณ้‡ + ่ญฆๅ‘Š ่ฝฏ้Ÿณ้‡ - Adjust the volume for alerts like:<br><br><b>BRAKE!, Risk of Collision</b><br><b>TAKE CONTROL IMMEDIATELY</b> - ่ฐƒๆ•ด่ญฆๆŠฅ้Ÿณ้‡๏ผŒไพ‹ๅฆ‚๏ผš<br><br><b>ๅˆน่ฝฆ๏ผ็ขฐๆ’ž้ฃŽ้™ฉ</b><br><b>็ซ‹ๅณๆŽฅ็ฎกๆŽงๅˆถ</b> + <b>Set the volume for softer warnings about potential risks.</b><br><br>Examples include: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". + <b>ไธบๆฝœๅœจ้ฃŽ้™ฉ็š„่พƒ่ฝป่ญฆๅ‘Š่ฎพ็ฝฎ้Ÿณ้‡ใ€‚</b><br><br>็คบไพ‹ๅŒ…ๆ‹ฌ๏ผšโ€œๅˆน่ฝฆ๏ผ็ขฐๆ’ž้ฃŽ้™ฉโ€ใ€โ€œ่ฝฌๅ‘ๆš‚ๆ—ถไธๅฏ็”จโ€ใ€‚ Warning Immediate Volume - ่ญฆๅ‘Š็ซ‹ๅณ้Ÿณ้‡ + ่ญฆๅ‘Š ็ซ‹ๅณ้Ÿณ้‡ - Adjust the volume for alerts like:<br><br><b>DISENGAGE IMMEDIATELY, Driver Distracted</b><br><b>DISENGAGE IMMEDIATELY, Driver Unresponsive</b> - ่ฐƒๆ•ด่ญฆๆŠฅ้Ÿณ้‡๏ผŒไพ‹ๅฆ‚๏ผš<br><br><b>็ซ‹ๅณ่„ฑ็ฆป๏ผŒ้ฉพ้ฉถๅ‘˜ๅˆ†ๅฟƒ</b><br><b>็ซ‹ๅณ่„ฑ็ฆป๏ผŒ้ฉพ้ฉถๅ‘˜ๆ— ๅๅบ”</b> + <b>Set the volume for the loudest warnings that require urgent attention.</b><br><br>Examples include: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". + <b>่ฎพ็ฝฎ้œ€่ฆ็ดงๆ€ฅๆณจๆ„็š„ๆœ€ๅ“ไบฎ่ญฆๆŠฅ็š„้Ÿณ้‡ใ€‚</b><br><br>็คบไพ‹ๅŒ…ๆ‹ฌ๏ผšโ€œ็ซ‹ๅณ่งฃ้™ค โ€” ้ฉพ้ฉถๅ‘˜ๅˆ†ๅฟƒโ€๏ผŒโ€œ็ซ‹ๅณ่งฃ้™ค โ€” ้ฉพ้ฉถๅ‘˜ๆ— ๅๅบ”โ€ใ€‚ FrogPilot Alerts - FrogPilot่ญฆๆŠฅ + FrogPilot ่ญฆๆŠฅ - FrogPilot alerts for various events in openpilot. - FrogPilotๅœจopenpilotไธญ้’ˆๅฏนๅ„็งไบ‹ไปถๅ‘ๅ‡บ่ญฆๆŠฅใ€‚ + <b>Optional FrogPilot alerts</b> that highlight driving events in a more noticeable way. + <b>ๅฏ้€‰็š„ FrogPilot ่ญฆๆŠฅ</b>๏ผŒไปฅๆ›ด้†’็›ฎ็š„ๆ–นๅผ็ชๅ‡บ้ฉพ้ฉถไบ‹ไปถใ€‚ - Goat Scream Steering Saturated Alert - ๅฑฑ็พŠๅฐ–ๅซ่ฝฌๅ‘้ฅฑๅ’Œ่ญฆๆŠฅ + Goat Scream + ๅฑฑ็พŠๅฐ–ๅซ - The infamous "Goat Scream" that has brought both joy and anger to FrogPilot users all around the world! - ่‡ญๅๆ˜ญ่‘—็š„โ€œๅฑฑ็พŠๅฐ–ๅซๅฃฐโ€็ป™ๅ…จ็ƒFrogPilot็”จๆˆทๅธฆๆฅไบ†ๆฌขไนๅ’Œๆ„คๆ€’๏ผ + <b>Play the infamous "Goat Scream" when the steering controller reaches its limit.</b> Based on the "Turn Exceeds Steering Limit" event. + <b>ๅฝ“่ฝฌๅ‘ๆŽงๅˆถๅ™จ่พพๅˆฐๅ…ถๆž้™ๆ—ถๆ’ญๆ”พ่‡ญๅๆ˜ญ่‘—็š„โ€œๅฑฑ็พŠๅฐ–ๅซโ€ใ€‚</b> ๅŸบไบŽโ€œ่ฝฌๅ‘่ถ…ๅ‡บ่ฝฌๅ‘ๆž้™โ€ไบ‹ไปถใ€‚ Green Light Alert - ็ปฟ็ฏ่ญฆๆŠฅ + ็ปฟ็ฏๆ้†’ - Get an alert when the traffic light changes from red to green. - ๅฝ“็บข็ฏๅ˜็ปฟ็ฏๆ—ถๆ”ถๅˆฐๆ้†’ใ€‚ + <b>Play an alert when the model predicts a red light has turned green.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights. This alert is based on end-to-end model predictions from camera input and may trigger even when the light has not changed.</i> + <b>ๅฝ“ๆจกๅž‹้ข„ๆต‹็บข็ฏๅทฒๅ˜ไธบ็ปฟ็ฏๆ—ถๆ’ญๆ”พ่ญฆๆŠฅใ€‚</b><br><br><i><b>ๅ…่ดฃๅฃฐๆ˜Ž</b>๏ผšopenpilot ๅนถไธๆ˜พๅผๆฃ€ๆต‹ไบค้€šไฟกๅท็ฏใ€‚ๆญค่ญฆๆŠฅๅŸบไบŽๆฅ่‡ชๆ‘„ๅƒๅคด่พ“ๅ…ฅ็š„็ซฏๅˆฐ็ซฏๆจกๅž‹้ข„ๆต‹๏ผŒๅณไฝฟไฟกๅท็ฏๅฐšๆœชๅ˜ๅŒ–ไนŸๅฏ่ƒฝ่งฆๅ‘ใ€‚</i> Lead Departing Alert - ็ฆปๅผ€ๆ้†’ + ๅ‰่ฝฆ่ตทๆญฅๆ้†’ - Get an alert when the lead vehicle begins to depart from a standstill. - ๅฝ“ๅ‰่ฝฆๅผ€ๅง‹ไปŽ้™ๆญข็Šถๆ€ๅ‡บๅ‘ๆ—ถๆ”ถๅˆฐๆ้†’ใ€‚ + <b>Play an alert when the lead vehicle departs from a stop.</b> + <b>ๅฝ“ๅ‰่ฝฆๅ‰ๆ–น่ฝฆ่พ†่ตทๆญฅๆ—ถๆ’ญๆ”พๆ้†’ใ€‚</b> Loud "Car Detected in Blindspot" Alert - ๅ“ไบฎ็š„โ€œ็›ฒ็‚นๆฃ€ๆต‹ๅˆฐ่ฝฆ่พ†โ€่ญฆๆŠฅ + ๅ“ไบฎ็š„โ€œๆฃ€ๆต‹ๅˆฐ็›ฒ็‚น่ฝฆ่พ†โ€่ญฆๆŠฅ - A louder alert for when a vehicle is detected in the blindspot when attempting to change lanes. - ๅฝ“ๅฐ่ฏ•ๅ˜้“ๆ—ถๆฃ€ๆต‹ๅˆฐ็›ฒ็‚นไธญ็š„่ฝฆ่พ†ๆ—ถๅ‘ๅ‡บๆ›ดๅ“ไบฎ็š„่ญฆๆŠฅใ€‚ + <b>Play a louder alert if a vehicle is in the blind spot when attempting to change lanes.</b> Based on the "Car Detected in Blindspot" event. + <b>ๅฝ“ๅฐ่ฏ•ๅ˜้“ๆ—ถ่‹ฅๆœ‰่ฝฆ่พ†ๅค„ไบŽ็›ฒๅŒบ๏ผŒๆ’ญๆ”พๆ›ดๅ“ไบฎ็š„่ญฆๆŠฅใ€‚</b> ๅŸบไบŽโ€œ็›ฒๅŒบๆฃ€ๆต‹ๅˆฐ่ฝฆ่พ†โ€ไบ‹ไปถใ€‚ Speed Limit Changed Alert - ้™้€Ÿๅ˜ๆ›ดๆ้†’ + ้™้€Ÿๅ˜ๆ›ด่ญฆๆŠฅ - Get an alert when the speed limit changes. - ๅฝ“้™้€Ÿๅ˜ๅŒ–ๆ—ถๆ”ถๅˆฐๆ้†’ใ€‚ + <b>Play an alert when the posted speed limit changes.</b> + <b>ๅฝ“ๅ…ฌๅธƒ็š„้™้€Ÿๅ˜ๅŒ–ๆ—ถๆ’ญๆ”พๆ้†’ใ€‚</b> Muted - ้™้Ÿณ + ๅทฒ้™้Ÿณ Auto - ่‡ชๅŠจ + ่‡ชๅŠจ Test - ๆต‹่ฏ• + ๆต‹่ฏ• FrogPilotThemesPanel - Custom Theme - ่‡ชๅฎšไน‰ไธป้ข˜ + Custom Themes + ่‡ชๅฎšไน‰ไธป้ข˜ - The overall appearance of openpilot. - openpilot็š„ๆ•ดไฝ“ๅค–่ง‚ใ€‚ + <b>The overall look and feel of openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot ็š„ๆ•ดไฝ“ๅค–่ง‚ไธŽไฝ“้ชŒใ€‚</b> ๅœจ โ€œThe Pondโ€ ไธญไฝฟ็”จ โ€œTheme Makerโ€ ๆฅๅˆ›ๅปบๅนถๅˆ†ไบซไฝ ่‡ชๅทฑ็š„ไธป้ข˜๏ผ Color Scheme - ้…่‰ฒๆ–นๆกˆ + ้…่‰ฒๆ–นๆกˆ - openpilot's color scheme. - -Want to submit your own color scheme? Share it in the "custom-themes" channel on the FrogPilot Discord! - openpilot็š„้…่‰ฒๆ–นๆกˆใ€‚ - -ๆƒณๆไบคๆ‚จ่‡ชๅทฑ็š„้…่‰ฒๆ–นๆกˆๅ—๏ผŸๅœจFrogPilot Discord็š„โ€œcustom-themesโ€้ข‘้“ๅˆ†ไบซๅง๏ผ + <b>The color scheme used throughout openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot ๅ…จๅฑ€ไฝฟ็”จ็š„้…่‰ฒๆ–นๆกˆใ€‚</b>ๅœจโ€œThe Pondโ€็š„โ€œTheme Makerโ€ไธญๅˆ›ๅปบๅนถๅˆ†ไบซไฝ ่‡ชๅทฑ็š„ไธป้ข˜๏ผ + + + Distance Button + ่ท็ฆปๆŒ‰้’ฎ + + + <b>The distance button icons shown on the driving screen.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>้ฉพ้ฉถๅฑๅน•ไธŠๆ˜พ็คบ็š„่ท็ฆปๆŒ‰้’ฎๅ›พๆ ‡ใ€‚</b> ไฝฟ็”จโ€œThe Pondโ€ไธญ็š„โ€œTheme Makerโ€ๆฅๅˆ›ๅปบๅนถๅˆ†ไบซไฝ ่‡ชๅทฑ็š„ไธป้ข˜๏ผ Icon Pack - ๅ›พๆ ‡ๅŒ… + ๅ›พๆ ‡ๅŒ… - openpilot's icon pack. - -Want to submit your own icons? Share them in the "custom-themes" channel on the FrogPilot Discord! - openpilot็š„ๅ›พๆ ‡ๅŒ…ใ€‚ - -ๆƒณๆไบคๆ‚จ่‡ชๅทฑ็š„ๅ›พๆ ‡ๅ—๏ผŸ่ฏทๅœจFrogPilot Discord็š„โ€œcustom-themesโ€้ข‘้“ๅˆ†ไบซๅฎƒไปฌ๏ผ + <b>The icon style used across openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot ๅ…จๅฑ€ไฝฟ็”จ็š„ๅ›พๆ ‡ๆ ทๅผใ€‚</b> ไฝฟ็”จโ€œThe Pondโ€ไธญ็š„โ€œTheme Makerโ€ๆฅๅˆ›ๅปบๅนถๅˆ†ไบซไฝ ่‡ชๅทฑ็š„ไธป้ข˜๏ผ Sound Pack - ้Ÿณๆ•ˆๅŒ… + ๅฃฐ้ŸณๅŒ… - openpilot's sound effects. - -Want to submit your own sounds? Share them in the "custom-themes" channel on the FrogPilot Discord! - openpilot ็š„้Ÿณๆ•ˆใ€‚ - -ๆƒณๆไบคๆ‚จ่‡ชๅทฑ็š„ๅฃฐ้Ÿณๅ—๏ผŸ่ฏทๅœจ FrogPilot Discord ็š„โ€œcustom-themesโ€้ข‘้“ๅˆ†ไบซๅฎƒไปฌ๏ผ + <b>The sound pack used by openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot ไฝฟ็”จ็š„้Ÿณๆ•ˆๅŒ…ใ€‚</b>ๅœจโ€œThe Pondโ€ไธญไฝฟ็”จโ€œTheme Makerโ€ๅˆ›ๅปบๅนถๅˆ†ไบซไฝ ่‡ชๅทฑ็š„ไธป้ข˜๏ผ Steering Wheel - ๆ–นๅ‘็›˜ + ๆ–นๅ‘็›˜ - The steering wheel icon in the top right of the driving screen. - ้ฉพ้ฉถๅฑๅน•ๅณไธŠ่ง’็š„ๆ–นๅ‘็›˜ๅ›พๆ ‡ใ€‚ - - - Themed turn signal animations. - -Want to submit your own animations? Share them in the "custom-themes" channel on the FrogPilot Discord! - ไธป้ข˜่ฝฌๅ‘็ฏๅŠจ็”ปใ€‚ - -ๆƒณๆไบคๆ‚จ่‡ชๅทฑ็š„ๅŠจ็”ปๅ—๏ผŸ่ฏทๅœจFrogPilot Discord็š„โ€œcustom-themesโ€้ข‘้“ไธญๅˆ†ไบซ๏ผ - - - Download Status - ไธ‹่ฝฝ็Šถๆ€ - - - Holiday Themes - ่Š‚ๆ—ฅไธป้ข˜ - - - Holiday-based visual themes for openpilot. Minor holidays last one day; major holidays (Christmas, Easter, Halloween, etc.) continue all week. - ๅŸบไบŽ่Š‚ๆ—ฅ็š„openpilot่ง†่ง‰ไธป้ข˜ใ€‚ๅฐ่Š‚ๆ—ฅๆŒ็ปญไธ€ๅคฉ๏ผ›ไธป่ฆ่Š‚ๆ—ฅ๏ผˆๅœฃ่ฏž่Š‚ใ€ๅคๆดป่Š‚ใ€ไธ‡ๅœฃ่Š‚็ญ‰๏ผ‰ๆŒ็ปญไธ€ๅ‘จใ€‚ - - - Rainbow Path - ๅฝฉ่™นไน‹่ทฏ - - - The path on the driving screen turns into a Mario Kart inspired "Rainbow Path". - ้ฉพ้ฉถๅฑๅน•ไธŠ็š„่ทฏๅพ„ๅ˜ๆˆไบ†ๅ—ใ€Š้ฉฌ้‡Œๅฅฅ่ต›่ฝฆใ€‹ๅฏๅ‘็š„โ€œๅฝฉ่™น่ทฏๅพ„โ€ใ€‚ - - - Random Events - ้šๆœบไบ‹ไปถ - - - Random cosmetic events that trigger after certain driving conditions. These events are purely for fun and don't affect driving controls! - ๅœจ็‰นๅฎš้ฉพ้ฉถๆกไปถไธ‹่งฆๅ‘็š„้šๆœบ่ฃ…้ฅฐไบ‹ไปถใ€‚่ฟ™ไบ›ไบ‹ไปถ็บฏๅฑžๅจฑไน๏ผŒไธๅฝฑๅ“้ฉพ้ฉถๆŽงๅˆถ๏ผ - - - Random Themes - ้šๆœบไธป้ข˜ - - - Cycles through your downloaded themes randomly on each boot, giving every theme in your collection a chance to shine! - ๅœจๆฏๆฌกๅฏๅŠจๆ—ถ้šๆœบๅพช็Žฏๅˆ‡ๆขๅทฒไธ‹่ฝฝ็š„ไธป้ข˜๏ผŒ่ฎฉๆ‚จๆ”ถ่—ไธญ็š„ๆฏไธชไธป้ข˜้ƒฝๆœ‰ๆœบไผšๅฑ•็คบ๏ผ - - - Startup Alert - ๅฏๅŠจ่ญฆๆŠฅ - - - The text of the "Startup Alert" message that appears at the beginning of a drive. - ้ฉฑๅŠจๅ™จๅผ€ๅง‹ๆ—ถๅ‡บ็Žฐ็š„โ€œๅฏๅŠจ่ญฆๆŠฅโ€ๆถˆๆฏ็š„ๆ–‡ๆœฌใ€‚ - - - DELETE - ๅˆ ้™ค - - - DOWNLOAD - ไธ‹่ฝฝ - - - SELECT - SELECT - - - Select a color scheme to delete - ้€‰ๆ‹ฉ่ฆๅˆ ้™ค็š„้…่‰ฒๆ–นๆกˆ - - - Are you sure you want to delete the "%1" color scheme? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คโ€œ%1โ€้…่‰ฒๆ–นๆกˆๅ—๏ผŸ - - - Delete - ๅˆ ้™ค - - - Select a color scheme to download - ้€‰ๆ‹ฉไธ€ไธช้…่‰ฒๆ–นๆกˆไธ‹่ฝฝ - - - Select a color scheme - ้€‰ๆ‹ฉ้…่‰ฒๆ–นๆกˆ - - - Select a distance icon pack to delete - ้€‰ๆ‹ฉไธ€ไธช่ท็ฆปๅ›พๆ ‡ๅŒ…่ฟ›่กŒๅˆ ้™ค - - - Are you sure you want to delete the "%1" distance icon pack? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คโ€œ%1โ€่ท็ฆปๅ›พๆ ‡ๅŒ…ๅ—๏ผŸ - - - Select a distance icon pack to download - ้€‰ๆ‹ฉไธ€ไธช่ท็ฆปๅ›พๆ ‡ๅŒ…่ฟ›่กŒไธ‹่ฝฝ - - - Select a distance icon pack - ้€‰ๆ‹ฉไธ€ไธช่ท็ฆปๅ›พๆ ‡ๅŒ… - - - Select an icon pack to delete - ้€‰ๆ‹ฉ่ฆๅˆ ้™ค็š„ๅ›พๆ ‡ๅŒ… - - - Are you sure you want to delete the "%1" icon pack? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คโ€œ%1โ€ๅ›พๆ ‡ๅŒ…ๅ—๏ผŸ - - - Select an icon pack to download - ้€‰ๆ‹ฉไธ€ไธชๅ›พๆ ‡ๅŒ…่ฟ›่กŒไธ‹่ฝฝ - - - Select an icon pack - ้€‰ๆ‹ฉไธ€ไธชๅ›พๆ ‡ๅŒ… - - - Select a signal animation to delete - ้€‰ๆ‹ฉ่ฆๅˆ ้™ค็š„ไฟกๅทๅŠจ็”ป - - - Are you sure you want to delete the "%1" signal animation? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คโ€œ%1โ€ไฟกๅทๅŠจ็”ปๅ—๏ผŸ - - - Select a signal animation to download - ้€‰ๆ‹ฉไธ€ไธชไฟกๅทๅŠจ็”ปไธ‹่ฝฝ - - - Select a signal animation - ้€‰ๆ‹ฉไธ€ไธชไฟกๅทๅŠจ็”ป - - - Select a sound pack to delete - ้€‰ๆ‹ฉ่ฆๅˆ ้™ค็š„ๅฃฐ้ŸณๅŒ… - - - Are you sure you want to delete the "%1" sound pack? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คโ€œ%1โ€้Ÿณๆ•ˆๅŒ…ๅ—๏ผŸ - - - Select a sound pack to download - ้€‰ๆ‹ฉไธ€ไธช้Ÿณๆ•ˆๅŒ…ไธ‹่ฝฝ - - - Select a sound pack - ้€‰ๆ‹ฉไธ€ไธชๅฃฐ้ŸณๅŒ… - - - Select a steering wheel to delete - ้€‰ๆ‹ฉ่ฆๅˆ ้™ค็š„ๆ–นๅ‘็›˜ - - - Are you sure you want to delete the "%1" steering wheel? - ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คโ€œ%1โ€ๆ–นๅ‘็›˜ๅ—๏ผŸ - - - Select a steering wheel to download - ้€‰ๆ‹ฉไธ€ไธชๆ–นๅ‘็›˜่ฟ›่กŒไธ‹่ฝฝ - - - Select a steering wheel - ้€‰ๆ‹ฉๆ–นๅ‘็›˜ - - - STOCK - ๅบ“ๅญ˜ - - - FROGPILOT - FROGPILOT - - - CUSTOM - ่‡ชๅฎšไน‰ - - - CLEAR - ๆธ…้™ค - - - Enter the text for the top half - ่พ“ๅ…ฅไธŠๅŠ้ƒจๅˆ†็š„ๆ–‡ๆœฌ - - - Characters: 0/%1 - ๅญ—็ฌฆ๏ผš0/%1 - - - Enter the text for the bottom half - ่พ“ๅ…ฅไธ‹ๅŠ้ƒจๅˆ†็š„ๆ–‡ๆœฌ - - - "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! - โ€œ้šๆœบไธป้ข˜โ€ไป…้€‚็”จไบŽๅทฒไธ‹่ฝฝ็š„ไธป้ข˜๏ผŒๅ› ๆญค่ฏท็กฎไฟไธ‹่ฝฝๆ‚จๅธŒๆœ›ไฝฟ็”จ็š„ไธป้ข˜๏ผ - - - CANCEL - ๅ–ๆถˆ - - - Are you sure you want to completely reset your startup message? - ๆ‚จ็กฎๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎๅฏๅŠจๆถˆๆฏๅ—๏ผŸ + <b>The steering-wheel icon</b> shown at the top-right of the driving screen. Use the "Theme Maker" in "The Pond" to create and share your own themes! + ้ฉพ้ฉถๅฑๅน•ๅณไธŠ่ง’ๆ˜พ็คบ็š„<b>ๆ–นๅ‘็›˜ๅ›พๆ ‡</b>ใ€‚ไฝฟ็”จโ€œThe Pondโ€ไธญ็š„โ€œTheme Makerโ€ๆฅๅˆ›ๅปบๅนถๅˆ†ไบซไฝ ่‡ชๅทฑ็š„ไธป้ข˜๏ผ Turn Signal - ่ฝฌๅ‘็ฏ + ่ฝฌๅ‘็ฏ + + + <b>Themed turn-signal animations.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>ไธป้ข˜ๅผ่ฝฌๅ‘็ฏๅŠจ็”ปใ€‚</b>ๅœจโ€œThe Pondโ€ไธญไฝฟ็”จโ€œTheme Makerโ€ๅˆ›ๅปบๅนถๅˆ†ไบซไฝ ่‡ชๅทฑ็š„ไธป้ข˜๏ผ + + + Download Status + ไธ‹่ฝฝ็Šถๆ€ + + + Holiday Themes + ่Š‚ๆ—ฅไธป้ข˜ + + + <b>Themes based on U.S. holidays.</b> Minor holidays last one day; major holidays (Christmas, Easter, Halloween) run for a full week. + <b>ๅŸบไบŽ็พŽๅ›ฝ่Š‚ๆ—ฅ็š„ไธป้ข˜ใ€‚</b> ๆฌก่ฆ่Š‚ๆ—ฅๆŒ็ปญไธ€ๅคฉ๏ผ›ไธป่ฆ่Š‚ๆ—ฅ๏ผˆChristmasใ€Easterใ€Halloween๏ผ‰ๆŒ็ปญไธ€ๆ•ดๅ‘จใ€‚ + + + Rainbow Path + ๅฝฉ่™น่ทฏๅพ„ + + + <b>Color the driving path like a Mario Kartโ€“style "Rainbow Road".</b> + <b>ๅฐ†่กŒ้ฉถ่ทฏๅพ„็€่‰ฒไธบ็ฑปไผผ้ฉฌ้‡Œๅฅฅ่ต›่ฝฆโ€œๅฝฉ่™นไน‹่ทฏโ€็š„ๆ•ˆๆžœใ€‚</b> + + + Random Events + ้šๆœบไบ‹ไปถ + + + <b>Occasional on-screen effects triggered by driving conditions.</b> These are purely a visual and don't impact how openpilot drives! + <b>ๅถๅฐ”ไผšๅ‡บ็Žฐ็”ฑ้ฉพ้ฉถๆกไปถ่งฆๅ‘็š„ๅฑๅน•ๆ•ˆๆžœใ€‚</b>่ฟ™ไบ›ๅชๆ˜ฏ่ง†่ง‰ๆ•ˆๆžœ๏ผŒไธไผšๅฝฑๅ“ openpilot ็š„้ฉพ้ฉถๆ–นๅผ๏ผ + + + Random Themes + ้šๆœบไธป้ข˜ + + + <b>Pick a random theme between each drive</b> from the themes you have downloaded. Great for variety without changing settings while driving. + <b>ๅœจๆฏๆฌก่กŒ็จ‹ไน‹้—ด้šๆœบ้€‰ๆ‹ฉไธ€ไธชไธป้ข˜</b>๏ผŒไปŽไฝ ๅทฒไธ‹่ฝฝ็š„ไธป้ข˜ไธญๆŒ‘้€‰ใ€‚ๆ— ้œ€ๅœจ้ฉพ้ฉถๆ—ถๆ›ดๆ”น่ฎพ็ฝฎๅณๅฏ่Žทๅพ—ๅคšๆ ทๅŒ–ไฝ“้ชŒใ€‚ + + + Startup Alert + ๅฏๅŠจ่ญฆๆŠฅ + + + <b>Customize the "Startup Alert" message</b> shown at the start of each drive. + <b>่‡ชๅฎšไน‰ๆฏๆฌก่กŒ็จ‹ๅผ€ๅง‹ๆ—ถๆ˜พ็คบ็š„โ€œๅฏๅŠจ่ญฆๆŠฅโ€ๆถˆๆฏ</b> + + + DELETE + ๅˆ ้™ค + + + DOWNLOAD + ไธ‹่ฝฝ + + + SELECT + ้€‰ๆ‹ฉ + + + Select a color scheme to delete + ้€‰ๆ‹ฉ่ฆๅˆ ้™ค็š„้…่‰ฒๆ–นๆกˆ + + + Delete the "%1" color scheme? + ๅˆ ้™คโ€œ%1โ€้…่‰ฒๆ–นๆกˆ๏ผŸ + + + Delete + ๅˆ ้™ค + + + Select a color scheme to download + ้€‰ๆ‹ฉ่ฆไธ‹่ฝฝ็š„้…่‰ฒๆ–นๆกˆ + + + Select a color scheme + ้€‰ๆ‹ฉ้…่‰ฒๆ–นๆกˆ + + + Select a distance icon pack to delete + ้€‰ๆ‹ฉ่ฆๅˆ ้™ค็š„่ท็ฆปๅ›พๆ ‡ๅŒ… + + + Delete the "%1" distance icon pack? + ๅˆ ้™คโ€œ%1โ€่ท็ฆปๅ›พๆ ‡ๅŒ…๏ผŸ + + + Select a distance icon pack to download + ้€‰ๆ‹ฉ่ฆไธ‹่ฝฝ็š„่ท็ฆปๅ›พๆ ‡ๅŒ… + + + Select a distance icon pack + ้€‰ๆ‹ฉ่ท็ฆปๅ›พๆ ‡ๅŒ… + + + Select an icon pack to delete + ้€‰ๆ‹ฉ่ฆๅˆ ้™ค็š„ๅ›พๆ ‡ๅŒ… + + + Delete the "%1" icon pack? + ๅˆ ้™คโ€œ%1โ€ๅ›พๆ ‡ๅŒ…๏ผŸ + + + Select an icon pack to download + ้€‰ๆ‹ฉ่ฆไธ‹่ฝฝ็š„ๅ›พๆ ‡ๅŒ… + + + Select an icon pack + ้€‰ๆ‹ฉไธ€ไธชๅ›พๆ ‡ๅŒ… + + + Select a signal animation to delete + ้€‰ๆ‹ฉ่ฆๅˆ ้™ค็š„ไฟกๅทๅŠจ็”ป + + + Delete the "%1" signal animation? + ๅˆ ้™คโ€œ%1โ€ไฟกๅทๅŠจ็”ป๏ผŸ + + + Select a signal animation to download + ้€‰ๆ‹ฉ่ฆไธ‹่ฝฝ็š„ไฟกๅทๅŠจ็”ป + + + Select a signal animation + ้€‰ๆ‹ฉไธ€ไธชไฟกๅทๅŠจ็”ป + + + Select a sound pack to delete + ้€‰ๆ‹ฉ่ฆๅˆ ้™ค็š„้Ÿณๆ•ˆๅŒ… + + + Delete the "%1" sound pack? + ๅˆ ้™คโ€œ%1โ€้Ÿณๆ•ˆๅŒ…๏ผŸ + + + Select a sound pack to download + ้€‰ๆ‹ฉ่ฆไธ‹่ฝฝ็š„้Ÿณๆ•ˆๅŒ… + + + Select a sound pack + ้€‰ๆ‹ฉ้Ÿณๆ•ˆๅŒ… + + + Select a steering wheel to delete + ้€‰ๆ‹ฉ่ฆๅˆ ้™ค็š„ๆ–นๅ‘็›˜ + + + Delete the "%1" steering wheel? + ๅˆ ้™คโ€œ%1โ€ๆ–นๅ‘็›˜๏ผŸ + + + Select a steering wheel to download + ้€‰ๆ‹ฉ่ฆไธ‹่ฝฝ็š„ๆ–นๅ‘็›˜ + + + Select a steering wheel + ้€‰ๆ‹ฉไธ€ไธชๆ–นๅ‘็›˜ + + + STOCK + ๅบ“ๅญ˜ + + + FROGPILOT + FROGPILOT + + + CUSTOM + ่‡ชๅฎšไน‰ + + + CLEAR + ๆธ…้™ค + + + Enter the text for the top half + ่พ“ๅ…ฅไธŠๅŠ้ƒจๅˆ†็š„ๆ–‡ๆœฌ + + + Characters: 0/%1 + ๅญ—็ฌฆๆ•ฐ๏ผš0/%1 + + + Enter the text for the bottom half + ่ฏท่พ“ๅ…ฅไธ‹ๅŠ้ƒจๅˆ†็š„ๆ–‡ๆœฌ + + + Are you sure you want to completely reset your startup message? + ๆ‚จ็กฎๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎๆ‚จ็š„ๅฏๅŠจๆถˆๆฏๅ—๏ผŸ + + + "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! + โ€œ้šๆœบไธป้ข˜โ€ไป…้€‚็”จไบŽๅทฒไธ‹่ฝฝ็š„ไธป้ข˜๏ผŒ่ฏท็กฎไฟไธ‹่ฝฝไฝ ๅธŒๆœ›ๅฎƒไฝฟ็”จ็š„ไธป้ข˜๏ผ + + + CANCEL + ๅ–ๆถˆ FrogPilotUtilitiesPanel Debug Mode - ่ฐƒ่ฏ•ๆจกๅผ + ่ฐƒ่ฏ•ๆจกๅผ - Debug FrogPilot during the next drive by utilizing all of FrogPilot's developer metrics for either bug reporting, or self-debugging. - ๅœจไธ‹ๆฌก้ฉพ้ฉถ่ฟ‡็จ‹ไธญ๏ผŒ้€š่ฟ‡ๅˆฉ็”จๆ‰€ๆœ‰FrogPilot็š„ๅผ€ๅ‘่€…ๆŒ‡ๆ ‡ๆฅ่ฐƒ่ฏ•FrogPilot๏ผŒไปฅ่ฟ›่กŒ้”™่ฏฏๆŠฅๅ‘Šๆˆ–่‡ชๆˆ‘่ฐƒ่ฏ•ใ€‚ + <b>Use FrogPilot's developer metrics on your next drive</b> to diagnose issues and improve bug reports. + <b>ๅœจไธ‹ๆฌก้ฉพ้ฉถไธญไฝฟ็”จ FrogPilot ็š„ๅผ€ๅ‘่€…ๆŒ‡ๆ ‡</b>๏ผŒไปฅ่ฏŠๆ–ญ้—ฎ้ข˜ๅนถๆ”น่ฟ›้”™่ฏฏๆŠฅๅ‘Šใ€‚ Flash Panda - ้—ช็”ต็†Š็Œซ + ๅˆทๅ†™Panda FLASH - ้—ชๅ…‰ + ้—ชๅ…‰ - Flash the Panda's firmware. Use if you're running into issues with the Panda. - ๅˆทๆ–ฐPanda็š„ๅ›บไปถใ€‚ๅฆ‚ๆžœๆ‚จ้‡ๅˆฐPanda็š„้—ฎ้ข˜๏ผŒ่ฏทไฝฟ็”จๆญคๆ–นๆณ•ใ€‚ + <b>Reinstall the Panda firmware</b> to fix connection or reliability issues. + <b>้‡ๆ–ฐๅฎ‰่ฃ… Panda ๅ›บไปถ</b>ไปฅไฟฎๅค่ฟžๆŽฅๆˆ–ๅฏ้ ๆ€ง้—ฎ้ข˜ใ€‚ - Are you sure you want to flash the Panda? - ๆ‚จ็กฎๅฎš่ฆๅˆทๆ–ฐPandaๅ—๏ผŸ + Are you sure you want to flash the Panda firmware? + ๆ‚จ็กฎๅฎš่ฆๅˆทๅ†™ Panda ๅ›บไปถๅ—๏ผŸ Flash - ้—ชๅ…‰ + ้—ชๅ…‰ Flashing... - ้—ช็ƒไธญ... + ๆญฃๅœจๅˆทๆ–ฐโ€ฆ Flashed! - ้—ชๅ…‰๏ผ + ๅทฒๅˆทๅ†™๏ผ Rebooting... - ้‡ๅฏไธญ... + ๆญฃๅœจ้‡ๅฏโ€ฆ - Force Started State - ๅผบๅˆถๅฏๅŠจ็Šถๆ€ + Force Drive State + ๅผบๅˆถ้ฉพ้ฉถ็Šถๆ€ - Force openpilot either offroad or onroad. - ๅผบๅˆถopenpilotๅœจ้ž้“่ทฏๆˆ–้“่ทฏไธŠ่ฟ่กŒใ€‚ + <b>Manually set openpilot to be offroad or onroad.</b> + <b>ๆ‰‹ๅŠจๅฐ† openpilot ่ฎพ็ฝฎไธบ็ฆป็บฟๆˆ–ๅœจ็บฟใ€‚</b> OFFROAD - ่ถŠ้‡Ž + ่ถŠ้‡Ž ONROAD - ONROAD + ่กŒ่ฝฆๆจกๅผ OFF - ๅ…ณ้—ญ + ๅ…ณ้—ญ Report a Bug or an Issue - ๆŠฅๅ‘Š้”™่ฏฏๆˆ–้—ฎ้ข˜ + ๆŠฅๅ‘Š้”™่ฏฏๆˆ–้—ฎ้ข˜ REPORT - ๆŠฅๅ‘Š + ๆŠฅๅ‘Š - Let FrogsGoMoo know about an issue you're facing! - ่ฎฉFrogsGoMoo็Ÿฅ้“ๆ‚จ้‡ๅˆฐ็š„้—ฎ้ข˜๏ผ + <b>Send a bug report</b> so we can help fix the problem! + <b>ๅ‘้€้”™่ฏฏๆŠฅๅ‘Š</b>๏ผŒไปฅไพฟๆˆ‘ไปฌๅธฎๅŠฉไฟฎๅค้—ฎ้ข˜๏ผ + + + Please connect to the internet before sending a report! + ๅ‘้€ๆŠฅๅ‘Šๅ‰่ฏทๅ…ˆ่ฟžๆŽฅๅˆฐไบ’่”็ฝ‘๏ผ I saw an alert that said "openpilot crashed" - ๆˆ‘็œ‹ๅˆฐไธ€ไธช่ญฆๆŠฅ่ฏดโ€œopenpilotๅดฉๆบƒโ€ + ๆˆ‘็œ‹ๅˆฐไธ€ไธช่ญฆๆŠฅๆ˜พ็คบโ€œopenpilot ๅดฉๆบƒโ€ - What's going on? - ๆ€Žไนˆๅ›žไบ‹๏ผŸ + Acceleration feels harsh or jerky + ๅŠ ้€Ÿๆ„Ÿ่ง‰็”Ÿ็กฌๆˆ–้กฟๆŒซ - Please describe what's happening - ่ฏทๆ่ฟฐๆญฃๅœจๅ‘็”Ÿ็š„ไบ‹ๆƒ… - - - Send Report - ๅ‘้€ๆŠฅๅ‘Š - - - What's your Discord username? - ไฝ ็š„Discord็”จๆˆทๅๆ˜ฏไป€ไนˆ๏ผŸ - - - Your report has been submitted. Thanks for letting us know! - ๆ‚จ็š„ๆŠฅๅ‘Šๅทฒๆไบคใ€‚ๆ„Ÿ่ฐขๆ‚จ็š„ๅ‘Š็Ÿฅ๏ผ - - - Reset Toggles to Default - ้‡็ฝฎๅˆ‡ๆขๅˆฐ้ป˜่ฎค่ฎพ็ฝฎ - - - RESET - ้‡็ฝฎ - - - Reset all toggles to their default values. - ๅฐ†ๆ‰€ๆœ‰ๅˆ‡ๆข้กน้‡็ฝฎไธบ้ป˜่ฎคๅ€ผใ€‚ - - - Are you sure you want to reset all toggles to their default values? - ๆ‚จ็กฎๅฎš่ฆๅฐ†ๆ‰€ๆœ‰ๅˆ‡ๆข้‡็ฝฎไธบ้ป˜่ฎคๅ€ผๅ—๏ผŸ - - - Reset - ้‡็ฝฎ - - - Resetting... - ้‡็ฝฎไธญ... - - - Reset! - ้‡็ฝฎ๏ผ - - - Reset Toggles to Match Stock openpilot - ้‡็ฝฎๅˆ‡ๆขไปฅๅŒน้…ๅŽŸๅŽ‚openpilot - - - Reset all toggles to match stock openpilot. - ้‡็ฝฎๆ‰€ๆœ‰ๅˆ‡ๆขๅผ€ๅ…ณไปฅๅŒน้…ๅŽŸๅŽ‚openpilotใ€‚ - - - Are you sure you want to reset all toggles to match stock openpilot? - ๆ‚จ็กฎๅฎš่ฆ้‡็ฝฎๆ‰€ๆœ‰ๅˆ‡ๆขไปฅๅŒน้…ๅบ“ๅญ˜openpilotๅ—๏ผŸ - - - Ensure your device has an internet connection before sending a report! - ๅœจๅ‘้€ๆŠฅๅ‘Šไน‹ๅ‰๏ผŒ่ฏท็กฎไฟๆ‚จ็š„่ฎพๅค‡ๅทฒ่ฟžๆŽฅไบ’่”็ฝ‘๏ผ - - - Acceleration feels too harsh or jerky - ๅŠ ้€Ÿๆ„Ÿ่ง‰ๅคช็Œ›็ƒˆๆˆ–ไธๅนณ็จณ - - - An alert confused me and I didnโ€™t know what it meant - ไธ€ไธช่ญฆๆŠฅ่ฎฉๆˆ‘ๆ„Ÿๅˆฐๅ›ฐๆƒ‘๏ผŒๆˆ‘ไธ็Ÿฅ้“ๅฎƒ็š„ๆ„ๆ€ใ€‚ + An alert was unclear and I didn't know what it meant + ๆœ‰ไธช่ญฆๆŠฅไธๆธ…ๆฅš๏ผŒๆˆ‘ไธ็Ÿฅ้“ๅฎƒๆ˜ฏไป€ไนˆๆ„ๆ€ Braking is too sudden or uncomfortable - ๅˆน่ฝฆ่ฟ‡ไบŽ็ช็„ถๆˆ–ไธ่ˆ’ๆœ + ๅˆถๅŠจ่ฟ‡ไบŽ็ช็„ถๆˆ–ไธ่ˆ’้€‚ - Iโ€™m not sure if this is normal or a bug: - ๆˆ‘ไธ็กฎๅฎš่ฟ™ๆ˜ฏๆญฃๅธธ็Žฐ่ฑก่ฟ˜ๆ˜ฏไธ€ไธช้”™่ฏฏ๏ผš + I'm not sure if this is normal or a bug: + ๆˆ‘ไธ็กฎๅฎš่ฟ™ๆ˜ฏๆญฃๅธธๆƒ…ๅ†ต่ฟ˜ๆ˜ฏไธ€ไธช้”™่ฏฏ๏ผš - Lane changes donโ€™t work properly or feel unsafe - ๅ˜้“ๆ— ๆณ•ๆญฃๅธธๅทฅไฝœๆˆ–ๆ„Ÿ่ง‰ไธๅฎ‰ๅ…จ + My screen froze or is stuck loading something + ๆˆ‘็š„ๅฑๅน•ๅกไฝไบ†ๆˆ–ไธ€็›ดๅœจๅŠ ่ฝฝๅ†…ๅฎน - My screen froze or got stuck on loading - ๆˆ‘็š„ๅฑๅน•ๅ†ป็ป“ๆˆ–ๅกๅœจๅŠ ่ฝฝไธญ - - - My steering wheel buttons arenโ€™t working - ๆˆ‘็š„ๆ–นๅ‘็›˜ๆŒ‰้’ฎไธ่ตทไฝœ็”จ + My steering wheel buttons aren't working + ๆˆ‘็š„ๆ–นๅ‘็›˜ๆŒ‰้”ฎๆ— ๆณ•ไฝฟ็”จ openpilot disengages when I don't expect it - ๅฝ“ๆˆ‘ๆฒกๆœ‰้ข„ๆ–™ๅˆฐๆ—ถ๏ผŒopenpilot ไผšๆ–ญๅผ€่ฟžๆŽฅใ€‚ - - - openpilot doesnโ€™t resume after I stop - openpilotๅœจๆˆ‘ๅœๆญขๅŽไธไผšๆขๅค + openpilot ๅœจๆˆ‘ๆ„ๆ–™ไน‹ๅค–ๆ—ถไผš้€€ๅ‡บๆŽงๅˆถ openpilot doesn't react to stopped vehicles ahead - openpilotๅฏนๅ‰ๆ–นๅœๆญข็š„่ฝฆ่พ†ๆฒกๆœ‰ๅๅบ” + openpilotไธไผšๅฏนๅ‰ๆ–น้™ๆญข่ฝฆ่พ†ไฝœๅ‡บๅๅบ” + + + openpilot doesn't resume from a stop + openpilotไธไผšไปŽๅœๆญข็Šถๆ€ๆขๅค openpilot feels sluggish or slow to respond - openpilotๆ„Ÿ่ง‰่ฟŸ็ผ“ๆˆ–ๅๅบ”ๆ…ข + openpilot ๆ„Ÿ่ง‰่ฟŸ็ผ“ๆˆ–ๅ“ๅบ”็ผ“ๆ…ข Steering feels twitchy or unnatural - ่ฝฌๅ‘ๆ„Ÿ่ง‰ไธ็จณๅฎšๆˆ–ไธ่‡ช็„ถ + ่ฝฌๅ‘ๆ„Ÿ่ง‰ๆŠฝๆๆˆ–ไธ่‡ช็„ถ - The car doesnโ€™t follow curves well - ่ฟ™่พ†่ฝฆๅœจ่ฝฌๅผฏๆ—ถ่กจ็Žฐไธๅฅฝ + The car doesn't follow curves well + ่ฝฆ่พ†ๅœจ่ฝฌๅผฏๆ—ถ่ทŸ้šๅพ—ไธๅฅฝ - The car isnโ€™t staying centered in its lane - ๆฑฝ่ฝฆๆฒกๆœ‰ไฟๆŒๅœจ่ฝฆ้“ไธญๅคฎใ€‚ - - - The speed or display info looks wrong - ้€Ÿๅบฆๆˆ–ๆ˜พ็คบไฟกๆฏ็œ‹่ตทๆฅไธๅฏน + The car isn't staying centered in its lane + ่ฝฆ่พ†ๆœช่ƒฝไฟๆŒๅœจ่ฝฆ้“ไธญๅคฎ Something else (please describe) - ๅ…ถไป–๏ผˆ่ฏทๆ่ฟฐ๏ผ‰ + ๅ…ถไป–๏ผˆ่ฏทๆ่ฟฐ๏ผ‰ + + + What's going on? + ๅ‘็”Ÿไบ†ไป€ไนˆ๏ผŸ + + + Please describe what's happening + ่ฏทๆ่ฟฐๆญฃๅœจๅ‘็”Ÿ็š„ๆƒ…ๅ†ต + + + Send Report + ๅ‘้€ๆŠฅๅ‘Š + + + What's your Discord username? + ไฝ ็š„ Discord ็”จๆˆทๅๆ˜ฏไป€ไนˆ๏ผŸ + + + Report Sent! Thanks for letting us know! + ๆŠฅๅ‘Šๅทฒๅ‘้€๏ผๆ„Ÿ่ฐขๅ‘Š็Ÿฅ๏ผ + + + Reset Toggles to Default + ๅฐ†ๅˆ‡ๆข้กน้‡็ฝฎไธบ้ป˜่ฎค่ฎพ็ฝฎ + + + RESET + ้‡็ฝฎ + + + <b>Reset all toggles to their default values.</b> + <b>ๅฐ†ๆ‰€ๆœ‰ๅˆ‡ๆข้กน้‡็ฝฎไธบๅ…ถ้ป˜่ฎคๅ€ผใ€‚</b> + + + Are you sure you want to reset all toggles to their default values? + ๆ‚จ็กฎๅฎš่ฆๅฐ†ๆ‰€ๆœ‰ๅˆ‡ๆข้กน้‡็ฝฎไธบ้ป˜่ฎคๅ€ผๅ—๏ผŸ + + + Reset + ้‡็ฝฎ + + + Resetting... + ๆญฃๅœจ้‡็ฝฎโ€ฆ + + + Reset! + ้‡็ฝฎ๏ผ + + + Reset Toggles to Stock openpilot + ๅฐ†ๅˆ‡ๆข้กน้‡็ฝฎไธบๅŽŸๅŽ‚ openpilot + + + <b>Reset all toggles to match stock openpilot.</b> + <b>ๅฐ†ๆ‰€ๆœ‰ๅˆ‡ๆข้กน้‡็ฝฎไธบไธŽๅŽŸ็‰ˆ openpilot ไธ€่‡ดใ€‚</b> + + + Are you sure you want to reset all toggles to match stock openpilot? + ๆ‚จ็กฎๅฎš่ฆๅฐ†ๆ‰€ๆœ‰ๅผ€ๅ…ณ้‡็ฝฎไธบไธŽๅŽŸ็‰ˆ openpilot ๅŒน้…ๅ—๏ผŸ FrogPilotVehiclesPanel - Select Make - ้€‰ๆ‹ฉๅ“็‰Œ + Car Make + ๆฑฝ่ฝฆๅ“็‰Œ SELECT - SELECT + ้€‰ๆ‹ฉ - Select a Make - ้€‰ๆ‹ฉๅ“็‰Œ + Choose your car make + ้€‰ๆ‹ฉๆ‚จ็š„ๆฑฝ่ฝฆๅ“็‰Œ - Select Model - ้€‰ๆ‹ฉๆจกๅž‹ + Car Model + ่ฝฆๅž‹ - Select a Model - ้€‰ๆ‹ฉๆจกๅž‹ + Choose your car model + ้€‰ๆ‹ฉไฝ ็š„่ฝฆๅž‹ Disable Automatic Fingerprint Detection - ็ฆ็”จ่‡ชๅŠจๆŒ‡็บนๆฃ€ๆต‹ + ็ฆ็”จ่‡ชๅŠจๆŒ‡็บนๆฃ€ๆต‹ - Forces the selected fingerprint and prevents it from ever changing. - ๅผบๅˆถ้€‰ๅฎš็š„ๆŒ‡็บนๅนถ้˜ฒๆญขๅ…ถๆ›ดๆ”นใ€‚ + <b>Force the selected fingerprint</b> and prevent it from ever changing. + <b>ๅผบๅˆถไฝฟ็”จๆ‰€้€‰ๆŒ‡็บน</b>ๅนถ้˜ฒๆญขๅ…ถๅ‘็”Ÿไปปไฝ•ๆ›ดๆ”นใ€‚ Disable openpilot Longitudinal Control - ็ฆ็”จopenpilot็บตๅ‘ๆŽงๅˆถ + ็ฆ็”จ openpilot ็บตๅ‘ๆŽงๅˆถ - Disables openpilot longitudinal control and uses the car's stock ACC instead. - ็ฆ็”จopenpilot็บตๅ‘ๆŽงๅˆถ๏ผŒๆ”น็”จๆฑฝ่ฝฆ็š„ๅŽŸๅŽ‚ACCใ€‚ + <b>Disable openpilot longitudinal</b> and use the car's stock ACC instead. + <b>็ฆ็”จ openpilot ็บตๅ‘ๆŽงๅˆถ</b>๏ผŒๆ”น็”จ่ฝฆ่พ†ๅŽŸๅŽ‚ ACCใ€‚ Are you sure you want to completely disable openpilot longitudinal control? - ๆ‚จ็กฎๅฎš่ฆๅฎŒๅ…จ็ฆ็”จopenpilot็บตๅ‘ๆŽงๅˆถๅ—๏ผŸ + ๆ‚จ็กฎๅฎš่ฆๅฎŒๅ…จ็ฆ็”จ openpilot ็บตๅ‘ๆŽงๅˆถๅ—๏ผŸ General Motors Settings - ้€š็”จๆฑฝ่ฝฆ่ฎพ็ฝฎ + ้€š็”จๆฑฝ่ฝฆ่ฎพ็ฝฎ - Settings specific to <b>General Motors</b> vehicles. - ้€‚็”จไบŽ<b>้€š็”จๆฑฝ่ฝฆ</b>่ฝฆ่พ†็š„่ฎพ็ฝฎใ€‚ + <b>FrogPilot features for General Motors vehicles.</b> + <b>้€‚็”จไบŽ้€š็”จๆฑฝ่ฝฆ่ฝฆ่พ†็š„ FrogPilot ๅŠŸ่ƒฝใ€‚</b> FrogsGoMoo's Experimental Tune - FrogsGoMoo็š„ๅฎž้ชŒๆ›ฒ่ฐƒ + FrogsGoMoo ็š„ๅฎž้ชŒ่ฐƒๆ ก - <b>FrogsGoMoo's</b> experimental <b>General Motors</b> tune that aims to smoothen out stopping and takeoff control based on nothing but guesswork. Use at your own risk! - <b>FrogsGoMoo ็š„</b>ๅฎž้ชŒๆ€ง<b>้€š็”จๆฑฝ่ฝฆ</b>่ฐƒๆ ก๏ผŒๆ—จๅœจไป…ๅ‡ญ็Œœๆต‹ๆฅๅนณๆป‘ๅœๆญขๅ’Œ่ตทๆญฅๆŽงๅˆถใ€‚ไฝฟ็”จ้ฃŽ้™ฉ่‡ช่ดŸ๏ผ + <b>Experimental GM tune by FrogsGoMoo</b> that attempts to smoothen stopping and takeoff control. Use at your own risk! + <b>FrogsGoMoo ็š„ๅฎž้ชŒๆ€ง GM ่ฐƒๆ ก</b>๏ผŒๅฐ่ฏ•ๅนณๆป‘ๅœ่ฝฆๅ’Œ่ตทๆญฅๆŽงๅˆถใ€‚้ฃŽ้™ฉ่‡ช่ดŸ๏ผ Smooth Pedal Response on Hills - ๅนณ็จณ็š„่ธๆฟๅ“ๅบ”ๅœจๅก้“ไธŠ + ๅก้“ไธŠ็š„ๅนณ้กบ่ธๆฟๅ“ๅบ” - Smoothen the acceleration and braking when driving uphill or downhill. - ๅœจไธŠๅกๆˆ–ไธ‹ๅก้ฉพ้ฉถๆ—ถๅนณ็จณๅŠ ้€Ÿๅ’ŒๅˆถๅŠจใ€‚ + <b>Smoothen acceleration and braking</b> when driving downhill/uphill. + ๅœจไธ‹ๅก/ไธŠๅก้ฉพ้ฉถๆ—ถ<b>ๅนณ้กบๅŠ ้€Ÿๅ’ŒๅˆถๅŠจ</b>ใ€‚ - Stop and Go Hack - ๅœๆญขๅ’Œ็ปง็ปญ้ป‘ๅฎข + Stop-and-Go Hack + ่ตฐ่ตฐๅœๅœไผ˜ๅŒ– Hack - Force stop and go on the <b>2017 Chevy Volt</b>. - ๅผบๅˆถๅœๆญขๅนถ็ปง็ปญ<b>2017 Chevy Volt</b>ใ€‚ + <b>Force stop-and-go</b> on the 2017 Chevy Volt. + ๅœจ2017ๆฌพ้›ชไฝ›ๅ…ฐVoltไธŠ<b>ๅผบๅˆถๅฏๅœ</b>ใ€‚ Hyundai/Kia/Genesis Settings - ็Žฐไปฃ/่ตทไบš/ๆทๅฐผ่ต›ๆ€่ฎพ็ฝฎ + ็Žฐไปฃ/่ตทไบš/ๆทๅฐผ่ต›ๆ€่ฎพ็ฝฎ - Settings specific to <b>Hyundai</b>, <b>Kia</b>, and <b>Genesis</b> vehicles. - ็‰นๅฎšไบŽ<b>็Žฐไปฃ</b>ใ€<b>่ตทไบš</b>ๅ’Œ<b>ๆทๅฐผ่ต›ๆ€</b>่ฝฆ่พ†็š„่ฎพ็ฝฎใ€‚ + <b>FrogPilot features for Genesis, Hyundai, and Kia vehicles.</b> + <b>้€‚็”จไบŽGenesisใ€็Žฐไปฃๅ’Œ่ตทไบš่ฝฆ่พ†็š„FrogPilotๅŠŸ่ƒฝใ€‚</b> comma's New Longitudinal API - comma็š„ๆ–ฐ็บตๅ‘API + comma ็š„ๆ–ฐ็บตๅ‘ API - comma's new longitudinal control system that has shown great improvement with acceleration and braking, but has issues on some <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> vehicles. - comma็š„ๆ–ฐ็บตๅ‘ๆŽงๅˆถ็ณป็ปŸๅœจๅŠ ้€Ÿๅ’ŒๅˆถๅŠจๆ–น้ข่กจ็Žฐๅ‡บๆ˜พ่‘—ๆ”น่ฟ›๏ผŒไฝ†ๅœจๆŸไบ›<b>็Žฐไปฃ</b>/<b>่ตทไบš</b>/<b>ๆทๅฐผ่ต›ๆ€</b>่ฝฆ่พ†ไธŠๅญ˜ๅœจ้—ฎ้ข˜ใ€‚ + <b>comma's new gas and brake control system</b> that improves acceleration and braking but may cause issues on some Genesis/Hyundai/Kia vehicles. + <b>comma ็š„ๆ–ฐๆฒน้—จๅ’Œๅˆน่ฝฆๆŽงๅˆถ็ณป็ปŸ</b>๏ผŒๅฏๆ”นๅ–„ๅŠ ้€Ÿๅ’ŒๅˆถๅŠจ๏ผŒไฝ†ๅฏ่ƒฝๅœจ้ƒจๅˆ† Genesis/Hyundai/Kia ่ฝฆ่พ†ไธŠๅผ•ๅ‘้—ฎ้ข˜ใ€‚ "Taco Bell Run" Torque Hack - "Taco Bell Run" ๆ‰ญ็Ÿฉ็ ด่งฃ + โ€œTaco Bell Runโ€ๆ‰ญ็Ÿฉ็ ด่งฃ - The torque hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to improve turning at low speeds by increasing the allowed steering torque. - Translation A + <b>The steering torque hack from comma's 2022 "Taco Bell Run".</b> Designed to increase steering torque at low speeds for left and right turns. + <b>ๆฅ่‡ชcomma 2022ๅนดโ€œTaco Bell Runโ€็š„่ฝฌๅ‘ๆ‰ญ็Ÿฉ็ ด่งฃใ€‚</b>ๆ—จๅœจๅœจไฝŽ้€Ÿๅทฆ่ฝฌๅ’Œๅณ่ฝฌๆ—ถๆ้ซ˜่ฝฌๅ‘ๆ‰ญ็Ÿฉใ€‚ Toyota/Lexus Settings - Toyota/Lexus ่ฎพ็ฝฎ + Toyota/Lexus ่ฎพ็ฝฎ - Settings specific to <b>Toyota</b> and <b>Lexus</b> vehicles. - ็‰นๅฎšไบŽ<b>ไธฐ็”ฐ</b>ๅ’Œ<b>้›ทๅ…‹่จๆ–ฏ</b>่ฝฆ่พ†็š„่ฎพ็ฝฎใ€‚ + <b>FrogPilot features for Lexus and Toyota vehicles.</b> + <b>Lexus ๅ’Œ Toyota ่ฝฆ่พ†็š„ FrogPilot ๅŠŸ่ƒฝใ€‚</b> Automatically Lock/Unlock Doors - ่‡ชๅŠจ้”ๅฎš/่งฃ้”้—จ + ่‡ชๅŠจ้”ๅฎš/่งฃ้”่ฝฆ้—จ - Automatically lock the doors when shifting into drive and unlock them when shifting into park. - ๅœจๆขๅ…ฅ้ฉพ้ฉถๆกฃๆ—ถ่‡ชๅŠจ้”้—จ๏ผŒๅœจๆขๅ…ฅๅœ่ฝฆๆกฃๆ—ถ่‡ชๅŠจ่งฃ้”ใ€‚ + <b>Automatically lock/unlock doors</b> when shifting in and out of drive. + ๅœจๅˆ‡ๆข่ฟ›ๅ‡บ่กŒ้ฉถๆŒกๆ—ถ<b>่‡ชๅŠจ้”ๅฎš/่งฃ้”่ฝฆ้—จ</b>ใ€‚ - Cluster Speed Offset - ้›†็พค้€Ÿๅบฆๅ็งป + Dashboard Speed Offset + ไปช่กจ็›˜่ฝฆ้€Ÿๅ็งป - The cluster speed offset used by openpilot to match the speed displayed on the dash. - openpilotไฝฟ็”จ็š„้›†็พค้€Ÿๅบฆๅ็งป้‡๏ผŒไปฅๅŒน้…ไปช่กจ็›˜ไธŠๆ˜พ็คบ็š„้€Ÿๅบฆใ€‚ + <b>The speed offset openpilot uses to match the speed on the dashboard display.</b> + <b>openpilot ็”จไบŽๅŒน้…ไปช่กจ็›˜ๆ˜พ็คบ้€Ÿๅบฆ็š„้€Ÿๅบฆๅ็งป้‡ใ€‚</b> FrogsGoMoo's Personal Tweaks - FrogsGoMoo็š„ไธชไบบ่ฐƒๆ•ด + FrogsGoMoo ็š„ไธชไบบ่ฐƒๆ•ด - <b>FrogsGoMoo's</b> personal tweaks for quicker acceleration and smoother braking. - <b>FrogsGoMoo็š„</b>ไธชไบบ่ฐƒๆ•ด๏ผŒไปฅๅฎž็Žฐๆ›ดๅฟซ็š„ๅŠ ้€Ÿๅ’Œๆ›ดๅนณ็จณ็š„ๅˆถๅŠจใ€‚ + <b>Personal tweaks by FrogsGoMoo for quicker acceleration and smoother braking.</b> + <b>็”ฑ FrogsGoMoo ๆไพ›็š„ไธชไบบ่ฐƒๆ•ด๏ผŒๅฎž็Žฐๆ›ดๅฟซ็š„ๅŠ ้€Ÿๅ’Œๆ›ดๅนณ้กบ็š„ๅˆถๅŠจใ€‚</b> Lock Doors On Ignition Off After - ็‚น็ซๅ…ณ้—ญๅŽ้”้—จ + ็‚น็ซๅ…ณ้—ญๅŽ้”้—จ - Automatically lock the doors after the car's ignition has been turned off and no one is detected in either of the front seats. - ๅœจๆฑฝ่ฝฆ็‚น็ซๅ…ณ้—ญไธ”ๅ‰ๆŽ’ๅบงไฝไธŠๆ— ไบบๆฃ€ๆต‹ๅˆฐๅŽ่‡ชๅŠจ้”้—จใ€‚ + <b>Automatically lock the doors on ignition off</b> when no one is detected in the front seats. + <b>ๅฝ“็‚น็ซๅ…ณ้—ญๆ—ถ่‡ชๅŠจ้”้—จ</b>๏ผŒๅฆ‚ๆžœๆœชๆฃ€ๆต‹ๅˆฐๅ‰ๆŽ’ๅบงไฝๆœ‰ไบบใ€‚ - Force stop and go on <b>Toyota</b>/<b>Lexus</b> vehicles without stock stop and go functionality. - ๅœจๆฒกๆœ‰ๅŽŸๅŽ‚ๅฏๅœๅŠŸ่ƒฝ็š„<b>ไธฐ็”ฐ</b>/<b>้›ทๅ…‹่จๆ–ฏ</b>่ฝฆ่พ†ไธŠๅผบๅˆถๅฏๅœใ€‚ + <b>Force stop-and-go</b> on Lexus/Toyota vehicles without stock stop-and-go functionality. + <b>ๅœจไธๅ…ทๅค‡ๅŽŸๅŽ‚่ตฐ่ตฐๅœๅœๅŠŸ่ƒฝ็š„้›ทๅ…‹่จๆ–ฏ/ไธฐ็”ฐ่ฝฆ่พ†ไธŠๅผบๅˆถๅฏ็”จ่ตฐ่ตฐๅœๅœ</b> MANAGE - ็ฎก็† + ็ฎก็† Lock - ้”ๅฎš + ้”ๅฎš Unlock - ่งฃ้” + ่งฃ้” Never - ไปŽไธ + ไปŽไธ seconds - ็ง’ + ็ง’ + + + None + ๆ—  + + + Vehicle Info + ่ฝฆ่พ†ไฟกๆฏ + + + <b>Information about your vehicle in regards to openpilot support and functionality.</b> + <b>ๆœ‰ๅ…ณๆ‚จ็š„่ฝฆ่พ†ๅœจ openpilot ๆ”ฏๆŒไธŽๅŠŸ่ƒฝๆ–น้ข็š„ไฟกๆฏใ€‚</b> + + + <b>Detected 3rd party hardware.</b> + <b>ๆฃ€ๆต‹ๅˆฐ็ฌฌไธ‰ๆ–น็กฌไปถใ€‚</b> + + + openpilot Longitudinal Support + openpilot ็บตๅ‘ๆ”ฏๆŒ + + + <b>Can openpilot control the vehicle's acceleration and braking?</b> + <b>openpilotๅฏไปฅๆŽงๅˆถ่ฝฆ่พ†็š„ๅŠ ้€Ÿๅ’ŒๅˆถๅŠจๅ—๏ผŸ</b> + + + <b>Does your vehicle support the "comma pedal"?</b> + <b>ๆ‚จ็š„่ฝฆ่พ†ๆ”ฏๆŒโ€œcomma pedalโ€ๅ—๏ผŸ</b> + + + Radar Support + ้›ท่พพๆ”ฏๆŒ + + + <b>Does openpilot use the vehicle's radar data</b> alongside the device's camera for tracking lead vehicles? + <b>openpilot ๆ˜ฏๅฆไผšๅœจไฝฟ็”จ่ฎพๅค‡ๆ‘„ๅƒๅคด่ทŸ่ธชๅ‰่ฝฆ็š„ๅŒๆ—ถไฝฟ็”จ่ฝฆ่พ†็š„้›ท่พพๆ•ฐๆฎ</b> + + + SDSU Support + SDSU ๆ”ฏๆŒ + + + <b>Does your vehicle support "SDSUs"?</b> + <b>ๆ‚จ็š„่ฝฆ่พ†ๆ˜ฏๅฆๆ”ฏๆŒโ€œSDSUsโ€๏ผŸ</b> + + + Stop-and-Go Support + ่ตฐ่ตฐๅœๅœๆ”ฏๆŒ + + + <b>Does your vehicle support stop-and-go driving?</b> + <b>ๆ‚จ็š„่ฝฆ่พ†ๆ˜ฏๅฆๆ”ฏๆŒ่ตฐ่ตฐๅœๅœ็š„้ฉพ้ฉถ๏ผŸ</b> + + + VIEW + ๆŸฅ็œ‹ + + + Yes + ๆ˜ฏ + + + No + ๅฆ + + + 3rd Party Hardware Detected + ๆฃ€ๆต‹ๅˆฐ็ฌฌไธ‰ๆ–น็กฌไปถ + + + Blind Spot Support + ็›ฒ็‚น่พ…ๅŠฉๆ”ฏๆŒ + + + <b>Does openpilot use the vehicle's blind spot data?</b> + <b>openpilot ไผšไฝฟ็”จ่ฝฆ่พ†็š„็›ฒ็‚นๆ•ฐๆฎๅ—๏ผŸ</b> + + + comma Pedal Support + comma Pedal ๆ”ฏๆŒ FrogPilotVisualsPanel Advanced UI Controls - ้ซ˜็บงUIๆŽงไปถ + ้ซ˜็บง็•Œ้ขๆŽงไปถ - Advanced settings for fine-tuning openpilot's driving screen. - ็”จไบŽๅพฎ่ฐƒopenpilot้ฉพ้ฉถๅฑๅน•็š„้ซ˜็บง่ฎพ็ฝฎใ€‚ + <b>Advanced visual changes</b> to fine-tune how the driving screen looks. + <b>้ซ˜็บง่ง†่ง‰ๆ›ดๆ”น</b>๏ผŒ็”จไบŽๅพฎ่ฐƒ้ฉพ้ฉถๅฑๅน•็š„ๅค–่ง‚ใ€‚ Hide Current Speed - ้š่—ๅฝ“ๅ‰้€Ÿๅบฆ + ้š่—ๅฝ“ๅ‰้€Ÿๅบฆ - Hide the current speed from the driving screen. - ไปŽ้ฉพ้ฉถๅฑๅน•ไธŠ้š่—ๅฝ“ๅ‰้€Ÿๅบฆใ€‚ + <b>Hide the current speed</b> from the driving screen. + <b>ๅœจ้ฉพ้ฉถๅฑๅน•ไธญ้š่—ๅฝ“ๅ‰้€Ÿๅบฆ</b> Hide Lead Marker - ้š่—็บฟ็ดขๆ ‡่ฎฐ + ้š่—ๅ‰่ฝฆๆ ‡่ฎฐ - Hide the marker for lead vehicles from the driving screen. - ไปŽ้ฉพ้ฉถๅฑๅน•ไธŠ้š่—ๅผ•ๅฏผ่ฝฆ่พ†็š„ๆ ‡่ฎฐใ€‚ + <b>Hide the lead-vehicle marker</b> from the driving screen. + <b>ๅœจ้ฉพ้ฉถๅฑๅน•ไธŠ้š่—ๅ‰่ฝฆๆ ‡่ฎฐ</b> Hide Map Settings Button - ้š่—ๅœฐๅ›พ่ฎพ็ฝฎๆŒ‰้’ฎ + ้š่—ๅœฐๅ›พ่ฎพ็ฝฎๆŒ‰้’ฎ - Hide the map settings button from the driving screen. - ไปŽ้ฉพ้ฉถๅฑๅน•ไธญ้š่—ๅœฐๅ›พ่ฎพ็ฝฎๆŒ‰้’ฎใ€‚ + <b>Hide the map settings button or map</b> from the driving screen. + <b>ๅœจ้ฉพ้ฉถๅฑๅน•ไธŠ้š่—ๅœฐๅ›พ่ฎพ็ฝฎๆŒ‰้’ฎๆˆ–ๅœฐๅ›พ</b> Hide Max Speed - ้š่—ๆœ€ๅคง้€Ÿๅบฆ + ้š่—ๆœ€้ซ˜้€Ÿๅบฆ - Hide the max speed from the driving screen. - ไปŽ้ฉพ้ฉถๅฑๅน•ไธŠ้š่—ๆœ€้ซ˜้€Ÿๅบฆใ€‚ + <b>Hide the max speed</b> from the driving screen. + <b>ๅœจ่กŒ้ฉถๅฑๅน•ไธญ้š่—ๆœ€้ซ˜้€Ÿๅบฆ</b> Hide Non-Critical Alerts - ้š่—้žๅ…ณ้”ฎ่ญฆๆŠฅ + ้š่—้žๅ…ณ้”ฎ่ญฆๆŠฅ - Hide non-critical alerts from the driving screen. - ไปŽ้ฉพ้ฉถๅฑๅน•้š่—้žๅ…ณ้”ฎ่ญฆๆŠฅใ€‚ + <b>Hide non-critical alerts</b> from the driving screen. + ไปŽ้ฉพ้ฉถๅฑๅน•<b>้š่—้žๅ…ณ้”ฎ่ญฆๆŠฅ</b>ใ€‚ Hide Speed Limits - ้š่—้€Ÿๅบฆ้™ๅˆถ + ้š่—้™้€Ÿ - Hide the speed limits from the driving screen. - ไปŽ้ฉพ้ฉถๅฑๅน•ไธŠ้š่—้€Ÿๅบฆ้™ๅˆถใ€‚ + <b>Hide posted speed limits</b> from the driving screen. + <b>ๅœจ้ฉพ้ฉถ็•Œ้ข้š่—ๅทฒๅ‘ๅธƒ็š„้™้€Ÿ</b>ใ€‚ Use Wheel Speed - ไฝฟ็”จ่ฝฆ่ฝฎ้€Ÿๅบฆ + ไฝฟ็”จ่ฝฆ่ฝฎ้€Ÿๅบฆ - Use the vehicle's wheel speed instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives. - ไฝฟ็”จ่ฝฆ่พ†็š„่ฝฆ่ฝฎ้€Ÿๅบฆ่€Œไธๆ˜ฏไปช่กจ็›˜้€Ÿๅบฆใ€‚่ฟ™็บฏ็ฒนๆ˜ฏ่ง†่ง‰ไธŠ็š„ๅ˜ๅŒ–๏ผŒไธๅฝฑๅ“openpilot็š„้ฉพ้ฉถๆ–นๅผใ€‚ + <b>Use the vehicle's wheel speed</b> instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives! + <b>ไฝฟ็”จ่ฝฆ่พ†็š„่ฝฆ่ฝฎ้€Ÿๅบฆ</b>่€Œไธๆ˜ฏไปช่กจ้€Ÿๅบฆใ€‚่ฟ™ๅชๆ˜ฏ่ง†่ง‰ไธŠ็š„ๅ˜ๅŒ–๏ผŒไธไผšๅฝฑๅ“ openpilot ็š„้ฉพ้ฉถๆ–นๅผ๏ผ Developer UI - ๅผ€ๅ‘่€… UI + ๅผ€ๅ‘่€…็•Œ้ข - Detailed information about openpilot's internal operations. - ๆœ‰ๅ…ณopenpilotๅ†…้ƒจๆ“ไฝœ็š„่ฏฆ็ป†ไฟกๆฏใ€‚ + <b>Detailed information about openpilot's internal operations.</b> + <b>ๅ…ณไบŽ openpilot ๅ†…้ƒจ่ฟ่กŒ็š„่ฏฆ็ป†ไฟกๆฏใ€‚</b> Adjacent Path Metrics - ็›ธ้‚ป่ทฏๅพ„ๆŒ‡ๆ ‡ + ็›ธ้‚ป่ทฏๅพ„ๆŒ‡ๆ ‡ - Metrics displayed on top of the adjacent lanes measuring their current width. - ๅœจ็›ธ้‚ป่ฝฆ้“้กถ้ƒจๆ˜พ็คบ็š„ๆŒ‡ๆ ‡ๆต‹้‡ๅ…ถๅฝ“ๅ‰ๅฎฝๅบฆใ€‚ + <b>Show the width of the adjacent lanes.</b> + <b>ๆ˜พ็คบ็›ธ้‚ป่ฝฆ้“็š„ๅฎฝๅบฆใ€‚</b> Developer Metrics - ๅผ€ๅ‘่€…ๆŒ‡ๆ ‡ + ๅผ€ๅ‘่€…ๆŒ‡ๆ ‡ - Performance data, sensor readings, and system metrics for debugging and optimizing openpilot. - ็”จไบŽ่ฐƒ่ฏ•ๅ’Œไผ˜ๅŒ–openpilot็š„ๆ€ง่ƒฝๆ•ฐๆฎใ€ไผ ๆ„Ÿๅ™จ่ฏปๆ•ฐๅ’Œ็ณป็ปŸๆŒ‡ๆ ‡ใ€‚ + <b>Performance data, sensor readings, and system metrics</b> for debugging and optimizing openpilot. + <b>็”จไบŽ่ฐƒ่ฏ•ๅ’Œไผ˜ๅŒ– openpilot ็š„ๆ€ง่ƒฝๆ•ฐๆฎใ€ไผ ๆ„Ÿๅ™จ่ฏปๆ•ฐๅ’Œ็ณป็ปŸๆŒ‡ๆ ‡</b> Border Metrics - ่พนๅขƒๆŒ‡ๆ ‡ + ่พน็•ŒๆŒ‡ๆ ‡ - Metrics displayed around the border of the driving screen.<br><br><b>Blind Spot</b>: Turn the border red when a vehicle is detected in a blind spot<br><b>Steering Torque</b>: Highlight the border green to red in accordance to the amount of steering torque being used<br><b>Turn Signal</b>: Flash the border yellow when a turn signal is active - ๅœจ้ฉพ้ฉถๅฑๅน•่พนๆก†ๅ‘จๅ›ดๆ˜พ็คบ็š„ๆŒ‡ๆ ‡ใ€‚<br><br><b>็›ฒ็‚น</b>๏ผšๅฝ“ๅœจ็›ฒ็‚นๆฃ€ๆต‹ๅˆฐ่ฝฆ่พ†ๆ—ถ๏ผŒๅฐ†่พนๆก†ๅ˜ไธบ็บข่‰ฒ<br><b>่ฝฌๅ‘ๆ‰ญ็Ÿฉ</b>๏ผšๆ นๆฎไฝฟ็”จ็š„่ฝฌๅ‘ๆ‰ญ็Ÿฉ้‡๏ผŒๅฐ†่พนๆก†ไปŽ็ปฟ่‰ฒๅˆฐ็บข่‰ฒ้ซ˜ไบฎๆ˜พ็คบ<br><b>่ฝฌๅ‘ไฟกๅท</b>๏ผšๅฝ“่ฝฌๅ‘ไฟกๅทๆฟ€ๆดปๆ—ถ๏ผŒ่พนๆก†้—ช็ƒ้ป„่‰ฒ + <b>Show statuses along the border of the driving screen.</b><br><br><b>Blind Spot</b>: The border turns red when a vehicle is in a blind spot<br><b>Steering Torque</b>: The border goes from green to red according to how much steering torque is being used<br><b>Turn Signal</b>: The border flashes yellow when a turn signal is on + <b>ๅœจ้ฉพ้ฉถๅฑๅน•่พน็ผ˜ๆ˜พ็คบ็Šถๆ€ใ€‚</b><br><br><b>็›ฒๅŒบ</b>๏ผšๅฝ“ๆœ‰่ฝฆ่พ†ๅค„ไบŽ็›ฒๅŒบๆ—ถ๏ผŒ่พนๆก†ๅ˜ไธบ็บข่‰ฒ<br><b>่ฝฌๅ‘ๆ‰ญ็Ÿฉ</b>๏ผš่พนๆก†ไผšๆ นๆฎไฝฟ็”จ็š„่ฝฌๅ‘ๆ‰ญ็ŸฉไปŽ็ปฟ่‰ฒ้€ๆธๅ˜ไธบ็บข่‰ฒ<br><b>่ฝฌๅ‘็ฏ</b>๏ผšๅฝ“่ฝฌๅ‘็ฏๅผ€ๅฏๆ—ถ๏ผŒ่พนๆก†้—ช็ƒ้ป„่‰ฒ Lead Info - ๆฝœๅœจๅฎขๆˆทไฟกๆฏ + ๅ‰่ฝฆไฟกๆฏ - Metrics displayed under vehicle markers listing their distance and current speed. - ๅœจ่ฝฆ่พ†ๆ ‡่ฎฐไธ‹ๆ˜พ็คบ็š„ๆŒ‡ๆ ‡ๅˆ—ๅ‡บไบ†ๅฎƒไปฌ็š„่ท็ฆปๅ’Œๅฝ“ๅ‰้€Ÿๅบฆใ€‚ + <b>Show each tracked vehicle's distance and speed</b> below its marker. + <b>ๅœจๅ…ถๆ ‡่ฎฐไธ‹ๆ–นๆ˜พ็คบๆฏไธช่ขซ่ทŸ่ธช่ฝฆ่พ†็š„่ท็ฆปๅ’Œ้€Ÿๅบฆ</b>ใ€‚ FPS Display - FPSๆ˜พ็คบ + FPS ๆ˜พ็คบ - Display the <b>Frames Per Second (FPS)</b> at the bottom of the driving screen. - ๅœจ้ฉพ้ฉถๅฑๅน•ๅบ•้ƒจๆ˜พ็คบ<b>ๆฏ็ง’ๅธงๆ•ฐ (FPS)</b>ใ€‚ + <b>Show the frames per second (FPS)</b> at the bottom of the driving screen. + ๅœจ้ฉพ้ฉถๅฑๅน•ๅบ•้ƒจ<b>ๆ˜พ็คบๆฏ็ง’ๅธงๆ•ฐ๏ผˆFPS๏ผ‰</b>ใ€‚ Numerical Temperature Gauge - ๆ•ฐๅญ—ๆธฉๅบฆ่ฎก + ๆ•ฐๅญ—ๆธฉๅบฆ่กจ - Use numerical temperature readings instead of status labels in the sidebar. - ๅœจไพง่พนๆ ไธญไฝฟ็”จๆ•ฐๅญ—ๆธฉๅบฆ่ฏปๆ•ฐ่€Œไธๆ˜ฏ็Šถๆ€ๆ ‡็ญพใ€‚ - - - Display system information (<b>CPU</b>, <b>GPU</b>, <b>RAM usage</b>, <b>IP address</b>, <b>device storage</b>) in the sidebar. - ๅœจไพง่พนๆ ๆ˜พ็คบ็ณป็ปŸไฟกๆฏ๏ผˆ<b>CPU</b>ใ€<b>GPU</b>ใ€<b>RAM ไฝฟ็”จๆƒ…ๅ†ต</b>ใ€<b>IP ๅœฐๅ€</b>ใ€<b>่ฎพๅค‡ๅญ˜ๅ‚จ</b>๏ผ‰ใ€‚ - - - Use International System of Units - ไฝฟ็”จๅ›ฝ้™…ๅ•ไฝๅˆถ - - - Display measurements using the <b>International System of Units (SI)</b> standard. - ไฝฟ็”จ<b>ๅ›ฝ้™…ๅ•ไฝๅˆถ (SI)</b>ๆ ‡ๅ‡†ๆ˜พ็คบๆต‹้‡ๅ€ผใ€‚ - - - Developer Sidebar - ๅผ€ๅ‘่€…ไพง่พนๆ  - - - Display debugging info and metrics in a dedicated sidebar on the right side of the screen. - ๅœจๅฑๅน•ๅณไพง็š„ไธ“็”จไพง่พนๆ ไธญๆ˜พ็คบ่ฐƒ่ฏ•ไฟกๆฏๅ’ŒๆŒ‡ๆ ‡ใ€‚ - - - Metric #1 - ๆŒ‡ๆ ‡ #1 - - - Metric to display in the first metric in the "Developer Sidebar". - ๅœจโ€œๅผ€ๅ‘่€…ไพง่พนๆ โ€ไธญ็š„็ฌฌไธ€ไธชๆŒ‡ๆ ‡ไธญๆ˜พ็คบ็š„ๆŒ‡ๆ ‡ใ€‚ - - - Metric #2 - ๆŒ‡ๆ ‡ #2 - - - Metric to display in the second metric in the "Developer Sidebar". - ๅœจโ€œๅผ€ๅ‘่€…ไพง่พนๆ โ€ไธญๆ˜พ็คบ็š„็ฌฌไบŒไธชๆŒ‡ๆ ‡ใ€‚ - - - Metric #3 - ๆŒ‡ๆ ‡ #3 - - - Metric to display in the third metric in the "Developer Sidebar". - ๅœจโ€œๅผ€ๅ‘่€…ไพง่พนๆ โ€ไธญๆ˜พ็คบ็š„็ฌฌไธ‰ไธชๆŒ‡ๆ ‡ใ€‚ - - - Metric #4 - ๆŒ‡ๆ ‡ #4 - - - Metric to display in the fourth metric in the "Developer Sidebar". - ๅœจโ€œๅผ€ๅ‘่€…ไพง่พนๆ โ€ไธญๆ˜พ็คบ็š„็ฌฌๅ››ไธชๆŒ‡ๆ ‡ใ€‚ - - - Metric #5 - ๆŒ‡ๆ ‡ #5 - - - Metric to display in the fifth metric in the "Developer Sidebar". - ๅœจโ€œๅผ€ๅ‘่€…ไพง่พนๆ โ€ไธญๆ˜พ็คบ็š„็ฌฌไบ”ไธชๆŒ‡ๆ ‡ใ€‚ - - - Metric #6 - ๆŒ‡ๆ ‡#6 - - - Metric to display in the sixth metric in the "Developer Sidebar". - ๅœจโ€œๅผ€ๅ‘่€…ไพง่พนๆ โ€ไธญๆ˜พ็คบ็š„็ฌฌๅ…ญไธชๆŒ‡ๆ ‡ใ€‚ - - - Metric #7 - ๆŒ‡ๆ ‡#7 - - - Metric to display in the seventh metric in the "Developer Sidebar". - ๅœจโ€œๅผ€ๅ‘่€…ไพง่พนๆ โ€ไธญๆ˜พ็คบ็š„็ฌฌไธƒไธชๆŒ‡ๆ ‡ใ€‚ - - - Developer Widgets - ๅผ€ๅ‘่€…ๅฐ้ƒจไปถ - - - Overlays displaying debugging visuals, internal states, and model predictions on the driving screen. - ๅœจ้ฉพ้ฉถๅฑๅน•ไธŠๆ˜พ็คบ่ฐƒ่ฏ•่ง†่ง‰ๆ•ˆๆžœใ€ๅ†…้ƒจ็Šถๆ€ๅ’Œๆจกๅž‹้ข„ๆต‹็š„่ฆ†็›–ๅฑ‚ใ€‚ - - - Adjacent Leads Tracking - ็›ธ้‚ป็บฟ็ดข่ทŸ่ธช - - - Adjacent leads detected by the car's radar to the left and right of the current driving path. - ๆฑฝ่ฝฆ้›ท่พพๆฃ€ๆต‹ๅˆฐๅฝ“ๅ‰่กŒ้ฉถ่ทฏๅพ„ๅทฆๅณไธคไพง็š„็›ธ้‚ป่ฝฆ่พ†ใ€‚ - - - Model Stopping Point - ๆจกๅž‹ๅœๆญข็‚น - - - Display an image on the screen where openpilot is wanting to stop. - ๅœจopenpilotๆƒณ่ฆๅœๆญข็š„ๅœฐๆ–นๆ˜พ็คบๅ›พๅƒใ€‚ - - - Radar Tracks - ้›ท่พพ่ฝจ่ฟน - - - Display all of the radar points produced by the car's radar. - ๆ˜พ็คบๆฑฝ่ฝฆ้›ท่พพไบง็”Ÿ็š„ๆ‰€ๆœ‰้›ท่พพ็‚นใ€‚ - - - Driving Screen Widgets - ้ฉพ้ฉถๅฑๅน•ๅฐ้ƒจไปถ - - - Custom FrogPilot widgets for the driving screen. - ้ฉพ้ฉถๅฑๅน•็š„่‡ชๅฎšไน‰FrogPilotๅฐ้ƒจไปถใ€‚ - - - Acceleration Path - ๅŠ ้€Ÿ่ทฏๅพ„ - - - Colorize the driving path based on openpilot's current desired acceleration and deceleration rate. - ๆ นๆฎopenpilotๅฝ“ๅ‰็š„ๆœŸๆœ›ๅŠ ้€Ÿๅ’Œๅ‡้€Ÿ็އไธบ้ฉพ้ฉถ่ทฏๅพ„็€่‰ฒใ€‚ - - - Adjacent Lanes - ็›ธ้‚ป่ฝฆ้“ - - - Driving paths for the left and right adjacent lanes. - ๅทฆไพงๅ’Œๅณไพง็›ธ้‚ป่ฝฆ้“็š„่กŒ้ฉถ่ทฏๅพ„ใ€‚ - - - Blind Spot Path - ็›ฒ็‚น่ทฏๅพ„ - - - Display a red driving path for detected vehicles in the corresponding lane's blind spot. - ๅœจ็›ธๅบ”่ฝฆ้“็š„็›ฒๅŒบไธบๆฃ€ๆต‹ๅˆฐ็š„่ฝฆ่พ†ๆ˜พ็คบ็บข่‰ฒ่กŒ้ฉถ่ทฏๅพ„ใ€‚ - - - Compass - ๆŒ‡ๅ—้’ˆ - - - A compass to show the current driving direction. - ไธ€ไธชๆ˜พ็คบๅฝ“ๅ‰่กŒ้ฉถๆ–นๅ‘็š„ๆŒ‡ๅ—้’ˆใ€‚ - - - Driving Personality Button - ้ฉพ้ฉถไธชๆ€งๆŒ‰้’ฎ - - - Display the current driving personality on the screen. Tap to switch personalities, or long press for 0.5 seconds to change the current state of <b>Experimental Mode</b>, or 2.5 seconds for <b>Traffic Mode</b>. - ๅœจๅฑๅน•ไธŠๆ˜พ็คบๅฝ“ๅ‰็š„้ฉพ้ฉถไธชๆ€งใ€‚็‚นๅ‡ปๅˆ‡ๆขไธชๆ€ง๏ผŒๆˆ–้•ฟๆŒ‰0.5็ง’ไปฅๆ›ดๆ”น<b>ๅฎž้ชŒๆจกๅผ</b>็š„ๅฝ“ๅ‰็Šถๆ€๏ผŒๆˆ–้•ฟๆŒ‰2.5็ง’ไปฅๆ›ดๆ”น<b>ไบค้€šๆจกๅผ</b>ใ€‚ - - - Gas / Brake Pedal Indicators - ๆฒน้—จ/ๅˆน่ฝฆ่ธๆฟๆŒ‡็คบๅ™จ - - - Pedals to indicate when either of the pedals are currently being used.<br><br><b>Dynamic</b>: The pedals change in opacity in accordance to how much openpilot is accelerating or decelerating<br><b>Static</b>: The pedals are displayed with full opacity when active, and dimmed when not in use - ่ธๆฟๆŒ‡็คบๅฝ“ๅ‰ๆ˜ฏๅฆๆญฃๅœจไฝฟ็”จไปปไธ€่ธๆฟใ€‚<br><br><b>ๅŠจๆ€</b>๏ผš่ธๆฟ็š„ไธ้€ๆ˜Žๅบฆๆ นๆฎopenpilot็š„ๅŠ ้€Ÿๆˆ–ๅ‡้€Ÿ็จ‹ๅบฆ่€Œๅ˜ๅŒ–<br><b>้™ๆ€</b>๏ผš่ธๆฟๅœจๆฟ€ๆดปๆ—ถไปฅๅ…จไธ้€ๆ˜Žๅบฆๆ˜พ็คบ๏ผŒๆœชไฝฟ็”จๆ—ถๅˆ™ๅ˜ๆš—ๆ˜พ็คบ - - - Rotating Steering Wheel - ๆ—‹่ฝฌๆ–นๅ‘็›˜ - - - Rotate the steering wheel alongside the vehicle's physical steering wheel. - ไธŽ่ฝฆ่พ†็š„็‰ฉ็†ๆ–นๅ‘็›˜ไธ€่ตทๆ—‹่ฝฌๆ–นๅ‘็›˜ใ€‚ - - - Model UI - ๆจกๅž‹็”จๆˆท็•Œ้ข - - - Model visualizations on the driving screen for the driving path, lane lines, path edges, and road edges. - ๅœจ้ฉพ้ฉถๅฑๅน•ไธŠๆ˜พ็คบ้ฉพ้ฉถ่ทฏๅพ„ใ€่ฝฆ้“็บฟใ€่ทฏๅพ„่พน็ผ˜ๅ’Œ้“่ทฏ่พน็ผ˜็š„ๆจกๅž‹ๅฏ่ง†ๅŒ–ใ€‚ - - - Dynamic Path Width - ๅŠจๆ€่ทฏๅพ„ๅฎฝๅบฆ - - - Adjust the width of the driving path based on the current engagement state.<br><br><b>Fully engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Fully disengaged</b>: 50% - ๆ นๆฎๅฝ“ๅ‰็š„ๅ‚ไธŽ็Šถๆ€่ฐƒๆ•ด้ฉพ้ฉถ่ทฏๅพ„็š„ๅฎฝๅบฆใ€‚<br><br><b>ๅฎŒๅ…จๅ‚ไธŽ</b>: 100%<br><b>ๅง‹็ปˆๅผ€ๅฏๆจชๅ‘</b>: 75%<br><b>ๅฎŒๅ…จ่„ฑ็ฆป</b>: 50% - - - Lane Lines Width - ่ฝฆ้“็บฟๅฎฝๅบฆ - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 4 inches. - ่ฝฆ้“็บฟๅœจ้ฉพ้ฉถๅฑๅน•ไธŠ็š„ๅŽšๅบฆใ€‚<br><br><b>้ป˜่ฎคๅŒน้…<b>MUTCD</b>่ฝฆ้“็บฟๅฎฝๅบฆๆ ‡ๅ‡†ไธบ4่‹ฑๅฏธใ€‚ - - - Path Edges Width - ่ทฏๅพ„่พน็ผ˜ๅฎฝๅบฆ - - - The width of the edges of the driving path that represent different driving modes and statuses.<br><br>Default is <b>20%</b> of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden - ้ฉพ้ฉถ่ทฏๅพ„่พน็ผ˜็š„ๅฎฝๅบฆไปฃ่กจไธๅŒ็š„้ฉพ้ฉถๆจกๅผๅ’Œ็Šถๆ€ใ€‚<br><br>้ป˜่ฎคๆ˜ฏๆ€ป่ทฏๅพ„ๅฎฝๅบฆ็š„<b>20%</b>ใ€‚<br><br>้ขœ่‰ฒๆŒ‡ๅ—๏ผš<br><br>- <b>่“่‰ฒ</b>๏ผšๅฏผ่ˆช<br>- <b>ๆต…่“่‰ฒ</b>๏ผšๅง‹็ปˆๅผ€ๅฏๆจชๅ‘<br>- <b>็ปฟ่‰ฒ</b>๏ผš้ป˜่ฎค<br>- <b>ๆฉ™่‰ฒ</b>๏ผšๅฎž้ชŒๆจกๅผ<br>- <b>็บข่‰ฒ</b>๏ผšไบค้€šๆจกๅผ<br>- <b>้ป„่‰ฒ</b>๏ผšๆกไปถๅฎž้ชŒๆจกๅผ่ขซ่ฆ†็›– - - - Path Width - ่ทฏๅพ„ๅฎฝๅบฆ - - - Road Edges Width - ้“่ทฏ่พน็ผ˜ๅฎฝๅบฆ - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 4 inches. - ้ฉพ้ฉถๅฑๅน•ไธŠ้“่ทฏ่พน็ผ˜็š„ๅŽšๅบฆใ€‚<br><br><b>้ป˜่ฎคๅŒน้…<b>MUTCD</b>่ฝฆ้“็บฟๅฎฝๅบฆๆ ‡ๅ‡†็š„ไธ€ๅŠ๏ผŒๅณ4่‹ฑๅฏธใ€‚ - - - "Unlimited" Road UI - โ€œๆ— ้™โ€้“่ทฏ็”จๆˆท็•Œ้ข - - - Extend the display of the driving path, lane lines, and road edges as far as the model can see. - ๅฐ†้ฉพ้ฉถ่ทฏๅพ„ใ€่ฝฆ้“็บฟๅ’Œ้“่ทฏ่พน็ผ˜็š„ๆ˜พ็คบ่Œƒๅ›ดๆ‰ฉๅฑ•ๅˆฐๆจกๅž‹ๅฏ่ง็š„ๆœ€่ฟœๅค„ใ€‚ - - - Navigation Widgets - ๅฏผ่ˆชๅฐ้ƒจไปถ - - - Map style tweaks, speed limits, and other navigation related widgets. - ๅœฐๅ›พๆ ทๅผ่ฐƒๆ•ดใ€้€Ÿๅบฆ้™ๅˆถๅ’Œๅ…ถไป–ๅฏผ่ˆช็›ธๅ…ณๅฐ้ƒจไปถใ€‚ - - - Larger Map Display - ๆ›ดๅคง็š„ๅœฐๅ›พๆ˜พ็คบ - - - Increase the size of the map for easier navigation readings. - ๅขžๅคงๅœฐๅ›พๅฐบๅฏธไปฅไพฟไบŽๅฏผ่ˆช้˜…่ฏปใ€‚ - - - Map Style - ๅœฐๅ›พๆ ทๅผ - - - The map style used for <b>Navigate on openpilot (NOO)</b>:<br><br><b>Stock</b>: Default comma.ai style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>mike854's (Satellite hybrid)</b>: Customized hybrid satellite view - ็”จไบŽ<b>Navigate on openpilot (NOO)</b>็š„ๅœฐๅ›พๆ ทๅผ๏ผš<br><br><b>Stock</b>๏ผš้ป˜่ฎคcomma.ai้ฃŽๆ ผ<br><b>Mapbox Streets</b>๏ผšๆ ‡ๅ‡†่ก—้“่ง†ๅ›พ<br><b>Mapbox Outdoors</b>๏ผšๅผบ่ฐƒๆˆทๅค–ๅ’Œๅœฐๅฝข็‰นๅพ<br><b>Mapbox Light</b>๏ผšๆž็ฎ€ๆ˜Žไบฎไธป้ข˜<br><b>Mapbox Dark</b>๏ผšๆž็ฎ€้ป‘ๆš—ไธป้ข˜<br><b>Mapbox Navigation Day</b>๏ผšไผ˜ๅŒ–็”จไบŽ็™ฝๅคฉๅฏผ่ˆช<br><b>Mapbox Navigation Night</b>๏ผšไผ˜ๅŒ–็”จไบŽๅคœ้—ดๅฏผ่ˆช<br><b>Mapbox Satellite</b>๏ผšไป…ๅซๆ˜Ÿๅ›พๅƒ<br><b>Mapbox Satellite Streets</b>๏ผšๅธฆ่ก—้“ๆ ‡็ญพ็š„ๆททๅˆๅซๆ˜Ÿๅ›พๅƒ<br><b>Mapbox Traffic Night</b>๏ผšๅผบ่ฐƒไบค้€š็Šถๅ†ต็š„้ป‘ๆš—ไธป้ข˜<br><b>mike854's (Satellite hybrid)</b>๏ผš่‡ชๅฎšไน‰ๆททๅˆๅซๆ˜Ÿ่ง†ๅ›พ - - - Road Name - ้“่ทฏๅ็งฐ - - - Display the road name at the bottom of the driving screen using data from <b>OpenStreetMap</b>. - ๅœจ้ฉพ้ฉถๅฑๅน•ๅบ•้ƒจๆ˜พ็คบๆฅ่‡ช<b>OpenStreetMap</b>็š„ๆ•ฐๆฎ็š„้“่ทฏๅ็งฐใ€‚ - - - Show Speed Limits - ๆ˜พ็คบ้€Ÿๅบฆ้™ๅˆถ - - - Display speed limits in the top left corner of the driving screen. Uses data from your car's dashboard (if supported) and data from <b>OpenStreetMaps</b>. - ๅœจ้ฉพ้ฉถๅฑๅน•็š„ๅทฆไธŠ่ง’ๆ˜พ็คบ้€Ÿๅบฆ้™ๅˆถใ€‚ไฝฟ็”จๆฅ่‡ชๆ‚จๆฑฝ่ฝฆไปช่กจๆฟ็š„ๆ•ฐๆฎ๏ผˆๅฆ‚ๆžœๆ”ฏๆŒ๏ผ‰ๅ’Œๆฅ่‡ช<b>OpenStreetMaps</b>็š„ๆ•ฐๆฎใ€‚ - - - Show Speed Limits from Mapbox - ไปŽMapboxๆ˜พ็คบ้€Ÿๅบฆ้™ๅˆถ - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - ๅœจๆฒกๆœ‰ๅ…ถไป–ๆฅๆบๅฏ็”จๆ—ถ๏ผŒไฝฟ็”จ<b>Mapbox</b>้€Ÿๅบฆ้™ๅˆถๆ•ฐๆฎใ€‚ - - - Use Vienna-Style Speed Signs - ไฝฟ็”จ็ปดไนŸ็บณ้ฃŽๆ ผ็š„้€Ÿๅบฆๆ ‡ๅฟ— - - - Force <b>Vienna-style (EU)</b> speed limit signs instead of <b>MUTCD (US)</b>. - ๅผบๅˆถไฝฟ็”จ<b>็ปดไนŸ็บณ้ฃŽๆ ผ๏ผˆๆฌง็›Ÿ๏ผ‰</b>้™้€Ÿๆ ‡ๅฟ—่€Œไธๆ˜ฏ<b>MUTCD๏ผˆ็พŽๅ›ฝ๏ผ‰</b>ใ€‚ - - - Quality of Life - ็”Ÿๆดป่ดจ้‡ - - - Visual features to improve your overall openpilot experience. - ่ง†่ง‰ๅŠŸ่ƒฝๅฏๆๅ‡ๆ‚จ็š„ๆ•ดไฝ“openpilotไฝ“้ชŒใ€‚ - - - Camera View - ็›ธๆœบ่ง†ๅ›พ - - - The active camera view display. This is purely a visual change and doesn't impact how openpilot drives! - ๆดปๅŠจๆ‘„ๅƒๅคด่ง†ๅ›พๆ˜พ็คบใ€‚่ฟ™็บฏ็ฒนๆ˜ฏ่ง†่ง‰ไธŠ็š„ๅ˜ๅŒ–๏ผŒไธไผšๅฝฑๅ“openpilot็š„้ฉพ้ฉถๆ–นๅผ๏ผ - - - Show Driver Camera When In Reverse - ๅ€’่ฝฆๆ—ถๆ˜พ็คบ้ฉพ้ฉถๅ‘˜ๆ‘„ๅƒๅคด - - - Display the driver camera feed when the vehicle is in reverse. - ๅฝ“่ฝฆ่พ†ๅ€’่ฝฆๆ—ถๆ˜พ็คบ้ฉพ้ฉถๅ‘˜ๆ‘„ๅƒๅคด็”ป้ขใ€‚ - - - Standby Mode - ๅพ…ๆœบๆจกๅผ - - - Turn the screen off when driving and automatically wake it up if engagement state changes or important alerts occur. - ๅœจ้ฉพ้ฉถๆ—ถๅ…ณ้—ญๅฑๅน•๏ผŒๅนถๅœจไบคไบ’็Šถๆ€ๆ”นๅ˜ๆˆ–ๅ‡บ็Žฐ้‡่ฆ่ญฆๆŠฅๆ—ถ่‡ชๅŠจๅ”ค้†’ใ€‚ - - - Stopped Timer - ๅœๆญข่ฎกๆ—ถๅ™จ - - - Replace the current speed with a timer when stopped to indicate how long the vehicle has been stopped for. - ๅฝ“่ฝฆ่พ†ๅœๆญขๆ—ถ๏ผŒ็”จ่ฎกๆ—ถๅ™จๆ›ฟๆขๅฝ“ๅ‰้€Ÿๅบฆ๏ผŒไปฅๆŒ‡็คบ่ฝฆ่พ†ๅทฒๅœๆญข็š„ๆ—ถ้—ดใ€‚ - - - Blind Spot - ็›ฒ็‚น - - - Steering Torque - ่ฝฌๅ‘ๆ‰ญ็Ÿฉ - - - Turn Signal - ่ฝฌๅ‘็ฏ - - - Fahrenheit - ๅŽๆฐๅบฆ - - - CPU - CPU - - - GPU - GPU - - - IP - IP - - - RAM - RAM - - - SSD Left - SSDๅ‰ฉไฝ™ - - - SSD Used - SSD ๅทฒ็”จ - - - None - ๆ—  - - - Acceleration: Current - ๅŠ ้€Ÿๅบฆ๏ผšๅฝ“ๅ‰ - - - Acceleration: Max - ๅŠ ้€Ÿๅบฆ๏ผšๆœ€ๅคง - - - Auto Tune: Actuator Delay - ่‡ชๅŠจ่ฐƒ่ฐ๏ผšๆ‰ง่กŒๅ™จๅปถ่ฟŸ - - - Auto Tune: Friction - ่‡ชๅŠจ่ฐƒ่ฐ๏ผšๆ‘ฉๆ“ฆ - - - Auto Tune: Lateral Acceleration - ่‡ชๅŠจ่ฐƒ่ฐ๏ผšๆจชๅ‘ๅŠ ้€Ÿๅบฆ - - - Auto Tune: Steer Ratio - ่‡ชๅŠจ่ฐƒ่ฐ๏ผš่ฝฌๅ‘ๆฏ”็އ - - - Auto Tune: Stiffness Factor - ่‡ชๅŠจ่ฐƒ่ฐ๏ผšๅˆšๅบฆๅ› ๅญ - - - Engagement %: Lateral - ๅ‚ไธŽ็އ๏ผšๆจชๅ‘ - - - Engagement %: Longitudinal - ๅ‚ไธŽๅบฆ %๏ผš็บตๅ‘ - - - Lateral Control: Steering Angle - ๆจชๅ‘ๆŽงๅˆถ๏ผš่ฝฌๅ‘่ง’ๅบฆ - - - Lateral Control: Torque % Used - ๆจชๅ‘ๆŽงๅˆถ๏ผšๆ‰ญ็Ÿฉ%ๅทฒ็”จ - - - Longitudinal Control: Actuator Acceleration Output - ็บตๅ‘ๆŽงๅˆถ๏ผšๆ‰ง่กŒๅ™จๅŠ ้€Ÿๅบฆ่พ“ๅ‡บ - - - Longitudinal MPC Jerk: Acceleration - ็บตๅ‘MPCๆŠ–ๅŠจ๏ผšๅŠ ้€Ÿๅบฆ - - - Longitudinal MPC Jerk: Danger Zone - ็บตๅ‘MPCๆŠ–ๅŠจ๏ผšๅฑ้™ฉๅŒบๅŸŸ - - - Longitudinal MPC Jerk: Speed Control - ็บตๅ‘MPCๆŠ–ๅŠจ๏ผš้€ŸๅบฆๆŽงๅˆถ - - - SELECT - SELECT - - - Select a metric to display - ้€‰ๆ‹ฉไธ€ไธชๆŒ‡ๆ ‡่ฟ›่กŒๆ˜พ็คบ - - - Show Distance - ๆ˜พ็คบ่ท็ฆป - - - Dynamic - ๅŠจๆ€ - - - Static - ้™ๆ€ - - - inches - ่‹ฑๅฏธ - - - Off - ๅ…ณ - - - feet - ่„š - - - Full Map - ๅฎŒๆ•ดๅœฐๅ›พ - - - Stock openpilot - ่‚ก็ฅจopenpilot - - - FrogsGoMoo's Personalized Style - FrogsGoMoo็š„ไธชๆ€งๅŒ–้ฃŽๆ ผ - - - Mapbox Streets - Mapbox Streets - - - Mapbox Outdoors - Mapbox Outdoors - - - Mapbox Light - Mapbox Light - - - Mapbox Dark - Mapbox Dark - - - Mapbox Navigation Day - Mapboxๅฏผ่ˆชๆ—ฅ - - - Mapbox Navigation Night - Mapboxๅฏผ่ˆชๅคœ้—ดๆจกๅผ - - - Mapbox Satellite - Mapbox Satellite - - - Mapbox Satellite Streets - Mapbox ๅซๆ˜Ÿ่ก—้“ - - - Mapbox Traffic Night - Mapbox Traffic Night - - - Mike's Personalized Style - ่ฟˆๅ…‹็š„ไธชๆ€งๅŒ–้ฃŽๆ ผ - - - Select a map style - ้€‰ๆ‹ฉๅœฐๅ›พๆ ทๅผ - - - Auto - ่‡ชๅŠจ - - - Driver - ้ฉฑๅŠจ็จ‹ๅบ - - - Standard - ๆ ‡ๅ‡† - - - Wide - ๅฎฝ - - - foot - ่„š - - - inch - ่‹ฑๅฏธ - - - meter - ็ฑณ - - - meters - ็ฑณ - - - centimeter - ๅŽ˜็ฑณ - - - centimeters - ๅŽ˜็ฑณ - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 10 centimeters. - ่ฝฆ้“็บฟๅœจ้ฉพ้ฉถๅฑๅน•ไธŠ็š„ๅŽšๅบฆใ€‚<br><br><b>้ป˜่ฎคๅŒน้…<b>MUTCD</b>่ฝฆ้“็บฟๅฎฝๅบฆๆ ‡ๅ‡†ไธบ10ๅŽ˜็ฑณใ€‚ - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 10 centimeters. - ้ฉพ้ฉถๅฑๅน•ไธŠ้“่ทฏ่พน็ผ˜็š„ๅŽšๅบฆใ€‚<br><br><b>้ป˜่ฎคๅŒน้…<b>MUTCD</b>่ฝฆ้“็บฟๅฎฝๅบฆๆ ‡ๅ‡†็š„ไธ€ๅŠ๏ผŒๅณ10ๅŽ˜็ฑณใ€‚ + <b>Show a numerical temperature in the sidebar</b> instead of the status labels. + <b>ๅœจไพง่พนๆ ๆ˜พ็คบๆ•ฐๅ€ผๆธฉๅบฆ</b>๏ผŒ่€Œไธๆ˜ฏ็Šถๆ€ๆ ‡็ญพใ€‚ Sidebar Metrics - ไพง่พนๆ ๆŒ‡ๆ ‡ + ไพง่พนๆ ๆŒ‡ๆ ‡ - The width of the driving path on the driving screen.<br><br>Default <b>(6.1 feet)</b> matches the width of a <b>2019 Lexus ES 350</b>. - ้ฉพ้ฉถๅฑๅน•ไธŠ้ฉพ้ฉถ่ทฏๅพ„็š„ๅฎฝๅบฆใ€‚<br><br>้ป˜่ฎค<b>(6.1 ่‹ฑๅฐบ)</b>ไธŽ<b>2019ๆฌพ้›ทๅ…‹่จๆ–ฏES 350</b>็š„ๅฎฝๅบฆ็›ธๅŒน้…ใ€‚ + <b>Display system information</b> (CPU, GPU, RAM usage, IP address, device storage) in the sidebar. + <b>ๅœจไพงๆ ๆ˜พ็คบ็ณป็ปŸไฟกๆฏ</b>๏ผˆCPUใ€GPUใ€RAM ไฝฟ็”จ็އใ€IP ๅœฐๅ€ใ€่ฎพๅค‡ๅญ˜ๅ‚จ๏ผ‰ใ€‚ - The width of the driving path on the driving screen.<br><br>Default <b>(1.9 meters)</b> matches the width of a <b>2019 Lexus ES 350</b>. - ้ฉพ้ฉถๅฑๅน•ไธŠ้ฉพ้ฉถ่ทฏๅพ„็š„ๅฎฝๅบฆใ€‚<br><br>้ป˜่ฎค<b>(1.9็ฑณ)</b>ไธŽ<b>2019ๆฌพ้›ทๅ…‹่จๆ–ฏES 350</b>็š„ๅฎฝๅบฆ็›ธๅŒน้…ใ€‚ + Use International System of Units + ไฝฟ็”จๅ›ฝ้™…ๅ•ไฝๅˆถ + + + <b>Display measurements using the "International System of Units" (SI)</b> standard. + <b>ไฝฟ็”จโ€œๅ›ฝ้™…ๅ•ไฝๅˆถโ€๏ผˆSI๏ผ‰ๆ ‡ๅ‡†ๆ˜พ็คบๅบฆ้‡</b> + + + Developer Sidebar + ๅผ€ๅ‘่€…ไพง่พนๆ  + + + <b>Display debugging info and metrics</b> in a dedicated sidebar on the right side of the screen. + ๅœจๅฑๅน•ๅณไพง็š„ไธ“็”จไพงๆ <b>ๆ˜พ็คบ่ฐƒ่ฏ•ไฟกๆฏๅ’ŒๆŒ‡ๆ ‡</b>ใ€‚ + + + Metric #1 + ๆŒ‡ๆ ‡ #1 + + + <b>Select the metric shown in the first "Developer Sidebar" widget.</b> + <b>้€‰ๆ‹ฉ็ฌฌไธ€ไธชโ€œๅผ€ๅ‘่€…ไพง่พนๆ โ€ๅฐ้ƒจไปถไธญๆ˜พ็คบ็š„ๅบฆ้‡ใ€‚</b> + + + Metric #2 + ๅบฆ้‡ #2 + + + <b>Select the metric shown in the second "Developer Sidebar" widget.</b> + <b>้€‰ๆ‹ฉ็ฌฌไบŒไธชโ€œๅผ€ๅ‘่€…ไพง่พนๆ โ€ๅฐ้ƒจไปถไธญๆ˜พ็คบ็š„ๅบฆ้‡ใ€‚</b> + + + Metric #3 + ๆŒ‡ๆ ‡ #3 + + + <b>Select the metric shown in the third "Developer Sidebar" widget.</b> + <b>้€‰ๆ‹ฉ็ฌฌไธ‰ไธชโ€œๅผ€ๅ‘่€…ไพง่พนๆ โ€ๅฐ้ƒจไปถไธญๆ˜พ็คบ็š„ๅบฆ้‡ใ€‚</b> + + + Metric #4 + ๆŒ‡ๆ ‡ #4 + + + <b>Select the metric shown in the fourth "Developer Sidebar" widget.</b> + <b>้€‰ๆ‹ฉ็ฌฌๅ››ไธชโ€œๅผ€ๅ‘่€…ไพง่พนๆ โ€ๅฐ้ƒจไปถไธญๆ˜พ็คบ็š„ๅบฆ้‡ใ€‚</b> + + + Metric #5 + ๆŒ‡ๆ ‡ #5 + + + <b>Select the metric shown in the fifth "Developer Sidebar" widget.</b> + <b>้€‰ๆ‹ฉๅœจ็ฌฌไบ”ไธชโ€œๅผ€ๅ‘่€…ไพง่พนๆ โ€ๅฐ้ƒจไปถไธญๆ˜พ็คบ็š„ๅบฆ้‡ใ€‚</b> + + + Metric #6 + ๅบฆ้‡ #6 + + + <b>Select the metric shown in the sixth "Developer Sidebar" widget.</b> + <b>้€‰ๆ‹ฉ็ฌฌๅ…ญไธชโ€œๅผ€ๅ‘่€…ไพง่พนๆ โ€ๅฐ้ƒจไปถไธญๆ˜พ็คบ็š„ๅบฆ้‡ใ€‚</b> + + + Metric #7 + ๆŒ‡ๆ ‡ #7 + + + <b>Select the metric shown in the seventh "Developer Sidebar" widget.</b> + <b>้€‰ๆ‹ฉ็ฌฌไธƒไธชโ€œๅผ€ๅ‘่€…ไพง่พนๆ โ€ๅฐ้ƒจไปถไธญๆ˜พ็คบ็š„ๅบฆ้‡ใ€‚</b> + + + Developer Widgets + ๅผ€ๅ‘่€…ๅฐ้ƒจไปถ + + + <b>Overlays for debugging visuals, internal states, and model predictions</b> on the driving screen. + ๅœจ้ฉพ้ฉถๅฑๅน•ไธŠ<b>็”จไบŽ่ฐƒ่ฏ•ๅฏ่ง†ๅŒ–ใ€ๅ†…้ƒจ็Šถๆ€ๅ’Œๆจกๅž‹้ข„ๆต‹็š„ๅ ๅŠ ๅฑ‚</b> + + + Adjacent Leads Tracking + ็›ธ้‚ป่ฝฆ่พ†่ทŸ่ธช + + + <b>Display adjacent leads detected by the car's radar</b> to the left and right of the current driving path. + <b>ๅœจๅฝ“ๅ‰่กŒ้ฉถ่ทฏๅพ„็š„ๅทฆๅณๆ˜พ็คบ่ฝฆ่พ†้›ท่พพๆฃ€ๆต‹ๅˆฐ็š„็›ธ้‚ปๅ‰่ฝฆ</b>ใ€‚ + + + Model Stopping Point + ๆจกๅž‹ๅœๆญข็‚น + + + <b>Show a stop-sign marker where the model intends to stop.</b> + <b>ๅœจๆจกๅž‹่ฎกๅˆ’ๅœ่ฝฆ็š„ไฝ็ฝฎๆ˜พ็คบๅœๆญขๆ ‡ๅฟ—ๆ ‡่ฎฐใ€‚</b> + + + Radar Tracks + ้›ท่พพ่ทŸ่ธช + + + <b>Display all radar points</b> produced by the car's radar. + <b>ๆ˜พ็คบ่ฝฆ่พ†้›ท่พพ็”Ÿๆˆ็š„ๆ‰€ๆœ‰้›ท่พพ็‚น</b> + + + Driving Screen Widgets + ้ฉพ้ฉถๅฑๅน•ๅฐ้ƒจไปถ + + + <b>Custom FrogPilot widgets</b> for the driving screen. + ็”จไบŽ้ฉพ้ฉถๅฑๅน•็š„<b>่‡ชๅฎšไน‰ FrogPilot ๅฐ้ƒจไปถ</b> + + + Acceleration Path + ๅŠ ้€Ÿๅบฆ่ทฏๅพ„ + + + <b>Color the driving path by planned acceleration and braking.</b> + <b>ๆ นๆฎ่ง„ๅˆ’็š„ๅŠ ้€ŸไธŽๅˆถๅŠจไธบ่กŒ้ฉถ่ทฏๅพ„็€่‰ฒใ€‚</b> + + + Adjacent Lanes + ็›ธ้‚ป่ฝฆ้“ + + + <b>Show the driving paths for the left and right lanes.</b> + <b>ๆ˜พ็คบๅทฆๅณ่ฝฆ้“็š„่กŒ้ฉถ่ทฏๅพ„ใ€‚</b> + + + Blind Spot Path + ็›ฒ็‚น่ทฏๅพ„ + + + <b>Show a red path when a vehicle is in that lane's blind spot.</b> + <b>ๅฝ“ๆœ‰่ฝฆ่พ†ไฝไบŽ่ฏฅ่ฝฆ้“็›ฒๅŒบๆ—ถๆ˜พ็คบ็บข่‰ฒ่ทฏๅพ„ใ€‚</b> + + + Compass + ๆŒ‡ๅ—้’ˆ + + + <b>Show the current driving direction</b> with a simple on-screen compass. + <b>ไฝฟ็”จ็ฎ€ๅ•็š„ๅฑๅน•็ฝ—็›˜</b>ๆ˜พ็คบๅฝ“ๅ‰่กŒ้ฉถๆ–นๅ‘ใ€‚ + + + Driving Personality Button + ้ฉพ้ฉถไธชๆ€งๆŒ‰้’ฎ + + + <b>Control and view the current driving personality</b> via a driving screen widget. + ้€š่ฟ‡้ฉพ้ฉถๅฑๅน•ๅฐ้ƒจไปถ<b>ๆŽงๅˆถๅนถๆŸฅ็œ‹ๅฝ“ๅ‰้ฉพ้ฉถ้ฃŽๆ ผ</b>ใ€‚ + + + Gas / Brake Pedal Indicators + ๆฒน้—จ/ๅˆน่ฝฆ่ธๆฟๆŒ‡็คบๅ™จ + + + <b>On-screen gas and brake indicators.</b><br><br><b>Dynamic</b>: Opacity changes according to how much openpilot is accelerating or braking<br><b>Static</b>: Full when active, dim when not + <b>ๅฑๅน•ไธŠ็š„ๆฒน้—จๅ’ŒๅˆถๅŠจๆŒ‡็คบๅ™จใ€‚</b><br><br><b>ๅŠจๆ€</b>๏ผš้€ๆ˜Žๅบฆ้š openpilot ๅŠ ้€Ÿๆˆ–ๅˆถๅŠจ็š„็จ‹ๅบฆๅ˜ๅŒ–<br><b>้™ๆ€</b>๏ผšๆฟ€ๆดปๆ—ถไธบๅ…จไบฎ๏ผŒๆœชๆฟ€ๆดปๆ—ถไธบๅ˜ๆš— + + + Rotating Steering Wheel + ่ฝฌๅŠจๆ–นๅ‘็›˜ + + + <b>Rotate the driving screen wheel</b> with the physical steering wheel. + <b>ๆ—‹่ฝฌ้ฉพ้ฉถๅฑๅน•ๆปš่ฝฎ</b>๏ผŒไฝฟ็”จๅฎžไฝ“ๆ–นๅ‘็›˜ใ€‚ + + + Model UI + ๆจกๅž‹็•Œ้ข + + + <b>Model visualizations</b> for the driving path, lane lines, path edges, and road edges. + <b>ๆจกๅž‹ๅฏ่ง†ๅŒ–</b>๏ผŒๅŒ…ๆ‹ฌ่กŒ้ฉถ่ทฏๅพ„ใ€่ฝฆ้“็บฟใ€่ทฏๅพ„่พน็ผ˜ๅ’Œ้“่ทฏ่พน็ผ˜ใ€‚ + + + Dynamic Path Width + ๅŠจๆ€่ฝฆ้“ๅฎฝๅบฆ + + + <b>Change the path width based on engagement.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% + <b>ๆ นๆฎๆŽฅ็ฎก็Šถๆ€ๆ”นๅ˜่ทฏๅพ„ๅฎฝๅบฆใ€‚</b><br><br><b>ๅฎŒๅ…จๆŽฅ็ฎก</b>๏ผš100%<br><b>ๅง‹็ปˆๅผ€ๅฏๆจชๅ‘ๆŽงๅˆถ</b>๏ผš75%<br><b>ๆœชๆŽฅ็ฎก</b>๏ผš50% + + + Lane Lines Width + ่ฝฆ้“็บฟๅฎฝๅบฆ + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 4 inches. + <b>่ฎพ็ฝฎ่ฝฆ้“็บฟๅŽšๅบฆใ€‚</b><br><br>้ป˜่ฎคๅ€ผ็ฌฆๅˆMUTCD่ฝฆ้“็บฟๅฎฝๅบฆๆ ‡ๅ‡†ไธบ4่‹ฑๅฏธใ€‚ + + + Path Edges Width + ่ทฏๅพ„่พน็ผ˜ๅฎฝๅบฆ + + + <b>Set the driving-path edge width</b> that represents different driving modes and statuses.<br><br>Default is 20% of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + <b>่ฎพ็ฝฎ่กŒ้ฉถ่ทฏๅพ„่พน็ผ˜ๅฎฝๅบฆ</b>๏ผŒ็”จไบŽ่กจ็คบไธๅŒ็š„้ฉพ้ฉถๆจกๅผไธŽ็Šถๆ€ใ€‚<br><br>้ป˜่ฎคไธบๆ€ป่ทฏๅพ„ๅฎฝๅบฆ็š„ 20%ใ€‚<br><br>้ขœ่‰ฒๆŒ‡ๅ—๏ผš<br><br>- <b>่“่‰ฒ</b>๏ผšๅฏผ่ˆช<br>- <b>ๆต…่“่‰ฒ</b>๏ผšๅง‹็ปˆๅผ€ๅฏๆจชๅ‘ๆŽงๅˆถ<br>- <b>็ปฟ่‰ฒ</b>๏ผš้ป˜่ฎค<br>- <b>ๆฉ™่‰ฒ</b>๏ผšๅฎž้ชŒๆจกๅผ<br>- <b>็บข่‰ฒ</b>๏ผšไบค้€šๆจกๅผ<br>- <b>้ป„่‰ฒ</b>๏ผšๆกไปถๅฎž้ชŒๆจกๅผ่ขซ่ฆ†็›– + + + Path Width + ่ทฏๅพ„ๅฎฝๅบฆ + + + <b>Set the driving-path width.</b><br><br>Default (6.1 feet) matches the width of a 2019 Lexus ES 350. + <b>่ฎพ็ฝฎ่กŒ้ฉถ่ทฏๅพ„ๅฎฝๅบฆใ€‚</b><br><br>้ป˜่ฎคๅ€ผ๏ผˆ6.1 ่‹ฑๅฐบ๏ผ‰ไธŽ 2019 ๆฌพ้›ทๅ…‹่จๆ–ฏ ES 350 ็š„่ฝฆๅฎฝ็›ธๅŒใ€‚ + + + Road Edges Width + ้“่ทฏ่พน็ผ˜ๅฎฝๅบฆ + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 4 inches. + <b>่ฎพ็ฝฎ้“่ทฏ่พน็ผ˜็บฟๅŽšๅบฆใ€‚</b><br><br>้ป˜่ฎคๅ€ผ็›ธๅฝ“ไบŽ MUTCD ่ฝฆ้“็บฟๆ ‡ๅ‡†ๅฎฝๅบฆ 4 ่‹ฑๅฏธ็š„ไธ€ๅŠใ€‚ + + + "Unlimited" Road UI + โ€œๆ— ้™ๅˆถโ€้“่ทฏ็•Œ้ข + + + <b>Extend the length of the driving path, lane lines, and road edges</b> for as far as the model can see. + <b>ๅฐฝๅฏ่ƒฝๅปถ้•ฟ่กŒ้ฉถ่ทฏๅพ„ใ€่ฝฆ้“็บฟๅ’Œ่ทฏ็ผ˜็š„้•ฟๅบฆ</b>๏ผŒ่พพๅˆฐๆจกๅž‹ๅฏ่ง็š„ๆœ€่ฟœ่ท็ฆปใ€‚ + + + Navigation Widgets + ๅฏผ่ˆชๅฐ้ƒจไปถ + + + <b>Map style, speed limits, and other navigation widgets.</b> + <b>ๅœฐๅ›พๆ ทๅผใ€้™้€ŸๅŠๅ…ถไป–ๅฏผ่ˆช็ป„ไปถใ€‚</b> + + + Larger Map Display + ๆ›ดๅคง็š„ๅœฐๅ›พๆ˜พ็คบ + + + <b>Increase the map size</b> for easier navigation readings. + <b>ๅขžๅคงๅœฐๅ›พๅฐบๅฏธ</b>ไปฅไพฟๆ›ดๅฎนๆ˜“่ฏปๅ–ๅฏผ่ˆชไฟกๆฏใ€‚ + + + Map Style + ๅœฐๅ›พๆ ทๅผ + + + <b>Select the map style</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai style<br><b>FrogPilot</b>: Official FrogPilot map style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>Mike's Personalized Style</b>: Customized hybrid satellite view + <b>ไธบโ€œNavigate on openpilotโ€๏ผˆNOO๏ผ‰้€‰ๆ‹ฉๅœฐๅ›พๆ ทๅผ</b>๏ผš<br><br><b>Stock openpilot</b>๏ผš้ป˜่ฎค comma.ai ๆ ทๅผ<br><b>FrogPilot</b>๏ผšFrogPilot ๅฎ˜ๆ–นๅœฐๅ›พๆ ทๅผ<br><b>Mapbox Streets</b>๏ผšๆ ‡ๅ‡†่ก—้“่ง†ๅ›พ<br><b>Mapbox Outdoors</b>๏ผš็ชๅ‡บๆˆทๅค–ไธŽๅœฐๅฝข็‰นๅพ<br><b>Mapbox Light</b>๏ผšๆž็ฎ€ๆ˜Žไบฎไธป้ข˜<br><b>Mapbox Dark</b>๏ผšๆž็ฎ€ๆทฑ่‰ฒไธป้ข˜<br><b>Mapbox Navigation Day</b>๏ผšไธบ็™ฝๅคฉๅฏผ่ˆชไผ˜ๅŒ–<br><b>Mapbox Navigation Night</b>๏ผšไธบๅคœ้—ดๅฏผ่ˆชไผ˜ๅŒ–<br><b>Mapbox Satellite</b>๏ผšไป…ๅซๆ˜Ÿๅฝฑๅƒ<br><b>Mapbox Satellite Streets</b>๏ผšๅซๆ˜ŸไธŽ่ก—้“ๆ ‡็ญพ็š„ๆททๅˆ่ง†ๅ›พ<br><b>Mapbox Traffic Night</b>๏ผšๅผบ่ฐƒไบค้€š็Šถๅ†ต็š„ๆทฑ่‰ฒไธป้ข˜<br><b>Mike's Personalized Style</b>๏ผšไธชๆ€งๅŒ–ๆททๅˆๅซๆ˜Ÿ่ง†ๅ›พ + + + Road Name + ้“่ทฏๅ็งฐ + + + <b>Display the road name at the bottom of the driving screen</b> using data from "OpenStreetMap (OSM)". + <b>ๅœจ้ฉพ้ฉถๅฑๅน•ๅบ•้ƒจๆ˜พ็คบ้“่ทฏๅ็งฐ</b>๏ผŒไฝฟ็”จๆฅ่‡ชโ€œOpenStreetMap (OSM)โ€็š„ๆ•ฐๆฎใ€‚ + + + Show Speed Limits + ๆ˜พ็คบ้™้€Ÿ + + + <b>Show speed limits</b> in the top-left corner of the driving screen. Uses data from the car's dashboard (if supported) and "OpenStreetMap (OSM)". + <b>ๅœจ้ฉพ้ฉถๅฑๅน•ๅทฆไธŠ่ง’ๆ˜พ็คบ้™้€Ÿ</b>ใ€‚ไฝฟ็”จ่ฝฆ่พ†ไปช่กจ็›˜็š„ๆ•ฐๆฎ๏ผˆๅฆ‚ๆ”ฏๆŒ๏ผ‰ไปฅๅŠโ€œOpenStreetMap (OSM)โ€ใ€‚ + + + Show Speed Limits from Mapbox + ไปŽ Mapbox ๆ˜พ็คบ้™้€Ÿ + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>ๅœจๆฒกๆœ‰ๅ…ถไป–ๆฅๆบๆ—ถไฝฟ็”จ Mapbox ็š„้™้€Ÿๆ•ฐๆฎใ€‚</b> + + + Use Vienna-Style Speed Signs + ไฝฟ็”จ็ปดไนŸ็บณๅผ้™้€Ÿๆ ‡ๅฟ— + + + <b>Show Vienna-style (EU) speed-limit signs</b> instead of MUTCD (US). + <b>ๆ˜พ็คบ็ปดไนŸ็บณ้ฃŽๆ ผ๏ผˆๆฌง็›Ÿ๏ผ‰็š„้™้€Ÿๆ ‡ๅฟ—</b>๏ผŒ่€Œไธๆ˜ฏ MUTCD๏ผˆ็พŽๅ›ฝ๏ผ‰ใ€‚ + + + Quality of Life + ็”Ÿๆดป่ดจ้‡ + + + <b>Miscellaneous visual changes</b> to fine-tune how the driving screen looks. + <b>ๅ…ถไป–่ง†่ง‰ๆ›ดๆ”น</b>๏ผŒ็”จไบŽๅพฎ่ฐƒ้ฉพ้ฉถๅฑๅน•็š„ๅค–่ง‚ใ€‚ + + + Camera View + ๆ‘„ๅƒๅคด่ง†ๅ›พ + + + <b>Select the active camera view.</b> This is purely a visual change and doesn't impact how openpilot drives! + <b>้€‰ๆ‹ฉๆดปๅŠจๆ‘„ๅƒๅคด่ง†ๅ›พใ€‚</b> ่ฟ™ๅชๆ˜ฏ่ง†่ง‰ไธŠ็š„ๅ˜ๅŒ–๏ผŒไธไผšๅฝฑๅ“ openpilot ็š„้ฉพ้ฉถๆ–นๅผ๏ผ + + + Show Driver Camera When In Reverse + ๅ€’่ฝฆๆ—ถๆ˜พ็คบ้ฉพ้ฉถๅ‘˜ๆ‘„ๅƒๅคด + + + <b>Show the driver camera feed</b> when the vehicle is in reverse. + ๅฝ“่ฝฆ่พ†ๅค„ไบŽๅ€’ๆŒกๆ—ถ<b>ๆ˜พ็คบ้ฉพ้ฉถๅ‘˜ๆ‘„ๅƒๅคด็”ป้ข</b>ใ€‚ + + + Stopped Timer + ๅทฒๅœๆญข่ฎกๆ—ถๅ™จ + + + <b>Show a timer when stopped</b> in place of the current speed to indicate how long the vehicle has been stopped. + <b>ๅœจๅœๆญขๆ—ถๆ˜พ็คบ่ฎกๆ—ถๅ™จ</b>๏ผŒๅ–ไปฃๅฝ“ๅ‰้€Ÿๅบฆ๏ผŒไปฅๆŒ‡็คบ่ฝฆ่พ†ๅทฒๅœๆญข็š„ๆ—ถ้•ฟใ€‚ + + + Hide Map + ้š่—ๅœฐๅ›พ + + + Blind Spot + ็›ฒ็‚น + + + Steering Torque + ่ฝฌๅ‘ๆ‰ญ็Ÿฉ + + + Turn Signal + ่ฝฌๅ‘ไฟกๅท + + + Fahrenheit + ๅŽๆฐๅบฆ + + + CPU + CPU + + + GPU + GPU + + + IP + IP + + + RAM + RAM + + + SSD Left + SSD ๅทฆไพง + + + SSD Used + SSD ๅทฒ็”จ + + + None + ๆ—  + + + Acceleration: Current + ๅŠ ้€Ÿๅบฆ๏ผšๅฝ“ๅ‰ + + + Acceleration: Max + ๅŠ ้€Ÿ๏ผšๆœ€ๅคง + + + Auto Tune: Actuator Delay + ่‡ชๅŠจ่ฐƒๆ ก๏ผšๆ‰ง่กŒๅ™จๅปถ่ฟŸ + + + Auto Tune: Friction + ่‡ชๅŠจ่ฐƒ่ฐ๏ผšๆ‘ฉๆ“ฆ + + + Auto Tune: Lateral Acceleration + ่‡ชๅŠจ่ฐƒ่ฐ๏ผšๆจชๅ‘ๅŠ ้€Ÿๅบฆ + + + Auto Tune: Steer Ratio + ่‡ชๅŠจ่ฐƒ่ฐ๏ผš่ฝฌๅ‘ๆฏ” + + + Auto Tune: Stiffness Factor + ่‡ชๅŠจ่ฐƒ่ฐ๏ผšๅˆšๅบฆ็ณปๆ•ฐ + + + Engagement %: Lateral + ๅ‚ไธŽ็އ %๏ผšๆจชๅ‘ + + + Engagement %: Longitudinal + ๅ‚ไธŽ็އ %๏ผš็บตๅ‘ + + + Lateral Control: Steering Angle + ๆจชๅ‘ๆŽงๅˆถ๏ผš่ฝฌๅ‘่ง’ + + + Lateral Control: Torque % Used + ๆจชๅ‘ๆŽงๅˆถ๏ผšๆ‰ญ็Ÿฉไฝฟ็”จ็އ % + + + Longitudinal Control: Actuator Acceleration Output + ็บตๅ‘ๆŽงๅˆถ๏ผšๆ‰ง่กŒๅ™จๅŠ ้€Ÿๅบฆ่พ“ๅ‡บ + + + Longitudinal MPC Jerk: Acceleration + ็บตๅ‘MPCๆŠ–ๅŠจ๏ผšๅŠ ้€Ÿๅบฆ + + + Longitudinal MPC Jerk: Danger Zone + ็บตๅ‘MPCๅŠ ๅŠ ้€Ÿๅบฆ๏ผšๅฑ้™ฉๅŒบๅŸŸ + + + Longitudinal MPC Jerk: Speed Control + ็บตๅ‘MPCๅŠ ๅŠ ้€Ÿๅบฆ๏ผš้€ŸๅบฆๆŽงๅˆถ + + + SELECT + ้€‰ๆ‹ฉ + + + Select a metric to display + ้€‰ๆ‹ฉ่ฆๆ˜พ็คบ็š„ๅบฆ้‡ๆŒ‡ๆ ‡ + + + Show Distance + ๆ˜พ็คบ่ท็ฆป + + + Dynamic + ๅŠจๆ€ + + + Static + ้™ๆ€ + + + inches + ่‹ฑๅฏธ + + + Off + ๅ…ณ้—ญ + + + feet + ่‹ฑๅฐบ + + + Full Map + ๅฎŒๆ•ดๅœฐๅ›พ + + + Stock openpilot + ๅŽŸๅŽ‚ openpilot + + + FrogPilot + FrogPilot + + + Mapbox Streets + Mapbox ่ก—้“ + + + Mapbox Outdoors + Mapbox ๆˆทๅค– + + + Mapbox Light + Mapbox ไบฎ่‰ฒ + + + Mapbox Dark + Mapbox ๆทฑ่‰ฒ + + + Mapbox Navigation Day + Mapbox ๅฏผ่ˆช๏ผˆ็™ฝๅคฉ๏ผ‰ + + + Mapbox Navigation Night + Mapbox ๅฏผ่ˆชๅคœ้—ดๆจกๅผ + + + Mapbox Satellite + Mapbox ๅซๆ˜Ÿ + + + Mapbox Satellite Streets + Mapbox ๅซๆ˜Ÿ่ก—้“ + + + Mapbox Traffic Night + Mapbox ไบค้€šๅคœ้—ดๆจกๅผ + + + Mike's Personalized Style + Mike ็š„ไธชๆ€งๅŒ–้ฃŽๆ ผ + + + Select a map style + ้€‰ๆ‹ฉๅœฐๅ›พๆ ทๅผ + + + Auto + ่‡ชๅŠจ + + + Driver + ้ฉพ้ฉถๅ‘˜ + + + Standard + ๆ ‡ๅ‡† + + + Wide + ๅฎฝ + + + foot + ่‹ฑๅฐบ + + + inch + ่‹ฑๅฏธ + + + meter + ็ฑณ + + + meters + ็ฑณ + + + centimeter + ๅŽ˜็ฑณ + + + centimeters + ๅŽ˜็ฑณ + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 10 centimeters. + <b>่ฎพ็ฝฎ่ฝฆ้“็บฟๅŽšๅบฆใ€‚</b><br><br>้ป˜่ฎคๅ€ผ็ฌฆๅˆ MUTCD ่ฝฆ้“็บฟๅฎฝๅบฆๆ ‡ๅ‡†๏ผš10 ๅŽ˜็ฑณใ€‚ + + + <b>Set the driving-path width.</b><br><br>Default (1.9 meters) matches the width of a 2019 Lexus ES 350. + <b>่ฎพ็ฝฎ่กŒ้ฉถ่ทฏๅพ„ๅฎฝๅบฆใ€‚</b><br><br>้ป˜่ฎคๅ€ผ๏ผˆ1.9็ฑณ๏ผ‰ไธŽ2019ๆฌพ้›ทๅ…‹่จๆ–ฏES 350็š„่ฝฆๅฎฝ็›ธๅŒน้…ใ€‚ + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 10 centimeters. + <b>่ฎพ็ฝฎ่ทฏ็ผ˜ๅŽšๅบฆใ€‚</b><br><br>้ป˜่ฎคๅ€ผ็ญ‰ไบŽ MUTCD ่ฝฆ้“็บฟๅฎฝๅบฆๆ ‡ๅ‡† 10 ๅŽ˜็ฑณ็š„ไธ€ๅŠใ€‚ FrogPilotWheelPanel Distance Button - ่ท็ฆปๆŒ‰้’ฎ + ่ท็ฆปๆŒ‰้’ฎ - The action for a short press of the <b>Distance</b> button. - ็ŸญๆŒ‰<b>่ท็ฆป</b>ๆŒ‰้’ฎ็š„ๆ“ไฝœใ€‚ + <b>Action performed when the "Distance" button is pressed.</b> + <b>ๆŒ‰ไธ‹โ€œ่ท็ฆปโ€ๆŒ‰้’ฎๆ—ถๆ‰ง่กŒ็š„ๆ“ไฝœใ€‚</b> Distance Button (Long Press) - ่ท็ฆปๆŒ‰้’ฎ๏ผˆ้•ฟๆŒ‰๏ผ‰ + ่ท็ฆปๆŒ‰้’ฎ๏ผˆ้•ฟๆŒ‰๏ผ‰ - The action for a 0.5+ second press of the <b>Distance</b> button. - ๆŒ‰ไฝ<b>่ท็ฆป</b>ๆŒ‰้’ฎ0.5็ง’ไปฅไธŠ็š„ๆ“ไฝœใ€‚ + <b>Action performed when the "Distance" button is pressed for more than 0.5 seconds.</b> + <b>้•ฟๆŒ‰โ€œ่ท็ฆปโ€ๆŒ‰้’ฎ่ถ…่ฟ‡0.5็ง’ๆ—ถๆ‰ง่กŒ็š„ๆ“ไฝœใ€‚</b> Distance Button (Very Long Press) - ่ท็ฆปๆŒ‰้’ฎ๏ผˆ้•ฟๆŒ‰๏ผ‰ + ่ท็ฆปๆŒ‰้’ฎ๏ผˆ่ถ…้•ฟๆŒ‰๏ผ‰ - The action for a 2.5+ second press of the <b>Distance</b> button. - ๆŒ‰ไฝ<b>่ท็ฆป</b>ๆŒ‰้’ฎ2.5็ง’ไปฅไธŠ็š„ๆ“ไฝœใ€‚ + <b>Action performed when the "Distance" button is pressed for more than 2.5 seconds.</b> + <b>ๅฝ“ๆŒ‰ไฝโ€œ่ท็ฆปโ€ๆŒ‰้’ฎ่ถ…่ฟ‡ 2.5 ็ง’ๆ—ถๆ‰ง่กŒ็š„ๆ“ไฝœใ€‚</b> LKAS Button - LKASๆŒ‰้’ฎ + LKAS ๆŒ‰้’ฎ - The action for pressing the <b>LKAS</b> button. - ๆŒ‰ไธ‹<b>LKAS</b>ๆŒ‰้’ฎ็š„ๆ“ไฝœใ€‚ + <b>Action performed when the "LKAS" button is pressed.</b> + <b>ๆŒ‰ไธ‹โ€œLKASโ€ๆŒ‰้’ฎๆ—ถๆ‰ง่กŒ็š„ๆ“ไฝœใ€‚</b> - Nothing - ๆฒกๆœ‰ไป€ไนˆ + No Action + ๆ— ๆ“ไฝœ - Pause Lateral - ๆš‚ๅœๆจชๅ‘ + Pause Steering + ๆš‚ๅœ่ฝฌๅ‘ Change "Personality Profile" - ไธชๆ€งๆกฃๆกˆ + ๆ›ดๆ”นโ€œไธชๆ€งๆกฃๆกˆโ€ Force openpilot to Coast - ๅผบๅˆถopenpilotๆป‘่กŒ + ๅผบๅˆถ openpilot ่ฟ›ๅ…ฅๆป‘่กŒ - Pause Longitudinal - ๆš‚ๅœ็บตๅ‘ + Pause Acceleration/Braking + ๆš‚ๅœๅŠ ้€Ÿ/ๅˆถๅŠจ Toggle "Experimental Mode" On/Off - ๅˆ‡ๆขโ€œๅฎž้ชŒๆจกๅผโ€ๅผ€/ๅ…ณ + ๅˆ‡ๆขโ€œๅฎž้ชŒๆจกๅผโ€ๅผ€/ๅ…ณ Toggle "Traffic Mode" On/Off - ๅˆ‡ๆขโ€œไบค้€šๆจกๅผโ€ๅผ€/ๅ…ณ + ๅˆ‡ๆขโ€œไบค้€šๆจกๅผโ€ๅผ€/ๅ…ณ SELECT - SELECT + ้€‰ๆ‹ฉ Select a function to assign to this button - ้€‰ๆ‹ฉไธ€ไธชๅŠŸ่ƒฝๅˆ†้…็ป™ๆญคๆŒ‰้’ฎ + ้€‰ๆ‹ฉ่ฆๅˆ†้…็ป™ๆญคๆŒ‰้’ฎ็š„ๅŠŸ่ƒฝ @@ -4297,7 +4408,7 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Characters: %1/%2 - ๅญ—็ฌฆ๏ผš%1/%2 + ๅญ—็ฌฆๆ•ฐ๏ผš%1/%2 @@ -4330,7 +4441,7 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Manage at %1 - ็ฎก็†ไบŽ%1 + ๅœจ %1 ็ฎก็† @@ -4348,57 +4459,6 @@ Want to submit your own animations? Share them in the "custom-themes" channel on ็ญ‰ๅพ…่ทฏ็บฟ - - ModelReview - - How would you rate that drive? - ๆ‚จๅฆ‚ไฝ•่ฏ„ไปท้‚ฃๆฌก้ฉพ้ฉถ๏ผŸ - - - Blacklist this model - ๅฐ†ๆญคๆจกๅž‹ๅˆ—ๅ…ฅ้ป‘ๅๅ• - - - The model used during that drive was: - ๅœจ้‚ฃๆฌก้ฉฑๅŠจไธญไฝฟ็”จ็š„ๆจกๅž‹ๆ˜ฏ๏ผš - - - Current Model Score: 0 - ๅฝ“ๅ‰ๆจกๅž‹่ฏ„ๅˆ†๏ผš0 - - - Current Model Rank: 0 - ๅฝ“ๅ‰ๆจกๅž‹็ญ‰็บง๏ผš0 - - - Total Model Drives: 0 - ๆ€ปๆจกๅž‹้ฉฑๅŠจๅ™จ๏ผš0 - - - Total Overall Model Drives: 0 - ๆ€ปๆ•ดไฝ“ๆจกๅž‹้ฉฑๅŠจๅ™จ๏ผš0 - - - Total Model Drives: %1 - ๆ€ปๆจกๅž‹้ฉฑๅŠจๅ™จ๏ผš%1 - - - Current Model Rank: %1 - ๅฝ“ๅ‰ๆจกๅž‹ๆŽ’ๅ๏ผš%1 - - - Current Model Score: %1 - ๅฝ“ๅ‰ๆจกๅž‹่ฏ„ๅˆ†๏ผš%1 - - - Total Overall Drives: %1 - ๆ€ป้ฉฑๅŠจๅ™จๆ€ปๆ•ฐ๏ผš%1 - - - Model successfully blacklisted! - ๆจกๅž‹ๅทฒๆˆๅŠŸๅˆ—ๅ…ฅ้ป‘ๅๅ•๏ผ - - MultiOptionDialog @@ -4519,17 +4579,17 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Reboot Device ้‡ๅฏ่ฎพๅค‡ - - openpilot crashed ๐Ÿ’ฉ - openpilot ๅดฉๆบƒไบ† ๐Ÿ’ฉ - openpilot crashed - openpilotๅดฉๆบƒไบ† + openpilot ๅดฉๆบƒไบ† Please post the "Error Log" in the FrogPilot Discord! - ่ฏทๅœจFrogPilot Discordไธญๅ‘ๅธƒโ€œ้”™่ฏฏๆ—ฅๅฟ—โ€๏ผ + ่ฏทๅœจ FrogPilot Discord ๅ‘ๅธƒโ€œError Logโ€๏ผ + + + openpilot crashed ๐Ÿ’ฉ + openpilot ๅดฉๆบƒไบ† ๐Ÿ’ฉ @@ -4540,15 +4600,15 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Pair your device to your %1 account - ๅฐ†ๆ‚จ็š„่ฎพๅค‡ไธŽ%1่ดฆๆˆท้…ๅฏน + ๅฐ†ๆ‚จ็š„่ฎพๅค‡ไธŽๆ‚จ็š„%1่ดฆๆˆท้…ๅฏน Go to https://%1 on your phone - ่ฏทๅœจๆ‰‹ๆœบไธŠ่ฎฟ้—ฎ https://%1 + ๅœจๆ‰‹ๆœบไธŠ่ฎฟ้—ฎ https://%1 Bookmark %1 to your home screen to use it like an app - ๅฐ† %1 ๆทปๅŠ ๅˆฐไธปๅฑๅน•ไปฅๅƒๅบ”็”จ็จ‹ๅบไธ€ๆ ทไฝฟ็”จๅฎƒใ€‚ + ๅฐ† %1 ไนฆ็ญพๅˆฐไธปๅฑๅน•๏ผŒไปฅๅƒๅบ”็”จไธ€ๆ ทไฝฟ็”จๅฎƒ @@ -4649,12 +4709,12 @@ Want to submit your own animations? Share them in the "custom-themes" channel on ็Žฐๅœจ - FrogPilot - FrogPilot + Restore + ๆขๅค - Restore - ๆขๅค + FrogPilot + FrogPilot @@ -4702,11 +4762,11 @@ This may take up to a minute. ScreenRecorder RECORDING - ๅฝ•้Ÿณ + ๅฝ•ๅˆถไธญ RECORD - ่ฎฐๅฝ• + ่ฎฐๅฝ• @@ -4729,35 +4789,35 @@ This may take up to a minute. โ† Back - โ† ่ฟ”ๅ›ž + โ† ่ฟ”ๅ›ž FrogPilot - FrogPilot - - - Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ๆฌข่ฟŽไฝฟ็”จFrogPilot๏ผ็”ฑไบŽๆ‚จๆ˜ฏFrogPilot็š„ๆ–ฐ็”จๆˆท๏ผŒๅทฒๅบ”็”จโ€œMinimalโ€ๅˆ‡ๆข้ข„่ฎพ๏ผŒไฝ†ๆ‚จๅฏไปฅ้šๆ—ถ้€š่ฟ‡โ€œ่ฐƒ่Š‚็บงๅˆซโ€ๆŒ‰้’ฎ่ฟ›่กŒๆ›ดๆ”น๏ผ - - - Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ็”ฑไบŽๆ‚จๅฏนFrogPilot่ฟ˜ๆฏ”่พƒ้™Œ็”Ÿ๏ผŒๅทฒๅบ”็”จโ€œMinimalโ€ๅˆ‡ๆข้ข„่ฎพ๏ผŒไฝ†ๆ‚จๅฏไปฅ้šๆ—ถ้€š่ฟ‡โ€œ่ฐƒ่Š‚็บงๅˆซโ€ๆŒ‰้’ฎ่ฟ›่กŒๆ›ดๆ”น๏ผ - - - Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ็”ฑไบŽๆ‚จๅฏนopenpilotๅพˆๆœ‰็ป้ชŒ๏ผŒๅทฒ็ปๅบ”็”จไบ†โ€œๆ ‡ๅ‡†โ€ๅˆ‡ๆข้ข„่ฎพ๏ผŒไฝ†ๆ‚จๅฏไปฅ้šๆ—ถ้€š่ฟ‡โ€œ่ฐƒ่Š‚็บงๅˆซโ€ๆŒ‰้’ฎ่ฟ›่กŒๆ›ดๆ”น๏ผ - - - Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ็”ฑไบŽๆ‚จๅฏนFrogPilotๅพˆๆœ‰็ป้ชŒ๏ผŒๅทฒๅบ”็”จโ€œๆ ‡ๅ‡†โ€ๅˆ‡ๆข้ข„่ฎพ๏ผŒไฝ†ๆ‚จๅฏไปฅ้šๆ—ถ้€š่ฟ‡โ€œ่ฐƒ่Š‚็บงๅˆซโ€ๆŒ‰้’ฎ่ฟ›่กŒๆ›ดๆ”น๏ผ - - - Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ็”ฑไบŽๆ‚จๅฏนFrogPilot้žๅธธ็†Ÿๆ‚‰๏ผŒๅทฒๅบ”็”จโ€œ้ซ˜็บงโ€ๅˆ‡ๆข้ข„่ฎพ๏ผŒไฝ†ๆ‚จๅฏไปฅ้šๆ—ถ้€š่ฟ‡โ€œ่ฐƒ่Š‚็บงๅˆซโ€ๆŒ‰้’ฎ่ฟ›่กŒๆ›ดๆ”น๏ผ + FrogPilot Welcome to FrogPilot! Since you're new to openpilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ๆฌข่ฟŽไฝฟ็”จFrogPilot๏ผ็”ฑไบŽๆ‚จๆ˜ฏopenpilot็š„ๆ–ฐ็”จๆˆท๏ผŒๅทฒๅบ”็”จโ€œMinimalโ€ๅˆ‡ๆข้ข„่ฎพ๏ผŒไฝ†ๆ‚จๅฏไปฅ้šๆ—ถ้€š่ฟ‡โ€œTuning Levelโ€ๆŒ‰้’ฎ่ฟ›่กŒๆ›ดๆ”น๏ผ + ๆฌข่ฟŽไฝฟ็”จ FrogPilot๏ผ็”ฑไบŽๆ‚จๆ˜ฏ openpilot ๆ–ฐๆ‰‹๏ผŒๅทฒๅบ”็”จโ€œๆœ€ไฝŽ้™ๅบฆโ€ๅˆ‡ๆข้ข„่ฎพ๏ผŒไฝ†ๆ‚จๅฏ้šๆ—ถ้€š่ฟ‡โ€œ่ฐƒๆ ก็บงๅˆซโ€ๆŒ‰้’ฎ่ฟ›่กŒๆ›ดๆ”น๏ผ + + + Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + ๆฌข่ฟŽไฝฟ็”จFrogPilot๏ผ็”ฑไบŽๆ‚จๆ˜ฏ้ฆ–ๆฌกไฝฟ็”จFrogPilot๏ผŒๅทฒๅบ”็”จโ€œๆœ€็ฎ€โ€ๅˆ‡ๆข้ข„่ฎพ๏ผŒไฝ†ๆ‚จๅฏ้šๆ—ถ้€š่ฟ‡โ€œTuning Levelโ€ๆŒ‰้’ฎ่ฟ›่กŒๆ›ดๆ”น๏ผ + + + Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + ็”ฑไบŽๆ‚จๅฏนFrogPilot่ฟ˜ไธๅคช็†Ÿๆ‚‰๏ผŒๅทฒๅบ”็”จโ€œๆœ€็ฎ€โ€ๅˆ‡ๆข้ข„่ฎพ๏ผŒไฝ†ๆ‚จๅฏ้šๆ—ถ้€š่ฟ‡โ€œ่ฐƒๆ ก็บงๅˆซโ€ๆŒ‰้’ฎ่ฟ›่กŒๆ›ดๆ”น๏ผ + + + Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + ็”ฑไบŽไฝ ็†Ÿๆ‚‰ openpilot๏ผŒๅทฒๅบ”็”จโ€œๆ ‡ๅ‡†โ€ๅˆ‡ๆข้ข„่ฎพ๏ผŒไฝ†ไฝ ๅฏ้šๆ—ถ้€š่ฟ‡โ€œ่ฐƒๆ ก็บงๅˆซโ€ๆŒ‰้’ฎ่ฟ›่กŒๆ›ดๆ”น๏ผ + + + Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + ็”ฑไบŽไฝ ็†Ÿๆ‚‰FrogPilot๏ผŒๅทฒๅบ”็”จโ€œๆ ‡ๅ‡†โ€ๅˆ‡ๆข้ข„่ฎพ๏ผŒไฝ ๅฏ้šๆ—ถ้€š่ฟ‡โ€œ่ฐƒๆ ก็บงๅˆซโ€ๆŒ‰้’ฎ่ฟ›่กŒๆ›ดๆ”น๏ผ + + + Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + ็”ฑไบŽไฝ ๅฏนFrogPilot้žๅธธ็†Ÿๆ‚‰๏ผŒๅทฒๅบ”็”จโ€œ้ซ˜็บงโ€ๅˆ‡ๆข้ข„่ฎพ๏ผŒไฝ†ไฝ ๅฏไปฅ้šๆ—ถ้€š่ฟ‡โ€œTuning Levelโ€ๆŒ‰้’ฎ่ฟ›่กŒๆ›ดๆ”น๏ผ @@ -4871,7 +4931,7 @@ This may take up to a minute. Pair your device with Konik connect (stable.konik.ai). - ๅฐ†ๆ‚จ็š„่ฎพๅค‡ไธŽKonik connect้…ๅฏน (stable.konik.ai)ใ€‚ + ๅฐ†ๆ‚จ็š„่ฎพๅค‡ไธŽ Konik connect๏ผˆstable.konik.ai๏ผ‰้…ๅฏนใ€‚ @@ -4958,27 +5018,27 @@ This may take up to a minute. GPU - GPU + GPU CPU - CPU + CPU GB - GB + GB MEMORY - ่ฎฐๅฟ† + ๅ†…ๅญ˜ LEFT - ๅทฆ + ๅทฆ USED - ๅทฒไฝฟ็”จ + ๅทฒ็”จ @@ -5053,39 +5113,39 @@ This may take up to a minute. Updates are only downloaded while the car is off or in park. - ๆ›ดๆ–ฐไป…ๅœจๆฑฝ่ฝฆ็†„็ซๆˆ–ๅœ่ฝฆๆ—ถไธ‹่ฝฝใ€‚ + ไป…ๅœจ่ฝฆ่พ†็†„็ซๆˆ–ๅค„ไบŽ้ฉป่ฝฆๆกฃๆ—ถไธ‹่ฝฝๆ›ดๆ–ฐใ€‚ Automatically Update FrogPilot - ่‡ชๅŠจๆ›ดๆ–ฐFrogPilot - - - Error Log - ้”™่ฏฏๆ—ฅๅฟ— - - - VIEW - ๆŸฅ็œ‹ - - - View the error log for openpilot crashes. - ๆŸฅ็œ‹openpilotๅดฉๆบƒ็š„้”™่ฏฏๆ—ฅๅฟ—ใ€‚ - - - Do you want to delete deep storage FrogPilot assets? This includes your toggle settings for quick reinstalls. - ๆ‚จ่ฆๅˆ ้™คๆทฑๅบฆๅญ˜ๅ‚จ็š„FrogPilot่ต„ไบงๅ—๏ผŸ่ฟ™ๅŒ…ๆ‹ฌๆ‚จ็š„ๅฟซ้€Ÿ้‡ๆ–ฐๅฎ‰่ฃ…ๅˆ‡ๆข่ฎพ็ฝฎใ€‚ - - - Are you sure? This is 100% unrecoverable and if you reinstall FrogPilot you'll lose all your previous settings! - ไฝ ็กฎๅฎšๅ—๏ผŸ่ฟ™ๅฐ†ๆ˜ฏ100%ไธๅฏๆขๅค็š„๏ผŒๅฆ‚ๆžœไฝ ้‡ๆ–ฐๅฎ‰่ฃ…FrogPilot๏ผŒไฝ ๅฐ†ๅคฑๅŽปๆ‰€ๆœ‰ไน‹ๅ‰็š„่ฎพ็ฝฎ๏ผ - - - This branch must be downloaded before switching. Would you like to download it now? - ๅœจๅˆ‡ๆขไน‹ๅ‰ๅฟ…้กปไธ‹่ฝฝๆญคๅˆ†ๆ”ฏใ€‚ๆ‚จๆƒณ็Žฐๅœจไธ‹่ฝฝๅ—๏ผŸ + ่‡ชๅŠจๆ›ดๆ–ฐ FrogPilot FrogPilot will automatically update itself and it's assets when you're offroad and have an active internet connection. - ๅฝ“ๆ‚จๅœจ่ถŠ้‡Ž่กŒ้ฉถๅนถไธ”ๆœ‰ๆดปๅŠจ็š„ไบ’่”็ฝ‘่ฟžๆŽฅๆ—ถ๏ผŒFrogPilot ๅฐ†่‡ชๅŠจๆ›ดๆ–ฐ่‡ช่บซๅŠๅ…ถ่ต„ไบงใ€‚ + ๅฝ“ไฝ ็ฆป็บฟ่กŒ้ฉถไธ”ๆœ‰ๆœ‰ๆ•ˆ็š„ไบ’่”็ฝ‘่ฟžๆŽฅๆ—ถ๏ผŒFrogPilot ไผš่‡ชๅŠจๆ›ดๆ–ฐ่‡ช่บซๅŠๅ…ถ่ต„ๆบใ€‚ + + + This branch must be downloaded before switching. Would you like to download it now? + ๅฟ…้กปๅœจๅˆ‡ๆขๅ‰ไธ‹่ฝฝๆญคๅˆ†ๆ”ฏใ€‚็Žฐๅœจ่ฆไธ‹่ฝฝๅ—๏ผŸ + + + Error Log + ้”™่ฏฏๆ—ฅๅฟ— + + + VIEW + ่ง†ๅ›พ + + + View the error log for openpilot crashes. + ๆŸฅ็œ‹ openpilot ๅดฉๆบƒ็š„้”™่ฏฏๆ—ฅๅฟ—ใ€‚ + + + Do you want to perform a full factory reset? All saved assets and settings will be permanently deleted! + ๆ˜ฏๅฆ่ฆๆ‰ง่กŒๅฎŒๅ…จๅ‡บๅŽ‚้‡็ฝฎ๏ผŸๆ‰€ๆœ‰ๅทฒไฟๅญ˜็š„่ต„ไบงๅ’Œ่ฎพ็ฝฎๅฐ†่ขซๆฐธไน…ๅˆ ้™ค๏ผ + + + This is a complete factory reset and cannot be undone. Are you absolutely sure you want to continue? + ่ฟ™ๆ˜ฏไธ€ๆฌกๅฎŒๆ•ด็š„ๅ‡บๅŽ‚้‡็ฝฎ๏ผŒไธ”ๆ— ๆณ•ๆ’ค้”€ใ€‚ๆ‚จ็กฎๅฎš่ฆ็ปง็ปญๅ—๏ผŸ @@ -5339,11 +5399,11 @@ This may take up to a minute. Uploading disabled - ไธŠไผ ๅทฒ็ฆ็”จ + ๅทฒ็ฆ็”จไธŠไผ  Toggle off the "Turn Off Data Uploads" toggle to re-enable uploads. - ๅˆ‡ๆขๅ…ณ้—ญโ€œๅ…ณ้—ญๆ•ฐๆฎไธŠไผ โ€ๅผ€ๅ…ณไปฅ้‡ๆ–ฐๅฏ็”จไธŠไผ ใ€‚ + ๅฐ†โ€œๅ…ณ้—ญๆ•ฐๆฎไธŠไผ โ€ๅผ€ๅ…ณๅˆ‡ๆขไธบๅ…ณ้—ญไปฅ้‡ๆ–ฐๅฏ็”จไธŠไผ ใ€‚ diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index 947d49bc9..fba72a474 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -88,23 +88,23 @@ Off - ้—œ้–‰ + ้—œ้–‰ Always - ็ธฝๆ˜ฏ + ็ธฝๆ˜ฏ Only Onroad - ๅƒ…้™ๅ…ฌ่ทฏ + ๅƒ…้™่กŒ้ง›ไธญ Until Reboot - ็›ดๅˆฐ้‡ๆ–ฐๅ•Ÿๅ‹• + ็›ดๅˆฐ้‡ๆ–ฐๅ•Ÿๅ‹• Allow tethering with your data SIM and keep it active either while driving or continuously. - ๅ…่จฑไฝฟ็”จๆ‚จ็š„ๆ•ธๆ“šSIMๅก้€ฒ่กŒ็ถฒ็ตกๅ…ฑไบซ๏ผŒไธฆๅœจ้ง•้ง›ๆ™‚ๆˆ–ๆŒ็บŒไฟๆŒๅ…ถๆดป่บใ€‚ + ๅ…่จฑไฝฟ็”จ่ณ‡ๆ–™ SIM ๅ…ฑไบซ็ถฒ่ทฏ๏ผŒไธฆๅœจ้ง•้ง›ๆ™‚ๆˆ–ๆŒ็บŒไฟๆŒๅ…ถๅ•Ÿ็”จใ€‚ @@ -187,71 +187,71 @@ DeveloperSidebar m/sยฒ - m/sยฒ + m/sยฒ ft/sยฒ - ft/sยฒ + ่‹ฑๅฐบ/็ง’ยฒ ACCEL - ACCEL + ๅŠ ้€Ÿ ACCEL JERK - ๅŠ ้€ŸๆŠ–ๅ‹• + ๅŠ ้€ŸๅบฆๆŠ–ๅ‹• ACT ACCEL - ACT ACCEL + ๆฒน้–€ๅ‹•ไฝœๅ•Ÿ็”จ DANGER JERK - ๅฑ้šชๆทท่›‹ + ๅฑ้šช ๆ€ฅๅ‹• STEER DELAY - ่ฝ‰ๅ‘ๅปถ้ฒ + ่ฝ‰ๅ‘ๅปถ้ฒ FRICTION - ๆ‘ฉๆ“ฆ + ๆ‘ฉๆ“ฆ LAT ACCEL - ๆฉซๅ‘ๅŠ ้€Ÿๅบฆ + ๆฉซๅ‘ๅŠ ้€Ÿๅบฆ LATERAL % - LATERAL % + ๆฉซๅ‘ % LONG % - LONG % + ้•ทๆŽง % MAX ACCEL - ๆœ€ๅคงๅŠ ้€Ÿๅบฆ + ๆœ€ๅคงๅŠ ้€Ÿๅบฆ SPEED JERK - ้€Ÿๅบฆ้ก›็ฐธ + ้€Ÿๅบฆ่บ่ฎŠ STEER ANGLE - ่ฝ‰ๅ‘่ง’ + ่ฝ‰ๅ‘่ง’ๅบฆ STEER RATIO - ่ฝ‰ๅ‘ๆฏ”็އ + ่ฝ‰ๅ‘ๆฏ” STEER STIFF - ่ฝ‰ๅ‘ๅƒต็กฌ + ่ฝ‰ๅ‘ๅƒต็กฌ TORQUE % - ๆ‰ญ็Ÿฉ % + ๆ‰ญ็Ÿฉ % @@ -398,30 +398,30 @@ Pair your device with Konik connect (stable.konik.ai). - ๅฐ‡ๆ‚จ็š„่จญๅ‚™่ˆ‡ Konik connect ้…ๅฐ (stable.konik.ai)ใ€‚ + ๅฐ‡ๆ‚จ็š„่ฃ็ฝฎ่ˆ‡ Konik connect๏ผˆstable.konik.ai๏ผ‰้…ๅฐใ€‚ DriveStats FROGPILOT - FROGPILOT + FROGPILOT Drives - ้ฉ…ๅ‹•ๅ™จ + ่กŒ้ง›่จ˜้Œ„ Hours - ๅฐๆ™‚ + ๅฐๆ™‚ KM - KM + ๅ…ฌ้‡Œ Miles - ่‹ฑ้‡Œ + ่‹ฑ้‡Œ @@ -446,3839 +446,3952 @@ FrogPilotAnnotatedCameraWidget m/sยฒ - m/sยฒ + m/sยฒ meters - ็ฑณ + ๅ…ฌๅฐบ m/s - m/s + ๅ…ฌๅฐบ/็ง’ km/h - km/h + ๅ…ฌ้‡Œ/ๅฐๆ™‚ ft/sยฒ - ft/sยฒ + ่‹ฑๅฐบ/็ง’ยฒ feet - ่‹ฑๅฐบ + ่‹ฑๅฐบ mph - mph + ่‹ฑ้‡Œ/ๅฐๆ™‚ Vehicle in blind spot - ็›ฒ้ปžไธญ็š„่ปŠ่ผ› + ่ปŠ่ผ›ๅœจ็›ฒ้ปžๅ…ง PENDING - ๅพ…่™•็† + ๅพ…่™•็† LIMIT - ้™ๅˆถ + ้™ๅˆถ FrogPilotConfirmationDialog Reboot required to take effect. - ้œ€่ฆ้‡ๆ–ฐๅ•Ÿๅ‹•ๆ‰่ƒฝ็”Ÿๆ•ˆใ€‚ + ้œ€่ฆ้‡ๆ–ฐๅ•Ÿๅ‹•ๆ‰่ƒฝ็”Ÿๆ•ˆใ€‚ Reboot Now - ็ซ‹ๅณ้‡ๆ–ฐๅ•Ÿๅ‹• + ็ซ‹ๅณ้‡ๆ–ฐๅ•Ÿๅ‹• Reboot Later - ็จๅพŒ้‡ๆ–ฐๅ•Ÿๅ‹• + ็จๅพŒ้‡ๆ–ฐๅ•Ÿๅ‹• Yes - ๆ˜ฏ + ๆ˜ฏ No - ไธ + ๅฆ FrogPilotDataPanel - Delete Driving Footage and Data - ๅˆช้™ค่กŒ่ปŠๅฝฑๅƒๅ’Œๆ•ธๆ“š + Delete Driving Data + ๅˆช้™ค้ง•้ง›่ณ‡ๆ–™ DELETE - ๅˆช้™ค + ๅˆช้™ค - Deletes all stored driving footage and data from your device. Ideal for maintaining privacy or for simply freeing up space. - ๅˆช้™ค่ฃ็ฝฎไธŠๆ‰€ๆœ‰ๅ„ฒๅญ˜็š„่กŒ่ปŠๅฝฑๅƒๅ’Œๆ•ธๆ“šใ€‚้žๅธธ้ฉๅˆ็ถญ่ญท้šฑ็งๆˆ–ๅƒ…ๅƒ…ๆ˜ฏ้‡‹ๆ”พ็ฉบ้–“ใ€‚ + <b>Delete all stored driving footage and data</b> to free up space and clear private information. + <b>ๅˆช้™คๆ‰€ๆœ‰ๅ„ฒๅญ˜็š„่กŒ่ปŠๅฝฑๅƒ่ˆ‡่ณ‡ๆ–™</b>ไปฅ้‡‹ๆ”พ็ฉบ้–“ไธฆๆธ…้™คๅ€‹ไบบ่ณ‡่จŠ - Are you sure you want to delete all of your driving footage and data? - ๆ‚จ็ขบๅฎš่ฆๅˆช้™คๆ‰€ๆœ‰้ง•้ง›ๅฝฑ็‰‡ๅ’Œๆ•ธๆ“šๅ—Ž๏ผŸ + Delete all driving data and footage? + ๅˆช้™คๆ‰€ๆœ‰่กŒ่ปŠ่ณ‡ๆ–™่ˆ‡ๅฝฑๅƒ๏ผŸ Delete - ๅˆช้™ค + ๅˆช้™ค Deleting... - ๆญฃๅœจๅˆช้™ค... + ๆญฃๅœจๅˆช้™คโ€ฆ Deleted! - ๅทฒๅˆช้™ค๏ผ + ๅทฒๅˆช้™ค๏ผ Delete Error Logs - ๅˆช้™ค้Œฏ่ชคๆ—ฅ่ชŒ + ๅˆช้™ค้Œฏ่ชคๆ—ฅ่ชŒ - Deletes all stored error logs from your device. Ideal for freeing up space. - ๅพžๆ‚จ็š„่จญๅ‚™ไธญๅˆช้™คๆ‰€ๆœ‰ๅ„ฒๅญ˜็š„้Œฏ่ชคๆ—ฅ่ชŒใ€‚้žๅธธ้ฉๅˆ้‡‹ๆ”พ็ฉบ้–“ใ€‚ + <b>Delete collected error logs</b> to free up space and clear old crash records. + <b>ๅˆช้™คๆ”ถ้›†็š„้Œฏ่ชคๆ—ฅ่ชŒ</b>ไปฅ้‡‹ๆ”พ็ฉบ้–“ไธฆๆธ…้™ค่ˆŠ็š„็•ถๆฉŸ่จ˜้Œ„ใ€‚ - Are you sure you want to delete all of the error logs? - ๆ‚จ็ขบๅฎš่ฆๅˆช้™คๆ‰€ๆœ‰้Œฏ่ชคๆ—ฅ่ชŒๅ—Ž๏ผŸ + Delete all error logs? + ่ฆๅˆช้™คๆ‰€ๆœ‰้Œฏ่ชคๆ—ฅ่ชŒๅ—Ž๏ผŸ Screen Recordings - ่žขๅน•้Œ„ๅฝฑ + ่žขๅน•้Œ„ๅฝฑ - Manage your screen recordings. - ็ฎก็†ๆ‚จ็š„่žขๅน•้Œ„ๅฝฑใ€‚ + <b>Delete or rename screen recordings.</b> + <b>ๅˆช้™คๆˆ–้‡ๆ–ฐๅ‘ฝๅ่žขๅน•้Œ„ๅฝฑใ€‚</b> DELETE ALL - ๅˆช้™คๅ…จ้ƒจ + ๅ…จ้ƒจๅˆช้™ค RENAME - ้‡ๆ–ฐๅ‘ฝๅ + ้‡ๆ–ฐๅ‘ฝๅ - Select a recording to delete - ้ธๆ“‡่ฆๅˆช้™ค็š„้Œ„้Ÿณ + Choose a screen recording to delete + ้ธๆ“‡่ฆๅˆช้™ค็š„่žขๅน•้Œ„ๅฝฑ - Are you sure you want to delete this recording? - ๆ‚จ็ขบๅฎš่ฆๅˆช้™คๆญค้Œ„้Ÿณๅ—Ž๏ผŸ + Delete this screen recording? + ๅˆช้™คๆญค่žขๅน•้Œ„ๅฝฑ๏ผŸ - Are you sure you want to delete all screen recordings? - ๆ‚จ็ขบๅฎš่ฆๅˆช้™คๆ‰€ๆœ‰่žขๅน•้Œ„ๅฝฑๅ—Ž๏ผŸ + Delete all screen recordings? + ๅˆช้™คๆ‰€ๆœ‰่žขๅน•้Œ„ๅฝฑ๏ผŸ Delete All - ๅ…จ้ƒจๅˆช้™ค + ๅ…จ้ƒจๅˆช้™ค - Select a recording to rename - ้ธๆ“‡่ฆ้‡ๆ–ฐๅ‘ฝๅ็š„้Œ„้Ÿณ + Choose a screen recording to rename + ้ธๆ“‡่ฆ้‡ๆ–ฐๅ‘ฝๅ็š„่žขๅน•้Œ„ๅฝฑ Enter a new name - ่ผธๅ…ฅๆ–ฐๅ็จฑ + ่ผธๅ…ฅๆ–ฐๅ็จฑ - Rename Recording - ้‡ๆ–ฐๅ‘ฝๅ้Œ„้Ÿณ + Rename Screen Recording + ้‡ๆ–ฐๅ‘ฝๅ่žขๅน•้Œ„ๅฝฑ - A recording with this name already exists. Please choose a different name. - ๅทฒๅญ˜ๅœจๅ…ทๆœ‰ๆญคๅ็จฑ็š„้Œ„้Ÿณใ€‚่ซ‹้ธๆ“‡ๅ…ถไป–ๅ็จฑใ€‚ + Name already in use. Please choose a different name. + ๅ็จฑๅทฒ่ขซไฝฟ็”จใ€‚่ซ‹้ธๆ“‡ไธๅŒ็š„ๅ็จฑใ€‚ Renaming... - ้‡ๆ–ฐๅ‘ฝๅไธญ... + ๆญฃๅœจ้‡ๆ–ฐๅ‘ฝๅโ€ฆ Renamed! - ๅทฒ้‡ๆ–ฐๅ‘ฝๅ๏ผ + ๅทฒ้‡ๆ–ฐๅ‘ฝๅ๏ผ FrogPilot Backups - FrogPilot ๅ‚™ไปฝ + FrogPilot ๅ‚™ไปฝ - Manage your FrogPilot backups. - ็ฎก็†ๆ‚จ็š„FrogPilotๅ‚™ไปฝใ€‚ + <b>Create, delete, or restore FrogPilot backups.</b> + <b>ๅปบ็ซ‹ใ€ๅˆช้™คๆˆ–้‚„ๅŽŸ FrogPilot ๅ‚™ไปฝใ€‚</b> BACKUP - ๅ‚™ไปฝ + ๅ‚™ไปฝ RESTORE - ๆขๅพฉ + ้‚„ๅŽŸ - Name your backup - ๅ‘ฝๅๆ‚จ็š„ๅ‚™ไปฝ + Enter a name for this backup + ่ผธๅ…ฅๆญคๅ‚™ไปฝ็š„ๅ็จฑ - A backup with this name already exists. Please choose a different name. - ๅทฒๅญ˜ๅœจๆญคๅ็จฑ็š„ๅ‚™ไปฝใ€‚่ซ‹้ธๆ“‡ๅ…ถไป–ๅ็จฑใ€‚ - - - Do you want to compress this backup? This will take a few minutes, but the final result will be smaller and run in the background. - ๆ‚จๆƒณ่ฆๅฃ“็ธฎๆญคๅ‚™ไปฝๅ—Ž๏ผŸ้€™ๅฐ‡้œ€่ฆๅนพๅˆ†้˜๏ผŒไฝ†ๆœ€็ต‚็ตๆžœๅฐ‡ๆ›ดๅฐไธฆๅœจ่ƒŒๆ™ฏไธญ้‹่กŒใ€‚ + Compress this backup? This will save space and run in the background but take a bit longer. + ่ฆๅฃ“็ธฎ้€™ๅ€‹ๅ‚™ไปฝๅ—Ž๏ผŸ้€™ๅฐ‡็ฏ€็œ็ฉบ้–“ไธฆๅœจ่ƒŒๆ™ฏๅŸท่กŒ๏ผŒไฝ†้œ€่ฆๆ›ด้•ทๆ™‚้–“ใ€‚ Backing up... - ๆญฃๅœจๅ‚™ไปฝ... + ๆญฃๅœจๅ‚™ไปฝโ€ฆ Compressing... - ๆญฃๅœจๅฃ“็ธฎ... + ๆญฃๅœจๅฃ“็ธฎโ€ฆ Backup created! - ๅ‚™ไปฝๅทฒๅปบ็ซ‹๏ผ + ๅ‚™ไปฝๅทฒๅปบ็ซ‹๏ผ - Select a backup to delete - ้ธๆ“‡่ฆๅˆช้™ค็š„ๅ‚™ไปฝ + Choose a FrogPilot backup to delete + ้ธๆ“‡่ฆๅˆช้™ค็š„ FrogPilot ๅ‚™ไปฝ - Are you sure you want to delete this backup? - ๆ‚จ็ขบๅฎš่ฆๅˆช้™คๆญคๅ‚™ไปฝๅ—Ž๏ผŸ + Delete this backup? + ่ฆๅˆช้™คๆญคๅ‚™ไปฝๅ—Ž๏ผŸ - Are you sure you want to delete all FrogPilot backups? - ๆ‚จ็ขบๅฎš่ฆๅˆช้™คๆ‰€ๆœ‰ FrogPilot ๅ‚™ไปฝๅ—Ž๏ผŸ + Delete all backups? + ๅˆช้™คๆ‰€ๆœ‰ๅ‚™ไปฝ๏ผŸ - Select a restore point - ้ธๆ“‡้‚„ๅŽŸ้ปž + Choose a backup to restore + ้ธๆ“‡่ฆ้‚„ๅŽŸ็š„ๅ‚™ไปฝ - Are you sure you want to restore this version of FrogPilot? - ๆ‚จ็ขบๅฎš่ฆ้‚„ๅŽŸๆญค็‰ˆๆœฌ็š„FrogPilotๅ—Ž๏ผŸ + Restore this backup? + ่ฆ้‚„ๅŽŸๆญคๅ‚™ไปฝๅ—Ž๏ผŸ Restore - ๆขๅพฉ + ้‚„ๅŽŸ Restoring... - ๆญฃๅœจ้‚„ๅŽŸ... + ๆญฃๅœจ้‚„ๅŽŸโ€ฆ Extracting... - ๆญฃๅœจๆๅ–... + ๆญฃๅœจ่งฃๅฃ“็ธฎโ€ฆ Restored! - ๅทฒๆขๅพฉ๏ผ + ๅทฒ้‚„ๅŽŸ๏ผ Rebooting... - ้‡ๆ–ฐๅ•Ÿๅ‹•ไธญ... + ๆญฃๅœจ้‡ๆ–ฐๅ•Ÿๅ‹•โ€ฆ Toggle Backups - ๅˆ‡ๆ›ๅ‚™ไปฝ + ๅˆ‡ๆ›ๅ‚™ไปฝ - Manage your toggle backups. - ็ฎก็†ๆ‚จ็š„ๅˆ‡ๆ›ๅ‚™ไปฝใ€‚ + <b>Create, delete, or restore toggle backups.</b> + <b>ๅปบ็ซ‹ใ€ๅˆช้™คๆˆ–้‚„ๅŽŸๅˆ‡ๆ›ๅ‚™ไปฝใ€‚</b> - Name your toggle backup - ๅ‘ฝๅๆ‚จ็š„ๅˆ‡ๆ›ๅ‚™ไปฝ - - - A toggle backup with this name already exists. Please choose a different name. - ๅ…ทๆœ‰ๆญคๅ็จฑ็š„ๅˆ‡ๆ›ๅ‚™ไปฝๅทฒ็ถ“ๅญ˜ๅœจใ€‚่ซ‹้ธๆ“‡ๅ…ถไป–ๅ็จฑใ€‚ - - - Select a toggle backup to delete - ้ธๆ“‡่ฆๅˆช้™ค็š„ๅˆ‡ๆ›ๅ‚™ไปฝ - - - Are you sure you want to delete this toggle backup? - ๆ‚จ็ขบๅฎš่ฆๅˆช้™คๆญคๅˆ‡ๆ›ๅ‚™ไปฝๅ—Ž๏ผŸ - - - Are you sure you want to delete all toggle backups? - ๆ‚จ็ขบๅฎš่ฆๅˆช้™คๆ‰€ๆœ‰ๅˆ‡ๆ›ๅ‚™ไปฝๅ—Ž๏ผŸ - - - Select a toggle restore point - ้ธๆ“‡ไธ€ๅ€‹ๅˆ‡ๆ›้‚„ๅŽŸ้ปž - - - Are you sure you want to restore this toggle backup? - ๆ‚จ็ขบๅฎš่ฆ้‚„ๅŽŸๆญคๅˆ‡ๆ›ๅ‚™ไปฝๅ—Ž๏ผŸ + Choose a backup to delete + ้ธๆ“‡่ฆๅˆช้™ค็š„ๅ‚™ไปฝ FrogPilotDevicePanel Device Settings - ่ฃ็ฝฎ่จญๅฎš + ่ฃ็ฝฎ่จญๅฎš - Settings that control device behavior. - ๆŽงๅˆถ่จญๅ‚™่กŒ็‚บ็š„่จญๅฎšใ€‚ - - - Battery Shutdown Threshold - ้›ปๆฑ ้—œ้–‰้–พๅ€ผ - - - Automatically shut down the device when the vehicle's battery voltage reaches the set threshold preventing excessive battery drain to protect the battery. - ็•ถ่ปŠ่ผ›็š„้›ปๆฑ ้›ปๅฃ“้”ๅˆฐ่จญๅฎš็š„้–พๅ€ผๆ™‚๏ผŒ่‡ชๅ‹•้—œ้–‰่จญๅ‚™๏ผŒไปฅ้˜ฒๆญข้Žๅบฆ็š„้›ปๆฑ ๆถˆ่€—ไพ†ไฟ่ญท้›ปๆฑ ใ€‚ + <b>Settings that control how the device runs, powers off, and manages driving data.</b> + <b>ๆŽงๅˆถ่ฃ็ฝฎ้‹ไฝœใ€้—œๆฉŸ่ˆ‡้ง•้ง›่ณ‡ๆ–™็ฎก็†็š„่จญๅฎšใ€‚</b> Device Shutdown Timer - ่จญๅ‚™้—œๆฉŸ่จˆๆ™‚ๅ™จ + ่ฃ็ฝฎ้—œๆฉŸ่จˆๆ™‚ๅ™จ - How long the device stays on for after you go offroad. - ็•ถๆ‚จ้›ข้–‹้“่ทฏๅพŒ๏ผŒ่จญๅ‚™ๆœƒๆŒ็บŒ้–‹ๅ•Ÿๅคš้•ทๆ™‚้–“ใ€‚ + <b>Keep the device on for the set amount of time after a drive</b> before it shuts down automatically. + <b>ๅœจ่กŒ้ง›ๅพŒ๏ผŒๅฐ‡่ฃ็ฝฎไฟๆŒ้–‹ๅ•Ÿ้”่จญๅฎš็š„ๆ™‚้–“</b>๏ผŒไน‹ๅพŒๅฎƒๆœƒ่‡ชๅ‹•้—œๆฉŸใ€‚ - Disable Data Logging - ๅœ็”จ่ณ‡ๆ–™่จ˜้Œ„ + Disable Logging + ๅœ็”จ่จ˜้Œ„ WARNING: This will prevent your drives from being recorded and all data will be unobtainable! - ่ญฆๅ‘Š๏ผš้€™ๅฐ‡้˜ปๆญขๆ‚จ็š„้ฉ…ๅ‹•ๅ™จ่ขซ่จ˜้Œ„๏ผŒๆ‰€ๆœ‰ๆ•ธๆ“šๅฐ‡็„กๆณ•็ฒๅ–๏ผ + ่ญฆๅ‘Š๏ผš้€™ๅฐ‡้˜ปๆญข่จ˜้Œ„ๆ‚จ็š„่กŒ้ง›็ด€้Œ„๏ผŒไธ”ๆ‰€ๆœ‰่ณ‡ๆ–™ๅฐ‡็„กๆณ•ๅ–ๅพ—๏ผ - Disable all data logging to improve privacy. - ๅœ็”จๆ‰€ๆœ‰ๆ•ธๆ“š่จ˜้Œ„ไปฅๆ้ซ˜้šฑ็งใ€‚ + <b>Prevent the device from saving driving data.</b> + <b>้˜ฒๆญข่ฃ็ฝฎๅ„ฒๅญ˜้ง•้ง›ๆ•ธๆ“šใ€‚</b> - Disable Data Uploads - ๅœ็”จ่ณ‡ๆ–™ไธŠๅ‚ณ + Disable Uploads + ๅœ็”จไธŠๅ‚ณ - WARNING: This will prevent your drives from appearing on <b>comma connect</b> which may impact debugging and support! - ่ญฆๅ‘Š๏ผš้€™ๅฐ‡้˜ปๆญขๆ‚จ็š„้ฉ…ๅ‹•ๅ™จๅ‡บ็พๅœจ<b>comma connect</b>ไธŠ๏ผŒ้€™ๅฏ่ƒฝๆœƒๅฝฑ้Ÿฟ่ชฟ่ฉฆๅ’Œๆ”ฏๆŒ๏ผ + WARNING: This will prevent your drives from being uploaded to <b>comma connect</b> which will impact debugging and official support from comma! + ่ญฆๅ‘Š๏ผš้€™ๅฐ‡้˜ปๆญขไฝ ็š„้ง•้ง›่จ˜้Œ„ไธŠๅ‚ณ่‡ณ<b>comma connect</b>๏ผŒไธฆๅฝฑ้Ÿฟ comma ็š„้™ค้Œฏ่ˆ‡ๅฎ˜ๆ–นๆ”ฏๆด๏ผ - Prevent the device from sending any data to <b>comma</b>'s servers. - ้˜ฒๆญข่ฃ็ฝฎๅ‘<b>comma</b>็š„ไผบๆœๅ™จ็™ผ้€ไปปไฝ•ๆ•ธๆ“šใ€‚ + <b>Prevent the device from uploading driving data.</b> + <b>้˜ฒๆญข่ฃ็ฝฎไธŠๅ‚ณ้ง•้ง›่ณ‡ๆ–™ใ€‚</b> - Increase Thermal Safety Limit - ๆ้ซ˜็†ฑๅฎ‰ๅ…จ้™ๅˆถ + High-Quality Recording + ้ซ˜ๅ“่ณช้Œ„ๅฝฑ - WARNING: This can damage your device by exceeding safe temperature limits! - ่ญฆๅ‘Š๏ผš้€™ๅฏ่ƒฝๆœƒๅ› ่ถ…้Žๅฎ‰ๅ…จๆบซๅบฆ้™ๅˆถ่€Œๆๅฃžๆ‚จ็š„่จญๅ‚™๏ผ + <b>Save drive footage in higher video quality.</b> + <b>ไปฅๆ›ด้ซ˜็š„ๅฝฑ็‰‡ๅ“่ณชๅ„ฒๅญ˜่กŒ่ปŠๅฝฑๅƒใ€‚</b> - Allow the device to run hotter than comma recommended limit. - ๅ…่จฑ่จญๅ‚™้‹่กŒๆบซๅบฆ้ซ˜ๆ–ผๅปบ่ญฐ็š„้™ๅˆถใ€‚ + Low-Voltage Cutoff + ไฝŽ้›ปๅฃ“ๅˆ‡ๆ–ท - Use Konik's Server Instead of comma's - ไฝฟ็”จ Konik ็š„ไผบๆœๅ™จ่€Œไธๆ˜ฏ comma ็š„ไผบๆœๅ™จ + <b>While parked, if the battery voltage falls below the set level, the device shuts down</b> to prevent excessive battery drain. + <b>ๅœ่ปŠๆ™‚๏ผŒ่‹ฅ้›ปๆฑ ้›ปๅฃ“ไฝŽๆ–ผ่จญๅฎšๅ€ผ๏ผŒ่ฃ็ฝฎๅฐ‡้—œๆฉŸ</b>ไปฅ้˜ฒๆญข้Žๅบฆ่€—้›ปใ€‚ - Upload your driving data to <b>connect.konik.ai</b> instead of <b>connect.comma.ai</b>. - ๅฐ‡ๆ‚จ็š„้ง•้ง›ๆ•ธๆ“šไธŠๅ‚ณๅˆฐ<b>connect.konik.ai</b>่€Œไธๆ˜ฏ<b>connect.comma.ai</b>ใ€‚ + Raise Temperature Limits + ๆ้ซ˜ๆบซๅบฆไธŠ้™ + + + WARNING: Running at higher temperatures may damage your device! + ่ญฆๅ‘Š๏ผšๅœจ่ผƒ้ซ˜ๆบซๅบฆไธ‹้‹่กŒๅฏ่ƒฝๆœƒๆๅฃžๆ‚จ็š„่ฃ็ฝฎ๏ผ + + + <b>Allow the device to run at higher temperatures</b> before throttling or shutting down. Use only if you understand the risks! + <b>ๅœจ้™้€Ÿๆˆ–้—œๆฉŸไน‹ๅ‰ๅ…่จฑ่ฃ็ฝฎๆ–ผ่ผƒ้ซ˜ๆบซๅบฆ้‹่กŒ</b>ใ€‚ๅƒ…ๅœจไฝ ไบ†่งฃ้ขจ้šชๆ™‚ไฝฟ็”จ๏ผ + + + Use Konik Server + ไฝฟ็”จ Konik ไผบๆœๅ™จ + + + <b>Upload driving data to "connect.konik.ai" instead of "connect.comma.ai".</b> + <b>ๅฐ‡่กŒ้ง›่ณ‡ๆ–™ไธŠๅ‚ณ่‡ณใ€Œconnect.konik.aiใ€๏ผŒ่€Œ้žใ€Œconnect.comma.aiใ€ใ€‚</b> Screen Settings - ่žขๅน•่จญๅฎš + ่žขๅน•่จญๅฎš - Settings that control screen behavior. - ๆŽงๅˆถ่žขๅน•่กŒ็‚บ็š„่จญๅฎšใ€‚ + <b>Settings that control screen brightness, screen recording, and timeout duration.</b> + <b>ๆŽงๅˆถ่žขๅน•ไบฎๅบฆใ€่žขๅน•้Œ„ๅฝฑ่ˆ‡้€พๆ™‚ๆ™‚้•ท็š„่จญๅฎšใ€‚</b> Screen Brightness (Offroad) - ่žขๅน•ไบฎๅบฆ๏ผˆ่ถŠ้‡Ž๏ผ‰ + ่žขๅน•ไบฎๅบฆ๏ผˆ้›ข็ทš๏ผ‰ - The screen brightness when not driving. - ๆœช้ง•้ง›ๆ™‚็š„่žขๅน•ไบฎๅบฆใ€‚ + <b>The screen brightness while not driving.</b> + <b>ๆœช้ง•้ง›ๆ™‚็š„่žขๅน•ไบฎๅบฆใ€‚</b> Screen Brightness (Onroad) - ่žขๅน•ไบฎๅบฆ๏ผˆ่กŒ้ง›ไธญ๏ผ‰ + ่žขๅน•ไบฎๅบฆ๏ผˆ่กŒ้ง›ไธญ๏ผ‰ - The screen brightness while driving. - ้ง•้ง›ๆ™‚็š„่žขๅน•ไบฎๅบฆใ€‚ + <b>The screen brightness while driving.</b> + <b>่กŒ้ง›ๆ™‚็š„่žขๅน•ไบฎๅบฆใ€‚</b> Screen Recorder - ่žขๅน•้Œ„่ฃฝๅ™จ + ่žขๅน•้Œ„ๅฝฑๅ™จ - Enable a button in the driving screen to record the screen. - ๅœจ้ง•้ง›็•ซ้ขไธญๅ•Ÿ็”จๆŒ‰้ˆ•ไปฅ้Œ„่ฃฝ่žขๅน•ใ€‚ + <b>Add a button to the driving screen to record the display.</b> + <b>ๅœจ้ง•้ง›็•ซ้ขๆ–ฐๅขžๆŒ‰้ˆ•ไปฅ้Œ„่ฃฝ้กฏ็คบๅ…งๅฎนใ€‚</b> Screen Timeout (Offroad) - ่žขๅน•่ถ…ๆ™‚๏ผˆ่ถŠ้‡Ž๏ผ‰ + ่žขๅน•้€พๆ™‚๏ผˆ้›ข็ทš๏ผ‰ - How long it takes for the screen to turn off when not driving. - ็•ถไธ้ง•้ง›ๆ™‚๏ผŒ่žขๅน•้œ€่ฆๅคš้•ทๆ™‚้–“ๆ‰ๆœƒ้—œ้–‰ใ€‚ + <b>How long the screen stays on after being tapped while not driving.</b> + <b>ๆœช้ง•้ง›ๆ™‚๏ผŒ้ปžๆ“ŠๅพŒ่žขๅน•ไฟๆŒไบฎ่ตท็š„ๆ™‚้–“ใ€‚</b> Screen Timeout (Onroad) - ่žขๅน•่ถ…ๆ™‚๏ผˆ่กŒ้ง›ไธญ๏ผ‰ + ่žขๅน•้€พๆ™‚๏ผˆ่กŒ้ง›ไธญ๏ผ‰ - How long it takes for the screen to turn off while driving. - ้ง•้ง›ๆ™‚่žขๅน•้—œ้–‰้œ€่ฆๅคš้•ทๆ™‚้–“ใ€‚ + <b>How long the screen stays on after being tapped while driving.</b> + <b>้ง•้ง›ๆ™‚้ปžๆŒ‰ๅพŒ่žขๅน•ไฟๆŒไบฎ่ตท็š„ๆ™‚้–“้•ทๅบฆใ€‚</b> + + + Standby Mode + ๅพ…ๅ‘ฝๆจกๅผ + + + <b>Turn the screen off while driving and automatically wake it up for alerts or engagement state changes.</b> + <b>ๅœจ้ง•้ง›ๆ™‚้—œ้–‰่žขๅน•๏ผŒไธฆๅœจๆœ‰่ญฆ็คบๆˆ–ๅ•Ÿ็”จ็‹€ๆ…‹่ฎŠๆ›ดๆ™‚่‡ชๅ‹•ๅ–š้†’ใ€‚</b> 5 mins - 5 ๅˆ†้˜ + 5 ๅˆ†้˜ mins - ๅˆ†้˜ + ๅˆ†้˜ hour - ๅฐๆ™‚ + ๅฐๆ™‚ hours - ๅฐๆ™‚ + ๅฐๆ™‚ - Only Disable While Onroad - ๅƒ…ๅœจ่กŒ้ง›ๆ™‚็ฆ็”จ + Disable Onroad Only + ๅƒ…ๅœ็”จ่กŒ้ง›ไธญ volts - ไผ็‰น + ไผ็‰น Screen Off - ่žขๅน•้—œ้–‰ + ้—œ้–‰่žขๅน• Auto - ่‡ชๅ‹• + ่‡ชๅ‹• Start Recording - ้–‹ๅง‹้Œ„้Ÿณ + ้–‹ๅง‹้Œ„่ฃฝ Stop Recording - ๅœๆญข้Œ„้Ÿณ + ๅœๆญข้Œ„่ฃฝ seconds - ็ง’ - - - High Bitrate Recording - ้ซ˜ๆฏ”็‰น็އ้Œ„้Ÿณ - - - Record driving footage at double the standard bitrate for improved video quality in driving logs. - ๅœจ่กŒ่ปŠ่จ˜้Œ„ไธญไปฅๆจ™ๆบ–ๆฏ”็‰น็އ็š„ๅ…ฉๅ€้Œ„่ฃฝ่กŒ่ปŠๅฝฑๅƒ๏ผŒไปฅๆ้ซ˜่ฆ–้ ป่ณช้‡ใ€‚ + ็ง’ FrogPilotLateralPanel Advanced Lateral Tuning - ้€ฒ้šŽๆฉซๅ‘่ชฟๆ•ด + ้€ฒ้šŽๆฉซๅ‘่ชฟๆ ก - Advanced settings for fine-tuning openpilot's lateral controls. - ้€ฒ้šŽ่จญๅฎšไปฅๅพฎ่ชฟopenpilot็š„ๆฉซๅ‘ๆŽงๅˆถใ€‚ + <b>Advanced steering control changes to fine-tune how openpilot drives.</b> + <b>้€ฒ้šŽ่ฝ‰ๅ‘ๆŽงๅˆถ่ฎŠๆ›ด๏ผŒๅฏๅพฎ่ชฟ openpilot ็š„้ง•้ง›ๆ–นๅผใ€‚</b> Actuator Delay (Default: %1) - ่‡ดๅ‹•ๅ™จๅปถ้ฒ๏ผˆ้ ่จญ๏ผš%1๏ผ‰ + ่‡ดๅ‹•ๅ™จๅปถ้ฒ๏ผˆ้ ่จญ๏ผš%1๏ผ‰ Actuator Delay - ่‡ดๅ‹•ๅ™จๅปถ้ฒ + ่‡ดๅ‹•ๅ™จๅปถ้ฒ - How long the steering wheel takes to respond to commands. Higher values account for slower steering; lower values for quicker response. - ๆ–นๅ‘็›คๅฐๆŒ‡ไปค็š„ๅๆ‡‰ๆ™‚้–“ใ€‚่ผƒ้ซ˜็š„ๅ€ผ่กจ็คบ่ฝ‰ๅ‘่ผƒๆ…ข๏ผ›่ผƒไฝŽ็š„ๅ€ผ่กจ็คบๅๆ‡‰่ผƒๅฟซใ€‚ + <b>The time between openpilot's steering command and the vehicle's response.</b> Increase if the vehicle reacts late; decrease if it feels jumpy. Auto-learned by default. + <b>openpilot ็š„่ฝ‰ๅ‘ๆŒ‡ไปค่ˆ‡่ปŠ่ผ›ๅๆ‡‰ไน‹้–“็š„ๆ™‚้–“ใ€‚</b> ่‹ฅ่ปŠ่ผ›ๅๆ‡‰ๅๆ™šๅ‰‡ๅขžๅŠ ๏ผ›่‹ฅๆ„Ÿ่ฆบ่ทณๅ‹•ๅ‰‡ๆธ›ๅฐ‘ใ€‚้ ่จญ็‚บ่‡ชๅ‹•ๅญธ็ฟ’ใ€‚ Friction (Default: %1) - ๆ‘ฉๆ“ฆๅŠ›๏ผˆ้ ่จญ๏ผš%1๏ผ‰ + ๆ‘ฉๆ“ฆ๏ผˆ้ ่จญ๏ผš%1๏ผ‰ Friction - ๆ‘ฉๆ“ฆ + ๆ‘ฉๆ“ฆ - Adjust steering resistance. Higher values feel more stable but heavier; lower values feel lighter but more sensitive. - ่ชฟๆ•ด่ฝ‰ๅ‘้˜ปๅŠ›ใ€‚่ผƒ้ซ˜็š„ๅ€ผๆ„Ÿ่ฆบๆ›ด็ฉฉๅฎšไฝ†่ผƒ้‡๏ผ›่ผƒไฝŽ็š„ๅ€ผๆ„Ÿ่ฆบ่ผƒ่ผ•ไฝ†ๆ›ดๆ•ๆ„Ÿใ€‚ + <b>Compensates for steering friction.</b> Increase if the wheel sticks near center; decrease if it jitters. Auto-learned by default. + <b>่ฃœๅ„Ÿ่ฝ‰ๅ‘ๆ‘ฉๆ“ฆใ€‚</b> ่‹ฅๆ–นๅ‘็›คๅœจไธญ้–“้™„่ฟ‘ๅกๆปฏ่ซ‹ๆ้ซ˜๏ผ›่‹ฅๆŠ–ๅ‹•่ซ‹้™ไฝŽใ€‚้ ่จญ่‡ชๅ‹•ๅญธ็ฟ’ใ€‚ Kp Factor (Default: %1) - Kp ๅ› ๅญ๏ผˆ้ ่จญ๏ผš%1๏ผ‰ + Kp ๅ› ๅญ๏ผˆ้ ่จญ๏ผš%1๏ผ‰ Kp Factor - Kp ๅ› ๅญ + Kp ๅ› ๅญ - How aggressively openpilot corrects steering. Higher values respond faster but may feel jerky; lower values are smoother but slower. - openpilot ไฟฎๆญฃ่ฝ‰ๅ‘็š„็ฉๆฅต็จ‹ๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๅๆ‡‰ๆ›ดๅฟซ๏ผŒไฝ†ๅฏ่ƒฝๆ„Ÿ่ฆบไธ็ฉฉ๏ผ›่ผƒไฝŽ็š„ๅ€ผ่ผƒๅนณ็ฉฉไฝ†่ผƒๆ…ขใ€‚ + <b>How strongly openpilot corrects lane position.</b> Higher is tighter but twitchier; lower is smoother but slower. Auto-learned by default. + <b>openpilot ไฟฎๆญฃ่ปŠ้“ไฝ็ฝฎ็š„ๅŠ›ๅบฆใ€‚</b>ๆ•ธๅ€ผ่ถŠ้ซ˜่ถŠ็ทŠไฝ†ๆ›ด็ฅž็ถ“่ณช๏ผ›ๆ•ธๅ€ผ่ถŠไฝŽ่ถŠๅนณ้ †ไฝ†่ผƒๆ…ขใ€‚้ ่จญ็‚บ่‡ชๅ‹•ๅญธ็ฟ’ใ€‚ - Lateral Accel (Default: %1) - ๆฉซๅ‘ๅŠ ้€Ÿๅบฆ๏ผˆ้ ่จญๅ€ผ๏ผš%1๏ผ‰ + Lateral Acceleration (Default: %1) + ๆฉซๅ‘ๅŠ ้€Ÿๅบฆ๏ผˆ้ ่จญ๏ผš%1๏ผ‰ - Lateral Accel - ๆฉซๅ‘ๅŠ ้€Ÿๅบฆ + Lateral Acceleration + ๆฉซๅ‘ๅŠ ้€Ÿๅบฆ - How quickly openpilot makes lateral adjustments. Higher values allow sharper turns; lower values provide smoother steering. - openpilot้€ฒ่กŒๆฉซๅ‘่ชฟๆ•ด็š„้€Ÿๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๅ…่จฑๆ›ดๆ€ฅ็š„่ฝ‰ๅฝŽ๏ผ›่ผƒไฝŽ็š„ๅ€ผๆไพ›ๆ›ดๅนณ็ฉฉ็š„่ฝ‰ๅ‘ใ€‚ + <b>Maps steering torque to turning response.</b> Increase for sharper turns; decrease for gentler steering. Auto-learned by default. + <b>ๅฐ‡่ฝ‰ๅ‘ๆ‰ญ็Ÿฉๅฐๆ‡‰ๅˆฐ่ฝ‰ๅ‘ๅๆ‡‰ใ€‚</b> ๅขžๅŠ ไปฅ็ฒๅพ—่ผƒ้Šณๅˆฉ็š„่ฝ‰ๅฝŽ๏ผ›ๆธ›ๅฐ‘ไปฅ็ฒๅพ—่ผƒๅนณ้ †็š„่ฝ‰ๅ‘ใ€‚้ ่จญ็‚บ่‡ชๅ‹•ๅญธ็ฟ’ใ€‚ Steer Ratio (Default: %1) - ่ฝ‰ๅ‘ๆฏ”๏ผˆ้ ่จญ๏ผš%1๏ผ‰ + ่ฝ‰ๅ‘ๆฏ”๏ผˆ้ ่จญ๏ผš%1๏ผ‰ Steer Ratio - ่ฝ‰ๅ‘ๆฏ”็އ + ่ฝ‰ๅ‘ๆฏ” - How much the steering wheel turns in response to commands. Higher values feel more stable; lower values feel quicker. - ๆ–นๅ‘็›คๅฐๆŒ‡ไปค็š„ๅๆ‡‰่ฝ‰ๅ‹•้‡ใ€‚่ผƒ้ซ˜็š„ๆ•ธๅ€ผๆ„Ÿ่ฆบๆ›ด็ฉฉๅฎš๏ผ›่ผƒไฝŽ็š„ๆ•ธๅ€ผๆ„Ÿ่ฆบๆ›ดๅฟซ้€Ÿใ€‚ + <b>The relationship between steering wheel rotation and road wheel angle.</b> Increase if steering feels too quick or twitchy; decrease if it feels too slow or weak. Auto-learned by default. + <b>ๆ–นๅ‘็›ค่ฝ‰ๅ‹•่ˆ‡่ทฏ่ผช่ฝ‰่ง’ไน‹้–“็š„้—œไฟ‚ใ€‚</b> ่‹ฅ่ฝ‰ๅ‘ๆ„Ÿ่ฆบ้Žๅฟซๆˆ–็ฅž็ถ“่ณช๏ผŒ่ซ‹ๅขžๅŠ ๏ผ›่‹ฅๆ„Ÿ่ฆบ้Žๆ…ขๆˆ–ไนๅŠ›๏ผŒ่ซ‹ๆธ›ๅฐ‘ใ€‚้ ่จญ็‚บ่‡ชๅ‹•ๅญธ็ฟ’ใ€‚ - Force Auto Tune On - ๅผทๅˆถ่‡ชๅ‹•่ชฟ่ซง้–‹ๅ•Ÿ + Force Auto-Tune On + ๅผทๅˆถ้–‹ๅ•Ÿ่‡ชๅ‹•่ชฟๆ ก - Force-enable commaโ€™s auto lateral tuning. - ๅผทๅˆถๅ•Ÿ็”จ้€—่™Ÿ็š„่‡ชๅ‹•ๆฉซๅ‘่ชฟๆ•ดใ€‚ + <b>Force-enable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration".</b> + <b>ๅผทๅˆถๅ•Ÿ็”จ openpilot ็š„ใ€Œๆ‘ฉๆ“ฆใ€่ˆ‡ใ€Œๆฉซๅ‘ๅŠ ้€Ÿๅบฆใ€ๅณๆ™‚่‡ชๅ‹•่ชฟๆ กใ€‚</b> - Force Auto Tune Off - ๅผทๅˆถ่‡ชๅ‹•่ชฟ่ซง้—œ้–‰ + Force Auto-Tune Off + ๅผทๅˆถ้—œ้–‰่‡ชๅ‹•่ชฟๆ ก - Force-disable commaโ€™s auto lateral tuning. - ๅผทๅˆถ็ฆ็”จ้€—่™Ÿ็š„่‡ชๅ‹•ๆฉซๅ‘่ชฟๆ•ดใ€‚ + <b>Force-disable openpilot's live auto-tuning for "Friction" and "Lateral Acceleration" and use the set value instead.</b> + <b>ๅผทๅˆถๅœ็”จ openpilot ็š„ใ€Œๆ‘ฉๆ“ฆใ€่ˆ‡ใ€Œๅดๅ‘ๅŠ ้€Ÿๅบฆใ€ๅณๆ™‚่‡ชๅ‹•่ชฟๆ ก๏ผŒๆ”น็”จ่จญๅฎš็š„ๆ•ธๅ€ผใ€‚</b> - Always on Lateral - ๅง‹็ต‚ไฟๆŒๆฉซๅ‘ + Force Torque Controller + ๅŠ›็ŸฉๆŽงๅˆถๅ™จ - openpilot's steering control stays active even when the brake or gas pedals are pressed.<br><br>Deactivation only occurs with the <b>Cruise Control</b> button. - Translation B + <b>Use torque-based steering control instead of angle-based control for smoother lane keeping, especially in curves.</b> + <b>ไฝฟ็”จๅŸบๆ–ผๆ‰ญ็Ÿฉ็š„่ฝ‰ๅ‘ๆŽงๅˆถๅ–ไปฃๅŸบๆ–ผ่ง’ๅบฆ็š„ๆŽงๅˆถ๏ผŒไปฅๅฏฆ็พๆ›ดๅนณ้ †็š„่ปŠ้“็ถญๆŒ๏ผŒๅฐคๅ…ถๅœจ่ฝ‰ๅฝŽๆ™‚ใ€‚</b> + + + Always On Lateral + ๅง‹็ต‚ๅ•Ÿ็”จๆฉซๅ‘ๆŽงๅˆถ + + + <b>openpilot's steering remains active even when the accelerator or brake pedals are pressed.</b> + <b>ๅณไฝฟ่ธฉไธ‹ๅŠ ้€Ÿ่ธๆฟๆˆ–็…ž่ปŠ่ธๆฟ๏ผŒopenpilot ็š„่ฝ‰ๅ‘ไปๆœƒไฟๆŒๅ•Ÿ็”จใ€‚</b> Enable With Cruise Control - ๅ•Ÿ็”จๅทก่ˆชๆŽงๅˆถ + ๅ•Ÿ็”จ่ˆ‡ๅฎš้€Ÿๅทก่ˆชไธ€่ตทไฝฟ็”จ - Allow <b>Always on Lateral</b> to be active whenever <b>Cruise Control</b> is active, bypassing the need to enable openpilot first. - ๅ…่จฑ<b>Always on Lateral</b>ๅœจ<b>Cruise Control</b>ๅ•Ÿๅ‹•ๆ™‚ๅง‹็ต‚่™•ๆ–ผๆดปๅ‹•็‹€ๆ…‹๏ผŒ็„ก้œ€ๅ…ˆๅ•Ÿ็”จopenpilotใ€‚ + <b>Enable "Always On Lateral" whenever "Cruise Control" is on, even when openpilot is not engaged.</b> + <b>ๅœจใ€ŒCruise Controlใ€้–‹ๅ•Ÿๆ™‚๏ผŒ็„ก่ซ– openpilot ๆ˜ฏๅฆๅ•Ÿๅ‹•๏ผŒ็š†ๅ•Ÿ็”จใ€ŒAlways On Lateralใ€ใ€‚</b> - Enable With LKAS Button - ๅ•Ÿ็”จ LKAS ๆŒ‰้ˆ• + Enable With LKAS + ๅ•Ÿ็”จ่ˆ‡ LKAS ้…ๅˆ - Allow <b>Always on Lateral</b> to be active whenever <b>LKAS</b> is active, bypassing the need to enable openpilot first. - ๅ…่จฑ<b>Always on Lateral</b>ๅœจ<b>LKAS</b>ๅ•Ÿ็”จๆ™‚ๅง‹็ต‚่™•ๆ–ผๆดปๅ‹•็‹€ๆ…‹๏ผŒ็„ก้œ€ๅ…ˆๅ•Ÿ็”จopenpilotใ€‚ + <b>Enable "Always On Lateral" whenever "LKAS" is on, even when openpilot is not engaged.</b> + <b>ๅœจ openpilot ๆœชๅ•Ÿ็”จๆ™‚๏ผŒๅช่ฆใ€ŒLKASใ€้–‹ๅ•Ÿ๏ผŒไบฆๅ•Ÿ็”จใ€ŒAlways On Lateralใ€ใ€‚</b> - Pause on Brake Below - ๅœจไธ‹ๆ–นๅ‰Ž่ปŠๆ™‚ๆšซๅœ + Pause on Brake Press Below + ็…ž่ปŠ่ธฉไธ‹ๆ™‚ๆšซๅœ๏ผˆไฝŽๆ–ผ๏ผ‰ - Temporarily pause <b>Always on Lateral</b> below the set speed when braking. - ๅœจๅ‰Ž่ปŠๆ™‚๏ผŒๆ–ผ่จญๅฎš้€Ÿๅบฆไปฅไธ‹ๆšซๅœ<b>ๅดๅ‘ๆ†ๅฎš</b>ใ€‚ + <b>Pause "Always On Lateral" below the set speed while the brake pedal is pressed.</b> + <b>็•ถๆŒ‰ไธ‹็…ž่ปŠ่ธๆฟๆ™‚๏ผŒๅœจ่จญๅฎš้€Ÿๅบฆไปฅไธ‹ๆšซๅœใ€ŒAlways On Lateralใ€ใ€‚</b> Lane Changes - ่ปŠ้“่ฎŠๆ›ด + ่ฎŠๆ›่ปŠ้“ - Customize how openpilot performs lane changes. - ่‡ช่จ‚ openpilot ๅŸท่กŒ่ฎŠๆ›่ปŠ้“็š„ๆ–นๅผใ€‚ + <b>Allow openpilot to change lanes.</b> + <b>ๅ…่จฑ openpilot ่ฎŠๆ›่ปŠ้“ใ€‚</b> Automatic Lane Changes - ่‡ชๅ‹•่ฎŠๆ›่ปŠ้“ + ่‡ชๅ‹•่ฎŠๆ›่ปŠ้“ - Change lanes automatically when the turn signal is on. No steering input needed! - ็•ถ่ฝ‰ๅ‘็‡ˆ้–‹ๅ•Ÿๆ™‚่‡ชๅ‹•่ฎŠๆ›่ปŠ้“ใ€‚็„ก้œ€่ฝ‰ๅ‘ๆ“ไฝœ๏ผ + <b>When the turn signal is on, openpilot will automatically change lanes.</b> No steering-wheel nudge required! + <b>็•ถๆ–นๅ‘็‡ˆ้–‹ๅ•Ÿๆ™‚๏ผŒopenpilot ๆœƒ่‡ชๅ‹•่ฎŠๆ›่ปŠ้“ใ€‚</b> ็„ก้œ€่ผ•ๆŽจๆ–นๅ‘็›ค๏ผ Lane Change Delay - ่ปŠ้“่ฎŠๆ›ดๅปถ้ฒ + ่ฎŠๆ›่ปŠ้“ๅปถ้ฒ - Delay automatic lane changes by the set amount of time. - ๅฐ‡่‡ชๅ‹•่ฎŠๆ›่ปŠ้“ๅปถ้ฒ่จญๅฎš็š„ๆ™‚้–“ใ€‚ + <b>Delay between turn signal activation and the start of an automatic lane change.</b> + <b>ๆ–นๅ‘็‡ˆๅ•Ÿ็”จ่ˆ‡่‡ชๅ‹•่ฎŠ้“้–‹ๅง‹ไน‹้–“็š„ๅปถ้ฒใ€‚</b> Minimum Lane Change Speed - ๆœ€ไฝŽๆ›้“้€Ÿๅบฆ + ๆœ€ไฝŽ่ฎŠๆ›่ปŠ้“้€Ÿๅบฆ - Minimum speed required for openpilot to perform a lane change. - openpilotๅŸท่กŒ่ฎŠ้“ๆ‰€้œ€็š„ๆœ€ไฝŽ้€Ÿๅบฆใ€‚ + <b>Lowest speed at which openpilot will change lanes.</b> + <b>openpilot ๆœƒ่ฎŠๆ›่ปŠ้“็š„ๆœ€ไฝŽ้€Ÿๅบฆใ€‚</b> Minimum Lane Width - ๆœ€ๅฐ่ปŠ้“ๅฏฌๅบฆ + ๆœ€ๅฐ่ปŠ้“ๅฏฌๅบฆ - openpilot won't initiate a lane change into a lane narrower than this width. - openpilot ไธๆœƒๅœจ่ปŠ้“ๅฏฌๅบฆๅฐๆ–ผๆญคๅฏฌๅบฆๆ™‚ๅ•Ÿๅ‹•่ฎŠ้“ใ€‚ + <b>Prevent automatic lane changes into lanes narrower than the set width.</b> + <b>้˜ฒๆญข่‡ชๅ‹•่ฎŠๆ›่‡ณๅฏฌๅบฆๅฐๆ–ผ่จญๅฎšๅ€ผ็š„่ปŠ้“ใ€‚</b> One Lane Change Per Signal - ๆฏๆฌกไฟก่™Ÿๅƒ…่ฎŠๆ›ไธ€ๆข่ปŠ้“ + ๆฏๆฌกๆ‰“็‡ˆๅƒ…่ฎŠๆ›ไธ€่ปŠ้“ - Limit lane changes to one per turn signal activation. - ๆฏๆฌกๅ•Ÿๅ‹•่ฝ‰ๅ‘็‡ˆๆ™‚้™ๅˆถ่ปŠ้“่ฎŠๆ›ด็‚บไธ€ๆฌกใ€‚ + <b>Limit automatic lane changes to one per turn-signal activation.</b> + <b>ๅฐ‡่‡ชๅ‹•่ฎŠๆ›่ปŠ้“้™ๅˆถ็‚บๆฏๆฌกๆ–นๅ‘็‡ˆๅ•Ÿๅ‹•ๅƒ…ไธ€ๆฌกใ€‚</b> Lateral Tuning - ๆฉซๅ‘่ชฟๆ•ด + ๆฉซๅ‘่ชฟๆ ก - Settings for fine-tuning openpilot's lateral controls. - ็”จๆ–ผๅพฎ่ชฟ openpilot ๆฉซๅ‘ๆŽงๅˆถ็š„่จญ็ฝฎใ€‚ + <b>Miscellaneous steering control changes</b> to fine-tune how openpilot drives. + <b>ๅ…ถไป–่ฝ‰ๅ‘ๆŽงๅˆถ่ฎŠๆ›ด</b>ไปฅๅพฎ่ชฟ openpilot ็š„้ง•้ง›ๆ–นๅผใ€‚ Force Turn Desires Below Lane Change Speed - ๅผทๅˆถๅฐ‡ๆ…พๆœ›่ฝ‰ๅ‘ไฝŽๆ–ผ่ฎŠ้“้€Ÿๅบฆ + ๅœจ่ฎŠๆ›่ปŠ้“้€Ÿๅบฆไปฅไธ‹ๅผทๅˆถ่ฝ‰ๅ‘ๆ„ๅœ– - Force turn desires below the minimum lane change speed to improve turning accuracy. - ๅผทๅˆถๅฐ‡ๆฌฒๆœ›่ฝ‰ๅ‘ไฝŽๆ–ผๆœ€ไฝŽๆ›้“้€Ÿๅบฆ๏ผŒไปฅๆ้ซ˜่ฝ‰ๅ‘็ฒพๅบฆใ€‚ - - - Neural Network Feedforward (NNFF) - ็ฅž็ถ“็ถฒ่ทฏๅ‰้ฅ‹ (NNFF) - - - Use <b>Twilsoncoโ€™s</b> <b>Neural Network FeedForward</b> model for smoother, model-based steering trained on your vehicle's data. - Translation B - - - Smooth Curve Handling - ๅนณๆป‘ๆ›ฒ็ทš่™•็† - - - Use <b>Twilsoncoโ€™s</b> torque-based adjustments to smooth out steering during curves. - ไฝฟ็”จ<b>Twilsonco</b>็š„ๆ‰ญ็Ÿฉ่ชฟๆ•ดไพ†ๅนณๆป‘ๆ›ฒ็ทšไธญ็š„่ฝ‰ๅ‘ใ€‚ + <b>While driving below the minimum lane change speed with an active turn signal, instruct openpilot to turn left/right.</b> + <b>ๅœจ่ปŠ้€ŸไฝŽๆ–ผ่ฎŠๆ›่ปŠ้“ๆœ€ไฝŽ้€Ÿๅบฆไธ”ๆ–นๅ‘็‡ˆ้–‹ๅ•Ÿๆ™‚๏ผŒๆŒ‡็คบ openpilot ๅ‘ๅทฆ/ๅ‘ๅณ่ฝ‰ๅ‘ใ€‚</b> Quality of Life - ็”Ÿๆดปๅ“่ณช + ็”Ÿๆดปๅ“่ณช - Miscellaneous features to improve the steering experience. - ๅ„็จฎๅŠŸ่ƒฝไปฅๆ”นๅ–„ๆ“ๆŽง้ซ”้ฉ—ใ€‚ + <b>Steering control changes to fine-tune how openpilot drives.</b> + <b>่ฝ‰ๅ‘ๆŽงๅˆถ่ฎŠๆ›ดๅฏๅพฎ่ชฟ openpilot ็š„้ง•้ง›ๆ–นๅผใ€‚</b> Pause Steering Below - ๆšซๅœไธ‹ๆ–น่ฝ‰ๅ‘ + ๆ–นๅ‘็›ค่ผ”ๅŠฉๅœจไปฅไธ‹ๆƒ…ๆณๆšซๅœ - Temporarily pause steering control below the set speed. - ๅœจ่จญๅฎš้€Ÿๅบฆไปฅไธ‹ๆšซๆ™‚ๆšซๅœ่ฝ‰ๅ‘ๆŽงๅˆถใ€‚ + <b>Pause steering below the set speed.</b> + <b>ๅœจ่จญๅฎš้€Ÿๅบฆไปฅไธ‹ๆšซๅœ่ฝ‰ๅ‘ใ€‚</b> Instant - ๅณๆ™‚ + ๅณๆ™‚ second - ็ฌฌไบŒ + ็ง’ seconds - ็ง’ - - - Are you sure you want to completely reset your <b>Actuator Delay</b>? - ๆ‚จ็ขบๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎๆ‚จ็š„<b>่‡ดๅ‹•ๅ™จๅปถ้ฒ</b>ๅ—Ž๏ผŸ - - - Are you sure you want to completely reset your <b>Friction</b>? - ๆ‚จ็ขบๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎๆ‚จ็š„<b>Friction</b>ๅ—Ž๏ผŸ - - - Are you sure you want to completely reset your <b>Kp Factor</b>? - ๆ‚จ็ขบๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎๆ‚จ็š„<b>Kp Factor</b>ๅ—Ž๏ผŸ - - - Are you sure you want to completely reset your <b>Lateral Accel</b>? - ๆ‚จ็ขบๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎๆ‚จ็š„<b>Lateral Accel</b>ๅ—Ž๏ผŸ - - - Are you sure you want to completely reset your <b>Steer Ratio</b>? - ๆ‚จ็ขบๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎๆ‚จ็š„<b>่ฝ‰ๅ‘ๆฏ”</b>ๅ—Ž๏ผŸ - - - Off - ้—œ้–‰ - - - foot - ่…ณ - - - feet - ่‹ฑๅฐบ - - - mph - mph - - - meter - ็ฑณ - - - meters - ็ฑณ - - - km/h - km/h + ็ง’ Turn Signal Only - ๅƒ…้™่ฝ‰ๅ‘็‡ˆ + ๅƒ…่ฝ‰ๅ‘็‡ˆ + + + Reset <b>Actuator Delay</b> to its default value? + ๅฐ‡<b>่‡ดๅ‹•ๅ™จๅปถ้ฒ</b>้‡่จญ็‚บ้ ่จญๅ€ผ๏ผŸ + + + Reset <b>Friction</b> to its default value? + ๅฐ‡<b>ๆ‘ฉๆ“ฆ</b>้‡่จญ็‚บ้ ่จญๅ€ผ๏ผŸ + + + Reset <b>Kp Factor</b> to its default value? + ๅฐ‡<b>Kp ๅ› ๅญ</b>้‡่จญ็‚บ้ ่จญๅ€ผ๏ผŸ + + + Reset <b>Lateral Accel</b> to its default value? + ๅฐ‡<b>ๆฉซๅ‘ๅŠ ้€Ÿๅบฆ</b>้‡่จญ็‚บ้ ่จญๅ€ผ๏ผŸ + + + Reset <b>Steer Ratio</b> to its default value? + ๅฐ‡<b>่ฝ‰ๅ‘ๆฏ”</b>้‡่จญ็‚บ้ ่จญๅ€ผ๏ผŸ + + + Lateral Accel (Default: %1) + ๆฉซๅ‘ๅŠ ้€Ÿๅบฆ๏ผˆ้ ่จญ๏ผš%1๏ผ‰ + + + Off + ้—œ้–‰ + + + foot + ่‹ฑๅฐบ + + + feet + ่‹ฑๅฐบ + + + mph + ่‹ฑ้‡Œ/ๅฐๆ™‚ + + + meter + ๅ…ฌๅฐบ + + + meters + ๅ…ฌๅฐบ + + + km/h + ๅ…ฌ้‡Œ/ๅฐๆ™‚ + + + Neural Network Feedforward (NNFF) + ้กž็ฅž็ถ“็ถฒ่ทฏๅ‰้ฅ‹๏ผˆNNFF๏ผ‰ + + + <b>Twilsonco's "Neural Network FeedForward" model controller for smoother, model-based steering trained on your vehicle's data.</b> + <b>Twilsonco ็š„ใ€ŒNeural Network FeedForwardใ€ๆจกๅž‹ๆŽงๅˆถๅ™จ๏ผŒไฝฟ็”จไปฅๆ‚จ่ปŠ่ผ›ๆ•ธๆ“š่จ“็ทด็š„ๆจกๅž‹๏ผŒๆไพ›ๆ›ดๅนณ้ †็š„ๆจกๅž‹ๅผ่ฝ‰ๅ‘ใ€‚</b> + + + Smooth Curve Handling + ๅนณ้ †ๅฝŽ้“่™•็† + + + <b>Twilsonco's torque-based adjustments to smoothen out steering in curves.</b> + <b>Twilsonco ็š„ๆ‰ญๅŠ›ๅผ่ชฟๆ•ด๏ผŒๅฏๅœจ่ฝ‰ๅฝŽๆ™‚่ฎ“่ฝ‰ๅ‘ๆ›ดๅนณ้ †ใ€‚</b> FrogPilotLongitudinalPanel - - Conditional Experimental Mode - ๆขไปถๅฏฆ้ฉ—ๆจกๅผ - - - Automatically switch to <b>Experimental Mode</b> when set conditions are met. - ็•ถ่จญๅฎšๆขไปถๆปฟ่ถณๆ™‚๏ผŒ่‡ชๅ‹•ๅˆ‡ๆ›ๅˆฐ<b>ๅฏฆ้ฉ—ๆจกๅผ</b>ใ€‚ - - - Below - ไธ‹้ข - - - Switch to <b>Experimental Mode</b> when driving below this speed. - ็•ถ่กŒ้ง›้€ŸๅบฆไฝŽๆ–ผๆญค้€Ÿๅบฆๆ™‚๏ผŒๅˆ‡ๆ›ๅˆฐ<b>ๅฏฆ้ฉ—ๆจกๅผ</b>ใ€‚ - - - Curve Detected Ahead - ๅ‰ๆ–น็™ผ็พๅฝŽ้“ - - - Switch to <b>Experimental Mode</b> when a curve is detected ahead. Useful for letting the model choose the appropriate speed for the curve. - ็•ถๅ‰ๆ–นๅตๆธฌๅˆฐๅฝŽ้“ๆ™‚๏ผŒๅˆ‡ๆ›ๅˆฐ<b>ๅฏฆ้ฉ—ๆจกๅผ</b>ใ€‚้€™ๆœ‰ๅŠฉๆ–ผ่ฎ“ๆจกๅž‹้ธๆ“‡้ฉๅˆๅฝŽ้“็š„้€Ÿๅบฆใ€‚ - - - Lead Detected Ahead - ๅ‰ๆ–นๆชขๆธฌๅˆฐ้‰› - - - Switch to <b>Experimental Mode</b> when a slower or stopped vehicle is detected ahead. Can improve braking smoothness and reliability on some vehicles. - ็•ถๅ‰ๆ–นๆชขๆธฌๅˆฐ่ผƒๆ…ขๆˆ–ๅœๆญข็š„่ปŠ่ผ›ๆ™‚๏ผŒๅˆ‡ๆ›ๅˆฐ<b>ๅฏฆ้ฉ—ๆจกๅผ</b>ใ€‚ๅฏไปฅๆ้ซ˜ๆŸไบ›่ปŠ่ผ›็š„ๅˆถๅ‹•ๅนณ็ฉฉๆ€งๅ’Œๅฏ้ ๆ€งใ€‚ - - - Navigation Data - ๅฐŽ่ˆชๆ•ธๆ“š - - - Switch to <b>Experimental Mode</b> when approaching intersections or turns on the active route while using <b>Navigate on openpilot (NOO)</b>. Useful for letting the model choose the appropriate speed for upcoming navigation maneuvers. - ๅœจไฝฟ็”จ<b>openpilotๅฐŽ่ˆช (NOO)</b>ๆ™‚๏ผŒๆŽฅ่ฟ‘ไบคๅ‰่ทฏๅฃๆˆ–่ฝ‰ๅฝŽ่™•ๆ™‚ๅˆ‡ๆ›ๅˆฐ<b>ๅฏฆ้ฉ—ๆจกๅผ</b>ใ€‚้€™ๅฐๆ–ผ่ฎ“ๆจกๅž‹้ธๆ“‡ๅณๅฐ‡ๅˆฐไพ†็š„ๅฐŽ่ˆชๆ“ไฝœ็š„้ฉ็•ถ้€Ÿๅบฆๅพˆๆœ‰็”จใ€‚ - - - openpilot Wants to Stop In - openpilot ๆƒณ่ฆๅœๆญข้€ฒๅ…ฅ - - - Switch to <b>Experimental Mode</b> when openpilot wants to stop within the set amount of time. This is typically triggered by the driving model "detecting" a red light or stop sign. - ็•ถ openpilot ๆƒณ่ฆๅœจ่จญๅฎš็š„ๆ™‚้–“ๅ…งๅœๆญขๆ™‚๏ผŒๅˆ‡ๆ›ๅˆฐ<b>ๅฏฆ้ฉ—ๆจกๅผ</b>ใ€‚้€™้€šๅธธๆ˜ฏ็”ฑ้ง•้ง›ๆจกๅž‹ใ€Œๆชขๆธฌๅˆฐใ€็ด…็‡ˆๆˆ–ๅœๆญขๆจ™่ชŒ่งธ็™ผ็š„ใ€‚ - - - Turn Signal Below - ่ฝ‰ๅ‘็‡ˆไธ‹ๆ–น - - - Switch to <b>Experimental Mode</b> when using a turn signal below the set speed. Useful for letting the model choose the appropriate speed for upcoming left or right turns. - ็•ถไฝฟ็”จ่ฝ‰ๅ‘็‡ˆไธ”ไฝŽๆ–ผ่จญๅฎš้€Ÿๅบฆๆ™‚๏ผŒๅˆ‡ๆ›ๅˆฐ<b>ๅฏฆ้ฉ—ๆจกๅผ</b>ใ€‚้€™ๅฐๆ–ผ่ฎ“ๆจกๅž‹้ธๆ“‡ๅณๅฐ‡ๅˆฐไพ†็š„ๅทฆ่ฝ‰ๆˆ–ๅณ่ฝ‰็š„้ฉ็•ถ้€Ÿๅบฆๅพˆๆœ‰็”จใ€‚ - - - Status Widget - ็‹€ๆ…‹ๅฐๅทฅๅ…ท - - - Show the <b>Conditional Experimental Mode</b> status on the driving screen. - ๅœจ้ง•้ง›่žขๅน•ไธŠ้กฏ็คบ<b>ๆขไปถๅฏฆ้ฉ—ๆจกๅผ</b>็‹€ๆ…‹ใ€‚ - - - Show <b>Curve Speed Control</b>'s desired speed on the driving screen. - ๅœจ้ง•้ง›่žขๅน•ไธŠ้กฏ็คบ<b>ๅฝŽ้“้€ŸๅบฆๆŽงๅˆถ</b>็š„ๆœŸๆœ›้€Ÿๅบฆใ€‚ - - - Customize Driving Personalities - ่‡ช่จ‚้ง•้ง›ๅ€‹ๆ€ง - - - Customize the personality profiles to your driving style. - ่‡ช่จ‚ๅ€‹ๆ€งๆช”ๆกˆไปฅ็ฌฆๅˆๆ‚จ็š„้ง•้ง›้ขจๆ ผใ€‚ - - - Traffic Personality - ไบค้€šๅ€‹ๆ€ง - - - Customize the <b>Traffic</b> personality profile. Tailored for navigating through traffic. - ่‡ช่จ‚<b>ไบค้€š</b>ๅ€‹ๆ€งๆช”ๆกˆใ€‚ๅฐˆ็‚บ็ฉฟ่ถŠไบค้€š่€Œ่จญ่จˆใ€‚ - - - Following Distance - ่ทŸ่ปŠ่ท้›ข - - - The minimum following distance while in <b>Traffic Mode</b>. openpilot will dynamically adjust between this value and the value in the <b>Aggressive</b> profile based on your current speed. - ๅœจ<b>ไบค้€šๆจกๅผ</b>ไธ‹็š„ๆœ€ๅฐ่ทŸ่ปŠ่ท้›ขใ€‚openpilotๅฐ‡ๆ นๆ“šๆ‚จ็š„็•ถๅ‰้€Ÿๅบฆๅœจๆญคๅ€ผๅ’Œ<b>ๆฟ€้€ฒ</b>้…็ฝฎๆช”ไธญ็š„ๅ€ผไน‹้–“ๅ‹•ๆ…‹่ชฟๆ•ดใ€‚ - - - Acceleration Sensitivity - ๅŠ ้€Ÿๅบฆ้ˆๆ•ๅบฆ - - - How sensitive openpilot is to changes in acceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilot ๅœจ<b>ไบค้€šๆจกๅผ</b>ไธ‹ๅฐๅŠ ้€Ÿๅบฆ่ฎŠๅŒ–็š„ๆ•ๆ„Ÿๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๆœƒๅฐŽ่‡ดๆ›ดๅนณๆป‘ใ€ๆ›ดๆผธ้€ฒ็š„ๅŠ ้€Ÿ๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๅ…่จฑๆ›ดๅฟซ้€Ÿใ€ๆ›ด้ˆๆ•็š„่ฎŠๅŒ–๏ผŒๅฏ่ƒฝๆœƒๆ„Ÿ่ฆบ็ช็„ถใ€‚ - - - Deceleration Sensitivity - ๆธ›้€Ÿ้ˆๆ•ๅบฆ - - - How sensitive openpilot is to changes in deceleration while in <b>Traffic Mode</b>. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - openpilot ๅœจ<b>ไบค้€šๆจกๅผ</b>ไธ‹ๅฐๆธ›้€Ÿ่ฎŠๅŒ–็š„ๆ•ๆ„Ÿๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๆœƒๅฐŽ่‡ดๆ›ดๅนณๆป‘ใ€ๆ›ด้€ๆผธ็š„ๆธ›้€Ÿ๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๅ…่จฑๆ›ดๅฟซ้€Ÿใ€ๆ›ด้ˆๆ•็š„่ฎŠๅŒ–๏ผŒๅฏ่ƒฝๆœƒๆ„Ÿ่ฆบ็ช็„ถใ€‚ - - - Safety Distance Sensitivity - ๅฎ‰ๅ…จ่ท้›ข้ˆๆ•ๅบฆ - - - How cautious openpilot is around other vehicles or obstacles while in <b>Traffic Mode</b>. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - ๅœจ<b>ไบค้€šๆจกๅผ</b>ไธ‹๏ผŒopenpilot ๅฐๅ…ถไป–่ปŠ่ผ›ๆˆ–้šœ็ค™็‰ฉ็š„่ฌนๆ…Ž็จ‹ๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๆœƒๅขžๅŠ ่ทŸ่ปŠ่ท้›ขไธฆๅ„ชๅ…ˆ่€ƒๆ…ฎๅฎ‰ๅ…จ๏ผŒๅฐŽ่‡ดๆ›ด่ฌนๆ…Ž็š„้ง•้ง›๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๅ…่จฑๆ›ด่ฟ‘็š„่ทŸ่ปŠ๏ผŒไฝ†ๅฏ่ƒฝๆœƒๆธ›ๅฐ‘ๅๆ‡‰ๆ™‚้–“ใ€‚ - - - Speed Increase Response - ้€ŸๅบฆๅขžๅŠ ๅ›žๆ‡‰ - - - How quickly openpilot increases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - ๅœจ<b>ไบค้€šๆจกๅผ</b>ไธ‹๏ผŒopenpilot ๅขžๅŠ ้€Ÿๅบฆ็š„้€Ÿๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๅฏ็ขบไฟๅœจๅŠ ้€Ÿๆ™‚้€Ÿๅบฆ่ฎŠๅŒ–ๆ›ดๅนณ็ฉฉใ€ๆ›ดๆผธ้€ฒ๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๅ…่จฑๆ›ดๅฟซ้€Ÿใ€ๆ›ด้ˆๆ•็š„่ฎŠๅŒ–๏ผŒๅฏ่ƒฝๆœƒๆ„Ÿ่ฆบ็ช็„ถใ€‚ - - - Speed Decrease Response - ้€Ÿๅบฆๆธ›ๅฐ‘ๅๆ‡‰ - - - How quickly openpilot decreases speed while in <b>Traffic Mode</b>. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - ๅœจ<b>ไบค้€šๆจกๅผ</b>ไธ‹๏ผŒopenpilot ้™ไฝŽ้€Ÿๅบฆ็š„้€Ÿๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๅฏ็ขบไฟๅœจๆธ›้€Ÿๆ™‚้€Ÿๅบฆ่ฎŠๅŒ–ๆ›ดๅนณ็ฉฉใ€ๆ›ดๆผธ้€ฒ๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๅ…่จฑๆ›ดๅฟซ้€Ÿใ€ๆ›ด้ˆๆ•็š„่ฎŠๅŒ–๏ผŒๅฏ่ƒฝๆœƒๆ„Ÿ่ฆบ็ช็„ถใ€‚ - - - Reset Settings - ้‡่จญ่จญๅฎš - - - Reset <b>Traffic Mode</b> settings to default values. - ้‡็ฝฎ<b>ๆต้‡ๆจกๅผ</b>่จญๅฎš็‚บ้ ่จญๅ€ผใ€‚ - - - Aggressive Personality - ๆ”ปๆ“Šๆ€งไบบๆ ผ - - - Customize the <b>Aggressive</b> personality profile. Designed for a more assertive driving style. - ่‡ช่จ‚<b>็ฉๆฅต</b>ๅ€‹ๆ€ง่จญๅฎšๆช”ใ€‚ๅฐˆ็‚บๆ›ดๅ…ทๆ”ปๆ“Šๆ€ง็š„้ง•้ง›้ขจๆ ผ่จญ่จˆใ€‚ - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Aggressive</b> personality profile.<br><br>Default: 1.25 seconds. - openpilot ๅœจไฝฟ็”จ<b>ๆฟ€้€ฒ</b>ๅ€‹ๆ€ง่จญๅฎšๆช”ๆ™‚๏ผŒๆœƒๅœจ้ ˜ๅ…ˆ่ปŠ่ผ›ๅพŒ่ทŸ้šจๅคšๅฐ‘็ง’ใ€‚<br><br>้ ่จญ๏ผš1.25 ็ง’ใ€‚ - - - How sensitive openpilot is to changes in acceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ๅœจไฝฟ็”จ<b>ๆฟ€้€ฒ</b>ๅ€‹ๆ€ง่จญๅฎšๆช”ๆ™‚๏ผŒopenpilotๅฐๅŠ ้€Ÿ่ฎŠๅŒ–็š„ๆ•ๆ„Ÿๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๆœƒๅฐŽ่‡ดๆ›ดๅนณๆป‘ใ€ๆ›ดๆผธ้€ฒ็š„ๅŠ ้€Ÿ๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๅ…่จฑๆ›ดๅฟซ้€Ÿใ€ๆ›ด้ˆๆ•็š„่ฎŠๅŒ–๏ผŒๅฏ่ƒฝๆœƒๆ„Ÿ่ฆบ็ช็„ถใ€‚ - - - How sensitive openpilot is to changes in deceleration while using the <b>Aggressive</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ๅœจไฝฟ็”จ<b>ๆฟ€้€ฒ</b>ๅ€‹ๆ€ง่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ๅฐๆธ›้€Ÿ่ฎŠๅŒ–็š„ๆ•ๆ„Ÿๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๆœƒๅฐŽ่‡ดๆ›ดๅนณๆป‘ใ€ๆ›ด้€ๆผธ็š„ๆธ›้€Ÿ๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๅ…่จฑๆ›ดๅฟซ้€Ÿใ€ๆ›ด้ˆๆ•็š„่ฎŠๅŒ–๏ผŒ้€™ๅฏ่ƒฝๆœƒๆ„Ÿ่ฆบ็ช็„ถใ€‚ - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Aggressive</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - ๅœจไฝฟ็”จ<b>ๆฟ€้€ฒ</b>ๅ€‹ๆ€ง่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ๅฐๅ…ถไป–่ปŠ่ผ›ๆˆ–้šœ็ค™็‰ฉ็š„่ฌนๆ…Ž็จ‹ๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๆœƒๅขžๅŠ ่ทŸ่ปŠ่ท้›ขไธฆๅ„ชๅ…ˆ่€ƒๆ…ฎๅฎ‰ๅ…จ๏ผŒๅฐŽ่‡ดๆ›ด่ฌนๆ…Ž็š„้ง•้ง›๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๅ…่จฑๆ›ด่ฟ‘็š„่ทŸ่ปŠ๏ผŒไฝ†ๅฏ่ƒฝๆœƒๆธ›ๅฐ‘ๅๆ‡‰ๆ™‚้–“ใ€‚ - - - How quickly openpilot increases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - ไฝฟ็”จ<b>ๆฟ€้€ฒ</b>ๅ€‹ๆ€ง่จญๅฎšๆ™‚๏ผŒopenpilot ๅขžๅŠ ้€Ÿๅบฆ็š„ๅฟซๆ…ขใ€‚่ผƒ้ซ˜็š„ๅ€ผๅฏ็ขบไฟๅŠ ้€Ÿๆ™‚้€Ÿๅบฆ่ฎŠๅŒ–ๆ›ดๅนณ็ฉฉใ€ๆ›ดๆผธ้€ฒ๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๅ…่จฑๆ›ดๅฟซ้€Ÿใ€ๆ›ด้ˆๆ•็š„่ฎŠๅŒ–๏ผŒๅฏ่ƒฝๆœƒๆ„Ÿ่ฆบ็ช็„ถใ€‚ - - - How quickly openpilot decreases speed while using the <b>Aggressive</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - ไฝฟ็”จ<b>ๆฟ€้€ฒ</b>ๅ€‹ๆ€ง่จญๅฎšๆ™‚๏ผŒopenpilotๆธ›้€Ÿ็š„้€Ÿๅบฆๆœ‰ๅคšๅฟซใ€‚่ผƒ้ซ˜็š„ๅ€ผๅฏ็ขบไฟๅœจๆธ›้€Ÿๆ™‚้€Ÿๅบฆ่ฎŠๅŒ–ๆ›ดๅนณ็ฉฉใ€ๆ›ดๆผธ้€ฒ๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๅ…่จฑๆ›ดๅฟซ้€Ÿใ€ๆ›ด้ˆๆ•็š„่ฎŠๅŒ–๏ผŒๅฏ่ƒฝๆœƒๆ„Ÿ่ฆบ็ช็„ถใ€‚ - - - Reset the <b>Aggressive</b> personality profile settings to default values. - ๅฐ‡<b>็ฉๆฅต</b>ๅ€‹ๆ€ง่จญๅฎšๆช”้‡็ฝฎ็‚บ้ ่จญๅ€ผใ€‚ - - - Standard Personality - ๆจ™ๆบ–ไบบๆ ผ - - - Customize the <b>Standard</b> personality profile. Designed for a balanced driving style. - ่‡ช่จ‚<b>ๆจ™ๆบ–</b>ๅ€‹ๆ€งๆช”ๆกˆใ€‚ๅฐˆ็‚บๅนณ่กก็š„้ง•้ง›้ขจๆ ผ่จญ่จˆใ€‚ - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Standard</b> personality profile.<br><br>Default: 1.45 seconds. - openpilot ๅœจไฝฟ็”จ<b>ๆจ™ๆบ–</b>ๅ€‹ๆ€ง่จญๅฎšๆช”ๆ™‚๏ผŒๆœƒๅœจๅพŒๆ–น่ทŸ้šจ้ ˜ๅ…ˆ่ปŠ่ผ›ๅคšๅฐ‘็ง’ใ€‚<br><br>้ ่จญ๏ผš1.45 ็ง’ใ€‚ - - - How sensitive openpilot is to changes in acceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ๅœจไฝฟ็”จ<b>ๆจ™ๆบ–</b>ๅ€‹ๆ€ง่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ๅฐๅŠ ้€Ÿ่ฎŠๅŒ–็š„ๆ•ๆ„Ÿๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๆœƒๅฐŽ่‡ดๆ›ดๅนณๆป‘ใ€ๆ›ดๆผธ้€ฒ็š„ๅŠ ้€Ÿ๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๅ…่จฑๆ›ดๅฟซ้€Ÿใ€ๆ›ด้ˆๆ•็š„่ฎŠๅŒ–๏ผŒๅฏ่ƒฝๆœƒๆ„Ÿ่ฆบ็ช็„ถใ€‚ - - - How sensitive openpilot is to changes in deceleration while using the <b>Standard</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ๅœจไฝฟ็”จ<b>ๆจ™ๆบ–</b>ๅ€‹ๆ€ง่จญๅฎšๆช”ๆ™‚๏ผŒopenpilotๅฐๆธ›้€Ÿ่ฎŠๅŒ–็š„ๆ•ๆ„Ÿๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๆœƒๅฐŽ่‡ดๆ›ดๅนณๆป‘ใ€ๆ›ดๆผธ้€ฒ็š„ๆธ›้€Ÿ๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๅ…่จฑๆ›ดๅฟซ้€Ÿใ€ๆ›ด้ˆๆ•็š„่ฎŠๅŒ–๏ผŒๅฏ่ƒฝๆœƒๆ„Ÿ่ฆบ็ช็„ถใ€‚ - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Standard</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - ๅœจไฝฟ็”จ<b>ๆจ™ๆบ–</b>ๅ€‹ๆ€ง่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ๅฐๅ…ถไป–่ปŠ่ผ›ๆˆ–้šœ็ค™็‰ฉ็š„่ฌนๆ…Ž็จ‹ๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๆœƒๅขžๅŠ ่ทŸ่ปŠ่ท้›ขไธฆๅ„ชๅ…ˆ่€ƒๆ…ฎๅฎ‰ๅ…จ๏ผŒๅฐŽ่‡ดๆ›ด่ฌนๆ…Ž็š„้ง•้ง›๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๅ…่จฑๆ›ด่ฟ‘็š„่ทŸ่ปŠ๏ผŒไฝ†ๅฏ่ƒฝๆœƒๆธ›ๅฐ‘ๅๆ‡‰ๆ™‚้–“ใ€‚ - - - How quickly openpilot increases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - ๅœจไฝฟ็”จ<b>ๆจ™ๆบ–</b>ๅ€‹ๆ€ง่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ๅขžๅŠ ้€Ÿๅบฆ็š„ๅฟซๆ…ขใ€‚่ผƒ้ซ˜็š„ๅ€ผๅฏ็ขบไฟๅœจๅŠ ้€Ÿๆ™‚้€Ÿๅบฆ่ฎŠๅŒ–ๆ›ดๅนณ็ฉฉใ€ๆ›ดๆผธ้€ฒ๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๅ…่จฑๆ›ดๅฟซ้€Ÿใ€ๆ›ด้ˆๆ•็š„่ฎŠๅŒ–๏ผŒๅฏ่ƒฝๆœƒๆ„Ÿ่ฆบ็ช็„ถใ€‚ - - - How quickly openpilot decreases speed while using the <b>Standard</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - ไฝฟ็”จ<b>ๆจ™ๆบ–</b>ๅ€‹ๆ€ง่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ้™ไฝŽ้€Ÿๅบฆ็š„้€Ÿๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๅฏ็ขบไฟๅœจๆธ›้€Ÿๆ™‚้€Ÿๅบฆ่ฎŠๅŒ–ๆ›ดๅนณ็ฉฉใ€ๆ›ดๆผธ้€ฒ๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๅ…่จฑๆ›ดๅฟซ้€Ÿใ€ๆ›ด้ˆๆ•็š„่ฎŠๅŒ–๏ผŒๅฏ่ƒฝๆœƒๆ„Ÿ่ฆบ็ช็„ถใ€‚ - - - Reset the <b>Standard</b> personality profile settings to default values. - ๅฐ‡ <b>ๆจ™ๆบ–</b> ๅ€‹ๆ€ง่จญๅฎšๆช”่จญ็ฝฎ้‡็ฝฎ็‚บ้ป˜่ชๅ€ผใ€‚ - - - Relaxed Personality - ๆ”พ้ฌ†็š„ๅ€‹ๆ€ง - - - Customize the <b>Relaxed</b> personality profile. Designed for a more laid-back driving style. - ่‡ช่จ‚<b>่ผ•้ฌ†</b>ๅ€‹ๆ€งๆช”ๆกˆใ€‚ๅฐˆ็‚บๆ›ดๆ‚ ้–’็š„้ง•้ง›้ขจๆ ผ่จญ่จˆใ€‚ - - - How many seconds openpilot will follow behind lead vehicles while using the <b>Relaxed</b> personality profile.<br><br>Default: 1.75 seconds. - openpilot ๅœจไฝฟ็”จ<b>ๆ”พ้ฌ†</b>ๅ€‹ๆ€ง่จญๅฎšๆช”ๆ™‚๏ผŒๆœƒๅœจ้ ˜ๅ…ˆ่ปŠ่ผ›ๅพŒ่ทŸ้šจๅคšๅฐ‘็ง’ใ€‚<br><br>้ ่จญ๏ผš1.75 ็ง’ใ€‚ - - - How sensitive openpilot is to changes in acceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual acceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ๅœจไฝฟ็”จ<b>ๆ”พ้ฌ†</b>ๅ€‹ๆ€ง่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ๅฐๅŠ ้€Ÿ่ฎŠๅŒ–็š„ๆ•ๆ„Ÿๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๆœƒๅฐŽ่‡ดๆ›ดๅนณๆป‘ใ€ๆ›ดๆผธ้€ฒ็š„ๅŠ ้€Ÿ๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๅ…่จฑๆ›ดๅฟซ้€Ÿใ€ๆ›ด้ˆๆ•็š„่ฎŠๅŒ–๏ผŒๅฏ่ƒฝๆœƒๆ„Ÿ่ฆบ็ช็„ถใ€‚ - - - How sensitive openpilot is to changes in deceleration while using the <b>Relaxed</b> personality profile. Higher values result in smoother, more gradual deceleration, while lower values allow for quicker, more responsive changes that may feel abrupt. - ๅœจไฝฟ็”จ<b>ๆ”พ้ฌ†</b>ๅ€‹ๆ€ง่จญๅฎšๆช”ๆ™‚๏ผŒopenpilotๅฐๆธ›้€Ÿ่ฎŠๅŒ–็š„ๆ•ๆ„Ÿๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๆœƒๅฐŽ่‡ดๆ›ดๅนณๆป‘ใ€ๆ›ดๆผธ้€ฒ็š„ๆธ›้€Ÿ๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๅ…่จฑๆ›ดๅฟซ้€Ÿใ€ๆ›ด้ˆๆ•็š„่ฎŠๅŒ–๏ผŒๅฏ่ƒฝๆœƒๆ„Ÿ่ฆบ็ช็„ถใ€‚ - - - How cautious openpilot is around other vehicles or obstacles while using the <b>Relaxed</b> personality profile. Higher values increase following distances and prioritize safety, leading to more cautious driving, while lower values allow for closer following but may reduce reaction time. - ๅœจไฝฟ็”จ<b>ๆ”พ้ฌ†</b>ๅ€‹ๆ€ง่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ๅฐๅ…ถไป–่ปŠ่ผ›ๆˆ–้šœ็ค™็‰ฉ็š„่ฌนๆ…Ž็จ‹ๅบฆใ€‚่ผƒ้ซ˜็š„ๆ•ธๅ€ผๆœƒๅขžๅŠ ่ทŸ่ปŠ่ท้›ขไธฆๅ„ชๅ…ˆ่€ƒๆ…ฎๅฎ‰ๅ…จ๏ผŒๅฐŽ่‡ดๆ›ด่ฌนๆ…Ž็š„้ง•้ง›๏ผŒ่€Œ่ผƒไฝŽ็š„ๆ•ธๅ€ผๅ‰‡ๅ…่จฑๆ›ด่ฟ‘็š„่ทŸ่ปŠ๏ผŒไฝ†ๅฏ่ƒฝๆœƒๆธ›ๅฐ‘ๅๆ‡‰ๆ™‚้–“ใ€‚ - - - How quickly openpilot increases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when accelerating, while lower values allow for quicker, more responsive changes that may feel abrupt. - ไฝฟ็”จ<b>ๆ”พ้ฌ†</b>ๅ€‹ๆ€ง่จญๅฎšๆช”ๆ™‚๏ผŒopenpilotๅขžๅŠ ้€Ÿๅบฆ็š„้€Ÿๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๅฏ็ขบไฟๅŠ ้€Ÿๆ™‚้€Ÿๅบฆ่ฎŠๅŒ–ๆ›ดๅนณ็ฉฉใ€ๆ›ดๆผธ้€ฒ๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๅ…่จฑๆ›ดๅฟซ้€Ÿใ€ๆ›ด้ˆๆ•็š„่ฎŠๅŒ–๏ผŒๅฏ่ƒฝๆœƒๆ„Ÿ่ฆบ็ช็„ถใ€‚ - - - How quickly openpilot decreases speed while using the <b>Relaxed</b> personality profile. Higher values ensure smoother, more gradual speed changes when slowing down, while lower values allow for quicker, more responsive changes that may feel abrupt. - ไฝฟ็”จ<b>ๆ”พ้ฌ†</b>ๅ€‹ๆ€ง่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ้™ไฝŽ้€Ÿๅบฆ็š„้€Ÿๅบฆๆœ‰ๅคšๅฟซใ€‚่ผƒ้ซ˜็š„ๅ€ผๅฏ็ขบไฟๅœจๆธ›้€Ÿๆ™‚้€Ÿๅบฆ่ฎŠๅŒ–ๆ›ดๅนณ็ฉฉใ€ๆ›ดๆผธ้€ฒ๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๅ…่จฑๆ›ดๅฟซ้€Ÿใ€ๆ›ด้ˆๆ•็š„่ฎŠๅŒ–๏ผŒๅฏ่ƒฝๆœƒๆ„Ÿ่ฆบ็ช็„ถใ€‚ - - - Reset the <b>Relaxed</b> personality profile settings to default values. - ๅฐ‡<b>ๆ”พ้ฌ†</b>ๅ€‹ๆ€ง่จญๅฎš้‡็ฝฎ็‚บ้ ่จญๅ€ผใ€‚ - - - Longitudinal Tuning - ็ธฑๅ‘่ชฟ่ซง - - - Settings that control how openpilot manages speed and acceleration. - ๆŽงๅˆถ openpilot ๅฆ‚ไฝ•็ฎก็†้€Ÿๅบฆๅ’ŒๅŠ ้€Ÿๅบฆ็š„่จญๅฎšใ€‚ - - - Acceleration Profile - ๅŠ ้€Ÿๅบฆๆ›ฒ็ทš - - - Enable either a sporty or eco-friendly acceleration profile. <b>Sport+</b> aims to make openpilot accelerate as fast as possible! - ๅ•Ÿ็”จ้‹ๅ‹•ๅž‹ๆˆ–็’ฐไฟๅž‹ๅŠ ้€Ÿๆจกๅผใ€‚<b>Sport+</b> ๆ—จๅœจ่ฎ“ openpilot ไปฅๆœ€ๅฟซ้€ŸๅบฆๅŠ ้€Ÿ๏ผ - - - Deceleration Profile - ๆธ›้€Ÿๆ›ฒ็ทš - - - Enable either a sporty or eco-friendly deceleration profile. - ๅ•Ÿ็”จ้‹ๅ‹•ๅž‹ๆˆ–็’ฐไฟๅž‹ๆธ›้€Ÿ้…็ฝฎๆช”ใ€‚ - - - Human-Like Acceleration - ้กžไบบๅŠ ้€Ÿๅบฆ - - - Use the lead vehicle's acceleration rate when at a takeoff and ramp off the acceleration rate when approaching the maximum set speed for a more "human-like" driving experience. - ๅœจ่ตทๆญฅๆ™‚ไฝฟ็”จ้ ˜ๅ…ˆ่ปŠ่ผ›็š„ๅŠ ้€Ÿๅบฆ๏ผŒไธฆๅœจๆŽฅ่ฟ‘่จญๅฎš็š„ๆœ€้ซ˜้€Ÿๅบฆๆ™‚้€ๆผธๆธ›ๅฐ‘ๅŠ ้€Ÿๅบฆ๏ผŒไปฅ็ฒๅพ—ๆ›ดโ€œไบบๆ€งๅŒ–โ€็š„้ง•้ง›้ซ”้ฉ—ใ€‚ - - - Human-Like Approach Behind Leads - ๆฝ›ๅœจๅฎขๆˆถ่ƒŒๅพŒ็š„ไบบๆ€งๅŒ–ๆ–นๆณ• - - - Dynamically adjust the desired following distance when approaching slower or stopped vehicles for a more "human-like" driving experience. - ็•ถๆŽฅ่ฟ‘่ผƒๆ…ขๆˆ–ๅœไธ‹็š„่ปŠ่ผ›ๆ™‚๏ผŒๅ‹•ๆ…‹่ชฟๆ•ดๆ‰€้œ€็š„่ทŸ่ปŠ่ท้›ข๏ผŒไปฅๆไพ›ๆ›ดโ€œไบบๆ€งๅŒ–โ€็š„้ง•้ง›้ซ”้ฉ—ใ€‚ - - - Lead Detection Confidence - ๆฝ›ๅœจๅฎขๆˆถๆชขๆธฌไฟกๅฟƒ - - - How sensitive openpilot is to detecting vehicles ahead. A lower value can help detect vehicles sooner and from farther away, but increases the chance openpilot mistakes other objects for vehicles. - openpilot ๅฐๆ–ผๆชขๆธฌๅ‰ๆ–น่ปŠ่ผ›็š„ๆ•ๆ„Ÿๅบฆใ€‚่ผƒไฝŽ็š„ๅ€ผๅฏไปฅๅนซๅŠฉๆ›ดๆ—ฉใ€ๆ›ด้ ๅœฐๆชขๆธฌๅˆฐ่ปŠ่ผ›๏ผŒไฝ†ไนŸๅขžๅŠ ไบ† openpilot ๅฐ‡ๅ…ถไป–็‰ฉ้ซ”่ชค่ช็‚บ่ปŠ่ผ›็š„ๆฉŸๆœƒใ€‚ - - - Maximum Acceleration Rate - ๆœ€ๅคงๅŠ ้€Ÿๅบฆ็އ - - - Set a cap on how fast openpilot can accelerate. - ่จญๅฎš openpilot ็š„ๅŠ ้€ŸไธŠ้™ใ€‚ - - - "Taco Bell Run" Turn Speed Hack - "Taco Bell Run" ่ฝ‰้€Ÿ้ป‘ๅฎข - - - The turn speed hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to slow down when taking left/right turns for smoother turns. - ไพ†่‡ช comma 2022 ๅนดใ€ŒTaco Bell Runใ€้ง•้ง›็š„่ฝ‰้€Ÿ้ป‘ๅฎขใ€‚่จญ่จˆ็”จๆ–ผๅœจๅทฆ/ๅณ่ฝ‰ๅฝŽๆ™‚ๆธ›้€Ÿ๏ผŒไปฅๅฏฆ็พๆ›ดๅนณๆป‘็š„่ฝ‰ๅฝŽใ€‚ - - - Quality of Life - ็”Ÿๆดปๅ“่ณช - - - Miscellaneous features to improve the acceleration and braking experience. - ๅ„็จฎๅŠŸ่ƒฝไปฅๆ”นๅ–„ๅŠ ้€Ÿๅ’Œๅˆถๅ‹•้ซ”้ฉ—ใ€‚ - - - Cruise Interval - ๅทก่ˆช้–“้š” - - - The interval used when changing the cruise control speed. - ๆ›ดๆ”นๅทก่ˆชๆŽงๅˆถ้€Ÿๅบฆๆ™‚ไฝฟ็”จ็š„้–“้š”ใ€‚ - - - Cruise Interval (Long Press) - ๅทก่ˆช้–“้š”๏ผˆ้•ทๆŒ‰๏ผ‰ - - - The interval used when changing the cruise control speed while holding down the button for 0.5+ seconds. - ๆŒ‰ไฝๆŒ‰้ˆ•่ถ…้Ž0.5็ง’ๆ™‚ๆ›ดๆ”นๅทก่ˆชๆŽงๅˆถ้€Ÿๅบฆๆ‰€ไฝฟ็”จ็š„้–“้š”ใ€‚ - - - Force Keep openpilot in the Standstill State - ๅผทๅˆถไฟๆŒ openpilot ่™•ๆ–ผ้œๆญข็‹€ๆ…‹ - - - Keep openpilot in the standstill state until either the gas pedal or <b>resume</b> button is pressed. - ไฟๆŒopenpilotๅœจ้œๆญข็‹€ๆ…‹๏ผŒ็›ดๅˆฐๆŒ‰ไธ‹ๆฒน้–€่ธๆฟๆˆ–<b>ๆขๅพฉ</b>ๆŒ‰้ˆ•ใ€‚ - - - Force Stop for "Detected" Stop Lights/Signs - ๅฐๆ–ผใ€Œๆชขๆธฌๅˆฐใ€็š„็ด…็ถ ็‡ˆ/ๅœ่ปŠๆจ™่ชŒๅผทๅˆถๅœๆญข - - - Force a stop whenever openpilot <b>detects</b> a potential red light/stop sign to prevent it from running the red light/stop sign. - ๆฏ็•ถopenpilot <b>ๅตๆธฌๅˆฐ</b>ๆฝ›ๅœจ็š„็ด…็‡ˆ/ๅœ่ปŠๆจ™่ชŒๆ™‚๏ผŒๅผทๅˆถๅœ่ปŠไปฅ้˜ฒๆญข้—–็ด…็‡ˆ/ๅœ่ปŠๆจ™่ชŒใ€‚ - - - Increase Stopped Distance - ๅขžๅŠ ๅœๆญข่ท้›ข - - - Increase the distance openpilot stops behind vehicles. - ๅขžๅŠ openpilotๅœจ่ปŠ่ผ›ๅพŒๆ–นๅœ่ปŠ็š„่ท้›ขใ€‚ - - - Set Speed Offset - ่จญ็ฝฎ้€Ÿๅบฆๅ็งป - - - How much higher or lower the set speed should be compared to your current set speed. For example, if you prefer to drive 5 mph above the speed limit, this setting will automatically add that difference when you adjust your set speed. - ่จญๅฎš้€Ÿๅบฆๆ‡‰่ฉฒๆฏ”ๆ‚จ็•ถๅ‰่จญๅฎš้€Ÿๅบฆ้ซ˜ๅคšๅฐ‘ๆˆ–ไฝŽๅคšๅฐ‘ใ€‚ไพ‹ๅฆ‚๏ผŒๅฆ‚ๆžœๆ‚จๅ–œๆญกไปฅ่ถ…้Ž้™้€Ÿ5่‹ฑ้‡Œ็š„้€Ÿๅบฆ่กŒ้ง›๏ผŒๅ‰‡ๆญค่จญ็ฝฎๆœƒๅœจๆ‚จ่ชฟๆ•ด่จญๅฎš้€Ÿๅบฆๆ™‚่‡ชๅ‹•ๆทปๅŠ ่ฉฒๅทฎ็•ฐใ€‚ - - - Map Accel/Decel to Gears - ๅฐ‡ๅŠ ้€Ÿ/ๆธ›้€Ÿๆ˜ ๅฐ„ๅˆฐ้ฝ’่ผช - - - Map the acceleration and deceleration profiles to your car's <b>Eco</b> or <b>Sport</b> gear modes. - ๅฐ‡ๅŠ ้€Ÿๅ’Œๆธ›้€Ÿ้…็ฝฎๆ˜ ๅฐ„ๅˆฐๆ‚จ็š„ๆฑฝ่ปŠ็š„<b>Eco</b>ๆˆ–<b>Sport</b>ๆช”ไฝๆจกๅผใ€‚ - - - Reverse Cruise Increase - ้€†่ฝ‰้ƒต่ผชๅขž้•ท - - - Reverse the <b>long press</b> cruise increase feature to increase the max speed by 5 instead of 1 on short presses. - ๅฐ‡<b>้•ทๆŒ‰</b>ๅทก่ˆชๅขž้€ŸๅŠŸ่ƒฝๅ่ฝ‰็‚บ็ŸญๆŒ‰ๆ™‚ๅฐ‡ๆœ€ๅคง้€ŸๅบฆๅขžๅŠ 5่€Œไธๆ˜ฏ1ใ€‚ - - - Speed Limit Controller - ้€Ÿๅบฆ้™ๅˆถๆŽงๅˆถๅ™จ - - - Limit openpilot's maximum driving speed based on data from downloaded maps, <b>Mapbox</b>, <b>Navigate on openpilot</b>, or the dashboard (supported vehicles: <b>Ford</b>, <b>Genesis</b>, <b>Hyundai</b>, <b>Kia</b>, <b>Lexus</b>, <b>Toyota</b>). - ๆ นๆ“šๅพžไธ‹่ผ‰็š„ๅœฐๅœ–ใ€<b>Mapbox</b>ใ€<b>Navigate on openpilot</b>ๆˆ–ๅ„€่กจๆฟ็ฒๅ–็š„ๆ•ธๆ“š้™ๅˆถopenpilot็š„ๆœ€ๅคง่กŒ้ง›้€Ÿๅบฆ๏ผˆๆ”ฏๆŒ็š„่ปŠ่ผ›๏ผš<b>Ford</b>ใ€<b>Genesis</b>ใ€<b>Hyundai</b>ใ€<b>Kia</b>ใ€<b>Lexus</b>ใ€<b>Toyota</b>๏ผ‰ใ€‚ - - - Fallback Speed - ๅพŒๅ‚™้€Ÿๅบฆ - - - The speed limit source when no speed limit data is available. - ็•ถๆฒ’ๆœ‰้€Ÿๅบฆ้™ๅˆถๆ•ธๆ“šๆ™‚็š„้€Ÿๅบฆ้™ๅˆถไพ†ๆบใ€‚ - - - Override Speed - ่ฆ†่“‹้€Ÿๅบฆ - - - The speed openpilot uses after manually exceeding the posted speed limit.<br><br><b>- Set With Gas Pedal</b>: Uses the speed obtained while pressing the gas<br><b>- Max Set Speed</b>: Uses the cruise control set speed<br><br>Overrides clear upon disengagement. - openpilot ๅœจๆ‰‹ๅ‹•่ถ…้Žๅผต่ฒผ็š„้€Ÿๅบฆ้™ๅˆถๅพŒไฝฟ็”จ็š„้€Ÿๅบฆใ€‚<br><br><b>- ไฝฟ็”จๆฒน้–€่จญๅฎš</b>๏ผšไฝฟ็”จๆŒ‰ไธ‹ๆฒน้–€ๆ™‚็ฒๅพ—็š„้€Ÿๅบฆ<br><b>- ๆœ€ๅคง่จญๅฎš้€Ÿๅบฆ</b>๏ผšไฝฟ็”จๅทก่ˆชๆŽงๅˆถ่จญๅฎš็š„้€Ÿๅบฆ<br><br>ๅœจ่งฃ้™คๆ™‚่ฆ†่“‹ๆธ…้™คใ€‚ - - - Miscellaneous features to improve the <b>Speed Limit Controller</b> experience. - ๅ„็จฎๅŠŸ่ƒฝไปฅๆ”นๅ–„<b>้€Ÿๅบฆ้™ๅˆถๆŽงๅˆถๅ™จ</b>็š„้ซ”้ฉ—ใ€‚ - - - Confirm New Speed Limits - ็ขบ่ชๆ–ฐ็š„้€Ÿๅบฆ้™ๅˆถ - - - Require confirmation before applying new speed limits. To accept, use the flashing widget on the driving screen or press the <b>Cruise Increase</b> button. To deny, press the <b>Cruise Decrease</b> button or simply ignore the prompt for 30 seconds. - ๅœจๆ‡‰็”จๆ–ฐ็š„้€Ÿๅบฆ้™ๅˆถไน‹ๅ‰้œ€่ฆ็ขบ่ชใ€‚่ฆๆŽฅๅ—๏ผŒ่ซ‹ไฝฟ็”จ้ง•้ง›ๅฑๅน•ไธŠ็š„้–ƒ็ˆๅฐๅทฅๅ…ทๆˆ–ๆŒ‰ไธ‹<b>ๅทก่ˆชๅขžๅŠ </b>ๆŒ‰้ˆ•ใ€‚่ฆๆ‹’็ต•๏ผŒ่ซ‹ๆŒ‰ไธ‹<b>ๅทก่ˆชๆธ›ๅฐ‘</b>ๆŒ‰้ˆ•ๆˆ–็ฐกๅ–ฎๅœฐๅฟฝ็•ฅๆ็คบ30็ง’ใ€‚ - - - Force MPH Readings from Dashboard - ๅผทๅˆถๅ„€่กจๆฟ้กฏ็คบ MPH ่ฎ€ๆ•ธ - - - Force dashboard speed limit readings to be in mph. - ๅผทๅˆถๅ„€่กจๆฟ้€Ÿๅบฆ้™ๅˆถ่ฎ€ๆ•ธไปฅ่‹ฑ้‡Œๆฏๅฐๆ™‚้กฏ็คบใ€‚ - - - Higher Limit Lookahead Time - ๆ›ด้ซ˜้™ๅˆถ้ ่ฆ‹ๆ™‚้–“ - - - How far ahead openpilot anticipates upcoming higher speed limits from the downloaded map data. - openpilot ๅพžไธ‹่ผ‰็š„ๅœฐๅœ–ๆ•ธๆ“šไธญ้ ๆธฌๅณๅฐ‡ๅˆฐไพ†็š„ๆ›ด้ซ˜้€Ÿๅบฆ้™ๅˆถ็š„่ท้›ขๆœ‰ๅคš้ ใ€‚ - - - Lower Limit Lookahead Time - ไธ‹้™ๅ‰็žปๆ™‚้–“ - - - How far ahead openpilot anticipates upcoming lower speed limits from the downloaded map data. - openpilot ๅพžไธ‹่ผ‰็š„ๅœฐๅœ–ๆ•ธๆ“šไธญๆๅ‰ๅคš้ ้ ๆธฌๅณๅฐ‡ๅˆฐไพ†็š„่ผƒไฝŽ้€Ÿๅบฆ้™ๅˆถใ€‚ - - - Match Speed Limit on Engage - ๅœจๅ•Ÿๅ‹•ๆ™‚ๅŒน้…้€Ÿๅบฆ้™ๅˆถ - - - Automatically set cruise control speed to match the current speed limit when first enabling openpilot. - ้ฆ–ๆฌกๅ•Ÿ็”จopenpilotๆ™‚๏ผŒ่‡ชๅ‹•ๅฐ‡ๅทก่ˆชๆŽงๅˆถ้€Ÿๅบฆ่จญ็ฝฎ็‚บๅŒน้…็•ถๅ‰็š„้€Ÿๅบฆ้™ๅˆถใ€‚ - - - Use Mapbox as Fallback - ไฝฟ็”จ Mapbox ไฝœ็‚บๅพŒๅ‚™้ธ้ … - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - ๅœจๆฒ’ๆœ‰ๅ…ถไป–ไพ†ๆบๅฏ็”จๆ™‚๏ผŒไฝฟ็”จ<b>Mapbox</b>้€Ÿๅบฆ้™ๅˆถๆ•ธๆ“šใ€‚ - - - Speed Limit Source Priority - ้€Ÿๅบฆ้™ๅˆถไพ†ๆบๅ„ชๅ…ˆ้ †ๅบ - - - Define the priority order for speed limit sources (<b>Dashboard</b>, <b>Map Data</b>, <b>Navigation</b>). Higher-priority sources override lower ones when multiple limits are detected. - ๅฎš็พฉ้€Ÿๅบฆ้™ๅˆถไพ†ๆบ็š„ๅ„ชๅ…ˆ้ †ๅบ๏ผˆ<b>ๅ„€่กจๆฟ</b>ใ€<b>ๅœฐๅœ–ๆ•ธๆ“š</b>ใ€<b>ๅฐŽ่ˆช</b>๏ผ‰ใ€‚็•ถๆชขๆธฌๅˆฐๅคšๅ€‹้™ๅˆถๆ™‚๏ผŒๅ„ชๅ…ˆ็ดš่ผƒ้ซ˜็š„ไพ†ๆบๅฐ‡่ฆ†่“‹่ผƒไฝŽ็š„ไพ†ๆบใ€‚ - - - Speed Limit Offsets - ้€Ÿๅบฆ้™ๅˆถๅ็งป - - - Offsets relative to the posted speed limit for a more "human-like" driving experience. - ็›ธๅฐๆ–ผๅผต่ฒผ็š„้€Ÿๅบฆ้™ๅˆถ็š„ๅ็งป๏ผŒไปฅ็ฒๅพ—ๆ›ดโ€œไบบๆ€งๅŒ–โ€็š„้ง•้ง›้ซ”้ฉ—ใ€‚ - - - Target speed offset applied for posted limits between 0 and 24 mph. - ็›ฎๆจ™้€Ÿๅบฆๅ็งป้ฉ็”จๆ–ผ้™้€Ÿๅœจ0ๅˆฐ24่‹ฑ้‡Œ/ๅฐๆ™‚ไน‹้–“ใ€‚ - - - Target speed offset applied for posted limits between 25 and 34 mph. - ็›ฎๆจ™้€Ÿๅบฆๅ็งป้ฉ็”จๆ–ผ้™้€Ÿไป‹ๆ–ผ 25 ๅˆฐ 34 ่‹ฑ้‡Œ/ๅฐๆ™‚ไน‹้–“ใ€‚ - - - Target speed offset applied for posted limits between 35 and 44 mph. - ็›ฎๆจ™้€Ÿๅบฆๅ็งป้ฉ็”จๆ–ผ้™้€Ÿไป‹ๆ–ผ35่‡ณ44่‹ฑ้‡Œ/ๅฐๆ™‚ไน‹้–“ใ€‚ - - - Target speed offset applied for posted limits between 45 and 54 mph. - ็›ฎๆจ™้€Ÿๅบฆๅ็งป้ฉ็”จๆ–ผ้™้€Ÿไป‹ๆ–ผ45่‡ณ54่‹ฑ้‡Œๆฏๅฐๆ™‚ไน‹้–“ใ€‚ - - - Target speed offset applied for posted limits between 55 and 64 mph. - ็›ฎๆจ™้€Ÿๅบฆๅ็งป้ฉ็”จๆ–ผ้™้€Ÿไป‹ๆ–ผ55่‡ณ64่‹ฑ้‡Œ/ๅฐๆ™‚ไน‹้–“ใ€‚ - - - Target speed offset applied for posted limits between 65 and 74 mph. - ็›ฎๆจ™้€Ÿๅบฆๅ็งป้ฉ็”จๆ–ผ้™้€Ÿไป‹ๆ–ผ65่‡ณ74่‹ฑ้‡Œ/ๅฐๆ™‚ไน‹้–“ใ€‚ - - - Target speed offset applied for posted limits between 75 and 99 mph. - ็›ฎๆจ™้€Ÿๅบฆๅ็งป้ฉ็”จๆ–ผ้™้€Ÿไป‹ๆ–ผ75่‡ณ99่‹ฑ้‡Œๆฏๅฐๆ™‚ไน‹้–“ใ€‚ - - - Visual Settings - ่ฆ–่ฆบ่จญๅฎš - - - Visual features to improve the <b>Speed Limit Controller</b> experience. - ๆ”น้€ฒ<b>้€Ÿๅบฆ้™ๅˆถๆŽงๅˆถๅ™จ</b>้ซ”้ฉ—็š„่ฆ–่ฆบๅŠŸ่ƒฝใ€‚ - - - Show Speed Limit Offset - ้กฏ็คบ้€Ÿๅบฆ้™ๅˆถๅ็งป้‡ - - - Display the speed limit offset separately on the driving screen. - ๅœจ้ง•้ง›ๅฑๅน•ไธŠๅ–ฎ็จ้กฏ็คบ้€Ÿๅบฆ้™ๅˆถๅ็งปใ€‚ - - - Show Speed Limit Sources - ้กฏ็คบ้€Ÿๅบฆ้™ๅˆถไพ†ๆบ - - - Display the speed limit sources on the driving screen. - ๅœจ้ง•้ง›่žขๅน•ไธŠ้กฏ็คบ้€Ÿๅบฆ้™ๅˆถไพ†ๆบใ€‚ - - - seconds - ็ง’ - - - m/sยฒ - m/sยฒ - - - mph - mph - - - With Lead - ๅซ้‰› - - - Switch to <b>Experimental Mode</b> when driving below this speed with a lead. - ๅœจๆœ‰้ ˜ๅ…ˆ็š„ๆƒ…ๆณไธ‹๏ผŒไปฅไฝŽๆ–ผๆญค้€Ÿๅบฆ่กŒ้ง›ๆ™‚ๅˆ‡ๆ›ๅˆฐ<b>ๅฏฆ้ฉ—ๆจกๅผ</b>ใ€‚ - - - Slower Lead - ่ผƒๆ…ข็š„็ทš็ดข - - - Stopped Lead - ๅœๆญขๆฝ›ๅœจๅฎขๆˆถ - - - Intersections - ไบค้›† - - - Turns - ่ฝ‰ๅ‹• - - - Off - ้—œ้–‰ - - - second - ็ฌฌไบŒ - - - RESET - ้‡็ฝฎ - - - Standard - ๆจ™ๆบ– - - - Eco - ็”Ÿๆ…‹ - - - Sport - ้‹ๅ‹• - - - Sport+ - Sport+ - - - feet - ่‹ฑๅฐบ - - - Acceleration - ๅŠ ้€Ÿๅบฆ - - - Deceleration - ๆธ›้€Ÿ - - - Set Speed - ่จญๅฎš้€Ÿๅบฆ - - - Experimental Mode - ๅฏฆ้ฉ—ๆจกๅผ - - - Previous Limit - ๅ…ˆๅ‰้™ๅˆถ - - - None - ็„ก - - - Set With Gas Pedal - ่จญ็ฝฎๆฒน้–€่ธๆฟ - - - Max Set Speed - ๆœ€ๅคง่จญๅฎš้€Ÿๅบฆ - - - SELECT - SELECT - - - Dashboard - ๅ„€่กจๆฟ - - - Map Data - ๅœฐๅœ–ๆ•ธๆ“š - - - Navigation - ๅฐŽ่ˆช - - - Highest - ๆœ€้ซ˜ - - - Lowest - ๆœ€ไฝŽ - - - Select your primary priority - ้ธๆ“‡ๆ‚จ็š„ไธป่ฆๅ„ชๅ…ˆไบ‹้ … - - - Select your secondary priority - ้ธๆ“‡ๆ‚จ็š„ๆฌก่ฆๅ„ชๅ…ˆไบ‹้ … - - - Select your tertiary priority - ้ธๆ“‡ๆ‚จ็š„็ฌฌไธ‰ๅ„ชๅ…ˆไบ‹้ … - - - MANAGE - ็ฎก็† - - - Lower Limits - ไธ‹้™ - - - Higher Limits - ๆ›ด้ซ˜็š„้™ๅˆถ - - - Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? - ๆ‚จ็ขบๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎ<b>ไบค้€šๆจกๅผ</b>็š„่จญๅฎšๅ—Ž๏ผŸ - - - Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? - ๆ‚จ็ขบๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎ<b>็ฉๆฅต</b>ๅ€‹ๆ€ง็š„่จญๅฎšๅ—Ž๏ผŸ - - - Are you sure you want to completely reset your settings for the <b>Standard</b> personality? - ๆ‚จ็ขบๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎ<b>ๆจ™ๆบ–</b>ๅ€‹ๆ€ง่จญๅฎšๅ—Ž๏ผŸ - - - Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? - ๆ‚จ็ขบๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎ<b>ๆ”พ้ฌ†</b>ๅ€‹ๆ€ง็š„่จญๅฎšๅ—Ž๏ผŸ - - - foot - ่…ณ - - - meter - ็ฑณ - - - meters - ็ฑณ - - - km/h - km/h - - - Target speed offset applied for posted limits between 0 and 29 km/h. - ็›ฎๆจ™้€Ÿๅบฆๅ็งป้ฉ็”จๆ–ผๅผต่ฒผ้™้€Ÿๅœจ0่‡ณ29ๅ…ฌ้‡Œ/ๅฐๆ™‚ไน‹้–“ใ€‚ - - - Target speed offset applied for posted limits between 30 and 49 km/h. - ็›ฎๆจ™้€Ÿๅบฆๅ็งป้ฉ็”จๆ–ผ้™้€Ÿไป‹ๆ–ผ30่‡ณ49ๅ…ฌ้‡Œ/ๅฐๆ™‚ไน‹้–“ใ€‚ - - - Target speed offset applied for posted limits between 50 and 59 km/h. - ็›ฎๆจ™้€Ÿๅบฆๅ็งป้ฉ็”จๆ–ผ้™้€Ÿไป‹ๆ–ผ50่‡ณ59ๅ…ฌ้‡Œ/ๅฐๆ™‚ไน‹้–“ใ€‚ - - - Target speed offset applied for posted limits between 60 and 79 km/h. - ็›ฎๆจ™้€Ÿๅบฆๅ็งป้ฉ็”จๆ–ผ้™้€Ÿไป‹ๆ–ผ60่‡ณ79ๅ…ฌ้‡Œ/ๅฐๆ™‚ไน‹้–“ใ€‚ - - - Target speed offset applied for posted limits between 80 and 99 km/h. - ็›ฎๆจ™้€Ÿๅบฆๅ็งป้ฉ็”จๆ–ผ้™้€Ÿๅœจ80่‡ณ99ๅ…ฌ้‡Œ/ๅฐๆ™‚ไน‹้–“ใ€‚ - - - Target speed offset applied for posted limits between 100 and 119 km/h. - ็›ฎๆจ™้€Ÿๅบฆๅ็งป้ฉ็”จๆ–ผ้™้€Ÿไป‹ๆ–ผ100่‡ณ119ๅ…ฌ้‡Œ/ๅฐๆ™‚ไน‹้–“ใ€‚ - - - Target speed offset applied for posted limits between 120 and 140 km/h. - ็›ฎๆจ™้€Ÿๅบฆๅ็งป้ฉ็”จๆ–ผ้™้€Ÿไป‹ๆ–ผ120่‡ณ140ๅ…ฌ้‡Œ/ๅฐๆ™‚ไน‹้–“ใ€‚ - Advanced Longitudinal Tuning - ๅ…ˆ้€ฒ็ธฑๅ‘่ชฟ่ซง + ้€ฒ้šŽ็ธฑๅ‘่ชฟๆ ก - Advanced settings for customizing how openpilot handles acceleration and braking. - ้€ฒ้šŽ่จญๅฎšไปฅ่‡ช่จ‚ openpilot ๅฆ‚ไฝ•่™•็†ๅŠ ้€Ÿๅ’Œๅˆถๅ‹•ใ€‚ + <b>Advanced acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>้€ฒ้šŽๅŠ ้€Ÿ่ˆ‡็…ž่ปŠๆŽงๅˆถ่ฎŠๆ›ด</b>๏ผŒ็ดฐ่ชฟ openpilot ็š„้ง•้ง›ๆ–นๅผใ€‚ Actuator Delay (Default: %1) - ่‡ดๅ‹•ๅ™จๅปถ้ฒ๏ผˆ้ ่จญ๏ผš%1๏ผ‰ + ่‡ดๅ‹•ๅ™จๅปถ้ฒ๏ผˆ้ ่จญ๏ผš%1๏ผ‰ Actuator Delay - ่‡ดๅ‹•ๅ™จๅปถ้ฒ + ่‡ดๅ‹•ๅ™จๅปถ้ฒ - Delay before throttle or brake takes effect. Higher values smooth slow actuators but can feel laggy; lower values react quicker but may overshoot. - ็ฏ€ๆต้–ฅๆˆ–ๅ‰Ž่ปŠ็”Ÿๆ•ˆๅ‰็š„ๅปถ้ฒใ€‚่ผƒ้ซ˜็š„ๅ€ผๅฏไปฅๅนณๆป‘็ทฉๆ…ข็š„ๅŸท่กŒๅ™จ๏ผŒไฝ†ๅฏ่ƒฝๆ„Ÿ่ฆบ้ฒ็ทฉ๏ผ›่ผƒไฝŽ็š„ๅ€ผๅๆ‡‰ๆ›ดๅฟซ๏ผŒไฝ†ๅฏ่ƒฝ่ถ…ๅ‡บ้ ๆœŸใ€‚ + <b>The time between openpilot's throttle or brake command and the vehicle's response.</b> Increase if the vehicle feels slow to react; decrease if it feels too eager or overshoots. + <b>openpilot ๆฒน้–€ๆˆ–็…ž่ปŠๆŒ‡ไปค่ˆ‡่ปŠ่ผ›ๅฏฆ้š›ๅๆ‡‰ไน‹้–“็š„ๆ™‚้–“ใ€‚</b> ่‹ฅ่ปŠ่ผ›ๅๆ‡‰้ฒ็ทฉ่ซ‹ๅขžๅŠ ๏ผ›่‹ฅๅๆ‡‰้Žๆ–ผ็ฉๆฅตๆˆ–่ถ…่ชฟ่ซ‹ๆธ›ๅฐ‘ใ€‚ Start Acceleration (Default: %1) - ้–‹ๅง‹ๅŠ ้€Ÿ๏ผˆ้ ่จญๅ€ผ๏ผš%1๏ผ‰ + ้–‹ๅง‹ๅŠ ้€Ÿ๏ผˆ้ ่จญ๏ผš%1๏ผ‰ Start Acceleration - ้–‹ๅง‹ๅŠ ้€Ÿ + ้–‹ๅง‹ๅŠ ้€Ÿ - Extra acceleration applied when pulling away from a stop. Increase for snappier launches at the cost of smoothness; decrease for gentler starts. - ๅพžๅœๆญข็‹€ๆ…‹่ตทๆญฅๆ™‚ๆ–ฝๅŠ ้กๅค–ๅŠ ้€Ÿใ€‚ๅขžๅŠ ไปฅ็ฒๅพ—ๆ›ด่ฟ…้€Ÿ็š„่ตทๆญฅ๏ผŒไฝ†ๆœƒ็Šง็‰ฒๅนณ้ †ๆ€ง๏ผ›ๆธ›ๅฐ‘ไปฅ็ฒๅพ—ๆ›ดๆŸ”ๅ’Œ็š„่ตทๆญฅใ€‚ + <b>Extra acceleration applied when starting from a stop.</b> Increase for quicker takeoffs; decrease for smoother, gentler starts. + <b>ๅพž้œๆญข่ตทๆญฅๆ™‚ๆ–ฝๅŠ ้กๅค–ๅŠ ้€Ÿใ€‚</b> ๅขžๅŠ ไปฅๆ›ดๅฟซ่ตทๆญฅ๏ผ›ๆธ›ๅฐ‘ไปฅๆ›ดๅนณ้ †ใ€ๆŸ”ๅ’Œๅœฐ่ตทๆญฅใ€‚ Start Speed (Default: %1) - ้–‹ๅง‹้€Ÿๅบฆ๏ผˆ้ ่จญ๏ผš%1๏ผ‰ + ่ตทๅง‹้€Ÿๅบฆ๏ผˆ้ ่จญ๏ผš%1๏ผ‰ Start Speed - ้–‹ๅง‹้€Ÿๅบฆ + ๅ•Ÿๅ‹•้€Ÿๅบฆ - Speed where openpilot begins to exit the stopped state. Higher values avoid creeping but may feel sluggish; lower values move sooner but risk creeping. - openpilot้–‹ๅง‹้€€ๅ‡บๅœๆญข็‹€ๆ…‹็š„้€Ÿๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๅฏ้ฟๅ…็ทฉๆ…ข็งปๅ‹•๏ผŒไฝ†ๅฏ่ƒฝๆ„Ÿ่ฆบ้ฒ็ทฉ๏ผ›่ผƒไฝŽ็š„ๅ€ผๅ‰‡่ผƒๆ—ฉ็งปๅ‹•๏ผŒไฝ†ๆœ‰็ทฉๆ…ข็งปๅ‹•็š„้ขจ้šชใ€‚ + <b>The speed at which openpilot exits the stopped state.</b> Increase to reduce creeping; decrease to move sooner after stopping. + <b>openpilot ้€€ๅ‡บๅœๆญข็‹€ๆ…‹็š„้€Ÿๅบฆใ€‚</b>ๆ้ซ˜ไปฅๆธ›ๅฐ‘็ทฉๆ…ขๅ‰้€ฒ๏ผ›้™ไฝŽไปฅๅœจๅœๆญขๅพŒๆ›ดๅฟซ้–‹ๅง‹็งปๅ‹•ใ€‚ Stop Acceleration (Default: %1) - ๅœๆญขๅŠ ้€Ÿ๏ผˆ้ ่จญ๏ผš%1๏ผ‰ + ๅœๆญขๅŠ ้€Ÿ๏ผˆ้ ่จญ๏ผš%1๏ผ‰ Stop Acceleration - ๅœๆญขๅŠ ้€Ÿ + ๅœๆญขๅŠ ้€Ÿ - Brake force applied to hold the vehicle still. Larger values prevent creeping on hills but might jerk to a stop. Smaller values can feel smoother but may allow rolling. - ๆ–ฝๅŠ ๅˆถๅ‹•ๅŠ›ไปฅไฟๆŒ่ปŠ่ผ›้œๆญขใ€‚่ผƒๅคง็š„ๆ•ธๅ€ผๅฏ้˜ฒๆญขๅœจๅก้“ไธŠๆป‘ๅ‹•๏ผŒไฝ†ๅฏ่ƒฝๆœƒ็ช็„ถๅœไธ‹ใ€‚่ผƒๅฐ็š„ๆ•ธๅ€ผๆ„Ÿ่ฆบ่ผƒๅนณ็ฉฉ๏ผŒไฝ†ๅฏ่ƒฝๆœƒๅ…่จฑๆปพๅ‹•ใ€‚ + <b>Brake force applied to hold the vehicle at a standstill.</b> Increase to prevent rolling on hills; decrease for smoother, softer stops. + <b>ๆ–ฝๅŠ ๅˆถๅ‹•ๅŠ›ไปฅไฝฟ่ปŠ่ผ›ไฟๆŒ้œๆญขใ€‚</b> ไธŠๅกๆ™‚ๅขžๅŠ ไปฅ้˜ฒๆญขๆบœ่ปŠ๏ผ›ๆธ›ๅฐ‘ๅฏ็ฒๅพ—ๆ›ดๅนณ้ †ใ€ๆŸ”ๅ’Œ็š„็…žๅœใ€‚ Stopping Rate (Default: %1) - ๅœๆญข็އ๏ผˆ้ ่จญ๏ผš%1๏ผ‰ + ๅœๆญข็އ๏ผˆ้ ่จญ๏ผš%1๏ผ‰ Stopping Rate - ๅœๆญข็އ + ๆธ›้€Ÿ็އ - How quickly braking ramps up when stopping. Faster rates shorten stopping distance but can be harsh; slower rates are smoother but need more room. - ๅ‰Ž่ปŠๆ™‚ๅŠ ้€Ÿ็š„้€Ÿๅบฆใ€‚่ผƒๅฟซ็š„้€Ÿๅบฆ็ธฎ็Ÿญไบ†ๅœๆญข่ท้›ข๏ผŒไฝ†ๅฏ่ƒฝๆœƒ่ผƒ็‚บๅЇ็ƒˆ๏ผ›่ผƒๆ…ข็š„้€Ÿๅบฆ่ผƒ็‚บๅนณ็ฉฉ๏ผŒไฝ†้œ€่ฆๆ›ดๅคš็ฉบ้–“ใ€‚ + <b>How quickly braking ramps up when stopping.</b> Increase for shorter, firmer stops; decrease for smoother, longer stops. + <b>ๅœจๆธ›้€Ÿ่‡ณๅœ่ปŠๆ™‚็…ž่ปŠๅŠ ๅŠ›ๅบฆ็š„้€Ÿๅบฆใ€‚</b> ๅขžๅŠ ไปฅ็ฒๅพ—ๆ›ด็Ÿญใ€ๆ›ด็กฌ็š„็…žๅœ๏ผ›ๆธ›ๅฐ‘ไปฅ็ฒๅพ—ๆ›ดๅนณ้ †ใ€่ผƒ้•ท็š„็…žๅœใ€‚ Stop Speed (Default: %1) - ๅœๆญข้€Ÿๅบฆ๏ผˆ้ ่จญ๏ผš%1๏ผ‰ + ๅœๆญข้€Ÿๅบฆ๏ผˆ้ ่จญ๏ผš%1๏ผ‰ Stop Speed - ๅœๆญข้€Ÿๅบฆ + ๅœๆญข้€Ÿๅบฆ - Speed where openpilot beings to enter the stopped state. Higher values brake earlier for smoother stops but might stop too soon; lower values wait longer and can overshoot. - openpilot้–‹ๅง‹้€ฒๅ…ฅๅœๆญข็‹€ๆ…‹็š„้€Ÿๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๆœƒ่ผƒๆ—ฉ็…ž่ปŠไปฅๅฏฆ็พๆ›ดๅนณๆป‘็š„ๅœๆญข๏ผŒไฝ†ๅฏ่ƒฝๆœƒ้Žๆ—ฉๅœๆญข๏ผ›่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๆœƒ็ญ‰ๅพ…่ผƒไน…๏ผŒๅฏ่ƒฝๆœƒ่ถ…ๅ‡บใ€‚ + <b>The speed at which openpilot considers the vehicle stopped.</b> Increase to brake earlier and stop smoothly; decrease to wait longer but risk overshooting. + <b>openpilot ๅˆคๅฎš่ปŠ่ผ›ๅทฒๅœๆญข็š„้€Ÿๅบฆใ€‚</b> ๆ้ซ˜ๅฏๆ›ดๆ—ฉ็…ž่ปŠไธฆๆ›ดๅนณ้ †ๅœไธ‹๏ผ›้™ไฝŽๆœƒ็ญ‰ๅพ…ๆ›ดไน…ไฝ†ๆœ‰่ก้Ž้ ญ็š„้ขจ้šชใ€‚ + + + Conditional Experimental Mode + ๆขไปถๅผๅฏฆ้ฉ—ๆจกๅผ + + + <b>Automatically switch to "Experimental Mode" when set conditions are met.</b> Allows the model to handle challenging situations with smarter decision making. + <b>็•ถ็ฌฆๅˆ่จญๅฎšๆขไปถๆ™‚่‡ชๅ‹•ๅˆ‡ๆ›่‡ณใ€Œๅฏฆ้ฉ—ๆจกๅผใ€ใ€‚</b> ่ฎ“ๆจกๅž‹ไปฅๆ›ดๆ™บๆ…ง็š„ๆฑบ็ญ–่™•็†ๅ…ทๆŒ‘ๆˆฐๆ€ง็š„ๆƒ…ๆณใ€‚ + + + Below + ไธ‹ๆ–น + + + <b>Switch to "Experimental Mode" when driving below this speed without a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>ๅœจ็„กๅ‰่ปŠไธ”่ปŠ้€ŸไฝŽๆ–ผๆญค้€Ÿๅบฆๆ™‚ๅˆ‡ๆ›ๅˆฐใ€Œๅฏฆ้ฉ—ๆจกๅผใ€</b>๏ผŒไปฅๅ”ๅŠฉ openpilot ๆ›ด้ †ๆšขๅœฐ่™•็†ไฝŽ้€Ÿๆƒ…ๆณใ€‚ + + + Curve Detected Ahead + ๅ‰ๆ–นๅตๆธฌๅˆฐๅฝŽ้“ + + + <b>Switch to "Experimental Mode" when a curve is detected</b> to allow the model to set an appropriate speed for the curve. + <b>ๅœจๅตๆธฌๅˆฐๅฝŽ้“ๆ™‚ๅˆ‡ๆ›ๅˆฐใ€ŒExperimental Modeใ€</b>๏ผŒไปฅๅ…่จฑๆจกๅž‹็‚บ่ฉฒๅฝŽ้“่จญๅฎš้ฉ็•ถ็š„้€Ÿๅบฆใ€‚ + + + Lead Detected Ahead + ๅตๆธฌๅˆฐๅ‰ๆ–น่ปŠ่ผ› + + + <b>Switch to "Experimental Mode" when a slower or stopped vehicle is detected.</b> Can make braking smoother and more reliable on some vehicles. + <b>็•ถๅตๆธฌๅˆฐ่ผƒๆ…ขๆˆ–ๅœไฝ็š„่ปŠ่ผ›ๆ™‚ๅˆ‡ๆ›่‡ณใ€Œๅฏฆ้ฉ—ๆจกๅผใ€ใ€‚</b> ๅœจ้ƒจๅˆ†่ปŠ่ผ›ไธŠๅฏไฝฟ็…ž่ปŠๆ›ดๅนณ้ †ไธ”ๆ›ดๅฏ้ ใ€‚ + + + Navigation-Based + ๅŸบๆ–ผๅฐŽ่ˆช + + + <b>Switch to "Experimental Mode" when approaching intersections or turns on the active route</b> while using "Navigate on openpilot" (NOO) to allow the model to set an appropriate speed for upcoming maneuvers. + <b>ๅœจไฝฟ็”จใ€ŒNavigate on openpilotใ€๏ผˆNOO๏ผ‰ๆ™‚๏ผŒๆŽฅ่ฟ‘ไธปๅ‹•่ทฏ็ทšไธŠ็š„่ทฏๅฃๆˆ–่ฝ‰ๅฝŽ่ซ‹ๅˆ‡ๆ›่‡ณใ€Œๅฏฆ้ฉ—ๆจกๅผใ€</b>๏ผŒไปฅไพฟๆจกๅž‹็‚บๅณๅฐ‡้€ฒ่กŒ็š„ๆ“ไฝœ่จญๅฎš้ฉ็•ถ้€Ÿๅบฆใ€‚ + + + Predicted Stop In + ้ ๆธฌๅœ่ปŠๆ–ผ + + + <b>Switch to "Experimental Mode" when openpilot predicts a stop within the set time.</b> This is usually triggered when the model "sees" a red light or stop sign ahead.<br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>็•ถ openpilot ้ ๆธฌๅœจ่จญๅฎš็š„ๆ™‚้–“ๅ…ง้œ€่ฆๅœ่ปŠๆ™‚๏ผŒๅˆ‡ๆ›ๅˆฐใ€Œๅฏฆ้ฉ—ๆจกๅผใ€ใ€‚</b> ้€™้€šๅธธๅœจๆจกๅž‹ใ€Œ็œ‹ๅˆฐใ€ๅ‰ๆ–นๆœ‰็ด…็‡ˆๆˆ–ๅœๆญขๆจ™่ชŒๆ™‚่งธ็™ผใ€‚<br><br><i><b>ๅ…่ฒฌ่ฒๆ˜Ž</b>๏ผšopenpilot ไธๆœƒๆ˜Ž็ขบๅตๆธฌไบค้€š่™Ÿ่ชŒๆˆ–ๅœๆญขๆจ™่ชŒใ€‚ๅœจใ€Œๅฏฆ้ฉ—ๆจกๅผใ€ไธญ๏ผŒopenpilot ๆœƒๅพž็›ธๆฉŸ่ผธๅ…ฅ้€ฒ่กŒ็ซฏๅˆฐ็ซฏ้ง•้ง›ๆฑบ็ญ–๏ผŒ้€™่กจ็คบๅณไฝฟๆฒ’ๆœ‰ๆ˜Ž็ขบ็†็”ฑไนŸๅฏ่ƒฝๆœƒๅœ่ปŠใ€‚</i> + + + Turn Signal Below + ่ฝ‰ๅ‘็‡ˆๅœจไธ‹ๆ–น + + + <b>Switch to "Experimental Mode" when using a turn signal below the set speed</b> to allow the model to choose an appropriate speed for smoother left and right turns. + <b>ๅœจ่จญๅฎš้€Ÿๅบฆไปฅไธ‹ไฝฟ็”จๆ–นๅ‘็‡ˆๆ™‚ๅˆ‡ๆ›่‡ณใ€Œๅฏฆ้ฉ—ๆจกๅผใ€</b>๏ผŒไปฅๅ…่จฑๆจกๅž‹้ธๆ“‡ๅˆ้ฉ็š„้€Ÿๅบฆ๏ผŒ่ฎ“ๅทฆๅณ่ฝ‰ๆ›ดๅนณ้ †ใ€‚ + + + Status Widget + ็‹€ๆ…‹ๅฐๅทฅๅ…ท + + + <b>Show which condition triggered "Experimental Mode"</b> on the driving screen. + <b>ๅœจ้ง•้ง›็•ซ้ขไธŠ้กฏ็คบ่งธ็™ผใ€Œๅฏฆ้ฉ—ๆจกๅผใ€็š„ๆขไปถ</b> + + + Curve Speed Controller + ๅฝŽ้“้€ŸๅบฆๆŽงๅˆถๅ™จ + + + <b>Automatically slow down for upcoming curves</b> using data learned from your driving style, adapting to curves as you would. + <b>่‡ชๅ‹•็‚บๅ‰ๆ–นๅฝŽ้“ๆธ›้€Ÿ</b>๏ผŒๆ นๆ“šๅพžไฝ ็š„้ง•้ง›้ขจๆ ผๅญธๅˆฐ็š„่ณ‡ๆ–™่ชฟๆ•ด๏ผŒๅœจๅฝŽ้“ไธญๅฆ‚ๅŒไฝ ๆœฌไบบไธ€่ˆฌใ€‚ + + + Calibrated Lateral Acceleration + ๅทฒๆ กๆบ–็š„ๆฉซๅ‘ๅŠ ้€Ÿๅบฆ + + + <b>The learned lateral acceleration from collected driving data.</b> This sets how fast openpilot will take curves. Higher values allow faster cornering; lower values slow the vehicle for gentler turns. + <b>ๆ นๆ“šๆ”ถ้›†็š„้ง•้ง›่ณ‡ๆ–™ๅญธ็ฟ’ๅˆฐ็š„ๆฉซๅ‘ๅŠ ้€Ÿๅบฆใ€‚</b> ้€™ๆœƒ่จญๅฎš openpilot ้€š้ŽๅฝŽ้“็š„้€Ÿๅบฆใ€‚่ผƒ้ซ˜็š„ๆ•ธๅ€ผๅ…่จฑๆ›ดๅฟซ้ŽๅฝŽ๏ผ›่ผƒไฝŽ็š„ๆ•ธๅ€ผๆœƒๆ”พๆ…ข่ปŠ้€Ÿไปฅๆ›ดๅนณ้ †่ฝ‰ๅฝŽใ€‚ + + + Calibration Progress + ๆ กๆบ–้€ฒๅบฆ + + + <b>How much curve data has been collected.</b> This is a progress meter; it is normal for the value to stay low and rarely reach 100%. + <b>ๅทฒๆ”ถ้›†ๅคšๅฐ‘ๅฝŽ้“่ณ‡ๆ–™ใ€‚</b> ้€™ๆ˜ฏไธ€ๅ€‹้€ฒๅบฆๆŒ‡ๆจ™๏ผ›ๆ•ธๅ€ผ็ถญๆŒๅœจไฝŽไฝไธ”ๅพˆๅฐ‘้”ๅˆฐ 100% ๅฑฌๆ–ผๆญฃๅธธๆƒ…ๆณใ€‚ + + + Reset Curve Data + ้‡่จญๆ›ฒ็ทš่ณ‡ๆ–™ + + + <b>Reset collected user data for "Curve Speed Controller".</b> + <b>้‡่จญใ€ŒCurve Speed Controllerใ€็š„ๅทฒๆ”ถ้›†ไฝฟ็”จ่€…่ณ‡ๆ–™ใ€‚</b> + + + <b>Show the "Curve Speed Controller" target speed on the driving screen.</b> + <b>ๅœจ้ง•้ง›็•ซ้ขไธŠ้กฏ็คบใ€Œๆ›ฒ็ทš้€ŸๅบฆๆŽงๅˆถๅ™จใ€็›ฎๆจ™้€Ÿๅบฆใ€‚</b> + + + Driving Personalities + ้ง•้ง›ๅ€‹ๆ€ง + + + <b>Customize the "Driving Personalities"</b> to better match your driving style. + <b>่‡ช่จ‚ใ€Œ้ง•้ง›ๅ€‹ๆ€งใ€</b>ไปฅๆ›ด่ฒผๅˆไฝ ็š„้ง•้ง›้ขจๆ ผใ€‚ + + + Traffic Mode + ไบค้€šๆจกๅผ + + + <b>Customize the "Traffic Mode" personality profile.</b> Designed for stop-and-go driving. + <b>่‡ช่จ‚ใ€Œ่ปŠๆตๆจกๅผใ€ๅ€‹ๆ€ง่จญๅฎšๆช”ใ€‚</b> ๅฐˆ็‚บ่ตฐ่ตฐๅœๅœ็š„้ง•้ง›่€Œ่จญ่จˆใ€‚ + + + Following Distance + ่ทŸ่ปŠ่ท้›ข + + + <b>The minimum following distance to the lead vehicle in "Traffic Mode".</b> openpilot blends between this value and the "Aggressive" profile as speed increases. Increase for more space; decrease for tighter gaps. + <b>ใ€Œไบค้€šๆจกๅผใ€ไธ‹ๅฐๅ‰่ปŠ็š„ๆœ€ๅฐ่ทŸ่ปŠ่ท้›ขใ€‚</b> ้šจ่‘—้€ŸๅบฆๅขžๅŠ ๏ผŒopenpilot ๆœƒๅœจๆญคๆ•ธๅ€ผ่ˆ‡ใ€Œๆฟ€้€ฒใ€่จญๅฎšๆช”ไน‹้–“ๅนณๆป‘ๅˆ‡ๆ›ใ€‚ๅขžๅŠ ๅฏ็•™ๅ‡บๆ›ดๅคš็ฉบ้–“๏ผ›ๆธ›ๅฐ‘ๅฏ็ธฎๅฐ้–“่ทใ€‚ + + + Acceleration Smoothness + ๅŠ ้€Ÿๅนณ้ †ๆ€ง + + + <b>How smoothly openpilot accelerates in "Traffic Mode".</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>ๅœจใ€Œไบค้€šๆจกๅผใ€ไธ‹ openpilot ๅŠ ้€Ÿ็š„ๅนณ้ †ๅบฆใ€‚</b> ๅขžๅŠ ๅฏ่ฎ“่ตทๆญฅๆ›ดๆบซๅ’Œ๏ผ›ๆธ›ๅฐ‘ๅ‰‡่ตทๆญฅๆ›ดๅฟซ้€Ÿไฝ†ๆ›ด็ชๅ…€ใ€‚ + + + Braking Smoothness + ๅˆถๅ‹•ๅนณ้ †ๆ€ง + + + <b>How smoothly openpilot brakes in "Traffic Mode".</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>openpilot ๅœจใ€Œไบค้€šๆจกๅผใ€ไธ‹็…ž่ปŠ็š„ๅนณ้ †็จ‹ๅบฆใ€‚</b> ๅขžๅŠ ไปฅ็ฒๅพ—่ผƒๆŸ”ๅ’Œ็š„ๅœ่ปŠ๏ผ›ๆธ›ๅฐ‘ไปฅๆ›ดๅฟซ้€Ÿไฝ†่ผƒ้Šณๅˆฉ็š„็…ž่ปŠใ€‚ + + + Safety Gap Bias + ๅฎ‰ๅ…จ้–“่ทๅ็ฝฎ + + + <b>How much extra space openpilot keeps from the vehicle ahead in "Traffic Mode".</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>ใ€Œ่ปŠๆตๆจกๅผใ€ไธญ๏ผŒopenpilot ่ˆ‡ๅ‰่ปŠไฟๆŒ็š„้กๅค–่ท้›ขใ€‚</b> ๅขžๅŠ ไปฅ็ฒๅพ—ๆ›ดๅคง้–“่ท่ˆ‡ๆ›ดไฟๅฎˆ็š„่ทŸ่ปŠ๏ผ›ๆธ›ๅฐ‘ไปฅ็ฒๅพ—ๆ›ดๅฐ้–“่ท่ˆ‡ๆ›ด่ฒผ่ฟ‘็š„่ทŸ่ปŠใ€‚ + + + Slowdown Response + ๆธ›้€Ÿๅๆ‡‰ + + + <b>How smoothly openpilot slows down in "Traffic Mode".</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>ๅœจใ€Œไบค้€šๆจกๅผใ€ไธญ openpilot ๆธ›้€Ÿ็š„ๅนณ้ †็จ‹ๅบฆใ€‚</b> ๅขžๅŠ ไปฅ็ฒๅพ—ๆ›ดๆผธ้€ฒ็š„ๆธ›้€Ÿ๏ผ›ๆธ›ๅฐ‘ๅ‰‡ๆœƒๆ›ดๅฟซไฝ†ๆ›ด้Šณๅˆฉๅœฐๆธ›้€Ÿใ€‚ + + + Speed-Up Response + ๅŠ ้€Ÿๅ›žๆ‡‰ + + + <b>How smoothly openpilot speeds up in "Traffic Mode".</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>ใ€Œไบค้€šๆจกๅผใ€ไธญ openpilot ๅŠ ้€Ÿ็š„ๅนณ้ †็จ‹ๅบฆใ€‚</b> ๅขžๅŠ ไปฅ็ฒๅพ—ๆ›ดๆผธ้€ฒ็š„ๅŠ ้€Ÿ๏ผ›ๆธ›ๅฐ‘ไปฅ็ฒๅพ—ๆ›ด่ฟ…้€Ÿไฝ†ๆ›ด้ก›็ฐธ็š„ๅŠ ้€Ÿใ€‚ + + + Reset to Defaults + ้‡่จญ็‚บ้ ่จญๅ€ผ + + + <b>Reset "Traffic Mode" settings to defaults.</b> + <b>ๅฐ‡ใ€Œไบค้€šๆจกๅผใ€่จญๅฎš้‡่จญ็‚บ้ ่จญๅ€ผใ€‚</b> + + + Aggressive + ไพต็•ฅๆ€ง + + + <b>Customize the "Aggressive" personality profile.</b> Designed for assertive driving with tighter gaps. + <b>่‡ช่จ‚ใ€Œๆฟ€้€ฒใ€ๅ€‹ๆ€ง่จญๅฎšๆช”ใ€‚</b>็‚บๆžœๆ–ท้ง•้ง›่ˆ‡ๆ›ดๅฐ้–“่ท่€Œ่จญ่จˆใ€‚ + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Aggressive" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.25 seconds. + <b>ไฝฟ็”จใ€ŒAggressiveใ€่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ่ˆ‡ๅ‰่ปŠ็š„่ทŸ่ปŠ็ง’ๆ•ธใ€‚</b> ๅขžๅŠ ไปฅๆ‹‰้–‹่ท้›ข๏ผ›ๆธ›ๅฐ‘ไปฅ็ธฎๅฐ้–“่ทใ€‚<br><br>้ ่จญ๏ผš1.25 ็ง’ใ€‚ + + + <b>How smoothly openpilot accelerates with the "Aggressive" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>ไฝฟ็”จใ€Œ็ฉๆฅตใ€่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ๅŠ ้€Ÿ็š„ๅนณ้ †็จ‹ๅบฆใ€‚</b> ๅขžๅŠ ไปฅ็ฒๅพ—่ผƒๆบซๅ’Œ็š„่ตทๆญฅ๏ผ›ๆธ›ๅฐ‘ไปฅ็ฒๅพ—่ผƒๅฟซ้€Ÿไฝ†่ผƒ็ชๅ…€็š„่ตทๆญฅใ€‚ + + + <b>How smoothly openpilot brakes with the "Aggressive" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>ไฝฟ็”จใ€Œ้€ฒๅ–ใ€่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ็…ž่ปŠ็š„ๅนณ้ †็จ‹ๅบฆใ€‚</b> ๅขžๅŠ ไปฅ็ฒๅพ—่ผƒๆŸ”ๅ’Œ็š„ๆธ›้€Ÿ่ˆ‡ๅœ่ปŠ๏ผ›ๆธ›ๅฐ‘ๅฏๆ›ดๅฟซไฝ†ๆ›ด้Šณๅˆฉๅœฐ็…ž่ปŠใ€‚ + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Aggressive" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>ๅœจใ€ŒAggressiveใ€่จญๅฎšๆช”ไธ‹๏ผŒopenpilot ่ˆ‡ๅ‰่ปŠไฟๆŒ็š„้กๅค–่ท้›ขใ€‚</b> ๅขžๅŠ ไปฅ็ฒๅพ—ๆ›ดๅคง้–“่ท่ˆ‡ๆ›ด่ฌนๆ…Ž่ทŸ่ปŠ๏ผ›ๆธ›ๅฐ‘ไปฅ็ฒๅพ—ๆ›ด็ทŠๅฏ†้–“่ท่ˆ‡ๆ›ด่ฒผ่ฟ‘่ทŸ่ปŠใ€‚ + + + <b>How smoothly openpilot slows down with the "Aggressive" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>ไฝฟ็”จใ€Œ็ฉๆฅตใ€่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ๆธ›้€Ÿ็š„ๅนณ้ †็จ‹ๅบฆใ€‚</b> ๆ้ซ˜ๅฏไฝฟๆธ›้€Ÿๆ›ด็‚บๅนณ็ทฉ๏ผ›้™ไฝŽๅ‰‡ๆœƒๆ›ดๅฟซไฝ†ๆ›ด็‚บ้™กๅณญใ€‚ + + + <b>How smoothly openpilot speeds up with the "Aggressive" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>ใ€Œ็ฉๆฅตใ€่จญๅฎšๆช”ไธ‹ openpilot ๅŠ ้€Ÿ็š„ๅนณ้ †็จ‹ๅบฆใ€‚</b> ๆ้ซ˜ไปฅ็ฒๅพ—ๆ›ดๆผธ้€ฒ็š„ๅŠ ้€Ÿ๏ผ›้™ไฝŽไปฅ็ฒๅพ—ๆ›ดๅฟซ้€Ÿไฝ†ๆ›ด้ก›็ฐธ็š„ๅŠ ้€Ÿใ€‚ + + + <b>Reset the "Aggressive" profile to defaults.</b> + <b>ๅฐ‡ใ€ŒAggressiveใ€่จญๅฎšๆช”้‡่จญ็‚บ้ ่จญๅ€ผใ€‚</b> + + + Standard + ๆจ™ๆบ– + + + <b>Customize the "Standard" personality profile.</b> Designed for balanced driving with moderate gaps. + <b>่‡ช่จ‚ใ€Œๆจ™ๆบ–ใ€ๅ€‹ๆ€ง่จญๅฎšๆช”ใ€‚</b> ็‚บๅนณ่กก้ง•้ง›่€Œ่จญ่จˆ๏ผŒ่ปŠ่ท้ฉไธญใ€‚ + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Standard" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.45 seconds. + <b>ไฝฟ็”จใ€Œๆจ™ๆบ–ใ€่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ่ทŸ้šจๅ‰่ปŠ็š„็ง’ๆ•ธใ€‚</b> ๅขžๅŠ ไปฅๆ‹‰้–‹่ท้›ข๏ผ›ๆธ›ๅฐ‘ไปฅ็ธฎๅฐ่ปŠ่ทใ€‚<br><br>้ ่จญ๏ผš1.45 ็ง’ใ€‚ + + + <b>How smoothly openpilot accelerates with the "Standard" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>ไฝฟ็”จใ€Œๆจ™ๆบ–ใ€่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ๅŠ ้€Ÿ็š„ๅนณ้ †็จ‹ๅบฆใ€‚</b> ๆ้ซ˜ไปฅ็ฒๅพ—่ผƒๆŸ”ๅ’Œ็š„่ตทๆญฅ๏ผ›้™ไฝŽไปฅ็ฒๅพ—ๆ›ดๅฟซไฝ†ๆ›ด็ช็„ถ็š„่ตทๆญฅใ€‚ + + + <b>How smoothly openpilot brakes with the "Standard" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>ไฝฟ็”จใ€Œๆจ™ๆบ–ใ€่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ็…ž่ปŠ็š„ๅนณ้ †็จ‹ๅบฆใ€‚</b> ๆ้ซ˜ไปฅ็ฒๅพ—ๆ›ดๆบซๅ’Œ็š„ๆธ›้€Ÿ๏ผ›้™ไฝŽไปฅ็ฒๅพ—ๆ›ดๅฟซ้€Ÿไฝ†ๆ›ด้Šณๅˆฉ็š„็…ž่ปŠใ€‚ + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Standard" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>ใ€Œๆจ™ๆบ–ใ€่จญๅฎšๆช”ไธ‹๏ผŒopenpilot ่ˆ‡ๅ‰่ปŠไฟ็•™็š„้กๅค–่ท้›ขใ€‚</b> ๆ้ซ˜ไปฅ็ฒๅพ—ๆ›ดๅคง็š„้–“่ท่ˆ‡ๆ›ดไฟๅฎˆ็š„่ทŸ่ปŠ๏ผ›้™ไฝŽไปฅ็ฒๅพ—ๆ›ด็ทŠ็š„้–“่ท่ˆ‡ๆ›ด่ฒผ่ฟ‘็š„่ทŸ่ปŠใ€‚ + + + <b>How smoothly openpilot slows down with the "Standard" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>ไฝฟ็”จใ€Œๆจ™ๆบ–ใ€่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ๆธ›้€Ÿ็š„ๅนณ้ †็จ‹ๅบฆใ€‚</b> ๅขžๅŠ ไปฅ็ฒๅพ—ๆ›ดๆผธ้€ฒ็š„ๆธ›้€Ÿ๏ผ›้™ไฝŽไปฅ็ฒๅพ—ๆ›ดๅฟซ้€Ÿไฝ†ๆ›ดๆ€ฅไฟƒ็š„ๆธ›้€Ÿใ€‚ + + + <b>How smoothly openpilot speeds up with the "Standard" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>้ธๆ“‡ใ€Œๆจ™ๆบ–ใ€่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ๅŠ ้€Ÿ็š„ๅนณ้ †ๅบฆใ€‚</b> ่ชฟ้ซ˜ไปฅ็ฒๅพ—ๆ›ดๆผธ้€ฒ็š„ๅŠ ้€Ÿ๏ผ›่ชฟไฝŽไปฅ็ฒๅพ—ๆ›ด่ฟ…้€Ÿไฝ†่ผƒ้ก›็ฐธ็š„ๅŠ ้€Ÿใ€‚ + + + <b>Reset the "Standard" profile to defaults.</b> + <b>ๅฐ‡ใ€Œๆจ™ๆบ–ใ€่จญๅฎšๆช”้‡่จญ็‚บ้ ่จญๅ€ผใ€‚</b> + + + Relaxed + ๆ”พ้ฌ† + + + <b>Customize the "Relaxed" personality profile.</b> Designed for smoother, more comfortable driving with larger gaps. + <b>่‡ช่จ‚ใ€Œๆ”พ้ฌ†ใ€ๅ€‹ๆ€ง่จญๅฎšๆช”ใ€‚</b> ไปฅ่ผƒๅคง่ปŠ่ทๅธถไพ†ๆ›ด้ †ๆšขใ€่ˆ’้ฉ็š„้ง•้ง›้ซ”้ฉ—ใ€‚ + + + <b>How many seconds openpilot follows behind lead vehicles when using the "Relaxed" profile.</b> Increase for more space; decrease for tighter gaps.<br><br>Default: 1.75 seconds. + <b>ไฝฟ็”จใ€Œๅฏฌ้ฌ†ใ€่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ่ทŸ้šจๅ‰่ปŠ็š„็ง’ๆ•ธใ€‚</b> ๅขžๅŠ ไปฅ็•™ๅ‡บๆ›ดๅคš่ท้›ข๏ผ›ๆธ›ๅฐ‘ไปฅ็ธฎๅฐ่ปŠ่ทใ€‚<br><br>้ ่จญ๏ผš1.75 ็ง’ใ€‚ + + + <b>How smoothly openpilot accelerates with the "Relaxed" profile.</b> Increase for gentler starts; decrease for faster but more abrupt takeoffs. + <b>ไฝฟ็”จใ€Œๆ”พ้ฌ†ใ€่จญๅฎšๆช”ๆ™‚ openpilot ๅŠ ้€Ÿ็š„ๅนณ้ †็จ‹ๅบฆใ€‚</b> ๅขžๅŠ ๅฏไฝฟ่ตทๆญฅๆ›ดๆŸ”ๅ’Œ๏ผ›ๆธ›ๅฐ‘ๅฏไฝฟ่ตทๆญฅๆ›ดๅฟซ้€Ÿไฝ†ๆ›ด็ช็„ถใ€‚ + + + <b>How smoothly openpilot brakes with the "Relaxed" profile.</b> Increase for gentler stops; decrease for quicker but sharper braking. + <b>openpilot ๅœจใ€Œๆ”พ้ฌ†ใ€่จญๅฎšๆช”ไธ‹็š„็…ž่ปŠๅนณ้ †ๅบฆใ€‚</b> ๅขžๅŠ ไปฅ็ฒๅพ—ๆ›ดๆบซๅ’Œ็š„ๆธ›้€Ÿ๏ผ›ๆธ›ๅฐ‘ไปฅ็ฒๅพ—ๆ›ดๅฟซ้€Ÿไฝ†ๆ›ด้Šณๅˆฉ็š„็…ž่ปŠใ€‚ + + + <b>How much extra space openpilot keeps from the vehicle ahead with the "Relaxed" profile.</b> Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following. + <b>ๅœจใ€Œๆ”พ้ฌ†ใ€่จญๅฎšๆช”ไธ‹๏ผŒopenpilot ่ˆ‡ๅ‰่ปŠไฟๆŒ็š„้กๅค–่ท้›ขใ€‚</b> ๅขžๅŠ ไปฅ็ฒๅพ—ๆ›ดๅคง้–“่ท่ˆ‡ๆ›ดไฟๅฎˆ็š„่ทŸ่ปŠ๏ผ›ๆธ›ๅฐ‘ไปฅ็ฒๅพ—ๆ›ดๅฐ้–“่ท่ˆ‡ๆ›ด่ฒผ่ฟ‘็š„่ทŸ่ปŠใ€‚ + + + <b>How smoothly openpilot slows down with the "Relaxed" profile.</b> Increase for more gradual deceleration; decrease for faster but sharper slowdowns. + <b>ไฝฟ็”จใ€Œๆ”พ้ฌ†ใ€่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ๆธ›้€Ÿ็š„ๅนณ้ †็จ‹ๅบฆใ€‚</b> ๅขžๅŠ ไปฅ็ฒๅพ—ๆ›ดๆผธ้€ฒ็š„ๆธ›้€Ÿ๏ผ›ๆธ›ๅฐ‘ๅ‰‡ๆœƒๆ›ดๅฟซไฝ†ๆ›ด้Šณๅˆฉๅœฐๆธ›้€Ÿใ€‚ + + + <b>How smoothly openpilot speeds up with the "Relaxed" profile.</b> Increase for more gradual acceleration; decrease for quicker but more jolting acceleration. + <b>ไฝฟ็”จใ€Œๆ”พ้ฌ†ใ€่จญๅฎšๆช”ๆ™‚๏ผŒopenpilot ๅŠ ้€Ÿ็š„ๅนณ้ †็จ‹ๅบฆใ€‚</b>ๅขžๅŠ ไปฅ็ฒๅพ—ๆ›ดๆผธ้€ฒ็š„ๅŠ ้€Ÿ๏ผ›ๆธ›ๅฐ‘ๅ‰‡ๅŠ ้€Ÿๆ›ดๅฟซไฝ†ๆ›ด้ก›็ฐธใ€‚ + + + <b>Reset the "Relaxed" profile to defaults.</b> + <b>ๅฐ‡ใ€Œๆ”พ้ฌ†ใ€่จญๅฎšๆช”้‡่จญ็‚บ้ ่จญๅ€ผใ€‚</b> + + + Longitudinal Tuning + ็ธฑๅ‘่ชฟๆ ก + + + <b>Acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>ๅŠ ้€Ÿ่ˆ‡็…ž่ปŠๆŽงๅˆถ่ฎŠๆ›ด</b>ไปฅๅพฎ่ชฟ openpilot ็š„้ง•้ง›ๆ–นๅผใ€‚ + + + Acceleration Profile + ๅŠ ้€Ÿ่จญๅฎšๆช” + + + <b>How quickly openpilot speeds up.</b> "Eco" is gentle and efficient, "Sport" is firmer and more responsive, and "Sport+" accelerates at the maximum rate allowed. + <b>openpilot ๅŠ ้€Ÿ็š„ๅฟซๆ…ขใ€‚</b>ใ€ŒEcoใ€่ผƒๆบซๅ’Œไธ”้ซ˜ๆ•ˆใ€ใ€ŒSportใ€่ผƒ็ดฎๅฏฆไธ”ๆ›ด้ˆๆ•๏ผŒ่€Œใ€ŒSport+ใ€ๆœƒไปฅๅ…่จฑ็š„ๆœ€ๅคง้€Ÿ็އๅŠ ้€Ÿใ€‚ + + + Deceleration Profile + ๆธ›้€Ÿ่จญๅฎšๆช” + + + <b>How firmly openpilot slows down.</b> "Eco" favors coasting, "Sport" applies stronger braking. + <b>openpilot ๆธ›้€Ÿ็š„ๅŠ›ๅบฆใ€‚</b>ใ€ŒEcoใ€ๅๅ‘ๆป‘่กŒ๏ผŒใ€ŒSportใ€ๆ–ฝๅŠ ๆ›ดๅผท็š„ๅˆถๅ‹•ใ€‚ + + + Human-Like Acceleration + ้กžไผผไบบ้กž็š„ๅŠ ้€Ÿ + + + <b>Acceleration that mimics human behavior</b> by easing the throttle at low speeds and adding extra power when taking off from a stop. + <b>ๆจกๆ“ฌไบบ้กž่กŒ็‚บ็š„ๅŠ ้€Ÿ</b>๏ผšๅœจไฝŽ้€Ÿๆ™‚ๆ”พ้ฌ†ๆฒน้–€๏ผŒไธฆๅœจ่ตทๆญฅๆ™‚ๆไพ›้กๅค–ๅ‹•ๅŠ›ใ€‚ + + + Human-Like Following + ้กžไบบๅŒ–่ทŸ่ปŠ + + + Lead Detection Sensitivity + ๅ‰่ปŠๅตๆธฌ้ˆๆ•ๅบฆ + + + <b>How sensitive openpilot is to detecting vehicles.</b> Higher sensitivity allows quicker detection at longer distances but may react to non-vehicle objects; lower sensitivity is more conservative and reduces false detections. + <b>openpilot ๅฐๅตๆธฌ่ปŠ่ผ›็š„ๆ•ๆ„Ÿๅบฆใ€‚</b> ่ผƒ้ซ˜ๆ•ๆ„Ÿๅบฆๅฏๅœจๆ›ด้ ่ท้›ขๆ›ดๅฟซๅตๆธฌ๏ผŒไฝ†ๅฏ่ƒฝๅฐ้ž่ปŠ่ผ›็‰ฉ้ซ”็”ข็”Ÿๅๆ‡‰๏ผ›่ผƒไฝŽๆ•ๆ„Ÿๅบฆ่ผƒ็‚บไฟๅฎˆไธฆๅฏๆธ›ๅฐ‘่ชคๅตๆธฌใ€‚ + + + Maximum Acceleration + ๆœ€ๅคงๅŠ ้€Ÿๅบฆ + + + <b>Limit the strongest acceleration</b> openpilot can command. + <b>้™ๅˆถ</b> openpilot ๅฏๆŒ‡ไปค็š„ๆœ€ๅผทๅŠ ้€Ÿใ€‚ + + + "Taco Bell Run" Turn Speed Hack + ใ€ŒTaco Bell Runใ€่ฝ‰ๅฝŽ้€Ÿๅบฆ็ ด่งฃ + + + <b>The turn-speed hack from comma's 2022 "Taco Bell Run".</b> Designed to slow down for left and right turns. + <b>ไพ†่‡ช comma ๆ–ผ 2022 ๅนดใ€ŒTaco Bell Runใ€็š„่ฝ‰ๅฝŽ้€Ÿๅบฆ hackใ€‚</b>่จญ่จˆ็”จๆ–ผๅœจๅทฆ่ฝ‰่ˆ‡ๅณ่ฝ‰ๆ™‚ๆธ›้€Ÿใ€‚ + + + Quality of Life + ็”Ÿๆดปๅ“่ณช + + + <b>Miscellaneous acceleration and braking control changes</b> to fine-tune how openpilot drives. + <b>ๅ…ถไป–ๅŠ ๆธ›้€Ÿ่ˆ‡็…ž่ปŠๆŽงๅˆถ่ฎŠๆ›ด</b>๏ผŒ็”จๆ–ผๅพฎ่ชฟ openpilot ็š„้ง•้ง›่กŒ็‚บใ€‚ + + + Cruise Interval + ๅฎš้€Ÿ่ปŠ่ท + + + <b>How much the set speed increases or decreases</b> for each + or โ€“ cruise control button press. + <b>ๆฏๆฌกๆŒ‰ไธ‹ๅทก่ˆชๆŽงๅˆถ็š„ + ๆˆ– โ€“ ๆŒ‰้ˆ•ๆ™‚</b> ่จญๅฎš้€ŸๅบฆๅขžๅŠ ๆˆ–ๆธ›ๅฐ‘็š„ๅน…ๅบฆ + + + Cruise Interval (Hold) + ๅฎš้€Ÿ้–“่ท๏ผˆๆŒ‰ไฝ๏ผ‰ + + + <b>How much the set speed increases or decreases while holding the + or โ€“ cruise control buttons.</b> + <b>ๆŒ‰ไฝ + ๆˆ– โ€“ ๅฎš้€Ÿๅทก่ˆชๆŒ‰้ˆ•ๆ™‚๏ผŒ่จญๅฎš้€ŸๅบฆๅขžๅŠ ๆˆ–ๆธ›ๅฐ‘็š„ๅน…ๅบฆใ€‚</b> + + + Force Stop at "Detected" Stop Lights/Signs + ๅœจใ€Œๅทฒๅตๆธฌๅˆฐใ€็ด…็ถ ็‡ˆ๏ผๅœ่ปŠๆจ™่ชŒ่™•ๅผทๅˆถๅœ่ปŠ + + + <b>Force openpilot to stop whenever the driving model "detects" a red light or stop sign.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights or stop signs. In "Experimental Mode", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason.</i> + <b>็•ถ้ง•้ง›ๆจกๅž‹ใ€Œๅตๆธฌๅˆฐใ€็ด…็‡ˆๆˆ–ๅœ่ปŠๆจ™่ชŒๆ™‚๏ผŒๅผทๅˆถ openpilot ๅœ่ปŠใ€‚</b><br><br><i><b>ๅ…่ฒฌ่ฒๆ˜Ž</b>๏ผšopenpilot ไธฆไธๆœƒๆ˜Ž็ขบๅตๆธฌ่™Ÿ่ชŒๆˆ–ๅœ่ปŠๆจ™่ชŒใ€‚ๅœจใ€Œๅฏฆ้ฉ—ๆจกๅผใ€ไธญ๏ผŒopenpilot ๆœƒๆ นๆ“šๆ”ๅฝฑๆฉŸ่ผธๅ…ฅ็ซฏๅˆฐ็ซฏๅšๅ‡บ้ง•้ง›ๆฑบ็ญ–๏ผŒ้€™่กจ็คบๅณไฝฟๆฒ’ๆœ‰ๆ˜Ž็ขบ็†็”ฑไนŸๅฏ่ƒฝๅœ่ปŠใ€‚</i> + + + Increase Stopped Distance by: + ๅฐ‡้œๆญข่ท้›ขๅขžๅŠ ๏ผš + + + <b>Add extra space when stopped behind vehicles.</b> Increase for more room; decrease for shorter gaps. + <b>ๅœจ่ปŠ่ผ›ๅพŒๆ–นๅœๆญขๆ™‚ๅขžๅŠ ้กๅค–้–“่ทใ€‚</b> ๅขžๅŠ ไปฅ็ฒๅพ—ๆ›ดๅคš็ฉบ้–“๏ผ›ๆธ›ๅฐ‘ไปฅ็ธฎ็Ÿญ้–“่ทใ€‚ + + + Map Accel/Decel to Gears + ๅฐ‡ๅŠ ้€Ÿ/ๆธ›้€Ÿๅฐๆ‡‰่‡ณๆช”ไฝ + + + <b>Map the Acceleration or Deceleration profiles to the vehicle's "Eco" and "Sport" gear modes.</b> + <b>ๅฐ‡ๅŠ ้€Ÿๆˆ–ๆธ›้€Ÿ่จญๅฎšๆช”ๅฐๆ‡‰่‡ณ่ปŠ่ผ›็š„ใ€ŒEcoใ€่ˆ‡ใ€ŒSportใ€ๆช”ไฝๆจกๅผใ€‚</b> + + + Offset Set Speed by: + ๅฐ‡่จญๅฎš้€Ÿๅบฆๅ็งป๏ผš + + + <b>Increase the set speed by the chosen offset.</b> For example, set +5 if you usually drive 5 over the limit. + <b>ไปฅๆ‰€้ธไฝ็งปๅขžๅŠ ่จญๅฎš่ปŠ้€Ÿใ€‚</b> ไพ‹ๅฆ‚๏ผŒๅฆ‚ๆžœไฝ ้€šๅธธ่ถ…้€Ÿ 5๏ผŒๅ‰‡่จญๅฎš็‚บ +5ใ€‚ + + + Reverse Cruise Increase + ๅ€’่ปŠๅทก่ˆชๅŠ ้€Ÿ + + + <b>Reverse the cruise control button behavior</b> so a short press increases the set speed by 5 instead of 1. + <b>ๅ่ฝ‰ๅฎš้€Ÿๅทก่ˆชๆŒ‰้ˆ•่กŒ็‚บ</b>๏ผŒไฝฟ็ŸญๆŒ‰ๅฐ‡่จญๅฎš้€Ÿๅบฆๆ้ซ˜ 5๏ผˆ่€Œ้ž 1๏ผ‰ใ€‚ + + + Increase Following Distance by: + ๅฐ‡่ทŸ่ปŠ่ท้›ขๅขžๅŠ ๏ผš + + + Reduce Acceleration by: + ้™ไฝŽๅŠ ้€Ÿๅบฆ๏ผš + + + Reduce Speed in Curves by: + ๅœจๅฝŽ้“ๆธ›้€Ÿ๏ผš + + + Snow + ้›ช + + + <b>Driving adjustments for snowy conditions.</b> + <b>้‡ๅฐไธ‹้›ชๆขไปถ็š„้ง•้ง›่ชฟๆ•ดใ€‚</b> + + + <b>Add extra space behind lead vehicles in snow.</b> Increase for more space; decrease for tighter gaps. + <b>ๅœจ้›ชๅคฉๅœจๅ‰่ปŠๅพŒๆ–น็•™ๅ‡บ้กๅค–่ท้›ขใ€‚</b> ๅขžๅŠ ไปฅ็ฒๅพ—ๆ›ดๅคš็ฉบ้–“๏ผ›ๆธ›ๅฐ‘ไปฅ็ธฎๅฐ่ปŠ่ทใ€‚ + + + <b>Add extra buffer when stopped behind vehicles in snow.</b> Increase for more room; decrease for shorter gaps. + <b>ๅœจ้›ชไธญๅœๅœจ่ปŠ่ผ›ๅพŒๆ–นๆ™‚ๅขžๅŠ ้กๅค–็ทฉ่ก่ท้›ขใ€‚</b> ๅขžๅŠ ไปฅ็ฒๅพ—ๆ›ดๅคš็ฉบ้–“๏ผ›ๆธ›ๅฐ‘ไปฅ็ธฎ็Ÿญ้–“่ทใ€‚ + + + <b>Lower the maximum acceleration in snow.</b> Increase for softer takeoffs; decrease for quicker but less stable takeoffs. + <b>ๅœจไธ‹้›ชๆ™‚้™ไฝŽๆœ€ๅคงๅŠ ้€Ÿๅบฆใ€‚</b> ๆ้ซ˜ๅฏไฝฟ่ตทๆญฅๆ›ดๆŸ”ๅ’Œ๏ผ›้™ไฝŽๅฏไฝฟ่ตทๆญฅๆ›ด่ฟ…้€Ÿไฝ†่ผƒไธ็ฉฉๅฎšใ€‚ + + + <b>Lower the desired speed while driving through curves in snow.</b> Increase for safer, gentler turns; decrease for more aggressive driving in curves. + <b>ๅœจ็ฉ้›ชไธญ่กŒ็ถ“ๅฝŽ้“ๆ™‚่ซ‹้™ไฝŽ่จญๅฎš่ปŠ้€Ÿใ€‚</b> ๆ้ซ˜ๅฏไฝฟ่ฝ‰ๅฝŽๆ›ดๅฎ‰ๅ…จใ€ๆ›ดๅนณ้ †๏ผ›้™ไฝŽๅ‰‡ๅœจๅฝŽ้“ไธญๆ›ดๅ…ทๆ”ปๆ“Šๆ€งใ€‚ + + + Speed Limit Controller + ้€Ÿ้™ๆŽงๅˆถๅ™จ + + + <b>Limit openpilot's maximum driving speed to the current speed limit</b> obtained from downloaded maps, Mapbox, Navigate on openpilot, or the dashboard for supported vehicles (Ford, Genesis, Hyundai, Kia, Lexus, Toyota). + <b>ๅฐ‡ openpilot ็š„ๆœ€้ซ˜่กŒ้ง›้€Ÿๅบฆ้™ๅˆถ็‚บ็›ฎๅ‰้€Ÿ้™</b>๏ผŒ้€Ÿ้™ไพ†ๆบๅฏ็‚บๅทฒไธ‹่ผ‰็š„ๅœฐๅœ–ใ€Mapboxใ€Navigate on openpilot๏ผŒๆˆ–ๆ”ฏๆด่ปŠๆฌพ๏ผˆFordใ€Genesisใ€Hyundaiใ€Kiaใ€Lexusใ€Toyota๏ผ‰็š„ๅ„€่กจๆฟใ€‚ + + + Fallback Speed + ๅพŒๅ‚™้€Ÿๅบฆ + + + <b>The speed used by "Speed Limit Controller" when no speed limit is found.</b><br><br>- <b>Set Speed</b>: Use the cruise set speed<br>- <b>Experimental Mode</b>: Estimate the limit using the driving model<br>- <b>Previous Limit</b>: Keep using the last confirmed limit + <b>็•ถๆ‰พไธๅˆฐ้€Ÿ้™ๆ™‚๏ผŒ"Speed Limit Controller" ไฝฟ็”จ็š„้€Ÿๅบฆใ€‚</b><br><br>- <b>่จญๅฎš้€Ÿๅบฆ</b>๏ผšไฝฟ็”จๅฎš้€Ÿๅทก่ˆช็š„่จญๅฎš้€Ÿๅบฆ<br>- <b>ๅฏฆ้ฉ—ๆจกๅผ</b>๏ผšไฝฟ็”จ้ง•้ง›ๆจกๅž‹ไผฐ็ฎ—้€Ÿ้™<br>- <b>ๅ…ˆๅ‰้€Ÿ้™</b>๏ผšๆŒ็บŒไฝฟ็”จๆœ€ๅพŒ็ขบ่ช็š„้€Ÿ้™ + + + Override Speed + ่ฆ†ๅฏซ้€Ÿๅบฆ + + + <b>The speed used by "Speed Limit Controller" after you manually drive faster than the posted limit.</b><br><br>- <b>Set with Gas Pedal</b>: Use the highest speed reached while pressing the gas<br>- <b>Max Set Speed</b>: Use the cruise set speed<br><br>Overrides clear when openpilot disengages. + <b>็•ถๆ‚จๆ‰‹ๅ‹•้ง•้ง›่ถ…้Žๅ…ฌๅ‘Š้™้€ŸๅพŒ๏ผŒใ€ŒSpeed Limit Controllerใ€ๆ‰€ไฝฟ็”จ็š„้€Ÿๅบฆใ€‚</b><br><br>- <b>ไปฅๆฒน้–€่จญๅฎš</b>๏ผšไฝฟ็”จๆŒ‰ไธ‹ๆฒน้–€ๆ™‚้”ๅˆฐ็š„ๆœ€้ซ˜้€Ÿๅบฆ<br>- <b>ๆœ€ๅคง่จญๅฎš้€Ÿๅบฆ</b>๏ผšไฝฟ็”จๅทก่ˆช่จญๅฎš้€Ÿๅบฆ<br><br>็•ถ openpilot ่งฃ้™คๆŽงๅˆถๆ™‚๏ผŒ่ฆ†ๅฏซๅฐ‡่ขซๆธ…้™คใ€‚ + + + <b>Miscellaneous "Speed Limit Controller" changes</b> to fine-tune how openpilot drives. + <b>ๅ…ถไป–ใ€Œ้€Ÿๅบฆ้™ๅˆถๆŽงๅˆถๅ™จใ€่ฎŠๆ›ด</b>ไปฅๅพฎ่ชฟ openpilot ็š„้ง•้ง›ๆ–นๅผใ€‚ + + + Confirm New Speed Limits + ็ขบ่ชๆ–ฐ้€Ÿ้™ + + + <b>Ask before changing to a new speed limit.</b> To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds. + <b>ๅœจ่ฎŠๆ›ด็‚บๆ–ฐ็š„้€Ÿ้™ๅ‰ๅ…ˆ่ฉขๅ•ใ€‚</b>่‹ฅ่ฆๆŽฅๅ—๏ผŒ่ซ‹้ปžๆ“Š่žขๅน•ไธŠ้–ƒ็ˆ็š„ๅฐๅทฅๅ…ทๆˆ–ๆŒ‰ไธ‹ Cruise Increase ๆŒ‰้ˆ•ใ€‚่‹ฅ่ฆๆ‹’็ต•๏ผŒ่ซ‹ๆŒ‰ไธ‹ Cruise Decrease ๆŒ‰้ˆ•๏ผŒๆˆ–ๅฟฝ็•ฅๆ็คบ 30 ็ง’ใ€‚ + + + Force MPH from Dashboard + ๅพžๅ„€่กจๆฟๅผทๅˆถไฝฟ็”จ MPH + + + <b>Always read dashboard speed limit signs in mph.</b> Turn this on if the cluster shows mph but the limit is interpreted as km/h. + <b>่ซ‹ๅ‹™ๅฟ…ไปฅ mph ่ฎ€ๅ–ๅ„€่กจๆฟ็š„้€Ÿ้™ๆจ™่ชŒใ€‚</b> ่‹ฅๅ„€้Œถ้กฏ็คบ็‚บ mph๏ผŒไฝ†้€Ÿ้™่ขซ่งฃ่ฎ€็‚บ km/h๏ผŒ่ซ‹้–‹ๅ•Ÿๆญค้ธ้ …ใ€‚ + + + Higher Limit Lookahead Time + ่ผƒ้ซ˜็š„้™้€Ÿๅ‰็žปๆ™‚้–“ + + + <b>How far ahead openpilot anticipates upcoming higher speed limits</b> from downloaded map data. + <b>openpilot ๅพžๅทฒไธ‹่ผ‰็š„ๅœฐๅœ–่ณ‡ๆ–™ไธญ้ ๅˆคๅณๅฐ‡ๆ้ซ˜้€Ÿ้™็š„่ท้›ข</b> + + + Lower Limit Lookahead Time + ไธ‹้™ๅ‰็žปๆ™‚้–“ + + + <b>How far ahead openpilot anticipates upcoming lower speed limits</b> from downloaded map data. + <b>openpilot ๆ นๆ“šไธ‹่ผ‰็š„ๅœฐๅœ–่ณ‡ๆ–™้ ๅˆคๅ‰ๆ–น่ผƒไฝŽ้€Ÿ้™็š„่ท้›ข</b> + + + Match Speed Limit on Engage + ๅœจๅ•Ÿ็”จๆ™‚ๅŒน้…้€Ÿ้™ + + + <b>When openpilot is first enabled, automatically set the max speed to the current posted limit.</b> + <b>้ฆ–ๆฌกๅ•Ÿ็”จ openpilot ๆ™‚๏ผŒ่‡ชๅ‹•ๅฐ‡ๆœ€้ซ˜้€Ÿๅบฆ่จญ็‚บ็›ฎๅ‰ๆจ™็คบ็š„้€Ÿ้™ใ€‚</b> + + + Use Mapbox as Fallback + ไฝฟ็”จ Mapbox ไฝœ็‚บๅพŒๅ‚™ + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>ๅœจๆฒ’ๆœ‰ๅ…ถไป–ไพ†ๆบๆ™‚ไฝฟ็”จ Mapbox ็š„้€Ÿ้™่ณ‡ๆ–™ใ€‚</b> + + + Speed Limit Source Priority + ้€Ÿ้™ไพ†ๆบๅ„ชๅ…ˆ้ †ๅบ + + + <b>The source order for speed limits</b> when more than one is available. + <b>็•ถๆœ‰ๅคšๅ€‹ๅฏ็”จๆ™‚็š„้€Ÿ้™ไพ†ๆบ้ †ๅบ</b> + + + Speed Limit Offsets + ้€Ÿ้™ๅ็งป + + + <b>Add an offset to the posted speed limit</b> to better match your driving style. + <b>็‚บๅผต่ฒผ็š„้€Ÿ้™ๆ–ฐๅขžไฝ็งป</b>๏ผŒไปฅๆ›ด็ฌฆๅˆไฝ ็š„้ง•้ง›้ขจๆ ผใ€‚ Speed Offset (0โ€“24 mph) - ้€Ÿๅบฆๅ็งป๏ผˆ0โ€“24 mph๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ0โ€“24 mph๏ผ‰ + + + <b>How much to offset posted speed-limits</b> between 0 and 24 mph. + <b>ๅผต่ฒผ้€Ÿ้™็š„ๅ็งป้‡</b>ไป‹ๆ–ผ 0 ๅˆฐ 24 mphใ€‚ Speed Offset (25โ€“34 mph) - ้€Ÿๅบฆๅ็งป๏ผˆ25โ€“34 mph๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ25โ€“34 mph๏ผ‰ + + + <b>How much to offset posted speed-limits</b> between 25 and 34 mph. + <b>ๅœจ 25 ๅˆฐ 34 mph ไน‹้–“ๅ็งปๅผต่ฒผ้€Ÿ้™็š„ๅน…ๅบฆ</b> Speed Offset (35โ€“44 mph) - ้€Ÿๅบฆๅ็งป๏ผˆ35โ€“44 mph๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ35โ€“44 mph๏ผ‰ + + + <b>How much to offset posted speed-limits</b> between 35 and 44 mph. + <b>ๅœจ 35 ๅˆฐ 44 mph ไน‹้–“๏ผŒๅผต่ฒผ้€Ÿ้™่ฆๅ็งปๅคšๅฐ‘</b> Speed Offset (45โ€“54 mph) - ้€Ÿๅบฆๅ็งป๏ผˆ45โ€“54 mph๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ45โ€“54 mph๏ผ‰ + + + <b>How much to offset posted speed-limits</b> between 45 and 54 mph. + <b>ๅœจ 45 ๅˆฐ 54 mph ไน‹้–“๏ผŒๅผต่ฒผ้€Ÿ้™็š„ๅ็งป้‡</b>ๆ˜ฏๅคšๅฐ‘ใ€‚ Speed Offset (55โ€“64 mph) - ้€Ÿๅบฆๅ็งป๏ผˆ55โ€“64 mph๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ55โ€“64 mph๏ผ‰ + + + <b>How much to offset posted speed-limits</b> between 55 and 64 mph. + <b>ๅœจ 55 ๅˆฐ 64 mph ไน‹้–“๏ผŒๅ็งปๅ…ฌๅธƒ้€Ÿ้™ๅคšๅฐ‘</b> Speed Offset (65โ€“74 mph) - ้€Ÿๅบฆๅ็งป๏ผˆ65โ€“74 mph๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ65โ€“74 mph๏ผ‰ + + + <b>How much to offset posted speed-limits</b> between 65 and 74 mph. + <b>ๅฐๅผต่ฒผ้€Ÿ้™็š„ๅ็งป้‡</b>๏ผŒๅœจ 65 ๅˆฐ 74 mph ไน‹้–“ใ€‚ Speed Offset (75โ€“99 mph) - ้€Ÿๅบฆๅ็งป๏ผˆ75โ€“99 mph๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ75โ€“99 mph๏ผ‰ - Only For Detected Lanes - ๅƒ…้™ๅตๆธฌๅˆฐ็š„่ปŠ้“ + <b>How much to offset posted speed-limits</b> between 75 and 99 mph. + <b>ๅฐ‡ๅผต่ฒผ้€Ÿ้™ๅ็งปๅคšๅฐ‘</b>๏ผŒไป‹ๆ–ผ 75 ๅˆฐ 99 mph ไน‹้–“ใ€‚ + + + Visual Settings + ่ฆ–่ฆบ่จญๅฎš + + + <b>Visual "Speed Limit Controller" changes</b> to fine-tune how the driving screen looks. + <b>่ฆ–่ฆบใ€ŒSpeed Limit Controllerใ€่ฎŠๆ›ด</b>ไปฅๅพฎ่ชฟ้ง•้ง›็•ซ้ข็š„ๅค–่ง€ใ€‚ + + + Show Speed Limit Offset + ้กฏ็คบ้€Ÿ้™ๅ็งป + + + <b>Show the current offset from the posted limit</b> on the driving screen. + <b>ๅœจ้ง•้ง›็•ซ้ขไธŠ้กฏ็คบ็›ธๅฐๅผต่ฒผ้€Ÿ้™็š„็•ถๅ‰ๅ็งป</b> + + + Show Speed Limit Sources + ้กฏ็คบ้€Ÿ้™ไพ†ๆบ + + + <b>Display the speed-limit sources and their current values</b> on the driving screen. + <b>ๅœจ่กŒ้ง›็•ซ้ขไธŠ้กฏ็คบ้€Ÿ้™ไพ†ๆบๅŠๅ…ถ็•ถๅ‰ๆ•ธๅ€ผ</b> + + + seconds + ็ง’ + + + m/sยฒ + ๅ…ฌๅฐบ/็ง’ยฒ + + + mph + ่‹ฑ้‡Œ/ๅฐๆ™‚ + + + With Lead + ๆœ‰ๅ‰่ปŠ + + + <b>Switch to "Experimental Mode" when driving below this speed with a lead</b> to help openpilot handle low-speed situations more smoothly. + <b>ๅœจๆœ‰ๅ‰่ปŠไธ”่ปŠ้€ŸไฝŽๆ–ผๆญค้€Ÿๅบฆๆ™‚ๅˆ‡ๆ›็‚บใ€Œๅฏฆ้ฉ—ๆจกๅผใ€</b>๏ผŒไปฅๅนซๅŠฉ openpilot ๆ›ด้ †ๆšขๅœฐ่™•็†ไฝŽ้€Ÿๆƒ…ๆณใ€‚ + + + Slower Lead + ๅ‰ๆ–น่ปŠ่ผ›่ผƒๆ…ข + + + Stopped Lead + ๅ‰่ปŠๅœๆญข + + + Intersections + ่ทฏๅฃ + + + Turns + ่ฝ‰ๅฝŽ + + + Off + ้—œ้–‰ + + + second + ็ง’ + + + Not For Detected Lanes + ไธ้ฉ็”จๆ–ผๅทฒๅตๆธฌ็š„่ปŠ้“ + + + RESET + ้‡่จญ + + + Are you sure you want to completely reset your curvature data? + ๆ‚จ็ขบๅฎš่ฆๅฎŒๅ…จ้‡่จญๆ‚จ็š„ๆ›ฒ็އ่ณ‡ๆ–™ๅ—Ž๏ผŸ + + + Eco + ็ฏ€่ƒฝ + + + Sport + ้‹ๅ‹• + + + Sport+ + ้‹ๅ‹•+ + + + feet + ่‹ฑๅฐบ + + + Acceleration + ๅŠ ้€Ÿ + + + Deceleration + ๆธ›้€Ÿ + + + MANAGE + ็ฎก็† + + + Set Speed + ่จญๅฎš้€Ÿๅบฆ + + + Experimental Mode + ๅฏฆ้ฉ—ๆจกๅผ + + + Previous Limit + ๅ…ˆๅ‰้€Ÿ้™ + + + None + ็„ก + + + Set With Gas Pedal + ไปฅๆฒน้–€่ธๆฟ่จญๅฎš + + + Max Set Speed + ๆœ€้ซ˜่จญๅฎš้€Ÿๅบฆ + + + SELECT + ้ธๅ– + + + Dashboard + ๅ„€่กจๆฟ + + + Map Data + ๅœฐๅœ–่ณ‡ๆ–™ + + + Navigation + ๅฐŽ่ˆช + + + Highest + ๆœ€้ซ˜ + + + Lowest + ๆœ€ไฝŽ + + + Select your primary priority + ้ธๆ“‡ไฝ ็š„ไธป่ฆๅ„ชๅ…ˆไบ‹้ … + + + Select your secondary priority + ้ธๆ“‡ไฝ ็š„ๆฌก่ฆๅ„ชๅ…ˆ้ †ๅบ + + + Select your tertiary priority + ้ธๆ“‡ไฝ ็š„็ฌฌไธ‰ๅ„ชๅ…ˆ้ †ๅบ + + + Lower Limits + ไธ‹้™ + + + Higher Limits + ๆ›ด้ซ˜็š„้™ๅˆถ + + + Are you sure you want to completely reset your settings for <b>Traffic Mode</b>? + ๆ‚จ็ขบๅฎš่ฆๅฎŒๅ…จ้‡่จญ<b>ไบค้€šๆจกๅผ</b>็š„่จญๅฎšๅ—Ž๏ผŸ + + + Are you sure you want to completely reset your settings for the <b>Aggressive</b> personality? + ๆ‚จ็ขบๅฎš่ฆๅฎŒๅ…จ้‡่จญ<b>ๅผทๅ‹ข</b>ๅ€‹ๆ€ง็š„่จญๅฎšๅ—Ž๏ผŸ + + + Are you sure you want to completely reset your settings for the <b>Standard</b> personality? + ๆ‚จ็ขบๅฎš่ฆๅฎŒๅ…จ้‡่จญ<b>ๆจ™ๆบ–</b>ๅ€‹ๆ€ง็š„่จญๅฎšๅ—Ž๏ผŸ + + + Are you sure you want to completely reset your settings for the <b>Relaxed</b> personality? + ๆ‚จ็ขบๅฎš่ฆๅฎŒๅ…จ้‡่จญ<b>Relaxed</b>ๅ€‹ๆ€ง็š„่จญๅฎšๅ—Ž๏ผŸ + + + foot + ่‹ฑๅฐบ + + + meter + ๅ…ฌๅฐบ + + + meters + ๅ…ฌๅฐบ + + + km/h + ๅ…ฌ้‡Œ/ๅฐๆ™‚ Speed Offset (0โ€“29 km/h) - ้€Ÿๅบฆๅ็งป (0โ€“29 km/h) + ้€Ÿๅบฆๅ็งป๏ผˆ0โ€“29 km/h๏ผ‰ Speed Offset (30โ€“49 km/h) - ้€Ÿๅบฆๅ็งป๏ผˆ30โ€“49 km/h๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ30โ€“49 ๅ…ฌ้‡Œ/ๅฐๆ™‚๏ผ‰ Speed Offset (50โ€“59 km/h) - ้€Ÿๅบฆๅ็งป๏ผˆ50โ€“59 km/h๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ50โ€“59 ๅ…ฌ้‡Œ/ๅฐๆ™‚๏ผ‰ Speed Offset (60โ€“79 km/h) - ้€Ÿๅบฆๅ็งป๏ผˆ60โ€“79 km/h๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ60โ€“79 ๅ…ฌ้‡Œ/ๅฐๆ™‚๏ผ‰ Speed Offset (80โ€“99 km/h) - ้€Ÿๅบฆๅ็งป๏ผˆ80โ€“99 km/h๏ผ‰ + ้€Ÿๅบฆ่ฃœๅ„Ÿ๏ผˆ80โ€“99 ๅ…ฌ้‡Œ/ๅฐๆ™‚๏ผ‰ Speed Offset (100โ€“119 km/h) - ้€Ÿๅบฆๅ็งป๏ผˆ100โ€“119 km/h๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ100โ€“119 km/h๏ผ‰ Speed Offset (120โ€“140 km/h) - ้€Ÿๅบฆๅ็งป๏ผˆ120โ€“140 km/h๏ผ‰ + ้€Ÿๅบฆๅ็งป๏ผˆ120โ€“140 km/h๏ผ‰ - Curve Speed Control - ๆ›ฒ็ทš้€ŸๅบฆๆŽงๅˆถ - - - Automatically slow down for upcoming curves using downloaded maps or the driving model. - ไฝฟ็”จไธ‹่ผ‰็š„ๅœฐๅœ–ๆˆ–้ง•้ง›ๆจกๅž‹่‡ชๅ‹•ๆธ›้€Ÿไปฅๆ‡‰ๅฐๅณๅฐ‡ๅˆฐไพ†็š„ๅฝŽ้“ใ€‚ - - - Curve Detection Method - ๆ›ฒ็ทšๆชขๆธฌๆ–นๆณ• - - - How curves are detected. <b>Map-Based</b> uses downloaded map data to identify curves and determine the appropriate speed in which to handle them at, while <b>Vision</b> relies solely on the driving model. - ๅฆ‚ไฝ•ๆชขๆธฌๆ›ฒ็ทšใ€‚<b>ๅŸบๆ–ผๅœฐๅœ–</b>ไฝฟ็”จไธ‹่ผ‰็š„ๅœฐๅœ–ๆ•ธๆ“šไพ†่ญ˜ๅˆฅๆ›ฒ็ทšไธฆ็ขบๅฎš่™•็†ๅฎƒๅ€‘็š„้ฉ็•ถ้€Ÿๅบฆ๏ผŒ่€Œ<b>่ฆ–่ฆบ</b>ๅ‰‡ๅฎŒๅ…จไพ่ณดๆ–ผ้ง•้ง›ๆจกๅž‹ใ€‚ - - - Curve Detection Failsafe - ๆ›ฒ็ทšๆชขๆธฌๆ•…้šœไฟ่ญท - - - Only trigger <b>Curve Speed Control</b> if a curve is detected with the model while using the <b>Map-Based</b> method. Useful to help prevent false positives. - ๅƒ…ๅœจไฝฟ็”จ<b>ๅŸบๆ–ผๅœฐๅœ–</b>ๆ–นๆณ•ๆ™‚๏ผŒๆจกๅž‹ๆชขๆธฌๅˆฐๆ›ฒ็ทšๆ™‚่งธ็™ผ<b>ๆ›ฒ็ทš้€ŸๅบฆๆŽงๅˆถ</b>ใ€‚ๆœ‰ๅŠฉๆ–ผ้˜ฒๆญข่ชคๅ ฑใ€‚ - - - Curve Detection Sensitivity - ๆ›ฒ็ทšๆชขๆธฌ้ˆๆ•ๅบฆ - - - How sensitive openpilot is when detecting curves. Higher values trigger earlier responses at the risk of triggering too often, while lower values increase confidence at the risk of triggering too infrequently. - openpilot ๅœจๆชขๆธฌๆ›ฒ็ทšๆ™‚็š„้ˆๆ•ๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๆœƒๅœจๆ›ดๆ—ฉ็š„ๆ™‚ๅ€™่งธ็™ผๅๆ‡‰๏ผŒไฝ†ๆœ‰ๅฏ่ƒฝ้Žๆ–ผ้ ป็น่งธ็™ผ๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๅ‰‡ๆœƒๅขžๅŠ ไฟกๅฟƒ๏ผŒไฝ†ๆœ‰ๅฏ่ƒฝ่งธ็™ผ้Žๆ–ผไธ้ ป็นใ€‚ - - - Curve Speed Aggressiveness - ๆ›ฒ็ทš้€Ÿๅบฆๆฟ€้€ฒๆ€ง - - - How aggressive openpilot is when navigating through curves. Higher values result in faster turns but may reduce comfort or stability, while lower values result in slower, smoother turns at the risk of being overly cautious. - openpilot ๅœจ้€š้ŽๅฝŽ้“ๆ™‚็š„ๆฟ€้€ฒ็จ‹ๅบฆใ€‚่ผƒ้ซ˜็š„ๅ€ผๆœƒๅฐŽ่‡ดๆ›ดๅฟซ็š„่ฝ‰ๅฝŽ๏ผŒไฝ†ๅฏ่ƒฝๆœƒ้™ไฝŽ่ˆ’้ฉๆ€งๆˆ–็ฉฉๅฎšๆ€ง๏ผŒ่€Œ่ผƒไฝŽ็š„ๅ€ผๆœƒๅฐŽ่‡ด่ฝ‰ๅฝŽ้€Ÿๅบฆ่ผƒๆ…ขใ€ๆ›ดๅนณ็ฉฉ๏ผŒไฝ†ๅฏ่ƒฝ้Žๆ–ผ่ฌนๆ…Žใ€‚ - - - Map Based - ๅœฐๅœ–็‚บๅŸบ็คŽ - - - Vision - ่ฆ–่ฆบ - - - The <b>Map Based</b> option is only available when some <b>Map Data</b> has been downloaded! - <b>ๅœฐๅœ–็‚บๅŸบ็คŽ</b>้ธ้ …ๅƒ…ๅœจไธ‹่ผ‰ไบ†ไธ€ไบ›<b>ๅœฐๅœ–ๆ•ธๆ“š</b>ๅพŒๆ‰ๅฏ็”จ๏ผ + <b>Following behavior that mimics human drivers</b> by closing gaps behind faster vehicles for quicker takeoffs and dynamically adjusting the desired following distance for gentler, more efficient braking. + <b>ๆจกไปฟไบบ้กž้ง•้ง›็š„่ทŸ่ปŠ่กŒ็‚บ</b>๏ผŒๅœจๅพŒๆ–นๆœ‰ๆ›ดๅฟซ่ปŠ่ผ›ๆ™‚็ธฎๅฐ้–“่ทไปฅๆ›ดๅฟซ่ตทๆญฅ๏ผŒไธฆๅ‹•ๆ…‹่ชฟๆ•ดๆœŸๆœ›่ทŸ่ปŠ่ท้›ข๏ผŒไปฅๅฏฆ็พๆ›ดๆŸ”้ †ไธ”ๆ›ด้ซ˜ๆ•ˆ็š„ๅˆถๅ‹•ใ€‚ FrogPilotManageControl MANAGE - ็ฎก็† + ็ฎก็† FrogPilotMapsPanel Manually - ๆ‰‹ๅ‹•ๅœฐ + ๆ‰‹ๅ‹• Weekly - ๆฏ้€ฑ + ๆฏ้€ฑ Monthly - ๆฏๆœˆ + ๆฏๆœˆ Automatically Update Maps - ่‡ชๅ‹•ๆ›ดๆ–ฐๅœฐๅœ– + ่‡ชๅ‹•ๆ›ดๆ–ฐๅœฐๅœ– - The frequency at which maps sync with the latest OpenStreetMap (OSM) changes. Weekly updates occur every Sunday, and monthly updates occur on the 1st. - ๅœฐๅœ–่ˆ‡ๆœ€ๆ–ฐ OpenStreetMap (OSM) ่ฎŠๆ›ดๅŒๆญฅ็š„้ ป็އใ€‚ๆฏ้€ฑๆ›ดๆ–ฐๆ–ผๆฏ้€ฑๆ—ฅ้€ฒ่กŒ๏ผŒๆฏๆœˆๆ›ดๆ–ฐๆ–ผๆฏๆœˆ 1 ๆ—ฅ้€ฒ่กŒใ€‚ - - - Data Sources - ่ณ‡ๆ–™ไพ†ๆบ - - - Select map data sources to use with "Curve Speed Control" and "Speed Limit Controller". - ้ธๆ“‡ๅœฐๅœ–ๆ•ธๆ“šไพ†ๆบไปฅ็”จๆ–ผใ€Œๆ›ฒ็ทš้€ŸๅบฆๆŽงๅˆถใ€ๅ’Œใ€Œ้€Ÿๅบฆ้™ๅˆถๆŽงๅˆถๅ™จใ€ใ€‚ - - - COUNTRIES - ๅœ‹ๅฎถ - - - STATES - ๅทžไปฝ + <b>How often maps update</b> from "OpenStreetMap (OSM)" with the latest speed limit information. Weekly updates run every Sunday; monthly updates run on the 1st. + <b>ๅœฐๅœ–ๆ›ดๆ–ฐ้ ป็އ</b>๏ผšๅพžใ€ŒOpenStreetMap (OSM)ใ€ๅ–ๅพ—ๆœ€ๆ–ฐ้€Ÿ้™่ณ‡่จŠใ€‚ๆฏ้€ฑๆ›ดๆ–ฐๆ–ผๆ˜ŸๆœŸๆ—ฅๅŸท่กŒ๏ผ›ๆฏๆœˆๆ›ดๆ–ฐๆ–ผๆฏๆœˆ1ๆ—ฅๅŸท่กŒใ€‚ Download Maps - ไธ‹่ผ‰ๅœฐๅœ– + ไธ‹่ผ‰ๅœฐๅœ– DOWNLOAD - ไธ‹่ผ‰ + ไธ‹่ผ‰ - Download the selected maps to use with "Curve Speed Control" and "Speed Limit Controller". - ไธ‹่ผ‰ๆ‰€้ธๅœฐๅœ–ไปฅๆญ้…ใ€Œๆ›ฒ็ทš้€ŸๅบฆๆŽงๅˆถใ€ๅ’Œใ€Œ้€Ÿๅบฆ้™ๅˆถๆŽงๅˆถๅ™จใ€ไฝฟ็”จใ€‚ + <b>Manually update your selected map sources</b> so "Speed Limit Controller" has the latest speed limit information. + <b>ๆ‰‹ๅ‹•ๆ›ดๆ–ฐๆ‚จ้ธๆ“‡็š„ๅœฐๅœ–ไพ†ๆบ</b>๏ผŒไปฅ็ขบไฟใ€ŒSpeed Limit Controllerใ€ๆ“ๆœ‰ๆœ€ๆ–ฐ็š„้€Ÿ้™่ณ‡่จŠใ€‚ CANCEL - ๅ–ๆถˆ + ๅ–ๆถˆ - Are you sure you want to cancel the download? - ๆ‚จ็ขบๅฎš่ฆๅ–ๆถˆไธ‹่ผ‰ๅ—Ž๏ผŸ + Cancel the download? + ่ฆๅ–ๆถˆไธ‹่ผ‰ๅ—Ž๏ผŸ - Download Completion ETA - ไธ‹่ผ‰ๅฎŒๆˆ้ ่จˆๆ™‚้–“ + Last Updated + ๆœ€ๅพŒๆ›ดๆ–ฐ - Download Progress - ไธ‹่ผ‰้€ฒๅบฆ + Map Sources + ๅœฐๅœ–ไพ†ๆบ - Download Time Elapsed - ไธ‹่ผ‰ๆ™‚้–“ๅทฒ้Ž + <b>Select the countries or U.S. states to use with "Speed Limit Controller".</b> + <b>้ธๅ–่ฆๆญ้…ใ€ŒSpeed Limit Controllerใ€ไฝฟ็”จ็š„ๅœ‹ๅฎถๆˆ–็พŽๅœ‹ๅทžๅˆฅใ€‚</b> - Maps Last Updated - ๅœฐๅœ–ๆœ€ๅพŒๆ›ดๆ–ฐๆ—ฅๆœŸ + COUNTRIES + ๅœ‹ๅฎถ - Maps Size - ๅœฐๅœ–ๅคงๅฐ + STATES + ็‹€ๆ…‹ + + + Progress + ้€ฒๅบฆ + + + Time Elapsed + ๅทฒ็”จๆ™‚้–“ + + + Time Remaining + ๅ‰ฉ้ค˜ๆ™‚้–“ Remove Maps - ็งป้™คๅœฐๅœ– + ็งป้™คๅœฐๅœ– REMOVE - ็งป้™ค + ็งป้™ค - Remove downloaded maps to clear up storage space. - ็งป้™คๅทฒไธ‹่ผ‰็š„ๅœฐๅœ–ไปฅ้‡‹ๆ”พๅ„ฒๅญ˜็ฉบ้–“ใ€‚ + <b>Delete downloaded map data</b> to free up storage space. + <b>ๅˆช้™คๅทฒไธ‹่ผ‰็š„ๅœฐๅœ–่ณ‡ๆ–™</b>ไปฅ้‡‹ๆ”พๅ„ฒๅญ˜็ฉบ้–“ใ€‚ - Are you sure you want to delete all of your downloaded maps? - ๆ‚จ็ขบๅฎš่ฆๅˆช้™คๆ‰€ๆœ‰ๅทฒไธ‹่ผ‰็š„ๅœฐๅœ–ๅ—Ž๏ผŸ + Delete all downloaded maps? + ๅˆช้™คๆ‰€ๆœ‰ๅทฒไธ‹่ผ‰็š„ๅœฐๅœ–๏ผŸ - Reset Map Downloader - ้‡่จญๅœฐๅœ–ไธ‹่ผ‰ๅ™จ + Reset Downloader + ้‡่จญไธ‹่ผ‰ๅ™จ RESET - ้‡็ฝฎ + ้‡่จญ - Reset the map downloader. Use if you're running into issues with downloading maps. - ้‡็ฝฎๅœฐๅœ–ไธ‹่ผ‰ๅ™จใ€‚ๅฆ‚ๆžœๆ‚จๅœจไธ‹่ผ‰ๅœฐๅœ–ๆ™‚้‡ๅˆฐๅ•้กŒ๏ผŒ่ซ‹ไฝฟ็”จๆญคๅŠŸ่ƒฝใ€‚ + <b>Reset the map downloader.</b> Use this if downloads are stuck or failing. + <b>้‡่จญๅœฐๅœ–ไธ‹่ผ‰ๅ™จใ€‚</b> ่‹ฅไธ‹่ผ‰ๅกไฝๆˆ–ๅคฑๆ•—ๆ™‚่ซ‹ไฝฟ็”จๆญคๅŠŸ่ƒฝใ€‚ - Are you sure you want to reset the map downloader? This will force a reboot once completed. - ๆ‚จ็ขบๅฎš่ฆ้‡็ฝฎๅœฐๅœ–ไธ‹่ผ‰ๅ™จๅ—Ž๏ผŸ้€™ๅฐ‡ๅœจๅฎŒๆˆๅพŒๅผทๅˆถ้‡ๆ–ฐๅ•Ÿๅ‹•ใ€‚ + Reset the map downloader? Your device will reboot afterward. + ้‡่จญๅœฐๅœ–ไธ‹่ผ‰ๅ™จ๏ผŸ่ฃ็ฝฎไน‹ๅพŒๅฐ‡ๆœƒ้‡ๆ–ฐๅ•Ÿๅ‹•ใ€‚ Reset - ้‡่จญ + ้‡่จญ Resetting... - ้‡็ฝฎไธญ... + ๆญฃๅœจ้‡่จญโ€ฆ Reset! - ้‡็ฝฎ๏ผ + ้‡่จญ๏ผ Rebooting... - ้‡ๆ–ฐๅ•Ÿๅ‹•ไธญ... + ๆญฃๅœจ้‡ๆ–ฐๅ•Ÿๅ‹•โ€ฆ + + + Storage Used + ๅทฒ็”จๅ„ฒๅญ˜็ฉบ้–“ Africa - ้žๆดฒ + ้žๆดฒ Antarctica - ๅ—ๆฅตๆดฒ + ๅ—ๆฅตๆดฒ Asia - ไบžๆดฒ + ไบžๆดฒ Europe - ๆญๆดฒ + ๆญๆดฒ North America - ๅŒ—็พŽๆดฒ + ๅŒ—็พŽๆดฒ Oceania - ๅคงๆด‹ๆดฒ + ๅคงๆด‹ๆดฒ South America - ๅ—็พŽๆดฒ + ๅ—็พŽๆดฒ United States - Midwest - ็พŽๅœ‹ - ไธญ่ฅฟ้ƒจ + ็พŽๅœ‹ - ไธญ่ฅฟ้ƒจ United States - Northeast - ็พŽๅœ‹ - ๆฑๅŒ—้ƒจ + ็พŽๅœ‹๏ผๆฑๅŒ—้ƒจ United States - South - ็พŽๅœ‹ - ๅ—้ƒจ + ็พŽๅœ‹๏ผๅ—้ƒจ United States - West - ็พŽๅœ‹ - ่ฅฟ้ƒจ + ็พŽๅœ‹ - ่ฅฟ้ƒจ United States - Territories - ็พŽๅœ‹ - ้ ˜ๅœฐ - - - CANCELLED - ๅ–ๆถˆ + ็พŽๅœ‹๏ผๅฑฌๅœฐ Offline... - ้›ข็ทš... + ้›ข็ทšไธญโ€ฆ + + + CANCELLED + ๅทฒๅ–ๆถˆ FrogPilotModelPanel Automatically Download New Models - ่‡ชๅ‹•ไธ‹่ผ‰ๆ–ฐๆจกๅž‹ + ่‡ชๅ‹•ไธ‹่ผ‰ๆ–ฐๆจกๅž‹ - Automatically download new driving models as they become available. - ่‡ชๅ‹•ไธ‹่ผ‰ๆ–ฐ็š„้ง•้ง›ๆจกๅž‹๏ผŒ็•ถๅฎƒๅ€‘ๅฏ็”จๆ™‚ใ€‚ + <b>Automatically download new driving models</b> as they become available. + <b>ๅœจๆœ‰ๆ–ฐ้ง•้ง›ๆจกๅž‹ๅฏ็”จๆ™‚่‡ชๅ‹•ไธ‹่ผ‰</b>ใ€‚</b> Delete Driving Models - ๅˆช้™ค้ง•้ง›ๆจกๅž‹ + ๅˆช้™ค้ง•้ง›ๆจกๅž‹ - Delete driving models from the device. - ๅพž่ฃ็ฝฎไธญๅˆช้™ค้ง•้ง›ๆจกๅž‹ใ€‚ + <b>Delete downloaded driving models</b> to free up storage space. + <b>ๅˆช้™คๅทฒไธ‹่ผ‰็š„้ง•้ง›ๆจกๅž‹</b>ไปฅ้‡‹ๆ”พๅ„ฒๅญ˜็ฉบ้–“ใ€‚ Download Driving Models - ไธ‹่ผ‰้ง•้ง›ๆจกๅž‹ + ไธ‹่ผ‰้ง•้ง›ๆจกๅž‹ - Download driving models to the device. - ไธ‹่ผ‰้ง•้ง›ๆจกๅž‹ๅˆฐ่จญๅ‚™ใ€‚ + <b>Manually download driving models</b> to the device. + <b>ๆ‰‹ๅ‹•ไธ‹่ผ‰้ง•้ง›ๆจกๅž‹</b>ๅˆฐ่ฃ็ฝฎใ€‚ Model Randomizer - ๆจกๅž‹้šจๆฉŸๅ™จ + ๆจกๅž‹้šจๆฉŸๅ™จ - Driving models are chosen at random each drive and feedback prompts are used to find the model that best suits your needs. - ๆฏๆฌก้ง•้ง›ๆ™‚้šจๆฉŸ้ธๆ“‡้ง•้ง›ๆจกๅž‹๏ผŒไธฆไฝฟ็”จๅ้ฅ‹ๆ็คบไพ†ๅฐ‹ๆ‰พๆœ€้ฉๅˆๆ‚จ้œ€ๆฑ‚็š„ๆจกๅž‹ใ€‚ + <b>Select a random driving model each drive</b> and use feedback prompts at the end of the drive to help find the model that best suits you! + <b>ๆฏๆฌก่กŒ็จ‹้šจๆฉŸ้ธๆ“‡ไธ€ๅ€‹้ง•้ง›ๆจกๅž‹</b>๏ผŒไธฆๅœจ่กŒ็จ‹็ตๆŸๆ™‚ไฝฟ็”จๅ›ž้ฅ‹ๆ็คบ๏ผŒๅนซๅŠฉๆ‰พๅˆฐๆœ€้ฉๅˆไฝ ็š„ๆจกๅž‹๏ผ Manage Model Blacklist - ็ฎก็†ๆจกๅž‹้ป‘ๅๅ–ฎ + ็ฎก็†ๆจกๅž‹้ป‘ๅๅ–ฎ - Add or remove models from the <b>Model Randomizer</b>'s blacklist list. - ๅพž<b>ๆจกๅž‹้šจๆฉŸๅ™จ</b>็š„้ป‘ๅๅ–ฎไธญๆทปๅŠ ๆˆ–็งป้™คๆจกๅž‹ใ€‚ + <b>Add or remove driving models from the "Model Randomizer" blacklist.</b> + <b>ๅพžใ€Œๆจกๅž‹้šจๆฉŸๅ™จใ€้ป‘ๅๅ–ฎไธญๆ–ฐๅขžๆˆ–็งป้™ค้ง•้ง›ๆจกๅž‹ใ€‚</b> Manage Model Ratings - ็ฎก็†ๆจกๅž‹่ฉ•ๅˆ† + ็ฎก็†ๆจกๅž‹่ฉ•ๅˆ† - Reset or view the saved ratings for the driving models. - ้‡็ฝฎๆˆ–ๆŸฅ็œ‹้ง•้ง›ๆจกๅž‹็š„ๅทฒไฟๅญ˜่ฉ•ๅˆ†ใ€‚ + <b>View or reset saved model ratings</b> used by the "Model Randomizer". + <b>ๆชข่ฆ–ๆˆ–้‡่จญใ€Œๆจกๅž‹้šจๆฉŸๅ™จใ€ไฝฟ็”จ็š„ๅทฒๅ„ฒๅญ˜ๆจกๅž‹่ฉ•ๅˆ†</b> Select Driving Model - ้ธๆ“‡้ง•้ง›ๆจกๅผ + ้ธๆ“‡้ง•้ง›ๆจกๅž‹ - Select the active driving model. - ้ธๆ“‡ไธปๅ‹•้ง•้ง›ๆจกๅผใ€‚ + <b>Choose which driving model openpilot uses.</b> + <b>้ธๆ“‡ openpilot ไฝฟ็”จ็š„้ง•้ง›ๆจกๅž‹ใ€‚</b> + + + Update Model Manager + ๆ›ดๆ–ฐๆจกๅž‹็ฎก็†ๅ™จ + + + <b>Update the "Model Manager"</b> to support the latest models. + <b>ๆ›ดๆ–ฐใ€ŒModel Managerใ€</b>ไปฅๆ”ฏๆดๆœ€ๆ–ฐๆจกๅž‹ใ€‚ DELETE - ๅˆช้™ค + ๅˆช้™ค DELETE ALL - ๅˆช้™คๅ…จ้ƒจ + ๅ…จ้ƒจๅˆช้™ค Select a driving model to delete - ้ธๆ“‡่ฆๅˆช้™ค็š„้ง•้ง›ๆจกๅž‹ + ้ธๆ“‡่ฆๅˆช้™ค็š„้ง•้ง›ๆจกๅž‹ Are you sure you want to delete the "%1" model? - ๆ‚จ็ขบๅฎš่ฆๅˆช้™คใ€Œ%1ใ€ๆจกๅž‹ๅ—Ž๏ผŸ + ๆ‚จ็ขบๅฎš่ฆๅˆช้™คใ€Œ%1ใ€ๆจกๅž‹ๅ—Ž๏ผŸ Delete - ๅˆช้™ค + ๅˆช้™ค Are you sure you want to delete all of your downloaded driving models? - ๆ‚จ็ขบๅฎš่ฆๅˆช้™คๆ‰€ๆœ‰ๅทฒไธ‹่ผ‰็š„้ง•้ง›ๆจกๅž‹ๅ—Ž๏ผŸ + ๆ‚จ็ขบๅฎš่ฆๅˆช้™คๆ‰€ๆœ‰ๅทฒไธ‹่ผ‰็š„้ง•้ง›ๆจกๅž‹ๅ—Ž๏ผŸ DOWNLOAD - ไธ‹่ผ‰ + ไธ‹่ผ‰ DOWNLOAD ALL - ๅ…จ้ƒจไธ‹่ผ‰ + ๅ…จ้ƒจไธ‹่ผ‰ - Select a driving model to download - ้ธๆ“‡ไธ€ๅ€‹้ง•้ง›ๆจกๅž‹ไธ‹่ผ‰ + Tinygrad is out of date and must be updated before you can download new models. Update now? + Tinygrad ๅทฒ้ŽๆœŸ๏ผŒๅฟ…้ ˆๅ…ˆๆ›ดๆ–ฐๆ‰่ƒฝไธ‹่ผ‰ๆ–ฐๆจกๅž‹ใ€‚็พๅœจๆ›ดๆ–ฐๅ—Ž๏ผŸ + + + Updating Tinygrad will delete all existing Tinygrad-based models which will need to be re-downloaded. Proceed? + ๆ›ดๆ–ฐ Tinygrad ๅฐ‡ๅˆช้™คๆ‰€ๆœ‰็พๆœ‰็š„ Tinygrad ๆจกๅž‹๏ผŒไธ”้œ€่ฆ้‡ๆ–ฐไธ‹่ผ‰ใ€‚ๆ˜ฏๅฆ็นผ็บŒ๏ผŸ CANCEL - ๅ–ๆถˆ + ๅ–ๆถˆ + + + Updating... + ๆญฃๅœจๆ›ดๆ–ฐโ€ฆ + + + Select a driving model to download + ้ธๆ“‡่ฆไธ‹่ผ‰็š„้ง•้ง›ๆจกๅž‹ ADD - ๆ–ฐๅขž + ๆ–ฐๅขž REMOVE - ็งป้™ค + ็งป้™ค REMOVE ALL - ็งป้™คๆ‰€ๆœ‰ + ๅ…จ้ƒจ็งป้™ค - There are no more models to blacklist! The only available model is "%1"! - ๆฒ’ๆœ‰ๆ›ดๅคš็š„ๆจกๅž‹ๅฏๅˆ—ๅ…ฅ้ป‘ๅๅ–ฎ๏ผๅ”ฏไธ€ๅฏ็”จ็š„ๆจกๅž‹ๆ˜ฏใ€Œ%1ใ€๏ผ + There are no more driving models to blacklist. The only available model is "%1"! + ๆฒ’ๆœ‰ๆ›ดๅคšๅฏๅŠ ๅ…ฅ้ป‘ๅๅ–ฎ็š„้ง•้ง›ๆจกๅž‹ใ€‚ๅ”ฏไธ€ๅฏ็”จ็š„ๆจกๅž‹ๆ˜ฏใ€Œ%1ใ€๏ผ - Select a model to add to the blacklist - ้ธๆ“‡ไธ€ๅ€‹ๆจกๅž‹ๅŠ ๅ…ฅ้ป‘ๅๅ–ฎ + Select a driving model to add to the blacklist + ้ธๆ“‡่ฆๅŠ ๅ…ฅ้ป‘ๅๅ–ฎ็š„้ง•้ง›ๆจกๅž‹ Are you sure you want to add the "%1" model to the blacklist? - ๆ‚จ็ขบๅฎš่ฆๅฐ‡ใ€Œ%1ใ€ๆจกๅž‹ๅŠ ๅ…ฅ้ป‘ๅๅ–ฎๅ—Ž๏ผŸ + ๆ‚จ็ขบๅฎš่ฆๅฐ‡ใ€Œ%1ใ€ๆจกๅž‹ๅŠ ๅ…ฅ้ป‘ๅๅ–ฎๅ—Ž๏ผŸ Add - ๆ–ฐๅขž + ๆ–ฐๅขž - Select a model to remove from the blacklist - ้ธๆ“‡่ฆๅพž้ป‘ๅๅ–ฎไธญ็งป้™ค็š„ๆจกๅž‹ + Select a driving model to remove from the blacklist + ้ธๆ“‡่ฆๅพž้ป‘ๅๅ–ฎ็งป้™ค็š„้ง•้ง›ๆจกๅž‹ Are you sure you want to remove the "%1" model from the blacklist? - ๆ‚จ็ขบๅฎš่ฆๅพž้ป‘ๅๅ–ฎไธญ็งป้™คใ€Œ%1ใ€ๆจกๅž‹ๅ—Ž๏ผŸ + ๆ‚จ็ขบๅฎš่ฆๅพž้ป‘ๅๅ–ฎไธญ็งป้™คใ€Œ%1ใ€ๆจกๅž‹ๅ—Ž๏ผŸ Remove - ็งป้™ค + ็งป้™ค - Are you sure you want to remove all of your blacklisted models? - ๆ‚จ็ขบๅฎš่ฆ็งป้™คๆ‰€ๆœ‰ๅˆ—ๅ…ฅ้ป‘ๅๅ–ฎ็š„ๆจกๅž‹ๅ—Ž๏ผŸ + Are you sure you want to remove all of your blacklisted driving models? + ๆ‚จ็ขบๅฎš่ฆ็งป้™คๆ‚จๆ‰€ๆœ‰่ขซๅˆ—ๅ…ฅ้ป‘ๅๅ–ฎ็š„้ง•้ง›ๆจกๅž‹ๅ—Ž๏ผŸ RESET - ้‡็ฝฎ + ้‡่จญ VIEW - ๆชข่ฆ– + ๆชข่ฆ– - Are you sure you want to reset all of your model drives and scores? - ๆ‚จ็ขบๅฎš่ฆ้‡็ฝฎๆ‰€ๆœ‰ๆจกๅž‹้ฉ…ๅ‹•ๅ™จๅ’Œๅˆ†ๆ•ธๅ—Ž๏ผŸ + Reset all model drives and ratings? This clears your drive history and collected feedback! + ่ฆ้‡่จญๆ‰€ๆœ‰ๆจกๅž‹้ง•้ง›่ˆ‡่ฉ•ๅˆ†ๅ—Ž๏ผŸ้€™ๅฐ‡ๆธ…้™คไฝ ็š„้ง•้ง›่จ˜้Œ„่ˆ‡ๆ”ถ้›†็š„ๅ›ž้ฅ‹๏ผ SELECT - SELECT + ้ธๆ“‡ - Select a model - ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC - ้ธๆ“‡ไธ€ๅ€‹ๆจกๅž‹ - ๐Ÿ—บ๏ธ = ๅฐŽ่ˆช | ๐Ÿ“ก = ้›ท้” | ๐Ÿ‘€ = VOACC + UPDATE + ๆ›ดๆ–ฐ - The "Model Randomizer" only works with downloaded models. Do you want to download all the driving models? - ใ€Œๆจกๅž‹้šจๆฉŸๅ™จใ€ๅƒ…้ฉ็”จๆ–ผๅทฒไธ‹่ผ‰็š„ๆจกๅž‹ใ€‚ๆ‚จๆƒณไธ‹่ผ‰ๆ‰€ๆœ‰็š„้ง•้ง›ๆจกๅž‹ๅ—Ž๏ผŸ + Cancelling... + ๆญฃๅœจๅ–ๆถˆโ€ฆ + + + Updating Tinygrad will delete existing Tinygrad-based driving models and need to be re-downloaded. Proceed? + ๆ›ดๆ–ฐ Tinygrad ๅฐ‡ๅˆช้™ค็พๆœ‰็š„ๅŸบๆ–ผ Tinygrad ็š„้ง•้ง›ๆจกๅž‹๏ผŒ้œ€้‡ๆ–ฐไธ‹่ผ‰ใ€‚่ฆ็นผ็บŒๅ—Ž๏ผŸ + + + The "Model Randomizer" works only with downloaded models. Download all models now? + ใ€Œๆจกๅž‹้šจๆฉŸๅ™จใ€ๅƒ…้ฉ็”จๆ–ผๅทฒไธ‹่ผ‰็š„ๆจกๅž‹ใ€‚่ฆ็ซ‹ๅณไธ‹่ผ‰ๆ‰€ๆœ‰ๆจกๅž‹ๅ—Ž๏ผŸ Offline... - ้›ข็ทš... + ้›ข็ทšไธญโ€ฆ + + + Update available! + ๆœ‰ๅฏ็”จๆ›ดๆ–ฐ๏ผ + + + Up to date! + ๅทฒๆ˜ฏๆœ€ๆ–ฐ๏ผ + + + Select a Model โ€” ๐Ÿ—บ๏ธ = Navigation | ๐Ÿ“ก = Radar | ๐Ÿ‘€ = VOACC + ้ธๆ“‡ๆจกๅž‹ โ€” ๐Ÿ—บ๏ธ = ๅฐŽ่ˆช | ๐Ÿ“ก = ้›ท้” | ๐Ÿ‘€ = VOACC + + + + FrogPilotModelReview + + How would you rate that drive? + ไฝ ๆœƒๅฆ‚ไฝ•่ฉ•ๅƒน้‚ฃๆฌก้ง•้ง›๏ผŸ + + + Model successfully blacklisted! + ๆจกๅž‹ๅทฒๆˆๅŠŸๅŠ ๅ…ฅ้ป‘ๅๅ–ฎ๏ผ + + + Drive Rating Selection + ้ง•้ง›่ฉ•็ญ‰้ธๆ“‡ + + + Blacklist this model to remove it from rotation + ๅฐ‡ๆญคๆจกๅž‹ๅŠ ๅ…ฅ้ป‘ๅๅ–ฎไปฅๅฐ‡ๅ…ถๅพž่ผชๆ›ฟไธญ็งป้™ค + + + Blacklist Model + ้ป‘ๅๅ–ฎๆจกๅž‹ + + + Model used during that drive: + ่ฉฒๆฌก่กŒ้ง›ๆ‰€ไฝฟ็”จ็š„ๆจกๅž‹๏ผš + + + Model Rank + ๆจกๅž‹ๆŽ’ๅ + + + Model Rating + ๆจกๅž‹่ฉ•็ดš + + + Model Drives + ๆจกๅž‹้ฉ…ๅ‹• + + + Total Drives + ็ธฝ่กŒ้ง›ๆฌกๆ•ธ + + + #%1 + #%1 + + + %1% + %1% + + + %1 %2 + %1 %2 + + + Drive + ้ง•้ง› + + + Drives + ้ง•้ง› + + + %1 Total %2 + %1 ็ธฝ่จˆ %2 FrogPilotNavigationPanel - - Manage your %1. - ็ฎก็†ๆ‚จ็š„ %1ใ€‚ - - - ADD - ๆ–ฐๅขž - - - Enter your %1 - ่ผธๅ…ฅๆ‚จ็š„ %1 - - - Inputted key is invalid or too short! - ่ผธๅ…ฅ็š„้‡‘้‘ฐ็„กๆ•ˆๆˆ–ๅคช็Ÿญ๏ผ - - - Are you sure you want to remove your %1? - ๆ‚จ็ขบๅฎš่ฆ็งป้™คๆ‚จ็š„ %1 ๅ—Ž๏ผŸ - - - REMOVE - ็งป้™ค - Manage Your Settings At - ๅœจไปฅไธ‹ไฝ็ฝฎ็ฎก็†ๆ‚จ็š„่จญๅฎš - - - MapBox - MapBox - - - Amap - Amap - - - Google - Google - - - Destination Search Provider - ็›ฎ็š„ๅœฐๆœๅฐ‹ๆไพ›่€… - - - The search provider used for destination queries in "Navigate on Openpilot". Options include "MapBox" (recommended), "Amap", and "Google Maps". - ็”จๆ–ผใ€ŒNavigate on Openpilotใ€็›ฎ็š„ๅœฐๆŸฅ่ฉข็š„ๆœๅฐ‹ๆไพ›่€…ใ€‚้ธ้ …ๅŒ…ๆ‹ฌใ€ŒMapBoxใ€๏ผˆๆŽจ่–ฆ๏ผ‰ใ€ใ€ŒAmapใ€ๅ’Œใ€ŒGoogle Mapsใ€ใ€‚ - - - Amap Key #1 - Amap Key #1 - - - Manage your Amap key. - ็ฎก็†ๆ‚จ็š„ Amap ้‡‘้‘ฐใ€‚ - - - Enter your Amap key - ่ผธๅ…ฅๆ‚จ็š„ Amap ้‡‘้‘ฐ - - - Are you sure you want to remove your Amap key? - ๆ‚จ็ขบๅฎš่ฆ็งป้™คๆ‚จ็š„ Amap ้‡‘้‘ฐๅ—Ž๏ผŸ - - - Amap Key #2 - Amap Key #2 - - - Google Maps Key - Google ๅœฐๅœ–้‡‘้‘ฐ - - - Manage your Google Maps key. - ็ฎก็†ๆ‚จ็š„ Google Maps ้‡‘้‘ฐใ€‚ - - - Enter your Google Maps key - ่ผธๅ…ฅๆ‚จ็š„ Google Maps ้‡‘้‘ฐ - - - Are you sure you want to remove your Google Maps key? - ๆ‚จ็ขบๅฎš่ฆ็งป้™คๆ‚จ็š„ Google Maps ้‡‘้‘ฐๅ—Ž๏ผŸ - - - Public Mapbox Key - ๅ…ฌๅ…ฑ Mapbox ้‡‘้‘ฐ - - - Secret Mapbox Key - ็ง˜ๅฏ† Mapbox ้‡‘้‘ฐ - - - MapBox Setup Instructions - MapBox ่จญๅฎš่ชชๆ˜Ž - - - VIEW - ๆชข่ฆ– - - - View the instructions to set up "MapBox" for "Primeless Navigation". - ๆŸฅ็œ‹่จญๅฎšใ€ŒMapBoxใ€ไปฅ้€ฒ่กŒใ€ŒPrimeless Navigationใ€็š„่ชชๆ˜Žใ€‚ - - - CANCEL - ๅ–ๆถˆ - - - Speed Limit Filler - ้€Ÿๅบฆ้™ๅˆถๅกซๅ……็‰ฉ - - - Are you sure you want to cancel the speed limit update process? - ๆ‚จ็ขบๅฎš่ฆๅ–ๆถˆ้€Ÿๅบฆ้™ๅˆถๆ›ดๆ–ฐ้Ž็จ‹ๅ—Ž๏ผŸ - - - You have reached the request limit. - -It will reset in %1 hours and %2 minutes. - ๆ‚จๅทฒ้”ๅˆฐ่ซ‹ๆฑ‚้™ๅˆถใ€‚ - -ๅฎƒๅฐ‡ๅœจ %1 ๅฐๆ™‚ๅ’Œ %2 ๅˆ†้˜ๅพŒ้‡็ฝฎใ€‚ - - - This process will take awhile, so it's advised to start when you're done driving with a stable Wi-Fi connection. Do you wish to proceed? - ๆญค้Ž็จ‹ๅฐ‡้œ€่ฆไธ€ๆฎตๆ™‚้–“๏ผŒๅ› ๆญคๅปบ่ญฐๅœจๆ‚จ้ง•้ง›็ตๆŸไธฆๆœ‰็ฉฉๅฎš็š„ Wi-Fi ้€ฃๆŽฅๆ™‚้–‹ๅง‹ใ€‚ๆ‚จๆ˜ฏๅฆๅธŒๆœ›็นผ็บŒ๏ผŸ - - - Manually Update Speed Limits - ๆ‰‹ๅ‹•ๆ›ดๆ–ฐ้€Ÿๅบฆ้™ๅˆถ - - - Automatically collect missing or incorrect speed limits from your dashboard (if supported), <b>Mapbox</b>, and <b>Navigate-on-openpilot</b> while driving.<br><br>When the car is turned off and connected to Wi-Fi, your speed limit data is automatically processed into a compiled file formatted for the tool located at <b>SpeedLimitFiller.frogpilot.download</b>.<br><br>You can grab the processed file from <b>The Pond</b> via the <b>Download Speed Limits</b> menu.<br><br>Want a more thorough walkthrough? Check out the <b>#speed-limit-filler</b> channel in the <b>FrogPilot Discord</b>! - ่‡ชๅ‹•ๅพžๆ‚จ็š„ๅ„€่กจๆฟ๏ผˆๅฆ‚ๆžœๆ”ฏๆด๏ผ‰ใ€<b>Mapbox</b> ๅ’Œ <b>Navigate-on-openpilot</b> ๆ”ถ้›†็ผบๅคฑๆˆ–ไธๆญฃ็ขบ็š„้€Ÿๅบฆ้™ๅˆถ่ณ‡ๆ–™ใ€‚<br><br>็•ถๆฑฝ่ปŠ็†„็ซไธฆ้€ฃๆŽฅๅˆฐ Wi-Fi ๆ™‚๏ผŒๆ‚จ็š„้€Ÿๅบฆ้™ๅˆถ่ณ‡ๆ–™ๆœƒ่‡ชๅ‹•่™•็†ๆˆไธ€ๅ€‹็ทจ่ญฏๆ–‡ไปถ๏ผŒๆ ผๅผๅŒ–็‚บไฝๆ–ผ <b>SpeedLimitFiller.frogpilot.download</b> ๅทฅๅ…ท็š„ๆ ผๅผใ€‚<br><br>ๆ‚จๅฏไปฅ้€š้Ž <b>ไธ‹่ผ‰้€Ÿๅบฆ้™ๅˆถ</b> ่œๅ–ฎๅพž <b>The Pond</b> ็ฒๅ–่™•็†ๅพŒ็š„ๆ–‡ไปถใ€‚<br><br>ๆƒณ่ฆๆ›ด่ฉณ็ดฐ็š„ๆŒ‡ๅ—๏ผŸ่ซ‹ๆŸฅ็œ‹ <b>FrogPilot Discord</b> ไธญ็š„ <b>#speed-limit-filler</b> ้ ป้“๏ผ - - - Cancelled... - ๅ–ๆถˆ... - - - Completed! - ๅฎŒๆˆ๏ผ + ๅœจๆญค็ฎก็†ๆ‚จ็š„่จญๅฎš Offline... - ้›ข็ทš... + ้›ข็ทšไธญโ€ฆ + + + Mapbox + Mapbox + + + Amap + Amap + + + Destination Search Provider + ็›ฎ็š„ๅœฐๆœๅฐ‹ๆไพ›่€… + + + <b>The search provider used for destination queries</b> in "Navigate on Openpilot". Options include Mapbox (recommended) and Amap. + <b>ใ€Œๅœจ Openpilot ไธŠๅฐŽ่ˆชใ€ไธญ็”จๆ–ผ็›ฎ็š„ๅœฐๆŸฅ่ฉข็š„ๆœๅฐ‹ๆไพ›่€…</b>ใ€‚้ธ้ …ๅŒ…ๆ‹ฌ Mapbox๏ผˆๅปบ่ญฐ๏ผ‰ๅ’Œ Amapใ€‚ + + + Amap Key #1 + Amap ้‡‘้‘ฐ #1 + + + Amap Key #2 + ้ซ˜ๅพทๅœฐๅœ–้‡‘้‘ฐ #2 + + + Public Mapbox Key + ๅ…ฌ้–‹ Mapbox ้‡‘้‘ฐ + + + Secret Mapbox Key + Mapbox ็ฅ•ๅฏ†้‡‘้‘ฐ + + + Mapbox Setup Instructions + Mapbox ่จญๅฎš่ชชๆ˜Ž + + + VIEW + ๆชข่ฆ– + + + <b>Instructions on how to set up Mapbox</b> for "Primeless Navigation". + <b>ๅฆ‚ไฝ•่จญๅฎš Mapbox ็š„่ชชๆ˜Ž</b>๏ผŒ็”จๆ–ผใ€Œ็„กไธปๅฐŽ่ˆชใ€ใ€‚ + + + CANCEL + ๅ–ๆถˆ + + + Manually Update Speed Limits + ๆ‰‹ๅ‹•ๆ›ดๆ–ฐ้€Ÿ้™ + + + Speed Limit Filler + ้€Ÿ้™ๅกซๅ……ๅ™จ + + + <b>Automatically collect missing or incorrect speed limits while you drive</b> using speeds limits sourced from your dashboard (if supported), Mapbox, and "Navigate on openpilot".<br><br>When you're parked and connected to Wi-Fi, FrogPilot will automatically processes this data into a file to be used with the tool located at "SpeedLimitFiller.frogpilot.download".<br><br>You can download this file from "The Pond" in the "Download Speed Limits" menu.<br><br>Need a step-by-step guide? Visit <b>#speed-limit-filler</b> in the FrogPilot Discord! + <b>ๅœจ้ง•้ง›ๆ™‚่‡ชๅ‹•ๆ”ถ้›†็ผบๅคฑๆˆ–ไธๆญฃ็ขบ็š„้€Ÿ้™</b>๏ผŒไฝฟ็”จไพ†่‡ชๆ‚จ็š„ๅ„€่กจๆฟ๏ผˆ่‹ฅๆ”ฏๆด๏ผ‰ใ€Mapbox๏ผŒไปฅๅŠใ€ŒNavigate on openpilotใ€็š„้€Ÿ้™่ณ‡่จŠใ€‚<br><br>็•ถๆ‚จๅœ่ปŠไธฆ้€ฃไธŠ Wiโ€‘Fi ๆ™‚๏ผŒFrogPilot ๆœƒ่‡ชๅ‹•ๅฐ‡้€™ไบ›่ณ‡ๆ–™่™•็†ๆˆไธ€ๅ€‹ๆช”ๆกˆ๏ผŒไปฅๆญ้…ไฝๆ–ผใ€ŒSpeedLimitFiller.frogpilot.downloadใ€็š„ๅทฅๅ…ทไฝฟ็”จใ€‚<br><br>ๆ‚จๅฏไปฅๅœจใ€ŒThe Pondใ€็š„ใ€ŒDownload Speed Limitsใ€้ธๅ–ฎไธญไธ‹่ผ‰้€™ๅ€‹ๆช”ๆกˆใ€‚<br><br>้œ€่ฆ้€ๆญฅๆŒ‡ๅ—ๅ—Ž๏ผŸ่ซ‹ๅ‰ๅพ€ FrogPilot Discord ็š„ <b>#speed-limit-filler</b>๏ผ + + + Cancel the speed-limit update? + ่ฆๅ–ๆถˆๆ›ดๆ–ฐ้€Ÿ้™ๅ—Ž๏ผŸ + + + Cancelled... + ๅทฒๅ–ๆถˆโ€ฆ + + + You've hit today's request limit. + +It will reset in %1 hours and %2 minutes. + ๆ‚จๅทฒ้”ๅˆฐไปŠๆ—ฅ็š„่ซ‹ๆฑ‚ไธŠ้™ใ€‚ + +ๅฐ‡ๅœจ %1 ๅฐๆ™‚ %2 ๅˆ†้˜ๅพŒ้‡่จญใ€‚ + + + This process takes a while. It's recommended to start when you're done driving and connected to stable Wi-Fi. Continue? + ๆญค้Ž็จ‹้œ€่ฆไธ€ๆฎตๆ™‚้–“ใ€‚ๅปบ่ญฐๅœจๆ‚จ็ตๆŸ้ง•้ง›ไธฆ้€ฃไธŠ็ฉฉๅฎš็š„ Wiโ€‘Fi ๅพŒๅ†้–‹ๅง‹ใ€‚่ฆ็นผ็บŒๅ—Ž๏ผŸ + + + <b>Manage your "%1".</b> + <b>็ฎก็†ๆ‚จ็š„ใ€Œ%1ใ€ใ€‚</b> + + + ADD + ๆ–ฐๅขž + + + Enter your %1 + ่ผธๅ…ฅๆ‚จ็š„ %1 + + + Inputted key is invalid or too short! + ่ผธๅ…ฅ็š„้‡‘้‘ฐ็„กๆ•ˆๆˆ–้Ž็Ÿญ๏ผ + + + Remove your %1? + ่ฆ็งป้™คๆ‚จ็š„ %1 ๅ—Ž๏ผŸ + + + REMOVE + ็งป้™ค + + + Completed! + ๅทฒๅฎŒๆˆ๏ผ FrogPilotSettingsWindow MANAGE - ็ฎก็† + ็ฎก็† DRIVING MODEL - ้ง•้ง›ๆจกๅž‹ + ้ง•้ง›ๆจกๅž‹ GAS / BRAKE - ๆฒน้–€ / ็…ž่ปŠ + ๆฒน้–€ / ็…ž่ปŠ STEERING - ่ฝ‰ๅ‘็ณป็ตฑ + ่ฝ‰ๅ‘ MAP DATA - ๅœฐๅœ–ๆ•ธๆ“š + ๅœฐๅœ–่ณ‡ๆ–™ NAVIGATION - ๅฐŽ่ˆช + ๅฐŽ่ˆช DATA - DATA + ่ณ‡ๆ–™ DEVICE CONTROLS - ่ฃ็ฝฎๆŽงๅˆถ + ่ฃ็ฝฎๆŽงๅˆถ UTILITIES - ๅ…ฌ็”จไบ‹ๆฅญ + ๅฏฆ็”จๅทฅๅ…ท APPEARANCE - ๅค–่ง€ + ๅค–่ง€ THEME - ไธป้กŒ + ไธป้กŒ VEHICLE SETTINGS - ่ปŠ่ผ›่จญๅฎš + ่ปŠ่ผ›่จญๅฎš WHEEL CONTROLS - ๆ–นๅ‘็›คๆŽงๅˆถ + ๆ–นๅ‘็›คๆŽงๅˆถ Alerts and Sounds - ่ญฆๅ ฑๅ’Œ่ฒ้Ÿณ + ่ญฆๅ ฑ่ˆ‡่ฒ้Ÿณ - FrogPilot settings for alert volumes and custom notifications to stay informed about important driving events. - FrogPilot ่จญๅฎš่ญฆๅ ฑ้Ÿณ้‡ๅ’Œ่‡ช่จ‚้€š็Ÿฅ๏ผŒไปฅ้šจๆ™‚ๆŽŒๆก้‡่ฆ็š„้ง•้ง›ไบ‹ไปถใ€‚ + <b>Adjust alert volumes and enable custom notifications.</b> + <b>่ชฟๆ•ด่ญฆๅ ฑ้Ÿณ้‡ไธฆๅ•Ÿ็”จ่‡ช่จ‚้€š็Ÿฅใ€‚</b> Driving Controls - ้ง•้ง›ๆŽงๅˆถ + ้ง•้ง›ๆŽงๅˆถ - FrogPilot settings for acceleration, braking, and steering. - FrogPilot ่จญๅฎšๅŠ ้€Ÿใ€ๅˆถๅ‹•ๅ’Œ่ฝ‰ๅ‘ใ€‚ + <b>Fine-tune custom FrogPilot acceleration, braking, and steering controls.</b> + <b>ๅพฎ่ชฟ่‡ช่จ‚็š„ FrogPilot ๅŠ ้€Ÿใ€็…ž่ปŠ่ˆ‡่ฝ‰ๅ‘ๆŽงๅˆถใ€‚</b> Navigation - ๅฐŽ่ˆช + ๅฐŽ่ˆช - Download map data for <b>Curve Speed Control</b>, <b>Speed Limit Controller</b>, and set up <b>Navigate on openpilot (NOO)</b>. - ไธ‹่ผ‰<b>ๆ›ฒ็ทš้€ŸๅบฆๆŽงๅˆถ</b>ใ€<b>้€Ÿๅบฆ้™ๅˆถๆŽงๅˆถๅ™จ</b>็š„ๅœฐๅœ–ๆ•ธๆ“š๏ผŒไธฆ่จญ็ฝฎ<b>ๅœจ openpilot ไธŠๅฐŽ่ˆช (NOO)</b>ใ€‚ + <b>Download map data for the "Speed Limit Controller" and configure "Navigate on openpilot" (NOO).</b> + <b>ไธ‹่ผ‰ใ€ŒSpeed Limit Controllerใ€็š„ๅœฐๅœ–่ณ‡ๆ–™๏ผŒไธฆ่จญๅฎšใ€ŒNavigate on openpilotใ€๏ผˆNOO๏ผ‰ใ€‚</b> - System Management - ็ณป็ตฑ็ฎก็† + System Settings + ็ณป็ตฑ่จญๅฎš - Data storage management, debugging tools, device settings, screen behavior settings, system backups, and utilities to maintain, optimize, and troubleshoot FrogPilot. - ่ณ‡ๆ–™ๅ„ฒๅญ˜็ฎก็†ใ€้™ค้Œฏๅทฅๅ…ทใ€่ฃ็ฝฎ่จญๅฎšใ€่žขๅน•่กŒ็‚บ่จญๅฎšใ€็ณป็ตฑๅ‚™ไปฝ๏ผŒไปฅๅŠ็”จๆ–ผ็ถญ่ญทใ€ๅ„ชๅŒ–ๅ’Œๆ•…้šœๆŽ’้™คFrogPilot็š„ๅทฅๅ…ทใ€‚ + <b>Manage backups, device settings, screen options, storage, and tools to keep FrogPilot running smoothly.</b> + <b>็ฎก็†ๅ‚™ไปฝใ€่ฃ็ฝฎ่จญๅฎšใ€่žขๅน•้ธ้ …ใ€ๅ„ฒๅญ˜็ฉบ้–“่ˆ‡ๅทฅๅ…ท๏ผŒ็ขบไฟ FrogPilot ้ †ๆšข้‹่กŒใ€‚</b> Theme and Appearance - ไธป้กŒๅ’Œๅค–่ง€ + ไธป้กŒ่ˆ‡ๅค–่ง€ - FrogPilot settings for the current theme, driving-screen, and the overall user interface. - FrogPilot ่จญๅฎš้ฉ็”จๆ–ผ็•ถๅ‰ไธป้กŒใ€้ง•้ง›่žขๅน•ๅ’Œๆ•ด้ซ”ไฝฟ็”จ่€…ไป‹้ขใ€‚ + <b>Customize the look of the driving screen and interface, including themes!</b> + <b>่‡ช่จ‚้ง•้ง›็•ซ้ข่ˆ‡ไป‹้ข็š„ๅค–่ง€๏ผŒๅŒ…ๆ‹ฌไธป้กŒ๏ผ</b> - Vehicle Controls - ่ปŠ่ผ›ๆŽงๅˆถ + Vehicle Settings + ่ปŠ่ผ›่จญๅฎš - Options unique to supported manufacturers and vehicle fingerprint management. - ๆ”ฏๆŒ่ฃฝ้€ ๅ•†ๅ’Œ่ปŠ่ผ›ๆŒ‡็ด‹็ฎก็†็š„็จ็‰น้ธ้ …ใ€‚ + <b>Configure car-specific options and steering wheel button mappings.</b> + <b>่จญๅฎš่ปŠ่ผ›ๅฐˆๅฑฌ้ธ้ …่ˆ‡ๆ–นๅ‘็›คๆŒ‰้ตๅฐๆ‡‰ใ€‚</b> Minimal - ๆœ€ๅฐ + ๆœ€ๅฐ Standard - ๆจ™ๆบ– + ๆจ™ๆบ– Advanced - ้€ฒ้šŽ + ้€ฒ้šŽ Developer - ้–‹็™ผ่€… + ้–‹็™ผ่€… Tuning Level - ่ชฟๆ•ด็ดšๅˆฅ + ่ชฟๆ ก็ญ‰็ดš - The visibility and complexity of tuning settings. Lower levels simplify the interface by hiding advanced options, while higher levels unlock detailed customization. + Choose your tuning level. Lower levels keep it simple; higher levels unlock more toggles for finer control. Minimal - Ideal for those who prefer simplicity or ease of use Standard - Recommended for most users for a balanced experience -Advanced - Unlocks fine-tuning controls for more experienced users -Developer - Unlocks highly customizable settings for seasoned enthusiasts - ่ชฟๆ•ด่จญๅฎš็š„ๅฏ่ฆ‹ๆ€งๅ’Œ่ค‡้›œๆ€งใ€‚่ผƒไฝŽ็š„็ดšๅˆฅ้€š้Ž้šฑ่—้ซ˜็ดš้ธ้ …ไพ†็ฐกๅŒ–ไป‹้ข๏ผŒ่€Œ่ผƒ้ซ˜็š„็ดšๅˆฅๅ‰‡่งฃ้Ž–่ฉณ็ดฐ็š„่‡ชๅฎš็พฉใ€‚ +Advanced - Fine-tuning for experienced users +Developer - Highly customizable settings for seasoned enthusiasts + ้ธๆ“‡ไฝ ็š„่ชฟๆ ก็ญ‰็ดšใ€‚่ผƒไฝŽ็ญ‰็ดšๆ›ด็ฐกๅ–ฎ๏ผ›่ผƒ้ซ˜็ญ‰็ดšๅฏ่งฃ้Ž–ๆ›ดๅคšๅˆ‡ๆ›ไปฅ้€ฒ่กŒๆ›ด็ฒพ็ดฐ็š„ๆŽงๅˆถใ€‚ -ๆœ€ๅฐ - ้ฉๅˆๅ–œๆญก็ฐกๅ–ฎๆˆ–ๆ˜“็”จ็š„ไบบ -ๆจ™ๆบ– - ็‚บๅคงๅคšๆ•ธ็”จๆˆถๆŽจ่–ฆ๏ผŒๆไพ›ๅนณ่กก็š„้ซ”้ฉ— -้ซ˜็ดš - ่งฃ้Ž–ๅพฎ่ชฟๆŽงๅˆถ๏ผŒ้ฉๅˆๆ›ดๆœ‰็ถ“้ฉ—็š„็”จๆˆถ -้–‹็™ผ่€… - ่งฃ้Ž–้ซ˜ๅบฆๅฏ่‡ชๅฎš็พฉ็š„่จญ็ฝฎ๏ผŒ้ฉๅˆ่ณ‡ๆทฑๆ„›ๅฅฝ่€… +Minimal - ้ฉๅˆๅๅฅฝ็ฐกๅ–ฎๆˆ–ๆ˜“็”จ็š„ไบบ +Standard - ๅปบ่ญฐๅคšๆ•ธไฝฟ็”จ่€…ไฝฟ็”จ๏ผŒไปฅๅ–ๅพ—ๅนณ่กก้ซ”้ฉ— +Advanced - ไพ›ๆœ‰็ถ“้ฉ—็š„ไฝฟ็”จ่€…้€ฒ่กŒๅพฎ่ชฟ +Developer - ็‚บ่ณ‡ๆทฑๆ„›ๅฅฝ่€…ๆไพ›้ซ˜ๅบฆ่‡ช่จ‚็š„่จญๅฎš - WARNING: This unlocks some potentially dangerous settings that can DRASTICALLY alter your driving experience! - ่ญฆๅ‘Š๏ผš้€™ๅฐ‡่งฃ้Ž–ไธ€ไบ›ๅฏ่ƒฝๅฑ้šช็š„่จญๅฎš๏ผŒๅฏ่ƒฝๆœƒๆฅตๅคงๅœฐๆ”น่ฎŠๆ‚จ็š„้ง•้ง›้ซ”้ฉ—๏ผ + WARNING: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do! + ่ญฆๅ‘Š๏ผš้€™ไบ›่จญๅฎšๅ…ทๆœ‰้ขจ้šช๏ผŒๅฏ่ƒฝๆœƒๅคงๅน…ๆ”น่ฎŠ openpilot ็š„้ง•้ง›ๆ–นๅผใ€‚ๅชๆœ‰ๅœจๅฎŒๅ…จไบ†่งฃๅ…ถไฝœ็”จๆ™‚ๆ‰้€ฒ่กŒๆ›ดๆ”น๏ผ + + + All toggle descriptions are currently expanded. You can tap a toggle's name to open or close its description at any time! + ็›ฎๅ‰ๆ‰€ๆœ‰ๅˆ‡ๆ›ๆ่ฟฐ็š†ๅทฒๅฑ•้–‹ใ€‚ไฝ ๅฏ้šจๆ™‚้ปžๆŒ‰ๅˆ‡ๆ›ๅ็จฑไปฅ้–‹ๅ•Ÿๆˆ–้—œ้–‰ๅ…ถๆ่ฟฐ๏ผ FrogPilotSoundsPanel - Alert Volume Control - ่ญฆๅ ฑ้Ÿณ้‡ๆŽงๅˆถ + Alert Volume Controller + ่ญฆ็คบ้Ÿณ้‡ๆŽงๅˆถๅ™จ - Adjust the volume for each alert in openpilot. - ่ชฟๆ•ดopenpilotไธญๆฏๅ€‹่ญฆๅ ฑ็š„้Ÿณ้‡ใ€‚ + <b>Set how loud each type of openpilot alert is</b> to keep routine prompts from becoming distracting. + <b>่จญๅฎšๅ„้กžๅž‹ openpilot ่ญฆๅ ฑ็š„้Ÿณ้‡</b>๏ผŒไปฅๅ…ไพ‹่กŒๆ็คบ้€ ๆˆๅนฒๆ“พใ€‚ Disengage Volume - ่งฃ้™ค้Ÿณ้‡ + ่งฃ้™คๆŽฅ็ฎก้Ÿณ้‡ - Adjust the volume for alerts like:<br><br><b>Adaptive Cruise Disabled</b><br><b>Brake Pedal Pressed</b><br><b>Parking Brake Engaged</b><br><b>Speed too Low</b> - ่ชฟๆ•ด่ญฆๅ ฑ้Ÿณ้‡๏ผŒไพ‹ๅฆ‚๏ผš<br><br><b>่‡ช้ฉๆ‡‰ๅทก่ˆชๅทฒๅœ็”จ</b><br><b>ๅ‰Ž่ปŠ่ธๆฟๅทฒๆŒ‰ไธ‹</b><br><b>ๅœ่ปŠๅ‰Ž่ปŠๅทฒๅ•Ÿ็”จ</b><br><b>้€Ÿๅบฆ้ŽไฝŽ</b> + <b>Set the volume for alerts when openpilot disengages.</b><br><br>Examples include: "Cruise Fault: Restart the Car", "Parking Brake Engaged", "Pedal Pressed". + <b>่จญๅฎš openpilot ่งฃ้™คๆŽฅ็ฎกๆ™‚็š„่ญฆๅ ฑ้Ÿณ้‡ใ€‚</b><br><br>ไพ‹ๅฆ‚๏ผšใ€Œๅทก่ˆชๆ•…้šœ๏ผš่ซ‹้‡ๆ–ฐๅ•Ÿๅ‹•่ปŠ่ผ›ใ€ใ€ใ€Œๅœ่ปŠ็…ž่ปŠๅทฒๅ•Ÿๅ‹•ใ€ใ€ใ€Œๅตๆธฌๅˆฐ่ธฉ่ธ่ธๆฟใ€ใ€‚ Engage Volume - ๅ•Ÿๅ‹•้Ÿณ้‡ + ๅ•Ÿ็”จ้Ÿณ้‡ - Adjust the volume for alerts like:<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> - ่ชฟๆ•ด่ญฆๅ ฑ้Ÿณ้‡๏ผŒไพ‹ๅฆ‚๏ผš<br><br><b>NNFF Torque Controller loaded</b><br><b>openpilot engaged</b> + <b>Set the volume for the chime when openpilot engages</b>, such as after pressing the "RESUME" or "SET" steering wheel buttons. + <b>่จญๅฎš openpilot ๅ•Ÿ็”จๆ™‚ๆ็คบ้Ÿณ็š„้Ÿณ้‡</b>๏ผŒไพ‹ๅฆ‚ๆŒ‰ไธ‹ๆ–นๅ‘็›คไธŠ็š„ใ€ŒRESUMEใ€ๆˆ–ใ€ŒSETใ€ๆŒ‰้ˆ•ไน‹ๅพŒใ€‚ Prompt Volume - ๆ็คบ้Ÿณ้‡ + ๆ็คบ้Ÿณ้‡ - Adjust the volume for alerts like:<br><br><b>Car Detected in Blindspot</b><br><b>Steer Unavailable Below "X"</b><br><b>Speed too Low</b><br><b>Take Control, Turn Exceeds Steering Limit</b> - ่ชฟๆ•ด่ญฆๅ ฑ้Ÿณ้‡๏ผŒไพ‹ๅฆ‚๏ผš<br><br><b>็›ฒ้ปžๅตๆธฌๅˆฐ่ปŠ่ผ›</b><br><b>ๆ–นๅ‘็›คไธๅฏ็”จๆ–ผไฝŽๆ–ผใ€ŒXใ€</b><br><b>้€Ÿๅบฆ้ŽไฝŽ</b><br><b>ๆŽฅ็ฎกๆŽงๅˆถ๏ผŒ่ฝ‰ๅ‘่ถ…้Ž่ฝ‰ๅ‘้™ๅˆถ</b> + <b>Set the volume for prompts that need attention.</b><br><br>Examples include: "Car Detected in Blindspot", "Steering Temporarily Unavailable", "Turn Exceeds Steering Limit". + <b>่จญๅฎš้œ€่ฆๆณจๆ„ไน‹ๆ็คบ็š„้Ÿณ้‡ใ€‚</b><br><br>ไพ‹ๅฆ‚๏ผšใ€Œๅœจ็›ฒ้ปžๅตๆธฌๅˆฐ่ปŠ่ผ›ใ€ใ€ใ€Œๆšซๆ™‚็„กๆณ•่ฝ‰ๅ‘ใ€ใ€ใ€Œ่ฝ‰ๅฝŽ่ถ…ๅ‡บ่ฝ‰ๅ‘้™ๅˆถใ€ใ€‚ Prompt Distracted Volume - ๆ็คบๅˆ†ๅฟƒ้Ÿณ้‡ + ๆ็คบๅˆ†ๅฟƒ้Ÿณ้‡ - Adjust the volume for alerts like:<br><br><b>Pay Attention, Driver Distracted</b><br><b>Touch Steering Wheel, Driver Unresponsive</b> - ่ชฟๆ•ด่ญฆๅ ฑ้Ÿณ้‡๏ผŒไพ‹ๅฆ‚๏ผš<br><br><b>ๆณจๆ„๏ผŒ้ง•้ง›ๅˆ†ๅฟƒ</b><br><b>่งธๆ‘ธๆ–นๅ‘็›ค๏ผŒ้ง•้ง›็„กๅๆ‡‰</b> + <b>Set the volume for prompts when openpilot detects driver distraction or unresponsiveness.</b><br><br>Examples include: "Pay Attention", "Touch Steering Wheel". + <b>่จญๅฎš็•ถ openpilot ๅตๆธฌๅˆฐ้ง•้ง›ๅˆ†ๅฟƒๆˆ–็„กๅๆ‡‰ๆ™‚็š„ๆ็คบ้Ÿณ้‡ใ€‚</b><br><br>ไพ‹ๅฆ‚๏ผšใ€Œ่ซ‹ๆณจๆ„ใ€ใ€ใ€Œ่งธ็ขฐๆ–นๅ‘็›คใ€ใ€‚ Refuse Volume - ๆ‹’็ต•้‡ + ๆ‹’ๆŽฅ้Ÿณ้‡ - Adjust the volume for alerts like:<br><br><b>openpilot Unavailable</b> - ่ชฟๆ•ด่ญฆๅ ฑ้Ÿณ้‡๏ผŒไพ‹ๅฆ‚๏ผš<br><br><b>openpilot ็„กๆณ•ไฝฟ็”จ</b> + <b>Set the volume for alerts when openpilot refuses to engage.</b><br><br>Examples include: "Brake Hold Active", "Door Open", "Seatbelt Unlatched". + <b>่จญๅฎš openpilot ๆ‹’็ต•ๆŽฅๅ…ฅๆ™‚็š„่ญฆๅ ฑ้Ÿณ้‡ใ€‚</b><br><br>ไพ‹ๅฆ‚๏ผšใ€Œ็…ž่ปŠไฟๆŒๅ•Ÿ็”จใ€ใ€ใ€Œ่ปŠ้–€้–‹ๅ•Ÿใ€ใ€ใ€Œๅฎ‰ๅ…จๅธถๆœชๆ‰ฃใ€ใ€‚ Warning Soft Volume - ่ญฆๅ‘Š่ปŸ้Ÿณ้‡ + ่ญฆๅ‘Š ่ปŸ้Ÿณ้‡ - Adjust the volume for alerts like:<br><br><b>BRAKE!, Risk of Collision</b><br><b>TAKE CONTROL IMMEDIATELY</b> - ่ชฟๆ•ด่ญฆๅ ฑ้Ÿณ้‡๏ผŒไพ‹ๅฆ‚๏ผš<br><br><b>็…ž่ปŠ๏ผ็ขฐๆ’ž้ขจ้šช</b><br><b>็ซ‹ๅณๆŽฅ็ฎก</b> + <b>Set the volume for softer warnings about potential risks.</b><br><br>Examples include: "BRAKE! Risk of Collision", "Steering Temporarily Unavailable". + <b>็‚บๆฝ›ๅœจ้ขจ้šช็š„่ผƒๆŸ”ๅ’Œ่ญฆๅ‘Š่จญๅฎš้Ÿณ้‡ใ€‚</b><br><br>ไพ‹ๅฆ‚๏ผšใ€ŒBRAKE! Risk of Collisionใ€ใ€ใ€ŒSteering Temporarily Unavailableใ€ใ€‚ Warning Immediate Volume - ่ญฆๅ‘Šๅณๆ™‚้Ÿณ้‡ + ่ญฆๅ‘Š ็ซ‹ๅณ้Ÿณ้‡ - Adjust the volume for alerts like:<br><br><b>DISENGAGE IMMEDIATELY, Driver Distracted</b><br><b>DISENGAGE IMMEDIATELY, Driver Unresponsive</b> - ่ชฟๆ•ด่ญฆๅ ฑ้Ÿณ้‡๏ผŒไพ‹ๅฆ‚๏ผš<br><br><b>็ซ‹ๅณ่„ซ้›ข๏ผŒ้ง•้ง›ๅˆ†ๅฟƒ</b><br><b>็ซ‹ๅณ่„ซ้›ข๏ผŒ้ง•้ง›็„กๅๆ‡‰</b> + <b>Set the volume for the loudest warnings that require urgent attention.</b><br><br>Examples include: "DISENGAGE IMMEDIATELY โ€” Driver Distracted", "DISENGAGE IMMEDIATELY โ€” Driver Unresponsive". + <b>่จญๅฎš้œ€็ทŠๆ€ฅๆณจๆ„ไน‹ๆœ€้Ÿฟไบฎ่ญฆๅ‘Š็š„้Ÿณ้‡ใ€‚</b><br><br>ไพ‹ๅฆ‚๏ผšใ€Œ็ซ‹ๅณ่งฃ้™ค โ€” ้ง•้ง›ๅˆ†ๅฟƒใ€ใ€ใ€Œ็ซ‹ๅณ่งฃ้™ค โ€” ้ง•้ง›็„กๅๆ‡‰ใ€ใ€‚ FrogPilot Alerts - FrogPilot ่ญฆๅ ฑ + FrogPilot ่ญฆ็คบ - FrogPilot alerts for various events in openpilot. - FrogPilot ๅœจ openpilot ไธญ้‡ๅฐๅ„็จฎไบ‹ไปถ็™ผๅ‡บ่ญฆๅ ฑใ€‚ + <b>Optional FrogPilot alerts</b> that highlight driving events in a more noticeable way. + <b>ๅฏ้ธ็š„ FrogPilot ่ญฆๅ ฑ</b>๏ผŒไปฅๆ›ด้†’็›ฎ็š„ๆ–นๅผ็ชๅ‡บ้กฏ็คบ้ง•้ง›ไบ‹ไปถใ€‚ - Goat Scream Steering Saturated Alert - ๅฑฑ็พŠๅฐ–ๅซ่ฝ‰ๅ‘้ฃฝๅ’Œ่ญฆๅ ฑ + Goat Scream + ๅฑฑ็พŠๅฐ–ๅซ - The infamous "Goat Scream" that has brought both joy and anger to FrogPilot users all around the world! - ่‡ญๅๆ˜ญ่‘—็š„ใ€Œๅฑฑ็พŠๅฐ–ๅซ่ฒใ€็ตฆๅ…จ็ƒ็š„FrogPilot็”จๆˆถๅธถไพ†ไบ†ๆญกๆจ‚ๅ’Œๆ†คๆ€’๏ผ + <b>Play the infamous "Goat Scream" when the steering controller reaches its limit.</b> Based on the "Turn Exceeds Steering Limit" event. + <b>็•ถ่ฝ‰ๅ‘ๆŽงๅˆถๅ™จ้”ๅˆฐๅ…ถๆฅต้™ๆ™‚ๆ’ญๆ”พๆƒกๅๆ˜ญๅฝฐ็š„ใ€Œๅฑฑ็พŠๆ…˜ๅซใ€ใ€‚</b> ๅŸบๆ–ผใ€Œ่ฝ‰ๅฝŽ่ถ…ๅ‡บ่ฝ‰ๅ‘ๆฅต้™ใ€ไบ‹ไปถใ€‚ Green Light Alert - ็ถ ็‡ˆ่ญฆๅ ฑ + ็ถ ็‡ˆๆ้†’ - Get an alert when the traffic light changes from red to green. - ็•ถ็ด…็‡ˆ่ฎŠ็‚บ็ถ ็‡ˆๆ™‚ๆ”ถๅˆฐๆ้†’ใ€‚ + <b>Play an alert when the model predicts a red light has turned green.</b><br><br><i><b>Disclaimer</b>: openpilot does not explicitly detect traffic lights. This alert is based on end-to-end model predictions from camera input and may trigger even when the light has not changed.</i> + <b>็•ถๆจกๅž‹้ ๆธฌ็ด…็‡ˆๅทฒ่ฝ‰็‚บ็ถ ็‡ˆๆ™‚ๆ’ญๆ”พ่ญฆๅ ฑใ€‚</b><br><br><i><b>ๅ…่ฒฌ่ฒๆ˜Ž</b>๏ผšopenpilot ไธๆœƒๆ˜Ž็ขบๅตๆธฌไบค้€š่™Ÿ่ชŒใ€‚ๆญค่ญฆๅ ฑๅŸบๆ–ผไพ†่‡ช็›ธๆฉŸ่ผธๅ…ฅ็š„็ซฏๅˆฐ็ซฏๆจกๅž‹้ ๆธฌ๏ผŒๅณไฝฟ่™Ÿ่ชŒๆœชๆ”น่ฎŠไนŸๅฏ่ƒฝ่งธ็™ผใ€‚</i> Lead Departing Alert - ้ ˜ๅฐŽ้›ข้–‹่ญฆๅ ฑ + ๅ‰่ปŠ่ตทๆญฅๆ้†’ - Get an alert when the lead vehicle begins to depart from a standstill. - ็•ถๅ‰่ปŠ้–‹ๅง‹ๅพž้œๆญข็‹€ๆ…‹ๅ‡บ็™ผๆ™‚ๆ”ถๅˆฐ่ญฆๅ ฑใ€‚ + <b>Play an alert when the lead vehicle departs from a stop.</b> + <b>็•ถๅ‰่ปŠๅพžๅœ่ปŠ่ตทๆญฅๆ™‚ๆ’ญๆ”พ่ญฆ็คบใ€‚</b> Loud "Car Detected in Blindspot" Alert - ๅคง่ฒใ€Œ็›ฒ้ปžๅตๆธฌๅˆฐ่ปŠ่ผ›ใ€่ญฆๅ ฑ + ้Ÿฟไบฎใ€Œ็›ฒ้ปžๅตๆธฌๅˆฐ่ปŠ่ผ›ใ€่ญฆๅ ฑ - A louder alert for when a vehicle is detected in the blindspot when attempting to change lanes. - ็•ถๅ˜—่ฉฆ่ฎŠๆ›่ปŠ้“ๆ™‚๏ผŒๅตๆธฌๅˆฐ็›ฒ้ปžไธญ็š„่ปŠ่ผ›ๆ™‚็™ผๅ‡บๆ›ด้Ÿฟไบฎ็š„่ญฆๅ ฑใ€‚ + <b>Play a louder alert if a vehicle is in the blind spot when attempting to change lanes.</b> Based on the "Car Detected in Blindspot" event. + <b>ๅ˜—่ฉฆ่ฎŠๆ›่ปŠ้“ๆ™‚๏ผŒๅฆ‚ๆœ‰่ปŠ่ผ›ๅœจ็›ฒ้ปžไธญ๏ผŒๆ’ญๆ”พๆ›ดๅคง็š„่ญฆๅ ฑใ€‚</b> ๅŸบๆ–ผใ€Œ็›ฒ้ปžๅตๆธฌๅˆฐ่ปŠ่ผ›ใ€ไบ‹ไปถใ€‚ Speed Limit Changed Alert - ้™้€Ÿ่ฎŠๆ›ด่ญฆๅ ฑ + ้€Ÿ้™่ฎŠๆ›ด่ญฆ็คบ - Get an alert when the speed limit changes. - ็•ถ้€Ÿๅบฆ้™ๅˆถ่ฎŠๆ›ดๆ™‚ๆ”ถๅˆฐ่ญฆ็คบใ€‚ + <b>Play an alert when the posted speed limit changes.</b> + <b>็•ถๆจ™็คบ็š„้€Ÿ้™่ฎŠๆ›ดๆ™‚ๆ’ญๆ”พๆ้†’ใ€‚</b> Muted - ้œ้Ÿณ + ๅทฒ้œ้Ÿณ Auto - ่‡ชๅ‹• + ่‡ชๅ‹• Test - ๆธฌ่ฉฆ + ๆธฌ่ฉฆ FrogPilotThemesPanel - Custom Theme - ่‡ช่จ‚ไธป้กŒ + Custom Themes + ่‡ช่จ‚ไฝˆๆ™ฏไธป้กŒ - The overall appearance of openpilot. - openpilot ็š„ๆ•ด้ซ”ๅค–่ง€ใ€‚ + <b>The overall look and feel of openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot ็š„ๆ•ด้ซ”ๅค–่ง€่ˆ‡ๆ„Ÿๅ—ใ€‚</b>ๅœจใ€ŒThe Pondใ€ไธญไฝฟ็”จใ€ŒTheme Makerใ€ไพ†ๅปบ็ซ‹ไธฆๅˆ†ไบซไฝ ็š„่‡ช่จ‚ไธป้กŒ๏ผ Color Scheme - ้…่‰ฒๆ–นๆกˆ + ้…่‰ฒๆ–นๆกˆ - openpilot's color scheme. - -Want to submit your own color scheme? Share it in the "custom-themes" channel on the FrogPilot Discord! - openpilot ็š„้…่‰ฒๆ–นๆกˆใ€‚ - -ๆƒณๆไบคๆ‚จ่‡ชๅทฑ็š„้…่‰ฒๆ–นๆกˆๅ—Ž๏ผŸๅœจ FrogPilot Discord ็š„ "custom-themes" ้ ป้“ไธญๅˆ†ไบซๅง๏ผ + <b>The color scheme used throughout openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot ๅ…จๅŸŸไฝฟ็”จ็š„้…่‰ฒๆ–นๆกˆใ€‚</b>ๅœจใ€ŒThe Pondใ€ไธญไฝฟ็”จใ€ŒTheme Makerใ€ๅปบ็ซ‹ไธฆๅˆ†ไบซไฝ ่‡ชๅทฑ็š„ไธป้กŒ๏ผ + + + Distance Button + ่ท้›ขๆŒ‰้ˆ• + + + <b>The distance button icons shown on the driving screen.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>้ง•้ง›็•ซ้ขไธŠ้กฏ็คบ็š„่ท้›ขๆŒ‰้ˆ•ๅœ–็คบใ€‚</b> ไฝฟ็”จใ€ŒThe Pondใ€ไธญ็š„ใ€ŒTheme Makerใ€ไพ†ๅปบ็ซ‹ไธฆๅˆ†ไบซไฝ ่‡ชๅทฑ็š„ไธป้กŒ๏ผ Icon Pack - ๅœ–็คบๅŒ… + ๅœ–็คบๅฅ—ไปถ - openpilot's icon pack. - -Want to submit your own icons? Share them in the "custom-themes" channel on the FrogPilot Discord! - openpilot ็š„ๅœ–็คบๅŒ…ใ€‚ - -ๆƒณๆไบคๆ‚จ่‡ชๅทฑ็š„ๅœ–็คบๅ—Ž๏ผŸๅœจ FrogPilot Discord ็š„ใ€Œcustom-themesใ€้ ป้“ไธญๅˆ†ไบซๅฎƒๅ€‘๏ผ + <b>The icon style used across openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot ๅ…จๅŸŸไฝฟ็”จ็š„ๅœ–็คบ้ขจๆ ผใ€‚</b>ๅœจใ€ŒThe Pondใ€ไธญไฝฟ็”จใ€ŒTheme Makerใ€ไพ†ๅปบ็ซ‹ไธฆๅˆ†ไบซไฝ ็š„่‡ช่จ‚ไธป้กŒ๏ผ Sound Pack - ้Ÿณๆ•ˆๅŒ… + ้Ÿณๆ•ˆๅฅ—ไปถ - openpilot's sound effects. - -Want to submit your own sounds? Share them in the "custom-themes" channel on the FrogPilot Discord! - openpilot ็š„้Ÿณๆ•ˆใ€‚ - -ๆƒณๆไบคๆ‚จ่‡ชๅทฑ็š„่ฒ้Ÿณๅ—Ž๏ผŸๅœจ FrogPilot Discord ็š„ใ€Œcustom-themesใ€้ ป้“ๅˆ†ไบซๅฎƒๅ€‘๏ผ + <b>The sound pack used by openpilot.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>openpilot ไฝฟ็”จ็š„้Ÿณๆ•ˆๅŒ…ใ€‚</b> ๅœจใ€ŒThe Pondใ€ไธญไฝฟ็”จใ€ŒTheme Makerใ€ไพ†ๅปบ็ซ‹ไธฆๅˆ†ไบซไฝ ่‡ชๅทฑ็š„ไธป้กŒ๏ผ Steering Wheel - ๆ–นๅ‘็›ค + ๆ–นๅ‘็›ค - The steering wheel icon in the top right of the driving screen. - ้ง•้ง›็•ซ้ขๅณไธŠ่ง’็š„ๆ–นๅ‘็›คๅœ–็คบใ€‚ - - - Themed turn signal animations. - -Want to submit your own animations? Share them in the "custom-themes" channel on the FrogPilot Discord! - ๆƒณๆไบคๆ‚จ่‡ชๅทฑ็š„ๅ‹•็•ซๅ—Ž๏ผŸๅœจ FrogPilot Discord ็š„ใ€Œcustom-themesใ€้ ป้“ๅˆ†ไบซๅฎƒๅ€‘๏ผ - - - Download Status - ไธ‹่ผ‰็‹€ๆ…‹ - - - Holiday Themes - ๅ‡ๆ—ฅไธป้กŒ - - - Holiday-based visual themes for openpilot. Minor holidays last one day; major holidays (Christmas, Easter, Halloween, etc.) continue all week. - ๅŸบๆ–ผ็ฏ€ๆ—ฅ็š„openpilot่ฆ–่ฆบไธป้กŒใ€‚ๅฐ็ฏ€ๆ—ฅๆŒ็บŒไธ€ๅคฉ๏ผ›ไธป่ฆ็ฏ€ๆ—ฅ๏ผˆ่–่ช•็ฏ€ใ€ๅพฉๆดป็ฏ€ใ€่ฌ่–็ฏ€็ญ‰๏ผ‰ๆŒ็บŒไธ€้€ฑใ€‚ - - - Rainbow Path - ๅฝฉ่™นไน‹่ทฏ - - - The path on the driving screen turns into a Mario Kart inspired "Rainbow Path". - ้ง•้ง›่žขๅน•ไธŠ็š„่ทฏๅพ‘่ฎŠๆˆไบ†ๅ—ใ€Š็‘ชๅˆฉๆญ่ณฝ่ปŠใ€‹ๅ•Ÿ็™ผ็š„ใ€Œๅฝฉ่™น่ทฏใ€ใ€‚ - - - Random Events - ้šจๆฉŸไบ‹ไปถ - - - Random cosmetic events that trigger after certain driving conditions. These events are purely for fun and don't affect driving controls! - ๅœจ็‰นๅฎš้ง•้ง›ๆขไปถๅพŒ่งธ็™ผ็š„้šจๆฉŸๅŒ–ๅฆไบ‹ไปถใ€‚้€™ไบ›ไบ‹ไปถ็ด”็ฒนๆ˜ฏ็‚บไบ†ๅจ›ๆจ‚๏ผŒไธๆœƒๅฝฑ้Ÿฟ้ง•้ง›ๆŽงๅˆถ๏ผ - - - Random Themes - ้šจๆฉŸไธป้กŒ - - - Cycles through your downloaded themes randomly on each boot, giving every theme in your collection a chance to shine! - ๅœจๆฏๆฌกๅ•Ÿๅ‹•ๆ™‚้šจๆฉŸๅพช็’ฐ้กฏ็คบๆ‚จไธ‹่ผ‰็š„ไธป้กŒ๏ผŒ่ฎ“ๆ‚จๆ”ถ่—ไธญ็š„ๆฏๅ€‹ไธป้กŒ้ƒฝๆœ‰ๆฉŸๆœƒๅฑ•็พ๏ผ - - - Startup Alert - ๅ•Ÿๅ‹•่ญฆๅ ฑ - - - The text of the "Startup Alert" message that appears at the beginning of a drive. - ้ฉ…ๅ‹•ๅ™จ้–‹ๅง‹ๆ™‚ๅ‡บ็พ็š„ใ€Œๅ•Ÿๅ‹•่ญฆๅ ฑใ€ๆถˆๆฏ็š„ๆ–‡ๆœฌใ€‚ - - - DELETE - ๅˆช้™ค - - - DOWNLOAD - ไธ‹่ผ‰ - - - SELECT - SELECT - - - Select a color scheme to delete - ้ธๆ“‡่ฆๅˆช้™ค็š„้…่‰ฒๆ–นๆกˆ - - - Are you sure you want to delete the "%1" color scheme? - ๆ‚จ็ขบๅฎš่ฆๅˆช้™ค "%1" ่‰ฒๅฝฉๆ–นๆกˆๅ—Ž๏ผŸ - - - Delete - ๅˆช้™ค - - - Select a color scheme to download - ้ธๆ“‡ไธ€ๅ€‹่‰ฒๅฝฉๆ–นๆกˆไธ‹่ผ‰ - - - Select a color scheme - ้ธๆ“‡ไธ€ๅ€‹้…่‰ฒๆ–นๆกˆ - - - Select a distance icon pack to delete - ้ธๆ“‡ไธ€ๅ€‹่ท้›ขๅœ–็คบๅŒ…ไปฅๅˆช้™ค - - - Are you sure you want to delete the "%1" distance icon pack? - ๆ‚จ็ขบๅฎš่ฆๅˆช้™คใ€Œ%1ใ€่ท้›ขๅœ–็คบๅŒ…ๅ—Ž๏ผŸ - - - Select a distance icon pack to download - ้ธๆ“‡ไธ€ๅ€‹่ท้›ขๅœ–็คบๅŒ…ไธ‹่ผ‰ - - - Select a distance icon pack - ้ธๆ“‡่ท้›ขๅœ–็คบๅŒ… - - - Select an icon pack to delete - ้ธๆ“‡่ฆๅˆช้™ค็š„ๅœ–็คบๅŒ… - - - Are you sure you want to delete the "%1" icon pack? - ๆ‚จ็ขบๅฎš่ฆๅˆช้™คใ€Œ%1ใ€ๅœ–็คบๅŒ…ๅ—Ž๏ผŸ - - - Select an icon pack to download - ้ธๆ“‡ไธ€ๅ€‹ๅœ–็คบๅŒ…ไธ‹่ผ‰ - - - Select an icon pack - ้ธๆ“‡ๅœ–็คบๅŒ… - - - Select a signal animation to delete - ้ธๆ“‡่ฆๅˆช้™ค็š„ไฟก่™Ÿๅ‹•็•ซ - - - Are you sure you want to delete the "%1" signal animation? - ๆ‚จ็ขบๅฎš่ฆๅˆช้™คใ€Œ%1ใ€ไฟก่™Ÿๅ‹•็•ซๅ—Ž๏ผŸ - - - Select a signal animation to download - ้ธๆ“‡ไธ€ๅ€‹ไฟก่™Ÿๅ‹•็•ซไธ‹่ผ‰ - - - Select a signal animation - ้ธๆ“‡ไธ€ๅ€‹ไฟก่™Ÿๅ‹•็•ซ - - - Select a sound pack to delete - ้ธๆ“‡่ฆๅˆช้™ค็š„้Ÿณๆ•ˆๅŒ… - - - Are you sure you want to delete the "%1" sound pack? - ๆ‚จ็ขบๅฎš่ฆๅˆช้™คใ€Œ%1ใ€้Ÿณๆ•ˆๅŒ…ๅ—Ž๏ผŸ - - - Select a sound pack to download - ้ธๆ“‡่ฆไธ‹่ผ‰็š„้Ÿณๆ•ˆๅŒ… - - - Select a sound pack - ้ธๆ“‡้Ÿณๆ•ˆๅŒ… - - - Select a steering wheel to delete - ้ธๆ“‡่ฆๅˆช้™ค็š„ๆ–นๅ‘็›ค - - - Are you sure you want to delete the "%1" steering wheel? - ๆ‚จ็ขบๅฎš่ฆๅˆช้™คใ€Œ%1ใ€ๆ–นๅ‘็›คๅ—Ž๏ผŸ - - - Select a steering wheel to download - ้ธๆ“‡ไธ€ๅ€‹ๆ–นๅ‘็›คไธ‹่ผ‰ - - - Select a steering wheel - ้ธๆ“‡ๆ–นๅ‘็›ค - - - STOCK - ๅบซๅญ˜ - - - FROGPILOT - FROGPILOT - - - CUSTOM - ่‡ช่จ‚ - - - CLEAR - ๆธ…้™ค - - - Enter the text for the top half - ่ผธๅ…ฅไธŠๅŠ้ƒจๅˆ†็š„ๆ–‡ๅญ— - - - Characters: 0/%1 - ๅญ—ๅ…ƒ๏ผš0/%1 - - - Enter the text for the bottom half - ่ผธๅ…ฅไธ‹ๅŠ้ƒจๅˆ†็š„ๆ–‡ๅญ— - - - "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! - ใ€Œ้šจๆฉŸไธป้กŒใ€ๅƒ…้ฉ็”จๆ–ผๅทฒไธ‹่ผ‰็š„ไธป้กŒ๏ผŒๅ› ๆญค่ซ‹็ขบไฟไธ‹่ผ‰ๆ‚จๅธŒๆœ›ไฝฟ็”จ็š„ไธป้กŒ๏ผ - - - CANCEL - ๅ–ๆถˆ - - - Are you sure you want to completely reset your startup message? - ๆ‚จ็ขบๅฎš่ฆๅฎŒๅ…จ้‡็ฝฎๆ‚จ็š„ๅ•Ÿๅ‹•ๆถˆๆฏๅ—Ž๏ผŸ + <b>The steering-wheel icon</b> shown at the top-right of the driving screen. Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>ๆ–นๅ‘็›คๅœ–็คบ</b> ้กฏ็คบๅœจ้ง•้ง›็•ซ้ขๅณไธŠ่ง’ใ€‚ไฝฟ็”จใ€ŒThe Pondใ€ไธญ็š„ใ€ŒTheme Makerใ€ไพ†ๅปบ็ซ‹ไธฆๅˆ†ไบซไฝ ่‡ชๅทฑ็š„ไธป้กŒ๏ผ Turn Signal - ่ฝ‰ๅ‘็‡ˆ + ๆ–นๅ‘็‡ˆ + + + <b>Themed turn-signal animations.</b> Use the "Theme Maker" in "The Pond" to create and share your own themes! + <b>ไธป้กŒๅŒ–ๆ–นๅ‘็‡ˆๅ‹•็•ซใ€‚</b> ไฝฟ็”จใ€ŒThe Pondใ€ไธญ็š„ใ€ŒTheme Makerใ€ไพ†ๅปบ็ซ‹ไธฆๅˆ†ไบซไฝ ่‡ชๅทฑ็š„ไธป้กŒ๏ผ + + + Download Status + ไธ‹่ผ‰็‹€ๆ…‹ + + + Holiday Themes + ็ฏ€ๆ—ฅไธป้กŒ + + + <b>Themes based on U.S. holidays.</b> Minor holidays last one day; major holidays (Christmas, Easter, Halloween) run for a full week. + <b>ไปฅ็พŽๅœ‹็ฏ€ๆ—ฅ็‚บไธป้กŒใ€‚</b> ๆฌก่ฆ็ฏ€ๆ—ฅๆŒ็บŒไธ€ๅคฉ๏ผ›ไธป่ฆ็ฏ€ๆ—ฅ๏ผˆChristmasใ€Easterใ€Halloween๏ผ‰ๆŒ็บŒไธ€ๆ•ด้€ฑใ€‚ + + + Rainbow Path + ๅฝฉ่™น่ทฏๅพ‘ + + + <b>Color the driving path like a Mario Kartโ€“style "Rainbow Road".</b> + <b>ๅฐ‡่กŒ้ง›่ทฏๅพ‘่‘—่‰ฒ็‚บ้กžไผผใ€Š็‘ชๅˆฉๆญ่ณฝ่ปŠใ€‹็š„ใ€Œๅฝฉ่™น่ทฏใ€ใ€‚</b> + + + Random Events + ้šจๆฉŸไบ‹ไปถ + + + <b>Occasional on-screen effects triggered by driving conditions.</b> These are purely a visual and don't impact how openpilot drives! + <b>ๅ› ้ง•้ง›ๆขไปถ่งธ็™ผ็š„ๅถ็™ผ่žขๅน•ๆ•ˆๆžœใ€‚</b> ้€™ไบ›ๅƒ…็‚บ่ฆ–่ฆบๆ•ˆๆžœ๏ผŒไธๅฝฑ้Ÿฟ openpilot ็š„้ง•้ง›ๆ–นๅผ๏ผ + + + Random Themes + ้šจๆฉŸไธป้กŒ + + + <b>Pick a random theme between each drive</b> from the themes you have downloaded. Great for variety without changing settings while driving. + <b>ๅœจๆฏๆฌก่กŒ้ง›ไน‹้–“้šจๆฉŸ้ธๆ“‡ไธป้กŒ</b>๏ผŒๅพžไฝ ๅทฒไธ‹่ผ‰็š„ไธป้กŒไธญๆŒ‘้ธใ€‚ๆไพ›ๅคšๆจฃๆ€ง๏ผŒไธ”ๅœจ่กŒ้ง›ๆ™‚็„ก้œ€่ฎŠๆ›ด่จญๅฎšใ€‚ + + + Startup Alert + ๅ•Ÿๅ‹•่ญฆ็คบ + + + <b>Customize the "Startup Alert" message</b> shown at the start of each drive. + <b>่‡ช่จ‚ๆฏๆฌก่กŒ็จ‹้–‹ๅง‹ๆ™‚้กฏ็คบ็š„ใ€Œๅ•Ÿๅ‹•่ญฆ็คบใ€่จŠๆฏ</b> + + + DELETE + ๅˆช้™ค + + + DOWNLOAD + ไธ‹่ผ‰ + + + SELECT + ้ธๆ“‡ + + + Select a color scheme to delete + ้ธๆ“‡่ฆๅˆช้™ค็š„้…่‰ฒๆ–นๆกˆ + + + Delete the "%1" color scheme? + ๅˆช้™คใ€Œ%1ใ€้…่‰ฒๆ–นๆกˆ๏ผŸ + + + Delete + ๅˆช้™ค + + + Select a color scheme to download + ้ธๅ–่ฆไธ‹่ผ‰็š„้…่‰ฒๆ–นๆกˆ + + + Select a color scheme + ้ธๆ“‡้…่‰ฒๆ–นๆกˆ + + + Select a distance icon pack to delete + ้ธๆ“‡่ฆๅˆช้™ค็š„่ท้›ขๅœ–็คบๅฅ—ไปถ + + + Delete the "%1" distance icon pack? + ๅˆช้™คใ€Œ%1ใ€่ท้›ขๅœ–็คบๅฅ—ไปถ๏ผŸ + + + Select a distance icon pack to download + ้ธๆ“‡่ฆไธ‹่ผ‰็š„่ท้›ขๅœ–็คบๅฅ—ไปถ + + + Select a distance icon pack + ้ธๆ“‡่ท้›ขๅœ–็คบๅฅ—ไปถ + + + Select an icon pack to delete + ้ธๅ–่ฆๅˆช้™ค็š„ๅœ–็คบๅฅ—ไปถ + + + Delete the "%1" icon pack? + ๅˆช้™คใ€Œ%1ใ€ๅœ–็คบๅŒ…๏ผŸ + + + Select an icon pack to download + ้ธๆ“‡่ฆไธ‹่ผ‰็š„ๅœ–็คบๅŒ… + + + Select an icon pack + ้ธๆ“‡ๅœ–็คบๅฅ—ไปถ + + + Select a signal animation to delete + ้ธๆ“‡่ฆๅˆช้™ค็š„่จŠ่™Ÿๅ‹•็•ซ + + + Delete the "%1" signal animation? + ๅˆช้™คใ€Œ%1ใ€ไฟก่™Ÿๅ‹•็•ซ๏ผŸ + + + Select a signal animation to download + ้ธๆ“‡่ฆไธ‹่ผ‰็š„่จŠ่™Ÿๅ‹•็•ซ + + + Select a signal animation + ้ธๆ“‡่จŠ่™Ÿๅ‹•็•ซ + + + Select a sound pack to delete + ้ธๆ“‡่ฆๅˆช้™ค็š„้Ÿณๆ•ˆๅŒ… + + + Delete the "%1" sound pack? + ๅˆช้™คใ€Œ%1ใ€้Ÿณๆ•ˆๅŒ…๏ผŸ + + + Select a sound pack to download + ้ธๆ“‡่ฆไธ‹่ผ‰็š„้Ÿณๆ•ˆๅŒ… + + + Select a sound pack + ้ธๆ“‡้Ÿณๆ•ˆๅŒ… + + + Select a steering wheel to delete + ้ธๆ“‡่ฆๅˆช้™ค็š„ๆ–นๅ‘็›ค + + + Delete the "%1" steering wheel? + ๅˆช้™คใ€Œ%1ใ€ๆ–นๅ‘็›ค๏ผŸ + + + Select a steering wheel to download + ้ธๆ“‡่ฆไธ‹่ผ‰็š„ๆ–นๅ‘็›ค + + + Select a steering wheel + ้ธๆ“‡ๆ–นๅ‘็›ค + + + STOCK + ๅŽŸๅป  + + + FROGPILOT + FROGPILOT + + + CUSTOM + ่‡ช่จ‚ + + + CLEAR + ๆธ…้™ค + + + Enter the text for the top half + ่ผธๅ…ฅไธŠๅŠ้ƒจๅˆ†็š„ๆ–‡ๅญ— + + + Characters: 0/%1 + ๅญ—ๅ…ƒ๏ผš0/%1 + + + Enter the text for the bottom half + ่ผธๅ…ฅไธ‹ๅŠ้ƒจๅˆ†็š„ๆ–‡ๅญ— + + + Are you sure you want to completely reset your startup message? + ๆ‚จ็ขบๅฎš่ฆๅฎŒๅ…จ้‡่จญๆ‚จ็š„ๅ•Ÿๅ‹•่จŠๆฏๅ—Ž๏ผŸ + + + "Random Themes" only works with downloaded themes, so make sure you download the themes you want it to use! + ใ€Œ้šจๆฉŸไธป้กŒใ€ๅƒ…้ฉ็”จๆ–ผๅทฒไธ‹่ผ‰็š„ไธป้กŒ๏ผŒ่ซ‹ๅ…ˆไธ‹่ผ‰ไฝ ๆƒณ่ฎ“ๅฎƒไฝฟ็”จ็š„ไธป้กŒ๏ผ + + + CANCEL + ๅ–ๆถˆ FrogPilotUtilitiesPanel Debug Mode - ๅต้Œฏๆจกๅผ + ๅต้Œฏๆจกๅผ - Debug FrogPilot during the next drive by utilizing all of FrogPilot's developer metrics for either bug reporting, or self-debugging. - ๅœจไธ‹ไธ€ๆฌก้ง•้ง›ๆœŸ้–“๏ผŒๅˆฉ็”จๆ‰€ๆœ‰ FrogPilot ็š„้–‹็™ผ่€…ๆŒ‡ๆจ™ไพ†่ชฟ่ฉฆ FrogPilot๏ผŒไปฅ้€ฒ่กŒ้Œฏ่ชคๅ ฑๅ‘Šๆˆ–่‡ชๆˆ‘่ชฟ่ฉฆใ€‚ + <b>Use FrogPilot's developer metrics on your next drive</b> to diagnose issues and improve bug reports. + <b>ๅœจไธ‹ๆฌก่กŒ้ง›ๆ™‚ไฝฟ็”จ FrogPilot ็š„้–‹็™ผ่€…ๅบฆ้‡</b>๏ผŒไปฅ่จบๆ–ทๅ•้กŒไธฆๆ”น้€ฒ้Œฏ่ชคๅ ฑๅ‘Šใ€‚ Flash Panda - ้–ƒ้›ป็†Š่ฒ“ + ๅฟซ้–ƒ Panda FLASH - ้–ƒๅ…‰ + ้–ƒๅ…‰ - Flash the Panda's firmware. Use if you're running into issues with the Panda. - ๅˆทๆ–ฐ Panda ็š„้ŸŒ้ซ”ใ€‚ๅฆ‚ๆžœๆ‚จ้‡ๅˆฐ Panda ็š„ๅ•้กŒ๏ผŒ่ซ‹ไฝฟ็”จใ€‚ + <b>Reinstall the Panda firmware</b> to fix connection or reliability issues. + <b>้‡ๆ–ฐๅฎ‰่ฃ Panda ้ŸŒ้ซ”</b> ไปฅไฟฎๅพฉ้€ฃ็ทšๆˆ–ๅฏ้ ๆ€งๅ•้กŒใ€‚ - Are you sure you want to flash the Panda? - ๆ‚จ็ขบๅฎš่ฆๅˆทๆ–ฐPandaๅ—Ž๏ผŸ + Are you sure you want to flash the Panda firmware? + ๆ‚จ็ขบๅฎš่ฆๅˆทๅฏซ Panda ้ŸŒ้ซ”ๅ—Ž๏ผŸ Flash - ้–ƒๅ…‰ + ้–ƒๅ…‰ Flashing... - ้–ƒ็ˆไธญ... + ๆญฃๅœจๅˆทๅฏซโ€ฆ Flashed! - ้–ƒ็พ๏ผ + ๅทฒๅˆทๆ–ฐ๏ผ Rebooting... - ้‡ๆ–ฐๅ•Ÿๅ‹•ไธญ... + ๆญฃๅœจ้‡ๆ–ฐๅ•Ÿๅ‹•โ€ฆ - Force Started State - ๅผทๅˆถๅ•Ÿๅ‹•็‹€ๆ…‹ + Force Drive State + ๅผทๅˆถ่กŒ้ง›็‹€ๆ…‹ - Force openpilot either offroad or onroad. - ๅผทๅˆถ้–‹ๅ•Ÿopenpilot๏ผŒไธ่ซ–ๆ˜ฏๅœจ้“่ทฏไธŠ้‚„ๆ˜ฏ้ž้“่ทฏไธŠใ€‚ + <b>Manually set openpilot to be offroad or onroad.</b> + <b>ๆ‰‹ๅ‹•ๅฐ‡ openpilot ่จญ็‚บ้›ข็ทšๆˆ–ไธŠ่ทฏใ€‚</b> OFFROAD - ่ถŠ้‡Ž + ้›ข็ทš ONROAD - ONROAD + ่กŒ้ง›ไธญ OFF - ้—œ้–‰ + ้—œ้–‰ Report a Bug or an Issue - ๅ›žๅ ฑ้Œฏ่ชคๆˆ–ๅ•้กŒ + ๅ›žๅ ฑ้Œฏ่ชคๆˆ–ๅ•้กŒ REPORT - ๅ ฑๅ‘Š + ๅ ฑๅ‘Š - Let FrogsGoMoo know about an issue you're facing! - ่ฎ“ FrogsGoMoo ็Ÿฅ้“ๆ‚จ้‡ๅˆฐ็š„ๅ•้กŒ๏ผ + <b>Send a bug report</b> so we can help fix the problem! + <b>ๅ‚ณ้€้Œฏ่ชคๅ›žๅ ฑ</b>๏ผŒไปฅไพฟๆˆ‘ๅ€‘ๅ”ๅŠฉไฟฎๅพฉๅ•้กŒ๏ผ + + + Please connect to the internet before sending a report! + ๅœจๅ‚ณ้€ๅ ฑๅ‘Šๅ‰่ซ‹ๅ…ˆ้€ฃๆŽฅ็ถฒ้š›็ถฒ่ทฏ๏ผ I saw an alert that said "openpilot crashed" - ๆˆ‘็œ‹ๅˆฐไธ€ๅ€‹่ญฆๅ ฑ่ชชใ€Œopenpilot ๅดฉๆฝฐใ€ + ๆˆ‘็œ‹ๅˆฐไธ€ๅ€‹่ญฆ็คบ้กฏ็คบใ€Œopenpilot ็•ถๆฉŸใ€ - What's going on? - ๆ€Ž้บผๅ›žไบ‹๏ผŸ + Acceleration feels harsh or jerky + ๅŠ ้€Ÿๆ„Ÿ่ฆบ็”Ÿ็กฌๆˆ–้ “ๆŒซ - Please describe what's happening - ่ซ‹ๆ่ฟฐ็™ผ็”Ÿไบ†ไป€้บผไบ‹ - - - Send Report - ็™ผ้€ๅ ฑๅ‘Š - - - What's your Discord username? - ไฝ ็š„ Discord ็”จๆˆถๅๆ˜ฏไป€้บผ๏ผŸ - - - Your report has been submitted. Thanks for letting us know! - ๆ‚จ็š„ๅ ฑๅ‘Šๅทฒๆไบคใ€‚ๆ„Ÿ่ฌๆ‚จๅ‘Š็Ÿฅๆˆ‘ๅ€‘๏ผ - - - Reset Toggles to Default - ้‡่จญๅˆ‡ๆ›่‡ณ้ ่จญๅ€ผ - - - RESET - ้‡็ฝฎ - - - Reset all toggles to their default values. - ๅฐ‡ๆ‰€ๆœ‰ๅˆ‡ๆ›้–‹้—œ้‡็ฝฎ็‚บๅ…ถ้ ่จญๅ€ผใ€‚ - - - Are you sure you want to reset all toggles to their default values? - ๆ‚จ็ขบๅฎš่ฆๅฐ‡ๆ‰€ๆœ‰ๅˆ‡ๆ›้‡็ฝฎ็‚บๅ…ถ้ ่จญๅ€ผๅ—Ž๏ผŸ - - - Reset - ้‡่จญ - - - Resetting... - ้‡็ฝฎไธญ... - - - Reset! - ้‡็ฝฎ๏ผ - - - Reset Toggles to Match Stock openpilot - ้‡็ฝฎๅˆ‡ๆ›ไปฅๅŒน้…ๅŽŸๅป  openpilot - - - Reset all toggles to match stock openpilot. - ้‡็ฝฎๆ‰€ๆœ‰ๅˆ‡ๆ›้–‹้—œไปฅๅŒน้…ๅŽŸๅป  openpilotใ€‚ - - - Are you sure you want to reset all toggles to match stock openpilot? - ๆ‚จ็ขบๅฎš่ฆ้‡็ฝฎๆ‰€ๆœ‰ๅˆ‡ๆ›ไปฅๅŒน้…ๅŽŸๅป  openpilot ๅ—Ž๏ผŸ - - - Ensure your device has an internet connection before sending a report! - ๅœจ็™ผ้€ๅ ฑๅ‘Šไน‹ๅ‰๏ผŒ็ขบไฟๆ‚จ็š„่จญๅ‚™ๅทฒ้€ฃๆŽฅๅˆฐไบ’่ฏ็ถฒ๏ผ - - - Acceleration feels too harsh or jerky - ๅŠ ้€Ÿๆ„Ÿ่ฆบๅคช้Ž็Œ›็ƒˆๆˆ–ไธๅนณ้ † - - - An alert confused me and I didnโ€™t know what it meant - ไธ€ๅ€‹่ญฆๅ ฑ่ฎ“ๆˆ‘ๆ„Ÿๅˆฐๅ›ฐๆƒ‘๏ผŒๆˆ‘ไธ็Ÿฅ้“ๅฎƒ็š„ๆ„ๆ€ใ€‚ + An alert was unclear and I didn't know what it meant + ๆœ‰ๅ€‹่ญฆ็คบไธๆธ…ๆฅš๏ผŒๆˆ‘ไธ็Ÿฅ้“ๅฎƒ็š„ๆ„ๆ€ๆ˜ฏไป€้บผ Braking is too sudden or uncomfortable - ็…ž่ปŠ้Žๆ–ผ็ช็„ถๆˆ–ไธ่ˆ’ๆœ + ็…ž่ปŠ้Žๆ–ผ็ช็„ถๆˆ–ไปคไบบไธ้ฉ - Iโ€™m not sure if this is normal or a bug: - ๆˆ‘ไธ็ขบๅฎš้€™ๆ˜ฏๆญฃๅธธ็พ่ฑก้‚„ๆ˜ฏ้Œฏ่ชค๏ผš + I'm not sure if this is normal or a bug: + ๆˆ‘ไธ็ขบๅฎš้€™ๆ˜ฏๆญฃๅธธๆƒ…ๆณ้‚„ๆ˜ฏ้Œฏ่ชค๏ผš - Lane changes donโ€™t work properly or feel unsafe - ่ปŠ้“่ฎŠๆ›็„กๆณ•ๆญฃๅธธ้‹ไฝœๆˆ–ๆ„Ÿ่ฆบไธๅฎ‰ๅ…จ + My screen froze or is stuck loading something + ๆˆ‘็š„่žขๅน•็•ถๆฉŸๆˆ–ๅกๅœจ่ผ‰ๅ…ฅไธญ - My screen froze or got stuck on loading - ๆˆ‘็š„่žขๅน•ๅ‡็ตๆˆ–ๅกๅœจๅŠ ่ผ‰ไธญ - - - My steering wheel buttons arenโ€™t working - ๆˆ‘็š„ๆ–นๅ‘็›คๆŒ‰้ˆ•็„กๆณ•ไฝฟ็”จ + My steering wheel buttons aren't working + ๆˆ‘็š„ๆ–นๅ‘็›คๆŒ‰้ˆ•็„กๆณ•้‹ไฝœ openpilot disengages when I don't expect it - ็•ถๆˆ‘ๆฒ’ๆœ‰้ ๆœŸๆ™‚๏ผŒopenpilot ๆœƒ่งฃ้™คๆŽงๅˆถ - - - openpilot doesnโ€™t resume after I stop - openpilotๅœจๆˆ‘ๅœไธ‹ๅพŒไธๆœƒๆขๅพฉ้‹่กŒ + openpilot ๅœจๆˆ‘ๆœช้ ๆœŸๆ™‚่„ซ้›ขๆŽงๅˆถ openpilot doesn't react to stopped vehicles ahead - openpilot ๅฐๅ‰ๆ–นๅœ่ปŠๆฒ’ๆœ‰ๅๆ‡‰ + openpilot ไธๆœƒๅฐๅ‰ๆ–นๅœ่ปŠไฝœๅ‡บๅๆ‡‰ + + + openpilot doesn't resume from a stop + openpilot ็„กๆณ•ๅœจๅœ่ปŠๅพŒๆขๅพฉ่กŒ้ง› openpilot feels sluggish or slow to respond - openpilot ๆ„Ÿ่ฆบ้ฒ้ˆๆˆ–ๅๆ‡‰็ทฉๆ…ข + openpilot ๆ„Ÿ่ฆบ้ฒ้ˆๆˆ–ๅๆ‡‰็ทฉๆ…ข Steering feels twitchy or unnatural - ่ฝ‰ๅ‘ๆ„Ÿ่ฆบไธ็ฉฉๆˆ–ไธ่‡ช็„ถ + ่ฝ‰ๅ‘ๆ„Ÿ่ฆบ่ทณๅ‹•ๆˆ–ไธ่‡ช็„ถ - The car doesnโ€™t follow curves well - ้€™่ผ›่ปŠไธๅคช่ƒฝ้ †ๅˆฉ้ŽๅฝŽ + The car doesn't follow curves well + ่ปŠ่ผ›ๅœจ่ฝ‰ๅฝŽๆ™‚่ทŸ้šจไธไฝณ - The car isnโ€™t staying centered in its lane - ๆฑฝ่ปŠๆœช่ƒฝไฟๆŒๅœจ่ปŠ้“ไธญๅคฎ - - - The speed or display info looks wrong - ้€Ÿๅบฆๆˆ–้กฏ็คบ่ณ‡่จŠ็œ‹่ตทไพ†ไธๆญฃ็ขบ + The car isn't staying centered in its lane + ่ปŠ่ผ›ๆœช่ƒฝไฟๆŒๅœจ่ปŠ้“ไธญๅคฎ Something else (please describe) - ๅ…ถไป–๏ผˆ่ซ‹ๆ่ฟฐ๏ผ‰ + ๅ…ถไป–๏ผˆ่ซ‹ๆ่ฟฐ๏ผ‰ + + + What's going on? + ็™ผ็”Ÿไบ†ไป€้บผไบ‹๏ผŸ + + + Please describe what's happening + ่ซ‹ๆ่ฟฐๆญฃๅœจ็™ผ็”Ÿ็š„ๆƒ…ๆณ + + + Send Report + ๅ‚ณ้€ๅ ฑๅ‘Š + + + What's your Discord username? + ไฝ ็š„ Discord ไฝฟ็”จ่€…ๅ็จฑๆ˜ฏไป€้บผ๏ผŸ + + + Report Sent! Thanks for letting us know! + ๅทฒ้€ๅ‡บๅ ฑๅ‘Š๏ผๆ„Ÿ่ฌๅ‘Š็Ÿฅ๏ผ + + + Reset Toggles to Default + ๅฐ‡ๅˆ‡ๆ›้‡่จญ็‚บ้ ่จญๅ€ผ + + + RESET + ้‡่จญ + + + <b>Reset all toggles to their default values.</b> + <b>ๅฐ‡ๆ‰€ๆœ‰ๅˆ‡ๆ›้‡่จญ็‚บ้ ่จญๅ€ผใ€‚</b> + + + Are you sure you want to reset all toggles to their default values? + ๆ‚จ็ขบๅฎš่ฆๅฐ‡ๆ‰€ๆœ‰ๅˆ‡ๆ›้‡่จญ็‚บ้ ่จญๅ€ผๅ—Ž๏ผŸ + + + Reset + ้‡่จญ + + + Resetting... + ๆญฃๅœจ้‡่จญโ€ฆ + + + Reset! + ้‡่จญ๏ผ + + + Reset Toggles to Stock openpilot + ๅฐ‡ๅˆ‡ๆ›้‡่จญ็‚บๅŽŸๅป  openpilot + + + <b>Reset all toggles to match stock openpilot.</b> + <b>้‡่จญๆ‰€ๆœ‰ๅˆ‡ๆ›ไปฅ็ฌฆๅˆๅŽŸๅป  openpilotใ€‚</b> + + + Are you sure you want to reset all toggles to match stock openpilot? + ๆ‚จ็ขบๅฎš่ฆๅฐ‡ๆ‰€ๆœ‰ๅˆ‡ๆ›้‡่จญ็‚บ็ฌฆๅˆๅŽŸๅป  openpilot ๅ—Ž๏ผŸ FrogPilotVehiclesPanel - Select Make - ้ธๆ“‡่ฃฝ้€ ๅ•† + Car Make + ๆฑฝ่ปŠๅ“็‰Œ SELECT - SELECT + ้ธๅ– - Select a Make - ้ธๆ“‡่ฃฝ้€ ๅ•† + Choose your car make + ้ธๆ“‡ไฝ ็š„ๆฑฝ่ปŠๅ“็‰Œ - Select Model - ้ธๆ“‡ๆจกๅž‹ + Car Model + ่ปŠๆฌพ - Select a Model - ้ธๆ“‡ๆจกๅž‹ + Choose your car model + ้ธๆ“‡ไฝ ็š„่ปŠๅž‹ Disable Automatic Fingerprint Detection - ๅœ็”จ่‡ชๅ‹•ๆŒ‡็ด‹ๆชขๆธฌ + ๅœ็”จ่‡ชๅ‹•ๆŒ‡็ด‹ๅตๆธฌ - Forces the selected fingerprint and prevents it from ever changing. - ๅผทๅˆถ้ธๅฎš็š„ๆŒ‡็ด‹ไธฆ้˜ฒๆญขๅ…ถๆ›ดๆ”นใ€‚ + <b>Force the selected fingerprint</b> and prevent it from ever changing. + <b>ๅผทๅˆถไฝฟ็”จๆ‰€้ธๆŒ‡็ด‹</b>๏ผŒไธฆ้˜ฒๆญขๅ…ถ็™ผ็”Ÿไปปไฝ•่ฎŠๆ›ดใ€‚ Disable openpilot Longitudinal Control - ๅœ็”จopenpilot็ธฑๅ‘ๆŽงๅˆถ + ๅœ็”จ openpilot ็ธฑๅ‘ๆŽงๅˆถ - Disables openpilot longitudinal control and uses the car's stock ACC instead. - ็ฆ็”จ openpilot ็ธฑๅ‘ๆŽงๅˆถ๏ผŒๆ”น็”จ่ปŠ่ผ›็š„ๅŽŸๅป  ACCใ€‚ + <b>Disable openpilot longitudinal</b> and use the car's stock ACC instead. + <b>ๅœ็”จ openpilot ็ธฑๅ‘ๆŽงๅˆถ</b>๏ผŒๆ”น็”จ่ปŠ่ผ›ๅŽŸๅป ็š„ ACCใ€‚ Are you sure you want to completely disable openpilot longitudinal control? - ๆ‚จ็ขบๅฎš่ฆๅฎŒๅ…จๅœ็”จ openpilot ็ธฑๅ‘ๆŽงๅˆถๅ—Ž๏ผŸ + ๆ‚จ็ขบๅฎš่ฆๅฎŒๅ…จๅœ็”จ openpilot ็ธฑๅ‘ๆŽงๅˆถๅ—Ž๏ผŸ General Motors Settings - ้€š็”จๆฑฝ่ปŠ่จญๅฎš + ้€š็”จๆฑฝ่ปŠ่จญๅฎš - Settings specific to <b>General Motors</b> vehicles. - ้ฉ็”จๆ–ผ<b>General Motors</b>่ปŠ่ผ›็š„่จญๅฎšใ€‚ + <b>FrogPilot features for General Motors vehicles.</b> + <b>้ฉ็”จๆ–ผ้€š็”จๆฑฝ่ปŠ่ปŠ่ผ›็š„ FrogPilot ๅŠŸ่ƒฝใ€‚</b> FrogsGoMoo's Experimental Tune - FrogsGoMoo ็š„ๅฏฆ้ฉ—ๆ›ฒ่ชฟ + FrogsGoMoo ็š„ๅฏฆ้ฉ—่ชฟๆ ก - <b>FrogsGoMoo's</b> experimental <b>General Motors</b> tune that aims to smoothen out stopping and takeoff control based on nothing but guesswork. Use at your own risk! - <b>FrogsGoMoo ็š„</b>ๅฏฆ้ฉ—ๆ€ง<b>้€š็”จๆฑฝ่ปŠ</b>่ชฟๆ ก๏ผŒๆ—จๅœจๅƒ…ๅŸบๆ–ผ็Œœๆธฌไพ†ๅนณๆป‘ๅœๆญขๅ’Œ่ตท้ฃ›ๆŽงๅˆถใ€‚ไฝฟ็”จ้ขจ้šช่‡ช่ฒ ๏ผ + <b>Experimental GM tune by FrogsGoMoo</b> that attempts to smoothen stopping and takeoff control. Use at your own risk! + <b>FrogsGoMoo ็š„ๅฏฆ้ฉ—ๆ€ง GM ่ชฟๆ ก</b>๏ผŒๅ˜—่ฉฆไฝฟๅœ่ปŠ่ˆ‡่ตทๆญฅๆŽงๅˆถๆ›ด้ †ๆšขใ€‚้ขจ้šช่‡ช่ฒ ๏ผ Smooth Pedal Response on Hills - ๅนณ็ฉฉ็š„่ธๆฟๅๆ‡‰ๅœจๅก้“ไธŠ + ๅœจๅก้“ไธŠๅนณ้ †็š„่ธๆฟๅๆ‡‰ - Smoothen the acceleration and braking when driving uphill or downhill. - ๅœจไธŠๅกๆˆ–ไธ‹ๅก้ง•้ง›ๆ™‚ๅนณๆป‘ๅŠ ้€Ÿๅ’Œๅˆถๅ‹•ใ€‚ + <b>Smoothen acceleration and braking</b> when driving downhill/uphill. + <b>ๅœจไธ‹ๅก/ไธŠๅก่กŒ้ง›ๆ™‚ไฝฟๅŠ ้€Ÿ่ˆ‡็…ž่ปŠๆ›ดๅนณ้ †</b> - Stop and Go Hack - ๅœๆญข่ˆ‡ๅ•Ÿๅ‹•้งญๅฎข + Stop-and-Go Hack + ่ตฐ่ตฐๅœๅœ็ ด่งฃ - Force stop and go on the <b>2017 Chevy Volt</b>. - ๅผทๅˆถๅœๆญขไธฆ็นผ็บŒๅ‰้€ฒ <b>2017 Chevy Volt</b>ใ€‚ + <b>Force stop-and-go</b> on the 2017 Chevy Volt. + ๅœจ 2017 ๅนด Chevy Volt ไธŠ<b>ๅผทๅˆถๅ•Ÿ็”จ่ตฐ่ตฐๅœๅœ</b>ใ€‚ Hyundai/Kia/Genesis Settings - Hyundai/Kia/Genesis ่จญๅฎš + Hyundai/Kia/Genesis ่จญๅฎš - Settings specific to <b>Hyundai</b>, <b>Kia</b>, and <b>Genesis</b> vehicles. - ็‰นๅฎšๆ–ผ<b>็พไปฃ</b>ใ€<b>่ตทไบž</b>ๅ’Œ<b>ๆทๅฐผ่ณฝๆ€</b>่ปŠ่ผ›็š„่จญๅฎšใ€‚ + <b>FrogPilot features for Genesis, Hyundai, and Kia vehicles.</b> + <b>้ฉ็”จๆ–ผ Genesisใ€Hyundai ่ˆ‡ Kia ่ปŠ่ผ›็š„ FrogPilot ๅŠŸ่ƒฝใ€‚</b> comma's New Longitudinal API - comma ็š„ๆ–ฐ็ธฑๅ‘ API + comma ็š„ๆ–ฐ็ธฑๅ‘ API - comma's new longitudinal control system that has shown great improvement with acceleration and braking, but has issues on some <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> vehicles. - comma ็š„ๆ–ฐ็ธฑๅ‘ๆŽงๅˆถ็ณป็ตฑๅœจๅŠ ้€Ÿๅ’Œๅˆถๅ‹•ๆ–น้ข้กฏ็คบๅ‡บๅพˆๅคงๆ”น้€ฒ๏ผŒไฝ†ๅœจๆŸไบ› <b>Hyundai</b>/<b>Kia</b>/<b>Genesis</b> ่ปŠ่ผ›ไธŠๅญ˜ๅœจๅ•้กŒใ€‚ + <b>comma's new gas and brake control system</b> that improves acceleration and braking but may cause issues on some Genesis/Hyundai/Kia vehicles. + <b>comma ็š„ๅ…จๆ–ฐๆฒน้–€่ˆ‡็…ž่ปŠๆŽงๅˆถ็ณป็ตฑ</b>๏ผŒๅฏๆ”นๅ–„ๅŠ ้€Ÿ่ˆ‡ๅˆถๅ‹•๏ผŒไฝ†ๅฏ่ƒฝๅœจ้ƒจๅˆ† Genesis/Hyundai/Kia ่ปŠ่ผ›ไธŠ้€ ๆˆๅ•้กŒใ€‚ "Taco Bell Run" Torque Hack - "Taco Bell Run" ๆ‰ญ็Ÿฉ็ ด่งฃ + ใ€ŒTaco Bell Runใ€ๆ‰ญๅŠ›็ ด่งฃ - The torque hack from commaโ€™s 2022 "Taco Bell Run" drive. Designed to improve turning at low speeds by increasing the allowed steering torque. - ไพ†่‡ช comma 2022 ๅนดใ€ŒTaco Bell Runใ€้ง•้ง›็š„ๆ‰ญ็Ÿฉ็ ด่งฃใ€‚ๆ—จๅœจ้€š้ŽๅขžๅŠ ๅ…่จฑ็š„่ฝ‰ๅ‘ๆ‰ญ็Ÿฉไพ†ๆ”นๅ–„ไฝŽ้€Ÿ่ฝ‰ๅฝŽใ€‚ + <b>The steering torque hack from comma's 2022 "Taco Bell Run".</b> Designed to increase steering torque at low speeds for left and right turns. + <b>ไพ†่‡ช comma 2022 ๅนดใ€ŒTaco Bell Runใ€็š„่ฝ‰ๅ‘ๆ‰ญ็Ÿฉ็ ด่งฃใ€‚</b>ๆ—จๅœจๅœจไฝŽ้€Ÿๆ™‚ๅขžๅŠ ๅทฆๅณ่ฝ‰ๅ‘็š„ๆ‰ญ็Ÿฉใ€‚ Toyota/Lexus Settings - Toyota/Lexus ่จญๅฎš + Toyota/Lexus ่จญๅฎš - Settings specific to <b>Toyota</b> and <b>Lexus</b> vehicles. - ็‰นๅฎšๆ–ผ<b>Toyota</b>ๅ’Œ<b>Lexus</b>่ปŠ่ผ›็š„่จญๅฎšใ€‚ + <b>FrogPilot features for Lexus and Toyota vehicles.</b> + <b>้ฉ็”จๆ–ผ Lexus ๅ’Œ Toyota ่ปŠ่ผ›็š„ FrogPilot ๅŠŸ่ƒฝใ€‚</b> Automatically Lock/Unlock Doors - ่‡ชๅ‹•้Ž–ๅฎš/่งฃ้Ž–้–€ + ่‡ชๅ‹•้Ž–ๅฎš/่งฃ้Ž–่ปŠ้–€ - Automatically lock the doors when shifting into drive and unlock them when shifting into park. - ็•ถๆ›ๅ…ฅ้ง•้ง›ๆช”ๆ™‚่‡ชๅ‹•้Ž–้–€๏ผŒ็•ถๆ›ๅ…ฅๅœ่ปŠๆช”ๆ™‚่‡ชๅ‹•่งฃ้Ž–ใ€‚ + <b>Automatically lock/unlock doors</b> when shifting in and out of drive. + <b>ๅœจๅˆ‡ๆ›้€ฒๅ‡บ่กŒ้ง›ๆช”ๆ™‚่‡ชๅ‹•ไธŠ้Ž–/่งฃ้Ž–่ปŠ้–€</b> - Cluster Speed Offset - ๅข้›†้€Ÿๅบฆๅ็งป + Dashboard Speed Offset + ๅ„€่กจๆฟ้€Ÿๅบฆๅ็งป - The cluster speed offset used by openpilot to match the speed displayed on the dash. - openpilot ็”จๆ–ผๅŒน้…ๅ„€่กจๆฟไธŠ้กฏ็คบ้€Ÿๅบฆ็š„ๅข้›†้€Ÿๅบฆๅ็งปใ€‚ + <b>The speed offset openpilot uses to match the speed on the dashboard display.</b> + <b>openpilot ็”จๆ–ผๅŒน้…ๅ„€่กจๆฟ้กฏ็คบ้€Ÿๅบฆ็š„้€Ÿๅบฆๅ็งป้‡ใ€‚</b> FrogsGoMoo's Personal Tweaks - FrogsGoMoo ็š„ๅ€‹ไบบ่ชฟๆ•ด + FrogsGoMoo ็š„ๅ€‹ไบบ่ชฟๆ•ด - <b>FrogsGoMoo's</b> personal tweaks for quicker acceleration and smoother braking. - <b>FrogsGoMoo ็š„</b>ๅ€‹ไบบ่ชฟๆ•ด๏ผŒไปฅๅŠ ๅฟซๅŠ ้€Ÿๅ’Œๆ›ดๅนณ็ฉฉ็š„ๅˆถๅ‹•ใ€‚ + <b>Personal tweaks by FrogsGoMoo for quicker acceleration and smoother braking.</b> + <b>็”ฑ FrogsGoMoo ๆไพ›็š„ๅ€‹ไบบๅŒ–่ชฟๆ•ด๏ผŒไปฅๅŠ ๅฟซๅŠ ้€Ÿไธฆไฝฟๅ‰Ž่ปŠๆ›ดๅนณ้ †ใ€‚</b> Lock Doors On Ignition Off After - ้ปž็ซ้—œ้–‰ๅพŒ้Ž–้–€ + ้ปž็ซ้—œ้–‰ๅพŒ่‡ชๅ‹•้Ž–้–€ๆ™‚้–“ - Automatically lock the doors after the car's ignition has been turned off and no one is detected in either of the front seats. - ๅœจๆฑฝ่ปŠ้ปž็ซ็†„ๆป…ไธ”ๅ‰ๅบง็„กไบบๆ™‚๏ผŒ่‡ชๅ‹•้Ž–ไธŠ่ปŠ้–€ใ€‚ + <b>Automatically lock the doors on ignition off</b> when no one is detected in the front seats. + <b>ๅœจ้—œ้–‰้ปž็ซๆ™‚่‡ชๅ‹•้Ž–้–€</b>๏ผŒ็•ถๅ‰ๅบงๆœชๅตๆธฌๅˆฐไปปไฝ•ไบบๆ™‚ใ€‚ - Force stop and go on <b>Toyota</b>/<b>Lexus</b> vehicles without stock stop and go functionality. - ๅœจๆฒ’ๆœ‰ๅŽŸๅป ๅœ่ตฐๅŠŸ่ƒฝ็š„<b>Toyota</b>/<b>Lexus</b>่ปŠ่ผ›ไธŠๅผทๅˆถๅœ่ตฐใ€‚ + <b>Force stop-and-go</b> on Lexus/Toyota vehicles without stock stop-and-go functionality. + <b>ๅœจ็„กๅŽŸๅป ่ตฐ่ตฐๅœๅœๅŠŸ่ƒฝ็š„ Lexus/Toyota ่ปŠ่ผ›ไธŠๅผทๅˆถๅ•Ÿ็”จ่ตฐ่ตฐๅœๅœ</b> MANAGE - ็ฎก็† + ็ฎก็† Lock - ้Ž–ๅฎš + ้Ž–ๅฎš Unlock - ่งฃ้Ž– + ่งฃ้Ž– Never - ๅพžไธ + ็ต•ไธ seconds - ็ง’ + ็ง’ + + + None + ็„ก + + + Vehicle Info + ่ปŠ่ผ›่ณ‡่จŠ + + + <b>Information about your vehicle in regards to openpilot support and functionality.</b> + <b>้—œๆ–ผๆ‚จ็š„่ปŠ่ผ›ๅœจ openpilot ๆ”ฏๆด่ˆ‡ๅŠŸ่ƒฝๆ–น้ข็š„่ณ‡่จŠใ€‚</b> + + + <b>Detected 3rd party hardware.</b> + <b>ๅตๆธฌๅˆฐ็ฌฌไธ‰ๆ–น็กฌ้ซ”ใ€‚</b> + + + openpilot Longitudinal Support + openpilot ็ธฑๅ‘ๆ”ฏๆด + + + <b>Can openpilot control the vehicle's acceleration and braking?</b> + <b>openpilot ่ƒฝๆŽงๅˆถ่ปŠ่ผ›็š„ๅŠ ้€Ÿ่ˆ‡็…ž่ปŠๅ—Ž๏ผŸ</b> + + + <b>Does your vehicle support the "comma pedal"?</b> + <b>ๆ‚จ็š„่ปŠ่ผ›ๆ˜ฏๅฆๆ”ฏๆดใ€Œcomma pedalใ€๏ผŸ</b> + + + Radar Support + ้›ท้”ๆ”ฏๆด + + + <b>Does openpilot use the vehicle's radar data</b> alongside the device's camera for tracking lead vehicles? + <b>openpilot ๆ˜ฏๅฆ่ˆ‡่ฃ็ฝฎ็š„็›ธๆฉŸไธ€่ตทไฝฟ็”จ่ปŠ่ผ›็š„้›ท้”ๆ•ธๆ“š</b>ไพ†่ฟฝ่นคๅ‰่ปŠ๏ผŸ + + + SDSU Support + SDSU ๆ”ฏๆด + + + <b>Does your vehicle support "SDSUs"?</b> + <b>ๆ‚จ็š„่ปŠ่ผ›ๆ˜ฏๅฆๆ”ฏๆดใ€ŒSDSUsใ€๏ผŸ</b> + + + Stop-and-Go Support + ่ตฐ่ตฐๅœๅœๆ”ฏๆด + + + <b>Does your vehicle support stop-and-go driving?</b> + <b>ๆ‚จ็š„่ปŠ่ผ›ๆ˜ฏๅฆๆ”ฏๆด่ตฐ่ตฐๅœๅœ็š„้ง•้ง›๏ผŸ</b> + + + VIEW + ๆชข่ฆ– + + + Yes + ๆ˜ฏ + + + No + ๅฆ + + + 3rd Party Hardware Detected + ๅตๆธฌๅˆฐ็ฌฌไธ‰ๆ–น็กฌ้ซ” + + + Blind Spot Support + ็›ฒ้ปž่ผ”ๅŠฉๆ”ฏๆด + + + <b>Does openpilot use the vehicle's blind spot data?</b> + <b>openpilot ๆœƒไฝฟ็”จ่ปŠ่ผ›็š„็›ฒ้ปž่ณ‡ๆ–™ๅ—Ž๏ผŸ</b> + + + comma Pedal Support + comma Pedal ๆ”ฏๆด FrogPilotVisualsPanel Advanced UI Controls - ้€ฒ้šŽ UI ๆŽงๅˆถ้ … + ้€ฒ้šŽไฝฟ็”จ่€…ไป‹้ขๆŽงๅˆถ้ … - Advanced settings for fine-tuning openpilot's driving screen. - ้€ฒ้šŽ่จญๅฎšไปฅๅพฎ่ชฟ openpilot ็š„้ง•้ง›่žขๅน•ใ€‚ + <b>Advanced visual changes</b> to fine-tune how the driving screen looks. + <b>้€ฒ้šŽ่ฆ–่ฆบ่ฎŠๆ›ด</b>๏ผŒ็”จๆ–ผๅพฎ่ชฟ้ง•้ง›็•ซ้ข็š„ๅค–่ง€ใ€‚ Hide Current Speed - ้šฑ่—็•ถๅ‰้€Ÿๅบฆ + ้šฑ่—็›ฎๅ‰้€Ÿๅบฆ - Hide the current speed from the driving screen. - ๅพž้ง•้ง›่žขๅน•้šฑ่—็•ถๅ‰้€Ÿๅบฆใ€‚ + <b>Hide the current speed</b> from the driving screen. + <b>้šฑ่—็•ถๅ‰้€Ÿๅบฆ</b>ๆ–ผ้ง•้ง›็•ซ้ขไธŠใ€‚ Hide Lead Marker - ้šฑ่—ๆฝ›ๅœจๅฎขๆˆถๆจ™่จ˜ + ้šฑ่—ๅ‰่ปŠๆจ™่จ˜ - Hide the marker for lead vehicles from the driving screen. - ๅพž้ง•้ง›่žขๅน•้šฑ่—้ ˜่ˆช่ปŠ่ผ›็š„ๆจ™่จ˜ใ€‚ + <b>Hide the lead-vehicle marker</b> from the driving screen. + ๅพž้ง•้ง›็•ซ้ข<b>้šฑ่—ๅ‰่ปŠๆจ™่จ˜</b>ใ€‚ Hide Map Settings Button - ้šฑ่—ๅœฐๅœ–่จญๅฎšๆŒ‰้ˆ• + ้šฑ่—ๅœฐๅœ–่จญๅฎšๆŒ‰้ˆ• - Hide the map settings button from the driving screen. - ๅพž้ง•้ง›็•ซ้ขไธญ้šฑ่—ๅœฐๅœ–่จญๅฎšๆŒ‰้ˆ•ใ€‚ + <b>Hide the map settings button or map</b> from the driving screen. + <b>ๅพž้ง•้ง›็•ซ้ข้šฑ่—ๅœฐๅœ–่จญๅฎšๆŒ‰้ˆ•ๆˆ–ๅœฐๅœ–</b> Hide Max Speed - ้šฑ่—ๆœ€ๅคง้€Ÿๅบฆ + ้šฑ่—ๆœ€้ซ˜้€Ÿๅบฆ - Hide the max speed from the driving screen. - ๅพž้ง•้ง›่žขๅน•้šฑ่—ๆœ€้ซ˜้€Ÿๅบฆใ€‚ + <b>Hide the max speed</b> from the driving screen. + <b>ๅœจ้ง•้ง›็•ซ้ขไธญ้šฑ่—ๆœ€้ซ˜่ปŠ้€Ÿ</b> Hide Non-Critical Alerts - ้šฑ่—้ž้—œ้ต่ญฆๅ ฑ + ้šฑ่—้ž้—œ้ต่ญฆๅ ฑ - Hide non-critical alerts from the driving screen. - ้šฑ่—้ง•้ง›่žขๅน•ไธŠ็š„้ž้—œ้ต่ญฆๅ ฑใ€‚ + <b>Hide non-critical alerts</b> from the driving screen. + <b>้šฑ่—้ž้—œ้ต่ญฆๅ ฑ</b>ๆ–ผ้ง•้ง›็•ซ้ขใ€‚ Hide Speed Limits - ้šฑ่—้€Ÿๅบฆ้™ๅˆถ + ้šฑ่—้€Ÿ้™ - Hide the speed limits from the driving screen. - ๅพž้ง•้ง›่žขๅน•้šฑ่—้€Ÿๅบฆ้™ๅˆถใ€‚ + <b>Hide posted speed limits</b> from the driving screen. + <b>ๅœจ้ง•้ง›็•ซ้ข้šฑ่—ๅผต่ฒผ็š„้€Ÿ้™</b> Use Wheel Speed - ไฝฟ็”จ่ปŠ่ผช้€Ÿๅบฆ + ไฝฟ็”จ่ปŠ่ผช้€Ÿๅบฆ - Use the vehicle's wheel speed instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives. - ไฝฟ็”จ่ปŠ่ผ›็š„่ปŠ่ผช้€Ÿๅบฆไปฃๆ›ฟๅ„€่กจๆฟ้€Ÿๅบฆใ€‚้€™็ด”็ฒนๆ˜ฏ่ฆ–่ฆบไธŠ็š„่ฎŠๅŒ–๏ผŒไธๆœƒๅฝฑ้Ÿฟopenpilot็š„้ง•้ง›ๆ–นๅผใ€‚ + <b>Use the vehicle's wheel speed</b> instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives! + <b>ไฝฟ็”จ่ปŠ่ผ›็š„่ปŠ่ผช้€Ÿๅบฆ</b>ๅ–ไปฃๅ„€่กจ้€Ÿๅบฆใ€‚้€™ๅƒ…ๆ˜ฏ่ฆ–่ฆบ่ฎŠๆ›ด๏ผŒไธๆœƒๅฝฑ้Ÿฟ openpilot ็š„้ง•้ง›ๆ–นๅผ๏ผ Developer UI - ้–‹็™ผ่€… UI + ้–‹็™ผ่€…ไป‹้ข - Detailed information about openpilot's internal operations. - ๆœ‰้—œ openpilot ๅ…ง้ƒจ้‹ไฝœ็š„่ฉณ็ดฐ่ณ‡่จŠใ€‚ + <b>Detailed information about openpilot's internal operations.</b> + <b>้—œๆ–ผ openpilot ๅ…ง้ƒจ้‹ไฝœ็š„่ฉณ็ดฐ่ณ‡่จŠใ€‚</b> Adjacent Path Metrics - ็›ธ้„ฐ่ทฏๅพ‘ๆŒ‡ๆจ™ + ็›ธ้„ฐ่ทฏๅพ‘้‡ๆธฌๆ•ธๆ“š - Metrics displayed on top of the adjacent lanes measuring their current width. - ้กฏ็คบๅœจ็›ธ้„ฐ่ปŠ้“ไธŠๆ–น็š„ๅบฆ้‡๏ผŒๆธฌ้‡ๅ…ถ็•ถๅ‰ๅฏฌๅบฆใ€‚ + <b>Show the width of the adjacent lanes.</b> + <b>้กฏ็คบ็›ธ้„ฐ่ปŠ้“็š„ๅฏฌๅบฆใ€‚</b> Developer Metrics - ้–‹็™ผ่€…ๆŒ‡ๆจ™ + ้–‹็™ผ่€…ๆŒ‡ๆจ™ - Performance data, sensor readings, and system metrics for debugging and optimizing openpilot. - ๆ€ง่ƒฝๆ•ธๆ“šใ€ๅ‚ณๆ„Ÿๅ™จ่ฎ€ๆ•ธๅ’Œ็ณป็ตฑๆŒ‡ๆจ™๏ผŒ็”จๆ–ผ่ชฟ่ฉฆๅ’Œๅ„ชๅŒ–openpilotใ€‚ + <b>Performance data, sensor readings, and system metrics</b> for debugging and optimizing openpilot. + ็”จๆ–ผๅต้Œฏ่ˆ‡ๅ„ชๅŒ– openpilot ็š„<b>ๆ•ˆ่ƒฝ่ณ‡ๆ–™ใ€ๆ„Ÿๆธฌๅ™จ่ฎ€ๅ–ๅ€ผ่ˆ‡็ณป็ตฑ้‡ๆธฌ</b> Border Metrics - ้‚Š็•ŒๆŒ‡ๆจ™ + ้‚Š็•Œๅบฆ้‡ - Metrics displayed around the border of the driving screen.<br><br><b>Blind Spot</b>: Turn the border red when a vehicle is detected in a blind spot<br><b>Steering Torque</b>: Highlight the border green to red in accordance to the amount of steering torque being used<br><b>Turn Signal</b>: Flash the border yellow when a turn signal is active - ๅœจ้ง•้ง›่žขๅน•้‚Šๆก†้กฏ็คบ็š„ๆŒ‡ๆจ™ใ€‚<br><br><b>็›ฒ้ปž</b>๏ผš็•ถๅœจ็›ฒ้ปžๅตๆธฌๅˆฐ่ปŠ่ผ›ๆ™‚๏ผŒๅฐ‡้‚Šๆก†่ฎŠ็‚บ็ด…่‰ฒ<br><b>่ฝ‰ๅ‘ๆ‰ญ็Ÿฉ</b>๏ผšๆ นๆ“šไฝฟ็”จ็š„่ฝ‰ๅ‘ๆ‰ญ็Ÿฉ้‡๏ผŒๅฐ‡้‚Šๆก†ๅพž็ถ ่‰ฒๅˆฐ็ด…่‰ฒ็ชๅ‡บ้กฏ็คบ<br><b>่ฝ‰ๅ‘็‡ˆ</b>๏ผš็•ถ่ฝ‰ๅ‘็‡ˆๅ•Ÿๅ‹•ๆ™‚๏ผŒ้–ƒ็ˆ้‚Šๆก†็‚บ้ปƒ่‰ฒ + <b>Show statuses along the border of the driving screen.</b><br><br><b>Blind Spot</b>: The border turns red when a vehicle is in a blind spot<br><b>Steering Torque</b>: The border goes from green to red according to how much steering torque is being used<br><b>Turn Signal</b>: The border flashes yellow when a turn signal is on + <b>ๅœจ้ง•้ง›็•ซ้ข็š„้‚Šๆก†้กฏ็คบ็‹€ๆ…‹ใ€‚</b><br><br><b>่ฆ–่ฆบๆญป่ง’</b>๏ผš็•ถๆœ‰่ปŠ่ผ›ไฝๆ–ผๆญป่ง’ๆ™‚๏ผŒ้‚Šๆก†ๆœƒ่ฎŠๆˆ็ด…่‰ฒ<br><b>่ฝ‰ๅ‘ๆ‰ญๅŠ›</b>๏ผš้‚Šๆก†ๆœƒไพไฝฟ็”จ็š„่ฝ‰ๅ‘ๆ‰ญๅŠ›้‡ๅพž็ถ ่‰ฒ่ฎŠ็‚บ็ด…่‰ฒ<br><b>ๆ–นๅ‘็‡ˆ</b>๏ผš็•ถๆ–นๅ‘็‡ˆ้–‹ๅ•Ÿๆ™‚๏ผŒ้‚Šๆก†ๆœƒ้–ƒ็ˆ้ปƒ่‰ฒ Lead Info - ๆฝ›ๅœจๅฎขๆˆถ่ณ‡่จŠ + ๅ‰่ปŠ่ณ‡่จŠ - Metrics displayed under vehicle markers listing their distance and current speed. - ้กฏ็คบๅœจ่ปŠ่ผ›ๆจ™่จ˜ไธ‹ๆ–น็š„ๆŒ‡ๆจ™ๅˆ—ๅ‡บๅ…ถ่ท้›ขๅ’Œ็•ถๅ‰้€Ÿๅบฆใ€‚ + <b>Show each tracked vehicle's distance and speed</b> below its marker. + <b>ๅœจๅ„ๆจ™่จ˜ไธ‹ๆ–น้กฏ็คบๆฏๅ€‹่ขซ่ฟฝ่นค่ปŠ่ผ›็š„่ท้›ข่ˆ‡้€Ÿๅบฆ</b> FPS Display - FPS ้กฏ็คบ + FPS ้กฏ็คบ - Display the <b>Frames Per Second (FPS)</b> at the bottom of the driving screen. - ๅœจ้ง•้ง›็•ซ้ข็š„ๅบ•้ƒจ้กฏ็คบ<b>ๆฏ็ง’ๅน€ๆ•ธ (FPS)</b>ใ€‚ + <b>Show the frames per second (FPS)</b> at the bottom of the driving screen. + ๅœจ้ง•้ง›็•ซ้ขๅบ•้ƒจ<b>้กฏ็คบๆฏ็ง’ๅฝฑๆ ผๆ•ธ๏ผˆFPS๏ผ‰</b>ใ€‚ Numerical Temperature Gauge - ๆ•ธๅญ—ๆบซๅบฆ่จˆ + ๆ•ธๅ€ผๆบซๅบฆ่จˆ - Use numerical temperature readings instead of status labels in the sidebar. - ๅœจๅด้‚Šๆฌ„ไธญไฝฟ็”จๆ•ธๅญ—ๆบซๅบฆ่ฎ€ๆ•ธไปฃๆ›ฟ็‹€ๆ…‹ๆจ™็ฑคใ€‚ - - - Display system information (<b>CPU</b>, <b>GPU</b>, <b>RAM usage</b>, <b>IP address</b>, <b>device storage</b>) in the sidebar. - ๅœจๅด้‚Šๆฌ„้กฏ็คบ็ณป็ตฑ่ณ‡่จŠ๏ผˆ<b>CPU</b>ใ€<b>GPU</b>ใ€<b>RAM ไฝฟ็”จ้‡</b>ใ€<b>IP ไฝๅ€</b>ใ€<b>่ฃ็ฝฎๅ„ฒๅญ˜็ฉบ้–“</b>๏ผ‰ใ€‚ - - - Use International System of Units - ไฝฟ็”จๅœ‹้š›ๅ–ฎไฝๅˆถ - - - Display measurements using the <b>International System of Units (SI)</b> standard. - ไฝฟ็”จ<b>ๅœ‹้š›ๅ–ฎไฝๅˆถ (SI)</b>ๆจ™ๆบ–้กฏ็คบๆธฌ้‡ๅ€ผใ€‚ - - - Developer Sidebar - ้–‹็™ผ่€…ๅด้‚Šๆฌ„ - - - Display debugging info and metrics in a dedicated sidebar on the right side of the screen. - ๅœจ่žขๅน•ๅณๅด็š„ๅฐˆ็”จๅด้‚Šๆฌ„ไธญ้กฏ็คบ่ชฟ่ฉฆ่ณ‡่จŠๅ’ŒๆŒ‡ๆจ™ใ€‚ - - - Metric #1 - ๆŒ‡ๆจ™ #1 - - - Metric to display in the first metric in the "Developer Sidebar". - ๅœจใ€Œ้–‹็™ผ่€…ๅด้‚Šๆฌ„ใ€ไธญ็š„็ฌฌไธ€ๅ€‹ๆŒ‡ๆจ™ไธญ้กฏ็คบ็š„ๆŒ‡ๆจ™ใ€‚ - - - Metric #2 - ๆŒ‡ๆจ™ #2 - - - Metric to display in the second metric in the "Developer Sidebar". - ๅœจใ€Œ้–‹็™ผ่€…ๅด้‚Šๆฌ„ใ€ไธญ็š„็ฌฌไบŒๅ€‹ๆŒ‡ๆจ™ไธญ้กฏ็คบ็š„ๆŒ‡ๆจ™ใ€‚ - - - Metric #3 - ๆŒ‡ๆจ™ #3 - - - Metric to display in the third metric in the "Developer Sidebar". - ๅœจใ€Œ้–‹็™ผ่€…ๅด้‚Šๆฌ„ใ€ไธญ็š„็ฌฌไธ‰ๅ€‹ๆŒ‡ๆจ™ไธญ้กฏ็คบ็š„ๆŒ‡ๆจ™ใ€‚ - - - Metric #4 - ๆŒ‡ๆจ™ #4 - - - Metric to display in the fourth metric in the "Developer Sidebar". - ๅœจใ€Œ้–‹็™ผ่€…ๅด้‚Šๆฌ„ใ€ไธญ็š„็ฌฌๅ››ๅ€‹ๆŒ‡ๆจ™ไธญ้กฏ็คบ็š„ๆŒ‡ๆจ™ใ€‚ - - - Metric #5 - ๆŒ‡ๆจ™ #5 - - - Metric to display in the fifth metric in the "Developer Sidebar". - ๅœจใ€Œ้–‹็™ผ่€…ๅด้‚Šๆฌ„ใ€ไธญ็š„็ฌฌไบ”ๅ€‹ๆŒ‡ๆจ™ไธญ้กฏ็คบ็š„ๆŒ‡ๆจ™ใ€‚ - - - Metric #6 - ๆŒ‡ๆจ™ #6 - - - Metric to display in the sixth metric in the "Developer Sidebar". - ๅœจใ€Œ้–‹็™ผ่€…ๅด้‚Šๆฌ„ใ€ไธญ้กฏ็คบ็š„็ฌฌๅ…ญๅ€‹ๆŒ‡ๆจ™ใ€‚ - - - Metric #7 - ๆŒ‡ๆจ™ #7 - - - Metric to display in the seventh metric in the "Developer Sidebar". - ๅœจใ€Œ้–‹็™ผ่€…ๅด้‚Šๆฌ„ใ€ไธญ้กฏ็คบ็š„็ฌฌไธƒๅ€‹ๆŒ‡ๆจ™ใ€‚ - - - Developer Widgets - ้–‹็™ผ่€…ๅฐๅทฅๅ…ท - - - Overlays displaying debugging visuals, internal states, and model predictions on the driving screen. - ๅœจ้ง•้ง›่žขๅน•ไธŠ้กฏ็คบ็–ŠๅŠ ็š„้™ค้Œฏ่ฆ–่ฆบๆ•ˆๆžœใ€ๅ…ง้ƒจ็‹€ๆ…‹ๅ’Œๆจกๅž‹้ ๆธฌใ€‚ - - - Adjacent Leads Tracking - ็›ธ้„ฐๆฝ›ๅœจๅฎขๆˆถ่ฟฝ่นค - - - Adjacent leads detected by the car's radar to the left and right of the current driving path. - ๆฑฝ่ปŠ้›ท้”ๅœจ็•ถๅ‰่กŒ้ง›่ทฏๅพ‘็š„ๅทฆๅดๅ’Œๅณๅดๆชขๆธฌๅˆฐ็›ธ้„ฐ็š„่ปŠ่ผ›ใ€‚ - - - Model Stopping Point - ๆจกๅž‹ๅœๆญข้ปž - - - Display an image on the screen where openpilot is wanting to stop. - ๅœจ openpilot ๆƒณ่ฆๅœๆญข็š„ๅœฐๆ–น้กฏ็คบๅœ–ๅƒใ€‚ - - - Radar Tracks - ้›ท้”่ปŒ่ทก - - - Display all of the radar points produced by the car's radar. - ้กฏ็คบๆฑฝ่ปŠ้›ท้”็”ข็”Ÿ็š„ๆ‰€ๆœ‰้›ท้”้ปžใ€‚ - - - Driving Screen Widgets - ้ง•้ง›่žขๅน•ๅฐๅทฅๅ…ท - - - Custom FrogPilot widgets for the driving screen. - ่‡ช่จ‚ FrogPilot ๅฐๅทฅๅ…ท็”จๆ–ผ้ง•้ง›่žขๅน•ใ€‚ - - - Acceleration Path - ๅŠ ้€Ÿ่ทฏๅพ‘ - - - Colorize the driving path based on openpilot's current desired acceleration and deceleration rate. - ๆ นๆ“šopenpilot็•ถๅ‰็š„ๆœŸๆœ›ๅŠ ้€Ÿๅ’Œๆธ›้€Ÿ็އ็‚บ้ง•้ง›่ทฏๅพ‘่‘—่‰ฒใ€‚ - - - Adjacent Lanes - ็›ธ้„ฐ่ปŠ้“ - - - Driving paths for the left and right adjacent lanes. - ๅทฆๅดๅ’Œๅณๅด็›ธ้„ฐ่ปŠ้“็š„่กŒ้ง›่ทฏๅพ‘ใ€‚ - - - Blind Spot Path - ็›ฒ้ปž่ทฏๅพ‘ - - - Display a red driving path for detected vehicles in the corresponding lane's blind spot. - ๅœจ็›ธๆ‡‰่ปŠ้“็š„็›ฒ้ปžไธญ็‚บๆชขๆธฌๅˆฐ็š„่ปŠ่ผ›้กฏ็คบ็ด…่‰ฒ่กŒ้ง›่ทฏๅพ‘ใ€‚ - - - Compass - ๆŒ‡ๅ—้‡ - - - A compass to show the current driving direction. - ๆŒ‡ๅ—้‡้กฏ็คบ็•ถๅ‰่กŒ้ง›ๆ–นๅ‘ใ€‚ - - - Driving Personality Button - ้ง•้ง›ๅ€‹ๆ€งๆŒ‰้ˆ• - - - Display the current driving personality on the screen. Tap to switch personalities, or long press for 0.5 seconds to change the current state of <b>Experimental Mode</b>, or 2.5 seconds for <b>Traffic Mode</b>. - ๅœจ่žขๅน•ไธŠ้กฏ็คบ็•ถๅ‰็š„้ง•้ง›ๅ€‹ๆ€งใ€‚้ปžๆ“Šไปฅๅˆ‡ๆ›ๅ€‹ๆ€ง๏ผŒๆˆ–้•ทๆŒ‰0.5็ง’ไปฅๆ›ดๆ”น<b>ๅฏฆ้ฉ—ๆจกๅผ</b>็š„็•ถๅ‰็‹€ๆ…‹๏ผŒๆˆ–้•ทๆŒ‰2.5็ง’ไปฅๆ›ดๆ”น<b>ไบค้€šๆจกๅผ</b>ใ€‚ - - - Gas / Brake Pedal Indicators - ๆฒน้–€/ๅ‰Ž่ปŠ่ธๆฟๆŒ‡็คบๅ™จ - - - Pedals to indicate when either of the pedals are currently being used.<br><br><b>Dynamic</b>: The pedals change in opacity in accordance to how much openpilot is accelerating or decelerating<br><b>Static</b>: The pedals are displayed with full opacity when active, and dimmed when not in use - Translation B - - - Rotating Steering Wheel - ๆ—‹่ฝ‰ๆ–นๅ‘็›ค - - - Rotate the steering wheel alongside the vehicle's physical steering wheel. - ้šจ่‘—่ปŠ่ผ›็š„ๅฏฆ้ซ”ๆ–นๅ‘็›คไธ€่ตท่ฝ‰ๅ‹•ๆ–นๅ‘็›คใ€‚ - - - Model UI - ๆจกๅž‹ UI - - - Model visualizations on the driving screen for the driving path, lane lines, path edges, and road edges. - ๅœจ้ง•้ง›ๅฑๅน•ไธŠ้กฏ็คบ้ง•้ง›่ทฏๅพ‘ใ€่ปŠ้“็ทšใ€่ทฏๅพ‘้‚Š็ทฃๅ’Œ้“่ทฏ้‚Š็ทฃ็š„ๆจกๅž‹ๅฏ่ฆ–ๅŒ–ใ€‚ - - - Dynamic Path Width - ๅ‹•ๆ…‹่ทฏๅพ‘ๅฏฌๅบฆ - - - Adjust the width of the driving path based on the current engagement state.<br><br><b>Fully engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Fully disengaged</b>: 50% - ๆ นๆ“š็•ถๅ‰็š„ๅƒ่ˆ‡็‹€ๆ…‹่ชฟๆ•ด้ง•้ง›่ทฏๅพ‘็š„ๅฏฌๅบฆใ€‚<br><br><b>ๅฎŒๅ…จๅƒ่ˆ‡</b>: 100%<br><b>ๅง‹็ต‚้–‹ๅ•Ÿๆฉซๅ‘</b>: 75%<br><b>ๅฎŒๅ…จไธๅƒ่ˆ‡</b>: 50% - - - Lane Lines Width - ่ปŠ้“็ทšๅฏฌๅบฆ - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 4 inches. - ่ปŠ้“็ทšๅœจ้ง•้ง›่žขๅน•ไธŠ็š„ๅŽšๅบฆใ€‚<br><br><b>้ ่จญ็ฌฆๅˆ<b>MUTCD</b>่ปŠ้“็ทšๅฏฌๅบฆๆจ™ๆบ–4่‹ฑๅ‹ใ€‚ - - - Path Edges Width - ่ทฏๅพ‘้‚Š็ทฃๅฏฌๅบฆ - - - The width of the edges of the driving path that represent different driving modes and statuses.<br><br>Default is <b>20%</b> of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden - ้ง•้ง›่ทฏๅพ‘้‚Š็ทฃ็š„ๅฏฌๅบฆไปฃ่กจไธๅŒ็š„้ง•้ง›ๆจกๅผๅ’Œ็‹€ๆ…‹ใ€‚<br><br>้ป˜่ช็‚บ็ธฝ่ทฏๅพ‘ๅฏฌๅบฆ็š„<b>20%</b>ใ€‚<br><br>้ก่‰ฒๆŒ‡ๅ—๏ผš<br><br>- <b>่—่‰ฒ</b>๏ผšๅฐŽ่ˆช<br>- <b>ๆทบ่—่‰ฒ</b>๏ผšๅง‹็ต‚้–‹ๅ•Ÿๆฉซๅ‘<br>- <b>็ถ ่‰ฒ</b>๏ผš้ป˜่ช<br>- <b>ๆฉ™่‰ฒ</b>๏ผšๅฏฆ้ฉ—ๆจกๅผ<br>- <b>็ด…่‰ฒ</b>๏ผšไบค้€šๆจกๅผ<br>- <b>้ปƒ่‰ฒ</b>๏ผšๆขไปถๅฏฆ้ฉ—ๆจกๅผ่ขซ่ฆ†่“‹ - - - Path Width - ่ทฏๅพ‘ๅฏฌๅบฆ - - - Road Edges Width - ้“่ทฏ้‚Š็ทฃๅฏฌๅบฆ - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 4 inches. - ้ง•้ง›่žขๅน•ไธŠ้“่ทฏ้‚Š็ทฃ็š„ๅŽšๅบฆใ€‚<br><br><b>้ ่จญ็ฌฆๅˆ<b>MUTCD</b>่ปŠ้“็ทšๅฏฌๆจ™ๆบ–็š„ไธ€ๅŠ๏ผŒๅณ4่‹ฑๅ‹ใ€‚ - - - "Unlimited" Road UI - ใ€Œ็„ก้™ใ€้“่ทฏ UI - - - Extend the display of the driving path, lane lines, and road edges as far as the model can see. - ๅฐ‡้ง•้ง›่ทฏๅพ‘ใ€่ปŠ้“็ทšๅ’Œ้“่ทฏ้‚Š็ทฃ็š„้กฏ็คบๆ“ดๅฑ•ๅˆฐๆจกๅž‹ๅฏ่ฆ‹็š„็ฏ„ๅœใ€‚ - - - Navigation Widgets - ๅฐŽ่ˆชๅฐๅทฅๅ…ท - - - Map style tweaks, speed limits, and other navigation related widgets. - ๅœฐๅœ–ๆจฃๅผ่ชฟๆ•ดใ€้€Ÿๅบฆ้™ๅˆถๅ’Œๅ…ถไป–ๅฐŽ่ˆช็›ธ้—œๅฐๅทฅๅ…ทใ€‚ - - - Larger Map Display - ่ผƒๅคงๅœฐๅœ–้กฏ็คบ - - - Increase the size of the map for easier navigation readings. - ๅขžๅŠ ๅœฐๅœ–็š„ๅคงๅฐไปฅไพฟๆ–ผๅฐŽ่ˆช้–ฑ่ฎ€ใ€‚ - - - Map Style - ๅœฐๅœ–ๆจฃๅผ - - - The map style used for <b>Navigate on openpilot (NOO)</b>:<br><br><b>Stock</b>: Default comma.ai style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>mike854's (Satellite hybrid)</b>: Customized hybrid satellite view - ็”จๆ–ผ<b>้–‹ๆ”พ้ง•้ง›ๅฐŽ่ˆช (NOO)</b>็š„ๅœฐๅœ–ๆจฃๅผ๏ผš<br><br><b>Stock</b>๏ผš้ ่จญ็š„comma.aiๆจฃๅผ<br><b>Mapbox Streets</b>๏ผšๆจ™ๆบ–่ก—้“่ฆ–ๅœ–<br><b>Mapbox Outdoors</b>๏ผšๅผท่ชฟๆˆถๅค–ๅ’Œๅœฐๅฝข็‰นๅพต<br><b>Mapbox Light</b>๏ผšๆฅต็ฐกๆ˜Žไบฎไธป้กŒ<br><b>Mapbox Dark</b>๏ผšๆฅต็ฐก้ป‘ๆš—ไธป้กŒ<br><b>Mapbox Navigation Day</b>๏ผš็‚บ็™ฝๅคฉๅฐŽ่ˆชๅ„ชๅŒ–<br><b>Mapbox Navigation Night</b>๏ผš็‚บๅคœ้–“ๅฐŽ่ˆชๅ„ชๅŒ–<br><b>Mapbox Satellite</b>๏ผšๅƒ…่ก›ๆ˜Ÿๅฝฑๅƒ<br><b>Mapbox Satellite Streets</b>๏ผš่ก›ๆ˜Ÿๅฝฑๅƒ่ˆ‡่ก—้“ๆจ™็ฑค็š„ๆททๅˆ<br><b>Mapbox Traffic Night</b>๏ผšๅผท่ชฟไบค้€š็‹€ๆณ็š„้ป‘ๆš—ไธป้กŒ<br><b>mike854's (Satellite hybrid)</b>๏ผš่‡ชๅฎš็พฉๆททๅˆ่ก›ๆ˜Ÿ่ฆ–ๅœ– - - - Road Name - ้“่ทฏๅ็จฑ - - - Display the road name at the bottom of the driving screen using data from <b>OpenStreetMap</b>. - ๅœจ้ง•้ง›่žขๅน•ๅบ•้ƒจ้กฏ็คบไพ†่‡ช<b>OpenStreetMap</b>็š„้“่ทฏๅ็จฑใ€‚ - - - Show Speed Limits - ้กฏ็คบ้€Ÿๅบฆ้™ๅˆถ - - - Display speed limits in the top left corner of the driving screen. Uses data from your car's dashboard (if supported) and data from <b>OpenStreetMaps</b>. - ๅœจ้ง•้ง›่žขๅน•็š„ๅทฆไธŠ่ง’้กฏ็คบ้€Ÿๅบฆ้™ๅˆถใ€‚ไฝฟ็”จไพ†่‡ชๆ‚จ่ปŠ่ผ›ๅ„€่กจๆฟ๏ผˆๅฆ‚ๆžœๆ”ฏๆด๏ผ‰็š„ๆ•ธๆ“šๅ’Œไพ†่‡ช<b>OpenStreetMaps</b>็š„ๆ•ธๆ“šใ€‚ - - - Show Speed Limits from Mapbox - ๅพž Mapbox ้กฏ็คบ้€Ÿๅบฆ้™ๅˆถ - - - Use <b>Mapbox</b> speed limit data when no other sources are available. - ็•ถๆฒ’ๆœ‰ๅ…ถไป–ไพ†ๆบๅฏ็”จๆ™‚๏ผŒไฝฟ็”จ<b>Mapbox</b>้€Ÿๅบฆ้™ๅˆถๆ•ธๆ“šใ€‚ - - - Use Vienna-Style Speed Signs - ไฝฟ็”จ็ถญไนŸ็ด้ขจๆ ผ็š„้€Ÿๅบฆๆจ™่ชŒ - - - Force <b>Vienna-style (EU)</b> speed limit signs instead of <b>MUTCD (US)</b>. - ๅผทๅˆถไฝฟ็”จ<b>็ถญไนŸ็ด้ขจๆ ผ๏ผˆEU๏ผ‰</b>็š„้™้€Ÿๆจ™่ชŒ๏ผŒ่€Œไธๆ˜ฏ<b>MUTCD๏ผˆUS๏ผ‰</b>ใ€‚ - - - Quality of Life - ็”Ÿๆดปๅ“่ณช - - - Visual features to improve your overall openpilot experience. - ่ฆ–่ฆบๅŠŸ่ƒฝไปฅๆ”นๅ–„ๆ‚จ็š„ๆ•ด้ซ” openpilot ้ซ”้ฉ—ใ€‚ - - - Camera View - ็›ธๆฉŸ่ฆ–ๅœ– - - - The active camera view display. This is purely a visual change and doesn't impact how openpilot drives! - ๆดปๅ‹•ๆ”ๅฝฑๆฉŸ่ฆ–ๅœ–้กฏ็คบใ€‚้€™็ด”็ฒนๆ˜ฏ่ฆ–่ฆบไธŠ็š„่ฎŠๅŒ–๏ผŒไธๆœƒๅฝฑ้Ÿฟopenpilot็š„้ง•้ง›ๆ–นๅผ๏ผ - - - Show Driver Camera When In Reverse - ๅ€’่ปŠๆ™‚้กฏ็คบ้ง•้ง›ๅ“กๆ”ๅƒ้ ญ - - - Display the driver camera feed when the vehicle is in reverse. - ็•ถ่ปŠ่ผ›ๅ€’่ปŠๆ™‚้กฏ็คบ้ง•้ง›ๅ“กๆ”ๅƒ้ ญ็•ซ้ขใ€‚ - - - Standby Mode - ๅพ…ๆฉŸๆจกๅผ - - - Turn the screen off when driving and automatically wake it up if engagement state changes or important alerts occur. - ๅœจ้ง•้ง›ๆ™‚้—œ้–‰่žขๅน•๏ผŒไธฆๅœจไบ’ๅ‹•็‹€ๆ…‹ๆ”น่ฎŠๆˆ–็™ผ็”Ÿ้‡่ฆ่ญฆๅ ฑๆ™‚่‡ชๅ‹•ๅ–š้†’ใ€‚ - - - Stopped Timer - ๅœๆญข่จˆๆ™‚ๅ™จ - - - Replace the current speed with a timer when stopped to indicate how long the vehicle has been stopped for. - ็•ถ่ปŠ่ผ›ๅœๆญขๆ™‚๏ผŒ็”จ่จˆๆ™‚ๅ™จๆ›ฟๆ›็•ถๅ‰้€Ÿๅบฆ๏ผŒไปฅๆŒ‡็คบ่ปŠ่ผ›ๅทฒๅœๆญข็š„ๆ™‚้–“ใ€‚ - - - Blind Spot - ็›ฒ้ปž - - - Steering Torque - ่ฝ‰ๅ‘ๆ‰ญ็Ÿฉ - - - Turn Signal - ่ฝ‰ๅ‘็‡ˆ - - - Fahrenheit - ่ฏๆฐ - - - CPU - CPU - - - GPU - GPU - - - IP - IP - - - RAM - RAM - - - SSD Left - SSD ๅ‰ฉ้ค˜ - - - SSD Used - SSD ไฝฟ็”จ้‡ - - - None - ็„ก - - - Acceleration: Current - ๅŠ ้€Ÿๅบฆ๏ผš็•ถๅ‰ - - - Acceleration: Max - ๅŠ ้€Ÿๅบฆ๏ผšๆœ€ๅคง - - - Auto Tune: Actuator Delay - ่‡ชๅ‹•่ชฟ่ซง๏ผš่‡ดๅ‹•ๅ™จๅปถ้ฒ - - - Auto Tune: Friction - ่‡ชๅ‹•่ชฟ่ซง๏ผšๆ‘ฉๆ“ฆ - - - Auto Tune: Lateral Acceleration - ่‡ชๅ‹•่ชฟๆ•ด๏ผšๆฉซๅ‘ๅŠ ้€Ÿๅบฆ - - - Auto Tune: Steer Ratio - ่‡ชๅ‹•่ชฟๆ•ด๏ผš่ฝ‰ๅ‘ๆฏ”็އ - - - Auto Tune: Stiffness Factor - ่‡ชๅ‹•่ชฟๆ•ด๏ผšๅ‰›ๆ€งไฟ‚ๆ•ธ - - - Engagement %: Lateral - ๅƒ่ˆ‡ๅบฆ %๏ผšๆฉซๅ‘ - - - Engagement %: Longitudinal - ๅƒ่ˆ‡็އ๏ผš็ธฑๅ‘ - - - Lateral Control: Steering Angle - ๆฉซๅ‘ๆŽงๅˆถ๏ผš่ฝ‰ๅ‘่ง’ๅบฆ - - - Lateral Control: Torque % Used - ๆฉซๅ‘ๆŽงๅˆถ๏ผšๆ‰ญ็Ÿฉ % ไฝฟ็”จ - - - Longitudinal Control: Actuator Acceleration Output - ็ธฑๅ‘ๆŽงๅˆถ๏ผš่‡ดๅ‹•ๅ™จๅŠ ้€Ÿๅบฆ่ผธๅ‡บ - - - Longitudinal MPC Jerk: Acceleration - ็ธฑๅ‘MPCๆŠ–ๅ‹•๏ผšๅŠ ้€Ÿๅบฆ - - - Longitudinal MPC Jerk: Danger Zone - ็ธฑๅ‘MPCๅŠ ้€Ÿๅบฆ่ฎŠๅŒ–็އ๏ผšๅฑ้šชๅ€ๅŸŸ - - - Longitudinal MPC Jerk: Speed Control - ็ธฑๅ‘MPCๆŠ–ๅ‹•๏ผš้€ŸๅบฆๆŽงๅˆถ - - - SELECT - SELECT - - - Select a metric to display - ้ธๆ“‡่ฆ้กฏ็คบ็š„ๆŒ‡ๆจ™ - - - Show Distance - ้กฏ็คบ่ท้›ข - - - Dynamic - ๅ‹•ๆ…‹ - - - Static - ้œๆ…‹ - - - inches - ่‹ฑๅ‹ - - - Off - ้—œ้–‰ - - - feet - ่‹ฑๅฐบ - - - Full Map - ๅฎŒๆ•ดๅœฐๅœ– - - - Stock openpilot - ๅบซๅญ˜openpilot - - - FrogsGoMoo's Personalized Style - FrogsGoMoo ็š„ๅ€‹ไบบๅŒ–้ขจๆ ผ - - - Mapbox Streets - Mapbox Streets - - - Mapbox Outdoors - Mapbox Outdoors - - - Mapbox Light - Mapbox Light - - - Mapbox Dark - Mapbox Dark - - - Mapbox Navigation Day - MapboxๅฐŽ่ˆชๆ—ฅ - - - Mapbox Navigation Night - Mapbox Navigation ๅคœ้–“ - - - Mapbox Satellite - Mapbox Satellite - - - Mapbox Satellite Streets - Mapbox Satellite Streets - - - Mapbox Traffic Night - Mapbox Traffic Night - - - Mike's Personalized Style - Mike ็š„ๅ€‹ไบบๅŒ–้ขจๆ ผ - - - Select a map style - ้ธๆ“‡ๅœฐๅœ–ๆจฃๅผ - - - Auto - ่‡ชๅ‹• - - - Driver - ้ฉ…ๅ‹•็จ‹ๅผ - - - Standard - ๆจ™ๆบ– - - - Wide - ๅฏฌ - - - foot - ่…ณ - - - inch - ่‹ฑๅ‹ - - - meter - ๅ…ฌๅฐบ - - - meters - ็ฑณ - - - centimeter - ๅ…ฌๅˆ† - - - centimeters - ๅ…ฌๅˆ† - - - The thickness of the lane lines on the driving screen.<br><br><b>Default matches the <b>MUTCD</b> lane line width standard of 10 centimeters. - ่ปŠ้“็ทšๅœจ้ง•้ง›่žขๅน•ไธŠ็š„ๅŽšๅบฆใ€‚<br><br><b>้ ่จญ็ฌฆๅˆ<b>MUTCD</b>่ปŠ้“็ทšๅฏฌๅบฆๆจ™ๆบ–10ๅ…ฌๅˆ†ใ€‚ - - - The thickness of the road edges on the driving screen.<br><br><b>Default matches half of the <b>MUTCD</b> lane line width standard of 10 centimeters. - ้ง•้ง›่žขๅน•ไธŠ้“่ทฏ้‚Š็ทฃ็š„ๅŽšๅบฆใ€‚<br><br><b>้ ่จญ็ฌฆๅˆ<b>MUTCD</b>่ปŠ้“็ทšๅฏฌๆจ™ๆบ–็š„ไธ€ๅŠ๏ผŒๅณ10ๅ…ฌๅˆ†ใ€‚ + <b>Show a numerical temperature in the sidebar</b> instead of the status labels. + <b>ๅœจๅด้‚Šๆฌ„้กฏ็คบๆ•ธๅญ—ๆบซๅบฆ</b>๏ผŒ่€Œไธๆ˜ฏ็‹€ๆ…‹ๆจ™็ฑคใ€‚ Sidebar Metrics - ๅด้‚Šๆฌ„ๆŒ‡ๆจ™ + ๅด้‚Šๆฌ„ๅบฆ้‡ - The width of the driving path on the driving screen.<br><br>Default <b>(6.1 feet)</b> matches the width of a <b>2019 Lexus ES 350</b>. - ้ง•้ง›่žขๅน•ไธŠ้ง•้ง›่ทฏๅพ‘็š„ๅฏฌๅบฆใ€‚<br><br>้ ่จญ <b>(6.1 ่‹ฑๅฐบ)</b> ่ˆ‡ <b>2019 Lexus ES 350</b> ็š„ๅฏฌๅบฆ็›ธ็ฌฆใ€‚ + <b>Display system information</b> (CPU, GPU, RAM usage, IP address, device storage) in the sidebar. + <b>ๅœจๅด้‚Šๆฌ„้กฏ็คบ็ณป็ตฑ่ณ‡่จŠ</b>๏ผˆCPUใ€GPUใ€RAM ไฝฟ็”จ็އใ€IP ไฝๅ€ใ€่ฃ็ฝฎๅ„ฒๅญ˜็ฉบ้–“๏ผ‰ใ€‚ - The width of the driving path on the driving screen.<br><br>Default <b>(1.9 meters)</b> matches the width of a <b>2019 Lexus ES 350</b>. - ้ง•้ง›่žขๅน•ไธŠ้ง•้ง›่ทฏๅพ‘็š„ๅฏฌๅบฆใ€‚<br><br>้ ่จญ<b>(1.9 ็ฑณ)</b>็ฌฆๅˆ<b>2019 Lexus ES 350</b>็š„ๅฏฌๅบฆใ€‚ + Use International System of Units + ไฝฟ็”จๅœ‹้š›ๅ–ฎไฝๅˆถ + + + <b>Display measurements using the "International System of Units" (SI)</b> standard. + <b>ไฝฟ็”จใ€Œๅœ‹้š›ๅ–ฎไฝๅˆถใ€๏ผˆSI๏ผ‰ๆจ™ๆบ–้กฏ็คบๅบฆ้‡</b> + + + Developer Sidebar + ้–‹็™ผไบบๅ“กๅด้‚Šๆฌ„ + + + <b>Display debugging info and metrics</b> in a dedicated sidebar on the right side of the screen. + <b>ๅœจ่žขๅน•ๅณๅด็š„ๅฐˆ็”จๅด้‚Šๆฌ„ไธญ้กฏ็คบ้™ค้Œฏ่ณ‡่จŠ่ˆ‡้‡ๆธฌๆŒ‡ๆจ™</b> + + + Metric #1 + ๅ…ฌๅˆถ #1 + + + <b>Select the metric shown in the first "Developer Sidebar" widget.</b> + <b>้ธๆ“‡็ฌฌไธ€ๅ€‹ใ€ŒDeveloper Sidebarใ€ๅฐๅทฅๅ…ทไธญ้กฏ็คบ็š„ๅบฆ้‡ใ€‚</b> + + + Metric #2 + ๅ…ฌๅˆถ #2 + + + <b>Select the metric shown in the second "Developer Sidebar" widget.</b> + <b>้ธๆ“‡็ฌฌไบŒๅ€‹ใ€ŒDeveloper Sidebarใ€ๅฐๅทฅๅ…ทไธญ้กฏ็คบ็š„้‡ๆธฌ้ …็›ฎใ€‚</b> + + + Metric #3 + ๅ…ฌๅˆถ #3 + + + <b>Select the metric shown in the third "Developer Sidebar" widget.</b> + <b>้ธๅ–็ฌฌไธ‰ๅ€‹ใ€ŒDeveloper Sidebarใ€ๅฐๅทฅๅ…ทไธญ้กฏ็คบ็š„ๅบฆ้‡ใ€‚</b> + + + Metric #4 + ๅบฆ้‡ #4 + + + <b>Select the metric shown in the fourth "Developer Sidebar" widget.</b> + <b>้ธๅ–็ฌฌๅ››ๅ€‹ใ€ŒDeveloper Sidebarใ€ๅฐๅทฅๅ…ทไธญ้กฏ็คบ็š„ๅบฆ้‡ใ€‚</b> + + + Metric #5 + ๅ…ฌๅˆถ #5 + + + <b>Select the metric shown in the fifth "Developer Sidebar" widget.</b> + <b>้ธๅ–็ฌฌไบ”ๅ€‹ใ€ŒDeveloper Sidebarใ€ๅฐๅทฅๅ…ทไธญ้กฏ็คบ็š„้‡ๆธฌๆŒ‡ๆจ™ใ€‚</b> + + + Metric #6 + ๅ…ฌๅˆถ #6 + + + <b>Select the metric shown in the sixth "Developer Sidebar" widget.</b> + <b>้ธๆ“‡็ฌฌๅ…ญๅ€‹ใ€ŒDeveloper Sidebarใ€ๅฐๅทฅๅ…ทไธญ้กฏ็คบ็š„ๅบฆ้‡ใ€‚</b> + + + Metric #7 + ๅ…ฌๅˆถ #7 + + + <b>Select the metric shown in the seventh "Developer Sidebar" widget.</b> + <b>้ธๆ“‡็ฌฌไธƒๅ€‹ใ€ŒDeveloper Sidebarใ€ๅฐๅทฅๅ…ทไธญ้กฏ็คบ็š„ๅบฆ้‡ใ€‚</b> + + + Developer Widgets + ้–‹็™ผ่€…ๅฐๅทฅๅ…ท + + + <b>Overlays for debugging visuals, internal states, and model predictions</b> on the driving screen. + <b>ๅœจ้ง•้ง›็•ซ้ขไธŠ้กฏ็คบ็”จๆ–ผ้™ค้Œฏ็š„่ฆ–่ฆบ่ฆ†่“‹ใ€ๅ…ง้ƒจ็‹€ๆ…‹่ˆ‡ๆจกๅž‹้ ๆธฌ</b> + + + Adjacent Leads Tracking + ็›ธ้„ฐๅ‰่ปŠ่ฟฝ่นค + + + <b>Display adjacent leads detected by the car's radar</b> to the left and right of the current driving path. + <b>้กฏ็คบ่ปŠ่ผ›้›ท้”ๅตๆธฌๅˆฐ็š„็›ธ้„ฐๅ‰่ปŠ</b>ๆ–ผ็•ถๅ‰่กŒ่ปŠ่ทฏๅพ‘็š„ๅทฆๅด่ˆ‡ๅณๅดใ€‚ + + + Model Stopping Point + ๆจกๅž‹ๅœๆญข้ปž + + + <b>Show a stop-sign marker where the model intends to stop.</b> + <b>ๅœจๆจกๅž‹ๆ‰“็ฎ—ๅœไธ‹็š„ไฝ็ฝฎ้กฏ็คบๅœ็‰Œๆจ™่จ˜ใ€‚</b> + + + Radar Tracks + ้›ท้”่ปŒ่ทก + + + <b>Display all radar points</b> produced by the car's radar. + <b>้กฏ็คบๆฑฝ่ปŠ้›ท้”็”ข็”Ÿ็š„ๆ‰€ๆœ‰้›ท้”้ปž</b> + + + Driving Screen Widgets + ่กŒ้ง›็•ซ้ขๅฐๅทฅๅ…ท + + + <b>Custom FrogPilot widgets</b> for the driving screen. + ้ง•้ง›็•ซ้ข็š„<b>่‡ช่จ‚ FrogPilot ๅฐๅทฅๅ…ท</b>ใ€‚ + + + Acceleration Path + ๅŠ ้€Ÿ่ทฏๅพ‘ + + + <b>Color the driving path by planned acceleration and braking.</b> + <b>ไพ็…ง้ ่จˆๅŠ ้€Ÿ่ˆ‡็…ž่ปŠ็‚บ่กŒ้ง›่ทฏๅพ‘่‘—่‰ฒใ€‚</b> + + + Adjacent Lanes + ็›ธ้„ฐ่ปŠ้“ + + + <b>Show the driving paths for the left and right lanes.</b> + <b>้กฏ็คบๅทฆใ€ๅณ่ปŠ้“็š„่กŒ้ง›่ทฏๅพ‘ใ€‚</b> + + + Blind Spot Path + ็›ฒ้ปž่ทฏๅพ‘ + + + <b>Show a red path when a vehicle is in that lane's blind spot.</b> + <b>็•ถ่ปŠ้“็š„็›ฒ้ปžๅ…งๆœ‰่ปŠ่ผ›ๆ™‚้กฏ็คบ็ด…่‰ฒ่ทฏๅพ‘ใ€‚</b> + + + Compass + ๆŒ‡ๅ—้‡ + + + <b>Show the current driving direction</b> with a simple on-screen compass. + <b>ไปฅ็ฐกๆฝ”็š„่žขๅน•ๆŒ‡ๅ—้‡</b>้กฏ็คบ็›ฎๅ‰่กŒ้ง›ๆ–นๅ‘ใ€‚ + + + Driving Personality Button + ้ง•้ง›้ขจๆ ผๆŒ‰้ˆ• + + + <b>Control and view the current driving personality</b> via a driving screen widget. + <b>้€้Ž้ง•้ง›็•ซ้ขๅฐๅทฅๅ…ท</b>ๆŽงๅˆถไธฆๆชข่ฆ–็›ฎๅ‰็š„้ง•้ง›้ขจๆ ผใ€‚ + + + Gas / Brake Pedal Indicators + ๆฒน้–€๏ผ็…ž่ปŠ่ธๆฟๆŒ‡็คบๅ™จ + + + <b>On-screen gas and brake indicators.</b><br><br><b>Dynamic</b>: Opacity changes according to how much openpilot is accelerating or braking<br><b>Static</b>: Full when active, dim when not + <b>่žขๅน•ไธŠ็š„ๆฒน้–€่ˆ‡็…ž่ปŠๆŒ‡็คบใ€‚</b><br><br><b>ๅ‹•ๆ…‹</b>๏ผš้€ๆ˜Žๅบฆๆœƒไพ openpilot ๅŠ ้€Ÿๆˆ–็…ž่ปŠ็š„็จ‹ๅบฆ่€Œ่ฎŠๅŒ–<br><b>้œๆ…‹</b>๏ผšๅ•Ÿ็”จๆ™‚ๅ…จไบฎ๏ผŒๆœชๅ•Ÿ็”จๆ™‚่ฎŠๆš— + + + Rotating Steering Wheel + ๆ—‹่ฝ‰ๆ–นๅ‘็›ค + + + <b>Rotate the driving screen wheel</b> with the physical steering wheel. + <b>ไฝฟ็”จๅฏฆ้ซ”ๆ–นๅ‘็›คๆ—‹่ฝ‰้ง•้ง›็•ซ้ขๆปพ่ผช</b>ใ€‚ + + + Model UI + ๆจกๅž‹ UI + + + <b>Model visualizations</b> for the driving path, lane lines, path edges, and road edges. + <b>ๆจกๅž‹่ฆ–่ฆบๅŒ–</b>๏ผš้ง•้ง›่ทฏๅพ‘ใ€่ปŠ้“็ทšใ€่ทฏๅพ‘้‚Š็ทฃ่ˆ‡้“่ทฏ้‚Š็ทฃใ€‚ + + + Dynamic Path Width + ๅ‹•ๆ…‹่ทฏๅพ‘ๅฏฌๅบฆ + + + <b>Change the path width based on engagement.</b><br><br><b>Fully Engaged</b>: 100%<br><b>Always On Lateral</b>: 75%<br><b>Disengaged</b>: 50% + <b>ๆ นๆ“šๆŽฅ็ฎก็จ‹ๅบฆ่ฎŠๆ›ด่ทฏๅพ‘ๅฏฌๅบฆใ€‚</b><br><br><b>ๅฎŒๅ…จๆŽฅ็ฎก</b>๏ผš100%<br><b>ๅง‹็ต‚้–‹ๅ•Ÿๆฉซๅ‘ๆŽงๅˆถ</b>๏ผš75%<br><b>ๆœชๆŽฅ็ฎก</b>๏ผš50% + + + Lane Lines Width + ่ปŠ้“็ทšๅฏฌๅบฆ + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 4 inches. + <b>่จญๅฎš่ปŠ้“็ทš็ฒ—็ดฐใ€‚</b><br><br>้ ่จญ็ฌฆๅˆ MUTCD ่ปŠ้“็ทšๅฏฌๅบฆๆจ™ๆบ– 4 ่‹ฑๅ‹ใ€‚ + + + Path Edges Width + ่ทฏๅพ‘้‚Š็ทฃๅฏฌๅบฆ + + + <b>Set the driving-path edge width</b> that represents different driving modes and statuses.<br><br>Default is 20% of the total path width.<br><br>Color Guide:<br><br>- <b>Blue</b>: Navigation<br>- <b>Light Blue</b>: Always On Lateral<br>- <b>Green</b>: Default<br>- <b>Orange</b>: Experimental Mode<br>- <b>Red</b>: Traffic Mode<br>- <b>Yellow</b>: Conditional Experimental Mode overridden + <b>่จญๅฎš่กŒ่ปŠ่ทฏๅพ‘้‚Š็ทฃๅฏฌๅบฆ</b>๏ผŒ็”จไปฅ่กจ็คบไธๅŒ็š„่กŒ่ปŠๆจกๅผ่ˆ‡็‹€ๆ…‹ใ€‚<br><br>้ ่จญ็‚บ็ธฝ่ทฏๅพ‘ๅฏฌๅบฆ็š„ 20%ใ€‚<br><br>้ก่‰ฒๆŒ‡ๅ—๏ผš<br><br>- <b>่—่‰ฒ</b>๏ผšๅฐŽ่ˆช<br>- <b>ๆทบ่—่‰ฒ</b>๏ผšๅง‹็ต‚้–‹ๅ•Ÿๆฉซๅ‘ๆŽงๅˆถ<br>- <b>็ถ ่‰ฒ</b>๏ผš้ ่จญ<br>- <b>ๆฉ™่‰ฒ</b>๏ผšๅฏฆ้ฉ—ๆจกๅผ<br>- <b>็ด…่‰ฒ</b>๏ผšไบค้€šๆจกๅผ<br>- <b>้ปƒ่‰ฒ</b>๏ผšๆขไปถๅผๅฏฆ้ฉ—ๆจกๅผๅทฒ่ฆ†่“‹ + + + Path Width + ่ทฏๅพ‘ๅฏฌๅบฆ + + + <b>Set the driving-path width.</b><br><br>Default (6.1 feet) matches the width of a 2019 Lexus ES 350. + <b>่จญๅฎš่กŒ่ปŠ่ทฏๅพ‘ๅฏฌๅบฆใ€‚</b><br><br>้ ่จญๅ€ผ๏ผˆ6.1 ่‹ฑๅฐบ๏ผ‰่ˆ‡ 2019 Lexus ES 350 ็š„่ปŠๅฏฌ็›ธๅŒใ€‚ + + + Road Edges Width + ้“่ทฏ้‚Š็ทฃๅฏฌๅบฆ + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 4 inches. + <b>่จญๅฎš้“่ทฏ้‚Š็ทฃ็š„ๅŽšๅบฆใ€‚</b><br><br>้ ่จญๅ€ผ็›ธ็•ถๆ–ผ MUTCD ่ปŠ้“็ทšๆจ™ๆบ–ๅฏฌๅบฆ 4 ่‹ฑๅ‹็š„ไธ€ๅŠใ€‚ + + + "Unlimited" Road UI + ใ€Œ็„ก้™ๅˆถใ€้“่ทฏไป‹้ข + + + <b>Extend the length of the driving path, lane lines, and road edges</b> for as far as the model can see. + <b>ๅฐ‡่กŒ่ปŠ่ทฏๅพ‘ใ€่ปŠ้“็ทš่ˆ‡้“่ทฏ้‚Š็ทฃ็š„้•ทๅบฆ</b>ๅปถไผธ่‡ณๆจกๅž‹ๅฏ่ฆ‹็š„ๆœ€้ ่ท้›ขใ€‚ + + + Navigation Widgets + ๅฐŽ่ˆชๅฐๅทฅๅ…ท + + + <b>Map style, speed limits, and other navigation widgets.</b> + <b>ๅœฐๅœ–ๆจฃๅผใ€้€Ÿ้™ๅŠๅ…ถไป–ๅฐŽ่ˆชๅฐๅทฅๅ…ทใ€‚</b> + + + Larger Map Display + ่ผƒๅคงๅœฐๅœ–้กฏ็คบ + + + <b>Increase the map size</b> for easier navigation readings. + <b>ๅขžๅคงๅœฐๅœ–ๅคงๅฐ</b>ไปฅไพฟๆ›ดๅฎนๆ˜“้–ฑ่ฎ€ๅฐŽ่ˆชใ€‚ + + + Map Style + ๅœฐๅœ–ๆจฃๅผ + + + <b>Select the map style</b> for "Navigate on openpilot" (NOO):<br><br><b>Stock openpilot</b>: Default comma.ai style<br><b>FrogPilot</b>: Official FrogPilot map style<br><b>Mapbox Streets</b>: Standard street-focused view<br><b>Mapbox Outdoors</b>: Emphasizes outdoor and terrain features<br><b>Mapbox Light</b>: Minimalist, bright theme<br><b>Mapbox Dark</b>: Minimalist, dark theme<br><b>Mapbox Navigation Day</b>: Optimized for daytime navigation<br><b>Mapbox Navigation Night</b>: Optimized for nighttime navigation<br><b>Mapbox Satellite</b>: Satellite imagery only<br><b>Mapbox Satellite Streets</b>: Hybrid satellite imagery with street labels<br><b>Mapbox Traffic Night</b>: Dark theme emphasizing traffic conditions<br><b>Mike's Personalized Style</b>: Customized hybrid satellite view + <b>็‚บใ€ŒNavigate on openpilotใ€๏ผˆNOO๏ผ‰้ธๆ“‡ๅœฐๅœ–ๆจฃๅผ</b>๏ผš<br><br><b>Stock openpilot</b>๏ผš้ ่จญ comma.ai ๆจฃๅผ<br><b>FrogPilot</b>๏ผšๅฎ˜ๆ–น FrogPilot ๅœฐๅœ–ๆจฃๅผ<br><b>Mapbox Streets</b>๏ผšๆจ™ๆบ–็š„่ก—้“ๅฐŽๅ‘่ฆ–ๅœ–<br><b>Mapbox Outdoors</b>๏ผšๅผท่ชฟๆˆถๅค–่ˆ‡ๅœฐๅฝข็‰นๅพต<br><b>Mapbox Light</b>๏ผšๆฅต็ฐกใ€ๆ˜Žไบฎไธป้กŒ<br><b>Mapbox Dark</b>๏ผšๆฅต็ฐกใ€ๆทฑ่‰ฒไธป้กŒ<br><b>Mapbox Navigation Day</b>๏ผš็‚บๆ—ฅ้–“ๅฐŽ่ˆชๆœ€ไฝณๅŒ–<br><b>Mapbox Navigation Night</b>๏ผš็‚บๅคœ้–“ๅฐŽ่ˆชๆœ€ไฝณๅŒ–<br><b>Mapbox Satellite</b>๏ผšๅƒ…่ก›ๆ˜Ÿๅฝฑๅƒ<br><b>Mapbox Satellite Streets</b>๏ผšๆททๅˆ่ก›ๆ˜Ÿๅฝฑๅƒ่ˆ‡่ก—้“ๆจ™็ฑค<br><b>Mapbox Traffic Night</b>๏ผšๅผท่ชฟไบค้€š็‹€ๆณ็š„ๆทฑ่‰ฒไธป้กŒ<br><b>Mike's Personalized Style</b>๏ผš่‡ช่จ‚็š„ๆททๅˆ่ก›ๆ˜Ÿ่ฆ–ๅœ– + + + Road Name + ้“่ทฏๅ็จฑ + + + <b>Display the road name at the bottom of the driving screen</b> using data from "OpenStreetMap (OSM)". + <b>ๅœจ่กŒ่ปŠ่žขๅน•ๅบ•้ƒจ้กฏ็คบ้“่ทฏๅ็จฑ</b>๏ผŒไฝฟ็”จไพ†่‡ชใ€ŒOpenStreetMap (OSM)ใ€็š„่ณ‡ๆ–™ใ€‚ + + + Show Speed Limits + ้กฏ็คบ้€Ÿ้™ + + + <b>Show speed limits</b> in the top-left corner of the driving screen. Uses data from the car's dashboard (if supported) and "OpenStreetMap (OSM)". + <b>ๅœจ้ง•้ง›็•ซ้ข็š„ๅทฆไธŠ่ง’้กฏ็คบ้€Ÿ้™</b>ใ€‚ไฝฟ็”จ่ปŠ่ผ›ๅ„€่กจๆฟ๏ผˆ่‹ฅๆ”ฏๆด๏ผ‰่ˆ‡ใ€ŒOpenStreetMap (OSM)ใ€็š„่ณ‡ๆ–™ใ€‚ + + + Show Speed Limits from Mapbox + ้กฏ็คบไพ†่‡ช Mapbox ็š„้€Ÿ้™ + + + <b>Use Mapbox speed-limit data when no other source is available.</b> + <b>ๅœจๆฒ’ๆœ‰ๅ…ถไป–ไพ†ๆบๅฏ็”จๆ™‚ไฝฟ็”จ Mapbox ็š„้€Ÿ้™่ณ‡ๆ–™ใ€‚</b> + + + Use Vienna-Style Speed Signs + ไฝฟ็”จ็ถญไนŸ็ดๆจฃๅผ้€Ÿ้™ๆจ™่ชŒ + + + <b>Show Vienna-style (EU) speed-limit signs</b> instead of MUTCD (US). + <b>้กฏ็คบ็ถญไนŸ็ด้ขจๆ ผ๏ผˆEU๏ผ‰้€Ÿ้™ๆจ™่ชŒ</b>๏ผŒ่€Œ้ž MUTCD๏ผˆUS๏ผ‰ใ€‚ + + + Quality of Life + ็”Ÿๆดปๅ“่ณช + + + <b>Miscellaneous visual changes</b> to fine-tune how the driving screen looks. + <b>ๅ„็จฎ่ฆ–่ฆบ่ฎŠๆ›ด</b>๏ผŒ็”จๆ–ผๅพฎ่ชฟ้ง•้ง›็•ซ้ข็š„ๅค–่ง€ใ€‚ + + + Camera View + ๆ”ๅฝฑๆฉŸ่ฆ–ๅœ– + + + <b>Select the active camera view.</b> This is purely a visual change and doesn't impact how openpilot drives! + <b>้ธๆ“‡ไธปๅ‹•็›ธๆฉŸ่ฆ–่ง’ใ€‚</b> ้€™ๅƒ…ๆ˜ฏ่ฆ–่ฆบไธŠ็š„่ฎŠๆ›ด๏ผŒไธๆœƒๅฝฑ้Ÿฟ openpilot ็š„้ง•้ง›ๆ–นๅผ๏ผ + + + Show Driver Camera When In Reverse + ๅ€’่ปŠๆ™‚้กฏ็คบ้ง•้ง›ๅ“กๆ”ๅฝฑๆฉŸ + + + <b>Show the driver camera feed</b> when the vehicle is in reverse. + <b>ๅœจ่ปŠ่ผ›ๅ€’ๆช”ๆ™‚้กฏ็คบ้ง•้ง›ๅ“กๆ”ๅฝฑๆฉŸ็•ซ้ข</b> + + + Stopped Timer + ๅทฒๅœๆญข่จˆๆ™‚ๅ™จ + + + <b>Show a timer when stopped</b> in place of the current speed to indicate how long the vehicle has been stopped. + <b>ๅœจๅœ่ปŠๆ™‚้กฏ็คบ่จˆๆ™‚ๅ™จ</b>๏ผŒไปฅๅ–ไปฃ็›ฎๅ‰้€Ÿๅบฆ๏ผŒ้กฏ็คบ่ปŠ่ผ›ๅทฒๅœๅคšไน…ใ€‚ + + + Hide Map + ้šฑ่—ๅœฐๅœ– + + + Blind Spot + ็›ฒ้ปž + + + Steering Torque + ่ฝ‰ๅ‘ๆ‰ญ็Ÿฉ + + + Turn Signal + ๆ–นๅ‘็‡ˆ + + + Fahrenheit + ่ฏๆฐ + + + CPU + CPU + + + GPU + GPU + + + IP + IP + + + RAM + RAM + + + SSD Left + SSD ๅทฆๅด + + + SSD Used + SSD ๅทฒไฝฟ็”จ + + + None + ็„ก + + + Acceleration: Current + ๅŠ ้€Ÿๅบฆ๏ผš็›ฎๅ‰ + + + Acceleration: Max + ๅŠ ้€Ÿๅบฆ๏ผšๆœ€ๅคง + + + Auto Tune: Actuator Delay + ่‡ชๅ‹•่ชฟๆ ก๏ผš่‡ดๅ‹•ๅ™จๅปถ้ฒ + + + Auto Tune: Friction + ่‡ชๅ‹•่ชฟๆ ก๏ผšๆ‘ฉๆ“ฆ + + + Auto Tune: Lateral Acceleration + ่‡ชๅ‹•่ชฟๆ ก๏ผšๆฉซๅ‘ๅŠ ้€Ÿๅบฆ + + + Auto Tune: Steer Ratio + ่‡ชๅ‹•่ชฟๆ ก๏ผš่ฝ‰ๅ‘ๆฏ” + + + Auto Tune: Stiffness Factor + ่‡ชๅ‹•่ชฟๆ ก๏ผšๅ‰›ๆ€งไฟ‚ๆ•ธ + + + Engagement %: Lateral + ๅƒ่ˆ‡ๅบฆ %๏ผšๆฉซๅ‘ + + + Engagement %: Longitudinal + ๅƒ่ˆ‡ๅบฆ %๏ผš็ธฑๅ‘ + + + Lateral Control: Steering Angle + ๆฉซๅ‘ๆŽงๅˆถ๏ผš่ฝ‰ๅ‘่ง’ๅบฆ + + + Lateral Control: Torque % Used + ๆฉซๅ‘ๆŽงๅˆถ๏ผšๆ‰ญ็Ÿฉไฝฟ็”จ็™พๅˆ†ๆฏ” + + + Longitudinal Control: Actuator Acceleration Output + ็ธฑๅ‘ๆŽงๅˆถ๏ผš่‡ดๅ‹•ๅ™จๅŠ ้€Ÿๅบฆ่ผธๅ‡บ + + + Longitudinal MPC Jerk: Acceleration + ็ธฑๅ‘ MPC ๆŠ–ๅ‹•๏ผšๅŠ ้€Ÿๅบฆ + + + Longitudinal MPC Jerk: Danger Zone + ็ธฑๅ‘ MPC ๆŠ–ๅ‹•๏ผšๅฑ้šชๅ€ๅŸŸ + + + Longitudinal MPC Jerk: Speed Control + ็ธฑๅ‘ MPC ๆŠ–ๅ‹•๏ผš้€ŸๅบฆๆŽงๅˆถ + + + SELECT + ้ธๅ– + + + Select a metric to display + ้ธๆ“‡่ฆ้กฏ็คบ็š„ๅบฆ้‡ๆŒ‡ๆจ™ + + + Show Distance + ้กฏ็คบ่ท้›ข + + + Dynamic + ๅ‹•ๆ…‹ + + + Static + ้œๆ…‹ + + + inches + ่‹ฑๅ‹ + + + Off + ้—œ้–‰ + + + feet + ่‹ฑๅฐบ + + + Full Map + ๅฎŒๆ•ดๅœฐๅœ– + + + Stock openpilot + ๅŽŸๅป  openpilot + + + FrogPilot + FrogPilot + + + Mapbox Streets + Mapbox Streets + + + Mapbox Outdoors + Mapbox ๆˆถๅค–ๅœฐๅœ– + + + Mapbox Light + Mapbox ๆทบ่‰ฒ + + + Mapbox Dark + Mapbox ๆทฑ่‰ฒ + + + Mapbox Navigation Day + Mapbox ๅฐŽ่ˆช๏ผˆๆ—ฅ้–“๏ผ‰ + + + Mapbox Navigation Night + Mapbox ๅฐŽ่ˆช๏ผˆๅคœ้–“๏ผ‰ + + + Mapbox Satellite + Mapbox ่ก›ๆ˜Ÿๅœ–ๅƒ + + + Mapbox Satellite Streets + Mapbox ่ก›ๆ˜Ÿ่ก—้“ๅœ– + + + Mapbox Traffic Night + Mapbox ไบค้€š ๅคœ้–“ + + + Mike's Personalized Style + Mike ็š„ๅ€‹ไบบๅŒ–้ขจๆ ผ + + + Select a map style + ้ธๆ“‡ๅœฐๅœ–ๆจฃๅผ + + + Auto + ่‡ชๅ‹• + + + Driver + ้ง•้ง›ๅ“ก + + + Standard + ๆจ™ๆบ– + + + Wide + ๅฏฌ + + + foot + ่‹ฑๅฐบ + + + inch + ่‹ฑๅ‹ + + + meter + ็ฑณ + + + meters + ๅ…ฌๅฐบ + + + centimeter + ๅ…ฌๅˆ† + + + centimeters + ๅ…ฌๅˆ† + + + <b>Set the lane-line thickness.</b><br><br>Default matches the MUTCD lane-line width standard of 10 centimeters. + <b>่จญๅฎš่ปŠ้“็ทšๅŽšๅบฆใ€‚</b><br><br>้ ่จญ็ฌฆๅˆ MUTCD ่ปŠ้“็ทšๅฏฌๅบฆๆจ™ๆบ–็‚บ 10 ๅ…ฌๅˆ†ใ€‚ + + + <b>Set the driving-path width.</b><br><br>Default (1.9 meters) matches the width of a 2019 Lexus ES 350. + <b>่จญๅฎš่กŒ่ปŠ่ทฏๅพ‘ๅฏฌๅบฆใ€‚</b><br><br>้ ่จญ๏ผˆ1.9 ๅ…ฌๅฐบ๏ผ‰่ˆ‡ 2019 Lexus ES 350 ็š„่ปŠๅฏฌ็›ธๅŒใ€‚ + + + <b>Set the road-edge thickness.</b><br><br>Default matches half of the MUTCD lane-line width standard of 10 centimeters. + <b>่จญๅฎš้“่ทฏ้‚Š็ทฃ็ฒ—็ดฐใ€‚</b><br><br>้ ่จญๅ€ผ็›ธ็•ถๆ–ผ็ฌฆๅˆ MUTCD ่ปŠ้“็ทšๆจ™ๆบ– 10 ๅ…ฌๅˆ†็š„ไธ€ๅŠใ€‚ FrogPilotWheelPanel Distance Button - ่ท้›ขๆŒ‰้ˆ• + ่ท้›ขๆŒ‰้ˆ• - The action for a short press of the <b>Distance</b> button. - ๆŒ‰ไธ‹<b>่ท้›ข</b>ๆŒ‰้ˆ•็š„็ŸญๆŒ‰ๅ‹•ไฝœใ€‚ + <b>Action performed when the "Distance" button is pressed.</b> + <b>ๆŒ‰ไธ‹ใ€Œ่ท้›ขใ€ๆŒ‰้ˆ•ๆ™‚ๅŸท่กŒ็š„ๅ‹•ไฝœใ€‚</b> Distance Button (Long Press) - ่ท้›ขๆŒ‰้ˆ•๏ผˆ้•ทๆŒ‰๏ผ‰ + ่ท้›ขๆŒ‰้ˆ•๏ผˆ้•ทๆŒ‰๏ผ‰ - The action for a 0.5+ second press of the <b>Distance</b> button. - ๆŒ‰ไธ‹<b>่ท้›ข</b>ๆŒ‰้ˆ•่ถ…้Ž0.5็ง’็š„ๅ‹•ไฝœใ€‚ + <b>Action performed when the "Distance" button is pressed for more than 0.5 seconds.</b> + <b>้•ทๆŒ‰ใ€ŒDistanceใ€ๆŒ‰้ˆ•่ถ…้Ž 0.5 ็ง’ๆ™‚ๅŸท่กŒ็š„ๅ‹•ไฝœใ€‚</b> Distance Button (Very Long Press) - ่ท้›ขๆŒ‰้ˆ•๏ผˆ้•ทๆŒ‰๏ผ‰ + ่ท้›ขๆŒ‰้ˆ•๏ผˆ่ถ…้•ทๆŒ‰๏ผ‰ - The action for a 2.5+ second press of the <b>Distance</b> button. - ๆŒ‰ไธ‹<b>่ท้›ข</b>ๆŒ‰้ˆ•่ถ…้Ž2.5็ง’็š„ๅ‹•ไฝœใ€‚ + <b>Action performed when the "Distance" button is pressed for more than 2.5 seconds.</b> + <b>้•ทๆŒ‰ใ€Œ่ท้›ขใ€ๆŒ‰้ˆ•่ถ…้Ž 2.5 ็ง’ๆ™‚ๅŸท่กŒ็š„ๅ‹•ไฝœใ€‚</b> LKAS Button - LKASๆŒ‰้ˆ• + LKAS ๆŒ‰้ˆ• - The action for pressing the <b>LKAS</b> button. - ๆŒ‰ไธ‹<b>LKAS</b>ๆŒ‰้ˆ•็š„ๆ“ไฝœใ€‚ + <b>Action performed when the "LKAS" button is pressed.</b> + <b>ๆŒ‰ไธ‹ใ€ŒLKASใ€ๆŒ‰้ˆ•ๆ™‚ๅŸท่กŒ็š„ๅ‹•ไฝœใ€‚</b> - Nothing - ๆฒ’ๆœ‰ไปปไฝ•ๆฑ่ฅฟ + No Action + ็„ก้œ€ๆ“ไฝœ - Pause Lateral - ๆšซๅœๆฉซๅ‘ + Pause Steering + ๆšซๅœ่ฝ‰ๅ‘ Change "Personality Profile" - ไบบๆ ผ็‰น่ณชๅˆ†ๆž + ่ฎŠๆ›ดใ€Œๅ€‹ไบบ็‰น่ณช่จญๅฎšๆช”ใ€ Force openpilot to Coast - ๅผทๅˆถ openpilot ๆป‘่กŒ + ๅผทๅˆถ openpilot ้€ฒๅ…ฅๆป‘่กŒๆจกๅผ - Pause Longitudinal - ๆšซๅœ็ธฑๅ‘ + Pause Acceleration/Braking + ๆšซๅœๅŠ ้€Ÿ๏ผๅˆถๅ‹• Toggle "Experimental Mode" On/Off - ๅˆ‡ๆ›ใ€Œๅฏฆ้ฉ—ๆจกๅผใ€้–‹/้—œ + ๅˆ‡ๆ›ใ€Œๅฏฆ้ฉ—ๆจกๅผใ€้–‹/้—œ Toggle "Traffic Mode" On/Off - ๅˆ‡ๆ›ใ€Œไบค้€šๆจกๅผใ€้–‹/้—œ + ๅˆ‡ๆ›ใ€Œไบค้€šๆจกๅผใ€้–‹/้—œ SELECT - SELECT + ้ธๅ– Select a function to assign to this button - ้ธๆ“‡่ฆๅˆ†้…็ตฆๆญคๆŒ‰้ˆ•็š„ๅŠŸ่ƒฝ + ้ธๆ“‡่ฆๆŒ‡ๆดพ็ตฆๆญคๆŒ‰้ˆ•็š„ๅŠŸ่ƒฝ @@ -4295,7 +4408,7 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Characters: %1/%2 - ๅญ—ๅ…ƒ๏ผš%1/%2 + ๅญ—ๅ…ƒ๏ผš%1/%2 @@ -4328,7 +4441,7 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Manage at %1 - ็ฎก็†ๆ–ผ %1 + ๅœจ %1 ็ฎก็† @@ -4346,57 +4459,6 @@ Want to submit your own animations? Share them in the "custom-themes" channel on ็ญ‰ๅพ…่ทฏ็ทš - - ModelReview - - How would you rate that drive? - ไฝ ๆœƒๅฆ‚ไฝ•่ฉ•ๅƒน้‚ฃๆฌก้ง•้ง›๏ผŸ - - - Blacklist this model - ๅฐ‡ๆญคๆจกๅž‹ๅˆ—ๅ…ฅ้ป‘ๅๅ–ฎ - - - The model used during that drive was: - ๅœจ้‚ฃๆฌก้ฉ…ๅ‹•ไธญไฝฟ็”จ็š„ๆจกๅž‹ๆ˜ฏ๏ผš - - - Current Model Score: 0 - ็›ฎๅ‰ๆจกๅž‹ๅˆ†ๆ•ธ๏ผš0 - - - Current Model Rank: 0 - Current Model Rank: 0 - - - Total Model Drives: 0 - ็ธฝๆจกๅž‹้ฉ…ๅ‹•ๅ™จ๏ผš0 - - - Total Overall Model Drives: 0 - ็ธฝๆ•ด้ซ”ๆจกๅž‹้ฉ…ๅ‹•ๅ™จ๏ผš0 - - - Total Model Drives: %1 - ็ธฝๆจกๅž‹้ฉ…ๅ‹•ๅ™จ๏ผš%1 - - - Current Model Rank: %1 - ็›ฎๅ‰ๆจกๅž‹ๆŽ’ๅ๏ผš%1 - - - Current Model Score: %1 - ็›ฎๅ‰ๆจกๅž‹ๅˆ†ๆ•ธ๏ผš%1 - - - Total Overall Drives: %1 - ็ธฝ่จˆ้ฉ…ๅ‹•ๅ™จ๏ผš%1 - - - Model successfully blacklisted! - ๆจกๅž‹ๅทฒๆˆๅŠŸๅˆ—ๅ…ฅ้ป‘ๅๅ–ฎ๏ผ - - MultiOptionDialog @@ -4517,17 +4579,17 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Reboot Device ่ซ‹้‡ๆ–ฐๅ•Ÿ่ฃ็ฝฎ - - openpilot crashed ๐Ÿ’ฉ - openpilot ๅดฉๆฝฐไบ† ๐Ÿ’ฉ - openpilot crashed - openpilot ๅดฉๆฝฐไบ† + openpilot ๅทฒ็•ถๆฉŸ Please post the "Error Log" in the FrogPilot Discord! - ่ซ‹ๅœจ FrogPilot Discord ไธŠ็™ผๅธƒใ€Œ้Œฏ่ชคๆ—ฅ่ชŒใ€๏ผ + ่ซ‹ๅœจ FrogPilot Discord ๅผต่ฒผใ€ŒError Logใ€๏ผ + + + openpilot crashed ๐Ÿ’ฉ + openpilot ็•ถๆฉŸไบ† ๐Ÿ’ฉ @@ -4538,15 +4600,15 @@ Want to submit your own animations? Share them in the "custom-themes" channel on Pair your device to your %1 account - ๅฐ‡ๆ‚จ็š„่ฃ็ฝฎ้…ๅฐๅˆฐๆ‚จ็š„ %1 ๅธณๆˆถ + ๅฐ‡ไฝ ็š„่ฃ็ฝฎ้…ๅฐๅˆฐไฝ ็š„ %1 ๅธณๆˆถ Go to https://%1 on your phone - ๅœจไฝ ็š„ๆ‰‹ๆฉŸไธŠๅ‰ๅพ€ https://%1 + ๅœจๆ‰‹ๆฉŸไธŠๅ‰ๅพ€ https://%1 Bookmark %1 to your home screen to use it like an app - ๅฐ‡ %1 ๅŠ ๅ…ฅไธป็•ซ้ขไปฅๅƒๆ‡‰็”จ็จ‹ๅผไธ€ๆจฃไฝฟ็”จ + ๅฐ‡ %1 ๅŠ ๅ…ฅไธป็•ซ้ข๏ผŒๅƒๆ‡‰็”จ็จ‹ๅผไธ€ๆจฃไฝฟ็”จ @@ -4647,12 +4709,12 @@ Want to submit your own animations? Share them in the "custom-themes" channel on ็พๅœจ - FrogPilot - FrogPilot + Restore + ้‚„ๅŽŸ - Restore - ๆขๅพฉ + FrogPilot + FrogPilot @@ -4700,11 +4762,11 @@ This may take up to a minute. ScreenRecorder RECORDING - ้Œ„้Ÿณ + ้Œ„่ฃฝไธญ RECORD - ่จ˜้Œ„ + ่จ˜้Œ„ @@ -4727,35 +4789,35 @@ This may take up to a minute. โ† Back - โ† ่ฟ”ๅ›ž + โ† ่ฟ”ๅ›ž FrogPilot - FrogPilot - - - Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ๆญก่ฟŽไพ†ๅˆฐFrogPilot๏ผ็”ฑๆ–ผๆ‚จๆ˜ฏFrogPilot็š„ๆ–ฐ็”จๆˆถ๏ผŒๅทฒๆ‡‰็”จใ€ŒMinimalใ€ๅˆ‡ๆ›้ ่จญ๏ผŒไฝ†ๆ‚จๅฏไปฅ้šจๆ™‚้€š้Žใ€ŒTuning Levelใ€ๆŒ‰้ˆ•้€ฒ่กŒๆ›ดๆ”น๏ผ - - - Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ็”ฑๆ–ผๆ‚จๅฐ FrogPilot ้‚„ๆฏ”่ผƒ้™Œ็”Ÿ๏ผŒๅทฒ็ถ“ๆ‡‰็”จใ€ŒMinimalใ€ๅˆ‡ๆ›้ ่จญ๏ผŒไฝ†ๆ‚จๅฏไปฅ้šจๆ™‚้€š้Žใ€ŒTuning Levelใ€ๆŒ‰้ˆ•้€ฒ่กŒๆ›ดๆ”น๏ผ - - - Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ็”ฑๆ–ผๆ‚จๅฐ openpilot ๆœ‰็ถ“้ฉ—๏ผŒๅทฒๆ‡‰็”จใ€Œๆจ™ๆบ–ใ€ๅˆ‡ๆ›้ ่จญ๏ผŒไฝ†ๆ‚จๅฏไปฅ้šจๆ™‚้€š้Žใ€Œ่ชฟๆ•ด็ดšๅˆฅใ€ๆŒ‰้ˆ•้€ฒ่กŒๆ›ดๆ”น๏ผ - - - Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ็”ฑๆ–ผๆ‚จๅฐFrogPilotๆœ‰็ถ“้ฉ—๏ผŒๅทฒ็ถ“ๆ‡‰็”จไบ†ใ€Œๆจ™ๆบ–ใ€ๅˆ‡ๆ›้ ่จญ๏ผŒไฝ†ๆ‚จๅฏไปฅ้šจๆ™‚้€š้Žใ€Œ่ชฟๆ•ด็ดšๅˆฅใ€ๆŒ‰้ˆ•้€ฒ่กŒๆ›ดๆ”น๏ผ - - - Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ็”ฑๆ–ผๆ‚จๅฐFrogPilot้žๅธธๆœ‰็ถ“้ฉ—๏ผŒๅทฒ็ถ“ๆ‡‰็”จไบ†ใ€Œ้€ฒ้šŽใ€ๅˆ‡ๆ›้ ่จญ๏ผŒไฝ†ๆ‚จๅฏไปฅ้šจๆ™‚้€š้Žใ€Œ่ชฟๆ•ด็ดšๅˆฅใ€ๆŒ‰้ˆ•้€ฒ่กŒๆ›ดๆ”น๏ผ + FrogPilot Welcome to FrogPilot! Since you're new to openpilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! - ๆญก่ฟŽไพ†ๅˆฐFrogPilot๏ผ็”ฑๆ–ผๆ‚จๆ˜ฏopenpilot็š„ๆ–ฐๆ‰‹๏ผŒๅทฒๆ‡‰็”จใ€ŒMinimalใ€ๅˆ‡ๆ›้ ่จญ๏ผŒไฝ†ๆ‚จๅฏไปฅ้šจๆ™‚้€š้Žใ€ŒTuning Levelใ€ๆŒ‰้ˆ•้€ฒ่กŒๆ›ดๆ”น๏ผ + ๆญก่ฟŽไฝฟ็”จ FrogPilot๏ผ็”ฑๆ–ผไฝ ๆ˜ฏ openpilot ๆ–ฐๆ‰‹๏ผŒๅทฒๅฅ—็”จใ€Œๆœ€ๅฐๅŒ–ใ€ๅˆ‡ๆ›้ ่จญ๏ผŒไฝ ๅฏ้šจๆ™‚้€้Žใ€Œ่ชฟๆ ก็ญ‰็ดšใ€ๆŒ‰้ˆ•ๆ›ดๆ”น๏ผ + + + Welcome to FrogPilot! Since you're new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + ๆญก่ฟŽไฝฟ็”จ FrogPilot๏ผ็”ฑๆ–ผๆ‚จๆ˜ฏ็ฌฌไธ€ๆฌกไฝฟ็”จ FrogPilot๏ผŒๅทฒๅฅ—็”จใ€Œ็ฒพ็ฐกใ€ๅˆ‡ๆ›้ ่จญๅ€ผ๏ผŒไฝ†ๆ‚จๅฏ้šจๆ™‚้€้Žใ€Œ่ชฟๆ ก็ญ‰็ดšใ€ๆŒ‰้ˆ•้€ฒ่กŒๆ›ดๆ”น๏ผ + + + Since you're fairly new to FrogPilot, the "Minimal" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + ็”ฑๆ–ผไฝ ๅฐ FrogPilot ้‚„ไธ็†Ÿๆ‚‰๏ผŒๅทฒๅฅ—็”จใ€Œๆœ€็ฒพ็ฐกใ€ๅˆ‡ๆ›้ ่จญ๏ผŒไฝ ๅฏ้šจๆ™‚้€้Žใ€Œ่ชฟๆ ก็ญ‰็ดšใ€ๆŒ‰้ˆ•ๆ›ดๆ”น๏ผ + + + Since you're experienced with openpilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + ็”ฑๆ–ผไฝ ็†Ÿๆ‚‰ openpilot๏ผŒๅทฒๅฅ—็”จใ€Œๆจ™ๆบ–ใ€ๅˆ‡ๆ›้ ่จญ๏ผ›ไฝ ๅฏ้šจๆ™‚้€้Žใ€Œ่ชฟๆ ก็ญ‰็ดšใ€ๆŒ‰้ˆ•่ฎŠๆ›ด๏ผ + + + Since you're experienced with FrogPilot, the "Standard" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + ็”ฑๆ–ผไฝ ็†Ÿๆ‚‰ FrogPilot๏ผŒๅทฒๅฅ—็”จใ€Œๆจ™ๆบ–ใ€ๅˆ‡ๆ›้ ่จญ๏ผ›ไฝ ๅฏ้šจๆ™‚้€้Žใ€Œ่ชฟๆ ก็ญ‰็ดšใ€ๆŒ‰้ˆ•ๆ›ดๆ”น๏ผ + + + Since you're very experienced with FrogPilot, the "Advanced" toggle preset has been applied, but you can change this at any time via the "Tuning Level" button! + ็”ฑๆ–ผไฝ ๅฐ FrogPilot ็ถ“้ฉ—่ฑๅฏŒ๏ผŒๅทฒๅฅ—็”จใ€Œ้€ฒ้šŽใ€ๅˆ‡ๆ›้ ่จญ๏ผ›ไฝ ๅฏ้šจๆ™‚้€้Žใ€Œ่ชฟๆ ก็ญ‰็ดšใ€ๆŒ‰้ˆ•่ฎŠๆ›ด๏ผ @@ -4869,7 +4931,7 @@ This may take up to a minute. Pair your device with Konik connect (stable.konik.ai). - ๅฐ‡ๆ‚จ็š„่จญๅ‚™่ˆ‡ Konik connect ้…ๅฐ (stable.konik.ai)ใ€‚ + ๅฐ‡ไฝ ็š„่ฃ็ฝฎ่ˆ‡ Konik connect๏ผˆstable.konik.ai๏ผ‰้…ๅฐใ€‚ @@ -4956,27 +5018,27 @@ This may take up to a minute. GPU - GPU + GPU CPU - CPU + CPU GB - GB + GB MEMORY - ่จ˜ๆ†ถ้ซ” + ่จ˜ๆ†ถ้ซ” LEFT - ๅทฆ + ๅทฆๅด USED - ๅทฒไฝฟ็”จ + ๅทฒไฝฟ็”จ @@ -5051,39 +5113,39 @@ This may take up to a minute. Updates are only downloaded while the car is off or in park. - ๆ›ดๆ–ฐๅƒ…ๅœจ่ปŠ่ผ›็†„็ซๆˆ–ๅœ่ปŠๆ™‚ไธ‹่ผ‰ใ€‚ + ๅƒ…ๅœจ่ปŠ่ผ›็†„็ซๆˆ–ๅœๅœจ้ง่ปŠๆช”ๆ™‚ไธ‹่ผ‰ๆ›ดๆ–ฐใ€‚ Automatically Update FrogPilot - ่‡ชๅ‹•ๆ›ดๆ–ฐFrogPilot - - - Error Log - ้Œฏ่ชคๆ—ฅ่ชŒ - - - VIEW - ๆชข่ฆ– - - - View the error log for openpilot crashes. - ๆŸฅ็œ‹openpilotๅดฉๆฝฐ็š„้Œฏ่ชคๆ—ฅ่ชŒใ€‚ - - - Do you want to delete deep storage FrogPilot assets? This includes your toggle settings for quick reinstalls. - ๆ‚จๆ˜ฏๅฆ่ฆๅˆช้™คๆทฑๅบฆๅญ˜ๅ„ฒ็š„FrogPilot่ณ‡็”ข๏ผŸ้€™ๅŒ…ๆ‹ฌๆ‚จ็š„ๅฟซ้€Ÿ้‡ๆ–ฐๅฎ‰่ฃๅˆ‡ๆ›่จญ็ฝฎใ€‚ - - - Are you sure? This is 100% unrecoverable and if you reinstall FrogPilot you'll lose all your previous settings! - ไฝ ็ขบๅฎšๅ—Ž๏ผŸ้€™ๆ˜ฏ100%็„กๆณ•ๆขๅพฉ็š„๏ผŒๅฆ‚ๆžœไฝ ้‡ๆ–ฐๅฎ‰่ฃFrogPilot๏ผŒไฝ ๅฐ‡ๅคฑๅŽปๆ‰€ๆœ‰ไน‹ๅ‰็š„่จญๅฎš๏ผ - - - This branch must be downloaded before switching. Would you like to download it now? - ๅœจๅˆ‡ๆ›ไน‹ๅ‰ๅฟ…้ ˆไธ‹่ผ‰ๆญคๅˆ†ๆ”ฏใ€‚ๆ‚จ็พๅœจ่ฆไธ‹่ผ‰ๅ—Ž๏ผŸ + ่‡ชๅ‹•ๆ›ดๆ–ฐ FrogPilot FrogPilot will automatically update itself and it's assets when you're offroad and have an active internet connection. - FrogPilot ๆœƒๅœจๆ‚จ้›ข็ทšไธ”ๆœ‰ๆœ‰ๆ•ˆ็š„็ถฒ่ทฏ้€ฃ็ทšๆ™‚่‡ชๅ‹•ๆ›ดๆ–ฐ่‡ช่บซๅŠๅ…ถ่ณ‡็”ขใ€‚ + ็•ถๆ‚จ้›ข็ทšไธฆๅ…ทๆœ‰ๆœ‰ๆ•ˆ็š„็ถฒ่ทฏ้€ฃ็ทšๆ™‚๏ผŒFrogPilot ๆœƒ่‡ชๅ‹•ๆ›ดๆ–ฐ่‡ช่บซๅŠๅ…ถ่ณ‡็”ขใ€‚ + + + This branch must be downloaded before switching. Would you like to download it now? + ๅœจๅˆ‡ๆ›ๅ‰ๅฟ…้ ˆๅ…ˆไธ‹่ผ‰ๆญคๅˆ†ๆ”ฏใ€‚็พๅœจ่ฆไธ‹่ผ‰ๅ—Ž๏ผŸ + + + Error Log + ้Œฏ่ชค่จ˜้Œ„ + + + VIEW + ๆชข่ฆ– + + + View the error log for openpilot crashes. + ๆชข่ฆ– openpilot ็•ถๆฉŸ็š„้Œฏ่ชคๆ—ฅ่ชŒใ€‚ + + + Do you want to perform a full factory reset? All saved assets and settings will be permanently deleted! + ๆ‚จ่ฆๅŸท่กŒๅฎŒๆ•ด็š„ๅ‡บๅป ้‡็ฝฎๅ—Ž๏ผŸๆ‰€ๆœ‰ๅทฒๅ„ฒๅญ˜็š„่ณ‡็”ขๅ’Œ่จญๅฎšๅฐ‡่ขซๆฐธไน…ๅˆช้™ค๏ผ + + + This is a complete factory reset and cannot be undone. Are you absolutely sure you want to continue? + ้€™ๆ˜ฏๅฎŒๆ•ด็š„ๅ‡บๅป ้‡่จญ๏ผŒไธ”็„กๆณ•ๅพฉๅŽŸใ€‚ไฝ ็ขบๅฎš่ฆ็นผ็บŒๅ—Ž๏ผŸ @@ -5337,11 +5399,11 @@ This may take up to a minute. Uploading disabled - ไธŠๅ‚ณๅทฒๅœ็”จ + ๅทฒๅœ็”จไธŠๅ‚ณ Toggle off the "Turn Off Data Uploads" toggle to re-enable uploads. - ๅฐ‡ใ€Œ้—œ้–‰ๆ•ธๆ“šไธŠๅ‚ณใ€ๅˆ‡ๆ›้—œ้–‰ไปฅ้‡ๆ–ฐๅ•Ÿ็”จไธŠๅ‚ณใ€‚ + ๅฐ‡ใ€Œ้—œ้–‰่ณ‡ๆ–™ไธŠๅ‚ณใ€ๅˆ‡ๆ›้–‹้—œ้—œ้–‰ไปฅ้‡ๆ–ฐๅ•Ÿ็”จไธŠๅ‚ณใ€‚ diff --git a/selfdrive/ui/ui.cc b/selfdrive/ui/ui.cc index bd3dddc73..be6941089 100644 --- a/selfdrive/ui/ui.cc +++ b/selfdrive/ui/ui.cc @@ -45,8 +45,8 @@ int get_path_length_idx(const cereal::XYZTData::Reader &line, const float path_h } void update_leads(UIState *s, const cereal::RadarState::Reader &radar_state, const cereal::XYZTData::Reader &line) { - for (int i = 0; i < 4; ++i) { - auto lead_data = (i == 0) ? radar_state.getLeadOne() : (i == 1) ? radar_state.getLeadTwo() : (i == 2) ? radar_state.getLeadLeft() : radar_state.getLeadRight(); + for (int i = 0; i < 2; ++i) { + const auto &lead_data = (i == 0) ? radar_state.getLeadOne() : radar_state.getLeadTwo(); if (lead_data.getStatus()) { float z = line.getZ()[get_path_length_idx(line, lead_data.getDRel())]; calib_frame_to_full_frame(s, lead_data.getDRel(), -lead_data.getYRel(), z + 1.22, &s->scene.lead_vertices[i]); @@ -54,6 +54,16 @@ void update_leads(UIState *s, const cereal::RadarState::Reader &radar_state, con } } +void update_leads_frogpilot(UIState *s, FrogPilotUIState *fs, const cereal::FrogPilotRadarState::Reader &frogpilot_radar_state, const cereal::XYZTData::Reader &line) { + for (int i = 0; i < 2; ++i) { + auto lead_data = (i == 0) ? frogpilot_radar_state.getLeadLeft() : frogpilot_radar_state.getLeadRight(); + if (lead_data.getStatus()) { + float z = line.getZ()[get_path_length_idx(line, lead_data.getDRel())]; + calib_frame_to_full_frame(s, lead_data.getDRel(), -lead_data.getYRel(), z + 1.22, &fs->frogpilot_scene.lead_vertices[i]); + } + } +} + void update_radar_tracks(capnp::List::Reader &tracks_msg, cereal::XYZTData::Reader line, const UIState &s, const SubMaster &sm) { FrogPilotUIState *fs = frogpilotUIState(); FrogPilotUIScene &frogpilot_scene = fs->frogpilot_scene; diff --git a/selfdrive/ui/ui.h b/selfdrive/ui/ui.h index d2a5b97a7..e20c1af2a 100644 --- a/selfdrive/ui/ui.h +++ b/selfdrive/ui/ui.h @@ -102,7 +102,7 @@ typedef struct UIScene { QPolygonF road_edge_vertices[2]; // lead - QPointF lead_vertices[4]; + QPointF lead_vertices[2]; // DMoji state float driver_pose_vals[3]; @@ -210,4 +210,5 @@ void update_line_data(const UIState *s, const cereal::XYZTData::Reader &line, float y_off, float z_off, QPolygonF *pvd, int max_idx, bool allow_invert); // FrogPilot variables +void update_leads_frogpilot(UIState *s, FrogPilotUIState *fs, const cereal::FrogPilotRadarState::Reader &frogpilot_radar_state, const cereal::XYZTData::Reader &line); void update_radar_tracks(capnp::List::Reader &tracks_msg, cereal::XYZTData::Reader line, const UIState &s, const SubMaster &sm); diff --git a/system/manager/manager.py b/system/manager/manager.py index 15d7bd36f..a2a26b444 100755 --- a/system/manager/manager.py +++ b/system/manager/manager.py @@ -19,7 +19,7 @@ from openpilot.common.swaglog import cloudlog, add_file_handler from openpilot.system.version import get_build_metadata, terms_version, training_version from openpilot.frogpilot.common.frogpilot_functions import convert_params, frogpilot_boot_functions, setup_frogpilot, uninstall_frogpilot -from openpilot.frogpilot.common.frogpilot_variables import frogpilot_default_params, get_frogpilot_toggles, params_cache, params_memory +from openpilot.frogpilot.common.frogpilot_variables import EXCLUDED_KEYS, frogpilot_default_params, get_frogpilot_toggles, params_cache, params_memory def manager_init() -> None: @@ -57,6 +57,9 @@ def manager_init() -> None: reset_toggles = params.get_bool("DoToggleReset") reset_toggles_stock = params.get_bool("DoToggleResetStock") for k, v, stock in [(k, v, v) for k, v in default_params] + [(k, v, stock) for k, v, _, stock in frogpilot_default_params]: + if (reset_toggles or reset_toggles_stock) and k in EXCLUDED_KEYS: + continue + if params.get(k) is None or reset_toggles or reset_toggles_stock: if params_cache.get(k) is None or reset_toggles or reset_toggles_stock: params.put(k, v if not reset_toggles_stock else stock) @@ -165,7 +168,8 @@ def manager_thread() -> None: started = sm['deviceState'].started if started and not started_prev: - params.clear_all(ParamKeyType.CLEAR_ON_ONROAD_TRANSITION) + if not frogpilot_toggles.force_onroad: + params.clear_all(ParamKeyType.CLEAR_ON_ONROAD_TRANSITION) # FrogPilot variables frogpilot_toggles = get_frogpilot_toggles() diff --git a/system/sentry.py b/system/sentry.py index f781130e0..ae7b37a00 100644 --- a/system/sentry.py +++ b/system/sentry.py @@ -7,7 +7,6 @@ from enum import Enum from sentry_sdk.integrations.threading import ThreadingIntegration from openpilot.common.params import Params -from openpilot.system.athena.registration import is_registered_device from openpilot.system.hardware import HARDWARE, PC from openpilot.common.swaglog import cloudlog from openpilot.system.version import get_build_metadata, get_version @@ -31,6 +30,12 @@ def report_tombstone(fn: str, message: str, contents: str) -> None: sentry_sdk.flush() +def capture_block(): + with sentry_sdk.push_scope() as scope: + sentry_sdk.capture_message("Blocked user from using the development branch", level='info') + sentry_sdk.flush() + + def capture_exception(*args, crash_log=True, **kwargs) -> None: exc_text = traceback.format_exc() diff --git a/system/updated/updated.py b/system/updated/updated.py index eda5f3317..0a719162b 100644 --- a/system/updated/updated.py +++ b/system/updated/updated.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -import gc import os import re import datetime @@ -60,9 +59,7 @@ class WaitTimeHelper: self.user_request = UserRequest.CHECK self.ready_event.set() - def sleep(self, t: float, has_internet: bool = False) -> None: - if not has_internet: - gc.collect() + def sleep(self, t: float) -> None: self.ready_event.wait(timeout=t) def write_time_to_param(params, param) -> None: @@ -183,15 +180,10 @@ def init_overlay() -> None: cloudlog.info(f"git diff output:\n{git_diff}") -def finalize_update(manual_update_requested, params, frogpilot_toggles) -> None: +def finalize_update(params) -> None: """Take the current OverlayFS merged view and finalize a copy outside of OverlayFS, ready to be swapped-in at BASEDIR. Copy using shutil.copytree""" - while params_memory.get_bool("IsOnroad") and not manual_update_requested and not frogpilot_toggles.frogs_go_moo: - time.sleep(5) - - params.put("UpdaterState", "finalizing update...") - # Remove the update ready flag and any old updates cloudlog.info("creating finalized version of the overlay") set_consistent_flag(False) @@ -204,14 +196,15 @@ def finalize_update(manual_update_requested, params, frogpilot_toggles) -> None: run(["git", "reset", "--hard"], FINALIZED) run(["git", "submodule", "foreach", "--recursive", "git", "reset", "--hard"], FINALIZED) - cloudlog.info("Starting git cleanup in finalized update") - t = time.monotonic() - try: - run(["git", "gc"], FINALIZED) - run(["git", "lfs", "prune"], FINALIZED) - cloudlog.event("Done git cleanup", duration=time.monotonic() - t) - except subprocess.CalledProcessError: - cloudlog.exception(f"Failed git cleanup, took {time.monotonic() - t:.3f} s") + if params.get_bool("IsOffroad"): + cloudlog.info("Starting git cleanup in finalized update") + t = time.monotonic() + try: + run(["git", "gc"], FINALIZED) + run(["git", "lfs", "prune"], FINALIZED) + cloudlog.event("Done git cleanup", duration=time.monotonic() - t) + except subprocess.CalledProcessError: + cloudlog.exception(f"Failed git cleanup, took {time.monotonic() - t:.3f} s") if os.path.isfile(BACKUP_PATH): os.remove(BACKUP_PATH) @@ -285,7 +278,7 @@ class Updater: def get_commit_hash(self, path: str = OVERLAY_MERGED) -> str: return run(["git", "rev-parse", "HEAD"], path).rstrip() - def set_params(self, update_success: bool, failed_count: int, exception: str | None, frogpilot_toggles: None) -> None: + def set_params(self, update_success: bool, failed_count: int, exception: str | None) -> None: self.params.put("UpdateFailedCount", str(failed_count)) self.params.put("UpdaterTargetBranch", self.target_branch) @@ -384,7 +377,7 @@ class Updater: else: cloudlog.info(f"up to date on {cur_branch} ({str(cur_commit)[:7]})") - def fetch_update(self, manual_update_requested, frogpilot_toggles) -> None: + def fetch_update(self) -> None: cloudlog.info("attempting git fetch inside staging overlay") self.params.put("UpdaterState", "downloading...") @@ -416,13 +409,11 @@ class Updater: handle_agnos_update() # Create the finalized, ready-to-swap update - if params_memory.get_bool("IsOnroad") and not manual_update_requested and not frogpilot_toggles.frogs_go_moo: - self.params.put("UpdaterState", "waiting for vehicle to go offroad...") - finalize_update(manual_update_requested, self.params, frogpilot_toggles) + self.params.put("UpdaterState", "finalizing update...") + finalize_update(self.params) cloudlog.info("finalize success!") - # Format "Updated" to Phoenix time zone - self.params.put("Updated", datetime.datetime.now().astimezone(ZoneInfo('America/Phoenix')).strftime("%B %d, %Y - %I:%M%p").encode('utf8')) + self.params.put("Updated", datetime.datetime.now().astimezone(ZoneInfo('America/Phoenix')).strftime("%B %d, %Y - %I:%M%p")) def main() -> None: params = Params() @@ -456,19 +447,16 @@ def main() -> None: first_run = True # FrogPilot variables - frogpilot_toggles = get_frogpilot_toggles() - install_date_set = params.get("InstallDate", encoding='utf-8') is not None and params.get("Updated", encoding='utf-8') is not None + frogpilot_toggles = get_frogpilot_toggles() + while True: wait_helper.ready_event.clear() frogpilot_toggles = get_frogpilot_toggles() manual_update_requested = params_memory.get_bool("ManualUpdateInitiated") - - wait_helper.sleep(1) - params_memory.remove("ManualUpdateInitiated") # Attempt an update @@ -478,7 +466,7 @@ def main() -> None: init_overlay() # ensure we have some params written soon after startup - updater.set_params(False, update_failed_count, exception, frogpilot_toggles) + updater.set_params(False, update_failed_count, exception) if not system_time_valid() or first_run: first_run = False @@ -487,7 +475,7 @@ def main() -> None: # Format "InstallDate" to Phoenix time zone if not install_date_set: - params.put("InstallDate", datetime.datetime.now().astimezone(ZoneInfo('America/Phoenix')).strftime("%B %d, %Y - %I:%M%p").encode('utf8')) + params.put("InstallDate", datetime.datetime.now().astimezone(ZoneInfo('America/Phoenix')).strftime("%B %d, %Y - %I:%M%p")) install_date_set = True update_failed_count += 1 @@ -506,7 +494,7 @@ def main() -> None: elif wait_helper.user_request == UserRequest.CHECK: cloudlog.info("skipping fetch, only checking") else: - updater.fetch_update(manual_update_requested, frogpilot_toggles) + updater.fetch_update() write_time_to_param(params, "UpdaterLastFetchTime") update_failed_count = 0 except subprocess.CalledProcessError as e: @@ -526,13 +514,20 @@ def main() -> None: try: params.put("UpdaterState", "idle") update_successful = (update_failed_count == 0) - updater.set_params(update_successful, update_failed_count, exception, frogpilot_toggles) + updater.set_params(update_successful, update_failed_count, exception) except Exception: cloudlog.exception("uncaught updated exception while setting params, shouldn't happen") # infrequent attempts if we successfully updated recently wait_helper.user_request = UserRequest.NONE - wait_helper.sleep(5*60 if update_failed_count > 0 and updater.has_internet else 1.5*60*60, updater.has_internet) + if not frogpilot_toggles.automatic_updates: + delay = 60 * 60 * 24 * 365 * 100 + else: + if update_failed_count > 0 and updater.has_internet: + delay = 5 * 60 + else: + delay = 1.5 * 60 * 60 + wait_helper.sleep(delay) if __name__ == "__main__": diff --git a/tinygrad_repo/.github/actions/setup-tinygrad/action.yml b/tinygrad_repo/.github/actions/setup-tinygrad/action.yml index f2261e306..fd5677a97 100644 --- a/tinygrad_repo/.github/actions/setup-tinygrad/action.yml +++ b/tinygrad_repo/.github/actions/setup-tinygrad/action.yml @@ -112,6 +112,15 @@ runs: fi # ******************* apt ******************* + - name: Setup apt + if: runner.os == 'Linux' && (inputs.opencl == 'true' || inputs.amd == 'true' || inputs.cuda == 'true' || inputs.webgpu == 'true' || inputs.llvm == 'true') + shell: bash + run: | + sudo chown -R $USER:$USER /var/cache/apt/archives + + echo 'Acquire::GzipIndexes "true";' | sudo tee /etc/apt/apt.conf.d/gzip + echo 'Acquire::http::Pipeline-Depth "5";' | sudo tee -a /etc/apt/apt.conf.d/99parallel + echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' | sudo tee -a /etc/apt/apt.conf.d/99keep-debs - name: Add OpenCL Repo if: inputs.opencl == 'true' && runner.os == 'Linux' @@ -135,14 +144,11 @@ runs: wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc echo "deb http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-20 main" | sudo tee /etc/apt/sources.list.d/llvm.list - - name: apt-get update + install + - name: Compute Package List + Hash if: runner.os == 'Linux' && (inputs.opencl == 'true' || inputs.amd == 'true' || inputs.cuda == 'true' || inputs.webgpu == 'true' || inputs.llvm == 'true') + id: apt-pkgs shell: bash run: | - echo 'Acquire::GzipIndexes "true";' | sudo tee /etc/apt/apt.conf.d/gzip - echo 'Acquire::http::Pipeline-Depth "5";' | sudo tee -a /etc/apt/apt.conf.d/99parallel - sudo apt -qq update || true - pkgs="" # **** OpenCL **** if [[ "${{ inputs.opencl }}" == "true" ]]; then @@ -153,7 +159,7 @@ runs: fi # **** AMD **** if [[ "${{ inputs.amd }}" == "true" ]]; then - pkgs+=" hsa-rocr comgr hsa-rocr-dev liburing-dev libc6-dev" + pkgs+=" hsa-rocr comgr hsa-rocr-dev liburing-dev libibverbs-dev libc6-dev" fi # **** CUDA **** if [[ "${{ inputs.cuda }}" == "true" ]]; then @@ -169,13 +175,30 @@ runs: pkgs+=" libllvm20 clang-20 lld-20" fi + echo "pkgs=$pkgs" >> "$GITHUB_OUTPUT" + echo "hash=$(echo -n "$pkgs" | sha256sum | cut -d' ' -f1)" >> "$GITHUB_OUTPUT" + + - name: Cache apt + if: runner.os == 'Linux' && (inputs.opencl == 'true' || inputs.amd == 'true' || inputs.cuda == 'true' || inputs.webgpu == 'true' || inputs.llvm == 'true') + uses: actions/cache@v4 + with: + path: /var/cache/apt/archives/ + key: ${{ runner.os }}-apt-${{ steps.apt-pkgs.outputs.hash }}-${{ env.APT_CACHE_VERSION }} + + - name: Run apt Update + Install + if: runner.os == 'Linux' && (inputs.opencl == 'true' || inputs.amd == 'true' || inputs.cuda == 'true' || inputs.webgpu == 'true' || inputs.llvm == 'true') + shell: bash + run: | + sudo apt -qq update || true + # ******** do install ******** - if [[ -n "$pkgs" ]]; then - sudo apt-get -y --allow-unauthenticated --no-install-recommends install $pkgs + if [[ -n "${{ steps.apt-pkgs.outputs.pkgs }}" ]]; then + sudo apt-get -y --allow-unauthenticated --no-install-recommends install ${{ steps.apt-pkgs.outputs.pkgs }} fi - # **** AMD **** + sudo chown -R $USER:$USER /var/cache/apt/archives/ + # **** AMD **** - name: Setup AMD (Linux) if: inputs.amd == 'true' && runner.os == 'Linux' shell: bash @@ -202,16 +225,25 @@ runs: - name: Install gpuocelot dependencies (MacOS) if: inputs.ocelot == 'true' && runner.os == 'macOS' shell: bash - run: brew install --quiet cmake ninja llvm@15 zlib glew flex bison boost zstd ncurses + run: | + pkgs=(cmake ninja llvm@15 zlib glew flex bison boost@1.85 zstd ncurses) + for f in "${pkgs[@]}"; do + brew ls --versions "$f" >/dev/null 2>&1 || brew install --quiet "$f" + done + + # Fix boost 1.85 for gpuocelot + ln -s /opt/homebrew/opt/boost@1.85 /opt/homebrew/opt/boost || true + ln -s /opt/homebrew/opt/boost/lib/libboost_atomic-mt.dylib /opt/homebrew/opt/boost/lib/libboost_atomic.dylib || true + ln -s /opt/homebrew/opt/boost/lib/libboost_thread-mt.dylib /opt/homebrew/opt/boost/lib/libboost_thread.dylib || true - name: Cache gpuocelot if: inputs.ocelot == 'true' id: cache-build uses: actions/cache@v4 env: - cache-name: cache-gpuocelot-build + cache-name: cache-gpuocelot-build-1 with: path: ${{ github.workspace }}/gpuocelot/ocelot - key: ${{ runner.os }}-gpuocelot-b16039dc940dc6bc4ea0a98380495769ff35ed99-rebuild-0 + key: ${{ runner.os }}-gpuocelot-b16039dc940dc6bc4ea0a98380495769ff35ed99-rebuild-${{ env.BUILD_CACHE_VERSION }} - name: Clone/compile gpuocelot if: inputs.ocelot == 'true' && steps.cache-build.outputs.cache-hit != 'true' shell: bash @@ -221,14 +253,15 @@ runs: git checkout b16039dc940dc6bc4ea0a98380495769ff35ed99 mkdir build cd build - cmake .. -Wno-dev -G Ninja -DOCELOT_BUILD_TOOLS=OFF -DCMAKE_BUILD_ALWAYS=0 -DBUILD_TESTS_CUDA=OFF -DCMAKE_POLICY_VERSION_MINIMUM=3.5 + cmake .. -Wno-dev -G Ninja -DOCELOT_BUILD_TOOLS=OFF -DCMAKE_BUILD_ALWAYS=0 -DBUILD_TESTS_CUDA=OFF \ + -DBoost_INCLUDE_DIR=$(brew --prefix boost)/include -DBoost_LIBRARY_DIR=$(brew --prefix boost)/lib -DCMAKE_POLICY_VERSION_MINIMUM=3.5 ninja - name: Install gpuocelot if: inputs.ocelot == 'true' shell: bash run: | cd ${{ github.workspace }}/gpuocelot/ocelot/build - sudo cp libgpuocelot.${{ runner.os == 'macOS' && 'dylib' || 'so' }} /usr/${{ย runner.os == 'macOS' && 'local/' || ''}}lib/ + sudo cp libgpuocelot.${{ runner.os == 'macOS' && 'dylib' || 'so' }} /usr/${{ runner.os == 'macOS' && 'local/' || '' }}lib/ # **** WebGPU **** diff --git a/tinygrad_repo/.github/workflows/benchmark.yml b/tinygrad_repo/.github/workflows/benchmark.yml new file mode 100644 index 000000000..d01bb6931 --- /dev/null +++ b/tinygrad_repo/.github/workflows/benchmark.yml @@ -0,0 +1,766 @@ +name: Benchmarks +env: + # TODO: this rescheduling makes gpt2, mixtral and llama unjitted slower + # TODO: very slow for llama 70B and resnet training 6 GPU + CAPTURE_PROCESS_REPLAY: "1" + ASSERT_PROCESS_REPLAY: "0" + PYTHONPATH: . + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +on: + push: + branches: + - master + - update_benchmark + - update_benchmark_staging + workflow_dispatch: + inputs: + run_process_replay: + description: "Run process replay tests" + required: false + default: false + type: boolean + +jobs: + testmacbenchmark: + name: Mac Benchmark + env: + # since sudo is required for usbgpu on macos, move the cache to a new location, as some of the files are owned by root + PYTHONPYCACHEPREFIX: /tmp/tiny_python_pycache + runs-on: [self-hosted, macOS] + timeout-minutes: 20 + defaults: + run: + shell: bash -e -o pipefail {0} + if: github.repository_owner == 'tinygrad' + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Symlink models and datasets + run: | + mkdir -p weights + ln -s ~/tinygrad/extra/disassemblers/applegpu extra/disassemblers/applegpu + ln -s ~/tinygrad/weights/sd-v1-4.ckpt weights/sd-v1-4.ckpt + ln -s ~/tinygrad/weights/bpe_simple_vocab_16e6.txt.gz weights/bpe_simple_vocab_16e6.txt.gz + ln -s ~/tinygrad/weights/LLaMA weights/LLaMA + ln -s ~/tinygrad/extra/datasets/cifar-10-python.tar.gz extra/datasets/cifar-10-python.tar.gz + - name: setup staging db + if: github.ref == 'refs/heads/update_benchmark_staging' + run: | + echo "CACHEDB=/tmp/staging.db" >> $GITHUB_ENV + rm -f /tmp/staging.db /tmp/staging.db-shm /tmp/staging.db-wal + - name: reset process replay + run: python3.11 test/external/process_replay/reset.py + - name: Run Stable Diffusion + run: BENCHMARK_LOG=stable_diffusion JIT=1 python3.11 examples/stable_diffusion.py --fp16 --seed 0 --noshow --timing | tee sd.txt + - name: Run Stable Diffusion without fp16 + run: BENCHMARK_LOG=stable_diffusion_fp32 JIT=1 python3.11 examples/stable_diffusion.py --seed 0 --noshow --timing | tee sd_no_fp16.txt + - name: Run Stable Diffusion v2 + run: BENCHMARK_LOG=stable_diffusion_v2 JIT=1 python3.11 examples/sdv2.py --fp16 --seed 0 --noshow --timing | tee sdv2.txt + # process replay can't capture this, the graph is too large + - name: Run SDXL + run: BENCHMARK_LOG=stable_diffusion_xl CAPTURE_PROCESS_REPLAY=0 JIT=1 python3.11 examples/sdxl.py --seed 0 --noshow --timing | tee sdxl.txt + - name: Run model inference benchmark + run: METAL=1 python3.11 test/external/external_model_benchmark.py + - name: Test speed vs torch + run: BIG=2 MPS=1 python3.11 test/speed/external_test_speed_v_torch.py | tee torch_speed.txt + - name: Test tensor cores + run: METAL=1 python3.11 test/test_linearizer.py TestLinearizer.test_tensor_cores TestLinearizer.test_tensor_cores_padded TestLinearizer.test_tensor_cores_padded_uops + - name: Test AMX tensor cores + run: | + DEBUG=2 CPU=1 AMX=1 python3.11 test/test_linearizer.py TestLinearizer.test_tensor_cores TestLinearizer.test_tensor_cores_padded TestLinearizer.test_tensor_cores_padded_uops TestFloat4.test_float4_multidim_amx TestFloat4.test_float4_multidim_unaligned_load_amx + DEBUG=2 LLVM=1 AMX=1 python3.11 test/test_linearizer.py TestLinearizer.test_tensor_cores TestLinearizer.test_tensor_cores_padded TestLinearizer.test_tensor_cores_padded_uops TestFloat4.test_float4_multidim_amx TestFloat4.test_float4_multidim_unaligned_load_amx + - name: Run Tensor Core GEMM (float) + run: DEBUG=2 SHOULD_USE_TC=1 python3.11 extra/gemm/simple_matmul.py | tee matmul.txt + - name: Run Tensor Core GEMM (half) + run: DEBUG=2 SHOULD_USE_TC=1 HALF=1 python3.11 extra/gemm/simple_matmul.py | tee matmul_half.txt + - name: Run Tensor Core GEMM (bfloat16) + run: DEBUG=2 SHOULD_USE_TC=1 BFLOAT16=1 python3.11 extra/gemm/simple_matmul.py | tee matmul_bfloat16.txt + - name: Fuzz Padded Tensor Core GEMM + run: METAL=1 M_START=6 M_STOP=10 M_STEP=1 N_START=6 N_STOP=10 N_STEP=1 K_START=6 K_STOP=24 K_STEP=1 TC_OPT=2 DEBUG=2 python3.11 ./extra/gemm/fuzz_matmul.py + - name: Run LLaMA + run: | + BENCHMARK_LOG=llama_nojit JIT=0 python3.11 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_unjitted.txt + BENCHMARK_LOG=llama JIT=1 python3.11 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_jitted.txt + - name: Run LLaMA with BEAM + run: BENCHMARK_LOG=llama_beam JITBEAM=2 IGNORE_BEAM_CACHE=1 python3.11 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_beam.txt + - name: Run quantized LLaMA + run: | + BENCHMARK_LOG=llama_int8 python3.11 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing --quantize int8 | tee llama_int8.txt + BENCHMARK_LOG=llama_nf4 python3.11 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing --quantize nf4 | tee llama_nf4.txt + - name: Run quantized LLaMA3 + run: | + BENCHMARK_LOG=llama3_int8 python3.11 examples/llama3.py --size 8B --temperature 0 --benchmark --quantize int8 | tee llama3_int8.txt + BENCHMARK_LOG=llama3_nf4 python3.11 examples/llama3.py --size 8B --temperature 0 --benchmark --quantize nf4 | tee llama3_nf4.txt + #- name: Run LLaMA 7B on 4 (virtual) GPUs + # run: python3.11 examples/llama.py --gen 1 --size 7B --shard 4 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_four_gpu.txt + - name: Run GPT2 + run: | + BENCHMARK_LOG=gpt2_nojit JIT=0 python3.11 examples/gpt2.py --prompt "Hello." --count 10 --temperature 0 --timing | tee gpt2_unjitted.txt + BENCHMARK_LOG=gpt2 JIT=1 python3.11 examples/gpt2.py --prompt "Hello." --count 10 --temperature 0 --timing | tee gpt2_jitted.txt + - name: Run GPT2 w HALF + run: BENCHMARK_LOG=gpt2_half HALF=1 python3.11 examples/gpt2.py --count 10 --temperature 0 --timing | tee gpt2_half.txt + - name: Run GPT2 w HALF/BEAM + run: BENCHMARK_LOG=gpt2_half_beam HALF=1 JITBEAM=2 IGNORE_BEAM_CACHE=1 python3.11 examples/gpt2.py --count 10 --temperature 0 --timing | tee gpt2_half_beam.txt + - name: Run OLMoE + run: BENCHMARK_LOG=olmoe python3.11 examples/olmoe.py + - name: Train MNIST + run: time PYTHONPATH=. TARGET_EVAL_ACC_PCT=96.0 python3.11 examples/beautiful_mnist.py | tee beautiful_mnist.txt + - name: Run 10 CIFAR training steps + run: BENCHMARK_LOG=cifar_10steps JIT=1 STEPS=10 python3.11 examples/hlb_cifar10.py | tee train_cifar.txt + - name: Run 10 CIFAR training steps w HALF + run: BENCHMARK_LOG=cifar_10steps_half JIT=2 STEPS=10 DEFAULT_FLOAT=HALF python3.11 examples/hlb_cifar10.py | tee train_cifar_half.txt + #- name: Run 10 CIFAR training steps w BF16 + # run: STEPS=10 DEFAULT_FLOAT=BFLOAT16 python3.11 examples/hlb_cifar10.py | tee train_cifar_bf16.txt + - name: Run 10 CIFAR training steps w winograd + run: BENCHMARK_LOG=cifar_10steps_wino JIT=1 WINO=1 STEPS=10 python3.11 examples/hlb_cifar10.py | tee train_cifar_wino.txt + - name: UsbGPU boot time + run: sudo -E PYTHONPATH=. DEBUG=2 AM_RESET=1 AMD=1 AMD_IFACE=USB time python3.11 test/test_tiny.py TestTiny.test_plus + - name: UsbGPU tiny tests + run: sudo -E PYTHONPATH=. AMD=1 AMD_IFACE=USB python3.11 test/test_tiny.py + - name: UsbGPU copy speeds + run: sudo -E PYTHONPATH=. AMD=1 AMD_IFACE=USB python3.11 test/external/external_test_usb_asm24.py TestDevCopySpeeds + - name: UsbGPU openpilot test + run: sudo -E PYTHONPATH=. AMD=1 AMD_IFACE=USB NOLOCALS=0 IMAGE=0 GRAPH_ONE_KERNEL=1 python3.11 examples/openpilot/compile3.py https://github.com/commaai/openpilot/raw/9118973ed03c1ae1d40cf69a29507ec2cc78efd7/selfdrive/modeld/models/supercombo.onnx + - uses: actions/upload-artifact@v4 + with: + name: Speed (Mac) + path: | + onnx_inference_speed.csv + torch_speed.txt + llama_unjitted.txt + llama_jitted.txt + llama_beam.txt + llama_int8.txt + llama_nf4.txt + llama3_int8.txt + llama3_nf4.txt + llama_four_gpu.txt + gpt2_unjitted.txt + gpt2_jitted.txt + gpt2_half.txt + gpt2_half_beam.txt + matmul.txt + matmul_half.txt + matmul_bfloat16.txt + sd.txt + sd_no_fp16.txt + sdv2.txt + sdxl.txt + beautiful_mnist.txt + train_cifar.txt + train_cifar_half.txt + train_cifar_bf16.txt + train_cifar_wino.txt + - name: Run process replay tests + run: cp test/external/process_replay/process_replay.py ./process_replay.py && git fetch origin master && git -c advice.detachedHead=false checkout origin/master && PYTHONPATH=. python3.11 process_replay.py + + testnvidiabenchmark: + name: tinybox green Benchmark + runs-on: [self-hosted, Linux, tinyboxgreen] + timeout-minutes: 30 + defaults: + run: + shell: bash -e -o pipefail {0} + if: github.repository_owner == 'tinygrad' + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Print nvidia-smi + run: nvidia-smi + - name: Symlink models and datasets + run: | + mkdir -p weights + ln -s ~/tinygrad/weights/LLaMA weights/LLaMA + ln -s /raid/weights/mixtral-8x7b-32kseqlen weights/mixtral-8x7b-32kseqlen + ln -s /raid/weights/LLaMA-2 weights/LLaMA-2 + ln -s /raid/weights/LLaMA-3 weights/LLaMA-3 + mkdir -p extra/datasets + ln -s /raid/datasets/imagenet extra/datasets/imagenet + - name: setup staging db + if: github.ref == 'refs/heads/update_benchmark_staging' + run: | + echo "CACHEDB=/tmp/staging.db" >> $GITHUB_ENV + rm -f /tmp/staging.db /tmp/staging.db-shm /tmp/staging.db-wal + - name: reset process replay + run: test/external/process_replay/reset.py + - name: Run model inference benchmark + run: NV=1 CAPTURE_PROCESS_REPLAY=0 NOCLANG=1 python3 test/external/external_model_benchmark.py + - name: Test speed vs torch + run: NV=1 CAPTURE_PROCESS_REPLAY=0 HALF=1 BIG=2 TORCHCUDA=1 python3 test/speed/external_test_speed_v_torch.py | tee torch_speed.txt + - name: Test speed vs theoretical + run: NV=1 IGNORE_BEAM_CACHE=1 BEAM_DEBUG=1 DEBUG=1 python -m pytest -rA test/external/speed_v_theoretical.py --durations=20 + - name: Test benchmark allreduce + run: NV=1 python test/external/external_benchmark_multitensor_allreduce.py + - name: Test tensor cores + run: | + NV=1 ALLOW_TF32=1 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores TestLinearizer.test_tensor_cores_padded TestLinearizer.test_tensor_cores_padded_uops + PTX=1 ALLOW_TF32=1 NV=1 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores TestLinearizer.test_tensor_cores_padded TestLinearizer.test_tensor_cores_padded_uops + - name: Run Tensor Core GEMM (CUDA) + run: | + CUDA=1 SHOULD_USE_TC=1 HALF=1 DEBUG=2 python3 extra/gemm/simple_matmul.py | tee matmul.txt + CUDA=1 SHOULD_USE_TC=1 BFLOAT16=1 DEBUG=2 python3 extra/gemm/simple_matmul.py | tee matmul_bfloat16.txt + CUDA=1 SHOULD_USE_TC=1 ALLOW_TF32=1 DEBUG=2 ATOL=2e-2 python3 extra/gemm/simple_matmul.py | tee matmul_tf32.txt + - name: Run Tensor Core GEMM (PTX) + run: NV=1 PTX=1 SHOULD_USE_TC=1 HALF=1 DEBUG=2 python3 extra/gemm/simple_matmul.py | tee matmul_ptx.txt + - name: Run Tensor Core GEMM (NV) + run: NV=1 SHOULD_USE_TC=1 HALF=1 DEBUG=2 python3 extra/gemm/simple_matmul.py | tee matmul_nv.txt + - name: Test NV=1 + run: DEBUG=2 NV=1 python -m pytest -rA test/test_tiny.py + - name: Test CUDA=1 + run: DEBUG=2 CUDA=1 python -m pytest -rA test/test_tiny.py + - name: Run Stable Diffusion + run: BENCHMARK_LOG=stable_diffusion NV=1 python3 examples/stable_diffusion.py --fp16 --seed 0 --noshow --timing | tee sd.txt + - name: Run SDXL + run: BENCHMARK_LOG=stable_diffusion_xl CAPTURE_PROCESS_REPLAY=0 NV=1 CAPTURE_PROCESS_REPLAY=0 python3 examples/sdxl.py --seed 0 --noshow --timing | tee sdxl.txt + - name: Run LLaMA + run: | + BENCHMARK_LOG=llama_nojit NV=1 JIT=0 python3 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_unjitted.txt + BENCHMARK_LOG=llama NV=1 JIT=1 python3 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_jitted.txt + - name: Run LLaMA with BEAM + run: BENCHMARK_LOG=llama_beam NV=1 JITBEAM=2 IGNORE_BEAM_CACHE=1 python3 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_beam.txt + # - name: Run LLaMA 7B on 4 GPUs + # run: NV=1 CAPTURE_PROCESS_REPLAY=0 python3 examples/llama.py --gen 1 --size 7B --shard 4 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_four_gpu.txt + # - name: Run LLaMA 7B on 6 GPUs + # run: NV=1 CAPTURE_PROCESS_REPLAY=0 python3 examples/llama.py --gen 1 --size 7B --shard 6 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_six_gpu.txt + - name: Run LLaMA-3 8B BEAM + run: BENCHMARK_LOG=llama3_beam NV=1 JITBEAM=2 IGNORE_BEAM_CACHE=1 python3 examples/llama3.py --size 8B --model weights/LLaMA-3/8B-SF-DPO/ --benchmark --temperature 0 | tee llama3_beam.txt + - name: Run LLaMA-3 8B on 4 GPUs with BEAM + run: BENCHMARK_LOG=llama3_beam_4gpu NV=1 JITBEAM=2 IGNORE_BEAM_CACHE=1 CAPTURE_PROCESS_REPLAY=0 python3 examples/llama3.py --size 8B --shard 4 --model weights/LLaMA-3/8B-SF-DPO/ --benchmark --temperature 0 | tee llama3_four_gpu.txt + # - name: Run LLaMA-3 8B on 6 GPUs + # run: NV=1 CAPTURE_PROCESS_REPLAY=0 python3 examples/llama3.py --size 8B --shard 6 --model weights/LLaMA-3/8B-SF-DPO/ --benchmark --temperature 0 | tee llama3_six_gpu.txt + # - name: Run LLaMA-2 70B + # run: NV=1 CAPTURE_PROCESS_REPLAY=0 MAX_CONTEXT=256 python3 examples/llama.py --gen 2 --size 70B --shard 6 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_2_70B.txt + - name: Run Mixtral 8x7B + run: time BENCHMARK_LOG=mixtral NV=1 CAPTURE_PROCESS_REPLAY=0 python3 examples/mixtral.py --temperature 0 --count 10 --timing | tee mixtral.txt + - name: Run GPT2 + run: | + BENCHMARK_LOG=gpt2_nojit NV=1 JIT=0 python3 examples/gpt2.py --prompt "Hello." --count 10 --temperature 0 --timing | tee gpt2_unjitted.txt + BENCHMARK_LOG=gpt2 NV=1 JIT=1 python3 examples/gpt2.py --prompt "Hello." --count 10 --temperature 0 --timing | tee gpt2_jitted.txt + - name: Run GPT2 w HALF + run: BENCHMARK_LOG=gpt2_half NV=1 HALF=1 python3 examples/gpt2.py --count 10 --temperature 0 --timing | tee gpt2_half.txt + - name: Run GPT2 w HALF/BEAM + run: BENCHMARK_LOG=gpt2_half_beam NV=1 HALF=1 JITBEAM=2 IGNORE_BEAM_CACHE=1 python3 examples/gpt2.py --count 10 --temperature 0 --timing | tee gpt2_half_beam.txt + - uses: actions/upload-artifact@v4 + with: + name: Speed (NVIDIA) + path: | + onnx_inference_speed.csv + torch_speed.txt + matmul.txt + matmul_bfloat16.txt + matmul_tf32.txt + matmul_ptx.txt + matmul_nv.txt + sd.txt + sdxl.txt + llama_unjitted.txt + llama_jitted.txt + llama_beam.txt + llama3_beam.txt + llama3_four_gpu.txt + llama3_six_gpu.txt + llama_2_70B.txt + mixtral.txt + gpt2_unjitted.txt + gpt2_jitted.txt + gpt2_half.txt + gpt2_half_beam.txt + - name: Run process replay tests + run: cp test/external/process_replay/process_replay.py ./process_replay.py && git fetch origin master && git -c advice.detachedHead=false checkout origin/master && PYTHONPATH=. python3 process_replay.py + + testmorenvidiabenchmark: + name: tinybox green Training Benchmark + runs-on: [self-hosted, Linux, tinyboxgreen] + timeout-minutes: 20 + defaults: + run: + shell: bash -e -o pipefail {0} + if: github.repository_owner == 'tinygrad' + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Symlink models and datasets + run: | + mkdir -p weights + ln -s ~/tinygrad/weights/bpe_simple_vocab_16e6.txt.gz weights/bpe_simple_vocab_16e6.txt.gz + ln -s ~/tinygrad/weights/LLaMA weights/LLaMA + ln -s ~/tinygrad/extra/datasets/cifar-10-python.tar.gz extra/datasets/cifar-10-python.tar.gz + ln -s /raid/weights/mixtral-8x7b-32kseqlen weights/mixtral-8x7b-32kseqlen + ln -s /raid/weights/LLaMA-2 weights/LLaMA-2 + mkdir -p extra/datasets + ln -s /raid/datasets/imagenet extra/datasets/imagenet + - name: setup staging db + if: github.ref == 'refs/heads/update_benchmark_staging' + run: | + echo "CACHEDB=/tmp/staging.db" >> $GITHUB_ENV + rm -f /tmp/staging.db /tmp/staging.db-shm /tmp/staging.db-wal + - name: reset process replay + run: test/external/process_replay/reset.py + - name: Fuzz Padded Tensor Core GEMM (NV) + run: NV=1 M_START=12 M_STOP=20 M_STEP=1 N_START=6 N_STOP=10 N_STEP=1 K_START=28 K_STOP=36 K_STEP=1 HALF=1 TC_OPT=2 python3 ./extra/gemm/fuzz_matmul.py + - name: Fuzz Padded Tensor Core GEMM (PTX) + run: NV=1 PTX=1 M_START=12 M_STOP=20 M_STEP=1 N_START=6 N_STOP=10 N_STEP=1 K_START=28 K_STOP=36 K_STEP=1 HALF=1 TC_OPT=2 python3 ./extra/gemm/fuzz_matmul.py + - name: Train MNIST + run: time PYTHONPATH=. NV=1 TARGET_EVAL_ACC_PCT=96.0 python3 examples/beautiful_mnist.py | tee beautiful_mnist.txt + - name: Run 10 CIFAR training steps + run: BENCHMARK_LOG=cifar_10steps NV=1 STEPS=10 python3 examples/hlb_cifar10.py | tee train_cifar.txt + - name: Run 10 CIFAR training steps w HALF + run: BENCHMARK_LOG=cifar_10steps_half NV=1 STEPS=10 DEFAULT_FLOAT=HALF python3 examples/hlb_cifar10.py | tee train_cifar_half.txt + - name: Run 10 CIFAR training steps w BF16 + run: BENCHMARK_LOG=cifar_10steps_bf16 NV=1 STEPS=10 DEFAULT_FLOAT=BFLOAT16 python3 examples/hlb_cifar10.py | tee train_cifar_bf16.txt + - name: Run 10 CIFAR training steps w winograd + run: BENCHMARK_LOG=cifar_10steps_half_wino NV=1 CAPTURE_PROCESS_REPLAY=0 WINO=1 STEPS=10 DEFAULT_FLOAT=HALF python3 examples/hlb_cifar10.py | tee train_cifar_wino.txt + - name: Run full CIFAR training w 1 GPU + run: time BENCHMARK_LOG=cifar NV=1 DEFAULT_FLOAT=HALF LATEWINO=1 STEPS=1000 TARGET_EVAL_ACC_PCT=93.2 python3 examples/hlb_cifar10.py | tee train_cifar_one_gpu.txt + - name: Run full CIFAR training steps w 6 GPUS + run: time BENCHMARK_LOG=cifar_6gpu CAPTURE_PROCESS_REPLAY=0 NV=1 DEFAULT_FLOAT=HALF STEPS=350 BS=1536 GPUS=6 TARGET_EVAL_ACC_PCT=93.2 python3 examples/hlb_cifar10.py | tee train_cifar_six_gpu.txt + - name: Run MLPerf resnet eval on training data + run: time BENCHMARK_LOG=resnet_eval NV=1 MODEL=resnet python3 examples/mlperf/model_eval.py + - name: Run 10 MLPerf ResNet50 training steps (1 gpu) + run: BENCHMARK_LOG=resnet_10steps NV=1 DEFAULT_FLOAT=HALF BENCHMARK=10 BS=256 GPUS=1 MODEL=resnet python3 examples/mlperf/model_train.py | tee train_resnet_one_gpu.txt + - name: Run 10 MLPerf ResNet50 training steps (6 gpu) + run: BENCHMARK_LOG=resnet_10steps_6gpu NV=1 CAPTURE_PROCESS_REPLAY=0 DEFAULT_FLOAT=HALF BENCHMARK=10 BS=1536 GPUS=6 MODEL=resnet python3 examples/mlperf/model_train.py | tee train_resnet.txt + - name: Run 10 MLPerf Bert training steps (6 gpu) + # TODO: remove BERT_LAYERS once scheduler is fast + run: BENCHMARK_LOG=bert_10steps_6gpu NV=1 CAPTURE_PROCESS_REPLAY=0 DEFAULT_FLOAT=HALF BENCHMARK=10 BS=66 GPUS=6 BERT_LAYERS=2 MODEL=bert python3 examples/mlperf/model_train.py | tee train_bert.txt + - uses: actions/upload-artifact@v4 + with: + name: Speed (NVIDIA Training) + path: | + beautiful_mnist.txt + train_cifar.txt + train_cifar_half.txt + train_cifar_bf16.txt + train_cifar_wino.txt + train_cifar_one_gpu.txt + train_cifar_six_gpu.txt + train_resnet.txt + train_resnet_one_gpu.txt + train_bert.txt + - name: Run process replay tests + run: cp test/external/process_replay/process_replay.py ./process_replay.py && git fetch origin master && git -c advice.detachedHead=false checkout origin/master && PYTHONPATH=. python3 process_replay.py + + testamdbenchmark: + name: tinybox red Benchmark + runs-on: [self-hosted, Linux, tinybox] + timeout-minutes: 20 + defaults: + run: + shell: bash -e -o pipefail {0} + if: github.repository_owner == 'tinygrad' + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Remove amdgpu + run: sudo rmmod amdgpu || true + - name: Cleanup running AM processes + run: python extra/amdpci/am_smi.py --pids --kill + #- name: Insert amdgpu + # run: sudo modprobe amdgpu + - name: Symlink models and datasets + run: | + mkdir -p weights + ln -s ~/tinygrad/weights/bpe_simple_vocab_16e6.txt.gz weights/bpe_simple_vocab_16e6.txt.gz + ln -s ~/tinygrad/weights/LLaMA weights/LLaMA + ln -s ~/tinygrad/extra/datasets/cifar-10-python.tar.gz extra/datasets/cifar-10-python.tar.gz + ln -s /raid/weights/mixtral-8x7b-32kseqlen weights/mixtral-8x7b-32kseqlen + ln -s /raid/weights/LLaMA-2 weights/LLaMA-2 + ln -s /raid/weights/LLaMA-3 weights/LLaMA-3 + mkdir -p extra/datasets + ln -s /raid/datasets/imagenet extra/datasets/imagenet + - name: setup staging db + if: github.ref == 'refs/heads/update_benchmark_staging' + run: | + echo "CACHEDB=/tmp/staging.db" >> $GITHUB_ENV + rm -f /tmp/staging.db /tmp/staging.db-shm /tmp/staging.db-wal + - name: reset process replay + run: test/external/process_replay/reset.py + #- name: setup perflevel + # run: | + # examples/mlperf/training_submission_v4.1/tinycorp/benchmarks/bert/implementations/tinybox_red/setup.sh + # rocm-smi + #- name: Show off tinybox + # run: /opt/rocm/bin/rocm-bandwidth-test + # TODO: unstable on AMD + #- name: Run model inference benchmark + # run: LD_PRELOAD="/opt/rocm/lib/libhsa-runtime64.so" HSA=1 NOCLANG=1 python3 test/external/external_model_benchmark.py + # TODO: unstable on AMD + #- name: Test speed vs torch + # run: | + # python3 -c "import torch; print(torch.__version__)" + # LD_PRELOAD="/opt/rocm/lib/libhsa-runtime64.so" HSA=1 BIG=2 TORCHCUDA=1 python3 test/speed/external_test_speed_v_torch.py | tee torch_speed.txt + - name: Test speed vs theoretical + run: AMD=1 IGNORE_BEAM_CACHE=1 BEAM_DEBUG=1 DEBUG=1 python -m pytest -rA test/external/speed_v_theoretical.py --durations=20 + - name: Test tensor cores + run: | + AMD=1 AMD_LLVM=0 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores TestLinearizer.test_tensor_cores_padded_amd TestLinearizer.test_tensor_cores_padded_uops + AMD=1 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores TestLinearizer.test_tensor_cores_padded_amd TestLinearizer.test_tensor_cores_padded_uops + AMD=1 SHOULD_USE_TC=1 BFLOAT16=1 DEBUG=2 python3 extra/gemm/simple_matmul.py + - name: Run Tensor Core GEMM (AMD) + run: AMD=1 SHOULD_USE_TC=1 HALF=1 DEBUG=2 ATOL=2e-2 python3 extra/gemm/simple_matmul.py | tee matmul_amd.txt + - name: Test AMD=1 + run: DEBUG=2 AMD=1 python -m pytest -rA test/test_tiny.py + #- name: Test HIP=1 + # run: DEBUG=2 HIP=1 python -m pytest -rA test/test_tiny.py + # TODO: AMD compiler bug causes this to fail + #- name: Fuzz Padded Tensor Core GEMM + # run: HSA=1 M_START=12 M_STOP=20 M_STEP=1 N_START=12 N_STOP=20 N_STEP=1 K_START=28 K_STOP=36 K_STEP=1 HALF=1 TC_OPT=2 DEBUG=2 python3 ./extra/gemm/fuzz_matmul.py + #- name: Remove amdgpu + # run: sleep 10 && sudo rmmod amdgpu # sleep a bit to let the driver unload the prev pid. + - name: Test AM cold start time + run: time AMD=1 AM_RESET=1 python3 test/test_tiny.py TestTiny.test_plus + - name: Test AM warm start time + run: time AMD=1 python3 test/test_tiny.py TestTiny.test_plus + - name: Run Stable Diffusion + run: BENCHMARK_LOG=stable_diffusion AMD=1 python3 examples/stable_diffusion.py --fp16 --seed 0 --noshow --timing | tee sd.txt + - name: Run SDXL + run: BENCHMARK_LOG=stable_diffusion_xl CAPTURE_PROCESS_REPLAY=0 AMD=1 python3 examples/sdxl.py --seed 0 --noshow --timing | tee sdxl.txt + - name: Run LLaMA 7B + run: | + BENCHMARK_LOG=llama_nojit AMD=1 JIT=0 python3 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_unjitted.txt + BENCHMARK_LOG=llama AMD=1 JIT=1 python3 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_jitted.txt + - name: Run LLaMA 7B with BEAM + run: BENCHMARK_LOG=llama_beam AMD=1 JITBEAM=2 IGNORE_BEAM_CACHE=1 python3 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_beam.txt + # - name: Run LLaMA 7B on 4 GPUs + # run: AMD=1 CAPTURE_PROCESS_REPLAY=0 python3 examples/llama.py --gen 1 --size 7B --shard 4 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_four_gpu.txt + # - name: Run LLaMA 7B on 6 GPUs + # run: AMD=1 CAPTURE_PROCESS_REPLAY=0 python3 examples/llama.py --gen 1 --size 7B --shard 6 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_six_gpu.txt + - name: Run LLaMA-3 8B BEAM + run: BENCHMARK_LOG=llama3_beam AMD=1 JITBEAM=2 IGNORE_BEAM_CACHE=1 python3 examples/llama3.py --size 8B --model weights/LLaMA-3/8B-SF-DPO/ --benchmark --temperature 0 | tee llama3_beam.txt + - name: Run LLaMA-3 8B on 4 GPUs with BEAM + run: BENCHMARK_LOG=llama3_beam_4gpu AMD=1 JITBEAM=2 IGNORE_BEAM_CACHE=1 CAPTURE_PROCESS_REPLAY=0 python3 examples/llama3.py --size 8B --shard 4 --model weights/LLaMA-3/8B-SF-DPO/ --benchmark --temperature 0 | tee llama3_four_gpu.txt + # - name: Run LLaMA-3 8B on 6 GPUs + # run: AMD=1 CAPTURE_PROCESS_REPLAY=0 python3 examples/llama3.py --size 8B --shard 6 --model weights/LLaMA-3/8B-SF-DPO/ --benchmark --temperature 0 | tee llama3_six_gpu.txt + #- name: Restore amdgpu + # run: sudo modprobe amdgpu + # - name: Run LLaMA-2 70B + # run: AMD=1 CAPTURE_PROCESS_REPLAY=0 python3 examples/llama.py --gen 2 --size 70B --shard 6 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_2_70B.txt + - name: Run Mixtral 8x7B + run: time BENCHMARK_LOG=mixtral AMD=1 python3 examples/mixtral.py --temperature 0 --count 10 --timing | tee mixtral.txt + - name: Run GPT2 + run: | + BENCHMARK_LOG=gpt2_nojit AMD=1 JIT=0 python3 examples/gpt2.py --prompt "Hello." --count 10 --temperature 0 --timing | tee gpt2_unjitted.txt + BENCHMARK_LOG=gpt2 AMD=1 JIT=1 python3 examples/gpt2.py --prompt "Hello." --count 10 --temperature 0 --timing | tee gpt2_jitted.txt + - name: Run GPT2 w HALF + run: BENCHMARK_LOG=gpt2_half AMD=1 HALF=1 python3 examples/gpt2.py --count 10 --temperature 0 --timing | tee gpt2_half.txt + - name: Run GPT2 w HALF/BEAM + run: BENCHMARK_LOG=gpt2_half_beam AMD=1 HALF=1 JITBEAM=2 IGNORE_BEAM_CACHE=1 python3 examples/gpt2.py --count 10 --temperature 0 --timing | tee gpt2_half_beam.txt + - uses: actions/upload-artifact@v4 + with: + name: Speed (AMD) + path: | + onnx_inference_speed.csv + torch_speed.txt + llama_unjitted.txt + llama_jitted.txt + llama_beam.txt + llama3_beam.txt + llama3_four_gpu.txt + llama3_six_gpu.txt + llama_2_70B.txt + gpt2_unjitted.txt + gpt2_jitted.txt + gpt2_half.txt + gpt2_half_beam.txt + matmul.txt + matmul_amd.txt + sd.txt + sdxl.txt + mixtral.txt + - name: Run process replay tests + run: cp test/external/process_replay/process_replay.py ./process_replay.py && git fetch origin master && git -c advice.detachedHead=false checkout origin/master && PYTHONPATH=. python3 process_replay.py + + testmoreamdbenchmark: + name: tinybox red Training Benchmark + runs-on: [self-hosted, Linux, tinybox] + timeout-minutes: 30 + defaults: + run: + shell: bash -e -o pipefail {0} + if: github.repository_owner == 'tinygrad' + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Remove amdgpu + run: sudo rmmod amdgpu || true + - name: Cleanup running AM processes + run: python extra/amdpci/am_smi.py --pids --kill + - name: Symlink models and datasets + run: | + mkdir -p weights + ln -s ~/tinygrad/weights/bpe_simple_vocab_16e6.txt.gz weights/bpe_simple_vocab_16e6.txt.gz + ln -s ~/tinygrad/weights/LLaMA weights/LLaMA + ln -s ~/tinygrad/extra/datasets/cifar-10-python.tar.gz extra/datasets/cifar-10-python.tar.gz + ln -s /raid/weights/mixtral-8x7b-32kseqlen weights/mixtral-8x7b-32kseqlen + ln -s /raid/weights/LLaMA-2 weights/LLaMA-2 + mkdir -p extra/datasets + ln -s /raid/datasets/imagenet extra/datasets/imagenet + - name: setup staging db + if: github.ref == 'refs/heads/update_benchmark_staging' + run: | + echo "CACHEDB=/tmp/staging.db" >> $GITHUB_ENV + rm -f /tmp/staging.db /tmp/staging.db-shm /tmp/staging.db-wal + - name: reset process replay + run: test/external/process_replay/reset.py + - name: Train MNIST + run: time PYTHONPATH=. AMD=1 TARGET_EVAL_ACC_PCT=96.0 python3 examples/beautiful_mnist.py | tee beautiful_mnist.txt + - name: Run 10 CIFAR training steps + run: BENCHMARK_LOG=cifar_10steps AMD=1 STEPS=10 python3 examples/hlb_cifar10.py | tee train_cifar.txt + - name: Run 10 CIFAR training steps w HALF + run: BENCHMARK_LOG=cifar_10steps_half AMD=1 STEPS=10 DEFAULT_FLOAT=HALF python3 examples/hlb_cifar10.py | tee train_cifar_half.txt + - name: Run 10 CIFAR training steps w BF16 + run: BENCHMARK_LOG=cifar_10steps_bf16 AMD=1 STEPS=10 DEFAULT_FLOAT=BFLOAT16 python3 examples/hlb_cifar10.py | tee train_cifar_bf16.txt + - name: Run 10 CIFAR training steps w winograd + run: BENCHMARK_LOG=cifar_10steps_half_wino AMD=1 WINO=1 STEPS=10 DEFAULT_FLOAT=HALF python3 examples/hlb_cifar10.py | tee train_cifar_wino.txt + - name: Run full CIFAR training w 1 GPU + run: time BENCHMARK_LOG=cifar AMD=1 DEFAULT_FLOAT=HALF LATEWINO=1 STEPS=1000 TARGET_EVAL_ACC_PCT=93.2 python3 examples/hlb_cifar10.py | tee train_cifar_one_gpu.txt + - name: Run full CIFAR training steps w 6 GPUS + run: time BENCHMARK_LOG=cifar_6gpu AMD=1 DEFAULT_FLOAT=HALF STEPS=350 BS=1536 GPUS=6 TARGET_EVAL_ACC_PCT=93.2 python3 examples/hlb_cifar10.py | tee train_cifar_six_gpu.txt + - name: Run full CIFAR training steps w 6 GPUS (REMOTE) + run: time BENCHMARK_LOG=cifar_6gpu_remote REMOTE=1 REMOTEDEV=AMD DEFAULT_FLOAT=HALF STEPS=350 BS=1536 GPUS=6 TARGET_EVAL_ACC_PCT=93.2 python3 examples/hlb_cifar10.py | tee train_cifar_six_gpu_remote.txt + - uses: actions/upload-artifact@v4 + with: + name: Speed (AMD Training) + path: | + beautiful_mnist.txt + train_cifar.txt + train_cifar_half.txt + train_cifar_bf16.txt + train_cifar_wino.txt + train_cifar_one_gpu.txt + train_cifar_six_gpu.txt + train_cifar_six_gpu_remote.txt + - name: Run process replay tests + run: cp test/external/process_replay/process_replay.py ./process_replay.py && git fetch origin master && git -c advice.detachedHead=false checkout origin/master && PYTHONPATH=. python3 process_replay.py + + testmlperfamdbenchmark: + name: tinybox red MLPerf Benchmark + runs-on: [self-hosted, Linux, tinybox] + timeout-minutes: 30 + defaults: + run: + shell: bash -e -o pipefail {0} + if: github.repository_owner == 'tinygrad' + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Remove amdgpu + run: sudo rmmod amdgpu || true + - name: Cleanup running AM processes + run: python extra/amdpci/am_smi.py --pids --kill + - name: Symlink models and datasets + run: | + mkdir -p weights + ln -s ~/tinygrad/weights/bpe_simple_vocab_16e6.txt.gz weights/bpe_simple_vocab_16e6.txt.gz + ln -s ~/tinygrad/weights/LLaMA weights/LLaMA + ln -s ~/tinygrad/extra/datasets/cifar-10-python.tar.gz extra/datasets/cifar-10-python.tar.gz + ln -s /raid/weights/mixtral-8x7b-32kseqlen weights/mixtral-8x7b-32kseqlen + ln -s /raid/weights/LLaMA-2 weights/LLaMA-2 + mkdir -p extra/datasets + ln -s /raid/datasets/imagenet extra/datasets/imagenet + - name: setup staging db + if: github.ref == 'refs/heads/update_benchmark_staging' + run: | + echo "CACHEDB=/tmp/staging.db" >> $GITHUB_ENV + rm -f /tmp/staging.db /tmp/staging.db-shm /tmp/staging.db-wal + - name: reset process replay + run: test/external/process_replay/reset.py + - name: Run MLPerf resnet eval + run: time BENCHMARK_LOG=resnet_eval AMD=1 MODEL=resnet python3 examples/mlperf/model_eval.py + - name: Run 10 MLPerf ResNet50 training steps (1 gpu) + run: BENCHMARK_LOG=resnet_10steps AMD=1 DEFAULT_FLOAT=HALF BENCHMARK=10 BS=256 GPUS=1 MODEL=resnet python3 examples/mlperf/model_train.py | tee train_resnet_one_gpu.txt + - name: Run 10 MLPerf ResNet50 training steps (6 gpu) + run: BENCHMARK_LOG=resnet_10steps_6gpu AMD=1 CAPTURE_PROCESS_REPLAY=0 DEFAULT_FLOAT=HALF BENCHMARK=10 BS=1536 GPUS=6 MODEL=resnet python3 examples/mlperf/model_train.py | tee train_resnet.txt + - name: Run 10 MLPerf Bert training steps (6 gpu) + # TODO: remove BERT_LAYERS once scheduler is fast + run: BENCHMARK_LOG=bert_10steps_6gpu AMD=1 CAPTURE_PROCESS_REPLAY=0 DEFAULT_FLOAT=HALF BENCHMARK=10 BS=66 GPUS=6 BERT_LAYERS=2 MODEL=bert python3 examples/mlperf/model_train.py | tee train_bert.txt + - uses: actions/upload-artifact@v4 + with: + name: Speed (AMD MLPerf) + path: | + train_resnet.txt + train_resnet_one_gpu.txt + train_bert.txt + - name: Run process replay tests + run: cp test/external/process_replay/process_replay.py ./process_replay.py && git fetch origin master && git -c advice.detachedHead=false checkout origin/master && PYTHONPATH=. python3 process_replay.py + + testqualcommbenchmark: + name: comma Benchmark + runs-on: [self-hosted, Linux, comma] + timeout-minutes: 20 + defaults: + run: + shell: bash -e -o pipefail {0} + if: github.repository_owner == 'tinygrad' + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: setup staging db + if: github.ref == 'refs/heads/update_benchmark_staging' + run: | + echo "CACHEDB=/tmp/staging.db" >> $GITHUB_ENV + rm -f /tmp/staging.db /tmp/staging.db-shm /tmp/staging.db-wal + - name: reset process replay + run: test/external/process_replay/reset.py + - name: benchmark openpilot 0.9.9 driving_vision + run: BENCHMARK_LOG=openpilot_0_9_9_vision PYTHONPATH=. NOLOCALS=1 FLOAT16=1 IMAGE=2 QCOM=1 taskset -c 4-7 python3 test/external/external_benchmark_openpilot.py https://github.com/commaai/openpilot/raw/v0.9.9/selfdrive/modeld/models/driving_vision.onnx + - name: benchmark openpilot 0.9.9 driving_policy + run: BENCHMARK_LOG=openpilot_0_9_9_policy PYTHONPATH=. NOLOCALS=1 FLOAT16=1 IMAGE=2 QCOM=1 taskset -c 4-7 python3 test/external/external_benchmark_openpilot.py https://github.com/commaai/openpilot/raw/v0.9.9/selfdrive/modeld/models/driving_policy.onnx + - name: benchmark openpilot 0.9.9 dmonitoring + run: BENCHMARK_LOG=openpilot_0_9_9_dmonitoring PYTHONPATH=. NOLOCALS=1 FLOAT16=1 IMAGE=2 QCOM=1 taskset -c 4-7 python3 test/external/external_benchmark_openpilot.py https://github.com/commaai/openpilot/raw/v0.9.9/selfdrive/modeld/models/dmonitoring_model.onnx + - name: openpilot compile3 0.9.9 driving_vision + run: PYTHONPATH="." QCOM=1 taskset -c 4-7 python3 examples/openpilot/compile3.py https://github.com/commaai/openpilot/raw/v0.9.9/selfdrive/modeld/models/driving_vision.onnx + - name: openpilot compile3 0.9.9 driving_policy + run: PYTHONPATH="." QCOM=1 taskset -c 4-7 python3 examples/openpilot/compile3.py https://github.com/commaai/openpilot/raw/v0.9.9/selfdrive/modeld/models/driving_policy.onnx + - name: openpilot compile3 0.9.9 dmonitoring + run: PYTHONPATH="." QCOM=1 taskset -c 4-7 python3 examples/openpilot/compile3.py https://github.com/commaai/openpilot/raw/v0.9.9/selfdrive/modeld/models/dmonitoring_model.onnx + - name: openpilot compile3 Space Lab policy + vision + run: | + PYTHONPATH="." QCOM=1 taskset -c 4-7 python3 examples/openpilot/compile3.py https://gitlab.com/commaai/openpilot-lfs.git/gitlab-lfs/objects/22aec22a10ce09384d4a4af2a0bbff08d54af7e0c888503508f356fae4ff0e29 + PYTHONPATH="." QCOM=1 taskset -c 4-7 python3 examples/openpilot/compile3.py https://gitlab.com/commaai/openpilot-lfs.git/gitlab-lfs/objects/c824f68646a3b94f117f01c70dc8316fb466e05fbd42ccdba440b8a8dc86914b + - name: benchmark MobileNetV2 on DSP + run: | + # generate quantized weights + ln -s /data/home/tiny/tinygrad/extra/datasets/imagenet extra/datasets/imagenet + ln -s /data/home/tiny/tinygrad/testsig-*.so . + PYTHONPATH=. CC=clang-19 CPU=1 QUANT=1 CNT=0 python3 examples/test_onnx_imagenet.py https://github.com/xamcat/mobcat-samples/raw/refs/heads/master/onnx_runtime/InferencingSample/InferencingSample/mobilenetv2-7.onnx /tmp/model.quant.onnx + # benchmark on DSP with NOOPT=1, the devectorizer has issues + PYTHONPATH=. CC=clang-19 DSP=1 DONT_REALIZE_EXPAND=1 NOOPT=1 CNT=2 DEBUG=2 python3 examples/test_onnx_imagenet.py /tmp/model.quant.onnx + - name: Run process replay tests + run: cp test/external/process_replay/process_replay.py ./process_replay.py && git fetch origin master && git -c advice.detachedHead=false checkout origin/master && PYTHONPATH=. python3 process_replay.py + - uses: actions/upload-artifact@v4 + with: + name: Speed (comma) + path: | + openpilot_compile_0_9_4.txt + openpilot_compile_0_9_7.txt + openpilot_0_9_4.txt + openpilot_0_9_7.txt + openpilot_image_0_9_4.txt + openpilot_image_0_9_7.txt + + testreddriverbenchmark: + name: AM Benchmark + runs-on: [self-hosted, Linux, tinyboxrandom] + timeout-minutes: 15 + defaults: + run: + shell: bash -e -o pipefail {0} + if: github.repository_owner == 'tinygrad' + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Remove amd modules + run: ./extra/hcq/hcq_smi.py amd rmmod + - name: Kill stale pids + run: ./extra/hcq/hcq_smi.py amd kill_pids + - name: Symlink models and datasets + run: | + mkdir -p weights + ln -s ~/tinygrad/weights/bpe_simple_vocab_16e6.txt.gz weights/bpe_simple_vocab_16e6.txt.gz + ln -s ~/tinygrad/weights/LLaMA weights/LLaMA + ln -s ~/tinygrad/extra/datasets/cifar-10-python.tar.gz extra/datasets/cifar-10-python.tar.gz + ln -s /raid/weights/mixtral-8x7b-32kseqlen weights/mixtral-8x7b-32kseqlen + ln -s /raid/weights/LLaMA-2 weights/LLaMA-2 + mkdir -p extra/datasets + ln -s /raid/datasets/imagenet extra/datasets/imagenet + - name: setup staging db + if: github.ref == 'refs/heads/update_benchmark_staging' + run: | + echo "CACHEDB=/tmp/staging.db" >> $GITHUB_ENV + rm -f /tmp/staging.db /tmp/staging.db-shm /tmp/staging.db-wal + - name: reset process replay + run: test/external/process_replay/reset.py + - name: Test driver cold start time + run: time DEBUG=3 AMD=1 AM_RESET=1 python3 test/test_tiny.py TestTiny.test_plus + - name: Test driver warm start time + run: time DEBUG=3 AMD=1 python3 test/test_tiny.py TestTiny.test_plus + # Fails on 9070 + # - name: Test tensor cores + # run: | + # AMD=1 AMD_LLVM=0 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores TestLinearizer.test_tensor_cores_padded_amd TestLinearizer.test_tensor_cores_padded_uops + # AMD=1 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores TestLinearizer.test_tensor_cores_padded_amd TestLinearizer.test_tensor_cores_padded_uops + # AMD=1 SHOULD_USE_TC=1 BFLOAT16=1 DEBUG=2 python3 extra/gemm/simple_matmul.py + - name: Run Tensor Core GEMM (AMD) + run: AMD=1 SHOULD_USE_TC=1 HALF=1 DEBUG=2 ATOL=2e-2 python3 extra/gemm/simple_matmul.py | tee am_matmul_amd.txt + - name: Test AMD=1 + run: DEBUG=2 AMD=1 python -m pytest -rA test/test_tiny.py + - name: Test DISK copy time + run: AMD=1 TESTFILE=/raid/downloads/llama3-8b-sfr/model-00001-of-00004.safetensors python3 test/external/external_benchmark_disk_raw.py + - name: Run full CIFAR training w 1 GPU + run: time BENCHMARK_LOG=cifar AMD=1 DEFAULT_FLOAT=HALF LATEWINO=1 STEPS=1000 TARGET_EVAL_ACC_PCT=93.2 python3 examples/hlb_cifar10.py | tee am_train_cifar_one_gpu.txt + # TODO: enable + # - name: Run 10 MLPerf ResNet50 training steps (1 gpu) + # run: BENCHMARK_LOG=resnet_10steps AMD=1 MNISTMOCK=1 DEFAULT_FLOAT=HALF BENCHMARK=10 BS=256 GPUS=1 MODEL=resnet python3 examples/mlperf/model_train.py | tee am_train_resnet_one_gpu.txt + - name: Run 10 MLPerf Bert training steps (1 gpu) + # TODO: remove BERT_LAYERS once scheduler is fast + run: BENCHMARK_LOG=bert_10steps AMD=1 CAPTURE_PROCESS_REPLAY=0 DEFAULT_FLOAT=HALF BENCHMARK=10 BS=66 GPUS=1 BERT_LAYERS=2 MODEL=bert python3 examples/mlperf/model_train.py | tee am_train_bert_one_gpu.txt + - uses: actions/upload-artifact@v4 + with: + name: Speed (AM Driver) + path: | + am_matmul_amd.txt + am_train_cifar_one_gpu.txt + am_train_resnet_one_gpu.txt + am_train_bert_one_gpu.txt + - name: Run process replay tests + run: cp test/external/process_replay/process_replay.py ./process_replay.py && git fetch origin master && git -c advice.detachedHead=false checkout origin/master && PYTHONPATH=. python3 process_replay.py + + testgreendriverbenchmark: + name: NV Benchmark + runs-on: [self-hosted, Linux, tinyboxrandom] + timeout-minutes: 15 + defaults: + run: + shell: bash -e -o pipefail {0} + if: github.repository_owner == 'tinygrad' + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Remove nv modules + run: ./extra/hcq/hcq_smi.py nv rmmod + - name: Kill stale pids + run: ./extra/hcq/hcq_smi.py nv kill_pids + - name: Symlink models and datasets + run: | + mkdir -p weights + ln -s ~/tinygrad/weights/bpe_simple_vocab_16e6.txt.gz weights/bpe_simple_vocab_16e6.txt.gz + ln -s ~/tinygrad/weights/LLaMA weights/LLaMA + ln -s ~/tinygrad/extra/datasets/cifar-10-python.tar.gz extra/datasets/cifar-10-python.tar.gz + ln -s /raid/weights/mixtral-8x7b-32kseqlen weights/mixtral-8x7b-32kseqlen + ln -s /raid/weights/LLaMA-2 weights/LLaMA-2 + mkdir -p extra/datasets + ln -s /raid/datasets/imagenet extra/datasets/imagenet + - name: setup staging db + if: github.ref == 'refs/heads/update_benchmark_staging' + run: | + echo "CACHEDB=/tmp/staging.db" >> $GITHUB_ENV + rm -f /tmp/staging.db /tmp/staging.db-shm /tmp/staging.db-wal + - name: reset process replay + run: test/external/process_replay/reset.py + - name: Test driver start time + run: time DEBUG=3 NV=1 python3 test/test_tiny.py TestTiny.test_plus + - name: Test tensor cores + run: NV=1 ALLOW_TF32=1 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores TestLinearizer.test_tensor_cores_padded TestLinearizer.test_tensor_cores_padded_uops + - name: Test DISK copy time + run: NV=1 TESTFILE=/raid/downloads/llama3-8b-sfr/model-00001-of-00004.safetensors python3 test/external/external_benchmark_disk_raw.py + - name: Test LLAMA-3 + run: BENCHMARK_LOG=llama3_beam NV=1 JITBEAM=2 IGNORE_BEAM_CACHE=1 python3 examples/llama3.py --size 8B --benchmark --temperature 0 | tee nv_llama3_beam.txt + - name: Run full CIFAR training w 1 GPU + run: time BENCHMARK_LOG=cifar NV=1 DEFAULT_FLOAT=HALF LATEWINO=1 STEPS=1000 TARGET_EVAL_ACC_PCT=93.2 python3 examples/hlb_cifar10.py | tee nv_train_cifar_one_gpu.txt + - name: Run 10 MLPerf ResNet50 training steps (1 gpu) + run: BENCHMARK_LOG=resnet_10steps NV=1 MNISTMOCK=1 DEFAULT_FLOAT=HALF BENCHMARK=10 BS=256 GPUS=1 MODEL=resnet python3 examples/mlperf/model_train.py | tee nv_train_resnet_one_gpu.txt + - name: Run 10 MLPerf Bert training steps (1 gpu) + # TODO: remove BERT_LAYERS once scheduler is fast + run: BENCHMARK_LOG=bert_10steps NV=1 CAPTURE_PROCESS_REPLAY=0 DEFAULT_FLOAT=HALF BENCHMARK=10 BS=66 GPUS=1 BERT_LAYERS=2 MODEL=bert python3 examples/mlperf/model_train.py | tee nv_train_bert_one_gpu.txt + - uses: actions/upload-artifact@v4 + with: + name: Speed (NV Driver) + path: | + nv_llama3_beam.txt + nv_train_cifar_one_gpu.txt + nv_train_resnet_one_gpu.txt + nv_train_bert_one_gpu.txt + - name: Run process replay tests + run: cp test/external/process_replay/process_replay.py ./process_replay.py && git fetch origin master && git -c advice.detachedHead=false checkout origin/master && PYTHONPATH=. python3 process_replay.py diff --git a/tinygrad_repo/.github/workflows/benchmark_search.yml b/tinygrad_repo/.github/workflows/benchmark_search.yml new file mode 100644 index 000000000..1f3dc889e --- /dev/null +++ b/tinygrad_repo/.github/workflows/benchmark_search.yml @@ -0,0 +1,34 @@ +name: Benchmark with kernel search + +on: + push: + branches: + - update_benchmark_search + workflow_dispatch: + +jobs: + run_script_job: + runs-on: [self-hosted, Linux, tinybox] + if: github.repository_owner == 'tinygrad' + timeout-minutes: 100 + + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Remove amdgpu + run: sudo rmmod amdgpu || true + - name: Cleanup running AM processes + run: python extra/amdpci/am_smi.py --pids --kill + - name: Run SDXL with new search + # TODO: GCVM_L2_PROTECTION_FAULT_STATUS with llvm19 + run: | + BENCHMARK_LOG=search_sdxl PYTHONPATH=. AMD=1 JITBEAM=2 IGNORE_BEAM_CACHE=1 DISABLE_COMPILER_CACHE=1 python examples/sdxl.py --noshow --timing --seed 0 + - name: Run SDXL with cached search + run: | + BENCHMARK_LOG=search_sdxl_cached PYTHONPATH=. AMD=1 JITBEAM=2 python examples/sdxl.py --noshow --timing --seed 0 + - name: Run winograd cifar with new search + run: | + BENCHMARK_LOG=search_wino_cifar WINO=1 DEFAULT_FLOAT=HALF JITBEAM=4 IGNORE_BEAM_CACHE=1 DISABLE_COMPILER_CACHE=1 BS=1024 STEPS=500 python examples/hlb_cifar10.py + - name: Run winograd cifar with cached search + run: | + BENCHMARK_LOG=search_wino_cifar_cached WINO=1 DEFAULT_FLOAT=HALF JITBEAM=4 BS=1024 STEPS=500 python examples/hlb_cifar10.py diff --git a/tinygrad_repo/.github/workflows/docs.yml b/tinygrad_repo/.github/workflows/docs.yml new file mode 100644 index 000000000..def8b3160 --- /dev/null +++ b/tinygrad_repo/.github/workflows/docs.yml @@ -0,0 +1,30 @@ +name: Deploy Docs +on: + push: + branches: + - master + - mkdocs +permissions: + contents: write +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Configure Git Credentials + run: | + git config user.name github-actions[bot] + git config user.email 41898282+github-actions[bot]@users.noreply.github.com + - uses: actions/setup-python@v5 + with: + python-version: 3.x + - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV + - uses: actions/cache@v4 + with: + key: mkdocs-material-${{ env.cache_id }} + path: .cache + restore-keys: | + mkdocs-material- + - run: pip install -e .[docs] + - run: mkdocs build --strict + - run: mkdocs gh-deploy --force \ No newline at end of file diff --git a/tinygrad_repo/.github/workflows/mlperf.yml b/tinygrad_repo/.github/workflows/mlperf.yml new file mode 100644 index 000000000..b965d0541 --- /dev/null +++ b/tinygrad_repo/.github/workflows/mlperf.yml @@ -0,0 +1,30 @@ +name: Run MLPerf Training + +on: + schedule: + - cron: '5 8 * * *' # Runs at 08:05 UTC (12:05 AM Pacific Time) + push: + branches: + - update_mlperf + workflow_dispatch: + +jobs: + run_script_job: + runs-on: [self-hosted, Linux, tinybox] + if: github.repository_owner == 'tinygrad' + timeout-minutes: 360 + + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Cleanup running AM processes + run: python extra/amdpci/am_smi.py --pids --kill + - name: Symlink datasets + run: | + mkdir -p extra/datasets + ln -s /raid/datasets/imagenet extra/datasets/imagenet + - name: Run resnet + run: | + rm "~/.cache/tinygrad/cache_mlperf.db" || true + BENCHMARK_LOG=mlpert_train_resnet LOGMLPERF=0 CACHEDB="~/.cache/tinygrad/cache_mlperf.db" examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/resnet/implementations/tinybox_red/run_and_time.sh + rm "~/.cache/tinygrad/cache_mlperf.db" diff --git a/tinygrad_repo/.github/workflows/python-publish.yml b/tinygrad_repo/.github/workflows/python-publish.yml new file mode 100644 index 000000000..22f36f233 --- /dev/null +++ b/tinygrad_repo/.github/workflows/python-publish.yml @@ -0,0 +1,30 @@ +# This workflows will upload a Python Package using Twine when a release is created +# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries + +name: Upload Python Package + +on: + release: + types: [published] + workflow_dispatch: + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.x' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install setuptools wheel twine + - name: Build and publish + env: + TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} + TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + run: | + python setup.py sdist bdist_wheel + twine upload dist/* diff --git a/tinygrad_repo/.github/workflows/szdiff.yml b/tinygrad_repo/.github/workflows/szdiff.yml new file mode 100644 index 000000000..4222ef315 --- /dev/null +++ b/tinygrad_repo/.github/workflows/szdiff.yml @@ -0,0 +1,98 @@ +name: Check Line Counts +on: + pull_request_target: + +# Cancel the workflow in progress in newer build is about to start. +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + checkbranch: + name: Check PR Branch status + runs-on: ubuntu-latest + outputs: + branchstat: ${{ steps.brstat.outputs.stat}} + steps: + - name: Check code from PR branch + uses: actions/checkout@v4 + with: + repository: ${{ github.event.pull_request.head.repo.full_name }} + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: 0 + - name: Check whether branch is up-to-date + id: brstat + run: | + git remote add tinygrad https://github.com/tinygrad/tinygrad + git fetch tinygrad master + echo "${{ github.event.pull_request.head.sha }}" + git rev-list --left-right --count tinygrad/master...${{ github.event.pull_request.head.sha }} | awk '{print "Behind "$1" - Ahead "$2""}' + count=$(git rev-list --left-right --count tinygrad/master...${{ github.event.pull_request.head.sha }} | awk '{print $1}') + if [ $count -gt 0 ] + then + echo "Current branch is behind tinygrad master branch!" + echo "stat=true" >> "$GITHUB_OUTPUT" + else + echo "stat=false" >> "$GITHUB_OUTPUT" + fi + + szdiff: + name: Core Library Line Difference + permissions: + contents: read + pull-requests: write + runs-on: ubuntu-latest + needs: checkbranch + if: needs.checkbranch.outputs.branchstat == 'false' + steps: + - name: Checkout code from PR branch + uses: actions/checkout@v4 + with: + repository: ${{ github.event.pull_request.head.repo.full_name }} + ref: ${{ github.event.pull_request.head.sha }} + path: pr + # the base default to tinygrad master and cannot be other fork branch for security purpose + - name: Checkout code from tinygrad master + uses: actions/checkout@v4 + with: + path: base + - name: Set up Python 3.10 + uses: actions/setup-python@v5 + with: + python-version: '3.10' + - name: Count Line Diff + run: | + pip install tabulate + BASE="$GITHUB_WORKSPACE/base" + PR="$GITHUB_WORKSPACE/pr" + cp "$BASE/sz.py" . + echo "loc_content<> "$GITHUB_ENV" + python sz.py "$BASE" "$PR" >> "$GITHUB_ENV" + echo "EOF" >> "$GITHUB_ENV" + - name: Comment Code Line Diff + continue-on-error: false + uses: marocchino/sticky-pull-request-comment@v2 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ignore_empty: true + skip_unchanged: true + recreate: true + message: ${{ env.loc_content }} + + rebase: + name: Core Library Line Difference + permissions: + pull-requests: write + runs-on: ubuntu-latest + needs: checkbranch + if: needs.checkbranch.outputs.branchstat == 'true' + steps: + - name: Comment Rebase + continue-on-error: false + uses: marocchino/sticky-pull-request-comment@v2 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + skip_unchanged: true + recreate: true + message: | + This branch currently is behind tinygrad/master. The line count difference bot is disabled. diff --git a/tinygrad_repo/.github/workflows/test.yml b/tinygrad_repo/.github/workflows/test.yml new file mode 100644 index 000000000..0a357c2ed --- /dev/null +++ b/tinygrad_repo/.github/workflows/test.yml @@ -0,0 +1,1079 @@ +name: Unit Tests +env: + # increment this when downloads substantially change to avoid the internet + DOWNLOAD_CACHE_VERSION: '12' + PYTHON_CACHE_VERSION: '3' + APT_CACHE_VERSION: '1' + BUILD_CACHE_VERSION: '1' + CAPTURE_PROCESS_REPLAY: 1 + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +on: + push: + branches: + - master + pull_request: + workflow_dispatch: + +jobs: + llvmspeed: + name: LLVM Speed + runs-on: ubuntu-24.04 + timeout-minutes: 20 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: llvm-speed + deps: testing_minimal + llvm: 'true' + - name: External Benchmark Schedule + run: PYTHONPATH="." python3 test/external/external_benchmark_schedule.py + - name: Speed Test + run: LLVM=1 python3 test/speed/external_test_speed_v_torch.py + - name: Speed Test (BEAM=2) + run: BEAM=2 LLVM=1 python3 test/speed/external_test_speed_v_torch.py + + docs: + name: Docs + runs-on: ubuntu-22.04 + timeout-minutes: 10 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + deps: docs + pydeps: "capstone" + - name: Build wheel and show size + run: | + pip install build + python -m build --wheel --outdir dist + ls -lh dist/*.whl + - name: Use as an external package + run: | + mkdir $HOME/test_external_dir + cd $HOME/test_external_dir + python -m venv venv + source venv/bin/activate + pip install $GITHUB_WORKSPACE + python -c "from tinygrad.tensor import Tensor; print(Tensor([1,2,3,4,5]))" + pip install mypy + mypy -c "from tinygrad.tensor import Tensor; print(Tensor([1,2,3,4,5]))" + - name: Run beautiful_mnist with tinygrad only + run: | + mkdir $GITHUB_WORKSPACE/test_dir + cd $GITHUB_WORKSPACE/test_dir + python -m venv venv + source venv/bin/activate + pip install $GITHUB_WORKSPACE + cp $GITHUB_WORKSPACE/examples/beautiful_mnist.py . + PYTHONPATH=$GITHUB_WORKSPACE BS=2 STEPS=10 python beautiful_mnist.py + - name: Test Docs Build + run: python -m mkdocs build --strict + - name: Test Docs + run: | + python docs/abstractions2.py + python docs/abstractions3.py + - name: Test Quickstart + run: awk '/```python/{flag=1;next}/```/{flag=0}flag' docs/quickstart.md > quickstart.py && PYTHONPATH=. python quickstart.py + - name: Test DEBUG + run: DEBUG=100 python3 -c "from tinygrad import Tensor; N = 1024; a, b = Tensor.rand(N, N), Tensor.rand(N, N); c = (a.reshape(N, 1, N) * b.T.reshape(1, N, N)).sum(axis=2); print((c.numpy() - (a.numpy() @ b.numpy())).mean())" + - name: Compile EfficientNet to C and test it + run: | + CPU=1 PYTHONPATH="." python examples/compile_efficientnet.py > recognize.c + clang -O2 recognize.c -lm -o recognize + cat test/models/efficientnet/Chicken.jpg | ./recognize | grep cock + + autogen: + name: Autogen + runs-on: ubuntu-24.04 + timeout-minutes: 15 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + opencl: 'true' + amd: 'true' + cuda: 'true' + webgpu: 'true' + llvm: 'true' + - name: Install autogen support packages + run: sudo apt-get install -y --no-install-recommends llvm-14-dev libclang-14-dev + - name: Verify OpenCL autogen + run: | + cp tinygrad/runtime/autogen/opencl.py /tmp/opencl.py.bak + ./autogen_stubs.sh opencl + diff /tmp/opencl.py.bak tinygrad/runtime/autogen/opencl.py + - name: Verify CUDA autogen + run: | + cp tinygrad/runtime/autogen/cuda.py /tmp/cuda.py.bak + cp tinygrad/runtime/autogen/nv_gpu.py /tmp/nv_gpu.py.bak + ./autogen_stubs.sh cuda + ./autogen_stubs.sh nv + diff /tmp/cuda.py.bak tinygrad/runtime/autogen/cuda.py + diff /tmp/nv_gpu.py.bak tinygrad/runtime/autogen/nv_gpu.py + - name: Verify AMD autogen + run: | + cp tinygrad/runtime/autogen/hsa.py /tmp/hsa.py.bak + cp tinygrad/runtime/autogen/kfd.py /tmp/kfd.py.bak + cp tinygrad/runtime/autogen/comgr.py /tmp/comgr.py.bak + cp tinygrad/runtime/autogen/amd_gpu.py /tmp/amd_gpu.py.bak + cp tinygrad/runtime/autogen/sqtt.py /tmp/sqtt.py.bak + ./autogen_stubs.sh hsa + ./autogen_stubs.sh kfd + ./autogen_stubs.sh comgr + ./autogen_stubs.sh amd + ./autogen_stubs.sh sqtt + diff /tmp/hsa.py.bak tinygrad/runtime/autogen/hsa.py + diff /tmp/kfd.py.bak tinygrad/runtime/autogen/kfd.py + diff /tmp/comgr.py.bak tinygrad/runtime/autogen/comgr.py + diff /tmp/amd_gpu.py.bak tinygrad/runtime/autogen/amd_gpu.py + diff /tmp/sqtt.py.bak tinygrad/runtime/autogen/sqtt.py + - name: Verify Linux autogen + run: | + cp tinygrad/runtime/autogen/libc.py /tmp/libc.py.bak + cp tinygrad/runtime/autogen/io_uring.py /tmp/io_uring.py.bak + cp tinygrad/runtime/autogen/ib.py /tmp/ib.py.bak + ./autogen_stubs.sh libc + ./autogen_stubs.sh io_uring + ./autogen_stubs.sh ib + diff /tmp/libc.py.bak tinygrad/runtime/autogen/libc.py + diff /tmp/io_uring.py.bak tinygrad/runtime/autogen/io_uring.py + diff /tmp/ib.py.bak tinygrad/runtime/autogen/ib.py + - name: Verify WebGPU autogen + run: | + cp tinygrad/runtime/autogen/webgpu.py /tmp/webgpu.py.bak + ./autogen_stubs.sh webgpu + diff /tmp/webgpu.py.bak tinygrad/runtime/autogen/webgpu.py + - name: Verify LLVM autogen + run: | + cp tinygrad/runtime/autogen/llvm.py /tmp/llvm.py.bak + ./autogen_stubs.sh llvm + diff /tmp/llvm.py.bak tinygrad/runtime/autogen/llvm.py + + torchbackend: + name: Torch Backend Tests + runs-on: ubuntu-latest + timeout-minutes: 15 + env: + IGNORE_OOB: 0 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: torch-backend-pillow-torchvision-et-pt + deps: testing_minimal + pydeps: "pillow torchvision expecttest" + llvm: 'true' + - name: Install ninja + run: | + sudo apt update || true + sudo apt install -y --no-install-recommends ninja-build + - name: Lint with ruff + run: | + pip3 install --upgrade --force-reinstall ruff==0.11.0 + python3 -m ruff check extra/torch_backend/backend.py + - name: Test one op + run: PYTHONPATH=. FORWARD_ONLY=1 TINY_BACKEND=1 python3 test/test_ops.py TestOps.test_add + - name: Test ResNet-18 + run: PYTHONPATH=. DEBUG=2 python3 extra/torch_backend/example.py + - name: My (custom) tests + run: PYTHONPATH=. python3 extra/torch_backend/test.py + - name: Test one op in torch tests + run: PYTHONPATH=. DEBUG=2 python3 extra/torch_backend/torch_tests.py TestTinyBackendPRIVATEUSE1.test_unary_log_tiny_float32 + - name: Test Ops with TINY_BACKEND + run: PYTHONPATH=. LLVM=1 LLVMOPT=0 TINY_BACKEND=1 python3 -m pytest -n auto test/test_ops.py --durations=20 + - name: Test in-place operations on views + run: PYTHONPATH=. TORCH_DEBUG=1 python3 extra/torch_backend/test_inplace.py + - name: Test multi-gpu + run: PYTHONPATH=. LLVM=1 GPUS=4 TORCH_DEBUG=1 python3 extra/torch_backend/test_multigpu.py + + torchbackendmore: + name: Torch Backend Tests More + runs-on: ubuntu-latest + timeout-minutes: 15 + env: + IGNORE_OOB: 0 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: torch-backend-pillow-torchvision-et-pt + deps: testing_minimal + llvm: 'true' + - name: Install ninja + run: | + sudo apt update || true + sudo apt install -y --no-install-recommends ninja-build + - name: Test beautiful_mnist in torch with TINY_BACKEND + run: SPLIT_REDUCEOP=0 FUSE_ARANGE=1 PYTHONPATH=. LLVM=1 TARGET_EVAL_ACC_PCT=96.0 TINY_BACKEND=1 python3 examples/other_mnist/beautiful_mnist_torch.py + - name: Test some torch tests (expect failure) + run: PYTHONPATH=. python3 -m pytest extra/torch_backend/torch_tests.py -v --tb=no || true + + tc: + name: Tensor Core tests + runs-on: ubuntu-latest + timeout-minutes: 10 + env: + IGNORE_OOB: 0 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: uops-minimal + deps: testing_minimal + - name: Test IMAGE=2 support + run: | + IMAGE=2 PYTHON=1 python3 test/test_ops.py TestOps.test_gemm + IMAGE=2 PYTHON=1 python3 test/test_ops.py TestOps.test_simple_conv2d + - name: Test emulated METAL tensor cores + run: | + DEBUG=2 EMULATE_METAL=1 FORWARD_ONLY=1 PYTHON=1 python3 test/test_ops.py TestOps.test_big_gemm + PYTHONPATH=. DEBUG=2 EMULATE_METAL=1 FORWARD_ONLY=1 PYTHON=1 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores + PYTHONPATH=. DEBUG=2 EMULATE_METAL=1 FORWARD_ONLY=1 PYTHON=1 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores_padded TestLinearizer.test_tensor_cores_padded_uops + - name: Test emulated AMX tensor cores + run: PYTHONPATH=. DEBUG=2 AMX=1 EMULATE_AMX=1 FORWARD_ONLY=1 PYTHON=1 python3 test/test_ops.py TestOps.test_gemm + - name: Test emulated AMD tensor cores + run: | + PYTHONPATH=. DEBUG=2 EMULATE_AMD=1 FORWARD_ONLY=1 PYTHON=1 N=16 HALF=1 ACC_HALF=0 python3 ./extra/gemm/simple_matmul.py + PYTHONPATH=. DEBUG=2 EMULATE_AMD=1 FORWARD_ONLY=1 PYTHON=1 N=64 HALF=1 ACC_HALF=0 python3 ./extra/gemm/simple_matmul.py + PYTHONPATH=. DEBUG=2 EMULATE_AMD=1 FORWARD_ONLY=1 PYTHON=1 N=16 HALF=1 ACC_HALF=1 ATOL=1e-3 python3 ./extra/gemm/simple_matmul.py + PYTHONPATH=. DEBUG=2 EMULATE_AMD=1 FORWARD_ONLY=1 PYTHON=1 N=64 HALF=1 ACC_HALF=1 ATOL=1e-3 python3 ./extra/gemm/simple_matmul.py + PYTHONPATH=. DEBUG=2 EMULATE_AMD=1 FORWARD_ONLY=1 PYTHON=1 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores + PYTHONPATH=. DEBUG=2 EMULATE_AMD=1 FORWARD_ONLY=1 PYTHON=1 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores_padded_amd TestLinearizer.test_tensor_cores_padded_uops + - name: Test emulated AMD MFMA tensor cores + run: | + PYTHONPATH=. DEBUG=2 EMULATE_AMD_MFMA=1 FORWARD_ONLY=1 PYTHON=1 N=64 HALF=1 ACC_HALF=0 python3 ./extra/gemm/simple_matmul.py + PYTHONPATH=. DEBUG=2 EMULATE_AMD_MFMA=1 FORWARD_ONLY=1 PYTHON=1 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores + PYTHONPATH=. DEBUG=2 EMULATE_AMD_MFMA=1 FORWARD_ONLY=1 PYTHON=1 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores_padded TestLinearizer.test_tensor_cores_padded_uops + - name: Test emulated AMD RDNA4 tensor cores + run: | + PYTHONPATH=. DEBUG=2 EMULATE_AMD_RDNA4=1 FORWARD_ONLY=1 PYTHON=1 N=16 HALF=1 ACC_HALF=0 python3 ./extra/gemm/simple_matmul.py + PYTHONPATH=. DEBUG=2 EMULATE_AMD_RDNA4=1 FORWARD_ONLY=1 PYTHON=1 N=64 HALF=1 ACC_HALF=0 python3 ./extra/gemm/simple_matmul.py + PYTHONPATH=. DEBUG=2 EMULATE_AMD_RDNA4=1 FORWARD_ONLY=1 PYTHON=1 N=16 HALF=1 ACC_HALF=1 ATOL=1e-3 python3 ./extra/gemm/simple_matmul.py + PYTHONPATH=. DEBUG=2 EMULATE_AMD_RDNA4=1 FORWARD_ONLY=1 PYTHON=1 N=64 HALF=1 ACC_HALF=1 ATOL=1e-3 python3 ./extra/gemm/simple_matmul.py + PYTHONPATH=. DEBUG=2 EMULATE_AMD_RDNA4=1 FORWARD_ONLY=1 PYTHON=1 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores + PYTHONPATH=. DEBUG=2 EMULATE_AMD_RDNA4=1 FORWARD_ONLY=1 PYTHON=1 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores_padded TestLinearizer.test_tensor_cores_padded_uops + - name: Test emulated CUDA tensor cores + run: | + DEBUG=2 EMULATE_CUDA=1 FORWARD_ONLY=1 PYTHON=1 python3 test/test_ops.py TestOps.test_gemm_fp16 + DEBUG=2 EMULATE_CUDA=1 ALLOW_TF32=1 FORWARD_ONLY=1 PYTHON=1 python3 test/test_ops.py TestOps.test_gemm + DEBUG=2 EMULATE_CUDA_SM75=1 FORWARD_ONLY=1 PYTHON=1 python3 test/test_ops.py TestOps.test_gemm_fp16 + PYTHONPATH="." DEBUG=2 EMULATE_CUDA=1 ALLOW_TF32=1 FORWARD_ONLY=1 PYTHON=1 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores + PYTHONPATH="." DEBUG=2 EMULATE_CUDA=1 ALLOW_TF32=1 FORWARD_ONLY=1 PYTHON=1 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores_padded TestLinearizer.test_tensor_cores_padded_uops + - name: Test emulated INTEL OpenCL tensor cores + run: DEBUG=2 EMULATE_INTEL=1 FORWARD_ONLY=1 PYTHON=1 HALF=1 N=64 python3 ./extra/gemm/simple_matmul.py + - name: Full test tensor cores + run: | + PYTHONPATH=. DEBUG=2 EMULATE_METAL=1 FORWARD_ONLY=1 PYTHON=1 python3 ./test/test_linearizer.py TestLinearizer.test_tensor_cores + PYTHONPATH=. DEBUG=2 EMULATE_AMD=1 FORWARD_ONLY=1 PYTHON=1 python3 ./test/test_linearizer.py TestLinearizer.test_tensor_cores + PYTHONPATH=. DEBUG=2 EMULATE_CUDA=1 ALLOW_TF32=1 FORWARD_ONLY=1 PYTHON=1 python3 ./test/test_linearizer.py TestLinearizer.test_tensor_cores + PYTHONPATH=. DEBUG=2 EMULATE_INTEL=1 FORWARD_ONLY=1 PYTHON=1 python3 ./test/test_linearizer.py TestLinearizer.test_tensor_cores + PYTHONPATH=. DEBUG=2 AMX=1 EMULATE_AMX=1 FORWARD_ONLY=1 PYTHON=1 python3 ./test/test_linearizer.py TestLinearizer.test_tensor_cores + - name: Test device flop counts + run: | + PYTHONPATH=. DEBUG=2 EMULATE_METAL=1 PYTHON=1 python3 ./test/test_uops_stats.py TestUOpsStatsMatmulHalf + PYTHONPATH=. DEBUG=2 EMULATE_AMD=1 PYTHON=1 python3 ./test/test_uops_stats.py TestUOpsStatsMatmulHalf + PYTHONPATH=. DEBUG=2 EMULATE_CUDA=1 PYTHON=1 python3 ./test/test_uops_stats.py TestUOpsStatsMatmulHalf + PYTHONPATH=. DEBUG=2 EMULATE_INTEL=1 PYTHON=1 python3 ./test/test_uops_stats.py TestUOpsStatsMatmulHalf + PYTHONPATH=. DEBUG=2 AMX=1 EMULATE_AMX=1 PYTHON=1 python3 ./test/test_uops_stats.py TestUOpsStats.test_simple_matmul + + bepython: + name: Python Backend + runs-on: ubuntu-latest + timeout-minutes: 10 + env: + IGNORE_OOB: 0 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: be-minimal + deps: testing_minimal + - name: Test dtype with Python emulator + run: DEBUG=1 PYTHONPATH=. PYTHON=1 python3 -m pytest -n=auto test/test_dtype.py test/test_dtype_alu.py + - name: Test ops with Python emulator + run: DEBUG=2 PYTHON=1 python3 -m pytest -n=auto test/test_ops.py -k "not (test_split or test_simple_cumsum or test_cumsum or test_einsum or test_dot or test_dot_1d or test_big_gemm or test_broadcastdot or test_multidot or test_var_axis or test_std_axis or test_broadcast_full or test_broadcast_partial or test_simple_conv3d or test_dilated_conv_transpose2d or test_simple_conv_transpose3d or test_large_input_conv2d or test_max_pool2d or test_max_pool2d_simple or test_max_pool2d_bigger_stride or test_avg_pool2d or test_cat or test_scaled_product_attention or test_scaled_product_attention_causal or test_slice_fancy_indexing_dim_inject_none or test_slice_fancy_indexing_list_indices or test_slice_fancy_indexing_no_dim_collapse or test_slice_fancy_indexing_tuple_indices or test_slice_fancy_indexing_list_with_tensors or test_slice_fancy_indexing_dim_collapse_int or test_interpolate_bilinear or test_interpolate_bilinear_corners_aligned or test_scaled_dot_product_attention or test_cummax or test_simple_cummax or test_logcumsumexp or test_sort or test_cumprod)" --durations=20 + - name: Test uops with Python emulator + run: PYTHON=1 python3 -m pytest test/test_uops.py --durations=20 + - name: Test symbolic with Python emulator + run: PYTHONPATH=. PYTHON=1 python3 test/test_symbolic_ops.py + - name: test_renderer_failures with Python emulator + run: PYTHONPATH=. PYTHON=1 python3 -m pytest -rA test/test_renderer_failures.py::TestRendererFailures + + linter: + name: Linters + runs-on: ubuntu-latest + timeout-minutes: 10 + + # TODO: run the pre-commit hook to replace a lot of this + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: linting-only + python-version: '3.10' + deps: linting + - name: Lint bad-indentation and trailing-whitespace with pylint + run: python -m pylint --disable=all -e W0311 -e C0303 --jobs=0 --indent-string=' ' --recursive=y . + - name: Lint with ruff + run: | + pip3 install --upgrade --force-reinstall ruff==0.11.0 + python3 -m ruff check . + python3 -m ruff check examples/mlperf/ --ignore E501 + - name: Lint tinygrad with pylint + run: python -m pylint tinygrad/ + - name: Run mypy + run: | + python -m mypy --strict-equality --lineprecision-report . + cat lineprecision.txt + - name: Run TYPED=1 + run: TYPED=1 python -c "import tinygrad" + + unittest: + name: Unit Tests + runs-on: ubuntu-latest + timeout-minutes: 15 + + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: unittest-12 + pydeps: "pillow" + deps: testing_unit + - name: Test README + run: awk '/```python/{flag=1;next}/```/{flag=0}flag' README.md > README.py && PYTHONPATH=. python README.py + - name: Run unit tests + run: PYTHONPATH="." python -m pytest -n=auto test/unit/ --durations=20 + - name: Run targetted tests on NULL backend + run: PYTHONPATH="." NULL=1 python3 test/test_multitensor.py TestMultiTensor.test_data_parallel_resnet_train_step + - name: Run SDXL on NULL backend + run: MAX_BUFFER_SIZE=0 PYTHONPATH="." NULL=1 DEBUG=1 python3 examples/sdxl.py --seed 0 --noshow --timing --fakeweights + # TODO: support fake weights + #- name: Run LLaMA 7B on 4 fake devices + # run: NULL=1 python3 examples/llama.py --gen 1 --size 7B --shard 4 --prompt "Hello." --count 3 --temperature 0 --timing + - name: Run GC tests + run: PYTHONPATH="." python test/external/external_uop_gc.py + - name: Run process replay tests + uses: ./.github/actions/process-replay + - name: Regen dataset on test_tiny + run: | + test/external/process_replay/reset.py + CAPTURE_PROCESS_REPLAY=1 python test/test_tiny.py TestTiny.test_plus + PYTHONPATH=. python extra/optimization/extract_dataset.py + gzip -c /tmp/sops > extra/datasets/sops.gz + DEBUG=1 MIN_ASTS=1 PYTHONPATH=. python extra/optimization/get_action_space.py + - name: Repo line count < 17500 lines + run: MAX_LINE_COUNT=17500 python sz.py + + fuzzing: + name: Fuzzing + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: fuzzing-unit + deps: testing_unit + - name: Fuzz Test symbolic + run: python test/external/fuzz_symbolic.py + - name: Fuzz Test fast idiv + run: python test/external/fuzz_fast_idiv.py + - name: Fuzz Test shapetracker + run: | + PYTHONPATH="." python test/external/fuzz_shapetracker.py + PYTHONPATH="." python test/external/fuzz_shapetracker_math.py + - name: Fuzz Test shape ops + run: python test/external/fuzz_shape_ops.py + + testgpuimage: + name: 'GPU IMAGE Tests' + runs-on: ubuntu-22.04 + timeout-minutes: 10 + env: + IGNORE_OOB: 0 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: gpu-image + deps: testing_minimal + opencl: 'true' + - name: Run Kernel Count Test + run: PYTHONPATH="." GPU=1 python -m pytest -n=auto test/external/external_test_opt.py + - name: Test WINO=1 + run: GPU=1 DEBUG=2 WINO=1 python3 test/test_ops.py TestOps.test_simple_conv2d + - name: Test GPU IMAGE=2 ops + training + run: | + PYTHONPATH="." GPU=1 IMAGE=2 python -m pytest -n=auto test/test_ops.py --durations=20 + PYTHONPATH="." GPU=1 IMAGE=2 python3 test/models/test_end2end.py TestEnd2End.test_linear_mnist + - name: Run fused optimizer tests + run: PYTHONPATH="." GPU=1 FUSE_OPTIM=1 python -m pytest -n=auto test/models/test_mnist.py + - name: Run process replay tests + uses: ./.github/actions/process-replay + + testgendataset: + name: 'GPU Generate Kernel Dataset' + runs-on: ubuntu-22.04 + timeout-minutes: 10 + env: + IGNORE_OOB: 0 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: gen-dataset + deps: testing_minimal + opencl: 'true' + - name: Generate Dataset + run: PYTHONPATH="." extra/optimization/generate_dataset.sh + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: sops.gz + path: /tmp/sops.gz + + testopenpilot: + name: 'openpilot Compile Tests' + runs-on: ubuntu-22.04 + timeout-minutes: 15 + env: + IGNORE_OOB: 0 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: openpilot-compile + deps: testing + opencl: 'true' + llvm: 'true' + - name: Test openpilot model kernel count and gate usage + run: | + PYTHONPATH="." ALLOWED_KERNEL_COUNT=208 ALLOWED_READ_IMAGE=2134 ALLOWED_GATED_READ_IMAGE=13 FLOAT16=0 GPU=1 IMAGE=2 python examples/openpilot/compile3.py https://github.com/commaai/openpilot/raw/v0.9.4/selfdrive/modeld/models/supercombo.onnx + - name: Test openpilot alt model correctness (float32) + run: PYTHONPATH="." FLOAT16=0 DEBUGCL=1 GPU=1 IMAGE=2 python examples/openpilot/compile3.py https://github.com/commaai/openpilot/raw/3799fe46b3a629e491d4b8498b8ae83e4c88c304/selfdrive/modeld/models/supercombo.onnx + - name: Test openpilot fastvits model correctness (float32) + run: PYTHONPATH="." FLOAT16=0 DEBUGCL=1 GPU=1 IMAGE=2 python examples/openpilot/compile3.py https://github.com/commaai/openpilot/raw/9118973ed03c1ae1d40cf69a29507ec2cc78efd7/selfdrive/modeld/models/supercombo.onnx + # - name: Test openpilot simple_plan vision model correctness (float32) + # run: PYTHONPATH="." FLOAT16=0 DEBUGCL=1 GPU=1 IMAGE=2 python examples/openpilot/compile3.py https://gitlab.com/commaai/openpilot-lfs.git/gitlab-lfs/objects/35ff4f4577002f2685e50c8346addae33fe8da27a41dd4d6a0f14d1f4b1af81b + - name: Test openpilot LLVM compile + run: PYTHONPATH="." LLVM=1 LLVMOPT=1 JIT=2 BEAM=0 IMAGE=0 python examples/openpilot/compile3.py https://github.com/commaai/openpilot/raw/9118973ed03c1ae1d40cf69a29507ec2cc78efd7/selfdrive/modeld/models/supercombo.onnx + - name: Test openpilot compile4 + run: PYTHONPATH="." NOLOCALS=1 GPU=1 IMAGE=2 FLOAT16=1 DEBUG=2 python3 examples/openpilot/compile4.py + - name: Run process replay tests + uses: ./.github/actions/process-replay + + testonnxcpu: + name: 'ONNX (CPU) Tests' + runs-on: ubuntu-22.04 + timeout-minutes: 20 + env: + IGNORE_OOB: 0 + + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: onnxoptc + deps: testing + python-version: '3.11' + llvm: 'true' + - name: Test ONNX (CPU) + run: CPU=1 python -m pytest -n=auto test/external/external_test_onnx_backend.py --durations=20 + - name: Test ONNX (LLVM) + run: LLVM=1 python -m pytest -n=auto test/external/external_test_onnx_backend.py --durations=20 + - name: Test ONNX Runner (CPU) + run: CPU=1 PYTHONPATH=. python3 test/external/external_test_onnx_runner.py + - name: Test Additional ONNX Ops (CPU) + run: CPU=1 PYTHONPATH=. python3 test/external/external_test_onnx_ops.py + - name: Test Quantize ONNX + run: CPU=1 PYTHONPATH=. python3 test/test_quantize_onnx.py + - name: Run process replay tests + uses: ./.github/actions/process-replay + + testopencl: + name: 'ONNX (GPU)+Optimization Tests' + runs-on: ubuntu-22.04 + timeout-minutes: 20 + env: + IGNORE_OOB: 0 + + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: onnxoptl + deps: testing + pydeps: "tensorflow==2.15.1 tensorflow_addons" + python-version: '3.11' + opencl: 'true' + - name: Test ONNX (GPU) + run: GPU=1 python -m pytest -n=auto test/external/external_test_onnx_backend.py --durations=20 + - name: Test Optimization Helpers + run: PYTHONPATH="." DEBUG=1 python3 extra/optimization/test_helpers.py + #- name: Test Action Space + # run: PYTHONPATH="." DEBUG=1 GPU=1 python3 extra/optimization/get_action_space.py + - name: Test Beam Search + run: PYTHONPATH="." GPU=1 IGNORE_BEAM_CACHE=1 python3 -m pytest extra/optimization/test_beam_search.py + - name: Test MLPerf stuff + run: GPU=1 python -m pytest -n=auto test/external/external_test_optim.py test/external/external_test_losses.py test/external/external_test_metrics.py test/external/external_test_datasets.py --durations=20 + - name: Test llama 3 training + run: MAX_BUFFER_SIZE=0 PYTHONPATH="." DEV=NULL SAMPLES=300 BS=8 SEQLEN=512 GRADIENT_ACC_STEPS=8 FAKEDATA=1 DEFAULT_FLOAT=bfloat16 OPTIM_DTYPE=bfloat16 LLAMA3_SIZE=1B MODEL=llama3 python3 examples/mlperf/model_train.py + - name: Run process replay tests + uses: ./.github/actions/process-replay + + testllm: + name: Test LLM + runs-on: ubuntu-24.04 + timeout-minutes: 15 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: apps_llm + - name: Test 1B LLM + run: echo "What's a male chicken called? Answer with only one word." | MAX_BUFFER_SIZE=0 python3 -m tinygrad.apps.llm | grep -i rooster + + testmodels: + name: Models (llvm+cpu+gpu) + runs-on: ubuntu-22.04 + timeout-minutes: 15 + env: + IGNORE_OOB: 0 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: models + deps: testing + opencl: 'true' + llvm: 'true' + - name: Test models (llvm) + run: LLVM=1 python -m pytest -n=auto test/models --durations=20 + - name: Test models (gpu) + run: GPU=1 python -m pytest -n=auto test/models --durations=20 + - name: Test models (cpu) + run: CPU=1 python -m pytest -n=auto test/models --durations=20 + - name: Run process replay tests + uses: ./.github/actions/process-replay + + testrangeify: + name: Linux (rangeify) + runs-on: ubuntu-24.04 + timeout-minutes: 15 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: rangeify-minimal-llvm + deps: testing_minimal + llvm: "true" + - name: Test CPU=1 RANGEIFY=1 + # TODO: add more passing tests here + # test_symbolic_arange_sym_step is passing now + # test_threefry_doesnt_use_long is because there's a contig after the long now + run: | + CPU=1 RANGEIFY=1 python3 -m pytest -n auto --durations 20 \ + -k "not test_symbolic_arange_sym_step and not test_threefry_doesnt_use_long" \ + test/test_tiny.py test/test_rangeify.py test/test_ops.py test/test_tensor_variable.py \ + test/test_outerworld_range.py test/test_sample.py test/test_randomness.py test/test_tensor_data.py + - name: Test CPU=1 RANGEIFY=2 + run: CPU=1 RANGEIFY=2 python3 -m pytest -n auto test/test_tiny.py test/test_rangeify.py test/test_ops.py --durations 20 + - name: Test LLVM=1 RANGEIFY=1 (slow tests) + run: LLVM=1 RANGEIFY=1 python3 -m pytest -n auto test/models/test_mnist.py --durations 20 + + testdevectorize: + name: Linux (devectorize) + runs-on: ubuntu-24.04 + timeout-minutes: 15 + env: + IGNORE_OOB: 0 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: devectorize-minimal + deps: testing_minimal + pydeps: "pillow" + llvm: "true" + - name: Test LLVM=1 DEVECTORIZE=0 + run: LLVM=1 DEVECTORIZE=0 python3 -m pytest -n auto test/test_tiny.py test/test_ops.py -k "not test_avg_pool3d_failure" + - name: Test LLVM=1 DEVECTORIZE=0 for model + run: PYTHONPATH="." LLVM=1 DEVECTORIZE=0 python3 test/models/test_efficientnet.py + - name: Test CPU=1 DEVECTORIZE=0 + run: CPU=1 DEVECTORIZE=0 FUSE_ARANGE=0 python3 -m pytest -n auto test/test_tiny.py test/test_ops.py -k "not test_avg_pool3d_failure" + + testdsp: + name: Linux (DSP) + runs-on: ubuntu-24.04 + timeout-minutes: 15 + env: + IGNORE_OOB: 0 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: dsp-minimal + deps: testing_minimal + pydeps: "onnx==1.18.0 onnxruntime pillow" + llvm: "true" + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build QEMU Docker with cache + uses: docker/build-push-action@v4 + with: + file: extra/dsp/Dockerfile + push: false + load: true + tags: qemu-hexagon:latest + cache-from: type=gha + cache-to: type=gha,mode=min + - name: Set MOCKDSP env + run: printf "MOCKDSP=1" >> $GITHUB_ENV + - name: Run test_tiny on DSP + run: DEBUG=2 DSP=1 python test/test_tiny.py + - name: Test transcendentals + run: CC=clang-20 PYTHONPATH="." DEBUG=2 DSP=1 python test/test_transcendental.py TestTranscendentalVectorized + - name: Test quantize onnx + run: PYTHONPATH="." DEBUG=2 DSP=1 python3 test/test_quantize_onnx.py + + testwebgpu: + name: Linux (WebGPU) + runs-on: ubuntu-22.04 + timeout-minutes: 20 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: webgpu-minimal + deps: testing_minimal + python-version: '3.11' + webgpu: 'true' + - name: Check Device.DEFAULT (WEBGPU) and print some source + run: | + WEBGPU=1 python -c "from tinygrad import Device; assert Device.DEFAULT == 'WEBGPU', Device.DEFAULT" + WEBGPU=1 DEBUG=4 FORWARD_ONLY=1 python3 test/test_ops.py TestOps.test_add + - name: Run selected webgpu tests + run: | + WEBGPU=1 WEBGPU_BACKEND="WGPUBackendType_Vulkan" python3 -m pytest -n=auto test/ --ignore=test/models --ignore=test/unit \ + --ignore=test/test_copy_speed.py --ignore=test/test_rearrange_einops.py \ + --ignore=test/test_fuzz_shape_ops.py --durations=20 + - name: Run process replay tests + uses: ./.github/actions/process-replay + + testamd: + strategy: + fail-fast: false + matrix: + backend: [amd, amdllvm] + + name: Linux (${{ matrix.backend }}) + runs-on: ubuntu-22.04 + timeout-minutes: 20 + env: + IGNORE_OOB: 0 + AMD: 1 + MOCKGPU: 1 + FORWARD_ONLY: 1 + AMD_LLVM: ${{ matrix.backend == 'amdllvm' && '1' || matrix.backend != 'amdllvm' && '0' }} + PYTHONPATH: ${{ github.workspace }} + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: ${{ matrix.backend }}-minimal + deps: testing_minimal + amd: 'true' + llvm: ${{ matrix.backend == 'amdllvm' && 'true' }} + - name: Check Device.DEFAULT and print some source + run: | + python3 -c "from tinygrad import Device; assert Device.DEFAULT in ['AMD'], Device.DEFAULT" + DEBUG=5 FORWARD_ONLY=1 python3 test/test_ops.py TestOps.test_add + - name: Run LLVM test + if: matrix.backend=='amdllvm' + run: python test/device/test_amd_llvm.py + - name: Run pytest (amd) + run: python -m pytest -n=auto test/test_ops.py test/test_dtype.py test/test_dtype_alu.py test/test_linearizer.py test/test_randomness.py test/test_jit.py test/test_graph.py test/test_multitensor.py test/device/test_hcq.py --durations=20 + - name: Run pytest (amd) + run: python -m pytest test/external/external_test_am.py --durations=20 + - name: Run TRANSCENDENTAL math + run: TRANSCENDENTAL=2 python -m pytest -n=auto test/test_ops.py::TestOps::test_sin test/test_ops.py::TestOps::test_cos test/test_ops.py::TestOps::test_tan test/test_ops.py::TestOps::test_exp test/test_ops.py::TestOps::test_log --durations=20 + - name: Run TestOps.test_add with SQTT + run: | + PROFILE=1 SQTT=1 DEBUG=5 python3 test/test_ops.py TestOps.test_add + extra/sqtt/rgptool.py create "/tmp/profile.pkl.$USER" -o /tmp/gpu0.rgp + - name: Run process replay tests + uses: ./.github/actions/process-replay + + testnvidia: + strategy: + fail-fast: false + matrix: + backend: [ptx, nv] + + name: Linux (${{ matrix.backend }}) + runs-on: ubuntu-22.04 + timeout-minutes: 20 + + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: ${{ matrix.backend }}-minimal + deps: testing_minimal + cuda: 'true' + ocelot: 'true' + - name: Set env + run: printf "${{ matrix.backend == 'PTX' && 'FORWARD_ONLY=1\nJIT=1\nOPT=2\nCUDA=1\nPTX=1\nMOCKGPU=1' || matrix.backend == 'nv' && 'NV=1\nMOCKGPU=1\nFORWARD_ONLY=1' }}" >> $GITHUB_ENV + - name: Check Device.DEFAULT and print some source + run: | + PYTHONPATH=${{ github.workspace }} python3 -c "from tinygrad import Device; assert Device.DEFAULT in ['CUDA','NV'], Device.DEFAULT" + DEBUG=5 PYTHONPATH=${{ github.workspace }} FORWARD_ONLY=1 python3 test/test_ops.py TestOps.test_add + - name: Run pytest (cuda) + # skip multitensor because it's slow + run: python -m pytest -n=auto test/ --ignore=test/models --ignore=test/unit --ignore test/test_gc.py --ignore test/test_multitensor.py --durations=20 + - name: Run process replay tests + uses: ./.github/actions/process-replay + + tests: + strategy: + fail-fast: false + matrix: + backend: [llvm, cpu, gpu] + + name: Linux (${{ matrix.backend }}) + runs-on: ubuntu-22.04 + timeout-minutes: 20 + env: + IGNORE_OOB: 0 + + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: ${{ matrix.backend }}-minimal + deps: testing_minimal + opencl: ${{ matrix.backend == 'gpu' && 'true' }} + llvm: ${{ matrix.backend == 'llvm' && 'true' }} + - name: Set env + run: printf "${{ matrix.backend == 'llvm' && 'LLVM=1' || matrix.backend == 'cpu' && 'CPU=1' || matrix.backend == 'gpu' && 'GPU=1' }}" >> $GITHUB_ENV + - name: Check Device.DEFAULT and print some source + run: | + PYTHONPATH=${{ github.workspace }} python3 -c "from tinygrad import Device; assert Device.DEFAULT in ['LLVM','CPU','GPU'], Device.DEFAULT" + DEBUG=5 PYTHONPATH=${{ github.workspace }} FORWARD_ONLY=1 python3 test/test_ops.py TestOps.test_add + - name: Run pytest (not cuda) + run: python -m pytest -n=auto test/ --ignore=test/models --ignore=test/unit --durations=20 + - name: Run TRANSCENDENTAL math + run: TRANSCENDENTAL=2 python -m pytest -n=auto test/test_ops.py::TestOps::test_sin test/test_ops.py::TestOps::test_cos test/test_ops.py::TestOps::test_tan test/test_ops.py::TestOps::test_exp test/test_ops.py::TestOps::test_log --durations=20 + - name: Run process replay tests + uses: ./.github/actions/process-replay + +# ****** OSX Tests ****** + + testmetal2: + name: MacOS (unit) + runs-on: macos-14 + timeout-minutes: 20 + env: + IGNORE_OOB: 0 + + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: metal2 + deps: testing + python-version: '3.11' + amd: 'true' + cuda: 'true' + ocelot: 'true' + llvm: 'true' + - name: Run real world test + run: METAL=1 python -m pytest -n=auto test/models/test_real_world.py --durations=20 + - name: Test models (Metal) + run: METAL=1 python -m pytest -n=auto test/models -v --durations=20 + - name: Run ONNX + run: METAL=1 python -m pytest -n=auto test/external/external_test_onnx_backend.py --durations=20 + - name: Test tensor core ops (fake) + run: TC=2 METAL=1 DEBUG=3 python test/test_ops.py TestOps.test_gemm + - name: Test tensor core ops (real) + run: METAL=1 DEBUG=3 python test/test_ops.py TestOps.test_big_gemm + - name: Test LLaMA compile speed + run: PYTHONPATH="." METAL=1 python test/external/external_test_speed_llama.py + - name: Test Beam Search + run: PYTHONPATH="." METAL=1 IGNORE_BEAM_CACHE=1 python3 -m pytest extra/optimization/test_beam_search.py + #- name: Fuzz Test linearizer + # run: PYTHONPATH="." METAL=1 DEPTH=4 FUZZ_N=50 FUZZ_MAX_SIZE=1000000 python test/external/fuzz_linearizer.py + - name: Run TRANSCENDENTAL math + run: TRANSCENDENTAL=2 python -m pytest -n=auto test/test_ops.py::TestOps::test_sin test/test_ops.py::TestOps::test_cos test/test_ops.py::TestOps::test_tan test/test_ops.py::TestOps::test_exp test/test_ops.py::TestOps::test_log --durations=20 + - name: Run pytest (amd) + env: + MOCKGPU: 1 + AMD: 1 + FORWARD_ONLY: 1 + run: | + python3 -m pytest -n=auto test/device/test_hcq.py test/test_tiny.py --durations=20 + - name: Run pytest (amd with llvm backend) + env: + MOCKGPU: 1 + AMD: 1 + FORWARD_ONLY: 1 + run: | + python -m pytest -n=auto test/device/test_hcq.py test/test_tiny.py test/device/test_amd_llvm.py --durations=20 + - name: Run pytest (ptx) + env: + MOCKGPU: 1 + PTX: 1 + NV: 1 + FORWARD_ONLY: 1 + run: | + python3 -m pytest -n=auto test/device/test_hcq.py test/test_tiny.py --durations=20 + - name: Run process replay tests + uses: ./.github/actions/process-replay + + osxwebgpu: + name: MacOS (WebGPU) + runs-on: macos-14 + timeout-minutes: 10 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: osx-webgpu + deps: testing + webgpu: 'true' + - name: Test infinity math in WGSL + run: WEBGPU=1 python -m pytest -n=auto test/test_renderer_failures.py::TestWGSLFailures::test_multiply_infinity --durations=20 + - name: Build WEBGPU Efficientnet + run: WEBGPU=1 WEBGPU_BACKEND="WGPUBackendType_Metal" python3 -m examples.compile_efficientnet + - name: Clean npm cache + run: npm cache clean --force + - name: Install Puppeteer + run: npm install puppeteer + # this is also flaky + #- name: Run WEBGPU Efficientnet + # run: node test/web/test_webgpu.js + # this is flaky + #- name: Run VIZ tests as external package + # run: | + # mkdir $GITHUB_WORKSPACE/test_dir + # cd $GITHUB_WORKSPACE/test_dir + # python -m venv venv + # source venv/bin/activate + # pip install $GITHUB_WORKSPACE + # cp $GITHUB_WORKSPACE/test/web/test_viz.js . + # node test_viz.js + - name: Test ONNX Runner (WEBGPU) + run: WEBGPU=1 PYTHONPATH=. python3 test/external/external_test_onnx_runner.py + + osxremote: + name: MacOS (remote metal) + runs-on: macos-15 + timeout-minutes: 10 + env: + REMOTE: 1 + REMOTEDEV: METAL + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: macos-remote + deps: testing_minimal + - name: Check Device.DEFAULT and print some source + run: | + python -c "from tinygrad import Device; assert Device.DEFAULT == 'REMOTE', Device.DEFAULT" + python -c "from tinygrad import Device; assert Device.default.properties.real_device == 'METAL', Device.default.properties.real_device" + DEBUG=4 python3 test/test_tiny.py TestTiny.test_plus + - name: Run REMOTE=1 Test + run: | + python3 -m pytest test/test_tiny.py test/test_jit.py test/test_subbuffer.py test/test_graph.py test/test_multitensor.py test/test_tensor_variable.py + + amdremote: + name: Linux (remote) + runs-on: ubuntu-22.04 + timeout-minutes: 20 + env: + REMOTE: 1 + PYTHONPATH: ${{ github.workspace }} + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: linux-remote + deps: testing_minimal + amd: 'true' + llvm: 'true' + opencl: 'true' + - name: Start remote server + run: | + start_server() { + systemd-run --user \ + --unit="$1" \ + --setenv=REMOTEDEV="$2" \ + --setenv=MOCKGPU=1 \ + --setenv=PYTHONPATH=. \ + --setenv=PORT="$3" \ + --working-directory="$(pwd)" \ + python tinygrad/runtime/ops_remote.py + } + + start_server "remote-server-amd-1" "AMD" 6667 + start_server "remote-server-amd-2" "AMD" 6668 + start_server "remote-server-gpu" "GPU" 7667 + start_server "remote-server-cpu" "CPU" 8667 + - name: Check Device.DEFAULT and print some source + env: + HOST: 127.0.0.1:6667*6,127.0.0.1:6668*6 + run: | + python -c "from tinygrad import Device; assert Device.DEFAULT == 'REMOTE', Device.DEFAULT" + python -c "from tinygrad import Device; assert Device.default.properties.real_device == 'AMD', Device.default.properties.real_device" + DEBUG=4 python3 test/test_tiny.py TestTiny.test_plus + - name: Run REMOTE=1 Test (AMD) + env: + HOST: 127.0.0.1:6667*6,127.0.0.1:6668*6 + run: | + python3 -m pytest test/test_tiny.py test/test_jit.py test/test_subbuffer.py test/test_graph.py test/test_multitensor.py test/test_remote.py test/test_tensor_variable.py --durations 20 + - name: Run REMOTE=1 Test (GPU) + env: + HOST: 127.0.0.1:7667*6 + run: | + python3 -m pytest test/test_tiny.py test/test_image_dtype.py test/test_jit.py --durations 20 + IMAGE=2 python3 -m pytest test/test_tiny.py test/test_image_dtype.py + - name: Run REMOTE=1 Test (CPU) + env: + HOST: 127.0.0.1:8667*6 + run: | + python3 -m pytest test/test_tiny.py test/test_jit.py test/test_multitensor.py --durations 20 + - name: Show remote server logs + if: always() + run: | + journalctl --user -u remote-server-amd-1 --no-pager + journalctl --user -u remote-server-amd-2 --no-pager + journalctl --user -u remote-server-gpu --no-pager + journalctl --user -u remote-server-cpu --no-pager + + osxtests: + strategy: + fail-fast: false + matrix: + backend: [metal, llvm, cpu] + name: MacOS (${{ matrix.backend }}) + runs-on: macos-15 + timeout-minutes: 20 + env: + IGNORE_OOB: 0 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: macos-${{ matrix.backend }}-minimal + deps: testing_minimal + pydeps: "capstone" + llvm: ${{ matrix.backend == 'llvm' && 'true' }} + - name: Set env + run: printf "${{ matrix.backend == 'llvm' && 'LLVM=1' || matrix.backend == 'cpu' && 'CPU=1' || matrix.backend == 'metal' && 'METAL=1'}}" >> $GITHUB_ENV + - name: Check Device.DEFAULT and print some source + run: | + python -c "from tinygrad import Device; assert Device.DEFAULT == '${{ matrix.backend }}'.upper(), Device.DEFAULT" + DEBUG=4 python3 test/test_tiny.py TestTiny.test_plus + - name: Run pytest (${{ matrix.backend }}) + run: python3 -m pytest -n=auto test/ --ignore=test/models --ignore=test/unit --durations=20 + - name: Run process replay tests + uses: ./.github/actions/process-replay + - name: Run macOS-specific unit test + if: matrix.backend == 'cpu' + run: python3 -m pytest test/unit/test_disk_tensor.py::TestDiskTensor::test_copy_to_cpu_not_truncated + +# ****** Windows Tests ****** + + wintests: + strategy: + fail-fast: false + matrix: + backend: [llvm, cpu, webgpu] + + name: Windows (${{ matrix.backend }}) + runs-on: windows-latest + timeout-minutes: 15 + env: + IGNORE_OOB: 0 + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Environment + uses: ./.github/actions/setup-tinygrad + with: + key: windows-${{ matrix.backend }}-minimal + deps: testing_unit + pydeps: ${{ matrix.backend == 'webgpu' && 'dawn-python' || '' }} + - name: Set env + shell: bash + run: printf "${{ matrix.backend == 'llvm' && 'LLVM=1' || matrix.backend == 'cpu' && 'CPU=1' || matrix.backend == 'webgpu' && 'WEBGPU=1'}}" >> $GITHUB_ENV + - name: Run unit tests + if: matrix.backend=='llvm' + run: python -m pytest -n=auto test/unit/ --ignore=test/unit/test_disk_tensor.py --ignore=test/unit/test_elf.py --ignore=test/unit/test_tar.py + - name: Run pytest (${{ matrix.backend }}) + shell: bash + run: | + python -c "from tinygrad import Device; assert Device.DEFAULT == '${{ matrix.backend }}'.upper(), Device.DEFAULT" + python -m pytest -n=auto test/test_tiny.py test/test_ops.py --durations=20 diff --git a/tinygrad_repo/autogen_stubs.sh b/tinygrad_repo/autogen_stubs.sh index 0ae804836..b60ced508 100644 --- a/tinygrad_repo/autogen_stubs.sh +++ b/tinygrad_repo/autogen_stubs.sh @@ -198,11 +198,7 @@ generate_amd() { clang2py -k cdefstum \ extra/hip_gpu_driver/sdma_registers.h \ extra/hip_gpu_driver/nvd.h \ - extra/hip_gpu_driver/kfd_pm4_headers_ai.h \ - extra/hip_gpu_driver/soc21_enum.h \ - extra/hip_gpu_driver/sdma_v6_0_0_pkt_open.h \ extra/hip_gpu_driver/gc_11_0_0_offset.h \ - extra/hip_gpu_driver/gc_10_3_0_offset.h \ extra/hip_gpu_driver/sienna_cichlid_ip_offset.h \ --clang-args="-I/opt/rocm/include -x c++" \ -o $BASE/amd_gpu.py @@ -240,6 +236,21 @@ generate_io_uring() { fixup $BASE/io_uring.py } +generate_ib() { + clang2py -k cdefstum \ + /usr/include/infiniband/verbs.h \ + /usr/include/infiniband/verbs_api.h \ + /usr/include/infiniband/ib_user_ioctl_verbs.h \ + /usr/include/rdma/ib_user_verbs.h \ + -o $BASE/ib.py + + sed -i "s\import ctypes\import ctypes, ctypes.util\g" "$BASE/ib.py" + sed -i "s\FIXME_STUB\libibverbs\g" "$BASE/ib.py" + sed -i "s\FunctionFactoryStub()\ctypes.CDLL(ctypes.util.find_library('ibverbs'), use_errno=True)\g" "$BASE/ib.py" + + fixup $BASE/ib.py +} + generate_libc() { clang2py -k cdefstum \ $(dpkg -L libc6-dev | grep sys/mman.h) \ @@ -361,26 +372,6 @@ generate_am() { -o $BASE/am/pm4_nv.py fixup $BASE/am/pm4_nv.py - clang2py -k cdefstum \ - $AMKERN_INC/vega10_enum.h \ - -o $BASE/am/vega10.py - fixup $BASE/am/vega10.py - - clang2py -k cdefstum \ - $AMKERN_INC/navi10_enum.h \ - -o $BASE/am/navi10.py - fixup $BASE/am/navi10.py - - clang2py -k cdefstum \ - $AMKERN_INC/soc21_enum.h \ - -o $BASE/am/soc21.py - fixup $BASE/am/soc21.py - - clang2py -k cdefstum \ - $AMKERN_INC/soc24_enum.h \ - -o $BASE/am/soc24.py - fixup $BASE/am/soc24.py - clang2py -k cdefstum \ extra/hip_gpu_driver/sdma_registers.h \ $AMKERN_AMD/amdgpu/vega10_sdma_pkt_open.h \ @@ -465,6 +456,7 @@ elif [ "$1" == "nvdrv" ]; then generate_nvdrv elif [ "$1" == "sqtt" ]; then generate_sqtt elif [ "$1" == "qcom" ]; then generate_qcom elif [ "$1" == "io_uring" ]; then generate_io_uring +elif [ "$1" == "ib" ]; then generate_ib elif [ "$1" == "libc" ]; then generate_libc elif [ "$1" == "llvm" ]; then generate_llvm elif [ "$1" == "kgsl" ]; then generate_kgsl diff --git a/tinygrad_repo/docs/developer/layout.md b/tinygrad_repo/docs/developer/layout.md index 68eeaec98..2f9a53a4b 100644 --- a/tinygrad_repo/docs/developer/layout.md +++ b/tinygrad_repo/docs/developer/layout.md @@ -18,11 +18,11 @@ Group UOps into kernels. --- -## tinygrad/opt +## tinygrad/codegen/opt Transforms the ast into an optimized ast. This is where BEAM search and heuristics live. -::: tinygrad.opt.get_optimized_ast +::: tinygrad.codegen.opt.get_optimized_ast options: members: false show_labels: false diff --git a/tinygrad_repo/docs/ramp.py b/tinygrad_repo/docs/ramp.py index 46499852c..6e0fc2d4d 100644 --- a/tinygrad_repo/docs/ramp.py +++ b/tinygrad_repo/docs/ramp.py @@ -126,7 +126,7 @@ print(t_log_grad.uop) """ void E_(float* restrict data0, float* restrict data1) { float val0 = *(data1+0); - *(data0+0) = (0.6931471805599453f*(1/(val0*0.6931471805599453f))); + *(data0+0) = (1/val0); } """ # the derivative is close to 1/3 diff --git a/tinygrad_repo/docs/tensor/elementwise.md b/tinygrad_repo/docs/tensor/elementwise.md index 0bf376747..d776feef2 100644 --- a/tinygrad_repo/docs/tensor/elementwise.md +++ b/tinygrad_repo/docs/tensor/elementwise.md @@ -78,6 +78,7 @@ Elementwise ops operate on a per element basis. They don't change the shape of t ::: tinygrad.Tensor.minimum ::: tinygrad.Tensor.where ::: tinygrad.Tensor.copysign +::: tinygrad.Tensor.logaddexp ## Casting Ops diff --git a/tinygrad_repo/docs/tinybox.md b/tinygrad_repo/docs/tinybox.md index 49a258a9a..237fe88e2 100644 --- a/tinygrad_repo/docs/tinybox.md +++ b/tinygrad_repo/docs/tinybox.md @@ -6,7 +6,7 @@ If you don't have a tinybox and you want one, see [tinygrad.org](https://tinygra ## Welcome -Welcome to your tinybox! The tinybox is the universal system purpose-built for all AI infrastructure and workloads, from training to inference. The red box includes six 7900XTX GPUs, and the green box includes six 4090 GPUs. Whether you bought a red one or a green one, we want you to love it. +Welcome to your tinybox! The tinybox is the universal system purpose-built for all AI infrastructure and workloads, from training to inference. The red box includes six 7900XTX GPUs, the green box includes six 4090 GPUs, and the green v2 box includes four 5090 GPUs. Whether you bought a red one or a green one, we want you to love it. We don't have a stupid cloud service, you don't have to create a tiny account to set it up, and we aren't tracking how you use the box. We're just happy you bought one. This petaflop is your petaflop. @@ -47,8 +47,8 @@ Reboot after making these changes or restart the `displayservice.service` servic The [default tinybox image](https://github.com/tinygrad/tinyos) ships with tinygrad and PyTorch. While we develop tinygrad, the box is universal hardware. Use whatever framework you desire, run notebooks, download demos, install more things, train, inference, live, laugh, love, you aren't paying per hour for this box so the only limit is your imagination. -## tinychat +## Building the OS image -Since LLMs are so popular, we ship with a built in tinygrad based chatbot using a LLaMA-3 finetune. Visit the IP (not the BMC IP) of your tinybox in a web browser on your computer or phone, and you'll find a friendly looking chat interface. This chatbot also provides an OpenAI compatible LLM API on that port, so you can script it. +The OS image is built using `ubuntu-image` from . -The conversations you have with this chatbot are between you and your tinybox. Also, the history in the web app is saved on the client, not the tinybox. +After cloning, run `make green` or `make red` to build a tinybox green or tinybox red image respectively. diff --git a/tinygrad_repo/examples/beautiful_cifar.py b/tinygrad_repo/examples/beautiful_cifar.py index 66f693d9c..cea8262f1 100644 --- a/tinygrad_repo/examples/beautiful_cifar.py +++ b/tinygrad_repo/examples/beautiful_cifar.py @@ -2,7 +2,6 @@ import time start_tm = time.perf_counter() import math from typing import Tuple, cast -import numpy as np from tinygrad import Tensor, nn, GlobalCounters, TinyJit, dtypes, Device from tinygrad.helpers import partition, trange, getenv, Context from extra.lr_scheduler import OneCycleLR @@ -150,13 +149,12 @@ if __name__ == "__main__": acc.append((out.argmax(-1) == Y).sum() / eval_batchsize) return Tensor.stack(*loss).mean() / (batchsize*loss_batchsize_scaler), Tensor.stack(*acc).mean() - np.random.seed(1337) + Tensor.manual_seed(1337) + num_train_samples = X_train.shape[0] + for epoch in range(math.ceil(hyp['misc']['train_epochs'])): - # TODO: move to tinygrad gst = time.perf_counter() - idxs = np.arange(X_train.shape[0]) - np.random.shuffle(idxs) - tidxs = Tensor(idxs, dtype='int')[:num_steps_per_epoch*batchsize].reshape(num_steps_per_epoch, batchsize) # NOTE: long doesn't fold + tidxs = Tensor.randperm(num_train_samples, dtype='int')[:num_steps_per_epoch*batchsize].reshape(num_steps_per_epoch, batchsize) train_loss:float = 0 for epoch_step in (t:=trange(num_steps_per_epoch)): st = time.perf_counter() diff --git a/tinygrad_repo/examples/beautiful_mnist.py b/tinygrad_repo/examples/beautiful_mnist.py index 685a41311..0a73f5101 100644 --- a/tinygrad_repo/examples/beautiful_mnist.py +++ b/tinygrad_repo/examples/beautiful_mnist.py @@ -1,12 +1,12 @@ # model based off https://medium.com/data-science/going-beyond-99-mnist-handwritten-digits-recognition-cfff96337392 -from typing import List, Callable +from typing import Callable from tinygrad import Tensor, TinyJit, nn, GlobalCounters from tinygrad.helpers import getenv, colored, trange from tinygrad.nn.datasets import mnist class Model: def __init__(self): - self.layers: List[Callable[[Tensor], Tensor]] = [ + self.layers: list[Callable[[Tensor], Tensor]] = [ nn.Conv2d(1, 32, 5), Tensor.relu, nn.Conv2d(32, 32, 5), Tensor.relu, nn.BatchNorm(32), Tensor.max_pool2d, @@ -21,17 +21,15 @@ if __name__ == "__main__": X_train, Y_train, X_test, Y_test = mnist(fashion=getenv("FASHION")) model = Model() - opt = nn.optim.Adam(nn.state.get_parameters(model)) + opt = (nn.optim.Adam if not getenv("MUON") else nn.optim.Muon)(nn.state.get_parameters(model)) @TinyJit @Tensor.train() def train_step() -> Tensor: opt.zero_grad() samples = Tensor.randint(getenv("BS", 512), high=X_train.shape[0]) - # TODO: this "gather" of samples is very slow. will be under 5s when this is fixed loss = model(X_train[samples]).sparse_categorical_crossentropy(Y_train[samples]).backward() - opt.step() - return loss + return loss.realize(*opt.schedule_step()) @TinyJit def get_test_acc() -> Tensor: return (model(X_test).argmax(axis=1) == Y_test).mean()*100 diff --git a/tinygrad_repo/examples/handcode_opt.py b/tinygrad_repo/examples/handcode_opt.py deleted file mode 100644 index 23fe14393..000000000 --- a/tinygrad_repo/examples/handcode_opt.py +++ /dev/null @@ -1,134 +0,0 @@ -from extra.models.resnet import ResNet50 -from extra.mcts_search import mcts_search -from examples.mlperf.helpers import get_mlperf_bert_model -from tinygrad import Tensor, Device, dtypes, nn -from tinygrad.opt.kernel import Kernel -from tinygrad.opt.heuristic import hand_coded_optimizations -from tinygrad.uop.ops import Ops, sym_infer -from tinygrad.device import Compiled -from tinygrad.opt.search import beam_search, bufs_from_lin -from tinygrad.helpers import DEBUG, ansilen, getenv, colored, TRACEMETA -from extra.optimization.helpers import time_linearizer -from tinygrad.engine.realize import get_program - -def get_sched_resnet(): - mdl = ResNet50() - optim = (nn.optim.LARS if getenv("LARS") else nn.optim.SGD)(nn.state.get_parameters(mdl)) - BS = getenv("BS", 64) - - # run model twice to get only what changes, these are the kernels of the model - for _ in range(2): - out = mdl(Tensor.empty(BS, 3, 224, 224)) - targets = [out] - if getenv("BACKWARD"): - optim.zero_grad() - out.sparse_categorical_crossentropy(Tensor.empty(BS, dtype=dtypes.int)).backward() - targets += [x for x in optim.schedule_step()] - sched = Tensor.schedule(*targets) - print(f"schedule length {len(sched)}") - return sched - -def get_sched_bert(): - mdl = get_mlperf_bert_model() - optim = nn.optim.LAMB(nn.state.get_parameters(mdl)) - - # fake data - BS = getenv("BS", 9) - input_ids = Tensor.empty((BS, 512), dtype=dtypes.float32) - segment_ids = Tensor.empty((BS, 512), dtype=dtypes.float32) - attention_mask = Tensor.empty((BS, 512), dtype=dtypes.default_float) - masked_positions = Tensor.empty((BS, 76), dtype=dtypes.float32) - masked_lm_ids = Tensor.empty((BS, 76), dtype=dtypes.float32) - masked_lm_weights = Tensor.empty((BS, 76), dtype=dtypes.float32) - next_sentence_labels = Tensor.empty((BS, 1), dtype=dtypes.float32) - - # run model twice to get only what changes, these are the kernels of the model - for _ in range(2): - lm_logits, seq_relationship_logits = mdl(input_ids, attention_mask, masked_positions, segment_ids) - targets = [lm_logits, seq_relationship_logits] - if getenv("BACKWARD"): - optim.zero_grad() - loss = mdl.loss(lm_logits, seq_relationship_logits, masked_lm_ids, masked_lm_weights, next_sentence_labels) - # ignore grad norm and loss scaler for now - loss.backward() - targets += [x for x in optim.schedule_step()] - sched = Tensor.schedule(*targets) - print(f"schedule length {len(sched)}") - return sched - -if __name__ == "__main__": - if getenv("HALF", 1): - dtypes.default_float = dtypes.half - - # the device we are optimizing for - device: Compiled = Device[Device.DEFAULT] - if getenv("BACKWARD"): Tensor.training = True - print(f"optimizing for {Device.DEFAULT}") - - sched = globals()[f"get_sched_{getenv('MODEL', 'resnet')}"]() - sched = [x for x in sched if x.ast.op is Ops.SINK] - - # focus on one kernel - if getenv("KERNEL", -1) >= 0: sched = sched[getenv("KERNEL", -1):getenv("KERNEL", -1)+1] - - # work with the schedule - total_tm = 0 - running_gflops = 0 - usage = {} - for i,si in enumerate(sched): - if DEBUG >= 3: print(si.ast) - - rawbufs = bufs_from_lin(Kernel(si.ast)) - - # "linearize" the op into uops in different ways - lins: list[tuple[Kernel, str]] = [] - - # always try hand coded opt - lin = Kernel(si.ast, opts=device.renderer) - lin.apply_opts(hand_coded_optimizations(lin)) - lins.append((lin, "HC")) - - # maybe try tensor cores - lin = Kernel(si.ast, opts=device.renderer) - if lin.apply_tensor_cores(): - lins.append((lin, "TC")) - - # try a beam search - if beam:=getenv("BEAM"): - lin = Kernel(si.ast, opts=device.renderer) - lin = beam_search(lin, rawbufs, beam, bool(getenv("BEAM_ESTIMATE", 1))) - lins.append((lin, "BEAM")) - - # try MCTS - if mcts:=getenv("MCTS"): - lin = Kernel(si.ast, opts=device.renderer) - lin = mcts_search(lin, rawbufs, mcts) - lins.append((lin, "MCTS")) - - # benchmark the programs - choices = [] - for lin, nm in lins: - tm = time_linearizer(lin, rawbufs, allow_test_size=False, cnt=10, disable_cache=True) - ops = (prg:=get_program(lin.get_optimized_ast(), lin.opts)).estimates.ops - gflops = sym_infer(ops, {k:k.min for k in lin.ast.variables()})*1e-9/tm - choices.append((tm, gflops, lin, prg, nm)) - - sorted_choices = sorted(choices, key=lambda x: x[0]) - if DEBUG >= 1: # print all kernels - for tm, gflops, lin, prg, nm in choices: - print(f" kernel {i:2d} {lin.name+' '*(37-ansilen(lin.name))} {str(prg.global_size):18s} {str(prg.local_size):12s} takes {tm*1000:7.2f} ms, {gflops:6.0f} GFLOPS -- {colored(nm, 'green') if lin is sorted_choices[0][2] else nm}") - - tm, gflops, lin, prg, nm = sorted_choices[0] - if getenv("SRC"): - print(si.ast) - print(lin.applied_opts) - print(get_program(lin.get_optimized_ast(), lin.opts).src) - total_tm += tm - running_gflops += gflops * tm - if (key := str([str(m) for m in si.metadata])) not in usage: usage[key] = (0, 0) - usage[key] = (usage[key][0] + tm, usage[key][1] + 1) - print(f"*** {total_tm*1000:7.2f} ms : kernel {i:2d} {lin.name+' '*(37-ansilen(lin.name))} {str(prg.global_size):18s} {str(prg.local_size):12s} takes {tm*1000:7.2f} ms, {gflops:6.0f} GFLOPS {[repr(m) if TRACEMETA >= 2 else str(m) for m in si.metadata]}") - print(f"******* total {total_tm*1000:.2f} ms, {running_gflops/total_tm:6.0f} GFLOPS") - print("usage:") - for k in sorted(usage, key=lambda x: -usage[x][0])[:10]: - print(f"{usage[k][0]*1000:.2f} ms: {k} ({usage[k][1]} times)") diff --git a/tinygrad_repo/examples/hlb_cifar10.py b/tinygrad_repo/examples/hlb_cifar10.py index d71a581e5..8f19c8f73 100644 --- a/tinygrad_repo/examples/hlb_cifar10.py +++ b/tinygrad_repo/examples/hlb_cifar10.py @@ -118,7 +118,7 @@ class SpeedyResNet: # hyper-parameters were exactly the same as the original repo bias_scaler = 58 hyp = { - 'seed' : 200, + 'seed' : 201, 'opt': { 'bias_lr': 1.76 * bias_scaler/512, 'non_bias_lr': 1.76 / 512, diff --git a/tinygrad_repo/examples/mlperf/dataloader.py b/tinygrad_repo/examples/mlperf/dataloader.py index c01ab48a5..09fb19153 100644 --- a/tinygrad_repo/examples/mlperf/dataloader.py +++ b/tinygrad_repo/examples/mlperf/dataloader.py @@ -1,4 +1,4 @@ -import os, random, pickle, queue +import os, random, pickle, queue, struct, math, functools, hashlib, time from typing import List from pathlib import Path from multiprocessing import Queue, Process, shared_memory, connection, Lock, cpu_count @@ -6,6 +6,7 @@ from multiprocessing import Queue, Process, shared_memory, connection, Lock, cpu import numpy as np from tinygrad import dtypes, Tensor from tinygrad.helpers import getenv, prod, Context, round_up, tqdm, OSX +from tinygrad.nn.state import TensorIO ### ResNet @@ -510,6 +511,274 @@ def batch_load_retinanet(dataset, val:bool, base_dir:Path, batch_size:int=32, sh # happens with BENCHMARK set pass +# llama3 + +class BinIdxDataset: + def __init__(self, base_path:Path): + self.idx_t = Tensor(base_path.with_name(f"{base_path.name}.idx")) + self.idx = TensorIO(self.idx_t) + + # parse idx file + magic = self.idx.read(9) + assert magic == b"MMIDIDX\x00\x00", "invalid index file format" + version, = struct.unpack(" tuple[int, int]: + return int(self.pointers[idx]), int(self.sizes[idx]) + + def get(self, idx, offset:int=0, length:int|None=None): + ptr, size = self._index(idx) + if length is None: length = size - offset + ptr += offset * self.dtype.itemsize + return self.bin_t[ptr:ptr+length*self.dtype.itemsize].bitcast(self.dtype).to(None) + +# https://docs.nvidia.com/megatron-core/developer-guide/latest/api-guide/datasets.html +class GPTDataset: + def __init__(self, base_path:Path, samples:int, seqlen:int, seed:int, shuffle:bool): + self.samples, self.seqlen = samples, seqlen + self.shuffle = shuffle + self.rng = np.random.RandomState(seed) + + self.indexed_dataset = BinIdxDataset(base_path) + + # check for cache + cache_hash = hashlib.sha256(f"{samples}:{seqlen}:{seed}:{shuffle}".encode()).hexdigest() + cache_path = base_path.with_name(f"{base_path.name}.{cache_hash}.index_cache") + print(f"try loading GPTDataset from {cache_path}...") + if cache_path.exists(): + print("cache found, loading...") + with open(cache_path, "rb") as f: + self.doc_idx, self.sample_idx, self.shuffle_idx = pickle.load(f) + else: + print("cache not found, building index...") + self.doc_idx = self._build_doc_idx() + self.sample_idx = self._build_sample_idx() + self.shuffle_idx = self._build_shuffle_idx() + # save cache + with open(cache_path, "wb") as f: + pickle.dump((self.doc_idx, self.sample_idx, self.shuffle_idx), f) + + def __getitem__(self, idx): + if idx is None: + text = self._get(0) + else: + text = self._get(idx) + + return text + + def _get(self, idx): + idx = self.shuffle_idx[idx] + + doc_idx_beg, doc_idx_beg_offset = self.sample_idx[idx] + doc_idx_end, doc_idx_end_offset = self.sample_idx[idx + 1] + + doc_ids, sample_parts = [], [] + + if doc_idx_beg == doc_idx_end: + doc_ids.append(self.doc_idx[doc_idx_beg]) + + sample_parts.append( + self.indexed_dataset.get( + int(self.doc_idx[doc_idx_beg]), offset=int(doc_idx_beg_offset), length=int(doc_idx_end_offset - doc_idx_beg_offset + 1))) + else: + for i in range(doc_idx_beg, doc_idx_end + 1): + doc_ids.append(self.doc_idx[i]) + + offset = 0 if i > doc_idx_beg else doc_idx_beg_offset + length = None if i < doc_idx_end else int(doc_idx_end_offset + 1) + sample_parts.append(self.indexed_dataset.get(int(self.doc_idx[i]), offset=int(offset), length=length)) + + # concat all parts + text = Tensor.cat(*sample_parts) + + return text + + @functools.cached_property + def tokens_per_epoch(self) -> int: + return sum(self.indexed_dataset.sizes.tolist()) + + @functools.cached_property + def num_epochs(self) -> int: + # we need enough epochs to cover the requested amount of tokens + num_epochs = 1 + num_tokens = self.tokens_per_epoch + while num_tokens < self.samples * self.seqlen: + num_epochs += 1 + num_tokens += self.tokens_per_epoch + return num_epochs + + # https://github.com/NVIDIA/Megatron-LM/blob/94bd476bd840c2fd4c3ebfc7448c2af220f4832b/megatron/core/datasets/gpt_dataset.py#L558 + def _build_doc_idx(self): + print(f"building doc_idx for {self.num_epochs=}, {self.indexed_dataset.count=}") + st = time.perf_counter() + # doc_idx = np.mgrid[:self.num_epochs, :self.indexed_dataset.count][1] + doc_idx = np.arange(self.indexed_dataset.count).reshape(1, -1).repeat(self.num_epochs, axis=0).flatten() + doc_idx = doc_idx.astype(np.int32) + at = time.perf_counter() + if self.shuffle: self.rng.shuffle(doc_idx) + print(f"doc_idx built in {at - st:.3f}s, shuffled in {time.perf_counter() - at:.3f}s") + return doc_idx + + def _build_sample_idx(self): + print(f"building sample_idx for {self.samples=}, {self.seqlen=}, {self.doc_idx.shape[0]=}") + sample_idx_max = max(self.doc_idx.shape[0], self.indexed_dataset.sizes.max()) + sample_idx = np.empty((self.samples + 1, 2), dtype=np.int64 if sample_idx_max > dtypes.int32.max else np.int32) + + sample_idx_idx, doc_idx_idx, doc_offset = 0, 0, 0 + sample_idx[sample_idx_idx, 0], sample_idx[sample_idx_idx, 1] = doc_idx_idx, doc_offset + sample_idx_idx += 1 + + for _ in tqdm(range(1, self.samples + 1)): + remaining_seqlen = self.seqlen + 1 + while remaining_seqlen > 0: + doc_idx = int(self.doc_idx[doc_idx_idx]) + doc_len = int(self.indexed_dataset.sizes[doc_idx]) - doc_offset + remaining_seqlen -= doc_len + if remaining_seqlen <= 0: + doc_offset += remaining_seqlen + doc_len - 1 + remaining_seqlen = 0 + else: + if doc_idx_idx == len(self.doc_idx) - 1: + assert sample_idx_idx == self.samples + doc_idx = int(self.doc_idx[doc_idx_idx]) + doc_offset = int(self.indexed_dataset.sizes[doc_idx]) - 1 + break + doc_idx_idx += 1 + doc_offset = 0 + + sample_idx[sample_idx_idx, 0], sample_idx[sample_idx_idx, 1] = doc_idx_idx, doc_offset + sample_idx_idx += 1 + + return sample_idx + + def _build_shuffle_idx(self): + print(f"building shuffle_idx for {self.samples=}") + st = time.perf_counter() + shuffle_idx = np.arange(self.samples, dtype=np.int32) + at = time.perf_counter() + if self.shuffle: self.rng.shuffle(shuffle_idx) + print(f"shuffle_idx built in {at - st:.3f}s, shuffled in {time.perf_counter() - at:.3f}s") + return shuffle_idx + +class BlendedGPTDataset: + def __init__(self, paths:list[Path], weights:list[float], samples:int, seqlen:int, seed:int, shuffle:bool): + self.shuffle = shuffle + self.rng = np.random.RandomState(seed) + + # normalize weights + total_weight = sum(weights) + self.weights = [w / total_weight for w in weights] + + self.samples = samples + surplus = 0.005 + samples_per_blend = [math.ceil(math.ceil(self.samples * w) * (1 + surplus)) for w in self.weights] + + self.datasets = [GPTDataset(path, samples_per_blend[i], seqlen, seed + i, shuffle) for i,path in enumerate(paths)] + + # check for cache + cache_hash = hashlib.sha256(f"{samples}:{seqlen}:{seed}:{shuffle}".encode()).hexdigest() + cache_path = paths[0].with_name(f"{paths[0].name}.{cache_hash}.blend_cache") + print(f"try loading BlendedGPTDataset from {cache_path}...") + if cache_path.exists(): + print("cache found, loading...") + with open(cache_path, "rb") as f: + self.dataset_idx, self.dataset_sample_idx = pickle.load(f) + else: + print("cache not found, building index...") + self.dataset_idx, self.dataset_sample_idx = self._build_blend_idx() + # save cache + with open(cache_path, "wb") as f: + pickle.dump((self.dataset_idx, self.dataset_sample_idx), f) + + def get(self, idx:int): + tokens = self.datasets[self.dataset_idx[idx]][self.dataset_sample_idx[idx]] + return tokens + + def _build_blend_idx(self): + dataset_idx = np.zeros(self.samples, dtype=np.int16) + dataset_sample_idx = np.zeros(self.samples, dtype=np.int64) + + unspent_datasets = set(range(len(self.datasets))) + dataset_sample_counts = [0] * len(self.datasets) + + for i in tqdm(range(self.samples)): + error_argmax, error_max = 0, 0.0 + for di in unspent_datasets: + error = self.weights[di] * max(i, 1) - dataset_sample_counts[di] + if error > error_max: + error_max = error + error_argmax = di + + dataset_idx[i] = error_argmax + dataset_sample_idx[i] = dataset_sample_counts[error_argmax] + + dataset_sample_counts[error_argmax] += 1 + + return dataset_idx, dataset_sample_idx + +def batch_load_llama3(bs:int, samples:int, seqlen:int, base_dir:Path, seed:int=0, val:bool=True): + if val: + dataset = BlendedGPTDataset([ + base_dir / "validation" / "c4-validationn-91205-samples.en_text_document", + ], [ + 1.0 + ], samples, seqlen, seed, False) + else: + dataset = BlendedGPTDataset([ + base_dir / "c4-train.en_6_text_document", + base_dir / "c4-train.en_7_text_document", + ], [ + 1.0, 1.0 + ], samples, seqlen, seed, True) + + for b in range(math.ceil(samples / bs)): + batch = [] + for i in range(bs): + tokens = dataset.get(b * bs + i) + batch.append(tokens) + yield Tensor.stack(batch, dim=0) + +def batch_load_llama3_small(bs:int, samples:int, seqlen:int, base_dir:Path, seed:int=0, val:bool=True): + if val: + dataset = BlendedGPTDataset([ + base_dir / "c4-validation-91205-samples.en_text_document", + ], [ + 1.0 + ], samples, seqlen, seed, False) + else: + dataset = BlendedGPTDataset([ + base_dir / "c4-train.en_6_text_document", + ], [ + 1.0 + ], samples, seqlen, seed, True) + + for b in range(math.ceil(samples / bs)): + batch = [] + for i in range(bs): + tokens = dataset.get(b * bs + i) + batch.append(tokens) + yield Tensor.stack(batch, dim=0) + if __name__ == "__main__": def load_unet3d(val): assert not val, "validation set is not supported due to different sizes on inputs" @@ -538,6 +807,18 @@ if __name__ == "__main__": for x in batch_load_retinanet(dataset, val, base_dir): pbar.update(x[0].shape[0]) + def load_llama3(val): + bs = 24 + samples = 5760 if val else 1_200_000 * 1152 + seqlen = 8192 + + max_, min_ = 0, math.inf + for tokens in tqdm(batch_load_llama3(bs, samples, seqlen, Path(getenv("BASEDIR", "/raid/datasets/c4/")), seed=5760, val=bool(val)), total=samples//bs): + max_ = max(max_, tokens.shape[1]) + min_ = min(min_, tokens.shape[1]) + print(f"max seq length: {max_}") + print(f"min seq length: {min_}") + load_fn_name = f"load_{getenv('MODEL', 'resnet')}" if load_fn_name in globals(): globals()[load_fn_name](getenv("VAL", 1)) diff --git a/tinygrad_repo/examples/mlperf/model_eval.py b/tinygrad_repo/examples/mlperf/model_eval.py index fa3ca9d7f..b71c290a0 100644 --- a/tinygrad_repo/examples/mlperf/model_eval.py +++ b/tinygrad_repo/examples/mlperf/model_eval.py @@ -1,4 +1,4 @@ -import time +import time, math start = time.perf_counter() from pathlib import Path import numpy as np @@ -241,6 +241,52 @@ def eval_mrcnn(): evaluate_predictions_on_coco(bbox_output, iou_type='bbox') evaluate_predictions_on_coco(mask_output, iou_type='segm') +def eval_llama3(): + from extra.models.llama import Transformer + from examples.llama3 import MODEL_PARAMS, load, convert_from_huggingface + from tinygrad.helpers import tqdm + + BASEDIR = Path(getenv("BASEDIR", "/raid/datasets/c4/")) + BS = getenv("BS", 4) + SMALL = getenv("SMALL", 0) + SEQLEN = getenv("SEQLEN", 8192) + MODEL_PATH = Path(getenv("MODEL_PATH", "/raid/weights/llama31_8b/")) + + params = MODEL_PARAMS[getenv("LLAMA3_SIZE", "8B")]["args"] + params = params | {"vocab_size": 32000} if not SMALL else params + if (llama_layers:=getenv("LLAMA_LAYERS")) != 0: params['n_layers'] = llama_layers + model = Transformer(**params, max_context=SEQLEN, jit=False, disable_kv_cache=True) + + # load weights + weights = load(str(MODEL_PATH / "model.safetensors.index.json")) + if "model.embed_tokens.weight" in weights: + print("converting from huggingface format") + weights = convert_from_huggingface(weights, params["n_layers"], params["n_heads"], params["n_kv_heads"]) + + load_state_dict(model, weights, strict=False, consume=True) + + @TinyJit + def eval_step(model, tokens): + logits:Tensor = model(tokens[:, :-1], start_pos=0, temperature=math.nan) + loss = logits.sparse_categorical_crossentropy(tokens[:, 1:]) + return loss.flatten().float() + + if SMALL: + from examples.mlperf.dataloader import batch_load_llama3_small + iter = batch_load_llama3_small(BS, 5760, SEQLEN, BASEDIR, val=True) + else: + from examples.mlperf.dataloader import batch_load_llama3 + iter = batch_load_llama3(BS, 5760, SEQLEN, BASEDIR, val=True) + + losses = [] + for tokens in tqdm(iter, total=5760//BS): + GlobalCounters.reset() + losses += eval_step(model, tokens).tolist() + tqdm.write(f"loss: {np.mean(losses)}") + + log_perplexity = np.mean(losses) + print(f"Log Perplexity: {log_perplexity}") + if __name__ == "__main__": # inference only Tensor.training = False diff --git a/tinygrad_repo/examples/mlperf/model_train.py b/tinygrad_repo/examples/mlperf/model_train.py index b2697deec..586e93e82 100644 --- a/tinygrad_repo/examples/mlperf/model_train.py +++ b/tinygrad_repo/examples/mlperf/model_train.py @@ -1290,9 +1290,21 @@ def train_llama3(): from examples.mlperf.lr_schedulers import CosineAnnealingLRWithWarmup config = {} - BS = config["BS"] = getenv("BS", 4) + BASEDIR = config["BASEDIR"] = Path(getenv("BASEDIR", "/raid/datasets/c4/")) + BS = config["BS"] = getenv("BS", 16) grad_acc = config["GRADIENT_ACC_STEPS"] = getenv("GRADIENT_ACC_STEPS", 1) GBS = config["GLOBAL_BATCH_SIZE"] = BS * grad_acc + SEED = config["SEED"] = getenv("SEED", 5760) + SEQLEN = config["SEQLEN"] = getenv("SEQLEN", 8192) + TRAIN_ON_VAL = config["TRAIN_ON_VAL"] = getenv("TRAIN_ON_VAL", 0) + SMALL = config["SMALL"] = getenv("SMALL", 0) + SAMPLES = config["SAMPLES"] = getenv("SAMPLES", 5_760 if TRAIN_ON_VAL else 1_200_000 * 1152) + EVAL_FREQ = config["EVAL_FREQ"] = getenv("EVAL_FREQ", 46080) + EVAL_BS = config["EVAL_BS"] = getenv("EVAL_BS", 16) + EVAL_TARGET = config["EVAL_TARGET"] = getenv("EVAL_TARGET", 5.6) + + # LR=1e-4 TRAIN_ON_VAL=1 DEFAULT_FLOAT=bfloat16 FUSE_ARANGE=1 JITBEAM=2 OPTIM_DTYPE=bfloat16 LLAMA3_SIZE=1B WARMUP_STEPS=36 DECAY_STEPS=360 SEQLEN=512 PYTHONPATH=. AMD=1 AMD_LLVM=0 MODEL=llama3 python3 examples/mlperf/model_train.py + # trains to 7 opt_adamw_beta_1 = 0.9 opt_adamw_beta_2 = 0.95 @@ -1300,7 +1312,6 @@ def train_llama3(): opt_adamw_weight_decay = 0.1 opt_gradient_clip_norm = 1.0 - sequence_length = 8192 opt_learning_rate_warmup_steps = getenv("WARMUP_STEPS", math.ceil(8000 * 1152 / GBS)) opt_learning_rate_decay_steps = getenv("DECAY_STEPS", math.ceil(1_200_000 * 1152 / GBS) - opt_learning_rate_warmup_steps) opt_base_learning_rate = getenv("LR", 8e-5 * GBS / 1152) # NOTE: cannot change for benchmark @@ -1308,7 +1319,38 @@ def train_llama3(): # TODO: confirm weights are in bf16 # vocab_size from the mixtral tokenizer - model = Transformer(**(MODEL_PARAMS[getenv("LLAMA3_SIZE", "8B")]["args"]|{"vocab_size": 32000}), max_context=sequence_length, jit=False, disable_kv_cache=True) + params = MODEL_PARAMS[getenv("LLAMA3_SIZE", "8B")]["args"] + params = params | {"vocab_size": 32000} if not SMALL else params + if (llama_layers:=getenv("LLAMA_LAYERS")) != 0: params['n_layers'] = llama_layers + model = Transformer(**params, max_context=SEQLEN, jit=False, disable_kv_cache=True) + + if getenv("FAKEDATA"): + for v in get_parameters(model): + v = v.assign(Tensor.empty(v.shape)) + + if (DP := getenv("DP", 1)) > 1: + device = tuple(f"{Device.DEFAULT}:{i}" for i in range(DP)) + for v in get_parameters(model): + v.shard_(device, axis=None) + + if (MP := getenv("MP", 1)) > 1: + device = tuple(f"{Device.DEFAULT}:{i}" for i in range(MP)) + for k,v in get_state_dict(model).items(): + if 'scale' in k: v.shard_(device, axis=None) # from quantized + elif '.attention.wq' in k: v.shard_(device, axis=0) + elif '.attention.wk' in k: v.shard_(device, axis=0) + elif '.attention.wv' in k: v.shard_(device, axis=0) + elif '.attention.wo' in k: v.shard_(device, axis=1) + elif '.feed_forward.w1.' in k: v.shard_(device, axis=0) + elif '.feed_forward.w2.' in k: v.shard_(device, axis=1) + elif '.feed_forward.w3.' in k: v.shard_(device, axis=0) + elif 'tok_embeddings.weight' in k: v.shard_(device, axis=0) + elif 'output.weight' in k: v.shard_(device, axis=0) + else: + # attention_norm, ffn_norm, norm + v.shard_(device, axis=None) + # prevents memory spike on device 0 + v.realize() optim = AdamW(get_parameters(model), lr=0.0, b1=opt_adamw_beta_1, b2=opt_adamw_beta_2, eps=opt_adamw_epsilon, weight_decay=opt_adamw_weight_decay) @@ -1316,12 +1358,20 @@ def train_llama3(): @TinyJit @Tensor.train() - def train_step(model, x, y): + def train_step(model, tokens:Tensor, grad_acc:int): optim.zero_grad() - logits:Tensor = model(x, start_pos=0, temperature=math.nan) - loss = logits.cross_entropy(y) - loss.backward() - + # grad acc + for batch in tokens.split(tokens.shape[0]//grad_acc): + if (DP := getenv("DP", 1)) > 1: + device = tuple(f"{Device.DEFAULT}:{i}" for i in range(DP)) + batch = batch.shard(device, 0) + if (MP := getenv("MP", 1)) > 1: + device = tuple(f"{Device.DEFAULT}:{i}" for i in range(MP)) + batch = batch.shard(device) + logits:Tensor = model(batch[:, :-1], start_pos=0, temperature=math.nan) + loss = logits.sparse_categorical_crossentropy(batch[:, 1:]) + loss.backward() + Tensor.realize(*[p.grad for p in optim.params]) # L2 norm grad clip # https://github.com/NVIDIA/NeMo/blob/3368c3fc0b4a186ab33a1d68a504315100c0b2a6/nemo/collections/nlp/modules/common/megatron/clip_grads.py#L57 # https://docs.pytorch.org/docs/stable/generated/torch.nn.utils.clip_grad_norm_.html @@ -1331,7 +1381,7 @@ def train_llama3(): total_norm += p.grad.float().square().sum() total_norm = total_norm.sqrt().contiguous() for p in optim.params: - p.grad = p.grad * opt_gradient_clip_norm / (total_norm + 1e-6) + p.grad = p.grad * (opt_gradient_clip_norm / (total_norm + 1e-6)).clamp(max_=1.0) optim.step() scheduler.step() @@ -1340,19 +1390,89 @@ def train_llama3(): loss.realize(lr) return loss, lr - # overfitting this example should give cross_entropy log(BS) - fake_input = Tensor([list(range(getenv("SEQLEN", 10)))], dtype="int16").expand(BS, -1) - fake_label = Tensor(list(range(BS)), dtype="int16") + @TinyJit + @Tensor.train(False) + def eval_step(model, tokens:Tensor): + if (DP := getenv("DP", 1)) > 1: + device = tuple(f"{Device.DEFAULT}:{i}" for i in range(DP)) + tokens = tokens.shard(device, 0) + if (MP := getenv("MP", 1)) > 1: + device = tuple(f"{Device.DEFAULT}:{i}" for i in range(MP)) + tokens = tokens.shard(device) + logits:Tensor = model(tokens[:, :-1], start_pos=0, temperature=math.nan) + loss = logits.sparse_categorical_crossentropy(tokens[:, 1:]) + return loss.flatten().float() - for _ in range(100): + # ** data iters ** + def fake_data(bs, samples): + for _ in range(samples // bs): + yield Tensor.randint(bs, SEQLEN + 1, low=0, high=params["vocab_size"], dtype=dtypes.int32, device=Device.DEFAULT) + + def get_train_iter(): + if getenv("FAKEDATA", 0): + return fake_data(GBS, SAMPLES) + else: + if SMALL: + from examples.mlperf.dataloader import batch_load_llama3_small + return batch_load_llama3_small(GBS, SAMPLES, SEQLEN, BASEDIR, seed=SEED, val=bool(TRAIN_ON_VAL)) + else: + from examples.mlperf.dataloader import batch_load_llama3 + return batch_load_llama3(GBS, SAMPLES, SEQLEN, BASEDIR, seed=SEED, val=bool(TRAIN_ON_VAL)) + + def get_eval_iter(): + if getenv("FAKEDATA", 0): + return fake_data(EVAL_BS, 5760) + else: + if SMALL: + from examples.mlperf.dataloader import batch_load_llama3_small + return batch_load_llama3_small(EVAL_BS, 5760, SEQLEN, BASEDIR, val=True) + else: + from examples.mlperf.dataloader import batch_load_llama3 + return batch_load_llama3(EVAL_BS, 5760, SEQLEN, BASEDIR, val=True) + + iter = get_train_iter() + i, sequences_seen = 0, 0 + for tokens in tqdm(iter, total=SAMPLES//GBS): + t = time.perf_counter() GlobalCounters.reset() - loss, lr = train_step(model, fake_input, fake_label) - # BS=2 OPTIM_DTYPE=bfloat16 LLAMA3_SIZE=8B WARMUP_STEPS=2 DECAY_STEPS=300 PYTHONPATH=. AMD=1 MODEL=llama3 python3 examples/mlperf/model_train.py - # uses 43% ~= 83GB - # 8B bf16 = 16GB. model + grad + optim m and v = 64GB - # TODO: this OOM - # BS=1 SEQLEN=4000 OPTIM_DTYPE=bfloat16 LLAMA3_SIZE=8B WARMUP_STEPS=2 DECAY_STEPS=300 PYTHONPATH=. AMD=1 MODEL=llama3 python3 examples/mlperf/model_train.py - print(loss.item(), lr.item(), f"{GlobalCounters.global_mem//10**9=}") + loss, lr = train_step(model, tokens, grad_acc) + loss = loss.float().item() + + tqdm.write(f"{loss:.4f} loss, {lr.item():.12f} LR, {GlobalCounters.mem_used / 1e9:.2f} GB used, {time.perf_counter()-t:.2f} s") + if (fname:=getenv("LOSS_FILE", "")): + with open(fname, "a") as f: + f.write(f"{i} {loss:.4f} {lr.item():.12f} {GlobalCounters.mem_used / 1e9:.2f}\n") + + if getenv("CKPT") and (i % 200 == 0 or i == 10): + tqdm.write("saving checkpoint") + if not os.path.exists(ckpt_dir := "./ckpts"): os.mkdir(ckpt_dir) + fn = f"{ckpt_dir}/llama3_{i}.safe" + safe_save(get_state_dict(model), fn) + + i += 1 + sequences_seen += tokens.shape[0] + + if sequences_seen % EVAL_FREQ == 0 and (i != 1 or EVAL_FREQ == 1): + tqdm.write(f"evaluating after {sequences_seen} sequences") + + # run eval + eval_losses = [] + eval_iter = get_eval_iter() + tqdm.write(f"evaluating {5760//EVAL_BS} batches of {EVAL_BS} sequences") + + for tokens in tqdm(eval_iter, total=5760//EVAL_BS): + eval_losses += eval_step(model, tokens).tolist() + log_perplexity = Tensor(eval_losses).mean().float().item() + + tqdm.write(f"eval log perplexity: {log_perplexity:.4f}") + + if log_perplexity < EVAL_TARGET: + tqdm.write(f"target achieved after {sequences_seen} sequences") + if getenv("CKPT"): + if not os.path.exists(ckpt_dir := "./ckpts"): os.mkdir(ckpt_dir) + fn = f"{ckpt_dir}/llama3.safe" + safe_save(get_state_dict(model), fn) + break if __name__ == "__main__": multiprocessing.set_start_method('spawn') diff --git a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_1xMI300X/dev_beam.sh b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_1xMI300X/dev_beam.sh index 35080c34b..68e5fdfcd 100644 --- a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_1xMI300X/dev_beam.sh +++ b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_1xMI300X/dev_beam.sh @@ -4,6 +4,8 @@ export PYTHONPATH="." AMD=1 export MODEL="bert" export DEFAULT_FLOAT="HALF" GPUS=1 BS=128 EVAL_BS=128 +export IGNORE_OOB=1 + export BEAM=3 BEAM_UOPS_MAX=4000 BEAM_UPCAST_MAX=256 BEAM_LOCAL_MAX=1024 BEAM_MIN_PROGRESS=5 export IGNORE_JIT_FIRST_BEAM=1 # export BEAM_LOG_SURPASS_MAX=1 diff --git a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_8xMI300X/dev_beam.sh b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_8xMI300X/dev_beam.sh index 6ea36f8b4..cfaad1e59 100644 --- a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_8xMI300X/dev_beam.sh +++ b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_8xMI300X/dev_beam.sh @@ -5,6 +5,8 @@ export MODEL="bert" export DEFAULT_FLOAT="HALF" GPUS=8 BS=1024 EVAL_BS=1024 export OPT_BASE_LEARNING_RATE=0.0011 OPT_LAMB_BETA_1=0.60466 OPT_LAMB_BETA_2=0.85437 DECAY=0.1 +export IGNORE_OOB=1 + export BEAM=3 BEAM_UOPS_MAX=6000 BEAM_UPCAST_MAX=256 BEAM_LOCAL_MAX=1024 BEAM_MIN_PROGRESS=5 export IGNORE_JIT_FIRST_BEAM=1 FREE_INTERMEDIATE=0 export BASEDIR="/raid/datasets/wiki" diff --git a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_8xMI300X/dev_run.sh b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_8xMI300X/dev_run.sh index ee43e95de..6ef7c1b99 100644 --- a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_8xMI300X/dev_run.sh +++ b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_8xMI300X/dev_run.sh @@ -8,6 +8,8 @@ export DEFAULT_FLOAT="HALF" GPUS=8 BS=1024 EVAL_BS=1024 export OPT_BASE_LEARNING_RATE=0.0011 OPT_LAMB_BETA_1=0.60466 OPT_LAMB_BETA_2=0.85437 DECAY=0.1 export TRAIN_STEPS=3900 +export IGNORE_OOB=1 + export BEAM=3 BEAM_UOPS_MAX=6000 BEAM_UPCAST_MAX=256 BEAM_LOCAL_MAX=1024 BEAM_MIN_PROGRESS=5 export IGNORE_JIT_FIRST_BEAM=1 FREE_INTERMEDIATE=0 export BASEDIR="/raid/datasets/wiki" diff --git a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_8xMI300X/run_and_time.sh b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_8xMI300X/run_and_time.sh index cef9f6e89..cd2f30579 100644 --- a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_8xMI300X/run_and_time.sh +++ b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_8xMI300X/run_and_time.sh @@ -11,6 +11,8 @@ export DEFAULT_FLOAT="HALF" GPUS=8 BS=1024 EVAL_BS=1024 export OPT_BASE_LEARNING_RATE=0.0011 OPT_LAMB_BETA_1=0.60466 OPT_LAMB_BETA_2=0.85437 DECAY=0.1 export TRAIN_STEPS=3900 +export IGNORE_OOB=1 + export BEAM=3 BEAM_UOPS_MAX=6000 BEAM_UPCAST_MAX=256 BEAM_LOCAL_MAX=1024 BEAM_MIN_PROGRESS=5 export IGNORE_JIT_FIRST_BEAM=1 FREE_INTERMEDIATE=0 export BASEDIR="/raid/datasets/wiki" diff --git a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_green/dev_beam.sh b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_green/dev_beam.sh index 1205c210d..a2d477312 100644 --- a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_green/dev_beam.sh +++ b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_green/dev_beam.sh @@ -2,9 +2,9 @@ export PYTHONPATH="." NV=1 export MODEL="bert" -export DEFAULT_FLOAT="HALF" SUM_DTYPE="HALF" GPUS=6 BS=96 EVAL_BS=96 +export DEFAULT_FLOAT="HALF" SUM_DTYPE="HALF" GPUS=6 BS=90 EVAL_BS=90 -export FUSE_ARANGE=1 FUSE_ARANGE_UINT=0 +export IGNORE_OOB=1 export BEAM=8 BEAM_UOPS_MAX=10000 BEAM_UPCAST_MAX=256 BEAM_LOCAL_MAX=1024 BEAM_MIN_PROGRESS=5 export IGNORE_JIT_FIRST_BEAM=1 diff --git a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_green/dev_run.sh b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_green/dev_run.sh index f71688abf..436546621 100644 --- a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_green/dev_run.sh +++ b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_green/dev_run.sh @@ -2,9 +2,9 @@ export PYTHONPATH="." NV=1 export MODEL="bert" -export DEFAULT_FLOAT="HALF" SUM_DTYPE="HALF" GPUS=6 BS=96 EVAL_BS=96 +export DEFAULT_FLOAT="HALF" SUM_DTYPE="HALF" GPUS=6 BS=90 EVAL_BS=90 -export FUSE_ARANGE=1 FUSE_ARANGE_UINT=0 +export IGNORE_OOB=1 export BEAM=8 BEAM_UOPS_MAX=10000 BEAM_UPCAST_MAX=256 BEAM_LOCAL_MAX=1024 BEAM_MIN_PROGRESS=5 export IGNORE_JIT_FIRST_BEAM=1 diff --git a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_green/run_and_time.sh b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_green/run_and_time.sh index 52d85eeb5..4b3b91193 100644 --- a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_green/run_and_time.sh +++ b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_green/run_and_time.sh @@ -5,9 +5,9 @@ set -o pipefail # Make pipeline fail if any command fails export PYTHONPATH="." NV=1 export MODEL="bert" export SUBMISSION_PLATFORM="tinybox_green" -export DEFAULT_FLOAT="HALF" SUM_DTYPE="HALF" GPUS=6 BS=96 EVAL_BS=96 +export DEFAULT_FLOAT="HALF" SUM_DTYPE="HALF" GPUS=6 BS=90 EVAL_BS=90 -export FUSE_ARANGE=1 FUSE_ARANGE_UINT=0 +export IGNORE_OOB=1 export BEAM=8 BEAM_UOPS_MAX=10000 BEAM_UPCAST_MAX=256 BEAM_LOCAL_MAX=1024 BEAM_MIN_PROGRESS=5 export IGNORE_JIT_FIRST_BEAM=1 diff --git a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_red/dev_beam.sh b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_red/dev_beam.sh index f99bf3020..881dd247b 100644 --- a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_red/dev_beam.sh +++ b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_red/dev_beam.sh @@ -2,9 +2,9 @@ export PYTHONPATH="." AMD=1 export MODEL="bert" -export DEFAULT_FLOAT="HALF" SUM_DTYPE="HALF" GPUS=6 BS=96 EVAL_BS=96 +export DEFAULT_FLOAT="HALF" SUM_DTYPE="HALF" GPUS=6 BS=90 EVAL_BS=90 -export FUSE_ARANGE=1 FUSE_ARANGE_UINT=0 +export IGNORE_OOB=1 export BEAM=5 BEAM_UOPS_MAX=8000 BEAM_UPCAST_MAX=256 BEAM_LOCAL_MAX=1024 BEAM_MIN_PROGRESS=5 export IGNORE_JIT_FIRST_BEAM=1 diff --git a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_red/dev_run.sh b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_red/dev_run.sh index 7f577c9cd..719ecd5bf 100644 --- a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_red/dev_run.sh +++ b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_red/dev_run.sh @@ -2,9 +2,9 @@ export PYTHONPATH="." AMD=1 export MODEL="bert" -export DEFAULT_FLOAT="HALF" SUM_DTYPE="HALF" GPUS=6 BS=96 EVAL_BS=96 +export DEFAULT_FLOAT="HALF" SUM_DTYPE="HALF" GPUS=6 BS=90 EVAL_BS=90 -export FUSE_ARANGE=1 FUSE_ARANGE_UINT=0 +export IGNORE_OOB=1 export BEAM=5 BEAM_UOPS_MAX=8000 BEAM_UPCAST_MAX=256 BEAM_LOCAL_MAX=1024 BEAM_MIN_PROGRESS=5 export IGNORE_JIT_FIRST_BEAM=1 diff --git a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_red/run_and_time.sh b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_red/run_and_time.sh index 77c229e00..4b3030594 100644 --- a/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_red/run_and_time.sh +++ b/tinygrad_repo/examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_red/run_and_time.sh @@ -5,9 +5,9 @@ set -o pipefail # Make pipeline fail if any command fails export PYTHONPATH="." AMD=1 export MODEL="bert" export SUBMISSION_PLATFORM="tinybox_red" -export DEFAULT_FLOAT="HALF" SUM_DTYPE="HALF" GPUS=6 BS=96 EVAL_BS=96 +export DEFAULT_FLOAT="HALF" SUM_DTYPE="HALF" GPUS=6 BS=90 EVAL_BS=90 -export FUSE_ARANGE=1 FUSE_ARANGE_UINT=0 +export IGNORE_OOB=1 export BEAM=5 BEAM_UOPS_MAX=8000 BEAM_UPCAST_MAX=256 BEAM_LOCAL_MAX=1024 BEAM_MIN_PROGRESS=5 export IGNORE_JIT_FIRST_BEAM=1 diff --git a/tinygrad_repo/examples/olmoe.py b/tinygrad_repo/examples/olmoe.py index 9789cb1ce..3f216ab8d 100644 --- a/tinygrad_repo/examples/olmoe.py +++ b/tinygrad_repo/examples/olmoe.py @@ -1,8 +1,7 @@ # https://arxiv.org/pdf/2409.02060 -import time +import time, functools import numpy as np np.set_printoptions(suppress=True, linewidth=1000) -import functools from tinygrad import Tensor, nn, Device, GlobalCounters from tinygrad.helpers import Timing, getenv from extra.models.llama import Transformer, convert_from_huggingface @@ -17,7 +16,7 @@ class MixtureFeedForward: def __call__(self, x:Tensor) -> Tensor: assert x.shape[0] == 1, "only BS=1" assert x.shape[1] == 1, "only length=1" - g = self.gate(x).float().softmax(-1) + g = self.gate(x).softmax(-1) g = g.squeeze() # (BS, length, num_experts) -> (num_experts,) probs, sel = g.topk(self.activated_experts) @@ -25,7 +24,7 @@ class MixtureFeedForward: # run MoE x_up_gate = x.dot(self.gate_proj[sel].permute(0,2,1)).silu() * x.dot(self.up_proj[sel].permute(0,2,1)) x_down = x_up_gate.dot(self.down_proj[sel].permute(0,2,1)) - return (x_down.float() * probs.reshape(self.activated_experts, 1, 1)).sum(axis=0) + return (x_down * probs.reshape(self.activated_experts, 1, 1)).sum(axis=0) # model is bf16, 1.3B active, 6.9B total # M3 Max is 400 GB/s, so 400/2.6 = ~154 tok/s diff --git a/tinygrad_repo/examples/yolov3.py b/tinygrad_repo/examples/yolov3.py index 49a2adb0f..f6d688263 100644 --- a/tinygrad_repo/examples/yolov3.py +++ b/tinygrad_repo/examples/yolov3.py @@ -71,8 +71,8 @@ def bbox_iou(box1, box2): # get the coordinates of the intersection rectangle inter_rect_x1 = np.maximum(b1_x1, b2_x1) inter_rect_y1 = np.maximum(b1_y1, b2_y1) - inter_rect_x2 = np.maximum(b1_x2, b2_x2) - inter_rect_y2 = np.maximum(b1_y2, b2_y2) + inter_rect_x2 = np.minimum(b1_x2, b2_x2) + inter_rect_y2 = np.minimum(b1_y2, b2_y2) #Intersection area inter_area = np.clip(inter_rect_x2 - inter_rect_x1 + 1, 0, 99999) * np.clip(inter_rect_y2 - inter_rect_y1 + 1, 0, 99999) #Union Area @@ -297,13 +297,13 @@ class Darknet: # Get the number of weights of batchnorm num_bn_biases = math.prod(bn.bias.shape) # Load weights - bn_biases = Tensor(weights[ptr:ptr + num_bn_biases]) + bn_biases = Tensor(weights[ptr:ptr + num_bn_biases].astype(np.float32)) ptr += num_bn_biases - bn_weights = Tensor(weights[ptr:ptr+num_bn_biases]) + bn_weights = Tensor(weights[ptr:ptr+num_bn_biases].astype(np.float32)) ptr += num_bn_biases - bn_running_mean = Tensor(weights[ptr:ptr+num_bn_biases]) + bn_running_mean = Tensor(weights[ptr:ptr+num_bn_biases].astype(np.float32)) ptr += num_bn_biases - bn_running_var = Tensor(weights[ptr:ptr+num_bn_biases]) + bn_running_var = Tensor(weights[ptr:ptr+num_bn_biases].astype(np.float32)) ptr += num_bn_biases # Cast the loaded weights into dims of model weights bn_biases = bn_biases.reshape(shape=tuple(bn.bias.shape)) @@ -319,7 +319,7 @@ class Darknet: # load biases of the conv layer num_biases = math.prod(conv.bias.shape) # Load weights - conv_biases = Tensor(weights[ptr: ptr+num_biases]) + conv_biases = Tensor(weights[ptr: ptr+num_biases].astype(np.float32)) ptr += num_biases # Reshape conv_biases = conv_biases.reshape(shape=tuple(conv.bias.shape)) @@ -327,7 +327,7 @@ class Darknet: conv.bias = conv_biases # Load weighys for conv layers num_weights = math.prod(conv.weight.shape) - conv_weights = Tensor(weights[ptr:ptr+num_weights]) + conv_weights = Tensor(weights[ptr:ptr+num_weights].astype(np.float32)) ptr += num_weights conv_weights = conv_weights.reshape(shape=tuple(conv.weight.shape)) conv.weight = conv_weights @@ -371,7 +371,7 @@ class Darknet: if __name__ == "__main__": model = Darknet(fetch('https://raw.githubusercontent.com/pjreddie/darknet/master/cfg/yolov3.cfg').read_bytes()) print("Loading weights file (237MB). This might take a whileโ€ฆ") - model.load_weights('https://pjreddie.com/media/files/yolov3.weights') + model.load_weights('https://github.com/shadiakiki1986/yolov3.weights/releases/download/3.0.1/yolov3.weights') if len(sys.argv) > 1: url = sys.argv[1] else: diff --git a/tinygrad_repo/extra/amdpci/proclogs.py b/tinygrad_repo/extra/amdpci/proclogs.py index 6019366ec..18c616d2b 100644 --- a/tinygrad_repo/extra/amdpci/proclogs.py +++ b/tinygrad_repo/extra/amdpci/proclogs.py @@ -1,6 +1,16 @@ -import re, ctypes, sys +import re, ctypes, sys, importlib -from tinygrad.runtime.autogen.am import am, mp_11_0, mp_13_0_0, nbio_4_3_0, mmhub_3_0_0, gc_11_0_0, osssys_6_0_0 +from tinygrad.runtime.support.am.amdev import AMDev, AMRegister +class AMDFake(AMDev): + def __init__(self, devfmt, vram, doorbell, mmio, dma_regions=None): + self.devfmt, self.vram, self.doorbell64, self.mmio, self.dma_regions = devfmt, vram, doorbell, mmio, dma_regions + self._run_discovery() + self._build_regs() + +amdev = importlib.import_module("tinygrad.runtime.support.am.amdev") +amdev.AMDev = AMDFake + +from tinygrad.runtime.ops_amd import PCIIface def parse_amdgpu_logs(log_content, register_names=None): register_map = register_names @@ -23,16 +33,11 @@ def parse_amdgpu_logs(log_content, register_names=None): return processed_log def main(): - regs_offset = {13: {0: [3072, 37784576]}, 28: {0: [93184, 37754880], 1: [201327616, 201461760], 2: [209716224, 209850368], 3: [218104832, 218238976], 4: [226493440, 226627584], 5: [234882048, 235016192], 6: [243270656, 243404800]}, 21: {0: [28672, 12582912, 37795840, 130023424, 306184192], 1: [201326592, 201463808, 201465856, 204210176, 204472320], 2: [209715200, 209852416, 209854464, 212598784, 212860928], 3: [218103808, 218241024, 218243072, 220987392, 221249536], 4: [226492416, 226629632, 226631680, 229376000, 229638144], 5: [234881024, 235018240, 235020288, 237764608, 238026752], 6: [243269632, 243406848, 243408896, 246153216, 246415360]}, 22: {0: [18, 192, 13504, 36864, 37764096]}, 1: {0: [4704, 40960, 114688, 37760000]}, 2: {0: [3872, 37790720]}, 11: {0: [70656, 38103040]}, 12: {0: [106496, 37783552]}, 15: {0: [90112, 14417920, 14680064, 14942208, 38009856]}, 16: {0: [90112, 14417920, 14680064, 14942208, 38009856]}, 14: {0: [0, 20, 3360, 66560, 37859328, 67371008]}, 26: {0: [0, 20, 3360, 66560, 37859328, 67371008]}, 23: {0: [4256, 37789696]}, 33: {0: [0, 20, 3360, 66560, 37859328, 67371008]}, 25: {0: []}, 3: {0: [4704, 40960, 114688, 37760000]}, 4: {0: [4704, 40960, 114688, 37760000]}, 24: {0: [92160, 92672, 37752832, 54788096]}, 27: {0: [91648, 37751808], 1: [201339904, 201458176], 2: [209728512, 209846784], 3: [218117120, 218235392], 4: [226505728, 226624000], 5: [234894336, 235012608], 6: [243282944, 243401216]}, 29: {0: [201342976, 201344000, 205520896, 205537280], 1: [209731584, 209732608, 213909504, 213925888], 2: [218120192, 218121216, 222298112, 222314496], 3: [226508800, 226509824, 230686720, 230703104], 4: [234897408, 234898432, 239075328, 239091712], 5: [243286016, 243287040, 247463936, 247480320]}, 17: {0: [30720, 32256], 1: [31488, 73728]}} - reg_names = {} - def _prepare_registers(modules): - for base, m in modules: - for k, regval in m.__dict__.items(): - if k.startswith("reg") and not k.endswith("_BASE_IDX") and (base_idx:=getattr(m, f"{k}_BASE_IDX", None)) is not None: - reg_names[regs_offset[am.__dict__.get(f"{base}_HWIP")][0][base_idx] + regval] = k - - _prepare_registers([("MP0", mp_13_0_0), ("NBIO", nbio_4_3_0), ("MMHUB", mmhub_3_0_0), ("GC", gc_11_0_0), ("OSSSYS", osssys_6_0_0)]) + dev = PCIIface(None, 0) + for x, y in dev.dev_impl.__dict__.items(): + if isinstance(y, AMRegister): + for inst, addr in y.addr.items(): reg_names[addr] = f"{x}, xcc={inst}" with open(sys.argv[1], 'r') as f: log_content = log_content_them = f.read() diff --git a/tinygrad_repo/extra/assembly/assembly.py b/tinygrad_repo/extra/assembly/assembly.py index ab7334b57..ca19c4ff2 100644 --- a/tinygrad_repo/extra/assembly/assembly.py +++ b/tinygrad_repo/extra/assembly/assembly.py @@ -1,5 +1,5 @@ from typing import Tuple, List, NamedTuple, Any, Dict, Optional, Union, DefaultDict, cast -from tinygrad.opt.kernel import Ops, MemOp, UOp +from tinygrad.codegen.opt.kernel import Ops, MemOp, UOp from tinygrad.uop.ops import BinaryOps, UnaryOps from tinygrad.dtype import DType, dtypes from tinygrad.helpers import DEBUG diff --git a/tinygrad_repo/extra/assembly/assembly_arm64.py b/tinygrad_repo/extra/assembly/assembly_arm64.py index 1b61b8e5a..c5a3ad49b 100644 --- a/tinygrad_repo/extra/assembly/assembly_arm64.py +++ b/tinygrad_repo/extra/assembly/assembly_arm64.py @@ -3,7 +3,7 @@ from platform import system from typing import Tuple, Dict, List, Optional from tinygrad import dtypes from tinygrad.uop.ops import BinaryOps, UnaryOps, TernaryOps -from tinygrad.opt.kernel import Ops, UOp +from tinygrad.codegen.opt.kernel import Ops, UOp from tinygrad.helpers import CI from tinygrad.codegen.assembly import uops_to_asmstyle, AssemblyLanguage diff --git a/tinygrad_repo/extra/assembly/assembly_ptx.py b/tinygrad_repo/extra/assembly/assembly_ptx.py index 5535d4ccf..9a9593eb2 100644 --- a/tinygrad_repo/extra/assembly/assembly_ptx.py +++ b/tinygrad_repo/extra/assembly/assembly_ptx.py @@ -1,7 +1,7 @@ from typing import List import struct from tinygrad.codegen.assembly import uops_to_asmstyle, AssemblyLanguage -from tinygrad.opt.kernel import Ops, UOp +from tinygrad.codegen.opt.kernel import Ops, UOp from tinygrad import dtypes from tinygrad.uop.ops import BinaryOps, UnaryOps, TernaryOps from tinygrad.runtime.ops_cuda import arch diff --git a/tinygrad_repo/extra/assembly/assembly_rdna.py b/tinygrad_repo/extra/assembly/assembly_rdna.py index d57ba5245..0f5ab01ec 100644 --- a/tinygrad_repo/extra/assembly/assembly_rdna.py +++ b/tinygrad_repo/extra/assembly/assembly_rdna.py @@ -2,7 +2,7 @@ import yaml from typing import Tuple, Set, Dict from tinygrad import dtypes from tinygrad.codegen.assembly import AssemblyCodegen, Register -from tinygrad.opt.kernel import Ops +from tinygrad.codegen.opt.kernel import Ops from tinygrad.uop.ops import BinaryOps, UnaryOps, TernaryOps from tinygrad.runtime.ops_gpu import ROCM_LLVM_PATH diff --git a/tinygrad_repo/extra/backends/triton.py b/tinygrad_repo/extra/backends/triton.py index 154cbc405..646c19d60 100644 --- a/tinygrad_repo/extra/backends/triton.py +++ b/tinygrad_repo/extra/backends/triton.py @@ -2,7 +2,7 @@ from typing import Dict, List, Final, Callable, DefaultDict from collections import defaultdict from tinygrad.uop.ops import UnaryOps, BinaryOps, TernaryOps, Op from tinygrad.helpers import DType, PtrDType, dtypes, ImageDType, DEBUG, getenv -from tinygrad.opt.kernel import UOp, Ops +from tinygrad.codegen.opt.kernel import UOp, Ops from triton.compiler import compile as triton_compile import linecache import math diff --git a/tinygrad_repo/extra/gemm/amd_matmul.py b/tinygrad_repo/extra/gemm/amd_matmul.py index 97c081aa7..6d704766b 100644 --- a/tinygrad_repo/extra/gemm/amd_matmul.py +++ b/tinygrad_repo/extra/gemm/amd_matmul.py @@ -19,6 +19,9 @@ if __name__ == "__main__": elif getenv("ASM") == -1: src = (pathlib.Path(__file__).parent / "amd_seb" / "kernel3_registers.cpp").read_text() prgfast = replace(prg, name="kernel3_registers", src=src, global_size=[N//128, N//128, 1], local_size=[256, 1, 1]) + elif getenv("ASM") == -2: + src = (pathlib.Path(__file__).parent / "amd_seb" / "kernel4_gmem_df.cpp").read_text() + prgfast = replace(prg, name="kernel4_gmem_db", src=src, global_size=[N//128, N//128, 1], local_size=[256, 1, 1]) else: src = (pathlib.Path(__file__).parent / "amd_seb" / "kernel5_lds_optim.cpp").read_text() prgfast = replace(prg, name="kernel5_lds_optim", src=src, global_size=[N//128, N//128, 1], local_size=[128, 1, 1]) diff --git a/tinygrad_repo/extra/gemm/amd_seb/kernel3_registers.cpp b/tinygrad_repo/extra/gemm/amd_seb/kernel3_registers.cpp index 85bb62b86..f4cdf21e2 100644 --- a/tinygrad_repo/extra/gemm/amd_seb/kernel3_registers.cpp +++ b/tinygrad_repo/extra/gemm/amd_seb/kernel3_registers.cpp @@ -10,7 +10,8 @@ __attribute__((device)) inline void __syncthreads() { } #define BLOCK_SIZE 256 -extern "C" __attribute__((global)) void kernel3_registers(float *a, float *b, float *c) +extern "C" __attribute__((global)) void __attribute__((amdgpu_flat_work_group_size(1, BLOCK_SIZE))) +kernel3_registers(float *a, float *b, float *c) { constexpr int N = 4096; constexpr float alpha = 1.0; diff --git a/tinygrad_repo/extra/gemm/amd_seb/kernel4_gmem_df.cpp b/tinygrad_repo/extra/gemm/amd_seb/kernel4_gmem_df.cpp new file mode 100644 index 000000000..1d1265431 --- /dev/null +++ b/tinygrad_repo/extra/gemm/amd_seb/kernel4_gmem_df.cpp @@ -0,0 +1,172 @@ +typedef long unsigned int size_t; +extern "C" __attribute__((device, const)) size_t __ockl_get_local_id(unsigned int); +extern "C" __attribute__((device, const)) size_t __ockl_get_group_id(unsigned int); +struct Dim3 { size_t x, y, z; }; +#define __shared__ __attribute__((shared, aligned(16))) +__attribute__((device)) inline void __syncthreads() { + __builtin_amdgcn_fence(__ATOMIC_RELEASE, "workgroup"); + __builtin_amdgcn_s_barrier(); + __builtin_amdgcn_fence(__ATOMIC_ACQUIRE, "workgroup"); +} + +#define BLOCK_SIZE 256 +extern "C" __attribute__((global)) void __attribute__((amdgpu_flat_work_group_size(1, BLOCK_SIZE))) +kernel4_gmem_db(float *a, float *b, float *c) +{ + constexpr int N = 4096; + constexpr float alpha = 1.0; + constexpr float beta = 0.0; + + const Dim3 blockIdx{ __ockl_get_group_id(0), __ockl_get_group_id(1), __ockl_get_group_id(2) }; + const Dim3 threadIdx{ __ockl_get_local_id(0), __ockl_get_local_id(1), __ockl_get_local_id(2) }; + + // Block Tile size + constexpr int BN = 128; + constexpr int BM = 128; + // Number of Row or column we read per batch + constexpr int BK = 8; + + // Thread Tile size + constexpr int TN = 4; + constexpr int TM = 4; + + constexpr int nbWaves = BLOCK_SIZE / 32; + // Wave Tile size + constexpr int WN = 64; + constexpr int WM = BN * BM / nbWaves / WN; + + // Number of wave on X & Y axis in the Block tile + constexpr int nbWaveX = BN / WN; + constexpr int nbWaveY = BM / WM; + + const int waveIndex = threadIdx.x / 32; + const int waveIdx = waveIndex % nbWaveX; + const int waveIdy = waveIndex / nbWaveX; + const int indexInWave = threadIdx.x % 32; + + // A wave is a block of 8x4 of the output matrix + constexpr int nbThreadXPerWave = 8; + constexpr int nbThreadYPerWave = 4; + + // Thread coordinates in Wave + const int idxInWave = indexInWave % nbThreadXPerWave; + const int idyInWave = indexInWave / nbThreadXPerWave; + + constexpr int nbIterWaveN = WN / (nbThreadXPerWave * TN); + constexpr int nbIterWaveM = WM / (nbThreadYPerWave * TM); + + // Wave Sub-tile size + constexpr int SUBWN = WN / nbIterWaveN; + constexpr int SUBWM = WM / nbIterWaveM; + + // Thread mapping to read BKxBN block from A + int rAIdx = threadIdx.x % BK; + int rAIdy = threadIdx.x / BK; + // Thread mapping to read BNxBK block from B + int rBIdx = threadIdx.x % BN; + int rBIdy = threadIdx.x / BN; + + constexpr int strideReadB = BLOCK_SIZE / BN; + constexpr int strideReadA = BLOCK_SIZE / BK; + constexpr int nbReadsB = BN * BK / BLOCK_SIZE; + constexpr int nbReadsA = BM * BK / BLOCK_SIZE; + + float A_col[nbIterWaveM * TM]; + float B_row[nbIterWaveN * TN]; + + __shared__ float As[BK][BM]; + __shared__ float Bs[BK][BN]; + + float c_regs[TM * nbIterWaveM * TN * nbIterWaveN] = {0.0f}; + + for (int i = 0; i < nbReadsB; i++) { + int index_x = BN * blockIdx.x + rBIdx; + int index_y = rBIdy + i * strideReadB; + Bs[index_y % BK][index_x % BN] = b[N * index_y + index_x]; + } + + for (int i = 0; i < nbReadsA; i++) { + int index_x = rAIdx; + int index_y = BM * blockIdx.y + rAIdy + i * strideReadA; + As[(index_x % BK)][(index_y % BM)] = a[N * index_y + index_x]; + } + + __syncthreads(); + // Iteration over BK blocks. + for (int kId = 0; kId < N; kId += BK) { + float regA[nbReadsA]; + float regB[nbReadsB]; + if (kId < N - BK) { + // We populate the Shared Memory with Ks row and columns + for (int i = 0; i < nbReadsB; i++) { + int index_x = BN * blockIdx.x + rBIdx; + int index_y = rBIdy + i * strideReadB + kId + BK; + regB[i] = b[N * index_y + index_x]; + } + + for (int i = 0; i < nbReadsA; i++) { + int index_x = rAIdx + kId + BK; + int index_y = BM * blockIdx.y + rAIdy + i * strideReadA; + regA[i] = a[N * index_y + index_x]; + } + } + + for (int k = 0; k < BK; k++) { + // we cache A & B for the entire Wave tile + for (int iterWave = 0; iterWave < nbIterWaveN; iterWave++) { + for (int i = 0; i < TN; i++) { + int index = waveIdx * WN + iterWave * SUBWN + TN * idxInWave + i; + B_row[iterWave * TN + i] = Bs[k][index]; + } + } + + for (int iterWave = 0; iterWave < nbIterWaveM; iterWave++) { + for (int i = 0; i < TM; i++) { + int index = waveIdy * WM + iterWave * SUBWM + TM * idyInWave + i; + A_col[iterWave * TM + i] = As[k][index]; + } + } + + // we accumulate to C_regs + for (int iterWaveM = 0; iterWaveM < nbIterWaveM; iterWaveM++) { + for (int iterWaveN = 0; iterWaveN < nbIterWaveN; iterWaveN++) { + for (int yt = 0; yt < TM; yt++) { + for (int xt = 0; xt < TN; xt++) { + const int x = iterWaveN * TN + xt; + const int y = iterWaveM * TM + yt; + c_regs[y * TN * nbIterWaveN + x] += A_col[y] * B_row[x]; + } + } + } + } + } + __syncthreads(); + if (kId < N - BK) { + for (int i = 0; i < nbReadsB; i++) { + int index_x = BN * blockIdx.x + rBIdx; + int index_y = rBIdy + i * strideReadB + kId + BK; + Bs[index_y % BK][index_x % BN] = regB[i]; // row + } + + for (int i = 0; i < nbReadsA; i++) { + int index_x = rAIdx + kId + BK; + int index_y = BM * blockIdx.y + rAIdy + i * strideReadA; + As[(index_x % BK)][(index_y % BM)] = regA[i]; + } + __syncthreads(); + } + } + + for (int iterWaveM = 0; iterWaveM < nbIterWaveM; iterWaveM++) { + for (int iterWaveN = 0; iterWaveN < nbIterWaveN; iterWaveN++) { + int xOut = blockIdx.x * BN + waveIdx * WN + iterWaveN * SUBWN + TN * idxInWave; + int yOut = blockIdx.y * BM + waveIdy * WM + iterWaveM * SUBWM + TM * idyInWave; + for (int yt = 0; yt < TM; yt++) { + for (int xt = 0; xt < TN; xt++) { + int indexC = N * (yOut + yt) + xOut + xt; + c[indexC] = beta * c[indexC] + alpha * c_regs[TN * nbIterWaveN * (iterWaveM * TM + yt) + (iterWaveN * TN + xt)]; + } + } + } + } +} \ No newline at end of file diff --git a/tinygrad_repo/extra/gemm/amd_seb/kernel5_lds_optim.cpp b/tinygrad_repo/extra/gemm/amd_seb/kernel5_lds_optim.cpp index 965f3d54d..bf5b34e9c 100644 --- a/tinygrad_repo/extra/gemm/amd_seb/kernel5_lds_optim.cpp +++ b/tinygrad_repo/extra/gemm/amd_seb/kernel5_lds_optim.cpp @@ -26,7 +26,7 @@ kernel5_lds_optim(float *a, float *b, float *c) // Number of Row or column we read per batch constexpr int BK = 8; - // Thread Tile size . 4x4 + // Thread Tile size constexpr int TN = 4; constexpr int TM = 4; diff --git a/tinygrad_repo/extra/gemm/amd_uop_matmul.py b/tinygrad_repo/extra/gemm/amd_uop_matmul.py index ac5c71ca3..78dbf81a1 100644 --- a/tinygrad_repo/extra/gemm/amd_uop_matmul.py +++ b/tinygrad_repo/extra/gemm/amd_uop_matmul.py @@ -1,10 +1,14 @@ from tinygrad import Tensor, Device, Context, GlobalCounters, dtypes -from tinygrad.uop.ops import UOp, Ops, KernelInfo, graph_rewrite, AxisType +from tinygrad.uop.ops import UOp, Ops, KernelInfo, graph_rewrite, AxisType, PatternMatcher, UPat from tinygrad.engine.realize import CompiledRunner, ExecItem, get_program from tinygrad.dtype import AddrSpace -from tinygrad.schedule.kernelize import merge_views -from tinygrad.helpers import getenv -from tinygrad.shape.shapetracker import ShapeTracker +from tinygrad.helpers import getenv, colored, prod, unwrap +from tinygrad.shape.shapetracker import ShapeTracker, View +from tinygrad.shape.view import strides_for_shape +from tinygrad.codegen.opt.kernel import axis_colors, Opt, OptOps +from tinygrad.codegen.opt.swizzler import merge_views, view_left + +def to_colored(full_shape, axis_types): return '_'.join([colored(str(s), axis_colors[at]) for s,at in zip(full_shape, axis_types)]) N = 4096 run_count = 5 @@ -16,17 +20,67 @@ BK = 8 TN = 4 TM = 4 +# NOTE: this is from testgrad +# change reduceop axes and input ShapeTrackers, view gets replaced with a reshape. +# src->r->view --> src->view->r +def swizzle_reduceop(src:UOp, r:UOp, view:UOp): + if r.tag is not None: return None + # confirm the input is in order + # TODO: replace this with a UOp that allows for nothing else then remove this + permute = tuple(i for i in range(len(src.shape)) if i not in r.axis_arg)+r.axis_arg + assert permute == tuple(range(len(permute))), f"reduce axis must already be in order, {permute} isn't" + + # append the reduce shape to each of the views + prshape = prod(rshape:=src.shape[-len(r.axis_arg):]) + rstrides = strides_for_shape(rshape) + nv = [View.create(v.shape+rshape, tuple(x*prshape for x in v.strides)+rstrides, v.offset*prshape, + v.mask+tuple((0,s) for s in rshape) if v.mask is not None else None) for v in unwrap(view.st).views] + + # no reshape required with shrinking REDUCE_AXIS + return UOp(Ops.REDUCE_AXIS, r.dtype, (src.view(ShapeTracker(tuple(nv))),), + (r.arg[0], tuple(range(len(view.shape), len(view.shape) + len(r.axis_arg))))) + +pm = PatternMatcher([ + (UPat(Ops.VIEW, src=(UPat(Ops.REDUCE_AXIS, src=(UPat.var("src"),), name="r"),), name="view"), swizzle_reduceop), +]) + +def rangeify_kernel3(): + a = Tensor.empty(N,N) + b = Tensor.empty(N,N) + c = a@b + #c = c.reshape((32,2,16,4,32,2,16,4)).contiguous() + with Context(RANGEIFY=1): + sink = c.schedule()[-1].ast + #print(sink) + + opts = [Opt(OptOps.UPCAST, 0, 4), Opt(OptOps.LOCAL, 0, 16), Opt(OptOps.UPCAST, 0, 2)] + opts += [Opt(OptOps.UPCAST, 1, 4), Opt(OptOps.LOCAL, 1, 16), Opt(OptOps.UPCAST, 1, 2)] + opts += [Opt(OptOps.UNROLL, 0, 8)] + + return sink.replace(arg=KernelInfo(opts_to_apply=tuple(opts))) + +def top_spec_kernel3(): + a = Tensor.empty(N,N) + b = Tensor.empty(N,N) + c = a@b + sink = c.schedule()[-1].ast + L = 16 + sink = sink.reshape((N//L, L, N//L, L)) #.lift({0:UOp.range(N//BM, 0), 2:UOp.range(N//BN, 1)}) + sink = graph_rewrite(sink, view_left+pm) + axis_types = (AxisType.GLOBAL, AxisType.LOCAL, AxisType.GLOBAL, AxisType.LOCAL, AxisType.REDUCE) + return sink.replace(arg=KernelInfo(name="top_"+to_colored(sink.full_shape, axis_types), axis_types=axis_types)) + def hl_spec_kernel3(): nbIterWaveM = 2 nbIterWaveN = 2 # define buffers # TODO: remove these views once the defines have a shape - a = UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(N*N), arg=0).view(ShapeTracker.from_shape((N*N,))) - b = UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(N*N), arg=1).view(ShapeTracker.from_shape((N*N,))) - c = UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(N*N), arg=2).view(ShapeTracker.from_shape((N*N,))) - As = UOp(Ops.DEFINE_LOCAL, dtypes.float.ptr(BK*BM, AddrSpace.LOCAL), arg=0).view(ShapeTracker.from_shape((BK*BM,))) - Bs = UOp(Ops.DEFINE_LOCAL, dtypes.float.ptr(BK*BN, AddrSpace.LOCAL), arg=1).view(ShapeTracker.from_shape((BK*BN,))) + a = UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(N*N), arg=1).view(ShapeTracker.from_shape((N,N))) + b = UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(N*N), arg=2).view(ShapeTracker.from_shape((N,N))).permute((1,0)) + c = UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(N*N), arg=0).view(ShapeTracker.from_shape((N,N))) + As = UOp(Ops.DEFINE_LOCAL, dtypes.float.ptr(BK*BM, AddrSpace.LOCAL), arg=0).view(ShapeTracker.from_shape((BK, BM))).permute((1,0)) + Bs = UOp(Ops.DEFINE_LOCAL, dtypes.float.ptr(BK*BN, AddrSpace.LOCAL), arg=1).view(ShapeTracker.from_shape((BK, BN))).permute((1,0)) A_col = UOp(Ops.DEFINE_REG, dtypes.float.ptr(nbIterWaveM * TM, AddrSpace.REG), arg=0).view(ShapeTracker.from_shape((nbIterWaveM * TM,))) B_row = UOp(Ops.DEFINE_REG, dtypes.float.ptr(nbIterWaveN * TN, AddrSpace.REG), arg=1).view(ShapeTracker.from_shape((nbIterWaveN * TN,))) @@ -39,20 +93,48 @@ def hl_spec_kernel3(): Bs = Bs.reshape((1, 1, 1, 1, 1, nbIterWaveN, BN//(nbIterWaveN * TN), TN, 1, BK)).expand(full_shape) A_col = A_col.reshape((1, nbIterWaveM, 1, TM, 1, 1, 1, 1, 1, 1)).expand(full_shape) B_row = B_row.reshape((1, 1, 1, 1, 1, nbIterWaveN, 1, TN, 1, 1)).expand(full_shape) - out = (A_col.load(A_col.store(As.load(As.store(a.load())))) * B_row.load(B_row.store(Bs.load(Bs.store(b.load()))))).r(Ops.ADD, (8, 9)) - axis_types = [ + + # U1 L2 L3 L4 L5 U6 U7 U9 L10 L11 L12 L13 U14 U15 U17 U18 U19 + expanded_shape = (32, 2, 2, 2, 2, 2, 2, 2, 32, 2, 2, 2, 2, 2, 2, 2, 512, 2, 2, 2) + assert len(expanded_shape) == 20 + permute_a = list(range(len(expanded_shape))) + permute_b = permute_a[:] + + # this makes all the global loads match + # this can also be more simply done by rebinding the RANGEs + # but sadly, rebinding the RANGEs doesn't work to change the order of the local axes + permute_a[17:20] = [11,12,13] + permute_a[11:14] = [17,18,19] + permute_a[7], permute_a[10] = permute_a[10], permute_a[7] + permute_a[2:7] = [3,4,5,6,2] + + permute_b[2:16] = [19,9,10,11,17,18,8,2,12,13,14,15,3,4] + permute_b[17:20] = [5,6,7] + + a_permute = a.reshape(expanded_shape).permute(tuple(permute_a)).reshape(full_shape) + As_permute = As.reshape(expanded_shape).permute(tuple(permute_a)).reshape(full_shape) + + b_permute = b.reshape(expanded_shape).permute(tuple(permute_b)).reshape(full_shape) + Bs_permute = Bs.reshape(expanded_shape).permute(tuple(permute_b)).reshape(full_shape) + + #out = (a.load() * b.load()).r(Ops.ADD, (8, 9)) + out = (As.load(As_permute.store(a_permute.load())) * Bs.load(Bs_permute.store(b_permute.load()))).r(Ops.ADD, (8, 9)) + #out = (A_col.load(A_col.store(As.load(As.store(a.load())))) * B_row.load(B_row.store(Bs.load(Bs.store(b.load()))))).r(Ops.ADD, (8, 9)) + + axis_types = ( AxisType.GLOBAL, AxisType.UPCAST, AxisType.LOCAL, AxisType.UPCAST, AxisType.GLOBAL, AxisType.UPCAST, AxisType.LOCAL, AxisType.UPCAST, - AxisType.REDUCE, AxisType.UNROLL] - sink = c.store(out).sink(arg=KernelInfo(name="tinygemm", axis_types=tuple(axis_types))) + AxisType.REDUCE, AxisType.REDUCE) + + sink = c.store(out).sink(arg=KernelInfo(name="tg_"+to_colored(full_shape, axis_types), axis_types=axis_types)) sink = graph_rewrite(sink, merge_views) return sink -def hand_spec_kernel3(): - BLOCK_SIZE = 256 +def hand_spec_kernel3(kernel4=getenv("K4", 0), kernel5=getenv("K5", 0)): + BLOCK_SIZE = 128 if kernel5 else 256 nbWaves = BLOCK_SIZE // 32 - WN = 64 + WN = 128 if kernel5 else 64 WM = BN * BM // nbWaves // WN nbWaveX = BN // WN @@ -91,66 +173,147 @@ def hand_spec_kernel3(): blockIdx_x = UOp(Ops.SPECIAL, dtypes.int, arg=("gidx0", N//BN)) blockIdx_y = UOp(Ops.SPECIAL, dtypes.int, arg=("gidx1", N//BM)) - a = UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(N*N), arg=0) - b = UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(N*N), arg=1) - c = UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(N*N), arg=2) + a = UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(N*N), arg=1) + b = UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(N*N), arg=2) + c = UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(N*N), arg=0) A_col = UOp(Ops.DEFINE_REG, dtypes.float.ptr(nbIterWaveM * TM, AddrSpace.REG), arg=0) B_row = UOp(Ops.DEFINE_REG, dtypes.float.ptr(nbIterWaveN * TN, AddrSpace.REG), arg=1) - As = UOp(Ops.DEFINE_LOCAL, dtypes.float.ptr(BK*BM, AddrSpace.LOCAL), arg=0) + BM_As_stride = (BM+4) if kernel5 else BM + As = UOp(Ops.DEFINE_LOCAL, dtypes.float.ptr(BK*BM_As_stride, AddrSpace.LOCAL), arg=0) Bs = UOp(Ops.DEFINE_LOCAL, dtypes.float.ptr(BK*BN, AddrSpace.LOCAL), arg=1) c_regs = UOp(Ops.DEFINE_REG, dtypes.float.ptr(TM * nbIterWaveM * TN * nbIterWaveN), arg=2) - i = UOp.range(dtypes.int, c_regs.dtype.size, 16) + i = UOp.range(c_regs.dtype.size, 16) init_store = c_regs[i].store(UOp.const(dtypes.float, 0.0), i) - kId_range = UOp.range(dtypes.int, N//BK, 0) - kId = kId_range*BK + if kernel4: + regA = UOp(Ops.DEFINE_REG, dtypes.float.ptr(nbReadsA, AddrSpace.REG), arg=3) + regB = UOp(Ops.DEFINE_REG, dtypes.float.ptr(nbReadsB, AddrSpace.REG), arg=4) - # load from globals into locals - i = UOp.range(dtypes.int, nbReadsB, 1) - index_x = BN * blockIdx_x + rBIdx - index_y = rBIdy + i * strideReadB + kId - Bs_store = Bs[(index_y % BK) * BN + index_x % BN].store(b[N * index_y + index_x].load(), i) + # initial load from globals into locals (0) + kId = 0 - i = UOp.range(dtypes.int, nbReadsA, 2) - index_x = rAIdx + kId - index_y = BM * blockIdx_y + rAIdy + i * strideReadA - As_store = As[(index_x % BK) * BM + index_y % BM].store(a[N * index_y + index_x].load(), i) + # load from globals into locals + i = UOp.range(nbReadsB, 0) + index_x = BN * blockIdx_x + rBIdx + index_y = rBIdy + i * strideReadB + kId + Bs_store = Bs[(index_y % BK) * BN + index_x % BN].store(b[N * index_y + index_x].load(), i) - barrier = UOp(Ops.BARRIER, src=(As_store, Bs_store)) + i = UOp.range(nbReadsA, 1) + index_x = rAIdx + kId + index_y = BM * blockIdx_y + rAIdy + i * strideReadA + As_store = As[(index_x % BK) * BM_As_stride + index_y % BM].store(a[N * index_y + index_x].load(), i) - k = UOp.range(dtypes.int, BK, 3) + # iterate over the middle chunk + kId_range = UOp.range(N//BK-1, 2) + kId = kId_range*BK - # load from locals into registers - iterWave = UOp.range(dtypes.int, nbIterWaveN, 4) - i = UOp.range(dtypes.int, TN, 5) - index = waveIdx * WN + iterWave * SUBWN + TN * idxInWave + i - B_row_store = B_row[iterWave*TN + i].store(Bs[k*BN + index].load(barrier), iterWave, i) + barrier = UOp.barrier(As_store, Bs_store) - iterWave = UOp.range(dtypes.int, nbIterWaveM, 6) - i = UOp.range(dtypes.int, TM, 7) - index = waveIdy * WM + iterWave * SUBWM + TM * idyInWave + i - A_col_store = A_col[iterWave*TM + i].store(As[k*BM + index].load(barrier), iterWave, i) + # load from globals into registers (next round) + i = UOp.range(nbReadsB, 3) + index_x = BN * blockIdx_x + rBIdx + index_y = rBIdy + i * strideReadB + kId + BK + regB_store = regB[i].store(b[N * index_y + index_x].load(), i) - # do the GEMM math - iterWaveM = UOp.range(dtypes.int, nbIterWaveM, 8) - iterWaveN = UOp.range(dtypes.int, nbIterWaveN, 9) - yt = UOp.range(dtypes.int, TM, 10) - xt = UOp.range(dtypes.int, TN, 11) - x = iterWaveN * TN + xt - y = iterWaveM * TM + yt - c_regs_idx = c_regs[y * TN * nbIterWaveN + x] - sink = c_regs_idx.store(c_regs_idx.load(init_store) + A_col[y].load(A_col_store) * B_row[x].load(B_row_store), - iterWaveM, iterWaveN, yt, xt, k, kId_range) + i = UOp.range(nbReadsA, 4) + index_x = rAIdx + kId + BK + index_y = BM * blockIdx_y + rAIdy + i * strideReadA + regA_store = regA[i].store(a[N * index_y + index_x].load(), i) + + def inner_loop(first_range, inp_dep=()): + # inner unroll + k = UOp.range(BK, first_range+0) + + # load from locals into registers + iterWave = UOp.range(nbIterWaveN, first_range+1) + i = UOp.range(TN, first_range+2) + index = waveIdx * WN + iterWave * SUBWN + TN * idxInWave + i + B_row_store = B_row[iterWave*TN + i].store(Bs[k*BN + index].load(*inp_dep), iterWave, i) + + iterWave = UOp.range(nbIterWaveM, first_range+3) + i = UOp.range(TM, first_range+4) + index = waveIdy * WM + iterWave * SUBWM + TM * idyInWave + i + A_col_store = A_col[iterWave*TM + i].store(As[k*BM_As_stride + index].load(*inp_dep), iterWave, i) + + # do the GEMM math + iterWaveM = UOp.range(nbIterWaveM, first_range+5) + yt = UOp.range(TM, first_range+6) + iterWaveN = UOp.range(nbIterWaveN, first_range+7) + xt = UOp.range(TN, first_range+8) + x = iterWaveN * TN + xt + y = iterWaveM * TM + yt + c_regs_idx = c_regs[y * TN * nbIterWaveN + x] + # sketchy, this should end the kId_range but it doesn't + sink = c_regs_idx.store(c_regs_idx.load(init_store) + A_col[y].load(A_col_store) * B_row[x].load(B_row_store), + iterWaveM, iterWaveN, yt, xt, k) + return sink + + # TODO: kId_range should endrange after a barrier + sink = inner_loop(5, (barrier, regB_store, regA_store)).barrier() + + # load from registers into locals + i = UOp.range(nbReadsB, 14) + index_x = BN * blockIdx_x + rBIdx + index_y = rBIdy + i * strideReadB + kId + BK + Bs_store = Bs[(index_y % BK) * BN + index_x % BN].store(regB[i].load(sink), i, kId_range) + + i = UOp.range(nbReadsA, 15) + index_x = rAIdx + kId + BK + index_y = BM * blockIdx_y + rAIdy + i * strideReadA + As_store = As[(index_x % BK) * BM_As_stride + index_y % BM].store(regA[i].load(sink), i, kId_range) + + # final iteration without the copy + sink = inner_loop(16, (UOp.barrier(Bs_store, As_store),)) + else: + kId_range = UOp.range(N//BK, 0) + kId = kId_range*BK + + # load from globals into locals + i = UOp.range(nbReadsB, 1) + index_x = BN * blockIdx_x + rBIdx + index_y = rBIdy + i * strideReadB + kId + Bs_store = Bs[(index_y % BK) * BN + index_x % BN].store(b[N * index_y + index_x].load(), i) + + i = UOp.range(nbReadsA, 2) + index_x = rAIdx + kId + index_y = BM * blockIdx_y + rAIdy + i * strideReadA + As_store = As[(index_x % BK) * BM_As_stride + index_y % BM].store(a[N * index_y + index_x].load(), i) + + barrier = UOp.barrier(As_store, Bs_store) + + k = UOp.range(BK, 3) + + # load from locals into registers + iterWave = UOp.range(nbIterWaveN, 4) + i = UOp.range(TN, 5) + index = waveIdx * WN + iterWave * SUBWN + TN * idxInWave + i + B_row_store = B_row[iterWave*TN + i].store(Bs[k*BN + index].load(barrier), iterWave, i) + + iterWave = UOp.range(nbIterWaveM, 6) + i = UOp.range(TM, 7) + index = waveIdy * WM + iterWave * SUBWM + TM * idyInWave + i + A_col_store = A_col[iterWave*TM + i].store(As[k*BM_As_stride + index].load(barrier), iterWave, i) + + # do the GEMM math + iterWaveM = UOp.range(nbIterWaveM, 8) + yt = UOp.range(TM, 9) + iterWaveN = UOp.range(nbIterWaveN, 10) + xt = UOp.range(TN, 12) + x = iterWaveN * TN + xt + y = iterWaveM * TM + yt + c_regs_idx = c_regs[y * TN * nbIterWaveN + x] + sink = c_regs_idx.store(c_regs_idx.load(init_store) + A_col[y].load(A_col_store) * B_row[x].load(B_row_store), + iterWaveM, iterWaveN, yt, xt, k, kId_range) # store c_regs into c - iterWaveM = UOp.range(dtypes.int, nbIterWaveM, 12) - iterWaveN = UOp.range(dtypes.int, nbIterWaveN, 13) - yt = UOp.range(dtypes.int, TM, 14) - xt = UOp.range(dtypes.int, TN, 15) + iterWaveM = UOp.range(nbIterWaveM, 1000) + yt = UOp.range(TM, 1001) + iterWaveN = UOp.range(nbIterWaveN, 1002) + xt = UOp.range(TN, 1003) xOut = blockIdx_x * BN + waveIdx * WN + iterWaveN * SUBWN + TN * idxInWave yOut = blockIdx_y * BM + waveIdy * WM + iterWaveM * SUBWM + TM * idyInWave indexC = N * (yOut + yt) + xOut + xt @@ -160,9 +323,18 @@ def hand_spec_kernel3(): return sink.sink(arg=KernelInfo(name="tinygemm")) if __name__ == "__main__": - hprg = hl_spec_kernel3() if getenv("HL") else hand_spec_kernel3() - prg = get_program(hprg, Device.default.renderer) + HL = getenv("HL") + if HL == 3: hprg = rangeify_kernel3() + elif HL == 2: hprg = top_spec_kernel3() + elif HL == 1: hprg = hl_spec_kernel3() + else: hprg = hand_spec_kernel3() + if HL == 3: + with Context(RANGEIFY=1, BLOCK_REORDER=0): + prg = get_program(hprg, Device.default.renderer) + else: + prg = get_program(hprg, Device.default.renderer) print(prg.src) + if getenv("SRC"): exit(0) hrunner = CompiledRunner(prg) a = Tensor.randn(N, N).realize() @@ -174,7 +346,8 @@ if __name__ == "__main__": for _ in range(run_count): tc = (a@b).realize() GlobalCounters.reset() - ei = ExecItem(hrunner, [a.uop.buffer, b.uop.buffer, hc.uop.buffer]) + buffers = [hc.uop.buffer, a.uop.buffer, b.uop.buffer] + ei = ExecItem(hrunner, buffers) with Context(DEBUG=2): for _ in range(run_count): ei.run(wait=True) err = (hc-tc).square().mean().item() diff --git a/tinygrad_repo/extra/gemm/max_matmul.py b/tinygrad_repo/extra/gemm/max_matmul.py index 9ee214050..6937b7d15 100644 --- a/tinygrad_repo/extra/gemm/max_matmul.py +++ b/tinygrad_repo/extra/gemm/max_matmul.py @@ -5,9 +5,9 @@ from typing import Optional, List, Tuple, cast, Dict, Final, DefaultDict, Self from tinygrad.engine.realize import get_program # for copied uops -from tinygrad.opt.kernel import Kernel, KernelOptError +from tinygrad.codegen.opt.kernel import Kernel, KernelOptError from tinygrad.uop.ops import UOp, Ops, BinaryOps, UnaryOps, TernaryOps, KernelInfo -from tinygrad.opt.search import Opt, OptOps +from tinygrad.codegen.opt.search import Opt, OptOps from tinygrad import Device, dtypes, Tensor from tinygrad.dtype import PtrDType, DType, DTYPES_DICT from tinygrad.shape.shapetracker import ShapeTracker @@ -56,7 +56,7 @@ def randoms(): def ast_to_cuda_prog(compiler, ast, opts): k = Kernel(ast) k.apply_opts(opts) - p = get_program(k.get_optimized_ast(), k.opts) + p = get_program(k.ast, k.opts, k.applied_opts) return CUDAProgram(device, p.function_name, compiler.compile(p.src)) if __name__ == "__main__": diff --git a/tinygrad_repo/extra/gemm/simple_matmul.py b/tinygrad_repo/extra/gemm/simple_matmul.py index 8b857a882..7b9c07278 100644 --- a/tinygrad_repo/extra/gemm/simple_matmul.py +++ b/tinygrad_repo/extra/gemm/simple_matmul.py @@ -2,7 +2,7 @@ import numpy as np from tinygrad import dtypes, Tensor from tinygrad.helpers import getenv, get_single_element from tinygrad.dtype import _to_np_dtype -from tinygrad.opt.kernel import OptOps +from tinygrad.codegen.opt.kernel import OptOps from tinygrad.engine.realize import lower_schedule dtype_in = dtypes.half if getenv("HALF") else dtypes.bfloat16 if getenv("BFLOAT16") else dtypes.float diff --git a/tinygrad_repo/extra/gemm/tinygrad_nv_matmul.py b/tinygrad_repo/extra/gemm/tinygrad_nv_matmul.py index b20528ff4..1ee3e72e1 100644 --- a/tinygrad_repo/extra/gemm/tinygrad_nv_matmul.py +++ b/tinygrad_repo/extra/gemm/tinygrad_nv_matmul.py @@ -1,6 +1,6 @@ from tinygrad import Tensor, dtypes, Device from tinygrad.helpers import getenv, DEBUG -from tinygrad.opt.kernel import Kernel, Opt, OptOps +from tinygrad.codegen.opt.kernel import Kernel, Opt, OptOps from tinygrad.engine.realize import CompiledRunner, ExecItem, get_program from dataclasses import replace @@ -29,7 +29,7 @@ if __name__ == "__main__": Opt(op=OptOps.LOCAL, axis=0, amt=2), ] k.apply_opts(opts) - prg = get_program(k.get_optimized_ast(), k.opts) + prg = get_program(k.ast, k.opts, k.applied_opts) new_src = prg.src # can mod source here prg = replace(prg, src=new_src) diff --git a/tinygrad_repo/extra/gemm/tvm_gemm.py b/tinygrad_repo/extra/gemm/tvm_gemm.py index f1620a970..da58df243 100644 --- a/tinygrad_repo/extra/gemm/tvm_gemm.py +++ b/tinygrad_repo/extra/gemm/tvm_gemm.py @@ -37,7 +37,7 @@ B = Tensor.rand(K, N, device="CPU") C = (A.reshape(M, 1, K) * B.permute(1,0).reshape(1, N, K)).sum(axis=2) sched = C.schedule() -from tinygrad.opt.kernel import Kernel +from tinygrad.codegen.opt.kernel import Kernel from tinygrad.device import CompilerOptions lin = Kernel(sched[-1].ast, CompilerOptions(has_local=False, supports_float4=False)) lin.to_program() diff --git a/tinygrad_repo/extra/hcq/hcq_smi.py b/tinygrad_repo/extra/hcq/hcq_smi.py new file mode 100644 index 000000000..b5cd627d0 --- /dev/null +++ b/tinygrad_repo/extra/hcq/hcq_smi.py @@ -0,0 +1,122 @@ +#!/usr/bin/env python3 + +from tinygrad.runtime.support.system import System +import argparse, glob, os, re, time, subprocess, sys + +def scan_devs_based_on_lock(prefix:str, args) -> list[str]: + target_dev = args.pci_bus if 'pci_bus' in args.__dir__() else "" + + devs = [] + for dev in glob.glob(f'/tmp/{prefix}_*.lock'): + dev_id = dev[8:-5] + if os.path.exists(f"/sys/bus/pci/devices/{dev_id}") and dev_id.startswith(target_dev): devs.append(dev_id) + return devs + +def _do_reset_device(pci_bus): System.pci_reset(pci_bus) +def _is_module_loaded(name: str) -> bool: return os.path.isdir(f"/sys/module/{name}") + +def cmd_remove_module(args): + modules = ["nvidia_drm", "nvidia_modeset", "nvidia_uvm", "nvidia", "ast"] if args.backend == "nv" else ["amdgpu"] + to_unload = [m for m in modules if _is_module_loaded(m)] + if not to_unload: print("Kernel modules are not loaded") + else: + print("Removing kernel modules:", ", ".join(to_unload)) + try: subprocess.run(["sudo", "modprobe", "-r", *to_unload], check=True) + except subprocess.CalledProcessError as e: + print("Failed to unload all modules โ€” they may be in use.", file=sys.stderr) + sys.exit(e.returncode) + +def cmd_insert_module(args): + cmd_remove_module(args) + cmd_reset_devices(args) + + module = "nvidia" if args.backend == "nv" else "amdgpu" + if _is_module_loaded(module): + print(f"{module} kernel module already loaded") + return + + print(f"Inserting kernel module: {module}") + if args.backend == "nv": + subprocess.run(["nvidia-smi"], check=True) + elif args.backend == "amd": + subprocess.run(["sudo", "modprobe", "amdgpu"], check=True) + +def cmd_reset_devices(args): + devs = scan_devs_based_on_lock({"amd":"am", "nv":"nv"}[args.backend], args) + + for dev in devs: + print(f"Resetting device {dev}") + if args.backend != "amd": _do_reset_device(dev) + time.sleep(0.2) + +def cmd_show_pids(args): + devs = scan_devs_based_on_lock(prefix:={"amd":"am", "nv":"nv"}[args.backend], args) + + for dev in devs: + try: + pid = subprocess.check_output(['sudo', 'lsof', f'/tmp/{prefix}_{dev}.lock']).decode('utf-8').strip().split('\n')[1].split()[1] + print(f"{dev}: {pid}") + except subprocess.CalledProcessError: print(f"{dev}: No processes found using this device") + +def cmd_kill_pids(args): + devs = scan_devs_based_on_lock(prefix:={"amd":"am", "nv":"nv"}[args.backend], args) + + for dev in devs: + try: + pid = subprocess.check_output(['sudo', 'lsof', f'/tmp/{prefix}_{dev}.lock']).decode('utf-8').strip().split('\n')[1].split()[1] + print(f"{dev}: {pid}") + except subprocess.CalledProcessError: print(f"{dev}: No processes found using this device") + +def cmd_kill_pids(args): + devs = scan_devs_based_on_lock(prefix:={"amd":"am", "nv":"nv"}[args.backend], args) + + for dev in devs: + for i in range(128): + if i > 0: time.sleep(0.2) + + try: + try: pid = subprocess.check_output(['sudo', 'lsof', f'/tmp/{prefix}_{dev}.lock']).decode('utf-8').strip().split('\n')[1].split()[1] + except subprocess.CalledProcessError: break + + print(f"Killing process {pid} (which uses {dev})") + subprocess.run(['sudo', 'kill', '-9', pid], check=True) + except subprocess.CalledProcessError as e: + print(f"Failed to kill process for device {dev}: {e}", file=sys.stderr) + +def add_common_commands(parent_subparsers): + p_insmod = parent_subparsers.add_parser("insmod", help="Insert a kernel module") + p_insmod.set_defaults(func=cmd_insert_module) + + p_rmmod = parent_subparsers.add_parser("rmmod", help="Remove a kernel module") + p_rmmod.set_defaults(func=cmd_remove_module) + + p_reset = parent_subparsers.add_parser("reset", help="Reset a device") + p_reset.add_argument("--pci_bus", default="", help="PCI bus ID of the device to reset") + p_reset.set_defaults(func=cmd_reset_devices) + + p_reset = parent_subparsers.add_parser("pids", help="Show pids of processes using the device") + p_reset.add_argument("--pci_bus", default="", help="PCI bus ID of the device") + p_reset.set_defaults(func=cmd_show_pids) + + p_reset = parent_subparsers.add_parser("kill_pids", help="Kill pids of processes using the device") + p_reset.add_argument("--pci_bus", default="", help="PCI bus ID of the device") + p_reset.set_defaults(func=cmd_kill_pids) + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + backend_subparsers = parser.add_subparsers(dest="backend", required=True, metavar="{nv,amd}", help="Hardware backend to target") + + nv_parser = backend_subparsers.add_parser("nv", help="NVIDIA GPUs") + nv_commands = nv_parser.add_subparsers(dest="command", required=True) + add_common_commands(nv_commands) + + amd_parser = backend_subparsers.add_parser("amd", help="AMD GPUs") + amd_commands = amd_parser.add_subparsers(dest="command", required=True) + add_common_commands(amd_commands) + + args = parser.parse_args() + if args.command is None: + parser.print_help(sys.stderr) + sys.exit(1) + + args.func(args) diff --git a/tinygrad_repo/extra/hcqfuzz/tests/bert.py b/tinygrad_repo/extra/hcqfuzz/tests/bert.py index 331d908cf..4514b7455 100644 --- a/tinygrad_repo/extra/hcqfuzz/tests/bert.py +++ b/tinygrad_repo/extra/hcqfuzz/tests/bert.py @@ -8,7 +8,6 @@ bert_train_params = { "BS": 96, "EVAL_BS": 96, "FUSE_ARANGE": 1, - "FUSE_ARANGE_UINT": 0, "BASEDIR": "/raid/datasets/wiki", } diff --git a/tinygrad_repo/extra/huggingface_onnx/README.md b/tinygrad_repo/extra/huggingface_onnx/README.md new file mode 100644 index 000000000..d275ab57a --- /dev/null +++ b/tinygrad_repo/extra/huggingface_onnx/README.md @@ -0,0 +1,61 @@ +# HuggingFace ONNX + +Tool for discovering, downloading, and validating ONNX models from HuggingFace. + +## Extra Dependencies + +```bash +pip install huggingface_hub pyyaml requests onnx onnxruntime numpy +``` + +## Huggingface Manager (discovering and downloading) + +The `huggingface_manager.py` script discovers top ONNX models from HuggingFace, collects metadata, and optionally downloads them. + +```bash +# Download top 50 models sorted by downloads +python huggingface_manager.py --limit 50 --download + +# Just collect metadata (no download) +python huggingface_manager.py --limit 100 + +# Sort by likes instead of downloads +python huggingface_manager.py --limit 20 --sort likes --download + +# Custom output file +python huggingface_manager.py --limit 10 --output my_models.yaml +``` + +### Output Format + +The tool generates a YAML file with the following structure: + +```yaml +repositories: + "model-name": + url: "https://huggingface.co/model-name" + download_path: "/path/to/models/..." # when --download used + files: + - file: "model.onnx" + size: "90.91MB" +total_size: "2.45GB" +created_at: "2024-01-15T10:30:00Z" +``` + +## Run Models (validation) + +The `run_models.py` script validates ONNX models against ONNX Runtime for correctness. + +```bash +# Validate models from a YAML configuration file +python run_models.py --validate huggingface_repos.yaml + +# Debug specific repository (downloads and validates all ONNX models) +python run_models.py --debug sentence-transformers/all-MiniLM-L6-v2 + +# Debug specific model file +python run_models.py --debug sentence-transformers/all-MiniLM-L6-v2/onnx/model.onnx + +# Debug with model truncation for debugging and validating intermediate results +DEBUGONNX=1 python run_models.py --debug sentence-transformers/all-MiniLM-L6-v2/onnx/model.onnx --truncate 10 +``` diff --git a/tinygrad_repo/extra/huggingface_onnx/collect_metadata.py b/tinygrad_repo/extra/huggingface_onnx/collect_metadata.py deleted file mode 100644 index 0a3d1eda2..000000000 --- a/tinygrad_repo/extra/huggingface_onnx/collect_metadata.py +++ /dev/null @@ -1,85 +0,0 @@ -import yaml, time, requests, argparse -from pathlib import Path -from huggingface_hub import list_models, HfApi -from tinygrad.helpers import tqdm - -HUGGINGFACE_URL = "https://huggingface.co" -SKIPPED_FILES = [ - "fp16", "int8", "uint8", "quantized", # numerical accuracy issues - "avx2", "arm64", "avx512", "avx512_vnni", # numerical accuracy issues - "q4", "q4f16", "bnb4", # unimplemented quantization - "model_O4", # requires non cpu ort runner and MemcpyFromHost op - "merged", # TODO implement attribute with graph type and Loop op -] -SKIPPED_REPO_PATHS = [ - # Invalid model-index - "AdamCodd/vit-base-nsfw-detector", - # TODO: implement attribute with graph type and Loop op - "minishlab/potion-base-8M", "minishlab/M2V_base_output", "minishlab/potion-retrieval-32M", - # TODO: implement SimplifiedLayerNormalization, SkipSimplifiedLayerNormalization, GroupQueryAttention - "HuggingFaceTB/SmolLM2-360M-Instruct", - # TODO: implement SimplifiedLayerNormalization, SkipSimplifiedLayerNormalization, RotaryEmbedding, MultiHeadAttention - "HuggingFaceTB/SmolLM2-1.7B-Instruct", - # TODO: implmement RandomNormalLike - "stabilityai/stable-diffusion-xl-base-1.0", "stabilityai/sdxl-turbo", 'SimianLuo/LCM_Dreamshaper_v7', - # TODO: implement NonZero - "mangoapps/fb_zeroshot_mnli_onnx", - # TODO huge Concat in here with 1024 (1, 3, 32, 32) Tensors, and maybe a MOD bug with const folding - "briaai/RMBG-2.0", -] - -def get_top_repos(n: int, sort: str) -> list[str]: # list["FacebookAI/xlm-roberta-large", ...] - print(f"** Getting top {n} models sorted by {sort} **") - repos = [] - i = 0 - for model in list_models(filter="onnx", sort=sort): - if model.id in SKIPPED_REPO_PATHS: continue - print(f"{i+1}/{n}: {model.id} ({getattr(model, sort)})") - repos.append(model.id) - i += 1 - if i == n: break - return repos - -def get_metadata(repos:list[str]) -> dict: - api = HfApi() - repos_metadata = {"repositories": {}} - total_size = 0 - - # TODO: speed head requests up with async? - for repo in tqdm(repos, desc="Getting metadata"): - files_metadata = [] - model_info = api.model_info(repo) - - for file in model_info.siblings: - filename = file.rfilename - if not (filename.endswith('.onnx') or filename.endswith('.onnx_data')): continue - if any(skip_str in filename for skip_str in SKIPPED_FILES): continue - head = requests.head(f"{HUGGINGFACE_URL}/{repo}/resolve/main/{filename}", allow_redirects=True) - file_size = file.size or int(head.headers.get('Content-Length', 0)) - files_metadata.append({"file": filename, "size": f"{file_size/1e6:.2f}MB"}) - total_size += file_size - - repos_metadata["repositories"][repo] = { - "url": f"{HUGGINGFACE_URL}/{repo}", - "download_path": None, - "files": files_metadata, - } - repos_metadata['total_size'] = f"{total_size/1e9:.2f}GB" - repos_metadata['created_at'] = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()) - return repos_metadata - -if __name__ == "__main__": - sort = "downloads" # recent 30 days downloads - huggingface_onnx_dir = Path(__file__).parent - - parser = argparse.ArgumentParser(description="Produces a YAML file with metadata of top huggingface onnx models") - parser.add_argument("--limit", type=int, required=True, help="Number of top repositories to process (e.g., 100)") - parser.add_argument("--output", type=str, default="huggingface_repos.yaml", help="Output YAML file name to save the report") - args = parser.parse_args() - - top_repos = get_top_repos(args.limit, sort) - metadata = get_metadata(top_repos) - yaml_path = huggingface_onnx_dir / args.output - with open(yaml_path, 'w') as f: - yaml.dump(metadata, f, sort_keys=False) - print(f"YAML saved to: {str(yaml_path)}") diff --git a/tinygrad_repo/extra/huggingface_onnx/download_models.py b/tinygrad_repo/extra/huggingface_onnx/download_models.py deleted file mode 100644 index e79e0e85f..000000000 --- a/tinygrad_repo/extra/huggingface_onnx/download_models.py +++ /dev/null @@ -1,29 +0,0 @@ -import yaml, argparse -from pathlib import Path -from huggingface_hub import snapshot_download - -def download_models(yaml_file: str, download_dir: str) -> None: - with open(yaml_file, 'r') as f: metadata = yaml.safe_load(f) - n = len(metadata["repositories"]) - - for i, (model_id, model_data) in enumerate(metadata["repositories"].items()): - print(f"Downloading {i+1}/{n}: {model_id}...") - allow_patterns = [file_info["file"] for file_info in model_data["files"]] - root_path = Path(snapshot_download(repo_id=model_id, allow_patterns=allow_patterns, cache_dir=download_dir)) - # download configs too (the sizes are small) - snapshot_download(repo_id=model_id, allow_patterns=["*config.json"], cache_dir=download_dir) - print(f"Downloaded model files to: {root_path}") - model_data["download_path"] = str(root_path) - - # Save the updated metadata back to the YAML file - with open(yaml_file, 'w') as f: yaml.dump(metadata, f, sort_keys=False) - print("Download completed according to YAML file.") - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Download models from Huggingface Hub based on a YAML configuration file.") - parser.add_argument("input", type=str, help="Path to the input YAML configuration file containing model information.") - args = parser.parse_args() - - models_folder = Path(__file__).parent / "models" - models_folder.mkdir(parents=True, exist_ok=True) - download_models(args.input, str(models_folder)) \ No newline at end of file diff --git a/tinygrad_repo/extra/huggingface_onnx/huggingface_manager.py b/tinygrad_repo/extra/huggingface_onnx/huggingface_manager.py new file mode 100644 index 000000000..7fe67f105 --- /dev/null +++ b/tinygrad_repo/extra/huggingface_onnx/huggingface_manager.py @@ -0,0 +1,230 @@ +import yaml +import time +import requests +import argparse +from pathlib import Path +from huggingface_hub import list_models, HfApi, snapshot_download +from tinygrad.helpers import _ensure_downloads_dir +DOWNLOADS_DIR = _ensure_downloads_dir() / "models" +from tinygrad.helpers import tqdm + +def snapshot_download_with_retry(*, repo_id: str, allow_patterns: list[str]|tuple[str, ...]|None=None, cache_dir: str|Path|None=None, + tries: int=2, **kwargs) -> Path: + for attempt in range(tries): + try: + return Path(snapshot_download( + repo_id=repo_id, + allow_patterns=allow_patterns, + cache_dir=str(cache_dir) if cache_dir is not None else None, + **kwargs + )) + except Exception as e: + if attempt == tries-1: raise + time.sleep(1) + +# Constants for filtering models +HUGGINGFACE_URL = "https://huggingface.co" +SKIPPED_FILES = [ + "fp16", "int8", "uint8", "quantized", # numerical accuracy issues + "avx2", "arm64", "avx512", "avx512_vnni", # numerical accuracy issues + "q4", "q4f16", "bnb4", # unimplemented quantization + "model_O4", # requires non cpu ort runner and MemcpyFromHost op + "merged", # TODO implement attribute with graph type and Loop op +] + +SKIPPED_REPO_PATHS = [ + # Invalid model-index + "AdamCodd/vit-base-nsfw-detector", + # TODO: implement attribute with graph type and Loop op + "minishlab/potion-base-8M", "minishlab/M2V_base_output", "minishlab/potion-retrieval-32M", + # TODO: implement SimplifiedLayerNormalization, SkipSimplifiedLayerNormalization, GroupQueryAttention + "HuggingFaceTB/SmolLM2-360M-Instruct", + # TODO: implement SimplifiedLayerNormalization, SkipSimplifiedLayerNormalization, RotaryEmbedding, MultiHeadAttention + "HuggingFaceTB/SmolLM2-1.7B-Instruct", + # TODO: implement RandomNormalLike + "stabilityai/stable-diffusion-xl-base-1.0", "stabilityai/sdxl-turbo", 'SimianLuo/LCM_Dreamshaper_v7', + # TODO: implement NonZero + "mangoapps/fb_zeroshot_mnli_onnx", + # TODO huge Concat in here with 1024 (1, 3, 32, 32) Tensors, and maybe a MOD bug with const folding + "briaai/RMBG-2.0", +] + + +class HuggingFaceONNXManager: + def __init__(self): + self.base_dir = Path(__file__).parent + self.models_dir = DOWNLOADS_DIR + self.api = HfApi() + + def discover_models(self, limit: int, sort: str = "downloads") -> list[str]: + print(f"Discovering top {limit} ONNX models sorted by {sort}...") + repos = [] + i = 0 + + for model in list_models(filter="onnx", sort=sort): + if model.id in SKIPPED_REPO_PATHS: + continue + + print(f" {i+1}/{limit}: {model.id} ({getattr(model, sort)})") + repos.append(model.id) + i += 1 + if i == limit: + break + + print(f"Found {len(repos)} suitable ONNX models") + return repos + + def collect_metadata(self, repos: list[str]) -> dict: + print(f"Collecting metadata for {len(repos)} repositories...") + metadata = {"repositories": {}} + total_size = 0 + + for repo in tqdm(repos, desc="Collecting metadata"): + try: + files_metadata = [] + model_info = self.api.model_info(repo) + + for file in model_info.siblings: + filename = file.rfilename + if not (filename.endswith('.onnx') or filename.endswith('.onnx_data')): + continue + if any(skip_str in filename for skip_str in SKIPPED_FILES): + continue + + # Get file size from API or HEAD request + try: + head = requests.head( + f"{HUGGINGFACE_URL}/{repo}/resolve/main/{filename}", + allow_redirects=True, + timeout=10 + ) + file_size = file.size or int(head.headers.get('Content-Length', 0)) + except requests.RequestException: + file_size = file.size or 0 + + files_metadata.append({ + "file": filename, + "size": f"{file_size/1e6:.2f}MB" + }) + total_size += file_size + + if files_metadata: # Only add repos with valid ONNX files + metadata["repositories"][repo] = { + "url": f"{HUGGINGFACE_URL}/{repo}", + "download_path": None, + "files": files_metadata, + } + + except Exception as e: + print(f"WARNING: Failed to collect metadata for {repo}: {e}") + continue + + metadata['total_size'] = f"{total_size/1e9:.2f}GB" + metadata['created_at'] = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()) + + print(f"Collected metadata for {len(metadata['repositories'])} repositories") + print(f"Total estimated download size: {metadata['total_size']}") + + return metadata + + def download_models(self, metadata: dict) -> dict: + self.models_dir.mkdir(parents=True, exist_ok=True) + + repos = metadata["repositories"] + n = len(repos) + + print(f"Downloading {n} repositories to {self.models_dir}...") + + for i, (model_id, model_data) in enumerate(repos.items()): + print(f" Downloading {i+1}/{n}: {model_id}...") + + try: + # Download ONNX model files + allow_patterns = [file_info["file"] for file_info in model_data["files"]] + root_path = snapshot_download_with_retry( + repo_id=model_id, + allow_patterns=allow_patterns, + cache_dir=str(self.models_dir) + ) + + # Download config files (usually small) + snapshot_download_with_retry( + repo_id=model_id, + allow_patterns=["*config.json"], + cache_dir=str(self.models_dir) + ) + + model_data["download_path"] = str(root_path) + print(f" Downloaded to: {root_path}") + + except Exception as e: + print(f" ERROR: Failed to download {model_id}: {e}") + model_data["download_path"] = None + continue + + successful_downloads = sum(1 for repo in repos.values() if repo["download_path"] is not None) + print(f"Successfully downloaded {successful_downloads}/{n} repositories") + print(f"All models saved to: {self.models_dir}") + + return metadata + + def save_metadata(self, metadata: dict, output_file: str): + yaml_path = self.base_dir / output_file + with open(yaml_path, 'w') as f: + yaml.dump(metadata, f, sort_keys=False) + print(f"Metadata saved to: {yaml_path}") + + def discover_and_download(self, limit: int, output_file: str = "huggingface_repos.yaml", + sort: str = "downloads", download: bool = True): + print(f"Starting HuggingFace ONNX workflow...") + print(f" Limit: {limit} models") + print(f" Sort by: {sort}") + print(f" Download: {'Yes' if download else 'No'}") + print(f" Output: {output_file}") + print("-" * 50) + + repos = self.discover_models(limit, sort) + + metadata = self.collect_metadata(repos) + + if download: + metadata = self.download_models(metadata) + + self.save_metadata(metadata, output_file) + + print("-" * 50) + print("Workflow completed successfully!") + if download: + successful = sum(1 for repo in metadata["repositories"].values() + if repo["download_path"] is not None) + print(f"{successful}/{len(metadata['repositories'])} models downloaded") + + return metadata + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="HuggingFace ONNX Model Manager - Discover, collect metadata, and download ONNX models", + ) + + parser.add_argument("--limit", type=int, help="Number of top repositories to process") + parser.add_argument("--output", type=str, default="huggingface_repos.yaml", + help="Output YAML file name (default: huggingface_repos.yaml)") + parser.add_argument("--sort", type=str, default="downloads", + choices=["downloads", "likes", "created", "modified"], + help="Sort criteria for model discovery (default: downloads)") + + parser.add_argument("--download", action="store_true", default=False, + help="Download models after collecting metadata") + + args = parser.parse_args() + + if not args.limit: parser.error("--limit is required") + + manager = HuggingFaceONNXManager() + manager.discover_and_download( + limit=args.limit, + output_file=args.output, + sort=args.sort, + download=args.download + ) \ No newline at end of file diff --git a/tinygrad_repo/extra/huggingface_onnx/run_models.py b/tinygrad_repo/extra/huggingface_onnx/run_models.py index 7ac9ef54e..fa8771a11 100644 --- a/tinygrad_repo/extra/huggingface_onnx/run_models.py +++ b/tinygrad_repo/extra/huggingface_onnx/run_models.py @@ -1,10 +1,11 @@ -import onnx, yaml, tempfile, time, collections, pprint, argparse, json +import onnx, yaml, tempfile, time, argparse, json from pathlib import Path +from typing import Any from tinygrad.frontend.onnx import OnnxRunner -from extra.onnx import get_onnx_ops from extra.onnx_helpers import validate, get_example_inputs +from extra.huggingface_onnx.huggingface_manager import DOWNLOADS_DIR, snapshot_download_with_retry -def get_config(root_path: Path): +def get_config(root_path: Path) -> dict[str, Any]: ret = {} for path in root_path.rglob("*config.json"): config = json.load(path.open()) @@ -12,19 +13,19 @@ def get_config(root_path: Path): ret.update(config) return ret -def run_huggingface_validate(onnx_model_path, config, rtol, atol): - onnx_runner = OnnxRunner(onnx_model_path) - inputs = get_example_inputs(onnx_runner.graph_inputs, config) - validate(onnx_model_path, inputs, rtol=rtol, atol=atol) - -def get_tolerances(file_name): # -> rtol, atol +def get_tolerances(file_name: str) -> tuple[float, float]: # TODO very high rtol atol if "fp16" in file_name: return 9e-2, 9e-2 if any(q in file_name for q in ["int8", "uint8", "quantized"]): return 4, 4 return 4e-3, 3e-2 +def run_huggingface_validate(onnx_model_path: str | Path, config: dict[str, Any], rtol: float, atol: float): + onnx_runner = OnnxRunner(onnx_model_path) + inputs = get_example_inputs(onnx_runner.graph_inputs, config) + validate(onnx_model_path, inputs, rtol=rtol, atol=atol) + def validate_repos(models:dict[str, tuple[Path, Path]]): - print(f"** Validating {len(model_paths)} models **") + print(f"** Validating {len(models)} models **") for model_id, (root_path, relative_path) in models.items(): print(f"validating model {model_id}") model_path = root_path / relative_path @@ -36,25 +37,6 @@ def validate_repos(models:dict[str, tuple[Path, Path]]): et = time.time() - st print(f"passed, took {et:.2f}s") -def retrieve_op_stats(models:dict[str, tuple[Path, Path]]) -> dict: - ret = {} - op_counter = collections.Counter() - unsupported_ops = collections.defaultdict(set) - supported_ops = get_onnx_ops() - print(f"** Retrieving stats from {len(model_paths)} models **") - for model_id, (root_path, relative_path) in models.items(): - print(f"examining {model_id}") - model_path = root_path / relative_path - onnx_runner = OnnxRunner(model_path) - for node in onnx_runner.graph_nodes: - op_counter[node.op] += 1 - if node.op not in supported_ops: - unsupported_ops[node.op].add(model_id) - del onnx_runner - ret["unsupported_ops"] = {k:list(v) for k, v in unsupported_ops.items()} - ret["op_counter"] = op_counter.most_common() - return ret - def debug_run(model_path, truncate, config, rtol, atol): if truncate != -1: model = onnx.load(model_path) @@ -71,12 +53,9 @@ def debug_run(model_path, truncate, config, rtol, atol): run_huggingface_validate(model_path, config, rtol, atol) if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Huggingface ONNX Model Validator and Ops Checker") - parser.add_argument("input", type=str, help="Path to the input YAML configuration file containing model information.") - parser.add_argument("--check_ops", action="store_true", default=False, - help="Check support for ONNX operations in models from the YAML file") - parser.add_argument("--validate", action="store_true", default=False, - help="Validate correctness of models from the YAML file") + parser = argparse.ArgumentParser(description="Huggingface ONNX Model Validator") + parser.add_argument("--validate", type=str, default="", + help="Validate correctness of models from the specified YAML configuration file") parser.add_argument("--debug", type=str, default="", help="""Validates without explicitly needing a YAML or models pre-installed. provide repo id (e.g. "minishlab/potion-base-8M") to validate all onnx models inside the repo @@ -85,13 +64,13 @@ if __name__ == "__main__": parser.add_argument("--truncate", type=int, default=-1, help="Truncate the ONNX model so intermediate results can be validated") args = parser.parse_args() - if not (args.check_ops or args.validate or args.debug): - parser.error("Please provide either --validate, --check_ops, or --debug.") + if not (args.validate or args.debug): + parser.error("Please provide either --validate or --debug .") if args.truncate != -1 and not args.debug: parser.error("--truncate and --debug should be used together for debugging") - if args.check_ops or args.validate: - with open(args.input, 'r') as f: + if args.validate: + with open(args.validate, 'r') as f: data = yaml.safe_load(f) assert all(repo["download_path"] is not None for repo in data["repositories"].values()), "please run `download_models.py` for this yaml" model_paths = { @@ -101,22 +80,16 @@ if __name__ == "__main__": if model["file"].endswith(".onnx") } - if args.check_ops: - pprint.pprint(retrieve_op_stats(model_paths)) - - if args.validate: - validate_repos(model_paths) + validate_repos(model_paths) if args.debug: - from huggingface_hub import snapshot_download - download_dir = Path(__file__).parent / "models" path:list[str] = args.debug.split("/") if len(path) == 2: # repo id # validates all onnx models inside repo repo_id = "/".join(path) - root_path = Path(snapshot_download(repo_id=repo_id, allow_patterns=["*.onnx", "*.onnx_data"], cache_dir=download_dir)) - snapshot_download(repo_id=repo_id, allow_patterns=["*config.json"], cache_dir=download_dir) + root_path = snapshot_download_with_retry(repo_id=repo_id, allow_patterns=["*.onnx", "*.onnx_data"], cache_dir=DOWNLOADS_DIR) + snapshot_download_with_retry(repo_id=repo_id, allow_patterns=["*config.json"], cache_dir=DOWNLOADS_DIR) config = get_config(root_path) for onnx_model in root_path.rglob("*.onnx"): rtol, atol = get_tolerances(onnx_model.name) @@ -128,8 +101,8 @@ if __name__ == "__main__": onnx_model = path[-1] assert path[-1].endswith(".onnx") repo_id, relative_path = "/".join(path[:2]), "/".join(path[2:]) - root_path = Path(snapshot_download(repo_id=repo_id, allow_patterns=[relative_path], cache_dir=download_dir)) - snapshot_download(repo_id=repo_id, allow_patterns=["*config.json"], cache_dir=download_dir) + root_path = snapshot_download_with_retry(repo_id=repo_id, allow_patterns=[relative_path], cache_dir=DOWNLOADS_DIR) + snapshot_download_with_retry(repo_id=repo_id, allow_patterns=["*config.json"], cache_dir=DOWNLOADS_DIR) config = get_config(root_path) rtol, atol = get_tolerances(onnx_model) print(f"validating {relative_path} with truncate={args.truncate}, {rtol=}, {atol=}") diff --git a/tinygrad_repo/extra/mcts_search.py b/tinygrad_repo/extra/mcts_search.py index fdbb1ffe9..731fab11f 100644 --- a/tinygrad_repo/extra/mcts_search.py +++ b/tinygrad_repo/extra/mcts_search.py @@ -4,9 +4,9 @@ import numpy as np np.set_printoptions(suppress=True) import math, functools, time, random, statistics from tinygrad.helpers import DEBUG, getenv, CACHELEVEL, diskcache_get, diskcache_put, colored, Profiling -from tinygrad.opt.kernel import Kernel +from tinygrad.codegen.opt.kernel import Kernel from tinygrad.device import Buffer, Device, CompileError -from tinygrad.opt.search import _ensure_buffer_alloc, get_kernel_actions, _time_program +from tinygrad.codegen.opt.search import _ensure_buffer_alloc, get_kernel_actions, _time_program from tinygrad.engine.realize import get_program class MCTSNode: diff --git a/tinygrad_repo/extra/models/llama.py b/tinygrad_repo/extra/models/llama.py index 16e1aea0b..6d2d584d8 100644 --- a/tinygrad_repo/extra/models/llama.py +++ b/tinygrad_repo/extra/models/llama.py @@ -99,7 +99,9 @@ class FeedForward: self.w3 = linear(dim, hidden_dim, bias=False) # the gate in Gated Linear Unit def __call__(self, x:Tensor) -> Tensor: - return self.w2(self.w1(x).silu() * self.w3(x)) # SwiGLU [arxiv/2002.05202, eq (5)] + w1 = self.w1(x).silu() + w3 = self.w3(x.contiguous_backward()) # this fixes a strange fusion that makes tensor cores miss + return self.w2(w1 * w3) class TransformerBlock: def __init__(self, dim:int, hidden_dim:int, n_heads:int, n_kv_heads:int, norm_eps:float, max_context:int, linear=nn.Linear, @@ -111,7 +113,7 @@ class TransformerBlock: def __call__(self, x:Tensor, start_pos:Union[Variable,int], freqs_cis:Tensor, mask:Optional[Tensor]): h = x + self.attention(self.attention_norm(x), start_pos, freqs_cis, mask) - return (h + self.feed_forward(self.ffn_norm(h))).contiguous() + return (h + self.feed_forward(self.ffn_norm(h))).contiguous().contiguous_backward() # standard openai sampling def sample(logits: Tensor, temp: float, k: int, p: float, af: float, ap: float): @@ -179,16 +181,14 @@ class Transformer: def forward(self, tokens:Tensor, start_pos:Union[Variable,int], temperature:float, top_k:int, top_p:float, alpha_f:float, alpha_p:float): _bsz, seqlen = tokens.shape h = self.tok_embeddings(tokens) - - self.freqs_cis = self.freqs_cis.cast(h.dtype).contiguous() - freqs_cis = self.freqs_cis[:, start_pos:start_pos+seqlen, :, :, :] + freqs_cis = self.freqs_cis.cast(h.dtype)[:, start_pos:start_pos+seqlen, :, :, :] mask = Tensor.full((1, 1, seqlen, start_pos+seqlen), float("-inf"), dtype=h.dtype, device=h.device).triu(start_pos+1) if seqlen > 1 else None for layer in self.layers: h = layer(h, start_pos, freqs_cis, mask) - logits = self.output(self.norm(h)).float()[:, -1, :] + logits = self.output(self.norm(h)) if math.isnan(temperature): return logits - return sample(logits.flatten(), temperature, top_k, top_p, alpha_f, alpha_p) + return sample(logits[:, -1, :].flatten(), temperature, top_k, top_p, alpha_f, alpha_p) def __call__(self, tokens:Tensor, start_pos:int, temperature:float=0.0, top_k:int=0, top_p:float=0.8, alpha_f:float=0.0, alpha_p:float=0.0): # TODO: better way to handle the first call v.s. the rest? diff --git a/tinygrad_repo/extra/nvpci/gpu_reset.sh b/tinygrad_repo/extra/nvpci/gpu_reset.sh deleted file mode 100644 index a76103675..000000000 --- a/tinygrad_repo/extra/nvpci/gpu_reset.sh +++ /dev/null @@ -1,2 +0,0 @@ -GPU="$1" -echo 1 | sudo tee /sys/bus/pci/devices/$GPU/reset 2>/dev/null diff --git a/tinygrad_repo/extra/nvpci/nv_smi.py b/tinygrad_repo/extra/nvpci/nv_smi.py deleted file mode 100644 index 8491d56d1..000000000 --- a/tinygrad_repo/extra/nvpci/nv_smi.py +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env python3 - -from tinygrad.runtime.support.system import System -import argparse, glob, os, re, time, subprocess, sys - -def scan_devs_based_on_lock(prefix:str) -> list[str]: - devs = [] - for dev in glob.glob(f'/tmp/{prefix}_*.lock'): - dev_id = dev[8:-5] - if os.path.exists(f"/sys/bus/pci/devices/{dev_id}"): devs.append(dev_id) - return devs - -def _do_reset_device(pci_bus): System.pci_reset(pci_bus) -def _is_module_loaded(name: str) -> bool: return os.path.isdir(f"/sys/module/{name}") - -def cmd_remove_module(args): - to_unload = [m for m in ["nvidia_drm", "nvidia_modeset", "nvidia_uvm", "nvidia"] if _is_module_loaded(m)] - if not to_unload: - print("NVIDIA kernel modules are not loaded") - else: - print("Removing NVIDIA kernel modules:", ", ".join(to_unload)) - try: subprocess.run(["sudo", "modprobe", "-r", *to_unload], check=True) - except subprocess.CalledProcessError as e: - print("Failed to unload all modules โ€” they may be in use.", file=sys.stderr) - sys.exit(e.returncode) - -def cmd_insert_module(args): - cmd_remove_module(args) - cmd_reset_devices(args) - - if not os.path.exists("/sys/module/nvidia"): - print("Inserting nvidia kernel module") - subprocess.run(["nvidia-smi"], check=True) - else: print("Nvidia kernel module already loaded") - -def cmd_reset_devices(args): - devs = scan_devs_based_on_lock("nv") - dev_to_reset = args.pci_bus if 'pci_bus' in args.__dir__() else "" - - for dev in devs: - if dev.startswith(dev_to_reset): - print(f"Resetting device {dev}") - _do_reset_device(dev) - time.sleep(0.2) - -if __name__ == "__main__": - parser = argparse.ArgumentParser() - subparsers = parser.add_subparsers(required=True, dest="cmd") - - parser_insmod = subparsers.add_parser('insmod', help='Insert a nvidia kernel module') - parser_insmod.set_defaults(func=cmd_insert_module) - - parser_rmmod = subparsers.add_parser('rmmod', help='Remove a nvidia kernel module') - parser_rmmod.set_defaults(func=cmd_remove_module) - - parser_reset = subparsers.add_parser('reset', help='Reset a nvidia device') - parser_reset.add_argument('--pci_bus', type=str, default="", help='PCI bus ID of the device to reset') - parser_reset.set_defaults(func=cmd_reset_devices) - - args = parser.parse_args() - if args.cmd is None: - parser.print_help(sys.stderr) - sys.exit(1) - - args.func(args) diff --git a/tinygrad_repo/extra/onnx.py b/tinygrad_repo/extra/onnx.py deleted file mode 100644 index 2c634b4f0..000000000 --- a/tinygrad_repo/extra/onnx.py +++ /dev/null @@ -1,954 +0,0 @@ -# mypy: disable-error-code="misc, list-item, assignment, operator, index, arg-type" -from types import SimpleNamespace -from typing import Any, Sequence, cast, Literal, Callable, get_args, NamedTuple -import dataclasses, functools, io, math, types, warnings, pathlib, sys, enum -from tinygrad.tensor import Tensor, _broadcast_shape, ReductionStr -from tinygrad.helpers import getenv, DEBUG, all_same, prod, flatten, make_tuple, argsort, is_numpy_ndarray, get_single_element -from tinygrad.dtype import DType, ConstType, dtypes, _from_np_dtype -from tinygrad.device import is_dtype_supported, Device -from extra.onnx_parser import onnx_load - -# https://github.com/onnx/onnx/blob/rel-1.17.0/onnx/onnx.proto3#L500-L544 -data_types: dict[int, DType] = { - 1:dtypes.float32, 2:dtypes.uint8, 3:dtypes.int8, 4:dtypes.uint16, 5:dtypes.int16, 6:dtypes.int32, 7:dtypes.int64, - 9:dtypes.bool, 10:dtypes.float16, 11:dtypes.double, 12:dtypes.uint32, 13:dtypes.uint64, 16:dtypes.bfloat16, -} - -# https://github.com/onnx/onnx/blob/rel-1.17.0/onnx/onnx.proto3#L128-L145 -attribute_types: dict[int, Callable] = { - 1: lambda a: float(a.f), - 2: lambda a: int(a.i), - 3: lambda a: a.s.data().tobytes().decode("utf8") if isinstance(a.s, Tensor) else a.s.decode("utf8"), - 4: lambda a: buffer_parse(a.t), - 6: lambda a: tuple(float(x) for x in a.floats), - 7: lambda a: tuple(int(x) for x in a.ints), - 8: lambda a: tuple(x.data().tobytes().decode("utf8") for x in a.strings) -} - -# ***** protobuf parsing ****** -from onnx import AttributeProto, TensorProto, TypeProto - -def has_field(onnx_type: TypeProto|SimpleNamespace, field): - if isinstance(onnx_type, TypeProto): return onnx_type.HasField(field) - return hasattr(onnx_type, field) - -def dtype_parse(onnx_dtype: int, fallback_context: str | None = None) -> DType: - if onnx_dtype not in data_types: raise NotImplementedError(f"onnx dtype id {onnx_dtype} is not supported") - if is_dtype_supported(dtype := data_types[onnx_dtype]): return dtype - # if fallback_context is provided, we can fall back to a default dtype - if fallback_context is not None: - default_dtype = dtypes.default_int if dtypes.is_int(dtype) else dtypes.default_float - warnings.warn(f"dtype {dtype} on {Device.DEFAULT} from {fallback_context} is not supported, falling back to {default_dtype}") - assert is_dtype_supported(default_dtype), f"dtype {default_dtype} must be supported on {Device.DEFAULT}" - return default_dtype - raise RuntimeError(f"dtype {dtype} on device {Device.DEFAULT} is not supported") - -def attribute_parse(onnx_attribute: AttributeProto): - if onnx_attribute.type not in attribute_types: raise NotImplementedError(f"attribute type {onnx_attribute.type} is not supported") - return attribute_types[onnx_attribute.type](onnx_attribute) - -def buffer_parse(onnx_tensor: TensorProto) -> Tensor: - if onnx_tensor.string_data: raise NotImplementedError("Parsing for buffer with string data is not implemented.") - to_dtype, true_dtype = dtype_parse(onnx_tensor.data_type, "buffer parse"), data_types[onnx_tensor.data_type] - shape = tuple(onnx_tensor.dims) - keys = ['float_data', 'int32_data', 'int64_data', 'double_data', 'uint64_data', "raw_data"] - data = next((val for k in keys if (val := getattr(onnx_tensor, k)) is not None), None) - if data is None: raise RuntimeError("empty buffer") - if not isinstance(data, Tensor): return Tensor(data, dtype=to_dtype).reshape(shape) - assert data.dtype is dtypes.uint8, data.dtype - data = data.bitcast(true_dtype).reshape(shape) - data = data.to(Device.DEFAULT) if true_dtype is to_dtype else data.to("cpu").cast(to_dtype).to(Device.DEFAULT) - if shape == (): - if data.dtype is dtypes.float16 and sys.version_info < (3, 12): data = data.cast(dtypes.float32) - return Tensor(data.item(), dtype=to_dtype).reshape(shape) - return data - -def type_parse(onnx_type: TypeProto): - elem_type = onnx_type - if has_field(elem_type, "map_type") or has_field(elem_type, "sparse_tensor_type") or has_field(elem_type, "opaque_type"): - raise NotImplementedError("parsing for map_type, sparse_tensor_type and opaque_type are not implemented") - if is_optional := has_field(elem_type, "optional_type"): elem_type = elem_type.optional_type.elem_type - if is_sequence := has_field(elem_type, "sequence_type"): elem_type = elem_type.sequence_type.elem_type - if has_field(elem_type, "tensor_type"): - shape = tuple(getattr(d, "dim_param", None) or getattr(d, "dim_value") for d in elem_type.tensor_type.shape.dim) \ - if has_field(elem_type.tensor_type, "shape") else None # test_identity_sequence_cpu - dtype = data_types[elem_type.tensor_type.elem_type] - return OnnxValue(shape, dtype, is_optional, is_sequence) - raise RuntimeError(f"TypeProto was not parsed properly: {onnx_type=}") - -# ***** onnx spec ***** -@dataclasses.dataclass(frozen=True) -class OnnxValue: - shape: tuple[str|int, ...] - dtype: DType - is_optional: bool - is_sequence: bool - -class Domain(enum.Enum): - ONNX = "ai.onnx" - ONNX_ML = "ai.onnx.ml" - AI_ONNX_TRAINING = "ai.onnx.training" - AI_ONNX_PREVIEW_TRAINING = "ai.onnx.preview.training" - MICROSOFT_CONTRIB_OPS = "com.microsoft" - @classmethod - def from_onnx(cls, domain: str | None) -> "Domain": return cls.ONNX if domain is None or domain == "" else cls(domain) - -class OpSetId(NamedTuple): - domain: Domain - version: int - -@dataclasses.dataclass(frozen=True) -class OnnxNode: - num: int - op: str - opset_id: OpSetId - inputs: tuple[str, ...] - outputs: tuple[str, ...] - opts: dict[str, Any] - -# ***** python const ***** -required_input_python_consts: dict[str, tuple[int, ...]] = { - "Tile": (1,), "Range": (0,1,2), "Expand": (1,), "Reshape": (1,), "Squeeze": (1,), "Unsqueeze": (1,), "Trilu": (1,), "ConstantOfShape": (0,), - "CumSum": (1,), "TopK": (1,), "Pad": (1,2,3), "MaxUnpool": (2,), "Dropout": (1,2), "CenterCropPad": (1,), "OneHot": (1,), "Compress": (1,), - "ImageDecoder": (0,), "AffineGrid": (1,), "Resize": (1,2,3), "Upsample": (1,), "Split": (1,), "Slice": (1,2,3,4), - **{"Reduce"+r: (1,) for r in ("Max", "Min", "Sum", "Mean", "SumSquare", "Prod", "L1", "L2", "LogSum", "LogSumExp")}, - **{optim: (1,) for optim in ("Adam", "Adagrad", "Momentum")} -} - -cache_misses = 0 -@functools.cache -def _cached_to_python_const(t:Tensor): - if t.dtype is dtypes.uint8: return t.data().tobytes() - if 0 in t.shape: return [] - return t.tolist() - -# Tensor -> python value cache for parameters -def to_python_const(t:Any, op:str, idx:int) -> list[ConstType]|ConstType|bytes: - if idx not in required_input_python_consts.get(op, ()) or not isinstance(t, Tensor): return t - global cache_misses - ret = _cached_to_python_const(t) - if (info := _cached_to_python_const.cache_info()).misses > cache_misses and DEBUG >= 3: - print(f"Cache miss for {t}") - cache_misses = info.misses - return ret - -# ***** runner ****** -debug = int(getenv("DEBUGONNX", "0")) -limit = int(getenv("ONNXLIMIT", "-1")) -class OnnxRunner: - """ - `OnnxRunner` executes an ONNX model using Tinygrad. - - Args: - model_path: The ONNX model, provided as a file path (a string or Path object) or a Tensor. - """ - def __init__(self, model_path: Tensor | str | pathlib.Path): - model = onnx_load(model_path) - self.is_training = any(n.domain in {Domain.AI_ONNX_TRAINING, Domain.AI_ONNX_PREVIEW_TRAINING} for n in model.graph.node) - self.old_training = Tensor.training - Tensor.training = True if self.is_training else False - self.graph_values = {"": None, **{x.name:buffer_parse(x) for x in model.graph.initializer}} - self.graph_inputs = {x.name:type_parse(x.type) for x in model.graph.input if x.name not in self.graph_values} - self.graph_outputs = tuple(x.name for x in model.graph.output) - opset_imports = {Domain.from_onnx(getattr(x, "domain", "")):x.version for x in model.opset_import} - self.graph_nodes = [] - for num, n in enumerate(model.graph.node): - domain = Domain.from_onnx(n.domain) - opset_id = OpSetId(domain, opset_imports.get(domain, 1)) - self.graph_nodes.append(OnnxNode(num, n.op_type, opset_id, tuple(n.input), tuple(n.output), {x.name:attribute_parse(x) for x in n.attribute})) - self.graph_nodes = tuple(self.graph_nodes) - self.variable_dims: dict[str, int] = {} - - self.onnx_ops = onnx_ops - - def _parse_input(self, name: str, value: Any, spec: OnnxValue): - if spec.is_optional and value is None: return None - if spec.is_sequence: - if not isinstance(value, Sequence): raise RuntimeError(f"input {name} received {value}, expected a sequence type") - sequence = [Tensor(v, dtype=spec.dtype, requires_grad=self.is_training) if not isinstance(v, Tensor) else v for v in value] - if not all_same(tuple(t.shape for t in sequence)): raise RuntimeError(f"Shapes for input {name} sequence must be homogeneous") - if not all(t.dtype is spec.dtype for t in sequence): warnings.warn(f"Dtypes for input {name} sequence aren't all {spec.dtype}") - return sequence - dtype = _from_np_dtype(value.dtype) if is_numpy_ndarray(value) else spec.dtype - tensor = Tensor(value, dtype=dtype, requires_grad=self.is_training) if not isinstance(value, Tensor) else value - if tensor.dtype is not spec.dtype: warnings.warn(f"input {name} has mismatch on dtype. Expected {spec.dtype}, received {tensor.dtype}.") - for dim, (onnx_dim, user_dim_input) in enumerate(zip(spec.shape, tensor.shape, strict=True)): - if isinstance(onnx_dim, str): - onnx_dim = self.variable_dims[onnx_dim] if onnx_dim in self.variable_dims else self.variable_dims.setdefault(onnx_dim, int(user_dim_input)) - if user_dim_input != onnx_dim: raise RuntimeError(f"input {name} has mismatch on {dim=}. Expected {onnx_dim}, received {user_dim_input}.") - return tensor - - def _select_op(self, op:str, required_opset:OpSetId) -> types.FunctionType: - if op not in self.onnx_ops: raise NotImplementedError(f"{op=} is not supported") - # return default implementation if no opset_id is specified - if isinstance(impl := self.onnx_ops[op], types.FunctionType): return impl - # match domain and select implementation with latest compatible version - eligible_ops = {impl_opset.version:impl_fxn for impl_opset,impl_fxn in impl.items() - if impl_opset.domain == required_opset.domain and impl_opset.version <= required_opset.version} - if not eligible_ops: raise NotImplementedError(f"{op=} is not supported for domain {required_opset.domain} and version {required_opset.version}") - return eligible_ops[max(eligible_ops.keys())] - - def get_empty_input_data(self, device:str|None=None, dtype:DType|None=None) -> dict[str, Tensor]: - return {name:Tensor.empty(*spec.shape, device=device, dtype=dtype or spec.dtype) for name, spec in self.graph_inputs.items()} - - def to(self, device:str|None): - self.graph_values = {k:v.to(device) if isinstance(v, Tensor) else v for k,v in self.graph_values.items()} - self.graph_nodes = tuple(OnnxNode(n.num, n.op, n.opset_id, tuple(n.inputs), tuple(n.outputs), - {k:v.to(device) if isinstance(v, Tensor) else v for k,v in n.opts.items()}) for n in self.graph_nodes) - return self - - def __call__(self, inputs:dict[str, Any], debug=debug): - for name, input_spec in self.graph_inputs.items(): - if name not in inputs: raise RuntimeError(f"Please provide input data for {name}") - self.graph_values[name] = self._parse_input(name, inputs[name], input_spec) - - for node in self.graph_nodes: - inps = [to_python_const(self.graph_values[name], node.op, i) for i,name in enumerate(node.inputs)] - opts = node.opts - - # provide additional opts - if node.op == "Split" and 'num_outputs' not in opts: opts['num_outputs'] = len(node.outputs) - if node.op == "Gradient": opts['intermediate_tensors'] = self.graph_values - - if debug >= 1: print(f"{node.num}: op '{node.op}' opt {opts}") - if debug >= 2 and node.inputs: print("\tinputs:\n" + "\n".join(f"\t\t{x} - {i!r}" for x,i in zip(node.inputs, inps))) - ret = self._select_op(node.op, node.opset_id)(*inps, **opts) - ret = ret if isinstance(ret, tuple) else (ret,) - if debug >= 2: print("\toutputs:\n" + "\n".join(f"\t\t{x} - {o!r}" for x,o in zip(node.outputs, ret))) - - self.graph_values.update(dict(zip(node.outputs, ret[:len(node.outputs)], strict=True))) - - if node.num == limit: - Tensor.training = self.old_training - return {name:self.graph_values[name] for name in node.outputs} - Tensor.training = self.old_training - return {name:self.graph_values[name] for name in self.graph_outputs} - -#################### -##### ONNX OPS ##### -#################### -def get_onnx_ops() -> dict[str, types.FunctionType|dict[OpSetId, types.FunctionType]]: - # ***** helper functions ***** - def _resolve_const(x: Sequence[ConstType]|ConstType): return x if isinstance(x, get_args(ConstType)) else get_single_element(x) - - def _axes(axes, noop_with_empty_axes): return axes or ([] if noop_with_empty_axes else None) - - # (padding_top, padding_left, ..., padding_bottom, padding_right, ...) -> (padding_left, padding_right, padding_top, padding_bottom, ...) - def _onnx_pads_to_tiny_pads(pads): return tuple(flatten(reversed(list(zip(pads, pads[len(pads)//2:]))))) - - AUTO_PAD_OPTIONS = Literal["NOTSET", "SAME_UPPER", "SAME_LOWER", "VALID"] - # (padding_height, padding_width) -> (padding_top, padding_left, padding_bottom, padding_right) - def _auto_pad(pads, auto_pad: AUTO_PAD_OPTIONS): - if auto_pad == "SAME_UPPER": return [pads[i]//2 for i in range(len(pads))] + [pads[i]-pads[i]//2 for i in range(len(pads))] - return [pads[i]-pads[i]//2 for i in range(len(pads))] + [pads[i]//2 for i in range(len(pads))] - - def _resolve_pool_pads(x:Tensor, p_, k_, d_, s_, auto_pad:AUTO_PAD_OPTIONS): - if auto_pad == "VALID": return [0]*(len(k_)*2) - i_, (s_,d_,p_) = x.shape[-len(k_):], (make_tuple(x, len(k_)*2) for x in (s_, d_, p_)) - if auto_pad == "NOTSET": return _onnx_pads_to_tiny_pads(p_ if len(p_)==len(k_)*2 else p_*2) - o_ = [((i - (1 if auto_pad in ("SAME_UPPER", "SAME_LOWER") else k)) // s + 1) for i,k,s in zip(i_, k_, s_)] - return _onnx_pads_to_tiny_pads(_auto_pad([(o-1)*s+k-i for o,i,k,s in zip(o_, i_, k_, s_)], auto_pad)) - - def _clamp_cast(x:Tensor, dtype:DType): return x.clamp(dtypes.min(dtype), dtypes.max(dtype)).cast(dtype) - - def _prepare_quantize(x:Tensor, scale:Tensor, zero_point:Tensor|int, axis=1, block_size=0): - if axis < 0: axis += x.ndim - # https://github.com/onnx/onnx/blob/main/onnx/reference/ops/op_quantize_linear.py#L31 - def reshape(val:Tensor): - if val.numel() == 1: return val - if block_size == 0: return val.reshape([val.shape[0] if dim == axis else 1 for dim in range(x.ndim)]) - return val.repeat_interleave(block_size, axis) - return (reshape(scale), reshape(zero_point) if isinstance(zero_point, Tensor) else zero_point) - - def _op_integer(op, inputs:list[Tensor], zero_points:list[Tensor], **opts): - adjusted_inputs = [inp.int() - zp for inp, zp in zip(inputs, zero_points)] - return op(*adjusted_inputs, **opts) - - def _qlinearop_quantized(op, inputs:list[Tensor], zero_points:list[Tensor], scales:list[Tensor], out_scale:Tensor, out_zero_point:Tensor, **opts): - # op execution is done in quantized int - out = _op_integer(op, inputs, zero_points, **opts) - assert dtypes.is_int(out.dtype), "quantized op should've done math in int" - out_quantized = (out * prod(scales) / out_scale).round() + out_zero_point - return _clamp_cast(out_quantized, out_zero_point.dtype) - - def _qlinearop_float(op, inputs:list[Tensor], zero_points:list[Tensor], scales:list[Tensor], out_scale:Tensor, out_zero_point:Tensor, **opts): - # op execution is done in float32 - dequantized_inputs = [(inp.int() - zp) * scale for inp, zp, scale in zip(inputs, zero_points, scales)] - out = op(*dequantized_inputs, **opts) - assert dtypes.is_float(out.dtype), "op should've done math in float" - out_quantized = (out / out_scale).round() + out_zero_point - return _clamp_cast(out_quantized, out_zero_point.dtype) - - def _onnx_training(input_group_size): - def __decorator(func): - def ___wrapper(R:Tensor, T:int, *inputs:Tensor, **kwargs): - R = R.detach() - groups = len(inputs) // input_group_size - ret = [func(R, T, *inps, **kwargs) for inps in (inputs[i::groups] for i in range(groups))] - return tuple(flatten(zip(*ret))) - return ___wrapper - return __decorator - - # ***** Property/Graph Ops ***** - def Identity(x:Tensor): return x - def Constant(sparse_value:Tensor|None=None, value:Tensor|None=None, value_float:float|None=None, value_floats:list[float]|None=None, - value_int:int|None=None, value_ints:list[int]|None=None, value_string:str|None=None, value_strings:list[str]|None=None): - if value is not None: return value - if value_float is not None: return Tensor(value_float, dtype=dtypes.float32, requires_grad=False) - if value_floats is not None: return Tensor(list(value_floats), dtype=dtypes.float32, requires_grad=False) - if value_int is not None: return Tensor(value_int, dtype=dtypes.int64, requires_grad=False) - if value_ints is not None: return Tensor(list(value_ints), dtype=dtypes.int64, requires_grad=False) - if value_string is not None or value_strings is not None and sparse_value is not None: - raise NotImplementedError('Constant OP not implemented for value_string, value_strings and sparse_value') - - def Range(start:float|int|list[float|int], limit:float|int|list[float|int], delta:float|int|list[float|int]): - return Tensor.arange(start=_resolve_const(start), stop=_resolve_const(limit), step=_resolve_const(delta)) - - def ImageDecoder(encoded_stream:bytes, pixel_format="RGB"): - try: import PIL.Image - except ImportError as e: raise ImportError("Pillow must be installed for the ImageDecoder operator") from e - img = PIL.Image.open(io.BytesIO(encoded_stream)) - if pixel_format == "BGR": return Tensor(img.tobytes(), dtype=dtypes.uint8).reshape(*img.size, 3).flip(-1) - if pixel_format == "RGB": return Tensor(img.tobytes(), dtype=dtypes.uint8).reshape(*img.size, 3) - if pixel_format == "Grayscale": return Tensor(img.convert("L").tobytes(), dtype=dtypes.uint8).reshape(*img.size, 1) - raise ValueError(f"pixel_format={pixel_format!r} is not supported.") - - def EyeLike(x:Tensor, dtype:int|None=None, k:int=0): - ret = Tensor.eye(cast(int, min(x.shape)), dtype=dtype_parse(dtype, "EyeLike op") if dtype is not None else x.dtype) - return ret if x.size(0) == x.size(1) else ret.pad(tuple(None if d == ret.size(0) else (k, d-ret.shape[0]-k) for d in x.shape)) - - def OptionalHasElement(x:Tensor|None=None): return Tensor(x is not None and x.numel() > 0) - def OptionalGetElement(x:Tensor|None=None): return x if x is not None else Tensor([]) - def ConstantOfShape(shape:list[int], value:Tensor|None=None): - if value is None: value = Tensor(0, dtype=dtypes.float32) - if shape == [0]: return Tensor([], dtype=value.dtype) - return value.expand(shape) - - def Size(data:Tensor): return data.numel() - def Shape(data:Tensor, end:int|None=None, start:int=0): return Tensor(data.shape[start:end], dtype=dtypes.int64) - - # ***** Unary Ops (math) ***** - def Not(x:Tensor): return x.logical_not() - def Clip(x: Tensor, min:Tensor|None=None, max:Tensor|None=None): return x if min is None and max is None else x.clip(min, max) # noqa: A002 - def IsInf(x:Tensor, detect_negative:int=1, detect_positive:int=1): return x.isinf(bool(detect_positive), bool(detect_negative)) - - # ***** Unary Ops (activation) ***** - def softmax_1(x:Tensor, axis:int=1): return x.softmax(axis) - def softmax_13(x:Tensor, axis:int=-1): return x.softmax(axis) - Softmax = {OpSetId(Domain.ONNX, 1):softmax_1, OpSetId(Domain.ONNX, 13):softmax_13} - def HardSigmoid(x:Tensor, alpha:float=0.2, beta:float=0.5): return (alpha*x + beta).clip(0, 1) - def Gelu(x:Tensor, approximate:str|None=None): return x.gelu() if approximate == "tanh" else 0.5 * x * (1 + (x/math.sqrt(2)).erf()) - def BiasGelu(x: Tensor, bias: Tensor, approximate: str | None = None) -> Tensor: return Gelu(x + bias, approximate) - def FastGelu(x:Tensor, bias:Tensor|None=None): return (x + bias).gelu() if bias is not None else x.gelu() # this is tanh approximated - def PRelu(X:Tensor, slope:Tensor): return (X > 0).where(X, X * slope) - def LeakyRelu(X:Tensor, alpha:float=0.01): return X.leaky_relu(alpha) - def ThresholdedRelu(X:Tensor, alpha:float=1.0): return (X > alpha).where(X, 0) - def LogSoftmax(x: Tensor, axis:int=-1): return x.log_softmax(axis) - def Binarizer(x:Tensor, threshold:float=0.0): return (x > threshold).float() - - # ***** Unary Ops (broadcasted) ***** - def Add(x:Tensor,y:Tensor, broadcast=None, axis=None): return x + y - def Sub(x:Tensor|int,y:Tensor): return x - y # some test has input as int - def Div(x:Tensor,y:Tensor): return x.div(y, rounding_mode='trunc' if dtypes.is_int(x.dtype) else None) - def Less(x:Tensor,y:Tensor): return x < y - def LessOrEqual(x:Tensor,y:Tensor): return x <= y - def Greater(x:Tensor,y:Tensor): return x > y - def GreaterOrEqual(x:Tensor,y:Tensor): return x >= y - def Equal(x:Tensor,y:Tensor): return x == y - def And(x:Tensor,y:Tensor): return (x==y).where(x, False) - def Or(x:Tensor,y:Tensor): return (x==y).where(x, True) - def Xor(x:Tensor,y:Tensor): return x.bool().bitwise_xor(y.bool()) - def BitwiseAnd(x:Tensor,y:Tensor): return x & y - def BitwiseOr(x:Tensor,y:Tensor): return x | y - def BitwiseXor(x:Tensor,y:Tensor): return x ^ y - def BitwiseNot(x:Tensor): return ~x - def Mod(x:Tensor,y:Tensor,fmod=0): - if fmod: return x - x.div(y, rounding_mode="trunc") * y - return x % y - - # ***** Casting Ops ***** - # TODO: saturate - def Cast(x:Tensor, to:int, saturate:int=1): return x.cast(dtype_parse(to, "Cast op")) - def CastLike(x:Tensor, target_type:Tensor, saturate:int=1): return x.cast(target_type.dtype) - - # ***** Reduce Ops ***** - def Max(*data_0:Tensor): return functools.reduce(Tensor.maximum, data_0) - def Min(*data_0:Tensor): return functools.reduce(Tensor.minimum, data_0) - def Sum(*data_0:Tensor): return functools.reduce(Tensor.add, data_0) - def Mean(*data_0:Tensor): return Sum(*data_0) / len(data_0) - def ReduceMax(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): - return data.max(_axes(axes, noop_with_empty_axes), keepdim=keepdims) - def ReduceMin(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): - return data.min(_axes(axes, noop_with_empty_axes), keepdim=keepdims) - def ReduceSum(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): - return data.sum(_axes(axes, noop_with_empty_axes), keepdim=keepdims) - def ReduceMean(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): - return data.mean(_axes(axes, noop_with_empty_axes), keepdim=keepdims) - def ReduceSumSquare(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): - return ReduceSum(data.square(), axes, keepdims, noop_with_empty_axes) - def ReduceProd(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): - return data.prod(_axes(axes, noop_with_empty_axes), keepdim=keepdims) - def ReduceL1(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): - return ReduceSum(data.abs(), axes, keepdims, noop_with_empty_axes) - def ReduceL2(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): - return ReduceSumSquare(data, axes, keepdims, noop_with_empty_axes).sqrt() - def ReduceLogSum(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): - return ReduceSum(data, axes, keepdims, noop_with_empty_axes).log() - def ReduceLogSumExp(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): - return ReduceSum(data.exp(), axes, keepdims, noop_with_empty_axes).log() - def ArgMax(x:Tensor, axis:int=0, keepdims:int=1, select_last_index:int=0): - if select_last_index: return ((x.shape[axis]-1) - x.flip(axis).argmax(axis, keepdim=keepdims)).cast(dtypes.int64) - return x.argmax(axis, keepdim=keepdims).cast(dtypes.int64) - def ArgMin(x, axis:int=0, keepdims:int=1, select_last_index:int=0): - return ArgMax(-x, axis=axis, keepdims=keepdims, select_last_index=select_last_index) - - # ***** Movement Ops ***** - def Reshape(data:Tensor, shape:list[int], allowzero:int=0): - return data.reshape([x if x != 0 else (0 if allowzero else data.shape[i]) for i,x in enumerate(shape)]) - def Flatten(x:Tensor, axis:int=1): return x.reshape(prod(x.shape[0:axis]), -1) - def Expand(x:Tensor, shape:list[int]): return x.expand(_broadcast_shape(x.shape, tuple(shape))) - def Shrink(x:Tensor, bias:float=0.0, lambd:float=0.5): return (x < -lambd)*(x+bias) + (x > lambd)*(x-bias) - def Transpose(x:Tensor, perm:list[int]|None=None): return x.permute(order=perm or list(range(x.ndim)[::-1])) - - def Squeeze(data:Tensor, axes:list[int]|None=None): - return data.squeeze() if axes is None else functools.reduce(lambda d, dim: d.squeeze(dim), sorted(axes, reverse=True), data) - def Unsqueeze(data:Tensor, axes:list[int]): return functools.reduce(lambda d, dim: d.unsqueeze(dim), sorted(axes), data) - - def Tile(x:Tensor, repeats:list[int]): return x.repeat(repeats) - def Concat(*xs:Tensor, axis:int): return Tensor.cat(*xs, dim=axis) - def Slice(data:Tensor, starts:list[int], ends:list[int], axes:list[int]|None=None, steps:list[int]|None=None): - axes = axes or list(range(data.ndim)) - steps = steps or [1]*data.ndim - slices = [slice(0,x,1) for x in data.shape] - for i, axis in enumerate(axes): slices[axis] = slice(starts[i], ends[i], steps[i]) - return data[tuple(slices)] - - def Split(data:Tensor, split:list[int]|None=None, num_outputs:int=0, axis:int=0): - sz = data.shape[axis] - if split is None: split = [sz // num_outputs + (1 if i < sz % num_outputs else 0) for i in range(num_outputs)] - return data.split(split, axis) - - def Pad(x:Tensor, pads:list[int], constant_value:ConstType|None=None, axes:list[int]|None=None, - mode:Literal["constant", "reflect", "edge", "wrap"]="constant", value=0): - value = constant_value or value - axes = axes or list(range(x.ndim)) - real_pads = [0] * (x.ndim*2) - for i,axis in enumerate(axes): real_pads[axis%x.ndim], real_pads[axis%x.ndim+x.ndim] = pads[i], pads[i+len(axes)] - return x.pad(padding=_onnx_pads_to_tiny_pads(real_pads), mode={"edge":"replicate", "wrap":"circular"}.get(mode, mode), value=value) - - def CenterCropPad(t:Tensor, shape:list[int], axes:list[int]|None=None): - shrink_arg:list[None|tuple[int,int]] = [None] * t.ndim - pad_arg:list[None|tuple[int,int]] = [None] * t.ndim - for s, x in zip(shape, axes or range(t.ndim)): - tx = t.shape[x] - if s < tx: shrink_arg[x] = (tx//2 - (s+1)//2, tx//2 + s//2) - elif s > tx: pad_arg[x] = ((s-tx)//2, (s-tx+1)//2) - return t.shrink(tuple(shrink_arg)).pad(tuple(pad_arg)) - - # ***** Processing Ops ***** - def AveragePool(X: Tensor, kernel_shape:list[int], auto_pad:AUTO_PAD_OPTIONS="NOTSET", ceil_mode:int=0, count_include_pad:int=0, - dilations:list[int]|int=1, pads:list[int]|int=0, strides:list[int]|int=1): - return X.avg_pool2d(kernel_shape, strides, dilations, _resolve_pool_pads(X, pads, kernel_shape, dilations, strides, auto_pad), - ceil_mode=ceil_mode, count_include_pad=count_include_pad) - - def MaxPool(X: Tensor, kernel_shape:list[int], auto_pad:AUTO_PAD_OPTIONS="NOTSET", ceil_mode:int=0, dilations:list[int]|int=1, pads:list[int]|int=0, - storage_order:int=0, strides:list[int]|int=1): - pads = _resolve_pool_pads(X, pads, kernel_shape, dilations, strides, auto_pad) - ret, idx = X.max_pool2d(kernel_shape, strides, dilations, pads, ceil_mode=ceil_mode, return_indices=True) - return ret, idx.transpose(-2, -1).cast(dtypes.int64) if storage_order else idx.cast(dtypes.int64) - - def Conv(X: Tensor, W: Tensor, B:Tensor|None=None, auto_pad:AUTO_PAD_OPTIONS="NOTSET", dilations:list[int]|int=1, group:int=1, - kernel_shape:list[int]|None=None, pads:list[int]|int=0, strides:list[int]|int=1): - return X.conv2d(W, B, stride=strides, groups=group, dilation=dilations, - padding=_resolve_pool_pads(X, pads, kernel_shape or W.shape[2:], dilations, strides, auto_pad)) - - def ConvTranspose(X: Tensor, W: Tensor, B:Tensor|None=None, auto_pad:AUTO_PAD_OPTIONS="NOTSET", dilations:list[int]|int=1, group:int=1, - kernel_shape:list[int]|None=None, pads:list[int]|None=None, output_shape:list[int]|None=None, output_padding:list[int]|int=0, - strides:list[int]|int=1): - input_shape, kernel_shape = X.shape[2:], (kernel_shape or W.shape[2:]) - strides, dilations, output_padding = (make_tuple(x, len(input_shape)) for x in (strides, dilations, output_padding)) - if output_shape is not None: # we pad according to output_shape - pads = _auto_pad([s*(i-1) + op + ((k-1)*d+1) - os for s,i,op,k,d,os in - zip(strides, input_shape, output_padding, kernel_shape, dilations, output_shape)], auto_pad) - if pads is None: # we generate pads - output_shape = output_shape or [X.shape[i+2] * strides[i] for i in range(len(strides))] - pads = [strides[i]*(input_shape[i]-1)+output_padding[i]+((kernel_shape[i]-1)*dilations[i]+1)-output_shape[i] for i in range(len(input_shape))] - pads = _auto_pad(pads, auto_pad) if auto_pad != "NOTSET" else [0] * len(input_shape) * 2 - pads = _onnx_pads_to_tiny_pads(pads) - return X.conv_transpose2d(W, B, stride=strides, groups=group, dilation=dilations, padding=pads, output_padding=output_padding) - - def MaxUnpool(xT: Tensor, xI: Tensor, outshape: list[int]|None=None, kernel_shape:list[int]=None, pads:list[int]|int=0, strides:list[int]|int=1): - return Tensor.max_unpool2d(xT, xI, kernel_shape, strides, 1, pads, outshape if outshape is None else tuple(outshape)) - - def GlobalAveragePool(X:Tensor): return X.mean(axis=tuple(range(2, X.ndim)), keepdim=True) - def GlobalMaxPool(X:Tensor): return X.max(axis=tuple(range(2, X.ndim)), keepdim=True) - - def Gemm(A:Tensor, B:Tensor, C:Tensor|None=None, alpha:float=1.0, beta:float=1.0, transA:int=0, transB:int=0, broadcast=0): - ret = alpha * (A.transpose(transA) @ B.transpose(transB)) - if C is not None: ret = ret + beta * (C if broadcast == 0 else C.reshape([-1 if i < len(C.shape) else 1 for i in range(ret.ndim)][::-1])) - return ret - - def Einsum(*Inputs:list[Tensor], equation:str): return Tensor.einsum(equation, *Inputs) - - def CumSum(X:Tensor, axis:int|list[int], exclusive:int=0, reverse:int=0): - axis = X._resolve_dim(_resolve_const(axis)) - if reverse: X = X.flip(axis) - if exclusive: X = X.pad(tuple((1,0) if i == axis else None for i in range(X.ndim)))\ - .shrink(tuple((0,X.shape[axis]) if i == axis else None for i in range(X.ndim))) - return X.cumsum(axis).flip(axis) if reverse else X.cumsum(axis) - - def Trilu(x:Tensor, k:int|list[int]=0, upper:int=1): - k_ = _resolve_const(k) - return x.triu(k_) if upper else x.tril(k_) - - def Resize(X:Tensor, roi:list[float]|None=None, scales:list[float]|None=None, sizes:list[int]|None=None, antialias:int=0, - axes:list[int]|None=None, coordinate_transformation_mode:str='half_pixel', cubic_coeff_a:float=-0.75, exclude_outside:int=0, - extrapolation_value:float=0.0, keep_aspect_ratio_policy:str='stretch', mode:str='nearest', nearest_mode:str='round_prefer_floor'): - def _apply_nearest_mode(index: Tensor, input_dim, mode: str): - if mode == "round_prefer_floor": index = (index - 0.5).ceil() - elif mode == "round_prefer_ceil": index = (index + 0.5).floor() - elif mode in ["floor", "ceil"]: index = getattr(index, mode)() - else: raise ValueError(f"invalid {nearest_mode=}") - return index.cast(dtypes.int32).clip(0, input_dim-1) - def _apply_transformation(index: Tensor, input_dim, scale_dim, mode): - # TODO: needs more testing, not confident in this - # NOTE: their reference implementation differ from the implementation in their reference docs - # https://github.com/onnx/onnx/blob/main/onnx/reference/ops/op_resize.py - # https://github.com/onnx/onnx/blob/main/docs/Operators.md#Resize - output_dim = scale_dim * input_dim - if mode == "half_pixel": index = (index + 0.5) / scale_dim - 0.5 - elif mode == "align_corners": index = index * (input_dim - 1) / (output_dim - 1) if output_dim != 1 else Tensor([0]) - elif mode == "asymmetric": index = index / scale_dim - elif mode == "pytorch_half_pixel": index = (index + 0.5) / scale_dim - 0.5 if output_dim != 1 else Tensor([-0.5]) - elif mode == "half_pixel_symmetric": index = input_dim / 2 * (1 - int(output_dim) / output_dim) + (index + 0.5) / scale_dim - 0.5 - else: raise NotImplementedError(f"invalid {coordinate_transformation_mode=}") - return index.clip(0, input_dim-1) - - scales, sizes = (None if scales is None else scales[2-(X.ndim-len(scales)):]), (None if sizes is None else sizes[2-(X.ndim-len(sizes)):]) - # we pre permute the axes and permute back after resize - axes, input_shape, = (axes or list(range(X.ndim))), cast(tuple[int, ...], X.shape[2:]), - perm = [a for a in range(len(X.shape)) if a not in axes] + list(axes) - X = X.permute(*perm) - - if sizes is not None: - if keep_aspect_ratio_policy in ["not_larger", "not_smaller"]: - scale_fxn = min if keep_aspect_ratio_policy == "not_larger" else max - scales = [scale_fxn([sizes[i] / input_shape[i] for i in range(len(input_shape)) if i+2 in axes])] * 2 - sizes = [int((scales[0] * input_shape[i]) + 0.5) if i+2 in axes else input_shape[i] for i in range(X.ndim-2)] - else: - scales = [size / input_shape for size, input_shape in zip(sizes, input_shape)] - else: - sizes = [int(sc*sh) for sc, sh in zip(scales, input_shape)] - - # NOTE: this transformation makes it so that we can't just call Tensor.interpolate - # in Tensor.interpolate, we use indexes without any transformation - indexes = [] - for shape, size, scale in zip(input_shape, sizes, scales): - indexes.append(_apply_transformation(Tensor.arange(size), shape, scale, coordinate_transformation_mode)) - - if mode == "nearest": - indexes = [_apply_nearest_mode(index, shape, nearest_mode) for (index, shape) in zip(indexes, input_shape)] - X = X[(..., *Tensor.meshgrid(*indexes))] - if mode == "linear": - expand = list(X.shape) - for i in range(-len(sizes), 0): - reshape, index = [1] * X.ndim, indexes[i] - reshape[i] = expand[i] = sizes[i] - low, high, perc = [y.reshape(reshape).expand(expand) for y in (index.floor().int(), index.ceil().int(), index - index.floor())] - X = X.gather(i, low).lerp(X.gather(i, high), perc) - if mode == "cubic": raise NotImplementedError("cubic interpolation is not implemented") - return X.permute(*argsort(perm)) if perm else X - def Upsample(X, scales, mode): return Resize(X=X, scales=scales, mode=mode) # deprecated - - def TopK(X:Tensor, K:int|list[int], axis:int=-1, largest:int=1, sorted:int=1): # noqa: A002 - val, idx = X.topk(_resolve_const(K), axis, largest, sorted) - return val, idx.cast(dtypes.int64) - - # ***** Neural Network Ops ***** - def BatchNormalization(X:Tensor, scale:Tensor, B:Tensor, input_mean:Tensor, input_var:Tensor, epsilon:float=1e-05, momentum:float=0.9, - training_mode:int=0, spatial=1, is_test=0): - if training_mode: - x_detached = X.detach() - current_mean = x_detached.mean(axis=(0,2,3)) - y = (x_detached - current_mean.reshape(shape=[1, -1, 1, 1])) - current_var = (y*y).mean(axis=(0,2,3)) - current_invstd = current_var.add(epsilon).rsqrt() - - running_mean = input_mean * momentum + current_mean * (1 - momentum) - running_var = input_var * momentum + current_var * (1 - momentum) - - return X.batchnorm(scale, B, current_mean, current_invstd), running_mean, running_var - return X.batchnorm(scale, B, input_mean, (input_var + epsilon).rsqrt()) - def GroupNormalization(x:Tensor, scale:Tensor, bias:Tensor, num_groups:int, epsilon:float=1e-05): - x = x.reshape(x.shape[0], num_groups, -1).layernorm(eps=epsilon).reshape(x.shape) - return x * scale.reshape(1, -1, *[1] * (x.ndim-2)) + bias.reshape(1, -1, *[1] * (x.ndim-2)) - def InstanceNormalization(x:Tensor, scale:Tensor, bias:Tensor, epsilon:float=1e-05): - return GroupNormalization(x, scale, bias, num_groups=x.shape[1], epsilon=epsilon) - def LayerNormalization(x:Tensor, scale:Tensor, bias:Tensor, axis:int=-1, epsilon:float=1e-05, stash_type:int=1): - assert stash_type == 1, "only float32 is supported" - axes = tuple(i for i in range(axis if axis >= 0 else x.ndim + axis, x.ndim)) - mean = x.mean(axis=axes, keepdim=True) - return x.layernorm(axes, epsilon).mul(scale).add(bias), mean, (x.sub(mean)).square().mean(axis=axes, keepdim=True).add(epsilon).rsqrt() - def SkipLayerNormalization(x:Tensor, skip:Tensor, gamma:Tensor, beta:Tensor|None=None, bias:Tensor|None=None, epsilon:float=1e-12): - x = x + skip - if bias is not None: x = x + bias - ret = x.layernorm(eps=epsilon) * gamma - if beta is not None: ret = ret + beta - return ret, None, None, x - def EmbedLayerNormalization(input_ids: Tensor, segment_ids:Tensor, word_embedding:Tensor, position_embedding:Tensor, - segment_embedding:Tensor, gamma=None, beta=None, mask:Tensor|None=None, - position_ids:Tensor|None=None, epsilon=1e-12, mask_index_type=0): - # https://github.com/microsoft/onnxruntime/blob/main/docs/ContribOperators.md#com.microsoft.EmbedLayerNormalization - assert (segment_ids is None) is (segment_embedding is None) - assert mask is None and not mask_index_type, "functionality not supported yet" # TODO - input_shape = input_ids.shape - seq_length = input_shape[1] - compute_seg_emb = (segment_embedding is not None and segment_ids is not None) - vocab_size, max_position_embeddings = word_embedding.shape[0], position_embedding.shape[0] - type_vocab_size = (segment_embedding.shape[0] if compute_seg_emb else None) - - def embedding(x:Tensor, vocab_size, weight:Tensor) -> Tensor: - return x.unsqueeze(-1).expand(*x.shape, vocab_size)._one_hot_along_dim(vocab_size) @ weight - - # bert embedding layer - if position_ids is None: position_ids = Tensor.arange(seq_length, requires_grad=False).unsqueeze(0).expand(*input_shape) - wrd_embedding_res = embedding(input_ids, vocab_size, word_embedding) - pos_embedding_res = embedding(position_ids, max_position_embeddings, position_embedding) - seg_embedding_res = embedding(segment_ids, type_vocab_size, segment_embedding) if compute_seg_emb else None - - embedding_sum = wrd_embedding_res + pos_embedding_res - if seg_embedding_res is not None: embedding_sum = embedding_sum + seg_embedding_res - out = embedding_sum.layernorm(eps=epsilon) * gamma + beta - return out, None, embedding_sum - def MeanVarianceNormalization(x:Tensor, axis:list[int]=[0,2,3]): - return (x - x.mean(axis, keepdim=True)) / (x.std(axis, keepdim=True, correction=0) + 1e-9) - - def OneHot(indices:Tensor, depth:float|int|list[int|float], values:Tensor, axis:int=-1): - # Scalar or Rank 1 tensor containing exactly one element - depth = int(_resolve_const(depth)) - indices = indices.int() - indices = (indices < 0).where(indices+depth, indices) - return indices.unsqueeze(axis)._one_hot_along_dim(depth, dim=axis).where(values[1], values[0]) - - def DepthToSpace(X:Tensor, blocksize:int, mode:str="DCR"): - return X.rearrange("b (c h1 w1) h w -> b c (h h1) (w w1)" if mode=="CRD" else "b (h1 w1 c) h w -> b c (h h1) (w w1)", h1=blocksize, w1=blocksize) - def SpaceToDepth(X:Tensor, blocksize:int): - return X.rearrange("b c (h h1) (w w1) -> b (h1 w1 c) h w", h1=blocksize, w1=blocksize) - - # Reimplemented here because you need legacy RNG for passing ONNX tests. - def dropout_7(data:Tensor, ratio:float=0.5, training_mode:bool=False, seed:int|None=None): - import numpy as np - if not training_mode: return data, data.full_like(True, dtype=dtypes.bool) - if seed is not None: - rand = Tensor(np.random.RandomState(seed).random(cast(tuple[int,...], data.shape)), requires_grad=False, dtype=data.dtype, device=data.device) - else: - rand = data.rand_like(requires_grad=False) - mask = rand >= ratio - return data * mask / (1.0 - ratio), mask - # 6 with 'is_test' needed for https://github.com/MTlab/onnx2caffe/raw/refs/heads/master/model/MobileNetV2.onnx - def dropout_6(data:Tensor, ratio:float=0.5, is_test=0): return dropout_7(data, ratio, training_mode=not is_test) - Dropout = {OpSetId(Domain.ONNX, 6):dropout_6, OpSetId(Domain.ONNX, 7):dropout_7} - - def LRN(x:Tensor, size:int, alpha:float=1e-4, beta:float=0.75, bias:float=1.0): - pooled_x = (x**2).rearrange('b c h w -> b 1 c (h w)').pad((0,0,(size-1)//2, size//2)).avg_pool2d((size, 1), 1) - return x / (pooled_x.reshape(x.shape) * alpha + bias).pow(beta) - - def NegativeLogLikelihoodLoss(x:Tensor, target:Tensor, weight:Tensor|None=None, ignore_index:int|None=None, reduction:ReductionStr="mean"): - return x.nll_loss(target, weight, ignore_index, reduction) - def SoftmaxCrossEntropyLoss(scores:Tensor, labels:Tensor, weights:Tensor|None=None, ignore_index:int|None=None, reduction:ReductionStr="mean"): - log_probs = scores.log_softmax(1) - return log_probs.nll_loss(labels, weights, ignore_index, reduction), log_probs - - def AffineGrid(theta:Tensor, size:list[int], align_corners:int=0): - N, _, *spatial_dims = size - def generate_grid(steps): - if align_corners: return Tensor.linspace(-1, 1, steps, device=theta.device) - return Tensor.linspace(-1+1/steps, 1-1/steps, steps, device=theta.device) - grids = Tensor.meshgrid(*(generate_grid(d) for d in spatial_dims)) - base_grid = Tensor.stack(*reversed(grids), Tensor.ones_like(grids[0], device=theta.device), dim=-1) - base_grid = base_grid.reshape(1, prod(spatial_dims), len(grids)+1).expand(N, -1, -1) - return (base_grid @ theta.transpose(1, 2)).reshape(N, *spatial_dims, -1) - - def attention_contrib(x:Tensor, weights:Tensor, bias:Tensor|None=None, mask_index:Tensor|None=None, past:Tensor|None=None, - attention_bias:Tensor|None=None, past_sequence_length:Tensor|None=None, do_rotary:int=0, mask_filter_value:float=-10000.0, - num_heads:int|None=None, past_present_share_buffer:int|None=None, qkv_hidden_sizes:list[int]|None=None, - rotary_embedding_dim:int|None=None, scale:float|None=None, unidirectional:int=0): - assert not do_rotary and not attention_bias, "TODO" - if qkv_hidden_sizes is None: qkv_hidden_sizes = [weights.shape[1] // 3] * 3 - qkv = x.linear(weights, bias) - q, k, v = qkv.split(qkv_hidden_sizes, dim=2) - - batch_size, seq_len, _ = x.shape - q_head_size, k_head_size, v_head_size = (sz // num_heads for sz in qkv_hidden_sizes) - q, k, v = (x.reshape(batch_size, seq_len, num_heads, hsz).transpose(1, 2) for x, hsz in zip((q, k, v), (q_head_size, k_head_size, v_head_size))) - - present = None - if past is not None: - k, v = past[0].cat(k, dim=2), past[1].cat(v, dim=2) - present = k.stack(v) - - if scale is None: scale = 1.0 / math.sqrt(q_head_size) - attn_scores = q @ k.transpose(-1, -2) * scale - - if mask_index is not None: - assert 4 >= mask_index.ndim >= 1, f"{mask_index.ndim=}" - if mask_index.ndim != 1: mask = mask_index.bool() - else: - if mask_index.shape[0] == batch_size: - mask = Tensor.arange(attn_scores.shape[-1], requires_grad=False, device=mask_index.device).unsqueeze(0) < mask_index.unsqueeze(1) - elif mask_index.shape[0] == 2*batch_size: - end_positions = mask_index[:batch_size] - start_positions = mask_index[batch_size:] - arange = Tensor.arange(seq_len).unsqueeze(0) - mask = (arange < end_positions.unsqueeze(1)) & (arange >= start_positions.unsqueeze(1)) - else: raise NotImplementedError("mask_index with shape (3 * batch_size + 2) is not implemented") - while mask.ndim < 4: mask = mask.unsqueeze(1) - attn_scores = mask.where(attn_scores, mask_filter_value) - - if unidirectional: - causal_mask = Tensor.ones((seq_len, seq_len), dtype=dtypes.bool).tril() - attn_scores = causal_mask.where(attn_scores, mask_filter_value) - - output = attn_scores.softmax(-1) @ v - output = output.transpose(1, 2).reshape(batch_size, seq_len, -1) - return output, present - - def attention_onnx(Q:Tensor, K:Tensor, V:Tensor, attn_mask:Tensor|None=None, past_key:Tensor|None=None, past_value:Tensor|None=None, - is_causal:int=0, kv_num_heads:int|None=None, q_num_heads:int|None=None, qk_matmul_output_mode:int=0, scale:float|None=None, - softcap:float=0.0, softmax_precision:int|None=None): - input_shape_len = Q.ndim - if input_shape_len == 3: - assert q_num_heads is not None and kv_num_heads is not None - Q = Q.reshape(Q.shape[0], q_num_heads, Q.shape[1], -1) - K = K.reshape(K.shape[0], kv_num_heads, K.shape[1], -1) - V = V.reshape(V.shape[0], kv_num_heads, V.shape[1], -1) - - if past_key is not None: K = past_key.cat(K, dim=2) - if past_value is not None: V = past_value.cat(V, dim=2) - present_key, present_value = K, V - - _q_heads, _kv_heads = q_num_heads or Q.shape[1], kv_num_heads or K.shape[1] - if _q_heads != _kv_heads: - K = K.repeat((1, _q_heads // _kv_heads, 1, 1)) - V = V.repeat((1, _q_heads // _kv_heads, 1, 1)) - - effective_scale = scale if scale is not None else 1.0 / (Q.shape[-1] ** 0.5) - scores = (Q @ K.transpose(-1, -2)) * effective_scale - qk_matmul_return_val = scores - - if is_causal: - causal_mask = Tensor.ones(Q.shape[-2], K.shape[-2], device=Q.device, dtype=dtypes.bool, requires_grad=False).tril(0) - scores = scores.masked_fill(causal_mask.logical_not(), -float("inf")) - - if attn_mask is not None: - mask_to_add = attn_mask.where(0, -float("inf")) if attn_mask.dtype == dtypes.bool else attn_mask - scores = scores + mask_to_add - if qk_matmul_output_mode == 1: qk_matmul_return_val = scores - - if softcap > 0.0: scores = (scores / softcap).tanh() * softcap - if qk_matmul_output_mode == 2: qk_matmul_return_val = scores - - if softmax_precision: scores = scores.cast({1: dtypes.float32, 10: dtypes.float16, 16: dtypes.bfloat16}[softmax_precision]) - qk_softmax = scores.softmax(-1).cast(Q.dtype) - if qk_matmul_output_mode == 3: qk_matmul_return_val = qk_softmax - - output = (qk_softmax @ V).cast(Q.dtype) - if input_shape_len == 3: output = output.permute(0, 2, 1, 3).reshape(Q.shape[0], Q.shape[2], -1) - return output, present_key, present_value, qk_matmul_return_val - Attention = {OpSetId(Domain.ONNX, 1): attention_onnx, OpSetId(Domain.MICROSOFT_CONTRIB_OPS, 1): attention_contrib} - - def RMSNormalization(X:Tensor, scale:Tensor, axis:int=-1, epsilon:float=1e-5): - norm = X.square().mean(axis=tuple(range(axis + X.ndim if axis < 0 else axis, X.ndim)), keepdim=True).add(epsilon).rsqrt() - return X * norm * scale - - def RotaryEmbedding(X:Tensor, cos_cache:Tensor, sin_cache:Tensor, position_ids:Tensor|None=None, interleaved:int=0, num_heads:int|None=None, - rotary_embedding_dim:int=0): - original_input_shape = X.shape - - if X.ndim == 4: X = X.permute(0, 2, 1, 3) - elif X.ndim == 3: - assert num_heads is not None, "num_heads must be provided for 3D input" - X = X.reshape(*X.shape[:-1], num_heads, X.shape[-1] // num_heads) - - head_size = X.shape[-1] - rot_dim = rotary_embedding_dim or head_size - x_rotate, x_pass = X[..., :rot_dim], X[..., rot_dim:] - - cos = cos_cache[position_ids] if position_ids is not None else cos_cache[:X.shape[1]] - sin = sin_cache[position_ids] if position_ids is not None else sin_cache[:X.shape[1]] - cos = cos[..., :rot_dim//2].unsqueeze(2) - sin = sin[..., :rot_dim//2].unsqueeze(2) - - if interleaved: - x1, x2 = x_rotate[..., ::2], x_rotate[..., 1::2] - real = x1 * cos - x2 * sin - imag = x1 * sin + x2 * cos - x_rotated = Tensor.stack(real, imag, dim=-1).flatten(start_dim=-2) - else: - x1, x2 = x_rotate.chunk(2, dim=-1) - real = x1 * cos - x2 * sin - imag = x1 * sin + x2 * cos - x_rotated = real.cat(imag, dim=-1) - - output = x_rotated.cat(x_pass, dim=-1) - return output.flatten(start_dim=2) if len(original_input_shape) == 3 else output.permute(0, 2, 1, 3) - - # ***** Indexing Ops ***** - def ArrayFeatureExtractor(x:Tensor, indices:Tensor): return x[..., indices] - - def Gather(x:Tensor, indices:Tensor, axis:int=0): - if indices.numel() < 9: # NOTE lessor kernels for smaller indices but kernel number increases depending on size of indices - ret_shape = x.shape[:axis] + indices.shape + x.shape[axis+1:] - if indices.ndim > 1: indices = indices.flatten() - index_consts = [_cached_to_python_const(indices)] if indices.shape == () else _cached_to_python_const(indices) - index_consts = [x.shape[axis]+i if i<0 else i for i in index_consts] - args = [[(0,x) if j != axis else (i,i+1) for j, x in enumerate(x.shape)] for i in index_consts] - return x.shrink(arg=tuple(args[0])).cat(*[x.shrink(arg=tuple(arg)) for arg in args[1:]], dim=axis).reshape(ret_shape) - # NOTE faster gather, fixed number of kernels, but exceeds limited kernels for openpilot - return x[tuple([slice(None) if i != axis else indices for i in range(x.ndim)])] - def Scatter(*args, **kwargs): return ScatterElements(*args, **kwargs) # deprecated - - def GatherND(x:Tensor, indices:Tensor, batch_dims:int=0): - if batch_dims == 0: return x[tuple(i.squeeze(-1) for i in indices.split(1, -1))] - x_shape, i_shape = x.shape, indices.shape - b = math.prod(x.shape[dim] for dim in range(batch_dims)) - # NOTE: each batched dim of both input and indices are equal - x = x.reshape(b, *x.shape[batch_dims:]) - indices = indices.reshape(b, *indices.shape[batch_dims:]) - b_idx = Tensor.arange(b, device=x.device).reshape(b, *(1,)*(indices.ndim - 2)).expand(*indices.shape[:-1]) - ret = x[(b_idx,) + tuple(i.squeeze(-1) for i in indices.split(1, -1))] - return ret.reshape(*x_shape[:batch_dims], *i_shape[batch_dims:-1], *ret.shape[indices.ndim-1:]) - def ScatterND(x:Tensor, indices:Tensor, updates:Tensor, reduction:Literal["none", "add", "mul"]='none'): - assert updates.shape == indices.shape[:-1] + x.shape[cast(int, indices.shape[-1]):] - x = x.contiguous() - for index, u in zip(indices.split(1, 0), updates.split(1, 0)): - i = tuple(idx.squeeze(-1) for idx in index.squeeze(0).split(1, -1)) - u = u.squeeze(0) - if reduction == "none": x[i] = u - elif reduction == "add": x[i] += u - elif reduction == "mul": x[i] *= u - else: raise NotImplementedError("reduction doesn't support max or min") - return x - - def ScatterElements(x: Tensor, indices: Tensor, updates: Tensor, axis=0, reduction:Literal["none", "add", "mul", "min", "max"]="none"): - indices = (indices < 0).where(x.shape[axis], 0) + indices - if reduction == "none": return x.scatter(axis, indices, updates) - return x.scatter_reduce(axis, indices, updates, {"add": "sum", "mul": "prod", "min": "amin", "max": "amax"}.get(reduction)) - def GatherElements(x:Tensor, indices:Tensor, axis:int): - indices = (indices < 0).where(x.shape[axis], 0) + indices - return x.gather(axis, indices) - - def Compress(inp:Tensor, condition:list[bool], axis:int|None=None): - if axis is None: - inp = inp.flatten() - axis = 0 - if axis < 0: axis += inp.ndim - con = Tensor([i for i,cond in enumerate(condition) if cond]) # compress in python - return inp[tuple(con if i == axis else slice(None) for i in range(inp.ndim))] - - # ***** Quantization Ops ***** - def QuantizeLinear(x:Tensor, y_scale:Tensor, y_zero_point:Tensor|int=0, axis:int=1, block_size:int=0, output_dtype:int=0, saturate=1): - if isinstance(y_zero_point, Tensor): out_dtype = y_zero_point.dtype - elif output_dtype != 0: out_dtype = dtype_parse(output_dtype, "QuantizeLinear op") - else: out_dtype = dtypes.uint8 - y_scale, y_zero_point = _prepare_quantize(x, y_scale, y_zero_point, axis, block_size) - if out_dtype == dtypes.uchar: - # this appears to work in practice, at least for uchar out_dtype. it folds with the quantize stuff - ret = _clamp_cast((x / y_scale + 0.4999999 + y_zero_point).int(), out_dtype) - else: - ret = _clamp_cast(((x / y_scale).round() + y_zero_point), out_dtype) - return ret.contiguous() - - def DynamicQuantizeLinear(x: Tensor): - # only support uint8 - qmin, qmax = dtypes.min(dtypes.uint8), dtypes.max(dtypes.uint8) - scale = (x.max().maximum(0) + ((-x).max()).maximum(0)) / (qmax - qmin) - zero_point = _clamp_cast((qmin - x.min() / scale).round(), dtypes.uint8) - y = _clamp_cast((x / scale).round() + zero_point, dtypes.uint8) - return y, scale, zero_point - - def DequantizeLinear(x:Tensor, x_scale:Tensor, x_zero_point:Tensor|int=0, axis:int=1, block_size:int=0): - x_scale, x_zero_point = _prepare_quantize(x, x_scale, x_zero_point, axis, block_size) - return ((x.int() - x_zero_point) * x_scale).cast(x_scale.dtype) - - def QLinearConv(x:Tensor, x_scale:Tensor, x_zero_point:Tensor|int, w:Tensor, w_scale:Tensor, w_zero_point:Tensor|int, y_scale:Tensor, - y_zero_point: Tensor|int, B:Tensor|None=None, **opts): - return _qlinearop_quantized(Conv, [x,w], [x_zero_point,w_zero_point], [x_scale,w_scale], y_scale, y_zero_point, **{"B":B, **opts}) - - def QLinearMatMul(a:Tensor, a_scale:Tensor, a_zero_point:Tensor|int, b:Tensor, b_scale:Tensor, b_zero_point:Tensor|int, y_scale:Tensor, - y_zero_point:Tensor|int) -> Tensor: - return _qlinearop_quantized(Tensor.matmul, [a,b], [a_zero_point,b_zero_point], [a_scale,b_scale], y_scale, y_zero_point) - - def QLinearAdd(a:Tensor, a_scale:Tensor, a_zero_point:Tensor, b:Tensor, b_scale:Tensor, b_zero_point:Tensor, c_scale:Tensor, c_zero_point:Tensor): - return _qlinearop_float(Tensor.add, [a,b], [a_zero_point,b_zero_point], [a_scale,b_scale], c_scale, c_zero_point) - - def QLinearMul(a:Tensor, a_scale:Tensor, a_zero_point:Tensor, b:Tensor, b_scale:Tensor, b_zero_point:Tensor, c_scale:Tensor, c_zero_point:Tensor): - return _qlinearop_quantized(Tensor.mul, [a,b], [a_zero_point,b_zero_point], [a_scale,b_scale], c_scale, c_zero_point) - - def QLinearGlobalAveragePool(X:Tensor, x_scale:Tensor, x_zero_point:Tensor, y_scale:Tensor, y_zero_point:Tensor, channels_last:int): - assert channels_last == 0, "TODO NHWC" - return _qlinearop_float(GlobalAveragePool, [X], [x_zero_point], [x_scale], y_scale, y_zero_point) - - def ConvInteger(x: Tensor, w: Tensor, x_zero_point: Tensor | int = 0, w_zero_point: Tensor | int = 0, B: Tensor | None = None, **opts) -> Tensor: - return _op_integer(Conv, [x,w], [x_zero_point,w_zero_point], **{"B":B, **opts}) - - def MatMulInteger(A: Tensor, B: Tensor, a_zero_point: Tensor | int = 0, b_zero_point: Tensor | int = 0) -> Tensor: - return _op_integer(Tensor.matmul, [A,B], [a_zero_point,b_zero_point]) - - # ***** Training Ops ***** - # NOTE: onnx training ops actually don't need the state for optim, all the ops work in a functional way, but we still can reuse optim.py code - @_onnx_training(3) - def Adagrad(R:Tensor, T:int, *inputs:Tensor, decay_factor:float=0.0, epsilon:float=0.0, norm_coefficient:float=0.0): - X, G, H = (i.detach() for i in inputs) - grad = norm_coefficient * X + G - H.assign(H + grad.square()) - up = grad / (H.sqrt() + epsilon) - r = R / (1 + T * decay_factor) - X.assign(X.detach() - r * up) - return [X, H] - - @_onnx_training(4) - def Adam(R:Tensor, T:int, *inputs:Tensor, alpha:float=0.9, beta:float=0.999, epsilon:float=0.0, norm_coefficient:float=0.0, - norm_coefficient_post:float=0.0): - from tinygrad.nn.optim import Adam as TinyAdam - X, G, V, H = inputs - G, V, H = G.detach(), V.detach(), H.detach() - X.grad = norm_coefficient * X.detach() + G - opt = TinyAdam([X], b1=alpha, b2=beta, eps=epsilon) - opt.m, opt.v, opt.lr = [V], [H], R - # need no-op for m_hat and v_hat if T == 0 - if T == 0: opt.b1_t, opt.b2_t = opt.b1_t.zeros_like(), opt.b2_t.zeros_like() - else: - # `T-1` since it's applied again at the start of `_step` - opt.b1_t = Tensor([alpha**(T-1)], dtype=dtypes.float32, device=X.device, requires_grad=False) - opt.b2_t = Tensor([beta**(T-1)], dtype=dtypes.float32, device=X.device, requires_grad=False) - opt.step() - X = (1 - norm_coefficient_post) * X - return [X, V, H] - - @_onnx_training(3) - def Momentum(R:Tensor, T:int, *inputs:Tensor, alpha:float, beta:float, mode:str, norm_coefficient:float): - X, G, V = (i.detach() for i in inputs) - grad = norm_coefficient * X + G - # NOTE: this beta_adjusted term makes it so we can't use SGD for nesterov - beta_adjusted = beta if T > 0 else 1 - V.assign(alpha * V + grad * beta_adjusted) - X.assign(X - R * (V if mode == "standard" else (grad + alpha * V))) - return [X, V] - - def Gradient(*inputs:Tensor, y:str, intermediate_tensors:dict[str, Tensor], **_): - intermediate_tensors[y].backward() - return tuple([t.grad for t in inputs]) - - return { - # Tensor ops - **{op: getattr(Tensor, op.lower()) for op in ("Neg", "Reciprocal", "Pow", "Sqrt", "Sign", "Abs", "Exp", "Log", "Mish", "Sin", "Cos", "Tan", - "Asin", "Acos", "Atan", "Relu", "Sigmoid", "MatMul", "Floor", "Ceil", "IsNaN", "Softplus", "HardSwish", "Where", "Mul", "Sinh", "Cosh", - "Tanh", "Softsign", "Asinh", "Acosh", "Atanh", "Elu", "Celu", "Selu", "Round", "Erf")}, - # Implemented ops - **{name:obj for name,obj in locals().items() if isinstance(obj, types.FunctionType) and not name.startswith("_") and name[0].isupper()}, - # Version ops - **{name:obj for name,obj in locals().items() if isinstance(obj, dict)}, - } - -onnx_ops = get_onnx_ops() diff --git a/tinygrad_repo/extra/onnx_helpers.py b/tinygrad_repo/extra/onnx_helpers.py index 750f54d9e..632d5df8d 100644 --- a/tinygrad_repo/extra/onnx_helpers.py +++ b/tinygrad_repo/extra/onnx_helpers.py @@ -1,7 +1,6 @@ from tinygrad import Tensor from tinygrad.tensor import _to_np_dtype -from tinygrad.frontend.onnx import OnnxRunner -from extra.onnx import OnnxValue +from tinygrad.frontend.onnx import OnnxRunner, OnnxValue import numpy as np import onnxruntime as ort diff --git a/tinygrad_repo/extra/onnx_parser.py b/tinygrad_repo/extra/onnx_parser.py deleted file mode 100644 index 32a9a0651..000000000 --- a/tinygrad_repo/extra/onnx_parser.py +++ /dev/null @@ -1,207 +0,0 @@ -# https://github.com/onnx/onnx/blob/main/onnx/onnx.proto3 - -import os, pathlib, struct -from io import BufferedReader -from types import SimpleNamespace -from tinygrad.nn.state import TensorIO -from tinygrad.tensor import Tensor - -# Protobuf Wire Types -WIRETYPE_VARINT = 0; WIRETYPE_FIXED64 = 1; WIRETYPE_LENGTH_DELIMITED = 2; WIRETYPE_START_GROUP = 3; WIRETYPE_END_GROUP = 4; WIRETYPE_FIXED32 = 5 # noqa: E702 - -# TensorProto.DataType -class TensorDataType: - UNDEFINED = 0; FLOAT = 1; UINT8 = 2; INT8 = 3; UINT16 = 4; INT16 = 5; INT32 = 6; INT64 = 7 # noqa: E702 - STRING = 8; BOOL = 9; FLOAT16 = 10; DOUBLE = 11; UINT32 = 12; UINT64 = 13; COMPLEX64 = 14; COMPLEX128 = 15; BFLOAT16 = 16 # noqa: E702 - -# AttributeProto.AttributeType -class AttributeType: - UNDEFINED = 0; FLOAT = 1; INT = 2; STRING = 3; TENSOR = 4; GRAPH = 5; SPARSE_TENSOR = 11; TYPE_PROTO = 13; FLOATS = 6; INTS = 7 # noqa: E702 - STRINGS = 8; TENSORS = 9; GRAPHS = 10; SPARSE_TENSORS = 12; TYPE_PROTOS = 14 # noqa: E702 - -class PBType: FLOAT = 1; INT = 2; STRING = 3; FLOATS = 4; INTS = 5; STRINGS = 6; BYTES = 7; SUB = 8 # noqa: E702 - -PB_INFOS: dict[str, dict] = { - "OperatorSetIdProto": {1: ("domain", PBType.STRING), 2: ("version", PBType.INT)}, - "StringStringEntryProto": {1: ("key", PBType.STRING), 2: ("value", PBType.STRING)}, - "TensorProto": {1: ("dims", PBType.INT, True), 2: ("data_type", PBType.INT), 4: ("float_data", PBType.FLOATS), - 13: ("external_data", PBType.SUB, True, "StringStringEntryProto"), 14: ("data_location", PBType.INT), - 5: ("int32_data", PBType.INTS), 7: ("int64_data", PBType.INTS), 8: ("name", PBType.STRING), 9: ("raw_data", PBType.BYTES), - 10: ("double_data", PBType.FLOATS), 11: ("uint64_data", PBType.INTS)}, - "TensorShapeProtoDimension": {1: ("dim_value", PBType.INT), 2: ("dim_param", PBType.STRING)}, - "TensorShapeProto": {1: ("dim", PBType.SUB, True, "TensorShapeProtoDimension")}, - "ModelProto": {1: ("ir_version", PBType.INT), 5: ("model_version", PBType.INT), - 2: ("producer_name", PBType.STRING), 3: ("producer_version", PBType.STRING), 4: ("domain", PBType.STRING), 6: ("doc_string", PBType.STRING), - 7: ("graph", PBType.SUB, False, ("GraphProto", lambda: {"node": [], "initializer": [], "input": [], "output": [], "value_info": []})), - 8: ("opset_import",PBType.SUB, True, "OperatorSetIdProto")}, - "GraphProto": {2: ("name", PBType.STRING), 10: ("doc_string", PBType.STRING), - 1: ("node", PBType.SUB, True, ("NodeProto", lambda: {"input": [], "output": [], "attribute": [], "domain": None})), - 5: ("initializer", PBType.SUB, True, ("TensorProto", lambda: {"dims": [], "float_data": None, "int32_data": None, "string_data": None, - "int64_data": None, "double_data": None, "uint64_data": None, "raw_data": None})), - 11: ("input", PBType.SUB, True, "ValueInfoProto"), 12: ("output", PBType.SUB, True, "ValueInfoProto")}, - "NodeProto": { 1: ("input", PBType.STRING, True), 2: ("output", PBType.STRING, True), 3: ("name", PBType.STRING), - 4: ("op_type", PBType.STRING), 6: ("doc_string", PBType.STRING), 7: ("domain", PBType.STRING), - 5: ("attribute", PBType.SUB, True, ("AttributeProto", lambda: {"floats": [], "ints": [], "strings": []}))}, - "AttributeProto": {1: ("name", PBType.STRING), 20: ("type", PBType.INT), 3: ("i", PBType.INT), 8: ("ints", PBType.INT, True), - 2: ("f", PBType.FLOAT), 7: ("floats", PBType.FLOAT, True), 4: ("s", PBType.BYTES), 9: ("strings", PBType.BYTES, True), - 5:("t", PBType.SUB, False, ("TensorProto", lambda: {"dims": [], "float_data": None, "int32_data": None, "string_data": None, "int64_data": None, - "double_data": None, "uint64_data": None, "raw_data": None}))}, - "ValueInfoProto": {1: ("name", PBType.STRING), 2: ("type", PBType.SUB, False, "TypeProto"), 3: ("doc_string", PBType.STRING)}, - "TypeProto": {1: ("tensor_type", PBType.SUB, False, "TypeProtoTensor"), 4: ("sequence_type", PBType.SUB, False, "TypeProtoSequence"), - 9: ("optional_type", PBType.SUB, False, "TypeProtoOptional"), 6: ("denotation", PBType.STRING)}, - "TypeProtoSequence": {1: ("elem_type", PBType.SUB, False, "TypeProto")}, - "TypeProtoOptional": {1: ("elem_type", PBType.SUB, False, "TypeProto")}, - "TypeProtoTensor": {1: ("elem_type", PBType.INT), 2: ("shape", PBType.SUB, False, ("TensorShapeProto", lambda: {"dim": []}))}, -} - -def onnx_load(fn: Tensor|str|pathlib.Path, load_external_data: bool=True): - parser = OnnxParser(fn, load_external_data) - onnx_model = parser.parse() - model = dict_to_namespace(onnx_model) - return model - -def gen_result(obj: dict, key_name, val, repeated: bool): - if repeated: obj.setdefault(key_name, []).append(val) - else: obj[key_name] = val - -def dict_to_namespace(d): - if isinstance(d, dict): return SimpleNamespace(**{k: dict_to_namespace(v) for k, v in d.items()}) - elif isinstance(d, list): return [dict_to_namespace(i) for i in d] - return d - -class OnnxParser: - def __init__(self, inp: Tensor|str|pathlib.Path, load_external_data: bool=True): - self.file_path: pathlib.Path|None = None - self.load_external_data = load_external_data - if not isinstance(inp, Tensor): - self.file_path = pathlib.Path(inp) - self.tensor = Tensor(self.file_path) - else: self.tensor = inp - self.attr_func_dict = { PBType.BYTES: self._handle_bytes, PBType.SUB: self._handle_sub_message, PBType.FLOATS: self._handle_packed_floats, - PBType.INT: self._handle_int64, PBType.INTS: self._handle_packed_int64s, PBType.STRING: self._handle_string, PBType.FLOAT: self._handle_float} - self.registered_handles = {} - for pb_name in PB_INFOS: - res = {} - for fid, config in PB_INFOS[pb_name].items(): - parser_fn, repeated = None, False - if len(config) == 2: name, attr = config - elif len(config) == 3: name, attr, repeated = config - elif len(config) == 4: name, attr, repeated, parser_fn = config - handler_fn = self.attr_func_dict[attr] - def _wrapper_handler(obj, reader, wt, h=handler_fn, n=name, p=parser_fn, r=repeated): return h(obj, n, reader, wt, parser_func=p, repeated=r) - res[fid] = _wrapper_handler - self.registered_handles[pb_name] = res - - def parse(self): - reader = BufferedReader(TensorIO(self.tensor)) - return self._parse_message(reader, "ModelProto", lambda: {"opset_import": [], "domain": None, "graph": None}) - - def decode_varint(self, reader: BufferedReader) -> int: - result = 0 - shift = 0 - while True: - data = reader.read(1) - if data == b"": raise EOFError("decode_varint EOF") - result |= (data[0] & 0x7F) << shift - if not (data[0] & 0x80): return result - shift += 7 - if shift >= 70: raise ValueError("Varint too long") - - def skip_field_value(self, reader: BufferedReader, wire_type): - if wire_type == WIRETYPE_VARINT: self.decode_varint(reader) - elif wire_type == WIRETYPE_FIXED64: reader.seek(8, os.SEEK_CUR) - elif wire_type == WIRETYPE_FIXED32: reader.seek(4, os.SEEK_CUR) - elif wire_type == WIRETYPE_LENGTH_DELIMITED: reader.seek(self.decode_varint(reader), os.SEEK_CUR) - else: raise ValueError(f"Unknown wire type: {wire_type}") - - def _parse_message(self, reader, message_field_handlers_name, initial_obj_factory=lambda: {}): - message_field_handlers = self.registered_handles[message_field_handlers_name] - obj = initial_obj_factory() - while True: - try: - tag_val = self.decode_varint(reader) - field_number = tag_val >> 3 - wire_type = tag_val & 0x07 - if handler := message_field_handlers.get(field_number): - handler(obj, reader, wire_type) - else: self.skip_field_value(reader, wire_type) - except EOFError: break - if message_field_handlers_name == "TensorProto" and self.load_external_data and obj.get("data_location", 0) == 1: self._parse_external_data(obj) - return obj - - def _handle_delimited(self, reader:BufferedReader, use_tensor=False) -> Tensor|bytes: - str_len = self.decode_varint(reader) - if not use_tensor: return reader.read(str_len) - raw = reader.raw - assert isinstance(raw, TensorIO) - res = raw._tensor[reader.tell():(reader.tell()+str_len)] - reader.seek(str_len, os.SEEK_CUR) - return res - - def _handle_string(self, obj, key_name, reader, wire_type, parser_func=None, repeated=False): - if wire_type != WIRETYPE_LENGTH_DELIMITED: raise ValueError(f"Expected length-delimited for string field '{key_name}'") - value = self._handle_delimited(reader) - assert isinstance(value, bytes) - gen_result(obj, key_name, value.decode("utf-8"), repeated) - - def _handle_bytes(self, obj, key_name, reader, wire_type, parser_func=None, repeated=False): - if wire_type != WIRETYPE_LENGTH_DELIMITED: raise ValueError(f"Expected length-delimited for bytes field '{key_name}'") - value = self._handle_delimited(reader, use_tensor=True) - gen_result(obj, key_name, value, repeated) - - def _handle_int64(self, obj, key_name, reader, wire_type, parser_func=None, repeated=False): - if wire_type != WIRETYPE_VARINT: raise ValueError(f"Expected varint for int64 field '{key_name}'") - val = self.decode_varint(reader) - gen_result(obj, key_name, val - 2**64 if val & (1 << 63) else val, repeated) - - def _handle_float(self, obj, key_name, reader, wire_type, parser_func=None, repeated=False): - if wire_type != WIRETYPE_FIXED32: raise ValueError(f"Expected fixed32 for float field '{key_name}'") - val, = struct.unpack(" UOp: return eval(ast_str) def ast_str_to_lin(ast_str:str, opts=None): return Kernel(ast_str_to_ast(ast_str), opts=opts) def kern_str_to_lin(kern_str:str, opts=None): @@ -103,7 +103,7 @@ def lin_to_feats(lin:Kernel, use_sts=True): return ret from tinygrad.device import Device, Buffer -from tinygrad.opt.search import _ensure_buffer_alloc, _time_program +from tinygrad.codegen.opt.search import _ensure_buffer_alloc, _time_program from tinygrad.helpers import to_function_name, CACHELEVEL, diskcache_get, diskcache_put def time_linearizer(lin:Kernel, rawbufs:list[Buffer], allow_test_size=True, max_global_size=65536, cnt=3, disable_cache=False, clear_l2=False) -> float: # noqa: E501 diff --git a/tinygrad_repo/extra/optimization/pretrain_valuenet.py b/tinygrad_repo/extra/optimization/pretrain_valuenet.py index 2dd0f90c6..c73e429a4 100644 --- a/tinygrad_repo/extra/optimization/pretrain_valuenet.py +++ b/tinygrad_repo/extra/optimization/pretrain_valuenet.py @@ -1,4 +1,4 @@ -from tinygrad.opt.kernel import Kernel +from tinygrad.codegen.opt.kernel import Kernel from tqdm import tqdm, trange import math import random @@ -14,7 +14,7 @@ from tinygrad.shape.shapetracker import ShapeTracker from tinygrad.shape.view import View from tinygrad.uop.ops import Variable inf, nan = float('inf'), float('nan') -from tinygrad.opt.kernel import Opt, OptOps +from tinygrad.codegen.opt.kernel import Opt, OptOps from extra.optimization.helpers import lin_to_feats, MAX_DIMS diff --git a/tinygrad_repo/extra/optimization/rl.py b/tinygrad_repo/extra/optimization/rl.py index d45e84b14..0a92161b1 100644 --- a/tinygrad_repo/extra/optimization/rl.py +++ b/tinygrad_repo/extra/optimization/rl.py @@ -3,7 +3,7 @@ import numpy as np import math, random from tinygrad.tensor import Tensor from tinygrad.nn.state import get_parameters, get_state_dict, safe_save, safe_load, load_state_dict -from tinygrad.opt.search import actions, bufs_from_lin, get_kernel_actions +from tinygrad.codegen.opt.search import actions, bufs_from_lin, get_kernel_actions from tinygrad.nn.optim import Adam from extra.optimization.extract_policynet import PolicyNet from extra.optimization.helpers import load_worlds, ast_str_to_lin, lin_to_feats, time_linearizer diff --git a/tinygrad_repo/extra/optimization/run_qnet.py b/tinygrad_repo/extra/optimization/run_qnet.py index 6dfca1b37..3586199a8 100644 --- a/tinygrad_repo/extra/optimization/run_qnet.py +++ b/tinygrad_repo/extra/optimization/run_qnet.py @@ -1,6 +1,6 @@ from typing import List, Tuple -from tinygrad.opt.kernel import Kernel -from tinygrad.opt.search import get_kernel_actions, actions +from tinygrad.codegen.opt.kernel import Kernel +from tinygrad.codegen.opt.search import get_kernel_actions, actions _net = None def beam_q_estimate(beam:List[Tuple[Kernel, float]]) -> List[Tuple[Kernel, float]]: diff --git a/tinygrad_repo/extra/optimization/search.py b/tinygrad_repo/extra/optimization/search.py index 6b49f3622..658ae953d 100644 --- a/tinygrad_repo/extra/optimization/search.py +++ b/tinygrad_repo/extra/optimization/search.py @@ -4,8 +4,8 @@ from extra.optimization.helpers import ast_str_to_lin, time_linearizer from tinygrad import dtypes from tinygrad.helpers import BEAM, getenv from tinygrad.device import Device, Compiled -from tinygrad.opt.kernel import Kernel -from tinygrad.opt.search import beam_search, bufs_from_lin +from tinygrad.codegen.opt.kernel import Kernel +from tinygrad.codegen.opt.search import beam_search, bufs_from_lin if __name__ == '__main__': diff --git a/tinygrad_repo/extra/optimization/test_beam_search.py b/tinygrad_repo/extra/optimization/test_beam_search.py index 24c3f943b..7042ea914 100644 --- a/tinygrad_repo/extra/optimization/test_beam_search.py +++ b/tinygrad_repo/extra/optimization/test_beam_search.py @@ -16,9 +16,9 @@ class TestBeamSearch(unittest.TestCase): BEAM.value = self.old_beam def test_variable_ast_beam(self): - with Context(IGNORE_OOB=1): - a = rand(3, 3).reshape((Variable("a", 1, 10).bind(3), 3)) - a = (a+1).realize() + vi = Variable("a", 1, 10).bind(3) + a = rand(10, 3)[:vi] + a = (a+1).realize() def test_big_prime_number(self): a = rand(367, 367) @@ -42,18 +42,16 @@ class TestBeamSearch(unittest.TestCase): def test_variable_big_prime_number(self): v = Variable("v", 1, 400).bind(367) - a = rand(367, 367) - b = rand(367, 367) - with Context(IGNORE_OOB=1): - c = (a.reshape(367, v) @ b.reshape(v, 367)).realize() - np.testing.assert_allclose(c.numpy(), a.numpy() @ b.numpy(), atol=1e-4, rtol=1e-4) + a = rand(367, 400) + b = rand(400, 367) + c = (a[:, :v] @ b[:v, :]).realize() + np.testing.assert_allclose(c.numpy(), a[:, :367].numpy() @ b[:367, :].numpy(), atol=1e-4, rtol=1e-4) def test_variable_shrink_prime_number(self): v = Variable("v", 1, 400).bind(367) a = rand(400, 367) - with Context(IGNORE_OOB=1): - b = (a.shrink(((0,v), None))+1).reshape(367,367).realize() - np.testing.assert_allclose(b.numpy(), a.numpy()[:367]+1, atol=1e-4, rtol=1e-4) + b = (a.shrink(((0,v), None))+1).reshape(367,367).realize() + np.testing.assert_allclose(b.numpy(), a.numpy()[:367]+1, atol=1e-4, rtol=1e-4) def test_no_mutate_rawbuffers(self): a = rand(3, 3).realize() diff --git a/tinygrad_repo/extra/optimization/test_net.py b/tinygrad_repo/extra/optimization/test_net.py index efd228475..8e266fca6 100644 --- a/tinygrad_repo/extra/optimization/test_net.py +++ b/tinygrad_repo/extra/optimization/test_net.py @@ -6,8 +6,8 @@ from copy import deepcopy from tinygrad.helpers import getenv, colored from tinygrad.tensor import Tensor from tinygrad.nn.state import get_parameters, get_state_dict, safe_save, safe_load, load_state_dict -from tinygrad.opt.search import bufs_from_lin, actions, get_kernel_actions -from tinygrad.opt.heuristic import hand_coded_optimizations +from tinygrad.codegen.opt.search import bufs_from_lin, actions, get_kernel_actions +from tinygrad.codegen.opt.heuristic import hand_coded_optimizations from extra.optimization.helpers import load_worlds, ast_str_to_lin, lin_to_feats, time_linearizer from extra.optimization.extract_policynet import PolicyNet from extra.optimization.pretrain_valuenet import ValueNet diff --git a/tinygrad_repo/extra/optimization/test_time_linearizer.py b/tinygrad_repo/extra/optimization/test_time_linearizer.py index 32d27b2f7..8764ccd4e 100644 --- a/tinygrad_repo/extra/optimization/test_time_linearizer.py +++ b/tinygrad_repo/extra/optimization/test_time_linearizer.py @@ -1,5 +1,5 @@ from extra.optimization.helpers import load_worlds, ast_str_to_lin, time_linearizer -from tinygrad.opt.search import bufs_from_lin, get_kernel_actions +from tinygrad.codegen.opt.search import bufs_from_lin, get_kernel_actions if __name__ == "__main__": ast_strs = load_worlds() diff --git a/tinygrad_repo/extra/perfetto/to_perfetto.py b/tinygrad_repo/extra/perfetto/to_perfetto.py index 0b222edb3..f12d1c494 100644 --- a/tinygrad_repo/extra/perfetto/to_perfetto.py +++ b/tinygrad_repo/extra/perfetto/to_perfetto.py @@ -1,6 +1,6 @@ import sys, pickle, decimal, json from tinygrad.device import ProfileDeviceEvent, ProfileGraphEvent -from tinygrad.helpers import tqdm, temp, ProfileEvent, ProfileRangeEvent +from tinygrad.helpers import tqdm, temp, ProfileEvent, ProfileRangeEvent, TracingKey devices:dict[str, tuple[decimal.Decimal, decimal.Decimal, int]] = {} def prep_ts(device:str, ts:decimal.Decimal, is_copy): return int(decimal.Decimal(ts) + devices[device][is_copy]) @@ -11,12 +11,14 @@ def dev_ev_to_perfetto_json(ev:ProfileDeviceEvent): {"name": "thread_name", "ph": "M", "pid": dev_to_pid(ev.device)['pid'], "tid": 0, "args": {"name": "COMPUTE"}}, {"name": "thread_name", "ph": "M", "pid": dev_to_pid(ev.device)['pid'], "tid": 1, "args": {"name": "COPY"}}] def range_ev_to_perfetto_json(ev:ProfileRangeEvent): - return [{"name": ev.name, "ph": "X", "ts": prep_ts(ev.device, ev.st, ev.is_copy), "dur": float(ev.en-ev.st), **dev_to_pid(ev.device, ev.is_copy)}] + name = ev.name.display_name if isinstance(ev.name, TracingKey) else ev.name + return [{"name": name, "ph": "X", "ts": prep_ts(ev.device, ev.st, ev.is_copy), "dur": float(ev.en-ev.st), **dev_to_pid(ev.device, ev.is_copy)}] def graph_ev_to_perfetto_json(ev:ProfileGraphEvent, reccnt): ret = [] for i,e in enumerate(ev.ents): st, en = ev.sigs[e.st_id], ev.sigs[e.en_id] - ret += [{"name": e.name, "ph": "X", "ts": prep_ts(e.device, st, e.is_copy), "dur": float(en-st), **dev_to_pid(e.device, e.is_copy)}] + name = e.name.display_name if isinstance(e.name, TracingKey) else e.name + ret += [{"name": name, "ph": "X", "ts": prep_ts(e.device, st, e.is_copy), "dur": float(en-st), **dev_to_pid(e.device, e.is_copy)}] for dep in ev.deps[i]: d = ev.ents[dep] ret += [{"ph": "s", **dev_to_pid(d.device, d.is_copy), "id": reccnt+len(ret), "ts": prep_ts(d.device, ev.sigs[d.en_id], d.is_copy), "bp": "e"}] @@ -24,6 +26,8 @@ def graph_ev_to_perfetto_json(ev:ProfileGraphEvent, reccnt): return ret def to_perfetto(profile:list[ProfileEvent]): # Start json with devices. + profile += [ProfileDeviceEvent("TINY")] + prof_json = [x for ev in profile if isinstance(ev, ProfileDeviceEvent) for x in dev_ev_to_perfetto_json(ev)] for ev in tqdm(profile, desc="preparing profile"): if isinstance(ev, ProfileRangeEvent): prof_json += range_ev_to_perfetto_json(ev) diff --git a/tinygrad_repo/extra/remu/src/thread.rs b/tinygrad_repo/extra/remu/src/thread.rs index 4cb84a561..4662d3fa3 100644 --- a/tinygrad_repo/extra/remu/src/thread.rs +++ b/tinygrad_repo/extra/remu/src/thread.rs @@ -673,6 +673,7 @@ impl<'a> Thread<'a> { 39 => f32::log2(s0), 42 => 1.0 / s0, 43 => 1.0 / s0, + 46 => 1.0 / f32::sqrt(s0), 51 => f32::sqrt(s0), _ => todo_instr!(instruction)?, } @@ -1246,7 +1247,7 @@ impl<'a> Thread<'a> { } let ret = match op { - 257 | 259 | 299 | 260 | 261 | 264 | 272 | 392 | 426 | 531 | 537 | 540 | 551 | 567 | 796 => { + 257 | 259 | 299 | 260 | 261 | 264 | 272 | 392 | 426 | 430 | 531 | 537 | 540 | 551 | 567 | 796 => { let s0 = f32::from_bits(s0).negate(0, neg).absolute(0, abs); let s1 = f32::from_bits(s1).negate(1, neg).absolute(1, abs); let s2 = f32::from_bits(s2).negate(2, neg).absolute(2, abs); @@ -1258,6 +1259,7 @@ impl<'a> Thread<'a> { 272 => f32::max(s0, s1), 299 => f32::mul_add(s0, s1, f32::from_bits(self.vec_reg[vdst])), 426 => s0.recip(), + 430 => 1.0 / f32::sqrt(s0), 531 => f32::mul_add(s0, s1, s2), 537 => f32::min(f32::min(s0, s1), s2), 540 => f32::max(f32::max(s0, s1), s2), @@ -2625,6 +2627,14 @@ mod test_vop1 { assert_eq!(thread.vec_reg[3], 1071644672); } + #[test] + fn test_v_rsq_f32() { + let mut thread = _helper_test_thread(); + thread.vec_reg[0] = f32::to_bits(4.0); + r(&vec![0x7E005D00, END_PRG], &mut thread); + assert_eq!(f32::from_bits(thread.vec_reg[0]), 0.5); + } + #[test] fn test_v_frexp_exp_i32_f64() { [(3573412790272.0, 42), (69.0, 7), (2.0, 2), (f64::NEG_INFINITY, 0)] diff --git a/tinygrad_repo/extra/replay_pkl.py b/tinygrad_repo/extra/replay_pkl.py index 0bfd7a36b..e4cb5ed54 100644 --- a/tinygrad_repo/extra/replay_pkl.py +++ b/tinygrad_repo/extra/replay_pkl.py @@ -6,8 +6,8 @@ from tinygrad.helpers import getenv, BEAM from tinygrad.engine.jit import TinyJit from tinygrad.engine.realize import CompiledRunner, ExecItem, ScheduleItem, lower_schedule_item, get_program from tinygrad.renderer import ProgramSpec -from tinygrad.opt.kernel import Kernel, Opt, OptOps -from tinygrad.opt.heuristic import hand_coded_optimizations +from tinygrad.codegen.opt.kernel import Kernel, Opt, OptOps +from tinygrad.codegen.opt.heuristic import hand_coded_optimizations import numpy as np def move_jit_captured_to_dev(captured, device="DSP"): @@ -58,7 +58,7 @@ if __name__ == "__main__": GlobalCounters.kernel_count -= 1 if not getenv("NOOPT"): k.apply_opts(hand_coded_optimizations(k)) - p2 = get_program(k.get_optimized_ast(), k.opts) + p2 = get_program(k.ast, k.opts, k.applied_opts) new_ei = replace(ei, prg=CompiledRunner(p2)) new_ei.run() new_jit.append(new_ei) diff --git a/tinygrad_repo/extra/torch_backend/backend.py b/tinygrad_repo/extra/torch_backend/backend.py index 80fc038c7..c312badf1 100644 --- a/tinygrad_repo/extra/torch_backend/backend.py +++ b/tinygrad_repo/extra/torch_backend/backend.py @@ -128,6 +128,12 @@ def _linalg_eigh(self, UPLO: str = 'U'): w, v = torch.linalg.eigh(self.cpu(), UPLO=UPLO) return w.tiny(), v.tiny() +@torch.library.impl("aten::_linalg_det", "privateuseone") +# TODO: move to tinygrad +def _linalg_det(self: torch.Tensor): + result = aten._linalg_det(self.cpu()) + return result[0].tiny(), result[1].tiny(), result[2].tiny() + def upsample_backward(grad_out, output_size, input_size, *args, f=None): return f(grad_out.cpu(), output_size, input_size, *args).tiny() for i in [ @@ -217,15 +223,18 @@ def max_unpool2d(self:torch.Tensor, indices:torch.Tensor, output_size): @torch.library.impl("aten::arange", "privateuseone") def arange(end, dtype=None, device=None, pin_memory=None): - return wrap(Tensor.arange(0, end, dtype=_from_torch_dtype(dtype or torch.get_default_dtype()))) + has_float = isinstance(end, float) + return wrap(Tensor.arange(0, end, dtype=_from_torch_dtype(dtype or (torch.get_default_dtype() if has_float else torch.int64)))) @torch.library.impl("aten::arange.start", "privateuseone") def arange_start(start, end, dtype=None, device=None, pin_memory=None): - return wrap(Tensor.arange(start, end, dtype=_from_torch_dtype(dtype or torch.get_default_dtype()))) + has_float = any(isinstance(x, float) for x in (start, end)) + return wrap(Tensor.arange(start, end, dtype=_from_torch_dtype(dtype or (torch.get_default_dtype() if has_float else torch.int64)))) @torch.library.impl("aten::arange.start_step", "privateuseone") def arange_start_step(start, end, step, dtype=None, device=None, pin_memory=None): - return wrap(Tensor.arange(start, end, step, dtype=_from_torch_dtype(dtype or torch.get_default_dtype()))) + has_float = any(isinstance(x, float) for x in (start, end, step)) + return wrap(Tensor.arange(start, end, step, dtype=_from_torch_dtype(dtype or (torch.get_default_dtype() if has_float else torch.int64)))) @torch.library.impl("aten::convolution_overrideable", "privateuseone") def convolution_overrideable(input, weight, bias, stride, padding, dilation, transposed, output_padding, groups): @@ -362,6 +371,7 @@ from torch._decomp import get_decompositions decomps = [ aten.native_batch_norm, aten.native_batch_norm_backward, aten.native_layer_norm_backward, + aten.linalg_cross, aten.addmm, aten.addcmul, aten.addcdiv, @@ -371,6 +381,7 @@ decomps = [ aten.elu, # elu has a scale + input_scale param aten.elu_backward, aten.softplus, + aten.logaddexp, aten.threshold, aten.nll_loss_forward, aten.nll_loss_backward, diff --git a/tinygrad_repo/extra/torch_backend/test.py b/tinygrad_repo/extra/torch_backend/test.py index 10c077001..463eed6f2 100644 --- a/tinygrad_repo/extra/torch_backend/test.py +++ b/tinygrad_repo/extra/torch_backend/test.py @@ -135,7 +135,7 @@ class TestTorchBackend(unittest.TestCase): print(c.cpu()) def test_maxpool2d_backward(self): - x = torch.arange(3*3, device=device).reshape(1, 1, 3, 3).requires_grad_(True) + x = torch.arange(3*3, dtype=torch.float32, device=device).reshape(1, 1, 3, 3).requires_grad_(True) torch.nn.functional.max_pool2d(x, kernel_size=2, stride=1).sum().backward() np.testing.assert_equal(x.grad.squeeze().cpu().numpy(), [[0, 0, 0], [0, 1, 1], [0, 1, 1]]) @@ -198,6 +198,17 @@ class TestTorchBackend(unittest.TestCase): recon = (v @ torch.diag(w) @ v.T).cpu().numpy() np.testing.assert_allclose(recon, a.cpu().numpy(), atol=1e-6) + def test_linalg_det(self): + a = torch.diag(torch.tensor([1,2,3,4,5], dtype = torch.float32, device=device)) + b = torch.linalg.det(a) + np.testing.assert_equal(b.cpu().numpy(), 120.0) + + def test_linalg_cross(self): + a = torch.tensor([[1, 0, 0], [0, 1, 0]], dtype=torch.float32, device=device) + b = torch.tensor([[0, 0, 1]], dtype=torch.float32, device=device) + cross = torch.linalg.cross(a, b) + np.testing.assert_equal(cross.cpu().numpy(), np.array([[0, -1, 0], [1, 0, 0]], dtype=np.float32)) + def test_scalar_assign(self): a = torch.tensor([1, 2, 3], device=device) a[1] = 4 diff --git a/tinygrad_repo/extra/torch_muon.py b/tinygrad_repo/extra/torch_muon.py new file mode 100644 index 000000000..147875772 --- /dev/null +++ b/tinygrad_repo/extra/torch_muon.py @@ -0,0 +1,75 @@ +import torch + +#credit to KellerJordan at https://github.com/KellerJordan/Muon/tree/master +#some changes: classic momentum instead of weighting gradient +#added ns_steps, ns_params, nesterov as hyperparams +def zeropower_via_newtonschulz5(G:torch.tensor, steps:int, params:tuple[int, ...]): + """ + Newton-Schulz iteration to compute the zeroth power / orthogonalization of G. We opt to use a + quintic iteration whose coefficients are selected to maximize the slope at zero. For the purpose + of minimizing steps, it turns out to be empirically effective to keep increasing the slope at + zero even beyond the point where the iteration no longer converges all the way to one everywhere + on the interval. This iteration therefore does not produce UV^T but rather something like US'V^T + where S' is diagonal with S_{ii}' ~ Uniform(0.5, 1.5), which turns out not to hurt model + performance at all relative to UV^T, where USV^T = G is the SVD. + """ + assert G.ndim >= 2 # batched Muon implementation by @scottjmaddox, and put into practice in the record by @YouJiacheng + + a, b, c = params + X = G + if G.size(-2) > G.size(-1): + X = X.mT + + # Ensure spectral norm is at most 1 + X = X / (X.norm(dim=(-2, -1), keepdim=True) + 1e-7) + # Perform the NS iterations + for _ in range(steps): + A = X @ X.mT + B = b * A + c * A @ A # quintic computation strategy adapted from suggestion by @jxbz, @leloykun, and @YouJiacheng + X = a * X + B @ X + + if G.size(-2) > G.size(-1): + X = X.mT + + return X + +def muon_update(grad, momentum, beta=0.95, ns_steps=5, ns_params=(3.4445, -4.7750, 2.0315), nesterov=True): + if beta: + momentum.mul_(beta).add_(grad) + update = grad.add(momentum,alpha=beta) if nesterov else momentum + else: update = grad + if update.ndim == 4: # for the case of conv filters + update = update.view(len(update), -1) + update = zeropower_via_newtonschulz5(update, steps=ns_steps, params=ns_params) + return update + +class SingleDeviceMuon(torch.optim.Optimizer): + """ + Muon variant for usage in non-distributed settings. + """ + def __init__(self, params, lr=0.02, weight_decay=0.0, momentum=0.95, ns_steps=5, ns_params=(3.4445, -4.7750, 2.0315), nesterov=True): + defaults = dict(lr=lr, weight_decay=weight_decay, momentum=momentum, ns_steps=ns_steps, ns_params=ns_params, nesterov=nesterov) + super().__init__(params, defaults) + + @torch.no_grad() + def step(self, closure=None): + + loss = None + if closure is not None: + with torch.enable_grad(): + loss = closure() + + for group in self.param_groups: + for p in group["params"]: + if p.grad is None: + p.grad = torch.zeros_like(p) # Force synchronization + state = self.state[p] + if len(state) == 0: + state["momentum_buffer"] = torch.zeros_like(p) + update = muon_update(p.grad, state["momentum_buffer"], beta=group["momentum"], ns_steps=group["ns_steps"], + ns_params=group["ns_params"], nesterov=group["nesterov"]) + p.mul_(1.0 - group["lr"] * group["weight_decay"]) + + p.add_(update.reshape(p.shape), alpha=-group["lr"]) + + return loss diff --git a/tinygrad_repo/pytest.ini b/tinygrad_repo/pytest.ini new file mode 100644 index 000000000..cccc62e40 --- /dev/null +++ b/tinygrad_repo/pytest.ini @@ -0,0 +1,2 @@ +[pytest] +norecursedirs = extra diff --git a/tinygrad_repo/ruff.toml b/tinygrad_repo/ruff.toml index d57631f3d..22f9bf566 100644 --- a/tinygrad_repo/ruff.toml +++ b/tinygrad_repo/ruff.toml @@ -35,6 +35,7 @@ lint.select = [ line-length = 150 exclude = [ + ".git/", "docs/", "extra/", "tinygrad/runtime/autogen", diff --git a/tinygrad_repo/setup.py b/tinygrad_repo/setup.py index acf4d5291..7785a5427 100644 --- a/tinygrad_repo/setup.py +++ b/tinygrad_repo/setup.py @@ -9,7 +9,7 @@ with open(directory / 'README.md', encoding='utf-8') as f: testing_minimal = [ "numpy", - "torch", + "torch==2.7.1", "pytest", "pytest-xdist", "hypothesis", @@ -18,16 +18,35 @@ testing_minimal = [ ] setup(name='tinygrad', - version='0.10.3', + version='0.11.0', description='You like pytorch? You like micrograd? You love tinygrad! <3', author='George Hotz', license='MIT', long_description=long_description, long_description_content_type='text/markdown', - packages = ['tinygrad', 'tinygrad.runtime.autogen', 'tinygrad.runtime.autogen.am', 'tinygrad.codegen', 'tinygrad.nn', - 'tinygrad.renderer', 'tinygrad.engine', 'tinygrad.viz', 'tinygrad.runtime', 'tinygrad.runtime.support', 'tinygrad.schedule', - 'tinygrad.runtime.support.am', 'tinygrad.runtime.graph', 'tinygrad.shape', 'tinygrad.uop', 'tinygrad.opt', - 'tinygrad.runtime.support.nv', 'tinygrad.apps'], + packages = [ + 'tinygrad', + 'tinygrad.apps', + 'tinygrad.codegen', + 'tinygrad.codegen.opt', + 'tinygrad.codegen.late', + 'tinygrad.engine', + 'tinygrad.frontend', + 'tinygrad.nn', + 'tinygrad.renderer', + 'tinygrad.runtime', + 'tinygrad.runtime.autogen', + 'tinygrad.runtime.autogen.am', + 'tinygrad.runtime.autogen.nv', + 'tinygrad.runtime.graph', + 'tinygrad.runtime.support', + 'tinygrad.runtime.support.am', + 'tinygrad.runtime.support.nv', + 'tinygrad.schedule', + 'tinygrad.shape', + 'tinygrad.uop', + 'tinygrad.viz', + ], package_data = {'tinygrad': ['py.typed'], 'tinygrad.viz': ['index.html', 'assets/**/*', 'js/*']}, classifiers=[ "Programming Language :: Python :: 3", @@ -45,6 +64,7 @@ setup(name='tinygrad', "pre-commit", "ruff", "numpy", + "typeguard", ], #'mlperf': ["mlperf-logging @ git+https://github.com/mlperf/logging.git@5.0.0-rc3"], 'testing_minimal': testing_minimal, diff --git a/tinygrad_repo/test/test_amd_llvm.py b/tinygrad_repo/test/device/test_amd_llvm.py similarity index 100% rename from tinygrad_repo/test/test_amd_llvm.py rename to tinygrad_repo/test/device/test_amd_llvm.py diff --git a/tinygrad_repo/test/test_hcq.py b/tinygrad_repo/test/device/test_hcq.py similarity index 98% rename from tinygrad_repo/test/test_hcq.py rename to tinygrad_repo/test/device/test_hcq.py index f6c8c1ebc..29b982438 100644 --- a/tinygrad_repo/test/test_hcq.py +++ b/tinygrad_repo/test/device/test_hcq.py @@ -6,7 +6,7 @@ from tinygrad.runtime.support.hcq import HCQCompiled, HCQBuffer from tinygrad.runtime.autogen import libc from tinygrad.runtime.support.system import PCIIfaceBase from tinygrad.engine.realize import get_runner, CompiledRunner, get_program -from tinygrad.opt.kernel import Kernel, Opt, OptOps +from tinygrad.codegen.opt.kernel import Opt, OptOps from tinygrad import Variable MOCKGPU = getenv("MOCKGPU") @@ -163,10 +163,8 @@ class TestHCQ(unittest.TestCase): a = Tensor.randint((3, 3, 3), dtype=dtypes.int, device=Device.DEFAULT).realize() b = a + 1 si = b.schedule()[-1] - k = Kernel(si.ast, opts=TestHCQ.d0.renderer) - for i in range(3): k.apply_opt(Opt(op=OptOps.LOCAL, axis=0, arg=3)) - runner = CompiledRunner(get_program(k.get_optimized_ast(), k.opts)) + runner = CompiledRunner(get_program(si.ast, TestHCQ.d0.renderer, opts=[Opt(op=OptOps.LOCAL, axis=0, arg=3) for _ in range(3)])) zb = Buffer(Device.DEFAULT, 3 * 3 * 3, dtypes.int, options=BufferSpec(cpu_access=True, nolru=True)).ensure_allocated() zt = Buffer(Device.DEFAULT, 3 * 3 * 3, dtypes.int, options=BufferSpec(cpu_access=True, nolru=True)).ensure_allocated() @@ -338,7 +336,7 @@ class TestHCQ(unittest.TestCase): et = float(sig_en.timestamp - sig_st.timestamp) print(f"exec kernel time: {et:.2f} us") - assert 0.1 <= et <= (15000 if MOCKGPU or Device.DEFAULT in {"CPU", "LLVM"} else 100) + assert 0.1 <= et <= (100000 if MOCKGPU or Device.DEFAULT in {"CPU", "LLVM"} else 100) def test_speed_copy_bandwidth(self): if TestHCQ.d0.hw_copy_queue_t is None: self.skipTest("device does not support copy queue") diff --git a/tinygrad_repo/test/test_hcq_iface.py b/tinygrad_repo/test/device/test_hcq_iface.py similarity index 100% rename from tinygrad_repo/test/test_hcq_iface.py rename to tinygrad_repo/test/device/test_hcq_iface.py diff --git a/tinygrad_repo/test/test_metal.py b/tinygrad_repo/test/device/test_metal.py similarity index 100% rename from tinygrad_repo/test/test_metal.py rename to tinygrad_repo/test/device/test_metal.py diff --git a/tinygrad_repo/test/test_ocl.py b/tinygrad_repo/test/device/test_ocl.py similarity index 100% rename from tinygrad_repo/test/test_ocl.py rename to tinygrad_repo/test/device/test_ocl.py diff --git a/tinygrad_repo/test/external/external_benchmark_disk_raw.py b/tinygrad_repo/test/external/external_benchmark_disk_raw.py index 6566ae410..4d4962352 100644 --- a/tinygrad_repo/test/external/external_benchmark_disk_raw.py +++ b/tinygrad_repo/test/external/external_benchmark_disk_raw.py @@ -1,7 +1,8 @@ import pathlib from tinygrad import Tensor, Device, Context +from tinygrad.helpers import getenv if __name__ == "__main__": with Context(DEBUG=2): - disk_llama = Tensor(pathlib.Path("/raid/weights/LLaMA-3/8B/consolidated.00.pth")) + disk_llama = Tensor(pathlib.Path(getenv("TESTFILE", "/raid/weights/LLaMA-3/8B/consolidated.00.pth"))) device_llama = disk_llama.to(Device.DEFAULT).realize() diff --git a/tinygrad_repo/test/external/external_benchmark_hcopt.py b/tinygrad_repo/test/external/external_benchmark_hcopt.py index c10c0e89c..cd1dc81c8 100644 --- a/tinygrad_repo/test/external/external_benchmark_hcopt.py +++ b/tinygrad_repo/test/external/external_benchmark_hcopt.py @@ -1,7 +1,7 @@ import random from tinygrad.helpers import getenv -from tinygrad.opt.search import beam_search, bufs_from_lin -from tinygrad.opt.heuristic import hand_coded_optimizations +from tinygrad.codegen.opt.search import beam_search, bufs_from_lin +from tinygrad.codegen.opt.heuristic import hand_coded_optimizations from extra.optimization.helpers import load_worlds, ast_str_to_lin, time_linearizer def optimize_kernel(k): diff --git a/tinygrad_repo/test/external/external_benchmark_kernel_launch.py b/tinygrad_repo/test/external/external_benchmark_kernel_launch.py index 5744ba092..1369ddc0d 100644 --- a/tinygrad_repo/test/external/external_benchmark_kernel_launch.py +++ b/tinygrad_repo/test/external/external_benchmark_kernel_launch.py @@ -2,7 +2,7 @@ import time from tinygrad import Tensor, TinyJit, Device, Context from tinygrad.helpers import Profiling, Timing, GlobalCounters -# python3 test/test_speed_v_torch.py TestSpeed.test_add_a +# python3 test/speed/external_test_speed_v_torch.py TestSpeed.test_add_a @TinyJit def plus(a:Tensor, b:Tensor): return a+b diff --git a/tinygrad_repo/test/external/external_benchmark_schedule.py b/tinygrad_repo/test/external/external_benchmark_schedule.py index 2a47061e6..3dce94782 100644 --- a/tinygrad_repo/test/external/external_benchmark_schedule.py +++ b/tinygrad_repo/test/external/external_benchmark_schedule.py @@ -1,12 +1,8 @@ -from typing import List from extra.models.resnet import ResNet50 -from tinygrad import Tensor, nn -from tinygrad.helpers import Profiling, Timing, getenv, BEAM, NOOPT, DEBUG, Context, ansilen +from tinygrad import Tensor, nn, Device +from tinygrad.helpers import Profiling, Timing, getenv from tinygrad.uop.ops import Ops -from tinygrad.opt.kernel import Kernel -from tinygrad.opt.heuristic import hand_coded_optimizations from tinygrad.codegen import get_rewrites_for_renderer, apply_rewrites, rewrites_for_linearizer -from tinygrad.opt.search import beam_search, bufs_from_lin from tinygrad.uop.spec import type_verify if __name__ == "__main__": @@ -31,26 +27,13 @@ if __name__ == "__main__": if not SCHEDULE_ONLY: asts = list({x.ast.key:x.ast for x in sched if x.ast.op is Ops.SINK}.values()) if (restrict_kernel := getenv("RESTRICT_KERNEL", -1)) != -1: asts = asts[restrict_kernel:restrict_kernel+1] - kernels: List[Kernel] = [] - with Timing(f"***** model opts({len(asts):2d}) in "): - with Profiling(PROFILE >= 3): - for ast in asts: - k = Kernel(ast) - if BEAM: - with Context(DEBUG=max(2, DEBUG.value)): k = beam_search(k, bufs_from_lin(k), BEAM.value) - elif NOOPT: pass - else: k.apply_opts(hand_coded_optimizations(k)) - kernels.append(k) - - with Timing("***** model prep in "): - kernels = [(k, k.get_optimized_ast(), get_rewrites_for_renderer(k.opts, linearizer=False)) for k in kernels] + rewrites = get_rewrites_for_renderer(Device.default.renderer, linearizer=False) with Profiling(PROFILE, fn="/tmp/rewrite.prof"): with Timing("***** model rewrite in "): rewritten_uops = [] - for i,(k,u,rewrites) in enumerate(kernels): - with Timing(f"rewrite {i:2d} {k.name}{' '*(50-ansilen(k.name))}", enabled=getenv("VERBOSE", 0)): - rewritten_uops.append(apply_rewrites(u, rewrites)) + for u in asts: + rewritten_uops.append(apply_rewrites(u, rewrites)) if LINEARIZE: with Timing("***** model linearize in "): diff --git a/tinygrad_repo/test/external/external_benchmark_sdxl_softmax.py b/tinygrad_repo/test/external/external_benchmark_sdxl_softmax.py index 8da8cfb4e..19837ac9b 100644 --- a/tinygrad_repo/test/external/external_benchmark_sdxl_softmax.py +++ b/tinygrad_repo/test/external/external_benchmark_sdxl_softmax.py @@ -8,7 +8,7 @@ if __name__ == "__main__": GlobalCounters.reset() t.softmax(-1, dtype="half", _single_kernel=True).realize() - from tinygrad.opt.kernel import Kernel, Opt, OptOps + from tinygrad.codegen.opt.kernel import Kernel, Opt, OptOps from tinygrad.helpers import get_single_element GlobalCounters.reset() si = get_single_element(t.softmax(-1, dtype="half", _single_kernel=True).schedule()) @@ -24,5 +24,5 @@ if __name__ == "__main__": #k.apply_opt(Opt(OptOps.GROUP, 1, 32)) #k.apply_opt(Opt(OptOps.GROUP, 0, 32)) from tinygrad.engine.realize import CompiledRunner, ExecItem - run = CompiledRunner(prg:=get_program(k.get_optimized_ast(), k.opts)) + run = CompiledRunner(prg:=get_program(k.ast, k.opts, k.applied_opts)) ExecItem(run, si.bufs).run() diff --git a/tinygrad_repo/test/external/external_debug_metal_sd_conv.py b/tinygrad_repo/test/external/external_debug_metal_sd_conv.py index bb65140fb..e13c6a485 100644 --- a/tinygrad_repo/test/external/external_debug_metal_sd_conv.py +++ b/tinygrad_repo/test/external/external_debug_metal_sd_conv.py @@ -1,8 +1,8 @@ # ruff: noqa: E501 -from tinygrad.opt.kernel import Kernel, Opt, OptOps +from tinygrad.codegen.opt.kernel import Kernel, Opt, OptOps from tinygrad.dtype import dtypes from tinygrad.engine.realize import CompiledRunner, get_program -from tinygrad.opt.search import bufs_from_lin +from tinygrad.codegen.opt.search import bufs_from_lin from tinygrad.uop.ops import UOp, Ops from tinygrad.shape.shapetracker import ShapeTracker from tinygrad.shape.view import View @@ -35,7 +35,7 @@ k = Kernel(ast) k.apply_opts(opts) bufs = bufs_from_lin(k) -prg = CompiledRunner(get_program(k.get_optimized_ast(), k.opts)) +prg = CompiledRunner(get_program(k.ast, k.opts, k.applied_opts)) for i in range(10): speed = prg(bufs, var_vals={}, wait=True) diff --git a/tinygrad_repo/test/external/external_llm_eval.py b/tinygrad_repo/test/external/external_llm_eval.py index 619cd631f..ed617cfae 100644 --- a/tinygrad_repo/test/external/external_llm_eval.py +++ b/tinygrad_repo/test/external/external_llm_eval.py @@ -10,7 +10,7 @@ if __name__ == "__main__": model, kv = Transformer.from_gguf(Tensor.from_url(models["1B"]), max_context=4096) - tok = SimpleTokenizer(kv["tokenizer.ggml.tokens"]) + tok = SimpleTokenizer.from_gguf_kv(kv) bos_id: int = kv['tokenizer.ggml.bos_token_id'] eos_id: int = kv['tokenizer.ggml.eos_token_id'] diff --git a/tinygrad_repo/test/external/external_test_hcq_fuzz_failures.py b/tinygrad_repo/test/external/external_test_hcq_fuzz_failures.py index 641461c67..c8b6198e9 100644 --- a/tinygrad_repo/test/external/external_test_hcq_fuzz_failures.py +++ b/tinygrad_repo/test/external/external_test_hcq_fuzz_failures.py @@ -4,10 +4,10 @@ os.environ["VALIDATE_HCQ"]="1" import unittest, random import numpy as np -from tinygrad.opt.kernel import Kernel, KernelOptError +from tinygrad.codegen.opt.kernel import Kernel, KernelOptError from tinygrad.device import is_dtype_supported from tinygrad.uop.ops import UOp, Ops -from tinygrad.opt.search import Opt, OptOps +from tinygrad.codegen.opt.search import Opt, OptOps from tinygrad import Device, dtypes, Tensor from test.external.fuzz_linearizer import compare_linearizer, compare_states, get_fuzz_rawbuf_like diff --git a/tinygrad_repo/test/external/external_test_hip_compile.py b/tinygrad_repo/test/external/external_test_hip_compile.py index e99665eff..8b63acfb5 100644 --- a/tinygrad_repo/test/external/external_test_hip_compile.py +++ b/tinygrad_repo/test/external/external_test_hip_compile.py @@ -3,7 +3,7 @@ from tinygrad.runtime.support.hip_comgr import compile_hip from tinygrad import Tensor from tinygrad.device import Device from tinygrad.engine.schedule import create_schedule -from tinygrad.opt.kernel import Kernel +from tinygrad.codegen.opt.kernel import Kernel class TestHIPCompileSpeed(unittest.TestCase): @unittest.skipIf(Device.DEFAULT != "HIP", "only run on HIP") diff --git a/tinygrad_repo/test/external/external_test_nv.py b/tinygrad_repo/test/external/external_test_nv.py index cd0ca9a2b..8be738d95 100644 --- a/tinygrad_repo/test/external/external_test_nv.py +++ b/tinygrad_repo/test/external/external_test_nv.py @@ -2,11 +2,11 @@ import unittest, struct, array, ctypes from tinygrad import Device, dtypes, Tensor from tinygrad.helpers import to_mv from tinygrad.runtime.ops_nv import NVDevice, HWQueue -from tinygrad.opt.search import Opt, OptOps +from tinygrad.codegen.opt.search import Opt, OptOps from tinygrad.engine.realize import get_runner, CompiledRunner, get_program from test.external.fuzz_linearizer import get_fuzz_rawbufs -from tinygrad.opt.kernel import Kernel +from tinygrad.codegen.opt.kernel import Kernel from tinygrad.uop.ops import LazyOp, Ops, ReduceOps, BufferOps, MemBuffer from tinygrad.shape.shapetracker import ShapeTracker from tinygrad.shape.view import View diff --git a/tinygrad_repo/test/external/external_test_onnx_backend.py b/tinygrad_repo/test/external/external_test_onnx_backend.py index b290a6d8e..d48154b85 100644 --- a/tinygrad_repo/test/external/external_test_onnx_backend.py +++ b/tinygrad_repo/test/external/external_test_onnx_backend.py @@ -53,6 +53,7 @@ backend_test.exclude('test_dynamicquantizelinear_cpu') backend_test.exclude('test_dynamicquantizelinear_expanded_cpu') # BUG: ORT fails these with numerical error but we match ORT numerically +# see: https://onnx.ai/backend-scoreboard/onnxruntime_details_stable.html # tested in external_test_onnx_ops.py::TestMainOnnxOps.test_qlinearmatmul_2D_int8_float16 backend_test.exclude('test_qlinearmatmul_2D_int8_float16_cpu') # tested in external_test_onnx_ops.py::TestMainOnnxOps.test_qlinearmatmul_3D_int8_float16 @@ -65,6 +66,10 @@ backend_test.exclude('test_qlinearmatmul_3D_int8_float32_cpu') backend_test.exclude('test_maxunpool_export_with_output_shape_cpu') # tested in external_test_onnx_ops.py::TestMainOnnxOps.test_averagepool_3d_dilations_large_count_include_pad_is_1_ceil_mode_is_True backend_test.exclude('test_averagepool_3d_dilations_large_count_include_pad_is_1_ceil_mode_is_True_cpu') +# tested in external_test_onnx_ops.py::TestMainOnnxOps.test_resize_downsample_scales_linear_align_corners +backend_test.exclude('test_resize_downsample_scales_linear_align_corners_cpu') +# tested in external_test_onnx_ops.py::TestMainOnnxOps.test_resize_downsample_scales_cubic_align_corners +backend_test.exclude('test_resize_downsample_scales_cubic_align_corners_cpu') # about different dtypes if not is_dtype_supported(dtypes.float64): @@ -129,7 +134,6 @@ backend_test.exclude('test_simple_rnn_*') # no control flow # control flow uses AttributeProto.GRAPH -backend_test.exclude('test_if_*') backend_test.exclude('test_loop*') backend_test.exclude('test_range_float_type_positive_delta_expanded_cpu') # requires loop backend_test.exclude('test_affine_grid_2d_align_corners_expanded_cpu') @@ -165,10 +169,6 @@ backend_test.exclude('test_deform_conv_*') backend_test.exclude('test_lppool_*') backend_test.exclude('test_scan_*') backend_test.exclude('test_split_to_sequence_*') -backend_test.exclude('test_resize_downsample_scales_cubic_*') # unsure how to implement cubic -backend_test.exclude('test_resize_downsample_sizes_cubic_*') # unsure how to implement cubic -backend_test.exclude('test_resize_upsample_scales_cubic_*') # unsure how to implement cubic -backend_test.exclude('test_resize_upsample_sizes_cubic_*') # unsure how to implement cubic backend_test.exclude('test_ai_onnx_ml_tree_ensemble_*') # https://github.com/onnx/onnx/blob/main/onnx/reference/ops/aionnxml/op_tree_ensemble.py#L121 # rest of the failing tests @@ -178,8 +178,12 @@ backend_test.exclude('test_resize_tf_crop_and_resize_axes_3_2_cpu') # tf_crop_an backend_test.exclude('test_resize_tf_crop_and_resize_extrapolation_value_cpu') # tf_crop_and_resize value not implemented backend_test.exclude('test_resize_downsample_scales_linear_antialias_cpu') # antialias not implemented backend_test.exclude('test_resize_downsample_sizes_linear_antialias_cpu') # antialias not implemented +backend_test.exclude('test_resize_downsample_scales_cubic_antialias_cpu') # antialias not implemented +backend_test.exclude('test_resize_downsample_sizes_cubic_antialias_cpu') # antialias not implemented backend_test.exclude('test_ai_onnx_ml_label_encoder_tensor_value_only_mapping_cpu') # bad data type string backend_test.exclude('test_ai_onnx_ml_label_encoder_tensor_mapping_cpu') # bad data type string +backend_test.exclude('test_if_opt_cpu') # ValueError: 13 is not a valid AttributeType +backend_test.exclude('test_if_seq_cpu') # NotImplementedError: op='SequenceConstruct' is not supported backend_test.exclude('test_scatternd_min_cpu') # min not yet supported backend_test.exclude('test_scatternd_max_cpu') # max not yet supported diff --git a/tinygrad_repo/test/external/external_test_onnx_ops.py b/tinygrad_repo/test/external/external_test_onnx_ops.py index 431743118..e4be34fa5 100644 --- a/tinygrad_repo/test/external/external_test_onnx_ops.py +++ b/tinygrad_repo/test/external/external_test_onnx_ops.py @@ -75,6 +75,68 @@ class TestMainOnnxOps(TestOnnxOps): outputs = ["y"] self.helper_test_single_op("Gather", inputs, attributes, outputs) + # NOTE: resize OP is sensitive to numerical errors + def _test_resize_scales(self, scale_values, **kwargs): + for sc in scale_values: + for ct_mode in ["half_pixel", "align_corners", "asymmetric", "pytorch_half_pixel", "half_pixel_symmetric"]: + with self.subTest(coordinate_transformation_mode=ct_mode, scale=sc, **kwargs): + X = np.array([[[[1, 2, 3, 4], + [5, 6, 7, 8], + [9,10,11,12]]]], dtype=np.float32) + scales = np.array([1.0, 1.0, sc, sc], dtype=np.float32) + inputs = {"X": X, "roi": np.array([], dtype=np.float32), "scales": scales} + attributes = {"coordinate_transformation_mode": ct_mode, **kwargs} + outputs = ["out"] + self.helper_test_single_op("Resize", inputs, attributes, outputs) + + def test_resize_linear_mode(self): + self._test_resize_scales([0.01, 0.25, 0.5, 0.51, 0.6, 1.0, 1.5, 2.0, 3.5, 20.0], mode="linear") + + def test_resize_nearest_mode(self): + # excluded 3.5 because some values divide into slight numerical differences, which when rounded gives wrong results + self._test_resize_scales([0.01, 0.25, 0.5, 0.51, 0.6, 1.0, 1.5, 2.0, 20.0], mode="nearest") + + def test_resize_cubic_mode(self): + self._test_resize_scales([0.01, 0.25, 0.5, 0.51, 0.6, 1.0, 1.5, 2.0, 3.5, 20.0], mode="cubic", exclude_outside=1) + self._test_resize_scales([0.01, 0.25, 0.5, 0.51, 0.6, 1.0, 1.5, 2.0, 3.5, 20.0], mode="cubic", exclude_outside=0) + + def _test_if(self, then_value, else_value): + then_out = onnx.helper.make_tensor_value_info("res", onnx.TensorProto.FLOAT, then_value.shape) + else_out = onnx.helper.make_tensor_value_info("res", onnx.TensorProto.FLOAT, else_value.shape) + + then_const_node = onnx.helper.make_node("Constant", inputs=[], outputs=["res"], value=onnx.numpy_helper.from_array(then_value)) + else_const_node = onnx.helper.make_node("Constant", inputs=[], outputs=["res"], value=onnx.numpy_helper.from_array(else_value)) + + then_body = onnx.helper.make_graph([then_const_node], "then_body", [], [then_out]) + else_body = onnx.helper.make_graph([else_const_node], "else_body", [], [else_out]) + + self.helper_test_single_op("If", {"cond": np.array(False).astype(bool)}, {"then_branch": then_body, "else_branch": else_body}, ["res"]) + self.helper_test_single_op("If", {"cond": np.array(True).astype(bool)}, {"then_branch": then_body, "else_branch": else_body}, ["res"]) + + def test_if_different_shapes_broadcastable(self): + self._test_if(np.array([[1], [2]]).astype(np.float32), np.array([[6, 5, 4, 3, 2, 1]]).astype(np.float32)) + + def test_if_different_shapes_not_broadcastable(self): + self._test_if(np.array([[1, 2, 3], [4, 5, 6]]).astype(np.float32), np.array([[6, 5, 4, 3, 2, 1]]).astype(np.float32)) + + def test_resize_downsample_scales_linear_align_corners(self): + # https://github.com/onnx/onnx/blob/main/docs/Operators.md#examples-131 + X = np.array([[[[1, 2, 3, 4], [5, 6, 7, 8]]]], dtype=np.float32) + scales = np.array([1.0, 1.0, 0.6, 0.6], dtype=np.float32) + inputs = {"X": X, "roi": np.array([], dtype=np.float32), "scales": scales} + attributes = {"mode": "linear", "coordinate_transformation_mode": "align_corners"} + outputs = ["out"] + self.helper_test_single_op("Resize", inputs, attributes, outputs) + + def test_resize_downsample_scales_cubic_align_corners(self): + # https://github.com/onnx/onnx/blob/main/docs/Operators.md#examples-131 + X = np.array([[[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]]], dtype=np.float32) + scales = np.array([1.0, 1.0, 0.8, 0.8], dtype=np.float32) + inputs = {"X": X, "roi": np.array([], dtype=np.float32), "scales": scales} + attributes = {"mode": "cubic", "coordinate_transformation_mode": "align_corners"} + outputs = ["out"] + self.helper_test_single_op("Resize", inputs, attributes, outputs) + def test_maxunpool_export_with_output_shape(self): # https://github.com/onnx/onnx/blob/main/docs/Operators.md#examples-91 xT = np.array([[[[5, 6], [7, 8]]]], dtype=np.float32) @@ -251,7 +313,6 @@ class TestTrainingOnnxOps(TestOnnxOps): outputs = ["X_out", "V_out"] self._validate_training("Momentum", onnx_fxn, inputs, attributes, outputs) - @unittest.expectedFailure # TODO: regression from removing StrEnum in Domain def test_adam_t_greater_than_zero(self): from onnx.backend.test.case.node.adam import apply_adam for t in [1, 3, 100]: diff --git a/tinygrad_repo/test/external/external_test_onnx_runner.py b/tinygrad_repo/test/external/external_test_onnx_runner.py index 88e0233fc..f0d8941b4 100644 --- a/tinygrad_repo/test/external/external_test_onnx_runner.py +++ b/tinygrad_repo/test/external/external_test_onnx_runner.py @@ -3,8 +3,7 @@ import numpy as np from tinygrad import dtypes, Tensor from tinygrad.uop.ops import Ops from tinygrad.device import is_dtype_supported -from extra.onnx import data_types -from tinygrad.frontend.onnx import OnnxRunner +from tinygrad.frontend.onnx import OnnxRunner, OnnxDataType from hypothesis import given, strategies as st # copied from test_const_folding.py @@ -86,8 +85,8 @@ class TestOnnxRunner(unittest.TestCase): output = runner({'inp': Tensor([1])})['output'] np.testing.assert_equal(output.numpy(), weights + 1) -all_dtypes = list(data_types.keys()) -device_supported_dtypes = {odt for odt, dtype in data_types.items() if is_dtype_supported(dtype)} +all_dtypes = list(OnnxDataType) +device_supported_dtypes = {odt for odt in OnnxDataType if is_dtype_supported(odt.to_dtype())} class TestOnnxRunnerDtypes(unittest.TestCase): """ @@ -95,7 +94,7 @@ class TestOnnxRunnerDtypes(unittest.TestCase): External tensors (inputs) preserve their original dtype - user must ensure compatibility with device. """ def _get_expected_dtype(self, onnx_dtype: int, is_input: bool): - true_dtype = data_types[onnx_dtype] + true_dtype = OnnxDataType(onnx_dtype).to_dtype() # inputs always preserve their true dtype. if is_input: return true_dtype diff --git a/tinygrad_repo/test/external/external_test_simple_tokenizer.py b/tinygrad_repo/test/external/external_test_simple_tokenizer.py index b3e33e0d4..9c3ca8f42 100644 --- a/tinygrad_repo/test/external/external_test_simple_tokenizer.py +++ b/tinygrad_repo/test/external/external_test_simple_tokenizer.py @@ -1,17 +1,19 @@ from transformers import AutoTokenizer from datasets import load_dataset -from tinygrad.apps.llm import SimpleTokenizer -from tinygrad.helpers import tqdm, getenv +from tinygrad.apps.llm import SimpleTokenizer, gpt2_decode_vocab, get_llama_re +from tinygrad.helpers import tqdm, getenv, partition # use ALLOW_FAILED=-1 to go over the entire dataset without printing. if __name__ == "__main__": base_tokenizer = AutoTokenizer.from_pretrained("NousResearch/Meta-Llama-3-8B-Instruct") - vocab_words = [ word for word, _ in sorted(base_tokenizer.get_vocab().items(), key=lambda t: t[1]) ] + special_tokens, normal_tokens = partition(((t, tid) for t, tid in base_tokenizer.vocab.items()), + lambda e: e[1] in base_tokenizer.all_special_ids) inv_vocab = { tid: word for word, tid in base_tokenizer.get_vocab().items() } - simple_tokenizer = SimpleTokenizer(vocab_words) + simple_tokenizer = SimpleTokenizer(get_llama_re(), gpt2_decode_vocab(dict(normal_tokens)), dict(special_tokens)) color_codes = [ 91, 92, 94, 93, 95 ] - def color_tokens(tids): return "".join(f"\033[{color_codes[i%len(color_codes)]}m{inv_vocab[t]}" for i, t in enumerate(tids)) + "\033[0m" + def color_tokens(tids): + return "".join(f"\033[{color_codes[i%len(color_codes)]}m{base_tokenizer.decode([t])}" for i, t in enumerate(tids)) + "\033[0m" ds = load_dataset("OpenAssistant/oasst1") allow_failed = getenv("ALLOW_FAILED", 10) diff --git a/tinygrad_repo/test/external/external_test_train_gpt2.py b/tinygrad_repo/test/external/external_test_train_gpt2.py index 2cac47941..4994ad4ca 100644 --- a/tinygrad_repo/test/external/external_test_train_gpt2.py +++ b/tinygrad_repo/test/external/external_test_train_gpt2.py @@ -2,11 +2,11 @@ import unittest from tinygrad.uop.ops import UOp, Ops -from tinygrad.opt.search import Opt, OptOps +from tinygrad.codegen.opt.search import Opt, OptOps from tinygrad.dtype import dtypes from tinygrad.shape.shapetracker import ShapeTracker from tinygrad.shape.view import View -from tinygrad.opt.kernel import Kernel +from tinygrad.codegen.opt.kernel import Kernel from test.external.fuzz_linearizer import run_linearizer diff --git a/tinygrad_repo/test/external/fuzz_fast_idiv.py b/tinygrad_repo/test/external/fuzz_fast_idiv.py index 713e1f35d..02fda9ee9 100644 --- a/tinygrad_repo/test/external/fuzz_fast_idiv.py +++ b/tinygrad_repo/test/external/fuzz_fast_idiv.py @@ -1,33 +1,25 @@ import random -from z3 import Int, Solver, sat -from tinygrad import dtypes, Device -from tinygrad.uop.ops import UOp, Ops, UPat, graph_rewrite, PatternMatcher -from tinygrad.codegen.optional import fast_idiv +import z3 +from tinygrad import dtypes +from tinygrad.uop.spec import uops_to_z3, z3_cdiv +from tinygrad.uop.ops import UOp +from tinygrad.uop.decompositions import fast_idiv random.seed(42) -z3_renderer = PatternMatcher([ - (UPat((Ops.DEFINE_VAR, Ops.SPECIAL), name="x"), lambda x: UOp(Ops.NOOP, arg=x.arg[0])), - # Because fast_idiv only works for non-negative integers we can emulate machine arithmetic with modulo operations. - (UPat(Ops.SHR, src=UPat(Ops.NOOP), name="x"), lambda x: UOp(Ops.NOOP, arg=f"(({x.src[0].arg}/(2**{x.src[1].arg}))%{dtypes.max(x.dtype)+1})")), - (UPat(Ops.MUL, src=UPat(Ops.NOOP), name="x"), lambda x: UOp(Ops.NOOP, arg=f"(({x.src[0].arg}*{x.src[1].arg})%{dtypes.max(x.dtype)+1})")), - (UPat((Ops.CONST, Ops.VCONST), name="x"), lambda x: UOp(Ops.NOOP, arg=str(x.arg))), - (UPat(Ops.CAST, src=UPat(Ops.NOOP), name="x"), lambda x: UOp(Ops.NOOP, arg=f"{x.src[0].arg}")), -]) - -def render(self) -> str: - ret = graph_rewrite(self.simplify(), z3_renderer) - return ret.arg if ret.op is Ops.NOOP else str(ret) - +powers_of_two = [2**i for i in range(64)] if __name__ == "__main__": - x = Int('x') - for _ in range(10_000): + for i in range(10_000): + if i % 1000 == 0: + print(f"Progress: {i}") dt = random.choice(dtypes.ints) - u = UOp(Ops.DEFINE_VAR, dt, arg=('x', 0, random.randint(1, dtypes.max(dt))), src=()) + u = UOp.variable('x', random.randint(dt.min, 0), random.randint(1, dt.max), dtype=dt) d = random.randint(1, max(1, u.arg[2])) - - expr = fast_idiv(Device[Device.DEFAULT].renderer, u, d) + if d in powers_of_two: continue + expr = fast_idiv(None, u, d) if expr is None: continue - solver = Solver() - solver.add(x>=u.arg[1], x<=u.arg[2]) - if solver.check(eval(render(expr)) != x/d) == sat: - assert False, f"Failed: {render(expr)} != x//{d} at x={solver.model()[x]}\nx={u}\nd={d}" + + solver = z3.Solver() + z3_expr, x =uops_to_z3(solver, expr, u) + + if solver.check(z3_expr != z3_cdiv(x, d)) == z3.sat: + assert False, f"Failed: {expr.render()} != x//{d} at x={solver.model()}\nx={u}\nd={d}\n{z3_expr=}\n{x/d=}" diff --git a/tinygrad_repo/test/external/fuzz_linearizer.py b/tinygrad_repo/test/external/fuzz_linearizer.py index 5c76dde1f..53a45a51a 100644 --- a/tinygrad_repo/test/external/fuzz_linearizer.py +++ b/tinygrad_repo/test/external/fuzz_linearizer.py @@ -21,9 +21,9 @@ if os.getenv("VALIDATE_HCQ", 0) != 0: from tinygrad import Tensor, Device, dtypes from tinygrad.tensor import _to_np_dtype -from tinygrad.opt.kernel import Kernel -from tinygrad.opt.kernel import Opt, OptOps -from tinygrad.opt.search import get_kernel_actions, bufs_from_lin +from tinygrad.codegen.opt.kernel import Kernel +from tinygrad.codegen.opt.kernel import Opt, OptOps +from tinygrad.codegen.opt.search import get_kernel_actions, bufs_from_lin from tinygrad.engine.realize import CompiledRunner from tinygrad.helpers import getenv, from_mv, prod, colored, Context, DEBUG, Timing from tinygrad.uop.ops import UOp, Ops diff --git a/tinygrad_repo/test/external/fuzz_symbolic.py b/tinygrad_repo/test/external/fuzz_symbolic.py index 41970a932..0e87883d6 100644 --- a/tinygrad_repo/test/external/fuzz_symbolic.py +++ b/tinygrad_repo/test/external/fuzz_symbolic.py @@ -1,8 +1,8 @@ import random, operator import z3 from tinygrad import Variable, dtypes -from tinygrad.uop.ops import UOp, graph_rewrite -from tinygrad.uop.spec import z3_renderer +from tinygrad.uop.ops import UOp +from tinygrad.uop.spec import uops_to_z3 from tinygrad.helpers import DEBUG, Context seed = random.randint(0, 100) @@ -57,8 +57,7 @@ if __name__ == "__main__": solver = z3.Solver() solver.set(timeout=5000) # some expressions take very long verify, but its very unlikely they actually return sat - z3_sink = graph_rewrite(expr.sink(simplified_expr, u1, u2, u3), z3_renderer, ctx=(solver, {})) - z3_expr, z3_simplified_expr = z3_sink.src[0].arg, z3_sink.src[1].arg + z3_expr, z3_simplified_expr, v1, v2, v3 = uops_to_z3(solver, expr, simplified_expr, u1, u2, u3) check = solver.check(z3_simplified_expr != z3_expr) if check == z3.unknown and DEBUG>=1: skipped += 1 @@ -69,7 +68,6 @@ if __name__ == "__main__": f"expr = {expr.render(simplify=False)}\n") elif check == z3.sat: m = solver.model() - v1, v2, v3 = z3_sink.src[2].arg, z3_sink.src[3].arg, z3_sink.src[4].arg n1, n2, n3 = m[v1], m[v2], m[v3] u1_val, u2_val, u3_val = u1.const_like(n1.as_long()), u2.const_like(n2.as_long()), u3.const_like(n3.as_long()) with Context(CORRECT_DIVMOD_FOLDING=1): diff --git a/tinygrad_repo/test/external/process_replay/process_replay.py b/tinygrad_repo/test/external/process_replay/process_replay.py index b6615914e..0a82ac31c 100644 --- a/tinygrad_repo/test/external/process_replay/process_replay.py +++ b/tinygrad_repo/test/external/process_replay/process_replay.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 # compare kernels created by HEAD against master import os, multiprocessing, logging, pickle, sqlite3, difflib, warnings, itertools, functools, base64, codecs +from dataclasses import replace from typing import Callable, Any ASSERT_DIFF = int((flag:="[pr]") in os.getenv("COMMIT_MESSAGE", flag) or flag in os.getenv("PR_TITLE", flag)) @@ -11,7 +12,9 @@ try: from tinygrad.renderer import Renderer, ProgramSpec from tinygrad.engine.realize import get_program from tinygrad.uop.ops import UOp, Ops, KernelInfo + from tinygrad.codegen.opt.kernel import Opt from tinygrad.helpers import VERSION, Context, ContextVar, colored, db_connection, getenv, tqdm + from tinygrad.device import Device except ImportError as e: print(repr(e)) exit(int(ASSERT_DIFF)) @@ -47,9 +50,13 @@ def replay_kernelize(ret:dict[UOp, UOp], big_sink:UOp) -> tuple[str, str, tuple[ return "\n".join([f"{len(asts)} kernels", *asts]) return to_str(new_sink), to_str(ret[big_sink]), (big_sink,) -def replay_get_program(p:ProgramSpec, ast:UOp, renderer:Renderer) -> tuple[str, str, tuple[Any, ...]]: - input_ast = ast.replace(arg=KernelInfo(opts_to_apply=p.applied_opts, name=p.name)) if ast.arg is None else ast - p2 = get_program(input_ast, renderer) +def replay_get_program(p:ProgramSpec, ast:UOp, renderer:Renderer|None=None, opts:list[Opt]|None=None) -> tuple[str, str, tuple[Any, ...]]: + # NOTE: this always uses the opts_to_apply path + sink_arg = ast.arg or KernelInfo(opts_to_apply=p.applied_opts) + input_ast = ast.replace(arg=replace(sink_arg, name=p.name)) + # if no renderer was provided, open the device to get it + if renderer is None: renderer = Device[p.device].renderer + p2 = get_program(input_ast, renderer=renderer) def to_str(ret:ProgramSpec) -> str: # PYTHON renderer pickles UOps, first unpickle and decode here if p.device.startswith("PYTHON"): return "\n".join([str(x) for x in pickle.loads(base64.b64decode(ret.src))]) @@ -74,6 +81,7 @@ def diff(offset:int, fxns:dict[str, Callable[..., tuple|None]]) -> None: warnings.warn(f"detected changes in over {MAX_DIFF_PCT}%. skipping further diff generation.", ProcessReplayWarning) early_stop.set() break + name, loc = "", "" try: name, args, kwargs, ctx_vals, loc, ret = pickle.loads(row[0]) ctx_vars = {k:v.value for k,v in ctx_vals.items() if k != "DEBUG" and (var:=ContextVar._cache.get(k)) is not None and var.value != v.value} @@ -90,8 +98,7 @@ def diff(offset:int, fxns:dict[str, Callable[..., tuple|None]]) -> None: warnings.warn("PROCESS REPLAY DETECTED CHANGE", ProcessReplayWarning) except Exception as e: changed += 1 - warnings.warn(e, ProcessReplayWarning) - conn.commit() + warnings.warn(f"{name=} {loc=} {e=}", ProcessReplayWarning) cur.close() # *** generic runner to map rows of a table to a function in parallel @@ -103,12 +110,11 @@ def _pmap(fxns:dict[str, Callable]) -> None: except sqlite3.OperationalError: raise RuntimeError(f"{TABLE_NAME} isn't accessible in master, did DB_VERSION change?") finally: - conn.commit() cur.close() with multiprocessing.get_context("spawn").Pool(multiprocessing.cpu_count()) as pool: - inputs = list(range(0, row_count, PAGE_SIZE)) - list(tqdm(pool.imap_unordered(functools.partial(diff, fxns=fxns), inputs), total=len(inputs))) + bar = tqdm(total=row_count) + for _ in pool.imap_unordered(functools.partial(diff, fxns=fxns), range(0, row_count, PAGE_SIZE)): bar.update(PAGE_SIZE) pool.close() pool.join() pool.terminate() @@ -123,5 +129,5 @@ if __name__ == "__main__": logging.info(f"running process replay with {ASSERT_DIFF=}") try: _pmap(replayers) except Exception as e: - logging.info("process replay err", e) + logging.info(f"process replay err: {e}") exit(int(ASSERT_DIFF)) diff --git a/tinygrad_repo/test/external/speed_beam_v_hcopt.py b/tinygrad_repo/test/external/speed_beam_v_hcopt.py index e73c6466d..b241eb1b6 100644 --- a/tinygrad_repo/test/external/speed_beam_v_hcopt.py +++ b/tinygrad_repo/test/external/speed_beam_v_hcopt.py @@ -1,7 +1,7 @@ from tinygrad import Device from tinygrad.helpers import getenv, DEBUG, BEAM -from tinygrad.opt.search import beam_search, bufs_from_lin -from tinygrad.opt.heuristic import hand_coded_optimizations +from tinygrad.codegen.opt.search import beam_search, bufs_from_lin +from tinygrad.codegen.opt.heuristic import hand_coded_optimizations from extra.optimization.helpers import load_worlds, ast_str_to_lin, time_linearizer if __name__ == "__main__": diff --git a/tinygrad_repo/test/external/speed_compare_amd_am.py b/tinygrad_repo/test/external/speed_compare_amd_am.py index fb67f5eb6..1af97f8ac 100644 --- a/tinygrad_repo/test/external/speed_compare_amd_am.py +++ b/tinygrad_repo/test/external/speed_compare_amd_am.py @@ -2,8 +2,8 @@ from tinygrad import Device, dtypes from tinygrad.helpers import getenv, colorize_float, DEBUG from extra.optimization.helpers import load_worlds, ast_str_to_lin from test.external.fuzz_linearizer import get_fuzz_rawbufs -from tinygrad.opt.heuristic import hand_coded_optimizations -from tinygrad.opt.search import bufs_from_lin +from tinygrad.codegen.opt.heuristic import hand_coded_optimizations +from tinygrad.codegen.opt.search import bufs_from_lin from tinygrad.engine.realize import CompiledRunner, get_program from tinygrad.tensor import _to_np_dtype from tinygrad.runtime.ops_amd import AMDDevice diff --git a/tinygrad_repo/test/external/speed_compare_cuda_nv.py b/tinygrad_repo/test/external/speed_compare_cuda_nv.py index 8cf6d1cef..fdbab3c18 100644 --- a/tinygrad_repo/test/external/speed_compare_cuda_nv.py +++ b/tinygrad_repo/test/external/speed_compare_cuda_nv.py @@ -2,8 +2,8 @@ from tinygrad import Device, dtypes from tinygrad.helpers import getenv, colorize_float from extra.optimization.helpers import load_worlds, ast_str_to_lin from test.external.fuzz_linearizer import get_fuzz_rawbufs -from tinygrad.opt.heuristic import hand_coded_optimizations -from tinygrad.opt.search import bufs_from_lin +from tinygrad.codegen.opt.heuristic import hand_coded_optimizations +from tinygrad.codegen.opt.search import bufs_from_lin from tinygrad.engine.realize import CompiledRunner, get_program from tinygrad.tensor import _to_np_dtype import numpy as np diff --git a/tinygrad_repo/test/external/speed_compare_cuda_ptx.py b/tinygrad_repo/test/external/speed_compare_cuda_ptx.py index 7f3fdfa5b..a58d4a3a0 100644 --- a/tinygrad_repo/test/external/speed_compare_cuda_ptx.py +++ b/tinygrad_repo/test/external/speed_compare_cuda_ptx.py @@ -1,10 +1,10 @@ import itertools from tinygrad import Device from tinygrad.engine.realize import CompiledRunner, get_program -from tinygrad.opt.heuristic import hand_coded_optimizations +from tinygrad.codegen.opt.heuristic import hand_coded_optimizations from tinygrad.helpers import getenv, colorize_float from extra.optimization.helpers import load_worlds, ast_str_to_lin -from tinygrad.opt.search import bufs_from_lin +from tinygrad.codegen.opt.search import bufs_from_lin from tinygrad.runtime.ops_cuda import PTXCompiler, PTXRenderer, CUDACompiler if __name__ == "__main__": diff --git a/tinygrad_repo/test/external/verify_kernel.py b/tinygrad_repo/test/external/verify_kernel.py index 5a251ce8a..858305181 100644 --- a/tinygrad_repo/test/external/verify_kernel.py +++ b/tinygrad_repo/test/external/verify_kernel.py @@ -3,7 +3,7 @@ from collections import defaultdict from extra.optimization.helpers import kern_str_to_lin, time_linearizer from test.external.fuzz_linearizer import compare_linearizer from tinygrad.helpers import colored -from tinygrad.opt.kernel import Kernel +from tinygrad.codegen.opt.kernel import Kernel # Use this with the LOGKERNS options to verify that all executed kernels are valid and evaluate to the same ground truth results diff --git a/tinygrad_repo/test/mockgpu/amd/amddriver.py b/tinygrad_repo/test/mockgpu/amd/amddriver.py index 2cac02e5a..9933fbba2 100644 --- a/tinygrad_repo/test/mockgpu/amd/amddriver.py +++ b/tinygrad_repo/test/mockgpu/amd/amddriver.py @@ -87,16 +87,19 @@ class AMDDriver(VirtDriver): functools.partial(TextFileDesc, text=gpu_props.format(drm_render_minor=gpu_id))), VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0', functools.partial(DirFileDesc, child_names=[str(am.GC_HWID), str(am.SDMA0_HWID), str(am.NBIF_HWID)])), + VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.GC_HWID}', functools.partial(DirFileDesc, child_names=['0'])), VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.GC_HWID}/0/major', functools.partial(TextFileDesc, text='11')), VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.GC_HWID}/0/minor', functools.partial(TextFileDesc, text='0')), VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.GC_HWID}/0/revision', functools.partial(TextFileDesc, text='0')), VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.GC_HWID}/0/base_addr', functools.partial(TextFileDesc, text='0x00001260\n0x0000A000\n0x0001C000\n0x02402C00')), + VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.SDMA0_HWID}', functools.partial(DirFileDesc, child_names=['0'])), VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.SDMA0_HWID}/0/major', functools.partial(TextFileDesc, text='6')), VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.SDMA0_HWID}/0/minor', functools.partial(TextFileDesc, text='0')), VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.SDMA0_HWID}/0/revision', functools.partial(TextFileDesc, text='0')), VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.SDMA0_HWID}/0/base_addr', functools.partial(TextFileDesc, text='0x00001260\n0x0000A000\n0x0001C000\n0x02402C00')), + VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.NBIF_HWID}', functools.partial(DirFileDesc, child_names=['0'])), VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.NBIF_HWID}/0/major', functools.partial(TextFileDesc, text='4')), VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.NBIF_HWID}/0/minor', functools.partial(TextFileDesc, text='3')), VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.NBIF_HWID}/0/revision', functools.partial(TextFileDesc, text='0')), diff --git a/tinygrad_repo/test/mockgpu/amd/amdgpu.py b/tinygrad_repo/test/mockgpu/amd/amdgpu.py index e46e894ad..152ee2e91 100644 --- a/tinygrad_repo/test/mockgpu/amd/amdgpu.py +++ b/tinygrad_repo/test/mockgpu/amd/amdgpu.py @@ -1,7 +1,8 @@ import ctypes, time from test.mockgpu.gpu import VirtGPU +from test.mockgpu.helpers import _try_dlopen_remu from tinygrad.helpers import getbits, to_mv, init_c_struct_t -import tinygrad.runtime.autogen.amd_gpu as amd_gpu, tinygrad.runtime.autogen.am.pm4_nv as pm4, tinygrad.runtime.autogen.am.soc21 as soc21 +import tinygrad.runtime.autogen.amd_gpu as amd_gpu, tinygrad.runtime.autogen.am.pm4_nv as pm4 SDMA_MAX_COPY_SIZE = 0x400000 @@ -14,6 +15,9 @@ regSQ_THREAD_TRACE_BUF0_SIZE = 0x39e9 + amd_gpu.GC_BASE__INST0_SEG1 regSQ_THREAD_TRACE_WPTR = 0x39ef + amd_gpu.GC_BASE__INST0_SEG1 regSQ_THREAD_TRACE_STATUS = 0x39f4 + amd_gpu.GC_BASE__INST0_SEG1 +class SQTT_EVENTS: + THREAD_TRACE_FINISH = 0x00000037 + CACHE_FLUSH_AND_INV_TS_EVENT = 0x14 WAIT_REG_MEM_FUNCTION_ALWAYS = 0 @@ -21,19 +25,6 @@ WAIT_REG_MEM_FUNCTION_EQ = 3 # == WAIT_REG_MEM_FUNCTION_NEQ = 4 # != WAIT_REG_MEM_FUNCTION_GEQ = 5 # >= -REMU_PATHS = ["extra/remu/target/release/libremu.so", "libremu.so", "/usr/local/lib/libremu.so", - "extra/remu/target/release/libremu.dylib", "libremu.dylib", "/usr/local/lib/libremu.dylib", "/opt/homebrew/lib/libremu.dylib"] -def _try_dlopen_remu(): - for path in REMU_PATHS: - try: - remu = ctypes.CDLL(path) - remu.run_asm.restype = ctypes.c_int32 - remu.run_asm.argtypes = [ctypes.c_void_p, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_uint32, - ctypes.c_uint32, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_void_p] - except OSError: pass - else: return remu - print("Could not find libremu.so") - return None remu = _try_dlopen_remu() def create_sdma_packets(): @@ -208,7 +199,7 @@ class PM4Executor(AMDQueue): assert n == 0 event_dw = self._next_dword() match (event_dw & 0xFF): # event type - case soc21.THREAD_TRACE_FINISH: + case SQTT_EVENTS.THREAD_TRACE_FINISH: old_idx = self.gpu.regs.grbm_index for se in range(self.gpu.regs.n_se): self.gpu.regs.grbm_index = 0b011 << 29 | se << 16 # select se, broadcast sa and instance diff --git a/tinygrad_repo/test/mockgpu/cuda/cuda.py b/tinygrad_repo/test/mockgpu/cuda/cuda.py index a5dd5fe0c..daf8db6f9 100644 --- a/tinygrad_repo/test/mockgpu/cuda/cuda.py +++ b/tinygrad_repo/test/mockgpu/cuda/cuda.py @@ -2,16 +2,14 @@ from __future__ import annotations from typing import Any import ctypes, time from tinygrad.runtime.autogen import cuda as orig_cuda +from test.mockgpu.helpers import _try_dlopen_gpuocelot from tinygrad.helpers import mv_address for attr in dir(orig_cuda): if not attr.startswith('__'): globals()[attr] = getattr(orig_cuda, attr) -try: - gpuocelot_lib = ctypes.CDLL(ctypes.util.find_library("gpuocelot")) - gpuocelot_lib.ptx_run.argtypes = [ctypes.c_char_p, ctypes.c_int, ctypes.POINTER(ctypes.c_void_p), ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int] # noqa: E501 -except Exception: pass +gpuocelot_lib = _try_dlopen_gpuocelot() # Global state class CUDAState: @@ -130,7 +128,10 @@ def cuModuleUnload(hmod) -> int: def cuLaunchKernel(f, gx: int, gy: int, gz: int, lx: int, ly: int, lz: int, sharedMemBytes: int, hStream: Any, kernelParams: Any, extra: Any) -> int: cargs = [ctypes.cast(getattr(extra, field[0]), ctypes.c_void_p) for field in extra._fields_] - gpuocelot_lib.ptx_run(ctypes.cast(f.value, ctypes.c_char_p), len(cargs), (ctypes.c_void_p*len(cargs))(*cargs), lx, ly, lz, gx, gy, gz, 0) + try: gpuocelot_lib.ptx_run(ctypes.cast(f.value, ctypes.c_char_p), len(cargs), (ctypes.c_void_p*len(cargs))(*cargs), lx, ly, lz, gx, gy, gz, 0) + except Exception as e: + print("Error in cuLaunchKernel:", e) + return orig_cuda.CUDA_ERROR_LAUNCH_FAILED return orig_cuda.CUDA_SUCCESS def cuDeviceComputeCapability(major, minor, dev: int) -> int: diff --git a/tinygrad_repo/test/mockgpu/helpers.py b/tinygrad_repo/test/mockgpu/helpers.py new file mode 100644 index 000000000..c91672fec --- /dev/null +++ b/tinygrad_repo/test/mockgpu/helpers.py @@ -0,0 +1,29 @@ +import ctypes, ctypes.util + +def _try_dlopen_gpuocelot(): + GPUOCELOT_PATHS = [ctypes.util.find_library("gpuocelot")] if ctypes.util.find_library("gpuocelot") is not None else [] + GPUOCELOT_PATHS += ["libgpuocelot.so", "/usr/local/lib/libgpuocelot.so", + "libgpuocelot.dylib", "/usr/local/lib/libgpuocelot.dylib", "/opt/homebrew/lib/libgpuocelot.dylib"] + for path in GPUOCELOT_PATHS: + try: + gpuocelot_lib = ctypes.CDLL(path) + gpuocelot_lib.ptx_run.argtypes = [ctypes.c_char_p, ctypes.c_int, ctypes.POINTER(ctypes.c_void_p), ctypes.c_int, ctypes.c_int, + ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int] + except OSError: pass + else: return gpuocelot_lib + print("Could not find libgpuocelot.so") + return None + +def _try_dlopen_remu(): + REMU_PATHS = ["extra/remu/target/release/libremu.so", "libremu.so", "/usr/local/lib/libremu.so", + "extra/remu/target/release/libremu.dylib", "libremu.dylib", "/usr/local/lib/libremu.dylib", "/opt/homebrew/lib/libremu.dylib"] + for path in REMU_PATHS: + try: + remu = ctypes.CDLL(path) + remu.run_asm.restype = ctypes.c_int32 + remu.run_asm.argtypes = [ctypes.c_void_p, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_uint32, + ctypes.c_uint32, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_void_p] + except OSError: pass + else: return remu + print("Could not find libremu.so") + return None diff --git a/tinygrad_repo/test/mockgpu/nv/nvgpu.py b/tinygrad_repo/test/mockgpu/nv/nvgpu.py index 76239c152..deff54bd1 100644 --- a/tinygrad_repo/test/mockgpu/nv/nvgpu.py +++ b/tinygrad_repo/test/mockgpu/nv/nvgpu.py @@ -2,6 +2,7 @@ import ctypes, ctypes.util, time import tinygrad.runtime.autogen.nv_gpu as nv_gpu from enum import Enum, auto from test.mockgpu.gpu import VirtGPU +from test.mockgpu.helpers import _try_dlopen_gpuocelot from tinygrad.helpers import to_mv, init_c_struct_t def make_qmd_struct_type(): @@ -16,10 +17,7 @@ def make_qmd_struct_type(): qmd_struct_t = make_qmd_struct_type() assert ctypes.sizeof(qmd_struct_t) == 0x40 * 4 -try: - gpuocelot_lib = ctypes.CDLL(ctypes.util.find_library("gpuocelot")) - gpuocelot_lib.ptx_run.argtypes = [ctypes.c_char_p, ctypes.c_int, ctypes.POINTER(ctypes.c_void_p), ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int] # noqa: E501 -except Exception: pass +gpuocelot_lib = _try_dlopen_gpuocelot() class SchedResult(Enum): CONT = auto(); YIELD = auto() # noqa: E702 @@ -99,7 +97,10 @@ class GPFIFO: cargs = [ctypes.cast(args[i], ctypes.c_void_p) for i in range(args_cnt)] + [ctypes.cast(vals[i], ctypes.c_void_p) for i in range(vals_cnt)] gx, gy, gz = qmd.cta_raster_width, qmd.cta_raster_height, qmd.cta_raster_depth lx, ly, lz = qmd.cta_thread_dimension0, qmd.cta_thread_dimension1, qmd.cta_thread_dimension2 - gpuocelot_lib.ptx_run(ctypes.cast(prg_addr, ctypes.c_char_p), args_cnt+vals_cnt, (ctypes.c_void_p*len(cargs))(*cargs), lx, ly, lz, gx, gy, gz, 0) + try: + gpuocelot_lib.ptx_run(ctypes.cast(prg_addr, ctypes.c_char_p), args_cnt+vals_cnt, + (ctypes.c_void_p*len(cargs))(*cargs), lx, ly, lz, gx, gy, gz, 0) + except Exception as e: print("failed to execute:", e) if qmd.release0_enable: rel0 = to_mv(qmd.release0_address_lower + (qmd.release0_address_upper << 32), 0x10).cast('Q') rel0[0] = qmd.release0_payload_lower + (qmd.release0_payload_upper << 32) diff --git a/tinygrad_repo/test/models/test_onnx.py b/tinygrad_repo/test/models/test_onnx.py index 432f3b20a..79ce2046c 100644 --- a/tinygrad_repo/test/models/test_onnx.py +++ b/tinygrad_repo/test/models/test_onnx.py @@ -9,7 +9,15 @@ except ModuleNotFoundError: raise unittest.SkipTest("onnx not installed, skipping onnx test") from tinygrad.frontend.onnx import OnnxRunner from tinygrad.tensor import Tensor -from tinygrad.helpers import CI, fetch, temp +from tinygrad.device import Device +from tinygrad.helpers import CI, fetch, temp, Context + +try: + from extra.onnx_helpers import validate + from extra.huggingface_onnx.huggingface_manager import DOWNLOADS_DIR, snapshot_download_with_retry + HUGGINGFACE_AVAILABLE = True +except ModuleNotFoundError: + HUGGINGFACE_AVAILABLE = False def run_onnx_torch(onnx_model, inputs): import torch @@ -24,6 +32,7 @@ OPENPILOT_MODEL = "https://github.com/commaai/openpilot/raw/v0.9.4/selfdrive/mod np.random.seed(1337) class TestOnnxModel(unittest.TestCase): + @unittest.skip("this isn't a test, it can't fail") def test_benchmark_openpilot_model(self): onnx_model = fetch(OPENPILOT_MODEL) run_onnx = OnnxRunner(onnx_model) @@ -137,5 +146,36 @@ class TestOnnxModel(unittest.TestCase): print(cls, _LABELS[cls]) assert "car" in _LABELS[cls] or _LABELS[cls] == "convertible" +@unittest.skipUnless(HUGGINGFACE_AVAILABLE and Device.DEFAULT == "METAL", "only run on METAL") +class TestHuggingFaceOnnxModels(unittest.TestCase): + @classmethod + def setUpClass(cls): + cls._ctx = Context(MAX_BUFFER_SIZE=0) + cls._ctx.__enter__() + + @classmethod + def tearDownClass(cls): + cls._ctx.__exit__() + + def _validate(self, repo_id, model_file, custom_inputs, rtol=1e-4, atol=1e-4): + onnx_model_path = snapshot_download_with_retry( + repo_id=repo_id, + allow_patterns=["*.onnx", "*.onnx_data"], + cache_dir=str(DOWNLOADS_DIR) + ) + onnx_model_path = onnx_model_path / model_file + file_size = onnx_model_path.stat().st_size + print(f"Validating model: {repo_id}/{model_file} ({file_size/1e6:.2f}M)") + validate(onnx_model_path, custom_inputs, rtol=rtol, atol=atol) + + def test_xlm_roberta_large(self): + repo_id = "FacebookAI/xlm-roberta-large" + model_file = "onnx/model.onnx" + custom_inputs = { + "input_ids": np.random.randint(0, 250002, (1, 11), dtype=np.int64), + "attention_mask": np.ones((1, 11), dtype=np.int64), + } + self._validate(repo_id, model_file, custom_inputs) + if __name__ == "__main__": unittest.main() diff --git a/tinygrad_repo/test/models/test_whisper.py b/tinygrad_repo/test/models/test_whisper.py index f1696fd49..056615b22 100644 --- a/tinygrad_repo/test/models/test_whisper.py +++ b/tinygrad_repo/test/models/test_whisper.py @@ -16,7 +16,7 @@ TRANSCRIPTION_2 = "a slightly longer audio file so that we can test batch transc TEST_FILE_3_URL = 'https://homepage.ntu.edu.tw/~karchung/miniconversations/mc45.mp3' TRANSCRIPTION_3 = "Just lie back and relax. Is the level of pressure about right? Yes, it's fine, and I'd like conditioner please. Sure. I'm going to start the second lathering now. Would you like some Q-tips? How'd you like it cut? I'd like my bangs and the back trimmed, and I'd like the rest thinned out a bit and layered. Where would you like the part? On the left, right about here. Here, have a look. What do you think? It's fine. Here's a thousand anti-dollars. It's 30-ant extra for the rants. Here's your change and receipt. Thank you, and please come again. So how do you like it? It could have been worse, but you'll notice that I didn't ask her for her card. Hmm, yeah. Maybe you can try that place over there next time." # noqa: E501 -@unittest.skipIf(CI and Device.DEFAULT in ["CPU"], "slow") +@unittest.skipIf(Device.DEFAULT in ["CPU", "LLVM"], "slow") @unittest.skipUnless(is_dtype_supported(dtypes.float16), "need float16 support") class TestWhisper(unittest.TestCase): @classmethod diff --git a/tinygrad_repo/test/test_copy_speed.py b/tinygrad_repo/test/speed/external_test_copy_speed.py similarity index 99% rename from tinygrad_repo/test/test_copy_speed.py rename to tinygrad_repo/test/speed/external_test_copy_speed.py index ed2080922..391a4da0c 100644 --- a/tinygrad_repo/test/test_copy_speed.py +++ b/tinygrad_repo/test/speed/external_test_copy_speed.py @@ -3,7 +3,7 @@ from tinygrad import Tensor, Device, TinyJit from tinygrad.helpers import Timing, CI, OSX import multiprocessing.shared_memory as shared_memory -N = 256 if CI else 4096 +N = 256 class TestCopySpeed(unittest.TestCase): @classmethod def setUpClass(cls): Device[Device.DEFAULT].synchronize() diff --git a/tinygrad_repo/test/test_device_speed.py b/tinygrad_repo/test/speed/external_test_device_speed.py similarity index 100% rename from tinygrad_repo/test/test_device_speed.py rename to tinygrad_repo/test/speed/external_test_device_speed.py diff --git a/tinygrad_repo/test/test_specific_conv.py b/tinygrad_repo/test/speed/external_test_specific_conv.py similarity index 100% rename from tinygrad_repo/test/test_specific_conv.py rename to tinygrad_repo/test/speed/external_test_specific_conv.py diff --git a/tinygrad_repo/test/test_speed_v_torch.py b/tinygrad_repo/test/speed/external_test_speed_v_torch.py similarity index 100% rename from tinygrad_repo/test/test_speed_v_torch.py rename to tinygrad_repo/test/speed/external_test_speed_v_torch.py diff --git a/tinygrad_repo/test/test_arange.py b/tinygrad_repo/test/test_arange.py index bb645c77c..e680ffbda 100644 --- a/tinygrad_repo/test/test_arange.py +++ b/tinygrad_repo/test/test_arange.py @@ -3,10 +3,11 @@ import numpy as np from tinygrad import Tensor, GlobalCounters, dtypes, nn, Device, Variable from tinygrad.helpers import CI, Context, getenv from tinygrad.engine.realize import run_schedule -from tinygrad.opt.kernel import Opt, OptOps, Kernel, KernelOptError +from tinygrad.codegen.opt.kernel import Opt, OptOps, Kernel, KernelOptError from tinygrad.engine.realize import CompiledRunner, ExecItem, get_program -from tinygrad.opt.search import get_kernel_actions +from tinygrad.codegen.opt.search import get_kernel_actions from tinygrad.uop.ops import Ops +from tinygrad.codegen import apply_rewrites, rewrites_for_views class TestArange(unittest.TestCase): def _get_flops(self, N, opts=None): @@ -14,10 +15,7 @@ class TestArange(unittest.TestCase): tt = Tensor.arange(N) sched = tt.schedule() self.assertEqual(len(sched), 1) - k = Kernel(sched[-1].ast) - if opts is not None: - for o in opts: k.apply_opt(o) - p = get_program(k.get_optimized_ast(), k.opts) + p = get_program(sched[-1].ast, opts=opts) print(p.name) #print(p.src) ExecItem(CompiledRunner(p), [tt.uop.buffer]).run() @@ -52,11 +50,11 @@ class TestArange(unittest.TestCase): def test_complexity_w_local_and_padto(self): return self.test_complexity([Opt(OptOps.LOCAL, 0, 16), Opt(OptOps.PADTO, axis=1, arg=32)]) def test_all_opts(self, opts=None, exclude=None): - k = Kernel(Tensor.arange(256).schedule()[-1].ast) + k = Kernel(apply_rewrites(Tensor.arange(256).schedule()[-1].ast, rewrites_for_views)) if opts is not None: for o in opts: k.apply_opt(o) all_opts_256 = [kk.applied_opts for kk in get_kernel_actions(k, include_0=False).values()] - k = Kernel(Tensor.arange(2560).schedule()[-1].ast) + k = Kernel(apply_rewrites(Tensor.arange(2560).schedule()[-1].ast, rewrites_for_views)) if opts is not None: for o in opts: k.apply_opt(o) all_opts_2560 = [kk.applied_opts for kk in get_kernel_actions(k, include_0=False).values()] diff --git a/tinygrad_repo/test/test_compile_failures.py b/tinygrad_repo/test/test_compile_failures.py index 5ab87c0b6..16559e907 100644 --- a/tinygrad_repo/test/test_compile_failures.py +++ b/tinygrad_repo/test/test_compile_failures.py @@ -1,7 +1,10 @@ -import unittest +import unittest, io +from contextlib import redirect_stdout from tinygrad import Tensor, dtypes, Device +from tinygrad.helpers import OSX from tinygrad.engine.realize import lower_schedule from tinygrad.device import is_dtype_supported +from tinygrad.engine.realize import get_program class TestCompileFailures(unittest.TestCase): def compile(self, out:Tensor): @@ -14,5 +17,17 @@ class TestCompileFailures(unittest.TestCase): def test_add_max_uchar(self): self.compile((Tensor.empty(1024, dtype='uint8') + Tensor.empty(1024, dtype='uint8')).max()) +class TestDisassembly(unittest.TestCase): + # TODO: fails on llvm. llvm.LLVMGetHostCPUName() returns "generic" + @unittest.skipUnless(Device.DEFAULT in ("CPU",) and OSX, "m series cpus support fp16 arithmetic") + def test_float16_alu(self): + c = Tensor([1], dtype=dtypes.float16) + Tensor([1], dtype=dtypes.float16) + s = c.schedule()[-1] + p = get_program(s.ast, Device[Device.DEFAULT].renderer) + lib = Device[Device.DEFAULT].compiler.compile(p.src) + out = io.StringIO() + with redirect_stdout(out): Device[Device.DEFAULT].compiler.disassemble(lib) + assert "fcvt" not in out.getvalue() + if __name__ == '__main__': unittest.main() diff --git a/tinygrad_repo/test/test_const_folding.py b/tinygrad_repo/test/test_const_folding.py index 187a4b514..d4a79fbb4 100644 --- a/tinygrad_repo/test/test_const_folding.py +++ b/tinygrad_repo/test/test_const_folding.py @@ -1,11 +1,10 @@ import unittest, itertools, math -from typing import Any from tinygrad import Tensor, Device, dtypes -from tinygrad.dtype import DType +from tinygrad.dtype import DType, ConstType from tinygrad.uop.ops import Ops, UOp from tinygrad.codegen import full_rewrite_to_sink -import numpy as np from tinygrad.device import is_dtype_supported +import numpy as np from test.helpers import not_support_multi_device def _check_ast_count(desired_count:int, t:Tensor): @@ -25,7 +24,7 @@ class TestUnaryOpsConstFolding(unittest.TestCase): _check_ast_count(0, Tensor.ones(4).cast(dtypes.int16)) _check_ast_count(0, Tensor.full(4, fill_value=-1).cast(dtypes.uint16)) - @unittest.expectedFailure # no two level fold at lazybuffer + @unittest.expectedFailure # no two level fold def test_neg_folding(self): _check_ast_count(0, Tensor([1, 2, 3]).mul(-1).neg()) _check_ast_count(0, Tensor([1, 2, 3]).neg().mul(-1)) @@ -104,7 +103,7 @@ class TestBinaryOpsConstFolding(unittest.TestCase): class TestBitcastConstFolding(unittest.TestCase): def test_scalar_bitcast(self): - def t(cases: dict[DType, Any]): + def t(cases: dict[DType, ConstType]): for (from_dt, from_v), (to_dt, to_v) in itertools.product(cases.items(), cases.items()): if not math.isnan(from_v): r = full_rewrite_to_sink(UOp.const(from_dt, from_v).bitcast(to_dt).sink()).src[0] @@ -139,18 +138,16 @@ class TestBitcastConstFolding(unittest.TestCase): class TestIndexingConstFolding(unittest.TestCase): def test_scalar_index(self): t = Tensor.arange(16).float().reshape(1,1,4,4).realize() - # TODO: fold these - _check_ast_count(2, t[:,:,Tensor(1),:]) - _check_ast_count(2, t[:,:,Tensor(1)+2,:]) - _check_ast_count(2, t[:,:,Tensor(1),Tensor(0)]) + _check_ast_count(1, t[:,:,Tensor(1),:]) + _check_ast_count(1, t[:,:,Tensor(1)+2,:]) + _check_ast_count(1, t[:,:,Tensor(1),Tensor(0)]) - @unittest.expectedFailure def test_const_tensor_index(self): - # TODO: implement const tensor folded indexing + # TODO: these can be 0, implement const tensor folded indexing t = Tensor.arange(16).float().reshape(1,1,4,4).realize() - _check_ast_count(0, t[:,:,Tensor.ones(2,1),:]) - _check_ast_count(0, t[:,:,Tensor.ones(1,2)+2,:]) - _check_ast_count(0, t[:,:,Tensor.ones(1,1),Tensor.zeros(2,1,2)]) + _check_ast_count(1, t[:,:,Tensor.ones(2,1,dtype=dtypes.int),:]) + _check_ast_count(1, t[:,:,Tensor.ones(1,2,dtype=dtypes.int)+2,:]) + _check_ast_count(1, t[:,:,Tensor.ones(1,1,dtype=dtypes.int),Tensor.zeros(2,1,2,dtype=dtypes.int)]) class TestMovedConstFolding(unittest.TestCase): def test_add_shrunk_zero(self): @@ -167,7 +164,6 @@ class TestMovedConstFolding(unittest.TestCase): _check_ast_count(1, Tensor([1.0, 2, 3, 4]) * Tensor.ones(2).pad(((1, 1),))) def test_cast_padded(self): - # NOTE: this is folded due to CAST_BEFORE_VIEW if is_dtype_supported(dtypes.int16): _check_ast_count(0, Tensor.ones(4).pad(((1, 1),)).cast(dtypes.int16)) np.testing.assert_equal(Tensor.ones(4).pad(((1, 1),)).cast(dtypes.int16).numpy(), [0, 1, 1, 1, 1, 0]) @@ -291,17 +287,12 @@ class TestMultiConstFolding(unittest.TestCase): np.testing.assert_equal((t + zero).numpy(), np.arange(16)) np.testing.assert_equal((t * zero).numpy(), [0] * 16) np.testing.assert_equal((t * one).numpy(), np.arange(16)) - - def test_multi_todo_pow(self): - ds = tuple(f"{Device.DEFAULT}:{i}" for i in range(4)) - t = Tensor.arange(16).float().to(ds).realize() - zero = Tensor.zeros(16).to(ds).realize() - one = Tensor.ones(16).to(ds).realize() - - # TODO: fix pow folding _check_ast_count(0, t ** zero) _check_ast_count(0, t ** one) _check_ast_count(0, one ** t) + np.testing.assert_equal((t ** zero).numpy(), [1] * 16) + np.testing.assert_equal((t ** one).numpy(), np.arange(16)) + np.testing.assert_equal((one ** t).numpy(), [1] * 16) class TestTautologicalCompare(unittest.TestCase): # without const folding, these would have triggered -Wtautological-compare in clang diff --git a/tinygrad_repo/test/test_dtype.py b/tinygrad_repo/test/test_dtype.py index a39fd9927..a9b3c9417 100644 --- a/tinygrad_repo/test/test_dtype.py +++ b/tinygrad_repo/test/test_dtype.py @@ -4,9 +4,8 @@ import torch from typing import Any, List from tinygrad.device import is_dtype_supported from tinygrad.helpers import getenv, DEBUG, CI -from tinygrad.dtype import DType, DTYPES_DICT, ImageDType, PtrDType, least_upper_dtype, to_dtype, fp8_to_float, float_to_fp8 +from tinygrad.dtype import DType, DTYPES_DICT, least_upper_dtype, fp8_to_float, float_to_fp8, _to_np_dtype, _to_torch_dtype from tinygrad import Device, Tensor, dtypes -from tinygrad.tensor import _to_np_dtype from hypothesis import assume, given, settings, strategies as strat from test.helpers import rand_for_dtype from test.unit.test_dtype_spec import _assert_eq, core_dtypes, dtype_ints, dtype_floats, FP8E4M3_MAX, FP8E5M2_MAX @@ -24,6 +23,10 @@ def get_available_cast_dtypes(dtype: DType) -> List[DType]: # dont cast internal dtypes return [v for k, v in DTYPES_DICT.items() if v != dtype and is_dtype_supported(v) and not k.startswith("_")] +def _to_torch_storage_type(dtype:DType): + if dtype == dtypes.bfloat16: return torch.float32 + return _to_torch_dtype(dtype) + def _test_to_np(a:Tensor, np_dtype, target): if DEBUG >= 2: print(a) na = a.numpy() @@ -46,10 +49,10 @@ def _test_cast(a:Tensor, target_dtype:DType): _test_op(lambda: a.cast(target_dtype), target_dtype, list(a.numpy().astype(_to_np_dtype(target_dtype)))) def _test_bitcast(a:Tensor, target_dtype:DType, target=None): - if target_dtype == dtypes.bfloat16: raise unittest.SkipTest("no test for bf16 bitcast yet") if getenv("PTX") and a.dtype == dtypes.int8 and target_dtype.itemsize != a.dtype.itemsize: raise unittest.SkipTest("shape changing bitcast of int8 broken on PTX") - _test_op(lambda: a.bitcast(target_dtype), target_dtype, target or a.numpy().view(_to_np_dtype(target_dtype)).tolist()) + expected = torch.tensor(a.tolist(), dtype=_to_torch_storage_type(a.dtype)).view(_to_torch_dtype(target_dtype)) + _test_op(lambda: a.bitcast(target_dtype), target_dtype, target or expected.tolist()) class TestDType(unittest.TestCase): DTYPE: Any = None @@ -126,7 +129,7 @@ class TestDType(unittest.TestCase): def test_finfo(self): if self.DTYPE not in [dtypes.float16, dtypes.bfloat16, dtypes.float32, dtypes.float64]: return - info = np.finfo(_to_np_dtype(self.DTYPE)) + info = ml_dtypes.finfo(ml_dtypes.bfloat16 if self.DTYPE is dtypes.bfloat16 else _to_np_dtype(self.DTYPE)) assert info.bits == self.DTYPE.itemsize*8 assert info.nexp == dtypes.finfo(self.DTYPE)[0] assert info.nmant == dtypes.finfo(self.DTYPE)[1] @@ -299,10 +302,10 @@ class TestBitCast(unittest.TestCase): @given(strat.sampled_from(dtype_ints + dtype_floats), strat.sampled_from(dtype_ints + dtype_floats)) def test_shape_change_bitcast(self, dt1, dt2): # NOTE: this has to be assume to prevent hypothesis from skipping all samples - assume(dt2 != dtypes.bfloat16 and dt1 != dtypes.bfloat16) # no test for bf16 bitcast yet assume(not (getenv("PTX") and dt1 == dtypes.int8)) # TODO: bitcasting int8 fails in PTX data = rand_for_dtype(dt1, 32).reshape(2, 2, 8) - _test_op(lambda: Tensor(data, dtype=dt1).bitcast(dt2), dt2, data.view(_to_np_dtype(dt2)).tolist()) + expected = torch.tensor(data.tolist(), dtype=_to_torch_storage_type(dt1)).view(_to_torch_dtype(dt2)) + _test_op(lambda: Tensor(data, dtype=dt1).bitcast(dt2), dt2, expected.tolist()) def test_shape_change_bitcast_exceptions(self): with self.assertRaises(RuntimeError): @@ -342,6 +345,9 @@ class TestUint64DType(TestDType): class TestBoolDType(TestDType): DTYPE = dtypes.bool +@unittest.skipUnless(is_dtype_supported(dtypes.bfloat16), f"no bfloat16 on {Device.DEFAULT}") +class TestBFloat16Type(TestDType): DTYPE = dtypes.bfloat16 + class TestPtrDType(unittest.TestCase): def test_vec_double(self): dt1 = dtypes.float.vec(4).ptr().vec(4) @@ -384,30 +390,6 @@ class TestPtrDType(unittest.TestCase): self.assertEqual(dt.v, 4) self.assertEqual(dt.count, 4) -class TestImageDType(unittest.TestCase): - def test_image_scalar(self): - assert dtypes.imagef((10,10)).base.scalar() == dtypes.float32 - assert dtypes.imageh((10,10)).base.scalar() == dtypes.float32 - def test_image_vec(self): - assert dtypes.imagef((10,10)).base.vec(4) == dtypes.float32.vec(4) - assert dtypes.imageh((10,10)).base.vec(4) == dtypes.float32.vec(4) - -class TestEqStrDType(unittest.TestCase): - def test_image_ne(self): - if ImageDType is None: raise unittest.SkipTest("no ImageDType support") - assert dtypes.float == dtypes.float32, "float doesn't match?" - assert dtypes.imagef((1,2,4)) != dtypes.imageh((1,2,4)), "different image dtype doesn't match" - assert dtypes.imageh((1,2,4)) != dtypes.imageh((1,4,2)), "different shape doesn't match" - assert dtypes.imageh((1,2,4)) == dtypes.imageh((1,2,4)), "same shape matches" - assert isinstance(dtypes.imageh((1,2,4)), ImageDType) - def test_ptr_eq(self): - assert dtypes.float32.ptr() == dtypes.float32.ptr() - assert not (dtypes.float32.ptr() != dtypes.float32.ptr()) - def test_strs(self): - if PtrDType is None: raise unittest.SkipTest("no PtrDType support") - self.assertEqual(str(dtypes.imagef((1,2,4))), "dtypes.imagef((1, 2, 4))") - self.assertEqual(str(dtypes.float32.ptr(16)), "dtypes.float.ptr(16)") - class TestImplicitFunctionTypeChange(unittest.TestCase): def test_functions(self): result = [] @@ -438,26 +420,18 @@ class TestDtypeUsage(unittest.TestCase): t = Tensor([[1, 2], [3, 4]], dtype=d) (t*t).max().item() -class TestToDtype(unittest.TestCase): - def test_dtype_to_dtype(self): - dtype = dtypes.int32 - res = to_dtype(dtype) - self.assertIsInstance(res, DType) - self.assertEqual(res, dtypes.int32) - - def test_str_to_dtype(self): - dtype = "int32" - res = to_dtype(dtype) - self.assertIsInstance(res, DType) - self.assertEqual(res, dtypes.int32) - @unittest.skipUnless(is_dtype_supported(dtypes.bfloat16), f"no bfloat16 on {Device.DEFAULT}") class TestOpsBFloat16(unittest.TestCase): def test_cast(self): # TODO: helper_test_op breaks in unrelated part - # TODO: wrong output with GPU=1 / PYTHON=1 on mac + # TODO: wrong output with GPU=1 on mac data = [60000.0, 70000.0, 80000.0] np.testing.assert_allclose(Tensor(data).cast("bfloat16").numpy(), torch.tensor(data).type(torch.bfloat16).float().numpy()) + def test_no_approximation(self): + data = [326.0, 339.0, 10603200512.0] + expected = torch.tensor(data, dtype=torch.bfloat16).sqrt().float().numpy() + np.testing.assert_allclose(Tensor(data, dtype=dtypes.bfloat16).sqrt().numpy(), expected) + if __name__ == '__main__': unittest.main() diff --git a/tinygrad_repo/test/test_dtype_alu.py b/tinygrad_repo/test/test_dtype_alu.py index 1b0fa9459..a519bf2a6 100644 --- a/tinygrad_repo/test/test_dtype_alu.py +++ b/tinygrad_repo/test/test_dtype_alu.py @@ -1,16 +1,13 @@ -import unittest - +import unittest, operator, math from tinygrad import Tensor, dtypes, Device -import operator -import numpy as np -from hypothesis import given, strategies as strat, settings, HealthCheck from tinygrad.dtype import DType -from tinygrad.helpers import CI, getenv -from tinygrad.engine.realize import run_schedule -from tinygrad.uop.ops import GroupOp +from tinygrad.helpers import CI, getenv, AMD_LLVM from tinygrad.tensor import _to_np_dtype from tinygrad.device import is_dtype_supported -import pytest, math +import numpy as np +import pytest +from hypothesis import given, strategies as strat, settings, HealthCheck + pytestmark = pytest.mark.filterwarnings("ignore") settings.register_profile("my_profile", max_examples=200, deadline=None, derandomize=getenv("DERANDOMIZE_CI", False)) @@ -23,13 +20,13 @@ dtypes_bool = (dtypes.bool,) binary_operations = [operator.add, operator.sub, operator.mul, operator.lt, operator.eq] # TODO: LLVM comparing with nan is incorrect -if Device.DEFAULT == "LLVM" or getenv("AMD_LLVM", 0): +if (Device.DEFAULT == "LLVM") or (Device.DEFAULT == "AMD" and AMD_LLVM): binary_operations.remove(operator.lt) integer_binary_operations = binary_operations + [(Tensor.bitwise_xor, np.bitwise_xor), (Tensor.bitwise_and, np.bitwise_and), (Tensor.bitwise_or, np.bitwise_or), operator.mod] unary_operations = [(Tensor.exp, np.exp), (Tensor.log, np.log), (Tensor.sin, np.sin), - (Tensor.sqrt, np.sqrt), (Tensor.reciprocal, np.reciprocal)] + (Tensor.sqrt, np.sqrt), (Tensor.reciprocal, np.reciprocal), (Tensor.cos, np.cos)] # TODO: enable this (this is a dtype issue) #binary_operations.append(operator.truediv) @@ -38,7 +35,9 @@ unary_operations = [(Tensor.exp, np.exp), (Tensor.log, np.log), (Tensor.sin, np. #binary_operations += [(Tensor.maximum, np.maximum)] # TODO: CI CUDA segfaults on sin, WEBGPU sin is not precise enough for large numbers -if (getenv("MOCKGPU") and Device.DEFAULT in {"NV", "CUDA"}) or Device.DEFAULT == "WEBGPU": unary_operations.remove((Tensor.sin, np.sin)) +if (getenv("MOCKGPU") and Device.DEFAULT in {"NV", "CUDA"}) or Device.DEFAULT == "WEBGPU": + unary_operations.remove((Tensor.sin, np.sin)) + unary_operations.remove((Tensor.cos, np.cos)) class ht: float64 = strat.floats(width=64, allow_subnormal=False) @@ -63,25 +62,23 @@ def universal_test(a, b, dtype, op): ta, tb = Tensor([a], dtype=dtype), Tensor([b], dtype=dtype) tensor_value = (op[0](ta, tb)).numpy() numpy_value = op[1](ta.numpy(), tb.numpy()) - if dtype == dtypes.bfloat16: np.testing.assert_allclose(tensor_value, numpy_value, atol=1e-3, rtol=1e-2) - elif dtype in dtypes_float: np.testing.assert_allclose(tensor_value, numpy_value, atol=1e-10) + if dtype in dtypes.floats: + atol, rtol = {dtypes.bfloat16:(1e-3, 1e-2)}.get(dtype, (1e-10, 1e-7)) + np.testing.assert_allclose(tensor_value, numpy_value, atol=atol, rtol=rtol) else: np.testing.assert_equal(tensor_value, numpy_value) def universal_test_unary(a, dtype, op): if not isinstance(op, tuple): op = (op, op) ta = Tensor([a], dtype=dtype) + # TODO: cos does not match for large input + if op[0] == Tensor.cos and abs(a) > 100: return out: Tensor = op[0](ta) - sched = out.schedule() - ast = sched[-1].ast - run_schedule(sched) tensor_value = out.numpy() numpy_value = op[1](ta.numpy()) - if dtype in (dtypes.float16, dtypes.bfloat16): np.testing.assert_allclose(tensor_value, numpy_value, atol=1e-3, rtol=1e-2) - elif dtype in dtypes_float: np.testing.assert_allclose(tensor_value, numpy_value, atol=1e-6, rtol=1e-5) + if dtype in dtypes.floats: + atol, rtol = {dtypes.float16:(1e-3, 1e-2), dtypes.bfloat16:(1e-3, 2e-2)}.get(dtype, (1e-6, 1e-5)) + np.testing.assert_allclose(tensor_value, numpy_value, atol=atol, rtol=rtol) else: np.testing.assert_equal(tensor_value, numpy_value) - if op[0] != Tensor.reciprocal: # reciprocal is not supported in most backends - op = [x for x in ast.toposort() if x.op in GroupOp.Unary][0] - assert op.dtype == dtype def universal_test_cast(a, in_dtype, dtype): tensor_value = Tensor([a], dtype=in_dtype).cast(dtype) @@ -99,45 +96,44 @@ def universal_test_midcast(a, b, c, op1, op2, d1:DType, d2:DType): np.testing.assert_allclose(tensor_value, numpy_value, rtol=1e-6 if getenv("PTX") else 1e-7) class TestDTypeALU(unittest.TestCase): - @unittest.skipUnless(is_dtype_supported(dtypes.float64, Device.DEFAULT), f"no float64 on {Device.DEFAULT}") + @unittest.skipUnless(is_dtype_supported(dtypes.float64), f"no float64 on {Device.DEFAULT}") @given(ht.float64, ht.float64, strat.sampled_from(binary_operations)) def test_float64(self, a, b, op): universal_test(a, b, dtypes.float64, op) @given(ht.float32, ht.float32, strat.sampled_from(binary_operations)) def test_float32(self, a, b, op): universal_test(a, b, dtypes.float32, op) - @unittest.skipUnless(is_dtype_supported(dtypes.float16, Device.DEFAULT), f"no float16 on {Device.DEFAULT}") + @unittest.skipUnless(is_dtype_supported(dtypes.float16), f"no float16 on {Device.DEFAULT}") @given(ht.float16, ht.float16, strat.sampled_from(binary_operations)) def test_float16(self, a, b, op): universal_test(a, b, dtypes.float16, op) - @unittest.skipUnless(is_dtype_supported(dtypes.bfloat16, Device.DEFAULT), f"no bfloat16 on {Device.DEFAULT}") + @unittest.skipUnless(is_dtype_supported(dtypes.bfloat16), f"no bfloat16 on {Device.DEFAULT}") @given(ht.bfloat16, ht.bfloat16, strat.sampled_from(binary_operations)) def test_bfloat16(self, a, b, op): universal_test(a, b, dtypes.bfloat16, op) @given(ht.float32, strat.sampled_from(unary_operations)) def test_float32_unary(self, a, op): universal_test_unary(a, dtypes.float32, op) - @unittest.skipUnless(is_dtype_supported(dtypes.float16, Device.DEFAULT), f"no float16 on {Device.DEFAULT}") + @unittest.skipUnless(is_dtype_supported(dtypes.float16), f"no float16 on {Device.DEFAULT}") @given(ht.float16, strat.sampled_from(unary_operations)) def test_float16_unary(self, a, op): universal_test_unary(a, dtypes.float16, op) - @unittest.skipUnless(is_dtype_supported(dtypes.bfloat16, Device.DEFAULT), f"no bfloat16 on {Device.DEFAULT}") + @unittest.skipUnless(is_dtype_supported(dtypes.bfloat16), f"no bfloat16 on {Device.DEFAULT}") @given(ht.bfloat16, strat.sampled_from(unary_operations)) - @unittest.skipIf(Device.DEFAULT in ["AMD"], "broken on AMD?") def test_bfloat16_unary(self, a, op): universal_test_unary(a, dtypes.bfloat16, op) @given(ht.uint8, ht.uint8, strat.sampled_from(integer_binary_operations)) def test_uint8(self, a, b, op): universal_test(a, b, dtypes.uint8, op) - @unittest.skipUnless(is_dtype_supported(dtypes.uint16, Device.DEFAULT), f"no uint16 on {Device.DEFAULT}") + @unittest.skipUnless(is_dtype_supported(dtypes.uint16), f"no uint16 on {Device.DEFAULT}") @given(ht.uint16, ht.uint16, strat.sampled_from(integer_binary_operations)) def test_uint16(self, a, b, op): universal_test(a, b, dtypes.uint16, op) - @unittest.skipUnless(is_dtype_supported(dtypes.uint32, Device.DEFAULT), f"no uint32 on {Device.DEFAULT}") + @unittest.skipUnless(is_dtype_supported(dtypes.uint32), f"no uint32 on {Device.DEFAULT}") @given(ht.uint32, ht.uint32, strat.sampled_from(integer_binary_operations)) def test_uint32(self, a, b, op): universal_test(a, b, dtypes.uint32, op) - @unittest.skipUnless(is_dtype_supported(dtypes.uint64, Device.DEFAULT), f"no uint64 on {Device.DEFAULT}") + @unittest.skipUnless(is_dtype_supported(dtypes.uint64), f"no uint64 on {Device.DEFAULT}") @given(ht.uint64, ht.uint64, strat.sampled_from(integer_binary_operations)) def test_uint64(self, a, b, op): universal_test(a, b, dtypes.uint64, op) @@ -150,7 +146,7 @@ class TestDTypeALU(unittest.TestCase): @given(ht.int32, ht.int32, strat.sampled_from(integer_binary_operations)) def test_int32(self, a, b, op): universal_test(a, b, dtypes.int32, op) - @unittest.skipUnless(is_dtype_supported(dtypes.int64, Device.DEFAULT), f"no int64 on {Device.DEFAULT}") + @unittest.skipUnless(is_dtype_supported(dtypes.int64), f"no int64 on {Device.DEFAULT}") @given(ht.int64, ht.int64, strat.sampled_from(integer_binary_operations)) def test_int64(self, a, b, op): universal_test(a, b, dtypes.int64, op) @@ -180,7 +176,7 @@ class TestDTypeALU(unittest.TestCase): @settings(suppress_health_check=[HealthCheck.filter_too_much]) @given(strat.data(), strat.sampled_from(dtypes_float), strat.sampled_from((dtypes.uint8, dtypes.uint16))) def test_float_cast_to_unsigned(self, a, float_dtype, unsigned_dtype): - if not is_dtype_supported(float_dtype, Device.DEFAULT): float_dtype = dtypes.float32 + if not is_dtype_supported(float_dtype): float_dtype = dtypes.float32 float_strat = {dtypes.float16: ht.float16, dtypes.float32: ht.float32, dtypes.float64: ht.float64}[float_dtype] float_strat = float_strat.filter(lambda x: 0 < x < dtypes.max(unsigned_dtype)) universal_test_cast(a.draw(float_strat), float_dtype, unsigned_dtype) @@ -188,7 +184,7 @@ class TestDTypeALU(unittest.TestCase): @settings(suppress_health_check=[HealthCheck.filter_too_much]) @given(strat.data(), strat.sampled_from(dtypes_float), strat.sampled_from((dtypes.uint8, dtypes.uint16))) def test_float_cast_to_unsigned_overflow(self, a, float_dtype, unsigned_dtype): - if not is_dtype_supported(float_dtype, Device.DEFAULT): float_dtype = dtypes.float32 + if not is_dtype_supported(float_dtype): float_dtype = dtypes.float32 float_strat = {dtypes.float16: ht.float16, dtypes.float32: ht.float32, dtypes.float64: ht.float64}[float_dtype] overflow_strat = float_strat.filter(lambda x: x > dtypes.max(unsigned_dtype) and x <= dtypes.max(dtypes.int32)) universal_test_cast(a.draw(overflow_strat), float_dtype, unsigned_dtype) @@ -196,7 +192,7 @@ class TestDTypeALU(unittest.TestCase): @settings(suppress_health_check=[HealthCheck.filter_too_much]) @given(strat.data(), strat.sampled_from(dtypes_float), strat.sampled_from((dtypes.uint8, dtypes.uint16))) def test_float_cast_to_unsigned_underflow(self, a, float_dtype, unsigned_dtype): - if not is_dtype_supported(float_dtype, Device.DEFAULT): float_dtype = dtypes.float32 + if not is_dtype_supported(float_dtype): float_dtype = dtypes.float32 float_strat = {dtypes.float16: ht.float16, dtypes.float32: ht.float32, dtypes.float64: ht.float64}[float_dtype] underflow_strat = float_strat.filter(lambda x: x < 0 and x >= dtypes.min(dtypes.int32)) universal_test_cast(a.draw(underflow_strat), float_dtype, unsigned_dtype) diff --git a/tinygrad_repo/test/test_edgecases.py b/tinygrad_repo/test/test_edgecases.py index ae4e26b48..a38b38f3c 100644 --- a/tinygrad_repo/test/test_edgecases.py +++ b/tinygrad_repo/test/test_edgecases.py @@ -62,7 +62,6 @@ class TestNaNEdgeCases(unittest.TestCase): class TestEmptyTensorEdgeCases(unittest.TestCase): # we don't need more of these - @unittest.expectedFailure def test_sort_empty(self): # Sorting an empty tensor works in PyTorch and should return empty # values and indices. tinygrad raises an error instead. @@ -219,7 +218,6 @@ class TestAssignIssues(unittest.TestCase): t.shrink(((1, 3), (1, 3))).assign(Tensor.ones(2, 2)) np.testing.assert_allclose(t.numpy(), torch_tensor.numpy()) - @unittest.expectedFailure def test_assign_broadcast(self): # broadcasting during assign should behave like PyTorch torch_tensor = torch.zeros(3, 5) @@ -258,12 +256,11 @@ class TestEdgeCases(unittest.TestCase): out = Tensor(arr).pad((1, -1, 1, -1), mode='circular') np.testing.assert_equal(out.numpy(), torch_out.numpy()) - @unittest.expectedFailure def test_arange_float_step(self): # float steps should match PyTorch exactly torch_out = torch.arange(0, 2, 0.3).numpy() out = Tensor.arange(0, 2, 0.3).numpy() - np.testing.assert_allclose(out, torch_out) + np.testing.assert_allclose(out, torch_out, atol=1e-7) @unittest.skip("this is flaky") @unittest.expectedFailure diff --git a/tinygrad_repo/test/test_graph.py b/tinygrad_repo/test/test_graph.py index 19dd6f9fe..f87163893 100644 --- a/tinygrad_repo/test/test_graph.py +++ b/tinygrad_repo/test/test_graph.py @@ -107,8 +107,9 @@ class TestGraph(unittest.TestCase): helper_test_graphs(Device[d0].graph, graphs) def skip_if_not_multigraph(self): - graph = g.func if isinstance(g:=Device[Device.DEFAULT].graph, functools.partial) else g + graph = g.func if isinstance(g:=(d:=Device[Device.DEFAULT]).graph, functools.partial) else g if not issubclass(graph, MultiGraphRunner): self.skipTest("graph is not supported (not MultiGraphRunner)") + if not hasattr(d.allocator, '_transfer'): self.skipTest("device is not supported (no transfers)") def test_order_copy_writed(self): self.skip_if_not_multigraph() diff --git a/tinygrad_repo/test/test_jit.py b/tinygrad_repo/test/test_jit.py index 1b30ffc3b..b6d0b0e2e 100644 --- a/tinygrad_repo/test/test_jit.py +++ b/tinygrad_repo/test/test_jit.py @@ -5,9 +5,10 @@ import numpy as np from hypothesis import given, settings, strategies as strat from test.helpers import assert_jit_cache_len, not_support_multi_device, REAL_DEV from tinygrad.tensor import Tensor -from tinygrad.engine.jit import TinyJit +from tinygrad.engine.jit import TinyJit, GraphRunner, MultiGraphRunner, graph_class +from tinygrad.engine.realize import CompiledRunner, BufferCopy, BufferXfer from tinygrad.device import Device -from tinygrad.helpers import Context, JIT, GlobalCounters +from tinygrad.helpers import Context, JIT, GlobalCounters, getenv from tinygrad.dtype import dtypes from extra.models.unet import ResBlock @@ -669,5 +670,167 @@ class TestJitFree(unittest.TestCase): out = fxn(Tensor([11,1,2,3,4])) self.assertEqual(out.item(), 13600) +class TestJitGraphSplit(unittest.TestCase): + def compute(self, device, inp): + assert inp.device == device, f"Input device {inp.device} does not match expected {device}" + return (inp + 1.0).contiguous().realize() + + def copy(self, device, to_device, inp): + assert inp.device == device, f"Input device {inp.device} does not match expected {device}" + return inp.to(to_device).realize() + + def expect(self, f, *args, graph=None, multigraph=None, hcqgraph=None): + def _numpies(tpl): return tpl.numpy() if tpl.__class__ is Tensor else tuple([t.numpy() for t in tpl]) + + expected = _numpies(f(*args)) + for i in range(4): + res = _numpies(f(*args)) + np.testing.assert_allclose(res, expected, atol=1e-4, rtol=1e-5) + + dev = Device[Device.DEFAULT] + graph_t = graph_class(dev) + if graph_t is None: return + + got = f.jit_cache + from tinygrad.runtime.graph.hcq import HCQGraph + if graph_t is HCQGraph: + validate = hcqgraph + elif issubclass(graph_t, MultiGraphRunner): + validate = multigraph + else: + validate = graph + + assert len(got) == len(validate), f"Expected {len(validate)} operations, got {len(got)}" + for expected, got in zip(validate, got): + if expected["type"] == "graph": + assert isinstance(got.prg, GraphRunner), f"Expected GraphRunner, got {type(got.prg)}" + assert len(got.prg.jit_cache) == expected["cnt"], f"Expected {expected['cnt']} operations in graph, got {len(got.prg.jit_cache)}" + elif expected["type"] == "comp": + assert isinstance(got.prg, CompiledRunner), f"Expected CompiledRunner, got {type(got.prg)}" + elif expected["type"] == "copy": + assert isinstance(got.prg, BufferCopy), f"Expected BufferCopy, got {type(got.prg)}" + elif expected["type"] == "xfer": + assert isinstance(got.prg, BufferXfer), f"Expected BufferXfer, got {type(got.prg)}" + + def ji_graph(self, cnt): return {"type": "graph", "cnt": cnt} + def ji_comp(self): return {"type": "comp"} + def ji_copy(self): return {"type": "copy"} + def ji_xfer(self): return {"type": "xfer"} + + def test_jit_split_simple(self): + @TinyJit + def f(inp): + op0 = self.compute(Device.DEFAULT, inp) + op1 = self.compute(Device.DEFAULT, op0) + op2 = self.compute(Device.DEFAULT, op1) + return op2 + + inp = Tensor.randn(10, 10, device=Device.DEFAULT).realize() + self.expect(f, inp, + graph=[self.ji_graph(3)], + multigraph=[self.ji_graph(3)], + hcqgraph=[self.ji_graph(3)]) + + def test_jit_cpu_simple(self): + if Device.DEFAULT == "CPU": raise unittest.SkipTest("CPU is not a valid default device for this test") + + @TinyJit + def f(inp, inp_cpu): + op0 = self.compute(Device.DEFAULT, inp) + op1 = self.compute(Device.DEFAULT, op0) + op2 = self.compute("CPU", inp_cpu) + op3 = self.compute(Device.DEFAULT, op1) + return op2, op3 + + inp = Tensor.randn(10, 10, device=Device.DEFAULT).realize() + inp_cpu = Tensor.randn(10, 10, device="CPU").realize() + self.expect(f, inp, inp_cpu, + graph=[self.ji_graph(2), self.ji_comp(), self.ji_comp()], + multigraph=[self.ji_graph(2), self.ji_comp(), self.ji_comp()], + hcqgraph=[self.ji_graph(4)]) + + def test_jit_cpu_several(self): + if Device.DEFAULT == "CPU": raise unittest.SkipTest("CPU is not a valid default device for this test") + + @TinyJit + def f(inp, inp_cpu): + op0 = self.compute(Device.DEFAULT, inp) + op1 = self.compute(Device.DEFAULT, op0) + op2 = self.compute("CPU", inp_cpu) + op3 = self.compute("CPU", op2) + op4 = self.compute(Device.DEFAULT, op1) + return op3, op4 + + inp = Tensor.randn(10, 10, device=Device.DEFAULT).realize() + inp_cpu = Tensor.randn(10, 10, device="CPU").realize() + self.expect(f, inp, inp_cpu, + graph=[self.ji_graph(2), self.ji_graph(2), self.ji_comp()], + multigraph=[self.ji_graph(2), self.ji_graph(2), self.ji_comp()], + hcqgraph=[self.ji_graph(5)]) + + def test_jit_multidev(self): + if Device.DEFAULT == "CPU": raise unittest.SkipTest("CPU is not a valid default device for this test") + + try: Device[f"{Device.DEFAULT}:1"] + except Exception: raise unittest.SkipTest("no multidevice") + + @TinyJit + def f(inp, inp_d1): + op0 = self.compute(Device.DEFAULT, inp) + op1 = self.compute(Device.DEFAULT, op0) + op2 = self.compute(f"{Device.DEFAULT}:1", inp_d1) + op3 = self.compute(f"{Device.DEFAULT}:1", op2) + op4 = self.compute(Device.DEFAULT, op1) + return op3, op4 + + inp = Tensor.randn(10, 10, device=Device.DEFAULT).realize() + inp_d1 = Tensor.randn(10, 10, device=f"{Device.DEFAULT}:1").realize() + self.expect(f, inp, inp_d1, + graph=[self.ji_graph(2), self.ji_graph(2), self.ji_comp()], + multigraph=[self.ji_graph(5)], + hcqgraph=[self.ji_graph(5)]) + + def test_jit_multidev_xfer(self): + if Device.DEFAULT in {"CPU", "LLVM"}: raise unittest.SkipTest("CPU/LLVM is not a valid default device for this test (zero-copies)") + if Device.DEFAULT == "METAL" or REAL_DEV == "METAL": raise unittest.SkipTest("Metal is flaky, with multidevice (same as metal llama 4gpu?)") + + try: Device[f"{Device.DEFAULT}:1"] + except Exception: raise unittest.SkipTest("no multidevice") + + @TinyJit + def f(inp, inp_d1): + op0 = self.compute(Device.DEFAULT, inp) + op1 = self.compute(Device.DEFAULT, op0) + op2 = self.compute(f"{Device.DEFAULT}:1", inp_d1) + op3 = self.copy(f"{Device.DEFAULT}:1", Device.DEFAULT, op2) + op4 = self.compute(f"{Device.DEFAULT}:1", op2) + op5 = self.compute(Device.DEFAULT, op3) + return op1, op4, op5 + + inp = Tensor.randn(10, 10, device=Device.DEFAULT).realize() + inp_d1 = Tensor.randn(10, 10, device=f"{Device.DEFAULT}:1").realize() + self.expect(f, inp, inp_d1, + graph=[self.ji_graph(2), self.ji_comp(), self.ji_xfer(), self.ji_comp(), self.ji_comp()], + multigraph=[self.ji_graph(6)], + hcqgraph=[self.ji_graph(6)]) + + @unittest.skipIf(getenv("MOCKGPU"), "MockGPU does not support parallel copies") + def test_jit_multidev_copy(self): + if Device.DEFAULT in {"CPU", "LLVM"}: raise unittest.SkipTest("CPU/LLVM is not a valid default device for this test (zero-copies)") + + @TinyJit + def f(inp): + op0 = self.compute(Device.DEFAULT, inp) + op1 = self.compute(Device.DEFAULT, op0) + op2 = self.copy(Device.DEFAULT, "CPU", op1) + op3 = self.compute("CPU", op2) + return op3 + + inp = Tensor.randn(10, 10, device=Device.DEFAULT).realize() + self.expect(f, inp, + graph=[self.ji_graph(2), self.ji_copy(), self.ji_comp()], + multigraph=[self.ji_graph(2), self.ji_copy(), self.ji_comp()], + hcqgraph=[self.ji_graph(4)]) + if __name__ == '__main__': unittest.main() diff --git a/tinygrad_repo/test/test_linearizer.py b/tinygrad_repo/test/test_linearizer.py index 3c8e347d1..f6c3c446b 100644 --- a/tinygrad_repo/test/test_linearizer.py +++ b/tinygrad_repo/test/test_linearizer.py @@ -2,7 +2,7 @@ import numpy as np import unittest from dataclasses import replace -from tinygrad.opt.kernel import Opt, OptOps, KernelOptError, Kernel, AxisType +from tinygrad.codegen.opt.kernel import Opt, OptOps, KernelOptError, Kernel, AxisType from tinygrad.codegen.gpudims import get_grouped_dims from tinygrad.uop.ops import UOp, Ops, GroupOp, KernelInfo from tinygrad.device import Device, Buffer, is_dtype_supported @@ -10,9 +10,12 @@ from tinygrad.shape.shapetracker import ShapeTracker from tinygrad.shape.view import View from tinygrad.tensor import Tensor, _to_np_dtype from tinygrad.engine.realize import run_schedule, lower_schedule, CompiledRunner, get_program -from tinygrad.opt.heuristic import hand_coded_optimizations +from tinygrad.codegen.opt.heuristic import hand_coded_optimizations from tinygrad.helpers import prod, Context, getenv, CI, flatten, dedup, AMX, AMD_LLVM -from tinygrad.dtype import DType, dtypes, AddrSpace +from tinygrad.dtype import DType, dtypes, PtrDType, AddrSpace +from tinygrad.codegen import apply_rewrites, rewrites_for_views + +def push_views(ast): return apply_rewrites(ast, rewrites_for_views) def helper_realized_ast(r:Tensor|list[Tensor]) -> tuple[UOp, list[Buffer]]: if isinstance(r, Tensor): r = [r] @@ -22,7 +25,7 @@ def helper_realized_ast(r:Tensor|list[Tensor]) -> tuple[UOp, list[Buffer]]: # now all input buffers in s[-1] should be realized # create fresh buffers for the outputs bufs = [Buffer((x).device, x.size, x.dtype).allocate() if i < len(s[-1].ast.src) else x for i,x in enumerate(s[-1].bufs)] - return s[-1].ast, bufs + return push_views(s[-1].ast), bufs def helper_tc_allclose(N:int, M:int, K:int, dtype_in:DType, dtype_out:DType, axis:int=0, tc_select:int=-1, tc_opt:int=0, use_tensor_cores:int=1): a, b = Tensor.rand(M, K, dtype=dtype_in), Tensor.rand(K, N, dtype=dtype_in) @@ -30,11 +33,10 @@ def helper_tc_allclose(N:int, M:int, K:int, dtype_in:DType, dtype_out:DType, axi r = a.matmul(b, dtype=dtype_out) if dtype_in == dtypes.bfloat16: r = r.float() realized_ast, bufs = helper_realized_ast(r) - k = Kernel(realized_ast) - k.apply_tensor_cores(use_tensor_cores, axis=axis, tc_select=tc_select, tc_opt=tc_opt) - prg = CompiledRunner(replace(get_program(k.get_optimized_ast(), k.opts), device=Device.DEFAULT)) + opts = [Opt(op=OptOps.TC, axis=axis, arg=(tc_select, tc_opt, use_tensor_cores))] + prg = CompiledRunner(replace(get_program(realized_ast, opts=opts), device=Device.DEFAULT)) if use_tensor_cores == 1: assert len([uop for uop in prg.p.uops if uop.op is Ops.WMMA]) > 0, "wmma not triggered" - assert len([x for x in k.applied_opts if x.op is OptOps.TC]) == 1, "tensor core opt not included" + assert len([x for x in prg.p.uops[-1].arg.applied_opts if x.op is OptOps.TC]) == 1, "tensor core opt not included" prg.exec(bufs) if dtype_in == dtypes.half: tc_atol, tc_rtol = 1e-2, 1e-3 elif dtype_in == dtypes.bfloat16: tc_atol, tc_rtol = 1e-2, 1e-2 @@ -114,27 +116,7 @@ class TestLinearizer(unittest.TestCase): if skip and i in skip: continue assert ranges[i-1] != u, f"multireduce nested the ranges! {ranges[i-1], {u}}" - @unittest.expectedFailure - def test_const_alu_indexing(self): - st = ShapeTracker.from_shape((4,)).to_uop() - load = UOp.load(UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(), arg=1, src=()), st, dtype=dtypes.float) - op = load+UOp.const(dtypes.float, 1.0)*UOp.const(dtypes.float, -1) - store = UOp.store(UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(), arg=0, src=()), st, op) - Tensor.manual_seed(0) - x = Tensor.randn(4,).realize() - helper_linearizer_ast(store.sink(), [x], wanna_output=[x.numpy()+1*-1], opts=[]) - - # shapeless CONST in AST is not supported - @unittest.expectedFailure - def test_const_alu_indexing_one_const_fine(self): - st = ShapeTracker.from_shape((4,)).to_uop() - load = UOp.load(UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(), arg=1, src=()), st, dtype=dtypes.float) - op = load+UOp.const(dtypes.float, 1.0) - store = UOp.store(UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(), arg=0, src=()), st, op) - Tensor.manual_seed(0) - x = Tensor.randn(4,).realize() - helper_linearizer_ast(store.sink(), [x], wanna_output=[x.numpy()+1], opts=[]) - + @unittest.skip("broken. should not depends on push_views and implementation details of getitem") @unittest.skipIf(CI and Device.DEFAULT in {"PTX", "AMD", "NV"}, "very slow") def test_indexing_multireduce(self): dataset = Tensor.rand(16384, 256).realize() @@ -142,7 +124,7 @@ class TestLinearizer(unittest.TestCase): with Context(FUSE_ARANGE=1): sink = dataset[idxs].contiguous().kernelize().uop.base.src[1].arg.ast real_index = dataset.numpy()[idxs.numpy()].reshape(4, 256, 1, 1) - helper_linearizer_ast(sink, [dataset, idxs], wanna_output=[real_index]) + helper_linearizer_ast(push_views(sink), [dataset, idxs], wanna_output=[real_index]) def test_two_nested_range(self): a = Tensor.randn(2, ).realize() @@ -151,7 +133,7 @@ class TestLinearizer(unittest.TestCase): uops = get_program(lin.get_optimized_ast(), lin.opts).uops ranges = [i for i,u in enumerate(uops) if u.op is Ops.RANGE] assert len(ranges) == 1 # NOTE: it collapses now - # RANGE -> LOAD -> RANGE -> ASSIGN + # RANGE -> LOAD -> RANGE -> STORE #assert any(x.op is Ops.LOAD for x in uops[ranges[0]:ranges[1]]) def test_three_nested_range(self): @@ -161,7 +143,7 @@ class TestLinearizer(unittest.TestCase): uops = get_program(lin.get_optimized_ast(), lin.opts).uops ranges = [i for i,u in enumerate(uops) if u.op is Ops.RANGE] assert len(ranges) == 1 # NOTE: it collapses now - # RANGE -> RANGE -> LOAD -> RANGE -> ASSIGN + # RANGE -> RANGE -> LOAD -> RANGE -> STORE # NOTE: nothing should toposort between the first two ranges #assert ranges[0]+1 == ranges[1] #assert any(x.op is Ops.LOAD for x in uops[ranges[1]:ranges[2]]) @@ -172,7 +154,7 @@ class TestLinearizer(unittest.TestCase): lin = helper_linearizer_opt(out, wanna_output=[24])[0] uops = get_program(lin.get_optimized_ast(), lin.opts).uops ranges = [i for i,u in enumerate(uops) if u.op is Ops.RANGE] - # RANGE -> ALU -> RANGE -> ALU + LOAD -> ASSIGN + # RANGE -> ALU -> RANGE -> ALU + LOAD -> STORE assert any(x.op in GroupOp.ALU for x in uops[ranges[0]:ranges[1]]) assert not any(x.op is Ops.LOAD for x in uops[ranges[0]:ranges[1]]) assert any(x.op in {*GroupOp.ALU, Ops.LOAD} for x in uops[ranges[1]:]) @@ -184,7 +166,7 @@ class TestLinearizer(unittest.TestCase): lin = helper_linearizer_opt(out, wanna_output=[(a.numpy()+b.numpy()[0]).sum()+b.numpy()])[0] uops = get_program(lin.get_optimized_ast(), lin.opts).uops ranges = [i for i,u in enumerate(uops) if u.op is Ops.RANGE] - # LOAD -> RANGE -> LOAD -> ASSIGN + # LOAD -> RANGE -> LOAD -> STORE assert len([x for x in uops[:ranges[0]] if x.op is Ops.LOAD]) == 1 def test_range_outer_op_before_phi_nested_range(self): @@ -196,11 +178,11 @@ class TestLinearizer(unittest.TestCase): ranges = [i for i,u in enumerate(uops) if u.op is Ops.RANGE] assert len(ranges) == 1 # NOTE: it collapses now #if getenv("PTX"): - # LOAD -> RANGE -> CAST -> ALU -> ALU -> LOAD -> ALU -> RANGE -> ALU -> ASSIGN + # LOAD -> RANGE -> CAST -> ALU -> ALU -> LOAD -> ALU -> RANGE -> ALU -> STORE # assert uops[ranges[0]-2].op is Ops.LOAD # assert ranges[1] == ranges[0]+6 # assert [x.op for x in uops[ranges[1]-2:ranges[1]]] == [Ops.LOAD, Ops.ALU] - # LOAD -> RANGE -> LOAD -> ALU -> RANGE -> ASSIGN + # LOAD -> RANGE -> LOAD -> ALU -> RANGE -> STORE #else: # assert uops[ranges[0]-2].op is Ops.LOAD # assert ranges[1] == ranges[0]+3 @@ -212,7 +194,7 @@ class TestLinearizer(unittest.TestCase): out = a.sum() * a.sum() lin = helper_linearizer_opt(out, wanna_output=[a.numpy().sum()*a.numpy().sum()])[0] uops = get_program(lin.get_optimized_ast(), lin.opts).uops - # RANGE -> LOAD -> ASSIGN -> ALU + # RANGE -> LOAD -> STORE -> ALU end = max(i for i,u in enumerate(uops) if u.op is Ops.ENDRANGE) # the INDEX can be first assert uops[end+1].op in GroupOp.ALU or uops[end+2].op in GroupOp.ALU @@ -223,7 +205,7 @@ class TestLinearizer(unittest.TestCase): out = a.reshape(2, 1).expand(2, 3).sum() + a.reshape(2, 1).expand(2, 3).sum() lin = helper_linearizer_opt(out, wanna_output=[(np.broadcast_to(a.numpy().reshape(2, 1), (2, 3))).sum()*2])[0] uops = get_program(lin.get_optimized_ast(), lin.opts).uops - # RANGE -> LOAD -> ASSIGN -> ALU + # RANGE -> LOAD -> STORE -> ALU end = max(i for i,u in enumerate(uops) if u.op is Ops.ENDRANGE) # the INDEX can be first assert uops[end+1].op in GroupOp.ALU or uops[end+2].op in GroupOp.ALU @@ -235,9 +217,7 @@ class TestLinearizer(unittest.TestCase): # these are of size 3 to avoid float4 coalesce r = a[:-1] + a[1:] - k = Kernel(r.schedule()[-1].ast) - k.apply_opt(Opt(op=OptOps.UPCAST, axis=0, arg=0)) - uops = get_program(k.get_optimized_ast(), k.opts).uops + uops = get_program(r.schedule()[-1].ast, opts=[Opt(op=OptOps.UPCAST, axis=0, arg=0)]).uops num_loads = len([uop for uop in uops if uop.op is Ops.LOAD]) assert num_loads <= 4, "more load uops than needed" assert num_loads >= 4, "unexpected number of uops, maybe this test needs updating?" @@ -248,9 +228,7 @@ class TestLinearizer(unittest.TestCase): a, b = Tensor.randn(1).realize(), Tensor.randn(1).realize() r = a.expand([2]) + b.expand([2]) - k = Kernel(r.schedule()[-1].ast) - k.apply_opt(Opt(op=OptOps.UPCAST, axis=0, arg=0)) - uops = get_program(k.get_optimized_ast(), k.opts).uops + uops = get_program(r.schedule()[-1].ast, opts=[Opt(op=OptOps.UPCAST, axis=0, arg=0)]).uops num_ops = len([uop for uop in uops if uop.op in GroupOp.ALU]) assert num_ops <= 1, "more alu uops than needed" @@ -259,10 +237,7 @@ class TestLinearizer(unittest.TestCase): x, w = Tensor.randn((1,1,3)).realize(), Tensor.randn((1,1,2)).realize() r = Tensor.conv2d(x,w,padding=1).relu() - k = Kernel(r.schedule()[-1].ast) - k.apply_opt(Opt(op=OptOps.UPCAST, axis=0, arg=0)) - k.apply_opt(Opt(op=OptOps.UNROLL, axis=0, arg=0)) - uops = get_program(k.get_optimized_ast(), k.opts).uops + uops = get_program(r.schedule()[-1].ast, opts=[Opt(op=OptOps.UPCAST, axis=0, arg=0), Opt(op=OptOps.UNROLL, axis=0, arg=0)]).uops accs = [u for u in uops if u.op is Ops.DEFINE_REG] stores = [u for u in uops if u.op is Ops.STORE] assert len(accs) == 0 # it's removed now @@ -274,9 +249,7 @@ class TestLinearizer(unittest.TestCase): @unittest.skipUnless(Device.DEFAULT == "CPU", "test only for CPU") def test_upcast_with_locals_cpu(self): out = Tensor.ones(64,64).contiguous() @ Tensor.ones(64,64).contiguous() - k = Kernel(out.schedule()[-1].ast) - k.apply_opt(Opt(OptOps.LOCAL, axis=0, arg=4)) - prg = get_program(k.get_optimized_ast(), k.opts) + prg = get_program(out.schedule()[-1].ast, opts=[Opt(OptOps.LOCAL, axis=0, arg=4)]).uops self.assertEqual(len(prg.src.split("for")), 5) @unittest.skipUnless(Device[Device.DEFAULT].renderer.has_local, "test requires locals") @@ -286,10 +259,8 @@ class TestLinearizer(unittest.TestCase): def test_upcast_with_locals(self): x, y = Tensor.rand(1,128), Tensor.rand(128, 128) r = (x@y).relu() - realized_ast = r.schedule()[-1].ast opts_to_apply = [Opt(op=OptOps.GROUP, axis=0, arg=8), Opt(op=OptOps.LOCAL, axis=0, arg=4), Opt(op=OptOps.UPCAST, axis=0, arg=4)] - realized_ast = realized_ast.replace(arg=KernelInfo(opts_to_apply=tuple(opts_to_apply))) - program = get_program(realized_ast, Device[Device.DEFAULT].renderer) + program = get_program(r.schedule()[-1].ast, opts=opts_to_apply) stores = [u for u in program.uops if u.op is Ops.STORE and u.src[0].dtype.addrspace != AddrSpace.REG] @@ -303,10 +274,7 @@ class TestLinearizer(unittest.TestCase): def test_zero_fold(self): a, b = Tensor.randn(1).realize(), Tensor.randn(1).realize() r = Tensor.stack(a, b) - - k = Kernel(r.schedule()[-1].ast) - k.apply_opt(Opt(op=OptOps.UPCAST, axis=0, arg=0)) - uops = get_program(k.get_optimized_ast(), k.opts).uops + uops = get_program(r.schedule()[-1].ast, opts=[Opt(op=OptOps.UPCAST, axis=0, arg=0)]).uops num_ops = len([uop for uop in uops if uop.op in GroupOp.ALU]) assert num_ops == 0, "more alu uops than needed" @@ -316,16 +284,14 @@ class TestLinearizer(unittest.TestCase): if is_dtype_supported(tensor_dtype) and is_dtype_supported(acc_dtype): a = Tensor([1, 2, 3], dtype=tensor_dtype).sum() realized_ast = a.schedule()[-1].ast - realized_ast = realized_ast.replace(arg=KernelInfo(opts_to_apply=tuple())) - program = get_program(realized_ast, Device[Device.DEFAULT].renderer) + program = get_program(realized_ast, opts=[]) local = [uop for uop in program.uops if uop.op is Ops.DEFINE_REG] assert local[0].dtype.base == acc_dtype def test_arg_acc_dtype(self): def helper_arg_acc_dtype(c: Tensor, expected_dtype:DType): realized_ast = c.schedule()[-1].ast - realized_ast = realized_ast.replace(arg=KernelInfo(opts_to_apply=tuple())) - program = get_program(realized_ast, Device[Device.DEFAULT].renderer) + program = get_program(realized_ast, opts=[]) local = [uop for uop in program.uops if uop.op is Ops.DEFINE_REG] self.assertEqual(local[0].dtype.base, expected_dtype) @@ -361,11 +327,7 @@ class TestLinearizer(unittest.TestCase): n, m, k = tc.dims[0], tc.dims[1], 2 if AMX else tc.dims[2] a, b = Tensor.rand(m, k, dtype=tc.dtype_in), Tensor.rand(k, n, dtype=tc.dtype_in) r = a.matmul(b, dtype=tc.dtype_out) - sched = r.schedule() - realized_ast = sched[-1].ast - kernel = Kernel(realized_ast) - kernel.apply_tensor_cores(1, axis=0, tc_select=-1, tc_opt=2) - prg = get_program(kernel.get_optimized_ast(), kernel.opts) + prg = get_program(r.schedule()[-1].ast, opts=[Opt(op=OptOps.TC, axis=0, arg=(-1, 2, 1))]) if Device.DEFAULT == "LLVM": assert "0x201000" in prg.src elif Device.DEFAULT == "AMD" and AMD_LLVM: @@ -386,7 +348,7 @@ class TestLinearizer(unittest.TestCase): # Internal bug: zero-stride dimensions combined with a mask may produce wrong index/valid for pad == 1 on AMD @unittest.skipUnless((Device.DEFAULT == "AMD") or (Device.DEFAULT == "PYTHON" and getenv("EMULATE_AMD")), "test for AMD's tc") @unittest.skipUnless(Device[Device.DEFAULT].renderer.tensor_cores, "test requires tensor cores") - @unittest.expectedFailure + @unittest.skip("warp elements not duplicated properly across lanes") def test_tensor_cores_padded_amd(self): for tc in Device[Device.DEFAULT].renderer.tensor_cores: if not is_dtype_supported(tc.dtype_in) or not is_dtype_supported(tc.dtype_out): continue @@ -444,7 +406,7 @@ class TestLinearizer(unittest.TestCase): np.testing.assert_allclose(result, golden_result, atol=0.1, rtol=0.2) # check that get_kernel_actions produces all 9 options - from tinygrad.opt.search import get_kernel_actions + from tinygrad.codegen.opt.search import get_kernel_actions tc_actions = [k for i, k in get_kernel_actions(Kernel(realized_ast), False).items() if k.applied_opts[0].op == OptOps.TC] available_tc = len([x for x in Device[Device.DEFAULT].renderer.tensor_cores if x.dtype_in == tc.dtype_in and x.dtype_out == tc.dtype_out]) @@ -456,9 +418,9 @@ class TestLinearizer(unittest.TestCase): x, y = Tensor.rand(128, 128, dtype=tc.dtype_in), Tensor.rand(128, 128, dtype=tc.dtype_in) r = x.matmul(y, dtype=tc.dtype_out) k = helper_linearizer_opt(r, [[Opt(OptOps.UNROLL, 0, 4)]], apply_tc=True, atol=3e-2, rtol=1e-3)[-1] - for u in get_program(k.get_optimized_ast(), k.opts).uops: + for u in get_program(k.ast, k.opts, k.applied_opts).uops: if u.op is Ops.WMMA: - assert u.src[-1].src[0].op != Ops.ASSIGN + assert u.src[-1].src[0].op != Ops.STORE @unittest.skipUnless(Device[Device.DEFAULT].renderer.tensor_cores, "test requires tensor cores") @unittest.skipIf(Device.DEFAULT in {"CPU", "LLVM"}, "CPU does not support using a different type for accumulation") @@ -467,37 +429,43 @@ class TestLinearizer(unittest.TestCase): x, y = Tensor.rand(128, 128, dtype=tc.dtype_in), Tensor.rand(128, 128, dtype=tc.dtype_in) r = x.matmul(y, dtype=tc.dtype_out) k = helper_linearizer_opt(r, [[Opt(OptOps.UNROLL, 0, 4)]], apply_tc=True, atol=3e-2, rtol=1e-3)[-1] - for u in get_program(k.get_optimized_ast(), k.opts).uops: + for u in get_program(k.ast, k.opts, k.applied_opts).uops: if u.op is Ops.WMMA: #assert u.src[-1].dtype == dtypes.float.vec(prod(tc.thread_local_sizes[2])) - assert u.src[-1].src[0].op != Ops.ASSIGN + assert u.src[-1].src[0].op != Ops.STORE @unittest.skipUnless(Device[Device.DEFAULT].renderer.tensor_cores, "test requires tensor cores") @unittest.skipIf(Device.DEFAULT in {"CPU", "LLVM"}, "CPU does not support using a different type for accumulation") def test_tensor_cores_unroll_casted_phi_with_children(self): - # all ASSIGN children are outside the loop + # all STORE children are outside the loop tc = [tc for tc in Device[Device.DEFAULT].renderer.tensor_cores if tc.dtype_in != tc.dtype_out][0] x, y = Tensor.rand(128, 128, dtype=tc.dtype_in), Tensor.rand(128, 128, dtype=tc.dtype_in) r = x.matmul(y, dtype=tc.dtype_out).relu() k = helper_linearizer_opt(r, [[Opt(OptOps.UNROLL, 0, 4)]], apply_tc=True, atol=3e-2, rtol=1e-3)[-1] - for u in get_program(k.get_optimized_ast(), k.opts).uops: + for u in get_program(k.ast, k.opts, k.applied_opts).uops: if u.op is Ops.WMMA: #assert u.src[-1].dtype == dtypes.float.vec(prod(tc.thread_local_sizes[2])) - assert u.src[-1].src[0].op != Ops.ASSIGN + assert u.src[-1].src[0].op != Ops.STORE @unittest.skipUnless(Device[Device.DEFAULT].renderer.supports_float4, "test requires float4") def test_simple_unroll_no_between_phi_dependencies(self): x, y = Tensor.rand(128, 128), Tensor.rand(128, 128) r = (x@y).relu() k = helper_linearizer_opt(r, [[Opt(OptOps.UNROLL, 0, 4), Opt(OptOps.UPCAST, 0, 4)]])[-1] - # the uops graph is RANGE -> DEFINE_ACC -> 4x ALU -> 4x ASSIGN -> ENDRANGE - uops = get_program(k.get_optimized_ast(), k.opts).uops + # the uops graph is DEFINE_REG -> 4x STORE 0.0 -> RANGE -> 4x ALU -> 4x STORE -> ENDRANGE + uops = get_program(k.ast, k.opts, k.applied_opts).uops + begin_range = [i for i, x in enumerate(uops) if x.op is Ops.RANGE][-1] + end_range = [i for i, x in enumerate(uops) if x.op is Ops.ENDRANGE][0] + for i,u in enumerate(uops): print(i, u.op, [uops.index(s) for s in u.src], u.arg, u.dtype) for u in uops: - if u.op is Ops.ASSIGN: - assert u.src[1].op in GroupOp.ALU - # children of ASSIGN are placed after ENDRANGE - if any(x.op is Ops.ASSIGN for x in u.src): - end_range = [i for i, x in enumerate(uops) if x.op is Ops.ENDRANGE][0] + if u.op is Ops.STORE and isinstance(dt:=u.src[0].dtype, PtrDType) and dt.addrspace is AddrSpace.REG: + if uops.index(u) < begin_range: + assert u.src[1].op is Ops.CONST + else: + assert u.src[1].op in GroupOp.ALU + assert begin_range < uops.index(u) < end_range + # children of STORE are placed after ENDRANGE + if any(x.op is Ops.STORE and x.src[1].op in GroupOp.ALU for x in u.src): assert end_range < uops.index(u) def test_grouped_dims(self): @@ -576,7 +544,7 @@ class TestLinearizer(unittest.TestCase): # shrink so that the dims do not collapse t = Tensor.ones(5, 6, 7).contiguous().realize().shrink(((0, 4), (0, 5), (0, 6))) k = helper_linearizer_opt(t+1)[0] - uops = get_program(k.get_optimized_ast(), k.opts).uops + uops = get_program(k.ast, k.opts, k.applied_opts).uops idxs = dedup([uop for uop in uops if uop.op is Ops.SPECIAL]) idxs = sorted(idxs, key=lambda uop: uop.arg[0]) assert idxs[0].arg == ('gidx0', 6), idxs[0].arg @@ -616,12 +584,13 @@ class TestLinearizer(unittest.TestCase): def test_phi_simplification(self): def helper(t, max_ops=0): k = helper_linearizer_opt(t)[-1] - uops = get_program(k.get_optimized_ast(), k.opts).uops + uops = get_program(k.ast, k.opts, k.applied_opts).uops # ignore kernel optimized IF statements for now if if_op:=next((u for u in uops if u.op is Ops.IF), None): uops = uops[:uops.index(if_op)] assert len(set([u.op for u in uops if u.op in {Ops.RANGE, Ops.SPECIAL}])) == 1, "has either specials or ranges, not both" - assert len([u for u in uops if u.op is Ops.ASSIGN]) == 0, "ASSIGN should have been simplified" + reg_stores = [u for u in uops if u.op is Ops.STORE and isinstance(dt:=u.src[0].dtype, PtrDType) and dt.addrspace == AddrSpace.REG] + assert len(reg_stores) == 0, "STORE to reg should have been simplified" # TODO: once uops track min/max this will be fixed #assert len([u for u in uops if u.op is Ops.MAX]) <= max_ops, "no unnecessary MAX ops" @@ -647,7 +616,7 @@ class TestLinearizer(unittest.TestCase): x, y = Tensor.randn(64,64), Tensor.randn(64,64) out = x.matmul(y) k = helper_linearizer_opt(out)[-1] - uops = get_program(k.get_optimized_ast(), k.opts).uops + uops = get_program(k.ast, k.opts, k.applied_opts).uops # check that the float4 cast collapses store_vals = [u.src[1] for u in uops if u.op is Ops.STORE and u.src[0].dtype.addrspace != AddrSpace.REG] for val in store_vals: @@ -672,7 +641,7 @@ class TestLinearizer(unittest.TestCase): x = Tensor.randn((4,3,6,6)).realize() out = x.flip((0,1)).contiguous() k = helper_linearizer_opt(out)[-1] - store_val = [u.src[1] for u in get_program(k.get_optimized_ast(), k.opts).uops if u.op is Ops.STORE][0] + store_val = [u.src[1] for u in get_program(k.ast, k.opts, k.applied_opts).uops if u.op is Ops.STORE][0] assert store_val.dtype == dtypes.float.vec(4) and store_val.op is not Ops.VECTORIZE @unittest.skipUnless(Device[Device.DEFAULT].renderer.has_local, "test requires locals") @@ -685,7 +654,7 @@ class TestLinearizer(unittest.TestCase): Opt(OptOps.UNROLL, 0, 4), Opt(OptOps.UPCAST, 0, 4), Opt(OptOps.UPCAST, 1, 2)] # upcast accs in both reduces k = helper_linearizer_opt(out, opts=[opt])[-1] def get_recursive(uop): return set.union(set(uop.src), [uop], *[get_recursive(v) for v in uop.src]) - uops = get_program(k.get_optimized_ast(), k.opts).uops + uops = get_program(k.ast, k.opts, k.applied_opts).uops local_stores = [u for u in uops if u.op is Ops.STORE and any(x.op is Ops.DEFINE_LOCAL for x in get_recursive(u.src[0]))] global_stores = [u for u in uops if u.op is Ops.STORE and any(x.op is Ops.DEFINE_GLOBAL for x in get_recursive(u.src[0]))] barrier = [u for u in uops if u.op is Ops.BARRIER][0] @@ -705,7 +674,7 @@ class TestLinearizer(unittest.TestCase): x, y = Tensor.rand(1,128), Tensor.rand(128, 128) r = (x@y).relu() k = helper_linearizer_opt(r)[-1] - uops = get_program(k.get_optimized_ast(), k.opts).uops + uops = get_program(k.ast, k.opts, k.applied_opts).uops stores = [u for u in uops if u.op is Ops.STORE and u.src[0].dtype.addrspace != AddrSpace.REG] # the float4 value stores directly in lds and we skip upcast @@ -731,7 +700,7 @@ class TestLinearizer(unittest.TestCase): Opt(op=OptOps.LOCAL, axis=1, arg=2), Opt(op=OptOps.UPCAST, axis=3, arg=2) ] k = helper_linearizer_ast(ast, [Tensor.randn(240*40).realize()], opts=[opt])[-1] - out = [u for u in get_program(k.get_optimized_ast(), k.opts).uops if u.op is Ops.STORE][0] + out = [u for u in get_program(k.ast, k.opts, k.applied_opts).uops if u.op is Ops.STORE][0] assert out.src[1].op is Ops.VECTORIZE and out.src[1].dtype == dtypes.float.vec(4) @unittest.skipUnless(Device[Device.DEFAULT].renderer.has_local, "test requires locals") @@ -749,7 +718,7 @@ class TestLinearizer(unittest.TestCase): Opt(op=OptOps.UPCAST, axis=1, arg=0), Opt(op=OptOps.UPCAST, axis=1, arg=4), Opt(op=OptOps.LOCAL, axis=0, arg=8), Opt(op=OptOps.UPCAST, axis=1, arg=0), Opt(op=OptOps.UPCAST, axis=0, arg=2)] k = helper_linearizer_ast(ast, [Tensor.randn(8*32).realize()], opts=[opt])[-1] - out = [u for u in get_program(k.get_optimized_ast(), k.opts).uops if u.op is Ops.STORE][0] + out = [u for u in get_program(k.ast, k.opts, k.applied_opts).uops if u.op is Ops.STORE][0] assert out.src[1].op is Ops.VECTORIZE and out.src[1].dtype.count != 1 @unittest.skipUnless(Device[Device.DEFAULT].renderer.supports_float4, "need backends that support float4") @@ -783,11 +752,7 @@ class TestFloat4(unittest.TestCase): c = a + b s = c.schedule()[0] - k = Kernel(s.ast) - k.apply_opt(Opt(op=OptOps.UPCAST, axis=0, arg=4)) - k.apply_opt(Opt(op=OptOps.UPCAST, axis=0, arg=2)) - uops = get_program(k.get_optimized_ast(), k.opts).uops - + uops = get_program(s.ast, opts=[Opt(op=OptOps.UPCAST, axis=0, arg=4), Opt(op=OptOps.UPCAST, axis=0, arg=2)]).uops assert TestFloat4.count_float4(uops) == (4, 2) @unittest.skipUnless(Device.DEFAULT in {"CPU", "LLVM"} and AMX, "Only CPU with AMX upcasts float up to size 16") @@ -798,10 +763,7 @@ class TestFloat4(unittest.TestCase): c = a + b s = c.schedule()[0] - k = Kernel(s.ast) - k.apply_opt(Opt(op=OptOps.UPCAST, axis=0, arg=4)) - k.apply_opt(Opt(op=OptOps.UPCAST, axis=0, arg=shift)) - return get_program(k.get_optimized_ast(), k.opts).uops + return get_program(s.ast, opts=[Opt(op=OptOps.UPCAST, axis=0, arg=4), Opt(op=OptOps.UPCAST, axis=0, arg=shift)]).uops sizes = [12, 8, 16] shifts = [3, 2, 4] @@ -831,10 +793,7 @@ class TestFloat4(unittest.TestCase): c = a + b s = c.schedule()[0] - k = Kernel(s.ast) - k.apply_opt(Opt(op=OptOps.UPCAST, axis=1, arg=4)) - k.apply_opt(Opt(op=OptOps.UPCAST, axis=1, arg=2)) - uops = get_program(k.get_optimized_ast(), k.opts).uops + uops = get_program(s.ast, opts=[Opt(op=OptOps.UPCAST, axis=1, arg=4), Opt(op=OptOps.UPCAST, axis=1, arg=2)]).uops assert TestFloat4.count_float4(uops) == (0, 2) @@ -846,10 +805,7 @@ class TestFloat4(unittest.TestCase): c = a + b s = c.schedule()[0] - k = Kernel(s.ast) - k.shift_to(1, 4, AxisType.UPCAST) # manual trigger float4 dim - k.shift_to(1, shift, AxisType.UPCAST, insert_at=k.shape_len-1) - return get_program(k.get_optimized_ast(), k.opts).uops + return get_program(s.ast, opts=[Opt(op=OptOps.UPCAST, axis=1, arg=4), Opt(op=OptOps.UPCAST, axis=1, arg=shift)]).uops sizes = [13, 9, 17] shifts = [3, 2, 4] @@ -867,9 +823,7 @@ class TestFloat4(unittest.TestCase): # float4 should be emitted (the reduce axis of size 4 is the float4 axis here) s = c.schedule()[0] - k = Kernel(s.ast) - k.apply_opt(Opt(op=OptOps.UNROLL, axis=0, arg=4)) - uops = get_program(k.get_optimized_ast(), k.opts).uops + uops = get_program(s.ast, opts=[Opt(op=OptOps.UNROLL, axis=0, arg=4)]).uops assert TestFloat4.count_float4(uops) == (0, 0) @@ -883,10 +837,7 @@ class TestFloat4(unittest.TestCase): # UPDATE: now we do this fusion s = c.schedule()[0] - k = Kernel(s.ast) - k.apply_opt(Opt(op=OptOps.UPCAST, axis=0, arg=0)) - k.apply_opt(Opt(op=OptOps.UNROLL, axis=0, arg=0)) - uops = get_program(k.get_optimized_ast(), k.opts).uops + uops = get_program(s.ast, opts=[Opt(op=OptOps.UPCAST, axis=0, arg=0), Opt(op=OptOps.UNROLL, axis=0, arg=0)]).uops assert TestFloat4.count_float4(uops) in {(0,1), (1,1)} @@ -899,9 +850,7 @@ class TestFloat4(unittest.TestCase): # since the top axis is not contiguous. s = c.schedule()[0] - k = Kernel(s.ast) - k.apply_opt(Opt(op=OptOps.UPCAST, axis=0, arg=4)) - uops = get_program(k.get_optimized_ast(), k.opts).uops + uops = get_program(s.ast, opts=[Opt(op=OptOps.UPCAST, axis=0, arg=4)]).uops assert TestFloat4.count_float4(uops) == (0, 1) @@ -913,9 +862,7 @@ class TestFloat4(unittest.TestCase): # should float4 b but not a s = c.schedule()[0] - k = Kernel(s.ast) - k.apply_opt(Opt(op=OptOps.UPCAST, axis=0, arg=4)) - uops = get_program(k.get_optimized_ast(), k.opts).uops + uops = get_program(s.ast, opts=[Opt(op=OptOps.UPCAST, axis=0, arg=4)]).uops assert TestFloat4.count_float4(uops) == (1, 1) @@ -1004,7 +951,7 @@ class TestHandCodedOpts(unittest.TestCase): layer_2 = Tensor.cat(layer_1.unsqueeze(0), Tensor.empty(6, 20)) s = layer_2.schedule()[-1] - k = Kernel(s.ast) + k = Kernel(push_views(s.ast)) k.apply_opts(hand_coded_optimizations(k)) assert len(k.bufs) == 6 # make sure all ops are done in one kernel # masked upcast should upcast masked axis of size 7 @@ -1017,7 +964,7 @@ class TestHandCodedOpts(unittest.TestCase): monster = Tensor.stack(*[Tensor.stack(*[Tensor.empty(16) for _ in range(6)]) for _ in range(6)]) s = monster.schedule()[-1] - k = Kernel(s.ast) + k = Kernel(push_views(s.ast)) k.apply_opts(hand_coded_optimizations(k)) assert len(k.bufs) == 37 # make sure all ops are done in one kernel # should upcast the two Tensor.stacks @@ -1033,7 +980,7 @@ class TestHandCodedOpts(unittest.TestCase): wino_schedule = out.schedule() # collect upcasts of tile transform kernels for i, si in enumerate(wino_schedule): - k = Kernel(si.ast) + k = Kernel(push_views(si.ast)) k.apply_opts(hand_coded_optimizations(k)) if k.reduceop is not None: continue # not a tile transform kernel (there is a gemm reduce kernel) if len(k.bufs) < 22: continue # not a tile transform kernel (there's a permute kernel at the end) @@ -1045,7 +992,7 @@ class TestHandCodedOpts(unittest.TestCase): backward_schedule = Tensor.schedule(x.grad, w.grad) for si in backward_schedule: - k = Kernel(si.ast) + k = Kernel(push_views(si.ast)) k.apply_opts(hand_coded_optimizations(k)) if len(k.bufs) < 20: continue # not a tile transform kernel # heuristic number to make sure that at least some upcasts but not too many upcasts are being done @@ -1102,7 +1049,7 @@ def _helper_linearizer_opt_ast(realized_ast:UOp, real_bufs:list[Buffer], opts=[] outbufs = [real_bufs[x.src[0].base.arg] for x in realized_ast.src] device = real_bufs[0].device - def get_prg(k:Kernel): return CompiledRunner(replace(get_program(k.get_optimized_ast(), k.opts), device=device)) + def get_prg(k:Kernel): return CompiledRunner(replace(get_program(k.ast, k.opts, k.applied_opts), device=device)) def check_opt(opts, create_k, expected_color_size): k = create_k() diff --git a/tinygrad_repo/test/test_linearizer_dumb.py b/tinygrad_repo/test/test_linearizer_dumb.py index a5dffaf11..9074177e1 100644 --- a/tinygrad_repo/test/test_linearizer_dumb.py +++ b/tinygrad_repo/test/test_linearizer_dumb.py @@ -8,8 +8,7 @@ from tinygrad.device import is_dtype_supported from tinygrad.uop.ops import UOp, Ops from tinygrad.helpers import getenv from tinygrad.shape.shapetracker import ShapeTracker, View -from tinygrad.opt.search import Opt, OptOps -from tinygrad.opt.kernel import Kernel +from tinygrad.codegen.opt.search import Opt, OptOps from tinygrad.engine.realize import get_program class TestLinearizerDumb(unittest.TestCase): @@ -36,9 +35,7 @@ class TestLinearizerDumb(unittest.TestCase): UOp(Ops.CONST, dtypes.half, arg=0.0, src=( x16,)),)),)),)) opts = [Opt(op=OptOps.TC, axis=2, arg=(-1, 2, 1)), Opt(op=OptOps.UPCAST, axis=2, arg=0), Opt(op=OptOps.UNROLL, axis=1, arg=0)] - k = Kernel(ast, opts=Device["METAL"].renderer) - k.apply_opts(opts) - prg = get_program(k.get_optimized_ast(), k.opts) + prg = get_program(ast, Device["METAL"].renderer, opts) print(prg.src) Device[Device.DEFAULT].compiler.compile_cached(prg.src) gate_count = len([x for x in prg.src.splitlines() if "if" in x]) @@ -75,13 +72,12 @@ class TestLinearizerDumb(unittest.TestCase): UOp(Ops.CONST, dtypes.int, arg=1000, src=( x14,)),)),)),)),)) opts = [Opt(op=OptOps.UNROLL, axis=0, arg=4), Opt(op=OptOps.LOCAL, axis=0, arg=8)] - k = Kernel(ast, opts=Device[Device.DEFAULT].renderer) - k.apply_opts(opts) - prg = get_program(k.get_optimized_ast(), k.opts) + prg = get_program(ast, Device[Device.DEFAULT].renderer, opts) print(prg.src) assert prg.uops is not None and not any(uop.op is Ops.MAX for uop in prg.uops), "leftover MAX" @unittest.skipUnless(Device[Device.DEFAULT].renderer.has_local, "need local") + @unittest.skip("not applicable") def test_expander_new_srcs(self): ast = UOp(Ops.SINK, dtypes.void, arg=None, src=( UOp(Ops.STORE, dtypes.void, arg=None, src=( @@ -92,9 +88,7 @@ class TestLinearizerDumb(unittest.TestCase): UOp(Ops.VIEW, dtypes.float.ptr(25), arg=ShapeTracker(views=(View(shape=(26, 49), strides=(0, -1), offset=48, mask=((0, 26), (24, 49)), contiguous=False), View(shape=(25, 25), strides=(1, 50), offset=0, mask=None, contiguous=False))), src=( UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(25), arg=1, src=()),)),)),)),)),)) opts = [Opt(op=OptOps.GROUP, axis=0, arg=0), Opt(op=OptOps.PADTO, axis=0, arg=32), Opt(op=OptOps.LOCAL, axis=0, arg=4), Opt(op=OptOps.UPCAST, axis=0, arg=0)] - k = Kernel(ast, opts=Device[Device.DEFAULT].renderer) - k.apply_opts(opts) - prg = get_program(k.get_optimized_ast(), k.opts) + prg = get_program(ast, Device[Device.DEFAULT].renderer, opts) print(prg.src) if_uops = [u for u in prg.uops if u.op is Ops.IF] self.assertIn(len(if_uops), {1,2,3}) @@ -134,8 +128,7 @@ class TestLinearizerDumb(unittest.TestCase): UOp(Ops.LOAD, dtypes.half, arg=None, src=( UOp(Ops.VIEW, dtypes.half.ptr(131072000), arg=ShapeTracker(views=(View(shape=(4096, 32000, 1), strides=(1, 4096, 0), offset=0, mask=None, contiguous=False),)), src=( UOp(Ops.DEFINE_GLOBAL, dtypes.half.ptr(131072000), arg=2, src=()),)),)),)),)),)),)),)),)) - k = Kernel(ast, opts=Device[Device.DEFAULT].renderer) - prg = get_program(k.get_optimized_ast(), k.opts) + prg = get_program(ast, Device[Device.DEFAULT].renderer) print(prg.src) @unittest.expectedFailure @@ -162,11 +155,9 @@ class TestLinearizerDumb(unittest.TestCase): UOp(Ops.VIEW, dtypes.float.ptr(18), arg=ShapeTracker(views=(View(shape=(3, 6), strides=(6, 1), offset=0, mask=None, contiguous=True),)), src=( UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(18), arg=2, src=()),)),)),)),)),)),)) opts = [Opt(op=OptOps.UNROLL, axis=0, arg=0)] - k = Kernel(ast, opts=Device[Device.DEFAULT].renderer) - k.apply_opts(opts) - prg = get_program(k.get_optimized_ast(), k.opts) + prg = get_program(ast, Device[Device.DEFAULT].renderer, opts) print(prg.src) - load_idxs = [x.src[1] for x in k.uops if x.op is Ops.LOAD and x.src[0].arg == 2] + load_idxs = [x.src[1] for x in prg.uops if x.op is Ops.LOAD and x.src[0].arg == 2] assert load_idxs[0] < load_idxs[1], f"first loaded idx {load_idxs[0].arg} then {load_idxs[1].arg}!" @unittest.expectedFailure @@ -186,11 +177,9 @@ class TestLinearizerDumb(unittest.TestCase): UOp(Ops.VIEW, dtypes.float.ptr(1040), arg=ShapeTracker(views=(View(shape=(4, 5, 13, 1, 1, 1, 4, 1, 4, 3, 3), strides=(260, 13, 1, 0, 0, 0, 65, 0, 0, 0, 0), offset=0, mask=None, contiguous=False),)), src=( UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(1040), arg=2, src=()),)),)),)),)),)),)) opts = [Opt(op=OptOps.UPCAST, axis=3, arg=0), Opt(op=OptOps.UPCAST, axis=2, arg=0)] - k = Kernel(ast, opts=Device[Device.DEFAULT].renderer) - k.apply_opts(opts) - prg = get_program(k.get_optimized_ast(), k.opts) + prg = get_program(ast, Device[Device.DEFAULT].renderer, opts) print(prg.src) - store_idxs = [x.src[1] for x in k.uops if x.op is Ops.STORE] + store_idxs = [x.src[1] for x in prg.uops if x.op is Ops.STORE] for i in range(len(store_idxs) - 1): first_bounds = store_idxs[i].vmin+store_idxs[i].vmax next_bounds = store_idxs[i+1].vmin+store_idxs[i+1].vmax diff --git a/tinygrad_repo/test/test_linearizer_overflows.py b/tinygrad_repo/test/test_linearizer_overflows.py index 76d608bc5..b45565b2d 100644 --- a/tinygrad_repo/test/test_linearizer_overflows.py +++ b/tinygrad_repo/test/test_linearizer_overflows.py @@ -1,9 +1,8 @@ # ruff: noqa: E501 import unittest -from tinygrad import dtypes, Device -from tinygrad.helpers import CI -from tinygrad.opt.kernel import Kernel -from tinygrad.opt.search import Opt, OptOps, bufs_from_lin +from tinygrad import dtypes +from tinygrad.codegen.opt.kernel import Kernel +from tinygrad.codegen.opt.search import Opt, OptOps, bufs_from_lin from extra.optimization.helpers import time_linearizer # stuff needed to unpack a kernel @@ -162,33 +161,5 @@ class TestLinearizerOverflow(unittest.TestCase): opts = [Opt(op=OptOps.UPCAST, axis=3, arg=4), Opt(op=OptOps.LOCAL, axis=3, arg=16), Opt(op=OptOps.UPCAST, axis=1, arg=4), Opt(op=OptOps.LOCAL, axis=2, arg=8), Opt(op=OptOps.UPCAST, axis=1, arg=2), Opt(op=OptOps.UPCAST, axis=2, arg=4)] _test_overflow(ast, opts) -@unittest.skipIf(Device.DEFAULT not in {"GPU", "HSA", "CUDA", "METAL"}, "only backends with locals") -@unittest.skipIf(CI, "slow") -class TestLinearizerOverflowAlt(unittest.TestCase): - def test_overflow_1(self): - BS = 2 - g0, g1, g2 = [UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(), arg=i) for i in range(3)] - in_st_1 = ShapeTracker(views=(View(shape=(1, BS, 1, 3, 8, 230, 8, 230), strides=(0, 150528, 0, 50176, 0, 224, 0, 1), offset=-675, mask=((0, 1), (0, BS), (0, 1), (0, 3), (0, 8), (3, 227), (0, 8), (3, 227)), contiguous=False), - View(shape=(BS, 1, 64, 112, 112, 3, 7, 7), strides=(10156800, 0, 0, 3680, 2, 3385600, 425040, 231), offset=0, mask=None, contiguous=False))).to_uop() - in_st_2 = ShapeTracker(views=(View(shape=(BS, 1, 64, 112, 112, 3, 7, 7), strides=(0, 0, 147, 0, 0, 49, 7, 1), offset=0, mask=None, contiguous=False),)).to_uop() - ot_st = ShapeTracker(views=(View(shape=(BS, 1, 64, 112, 112, 1, 1, 1), strides=(802816, 0, 12544, 112, 1, 0, 0, 0), offset=0, mask=None, contiguous=True),)).to_uop() - prod = UOp(Ops.LOAD, dtypes.float, (g1.view(in_st_1.arg),)) * UOp(Ops.LOAD, dtypes.float, (g2.view(in_st_2.arg),)) - store = UOp(Ops.STORE, src=(g0.view(ot_st.arg), UOp(Ops.REDUCE_AXIS, dtypes.float, (prod,), (Ops.ADD, (7, 6, 5))))) - ast = UOp(Ops.SINK, src=(store,)) - opts = [Opt(op=OptOps.LOCAL, axis=3, arg=16), Opt(op=OptOps.LOCAL, axis=2, arg=2), Opt(op=OptOps.UPCAST, axis=0, arg=2)] - _test_overflow(ast, opts) - def test_overflow_2(self): - BS = 2 - g0, g1, g2 = [UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(), arg=i) for i in range(3)] - in_st_1 = ShapeTracker(views=(View(shape=(1, BS, 1, 3, 8, 230, 8, 230), strides=(0, 150528, 0, 50176, 0, 224, 0, 1), offset=-675, mask=((0, 1), (0, BS), (0, 1), (0, 3), (0, 8), (3, 227), (0, 8), (3, 227)), contiguous=False), - View(shape=(BS, 1, 64, 112, 112, 3, 7, 7), strides=(10156800, 0, 0, 3680, 2, 3385600, 425040, 231), offset=0, mask=None, contiguous=False))).to_uop() - in_st_2 = ShapeTracker(views=(View(shape=(BS, 1, 64, 112, 112, 3, 7, 7), strides=(0, 0, 147, 0, 0, 49, 7, 1), offset=0, mask=None, contiguous=False),)).to_uop() - ot_st = ShapeTracker(views=(View(shape=(BS, 1, 64, 112, 112, 1, 1, 1), strides=(802816, 0, 12544, 112, 1, 0, 0, 0), offset=0, mask=None, contiguous=True),)).to_uop() - prod = UOp(Ops.LOAD, dtypes.float, (g1.view(in_st_1.arg),)) * UOp(Ops.LOAD, dtypes.float, (g2.view(in_st_2.arg),)) - store = UOp(Ops.STORE, src=(g0.view(ot_st.arg), UOp(Ops.REDUCE_AXIS, dtypes.float, (prod,), (Ops.ADD, (7, 6, 5))))) - ast = UOp(Ops.SINK, src=(store,)) - opts = [Opt(op=OptOps.LOCAL, axis=3, arg=16), Opt(op=OptOps.UPCAST, axis=1, arg=4), Opt(op=OptOps.LOCAL, axis=2, arg=16), Opt(op=OptOps.UPCAST, axis=4, arg=4), Opt(op=OptOps.UPCAST, axis=1, arg=2), Opt(op=OptOps.UPCAST, axis=5, arg=2)] - _test_overflow(ast, opts) - if __name__ == '__main__': unittest.main() diff --git a/tinygrad_repo/test/test_memory_planner.py b/tinygrad_repo/test/test_memory_planner.py index 0ba3f9040..6aa03c6be 100644 --- a/tinygrad_repo/test/test_memory_planner.py +++ b/tinygrad_repo/test/test_memory_planner.py @@ -120,5 +120,19 @@ class TestMemoryPlanner(unittest.TestCase): ] check_assign(bs) + def test_very_small_buffers(self): + bs = [ + [b(0, pin=True), b(1, size=32)], + [b(3, size=4), b(4, size=6)], + ] + check_assign(bs) + + def test_very_big_buffers(self): + bs = [ + [b(0, pin=True), b(1, size=34359738368000)], + [b(3, size=1 << 128), b(4, size=1 << 64)], + ] + check_assign(bs) + if __name__ == "__main__": unittest.main() diff --git a/tinygrad_repo/test/test_multitensor.py b/tinygrad_repo/test/test_multitensor.py index 82d688058..dabcf1ed8 100644 --- a/tinygrad_repo/test/test_multitensor.py +++ b/tinygrad_repo/test/test_multitensor.py @@ -2,7 +2,7 @@ import unittest, functools, random from tinygrad import Tensor, Device, nn, GlobalCounters, TinyJit, dtypes, Variable from tinygrad.device import is_dtype_supported from tinygrad.uop.ops import Ops, UOp -from tinygrad.helpers import CI, getenv, prod, Context, OSX +from tinygrad.helpers import CI, getenv, prod, Context from tinygrad.nn.state import get_parameters, get_state_dict from tinygrad.engine.realize import lower_schedule, BufferCopy, CompiledRunner, run_schedule import numpy as np @@ -373,12 +373,11 @@ class TestMultiTensor(unittest.TestCase): np.testing.assert_allclose(y.numpy(), y_shard.numpy(), atol=1e-6, rtol=1e-6) # NOTE: this is failing on LLVM CI, no idea why. Works locally. - @unittest.skipIf(CI and REAL_DEV in ("CUDA", "NV", "LLVM", "CPU"), "slow, and flaky on LLVM/CPU") - @unittest.skipIf(REAL_DEV == "WEBGPU" and not OSX, "WEBGPU Vulkan can only run kernels with up to 10 buffers") + @unittest.skipIf(CI and REAL_DEV in ("CUDA", "NV", "LLVM", "CPU", "AMD"), "slow, and flaky on LLVM/CPU") def test_data_parallel_resnet(self): from extra.models.resnet import ResNet18 - fake_image = Tensor.rand((2, 3, 224//8, 224//8)) + fake_image = Tensor.rand((2, 3, 224//16, 224//16)) fake_image_sharded = fake_image.shard(devices_2, axis=0) m = ResNet18() m.load_from_pretrained() @@ -410,11 +409,10 @@ class TestMultiTensor(unittest.TestCase): # sometimes there is zeros in these grads... why? np.testing.assert_allclose(grad, shard_grad, atol=1e-5, rtol=1e-5) - @unittest.skipIf(CI and REAL_DEV in ("CUDA", "NV", "LLVM", "CPU"), "slow, and flaky on LLVM/CPU") - @unittest.skipIf(REAL_DEV == "WEBGPU" and not OSX, "WEBGPU Vulkan can only run kernels with up to 10 buffers") + @unittest.skipIf(CI and REAL_DEV in ("CUDA", "NV", "LLVM", "CPU", "AMD"), "slow, and flaky on LLVM/CPU") def test_data_parallel_resnet_train_step(self): from extra.models.resnet import ResNet18 - fake_image = Tensor.rand((2, 3, 224//8, 224//8)) + fake_image = Tensor.rand((2, 3, 224//16, 224//16)) labels = Tensor.randint(2, low=0, high=1000) m = ResNet18() self._test_model_train_step(m, fake_image, labels) @@ -938,7 +936,6 @@ class TestShrinkMultiTensorShardedAxis(unittest.TestCase): np.testing.assert_allclose(output.numpy(), expected) @unittest.skipIf(not_support_multi_device(), "no multi") -@unittest.skipIf(REAL_DEV == "WEBGPU" and not OSX, "WEBGPU Vulkan can only run kernels with up to 10 buffers") class TestBatchNorm(unittest.TestCase): def test_unsynced_backprop_conv_bn(self): with Tensor.train(): @@ -966,7 +963,6 @@ class TestBatchNorm(unittest.TestCase): optim.step() out.numpy() - @unittest.skipIf(REAL_DEV == "WEBGPU" and not OSX, "WEBGPU Vulkan can only run kernels with up to 10 buffers") def test_unsynced_backprop_standalone_bn(self): from extra.lr_scheduler import OneCycleLR GPUS = (d1, d2) @@ -1132,6 +1128,7 @@ class TestMultiRamUsage(unittest.TestCase): self.assertUsed(self.N*self.N*4) # sharding should not increase total ram usage def test_zeros_shard_self(self): self.test_zeros_shard((d0, d1)) + @unittest.skip("flaky") def test_zeros_contiguous_shard(self): _ = Tensor.zeros(self.N, self.N).contiguous().shard(devices_2, axis=0).contiguous().realize() self.assertUsed(self.N*self.N*4) # sharding should not increase total ram usage diff --git a/tinygrad_repo/test/test_net_speed.py b/tinygrad_repo/test/test_net_speed.py deleted file mode 100644 index 9344ebe72..000000000 --- a/tinygrad_repo/test/test_net_speed.py +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/env python -import time -import unittest -import torch -from tinygrad import Tensor, Device -from tinygrad.helpers import Profiling, CI - -@unittest.skipIf(CI and Device.DEFAULT in {"CUDA", "NV"}, "slow") -class TestConvSpeed(unittest.TestCase): - - def test_mnist(self): - # https://keras.io/examples/vision/mnist_convnet/ - conv = 3 - inter_chan, out_chan = 32, 64 - - # ****** torch baseline ******* - - torch.backends.mkldnn.enabled = False - - conv = 3 - inter_chan, out_chan = 32, 64 - c1 = torch.randn(inter_chan,1,conv,conv, requires_grad=True) - c2 = torch.randn(out_chan,inter_chan,conv,conv, requires_grad=True) - l1 = torch.randn(out_chan*5*5, 10, requires_grad=True) - - c2d = torch.nn.functional.conv2d - mp = torch.nn.MaxPool2d((2,2)) - lsm = torch.nn.LogSoftmax(dim=1) - - cnt = 5 - fpt, bpt = 0.0, 0.0 - for i in range(cnt): - et0 = time.time() - x = torch.randn(128, 1, 28, 28, requires_grad=True) - x = mp(c2d(x,c1).relu()) - x = mp(c2d(x,c2).relu()) - x = x.reshape(x.shape[0], -1) - out = lsm(x.matmul(l1)) - out = out.mean() - et1 = time.time() - out.backward() - et2 = time.time() - fpt += (et1-et0) - bpt += (et2-et1) - - fpt_baseline = (fpt*1000/cnt) - bpt_baseline = (bpt*1000/cnt) - print("torch forward pass: %.3f ms" % fpt_baseline) - print("torch backward pass: %.3f ms" % bpt_baseline) - - # ****** tinygrad compare ******* - - c1 = Tensor(c1.detach().numpy(), requires_grad=True) - c2 = Tensor(c2.detach().numpy(), requires_grad=True) - l1 = Tensor(l1.detach().numpy(), requires_grad=True) - - cnt = 5 - fpt, bpt = 0.0, 0.0 - for i in range(1+cnt): - et0 = time.time() - x = Tensor.randn(128, 1, 28, 28) - x = x.conv2d(c1).relu().avg_pool2d() - x = x.conv2d(c2).relu().max_pool2d() - x = x.reshape(shape=(x.shape[0], -1)) - out = x.dot(l1).log_softmax() - out = out.mean() - out.backward() # NOTE: we have to now compute this here, but it doesn't realize - out.realize() - et1 = time.time() - [x.grad.realize() for x in [c1, c2, l1]] - et2 = time.time() - if i == 0: - pr = Profiling(sort='time', frac=0.2) - pr.__enter__() - else: - fpt += (et1-et0) - bpt += (et2-et1) - - pr.__exit__() - fpt = (fpt*1000/cnt) - bpt = (bpt*1000/cnt) - print("forward pass: %.3f ms, %.2fx off baseline %.3f ms" % (fpt, fpt/fpt_baseline, fpt_baseline)) - print("backward pass: %.3f ms, %.2fx off baseline %.3f ms" % (bpt, bpt/bpt_baseline, bpt_baseline)) - - -if __name__ == '__main__': - unittest.main() diff --git a/tinygrad_repo/test/test_nn.py b/tinygrad_repo/test/test_nn.py index f85aa43f5..e46b34a78 100644 --- a/tinygrad_repo/test/test_nn.py +++ b/tinygrad_repo/test/test_nn.py @@ -4,7 +4,7 @@ import numpy as np import torch from tinygrad import Tensor, Device, TinyJit from tinygrad.uop.ops import Ops -from tinygrad.helpers import GlobalCounters, CI, Context, OSX +from tinygrad.helpers import GlobalCounters, CI, Context from tinygrad.nn import Conv1d, ConvTranspose1d, Conv2d, ConvTranspose2d, Linear, Embedding from tinygrad.nn import BatchNorm, LayerNorm, LayerNorm2d, GroupNorm, InstanceNorm, RMSNorm, LSTMCell from tinygrad.nn.state import load_state_dict @@ -108,105 +108,39 @@ class TestNN(unittest.TestCase): _test_linear(Tensor.randn(BS, in_dim), in_dim, out_dim) _test_linear(Tensor.randn(BS, T, in_dim), in_dim, out_dim) # test with more dims - def test_conv1d(self): - BS, C1, W = 4, 16, 224//4 - C2, K, S, P = 64, 7, 2, 1 - + def _test_conv(self, tiny_conv, torch_conv, BS, C1, DIMS, C2, K, S, P, D=1): # create in tinygrad - layer = Conv1d(C1, C2, kernel_size=K, stride=S, padding=P) + layer = tiny_conv(C1, C2, kernel_size=K, stride=S, padding=P, dilation=D) # create in torch with torch.no_grad(): - torch_layer = torch.nn.Conv1d(C1, C2, kernel_size=K, stride=S, padding=P).eval() + torch_layer = torch_conv(C1, C2, kernel_size=K, stride=S, padding=P, dilation=D).eval() torch_layer.weight[:] = torch.tensor(layer.weight.numpy(), dtype=torch.float32) torch_layer.bias[:] = torch.tensor(layer.bias.numpy(), dtype=torch.float32) # test - x = Tensor.uniform(BS, C1, W) + x = Tensor.uniform(BS, C1, *DIMS) z = layer(x) torch_x = torch.tensor(x.numpy()) torch_z = torch_layer(torch_x) np.testing.assert_allclose(z.numpy(), torch_z.detach().numpy(), atol=5e-4, rtol=1e-5) - def test_conv2d(self): - BS, C1, H, W = 4, 16, 224//4, 224//4 - C2, K, S, P = 64, 7, 2, 1 - - # create in tinygrad - layer = Conv2d(C1, C2, kernel_size=K, stride=S, padding=P) - - # create in torch - with torch.no_grad(): - torch_layer = torch.nn.Conv2d(C1, C2, kernel_size=K, stride=S, padding=P).eval() - torch_layer.weight[:] = torch.tensor(layer.weight.numpy(), dtype=torch.float32) - torch_layer.bias[:] = torch.tensor(layer.bias.numpy(), dtype=torch.float32) - - # test - x = Tensor.uniform(BS, C1, H, W) - z = layer(x) - torch_x = torch.tensor(x.numpy()) - torch_z = torch_layer(torch_x) - np.testing.assert_allclose(z.numpy(), torch_z.detach().numpy(), atol=5e-4, rtol=1e-5) + def test_conv1d(self): self._test_conv(Conv1d, torch.nn.Conv1d, BS=4, C1=16, DIMS=[224//4], C2=64, K=7, S=2, P=1) + def test_conv2d(self): self._test_conv(Conv2d, torch.nn.Conv2d, BS=4, C1=16, DIMS=[224//4, 224//4], C2=64, K=7, S=2, P=1) def test_conv1d_same_padding(self): - BS, C1, W = 8, 3, 32 - C2, K, S, P = 16, 3, 1, 'same' - - # create in tinygrad - layer = Conv1d(C1, C2, kernel_size=K, stride=S, padding=P) - - # create in torch - with torch.no_grad(): - torch_layer = torch.nn.Conv1d(C1, C2, kernel_size=K, stride=S, padding=P).eval() - torch_layer.weight[:] = torch.tensor(layer.weight.numpy(), dtype=torch.float32) - torch_layer.bias[:] = torch.tensor(layer.bias.numpy(), dtype=torch.float32) - - # test - x = Tensor.uniform(BS, C1, W) - z = layer(x) - torch_x = torch.tensor(x.numpy()) - torch_z = torch_layer(torch_x) - np.testing.assert_allclose(z.numpy(), torch_z.detach().numpy(), atol=5e-4, rtol=1e-5) - - def _run_conv2d_same_padding_test(self, BS, C1, C2, H, W, K, S, padding='same', D=1): - # create in tinygrad - layer = Conv2d(C1, C2, kernel_size=K, stride=S, padding=padding, dilation=D) - - # create in torch - with torch.no_grad(): - torch_layer = torch.nn.Conv2d(C1, C2, kernel_size=K, stride=S, padding=padding, dilation=D).eval() - torch_layer.weight[:] = torch.tensor(layer.weight.numpy(), dtype=torch.float32) - torch_layer.bias[:] = torch.tensor(layer.bias.numpy(), dtype=torch.float32) - - # test - x = Tensor.uniform(BS, C1, H, W) - z = layer(x) - torch_x = torch.tensor(x.numpy()) - torch_z = torch_layer(torch_x) - np.testing.assert_allclose(z.numpy(), torch_z.detach().numpy(), atol=5e-4, rtol=1e-5) - + self._test_conv(Conv1d, torch.nn.Conv1d, BS=8, C1=3, DIMS=[32], C2=16, K=3, S=1, P='same') def test_conv2d_same_padding_odd_input(self): - BS, C1, H, W = 16, 16, 29, 31 - C2, K, S, P = 32, 5, 1, 'same' - self._run_conv2d_same_padding_test(BS, C1, C2, H, W, K, S, P) - + self._test_conv(Conv2d, torch.nn.Conv2d, BS=16, C1=16, DIMS=[29, 31], C2=32, K=5, S=1, P='same') def test_conv2d_same_padding_large_kernel(self): - BS, C1, H, W = 16, 16, 28, 33 - C2, K, S, P = 32, 9, 1, 'same' - self._run_conv2d_same_padding_test(BS, C1, C2, H, W, K, S, P) - + self._test_conv(Conv2d, torch.nn.Conv2d, BS=16, C1=16, DIMS=[28, 33], C2=32, K=9, S=1, P='same') def test_conv2d_same_padding_with_dilation(self): - BS, C1, H, W = 16, 3, 28, 28 - C2, K, S, P, D = 32, 3, 1, 'same', 3 - self._run_conv2d_same_padding_test(BS, C1, C2, H, W, K, S, P, D) + self._test_conv(Conv2d, torch.nn.Conv2d, BS=16, C1=3, DIMS=[28, 28], C2=32, K=3, S=1, P='same', D=3) def test_conv2d_same_padding_invalid_stride(self): - C1, C2, K, S, P = 16, 32, 2, 2, 'same' - self.assertRaises(ValueError, Conv2d, C1, C2, kernel_size=K, stride=S, padding=P) - + self.assertRaises(ValueError, Conv2d, in_channels=16, out_channels=32, kernel_size=2, stride=2, padding='same') def test_conv2d_same_padding_invalid_padding_str(self): - C1, C2, K, S, P = 16, 32, 2, 1, 'not_same' - self.assertRaises(ValueError, Conv2d, C1, C2, kernel_size=K, stride=S, padding=P) + self.assertRaises(ValueError, Conv2d, in_channels=16, out_channels=32, kernel_size=2, stride=1, padding='not_same') @unittest.skip("Takes too long to compile for Compiled backends") def test_conv2d_winograd(self): @@ -229,12 +163,13 @@ class TestNN(unittest.TestCase): with Context(WINO=1): z = layer(x) + m = z.mean() + m.backward() + torch_x = torch.tensor(x.numpy(), requires_grad=True) torch_z = torch_layer(torch_x) np.testing.assert_allclose(z.numpy(), torch_z.detach().numpy(), atol=5e-4, rtol=1e-5) - m = z.mean() - m.backward() gw = layer.weight.grad.realize() gb = layer.bias.grad.realize() gx = x.grad.realize() @@ -245,46 +180,10 @@ class TestNN(unittest.TestCase): np.testing.assert_allclose(gx.numpy(), torch_x.grad.numpy(), atol=5e-4, rtol=1e-5) def test_conv_transpose1d(self): - BS, C1, W = 4, 16, 224//4 - C2, K, S, P = 64, 7, 2, 1 - - # create in tinygrad - layer = ConvTranspose1d(C1, C2, kernel_size=K, stride=S, padding=P) - - # create in torch - with torch.no_grad(): - torch_layer = torch.nn.ConvTranspose1d(C1, C2, kernel_size=K, stride=S, padding=P).eval() - torch_layer.weight[:] = torch.tensor(layer.weight.numpy(), dtype=torch.float32) - torch_layer.bias[:] = torch.tensor(layer.bias.numpy(), dtype=torch.float32) - - # test - x = Tensor.uniform(BS, C1, W) - z = layer(x) - torch_x = torch.tensor(x.numpy()) - torch_z = torch_layer(torch_x) - np.testing.assert_allclose(z.numpy(), torch_z.detach().numpy(), atol=5e-4, rtol=1e-5) - + self._test_conv(ConvTranspose1d, torch.nn.ConvTranspose1d, BS=4, C1=16, DIMS=[224//4], C2=64, K=7, S=2, P=1) def test_conv_transpose2d(self): - BS, C1, H, W = 4, 16, 224//4, 224//4 - C2, K, S, P = 64, 7, 2, 1 + self._test_conv(ConvTranspose2d, torch.nn.ConvTranspose2d, BS=4, C1=16, DIMS=[224//4, 224//4], C2=64, K=7, S=2, P=1) - # create in tinygrad - layer = ConvTranspose2d(C1, C2, kernel_size=K, stride=S, padding=P) - - # create in torch - with torch.no_grad(): - torch_layer = torch.nn.ConvTranspose2d(C1, C2, kernel_size=K, stride=S, padding=P).eval() - torch_layer.weight[:] = torch.tensor(layer.weight.numpy(), dtype=torch.float32) - torch_layer.bias[:] = torch.tensor(layer.bias.numpy(), dtype=torch.float32) - - # test - x = Tensor.uniform(BS, C1, H, W) - z = layer(x) - torch_x = torch.tensor(x.numpy()) - torch_z = torch_layer(torch_x) - np.testing.assert_allclose(z.numpy(), torch_z.detach().numpy(), atol=5e-4, rtol=1e-5) - - @unittest.skipIf(Device.DEFAULT == "WEBGPU" and not OSX, "WEBGPU Vulkan can only run kernels with up to 10 buffers") def test_groupnorm(self): BS, H, W, C, G = 20, 10, 10, 6, 3 @@ -311,7 +210,27 @@ class TestNN(unittest.TestCase): np.testing.assert_allclose(layer.weight.grad.numpy(), torch_layer.weight.grad.detach().numpy(), atol=5e-4, rtol=5e-4) np.testing.assert_allclose(layer.bias.grad.numpy(), torch_layer.bias.grad.detach().numpy(), atol=5e-4, rtol=5e-4) - @unittest.skipIf(Device.DEFAULT == "WEBGPU" and not OSX, "WEBGPU Vulkan can only run kernels with up to 10 buffers") + def test_layernorm_forward(self): + N, C, H, W = 20, 5, 10, 10 + + # create in torch + torch_layer = torch.nn.LayerNorm([H, W]).eval() + + # create in tinygrad + layer = LayerNorm([H, W]) + layer.weight = Tensor(torch_layer.weight.detach().numpy(), requires_grad=True) + layer.bias = Tensor(torch_layer.bias.detach().numpy(), requires_grad=True) + + x = Tensor.empty(N, C, H, W, requires_grad=True) + z = layer(x) + z.realize() + + torch_x = torch.tensor(x.numpy(), requires_grad=True) + torch_z = torch_layer(torch_x) + torch_z.sum().backward() + + np.testing.assert_allclose(z.numpy(), torch_z.detach().numpy(), atol=5e-6, rtol=5e-6) + def test_layernorm(self): N, C, H, W = 20, 5, 10, 10 @@ -338,7 +257,6 @@ class TestNN(unittest.TestCase): np.testing.assert_allclose(layer.weight.grad.numpy(), torch_layer.weight.grad.detach().numpy(), atol=5e-4, rtol=5e-4) np.testing.assert_allclose(layer.bias.grad.numpy(), torch_layer.bias.grad.detach().numpy(), atol=5e-4, rtol=5e-4) - @unittest.skipIf(Device.DEFAULT == "WEBGPU" and not OSX, "WEBGPU Vulkan can only run kernels with up to 10 buffers") def test_layernorm_2d(self): N, C, H, W = 20, 5, 10, 10 @@ -365,7 +283,6 @@ class TestNN(unittest.TestCase): np.testing.assert_allclose(layer.weight.grad.numpy(), torch_layer.weight.grad.detach().numpy(), atol=5e-4, rtol=5e-4) np.testing.assert_allclose(layer.bias.grad.numpy(), torch_layer.bias.grad.detach().numpy(), atol=5e-4, rtol=5e-4) - @unittest.skipIf(Device.DEFAULT == "WEBGPU" and not OSX, "WEBGPU Vulkan can only run kernels with up to 10 buffers") def test_instancenorm_2d(self): N, C, H, W = 20, 10, 10, 10 @@ -392,7 +309,6 @@ class TestNN(unittest.TestCase): np.testing.assert_allclose(layer.weight.grad.numpy(), torch_layer.weight.grad.detach().numpy(), atol=1e-3, rtol=1e-3) np.testing.assert_allclose(layer.bias.grad.numpy(), torch_layer.bias.grad.detach().numpy(), atol=1e-3, rtol=1e-3) - @unittest.skipIf(Device.DEFAULT == "WEBGPU" and not OSX, "WEBGPU Vulkan can only run kernels with up to 10 buffers") def test_instancenorm_3d(self): N, C, D, H, W = 20, 10, 10, 10, 10 @@ -419,7 +335,6 @@ class TestNN(unittest.TestCase): np.testing.assert_allclose(layer.weight.grad.numpy(), torch_layer.weight.grad.detach().numpy(), atol=2e-3, rtol=1e-3) np.testing.assert_allclose(layer.bias.grad.numpy(), torch_layer.bias.grad.detach().numpy(), atol=1e-3, rtol=1e-3) - @unittest.skipIf(Device.DEFAULT == "WEBGPU" and not OSX, "WEBGPU Vulkan can only run kernels with up to 10 buffers") def test_rmsnorm(self): class TorchRMSNorm(torch.nn.Module): # https://github.com/meta-llama/llama/blob/be327c427cc5e89cc1d3ab3d3fec4484df771245/llama/model.py#L34C1-L77C36 @@ -507,7 +422,7 @@ class TestNN(unittest.TestCase): torch_z = torch_layer(torch_x) np.testing.assert_allclose(z.numpy(), torch_z.detach().numpy(), atol=1e-8, rtol=1e-8) - def test_embedding_one_kernel(self, ops=41410, kcount=3): + def test_embedding_one_kernel(self, ops=612000, kcount=2): GlobalCounters.reset() layer = Embedding(20, 30) layer.weight = Tensor.zeros_like(layer.weight).contiguous() @@ -515,7 +430,7 @@ class TestNN(unittest.TestCase): [12, 19, 8, 1]]) result = layer(a) schedule = result.schedule() - self.assertEqual(kcount, len([item for item in schedule if item.ast.op is Ops.SINK]), "first run realizes weight and embedding") + self.assertEqual(len([item for item in schedule if item.ast.op is Ops.SINK]), kcount, "first run realizes weight and embedding") run_schedule(schedule) b = Tensor([[1, 2, 3], @@ -546,6 +461,13 @@ class TestNN(unittest.TestCase): result = layer(a) self.assertEqual(result.shape, shp + (embed_size,)) + def test_embedding_regression(self): + # used to fail bounds check + with Context(FUSE_ARANGE=1): + embedding = Embedding(100, 1024) + input_ids = Tensor.empty(16, 16) + embedding(input_ids).realize() + def test_load_state_dict(self): layer = Conv2d(3, 5, kernel_size=3) diff --git a/tinygrad_repo/test/test_ops.py b/tinygrad_repo/test/test_ops.py index 7634edda6..8878af0eb 100644 --- a/tinygrad_repo/test/test_ops.py +++ b/tinygrad_repo/test/test_ops.py @@ -2,7 +2,7 @@ import time, math, unittest, functools, platform, warnings import numpy as np from typing import List, Callable import torch -from tinygrad.helpers import getenv, IMAGE, DEBUG, CI, Context, TRANSCENDENTAL, OSX, AMD_LLVM +from tinygrad.helpers import getenv, IMAGE, DEBUG, CI, Context, TRANSCENDENTAL, AMD_LLVM from tinygrad import Tensor, Device, dtypes from tinygrad.tensor import _to_np_dtype from tinygrad.device import is_dtype_supported @@ -393,7 +393,7 @@ class TestOps(unittest.TestCase): def test_trunc(self): helper_test_op([()], lambda x: x.trunc(), forward_only=True) helper_test_op([(45,35)], lambda x: x.trunc(), forward_only=True) - helper_test_op(None, lambda x: x.trunc(), vals=[[1.499, 1.5, 1.501, 1.0, 2.1, 0.0, -5.0, -2.499, -2.5, -2.501]], forward_only=True) + helper_test_op(None, lambda x: x.trunc(), vals=[[1.499, 1.5, 1.501, 1.0, 2.1, 0.0, -5.0, -2.499, -2.5, -2.501, 1e12, -1e12]], forward_only=True) def test_floor(self): helper_test_op([()], lambda x: x.floor(), forward_only=True) helper_test_op([(45,35)], lambda x: x.floor(), forward_only=True) @@ -699,6 +699,14 @@ class TestOps(unittest.TestCase): helper_test_op(None, lambda x: x**-0.3, vals=[[0.0]]) helper_test_op(None, lambda x: x**-1.0, vals=[[-1.0, 0.0, 1.0]]) + def test_int_pow_const_int(self): + helper_test_op(None, lambda x: x**0, vals=[[-2,0,2]], forward_only=True, atol=0) + helper_test_op(None, lambda x: x**1, vals=[[-2,0,2]], forward_only=True, atol=0) + helper_test_op(None, lambda x: x**2, vals=[[-2,0,2]], forward_only=True, atol=0) + helper_test_op(None, lambda x: x**7, vals=[[11,12,13]], forward_only=True, atol=0) + helper_test_op(None, lambda x: x**29, vals=[[-2,0,2]], forward_only=True, atol=0) + self.helper_test_exception(None, lambda x: x**-2, vals=[[-2,0,2]], forward_only=True, expected=RuntimeError) + @unittest.skip("not supported") def test_pow_int(self): def _test(base, exponent): helper_test_op(None, lambda x,y: x**y, vals=[base, exponent], forward_only=True) @@ -920,6 +928,12 @@ class TestOps(unittest.TestCase): for j in [-1., 0., 1.]: helper_test_op(None, torch.copysign, Tensor.copysign, vals=[[i], [j]]) + def test_logaddexp(self): + helper_test_op([(45,65), (45,65)], torch.logaddexp, Tensor.logaddexp) + helper_test_op(None, torch.logaddexp, Tensor.logaddexp, vals=[[-1.], [-1.0, 2, 3]]) + helper_test_op(None, torch.logaddexp, Tensor.logaddexp, vals=[[-100.0, -200, -300], [-1.0, 2, 3]]) + helper_test_op(None, torch.logaddexp, Tensor.logaddexp, vals=[[1.0, 2000, 30000], [-1.0, 2, 3]]) + def test_softsign(self): helper_test_op([(45,65)], torch.nn.functional.softsign, Tensor.softsign) helper_test_op([()], torch.nn.functional.softsign, Tensor.softsign) @@ -957,8 +971,7 @@ class TestOps(unittest.TestCase): helper_test_op([(45,65)], torch.nn.functional.softplus, Tensor.softplus, grad_atol=1e-6) helper_test_op([(45,65)], lambda t: torch.nn.functional.softplus(t, beta=3), lambda t: Tensor.softplus(t, beta=3), grad_atol=1e-6) helper_test_op([(45,65)], lambda t: torch.nn.functional.softplus(t, beta=1/3), lambda t: Tensor.softplus(t, beta=1/3), grad_atol=1e-6) - # # TODO: support threshold and enable this - # helper_test_op([(45,65)], torch.nn.functional.softplus, Tensor.softplus, grad_atol=1e-6, low=300, high=400) + helper_test_op([(45,65)], torch.nn.functional.softplus, Tensor.softplus, grad_atol=1e-6, low=300, high=400) helper_test_op([(45,65)], torch.nn.functional.softplus, Tensor.softplus, grad_atol=1e-6, low=-400, high=-300) helper_test_op([()], torch.nn.functional.softplus, Tensor.softplus, grad_atol=1e-6) @@ -1092,6 +1105,9 @@ class TestOps(unittest.TestCase): helper_test_op(None, lambda x: x.type(torch.int32).argmin().type(torch.int32), lambda x: x.argmin(), forward_only=True, vals=[[True, False]]) def test_sort(self): + for shape in [(0,), (0,5), (1,), (1,5)]: + helper_test_op([shape], lambda x: x.sort(0).values, lambda x: x.sort(0)[0], forward_only=True) + helper_test_op([shape], lambda x: x.sort(0).indices.type(torch.int32), lambda x: x.sort(0)[1], forward_only=True) for dim in [-1, 0, 1]: for descending in [True, False]: helper_test_op([(8,8,6)], lambda x: x.sort(dim, descending).values, lambda x: x.sort(dim, descending)[0], forward_only=True) @@ -2449,6 +2465,20 @@ class TestOps(unittest.TestCase): lambda x: Tensor.max_unpool2d(*Tensor.max_pool2d(x, kernel_size=(2,2), return_indices=True), kernel_size=(2,2), output_size=(99,99,7,6)), forward_only=True) + def test_max_unpool2d_inf(self): + data = [[[[math.inf, -math.inf, math.nan], [1.0, 2.0, 3.0]]]] + ksz = (2,2) + helper_test_op((), + lambda: torch.nn.functional.max_unpool2d( + *torch.nn.functional.max_pool2d(torch.tensor(data), kernel_size=ksz, return_indices=True), + kernel_size=ksz + ), + lambda: Tensor.max_unpool2d( + *Tensor.max_pool2d(Tensor(data), kernel_size=ksz, return_indices=True), + kernel_size=ksz + ), + forward_only=True) + def test_avg_pool2d(self): shape = (32,2,111,28) for ksz in [(2,2), (3,3), (3,2), (5,5), (5,1)]: @@ -2682,7 +2712,10 @@ class TestOps(unittest.TestCase): i, j, k, o, p = [Tensor(tor.detach().cpu().numpy().astype(np.int32), requires_grad=False) for tor in [a,b,c,d,e]] return a,b,c,d,e,i,j,k,o,p - @unittest.skipIf(Device.DEFAULT == "WEBGPU", "WEBGPU can only run kernels with up to 10 buffers") + def test_fancy_indexing_inf(self): + data = [math.inf, -math.inf, math.nan] + helper_test_op((), lambda: torch.tensor(data)[torch.tensor([0, 1, 2])], lambda: Tensor(data)[Tensor([0, 1, 2])]) + def test_slice_fancy_indexing_no_dim_collapse(self): a,b,c,d,e,i,j,k,o,p = self._get_index_randoms() # no dim collapse from int or dim injection from None @@ -2734,16 +2767,15 @@ class TestOps(unittest.TestCase): helper_test_op([(2,3)], lambda x: x[torch.tensor([[0,1,-1],[-1,-2,0]]), torch.tensor([2,1,-1])], lambda x: x[Tensor([[0,1,-1],[-1,-2,0]]), Tensor([2,1,-1])]) - @unittest.skipIf(Device.DEFAULT == "WEBGPU", "WEBGPU can only run kernels with up to 10 buffers") def test_slice_fancy_indexing_list_indices(self): a,b,c,d,e,i,j,k,o,p = self._get_index_randoms() helper_test_op([(2,5,6,5,3,4)], lambda x: x[[[0]]], lambda x: x[[[0]]]) helper_test_op([(2,5,6,5,3,4)], lambda x: x[[0],b,c,d,:], lambda x: x[[0],j,k,o,:]) helper_test_op([(2,5,6,5,3,4)], lambda x: x[[[[0]]],b,c,d,[[1]]], lambda x: x[[[[0]]],j,k,o,[[1]]]) - helper_test_op([(2,5,6,5,3,4)], lambda x: x[[1,0],b,c,d,:], lambda x: x[[1,0],j,k,o,:]) + helper_test_op([(2,5,6,5,3,4)], lambda x: x[[1,0,-1],b,c,d,:], lambda x: x[[1,0,-1],j,k,o,:]) helper_test_op([(2,5,6,5,3,4)], lambda x: x[a,b,c,[1,2,3],...], lambda x: x[i,j,k,[1,2,3],...]) helper_test_op([(2,5,6,5,3,4)], lambda x: x[a,b,c,[[1],[2],[3]],...], lambda x: x[i,j,k,[[1],[2],[3]],...]) - helper_test_op([(2,5,6,5,3,4)], lambda x: x[a,[2,1,0],c,[2,1,0],e], lambda x: x[i,[2,1,0],k,[2,1,0],p]) + helper_test_op([(2,5,6,5,3,4)], lambda x: x[a,[2,1,0],c,[-2,1,0],e], lambda x: x[i,[2,1,0],k,[-2,1,0],p]) def test_slice_fancy_indexing_tuple_indices(self): a,b,c,d,e,i,j,k,o,p = self._get_index_randoms() @@ -2754,7 +2786,6 @@ class TestOps(unittest.TestCase): helper_test_op([(2,5,6,5,3,4)], lambda x: x[a,((2,),(1,),(0,)),c,(2,1,0)], lambda x: x[i,((2,),(1,),(0,)),k,(2,1,0)]) helper_test_op([(2,5,6,5,3,4)], lambda x: x[1,(2,1,0),None,c,(2,1,0),e], lambda x: x[1,(2,1,0),None,k,(2,1,0),p]) - @unittest.skipIf(Device.DEFAULT == "WEBGPU" and not OSX, "WEBGPU Vulkan can only run kernels with up to 10 buffers") def test_slice_fancy_indexing_list_with_tensors(self): a,b,c,d,e,i,j,k,o,p = self._get_index_randoms() helper_test_op([(2,5,6,5,3,4)], lambda x: x[[a]], lambda x: x[[i]]) @@ -2767,10 +2798,14 @@ class TestOps(unittest.TestCase): a = Tensor.ones(10,11,12) # tensors used as indices must be int tensors with self.assertRaises(IndexError): a[Tensor(1.1)] - with self.assertRaises(IndexError): a[Tensor([True, True])] + with self.assertRaises(IndexError): a[[1.1]] + with self.assertRaises(IndexError): a[Tensor([True, False])] + with self.assertRaises(IndexError): a[[True, False]] # shape mismatch, cannot broadcast. either exception is okay with self.assertRaises((IndexError, ValueError)): a[Tensor.randint(3,1,1,1), Tensor.randint(1,4,1,1), Tensor.randint(2,4,4,1)] with self.assertRaises((IndexError, ValueError)): a[Tensor.randint(3,1,1,1), Tensor.randint(1,4,1,1,1)] + # this is fine + helper_test_op([(5, 6)], lambda x: x[[True, False, 2]]) def test_gather(self): # indices cannot have gradient @@ -2791,11 +2826,7 @@ class TestOps(unittest.TestCase): helper_test_op(None, lambda x: x.gather(dim=0, index=torch.tensor([2, 1, 0, 1, 2], requires_grad=False)), lambda x: x.gather(dim=0, index=Tensor([2, 1, 0, 1, 2])), vals=[[1., 2., 3.]]) - - @unittest.expectedFailure - @unittest.skipIf(torch._C._get_privateuse1_backend_name() == "tiny", 'results in a success instead of a failure') - def test_gather_failure(self): - # gather with inf values do not work, other values results in nan + # gather with inf values helper_test_op(None, lambda x: x.gather(dim=0, index=torch.tensor([2, 1, 0, 1, 2], requires_grad=False)), lambda x: x.gather(dim=0, index=Tensor([2, 1, 0, 1, 2])), vals=[[-float("inf"), 2., 3.]]) diff --git a/tinygrad_repo/test/test_opt_gemm.py b/tinygrad_repo/test/test_opt_gemm.py index 3b31d0a2a..1c9072ec2 100644 --- a/tinygrad_repo/test/test_opt_gemm.py +++ b/tinygrad_repo/test/test_opt_gemm.py @@ -2,7 +2,7 @@ import numpy as np import unittest from tinygrad import Tensor from tinygrad.helpers import get_single_element -from tinygrad.opt.kernel import Kernel, Opt, OptOps +from tinygrad.codegen.opt.kernel import Opt, OptOps from tinygrad.engine.realize import CompiledRunner, ExecItem, get_program class TestOptGemm(unittest.TestCase): @@ -17,9 +17,7 @@ class TestOptGemm(unittest.TestCase): t = self.a.T @ self.b.T # TODO: this should be a generic test helper si = get_single_element(t.schedule()) - k = Kernel(si.ast) - k.apply_opts(opts) - run = CompiledRunner(get_program(k.get_optimized_ast(), k.opts)) + run = CompiledRunner(get_program(si.ast, opts=opts)) ExecItem(run, si.bufs).run() test = si.bufs[0].numpy().reshape(self.res.shape) np.testing.assert_allclose(self.res, test, atol=1e-4) diff --git a/tinygrad_repo/test/test_optim.py b/tinygrad_repo/test/test_optim.py index 283378e70..06d90e867 100644 --- a/tinygrad_repo/test/test_optim.py +++ b/tinygrad_repo/test/test_optim.py @@ -2,9 +2,10 @@ import numpy as np import torch import unittest from tinygrad import Tensor, Device, dtypes -from tinygrad.nn.optim import Adam, SGD, AdamW +from tinygrad.nn.optim import Adam, SGD, AdamW, Muon from tinygrad.helpers import CI from tinygrad.device import is_dtype_supported +from extra.torch_muon import SingleDeviceMuon as TorchMuon np.random.seed(1337) x_init = np.random.randn(1,4).astype(np.float32) @@ -57,9 +58,12 @@ class TestOptim(unittest.TestCase): def _test_sgd(self, steps, opts, atol, rtol): self._test_optim(SGD, torch.optim.SGD, steps, opts, atol, rtol) def _test_adam(self, steps, opts, atol, rtol): self._test_optim(Adam, torch.optim.Adam, steps, opts, atol, rtol) def _test_adamw(self, steps, opts, atol, rtol): self._test_optim(AdamW, torch.optim.AdamW, steps, opts, atol, rtol) + #TODO: use torch.muon when it comes out + def _test_muon(self, steps, opts, atol, rtol): self._test_optim(Muon, TorchMuon, steps, opts, atol, rtol) def test_multistep_sgd_high_lr_teeny(self): self._test_sgd(2, {'lr': 1.1, 'teeny': True}, 1e-6, 1e-5) def test_multistep_adam_high_lr_teeny(self): self._test_adam(2, {'lr': 1.1, 'teeny': True}, 2e-4, 5e-4) + def test_multistep_muon_high_lr_teeny(self): self._test_muon(2, {'lr': 1.1, 'teeny': True}, 2e-4, 5e-4) def test_sgd(self): self._test_sgd(1, {'lr': 0.001}, 1e-6, 0) def test_sgd_high_lr(self): self._test_sgd(1, {'lr': 10}, 1e-6, 1e-5) @@ -83,6 +87,28 @@ class TestOptim(unittest.TestCase): def test_multistep_sgd_high_lr_nesterov_momentum_wd(self): self._test_sgd(10, {'lr': 9, 'momentum': 0.9, 'nesterov': True, 'weight_decay': 0.1}, 1e-5, 3e-4) + def test_muon(self): self._test_muon(1, {'lr': 0.001}, 1e-6, 0) + def test_muon_high_lr(self): self._test_muon(1, {'lr': 10}, 1e-6, 3e-4) + def test_muon_wd(self): self._test_muon(1, {'lr': 0.001, 'weight_decay': 0.01}, 1e-6, 0) + def test_muon_high_lr_wd(self): self._test_muon(1, {'lr': 10, 'weight_decay': 0.01}, 1e-6, 3e-4) + + # NOTE: momentum set to 0.95 by default, nesterov set to True by default + def test_multistep_muon_momentum_wd(self): self._test_muon(10, {'lr': 0.001, 'weight_decay': 0.01}, 1e-5, 0) + # ns defaults are numerically unstable, but it is tolerable in real training (see nsteps/nparam tests) + def test_multistep_muon_high_lr_momentum_wd(self): self._test_muon(10, {'lr': 10, 'weight_decay': 0.01}, 1e-1, 3e-4) + def test_multistep_muon_no_nesterov_momentum(self): self._test_muon(10, {'lr': 0.001, 'nesterov': False}, 1e-5, 0) + def test_multistep_muon_high_lr_no_nesterov_momentum(self): self._test_muon(10, {'lr': 10, 'nesterov': False}, 0.5e-1, 1e-1) + + def test_muon_ns_steps(self): self._test_muon(1, {'lr': 0.001, 'ns_steps': 3}, 1e-6, 0) + def test_muon_high_lr_ns_steps(self): self._test_muon(1, {'lr': 10, 'ns_steps': 3}, 1e-5, 3e-4) + def test_muon_ns_params(self): self._test_muon(1, {'lr': 0.001,'ns_params': (2.0,-1.5,0.5)}, 1e-6, 0) + def test_muon_high_lr_ns_params(self): self._test_muon(1, {'lr': 10,'ns_params': (2.0,-1.5,0.5)}, 1e-5, 3e-4) + + def test_muon_momentum_wd_ns_steps_ns_params(self): + self._test_muon(10, {'lr': 0.001, 'momentum': 0.90, 'weight_decay': 0.01, 'ns_steps': 3, 'ns_params': (2.0,-1.5,0.5)}, 1e-5, 0) + def test_multistep_muon_high_lr_momentum_wd_ns_steps_ns_params(self): + self._test_muon(10, {'lr': 10, 'momentum': 0.90, 'weight_decay': 0.01, 'ns_steps': 3, 'ns_params': (2.0,-1.5,0.5)}, 1e-5, 3e-4) + def test_adam(self): self._test_adam(1, {'lr': 0.001}, 1e-5, 0) def test_adam_high_lr(self): self._test_adam(1, {'lr': 10}, 1e-4, 1e-4) def test_adamw(self): self._test_adamw(1, {'lr': 0.001}, 1e-5, 0) diff --git a/tinygrad_repo/test/test_outerworld_range.py b/tinygrad_repo/test/test_outerworld_range.py index 36fac3e2a..cfc610cde 100644 --- a/tinygrad_repo/test/test_outerworld_range.py +++ b/tinygrad_repo/test/test_outerworld_range.py @@ -1,5 +1,5 @@ import unittest -from tinygrad import Tensor, nn, Variable, UOp, dtypes +from tinygrad import Tensor, nn, Variable, UOp # outerworld range should support three things # 1. full optimizer steps (test_model_bound_range) @@ -136,7 +136,7 @@ class TestOuterworldRange(unittest.TestCase): def test_model_bound_range(self): m, opt = get_model_and_opt() # TODO: should ranges be unique so you don't have to pass in the -1? - rng = UOp.range(dtypes.int, self.STEPS, -1) + rng = UOp.range(self.STEPS, -1) vib = Variable('i', 0, self.STEPS-1).bind(rng) loss = (m(self.X[vib]) - self.Y[vib]).square().mean() loss.backward() diff --git a/tinygrad_repo/test/test_pickle.py b/tinygrad_repo/test/test_pickle.py index 93758eef6..d5c62cd77 100644 --- a/tinygrad_repo/test/test_pickle.py +++ b/tinygrad_repo/test/test_pickle.py @@ -20,7 +20,7 @@ class TestPickle(unittest.TestCase): self.assertEqual(pm2.rewrite(sink).key, tt.key) def test_pickle_main_pattern_matcher(self): - from tinygrad.codegen.devectorizer import sym + from tinygrad.codegen.late.devectorizer import sym ssym = pickle.dumps(sym) dsym = pickle.loads(ssym) self.assertEqual(dsym.patterns[0][0].location, sym.patterns[0][0].location) diff --git a/tinygrad_repo/test/test_profiler.py b/tinygrad_repo/test/test_profiler.py index 44deeace0..e4a70f23a 100644 --- a/tinygrad_repo/test/test_profiler.py +++ b/tinygrad_repo/test/test_profiler.py @@ -1,6 +1,6 @@ import unittest, struct, contextlib, statistics, time, gc from tinygrad import Device, Tensor, dtypes, TinyJit -from tinygrad.helpers import CI, getenv, Context, ProfileRangeEvent, cpu_profile, cpu_events +from tinygrad.helpers import CI, getenv, Context, ProfileRangeEvent, cpu_profile, cpu_events, ProfilePointEvent, dedup from tinygrad.device import Buffer, BufferSpec, Compiled, ProfileDeviceEvent, ProfileGraphEvent from tinygrad.runtime.support.hcq import HCQCompiled from tinygrad.engine.realize import get_runner @@ -209,5 +209,18 @@ class TestProfiler(unittest.TestCase): for ge in graphs: self.assertEqual(len(ge.ents), len(graphs)) + def test_trace_metadata(self): + with Context(TRACEMETA=1): + a = Tensor.empty(1)+2 + b = Tensor.empty(1)+2 + with helper_collect_profile(TestProfiler.d0) as profile: + Tensor.realize(a, b) + profile, _ = helper_profile_filter_device(profile, TestProfiler.d0.device) + exec_points = [e for e in profile if isinstance(e, ProfilePointEvent) and e.name == "exec"] + range_events = [e for e in profile if isinstance(e, ProfileRangeEvent)] + self.assertEqual(len(exec_points), len(range_events), 2) + self.assertEqual(len(dedup(e.key for e in exec_points)), 1) + self.assertEqual(len(dedup(e.arg['metadata'] for e in exec_points)), 1) + if __name__ == "__main__": unittest.main() diff --git a/tinygrad_repo/test/test_quantize_onnx.py b/tinygrad_repo/test/test_quantize_onnx.py index 8ee11d406..1555b6bef 100644 --- a/tinygrad_repo/test/test_quantize_onnx.py +++ b/tinygrad_repo/test/test_quantize_onnx.py @@ -4,9 +4,9 @@ import unittest from dataclasses import replace from tinygrad import Tensor, Context, Device, dtypes from tinygrad.uop.ops import Ops, UOp # noqa: F401 # pylint: disable=unused-import -from tinygrad.opt.kernel import Kernel, Opt, OptOps +from tinygrad.codegen.opt.kernel import Kernel, Opt, OptOps from tinygrad.engine.realize import CompiledRunner, ExecItem, lower_schedule_item, get_program -from tinygrad.opt.search import bufs_from_lin +from tinygrad.codegen.opt.search import bufs_from_lin from tinygrad.shape.shapetracker import ShapeTracker, View # noqa: F401 # pylint: disable=unused-import N = 512 @@ -40,10 +40,7 @@ def create_gemm_model(model_path:str, batch_size=N, in_size=N, out_size=N, bias= def sexec(out:Tensor, opts:list[Opt], replace_src=None, run_count=3): si = out.schedule()[-1] - k = Kernel(si.ast, opts=Device[Device.DEFAULT].renderer) - #opts = [Opt(op=OptOps.UPCAST, axis=0, arg=128)] #, Opt(op=OptOps.UNROLL, axis=0, arg=4)] - k.apply_opts(opts) - prg = get_program(k.get_optimized_ast(), k.opts) + prg = get_program(si.ast, opts=opts) if replace_src is not None: old_name = prg.src.split("__attribute__((noinline)) void ")[1].split("(")[0] prg = replace(prg, src=replace_src + "/* DSP boilerplate */" + prg.src.split("/* DSP boilerplate */")[1].replace(old_name, "fxn")) @@ -297,10 +294,7 @@ class TestDSPCache(unittest.TestCase): x41,)),)),)),))""") opts = [Opt(op=OptOps.UNROLL, axis=0, arg=8), Opt(op=OptOps.UPCAST, axis=1, arg=32), Opt(op=OptOps.UPCAST, axis=0, arg=4)] with Context(DEVECTORIZE=0, QUANTIZE=1): - k = Kernel(ast, opts=Device[Device.DEFAULT].renderer) - k.apply_opts(opts) - prg = get_program(k.get_optimized_ast(), k.opts) - #print(prg.src) + prg = get_program(ast, opts=opts) new_src = """ typedef int int32 __attribute__((aligned(128),vector_size(128))); @@ -362,7 +356,7 @@ __attribute__((noinline)) void r_196_32_4_24_8(unsigned char* restrict __attribu prg = replace(prg, src=new_src+prg.src.split("/* DSP boilerplate */ ")[1]) rt = CompiledRunner(prg) #Device.default.compiler.disassemble(rt.lib) - ei = ExecItem(rt, bufs_from_lin(k)) + ei = ExecItem(rt, bufs_from_lin(Kernel(ast))) tm = ei.run(wait=True) print(f"final time {tm*1e6:.2f} us") diff --git a/tinygrad_repo/test/test_rangeify.py b/tinygrad_repo/test/test_rangeify.py new file mode 100644 index 000000000..8558c333e --- /dev/null +++ b/tinygrad_repo/test/test_rangeify.py @@ -0,0 +1,196 @@ +import unittest +from tinygrad import Tensor +from tinygrad.helpers import RANGEIFY, Context, GlobalCounters +from tinygrad.uop.ops import UOp + +N = 256 + +@unittest.skipIf(RANGEIFY<1, "tests only for RANGEIFY") +class TestRangeify(unittest.TestCase): + def test_expand_children(self): + A = Tensor.empty(N, N).sum(axis=1) + ba = A.expand(N, N) + ((ba+1).sum(axis=1) + (ba+2).sum(axis=0)).realize() + + def test_partial_contig(self): + A = Tensor.empty(64, 64, 64) + ret = A.sum(axis=2).contiguous(arg=(1,)).sum(axis=1) + ret.realize() + + def test_double_gemm_real(self): + def go(): + with Context(DEBUG=0): + Tensor.manual_seed(1337) + A,B,C = [Tensor.randn(N, N) for _ in range(3)] + Tensor.realize(A, B, C) + GlobalCounters.reset() + return (A@B@C).realize() + rng = go() + with Context(RANGEIFY=0, DEBUG=2): + ref = go() + mse = ((rng-ref)**2).sum().item() + print(f"mse: {mse}") + self.assertLessEqual(mse, 1e-2) + + def test_double_gemm(self): + A = Tensor.empty(N, N) + B = Tensor.empty(N, N) + C = Tensor.empty(N, N) + (A@B@C).realize() + + def test_double_gemm_exp(self): + A = Tensor.empty(N, N) + B = Tensor.empty(N, N) + C = Tensor.empty(N, N) + (((A@B).exp()@C).exp()).realize() + + def test_double_gemm_relu(self): + A = Tensor.empty(N, N) + B = Tensor.empty(N, N) + C = Tensor.empty(N, N) + (((A@B).relu()@C).relu()).realize() + + def test_double_gemm_relu_half_contig(self): + A = Tensor.empty(N, N) + B = Tensor.empty(N, N) + C = Tensor.empty(N, N) + (((A@B).relu().contiguous(arg=(1,))@C).relu()).realize() + + def test_double_gemm_half_contig(self): + A = Tensor.empty(N, N) + B = Tensor.empty(N, N) + C = Tensor.empty(N, N) + ((A@B).contiguous(arg=(1,))@C).realize() + + def test_double_gemm_contig(self): + A = Tensor.empty(N, N) + B = Tensor.empty(N, N) + C = Tensor.empty(N, N) + ((A@B).contiguous()@C).realize() + + def test_many_gemm(self): + A = Tensor.empty(N, N) + B = Tensor.empty(N, N) + C = Tensor.empty(N, N) + D = Tensor.empty(N, N) + E = Tensor.empty(N, N) + F = Tensor.empty(N, N) + (A@B@C@D@E@F).realize() + + def test_conv2d(self): + x = Tensor.empty(1, 4, 32, 32) + w1 = Tensor.empty(8, 4, 3, 3) + x.conv2d(w1).realize() + + def test_conv2d_t(self): + x = Tensor.empty(1, 4, 32, 32) + w1 = Tensor.empty(8, 4, 3, 3) + (x*2).conv2d(w1).realize() + + def test_double_conv2d(self): + x = Tensor.empty(1, 4, 32, 32) + w1 = Tensor.empty(8, 4, 3, 3) + w2 = Tensor.empty(12, 8, 3, 3) + x.conv2d(w1).conv2d(w2).realize() + + def test_double_conv2d_half_contig(self): + x = Tensor.empty(1, 4, 32, 32) + w1 = Tensor.empty(8, 4, 3, 3) + w2 = Tensor.empty(12, 8, 3, 3) + # NOTE: this contiguous doesn't help + x.conv2d(w1).contiguous(arg=(1,)).conv2d(w2).permute(0,2,3,1).contiguous().realize() + + def test_double_conv2d_contig(self): + x = Tensor.empty(1, 4, 32, 32) + w1 = Tensor.empty(8, 4, 3, 3) + w2 = Tensor.empty(12, 8, 3, 3) + x.conv2d(w1).contiguous().conv2d(w2).realize() + + def test_transformer_ffn(self): + from tinygrad.apps.llm import TransformerBlock + from tinygrad import nn + blk = TransformerBlock(1024, 4096, 1, 1, 1e-5) + for p in nn.state.get_parameters(blk): p.replace(Tensor.empty(p.shape)) + + x = Tensor.empty(128, 1024) + out = blk._feed_forward(x) + out.realize() + + def test_flash_attention(self): + BS, HEADS, SEQLEN, EMB = 4, 2, 16, 8 + + # bigger + #BS, HEADS, SEQLEN, EMB = 4, 32, 1024, 64 + + # llama 8B + #BS, HEADS, SEQLEN, EMB = 4, 32, 2048, 128 + + def fa(): + Tensor.manual_seed(1337) + with Context(DEBUG=0): q,k,v = [Tensor.rand(BS, HEADS, SEQLEN, EMB).contiguous().realize() for _ in range(3)] + return q.scaled_dot_product_attention(k, v).realize() + + with Context(DEBUG=4): + GlobalCounters.reset() + ret = fa() + with Context(RANGEIFY=0): + with Context(DEBUG=2): + GlobalCounters.reset() + cmp = fa() + with Context(DEBUG=0): + mse = ((cmp-ret)**2).sum().item() + print(f"mse: {mse}") + self.assertLessEqual(mse, 1e-6) + +# contiguous + reduce can support ranges? + +@unittest.skipIf(RANGEIFY<1, "tests only for RANGEIFY") +class TestOuterworld(unittest.TestCase): + def test_passthrough_range(self): + t = Tensor.rand(10, 10).realize() + + # passthrough ranges + a = UOp.range(10, -1) + sel = t[a] + cpy = sel.contiguous(a).realize() + + self.assertTrue((t==cpy).all().item()) + + def test_flip_range(self): + t = Tensor.rand(10, 10).realize() + + # passthrough ranges + a = UOp.range(10, -1) + sel = t[9-a] + cpy = sel.contiguous(a).realize() + + self.assertTrue((t.flip(0)==cpy).all().item()) + + def test_vmap(self): + def f(x): return x.sum(axis=0)*2 + + x = Tensor.ones(3, 10, 2).contiguous() + + # vmap across axis 0 + a = UOp.range(3, -1) + out = f(x[a]) + out = out.contiguous(a) + + # 3x2 grid of 20 + out.realize() + print(out.numpy()) + + def test_triple_gemm(self): + x = Tensor.rand(1, 16).realize() + W = Tensor.rand(3, 16, 16).realize() + + manual = (x @ W[0] @ W[1] @ W[2]).contiguous().realize() + + a = UOp.range(3, -1) + x = x.assign(x @ W[a]) + out = x.contiguous(a)[-1].contiguous().realize() + + self.assertTrue((manual==out).all().item()) + +if __name__ == '__main__': + unittest.main() diff --git a/tinygrad_repo/test/test_renderer_failures.py b/tinygrad_repo/test/test_renderer_failures.py index 3dd795ead..bcfad4643 100644 --- a/tinygrad_repo/test/test_renderer_failures.py +++ b/tinygrad_repo/test/test_renderer_failures.py @@ -25,7 +25,8 @@ def _test_uop_result(inputs:List[Tensor], stores:List[UOp], local_size=None): initial_value=np.zeros(sz, dtype=_to_np_dtype(dtype)).data) for u in uops if u.op is Ops.STORE] inbufs = [cast(UOp,x.uop).base.buffer for x in inputs] src = Device[Device.DEFAULT].renderer.render(uops) - ei = CompiledRunner(ProgramSpec("test", src, Device.DEFAULT, uops[-1], uops=uops, local_size=local_size)) + ei = CompiledRunner(ProgramSpec(uops[-1].arg.name if uops[-1].arg is not None else "test", + src, Device.DEFAULT, uops[-1], uops=uops, local_size=local_size)) ei.exec(outbufs+inbufs) return [np.frombuffer(x.as_buffer(), _to_np_dtype(x.dtype)) for x in outbufs] diff --git a/tinygrad_repo/test/test_sample.py b/tinygrad_repo/test/test_sample.py index ae7132792..d53474632 100644 --- a/tinygrad_repo/test/test_sample.py +++ b/tinygrad_repo/test/test_sample.py @@ -3,6 +3,7 @@ import numpy as np from tinygrad import Tensor, Variable, Device from tinygrad.helpers import OSX +# TODO: still fails with MAX_KERNEL_BUFFERS @unittest.skipIf(Device.DEFAULT == "WEBGPU" and not OSX, "WEBGPU Vulkan can only run kernels with up to 10 buffers") class TestSample(unittest.TestCase): def test_sample(self): diff --git a/tinygrad_repo/test/test_schedule.py b/tinygrad_repo/test/test_schedule.py index 41963c7a8..a895ed1a0 100644 --- a/tinygrad_repo/test/test_schedule.py +++ b/tinygrad_repo/test/test_schedule.py @@ -6,7 +6,7 @@ import unittest import numpy as np import functools from typing import cast -from hypothesis import assume, given, strategies as strat +from hypothesis import assume, given, settings, strategies as strat from tinygrad import nn, dtypes, Device, Tensor from tinygrad.device import is_dtype_supported @@ -16,7 +16,7 @@ from tinygrad.uop.ops import PatternMatcher, UOp, Ops, GroupOp, UPat, graph_rewr from tinygrad.uop.symbolic import symbolic_simple from tinygrad.helpers import CI, DEBUG, FUSE_ARANGE, SPLIT_REDUCEOP, GlobalCounters, Context, getenv, all_same, temp from tinygrad.schedule.kernelize import merge_views, get_kernelize_map, Kernel -from tinygrad.engine.schedule import ScheduleItem, create_schedule_with_vars +from tinygrad.engine.schedule import create_schedule_with_vars from tinygrad.engine.realize import CompiledRunner, run_schedule, lower_schedule class KernelCountException(Exception): pass @@ -70,7 +70,7 @@ def _test_conv2d(allowed:int, dtype:DType=dtypes.float, **kwargs): def schedule_graph_rewrite(big_sink:UOp): return get_kernelize_map(big_sink)[big_sink] class TestSchedule(unittest.TestCase): - def test_arange_avgpool2d(self, kcount=2): + def test_arange_avgpool2d(self, kcount=1): x = Tensor.arange(25).reshape(1,1,5,5).cast(dtypes.float32) t = x.avg_pool2d(padding=1) sched = t.schedule() @@ -151,6 +151,7 @@ class TestSchedule(unittest.TestCase): self.assertEqual(root.item(), sum(range(N))) @given(strat.sampled_from(range(2,4)), strat.sampled_from(range(2,4)), strat.sampled_from(range(0,4)), strat.sampled_from(range(0,4))) + @settings(deadline=None) def test_indexing_scalars(self, x, y, a, b): assume(a int: return len([x for x in u.toposort() if x.op is Ops.VIEW and len(x.src) != 0 and x.src[0].op not in {Ops.BUFFER, Ops.DEFINE_GLOBAL, Ops.ASSIGN}]) @@ -2092,7 +2075,6 @@ class TestSwizzle(unittest.TestCase): np.testing.assert_allclose(t.numpy(), x.numpy().sum(axis=1)+y.numpy().sum(axis=1), atol=1e-6, rtol=1e-3) # kernels can only have 1 or n in each dim - @unittest.expectedFailure def test_dont_parallelize_different_n(self): Tensor.manual_seed(0) x = Tensor.randn(4, 2, 2).realize() @@ -2108,7 +2090,6 @@ class TestSwizzle(unittest.TestCase): run_schedule(check_schedule(t, 3)) np.testing.assert_equal(t.numpy(), [[0.5, 0.5], [0.5, 0.5], [0., 0.]]) -def store_val(si:ScheduleItem): return si.ast.src[0].src[1] zero_pm = UPat(Ops.CONST, arg=0) class TestView(unittest.TestCase): def test_all_masked_out(self): @@ -2117,7 +2098,6 @@ class TestView(unittest.TestCase): # all masked out, degrades to const 0 b = a.pad(((0, 10), None))[10:] sched = check_schedule(b.contiguous(), 1) - assert zero_pm.match(store_val(sched[-1]), {}) run_schedule(sched) np.testing.assert_equal(b.numpy(), 0) @@ -2128,7 +2108,6 @@ class TestView(unittest.TestCase): assert b.shape == (10, 10) sched = check_schedule(b.contiguous(), 1) self.assertEqual(sched[-1].ast.full_shape, (10, 10)) - assert zero_pm.match(store_val(sched[-1]), {}) run_schedule(sched) np.testing.assert_equal(b.numpy(), 0) @@ -2143,8 +2122,6 @@ class TestView(unittest.TestCase): b = a.pad(((0, 5), None))[5:] assert b.shape == (10, 10) sched = check_schedule(b.contiguous(), 1) - self.assertEqual(store_val(sched[-1]).op, Ops.LOAD) - self.assertEqual(store_val(sched[-1]).st_arg, b.uop.st) run_schedule(sched) np.testing.assert_allclose(b.numpy(), np.pad(a.numpy(), ((0, 5), (0, 0)))[5:]) @@ -2260,24 +2237,6 @@ class TestConst(unittest.TestCase): sched = a.schedule() self.assertEqual(len(sched), 1) - def test_const_ast(self): - a = Tensor.ones((4,)).pad((1, 1)).contiguous() - sched = a.schedule() - print(sched[0].ast) - const_ast_pattern = UPat(Ops.SINK, src=(UPat.store(UPat(), UPat.where(UPat(Ops.VALID), UPat.cvar("x"), UPat(Ops.CONST, arg=0))),)) - self.assertEqual(len(const_ast_pattern.match(sched[0].ast, {})), 1) - run_schedule(sched) - self.assertListEqual(a.tolist(), [0, 1, 1, 1, 1, 0]) - - def test_unmasked_const_ast(self): - a = Tensor.ones((4,)).contiguous() - sched = a.schedule() - print(sched[0].ast) - const_ast_pattern = UPat(Ops.SINK, src=(UPat.store(UPat(), UPat(Ops.CONST)),)) - self.assertEqual(len(const_ast_pattern.match(sched[0].ast, {})), 1) - run_schedule(sched) - self.assertListEqual(a.tolist(), [1, 1, 1, 1]) - # ** part 2: scheduler behavior when const folding happens later def test_const_folding_no_realize(self): diff --git a/tinygrad_repo/test/test_search.py b/tinygrad_repo/test/test_search.py index 8faa25b82..011a49487 100644 --- a/tinygrad_repo/test/test_search.py +++ b/tinygrad_repo/test/test_search.py @@ -1,8 +1,8 @@ import unittest -from tinygrad.opt.kernel import Opt, OptOps, Kernel +from tinygrad.codegen.opt.kernel import Opt, OptOps, Kernel from tinygrad.uop.ops import UOp, Ops -from tinygrad.opt.search import bufs_from_lin, actions, beam_search +from tinygrad.codegen.opt.search import bufs_from_lin, actions, beam_search from tinygrad.device import Device from tinygrad.tensor import Tensor from tinygrad.dtype import dtypes @@ -34,30 +34,34 @@ class TestBEAM(unittest.TestCase): capturing.clear() self.assertNotEqual(k_beam_0[-1].prg.p.src, k_beam_1[-1].prg.p.src) - def test_get_kernel_actions(self): + def test_get_kernel_actions_dedup(self): from test.test_linearizer import helper_realized_ast - a = Tensor.rand(4, 3) - b = Tensor.rand(3) + from tinygrad.codegen.opt.search import get_kernel_actions + a = Tensor.empty(4, 3) + b = Tensor.empty(3) realized_ast, _ = helper_realized_ast(a @ b) - from tinygrad.opt.search import get_kernel_actions - lins = get_kernel_actions(Kernel(realized_ast), False).values() + candidates = [ + Opt(op=OptOps.UPCAST, axis=0, arg=0), Opt(op=OptOps.UPCAST, axis=0, arg=4), + Opt(op=OptOps.LOCAL, axis=0, arg=0), Opt(op=OptOps.LOCAL, axis=0, arg=4), + Opt(op=OptOps.UNROLL, axis=0, arg=0), Opt(op=OptOps.UNROLL, axis=0, arg=3), + Opt(op=OptOps.GROUP, axis=0, arg=0), Opt(op=OptOps.GROUP, axis=0, arg=3), + Opt(op=OptOps.GROUPTOP, axis=0, arg=0), Opt(op=OptOps.GROUPTOP, axis=0, arg=3), + ] + lins = get_kernel_actions(Kernel(realized_ast), include_0=False, candidates=candidates).values() # ensure amt=0 are not duplicated - if Opt(OptOps.UPCAST, 0, 0) in actions: - assert len([x for x in lins if x.applied_opts[0] == Opt(OptOps.UPCAST, axis=0, arg=4)]) == 0, "did not de-dup UPCAST" - if Opt(OptOps.LOCAL, 0, 0) in actions: - assert len([x for x in lins if x.applied_opts[0] == Opt(OptOps.LOCAL, axis=0, arg=4)]) == 0, "did not de-dup LOCAL" - if Opt(OptOps.UNROLL, 0, 0) in actions: - assert len([x for x in lins if x.applied_opts[0] == Opt(OptOps.UNROLL, axis=0, arg=3)]) == 0, "did not de-dup UNROLL" - if Opt(OptOps.GROUP, 0, 0) in actions: - assert len([x for x in lins if x.applied_opts[0] == Opt(OptOps.GROUP, axis=0, arg=3)]) == 0, "did not de-dup GROUP" - if Opt(OptOps.GROUPTOP, 0, 0) in actions: - assert len([x for x in lins if x.applied_opts[0] == Opt(OptOps.GROUPTOP, axis=0, arg=3)]) == 0, "did not de-dup GROUPTOP" + assert all(len(x.applied_opts) == 1 for x in lins) + kernel_actions = [x.applied_opts[0] for x in lins] + assert Opt(OptOps.UPCAST, axis=0, arg=4) not in kernel_actions, "did not de-dup UPCAST" + assert Opt(OptOps.LOCAL, axis=0, arg=4) not in kernel_actions, "did not de-dup LOCAL" + assert Opt(OptOps.UNROLL, axis=0, arg=3) not in kernel_actions, "did not de-dup UNROLL" + assert Opt(OptOps.GROUP, axis=0, arg=3) not in kernel_actions, "did not de-dup GROUP" + assert Opt(OptOps.GROUPTOP, axis=0, arg=3) not in kernel_actions, "did not de-dup GROUPTOP" @unittest.skipUnless(Device[Device.DEFAULT].renderer.tensor_cores, "test requires tensor cores") def test_search_over_shape(self): from test.test_linearizer import helper_realized_ast - from tinygrad.opt.search import get_kernel_actions + from tinygrad.codegen.opt.search import get_kernel_actions dtype_pairs = [(tc.dtype_in, tc.dtype_out) for tc in Device[Device.DEFAULT].renderer.tensor_cores] multi_shape_dtype_pairs = [dts for dts in dtype_pairs if dtype_pairs.count(dts) > 1] @@ -74,7 +78,7 @@ class TestBEAM(unittest.TestCase): def test_get_kernel_actions_preserves_actions_state(self): from test.test_linearizer import helper_realized_ast - from tinygrad.opt.search import get_kernel_actions + from tinygrad.codegen.opt.search import get_kernel_actions a = Tensor.rand(16, 16) b = Tensor.rand(16, 16) realized_ast, _ = helper_realized_ast(a @ b) @@ -127,10 +131,11 @@ class TestBEAM(unittest.TestCase): assert tm def test_beam_unnamed_kernels(self): + from test.test_linearizer import push_views a = Tensor.rand(100) b = Tensor.rand(100) si = (a+b).schedule()[-1] - lin = Kernel(si.ast) + lin = Kernel(push_views(si.ast)) bufs = bufs_from_lin(lin) # TODO: beam should have better instrumentation so we don't have to check this indirect thing kcount = len(Kernel.kernel_cnt) diff --git a/tinygrad_repo/test/test_setitem.py b/tinygrad_repo/test/test_setitem.py index b1fdcf3dd..967acc29f 100644 --- a/tinygrad_repo/test/test_setitem.py +++ b/tinygrad_repo/test/test_setitem.py @@ -158,6 +158,13 @@ class TestSetitem(unittest.TestCase): t[:-1] = t[1:] self.assertEqual(t.tolist(), [[2.0], [1.0], [1.0]]) + def test_setitem_big(self): + idx_size, val = 256, 4 + t = Tensor.arange(0, idx_size+1) + idx = Tensor.arange(0, idx_size) + t[idx] = val + self.assertEqual(t.tolist(), [val]*idx_size+[idx_size]) + class TestWithGrad(unittest.TestCase): def test_no_requires_grad_works(self): z = Tensor.rand(8, 8) diff --git a/tinygrad_repo/test/test_softmax_fusion.py b/tinygrad_repo/test/test_softmax_fusion.py index 23e1a4b77..660c567e0 100644 --- a/tinygrad_repo/test/test_softmax_fusion.py +++ b/tinygrad_repo/test/test_softmax_fusion.py @@ -86,7 +86,18 @@ class TestFuse(unittest.TestCase): return (arange == idx).mul(vals).sum(-2, dtype=vals.dtype) self._test_fuse(embedding, a, atol=1e-5) - @unittest.skip("still broken") + def test_attention_kernel_count(self): + wq = Tensor.empty(32, 32) + wk = Tensor.empty(32, 32) + wv = Tensor.empty(32, 32) + x = Tensor.empty(2, 100, 32) + q = (x @ wq).contiguous() + k = (x @ wk).contiguous() + v = (x @ wv).contiguous() + attn = q.scaled_dot_product_attention(k, v).fuse() + s = attn.schedule() + self.assertEqual(len(s), 4) # 3 matmul and 1 attention + def test_flash_attention(self): BS = 4 HEADS = 2 @@ -98,7 +109,21 @@ class TestFuse(unittest.TestCase): v = Tensor.randn(BS, HEADS, MATDIM, EMB).realize() # TODO: OPT is breaking things. NOOPT isn't linearizing with Context(NOOPT=1): - self._test_fuse(Tensor.scaled_dot_product_attention, q, k, v) + self._test_fuse(Tensor.scaled_dot_product_attention, q, k, v, atol=1e-5) + + def test_mismatch_reduce(self): + a = Tensor.ones(16, 10).contiguous().realize() + b = Tensor.ones(16, 20).contiguous().realize() + c = (a.sum(axis=1) + b.sum(axis=1)).fuse() + self.assertListEqual(c.tolist(), [30]*16) + + @unittest.skipUnless(Device.DEFAULT == "METAL", "METAL TC") + def test_fuse_and_tc_opt(self): + A = Tensor.randn(8, 8).realize() + B = Tensor.randn(8, 8).realize() + C = Tensor.ones(1, 8, 8).pad(((1,1), None, None),).sum(0) + out = (C + (A @ B)).fuse() + out.realize() class TestSoftmaxFusion(unittest.TestCase): @classmethod @@ -122,7 +147,7 @@ class TestSoftmaxFusion(unittest.TestCase): out = (inp / div).reshape(32, 10) out.realize() - np.testing.assert_allclose(sout.numpy(), out.numpy()) + np.testing.assert_allclose(sout.numpy(), out.numpy(), atol=3e-7) def test_softmax(self): # this is the softmax from scaled_dot_product_attention @@ -138,7 +163,7 @@ class TestSoftmaxFusion(unittest.TestCase): out = single_kernel_softmax(self.test) out.realize() - np.testing.assert_allclose(sout.numpy(), out.numpy()) + np.testing.assert_allclose(sout.numpy(), out.numpy(), atol=3e-7) def test_auto_softmax(self): print("*** softmax ***") @@ -151,7 +176,7 @@ class TestSoftmaxFusion(unittest.TestCase): out = self.test.contiguous().softmax(-1).fuse() run_one_schedule_item(out) - np.testing.assert_allclose(sout.numpy(), out.numpy()) + np.testing.assert_allclose(sout.numpy(), out.numpy(), atol=3e-7) @unittest.skip("recursion error no longer raised") def test_softmax_bw(self): diff --git a/tinygrad_repo/test/test_stunning.py b/tinygrad_repo/test/test_stunning.py index 0429a4051..285829235 100644 --- a/tinygrad_repo/test/test_stunning.py +++ b/tinygrad_repo/test/test_stunning.py @@ -25,7 +25,7 @@ class TestStunning(unittest.TestCase): nv = a[12].cat(a[76]).tolist() vi = Variable('i', 0, a.shape[0]-1) - with self.assertRaisesRegex(AssertionError, "different values for the same key"): + with self.assertRaisesRegex(AssertionError, "bind mismatch on"): wv = a[vi.bind(12)].cat(a[vi.bind(76)]).tolist() self.assertListEqual(nv, wv) diff --git a/tinygrad_repo/test/test_symbolic_jit.py b/tinygrad_repo/test/test_symbolic_jit.py index 881ce3348..f983f027c 100644 --- a/tinygrad_repo/test/test_symbolic_jit.py +++ b/tinygrad_repo/test/test_symbolic_jit.py @@ -2,50 +2,41 @@ import unittest from test.helpers import assert_jit_cache_len from tinygrad import Variable, Tensor, TinyJit -from tinygrad.helpers import Context import numpy as np class TestSymbolicJit(unittest.TestCase): - def setUp(self): - # A lot of these test are out of bounds, so we ignore the bounds check - self.context = Context(IGNORE_OOB=1) - self.context.__enter__() - - def tearDown(self): - self.context.__exit__(None, None, None) - def test_plus1(self): def f(a): return (a+1).realize() jf = TinyJit(f) + a = Tensor.rand(3, 10) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - a = Tensor.rand(3, i) - symbolic = jf(a.reshape(3, vi)).reshape(3, i).numpy() - expected = f(a).numpy() + symbolic = jf(a[:, :vi]).reshape(3, i).numpy() + expected = f(a[:, :i]).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) assert_jit_cache_len(jf, 1) def test_add(self): def f(a, b): return (a+b).realize() jf = TinyJit(f) + a = Tensor.rand(3, 10) + b = Tensor.rand(3, 10) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - a = Tensor.rand(3, i) - b = Tensor.rand(3, i) - symbolic = jf(a.reshape(3, vi), b.reshape(3, vi)).reshape(3, i).numpy() - expected = f(a, b).numpy() + symbolic = jf(a[:, :vi], b[:, :vi]).reshape(3, i).numpy() + expected = f(a[:, :i], b[:, :i]).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) assert_jit_cache_len(jf, 1) def test_matmul(self): def f(a, b): return (a@b).realize() jf = TinyJit(f) + a = Tensor.rand(3, 10) + b = Tensor.rand(10, 5) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - a = Tensor.rand(3, i) - b = Tensor.rand(i, 5) - symbolic = jf(a.reshape(3, vi), b.reshape(vi, 5)).numpy() - expected = f(a, b).numpy() + symbolic = jf(a[:, :vi], b[:vi, :]).numpy() + expected = f(a[:, :i], b[:i, :]).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) assert_jit_cache_len(jf, 1) @@ -55,119 +46,119 @@ class TestSymbolicJit(unittest.TestCase): s = (s+s).realize() # this one does not have symbols in input return s jf = TinyJit(f) + a = Tensor.rand(3, 10) + b = Tensor.rand(10, 5) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - a = Tensor.rand(3, i) - b = Tensor.rand(i, 5) - symbolic = jf(a.reshape(3, vi), b.reshape(vi, 5)).numpy() - expected = f(a, b).numpy() + symbolic = jf(a[:, :vi], b[:vi, :]).numpy() + expected = f(a[:, :i], b[:i, :]).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) assert_jit_cache_len(jf, 2) def test_attention(self): def f(q, k, v): return Tensor.scaled_dot_product_attention(q.transpose(1, 2), k.transpose(1, 2), v.transpose(1, 2)).realize() jf = TinyJit(f) + q = Tensor.rand(2, 1, 4, 8) + k = Tensor.rand(2, 10, 4, 8) + v = Tensor.rand(2, 10, 4, 8) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - q = Tensor.rand(2, 1, 4, 8) - k = Tensor.rand(2, i, 4, 8) - v = Tensor.rand(2, i, 4, 8) - symbolic = jf(q, k.reshape(2, vi, 4, 8), v.reshape(2, vi, 4, 8)).reshape(2, 4, 1, 8).numpy() - expected = f(q, k, v).numpy() + symbolic = jf(q, k[:, :vi], v[:, :vi]).reshape(2, 4, 1, 8).numpy() + expected = f(q, k[:, :i], v[:, :i]).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) assert_jit_cache_len(jf, 5) def test_cat_dim0(self): def f(a, b): return a.cat(b, dim=0).realize() jf = TinyJit(f) + a = Tensor.rand(10, 3) + b = Tensor.rand(2, 3) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - a = Tensor.rand(i, 3) - b = Tensor.rand(2, 3) - symbolic = jf(a.reshape(vi, 3), b).reshape(i+2, 3).numpy() - expected = f(a, b).numpy() + symbolic = jf(a[:vi], b).reshape(i+2, 3).numpy() + expected = f(a[:i], b).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) assert_jit_cache_len(jf, 1) def test_cat_dim1(self): def f(a, b): return a.cat(b, dim=1).realize() jf = TinyJit(f) + a = Tensor.rand(3, 10) + b = Tensor.rand(3, 2) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - a = Tensor.rand(3, i) - b = Tensor.rand(3, 2) - symbolic = jf(a.reshape(3, vi), b).reshape(3, i+2).numpy() - expected = f(a, b).numpy() + symbolic = jf(a[:, :vi], b).reshape(3, i+2).numpy() + expected = f(a[:, :i], b).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) assert_jit_cache_len(jf, 1) def test_cat_dim0_two_vars(self): def f(a, b): return a.cat(b, dim=0).realize() jf = TinyJit(f) + a = Tensor.rand(10, 3) + b = Tensor.rand(10, 3) for i in range(1, 5): for j in range(1, 5): vi = Variable("i", 1, 10).bind(i) vj = Variable("j", 1, 10).bind(j) - a = Tensor.rand(i, 3) - b = Tensor.rand(j, 3) - symbolic = jf(a.reshape(vi, 3), b.reshape(vj, 3)).reshape(i+j, 3).numpy() - expected = f(a, b).numpy() + symbolic = jf(a[:vi], b[:vj]).reshape(i+j, 3).numpy() + expected = f(a[:i], b[:j]).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) assert_jit_cache_len(jf, 1) def test_cat_dim1_two_vars(self): def f(a, b): return a.cat(b, dim=1).realize() jf = TinyJit(f) + a = Tensor.rand(3, 10) + b = Tensor.rand(3, 10) for i in range(1, 5): for j in range(1, 5): vi = Variable("i", 1, 10).bind(i) vj = Variable("j", 1, 10).bind(j) - a = Tensor.rand(3, i) - b = Tensor.rand(3, j) - symbolic = jf(a.reshape(3, vi), b.reshape(3, vj)).reshape(3, i+j).numpy() - expected = f(a, b).numpy() + symbolic = jf(a[:, :vi], b[:, :vj]).reshape(3, i+j).numpy() + expected = f(a[:, :i], b[:, :j]).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) assert_jit_cache_len(jf, 1) def test_two_vars_plus1_ij(self): def f(a, b): return (a@b+1).realize() jf = TinyJit(f) + a = Tensor.rand(10, 3) + b = Tensor.rand(3, 10) for i in range(1, 5): for j in range(1, 5): vi = Variable("i", 1, 10).bind(i) vj = Variable("j", 1, 10).bind(j) - a = Tensor.rand(i, 3) - b = Tensor.rand(3, j) - symbolic = jf(a.reshape(vi, 3), b.reshape(3, vj)).reshape(i, j).numpy() - expected = f(a, b).numpy() + symbolic = jf(a[:vi, :], b[:, :vj]).reshape(i, j).numpy() + expected = f(a[:i, :], b[:, :j]).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) assert_jit_cache_len(jf, 1) def test_two_vars_plus1_ji(self): def f(a, b): return (a@b+1).realize() jf = TinyJit(f) + a = Tensor.rand(10, 3) + b = Tensor.rand(3, 10) for i in range(1, 5): for j in range(1, 5): vi = Variable("i", 1, 10).bind(i) vj = Variable("j", 1, 10).bind(j) - a = Tensor.rand(j, 3) - b = Tensor.rand(3, i) - symbolic = jf(a.reshape(vj, 3), b.reshape(3, vi)).reshape(j, i).numpy() - expected = f(a, b).numpy() + symbolic = jf(a[:vj, :], b[:, :vi]).reshape(j, i).numpy() + expected = f(a[:j, :], b[:, :i]).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) assert_jit_cache_len(jf, 1) def test_jit_symbolic_shape_mismatch(self): @TinyJit def add(a, b): return (a+b).realize() + a = Tensor.rand(3, 10) + b = Tensor.rand(3, 10) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - a = Tensor.rand(3, i).reshape(3, vi) - b = Tensor.rand(3, i).reshape(3, vi) - add(a, b) + add(a[:, :vi], b[:, :vi]) vi2 = Variable("i", 1, 10).bind(7) - a = Tensor.rand(3, 7).reshape(3, vi2) - bad = Tensor.rand(4, 7).reshape(4, vi2) + a = Tensor.rand(3, 7)[:, :vi2] + bad = Tensor.rand(4, 7)[:, :vi2] with self.assertRaises(AssertionError): add(a, bad) @@ -175,9 +166,9 @@ class TestSymbolicJit(unittest.TestCase): # shrink is a movement, so we pair it with a simple function to test the JIT interaction def f(a): return (a+1).realize() jf = TinyJit(f) + a = Tensor.rand(7, 11) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - a = Tensor.rand(7, 11) symbolic = a.shrink(((3,5),(vi,vi+2))) symbolic = jf(symbolic).numpy() expected = f(a.shrink(((3,5),(i,i+2)))).numpy() @@ -188,9 +179,9 @@ class TestSymbolicJit(unittest.TestCase): # slice is a movement, so we pair it with a simple function to test the JIT interaction def f(a): return (a+1).realize() jf = TinyJit(f) + a = Tensor.rand(7, 11) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - a = Tensor.rand(7, 11) symbolic = a[3:5, vi:vi+2] symbolic = jf(symbolic).numpy() expected = f(a[3:5, i:i+2]).numpy() @@ -212,11 +203,11 @@ class TestSymbolicJit(unittest.TestCase): def test_ones_sum(self): def f(a): return a.sum().realize() jf = TinyJit(f) + t = Tensor.ones(10) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - t = Tensor.ones(i) - symbolic = jf(t.reshape(vi)).item() - expected = f(t).item() + symbolic = jf(t[:vi]).item() + expected = f(t[:i]).item() np.testing.assert_equal(symbolic, expected) def test_mean(self): @@ -226,22 +217,22 @@ class TestSymbolicJit(unittest.TestCase): jf = TinyJit(f) jf0 = TinyJit(f0) jf1 = TinyJit(f1) + a = Tensor.rand(10, 3) + b = Tensor.rand(10, 3) + c = Tensor.rand(10, 3) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - # aixs = None - a = Tensor.rand(i, 3) - symbolic = jf(a.reshape(vi, 3)).numpy() - expected = a.mean().numpy() + # axis = None + symbolic = jf(a[:vi]).numpy() + expected = a[:i].mean().numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) - # aixs = 0 - a = Tensor.rand(i, 3) - symbolic = jf0(a.reshape(vi, 3)).numpy() - expected = a.mean(0).numpy() + # axis = 0 + symbolic = jf0(b[:vi]).numpy() + expected = b[:i].mean(0).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) - # aixs = 1 - a = Tensor.rand(i, 3) - symbolic = jf1(a.reshape(vi, 3)).reshape(i).numpy() - expected = a.mean(1).numpy() + # axis = 1 + symbolic = jf1(c[:vi]).reshape(i).numpy() + expected = c[:i].mean(1).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) def test_mean_2d(self): @@ -251,24 +242,24 @@ class TestSymbolicJit(unittest.TestCase): jf = TinyJit(f) jf0 = TinyJit(f0) jf1 = TinyJit(f1) + a = Tensor.rand(10, 10) + b = Tensor.rand(10, 10) + c = Tensor.rand(10, 10) for i in range(1, 5): for j in range(1, 5): vi = Variable("i", 1, 10).bind(i) vj = Variable("j", 1, 10).bind(j) - # aixs = None - a = Tensor.rand(i, j) - symbolic = jf(a.reshape(vi, vj)).numpy() - expected = a.mean().numpy() + # axis = None + symbolic = jf(a[:vi, :vj]).numpy() + expected = a[:i, :j].mean().numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) - # aixs = 0 - a = Tensor.rand(i, j) - symbolic = jf0(a.reshape(vi, vj)).reshape(j).numpy() - expected = a.mean(0).numpy() + # axis = 0 + symbolic = jf0(b[:vi, :vj]).reshape(j).numpy() + expected = b[:i, :j].mean(0).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) - # aixs = 1 - a = Tensor.rand(i, j) - symbolic = jf1(a.reshape(vi, vj)).reshape(i).numpy() - expected = a.mean(1).numpy() + # axis = 1 + symbolic = jf1(c[:vi, :vj]).reshape(i).numpy() + expected = c[:i, :j].mean(1).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) def test_var(self): @@ -278,22 +269,22 @@ class TestSymbolicJit(unittest.TestCase): jf = TinyJit(f) jf0 = TinyJit(f0) jf1 = TinyJit(f1) + a = Tensor.rand(10, 3) + b = Tensor.rand(10, 3) + c = Tensor.rand(10, 3) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - # aixs = None - a = Tensor.rand(i, 3) - symbolic = jf(a.reshape(vi, 3)).numpy() - expected = a.var().numpy() + # axis = None + symbolic = jf(a[:vi]).numpy() + expected = a[:i].var().numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) - # aixs = 0 - a = Tensor.rand(i, 3) - symbolic = jf0(a.reshape(vi, 3)).numpy() - expected = a.var(0).numpy() + # axis = 0 + symbolic = jf0(b[:vi]).numpy() + expected = b[:i].var(0).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) - # aixs = 1 - a = Tensor.rand(i, 3) - symbolic = jf1(a.reshape(vi, 3)).reshape(i).numpy() - expected = a.var(1).numpy() + # axis = 1 + symbolic = jf1(c[:vi]).reshape(i).numpy() + expected = c[:i].var(1).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) def test_var_2d(self): @@ -303,24 +294,24 @@ class TestSymbolicJit(unittest.TestCase): jf = TinyJit(f) jf0 = TinyJit(f0) jf1 = TinyJit(f1) + a = Tensor.rand(10, 10) + b = Tensor.rand(10, 10) + c = Tensor.rand(10, 10) for i in range(1, 5): for j in range(1, 5): vi = Variable("i", 1, 10).bind(i) vj = Variable("j", 1, 10).bind(j) - # aixs = None - a = Tensor.rand(i, j) - symbolic = jf(a.reshape(vi, vj)).numpy() - expected = a.var().numpy() + # axis = None + symbolic = jf(a[:vi, :vj]).numpy() + expected = a[:i, :j].var().numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) - # aixs = 0 - a = Tensor.rand(i, j) - symbolic = jf0(a.reshape(vi, vj)).reshape(j).numpy() - expected = a.var(0).numpy() + # axis = 0 + symbolic = jf0(b[:vi, :vj]).reshape(j).numpy() + expected = b[:i, :j].var(0).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) - # aixs = 1 - a = Tensor.rand(i, j) - symbolic = jf1(a.reshape(vi, vj)).reshape(i).numpy() - expected = a.var(1).numpy() + # axis = 1 + symbolic = jf1(c[:vi, :vj]).reshape(i).numpy() + expected = c[:i, :j].var(1).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) if __name__ == '__main__': diff --git a/tinygrad_repo/test/test_symbolic_ops.py b/tinygrad_repo/test/test_symbolic_ops.py index 082d04655..9560db974 100644 --- a/tinygrad_repo/test/test_symbolic_ops.py +++ b/tinygrad_repo/test/test_symbolic_ops.py @@ -1,62 +1,53 @@ import unittest -from tinygrad import Tensor, Variable +from tinygrad import Tensor, Variable, GlobalCounters from tinygrad.shape.shapetracker import View -from tinygrad.helpers import Context, GlobalCounters from tinygrad.uop.ops import sym_infer from tinygrad.dtype import dtypes -from tinygrad.device import Device +from tinygrad.device import is_dtype_supported from examples.gpt2 import Attention import numpy as np class TestSymbolicOps(unittest.TestCase): - def setUp(self): - # A lot of these test are out of bounds, so we ignore the bounds check - self.context = Context(IGNORE_OOB=1) - self.context.__enter__() - - def tearDown(self): - self.context.__exit__(None, None, None) - def test_plus1(self): def f(a): return (a+1).realize() + a = Tensor.rand(3, 10) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - a = Tensor.rand(3, i) - symbolic = f(a.reshape(3, vi)).reshape(3, i).numpy() - expected = f(a).numpy() + symbolic = f(a[:, :vi]).reshape(3, i).numpy() + expected = f(a[:, :i]).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) def test_add(self): def f(a, b): return (a+b).realize() + a = Tensor.rand(3, 10) + b = Tensor.rand(3, 10) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - a = Tensor.rand(3, i) - b = Tensor.rand(3, i) - symbolic = f(a.reshape(3, vi), b.reshape(3, vi)).reshape(3, i).numpy() - expected = f(a, b).numpy() + symbolic = f(a[:, :vi], b[:, :vi]).reshape(3, i).numpy() + expected = f(a[:, :i], b[:, :i]).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) def test_matmul(self): def f(a, b): return (a@b).realize() + a = Tensor.rand(3, 10) + b = Tensor.rand(10, 5) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - a = Tensor.rand(3, i) - b = Tensor.rand(i, 5) - symbolic = f(a.reshape(3, vi), b.reshape(vi, 5)).numpy() - expected = f(a, b).numpy() + symbolic = f(a[:, :vi], b[:vi, :]).numpy() + expected = f(a[:, :i], b[:i, :]).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) def test_attention(self, dropout_p=0.0, imin=1, imax=5, use_symbolic=True): def f(q, k, v): return Tensor.scaled_dot_product_attention(q.transpose(1, 2), k.transpose(1, 2), v.transpose(1, 2), dropout_p=dropout_p).realize() + q = Tensor.rand(2, 1, 4, 8) + k = Tensor.rand(2, 10, 4, 8) + v = Tensor.rand(2, 10, 4, 8) for i in range(imin, imax): vi = Variable("i", 1, 10).bind(i) if use_symbolic else i - q = Tensor.rand(2, 1, 4, 8) - k = Tensor.rand(2, i, 4, 8) - v = Tensor.rand(2, i, 4, 8) Tensor.realize(q, k, v) GlobalCounters.reset() - symbolic = f(q, k.reshape(2, vi, 4, 8), v.reshape(2, vi, 4, 8)).reshape(2, 4, 1, 8).numpy() - expected = f(q, k, v).numpy() + symbolic = f(q, k[:, :vi, :, :], v[:, :vi, :, :]).reshape(2, 4, 1, 8).numpy() + expected = f(q, k[:, :i, :, :], v[:, :i, :, :]).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) def test_attention_cmp_symbolic(self): @@ -90,73 +81,89 @@ class TestSymbolicOps(unittest.TestCase): def test_cat_dim0(self): def f(a, b): return a.cat(b, dim=0).realize() + a = Tensor.rand(10, 3) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - a = Tensor.rand(i, 3) b = Tensor.rand(2, 3) - symbolic = f(a.reshape(vi, 3), b).reshape(i+2, 3).numpy() - expected = f(a, b).numpy() + symbolic = f(a[:vi, :], b).reshape(i+2, 3).numpy() + expected = f(a[:i, :], b).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) def test_cat_dim1(self): def f(a, b): return a.cat(b, dim=1).realize() + a = Tensor.rand(3, 10) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - a = Tensor.rand(3, i) b = Tensor.rand(3, 2) - symbolic = f(a.reshape(3, vi), b).reshape(3, i+2).numpy() - expected = f(a, b).numpy() + symbolic = f(a[:, :vi], b).reshape(3, i+2).numpy() + expected = f(a[:, :i], b).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) def test_cat_dim0_two_vars(self): def f(a, b): return a.cat(b, dim=0).realize() + a = Tensor.rand(10, 3) + b = Tensor.rand(10, 3) for i in range(1, 5): for j in range(1, 5): vi = Variable("i", 1, 10).bind(i) vj = Variable("j", 1, 10).bind(j) - a = Tensor.rand(i, 3) - b = Tensor.rand(j, 3) - symbolic = f(a.reshape(vi, 3), b.reshape(vj, 3)).reshape(i+j, 3).numpy() - expected = f(a, b).numpy() + symbolic = f(a[:vi, :], b[:vj, :]).reshape(i+j, 3).numpy() + expected = f(a[:i, :], b[:j, :]).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) def test_cat_dim1_two_vars(self): def f(a, b): return a.cat(b, dim=1).realize() + a = Tensor.rand(3, 10) + b = Tensor.rand(3, 10) for i in range(1, 5): for j in range(1, 5): vi = Variable("i", 1, 10).bind(i) vj = Variable("j", 1, 10).bind(j) - a = Tensor.rand(3, i) - b = Tensor.rand(3, j) - symbolic = f(a.reshape(3, vi), b.reshape(3, vj)).reshape(3, i+j).numpy() - expected = f(a, b).numpy() + symbolic = f(a[:, :vi], b[:, :vj]).reshape(3, i+j).numpy() + expected = f(a[:, :i], b[:, :j]).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) def test_two_vars_plus1_ij(self): def f(a, b): return (a@b+1).realize() + a = Tensor.rand(10, 3) + b = Tensor.rand(3, 10) for i in range(1, 5): for j in range(1, 5): vi = Variable("i", 1, 10).bind(i) vj = Variable("j", 1, 10).bind(j) - a = Tensor.rand(i, 3) - b = Tensor.rand(3, j) - symbolic = f(a.reshape(vi, 3), b.reshape(3, vj)).reshape(i, j).numpy() - expected = f(a, b).numpy() + symbolic = f(a[:vi, :], b[:, :vj]).reshape(i, j).numpy() + expected = f(a[:i, :], b[:, :j]).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) def test_two_vars_plus1_ji(self): # reverse the order of variables def f(a, b): return (a@b+1).realize() + a = Tensor.rand(10, 3) + b = Tensor.rand(3, 10) for i in range(1, 5): for j in range(1, 5): vi = Variable("i", 1, 10).bind(i) vj = Variable("j", 1, 10).bind(j) - a = Tensor.rand(j, 3) - b = Tensor.rand(3, i) - symbolic = f(a.reshape(vj, 3), b.reshape(3, vi)).reshape(j, i).numpy() - expected = f(a, b).numpy() + symbolic = f(a[:vj, :], b[:, :vi]).reshape(j, i).numpy() + expected = f(a[:j, :], b[:, :i]).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) + def test_reshape_from_symbolic(self): + a = Tensor.rand(30) + for i in range(3, 5): + vi = Variable("i", 3, 10).bind(i) + symbolic = a[:vi*3].reshape((3, 3)).numpy() + # To match symbolic reshape (potential implicit shrink), we need a shrink + expected = a[:i*3].shrink(((0, 9),)).reshape((3, 3)).numpy() + np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) + + def test_invalid_symbolic_reshape(self): + a = Tensor.rand(30) + for i in range(1, 5): + vi = Variable("i", 1, 10).bind(i) + # Cannot reshape into symbolic from non-symbolic + with self.assertRaises(AssertionError): a.reshape((3, vi)) + def test_shrink(self): for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) @@ -176,11 +183,10 @@ class TestSymbolicOps(unittest.TestCase): np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) def test_slice_no_start(self): + a = Tensor.rand(7, 11) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - a = Tensor.rand(7, 11) - symbolic = a[3:5, :vi:1].reshape(2,i) - symbolic = symbolic.numpy() + symbolic = a[3:5, :vi:1].reshape(2, i).numpy() expected = a[3:5, :i:1].numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) @@ -201,75 +207,75 @@ class TestSymbolicOps(unittest.TestCase): np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) def test_ones_sum(self): + t = Tensor.ones(10) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - t = Tensor.ones(i) - symbolic = t.reshape(vi).sum().item() - expected = t.sum().item() + symbolic = t[:vi].sum().item() + expected = t[:i].sum().item() np.testing.assert_equal(symbolic, expected) def test_mean(self): + a = Tensor.rand(10, 3) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) for axis in [None, 0, 1]: - a = Tensor.rand(i, 3) - expected = a.mean(axis).numpy() - symbolic = a.reshape(vi, 3).mean(axis).reshape(expected.shape).numpy() + expected = a[:i].mean(axis).numpy() + symbolic = a[:vi].mean(axis).reshape(expected.shape).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) def test_mean_2d(self): + a = Tensor.rand(10, 10) for i in range(1, 5): for j in range(1, 5): vi = Variable("i", 1, 10).bind(i) vj = Variable("j", 1, 10).bind(j) for axis in [None, 0, 1]: - a = Tensor.rand(i, j) - expected = a.mean(axis).numpy() - symbolic = a.reshape(vi, vj).mean(axis).reshape(expected.shape).numpy() + expected = a[:i, :j].mean(axis).numpy() + symbolic = a[:vi, :vj].mean(axis).reshape(expected.shape).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) def test_var(self): + a = Tensor.rand(10, 3) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) for axis in [None, 0, 1]: - a = Tensor.rand(i, 3) - expected = a.var(axis).numpy() - symbolic = a.reshape(vi, 3).var(axis).reshape(expected.shape).numpy() + expected = a[:i].var(axis).numpy() + symbolic = a[:vi].var(axis).reshape(expected.shape).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) def test_var_2d(self): + a = Tensor.rand(10, 10) for i in range(1, 5): for j in range(1, 5): vi = Variable("i", 1, 10).bind(i) vj = Variable("j", 1, 10).bind(j) for axis in [None, 0, 1]: - a = Tensor.rand(i, j) - expected = a.var(axis).numpy() - symbolic = a.reshape(vi, vj).var(axis).reshape(expected.shape).numpy() + expected = a[:i, :j].var(axis).numpy() + symbolic = a[:vi, :vj].var(axis).reshape(expected.shape).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=1e-6) def test_bitcast_down(self): + a = Tensor.rand(10, 3) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - a = Tensor.rand(i, 3) - expected = a.bitcast(dtypes.uint8).numpy() - symbolic = a.reshape(vi, 3).bitcast(dtypes.uint8).reshape(expected.shape).numpy() + expected = a[:i].bitcast(dtypes.uint8).numpy() + symbolic = a[:vi].bitcast(dtypes.uint8).reshape(expected.shape).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=0) - @unittest.skipIf(Device.DEFAULT == "WEBGPU", "no uint64") + @unittest.skipUnless(is_dtype_supported(dtypes.uint64), "no uint64") def test_bitcast_up(self): + a = Tensor.rand(10, 4) for i in range(1, 5): vi = Variable("i", 1, 10).bind(i) - a = Tensor.rand(i, 4) - expected = a.bitcast(dtypes.uint64).numpy() - symbolic = a.reshape(vi, 4).bitcast(dtypes.uint64).reshape(expected.shape).numpy() + expected = a[:i].bitcast(dtypes.uint64).numpy() + symbolic = a[:vi].bitcast(dtypes.uint64).reshape(expected.shape).numpy() np.testing.assert_allclose(symbolic, expected, atol=1e-6, rtol=0) @unittest.expectedFailure def test_conv2d_ceildiv_edge_case(self): v = Variable('v', 11, 50_000) val = 39601 - x = Tensor.randn(1, 22, 39601).reshape(1, 22, v.bind(val)) + x = Tensor.randn(1, 22, 50_000)[:, :, :v.bind(val)] weight = Tensor.randn(256, 22, 12) result = x.conv2d(weight=weight, groups=1, stride=6, dilation=1, padding=(3, 3)) diff --git a/tinygrad_repo/test/test_tensor.py b/tinygrad_repo/test/test_tensor.py index f71844b23..6e3cb4480 100644 --- a/tinygrad_repo/test/test_tensor.py +++ b/tinygrad_repo/test/test_tensor.py @@ -415,6 +415,21 @@ class TestTinygrad(unittest.TestCase): data = _generate_data(depth) np.testing.assert_allclose(Tensor(data).numpy(), np.array(data)) + def test_tensor_list_implicit_cast(self): + data = [True, False] + np.testing.assert_equal(Tensor(data, dtype=dtypes.int).numpy(), torch.tensor(data, dtype=torch.int).numpy()) + np.testing.assert_equal(Tensor(data, dtype=dtypes.uint8).numpy(), torch.tensor(data, dtype=torch.uint8).numpy()) + np.testing.assert_equal(Tensor(data, dtype=dtypes.float).numpy(), torch.tensor(data, dtype=torch.float).numpy()) + data = [-1, 0, 1, 2, 3] + np.testing.assert_equal(Tensor(data, dtype=dtypes.int).numpy(), torch.tensor(data, dtype=torch.int).numpy()) + np.testing.assert_equal(Tensor(data, dtype=dtypes.uint8).numpy(), torch.tensor(data, dtype=torch.uint8).numpy()) + np.testing.assert_equal(Tensor(data, dtype=dtypes.float).numpy(), torch.tensor(data, dtype=torch.float).numpy()) + data = [-3.5, -2.5, -1.5, 0, 1.5, 2.5, 3.5] + np.testing.assert_equal(Tensor(data, dtype=dtypes.int).numpy(), torch.tensor(data, dtype=torch.int).numpy()) + # NOTE: torch and jax raise OverflowError: Python integer -3 out of bounds for uint8 + # np.testing.assert_equal(Tensor(data, dtype=dtypes.uint8).numpy(), torch.tensor(data, dtype=torch.uint8).numpy()) + np.testing.assert_equal(Tensor(data, dtype=dtypes.float).numpy(), torch.tensor(data, dtype=torch.float).numpy()) + def test_tensor_list_special_values(self): if is_dtype_supported(dtypes.float16): data = [math.nan, -math.inf, 65504, 65519, 65519.999, 65520, 65520.1] @@ -892,13 +907,13 @@ class TestIdxUpcast(unittest.TestCase): @unittest.skipUnless(is_dtype_supported(dtypes.long), "int64 is supported") def test_overflow_sym(self): - self.do_op_then_assert(dtypes.long, 2048, 2048, UOp.variable("dim3", 0, 2048).bind(32)) + self.do_op_then_assert(dtypes.long, 2048, 2048, UOp.variable("dim3", 1, 2048).bind(32)) def test_regular(self): self.do_op_then_assert(dtypes.int, 64, 64, 64) def test_regular_sym(self): - self.do_op_then_assert(dtypes.int, 2048, 2048, UOp.variable("dim3", 0, 64).bind(32)) + self.do_op_then_assert(dtypes.int, 2048, 2048, UOp.variable("dim3", 1, 64).bind(32)) @unittest.skipIf(PTX, "PTX always convert Ops.INDEX to int64") def test_symfold(self): @@ -910,7 +925,7 @@ class TestIdxUpcast(unittest.TestCase): @unittest.skipIf(is_dtype_supported(dtypes.long), "int64 is supported") def test_int64_unsupported_overflow_sym(self): with self.assertRaises(KeyError): - self.do_op_then_assert(dtypes.long, 2048, 2048, UOp.variable("dim3", 0, 2048).bind(32)) + self.do_op_then_assert(dtypes.long, 2048, 2048, UOp.variable("dim3", 1, 2048).bind(32)) @unittest.skipIf(is_dtype_supported(dtypes.long), "int64 is supported") def test_int64_unsupported_overflow(self): diff --git a/tinygrad_repo/test/test_tensor_variable.py b/tinygrad_repo/test/test_tensor_variable.py index a680cf9a6..0fa165e46 100644 --- a/tinygrad_repo/test/test_tensor_variable.py +++ b/tinygrad_repo/test/test_tensor_variable.py @@ -1,7 +1,6 @@ import unittest import numpy as np from tinygrad import Tensor, Variable -from tinygrad.helpers import Context class TestTensorVariable(unittest.TestCase): def test_add_tvar(self): @@ -23,43 +22,38 @@ class TestTensorVariable(unittest.TestCase): assert (Tensor(3) * (vv * 4)).item() == 24 def test_symbolic_mean(self): - with Context(IGNORE_OOB=1): - vv = Variable("a", 1, 10).bind(2) - t = Tensor.ones(2, 2).contiguous().reshape(2, vv) - ret = t.mean().item() - assert ret == 1 + vv = Variable("a", 1, 10).bind(2) + t = Tensor.ones(2, 10).contiguous()[:, :vv] + ret = t.mean().item() + assert ret == 1 def test_symbolic_mean_2d(self): - with Context(IGNORE_OOB=1): - vv = Variable("a", 1, 10).bind(2) - vv2 = Variable("b", 1, 10).bind(2) - t = Tensor.ones(2, 2).contiguous().reshape(vv2, vv) - ret = t.mean().item() - assert ret == 1 + vv = Variable("a", 1, 10).bind(2) + vv2 = Variable("b", 1, 10).bind(2) + t = Tensor.ones(10, 10).contiguous()[:vv2, :vv] + ret = t.mean().item() + assert ret == 1 def test_symbolic_mean_2d_axis_1(self): - with Context(IGNORE_OOB=1): - vv = Variable("a", 1, 10).bind(2) - vv2 = Variable("b", 1, 10).bind(2) - t = Tensor.ones(2, 2).contiguous().reshape(vv2, vv) - ret = t.mean(axis=1).reshape(2, 1).numpy() - assert np.all(ret == 1) + vv = Variable("a", 1, 10).bind(2) + vv2 = Variable("b", 1, 10).bind(2) + t = Tensor.ones(10, 10).contiguous()[:vv2, :vv] + ret = t.mean(axis=1).reshape(2, 1).numpy() + assert np.all(ret == 1) def test_symbolic_mean_2d_add(self): - with Context(IGNORE_OOB=1): - add_term = Variable("c", 0, 10).bind(1) - vv = Variable("a", 1, 10).bind(1) - vv2 = Variable("b", 1, 10).bind(1) - t = Tensor.ones(2, 2).contiguous().reshape(vv2+add_term, vv+add_term) - ret = t.mean().item() - assert ret == 1 + add_term = Variable("c", 0, 10).bind(1) + vv = Variable("a", 1, 10).bind(1) + vv2 = Variable("b", 1, 10).bind(1) + t = Tensor.ones(20, 20).contiguous()[:vv2+add_term, :vv+add_term] + ret = t.mean().item() + assert ret == 1 def test_symbolic_var(self): - with Context(IGNORE_OOB=1): - vv = Variable("a", 1, 10).bind(2) - t = Tensor.ones(2, 2).contiguous().reshape(2, vv) - ret = t.var().item() - assert ret == 0 + vv = Variable("a", 1, 10).bind(2) + t = Tensor.ones(2, 10).contiguous()[:, :vv] + ret = t.var().item() + assert ret == 0 def test_symbolic_pad(self): vv = Variable("a", 1, 10).bind(2) @@ -92,5 +86,15 @@ class TestTensorVariable(unittest.TestCase): ret = Tensor.arange(begin.bind(4), end.bind(7)) self.assertListEqual(ret.reshape(3).tolist(), [4,5,6]) + def test_variable_empty(self): + v = Variable("i", 1, 10) + # TODO: Tensor creation from unbound variable should assert + # with self.assertRaises(AssertionError): t = Tensor.empty(3, v) + vb = v.bind(3) + t = Tensor.empty(3, vb) + assert t.uop.base.buffer.size == 30 + assert t.uop.st.shape == (3, vb) + + if __name__ == '__main__': unittest.main() diff --git a/tinygrad_repo/test/test_tiny.py b/tinygrad_repo/test/test_tiny.py index a38c7ed62..bc133a0dc 100644 --- a/tinygrad_repo/test/test_tiny.py +++ b/tinygrad_repo/test/test_tiny.py @@ -30,7 +30,10 @@ class TestTiny(unittest.TestCase): def test_gemm(self, N=64, out_dtype=dtypes.float): a = Tensor.ones(N,N).contiguous() b = Tensor.eye(N).contiguous() - self.assertListEqual((out:=a@b).flatten().tolist(), [1.0]*(N*N)) + lst = (out:=a@b).tolist() + for y in range(N): + for x in range(N): + self.assertEqual(lst[y][x], 1.0, msg=f"mismatch at ({y},{x})") if IMAGE < 2: self.assertEqual(out.dtype, out_dtype) # *** randomness *** @@ -73,17 +76,17 @@ class TestTiny(unittest.TestCase): def test_symbolic(self): i = Variable('i', 1, 10) - with Context(IGNORE_OOB=1): - for s in [2,5]: - ret = Tensor.ones(s).contiguous().reshape(i.bind(s)) + 1 - self.assertListEqual(ret.reshape(s).tolist(), [2.0]*s) + ones = Tensor.ones(10).contiguous() + for s in [2,5]: + ret = ones[:i.bind(s)] + 1 + self.assertListEqual(ret.contiguous().reshape(s).tolist(), [2.0]*s) def test_symbolic_reduce(self): i = Variable('i', 1, 10) - with Context(IGNORE_OOB=1): - for s in [2,5]: - ret = Tensor.ones(s).contiguous().reshape(i.bind(s)).sum() - self.assertEqual(ret.item(), s) + ones = Tensor.ones(10).contiguous() + for s in [2,5]: + ret = ones[:i.bind(s)].sum() + self.assertEqual(ret.item(), s) # *** a model *** @@ -106,6 +109,24 @@ class TestTiny(unittest.TestCase): probs = Tensor.rand(1, 1, 28, 28).sequential(layers).tolist() self.assertEqual(len(probs[0]), 10) + # TODO: this is failing because of how swizzling rewrites the ShapeTracker of the final STORE + @unittest.skipIf(IMAGE>0 or (CI and Device.DEFAULT == "DSP"), "failing because of make things that can't be images not images") + def test_mnist_backward(self): + # NOTE: we don't have the whole model here for speed + layers = [ + nn.Conv2d(1, 32, 5), Tensor.relu, + nn.Conv2d(32, 32, 5), Tensor.relu] + + # replace random weights with ones + # TODO: there's a bug here where it's tying two of the biases together. we need UNIQUE const + #Tensor.realize(*[p.replace(Tensor.ones_like(p).contiguous()) for p in nn.state.get_parameters(layers)]) + for p in nn.state.get_parameters(layers): p.replace(Tensor.empty(p.shape)) + + # realize gradients + for x in nn.state.get_parameters(layers): x.requires_grad_() + Tensor.empty(4, 1, 28, 28).sequential(layers).sum().backward() + Tensor.realize(*[x.grad for x in nn.state.get_parameters(layers) if x.grad is not None]) + # *** image *** @unittest.skipIf(Device.DEFAULT != "GPU", "image only supported on GPU") diff --git a/tinygrad_repo/test/test_uop_graph.py b/tinygrad_repo/test/test_uop_graph.py index 1ba5594c9..b56fe1a92 100644 --- a/tinygrad_repo/test/test_uop_graph.py +++ b/tinygrad_repo/test/test_uop_graph.py @@ -6,7 +6,7 @@ from tinygrad.helpers import DEBUG, Context from tinygrad.uop.ops import Ops, UOp, UPat, PatternMatcher, track_rewrites, graph_rewrite, GroupOp from tinygrad.uop.symbolic import sym from tinygrad.codegen import full_rewrite, full_rewrite_to_sink -from tinygrad.codegen.expander import expander +from tinygrad.codegen.late.expander import expander simple_pm = PatternMatcher([ (UPat.cvar('x', dtypes.int), lambda x: UOp.const(dtypes.float, 1.0) + UOp.const(dtypes.float, 2.0)), @@ -317,6 +317,7 @@ class TestUOpGraph(unittest.TestCase): for uop, const in zip(uops, consts): self.assertEqual(uop, const) + @unittest.skip("no longer testable standalone") def test_wmma_vectorize_fold(self): for i in [2, 4, 8]: vec = UOp(Ops.VECTORIZE, dtypes.half.vec(i), tuple(UOp.const(dtypes.half, 0.0) for _ in range(i))) @@ -440,18 +441,16 @@ class TestUOpGraph(unittest.TestCase): ld0 = UOp(Ops.LOAD, dtypes.int, (glbl0.index(Variable("i", 0, 20)),)) with self.assertRaises(RuntimeError): to_uops_list([ld0]) - @unittest.skip("outdated") def test_in_out_of_bounds_access_gated_store(self): with Context(IGNORE_OOB=0): - glbl0 = UOp(Ops.DEFINE_GLOBAL, dtypes.int.ptr(16), (), 0) + glbl0 = UOp(Ops.DEFINE_GLOBAL, dtypes.int.ptr(16), src=(), arg=0) v = Variable("v", 0, 20) - st0 = UOp(Ops.STORE, dtypes.void, (glbl0.index(v), UOp.const(dtypes.int, 0), v<16)) + st0 = UOp(Ops.STORE, dtypes.void, src=(glbl0.index(v), UOp.const(dtypes.int, 0), UOp(Ops.IF, src=(v<16,)))) to_uops_list([st0]) st1 = UOp(Ops.STORE, dtypes.void, (glbl0.index(v), v, v<20)) with self.assertRaises(RuntimeError): to_uops_list([st1]) - @unittest.skip("outdated") def test_in_bounds_access_gated_local(self): with Context(IGNORE_OOB=0): # Define buffers @@ -464,7 +463,7 @@ class TestUOpGraph(unittest.TestCase): gate = (gidx<400) & (lidx<8) - local_store = UOp(Ops.STORE, dtypes.void, (sbuf.index(lidx), UOp.const(dtypes.uint, 1), lidx<8)) + local_store = UOp(Ops.STORE, dtypes.void, (sbuf.index(lidx), UOp.const(dtypes.uint, 1), UOp(Ops.IF, src=(lidx<8,)))) barrier = UOp(Ops.BARRIER, dtypes.void, (local_store,)) if_barrier = UOp(Ops.IF, dtypes.void, (gate, barrier)) @@ -476,6 +475,34 @@ class TestUOpGraph(unittest.TestCase): global_store = UOp(Ops.STORE, dtypes.void, (gbuf.index(gidx), local_load)) to_uops_list([global_store]) + def test_load_with_float_in_index(self): + with Context(IGNORE_OOB=0): + ridx = UOp.range(20, 0) + glbl0 = UOp(Ops.DEFINE_GLOBAL, dtypes.int.ptr(16), (), 0) + i = (ridx.cast(dtypes.float)*0.68).trunc().cast(dtypes.int) + ld0 = UOp(Ops.LOAD, dtypes.int, (glbl0.index(i, ((0<=i)&(i<16))),)) + to_uops_list([ld0]) + glblfloat = UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(20), (), 0) + ldfloat = UOp(Ops.LOAD, dtypes.float, (glblfloat.index(ridx),)) + i = (ldfloat+3.14).cast(dtypes.int) + ld0 = UOp(Ops.LOAD, dtypes.int, (glbl0.index(i, ((0<=i)&(i<16))),)) + + def test_load_cast_to_bool(self): + with Context(IGNORE_OOB=0): + glbl0 = UOp(Ops.DEFINE_GLOBAL, dtypes.int.ptr(1), (), 0) + ridx = UOp.range(20, 0) + ld0 = UOp(Ops.LOAD, dtypes.int, (glbl0.index(ridx, ridx.cast(dtypes.bool).logical_not()),)) + to_uops_list([ld0]) + + @unittest.skip("Bool load is not supported yet") + def test_load_mask(self): + with Context(IGNORE_OOB=0): + glbl0 = UOp(Ops.DEFINE_GLOBAL, dtypes.int.ptr(16), (), 0) + mask = UOp(Ops.DEFINE_GLOBAL, dtypes.bool.ptr(16), (), 0) + ridx = UOp.range(20, 0) + ld0 = UOp(Ops.LOAD, dtypes.int, (glbl0.index(UOp.const(ridx, ridx<16&mask),))) + to_uops_list([ld0]) + def test_out_of_bounds_off_by_one_access(self): with Context(IGNORE_OOB=0): glbl0 = UOp(Ops.DEFINE_GLOBAL, dtypes.int.ptr(16), (), 0) @@ -564,10 +591,9 @@ class TestUOpGraph(unittest.TestCase): def test_switched_range_order(self): glbl = UOp(Ops.DEFINE_GLOBAL, dtypes.int.ptr(), (), 0) - c2 = UOp.const(dtypes.int, 2) cf = UOp.const(dtypes.float, 0.0) - r1 = UOp(Ops.RANGE, dtypes.int, (c2,), 0) - r2 = UOp(Ops.RANGE, dtypes.int, (c2,), 1) + r1 = UOp.range(2, 0) + r2 = UOp.range(2, 1) alu = UOp(Ops.MUL, dtypes.int, (r2, r1)) store = UOp(Ops.STORE, dtypes.void, (glbl.index(alu), cf)) uops = to_uops_list([store]) diff --git a/tinygrad_repo/test/test_uops.py b/tinygrad_repo/test/test_uops.py index b2a2e4f20..04ce791d0 100644 --- a/tinygrad_repo/test/test_uops.py +++ b/tinygrad_repo/test/test_uops.py @@ -14,7 +14,7 @@ from tinygrad.engine.realize import CompiledRunner, get_program from tinygrad.codegen import full_rewrite from tinygrad.uop.symbolic import sym from tinygrad.device import is_dtype_supported -from tinygrad.opt.kernel import Opt, OptOps +from tinygrad.codegen.opt.kernel import Opt, OptOps def to_uops_list(u:list[UOp], opts=None, skip_check=False) -> list[UOp]: return full_rewrite(UOp.sink(*u), opts) @@ -22,7 +22,7 @@ def _uops_to_prg(uops_list): uops = full_rewrite(ast:=UOp.sink(*uops_list), opts=Device[Device.DEFAULT].renderer) src = Device[Device.DEFAULT].renderer.render(uops) has_local = Device[Device.DEFAULT].renderer.has_local - return CompiledRunner(ProgramSpec("test", src, Device.DEFAULT, ast, uops=uops, + return CompiledRunner(ProgramSpec(uops[-1].arg.name if uops[-1].arg is not None else "test", src, Device.DEFAULT, ast, uops=uops, global_size=[1,1,1] if has_local else None, local_size=[1,1,1] if has_local else None)) def uop(uops:list[UOp], uop:Ops, dtype:Optional[DType], src:tuple[UOp, ...], arg:Any=None) -> UOp: @@ -177,6 +177,31 @@ class TestBoolUOps(TestUOps): def test_cmplt_bool(self): self._test_bop_bool_fxn(Ops.CMPLT, lambda a,b: a < b) def test_where_bool(self): self._test_top_bool_fxn(Ops.WHERE, lambda a,b,c: b if a else c) +class TestSafeCast(TestUOps): + def test_cast_folds(self): + a = UOp.variable("a", 1, 10, dtype=dtypes.int32) + self.assertEqual(a.cast(dtypes.int64).cast(dtypes.int32).simplify(), a) + self.assertEqual(a.cast(dtypes.double).cast(dtypes.int32).simplify(), a) + a = UOp.variable("a", 1, 10, dtype=dtypes.uint8) + self.assertEqual(a.cast(dtypes.int64).cast(dtypes.uint8).simplify(), a) + self.assertEqual(a.cast(dtypes.uint32).cast(dtypes.uint8).simplify(), a) + + def test_remove_intermediate_cast(self): + a = UOp.variable("a", 0., 100., dtype=dtypes.half) + self.assertEqual(a.cast(dtypes.double).cast(dtypes.float).simplify(), a.cast(dtypes.float)) + a = UOp.variable("a", 1, 10, dtype=dtypes.int32) + # TODO: double preserves certain int dtypes + self.assertEqual(a.cast(dtypes.double).cast(dtypes.float).simplify(), a.cast(dtypes.float)) + self.assertEqual(a.cast(dtypes.int64).cast(dtypes.int16).simplify(), a.cast(dtypes.int16)) + a = UOp.variable("a", 1, 10, dtype=dtypes.uint8) + self.assertEqual(a.cast(dtypes.int64).cast(dtypes.int32).simplify(), a.cast(dtypes.int32)) + + def test_safe_cast_using_bounds(self): + a = UOp.variable("a", 1, 10, dtype=dtypes.uint64) + self.assertEqual(a.cast(dtypes.int16).cast(dtypes.int).simplify(), a.cast(dtypes.int)) + a = UOp.variable("a", -10, 10, dtype=dtypes.int32) + self.assertEqual(a.cast(dtypes.int8).cast(dtypes.int64).simplify(), a.cast(dtypes.int64)) + class TestExecALU(TestUOps): def test_sqrt(self): self.assertEqual(exec_alu(Ops.SQRT, dtypes.float, (0.0,)), 0.0) @@ -402,6 +427,14 @@ class TestAssembly(unittest.TestCase): self.assertIn(Ops.SHR, ops) self.assertNotIn(Ops.IDIV, ops) + def test_fast_idiv_remove_powers_of_two(self): + ridx = UOp.range(2**20, 0) + uops = to_uops_list([ridx//(7*64)], opts=Device[Device.DEFAULT].renderer) + ops = [x.op for x in uops] + # this requires shifting out the powers of two before doing fast_idiv + # (((ridx0>>6)*18725)>>17) instead of (int)((((long)(ridx0)*1198373)>>29)) + self.assertNotIn(Ops.CAST, ops) + def test_mulacc_unrolled(self): # test that acc = acc + a0*b0 + a1*b1 + a2*b2 + a3*b3 # is not acc = acc + (a0*b0 + a1*b1 + a2*b2 + a3*b3) @@ -415,6 +448,17 @@ class TestAssembly(unittest.TestCase): uops = program.uops self.assertEqual(len([x.op for x in uops if x.op is Ops.MULACC]), 4) + def test_use_cmpeq(self): + g = UOp(Ops.DEFINE_GLOBAL, dtypes.uint32.ptr(), (), 0) + c = UOp(Ops.CONST, dtypes.uint, (), 7) + l = UOp(Ops.LOAD, dtypes.uint, (g.index(c),)) + comp = l.ne(c).ne(True) + uops = to_uops_list([comp], opts=Device[Device.DEFAULT].renderer) + Device[Device.DEFAULT].renderer.render(uops) + ops = [x.op for x in uops] + self.assertIn(Ops.CMPEQ, ops) + self.assertNotIn(Ops.CMPNE, ops) + class TestUOpMethod(unittest.TestCase): @unittest.skip("uops lt no longer ordered") def test_compare_alu_same_src_different_arg(self): @@ -428,7 +472,7 @@ class TestUOpMethod(unittest.TestCase): def test_uop_variables(self): a = UOp.variable("a", 1, 10) uop_var = Tensor(a.bind(1)) - st_var = Tensor.empty((2, 1)).reshape((2, a.bind(1))) + st_var = Tensor.empty((2, 10))[:, :a.bind(1)] _, var_vals = (uop_var+st_var).schedule_with_vars() self.assertEqual(len(var_vals), 1) self.assertEqual(list(var_vals)[0], a) @@ -508,19 +552,6 @@ class TestShapeSpec(unittest.TestCase): a = Tensor.ones((4, 4)).uop self.assertEqual(a.st, ShapeTracker.from_shape(()).reshape((1,1)).expand((4,4))) - def test_padded_const(self): - a = Tensor.ones((1, 1)).pad(((1, 1), (1, 1))) - ast = a.contiguous().schedule()[0].ast - valid_pattern = UPat(Ops.WHERE, src=(UPat(Ops.VALID), UPat.cvar(), UPat.cvar())) - valid_ternary = [x for x in ast.toposort() if valid_pattern.match(x, {})][0] - # the WHERE outputs a contiguous (3, 3) - self.assertEqual(valid_ternary.st, ShapeTracker.from_shape((3, 3))) - valid, x, y = valid_ternary.src - # very notably, only the first source is padded - self.assertIsNotNone(valid.st.views[-1].mask) - assert x.st.views[-1].mask is y.st.views[-1].mask is None - assert all(s.shape == (3, 3) for s in valid_ternary.src) - # NOTE: CONST ShapeTracker comes from its source def test_scalar_const(self): a = Tensor(0).uop diff --git a/tinygrad_repo/test/test_uops_stats.py b/tinygrad_repo/test/test_uops_stats.py index 657b837b9..6bd451f66 100644 --- a/tinygrad_repo/test/test_uops_stats.py +++ b/tinygrad_repo/test/test_uops_stats.py @@ -6,7 +6,7 @@ from tinygrad.renderer import Estimates from tinygrad.codegen import full_rewrite from tinygrad.uop.ops import Ops, UOp from tinygrad.dtype import dtypes -from tinygrad.opt.kernel import Kernel, Opt, OptOps, KernelOptError +from tinygrad.codegen.opt.kernel import Opt, OptOps, KernelOptError from tinygrad.device import Device def flops_mem(uops, ignore_indexing=False): @@ -20,6 +20,7 @@ def get_stats(x:Tensor): ei = lower_schedule_item(si) return ei.prg.estimates.ops, ei.prg.estimates.mem +@unittest.skipIf(Device.DEFAULT == "WEBGPU", "webgpu does extra load/store for packed types") class TestMemoryCount(unittest.TestCase): def test_add(self): a = Tensor.empty(1024, 1024, dtype=dtypes.uint8) @@ -173,76 +174,60 @@ class TestStatsOptimized(unittest.TestCase): self.assertEqual(p.estimates.mem, 3*N*N*4) # 3 NxN mats with floats def test_gemm(self): - k = Kernel(self.ast_gemm) - p = get_program(k.get_optimized_ast(), k.opts) + p = get_program(self.ast_gemm, opts=[]) self.check_gemm(p) self.assertEqual(p.estimates.lds, 2*N*N*N*4 + 4*N*N) def test_gemm_tc_unroll(self): - k = Kernel(self.ast_gemm) - if not k.apply_tensor_cores(): self.skipTest("no tensor cores") - k.apply_opt(Opt(OptOps.UNROLL, 0, 2)) - p = get_program(k.get_optimized_ast(), k.opts) + try: + p = get_program(self.ast_gemm, opts=[Opt(OptOps.TC, 0, (-1, 0, 1)), Opt(OptOps.UNROLL, 0, 2)]) + except KernelOptError: + raise unittest.SkipTest("no tensor cores") print(p.src) self.check_gemm(p) # this is a good lesson about why UPCASTing is a good idea def test_gemm_one_upcasted(self): - k = Kernel(self.ast_gemm) - k.apply_opt(Opt(OptOps.UPCAST, 0, 4)) - p = get_program(k.get_optimized_ast(), k.opts) + p = get_program(self.ast_gemm, opts=[Opt(OptOps.UPCAST, 0, 4)]) self.check_gemm(p) self.assertEqual(p.estimates.lds, N*N*N*4 + N*N*N*4//4 + 4*N*N) def test_gemm_upcasted(self): - k = Kernel(self.ast_gemm) - k.apply_opt(Opt(OptOps.UPCAST, 0, 4)) - k.apply_opt(Opt(OptOps.UPCAST, 1, 4)) - k.apply_opt(Opt(OptOps.UNROLL, 0, 4)) - p = get_program(k.get_optimized_ast(), k.opts) + p = get_program(self.ast_gemm, opts=[Opt(OptOps.UPCAST, 0, 4), Opt(OptOps.UPCAST, 1, 4), Opt(OptOps.UNROLL, 0, 4)]) self.check_gemm(p) self.assertEqual(p.estimates.lds, 2*N*N*N*4//4 + 4*N*N) def test_gemm_upcasted_locals(self): - k = Kernel(self.ast_gemm) - k.apply_opt(Opt(OptOps.UPCAST, 0, 4)) - k.apply_opt(Opt(OptOps.UPCAST, 1, 4)) try: - k.apply_opt(Opt(OptOps.LOCAL, 0, 5)) - k.apply_opt(Opt(OptOps.LOCAL, 1, 5)) + p = get_program(self.ast_gemm, opts=[Opt(OptOps.UPCAST, 0, 4), Opt(OptOps.UPCAST, 1, 4), + Opt(OptOps.LOCAL, 0, 4), Opt(OptOps.LOCAL, 1, 4)]) except KernelOptError: raise unittest.SkipTest("no locals") - p = get_program(k.get_optimized_ast(), k.opts) self.check_gemm(p) self.assertEqual(p.estimates.lds, 2*N*N*N*4//4 + 4*N*N) def test_gemm_group(self): - k = Kernel(self.ast_gemm) try: - k.apply_opt(Opt(OptOps.GROUP, 0, 4)) + p = get_program(self.ast_gemm, opts=[Opt(OptOps.GROUP, 0, 4)]) except KernelOptError: raise unittest.SkipTest("no locals") SZ = N*N*4 - p = get_program(k.get_optimized_ast(), k.opts) # NOTE: these are sort of wrong. they aren't honoring the IF statement self.check_gemm(p, extra_flops=SZ*4) self.assertEqual(p.estimates.lds, 2*N*N*N*4 + SZ*4 + (SZ*4 + 4*N*N)*4) def test_reduce(self): - k = Kernel(self.ast_reduce) - p = get_program(k.get_optimized_ast(), k.opts) + p = get_program(self.ast_reduce, opts=[]) print(p.name, p.estimates.ops, p.estimates.mem, p.estimates.lds) self.assertEqual(p.estimates.ops, N*N) self.assertEqual(p.estimates.mem, N*N*4 + 4) def test_reduce_group(self): - k = Kernel(self.ast_reduce) try: - k.apply_opt(Opt(OptOps.GROUP, 0, 50)) + p = get_program(self.ast_reduce, opts=[Opt(OptOps.GROUP, 0, 50)]) except KernelOptError: raise unittest.SkipTest("no locals") - p = get_program(k.get_optimized_ast(), k.opts) # NOTE: these are wrong, they don't respect the if statement print(p.name, p.estimates.ops, p.estimates.mem, p.estimates.lds) diff --git a/tinygrad_repo/test/test_winograd.py b/tinygrad_repo/test/test_winograd.py index 515694c6c..453e910f6 100644 --- a/tinygrad_repo/test/test_winograd.py +++ b/tinygrad_repo/test/test_winograd.py @@ -1,10 +1,7 @@ import unittest import numpy as np from tinygrad import Tensor, GlobalCounters, dtypes, Context, nn -from tinygrad.uop.ops import Ops -from tinygrad.helpers import Timing, CI, Profiling, WINO, DEBUG, getenv -from tinygrad.opt.kernel import Kernel -from tinygrad.opt.heuristic import hand_coded_optimizations +from tinygrad.helpers import CI, Profiling, WINO, getenv class TestWinogradClose(unittest.TestCase): def test_close(self): @@ -28,30 +25,6 @@ class TestWinograd(unittest.TestCase): def tearDown(self): WINO.value = self.old - def test_speed(self): - x = Tensor.empty(1,4,9,9) - w = Tensor.empty(4,4,3,3) - - with Timing("running conv: "): - out = Tensor.conv2d(x, w) - - with Timing("scheduling: "): - sched = out.schedule() - - for i,s in enumerate(sched): - if s.ast.op is not Ops.SINK: continue - ops = s.ast.toposort() - with Timing(f"linearize {i} with {len(ops):4d} ops: "): - l = Kernel(s.ast) - l.apply_opts(hand_coded_optimizations(l)) - assert len(l.sts) <= 256 # just the current value to prevent regression - if DEBUG >= 2: print(f"{len(l.sts):4d} shapetrackers with max {max(len(x.views) for x in l.sts)} views") - for st in l.sts: - assert len(st.views) <= 2, "too many views in winograd" - if DEBUG >= 3: - print(f"{len(st.views):3d} views") - for v in st.views: print(v) - def test_profile(self): x,w = Tensor.rand(1,4,9,9).realize(), Tensor.rand(4,4,3,3).realize() with Profiling(enabled=not CI, sort='time'): diff --git a/tinygrad_repo/test/unit/test_attention.py b/tinygrad_repo/test/unit/test_attention.py index 9929dbc32..38054be22 100644 --- a/tinygrad_repo/test/unit/test_attention.py +++ b/tinygrad_repo/test/unit/test_attention.py @@ -1,5 +1,6 @@ import unittest -from tinygrad import Tensor, dtypes +from tinygrad import Tensor, dtypes, TinyJit, UOp +from tinygrad.apps.llm import apply_rope # TODO: test_scheduler, but just in uint class TestAttention(unittest.TestCase): @@ -16,5 +17,29 @@ class TestAttention(unittest.TestCase): for si in softmax_inputs: assert all(b.dtype == dtypes.half for b in si.bufs), f"non half {si.bufs=}" + def test_apply_rope(self): + x = Tensor.randn(1, 2, 4, 8, dtype=dtypes.float32) + result = apply_rope(x, 0) + self.assertEqual(result.shape, x.shape) + self.assertEqual(result.dtype, x.dtype) + self.assertGreater((result - apply_rope(x, 5)).abs().max().item(), 1e-6) + with self.assertRaises(AssertionError): apply_rope(Tensor.randn(1, 1, 4, 7, dtype=dtypes.float32), 0) + + def test_apply_rope_jit_prune(self): + def rope_fn(x_in, pos): return apply_rope(x_in, pos) + rope_noprune = TinyJit(rope_fn) + rope_prune = TinyJit(rope_fn, prune=True) + + v_pos = UOp.variable("start_pos", 0, 100) + for _ in range(3): + rope_noprune(Tensor.randn(1, 2, 4, 8, dtype=dtypes.float32), v_pos.bind(1)) + rope_prune(Tensor.randn(1, 2, 4, 8, dtype=dtypes.float32), v_pos.bind(1)) + noprune_size = len(rope_noprune.captured.jit_cache) + prune_size = len(rope_prune.captured.jit_cache) + + self.assertGreater(noprune_size, prune_size) + self.assertGreaterEqual(noprune_size, 3) + self.assertEqual(prune_size, 1) + if __name__ == '__main__': unittest.main() \ No newline at end of file diff --git a/tinygrad_repo/test/unit/test_block_reorder.py b/tinygrad_repo/test/unit/test_block_reorder.py index cf6df95aa..c5e2309d0 100644 --- a/tinygrad_repo/test/unit/test_block_reorder.py +++ b/tinygrad_repo/test/unit/test_block_reorder.py @@ -1,7 +1,7 @@ import unittest, random from tinygrad.dtype import dtypes from tinygrad.uop.ops import print_uops, UOp, Ops -from tinygrad.codegen.linearize import block_reorder +from tinygrad.codegen.late.linearize import block_reorder from tinygrad.renderer.cstyle import OpenCLRenderer def is_toposorted(lst:list[UOp]): diff --git a/tinygrad_repo/test/unit/test_conv_shapetracker.py b/tinygrad_repo/test/unit/test_conv_shapetracker.py deleted file mode 100644 index e812827ac..000000000 --- a/tinygrad_repo/test/unit/test_conv_shapetracker.py +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env python -import unittest -from tinygrad.uop.ops import Ops -from tinygrad.tensor import Tensor -from tinygrad.nn import Conv2d -from tinygrad.shape.shapetracker import ShapeTracker, View -from tinygrad.helpers import prod -from test.unit.test_shapetracker import shapetracker_getitem - -class TestConvShapetracker(unittest.TestCase): - def test_conv_3x3_one_view(self): - conv = Conv2d(16, 32, (3, 3)) - # first run to init the weights, they are scheduled. - conv(Tensor.empty(1, 16, 10, 10)).schedule() - # run it again to get the kernels - sched = [si for si in conv(Tensor.empty(1, 16, 10, 10)).schedule() if si.ast.op is Ops.SINK] - assert len(sched) == 1, f"conv should only have one kernel, getting {len(sched)}" - for st in [x.st_arg for x in sched[0].ast.toposort() if x.op is Ops.LOAD]: - assert len(st.views) == 1 - - def test_conv_2x2_backward_one_view(self): - X = Tensor.rand(1, 1, 3, 3, requires_grad=True) - conv = Conv2d(1, 1, (2, 2), bias=False) - conv(X).mean().backward() - si = X.grad.schedule()[-1] - print(si) - ldb = [x for x in si.ast.toposort() if x.op is Ops.LOAD][0] - st: ShapeTracker = ldb.st_arg.simplify() - print(si.bufs[1].size) - self.assertEqual(si.bufs[1].size, st.real_size()) - for v in st.views: print(v) - - # same st - test_st = ShapeTracker(( - View(shape=(1, 1, 2, 4, 2, 4), strides=(0, 0, 2, 8, 1, 4), offset=0, mask=((0, 1), (0, 1), (0, 2), (0, 2), (0, 2), (0, 2)), contiguous=False), - View(shape=(1, 1, 1, 1, 3, 3, 3, 3), strides=(0, 0, 0, 0, 24, 8, 3, 1), offset=0, - mask=((0, 1), (0, 1), (0, 1), (0, 1), (0, 2), (0, 3), (0, 2), (0, 3)), contiguous=False))) - #test_st = ShapeTracker(( - # View(shape=(2,4), strides=(1,4), offset=0, mask=None, contiguous=False), - #)).simplify() - #View(shape=(1, 1, 2, 4, 2, 4), strides=(0, 0, 2, 8, 1, 4), offset=0, mask=((0, 1), (0, 1), (0, 2), (0, 2), (0, 2), (0, 2)), contiguous=False), - #View(shape=(1, 1, 1, 1, 3, 3, 3, 3), strides=(0, 0, 0, 0, 24, 8, 3, 1), offset=0, - # mask=((0, 1), (0, 1), (0, 1), (0, 1), (0, 2), (0, 3), (0, 2), (0, 3)), contiguous=False))).simplify() - print("*** new ***") - for v in test_st.views: print(v) - for i in range(prod(st.shape)): - i1, i2 = shapetracker_getitem(st, i), shapetracker_getitem(test_st, i) - print(i, i1, i2, si.bufs[1].size, i1==i2) - #self.assertEqual(i1, i2) - - with self.assertRaises(AssertionError): - assert len(st.views) <= 2 - -if __name__ == '__main__': - unittest.main() diff --git a/tinygrad_repo/test/unit/test_dtype.py b/tinygrad_repo/test/unit/test_dtype.py new file mode 100644 index 000000000..03e68a6b5 --- /dev/null +++ b/tinygrad_repo/test/unit/test_dtype.py @@ -0,0 +1,66 @@ +import unittest +from tinygrad.tensor import Tensor +from tinygrad.dtype import dtypes, DType, ImageDType, PtrDType, to_dtype + +class TestImageDType(unittest.TestCase): + def test_image_scalar(self): + assert dtypes.imagef((10,10)).base.scalar() == dtypes.float32 + assert dtypes.imageh((10,10)).base.scalar() == dtypes.float32 + def test_image_vec(self): + assert dtypes.imagef((10,10)).base.vec(4) == dtypes.float32.vec(4) + assert dtypes.imageh((10,10)).base.vec(4) == dtypes.float32.vec(4) + +class TestEqStrDType(unittest.TestCase): + def test_image_ne(self): + if ImageDType is None: raise unittest.SkipTest("no ImageDType support") + assert dtypes.float == dtypes.float32, "float doesn't match?" + assert dtypes.imagef((1,2,4)) != dtypes.imageh((1,2,4)), "different image dtype doesn't match" + assert dtypes.imageh((1,2,4)) != dtypes.imageh((1,4,2)), "different shape doesn't match" + assert dtypes.imageh((1,2,4)) == dtypes.imageh((1,2,4)), "same shape matches" + assert isinstance(dtypes.imageh((1,2,4)), ImageDType) + def test_ptr_eq(self): + assert dtypes.float32.ptr() == dtypes.float32.ptr() + assert not (dtypes.float32.ptr() != dtypes.float32.ptr()) + def test_strs(self): + if PtrDType is None: raise unittest.SkipTest("no PtrDType support") + self.assertEqual(str(dtypes.imagef((1,2,4))), "dtypes.imagef((1, 2, 4))") + self.assertEqual(str(dtypes.float32.ptr(16)), "dtypes.float.ptr(16)") + +class TestToDtype(unittest.TestCase): + def test_dtype_to_dtype(self): + dtype = dtypes.int32 + res = to_dtype(dtype) + self.assertIsInstance(res, DType) + self.assertEqual(res, dtypes.int32) + + def test_str_to_dtype(self): + dtype = "int32" + res = to_dtype(dtype) + self.assertIsInstance(res, DType) + self.assertEqual(res, dtypes.int32) + +class TestCastConvenienceMethod(unittest.TestCase): + def test_method(self): + for input_dtype in (dtypes.float, dtypes.int): + t = Tensor([1, 2], dtype=input_dtype) + self.assertEqual(t.dtype, input_dtype) + self.assertEqual(t.bool().dtype, dtypes.bool) + self.assertEqual(t.short().dtype, dtypes.short) + self.assertEqual(t.int().dtype, dtypes.int) + self.assertEqual(t.long().dtype, dtypes.long) + self.assertEqual(t.half().dtype, dtypes.half) + self.assertEqual(t.bfloat16().dtype, dtypes.bfloat16) + self.assertEqual(t.float().dtype, dtypes.float) + self.assertEqual(t.double().dtype, dtypes.double) + +class TestDtypeTolist(unittest.TestCase): + def test_bfloat16(self): + self.assertEqual(Tensor([-60000, 1.5, 3.1, 60000], device="PYTHON", dtype=dtypes.bfloat16).tolist(), [-59904.0, 1.5, 3.09375, 59904.0]) + def test_fp8(self): + # 448 + self.assertEqual(Tensor([-30000, 1.5, 3.1, 30000], device="PYTHON", dtype=dtypes.fp8e4m3).tolist(), [-448.0, 1.5, 3.0, 448.0]) + # 57344 + self.assertEqual(Tensor([-30000, 1.5, 3.1, 30000], device="PYTHON", dtype=dtypes.fp8e5m2).tolist(), [-28672.0, 1.5, 3.0, 28672.0]) + +if __name__ == "__main__": + unittest.main() diff --git a/tinygrad_repo/test/unit/test_dtype_spec.py b/tinygrad_repo/test/unit/test_dtype_spec.py index 0e78af19d..36e91e111 100644 --- a/tinygrad_repo/test/unit/test_dtype_spec.py +++ b/tinygrad_repo/test/unit/test_dtype_spec.py @@ -1,6 +1,6 @@ -import unittest, math, operator, subprocess +import unittest, math, operator, subprocess, struct from tinygrad.tensor import Tensor, dtypes, Device -from tinygrad.dtype import DType, DTYPES_DICT, truncate, truncate_fp16, truncate_bf16, _to_np_dtype, least_upper_dtype, least_upper_float +from tinygrad.dtype import DType, DTYPES_DICT, truncate, truncate_fp16, float_to_bf16, _to_np_dtype, least_upper_dtype, least_upper_float from tinygrad.device import is_dtype_supported from tinygrad.helpers import getenv, CI, DEBUG from hypothesis import given, settings, strategies as strat @@ -26,6 +26,9 @@ def _assert_eq(tensor:Tensor, target_dtype:DType, target, tol_target_dtype:float except AssertionError as e: raise AssertionError(f"\ntensor {tensor.numpy()} dtype {tensor.dtype} does not match target {target} with dtype {target_dtype}") from e +def u32_to_f32(u): return struct.unpack('f', struct.pack('I', u))[0] +def f32_to_u32(f): return struct.unpack('I', struct.pack('f', f))[0] + class TestHelpers(unittest.TestCase): signed_ints = (dtypes.int8, dtypes.int16, dtypes.int32, dtypes.int64) uints = (dtypes.uint8, dtypes.uint16, dtypes.uint32, dtypes.uint64) @@ -97,23 +100,89 @@ class TestHelpers(unittest.TestCase): np.testing.assert_equal(dt.min, False) np.testing.assert_equal(dt.max, True) + def test_dtype_range_vec(self): + for dt in core_dtypes: + self.assertEqual(dt.min, dt.vec(4).min) + self.assertEqual(dt.max, dt.vec(4).max) + def test_truncate_fp16(self): self.assertEqual(truncate_fp16(1), 1) self.assertEqual(truncate_fp16(65504), 65504) self.assertEqual(truncate_fp16(65519.999), 65504) self.assertEqual(truncate_fp16(65520), math.inf) + self.assertEqual(truncate_fp16(1e-8), 0.0) + self.assertEqual(truncate_fp16(-65504), -65504) + self.assertEqual(truncate_fp16(-65519.999), -65504) + self.assertEqual(truncate_fp16(-65520), -math.inf) + self.assertTrue(math.isnan(truncate_fp16(math.nan))) - def test_truncate_bf16(self): - self.assertEqual(truncate_bf16(1), 1) - self.assertAlmostEqual(truncate_bf16(1.1), 1.09375, places=7) - for a in [1234, 23456, -777.777]: - self.assertEqual(truncate_bf16(a), torch.tensor([a], dtype=torch.bfloat16).item()) - # TODO: torch bfloat 1.1 gives 1.1015625 instead of 1.09375 + def test_float_to_bf16(self): + # TODO: fuzz this better max_bf16 = torch.finfo(torch.bfloat16).max - self.assertEqual(truncate_bf16(max_bf16), max_bf16) - self.assertEqual(truncate_bf16(min_bf16:=-max_bf16), min_bf16) - self.assertEqual(truncate_bf16(max_bf16 * 1.00001), math.inf) - self.assertEqual(truncate_bf16(min_bf16 * 1.00001), -math.inf) + for a in [1, 1.1, 1234, 23456, -777.777, max_bf16, max_bf16 * 1.00001, -max_bf16, -max_bf16 * 1.00001, math.inf, -math.inf]: + self.assertEqual(float_to_bf16(a), torch.tensor([a], dtype=torch.bfloat16).item()) + self.assertTrue(math.isnan(float_to_bf16(math.nan))) + + def test_float_to_bf16_nan(self): + # In f32, NaN = exp 0xFF and mantissa โ‰  0. Quiet-vs-signaling is bit 22 of the mantissa: 1 = qNaN, 0 = sNaN. + # qNaN(+/-), sNaN(+/-) overflow(+/-) + patterns = [0x7FC00001, 0xFFC00001, 0x7F800001, 0xFF800001, 0x7FFFFFFF, 0xFFFFFFFF] + for u in patterns: + x = u32_to_f32(u) + y = float_to_bf16(x) + t = torch.tensor([x], dtype=torch.bfloat16).item() + self.assertTrue(math.isnan(y)) + self.assertTrue(math.isnan(t)) + + def test_float_to_bf16_round(self): + # round_to_nearest_even + uppers = [0x3f800000, 0x41230000, 0xC1460000] # 1.0, 10.1875, -12.375 + for upper in uppers: + base = upper & 0xFFFF0000 + base_f32 = u32_to_f32(base) + base_f32_round_up = u32_to_f32(base + 0x00010000) + + # low < 0x8000(0.5ULP) -> round down + x = u32_to_f32(base | 0x00007000) + self.assertEqual(float_to_bf16(x), base_f32) + self.assertEqual(torch.tensor([x], dtype=torch.bfloat16).item(), base_f32) + + # low > 0x8000(0.5ULP) -> round up + x = u32_to_f32(base | 0x0000C000) + self.assertEqual(float_to_bf16(x), base_f32_round_up) + self.assertEqual(torch.tensor([x], dtype=torch.bfloat16).item(), base_f32_round_up) + + # low == 0x8000(0.5ULP) and LSB even -> round down + if ((upper >> 16) & 1) == 0: + x = u32_to_f32(base | 0x00008000) + self.assertEqual(float_to_bf16(x), base_f32) + self.assertEqual(torch.tensor([x], dtype=torch.bfloat16).item(), base_f32) + # low == 0x8000(0.5ULP) and LSB odd -> round up + else: + x = u32_to_f32(base | 0x00008000) + self.assertEqual(float_to_bf16(x), base_f32_round_up) + self.assertEqual(torch.tensor([x], dtype=torch.bfloat16).item(), base_f32_round_up) + + def test_float_to_bf16_boundary(self): + # bf16 max finite: exp=0xFE, faction=0x7F => 0x7F7F0000(f32) + # bf16 inf(+/-): exp=0xFF + base = 0x7F7F0000 + inf_u32 = 0x7F800000 + + # low < 0.5ULP + x = u32_to_f32(base | 0x00007FFF) + self.assertEqual(f32_to_u32(float_to_bf16(x)), base) + self.assertEqual(f32_to_u32(torch.tensor([x], dtype=torch.bfloat16).item()), base) + + # low > 0.5ULP -> overflows to +inf + x = u32_to_f32(base | 0x0000C000) + self.assertEqual(f32_to_u32(float_to_bf16(x)), inf_u32) + self.assertEqual(f32_to_u32(torch.tensor([x], dtype=torch.bfloat16).item()), inf_u32) + + # low == 0.5ULP and LSB odd -> overflows to +inf + x = u32_to_f32(base | 0x00008000) + self.assertEqual(f32_to_u32(float_to_bf16(x)), inf_u32) + self.assertEqual(f32_to_u32(torch.tensor([x], dtype=torch.bfloat16).item()), inf_u32) @given(strat.floats(width=32, allow_subnormal=True, allow_nan=True, allow_infinity=True)) def test_truncate_fp8e4m3(self, x): @@ -549,4 +618,4 @@ class TestAutoCastType(unittest.TestCase): np.testing.assert_allclose(out.numpy(), tt.log_softmax(0).numpy(), rtol=1e-3) out = t.log_softmax(0, dtype=dtypes.float) self.assertEqual(out.dtype, dtypes.float) - np.testing.assert_allclose(out.numpy(), tt.log_softmax(0, dtype=torch.float).numpy(), rtol=1e-3) \ No newline at end of file + np.testing.assert_allclose(out.numpy(), tt.log_softmax(0, dtype=torch.float).numpy(), rtol=1e-3) diff --git a/tinygrad_repo/test/unit/test_gguf.py b/tinygrad_repo/test/unit/test_gguf.py index b36ad14fa..32dca21e0 100644 --- a/tinygrad_repo/test/unit/test_gguf.py +++ b/tinygrad_repo/test/unit/test_gguf.py @@ -53,11 +53,37 @@ class TestGGUF(unittest.TestCase): def test_load_tinyllama_q4_0(self): self._test_gguf_load("https://huggingface.co/ggml-org/models/resolve/main/tinyllamas/stories15M-q4_0.gguf?download=true") def test_load_gpt2_q4_1(self): self._test_gguf_load("https://huggingface.co/PrunaAI/gpt2-GGUF-smashed/resolve/main/gpt2.Q4_1.gguf?download=true") def test_load_sample_q6_k(self): self._test_gguf_load("https://huggingface.co/Isotr0py/test-gguf-sample/resolve/main/Quant_Q6_K_1024.gguf?download=true") + def test_load_sample_mxfp4(self): self._test_gguf_load("https://huggingface.co/ngxson/boring-testing-tiny/resolve/main/stories260K-mxfp4.gguf?download=true") def test_dequantization_q4_0(self): self._test_dequantization(ggml.GGML_TYPE_Q4_0) def test_dequantization_q4_1(self): self._test_dequantization(ggml.GGML_TYPE_Q4_1) def test_dequantization_q8_0(self): self._test_dequantization(ggml.GGML_TYPE_Q8_0) def test_dequantization_q6_k(self): self._test_dequantization(ggml.GGML_TYPE_Q6_K) + def test_dequantization_mxfp4(self): + MXFP4 = 39 + + def encode(nibbles, E): + packed = [(low & 0xF) | ((high & 0xF) << 4) for low, high in zip(nibbles[:16], nibbles[16:])] + return np.array([E] + packed, dtype=np.uint8) + + def decode(code, E): + sign = -1.0 if code * 0b1000 else 1.0 + exp = (code >> 1) & 0b11 + mant = code & 0b1 + val = (1.0 + 0.5 * mant) * np.exp2(exp - 1) if exp else 0.5 * mant + scale = np.exp2(E - 128) if E >= 2 else np.exp2(-127 if E == 1 else -128) + return sign * val * scale + + blocks, expected = [], [] + rng = np.random.default_rng(42) + for _ in range(4): + E = rng.integers(0, 256) + codes = rng.integers(0, 16, size=32, dtype=np.uint8) + blocks.append(encode(codes, E)) + expected.extend(decode(c, E) for c in codes) + tensor = Tensor(np.concatenate(blocks)) + out = ggml_data_to_tensor(tensor, len(expected), MXFP4) + self.assertListEqual(out.numpy().tolist(), np.array(expected, dtype=np.float32).tolist()) def test_expected_failure_unknown_type(self): with self.assertRaises(ValueError): diff --git a/tinygrad_repo/test/unit/test_graph_rewrite.py b/tinygrad_repo/test/unit/test_graph_rewrite.py index 8a3496101..df12fb81a 100644 --- a/tinygrad_repo/test/unit/test_graph_rewrite.py +++ b/tinygrad_repo/test/unit/test_graph_rewrite.py @@ -65,21 +65,21 @@ class TestFoldingAndReduction(unittest.TestCase): def test_full_graph_rewrite_reduction_with_unused_range(self): const1 = UOp.const(dtypes.int32, 15) const2 = UOp.const(dtypes.int32, 25) - rng = UOp.range(dtypes.int32, 10, idx=0) + rng = UOp.range(10, idx=0) optimized_sink = apply_rewrite((const1 + const2).reduce(Ops.ADD, rng)) expected_sum = 10 * (15 + 25) self.assertEqual(optimized_sink.arg, expected_sum) @unittest.skip("currently failing") def test_full_graph_rewrite_range_reduction(self): - simple_range = UOp.range(dtypes.int32, 5, idx=0) + simple_range = UOp.range(5, idx=0) optimized_sink = apply_rewrite(simple_range.reduce(Ops.ADD, simple_range)) expected_sum = sum(range(5)) self.assertEqual(optimized_sink.arg, expected_sum) @unittest.skip("currently failing") def test_full_graph_rewrite_simple_reduction_folding(self): - simple_range = UOp.range(dtypes.int32, 4, idx=0) + simple_range = UOp.range(4, idx=0) add_uop = simple_range + UOp.const(dtypes.int32, 1) optimized_sink = apply_rewrite(add_uop.reduce(Ops.ADD, simple_range)) expected_sum = sum(i + 1 for i in range(4)) @@ -87,8 +87,8 @@ class TestFoldingAndReduction(unittest.TestCase): @unittest.skip("currently failing") def test_full_graph_rewrite_nested_loop_collapse(self): - outer_range = UOp.range(dtypes.int32, 8, 0) - inner_range = UOp.range(dtypes.int32, 4, 1) + outer_range = UOp.range(8, 0) + inner_range = UOp.range(4, 1) expr = (outer_range * 10) + inner_range optimized_reduce_uop = apply_rewrite(expr.reduce(Ops.ADD, outer_range, inner_range)) self.assertEqual(optimized_reduce_uop.op, Ops.CONST) @@ -303,8 +303,8 @@ class TestRecurse(unittest.TestCase): def test_inf_loop(self): a = UOp.variable('a', 0, 10) pm = PatternMatcher([ - (UPat(Ops.DEFINE_VAR, name="x"), lambda x: x.replace(op=Ops.DEFINE_REG)), - (UPat(Ops.DEFINE_REG, name="x"), lambda x: x.replace(op=Ops.DEFINE_VAR)), + (UPat(Ops.DEFINE_VAR, name="x"), lambda x: x.replace(op=Ops.CONST)), + (UPat(Ops.CONST, name="x"), lambda x: x.replace(op=Ops.DEFINE_VAR)), ]) with self.assertRaises(RuntimeError): graph_rewrite(a, pm) @@ -312,8 +312,8 @@ class TestRecurse(unittest.TestCase): def test_inf_loop_bottom_up(self): a = UOp.variable('a', 0, 10) pm = PatternMatcher([ - (UPat(Ops.DEFINE_VAR, name="x"), lambda x: x.replace(op=Ops.DEFINE_REG)), - (UPat(Ops.DEFINE_REG, name="x"), lambda x: x.replace(op=Ops.DEFINE_VAR)), + (UPat(Ops.DEFINE_VAR, name="x"), lambda x: x.replace(op=Ops.CONST)), + (UPat(Ops.CONST, name="x"), lambda x: x.replace(op=Ops.DEFINE_VAR)), ]) with self.assertRaises(RuntimeError): graph_rewrite(a, pm, bottom_up=True) diff --git a/tinygrad_repo/test/unit/test_hashing.py b/tinygrad_repo/test/unit/test_hashing.py index 803883b78..1ab969b2f 100644 --- a/tinygrad_repo/test/unit/test_hashing.py +++ b/tinygrad_repo/test/unit/test_hashing.py @@ -2,7 +2,6 @@ from typing_extensions import Callable import hashlib, random, unittest from tinygrad import Tensor, Device, getenv, dtypes from tinygrad.device import is_dtype_supported -from tinygrad.helpers import CI @unittest.skipUnless(is_dtype_supported(dtypes.uint8) and is_dtype_supported(dtypes.uint64), "Device must support uint8 and uint64") @unittest.skipIf(getenv("MOCKGPU") and Device.DEFAULT == "NV", "crashes in NV CI") @@ -12,7 +11,7 @@ class TestHashing(unittest.TestCase): chunk_hashes = [hashlib.shake_128(chunk).digest(16) for chunk in chunks] return hashlib.shake_128(b''.join(chunk_hashes)).digest(16) - @unittest.skipIf(CI, "very slow") + @unittest.skip("very slow") def test_abc(self): expected = self._python_hash_1mb(b"abc" + b"\x00" * (2**20 - 3)) out = Tensor(b"abc").hash() @@ -65,7 +64,7 @@ class TestKeccak(unittest.TestCase): data = b"\x00" * 4 self.assertEqual(bytes(Tensor(data).keccak("shake_128").tolist()), hashlib.shake_128(data).digest(16)) - data = b"\x00" * (1000 if CI else 4096) + data = b"\x00" * 1000 self.assertEqual(bytes(Tensor(data).keccak("shake_128").tolist()), hashlib.shake_128(data).digest(16)) if __name__ == "__main__": diff --git a/tinygrad_repo/test/test_linalg.py b/tinygrad_repo/test/unit/test_linalg.py similarity index 83% rename from tinygrad_repo/test/test_linalg.py rename to tinygrad_repo/test/unit/test_linalg.py index ab2db74c5..da125517a 100644 --- a/tinygrad_repo/test/test_linalg.py +++ b/tinygrad_repo/test/unit/test_linalg.py @@ -16,7 +16,7 @@ def reconstruction_helper(A:List[Tensor],B:Tensor, tolerance=1.0e-5): class TestLinAlg(unittest.TestCase): def test_svd_general(self): - sizes = [(2,2),(5,3),(3,5),(2,2,2,2,3)] + sizes = [(2,2),(5,3),(3,5),(3,4,4),(2,2,2,2,3)] for size in sizes: a = Tensor.randn(size).realize() U,S,V = Tensor.svd(a) @@ -62,5 +62,15 @@ class TestLinAlg(unittest.TestCase): orthogonality_helper(Q) reconstruction_helper([Q,R],a) + def test_newton_schulz(self): + coefficients = [(2, -1.5, 0.5), (2.0, -1.4, 0.2, 0.2)]#these params map to the sign function + sizes = [(2,2), (3,2), (2,3), (2,2,2)] + for coefs in coefficients: + for size in sizes: + a = Tensor.randn(size) + b = Tensor.newton_schulz(a, steps=20, params=coefs, eps=0.0) + # ns(A) = U @ Vt -> (U @ Vt) @ (U @ Vt)t = I + orthogonality_helper(b if size[-1] > size[-2] else b.transpose(-2, -1), tolerance=1e-1) + if __name__ == "__main__": unittest.main() \ No newline at end of file diff --git a/tinygrad_repo/test/unit/test_linearizer_rewrite.py b/tinygrad_repo/test/unit/test_linearizer_rewrite.py index 94c368f61..01a3884f8 100644 --- a/tinygrad_repo/test/unit/test_linearizer_rewrite.py +++ b/tinygrad_repo/test/unit/test_linearizer_rewrite.py @@ -1,7 +1,7 @@ import unittest from tinygrad import Tensor, Context, Device from tinygrad.engine.realize import get_program -from tinygrad.opt.kernel import Opt, OptOps +from tinygrad.codegen.opt.kernel import Opt, OptOps from tinygrad.uop.ops import KernelInfo class TestLinearizerRewrite(unittest.TestCase): diff --git a/tinygrad_repo/test/unit/test_llm_tokenizer.py b/tinygrad_repo/test/unit/test_llm_tokenizer.py new file mode 100644 index 000000000..7b65818a6 --- /dev/null +++ b/tinygrad_repo/test/unit/test_llm_tokenizer.py @@ -0,0 +1,58 @@ +import unittest, base64, functools, sys +from tinygrad.apps.llm import SimpleTokenizer, get_llama_re +from tinygrad.helpers import fetch + +@unittest.skipIf(sys.platform == 'win32', "fetch race condition on Windows") +class TestLLMTokenizer(unittest.TestCase): + @functools.cached_property + def basic_tok(self): return SimpleTokenizer(".*", { b"a": 0, b"b": 1, b"c": 2, b"ab": 3, b"bc": 4 }, { "": 5, "": 6, "": 7 }) + + @functools.cached_property + def llama_tok(self): + # from https://github.com/tinygrad/tinygrad/blob/e0106b6b257ebc003eb3694144e3e198f7d8cc37/examples/llama3.py#L14 + model_file = fetch("https://huggingface.co/bofenghuang/Meta-Llama-3-8B/resolve/main/original/tokenizer.model") + with open(model_file, "rt") as fd: + str_vocab = [ line.split(maxsplit=1) for line in fd.read().splitlines() if line ] + normal_tokens = { base64.b64decode(stok): int(srank) for stok, srank in str_vocab } + + special_tokens = [ + "<|begin_of_text|>", + "<|end_of_text|>", + "<|reserved_special_token_0|>", + "<|reserved_special_token_1|>", + "<|reserved_special_token_2|>", + "<|reserved_special_token_3|>", + "<|start_header_id|>", + "<|end_header_id|>", + "<|reserved_special_token_4|>", + "<|eot_id|>", + ] + [ f"<|reserved_special_token_{i}|>" for i in range(5, 256 - 5) ] + return SimpleTokenizer(get_llama_re(), normal_tokens, { token: len(normal_tokens) + i for i, token in enumerate(special_tokens) }) + + def _test_coding(self, tok: SimpleTokenizer, text: str, expected_tokens: list[int]): + self.assertEqual(tok.encode(text), expected_tokens) + self.assertEqual(tok.decode(expected_tokens), text) + + def test_abc(self): self._test_coding(self.basic_tok, "abc", [ 3, 2 ]) + def test_abbc(self): self._test_coding(self.basic_tok, "abbc", [ 3, 4 ]) + def test_aabbbcc(self): self._test_coding(self.basic_tok, "aabbbcc", [ 0, 3, 1, 4, 2 ]) + def test_specials1(self): self._test_coding(self.basic_tok, "aaaa", [ 0, 5, 0, 6, 0, 7, 0 ]) + def test_specials2(self): self._test_coding(self.basic_tok, "aa", [ 5, 0, 6, 0, 7 ]) + def test_invalid_token(self): + with self.assertRaises(RuntimeError): self._test_coding(self.basic_tok, "L", []) + + def test_no_specials(self): self._test_coding(SimpleTokenizer(".*", { bytes([i]): i for i in range(256) }, {}), "abc", [97, 98, 99]) + + # NOTE: the correct tokenization for this can only be found by looking up the text chunk in the vocab, not by applying merges + def test_llama_early_tokenize(self): self._test_coding(self.llama_tok, " ะฝะฐะฟั€ะธะผะตั€", [ 111797 ]) + + def test_llama_basic(self): self._test_coding(self.llama_tok, "hello world", [ 15339, 1917 ]) + def test_llama_control_char(self): self._test_coding(self.llama_tok, " \x850", [ 220, 116360, 15 ]) + def test_llama_bytes(self): self._test_coding(self.llama_tok, " \xec\x8b\xa4\xed", [ 1717, 105, 116174, 82638, 2483 ]) + def test_llama_special1(self): self._test_coding(self.llama_tok, "hello <|end_of_text|>", [ 15339, 220, 128001 ]) + def test_llama_special2(self): self._test_coding(self.llama_tok, "<|start_header_id|>user<|end_header_id|>\n\n", [ 128006, 882, 128007, 271 ]) + def test_llama_repeat(self): self._test_coding(self.llama_tok, "00000000000000000", [ 931, 931, 931, 931, 931, 410 ]) + def test_llama_pat(self): self._test_coding(self.llama_tok, "today\n \n", [ 31213, 14211 ]) + +if __name__ == '__main__': + unittest.main() diff --git a/tinygrad_repo/test/unit/test_rewrite_not_ready.py b/tinygrad_repo/test/unit/test_rewrite_not_ready.py new file mode 100644 index 000000000..b1e19fe0c --- /dev/null +++ b/tinygrad_repo/test/unit/test_rewrite_not_ready.py @@ -0,0 +1,110 @@ +import unittest +from dataclasses import dataclass, field +from tinygrad.uop.ops import PatternMatcher, UOp, graph_rewrite, Ops, UPat, GroupOp, RewriteNotReady + +# we could insert CHILDREN node + +@dataclass +class ChildrenContext: + children: dict[UOp, list[UOp]]|None = None + +# this is a generic child labeller +def extract_children(ctx:ChildrenContext, x:UOp): + if ctx.children is not None: return + ctx.children = {k:list(v.keys()) for k,v in x.get_children_map().items() if len(v) > 1} + +def mark_children(ctx:ChildrenContext, x:UOp): + new_srcs = [(UOp(Ops.CHILD, s.dtype, src=(s,), arg=(ctx.children[s].index(x), len(ctx.children[s]))) if s in ctx.children else s) for s in x.src] + return x.replace(src=tuple(new_srcs)) + +pm_children = PatternMatcher([ + (UPat(Ops.SINK, name="x"), extract_children), + (UPat(GroupOp.All-{Ops.CHILD}, name="x"), mark_children), +]) + +@dataclass +class TestContext: + seen_children: dict[UOp, set[int]] = field(default_factory=dict) + ready_children: dict[UOp, set[int]] = field(default_factory=dict) + seen_consts:int = 0 + saved_seen_consts:int = 0 + exp2_visit_count:int = 0 + +# this is a generic pattern +def visit_child(ctx:ChildrenContext, x:UOp): + if x.src[0] not in ctx.seen_children: + ctx.seen_children[x.src[0]] = set() + ctx.ready_children[x.src[0]] = set() + ctx.seen_children[x.src[0]].add(x.arg[0]) + if len(ctx.seen_children[x.src[0]]) != x.arg[1]: + print(f"visit CHILD {x.arg} bottom up -- not ready {ctx.seen_children[x.src[0]]}") + raise RewriteNotReady + print(f"visit CHILD {x.arg} bottom up -- READY {ctx.seen_children[x.src[0]]}") + ctx.ready_children[x.src[0]].add(x.arg[0]) + +pm_child_visitor = PatternMatcher([ + (UPat(Ops.CHILD, name="x"), visit_child), +]) + +# this is for the test +def see_const(ctx:ChildrenContext, c:UOp): ctx.seen_consts += c.arg +def see_exp2(ctx:ChildrenContext): ctx.exp2_visit_count += 1 +def save_seen_consts(ctx:ChildrenContext, x:UOp): ctx.saved_seen_consts = ctx.seen_consts +pm_consts = PatternMatcher([ + (UPat(Ops.DEFINE_VAR, name="x"), save_seen_consts), + (UPat()+UPat.cvar("c"), see_const), + (UPat(Ops.EXP2), see_exp2), +]) + +class TestChildrenRewrite(unittest.TestCase): + def test_not_ready_double_simple(self): + global_a = UOp.variable("a", 0, 10).exp2() + inter = (global_a+global_a).exp2() + global_sink = (inter+inter).sink() + + sink = graph_rewrite(global_sink, pm_children, ctx=ChildrenContext(), bottom_up=True) + ctx = TestContext() + graph_rewrite(sink, pm_consts, ctx=ctx, bottom_up=True) + self.assertEqual(ctx.exp2_visit_count, 2) + + def test_not_ready_double(self): + global_a = UOp.variable("a", 0, 10).exp2() + inter = ((global_a+1000)+(global_a+100)).exp2() + global_sink = ((inter+10)+(inter+1)).sink() + + sink = graph_rewrite(global_sink, pm_children, ctx=ChildrenContext(), bottom_up=True) + print("test_not_ready_double") + ctx = TestContext() + graph_rewrite(sink, pm_child_visitor+pm_consts, ctx=ctx, bottom_up=True) + self.assertEqual(ctx.exp2_visit_count, 2) + self.assertEqual(ctx.seen_consts, ctx.saved_seen_consts) + self.assertEqual(ctx.seen_consts, 1111) + + def test_in_srcs_twice(self): + global_a = UOp.variable("a", 0, 10).exp2() + global_sink = (global_a+global_a).sink() + + ctx = TestContext() + graph_rewrite(global_sink, pm_consts, ctx=ctx, bottom_up=True) + self.assertEqual(ctx.exp2_visit_count, 1) + + def test_not_ready(self): + global_a = UOp.variable("a", 0, 10).exp2() + global_sink = ((global_a+2)+(global_a+3)).sink() + + # without children and not ready, we don't see both adds before the DEFINE_VAR + ctx = TestContext() + graph_rewrite(global_sink, pm_consts, ctx=ctx, bottom_up=True) + self.assertNotEqual(ctx.seen_consts, ctx.saved_seen_consts) + self.assertEqual(ctx.exp2_visit_count, 1) + + # with children and not ready we do + sink = graph_rewrite(global_sink, pm_children, ctx=ChildrenContext(), bottom_up=True) + ctx = TestContext() + graph_rewrite(sink, pm_child_visitor+pm_consts, ctx=ctx, bottom_up=True) + self.assertEqual(ctx.seen_consts, ctx.saved_seen_consts) + self.assertEqual(ctx.exp2_visit_count, 1) + self.assertSetEqual(list(ctx.ready_children.values())[0], {0,1}) + +if __name__ == '__main__': + unittest.main() diff --git a/tinygrad_repo/test/unit/test_rewrite_tracked_childen.py b/tinygrad_repo/test/unit/test_rewrite_tracked_childen.py index 3e410ff29..21c32269e 100644 --- a/tinygrad_repo/test/unit/test_rewrite_tracked_childen.py +++ b/tinygrad_repo/test/unit/test_rewrite_tracked_childen.py @@ -1,7 +1,7 @@ import unittest from tinygrad import Tensor from tinygrad.uop.ops import PatternMatcher, Ops, UPat, graph_rewrite, RewriteContext, UOp -from tinygrad.schedule.kernelize import sym, merge_views +from tinygrad.schedule.kernelize import kernelize_sym, merge_views class TestRewriteTrackedChildren(unittest.TestCase): @unittest.skip("track_children no longer supported") @@ -57,7 +57,7 @@ class TestRewriteTrackedChildren(unittest.TestCase): extra = PatternMatcher([(UPat(Ops.REDUCE_AXIS, name="r"), print_children)]) a = Tensor.empty(3, 3) r = (a+0).sum() - graph_rewrite(r.uop, merge_views+sym+extra, track_children=True) + graph_rewrite(r.uop, merge_views+kernelize_sym+extra, track_children=True) if __name__ == '__main__': unittest.main() diff --git a/tinygrad_repo/test/unit/test_search.py b/tinygrad_repo/test/unit/test_search.py index 8d179754b..33b07e3a2 100644 --- a/tinygrad_repo/test/unit/test_search.py +++ b/tinygrad_repo/test/unit/test_search.py @@ -1,10 +1,11 @@ import unittest from tinygrad import Tensor, Device -from tinygrad.opt.kernel import Kernel +from tinygrad.codegen.opt.kernel import Kernel from tinygrad.device import Buffer -from tinygrad.opt.search import get_test_global_size, bufs_from_lin +from tinygrad.codegen.opt.search import get_test_global_size, bufs_from_lin from tinygrad.helpers import GlobalCounters from extra.optimization.helpers import time_linearizer +from test.test_linearizer import push_views class TestSearchUtil(unittest.TestCase): def test_get_test_global_size(self): @@ -25,7 +26,7 @@ class TestSearchUtil(unittest.TestCase): a = Tensor.randn(4, 4).realize() b = a+a[0] si = b.schedule()[0] - rawbufs = bufs_from_lin(Kernel(si.ast)) + rawbufs = bufs_from_lin(Kernel(push_views(si.ast))) assert len(rawbufs) == 2 assert all(r is not None for r in rawbufs) assert all(isinstance(r, Buffer) for r in rawbufs) @@ -38,13 +39,13 @@ class TestTimeLinearizer(unittest.TestCase): si = (a+1).schedule()[0] # create fresh empty buffers rawbufs = [Buffer(b.device, b.size, b.dtype).allocate() for b in si.bufs] - tm = time_linearizer(Kernel(si.ast), rawbufs, allow_test_size=False, cnt=10, disable_cache=True) + tm = time_linearizer(Kernel(push_views(si.ast)), rawbufs, allow_test_size=False, cnt=10, disable_cache=True) assert tm > 0 and tm != float('inf') # Ensure that the kernel count is not incremented by time_linearizer when clearing l2 def test_kernel_count(self): ast = Tensor.zeros(16).contiguous().kernelize().uop.src[1].arg.ast - lin = Kernel(ast) + lin = Kernel(push_views(ast)) bufs = bufs_from_lin(lin) kernel_count = GlobalCounters.kernel_count diff --git a/tinygrad_repo/test/unit/test_shapetracker.py b/tinygrad_repo/test/unit/test_shapetracker.py index 23fda9259..a3cfc8068 100644 --- a/tinygrad_repo/test/unit/test_shapetracker.py +++ b/tinygrad_repo/test/unit/test_shapetracker.py @@ -6,7 +6,7 @@ from tinygrad.helpers import prod from tinygrad.shape.shapetracker import ShapeTracker, View from tinygrad import Variable from tinygrad.uop.ops import UOp, Ops, graph_rewrite -from tinygrad.codegen.devectorizer import sym +from tinygrad.codegen.late.devectorizer import sym from itertools import product def shapetracker_getitem(st:ShapeTracker, val:int): @@ -827,39 +827,6 @@ class TestShapeTrackerSize(unittest.TestCase): st = ShapeTracker.from_shape((10,10)).pad(((2,4), (3,1))).flip((True, True)) self.assertEqual(st.real_size(), 100) -class TestConsecutive(unittest.TestCase): - @classmethod - def setUpClass(self): - from tinygrad.tensor import Tensor # easier test setup - self.t = Tensor([[1, 2, 3, 4], [5, 6, 7, 8]]) - self.const = Tensor(2) - self.ones = Tensor.ones(2, 4) - - def test_unmodified(self): - assert self.t.uop.st.consecutive - assert self.t.reshape(4, 2).uop.st.consecutive - assert self.t.reshape(1, 8).uop.st.consecutive - - def test_sliced(self): - assert self.t[0].uop.st.consecutive - assert self.t[0, 1:2].uop.st.consecutive - assert self.t[1].uop.st.consecutive - assert not self.t[:, 0].uop.st.consecutive - assert not self.t[:, 1].uop.st.consecutive - - def test_padded(self): - assert not self.t.pad(((1, 1), None)).uop.st.consecutive - assert not self.t.pad((None, (1, 1))).uop.st.consecutive - - def test_const(self): - assert self.const.uop.st.consecutive - - def test_ones(self): - assert not self.ones.uop.st.consecutive - assert not self.ones[0, :].uop.st.consecutive - # consecutive if sliced into size 1 - assert self.ones[0, 0].uop.st.consecutive - class TestRender(unittest.TestCase): def test_render(self): st = ShapeTracker.from_shape((2, 3)) @@ -872,25 +839,22 @@ class TestRender(unittest.TestCase): self.assertEqual(idx.render(), "((ridx0*3)+ridx1)") self.assertEqual(valid.render(), "(ridx0<2)") -class TestVariableReshape(unittest.TestCase): - def test_reshape(self): - st = ShapeTracker.from_shape((3,)) - st = st.reshape((Variable("i", 1, 10),)) +class TestVariableShrink(unittest.TestCase): + def test_shrink(self): + st = ShapeTracker.from_shape((10,)) + st = st.shrink(((0, Variable("i", 1, 10)),)) assert len(st.views) == 1 - def test_reshape_stride_0(self): - st = ShapeTracker.from_shape((3,), (0,)) - st = st.reshape((Variable("i", 1, 10).bind(3),)) - assert len(st.views) == 1, f"multiview {st}" - - def test_reshape_bound(self): - st = ShapeTracker.from_shape((3,)) - st = st.reshape((Variable("i", 1, 10).bind(3),)) + def test_shrink_bound(self): + st = ShapeTracker.from_shape((10,)) + st = st.shrink(((0, Variable("i", 1, 10).bind(3)),)) assert len(st.views) == 1 - def test_add(self): - st1 = ShapeTracker.from_shape((3,)) - st2 = ShapeTracker.from_shape((Variable("i", 1, 10),)) +class TestVariableMerge(unittest.TestCase): + def test_add_reshape(self): + vi = Variable("i", 1, 10) + st1 = ShapeTracker.from_shape((vi,)) + st2 = ShapeTracker.from_shape((1, vi,)) st = st1+st2 assert len(st.views) == 1 @@ -900,15 +864,17 @@ class TestVariableReshape(unittest.TestCase): st = st1+st2 assert len(st.views) == 1, f"multiview {st}" - def test_add_bound(self): - st1 = ShapeTracker.from_shape((3,)) - st2 = ShapeTracker.from_shape((Variable("i", 1, 10).bind(3),)) + def test_add_reshape_bound(self): + vi = Variable("i", 1, 10).bind(3) + st1 = ShapeTracker.from_shape((vi,)) + st2 = ShapeTracker.from_shape((1, vi,)) st = st1+st2 assert len(st.views) == 1 def test_simplify(self): - st1 = ShapeTracker.from_shape((3,)) - st2 = ShapeTracker.from_shape((Variable("i", 1, 10).bind(3),)) + vi = Variable("i", 1, 10).bind(3) + st1 = ShapeTracker.from_shape((vi,)) + st2 = ShapeTracker.from_shape((1, vi,)) st = ShapeTracker((st1.views[0], st2.views[0])) st = st.simplify() assert len(st.views) == 1 diff --git a/tinygrad_repo/test/unit/test_shapetracker_math.py b/tinygrad_repo/test/unit/test_shapetracker_math.py index efd017f50..3a74ae30b 100644 --- a/tinygrad_repo/test/unit/test_shapetracker_math.py +++ b/tinygrad_repo/test/unit/test_shapetracker_math.py @@ -87,20 +87,6 @@ class TestShapeTrackerAdd(unittest.TestCase): assert not (st_equal(st1, st2)) class TestShapeTrackerAddVariable(unittest.TestCase): - def test_self_add(self): - j = Variable("j", 0, 20).bind(10) - a = ShapeTracker.from_shape((10,10)) - x = a.reshape((10, j)) - out = x + x - assert out == x - - def test_self_add_reshape(self): - j = Variable("j", 0, 20).bind(10) - a = ShapeTracker.from_shape((10,10)) - x = a.reshape((10, j)) - out = x.reshape((5, 2, j)) + x - assert out == x - def test_merge_symbolic_views(self): var_i = Variable('i', 1, 10) var_j = Variable('i', 1, 10) diff --git a/tinygrad_repo/test/unit/test_simplify_valid_idx.py b/tinygrad_repo/test/unit/test_simplify_valid_idx.py index 8ef89d56b..77869f5b1 100644 --- a/tinygrad_repo/test/unit/test_simplify_valid_idx.py +++ b/tinygrad_repo/test/unit/test_simplify_valid_idx.py @@ -19,7 +19,7 @@ def get_load_image_uop(image_shape:tuple[int, ...], valid:UOp, idx:tuple[UOp, UO def Special(expr, nmax): return UOp(Ops.SPECIAL, dtypes.int, (), (expr, nmax)) def Variable(expr, nmin, nmax): return UOp.variable(expr, nmin, nmax) -def Range(n, nmax): return UOp(Ops.RANGE, dtypes.int, arg=n, src=(UOp.const(dtypes.int, nmax),)) +def Range(n, nmax): return UOp.range(nmax, n) class TestHelpers(unittest.TestCase): def test_is_increasing(self): diff --git a/tinygrad_repo/test/unit/test_symbolic_shapetracker.py b/tinygrad_repo/test/unit/test_symbolic_shapetracker.py index ed065d057..0af882070 100644 --- a/tinygrad_repo/test/unit/test_symbolic_shapetracker.py +++ b/tinygrad_repo/test/unit/test_symbolic_shapetracker.py @@ -48,11 +48,11 @@ class TestSymbolic(unittest.TestCase): i = Variable("i", 1, 5).bind(3) j = Variable("j", 1, 5).bind(3) k = Variable("k", 1, 5).bind(3) - t = Tensor.rand(3, 4).reshape(i, 4).cat(Tensor.rand(3, 4).reshape(j, 4), dim=0).cat(Tensor.rand(3, 4).reshape(k, 4), dim=0) + t = Tensor.rand(5, 4)[:i].cat(Tensor.rand(5, 4)[:j], dim=0).cat(Tensor.rand(5, 4)[:k], dim=0) st = t.uop.st self.assert_tuple_equal(st.shape, (i+j+k, 4)) assert st.real_strides() == (4, 1) - t = Tensor.rand(3, 3).reshape(i, 3).cat(Tensor.rand(3, 3).reshape(i, 3), dim=0).cat(Tensor.rand(3, 3), dim=0) + t = Tensor.rand(5, 3)[:i].cat(Tensor.rand(5, 3)[:i], dim=0).cat(Tensor.rand(3, 3), dim=0) st = t.uop.st self.assert_tuple_equal(st.shape, (2*i+3, 3)) assert st.real_strides() == (3, 1) @@ -61,7 +61,7 @@ class TestSymbolic(unittest.TestCase): i = Variable("i", 1, 5).bind(4) j = Variable("j", 1, 5).bind(4) k = Variable("k", 1, 5).bind(4) - t = Tensor.rand(3, 4).reshape(3, i).cat(Tensor.rand(3, 4).reshape(3, j), dim=1).cat(Tensor.rand(3, 4).reshape(3, k), dim=1) + t = Tensor.rand(3, 5)[:, :i].cat(Tensor.rand(3, 5)[:, :j], dim=1).cat(Tensor.rand(3, 5)[:, :k], dim=1) st = t.uop.st self.assert_tuple_equal(st.shape, (3, i+j+k)) self.assert_tuple_equal(st.real_strides(), (i+j+k, 1)) @@ -109,60 +109,44 @@ class TestShapeTrackerUnbind(unittest.TestCase): assert unbound_view == View.create(shape=(v, 4)) assert var_val == {v: 3} - def test_reshape_unbind(self): - v = Variable("v", 1, 100) - bv = Variable("v", 1, 100).bind(3) - t = Tensor.rand(3, 4).reshape(bv, 4) - unbound_st, var_val = t.uop.st.unbind() - assert unbound_st == ShapeTracker((View.create(shape=(v, 4)),)) - assert var_val == {v: 3} - def test_shrink_unbind(self): v = Variable("v", 1, 100) bv = Variable("v", 1, 100).bind(2) + t = Tensor.rand(3, 4).shrink(((0,bv),(0,4))) + unbound_st, var_val = t.uop.st.unbind() + assert unbound_st == ShapeTracker((View.create(shape=(v, 4)),)) + assert var_val == {v: 2} t = Tensor.rand(3, 4).shrink(((bv, bv+1), (0, 4))) unbound_st, var_val = t.uop.st.unbind() assert unbound_st == ShapeTracker((View.create(shape=(1, 4), offset=4*v),)) assert var_val == {v: 2} -class TestSymbolicReshapeFromContiguous(unittest.TestCase): - def test_reshape_into_symbols_simple(self): +class TestSymbolicReshape(unittest.TestCase): + def test_reshape(self): + a = Tensor.rand(5, 4) + b = Tensor.rand(5, 6) for i in range(1, 6): vi = Variable("i", 1, 5).bind(i) - t = Tensor.rand(i, 4).reshape(vi, 4) - assert t.shape == (vi, 4) - t = Tensor.rand(i, 6).reshape(vi, 2, 3) - assert t.shape == (vi, 2, 3) - - def test_reshape_symbols_reshape_ints(self): - for i in range(1, 6): - vi = Variable("i", 1, 5).bind(i) - t = Tensor.rand(i, 4).reshape(vi, 4) - assert t.shape == (vi, 4) - t = t.reshape(i, 4) - assert t.shape == (i, 4) - - @unittest.skip("works now") - def test_reshape_into_symbols_bad_shape(self): - vi = Variable("i", 1, 10).bind(4) - # TODO: this never actually worked, it relied on lazy - #with self.assertRaises(ValueError): - # Tensor.rand(4, 6).reshape(vi, 6).reshape(1, 77) # reshape to a different size new shape through symbolic shape - with self.assertRaises(AssertionError): - Tensor.rand(3, 4).reshape(3, (vi+1)) # reshape into non-Variable Node + ret = a[:vi] + ret = ret.reshape((vi, 4)) + assert ret.shape == (vi, 4) + ret = b[:vi] + ret = ret.reshape((vi, 2, 3)) + assert ret.shape == (vi, 2, 3) def test_two_symbol_reshape(self): + t = Tensor.rand(5, 5) for i in range(1, 6): for j in range(1, 6): vi = Variable("i", 1, 5).bind(i) vj = Variable("j", 1, 5).bind(j) - t = Tensor.rand(i, j).reshape(vi, vj) - assert t.shape == (vi, vj) - # NOTE: this is currently not allowed - # t = t.reshape(1, vi*vj) - # assert t.shape == (1, vi*vj) - t = t.reshape(vj, vi) - assert t.shape == (vj, vi) + ret = t[:vi, :vj] + ret = ret.reshape(vj, vi) + assert ret.shape == (vj, vi) + ret = ret.reshape(vi, vj) + assert ret.shape == (vi, vj) + ret = ret.reshape(1, vi*vj) + assert ret.shape == (1, vi*vj) def test_symbolic_mask(self): # taken from gpt2 single kvcache @@ -175,41 +159,6 @@ class TestSymbolicReshapeFromContiguous(unittest.TestCase): new_shape = (2, (Variable('start_pos', 1, 128)+1), 16, 64) assert view.reshape(new_shape) is None -class TestSymbolicReshapeFromNonContiguous(unittest.TestCase): - def test_reshape_from_const(self): - vi = Variable("i", 1, 5).bind(4) - t = Tensor.ones(3, 4).reshape(3, vi) - assert t.shape == (3, vi) - assert not t.uop.st.contiguous - assert len(t.uop.st.views) == 1 - - def test_reshape_not_allowed(self): - vi = Variable("i", 1, 5).bind(4) - with self.assertRaises(ValueError): - # different shape length # TODO: cases where contractions matched might be fine - Tensor.ones(3, 4, 1).reshape(3, vi) - with self.assertRaises(ValueError): - # size matched, but dimensions do not match - Tensor.ones(4, 3).reshape(3, vi) - - def test_reshape_from_padded(self): - vi = Variable("i", 1, 5).bind(4) - t = Tensor.ones(3, 4).contiguous().expand(2, 3, 4).pad(((1, 1), None, None)).shrink((None, None, (1, 3))) - st = t.uop.st - assert len(st.views) == 1 - view = st.views[0] - assert view.shape == (4, 3, 2) - t = t.reshape(vi, 3, 2) - st2 = t.uop.st - assert len(st2.views) == 1 - view2 = st2.views[0] - # check only shape changed. strides, offset, mask, contiguous remained the same - assert view2.shape == (vi, 3, 2) - assert view.strides == view2.strides == (0, 4, 1) - assert view.offset == view2.offset == 1 - assert view.mask == view2.mask == ((1, 3), (0, 3), (0, 2)) - assert not view.contiguous and not view2.contiguous - class TestSymbolicExpand(unittest.TestCase): def test_expand_into_symbols(self): vi = Variable("i", 1, 5).bind(3) @@ -220,11 +169,12 @@ class TestSymbolicExpand(unittest.TestCase): assert a.shape == (3, vi, vj) def test_plus_expands_constant(self): + a = Tensor.rand(3, 5) for i in range(1, 6): vi = Variable("i", 1, 5).bind(i) - a = Tensor.rand(3, i).reshape(3, vi) - a = a + 1 - self.assertTupleEqual(a.shape, (3, vi)) + ret = a[:, :vi] + ret = ret + 1 + self.assertTupleEqual(ret.shape, (3, vi)) def test_pad_then_expand_into_symbols(self): vi = Variable("i", 1, 10).bind(3) @@ -234,6 +184,11 @@ class TestSymbolicExpand(unittest.TestCase): self.assertEqual(a.reshape(vi*25).shape, (vi*25,)) class TestSymbolicShrink(unittest.TestCase): + def test_shrink_symbols_simple(self): + vi = Variable("i", 1, 5) + t = Tensor.rand(5, 5).shrink(((0, 5),(0,vi))) + assert t.shape == (5, vi) + def test_shrink_symbols(self): vi = Variable("i", 1, 5) t = Tensor.rand(3, 5).shrink(((0, 2), (vi, vi+1))) @@ -242,10 +197,10 @@ class TestSymbolicShrink(unittest.TestCase): class TestSymbolicPad(unittest.TestCase): def test_pad(self): v = Variable("v", 1, 100).bind(5) - t = Tensor.ones(5).reshape(v).pad(((4, 0),)).reshape(9) - assert t.shape == (9,) - st = t.uop.st - print(st) + t = Tensor.ones(100)[:v].pad(((4, 0),)) + t = t.reshape(9) + assert t.tolist() == [0,0,0,0,1,1,1,1,1] + if __name__ == '__main__': unittest.main() diff --git a/tinygrad_repo/test/unit/test_tensor_uop_representation.py b/tinygrad_repo/test/unit/test_tensor_uop_representation.py index 59d28a434..a1b2f0526 100644 --- a/tinygrad_repo/test/unit/test_tensor_uop_representation.py +++ b/tinygrad_repo/test/unit/test_tensor_uop_representation.py @@ -97,7 +97,7 @@ class TestTensorUopRepresentation(unittest.TestCase): is_pattern(a, UPat(Ops.RESHAPE, src=(UPat(Ops.BUFFER),))) vi = UOp.variable("i", 1, 3).bind(1) a = Tensor.empty(3, vi) - is_pattern(a, UPat(Ops.RESHAPE, src=(UPat(Ops.BUFFER),))) + is_pattern(a, UPat(Ops.RESHAPE, src=(UPat(Ops.SHRINK, src=(UPat(Ops.BUFFER),))),)) self.assertEqual(a.uop.base.buffer.size, 9) if __name__ == '__main__': diff --git a/tinygrad_repo/test/unit/test_transcendental_helpers.py b/tinygrad_repo/test/unit/test_transcendental_helpers.py index 5a14b381d..4c697903a 100644 --- a/tinygrad_repo/test/unit/test_transcendental_helpers.py +++ b/tinygrad_repo/test/unit/test_transcendental_helpers.py @@ -2,8 +2,8 @@ import unittest, math import numpy as np from tinygrad import dtypes from tinygrad.uop.ops import UOp, Ops -from tinygrad.uop.transcendental import TRANSCENDENTAL_SUPPORTED_DTYPES, payne_hanek_reduction, cody_waite_reduction -from tinygrad.uop.transcendental import frexp, rintk, xpow, xexp2, xlog2, trig_poly, pow2if +from tinygrad.uop.decompositions import TRANSCENDENTAL_DTYPES, payne_hanek_reduction, cody_waite_reduction +from tinygrad.uop.decompositions import frexp, rintk, xpow, xexp2, xlog2, trig_poly, pow2if from test.helpers import eval_uop class TestTranscendentalFunctions(unittest.TestCase): @@ -89,7 +89,7 @@ class TestTranscendentalVectorizedFunctions(unittest.TestCase): assert u1.op == u2.op, f'expected {u1.op=} but got {u2.op=} for UOps\n{u1=}\n{u2}' [self._check_uops_match(x1, x2) for x1, x2 in zip((u1 if isinstance(u1, tuple) else u1.src), (u2 if isinstance(u2, tuple) else u2.src))] - def _test_vectorized(self, fxn, scalar_dtypes=TRANSCENDENTAL_SUPPORTED_DTYPES, vals=[-2,1.3,194], vcounts=[1,4,19]): + def _test_vectorized(self, fxn, scalar_dtypes=TRANSCENDENTAL_DTYPES, vals=[-2,1.3,194], vcounts=[1,4,19]): for scalar_dtype in scalar_dtypes: for val in vals: for vcount in vcounts: diff --git a/tinygrad_repo/test/unit/test_uop_spec.py b/tinygrad_repo/test/unit/test_uop_spec.py index 914ec3b51..655598978 100644 --- a/tinygrad_repo/test/unit/test_uop_spec.py +++ b/tinygrad_repo/test/unit/test_uop_spec.py @@ -34,17 +34,6 @@ class TestUOpSpec(unittest.TestCase): store = UOp(Ops.STORE, dtypes.void, (buf_0.view(ShapeTracker.from_shape((32, 1))), a+b)) helper_test_verify_ast(store) - def test_exactly_one_full_shape(self): - dtype = dtypes.int - bufs = [UOp(Ops.DEFINE_GLOBAL, dtype.ptr(), (), i) for i in range(6)] - a = UOp(Ops.LOAD, dtype, (bufs[2].view(ShapeTracker.from_shape((32, 1))),)) - b = UOp(Ops.LOAD, dtype, (bufs[3].view(ShapeTracker.from_shape((32, 1))),)) - st0 = UOp.store(bufs[0].view(ShapeTracker.from_shape((32, 1))), a+b) - a = UOp(Ops.LOAD, dtype, (bufs[4].view(ShapeTracker.from_shape((32, 32))),)) - b = UOp(Ops.LOAD, dtype, (bufs[5].view(ShapeTracker.from_shape((32, 32))),)) - st1 = UOp.store(bufs[1].view(ShapeTracker.from_shape((32, 32))), a+b) - with self.assertRaises(InvalidASTException): helper_test_verify_ast(st0, st1) - def test_no_implicit_broadcasting(self): bufs = [UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(), (), i) for i in range(2)] a = UOp(Ops.LOAD, dtypes.float, (bufs[1].view(ShapeTracker.from_shape((4, 32))),)) @@ -73,14 +62,6 @@ class TestUOpSpec(unittest.TestCase): st = UOp.store(bufs[0].view(ShapeTracker.from_shape((32, 1))), r+a) with self.assertRaises(InvalidASTException): helper_test_verify_ast(st) - def test_buffer_uops_st(self): - a = Tensor.randn(4, 4)+2 - helper_test_verify_ast(ast:=a.schedule()[-1].ast) - store_st = [u.st for u in ast.toposort() if u.op is Ops.STORE][0] - self.assertEqual(store_st, ShapeTracker.from_shape((4, 4))) - const_st = [u.st for u in ast.toposort() if u.op is Ops.CONST][0] - self.assertEqual(const_st, ShapeTracker.from_shape((1, 1)).expand((4, 4))) - def test_assert_swizzle(self): buf = UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(), (), 0) a = UOp(Ops.LOAD, dtypes.float, (buf.view(ShapeTracker.from_shape((32, 1))),)) @@ -100,5 +81,16 @@ class TestUOpSpec(unittest.TestCase): with self.assertRaisesRegex(RuntimeError, "UOp verification failed"): type_verify([a], tensor_uop_spec) +class TestUOpSink(unittest.TestCase): + def test_0(self): + s = UOp.sink() + self.assertEqual(len(s.src), 0) + + def test_1(self): + a = UOp.const(dtypes.int, 0) + s1 = UOp.sink(a) + s2 = a.sink() + self.assertIs(s1, s2) + if __name__ == '__main__': unittest.main() diff --git a/tinygrad_repo/test/unit/test_uop_symbolic.py b/tinygrad_repo/test/unit/test_uop_symbolic.py index 8568d157f..fa2e90df5 100644 --- a/tinygrad_repo/test/unit/test_uop_symbolic.py +++ b/tinygrad_repo/test/unit/test_uop_symbolic.py @@ -1,14 +1,14 @@ #!/usr/bin/env python -import unittest, pickle, functools +import unittest, pickle, functools, math import z3 from tinygrad.dtype import dtypes, ConstType from tinygrad.codegen import full_rewrite -from tinygrad.codegen.devectorizer import sym +from tinygrad.codegen.late.devectorizer import sym from tinygrad.helpers import Context from tinygrad.uop.ops import UOp, Ops, graph_rewrite, sym_infer from tinygrad import Variable -from tinygrad.uop.spec import z3_renderer +from tinygrad.uop.spec import uops_to_z3 def render(self) -> tuple[str, ConstType, ConstType]: # NOTE: we need STORE so the ALU op has children @@ -29,16 +29,16 @@ class TestSymbolicPickle(unittest.TestCase): def test_pickle_variable_times_2(self): self._test_pickle_unpickle(Variable("a", 3, 8)*2) class TestSymbolic(unittest.TestCase): - def helper_test_variable(self, v, n, m, s): + def helper_test_variable(self, v, n, m, s, test_z3:bool=True): + if test_z3: + solver = z3.Solver() + expr, expr_simplified = uops_to_z3(solver, v, v.simplify()) + self.assertEqual(solver.check(expr != expr_simplified), z3.unsat, "simplified expression not equal to original") rendered, nmin, nmax = render(v) if isinstance(s, tuple): self.assertIn(rendered, s) else: self.assertEqual(rendered, s) self.assertEqual(nmin, n) self.assertEqual(nmax, m) - solver = z3.Solver() - z3_sink = graph_rewrite(v.sink(v.simplify()), z3_renderer, ctx=(solver, {})) - expr, epxr_simplified = z3_sink.src[0].arg, z3_sink.src[1].arg - self.assertEqual(solver.check(expr != epxr_simplified), z3.unsat, "simplified expression not equal to original") def test_cmp_simple(self): self.helper_test_variable(Variable("a", 3, 8) < 4, 0, 1, "(a<4)") @@ -127,6 +127,8 @@ class TestSymbolic(unittest.TestCase): b = Variable("b", 0, 8) self.helper_test_variable(a+a, 0, 16, "(a*2)") self.helper_test_variable((a+b)+b, 0, 24, "(a+(b*2))") + self.helper_test_variable((a*3+b)+a, 0, 40, "(b+(a*4))") + self.helper_test_variable((a+b)+a*3, 0, 40, "(b+(a*4))") def test_sub_self(self): a = Variable("a", 0, 8) @@ -161,10 +163,6 @@ class TestSymbolic(unittest.TestCase): def test_div_remove(self): self.helper_test_variable(Variable("a", 0, 7) // 20, 0, 0, "0") - def test_div_min_max(self): - self.helper_test_variable(Variable("a", 1, 7) // 2, 0, 3, "(a//2)") - self.helper_test_variable(Variable("a", 0, 6) // 2, 0, 3, "(a//2)") - def test_div_neg_min_max(self): self.helper_test_variable(Variable("a", 1, 7) // -2, -3, 0, "((a//2)*-1)") self.helper_test_variable(Variable("a", 0, 6) // -2, -3, 0, "((a//2)*-1)") @@ -202,14 +200,36 @@ class TestSymbolic(unittest.TestCase): def test_mod_min_max(self): self.helper_test_variable(Variable("x", 0, 10)%Variable("y", 1, 10), 0, 9, "(x%y)") self.helper_test_variable(Variable("x", -10, 0)%Variable("y", 1, 10), -9, 0, "(((x*-1)%y)*-1)") - self.helper_test_variable(Variable("x", 0, 10)%Variable("y", -10, -1), 0, 9, "(x%y)") - self.helper_test_variable(Variable("x", -10, 0)%Variable("y", -10, -1), -9, 0, "(((x*-1)%y)*-1)") - self.helper_test_variable(Variable("x", -10, 10)%Variable("y", -10, -1), -9, 9, "(x%y)") + self.helper_test_variable(Variable("x", 0, 10)%Variable("y", -10, -1), 0, 9, "(x%(y*-1))") + self.helper_test_variable(Variable("x", -10, 0)%Variable("y", -10, -1), -9, 0, "(((x*-1)%(y*-1))*-1)") + self.helper_test_variable(Variable("x", -10, 10)%Variable("y", -10, -1), -9, 9, "(x%(y*-1))") # test _min_max directly without the rewrite taking out the sign self.assertEqual((Variable("x", -10, 0)%Variable("y", -10, -1))._min_max, (-9, 0)) self.assertEqual((Variable("x", -10, 0)%Variable("y", 1, 10))._min_max, (-9, 0)) + def test_range_div_its_symbolic_bound(self): + a = Variable("a", 1, 10) + ridx0 = UOp.range(a+2, 0) + self.helper_test_variable(ridx0//(a+2), 0, 0, "0") + + def test_range_mod_its_symbolic_bound(self): + a = Variable("a", 1, 10) + ridx = UOp.range(a+2, 0) + self.helper_test_variable(ridx%(a+2), 0, 11, "ridx0") + + def test_div_min_max(self): + self.helper_test_variable(Variable("a", 2, 7) // 2, 1, 3, "(a//2)") + self.helper_test_variable(Variable("a", 0, 6) // 2, 0, 3, "(a//2)") + + self.helper_test_variable(Variable("x", 0, 10)//Variable("y", 1, 10), 0, 10, "(x//y)") + self.helper_test_variable(Variable("x", -10, 0)//Variable("y", 1, 10), -10, 0, "(((x*-1)//y)*-1)") + self.helper_test_variable(Variable("x", 0, 10)//Variable("y", -10, -1), -10, 0, "((x//(y*-1))*-1)") + self.helper_test_variable(Variable("x", -10, 0)//Variable("y", -10, -1), 0, 10, "((x*-1)//(y*-1))") + + self.helper_test_variable(Variable("x", -10, 10)//Variable("y", 1, 10), -10, 10, "(x//y)") + self.helper_test_variable(Variable("x", -10, 10)//Variable("y", -10, -1), -10, 10, "((x//(y*-1))*-1)") + def test_mod_factor(self): self.helper_test_variable(usum([Variable("a", 0, 7)*100, Variable("b", 0, 3)*50]) % 100, 0, 50, "((b%2)*50)") @@ -265,6 +285,16 @@ class TestSymbolic(unittest.TestCase): self.helper_test_variable(((5*Variable("a", 0, 31)) % 12) % 5, 0, 4, "(((a*5)%12)%5)") self.helper_test_variable((Variable("a", 0, 31) % 4) % 12, 0, 3, "(a%4)") + def test_mod_mod_wrong_sign(self): + v1=Variable("v1", 0, 128) + v3=Variable("v3", 0, 7) + self.helper_test_variable((((((v1%2)*2)+((v3+-1)%5))+-2)%5), -4, 4, "(((((v1%2)*2)+((v3+-1)%5))+-2)%5)") + + def test_mod_mod_wrong_sign2(self): + v2=Variable("v2", 0, 8) + v3=Variable("v3", 0, 4) + self.helper_test_variable((((((v3+3)%7)+(v2+-2))%7)%7), -6, 6, "(((v2+((v3+3)%7))+-2)%7)") + def test_mul_mul(self): self.helper_test_variable((Variable("a", 0, 5)*10)*9, 0, 5*10*9, "(a*90)") @@ -295,7 +325,7 @@ class TestSymbolic(unittest.TestCase): def test_neg_mod(self): a = Variable("a", 0, 124) self.helper_test_variable((-a)%4, -3, 0, "((a%4)*-1)") - self.helper_test_variable(a%-4, 0, 3, "(a%-4)") + self.helper_test_variable(a%-4, 0, 3, "(a%4)") def test_distribute_mul(self): self.helper_test_variable(usum([Variable("a", 0, 3), Variable("b", 0, 5)])*3, 0, 24, "((a*3)+(b*3))") @@ -374,6 +404,17 @@ class TestSymbolic(unittest.TestCase): def test_mul_div(self): self.helper_test_variable((Variable("a", 0, 10)*4)//4, 0, 10, "a") + def test_div_drop_small_terms(self): + # from openpilot, shouldnt simplify + gidx0 = UOp.variable("gidx0", 0, 10) + gidx1 = UOp.variable("gidx1", 0, 10) + lidx0 = UOp.variable("lidx0", 0, 1) + lidx1 = UOp.variable("lidx1", 0, 1) + ridx1005 = UOp.variable("ridx1005", 0, 2) + ridx1006 = UOp.variable("ridx1006", 0, 2) + self.helper_test_variable((lidx1+((gidx1*18)+(ridx1005*18)+(lidx0*162))+(gidx0*2)+(ridx1006*2)+-40)//18, -2, 20, + "(((((lidx1+(((gidx1*18)+(ridx1005*18))+(lidx0*162)))+(gidx0*2))+(ridx1006*2))+-40)//18)") + def test_add_div(self): # careful about the lower bounds and upper bounds self.helper_test_variable((Variable("a", 0, 5)-2)//4, 0, 0, "0") @@ -418,7 +459,13 @@ class TestSymbolic(unittest.TestCase): self.helper_test_variable((-Variable("a", 10, 10))%7, -3, -3, "-3") def test_div_numerator_negative(self): - self.helper_test_variable((Variable("idx", 0, 9)*-10)//11, -8, 0, "(((idx*10)//11)*-1)") + with Context(CORRECT_DIVMOD_FOLDING=1): + self.helper_test_variable((Variable("idx", 0, 9)*-10)//11, -8, 0, "(((idx*10)//11)*-1)") + + def test_nest_div_negative_factor(self): + ridx0=UOp.variable("ridx0", 0, 9) + ridx1=UOp.variable("ridx1", 0, 6) + self.helper_test_variable(((((ridx0*-7)+ridx1)+63)//35), 0, 1, "(((ridx0//5)*-1)+1)") def test_div_into_mod(self): self.helper_test_variable((Variable("idx", 0, 16)*4)%8//4, 0, 1, "(idx%2)") @@ -595,20 +642,23 @@ class TestSymbolic(unittest.TestCase): self.helper_test_variable(cond, 0, 1, "(a<2)") self.helper_test_variable(cond.where(u1, u0), 0, 1, "(a<2)") self.helper_test_variable(cond.where(u1, u0).where(u1, u0), 0, 1, "(a<2)") + self.helper_test_variable(cond.where(u0, u1), 0, 1, "((a<2)!=True)") + self.helper_test_variable(cond.where(u0, u1).where(u0, u1), 0, 1, "(a<2)") def test_where_combine(self): cond = Variable("x", 0, 3) < 2 a = Variable("a", 0, 3) b = Variable("b", 0, 3) + c = Variable("c", 0, 3) aa = cond.where(a, a.ufix(0)) bb = cond.where(b, b.ufix(1)) self.helper_test_variable(aa, 0, 3, "(a if (x<2) else 0)") self.helper_test_variable(bb, 0, 3, "(b if (x<2) else 1)") self.helper_test_variable(aa+bb, 0, 6, "((a+b) if (x<2) else 1)") self.helper_test_variable(aa.maximum(bb), 0, 3, "(max(a, b) if (x<2) else 1)") + self.helper_test_variable((c+aa)+bb, 0, 9, "(c+((a+b) if (x<2) else 1))") # not combining because it increased total ALU - c = Variable("c", 0, 3) cc = cond.where(c, c+1) self.helper_test_variable(bb+cc, 0, 7, "((b if (x<2) else 1)+(c if (x<2) else (c+1)))") @@ -672,6 +722,16 @@ class TestSymbolic(unittest.TestCase): self.helper_test_variable(numerator, 3, 390, "(a*((a*4)+-1))") self.helper_test_variable((numerator//denominator)<=0, 1, 1, "True") + def test_const_reciprocal(self): + a = Variable("a", 1, 10, dtypes.float) + # TODO: bounds for reciprocal + # TODO: should z3 work? + self.helper_test_variable(2*(2*a).reciprocal(), -math.inf, math.inf, "(1/a)", test_z3=False) + + def test_trunc_noop(self): + a = Variable("a", 1, 10, dtypes.int) + self.helper_test_variable(a.trunc(), 1, 10, "a", test_z3=False) + class TestSymbolicNumeric(unittest.TestCase): def helper_test_numeric(self, f): MIN, MAX = 0, 10 diff --git a/tinygrad_repo/test/unit/test_uop_vmin_vmax.py b/tinygrad_repo/test/unit/test_uop_vmin_vmax.py index b67a5ae6c..044a8fa13 100644 --- a/tinygrad_repo/test/unit/test_uop_vmin_vmax.py +++ b/tinygrad_repo/test/unit/test_uop_vmin_vmax.py @@ -60,7 +60,7 @@ class TestVminVmaxProperties(unittest.TestCase): def test_vmin_vmax_variable_inside_special(self): uop = UOp(Ops.SPECIAL, dtypes.int, arg=('gidx0', UOp(Ops.DEFINE_VAR, dtypes.int, arg=('i', 1, 10)))) self.assertEqual(uop.vmin, 0) - self.assertEqual(uop.vmax, 10) + self.assertEqual(uop.vmax, 9) def test_vmin_vmax_multiplication_0_inf(self): # vmin and vmax for multiplication with a variable diff --git a/tinygrad_repo/test/unit/test_viz.py b/tinygrad_repo/test/unit/test_viz.py index 7b9ca46b7..8f457c354 100644 --- a/tinygrad_repo/test/unit/test_viz.py +++ b/tinygrad_repo/test/unit/test_viz.py @@ -1,11 +1,11 @@ -import unittest, decimal, json +import unittest, decimal, json, struct from dataclasses import dataclass from tinygrad.uop.ops import UOp, UPat, Ops, PatternMatcher, TrackedPatternMatcher from tinygrad.uop.ops import graph_rewrite, track_rewrites, TRACK_MATCH_STATS from tinygrad.uop.symbolic import sym from tinygrad.dtype import dtypes -from tinygrad.helpers import PROFILE, colored, ansistrip, flatten, TracingKey, ProfileRangeEvent +from tinygrad.helpers import PROFILE, colored, ansistrip, flatten, TracingKey, ProfileRangeEvent, ProfileEvent, Context from tinygrad.device import Buffer @track_rewrites(name=True) @@ -16,10 +16,9 @@ def exec_rewrite(sink:UOp, pm_lst:list[PatternMatcher], names:None|list[str]=Non # real VIZ=1 pickles these tracked values from tinygrad.uop.ops import tracked_keys, tracked_ctxs, uop_fields, active_rewrites, _name_cnt -from tinygrad.viz import serve -serve.contexts = (tracked_keys, tracked_ctxs, uop_fields) +traces = [(tracked_keys, tracked_ctxs, uop_fields)] from tinygrad.viz.serve import get_metadata, uop_to_json, get_details -def get_viz_list(): return get_metadata(tracked_keys, tracked_ctxs) +def get_viz_list(): return get_metadata(traces) class BaseTestViz(unittest.TestCase): def setUp(self): @@ -76,7 +75,7 @@ class TestViz(BaseTestViz): self.assertEqual(lineno, inner.__code__.co_firstlineno) def test_exceptions(self): - # VIZ tracks rewrites up to the error + # VIZ tracks rewrites up to and including the error def count_3(x:UOp): assert x.arg <= 3 return x.replace(arg=x.arg+1) @@ -85,7 +84,7 @@ class TestViz(BaseTestViz): with self.assertRaises(AssertionError): exec_rewrite(a, [err_pm]) lst = get_viz_list() err_step = lst[0]["steps"][0] - self.assertEqual(err_step["match_count"], 3) + self.assertEqual(err_step["match_count"], 4) # 3 successful rewrites + 1 err def test_default_name(self): a = UOp.variable("a", 1, 10) @@ -97,22 +96,21 @@ class TestViz(BaseTestViz): # name can also come from a function that returns a string def test_dyn_name_fxn(self): - @track_rewrites(name=lambda a,ret: a.render()) - def name_from_fxn(s:UOp): return graph_rewrite(s, PatternMatcher([])) - name_from_fxn(UOp.variable("a", 1, 10)+1) + @track_rewrites(name=lambda *args,ret,**kwargs: ret.render()) + def name_from_fxn(s:UOp, arg:list|None=None): return graph_rewrite(s, PatternMatcher([])) + name_from_fxn(UOp.variable("a", 1, 10)+1, arg=["test"]) lst = get_viz_list() # name gets deduped by the function call counter self.assertEqual(lst[0]["name"], "(a+1) n1") # name can also come from a function that returns a TracingKey def test_tracing_key(self): - @track_rewrites(name=lambda inp,ret: TracingKey("custom_name", (inp,), fmt=f"input={inp.render()}")) + @track_rewrites(name=lambda inp,ret: TracingKey("custom_name", (inp,))) def test(s:UOp): return graph_rewrite(s, PatternMatcher([])) test(UOp.variable("a", 1, 10)+1) lst = get_viz_list() # NOTE: names from TracingKey do not get deduped self.assertEqual(lst[0]["name"], "custom_name") - self.assertEqual(lst[0]["fmt"], "input=(a+1)") def test_colored_label(self): # NOTE: dataclass repr prints literal escape codes instead of unicode chars @@ -125,10 +123,10 @@ class TestViz(BaseTestViz): def test_inf_loop(self): a = UOp.variable('a', 0, 10) - b = a.replace(op=Ops.DEFINE_REG) + b = a.replace(op=Ops.CONST) pm = PatternMatcher([ - (UPat(Ops.DEFINE_VAR, name="x"), lambda x: x.replace(op=Ops.DEFINE_REG)), - (UPat(Ops.DEFINE_REG, name="x"), lambda x: x.replace(op=Ops.DEFINE_VAR)), + (UPat(Ops.DEFINE_VAR, name="x"), lambda x: x.replace(op=Ops.CONST)), + (UPat(Ops.CONST, name="x"), lambda x: x.replace(op=Ops.DEFINE_VAR)), ]) with self.assertRaises(RuntimeError): exec_rewrite(a, [pm]) graphs = flatten(x["graph"].values() for x in get_details(tracked_ctxs[0][0])) @@ -138,6 +136,18 @@ class TestViz(BaseTestViz): nop = UOp(Ops.NOOP, arg="infinite loop in fixed_point_rewrite") self.assertEqual(graphs[2], uop_to_json(nop)[id(nop)]) + def test_const_node_visibility(self): + a = UOp.variable("a", 0, 10) + z = UOp.const(dtypes.int, 0) + alu = a*z + exec_rewrite(alu, [sym]) + lst = get_viz_list() + self.assertEqual(len(lst), 1) + graphs = [x["graph"] for x in get_details(tracked_ctxs[0][0])] + # embed const in the parent node when possible + self.assertEqual(list(graphs[0]), [id(a), id(alu)]) + self.assertEqual(list(graphs[1]), [id(z)]) + # VIZ displays nested graph_rewrites in a tree view def leaf_rewrite(x:UOp): return x.rtag(1) if x.tag is None else None @@ -231,34 +241,86 @@ class TestVizIntegration(BaseTestViz): self.assertEqual(lst[0]["name"], "Schedule 1 Kernel n1") self.assertEqual(lst[1]["name"], prg.name) + def test_metadata_tracing(self): + with Context(TRACEMETA=2): + a = Tensor.empty(1) + b = Tensor.empty(1) + metadata = (alu:=a+b).uop.metadata + alu.kernelize() + graph = next(get_details(tracked_ctxs[0][0]))["graph"] + self.assertEqual(len([n for n in graph.values() if repr(metadata) in n["label"]]), 1) + from tinygrad.device import ProfileDeviceEvent, ProfileGraphEvent, ProfileGraphEntry from tinygrad.viz.serve import get_profile +class TinyUnpacker: + def __init__(self, buf): self.buf, self.offset = buf, 0 + def __call__(self, fmt:str) -> tuple: + ret = struct.unpack_from(fmt, self.buf, self.offset) + self.offset += struct.calcsize(fmt) + return ret + +# 0 means None, otherwise it's an enum value +def option(i:int) -> int|None: return None if i == 0 else i-1 + +def load_profile(lst:list[ProfileEvent]) -> dict: + ret = get_profile(lst) + u = TinyUnpacker(ret) + total_dur, global_peak, index_len, layout_len = u(" NV:1') self.assertEqual(nv1_events[0]['st'], 954) #self.assertEqual(j['devEvents'][7]['pid'], j['devEvents'][3]['pid']) - graph_events = j['layout']['NV Graph']['timeline']['shapes'] + graph_events = j['layout']['NV Graph']['events'] self.assertEqual(graph_events[0]['st'], nv_events[0]['st']) self.assertEqual(graph_events[0]['st']+graph_events[0]['dur'], nv1_events[0]['st']+nv1_events[0]['dur']) + def test_bytes_per_kernel(self): + step = 10 + n_events = 1_000 + prof = [ProfileRangeEvent("CPU", name="k_test", st=decimal.Decimal(ts:=i*step), en=decimal.Decimal(ts)+step) for i in range(n_events)] + sz = len(get_profile(prof)) + self.assertLessEqual(sz/n_events, 26) + + # can pack up to 1hr 11 min of trace events + def test_trace_duration(self): + dur_mins = 72 + n_events = 1_000 + step = decimal.Decimal(dur_mins*60*1e6//n_events) + prof = [ProfileRangeEvent("CPU", name="k_test", st=decimal.Decimal(ts:=i*step), en=decimal.Decimal(ts)+step) for i in range(n_events)] + with self.assertRaises(struct.error): + get_profile(prof) + def _alloc(b:int): a = Tensor.empty(b, device="NULL", dtype=dtypes.char) a.uop.buffer.allocate() @@ -298,38 +376,29 @@ class TestVizMemoryLayout(BaseTestViz): def test_double_alloc(self): a = _alloc(1) _b = _alloc(1) - profile_ret = json.loads(get_profile(Buffer.profile_events)) - ret = profile_ret["layout"][a.device]["mem"] + profile_ret = load_profile(Buffer.profile_events) + ret = profile_ret["layout"][f"{a.device} Memory"] self.assertEqual(ret["peak"], 2) - self.assertEqual(ret["shapes"][0]["x"], [0, 2]) - self.assertEqual(ret["shapes"][1]["x"], [1, 2]) + self.assertEqual(len(ret["events"]), 2) def test_del_once(self): a = _alloc(1) del a b = _alloc(1) - profile_ret = json.loads(get_profile(Buffer.profile_events)) - ret = profile_ret["layout"][b.device]["mem"] + profile_ret = load_profile(Buffer.profile_events) + ret = profile_ret["layout"][f"{b.device} Memory"] self.assertEqual(ret["peak"], 1) - self.assertEqual(ret["shapes"][0]["x"], [0, 2]) - self.assertEqual(ret["shapes"][1]["x"], [2, 3]) - self.assertEqual(ret["shapes"][0]["y"], [0, 0]) - self.assertEqual(ret["shapes"][1]["y"], [0, 0]) + self.assertEqual(len(ret["events"]), 3) def test_alloc_free(self): a = _alloc(1) _b = _alloc(1) del a c = _alloc(1) - profile_ret = json.loads(get_profile(Buffer.profile_events)) - ret = profile_ret["layout"][c.device]["mem"] + profile_ret = load_profile(Buffer.profile_events) + ret = profile_ret["layout"][f"{c.device} Memory"] self.assertEqual(ret["peak"], 2) - self.assertEqual(ret["shapes"][0]["x"], [0, 3]) - self.assertEqual(ret["shapes"][1]["x"], [1, 3, 3, 4]) - self.assertEqual(ret["shapes"][0]["y"], [0, 0]) - self.assertEqual(ret["shapes"][1]["y"], [1, 1, 0, 0]) - self.assertEqual(ret["shapes"][2]["x"], [3, 4]) - self.assertEqual(ret["shapes"][2]["y"], [1, 1]) + self.assertEqual(len(ret["events"]), 4) if __name__ == "__main__": unittest.main() diff --git a/tinygrad_repo/test_driven_development.sh b/tinygrad_repo/test_driven_development.sh deleted file mode 100644 index e868497e9..000000000 --- a/tinygrad_repo/test_driven_development.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -python3 test/external/process_replay/reset.py -CAPTURE_PROCESS_REPLAY=1 pytest -n auto test/test_tiny.py test/test_uop_graph.py test/test_ops.py test/test_linearizer.py -while true; do - if python3 test/test_tiny.py; then - PYTHONPATH="." python3 test/external/process_replay/process_replay.py - fi -done diff --git a/tinygrad_repo/tinygrad/apps/llm.py b/tinygrad_repo/tinygrad/apps/llm.py index baffe85ae..5d79e69b9 100644 --- a/tinygrad_repo/tinygrad/apps/llm.py +++ b/tinygrad_repo/tinygrad/apps/llm.py @@ -1,45 +1,67 @@ from __future__ import annotations -import sys, argparse -from tinygrad import Tensor, nn, UOp, TinyJit, getenv +import sys, argparse, typing, re, itertools, unicodedata +from tinygrad import Tensor, nn, UOp, TinyJit, getenv, helpers + +def gpt2_decode_vocab(voc: dict[str, int]): # https://github.com/openai/gpt-2/blob/9b63575ef42771a015060c964af2c3da4cf7c8ab/src/encoder.py#L9 + c2b = { chr(cp): cp for cp in itertools.chain(range(ord("!"), ord("~")+1), range(ord("ยก"), ord("ยฌ")+1), range(ord("ยฎ"), ord("รฟ")+1)) } + c2b.update({ chr(256+off): cp for off, cp in enumerate(cp for cp in range(256) if chr(cp) not in c2b) }) + return { bytes(c2b[c] for c in tok): tid for tok, tid in voc.items() } + +def get_llama_re(): + def ucat_range(pre: str): return "".join(re.escape(chr(cp)) for cp in range(sys.maxunicode + 1) if unicodedata.category(chr(cp)).startswith(pre)) + r_ws, r_p_N, r_p_L = r"\t\n\x0b\x0c\r\x85" + ucat_range("Z"), ucat_range("N"), ucat_range("L") + # https://github.com/ggml-org/llama.cpp/blob/94933c8c2eeaa9a7983e3f6c08af76bd86724094/src/llama-vocab.cpp#L286 + return "(?i:'s|'t|'re|'ve|'m|'ll|'d)|" + \ + f"[^\\r\\n{r_p_N}{r_p_L}]?[{r_p_L}]+|[{r_p_N}]{{1,3}}| ?[^{r_ws}{r_p_N}{r_p_L}]+[\\r\\n]*|[{r_ws}]*[\\r\\n]+|[{r_ws}]+(?![^{r_ws}])|[{r_ws}]+" class SimpleTokenizer: - def __init__(self, vocab: list[str]): - self.vocab: list[str] = vocab - self.biggest_token: int = max(map(len, vocab)) - self.token_to_id: dict[str, int] = {tok: i for i, tok in enumerate(vocab)} - self.replace_space = "ฤ " - self.replace_newline = "ฤŠ" + def __init__(self, pat: str, normal_tokens: dict[bytes, int], special_tokens: dict[str, int]): + self._normal_tokens, self._special_tokens, self._pat = normal_tokens, special_tokens, re.compile(pat) + self._tok2str = { tid: tok.encode() for tok, tid in special_tokens.items() } | { tid: tok for tok, tid in normal_tokens.items() } + self._special_re = re.compile("|".join(re.escape(tok) for tok in self._special_tokens.keys()) if special_tokens else r"(?!)") - def encode(self, text:str) -> list[int]: - s = text.replace(" ", self.replace_space).replace("\n", self.replace_newline) - out: list[int] = [] - i = 0 - while i < len(s): - j = min(i+self.biggest_token, len(s)) - while i < j and (tid:=self.token_to_id.get(s[i:j])) is None: j -= 1 - if tid is None: raise RuntimeError(f"token not found in {s}") - assert tid is not None, f"token not found in {s}" - out.append(tid) - i = j - return out + @staticmethod + def from_gguf_kv(kv: dict): + # https://github.com/ggml-org/llama.cpp/blob/94933c8c2eeaa9a7983e3f6c08af76bd86724094/src/llama-vocab.cpp#L1818-L1820 + if kv["tokenizer.ggml.pre"] not in ("llama3","llama-v3","llama-bpe"): raise ValueError(f"Invalid tokenizer preset '{kv['tokenizer.ggml.pre']}'") + vocab: typing.Iterable[tuple[str, int]] = ((tok, idx) for idx, tok in enumerate(kv["tokenizer.ggml.tokens"])) + normal_tokens, special_tokens = helpers.partition(vocab, lambda e: kv["tokenizer.ggml.token_type"][e[1]] == 1) + return SimpleTokenizer(get_llama_re(), gpt2_decode_vocab(dict(normal_tokens)), dict(special_tokens)) - def decode(self, ids: list[int]) -> str: - return ''.join(self.vocab[tid] for tid in ids).replace(self.replace_space, " ").replace(self.replace_newline, "\n") + def encode(self, text: str): + tokens: list[int] = [] + pos = 0 + for match in self._special_re.finditer(text): + tokens.extend(self._encode_sentence(text[pos:match.start(0)]) + [self._special_tokens[text[match.start(0):match.end(0)]]]) + pos = match.end(0) + return tokens + self._encode_sentence(text[pos:]) - def role(self, role:str): - return [t for x in ["<|start_header_id|>", role, "<|end_header_id|>\n\n"] for t in self.encode(x)] # llama style + def decode(self, ids: list[int]) -> str: return b''.join(self._tok2str[tid] for tid in ids).decode() + def role(self, role:str): return self.encode("<|start_header_id|>" + role + "<|end_header_id|>\n\n") -def apply_rope(x:Tensor, start_pos:int|UOp, base:int=10000): + def _encode_sentence(self, chunk: str): return [ tok for word in self._pat.findall(chunk) for tok in self._encode_word(word.encode()) ] + def _encode_word(self, word: bytes): + if (early_token:=self._normal_tokens.get(word)) is not None: return [early_token] + parts = [word[i:i+1] for i in range(len(word))] + while True: + min_tid, min_idx = 2**32, -1 + for idx, (p1, p2) in enumerate(zip(parts[:-1], parts[1:])): + tid = self._normal_tokens.get(p1 + p2, min_tid) + if tid < min_tid: min_tid, min_idx = tid, idx + if min_idx == -1: break + parts = parts[:min_idx] + [parts[min_idx] + parts[min_idx+1]] + parts[min_idx+2:] + try: return [ self._normal_tokens[p] for p in parts ] + except KeyError: raise RuntimeError("token not found") + +def apply_rope(x:Tensor, start_pos:int|UOp, base:float = 10000.0) -> Tensor: B, H, T, Hd = x.shape - # NOTE: this is usually in a RoPE cache, but tinygrad JIT should prune it outside the kernel - # TODO: make it do that - freq = base ** (-Tensor.arange(0, 1, 2/Hd, dtype='float32')) - angles = Tensor.arange(start_pos, start_pos+T, dtype='float32')[None, None, :, None] * freq - cos, sin = angles.cos(), angles.sin() - x = x.reshape(B, H, T, Hd // 2, 2) # split into pairs - y1 = x[..., 0] * cos - x[..., 1] * sin - y2 = x[..., 0] * sin + x[..., 1] * cos - return Tensor.stack(y1, y2, dim=-1).reshape(B, H, T, Hd) + assert (Hd & 1) == 0, "RoPE requires an even head dimension" + half = Hd // 2 + angles = (Tensor.arange(T, dtype="float32") + start_pos)[:, None] * (base ** (-(Tensor.arange(half, dtype="float32") / half)))[None, :] + cos, sin = angles.cos().reshape(1, 1, T, half).cast(x.dtype), angles.sin().reshape(1, 1, T, half).cast(x.dtype) + x_pairs = x.reshape(B, H, T, half, 2) + return Tensor.stack(x_pairs[..., 0] * cos - x_pairs[..., 1] * sin, + x_pairs[..., 0] * sin + x_pairs[..., 1] * cos, dim=-1).reshape(B, H, T, Hd) class TransformerBlock: def __init__(self, dim:int, hidden_dim:int, n_heads:int, n_kv_heads:int, norm_eps:float, max_context:int=0): @@ -165,7 +187,7 @@ if __name__ == "__main__": model, kv = Transformer.from_gguf(Tensor.from_url(models[args.size]), args.max_context) # extract some metadata - tok = SimpleTokenizer(kv["tokenizer.ggml.tokens"]) + tok = SimpleTokenizer.from_gguf_kv(kv) bos_id: int = kv['tokenizer.ggml.bos_token_id'] eos_id: int = kv['tokenizer.ggml.eos_token_id'] diff --git a/tinygrad_repo/tinygrad/codegen/__init__.py b/tinygrad_repo/tinygrad/codegen/__init__.py index 24456a2a4..fb7876fe5 100644 --- a/tinygrad_repo/tinygrad/codegen/__init__.py +++ b/tinygrad_repo/tinygrad/codegen/__init__.py @@ -1,7 +1,7 @@ from typing import Any, Callable import functools from dataclasses import dataclass -from tinygrad.helpers import QUANTIZE, DEVECTORIZE, TRANSCENDENTAL +from tinygrad.helpers import QUANTIZE, DEVECTORIZE, TRANSCENDENTAL, RANGEIFY, POSTOPT from tinygrad.uop.ops import PatternMatcher, graph_rewrite, UOp from tinygrad.uop.spec import type_verify from tinygrad.renderer import Renderer @@ -11,11 +11,15 @@ from tinygrad.codegen.lowerer import pm_lowerer, get_index from tinygrad.codegen.quantize import pm_quant from tinygrad.codegen.gpudims import pm_add_gpudims from tinygrad.uop.symbolic import sym, symbolic_simple, gep_pushing -from tinygrad.codegen.expander import migrate_indexing, expander -from tinygrad.codegen.devectorizer import load_store_folding, load_store_indexing, devectorize, pm_reduce, \ +from tinygrad.uop.decompositions import get_late_rewrite_patterns +from tinygrad.codegen.late.expander import migrate_indexing, expander, pm_pre_expander +from tinygrad.codegen.late.devectorizer import load_store_folding, load_store_indexing, devectorize, pm_reduce, \ ReduceContext, correct_load_store, pm_render -from tinygrad.codegen.optional import get_late_rewrite_patterns -from tinygrad.codegen.linearize import block_create, pm_blockend_merge, block_merge, pm_finalize, BlockContext +from tinygrad.codegen.late.linearize import block_create, pm_blockend_merge, block_merge, pm_finalize, BlockContext +from tinygrad.codegen.opt import pm_get_optimization, pm_do_optimize +from tinygrad.codegen.opt.swizzler import view_left, view_right, fix_kernel_ops +from tinygrad.codegen.opt.postrange import pm_postrange_opt +from tinygrad.schedule.rangeify import pm_add_buffers_local, rangeify_codegen @dataclass class RewriteStep: @@ -28,6 +32,12 @@ class RewriteStep: def apply_rewrites(sink:UOp, rewrites:list[RewriteStep]): return functools.reduce(lambda x,f: f(x), rewrites, sink) +rewrites_for_views = [ + RewriteStep(view_left, name="Main View Left"), + RewriteStep(view_right, name="Main View Right"), + RewriteStep(view_left+fix_kernel_ops, bottom_up=True, name="Finalize Kernel"), +] + rewrites_for_linearizer = [ RewriteStep(block_create, ctx=BlockContext.from_sink, name="Linearizer: Create Blocks", bottom_up=True), RewriteStep(pm_blockend_merge, name="Linearizer: Merge Blockends"), @@ -36,26 +46,39 @@ rewrites_for_linearizer = [ def get_rewrites_for_renderer(opts:Renderer, linearizer:bool=True) -> list[RewriteStep]: # cache with the values of the context vars - return _get_rewrites_for_renderer(opts, linearizer, QUANTIZE.value, DEVECTORIZE.value, TRANSCENDENTAL.value) + return _get_rewrites_for_renderer(opts, linearizer, QUANTIZE.value, DEVECTORIZE.value, TRANSCENDENTAL.value, RANGEIFY.value, POSTOPT.value) @functools.cache -def _get_rewrites_for_renderer(opts:Renderer, linearizer:bool, _QUANTIZE, _DEVECTORIZE, _TRANSCENDENTAL) -> list[RewriteStep]: +def _get_rewrites_for_renderer(opts:Renderer, linearizer:bool, _QUANTIZE, _DEVECTORIZE, _TRANSCENDENTAL, _RANGEIFY, _POSTOPT) -> list[RewriteStep]: # ** lowerer (rewrite_shapetracker_with_index) ** ret: list[RewriteStep] = [] + + # view pushing + ret.extend(rewrites_for_views) + + # this is kernel.py + if not _RANGEIFY: ret.append(RewriteStep(pm_get_optimization, ctx=lambda _: opts, name="get optimization")) + if not _POSTOPT and not _RANGEIFY: ret.append(RewriteStep(pm_do_optimize, ctx=lambda _: opts, name="optimize ast")) + if _QUANTIZE and opts.device in {"CPU", "DSP"}: ret.append(RewriteStep(pm_quant, name="quantize")) ret.append(RewriteStep(pm_lowerer, get_index, name="lowerer", bottom_up=True)) + if _POSTOPT or _RANGEIFY: ret.append(RewriteStep(pm_postrange_opt, ctx=lambda _: opts, name="post optimize ast")) + # ** expander (expand_rewrite) ** ret.append(RewriteStep(sym+migrate_indexing, name="initial symbolic")) # expand - ret.append(RewriteStep(sym+expander, name="expander")) + ret.append(RewriteStep(sym+pm_pre_expander+expander, name="expander")) + + # add locals + ret.append(RewriteStep(pm_add_buffers_local+rangeify_codegen, name="add local buffers")) # ** devectorizer (full_graph_rewrite) ** # remove reduce ret.append(RewriteStep(pm_reduce+gep_pushing, lambda _: ReduceContext(), name="remove_reduce")) - # add gpu dims (late) + # add gpu dims (late). this works after devectorize, but it's faster here ret.append(RewriteStep(pm_add_gpudims, lambda _: opts, name="add gpudims")) # devectorize (TODO: does this need opts?) @@ -70,9 +93,13 @@ def _get_rewrites_for_renderer(opts:Renderer, linearizer:bool, _QUANTIZE, _DEVEC # optional pre matcher if opts.pre_matcher is not None: ret.append(RewriteStep(opts.pre_matcher, name="pre_matcher")) + # decompositions + pm_decomp = symbolic_simple+get_late_rewrite_patterns(supported_ops, _TRANSCENDENTAL>=2) + ret.append(RewriteStep(pm_decomp, lambda _: opts.device, name="decompositions")) + # final rules for the renderer (without sym) - pm_final_rewrite = symbolic_simple+get_late_rewrite_patterns(supported_ops, _TRANSCENDENTAL>=2)+pm_render+extra_matcher - ret.append(RewriteStep(pm_final_rewrite, lambda _: opts, name="final rewrite")) + pm_final_rewrite = pm_decomp+pm_render+extra_matcher + ret.append(RewriteStep(pm_final_rewrite, lambda _: opts.device, name="final rewrite")) # return the list (with optional linearizer) return ret + (rewrites_for_linearizer if linearizer else []) diff --git a/tinygrad_repo/tinygrad/codegen/gpudims.py b/tinygrad_repo/tinygrad/codegen/gpudims.py index 9e4d98ded..d974327ba 100644 --- a/tinygrad_repo/tinygrad/codegen/gpudims.py +++ b/tinygrad_repo/tinygrad/codegen/gpudims.py @@ -1,6 +1,6 @@ import math -from tinygrad.uop.ops import UOp, Ops, sint, PatternMatcher, UPat, KernelInfo, ssimplify -from tinygrad.helpers import all_int +from tinygrad.uop.ops import UOp, Ops, sint, PatternMatcher, UPat, KernelInfo, ssimplify, AxisType +from tinygrad.helpers import all_int, dedup from tinygrad.dtype import dtypes from tinygrad.shape.view import get_contraction from tinygrad.renderer import Renderer @@ -52,22 +52,43 @@ def get_grouped_dims(prefix, dims:tuple[sint, ...], max_sizes:tuple[int, ...]|No def add_gpudims(ctx:Renderer, s:UOp): if s.arg is None: return None - ki: KernelInfo = s.arg - if not ki.global_dims and not ki.local_dims: return None s_topo = list(s.toposort()) if any(x.op is Ops.SPECIAL for x in s_topo): return None - ranges = sorted([x for x in s_topo if x.op is Ops.RANGE and x.arg in (ki.global_dims+ki.local_dims)], key=lambda x: x.arg) - if not len(ranges): return None - global_shape = tuple([ssimplify(r.src[0]) for r in ranges if r.arg in ki.global_dims]) - local_shape = tuple([ssimplify(r.src[0]) for r in ranges if r.arg in ki.local_dims]) + + # get ranges + all_ranges = {x.arg[0:-1]:x for x in s_topo if x.op is Ops.RANGE} + + # extract global/local dims + global_dims = sorted(dedup([x.arg[0:-1] for x in all_ranges.values() if x.arg[-1] is AxisType.GLOBAL])) + local_dims = sorted(dedup([x.arg[0:-1] for x in all_ranges.values() if x.arg[-1] in (AxisType.LOCAL, AxisType.GROUP_REDUCE)])) + if not global_dims and not local_dims: return None + + # get global and local shape + ranges = [all_ranges[r] for r in global_dims+local_dims if r in all_ranges] + global_shape = tuple([ssimplify(r.src[0]) for r in ranges if r.arg[0:-1] in global_dims]) + local_shape = tuple([ssimplify(r.src[0]) for r in ranges if r.arg[0:-1] in local_dims]) + + # get the idxs + ki: KernelInfo = s.arg if ki.dont_use_locals: - assert not ki.local_dims, "can't use locals if there's no local dims" + assert not local_dims, "can't use locals if there's no local dims" idxs = get_grouped_dims("idx", global_shape, ctx.global_max, reverse=True) else: # define indexes for GPU-like execution idxs = get_grouped_dims("gidx", global_shape, ctx.global_max, reverse=True) + get_grouped_dims("lidx", local_shape, ctx.local_max) - return s.substitute(dict(zip(ranges, idxs))) + + # apply to multiple ranges + subs = {} + for r in s_topo: + if r.op is not Ops.RANGE: continue + try: + ii = (global_dims+local_dims).index(r.arg[0:-1]) + if r.arg[1] == AxisType.REDUCE: continue + subs[r] = idxs[ii] + except ValueError: continue + return s.substitute(subs) pm_add_gpudims = PatternMatcher([ + # add gpudims must be last (UPat(Ops.SINK, name="s"), add_gpudims), ]) diff --git a/tinygrad_repo/tinygrad/codegen/devectorizer.py b/tinygrad_repo/tinygrad/codegen/late/devectorizer.py similarity index 95% rename from tinygrad_repo/tinygrad/codegen/devectorizer.py rename to tinygrad_repo/tinygrad/codegen/late/devectorizer.py index a430d965c..b1b150beb 100644 --- a/tinygrad_repo/tinygrad/codegen/devectorizer.py +++ b/tinygrad_repo/tinygrad/codegen/late/devectorizer.py @@ -232,17 +232,21 @@ def no_vectorized_alu(alu:UOp): alus = tuple(UOp(alu.op, alu.dtype.scalar(), tuple(s.gep(i) for s in alu.src), alu.arg) for i in range(alu.dtype.vcount)) return UOp(Ops.VECTORIZE, alu.dtype, alus) -def no_vectorized_acc(acc:UOp, c:UOp): - if acc.dtype.count == 1: return None - assert c.arg == 0, "this only supports index 0" - new_acc = acc.replace(dtype=acc.dtype.base.scalar().ptr(acc.dtype.count, cast(PtrDType, acc.dtype).addrspace)) - return UOp(Ops.PTRCAT, acc.dtype, tuple([new_acc.index(UOp.const(dtypes.int, i)) for i in range(acc.dtype.count)])) +def no_vectorized_buf(buf:UOp): + dtype = cast(PtrDType, buf.dtype) + return buf.replace(dtype=dtype.base.scalar().ptr(dtype.size*dtype.count, dtype.addrspace)).cast(dtype) + +def no_vectorized_index(buf:UOp, cast:UOp, idx:UOp): + cnt = cast.dtype.count + assert idx.dtype.count == 1, f"idx dtype must be 1 {idx.dtype}" + return buf.broadcast(cnt).index(idx.broadcast(cnt)*cnt+UOp.const(dtypes.int.vec(cnt), tuple(range(cnt)))) devectorize = PatternMatcher([ # no ALU on vectorized dtypes (UPat((*GroupOp.ALU, Ops.CAST, Ops.BITCAST), name="alu"), no_vectorized_alu), (UPat(Ops.WMMA, name="wmma"), no_vectorized_wmma), - (UPat(Ops.DEFINE_REG, name="acc").index(UPat.cvar("c")), no_vectorized_acc), + (UPat((Ops.DEFINE_LOCAL, Ops.DEFINE_REG), name="buf"), no_vectorized_buf), + (UPat((Ops.DEFINE_LOCAL, Ops.DEFINE_REG), name="buf").cast(name="cast").index(UPat.var("idx")), no_vectorized_index), ]) pm_render = PatternMatcher([ @@ -282,8 +286,10 @@ def reduce_to_acc(ctx:ReduceContext, red:UOp): assert all(x.dtype == red.dtype for x in lst), f"horizontal reduction mismatch {lst[0].dtype} != {red.dtype}" # if we have a range if len(reduce_range) != 0: - input_ranges = tuple([x for x in inp.toposort(gate=lambda x: x.op is not Ops.STORE) if x.op is Ops.RANGE and x not in reduce_range]) - identity = red.const_like(identity_element(red.arg, red.dtype.scalar())) + topo = inp.toposort() + stored_ranges = flatten([x.src[2:] for x in topo if x.op is Ops.STORE]) + input_ranges = tuple([x for x in topo if x.op is Ops.RANGE and x not in reduce_range and x not in stored_ranges]) + identity = red.const(red.dtype, identity_element(red.arg, red.dtype.scalar())) acc = UOp(Ops.DEFINE_REG, red.dtype.ptr(size=1, addrspace=AddrSpace.REG), arg=(ctx.acc_num,)).index(UOp.const(dtypes.int, 0)) do_store = acc.store(identity, UOp(Ops.NOOP, src=input_ranges)) if len(input_ranges) else acc.store(identity) lst = [acc.load(do_store, *reduce_range)] + lst # put acc as the first element @@ -362,8 +368,7 @@ def reduce_collapse(red:UOp): replaces[s] = UOp(Ops.DEFINE_VAR, dtype=s.dtype, arg=(f'in{len(replaces)}', s.vmin, s.vmax)) collapse_fxn = red.substitute(replaces) sink = graph_rewrite(collapse_fxn, pm_reduce_collapse, name="reduce_collapse") - # TODO: why is REDUCE needed here and just RANGE isn't enough? - if any(x.op in {Ops.REDUCE, Ops.RANGE} for x in sink.toposort()): return None + if any(x.op is Ops.RANGE for x in sink.toposort()): return None return sink.substitute({v:k for k,v in replaces.items()}) def reduce_unparented(red:UOp): diff --git a/tinygrad_repo/tinygrad/codegen/expander.py b/tinygrad_repo/tinygrad/codegen/late/expander.py similarity index 64% rename from tinygrad_repo/tinygrad/codegen/expander.py rename to tinygrad_repo/tinygrad/codegen/late/expander.py index 9226f2916..e5944c8c2 100644 --- a/tinygrad_repo/tinygrad/codegen/expander.py +++ b/tinygrad_repo/tinygrad/codegen/late/expander.py @@ -1,8 +1,9 @@ # this converts a lowerer program into a vectorized program import functools, itertools, operator -from tinygrad.helpers import AMX, dedup, flatten, all_same, prod -from tinygrad.uop.ops import UOp, Ops, UPat, PatternMatcher, GroupOp +from tinygrad.dtype import dtypes, PtrDType, AddrSpace +from tinygrad.helpers import AMX, dedup, flatten, all_same, prod, partition +from tinygrad.uop.ops import UOp, Ops, UPat, PatternMatcher, GroupOp, AxisType def _expand_arg_to_idx(args:tuple[tuple[int, int], ...], rpk:dict[int, int]) -> int: idx, mul = 0, 1 @@ -46,11 +47,13 @@ def do_expand(root:UOp): new_srcs.append(src.src[0].gep(tuple(lst))) else: # non-UNROLL input - if root.op is Ops.IF: + if root.op is Ops.IF or src.op is Ops.IF: # for the first arg of IF, just pass them through ignoring UNROLLS new_srcs.append(src) - elif root.op in {Ops.REDUCE, Ops.STORE} and src.op is Ops.RANGE: - # for any range args of REDUCE, pass them through + elif (root.op is Ops.STORE and i >= 2) or (root.op in {Ops.REDUCE, Ops.BUFFERIZE} and i >= 1) or (root.op is Ops.WMMA and i >= 3): + # for any range args of STORE/REDUCE, pass them through + new_srcs.append(src) + elif root.op is Ops.INDEX and i >= 1 and not isinstance(root.dtype, PtrDType): new_srcs.append(src) elif src.dtype.count > 1: # put any input dtype > 1 grouped together @@ -72,7 +75,7 @@ def do_contract(con:UOp): # CONTRACT without UNROLL repeats the element VECTORIZED if ex.op is not Ops.UNROLL: return UOp(Ops.VECTORIZE, con.dtype, con.src*con.dtype.count) # CONTRACT may remove several axes from UNROLL - assert con.dtype.count == prod([x[1] for x in con.arg]), "dtype is wrong" + assert con.dtype == dtypes.void or con.dtype.count == prod([x[1] for x in con.arg]), "dtype is wrong" idxs = [] for rpk in _choices_from_args(new_ex_args:=tuple(x for x in ex.arg if x not in con.arg)): idxs += [_expand_arg_to_idx(ex.arg, {**rpk, **lrpk}) for lrpk in _choices_from_args(con.arg)] @@ -83,7 +86,7 @@ expander = PatternMatcher([ (UPat(Ops.UNROLL, name="outer", src=(UPat(Ops.UNROLL, name="inner"),)), lambda outer, inner: UOp(Ops.UNROLL, outer.dtype, (inner.src[0],), inner.arg+outer.arg)), # do expansion - (UPat((*GroupOp.ALU, Ops.CAST, Ops.BITCAST, Ops.GEP, Ops.WMMA, Ops.LOAD, Ops.STORE, Ops.INDEX, + (UPat((*GroupOp.ALU, Ops.CAST, Ops.BITCAST, Ops.GEP, Ops.WMMA, Ops.LOAD, Ops.STORE, Ops.INDEX, Ops.BUFFERIZE, Ops.VECTORIZE, Ops.IF, Ops.REDUCE), name="root", custom_early_reject=set([Ops.UNROLL])), do_expand), (UPat(Ops.CONTRACT, name="con"), do_contract), # BARRIERs aren't actually expanded @@ -111,3 +114,49 @@ migrate_indexing = PatternMatcher([ # create gate MUST BE BEFORE expander (UPat(Ops.STORE, name="root"), create_gate), ]) + +# **** + +def fix_reduce_unroll(x:UOp): + reduce_range, reduce_expand = partition(x.src[1:], lambda y: y.op is Ops.RANGE) + if len(reduce_expand) == 0: return None + reduce_expand = [x for x in reduce_expand if x.op is not Ops.CONST] + assert all(x.op is Ops.UNROLL for x in reduce_expand), f"not all UNROLLS in {reduce_expand}" + ret = x.src[0] + if len(contract_axis:=flatten(x.arg for x in reduce_expand)): + ret = UOp(Ops.CONTRACT, x.dtype.vec(prod(x[1] for x in contract_axis)), (ret,), tuple(contract_axis), tag=1) + # REDUCE supports both "horizontal" reduction and range reduction. the horizontal elements are taken in the nearest group + return x.replace(src=(ret,)+tuple(reduce_range)) + +def fix_store_unroll(x:UOp): + store_expand, store_range = partition(x.src[2:], lambda y: y.op is Ops.UNROLL) + if len(store_expand) == 0: return None + return UOp(Ops.CONTRACT, dtypes.void, (x.replace(src=x.src[:2]+tuple(store_range)),), tuple(flatten(x.arg for x in store_expand)), tag=1) + +def fix_group_for_reduce(x:UOp): + reduce_gfr, reduce_r = partition(x.src[1:], lambda u: u.op is Ops.RANGE and u.arg[1] == AxisType.GROUP_REDUCE) + if len(reduce_gfr) == 0: return None + + # NOTE: if there's other locals here, we need them in the buffer too + upstream_locals = [u for u in x.toposort() if u.op is Ops.RANGE and u.arg[1] == AxisType.LOCAL] + + # do only the non grouped reduces early + ret = x.replace(src=(x.src[0],)+tuple(reduce_r)) + reduce_loop = [x.replace(arg=(x.arg[0]+100, AxisType.REDUCE)) for x in reduce_gfr] + buf = ret.bufferize(*upstream_locals, *reduce_gfr, arg=(AddrSpace.LOCAL, reduce_gfr[0].arg[0])).index(*upstream_locals, *reduce_loop) + + # gate with an if on the store + do the final reduce + buf = UOp(Ops.IF, dtype=buf.dtype, src=(functools.reduce(operator.and_, [x.eq(0) for x in reduce_gfr]), buf)) + return buf.reduce(*reduce_loop, arg=x.arg) + +pm_pre_expander = PatternMatcher([ + # rewrite UPCAST/UNROLL range to something to be expanded + (UPat(Ops.RANGE, name="r"), + lambda r: UOp(Ops.UNROLL, dtypes.int, (UOp.const(dtypes.int.vec(s:=r.vmax+1), tuple(range(s))),), ((r.arg[0],s),)) \ + if r.arg[1] in {AxisType.UNROLL, AxisType.UPCAST} else None), + # fix REDUCEs with UNROLLs + (UPat(Ops.REDUCE, name="x"), fix_reduce_unroll), + (UPat(Ops.STORE, name="x"), fix_store_unroll), + # fix group for reduce + (UPat(Ops.REDUCE, name="x"), fix_group_for_reduce), +]) diff --git a/tinygrad_repo/tinygrad/codegen/linearize.py b/tinygrad_repo/tinygrad/codegen/late/linearize.py similarity index 93% rename from tinygrad_repo/tinygrad/codegen/linearize.py rename to tinygrad_repo/tinygrad/codegen/late/linearize.py index 9aade2d26..54ff2cbfc 100644 --- a/tinygrad_repo/tinygrad/codegen/linearize.py +++ b/tinygrad_repo/tinygrad/codegen/late/linearize.py @@ -3,7 +3,7 @@ import heapq from collections import defaultdict from dataclasses import dataclass, replace from tinygrad.uop.ops import UOp, Ops, PatternMatcher, UPat, GroupOp -from tinygrad.helpers import dedup, partition, all_same, flatten, getenv +from tinygrad.helpers import dedup, all_same, flatten, BLOCK_REORDER # NOTE: any toposort should be valid here, unlike last time this isn't required, it's just for speed def block_reorder(lst:list[UOp]) -> list[UOp]: @@ -97,7 +97,7 @@ class BlockContext: # ***** make blocks ***** -DONT_PLACE_IN_BLOCK = {Ops.DEFINE_GLOBAL, Ops.DEFINE_LOCAL, Ops.DEFINE_VAR, Ops.SPECIAL, Ops.CONST} +DONT_PLACE_IN_BLOCK = {Ops.DEFINE_GLOBAL, Ops.DEFINE_LOCAL, Ops.DEFINE_REG, Ops.DEFINE_VAR, Ops.SPECIAL, Ops.CONST} def add_blockends(base_block:UOp, new_ctx:tuple[UOp, ...], current_ctx:tuple[UOp, ...], cnt:int=1) -> UOp: ends_to_add = [z for z in new_ctx if z not in current_ctx] @@ -150,7 +150,7 @@ def make_block_bottom_up(ctx:BlockContext, x:UOp): srcs.append(add_blockends(base_block, new_ctx, current_ctx)) lst = lst[::-1] - if getenv("BLOCK_REORDER", 1): lst = block_reorder(lst) + if BLOCK_REORDER: lst = block_reorder(lst) bb = BasicBlock(tuple(lst), ctx=current_ctx, cnt=child_count, child_ctx=child_ctx) return UOp(Ops.BLOCK, src=tuple(srcs), arg=bb) @@ -207,12 +207,15 @@ def remove_blockend(x:UOp): assert all_same(parent_blocks), f"should never have two parent blocks (has {len(parent_blocks)})" parent_block = parent_blocks[0] assert len(parent_blocks) == parent_block.arg.cnt - # range needs DEFINE_ACC to be before the range (never in DEFINE_ACC for if) - early_ops, late_ops = partition(x.arg.lst, lambda y: y.op is Ops.DEFINE_REG and x.arg.end in y.src) + # NOTE: DEFINE_ACC doesn't have to be handled in any special way + late_ops = list(x.arg.lst) # NOTE: we have to add a barrier at the start if barrier is used in the range if x.op is Ops.BLOCKEND and any(y.op is Ops.BARRIER for y in late_ops) and late_ops[-1].op is Ops.ENDRANGE: late_ops = [UOp(Ops.BARRIER)] + late_ops - arg = BasicBlock(tuple(early_ops)+parent_block.arg.lst+tuple(late_ops), tuple([y for y in x.arg.ctx if y is not x.arg.end]), cnt=x.arg.cnt) + # peephole opt, remove any BARRIERs next to each other + for i in range(len(late_ops)-1): + if late_ops[i].op is Ops.BARRIER and late_ops[i+1].op is Ops.BARRIER: late_ops[i+1] = UOp(Ops.NOOP) + arg = BasicBlock(parent_block.arg.lst+tuple(late_ops), tuple([y for y in x.arg.ctx if y is not x.arg.end]), cnt=x.arg.cnt) return UOp(Ops.BLOCK, src=tuple(y for y in x.src if y is not parent_block)+parent_block.src, arg=arg) block_merge = PatternMatcher([ @@ -224,7 +227,7 @@ block_merge = PatternMatcher([ def finalize(sink:UOp) -> UOp: if sink.op is not Ops.BLOCK or not all(x.op in DONT_PLACE_IN_BLOCK for x in sink.src): - raise RuntimeError("linearize failure") + raise RuntimeError(f"linearize failure {sink.op} {[x.op for x in sink.src if x.op not in DONT_PLACE_IN_BLOCK]}") # place the early things lst = sorted(dedup(sink.src), key=lambda x: x.tuplize) + list(sink.arg.lst) diff --git a/tinygrad_repo/tinygrad/codegen/lowerer.py b/tinygrad_repo/tinygrad/codegen/lowerer.py index e9d120c36..663a9b0fa 100644 --- a/tinygrad_repo/tinygrad/codegen/lowerer.py +++ b/tinygrad_repo/tinygrad/codegen/lowerer.py @@ -1,68 +1,66 @@ # the job of the lowerer is to do indexing from dataclasses import dataclass -from typing import cast -from tinygrad.dtype import dtypes, PtrDType, AddrSpace -from tinygrad.uop.ops import KernelInfo, UOp, Ops, PatternMatcher, UPat, sint_to_uop, AxisType -from tinygrad.helpers import prod, partition, flatten +from tinygrad.uop.ops import KernelInfo, UOp, Ops, PatternMatcher, UPat, sint_to_uop, AxisType, graph_rewrite, resolve # ***** indexing ***** @dataclass class IndexContext: + axis_types: tuple[AxisType, ...] idxs: list[UOp] - ridxs: list[UOp] + start: int = 0 + +def shape_to_idx(s, axis_types, start=0): + return [UOp.range(sint_to_uop(s), start+i, at) for i, (s, at) in enumerate(zip(s, axis_types))] def get_index(ast:UOp) -> IndexContext: axis_types = ast.arg.axis_types if isinstance(ast.arg, KernelInfo) else () - if len(ast.full_shape) != len(axis_types): axis_types = (AxisType.LOOP,)*len(ast.full_shape) - - # indexes - idxs = [] - for i, (s, at) in enumerate(zip(ast.full_shape, axis_types)): - if at in (AxisType.UPCAST, AxisType.UNROLL): - assert isinstance(s, int), "needs to be int to upcast/unroll" - idxs.append(UOp(Ops.UNROLL, dtypes.int, (UOp.const(dtypes.int.vec(s), tuple(range(s))),), ((i,s),))) - else: - # all others are RANGES - idxs.append(UOp(Ops.RANGE, dtypes.int, (sint_to_uop(s),), i)) - - # late indexes (group for reduce) - ridxs = idxs[:] - for i, (s, at) in enumerate(zip(ast.full_shape, axis_types)): - if at == AxisType.GROUP_REDUCE: - ridxs[i] = UOp(Ops.RANGE, dtypes.int, (sint_to_uop(s),), 1000+i) - - return IndexContext(idxs, ridxs) + if len(ast.full_shape) != len(axis_types) and ast.st is not None: + axis_types = tuple([AxisType.REDUCE if resolve(s != fs) else AxisType.LOOP for s,fs in zip(ast.shape, ast.full_shape)]) + return IndexContext(axis_types, [], 0) # ***** lowering (given index) ***** -def lower_reduce_axis(ctx: IndexContext, x: UOp): - # NOTE: always using ridxs is fine here - reduce_range, reduce_expand = partition([ctx.ridxs[i] for i in x.axis_arg], lambda y: y.op is Ops.RANGE) - assert all(x.op is Ops.UNROLL for x in reduce_expand), f"not all UNROLLS in {reduce_expand} for {x.axis_arg}" - ret = x.src[0] - if len(contract_axis:=flatten(x.arg for x in reduce_expand)): - ret = UOp(Ops.CONTRACT, x.dtype.vec(prod(x[1] for x in contract_axis)), (ret,), tuple(contract_axis)) - # REDUCE supports both "horizontal" reduction and range reduction. the horizontal elements are taken in the nearest group - return UOp(Ops.REDUCE, x.dtype, (ret,)+tuple(reduce_range), x.arg[0]) +def subblock(ctx: IndexContext, full_new_idx: list[UOp], src: UOp): + lc = IndexContext(ctx.axis_types, full_new_idx, ctx.start+1000) + ctx.start = lc.start + return graph_rewrite(src, pm_lowerer, lc, name="subblock", bottom_up=True) -def lower_load(ctx: IndexContext, x: UOp, buf: UOp): - idx, valid = x.st_arg.to_indexed_uops(ctx.ridxs if buf.op is Ops.DEFINE_LOCAL else ctx.idxs) - barrier = tuple([y.barrier() if buf.op is Ops.DEFINE_LOCAL else y for y in x.src[1:]]) - return UOp(Ops.LOAD, x.dtype, (buf.index(idx, valid),) + barrier) +def lower_reduce_axis(ctx: IndexContext, x: UOp): + new_idxs = shape_to_idx(x.src[0].shape, ctx.axis_types, ctx.start) + full_new_idx = list(ctx.idxs) + for a in x.axis_arg: full_new_idx[a] = new_idxs[a] + ret = subblock(ctx, full_new_idx, x.src[0]) + return UOp(Ops.REDUCE, x.dtype, (ret,)+tuple([full_new_idx[i] for i in x.axis_arg]), x.arg[0]) def lower_store(ctx: IndexContext, x: UOp, buf: UOp): - idx, valid = x.st_arg.to_indexed_uops(ctx.idxs) - if cast(PtrDType, buf.dtype).addrspace == AddrSpace.GLOBAL: - # NOTE: only store the local reduceop in the threads that are actually doing the reduce - for oidx, ridx in zip(ctx.idxs, ctx.ridxs): - if oidx is not ridx: valid = valid * oidx.eq(0) - return buf.index(idx, valid).store(x.src[1], *[x for x in UOp.sink(idx, valid).toposort() if x.op is Ops.RANGE]) + # TODO: reenable after REDUCE_AXIS is fixed + #assert x.src[1].shape == x.src[0].shape, f"shape mismatch on store {x.src[1].shape} != {x.src[0].shape}" -def lower_const(ctx:IndexContext, view:UOp, c:UOp): - if all(x.mask is None for x in view.arg.views): return c - _, valid = view.arg.to_indexed_uops(ctx.idxs) - return valid.where(c, c.const_like(0)) + new_idxs = shape_to_idx(x.src[0].shape, ctx.axis_types, ctx.start) + idx, valid = x.st_arg.to_indexed_uops(new_idxs) + used_idxs = [x for x in UOp.sink(idx, valid).toposort() if x in new_idxs] + real_new_idxs = [] + for i in range(len(x.src[0].shape)): + if new_idxs[i] in used_idxs or len(ctx.idxs) <= i: real_new_idxs.append(new_idxs[i]) + else: real_new_idxs.append(ctx.idxs[i]) + + stored = subblock(ctx, real_new_idxs, x.src[1]) + used_ranges = [x for x in used_idxs if x.op is Ops.RANGE] + return buf.index(idx, valid).store(stored, *used_ranges) + +def fixup_wmma(ctx:IndexContext, x:UOp): + if x.tag is not None: return None + new_idxs = shape_to_idx(x.src[0].shape, ctx.axis_types, ctx.start) + full_new_idx = list(ctx.idxs) + for a in x.arg[-1]: full_new_idx[a] = new_idxs[a] + + srcs = subblock(ctx, full_new_idx, UOp.sink(*x.src)).src + + # NOTE: this assumes these are expanded. which now shouldn't change anything + new_x_arg_m2 = tuple([tuple([(full_new_idx[a].arg[0], sz) for a,sz in v]) for v in x.arg[-2]]) + new_x_arg_m1 = tuple([full_new_idx[a].arg[0] for a in x.arg[-1]]) + return x.replace(src=srcs, arg=x.arg[:-2]+(new_x_arg_m2, new_x_arg_m1), tag=1) pm_lowerer = PatternMatcher([ # TODO: remove these hacks @@ -71,10 +69,18 @@ pm_lowerer = PatternMatcher([ # hack for old style VALID (now it's just VIEW(CONST)) (UPat(Ops.VALID, src=(UPat(Ops.VIEW, name="v"),)).where(UPat.cvar("c"), UPat(Ops.CONST, arg=0)), lambda c,v: c.replace(src=()).view(v.arg)), + # consts and loads + (UPat(Ops.VIEW, src=(UPat((Ops.CONST, Ops.DEFINE_VAR), name="c"),), name="view"), + lambda ctx,view,c: c if all(x.mask is None for x in view.arg.views) else view.arg.to_indexed_uops(ctx.idxs)[1].where(c, c.const_like(0))), + (UPat(Ops.LOAD, src=(UPat.var("buf").view(),), allow_any_len=True, name="x"), + lambda ctx,buf,x: UOp(Ops.LOAD, x.dtype, (buf.index(*x.st_arg.to_indexed_uops(ctx.idxs)),)+x.src[1:])), + # reduce/view_const (UPat(Ops.REDUCE_AXIS, name="x"), lower_reduce_axis), - (UPat(Ops.VIEW, src=(UPat((Ops.CONST, Ops.DEFINE_VAR), name="c"),), name="view"), lower_const), - # rewrite LOAD/STORE VIEW to LOAD/STORE with indexed - (UPat(Ops.LOAD, src=(UPat.var("buf").view(),), allow_any_len=True, name="x"), lower_load), (UPat(Ops.STORE, src=(UPat.var("buf").view(),), allow_any_len=True, name="x"), lower_store), + (UPat(Ops.WMMA, name="x"), fixup_wmma), + + # axis fixups for WMMA + (UPat((Ops.CONTRACT, Ops.UNROLL), name="x"), + lambda ctx,x: x.replace(tag=1, arg=tuple([(ctx.idxs[a].arg[0], sz) for a,sz in x.arg])) if x.tag is None else None), ]) diff --git a/tinygrad_repo/tinygrad/codegen/opt/__init__.py b/tinygrad_repo/tinygrad/codegen/opt/__init__.py new file mode 100644 index 000000000..d879a2e56 --- /dev/null +++ b/tinygrad_repo/tinygrad/codegen/opt/__init__.py @@ -0,0 +1,51 @@ +# opt opinionatedly transforms an ast into an optimized ast using either heuristics or beam search + +from tinygrad.codegen.opt.kernel import Kernel +from tinygrad.codegen.opt.heuristic import hand_coded_optimizations +from tinygrad.uop.ops import UOp, PatternMatcher, UPat, Ops, KernelInfo +from tinygrad.helpers import NOOPT, BEAM, USE_TC, getenv +from tinygrad.renderer import Renderer +from tinygrad.uop.spec import type_verify + +def get_optimized_ast(ast:UOp, renderer:Renderer) -> UOp|None: + """ + Optimize an AST based on heuristics or BEAM search. + + Args: + ast: The Ops.SINK rooted AST + renderer: The renderer used to generate the code + + Returns: + The Ops.SINK rooted AST transformed to apply the opts and with a KernelInfo in the arg. + """ + + # no shape, no opt + if ast.src[0].st is None: return None + new_arg = ast.arg + if new_arg is None: + k = Kernel(ast, opts=renderer) + if not NOOPT: + if not k.apply_tensor_cores(USE_TC.value): k.apply_opts(hand_coded_optimizations(k)) + if BEAM >= 1: + from tinygrad.codegen.opt.search import beam_search, bufs_from_lin + kb = Kernel(ast, opts=renderer) + rawbufs = bufs_from_lin(kb, allocate=False) + k = beam_search(kb, rawbufs, BEAM.value, bool(getenv("BEAM_ESTIMATE", 1))) + new_arg = KernelInfo(opts_to_apply=tuple(k.applied_opts)) + elif len(new_arg.applied_opts): return None + return Kernel(ast.replace(arg=None), opts=renderer).get_optimized_ast().replace(arg=new_arg) + +pm_get_optimization = PatternMatcher([ + (UPat(Ops.SINK, name="ast"), lambda ctx,ast: get_optimized_ast(ast, ctx)), +]) + +def apply_opt(ast:UOp, renderer:Renderer): + k = Kernel(ast, opts=renderer) + k.apply_opts(ast.arg.opts_to_apply) + ret = k.get_optimized_ast() + if __debug__: type_verify(list(ret.toposort())) + return ret + +pm_do_optimize = PatternMatcher([ + (UPat(Ops.SINK, name="ast"), lambda ctx,ast: apply_opt(ast, ctx) if ast.arg is not None and ast.arg.opts_to_apply is not None else None), +]) diff --git a/tinygrad_repo/tinygrad/opt/heuristic.py b/tinygrad_repo/tinygrad/codegen/opt/heuristic.py similarity index 86% rename from tinygrad_repo/tinygrad/opt/heuristic.py rename to tinygrad_repo/tinygrad/codegen/opt/heuristic.py index 13f259c07..40b3a9d3c 100644 --- a/tinygrad_repo/tinygrad/opt/heuristic.py +++ b/tinygrad_repo/tinygrad/codegen/opt/heuristic.py @@ -1,5 +1,5 @@ import itertools -from tinygrad.opt.kernel import Kernel, Opt, OptOps, KernelOptError, AxisType +from tinygrad.codegen.opt.kernel import Kernel, Opt, OptOps, KernelOptError, AxisType from tinygrad.helpers import getenv, DEBUG, prod, NOLOCALS from tinygrad.dtype import ImageDType from tinygrad.uop.ops import Ops, resolve @@ -28,7 +28,7 @@ def hand_coded_optimizations(k:Kernel) -> list[Opt]: return k.applied_opts # are we grouping? (requires local shape support) - if resolve(prod(k.sts[0].shape[i] for i in k.upcastable_dims) <= 2048, False): + if resolve(prod(k.output_shape[i] for i in k.upcastable_dims) <= 2048, False): for sz in [16]: try: k.apply_opt(Opt(OptOps.GROUPTOP, 0, sz)) @@ -62,7 +62,7 @@ def hand_coded_optimizations(k:Kernel) -> list[Opt]: # potentially do more upcasts of non reduce axes based on a heuristic is_dsp = k.opts is not None and k.opts.device == "DSP" upcasted_axis: set[int] = set() - while resolve(prod(k.sts[0].shape[i] for i in k.upcastable_dims) >= 1024): + while resolve(prod(k.output_shape[i] for i in k.upcastable_dims) >= 1024): xb_choices = [] # consider all upcastable axes with 3 or 4 upcast (128 on the DSP) for axis, upcast_amount in itertools.product(k.upcastable_dims, ([128] if not len(upcasted_axis) else []) if is_dsp else [3,4]): @@ -80,18 +80,21 @@ def hand_coded_optimizations(k:Kernel) -> list[Opt]: else: break # if last reduce dim is small(ish), loop unroll the reduce - upcast_size = prod(k.full_shape[a] for a in k.axes_of(AxisType.UPCAST, AxisType.UNROLL)) - if k.unrollable_dims and (upcast_size <= 4 or not k.axes_of(AxisType.UNROLL)) and (upcast_size < 64): - if (s:=k.full_shape[k.unrollable_dims[-1]]) <= 32: - k.apply_opt(Opt(OptOps.UNROLL, len(k.unrollable_dims)-1, 0)) - # if it's small, upcast a second reduce dimension too - if k.unrollable_dims and s <= 3 and k.full_shape[k.unrollable_dims[-1]] <= 3: + # NOTE: this can fail on multireduce with mismatching dimensions, this is okay + try: + upcast_size = prod(k.full_shape[a] for a in k.axes_of(AxisType.UPCAST, AxisType.UNROLL)) + if k.unrollable_dims and (upcast_size <= 4 or not k.axes_of(AxisType.UNROLL)) and (upcast_size < 64): + if (s:=k.full_shape[k.unrollable_dims[-1]]) <= 32: k.apply_opt(Opt(OptOps.UNROLL, len(k.unrollable_dims)-1, 0)) - else: - for splits in [4]: - if k.full_shape[axis:=k.unrollable_dims[-1]]%splits == 0: - k.apply_opt(Opt(OptOps.UNROLL, len(k.unrollable_dims)-1, splits)) - break + # if it's small, upcast a second reduce dimension too + if k.unrollable_dims and s <= 3 and k.full_shape[k.unrollable_dims[-1]] <= 3: + k.apply_opt(Opt(OptOps.UNROLL, len(k.unrollable_dims)-1, 0)) + else: + for splits in [4]: + if k.full_shape[axis:=k.unrollable_dims[-1]]%splits == 0: + k.apply_opt(Opt(OptOps.UNROLL, len(k.unrollable_dims)-1, splits)) + break + except KernelOptError: pass # if nothing at all is upcasted and it's easy to, do an upcast for splits in [4]: diff --git a/tinygrad_repo/tinygrad/opt/kernel.py b/tinygrad_repo/tinygrad/codegen/opt/kernel.py similarity index 87% rename from tinygrad_repo/tinygrad/opt/kernel.py rename to tinygrad_repo/tinygrad/codegen/opt/kernel.py index c40ca9b4a..2d3af8d3d 100644 --- a/tinygrad_repo/tinygrad/opt/kernel.py +++ b/tinygrad_repo/tinygrad/codegen/opt/kernel.py @@ -8,13 +8,13 @@ from enum import Enum, auto from tinygrad.uop.ops import GroupOp, KernelInfo, UOp, Ops, can_pad, resolve, Variable, sint, graph_rewrite, AxisType from tinygrad.uop.spec import type_verify, ast_spec from tinygrad.device import Device -from tinygrad.opt.tc import TensorCore +from tinygrad.codegen.opt.tc import TensorCore from tinygrad.renderer import Renderer -from tinygrad.dtype import ImageDType, AddrSpace +from tinygrad.dtype import ImageDType from tinygrad.helpers import all_same, colored, ansilen, dedup, prod, round_up, to_function_name, unwrap, argfix, DEBUG, TC_SELECT, TC_OPT, AMX from tinygrad.shape.shapetracker import ShapeTracker from tinygrad.shape.view import strides_for_shape, get_contraction -from tinygrad.schedule.kernelize import view_left +from tinygrad.codegen.opt.swizzler import view_left, view_left_through_load class OptOps(Enum): TC = auto(); UPCAST = auto(); UNROLL = auto(); LOCAL = auto() # noqa: E702 @@ -60,7 +60,7 @@ class Kernel: self.vars: list[Variable] = self.ast.variables() # NOTE: this requires a specific order with the [::-1], this is likely a bug - self.bufs: list[UOp] = [x for x in self.ast.toposort() if x.op in GroupOp.Buffer][::-1] + self.bufs: list[UOp] = [x for x in self.ast.toposort() if x.op in GroupOp.Buffer and x.st is not None][::-1] # create new shapetrackers inside this kernel, we will permute them self.sts: list[ShapeTracker] = [x.st_arg for x in self.bufs] @@ -90,11 +90,10 @@ class Kernel: # axis types global_loops = AxisType.GLOBAL if self.opts.has_local else AxisType.LOOP - self.axis_types: list[AxisType] = [AxisType.REDUCE if resolve(x!=y) else global_loops for x,y in zip(self.sts[0].shape, self.sts[-1].shape)] + self.axis_types: list[AxisType] = [AxisType.REDUCE if resolve(x!=y) else global_loops for x,y in zip(self.output_shape, self.full_shape)] # confirm all reduce axes are at the end - final_reduces = [i for i,(s,n) in enumerate(zip(self.full_shape, self.output_shape)) if resolve(s != n)] - if final_reduces != list(range(len(self.full_shape)-len(final_reduces), len(self.full_shape))): + if (final_reduces := [x for x in self.axis_types if x == AxisType.REDUCE]) and final_reduces != self.axis_types[-len(final_reduces):]: raise RuntimeError(f"reduces are not at the end of the shape {self.full_shape} -> {self.output_shape}") def copy(self): @@ -123,7 +122,7 @@ class Kernel: @property def output_shape(self) -> tuple[sint, ...]: return self.sts[0].shape @property - def shape_len(self) -> int: return len(self.sts[0].shape) + def shape_len(self) -> int: return len(self.full_shape) def axes_of(self, *axis_type:AxisType) -> list[int]: return [i for i,t in enumerate(self.axis_types) if t in argfix(axis_type)] @property @@ -175,7 +174,7 @@ class Kernel: # amount : the amount to take # top : if you want to pull that amount from the top # insert_at : place to insert the new stuff - def shift_to(self, axis:int, amount:int, new_type:AxisType, top:bool=False, insert_at:int|None=None): + def shift_to(self, axis:int, amount:int, new_type:AxisType, top:bool=False, insert_at:int|None=None) -> int: if insert_at is None: insert_at = self.shape_len self.axis_types.insert(insert_at, new_type) move_axis = axis if top else axis+1 @@ -184,6 +183,7 @@ class Kernel: new_axes = [i for i in range(insert_at) if i != move_axis]+[move_axis]+[i for i in range(insert_at, self.shape_len+1) if i != move_axis] self.reshape(new_shape_fxn) self.permute(new_axes) + return insert_at # ******************** complex simplifiers ******************** @@ -201,7 +201,7 @@ class Kernel: if self.shape_len == 0: return shapes, strides = [x.shape for x in self.sts], [x.real_strides() for x in self.sts] # NOTE: we can't use self.first_reduce yet - first_reduce = [resolve(x!=y) for x,y in zip(self.sts[0].shape+(0,), self.full_shape+(1,))].index(True) + first_reduce = [resolve(x!=y) for x,y in zip(self.output_shape+(0,), self.full_shape+(1,))].index(True) # if it's an image, insert fake strides such that this fusion doesn't happen across image axes # TODO: remove membufs @@ -245,11 +245,11 @@ class Kernel: if axis is None: return -1 if op is OptOps.UNROLL: return self.unrollable_dims[axis] if op in {OptOps.GROUP, OptOps.GROUPTOP}: return self.axes_of(AxisType.REDUCE)[axis] - check(axis < self.shape_len, "invalid axis") + check(axis < self.shape_len, f"invalid axis on {axis=} {op=} {self.shape_len=}") return axis except IndexError as e: raise KernelOptError from e - def apply_opt(self, opt:Opt, append_opt:bool=True): + def apply_opt(self, opt:Opt, append_opt:bool=True) -> int|None: if self.finalized: raise RuntimeError("can't optimize Kernel after it's finalized") if self.dont_use_locals: check(opt.op not in {OptOps.LOCAL, OptOps.GROUP, OptOps.GROUPTOP}, "not using locals") @@ -263,7 +263,7 @@ class Kernel: check(0 < (use_tensor_cores:=cast(tuple, opt.arg)[2]) <= 2, "use_tensor_cores value is not valid") check(self._apply_tc_opt(use_tensor_cores, cast(int, opt.axis), tc_select, tc_opt), "no tensor core available") self.applied_opts.append(opt) - return + return None axis = self.real_axis(opt.op, opt.axis) @@ -272,7 +272,10 @@ class Kernel: check(isinstance(opt.arg, int), "arg should be int") amt = arg if (arg:=cast(int, opt.arg)) != 0 else self.full_shape[axis] check(isinstance(amt, int) and amt != 1, f"shift/padto of {amt=}, 1 or symbolic amount is meaningless") - if opt.op is not OptOps.PADTO: check(self.full_shape[axis] % amt == 0, f"no longer valid shift {self.full_shape[axis]=}, {amt=}") + if opt.op is not OptOps.PADTO: + # we check both the full_shape and each shape + check(self.full_shape[axis] % amt == 0, f"no longer valid shift {self.full_shape[axis]=}, {amt=}") + for st in self.sts: check(st.shape[axis] == 1 or st.shape[axis] % amt == 0, f"no longer valid shift {st.shape[axis]=}, {amt=}") else: amt = -1 if self.reduceop is not None and (opt.op in {OptOps.GROUP, OptOps.GROUPTOP} or \ @@ -283,28 +286,30 @@ class Kernel: smem_sz = amt*acc_sz*upcast_sz*local_sz check(smem_sz <= self.opts.shared_max, f"exceeds maximum shared memory size: needs {smem_sz}, max {self.opts.shared_max}") + new_axis = None if opt.op is OptOps.LOCAL: # cyan # NOTE: LLVM/CPU can use locals too, but they are treated the same as globals (still helpful for L1 cache) # it's disabled for now since it makes BEAM slow for little gain check(self.opts.has_local, "target does not support local") check(self.axis_types[axis] is AxisType.GLOBAL, "local is for globals") - self.shift_to(axis, amt, AxisType.LOCAL, insert_at=max(self.axes_of(AxisType.GLOBAL, AxisType.LOCAL))+1) + new_axis = self.shift_to(axis, amt, AxisType.LOCAL, insert_at=max(self.axes_of(AxisType.GLOBAL, AxisType.LOCAL))+1) elif opt.op in {OptOps.GROUP, OptOps.GROUPTOP}: # green check(self.opts.has_local and self.opts.has_shared, "target does not support local or shared mem") check(self.axis_types[axis] is AxisType.REDUCE, "must be reduce axis to group") check(not self.tensor_core, "can't group with tensor cores") check(len(reduce_axes:=[i for r in self.reduceops for i in r.axis_arg]) == len(set(reduce_axes)), "can't group with parallel reduces") - self.shift_to(axis, amt, AxisType.GROUP_REDUCE, top=(opt.op is OptOps.GROUPTOP), insert_at=min(self.axes_of(AxisType.REDUCE))) + new_axis = self.shift_to(axis, amt, AxisType.GROUP_REDUCE, top=(opt.op is OptOps.GROUPTOP), insert_at=min(self.axes_of(AxisType.REDUCE))) elif opt.op is OptOps.UNROLL: # purple check(self.axis_types[axis] not in (AxisType.UPCAST, AxisType.UNROLL), "can't upcasted already upcasted") check(amt <= 32, "don't unroll more than 32") - self.shift_to(axis, amt, AxisType.UNROLL, insert_at=None) + new_axis = self.shift_to(axis, amt, AxisType.UNROLL, insert_at=None) elif opt.op is OptOps.UPCAST: # yellow check(axis in self.upcastable_dims, f"{axis=} not in {self.upcastable_dims=}") # NOTE: assume the first get_local_axes() LOCAL are for TC check(not (self.tensor_core and axis in self.axes_of(AxisType.LOCAL)[:len(self.tensor_core.get_local_axes())]), "can't upcast TC locals") check((self.opts is not None and self.opts.device == "DSP") or amt <= 16, "don't upcast more than 16") - self.shift_to(axis, amt, AxisType.UPCAST, insert_at=max(self.axes_of(AxisType.GLOBAL, AxisType.LOCAL, AxisType.LOOP, AxisType.UPCAST))+1) + new_axis = self.shift_to(axis, amt, AxisType.UPCAST, + insert_at=max(self.axes_of(AxisType.GLOBAL, AxisType.LOCAL, AxisType.LOOP, AxisType.UPCAST))+1) elif opt.op is OptOps.NOLOCALS: check(self.opts.has_local and not self.dont_use_locals, "NOLOCALS is meaningless if target does not support local or already not using locals") check(AxisType.LOCAL not in self.axis_types and self.group_for_reduces == 0, "can't have no locals with locals") @@ -334,6 +339,7 @@ class Kernel: if append_opt: self.applied_opts.append(opt) if self.simplify_ones() and self.tensor_core_opts: self.tensor_core_opts.fix_axes(axis) # fix up axes in TC opts if required after simplify_ones() + return new_axis def apply_opts(self, opts:Sequence[Opt]) -> Kernel: for opt in opts: self.apply_opt(opt) @@ -376,9 +382,9 @@ class Kernel: tensor_cores = self.opts.tensor_cores if tc_select == -1 else [self.opts.tensor_cores[tc_select]] for tc in tensor_cores: tensor_core_opts = [self._create_tc_opts(reduceop, tc, axis, opt_level) for reduceop in self.reduceops] + if tensor_core_opts[0] is None: continue # can only fuse reduces with the same tc options assert all_same(tensor_core_opts) - if tensor_core_opts[0] is None: continue self.tensor_core_opts = tc_opts = tensor_core_opts[0] # attempt to pad the tensor axes that require it @@ -448,24 +454,21 @@ class Kernel: ret = op.replace(src=tuple(fixup_ast(x) for x in op.src)) # noqa: F821 if op.op in GroupOp.Buffer and op in self.bufs: st = self.sts[self.bufs.index(op)] - # NOTE: if CONST got masked after applying opts, we create a new VALID - if op.op is Ops.CONST and any(v.mask is not None for v in st.views): return op.view(st).valid() - # otherwise we just replace the VIEW source + # replace the VIEW source return ret.replace(src=(ret.src[0].replace(arg=st),)+ret.src[1:]) if op.op is Ops.SINK: # NOTE: should group_for_reduces be added to the local_dims? - kernel_name = ret.arg.name if ret.arg is not None else self.name if name_override is None else name_override + # TODO: arg.name should be able to be None + kernel_name = ret.arg.name if ret.arg is not None and ret.arg.name != "test" else self.name if name_override is None else name_override return ret.replace(arg=KernelInfo(kernel_name, tuple(self.axis_types), self.dont_use_locals, tuple(self.applied_opts))) if op.op is Ops.REDUCE_AXIS: reduce_idx = len(self.bufs) + self.reduceops.index(op) * 2 changed = tuple(i for i in range(self.shape_len) if resolve(self.sts[reduce_idx].shape[i] != self.sts[reduce_idx + 1].shape[i])) - axes = tuple(i for i in self.axes_of(AxisType.REDUCE, AxisType.UNROLL) if i in changed) - grouped_axes = tuple(i for i in self.axes_of(AxisType.GROUP_REDUCE) if i in changed) + axes = tuple(i for i in self.axes_of(AxisType.REDUCE, AxisType.GROUP_REDUCE, AxisType.UNROLL) if i in changed) if (tc := self.tensor_core) and self.use_tensor_cores == 1: # get reduce/upcast axes for the tensor cores tc_reduce_axes = self.shape_str_to_axis([f"r{i}" for i in range(len(tc.get_reduce_axes()))]) - base_upcast_axes = tuple([(s,2) for s in self.shape_str_to_axis([f"r{i}" for i in range(len(tc.get_reduce_axes()))] + \ - [f"u{i}" for i in range(len(tc.get_upcast_axes()))])])[::-1] + base_upcast_axes = tuple([(s,2) for s in self.shape_str_to_axis(tc.base_upcast_axes())]) tc_upcast_axes = tuple([base_upcast_axes[:int(math.log2(tc.elements_per_thread[i]))] for i in range(3)]) # permute the srcs @@ -486,25 +489,8 @@ class Kernel: return ret.replace(src=(tc_uop,), arg=(Ops.ADD, new_axes)) if (new_axes := tuple(i for i in axes if i not in tc_reduce_axes)) else tc_uop ret = ret.replace(arg = (op.arg[0], axes)) - if self.group_for_reduces and grouped_axes: - local_axes = tuple([i for i,t in enumerate(self.axis_types) if t in (AxisType.LOCAL, AxisType.UPCAST) or i in grouped_axes]) - slocal, supcast, sgroup = sorted(self.axes_of(AxisType.LOCAL)), sorted(self.axes_of(AxisType.UPCAST)), sorted(grouped_axes) - # NOTE: start with UPCAST at the end so it has stride 1 and can merge - base_shape = tuple([self.full_shape[i] for i in slocal] + [self.full_shape[i] for i in sgroup] + [self.full_shape[i] for i in supcast]) - permute_axes = tuple([local_axes.index(i) for i in slocal+sgroup+supcast]) - local_shape = tuple([s if i in local_axes else 1 for i,s in enumerate(self.full_shape)]) - local_src_shape = tuple([self.full_shape[i] if i in self.axes_of(AxisType.GLOBAL) else s for i,s in enumerate(local_shape)]) - st = ShapeTracker.from_shape(base_shape).permute(permute_axes).reshape(local_shape).expand(local_src_shape) - local_size = st.real_size() - local_buffer = UOp(Ops.DEFINE_LOCAL, op.dtype.ptr(local_size, addrspace=AddrSpace.LOCAL), (), f"temp{self.reduceops.index(op)}") - local_load = local_buffer.view(st).load(local_buffer.view(st).store(ret)) - grouped_reduce = UOp(Ops.REDUCE_AXIS, op.dtype, (local_load,), arg=(op.arg[0], grouped_axes)) - if op is self.reduceops[-1]: return grouped_reduce - st = ShapeTracker.from_shape(tuple([1 if i in grouped_axes else s for i,s in enumerate(local_shape)])) - return local_buffer.view(st).load(local_buffer.view(st).store(grouped_reduce)) - return ret self.finalized = True fixed_ast = fixup_ast(self.ast) del fixup_ast - return graph_rewrite(fixed_ast, view_left, name="fixup optimized AST") + return graph_rewrite(fixed_ast, view_left+view_left_through_load, name="fixup optimized AST") diff --git a/tinygrad_repo/tinygrad/codegen/opt/postrange.py b/tinygrad_repo/tinygrad/codegen/opt/postrange.py new file mode 100644 index 000000000..ab8c9186b --- /dev/null +++ b/tinygrad_repo/tinygrad/codegen/opt/postrange.py @@ -0,0 +1,18 @@ +from dataclasses import replace +from tinygrad.uop.ops import PatternMatcher, UPat, Ops, UOp, KernelInfo +from tinygrad.helpers import colored +from tinygrad.codegen.opt.kernel import axis_colors + +def rename_sink(s:UOp): + if s.arg is not None and s.arg.name != "test": return None + + # get all ranges (sorted) + rngs = sorted([u for u in s.parents if u.op is Ops.RANGE], key=lambda x: x.arg[0:-1]) + + # add name to kernel + name = "k" + colored('_', 'BLACK').join(['']+[colored(x.src[0].render(), axis_colors[x.arg[-1]]) for x in rngs]) + return s.replace(arg=KernelInfo(name=name) if s.arg is None else replace(s.arg, name=name)) + +pm_postrange_opt = PatternMatcher([ + (UPat(Ops.SINK, name="s"), rename_sink), +]) diff --git a/tinygrad_repo/tinygrad/opt/search.py b/tinygrad_repo/tinygrad/codegen/opt/search.py similarity index 86% rename from tinygrad_repo/tinygrad/opt/search.py rename to tinygrad_repo/tinygrad/codegen/opt/search.py index 2a798f16c..0ae91a43c 100644 --- a/tinygrad_repo/tinygrad/opt/search.py +++ b/tinygrad_repo/tinygrad/codegen/opt/search.py @@ -1,13 +1,13 @@ -from typing import cast, Callable -import itertools, functools, random, math, time, multiprocessing, traceback, signal, atexit +from typing import cast +import functools, math, time, multiprocessing, traceback, signal, atexit from collections import defaultdict from dataclasses import replace -from tinygrad.uop.ops import UOp, Ops, Variable, sym_infer +from tinygrad.uop.ops import UOp, Ops, Variable, sym_infer, AxisType from tinygrad.device import Device, Buffer, Compiler from tinygrad.helpers import prod, flatten, DEBUG, CACHELEVEL, diskcache_get, diskcache_put, getenv, Context, colored, time_to_str from tinygrad.helpers import IGNORE_BEAM_CACHE, TC_SEARCH_OVER_SHAPE from tinygrad.dtype import ImageDType, PtrDType -from tinygrad.opt.kernel import Kernel, Opt, OptOps, KernelOptError +from tinygrad.codegen.opt.kernel import Kernel, Opt, OptOps, KernelOptError from tinygrad.tensor import Tensor from tinygrad.engine.realize import CompiledRunner, get_program from tinygrad.renderer import ProgramSpec @@ -83,7 +83,7 @@ def _try_compile_linearized_w_idx(x:tuple[int,Kernel], compiler:Compiler) -> tup # workers should not open devices and should ignore ctrl c and should not launch VIZ def _init_worker(): - Context(ALLOW_DEVICE_USAGE=0, VIZ=0).__enter__() + Context(ALLOW_DEVICE_USAGE=0, VIZ=0, TRACK_MATCH_STATS=0).__enter__() signal.signal(signal.SIGINT, signal.SIG_IGN) def _ensure_buffer_alloc(bufs:list[Buffer]) -> list[Buffer]: return [buf.ensure_allocated() if buf is not None else buf for buf in bufs] @@ -108,9 +108,9 @@ def bufs_from_lin(lin:Kernel, allocate:bool=True) -> list[Buffer]: return cast(list[Buffer], rawbufs) # get dictionary of all possible actions -def get_kernel_actions(lin:Kernel, include_0=True) -> dict[int, Kernel]: +def get_kernel_actions(lin:Kernel, include_0=True, candidates:list[Opt]|None=None) -> dict[int, Kernel]: acted_lins, max_up, max_lcl = {0:lin} if include_0 else {}, getenv("BEAM_UPCAST_MAX", 256), getenv("BEAM_LOCAL_MAX", 1024) - kernel_actions = actions.copy() + kernel_actions = (actions if candidates is None else candidates).copy() if TC_SEARCH_OVER_SHAPE and len(lin.applied_opts) == 0: # tensor core opts must be first for i, action in enumerate(kernel_actions): @@ -123,14 +123,14 @@ def get_kernel_actions(lin:Kernel, include_0=True) -> dict[int, Kernel]: if a.axis is not None and a.op is not OptOps.TC: try: ax = lin.real_axis(a.op, a.axis) except KernelOptError: continue - if (ax >= lin.shape_len) or (lin.full_shape[ax] == a.arg and Opt(a.op, ax, 0) in kernel_actions): continue + if (ax >= lin.shape_len) or (lin.full_shape[ax] == a.arg and Opt(a.op, a.axis, 0) in kernel_actions): continue lin2 = lin.copy() try: lin2.apply_opt(a) up, lcl, tc_up = 1, 1, prod(tc.dims)//tc.threads if (tc:=lin2.tensor_core) else 1 - for s,c in zip(lin2.full_shape, lin2.colors()): - if c in {"magenta", "yellow"}: up *= s - elif c in {"cyan", "green", "white"}: lcl *= s + for s,c in zip(lin2.full_shape, lin2.axis_types): + if c in (AxisType.UPCAST, AxisType.UNROLL): up *= s + elif c in (AxisType.LOCAL, AxisType.GROUP_REDUCE): lcl *= s if up//tc_up > max_up or lcl > max_lcl: if getenv("BEAM_LOG_SURPASS_MAX"): print(f"too many upcast/local. {up//tc_up=}, {max_up=}, {lcl=}, {max_lcl=}") continue @@ -180,7 +180,10 @@ def beam_search(lin:Kernel, rawbufs:list[Buffer], amt:int, allow_test_size=True, seen_libs.add(lib) try: tms = _time_program(p, lib, var_vals, rawbufs, early_stop=beam[0][1]*3 if len(beam) else 1.0, allow_test_size=allow_test_size, clear_l2=hasattr(dev, 'invalidate_caches')) - except RuntimeError: continue # for runtime issues + except Exception as e: + if BEAM_DEBUG: print(f"BEAM failed for opts: {acted_lins[i].applied_opts}\n{e}") + if isinstance(e, RuntimeError): continue + raise timed_lins.append((acted_lins[i], min(tms))) if BEAM_DEBUG > 1: print(f"{time.perf_counter() - st:7.2f}s: {i:5d} {len(cast(list, p.uops)):5d} uops {time_to_str(compile_et, w=12)} compile/{time_to_str(timed_lins[-1][1], w=12)} run {len(timed_lins):4d}/{len(acted_lins):4d} {timed_lins[-1][0].colored_shape()}") # noqa: E501 elif DEBUG >= 2: print(f"\r{time.perf_counter() - st:7.2f}s: {time_to_str(timed_lins[-1][1], w=12)} {len(timed_lins):4d}/{len(acted_lins):4d} {timed_lins[-1][0].colored_shape()}\033[K", end="") # noqa: E501 @@ -198,15 +201,3 @@ def beam_search(lin:Kernel, rawbufs:list[Buffer], amt:int, allow_test_size=True, if CACHELEVEL >= 1: diskcache_put("beam_search", key, beam[0][0].applied_opts) if BEAM_DEBUG: print(f"BEAM_SEARCH: final tm={time_to_str(beam[0][1], w=0)}, applied_opts={beam[0][0].applied_opts}") return beam[0][0] - -def optimize_local_size(_prg:Callable, global_size:list[int], rawbufs:list[Buffer]) -> list[int]: - test_rawbuffers = [Buffer(rawbufs[0].device, rawbufs[0].size, rawbufs[0].dtype).allocate(), *rawbufs[1:]] if rawbufs[0] in rawbufs[1:] else rawbufs - MAX_WORKGROUP = 1024 - local_dims = [[x for x in set([sz, 1, 2, 4, 8, 16, 32, 64, 128, 256, MAX_WORKGROUP]) if x<=sz] for sz in global_size] - local_sizes = [list(x) for x in itertools.product(*local_dims) if prod(x) <= MAX_WORKGROUP] * 2 # try each valid size twice - def try_exec(local_size): - try: return _prg(*[x._buf for x in test_rawbuffers], global_size=[g//l if g%l == 0 else g/l for g,l in zip(global_size, local_size)], local_size=local_size, wait=True) # noqa: E501 - except Exception: return float('inf') - ret = min([(try_exec(local_size), local_size) for local_size in random.sample(local_sizes, len(local_sizes))]) - assert not math.isinf(ret[0]), "all optimize_local_size exec failed" - return ret[1] diff --git a/tinygrad_repo/tinygrad/codegen/opt/swizzler.py b/tinygrad_repo/tinygrad/codegen/opt/swizzler.py new file mode 100644 index 000000000..9cc356743 --- /dev/null +++ b/tinygrad_repo/tinygrad/codegen/opt/swizzler.py @@ -0,0 +1,135 @@ +from tinygrad.uop.ops import UOp, Ops, GroupOp, PatternMatcher, UPat, graph_rewrite, resolve, sint +from tinygrad.helpers import all_same, prod, unwrap, colored +from tinygrad.shape.shapetracker import ShapeTracker +from tinygrad.shape.view import View, strides_for_shape, get_contraction_with_reduce +from tinygrad.schedule.grouper import ALWAYS_CONTIGUOUS +from tinygrad.dtype import ImageDType, dtypes + +merge_views = PatternMatcher([ + # merge adjacent views + (UPat(Ops.VIEW, src=(UPat(Ops.VIEW, name="v1"),), name="v2"), lambda v1,v2: v1.replace(arg=v1.arg+v2.arg)), + # replace MovementOps with VIEW + (UPat(GroupOp.Movement, src=(UPat.var("x"),), name="mop"), lambda mop,x: x.base.view(mop.st)), + # remove NOOP views + (UPat.var("x").view(name="view"), + lambda x,view: x if x.st is not None and x.op not in GroupOp.Defines and view.st.contiguous and view.shape == x.shape else None), + (UPat(GroupOp.All-{Ops.DEFINE_GLOBAL}).view(name="view"), + lambda view: view.const_like(0) if (mask:=view.st.views[-1].mask) is not None and any((x[1]-x[0]) == 0 for x in mask) else None), + # only unmaksed VIEW on CONST replaces the ShapeTracker + (UPat(Ops.VIEW, src=(UPat((Ops.CONST, Ops.DEFINE_VAR), name="x"),), name="view"), + lambda x,view: x.replace(src=(x.src[0].replace(arg=x.st+view.st),)) if all(v.mask is None for v in (x.st+view.st).views) else None), +]) + +def reduce_push_add_ones(src:UOp, r:UOp, view:UOp): + # contiguous, expand, and the same with ones removed + if unwrap(view.st).contiguous and len(r.shape) < len(view.shape) and \ + tuple(x for x in r.shape if resolve(x != 1)) == tuple(x for x in view.shape if resolve(x != 1)): + new_shape: list[sint] = [] + new_reduce_axis = [] + if (contraction:=get_contraction_with_reduce(view.shape, r.shape, r.arg[1])) is None: return None + for i,pairs in enumerate(contraction): + new_shape_chunk = [view.shape[p] for p in pairs] + if i in r.arg[1]: + # if this is a reduce axis, we need a 1 in the view here to put it + assert len(new_shape_chunk) > 0 + new_shape += [1]*(len(pairs)-1) + [src.shape[i]] + new_reduce_axis.append(len(new_shape)-1) + else: + # otherwise, pass through the new_shape_chunk + new_shape += new_shape_chunk + ret = r.replace(src=(src.reshape(tuple(new_shape)),), arg=(r.arg[0], tuple(new_reduce_axis))+r.arg[2:]) + assert ret.shape == view.shape, f"shape mismatch on reduce_push_add_ones, {ret.shape} != {view.shape}" + return ret + return None + +view_left = merge_views+PatternMatcher([ + # view before elementwise and buffer ops + (UPat(Ops.VIEW, src=(UPat({*GroupOp.ALU, Ops.CAST, Ops.BITCAST, Ops.BIND, Ops.STORE, Ops.VALID, Ops.SINK}, name="e"),), name="view"), + lambda e,view: e.replace(src=tuple(s.view(view.st) for s in e.src))), + # if there's ones added after reduce, put this before the reduce + (UPat(Ops.VIEW, src=(UPat(Ops.REDUCE_AXIS, src=(UPat.var("src"),), name="r"),), name="view"), reduce_push_add_ones), +]) + +view_left_through_load = PatternMatcher([ + # view before load + (UPat(Ops.VIEW, src=(UPat(Ops.LOAD, name="e"),), name="view"), + lambda e,view: e.replace(src=tuple(s.view(view.st) for s in e.src))), +]) + +def apply_swizzle(u:UOp) -> UOp: return graph_rewrite(u, view_left, name="Sub View Left") + +# change reduceop axes and input ShapeTrackers, view gets replaced with a reshape. +def swizzle_reduceop(r:UOp, src:UOp, view:UOp, fuse=False): + # contiguous and same size can push to children + # if there's a reduce child, shapes match with ones removed + if unwrap(view.st).contiguous and view.size == r.size and \ + (not (len(r.arg) == 3 and r.arg[2]) or # arg[2] = True is fuse marker + tuple((i,x) for i,x in enumerate(r.shape) if resolve(x != 1)) == tuple((i,x) for i,x in enumerate(view.shape) if resolve(x != 1))): + return None + # swizzle the input + input_st = ShapeTracker.from_shape(src.shape) + tmp = input_st.permute(tuple(i for i in range(len(input_st.shape)) if i not in r.axis_arg)+r.axis_arg) + prshape = prod(rshape:=tmp.shape[-len(r.axis_arg):]) + strides = strides_for_shape(rshape) + nv = [View.create(v.shape+rshape, tuple(x*prshape for x in v.strides)+strides, + v.offset*prshape, v.mask+tuple((0,s) for s in rshape) if v.mask is not None else None) for v in unwrap(view.st).views] + new_view = tmp + ShapeTracker(tuple(nv)) + swizzled_input = apply_swizzle(src.view(new_view)) + # create a new reduceop + new_axis = tuple(range(len(view.shape), len(view.shape) + len(r.axis_arg))) + if fuse: red = UOp(Ops.REDUCE_AXIS, r.dtype, (swizzled_input.fuse(),), (r.arg[0], new_axis, True)) + else: red = UOp(Ops.REDUCE_AXIS, r.dtype, (swizzled_input,), (r.arg[0], new_axis)) + return red.reshape(view.shape) + +def reduceop_view_right(src:UOp, v:UOp, r:UOp): + assert unwrap(v.st).contiguous and v.size == src.size, f"can't compute new axis for {src.shape} -> {r.shape}" + new_axis = [i for i,(s,u) in enumerate(zip(src.shape, r.shape)) if s != u] + return src.r(r.arg[0], tuple(new_axis)).reshape(r.shape) + +def elementwise_view_right(root:UOp): + if not (swizzles:=[x for x in root.src if x.op is Ops.VIEW and x.base.op not in ALWAYS_CONTIGUOUS]): return None + assert all_same([x.base.size for x in swizzles]), f"swizzle inputs must have the same size {swizzles}" + # place view after applying the elementwise op + new_st = ShapeTracker.from_shape(swizzles[0].base.shape) + new_src = [x.base if x.base.shape==new_st.shape else apply_swizzle(x.view(new_st)) for x in root.src] + # reshape to match downstream shapes + return root.replace(src=tuple(new_src)).reshape(root.shape) + +# push VIEW to children +view_right = merge_views+PatternMatcher([ + # push a non contiguous ShapeTracker through reduceop + (UPat(Ops.VIEW, src=(UPat(Ops.REDUCE_AXIS, src=(UPat.var("src"),), name="r"),), name="view"), swizzle_reduceop), + # apply view after reduceops + (UPat(Ops.REDUCE_AXIS, src=(UPat(Ops.VIEW, src=(UPat(GroupOp.All-ALWAYS_CONTIGUOUS, name="src"),), name="v"),), name="r"), reduceop_view_right), + # apply view after elementwise ops + (UPat(GroupOp.All-{Ops.SINK, Ops.REDUCE_AXIS}, name="root"), elementwise_view_right), + # merge axes for double reduce (invert of SPLIT_REDUCEOP=1) + (UPat(Ops.REDUCE_AXIS, src=(UPat(Ops.REDUCE_AXIS, name="r1"),), name="r2"), + lambda r1,r2: r1.replace(arg=(r1.arg[0], r2.arg[1]+r1.arg[1])) if r1.arg[0] is r2.arg[0] else None), + # remove view from sink + (UPat(Ops.VIEW, name="v").sink(name="sink"), lambda v,sink: v.src[0].sink(arg=sink.arg)), +]) + +def check_load_st(glbl:UOp, view:UOp): + if glbl.arg != 0 or (st:=unwrap(view.st)).contiguous: return + # if it has a single view and it becomes contiguous when you shrink expanded axes, it's fine + if len(st.views) == 1 and st.shrink(tuple((0,1) if st == 0 else (0,s) for s,st in zip(st.shape, st.views[0].strides))).contiguous: return + # if it has a single view and it's equal when you shrink a contig, it's fine + if len(st.views) == 1 and (mask:=st.views[0].mask) is not None and ShapeTracker.from_shape(st.shape).shrink(mask) == st.shrink(mask): return + # otherwise, it's not fine + raise RuntimeError("self operand of augmented assign must be contiguous.\nhelp: consider using .contiguous():\n" + +colored(" - a += a.T\n", "red")+colored(" + a += a.T.contiguous()", "green")) + +fix_kernel_ops = view_left_through_load+PatternMatcher([ + # add view to LOAD and STORE + (UPat(Ops.DEFINE_GLOBAL, name="g").load(), lambda g: g.view(g.st).load()), + (UPat(Ops.DEFINE_GLOBAL, name="g").store(UPat.var('x')), lambda g,x: g.view(g.st).store(x)), + # VALID + (UPat(Ops.VIEW, src=(UPat.cvar(),), name="self"), + lambda self: UOp.where(UOp(Ops.VALID, dtypes.bool, (UOp(Ops.VIEW, arg=self.st),)), self.const_like(self.base.arg), 0)), + # no ImageDType after index + (UPat(GroupOp.All-{Ops.DEFINE_GLOBAL, Ops.VIEW, Ops.INDEX}, name="x"), + lambda x: x.replace(dtype=x.dtype.base) if isinstance(x.dtype, ImageDType) else None), + # if this kernel also assigns to the loaded buffer, ensure we can index it correctly + (UPat(Ops.LOAD, src=(UPat.var("glbl").view(name="view"),)), check_load_st), +]) diff --git a/tinygrad_repo/tinygrad/opt/tc.py b/tinygrad_repo/tinygrad/codegen/opt/tc.py similarity index 75% rename from tinygrad_repo/tinygrad/opt/tc.py rename to tinygrad_repo/tinygrad/codegen/opt/tc.py index 92d9666db..d32266c47 100644 --- a/tinygrad_repo/tinygrad/opt/tc.py +++ b/tinygrad_repo/tinygrad/codegen/opt/tc.py @@ -22,9 +22,21 @@ class TensorCore: # D = A * B + C, A is (M x K), B is (K x N), C and D are (M x def permutes_for_shape_str(self, shape_str:list[str]) -> tuple[tuple[int, ...], tuple[int, ...]]: ret = [[shape_str.index(remap[ss]) if ss in remap else i for i,ss in enumerate(shape_str)] for remap in self._remaps()] return tuple(ret[0]), tuple(ret[1]) + @functools.cache # pylint: disable=method-cache-max-size-none + def base_shape_str(self) -> list[str]: + ret = [] + cnt = {'u': 0, 'l': 0} + for opt in self.opts: + ret.append(f"{opt[0]}{cnt[opt[0]]}") + cnt[opt[0]] += 1 + # assumes you do the UNROLL after the opts + return ret + [f"r{i}" for i in range(len(self.get_reduce_axes()))] def get_reduce_axes(self): return [(i, 2) for i in range(int(math.log2(self.dims[2])))] def get_upcast_axes(self): return [opt for opt in self.opts if opt[0] == "u"] def get_local_axes(self): return [opt for opt in self.opts if opt[0] == "l"] + def base_upcast_axes(self): + # this is defined in the swizzle. first we use the upcast axes, then the reduce + return ([f"r{i}" for i in range(len(self.get_reduce_axes()))] + [f"u{i}" for i in range(len(self.get_upcast_axes()))])[::-1] def __str__(self): return "_".join(["WMMA"] + list(map(str, self.dims)) + [self.dtype_in.name, self.dtype_out.name]) def __post_init__(self): # all axes have size 2, is the order @@ -34,12 +46,30 @@ class TensorCore: # D = A * B + C, A is (M x K), B is (K x N), C and D are (M x assert 2**local_axes == self.threads, f"{self.threads} threads construct the warp but found {2**local_axes} in {self.opts}" assert 2**upcast_axes == self.elements_per_thread[2], \ f"{self.elements_per_thread[2]} elements from C are processed per thread but found {2**upcast_axes} in {self.opts}" + # check dims match opts + assert self.dims[0] == 2**len(gd:=[x for x in self.opts if x[1] == '0']), f"opts wrong on dims[0], {self.dims[0]} vs {gd}" + assert self.dims[1] == 2**len(gd:=[x for x in self.opts if x[1] == '1']), f"opts wrong on dims[1], {self.dims[1]} vs {gd}" + # NOTE: the K opts is implictly set by the dim # check swizzle assert len(self.swizzle[0]) == 3 and len(self.swizzle[1]) == 3, "swizzle has wrong part count" assert len(self.swizzle[0][0]) == len(self.swizzle[1][0]) == local_axes, "local swizzle size is wrong" assert len(self.swizzle[0][1]) == len(self.swizzle[1][1]) == upcast_axes, "upcast swizzle size is wrong" assert len(self.swizzle[0][2]) == len(self.swizzle[1][2]) == reduce_axes, "reduce swizzle size is wrong" assert all(len(s) == local_axes+upcast_axes+reduce_axes for s in self._remaps()), "remaps are the wrong size" + # check elements_per_thread + un, ln = 0, 0 + zero_stride_0 = [] + zero_stride_1 = [] + for o in self.opts: + if o[1] == '0': zero_stride_0.append(o[0] + str(un if o[0] == 'u' else ln)) + if o[1] == '1': zero_stride_1.append(o[0] + str(un if o[0] == 'u' else ln)) + if o[0] == 'u': un += 1 + if o[0] == 'l': ln += 1 + # NOTE: all the zero_stride dims can be placed in any order in the swizzle + upcasted_0 = [x for x in (self.swizzle[0][1] + self.swizzle[0][2]) if x not in zero_stride_0 and x[0] != 'l'] + upcasted_1 = [x for x in (self.swizzle[1][1] + self.swizzle[1][2]) if x not in zero_stride_1 and x[0] != 'l'] + assert 2**len(upcasted_0) == self.elements_per_thread[0], f"mismatch in elements_per_thread[0], {upcasted_0} vs {self.elements_per_thread[0]}" + assert 2**len(upcasted_1) == self.elements_per_thread[1], f"mismatch in elements_per_thread[1], {upcasted_1} vs {self.elements_per_thread[1]}" # ***** NVIDIA ***** @@ -65,12 +95,14 @@ cuda_sm75: list[TensorCore] = cuda_8168_f16 # https://gpuopen.com/learn/wmma_on_rdna3/ amd_rdna3 = [TensorCore(dims=(16,16,16), threads=32, elements_per_thread=(16,16,8), dtype_in=di, dtype_out=do, - opts=("l0","l0","l0","l0","l1","u1","u1","u1"), swizzle=((('l4', 'u0', 'u1', 'u2', 'l0'), ('r1', 'r2', 'r3'), ('l1', 'l2', 'l3', 'r0')), - (('l0', 'l1', 'l2', 'l3', 'l4'), ('r1', 'r2', 'r3'), ('u0', 'u1', 'u2', 'r0')))) + opts=("l0","l0","l0","l0","l1","u1","u1","u1"), + swizzle=((('l4', 'u0', 'u1', 'u2', 'l0'), ('r1', 'r2', 'r3'), ('l1', 'l2', 'l3', 'r0')), + (('l0', 'l1', 'l2', 'l3', 'l4'), ('r1', 'r2', 'r3'), ('u0', 'u1', 'u2', 'r0')))) for di,do in [(dtypes.half,dtypes.float),(dtypes.half,dtypes.half),(dtypes.bfloat16,dtypes.float)]] amd_rdna4 = [TensorCore(dims=(16,16,16), threads=32, elements_per_thread=(8,8,8), dtype_in=di, dtype_out=do, - opts=("l0","l0","l0","l0","u1","u1","u1","l1"), swizzle=((('u0', 'u1', 'u2', 'l4', 'r2'), ('r0', 'r1', 'r3'), ('l0', 'l1', 'l2', 'l3')), - (('l0', 'l1', 'l2', 'l3', 'r2'), ('r0', 'r1', 'r3'), ('l4', 'u0', 'u1', 'u2')))) + opts=("l0","l0","l0","l0","u1","u1","u1","l1"), + swizzle=((('u0', 'u1', 'u2', 'l4', 'r2'), ('r0', 'r1', 'r3'), ('l0', 'l1', 'l2', 'l3')), + (('l0', 'l1', 'l2', 'l3', 'r2'), ('r0', 'r1', 'r3'), ('l4', 'u0', 'u1', 'u2')))) for di,do in [(dtypes.half,dtypes.float),(dtypes.half,dtypes.half),(dtypes.bfloat16,dtypes.float),(dtypes.bfloat16,dtypes.bfloat16)]] # https://gpuopen.com/learn/amd-lab-notes/amd-lab-notes-matrix-cores-readme diff --git a/tinygrad_repo/tinygrad/codegen/optional.py b/tinygrad_repo/tinygrad/codegen/optional.py deleted file mode 100644 index 6bc581edc..000000000 --- a/tinygrad_repo/tinygrad/codegen/optional.py +++ /dev/null @@ -1,58 +0,0 @@ -# should this merge with transcendental? -from typing import Callable -import functools -from tinygrad.device import is_dtype_supported -from tinygrad.dtype import dtypes, promo_lattice -from tinygrad.uop.ops import UOp, Ops, UPat, PatternMatcher -from tinygrad.helpers import getenv -from tinygrad.uop.transcendental import xexp2, xlog2, xsin, xpow, TRANSCENDENTAL_SUPPORTED_DTYPES -from tinygrad.renderer import Renderer - -# ***** optional patterns ***** - -@functools.lru_cache(None) -def magicgu(vmax:int, d:int) -> tuple[int,int]: - # calculate m,s such that x//d == (x*m) >> s for all 0 <= x <= vmax, d>0; adapted from Hacker's Delight, Chapter 10 - nc = (vmax+1)//(d) * d - 1 - nbits = vmax.bit_length() - for s in range(0, 2*nbits + 1): - if 2**s > nc*(d - 1 - (2**s - 1) % d): - m = (2**s + d - 1 - (2**s - 1) % d)//d - return m, s - assert False - -def fast_idiv(ctx: Renderer|None, x: UOp, d: int) -> UOp|None: - # idiv is truncated division, but arithmetic shift is floored division, so can only do non-negative numbers! - if x.vmin<0: return None - sign = 1 if d > 0 else -1 - m,s = magicgu(vmax := min(x.vmax, dtypes.max(x.dtype)), abs(d)) - if m * vmax <= dtypes.max(x.dtype): return sign * ((x*m) >> s) - # promo_lattice needs to return an unsigned type - if ctx is not None and dtypes.is_int(next_dtype := promo_lattice[x.dtype][-1]) and is_dtype_supported(next_dtype, ctx.device): - if m * vmax <= dtypes.max(next_dtype): return sign * ((x.cast(next_dtype)*m) >> s).cast(x.dtype) - return None - -powers_of_two = {2**i:i for i in range(64)} -@functools.cache -def get_late_rewrite_patterns(ops, force_transcendental=False): - pat: list[tuple[UPat, Callable]] = [(UPat(op, dtype=TRANSCENDENTAL_SUPPORTED_DTYPES, src=(UPat.var("d"),)), f) for op,f in \ - ((Ops.EXP2, xexp2), (Ops.LOG2, xlog2), (Ops.SIN, xsin)) if op not in ops or force_transcendental] - # rewrite SQRT to xpow 0.5 - if Ops.SQRT not in ops: pat.append((UPat(Ops.SQRT, src=UPat.var("d")), lambda d: xpow(d, d.const_like(0.5)))) - # rewrite MOD to AND (which should always be supported, but not for generic in tests): x % (2**y) -> x & (2**y-1) - if Ops.AND in ops: pat += [(UPat.var("x", dtypes.ints)%UPat.cvar("c"), lambda x,c: x & (c.arg-1) if c.arg in powers_of_two else None)] - # rewrite MUL/IDIV to SHL+SHR: x*(2**y) -> shl(x,y) and x//(2**y) -> shr(x,y) - if Ops.SHL in ops: pat += [(UPat.var("x", dtypes.ints)*UPat.cvar("c"), lambda c,x: x << v if (v:=powers_of_two.get(c.arg, 0)) else None)] - if Ops.SHR in ops: - # no reason to check x<0 for uints - pat += [(UPat.var("x", dtypes.uints)//UPat.cvar("c"), lambda x,c: x >> v if (v:=powers_of_two.get(c.arg, 0)) else None)] - pat += [(UPat.var("x", dtypes.ints)//UPat.cvar("c"), lambda x,c: (x+(l.const_like(l.vmin) if (l:=(x<0)).vmin==l.vmax else l).where( - c-1, 0)) >> v if (v:=powers_of_two.get(c.arg, 0)) else None)] # (x+(x<0).where(c-1, 0)) >> v - if not getenv("DISABLE_FAST_IDIV"): - pat += [(UPat.var("x", dtypes.ints)//UPat.cvar("d"), lambda ctx, x, d: fast_idiv(ctx, x, d.arg))] - pat += [(UPat.var("x", dtypes.ints)%UPat.cvar("d"), lambda ctx, x, d: x - d*f if (f:=fast_idiv(ctx, x, d.arg)) is not None else None)] - if Ops.NEG in ops: - pat += [(UPat.var('x')*-1, lambda x: x.alu(Ops.NEG))] - if Ops.SUB in ops: pat += [(UPat.var('x')+UPat.var('y').alu(Ops.NEG), lambda x,y: x.alu(Ops.SUB, y))] - if Ops.MULACC in ops: pat += [(UPat.var('a')*UPat.var('b')+UPat.var('c'), lambda a,b,c: a.alu(Ops.MULACC, b, c))] - return PatternMatcher(pat) diff --git a/tinygrad_repo/tinygrad/device.py b/tinygrad_repo/tinygrad/device.py index 0c6b5e6b1..9a021c6a3 100644 --- a/tinygrad_repo/tinygrad/device.py +++ b/tinygrad_repo/tinygrad/device.py @@ -1,10 +1,10 @@ from __future__ import annotations -from dataclasses import dataclass, replace, field +from dataclasses import dataclass, replace from collections import defaultdict from typing import Any, Generic, TypeVar, Iterator -import importlib, inspect, functools, pathlib, os, platform, contextlib, sys, re, atexit, pickle, decimal, time -from tinygrad.helpers import CI, OSX, LRU, getenv, diskcache_get, diskcache_put, DEBUG, GlobalCounters, flat_mv, PROFILE, temp, \ - colored, Context, DISABLE_COMPILER_CACHE, ALLOW_DEVICE_USAGE, cpu_events, ProfileEvent, dedup +import importlib, inspect, functools, pathlib, os, platform, contextlib, sys, re, atexit, pickle, decimal +from tinygrad.helpers import CI, OSX, LRU, getenv, diskcache_get, diskcache_put, DEBUG, GlobalCounters, flat_mv, PROFILE, temp, colored, \ + Context, DISABLE_COMPILER_CACHE, ALLOW_DEVICE_USAGE, MAX_BUFFER_SIZE, cpu_events, ProfileEvent, ProfilePointEvent, dedup from tinygrad.dtype import DType, ImageDType, PtrDType, dtypes, _to_np_dtype from tinygrad.renderer import Renderer @@ -55,9 +55,6 @@ atexit.register(lambda: [Device[dn].finalize() for dn in Device._opened_devices] class ProfileDeviceEvent(ProfileEvent): device:str; comp_tdiff:decimal.Decimal=decimal.Decimal(0); copy_tdiff:decimal.Decimal=decimal.Decimal(0) # noqa: E702 -@dataclass(frozen=True) -class ProfilePointEvent(ProfileEvent): device:str; name:str; st:decimal.Decimal; ref:int; arg:dict=field(default_factory=dict) # noqa: E702 - @dataclass(frozen=True) class ProfileProgramEvent(ProfileEvent): device:str; name:str; lib:bytes|None; base:int|None # noqa: E702 @@ -69,7 +66,6 @@ class ProfileGraphEvent(ProfileEvent): ents:list[ProfileGraphEntry]; deps:list[l # **************** Buffer + Allocators **************** - @dataclass(frozen=True, eq=True) class BufferSpec: # TODO: move device, size, dtype here? @@ -128,7 +124,7 @@ class Buffer: def allocate(self, opaque=None, external_ptr=None) -> Buffer: assert not self.is_initialized(), "can't allocate already allocated buffer" if DEBUG >= 7: print(f"buffer: allocate {self.nbytes} bytes on {self.device}") - if (mbs:=getenv("MAX_BUFFER_SIZE", 0)) > 0 and self.size > mbs: raise RuntimeError(f"buffer of size {self.size/1e6:.2f}M is too large") + if MAX_BUFFER_SIZE > 0 and self.size > MAX_BUFFER_SIZE: raise RuntimeError(f"buffer of size {self.size/1e6:.2f}M is too large") self.allocator:Allocator = Device[self.device].allocator if external_ptr is not None: self.options = replace(self.options, external_ptr=external_ptr) if self.options else BufferSpec(external_ptr=external_ptr) @@ -142,15 +138,14 @@ class Buffer: if not self.device.startswith("DISK"): GlobalCounters.mem_used += self.nbytes if PROFILE: self._prof_num = num = len(Buffer.profile_events) - ts = decimal.Decimal(time.perf_counter_ns())/1000 - Buffer.profile_events.append(ProfilePointEvent(self.device, "alloc", ts, num, {"dtype":str(self.dtype),"sz":self.size,"nbytes":self.nbytes})) + Buffer.profile_events.append(ProfilePointEvent(self.device, "alloc", num, {"dtype":self.dtype, "sz":self.size})) return self def deallocate(self): assert hasattr(self, '_buf'), "buffer must be allocated to deallocate" if DEBUG is not None and DEBUG >= 7: print(f"buffer: deallocate {self.nbytes} bytes on {self.device}") if self._base is None and (self.options is None or self.options.external_ptr is None): if GlobalCounters is not None and not self.device.startswith("DISK"): GlobalCounters.mem_used -= self.nbytes - if PROFILE: Buffer.profile_events.append(ProfilePointEvent(self.device, "free", decimal.Decimal(time.perf_counter_ns())/1000, self._prof_num)) + if PROFILE: Buffer.profile_events.append(ProfilePointEvent(self.device, "free", self._prof_num)) self.allocator.free(self._buf, self.nbytes, self.options) elif self._base is not None: self._base.allocated_views -= 1 del self._buf @@ -223,6 +218,7 @@ class Allocator(Generic[DeviceType]): def __init__(self, dev:DeviceType): self.dev: DeviceType = dev self.default_buffer_spec: BufferSpec = BufferSpec() + self.supports_copy_from_disk: bool = True # overridden in LRUAllocator def alloc(self, size:int, options:BufferSpec|None=None): assert size > 0, f"alloc size must be positive, getting {size}" @@ -307,7 +303,7 @@ def is_dtype_supported(dtype:DType, device:str|None=None) -> bool: if device == "METAL": return not CI if device in {"CUDA", "NV"}: return not CI and not getenv("PTX") if device in {"CPU", "LLVM"}: return not CI and platform.machine() in {"arm", "arm64", "aarch64", "x86_64", "amd64"} - return device == "AMD" + return device in {"AMD", "PYTHON"} if dtype in dtypes.fp8s: # not supported yet - in progress return False diff --git a/tinygrad_repo/tinygrad/dtype.py b/tinygrad_repo/tinygrad/dtype.py index cc971df3a..2e2716c42 100644 --- a/tinygrad_repo/tinygrad/dtype.py +++ b/tinygrad_repo/tinygrad/dtype.py @@ -108,17 +108,16 @@ class dtypes: if isinstance(val, tuple): assert len(val) == dtype.count, f"mismatch {val} {dtype}" return tuple(dtypes.as_const(x, dtype) for x in val) - # TODO: should truncate here return int(val) if dtypes.is_int(dtype) else float(val) if dtypes.is_float(dtype) else bool(val) @staticmethod @functools.cache def min(dtype:DType): - if dtypes.is_int(dtype): return 0 if dtypes.is_unsigned(dtype) else -2**(dtype.itemsize*8-1) + if dtypes.is_int(dtype): return 0 if dtypes.is_unsigned(dtype) else -2**(dtype.scalar().itemsize*8-1) return -float("inf") if dtypes.is_float(dtype) else False @staticmethod @functools.cache def max(dtype:DType): - if dtypes.is_int(dtype): return 2**(dtype.itemsize*8)-1+dtypes.min(dtype) + if dtypes.is_int(dtype): return 2**(dtype.scalar().itemsize*8)-1+dtypes.min(dtype) return float("inf") if dtypes.is_float(dtype) else True @staticmethod def finfo(dtype:DType) -> tuple[int, int]: @@ -193,6 +192,22 @@ def least_upper_float(dt:DType) -> DType: return dt if dtypes.is_float(dt) else DTYPES_DICT = {k: v for k, v in dtypes.__dict__.items() if isinstance(v, DType) and not k.startswith(("default", "void"))} INVERSE_DTYPES_DICT = {**{v.name:k for k,v in DTYPES_DICT.items()}, "void": "void"} +@functools.cache +def can_safe_cast(dt0:DType, dt1:DType) -> bool: + # return if dt1 preserves value of dt0 + # https://numpy.org/doc/stable/reference/generated/numpy.can_cast.html + if dt0 == dt1 or dt0 == dtypes.bool: return True + match dt1: + case dtypes.double: return dt0 in (dtypes.float, dtypes.half, dtypes.bfloat16, + dtypes.uint32, dtypes.uint16, dtypes.uint8, dtypes.int32, dtypes.int16, dtypes.int8) + case dtypes.float: return dt0 in (dtypes.half, dtypes.bfloat16, dtypes.uint16, dtypes.uint8, dtypes.int16, dtypes.int8) + case dtypes.uint64: return dt0 in (dtypes.uint32, dtypes.uint16, dtypes.uint8) + case dtypes.uint32: return dt0 in (dtypes.uint16, dtypes.uint8) + case dtypes.int64: return dt0 in (dtypes.uint32, dtypes.uint16, dtypes.uint8, dtypes.int32, dtypes.int16, dtypes.int8) + case dtypes.int32: return dt0 in (dtypes.uint16, dtypes.uint8, dtypes.int16, dtypes.int8) + case dtypes.int16: return dt0 in (dtypes.uint8, dtypes.int8) + case _: return False + def sum_acc_dtype(dt:DType): # default acc dtype for sum if dtypes.is_unsigned(dt): return least_upper_dtype(dt, dtypes.uint) @@ -200,15 +215,14 @@ def sum_acc_dtype(dt:DType): return least_upper_dtype(dt, to_dtype(getenv("SUM_DTYPE", "float32"))) def truncate_fp16(x): - try: return struct.unpack("@e", struct.pack("@e", float(x)))[0] + try: return struct.unpack('e', struct.pack('e', float(x)))[0] except OverflowError: return math.copysign(math.inf, x) -def truncate_bf16(x): - max_bf16 = struct.unpack('f', struct.pack('I', 0x7f7f0000))[0] - if abs(x) > max_bf16: return math.copysign(math.inf, x) - f32_int = struct.unpack('I', struct.pack('f', x))[0] - bf = struct.unpack('f', struct.pack('I', f32_int & 0xFFFF0000))[0] - return bf +def float_to_bf16(x): + if not math.isfinite(x): return x + u = struct.unpack('I', struct.pack('f', x))[0] + u = (u + 0x7FFF + ((u >> 16) & 1)) & 0xFFFF0000 + return struct.unpack('f', struct.pack('I', u))[0] # fp8-float conversions based on https://gitlab.com/nvidia/headers/cuda-individual/cudart/-/blob/main/cuda_fp8.hpp def float_to_fp8(x: float, dtype: DType) -> int: @@ -273,7 +287,7 @@ def fp8_to_float(x: int, dtype: DType) -> float: return float(float32_val) truncate: dict[DType, Callable] = {dtypes.bool: bool, - dtypes.float16: truncate_fp16, dtypes.bfloat16: truncate_bf16, + dtypes.float16: truncate_fp16, dtypes.bfloat16: lambda x: float_to_bf16(float(x)), **{fp8: (lambda x, dtype=fp8: fp8_to_float(float_to_fp8(x, dtype), dtype)) for fp8 in dtypes.fp8s}, dtypes.float32: lambda x: ctypes.c_float(x).value, dtypes.float64: lambda x: ctypes.c_double(x).value, dtypes.uint8: lambda x: ctypes.c_uint8(x).value, dtypes.uint16: lambda x: ctypes.c_uint16(x).value, @@ -285,6 +299,7 @@ truncate: dict[DType, Callable] = {dtypes.bool: bool, def _to_np_dtype(dtype:DType) -> type|None: import numpy as np + if dtype == dtypes.bfloat16: return np.float32 return np.dtype(dtype.fmt).type if dtype.fmt is not None else None def _from_np_dtype(npdtype:'np.dtype') -> DType: # type: ignore [name-defined] # noqa: F821 import numpy as np @@ -293,9 +308,11 @@ def _from_np_dtype(npdtype:'np.dtype') -> DType: # type: ignore [name-defined] # @functools.cache def _to_torch_dtype(dtype:DType) -> 'torch.dtype'|None: # type: ignore [name-defined] # noqa: F821 import numpy as np, torch + if dtype == dtypes.uint64: return torch.uint64 + if dtype == dtypes.bfloat16: return torch.bfloat16 # NOTE: torch doesn't expose this mapping with a stable API try: return torch.from_numpy(np.array([], dtype=_to_np_dtype(dtype))).dtype except TypeError: return None @functools.cache def _from_torch_dtype(torchdtype:'torch.dtype') -> DType: # type: ignore [name-defined] # noqa: F821 - return {v:k for k in dtypes.all if (v:=_to_torch_dtype(k)) is not None}[torchdtype] \ No newline at end of file + return {v:k for k in dtypes.all if (v:=_to_torch_dtype(k)) is not None}[torchdtype] diff --git a/tinygrad_repo/tinygrad/engine/jit.py b/tinygrad_repo/tinygrad/engine/jit.py index 7166b2c57..2254c606e 100644 --- a/tinygrad_repo/tinygrad/engine/jit.py +++ b/tinygrad_repo/tinygrad/engine/jit.py @@ -21,24 +21,24 @@ def apply_graph_to_jit(jit_cache: list[ExecItem], input_rawbuffers: list[Buffer] # This allows the accelerator to run some batches while subsequent graphs are still being updated. graphed_jit_cache: list[ExecItem] = [] current_batch: list[ExecItem] = [] - current_device: Compiled|None = None + current_batch_devs: list[Compiled] = [] def flush_batch(): - nonlocal current_batch, current_device, max_batch_size + nonlocal current_batch, current_batch_devs, max_batch_size try: - if current_device is None: raise GraphException("no device for graph") + if len(current_batch_devs) == 0: raise GraphException("no device for graph") if len(current_batch) <= 1 and not getenv("GRAPH_ONE_KERNEL"): raise GraphException("only one kernel doesn't graph") - graph_runner = current_device.graph(current_batch, input_rawbuffers, var_vals) + graph_runner = current_batch_devs[0].graph(current_batch, input_rawbuffers, var_vals) # clear jit inputs to allow their memory to be freed/reused for (j,i) in graph_runner.input_replace.keys(): graph_runner.jit_cache[j].bufs[i] = None graphed_jit_cache.append(ExecItem(graph_runner, cast(list[Buffer|None], input_rawbuffers))) max_batch_size *= 2 - if DEBUG >= 2: print(f"JIT GRAPHing batch with {len(current_batch)} kernels on device {current_device}") + if DEBUG >= 2: print(f"JIT GRAPHing batch with {len(current_batch)} kernels on device {current_batch_devs[0]}") except GraphException as e: graphed_jit_cache.extend(current_batch) - if DEBUG >= 2: print(f"JIT GRAPHing failed batch with {len(current_batch)} kernels on device {current_device}: {e}") + if DEBUG >= 2: print(f"JIT GRAPHing failed batch with {len(current_batch)} kernels on device {current_batch_devs[0]}: {e}") current_batch = [] - current_device = None + current_batch_devs = [] for ji in jit_cache: match ji.prg: @@ -48,13 +48,18 @@ def apply_graph_to_jit(jit_cache: list[ExecItem], input_rawbuffers: list[Buffer] case ViewOp(): continue # ViewOps are just ignored case _: ji_graph_dev = None # Everything else is not graphed and flushes existing graph if it's being constructed - can_be_graphed = ji_graph_dev is not None and ji_graph_dev.graph is not None and graph_class(ji_graph_dev).supports_exec_item(ji_graph_dev, ji) - is_multigraph = can_be_graphed and issubclass(graph_class(ji_graph_dev), MultiGraphRunner) - can_share_graph = can_be_graphed and (type(ji_graph_dev) is type(current_device) if is_multigraph else ji_graph_dev == current_device) + # Check if this jit item can be graphed at all, so check if a new graph supports the current item. + can_be_graphed = ji_graph_dev is not None and ji_graph_dev.graph is not None and graph_class(ji_graph_dev).supports_exec_item([ji_graph_dev], ji) + + # Check if the current batch can be extended with this item. + can_share_graph = can_be_graphed and len(current_batch_devs) > 0 and \ + graph_class(current_batch_devs[0]).supports_exec_item(dedup(current_batch_devs + [ji_graph_dev]), ji) can_extend_graph_batch = can_share_graph and (max_batch_size == 0 or len(current_batch) < max_batch_size) + + # Flush the current batch if any, since it can't be extended or is full. if not can_extend_graph_batch and len(current_batch) > 0: flush_batch() (current_batch if can_be_graphed else graphed_jit_cache).append(ji) - current_device = ji_graph_dev if can_be_graphed else None + current_batch_devs = dedup(current_batch_devs + [ji_graph_dev]) if can_be_graphed else [] if len(current_batch) > 0: flush_batch() return graphed_jit_cache @@ -127,12 +132,14 @@ class GraphRunner(Runner): return list({id(x):x for x in wait_nodes}.values()) @staticmethod - def supports_exec_item(dev, ei:ExecItem) -> bool: return isinstance(ei.prg, CompiledRunner) + def supports_exec_item(devs:list[Compiled], ei:ExecItem) -> bool: return isinstance(ei.prg, CompiledRunner) and len(dedup(devs)) == 1 # a marker for your graph supporting multiple devices of the same type class MultiGraphRunner(GraphRunner): @staticmethod - def supports_exec_item(dev, ei:ExecItem) -> bool: return isinstance(ei.prg, (CompiledRunner, BufferXfer)) + def supports_exec_item(devs:list[Compiled], ei:ExecItem) -> bool: + # Devices must be the same type + return isinstance(ei.prg, (CompiledRunner, BufferXfer)) and len(dedup([type(Device[b.device]) for b in ei.bufs if b]+[type(d) for d in devs]))==1 def get_out_buffers_for_ei(ei:ExecItem) -> list[Buffer]: if isinstance(ei.prg, CompiledRunner): return [cast(Buffer, ei.bufs[out]) for out in ei.prg.p.outs if out not in ei.prg.p.ins] diff --git a/tinygrad_repo/tinygrad/engine/memory.py b/tinygrad_repo/tinygrad/engine/memory.py index 2c62b3f6a..36a4e3b0b 100644 --- a/tinygrad_repo/tinygrad/engine/memory.py +++ b/tinygrad_repo/tinygrad/engine/memory.py @@ -23,12 +23,13 @@ def _internal_memory_planner(buffers:list[list[Buffer]], noopt_buffers=None, ign # Sort buffer operations in timeline order. Two events: buffer is allocated or buffer is freed. buffer_requests = sorted([((first_appearance[buf], True), buf) for buf in first_appearance.keys()] + \ [((last_appearance[buf] + 1, False), buf) for buf in first_appearance.keys()], key=lambda x: x[0]) + total_memory = sum(round_up(buf.nbytes, min_block_size:=0x1000) for buf in first_appearance.keys()) * 2 # *2 for fragmentation (which is about 15%) # Try to suballocate from a shared buffer managed by global_planner using TLSFAllocator. # Also track buffer replacements for buffers that do not support suballocation. buffer_replace:dict[Buffer, tuple[Buffer|None, int|None]] = {} reuse_buffers:dict[tuple, list[Buffer]] = defaultdict(list) - global_planner:dict[str, tuple[int, TLSFAllocator]] = defaultdict(lambda: (0, TLSFAllocator(1 << 44, block_size=0x1000, lv2_cnt=32))) + global_planner:dict[str, tuple[int, TLSFAllocator]] = defaultdict(lambda: (0, TLSFAllocator(total_memory, block_size=min_block_size, lv2_cnt=32))) for (_, is_open_ev), buf in buffer_requests: # Check if suballocation is possible for the given buffer and device. if hasattr(Device[buf.device].allocator, "_offset") and not isinstance(buf.dtype, ImageDType): diff --git a/tinygrad_repo/tinygrad/engine/realize.py b/tinygrad_repo/tinygrad/engine/realize.py index 52da1698e..bcf032fcc 100644 --- a/tinygrad_repo/tinygrad/engine/realize.py +++ b/tinygrad_repo/tinygrad/engine/realize.py @@ -1,20 +1,19 @@ -from typing import cast, Generator -import time, pprint +from typing import cast, Generator, Callable +import time, pprint, random, itertools, math from dataclasses import dataclass, replace, field from tinygrad.helpers import all_same, colored, DEBUG, GlobalCounters, ansilen, BEAM, NOOPT, all_int, CAPTURING, Metadata, TRACEMETA, TracingKey -from tinygrad.helpers import DEVECTORIZE, time_to_str, VALIDATE_WITH_CPU, getenv -from tinygrad.uop.ops import Ops, PatternMatcher, UOp, UPat, Variable, sym_infer, graph_rewrite, print_uops, track_rewrites +from tinygrad.helpers import DEVECTORIZE, time_to_str, VALIDATE_WITH_CPU, getenv, cpu_profile, PROFILE, ProfilePointEvent, cpu_events, prod +from tinygrad.uop.ops import Ops, PatternMatcher, UOp, UPat, Variable, sym_infer, graph_rewrite, print_uops, track_rewrites, KernelInfo from tinygrad.device import Device, Buffer from tinygrad.renderer import Renderer, ProgramSpec, Estimates from tinygrad.engine.schedule import ScheduleItem -from tinygrad.opt import get_optimized_ast from tinygrad.codegen import full_rewrite -from tinygrad.uop.spec import type_verify +from tinygrad.codegen.opt.kernel import Opt # **************** Program Creation **************** -@track_rewrites(name=lambda _ast,_renderer,ret: TracingKey(ret.name, (ret.function_name, ret.ast), ret.src)) -def get_program(ast:UOp, renderer:Renderer) -> ProgramSpec: +@track_rewrites(name=lambda *args,ret,**kwargs: TracingKey(ret.name, (ret.function_name, ret.ast), ret=ret), replay=True) +def get_program(ast:UOp, renderer:Renderer|None=None, opts:list[Opt]|None=None) -> ProgramSpec: """ Transform an AST into a ProgramSpec. May trigger BEAM search. @@ -27,16 +26,18 @@ def get_program(ast:UOp, renderer:Renderer) -> ProgramSpec: """ if getenv("VIZ"): graph_rewrite(ast, PatternMatcher([]), name="View Base AST") - modified_ast = get_optimized_ast(ast, renderer) if ast.arg is None or ast.arg.opts_to_apply is not None else ast - if __debug__: type_verify(list(modified_ast.toposort())) # linearize + if renderer is None: renderer = Device.default.renderer + if opts is not None: + assert ast.arg is None, "can't apply opts if sink has an arg" + ast = ast.replace(arg=KernelInfo(opts_to_apply=tuple(opts))) try: - uops = full_rewrite(modified_ast, renderer) - except RuntimeError: + uops = full_rewrite(ast, renderer) + except RuntimeError as e: print("***** LINEARIZE FAILURE *****") + print(e) print(f"ast = {ast}") - print(f"opts = {modified_ast.arg.applied_opts}") raise assert uops[-1].op is Ops.SINK, "last uop must be sink" @@ -44,7 +45,7 @@ def get_program(ast:UOp, renderer:Renderer) -> ProgramSpec: if DEBUG >= 6: print_uops(uops) src = renderer.render(uops) - return ProgramSpec(uops[-1].arg.name, src, renderer.device, ast, uops, + return ProgramSpec(uops[-1].arg.name if uops[-1].arg is not None else "test", src, renderer.device, ast, uops, global_size=[1,1,1] if renderer.has_local else None, local_size=[1,1,1] if renderer.has_local else None) # **************** Runners **************** @@ -59,11 +60,28 @@ class Runner: def __call__(self, rawbufs:list[Buffer], var_vals:dict[Variable, int], wait=False) -> float|None: raise NotImplementedError("override this") +def optimize_local_size(_prg:Callable, global_size:list[int], rawbufs:list[Buffer]) -> list[int]: + test_rawbuffers = [Buffer(rawbufs[0].device, rawbufs[0].size, rawbufs[0].dtype).allocate(), *rawbufs[1:]] if rawbufs[0] in rawbufs[1:] else rawbufs + MAX_WORKGROUP = 1024 + local_dims = [[x for x in set([sz, 1, 2, 4, 8, 16, 32, 64, 128, 256, MAX_WORKGROUP]) if x<=sz] for sz in global_size] + local_sizes = [list(x) for x in itertools.product(*local_dims) if prod(x) <= MAX_WORKGROUP] * 2 # try each valid size twice + def try_exec(local_size): + try: + return _prg(*[x._buf for x in test_rawbuffers],global_size=[g//l if g%l == 0 else g/l for g,l in zip(global_size, local_size)], + local_size=local_size, wait=True) + except Exception: return float('inf') + ret = min([(try_exec(local_size), local_size) for local_size in random.sample(local_sizes, len(local_sizes))]) + assert not math.isinf(ret[0]), "all optimize_local_size exec failed" + return ret[1] + class CompiledRunner(Runner): def __init__(self, p:ProgramSpec, precompiled:bytes|None=None, prg=None): if DEBUG >= 4: print(p.src) self.p:ProgramSpec = p - self.lib:bytes = precompiled if precompiled is not None else Device[p.device].compiler.compile_cached(p.src) + if precompiled is not None: self.lib = precompiled + else: + with cpu_profile(TracingKey(f"compile {p.name}", (p.function_name,)), "TINY"): + self.lib = Device[p.device].compiler.compile_cached(p.src) if DEBUG >= 7: Device[p.device].compiler.disassemble(self.lib) self._prg = Device[p.device].runtime(p.function_name, self.lib) if prg is None else prg super().__init__(p.name, p.device, p.estimates) @@ -73,8 +91,6 @@ class CompiledRunner(Runner): def __call__(self, rawbufs:list[Buffer], var_vals:dict[Variable, int], wait=False) -> float|None: global_size, local_size = self.p.launch_dims(var_vals) if global_size is not None and local_size is None and all_int(self.p.global_size): # type: ignore[arg-type] - # TODO: this is copied from get_program - from tinygrad.opt.search import optimize_local_size local_size = optimize_local_size(self._prg, global_size, rawbufs) global_size = [g//l if g%l == 0 else g/l for g,l in zip(global_size, local_size)] self.p = replace(self.p, global_size=global_size, local_size=local_size) @@ -99,7 +115,7 @@ class BufferCopy(Runner): super().__init__(colored(name, "yellow"), dest_device, Estimates(lds=total_sz, mem=total_sz)) def copy(self, dest, src): disk_supports_fast_copyout = src.device.startswith("DISK") and hasattr(src.allocator.dev, 'io_uring') and \ - getattr(src.allocator.dev, 'fd', None) is not None + getattr(src.allocator.dev, 'fd', None) is not None and dest.allocator.supports_copy_from_disk if src.device.startswith("DISK") and hasattr(dest.allocator, 'copy_from_disk') and disk_supports_fast_copyout and src.nbytes >= 4096: dest.allocator.copy_from_disk(dest._buf, src._buf, src.nbytes) elif src.device.startswith("DISK") and hasattr(dest.allocator, '_as_buffer'): @@ -146,6 +162,7 @@ class ExecItem: def run(self, _var_vals:dict[Variable, int]|None=None, wait=False, jit=False, do_update_stats=True) -> float|None: var_vals = self.fixedvars if _var_vals is None else (_var_vals|self.fixedvars) bufs = [cast(Buffer, x) for x in self.bufs] if jit else [cast(Buffer, x).ensure_allocated() for x in self.bufs] + if PROFILE: cpu_events.append(ProfilePointEvent(self.prg.device, "exec", self.prg.display_name, {"metadata":self.metadata, "var_vals":var_vals})) et = self.prg(bufs, var_vals, wait=wait or DEBUG >= 2) if do_update_stats: GlobalCounters.kernel_count += 1 @@ -155,10 +172,15 @@ class ExecItem: if DEBUG >= 2: lds_est = sym_infer(self.prg.estimates.lds, var_vals) mem_est = min(mem_est, lds_est) # there can't be more memory accessed than loads/stores. remove this when symbolic is fixed + header_color = 'magenta' if jit else ('green' if self.prg.first_run else None) ptm = colored(time_to_str(et, w=9), "yellow" if et > 0.01 else None) if et is not None else "" - print(f"{colored(f'*** {self.prg.device[:7]:7s} {GlobalCounters.kernel_count:4d}', 'magenta' if jit else ('green' if self.prg.first_run else None))} {self.prg.display_name+' '*(41-ansilen(self.prg.display_name))} arg {len(bufs):2d} mem {GlobalCounters.mem_used/1e9:5.2f} GB " + # noqa: E501 - (str() if et is None else f"tm {ptm}/{GlobalCounters.time_sum_s*1e3:9.2f}ms ({op_est/((et or 1e-20)*1e9):9.2f} GFLOPS {mem_est/((et or 1e-20)*1e9):6.1f}|{lds_est/((et or 1e-20)*1e9):<7.1f} GB/s)" + # noqa: E501 - f" {[repr(m) if TRACEMETA >= 2 else str(m) for m in self.metadata] if self.metadata else ''}")) + flops, membw, ldsbw = op_est/(et or 1e-20), mem_est/(et or 1e-20), lds_est/(et or 1e-20) + flops_str = f"{flops*1e-9:9.2f} GFLOPS" if flops < 1e14 else colored(f"{flops*1e-12:9.2f} TFLOPS", 'green') + mem_str = f"{membw*1e-9:6.1f}|{ldsbw*1e-9:<7.1f} GB/s" if membw < 1e13 else colored(f"{membw*1e-12:6.1f}|{ldsbw*1e-12:<7.1f} TB/s", 'green') + print(f"{colored(f'*** {self.prg.device[:7]:7s} {GlobalCounters.kernel_count:4d}', header_color)}"+ + f" {self.prg.display_name+' '*(44-ansilen(self.prg.display_name))} arg {len(bufs):2d} mem {GlobalCounters.mem_used/1e9:5.2f} GB"+ + ("" if et is None else f" tm {ptm}/{GlobalCounters.time_sum_s*1e3:9.2f}ms ({flops_str} {mem_str})")+ + f" {[repr(m) if TRACEMETA >= 2 else str(m) for m in self.metadata] if self.metadata else ''}") self.prg.first_run = False return et diff --git a/tinygrad_repo/tinygrad/engine/schedule.py b/tinygrad_repo/tinygrad/engine/schedule.py index a4e3ec4a0..1e6b5259a 100644 --- a/tinygrad_repo/tinygrad/engine/schedule.py +++ b/tinygrad_repo/tinygrad/engine/schedule.py @@ -1,9 +1,9 @@ from typing import cast from dataclasses import dataclass, field from collections import deque, defaultdict -from tinygrad.uop.ops import UOp, Variable, Ops, UPat, PatternMatcher, graph_rewrite, buffers +from tinygrad.uop.ops import UOp, Variable, Ops, buffers from tinygrad.device import Device, Buffer, MultiBuffer -from tinygrad.helpers import Metadata, unwrap, all_same, merge_dicts +from tinygrad.helpers import Metadata, all_same # **** ScheduleItem return type @@ -14,32 +14,13 @@ class ScheduleItem: metadata: tuple[Metadata, ...] = () fixedvars: dict[Variable, int] = field(default_factory=dict) -# **** unbind Variables - -def unbind_view(ctx:list[dict[Variable, int]], x:UOp): - st = unwrap(x.st).simplify() - if any(x.op is Ops.BIND for x in st.vars()): - st, var_vals = st.unbind() - ctx.append(var_vals) - return x.replace(arg=st) - return None - -def unbind_bind(ctx:list[dict[Variable, int]], x:UOp): - var, val = x.unbind() - ctx.append({var.replace(src=()):val}) - return var - -pm_unbind = PatternMatcher([ - (UPat(Ops.VIEW, name="x"), unbind_view), - (UPat(Ops.BIND, name="x"), unbind_bind), -]) - # **** schedule linearizer def create_schedule_with_vars(sched_sink:UOp) -> tuple[list[ScheduleItem], dict[Variable, int]]: # construct the KERNEL children graph based on assigns children: defaultdict[UOp, list[UOp]] = defaultdict(list) in_degree: dict[UOp, int] = {} + var_vals: dict[Variable, int] = {} for u in sched_sink.toposort(): if u.op is not Ops.ASSIGN: continue # anything that's not an ASSIGN doesn't write a kernel, so we can skip k = u.src[1] @@ -52,11 +33,15 @@ def create_schedule_with_vars(sched_sink:UOp) -> tuple[list[ScheduleItem], dict[ for ss in s.src: if ss.op is Ops.MSELECT: ss = ss.src[0] if ss.op is not Ops.BUFFER: - assert ss.op is Ops.ASSIGN + assert ss.op is Ops.ASSIGN, f"ss.op is not ASSIGN, it's {ss.op}" children[ss.src[1]].append(k) in_degree[k] += 1 elif s.op is Ops.BUFFER: pass # a BUFFER is already realized, nothing to do here + elif s.op is Ops.BIND: + var, val = s.unbind() + assert var not in var_vals or var_vals[var] == val, f"bind mismatch on {var}, {var_vals[var]} != {val}" + var_vals[var] = val else: raise RuntimeError(f"input to kernel must be ASSIGN or BUFFER, not {s.op}") @@ -73,20 +58,16 @@ def create_schedule_with_vars(sched_sink:UOp) -> tuple[list[ScheduleItem], dict[ if v == 0: queues[_heuristic(k)].append(k) schedule: list[ScheduleItem] = [] - var_vals: dict[Variable, int] = {} while last_queue or any(queues.values()): if not last_queue: last_heuristic, last_queue = min((it for it in queues.items() if it[1]), key=lambda x: abs(x[0]-last_heuristic)) k = last_queue.popleft() - # unbind var_vals from the kernel - local_var_vals: list[dict[Variable, int]] = [] - ast = graph_rewrite(k.arg.ast, pm_unbind, ctx=local_var_vals, name="unbind vars") - var_vals = merge_dicts([var_vals, *local_var_vals]) + ast = k.arg.ast # create subbuffers if needed if ast.op is Ops.BUFFER_VIEW: base = k.src[1].buf_uop.buffer assert isinstance(base, Buffer), "base can't be MultiBuffer" buffers[k.src[0]] = base.view(k.size, ast.dtype, ast.arg[1]*base.dtype.itemsize) - ubufs = tuple(s.buf_uop.buffer for s in k.src) + ubufs = tuple(s.buf_uop.buffer for s in k.src if s.op is not Ops.BIND) if any(isinstance(x, MultiBuffer) for x in ubufs): assert all(isinstance(x, MultiBuffer) for x in ubufs), "kernel must all be multibuffer" dnums = [x for x in ast.variables() if x.arg[0] == '_device_num'] diff --git a/tinygrad_repo/tinygrad/frontend/onnx.py b/tinygrad_repo/tinygrad/frontend/onnx.py index 2d6703bf1..33d540860 100644 --- a/tinygrad_repo/tinygrad/frontend/onnx.py +++ b/tinygrad_repo/tinygrad/frontend/onnx.py @@ -1,6 +1,1281 @@ -# type: ignore -import sys, pathlib -sys.path.append(pathlib.Path(__file__).parent.parent.as_posix()) -try: - from extra.onnx import OnnxRunner # noqa: F401 # pylint: disable=unused-import -except ImportError as e: raise ImportError("onnx frontend not in release\nTo fix, install tinygrad from a git checkout with pip install -e .") from e \ No newline at end of file +# pylint: disable=possibly-unused-variable +from typing import Any, Sequence, cast, Literal, NamedTuple, Generator +import dataclasses, functools, io, math, types, warnings, pathlib, sys, os, struct, enum +from io import BufferedReader +from tinygrad.nn.state import TensorIO +from tinygrad.tensor import Tensor, _broadcast_shape, ReductionStr +from tinygrad.helpers import getenv, DEBUG, all_same, prod, flatten, make_tuple, argsort, is_numpy_ndarray, get_single_element, polyN +from tinygrad.dtype import DType, ConstType, dtypes, _from_np_dtype, truncate +from tinygrad.device import is_dtype_supported, Device + +# ***** protobuf definitions ****** +class WireType(enum.IntEnum): + """ + Protocol Buffer wire types for decoding fields. + Reference: https://github.com/protocolbuffers/protobuf/blob/main/python/google/protobuf/internal/wire_format.py#L24-L29 + """ + VARINT = 0; FIXED64 = 1; LENGTH_DELIMITED = 2; START_GROUP = 3; END_GROUP = 4; FIXED32 = 5 # noqa: E702 + +class AttributeType(enum.IntEnum): + """ + ONNX attribute type identifiers. + Reference: https://github.com/onnx/onnx/blob/rel-1.18.0/onnx/onnx.proto3#L128-L145 + """ + FLOAT = 1; INT = 2; STRING = 3; TENSOR = 4; GRAPH = 5; FLOATS = 6; INTS = 7; STRINGS = 8 # noqa: E702 + + def to_field_name(self) -> str: return {1: "f", 2: "i", 3: "s", 4: "t", 5: "g", 6: "floats", 7: "ints", 8: "strings"}[self.value] + +class OnnxDataType(enum.IntEnum): + """ + ONNX tensor data type identifiers. + Reference: https://github.com/onnx/onnx/blob/rel-1.18.0/onnx/onnx.proto3#L500-L544 + """ + FLOAT = 1; UINT8 = 2; INT8 = 3; UINT16 = 4; INT16 = 5; INT32 = 6; INT64 = 7; BOOL = 9; FLOAT16 = 10; DOUBLE = 11; UINT32 = 12 # noqa: E702 + UINT64 = 13; BFLOAT16 = 16 # noqa: E702 + + def to_dtype(self) -> DType: return dtypes.fields()[self.name.lower()] + +def dtype_fallback(dtype: DType, fallback_context: str) -> DType: + if is_dtype_supported(dtype): return dtype + default_dtype = dtypes.default_int if dtypes.is_int(dtype) else dtypes.default_float + warnings.warn(f"dtype {dtype} on {Device.DEFAULT} from {fallback_context} is not supported, falling back to {default_dtype}") + assert is_dtype_supported(default_dtype), f"dtype {default_dtype} must be supported on {Device.DEFAULT}" + return default_dtype + +# ***** onnx spec definitions ***** +class Domain(enum.Enum): + ONNX = "ai.onnx" + ONNX_ML = "ai.onnx.ml" + AI_ONNX_TRAINING = "ai.onnx.training" + AI_ONNX_PREVIEW_TRAINING = "ai.onnx.preview.training" + MICROSOFT_CONTRIB_OPS = "com.microsoft" + MICROSOFT_NCHWC = "com.microsoft.nchwc" + MICROSOFT_EXPERIMENTAL = "com.microsoft.experimental" + PYTORCH_ATEN = "org.pytorch.aten" + @classmethod + def from_onnx(cls, domain: str | None) -> "Domain": return cls.ONNX if domain is None or domain == "" else cls(domain) + +class OpSetId(NamedTuple): + domain: Domain + version: int + +@dataclasses.dataclass(frozen=True) +class OnnxValue: + shape: tuple[str|int, ...] + dtype: DType + is_optional: bool + is_sequence: bool + +@dataclasses.dataclass(frozen=True) +class OnnxNode: + op: str + opset_id: OpSetId + inputs: tuple[str, ...] + outputs: tuple[str, ...] + opts: dict[str, Any] + +# ***** protobuf parsing ****** +class PBBufferedReader(BufferedReader): + def __init__(self, tensor: Tensor): + assert tensor.dtype == dtypes.uint8, tensor + super().__init__(TensorIO(tensor)) + self.len = tensor.nbytes() + + def decode_varint(self) -> int: + """Reference: https://protobuf.dev/programming-guides/encoding/#varints""" + result = 0 + shift = 0 + while True: + data = self.read(1) + if data == b"": raise EOFError("decode_varint EOF") + result |= (data[0] & 0x7F) << shift + if not (data[0] & 0x80): return result + shift += 7 + if shift >= 70: raise ValueError("Varint too long") + + def read_delimited(self, use_tensor=False): + str_len = self.decode_varint() + if not use_tensor: return self.read(str_len) + raw = self.raw + assert isinstance(raw, TensorIO) + res = raw._tensor[self.tell():(self.tell()+str_len)] + self.seek(str_len, os.SEEK_CUR) + return res + def read_string(self) -> str: return self.read_delimited().decode("utf-8") + def read_bytes(self) -> Tensor: return self.read_delimited(use_tensor=True) + def read_float(self) -> float: return struct.unpack(" Tensor: return self.read_delimited(use_tensor=True) + def read_int64(self) -> int: return truncate[dtypes.int64](self.decode_varint()) + def read_packed_int64s(self) -> list[int]: + total_bytes_len = self.decode_varint() + old_pos = self.tell() + values = [] + # need copy here because packed ints are varint + while self.tell() < total_bytes_len + old_pos: values.append(self.read_int64()) + return values + + def skip_field(self, wire_type: WireType) -> None: + """Skip a field based on its wire type.""" + match wire_type: + case WireType.VARINT: self.decode_varint() + case WireType.FIXED64: self.seek(8, os.SEEK_CUR) + case WireType.FIXED32: self.seek(4, os.SEEK_CUR) + case WireType.LENGTH_DELIMITED: self.seek(self.decode_varint(), os.SEEK_CUR) + case _: raise ValueError(f"Unknown wire type: {wire_type}") + +class OnnxPBParser: + """ + ONNX protobuf parser. + Reference: https://github.com/onnx/onnx/blob/main/onnx/onnx.proto3 + """ + def __init__(self, inp: Tensor|str|pathlib.Path, load_external_data: bool=True): + self.file_path: pathlib.Path|None = None + self.load_external_data = load_external_data + if not isinstance(inp, Tensor): + self.file_path = pathlib.Path(inp) + self.tensor = Tensor(self.file_path) + else: self.tensor = inp + self.reader = PBBufferedReader(self.tensor) + + def parse(self) -> dict: + """Parses the ONNX model into a nested dictionary. """ + return self._parse_ModelProto() + + def _parse_message(self, end_pos: int) -> Generator[tuple[int, WireType], None, None]: + while self.reader.tell() < end_pos: + tag = self.reader.decode_varint() + yield tag >> 3, WireType(tag & 0x07) + + def _decode_end_pos(self) -> int: + str_len = self.reader.decode_varint() + start_pos = self.reader.tell() + return start_pos + str_len + + def _parse_ModelProto(self) -> dict: + """Entry point for parsing the ONNX model.""" + obj: dict[str, Any] = {"opset_import": []} + for fid, wire_type in self._parse_message(self.reader.len): + match fid: + case 4: obj["domain"] = self.reader.read_string() + case 5: obj["model_version"] = self.reader.read_int64() + case 7: obj["graph"] = self._parse_GraphProto() + case 8: obj["opset_import"].append(self._parse_OperatorSetIdProto()) + case _: self.reader.skip_field(wire_type) + + # update opset version + opset_imports = {Domain.from_onnx(x.get('domain')):x.get('version', 1) for x in obj["opset_import"]} + for n in obj["graph"]["node"]: + n_ = n["parsed_node"] + n["parsed_node"] = OnnxNode(n_.op, OpSetId(n_.opset_id.domain, opset_imports.get(n_.opset_id.domain, 1)), n_.inputs, n_.outputs, n_.opts) + return obj + + def _parse_GraphProto(self) -> dict: + obj: dict[str, Any] = {"node": [], "initializer": [], "input": [], "output": []} + for fid, wire_type in self._parse_message(self._decode_end_pos()): + match fid: + case 1: obj["node"].append(self._parse_NodeProto()) + case 2: obj["name"] = self.reader.read_string() + case 5: obj["initializer"].append(self._parse_TensorProto()) + case 11: obj["input"].append(self._parse_ValueInfoProto()) + case 12: obj["output"].append(self._parse_ValueInfoProto()) + case _: self.reader.skip_field(wire_type) + return obj + + def _parse_NodeProto(self) -> dict: + obj: dict[str, Any] = {"input": [], "output": [], "attribute": [], "domain": None} + for fid, wire_type in self._parse_message(self._decode_end_pos()): + match fid: + case 1: obj["input"].append(self.reader.read_string()) + case 2: obj["output"].append(self.reader.read_string()) + case 3: obj["name"] = self.reader.read_string() + case 4: obj["op_type"] = self.reader.read_string() + case 5: obj["attribute"].append(self._parse_AttributeProto()) + case 6: obj["doc_string"] = self.reader.read_string() + case 7: obj["domain"] = self.reader.read_string() + case _: self.reader.skip_field(wire_type) + + # parse node + attributes = {attr_dict["name"]: attr_dict[AttributeType(attr_dict["type"]).to_field_name()] for attr_dict in obj["attribute"]} + opset_id = OpSetId(Domain.from_onnx(obj.get('domain')), 1) # default version, to be updated later in _parse_ModelProto + obj["parsed_node"] = OnnxNode(obj["op_type"], opset_id, tuple(obj["input"]), tuple(obj["output"]), attributes) + return obj + + def _parse_TensorProto(self) -> dict: + obj: dict[str, Any] = {"dims": []} + for fid, wire_type in self._parse_message(self._decode_end_pos()): + match fid: + case 1: obj["dims"].append(self.reader.read_int64()) + case 2: obj["data_type"] = self.reader.read_int64() + case 4: obj["float_data"] = self.reader.read_packed_floats() + case 5: obj["int32_data"] = self.reader.read_packed_int64s() + case 7: obj["int64_data"] = self.reader.read_packed_int64s() + case 8: obj["name"] = self.reader.read_string() + case 9: obj["raw_data"] = self.reader.read_bytes() + case 10: obj["double_data"] = self.reader.read_packed_floats() + case 11: obj["uint64_data"] = self.reader.read_packed_int64s() + case 13: obj.setdefault("external_data", []).append(self._parse_StringStringEntryProto()) + case 14: obj["data_location"] = self.reader.read_int64() + case _: self.reader.skip_field(wire_type) + + # load external data + if self.load_external_data and obj.get("data_location", 0) == 1: + if "external_data" not in obj: raise ValueError("no external_data") + location, length, offset = None, None, 0 + for kv in obj["external_data"]: + if kv["key"] == "location": location = kv["value"] + elif kv["key"] == "offset": offset = int(kv["value"]) + elif kv["key"] == "length": length = int(kv["value"]) + if location is None: raise ValueError("no location in external_data") + + if self.file_path is None: + if isinstance(self.tensor.device, str) and self.tensor.device.startswith("DISK:"): + self.file_path = pathlib.Path(self.tensor.device[5:]) + else: raise ValueError("onnx external_data needs the origin file path, try passing onnx file path to onnx_load") + ext_path = self.file_path.parent.joinpath(location) + if not ext_path.exists(): raise FileNotFoundError(f"external location not exists: {ext_path}") + + ext_tensor = Tensor(ext_path) + obj["raw_data"] = ext_tensor[offset:offset+length] if length is not None else ext_tensor[offset:] + obj["data_location"] = 0 + + # parse tensor + to_dtype = dtype_fallback(true_dtype := OnnxDataType(obj['data_type']).to_dtype(), "buffer parse") + shape = tuple(obj['dims']) + present_fields = [field for field in ['float_data', 'int32_data', 'int64_data', 'double_data', 'uint64_data', 'raw_data'] if field in obj] + assert len(present_fields) == 1, f"only 1 data field is allowed from {obj=}" + data = obj[present_fields[0]] + if not isinstance(data, Tensor): + obj["parsed_tensor"] = Tensor(data, dtype=to_dtype).reshape(shape) + return obj + assert isinstance(data, Tensor) and data.dtype == dtypes.uint8, data + data = data.bitcast(true_dtype).reshape(shape) + data = data.to(Device.DEFAULT) if true_dtype is to_dtype else data.to("cpu").cast(to_dtype).to(Device.DEFAULT) + # const folding + if shape == (): + if data.dtype == dtypes.float16 and sys.version_info < (3, 12): data = data.cast(dtypes.float32) + data = Tensor(data.item(), dtype=to_dtype).reshape(shape) + obj["parsed_tensor"] = data + return obj + + def _parse_AttributeProto(self) -> dict: + obj: dict[str, Any] = {"floats": [], "ints": [], "strings": []} + for fid, wire_type in self._parse_message(self._decode_end_pos()): + match fid: + case 1: obj["name"] = self.reader.read_string() + case 2: obj["f"] = self.reader.read_float() + case 3: obj["i"] = self.reader.read_int64() + case 4: obj["s"] = self.reader.read_bytes().data().tobytes().decode("utf8") + case 5: obj["t"] = self._parse_TensorProto()['parsed_tensor'] + case 6: obj["g"] = OnnxRunner._from_subgraph(self._parse_GraphProto()) + case 7: obj["floats"].append(self.reader.read_float()) + case 8: obj["ints"].append(self.reader.read_int64()) + case 9: obj["strings"].append(self.reader.read_bytes().data().tobytes().decode("utf8")) + case 20: obj["type"] = self.reader.read_int64() + case _: self.reader.skip_field(wire_type) + obj["floats"], obj["ints"], obj["strings"] = tuple(obj["floats"]), tuple(obj["ints"]), tuple(obj["strings"]) + return obj + + def _parse_ValueInfoProto(self) -> dict: + obj: dict[str, Any] = {} + for fid, wire_type in self._parse_message(self._decode_end_pos()): + match fid: + case 1: obj["name"] = self.reader.read_string() + case 2: obj["type"] = self._parse_TypeProto() + case _: self.reader.skip_field(wire_type) + + # parse type + if "type" not in obj: return {**obj, "parsed_type": None} + type_obj = obj["type"] + if is_optional := "optional_type" in type_obj: type_obj = type_obj["optional_type"]["elem_type"] + if is_sequence := "sequence_type" in type_obj: type_obj = type_obj["sequence_type"]["elem_type"] + assert "tensor_type" in type_obj, type_obj + shape_dims = type_obj['tensor_type'].get('shape', {}).get('dim', []) + obj['parsed_type'] = OnnxValue(tuple(d.get('dim_param') or d.get('dim_value') for d in shape_dims), + OnnxDataType(type_obj['tensor_type']['elem_type']).to_dtype(), is_optional, is_sequence) + return obj + + def _parse_TypeProto(self) -> dict: + obj: dict[str, Any] = {} + for fid, wire_type in self._parse_message(self._decode_end_pos()): + match fid: + case 1: obj["tensor_type"] = self._parse_TypeProtoTensor() + case 4: obj["sequence_type"] = self._parse_TypeProtoSequence() + case 9: obj["optional_type"] = self._parse_TypeProtoOptional() + case _: self.reader.skip_field(wire_type) + return obj + + def _parse_TypeProtoTensor(self) -> dict: + obj: dict[str, Any] = {} + for fid, wire_type in self._parse_message(self._decode_end_pos()): + match fid: + case 1: obj["elem_type"] = self.reader.read_int64() + case 2: obj["shape"] = self._parse_TensorShapeProto() + case _: self.reader.skip_field(wire_type) + return obj + + def _parse_TypeProtoSequence(self) -> dict: + obj = {} + for fid, wire_type in self._parse_message(self._decode_end_pos()): + match fid: + case 1: obj["elem_type"] = self._parse_TypeProto() + case _: self.reader.skip_field(wire_type) + return obj + + def _parse_TypeProtoOptional(self) -> dict: + obj = {} + for fid, wire_type in self._parse_message(self._decode_end_pos()): + match fid: + case 1: obj["elem_type"] = self._parse_TypeProto() + case _: self.reader.skip_field(wire_type) + return obj + + def _parse_TensorShapeProto(self) -> dict: + obj: dict[str, Any] = {"dim": []} + for fid, wire_type in self._parse_message(self._decode_end_pos()): + match fid: + case 1: obj["dim"].append(self._parse_TensorShapeProtoDimension()) + case _: self.reader.skip_field(wire_type) + return obj + + def _parse_TensorShapeProtoDimension(self) -> dict: + obj: dict[str, Any] = {} + for fid, wire_type in self._parse_message(self._decode_end_pos()): + match fid: + case 1: obj["dim_value"] = self.reader.read_int64() + case 2: obj["dim_param"] = self.reader.read_string() + case _: self.reader.skip_field(wire_type) + return obj + + def _parse_StringStringEntryProto(self) -> dict: + obj: dict[str, Any] = {} + for fid, wire_type in self._parse_message(self._decode_end_pos()): + match fid: + case 1: obj["key"] = self.reader.read_string() + case 2: obj["value"] = self.reader.read_string() + case _: self.reader.skip_field(wire_type) + return obj + + def _parse_OperatorSetIdProto(self) -> dict: + obj: dict[str, Any] = {} + for fid, wire_type in self._parse_message(self._decode_end_pos()): + match fid: + case 1: obj["domain"] = self.reader.read_string() + case 2: obj["version"] = self.reader.read_int64() + case _: self.reader.skip_field(wire_type) + return obj + +# ***** python const ***** +required_input_python_consts: dict[str, tuple[int, ...]] = { + "Tile": (1,), "Range": (0,1,2), "Expand": (1,), "Reshape": (1,), "Squeeze": (1,), "Unsqueeze": (1,), "Trilu": (1,), "ConstantOfShape": (0,), + "CumSum": (1,), "TopK": (1,), "Pad": (1,2,3), "MaxUnpool": (2,), "Dropout": (1,2), "CenterCropPad": (1,), "OneHot": (1,), "Compress": (1,), + "ImageDecoder": (0,), "AffineGrid": (1,), "Resize": (1,2,3), "Upsample": (1,), "Split": (1,), "Slice": (1,2,3,4), + **{"Reduce"+r: (1,) for r in ("Max", "Min", "Sum", "Mean", "SumSquare", "Prod", "L1", "L2", "LogSum", "LogSumExp")}, + **{optim: (1,) for optim in ("Adam", "Adagrad", "Momentum")} +} + +cache_misses = 0 +@functools.cache +def _cached_to_python_const(t:Tensor): + if t.dtype == dtypes.uint8: return t.data().tobytes() + if 0 in t.shape: return [] + return t.tolist() + +# Tensor -> python value cache for parameters +def to_python_const(t:Any, op:str, idx:int) -> list[ConstType]|ConstType|bytes: + if idx not in required_input_python_consts.get(op, ()) or not isinstance(t, Tensor): return t + global cache_misses + ret = _cached_to_python_const(t) + if (info := _cached_to_python_const.cache_info()).misses > cache_misses and DEBUG >= 3: + print(f"Cache miss for {t}") + cache_misses = info.misses + return ret + +# ***** runner ****** +debug = int(getenv("DEBUGONNX", "0")) +limit = int(getenv("ONNXLIMIT", "-1")) +class OnnxRunner: + """ + `OnnxRunner` executes an ONNX model using Tinygrad. + + Args: + model_path: The ONNX model, provided as a file path (a string or Path object) or a Tensor. + """ + def __init__(self, model_path: Tensor | str | pathlib.Path): + model = OnnxPBParser(model_path, load_external_data=True).parse() + self._init_from_graph(model["graph"]) + + def _init_from_graph(self, graph: dict, is_subgraph: bool = False): + self.is_training = any(n['parsed_node'].opset_id.domain in {Domain.AI_ONNX_TRAINING, Domain.AI_ONNX_PREVIEW_TRAINING} for n in graph["node"]) + self.graph_name = graph["name"] if is_subgraph else "" + self.graph_values = {"": None, **{i["name"]: i["parsed_tensor"] for i in graph["initializer"]}} + self.graph_inputs = {i["name"]: i["parsed_type"] for i in graph["input"] if i["name"] not in self.graph_values} + self.graph_outputs = tuple(o["name"] for o in graph["output"]) + self.graph_nodes = tuple(n["parsed_node"] for n in graph["node"]) + + self.old_training = Tensor.training + Tensor.training = True if self.is_training else False + + self.variable_dims: dict[str, int] = {} + self.onnx_ops = onnx_ops + + @classmethod + def _from_subgraph(cls, graph: dict) -> "OnnxRunner": + subgraph = cls.__new__(cls) + subgraph._init_from_graph(graph, is_subgraph=True) + return subgraph + + def _parse_input(self, name: str, value: Any, spec: OnnxValue): + if spec.is_optional and value is None: return None + if spec.is_sequence: + if not isinstance(value, Sequence): raise RuntimeError(f"input {name} received {value}, expected a sequence type") + sequence = [Tensor(v, dtype=spec.dtype, requires_grad=self.is_training) if not isinstance(v, Tensor) else v for v in value] + if not all_same(tuple(t.shape for t in sequence)): raise RuntimeError(f"Shapes for input {name} sequence must be homogeneous") + if not all(t.dtype is spec.dtype for t in sequence): warnings.warn(f"Dtypes for input {name} sequence aren't all {spec.dtype}") + return sequence + dtype = _from_np_dtype(value.dtype) if is_numpy_ndarray(value) else spec.dtype + tensor = Tensor(value, dtype=dtype, requires_grad=self.is_training) if not isinstance(value, Tensor) else value + if tensor.dtype is not spec.dtype: warnings.warn(f"input {name} has mismatch on dtype. Expected {spec.dtype}, received {tensor.dtype}.") + for dim, (onnx_dim, user_dim_input) in enumerate(zip(spec.shape, tensor.shape, strict=True)): + if isinstance(onnx_dim, str): + onnx_dim = self.variable_dims[onnx_dim] if onnx_dim in self.variable_dims else self.variable_dims.setdefault(onnx_dim, int(user_dim_input)) + if user_dim_input != onnx_dim: raise RuntimeError(f"input {name} has mismatch on {dim=}. Expected {onnx_dim}, received {user_dim_input}.") + return tensor + + def _select_op(self, op:str, required_opset:OpSetId) -> types.FunctionType: + if op not in self.onnx_ops: raise NotImplementedError(f"{op=} is not supported") + # return default implementation if no opset_id is specified + if isinstance(impl := self.onnx_ops[op], types.FunctionType): return impl + # match domain and select implementation with latest compatible version + eligible_ops = {impl_opset.version:impl_fxn for impl_opset,impl_fxn in impl.items() + if impl_opset.domain == required_opset.domain and impl_opset.version <= required_opset.version} + if not eligible_ops: raise NotImplementedError(f"{op=} is not supported for domain {required_opset.domain} and version {required_opset.version}") + return eligible_ops[max(eligible_ops.keys())] + + def get_empty_input_data(self, device:str|None=None, dtype:DType|None=None) -> dict[str, Tensor]: + return {name:Tensor.empty(*spec.shape, device=device, dtype=dtype or spec.dtype) for name, spec in self.graph_inputs.items()} + + def to(self, device:str|None): + self.graph_values = {k: (v.to(device) if isinstance(v, Tensor) else v) for k,v in self.graph_values.items()} + self.graph_nodes = tuple(OnnxNode(n.op, n.opset_id, tuple(n.inputs), tuple(n.outputs), + {k: (v.to(device) if isinstance(v, (Tensor, OnnxRunner)) else v) for k,v in n.opts.items()}) + for n in self.graph_nodes) + return self + + def __call__(self, inputs:dict[str, Any], debug=debug): + for name, input_spec in self.graph_inputs.items(): + if name not in inputs: raise RuntimeError(f"Please provide input data for {name}") + self.graph_values[name] = self._parse_input(name, inputs[name], input_spec) + + for num, node in enumerate(self.graph_nodes): + inps = [to_python_const(self.graph_values[name], node.op, i) for i,name in enumerate(node.inputs)] + opts = node.opts + + # provide additional opts + if node.op == "Split" and 'num_outputs' not in opts: opts['num_outputs'] = len(node.outputs) + if node.op in {"Gradient", "If"}: opts['intermediate_tensors'] = self.graph_values + + if debug >= 1: print((f"[{self.graph_name}] " if self.graph_name else "") + f"{num}: op '{node.op}' opt {opts}") + if debug >= 2 and node.inputs: print("\tinputs:\n" + "\n".join(f"\t\t{x} - {i!r}" for x,i in zip(node.inputs, inps))) + ret = self._select_op(node.op, node.opset_id)(*inps, **opts) + ret = ret if isinstance(ret, tuple) else (ret,) + if debug >= 2: print("\toutputs:\n" + "\n".join(f"\t\t{x} - {o!r}" for x,o in zip(node.outputs, ret))) + + self.graph_values.update(dict(zip(node.outputs, ret[:len(node.outputs)], strict=True))) + + if num == limit: + Tensor.training = self.old_training + return {name:self.graph_values[name] for name in node.outputs} + Tensor.training = self.old_training + return {name:self.graph_values[name] for name in self.graph_outputs} + +#################### +##### ONNX OPS ##### +#################### +def get_onnx_ops() -> dict[str, types.FunctionType|dict[OpSetId, types.FunctionType]]: + # ***** helper functions ***** + def _resolve_const(x: Sequence[ConstType]|ConstType): return get_single_element(x) if isinstance(x, Sequence) else x + + def _axes(axes, noop_with_empty_axes): return axes or ([] if noop_with_empty_axes else None) + + # (padding_top, padding_left, ..., padding_bottom, padding_right, ...) -> (padding_left, padding_right, padding_top, padding_bottom, ...) + def _onnx_pads_to_tiny_pads(pads): return tuple(flatten(reversed(list(zip(pads, pads[len(pads)//2:]))))) + + AUTO_PAD_OPTIONS = Literal["NOTSET", "SAME_UPPER", "SAME_LOWER", "VALID"] + # (padding_height, padding_width) -> (padding_top, padding_left, padding_bottom, padding_right) + def _auto_pad(pads, auto_pad: AUTO_PAD_OPTIONS): + if auto_pad == "SAME_UPPER": return [pads[i]//2 for i in range(len(pads))] + [pads[i]-pads[i]//2 for i in range(len(pads))] + return [pads[i]-pads[i]//2 for i in range(len(pads))] + [pads[i]//2 for i in range(len(pads))] + + def _resolve_pool_pads(x:Tensor, p_, k_, d_, s_, auto_pad:AUTO_PAD_OPTIONS): + if auto_pad == "VALID": return [0]*(len(k_)*2) + i_, (s_,d_,p_) = x.shape[-len(k_):], (make_tuple(x, len(k_)*2) for x in (s_, d_, p_)) + if auto_pad == "NOTSET": return _onnx_pads_to_tiny_pads(p_ if len(p_)==len(k_)*2 else p_*2) + o_ = [((i - (1 if auto_pad in ("SAME_UPPER", "SAME_LOWER") else k)) // s + 1) for i,k,s in zip(i_, k_, s_)] + return _onnx_pads_to_tiny_pads(_auto_pad([(o-1)*s+k-i for o,i,k,s in zip(o_, i_, k_, s_)], auto_pad)) + + def _clamp_cast(x:Tensor, dtype:DType): return x.clamp(dtypes.min(dtype), dtypes.max(dtype)).cast(dtype) + + def _prepare_quantize(x:Tensor, scale:Tensor, zero_point:Tensor|int, axis=1, block_size=0): + if axis < 0: axis += x.ndim + # https://github.com/onnx/onnx/blob/main/onnx/reference/ops/op_quantize_linear.py#L31 + def reshape(val:Tensor): + if val.numel() == 1: return val + if block_size == 0: return val.reshape([val.shape[0] if dim == axis else 1 for dim in range(x.ndim)]) + return val.repeat_interleave(block_size, axis) + return (reshape(scale), reshape(zero_point) if isinstance(zero_point, Tensor) else zero_point) + + def _op_integer(op, inputs:list[Tensor], zero_points:list[Tensor], **opts): + adjusted_inputs = [inp.int() - zp for inp, zp in zip(inputs, zero_points)] + return op(*adjusted_inputs, **opts) + + def _qlinearop_quantized(op, inputs:list[Tensor], zero_points:list[Tensor], scales:list[Tensor], out_scale:Tensor, out_zero_point:Tensor, **opts): + # op execution is done in quantized int + out = _op_integer(op, inputs, zero_points, **opts) + assert dtypes.is_int(out.dtype), "quantized op should've done math in int" + out_quantized = (out * prod(scales) / out_scale).round() + out_zero_point + return _clamp_cast(out_quantized, out_zero_point.dtype) + + def _qlinearop_float(op, inputs:list[Tensor], zero_points:list[Tensor], scales:list[Tensor], out_scale:Tensor, out_zero_point:Tensor, **opts): + # op execution is done in float32 + dequantized_inputs = [(inp.int() - zp) * scale for inp, zp, scale in zip(inputs, zero_points, scales)] + out = op(*dequantized_inputs, **opts) + assert dtypes.is_float(out.dtype), "op should've done math in float" + out_quantized = (out / out_scale).round() + out_zero_point + return _clamp_cast(out_quantized, out_zero_point.dtype) + + def _onnx_training(input_group_size): + def __decorator(func): + def ___wrapper(R:Tensor, T:int, *inputs:Tensor, **kwargs): + R = R.detach() + groups = len(inputs) // input_group_size + ret = [func(R, T, *inps, **kwargs) for inps in (inputs[i::groups] for i in range(groups))] + return tuple(flatten(zip(*ret))) + return ___wrapper + return __decorator + + # ***** Property/Graph Ops ***** + def If(condition:Tensor, else_branch:OnnxRunner, then_branch:OnnxRunner, intermediate_tensors:dict[str, Tensor]): + def run_branch(branch:OnnxRunner): + branch.graph_values.update(intermediate_tensors) + out = branch({k:intermediate_tensors[k] for k in branch.graph_inputs.keys()}) + # dereference intermediate tensors so Buffer can be deallocated + for k in intermediate_tensors: del branch.graph_values[k] + return out + # both branch must be ran before the condition can be evaluated + else_out, then_out = run_branch(else_branch), run_branch(then_branch) + assert len(else_out) == len(then_out), f"else_out and then_out must have the same number of outputs: {len(else_out)} != {len(then_out)}" + # can use where op when output shape is the same + if all(t.shape == e.shape for t,e in zip(then_out.values(), else_out.values())): + return tuple(condition.where(t,e) for t,e in zip(then_out.values(), else_out.values())) + # otherwise, use condition to select the output in python + cond = _resolve_const(_cached_to_python_const(condition)) + return tuple(t if cond else e for t,e in zip(then_out.values(), else_out.values())) + + def Identity(x:Tensor): return x + def Constant(sparse_value:Tensor|None=None, value:Tensor|None=None, value_float:float|None=None, value_floats:list[float]|None=None, + value_int:int|None=None, value_ints:list[int]|None=None, value_string:str|None=None, value_strings:list[str]|None=None): + if value is not None: return value + if value_float is not None: return Tensor(value_float, dtype=dtypes.float32, requires_grad=False) + if value_floats is not None: return Tensor(list(value_floats), dtype=dtypes.float32, requires_grad=False) + if value_int is not None: return Tensor(value_int, dtype=dtypes.int64, requires_grad=False) + if value_ints is not None: return Tensor(list(value_ints), dtype=dtypes.int64, requires_grad=False) + if value_string is not None or value_strings is not None or sparse_value is not None: + raise NotImplementedError('Constant OP not implemented for value_string, value_strings and sparse_value') + + def Range(start:float|int|list[float|int], limit:float|int|list[float|int], delta:float|int|list[float|int]): + return Tensor.arange(start=_resolve_const(start), stop=_resolve_const(limit), step=_resolve_const(delta)) + + def ImageDecoder(encoded_stream:bytes, pixel_format="RGB"): + try: import PIL.Image + except ImportError as e: raise ImportError("Pillow must be installed for the ImageDecoder operator") from e + img = PIL.Image.open(io.BytesIO(encoded_stream)) + if pixel_format == "BGR": return Tensor(img.tobytes(), dtype=dtypes.uint8).reshape(*img.size, 3).flip(-1) + if pixel_format == "RGB": return Tensor(img.tobytes(), dtype=dtypes.uint8).reshape(*img.size, 3) + if pixel_format == "Grayscale": return Tensor(img.convert("L").tobytes(), dtype=dtypes.uint8).reshape(*img.size, 1) + raise ValueError(f"pixel_format={pixel_format!r} is not supported.") + + def EyeLike(x:Tensor, dtype:int|None=None, k:int=0): + ret = Tensor.eye(cast(int, min(x.shape)), dtype=dtype_fallback(OnnxDataType(dtype).to_dtype(), "EyeLike op") if dtype is not None else x.dtype) + return ret if x.size(0) == x.size(1) else ret.pad(tuple(None if d == ret.size(0) else (k, d-ret.shape[0]-k) for d in x.shape)) + + def OptionalHasElement(x:Tensor|None=None): return Tensor(x is not None and x.numel() > 0) + def OptionalGetElement(x:Tensor|None=None): return x if x is not None else Tensor([]) + def ConstantOfShape(shape:list[int], value:Tensor|None=None): + if value is None: value = Tensor(0, dtype=dtypes.float32) + if shape == [0]: return Tensor([], dtype=value.dtype) + return value.expand(shape) + + def Size(data:Tensor): return data.numel() + def Shape(data:Tensor, end:int|None=None, start:int=0): return Tensor(data.shape[start:end], dtype=dtypes.int64) + + # ***** Unary Ops (math) ***** + def Not(x:Tensor): return x.logical_not() + def Clip(x: Tensor, min:Tensor|None=None, max:Tensor|None=None): return x if min is None and max is None else x.clip(min, max) # noqa: A002 # pylint: disable=redefined-builtin + def IsInf(x:Tensor, detect_negative:int=1, detect_positive:int=1): return x.isinf(bool(detect_positive), bool(detect_negative)) + + # ***** Unary Ops (activation) ***** + def softmax_1(x:Tensor, axis:int=1): return x.softmax(axis) + def softmax_13(x:Tensor, axis:int=-1): return x.softmax(axis) + Softmax = {OpSetId(Domain.ONNX, 1):softmax_1, OpSetId(Domain.ONNX, 13):softmax_13} + def HardSigmoid(x:Tensor, alpha:float=0.2, beta:float=0.5): return (alpha*x + beta).clip(0, 1) + def Gelu(x:Tensor, approximate:str|None=None): return x.gelu() if approximate == "tanh" else 0.5 * x * (1 + (x/math.sqrt(2)).erf()) + def BiasGelu(x: Tensor, bias: Tensor, approximate: str | None = None) -> Tensor: return Gelu(x + bias, approximate) + def FastGelu(x:Tensor, bias:Tensor|None=None): return (x + bias).gelu() if bias is not None else x.gelu() # this is tanh approximated + def PRelu(X:Tensor, slope:Tensor): return (X > 0).where(X, X * slope) + def LeakyRelu(X:Tensor, alpha:float=0.01): return X.leaky_relu(alpha) + def ThresholdedRelu(X:Tensor, alpha:float=1.0): return (X > alpha).where(X, 0) + def LogSoftmax(x: Tensor, axis:int=-1): return x.log_softmax(axis) + def Binarizer(x:Tensor, threshold:float=0.0): return (x > threshold).float() + + # ***** Unary Ops (broadcasted) ***** + def Add(x:Tensor,y:Tensor, broadcast=None, axis=None): return x + y + def Sub(x:Tensor|int,y:Tensor): return x - y # some test has input as int + def Div(x:Tensor,y:Tensor): return x.div(y, rounding_mode='trunc' if dtypes.is_int(x.dtype) else None) + def Less(x:Tensor,y:Tensor): return x < y + def LessOrEqual(x:Tensor,y:Tensor): return x <= y + def Greater(x:Tensor,y:Tensor): return x > y + def GreaterOrEqual(x:Tensor,y:Tensor): return x >= y + def Equal(x:Tensor,y:Tensor): return x == y + def And(x:Tensor,y:Tensor): return (x==y).where(x, False) + def Or(x:Tensor,y:Tensor): return (x==y).where(x, True) + def Xor(x:Tensor,y:Tensor): return x.bool().bitwise_xor(y.bool()) + def BitwiseAnd(x:Tensor,y:Tensor): return x & y + def BitwiseOr(x:Tensor,y:Tensor): return x | y + def BitwiseXor(x:Tensor,y:Tensor): return x ^ y + def BitwiseNot(x:Tensor): return ~x + def Mod(x:Tensor,y:Tensor,fmod=0): return x - x.div(y, rounding_mode="trunc") * y if fmod else x % y + + # ***** Casting Ops ***** + # TODO: saturate + def Cast(x:Tensor, to:int, saturate:int=1): return x.cast(dtype_fallback(OnnxDataType(to).to_dtype(), "Cast op")) + def CastLike(x:Tensor, target_type:Tensor, saturate:int=1): return x.cast(target_type.dtype) + + # ***** Reduce Ops ***** + def Max(*data_0:Tensor): return functools.reduce(Tensor.maximum, data_0) + def Min(*data_0:Tensor): return functools.reduce(Tensor.minimum, data_0) + def Sum(*data_0:Tensor): return functools.reduce(Tensor.add, data_0) + def Mean(*data_0:Tensor): return Sum(*data_0) / len(data_0) + def ReduceMax(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): + return data.max(_axes(axes, noop_with_empty_axes), keepdim=keepdims) + def ReduceMin(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): + return data.min(_axes(axes, noop_with_empty_axes), keepdim=keepdims) + def ReduceSum(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): + return data.sum(_axes(axes, noop_with_empty_axes), keepdim=keepdims) + def ReduceMean(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): + return data.mean(_axes(axes, noop_with_empty_axes), keepdim=keepdims) + def ReduceSumSquare(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): + return ReduceSum(data.square(), axes, keepdims, noop_with_empty_axes) + def ReduceProd(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): + return data.prod(_axes(axes, noop_with_empty_axes), keepdim=keepdims) + def ReduceL1(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): + return ReduceSum(data.abs(), axes, keepdims, noop_with_empty_axes) + def ReduceL2(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): + return ReduceSumSquare(data, axes, keepdims, noop_with_empty_axes).sqrt() + def ReduceLogSum(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): + return ReduceSum(data, axes, keepdims, noop_with_empty_axes).log() + def ReduceLogSumExp(data:Tensor, axes:list[int]|None=None, keepdims:int=1, noop_with_empty_axes:int=0): + return ReduceSum(data.exp(), axes, keepdims, noop_with_empty_axes).log() + def ArgMax(x:Tensor, axis:int=0, keepdims:int=1, select_last_index:int=0): + if select_last_index: return ((x.shape[axis]-1) - x.flip(axis).argmax(axis, keepdim=keepdims)).cast(dtypes.int64) + return x.argmax(axis, keepdim=keepdims).cast(dtypes.int64) + def ArgMin(x, axis:int=0, keepdims:int=1, select_last_index:int=0): + return ArgMax(-x, axis=axis, keepdims=keepdims, select_last_index=select_last_index) + + # ***** Movement Ops ***** + def Reshape(data:Tensor, shape:list[int], allowzero:int=0): + return data.reshape([x if x != 0 else (0 if allowzero else data.shape[i]) for i,x in enumerate(shape)]) + def Flatten(x:Tensor, axis:int=1): return x.reshape(prod(x.shape[0:axis]), -1) + def Expand(x:Tensor, shape:list[int]): return x.expand(_broadcast_shape(x.shape, tuple(shape))) + def Shrink(x:Tensor, bias:float=0.0, lambd:float=0.5): return (x < -lambd)*(x+bias) + (x > lambd)*(x-bias) + def Transpose(x:Tensor, perm:list[int]|None=None): return x.permute(order=perm or list(range(x.ndim)[::-1])) + + def Squeeze(data:Tensor, axes:list[int]|None=None): + return data.squeeze() if axes is None else functools.reduce(lambda d, dim: d.squeeze(dim), sorted(axes, reverse=True), data) + def Unsqueeze(data:Tensor, axes:list[int]): return functools.reduce(lambda d, dim: d.unsqueeze(dim), sorted(axes), data) + + def Tile(x:Tensor, repeats:list[int]): return x.repeat(repeats) + def Concat(*xs:Tensor, axis:int): return Tensor.cat(*xs, dim=axis) + def Slice(data:Tensor, starts:list[int], ends:list[int], axes:list[int]|None=None, steps:list[int]|None=None): + axes = axes or list(range(data.ndim)) + steps = steps or [1]*data.ndim + slices = [slice(0,x,1) for x in data.shape] + for i, axis in enumerate(axes): slices[axis] = slice(starts[i], ends[i], steps[i]) + return data[tuple(slices)] + + def Split(data:Tensor, split:list[int]|None=None, num_outputs:int=0, axis:int=0): + sz = data.shape[axis] + if split is None: split = [sz // num_outputs + (1 if i < sz % num_outputs else 0) for i in range(num_outputs)] + return data.split(split, axis) + + def Pad(x:Tensor, pads:list[int], constant_value:ConstType|None=None, axes:list[int]|None=None, + mode:Literal["constant", "reflect", "edge", "wrap"]="constant", value=0): + value = constant_value or value + axes = axes or list(range(x.ndim)) + real_pads = [0] * (x.ndim*2) + for i,axis in enumerate(axes): real_pads[axis%x.ndim], real_pads[axis%x.ndim+x.ndim] = pads[i], pads[i+len(axes)] + return x.pad(padding=_onnx_pads_to_tiny_pads(real_pads), mode={"edge":"replicate", "wrap":"circular"}.get(mode, mode), value=value) + + def CenterCropPad(t:Tensor, shape:list[int], axes:list[int]|None=None): + shrink_arg:list[None|tuple[int,int]] = [None] * t.ndim + pad_arg:list[None|tuple[int,int]] = [None] * t.ndim + for s, x in zip(shape, axes or range(t.ndim)): + tx = t.shape[x] + if s < tx: shrink_arg[x] = (tx//2 - (s+1)//2, tx//2 + s//2) + elif s > tx: pad_arg[x] = ((s-tx)//2, (s-tx+1)//2) + return t.shrink(tuple(shrink_arg)).pad(tuple(pad_arg)) + + # ***** Processing Ops ***** + def AveragePool(X: Tensor, kernel_shape:list[int], auto_pad:AUTO_PAD_OPTIONS="NOTSET", ceil_mode:int=0, count_include_pad:int=0, + dilations:list[int]|int=1, pads:list[int]|int=0, strides:list[int]|int=1): + pool_pads = _resolve_pool_pads(X, pads, kernel_shape, dilations, strides, auto_pad) + return X.avg_pool2d(tuple(kernel_shape), strides, dilations, pool_pads, ceil_mode=ceil_mode, count_include_pad=count_include_pad) + + def MaxPool(X: Tensor, kernel_shape:list[int], auto_pad:AUTO_PAD_OPTIONS="NOTSET", ceil_mode:int=0, dilations:list[int]|int=1, pads:list[int]|int=0, + storage_order:int=0, strides:list[int]|int=1): + pool_pads = _resolve_pool_pads(X, pads, kernel_shape, dilations, strides, auto_pad) + out = X.max_pool2d(tuple(kernel_shape), strides, dilations, pool_pads, ceil_mode=ceil_mode, return_indices=True) + ret, idx = cast(tuple[Tensor, Tensor], out) + return ret, idx.transpose(-2, -1).cast(dtypes.int64) if storage_order else idx.cast(dtypes.int64) + + def Conv(X: Tensor, W: Tensor, B:Tensor|None=None, auto_pad:AUTO_PAD_OPTIONS="NOTSET", dilations:list[int]|int=1, group:int=1, + kernel_shape:list[int]|None=None, pads:list[int]|int=0, strides:list[int]|int=1): + return X.conv2d(W, B, stride=strides, groups=group, dilation=dilations, + padding=_resolve_pool_pads(X, pads, kernel_shape or W.shape[2:], dilations, strides, auto_pad)) + + def ConvTranspose(X: Tensor, W: Tensor, B:Tensor|None=None, auto_pad:AUTO_PAD_OPTIONS="NOTSET", dilations:list[int]|int=1, group:int=1, + kernel_shape:list[int]|None=None, pads:list[int]|None=None, output_shape:list[int]|None=None, output_padding:list[int]|int=0, + strides:list[int]|int=1): + input_shape_, kernel_shape_ = X.shape[2:], (kernel_shape or W.shape[2:]) + strides_, dilations_, output_padding_ = (make_tuple(x, len(input_shape_)) for x in (strides, dilations, output_padding)) + if output_shape is not None: # we pad according to output_shape + pads = _auto_pad([s_*(i-1) + op_ + ((k_-1)*d_+1) - os for s_,i,op_,k_,d_,os in + zip(strides_, input_shape_, output_padding_, kernel_shape_, dilations_, output_shape)], auto_pad) + if pads is None: # we generate pads + output_shape = output_shape or [X.shape[i+2] * strides_[i] for i in range(len(strides_))] + pads = [strides_[i]*(input_shape_[i]-1)+output_padding_[i]+((kernel_shape_[i]-1)*dilations_[i]+1)-output_shape[i] + for i in range(len(input_shape_))] + pads = _auto_pad(pads, auto_pad) if auto_pad != "NOTSET" else [0] * len(input_shape_) * 2 + pads = _onnx_pads_to_tiny_pads(pads) + return X.conv_transpose2d(W, B, group, strides_, dilations_, pads, output_padding_) + + def MaxUnpool(xT: Tensor, xI: Tensor, outshape: list[int]|None=None, kernel_shape:list[int]|None=None, pads:list[int]|int=0, + strides:list[int]|int=1): + if kernel_shape is None: kernel_shape = [] + pads_: int | tuple[int, ...] = tuple(pads) if isinstance(pads, list) else pads + return Tensor.max_unpool2d(xT, xI, tuple(kernel_shape), strides, 1, pads_, outshape if outshape is None else tuple(outshape)) + + def GlobalAveragePool(X:Tensor): return X.mean(axis=tuple(range(2, X.ndim)), keepdim=True) + def GlobalMaxPool(X:Tensor): return X.max(axis=tuple(range(2, X.ndim)), keepdim=True) + + def Gemm(A:Tensor, B:Tensor, C:Tensor|None=None, alpha:float=1.0, beta:float=1.0, transA:int=0, transB:int=0, broadcast=0): + ret = alpha * (A.transpose(transA) @ B.transpose(transB)) + if C is not None: ret = ret + beta * (C if broadcast == 0 else C.reshape([-1 if i < len(C.shape) else 1 for i in range(ret.ndim)][::-1])) + return ret + + def Einsum(*Inputs:list[Tensor], equation:str): return Tensor.einsum(equation, *Inputs) + + def CumSum(X:Tensor, axis:int|list[int], exclusive:int=0, reverse:int=0): + axis = X._resolve_dim(_resolve_const(axis)) + if reverse: X = X.flip(axis) + if exclusive: X = X.pad(tuple((1,0) if i == axis else None for i in range(X.ndim)))\ + .shrink(tuple((0,X.shape[axis]) if i == axis else None for i in range(X.ndim))) + return X.cumsum(axis).flip(axis) if reverse else X.cumsum(axis) + + def Trilu(x:Tensor, k:int|list[int]=0, upper:int=1): + k_ = _resolve_const(k) + return x.triu(k_) if upper else x.tril(k_) + + def Resize(X:Tensor, roi:list[float]|None=None, scales:list[float]|None=None, sizes:list[int]|None=None, antialias:int=0, + axes:list[int]|None=None, coordinate_transformation_mode:str='half_pixel', cubic_coeff_a:float=-0.75, exclude_outside:int=0, + extrapolation_value:float=0.0, keep_aspect_ratio_policy:str='stretch', mode:str='nearest', nearest_mode:str='round_prefer_floor'): + def _apply_transformation(input_sz, output_sz, scale_dim, mode): + index = Tensor.arange(output_sz, requires_grad=False, device=X.device) + if mode == "half_pixel": return (index + 0.5) / scale_dim - 0.5 + if mode == "align_corners": return index * (input_sz - 1) / (output_sz - 1) if output_sz != 1 else Tensor.zeros_like(index) + if mode == "asymmetric": return index / scale_dim + if mode == "pytorch_half_pixel": return ((index + 0.5) / scale_dim - 0.5) if output_sz != 1 else Tensor.zeros_like(index) + if mode == "half_pixel_symmetric": + output_dim_scaled = input_sz * scale_dim + return (input_sz / 2) * (1 - (output_sz / output_dim_scaled)) + (index + 0.5) / scale_dim - 0.5 + raise ValueError(f"invalid {coordinate_transformation_mode=}") + + if antialias: raise NotImplementedError("antialias is not implemented") + axes = axes or list(range(X.ndim)) + perm = [a for a in range(len(X.shape)) if a not in axes] + list(axes) + # we pre-permute the axes and permute back after resize + # the permute aligns X's axes to scales, sizes, and roi + X = X.permute(*perm) + + input_shape = cast(tuple[int, ...], X.shape[2:]) + if scales is not None: assert all(sc==1 for sc in scales[:-len(input_shape)]), "resizing batch_size dim or channel dim not supported" + if sizes is not None: assert tuple(sizes[:-2]) == tuple(X.shape[X.ndim-len(sizes):-2]), "resizing batch_size dim or channel dim not supported" + + scales, sizes = (None if scales is None else scales[-len(input_shape):]), (None if sizes is None else sizes[-len(input_shape):]) + if sizes is not None: + if keep_aspect_ratio_policy in ["not_larger", "not_smaller"]: + scale_fxn = min if keep_aspect_ratio_policy == "not_larger" else max + scale = scale_fxn(sz / sh for sz,sh in zip(sizes, input_shape)) + sizes, scales = [int(scale * sh + 0.5) for sh in input_shape], [scale]*len(input_shape) + else: scales = [sz / sh for sz, sh in zip(sizes, input_shape)] + else: + assert scales is not None, "either sizes or scales must be provided" + sizes = [int(sc * sh) for sc, sh in zip(scales, input_shape)] + + if all(sz == sh for sz, sh in zip(sizes, input_shape)): return X.permute(*argsort(perm)) if perm else X + + indexes = [] + for input_sz, output_sz, scale in zip(input_shape, sizes, scales): + indexes.append(_apply_transformation(input_sz, output_sz, scale, coordinate_transformation_mode)) + + if mode in ["nearest", "linear"]: indexes = [idx.clip(0, sz-1) for idx, sz in zip(indexes, input_shape)] + + if mode == "nearest": + mode_operations = { + "round_prefer_floor": lambda idx: (idx - 0.5).ceil(), + "round_prefer_ceil": lambda idx: (idx + 0.5).floor(), + "floor": lambda idx: idx.floor(), + "ceil": lambda idx: idx.ceil() + } + if nearest_mode not in mode_operations: raise ValueError(f"invalid {nearest_mode=}") + indexes = [mode_operations[nearest_mode](idx).int() for idx in indexes] + X = X[(..., *Tensor.meshgrid(*indexes))] + + if mode == "linear": + expand = list(X.shape) + for i in range(-len(sizes), 0): + reshape, index = [1] * X.ndim, indexes[i] + reshape[i] = expand[i] = sizes[i] + low, high, perc = [y.reshape(reshape).expand(expand) for y in (index.floor().int(), index.ceil().int(), index - index.floor())] + X = X.gather(i, low).lerp(X.gather(i, high), perc) + + if mode == "cubic": + A = cubic_coeff_a + + # Keys weights + # see piecewise function in: https://en.wikipedia.org/wiki/Bicubic_interpolation#Bicubic_convolution_algorithm + def W0_1(x:Tensor): return polyN(x, [A + 2, -(A + 3), 0, 1]) + def W1_2(x: Tensor): return polyN(x, [A, -5 * A, 8 * A, -4 * A]) + + expand = list(X.shape) + for i in range(-len(sizes), 0): + input_sz = cast(int, X.shape[i]) + reshape, index = [1] * X.ndim, indexes[i] + reshape[i] = expand[i] = sizes[i] + + p = index.floor().int() + ratio = index - p # in [0, 1] + + # Neighbor indices + idx0, idx1, idx2, idx3 = [p + d for d in [-1, 0, 1, 2]] + # Weights of distance from index and neighbor indices + c0, c1, c2, c3 = W1_2(ratio+1), W0_1(ratio), W0_1(-(ratio-1)), W1_2(-(ratio-2)) + + if exclude_outside: + c0 = ((idx0 >= 0) & (idx0 < input_sz)).where(c0, 0) + c1 = ((idx1 >= 0) & (idx1 < input_sz)).where(c1, 0) + c2 = ((idx2 >= 0) & (idx2 < input_sz)).where(c2, 0) + c3 = ((idx3 >= 0) & (idx3 < input_sz)).where(c3, 0) + + total = c0 + c1 + c2 + c3 + c0, c1, c2, c3 = c0 / (total + 1e-9), c1 / (total + 1e-9), c2 / (total + 1e-9), c3 / (total + 1e-9) + + # Reshape and expand + expanded_indices = [y.clip(0, input_sz - 1).reshape(reshape).expand(expand) for y in [idx0, idx1, idx2, idx3]] + expanded_coeffs = [y.reshape(reshape).expand(expand) for y in [c0, c1, c2, c3]] + + # Gather values and apply coefficients + gathered_values = [X.gather(i, idx) for idx in expanded_indices] + X = sum(v * c for v, c in zip(gathered_values, expanded_coeffs)) + return X.permute(*argsort(perm)) if perm else X + def Upsample(X, scales, mode): return Resize(X=X, scales=scales, mode=mode) # deprecated + + def TopK(X:Tensor, K:int|list[int], axis:int=-1, largest:int=1, sorted:int=1): # noqa: A002 # pylint: disable=redefined-builtin + val, idx = X.topk(_resolve_const(K), axis, bool(largest), bool(sorted)) + return val, idx.cast(dtypes.int64) + + # ***** Neural Network Ops ***** + def BatchNormalization(X:Tensor, scale:Tensor, B:Tensor, input_mean:Tensor, input_var:Tensor, epsilon:float=1e-05, momentum:float=0.9, + training_mode:int=0, spatial=1, is_test=0): + if training_mode: + x_detached = X.detach() + current_mean = x_detached.mean(axis=(0,2,3)) + y = (x_detached - current_mean.reshape(shape=[1, -1, 1, 1])) + current_var = (y*y).mean(axis=(0,2,3)) + current_invstd = current_var.add(epsilon).rsqrt() + + running_mean = input_mean * momentum + current_mean * (1 - momentum) + running_var = input_var * momentum + current_var * (1 - momentum) + + return X.batchnorm(scale, B, current_mean, current_invstd), running_mean, running_var + return X.batchnorm(scale, B, input_mean, (input_var + epsilon).rsqrt()) + def GroupNormalization(x:Tensor, scale:Tensor, bias:Tensor, num_groups:int, epsilon:float=1e-05): + x = x.reshape(x.shape[0], num_groups, -1).layernorm(eps=epsilon).reshape(x.shape) + return x * scale.reshape(1, -1, *[1] * (x.ndim-2)) + bias.reshape(1, -1, *[1] * (x.ndim-2)) + def InstanceNormalization(x:Tensor, scale:Tensor, bias:Tensor, epsilon:float=1e-05): + return GroupNormalization(x, scale, bias, num_groups=cast(int, x.shape[1]), epsilon=epsilon) + def LayerNormalization(x:Tensor, scale:Tensor, bias:Tensor, axis:int=-1, epsilon:float=1e-05, stash_type:int=1): + assert stash_type == 1, "only float32 is supported" + axes = tuple(i for i in range(axis if axis >= 0 else x.ndim + axis, x.ndim)) + mean = x.mean(axis=axes, keepdim=True) + return x.layernorm(axes, epsilon).mul(scale).add(bias), mean, (x.sub(mean)).square().mean(axis=axes, keepdim=True).add(epsilon).rsqrt() + def SkipLayerNormalization(x:Tensor, skip:Tensor, gamma:Tensor, beta:Tensor|None=None, bias:Tensor|None=None, epsilon:float=1e-12): + x = x + skip + if bias is not None: x = x + bias + ret = x.layernorm(eps=epsilon) * gamma + if beta is not None: ret = ret + beta + return ret, None, None, x + def EmbedLayerNormalization(input_ids: Tensor, segment_ids:Tensor, word_embedding:Tensor, position_embedding:Tensor, + segment_embedding:Tensor, gamma=None, beta=None, mask:Tensor|None=None, + position_ids:Tensor|None=None, epsilon=1e-12, mask_index_type=0): + # https://github.com/microsoft/onnxruntime/blob/main/docs/ContribOperators.md#com.microsoft.EmbedLayerNormalization + assert (segment_ids is None) is (segment_embedding is None) + assert mask is None and not mask_index_type, "functionality not supported yet" # TODO + input_shape = input_ids.shape + seq_length = input_shape[1] + compute_seg_emb = (segment_embedding is not None and segment_ids is not None) + vocab_size, max_position_embeddings = word_embedding.shape[0], position_embedding.shape[0] + type_vocab_size = (segment_embedding.shape[0] if compute_seg_emb else None) + + def embedding(x:Tensor, vocab_size, weight:Tensor) -> Tensor: + return x.unsqueeze(-1).expand(*x.shape, vocab_size)._one_hot_along_dim(vocab_size) @ weight + + # bert embedding layer + if position_ids is None: position_ids = Tensor.arange(seq_length, requires_grad=False).unsqueeze(0).expand(*input_shape) + wrd_embedding_res = embedding(input_ids, vocab_size, word_embedding) + pos_embedding_res = embedding(position_ids, max_position_embeddings, position_embedding) + seg_embedding_res = embedding(segment_ids, type_vocab_size, segment_embedding) if compute_seg_emb else None + + embedding_sum = wrd_embedding_res + pos_embedding_res + if seg_embedding_res is not None: embedding_sum = embedding_sum + seg_embedding_res + out = embedding_sum.layernorm(eps=epsilon) * gamma + beta + return out, None, embedding_sum + def MeanVarianceNormalization(x:Tensor, axis:list[int]|None=None): + if axis is None: axis = [0,2,3] + return (x - x.mean(axis, keepdim=True)) / (x.std(axis, keepdim=True, correction=0) + 1e-9) + + def OneHot(indices:Tensor, depth:float|int|list[int|float], values:Tensor, axis:int=-1): + # Scalar or Rank 1 tensor containing exactly one element + depth = int(_resolve_const(depth)) + indices = indices.int() + indices = (indices < 0).where(indices+depth, indices) + return indices.unsqueeze(axis)._one_hot_along_dim(depth, dim=axis).where(values[1], values[0]) + + def DepthToSpace(X:Tensor, blocksize:int, mode:str="DCR"): + return X.rearrange("b (c h1 w1) h w -> b c (h h1) (w w1)" if mode=="CRD" else "b (h1 w1 c) h w -> b c (h h1) (w w1)", h1=blocksize, w1=blocksize) + def SpaceToDepth(X:Tensor, blocksize:int): + return X.rearrange("b c (h h1) (w w1) -> b (h1 w1 c) h w", h1=blocksize, w1=blocksize) + + # Reimplemented here because you need legacy RNG for passing ONNX tests. + def dropout_7(data:Tensor, ratio:float=0.5, training_mode:bool=False, seed:int|None=None): + import numpy as np + if not training_mode: return data, data.full_like(True, dtype=dtypes.bool) + if seed is not None: + rand = Tensor(np.random.RandomState(seed).random(cast(tuple[int,...], data.shape)), requires_grad=False, dtype=data.dtype, device=data.device) + else: + rand = data.rand_like(requires_grad=False) + mask = rand >= ratio + return data * mask / (1.0 - ratio), mask + # 6 with 'is_test' needed for https://github.com/MTlab/onnx2caffe/raw/refs/heads/master/model/MobileNetV2.onnx + def dropout_6(data:Tensor, ratio:float=0.5, is_test=0): return dropout_7(data, ratio, training_mode=not is_test) + Dropout = {OpSetId(Domain.ONNX, 6):dropout_6, OpSetId(Domain.ONNX, 7):dropout_7} + + def LRN(x:Tensor, size:int, alpha:float=1e-4, beta:float=0.75, bias:float=1.0): + pooled_x = (x**2).rearrange('b c h w -> b 1 c (h w)').pad((0,0,(size-1)//2, size//2)).avg_pool2d((size, 1), 1) + return x / (pooled_x.reshape(x.shape) * alpha + bias).pow(beta) + + def NegativeLogLikelihoodLoss(x:Tensor, target:Tensor, weight:Tensor|None=None, ignore_index:int|None=None, reduction:ReductionStr="mean"): + return x.nll_loss(target, weight, ignore_index, reduction) + def SoftmaxCrossEntropyLoss(scores:Tensor, labels:Tensor, weights:Tensor|None=None, ignore_index:int|None=None, reduction:ReductionStr="mean"): + log_probs = scores.log_softmax(1) + return log_probs.nll_loss(labels, weights, ignore_index, reduction), log_probs + + def AffineGrid(theta:Tensor, size:list[int], align_corners:int=0): + N, _, *spatial_dims = size + def generate_grid(steps): + if align_corners: return Tensor.linspace(-1, 1, steps, device=theta.device) + return Tensor.linspace(-1+1/steps, 1-1/steps, steps, device=theta.device) + grids = Tensor.meshgrid(*(generate_grid(d) for d in spatial_dims)) + base_grid = Tensor.stack(*reversed(grids), Tensor.ones_like(grids[0], device=theta.device), dim=-1) + base_grid = base_grid.reshape(1, prod(spatial_dims), len(grids)+1).expand(N, -1, -1) + return (base_grid @ theta.transpose(1, 2)).reshape(N, *spatial_dims, -1) + + def attention_contrib(x:Tensor, weights:Tensor, bias:Tensor|None=None, mask_index:Tensor|None=None, past:Tensor|None=None, + attention_bias:Tensor|None=None, past_sequence_length:Tensor|None=None, do_rotary:int=0, mask_filter_value:float=-10000.0, + num_heads:int|None=None, past_present_share_buffer:int|None=None, qkv_hidden_sizes:list[int]|None=None, + rotary_embedding_dim:int|None=None, scale:float|None=None, unidirectional:int=0): + assert not do_rotary and not attention_bias, "TODO" + if qkv_hidden_sizes is None: qkv_hidden_sizes = [weights.shape[1] // 3] * 3 + qkv = x.linear(weights, bias) + q, k, v = qkv.split(qkv_hidden_sizes, dim=2) + + batch_size, seq_len, _ = x.shape + assert num_heads is not None, "num_heads must be provided" + q_head_size, k_head_size, v_head_size = (sz // num_heads for sz in qkv_hidden_sizes) + q, k, v = (x.reshape(batch_size, seq_len, num_heads, hsz).transpose(1, 2) for x, hsz in zip((q, k, v), (q_head_size, k_head_size, v_head_size))) + + present = None + if past is not None: + k, v = past[0].cat(k, dim=2), past[1].cat(v, dim=2) + present = k.stack(v) + + if scale is None: scale = 1.0 / math.sqrt(q_head_size) + attn_scores = q @ k.transpose(-1, -2) * scale + + if mask_index is not None: + assert 4 >= mask_index.ndim >= 1, f"{mask_index.ndim=}" + assert isinstance(batch_size, int), f"{batch_size=}" + if mask_index.ndim != 1: mask = mask_index.bool() + else: + if mask_index.shape[0] == batch_size: + mask = Tensor.arange(attn_scores.shape[-1], requires_grad=False, device=mask_index.device).unsqueeze(0) < mask_index.unsqueeze(1) + elif mask_index.shape[0] == 2*batch_size: + end_positions = mask_index[:batch_size] + start_positions = mask_index[batch_size:] + arange = Tensor.arange(seq_len).unsqueeze(0) + mask = (arange < end_positions.unsqueeze(1)) & (arange >= start_positions.unsqueeze(1)) + else: raise NotImplementedError("mask_index with shape (3 * batch_size + 2) is not implemented") + while mask.ndim < 4: mask = mask.unsqueeze(1) + attn_scores = mask.where(attn_scores, mask_filter_value) + + if unidirectional: + causal_mask = Tensor.ones((seq_len, seq_len), dtype=dtypes.bool).tril() + attn_scores = causal_mask.where(attn_scores, mask_filter_value) + + output = attn_scores.softmax(-1) @ v + output = output.transpose(1, 2).reshape(batch_size, seq_len, -1) + return output, present + + def attention_onnx(Q:Tensor, K:Tensor, V:Tensor, attn_mask:Tensor|None=None, past_key:Tensor|None=None, past_value:Tensor|None=None, + is_causal:int=0, kv_num_heads:int|None=None, q_num_heads:int|None=None, qk_matmul_output_mode:int=0, scale:float|None=None, + softcap:float=0.0, softmax_precision:int|None=None): + input_shape_len = Q.ndim + if input_shape_len == 3: + assert q_num_heads is not None and kv_num_heads is not None + Q = Q.reshape(Q.shape[0], q_num_heads, Q.shape[1], -1) + K = K.reshape(K.shape[0], kv_num_heads, K.shape[1], -1) + V = V.reshape(V.shape[0], kv_num_heads, V.shape[1], -1) + + if past_key is not None: K = past_key.cat(K, dim=2) + if past_value is not None: V = past_value.cat(V, dim=2) + present_key, present_value = K, V + + _q_heads, _kv_heads = q_num_heads or Q.shape[1], kv_num_heads or K.shape[1] + if _q_heads != _kv_heads: + K = K.repeat((1, _q_heads // _kv_heads, 1, 1)) + V = V.repeat((1, _q_heads // _kv_heads, 1, 1)) + + effective_scale = scale if scale is not None else 1.0 / (cast(int, Q.shape[-1]) ** 0.5) + scores = (Q @ K.transpose(-1, -2)) * effective_scale + qk_matmul_return_val = scores + + if is_causal: + causal_mask = Tensor.ones(Q.shape[-2], K.shape[-2], device=Q.device, dtype=dtypes.bool, requires_grad=False).tril(0) + scores = scores.masked_fill(causal_mask.logical_not(), -float("inf")) + + if attn_mask is not None: + mask_to_add = attn_mask.where(0, -float("inf")) if attn_mask.dtype == dtypes.bool else attn_mask + scores = scores + mask_to_add + if qk_matmul_output_mode == 1: qk_matmul_return_val = scores + + if softcap > 0.0: scores = (scores / softcap).tanh() * softcap + if qk_matmul_output_mode == 2: qk_matmul_return_val = scores + + if softmax_precision: scores = scores.cast({1: dtypes.float32, 10: dtypes.float16, 16: dtypes.bfloat16}[softmax_precision]) + qk_softmax = scores.softmax(-1).cast(Q.dtype) + if qk_matmul_output_mode == 3: qk_matmul_return_val = qk_softmax + + output = (qk_softmax @ V).cast(Q.dtype) + if input_shape_len == 3: output = output.permute(0, 2, 1, 3).reshape(Q.shape[0], Q.shape[2], -1) + return output, present_key, present_value, qk_matmul_return_val + Attention = {OpSetId(Domain.ONNX, 1): attention_onnx, OpSetId(Domain.MICROSOFT_CONTRIB_OPS, 1): attention_contrib} + + def RMSNormalization(X:Tensor, scale:Tensor, axis:int=-1, epsilon:float=1e-5): + norm = X.square().mean(axis=tuple(range(axis + X.ndim if axis < 0 else axis, X.ndim)), keepdim=True).add(epsilon).rsqrt() + return X * norm * scale + + def RotaryEmbedding(X:Tensor, cos_cache:Tensor, sin_cache:Tensor, position_ids:Tensor|None=None, interleaved:int=0, num_heads:int|None=None, + rotary_embedding_dim:int=0): + original_input_shape = X.shape + + if X.ndim == 4: X = X.permute(0, 2, 1, 3) + elif X.ndim == 3: + assert num_heads is not None, "num_heads must be provided for 3D input" + X = X.unflatten(-1, (num_heads, X.shape[-1] // num_heads)) + + head_size = cast(int, X.shape[-1]) + rot_dim = rotary_embedding_dim or head_size + x_rotate, x_pass = X[..., :rot_dim], X[..., rot_dim:] + + cos = cos_cache[position_ids] if position_ids is not None else cos_cache[:head_size] + sin = sin_cache[position_ids] if position_ids is not None else sin_cache[:head_size] + cos = cos[..., :rot_dim//2].unsqueeze(2) + sin = sin[..., :rot_dim//2].unsqueeze(2) + + x1, x2 = (x_rotate[..., ::2], x_rotate[..., 1::2]) if interleaved else x_rotate.chunk(2, dim=-1) + real = x1 * cos - x2 * sin + imag = x1 * sin + x2 * cos + x_rotated = real.stack(imag, dim=-1).flatten(start_dim=-2) if interleaved else real.cat(imag, dim=-1) + + output = x_rotated.cat(x_pass, dim=-1) + return output.flatten(start_dim=2) if len(original_input_shape) == 3 else output.permute(0, 2, 1, 3) + + # ***** Indexing Ops ***** + def ArrayFeatureExtractor(x:Tensor, indices:Tensor): return x[..., indices] + + def Gather(x:Tensor, indices:Tensor, axis:int=0): + if indices.numel() < 9: # NOTE lessor kernels for smaller indices but kernel number increases depending on size of indices + ret_shape = x.shape[:axis] + indices.shape + x.shape[axis+1:] + if indices.ndim > 1: indices = indices.flatten() + index_consts = [_cached_to_python_const(indices)] if indices.shape == () else _cached_to_python_const(indices) + index_consts = [x.shape[axis]+i if i<0 else i for i in index_consts] + args = [[(0,x) if j != axis else (i,i+1) for j, x in enumerate(x.shape)] for i in index_consts] + return x.shrink(arg=tuple(args[0])).cat(*[x.shrink(arg=tuple(arg)) for arg in args[1:]], dim=axis).reshape(ret_shape) + # NOTE faster gather, fixed number of kernels, but exceeds limited kernels for openpilot + return x[tuple([slice(None) if i != axis else indices for i in range(x.ndim)])] + def Scatter(*args, **kwargs): return ScatterElements(*args, **kwargs) # deprecated + + def GatherND(x:Tensor, indices:Tensor, batch_dims:int=0): + if batch_dims == 0: return x[tuple(i.squeeze(-1) for i in indices.split(1, -1))] + x_shape, i_shape = x.shape, indices.shape + b = math.prod(x.shape[dim] for dim in range(batch_dims)) + # NOTE: each batched dim of both input and indices are equal + x = x.reshape(b, *x.shape[batch_dims:]) + indices = indices.reshape(b, *indices.shape[batch_dims:]) + b_idx = Tensor.arange(b, device=x.device).reshape(b, *(1,)*(indices.ndim - 2)).expand(*indices.shape[:-1]) + ret = x[(b_idx,) + tuple(i.squeeze(-1) for i in indices.split(1, -1))] + return ret.reshape(*x_shape[:batch_dims], *i_shape[batch_dims:-1], *ret.shape[indices.ndim-1:]) + def ScatterND(x:Tensor, indices:Tensor, updates:Tensor, reduction:Literal["none", "add", "mul"]='none'): + assert updates.shape == indices.shape[:-1] + x.shape[cast(int, indices.shape[-1]):] + x = x.contiguous() + for index, u in zip(indices.split(1, 0), updates.split(1, 0)): + i = tuple(idx.squeeze(-1) for idx in index.squeeze(0).split(1, -1)) + u = u.squeeze(0) + if reduction == "none": x[i] = u + elif reduction == "add": x[i] += u + elif reduction == "mul": x[i] *= u + else: raise NotImplementedError("reduction doesn't support max or min") + return x + + def ScatterElements(x: Tensor, indices: Tensor, updates: Tensor, axis=0, reduction:Literal["none", "add", "mul", "min", "max"]="none"): + indices = (indices < 0).where(x.shape[axis], 0) + indices + if reduction == "none": return x.scatter(axis, indices, updates) + reduction_ = cast(Literal["sum", "prod", "amin", "amax"], {"add": "sum", "mul": "prod", "min": "amin", "max": "amax"}[reduction]) + return x.scatter_reduce(axis, indices, updates, reduction_) + def GatherElements(x:Tensor, indices:Tensor, axis:int): + indices = (indices < 0).where(x.shape[axis], 0) + indices + return x.gather(axis, indices) + + def Compress(inp:Tensor, condition:list[bool], axis:int|None=None): + if axis is None: + inp = inp.flatten() + axis = 0 + axis = inp._resolve_dim(axis) + con = Tensor([i for i,cond in enumerate(condition) if cond]) # compress in python + return inp[tuple(con if i == axis else slice(None) for i in range(inp.ndim))] + + # ***** Quantization Ops ***** + def QuantizeLinear(x:Tensor, y_scale:Tensor, y_zero_point:Tensor|int=0, axis:int=1, block_size:int=0, output_dtype:int=0, saturate=1): + if isinstance(y_zero_point, Tensor): out_dtype = y_zero_point.dtype + elif output_dtype != 0: out_dtype = dtype_fallback(OnnxDataType(output_dtype).to_dtype(), "QuantizeLinear op") + else: out_dtype = dtypes.uint8 + y_scale, y_zero_point = _prepare_quantize(x, y_scale, y_zero_point, axis, block_size) + if out_dtype == dtypes.uchar: + # this appears to work in practice, at least for uchar out_dtype. it folds with the quantize stuff + ret = _clamp_cast((x / y_scale + 0.4999999 + y_zero_point).int(), out_dtype) + else: + ret = _clamp_cast(((x / y_scale).round() + y_zero_point), out_dtype) + return ret.contiguous() + + def DynamicQuantizeLinear(x: Tensor): + # only support uint8 + qmin, qmax = dtypes.min(dtypes.uint8), dtypes.max(dtypes.uint8) + scale = (x.max().maximum(0) + ((-x).max()).maximum(0)) / (qmax - qmin) + zero_point = _clamp_cast((qmin - x.min() / scale).round(), dtypes.uint8) + y = _clamp_cast((x / scale).round() + zero_point, dtypes.uint8) + return y, scale, zero_point + + def DequantizeLinear(x:Tensor, x_scale:Tensor, x_zero_point:Tensor|int=0, axis:int=1, block_size:int=0): + x_scale, x_zero_point = _prepare_quantize(x, x_scale, x_zero_point, axis, block_size) + return ((x.int() - x_zero_point) * x_scale).cast(x_scale.dtype) + + def QLinearConv(x:Tensor, x_scale:Tensor, x_zero_point:Tensor, w:Tensor, w_scale:Tensor, w_zero_point:Tensor, y_scale:Tensor, + y_zero_point:Tensor, B:Tensor|None=None, **opts): + return _qlinearop_quantized(Conv, [x,w], [x_zero_point,w_zero_point], [x_scale,w_scale], y_scale, y_zero_point, **{"B":B, **opts}) + + def QLinearMatMul(a:Tensor, a_scale:Tensor, a_zero_point:Tensor, b:Tensor, b_scale:Tensor, b_zero_point:Tensor, y_scale:Tensor, + y_zero_point:Tensor) -> Tensor: + return _qlinearop_quantized(Tensor.matmul, [a,b], [a_zero_point,b_zero_point], [a_scale,b_scale], y_scale, y_zero_point) + + def QLinearAdd(a:Tensor, a_scale:Tensor, a_zero_point:Tensor, b:Tensor, b_scale:Tensor, b_zero_point:Tensor, c_scale:Tensor, c_zero_point:Tensor): + return _qlinearop_float(Tensor.add, [a,b], [a_zero_point,b_zero_point], [a_scale,b_scale], c_scale, c_zero_point) + + def QLinearMul(a:Tensor, a_scale:Tensor, a_zero_point:Tensor, b:Tensor, b_scale:Tensor, b_zero_point:Tensor, c_scale:Tensor, c_zero_point:Tensor): + return _qlinearop_quantized(Tensor.mul, [a,b], [a_zero_point,b_zero_point], [a_scale,b_scale], c_scale, c_zero_point) + + def QLinearGlobalAveragePool(X:Tensor, x_scale:Tensor, x_zero_point:Tensor, y_scale:Tensor, y_zero_point:Tensor, channels_last:int): + assert channels_last == 0, "TODO NHWC" + return _qlinearop_float(GlobalAveragePool, [X], [x_zero_point], [x_scale], y_scale, y_zero_point) + + def ConvInteger(x: Tensor, w: Tensor, x_zero_point:Tensor = Tensor(0), w_zero_point:Tensor = Tensor(0), B: Tensor | None = None, **opts) -> Tensor: + return _op_integer(Conv, [x,w], [x_zero_point,w_zero_point], **{"B":B, **opts}) + + def MatMulInteger(A: Tensor, B: Tensor, a_zero_point: Tensor = Tensor(0), b_zero_point: Tensor = Tensor(0)) -> Tensor: + return _op_integer(Tensor.matmul, [A,B], [a_zero_point,b_zero_point]) + + # ***** Training Ops ***** + # NOTE: onnx training ops actually don't need the state for optim, all the ops work in a functional way, but we still can reuse optim.py code + @_onnx_training(3) + def Adagrad(R:Tensor, T:int, *inputs:Tensor, decay_factor:float=0.0, epsilon:float=0.0, norm_coefficient:float=0.0): + X, G, H = (i.detach() for i in inputs) + grad = norm_coefficient * X + G + H.assign(H + grad.square()) + up = grad / (H.sqrt() + epsilon) + r = R / (1 + T * decay_factor) + X.assign(X.detach() - r * up) + return [X, H] + + @_onnx_training(4) + def Adam(R:Tensor, T:int, *inputs:Tensor, alpha:float=0.9, beta:float=0.999, epsilon:float=0.0, norm_coefficient:float=0.0, + norm_coefficient_post:float=0.0): + from tinygrad.nn.optim import Adam as TinyAdam + X, G, V, H = inputs + G, V, H = G.detach(), V.detach(), H.detach() + X.grad = norm_coefficient * X.detach() + G + opt = TinyAdam([X], b1=alpha, b2=beta, eps=epsilon) + opt.m, opt.v, opt.lr = [V], [H], R + # need no-op for m_hat and v_hat if T == 0 + if T == 0: opt.b1_t, opt.b2_t = opt.b1_t.zeros_like(), opt.b2_t.zeros_like() + else: + # `T-1` since it's applied again at the start of `_step` + opt.b1_t = Tensor([alpha**(T-1)], dtype=dtypes.float32, device=X.device, requires_grad=False) + opt.b2_t = Tensor([beta**(T-1)], dtype=dtypes.float32, device=X.device, requires_grad=False) + opt.step() + X = (1 - norm_coefficient_post) * X + return [X, V, H] + + @_onnx_training(3) + def Momentum(R:Tensor, T:int, *inputs:Tensor, alpha:float, beta:float, mode:str, norm_coefficient:float): + X, G, V = (i.detach() for i in inputs) + grad = norm_coefficient * X + G + # NOTE: this beta_adjusted term makes it so we can't use SGD for nesterov + beta_adjusted = beta if T > 0 else 1 + V.assign(alpha * V + grad * beta_adjusted) + X.assign(X - R * (V if mode == "standard" else (grad + alpha * V))) + return [X, V] + + def Gradient(*inputs:Tensor, y:str, intermediate_tensors:dict[str, Tensor], **_): + intermediate_tensors[y].backward() + return tuple([t.grad for t in inputs]) + + return { + # Tensor ops + **{op: getattr(Tensor, op.lower()) for op in ("Neg", "Reciprocal", "Pow", "Sqrt", "Sign", "Abs", "Exp", "Log", "Mish", "Sin", "Cos", "Tan", + "Asin", "Acos", "Atan", "Relu", "Sigmoid", "MatMul", "Floor", "Ceil", "IsNaN", "Softplus", "HardSwish", "Where", "Mul", "Sinh", "Cosh", + "Tanh", "Softsign", "Asinh", "Acosh", "Atanh", "Elu", "Celu", "Selu", "Round", "Erf")}, + # Implemented ops + **{name:obj for name,obj in locals().items() if isinstance(obj, types.FunctionType) and not name.startswith("_") and name[0].isupper()}, + # Version ops + **{name:obj for name,obj in locals().items() if isinstance(obj, dict)}, + } + +onnx_ops = get_onnx_ops() diff --git a/tinygrad_repo/tinygrad/gradient.py b/tinygrad_repo/tinygrad/gradient.py index 317510de1..c538555ad 100644 --- a/tinygrad_repo/tinygrad/gradient.py +++ b/tinygrad_repo/tinygrad/gradient.py @@ -1,6 +1,5 @@ from typing import cast import math, dataclasses -from tinygrad.dtype import dtypes, sum_acc_dtype from tinygrad.uop.ops import UOp, PatternMatcher, UPat, Ops, all_metadata from tinygrad.helpers import argsort @@ -8,7 +7,7 @@ def reduce_gradient(ctx:UOp, ret:UOp): def to_inp_shape(x): return x.reshape(x.shape+(1,)*(len(ret.src[0].shape)-len(x.shape))).expand(ret.src[0].shape) if ret.arg[0] == Ops.ADD: return (to_inp_shape(ctx),) if ret.arg[0] == Ops.MAX: - max_is_1s = ret.src[0].ne(to_inp_shape(ret)).ne(ret.src[0].const_like(1).cast(dtypes.bool)).cast(ctx.dtype) + max_is_1s = ret.src[0].eq(to_inp_shape(ret)).cast(ctx.dtype) div = to_inp_shape(max_is_1s.r(Ops.ADD, ret.arg[1])) return ((max_is_1s/div) * to_inp_shape(ctx),) if ret.arg[0] == Ops.MUL: return (to_inp_shape(ctx * ret) / ret.src[0],) @@ -23,11 +22,10 @@ pm_gradient = PatternMatcher([ (UPat(Ops.SQRT, name="ret"), lambda ctx, ret: (ctx / (ret*2),)), (UPat((Ops.CMPLT, Ops.CMPNE)), lambda: (None, None)), (UPat(Ops.ADD), lambda ctx: (ctx, ctx)), - (UPat(Ops.POW, name="ret"), lambda ctx, ret: - (ctx*(ret.src[0].eq(0) & ret.src[1].eq(0)).where(ret.src[1], ret.src[1]*ret.src[0].pow(ret.src[1]-1)), - ctx*ret.src[0].eq(0).where((ret.src[1]<0).where(ret.const_like(-math.inf), ret.const_like(0)), ret*ret.src[0].log2()*math.log(2.0)))), - (UPat(Ops.MAX, name="ret"), lambda ctx, ret: ((ret.src[0]>ret.src[1]).where(ctx, (ret.src[0]!=ret.src[1]).where(ctx.const_like(0), ctx * 0.5)), - (ret.src[0]y).where(ctx, (x.eq(y)).where(ctx * 0.5, 0)), (x decimal.Decimal: return decimal.Decimal(time.perf_counter_ns())/1000 @dataclass(frozen=True) class TracingKey: display_name:str # display name of this trace event - keys:tuple[str, ...]=() # optional keys to search for related traces - fmt:str|None=None # optional detailed formatting - cat:str|None=None # optional category to color this by + keys:tuple[Any, ...]=() # optional keys to search for related traces + ret:Any=None class ProfileEvent: pass @dataclass class ProfileRangeEvent(ProfileEvent): device:str; name:str|TracingKey; st:decimal.Decimal; en:decimal.Decimal|None=None; is_copy:bool=False # noqa: E702 +@dataclass(frozen=True) +class ProfilePointEvent(ProfileEvent): device:str; name:str; key:Any; arg:dict=field(default_factory=dict); \ + ts:decimal.Decimal=field(default_factory=perf_counter_us) # noqa: E702 + cpu_events:list[ProfileEvent] = [] @contextlib.contextmanager def cpu_profile(name:str|TracingKey, device="CPU", is_copy=False, display=True) -> Generator[ProfileRangeEvent, None, None]: - res = ProfileRangeEvent(device, name, decimal.Decimal(time.perf_counter_ns()) / 1000, is_copy=is_copy) + res = ProfileRangeEvent(device, name, perf_counter_us(), is_copy=is_copy) try: yield res finally: - res.en = decimal.Decimal(time.perf_counter_ns()) / 1000 + res.en = perf_counter_us() if PROFILE and display: cpu_events.append(res) # *** universal database cache *** @@ -211,7 +223,7 @@ def cpu_profile(name:str|TracingKey, device="CPU", is_copy=False, display=True) cache_dir: str = os.path.join(getenv("XDG_CACHE_HOME", os.path.expanduser("~/Library/Caches" if OSX else "~/.cache")), "tinygrad") CACHEDB: str = getenv("CACHEDB", os.path.abspath(os.path.join(cache_dir, "cache.db"))) -VERSION = 21 +VERSION = 22 _db_connection = None def db_connection(): global _db_connection @@ -283,7 +295,7 @@ def fetch(url:str, name:pathlib.Path|str|None=None, subdir:str|None=None, gunzip else: fp = _ensure_downloads_dir() / (subdir or "") / ((name or hashlib.md5(url.encode('utf-8')).hexdigest()) + (".gunzip" if gunzip else "")) if not fp.is_file() or not allow_caching: (_dir := fp.parent).mkdir(parents=True, exist_ok=True) - with urllib.request.urlopen(urllib.request.Request(url, headers={"User-Agent": "tinygrad 0.10.3"}), timeout=10) as r: + with urllib.request.urlopen(urllib.request.Request(url, headers={"User-Agent": "tinygrad 0.11.0"}), timeout=10) as r: assert r.status == 200, r.status length = int(r.headers.get('content-length', 0)) if not gunzip else None readfile = gzip.GzipFile(fileobj=r) if gunzip else r diff --git a/tinygrad_repo/tinygrad/nn/__init__.py b/tinygrad_repo/tinygrad/nn/__init__.py index b81399501..bf6dca75a 100644 --- a/tinygrad_repo/tinygrad/nn/__init__.py +++ b/tinygrad_repo/tinygrad/nn/__init__.py @@ -10,7 +10,6 @@ class BatchNorm: """ Applies Batch Normalization over a 2D or 3D input. - - Described: https://paperswithcode.com/method/batch-normalization - Paper: https://arxiv.org/abs/1502.03167v3 See: `Tensor.batchnorm` @@ -182,7 +181,6 @@ class GroupNorm: """ Applies Group Normalization over a mini-batch of inputs. - - Described: https://paperswithcode.com/method/group-normalization - Paper: https://arxiv.org/abs/1803.08494v3 ```python exec="true" source="above" session="tensor" result="python" @@ -213,7 +211,6 @@ class InstanceNorm: """ Applies Instance Normalization over a mini-batch of inputs. - - Described: https://paperswithcode.com/method/instance-normalization - Paper: https://arxiv.org/abs/1607.08022v3 ```python exec="true" source="above" session="tensor" result="python" @@ -240,7 +237,6 @@ class LayerNorm: """ Applies Layer Normalization over a mini-batch of inputs. - - Described: https://paperswithcode.com/method/layer-normalization - Paper: https://arxiv.org/abs/1607.06450v1 ```python exec="true" source="above" session="tensor" result="python" @@ -287,7 +283,6 @@ class RMSNorm: """ Applies Root Mean Square Normalization to input. - - Described: https://paperswithcode.com/method/rmsnorm - Paper: https://arxiv.org/abs/1910.07467 ```python exec="true" source="above" session="tensor" result="python" diff --git a/tinygrad_repo/tinygrad/nn/optim.py b/tinygrad_repo/tinygrad/nn/optim.py index 927bd1b29..e93a06a90 100644 --- a/tinygrad_repo/tinygrad/nn/optim.py +++ b/tinygrad_repo/tinygrad/nn/optim.py @@ -76,21 +76,32 @@ def SGD(params: list[Tensor], lr=0.001, momentum=0.0, weight_decay=0.0, nesterov Stochastic Gradient Descent (SGD) optimizer with optional momentum and weight decay. `classic` is a boolean flag that determines whether to use the popular momentum update rule or the classic momentum update rule. - - - Described: https://paperswithcode.com/method/sgd """ - return LARS(params, lr, momentum, weight_decay, nesterov, classic, tcoef=0.0, fused=fused) + return LARS(params, lr, momentum, weight_decay, 0, None, nesterov, classic=classic, pre_wd=True, tcoef=0.0, fused=fused) + +# Muon applies the newton schulz algorithm on gradient. also can include momentum, nesterov, and weight decay +def Muon(params: list[Tensor], lr=0.02, momentum=0.95, weight_decay=0.0, ns_steps=5, ns_params=(3.4445, -4.775, 2.0315), + nesterov=True, fused=FUSE_OPTIM): + """ + SGD with newton-schulz iteration and post momentum weight decay. + + - Described: https://kellerjordan.github.io/posts/muon/ + - Paper: https://arxiv.org/pdf/2502.16982 + """ + assert not fused, "FUSE_OPTIM not allowed for Muon optimizer" + return LARS(params, lr, momentum, weight_decay, ns_steps, ns_params, nesterov, classic=False, pre_wd=False, tcoef=0.0, fused=fused) class LARS(Optimizer): """ Layer-wise Adaptive Rate Scaling (LARS) optimizer with optional momentum and weight decay. - - Described: https://paperswithcode.com/method/lars - Paper: https://arxiv.org/abs/1708.03888v3 """ - def __init__(self, params:list[Tensor], lr=0.001, momentum=0.9, weight_decay=1e-4, nesterov=False, classic=True, tcoef=0.001, fused=FUSE_OPTIM): + def __init__(self, params:list[Tensor], lr=0.001, momentum=0.9, weight_decay=1e-4, ns_steps=0, ns_params=None, + nesterov=False, classic=True, pre_wd=True, tcoef=0.001, fused=FUSE_OPTIM): super().__init__(params, lr, fused) - self.momentum, self.wd, self.nesterov, self.classic, self.tcoef = momentum, weight_decay, nesterov, classic, tcoef + self.momentum, self.wd, self.ns_steps, self.ns_params = momentum, weight_decay, ns_steps, ns_params + self.nesterov, self.classic, self.pre_wd, self.tcoef = nesterov, classic, pre_wd, tcoef self.b = self._new_optim_param() if self.momentum else [] def _step(self, params:list[Tensor], grads:list[Tensor]) -> tuple[list[Tensor], list[Tensor]]: @@ -101,7 +112,7 @@ class LARS(Optimizer): r2 = g.square().sum().sqrt() r:Tensor|float = (r1 > 0).where((r2 > 0).where(self.tcoef * r1 / (r2 + self.wd * r1), 1.0), 1.0) else: r = 1.0 - if self.wd > 0: g = g + self.wd * t.detach() + if self.pre_wd and self.wd > 0: g = g + self.wd * t.detach() # classic momentum does post learning rate update if self.classic: g = g * r * self.lr if self.momentum: @@ -109,6 +120,9 @@ class LARS(Optimizer): # the scheduler should detect this and just insert contiguous self.b[i].assign(self.momentum * self.b[i].contiguous() + g) # NOTE: self.b[i] is zero on the first run, no if required g = (g + self.momentum * self.b[i]) if self.nesterov else self.b[i] + if self.ns_params: g = g.reshape(g.shape[0], -1).newton_schulz(self.ns_steps, self.ns_params).reshape(g.shape) + # muon does post momentum weight decay + if not self.pre_wd and self.wd > 0: t = t.detach() * (1.0 - self.wd * self.lr) # popular momentum does pre learning rate update if not self.classic: g = g * r * self.lr ret.append((t.detach() - g).cast(t.dtype)) @@ -119,7 +133,6 @@ def AdamW(params: list[Tensor], lr=0.001, b1=0.9, b2=0.999, eps=1e-8, weight_dec """ AdamW optimizer with optional weight decay. - - Described: https://paperswithcode.com/method/adamw - Paper: https://arxiv.org/abs/1711.05101v3 """ return LAMB(params, lr, b1, b2, eps, weight_decay, adam=True, fused=fused) @@ -127,7 +140,6 @@ def Adam(params: list[Tensor], lr=0.001, b1=0.9, b2=0.999, eps=1e-8, fused=FUSE_ """ Adam optimizer. - - Described: https://paperswithcode.com/method/adam - Paper: https://arxiv.org/abs/1412.6980 """ return LAMB(params, lr, b1, b2, eps, 0.0, adam=True, fused=fused) @@ -136,7 +148,6 @@ class LAMB(Optimizer): """ LAMB optimizer with optional weight decay. - - Described: https://paperswithcode.com/method/lamb - Paper: https://arxiv.org/abs/1904.00962 """ def __init__(self, params: list[Tensor], lr=0.001, b1=0.9, b2=0.999, eps=1e-6, weight_decay=0.0, adam=False, fused=FUSE_OPTIM): diff --git a/tinygrad_repo/tinygrad/nn/state.py b/tinygrad_repo/tinygrad/nn/state.py index aa8c1b1a3..110da5ecd 100644 --- a/tinygrad_repo/tinygrad/nn/state.py +++ b/tinygrad_repo/tinygrad/nn/state.py @@ -274,9 +274,9 @@ def ggml_data_to_tensor(t: Tensor, n: int, ggml_type: int) -> Tensor: Converts ggml tensor data to a tinygrad tensor. Supported native types: float32 (id: 0), float16 (id: 1), int8 (id: 16), int16 (id: 17), int32 (id: 18) - Supported quantized types: Q4_0 (id: 2), Q4_1 (id: 3), Q8_0 (id: 8), Q6_K (id: 14) + Supported quantized types: Q4_0 (id: 2), Q4_1 (id: 3), Q8_0 (id: 8), Q6_K (id: 14), MXFP4 (id: 39) """ - # https://github.com/ggerganov/ggml/blob/6dccc647264f5429df2624f36138f601e7ce23e5/include/ggml.h#L356 + # https://github.com/ggerganov/ggml/blob/323951f1bdcdfbd5b5ff3a9a7c3770e63b1a560e/include/ggml.h#L356 # native types if (dtype := { 0: dtypes.float32, 1: dtypes.float16, 16: dtypes.int8, 17: dtypes.int16, 18: dtypes.int32 }.get(ggml_type)) is not None: @@ -288,7 +288,7 @@ def ggml_data_to_tensor(t: Tensor, n: int, ggml_type: int) -> Tensor: return t.unsqueeze(-1).expand((*t.shape,8//b)).idiv(shift_tensor).bitwise_and(bitmask).transpose(-1, -2).flatten(-2) # map to (number of elements, number of bytes) - if (nelements_nbytes := { 2: (32, 18), 3: (32, 20), 14: (256, 210), 8: (32, 34) }.get(ggml_type)) is not None: + if (nelements_nbytes := { 2: (32, 18), 3: (32, 20), 14: (256, 210), 8: (32, 34), 39: (32, 17) }.get(ggml_type)) is not None: blocks = t[:(n//nelements_nbytes[0])*nelements_nbytes[1]].reshape((-1, nelements_nbytes[1])) if ggml_type == 2: return (q_to_uint8(blocks[:,2:], 4).bitcast(dtypes.int8) - 8) * blocks[:,:2].bitcast(dtypes.float16).cast(dtypes.float32) if ggml_type == 3: @@ -300,6 +300,17 @@ def ggml_data_to_tensor(t: Tensor, n: int, ggml_type: int) -> Tensor: scales = blocks[:,192:208].bitcast(dtypes.int8).unsqueeze(-1).expand((-1, 16, 16)).reshape((-1, 256)) d = blocks[:,-2:].bitcast(dtypes.float16).cast(dtypes.float32).expand((-1, 256)) return d * (xl.bitwise_or(xh).bitcast(dtypes.int8) - 32).flatten(-2) * scales + if ggml_type == 39: + e_int = blocks[:, 0].cast(dtypes.int32) + d = ((e_int >= 2).cast(dtypes.float32) * (e_int.cast(dtypes.float32) - 128).exp2() + + (e_int == 1).cast(dtypes.float32) * 2.0**(-127) + + (e_int == 0).cast(dtypes.float32) * 2.0**(-128)).unsqueeze(-1) + codes = q_to_uint8(blocks[:, 1:17], 4) + sign = 1.0 - codes.rshift(3).cast(dtypes.float32) * 2.0 + exp, mant = codes.rshift(1).bitwise_and(0x3).cast(dtypes.float32), codes.bitwise_and(0x1).cast(dtypes.float32) + fp4_val = sign * ((exp != 0).cast(dtypes.float32) * (1.0 + 0.5 * mant) * (exp - 1.0).exp2() + + (exp == 0).cast(dtypes.float32) * 0.5 * mant) + return (fp4_val * d).flatten(-2)[:n] raise ValueError(f"GGML type '{ggml_type}' is not supported!") @accept_filename diff --git a/tinygrad_repo/tinygrad/opt/__init__.py b/tinygrad_repo/tinygrad/opt/__init__.py deleted file mode 100644 index 934b9f074..000000000 --- a/tinygrad_repo/tinygrad/opt/__init__.py +++ /dev/null @@ -1,30 +0,0 @@ -# opt opinionatedly transforms an ast into an optimized ast using either heuristics or beam search - -from tinygrad.opt.kernel import Kernel -from tinygrad.opt.heuristic import hand_coded_optimizations -from tinygrad.uop.ops import UOp -from tinygrad.helpers import NOOPT, BEAM, USE_TC, getenv -from tinygrad.renderer import Renderer - -def get_optimized_ast(ast:UOp, renderer:Renderer) -> UOp: - """ - Optimize an AST based on heuristics or BEAM search. - - Args: - ast: The Ops.SINK rooted AST - renderer: The renderer used to generate the code - - Returns: - The Ops.SINK rooted AST transformed to apply the opts and with a KernelInfo in the arg. - """ - - k = Kernel(ast, opts=renderer) - if ast.arg is not None and ast.arg.opts_to_apply is not None: k.apply_opts(ast.arg.opts_to_apply) - elif not NOOPT: - if not k.apply_tensor_cores(USE_TC.value): k.apply_opts(hand_coded_optimizations(k)) - if BEAM >= 1: - from tinygrad.opt.search import beam_search, bufs_from_lin - kb = Kernel(ast, opts=renderer) - rawbufs = bufs_from_lin(kb, allocate=False) - k = beam_search(kb, rawbufs, BEAM.value, bool(getenv("BEAM_ESTIMATE", 1))) - return k.get_optimized_ast() diff --git a/tinygrad_repo/tinygrad/renderer/__init__.py b/tinygrad_repo/tinygrad/renderer/__init__.py index c4cd4e738..ed53f0395 100644 --- a/tinygrad_repo/tinygrad/renderer/__init__.py +++ b/tinygrad_repo/tinygrad/renderer/__init__.py @@ -1,13 +1,13 @@ from __future__ import annotations from typing import Callable, cast, TYPE_CHECKING -import functools, itertools -from dataclasses import dataclass, field, replace +import functools +from dataclasses import dataclass, field from tinygrad.helpers import to_function_name, dedup, prod from tinygrad.uop.ops import Ops, UOp, sym_infer, sint, Variable, ssimplify, GroupOp, PatternMatcher from tinygrad.dtype import AddrSpace, PtrDType if TYPE_CHECKING: - from tinygrad.opt.tc import TensorCore - from tinygrad.opt.kernel import Opt + from tinygrad.codegen.opt.tc import TensorCore + from tinygrad.codegen.opt.kernel import Opt @dataclass(frozen=True) class Estimates: @@ -23,6 +23,7 @@ class Estimates: def from_uops(uops:list[UOp], ignore_indexing=False) -> Estimates: flops: sint = 0 lds: sint = 0 + mem: dict[tuple[UOp, Ops], sint] = {} mults: sint = 1 mult_stack: list[sint] = [] dont_count: set[UOp] = set() @@ -34,6 +35,11 @@ class Estimates: elif u.op is Ops.IF: dont_count = dont_count.union(u.src[0].toposort()) for u in uops: + if u.op in {Ops.LOAD, Ops.STORE}: + buf = u + while len(buf.src): buf = buf.src[0] + if buf.op is Ops.DEFINE_GLOBAL: # assume all DEFINE_GLOBAL memory is accessed + mem[(buf, u.op)] = cast(PtrDType, buf.dtype).size * buf.dtype.itemsize if u.op is Ops.RANGE: mult_stack.append(mults) mults *= cast(sint, u.src[0].ssimplify()) @@ -47,7 +53,7 @@ class Estimates: lds += u.src[1].dtype.itemsize * mults elif u.op in GroupOp.ALU and u not in dont_count: flops += (mults * (2 if u.op is Ops.MULACC else 1)) * u.dtype.count elif u.op is Ops.WMMA and u not in dont_count: flops += 2 * prod(u.arg[1]) // u.arg[5] * mults - return Estimates(flops, lds, lds) # TODO: properly track memory, lds is always a high estimate + return Estimates(flops, lds, sum(mem.values())) @dataclass class ProgramSpec: @@ -84,17 +90,9 @@ class ProgramSpec: self.ins = sorted(dedup(self.ins)) self._ran_post_init = True - @functools.cached_property - def mem_estimate(self) -> sint: - # group non-local bufs by the op type (LOAD or STORE) and the buffer arg. take the max access of that buffer in bytes - # TODO: these max and min don't work on symbolic, and results are very wrong. - return sum(max(x.src[0].dtype.nbytes() for x in group) - for _, group in itertools.groupby([x for x in self.ast.toposort() if x.op in {Ops.LOAD, Ops.STORE} and x.src[0].base.op is Ops.DEFINE_GLOBAL], - key=lambda x: (x.op, x.src[0].base.arg))) - @functools.cached_property def estimates(self) -> Estimates: - return replace(Estimates() if self.uops is None else Estimates.from_uops(self.uops, ignore_indexing=True), mem=self.mem_estimate) + return Estimates() if self.uops is None else Estimates.from_uops(self.uops, ignore_indexing=True) @functools.cached_property def function_name(self) -> str: return to_function_name(self.name) diff --git a/tinygrad_repo/tinygrad/renderer/cstyle.py b/tinygrad_repo/tinygrad/renderer/cstyle.py index 82e30f726..8a238a842 100644 --- a/tinygrad_repo/tinygrad/renderer/cstyle.py +++ b/tinygrad_repo/tinygrad/renderer/cstyle.py @@ -1,12 +1,12 @@ from typing import Literal, Callable, cast import os, math, sys from collections import defaultdict, Counter -from tinygrad.opt import tc -from tinygrad.uop.ops import GroupOp, Ops, UOp, PatternMatcher, UPat +from tinygrad.codegen.opt import tc +from tinygrad.uop.ops import GroupOp, Ops, UOp, PatternMatcher, UPat, sint_to_uop from tinygrad.helpers import strip_parens, getenv, prod, dedup, AMX from tinygrad.dtype import ImageDType, dtypes, DType, PtrDType, AddrSpace, truncate from tinygrad.renderer import Renderer -from tinygrad.codegen.devectorizer import no_vectorized_alu +from tinygrad.codegen.late.devectorizer import no_vectorized_alu base_rewrite = PatternMatcher([ (UPat(Ops.DEFINE_REG, name="x"), lambda ctx,x: f"{ctx.render_dtype(x.dtype.base)} {ctx[x]}[{x.dtype.size}];"), @@ -26,7 +26,7 @@ base_rewrite = PatternMatcher([ (UPat(Ops.DEFINE_LOCAL, name="x"), lambda ctx,x: f"{ctx.smem_align}{ctx.smem_prefix}{ctx.render_dtype(x.dtype.base)} {ctx[x]}[{x.dtype.size}];"), (UPat(Ops.BARRIER), lambda ctx: ctx.barrier), (UPat(Ops.PRECAST, name="x"), lambda ctx,x: ctx[x.src[0]]), - (UPat(Ops.SPECIAL, name="x"), lambda ctx,x: f"{ctx.code_for_workitem[x.arg[0][0]](x.arg[0][-1])}; /* {x.arg[1]} */"), + (UPat(Ops.SPECIAL, name="x"), lambda ctx,x: f"{ctx.code_for_workitem[x.arg[0][0]](x.arg[0][-1])}; /* {sint_to_uop(x.arg[1]).render()} */"), # const (UPat(Ops.CONST, arg=math.inf, name="x"), lambda ctx, x: f"({ctx.render_cast(x.dtype, ctx.infinity)})"), (UPat(Ops.CONST, arg=-math.inf, name="x"), lambda ctx, x: f"({ctx.render_cast(x.dtype, f'-{ctx.infinity}')})"), @@ -47,7 +47,7 @@ base_rewrite = PatternMatcher([ lambda ctx,buf,idx: f"({ctx[buf]}+{strip_parens(ctx[idx]) if idx.arg == Ops.ADD else ctx[idx]})"), (UPat(Ops.LOAD, src=(UPat(Ops.INDEX, src=(UPat(), UPat(), UPat.var("gate"))).or_casted("bidx"), UPat.var("var")), allow_any_len=True), lambda ctx,bidx,var,gate: f"({ctx[gate]}?*{ctx[bidx]}:{ctx[var]})"), - (UPat(Ops.LOAD, src=(UPat.var('bidx'),), allow_any_len=True), lambda ctx,bidx: f"*{ctx[bidx]}"), + (UPat(Ops.LOAD, src=(UPat.var('bidx'),), allow_any_len=True), lambda ctx,bidx: f"(*{ctx[bidx]})"), (UPat(Ops.STORE, src=(UPat.var('bidx'), UPat.var("var")), allow_any_len=True), lambda ctx,bidx,var: f"*{ctx[bidx]} = {ctx[var]};"), # alu/gep # TODO: look for left-associative @@ -63,8 +63,6 @@ extra_pm = PatternMatcher([ # insert a PRECAST before BITCAST to force it to be rendered. not needed on all backends? (UPat(Ops.BITCAST, name="x"), lambda x: UOp(Ops.BITCAST, x.dtype, (UOp(Ops.PRECAST, x.src[0].dtype, x.src),)) if x.src[0].op not in {Ops.PRECAST, Ops.LOAD, Ops.CUSTOM} else None), - # rewrite MAX to CMPLT + WHERE (max function is annoying on many cstyle backends) - (UPat(Ops.MAX, name="m"), lambda m: (m.src[0] < m.src[1]).where(m.src[1], m.src[0])), # devectorize any bools (UPat((*GroupOp.ALU, Ops.CAST, Ops.BITCAST, Ops.INDEX), dtype=dtypes.bool, name="alu"), no_vectorized_alu), # CAST (from bool) can't be vectorized @@ -75,6 +73,10 @@ extra_pm = PatternMatcher([ def uops_to_dtypes(uops:list[UOp]) -> list[DType]: return dedup(u.dtype for u in uops if not isinstance(u.dtype, (ImageDType, PtrDType))) +# (name, dims, dtype_in, dtype_out, device, threads, upcast_axes, reduce_axes) +def wmma_args(uops:list[UOp]): + return dedup((uop.arg[0], uop.arg[1], uop.src[0].dtype.scalar(), uop.dtype.scalar(), *(uop.arg[4:8])) for uop in uops if uop.op is Ops.WMMA) + class CStyleLanguage(Renderer): kernel_typedef: str = "void" buffer_prefix: str = "" @@ -95,11 +97,12 @@ class CStyleLanguage(Renderer): code_for_op: dict = { Ops.SQRT: lambda x,dtype: f"sqrt({x})", Ops.RECIP: lambda x,dtype: f"(1/{x})", Ops.NEG: lambda x,dtype: f"-{x}", Ops.EXP2: lambda x,dtype: f"exp2({x})", Ops.LOG2: lambda x,dtype: f"log2({x})", Ops.SIN: lambda x,dtype: f"sin({x})", + Ops.TRUNC: lambda x,dtype: f"trunc({x})", Ops.AND: lambda a,b,dtype: f"({a}&{b})", Ops.XOR: lambda a,b,dtype: f"({a}^{b})", Ops.OR: lambda a,b,dtype: f"({a}|{b})", Ops.ADD: lambda a,b,dtype: f"({a}+{b})", Ops.SUB: lambda a,b,dtype: f"({a}-{b})", Ops.MUL: lambda a,b,dtype: f"({a}*{b})", Ops.MOD: lambda a,b,dtype: f"({a}%{b})", Ops.IDIV: lambda a,b,dtype: f"({a}/{b})", Ops.CMPNE: lambda a,b,dtype: f"({a}!={b})", Ops.SHR: lambda a,b,dtype: f"({a}>>{b})", Ops.SHL: lambda a,b,dtype: f"({a}<<{b})", Ops.CMPLT: lambda a,b,dtype: f"({a}<{b})", - Ops.WHERE: lambda a,b,c,dtype: f"({a}?{b}:{c})" } + Ops.WHERE: lambda a,b,c,dtype: f"({a}?{b}:{c})", Ops.CMPEQ: lambda a,b,dtype: f"({a}=={b})"} string_rewrite = base_rewrite extra_matcher = extra_pm @@ -142,7 +145,7 @@ class CStyleLanguage(Renderer): if u.arg is not None: name = u.arg.function_name continue if u.op in (Ops.DEFINE_GLOBAL, Ops.DEFINE_VAR): - r[u] = f"data{u.arg}" if u.op is Ops.DEFINE_GLOBAL else u.arg[0] + r[u] = (f"data{u.arg}_{sz}" if (sz:=cast(PtrDType, u.dtype).size) > 0 else f"data{u.arg}") if u.op is Ops.DEFINE_GLOBAL else u.arg[0] bufs[u] = (r[u], (u.dtype, False)) continue @@ -154,7 +157,7 @@ class CStyleLanguage(Renderer): # naming prefix = None if u.op is Ops.SPECIAL: r[u] = u.arg[0] - elif u.op is Ops.RANGE: r[u] = f"ridx{u.arg}" + elif u.op is Ops.RANGE: r[u] = "ridx"+'_'.join([str(x) if x >= 0 else "m"+str(-x) for x in u.arg[0:-1]]) else: prefix = {Ops.WMMA: "wmma", Ops.DEFINE_LOCAL: "temp", Ops.CONST: "const", Ops.CAST: "cast", Ops.BITCAST: "cast", Ops.GEP: "gep", Ops.VECTORIZE: "cast", Ops.PRECAST: "precast", @@ -166,6 +169,8 @@ class CStyleLanguage(Renderer): if u.op in {Ops.ENDIF, Ops.ENDRANGE}: depth -= 1 if (u.op is not Ops.CAST or u.dtype.vcount == 1) and (u.op in {Ops.CONST, Ops.GEP, Ops.INDEX, Ops.CUSTOMI} or \ + (u.op is Ops.LOAD and cast(PtrDType, u.src[0].dtype).addrspace == AddrSpace.REG) or \ + (u.op is Ops.CAST and isinstance(u.dtype, PtrDType)) or \ (u.op in {Ops.VECTORIZE, *(GroupOp.ALU-{Ops.WHERE}), Ops.CAST, Ops.BITCAST} and child_count[u] == 1 and not getenv("EXPAND_SSA"))): r[u] = l else: @@ -194,11 +199,13 @@ class ClangRenderer(CStyleLanguage): # language options buffer_suffix = " restrict" type_map = {dtypes.bool:"_Bool", dtypes.half:"__fp16"} - code_for_op = {**({k:v for k,v in CStyleLanguage.code_for_op.items() if k not in [Ops.EXP2, Ops.SIN, Ops.LOG2]}), - Ops.SQRT: lambda x,dtype: f"__builtin_sqrt({x})" if dtype == dtypes.float64 else f"__builtin_sqrtf({x})"} + code_for_op = {**({k:v for k,v in CStyleLanguage.code_for_op.items() if k not in [Ops.EXP2, Ops.SIN, Ops.LOG2, Ops.TRUNC, Ops.RECIP]}), + Ops.SQRT: lambda x,dtype: f"__builtin_sqrt({x})" if dtype == dtypes.float64 else f"__builtin_sqrtf({x})", + Ops.TRUNC: lambda x,dtype: f"__builtin_trunc({x})" if dtype == dtypes.float64 else f"__builtin_truncf({x})", + Ops.FDIV: lambda a,b,dtype: f"({a}/{b})"} # LLVM legalizes double => half cast on systems that don't support it natively (like x86 cpus without AVX512-FP16) into a compiler-rt libcall. extra_matcher = PatternMatcher([(UPat.var("x", dtypes.float64).cast(dtypes.float16), lambda x: x.cast(dtypes.float32).cast(dtypes.float16)), - (UPat(Ops.SQRT, name="alu"), no_vectorized_alu),]) + CStyleLanguage.extra_matcher + (UPat((Ops.SQRT, Ops.TRUNC), name="alu"), no_vectorized_alu)]) + CStyleLanguage.extra_matcher if sys.platform == 'win32': kernel_typedef = "__attribute__((ms_abi)) void" @@ -210,7 +217,7 @@ class ClangRenderer(CStyleLanguage): def _render_defines(self, uops) -> list[str]: prefix = [self.render_vector_prefix(dt) for dt in uops_to_dtypes(uops) if dt.count > 1] # https://github.com/corsix/amx - for name, (N, M, _), dtype_in, _, _, _, _, _ in dedup([uop.arg for uop in uops if uop.op is Ops.WMMA]): + for name, (N, M, _), dtype_in, _, _, _, _, _ in wmma_args(uops): prefix += [ '#define AMX_SET(imm5) __asm("nop\\nnop\\nnop\\n.word (0x201000+(%0<<5)+%1)" : : "i"(17), "i"(imm5) : "memory")', '#define AMX(op, gpr, btf) __asm(".word (0x201000+(%0 << 5)+0%1-((0%1>>4)*6))" : : "i"(op), "r"((unsigned long long)(gpr)+(btf)) : "memory")', @@ -270,9 +277,9 @@ class IntelRenderer(OpenCLRenderer): def render_kernel(self, function_name, kernel, bufs, uops, prefix=None) -> str: prefix = [] - for arg in dedup([uop.arg for uop in uops if uop.op is Ops.WMMA]): - dt_in = ("ushort", "bf16") if arg[2] == dtypes.bfloat16 else (arg[2].name, "f16") - prefix.append(f"""{arg[3].name}8 __{arg[0]}({dt_in[0]}16 a, {dt_in[0]}16 b, {arg[3].name}8 c) {{ + for name, _, dtype_in, dtype_out, _, _, _, _ in wmma_args(uops): + dt_in = ("ushort", "bf16") if dtype_in == dtypes.bfloat16 else (dtype_in.name, "f16") + prefix.append(f"""{dtype_out.name}8 __{name}({dt_in[0]}16 a, {dt_in[0]}16 b, {dtype_out.name}8 c) {{ return intel_sub_group_{dt_in[1]}_{dt_in[1]}_matrix_mad_k16(as_int8(a), as_int8(b), c);\n}}""") return super().render_kernel(function_name, kernel, bufs, uops, prefix or None) @@ -308,13 +315,13 @@ class MetalRenderer(CStyleLanguage): ]) + base_rewrite def render_kernel(self, function_name, kernel, bufs, uops, prefix=None): - prefix, wmma_args = ["#include ","using namespace metal;"], set([uop.arg for uop in uops if uop.op is Ops.WMMA]) - for arg in wmma_args: prefix.append( - f"""{(dtype_out:=self.render_dtype(arg[3].vec(2)))} __{arg[0]}({(dtype_in:=self.render_dtype(arg[2].vec(2)))} a, {dtype_in} b, {dtype_out} c){{ - simdgroup_{self.render_dtype(arg[2])}8x8 mat_a, mat_b; simdgroup_{self.render_dtype(arg[3])}8x8 mat_c; + prefix = ["#include ","using namespace metal;"] + for name, _, dtype_in, dtype_out, _, _, _, _ in wmma_args(uops): prefix.append( + f"""{(dstr_out:=self.render_dtype(dtype_out.vec(2)))} __{name}({(dstr_in:=self.render_dtype(dtype_in.vec(2)))} a, {dstr_in} b, {dstr_out} c){{ + simdgroup_{self.render_dtype(dtype_in)}8x8 mat_a, mat_b; simdgroup_{self.render_dtype(dtype_out)}8x8 mat_c; mat_a.thread_elements()[0] = a[0]; mat_b.thread_elements()[0] = b[0]; mat_c.thread_elements()[0] = c[0]; mat_a.thread_elements()[1] = a[1]; mat_b.thread_elements()[1] = b[1]; mat_c.thread_elements()[1] = c[1]; - simdgroup_multiply_accumulate(mat_c, mat_a, mat_b, mat_c);\n return {dtype_out}(mat_c.thread_elements()[0], mat_c.thread_elements()[1]);\n}}""") + simdgroup_multiply_accumulate(mat_c, mat_a, mat_b, mat_c);\n return {dstr_out}(mat_c.thread_elements()[0], mat_c.thread_elements()[1]);\n}}""") return super().render_kernel(function_name, kernel, bufs, uops, prefix) _nms = "xyzwabcdefghijkl" @@ -363,7 +370,7 @@ class CUDARenderer(CStyleLanguage): dt_map_in = { dtypes.float: "tf32", dtypes.half: "f16", dtypes.bfloat16: "bf16" } dt_map_out = { dtypes.float: "f32", dtypes.half: "f16" } - for name, (N, M, K), dtype_in, dtype_out, _, _, upcast_axes, _ in dedup([uop.arg for uop in uops if uop.op is Ops.WMMA]): + for name, (N, M, K), dtype_in, dtype_out, _, _, upcast_axes, _ in wmma_args(uops): upcast_sizes = [prod(size for _, size in upcast) for upcast in upcast_axes] wmma_dtypes = [self.render_dtype(dtype.vec(size)) for dtype, size in zip([dtype_in, dtype_in, dtype_out], upcast_sizes)] n_operands = [size*dtype.itemsize//4 for dtype, size in zip([dtype_in, dtype_in, dtype_out], upcast_sizes)] # 4 => CUDA reg size in bytes @@ -408,7 +415,7 @@ class AMDRenderer(CStyleLanguage): ockl = [(f"__ockl_get_{name}", "unsigned int", "size_t", "const") for name in ["local_id", "group_id", "local_size"]] ocml = [(f"__ocml_{name}_f{n}", f"{dt}, {dt}" if "fmax" == name else dt, dt, atr) for dt, n in [(dtype.name, dtype.itemsize * 8) for dtype in [dtypes.float, dtypes.double, dtypes.half]] - for name, atr in [("fmax", "const"), ("exp2", "pure"), ("log2", "pure"), ("sqrt", "const"), ("sin", "")]] + for name, atr in [("fmax", "const"), ("exp2", "pure"), ("log2", "pure"), ("sqrt", "const"), ("sin", ""), ("trunc", "")]] kernel_typedef = "\n".join(f'extern "C" __attribute__((device{f", {atr}" if atr else ""})) {dto} {meth}({dti});' for meth,dti,dto,atr in ockl+ocml) # https://clang.llvm.org/docs/AttributeReference.html#amdgpu-flat-work-group-size @@ -417,6 +424,7 @@ class AMDRenderer(CStyleLanguage): code_for_workitem = {"g": lambda x: f"__ockl_get_group_id({x})", "l": lambda x: f"__ockl_get_local_id({x})", "i": lambda x: f"(__ockl_get_group_id({x})*__ockl_get_local_size({x})+__ockl_get_local_id({x}))"} code_for_op = { **CStyleLanguage.code_for_op, + Ops.TRUNC: lambda x,dtype: f"__ocml_trunc_f{ {dtypes.half:16, dtypes.double:64}.get(dtype, 32)}({x})", Ops.SIN: lambda x,dtype: f"__ocml_sin_f{ {dtypes.half:16, dtypes.double:64}.get(dtype, 32)}({x})", Ops.LOG2: lambda x,dtype: f"__ocml_log2_f{ {dtypes.half:16, dtypes.double:64}.get(dtype, 32)}({x})", Ops.EXP2: lambda x,dtype: f"__ocml_exp2_f{ {dtypes.half:16, dtypes.double:64}.get(dtype, 32)}({x})", @@ -458,15 +466,15 @@ class AMDRenderer(CStyleLanguage): if any(dt.scalar() == dtypes.bfloat16 for dt in used_dtypes): prefix.append("typedef unsigned short hip_bfloat16;") prefix += [self.render_vector_prefix(dt) for dt in used_dtypes if dt.count > 1] - for arg in dedup([uop.arg for uop in uops if uop.op is Ops.WMMA]): # TODO: handle TCs f32_bf16 and bf16_bf16 w/ wrapper + for name, _, dtype_in, dtype_out, _, _, _, _ in wmma_args(uops): # TODO: handle TCs f32_bf16 and bf16_bf16 w/ wrapper if self.tensor_cores == tc.amd_cdna: - prefix.append(f"#define __{arg[0]} __builtin_amdgcn_mfma_f32_16x16x16{'f16' if arg[2] == dtypes.half else 'bf16_1k'}") + prefix.append(f"#define __{name} __builtin_amdgcn_mfma_f32_16x16x16{'f16' if dtype_in == dtypes.half else 'bf16_1k'}") # #define __WMMA_16_16_16_half_half __builtin_amdgcn_wmma_f16_16x16x16_f16_w32_gfx12 elif self.tensor_cores == tc.amd_rdna4: - prefix.append(f"#define __{arg[0]} __builtin_amdgcn_wmma_{type_map[arg[3]]}_16x16x16_{type_map[arg[2]]}_w32_gfx12") - elif arg[3] == dtypes.float: - prefix.append(f"#define __{arg[0]} __builtin_amdgcn_wmma_f32_16x16x16_{'f16' if arg[2] == dtypes.half else 'bf16'}_w32") - else: prefix.append(f"static inline __attribute__((device)) half8 __{arg[0]}"+"""(half16 a, half16 b, half8 c) { + prefix.append(f"#define __{name} __builtin_amdgcn_wmma_{type_map[dtype_out]}_16x16x16_{type_map[dtype_in]}_w32_gfx12") + elif dtype_out == dtypes.float: + prefix.append(f"#define __{name} __builtin_amdgcn_wmma_f32_16x16x16_{'f16' if dtype_in == dtypes.half else 'bf16'}_w32") + else: prefix.append(f"static inline __attribute__((device)) half8 __{name}"+"""(half16 a, half16 b, half8 c) { half16 c_frag = {}; half8 d; for (int n = 0; n < 8; n++) { c_frag[n*2] = c[n]; } c_frag = __builtin_amdgcn_wmma_f16_16x16x16_f16_w32(a, b, c_frag, false); for (int n = 0; n < 8; n++) { d[n] = c_frag[n*2]; } return d;\n}""") diff --git a/tinygrad_repo/tinygrad/renderer/llvmir.py b/tinygrad_repo/tinygrad/renderer/llvmir.py index bf7567372..47ed182bf 100644 --- a/tinygrad_repo/tinygrad/renderer/llvmir.py +++ b/tinygrad_repo/tinygrad/renderer/llvmir.py @@ -1,6 +1,6 @@ from typing import cast import math, struct, sys -from tinygrad.opt import tc +from tinygrad.codegen.opt import tc from tinygrad.renderer import Renderer from tinygrad.renderer.cstyle import AMDRenderer from tinygrad.uop.ops import UOp, PatternMatcher, UPat, Ops, GroupOp @@ -45,11 +45,12 @@ def render_wmma_amx(ctx, wmma: UOp) -> str: f' call void asm sideeffect "nop\\0Anop\\0Anop\\0A.word ({0x201000 + (17 << 5) + 1})", "~{{memory}}"() #0; AMX clr', # clr f' {ctx[wmma]} = load {ldt(wmma.dtype)}, ptr {ctx[wmma]}_amx2, align {wmma.dtype.itemsize}']) -def render_wmma_amd(ctx, wmma: UOp, arch: str) -> str: - dt_map = {dtypes.half: "f16", dtypes.float: "f32", dtypes.bfloat16: "bf16", dtypes.ushort: "bf16"} +def render_wmma_amd(ctx, wmma: UOp, cdna=False) -> str: + dt_map = {dtypes.half: "f16", dtypes.float: "f32", dtypes.ushort: "bf16.1k" if cdna else "bf16", dtypes.bfloat16: "bf16.1k" if cdna else "bf16"} # https://github.com/llvm/llvm-project/blob/main/clang/test/CodeGenOpenCL/builtins-amdgcn-mfma.cl - if arch.split(":")[0] == "gfx942": return f" {ctx[wmma]} = call {ldt(wmma.dtype)} @llvm.amdgcn.mfma.{dt_map[wmma.src[-1].dtype.scalar()]}" + \ - f".16x16x16{dt_map[wmma.src[0].dtype.scalar()]}(" + ", ".join([f"{ldt(w.dtype)} {ctx[w]}" for w in wmma.src]) + ", i32 0, i32 0, i32 0)" + if cdna: + return f" {ctx[wmma]} = call {ldt(wmma.dtype)} @llvm.amdgcn.mfma.{dt_map[wmma.src[-1].dtype.scalar()]}" + \ + f".16x16x16{dt_map[wmma.src[0].dtype.scalar()]}(" + ", ".join([f"{ldt(w.dtype)} {ctx[w]}" for w in wmma.src]) + ", i32 0, i32 0, i32 0)" # https://github.com/llvm/llvm-project/blob/main/llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.amdgcn.wmma_32.ll # example: %wmma0 = call <8 x float> @llvm.amdgcn.wmma.f32.16x16x16.f16(<16 x half> %v99,<16 x half> %v100,<8 x float> %v101) return f" {ctx[wmma]} = call {ldt(wmma.dtype)} @llvm.amdgcn.wmma.{dt_map[wmma.src[-1].dtype.scalar()]}.16x16x16." + \ @@ -58,10 +59,11 @@ def render_wmma_amd(ctx, wmma: UOp, arch: str) -> str: # llvm ops, lop[][] unsigned_lop = { Ops.ADD: "add", Ops.MUL: "mul", Ops.IDIV: "udiv", Ops.MOD: "urem", - Ops.CMPLT: "icmp ult", Ops.CMPNE: "icmp ne", Ops.OR: "or", Ops.AND: "and", Ops.XOR: "xor", } + Ops.CMPLT: "icmp ult", Ops.CMPNE: "icmp ne", Ops.CMPEQ: "icmp eq", Ops.OR: "or", Ops.AND: "and", Ops.XOR: "xor",} signed_lop = {**unsigned_lop, Ops.ADD: "add nsw", Ops.CMPLT: "icmp slt", Ops.IDIV: "sdiv", Ops.MOD: "srem"} flags = " nsz arcp contract afn" -float_lop = {Ops.ADD: "fadd"+flags, Ops.MUL: "fmul"+flags, Ops.CMPLT: f"fcmp{flags} ult", Ops.CMPNE: f"fcmp{flags} une", Ops.FDIV: "fdiv"+flags} +float_lop = {Ops.ADD: "fadd"+flags, Ops.MUL: "fmul"+flags, Ops.CMPLT: f"fcmp{flags} ult", + Ops.CMPNE: f"fcmp{flags} une", Ops.CMPEQ: f"fcmp{flags} oeq", Ops.FDIV: "fdiv"+flags} lop = {**{x:unsigned_lop for x in (dtypes.bool,)+dtypes.uints}, **{x:signed_lop for x in dtypes.sints}, **{x:float_lop for x in dtypes.floats}} base_rewrite = PatternMatcher([ @@ -90,6 +92,8 @@ base_rewrite = PatternMatcher([ # unary/binary/ternary ops (UPat(Ops.BITCAST, name="x"), lambda ctx,x: f" {ctx[x]} = bitcast {ldt(x.src[0].dtype)} {ctx[x.src[0]]} to {ldt(x.dtype)}"), (UPat(Ops.CAST, name="x"), lambda ctx,x: f" {ctx[x]} = {lcast(x.src[0].dtype, x.dtype)} {ldt(x.src[0].dtype)} {ctx[x.src[0]]} to {ldt(x.dtype)}"), + (UPat(Ops.TRUNC, name="x"), + lambda ctx,x: f" {ctx[x]} = call {ldt(x.dtype)} @llvm.trunc.{ldt(x.dtype.scalar())}({ldt(x.src[0].dtype)} {ctx[x.src[0]]})"), (UPat(GroupOp.Binary, name="x"), lambda ctx,x: f" {ctx[x]} = {lop[x.src[0].dtype.scalar()][x.op]} {ldt(x.src[0].dtype)} {ctx[x.src[0]]}, {ctx[x.src[1]]}"), (UPat(Ops.WHERE, name="x"), lambda ctx,x: @@ -97,13 +101,13 @@ base_rewrite = PatternMatcher([ # range (UPat(Ops.RANGE, name="x"), lambda ctx,x: - f" br label %loop_entry_{x.arg}\nloop_entry_{x.arg}:\n" - f" br label %loop_body_{x.arg}\nloop_body_{x.arg}:\n" - f" {ctx[x]} = phi {ldt(x.dtype)} [ 0, %loop_entry_{x.arg} ], [ {ctx[x]}phi, %loop_latch_{x.arg} ]"), + f" br label %loop_entry_{x.arg[0]}\nloop_entry_{x.arg[0]}:\n" + f" br label %loop_body_{x.arg[0]}\nloop_body_{x.arg[0]}:\n" + f" {ctx[x]} = phi {ldt(x.dtype)} [ 0, %loop_entry_{x.arg[0]} ], [ {ctx[x]}phi, %loop_latch_{x.arg[0]} ]"), (UPat(Ops.ENDRANGE, name="x"), lambda ctx,x: - f" br label %loop_latch_{x.src[0].arg}\nloop_latch_{x.src[0].arg}:\n" + f" br label %loop_latch_{x.src[0].arg[0]}\nloop_latch_{x.src[0].arg[0]}:\n" f" {ctx[x.src[0]]}phi = add i32 {ctx[x.src[0]]}, 1\n {ctx[x]} = icmp ult i32 {ctx[x.src[0]]}phi, {ctx[x.src[0].src[0]]}\n" - f" br i1 {ctx[x]}, label %loop_body_{x.src[0].arg}, label %loop_exit_{x.src[0].arg}\nloop_exit_{x.src[0].arg}:"), + f" br i1 {ctx[x]}, label %loop_body_{x.src[0].arg[0]}, label %loop_exit_{x.src[0].arg[0]}\nloop_exit_{x.src[0].arg[0]}:"), # if (UPat(Ops.IF, name="x"), lambda ctx,x: f" br i1 {ctx[x.src[0]]}, label %ifbody_{ctx[x][1:]}, label %ifskip_{ctx[x][1:]}\nifbody_{ctx[x][1:]}:"), @@ -119,11 +123,10 @@ class LLVMRenderer(Renderer): has_local = False global_max: tuple[int, ...] | None = None string_rewrite = base_rewrite + PatternMatcher([(UPat(Ops.WMMA, name="wmma"), render_wmma_amx)]) + code_for_op = {Ops.FDIV: lambda: None} if AMX: tensor_cores = tc.amx extra_matcher = PatternMatcher([ - # rewrite RECIP with FDIV - (UPat(Ops.RECIP, name="x"), lambda x: UOp(Ops.FDIV, x.dtype, (x.const_like(1), x.src[0]))), # rewrite cast to bool to CMPNE 0 (UPat(Ops.CAST, dtype=dtypes.bool, name="x"), lambda x: x.src[0] != x.src[0].const_like(0)), # rewrite MAX to CMPLT + WHERE @@ -193,21 +196,28 @@ class LLVMRenderer(Renderer): barrier = 'fence syncscope("workgroup") release\ntail call void @llvm.amdgcn.s.barrier()\nfence syncscope("workgroup") acquire\n' code_for_workitem = {"g": lambda x: f"tail call i32 @llvm.amdgcn.workgroup.id.{chr(120+int(x))}()", "l": lambda x: f"tail call i32 @llvm.amdgcn.workitem.id.{chr(120+int(x))}()"} +# https://rocm.docs.amd.com/projects/llvm-project/en/latest/LLVM/llvm/html/AMDGPUUsage.html#llvm-ir-intrinsics +# llvm.log2/llvm.exp2 don't support double +llvm_intrinsics = {Ops.SQRT: "sqrt"} class AMDLLVMRenderer(LLVMRenderer): device = "AMD" has_local = True shared_max = AMDRenderer.shared_max global_max = AMDRenderer.global_max abi = "amdgpu_kernel" + code_for_op = {**LLVMRenderer.code_for_op, **{op: lambda: None for op in llvm_intrinsics}} string_rewrite = PatternMatcher([ (UPat(Ops.SPECIAL, name="x"), lambda ctx, x: f" {ctx[x]} = " + f"{ code_for_workitem[x.arg[0][0]](x.arg[0][-1])}; "), + (UPat(tuple(llvm_intrinsics), name="x"), + lambda ctx, x: f" {ctx[x]} = call {ldt(x.dtype)} @llvm.{llvm_intrinsics[x.op]}.{ldt(x.dtype.scalar())}({ldt(x.src[0].dtype)} {ctx[x.src[0]]})"), (UPat(Ops.BARRIER), lambda ctx: barrier), - (UPat(Ops.CAST, name="x", dtype=dtypes.half.vec(16), src=UPat.var("y", dtypes.half.vec(8))), lambda ctx, x, y: f" {ctx[x]} = shufflevector "\ - f"<8 x half> {ctx[y]}, <8 x half> zeroinitializer, <16 x i32> <{', '.join([f'i32 {i}, i32 {j}' for i, j in zip(range(0, 8), range(8, 16))])}>"), - (UPat(Ops.CAST, name="x", dtype=dtypes.half.vec(8), src=UPat.var("y", dtypes.half.vec(16))), lambda ctx, x, y: - f" {ctx[x]}= shufflevector <16 x half> {ctx[y]}, <16 x half> undef, <8 x i32> <{', '.join([f'i32 {x}' for x in range(0, 16, 2)])}>"), ]) + base_rewrite - extra_matcher = LLVMRenderer.extra_matcher + extra_matcher = LLVMRenderer.extra_matcher + PatternMatcher([ + (UPat(Ops.CAST, name="x", dtype=dtypes.half.vec(16), src=UPat.var("y", dtypes.half.vec(8))), + lambda x, y: UOp(Ops.VECTORIZE, dtypes.half.vec(16), tuple(y.gep(i // 2) if i % 2 == 0 else UOp.const(dtypes.half, 0.0) for i in range(16)))), + (UPat(Ops.CAST, name="x", dtype=dtypes.half.vec(8), src=UPat.var("y", dtypes.half.vec(16))), + lambda x, y: UOp(Ops.VECTORIZE, dtypes.half.vec(8), tuple(y.gep(i * 2) for i in range(8)))), + ]) def _render_footer(self, uops: list[UOp]) -> str: # TODO: this is copied from cstyle requiredMaxThreadsPerBlock = prod(u.arg[1] for u in uops if u.op is Ops.SPECIAL and u.arg[0][0] == "l") @@ -217,7 +227,14 @@ class AMDLLVMRenderer(LLVMRenderer): def __init__(self, arch:str): self.arch = arch self.tensor_cores = AMDRenderer.get_tensor_cores(arch) - self.string_rewrite += PatternMatcher([(UPat(Ops.WMMA, name="wmma"), lambda ctx, wmma, arch=arch: render_wmma_amd(ctx, wmma, arch))]) + self.is_cdna = arch.split(":")[0] in {"gfx942", "gfx950"} + self.string_rewrite += PatternMatcher([(UPat(Ops.WMMA, name="wmma"), lambda ctx, wmma, cdna=self.is_cdna: render_wmma_amd(ctx, wmma, cdna))]) + if self.is_cdna: + self.extra_matcher += PatternMatcher([ + (UPat(Ops.WMMA, name="x", dtype=dtypes.float.vec(4)), + lambda x: UOp(Ops.WMMA, dtypes.float.vec(4), (x.src[0].bitcast(dtypes.uint16.vec(4)), x.src[1].bitcast(dtypes.uint16.vec(4)), + x.src[2]), (*x.arg,)) if x.src[0].dtype == dtypes.bfloat16.vec(4) else None) + ]) if self.arch.split(":")[0] == "gfx1100": self.extra_matcher += PatternMatcher([ (UPat(Ops.WMMA, name="x", dtype=dtypes.half.vec(8)), diff --git a/tinygrad_repo/tinygrad/renderer/ptx.py b/tinygrad_repo/tinygrad/renderer/ptx.py index 96db0836c..e5cd17026 100644 --- a/tinygrad_repo/tinygrad/renderer/ptx.py +++ b/tinygrad_repo/tinygrad/renderer/ptx.py @@ -1,12 +1,12 @@ from typing import cast, Callable import struct from collections import defaultdict -from tinygrad.opt import tc +from tinygrad.codegen.opt import tc from tinygrad.uop.ops import Ops, UOp, PatternMatcher, UPat, GroupOp from tinygrad.dtype import dtypes, DType, PtrDType, AddrSpace from tinygrad.renderer import Renderer from tinygrad.renderer.cstyle import CUDARenderer -from tinygrad.helpers import flatten, get_single_element +from tinygrad.helpers import flatten, get_single_element, prod def render_val(x, dtype): if dtypes.is_float(dtype): @@ -19,6 +19,7 @@ asm_for_op: dict[Ops, Callable] = { Ops.RECIP: lambda d,a,dt,name: f"rcp{'.approx' if dtypes.is_float(dt) else ''}.{name} {d}, {a};", Ops.EXP2: lambda d,a,dt,name: f"ex2.approx.{name} {d}, {a};", Ops.LOG2: lambda d,a,dt,name: f"lg2.approx.{name} {d}, {a};", Ops.SIN: lambda d,a,dt,name: f"sin.approx.{name} {d}, {a};", Ops.SQRT: lambda d,a,dt,name: f"sqrt.approx.{name} {d}, {a};", + Ops.TRUNC: lambda d,a,dt,name: f"cvt.rzi.{name}.{name} {d}, {a};", Ops.SHR: lambda d,a,b,dt,name: f"shr.{name} {d}, {a}, {b};", Ops.SHL: lambda d,a,b,dt,name: f"shl.b{name[1:]} {d}, {a}, {b};", Ops.ADD: lambda d,a,b,dt,name: f"{'or' if dt == dtypes.bool else 'add'}.{name} {d}, {a}, {b};", Ops.MUL: lambda d,a,b,dt,name: f"{'and' if dt == dtypes.bool else 'mul'}{'.lo' if dtypes.is_int(dt) else ''}.{name} {d}, {a}, {b};", @@ -26,18 +27,19 @@ asm_for_op: dict[Ops, Callable] = { Ops.AND: lambda d,a,b,dt, name: f"and.pred {d}, {a}, {b};" if dt == dtypes.bool else f"and.b{name[1:]} {d}, {a}, {b};", Ops.OR: lambda d,a,b,dt, name: f"or.pred {d}, {a}, {b};" if dt == dtypes.bool else f"or.b{name[1:]} {d}, {a}, {b};", Ops.IDIV: lambda d,a,b,dt,name: f"div.{name} {d}, {a}, {b};", Ops.MOD: lambda d,a,b,dt,name: f"rem.{name} {d}, {a}, {b};", - Ops.MAX: lambda d,a,b,dt,name: f"max.{name} {d}, {a}, {b};", + Ops.MAX: lambda d,a,b,dt,name: f"max.{name} {d}, {a}, {b};", Ops.CMPEQ: lambda d,a,b,dt,name: f"setp.eq.{name} {d}, {a}, {b};", Ops.CMPLT: lambda d,a,b,dt,name: f"setp.lt.{name} {d}, {a}, {b};", Ops.CMPNE: lambda d,a,b,dt,name: f"setp.ne.{name} {d}, {a}, {b};", Ops.MULACC: lambda d,a,b,c,dt,name: f"{'fma.rn' if dtypes.is_float(dt) else 'mad.lo'}.{name} {d}, {a}, {b}, {c};", Ops.WHERE: lambda d,a,b,c,dt,name: [f"@{a} mov.{name} {d}, {b};", f"@!{a} mov.{name} {d}, {c};"] if dt == dtypes.bool else \ f"selp.{'b16' if name == 'f16' else name} {d}, {b}, {c}, {a};" } -supports_half = (Ops.EXP2, Ops.ADD, Ops.MUL, Ops.MAX, Ops.CMPLT, Ops.WHERE) +supports_half = (Ops.EXP2, Ops.ADD, Ops.MUL, Ops.MAX, Ops.CMPLT, Ops.WHERE, Ops.TRUNC) doesnt_support_half: tuple[Ops, ...] = tuple(op for op in asm_for_op.keys() if op not in supports_half) ptx_matcher = PatternMatcher([ # bool CMPNE is XOR, bool CMPLT is XOR+AND (universal makes this slow, this is for renderer only) (UPat.var('x', dtype=dtypes.bool).ne(UPat.var('y')), lambda x,y: x^y), + (UPat.var('x', dtype=dtypes.bool).alu(Ops.CMPEQ, UPat.var('y')), lambda x,y: (x^y)^True), (UPat.var('x', dtype=dtypes.bool) 1 else ctx.r[var]};"), (UPat(Ops.SPECIAL, name="x"), lambda ctx,x: f"mov.u32 %{x.arg[0]}, %{'ctaid' if x.arg[0][0] == 'g' else 'tid'}.{chr(120+int(x.arg[0][-1]))};"), (UPat(Ops.DEFINE_GLOBAL, name="x"), lambda ctx, x: f"ld.param.{ctx.types[dtypes.ulong]} {ctx.r[x]}, [data{x.arg}+0];"), - (UPat((Ops.CMPLT, Ops.CMPNE), name="x", allow_any_len=True, src=(UPat.var("src0"),)), + (UPat((Ops.CMPLT, Ops.CMPNE, Ops.CMPEQ), name="x", allow_any_len=True, src=(UPat.var("src0"),)), lambda ctx, x, src0: ctx.code_for_op[x.op](ctx.r[x], *[ctx.r[v] for v in x.src], src0.dtype, ctx.types[src0.dtype])), (UPat(GroupOp.ALU, name="x"), lambda ctx, x: ctx.code_for_op[x.op](ctx.r[x], *[ctx.r[v] for v in x.src], x.dtype, ctx.types[x.dtype])), (UPat(Ops.BITCAST, name="x", src=(UPat.var("a"),), allow_any_len=True), lambda ctx, x, a: f"mov.b{ctx.types[x.dtype][1:]} {ctx.r[x]}, {ctx.r[a]};"), @@ -117,7 +119,7 @@ string_rewrite = PatternMatcher([ ctx.code_for_op[Ops.CMPLT](ctx.r[x], ctx.r[x.src[0]], ctx.r[src0.src[0]], dtypes.int, ctx.types[dtypes.int]), f"@{ctx.r[x]} bra LOOP_{ctx.r[src0][1:]};"]), (UPat(Ops.DEFINE_LOCAL, name="x"), - lambda ctx, x: [f".shared .align 16 .b8 {x.arg}[{x.dtype.size*x.dtype.itemsize}];", f"mov.u64 {ctx.r[x]}, {x.arg}[0];"]), + lambda ctx, x: [f".shared .align 16 .b8 local{x.arg}[{x.dtype.size*x.dtype.itemsize}];", f"mov.u64 {ctx.r[x]}, local{x.arg}[0];"]), (UPat(Ops.IF, name="x"), lambda ctx, x: f"@!{ctx.r[x.src[0]]} bra IF_{ctx.r[x.src[0]][1:]}_{ctx.uops.index(x)};"), (UPat(Ops.ENDIF, name="x"), lambda ctx, x: f"IF_{ctx.r[x.src[0].src[0]][1:]}_{ctx.uops.index(x.src[0])}:"), (UPat(Ops.WMMA, name="x"), lambda ctx, x: list(render_wmma(ctx, x))), @@ -150,11 +152,12 @@ class PTXRenderer(Renderer): mem_types: dict[DType, str] = {**types, dtypes.int8: "s8", dtypes.uint8: "u8", dtypes.bool: "u8", dtypes.float16: "b16"} - def render_kernel(self, kernel, function_name, bufs, regs) -> str: + def render_kernel(self, kernel, function_name, bufs, regs, uops) -> str: def fmt(line): return line if line[0]=="$" else "\t" + line.replace(" ", "\t" if len(line.split(" ")[0]) > 7 else "\t\t", 1) kernel = '\n'.join(map(fmt, [f".reg .{reg.split('_')[-2]} %{reg}<{cnt}>;" for reg,cnt in regs] + kernel + ["ret;"])) + launch_bounds = prod(u.arg[1] for u in uops if u.op is Ops.SPECIAL and u.arg[0][0] == "l") params = ',\n\t'.join([f".param .{'u64' if dtype.__class__ == PtrDType else self.types[dtype]} {name}" for name,dtype in bufs]) - return f"{self.kernel_prefix} {function_name}(\n\t{params}\n)\n{{\n{kernel}\n}}" + return f"{self.kernel_prefix.format(launch_bounds=launch_bounds)} {function_name} (\n\t{params}\n)\n.maxntid {launch_bounds}\n{{\n{kernel}\n}}" def render(self, uops:list[UOp]) -> str: kernel:list[str] = [] @@ -207,12 +210,12 @@ class PTXRenderer(Renderer): elif u.op is Ops.DEFINE_GLOBAL: bufs.append((f"data{u.arg}", u.dtype)) elif u.op is Ops.WMMA: # registers for packing/unpacking input and acc - self.wmma_r = [[ssa("wmma_in", dtype="b32") for _ in range(0, len(r[u.src[0]]), 4 // u.arg[2].itemsize)], - [ssa("wmma_in", dtype="b32") for _ in range(0, len(r[u.src[1]]), 4 // u.arg[2].itemsize)], - [ssa("wmma_acc", dtype="b32") for _ in range(0, len(r[u.src[2]]), 4 // u.arg[3].itemsize)]] + self.wmma_r = [[ssa("wmma_in", dtype="b32") for _ in range(0, len(r[u.src[0]]), 4 // u.src[0].dtype.scalar().itemsize)], + [ssa("wmma_in", dtype="b32") for _ in range(0, len(r[u.src[1]]), 4 // u.src[0].dtype.scalar().itemsize)], + [ssa("wmma_acc", dtype="b32") for _ in range(0, len(r[u.src[2]]), 4 // u.dtype.scalar().itemsize)]] r[u] = [ssa("wmma", dtype=self.types[u.dtype.scalar()]) for _ in range(u.dtype.count)] prefix, dtype = {Ops.CAST: ("cast", None), Ops.BITCAST: ("cast", None), Ops.ENDRANGE: ("pred", "pred"), Ops.RANGE: ("ridx", None), - Ops.DEFINE_VAR: ("dat", None), Ops.CONST: ("const", None), Ops.DEFINE_LOCAL:("local",self.types[dtypes.ulong]), + Ops.DEFINE_VAR: ("dat", None), Ops.CONST: ("const", None), Ops.DEFINE_LOCAL: ("local",self.types[dtypes.ulong]), Ops.DEFINE_GLOBAL: ("dat", self.types[dtypes.ulong]), **{op: ("alu", None) for op in GroupOp.ALU}}.get(u.op, (None, None)) if prefix: r[u] = ssa(prefix, u, dtype) @@ -221,4 +224,4 @@ class PTXRenderer(Renderer): kernel.extend([l] if isinstance(l, str) else l) if u.op is Ops.SPECIAL: kernel = [f".reg .u32 %{u.arg[0]};"] + kernel - return self.render_kernel(kernel, name, bufs, c.items()) + return self.render_kernel(kernel, name, bufs, c.items(), uops) diff --git a/tinygrad_repo/tinygrad/runtime/autogen/am/navi10.py b/tinygrad_repo/tinygrad/runtime/autogen/am/navi10.py deleted file mode 100644 index 1960cec8c..000000000 --- a/tinygrad_repo/tinygrad/runtime/autogen/am/navi10.py +++ /dev/null @@ -1,40774 +0,0 @@ -# mypy: ignore-errors -# -*- coding: utf-8 -*- -# -# TARGET arch is: [] -# WORD_SIZE is: 8 -# POINTER_SIZE is: 8 -# LONGDOUBLE_SIZE is: 16 -# -import ctypes - - - - -_navi10_ENUM_HEADER = True # macro -ENUMS_GDS_PERFCOUNT_SELECT_H = True # macro -SQ_WAVE_TYPE_PS0 = 0x00000000 # macro -SQIND_GLOBAL_REGS_OFFSET = 0x00000000 # macro -SQIND_GLOBAL_REGS_SIZE = 0x00000008 # macro -SQIND_LOCAL_REGS_OFFSET = 0x00000008 # macro -SQIND_LOCAL_REGS_SIZE = 0x00000008 # macro -SQIND_WAVE_HWREGS_OFFSET = 0x00000100 # macro -SQIND_WAVE_HWREGS_SIZE = 0x00000100 # macro -SQIND_WAVE_SGPRS_OFFSET = 0x00000200 # macro -SQIND_WAVE_SGPRS_SIZE = 0x00000200 # macro -SQIND_WAVE_VGPRS_OFFSET = 0x00000400 # macro -SQIND_WAVE_VGPRS_SIZE = 0x00000400 # macro -SQ_GFXDEC_BEGIN = 0x0000a000 # macro -SQ_GFXDEC_END = 0x0000c000 # macro -SQ_GFXDEC_STATE_ID_SHIFT = 0x0000000a # macro -SQDEC_BEGIN = 0x00002300 # macro -SQDEC_END = 0x000023ff # macro -SQPERFSDEC_BEGIN = 0x0000d9c0 # macro -SQPERFSDEC_END = 0x0000da40 # macro -SQPERFDDEC_BEGIN = 0x0000d1c0 # macro -SQPERFDDEC_END = 0x0000d240 # macro -SQGFXUDEC_BEGIN = 0x0000c330 # macro -SQGFXUDEC_END = 0x0000c380 # macro -SQPWRDEC_BEGIN = 0x0000f08c # macro -SQPWRDEC_END = 0x0000f094 # macro -SQ_DISPATCHER_GFX_MIN = 0x00000010 # macro -SQ_DISPATCHER_GFX_CNT_PER_RING = 0x00000008 # macro -SQ_MAX_PGM_SGPRS = 0x00000068 # macro -SQ_MAX_PGM_VGPRS = 0x00000100 # macro -SQ_EX_MODE_EXCP_VALU_BASE = 0x00000000 # macro -SQ_EX_MODE_EXCP_VALU_SIZE = 0x00000007 # macro -SQ_EX_MODE_EXCP_INVALID = 0x00000000 # macro -SQ_EX_MODE_EXCP_INPUT_DENORM = 0x00000001 # macro -SQ_EX_MODE_EXCP_DIV0 = 0x00000002 # macro -SQ_EX_MODE_EXCP_OVERFLOW = 0x00000003 # macro -SQ_EX_MODE_EXCP_UNDERFLOW = 0x00000004 # macro -SQ_EX_MODE_EXCP_INEXACT = 0x00000005 # macro -SQ_EX_MODE_EXCP_INT_DIV0 = 0x00000006 # macro -SQ_EX_MODE_EXCP_ADDR_WATCH0 = 0x00000007 # macro -SQ_EX_MODE_EXCP_MEM_VIOL = 0x00000008 # macro -SQ_EX_MODE_EXCP_HI_ADDR_WATCH1 = 0x00000000 # macro -SQ_EX_MODE_EXCP_HI_ADDR_WATCH2 = 0x00000001 # macro -SQ_EX_MODE_EXCP_HI_ADDR_WATCH3 = 0x00000002 # macro -INST_ID_PRIV_START = 0x80000000 # macro -INST_ID_ECC_INTERRUPT_MSG = 0xfffffff0 # macro -INST_ID_TTRACE_NEW_PC_MSG = 0xfffffff1 # macro -INST_ID_HW_TRAP = 0xfffffff2 # macro -INST_ID_KILL_SEQ = 0xfffffff3 # macro -INST_ID_SPI_WREXEC = 0xfffffff4 # macro -INST_ID_HOST_REG_TRAP_MSG = 0xfffffffe # macro -SIMM16_WAITCNT_VM_CNT_START = 0x00000000 # macro -SIMM16_WAITCNT_VM_CNT_SIZE = 0x00000004 # macro -SIMM16_WAITCNT_EXP_CNT_START = 0x00000004 # macro -SIMM16_WAITCNT_EXP_CNT_SIZE = 0x00000003 # macro -SIMM16_WAITCNT_LGKM_CNT_START = 0x00000008 # macro -SIMM16_WAITCNT_LGKM_CNT_SIZE = 0x00000004 # macro -SIMM16_WAITCNT_VM_CNT_HI_START = 0x0000000e # macro -SIMM16_WAITCNT_VM_CNT_HI_SIZE = 0x00000002 # macro -SIMM16_WAITCNT_DEPCTR_SA_SDST_START = 0x00000000 # macro -SIMM16_WAITCNT_DEPCTR_SA_SDST_SIZE = 0x00000001 # macro -SIMM16_WAITCNT_DEPCTR_VA_VCC_START = 0x00000001 # macro -SIMM16_WAITCNT_DEPCTR_VA_VCC_SIZE = 0x00000001 # macro -SIMM16_WAITCNT_DEPCTR_VM_VSRC_START = 0x00000002 # macro -SIMM16_WAITCNT_DEPCTR_VM_VSRC_SIZE = 0x00000003 # macro -SIMM16_WAITCNT_DEPCTR_VA_SSRC_START = 0x00000008 # macro -SIMM16_WAITCNT_DEPCTR_VA_SSRC_SIZE = 0x00000001 # macro -SIMM16_WAITCNT_DEPCTR_VA_SDST_START = 0x00000009 # macro -SIMM16_WAITCNT_DEPCTR_VA_SDST_SIZE = 0x00000003 # macro -SIMM16_WAITCNT_DEPCTR_VA_VDST_START = 0x0000000c # macro -SIMM16_WAITCNT_DEPCTR_VA_VDST_SIZE = 0x00000004 # macro -SQ_EDC_FUE_CNTL_SIMD0 = 0x00000000 # macro -SQ_EDC_FUE_CNTL_SIMD1 = 0x00000001 # macro -SQ_EDC_FUE_CNTL_SIMD2 = 0x00000002 # macro -SQ_EDC_FUE_CNTL_SIMD3 = 0x00000003 # macro -SQ_EDC_FUE_CNTL_SQ = 0x00000004 # macro -SQ_EDC_FUE_CNTL_LDS = 0x00000005 # macro -SQ_EDC_FUE_CNTL_TD = 0x00000006 # macro -SQ_EDC_FUE_CNTL_TA = 0x00000007 # macro -SQ_EDC_FUE_CNTL_TCP = 0x00000008 # macro -CSDATA_TYPE_WIDTH = 0x00000002 # macro -CSDATA_ADDR_WIDTH = 0x00000007 # macro -CSDATA_DATA_WIDTH = 0x00000020 # macro -CSCNTL_TYPE_WIDTH = 0x00000002 # macro -CSCNTL_ADDR_WIDTH = 0x00000007 # macro -CSCNTL_DATA_WIDTH = 0x00000020 # macro -GSTHREADID_SIZE = 0x00000002 # macro -SEM_ECC_ERROR = 0x00000000 # macro -SEM_TRANS_ERROR = 0x00000001 # macro -SEM_RESP_FAILED = 0x00000002 # macro -SEM_RESP_PASSED = 0x00000003 # macro -IQ_QUEUE_SLEEP = 0x00000000 # macro -IQ_OFFLOAD_RETRY = 0x00000001 # macro -IQ_SCH_WAVE_MSG = 0x00000002 # macro -IQ_SEM_REARM = 0x00000003 # macro -IQ_DEQUEUE_RETRY = 0x00000004 # macro -IQ_INTR_TYPE_PQ = 0x00000000 # macro -IQ_INTR_TYPE_IB = 0x00000001 # macro -IQ_INTR_TYPE_MQD = 0x00000002 # macro -VMID_SZ = 0x00000004 # macro -CONFIG_SPACE_START = 0x00002000 # macro -CONFIG_SPACE_END = 0x00009fff # macro -CONFIG_SPACE1_START = 0x00002000 # macro -CONFIG_SPACE1_END = 0x00002bff # macro -CONFIG_SPACE2_START = 0x00003000 # macro -CONFIG_SPACE2_END = 0x00009fff # macro -UCONFIG_SPACE_START = 0x0000c000 # macro -UCONFIG_SPACE_END = 0x0000ffff # macro -PERSISTENT_SPACE_START = 0x00002c00 # macro -PERSISTENT_SPACE_END = 0x00002fff # macro -CONTEXT_SPACE_START = 0x0000a000 # macro -CONTEXT_SPACE_END = 0x0000bfff # macro -ROM_SIGNATURE = 0x0000aa55 # macro -IP_USB_PD_REVISION_ID = 0x00000000 # macro - -# values for enumeration 'GDS_PERFCOUNT_SELECT' -GDS_PERFCOUNT_SELECT__enumvalues = { - 0: 'GDS_PERF_SEL_DS_ADDR_CONFL', - 1: 'GDS_PERF_SEL_DS_BANK_CONFL', - 2: 'GDS_PERF_SEL_WBUF_FLUSH', - 3: 'GDS_PERF_SEL_WR_COMP', - 4: 'GDS_PERF_SEL_WBUF_WR', - 5: 'GDS_PERF_SEL_RBUF_HIT', - 6: 'GDS_PERF_SEL_RBUF_MISS', - 7: 'GDS_PERF_SEL_SE0_SH0_NORET', - 8: 'GDS_PERF_SEL_SE0_SH0_RET', - 9: 'GDS_PERF_SEL_SE0_SH0_ORD_CNT', - 10: 'GDS_PERF_SEL_SE0_SH0_2COMP_REQ', - 11: 'GDS_PERF_SEL_SE0_SH0_ORD_WAVE_VALID', - 12: 'GDS_PERF_SEL_SE0_SH0_GDS_DATA_VALID', - 13: 'GDS_PERF_SEL_SE0_SH0_GDS_STALL_BY_ORD', - 14: 'GDS_PERF_SEL_SE0_SH0_GDS_WR_OP', - 15: 'GDS_PERF_SEL_SE0_SH0_GDS_RD_OP', - 16: 'GDS_PERF_SEL_SE0_SH0_GDS_ATOM_OP', - 17: 'GDS_PERF_SEL_SE0_SH0_GDS_REL_OP', - 18: 'GDS_PERF_SEL_SE0_SH0_GDS_CMPXCH_OP', - 19: 'GDS_PERF_SEL_SE0_SH0_GDS_BYTE_OP', - 20: 'GDS_PERF_SEL_SE0_SH0_GDS_SHORT_OP', - 21: 'GDS_PERF_SEL_SE0_SH1_NORET', - 22: 'GDS_PERF_SEL_SE0_SH1_RET', - 23: 'GDS_PERF_SEL_SE0_SH1_ORD_CNT', - 24: 'GDS_PERF_SEL_SE0_SH1_2COMP_REQ', - 25: 'GDS_PERF_SEL_SE0_SH1_ORD_WAVE_VALID', - 26: 'GDS_PERF_SEL_SE0_SH1_GDS_DATA_VALID', - 27: 'GDS_PERF_SEL_SE0_SH1_GDS_STALL_BY_ORD', - 28: 'GDS_PERF_SEL_SE0_SH1_GDS_WR_OP', - 29: 'GDS_PERF_SEL_SE0_SH1_GDS_RD_OP', - 30: 'GDS_PERF_SEL_SE0_SH1_GDS_ATOM_OP', - 31: 'GDS_PERF_SEL_SE0_SH1_GDS_REL_OP', - 32: 'GDS_PERF_SEL_SE0_SH1_GDS_CMPXCH_OP', - 33: 'GDS_PERF_SEL_SE0_SH1_GDS_BYTE_OP', - 34: 'GDS_PERF_SEL_SE0_SH1_GDS_SHORT_OP', - 35: 'GDS_PERF_SEL_SE1_SH0_NORET', - 36: 'GDS_PERF_SEL_SE1_SH0_RET', - 37: 'GDS_PERF_SEL_SE1_SH0_ORD_CNT', - 38: 'GDS_PERF_SEL_SE1_SH0_2COMP_REQ', - 39: 'GDS_PERF_SEL_SE1_SH0_ORD_WAVE_VALID', - 40: 'GDS_PERF_SEL_SE1_SH0_GDS_DATA_VALID', - 41: 'GDS_PERF_SEL_SE1_SH0_GDS_STALL_BY_ORD', - 42: 'GDS_PERF_SEL_SE1_SH0_GDS_WR_OP', - 43: 'GDS_PERF_SEL_SE1_SH0_GDS_RD_OP', - 44: 'GDS_PERF_SEL_SE1_SH0_GDS_ATOM_OP', - 45: 'GDS_PERF_SEL_SE1_SH0_GDS_REL_OP', - 46: 'GDS_PERF_SEL_SE1_SH0_GDS_CMPXCH_OP', - 47: 'GDS_PERF_SEL_SE1_SH0_GDS_BYTE_OP', - 48: 'GDS_PERF_SEL_SE1_SH0_GDS_SHORT_OP', - 49: 'GDS_PERF_SEL_SE1_SH1_NORET', - 50: 'GDS_PERF_SEL_SE1_SH1_RET', - 51: 'GDS_PERF_SEL_SE1_SH1_ORD_CNT', - 52: 'GDS_PERF_SEL_SE1_SH1_2COMP_REQ', - 53: 'GDS_PERF_SEL_SE1_SH1_ORD_WAVE_VALID', - 54: 'GDS_PERF_SEL_SE1_SH1_GDS_DATA_VALID', - 55: 'GDS_PERF_SEL_SE1_SH1_GDS_STALL_BY_ORD', - 56: 'GDS_PERF_SEL_SE1_SH1_GDS_WR_OP', - 57: 'GDS_PERF_SEL_SE1_SH1_GDS_RD_OP', - 58: 'GDS_PERF_SEL_SE1_SH1_GDS_ATOM_OP', - 59: 'GDS_PERF_SEL_SE1_SH1_GDS_REL_OP', - 60: 'GDS_PERF_SEL_SE1_SH1_GDS_CMPXCH_OP', - 61: 'GDS_PERF_SEL_SE1_SH1_GDS_BYTE_OP', - 62: 'GDS_PERF_SEL_SE1_SH1_GDS_SHORT_OP', - 63: 'GDS_PERF_SEL_SE2_SH0_NORET', - 64: 'GDS_PERF_SEL_SE2_SH0_RET', - 65: 'GDS_PERF_SEL_SE2_SH0_ORD_CNT', - 66: 'GDS_PERF_SEL_SE2_SH0_2COMP_REQ', - 67: 'GDS_PERF_SEL_SE2_SH0_ORD_WAVE_VALID', - 68: 'GDS_PERF_SEL_SE2_SH0_GDS_DATA_VALID', - 69: 'GDS_PERF_SEL_SE2_SH0_GDS_STALL_BY_ORD', - 70: 'GDS_PERF_SEL_SE2_SH0_GDS_WR_OP', - 71: 'GDS_PERF_SEL_SE2_SH0_GDS_RD_OP', - 72: 'GDS_PERF_SEL_SE2_SH0_GDS_ATOM_OP', - 73: 'GDS_PERF_SEL_SE2_SH0_GDS_REL_OP', - 74: 'GDS_PERF_SEL_SE2_SH0_GDS_CMPXCH_OP', - 75: 'GDS_PERF_SEL_SE2_SH0_GDS_BYTE_OP', - 76: 'GDS_PERF_SEL_SE2_SH0_GDS_SHORT_OP', - 77: 'GDS_PERF_SEL_SE2_SH1_NORET', - 78: 'GDS_PERF_SEL_SE2_SH1_RET', - 79: 'GDS_PERF_SEL_SE2_SH1_ORD_CNT', - 80: 'GDS_PERF_SEL_SE2_SH1_2COMP_REQ', - 81: 'GDS_PERF_SEL_SE2_SH1_ORD_WAVE_VALID', - 82: 'GDS_PERF_SEL_SE2_SH1_GDS_DATA_VALID', - 83: 'GDS_PERF_SEL_SE2_SH1_GDS_STALL_BY_ORD', - 84: 'GDS_PERF_SEL_SE2_SH1_GDS_WR_OP', - 85: 'GDS_PERF_SEL_SE2_SH1_GDS_RD_OP', - 86: 'GDS_PERF_SEL_SE2_SH1_GDS_ATOM_OP', - 87: 'GDS_PERF_SEL_SE2_SH1_GDS_REL_OP', - 88: 'GDS_PERF_SEL_SE2_SH1_GDS_CMPXCH_OP', - 89: 'GDS_PERF_SEL_SE2_SH1_GDS_BYTE_OP', - 90: 'GDS_PERF_SEL_SE2_SH1_GDS_SHORT_OP', - 91: 'GDS_PERF_SEL_SE3_SH0_NORET', - 92: 'GDS_PERF_SEL_SE3_SH0_RET', - 93: 'GDS_PERF_SEL_SE3_SH0_ORD_CNT', - 94: 'GDS_PERF_SEL_SE3_SH0_2COMP_REQ', - 95: 'GDS_PERF_SEL_SE3_SH0_ORD_WAVE_VALID', - 96: 'GDS_PERF_SEL_SE3_SH0_GDS_DATA_VALID', - 97: 'GDS_PERF_SEL_SE3_SH0_GDS_STALL_BY_ORD', - 98: 'GDS_PERF_SEL_SE3_SH0_GDS_WR_OP', - 99: 'GDS_PERF_SEL_SE3_SH0_GDS_RD_OP', - 100: 'GDS_PERF_SEL_SE3_SH0_GDS_ATOM_OP', - 101: 'GDS_PERF_SEL_SE3_SH0_GDS_REL_OP', - 102: 'GDS_PERF_SEL_SE3_SH0_GDS_CMPXCH_OP', - 103: 'GDS_PERF_SEL_SE3_SH0_GDS_BYTE_OP', - 104: 'GDS_PERF_SEL_SE3_SH0_GDS_SHORT_OP', - 105: 'GDS_PERF_SEL_SE3_SH1_NORET', - 106: 'GDS_PERF_SEL_SE3_SH1_RET', - 107: 'GDS_PERF_SEL_SE3_SH1_ORD_CNT', - 108: 'GDS_PERF_SEL_SE3_SH1_2COMP_REQ', - 109: 'GDS_PERF_SEL_SE3_SH1_ORD_WAVE_VALID', - 110: 'GDS_PERF_SEL_SE3_SH1_GDS_DATA_VALID', - 111: 'GDS_PERF_SEL_SE3_SH1_GDS_STALL_BY_ORD', - 112: 'GDS_PERF_SEL_SE3_SH1_GDS_WR_OP', - 113: 'GDS_PERF_SEL_SE3_SH1_GDS_RD_OP', - 114: 'GDS_PERF_SEL_SE3_SH1_GDS_ATOM_OP', - 115: 'GDS_PERF_SEL_SE3_SH1_GDS_REL_OP', - 116: 'GDS_PERF_SEL_SE3_SH1_GDS_CMPXCH_OP', - 117: 'GDS_PERF_SEL_SE3_SH1_GDS_BYTE_OP', - 118: 'GDS_PERF_SEL_SE3_SH1_GDS_SHORT_OP', - 119: 'GDS_PERF_SEL_GWS_RELEASED', - 120: 'GDS_PERF_SEL_GWS_BYPASS', -} -GDS_PERF_SEL_DS_ADDR_CONFL = 0 -GDS_PERF_SEL_DS_BANK_CONFL = 1 -GDS_PERF_SEL_WBUF_FLUSH = 2 -GDS_PERF_SEL_WR_COMP = 3 -GDS_PERF_SEL_WBUF_WR = 4 -GDS_PERF_SEL_RBUF_HIT = 5 -GDS_PERF_SEL_RBUF_MISS = 6 -GDS_PERF_SEL_SE0_SH0_NORET = 7 -GDS_PERF_SEL_SE0_SH0_RET = 8 -GDS_PERF_SEL_SE0_SH0_ORD_CNT = 9 -GDS_PERF_SEL_SE0_SH0_2COMP_REQ = 10 -GDS_PERF_SEL_SE0_SH0_ORD_WAVE_VALID = 11 -GDS_PERF_SEL_SE0_SH0_GDS_DATA_VALID = 12 -GDS_PERF_SEL_SE0_SH0_GDS_STALL_BY_ORD = 13 -GDS_PERF_SEL_SE0_SH0_GDS_WR_OP = 14 -GDS_PERF_SEL_SE0_SH0_GDS_RD_OP = 15 -GDS_PERF_SEL_SE0_SH0_GDS_ATOM_OP = 16 -GDS_PERF_SEL_SE0_SH0_GDS_REL_OP = 17 -GDS_PERF_SEL_SE0_SH0_GDS_CMPXCH_OP = 18 -GDS_PERF_SEL_SE0_SH0_GDS_BYTE_OP = 19 -GDS_PERF_SEL_SE0_SH0_GDS_SHORT_OP = 20 -GDS_PERF_SEL_SE0_SH1_NORET = 21 -GDS_PERF_SEL_SE0_SH1_RET = 22 -GDS_PERF_SEL_SE0_SH1_ORD_CNT = 23 -GDS_PERF_SEL_SE0_SH1_2COMP_REQ = 24 -GDS_PERF_SEL_SE0_SH1_ORD_WAVE_VALID = 25 -GDS_PERF_SEL_SE0_SH1_GDS_DATA_VALID = 26 -GDS_PERF_SEL_SE0_SH1_GDS_STALL_BY_ORD = 27 -GDS_PERF_SEL_SE0_SH1_GDS_WR_OP = 28 -GDS_PERF_SEL_SE0_SH1_GDS_RD_OP = 29 -GDS_PERF_SEL_SE0_SH1_GDS_ATOM_OP = 30 -GDS_PERF_SEL_SE0_SH1_GDS_REL_OP = 31 -GDS_PERF_SEL_SE0_SH1_GDS_CMPXCH_OP = 32 -GDS_PERF_SEL_SE0_SH1_GDS_BYTE_OP = 33 -GDS_PERF_SEL_SE0_SH1_GDS_SHORT_OP = 34 -GDS_PERF_SEL_SE1_SH0_NORET = 35 -GDS_PERF_SEL_SE1_SH0_RET = 36 -GDS_PERF_SEL_SE1_SH0_ORD_CNT = 37 -GDS_PERF_SEL_SE1_SH0_2COMP_REQ = 38 -GDS_PERF_SEL_SE1_SH0_ORD_WAVE_VALID = 39 -GDS_PERF_SEL_SE1_SH0_GDS_DATA_VALID = 40 -GDS_PERF_SEL_SE1_SH0_GDS_STALL_BY_ORD = 41 -GDS_PERF_SEL_SE1_SH0_GDS_WR_OP = 42 -GDS_PERF_SEL_SE1_SH0_GDS_RD_OP = 43 -GDS_PERF_SEL_SE1_SH0_GDS_ATOM_OP = 44 -GDS_PERF_SEL_SE1_SH0_GDS_REL_OP = 45 -GDS_PERF_SEL_SE1_SH0_GDS_CMPXCH_OP = 46 -GDS_PERF_SEL_SE1_SH0_GDS_BYTE_OP = 47 -GDS_PERF_SEL_SE1_SH0_GDS_SHORT_OP = 48 -GDS_PERF_SEL_SE1_SH1_NORET = 49 -GDS_PERF_SEL_SE1_SH1_RET = 50 -GDS_PERF_SEL_SE1_SH1_ORD_CNT = 51 -GDS_PERF_SEL_SE1_SH1_2COMP_REQ = 52 -GDS_PERF_SEL_SE1_SH1_ORD_WAVE_VALID = 53 -GDS_PERF_SEL_SE1_SH1_GDS_DATA_VALID = 54 -GDS_PERF_SEL_SE1_SH1_GDS_STALL_BY_ORD = 55 -GDS_PERF_SEL_SE1_SH1_GDS_WR_OP = 56 -GDS_PERF_SEL_SE1_SH1_GDS_RD_OP = 57 -GDS_PERF_SEL_SE1_SH1_GDS_ATOM_OP = 58 -GDS_PERF_SEL_SE1_SH1_GDS_REL_OP = 59 -GDS_PERF_SEL_SE1_SH1_GDS_CMPXCH_OP = 60 -GDS_PERF_SEL_SE1_SH1_GDS_BYTE_OP = 61 -GDS_PERF_SEL_SE1_SH1_GDS_SHORT_OP = 62 -GDS_PERF_SEL_SE2_SH0_NORET = 63 -GDS_PERF_SEL_SE2_SH0_RET = 64 -GDS_PERF_SEL_SE2_SH0_ORD_CNT = 65 -GDS_PERF_SEL_SE2_SH0_2COMP_REQ = 66 -GDS_PERF_SEL_SE2_SH0_ORD_WAVE_VALID = 67 -GDS_PERF_SEL_SE2_SH0_GDS_DATA_VALID = 68 -GDS_PERF_SEL_SE2_SH0_GDS_STALL_BY_ORD = 69 -GDS_PERF_SEL_SE2_SH0_GDS_WR_OP = 70 -GDS_PERF_SEL_SE2_SH0_GDS_RD_OP = 71 -GDS_PERF_SEL_SE2_SH0_GDS_ATOM_OP = 72 -GDS_PERF_SEL_SE2_SH0_GDS_REL_OP = 73 -GDS_PERF_SEL_SE2_SH0_GDS_CMPXCH_OP = 74 -GDS_PERF_SEL_SE2_SH0_GDS_BYTE_OP = 75 -GDS_PERF_SEL_SE2_SH0_GDS_SHORT_OP = 76 -GDS_PERF_SEL_SE2_SH1_NORET = 77 -GDS_PERF_SEL_SE2_SH1_RET = 78 -GDS_PERF_SEL_SE2_SH1_ORD_CNT = 79 -GDS_PERF_SEL_SE2_SH1_2COMP_REQ = 80 -GDS_PERF_SEL_SE2_SH1_ORD_WAVE_VALID = 81 -GDS_PERF_SEL_SE2_SH1_GDS_DATA_VALID = 82 -GDS_PERF_SEL_SE2_SH1_GDS_STALL_BY_ORD = 83 -GDS_PERF_SEL_SE2_SH1_GDS_WR_OP = 84 -GDS_PERF_SEL_SE2_SH1_GDS_RD_OP = 85 -GDS_PERF_SEL_SE2_SH1_GDS_ATOM_OP = 86 -GDS_PERF_SEL_SE2_SH1_GDS_REL_OP = 87 -GDS_PERF_SEL_SE2_SH1_GDS_CMPXCH_OP = 88 -GDS_PERF_SEL_SE2_SH1_GDS_BYTE_OP = 89 -GDS_PERF_SEL_SE2_SH1_GDS_SHORT_OP = 90 -GDS_PERF_SEL_SE3_SH0_NORET = 91 -GDS_PERF_SEL_SE3_SH0_RET = 92 -GDS_PERF_SEL_SE3_SH0_ORD_CNT = 93 -GDS_PERF_SEL_SE3_SH0_2COMP_REQ = 94 -GDS_PERF_SEL_SE3_SH0_ORD_WAVE_VALID = 95 -GDS_PERF_SEL_SE3_SH0_GDS_DATA_VALID = 96 -GDS_PERF_SEL_SE3_SH0_GDS_STALL_BY_ORD = 97 -GDS_PERF_SEL_SE3_SH0_GDS_WR_OP = 98 -GDS_PERF_SEL_SE3_SH0_GDS_RD_OP = 99 -GDS_PERF_SEL_SE3_SH0_GDS_ATOM_OP = 100 -GDS_PERF_SEL_SE3_SH0_GDS_REL_OP = 101 -GDS_PERF_SEL_SE3_SH0_GDS_CMPXCH_OP = 102 -GDS_PERF_SEL_SE3_SH0_GDS_BYTE_OP = 103 -GDS_PERF_SEL_SE3_SH0_GDS_SHORT_OP = 104 -GDS_PERF_SEL_SE3_SH1_NORET = 105 -GDS_PERF_SEL_SE3_SH1_RET = 106 -GDS_PERF_SEL_SE3_SH1_ORD_CNT = 107 -GDS_PERF_SEL_SE3_SH1_2COMP_REQ = 108 -GDS_PERF_SEL_SE3_SH1_ORD_WAVE_VALID = 109 -GDS_PERF_SEL_SE3_SH1_GDS_DATA_VALID = 110 -GDS_PERF_SEL_SE3_SH1_GDS_STALL_BY_ORD = 111 -GDS_PERF_SEL_SE3_SH1_GDS_WR_OP = 112 -GDS_PERF_SEL_SE3_SH1_GDS_RD_OP = 113 -GDS_PERF_SEL_SE3_SH1_GDS_ATOM_OP = 114 -GDS_PERF_SEL_SE3_SH1_GDS_REL_OP = 115 -GDS_PERF_SEL_SE3_SH1_GDS_CMPXCH_OP = 116 -GDS_PERF_SEL_SE3_SH1_GDS_BYTE_OP = 117 -GDS_PERF_SEL_SE3_SH1_GDS_SHORT_OP = 118 -GDS_PERF_SEL_GWS_RELEASED = 119 -GDS_PERF_SEL_GWS_BYPASS = 120 -GDS_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'GATCL1RequestType' -GATCL1RequestType__enumvalues = { - 0: 'GATCL1_TYPE_NORMAL', - 1: 'GATCL1_TYPE_SHOOTDOWN', - 2: 'GATCL1_TYPE_BYPASS', -} -GATCL1_TYPE_NORMAL = 0 -GATCL1_TYPE_SHOOTDOWN = 1 -GATCL1_TYPE_BYPASS = 2 -GATCL1RequestType = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL1RequestType' -UTCL1RequestType__enumvalues = { - 0: 'UTCL1_TYPE_NORMAL', - 1: 'UTCL1_TYPE_SHOOTDOWN', - 2: 'UTCL1_TYPE_BYPASS', -} -UTCL1_TYPE_NORMAL = 0 -UTCL1_TYPE_SHOOTDOWN = 1 -UTCL1_TYPE_BYPASS = 2 -UTCL1RequestType = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL1FaultType' -UTCL1FaultType__enumvalues = { - 0: 'UTCL1_XNACK_SUCCESS', - 1: 'UTCL1_XNACK_RETRY', - 2: 'UTCL1_XNACK_PRT', - 3: 'UTCL1_XNACK_NO_RETRY', -} -UTCL1_XNACK_SUCCESS = 0 -UTCL1_XNACK_RETRY = 1 -UTCL1_XNACK_PRT = 2 -UTCL1_XNACK_NO_RETRY = 3 -UTCL1FaultType = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL0RequestType' -UTCL0RequestType__enumvalues = { - 0: 'UTCL0_TYPE_NORMAL', - 1: 'UTCL0_TYPE_SHOOTDOWN', - 2: 'UTCL0_TYPE_BYPASS', -} -UTCL0_TYPE_NORMAL = 0 -UTCL0_TYPE_SHOOTDOWN = 1 -UTCL0_TYPE_BYPASS = 2 -UTCL0RequestType = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL0FaultType' -UTCL0FaultType__enumvalues = { - 0: 'UTCL0_XNACK_SUCCESS', - 1: 'UTCL0_XNACK_RETRY', - 2: 'UTCL0_XNACK_PRT', - 3: 'UTCL0_XNACK_NO_RETRY', -} -UTCL0_XNACK_SUCCESS = 0 -UTCL0_XNACK_RETRY = 1 -UTCL0_XNACK_PRT = 2 -UTCL0_XNACK_NO_RETRY = 3 -UTCL0FaultType = ctypes.c_uint32 # enum - -# values for enumeration 'VMEMCMD_RETURN_ORDER' -VMEMCMD_RETURN_ORDER__enumvalues = { - 0: 'VMEMCMD_RETURN_OUT_OF_ORDER', - 1: 'VMEMCMD_RETURN_IN_ORDER', - 2: 'VMEMCMD_RETURN_IN_ORDER_READ', -} -VMEMCMD_RETURN_OUT_OF_ORDER = 0 -VMEMCMD_RETURN_IN_ORDER = 1 -VMEMCMD_RETURN_IN_ORDER_READ = 2 -VMEMCMD_RETURN_ORDER = ctypes.c_uint32 # enum - -# values for enumeration 'GL0V_CACHE_POLICIES' -GL0V_CACHE_POLICIES__enumvalues = { - 0: 'GL0V_CACHE_POLICY_MISS_LRU', - 1: 'GL0V_CACHE_POLICY_MISS_EVICT', - 2: 'GL0V_CACHE_POLICY_HIT_LRU', - 3: 'GL0V_CACHE_POLICY_HIT_EVICT', -} -GL0V_CACHE_POLICY_MISS_LRU = 0 -GL0V_CACHE_POLICY_MISS_EVICT = 1 -GL0V_CACHE_POLICY_HIT_LRU = 2 -GL0V_CACHE_POLICY_HIT_EVICT = 3 -GL0V_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'GL1_CACHE_POLICIES' -GL1_CACHE_POLICIES__enumvalues = { - 0: 'GL1_CACHE_POLICY_MISS_LRU', - 1: 'GL1_CACHE_POLICY_MISS_EVICT', - 2: 'GL1_CACHE_POLICY_HIT_LRU', - 3: 'GL1_CACHE_POLICY_HIT_EVICT', -} -GL1_CACHE_POLICY_MISS_LRU = 0 -GL1_CACHE_POLICY_MISS_EVICT = 1 -GL1_CACHE_POLICY_HIT_LRU = 2 -GL1_CACHE_POLICY_HIT_EVICT = 3 -GL1_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'GL1_CACHE_STORE_POLICIES' -GL1_CACHE_STORE_POLICIES__enumvalues = { - 0: 'GL1_CACHE_STORE_POLICY_BYPASS', -} -GL1_CACHE_STORE_POLICY_BYPASS = 0 -GL1_CACHE_STORE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'TCC_CACHE_POLICIES' -TCC_CACHE_POLICIES__enumvalues = { - 0: 'TCC_CACHE_POLICY_LRU', - 1: 'TCC_CACHE_POLICY_STREAM', -} -TCC_CACHE_POLICY_LRU = 0 -TCC_CACHE_POLICY_STREAM = 1 -TCC_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'TCC_MTYPE' -TCC_MTYPE__enumvalues = { - 0: 'MTYPE_NC', - 1: 'MTYPE_WC', - 2: 'MTYPE_CC', -} -MTYPE_NC = 0 -MTYPE_WC = 1 -MTYPE_CC = 2 -TCC_MTYPE = ctypes.c_uint32 # enum - -# values for enumeration 'GL2_CACHE_POLICIES' -GL2_CACHE_POLICIES__enumvalues = { - 0: 'GL2_CACHE_POLICY_LRU', - 1: 'GL2_CACHE_POLICY_STREAM', - 2: 'GL2_CACHE_POLICY_NOA', - 3: 'GL2_CACHE_POLICY_BYPASS', -} -GL2_CACHE_POLICY_LRU = 0 -GL2_CACHE_POLICY_STREAM = 1 -GL2_CACHE_POLICY_NOA = 2 -GL2_CACHE_POLICY_BYPASS = 3 -GL2_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'MTYPE' -MTYPE__enumvalues = { - 0: 'MTYPE_C_RW_US', - 1: 'MTYPE_RESERVED_1', - 2: 'MTYPE_C_RO_S', - 3: 'MTYPE_UC', - 4: 'MTYPE_C_RW_S', - 5: 'MTYPE_RESERVED_5', - 6: 'MTYPE_C_RO_US', - 7: 'MTYPE_RESERVED_7', -} -MTYPE_C_RW_US = 0 -MTYPE_RESERVED_1 = 1 -MTYPE_C_RO_S = 2 -MTYPE_UC = 3 -MTYPE_C_RW_S = 4 -MTYPE_RESERVED_5 = 5 -MTYPE_C_RO_US = 6 -MTYPE_RESERVED_7 = 7 -MTYPE = ctypes.c_uint32 # enum - -# values for enumeration 'RMI_CID' -RMI_CID__enumvalues = { - 0: 'RMI_CID_CC', - 1: 'RMI_CID_FC', - 2: 'RMI_CID_CM', - 3: 'RMI_CID_DC', - 4: 'RMI_CID_Z', - 5: 'RMI_CID_S', - 6: 'RMI_CID_TILE', - 7: 'RMI_CID_ZPCPSD', -} -RMI_CID_CC = 0 -RMI_CID_FC = 1 -RMI_CID_CM = 2 -RMI_CID_DC = 3 -RMI_CID_Z = 4 -RMI_CID_S = 5 -RMI_CID_TILE = 6 -RMI_CID_ZPCPSD = 7 -RMI_CID = ctypes.c_uint32 # enum - -# values for enumeration 'WritePolicy' -WritePolicy__enumvalues = { - 0: 'CACHE_LRU_WR', - 1: 'CACHE_STREAM', - 2: 'CACHE_BYPASS', - 3: 'UNCACHED_WR', -} -CACHE_LRU_WR = 0 -CACHE_STREAM = 1 -CACHE_BYPASS = 2 -UNCACHED_WR = 3 -WritePolicy = ctypes.c_uint32 # enum - -# values for enumeration 'ReadPolicy' -ReadPolicy__enumvalues = { - 0: 'CACHE_LRU_RD', - 1: 'CACHE_NOA', - 2: 'UNCACHED_RD', - 3: 'RESERVED_RDPOLICY', -} -CACHE_LRU_RD = 0 -CACHE_NOA = 1 -UNCACHED_RD = 2 -RESERVED_RDPOLICY = 3 -ReadPolicy = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_COUNTER_MODE' -PERFMON_COUNTER_MODE__enumvalues = { - 0: 'PERFMON_COUNTER_MODE_ACCUM', - 1: 'PERFMON_COUNTER_MODE_ACTIVE_CYCLES', - 2: 'PERFMON_COUNTER_MODE_MAX', - 3: 'PERFMON_COUNTER_MODE_DIRTY', - 4: 'PERFMON_COUNTER_MODE_SAMPLE', - 5: 'PERFMON_COUNTER_MODE_CYCLES_SINCE_FIRST_EVENT', - 6: 'PERFMON_COUNTER_MODE_CYCLES_SINCE_LAST_EVENT', - 7: 'PERFMON_COUNTER_MODE_CYCLES_GE_HI', - 8: 'PERFMON_COUNTER_MODE_CYCLES_EQ_HI', - 9: 'PERFMON_COUNTER_MODE_INACTIVE_CYCLES', - 15: 'PERFMON_COUNTER_MODE_RESERVED', -} -PERFMON_COUNTER_MODE_ACCUM = 0 -PERFMON_COUNTER_MODE_ACTIVE_CYCLES = 1 -PERFMON_COUNTER_MODE_MAX = 2 -PERFMON_COUNTER_MODE_DIRTY = 3 -PERFMON_COUNTER_MODE_SAMPLE = 4 -PERFMON_COUNTER_MODE_CYCLES_SINCE_FIRST_EVENT = 5 -PERFMON_COUNTER_MODE_CYCLES_SINCE_LAST_EVENT = 6 -PERFMON_COUNTER_MODE_CYCLES_GE_HI = 7 -PERFMON_COUNTER_MODE_CYCLES_EQ_HI = 8 -PERFMON_COUNTER_MODE_INACTIVE_CYCLES = 9 -PERFMON_COUNTER_MODE_RESERVED = 15 -PERFMON_COUNTER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_SPM_MODE' -PERFMON_SPM_MODE__enumvalues = { - 0: 'PERFMON_SPM_MODE_OFF', - 1: 'PERFMON_SPM_MODE_16BIT_CLAMP', - 2: 'PERFMON_SPM_MODE_16BIT_NO_CLAMP', - 3: 'PERFMON_SPM_MODE_32BIT_CLAMP', - 4: 'PERFMON_SPM_MODE_32BIT_NO_CLAMP', - 5: 'PERFMON_SPM_MODE_RESERVED_5', - 6: 'PERFMON_SPM_MODE_RESERVED_6', - 7: 'PERFMON_SPM_MODE_RESERVED_7', - 8: 'PERFMON_SPM_MODE_TEST_MODE_0', - 9: 'PERFMON_SPM_MODE_TEST_MODE_1', - 10: 'PERFMON_SPM_MODE_TEST_MODE_2', -} -PERFMON_SPM_MODE_OFF = 0 -PERFMON_SPM_MODE_16BIT_CLAMP = 1 -PERFMON_SPM_MODE_16BIT_NO_CLAMP = 2 -PERFMON_SPM_MODE_32BIT_CLAMP = 3 -PERFMON_SPM_MODE_32BIT_NO_CLAMP = 4 -PERFMON_SPM_MODE_RESERVED_5 = 5 -PERFMON_SPM_MODE_RESERVED_6 = 6 -PERFMON_SPM_MODE_RESERVED_7 = 7 -PERFMON_SPM_MODE_TEST_MODE_0 = 8 -PERFMON_SPM_MODE_TEST_MODE_1 = 9 -PERFMON_SPM_MODE_TEST_MODE_2 = 10 -PERFMON_SPM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SurfaceTiling' -SurfaceTiling__enumvalues = { - 0: 'ARRAY_LINEAR', - 1: 'ARRAY_TILED', -} -ARRAY_LINEAR = 0 -ARRAY_TILED = 1 -SurfaceTiling = ctypes.c_uint32 # enum - -# values for enumeration 'SurfaceArray' -SurfaceArray__enumvalues = { - 0: 'ARRAY_1D', - 1: 'ARRAY_2D', - 2: 'ARRAY_3D', - 3: 'ARRAY_3D_SLICE', -} -ARRAY_1D = 0 -ARRAY_2D = 1 -ARRAY_3D = 2 -ARRAY_3D_SLICE = 3 -SurfaceArray = ctypes.c_uint32 # enum - -# values for enumeration 'ColorArray' -ColorArray__enumvalues = { - 0: 'ARRAY_2D_ALT_COLOR', - 1: 'ARRAY_2D_COLOR', - 3: 'ARRAY_3D_SLICE_COLOR', -} -ARRAY_2D_ALT_COLOR = 0 -ARRAY_2D_COLOR = 1 -ARRAY_3D_SLICE_COLOR = 3 -ColorArray = ctypes.c_uint32 # enum - -# values for enumeration 'DepthArray' -DepthArray__enumvalues = { - 0: 'ARRAY_2D_ALT_DEPTH', - 1: 'ARRAY_2D_DEPTH', -} -ARRAY_2D_ALT_DEPTH = 0 -ARRAY_2D_DEPTH = 1 -DepthArray = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_NUM_SIMD_PER_CU' -ENUM_NUM_SIMD_PER_CU__enumvalues = { - 2: 'NUM_SIMD_PER_CU', -} -NUM_SIMD_PER_CU = 2 -ENUM_NUM_SIMD_PER_CU = ctypes.c_uint32 # enum - -# values for enumeration 'DSM_ENABLE_ERROR_INJECT' -DSM_ENABLE_ERROR_INJECT__enumvalues = { - 0: 'DSM_ENABLE_ERROR_INJECT_FED_IN', - 1: 'DSM_ENABLE_ERROR_INJECT_SINGLE', - 2: 'DSM_ENABLE_ERROR_INJECT_UNCORRECTABLE', - 3: 'DSM_ENABLE_ERROR_INJECT_UNCORRECTABLE_LIMITED', -} -DSM_ENABLE_ERROR_INJECT_FED_IN = 0 -DSM_ENABLE_ERROR_INJECT_SINGLE = 1 -DSM_ENABLE_ERROR_INJECT_UNCORRECTABLE = 2 -DSM_ENABLE_ERROR_INJECT_UNCORRECTABLE_LIMITED = 3 -DSM_ENABLE_ERROR_INJECT = ctypes.c_uint32 # enum - -# values for enumeration 'DSM_SELECT_INJECT_DELAY' -DSM_SELECT_INJECT_DELAY__enumvalues = { - 0: 'DSM_SELECT_INJECT_DELAY_NO_DELAY', - 1: 'DSM_SELECT_INJECT_DELAY_DELAY_ERROR', -} -DSM_SELECT_INJECT_DELAY_NO_DELAY = 0 -DSM_SELECT_INJECT_DELAY_DELAY_ERROR = 1 -DSM_SELECT_INJECT_DELAY = ctypes.c_uint32 # enum - -# values for enumeration 'DSM_DATA_SEL' -DSM_DATA_SEL__enumvalues = { - 0: 'DSM_DATA_SEL_DISABLE', - 1: 'DSM_DATA_SEL_0', - 2: 'DSM_DATA_SEL_1', - 3: 'DSM_DATA_SEL_BOTH', -} -DSM_DATA_SEL_DISABLE = 0 -DSM_DATA_SEL_0 = 1 -DSM_DATA_SEL_1 = 2 -DSM_DATA_SEL_BOTH = 3 -DSM_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DSM_SINGLE_WRITE' -DSM_SINGLE_WRITE__enumvalues = { - 0: 'DSM_SINGLE_WRITE_DIS', - 1: 'DSM_SINGLE_WRITE_EN', -} -DSM_SINGLE_WRITE_DIS = 0 -DSM_SINGLE_WRITE_EN = 1 -DSM_SINGLE_WRITE = ctypes.c_uint32 # enum - -# values for enumeration 'Hdp_SurfaceEndian' -Hdp_SurfaceEndian__enumvalues = { - 0: 'HDP_ENDIAN_NONE', - 1: 'HDP_ENDIAN_8IN16', - 2: 'HDP_ENDIAN_8IN32', - 3: 'HDP_ENDIAN_8IN64', -} -HDP_ENDIAN_NONE = 0 -HDP_ENDIAN_8IN16 = 1 -HDP_ENDIAN_8IN32 = 2 -HDP_ENDIAN_8IN64 = 3 -Hdp_SurfaceEndian = ctypes.c_uint32 # enum - -# values for enumeration 'CNVC_ENABLE' -CNVC_ENABLE__enumvalues = { - 0: 'CNVC_DIS', - 1: 'CNVC_EN', -} -CNVC_DIS = 0 -CNVC_EN = 1 -CNVC_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CNVC_BYPASS' -CNVC_BYPASS__enumvalues = { - 0: 'CNVC_BYPASS_DISABLE', - 1: 'CNVC_BYPASS_EN', -} -CNVC_BYPASS_DISABLE = 0 -CNVC_BYPASS_EN = 1 -CNVC_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'CNVC_PENDING' -CNVC_PENDING__enumvalues = { - 0: 'CNVC_NOT_PENDING', - 1: 'CNVC_YES_PENDING', -} -CNVC_NOT_PENDING = 0 -CNVC_YES_PENDING = 1 -CNVC_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'DENORM_TRUNCATE' -DENORM_TRUNCATE__enumvalues = { - 0: 'CNVC_ROUND', - 1: 'CNVC_TRUNCATE', -} -CNVC_ROUND = 0 -CNVC_TRUNCATE = 1 -DENORM_TRUNCATE = ctypes.c_uint32 # enum - -# values for enumeration 'PIX_EXPAND_MODE' -PIX_EXPAND_MODE__enumvalues = { - 0: 'PIX_DYNAMIC_EXPANSION', - 1: 'PIX_ZERO_EXPANSION', -} -PIX_DYNAMIC_EXPANSION = 0 -PIX_ZERO_EXPANSION = 1 -PIX_EXPAND_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_PIXEL_FORMAT' -SURFACE_PIXEL_FORMAT__enumvalues = { - 1: 'ARGB1555', - 2: 'RGBA5551', - 3: 'RGB565', - 4: 'BGR565', - 5: 'ARGB4444', - 6: 'RGBA4444', - 8: 'ARGB8888', - 9: 'RGBA8888', - 10: 'ARGB2101010', - 11: 'RGBA1010102', - 12: 'AYCrCb8888', - 13: 'YCrCbA8888', - 14: 'ACrYCb8888', - 15: 'CrYCbA8888', - 16: 'ARGB16161616_10MSB', - 17: 'RGBA16161616_10MSB', - 18: 'ARGB16161616_10LSB', - 19: 'RGBA16161616_10LSB', - 20: 'ARGB16161616_12MSB', - 21: 'RGBA16161616_12MSB', - 22: 'ARGB16161616_12LSB', - 23: 'RGBA16161616_12LSB', - 24: 'ARGB16161616_FLOAT', - 25: 'RGBA16161616_FLOAT', - 26: 'ARGB16161616_UNORM', - 27: 'RGBA16161616_UNORM', - 28: 'ARGB16161616_SNORM', - 29: 'RGBA16161616_SNORM', - 32: 'AYCrCb16161616_10MSB', - 33: 'AYCrCb16161616_10LSB', - 34: 'YCrCbA16161616_10MSB', - 35: 'YCrCbA16161616_10LSB', - 36: 'ACrYCb16161616_10MSB', - 37: 'ACrYCb16161616_10LSB', - 38: 'CrYCbA16161616_10MSB', - 39: 'CrYCbA16161616_10LSB', - 40: 'AYCrCb16161616_12MSB', - 41: 'AYCrCb16161616_12LSB', - 42: 'YCrCbA16161616_12MSB', - 43: 'YCrCbA16161616_12LSB', - 44: 'ACrYCb16161616_12MSB', - 45: 'ACrYCb16161616_12LSB', - 46: 'CrYCbA16161616_12MSB', - 47: 'CrYCbA16161616_12LSB', - 64: 'Y8_CrCb88_420_PLANAR', - 65: 'Y8_CbCr88_420_PLANAR', - 66: 'Y10_CrCb1010_420_PLANAR', - 67: 'Y10_CbCr1010_420_PLANAR', - 68: 'Y12_CrCb1212_420_PLANAR', - 69: 'Y12_CbCr1212_420_PLANAR', - 72: 'YCrYCb8888_422_PACKED', - 73: 'YCbYCr8888_422_PACKED', - 74: 'CrYCbY8888_422_PACKED', - 75: 'CbYCrY8888_422_PACKED', - 76: 'YCrYCb10101010_422_PACKED', - 77: 'YCbYCr10101010_422_PACKED', - 78: 'CrYCbY10101010_422_PACKED', - 79: 'CbYCrY10101010_422_PACKED', - 80: 'YCrYCb12121212_422_PACKED', - 81: 'YCbYCr12121212_422_PACKED', - 82: 'CrYCbY12121212_422_PACKED', - 83: 'CbYCrY12121212_422_PACKED', - 112: 'RGB111110_FIX', - 113: 'BGR101111_FIX', - 114: 'ACrYCb2101010', - 115: 'CrYCbA1010102', - 118: 'RGB111110_FLOAT', - 119: 'BGR101111_FLOAT', - 120: 'MONO_8', - 121: 'MONO_10MSB', - 122: 'MONO_10LSB', - 123: 'MONO_12MSB', - 124: 'MONO_12LSB', - 125: 'MONO_16', -} -ARGB1555 = 1 -RGBA5551 = 2 -RGB565 = 3 -BGR565 = 4 -ARGB4444 = 5 -RGBA4444 = 6 -ARGB8888 = 8 -RGBA8888 = 9 -ARGB2101010 = 10 -RGBA1010102 = 11 -AYCrCb8888 = 12 -YCrCbA8888 = 13 -ACrYCb8888 = 14 -CrYCbA8888 = 15 -ARGB16161616_10MSB = 16 -RGBA16161616_10MSB = 17 -ARGB16161616_10LSB = 18 -RGBA16161616_10LSB = 19 -ARGB16161616_12MSB = 20 -RGBA16161616_12MSB = 21 -ARGB16161616_12LSB = 22 -RGBA16161616_12LSB = 23 -ARGB16161616_FLOAT = 24 -RGBA16161616_FLOAT = 25 -ARGB16161616_UNORM = 26 -RGBA16161616_UNORM = 27 -ARGB16161616_SNORM = 28 -RGBA16161616_SNORM = 29 -AYCrCb16161616_10MSB = 32 -AYCrCb16161616_10LSB = 33 -YCrCbA16161616_10MSB = 34 -YCrCbA16161616_10LSB = 35 -ACrYCb16161616_10MSB = 36 -ACrYCb16161616_10LSB = 37 -CrYCbA16161616_10MSB = 38 -CrYCbA16161616_10LSB = 39 -AYCrCb16161616_12MSB = 40 -AYCrCb16161616_12LSB = 41 -YCrCbA16161616_12MSB = 42 -YCrCbA16161616_12LSB = 43 -ACrYCb16161616_12MSB = 44 -ACrYCb16161616_12LSB = 45 -CrYCbA16161616_12MSB = 46 -CrYCbA16161616_12LSB = 47 -Y8_CrCb88_420_PLANAR = 64 -Y8_CbCr88_420_PLANAR = 65 -Y10_CrCb1010_420_PLANAR = 66 -Y10_CbCr1010_420_PLANAR = 67 -Y12_CrCb1212_420_PLANAR = 68 -Y12_CbCr1212_420_PLANAR = 69 -YCrYCb8888_422_PACKED = 72 -YCbYCr8888_422_PACKED = 73 -CrYCbY8888_422_PACKED = 74 -CbYCrY8888_422_PACKED = 75 -YCrYCb10101010_422_PACKED = 76 -YCbYCr10101010_422_PACKED = 77 -CrYCbY10101010_422_PACKED = 78 -CbYCrY10101010_422_PACKED = 79 -YCrYCb12121212_422_PACKED = 80 -YCbYCr12121212_422_PACKED = 81 -CrYCbY12121212_422_PACKED = 82 -CbYCrY12121212_422_PACKED = 83 -RGB111110_FIX = 112 -BGR101111_FIX = 113 -ACrYCb2101010 = 114 -CrYCbA1010102 = 115 -RGB111110_FLOAT = 118 -BGR101111_FLOAT = 119 -MONO_8 = 120 -MONO_10MSB = 121 -MONO_10LSB = 122 -MONO_12MSB = 123 -MONO_12LSB = 124 -MONO_16 = 125 -SURFACE_PIXEL_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'XNORM' -XNORM__enumvalues = { - 0: 'XNORM_A', - 1: 'XNORM_B', -} -XNORM_A = 0 -XNORM_B = 1 -XNORM = ctypes.c_uint32 # enum - -# values for enumeration 'COLOR_KEYER_MODE' -COLOR_KEYER_MODE__enumvalues = { - 0: 'FORCE_00', - 1: 'FORCE_FF', - 2: 'RANGE_00', - 3: 'RANGE_FF', -} -FORCE_00 = 0 -FORCE_FF = 1 -RANGE_00 = 2 -RANGE_FF = 3 -COLOR_KEYER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_ENABLE' -CUR_ENABLE__enumvalues = { - 0: 'CUR_DIS', - 1: 'CUR_EN', -} -CUR_DIS = 0 -CUR_EN = 1 -CUR_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_PENDING' -CUR_PENDING__enumvalues = { - 0: 'CUR_NOT_PENDING', - 1: 'CUR_YES_PENDING', -} -CUR_NOT_PENDING = 0 -CUR_YES_PENDING = 1 -CUR_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_EXPAND_MODE' -CUR_EXPAND_MODE__enumvalues = { - 0: 'CUR_DYNAMIC_EXPANSION', - 1: 'CUR_ZERO_EXPANSION', -} -CUR_DYNAMIC_EXPANSION = 0 -CUR_ZERO_EXPANSION = 1 -CUR_EXPAND_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_ROM_EN' -CUR_ROM_EN__enumvalues = { - 0: 'CUR_FP_NO_ROM', - 1: 'CUR_FP_USE_ROM', -} -CUR_FP_NO_ROM = 0 -CUR_FP_USE_ROM = 1 -CUR_ROM_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_MODE' -CUR_MODE__enumvalues = { - 0: 'MONO_2BIT', - 1: 'COLOR_24BIT_1BIT_AND', - 2: 'COLOR_24BIT_8BIT_ALPHA_PREMULT', - 3: 'COLOR_24BIT_8BIT_ALPHA_UNPREMULT', - 4: 'COLOR_64BIT_FP_PREMULT', - 5: 'COLOR_64BIT_FP_UNPREMULT', -} -MONO_2BIT = 0 -COLOR_24BIT_1BIT_AND = 1 -COLOR_24BIT_8BIT_ALPHA_PREMULT = 2 -COLOR_24BIT_8BIT_ALPHA_UNPREMULT = 3 -COLOR_64BIT_FP_PREMULT = 4 -COLOR_64BIT_FP_UNPREMULT = 5 -CUR_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_INV_CLAMP' -CUR_INV_CLAMP__enumvalues = { - 0: 'CUR_CLAMP_DIS', - 1: 'CUR_CLAMP_EN', -} -CUR_CLAMP_DIS = 0 -CUR_CLAMP_EN = 1 -CUR_INV_CLAMP = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_COEF_FILTER_TYPE_SEL' -SCL_COEF_FILTER_TYPE_SEL__enumvalues = { - 0: 'SCL_COEF_LUMA_VERT_FILTER', - 1: 'SCL_COEF_LUMA_HORZ_FILTER', - 2: 'SCL_COEF_CHROMA_VERT_FILTER', - 3: 'SCL_COEF_CHROMA_HORZ_FILTER', - 4: 'SCL_COEF_ALPHA_VERT_FILTER', - 5: 'SCL_COEF_ALPHA_HORZ_FILTER', -} -SCL_COEF_LUMA_VERT_FILTER = 0 -SCL_COEF_LUMA_HORZ_FILTER = 1 -SCL_COEF_CHROMA_VERT_FILTER = 2 -SCL_COEF_CHROMA_HORZ_FILTER = 3 -SCL_COEF_ALPHA_VERT_FILTER = 4 -SCL_COEF_ALPHA_HORZ_FILTER = 5 -SCL_COEF_FILTER_TYPE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DSCL_MODE_SEL' -DSCL_MODE_SEL__enumvalues = { - 0: 'DSCL_MODE_SCALING_444_BYPASS', - 1: 'DSCL_MODE_SCALING_444_RGB_ENABLE', - 2: 'DSCL_MODE_SCALING_444_YCBCR_ENABLE', - 3: 'DSCL_MODE_SCALING_YCBCR_ENABLE', - 4: 'DSCL_MODE_LUMA_SCALING_BYPASS', - 5: 'DSCL_MODE_CHROMA_SCALING_BYPASS', - 6: 'DSCL_MODE_DSCL_BYPASS', -} -DSCL_MODE_SCALING_444_BYPASS = 0 -DSCL_MODE_SCALING_444_RGB_ENABLE = 1 -DSCL_MODE_SCALING_444_YCBCR_ENABLE = 2 -DSCL_MODE_SCALING_YCBCR_ENABLE = 3 -DSCL_MODE_LUMA_SCALING_BYPASS = 4 -DSCL_MODE_CHROMA_SCALING_BYPASS = 5 -DSCL_MODE_DSCL_BYPASS = 6 -DSCL_MODE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_AUTOCAL_MODE' -SCL_AUTOCAL_MODE__enumvalues = { - 0: 'AUTOCAL_MODE_OFF', - 1: 'AUTOCAL_MODE_AUTOSCALE', - 2: 'AUTOCAL_MODE_AUTOCENTER', - 3: 'AUTOCAL_MODE_AUTOREPLICATE', -} -AUTOCAL_MODE_OFF = 0 -AUTOCAL_MODE_AUTOSCALE = 1 -AUTOCAL_MODE_AUTOCENTER = 2 -AUTOCAL_MODE_AUTOREPLICATE = 3 -SCL_AUTOCAL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_COEF_RAM_SEL' -SCL_COEF_RAM_SEL__enumvalues = { - 0: 'SCL_COEF_RAM_SEL_0', - 1: 'SCL_COEF_RAM_SEL_1', -} -SCL_COEF_RAM_SEL_0 = 0 -SCL_COEF_RAM_SEL_1 = 1 -SCL_COEF_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_CHROMA_COEF' -SCL_CHROMA_COEF__enumvalues = { - 0: 'SCL_CHROMA_COEF_LUMA', - 1: 'SCL_CHROMA_COEF_CHROMA', -} -SCL_CHROMA_COEF_LUMA = 0 -SCL_CHROMA_COEF_CHROMA = 1 -SCL_CHROMA_COEF = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_ALPHA_COEF' -SCL_ALPHA_COEF__enumvalues = { - 0: 'SCL_ALPHA_COEF_LUMA', - 1: 'SCL_ALPHA_COEF_ALPHA', -} -SCL_ALPHA_COEF_LUMA = 0 -SCL_ALPHA_COEF_ALPHA = 1 -SCL_ALPHA_COEF = ctypes.c_uint32 # enum - -# values for enumeration 'COEF_RAM_SELECT_RD' -COEF_RAM_SELECT_RD__enumvalues = { - 0: 'COEF_RAM_SELECT_BACK', - 1: 'COEF_RAM_SELECT_CURRENT', -} -COEF_RAM_SELECT_BACK = 0 -COEF_RAM_SELECT_CURRENT = 1 -COEF_RAM_SELECT_RD = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_2TAP_HARDCODE' -SCL_2TAP_HARDCODE__enumvalues = { - 0: 'SCL_COEF_2TAP_HARDCODE_OFF', - 1: 'SCL_COEF_2TAP_HARDCODE_ON', -} -SCL_COEF_2TAP_HARDCODE_OFF = 0 -SCL_COEF_2TAP_HARDCODE_ON = 1 -SCL_2TAP_HARDCODE = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_SHARP_EN' -SCL_SHARP_EN__enumvalues = { - 0: 'SCL_SHARP_DISABLE', - 1: 'SCL_SHARP_ENABLE', -} -SCL_SHARP_DISABLE = 0 -SCL_SHARP_ENABLE = 1 -SCL_SHARP_EN = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_BOUNDARY' -SCL_BOUNDARY__enumvalues = { - 0: 'SCL_BOUNDARY_EDGE', - 1: 'SCL_BOUNDARY_BLACK', -} -SCL_BOUNDARY_EDGE = 0 -SCL_BOUNDARY_BLACK = 1 -SCL_BOUNDARY = ctypes.c_uint32 # enum - -# values for enumeration 'LB_INTERLEAVE_EN' -LB_INTERLEAVE_EN__enumvalues = { - 0: 'LB_INTERLEAVE_DISABLE', - 1: 'LB_INTERLEAVE_ENABLE', -} -LB_INTERLEAVE_DISABLE = 0 -LB_INTERLEAVE_ENABLE = 1 -LB_INTERLEAVE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'LB_ALPHA_EN' -LB_ALPHA_EN__enumvalues = { - 0: 'LB_ALPHA_DISABLE', - 1: 'LB_ALPHA_ENABLE', -} -LB_ALPHA_DISABLE = 0 -LB_ALPHA_ENABLE = 1 -LB_ALPHA_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OBUF_BYPASS_SEL' -OBUF_BYPASS_SEL__enumvalues = { - 0: 'OBUF_BYPASS_DIS', - 1: 'OBUF_BYPASS_EN', -} -OBUF_BYPASS_DIS = 0 -OBUF_BYPASS_EN = 1 -OBUF_BYPASS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OBUF_USE_FULL_BUFFER_SEL' -OBUF_USE_FULL_BUFFER_SEL__enumvalues = { - 0: 'OBUF_RECOUT', - 1: 'OBUF_FULL', -} -OBUF_RECOUT = 0 -OBUF_FULL = 1 -OBUF_USE_FULL_BUFFER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OBUF_IS_HALF_RECOUT_WIDTH_SEL' -OBUF_IS_HALF_RECOUT_WIDTH_SEL__enumvalues = { - 0: 'OBUF_FULL_RECOUT', - 1: 'OBUF_HALF_RECOUT', -} -OBUF_FULL_RECOUT = 0 -OBUF_HALF_RECOUT = 1 -OBUF_IS_HALF_RECOUT_WIDTH_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CM_BYPASS' -CM_BYPASS__enumvalues = { - 0: 'NON_BYPASS', - 1: 'BYPASS_EN', -} -NON_BYPASS = 0 -BYPASS_EN = 1 -CM_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'CM_EN' -CM_EN__enumvalues = { - 0: 'CM_DISABLE', - 1: 'CM_ENABLE', -} -CM_DISABLE = 0 -CM_ENABLE = 1 -CM_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CM_PENDING' -CM_PENDING__enumvalues = { - 0: 'CM_NOT_PENDING', - 1: 'CM_YES_PENDING', -} -CM_NOT_PENDING = 0 -CM_YES_PENDING = 1 -CM_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'CM_DATA_SIGNED' -CM_DATA_SIGNED__enumvalues = { - 0: 'UNSIGNED', - 1: 'SIGNED', -} -UNSIGNED = 0 -SIGNED = 1 -CM_DATA_SIGNED = ctypes.c_uint32 # enum - -# values for enumeration 'CM_WRITE_BASE_ONLY' -CM_WRITE_BASE_ONLY__enumvalues = { - 0: 'WRITE_BOTH', - 1: 'WRITE_BASE_ONLY', -} -WRITE_BOTH = 0 -WRITE_BASE_ONLY = 1 -CM_WRITE_BASE_ONLY = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_4_CONFIG_ENUM' -CM_LUT_4_CONFIG_ENUM__enumvalues = { - 0: 'LUT_4CFG_NO_MEMORY', - 1: 'LUT_4CFG_ROM_A', - 2: 'LUT_4CFG_ROM_B', - 3: 'LUT_4CFG_MEMORY_A', - 4: 'LUT_4CFG_MEMORY_B', -} -LUT_4CFG_NO_MEMORY = 0 -LUT_4CFG_ROM_A = 1 -LUT_4CFG_ROM_B = 2 -LUT_4CFG_MEMORY_A = 3 -LUT_4CFG_MEMORY_B = 4 -CM_LUT_4_CONFIG_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_2_CONFIG_ENUM' -CM_LUT_2_CONFIG_ENUM__enumvalues = { - 0: 'LUT_2CFG_NO_MEMORY', - 1: 'LUT_2CFG_MEMORY_A', - 2: 'LUT_2CFG_MEMORY_B', -} -LUT_2CFG_NO_MEMORY = 0 -LUT_2CFG_MEMORY_A = 1 -LUT_2CFG_MEMORY_B = 2 -CM_LUT_2_CONFIG_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_4_MODE_ENUM' -CM_LUT_4_MODE_ENUM__enumvalues = { - 0: 'LUT_4_MODE_BYPASS', - 1: 'LUT_4_MODE_ROMA_LUT', - 2: 'LUT_4_MODE_ROMB_LUT', - 3: 'LUT_4_MODE_RAMA_LUT', - 4: 'LUT_4_MODE_RAMB_LUT', -} -LUT_4_MODE_BYPASS = 0 -LUT_4_MODE_ROMA_LUT = 1 -LUT_4_MODE_ROMB_LUT = 2 -LUT_4_MODE_RAMA_LUT = 3 -LUT_4_MODE_RAMB_LUT = 4 -CM_LUT_4_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_2_MODE_ENUM' -CM_LUT_2_MODE_ENUM__enumvalues = { - 0: 'LUT_2_MODE_BYPASS', - 1: 'LUT_2_MODE_RAMA_LUT', - 2: 'LUT_2_MODE_RAMB_LUT', -} -LUT_2_MODE_BYPASS = 0 -LUT_2_MODE_RAMA_LUT = 1 -LUT_2_MODE_RAMB_LUT = 2 -CM_LUT_2_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_RAM_SEL' -CM_LUT_RAM_SEL__enumvalues = { - 0: 'RAMA_ACCESS', - 1: 'RAMB_ACCESS', -} -RAMA_ACCESS = 0 -RAMB_ACCESS = 1 -CM_LUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_NUM_SEG' -CM_LUT_NUM_SEG__enumvalues = { - 0: 'SEGMENTS_1', - 1: 'SEGMENTS_2', - 2: 'SEGMENTS_4', - 3: 'SEGMENTS_8', - 4: 'SEGMENTS_16', - 5: 'SEGMENTS_32', - 6: 'SEGMENTS_64', - 7: 'SEGMENTS_128', -} -SEGMENTS_1 = 0 -SEGMENTS_2 = 1 -SEGMENTS_4 = 2 -SEGMENTS_8 = 3 -SEGMENTS_16 = 4 -SEGMENTS_32 = 5 -SEGMENTS_64 = 6 -SEGMENTS_128 = 7 -CM_LUT_NUM_SEG = ctypes.c_uint32 # enum - -# values for enumeration 'CM_ICSC_MODE_ENUM' -CM_ICSC_MODE_ENUM__enumvalues = { - 0: 'BYPASS_ICSC', - 1: 'COEF_ICSC', - 2: 'COEF_ICSC_B', -} -BYPASS_ICSC = 0 -COEF_ICSC = 1 -COEF_ICSC_B = 2 -CM_ICSC_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_GAMUT_REMAP_MODE_ENUM' -CM_GAMUT_REMAP_MODE_ENUM__enumvalues = { - 0: 'BYPASS_GAMUT', - 1: 'GAMUT_COEF', - 2: 'GAMUT_COEF_B', -} -BYPASS_GAMUT = 0 -GAMUT_COEF = 1 -GAMUT_COEF_B = 2 -CM_GAMUT_REMAP_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_COEF_FORMAT_ENUM' -CM_COEF_FORMAT_ENUM__enumvalues = { - 0: 'FIX_S2_13', - 1: 'FIX_S3_12', -} -FIX_S2_13 = 0 -FIX_S3_12 = 1 -CM_COEF_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_LUT_2_CONFIG_ENUM' -CMC_LUT_2_CONFIG_ENUM__enumvalues = { - 0: 'CMC_LUT_2CFG_NO_MEMORY', - 1: 'CMC_LUT_2CFG_MEMORY_A', - 2: 'CMC_LUT_2CFG_MEMORY_B', -} -CMC_LUT_2CFG_NO_MEMORY = 0 -CMC_LUT_2CFG_MEMORY_A = 1 -CMC_LUT_2CFG_MEMORY_B = 2 -CMC_LUT_2_CONFIG_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_LUT_2_MODE_ENUM' -CMC_LUT_2_MODE_ENUM__enumvalues = { - 0: 'CMC_LUT_2_MODE_BYPASS', - 1: 'CMC_LUT_2_MODE_RAMA_LUT', - 2: 'CMC_LUT_2_MODE_RAMB_LUT', -} -CMC_LUT_2_MODE_BYPASS = 0 -CMC_LUT_2_MODE_RAMA_LUT = 1 -CMC_LUT_2_MODE_RAMB_LUT = 2 -CMC_LUT_2_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_LUT_RAM_SEL' -CMC_LUT_RAM_SEL__enumvalues = { - 0: 'CMC_RAMA_ACCESS', - 1: 'CMC_RAMB_ACCESS', -} -CMC_RAMA_ACCESS = 0 -CMC_RAMB_ACCESS = 1 -CMC_LUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_3DLUT_RAM_SEL' -CMC_3DLUT_RAM_SEL__enumvalues = { - 0: 'CMC_RAM0_ACCESS', - 1: 'CMC_RAM1_ACCESS', - 2: 'CMC_RAM2_ACCESS', - 3: 'CMC_RAM3_ACCESS', -} -CMC_RAM0_ACCESS = 0 -CMC_RAM1_ACCESS = 1 -CMC_RAM2_ACCESS = 2 -CMC_RAM3_ACCESS = 3 -CMC_3DLUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_LUT_NUM_SEG' -CMC_LUT_NUM_SEG__enumvalues = { - 0: 'CMC_SEGMENTS_1', - 1: 'CMC_SEGMENTS_2', - 2: 'CMC_SEGMENTS_4', - 3: 'CMC_SEGMENTS_8', - 4: 'CMC_SEGMENTS_16', - 5: 'CMC_SEGMENTS_32', - 6: 'CMC_SEGMENTS_64', - 7: 'CMC_SEGMENTS_128', -} -CMC_SEGMENTS_1 = 0 -CMC_SEGMENTS_2 = 1 -CMC_SEGMENTS_4 = 2 -CMC_SEGMENTS_8 = 3 -CMC_SEGMENTS_16 = 4 -CMC_SEGMENTS_32 = 5 -CMC_SEGMENTS_64 = 6 -CMC_SEGMENTS_128 = 7 -CMC_LUT_NUM_SEG = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_3DLUT_30BIT_ENUM' -CMC_3DLUT_30BIT_ENUM__enumvalues = { - 0: 'CMC_3DLUT_36BIT', - 1: 'CMC_3DLUT_30BIT', -} -CMC_3DLUT_36BIT = 0 -CMC_3DLUT_30BIT = 1 -CMC_3DLUT_30BIT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_3DLUT_SIZE_ENUM' -CMC_3DLUT_SIZE_ENUM__enumvalues = { - 0: 'CMC_3DLUT_17CUBE', - 1: 'CMC_3DLUT_9CUBE', -} -CMC_3DLUT_17CUBE = 0 -CMC_3DLUT_9CUBE = 1 -CMC_3DLUT_SIZE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'TEST_CLK_SEL' -TEST_CLK_SEL__enumvalues = { - 0: 'TEST_CLK_SEL_0', - 1: 'TEST_CLK_SEL_1', - 2: 'TEST_CLK_SEL_2', - 3: 'TEST_CLK_SEL_3', - 4: 'TEST_CLK_SEL_4', - 5: 'TEST_CLK_SEL_5', - 6: 'TEST_CLK_SEL_6', - 7: 'TEST_CLK_SEL_7', - 8: 'TEST_CLK_SEL_8', -} -TEST_CLK_SEL_0 = 0 -TEST_CLK_SEL_1 = 1 -TEST_CLK_SEL_2 = 2 -TEST_CLK_SEL_3 = 3 -TEST_CLK_SEL_4 = 4 -TEST_CLK_SEL_5 = 5 -TEST_CLK_SEL_6 = 6 -TEST_CLK_SEL_7 = 7 -TEST_CLK_SEL_8 = 8 -TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_SRC_SEL' -CRC_SRC_SEL__enumvalues = { - 0: 'CRC_SRC_0', - 1: 'CRC_SRC_1', - 2: 'CRC_SRC_2', - 3: 'CRC_SRC_3', -} -CRC_SRC_0 = 0 -CRC_SRC_1 = 1 -CRC_SRC_2 = 2 -CRC_SRC_3 = 3 -CRC_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_IN_PIX_SEL' -CRC_IN_PIX_SEL__enumvalues = { - 0: 'CRC_IN_PIX_0', - 1: 'CRC_IN_PIX_1', - 2: 'CRC_IN_PIX_2', - 3: 'CRC_IN_PIX_3', - 4: 'CRC_IN_PIX_4', - 5: 'CRC_IN_PIX_5', - 6: 'CRC_IN_PIX_6', - 7: 'CRC_IN_PIX_7', -} -CRC_IN_PIX_0 = 0 -CRC_IN_PIX_1 = 1 -CRC_IN_PIX_2 = 2 -CRC_IN_PIX_3 = 3 -CRC_IN_PIX_4 = 4 -CRC_IN_PIX_5 = 5 -CRC_IN_PIX_6 = 6 -CRC_IN_PIX_7 = 7 -CRC_IN_PIX_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_CUR_BITS_SEL' -CRC_CUR_BITS_SEL__enumvalues = { - 0: 'CRC_CUR_BITS_0', - 1: 'CRC_CUR_BITS_1', -} -CRC_CUR_BITS_0 = 0 -CRC_CUR_BITS_1 = 1 -CRC_CUR_BITS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_IN_CUR_SEL' -CRC_IN_CUR_SEL__enumvalues = { - 0: 'CRC_IN_CUR_0', - 1: 'CRC_IN_CUR_1', -} -CRC_IN_CUR_0 = 0 -CRC_IN_CUR_1 = 1 -CRC_IN_CUR_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_CUR_SEL' -CRC_CUR_SEL__enumvalues = { - 0: 'CRC_CUR_0', - 1: 'CRC_CUR_1', -} -CRC_CUR_0 = 0 -CRC_CUR_1 = 1 -CRC_CUR_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_STEREO_SEL' -CRC_STEREO_SEL__enumvalues = { - 0: 'CRC_STEREO_0', - 1: 'CRC_STEREO_1', - 2: 'CRC_STEREO_2', - 3: 'CRC_STEREO_3', -} -CRC_STEREO_0 = 0 -CRC_STEREO_1 = 1 -CRC_STEREO_2 = 2 -CRC_STEREO_3 = 3 -CRC_STEREO_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_INTERLACE_SEL' -CRC_INTERLACE_SEL__enumvalues = { - 0: 'CRC_INTERLACE_0', - 1: 'CRC_INTERLACE_1', - 2: 'CRC_INTERLACE_2', - 3: 'CRC_INTERLACE_3', -} -CRC_INTERLACE_0 = 0 -CRC_INTERLACE_1 = 1 -CRC_INTERLACE_2 = 2 -CRC_INTERLACE_3 = 3 -CRC_INTERLACE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CVALUE_SEL' -PERFCOUNTER_CVALUE_SEL__enumvalues = { - 0: 'PERFCOUNTER_CVALUE_SEL_47_0', - 1: 'PERFCOUNTER_CVALUE_SEL_15_0', - 2: 'PERFCOUNTER_CVALUE_SEL_31_16', - 3: 'PERFCOUNTER_CVALUE_SEL_47_32', - 4: 'PERFCOUNTER_CVALUE_SEL_11_0', - 5: 'PERFCOUNTER_CVALUE_SEL_23_12', - 6: 'PERFCOUNTER_CVALUE_SEL_35_24', - 7: 'PERFCOUNTER_CVALUE_SEL_47_36', -} -PERFCOUNTER_CVALUE_SEL_47_0 = 0 -PERFCOUNTER_CVALUE_SEL_15_0 = 1 -PERFCOUNTER_CVALUE_SEL_31_16 = 2 -PERFCOUNTER_CVALUE_SEL_47_32 = 3 -PERFCOUNTER_CVALUE_SEL_11_0 = 4 -PERFCOUNTER_CVALUE_SEL_23_12 = 5 -PERFCOUNTER_CVALUE_SEL_35_24 = 6 -PERFCOUNTER_CVALUE_SEL_47_36 = 7 -PERFCOUNTER_CVALUE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_INC_MODE' -PERFCOUNTER_INC_MODE__enumvalues = { - 0: 'PERFCOUNTER_INC_MODE_MULTI_BIT', - 1: 'PERFCOUNTER_INC_MODE_BOTH_EDGE', - 2: 'PERFCOUNTER_INC_MODE_LSB', - 3: 'PERFCOUNTER_INC_MODE_POS_EDGE', - 4: 'PERFCOUNTER_INC_MODE_NEG_EDGE', -} -PERFCOUNTER_INC_MODE_MULTI_BIT = 0 -PERFCOUNTER_INC_MODE_BOTH_EDGE = 1 -PERFCOUNTER_INC_MODE_LSB = 2 -PERFCOUNTER_INC_MODE_POS_EDGE = 3 -PERFCOUNTER_INC_MODE_NEG_EDGE = 4 -PERFCOUNTER_INC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_HW_CNTL_SEL' -PERFCOUNTER_HW_CNTL_SEL__enumvalues = { - 0: 'PERFCOUNTER_HW_CNTL_SEL_RUNEN', - 1: 'PERFCOUNTER_HW_CNTL_SEL_CNTOFF', -} -PERFCOUNTER_HW_CNTL_SEL_RUNEN = 0 -PERFCOUNTER_HW_CNTL_SEL_CNTOFF = 1 -PERFCOUNTER_HW_CNTL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_RUNEN_MODE' -PERFCOUNTER_RUNEN_MODE__enumvalues = { - 0: 'PERFCOUNTER_RUNEN_MODE_LEVEL', - 1: 'PERFCOUNTER_RUNEN_MODE_EDGE', -} -PERFCOUNTER_RUNEN_MODE_LEVEL = 0 -PERFCOUNTER_RUNEN_MODE_EDGE = 1 -PERFCOUNTER_RUNEN_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNTOFF_START_DIS' -PERFCOUNTER_CNTOFF_START_DIS__enumvalues = { - 0: 'PERFCOUNTER_CNTOFF_START_ENABLE', - 1: 'PERFCOUNTER_CNTOFF_START_DISABLE', -} -PERFCOUNTER_CNTOFF_START_ENABLE = 0 -PERFCOUNTER_CNTOFF_START_DISABLE = 1 -PERFCOUNTER_CNTOFF_START_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_RESTART_EN' -PERFCOUNTER_RESTART_EN__enumvalues = { - 0: 'PERFCOUNTER_RESTART_DISABLE', - 1: 'PERFCOUNTER_RESTART_ENABLE', -} -PERFCOUNTER_RESTART_DISABLE = 0 -PERFCOUNTER_RESTART_ENABLE = 1 -PERFCOUNTER_RESTART_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_INT_EN' -PERFCOUNTER_INT_EN__enumvalues = { - 0: 'PERFCOUNTER_INT_DISABLE', - 1: 'PERFCOUNTER_INT_ENABLE', -} -PERFCOUNTER_INT_DISABLE = 0 -PERFCOUNTER_INT_ENABLE = 1 -PERFCOUNTER_INT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_OFF_MASK' -PERFCOUNTER_OFF_MASK__enumvalues = { - 0: 'PERFCOUNTER_OFF_MASK_DISABLE', - 1: 'PERFCOUNTER_OFF_MASK_ENABLE', -} -PERFCOUNTER_OFF_MASK_DISABLE = 0 -PERFCOUNTER_OFF_MASK_ENABLE = 1 -PERFCOUNTER_OFF_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_ACTIVE' -PERFCOUNTER_ACTIVE__enumvalues = { - 0: 'PERFCOUNTER_IS_IDLE', - 1: 'PERFCOUNTER_IS_ACTIVE', -} -PERFCOUNTER_IS_IDLE = 0 -PERFCOUNTER_IS_ACTIVE = 1 -PERFCOUNTER_ACTIVE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_INT_TYPE' -PERFCOUNTER_INT_TYPE__enumvalues = { - 0: 'PERFCOUNTER_INT_TYPE_LEVEL', - 1: 'PERFCOUNTER_INT_TYPE_PULSE', -} -PERFCOUNTER_INT_TYPE_LEVEL = 0 -PERFCOUNTER_INT_TYPE_PULSE = 1 -PERFCOUNTER_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_COUNTED_VALUE_TYPE' -PERFCOUNTER_COUNTED_VALUE_TYPE__enumvalues = { - 0: 'PERFCOUNTER_COUNTED_VALUE_TYPE_ACC', - 1: 'PERFCOUNTER_COUNTED_VALUE_TYPE_MAX', - 2: 'PERFCOUNTER_COUNTED_VALUE_TYPE_MIN', -} -PERFCOUNTER_COUNTED_VALUE_TYPE_ACC = 0 -PERFCOUNTER_COUNTED_VALUE_TYPE_MAX = 1 -PERFCOUNTER_COUNTED_VALUE_TYPE_MIN = 2 -PERFCOUNTER_COUNTED_VALUE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_HW_STOP1_SEL' -PERFCOUNTER_HW_STOP1_SEL__enumvalues = { - 0: 'PERFCOUNTER_HW_STOP1_0', - 1: 'PERFCOUNTER_HW_STOP1_1', -} -PERFCOUNTER_HW_STOP1_0 = 0 -PERFCOUNTER_HW_STOP1_1 = 1 -PERFCOUNTER_HW_STOP1_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_HW_STOP2_SEL' -PERFCOUNTER_HW_STOP2_SEL__enumvalues = { - 0: 'PERFCOUNTER_HW_STOP2_0', - 1: 'PERFCOUNTER_HW_STOP2_1', -} -PERFCOUNTER_HW_STOP2_0 = 0 -PERFCOUNTER_HW_STOP2_1 = 1 -PERFCOUNTER_HW_STOP2_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNTL_SEL' -PERFCOUNTER_CNTL_SEL__enumvalues = { - 0: 'PERFCOUNTER_CNTL_SEL_0', - 1: 'PERFCOUNTER_CNTL_SEL_1', - 2: 'PERFCOUNTER_CNTL_SEL_2', - 3: 'PERFCOUNTER_CNTL_SEL_3', - 4: 'PERFCOUNTER_CNTL_SEL_4', - 5: 'PERFCOUNTER_CNTL_SEL_5', - 6: 'PERFCOUNTER_CNTL_SEL_6', - 7: 'PERFCOUNTER_CNTL_SEL_7', -} -PERFCOUNTER_CNTL_SEL_0 = 0 -PERFCOUNTER_CNTL_SEL_1 = 1 -PERFCOUNTER_CNTL_SEL_2 = 2 -PERFCOUNTER_CNTL_SEL_3 = 3 -PERFCOUNTER_CNTL_SEL_4 = 4 -PERFCOUNTER_CNTL_SEL_5 = 5 -PERFCOUNTER_CNTL_SEL_6 = 6 -PERFCOUNTER_CNTL_SEL_7 = 7 -PERFCOUNTER_CNTL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT0_STATE' -PERFCOUNTER_CNT0_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT0_STATE_RESET', - 1: 'PERFCOUNTER_CNT0_STATE_START', - 2: 'PERFCOUNTER_CNT0_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT0_STATE_HW', -} -PERFCOUNTER_CNT0_STATE_RESET = 0 -PERFCOUNTER_CNT0_STATE_START = 1 -PERFCOUNTER_CNT0_STATE_FREEZE = 2 -PERFCOUNTER_CNT0_STATE_HW = 3 -PERFCOUNTER_CNT0_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL0' -PERFCOUNTER_STATE_SEL0__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL0_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL0_LOCAL', -} -PERFCOUNTER_STATE_SEL0_GLOBAL = 0 -PERFCOUNTER_STATE_SEL0_LOCAL = 1 -PERFCOUNTER_STATE_SEL0 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT1_STATE' -PERFCOUNTER_CNT1_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT1_STATE_RESET', - 1: 'PERFCOUNTER_CNT1_STATE_START', - 2: 'PERFCOUNTER_CNT1_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT1_STATE_HW', -} -PERFCOUNTER_CNT1_STATE_RESET = 0 -PERFCOUNTER_CNT1_STATE_START = 1 -PERFCOUNTER_CNT1_STATE_FREEZE = 2 -PERFCOUNTER_CNT1_STATE_HW = 3 -PERFCOUNTER_CNT1_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL1' -PERFCOUNTER_STATE_SEL1__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL1_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL1_LOCAL', -} -PERFCOUNTER_STATE_SEL1_GLOBAL = 0 -PERFCOUNTER_STATE_SEL1_LOCAL = 1 -PERFCOUNTER_STATE_SEL1 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT2_STATE' -PERFCOUNTER_CNT2_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT2_STATE_RESET', - 1: 'PERFCOUNTER_CNT2_STATE_START', - 2: 'PERFCOUNTER_CNT2_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT2_STATE_HW', -} -PERFCOUNTER_CNT2_STATE_RESET = 0 -PERFCOUNTER_CNT2_STATE_START = 1 -PERFCOUNTER_CNT2_STATE_FREEZE = 2 -PERFCOUNTER_CNT2_STATE_HW = 3 -PERFCOUNTER_CNT2_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL2' -PERFCOUNTER_STATE_SEL2__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL2_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL2_LOCAL', -} -PERFCOUNTER_STATE_SEL2_GLOBAL = 0 -PERFCOUNTER_STATE_SEL2_LOCAL = 1 -PERFCOUNTER_STATE_SEL2 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT3_STATE' -PERFCOUNTER_CNT3_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT3_STATE_RESET', - 1: 'PERFCOUNTER_CNT3_STATE_START', - 2: 'PERFCOUNTER_CNT3_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT3_STATE_HW', -} -PERFCOUNTER_CNT3_STATE_RESET = 0 -PERFCOUNTER_CNT3_STATE_START = 1 -PERFCOUNTER_CNT3_STATE_FREEZE = 2 -PERFCOUNTER_CNT3_STATE_HW = 3 -PERFCOUNTER_CNT3_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL3' -PERFCOUNTER_STATE_SEL3__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL3_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL3_LOCAL', -} -PERFCOUNTER_STATE_SEL3_GLOBAL = 0 -PERFCOUNTER_STATE_SEL3_LOCAL = 1 -PERFCOUNTER_STATE_SEL3 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT4_STATE' -PERFCOUNTER_CNT4_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT4_STATE_RESET', - 1: 'PERFCOUNTER_CNT4_STATE_START', - 2: 'PERFCOUNTER_CNT4_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT4_STATE_HW', -} -PERFCOUNTER_CNT4_STATE_RESET = 0 -PERFCOUNTER_CNT4_STATE_START = 1 -PERFCOUNTER_CNT4_STATE_FREEZE = 2 -PERFCOUNTER_CNT4_STATE_HW = 3 -PERFCOUNTER_CNT4_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL4' -PERFCOUNTER_STATE_SEL4__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL4_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL4_LOCAL', -} -PERFCOUNTER_STATE_SEL4_GLOBAL = 0 -PERFCOUNTER_STATE_SEL4_LOCAL = 1 -PERFCOUNTER_STATE_SEL4 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT5_STATE' -PERFCOUNTER_CNT5_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT5_STATE_RESET', - 1: 'PERFCOUNTER_CNT5_STATE_START', - 2: 'PERFCOUNTER_CNT5_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT5_STATE_HW', -} -PERFCOUNTER_CNT5_STATE_RESET = 0 -PERFCOUNTER_CNT5_STATE_START = 1 -PERFCOUNTER_CNT5_STATE_FREEZE = 2 -PERFCOUNTER_CNT5_STATE_HW = 3 -PERFCOUNTER_CNT5_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL5' -PERFCOUNTER_STATE_SEL5__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL5_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL5_LOCAL', -} -PERFCOUNTER_STATE_SEL5_GLOBAL = 0 -PERFCOUNTER_STATE_SEL5_LOCAL = 1 -PERFCOUNTER_STATE_SEL5 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT6_STATE' -PERFCOUNTER_CNT6_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT6_STATE_RESET', - 1: 'PERFCOUNTER_CNT6_STATE_START', - 2: 'PERFCOUNTER_CNT6_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT6_STATE_HW', -} -PERFCOUNTER_CNT6_STATE_RESET = 0 -PERFCOUNTER_CNT6_STATE_START = 1 -PERFCOUNTER_CNT6_STATE_FREEZE = 2 -PERFCOUNTER_CNT6_STATE_HW = 3 -PERFCOUNTER_CNT6_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL6' -PERFCOUNTER_STATE_SEL6__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL6_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL6_LOCAL', -} -PERFCOUNTER_STATE_SEL6_GLOBAL = 0 -PERFCOUNTER_STATE_SEL6_LOCAL = 1 -PERFCOUNTER_STATE_SEL6 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT7_STATE' -PERFCOUNTER_CNT7_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT7_STATE_RESET', - 1: 'PERFCOUNTER_CNT7_STATE_START', - 2: 'PERFCOUNTER_CNT7_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT7_STATE_HW', -} -PERFCOUNTER_CNT7_STATE_RESET = 0 -PERFCOUNTER_CNT7_STATE_START = 1 -PERFCOUNTER_CNT7_STATE_FREEZE = 2 -PERFCOUNTER_CNT7_STATE_HW = 3 -PERFCOUNTER_CNT7_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL7' -PERFCOUNTER_STATE_SEL7__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL7_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL7_LOCAL', -} -PERFCOUNTER_STATE_SEL7_GLOBAL = 0 -PERFCOUNTER_STATE_SEL7_LOCAL = 1 -PERFCOUNTER_STATE_SEL7 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_STATE' -PERFMON_STATE__enumvalues = { - 0: 'PERFMON_STATE_RESET', - 1: 'PERFMON_STATE_START', - 2: 'PERFMON_STATE_FREEZE', - 3: 'PERFMON_STATE_HW', -} -PERFMON_STATE_RESET = 0 -PERFMON_STATE_START = 1 -PERFMON_STATE_FREEZE = 2 -PERFMON_STATE_HW = 3 -PERFMON_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_CNTOFF_AND_OR' -PERFMON_CNTOFF_AND_OR__enumvalues = { - 0: 'PERFMON_CNTOFF_OR', - 1: 'PERFMON_CNTOFF_AND', -} -PERFMON_CNTOFF_OR = 0 -PERFMON_CNTOFF_AND = 1 -PERFMON_CNTOFF_AND_OR = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_CNTOFF_INT_EN' -PERFMON_CNTOFF_INT_EN__enumvalues = { - 0: 'PERFMON_CNTOFF_INT_DISABLE', - 1: 'PERFMON_CNTOFF_INT_ENABLE', -} -PERFMON_CNTOFF_INT_DISABLE = 0 -PERFMON_CNTOFF_INT_ENABLE = 1 -PERFMON_CNTOFF_INT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_CNTOFF_INT_TYPE' -PERFMON_CNTOFF_INT_TYPE__enumvalues = { - 0: 'PERFMON_CNTOFF_INT_TYPE_LEVEL', - 1: 'PERFMON_CNTOFF_INT_TYPE_PULSE', -} -PERFMON_CNTOFF_INT_TYPE_LEVEL = 0 -PERFMON_CNTOFF_INT_TYPE_PULSE = 1 -PERFMON_CNTOFF_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'ROTATION_ANGLE' -ROTATION_ANGLE__enumvalues = { - 0: 'ROTATE_0_DEGREES', - 1: 'ROTATE_90_DEGREES', - 2: 'ROTATE_180_DEGREES', - 3: 'ROTATE_270_DEGREES', -} -ROTATE_0_DEGREES = 0 -ROTATE_90_DEGREES = 1 -ROTATE_180_DEGREES = 2 -ROTATE_270_DEGREES = 3 -ROTATION_ANGLE = ctypes.c_uint32 # enum - -# values for enumeration 'H_MIRROR_EN' -H_MIRROR_EN__enumvalues = { - 0: 'HW_MIRRORING_DISABLE', - 1: 'HW_MIRRORING_ENABLE', -} -HW_MIRRORING_DISABLE = 0 -HW_MIRRORING_ENABLE = 1 -H_MIRROR_EN = ctypes.c_uint32 # enum - -# values for enumeration 'NUM_PIPES' -NUM_PIPES__enumvalues = { - 0: 'ONE_PIPE', - 1: 'TWO_PIPES', - 2: 'FOUR_PIPES', - 3: 'EIGHT_PIPES', - 4: 'SIXTEEN_PIPES', - 5: 'THIRTY_TWO_PIPES', - 6: 'SIXTY_FOUR_PIPES', -} -ONE_PIPE = 0 -TWO_PIPES = 1 -FOUR_PIPES = 2 -EIGHT_PIPES = 3 -SIXTEEN_PIPES = 4 -THIRTY_TWO_PIPES = 5 -SIXTY_FOUR_PIPES = 6 -NUM_PIPES = ctypes.c_uint32 # enum - -# values for enumeration 'NUM_BANKS' -NUM_BANKS__enumvalues = { - 0: 'ONE_BANK', - 1: 'TWO_BANKS', - 2: 'FOUR_BANKS', - 3: 'EIGHT_BANKS', - 4: 'SIXTEEN_BANKS', -} -ONE_BANK = 0 -TWO_BANKS = 1 -FOUR_BANKS = 2 -EIGHT_BANKS = 3 -SIXTEEN_BANKS = 4 -NUM_BANKS = ctypes.c_uint32 # enum - -# values for enumeration 'SW_MODE' -SW_MODE__enumvalues = { - 0: 'SWIZZLE_LINEAR', - 5: 'SWIZZLE_4KB_S', - 6: 'SWIZZLE_4KB_D', - 9: 'SWIZZLE_64KB_S', - 10: 'SWIZZLE_64KB_D', - 13: 'SWIZZLE_VAR_S', - 14: 'SWIZZLE_VAR_D', - 17: 'SWIZZLE_64KB_S_T', - 18: 'SWIZZLE_64KB_D_T', - 21: 'SWIZZLE_4KB_S_X', - 22: 'SWIZZLE_4KB_D_X', - 25: 'SWIZZLE_64KB_S_X', - 26: 'SWIZZLE_64KB_D_X', - 27: 'SWIZZLE_64KB_R_X', - 29: 'SWIZZLE_VAR_S_X', - 30: 'SWIZZLE_VAR_D_X', -} -SWIZZLE_LINEAR = 0 -SWIZZLE_4KB_S = 5 -SWIZZLE_4KB_D = 6 -SWIZZLE_64KB_S = 9 -SWIZZLE_64KB_D = 10 -SWIZZLE_VAR_S = 13 -SWIZZLE_VAR_D = 14 -SWIZZLE_64KB_S_T = 17 -SWIZZLE_64KB_D_T = 18 -SWIZZLE_4KB_S_X = 21 -SWIZZLE_4KB_D_X = 22 -SWIZZLE_64KB_S_X = 25 -SWIZZLE_64KB_D_X = 26 -SWIZZLE_64KB_R_X = 27 -SWIZZLE_VAR_S_X = 29 -SWIZZLE_VAR_D_X = 30 -SW_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_INTERLEAVE' -PIPE_INTERLEAVE__enumvalues = { - 0: 'PIPE_INTERLEAVE_256B', - 1: 'PIPE_INTERLEAVE_512B', - 2: 'PIPE_INTERLEAVE_1KB', -} -PIPE_INTERLEAVE_256B = 0 -PIPE_INTERLEAVE_512B = 1 -PIPE_INTERLEAVE_1KB = 2 -PIPE_INTERLEAVE = ctypes.c_uint32 # enum - -# values for enumeration 'LEGACY_PIPE_INTERLEAVE' -LEGACY_PIPE_INTERLEAVE__enumvalues = { - 0: 'LEGACY_PIPE_INTERLEAVE_256B', - 1: 'LEGACY_PIPE_INTERLEAVE_512B', -} -LEGACY_PIPE_INTERLEAVE_256B = 0 -LEGACY_PIPE_INTERLEAVE_512B = 1 -LEGACY_PIPE_INTERLEAVE = ctypes.c_uint32 # enum - -# values for enumeration 'NUM_SE' -NUM_SE__enumvalues = { - 0: 'ONE_SHADER_ENGIN', - 1: 'TWO_SHADER_ENGINS', - 2: 'FOUR_SHADER_ENGINS', - 3: 'EIGHT_SHADER_ENGINS', -} -ONE_SHADER_ENGIN = 0 -TWO_SHADER_ENGINS = 1 -FOUR_SHADER_ENGINS = 2 -EIGHT_SHADER_ENGINS = 3 -NUM_SE = ctypes.c_uint32 # enum - -# values for enumeration 'NUM_RB_PER_SE' -NUM_RB_PER_SE__enumvalues = { - 0: 'ONE_RB_PER_SE', - 1: 'TWO_RB_PER_SE', - 2: 'FOUR_RB_PER_SE', -} -ONE_RB_PER_SE = 0 -TWO_RB_PER_SE = 1 -FOUR_RB_PER_SE = 2 -NUM_RB_PER_SE = ctypes.c_uint32 # enum - -# values for enumeration 'MAX_COMPRESSED_FRAGS' -MAX_COMPRESSED_FRAGS__enumvalues = { - 0: 'ONE_FRAGMENT', - 1: 'TWO_FRAGMENTS', - 2: 'FOUR_FRAGMENTS', - 3: 'EIGHT_FRAGMENTS', -} -ONE_FRAGMENT = 0 -TWO_FRAGMENTS = 1 -FOUR_FRAGMENTS = 2 -EIGHT_FRAGMENTS = 3 -MAX_COMPRESSED_FRAGS = ctypes.c_uint32 # enum - -# values for enumeration 'DIM_TYPE' -DIM_TYPE__enumvalues = { - 0: 'DIM_TYPE_1D', - 1: 'DIM_TYPE_2D', - 2: 'DIM_TYPE_3D', - 3: 'DIM_TYPE_RESERVED', -} -DIM_TYPE_1D = 0 -DIM_TYPE_2D = 1 -DIM_TYPE_3D = 2 -DIM_TYPE_RESERVED = 3 -DIM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'META_LINEAR' -META_LINEAR__enumvalues = { - 0: 'META_SURF_TILED', - 1: 'META_SURF_LINEAR', -} -META_SURF_TILED = 0 -META_SURF_LINEAR = 1 -META_LINEAR = ctypes.c_uint32 # enum - -# values for enumeration 'RB_ALIGNED' -RB_ALIGNED__enumvalues = { - 0: 'RB_UNALIGNED_META_SURF', - 1: 'RB_ALIGNED_META_SURF', -} -RB_UNALIGNED_META_SURF = 0 -RB_ALIGNED_META_SURF = 1 -RB_ALIGNED = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_ALIGNED' -PIPE_ALIGNED__enumvalues = { - 0: 'PIPE_UNALIGNED_SURF', - 1: 'PIPE_ALIGNED_SURF', -} -PIPE_UNALIGNED_SURF = 0 -PIPE_ALIGNED_SURF = 1 -PIPE_ALIGNED = ctypes.c_uint32 # enum - -# values for enumeration 'ARRAY_MODE' -ARRAY_MODE__enumvalues = { - 0: 'AM_LINEAR_GENERAL', - 1: 'AM_LINEAR_ALIGNED', - 2: 'AM_1D_TILED_THIN1', - 3: 'AM_1D_TILED_THICK', - 4: 'AM_2D_TILED_THIN1', - 5: 'AM_PRT_TILED_THIN1', - 6: 'AM_PRT_2D_TILED_THIN1', - 7: 'AM_2D_TILED_THICK', - 8: 'AM_2D_TILED_XTHICK', - 9: 'AM_PRT_TILED_THICK', - 10: 'AM_PRT_2D_TILED_THICK', - 11: 'AM_PRT_3D_TILED_THIN1', - 12: 'AM_3D_TILED_THIN1', - 13: 'AM_3D_TILED_THICK', - 14: 'AM_3D_TILED_XTHICK', - 15: 'AM_PRT_3D_TILED_THICK', -} -AM_LINEAR_GENERAL = 0 -AM_LINEAR_ALIGNED = 1 -AM_1D_TILED_THIN1 = 2 -AM_1D_TILED_THICK = 3 -AM_2D_TILED_THIN1 = 4 -AM_PRT_TILED_THIN1 = 5 -AM_PRT_2D_TILED_THIN1 = 6 -AM_2D_TILED_THICK = 7 -AM_2D_TILED_XTHICK = 8 -AM_PRT_TILED_THICK = 9 -AM_PRT_2D_TILED_THICK = 10 -AM_PRT_3D_TILED_THIN1 = 11 -AM_3D_TILED_THIN1 = 12 -AM_3D_TILED_THICK = 13 -AM_3D_TILED_XTHICK = 14 -AM_PRT_3D_TILED_THICK = 15 -ARRAY_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_CONFIG' -PIPE_CONFIG__enumvalues = { - 0: 'P2', - 4: 'P4_8x16', - 5: 'P4_16x16', - 6: 'P4_16x32', - 7: 'P4_32x32', - 8: 'P8_16x16_8x16', - 9: 'P8_16x32_8x16', - 10: 'P8_32x32_8x16', - 11: 'P8_16x32_16x16', - 12: 'P8_32x32_16x16', - 13: 'P8_32x32_16x32', - 14: 'P8_32x64_32x32', - 16: 'P16_32x32_8x16', - 17: 'P16_32x32_16x16', - 18: 'P16_ADDR_SURF', -} -P2 = 0 -P4_8x16 = 4 -P4_16x16 = 5 -P4_16x32 = 6 -P4_32x32 = 7 -P8_16x16_8x16 = 8 -P8_16x32_8x16 = 9 -P8_32x32_8x16 = 10 -P8_16x32_16x16 = 11 -P8_32x32_16x16 = 12 -P8_32x32_16x32 = 13 -P8_32x64_32x32 = 14 -P16_32x32_8x16 = 16 -P16_32x32_16x16 = 17 -P16_ADDR_SURF = 18 -PIPE_CONFIG = ctypes.c_uint32 # enum - -# values for enumeration 'MICRO_TILE_MODE_NEW' -MICRO_TILE_MODE_NEW__enumvalues = { - 0: 'DISPLAY_MICRO_TILING', - 1: 'THIN_MICRO_TILING', - 2: 'DEPTH_MICRO_TILING', - 3: 'ROTATED_MICRO_TILING', - 4: 'THICK_MICRO_TILING', -} -DISPLAY_MICRO_TILING = 0 -THIN_MICRO_TILING = 1 -DEPTH_MICRO_TILING = 2 -ROTATED_MICRO_TILING = 3 -THICK_MICRO_TILING = 4 -MICRO_TILE_MODE_NEW = ctypes.c_uint32 # enum - -# values for enumeration 'TILE_SPLIT' -TILE_SPLIT__enumvalues = { - 0: 'SURF_TILE_SPLIT_64B', - 1: 'SURF_TILE_SPLIT_128B', - 2: 'SURF_TILE_SPLIT_256B', - 3: 'SURF_TILE_SPLIT_512B', - 4: 'SURF_TILE_SPLIT_1KB', - 5: 'SURF_TILE_SPLIT_2KB', - 6: 'SURF_TILE_SPLIT_4KB', -} -SURF_TILE_SPLIT_64B = 0 -SURF_TILE_SPLIT_128B = 1 -SURF_TILE_SPLIT_256B = 2 -SURF_TILE_SPLIT_512B = 3 -SURF_TILE_SPLIT_1KB = 4 -SURF_TILE_SPLIT_2KB = 5 -SURF_TILE_SPLIT_4KB = 6 -TILE_SPLIT = ctypes.c_uint32 # enum - -# values for enumeration 'BANK_WIDTH' -BANK_WIDTH__enumvalues = { - 0: 'SURF_BANK_WIDTH_1', - 1: 'SURF_BANK_WIDTH_2', - 2: 'SURF_BANK_WIDTH_4', - 3: 'SURF_BANK_WIDTH_8', -} -SURF_BANK_WIDTH_1 = 0 -SURF_BANK_WIDTH_2 = 1 -SURF_BANK_WIDTH_4 = 2 -SURF_BANK_WIDTH_8 = 3 -BANK_WIDTH = ctypes.c_uint32 # enum - -# values for enumeration 'BANK_HEIGHT' -BANK_HEIGHT__enumvalues = { - 0: 'SURF_BANK_HEIGHT_1', - 1: 'SURF_BANK_HEIGHT_2', - 2: 'SURF_BANK_HEIGHT_4', - 3: 'SURF_BANK_HEIGHT_8', -} -SURF_BANK_HEIGHT_1 = 0 -SURF_BANK_HEIGHT_2 = 1 -SURF_BANK_HEIGHT_4 = 2 -SURF_BANK_HEIGHT_8 = 3 -BANK_HEIGHT = ctypes.c_uint32 # enum - -# values for enumeration 'MACRO_TILE_ASPECT' -MACRO_TILE_ASPECT__enumvalues = { - 0: 'SURF_MACRO_ASPECT_1', - 1: 'SURF_MACRO_ASPECT_2', - 2: 'SURF_MACRO_ASPECT_4', - 3: 'SURF_MACRO_ASPECT_8', -} -SURF_MACRO_ASPECT_1 = 0 -SURF_MACRO_ASPECT_2 = 1 -SURF_MACRO_ASPECT_4 = 2 -SURF_MACRO_ASPECT_8 = 3 -MACRO_TILE_ASPECT = ctypes.c_uint32 # enum - -# values for enumeration 'LEGACY_NUM_BANKS' -LEGACY_NUM_BANKS__enumvalues = { - 0: 'SURF_2_BANK', - 1: 'SURF_4_BANK', - 2: 'SURF_8_BANK', - 3: 'SURF_16_BANK', -} -SURF_2_BANK = 0 -SURF_4_BANK = 1 -SURF_8_BANK = 2 -SURF_16_BANK = 3 -LEGACY_NUM_BANKS = ctypes.c_uint32 # enum - -# values for enumeration 'SWATH_HEIGHT' -SWATH_HEIGHT__enumvalues = { - 0: 'SWATH_HEIGHT_1L', - 1: 'SWATH_HEIGHT_2L', - 2: 'SWATH_HEIGHT_4L', - 3: 'SWATH_HEIGHT_8L', - 4: 'SWATH_HEIGHT_16L', -} -SWATH_HEIGHT_1L = 0 -SWATH_HEIGHT_2L = 1 -SWATH_HEIGHT_4L = 2 -SWATH_HEIGHT_8L = 3 -SWATH_HEIGHT_16L = 4 -SWATH_HEIGHT = ctypes.c_uint32 # enum - -# values for enumeration 'PTE_ROW_HEIGHT_LINEAR' -PTE_ROW_HEIGHT_LINEAR__enumvalues = { - 0: 'PTE_ROW_HEIGHT_LINEAR_8L', - 1: 'PTE_ROW_HEIGHT_LINEAR_16L', - 2: 'PTE_ROW_HEIGHT_LINEAR_32L', - 3: 'PTE_ROW_HEIGHT_LINEAR_64L', - 4: 'PTE_ROW_HEIGHT_LINEAR_128L', - 5: 'PTE_ROW_HEIGHT_LINEAR_256L', - 6: 'PTE_ROW_HEIGHT_LINEAR_512L', - 7: 'PTE_ROW_HEIGHT_LINEAR_1024L', -} -PTE_ROW_HEIGHT_LINEAR_8L = 0 -PTE_ROW_HEIGHT_LINEAR_16L = 1 -PTE_ROW_HEIGHT_LINEAR_32L = 2 -PTE_ROW_HEIGHT_LINEAR_64L = 3 -PTE_ROW_HEIGHT_LINEAR_128L = 4 -PTE_ROW_HEIGHT_LINEAR_256L = 5 -PTE_ROW_HEIGHT_LINEAR_512L = 6 -PTE_ROW_HEIGHT_LINEAR_1024L = 7 -PTE_ROW_HEIGHT_LINEAR = ctypes.c_uint32 # enum - -# values for enumeration 'CHUNK_SIZE' -CHUNK_SIZE__enumvalues = { - 0: 'CHUNK_SIZE_1KB', - 1: 'CHUNK_SIZE_2KB', - 2: 'CHUNK_SIZE_4KB', - 3: 'CHUNK_SIZE_8KB', - 4: 'CHUNK_SIZE_16KB', - 5: 'CHUNK_SIZE_32KB', - 6: 'CHUNK_SIZE_64KB', -} -CHUNK_SIZE_1KB = 0 -CHUNK_SIZE_2KB = 1 -CHUNK_SIZE_4KB = 2 -CHUNK_SIZE_8KB = 3 -CHUNK_SIZE_16KB = 4 -CHUNK_SIZE_32KB = 5 -CHUNK_SIZE_64KB = 6 -CHUNK_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'MIN_CHUNK_SIZE' -MIN_CHUNK_SIZE__enumvalues = { - 0: 'NO_MIN_CHUNK_SIZE', - 1: 'MIN_CHUNK_SIZE_256B', - 2: 'MIN_CHUNK_SIZE_512B', - 3: 'MIN_CHUNK_SIZE_1024B', -} -NO_MIN_CHUNK_SIZE = 0 -MIN_CHUNK_SIZE_256B = 1 -MIN_CHUNK_SIZE_512B = 2 -MIN_CHUNK_SIZE_1024B = 3 -MIN_CHUNK_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'META_CHUNK_SIZE' -META_CHUNK_SIZE__enumvalues = { - 0: 'META_CHUNK_SIZE_1KB', - 1: 'META_CHUNK_SIZE_2KB', - 2: 'META_CHUNK_SIZE_4KB', - 3: 'META_CHUNK_SIZE_8KB', -} -META_CHUNK_SIZE_1KB = 0 -META_CHUNK_SIZE_2KB = 1 -META_CHUNK_SIZE_4KB = 2 -META_CHUNK_SIZE_8KB = 3 -META_CHUNK_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'MIN_META_CHUNK_SIZE' -MIN_META_CHUNK_SIZE__enumvalues = { - 0: 'NO_MIN_META_CHUNK_SIZE', - 1: 'MIN_META_CHUNK_SIZE_64B', - 2: 'MIN_META_CHUNK_SIZE_128B', - 3: 'MIN_META_CHUNK_SIZE_256B', -} -NO_MIN_META_CHUNK_SIZE = 0 -MIN_META_CHUNK_SIZE_64B = 1 -MIN_META_CHUNK_SIZE_128B = 2 -MIN_META_CHUNK_SIZE_256B = 3 -MIN_META_CHUNK_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'DPTE_GROUP_SIZE' -DPTE_GROUP_SIZE__enumvalues = { - 0: 'DPTE_GROUP_SIZE_64B', - 1: 'DPTE_GROUP_SIZE_128B', - 2: 'DPTE_GROUP_SIZE_256B', - 3: 'DPTE_GROUP_SIZE_512B', - 4: 'DPTE_GROUP_SIZE_1024B', - 5: 'DPTE_GROUP_SIZE_2048B', - 6: 'DPTE_GROUP_SIZE_4096B', - 7: 'DPTE_GROUP_SIZE_8192B', -} -DPTE_GROUP_SIZE_64B = 0 -DPTE_GROUP_SIZE_128B = 1 -DPTE_GROUP_SIZE_256B = 2 -DPTE_GROUP_SIZE_512B = 3 -DPTE_GROUP_SIZE_1024B = 4 -DPTE_GROUP_SIZE_2048B = 5 -DPTE_GROUP_SIZE_4096B = 6 -DPTE_GROUP_SIZE_8192B = 7 -DPTE_GROUP_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'MPTE_GROUP_SIZE' -MPTE_GROUP_SIZE__enumvalues = { - 0: 'MPTE_GROUP_SIZE_64B', - 1: 'MPTE_GROUP_SIZE_128B', - 2: 'MPTE_GROUP_SIZE_256B', - 3: 'MPTE_GROUP_SIZE_512B', - 4: 'MPTE_GROUP_SIZE_1024B', - 5: 'MPTE_GROUP_SIZE_2048B', - 6: 'MPTE_GROUP_SIZE_4096B', - 7: 'MPTE_GROUP_SIZE_8192B', -} -MPTE_GROUP_SIZE_64B = 0 -MPTE_GROUP_SIZE_128B = 1 -MPTE_GROUP_SIZE_256B = 2 -MPTE_GROUP_SIZE_512B = 3 -MPTE_GROUP_SIZE_1024B = 4 -MPTE_GROUP_SIZE_2048B = 5 -MPTE_GROUP_SIZE_4096B = 6 -MPTE_GROUP_SIZE_8192B = 7 -MPTE_GROUP_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_BLANK_EN' -HUBP_BLANK_EN__enumvalues = { - 0: 'HUBP_BLANK_SW_DEASSERT', - 1: 'HUBP_BLANK_SW_ASSERT', -} -HUBP_BLANK_SW_DEASSERT = 0 -HUBP_BLANK_SW_ASSERT = 1 -HUBP_BLANK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_DISABLE' -HUBP_DISABLE__enumvalues = { - 0: 'HUBP_ENABLED', - 1: 'HUBP_DISABLED', -} -HUBP_ENABLED = 0 -HUBP_DISABLED = 1 -HUBP_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_TTU_DISABLE' -HUBP_TTU_DISABLE__enumvalues = { - 0: 'HUBP_TTU_ENABLED', - 1: 'HUBP_TTU_DISABLED', -} -HUBP_TTU_ENABLED = 0 -HUBP_TTU_DISABLED = 1 -HUBP_TTU_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_NO_OUTSTANDING_REQ' -HUBP_NO_OUTSTANDING_REQ__enumvalues = { - 0: 'OUTSTANDING_REQ', - 1: 'NO_OUTSTANDING_REQ', -} -OUTSTANDING_REQ = 0 -NO_OUTSTANDING_REQ = 1 -HUBP_NO_OUTSTANDING_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_IN_BLANK' -HUBP_IN_BLANK__enumvalues = { - 0: 'HUBP_IN_ACTIVE', - 1: 'HUBP_IN_VBLANK', -} -HUBP_IN_ACTIVE = 0 -HUBP_IN_VBLANK = 1 -HUBP_IN_BLANK = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_VTG_SEL' -HUBP_VTG_SEL__enumvalues = { - 0: 'VTG_SEL_0', - 1: 'VTG_SEL_1', - 2: 'VTG_SEL_2', - 3: 'VTG_SEL_3', - 4: 'VTG_SEL_4', - 5: 'VTG_SEL_5', -} -VTG_SEL_0 = 0 -VTG_SEL_1 = 1 -VTG_SEL_2 = 2 -VTG_SEL_3 = 3 -VTG_SEL_4 = 4 -VTG_SEL_5 = 5 -HUBP_VTG_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_VREADY_AT_OR_AFTER_VSYNC' -HUBP_VREADY_AT_OR_AFTER_VSYNC__enumvalues = { - 0: 'VREADY_BEFORE_VSYNC', - 1: 'VREADY_AT_OR_AFTER_VSYNC', -} -VREADY_BEFORE_VSYNC = 0 -VREADY_AT_OR_AFTER_VSYNC = 1 -HUBP_VREADY_AT_OR_AFTER_VSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'VMPG_SIZE' -VMPG_SIZE__enumvalues = { - 0: 'VMPG_SIZE_4KB', - 1: 'VMPG_SIZE_64KB', -} -VMPG_SIZE_4KB = 0 -VMPG_SIZE_64KB = 1 -VMPG_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_MEASURE_WIN_MODE_DCFCLK' -HUBP_MEASURE_WIN_MODE_DCFCLK__enumvalues = { - 0: 'HUBP_MEASURE_WIN_MODE_DCFCLK_0', - 1: 'HUBP_MEASURE_WIN_MODE_DCFCLK_1', - 2: 'HUBP_MEASURE_WIN_MODE_DCFCLK_2', - 3: 'HUBP_MEASURE_WIN_MODE_DCFCLK_3', -} -HUBP_MEASURE_WIN_MODE_DCFCLK_0 = 0 -HUBP_MEASURE_WIN_MODE_DCFCLK_1 = 1 -HUBP_MEASURE_WIN_MODE_DCFCLK_2 = 2 -HUBP_MEASURE_WIN_MODE_DCFCLK_3 = 3 -HUBP_MEASURE_WIN_MODE_DCFCLK = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_TMZ' -SURFACE_TMZ__enumvalues = { - 0: 'SURFACE_IS_NOT_TMZ', - 1: 'SURFACE_IS_TMZ', -} -SURFACE_IS_NOT_TMZ = 0 -SURFACE_IS_TMZ = 1 -SURFACE_TMZ = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_DCC' -SURFACE_DCC__enumvalues = { - 0: 'SURFACE_IS_NOT_DCC', - 1: 'SURFACE_IS_DCC', -} -SURFACE_IS_NOT_DCC = 0 -SURFACE_IS_DCC = 1 -SURFACE_DCC = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_DCC_IND_64B' -SURFACE_DCC_IND_64B__enumvalues = { - 0: 'SURFACE_DCC_IS_NOT_IND_64B', - 1: 'SURFACE_DCC_IS_IND_64B', -} -SURFACE_DCC_IS_NOT_IND_64B = 0 -SURFACE_DCC_IS_IND_64B = 1 -SURFACE_DCC_IND_64B = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_TYPE' -SURFACE_FLIP_TYPE__enumvalues = { - 0: 'SURFACE_V_FLIP', - 1: 'SURFACE_I_FLIP', -} -SURFACE_V_FLIP = 0 -SURFACE_I_FLIP = 1 -SURFACE_FLIP_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_MODE_FOR_STEREOSYNC' -SURFACE_FLIP_MODE_FOR_STEREOSYNC__enumvalues = { - 0: 'FLIP_ANY_FRAME', - 1: 'FLIP_LEFT_EYE', - 2: 'FLIP_RIGHT_EYE', - 3: 'SURFACE_FLIP_MODE_FOR_STEREOSYNC_RESERVED', -} -FLIP_ANY_FRAME = 0 -FLIP_LEFT_EYE = 1 -FLIP_RIGHT_EYE = 2 -SURFACE_FLIP_MODE_FOR_STEREOSYNC_RESERVED = 3 -SURFACE_FLIP_MODE_FOR_STEREOSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_UPDATE_LOCK' -SURFACE_UPDATE_LOCK__enumvalues = { - 0: 'SURFACE_UPDATE_IS_UNLOCKED', - 1: 'SURFACE_UPDATE_IS_LOCKED', -} -SURFACE_UPDATE_IS_UNLOCKED = 0 -SURFACE_UPDATE_IS_LOCKED = 1 -SURFACE_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_IN_STEREOSYNC' -SURFACE_FLIP_IN_STEREOSYNC__enumvalues = { - 0: 'SURFACE_FLIP_NOT_IN_STEREOSYNC_MODE', - 1: 'SURFACE_FLIP_IN_STEREOSYNC_MODE', -} -SURFACE_FLIP_NOT_IN_STEREOSYNC_MODE = 0 -SURFACE_FLIP_IN_STEREOSYNC_MODE = 1 -SURFACE_FLIP_IN_STEREOSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_STEREO_SELECT_DISABLE' -SURFACE_FLIP_STEREO_SELECT_DISABLE__enumvalues = { - 0: 'SURFACE_FLIP_STEREO_SELECT_ENABLED', - 1: 'SURFACE_FLIP_STEREO_SELECT_DISABLED', -} -SURFACE_FLIP_STEREO_SELECT_ENABLED = 0 -SURFACE_FLIP_STEREO_SELECT_DISABLED = 1 -SURFACE_FLIP_STEREO_SELECT_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_STEREO_SELECT_POLARITY' -SURFACE_FLIP_STEREO_SELECT_POLARITY__enumvalues = { - 0: 'SURFACE_FLIP_STEREO_SELECT_POLARITY_NOT_INVERT', - 1: 'SURFACE_FLIP_STEREO_SELECT_POLARITY_INVERT', -} -SURFACE_FLIP_STEREO_SELECT_POLARITY_NOT_INVERT = 0 -SURFACE_FLIP_STEREO_SELECT_POLARITY_INVERT = 1 -SURFACE_FLIP_STEREO_SELECT_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_INUSE_RAED_NO_LATCH' -SURFACE_INUSE_RAED_NO_LATCH__enumvalues = { - 0: 'SURFACE_INUSE_IS_LATCHED', - 1: 'SURFACE_INUSE_IS_NOT_LATCHED', -} -SURFACE_INUSE_IS_LATCHED = 0 -SURFACE_INUSE_IS_NOT_LATCHED = 1 -SURFACE_INUSE_RAED_NO_LATCH = ctypes.c_uint32 # enum - -# values for enumeration 'INT_MASK' -INT_MASK__enumvalues = { - 0: 'INT_DISABLED', - 1: 'INT_ENABLED', -} -INT_DISABLED = 0 -INT_ENABLED = 1 -INT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_INT_TYPE' -SURFACE_FLIP_INT_TYPE__enumvalues = { - 0: 'SURFACE_FLIP_INT_LEVEL', - 1: 'SURFACE_FLIP_INT_PULSE', -} -SURFACE_FLIP_INT_LEVEL = 0 -SURFACE_FLIP_INT_PULSE = 1 -SURFACE_FLIP_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_AWAY_INT_TYPE' -SURFACE_FLIP_AWAY_INT_TYPE__enumvalues = { - 0: 'SURFACE_FLIP_AWAY_INT_LEVEL', - 1: 'SURFACE_FLIP_AWAY_INT_PULSE', -} -SURFACE_FLIP_AWAY_INT_LEVEL = 0 -SURFACE_FLIP_AWAY_INT_PULSE = 1 -SURFACE_FLIP_AWAY_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_VUPDATE_SKIP_NUM' -SURFACE_FLIP_VUPDATE_SKIP_NUM__enumvalues = { - 0: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_0', - 1: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_1', - 2: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_2', - 3: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_3', - 4: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_4', - 5: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_5', - 6: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_6', - 7: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_7', - 8: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_8', - 9: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_9', - 10: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_10', - 11: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_11', - 12: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_12', - 13: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_13', - 14: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_14', - 15: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_15', -} -SURFACE_FLIP_VUPDATE_SKIP_NUM_0 = 0 -SURFACE_FLIP_VUPDATE_SKIP_NUM_1 = 1 -SURFACE_FLIP_VUPDATE_SKIP_NUM_2 = 2 -SURFACE_FLIP_VUPDATE_SKIP_NUM_3 = 3 -SURFACE_FLIP_VUPDATE_SKIP_NUM_4 = 4 -SURFACE_FLIP_VUPDATE_SKIP_NUM_5 = 5 -SURFACE_FLIP_VUPDATE_SKIP_NUM_6 = 6 -SURFACE_FLIP_VUPDATE_SKIP_NUM_7 = 7 -SURFACE_FLIP_VUPDATE_SKIP_NUM_8 = 8 -SURFACE_FLIP_VUPDATE_SKIP_NUM_9 = 9 -SURFACE_FLIP_VUPDATE_SKIP_NUM_10 = 10 -SURFACE_FLIP_VUPDATE_SKIP_NUM_11 = 11 -SURFACE_FLIP_VUPDATE_SKIP_NUM_12 = 12 -SURFACE_FLIP_VUPDATE_SKIP_NUM_13 = 13 -SURFACE_FLIP_VUPDATE_SKIP_NUM_14 = 14 -SURFACE_FLIP_VUPDATE_SKIP_NUM_15 = 15 -SURFACE_FLIP_VUPDATE_SKIP_NUM = ctypes.c_uint32 # enum - -# values for enumeration 'DFQ_SIZE' -DFQ_SIZE__enumvalues = { - 0: 'DFQ_SIZE_0', - 1: 'DFQ_SIZE_1', - 2: 'DFQ_SIZE_2', - 3: 'DFQ_SIZE_3', - 4: 'DFQ_SIZE_4', - 5: 'DFQ_SIZE_5', - 6: 'DFQ_SIZE_6', - 7: 'DFQ_SIZE_7', -} -DFQ_SIZE_0 = 0 -DFQ_SIZE_1 = 1 -DFQ_SIZE_2 = 2 -DFQ_SIZE_3 = 3 -DFQ_SIZE_4 = 4 -DFQ_SIZE_5 = 5 -DFQ_SIZE_6 = 6 -DFQ_SIZE_7 = 7 -DFQ_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'DFQ_MIN_FREE_ENTRIES' -DFQ_MIN_FREE_ENTRIES__enumvalues = { - 0: 'DFQ_MIN_FREE_ENTRIES_0', - 1: 'DFQ_MIN_FREE_ENTRIES_1', - 2: 'DFQ_MIN_FREE_ENTRIES_2', - 3: 'DFQ_MIN_FREE_ENTRIES_3', - 4: 'DFQ_MIN_FREE_ENTRIES_4', - 5: 'DFQ_MIN_FREE_ENTRIES_5', - 6: 'DFQ_MIN_FREE_ENTRIES_6', - 7: 'DFQ_MIN_FREE_ENTRIES_7', -} -DFQ_MIN_FREE_ENTRIES_0 = 0 -DFQ_MIN_FREE_ENTRIES_1 = 1 -DFQ_MIN_FREE_ENTRIES_2 = 2 -DFQ_MIN_FREE_ENTRIES_3 = 3 -DFQ_MIN_FREE_ENTRIES_4 = 4 -DFQ_MIN_FREE_ENTRIES_5 = 5 -DFQ_MIN_FREE_ENTRIES_6 = 6 -DFQ_MIN_FREE_ENTRIES_7 = 7 -DFQ_MIN_FREE_ENTRIES = ctypes.c_uint32 # enum - -# values for enumeration 'DFQ_NUM_ENTRIES' -DFQ_NUM_ENTRIES__enumvalues = { - 0: 'DFQ_NUM_ENTRIES_0', - 1: 'DFQ_NUM_ENTRIES_1', - 2: 'DFQ_NUM_ENTRIES_2', - 3: 'DFQ_NUM_ENTRIES_3', - 4: 'DFQ_NUM_ENTRIES_4', - 5: 'DFQ_NUM_ENTRIES_5', - 6: 'DFQ_NUM_ENTRIES_6', - 7: 'DFQ_NUM_ENTRIES_7', - 8: 'DFQ_NUM_ENTRIES_8', -} -DFQ_NUM_ENTRIES_0 = 0 -DFQ_NUM_ENTRIES_1 = 1 -DFQ_NUM_ENTRIES_2 = 2 -DFQ_NUM_ENTRIES_3 = 3 -DFQ_NUM_ENTRIES_4 = 4 -DFQ_NUM_ENTRIES_5 = 5 -DFQ_NUM_ENTRIES_6 = 6 -DFQ_NUM_ENTRIES_7 = 7 -DFQ_NUM_ENTRIES_8 = 8 -DFQ_NUM_ENTRIES = ctypes.c_uint32 # enum - -# values for enumeration 'FLIP_RATE' -FLIP_RATE__enumvalues = { - 0: 'FLIP_RATE_0', - 1: 'FLIP_RATE_1', - 2: 'FLIP_RATE_2', - 3: 'FLIP_RATE_3', - 4: 'FLIP_RATE_4', - 5: 'FLIP_RATE_5', - 6: 'FLIP_RATE_6', - 7: 'FLIP_RATE_7', -} -FLIP_RATE_0 = 0 -FLIP_RATE_1 = 1 -FLIP_RATE_2 = 2 -FLIP_RATE_3 = 3 -FLIP_RATE_4 = 4 -FLIP_RATE_5 = 5 -FLIP_RATE_6 = 6 -FLIP_RATE_7 = 7 -FLIP_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'DETILE_BUFFER_PACKER_ENABLE' -DETILE_BUFFER_PACKER_ENABLE__enumvalues = { - 0: 'DETILE_BUFFER_PACKER_IS_DISABLE', - 1: 'DETILE_BUFFER_PACKER_IS_ENABLE', -} -DETILE_BUFFER_PACKER_IS_DISABLE = 0 -DETILE_BUFFER_PACKER_IS_ENABLE = 1 -DETILE_BUFFER_PACKER_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CROSSBAR_FOR_ALPHA' -CROSSBAR_FOR_ALPHA__enumvalues = { - 0: 'ALPHA_DATA_ON_ALPHA_PORT', - 1: 'ALPHA_DATA_ON_Y_G_PORT', - 2: 'ALPHA_DATA_ON_CB_B_PORT', - 3: 'ALPHA_DATA_ON_CR_R_PORT', -} -ALPHA_DATA_ON_ALPHA_PORT = 0 -ALPHA_DATA_ON_Y_G_PORT = 1 -ALPHA_DATA_ON_CB_B_PORT = 2 -ALPHA_DATA_ON_CR_R_PORT = 3 -CROSSBAR_FOR_ALPHA = ctypes.c_uint32 # enum - -# values for enumeration 'CROSSBAR_FOR_Y_G' -CROSSBAR_FOR_Y_G__enumvalues = { - 0: 'Y_G_DATA_ON_ALPHA_PORT', - 1: 'Y_G_DATA_ON_Y_G_PORT', - 2: 'Y_G_DATA_ON_CB_B_PORT', - 3: 'Y_G_DATA_ON_CR_R_PORT', -} -Y_G_DATA_ON_ALPHA_PORT = 0 -Y_G_DATA_ON_Y_G_PORT = 1 -Y_G_DATA_ON_CB_B_PORT = 2 -Y_G_DATA_ON_CR_R_PORT = 3 -CROSSBAR_FOR_Y_G = ctypes.c_uint32 # enum - -# values for enumeration 'CROSSBAR_FOR_CB_B' -CROSSBAR_FOR_CB_B__enumvalues = { - 0: 'CB_B_DATA_ON_ALPHA_PORT', - 1: 'CB_B_DATA_ON_Y_G_PORT', - 2: 'CB_B_DATA_ON_CB_B_PORT', - 3: 'CB_B_DATA_ON_CR_R_PORT', -} -CB_B_DATA_ON_ALPHA_PORT = 0 -CB_B_DATA_ON_Y_G_PORT = 1 -CB_B_DATA_ON_CB_B_PORT = 2 -CB_B_DATA_ON_CR_R_PORT = 3 -CROSSBAR_FOR_CB_B = ctypes.c_uint32 # enum - -# values for enumeration 'CROSSBAR_FOR_CR_R' -CROSSBAR_FOR_CR_R__enumvalues = { - 0: 'CR_R_DATA_ON_ALPHA_PORT', - 1: 'CR_R_DATA_ON_Y_G_PORT', - 2: 'CR_R_DATA_ON_CB_B_PORT', - 3: 'CR_R_DATA_ON_CR_R_PORT', -} -CR_R_DATA_ON_ALPHA_PORT = 0 -CR_R_DATA_ON_Y_G_PORT = 1 -CR_R_DATA_ON_CB_B_PORT = 2 -CR_R_DATA_ON_CR_R_PORT = 3 -CROSSBAR_FOR_CR_R = ctypes.c_uint32 # enum - -# values for enumeration 'DET_MEM_PWR_LIGHT_SLEEP_MODE' -DET_MEM_PWR_LIGHT_SLEEP_MODE__enumvalues = { - 0: 'DET_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 1: 'DET_MEM_POWER_LIGHT_SLEEP_MODE_1', - 2: 'DET_MEM_POWER_LIGHT_SLEEP_MODE_2', -} -DET_MEM_POWER_LIGHT_SLEEP_MODE_OFF = 0 -DET_MEM_POWER_LIGHT_SLEEP_MODE_1 = 1 -DET_MEM_POWER_LIGHT_SLEEP_MODE_2 = 2 -DET_MEM_PWR_LIGHT_SLEEP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PIXCDC_MEM_PWR_LIGHT_SLEEP_MODE' -PIXCDC_MEM_PWR_LIGHT_SLEEP_MODE__enumvalues = { - 0: 'PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 1: 'PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_1', -} -PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_OFF = 0 -PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_1 = 1 -PIXCDC_MEM_PWR_LIGHT_SLEEP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_ENABLE' -CURSOR_ENABLE__enumvalues = { - 0: 'CURSOR_IS_DISABLE', - 1: 'CURSOR_IS_ENABLE', -} -CURSOR_IS_DISABLE = 0 -CURSOR_IS_ENABLE = 1 -CURSOR_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_2X_MAGNIFY' -CURSOR_2X_MAGNIFY__enumvalues = { - 0: 'CURSOR_2X_MAGNIFY_IS_DISABLE', - 1: 'CURSOR_2X_MAGNIFY_IS_ENABLE', -} -CURSOR_2X_MAGNIFY_IS_DISABLE = 0 -CURSOR_2X_MAGNIFY_IS_ENABLE = 1 -CURSOR_2X_MAGNIFY = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_MODE' -CURSOR_MODE__enumvalues = { - 0: 'CURSOR_MONO_2BIT', - 1: 'CURSOR_COLOR_24BIT_1BIT_AND', - 2: 'CURSOR_COLOR_24BIT_8BIT_ALPHA_PREMULT', - 3: 'CURSOR_COLOR_24BIT_8BIT_ALPHA_UNPREMULT', - 4: 'CURSOR_COLOR_64BIT_FP_PREMULT', - 5: 'CURSOR_COLOR_64BIT_FP_UNPREMULT', -} -CURSOR_MONO_2BIT = 0 -CURSOR_COLOR_24BIT_1BIT_AND = 1 -CURSOR_COLOR_24BIT_8BIT_ALPHA_PREMULT = 2 -CURSOR_COLOR_24BIT_8BIT_ALPHA_UNPREMULT = 3 -CURSOR_COLOR_64BIT_FP_PREMULT = 4 -CURSOR_COLOR_64BIT_FP_UNPREMULT = 5 -CURSOR_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_SURFACE_TMZ' -CURSOR_SURFACE_TMZ__enumvalues = { - 0: 'CURSOR_SURFACE_IS_NOT_TMZ', - 1: 'CURSOR_SURFACE_IS_TMZ', -} -CURSOR_SURFACE_IS_NOT_TMZ = 0 -CURSOR_SURFACE_IS_TMZ = 1 -CURSOR_SURFACE_TMZ = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_SNOOP' -CURSOR_SNOOP__enumvalues = { - 0: 'CURSOR_IS_NOT_SNOOP', - 1: 'CURSOR_IS_SNOOP', -} -CURSOR_IS_NOT_SNOOP = 0 -CURSOR_IS_SNOOP = 1 -CURSOR_SNOOP = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_SYSTEM' -CURSOR_SYSTEM__enumvalues = { - 0: 'CURSOR_IN_SYSTEM_PHYSICAL_ADDRESS', - 1: 'CURSOR_IN_GUEST_PHYSICAL_ADDRESS', -} -CURSOR_IN_SYSTEM_PHYSICAL_ADDRESS = 0 -CURSOR_IN_GUEST_PHYSICAL_ADDRESS = 1 -CURSOR_SYSTEM = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_PITCH' -CURSOR_PITCH__enumvalues = { - 0: 'CURSOR_PITCH_64_PIXELS', - 1: 'CURSOR_PITCH_128_PIXELS', - 2: 'CURSOR_PITCH_256_PIXELS', -} -CURSOR_PITCH_64_PIXELS = 0 -CURSOR_PITCH_128_PIXELS = 1 -CURSOR_PITCH_256_PIXELS = 2 -CURSOR_PITCH = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_LINES_PER_CHUNK' -CURSOR_LINES_PER_CHUNK__enumvalues = { - 0: 'CURSOR_LINE_PER_CHUNK_1', - 1: 'CURSOR_LINE_PER_CHUNK_2', - 2: 'CURSOR_LINE_PER_CHUNK_4', - 3: 'CURSOR_LINE_PER_CHUNK_8', - 4: 'CURSOR_LINE_PER_CHUNK_16', -} -CURSOR_LINE_PER_CHUNK_1 = 0 -CURSOR_LINE_PER_CHUNK_2 = 1 -CURSOR_LINE_PER_CHUNK_4 = 2 -CURSOR_LINE_PER_CHUNK_8 = 3 -CURSOR_LINE_PER_CHUNK_16 = 4 -CURSOR_LINES_PER_CHUNK = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_PERFMON_LATENCY_MEASURE_EN' -CURSOR_PERFMON_LATENCY_MEASURE_EN__enumvalues = { - 0: 'CURSOR_PERFMON_LATENCY_MEASURE_IS_DISABLED', - 1: 'CURSOR_PERFMON_LATENCY_MEASURE_IS_ENABLED', -} -CURSOR_PERFMON_LATENCY_MEASURE_IS_DISABLED = 0 -CURSOR_PERFMON_LATENCY_MEASURE_IS_ENABLED = 1 -CURSOR_PERFMON_LATENCY_MEASURE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_PERFMON_LATENCY_MEASURE_SEL' -CURSOR_PERFMON_LATENCY_MEASURE_SEL__enumvalues = { - 0: 'CURSOR_PERFMON_LATENCY_MEASURE_MC_LATENCY', - 1: 'CURSOR_PERFMON_LATENCY_MEASURE_CROB_LATENCY', -} -CURSOR_PERFMON_LATENCY_MEASURE_MC_LATENCY = 0 -CURSOR_PERFMON_LATENCY_MEASURE_CROB_LATENCY = 1 -CURSOR_PERFMON_LATENCY_MEASURE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_STEREO_EN' -CURSOR_STEREO_EN__enumvalues = { - 0: 'CURSOR_STEREO_IS_DISABLED', - 1: 'CURSOR_STEREO_IS_ENABLED', -} -CURSOR_STEREO_IS_DISABLED = 0 -CURSOR_STEREO_IS_ENABLED = 1 -CURSOR_STEREO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS' -CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS__enumvalues = { - 0: 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_0', - 1: 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_1', -} -CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_0 = 0 -CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_1 = 1 -CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'CROB_MEM_PWR_LIGHT_SLEEP_MODE' -CROB_MEM_PWR_LIGHT_SLEEP_MODE__enumvalues = { - 0: 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 1: 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_1', - 2: 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_2', -} -CROB_MEM_POWER_LIGHT_SLEEP_MODE_OFF = 0 -CROB_MEM_POWER_LIGHT_SLEEP_MODE_1 = 1 -CROB_MEM_POWER_LIGHT_SLEEP_MODE_2 = 2 -CROB_MEM_PWR_LIGHT_SLEEP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_UPDATED' -DMDATA_UPDATED__enumvalues = { - 0: 'DMDATA_NOT_UPDATED', - 1: 'DMDATA_WAS_UPDATED', -} -DMDATA_NOT_UPDATED = 0 -DMDATA_WAS_UPDATED = 1 -DMDATA_UPDATED = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_REPEAT' -DMDATA_REPEAT__enumvalues = { - 0: 'DMDATA_USE_FOR_CURRENT_FRAME_ONLY', - 1: 'DMDATA_USE_FOR_CURRENT_AND_FUTURE_FRAMES', -} -DMDATA_USE_FOR_CURRENT_FRAME_ONLY = 0 -DMDATA_USE_FOR_CURRENT_AND_FUTURE_FRAMES = 1 -DMDATA_REPEAT = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_MODE' -DMDATA_MODE__enumvalues = { - 0: 'DMDATA_SOFTWARE_UPDATE_MODE', - 1: 'DMDATA_HARDWARE_UPDATE_MODE', -} -DMDATA_SOFTWARE_UPDATE_MODE = 0 -DMDATA_HARDWARE_UPDATE_MODE = 1 -DMDATA_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_QOS_MODE' -DMDATA_QOS_MODE__enumvalues = { - 0: 'DMDATA_QOS_LEVEL_FROM_TTU', - 1: 'DMDATA_QOS_LEVEL_FROM_SOFTWARE', -} -DMDATA_QOS_LEVEL_FROM_TTU = 0 -DMDATA_QOS_LEVEL_FROM_SOFTWARE = 1 -DMDATA_QOS_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_DONE' -DMDATA_DONE__enumvalues = { - 0: 'DMDATA_NOT_SENT_TO_DIG', - 1: 'DMDATA_SENT_TO_DIG', -} -DMDATA_NOT_SENT_TO_DIG = 0 -DMDATA_SENT_TO_DIG = 1 -DMDATA_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_UNDERFLOW' -DMDATA_UNDERFLOW__enumvalues = { - 0: 'DMDATA_NOT_UNDERFLOW', - 1: 'DMDATA_UNDERFLOWED', -} -DMDATA_NOT_UNDERFLOW = 0 -DMDATA_UNDERFLOWED = 1 -DMDATA_UNDERFLOW = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_UNDERFLOW_CLEAR' -DMDATA_UNDERFLOW_CLEAR__enumvalues = { - 0: 'DMDATA_DONT_CLEAR', - 1: 'DMDATA_CLEAR_UNDERFLOW_STATUS', -} -DMDATA_DONT_CLEAR = 0 -DMDATA_CLEAR_UNDERFLOW_STATUS = 1 -DMDATA_UNDERFLOW_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_XFC_PIXEL_FORMAT_ENUM' -HUBP_XFC_PIXEL_FORMAT_ENUM__enumvalues = { - 0: 'HUBP_XFC_PIXEL_IS_32BPP', - 1: 'HUBP_XFC_PIXEL_IS_64BPP', -} -HUBP_XFC_PIXEL_IS_32BPP = 0 -HUBP_XFC_PIXEL_IS_64BPP = 1 -HUBP_XFC_PIXEL_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_XFC_FRAME_MODE_ENUM' -HUBP_XFC_FRAME_MODE_ENUM__enumvalues = { - 0: 'HUBP_XFC_PARTIAL_FRAME_MODE', - 1: 'HUBP_XFC_FULL_FRAME_MODE', -} -HUBP_XFC_PARTIAL_FRAME_MODE = 0 -HUBP_XFC_FULL_FRAME_MODE = 1 -HUBP_XFC_FRAME_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_XFC_CHUNK_SIZE_ENUM' -HUBP_XFC_CHUNK_SIZE_ENUM__enumvalues = { - 0: 'HUBP_XFC_CHUNK_SIZE_256B', - 1: 'HUBP_XFC_CHUNK_SIZE_512B', - 2: 'HUBP_XFC_CHUNK_SIZE_1KB', - 3: 'HUBP_XFC_CHUNK_SIZE_2KB', - 4: 'HUBP_XFC_CHUNK_SIZE_4KB', - 5: 'HUBP_XFC_CHUNK_SIZE_8KB', - 6: 'HUBP_XFC_CHUNK_SIZE_16KB', - 7: 'HUBP_XFC_CHUNK_SIZE_32KB', -} -HUBP_XFC_CHUNK_SIZE_256B = 0 -HUBP_XFC_CHUNK_SIZE_512B = 1 -HUBP_XFC_CHUNK_SIZE_1KB = 2 -HUBP_XFC_CHUNK_SIZE_2KB = 3 -HUBP_XFC_CHUNK_SIZE_4KB = 4 -HUBP_XFC_CHUNK_SIZE_8KB = 5 -HUBP_XFC_CHUNK_SIZE_16KB = 6 -HUBP_XFC_CHUNK_SIZE_32KB = 7 -HUBP_XFC_CHUNK_SIZE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MMHUBBUB_XFC_XFCMON_MODE_ENUM' -MMHUBBUB_XFC_XFCMON_MODE_ENUM__enumvalues = { - 0: 'MMHUBBUB_XFC_XFCMON_MODE_ONE_SHOT', - 1: 'MMHUBBUB_XFC_XFCMON_MODE_CONTINUOUS', - 2: 'MMHUBBUB_XFC_XFCMON_MODE_PERIODS', -} -MMHUBBUB_XFC_XFCMON_MODE_ONE_SHOT = 0 -MMHUBBUB_XFC_XFCMON_MODE_CONTINUOUS = 1 -MMHUBBUB_XFC_XFCMON_MODE_PERIODS = 2 -MMHUBBUB_XFC_XFCMON_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MMHUBBUB_XFC_XFCMON_INTERFACE_SEL_ENUM' -MMHUBBUB_XFC_XFCMON_INTERFACE_SEL_ENUM__enumvalues = { - 0: 'MMHUBBUB_XFC_XFCMON_INTERFACE_SEL_SYSHUB', - 1: 'MMHUBBUB_XFC_XFCMON_INTERFACE_SEL_MMHUB', -} -MMHUBBUB_XFC_XFCMON_INTERFACE_SEL_SYSHUB = 0 -MMHUBBUB_XFC_XFCMON_INTERFACE_SEL_MMHUB = 1 -MMHUBBUB_XFC_XFCMON_INTERFACE_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MMHUBBUB_XFC_PIXEL_FORMAT_ENUM' -MMHUBBUB_XFC_PIXEL_FORMAT_ENUM__enumvalues = { - 0: 'MMHUBBUB_XFC_PIXEL_IS_32BPP', - 1: 'MMHUBBUB_XFC_PIXEL_IS_64BPP', -} -MMHUBBUB_XFC_PIXEL_IS_32BPP = 0 -MMHUBBUB_XFC_PIXEL_IS_64BPP = 1 -MMHUBBUB_XFC_PIXEL_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MMHUBBUB_XFC_FRAME_MODE_ENUM' -MMHUBBUB_XFC_FRAME_MODE_ENUM__enumvalues = { - 0: 'MMHUBBUB_XFC_PARTIAL_FRAME_MODE', - 1: 'MMHUBBUB_XFC_FULL_FRAME_MODE', -} -MMHUBBUB_XFC_PARTIAL_FRAME_MODE = 0 -MMHUBBUB_XFC_FULL_FRAME_MODE = 1 -MMHUBBUB_XFC_FRAME_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_MPC_TEST_CLK_SEL' -MPC_CFG_MPC_TEST_CLK_SEL__enumvalues = { - 0: 'MPC_CFG_MPC_TEST_CLK_SEL_0', - 1: 'MPC_CFG_MPC_TEST_CLK_SEL_1', - 2: 'MPC_CFG_MPC_TEST_CLK_SEL_2', - 3: 'MPC_CFG_MPC_TEST_CLK_SEL_3', -} -MPC_CFG_MPC_TEST_CLK_SEL_0 = 0 -MPC_CFG_MPC_TEST_CLK_SEL_1 = 1 -MPC_CFG_MPC_TEST_CLK_SEL_2 = 2 -MPC_CFG_MPC_TEST_CLK_SEL_3 = 3 -MPC_CFG_MPC_TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CRC_CALC_MODE' -MPC_CRC_CALC_MODE__enumvalues = { - 0: 'MPC_CRC_ONE_SHOT_MODE', - 1: 'MPC_CRC_CONTINUOUS_MODE', -} -MPC_CRC_ONE_SHOT_MODE = 0 -MPC_CRC_CONTINUOUS_MODE = 1 -MPC_CRC_CALC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CRC_CALC_STEREO_MODE' -MPC_CRC_CALC_STEREO_MODE__enumvalues = { - 0: 'MPC_CRC_STEREO_MODE_LEFT', - 1: 'MPC_CRC_STEREO_MODE_RIGHT', - 2: 'MPC_CRC_STEREO_MODE_BOTH_RESET_RIGHT', - 3: 'MPC_CRC_STEREO_MODE_BOTH_RESET_EACH', -} -MPC_CRC_STEREO_MODE_LEFT = 0 -MPC_CRC_STEREO_MODE_RIGHT = 1 -MPC_CRC_STEREO_MODE_BOTH_RESET_RIGHT = 2 -MPC_CRC_STEREO_MODE_BOTH_RESET_EACH = 3 -MPC_CRC_CALC_STEREO_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CRC_CALC_INTERLACE_MODE' -MPC_CRC_CALC_INTERLACE_MODE__enumvalues = { - 0: 'MPC_CRC_INTERLACE_MODE_TOP', - 1: 'MPC_CRC_INTERLACE_MODE_BOTTOM', - 2: 'MPC_CRC_INTERLACE_MODE_BOTH_RESET_BOTTOM', - 3: 'MPC_CRC_INTERLACE_MODE_BOTH_RESET_EACH', -} -MPC_CRC_INTERLACE_MODE_TOP = 0 -MPC_CRC_INTERLACE_MODE_BOTTOM = 1 -MPC_CRC_INTERLACE_MODE_BOTH_RESET_BOTTOM = 2 -MPC_CRC_INTERLACE_MODE_BOTH_RESET_EACH = 3 -MPC_CRC_CALC_INTERLACE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CRC_SOURCE_SELECT' -MPC_CRC_SOURCE_SELECT__enumvalues = { - 0: 'MPC_CRC_SOURCE_SEL_DPP', - 1: 'MPC_CRC_SOURCE_SEL_OPP', - 2: 'MPC_CRC_SOURCE_SEL_DWB', - 3: 'MPC_CRC_SOURCE_SEL_OTHER', -} -MPC_CRC_SOURCE_SEL_DPP = 0 -MPC_CRC_SOURCE_SEL_OPP = 1 -MPC_CRC_SOURCE_SEL_DWB = 2 -MPC_CRC_SOURCE_SEL_OTHER = 3 -MPC_CRC_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET' -MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET' -MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_CFG_VUPDATE_LOCK_SET' -MPC_CFG_CFG_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_CFG_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_CFG_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_CFG_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_CFG_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_CFG_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_ADR_VUPDATE_LOCK_SET' -MPC_CFG_ADR_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_ADR_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_ADR_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_ADR_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_ADR_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_ADR_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_CUR_VUPDATE_LOCK_SET' -MPC_CFG_CUR_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_CUR_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_CUR_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_CUR_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_CUR_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_CUR_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_OUT_RATE_CONTROL_DISABLE_SET' -MPC_OUT_RATE_CONTROL_DISABLE_SET__enumvalues = { - 0: 'MPC_OUT_RATE_CONTROL_SET_ENABLE', - 1: 'MPC_OUT_RATE_CONTROL_SET_DISABLE', -} -MPC_OUT_RATE_CONTROL_SET_ENABLE = 0 -MPC_OUT_RATE_CONTROL_SET_DISABLE = 1 -MPC_OUT_RATE_CONTROL_DISABLE_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_MODE' -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_MODE__enumvalues = { - 0: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_BYPASS', - 1: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_6BITS', - 2: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_8BITS', - 3: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_9BITS', - 4: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_10BITS', - 5: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_11BITS', - 6: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_12BITS', - 7: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_PASSTHROUGH', -} -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_BYPASS = 0 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_6BITS = 1 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_8BITS = 2 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_9BITS = 3 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_10BITS = 4 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_11BITS = 5 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_12BITS = 6 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_PASSTHROUGH = 7 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_OCSC_COEF_FORMAT' -MPC_OCSC_COEF_FORMAT__enumvalues = { - 0: 'MPC_OCSC_COEF_FORMAT_S2_13', - 1: 'MPC_OCSC_COEF_FORMAT_S3_12', -} -MPC_OCSC_COEF_FORMAT_S2_13 = 0 -MPC_OCSC_COEF_FORMAT_S3_12 = 1 -MPC_OCSC_COEF_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_OUT_CSC_MODE' -MPC_OUT_CSC_MODE__enumvalues = { - 0: 'MPC_OUT_CSC_MODE_0', - 1: 'MPC_OUT_CSC_MODE_1', - 2: 'MPC_OUT_CSC_MODE_2', - 3: 'MPC_OUT_CSC_MODE_RSV', -} -MPC_OUT_CSC_MODE_0 = 0 -MPC_OUT_CSC_MODE_1 = 1 -MPC_OUT_CSC_MODE_2 = 2 -MPC_OUT_CSC_MODE_RSV = 3 -MPC_OUT_CSC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_MODE' -MPCC_CONTROL_MPCC_MODE__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_MODE_BYPASS', - 1: 'MPCC_CONTROL_MPCC_MODE_TOP_LAYER_PASSTHROUGH', - 2: 'MPCC_CONTROL_MPCC_MODE_TOP_LAYER_ONLY', - 3: 'MPCC_CONTROL_MPCC_MODE_TOP_BOT_BLENDING', -} -MPCC_CONTROL_MPCC_MODE_BYPASS = 0 -MPCC_CONTROL_MPCC_MODE_TOP_LAYER_PASSTHROUGH = 1 -MPCC_CONTROL_MPCC_MODE_TOP_LAYER_ONLY = 2 -MPCC_CONTROL_MPCC_MODE_TOP_BOT_BLENDING = 3 -MPCC_CONTROL_MPCC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE' -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA', - 1: 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN', - 2: 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_GLOBAL_ALPHA', - 3: 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_UNUSED', -} -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA = 0 -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN = 1 -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_GLOBAL_ALPHA = 2 -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_UNUSED = 3 -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE' -MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_FALSE', - 1: 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_TRUE', -} -MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_FALSE = 0 -MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_TRUE = 1 -MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY' -MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_FALSE', - 1: 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_TRUE', -} -MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_FALSE = 0 -MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_TRUE = 1 -MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_EN' -MPCC_SM_CONTROL_MPCC_SM_EN__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_EN_FALSE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_EN_TRUE', -} -MPCC_SM_CONTROL_MPCC_SM_EN_FALSE = 0 -MPCC_SM_CONTROL_MPCC_SM_EN_TRUE = 1 -MPCC_SM_CONTROL_MPCC_SM_EN = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_MODE' -MPCC_SM_CONTROL_MPCC_SM_MODE__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_MODE_SINGLE_PLANE', - 2: 'MPCC_SM_CONTROL_MPCC_SM_MODE_ROW_SUBSAMPLING', - 4: 'MPCC_SM_CONTROL_MPCC_SM_MODE_COLUMN_SUBSAMPLING', - 6: 'MPCC_SM_CONTROL_MPCC_SM_MODE_CHECKERBOARD_SUBSAMPLING', -} -MPCC_SM_CONTROL_MPCC_SM_MODE_SINGLE_PLANE = 0 -MPCC_SM_CONTROL_MPCC_SM_MODE_ROW_SUBSAMPLING = 2 -MPCC_SM_CONTROL_MPCC_SM_MODE_COLUMN_SUBSAMPLING = 4 -MPCC_SM_CONTROL_MPCC_SM_MODE_CHECKERBOARD_SUBSAMPLING = 6 -MPCC_SM_CONTROL_MPCC_SM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT' -MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_FALSE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_TRUE', -} -MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_FALSE = 0 -MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_TRUE = 1 -MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT' -MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_FALSE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_TRUE', -} -MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_FALSE = 0 -MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_TRUE = 1 -MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL' -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_NO_FORCE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_RESERVED', - 2: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_LOW', - 3: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_HIGH', -} -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_NO_FORCE = 0 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_RESERVED = 1 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_LOW = 2 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_HIGH = 3 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL' -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_NO_FORCE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_RESERVED', - 2: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_LOW', - 3: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_HIGH', -} -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_NO_FORCE = 0 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_RESERVED = 1 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_LOW = 2 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_HIGH = 3 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_STALL_STATUS_MPCC_STALL_INT_ACK' -MPCC_STALL_STATUS_MPCC_STALL_INT_ACK__enumvalues = { - 0: 'MPCC_STALL_STATUS_MPCC_STALL_INT_ACK_FALSE', - 1: 'MPCC_STALL_STATUS_MPCC_STALL_INT_ACK_TRUE', -} -MPCC_STALL_STATUS_MPCC_STALL_INT_ACK_FALSE = 0 -MPCC_STALL_STATUS_MPCC_STALL_INT_ACK_TRUE = 1 -MPCC_STALL_STATUS_MPCC_STALL_INT_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_STALL_STATUS_MPCC_STALL_INT_MASK' -MPCC_STALL_STATUS_MPCC_STALL_INT_MASK__enumvalues = { - 0: 'MPCC_STALL_STATUS_MPCC_STALL_INT_MASK_FALSE', - 1: 'MPCC_STALL_STATUS_MPCC_STALL_INT_MASK_TRUE', -} -MPCC_STALL_STATUS_MPCC_STALL_INT_MASK_FALSE = 0 -MPCC_STALL_STATUS_MPCC_STALL_INT_MASK_TRUE = 1 -MPCC_STALL_STATUS_MPCC_STALL_INT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_BG_COLOR_BPC' -MPCC_BG_COLOR_BPC__enumvalues = { - 0: 'MPCC_BG_COLOR_BPC_8bit', - 1: 'MPCC_BG_COLOR_BPC_9bit', - 2: 'MPCC_BG_COLOR_BPC_10bit', - 3: 'MPCC_BG_COLOR_BPC_11bit', - 4: 'MPCC_BG_COLOR_BPC_12bit', -} -MPCC_BG_COLOR_BPC_8bit = 0 -MPCC_BG_COLOR_BPC_9bit = 1 -MPCC_BG_COLOR_BPC_10bit = 2 -MPCC_BG_COLOR_BPC_11bit = 3 -MPCC_BG_COLOR_BPC_12bit = 4 -MPCC_BG_COLOR_BPC = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE' -MPCC_CONTROL_MPCC_BOT_GAIN_MODE__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE_0', - 1: 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE_1', -} -MPCC_CONTROL_MPCC_BOT_GAIN_MODE_0 = 0 -MPCC_CONTROL_MPCC_BOT_GAIN_MODE_1 = 1 -MPCC_CONTROL_MPCC_BOT_GAIN_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL' -MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL__enumvalues = { - 0: 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMA', - 1: 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMB', -} -MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMA = 0 -MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMB = 1 -MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_MODE_MPCC_OGAM_MODE' -MPCC_OGAM_MODE_MPCC_OGAM_MODE__enumvalues = { - 0: 'MPCC_OGAM_MODE_0', - 1: 'MPCC_OGAM_MODE_1', - 2: 'MPCC_OGAM_MODE_2', - 3: 'MPCC_OGAM_MODE_RSV', -} -MPCC_OGAM_MODE_0 = 0 -MPCC_OGAM_MODE_1 = 1 -MPCC_OGAM_MODE_2 = 2 -MPCC_OGAM_MODE_RSV = 3 -MPCC_OGAM_MODE_MPCC_OGAM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_EN' -ENUM_DPG_EN__enumvalues = { - 0: 'ENUM_DPG_DISABLE', - 1: 'ENUM_DPG_ENABLE', -} -ENUM_DPG_DISABLE = 0 -ENUM_DPG_ENABLE = 1 -ENUM_DPG_EN = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_MODE' -ENUM_DPG_MODE__enumvalues = { - 0: 'ENUM_DPG_MODE_RGB_COLOUR_BLOCK', - 1: 'ENUM_DPG_MODE_YCBCR_601_COLOUR_BLOCK', - 2: 'ENUM_DPG_MODE_YCBCR_709_COLOUR_BLOCK', - 3: 'ENUM_DPG_MODE_VERTICAL_BAR', - 4: 'ENUM_DPG_MODE_HORIZONTAL_BAR', - 5: 'ENUM_DPG_MODE_RGB_SINGLE_RAMP', - 6: 'ENUM_DPG_MODE_RGB_DUAL_RAMP', - 7: 'ENUM_DPG_MODE_RGB_XR_BIAS', -} -ENUM_DPG_MODE_RGB_COLOUR_BLOCK = 0 -ENUM_DPG_MODE_YCBCR_601_COLOUR_BLOCK = 1 -ENUM_DPG_MODE_YCBCR_709_COLOUR_BLOCK = 2 -ENUM_DPG_MODE_VERTICAL_BAR = 3 -ENUM_DPG_MODE_HORIZONTAL_BAR = 4 -ENUM_DPG_MODE_RGB_SINGLE_RAMP = 5 -ENUM_DPG_MODE_RGB_DUAL_RAMP = 6 -ENUM_DPG_MODE_RGB_XR_BIAS = 7 -ENUM_DPG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_DYNAMIC_RANGE' -ENUM_DPG_DYNAMIC_RANGE__enumvalues = { - 0: 'ENUM_DPG_DYNAMIC_RANGE_VESA', - 1: 'ENUM_DPG_DYNAMIC_RANGE_CEA', -} -ENUM_DPG_DYNAMIC_RANGE_VESA = 0 -ENUM_DPG_DYNAMIC_RANGE_CEA = 1 -ENUM_DPG_DYNAMIC_RANGE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_BIT_DEPTH' -ENUM_DPG_BIT_DEPTH__enumvalues = { - 0: 'ENUM_DPG_BIT_DEPTH_6BPC', - 1: 'ENUM_DPG_BIT_DEPTH_8BPC', - 2: 'ENUM_DPG_BIT_DEPTH_10BPC', - 3: 'ENUM_DPG_BIT_DEPTH_12BPC', -} -ENUM_DPG_BIT_DEPTH_6BPC = 0 -ENUM_DPG_BIT_DEPTH_8BPC = 1 -ENUM_DPG_BIT_DEPTH_10BPC = 2 -ENUM_DPG_BIT_DEPTH_12BPC = 3 -ENUM_DPG_BIT_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_FIELD_POLARITY' -ENUM_DPG_FIELD_POLARITY__enumvalues = { - 0: 'ENUM_DPG_FIELD_POLARITY_TOP_EVEN_BOTTOM_ODD', - 1: 'ENUM_DPG_FIELD_POLARITY_TOP_ODD_BOTTOM_EVEN', -} -ENUM_DPG_FIELD_POLARITY_TOP_EVEN_BOTTOM_ODD = 0 -ENUM_DPG_FIELD_POLARITY_TOP_ODD_BOTTOM_EVEN = 1 -ENUM_DPG_FIELD_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_PIXEL_ENCODING' -FMT_CONTROL_PIXEL_ENCODING__enumvalues = { - 0: 'FMT_CONTROL_PIXEL_ENCODING_RGB444_OR_YCBCR444', - 1: 'FMT_CONTROL_PIXEL_ENCODING_YCBCR422', - 2: 'FMT_CONTROL_PIXEL_ENCODING_YCBCR420', - 3: 'FMT_CONTROL_PIXEL_ENCODING_RESERVED', -} -FMT_CONTROL_PIXEL_ENCODING_RGB444_OR_YCBCR444 = 0 -FMT_CONTROL_PIXEL_ENCODING_YCBCR422 = 1 -FMT_CONTROL_PIXEL_ENCODING_YCBCR420 = 2 -FMT_CONTROL_PIXEL_ENCODING_RESERVED = 3 -FMT_CONTROL_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_SUBSAMPLING_MODE' -FMT_CONTROL_SUBSAMPLING_MODE__enumvalues = { - 0: 'FMT_CONTROL_SUBSAMPLING_MODE_DROP', - 1: 'FMT_CONTROL_SUBSAMPLING_MODE_AVERAGE', - 2: 'FMT_CONTROL_SUBSAMPLING_MOME_3_TAP', - 3: 'FMT_CONTROL_SUBSAMPLING_MOME_RESERVED', -} -FMT_CONTROL_SUBSAMPLING_MODE_DROP = 0 -FMT_CONTROL_SUBSAMPLING_MODE_AVERAGE = 1 -FMT_CONTROL_SUBSAMPLING_MOME_3_TAP = 2 -FMT_CONTROL_SUBSAMPLING_MOME_RESERVED = 3 -FMT_CONTROL_SUBSAMPLING_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_SUBSAMPLING_ORDER' -FMT_CONTROL_SUBSAMPLING_ORDER__enumvalues = { - 0: 'FMT_CONTROL_SUBSAMPLING_ORDER_CB_BEFORE_CR', - 1: 'FMT_CONTROL_SUBSAMPLING_ORDER_CR_BEFORE_CB', -} -FMT_CONTROL_SUBSAMPLING_ORDER_CB_BEFORE_CR = 0 -FMT_CONTROL_SUBSAMPLING_ORDER_CR_BEFORE_CB = 1 -FMT_CONTROL_SUBSAMPLING_ORDER = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS' -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS__enumvalues = { - 0: 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_DISABLE', - 1: 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_ENABLE', -} -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_DISABLE = 0 -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_ENABLE = 1 -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE' -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_TRUNCATION', - 1: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_ROUNDING', -} -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_TRUNCATION = 0 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_ROUNDING = 1 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH' -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_18BPP', - 1: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_24BPP', - 2: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_30BPP', -} -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_18BPP = 0 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_24BPP = 1 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_30BPP = 2 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH' -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_18BPP', - 1: 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_24BPP', - 2: 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_30BPP', -} -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_18BPP = 0 -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_24BPP = 1 -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_30BPP = 2 -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH' -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_18BPP', - 1: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_24BPP', - 2: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_30BPP', -} -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_18BPP = 0 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_24BPP = 1 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_30BPP = 2 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL' -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL2', - 1: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL4', -} -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL2 = 0 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL4 = 1 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL' -FMT_BIT_DEPTH_CONTROL_25FRC_SEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Ei', - 1: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Fi', - 2: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Gi', - 3: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_RESERVED', -} -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Ei = 0 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Fi = 1 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Gi = 2 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_RESERVED = 3 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL' -FMT_BIT_DEPTH_CONTROL_50FRC_SEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_A', - 1: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_B', - 2: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_C', - 3: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_D', -} -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_A = 0 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_B = 1 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_C = 2 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_D = 3 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL' -FMT_BIT_DEPTH_CONTROL_75FRC_SEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_E', - 1: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_F', - 2: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_G', - 3: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_RESERVED', -} -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_E = 0 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_F = 1 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_G = 2 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_RESERVED = 3 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0' -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0__enumvalues = { - 0: 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_BGR', - 1: 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_RGB', -} -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_BGR = 0 -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_RGB = 1 -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0 = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CLAMP_CNTL_COLOR_FORMAT' -FMT_CLAMP_CNTL_COLOR_FORMAT__enumvalues = { - 0: 'FMT_CLAMP_CNTL_COLOR_FORMAT_6BPC', - 1: 'FMT_CLAMP_CNTL_COLOR_FORMAT_8BPC', - 2: 'FMT_CLAMP_CNTL_COLOR_FORMAT_10BPC', - 3: 'FMT_CLAMP_CNTL_COLOR_FORMAT_12BPC', - 4: 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED1', - 5: 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED2', - 6: 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED3', - 7: 'FMT_CLAMP_CNTL_COLOR_FORMAT_PROGRAMMABLE', -} -FMT_CLAMP_CNTL_COLOR_FORMAT_6BPC = 0 -FMT_CLAMP_CNTL_COLOR_FORMAT_8BPC = 1 -FMT_CLAMP_CNTL_COLOR_FORMAT_10BPC = 2 -FMT_CLAMP_CNTL_COLOR_FORMAT_12BPC = 3 -FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED1 = 4 -FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED2 = 5 -FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED3 = 6 -FMT_CLAMP_CNTL_COLOR_FORMAT_PROGRAMMABLE = 7 -FMT_CLAMP_CNTL_COLOR_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_SPATIAL_DITHER_MODE' -FMT_SPATIAL_DITHER_MODE__enumvalues = { - 0: 'FMT_SPATIAL_DITHER_MODE_0', - 1: 'FMT_SPATIAL_DITHER_MODE_1', - 2: 'FMT_SPATIAL_DITHER_MODE_2', - 3: 'FMT_SPATIAL_DITHER_MODE_3', -} -FMT_SPATIAL_DITHER_MODE_0 = 0 -FMT_SPATIAL_DITHER_MODE_1 = 1 -FMT_SPATIAL_DITHER_MODE_2 = 2 -FMT_SPATIAL_DITHER_MODE_3 = 3 -FMT_SPATIAL_DITHER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_DYNAMIC_EXP_MODE' -FMT_DYNAMIC_EXP_MODE__enumvalues = { - 0: 'FMT_DYNAMIC_EXP_MODE_10to12', - 1: 'FMT_DYNAMIC_EXP_MODE_8to12', -} -FMT_DYNAMIC_EXP_MODE_10to12 = 0 -FMT_DYNAMIC_EXP_MODE_8to12 = 1 -FMT_DYNAMIC_EXP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMTMEM_PWR_FORCE_CTRL' -FMTMEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'FMTMEM_NO_FORCE_REQUEST', - 1: 'FMTMEM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'FMTMEM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'FMTMEM_FORCE_SHUT_DOWN_REQUEST', -} -FMTMEM_NO_FORCE_REQUEST = 0 -FMTMEM_FORCE_LIGHT_SLEEP_REQUEST = 1 -FMTMEM_FORCE_DEEP_SLEEP_REQUEST = 2 -FMTMEM_FORCE_SHUT_DOWN_REQUEST = 3 -FMTMEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'FMTMEM_PWR_DIS_CTRL' -FMTMEM_PWR_DIS_CTRL__enumvalues = { - 0: 'FMTMEM_ENABLE_MEM_PWR_CTRL', - 1: 'FMTMEM_DISABLE_MEM_PWR_CTRL', -} -FMTMEM_ENABLE_MEM_PWR_CTRL = 0 -FMTMEM_DISABLE_MEM_PWR_CTRL = 1 -FMTMEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_POWER_STATE_ENUM' -FMT_POWER_STATE_ENUM__enumvalues = { - 0: 'FMT_POWER_STATE_ENUM_ON', - 1: 'FMT_POWER_STATE_ENUM_LS', - 2: 'FMT_POWER_STATE_ENUM_DS', - 3: 'FMT_POWER_STATE_ENUM_SD', -} -FMT_POWER_STATE_ENUM_ON = 0 -FMT_POWER_STATE_ENUM_LS = 1 -FMT_POWER_STATE_ENUM_DS = 2 -FMT_POWER_STATE_ENUM_SD = 3 -FMT_POWER_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_STEREOSYNC_OVERRIDE_CONTROL' -FMT_STEREOSYNC_OVERRIDE_CONTROL__enumvalues = { - 0: 'FMT_STEREOSYNC_OVERRIDE_CONTROL_0', - 1: 'FMT_STEREOSYNC_OVERRIDE_CONTROL_1', -} -FMT_STEREOSYNC_OVERRIDE_CONTROL_0 = 0 -FMT_STEREOSYNC_OVERRIDE_CONTROL_1 = 1 -FMT_STEREOSYNC_OVERRIDE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_CONTROL' -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_CONTROL__enumvalues = { - 0: 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_NO_SWAP', - 1: 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_1', - 2: 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_2', - 3: 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_RESERVED', -} -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_NO_SWAP = 0 -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_1 = 1 -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_2 = 2 -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_RESERVED = 3 -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_FRAME_RANDOM_ENABLE_CONTROL' -FMT_FRAME_RANDOM_ENABLE_CONTROL__enumvalues = { - 0: 'FMT_FRAME_RANDOM_ENABLE_RESET_EACH_FRAME', - 1: 'FMT_FRAME_RANDOM_ENABLE_RESET_ONCE', -} -FMT_FRAME_RANDOM_ENABLE_RESET_EACH_FRAME = 0 -FMT_FRAME_RANDOM_ENABLE_RESET_ONCE = 1 -FMT_FRAME_RANDOM_ENABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_RGB_RANDOM_ENABLE_CONTROL' -FMT_RGB_RANDOM_ENABLE_CONTROL__enumvalues = { - 0: 'FMT_RGB_RANDOM_ENABLE_CONTROL_DISABLE', - 1: 'FMT_RGB_RANDOM_ENABLE_CONTROL_ENABLE', -} -FMT_RGB_RANDOM_ENABLE_CONTROL_DISABLE = 0 -FMT_RGB_RANDOM_ENABLE_CONTROL_ENABLE = 1 -FMT_RGB_RANDOM_ENABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_FMT_PTI_FIELD_POLARITY' -ENUM_FMT_PTI_FIELD_POLARITY__enumvalues = { - 0: 'ENUM_FMT_PTI_FIELD_POLARITY_TOP_EVEN_BOTTOM_ODD', - 1: 'ENUM_FMT_PTI_FIELD_POLARITY_TOP_ODD_BOTTOM_EVEN', -} -ENUM_FMT_PTI_FIELD_POLARITY_TOP_EVEN_BOTTOM_ODD = 0 -ENUM_FMT_PTI_FIELD_POLARITY_TOP_ODD_BOTTOM_EVEN = 1 -ENUM_FMT_PTI_FIELD_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CLOCK_ENABLE_CONTROL' -OPP_PIPE_CLOCK_ENABLE_CONTROL__enumvalues = { - 0: 'OPP_PIPE_CLOCK_DISABLE', - 1: 'OPP_PIPE_CLOCK_ENABLE', -} -OPP_PIPE_CLOCK_DISABLE = 0 -OPP_PIPE_CLOCK_ENABLE = 1 -OPP_PIPE_CLOCK_ENABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_DIGTIAL_BYPASS_CONTROL' -OPP_PIPE_DIGTIAL_BYPASS_CONTROL__enumvalues = { - 0: 'OPP_PIPE_DIGTIAL_BYPASS_DISABLE', - 1: 'OPP_PIPE_DIGTIAL_BYPASS_ENABLE', -} -OPP_PIPE_DIGTIAL_BYPASS_DISABLE = 0 -OPP_PIPE_DIGTIAL_BYPASS_ENABLE = 1 -OPP_PIPE_DIGTIAL_BYPASS_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_EN' -OPP_PIPE_CRC_EN__enumvalues = { - 0: 'OPP_PIPE_CRC_DISABLE', - 1: 'OPP_PIPE_CRC_ENABLE', -} -OPP_PIPE_CRC_DISABLE = 0 -OPP_PIPE_CRC_ENABLE = 1 -OPP_PIPE_CRC_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_CONT_EN' -OPP_PIPE_CRC_CONT_EN__enumvalues = { - 0: 'OPP_PIPE_CRC_MODE_ONE_SHOT', - 1: 'OPP_PIPE_CRC_MODE_CONTINUOUS', -} -OPP_PIPE_CRC_MODE_ONE_SHOT = 0 -OPP_PIPE_CRC_MODE_CONTINUOUS = 1 -OPP_PIPE_CRC_CONT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_STEREO_MODE' -OPP_PIPE_CRC_STEREO_MODE__enumvalues = { - 0: 'OPP_PIPE_CRC_STEREO_MODE_LEFT', - 1: 'OPP_PIPE_CRC_STEREO_MODE_RIGHT', - 2: 'OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_RIGHT_EYE', - 3: 'OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_EACH_EYE', -} -OPP_PIPE_CRC_STEREO_MODE_LEFT = 0 -OPP_PIPE_CRC_STEREO_MODE_RIGHT = 1 -OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_RIGHT_EYE = 2 -OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_EACH_EYE = 3 -OPP_PIPE_CRC_STEREO_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_STEREO_EN' -OPP_PIPE_CRC_STEREO_EN__enumvalues = { - 0: 'OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_NON_STEREO', - 1: 'OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_STEREO', -} -OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_NON_STEREO = 0 -OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_STEREO = 1 -OPP_PIPE_CRC_STEREO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_INTERLACE_MODE' -OPP_PIPE_CRC_INTERLACE_MODE__enumvalues = { - 0: 'OPP_PIPE_CRC_INTERLACE_MODE_TOP', - 1: 'OPP_PIPE_CRC_INTERLACE_MODE_BOTTOM', - 2: 'OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_BOTTOM_FIELD', - 3: 'OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_EACH_FIELD', -} -OPP_PIPE_CRC_INTERLACE_MODE_TOP = 0 -OPP_PIPE_CRC_INTERLACE_MODE_BOTTOM = 1 -OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_BOTTOM_FIELD = 2 -OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_EACH_FIELD = 3 -OPP_PIPE_CRC_INTERLACE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_INTERLACE_EN' -OPP_PIPE_CRC_INTERLACE_EN__enumvalues = { - 0: 'OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_PROGRESSIVE', - 1: 'OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_INTERLACED', -} -OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_PROGRESSIVE = 0 -OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_INTERLACED = 1 -OPP_PIPE_CRC_INTERLACE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_PIXEL_SELECT' -OPP_PIPE_CRC_PIXEL_SELECT__enumvalues = { - 0: 'OPP_PIPE_CRC_PIXEL_SELECT_ALL_PIXELS', - 1: 'OPP_PIPE_CRC_PIXEL_SELECT_RESERVED', - 2: 'OPP_PIPE_CRC_PIXEL_SELECT_EVEN_PIXELS', - 3: 'OPP_PIPE_CRC_PIXEL_SELECT_ODD_PIXELS', -} -OPP_PIPE_CRC_PIXEL_SELECT_ALL_PIXELS = 0 -OPP_PIPE_CRC_PIXEL_SELECT_RESERVED = 1 -OPP_PIPE_CRC_PIXEL_SELECT_EVEN_PIXELS = 2 -OPP_PIPE_CRC_PIXEL_SELECT_ODD_PIXELS = 3 -OPP_PIPE_CRC_PIXEL_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_SOURCE_SELECT' -OPP_PIPE_CRC_SOURCE_SELECT__enumvalues = { - 0: 'OPP_PIPE_CRC_SOURCE_SELECT_FMT', - 1: 'OPP_PIPE_CRC_SOURCE_SELECT_SFT', -} -OPP_PIPE_CRC_SOURCE_SELECT_FMT = 0 -OPP_PIPE_CRC_SOURCE_SELECT_SFT = 1 -OPP_PIPE_CRC_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_ONE_SHOT_PENDING' -OPP_PIPE_CRC_ONE_SHOT_PENDING__enumvalues = { - 0: 'OPP_PIPE_CRC_ONE_SHOT_PENDING_NOT_PENDING', - 1: 'OPP_PIPE_CRC_ONE_SHOT_PENDING_PENDING', -} -OPP_PIPE_CRC_ONE_SHOT_PENDING_NOT_PENDING = 0 -OPP_PIPE_CRC_ONE_SHOT_PENDING_PENDING = 1 -OPP_PIPE_CRC_ONE_SHOT_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_TOP_CLOCK_GATING_CONTROL' -OPP_TOP_CLOCK_GATING_CONTROL__enumvalues = { - 0: 'OPP_TOP_CLOCK_GATING_ENABLED', - 1: 'OPP_TOP_CLOCK_GATING_DISABLED', -} -OPP_TOP_CLOCK_GATING_ENABLED = 0 -OPP_TOP_CLOCK_GATING_DISABLED = 1 -OPP_TOP_CLOCK_GATING_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_TOP_CLOCK_ENABLE_STATUS' -OPP_TOP_CLOCK_ENABLE_STATUS__enumvalues = { - 0: 'OPP_TOP_CLOCK_DISABLED_STATUS', - 1: 'OPP_TOP_CLOCK_ENABLED_STATUS', -} -OPP_TOP_CLOCK_DISABLED_STATUS = 0 -OPP_TOP_CLOCK_ENABLED_STATUS = 1 -OPP_TOP_CLOCK_ENABLE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_TEST_CLK_SEL_CONTROL' -OPP_TEST_CLK_SEL_CONTROL__enumvalues = { - 0: 'OPP_TEST_CLK_SEL_DISPCLK_P', - 1: 'OPP_TEST_CLK_SEL_DISPCLK_R', - 2: 'OPP_TEST_CLK_SEL_DISPCLK_ABM0', - 3: 'OPP_TEST_CLK_SEL_RESERVED0', - 4: 'OPP_TEST_CLK_SEL_DISPCLK_OPP0', - 5: 'OPP_TEST_CLK_SEL_DISPCLK_OPP1', - 6: 'OPP_TEST_CLK_SEL_DISPCLK_OPP2', - 7: 'OPP_TEST_CLK_SEL_DISPCLK_OPP3', - 8: 'OPP_TEST_CLK_SEL_DISPCLK_OPP4', - 9: 'OPP_TEST_CLK_SEL_DISPCLK_OPP5', -} -OPP_TEST_CLK_SEL_DISPCLK_P = 0 -OPP_TEST_CLK_SEL_DISPCLK_R = 1 -OPP_TEST_CLK_SEL_DISPCLK_ABM0 = 2 -OPP_TEST_CLK_SEL_RESERVED0 = 3 -OPP_TEST_CLK_SEL_DISPCLK_OPP0 = 4 -OPP_TEST_CLK_SEL_DISPCLK_OPP1 = 5 -OPP_TEST_CLK_SEL_DISPCLK_OPP2 = 6 -OPP_TEST_CLK_SEL_DISPCLK_OPP3 = 7 -OPP_TEST_CLK_SEL_DISPCLK_OPP4 = 8 -OPP_TEST_CLK_SEL_DISPCLK_OPP5 = 9 -OPP_TEST_CLK_SEL_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_START_POINT_CNTL' -OTG_CONTROL_OTG_START_POINT_CNTL__enumvalues = { - 0: 'OTG_CONTROL_OTG_START_POINT_CNTL_NORMAL', - 1: 'OTG_CONTROL_OTG_START_POINT_CNTL_DP', -} -OTG_CONTROL_OTG_START_POINT_CNTL_NORMAL = 0 -OTG_CONTROL_OTG_START_POINT_CNTL_DP = 1 -OTG_CONTROL_OTG_START_POINT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL' -OTG_CONTROL_OTG_FIELD_NUMBER_CNTL__enumvalues = { - 0: 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_NORMAL', - 1: 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_DP', -} -OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_NORMAL = 0 -OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_DP = 1 -OTG_CONTROL_OTG_FIELD_NUMBER_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL' -OTG_CONTROL_OTG_DISABLE_POINT_CNTL__enumvalues = { - 0: 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE', - 1: 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_CURRENT', - 2: 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_RESERVED', - 3: 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_FIRST', -} -OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE = 0 -OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_CURRENT = 1 -OTG_CONTROL_OTG_DISABLE_POINT_CNTL_RESERVED = 2 -OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_FIRST = 3 -OTG_CONTROL_OTG_DISABLE_POINT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY' -OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY__enumvalues = { - 0: 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_FALSE', - 1: 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_TRUE', -} -OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_FALSE = 0 -OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_TRUE = 1 -OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_DISP_READ_REQUEST_DISABLE' -OTG_CONTROL_OTG_DISP_READ_REQUEST_DISABLE__enumvalues = { - 0: 'OTG_CONTROL_OTG_DISP_READ_REQUEST_DISABLE_FALSE', - 1: 'OTG_CONTROL_OTG_DISP_READ_REQUEST_DISABLE_TRUE', -} -OTG_CONTROL_OTG_DISP_READ_REQUEST_DISABLE_FALSE = 0 -OTG_CONTROL_OTG_DISP_READ_REQUEST_DISABLE_TRUE = 1 -OTG_CONTROL_OTG_DISP_READ_REQUEST_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_SOF_PULL_EN' -OTG_CONTROL_OTG_SOF_PULL_EN__enumvalues = { - 0: 'OTG_CONTROL_OTG_SOF_PULL_EN_FALSE', - 1: 'OTG_CONTROL_OTG_SOF_PULL_EN_TRUE', -} -OTG_CONTROL_OTG_SOF_PULL_EN_FALSE = 0 -OTG_CONTROL_OTG_SOF_PULL_EN_TRUE = 1 -OTG_CONTROL_OTG_SOF_PULL_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL' -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_FALSE', - 1: 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_TRUE', -} -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_FALSE = 0 -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_TRUE = 1 -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL' -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_FALSE', - 1: 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_TRUE', -} -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_FALSE = 0 -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_TRUE = 1 -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_SET_V_TOTAL_MIN_MASK_EN' -OTG_V_TOTAL_CONTROL_OTG_SET_V_TOTAL_MIN_MASK_EN__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_SET_V_TOTAL_MIN_MASK_EN_FALSE', - 1: 'OTG_V_TOTAL_CONTROL_OTG_SET_V_TOTAL_MIN_MASK_EN_TRUE', -} -OTG_V_TOTAL_CONTROL_OTG_SET_V_TOTAL_MIN_MASK_EN_FALSE = 0 -OTG_V_TOTAL_CONTROL_OTG_SET_V_TOTAL_MIN_MASK_EN_TRUE = 1 -OTG_V_TOTAL_CONTROL_OTG_SET_V_TOTAL_MIN_MASK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC' -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_DISABLE', - 1: 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_ENABLE', -} -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_DISABLE = 0 -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_ENABLE = 1 -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT' -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_DISABLE', - 1: 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_ENABLE', -} -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_DISABLE = 0 -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_ENABLE = 1 -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD' -OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_0', - 1: 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_1', -} -OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_0 = 0 -OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_1 = 1 -OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK' -OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK__enumvalues = { - 0: 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK_FALSE', - 1: 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK_TRUE', -} -OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK_FALSE = 0 -OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK_TRUE = 1 -OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR' -OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR__enumvalues = { - 0: 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_FALSE', - 1: 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_TRUE', -} -OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_FALSE = 0 -OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_TRUE = 1 -OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN' -OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN__enumvalues = { - 0: 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_FALSE', - 1: 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_TRUE', -} -OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_FALSE = 0 -OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_TRUE = 1 -OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT' -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC0', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICA_PIN', - 2: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICB_PIN', - 3: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICC_PIN', - 4: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICD_PIN', - 5: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICE_PIN', - 6: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICF_PIN', - 7: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKA_PIN', - 8: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKB_PIN', - 9: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_CLK_PIN', - 10: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_VSYNC_PIN', - 11: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD1', - 12: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD2', - 13: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_BLON_Y_PIN', - 14: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_DSI_FORCE_TOTAL', - 15: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_LOCK', - 16: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GSL_ALLOW_FLIP', - 17: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_PENDING', - 18: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_SOF', - 19: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HSYNC', - 20: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_VSYNC', - 21: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL', - 22: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 23: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC1', - 24: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_FLIP_PENDING', -} -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC0 = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICA_PIN = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICB_PIN = 2 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICC_PIN = 3 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICD_PIN = 4 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICE_PIN = 5 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICF_PIN = 6 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKA_PIN = 7 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKB_PIN = 8 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_CLK_PIN = 9 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_VSYNC_PIN = 10 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD1 = 11 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD2 = 12 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_BLON_Y_PIN = 13 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_DSI_FORCE_TOTAL = 14 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_LOCK = 15 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GSL_ALLOW_FLIP = 16 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_PENDING = 17 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_SOF = 18 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HSYNC = 19 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_VSYNC = 20 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL = 21 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_MANUAL_FLOW_CONTROL = 22 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC1 = 23 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_FLIP_PENDING = 24 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT' -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC0', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_INTERLACE', - 2: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICA', - 3: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICB', - 4: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_HSYNCA', - 5: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC1', - 6: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICC', - 7: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICD', -} -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC0 = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_INTERLACE = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICA = 2 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICB = 3 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_HSYNCA = 4 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC1 = 5 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICC = 6 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICD = 7 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT' -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC0', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICA_PIN', - 2: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICB_PIN', - 3: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICC_PIN', - 4: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICD_PIN', - 5: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICE_PIN', - 6: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICF_PIN', - 7: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKA_PIN', - 8: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKB_PIN', - 9: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_CLK_PIN', - 10: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_VSYNC_PIN', - 11: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD1', - 12: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD2', - 13: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_BLON_Y_PIN', - 14: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_DSI_FORCE_TOTAL', - 15: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_LOCK', - 16: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GSL_ALLOW_FLIP', - 17: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_PENDING', - 18: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_SOF', - 19: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HSYNC', - 20: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_VSYNC', - 21: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL', - 22: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 23: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC1', - 24: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_FLIP_PENDING', -} -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC0 = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICA_PIN = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICB_PIN = 2 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICC_PIN = 3 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICD_PIN = 4 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICE_PIN = 5 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICF_PIN = 6 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKA_PIN = 7 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKB_PIN = 8 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_CLK_PIN = 9 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_VSYNC_PIN = 10 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD1 = 11 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD2 = 12 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_BLON_Y_PIN = 13 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_DSI_FORCE_TOTAL = 14 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_LOCK = 15 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GSL_ALLOW_FLIP = 16 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_PENDING = 17 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_SOF = 18 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HSYNC = 19 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_VSYNC = 20 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL = 21 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_MANUAL_FLOW_CONTROL = 22 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC1 = 23 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_FLIP_PENDING = 24 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT' -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG0', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG1', - 2: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG2', - 3: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG3', - 4: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG4', - 5: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG5', -} -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG0 = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG1 = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG2 = 2 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG3 = 3 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG4 = 4 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG5 = 5 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT' -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC0', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_INTERLACE', - 2: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICA', - 3: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICB', - 4: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_HSYNCA', - 5: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC1', - 6: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICC', - 7: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICD', -} -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC0 = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_INTERLACE = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICA = 2 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICB = 3 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_HSYNCA = 4 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC1 = 5 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICC = 6 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICD = 7 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT' -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG0', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG1', - 2: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG2', - 3: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG3', - 4: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG4', - 5: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG5', -} -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG0 = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG1 = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG2 = 2 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG3 = 3 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG4 = 4 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG5 = 5 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN' -OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_FALSE', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_TRUE', -} -OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_FALSE = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_TRUE = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR' -OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_FALSE', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_TRUE', -} -OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_FALSE = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_TRUE = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN' -OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_FALSE', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_TRUE', -} -OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_FALSE = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_TRUE = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR' -OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_FALSE', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_TRUE', -} -OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_FALSE = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_TRUE = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE' -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE__enumvalues = { - 0: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_DISABLE', - 1: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT', - 2: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT_VCOUNT', - 3: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_RESERVED', -} -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_DISABLE = 0 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT = 1 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT_VCOUNT = 2 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_RESERVED = 3 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK' -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK__enumvalues = { - 0: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_FALSE', - 1: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_TRUE', -} -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_FALSE = 0 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_TRUE = 1 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL' -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL__enumvalues = { - 0: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_FALSE', - 1: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_TRUE', -} -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_FALSE = 0 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_TRUE = 1 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR' -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR__enumvalues = { - 0: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_FALSE', - 1: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_TRUE', -} -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_FALSE = 0 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_TRUE = 1 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT' -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT__enumvalues = { - 0: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC0', - 1: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC1', - 2: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICA', - 3: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICB', - 4: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICC', - 5: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICD', - 6: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICE', - 7: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICF', - 8: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD1', - 9: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD2', - 10: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1DATA', - 11: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1CLK', - 12: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2DATA', - 13: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2CLK', - 14: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 15: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DSI_FREEZE', - 16: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_CLK', - 17: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_VSYNC', - 18: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKA', - 19: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKB', -} -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC0 = 0 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC1 = 1 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICA = 2 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICB = 3 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICC = 4 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICD = 5 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICE = 6 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICF = 7 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD1 = 8 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD2 = 9 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1DATA = 10 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1CLK = 11 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2DATA = 12 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2CLK = 13 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_MANUAL_FLOW_CONTROL = 14 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DSI_FREEZE = 15 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_CLK = 16 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_VSYNC = 17 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKA = 18 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKB = 19 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY' -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY__enumvalues = { - 0: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_FALSE', - 1: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_TRUE', -} -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_FALSE = 0 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_TRUE = 1 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY' -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY__enumvalues = { - 0: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_FALSE', - 1: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_TRUE', -} -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_FALSE = 0 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_TRUE = 1 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE' -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE__enumvalues = { - 0: 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_NO', - 1: 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RIGHT', - 2: 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_LEFT', - 3: 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RESERVED', -} -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_NO = 0 -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RIGHT = 1 -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_LEFT = 2 -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RESERVED = 3 -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_MASTER_EN' -OTG_CONTROL_OTG_MASTER_EN__enumvalues = { - 0: 'OTG_CONTROL_OTG_MASTER_EN_FALSE', - 1: 'OTG_CONTROL_OTG_MASTER_EN_TRUE', -} -OTG_CONTROL_OTG_MASTER_EN_FALSE = 0 -OTG_CONTROL_OTG_MASTER_EN_TRUE = 1 -OTG_CONTROL_OTG_MASTER_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_BLANK_CONTROL_OTG_BLANK_DATA_EN' -OTG_BLANK_CONTROL_OTG_BLANK_DATA_EN__enumvalues = { - 0: 'OTG_BLANK_CONTROL_OTG_BLANK_DATA_EN_FALSE', - 1: 'OTG_BLANK_CONTROL_OTG_BLANK_DATA_EN_TRUE', -} -OTG_BLANK_CONTROL_OTG_BLANK_DATA_EN_FALSE = 0 -OTG_BLANK_CONTROL_OTG_BLANK_DATA_EN_TRUE = 1 -OTG_BLANK_CONTROL_OTG_BLANK_DATA_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_BLANK_CONTROL_OTG_BLANK_DE_MODE' -OTG_BLANK_CONTROL_OTG_BLANK_DE_MODE__enumvalues = { - 0: 'OTG_BLANK_CONTROL_OTG_BLANK_DE_MODE_FALSE', - 1: 'OTG_BLANK_CONTROL_OTG_BLANK_DE_MODE_TRUE', -} -OTG_BLANK_CONTROL_OTG_BLANK_DE_MODE_FALSE = 0 -OTG_BLANK_CONTROL_OTG_BLANK_DE_MODE_TRUE = 1 -OTG_BLANK_CONTROL_OTG_BLANK_DE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE' -OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE__enumvalues = { - 0: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_FALSE', - 1: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_TRUE', -} -OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_FALSE = 0 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_TRUE = 1 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD' -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD__enumvalues = { - 0: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT', - 1: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_BOTTOM', - 2: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_TOP', - 3: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT2', -} -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT = 0 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_BOTTOM = 1 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_TOP = 2 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT2 = 3 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_INDICATION_OUTPUT_POLARITY' -OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_INDICATION_OUTPUT_POLARITY__enumvalues = { - 0: 'OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_INDICATION_OUTPUT_POLARITY_FALSE', - 1: 'OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_INDICATION_OUTPUT_POLARITY_TRUE', -} -OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_INDICATION_OUTPUT_POLARITY_FALSE = 0 -OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_INDICATION_OUTPUT_POLARITY_TRUE = 1 -OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_INDICATION_OUTPUT_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_ALIGNMENT' -OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_ALIGNMENT__enumvalues = { - 0: 'OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_ALIGNMENT_FALSE', - 1: 'OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_ALIGNMENT_TRUE', -} -OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_ALIGNMENT_FALSE = 0 -OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_ALIGNMENT_TRUE = 1 -OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_ALIGNMENT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN' -OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN__enumvalues = { - 0: 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_FALSE', - 1: 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_TRUE', -} -OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_FALSE = 0 -OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_TRUE = 1 -OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE' -OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE__enumvalues = { - 0: 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_FALSE', - 1: 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_TRUE', -} -OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_FALSE = 0 -OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_TRUE = 1 -OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR' -OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR__enumvalues = { - 0: 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_FALSE', - 1: 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_TRUE', -} -OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_FALSE = 0 -OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_TRUE = 1 -OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE' -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE__enumvalues = { - 0: 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_DISABLE', - 1: 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERA', - 2: 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERB', - 3: 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_RESERVED', -} -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_DISABLE = 0 -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERA = 1 -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERB = 2 -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_RESERVED = 3 -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY' -OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY__enumvalues = { - 0: 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_FALSE', - 1: 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_TRUE', -} -OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_FALSE = 0 -OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_TRUE = 1 -OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY' -OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY__enumvalues = { - 0: 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_FALSE', - 1: 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_TRUE', -} -OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_FALSE = 0 -OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_TRUE = 1 -OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STEREO_CONTROL_OTG_STEREO_EN' -OTG_STEREO_CONTROL_OTG_STEREO_EN__enumvalues = { - 0: 'OTG_STEREO_CONTROL_OTG_STEREO_EN_FALSE', - 1: 'OTG_STEREO_CONTROL_OTG_STEREO_EN_TRUE', -} -OTG_STEREO_CONTROL_OTG_STEREO_EN_FALSE = 0 -OTG_STEREO_CONTROL_OTG_STEREO_EN_TRUE = 1 -OTG_STEREO_CONTROL_OTG_STEREO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR' -OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR__enumvalues = { - 0: 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_FALSE', - 1: 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_TRUE', -} -OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_FALSE = 0 -OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_TRUE = 1 -OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL' -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL__enumvalues = { - 0: 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_DISABLE', - 1: 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERA', - 2: 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERB', - 3: 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_RESERVED', -} -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_DISABLE = 0 -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERA = 1 -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERB = 2 -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_RESERVED = 3 -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_START_LINE_CONTROL_OTG_PROGRESSIVE_START_LINE_EARLY' -OTG_START_LINE_CONTROL_OTG_PROGRESSIVE_START_LINE_EARLY__enumvalues = { - 0: 'OTG_START_LINE_CONTROL_OTG_PROGRESSIVE_START_LINE_EARLY_FALSE', - 1: 'OTG_START_LINE_CONTROL_OTG_PROGRESSIVE_START_LINE_EARLY_TRUE', -} -OTG_START_LINE_CONTROL_OTG_PROGRESSIVE_START_LINE_EARLY_FALSE = 0 -OTG_START_LINE_CONTROL_OTG_PROGRESSIVE_START_LINE_EARLY_TRUE = 1 -OTG_START_LINE_CONTROL_OTG_PROGRESSIVE_START_LINE_EARLY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_START_LINE_CONTROL_OTG_INTERLACE_START_LINE_EARLY' -OTG_START_LINE_CONTROL_OTG_INTERLACE_START_LINE_EARLY__enumvalues = { - 0: 'OTG_START_LINE_CONTROL_OTG_INTERLACE_START_LINE_EARLY_FALSE', - 1: 'OTG_START_LINE_CONTROL_OTG_INTERLACE_START_LINE_EARLY_TRUE', -} -OTG_START_LINE_CONTROL_OTG_INTERLACE_START_LINE_EARLY_FALSE = 0 -OTG_START_LINE_CONTROL_OTG_INTERLACE_START_LINE_EARLY_TRUE = 1 -OTG_START_LINE_CONTROL_OTG_INTERLACE_START_LINE_EARLY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_START_LINE_CONTROL_OTG_LEGACY_REQUESTOR_EN' -OTG_START_LINE_CONTROL_OTG_LEGACY_REQUESTOR_EN__enumvalues = { - 0: 'OTG_START_LINE_CONTROL_OTG_LEGACY_REQUESTOR_EN_FALSE', - 1: 'OTG_START_LINE_CONTROL_OTG_LEGACY_REQUESTOR_EN_TRUE', -} -OTG_START_LINE_CONTROL_OTG_LEGACY_REQUESTOR_EN_FALSE = 0 -OTG_START_LINE_CONTROL_OTG_LEGACY_REQUESTOR_EN_TRUE = 1 -OTG_START_LINE_CONTROL_OTG_LEGACY_REQUESTOR_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_START_LINE_CONTROL_OTG_PREFETCH_EN' -OTG_START_LINE_CONTROL_OTG_PREFETCH_EN__enumvalues = { - 0: 'OTG_START_LINE_CONTROL_OTG_PREFETCH_EN_FALSE', - 1: 'OTG_START_LINE_CONTROL_OTG_PREFETCH_EN_TRUE', -} -OTG_START_LINE_CONTROL_OTG_PREFETCH_EN_FALSE = 0 -OTG_START_LINE_CONTROL_OTG_PREFETCH_EN_TRUE = 1 -OTG_START_LINE_CONTROL_OTG_PREFETCH_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK' -OTG_UPDATE_LOCK_OTG_UPDATE_LOCK__enumvalues = { - 0: 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_FALSE', - 1: 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_TRUE', -} -OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_FALSE = 0 -OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_TRUE = 1 -OTG_UPDATE_LOCK_OTG_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY' -OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY__enumvalues = { - 0: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_FALSE', - 1: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_TRUE', -} -OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_FALSE = 0 -OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_TRUE = 1 -OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DOUBLE_BUFFER_CONTROL_OTG_BLANK_DATA_DOUBLE_BUFFER_EN' -OTG_DOUBLE_BUFFER_CONTROL_OTG_BLANK_DATA_DOUBLE_BUFFER_EN__enumvalues = { - 0: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_BLANK_DATA_DOUBLE_BUFFER_EN_FALSE', - 1: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_BLANK_DATA_DOUBLE_BUFFER_EN_TRUE', -} -OTG_DOUBLE_BUFFER_CONTROL_OTG_BLANK_DATA_DOUBLE_BUFFER_EN_FALSE = 0 -OTG_DOUBLE_BUFFER_CONTROL_OTG_BLANK_DATA_DOUBLE_BUFFER_EN_TRUE = 1 -OTG_DOUBLE_BUFFER_CONTROL_OTG_BLANK_DATA_DOUBLE_BUFFER_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DOUBLE_BUFFER_CONTROL_OTG_RANGE_TIMING_DBUF_UPDATE_MODE' -OTG_DOUBLE_BUFFER_CONTROL_OTG_RANGE_TIMING_DBUF_UPDATE_MODE__enumvalues = { - 0: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_RANGE_TIMING_DBUF_UPDATE_MODE_0', - 1: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_RANGE_TIMING_DBUF_UPDATE_MODE_1', - 2: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_RANGE_TIMING_DBUF_UPDATE_MODE_2', - 3: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_RANGE_TIMING_DBUF_UPDATE_MODE_3', -} -OTG_DOUBLE_BUFFER_CONTROL_OTG_RANGE_TIMING_DBUF_UPDATE_MODE_0 = 0 -OTG_DOUBLE_BUFFER_CONTROL_OTG_RANGE_TIMING_DBUF_UPDATE_MODE_1 = 1 -OTG_DOUBLE_BUFFER_CONTROL_OTG_RANGE_TIMING_DBUF_UPDATE_MODE_2 = 2 -OTG_DOUBLE_BUFFER_CONTROL_OTG_RANGE_TIMING_DBUF_UPDATE_MODE_3 = 3 -OTG_DOUBLE_BUFFER_CONTROL_OTG_RANGE_TIMING_DBUF_UPDATE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VGA_PARAMETER_CAPTURE_MODE_OTG_VGA_PARAMETER_CAPTURE_MODE' -OTG_VGA_PARAMETER_CAPTURE_MODE_OTG_VGA_PARAMETER_CAPTURE_MODE__enumvalues = { - 0: 'OTG_VGA_PARAMETER_CAPTURE_MODE_OTG_VGA_PARAMETER_CAPTURE_MODE_FALSE', - 1: 'OTG_VGA_PARAMETER_CAPTURE_MODE_OTG_VGA_PARAMETER_CAPTURE_MODE_TRUE', -} -OTG_VGA_PARAMETER_CAPTURE_MODE_OTG_VGA_PARAMETER_CAPTURE_MODE_FALSE = 0 -OTG_VGA_PARAMETER_CAPTURE_MODE_OTG_VGA_PARAMETER_CAPTURE_MODE_TRUE = 1 -OTG_VGA_PARAMETER_CAPTURE_MODE_OTG_VGA_PARAMETER_CAPTURE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK' -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_FALSE', - 1: 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_TRUE', -} -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_FALSE = 0 -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_TRUE = 1 -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME' -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME__enumvalues = { - 0: 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_1FRAME', - 1: 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_2FRAME', - 2: 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_4FRAME', - 3: 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_8FRAME', -} -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_1FRAME = 0 -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_2FRAME = 1 -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_4FRAME = 2 -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_8FRAME = 3 -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME = ctypes.c_uint32 # enum - -# values for enumeration 'MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK' -MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK_FALSE', - 1: 'MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK_TRUE', -} -MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK_FALSE = 0 -MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK_TRUE = 1 -MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE' -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE__enumvalues = { - 0: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTH', - 1: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_TOP', - 2: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTTOM', - 3: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_RESERVED', -} -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTH = 0 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_TOP = 1 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTTOM = 2 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_RESERVED = 3 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_MVP_INBAND_CNTL_INSERT_OTG_MVP_INBAND_OUT_MODE' -OTG_MVP_INBAND_CNTL_INSERT_OTG_MVP_INBAND_OUT_MODE__enumvalues = { - 0: 'OTG_MVP_INBAND_CNTL_INSERT_OTG_MVP_INBAND_OUT_MODE_DISABLE', - 1: 'OTG_MVP_INBAND_CNTL_INSERT_OTG_MVP_INBAND_OUT_MODE_DEBUG', - 2: 'OTG_MVP_INBAND_CNTL_INSERT_OTG_MVP_INBAND_OUT_MODE_NORMAL', -} -OTG_MVP_INBAND_CNTL_INSERT_OTG_MVP_INBAND_OUT_MODE_DISABLE = 0 -OTG_MVP_INBAND_CNTL_INSERT_OTG_MVP_INBAND_OUT_MODE_DEBUG = 1 -OTG_MVP_INBAND_CNTL_INSERT_OTG_MVP_INBAND_OUT_MODE_NORMAL = 2 -OTG_MVP_INBAND_CNTL_INSERT_OTG_MVP_INBAND_OUT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_MVP_STATUS_OTG_FLIP_NOW_CLEAR' -OTG_MVP_STATUS_OTG_FLIP_NOW_CLEAR__enumvalues = { - 0: 'OTG_MVP_STATUS_OTG_FLIP_NOW_CLEAR_FALSE', - 1: 'OTG_MVP_STATUS_OTG_FLIP_NOW_CLEAR_TRUE', -} -OTG_MVP_STATUS_OTG_FLIP_NOW_CLEAR_FALSE = 0 -OTG_MVP_STATUS_OTG_FLIP_NOW_CLEAR_TRUE = 1 -OTG_MVP_STATUS_OTG_FLIP_NOW_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_MVP_STATUS_OTG_AFR_HSYNC_SWITCH_DONE_CLEAR' -OTG_MVP_STATUS_OTG_AFR_HSYNC_SWITCH_DONE_CLEAR__enumvalues = { - 0: 'OTG_MVP_STATUS_OTG_AFR_HSYNC_SWITCH_DONE_CLEAR_FALSE', - 1: 'OTG_MVP_STATUS_OTG_AFR_HSYNC_SWITCH_DONE_CLEAR_TRUE', -} -OTG_MVP_STATUS_OTG_AFR_HSYNC_SWITCH_DONE_CLEAR_FALSE = 0 -OTG_MVP_STATUS_OTG_AFR_HSYNC_SWITCH_DONE_CLEAR_TRUE = 1 -OTG_MVP_STATUS_OTG_AFR_HSYNC_SWITCH_DONE_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_UPDATE_INT_STATUS_OTG_V_UPDATE_INT_CLEAR' -OTG_V_UPDATE_INT_STATUS_OTG_V_UPDATE_INT_CLEAR__enumvalues = { - 0: 'OTG_V_UPDATE_INT_STATUS_OTG_V_UPDATE_INT_CLEAR_FALSE', - 1: 'OTG_V_UPDATE_INT_STATUS_OTG_V_UPDATE_INT_CLEAR_TRUE', -} -OTG_V_UPDATE_INT_STATUS_OTG_V_UPDATE_INT_CLEAR_FALSE = 0 -OTG_V_UPDATE_INT_STATUS_OTG_V_UPDATE_INT_CLEAR_TRUE = 1 -OTG_V_UPDATE_INT_STATUS_OTG_V_UPDATE_INT_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY' -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_TRUE', -} -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_FALSE = 0 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_TRUE = 1 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE' -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_TRUE', -} -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_FALSE = 0 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_TRUE = 1 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR' -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_TRUE', -} -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_FALSE = 0 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_TRUE = 1 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE' -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_TRUE', -} -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_FALSE = 0 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_TRUE = 1 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR' -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_CLEAR_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_TRUE', -} -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_CLEAR_FALSE = 0 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_TRUE = 1 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE' -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_TRUE', -} -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_FALSE = 0 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_TRUE = 1 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE' -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_TRUE', -} -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_FALSE = 0 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_TRUE = 1 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR' -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_CLEAR_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_TRUE', -} -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_CLEAR_FALSE = 0 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_TRUE = 1 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE' -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_TRUE', -} -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_FALSE = 0 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_TRUE = 1 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE' -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_TRUE', -} -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_FALSE = 0 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_TRUE = 1 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_EN' -OTG_CRC_CNTL_OTG_CRC_EN__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_EN_FALSE', - 1: 'OTG_CRC_CNTL_OTG_CRC_EN_TRUE', -} -OTG_CRC_CNTL_OTG_CRC_EN_FALSE = 0 -OTG_CRC_CNTL_OTG_CRC_EN_TRUE = 1 -OTG_CRC_CNTL_OTG_CRC_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_CONT_EN' -OTG_CRC_CNTL_OTG_CRC_CONT_EN__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_CONT_EN_FALSE', - 1: 'OTG_CRC_CNTL_OTG_CRC_CONT_EN_TRUE', -} -OTG_CRC_CNTL_OTG_CRC_CONT_EN_FALSE = 0 -OTG_CRC_CNTL_OTG_CRC_CONT_EN_TRUE = 1 -OTG_CRC_CNTL_OTG_CRC_CONT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE' -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_LEFT', - 1: 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_RIGHT', - 2: 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_EYES', - 3: 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_FIELDS', -} -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_LEFT = 0 -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_RIGHT = 1 -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_EYES = 2 -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_FIELDS = 3 -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE' -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_TOP', - 1: 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTTOM', - 2: 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_BOTTOM', - 3: 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_FIELD', -} -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_TOP = 0 -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTTOM = 1 -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_BOTTOM = 2 -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_FIELD = 3 -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS' -OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_FALSE', - 1: 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_TRUE', -} -OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_FALSE = 0 -OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_TRUE = 1 -OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT' -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UAB', - 1: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UA_B', - 2: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_AB', - 3: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_A_B', - 4: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IAB', - 5: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IA_B', - 6: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_AB', - 7: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_A_B', -} -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UAB = 0 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UA_B = 1 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_AB = 2 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_A_B = 3 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IAB = 4 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IA_B = 5 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_AB = 6 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_A_B = 7 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT' -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UAB', - 1: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UA_B', - 2: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_AB', - 3: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_A_B', - 4: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IAB', - 5: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IA_B', - 6: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_AB', - 7: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_A_B', -} -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UAB = 0 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UA_B = 1 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_AB = 2 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_A_B = 3 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IAB = 4 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IA_B = 5 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_AB = 6 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_A_B = 7 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL2_OTG_CRC_DSC_MODE' -OTG_CRC_CNTL2_OTG_CRC_DSC_MODE__enumvalues = { - 0: 'OTG_CRC_CNTL2_OTG_CRC_DSC_MODE_FALSE', - 1: 'OTG_CRC_CNTL2_OTG_CRC_DSC_MODE_TRUE', -} -OTG_CRC_CNTL2_OTG_CRC_DSC_MODE_FALSE = 0 -OTG_CRC_CNTL2_OTG_CRC_DSC_MODE_TRUE = 1 -OTG_CRC_CNTL2_OTG_CRC_DSC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_COMBINE_MODE' -OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_COMBINE_MODE__enumvalues = { - 0: 'OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_COMBINE_MODE_FALSE', - 1: 'OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_COMBINE_MODE_TRUE', -} -OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_COMBINE_MODE_FALSE = 0 -OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_COMBINE_MODE_TRUE = 1 -OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_COMBINE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_SPLIT_MODE' -OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_SPLIT_MODE__enumvalues = { - 0: 'OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_SPLIT_MODE_DSIABLE', - 1: 'OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_SPLIT_MODE_1', - 2: 'OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_SPLIT_MODE_2', - 3: 'OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_SPLIT_MODE_3', -} -OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_SPLIT_MODE_DSIABLE = 0 -OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_SPLIT_MODE_1 = 1 -OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_SPLIT_MODE_2 = 2 -OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_SPLIT_MODE_3 = 3 -OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_SPLIT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL2_OTG_CRC_DATA_FORMAT' -OTG_CRC_CNTL2_OTG_CRC_DATA_FORMAT__enumvalues = { - 0: 'OTG_CRC_CNTL2_OTG_CRC_DATA_FORMAT_0', - 1: 'OTG_CRC_CNTL2_OTG_CRC_DATA_FORMAT_1', - 2: 'OTG_CRC_CNTL2_OTG_CRC_DATA_FORMAT_2', - 3: 'OTG_CRC_CNTL2_OTG_CRC_DATA_FORMAT_3', -} -OTG_CRC_CNTL2_OTG_CRC_DATA_FORMAT_0 = 0 -OTG_CRC_CNTL2_OTG_CRC_DATA_FORMAT_1 = 1 -OTG_CRC_CNTL2_OTG_CRC_DATA_FORMAT_2 = 2 -OTG_CRC_CNTL2_OTG_CRC_DATA_FORMAT_3 = 3 -OTG_CRC_CNTL2_OTG_CRC_DATA_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_ENABLE' -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_ENABLE__enumvalues = { - 0: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_ENABLE_DISABLE', - 1: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_ENABLE_ONESHOT', - 2: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_ENABLE_CONTINUOUS', - 3: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_ENABLE_RESERVED', -} -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_ENABLE_DISABLE = 0 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_ENABLE_ONESHOT = 1 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_ENABLE_CONTINUOUS = 2 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_ENABLE_RESERVED = 3 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE' -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE__enumvalues = { - 0: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE_FALSE', - 1: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE_TRUE', -} -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE_FALSE = 0 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE_TRUE = 1 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE' -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE__enumvalues = { - 0: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE_FALSE', - 1: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE_TRUE', -} -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE_FALSE = 0 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE_TRUE = 1 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW' -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW__enumvalues = { - 0: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_1pixel', - 1: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_2pixel', - 2: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_3pixel', - 3: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_4pixel', -} -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_1pixel = 0 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_2pixel = 1 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_3pixel = 2 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_4pixel = 3 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_ENABLE' -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_ENABLE__enumvalues = { - 0: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_ENABLE_FALSE', - 1: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_ENABLE_TRUE', -} -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_ENABLE_FALSE = 0 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_ENABLE_TRUE = 1 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_UPDATE' -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_UPDATE__enumvalues = { - 0: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_UPDATE_FALSE', - 1: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_UPDATE_TRUE', -} -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_UPDATE_FALSE = 0 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_UPDATE_TRUE = 1 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_UPDATE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_VSYNC_POLARITY' -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_VSYNC_POLARITY__enumvalues = { - 0: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_VSYNC_POLARITY_FALSE', - 1: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_VSYNC_POLARITY_TRUE', -} -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_VSYNC_POLARITY_FALSE = 0 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_VSYNC_POLARITY_TRUE = 1 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_VSYNC_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HSYNC_POLARITY' -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HSYNC_POLARITY__enumvalues = { - 0: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HSYNC_POLARITY_FALSE', - 1: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HSYNC_POLARITY_TRUE', -} -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HSYNC_POLARITY_FALSE = 0 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HSYNC_POLARITY_TRUE = 1 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HSYNC_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_INTERLACE_MODE' -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_INTERLACE_MODE__enumvalues = { - 0: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_INTERLACE_MODE_FALSE', - 1: 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_INTERLACE_MODE_TRUE', -} -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_INTERLACE_MODE_FALSE = 0 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_INTERLACE_MODE_TRUE = 1 -OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_INTERLACE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_ENABLE' -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_ENABLE__enumvalues = { - 0: 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_ENABLE_FALSE', - 1: 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_ENABLE_TRUE', -} -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_ENABLE_FALSE = 0 -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_ENABLE_TRUE = 1 -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_CLEAR' -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_CLEAR__enumvalues = { - 0: 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_CLEAR_FALSE', - 1: 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_CLEAR_TRUE', -} -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_CLEAR_FALSE = 0 -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_CLEAR_TRUE = 1 -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_TYPE' -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_TYPE__enumvalues = { - 0: 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_TYPE_FALSE', - 1: 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_TYPE_TRUE', -} -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_TYPE_FALSE = 0 -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_TYPE_TRUE = 1 -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT' -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT__enumvalues = { - 0: 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_1FRAME', - 1: 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_2FRAME', - 2: 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_4FRAME', - 3: 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_8FRAME', - 4: 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_16FRAME', - 5: 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_32FRAME', - 6: 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_64FRAME', - 7: 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_128FRAME', -} -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_1FRAME = 0 -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_2FRAME = 1 -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_4FRAME = 2 -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_8FRAME = 3 -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_16FRAME = 4 -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_32FRAME = 5 -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_64FRAME = 6 -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_128FRAME = 7 -OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_ENABLE' -OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_ENABLE__enumvalues = { - 0: 'OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_ENABLE_FALSE', - 1: 'OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_ENABLE_TRUE', -} -OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_ENABLE_FALSE = 0 -OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_ENABLE_TRUE = 1 -OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_CLEAR' -OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_CLEAR__enumvalues = { - 0: 'OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_CLEAR_FALSE', - 1: 'OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_CLEAR_TRUE', -} -OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_CLEAR_FALSE = 0 -OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_CLEAR_TRUE = 1 -OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_TYPE' -OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_TYPE__enumvalues = { - 0: 'OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_TYPE_FALSE', - 1: 'OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_TYPE_TRUE', -} -OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_TYPE_FALSE = 0 -OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_TYPE_TRUE = 1 -OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE' -OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE__enumvalues = { - 0: 'OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE_FALSE', - 1: 'OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE_TRUE', -} -OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE_FALSE = 0 -OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE_TRUE = 1 -OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_CLEAR' -OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_CLEAR__enumvalues = { - 0: 'OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_CLEAR_FALSE', - 1: 'OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_CLEAR_TRUE', -} -OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_CLEAR_FALSE = 0 -OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_CLEAR_TRUE = 1 -OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_TYPE' -OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_TYPE__enumvalues = { - 0: 'OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_TYPE_FALSE', - 1: 'OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_TYPE_TRUE', -} -OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_TYPE_FALSE = 0 -OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_TYPE_TRUE = 1 -OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE' -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_FALSE', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_TRUE', -} -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_FALSE = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_TRUE = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR' -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_FALSE', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_TRUE', -} -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_FALSE = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_TRUE = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE' -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_FALSE', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_TRUE', -} -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_FALSE = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_TRUE = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE' -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_FALSE', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_TRUE', -} -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_FALSE = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_TRUE = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE' -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_OFF', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_ON', -} -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_OFF = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_ON = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN' -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN__enumvalues = { - 0: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_FALSE', - 1: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_TRUE', -} -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_FALSE = 0 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_TRUE = 1 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB' -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB__enumvalues = { - 0: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_FALSE', - 1: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_TRUE', -} -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_FALSE = 0 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_TRUE = 1 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE' -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE__enumvalues = { - 0: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_BOTH', - 1: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_INTERLACE', - 2: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_PROGRASSIVE', - 3: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_RESERVED', -} -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_BOTH = 0 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_INTERLACE = 1 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_PROGRASSIVE = 2 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_RESERVED = 3 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR' -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR__enumvalues = { - 0: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_FALSE', - 1: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_TRUE', -} -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_FALSE = 0 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_TRUE = 1 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_SYNC_A_POL' -OTG_V_SYNC_A_POL__enumvalues = { - 0: 'OTG_V_SYNC_A_POL_HIGH', - 1: 'OTG_V_SYNC_A_POL_LOW', -} -OTG_V_SYNC_A_POL_HIGH = 0 -OTG_V_SYNC_A_POL_LOW = 1 -OTG_V_SYNC_A_POL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_H_SYNC_A_POL' -OTG_H_SYNC_A_POL__enumvalues = { - 0: 'OTG_H_SYNC_A_POL_HIGH', - 1: 'OTG_H_SYNC_A_POL_LOW', -} -OTG_H_SYNC_A_POL_HIGH = 0 -OTG_H_SYNC_A_POL_LOW = 1 -OTG_H_SYNC_A_POL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_HORZ_REPETITION_COUNT' -OTG_HORZ_REPETITION_COUNT__enumvalues = { - 0: 'OTG_HORZ_REPETITION_COUNT_0', - 1: 'OTG_HORZ_REPETITION_COUNT_1', - 2: 'OTG_HORZ_REPETITION_COUNT_2', - 3: 'OTG_HORZ_REPETITION_COUNT_3', - 4: 'OTG_HORZ_REPETITION_COUNT_4', - 5: 'OTG_HORZ_REPETITION_COUNT_5', - 6: 'OTG_HORZ_REPETITION_COUNT_6', - 7: 'OTG_HORZ_REPETITION_COUNT_7', - 8: 'OTG_HORZ_REPETITION_COUNT_8', - 9: 'OTG_HORZ_REPETITION_COUNT_9', - 10: 'OTG_HORZ_REPETITION_COUNT_10', - 11: 'OTG_HORZ_REPETITION_COUNT_11', - 12: 'OTG_HORZ_REPETITION_COUNT_12', - 13: 'OTG_HORZ_REPETITION_COUNT_13', - 14: 'OTG_HORZ_REPETITION_COUNT_14', - 15: 'OTG_HORZ_REPETITION_COUNT_15', -} -OTG_HORZ_REPETITION_COUNT_0 = 0 -OTG_HORZ_REPETITION_COUNT_1 = 1 -OTG_HORZ_REPETITION_COUNT_2 = 2 -OTG_HORZ_REPETITION_COUNT_3 = 3 -OTG_HORZ_REPETITION_COUNT_4 = 4 -OTG_HORZ_REPETITION_COUNT_5 = 5 -OTG_HORZ_REPETITION_COUNT_6 = 6 -OTG_HORZ_REPETITION_COUNT_7 = 7 -OTG_HORZ_REPETITION_COUNT_8 = 8 -OTG_HORZ_REPETITION_COUNT_9 = 9 -OTG_HORZ_REPETITION_COUNT_10 = 10 -OTG_HORZ_REPETITION_COUNT_11 = 11 -OTG_HORZ_REPETITION_COUNT_12 = 12 -OTG_HORZ_REPETITION_COUNT_13 = 13 -OTG_HORZ_REPETITION_COUNT_14 = 14 -OTG_HORZ_REPETITION_COUNT_15 = 15 -OTG_HORZ_REPETITION_COUNT = ctypes.c_uint32 # enum - -# values for enumeration 'MASTER_UPDATE_LOCK_SEL' -MASTER_UPDATE_LOCK_SEL__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_SEL_0', - 1: 'MASTER_UPDATE_LOCK_SEL_1', - 2: 'MASTER_UPDATE_LOCK_SEL_2', - 3: 'MASTER_UPDATE_LOCK_SEL_3', - 4: 'MASTER_UPDATE_LOCK_SEL_4', - 5: 'MASTER_UPDATE_LOCK_SEL_5', -} -MASTER_UPDATE_LOCK_SEL_0 = 0 -MASTER_UPDATE_LOCK_SEL_1 = 1 -MASTER_UPDATE_LOCK_SEL_2 = 2 -MASTER_UPDATE_LOCK_SEL_3 = 3 -MASTER_UPDATE_LOCK_SEL_4 = 4 -MASTER_UPDATE_LOCK_SEL_5 = 5 -MASTER_UPDATE_LOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DRR_UPDATE_LOCK_SEL' -DRR_UPDATE_LOCK_SEL__enumvalues = { - 0: 'DRR_UPDATE_LOCK_SEL_0', - 1: 'DRR_UPDATE_LOCK_SEL_1', - 2: 'DRR_UPDATE_LOCK_SEL_2', - 3: 'DRR_UPDATE_LOCK_SEL_3', - 4: 'DRR_UPDATE_LOCK_SEL_4', - 5: 'DRR_UPDATE_LOCK_SEL_5', -} -DRR_UPDATE_LOCK_SEL_0 = 0 -DRR_UPDATE_LOCK_SEL_1 = 1 -DRR_UPDATE_LOCK_SEL_2 = 2 -DRR_UPDATE_LOCK_SEL_3 = 3 -DRR_UPDATE_LOCK_SEL_4 = 4 -DRR_UPDATE_LOCK_SEL_5 = 5 -DRR_UPDATE_LOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL' -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL__enumvalues = { - 0: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG0', - 1: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG1', - 2: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG2', - 3: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG3', - 4: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG4', - 5: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG5', -} -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG0 = 0 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG1 = 1 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG2 = 2 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG3 = 3 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG4 = 4 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG5 = 5 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_FIELD' -OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_FIELD__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_DB_FIELD_BOTH', - 1: 'MASTER_UPDATE_LOCK_DB_FIELD_TOP', - 2: 'MASTER_UPDATE_LOCK_DB_FIELD_RESERVED', -} -MASTER_UPDATE_LOCK_DB_FIELD_BOTH = 0 -MASTER_UPDATE_LOCK_DB_FIELD_TOP = 1 -MASTER_UPDATE_LOCK_DB_FIELD_RESERVED = 2 -OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_FIELD = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_STEREO_SEL' -OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_STEREO_SEL__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_BOTH', - 1: 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_LEFT', - 2: 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_RIGHT', - 3: 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_RESERVED', -} -MASTER_UPDATE_LOCK_DB_STEREO_SEL_BOTH = 0 -MASTER_UPDATE_LOCK_DB_STEREO_SEL_LEFT = 1 -MASTER_UPDATE_LOCK_DB_STEREO_SEL_RIGHT = 2 -MASTER_UPDATE_LOCK_DB_STEREO_SEL_RESERVED = 3 -OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_STEREO_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_H_TIMING_DIV_BY2' -OTG_H_TIMING_DIV_BY2__enumvalues = { - 0: 'OTG_H_TIMING_DIV_BY2_FALSE', - 1: 'OTG_H_TIMING_DIV_BY2_TRUE', -} -OTG_H_TIMING_DIV_BY2_FALSE = 0 -OTG_H_TIMING_DIV_BY2_TRUE = 1 -OTG_H_TIMING_DIV_BY2 = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_H_TIMING_DIV_BY2_UPDATE_MODE' -OTG_H_TIMING_DIV_BY2_UPDATE_MODE__enumvalues = { - 0: 'OTG_H_TIMING_DIV_BY2_UPDATE_MODE_0', - 1: 'OTG_H_TIMING_DIV_BY2_UPDATE_MODE_1', -} -OTG_H_TIMING_DIV_BY2_UPDATE_MODE_0 = 0 -OTG_H_TIMING_DIV_BY2_UPDATE_MODE_1 = 1 -OTG_H_TIMING_DIV_BY2_UPDATE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL' -OTG_TRIGA_RISING_EDGE_DETECT_CNTL__enumvalues = { - 0: 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_0', - 1: 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_1', - 2: 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_2', - 3: 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_3', -} -OTG_TRIGA_RISING_EDGE_DETECT_CNTL_0 = 0 -OTG_TRIGA_RISING_EDGE_DETECT_CNTL_1 = 1 -OTG_TRIGA_RISING_EDGE_DETECT_CNTL_2 = 2 -OTG_TRIGA_RISING_EDGE_DETECT_CNTL_3 = 3 -OTG_TRIGA_RISING_EDGE_DETECT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL' -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL__enumvalues = { - 0: 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_0', - 1: 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_1', - 2: 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_2', - 3: 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_3', -} -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_0 = 0 -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_1 = 1 -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_2 = 2 -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_3 = 3 -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_FREQUENCY_SELECT' -OTG_TRIGA_FREQUENCY_SELECT__enumvalues = { - 0: 'OTG_TRIGA_FREQUENCY_SELECT_0', - 1: 'OTG_TRIGA_FREQUENCY_SELECT_1', - 2: 'OTG_TRIGA_FREQUENCY_SELECT_2', - 3: 'OTG_TRIGA_FREQUENCY_SELECT_3', -} -OTG_TRIGA_FREQUENCY_SELECT_0 = 0 -OTG_TRIGA_FREQUENCY_SELECT_1 = 1 -OTG_TRIGA_FREQUENCY_SELECT_2 = 2 -OTG_TRIGA_FREQUENCY_SELECT_3 = 3 -OTG_TRIGA_FREQUENCY_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL' -OTG_TRIGB_RISING_EDGE_DETECT_CNTL__enumvalues = { - 0: 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_0', - 1: 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_1', - 2: 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_2', - 3: 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_3', -} -OTG_TRIGB_RISING_EDGE_DETECT_CNTL_0 = 0 -OTG_TRIGB_RISING_EDGE_DETECT_CNTL_1 = 1 -OTG_TRIGB_RISING_EDGE_DETECT_CNTL_2 = 2 -OTG_TRIGB_RISING_EDGE_DETECT_CNTL_3 = 3 -OTG_TRIGB_RISING_EDGE_DETECT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL' -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL__enumvalues = { - 0: 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_0', - 1: 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_1', - 2: 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_2', - 3: 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_3', -} -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_0 = 0 -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_1 = 1 -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_2 = 2 -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_3 = 3 -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_FREQUENCY_SELECT' -OTG_TRIGB_FREQUENCY_SELECT__enumvalues = { - 0: 'OTG_TRIGB_FREQUENCY_SELECT_0', - 1: 'OTG_TRIGB_FREQUENCY_SELECT_1', - 2: 'OTG_TRIGB_FREQUENCY_SELECT_2', - 3: 'OTG_TRIGB_FREQUENCY_SELECT_3', -} -OTG_TRIGB_FREQUENCY_SELECT_0 = 0 -OTG_TRIGB_FREQUENCY_SELECT_1 = 1 -OTG_TRIGB_FREQUENCY_SELECT_2 = 2 -OTG_TRIGB_FREQUENCY_SELECT_3 = 3 -OTG_TRIGB_FREQUENCY_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_PIPE_ABORT' -OTG_PIPE_ABORT__enumvalues = { - 0: 'OTG_PIPE_ABORT_0', - 1: 'OTG_PIPE_ABORT_1', -} -OTG_PIPE_ABORT_0 = 0 -OTG_PIPE_ABORT_1 = 1 -OTG_PIPE_ABORT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_MASTER_UPDATE_LOCK_GSL_EN' -OTG_MASTER_UPDATE_LOCK_GSL_EN__enumvalues = { - 0: 'OTG_MASTER_UPDATE_LOCK_GSL_EN_FALSE', - 1: 'OTG_MASTER_UPDATE_LOCK_GSL_EN_TRUE', -} -OTG_MASTER_UPDATE_LOCK_GSL_EN_FALSE = 0 -OTG_MASTER_UPDATE_LOCK_GSL_EN_TRUE = 1 -OTG_MASTER_UPDATE_LOCK_GSL_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_PTI_CONTROL_OTG_PIT_EN' -OTG_PTI_CONTROL_OTG_PIT_EN__enumvalues = { - 0: 'OTG_PTI_CONTROL_OTG_PIT_EN_FALSE', - 1: 'OTG_PTI_CONTROL_OTG_PIT_EN_TRUE', -} -OTG_PTI_CONTROL_OTG_PIT_EN_FALSE = 0 -OTG_PTI_CONTROL_OTG_PIT_EN_TRUE = 1 -OTG_PTI_CONTROL_OTG_PIT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GSL_MASTER_MODE' -OTG_GSL_MASTER_MODE__enumvalues = { - 0: 'OTG_GSL_MASTER_MODE_0', - 1: 'OTG_GSL_MASTER_MODE_1', - 2: 'OTG_GSL_MASTER_MODE_2', - 3: 'OTG_GSL_MASTER_MODE_3', -} -OTG_GSL_MASTER_MODE_0 = 0 -OTG_GSL_MASTER_MODE_1 = 1 -OTG_GSL_MASTER_MODE_2 = 2 -OTG_GSL_MASTER_MODE_3 = 3 -OTG_GSL_MASTER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DC_DMCUB_TIMER_WINDOW' -DC_DMCUB_TIMER_WINDOW__enumvalues = { - 0: 'BITS_31_0', - 1: 'BITS_32_1', - 2: 'BITS_33_2', - 3: 'BITS_34_3', - 4: 'BITS_35_4', - 5: 'BITS_36_5', - 6: 'BITS_37_6', - 7: 'BITS_38_7', -} -BITS_31_0 = 0 -BITS_32_1 = 1 -BITS_33_2 = 2 -BITS_34_3 = 3 -BITS_35_4 = 4 -BITS_36_5 = 5 -BITS_37_6 = 6 -BITS_38_7 = 7 -DC_DMCUB_TIMER_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'DC_DMCUB_INT_TYPE' -DC_DMCUB_INT_TYPE__enumvalues = { - 0: 'INT_LEVEL', - 1: 'INT_PULSE', -} -INT_LEVEL = 0 -INT_PULSE = 1 -DC_DMCUB_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'INVALID_REG_ACCESS_TYPE' -INVALID_REG_ACCESS_TYPE__enumvalues = { - 0: 'REG_UNALLOCATED_ADDR_WRITE', - 1: 'REG_UNALLOCATED_ADDR_READ', - 2: 'REG_VIRTUAL_WRITE', - 3: 'REG_VIRTUAL_READ', -} -REG_UNALLOCATED_ADDR_WRITE = 0 -REG_UNALLOCATED_ADDR_READ = 1 -REG_VIRTUAL_WRITE = 2 -REG_VIRTUAL_READ = 3 -INVALID_REG_ACCESS_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DMU_DC_GPU_TIMER_START_POSITION' -DMU_DC_GPU_TIMER_START_POSITION__enumvalues = { - 0: 'DMU_GPU_TIMER_START_0_END_27', - 1: 'DMU_GPU_TIMER_START_1_END_28', - 2: 'DMU_GPU_TIMER_START_2_END_29', - 3: 'DMU_GPU_TIMER_START_3_END_30', - 4: 'DMU_GPU_TIMER_START_4_END_31', - 5: 'DMU_GPU_TIMER_START_6_END_33', - 6: 'DMU_GPU_TIMER_START_8_END_35', - 7: 'DMU_GPU_TIMER_START_10_END_37', -} -DMU_GPU_TIMER_START_0_END_27 = 0 -DMU_GPU_TIMER_START_1_END_28 = 1 -DMU_GPU_TIMER_START_2_END_29 = 2 -DMU_GPU_TIMER_START_3_END_30 = 3 -DMU_GPU_TIMER_START_4_END_31 = 4 -DMU_GPU_TIMER_START_6_END_33 = 5 -DMU_GPU_TIMER_START_8_END_35 = 6 -DMU_GPU_TIMER_START_10_END_37 = 7 -DMU_DC_GPU_TIMER_START_POSITION = ctypes.c_uint32 # enum - -# values for enumeration 'DMU_DC_GPU_TIMER_READ_SELECT' -DMU_DC_GPU_TIMER_READ_SELECT__enumvalues = { - 0: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_0', - 1: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_1', - 2: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_2', - 3: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_3', - 4: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_4', - 5: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_5', - 6: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_6', - 7: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_7', - 8: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D5_V_UPDATE_8', - 9: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D5_V_UPDATE_9', - 10: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D6_V_UPDATE_10', - 11: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D6_V_UPDATE_11', - 12: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_STARTUP_12', - 13: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_STARTUP_13', - 14: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_STARTUP_14', - 15: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_STARTUP_15', - 16: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_STARTUP_16', - 17: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_STARTUP_17', - 18: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_STARTUP_18', - 19: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_STARTUP_19', - 20: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D5_V_STARTUP_20', - 21: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D5_V_STARTUP_21', - 22: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D6_V_STARTUP_22', - 23: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D6_V_STARTUP_23', - 24: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM_24', - 25: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM_25', - 26: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VSYNC_NOM_26', - 27: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VSYNC_NOM_27', - 28: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VSYNC_NOM_28', - 29: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VSYNC_NOM_29', - 30: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VSYNC_NOM_30', - 31: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VSYNC_NOM_31', - 32: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D5_VSYNC_NOM_32', - 33: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D5_VSYNC_NOM_33', - 34: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D6_VSYNC_NOM_34', - 35: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D6_VSYNC_NOM_35', - 36: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VREADY_36', - 37: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VREADY_37', - 38: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VREADY_38', - 39: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VREADY_39', - 40: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VREADY_40', - 41: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VREADY_41', - 42: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VREADY_42', - 43: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VREADY_43', - 44: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D5_VREADY_44', - 45: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D5_VREADY_45', - 46: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D6_VREADY_46', - 47: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D6_VREADY_47', - 48: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_48', - 49: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_49', - 50: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_50', - 51: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_51', - 52: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_52', - 53: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_53', - 54: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_54', - 55: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_55', - 56: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D5_FLIP_56', - 57: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D5_FLIP_57', - 58: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D6_FLIP_58', - 59: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D6_FLIP_59', - 60: 'RESERVED_60', - 61: 'RESERVED_61', - 62: 'RESERVED_62', - 63: 'RESERVED_63', - 64: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_NO_LOCK_64', - 65: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_NO_LOCK_65', - 66: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_NO_LOCK_66', - 67: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_NO_LOCK_67', - 68: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_NO_LOCK_68', - 69: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_NO_LOCK_69', - 70: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_NO_LOCK_70', - 71: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_NO_LOCK_71', - 72: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D5_V_UPDATE_NO_LOCK_72', - 73: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D5_V_UPDATE_NO_LOCK_73', - 74: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D6_V_UPDATE_NO_LOCK_74', - 75: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D6_V_UPDATE_NO_LOCK_75', - 76: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_AWAY_76', - 77: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_AWAY_77', - 78: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_AWAY_78', - 79: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_AWAY_79', - 80: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_AWAY_80', - 81: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_AWAY_81', - 82: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_AWAY_82', - 83: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_AWAY_83', - 84: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D5_FLIP_AWAY_84', - 85: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D5_FLIP_AWAY_85', - 86: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D6_FLIP_AWAY_86', - 87: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D6_FLIP_AWAY_87', - 88: 'RESERVED_88', - 89: 'RESERVED_89', - 90: 'RESERVED_90', - 91: 'RESERVED_91', -} -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_0 = 0 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_1 = 1 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_2 = 2 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_3 = 3 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_4 = 4 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_5 = 5 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_6 = 6 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_7 = 7 -DMU_GPU_TIMER_READ_SELECT_LOWER_D5_V_UPDATE_8 = 8 -DMU_GPU_TIMER_READ_SELECT_UPPER_D5_V_UPDATE_9 = 9 -DMU_GPU_TIMER_READ_SELECT_LOWER_D6_V_UPDATE_10 = 10 -DMU_GPU_TIMER_READ_SELECT_UPPER_D6_V_UPDATE_11 = 11 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_STARTUP_12 = 12 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_STARTUP_13 = 13 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_STARTUP_14 = 14 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_STARTUP_15 = 15 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_STARTUP_16 = 16 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_STARTUP_17 = 17 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_STARTUP_18 = 18 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_STARTUP_19 = 19 -DMU_GPU_TIMER_READ_SELECT_LOWER_D5_V_STARTUP_20 = 20 -DMU_GPU_TIMER_READ_SELECT_UPPER_D5_V_STARTUP_21 = 21 -DMU_GPU_TIMER_READ_SELECT_LOWER_D6_V_STARTUP_22 = 22 -DMU_GPU_TIMER_READ_SELECT_UPPER_D6_V_STARTUP_23 = 23 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM_24 = 24 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM_25 = 25 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VSYNC_NOM_26 = 26 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VSYNC_NOM_27 = 27 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VSYNC_NOM_28 = 28 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VSYNC_NOM_29 = 29 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VSYNC_NOM_30 = 30 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VSYNC_NOM_31 = 31 -DMU_GPU_TIMER_READ_SELECT_LOWER_D5_VSYNC_NOM_32 = 32 -DMU_GPU_TIMER_READ_SELECT_UPPER_D5_VSYNC_NOM_33 = 33 -DMU_GPU_TIMER_READ_SELECT_LOWER_D6_VSYNC_NOM_34 = 34 -DMU_GPU_TIMER_READ_SELECT_UPPER_D6_VSYNC_NOM_35 = 35 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VREADY_36 = 36 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VREADY_37 = 37 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VREADY_38 = 38 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VREADY_39 = 39 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VREADY_40 = 40 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VREADY_41 = 41 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VREADY_42 = 42 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VREADY_43 = 43 -DMU_GPU_TIMER_READ_SELECT_LOWER_D5_VREADY_44 = 44 -DMU_GPU_TIMER_READ_SELECT_UPPER_D5_VREADY_45 = 45 -DMU_GPU_TIMER_READ_SELECT_LOWER_D6_VREADY_46 = 46 -DMU_GPU_TIMER_READ_SELECT_UPPER_D6_VREADY_47 = 47 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_48 = 48 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_49 = 49 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_50 = 50 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_51 = 51 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_52 = 52 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_53 = 53 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_54 = 54 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_55 = 55 -DMU_GPU_TIMER_READ_SELECT_LOWER_D5_FLIP_56 = 56 -DMU_GPU_TIMER_READ_SELECT_UPPER_D5_FLIP_57 = 57 -DMU_GPU_TIMER_READ_SELECT_LOWER_D6_FLIP_58 = 58 -DMU_GPU_TIMER_READ_SELECT_UPPER_D6_FLIP_59 = 59 -RESERVED_60 = 60 -RESERVED_61 = 61 -RESERVED_62 = 62 -RESERVED_63 = 63 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_NO_LOCK_64 = 64 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_NO_LOCK_65 = 65 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_NO_LOCK_66 = 66 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_NO_LOCK_67 = 67 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_NO_LOCK_68 = 68 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_NO_LOCK_69 = 69 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_NO_LOCK_70 = 70 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_NO_LOCK_71 = 71 -DMU_GPU_TIMER_READ_SELECT_LOWER_D5_V_UPDATE_NO_LOCK_72 = 72 -DMU_GPU_TIMER_READ_SELECT_UPPER_D5_V_UPDATE_NO_LOCK_73 = 73 -DMU_GPU_TIMER_READ_SELECT_LOWER_D6_V_UPDATE_NO_LOCK_74 = 74 -DMU_GPU_TIMER_READ_SELECT_UPPER_D6_V_UPDATE_NO_LOCK_75 = 75 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_AWAY_76 = 76 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_AWAY_77 = 77 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_AWAY_78 = 78 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_AWAY_79 = 79 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_AWAY_80 = 80 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_AWAY_81 = 81 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_AWAY_82 = 82 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_AWAY_83 = 83 -DMU_GPU_TIMER_READ_SELECT_LOWER_D5_FLIP_AWAY_84 = 84 -DMU_GPU_TIMER_READ_SELECT_UPPER_D5_FLIP_AWAY_85 = 85 -DMU_GPU_TIMER_READ_SELECT_LOWER_D6_FLIP_AWAY_86 = 86 -DMU_GPU_TIMER_READ_SELECT_UPPER_D6_FLIP_AWAY_87 = 87 -RESERVED_88 = 88 -RESERVED_89 = 89 -RESERVED_90 = 90 -RESERVED_91 = 91 -DMU_DC_GPU_TIMER_READ_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'IHC_INTERRUPT_LINE_STATUS' -IHC_INTERRUPT_LINE_STATUS__enumvalues = { - 0: 'INTERRUPT_LINE_NOT_ASSERTED', - 1: 'INTERRUPT_LINE_ASSERTED', -} -INTERRUPT_LINE_NOT_ASSERTED = 0 -INTERRUPT_LINE_ASSERTED = 1 -IHC_INTERRUPT_LINE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'DMU_CLOCK_GATING_DISABLE' -DMU_CLOCK_GATING_DISABLE__enumvalues = { - 0: 'DMU_ENABLE_CLOCK_GATING', - 1: 'DMU_DISABLE_CLOCK_GATING', -} -DMU_ENABLE_CLOCK_GATING = 0 -DMU_DISABLE_CLOCK_GATING = 1 -DMU_CLOCK_GATING_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DMU_CLOCK_ON' -DMU_CLOCK_ON__enumvalues = { - 0: 'DMU_CLOCK_STATUS_ON', - 1: 'DMU_CLOCK_STATUS_OFF', -} -DMU_CLOCK_STATUS_ON = 0 -DMU_CLOCK_STATUS_OFF = 1 -DMU_CLOCK_ON = ctypes.c_uint32 # enum - -# values for enumeration 'DC_SMU_INTERRUPT_ENABLE' -DC_SMU_INTERRUPT_ENABLE__enumvalues = { - 0: 'DISABLE_THE_INTERRUPT', - 1: 'ENABLE_THE_INTERRUPT', -} -DISABLE_THE_INTERRUPT = 0 -ENABLE_THE_INTERRUPT = 1 -DC_SMU_INTERRUPT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'STATIC_SCREEN_SMU_INTR' -STATIC_SCREEN_SMU_INTR__enumvalues = { - 0: 'STATIC_SCREEN_SMU_INTR_NOOP', - 1: 'SET_STATIC_SCREEN_SMU_INTR', -} -STATIC_SCREEN_SMU_INTR_NOOP = 0 -SET_STATIC_SCREEN_SMU_INTR = 1 -STATIC_SCREEN_SMU_INTR = ctypes.c_uint32 # enum - -# values for enumeration 'ENABLE' -ENABLE__enumvalues = { - 0: 'DISABLE_THE_FEATURE', - 1: 'ENABLE_THE_FEATURE', -} -DISABLE_THE_FEATURE = 0 -ENABLE_THE_FEATURE = 1 -ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DS_HW_CAL_ENABLE' -DS_HW_CAL_ENABLE__enumvalues = { - 0: 'DS_HW_CAL_DIS', - 1: 'DS_HW_CAL_EN', -} -DS_HW_CAL_DIS = 0 -DS_HW_CAL_EN = 1 -DS_HW_CAL_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'ENABLE_CLOCK' -ENABLE_CLOCK__enumvalues = { - 0: 'DISABLE_THE_CLOCK', - 1: 'ENABLE_THE_CLOCK', -} -DISABLE_THE_CLOCK = 0 -ENABLE_THE_CLOCK = 1 -ENABLE_CLOCK = ctypes.c_uint32 # enum - -# values for enumeration 'CLEAR_SMU_INTR' -CLEAR_SMU_INTR__enumvalues = { - 0: 'SMU_INTR_STATUS_NOOP', - 1: 'SMU_INTR_STATUS_CLEAR', -} -SMU_INTR_STATUS_NOOP = 0 -SMU_INTR_STATUS_CLEAR = 1 -CLEAR_SMU_INTR = ctypes.c_uint32 # enum - -# values for enumeration 'JITTER_REMOVE_DISABLE' -JITTER_REMOVE_DISABLE__enumvalues = { - 0: 'ENABLE_JITTER_REMOVAL', - 1: 'DISABLE_JITTER_REMOVAL', -} -ENABLE_JITTER_REMOVAL = 0 -DISABLE_JITTER_REMOVAL = 1 -JITTER_REMOVE_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DS_REF_SRC' -DS_REF_SRC__enumvalues = { - 0: 'DS_REF_IS_XTALIN', - 1: 'DS_REF_IS_EXT_GENLOCK', - 2: 'DS_REF_IS_PCIE', -} -DS_REF_IS_XTALIN = 0 -DS_REF_IS_EXT_GENLOCK = 1 -DS_REF_IS_PCIE = 2 -DS_REF_SRC = ctypes.c_uint32 # enum - -# values for enumeration 'DISABLE_CLOCK_GATING' -DISABLE_CLOCK_GATING__enumvalues = { - 0: 'CLOCK_GATING_ENABLED', - 1: 'CLOCK_GATING_DISABLED', -} -CLOCK_GATING_ENABLED = 0 -CLOCK_GATING_DISABLED = 1 -DISABLE_CLOCK_GATING = ctypes.c_uint32 # enum - -# values for enumeration 'DISABLE_CLOCK_GATING_IN_DCO' -DISABLE_CLOCK_GATING_IN_DCO__enumvalues = { - 0: 'CLOCK_GATING_ENABLED_IN_DCO', - 1: 'CLOCK_GATING_DISABLED_IN_DCO', -} -CLOCK_GATING_ENABLED_IN_DCO = 0 -CLOCK_GATING_DISABLED_IN_DCO = 1 -DISABLE_CLOCK_GATING_IN_DCO = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_DEEP_COLOR_CNTL' -DCCG_DEEP_COLOR_CNTL__enumvalues = { - 0: 'DCCG_DEEP_COLOR_DTO_DISABLE', - 1: 'DCCG_DEEP_COLOR_DTO_5_4_RATIO', - 2: 'DCCG_DEEP_COLOR_DTO_3_2_RATIO', - 3: 'DCCG_DEEP_COLOR_DTO_2_1_RATIO', -} -DCCG_DEEP_COLOR_DTO_DISABLE = 0 -DCCG_DEEP_COLOR_DTO_5_4_RATIO = 1 -DCCG_DEEP_COLOR_DTO_3_2_RATIO = 2 -DCCG_DEEP_COLOR_DTO_2_1_RATIO = 3 -DCCG_DEEP_COLOR_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'REFCLK_CLOCK_EN' -REFCLK_CLOCK_EN__enumvalues = { - 0: 'REFCLK_CLOCK_EN_XTALIN_CLK', - 1: 'REFCLK_CLOCK_EN_ALLOW_SRC_SEL', -} -REFCLK_CLOCK_EN_XTALIN_CLK = 0 -REFCLK_CLOCK_EN_ALLOW_SRC_SEL = 1 -REFCLK_CLOCK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'REFCLK_SRC_SEL' -REFCLK_SRC_SEL__enumvalues = { - 0: 'REFCLK_SRC_SEL_PCIE_REFCLK', - 1: 'REFCLK_SRC_SEL_CPL_REFCLK', -} -REFCLK_SRC_SEL_PCIE_REFCLK = 0 -REFCLK_SRC_SEL_CPL_REFCLK = 1 -REFCLK_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPREFCLK_SRC_SEL' -DPREFCLK_SRC_SEL__enumvalues = { - 0: 'DPREFCLK_SRC_SEL_CK', - 1: 'DPREFCLK_SRC_SEL_P0PLL', - 2: 'DPREFCLK_SRC_SEL_P1PLL', - 3: 'DPREFCLK_SRC_SEL_P2PLL', -} -DPREFCLK_SRC_SEL_CK = 0 -DPREFCLK_SRC_SEL_P0PLL = 1 -DPREFCLK_SRC_SEL_P1PLL = 2 -DPREFCLK_SRC_SEL_P2PLL = 3 -DPREFCLK_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'XTAL_REF_SEL' -XTAL_REF_SEL__enumvalues = { - 0: 'XTAL_REF_SEL_1X', - 1: 'XTAL_REF_SEL_2X', -} -XTAL_REF_SEL_1X = 0 -XTAL_REF_SEL_2X = 1 -XTAL_REF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'XTAL_REF_CLOCK_SOURCE_SEL' -XTAL_REF_CLOCK_SOURCE_SEL__enumvalues = { - 0: 'XTAL_REF_CLOCK_SOURCE_SEL_XTALIN', - 1: 'XTAL_REF_CLOCK_SOURCE_SEL_DCCGREFCLK', -} -XTAL_REF_CLOCK_SOURCE_SEL_XTALIN = 0 -XTAL_REF_CLOCK_SOURCE_SEL_DCCGREFCLK = 1 -XTAL_REF_CLOCK_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL' -MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL__enumvalues = { - 0: 'MICROSECOND_TIME_BASE_CLOCK_IS_XTALIN', - 1: 'MICROSECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK', -} -MICROSECOND_TIME_BASE_CLOCK_IS_XTALIN = 0 -MICROSECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK = 1 -MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'ALLOW_SR_ON_TRANS_REQ' -ALLOW_SR_ON_TRANS_REQ__enumvalues = { - 0: 'ALLOW_SR_ON_TRANS_REQ_ENABLE', - 1: 'ALLOW_SR_ON_TRANS_REQ_DISABLE', -} -ALLOW_SR_ON_TRANS_REQ_ENABLE = 0 -ALLOW_SR_ON_TRANS_REQ_DISABLE = 1 -ALLOW_SR_ON_TRANS_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL' -MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL__enumvalues = { - 0: 'MILLISECOND_TIME_BASE_CLOCK_IS_XTALIN', - 1: 'MILLISECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK', -} -MILLISECOND_TIME_BASE_CLOCK_IS_XTALIN = 0 -MILLISECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK = 1 -MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_PIXEL_RATE_SOURCE' -PIPE_PIXEL_RATE_SOURCE__enumvalues = { - 0: 'PIPE_PIXEL_RATE_SOURCE_P0PLL', - 1: 'PIPE_PIXEL_RATE_SOURCE_P1PLL', - 2: 'PIPE_PIXEL_RATE_SOURCE_P2PLL', -} -PIPE_PIXEL_RATE_SOURCE_P0PLL = 0 -PIPE_PIXEL_RATE_SOURCE_P1PLL = 1 -PIPE_PIXEL_RATE_SOURCE_P2PLL = 2 -PIPE_PIXEL_RATE_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'TEST_CLK_DIV_SEL' -TEST_CLK_DIV_SEL__enumvalues = { - 0: 'NO_DIV', - 1: 'DIV_2', - 2: 'DIV_4', - 3: 'DIV_8', -} -NO_DIV = 0 -DIV_2 = 1 -DIV_4 = 2 -DIV_8 = 3 -TEST_CLK_DIV_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_PHYPLL_PIXEL_RATE_SOURCE' -PIPE_PHYPLL_PIXEL_RATE_SOURCE__enumvalues = { - 0: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYA', - 1: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYB', - 2: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYC', - 3: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYD', - 4: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYE', - 5: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYF', - 6: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_RESERVED', -} -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYA = 0 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYB = 1 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYC = 2 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYD = 3 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYE = 4 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYF = 5 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_RESERVED = 6 -PIPE_PHYPLL_PIXEL_RATE_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_PIXEL_RATE_PLL_SOURCE' -PIPE_PIXEL_RATE_PLL_SOURCE__enumvalues = { - 0: 'PIPE_PIXEL_RATE_PLL_SOURCE_PHYPLL', - 1: 'PIPE_PIXEL_RATE_PLL_SOURCE_DISPPLL', -} -PIPE_PIXEL_RATE_PLL_SOURCE_PHYPLL = 0 -PIPE_PIXEL_RATE_PLL_SOURCE_DISPPLL = 1 -PIPE_PIXEL_RATE_PLL_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DTO_DS_DISABLE' -DP_DTO_DS_DISABLE__enumvalues = { - 0: 'DP_DTO_DESPREAD_DISABLE', - 1: 'DP_DTO_DESPREAD_ENABLE', -} -DP_DTO_DESPREAD_DISABLE = 0 -DP_DTO_DESPREAD_ENABLE = 1 -DP_DTO_DS_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_ADD_PIXEL' -OTG_ADD_PIXEL__enumvalues = { - 0: 'OTG_ADD_PIXEL_NOOP', - 1: 'OTG_ADD_PIXEL_FORCE', -} -OTG_ADD_PIXEL_NOOP = 0 -OTG_ADD_PIXEL_FORCE = 1 -OTG_ADD_PIXEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DROP_PIXEL' -OTG_DROP_PIXEL__enumvalues = { - 0: 'OTG_DROP_PIXEL_NOOP', - 1: 'OTG_DROP_PIXEL_FORCE', -} -OTG_DROP_PIXEL_NOOP = 0 -OTG_DROP_PIXEL_FORCE = 1 -OTG_DROP_PIXEL = ctypes.c_uint32 # enum - -# values for enumeration 'SYMCLK_FE_FORCE_EN' -SYMCLK_FE_FORCE_EN__enumvalues = { - 0: 'SYMCLK_FE_FORCE_EN_DISABLE', - 1: 'SYMCLK_FE_FORCE_EN_ENABLE', -} -SYMCLK_FE_FORCE_EN_DISABLE = 0 -SYMCLK_FE_FORCE_EN_ENABLE = 1 -SYMCLK_FE_FORCE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'SYMCLK_FE_FORCE_SRC' -SYMCLK_FE_FORCE_SRC__enumvalues = { - 0: 'SYMCLK_FE_FORCE_SRC_UNIPHYA', - 1: 'SYMCLK_FE_FORCE_SRC_UNIPHYB', - 2: 'SYMCLK_FE_FORCE_SRC_UNIPHYC', - 3: 'SYMCLK_FE_FORCE_SRC_UNIPHYD', - 4: 'SYMCLK_FE_FORCE_SRC_UNIPHYE', - 5: 'SYMCLK_FE_FORCE_SRC_UNIPHYF', - 6: 'SYMCLK_FE_FORCE_SRC_RESERVED', -} -SYMCLK_FE_FORCE_SRC_UNIPHYA = 0 -SYMCLK_FE_FORCE_SRC_UNIPHYB = 1 -SYMCLK_FE_FORCE_SRC_UNIPHYC = 2 -SYMCLK_FE_FORCE_SRC_UNIPHYD = 3 -SYMCLK_FE_FORCE_SRC_UNIPHYE = 4 -SYMCLK_FE_FORCE_SRC_UNIPHYF = 5 -SYMCLK_FE_FORCE_SRC_RESERVED = 6 -SYMCLK_FE_FORCE_SRC = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLK_COARSE_SKEW_CNTL' -DVOACLK_COARSE_SKEW_CNTL__enumvalues = { - 0: 'DVOACLK_COARSE_SKEW_CNTL_NO_ADJUSTMENT', - 1: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_1_STEP', - 2: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_2_STEPS', - 3: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_3_STEPS', - 4: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_4_STEPS', - 5: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_5_STEPS', - 6: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_6_STEPS', - 7: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_7_STEPS', - 8: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_8_STEPS', - 9: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_9_STEPS', - 10: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_10_STEPS', - 11: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_11_STEPS', - 12: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_12_STEPS', - 13: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_13_STEPS', - 14: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_14_STEPS', - 15: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_15_STEPS', - 16: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_1_STEP', - 17: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_2_STEPS', - 18: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_3_STEPS', - 19: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_4_STEPS', - 20: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_5_STEPS', - 21: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_6_STEPS', - 22: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_7_STEPS', - 23: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_8_STEPS', - 24: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_9_STEPS', - 25: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_10_STEPS', - 26: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_11_STEPS', - 27: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_12_STEPS', - 28: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_13_STEPS', - 29: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_14_STEPS', - 30: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_15_STEPS', -} -DVOACLK_COARSE_SKEW_CNTL_NO_ADJUSTMENT = 0 -DVOACLK_COARSE_SKEW_CNTL_DELAY_1_STEP = 1 -DVOACLK_COARSE_SKEW_CNTL_DELAY_2_STEPS = 2 -DVOACLK_COARSE_SKEW_CNTL_DELAY_3_STEPS = 3 -DVOACLK_COARSE_SKEW_CNTL_DELAY_4_STEPS = 4 -DVOACLK_COARSE_SKEW_CNTL_DELAY_5_STEPS = 5 -DVOACLK_COARSE_SKEW_CNTL_DELAY_6_STEPS = 6 -DVOACLK_COARSE_SKEW_CNTL_DELAY_7_STEPS = 7 -DVOACLK_COARSE_SKEW_CNTL_DELAY_8_STEPS = 8 -DVOACLK_COARSE_SKEW_CNTL_DELAY_9_STEPS = 9 -DVOACLK_COARSE_SKEW_CNTL_DELAY_10_STEPS = 10 -DVOACLK_COARSE_SKEW_CNTL_DELAY_11_STEPS = 11 -DVOACLK_COARSE_SKEW_CNTL_DELAY_12_STEPS = 12 -DVOACLK_COARSE_SKEW_CNTL_DELAY_13_STEPS = 13 -DVOACLK_COARSE_SKEW_CNTL_DELAY_14_STEPS = 14 -DVOACLK_COARSE_SKEW_CNTL_DELAY_15_STEPS = 15 -DVOACLK_COARSE_SKEW_CNTL_EARLY_1_STEP = 16 -DVOACLK_COARSE_SKEW_CNTL_EARLY_2_STEPS = 17 -DVOACLK_COARSE_SKEW_CNTL_EARLY_3_STEPS = 18 -DVOACLK_COARSE_SKEW_CNTL_EARLY_4_STEPS = 19 -DVOACLK_COARSE_SKEW_CNTL_EARLY_5_STEPS = 20 -DVOACLK_COARSE_SKEW_CNTL_EARLY_6_STEPS = 21 -DVOACLK_COARSE_SKEW_CNTL_EARLY_7_STEPS = 22 -DVOACLK_COARSE_SKEW_CNTL_EARLY_8_STEPS = 23 -DVOACLK_COARSE_SKEW_CNTL_EARLY_9_STEPS = 24 -DVOACLK_COARSE_SKEW_CNTL_EARLY_10_STEPS = 25 -DVOACLK_COARSE_SKEW_CNTL_EARLY_11_STEPS = 26 -DVOACLK_COARSE_SKEW_CNTL_EARLY_12_STEPS = 27 -DVOACLK_COARSE_SKEW_CNTL_EARLY_13_STEPS = 28 -DVOACLK_COARSE_SKEW_CNTL_EARLY_14_STEPS = 29 -DVOACLK_COARSE_SKEW_CNTL_EARLY_15_STEPS = 30 -DVOACLK_COARSE_SKEW_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLK_FINE_SKEW_CNTL' -DVOACLK_FINE_SKEW_CNTL__enumvalues = { - 0: 'DVOACLK_FINE_SKEW_CNTL_NO_ADJUSTMENT', - 1: 'DVOACLK_FINE_SKEW_CNTL_DELAY_1_STEP', - 2: 'DVOACLK_FINE_SKEW_CNTL_DELAY_2_STEPS', - 3: 'DVOACLK_FINE_SKEW_CNTL_DELAY_3_STEPS', - 4: 'DVOACLK_FINE_SKEW_CNTL_EARLY_1_STEP', - 5: 'DVOACLK_FINE_SKEW_CNTL_EARLY_2_STEPS', - 6: 'DVOACLK_FINE_SKEW_CNTL_EARLY_3_STEPS', - 7: 'DVOACLK_FINE_SKEW_CNTL_EARLY_4_STEPS', -} -DVOACLK_FINE_SKEW_CNTL_NO_ADJUSTMENT = 0 -DVOACLK_FINE_SKEW_CNTL_DELAY_1_STEP = 1 -DVOACLK_FINE_SKEW_CNTL_DELAY_2_STEPS = 2 -DVOACLK_FINE_SKEW_CNTL_DELAY_3_STEPS = 3 -DVOACLK_FINE_SKEW_CNTL_EARLY_1_STEP = 4 -DVOACLK_FINE_SKEW_CNTL_EARLY_2_STEPS = 5 -DVOACLK_FINE_SKEW_CNTL_EARLY_3_STEPS = 6 -DVOACLK_FINE_SKEW_CNTL_EARLY_4_STEPS = 7 -DVOACLK_FINE_SKEW_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLKD_IN_PHASE' -DVOACLKD_IN_PHASE__enumvalues = { - 0: 'DVOACLKD_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', - 1: 'DVOACLKD_IN_PHASE_WITH_PCLK_DVO', -} -DVOACLKD_IN_OPPOSITE_PHASE_WITH_PCLK_DVO = 0 -DVOACLKD_IN_PHASE_WITH_PCLK_DVO = 1 -DVOACLKD_IN_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLKC_IN_PHASE' -DVOACLKC_IN_PHASE__enumvalues = { - 0: 'DVOACLKC_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', - 1: 'DVOACLKC_IN_PHASE_WITH_PCLK_DVO', -} -DVOACLKC_IN_OPPOSITE_PHASE_WITH_PCLK_DVO = 0 -DVOACLKC_IN_PHASE_WITH_PCLK_DVO = 1 -DVOACLKC_IN_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLKC_MVP_IN_PHASE' -DVOACLKC_MVP_IN_PHASE__enumvalues = { - 0: 'DVOACLKC_MVP_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', - 1: 'DVOACLKC_MVP_IN_PHASE_WITH_PCLK_DVO', -} -DVOACLKC_MVP_IN_OPPOSITE_PHASE_WITH_PCLK_DVO = 0 -DVOACLKC_MVP_IN_PHASE_WITH_PCLK_DVO = 1 -DVOACLKC_MVP_IN_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE' -DVOACLKC_MVP_SKEW_PHASE_OVERRIDE__enumvalues = { - 0: 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_DISABLE', - 1: 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_ENABLE', -} -DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_DISABLE = 0 -DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_ENABLE = 1 -DVOACLKC_MVP_SKEW_PHASE_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO0_SOURCE_SEL' -DCCG_AUDIO_DTO0_SOURCE_SEL__enumvalues = { - 0: 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG0', - 1: 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG1', - 2: 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG2', - 3: 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG3', - 4: 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG4', - 5: 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG5', - 6: 'DCCG_AUDIO_DTO0_SOURCE_SEL_RESERVED', -} -DCCG_AUDIO_DTO0_SOURCE_SEL_OTG0 = 0 -DCCG_AUDIO_DTO0_SOURCE_SEL_OTG1 = 1 -DCCG_AUDIO_DTO0_SOURCE_SEL_OTG2 = 2 -DCCG_AUDIO_DTO0_SOURCE_SEL_OTG3 = 3 -DCCG_AUDIO_DTO0_SOURCE_SEL_OTG4 = 4 -DCCG_AUDIO_DTO0_SOURCE_SEL_OTG5 = 5 -DCCG_AUDIO_DTO0_SOURCE_SEL_RESERVED = 6 -DCCG_AUDIO_DTO0_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO_SEL' -DCCG_AUDIO_DTO_SEL__enumvalues = { - 0: 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO0', - 1: 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO1', - 2: 'DCCG_AUDIO_DTO_SEL_NO_AUDIO_DTO', -} -DCCG_AUDIO_DTO_SEL_AUDIO_DTO0 = 0 -DCCG_AUDIO_DTO_SEL_AUDIO_DTO1 = 1 -DCCG_AUDIO_DTO_SEL_NO_AUDIO_DTO = 2 -DCCG_AUDIO_DTO_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO2_SOURCE_SEL' -DCCG_AUDIO_DTO2_SOURCE_SEL__enumvalues = { - 0: 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0', - 1: 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK1', -} -DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0 = 0 -DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK1 = 1 -DCCG_AUDIO_DTO2_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO_USE_512FBR_DTO' -DCCG_AUDIO_DTO_USE_512FBR_DTO__enumvalues = { - 0: 'DCCG_AUDIO_DTO_USE_128FBR_FOR_DP', - 1: 'DCCG_AUDIO_DTO_USE_512FBR_FOR_DP', -} -DCCG_AUDIO_DTO_USE_128FBR_FOR_DP = 0 -DCCG_AUDIO_DTO_USE_512FBR_FOR_DP = 1 -DCCG_AUDIO_DTO_USE_512FBR_DTO = ctypes.c_uint32 # enum - -# values for enumeration 'DISPCLK_FREQ_RAMP_DONE' -DISPCLK_FREQ_RAMP_DONE__enumvalues = { - 0: 'DISPCLK_FREQ_RAMP_IN_PROGRESS', - 1: 'DISPCLK_FREQ_RAMP_COMPLETED', -} -DISPCLK_FREQ_RAMP_IN_PROGRESS = 0 -DISPCLK_FREQ_RAMP_COMPLETED = 1 -DISPCLK_FREQ_RAMP_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_FIFO_ERRDET_RESET' -DCCG_FIFO_ERRDET_RESET__enumvalues = { - 0: 'DCCG_FIFO_ERRDET_RESET_NOOP', - 1: 'DCCG_FIFO_ERRDET_RESET_FORCE', -} -DCCG_FIFO_ERRDET_RESET_NOOP = 0 -DCCG_FIFO_ERRDET_RESET_FORCE = 1 -DCCG_FIFO_ERRDET_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_FIFO_ERRDET_STATE' -DCCG_FIFO_ERRDET_STATE__enumvalues = { - 0: 'DCCG_FIFO_ERRDET_STATE_CALIBRATION', - 1: 'DCCG_FIFO_ERRDET_STATE_DETECTION', -} -DCCG_FIFO_ERRDET_STATE_CALIBRATION = 0 -DCCG_FIFO_ERRDET_STATE_DETECTION = 1 -DCCG_FIFO_ERRDET_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_FIFO_ERRDET_OVR_EN' -DCCG_FIFO_ERRDET_OVR_EN__enumvalues = { - 0: 'DCCG_FIFO_ERRDET_OVR_DISABLE', - 1: 'DCCG_FIFO_ERRDET_OVR_ENABLE', -} -DCCG_FIFO_ERRDET_OVR_DISABLE = 0 -DCCG_FIFO_ERRDET_OVR_ENABLE = 1 -DCCG_FIFO_ERRDET_OVR_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DISPCLK_CHG_FWD_CORR_DISABLE' -DISPCLK_CHG_FWD_CORR_DISABLE__enumvalues = { - 0: 'DISPCLK_CHG_FWD_CORR_ENABLE_AT_BEGINNING', - 1: 'DISPCLK_CHG_FWD_CORR_DISABLE_AT_BEGINNING', -} -DISPCLK_CHG_FWD_CORR_ENABLE_AT_BEGINNING = 0 -DISPCLK_CHG_FWD_CORR_DISABLE_AT_BEGINNING = 1 -DISPCLK_CHG_FWD_CORR_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DC_MEM_GLOBAL_PWR_REQ_DIS' -DC_MEM_GLOBAL_PWR_REQ_DIS__enumvalues = { - 0: 'DC_MEM_GLOBAL_PWR_REQ_ENABLE', - 1: 'DC_MEM_GLOBAL_PWR_REQ_DISABLE', -} -DC_MEM_GLOBAL_PWR_REQ_ENABLE = 0 -DC_MEM_GLOBAL_PWR_REQ_DISABLE = 1 -DC_MEM_GLOBAL_PWR_REQ_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_RUN' -DCCG_PERF_RUN__enumvalues = { - 0: 'DCCG_PERF_RUN_NOOP', - 1: 'DCCG_PERF_RUN_START', -} -DCCG_PERF_RUN_NOOP = 0 -DCCG_PERF_RUN_START = 1 -DCCG_PERF_RUN = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_MODE_VSYNC' -DCCG_PERF_MODE_VSYNC__enumvalues = { - 0: 'DCCG_PERF_MODE_VSYNC_NOOP', - 1: 'DCCG_PERF_MODE_VSYNC_START', -} -DCCG_PERF_MODE_VSYNC_NOOP = 0 -DCCG_PERF_MODE_VSYNC_START = 1 -DCCG_PERF_MODE_VSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_MODE_HSYNC' -DCCG_PERF_MODE_HSYNC__enumvalues = { - 0: 'DCCG_PERF_MODE_HSYNC_NOOP', - 1: 'DCCG_PERF_MODE_HSYNC_START', -} -DCCG_PERF_MODE_HSYNC_NOOP = 0 -DCCG_PERF_MODE_HSYNC_START = 1 -DCCG_PERF_MODE_HSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_OTG_SELECT' -DCCG_PERF_OTG_SELECT__enumvalues = { - 0: 'DCCG_PERF_SEL_OTG0', - 1: 'DCCG_PERF_SEL_OTG1', - 2: 'DCCG_PERF_SEL_OTG2', - 3: 'DCCG_PERF_SEL_OTG3', - 4: 'DCCG_PERF_SEL_OTG4', - 5: 'DCCG_PERF_SEL_OTG5', - 6: 'DCCG_PERF_SEL_RESERVED', -} -DCCG_PERF_SEL_OTG0 = 0 -DCCG_PERF_SEL_OTG1 = 1 -DCCG_PERF_SEL_OTG2 = 2 -DCCG_PERF_SEL_OTG3 = 3 -DCCG_PERF_SEL_OTG4 = 4 -DCCG_PERF_SEL_OTG5 = 5 -DCCG_PERF_SEL_RESERVED = 6 -DCCG_PERF_OTG_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'CLOCK_BRANCH_SOFT_RESET' -CLOCK_BRANCH_SOFT_RESET__enumvalues = { - 0: 'CLOCK_BRANCH_SOFT_RESET_NOOP', - 1: 'CLOCK_BRANCH_SOFT_RESET_FORCE', -} -CLOCK_BRANCH_SOFT_RESET_NOOP = 0 -CLOCK_BRANCH_SOFT_RESET_FORCE = 1 -CLOCK_BRANCH_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'PLL_CFG_IF_SOFT_RESET' -PLL_CFG_IF_SOFT_RESET__enumvalues = { - 0: 'PLL_CFG_IF_SOFT_RESET_NOOP', - 1: 'PLL_CFG_IF_SOFT_RESET_FORCE', -} -PLL_CFG_IF_SOFT_RESET_NOOP = 0 -PLL_CFG_IF_SOFT_RESET_FORCE = 1 -PLL_CFG_IF_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DVO_ENABLE_RST' -DVO_ENABLE_RST__enumvalues = { - 0: 'DVO_ENABLE_RST_DISABLE', - 1: 'DVO_ENABLE_RST_ENABLE', -} -DVO_ENABLE_RST_DISABLE = 0 -DVO_ENABLE_RST_ENABLE = 1 -DVO_ENABLE_RST = ctypes.c_uint32 # enum - -# values for enumeration 'DS_JITTER_COUNT_SRC_SEL' -DS_JITTER_COUNT_SRC_SEL__enumvalues = { - 0: 'DS_JITTER_COUNT_SRC_SEL0', - 1: 'DS_JITTER_COUNT_SRC_SEL1', -} -DS_JITTER_COUNT_SRC_SEL0 = 0 -DS_JITTER_COUNT_SRC_SEL1 = 1 -DS_JITTER_COUNT_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIO_FIFO_ERROR' -DIO_FIFO_ERROR__enumvalues = { - 0: 'DIO_FIFO_ERROR_00', - 1: 'DIO_FIFO_ERROR_01', - 2: 'DIO_FIFO_ERROR_10', - 3: 'DIO_FIFO_ERROR_11', -} -DIO_FIFO_ERROR_00 = 0 -DIO_FIFO_ERROR_01 = 1 -DIO_FIFO_ERROR_10 = 2 -DIO_FIFO_ERROR_11 = 3 -DIO_FIFO_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'VSYNC_CNT_REFCLK_SEL' -VSYNC_CNT_REFCLK_SEL__enumvalues = { - 0: 'VSYNC_CNT_REFCLK_SEL_0', - 1: 'VSYNC_CNT_REFCLK_SEL_1', -} -VSYNC_CNT_REFCLK_SEL_0 = 0 -VSYNC_CNT_REFCLK_SEL_1 = 1 -VSYNC_CNT_REFCLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'VSYNC_CNT_RESET_SEL' -VSYNC_CNT_RESET_SEL__enumvalues = { - 0: 'VSYNC_CNT_RESET_SEL_0', - 1: 'VSYNC_CNT_RESET_SEL_1', -} -VSYNC_CNT_RESET_SEL_0 = 0 -VSYNC_CNT_RESET_SEL_1 = 1 -VSYNC_CNT_RESET_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'VSYNC_CNT_LATCH_MASK' -VSYNC_CNT_LATCH_MASK__enumvalues = { - 0: 'VSYNC_CNT_LATCH_MASK_0', - 1: 'VSYNC_CNT_LATCH_MASK_1', -} -VSYNC_CNT_LATCH_MASK_0 = 0 -VSYNC_CNT_LATCH_MASK_1 = 1 -VSYNC_CNT_LATCH_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'HPD_INT_CONTROL_ACK' -HPD_INT_CONTROL_ACK__enumvalues = { - 0: 'HPD_INT_CONTROL_ACK_0', - 1: 'HPD_INT_CONTROL_ACK_1', -} -HPD_INT_CONTROL_ACK_0 = 0 -HPD_INT_CONTROL_ACK_1 = 1 -HPD_INT_CONTROL_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'HPD_INT_CONTROL_POLARITY' -HPD_INT_CONTROL_POLARITY__enumvalues = { - 0: 'HPD_INT_CONTROL_GEN_INT_ON_DISCON', - 1: 'HPD_INT_CONTROL_GEN_INT_ON_CON', -} -HPD_INT_CONTROL_GEN_INT_ON_DISCON = 0 -HPD_INT_CONTROL_GEN_INT_ON_CON = 1 -HPD_INT_CONTROL_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'HPD_INT_CONTROL_RX_INT_ACK' -HPD_INT_CONTROL_RX_INT_ACK__enumvalues = { - 0: 'HPD_INT_CONTROL_RX_INT_ACK_0', - 1: 'HPD_INT_CONTROL_RX_INT_ACK_1', -} -HPD_INT_CONTROL_RX_INT_ACK_0 = 0 -HPD_INT_CONTROL_RX_INT_ACK_1 = 1 -HPD_INT_CONTROL_RX_INT_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSO_NUM_OF_SST_LINKS' -DP_MSO_NUM_OF_SST_LINKS__enumvalues = { - 0: 'DP_MSO_ONE_SSTLINK', - 1: 'DP_MSO_TWO_SSTLINK', - 2: 'DP_MSO_FOUR_SSTLINK', -} -DP_MSO_ONE_SSTLINK = 0 -DP_MSO_TWO_SSTLINK = 1 -DP_MSO_FOUR_SSTLINK = 2 -DP_MSO_NUM_OF_SST_LINKS = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SYNC_POLARITY' -DP_SYNC_POLARITY__enumvalues = { - 0: 'DP_SYNC_POLARITY_ACTIVE_HIGH', - 1: 'DP_SYNC_POLARITY_ACTIVE_LOW', -} -DP_SYNC_POLARITY_ACTIVE_HIGH = 0 -DP_SYNC_POLARITY_ACTIVE_LOW = 1 -DP_SYNC_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_COMBINE_PIXEL_NUM' -DP_COMBINE_PIXEL_NUM__enumvalues = { - 0: 'DP_COMBINE_ONE_PIXEL', - 1: 'DP_COMBINE_TWO_PIXEL', - 2: 'DP_COMBINE_FOUR_PIXEL', -} -DP_COMBINE_ONE_PIXEL = 0 -DP_COMBINE_TWO_PIXEL = 1 -DP_COMBINE_FOUR_PIXEL = 2 -DP_COMBINE_PIXEL_NUM = ctypes.c_uint32 # enum - -# values for enumeration 'DP_LINK_TRAINING_COMPLETE' -DP_LINK_TRAINING_COMPLETE__enumvalues = { - 0: 'DP_LINK_TRAINING_NOT_COMPLETE', - 1: 'DP_LINK_TRAINING_ALREADY_COMPLETE', -} -DP_LINK_TRAINING_NOT_COMPLETE = 0 -DP_LINK_TRAINING_ALREADY_COMPLETE = 1 -DP_LINK_TRAINING_COMPLETE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_EMBEDDED_PANEL_MODE' -DP_EMBEDDED_PANEL_MODE__enumvalues = { - 0: 'DP_EXTERNAL_PANEL', - 1: 'DP_EMBEDDED_PANEL', -} -DP_EXTERNAL_PANEL = 0 -DP_EMBEDDED_PANEL = 1 -DP_EMBEDDED_PANEL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_PIXEL_ENCODING' -DP_PIXEL_ENCODING__enumvalues = { - 0: 'DP_PIXEL_ENCODING_RGB444', - 1: 'DP_PIXEL_ENCODING_YCBCR422', - 2: 'DP_PIXEL_ENCODING_YCBCR444', - 3: 'DP_PIXEL_ENCODING_RGB_WIDE_GAMUT', - 4: 'DP_PIXEL_ENCODING_Y_ONLY', - 5: 'DP_PIXEL_ENCODING_YCBCR420', - 6: 'DP_PIXEL_ENCODING_RESERVED', -} -DP_PIXEL_ENCODING_RGB444 = 0 -DP_PIXEL_ENCODING_YCBCR422 = 1 -DP_PIXEL_ENCODING_YCBCR444 = 2 -DP_PIXEL_ENCODING_RGB_WIDE_GAMUT = 3 -DP_PIXEL_ENCODING_Y_ONLY = 4 -DP_PIXEL_ENCODING_YCBCR420 = 5 -DP_PIXEL_ENCODING_RESERVED = 6 -DP_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'DP_COMPONENT_DEPTH' -DP_COMPONENT_DEPTH__enumvalues = { - 0: 'DP_COMPONENT_DEPTH_6BPC', - 1: 'DP_COMPONENT_DEPTH_8BPC', - 2: 'DP_COMPONENT_DEPTH_10BPC', - 3: 'DP_COMPONENT_DEPTH_12BPC', - 4: 'DP_COMPONENT_DEPTH_16BPC_RESERVED', - 5: 'DP_COMPONENT_DEPTH_RESERVED', -} -DP_COMPONENT_DEPTH_6BPC = 0 -DP_COMPONENT_DEPTH_8BPC = 1 -DP_COMPONENT_DEPTH_10BPC = 2 -DP_COMPONENT_DEPTH_12BPC = 3 -DP_COMPONENT_DEPTH_16BPC_RESERVED = 4 -DP_COMPONENT_DEPTH_RESERVED = 5 -DP_COMPONENT_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'DP_UDI_LANES' -DP_UDI_LANES__enumvalues = { - 0: 'DP_UDI_1_LANE', - 1: 'DP_UDI_2_LANES', - 2: 'DP_UDI_LANES_RESERVED', - 3: 'DP_UDI_4_LANES', -} -DP_UDI_1_LANE = 0 -DP_UDI_2_LANES = 1 -DP_UDI_LANES_RESERVED = 2 -DP_UDI_4_LANES = 3 -DP_UDI_LANES = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_STREAM_DIS_DEFER' -DP_VID_STREAM_DIS_DEFER__enumvalues = { - 0: 'DP_VID_STREAM_DIS_NO_DEFER', - 1: 'DP_VID_STREAM_DIS_DEFER_TO_HBLANK', - 2: 'DP_VID_STREAM_DIS_DEFER_TO_VBLANK', -} -DP_VID_STREAM_DIS_NO_DEFER = 0 -DP_VID_STREAM_DIS_DEFER_TO_HBLANK = 1 -DP_VID_STREAM_DIS_DEFER_TO_VBLANK = 2 -DP_VID_STREAM_DIS_DEFER = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STEER_OVERFLOW_ACK' -DP_STEER_OVERFLOW_ACK__enumvalues = { - 0: 'DP_STEER_OVERFLOW_ACK_NO_EFFECT', - 1: 'DP_STEER_OVERFLOW_ACK_CLR_INTERRUPT', -} -DP_STEER_OVERFLOW_ACK_NO_EFFECT = 0 -DP_STEER_OVERFLOW_ACK_CLR_INTERRUPT = 1 -DP_STEER_OVERFLOW_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STEER_OVERFLOW_MASK' -DP_STEER_OVERFLOW_MASK__enumvalues = { - 0: 'DP_STEER_OVERFLOW_MASKED', - 1: 'DP_STEER_OVERFLOW_UNMASK', -} -DP_STEER_OVERFLOW_MASKED = 0 -DP_STEER_OVERFLOW_UNMASK = 1 -DP_STEER_OVERFLOW_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_TU_OVERFLOW_ACK' -DP_TU_OVERFLOW_ACK__enumvalues = { - 0: 'DP_TU_OVERFLOW_ACK_NO_EFFECT', - 1: 'DP_TU_OVERFLOW_ACK_CLR_INTERRUPT', -} -DP_TU_OVERFLOW_ACK_NO_EFFECT = 0 -DP_TU_OVERFLOW_ACK_CLR_INTERRUPT = 1 -DP_TU_OVERFLOW_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_M_N_DOUBLE_BUFFER_MODE' -DP_VID_M_N_DOUBLE_BUFFER_MODE__enumvalues = { - 0: 'DP_VID_M_N_DOUBLE_BUFFER_AFTER_VID_M_UPDATE', - 1: 'DP_VID_M_N_DOUBLE_BUFFER_AT_FRAME_START', -} -DP_VID_M_N_DOUBLE_BUFFER_AFTER_VID_M_UPDATE = 0 -DP_VID_M_N_DOUBLE_BUFFER_AT_FRAME_START = 1 -DP_VID_M_N_DOUBLE_BUFFER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_M_N_GEN_EN' -DP_VID_M_N_GEN_EN__enumvalues = { - 0: 'DP_VID_M_N_PROGRAMMED_VIA_REG', - 1: 'DP_VID_M_N_CALC_AUTO', -} -DP_VID_M_N_PROGRAMMED_VIA_REG = 0 -DP_VID_M_N_CALC_AUTO = 1 -DP_VID_M_N_GEN_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_N_MUL' -DP_VID_N_MUL__enumvalues = { - 0: 'DP_VID_M_1X_INPUT_PIXEL_RATE', - 1: 'DP_VID_M_2X_INPUT_PIXEL_RATE', - 2: 'DP_VID_M_4X_INPUT_PIXEL_RATE', - 3: 'DP_VID_M_8X_INPUT_PIXEL_RATE', -} -DP_VID_M_1X_INPUT_PIXEL_RATE = 0 -DP_VID_M_2X_INPUT_PIXEL_RATE = 1 -DP_VID_M_4X_INPUT_PIXEL_RATE = 2 -DP_VID_M_8X_INPUT_PIXEL_RATE = 3 -DP_VID_N_MUL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_ENHANCED_FRAME_MODE' -DP_VID_ENHANCED_FRAME_MODE__enumvalues = { - 0: 'VID_NORMAL_FRAME_MODE', - 1: 'VID_ENHANCED_MODE', -} -VID_NORMAL_FRAME_MODE = 0 -VID_ENHANCED_MODE = 1 -DP_VID_ENHANCED_FRAME_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_VBID_FIELD_POL' -DP_VID_VBID_FIELD_POL__enumvalues = { - 0: 'DP_VID_VBID_FIELD_POL_NORMAL', - 1: 'DP_VID_VBID_FIELD_POL_INV', -} -DP_VID_VBID_FIELD_POL_NORMAL = 0 -DP_VID_VBID_FIELD_POL_INV = 1 -DP_VID_VBID_FIELD_POL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_STREAM_DISABLE_ACK' -DP_VID_STREAM_DISABLE_ACK__enumvalues = { - 0: 'ID_STREAM_DISABLE_NO_ACK', - 1: 'ID_STREAM_DISABLE_ACKED', -} -ID_STREAM_DISABLE_NO_ACK = 0 -ID_STREAM_DISABLE_ACKED = 1 -DP_VID_STREAM_DISABLE_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_STREAM_DISABLE_MASK' -DP_VID_STREAM_DISABLE_MASK__enumvalues = { - 0: 'VID_STREAM_DISABLE_MASKED', - 1: 'VID_STREAM_DISABLE_UNMASK', -} -VID_STREAM_DISABLE_MASKED = 0 -VID_STREAM_DISABLE_UNMASK = 1 -DP_VID_STREAM_DISABLE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE0' -DPHY_ATEST_SEL_LANE0__enumvalues = { - 0: 'DPHY_ATEST_LANE0_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE0_REG_PATTERN', -} -DPHY_ATEST_LANE0_PRBS_PATTERN = 0 -DPHY_ATEST_LANE0_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE0 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE1' -DPHY_ATEST_SEL_LANE1__enumvalues = { - 0: 'DPHY_ATEST_LANE1_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE1_REG_PATTERN', -} -DPHY_ATEST_LANE1_PRBS_PATTERN = 0 -DPHY_ATEST_LANE1_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE1 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE2' -DPHY_ATEST_SEL_LANE2__enumvalues = { - 0: 'DPHY_ATEST_LANE2_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE2_REG_PATTERN', -} -DPHY_ATEST_LANE2_PRBS_PATTERN = 0 -DPHY_ATEST_LANE2_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE2 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE3' -DPHY_ATEST_SEL_LANE3__enumvalues = { - 0: 'DPHY_ATEST_LANE3_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE3_REG_PATTERN', -} -DPHY_ATEST_LANE3_PRBS_PATTERN = 0 -DPHY_ATEST_LANE3_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE3 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_BYPASS' -DPHY_BYPASS__enumvalues = { - 0: 'DPHY_8B10B_OUTPUT', - 1: 'DPHY_DBG_OUTPUT', -} -DPHY_8B10B_OUTPUT = 0 -DPHY_DBG_OUTPUT = 1 -DPHY_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SKEW_BYPASS' -DPHY_SKEW_BYPASS__enumvalues = { - 0: 'DPHY_WITH_SKEW', - 1: 'DPHY_NO_SKEW', -} -DPHY_WITH_SKEW = 0 -DPHY_NO_SKEW = 1 -DPHY_SKEW_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_TRAINING_PATTERN_SEL' -DPHY_TRAINING_PATTERN_SEL__enumvalues = { - 0: 'DPHY_TRAINING_PATTERN_1', - 1: 'DPHY_TRAINING_PATTERN_2', - 2: 'DPHY_TRAINING_PATTERN_3', - 3: 'DPHY_TRAINING_PATTERN_4', -} -DPHY_TRAINING_PATTERN_1 = 0 -DPHY_TRAINING_PATTERN_2 = 1 -DPHY_TRAINING_PATTERN_3 = 2 -DPHY_TRAINING_PATTERN_4 = 3 -DPHY_TRAINING_PATTERN_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_8B10B_RESET' -DPHY_8B10B_RESET__enumvalues = { - 0: 'DPHY_8B10B_NOT_RESET', - 1: 'DPHY_8B10B_RESETET', -} -DPHY_8B10B_NOT_RESET = 0 -DPHY_8B10B_RESETET = 1 -DPHY_8B10B_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_8B10B_EXT_DISP' -DP_DPHY_8B10B_EXT_DISP__enumvalues = { - 0: 'DP_DPHY_8B10B_EXT_DISP_ZERO', - 1: 'DP_DPHY_8B10B_EXT_DISP_ONE', -} -DP_DPHY_8B10B_EXT_DISP_ZERO = 0 -DP_DPHY_8B10B_EXT_DISP_ONE = 1 -DP_DPHY_8B10B_EXT_DISP = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_8B10B_CUR_DISP' -DPHY_8B10B_CUR_DISP__enumvalues = { - 0: 'DPHY_8B10B_CUR_DISP_ZERO', - 1: 'DPHY_8B10B_CUR_DISP_ONE', -} -DPHY_8B10B_CUR_DISP_ZERO = 0 -DPHY_8B10B_CUR_DISP_ONE = 1 -DPHY_8B10B_CUR_DISP = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_PRBS_EN' -DPHY_PRBS_EN__enumvalues = { - 0: 'DPHY_PRBS_DISABLE', - 1: 'DPHY_PRBS_ENABLE', -} -DPHY_PRBS_DISABLE = 0 -DPHY_PRBS_ENABLE = 1 -DPHY_PRBS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_PRBS_SEL' -DPHY_PRBS_SEL__enumvalues = { - 0: 'DPHY_PRBS7_SELECTED', - 1: 'DPHY_PRBS23_SELECTED', - 2: 'DPHY_PRBS11_SELECTED', -} -DPHY_PRBS7_SELECTED = 0 -DPHY_PRBS23_SELECTED = 1 -DPHY_PRBS11_SELECTED = 2 -DPHY_PRBS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_FEC_ENABLE' -DPHY_FEC_ENABLE__enumvalues = { - 0: 'DPHY_FEC_DISABLED', - 1: 'DPHY_FEC_ENABLED', -} -DPHY_FEC_DISABLED = 0 -DPHY_FEC_ENABLED = 1 -DPHY_FEC_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'FEC_ACTIVE_STATUS' -FEC_ACTIVE_STATUS__enumvalues = { - 0: 'DPHY_FEC_NOT_ACTIVE', - 1: 'DPHY_FEC_ACTIVE', -} -DPHY_FEC_NOT_ACTIVE = 0 -DPHY_FEC_ACTIVE = 1 -FEC_ACTIVE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_FEC_READY' -DPHY_FEC_READY__enumvalues = { - 0: 'DPHY_FEC_READY_EN', - 1: 'DPHY_FEC_READY_DIS', -} -DPHY_FEC_READY_EN = 0 -DPHY_FEC_READY_DIS = 1 -DPHY_FEC_READY = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_LOAD_BS_COUNT_START' -DPHY_LOAD_BS_COUNT_START__enumvalues = { - 0: 'DPHY_LOAD_BS_COUNT_STARTED', - 1: 'DPHY_LOAD_BS_COUNT_NOT_STARTED', -} -DPHY_LOAD_BS_COUNT_STARTED = 0 -DPHY_LOAD_BS_COUNT_NOT_STARTED = 1 -DPHY_LOAD_BS_COUNT_START = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_EN' -DPHY_CRC_EN__enumvalues = { - 0: 'DPHY_CRC_DISABLED', - 1: 'DPHY_CRC_ENABLED', -} -DPHY_CRC_DISABLED = 0 -DPHY_CRC_ENABLED = 1 -DPHY_CRC_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_CONT_EN' -DPHY_CRC_CONT_EN__enumvalues = { - 0: 'DPHY_CRC_ONE_SHOT', - 1: 'DPHY_CRC_CONTINUOUS', -} -DPHY_CRC_ONE_SHOT = 0 -DPHY_CRC_CONTINUOUS = 1 -DPHY_CRC_CONT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_FIELD' -DPHY_CRC_FIELD__enumvalues = { - 0: 'DPHY_CRC_START_FROM_TOP_FIELD', - 1: 'DPHY_CRC_START_FROM_BOTTOM_FIELD', -} -DPHY_CRC_START_FROM_TOP_FIELD = 0 -DPHY_CRC_START_FROM_BOTTOM_FIELD = 1 -DPHY_CRC_FIELD = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_SEL' -DPHY_CRC_SEL__enumvalues = { - 0: 'DPHY_CRC_LANE0_SELECTED', - 1: 'DPHY_CRC_LANE1_SELECTED', - 2: 'DPHY_CRC_LANE2_SELECTED', - 3: 'DPHY_CRC_LANE3_SELECTED', -} -DPHY_CRC_LANE0_SELECTED = 0 -DPHY_CRC_LANE1_SELECTED = 1 -DPHY_CRC_LANE2_SELECTED = 2 -DPHY_CRC_LANE3_SELECTED = 3 -DPHY_CRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_RX_FAST_TRAINING_CAPABLE' -DPHY_RX_FAST_TRAINING_CAPABLE__enumvalues = { - 0: 'DPHY_FAST_TRAINING_NOT_CAPABLE_0', - 1: 'DPHY_FAST_TRAINING_CAPABLE', -} -DPHY_FAST_TRAINING_NOT_CAPABLE_0 = 0 -DPHY_FAST_TRAINING_CAPABLE = 1 -DPHY_RX_FAST_TRAINING_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_COLLISION_ACK' -DP_SEC_COLLISION_ACK__enumvalues = { - 0: 'DP_SEC_COLLISION_ACK_NO_EFFECT', - 1: 'DP_SEC_COLLISION_ACK_CLR_FLAG', -} -DP_SEC_COLLISION_ACK_NO_EFFECT = 0 -DP_SEC_COLLISION_ACK_CLR_FLAG = 1 -DP_SEC_COLLISION_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_AUDIO_MUTE' -DP_SEC_AUDIO_MUTE__enumvalues = { - 0: 'DP_SEC_AUDIO_MUTE_HW_CTRL', - 1: 'DP_SEC_AUDIO_MUTE_SW_CTRL', -} -DP_SEC_AUDIO_MUTE_HW_CTRL = 0 -DP_SEC_AUDIO_MUTE_SW_CTRL = 1 -DP_SEC_AUDIO_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_TIMESTAMP_MODE' -DP_SEC_TIMESTAMP_MODE__enumvalues = { - 0: 'DP_SEC_TIMESTAMP_PROGRAMMABLE_MODE', - 1: 'DP_SEC_TIMESTAMP_AUTO_CALC_MODE', -} -DP_SEC_TIMESTAMP_PROGRAMMABLE_MODE = 0 -DP_SEC_TIMESTAMP_AUTO_CALC_MODE = 1 -DP_SEC_TIMESTAMP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_ASP_PRIORITY' -DP_SEC_ASP_PRIORITY__enumvalues = { - 0: 'DP_SEC_ASP_LOW_PRIORITY', - 1: 'DP_SEC_ASP_HIGH_PRIORITY', -} -DP_SEC_ASP_LOW_PRIORITY = 0 -DP_SEC_ASP_HIGH_PRIORITY = 1 -DP_SEC_ASP_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE' -DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE__enumvalues = { - 0: 'DP_SEC_ASP_CHANNEL_COUNT_FROM_AZ', - 1: 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED', -} -DP_SEC_ASP_CHANNEL_COUNT_FROM_AZ = 0 -DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED = 1 -DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_SAT_UPDATE_ACT' -DP_MSE_SAT_UPDATE_ACT__enumvalues = { - 0: 'DP_MSE_SAT_UPDATE_NO_ACTION', - 1: 'DP_MSE_SAT_UPDATE_WITH_TRIGGER', - 2: 'DP_MSE_SAT_UPDATE_WITHOUT_TRIGGER', -} -DP_MSE_SAT_UPDATE_NO_ACTION = 0 -DP_MSE_SAT_UPDATE_WITH_TRIGGER = 1 -DP_MSE_SAT_UPDATE_WITHOUT_TRIGGER = 2 -DP_MSE_SAT_UPDATE_ACT = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_LINK_LINE' -DP_MSE_LINK_LINE__enumvalues = { - 0: 'DP_MSE_LINK_LINE_32_MTP_LONG', - 1: 'DP_MSE_LINK_LINE_64_MTP_LONG', - 2: 'DP_MSE_LINK_LINE_128_MTP_LONG', - 3: 'DP_MSE_LINK_LINE_256_MTP_LONG', -} -DP_MSE_LINK_LINE_32_MTP_LONG = 0 -DP_MSE_LINK_LINE_64_MTP_LONG = 1 -DP_MSE_LINK_LINE_128_MTP_LONG = 2 -DP_MSE_LINK_LINE_256_MTP_LONG = 3 -DP_MSE_LINK_LINE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_BLANK_CODE' -DP_MSE_BLANK_CODE__enumvalues = { - 0: 'DP_MSE_BLANK_CODE_SF_FILLED', - 1: 'DP_MSE_BLANK_CODE_ZERO_FILLED', -} -DP_MSE_BLANK_CODE_SF_FILLED = 0 -DP_MSE_BLANK_CODE_ZERO_FILLED = 1 -DP_MSE_BLANK_CODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_TIMESTAMP_MODE' -DP_MSE_TIMESTAMP_MODE__enumvalues = { - 0: 'DP_MSE_TIMESTAMP_CALC_BASED_ON_LINK_RATE', - 1: 'DP_MSE_TIMESTAMP_CALC_BASED_ON_VC_RATE', -} -DP_MSE_TIMESTAMP_CALC_BASED_ON_LINK_RATE = 0 -DP_MSE_TIMESTAMP_CALC_BASED_ON_VC_RATE = 1 -DP_MSE_TIMESTAMP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_ZERO_ENCODER' -DP_MSE_ZERO_ENCODER__enumvalues = { - 0: 'DP_MSE_NOT_ZERO_FE_ENCODER', - 1: 'DP_MSE_ZERO_FE_ENCODER', -} -DP_MSE_NOT_ZERO_FE_ENCODER = 0 -DP_MSE_ZERO_FE_ENCODER = 1 -DP_MSE_ZERO_ENCODER = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_HBR2_PATTERN_CONTROL_MODE' -DP_DPHY_HBR2_PATTERN_CONTROL_MODE__enumvalues = { - 0: 'DP_DPHY_HBR2_PASS_THROUGH', - 1: 'DP_DPHY_HBR2_PATTERN_1', - 2: 'DP_DPHY_HBR2_PATTERN_2_NEG', - 3: 'DP_DPHY_HBR2_PATTERN_3', - 6: 'DP_DPHY_HBR2_PATTERN_2_POS', -} -DP_DPHY_HBR2_PASS_THROUGH = 0 -DP_DPHY_HBR2_PATTERN_1 = 1 -DP_DPHY_HBR2_PATTERN_2_NEG = 2 -DP_DPHY_HBR2_PATTERN_3 = 3 -DP_DPHY_HBR2_PATTERN_2_POS = 6 -DP_DPHY_HBR2_PATTERN_CONTROL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_MST_PHASE_ERROR_ACK' -DPHY_CRC_MST_PHASE_ERROR_ACK__enumvalues = { - 0: 'DPHY_CRC_MST_PHASE_ERROR_NO_ACK', - 1: 'DPHY_CRC_MST_PHASE_ERROR_ACKED', -} -DPHY_CRC_MST_PHASE_ERROR_NO_ACK = 0 -DPHY_CRC_MST_PHASE_ERROR_ACKED = 1 -DPHY_CRC_MST_PHASE_ERROR_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SW_FAST_TRAINING_START' -DPHY_SW_FAST_TRAINING_START__enumvalues = { - 0: 'DPHY_SW_FAST_TRAINING_NOT_STARTED', - 1: 'DPHY_SW_FAST_TRAINING_STARTED', -} -DPHY_SW_FAST_TRAINING_NOT_STARTED = 0 -DPHY_SW_FAST_TRAINING_STARTED = 1 -DPHY_SW_FAST_TRAINING_START = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN' -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN__enumvalues = { - 0: 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_DISABLED', - 1: 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_ENABLED', -} -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_DISABLED = 0 -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_ENABLED = 1 -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_FAST_TRAINING_COMPLETE_MASK' -DP_DPHY_FAST_TRAINING_COMPLETE_MASK__enumvalues = { - 0: 'DP_DPHY_FAST_TRAINING_COMPLETE_MASKED', - 1: 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_MASKED', -} -DP_DPHY_FAST_TRAINING_COMPLETE_MASKED = 0 -DP_DPHY_FAST_TRAINING_COMPLETE_NOT_MASKED = 1 -DP_DPHY_FAST_TRAINING_COMPLETE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_FAST_TRAINING_COMPLETE_ACK' -DP_DPHY_FAST_TRAINING_COMPLETE_ACK__enumvalues = { - 0: 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_ACKED', - 1: 'DP_DPHY_FAST_TRAINING_COMPLETE_ACKED', -} -DP_DPHY_FAST_TRAINING_COMPLETE_NOT_ACKED = 0 -DP_DPHY_FAST_TRAINING_COMPLETE_ACKED = 1 -DP_DPHY_FAST_TRAINING_COMPLETE_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSA_V_TIMING_OVERRIDE_EN' -DP_MSA_V_TIMING_OVERRIDE_EN__enumvalues = { - 0: 'MSA_V_TIMING_OVERRIDE_DISABLED', - 1: 'MSA_V_TIMING_OVERRIDE_ENABLED', -} -MSA_V_TIMING_OVERRIDE_DISABLED = 0 -MSA_V_TIMING_OVERRIDE_ENABLED = 1 -DP_MSA_V_TIMING_OVERRIDE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_GSP0_PRIORITY' -DP_SEC_GSP0_PRIORITY__enumvalues = { - 0: 'SEC_GSP0_PRIORITY_LOW', - 1: 'SEC_GSP0_PRIORITY_HIGH', -} -SEC_GSP0_PRIORITY_LOW = 0 -SEC_GSP0_PRIORITY_HIGH = 1 -DP_SEC_GSP0_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_GSP_SEND' -DP_SEC_GSP_SEND__enumvalues = { - 0: 'NOT_SENT', - 1: 'FORCE_SENT', -} -NOT_SENT = 0 -FORCE_SENT = 1 -DP_SEC_GSP_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_GSP_SEND_ANY_LINE' -DP_SEC_GSP_SEND_ANY_LINE__enumvalues = { - 0: 'SEND_AT_LINK_NUMBER', - 1: 'SEND_AT_EARLIEST_TIME', -} -SEND_AT_LINK_NUMBER = 0 -SEND_AT_EARLIEST_TIME = 1 -DP_SEC_GSP_SEND_ANY_LINE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_LINE_REFERENCE' -DP_SEC_LINE_REFERENCE__enumvalues = { - 0: 'REFER_TO_DP_SOF', - 1: 'REFER_TO_OTG_SOF', -} -REFER_TO_DP_SOF = 0 -REFER_TO_OTG_SOF = 1 -DP_SEC_LINE_REFERENCE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_GSP_SEND_PPS' -DP_SEC_GSP_SEND_PPS__enumvalues = { - 0: 'SEND_NORMAL_PACKET', - 1: 'SEND_PPS_PACKET', -} -SEND_NORMAL_PACKET = 0 -SEND_PPS_PACKET = 1 -DP_SEC_GSP_SEND_PPS = ctypes.c_uint32 # enum - -# values for enumeration 'DP_ML_PHY_SEQ_MODE' -DP_ML_PHY_SEQ_MODE__enumvalues = { - 0: 'DP_ML_PHY_SEQ_LINE_NUM', - 1: 'DP_ML_PHY_SEQ_IMMEDIATE', -} -DP_ML_PHY_SEQ_LINE_NUM = 0 -DP_ML_PHY_SEQ_IMMEDIATE = 1 -DP_ML_PHY_SEQ_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_LINK_TRAINING_SWITCH_MODE' -DP_LINK_TRAINING_SWITCH_MODE__enumvalues = { - 0: 'DP_LINK_TRAINING_SWITCH_TO_IDLE', - 1: 'DP_LINK_TRAINING_SWITCH_TO_VIDEO', -} -DP_LINK_TRAINING_SWITCH_TO_IDLE = 0 -DP_LINK_TRAINING_SWITCH_TO_VIDEO = 1 -DP_LINK_TRAINING_SWITCH_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DSC_MODE' -DP_DSC_MODE__enumvalues = { - 0: 'DP_DSC_DISABLE', - 1: 'DP_DSC_444_SIMPLE_422', - 2: 'DP_DSC_NATIVE_422_420', -} -DP_DSC_DISABLE = 0 -DP_DSC_444_SIMPLE_422 = 1 -DP_DSC_NATIVE_422_420 = 2 -DP_DSC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_KEEPOUT_MODE' -HDMI_KEEPOUT_MODE__enumvalues = { - 0: 'HDMI_KEEPOUT_0_650PIX_AFTER_VSYNC', - 1: 'HDMI_KEEPOUT_509_650PIX_AFTER_VSYNC', -} -HDMI_KEEPOUT_0_650PIX_AFTER_VSYNC = 0 -HDMI_KEEPOUT_509_650PIX_AFTER_VSYNC = 1 -HDMI_KEEPOUT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_CLOCK_CHANNEL_RATE' -HDMI_CLOCK_CHANNEL_RATE__enumvalues = { - 0: 'HDMI_CLOCK_CHANNEL_FREQ_EQUAL_TO_CHAR_RATE', - 1: 'HDMI_CLOCK_CHANNEL_FREQ_QUARTER_TO_CHAR_RATE', -} -HDMI_CLOCK_CHANNEL_FREQ_EQUAL_TO_CHAR_RATE = 0 -HDMI_CLOCK_CHANNEL_FREQ_QUARTER_TO_CHAR_RATE = 1 -HDMI_CLOCK_CHANNEL_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_NO_EXTRA_NULL_PACKET_FILLED' -HDMI_NO_EXTRA_NULL_PACKET_FILLED__enumvalues = { - 0: 'HDMI_EXTRA_NULL_PACKET_FILLED_ENABLE', - 1: 'HDMI_EXTRA_NULL_PACKET_FILLED_DISABLE', -} -HDMI_EXTRA_NULL_PACKET_FILLED_ENABLE = 0 -HDMI_EXTRA_NULL_PACKET_FILLED_DISABLE = 1 -HDMI_NO_EXTRA_NULL_PACKET_FILLED = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_PACKET_GEN_VERSION' -HDMI_PACKET_GEN_VERSION__enumvalues = { - 0: 'HDMI_PACKET_GEN_VERSION_OLD', - 1: 'HDMI_PACKET_GEN_VERSION_NEW', -} -HDMI_PACKET_GEN_VERSION_OLD = 0 -HDMI_PACKET_GEN_VERSION_NEW = 1 -HDMI_PACKET_GEN_VERSION = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ERROR_ACK' -HDMI_ERROR_ACK__enumvalues = { - 0: 'HDMI_ERROR_ACK_INT', - 1: 'HDMI_ERROR_NOT_ACK', -} -HDMI_ERROR_ACK_INT = 0 -HDMI_ERROR_NOT_ACK = 1 -HDMI_ERROR_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ERROR_MASK' -HDMI_ERROR_MASK__enumvalues = { - 0: 'HDMI_ERROR_MASK_INT', - 1: 'HDMI_ERROR_NOT_MASK', -} -HDMI_ERROR_MASK_INT = 0 -HDMI_ERROR_NOT_MASK = 1 -HDMI_ERROR_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_DEEP_COLOR_DEPTH' -HDMI_DEEP_COLOR_DEPTH__enumvalues = { - 0: 'HDMI_DEEP_COLOR_DEPTH_24BPP', - 1: 'HDMI_DEEP_COLOR_DEPTH_30BPP', - 2: 'HDMI_DEEP_COLOR_DEPTH_36BPP', - 3: 'HDMI_DEEP_COLOR_DEPTH_48BPP', -} -HDMI_DEEP_COLOR_DEPTH_24BPP = 0 -HDMI_DEEP_COLOR_DEPTH_30BPP = 1 -HDMI_DEEP_COLOR_DEPTH_36BPP = 2 -HDMI_DEEP_COLOR_DEPTH_48BPP = 3 -HDMI_DEEP_COLOR_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_AUDIO_DELAY_EN' -HDMI_AUDIO_DELAY_EN__enumvalues = { - 0: 'HDMI_AUDIO_DELAY_DISABLE', - 1: 'HDMI_AUDIO_DELAY_58CLK', - 2: 'HDMI_AUDIO_DELAY_56CLK', - 3: 'HDMI_AUDIO_DELAY_RESERVED', -} -HDMI_AUDIO_DELAY_DISABLE = 0 -HDMI_AUDIO_DELAY_58CLK = 1 -HDMI_AUDIO_DELAY_56CLK = 2 -HDMI_AUDIO_DELAY_RESERVED = 3 -HDMI_AUDIO_DELAY_EN = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_AUDIO_SEND_MAX_PACKETS' -HDMI_AUDIO_SEND_MAX_PACKETS__enumvalues = { - 0: 'HDMI_NOT_SEND_MAX_AUDIO_PACKETS', - 1: 'HDMI_SEND_MAX_AUDIO_PACKETS', -} -HDMI_NOT_SEND_MAX_AUDIO_PACKETS = 0 -HDMI_SEND_MAX_AUDIO_PACKETS = 1 -HDMI_AUDIO_SEND_MAX_PACKETS = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_SEND' -HDMI_ACR_SEND__enumvalues = { - 0: 'HDMI_ACR_NOT_SEND', - 1: 'HDMI_ACR_PKT_SEND', -} -HDMI_ACR_NOT_SEND = 0 -HDMI_ACR_PKT_SEND = 1 -HDMI_ACR_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_CONT' -HDMI_ACR_CONT__enumvalues = { - 0: 'HDMI_ACR_CONT_DISABLE', - 1: 'HDMI_ACR_CONT_ENABLE', -} -HDMI_ACR_CONT_DISABLE = 0 -HDMI_ACR_CONT_ENABLE = 1 -HDMI_ACR_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_SELECT' -HDMI_ACR_SELECT__enumvalues = { - 0: 'HDMI_ACR_SELECT_HW', - 1: 'HDMI_ACR_SELECT_32K', - 2: 'HDMI_ACR_SELECT_44K', - 3: 'HDMI_ACR_SELECT_48K', -} -HDMI_ACR_SELECT_HW = 0 -HDMI_ACR_SELECT_32K = 1 -HDMI_ACR_SELECT_44K = 2 -HDMI_ACR_SELECT_48K = 3 -HDMI_ACR_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_SOURCE' -HDMI_ACR_SOURCE__enumvalues = { - 0: 'HDMI_ACR_SOURCE_HW', - 1: 'HDMI_ACR_SOURCE_SW', -} -HDMI_ACR_SOURCE_HW = 0 -HDMI_ACR_SOURCE_SW = 1 -HDMI_ACR_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_N_MULTIPLE' -HDMI_ACR_N_MULTIPLE__enumvalues = { - 0: 'HDMI_ACR_0_MULTIPLE_RESERVED', - 1: 'HDMI_ACR_1_MULTIPLE', - 2: 'HDMI_ACR_2_MULTIPLE', - 3: 'HDMI_ACR_3_MULTIPLE_RESERVED', - 4: 'HDMI_ACR_4_MULTIPLE', - 5: 'HDMI_ACR_5_MULTIPLE_RESERVED', - 6: 'HDMI_ACR_6_MULTIPLE_RESERVED', - 7: 'HDMI_ACR_7_MULTIPLE_RESERVED', -} -HDMI_ACR_0_MULTIPLE_RESERVED = 0 -HDMI_ACR_1_MULTIPLE = 1 -HDMI_ACR_2_MULTIPLE = 2 -HDMI_ACR_3_MULTIPLE_RESERVED = 3 -HDMI_ACR_4_MULTIPLE = 4 -HDMI_ACR_5_MULTIPLE_RESERVED = 5 -HDMI_ACR_6_MULTIPLE_RESERVED = 6 -HDMI_ACR_7_MULTIPLE_RESERVED = 7 -HDMI_ACR_N_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_AUDIO_PRIORITY' -HDMI_ACR_AUDIO_PRIORITY__enumvalues = { - 0: 'HDMI_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE', - 1: 'HDMI_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT', -} -HDMI_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE = 0 -HDMI_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT = 1 -HDMI_ACR_AUDIO_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_NULL_SEND' -HDMI_NULL_SEND__enumvalues = { - 0: 'HDMI_NULL_NOT_SEND', - 1: 'HDMI_NULL_PKT_SEND', -} -HDMI_NULL_NOT_SEND = 0 -HDMI_NULL_PKT_SEND = 1 -HDMI_NULL_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_SEND' -HDMI_GC_SEND__enumvalues = { - 0: 'HDMI_GC_NOT_SEND', - 1: 'HDMI_GC_PKT_SEND', -} -HDMI_GC_NOT_SEND = 0 -HDMI_GC_PKT_SEND = 1 -HDMI_GC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_CONT' -HDMI_GC_CONT__enumvalues = { - 0: 'HDMI_GC_CONT_DISABLE', - 1: 'HDMI_GC_CONT_ENABLE', -} -HDMI_GC_CONT_DISABLE = 0 -HDMI_GC_CONT_ENABLE = 1 -HDMI_GC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ISRC_SEND' -HDMI_ISRC_SEND__enumvalues = { - 0: 'HDMI_ISRC_NOT_SEND', - 1: 'HDMI_ISRC_PKT_SEND', -} -HDMI_ISRC_NOT_SEND = 0 -HDMI_ISRC_PKT_SEND = 1 -HDMI_ISRC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ISRC_CONT' -HDMI_ISRC_CONT__enumvalues = { - 0: 'HDMI_ISRC_CONT_DISABLE', - 1: 'HDMI_ISRC_CONT_ENABLE', -} -HDMI_ISRC_CONT_DISABLE = 0 -HDMI_ISRC_CONT_ENABLE = 1 -HDMI_ISRC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_AUDIO_INFO_SEND' -HDMI_AUDIO_INFO_SEND__enumvalues = { - 0: 'HDMI_AUDIO_INFO_NOT_SEND', - 1: 'HDMI_AUDIO_INFO_PKT_SEND', -} -HDMI_AUDIO_INFO_NOT_SEND = 0 -HDMI_AUDIO_INFO_PKT_SEND = 1 -HDMI_AUDIO_INFO_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_AUDIO_INFO_CONT' -HDMI_AUDIO_INFO_CONT__enumvalues = { - 0: 'HDMI_AUDIO_INFO_CONT_DISABLE', - 1: 'HDMI_AUDIO_INFO_CONT_ENABLE', -} -HDMI_AUDIO_INFO_CONT_DISABLE = 0 -HDMI_AUDIO_INFO_CONT_ENABLE = 1 -HDMI_AUDIO_INFO_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_MPEG_INFO_SEND' -HDMI_MPEG_INFO_SEND__enumvalues = { - 0: 'HDMI_MPEG_INFO_NOT_SEND', - 1: 'HDMI_MPEG_INFO_PKT_SEND', -} -HDMI_MPEG_INFO_NOT_SEND = 0 -HDMI_MPEG_INFO_PKT_SEND = 1 -HDMI_MPEG_INFO_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_MPEG_INFO_CONT' -HDMI_MPEG_INFO_CONT__enumvalues = { - 0: 'HDMI_MPEG_INFO_CONT_DISABLE', - 1: 'HDMI_MPEG_INFO_CONT_ENABLE', -} -HDMI_MPEG_INFO_CONT_DISABLE = 0 -HDMI_MPEG_INFO_CONT_ENABLE = 1 -HDMI_MPEG_INFO_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GENERIC_SEND' -HDMI_GENERIC_SEND__enumvalues = { - 0: 'HDMI_GENERIC_NOT_SEND', - 1: 'HDMI_GENERIC_PKT_SEND', -} -HDMI_GENERIC_NOT_SEND = 0 -HDMI_GENERIC_PKT_SEND = 1 -HDMI_GENERIC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GENERIC_CONT' -HDMI_GENERIC_CONT__enumvalues = { - 0: 'HDMI_GENERIC_CONT_DISABLE', - 1: 'HDMI_GENERIC_CONT_ENABLE', -} -HDMI_GENERIC_CONT_DISABLE = 0 -HDMI_GENERIC_CONT_ENABLE = 1 -HDMI_GENERIC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_AVMUTE_CONT' -HDMI_GC_AVMUTE_CONT__enumvalues = { - 0: 'HDMI_GC_AVMUTE_CONT_DISABLE', - 1: 'HDMI_GC_AVMUTE_CONT_ENABLE', -} -HDMI_GC_AVMUTE_CONT_DISABLE = 0 -HDMI_GC_AVMUTE_CONT_ENABLE = 1 -HDMI_GC_AVMUTE_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_PACKING_PHASE_OVERRIDE' -HDMI_PACKING_PHASE_OVERRIDE__enumvalues = { - 0: 'HDMI_PACKING_PHASE_SET_BY_HW', - 1: 'HDMI_PACKING_PHASE_SET_BY_SW', -} -HDMI_PACKING_PHASE_SET_BY_HW = 0 -HDMI_PACKING_PHASE_SET_BY_SW = 1 -HDMI_PACKING_PHASE_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_PIXEL_ENCODING' -TMDS_PIXEL_ENCODING__enumvalues = { - 0: 'TMDS_PIXEL_ENCODING_444_OR_420', - 1: 'TMDS_PIXEL_ENCODING_422', -} -TMDS_PIXEL_ENCODING_444_OR_420 = 0 -TMDS_PIXEL_ENCODING_422 = 1 -TMDS_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_COLOR_FORMAT' -TMDS_COLOR_FORMAT__enumvalues = { - 0: 'TMDS_COLOR_FORMAT__24BPP__TWIN30BPP_MSB__DUAL48BPP', - 1: 'TMDS_COLOR_FORMAT_TWIN30BPP_LSB', - 2: 'TMDS_COLOR_FORMAT_DUAL30BPP', - 3: 'TMDS_COLOR_FORMAT_RESERVED', -} -TMDS_COLOR_FORMAT__24BPP__TWIN30BPP_MSB__DUAL48BPP = 0 -TMDS_COLOR_FORMAT_TWIN30BPP_LSB = 1 -TMDS_COLOR_FORMAT_DUAL30BPP = 2 -TMDS_COLOR_FORMAT_RESERVED = 3 -TMDS_COLOR_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_STEREOSYNC_CTL_SEL_REG' -TMDS_STEREOSYNC_CTL_SEL_REG__enumvalues = { - 0: 'TMDS_STEREOSYNC_CTL0', - 1: 'TMDS_STEREOSYNC_CTL1', - 2: 'TMDS_STEREOSYNC_CTL2', - 3: 'TMDS_STEREOSYNC_CTL3', -} -TMDS_STEREOSYNC_CTL0 = 0 -TMDS_STEREOSYNC_CTL1 = 1 -TMDS_STEREOSYNC_CTL2 = 2 -TMDS_STEREOSYNC_CTL3 = 3 -TMDS_STEREOSYNC_CTL_SEL_REG = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_DATA_SEL' -TMDS_CTL0_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL0_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL0_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL0_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL0_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL0_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL0_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL0_DATA_SEL8_RANDOM_DATA', - 7: 'TMDS_CTL0_DATA_SEL9_SEL15_RANDOM_DATA', -} -TMDS_CTL0_DATA_SEL0_RESERVED = 0 -TMDS_CTL0_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL0_DATA_SEL2_VSYNC = 2 -TMDS_CTL0_DATA_SEL3_RESERVED = 3 -TMDS_CTL0_DATA_SEL4_HSYNC = 4 -TMDS_CTL0_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL0_DATA_SEL8_RANDOM_DATA = 6 -TMDS_CTL0_DATA_SEL9_SEL15_RANDOM_DATA = 7 -TMDS_CTL0_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_DATA_INVERT' -TMDS_CTL0_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL0_DATA_NORMAL', - 1: 'TMDS_CTL0_DATA_INVERT_EN', -} -TMDS_CTL0_DATA_NORMAL = 0 -TMDS_CTL0_DATA_INVERT_EN = 1 -TMDS_CTL0_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_DATA_MODULATION' -TMDS_CTL0_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL0_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL0_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL0_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL0_DATA_MODULATION_BIT2', -} -TMDS_CTL0_DATA_MODULATION_DISABLE = 0 -TMDS_CTL0_DATA_MODULATION_BIT0 = 1 -TMDS_CTL0_DATA_MODULATION_BIT1 = 2 -TMDS_CTL0_DATA_MODULATION_BIT2 = 3 -TMDS_CTL0_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_PATTERN_OUT_EN' -TMDS_CTL0_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL0_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL0_PATTERN_OUT_ENABLE', -} -TMDS_CTL0_PATTERN_OUT_DISABLE = 0 -TMDS_CTL0_PATTERN_OUT_ENABLE = 1 -TMDS_CTL0_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_DATA_SEL' -TMDS_CTL1_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL1_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL1_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL1_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL1_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL1_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL1_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL1_DATA_SEL8_BLANK_TIME', - 7: 'TMDS_CTL1_DATA_SEL9_SEL15_RESERVED', -} -TMDS_CTL1_DATA_SEL0_RESERVED = 0 -TMDS_CTL1_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL1_DATA_SEL2_VSYNC = 2 -TMDS_CTL1_DATA_SEL3_RESERVED = 3 -TMDS_CTL1_DATA_SEL4_HSYNC = 4 -TMDS_CTL1_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL1_DATA_SEL8_BLANK_TIME = 6 -TMDS_CTL1_DATA_SEL9_SEL15_RESERVED = 7 -TMDS_CTL1_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_DATA_INVERT' -TMDS_CTL1_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL1_DATA_NORMAL', - 1: 'TMDS_CTL1_DATA_INVERT_EN', -} -TMDS_CTL1_DATA_NORMAL = 0 -TMDS_CTL1_DATA_INVERT_EN = 1 -TMDS_CTL1_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_DATA_MODULATION' -TMDS_CTL1_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL1_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL1_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL1_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL1_DATA_MODULATION_BIT2', -} -TMDS_CTL1_DATA_MODULATION_DISABLE = 0 -TMDS_CTL1_DATA_MODULATION_BIT0 = 1 -TMDS_CTL1_DATA_MODULATION_BIT1 = 2 -TMDS_CTL1_DATA_MODULATION_BIT2 = 3 -TMDS_CTL1_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_PATTERN_OUT_EN' -TMDS_CTL1_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL1_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL1_PATTERN_OUT_ENABLE', -} -TMDS_CTL1_PATTERN_OUT_DISABLE = 0 -TMDS_CTL1_PATTERN_OUT_ENABLE = 1 -TMDS_CTL1_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_DATA_SEL' -TMDS_CTL2_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL2_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL2_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL2_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL2_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL2_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL2_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL2_DATA_SEL8_BLANK_TIME', - 7: 'TMDS_CTL2_DATA_SEL9_SEL15_RESERVED', -} -TMDS_CTL2_DATA_SEL0_RESERVED = 0 -TMDS_CTL2_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL2_DATA_SEL2_VSYNC = 2 -TMDS_CTL2_DATA_SEL3_RESERVED = 3 -TMDS_CTL2_DATA_SEL4_HSYNC = 4 -TMDS_CTL2_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL2_DATA_SEL8_BLANK_TIME = 6 -TMDS_CTL2_DATA_SEL9_SEL15_RESERVED = 7 -TMDS_CTL2_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_DATA_INVERT' -TMDS_CTL2_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL2_DATA_NORMAL', - 1: 'TMDS_CTL2_DATA_INVERT_EN', -} -TMDS_CTL2_DATA_NORMAL = 0 -TMDS_CTL2_DATA_INVERT_EN = 1 -TMDS_CTL2_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_DATA_MODULATION' -TMDS_CTL2_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL2_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL2_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL2_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL2_DATA_MODULATION_BIT2', -} -TMDS_CTL2_DATA_MODULATION_DISABLE = 0 -TMDS_CTL2_DATA_MODULATION_BIT0 = 1 -TMDS_CTL2_DATA_MODULATION_BIT1 = 2 -TMDS_CTL2_DATA_MODULATION_BIT2 = 3 -TMDS_CTL2_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_PATTERN_OUT_EN' -TMDS_CTL2_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL2_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL2_PATTERN_OUT_ENABLE', -} -TMDS_CTL2_PATTERN_OUT_DISABLE = 0 -TMDS_CTL2_PATTERN_OUT_ENABLE = 1 -TMDS_CTL2_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_DATA_INVERT' -TMDS_CTL3_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL3_DATA_NORMAL', - 1: 'TMDS_CTL3_DATA_INVERT_EN', -} -TMDS_CTL3_DATA_NORMAL = 0 -TMDS_CTL3_DATA_INVERT_EN = 1 -TMDS_CTL3_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_DATA_MODULATION' -TMDS_CTL3_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL3_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL3_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL3_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL3_DATA_MODULATION_BIT2', -} -TMDS_CTL3_DATA_MODULATION_DISABLE = 0 -TMDS_CTL3_DATA_MODULATION_BIT0 = 1 -TMDS_CTL3_DATA_MODULATION_BIT1 = 2 -TMDS_CTL3_DATA_MODULATION_BIT2 = 3 -TMDS_CTL3_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_PATTERN_OUT_EN' -TMDS_CTL3_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL3_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL3_PATTERN_OUT_ENABLE', -} -TMDS_CTL3_PATTERN_OUT_DISABLE = 0 -TMDS_CTL3_PATTERN_OUT_ENABLE = 1 -TMDS_CTL3_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_DATA_SEL' -TMDS_CTL3_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL3_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL3_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL3_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL3_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL3_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL3_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL3_DATA_SEL8_BLANK_TIME', - 7: 'TMDS_CTL3_DATA_SEL9_SEL15_RESERVED', -} -TMDS_CTL3_DATA_SEL0_RESERVED = 0 -TMDS_CTL3_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL3_DATA_SEL2_VSYNC = 2 -TMDS_CTL3_DATA_SEL3_RESERVED = 3 -TMDS_CTL3_DATA_SEL4_HSYNC = 4 -TMDS_CTL3_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL3_DATA_SEL8_BLANK_TIME = 6 -TMDS_CTL3_DATA_SEL9_SEL15_RESERVED = 7 -TMDS_CTL3_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FE_CNTL_SOURCE_SELECT' -DIG_FE_CNTL_SOURCE_SELECT__enumvalues = { - 0: 'DIG_FE_SOURCE_FROM_OTG0', - 1: 'DIG_FE_SOURCE_FROM_OTG1', - 2: 'DIG_FE_SOURCE_FROM_OTG2', - 3: 'DIG_FE_SOURCE_FROM_OTG3', - 4: 'DIG_FE_SOURCE_FROM_OTG4', - 5: 'DIG_FE_SOURCE_FROM_OTG5', - 6: 'DIG_FE_SOURCE_RESERVED', -} -DIG_FE_SOURCE_FROM_OTG0 = 0 -DIG_FE_SOURCE_FROM_OTG1 = 1 -DIG_FE_SOURCE_FROM_OTG2 = 2 -DIG_FE_SOURCE_FROM_OTG3 = 3 -DIG_FE_SOURCE_FROM_OTG4 = 4 -DIG_FE_SOURCE_FROM_OTG5 = 5 -DIG_FE_SOURCE_RESERVED = 6 -DIG_FE_CNTL_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FE_CNTL_STEREOSYNC_SELECT' -DIG_FE_CNTL_STEREOSYNC_SELECT__enumvalues = { - 0: 'DIG_FE_STEREOSYNC_FROM_OTG0', - 1: 'DIG_FE_STEREOSYNC_FROM_OTG1', - 2: 'DIG_FE_STEREOSYNC_FROM_OTG2', - 3: 'DIG_FE_STEREOSYNC_FROM_OTG3', - 4: 'DIG_FE_STEREOSYNC_FROM_OTG4', - 5: 'DIG_FE_STEREOSYNC_FROM_OTG5', - 6: 'DIG_FE_STEREOSYNC_RESERVED', -} -DIG_FE_STEREOSYNC_FROM_OTG0 = 0 -DIG_FE_STEREOSYNC_FROM_OTG1 = 1 -DIG_FE_STEREOSYNC_FROM_OTG2 = 2 -DIG_FE_STEREOSYNC_FROM_OTG3 = 3 -DIG_FE_STEREOSYNC_FROM_OTG4 = 4 -DIG_FE_STEREOSYNC_FROM_OTG5 = 5 -DIG_FE_STEREOSYNC_RESERVED = 6 -DIG_FE_CNTL_STEREOSYNC_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_READ_CLOCK_SRC' -DIG_FIFO_READ_CLOCK_SRC__enumvalues = { - 0: 'DIG_FIFO_READ_CLOCK_SRC_FROM_DCCG', - 1: 'DIG_FIFO_READ_CLOCK_SRC_FROM_DISPLAY_PIPE', -} -DIG_FIFO_READ_CLOCK_SRC_FROM_DCCG = 0 -DIG_FIFO_READ_CLOCK_SRC_FROM_DISPLAY_PIPE = 1 -DIG_FIFO_READ_CLOCK_SRC = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_OUTPUT_CRC_CNTL_LINK_SEL' -DIG_OUTPUT_CRC_CNTL_LINK_SEL__enumvalues = { - 0: 'DIG_OUTPUT_CRC_ON_LINK0', - 1: 'DIG_OUTPUT_CRC_ON_LINK1', -} -DIG_OUTPUT_CRC_ON_LINK0 = 0 -DIG_OUTPUT_CRC_ON_LINK1 = 1 -DIG_OUTPUT_CRC_CNTL_LINK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_OUTPUT_CRC_DATA_SEL' -DIG_OUTPUT_CRC_DATA_SEL__enumvalues = { - 0: 'DIG_OUTPUT_CRC_FOR_FULLFRAME', - 1: 'DIG_OUTPUT_CRC_FOR_ACTIVEONLY', - 2: 'DIG_OUTPUT_CRC_FOR_VBI', - 3: 'DIG_OUTPUT_CRC_FOR_AUDIO', -} -DIG_OUTPUT_CRC_FOR_FULLFRAME = 0 -DIG_OUTPUT_CRC_FOR_ACTIVEONLY = 1 -DIG_OUTPUT_CRC_FOR_VBI = 2 -DIG_OUTPUT_CRC_FOR_AUDIO = 3 -DIG_OUTPUT_CRC_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN' -DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN__enumvalues = { - 0: 'DIG_IN_NORMAL_OPERATION', - 1: 'DIG_IN_DEBUG_MODE', -} -DIG_IN_NORMAL_OPERATION = 0 -DIG_IN_DEBUG_MODE = 1 -DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL' -DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL__enumvalues = { - 0: 'DIG_10BIT_TEST_PATTERN', - 1: 'DIG_ALTERNATING_TEST_PATTERN', -} -DIG_10BIT_TEST_PATTERN = 0 -DIG_ALTERNATING_TEST_PATTERN = 1 -DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN' -DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN__enumvalues = { - 0: 'DIG_TEST_PATTERN_NORMAL', - 1: 'DIG_TEST_PATTERN_RANDOM', -} -DIG_TEST_PATTERN_NORMAL = 0 -DIG_TEST_PATTERN_RANDOM = 1 -DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_RANDOM_PATTERN_RESET' -DIG_TEST_PATTERN_RANDOM_PATTERN_RESET__enumvalues = { - 0: 'DIG_RANDOM_PATTERN_ENABLED', - 1: 'DIG_RANDOM_PATTERN_RESETED', -} -DIG_RANDOM_PATTERN_ENABLED = 0 -DIG_RANDOM_PATTERN_RESETED = 1 -DIG_TEST_PATTERN_RANDOM_PATTERN_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_EXTERNAL_RESET_EN' -DIG_TEST_PATTERN_EXTERNAL_RESET_EN__enumvalues = { - 0: 'DIG_TEST_PATTERN_EXTERNAL_RESET_ENABLE', - 1: 'DIG_TEST_PATTERN_EXTERNAL_RESET_BY_EXT_SIG', -} -DIG_TEST_PATTERN_EXTERNAL_RESET_ENABLE = 0 -DIG_TEST_PATTERN_EXTERNAL_RESET_BY_EXT_SIG = 1 -DIG_TEST_PATTERN_EXTERNAL_RESET_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_RANDOM_PATTERN_SEED_RAN_PAT' -DIG_RANDOM_PATTERN_SEED_RAN_PAT__enumvalues = { - 0: 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_ALL_PIXELS', - 1: 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_DE_HIGH', -} -DIG_RANDOM_PATTERN_SEED_RAN_PAT_ALL_PIXELS = 0 -DIG_RANDOM_PATTERN_SEED_RAN_PAT_DE_HIGH = 1 -DIG_RANDOM_PATTERN_SEED_RAN_PAT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_STATUS_USE_OVERWRITE_LEVEL' -DIG_FIFO_STATUS_USE_OVERWRITE_LEVEL__enumvalues = { - 0: 'DIG_FIFO_USE_OVERWRITE_LEVEL', - 1: 'DIG_FIFO_USE_CAL_AVERAGE_LEVEL', -} -DIG_FIFO_USE_OVERWRITE_LEVEL = 0 -DIG_FIFO_USE_CAL_AVERAGE_LEVEL = 1 -DIG_FIFO_STATUS_USE_OVERWRITE_LEVEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_ERROR_ACK' -DIG_FIFO_ERROR_ACK__enumvalues = { - 0: 'DIG_FIFO_ERROR_ACK_INT', - 1: 'DIG_FIFO_ERROR_NOT_ACK', -} -DIG_FIFO_ERROR_ACK_INT = 0 -DIG_FIFO_ERROR_NOT_ACK = 1 -DIG_FIFO_ERROR_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_STATUS_FORCE_RECAL_AVERAGE' -DIG_FIFO_STATUS_FORCE_RECAL_AVERAGE__enumvalues = { - 0: 'DIG_FIFO_NOT_FORCE_RECAL_AVERAGE', - 1: 'DIG_FIFO_FORCE_RECAL_AVERAGE_LEVEL', -} -DIG_FIFO_NOT_FORCE_RECAL_AVERAGE = 0 -DIG_FIFO_FORCE_RECAL_AVERAGE_LEVEL = 1 -DIG_FIFO_STATUS_FORCE_RECAL_AVERAGE = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_STATUS_FORCE_RECOMP_MINMAX' -DIG_FIFO_STATUS_FORCE_RECOMP_MINMAX__enumvalues = { - 0: 'DIG_FIFO_NOT_FORCE_RECOMP_MINMAX', - 1: 'DIG_FIFO_FORCE_RECOMP_MINMAX', -} -DIG_FIFO_NOT_FORCE_RECOMP_MINMAX = 0 -DIG_FIFO_FORCE_RECOMP_MINMAX = 1 -DIG_FIFO_STATUS_FORCE_RECOMP_MINMAX = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_INTERRUPT_STATUS_CHG_MASK' -AFMT_INTERRUPT_STATUS_CHG_MASK__enumvalues = { - 0: 'AFMT_INTERRUPT_DISABLE', - 1: 'AFMT_INTERRUPT_ENABLE', -} -AFMT_INTERRUPT_DISABLE = 0 -AFMT_INTERRUPT_ENABLE = 1 -AFMT_INTERRUPT_STATUS_CHG_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_AVMUTE' -HDMI_GC_AVMUTE__enumvalues = { - 0: 'HDMI_GC_AVMUTE_SET', - 1: 'HDMI_GC_AVMUTE_UNSET', -} -HDMI_GC_AVMUTE_SET = 0 -HDMI_GC_AVMUTE_UNSET = 1 -HDMI_GC_AVMUTE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_DEFAULT_PAHSE' -HDMI_DEFAULT_PAHSE__enumvalues = { - 0: 'HDMI_DEFAULT_PHASE_IS_0', - 1: 'HDMI_DEFAULT_PHASE_IS_1', -} -HDMI_DEFAULT_PHASE_IS_0 = 0 -HDMI_DEFAULT_PHASE_IS_1 = 1 -HDMI_DEFAULT_PAHSE = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD' -AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD__enumvalues = { - 0: 'AFMT_AUDIO_LAYOUT_DETERMINED_BY_AZ_AUDIO_CHANNEL_STATUS', - 1: 'AFMT_AUDIO_LAYOUT_OVRD_BY_REGISTER', -} -AFMT_AUDIO_LAYOUT_DETERMINED_BY_AZ_AUDIO_CHANNEL_STATUS = 0 -AFMT_AUDIO_LAYOUT_OVRD_BY_REGISTER = 1 -AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD = ctypes.c_uint32 # enum - -# values for enumeration 'AUDIO_LAYOUT_SELECT' -AUDIO_LAYOUT_SELECT__enumvalues = { - 0: 'AUDIO_LAYOUT_0', - 1: 'AUDIO_LAYOUT_1', -} -AUDIO_LAYOUT_0 = 0 -AUDIO_LAYOUT_1 = 1 -AUDIO_LAYOUT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_CRC_CONTROL_CONT' -AFMT_AUDIO_CRC_CONTROL_CONT__enumvalues = { - 0: 'AFMT_AUDIO_CRC_ONESHOT', - 1: 'AFMT_AUDIO_CRC_AUTO_RESTART', -} -AFMT_AUDIO_CRC_ONESHOT = 0 -AFMT_AUDIO_CRC_AUTO_RESTART = 1 -AFMT_AUDIO_CRC_CONTROL_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_CRC_CONTROL_SOURCE' -AFMT_AUDIO_CRC_CONTROL_SOURCE__enumvalues = { - 0: 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_INPUT', - 1: 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_OUTPUT', -} -AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_INPUT = 0 -AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_OUTPUT = 1 -AFMT_AUDIO_CRC_CONTROL_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_CRC_CONTROL_CH_SEL' -AFMT_AUDIO_CRC_CONTROL_CH_SEL__enumvalues = { - 0: 'AFMT_AUDIO_CRC_CH0_SIG', - 1: 'AFMT_AUDIO_CRC_CH1_SIG', - 2: 'AFMT_AUDIO_CRC_CH2_SIG', - 3: 'AFMT_AUDIO_CRC_CH3_SIG', - 4: 'AFMT_AUDIO_CRC_CH4_SIG', - 5: 'AFMT_AUDIO_CRC_CH5_SIG', - 6: 'AFMT_AUDIO_CRC_CH6_SIG', - 7: 'AFMT_AUDIO_CRC_CH7_SIG', - 8: 'AFMT_AUDIO_CRC_RESERVED_8', - 9: 'AFMT_AUDIO_CRC_RESERVED_9', - 10: 'AFMT_AUDIO_CRC_RESERVED_10', - 11: 'AFMT_AUDIO_CRC_RESERVED_11', - 12: 'AFMT_AUDIO_CRC_RESERVED_12', - 13: 'AFMT_AUDIO_CRC_RESERVED_13', - 14: 'AFMT_AUDIO_CRC_RESERVED_14', - 15: 'AFMT_AUDIO_CRC_AUDIO_SAMPLE_COUNT', -} -AFMT_AUDIO_CRC_CH0_SIG = 0 -AFMT_AUDIO_CRC_CH1_SIG = 1 -AFMT_AUDIO_CRC_CH2_SIG = 2 -AFMT_AUDIO_CRC_CH3_SIG = 3 -AFMT_AUDIO_CRC_CH4_SIG = 4 -AFMT_AUDIO_CRC_CH5_SIG = 5 -AFMT_AUDIO_CRC_CH6_SIG = 6 -AFMT_AUDIO_CRC_CH7_SIG = 7 -AFMT_AUDIO_CRC_RESERVED_8 = 8 -AFMT_AUDIO_CRC_RESERVED_9 = 9 -AFMT_AUDIO_CRC_RESERVED_10 = 10 -AFMT_AUDIO_CRC_RESERVED_11 = 11 -AFMT_AUDIO_CRC_RESERVED_12 = 12 -AFMT_AUDIO_CRC_RESERVED_13 = 13 -AFMT_AUDIO_CRC_RESERVED_14 = 14 -AFMT_AUDIO_CRC_AUDIO_SAMPLE_COUNT = 15 -AFMT_AUDIO_CRC_CONTROL_CH_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_RAMP_CONTROL0_SIGN' -AFMT_RAMP_CONTROL0_SIGN__enumvalues = { - 0: 'AFMT_RAMP_SIGNED', - 1: 'AFMT_RAMP_UNSIGNED', -} -AFMT_RAMP_SIGNED = 0 -AFMT_RAMP_UNSIGNED = 1 -AFMT_RAMP_CONTROL0_SIGN = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND' -AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND__enumvalues = { - 0: 'AFMT_AUDIO_PACKET_SENT_DISABLED', - 1: 'AFMT_AUDIO_PACKET_SENT_ENABLED', -} -AFMT_AUDIO_PACKET_SENT_DISABLED = 0 -AFMT_AUDIO_PACKET_SENT_ENABLED = 1 -AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS' -AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS__enumvalues = { - 0: 'AFMT_NOT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED_RESERVED', - 1: 'AFMT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED', -} -AFMT_NOT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED_RESERVED = 0 -AFMT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED = 1 -AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE' -AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE__enumvalues = { - 0: 'AFMT_INFOFRAME_SOURCE_FROM_AZALIA_BLOCK', - 1: 'AFMT_INFOFRAME_SOURCE_FROM_AFMT_REGISTERS', -} -AFMT_INFOFRAME_SOURCE_FROM_AZALIA_BLOCK = 0 -AFMT_INFOFRAME_SOURCE_FROM_AFMT_REGISTERS = 1 -AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_SRC_CONTROL_SELECT' -AFMT_AUDIO_SRC_CONTROL_SELECT__enumvalues = { - 0: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM0', - 1: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM1', - 2: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM2', - 3: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM3', - 4: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM4', - 5: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM5', - 6: 'AFMT_AUDIO_SRC_RESERVED', -} -AFMT_AUDIO_SRC_FROM_AZ_STREAM0 = 0 -AFMT_AUDIO_SRC_FROM_AZ_STREAM1 = 1 -AFMT_AUDIO_SRC_FROM_AZ_STREAM2 = 2 -AFMT_AUDIO_SRC_FROM_AZ_STREAM3 = 3 -AFMT_AUDIO_SRC_FROM_AZ_STREAM4 = 4 -AFMT_AUDIO_SRC_FROM_AZ_STREAM5 = 5 -AFMT_AUDIO_SRC_RESERVED = 6 -AFMT_AUDIO_SRC_CONTROL_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_BE_CNTL_MODE' -DIG_BE_CNTL_MODE__enumvalues = { - 0: 'DIG_BE_DP_SST_MODE', - 1: 'DIG_BE_RESERVED1', - 2: 'DIG_BE_TMDS_DVI_MODE', - 3: 'DIG_BE_TMDS_HDMI_MODE', - 4: 'DIG_BE_RESERVED4', - 5: 'DIG_BE_DP_MST_MODE', - 6: 'DIG_BE_RESERVED2', - 7: 'DIG_BE_RESERVED3', -} -DIG_BE_DP_SST_MODE = 0 -DIG_BE_RESERVED1 = 1 -DIG_BE_TMDS_DVI_MODE = 2 -DIG_BE_TMDS_HDMI_MODE = 3 -DIG_BE_RESERVED4 = 4 -DIG_BE_DP_MST_MODE = 5 -DIG_BE_RESERVED2 = 6 -DIG_BE_RESERVED3 = 7 -DIG_BE_CNTL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_BE_CNTL_HPD_SELECT' -DIG_BE_CNTL_HPD_SELECT__enumvalues = { - 0: 'DIG_BE_CNTL_HPD1', - 1: 'DIG_BE_CNTL_HPD2', - 2: 'DIG_BE_CNTL_HPD3', - 3: 'DIG_BE_CNTL_HPD4', - 4: 'DIG_BE_CNTL_HPD5', - 5: 'DIG_BE_CNTL_HPD6', - 6: 'DIG_BE_CNTL_NO_HPD', -} -DIG_BE_CNTL_HPD1 = 0 -DIG_BE_CNTL_HPD2 = 1 -DIG_BE_CNTL_HPD3 = 2 -DIG_BE_CNTL_HPD4 = 3 -DIG_BE_CNTL_HPD5 = 4 -DIG_BE_CNTL_HPD6 = 5 -DIG_BE_CNTL_NO_HPD = 6 -DIG_BE_CNTL_HPD_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'LVTMA_RANDOM_PATTERN_SEED_RAN_PAT' -LVTMA_RANDOM_PATTERN_SEED_RAN_PAT__enumvalues = { - 0: 'LVTMA_RANDOM_PATTERN_SEED_ALL_PIXELS', - 1: 'LVTMA_RANDOM_PATTERN_SEED_ONLY_DE_HIGH', -} -LVTMA_RANDOM_PATTERN_SEED_ALL_PIXELS = 0 -LVTMA_RANDOM_PATTERN_SEED_ONLY_DE_HIGH = 1 -LVTMA_RANDOM_PATTERN_SEED_RAN_PAT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_SYNC_PHASE' -TMDS_SYNC_PHASE__enumvalues = { - 0: 'TMDS_NOT_SYNC_PHASE_ON_FRAME_START', - 1: 'TMDS_SYNC_PHASE_ON_FRAME_START', -} -TMDS_NOT_SYNC_PHASE_ON_FRAME_START = 0 -TMDS_SYNC_PHASE_ON_FRAME_START = 1 -TMDS_SYNC_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL' -TMDS_DATA_SYNCHRONIZATION_DSINTSEL__enumvalues = { - 0: 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_PCLK_TMDS', - 1: 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_TMDS_PLL', -} -TMDS_DATA_SYNCHRONIZATION_DSINTSEL_PCLK_TMDS = 0 -TMDS_DATA_SYNCHRONIZATION_DSINTSEL_TMDS_PLL = 1 -TMDS_DATA_SYNCHRONIZATION_DSINTSEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_ENABLE_HPD_MASK' -TMDS_TRANSMITTER_ENABLE_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_HPD_MASK_NOT_OVERRIDE', - 1: 'TMDS_TRANSMITTER_HPD_MASK_OVERRIDE', -} -TMDS_TRANSMITTER_HPD_MASK_NOT_OVERRIDE = 0 -TMDS_TRANSMITTER_HPD_MASK_OVERRIDE = 1 -TMDS_TRANSMITTER_ENABLE_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK' -TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_NOT_OVERRIDE', - 1: 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_OVERRIDE', -} -TMDS_TRANSMITTER_LNKCEN_HPD_MASK_NOT_OVERRIDE = 0 -TMDS_TRANSMITTER_LNKCEN_HPD_MASK_OVERRIDE = 1 -TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK' -TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_NOT_OVERRIDE', - 1: 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_OVERRIDE', -} -TMDS_TRANSMITTER_LNKDEN_HPD_MASK_NOT_OVERRIDE = 0 -TMDS_TRANSMITTER_LNKDEN_HPD_MASK_OVERRIDE = 1 -TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK' -TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_HPD_NOT_OVERRIDE_PLL_ENABLE', - 1: 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_DISCON', - 2: 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_CON', - 3: 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE', -} -TMDS_TRANSMITTER_HPD_NOT_OVERRIDE_PLL_ENABLE = 0 -TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_DISCON = 1 -TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_CON = 2 -TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE = 3 -TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_IDSCKSELA' -TMDS_TRANSMITTER_CONTROL_IDSCKSELA__enumvalues = { - 0: 'TMDS_TRANSMITTER_IDSCKSELA_USE_IPIXCLK', - 1: 'TMDS_TRANSMITTER_IDSCKSELA_USE_IDCLK', -} -TMDS_TRANSMITTER_IDSCKSELA_USE_IPIXCLK = 0 -TMDS_TRANSMITTER_IDSCKSELA_USE_IDCLK = 1 -TMDS_TRANSMITTER_CONTROL_IDSCKSELA = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_IDSCKSELB' -TMDS_TRANSMITTER_CONTROL_IDSCKSELB__enumvalues = { - 0: 'TMDS_TRANSMITTER_IDSCKSELB_USE_IPIXCLK', - 1: 'TMDS_TRANSMITTER_IDSCKSELB_USE_IDCLK', -} -TMDS_TRANSMITTER_IDSCKSELB_USE_IPIXCLK = 0 -TMDS_TRANSMITTER_IDSCKSELB_USE_IDCLK = 1 -TMDS_TRANSMITTER_CONTROL_IDSCKSELB = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN' -TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN__enumvalues = { - 0: 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_DISABLE', - 1: 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_ENABLE', -} -TMDS_TRANSMITTER_PLL_PWRUP_SEQ_DISABLE = 0 -TMDS_TRANSMITTER_PLL_PWRUP_SEQ_ENABLE = 1 -TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK' -TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_PLL_NOT_RST_ON_HPD', - 1: 'TMDS_TRANSMITTER_PLL_RST_ON_HPD', -} -TMDS_TRANSMITTER_PLL_NOT_RST_ON_HPD = 0 -TMDS_TRANSMITTER_PLL_RST_ON_HPD = 1 -TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS' -TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS__enumvalues = { - 0: 'TMDS_TRANSMITTER_TMCLK_FROM_TMDS_TMCLK', - 1: 'TMDS_TRANSMITTER_TMCLK_FROM_PADS', -} -TMDS_TRANSMITTER_TMCLK_FROM_TMDS_TMCLK = 0 -TMDS_TRANSMITTER_TMCLK_FROM_PADS = 1 -TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS' -TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS__enumvalues = { - 0: 'TMDS_TRANSMITTER_TDCLK_FROM_TMDS_TDCLK', - 1: 'TMDS_TRANSMITTER_TDCLK_FROM_PADS', -} -TMDS_TRANSMITTER_TDCLK_FROM_TMDS_TDCLK = 0 -TMDS_TRANSMITTER_TDCLK_FROM_PADS = 1 -TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN' -TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN__enumvalues = { - 0: 'TMDS_TRANSMITTER_PLLSEL_BY_HW', - 1: 'TMDS_TRANSMITTER_PLLSEL_OVERWRITE_BY_SW', -} -TMDS_TRANSMITTER_PLLSEL_BY_HW = 0 -TMDS_TRANSMITTER_PLLSEL_OVERWRITE_BY_SW = 1 -TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA' -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA__enumvalues = { - 0: 'TMDS_TRANSMITTER_BYPASS_PLLA_COHERENT', - 1: 'TMDS_TRANSMITTER_BYPASS_PLLA_INCOHERENT', -} -TMDS_TRANSMITTER_BYPASS_PLLA_COHERENT = 0 -TMDS_TRANSMITTER_BYPASS_PLLA_INCOHERENT = 1 -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB' -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB__enumvalues = { - 0: 'TMDS_TRANSMITTER_BYPASS_PLLB_COHERENT', - 1: 'TMDS_TRANSMITTER_BYPASS_PLLB_INCOHERENT', -} -TMDS_TRANSMITTER_BYPASS_PLLB_COHERENT = 0 -TMDS_TRANSMITTER_BYPASS_PLLB_INCOHERENT = 1 -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_REG_TEST_OUTPUTA_CNTLA' -TMDS_REG_TEST_OUTPUTA_CNTLA__enumvalues = { - 0: 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA0', - 1: 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA1', - 2: 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA2', - 3: 'TMDS_REG_TEST_OUTPUTA_CNTLA_NA', -} -TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA0 = 0 -TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA1 = 1 -TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA2 = 2 -TMDS_REG_TEST_OUTPUTA_CNTLA_NA = 3 -TMDS_REG_TEST_OUTPUTA_CNTLA = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_REG_TEST_OUTPUTB_CNTLB' -TMDS_REG_TEST_OUTPUTB_CNTLB__enumvalues = { - 0: 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB0', - 1: 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB1', - 2: 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB2', - 3: 'TMDS_REG_TEST_OUTPUTB_CNTLB_NA', -} -TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB0 = 0 -TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB1 = 1 -TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB2 = 2 -TMDS_REG_TEST_OUTPUTB_CNTLB_NA = 3 -TMDS_REG_TEST_OUTPUTB_CNTLB = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_VBI_GSP_INDEX' -AFMT_VBI_GSP_INDEX__enumvalues = { - 0: 'AFMT_VBI_GSP0_INDEX', - 1: 'AFMT_VBI_GSP1_INDEX', - 2: 'AFMT_VBI_GSP2_INDEX', - 3: 'AFMT_VBI_GSP3_INDEX', - 4: 'AFMT_VBI_GSP4_INDEX', - 5: 'AFMT_VBI_GSP5_INDEX', - 6: 'AFMT_VBI_GSP6_INDEX', - 7: 'AFMT_VBI_GSP7_INDEX', - 8: 'AFMT_VBI_GSP8_INDEX', - 9: 'AFMT_VBI_GSP9_INDEX', - 10: 'AFMT_VBI_GSP10_INDEX', -} -AFMT_VBI_GSP0_INDEX = 0 -AFMT_VBI_GSP1_INDEX = 1 -AFMT_VBI_GSP2_INDEX = 2 -AFMT_VBI_GSP3_INDEX = 3 -AFMT_VBI_GSP4_INDEX = 4 -AFMT_VBI_GSP5_INDEX = 5 -AFMT_VBI_GSP6_INDEX = 6 -AFMT_VBI_GSP7_INDEX = 7 -AFMT_VBI_GSP8_INDEX = 8 -AFMT_VBI_GSP9_INDEX = 9 -AFMT_VBI_GSP10_INDEX = 10 -AFMT_VBI_GSP_INDEX = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_DIGITAL_BYPASS_SEL' -DIG_DIGITAL_BYPASS_SEL__enumvalues = { - 0: 'DIG_DIGITAL_BYPASS_SEL_BYPASS', - 1: 'DIG_DIGITAL_BYPASS_SEL_36BPP', - 2: 'DIG_DIGITAL_BYPASS_SEL_48BPP_LSB', - 3: 'DIG_DIGITAL_BYPASS_SEL_48BPP_MSB', - 4: 'DIG_DIGITAL_BYPASS_SEL_10BPP_LSB', - 5: 'DIG_DIGITAL_BYPASS_SEL_12BPC_LSB', - 6: 'DIG_DIGITAL_BYPASS_SEL_ALPHA', -} -DIG_DIGITAL_BYPASS_SEL_BYPASS = 0 -DIG_DIGITAL_BYPASS_SEL_36BPP = 1 -DIG_DIGITAL_BYPASS_SEL_48BPP_LSB = 2 -DIG_DIGITAL_BYPASS_SEL_48BPP_MSB = 3 -DIG_DIGITAL_BYPASS_SEL_10BPP_LSB = 4 -DIG_DIGITAL_BYPASS_SEL_12BPC_LSB = 5 -DIG_DIGITAL_BYPASS_SEL_ALPHA = 6 -DIG_DIGITAL_BYPASS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_INPUT_PIXEL_SEL' -DIG_INPUT_PIXEL_SEL__enumvalues = { - 0: 'DIG_ALL_PIXEL', - 1: 'DIG_EVEN_PIXEL_ONLY', - 2: 'DIG_ODD_PIXEL_ONLY', -} -DIG_ALL_PIXEL = 0 -DIG_EVEN_PIXEL_ONLY = 1 -DIG_ODD_PIXEL_ONLY = 2 -DIG_INPUT_PIXEL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DOLBY_VISION_ENABLE' -DOLBY_VISION_ENABLE__enumvalues = { - 0: 'DOLBY_VISION_ENABLED', - 1: 'DOLBY_VISION_DISABLED', -} -DOLBY_VISION_ENABLED = 0 -DOLBY_VISION_DISABLED = 1 -DOLBY_VISION_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'METADATA_HUBP_SEL' -METADATA_HUBP_SEL__enumvalues = { - 0: 'METADATA_HUBP_SEL_0', - 1: 'METADATA_HUBP_SEL_1', - 2: 'METADATA_HUBP_SEL_2', - 3: 'METADATA_HUBP_SEL_3', - 4: 'METADATA_HUBP_SEL_4', - 5: 'METADATA_HUBP_SEL_5', - 6: 'METADATA_HUBP_SEL_RESERVED', -} -METADATA_HUBP_SEL_0 = 0 -METADATA_HUBP_SEL_1 = 1 -METADATA_HUBP_SEL_2 = 2 -METADATA_HUBP_SEL_3 = 3 -METADATA_HUBP_SEL_4 = 4 -METADATA_HUBP_SEL_5 = 5 -METADATA_HUBP_SEL_RESERVED = 6 -METADATA_HUBP_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'METADATA_STREAM_TYPE_SEL' -METADATA_STREAM_TYPE_SEL__enumvalues = { - 0: 'METADATA_STREAM_DP', - 1: 'METADATA_STREAM_DVE', -} -METADATA_STREAM_DP = 0 -METADATA_STREAM_DVE = 1 -METADATA_STREAM_TYPE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_METADATA_ENABLE' -HDMI_METADATA_ENABLE__enumvalues = { - 0: 'HDMI_METADATA_NOT_SEND', - 1: 'HDMI_METADATA_PKT_SEND', -} -HDMI_METADATA_NOT_SEND = 0 -HDMI_METADATA_PKT_SEND = 1 -HDMI_METADATA_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_PACKET_LINE_REFERENCE' -HDMI_PACKET_LINE_REFERENCE__enumvalues = { - 0: 'HDMI_PKT_LINE_REF_VSYNC', - 1: 'HDMI_PKT_LINE_REF_OTGSOF', -} -HDMI_PKT_LINE_REF_VSYNC = 0 -HDMI_PKT_LINE_REF_OTGSOF = 1 -HDMI_PACKET_LINE_REFERENCE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_CONTROL_HPD_SEL' -DP_AUX_CONTROL_HPD_SEL__enumvalues = { - 0: 'DP_AUX_CONTROL_HPD1_SELECTED', - 1: 'DP_AUX_CONTROL_HPD2_SELECTED', - 2: 'DP_AUX_CONTROL_HPD3_SELECTED', - 3: 'DP_AUX_CONTROL_HPD4_SELECTED', - 4: 'DP_AUX_CONTROL_HPD5_SELECTED', - 5: 'DP_AUX_CONTROL_HPD6_SELECTED', - 6: 'DP_AUX_CONTROL_NO_HPD_SELECTED', -} -DP_AUX_CONTROL_HPD1_SELECTED = 0 -DP_AUX_CONTROL_HPD2_SELECTED = 1 -DP_AUX_CONTROL_HPD3_SELECTED = 2 -DP_AUX_CONTROL_HPD4_SELECTED = 3 -DP_AUX_CONTROL_HPD5_SELECTED = 4 -DP_AUX_CONTROL_HPD6_SELECTED = 5 -DP_AUX_CONTROL_NO_HPD_SELECTED = 6 -DP_AUX_CONTROL_HPD_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_CONTROL_TEST_MODE' -DP_AUX_CONTROL_TEST_MODE__enumvalues = { - 0: 'DP_AUX_CONTROL_TEST_MODE_DISABLE', - 1: 'DP_AUX_CONTROL_TEST_MODE_ENABLE', -} -DP_AUX_CONTROL_TEST_MODE_DISABLE = 0 -DP_AUX_CONTROL_TEST_MODE_ENABLE = 1 -DP_AUX_CONTROL_TEST_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_SW_CONTROL_SW_GO' -DP_AUX_SW_CONTROL_SW_GO__enumvalues = { - 0: 'DP_AUX_SW_CONTROL_SW__NOT_GO', - 1: 'DP_AUX_SW_CONTROL_SW__GO', -} -DP_AUX_SW_CONTROL_SW__NOT_GO = 0 -DP_AUX_SW_CONTROL_SW__GO = 1 -DP_AUX_SW_CONTROL_SW_GO = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_SW_CONTROL_LS_READ_TRIG' -DP_AUX_SW_CONTROL_LS_READ_TRIG__enumvalues = { - 0: 'DP_AUX_SW_CONTROL_LS_READ__NOT_TRIG', - 1: 'DP_AUX_SW_CONTROL_LS_READ__TRIG', -} -DP_AUX_SW_CONTROL_LS_READ__NOT_TRIG = 0 -DP_AUX_SW_CONTROL_LS_READ__TRIG = 1 -DP_AUX_SW_CONTROL_LS_READ_TRIG = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ARB_CONTROL_ARB_PRIORITY' -DP_AUX_ARB_CONTROL_ARB_PRIORITY__enumvalues = { - 0: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__GTC_LS_SW', - 1: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__LS_GTC_SW', - 2: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_LS_GTC', - 3: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_GTC_LS', -} -DP_AUX_ARB_CONTROL_ARB_PRIORITY__GTC_LS_SW = 0 -DP_AUX_ARB_CONTROL_ARB_PRIORITY__LS_GTC_SW = 1 -DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_LS_GTC = 2 -DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_GTC_LS = 3 -DP_AUX_ARB_CONTROL_ARB_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ' -DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ__enumvalues = { - 0: 'DP_AUX_ARB_CONTROL__NOT_USE_AUX_REG_REQ', - 1: 'DP_AUX_ARB_CONTROL__USE_AUX_REG_REQ', -} -DP_AUX_ARB_CONTROL__NOT_USE_AUX_REG_REQ = 0 -DP_AUX_ARB_CONTROL__USE_AUX_REG_REQ = 1 -DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG' -DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG__enumvalues = { - 0: 'DP_AUX_ARB_CONTROL__DONE_NOT_USING_AUX_REG', - 1: 'DP_AUX_ARB_CONTROL__DONE_USING_AUX_REG', -} -DP_AUX_ARB_CONTROL__DONE_NOT_USING_AUX_REG = 0 -DP_AUX_ARB_CONTROL__DONE_USING_AUX_REG = 1 -DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_INT_ACK' -DP_AUX_INT_ACK__enumvalues = { - 0: 'DP_AUX_INT__NOT_ACK', - 1: 'DP_AUX_INT__ACK', -} -DP_AUX_INT__NOT_ACK = 0 -DP_AUX_INT__ACK = 1 -DP_AUX_INT_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_LS_UPDATE_ACK' -DP_AUX_LS_UPDATE_ACK__enumvalues = { - 0: 'DP_AUX_INT_LS_UPDATE_NOT_ACK', - 1: 'DP_AUX_INT_LS_UPDATE_ACK', -} -DP_AUX_INT_LS_UPDATE_NOT_ACK = 0 -DP_AUX_INT_LS_UPDATE_ACK = 1 -DP_AUX_LS_UPDATE_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL' -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__enumvalues = { - 0: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__DIVIDED_SYM_CLK', - 1: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__FROM_DCCG_MICROSECOND_REF', -} -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__DIVIDED_SYM_CLK = 0 -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__FROM_DCCG_MICROSECOND_REF = 1 -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE' -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__enumvalues = { - 0: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__1MHZ', - 1: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__2MHZ', - 2: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__4MHZ', - 3: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__8MHZ', -} -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__1MHZ = 0 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__2MHZ = 1 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__4MHZ = 2 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__8MHZ = 3 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY' -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__enumvalues = { - 0: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__0', - 1: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__16US', - 2: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__32US', - 3: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__64US', - 4: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__128US', - 5: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__256US', -} -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__0 = 0 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__16US = 1 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__32US = 2 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__64US = 3 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__128US = 4 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__256US = 5 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW' -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO2_PERIOD', - 1: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO4_PERIOD', - 2: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO8_PERIOD', - 3: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO16_PERIOD', - 4: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO32_PERIOD', - 5: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO64_PERIOD', - 6: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO128_PERIOD', - 7: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO256_PERIOD', -} -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO2_PERIOD = 0 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO4_PERIOD = 1 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO8_PERIOD = 2 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO16_PERIOD = 3 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO32_PERIOD = 4 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO64_PERIOD = 5 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO128_PERIOD = 6 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO256_PERIOD = 7 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW' -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO2_PERIOD', - 1: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO4_PERIOD', - 2: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO8_PERIOD', - 3: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO16_PERIOD', - 4: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO32_PERIOD', - 5: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO64_PERIOD', - 6: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO128_PERIOD', - 7: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO256_PERIOD', -} -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO2_PERIOD = 0 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO4_PERIOD = 1 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO8_PERIOD = 2 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO16_PERIOD = 3 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO32_PERIOD = 4 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO64_PERIOD = 5 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO128_PERIOD = 6 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO256_PERIOD = 7 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN' -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__6_EDGES', - 1: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__10_EDGES', - 2: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__18_EDGES', - 3: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__RESERVED', -} -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__6_EDGES = 0 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__10_EDGES = 1 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__18_EDGES = 2 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__RESERVED = 3 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT' -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 1: 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_PHASE_DETECT', -} -DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_PHASE_DETECT = 0 -DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_PHASE_DETECT = 1 -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START' -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_START', - 1: 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_START', -} -DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_START = 0 -DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_START = 1 -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP' -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_STOP', - 1: 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_STOP', -} -DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_STOP = 0 -DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_STOP = 1 -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN' -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__2_HALF_SYMBOLS', - 1: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__4_HALF_SYMBOLS', - 2: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__6_HALF_SYMBOLS', - 3: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__8_HALF_SYMBOLS', -} -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__2_HALF_SYMBOLS = 0 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__4_HALF_SYMBOLS = 1 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__6_HALF_SYMBOLS = 2 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__8_HALF_SYMBOLS = 3 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_RX_TIMEOUT_LEN_MUL' -DP_AUX_RX_TIMEOUT_LEN_MUL__enumvalues = { - 0: 'DP_AUX_RX_TIMEOUT_LEN_NO_MUL', - 1: 'DP_AUX_RX_TIMEOUT_LEN_MUL_2', - 2: 'DP_AUX_RX_TIMEOUT_LEN_MUL_4', - 3: 'DP_AUX_RX_TIMEOUT_LEN_MUL_8', -} -DP_AUX_RX_TIMEOUT_LEN_NO_MUL = 0 -DP_AUX_RX_TIMEOUT_LEN_MUL_2 = 1 -DP_AUX_RX_TIMEOUT_LEN_MUL_4 = 2 -DP_AUX_RX_TIMEOUT_LEN_MUL_8 = 3 -DP_AUX_RX_TIMEOUT_LEN_MUL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_TX_PRECHARGE_LEN_MUL' -DP_AUX_TX_PRECHARGE_LEN_MUL__enumvalues = { - 0: 'DP_AUX_TX_PRECHARGE_LEN_NO_MUL', - 1: 'DP_AUX_TX_PRECHARGE_LEN_MUL_2', - 2: 'DP_AUX_TX_PRECHARGE_LEN_MUL_4', - 3: 'DP_AUX_TX_PRECHARGE_LEN_MUL_8', -} -DP_AUX_TX_PRECHARGE_LEN_NO_MUL = 0 -DP_AUX_TX_PRECHARGE_LEN_MUL_2 = 1 -DP_AUX_TX_PRECHARGE_LEN_MUL_4 = 2 -DP_AUX_TX_PRECHARGE_LEN_MUL_8 = 3 -DP_AUX_TX_PRECHARGE_LEN_MUL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD' -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__enumvalues = { - 0: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__1to2', - 1: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__3to4', - 2: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__7to8', - 3: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__15to16', - 4: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__31to32', - 5: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__63to64', - 6: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__127to128', - 7: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__255to256', -} -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__1to2 = 0 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__3to4 = 1 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__7to8 = 2 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__15to16 = 3 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__31to32 = 4 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__63to64 = 5 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__127to128 = 6 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__255to256 = 7 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ' -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_ALLOW_REQ_FROM_OTHER_AUX', - 1: 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ_FROM_OTHER_AUX', -} -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_ALLOW_REQ_FROM_OTHER_AUX = 0 -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ_FROM_OTHER_AUX = 1 -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW' -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__300US', - 1: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__400US', - 2: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__500US', - 3: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__600US', -} -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__300US = 0 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__400US = 1 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__500US = 2 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__600US = 3 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT' -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__4_ATTAMPS', - 1: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__8_ATTAMPS', - 2: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__16_ATTAMPS', - 3: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__RESERVED', -} -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__4_ATTAMPS = 0 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__8_ATTAMPS = 1 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__16_ATTAMPS = 2 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__RESERVED = 3 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN' -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__0', - 1: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__64', - 2: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__128', - 3: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__256', -} -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__0 = 0 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__64 = 1 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__128 = 2 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__256 = 3 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ERR_OCCURRED_ACK' -DP_AUX_ERR_OCCURRED_ACK__enumvalues = { - 0: 'DP_AUX_ERR_OCCURRED__NOT_ACK', - 1: 'DP_AUX_ERR_OCCURRED__ACK', -} -DP_AUX_ERR_OCCURRED__NOT_ACK = 0 -DP_AUX_ERR_OCCURRED__ACK = 1 -DP_AUX_ERR_OCCURRED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_POTENTIAL_ERR_REACHED_ACK' -DP_AUX_POTENTIAL_ERR_REACHED_ACK__enumvalues = { - 0: 'DP_AUX_POTENTIAL_ERR_REACHED__NOT_ACK', - 1: 'DP_AUX_POTENTIAL_ERR_REACHED__ACK', -} -DP_AUX_POTENTIAL_ERR_REACHED__NOT_ACK = 0 -DP_AUX_POTENTIAL_ERR_REACHED__ACK = 1 -DP_AUX_POTENTIAL_ERR_REACHED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DEFINITE_ERR_REACHED_ACK' -DP_AUX_DEFINITE_ERR_REACHED_ACK__enumvalues = { - 0: 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_NOT_ACK', - 1: 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_ACK', -} -ALPHA_DP_AUX_DEFINITE_ERR_REACHED_NOT_ACK = 0 -ALPHA_DP_AUX_DEFINITE_ERR_REACHED_ACK = 1 -DP_AUX_DEFINITE_ERR_REACHED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_RESET' -DP_AUX_RESET__enumvalues = { - 0: 'DP_AUX_RESET_DEASSERTED', - 1: 'DP_AUX_RESET_ASSERTED', -} -DP_AUX_RESET_DEASSERTED = 0 -DP_AUX_RESET_ASSERTED = 1 -DP_AUX_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_RESET_DONE' -DP_AUX_RESET_DONE__enumvalues = { - 0: 'DP_AUX_RESET_SEQUENCE_NOT_DONE', - 1: 'DP_AUX_RESET_SEQUENCE_DONE', -} -DP_AUX_RESET_SEQUENCE_NOT_DONE = 0 -DP_AUX_RESET_SEQUENCE_DONE = 1 -DP_AUX_RESET_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_PHY_WAKE_PRIORITY' -DP_AUX_PHY_WAKE_PRIORITY__enumvalues = { - 0: 'DP_AUX_PHY_WAKE_HIGH_PRIORITY', - 1: 'DP_AUX_PHY_WAKE_LOW_PRIORITY', -} -DP_AUX_PHY_WAKE_HIGH_PRIORITY = 0 -DP_AUX_PHY_WAKE_LOW_PRIORITY = 1 -DP_AUX_PHY_WAKE_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_GO' -DOUT_I2C_CONTROL_GO__enumvalues = { - 0: 'DOUT_I2C_CONTROL_STOP_TRANSFER', - 1: 'DOUT_I2C_CONTROL_START_TRANSFER', -} -DOUT_I2C_CONTROL_STOP_TRANSFER = 0 -DOUT_I2C_CONTROL_START_TRANSFER = 1 -DOUT_I2C_CONTROL_GO = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_SOFT_RESET' -DOUT_I2C_CONTROL_SOFT_RESET__enumvalues = { - 0: 'DOUT_I2C_CONTROL_NOT_RESET_I2C_CONTROLLER', - 1: 'DOUT_I2C_CONTROL_RESET_I2C_CONTROLLER', -} -DOUT_I2C_CONTROL_NOT_RESET_I2C_CONTROLLER = 0 -DOUT_I2C_CONTROL_RESET_I2C_CONTROLLER = 1 -DOUT_I2C_CONTROL_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_SEND_RESET' -DOUT_I2C_CONTROL_SEND_RESET__enumvalues = { - 0: 'DOUT_I2C_CONTROL__NOT_SEND_RESET', - 1: 'DOUT_I2C_CONTROL__SEND_RESET', -} -DOUT_I2C_CONTROL__NOT_SEND_RESET = 0 -DOUT_I2C_CONTROL__SEND_RESET = 1 -DOUT_I2C_CONTROL_SEND_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_SEND_RESET_LENGTH' -DOUT_I2C_CONTROL_SEND_RESET_LENGTH__enumvalues = { - 0: 'DOUT_I2C_CONTROL__SEND_RESET_LENGTH_9', - 1: 'DOUT_I2C_CONTROL__SEND_RESET_LENGTH_10', -} -DOUT_I2C_CONTROL__SEND_RESET_LENGTH_9 = 0 -DOUT_I2C_CONTROL__SEND_RESET_LENGTH_10 = 1 -DOUT_I2C_CONTROL_SEND_RESET_LENGTH = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_SW_STATUS_RESET' -DOUT_I2C_CONTROL_SW_STATUS_RESET__enumvalues = { - 0: 'DOUT_I2C_CONTROL_NOT_RESET_SW_STATUS', - 1: 'DOUT_I2C_CONTROL_RESET_SW_STATUS', -} -DOUT_I2C_CONTROL_NOT_RESET_SW_STATUS = 0 -DOUT_I2C_CONTROL_RESET_SW_STATUS = 1 -DOUT_I2C_CONTROL_SW_STATUS_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_DDC_SELECT' -DOUT_I2C_CONTROL_DDC_SELECT__enumvalues = { - 0: 'DOUT_I2C_CONTROL_SELECT_DDC1', - 1: 'DOUT_I2C_CONTROL_SELECT_DDC2', - 2: 'DOUT_I2C_CONTROL_SELECT_DDC3', - 3: 'DOUT_I2C_CONTROL_SELECT_DDC4', - 4: 'DOUT_I2C_CONTROL_SELECT_DDC5', - 5: 'DOUT_I2C_CONTROL_SELECT_DDC6', - 6: 'DOUT_I2C_CONTROL_SELECT_DDCVGA', -} -DOUT_I2C_CONTROL_SELECT_DDC1 = 0 -DOUT_I2C_CONTROL_SELECT_DDC2 = 1 -DOUT_I2C_CONTROL_SELECT_DDC3 = 2 -DOUT_I2C_CONTROL_SELECT_DDC4 = 3 -DOUT_I2C_CONTROL_SELECT_DDC5 = 4 -DOUT_I2C_CONTROL_SELECT_DDC6 = 5 -DOUT_I2C_CONTROL_SELECT_DDCVGA = 6 -DOUT_I2C_CONTROL_DDC_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_TRANSACTION_COUNT' -DOUT_I2C_CONTROL_TRANSACTION_COUNT__enumvalues = { - 0: 'DOUT_I2C_CONTROL_TRANS0', - 1: 'DOUT_I2C_CONTROL_TRANS0_TRANS1', - 2: 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2', - 3: 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2_TRANS3', -} -DOUT_I2C_CONTROL_TRANS0 = 0 -DOUT_I2C_CONTROL_TRANS0_TRANS1 = 1 -DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2 = 2 -DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2_TRANS3 = 3 -DOUT_I2C_CONTROL_TRANSACTION_COUNT = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_SW_PRIORITY' -DOUT_I2C_ARBITRATION_SW_PRIORITY__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_NORMAL', - 1: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_HIGH', - 2: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_0_RESERVED', - 3: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_1_RESERVED', -} -DOUT_I2C_ARBITRATION_SW_PRIORITY_NORMAL = 0 -DOUT_I2C_ARBITRATION_SW_PRIORITY_HIGH = 1 -DOUT_I2C_ARBITRATION_SW_PRIORITY_0_RESERVED = 2 -DOUT_I2C_ARBITRATION_SW_PRIORITY_1_RESERVED = 3 -DOUT_I2C_ARBITRATION_SW_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO' -DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_SW_QUEUE_ENABLED', - 1: 'DOUT_I2C_ARBITRATION_SW_QUEUE_DISABLED', -} -DOUT_I2C_ARBITRATION_SW_QUEUE_ENABLED = 0 -DOUT_I2C_ARBITRATION_SW_QUEUE_DISABLED = 1 -DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_ABORT_XFER' -DOUT_I2C_ARBITRATION_ABORT_XFER__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_NOT_ABORT_CURRENT_TRANSFER', - 1: 'DOUT_I2C_ARBITRATION_ABORT_CURRENT_TRANSFER', -} -DOUT_I2C_ARBITRATION_NOT_ABORT_CURRENT_TRANSFER = 0 -DOUT_I2C_ARBITRATION_ABORT_CURRENT_TRANSFER = 1 -DOUT_I2C_ARBITRATION_ABORT_XFER = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ' -DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION__NOT_USE_I2C_REG_REQ', - 1: 'DOUT_I2C_ARBITRATION__USE_I2C_REG_REQ', -} -DOUT_I2C_ARBITRATION__NOT_USE_I2C_REG_REQ = 0 -DOUT_I2C_ARBITRATION__USE_I2C_REG_REQ = 1 -DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG' -DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_DONE__NOT_USING_I2C_REG', - 1: 'DOUT_I2C_ARBITRATION_DONE__USING_I2C_REG', -} -DOUT_I2C_ARBITRATION_DONE__NOT_USING_I2C_REG = 0 -DOUT_I2C_ARBITRATION_DONE__USING_I2C_REG = 1 -DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ACK' -DOUT_I2C_ACK__enumvalues = { - 0: 'DOUT_I2C_NO_ACK', - 1: 'DOUT_I2C_ACK_TO_CLEAN', -} -DOUT_I2C_NO_ACK = 0 -DOUT_I2C_ACK_TO_CLEAN = 1 -DOUT_I2C_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SPEED_THRESHOLD' -DOUT_I2C_DDC_SPEED_THRESHOLD__enumvalues = { - 0: 'DOUT_I2C_DDC_SPEED_THRESHOLD_BIG_THAN_ZERO', - 1: 'DOUT_I2C_DDC_SPEED_THRESHOLD_QUATER_OF_TOTAL_SAMPLE', - 2: 'DOUT_I2C_DDC_SPEED_THRESHOLD_HALF_OF_TOTAL_SAMPLE', - 3: 'DOUT_I2C_DDC_SPEED_THRESHOLD_THREE_QUATERS_OF_TOTAL_SAMPLE', -} -DOUT_I2C_DDC_SPEED_THRESHOLD_BIG_THAN_ZERO = 0 -DOUT_I2C_DDC_SPEED_THRESHOLD_QUATER_OF_TOTAL_SAMPLE = 1 -DOUT_I2C_DDC_SPEED_THRESHOLD_HALF_OF_TOTAL_SAMPLE = 2 -DOUT_I2C_DDC_SPEED_THRESHOLD_THREE_QUATERS_OF_TOTAL_SAMPLE = 3 -DOUT_I2C_DDC_SPEED_THRESHOLD = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN' -DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_BY_EXTERNAL_RESISTOR', - 1: 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SDA', -} -DOUT_I2C_DDC_SETUP_DATA_DRIVE_BY_EXTERNAL_RESISTOR = 0 -DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SDA = 1 -DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL' -DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_10MCLKS', - 1: 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_20MCLKS', -} -DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_10MCLKS = 0 -DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_20MCLKS = 1 -DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE' -DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_EDID_DETECT_CONNECT', - 1: 'DOUT_I2C_DDC_SETUP_EDID_DETECT_DISCONNECT', -} -DOUT_I2C_DDC_SETUP_EDID_DETECT_CONNECT = 0 -DOUT_I2C_DDC_SETUP_EDID_DETECT_DISCONNECT = 1 -DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_EDID_DETECT_STATUS' -DOUT_I2C_DDC_EDID_DETECT_STATUS__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_EDID_CONNECT_DETECTED', - 1: 'DOUT_I2C_DDC_SETUP_EDID_DISCONNECT_DETECTED', -} -DOUT_I2C_DDC_SETUP_EDID_CONNECT_DETECTED = 0 -DOUT_I2C_DDC_SETUP_EDID_DISCONNECT_DETECTED = 1 -DOUT_I2C_DDC_EDID_DETECT_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN' -DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_BY_EXTERNAL_RESISTOR', - 1: 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SCL', -} -DOUT_I2C_DDC_SETUP_CLK_DRIVE_BY_EXTERNAL_RESISTOR = 0 -DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SCL = 1 -DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_TRANSACTION_STOP_ON_NACK' -DOUT_I2C_TRANSACTION_STOP_ON_NACK__enumvalues = { - 0: 'DOUT_I2C_TRANSACTION_STOP_CURRENT_TRANS', - 1: 'DOUT_I2C_TRANSACTION_STOP_ALL_TRANS', -} -DOUT_I2C_TRANSACTION_STOP_CURRENT_TRANS = 0 -DOUT_I2C_TRANSACTION_STOP_ALL_TRANS = 1 -DOUT_I2C_TRANSACTION_STOP_ON_NACK = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DATA_INDEX_WRITE' -DOUT_I2C_DATA_INDEX_WRITE__enumvalues = { - 0: 'DOUT_I2C_DATA__NOT_INDEX_WRITE', - 1: 'DOUT_I2C_DATA__INDEX_WRITE', -} -DOUT_I2C_DATA__NOT_INDEX_WRITE = 0 -DOUT_I2C_DATA__INDEX_WRITE = 1 -DOUT_I2C_DATA_INDEX_WRITE = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET' -DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET__enumvalues = { - 0: 'DOUT_I2C_EDID_NOT_SEND_RESET_BEFORE_EDID_READ_TRACTION', - 1: 'DOUT_I2C_EDID_SEND_RESET_BEFORE_EDID_READ_TRACTION', -} -DOUT_I2C_EDID_NOT_SEND_RESET_BEFORE_EDID_READ_TRACTION = 0 -DOUT_I2C_EDID_SEND_RESET_BEFORE_EDID_READ_TRACTION = 1 -DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE' -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__enumvalues = { - 0: 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__LEVEL', - 1: 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__PULSE', -} -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__LEVEL = 0 -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__PULSE = 1 -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_FORCE_CTRL' -DIOMEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'DIOMEM_NO_FORCE_REQUEST', - 1: 'DIOMEM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'DIOMEM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'DIOMEM_FORCE_SHUT_DOWN_REQUEST', -} -DIOMEM_NO_FORCE_REQUEST = 0 -DIOMEM_FORCE_LIGHT_SLEEP_REQUEST = 1 -DIOMEM_FORCE_DEEP_SLEEP_REQUEST = 2 -DIOMEM_FORCE_SHUT_DOWN_REQUEST = 3 -DIOMEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_FORCE_CTRL2' -DIOMEM_PWR_FORCE_CTRL2__enumvalues = { - 0: 'DIOMEM_NO_FORCE_REQ', - 1: 'DIOMEM_FORCE_LIGHT_SLEEP_REQ', -} -DIOMEM_NO_FORCE_REQ = 0 -DIOMEM_FORCE_LIGHT_SLEEP_REQ = 1 -DIOMEM_PWR_FORCE_CTRL2 = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_DIS_CTRL' -DIOMEM_PWR_DIS_CTRL__enumvalues = { - 0: 'DIOMEM_ENABLE_MEM_PWR_CTRL', - 1: 'DIOMEM_DISABLE_MEM_PWR_CTRL', -} -DIOMEM_ENABLE_MEM_PWR_CTRL = 0 -DIOMEM_DISABLE_MEM_PWR_CTRL = 1 -DIOMEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'CLOCK_GATING_EN' -CLOCK_GATING_EN__enumvalues = { - 0: 'CLOCK_GATING_ENABLE', - 1: 'CLOCK_GATING_DISABLE', -} -CLOCK_GATING_ENABLE = 0 -CLOCK_GATING_DISABLE = 1 -CLOCK_GATING_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_SEL_CTRL' -DIOMEM_PWR_SEL_CTRL__enumvalues = { - 0: 'DIOMEM_DYNAMIC_SHUT_DOWN_ENABLE', - 1: 'DIOMEM_DYNAMIC_DEEP_SLEEP_ENABLE', - 2: 'DIOMEM_DYNAMIC_LIGHT_SLEEP_ENABLE', -} -DIOMEM_DYNAMIC_SHUT_DOWN_ENABLE = 0 -DIOMEM_DYNAMIC_DEEP_SLEEP_ENABLE = 1 -DIOMEM_DYNAMIC_LIGHT_SLEEP_ENABLE = 2 -DIOMEM_PWR_SEL_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_SEL_CTRL2' -DIOMEM_PWR_SEL_CTRL2__enumvalues = { - 0: 'DIOMEM_DYNAMIC_DEEP_SLEEP_EN', - 1: 'DIOMEM_DYNAMIC_LIGHT_SLEEP_EN', -} -DIOMEM_DYNAMIC_DEEP_SLEEP_EN = 0 -DIOMEM_DYNAMIC_LIGHT_SLEEP_EN = 1 -DIOMEM_PWR_SEL_CTRL2 = ctypes.c_uint32 # enum - -# values for enumeration 'PM_ASSERT_RESET' -PM_ASSERT_RESET__enumvalues = { - 0: 'PM_ASSERT_RESET_0', - 1: 'PM_ASSERT_RESET_1', -} -PM_ASSERT_RESET_0 = 0 -PM_ASSERT_RESET_1 = 1 -PM_ASSERT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DAC_MUX_SELECT' -DAC_MUX_SELECT__enumvalues = { - 0: 'DAC_MUX_SELECT_DACA', - 1: 'DAC_MUX_SELECT_DACB', -} -DAC_MUX_SELECT_DACA = 0 -DAC_MUX_SELECT_DACB = 1 -DAC_MUX_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_MUX_SELECT' -TMDS_MUX_SELECT__enumvalues = { - 0: 'TMDS_MUX_SELECT_B', - 1: 'TMDS_MUX_SELECT_G', - 2: 'TMDS_MUX_SELECT_R', - 3: 'TMDS_MUX_SELECT_RESERVED', -} -TMDS_MUX_SELECT_B = 0 -TMDS_MUX_SELECT_G = 1 -TMDS_MUX_SELECT_R = 2 -TMDS_MUX_SELECT_RESERVED = 3 -TMDS_MUX_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'SOFT_RESET' -SOFT_RESET__enumvalues = { - 0: 'SOFT_RESET_0', - 1: 'SOFT_RESET_1', -} -SOFT_RESET_0 = 0 -SOFT_RESET_1 = 1 -SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_STEREOSYNC_SEL' -GENERIC_STEREOSYNC_SEL__enumvalues = { - 0: 'GENERIC_STEREOSYNC_SEL_D1', - 1: 'GENERIC_STEREOSYNC_SEL_D2', - 2: 'GENERIC_STEREOSYNC_SEL_D3', - 3: 'GENERIC_STEREOSYNC_SEL_D4', - 4: 'GENERIC_STEREOSYNC_SEL_D5', - 5: 'GENERIC_STEREOSYNC_SEL_D6', - 6: 'GENERIC_STEREOSYNC_SEL_RESERVED', -} -GENERIC_STEREOSYNC_SEL_D1 = 0 -GENERIC_STEREOSYNC_SEL_D2 = 1 -GENERIC_STEREOSYNC_SEL_D3 = 2 -GENERIC_STEREOSYNC_SEL_D4 = 3 -GENERIC_STEREOSYNC_SEL_D5 = 4 -GENERIC_STEREOSYNC_SEL_D6 = 5 -GENERIC_STEREOSYNC_SEL_RESERVED = 6 -GENERIC_STEREOSYNC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIO_HDMI_RXSTATUS_TIMER_CONTROL_DIO_HDMI_RXSTATUS_TIMER_TYPE' -DIO_HDMI_RXSTATUS_TIMER_CONTROL_DIO_HDMI_RXSTATUS_TIMER_TYPE__enumvalues = { - 0: 'DIO_HDMI_RXSTATUS_TIMER_TYPE_LEVEL', - 1: 'DIO_HDMI_RXSTATUS_TIMER_TYPE_PULSE', -} -DIO_HDMI_RXSTATUS_TIMER_TYPE_LEVEL = 0 -DIO_HDMI_RXSTATUS_TIMER_TYPE_PULSE = 1 -DIO_HDMI_RXSTATUS_TIMER_CONTROL_DIO_HDMI_RXSTATUS_TIMER_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE' -DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE__enumvalues = { - 0: 'DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE_0', - 1: 'DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE_1', -} -DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE_0 = 0 -DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE_1 = 1 -DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERICA_SEL' -DCIO_DC_GENERICA_SEL__enumvalues = { - 0: 'DCIO_GENERICA_SEL_DACA_STEREOSYNC', - 1: 'DCIO_GENERICA_SEL_STEREOSYNC', - 2: 'DCIO_GENERICA_SEL_DACA_PIXCLK', - 3: 'DCIO_GENERICA_SEL_DACB_PIXCLK', - 4: 'DCIO_GENERICA_SEL_DVOA_CTL3', - 5: 'DCIO_GENERICA_SEL_P1_PLLCLK', - 6: 'DCIO_GENERICA_SEL_P2_PLLCLK', - 7: 'DCIO_GENERICA_SEL_DVOA_STEREOSYNC', - 8: 'DCIO_GENERICA_SEL_DACA_FIELD_NUMBER', - 9: 'DCIO_GENERICA_SEL_DACB_FIELD_NUMBER', - 10: 'DCIO_GENERICA_SEL_GENERICA_DCCG', - 11: 'DCIO_GENERICA_SEL_SYNCEN', - 12: 'DCIO_GENERICA_SEL_UNIPHY_REFDIV_CLK', - 13: 'DCIO_GENERICA_SEL_UNIPHY_FBDIV_CLK', - 14: 'DCIO_GENERICA_SEL_UNIPHY_FBDIV_SSC_CLK', - 15: 'DCIO_GENERICA_SEL_UNIPHY_FBDIV_CLK_DIV2', - 16: 'DCIO_GENERICA_SEL_GENERICA_DPRX', - 17: 'DCIO_GENERICA_SEL_GENERICB_DPRX', -} -DCIO_GENERICA_SEL_DACA_STEREOSYNC = 0 -DCIO_GENERICA_SEL_STEREOSYNC = 1 -DCIO_GENERICA_SEL_DACA_PIXCLK = 2 -DCIO_GENERICA_SEL_DACB_PIXCLK = 3 -DCIO_GENERICA_SEL_DVOA_CTL3 = 4 -DCIO_GENERICA_SEL_P1_PLLCLK = 5 -DCIO_GENERICA_SEL_P2_PLLCLK = 6 -DCIO_GENERICA_SEL_DVOA_STEREOSYNC = 7 -DCIO_GENERICA_SEL_DACA_FIELD_NUMBER = 8 -DCIO_GENERICA_SEL_DACB_FIELD_NUMBER = 9 -DCIO_GENERICA_SEL_GENERICA_DCCG = 10 -DCIO_GENERICA_SEL_SYNCEN = 11 -DCIO_GENERICA_SEL_UNIPHY_REFDIV_CLK = 12 -DCIO_GENERICA_SEL_UNIPHY_FBDIV_CLK = 13 -DCIO_GENERICA_SEL_UNIPHY_FBDIV_SSC_CLK = 14 -DCIO_GENERICA_SEL_UNIPHY_FBDIV_CLK_DIV2 = 15 -DCIO_GENERICA_SEL_GENERICA_DPRX = 16 -DCIO_GENERICA_SEL_GENERICB_DPRX = 17 -DCIO_DC_GENERICA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL' -DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_TEST_REFDIV_CLK', - 1: 'DCIO_UNIPHYB_TEST_REFDIV_CLK', - 2: 'DCIO_UNIPHYC_TEST_REFDIV_CLK', - 3: 'DCIO_UNIPHYD_TEST_REFDIV_CLK', - 4: 'DCIO_UNIPHYE_TEST_REFDIV_CLK', - 5: 'DCIO_UNIPHYF_TEST_REFDIV_CLK', - 6: 'DCIO_UNIPHYG_TEST_REFDIV_CLK', -} -DCIO_UNIPHYA_TEST_REFDIV_CLK = 0 -DCIO_UNIPHYB_TEST_REFDIV_CLK = 1 -DCIO_UNIPHYC_TEST_REFDIV_CLK = 2 -DCIO_UNIPHYD_TEST_REFDIV_CLK = 3 -DCIO_UNIPHYE_TEST_REFDIV_CLK = 4 -DCIO_UNIPHYF_TEST_REFDIV_CLK = 5 -DCIO_UNIPHYG_TEST_REFDIV_CLK = 6 -DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL' -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_FBDIV_CLK', - 1: 'DCIO_UNIPHYB_FBDIV_CLK', - 2: 'DCIO_UNIPHYC_FBDIV_CLK', - 3: 'DCIO_UNIPHYD_FBDIV_CLK', - 4: 'DCIO_UNIPHYE_FBDIV_CLK', - 5: 'DCIO_UNIPHYF_FBDIV_CLK', - 6: 'DCIO_UNIPHYG_FBDIV_CLK', -} -DCIO_UNIPHYA_FBDIV_CLK = 0 -DCIO_UNIPHYB_FBDIV_CLK = 1 -DCIO_UNIPHYC_FBDIV_CLK = 2 -DCIO_UNIPHYD_FBDIV_CLK = 3 -DCIO_UNIPHYE_FBDIV_CLK = 4 -DCIO_UNIPHYF_FBDIV_CLK = 5 -DCIO_UNIPHYG_FBDIV_CLK = 6 -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL' -DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_FBDIV_SSC_CLK', - 1: 'DCIO_UNIPHYB_FBDIV_SSC_CLK', - 2: 'DCIO_UNIPHYC_FBDIV_SSC_CLK', - 3: 'DCIO_UNIPHYD_FBDIV_SSC_CLK', - 4: 'DCIO_UNIPHYE_FBDIV_SSC_CLK', - 5: 'DCIO_UNIPHYF_FBDIV_SSC_CLK', - 6: 'DCIO_UNIPHYG_FBDIV_SSC_CLK', -} -DCIO_UNIPHYA_FBDIV_SSC_CLK = 0 -DCIO_UNIPHYB_FBDIV_SSC_CLK = 1 -DCIO_UNIPHYC_FBDIV_SSC_CLK = 2 -DCIO_UNIPHYD_FBDIV_SSC_CLK = 3 -DCIO_UNIPHYE_FBDIV_SSC_CLK = 4 -DCIO_UNIPHYF_FBDIV_SSC_CLK = 5 -DCIO_UNIPHYG_FBDIV_SSC_CLK = 6 -DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL' -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_TEST_FBDIV_CLK_DIV2', - 1: 'DCIO_UNIPHYB_TEST_FBDIV_CLK_DIV2', - 2: 'DCIO_UNIPHYC_TEST_FBDIV_CLK_DIV2', - 3: 'DCIO_UNIPHYD_TEST_FBDIV_CLK_DIV2', - 4: 'DCIO_UNIPHYE_TEST_FBDIV_CLK_DIV2', - 5: 'DCIO_UNIPHYF_TEST_FBDIV_CLK_DIV2', - 6: 'DCIO_UNIPHYG_TEST_FBDIV_CLK_DIV2', -} -DCIO_UNIPHYA_TEST_FBDIV_CLK_DIV2 = 0 -DCIO_UNIPHYB_TEST_FBDIV_CLK_DIV2 = 1 -DCIO_UNIPHYC_TEST_FBDIV_CLK_DIV2 = 2 -DCIO_UNIPHYD_TEST_FBDIV_CLK_DIV2 = 3 -DCIO_UNIPHYE_TEST_FBDIV_CLK_DIV2 = 4 -DCIO_UNIPHYF_TEST_FBDIV_CLK_DIV2 = 5 -DCIO_UNIPHYG_TEST_FBDIV_CLK_DIV2 = 6 -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERICB_SEL' -DCIO_DC_GENERICB_SEL__enumvalues = { - 0: 'DCIO_GENERICB_SEL_DACA_STEREOSYNC', - 1: 'DCIO_GENERICB_SEL_STEREOSYNC', - 2: 'DCIO_GENERICB_SEL_DACA_PIXCLK', - 3: 'DCIO_GENERICB_SEL_DACB_PIXCLK', - 4: 'DCIO_GENERICB_SEL_DVOA_CTL3', - 5: 'DCIO_GENERICB_SEL_P1_PLLCLK', - 6: 'DCIO_GENERICB_SEL_P2_PLLCLK', - 7: 'DCIO_GENERICB_SEL_DVOA_STEREOSYNC', - 8: 'DCIO_GENERICB_SEL_DACA_FIELD_NUMBER', - 9: 'DCIO_GENERICB_SEL_DACB_FIELD_NUMBER', - 10: 'DCIO_GENERICB_SEL_GENERICB_DCCG', - 11: 'DCIO_GENERICB_SEL_SYNCEN', - 12: 'DCIO_GENERICB_SEL_UNIPHY_REFDIV_CLK', - 13: 'DCIO_GENERICB_SEL_UNIPHY_FBDIV_CLK', - 14: 'DCIO_GENERICB_SEL_UNIPHY_FBDIV_SSC_CLK', - 15: 'DCIO_GENERICB_SEL_UNIPHY_FBDIV_CLK_DIV2', -} -DCIO_GENERICB_SEL_DACA_STEREOSYNC = 0 -DCIO_GENERICB_SEL_STEREOSYNC = 1 -DCIO_GENERICB_SEL_DACA_PIXCLK = 2 -DCIO_GENERICB_SEL_DACB_PIXCLK = 3 -DCIO_GENERICB_SEL_DVOA_CTL3 = 4 -DCIO_GENERICB_SEL_P1_PLLCLK = 5 -DCIO_GENERICB_SEL_P2_PLLCLK = 6 -DCIO_GENERICB_SEL_DVOA_STEREOSYNC = 7 -DCIO_GENERICB_SEL_DACA_FIELD_NUMBER = 8 -DCIO_GENERICB_SEL_DACB_FIELD_NUMBER = 9 -DCIO_GENERICB_SEL_GENERICB_DCCG = 10 -DCIO_GENERICB_SEL_SYNCEN = 11 -DCIO_GENERICB_SEL_UNIPHY_REFDIV_CLK = 12 -DCIO_GENERICB_SEL_UNIPHY_FBDIV_CLK = 13 -DCIO_GENERICB_SEL_UNIPHY_FBDIV_SSC_CLK = 14 -DCIO_GENERICB_SEL_UNIPHY_FBDIV_CLK_DIV2 = 15 -DCIO_DC_GENERICB_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_REF_CLK_CNTL_HSYNCA_OUTPUT_SEL' -DCIO_DC_REF_CLK_CNTL_HSYNCA_OUTPUT_SEL__enumvalues = { - 0: 'DCIO_HSYNCA_OUTPUT_SEL_DISABLE', - 1: 'DCIO_HSYNCA_OUTPUT_SEL_PPLL1', - 2: 'DCIO_HSYNCA_OUTPUT_SEL_PPLL2', - 3: 'DCIO_HSYNCA_OUTPUT_SEL_RESERVED', -} -DCIO_HSYNCA_OUTPUT_SEL_DISABLE = 0 -DCIO_HSYNCA_OUTPUT_SEL_PPLL1 = 1 -DCIO_HSYNCA_OUTPUT_SEL_PPLL2 = 2 -DCIO_HSYNCA_OUTPUT_SEL_RESERVED = 3 -DCIO_DC_REF_CLK_CNTL_HSYNCA_OUTPUT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL' -DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL__enumvalues = { - 0: 'DCIO_GENLK_CLK_OUTPUT_SEL_DISABLE', - 1: 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL1', - 2: 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL2', - 3: 'DCIO_GENLK_CLK_OUTPUT_SEL_RESERVED_VALUE3', -} -DCIO_GENLK_CLK_OUTPUT_SEL_DISABLE = 0 -DCIO_GENLK_CLK_OUTPUT_SEL_PPLL1 = 1 -DCIO_GENLK_CLK_OUTPUT_SEL_PPLL2 = 2 -DCIO_GENLK_CLK_OUTPUT_SEL_RESERVED_VALUE3 = 3 -DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_LINK_CNTL_MINIMUM_PIXVLD_LOW_DURATION' -DCIO_UNIPHY_LINK_CNTL_MINIMUM_PIXVLD_LOW_DURATION__enumvalues = { - 0: 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_3_CLOCKS', - 1: 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_7_CLOCKS', - 2: 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_11_CLOCKS', - 3: 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_15_CLOCKS', - 4: 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_19_CLOCKS', - 5: 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_23_CLOCKS', - 6: 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_27_CLOCKS', - 7: 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_31_CLOCKS', -} -DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_3_CLOCKS = 0 -DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_7_CLOCKS = 1 -DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_11_CLOCKS = 2 -DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_15_CLOCKS = 3 -DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_19_CLOCKS = 4 -DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_23_CLOCKS = 5 -DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_27_CLOCKS = 6 -DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_31_CLOCKS = 7 -DCIO_UNIPHY_LINK_CNTL_MINIMUM_PIXVLD_LOW_DURATION = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT' -DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT__enumvalues = { - 0: 'DCIO_UNIPHY_CHANNEL_NO_INVERSION', - 1: 'DCIO_UNIPHY_CHANNEL_INVERTED', -} -DCIO_UNIPHY_CHANNEL_NO_INVERSION = 0 -DCIO_UNIPHY_CHANNEL_INVERTED = 1 -DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK' -DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK__enumvalues = { - 0: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_DISALLOW', - 1: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW', - 2: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_DEBOUNCED', - 3: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_TOGGLE_FILTERED', -} -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_DISALLOW = 0 -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW = 1 -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_DEBOUNCED = 2 -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_TOGGLE_FILTERED = 3 -DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE' -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE__enumvalues = { - 0: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH0', - 1: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH1', - 2: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH2', - 3: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH3', -} -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH0 = 0 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH1 = 1 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH2 = 2 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH3 = 3 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_DVODATA_CONFIG_VIP_MUX_EN' -DCIO_DC_DVODATA_CONFIG_VIP_MUX_EN__enumvalues = { - 0: 'DCIO_VIP_MUX_EN_DVO', - 1: 'DCIO_VIP_MUX_EN_VIP', -} -DCIO_VIP_MUX_EN_DVO = 0 -DCIO_VIP_MUX_EN_VIP = 1 -DCIO_DC_DVODATA_CONFIG_VIP_MUX_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_DVODATA_CONFIG_VIP_ALTER_MAPPING_EN' -DCIO_DC_DVODATA_CONFIG_VIP_ALTER_MAPPING_EN__enumvalues = { - 0: 'DCIO_VIP_ALTER_MAPPING_EN_DEFAULT', - 1: 'DCIO_VIP_ALTER_MAPPING_EN_ALTERNATIVE', -} -DCIO_VIP_ALTER_MAPPING_EN_DEFAULT = 0 -DCIO_VIP_ALTER_MAPPING_EN_ALTERNATIVE = 1 -DCIO_DC_DVODATA_CONFIG_VIP_ALTER_MAPPING_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_DVODATA_CONFIG_DVO_ALTER_MAPPING_EN' -DCIO_DC_DVODATA_CONFIG_DVO_ALTER_MAPPING_EN__enumvalues = { - 0: 'DCIO_DVO_ALTER_MAPPING_EN_DEFAULT', - 1: 'DCIO_DVO_ALTER_MAPPING_EN_ALTERNATIVE', -} -DCIO_DVO_ALTER_MAPPING_EN_DEFAULT = 0 -DCIO_DVO_ALTER_MAPPING_EN_ALTERNATIVE = 1 -DCIO_DC_DVODATA_CONFIG_DVO_ALTER_MAPPING_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_LVTMA_PWRSEQ_CNTL_DISABLE_SYNCEN_CONTROL_OF_TX_EN' -DCIO_LVTMA_PWRSEQ_CNTL_DISABLE_SYNCEN_CONTROL_OF_TX_EN__enumvalues = { - 0: 'DCIO_LVTMA_PWRSEQ_DISABLE_SYNCEN_CONTROL_OF_TX_ENABLE', - 1: 'DCIO_LVTMA_PWRSEQ_DISABLE_SYNCEN_CONTROL_OF_TX_DISABLE', -} -DCIO_LVTMA_PWRSEQ_DISABLE_SYNCEN_CONTROL_OF_TX_ENABLE = 0 -DCIO_LVTMA_PWRSEQ_DISABLE_SYNCEN_CONTROL_OF_TX_DISABLE = 1 -DCIO_LVTMA_PWRSEQ_CNTL_DISABLE_SYNCEN_CONTROL_OF_TX_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_LVTMA_PWRSEQ_CNTL_TARGET_STATE' -DCIO_LVTMA_PWRSEQ_CNTL_TARGET_STATE__enumvalues = { - 0: 'DCIO_LVTMA_PWRSEQ_TARGET_STATE_LCD_OFF', - 1: 'DCIO_LVTMA_PWRSEQ_TARGET_STATE_LCD_ON', -} -DCIO_LVTMA_PWRSEQ_TARGET_STATE_LCD_OFF = 0 -DCIO_LVTMA_PWRSEQ_TARGET_STATE_LCD_ON = 1 -DCIO_LVTMA_PWRSEQ_CNTL_TARGET_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_SYNCEN_POL' -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_SYNCEN_POL__enumvalues = { - 0: 'DCIO_LVTMA_SYNCEN_POL_NON_INVERT', - 1: 'DCIO_LVTMA_SYNCEN_POL_INVERT', -} -DCIO_LVTMA_SYNCEN_POL_NON_INVERT = 0 -DCIO_LVTMA_SYNCEN_POL_INVERT = 1 -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_SYNCEN_POL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_DIGON' -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_DIGON__enumvalues = { - 0: 'DCIO_LVTMA_DIGON_OFF', - 1: 'DCIO_LVTMA_DIGON_ON', -} -DCIO_LVTMA_DIGON_OFF = 0 -DCIO_LVTMA_DIGON_ON = 1 -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_DIGON = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_DIGON_POL' -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_DIGON_POL__enumvalues = { - 0: 'DCIO_LVTMA_DIGON_POL_NON_INVERT', - 1: 'DCIO_LVTMA_DIGON_POL_INVERT', -} -DCIO_LVTMA_DIGON_POL_NON_INVERT = 0 -DCIO_LVTMA_DIGON_POL_INVERT = 1 -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_DIGON_POL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_BLON' -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_BLON__enumvalues = { - 0: 'DCIO_LVTMA_BLON_OFF', - 1: 'DCIO_LVTMA_BLON_ON', -} -DCIO_LVTMA_BLON_OFF = 0 -DCIO_LVTMA_BLON_ON = 1 -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_BLON = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_BLON_POL' -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_BLON_POL__enumvalues = { - 0: 'DCIO_LVTMA_BLON_POL_NON_INVERT', - 1: 'DCIO_LVTMA_BLON_POL_INVERT', -} -DCIO_LVTMA_BLON_POL_NON_INVERT = 0 -DCIO_LVTMA_BLON_POL_INVERT = 1 -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_BLON_POL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_LVTMA_PWRSEQ_DELAY2_LVTMA_VARY_BL_OVERRIDE_EN' -DCIO_LVTMA_PWRSEQ_DELAY2_LVTMA_VARY_BL_OVERRIDE_EN__enumvalues = { - 0: 'DCIO_LVTMA_VARY_BL_OVERRIDE_EN_BLON', - 1: 'DCIO_LVTMA_VARY_BL_OVERRIDE_EN_SEPARATE', -} -DCIO_LVTMA_VARY_BL_OVERRIDE_EN_BLON = 0 -DCIO_LVTMA_VARY_BL_OVERRIDE_EN_SEPARATE = 1 -DCIO_LVTMA_PWRSEQ_DELAY2_LVTMA_VARY_BL_OVERRIDE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN' -DCIO_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN__enumvalues = { - 0: 'DCIO_BL_PWM_FRACTIONAL_DISABLE', - 1: 'DCIO_BL_PWM_FRACTIONAL_ENABLE', -} -DCIO_BL_PWM_FRACTIONAL_DISABLE = 0 -DCIO_BL_PWM_FRACTIONAL_ENABLE = 1 -DCIO_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_CNTL_BL_PWM_EN' -DCIO_BL_PWM_CNTL_BL_PWM_EN__enumvalues = { - 0: 'DCIO_BL_PWM_DISABLE', - 1: 'DCIO_BL_PWM_ENABLE', -} -DCIO_BL_PWM_DISABLE = 0 -DCIO_BL_PWM_ENABLE = 1 -DCIO_BL_PWM_CNTL_BL_PWM_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE' -DCIO_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE__enumvalues = { - 0: 'DCIO_BL_PWM_OVERRIDE_BL_OUT_DISABLE', - 1: 'DCIO_BL_PWM_OVERRIDE_BL_OUT_ENABLE', -} -DCIO_BL_PWM_OVERRIDE_BL_OUT_DISABLE = 0 -DCIO_BL_PWM_OVERRIDE_BL_OUT_ENABLE = 1 -DCIO_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_CNTL2_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN' -DCIO_BL_PWM_CNTL2_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN__enumvalues = { - 0: 'DCIO_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN_NORMAL', - 1: 'DCIO_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN_PWM', -} -DCIO_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN_NORMAL = 0 -DCIO_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN_PWM = 1 -DCIO_BL_PWM_CNTL2_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_GRP1_REG_LOCK' -DCIO_BL_PWM_GRP1_REG_LOCK__enumvalues = { - 0: 'DCIO_BL_PWM_GRP1_REG_LOCK_DISABLE', - 1: 'DCIO_BL_PWM_GRP1_REG_LOCK_ENABLE', -} -DCIO_BL_PWM_GRP1_REG_LOCK_DISABLE = 0 -DCIO_BL_PWM_GRP1_REG_LOCK_ENABLE = 1 -DCIO_BL_PWM_GRP1_REG_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START' -DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START__enumvalues = { - 0: 'DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START_DISABLE', - 1: 'DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START_ENABLE', -} -DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START_DISABLE = 0 -DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START_ENABLE = 1 -DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL' -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL__enumvalues = { - 0: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER1', - 1: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER2', - 2: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER3', - 3: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER4', - 4: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER5', - 5: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER6', -} -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER1 = 0 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER2 = 1 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER3 = 2 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER4 = 3 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER5 = 4 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER6 = 5 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN' -DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN__enumvalues = { - 0: 'DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL_PWM', - 1: 'DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL1_PWM', -} -DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL_PWM = 0 -DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL1_PWM = 1 -DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN' -DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN__enumvalues = { - 0: 'DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_ENABLE', - 1: 'DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_DISABLE', -} -DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_ENABLE = 0 -DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_DISABLE = 1 -DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GSL_SEL' -DCIO_GSL_SEL__enumvalues = { - 0: 'DCIO_GSL_SEL_GROUP_0', - 1: 'DCIO_GSL_SEL_GROUP_1', - 2: 'DCIO_GSL_SEL_GROUP_2', -} -DCIO_GSL_SEL_GROUP_0 = 0 -DCIO_GSL_SEL_GROUP_1 = 1 -DCIO_GSL_SEL_GROUP_2 = 2 -DCIO_GSL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GENLK_CLK_GSL_MASK' -DCIO_GENLK_CLK_GSL_MASK__enumvalues = { - 0: 'DCIO_GENLK_CLK_GSL_MASK_NO', - 1: 'DCIO_GENLK_CLK_GSL_MASK_TIMING', - 2: 'DCIO_GENLK_CLK_GSL_MASK_STEREO', -} -DCIO_GENLK_CLK_GSL_MASK_NO = 0 -DCIO_GENLK_CLK_GSL_MASK_TIMING = 1 -DCIO_GENLK_CLK_GSL_MASK_STEREO = 2 -DCIO_GENLK_CLK_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GENLK_VSYNC_GSL_MASK' -DCIO_GENLK_VSYNC_GSL_MASK__enumvalues = { - 0: 'DCIO_GENLK_VSYNC_GSL_MASK_NO', - 1: 'DCIO_GENLK_VSYNC_GSL_MASK_TIMING', - 2: 'DCIO_GENLK_VSYNC_GSL_MASK_STEREO', -} -DCIO_GENLK_VSYNC_GSL_MASK_NO = 0 -DCIO_GENLK_VSYNC_GSL_MASK_TIMING = 1 -DCIO_GENLK_VSYNC_GSL_MASK_STEREO = 2 -DCIO_GENLK_VSYNC_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_SWAPLOCK_A_GSL_MASK' -DCIO_SWAPLOCK_A_GSL_MASK__enumvalues = { - 0: 'DCIO_SWAPLOCK_A_GSL_MASK_NO', - 1: 'DCIO_SWAPLOCK_A_GSL_MASK_TIMING', - 2: 'DCIO_SWAPLOCK_A_GSL_MASK_STEREO', -} -DCIO_SWAPLOCK_A_GSL_MASK_NO = 0 -DCIO_SWAPLOCK_A_GSL_MASK_TIMING = 1 -DCIO_SWAPLOCK_A_GSL_MASK_STEREO = 2 -DCIO_SWAPLOCK_A_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_SWAPLOCK_B_GSL_MASK' -DCIO_SWAPLOCK_B_GSL_MASK__enumvalues = { - 0: 'DCIO_SWAPLOCK_B_GSL_MASK_NO', - 1: 'DCIO_SWAPLOCK_B_GSL_MASK_TIMING', - 2: 'DCIO_SWAPLOCK_B_GSL_MASK_STEREO', -} -DCIO_SWAPLOCK_B_GSL_MASK_NO = 0 -DCIO_SWAPLOCK_B_GSL_MASK_TIMING = 1 -DCIO_SWAPLOCK_B_GSL_MASK_STEREO = 2 -DCIO_SWAPLOCK_B_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GPU_TIMER_START_POSITION' -DCIO_DC_GPU_TIMER_START_POSITION__enumvalues = { - 0: 'DCIO_GPU_TIMER_START_0_END_27', - 1: 'DCIO_GPU_TIMER_START_1_END_28', - 2: 'DCIO_GPU_TIMER_START_2_END_29', - 3: 'DCIO_GPU_TIMER_START_3_END_30', - 4: 'DCIO_GPU_TIMER_START_4_END_31', - 5: 'DCIO_GPU_TIMER_START_6_END_33', - 6: 'DCIO_GPU_TIMER_START_8_END_35', - 7: 'DCIO_GPU_TIMER_START_10_END_37', -} -DCIO_GPU_TIMER_START_0_END_27 = 0 -DCIO_GPU_TIMER_START_1_END_28 = 1 -DCIO_GPU_TIMER_START_2_END_29 = 2 -DCIO_GPU_TIMER_START_3_END_30 = 3 -DCIO_GPU_TIMER_START_4_END_31 = 4 -DCIO_GPU_TIMER_START_6_END_33 = 5 -DCIO_GPU_TIMER_START_8_END_35 = 6 -DCIO_GPU_TIMER_START_10_END_37 = 7 -DCIO_DC_GPU_TIMER_START_POSITION = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL' -DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL__enumvalues = { - 0: 'DCIO_TEST_CLK_SEL_DISPCLK', - 1: 'DCIO_TEST_CLK_SEL_GATED_DISPCLK', - 2: 'DCIO_TEST_CLK_SEL_SOCCLK', -} -DCIO_TEST_CLK_SEL_DISPCLK = 0 -DCIO_TEST_CLK_SEL_GATED_DISPCLK = 1 -DCIO_TEST_CLK_SEL_SOCCLK = 2 -DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS' -DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS__enumvalues = { - 0: 'DCIO_DISPCLK_R_DCIO_GATE_DISABLE', - 1: 'DCIO_DISPCLK_R_DCIO_GATE_ENABLE', -} -DCIO_DISPCLK_R_DCIO_GATE_DISABLE = 0 -DCIO_DISPCLK_R_DCIO_GATE_ENABLE = 1 -DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DIO_OTG_EXT_VSYNC_MUX' -DCIO_DIO_OTG_EXT_VSYNC_MUX__enumvalues = { - 0: 'DCIO_EXT_VSYNC_MUX_SWAPLOCKB', - 1: 'DCIO_EXT_VSYNC_MUX_OTG0', - 2: 'DCIO_EXT_VSYNC_MUX_OTG1', - 3: 'DCIO_EXT_VSYNC_MUX_OTG2', - 4: 'DCIO_EXT_VSYNC_MUX_OTG3', - 5: 'DCIO_EXT_VSYNC_MUX_OTG4', - 6: 'DCIO_EXT_VSYNC_MUX_OTG5', - 7: 'DCIO_EXT_VSYNC_MUX_GENERICB', -} -DCIO_EXT_VSYNC_MUX_SWAPLOCKB = 0 -DCIO_EXT_VSYNC_MUX_OTG0 = 1 -DCIO_EXT_VSYNC_MUX_OTG1 = 2 -DCIO_EXT_VSYNC_MUX_OTG2 = 3 -DCIO_EXT_VSYNC_MUX_OTG3 = 4 -DCIO_EXT_VSYNC_MUX_OTG4 = 5 -DCIO_EXT_VSYNC_MUX_OTG5 = 6 -DCIO_EXT_VSYNC_MUX_GENERICB = 7 -DCIO_DIO_OTG_EXT_VSYNC_MUX = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DIO_EXT_VSYNC_MASK' -DCIO_DIO_EXT_VSYNC_MASK__enumvalues = { - 0: 'DCIO_EXT_VSYNC_MASK_NONE', - 1: 'DCIO_EXT_VSYNC_MASK_PIPE0', - 2: 'DCIO_EXT_VSYNC_MASK_PIPE1', - 3: 'DCIO_EXT_VSYNC_MASK_PIPE2', - 4: 'DCIO_EXT_VSYNC_MASK_PIPE3', - 5: 'DCIO_EXT_VSYNC_MASK_PIPE4', - 6: 'DCIO_EXT_VSYNC_MASK_PIPE5', - 7: 'DCIO_EXT_VSYNC_MASK_NONE_DUPLICATE', -} -DCIO_EXT_VSYNC_MASK_NONE = 0 -DCIO_EXT_VSYNC_MASK_PIPE0 = 1 -DCIO_EXT_VSYNC_MASK_PIPE1 = 2 -DCIO_EXT_VSYNC_MASK_PIPE2 = 3 -DCIO_EXT_VSYNC_MASK_PIPE3 = 4 -DCIO_EXT_VSYNC_MASK_PIPE4 = 5 -DCIO_EXT_VSYNC_MASK_PIPE5 = 6 -DCIO_EXT_VSYNC_MASK_NONE_DUPLICATE = 7 -DCIO_DIO_EXT_VSYNC_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DSYNC_SOFT_RESET' -DCIO_DSYNC_SOFT_RESET__enumvalues = { - 0: 'DCIO_DSYNC_SOFT_RESET_DEASSERT', - 1: 'DCIO_DSYNC_SOFT_RESET_ASSERT', -} -DCIO_DSYNC_SOFT_RESET_DEASSERT = 0 -DCIO_DSYNC_SOFT_RESET_ASSERT = 1 -DCIO_DSYNC_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DACA_SOFT_RESET' -DCIO_DACA_SOFT_RESET__enumvalues = { - 0: 'DCIO_DACA_SOFT_RESET_DEASSERT', - 1: 'DCIO_DACA_SOFT_RESET_ASSERT', -} -DCIO_DACA_SOFT_RESET_DEASSERT = 0 -DCIO_DACA_SOFT_RESET_ASSERT = 1 -DCIO_DACA_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DCRXPHY_SOFT_RESET' -DCIO_DCRXPHY_SOFT_RESET__enumvalues = { - 0: 'DCIO_DCRXPHY_SOFT_RESET_DEASSERT', - 1: 'DCIO_DCRXPHY_SOFT_RESET_ASSERT', -} -DCIO_DCRXPHY_SOFT_RESET_DEASSERT = 0 -DCIO_DCRXPHY_SOFT_RESET_ASSERT = 1 -DCIO_DCRXPHY_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DPHY_LANE_SEL' -DCIO_DPHY_LANE_SEL__enumvalues = { - 0: 'DCIO_DPHY_LANE_SEL_LANE0', - 1: 'DCIO_DPHY_LANE_SEL_LANE1', - 2: 'DCIO_DPHY_LANE_SEL_LANE2', - 3: 'DCIO_DPHY_LANE_SEL_LANE3', -} -DCIO_DPHY_LANE_SEL_LANE0 = 0 -DCIO_DPHY_LANE_SEL_LANE1 = 1 -DCIO_DPHY_LANE_SEL_LANE2 = 2 -DCIO_DPHY_LANE_SEL_LANE3 = 3 -DCIO_DPHY_LANE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DPCS_INTERRUPT_TYPE' -DCIO_DPCS_INTERRUPT_TYPE__enumvalues = { - 0: 'DCIO_DPCS_INTERRUPT_TYPE_LEVEL_BASED', - 1: 'DCIO_DPCS_INTERRUPT_TYPE_PULSE_BASED', -} -DCIO_DPCS_INTERRUPT_TYPE_LEVEL_BASED = 0 -DCIO_DPCS_INTERRUPT_TYPE_PULSE_BASED = 1 -DCIO_DPCS_INTERRUPT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DPCS_INTERRUPT_MASK' -DCIO_DPCS_INTERRUPT_MASK__enumvalues = { - 0: 'DCIO_DPCS_INTERRUPT_DISABLE', - 1: 'DCIO_DPCS_INTERRUPT_ENABLE', -} -DCIO_DPCS_INTERRUPT_DISABLE = 0 -DCIO_DPCS_INTERRUPT_ENABLE = 1 -DCIO_DPCS_INTERRUPT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GPU_TIMER_READ_SELECT' -DCIO_DC_GPU_TIMER_READ_SELECT__enumvalues = { - 0: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE', - 1: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE', - 2: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_P_FLIP', - 3: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_P_FLIP', - 4: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM', - 5: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM', -} -DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE = 0 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE = 1 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_P_FLIP = 2 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_P_FLIP = 3 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM = 4 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM = 5 -DCIO_DC_GPU_TIMER_READ_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_IMPCAL_STEP_DELAY' -DCIO_IMPCAL_STEP_DELAY__enumvalues = { - 0: 'DCIO_IMPCAL_STEP_DELAY_1us', - 1: 'DCIO_IMPCAL_STEP_DELAY_2us', - 2: 'DCIO_IMPCAL_STEP_DELAY_3us', - 3: 'DCIO_IMPCAL_STEP_DELAY_4us', - 4: 'DCIO_IMPCAL_STEP_DELAY_5us', - 5: 'DCIO_IMPCAL_STEP_DELAY_6us', - 6: 'DCIO_IMPCAL_STEP_DELAY_7us', - 7: 'DCIO_IMPCAL_STEP_DELAY_8us', - 8: 'DCIO_IMPCAL_STEP_DELAY_9us', - 9: 'DCIO_IMPCAL_STEP_DELAY_10us', - 10: 'DCIO_IMPCAL_STEP_DELAY_11us', - 11: 'DCIO_IMPCAL_STEP_DELAY_12us', - 12: 'DCIO_IMPCAL_STEP_DELAY_13us', - 13: 'DCIO_IMPCAL_STEP_DELAY_14us', - 14: 'DCIO_IMPCAL_STEP_DELAY_15us', - 15: 'DCIO_IMPCAL_STEP_DELAY_16us', -} -DCIO_IMPCAL_STEP_DELAY_1us = 0 -DCIO_IMPCAL_STEP_DELAY_2us = 1 -DCIO_IMPCAL_STEP_DELAY_3us = 2 -DCIO_IMPCAL_STEP_DELAY_4us = 3 -DCIO_IMPCAL_STEP_DELAY_5us = 4 -DCIO_IMPCAL_STEP_DELAY_6us = 5 -DCIO_IMPCAL_STEP_DELAY_7us = 6 -DCIO_IMPCAL_STEP_DELAY_8us = 7 -DCIO_IMPCAL_STEP_DELAY_9us = 8 -DCIO_IMPCAL_STEP_DELAY_10us = 9 -DCIO_IMPCAL_STEP_DELAY_11us = 10 -DCIO_IMPCAL_STEP_DELAY_12us = 11 -DCIO_IMPCAL_STEP_DELAY_13us = 12 -DCIO_IMPCAL_STEP_DELAY_14us = 13 -DCIO_IMPCAL_STEP_DELAY_15us = 14 -DCIO_IMPCAL_STEP_DELAY_16us = 15 -DCIO_IMPCAL_STEP_DELAY = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_IMPCAL_SEL' -DCIO_UNIPHY_IMPCAL_SEL__enumvalues = { - 0: 'DCIO_UNIPHY_IMPCAL_SEL_TEMPERATURE', - 1: 'DCIO_UNIPHY_IMPCAL_SEL_BINARY', -} -DCIO_UNIPHY_IMPCAL_SEL_TEMPERATURE = 0 -DCIO_UNIPHY_IMPCAL_SEL_BINARY = 1 -DCIO_UNIPHY_IMPCAL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_HPD_SEL' -DCIOCHIP_HPD_SEL__enumvalues = { - 0: 'DCIOCHIP_HPD_SEL_ASYNC', - 1: 'DCIOCHIP_HPD_SEL_CLOCKED', -} -DCIOCHIP_HPD_SEL_ASYNC = 0 -DCIOCHIP_HPD_SEL_CLOCKED = 1 -DCIOCHIP_HPD_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_PAD_MODE' -DCIOCHIP_PAD_MODE__enumvalues = { - 0: 'DCIOCHIP_PAD_MODE_DDC', - 1: 'DCIOCHIP_PAD_MODE_DP', -} -DCIOCHIP_PAD_MODE_DDC = 0 -DCIOCHIP_PAD_MODE_DP = 1 -DCIOCHIP_PAD_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUXSLAVE_PAD_MODE' -DCIOCHIP_AUXSLAVE_PAD_MODE__enumvalues = { - 0: 'DCIOCHIP_AUXSLAVE_PAD_MODE_I2C', - 1: 'DCIOCHIP_AUXSLAVE_PAD_MODE_AUX', -} -DCIOCHIP_AUXSLAVE_PAD_MODE_I2C = 0 -DCIOCHIP_AUXSLAVE_PAD_MODE_AUX = 1 -DCIOCHIP_AUXSLAVE_PAD_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_INVERT' -DCIOCHIP_INVERT__enumvalues = { - 0: 'DCIOCHIP_POL_NON_INVERT', - 1: 'DCIOCHIP_POL_INVERT', -} -DCIOCHIP_POL_NON_INVERT = 0 -DCIOCHIP_POL_INVERT = 1 -DCIOCHIP_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_PD_EN' -DCIOCHIP_PD_EN__enumvalues = { - 0: 'DCIOCHIP_PD_EN_NOTALLOW', - 1: 'DCIOCHIP_PD_EN_ALLOW', -} -DCIOCHIP_PD_EN_NOTALLOW = 0 -DCIOCHIP_PD_EN_ALLOW = 1 -DCIOCHIP_PD_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_GPIO_MASK_EN' -DCIOCHIP_GPIO_MASK_EN__enumvalues = { - 0: 'DCIOCHIP_GPIO_MASK_EN_HARDWARE', - 1: 'DCIOCHIP_GPIO_MASK_EN_SOFTWARE', -} -DCIOCHIP_GPIO_MASK_EN_HARDWARE = 0 -DCIOCHIP_GPIO_MASK_EN_SOFTWARE = 1 -DCIOCHIP_GPIO_MASK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_MASK' -DCIOCHIP_MASK__enumvalues = { - 0: 'DCIOCHIP_MASK_DISABLE', - 1: 'DCIOCHIP_MASK_ENABLE', -} -DCIOCHIP_MASK_DISABLE = 0 -DCIOCHIP_MASK_ENABLE = 1 -DCIOCHIP_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_GPIO_I2C_MASK' -DCIOCHIP_GPIO_I2C_MASK__enumvalues = { - 0: 'DCIOCHIP_GPIO_I2C_MASK_DISABLE', - 1: 'DCIOCHIP_GPIO_I2C_MASK_ENABLE', -} -DCIOCHIP_GPIO_I2C_MASK_DISABLE = 0 -DCIOCHIP_GPIO_I2C_MASK_ENABLE = 1 -DCIOCHIP_GPIO_I2C_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_GPIO_I2C_DRIVE' -DCIOCHIP_GPIO_I2C_DRIVE__enumvalues = { - 0: 'DCIOCHIP_GPIO_I2C_DRIVE_LOW', - 1: 'DCIOCHIP_GPIO_I2C_DRIVE_HIGH', -} -DCIOCHIP_GPIO_I2C_DRIVE_LOW = 0 -DCIOCHIP_GPIO_I2C_DRIVE_HIGH = 1 -DCIOCHIP_GPIO_I2C_DRIVE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_GPIO_I2C_EN' -DCIOCHIP_GPIO_I2C_EN__enumvalues = { - 0: 'DCIOCHIP_GPIO_I2C_DISABLE', - 1: 'DCIOCHIP_GPIO_I2C_ENABLE', -} -DCIOCHIP_GPIO_I2C_DISABLE = 0 -DCIOCHIP_GPIO_I2C_ENABLE = 1 -DCIOCHIP_GPIO_I2C_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_MASK_4BIT' -DCIOCHIP_MASK_4BIT__enumvalues = { - 0: 'DCIOCHIP_MASK_4BIT_DISABLE', - 15: 'DCIOCHIP_MASK_4BIT_ENABLE', -} -DCIOCHIP_MASK_4BIT_DISABLE = 0 -DCIOCHIP_MASK_4BIT_ENABLE = 15 -DCIOCHIP_MASK_4BIT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_ENABLE_4BIT' -DCIOCHIP_ENABLE_4BIT__enumvalues = { - 0: 'DCIOCHIP_4BIT_DISABLE', - 15: 'DCIOCHIP_4BIT_ENABLE', -} -DCIOCHIP_4BIT_DISABLE = 0 -DCIOCHIP_4BIT_ENABLE = 15 -DCIOCHIP_ENABLE_4BIT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_MASK_5BIT' -DCIOCHIP_MASK_5BIT__enumvalues = { - 0: 'DCIOCHIP_MASIK_5BIT_DISABLE', - 31: 'DCIOCHIP_MASIK_5BIT_ENABLE', -} -DCIOCHIP_MASIK_5BIT_DISABLE = 0 -DCIOCHIP_MASIK_5BIT_ENABLE = 31 -DCIOCHIP_MASK_5BIT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_ENABLE_5BIT' -DCIOCHIP_ENABLE_5BIT__enumvalues = { - 0: 'DCIOCHIP_5BIT_DISABLE', - 31: 'DCIOCHIP_5BIT_ENABLE', -} -DCIOCHIP_5BIT_DISABLE = 0 -DCIOCHIP_5BIT_ENABLE = 31 -DCIOCHIP_ENABLE_5BIT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_MASK_2BIT' -DCIOCHIP_MASK_2BIT__enumvalues = { - 0: 'DCIOCHIP_MASK_2BIT_DISABLE', - 3: 'DCIOCHIP_MASK_2BIT_ENABLE', -} -DCIOCHIP_MASK_2BIT_DISABLE = 0 -DCIOCHIP_MASK_2BIT_ENABLE = 3 -DCIOCHIP_MASK_2BIT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_ENABLE_2BIT' -DCIOCHIP_ENABLE_2BIT__enumvalues = { - 0: 'DCIOCHIP_2BIT_DISABLE', - 3: 'DCIOCHIP_2BIT_ENABLE', -} -DCIOCHIP_2BIT_DISABLE = 0 -DCIOCHIP_2BIT_ENABLE = 3 -DCIOCHIP_ENABLE_2BIT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_REF_27_SRC_SEL' -DCIOCHIP_REF_27_SRC_SEL__enumvalues = { - 0: 'DCIOCHIP_REF_27_SRC_SEL_XTAL_DIVIDER', - 1: 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_DIVIDER', - 2: 'DCIOCHIP_REF_27_SRC_SEL_XTAL_BYPASS', - 3: 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_BYPASS', -} -DCIOCHIP_REF_27_SRC_SEL_XTAL_DIVIDER = 0 -DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_DIVIDER = 1 -DCIOCHIP_REF_27_SRC_SEL_XTAL_BYPASS = 2 -DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_BYPASS = 3 -DCIOCHIP_REF_27_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_DVO_VREFPON' -DCIOCHIP_DVO_VREFPON__enumvalues = { - 0: 'DCIOCHIP_DVO_VREFPON_DISABLE', - 1: 'DCIOCHIP_DVO_VREFPON_ENABLE', -} -DCIOCHIP_DVO_VREFPON_DISABLE = 0 -DCIOCHIP_DVO_VREFPON_ENABLE = 1 -DCIOCHIP_DVO_VREFPON = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_DVO_VREFSEL' -DCIOCHIP_DVO_VREFSEL__enumvalues = { - 0: 'DCIOCHIP_DVO_VREFSEL_ONCHIP', - 1: 'DCIOCHIP_DVO_VREFSEL_EXTERNAL', -} -DCIOCHIP_DVO_VREFSEL_ONCHIP = 0 -DCIOCHIP_DVO_VREFSEL_EXTERNAL = 1 -DCIOCHIP_DVO_VREFSEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_SPDIF1_IMODE' -DCIOCHIP_SPDIF1_IMODE__enumvalues = { - 0: 'DCIOCHIP_SPDIF1_IMODE_OE_A', - 1: 'DCIOCHIP_SPDIF1_IMODE_TSTE_TSTO', -} -DCIOCHIP_SPDIF1_IMODE_OE_A = 0 -DCIOCHIP_SPDIF1_IMODE_TSTE_TSTO = 1 -DCIOCHIP_SPDIF1_IMODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_FALLSLEWSEL' -DCIOCHIP_AUX_FALLSLEWSEL__enumvalues = { - 0: 'DCIOCHIP_AUX_FALLSLEWSEL_LOW', - 1: 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH0', - 2: 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH1', - 3: 'DCIOCHIP_AUX_FALLSLEWSEL_ULTRAHIGH', -} -DCIOCHIP_AUX_FALLSLEWSEL_LOW = 0 -DCIOCHIP_AUX_FALLSLEWSEL_HIGH0 = 1 -DCIOCHIP_AUX_FALLSLEWSEL_HIGH1 = 2 -DCIOCHIP_AUX_FALLSLEWSEL_ULTRAHIGH = 3 -DCIOCHIP_AUX_FALLSLEWSEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_I2C_FALLSLEWSEL' -DCIOCHIP_I2C_FALLSLEWSEL__enumvalues = { - 0: 'DCIOCHIP_I2C_FALLSLEWSEL_00', - 1: 'DCIOCHIP_I2C_FALLSLEWSEL_01', - 2: 'DCIOCHIP_I2C_FALLSLEWSEL_10', - 3: 'DCIOCHIP_I2C_FALLSLEWSEL_11', -} -DCIOCHIP_I2C_FALLSLEWSEL_00 = 0 -DCIOCHIP_I2C_FALLSLEWSEL_01 = 1 -DCIOCHIP_I2C_FALLSLEWSEL_10 = 2 -DCIOCHIP_I2C_FALLSLEWSEL_11 = 3 -DCIOCHIP_I2C_FALLSLEWSEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_SPIKESEL' -DCIOCHIP_AUX_SPIKESEL__enumvalues = { - 0: 'DCIOCHIP_AUX_SPIKESEL_50NS', - 1: 'DCIOCHIP_AUX_SPIKESEL_10NS', -} -DCIOCHIP_AUX_SPIKESEL_50NS = 0 -DCIOCHIP_AUX_SPIKESEL_10NS = 1 -DCIOCHIP_AUX_SPIKESEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_CSEL0P9' -DCIOCHIP_AUX_CSEL0P9__enumvalues = { - 0: 'DCIOCHIP_AUX_CSEL_DEC1P0', - 1: 'DCIOCHIP_AUX_CSEL_DEC0P9', -} -DCIOCHIP_AUX_CSEL_DEC1P0 = 0 -DCIOCHIP_AUX_CSEL_DEC0P9 = 1 -DCIOCHIP_AUX_CSEL0P9 = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_CSEL1P1' -DCIOCHIP_AUX_CSEL1P1__enumvalues = { - 0: 'DCIOCHIP_AUX_CSEL_INC1P0', - 1: 'DCIOCHIP_AUX_CSEL_INC1P1', -} -DCIOCHIP_AUX_CSEL_INC1P0 = 0 -DCIOCHIP_AUX_CSEL_INC1P1 = 1 -DCIOCHIP_AUX_CSEL1P1 = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_RSEL0P9' -DCIOCHIP_AUX_RSEL0P9__enumvalues = { - 0: 'DCIOCHIP_AUX_RSEL_DEC1P0', - 1: 'DCIOCHIP_AUX_RSEL_DEC0P9', -} -DCIOCHIP_AUX_RSEL_DEC1P0 = 0 -DCIOCHIP_AUX_RSEL_DEC0P9 = 1 -DCIOCHIP_AUX_RSEL0P9 = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_RSEL1P1' -DCIOCHIP_AUX_RSEL1P1__enumvalues = { - 0: 'DCIOCHIP_AUX_RSEL_INC1P0', - 1: 'DCIOCHIP_AUX_RSEL_INC1P1', -} -DCIOCHIP_AUX_RSEL_INC1P0 = 0 -DCIOCHIP_AUX_RSEL_INC1P1 = 1 -DCIOCHIP_AUX_RSEL1P1 = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_HYS_TUNE' -DCIOCHIP_AUX_HYS_TUNE__enumvalues = { - 0: 'DCIOCHIP_AUX_HYS_TUNE_0', - 1: 'DCIOCHIP_AUX_HYS_TUNE_1', - 2: 'DCIOCHIP_AUX_HYS_TUNE_2', - 3: 'DCIOCHIP_AUX_HYS_TUNE_3', -} -DCIOCHIP_AUX_HYS_TUNE_0 = 0 -DCIOCHIP_AUX_HYS_TUNE_1 = 1 -DCIOCHIP_AUX_HYS_TUNE_2 = 2 -DCIOCHIP_AUX_HYS_TUNE_3 = 3 -DCIOCHIP_AUX_HYS_TUNE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_VOD_TUNE' -DCIOCHIP_AUX_VOD_TUNE__enumvalues = { - 0: 'DCIOCHIP_AUX_VOD_TUNE_0', - 1: 'DCIOCHIP_AUX_VOD_TUNE_1', - 2: 'DCIOCHIP_AUX_VOD_TUNE_2', - 3: 'DCIOCHIP_AUX_VOD_TUNE_3', -} -DCIOCHIP_AUX_VOD_TUNE_0 = 0 -DCIOCHIP_AUX_VOD_TUNE_1 = 1 -DCIOCHIP_AUX_VOD_TUNE_2 = 2 -DCIOCHIP_AUX_VOD_TUNE_3 = 3 -DCIOCHIP_AUX_VOD_TUNE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_I2C_VPH_1V2_EN' -DCIOCHIP_I2C_VPH_1V2_EN__enumvalues = { - 0: 'DCIOCHIP_I2C_VPH_1V2_EN_0', - 1: 'DCIOCHIP_I2C_VPH_1V2_EN_1', -} -DCIOCHIP_I2C_VPH_1V2_EN_0 = 0 -DCIOCHIP_I2C_VPH_1V2_EN_1 = 1 -DCIOCHIP_I2C_VPH_1V2_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_I2C_COMPSEL' -DCIOCHIP_I2C_COMPSEL__enumvalues = { - 0: 'DCIOCHIP_I2C_REC_SCHMIT', - 1: 'DCIOCHIP_I2C_REC_COMPARATOR', -} -DCIOCHIP_I2C_REC_SCHMIT = 0 -DCIOCHIP_I2C_REC_COMPARATOR = 1 -DCIOCHIP_I2C_COMPSEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_ALL_PWR_OK' -DCIOCHIP_AUX_ALL_PWR_OK__enumvalues = { - 0: 'DCIOCHIP_AUX_ALL_PWR_OK_0', - 1: 'DCIOCHIP_AUX_ALL_PWR_OK_1', -} -DCIOCHIP_AUX_ALL_PWR_OK_0 = 0 -DCIOCHIP_AUX_ALL_PWR_OK_1 = 1 -DCIOCHIP_AUX_ALL_PWR_OK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_I2C_RECEIVER_SEL' -DCIOCHIP_I2C_RECEIVER_SEL__enumvalues = { - 0: 'DCIOCHIP_I2C_RECEIVER_SEL_0', - 1: 'DCIOCHIP_I2C_RECEIVER_SEL_1', - 2: 'DCIOCHIP_I2C_RECEIVER_SEL_2', - 3: 'DCIOCHIP_I2C_RECEIVER_SEL_3', -} -DCIOCHIP_I2C_RECEIVER_SEL_0 = 0 -DCIOCHIP_I2C_RECEIVER_SEL_1 = 1 -DCIOCHIP_I2C_RECEIVER_SEL_2 = 2 -DCIOCHIP_I2C_RECEIVER_SEL_3 = 3 -DCIOCHIP_I2C_RECEIVER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_RECEIVER_SEL' -DCIOCHIP_AUX_RECEIVER_SEL__enumvalues = { - 0: 'DCIOCHIP_AUX_RECEIVER_SEL_0', - 1: 'DCIOCHIP_AUX_RECEIVER_SEL_1', - 2: 'DCIOCHIP_AUX_RECEIVER_SEL_2', - 3: 'DCIOCHIP_AUX_RECEIVER_SEL_3', -} -DCIOCHIP_AUX_RECEIVER_SEL_0 = 0 -DCIOCHIP_AUX_RECEIVER_SEL_1 = 1 -DCIOCHIP_AUX_RECEIVER_SEL_2 = 2 -DCIOCHIP_AUX_RECEIVER_SEL_3 = 3 -DCIOCHIP_AUX_RECEIVER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL' -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE', -} -GENERIC_AZ_CONTROLLER_REGISTER_DISABLE = 0 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE = 1 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED' -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE_RESERVED', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_RESERVED', -} -GENERIC_AZ_CONTROLLER_REGISTER_DISABLE_RESERVED = 0 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_RESERVED = 1 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS' -GENERIC_AZ_CONTROLLER_REGISTER_STATUS__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET', -} -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET = 0 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET = 1 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED' -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET_RESERVED', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET_RESERVED', -} -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET_RESERVED = 0 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET_RESERVED = 1 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_GLOBAL_CAPABILITIES' -AZ_GLOBAL_CAPABILITIES__enumvalues = { - 0: 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_NOT_SUPPORTED', - 1: 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_SUPPORTED', -} -AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_NOT_SUPPORTED = 0 -AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_SUPPORTED = 1 -AZ_GLOBAL_CAPABILITIES = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE' -GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE__enumvalues = { - 0: 'ACCEPT_UNSOLICITED_RESPONSE_NOT_ENABLE', - 1: 'ACCEPT_UNSOLICITED_RESPONSE_ENABLE', -} -ACCEPT_UNSOLICITED_RESPONSE_NOT_ENABLE = 0 -ACCEPT_UNSOLICITED_RESPONSE_ENABLE = 1 -GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_CONTROL_FLUSH_CONTROL' -GLOBAL_CONTROL_FLUSH_CONTROL__enumvalues = { - 0: 'FLUSH_CONTROL_FLUSH_NOT_STARTED', - 1: 'FLUSH_CONTROL_FLUSH_STARTED', -} -FLUSH_CONTROL_FLUSH_NOT_STARTED = 0 -FLUSH_CONTROL_FLUSH_STARTED = 1 -GLOBAL_CONTROL_FLUSH_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_CONTROL_CONTROLLER_RESET' -GLOBAL_CONTROL_CONTROLLER_RESET__enumvalues = { - 0: 'CONTROLLER_RESET_AZ_CONTROLLER_IN_RESET', - 1: 'CONTROLLER_RESET_AZ_CONTROLLER_NOT_IN_RESET', -} -CONTROLLER_RESET_AZ_CONTROLLER_IN_RESET = 0 -CONTROLLER_RESET_AZ_CONTROLLER_NOT_IN_RESET = 1 -GLOBAL_CONTROL_CONTROLLER_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_STATE_CHANGE_STATUS' -AZ_STATE_CHANGE_STATUS__enumvalues = { - 0: 'AZ_STATE_CHANGE_STATUS_CODEC_NOT_PRESENT', - 1: 'AZ_STATE_CHANGE_STATUS_CODEC_PRESENT', -} -AZ_STATE_CHANGE_STATUS_CODEC_NOT_PRESENT = 0 -AZ_STATE_CHANGE_STATUS_CODEC_PRESENT = 1 -AZ_STATE_CHANGE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_STATUS_FLUSH_STATUS' -GLOBAL_STATUS_FLUSH_STATUS__enumvalues = { - 0: 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_NOT_ENDED', - 1: 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_ENDED', -} -GLOBAL_STATUS_FLUSH_STATUS_FLUSH_NOT_ENDED = 0 -GLOBAL_STATUS_FLUSH_STATUS_FLUSH_ENDED = 1 -GLOBAL_STATUS_FLUSH_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_0_SYNCHRONIZATION' -STREAM_0_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_0_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_0_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_0_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_0_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_0_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_1_SYNCHRONIZATION' -STREAM_1_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_1_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_1_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_1_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_1_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_1_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_2_SYNCHRONIZATION' -STREAM_2_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_2_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_2_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_2_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_2_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_2_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_3_SYNCHRONIZATION' -STREAM_3_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_3_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_3_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_3_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_3_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_3_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_4_SYNCHRONIZATION' -STREAM_4_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_4_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_4_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_4_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_4_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_4_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_5_SYNCHRONIZATION' -STREAM_5_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_5_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_5_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_5_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_5_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_5_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_6_SYNCHRONIZATION' -STREAM_6_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_6_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_6_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_6_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_6_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_6_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_7_SYNCHRONIZATION' -STREAM_7_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_7_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_7_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_7_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_7_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_7_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_8_SYNCHRONIZATION' -STREAM_8_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_8_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_8_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_8_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_8_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_8_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_9_SYNCHRONIZATION' -STREAM_9_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_9_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_9_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_9_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_9_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_9_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_10_SYNCHRONIZATION' -STREAM_10_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_10_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_10_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_10_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_10_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_10_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_11_SYNCHRONIZATION' -STREAM_11_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_11_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_11_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_11_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_11_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_11_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_12_SYNCHRONIZATION' -STREAM_12_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_12_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_12_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_12_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_12_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_12_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_13_SYNCHRONIZATION' -STREAM_13_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_13_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_13_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_13_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_13_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_13_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_14_SYNCHRONIZATION' -STREAM_14_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_14_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_14_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_14_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_14_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_14_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_15_SYNCHRONIZATION' -STREAM_15_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_15_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_15_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_15_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_15_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_15_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'CORB_READ_POINTER_RESET' -CORB_READ_POINTER_RESET__enumvalues = { - 0: 'CORB_READ_POINTER_RESET_CORB_DMA_IS_NOT_RESET', - 1: 'CORB_READ_POINTER_RESET_CORB_DMA_IS_RESET', -} -CORB_READ_POINTER_RESET_CORB_DMA_IS_NOT_RESET = 0 -CORB_READ_POINTER_RESET_CORB_DMA_IS_RESET = 1 -CORB_READ_POINTER_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_CORB_SIZE' -AZ_CORB_SIZE__enumvalues = { - 0: 'AZ_CORB_SIZE_2ENTRIES_RESERVED', - 1: 'AZ_CORB_SIZE_16ENTRIES_RESERVED', - 2: 'AZ_CORB_SIZE_256ENTRIES', - 3: 'AZ_CORB_SIZE_RESERVED', -} -AZ_CORB_SIZE_2ENTRIES_RESERVED = 0 -AZ_CORB_SIZE_16ENTRIES_RESERVED = 1 -AZ_CORB_SIZE_256ENTRIES = 2 -AZ_CORB_SIZE_RESERVED = 3 -AZ_CORB_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_RIRB_WRITE_POINTER_RESET' -AZ_RIRB_WRITE_POINTER_RESET__enumvalues = { - 0: 'AZ_RIRB_WRITE_POINTER_NOT_RESET', - 1: 'AZ_RIRB_WRITE_POINTER_DO_RESET', -} -AZ_RIRB_WRITE_POINTER_NOT_RESET = 0 -AZ_RIRB_WRITE_POINTER_DO_RESET = 1 -AZ_RIRB_WRITE_POINTER_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL' -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL__enumvalues = { - 0: 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 1: 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_ENABLED', -} -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_DISABLED = 0 -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_ENABLED = 1 -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL' -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL__enumvalues = { - 0: 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 1: 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_ENABLED', -} -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_DISABLED = 0 -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_ENABLED = 1 -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_RIRB_SIZE' -AZ_RIRB_SIZE__enumvalues = { - 0: 'AZ_RIRB_SIZE_2ENTRIES_RESERVED', - 1: 'AZ_RIRB_SIZE_16ENTRIES_RESERVED', - 2: 'AZ_RIRB_SIZE_256ENTRIES', - 3: 'AZ_RIRB_SIZE_UNDEFINED', -} -AZ_RIRB_SIZE_2ENTRIES_RESERVED = 0 -AZ_RIRB_SIZE_16ENTRIES_RESERVED = 1 -AZ_RIRB_SIZE_256ENTRIES = 2 -AZ_RIRB_SIZE_UNDEFINED = 3 -AZ_RIRB_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID' -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID__enumvalues = { - 0: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_NO_IMMEDIATE_RESPONSE_VALID', - 1: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_IMMEDIATE_RESPONSE_VALID', -} -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_NO_IMMEDIATE_RESPONSE_VALID = 0 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_IMMEDIATE_RESPONSE_VALID = 1 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID = ctypes.c_uint32 # enum - -# values for enumeration 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY' -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY__enumvalues = { - 0: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_NOT_BUSY', - 1: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_IS_BUSY', -} -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_NOT_BUSY = 0 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_IS_BUSY = 1 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY = ctypes.c_uint32 # enum - -# values for enumeration 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE' -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE__enumvalues = { - 0: 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_DISABLE', - 1: 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_ENABLE', -} -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_DISABLE = 0 -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_ENABLE = 1 -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1 = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2 = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4 = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 5: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 6: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 7: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1 = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3 = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED = 5 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED = 6 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED = 7 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 5: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16 = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20 = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24 = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED = 5 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 5: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 6: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 7: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 8: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1 = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2 = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3 = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4 = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5 = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6 = 5 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7 = 6 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8 = 7 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED = 8 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_IS_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_NOT_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_IS_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_NOT_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_NOT_ON', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_ON', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_NOT_ON = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_ON = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ZERO', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ONE', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ZERO = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ONE = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_NOT_ENABLE', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_ENABLE', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_NOT_ENABLE = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_ENABLE = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE' -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_SHUT_OFF', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_DRIVEN', -} -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_SHUT_OFF = 0 -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_DRIVEN = 1 -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE' -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', -} -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT' -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_NO_INFO_OR_PERMITTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_FORBIDDEN', -} -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_NO_INFO_OR_PERMITTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_FORBIDDEN = 1 -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE' -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_0', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_1', - 2: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_2', - 3: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_3', - 4: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_4', - 5: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_5', - 6: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_6', - 7: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_7', - 8: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_8', - 9: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_9', - 10: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_10', - 11: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_11', - 12: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_12', - 13: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_13', - 14: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_14', - 15: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_15', -} -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_0 = 0 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_1 = 1 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_2 = 2 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_3 = 3 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_4 = 4 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_5 = 5 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_6 = 6 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_7 = 7 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_8 = 8 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_9 = 9 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_10 = 10 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_11 = 11 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_12 = 12 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_13 = 13 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_14 = 14 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_15 = 15 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_FORCE_CTRL' -MEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'NO_FORCE_REQUEST', - 1: 'FORCE_LIGHT_SLEEP_REQUEST', - 2: 'FORCE_DEEP_SLEEP_REQUEST', - 3: 'FORCE_SHUT_DOWN_REQUEST', -} -NO_FORCE_REQUEST = 0 -FORCE_LIGHT_SLEEP_REQUEST = 1 -FORCE_DEEP_SLEEP_REQUEST = 2 -FORCE_SHUT_DOWN_REQUEST = 3 -MEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_FORCE_CTRL2' -MEM_PWR_FORCE_CTRL2__enumvalues = { - 0: 'NO_FORCE_REQ', - 1: 'FORCE_LIGHT_SLEEP_REQ', -} -NO_FORCE_REQ = 0 -FORCE_LIGHT_SLEEP_REQ = 1 -MEM_PWR_FORCE_CTRL2 = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_DIS_CTRL' -MEM_PWR_DIS_CTRL__enumvalues = { - 0: 'ENABLE_MEM_PWR_CTRL', - 1: 'DISABLE_MEM_PWR_CTRL', -} -ENABLE_MEM_PWR_CTRL = 0 -DISABLE_MEM_PWR_CTRL = 1 -MEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_SEL_CTRL' -MEM_PWR_SEL_CTRL__enumvalues = { - 0: 'DYNAMIC_SHUT_DOWN_ENABLE', - 1: 'DYNAMIC_DEEP_SLEEP_ENABLE', - 2: 'DYNAMIC_LIGHT_SLEEP_ENABLE', -} -DYNAMIC_SHUT_DOWN_ENABLE = 0 -DYNAMIC_DEEP_SLEEP_ENABLE = 1 -DYNAMIC_LIGHT_SLEEP_ENABLE = 2 -MEM_PWR_SEL_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_SEL_CTRL2' -MEM_PWR_SEL_CTRL2__enumvalues = { - 0: 'DYNAMIC_DEEP_SLEEP_EN', - 1: 'DYNAMIC_LIGHT_SLEEP_EN', -} -DYNAMIC_DEEP_SLEEP_EN = 0 -DYNAMIC_LIGHT_SLEEP_EN = 1 -MEM_PWR_SEL_CTRL2 = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET' -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET__enumvalues = { - 0: 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_NOT_RESET', - 1: 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_RESET_REFCLK_LOGIC', -} -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_NOT_RESET = 0 -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_RESET_REFCLK_LOGIC = 1 -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY' -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY__enumvalues = { - 0: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_ALL', - 1: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_6', - 2: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_5', - 3: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_4', - 4: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_3', - 5: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_2', - 6: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_1', - 7: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_0', -} -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_ALL = 0 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_6 = 1 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_5 = 2 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_4 = 3 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_3 = 4 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_2 = 5 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_1 = 6 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_0 = 7 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY = ctypes.c_uint32 # enum - -# values for enumeration 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY' -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY__enumvalues = { - 0: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_ALL', - 1: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_6', - 2: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_5', - 3: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_4', - 4: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_3', - 5: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_2', - 6: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_1', - 7: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_0', -} -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_ALL = 0 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_6 = 1 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_5 = 2 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_4 = 3 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_3 = 4 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_2 = 5 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_1 = 6 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_0 = 7 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1 = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2 = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4 = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 5: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 6: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 7: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1 = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3 = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED = 5 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED = 6 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED = 7 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 5: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16 = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20 = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24 = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED = 5 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 5: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 6: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 7: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 8: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1 = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2 = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3 = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4 = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5 = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6 = 5 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7 = 6 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8 = 7 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED = 8 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_SHUT_OFF', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_DRIVEN', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_SHUT_OFF = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_DRIVEN = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET' -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET__enumvalues = { - 0: 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_NOT_RESET', - 1: 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_DO_RESET', -} -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_NOT_RESET = 0 -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_DO_RESET = 1 -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_LATENCY_COUNTER_CONTROL' -AZ_LATENCY_COUNTER_CONTROL__enumvalues = { - 0: 'AZ_LATENCY_COUNTER_NO_RESET', - 1: 'AZ_LATENCY_COUNTER_RESET_DONE', -} -AZ_LATENCY_COUNTER_NO_RESET = 0 -AZ_LATENCY_COUNTER_RESET_DONE = 1 -AZ_LATENCY_COUNTER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_NOT_SET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_SET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_NOT_SET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_SET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_NOT_SET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_SET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_NOT_SET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_SET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_NOT_SET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_SET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_NOT_SET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_SET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_NO_TRAFFIC_PRIORITY', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_YES_TRAFFIC_PRIORITY', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_NO_TRAFFIC_PRIORITY = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_YES_TRAFFIC_PRIORITY = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_DISABLED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLED', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_DISABLED = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLED = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_DISABLED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLED', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_DISABLED = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLED = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_DISABLED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_ENABLED', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_DISABLED = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_ENABLED = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RUN', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_DO_RUN', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RUN = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_DO_RUN = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RESET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_IS_RESET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RESET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_IS_RESET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_48KHZ = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_44P1KHZ = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY1 = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY2 = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY4 = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 5: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 6: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 7: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY1 = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY3 = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED = 5 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED = 6 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED = 7 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_16', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_20', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_24', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 5: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_8_RESERVED = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_16 = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_20 = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_24 = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_32_RESERVED = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_RESERVED = 5 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_1', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_2', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_3', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_4', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_5', - 5: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_6', - 6: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_7', - 7: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_8', - 8: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_9_RESERVED', - 9: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_10_RESERVED', - 10: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_11_RESERVED', - 11: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_12_RESERVED', - 12: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_13_RESERVED', - 13: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_14_RESERVED', - 14: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_15_RESERVED', - 15: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_16_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_1 = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_2 = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_3 = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_4 = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_5 = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_6 = 5 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_7 = 6 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_8 = 7 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_9_RESERVED = 8 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_10_RESERVED = 9 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_11_RESERVED = 10 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_12_RESERVED = 11 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_13_RESERVED = 12 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_14_RESERVED = 13 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_15_RESERVED = 14 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_16_RESERVED = 15 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 9: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED = 8 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_FORMAT_OVERRIDE', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_FORMAT_OVERRIDE = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 9: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED = 8 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER_PRESENT', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER_PRESENT = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_EAPD_PIN', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_EAPD_PIN', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_EAPD_PIN = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_EAPD_PIN = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_NOT_BALANCED', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_NOT_BALANCED = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_JACK_DETECTION_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_DETECTION_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_JACK_DETECTION_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_DETECTION_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE' -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 1: 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', -} -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE = 0 -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE = 1 -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE' -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABLILITY', - 1: 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABLILITY', -} -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABLILITY = 0 -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABLILITY = 1 -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 9: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED = 8 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_DIGITAL', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_ANALOG = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_DIGITAL = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_NO_PROCESSING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_PROCESSING_CAPABILITIES', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_NO_PROCESSING_CAPABILITIES = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_PROCESSING_CAPABILITIES = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NOT_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NOT_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_FORMAT_OVERRIDE', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_FORMAT_OVERRIDE = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 9: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED = 8 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESING_CAPABILITIES', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESING_CAPABILITIES = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESING_CAPABILITIES = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_NOT_ENABLED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_ENABLED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_NOT_ENABLED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_ENABLED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_NO_EAPD_PIN', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_HAVE_EAPD_PIN', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_NO_EAPD_PIN = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_HAVE_EAPD_PIN = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_NOT_ENABLED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_ENABLED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_NOT_ENABLED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_ENABLED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_NOT_BALANCED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_NOT_BALANCED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_JACK_PRESENCE_DETECTION_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_PRESENCE_DETECTION_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_JACK_PRESENCE_DETECTION_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_PRESENCE_DETECTION_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_ICH_RESET_ENUM' -DSCC_ICH_RESET_ENUM__enumvalues = { - 1: 'DSCC_ICH_RESET_ENUM_SLICE0_ICH_RESET', - 2: 'DSCC_ICH_RESET_ENUM_SLICE1_ICH_RESET', - 4: 'DSCC_ICH_RESET_ENUM_SLICE2_ICH_RESET', - 8: 'DSCC_ICH_RESET_ENUM_SLICE3_ICH_RESET', -} -DSCC_ICH_RESET_ENUM_SLICE0_ICH_RESET = 1 -DSCC_ICH_RESET_ENUM_SLICE1_ICH_RESET = 2 -DSCC_ICH_RESET_ENUM_SLICE2_ICH_RESET = 4 -DSCC_ICH_RESET_ENUM_SLICE3_ICH_RESET = 8 -DSCC_ICH_RESET_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_DSC_VERSION_MINOR_ENUM' -DSCC_DSC_VERSION_MINOR_ENUM__enumvalues = { - 1: 'DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_1_MINOR_VERSION', - 2: 'DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_2_MINOR_VERSION', -} -DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_1_MINOR_VERSION = 1 -DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_2_MINOR_VERSION = 2 -DSCC_DSC_VERSION_MINOR_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_DSC_VERSION_MAJOR_ENUM' -DSCC_DSC_VERSION_MAJOR_ENUM__enumvalues = { - 1: 'DSCC_DSC_VERSION_MAJOR_ENUM_DSC_1_X_MAJOR_VERSION', -} -DSCC_DSC_VERSION_MAJOR_ENUM_DSC_1_X_MAJOR_VERSION = 1 -DSCC_DSC_VERSION_MAJOR_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_LINEBUF_DEPTH_ENUM' -DSCC_LINEBUF_DEPTH_ENUM__enumvalues = { - 8: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_8_BIT', - 9: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_9_BIT', - 10: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_10_BIT', - 11: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_11_BIT', - 12: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_12_BIT', - 13: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_13_BIT', -} -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_8_BIT = 8 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_9_BIT = 9 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_10_BIT = 10 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_11_BIT = 11 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_12_BIT = 12 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_13_BIT = 13 -DSCC_LINEBUF_DEPTH_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_BITS_PER_COMPONENT_ENUM' -DSCC_BITS_PER_COMPONENT_ENUM__enumvalues = { - 8: 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT', - 10: 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT', - 12: 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT', -} -DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT = 8 -DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT = 10 -DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT = 12 -DSCC_BITS_PER_COMPONENT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_ENABLE_ENUM' -DSCC_ENABLE_ENUM__enumvalues = { - 0: 'DSCC_ENABLE_ENUM_DISABLED', - 1: 'DSCC_ENABLE_ENUM_ENABLED', -} -DSCC_ENABLE_ENUM_DISABLED = 0 -DSCC_ENABLE_ENUM_ENABLED = 1 -DSCC_ENABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_MEM_PWR_FORCE_ENUM' -DSCC_MEM_PWR_FORCE_ENUM__enumvalues = { - 0: 'DSCC_MEM_PWR_FORCE_ENUM_NO_FORCE_REQUEST', - 1: 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_SHUT_DOWN_REQUEST', -} -DSCC_MEM_PWR_FORCE_ENUM_NO_FORCE_REQUEST = 0 -DSCC_MEM_PWR_FORCE_ENUM_FORCE_LIGHT_SLEEP_REQUEST = 1 -DSCC_MEM_PWR_FORCE_ENUM_FORCE_DEEP_SLEEP_REQUEST = 2 -DSCC_MEM_PWR_FORCE_ENUM_FORCE_SHUT_DOWN_REQUEST = 3 -DSCC_MEM_PWR_FORCE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'POWER_STATE_ENUM' -POWER_STATE_ENUM__enumvalues = { - 0: 'POWER_STATE_ENUM_ON', - 1: 'POWER_STATE_ENUM_LS', - 2: 'POWER_STATE_ENUM_DS', - 3: 'POWER_STATE_ENUM_SD', -} -POWER_STATE_ENUM_ON = 0 -POWER_STATE_ENUM_LS = 1 -POWER_STATE_ENUM_DS = 2 -POWER_STATE_ENUM_SD = 3 -POWER_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_MEM_PWR_DIS_ENUM' -DSCC_MEM_PWR_DIS_ENUM__enumvalues = { - 0: 'DSCC_MEM_PWR_DIS_ENUM_REQUEST_EN', - 1: 'DSCC_MEM_PWR_DIS_ENUM_REQUEST_DIS', -} -DSCC_MEM_PWR_DIS_ENUM_REQUEST_EN = 0 -DSCC_MEM_PWR_DIS_ENUM_REQUEST_DIS = 1 -DSCC_MEM_PWR_DIS_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCCIF_ENABLE_ENUM' -DSCCIF_ENABLE_ENUM__enumvalues = { - 0: 'DSCCIF_ENABLE_ENUM_DISABLED', - 1: 'DSCCIF_ENABLE_ENUM_ENABLED', -} -DSCCIF_ENABLE_ENUM_DISABLED = 0 -DSCCIF_ENABLE_ENUM_ENABLED = 1 -DSCCIF_ENABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM' -DSCCIF_INPUT_PIXEL_FORMAT_ENUM__enumvalues = { - 0: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_RGB', - 1: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_YCBCR_444', - 2: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_SIMPLE_YCBCR_422', - 3: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_422', - 4: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_420', -} -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_RGB = 0 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_YCBCR_444 = 1 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_SIMPLE_YCBCR_422 = 2 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_422 = 3 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_420 = 4 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCCIF_BITS_PER_COMPONENT_ENUM' -DSCCIF_BITS_PER_COMPONENT_ENUM__enumvalues = { - 8: 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT', - 10: 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT', - 12: 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT', -} -DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT = 8 -DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT = 10 -DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT = 12 -DSCCIF_BITS_PER_COMPONENT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'ENABLE_ENUM' -ENABLE_ENUM__enumvalues = { - 0: 'ENABLE_ENUM_DISABLED', - 1: 'ENABLE_ENUM_ENABLED', -} -ENABLE_ENUM_DISABLED = 0 -ENABLE_ENUM_ENABLED = 1 -ENABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CLOCK_GATING_DISABLE_ENUM' -CLOCK_GATING_DISABLE_ENUM__enumvalues = { - 0: 'CLOCK_GATING_DISABLE_ENUM_ENABLED', - 1: 'CLOCK_GATING_DISABLE_ENUM_DISABLED', -} -CLOCK_GATING_DISABLE_ENUM_ENABLED = 0 -CLOCK_GATING_DISABLE_ENUM_DISABLED = 1 -CLOCK_GATING_DISABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'TEST_CLOCK_MUX_SELECT_ENUM' -TEST_CLOCK_MUX_SELECT_ENUM__enumvalues = { - 0: 'TEST_CLOCK_MUX_SELECT_DISPCLK_P', - 1: 'TEST_CLOCK_MUX_SELECT_DISPCLK_G', - 2: 'TEST_CLOCK_MUX_SELECT_DISPCLK_R', - 3: 'TEST_CLOCK_MUX_SELECT_DSCCLK_P', - 4: 'TEST_CLOCK_MUX_SELECT_DSCCLK_G', - 5: 'TEST_CLOCK_MUX_SELECT_DSCCLK_R', -} -TEST_CLOCK_MUX_SELECT_DISPCLK_P = 0 -TEST_CLOCK_MUX_SELECT_DISPCLK_G = 1 -TEST_CLOCK_MUX_SELECT_DISPCLK_R = 2 -TEST_CLOCK_MUX_SELECT_DSCCLK_P = 3 -TEST_CLOCK_MUX_SELECT_DSCCLK_G = 4 -TEST_CLOCK_MUX_SELECT_DSCCLK_R = 5 -TEST_CLOCK_MUX_SELECT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WB_ENABLE_ENUM' -WB_ENABLE_ENUM__enumvalues = { - 0: 'WB_EN_DISABLE', - 1: 'WB_EN_ENABLE', -} -WB_EN_DISABLE = 0 -WB_EN_ENABLE = 1 -WB_ENABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WB_CLK_GATE_DIS_ENUM' -WB_CLK_GATE_DIS_ENUM__enumvalues = { - 0: 'WB_CLK_GATE_ENABLE', - 1: 'WB_CLK_GATE_DISABLE', -} -WB_CLK_GATE_ENABLE = 0 -WB_CLK_GATE_DISABLE = 1 -WB_CLK_GATE_DIS_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WB_MEM_PWR_DIS_ENUM' -WB_MEM_PWR_DIS_ENUM__enumvalues = { - 0: 'WB_MEM_PWR_ENABLE', - 1: 'WB_MEM_PWR_DISABLE', -} -WB_MEM_PWR_ENABLE = 0 -WB_MEM_PWR_DISABLE = 1 -WB_MEM_PWR_DIS_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WB_TEST_CLK_SEL_ENUM' -WB_TEST_CLK_SEL_ENUM__enumvalues = { - 0: 'WB_TEST_CLK_SEL_REG', - 1: 'WB_TEST_CLK_SEL_WB', - 2: 'WB_TEST_CLK_SEL_WBSCL', - 3: 'WB_TEST_CLK_SEL_PERM', -} -WB_TEST_CLK_SEL_REG = 0 -WB_TEST_CLK_SEL_WB = 1 -WB_TEST_CLK_SEL_WBSCL = 2 -WB_TEST_CLK_SEL_PERM = 3 -WB_TEST_CLK_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_LB_MEM_PWR_MODE_SEL_ENUM' -WBSCL_LB_MEM_PWR_MODE_SEL_ENUM__enumvalues = { - 0: 'WBSCL_LB_MEM_PWR_MODE_SEL_SD', - 1: 'WBSCL_LB_MEM_PWR_MODE_SEL_DS', - 2: 'WBSCL_LB_MEM_PWR_MODE_SEL_LS', - 3: 'WBSCL_LB_MEM_PWR_MODE_SEL_ON', -} -WBSCL_LB_MEM_PWR_MODE_SEL_SD = 0 -WBSCL_LB_MEM_PWR_MODE_SEL_DS = 1 -WBSCL_LB_MEM_PWR_MODE_SEL_LS = 2 -WBSCL_LB_MEM_PWR_MODE_SEL_ON = 3 -WBSCL_LB_MEM_PWR_MODE_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_LB_MEM_PWR_FORCE_ENUM' -WBSCL_LB_MEM_PWR_FORCE_ENUM__enumvalues = { - 0: 'WBSCL_LB_MEM_PWR_FORCE_NO', - 1: 'WBSCL_LB_MEM_PWR_FORCE_LS', - 2: 'WBSCL_LB_MEM_PWR_FORCE_DS', - 3: 'WBSCL_LB_MEM_PWR_FORCE_SD', -} -WBSCL_LB_MEM_PWR_FORCE_NO = 0 -WBSCL_LB_MEM_PWR_FORCE_LS = 1 -WBSCL_LB_MEM_PWR_FORCE_DS = 2 -WBSCL_LB_MEM_PWR_FORCE_SD = 3 -WBSCL_LB_MEM_PWR_FORCE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_MEM_PWR_STATE_ENUM' -WBSCL_MEM_PWR_STATE_ENUM__enumvalues = { - 0: 'WBSCL_MEM_PWR_STATE_ON', - 1: 'WBSCL_MEM_PWR_STATE_LS', - 2: 'WBSCL_MEM_PWR_STATE_DS', - 3: 'WBSCL_MEM_PWR_STATE_SD', -} -WBSCL_MEM_PWR_STATE_ON = 0 -WBSCL_MEM_PWR_STATE_LS = 1 -WBSCL_MEM_PWR_STATE_DS = 2 -WBSCL_MEM_PWR_STATE_SD = 3 -WBSCL_MEM_PWR_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_LUT_MEM_PWR_STATE_ENUM' -WBSCL_LUT_MEM_PWR_STATE_ENUM__enumvalues = { - 0: 'WBSCL_LUT_MEM_PWR_STATE_ON', - 1: 'WBSCL_LUT_MEM_PWR_STATE_LS', - 2: 'WBSCL_LUT_MEM_PWR_STATE_RESERVED2', - 3: 'WBSCL_LUT_MEM_PWR_STATE_RESERVED3', -} -WBSCL_LUT_MEM_PWR_STATE_ON = 0 -WBSCL_LUT_MEM_PWR_STATE_LS = 1 -WBSCL_LUT_MEM_PWR_STATE_RESERVED2 = 2 -WBSCL_LUT_MEM_PWR_STATE_RESERVED3 = 3 -WBSCL_LUT_MEM_PWR_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WB_RAM_PW_SAVE_MODE_ENUM' -WB_RAM_PW_SAVE_MODE_ENUM__enumvalues = { - 0: 'WB_RAM_PW_SAVE_MODE_LS', - 1: 'WB_RAM_PW_SAVE_MODE_SD', -} -WB_RAM_PW_SAVE_MODE_LS = 0 -WB_RAM_PW_SAVE_MODE_SD = 1 -WB_RAM_PW_SAVE_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CNV_OUT_BPC_ENUM' -CNV_OUT_BPC_ENUM__enumvalues = { - 0: 'CNV_OUT_BPC_8BPC', - 1: 'CNV_OUT_BPC_10BPC', -} -CNV_OUT_BPC_8BPC = 0 -CNV_OUT_BPC_10BPC = 1 -CNV_OUT_BPC_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CNV_FRAME_CAPTURE_RATE_ENUM' -CNV_FRAME_CAPTURE_RATE_ENUM__enumvalues = { - 0: 'CNV_FRAME_CAPTURE_RATE_0', - 1: 'CNV_FRAME_CAPTURE_RATE_1', - 2: 'CNV_FRAME_CAPTURE_RATE_2', - 3: 'CNV_FRAME_CAPTURE_RATE_3', -} -CNV_FRAME_CAPTURE_RATE_0 = 0 -CNV_FRAME_CAPTURE_RATE_1 = 1 -CNV_FRAME_CAPTURE_RATE_2 = 2 -CNV_FRAME_CAPTURE_RATE_3 = 3 -CNV_FRAME_CAPTURE_RATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CNV_WINDOW_CROP_EN_ENUM' -CNV_WINDOW_CROP_EN_ENUM__enumvalues = { - 0: 'CNV_WINDOW_CROP_DISABLE', - 1: 'CNV_WINDOW_CROP_ENABLE', -} -CNV_WINDOW_CROP_DISABLE = 0 -CNV_WINDOW_CROP_ENABLE = 1 -CNV_WINDOW_CROP_EN_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CNV_INTERLACED_MODE_ENUM' -CNV_INTERLACED_MODE_ENUM__enumvalues = { - 0: 'CNV_INTERLACED_MODE_PROGRESSIVE', - 1: 'CNV_INTERLACED_MODE_INTERLACED', -} -CNV_INTERLACED_MODE_PROGRESSIVE = 0 -CNV_INTERLACED_MODE_INTERLACED = 1 -CNV_INTERLACED_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CNV_EYE_SELECT' -CNV_EYE_SELECT__enumvalues = { - 0: 'STEREO_DISABLED', - 1: 'LEFT_EYE', - 2: 'RIGHT_EYE', - 3: 'BOTH_EYE', -} -STEREO_DISABLED = 0 -LEFT_EYE = 1 -RIGHT_EYE = 2 -BOTH_EYE = 3 -CNV_EYE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'CNV_STEREO_TYPE_ENUM' -CNV_STEREO_TYPE_ENUM__enumvalues = { - 0: 'CNV_STEREO_TYPE_RESERVED0', - 1: 'CNV_STEREO_TYPE_RESERVED1', - 2: 'CNV_STEREO_TYPE_RESERVED2', - 3: 'CNV_STEREO_TYPE_FRAME_SEQUENTIAL', -} -CNV_STEREO_TYPE_RESERVED0 = 0 -CNV_STEREO_TYPE_RESERVED1 = 1 -CNV_STEREO_TYPE_RESERVED2 = 2 -CNV_STEREO_TYPE_FRAME_SEQUENTIAL = 3 -CNV_STEREO_TYPE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CNV_STEREO_POLARITY_ENUM' -CNV_STEREO_POLARITY_ENUM__enumvalues = { - 0: 'CNV_STEREO_POLARITY_LEFT', - 1: 'CNV_STEREO_POLARITY_RIGHT', -} -CNV_STEREO_POLARITY_LEFT = 0 -CNV_STEREO_POLARITY_RIGHT = 1 -CNV_STEREO_POLARITY_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CNV_INTERLACED_FIELD_ORDER_ENUM' -CNV_INTERLACED_FIELD_ORDER_ENUM__enumvalues = { - 0: 'CNV_INTERLACED_FIELD_ORDER_TOP', - 1: 'CNV_INTERLACED_FIELD_ORDER_BOT', -} -CNV_INTERLACED_FIELD_ORDER_TOP = 0 -CNV_INTERLACED_FIELD_ORDER_BOT = 1 -CNV_INTERLACED_FIELD_ORDER_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CNV_STEREO_SPLIT_ENUM' -CNV_STEREO_SPLIT_ENUM__enumvalues = { - 0: 'CNV_STEREO_SPLIT_DISABLE', - 1: 'CNV_STEREO_SPLIT_ENABLE', -} -CNV_STEREO_SPLIT_DISABLE = 0 -CNV_STEREO_SPLIT_ENABLE = 1 -CNV_STEREO_SPLIT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CNV_NEW_CONTENT_ENUM' -CNV_NEW_CONTENT_ENUM__enumvalues = { - 0: 'CNV_NEW_CONTENT_NEG', - 1: 'CNV_NEW_CONTENT_POS', -} -CNV_NEW_CONTENT_NEG = 0 -CNV_NEW_CONTENT_POS = 1 -CNV_NEW_CONTENT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CNV_FRAME_CAPTURE_EN_ENUM' -CNV_FRAME_CAPTURE_EN_ENUM__enumvalues = { - 0: 'CNV_FRAME_CAPTURE_DISABLE', - 1: 'CNV_FRAME_CAPTURE_ENABLE', -} -CNV_FRAME_CAPTURE_DISABLE = 0 -CNV_FRAME_CAPTURE_ENABLE = 1 -CNV_FRAME_CAPTURE_EN_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CNV_UPDATE_PENDING_ENUM' -CNV_UPDATE_PENDING_ENUM__enumvalues = { - 0: 'CNV_UPDATE_PENDING_NEG', - 1: 'CNV_UPDATE_PENDING_POS', -} -CNV_UPDATE_PENDING_NEG = 0 -CNV_UPDATE_PENDING_POS = 1 -CNV_UPDATE_PENDING_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CNV_UPDATE_LOCK_ENUM' -CNV_UPDATE_LOCK_ENUM__enumvalues = { - 0: 'CNV_UPDATE_UNLOCK', - 1: 'CNV_UPDATE_LOCK', -} -CNV_UPDATE_UNLOCK = 0 -CNV_UPDATE_LOCK = 1 -CNV_UPDATE_LOCK_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CNV_CSC_BYPASS_ENUM' -CNV_CSC_BYPASS_ENUM__enumvalues = { - 0: 'CNV_CSC_BYPASS_NEG', - 1: 'CNV_CSC_BYPASS_POS', -} -CNV_CSC_BYPASS_NEG = 0 -CNV_CSC_BYPASS_POS = 1 -CNV_CSC_BYPASS_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CNV_TEST_CRC_EN_ENUM' -CNV_TEST_CRC_EN_ENUM__enumvalues = { - 0: 'CNV_TEST_CRC_DISABLE', - 1: 'CNV_TEST_CRC_ENABLE', -} -CNV_TEST_CRC_DISABLE = 0 -CNV_TEST_CRC_ENABLE = 1 -CNV_TEST_CRC_EN_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CNV_TEST_CRC_CONT_EN_ENUM' -CNV_TEST_CRC_CONT_EN_ENUM__enumvalues = { - 0: 'CNV_TEST_CRC_CONT_DISABLE', - 1: 'CNV_TEST_CRC_CONT_ENABLE', -} -CNV_TEST_CRC_CONT_DISABLE = 0 -CNV_TEST_CRC_CONT_ENABLE = 1 -CNV_TEST_CRC_CONT_EN_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WB_SOFT_RESET_ENUM' -WB_SOFT_RESET_ENUM__enumvalues = { - 0: 'WB_SOFT_RESET_NEG', - 1: 'WB_SOFT_RESET_POS', -} -WB_SOFT_RESET_NEG = 0 -WB_SOFT_RESET_POS = 1 -WB_SOFT_RESET_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_GMC_WARM_UP_ENABLE_ENUM' -DWB_GMC_WARM_UP_ENABLE_ENUM__enumvalues = { - 0: 'DWB_GMC_WARM_UP_DISABLE', - 1: 'DWB_GMC_WARM_UP_ENABLE', -} -DWB_GMC_WARM_UP_DISABLE = 0 -DWB_GMC_WARM_UP_ENABLE = 1 -DWB_GMC_WARM_UP_ENABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_MODE_WARMUP_ENUM' -DWB_MODE_WARMUP_ENUM__enumvalues = { - 0: 'DWB_MODE_WARMUP_420', - 1: 'DWB_MODE_WARMUP_444', -} -DWB_MODE_WARMUP_420 = 0 -DWB_MODE_WARMUP_444 = 1 -DWB_MODE_WARMUP_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_DATA_DEPTH_WARMUP_ENUM' -DWB_DATA_DEPTH_WARMUP_ENUM__enumvalues = { - 0: 'DWB_DATA_DEPTH_WARMUP_8BPC', - 1: 'DWB_DATA_DEPTH_WARMUP_10BPC', -} -DWB_DATA_DEPTH_WARMUP_8BPC = 0 -DWB_DATA_DEPTH_WARMUP_10BPC = 1 -DWB_DATA_DEPTH_WARMUP_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_COEF_RAM_TAP_PAIR_IDX_ENUM' -WBSCL_COEF_RAM_TAP_PAIR_IDX_ENUM__enumvalues = { - 0: 'WBSCL_COEF_RAM_TAP_PAIR_IDX0', - 1: 'WBSCL_COEF_RAM_TAP_PAIR_IDX1', - 2: 'WBSCL_COEF_RAM_TAP_PAIR_IDX2', - 3: 'WBSCL_COEF_RAM_TAP_PAIR_IDX3', - 4: 'WBSCL_COEF_RAM_TAP_PAIR_IDX4', - 5: 'WBSCL_COEF_RAM_TAP_PAIR_IDX5', -} -WBSCL_COEF_RAM_TAP_PAIR_IDX0 = 0 -WBSCL_COEF_RAM_TAP_PAIR_IDX1 = 1 -WBSCL_COEF_RAM_TAP_PAIR_IDX2 = 2 -WBSCL_COEF_RAM_TAP_PAIR_IDX3 = 3 -WBSCL_COEF_RAM_TAP_PAIR_IDX4 = 4 -WBSCL_COEF_RAM_TAP_PAIR_IDX5 = 5 -WBSCL_COEF_RAM_TAP_PAIR_IDX_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_COEF_RAM_PHASE_ENUM' -WBSCL_COEF_RAM_PHASE_ENUM__enumvalues = { - 0: 'WBSCL_COEF_RAM_PHASE0', - 1: 'WBSCL_COEF_RAM_PHASE1', - 2: 'WBSCL_COEF_RAM_PHASE2', - 3: 'WBSCL_COEF_RAM_PHASE3', - 4: 'WBSCL_COEF_RAM_PHASE4', - 5: 'WBSCL_COEF_RAM_PHASE5', - 6: 'WBSCL_COEF_RAM_PHASE6', - 7: 'WBSCL_COEF_RAM_PHASE7', - 8: 'WBSCL_COEF_RAM_PHASE8', -} -WBSCL_COEF_RAM_PHASE0 = 0 -WBSCL_COEF_RAM_PHASE1 = 1 -WBSCL_COEF_RAM_PHASE2 = 2 -WBSCL_COEF_RAM_PHASE3 = 3 -WBSCL_COEF_RAM_PHASE4 = 4 -WBSCL_COEF_RAM_PHASE5 = 5 -WBSCL_COEF_RAM_PHASE6 = 6 -WBSCL_COEF_RAM_PHASE7 = 7 -WBSCL_COEF_RAM_PHASE8 = 8 -WBSCL_COEF_RAM_PHASE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_COEF_RAM_FILTER_TYPE_ENUM' -WBSCL_COEF_RAM_FILTER_TYPE_ENUM__enumvalues = { - 0: 'WBSCL_COEF_RAM_FILTER_TYPE_VL', - 1: 'WBSCL_COEF_RAM_FILTER_TYPE_VC', - 2: 'WBSCL_COEF_RAM_FILTER_TYPE_HL', - 3: 'WBSCL_COEF_RAM_FILTER_TYPE_HC', -} -WBSCL_COEF_RAM_FILTER_TYPE_VL = 0 -WBSCL_COEF_RAM_FILTER_TYPE_VC = 1 -WBSCL_COEF_RAM_FILTER_TYPE_HL = 2 -WBSCL_COEF_RAM_FILTER_TYPE_HC = 3 -WBSCL_COEF_RAM_FILTER_TYPE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_COEF_FILTER_TYPE_SEL' -WBSCL_COEF_FILTER_TYPE_SEL__enumvalues = { - 0: 'WBSCL_COEF_LUMA_VERT_FILTER', - 1: 'WBSCL_COEF_CHROMA_VERT_FILTER', - 2: 'WBSCL_COEF_LUMA_HORZ_FILTER', - 3: 'WBSCL_COEF_CHROMA_HORZ_FILTER', -} -WBSCL_COEF_LUMA_VERT_FILTER = 0 -WBSCL_COEF_CHROMA_VERT_FILTER = 1 -WBSCL_COEF_LUMA_HORZ_FILTER = 2 -WBSCL_COEF_CHROMA_HORZ_FILTER = 3 -WBSCL_COEF_FILTER_TYPE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_MODE_SEL' -WBSCL_MODE_SEL__enumvalues = { - 0: 'WBSCL_MODE_SCALING_444_BYPASS', - 1: 'WBSCL_MODE_SCALING_444_RGB_ENABLE', - 2: 'WBSCL_MODE_SCALING_444_YCBCR_ENABLE', - 3: 'WBSCL_MODE_SCALING_YCBCR_ENABLE', -} -WBSCL_MODE_SCALING_444_BYPASS = 0 -WBSCL_MODE_SCALING_444_RGB_ENABLE = 1 -WBSCL_MODE_SCALING_444_YCBCR_ENABLE = 2 -WBSCL_MODE_SCALING_YCBCR_ENABLE = 3 -WBSCL_MODE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_PIXEL_DEPTH' -WBSCL_PIXEL_DEPTH__enumvalues = { - 0: 'PIXEL_DEPTH_8BPC', - 1: 'PIXEL_DEPTH_10BPC', -} -PIXEL_DEPTH_8BPC = 0 -PIXEL_DEPTH_10BPC = 1 -WBSCL_PIXEL_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_COEF_RAM_SEL_ENUM' -WBSCL_COEF_RAM_SEL_ENUM__enumvalues = { - 0: 'WBSCL_COEF_RAM_SEL_0', - 1: 'WBSCL_COEF_RAM_SEL_1', -} -WBSCL_COEF_RAM_SEL_0 = 0 -WBSCL_COEF_RAM_SEL_1 = 1 -WBSCL_COEF_RAM_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_COEF_RAM_RD_SEL_ENUM' -WBSCL_COEF_RAM_RD_SEL_ENUM__enumvalues = { - 0: 'WBSCL_COEF_RAM_RD_SEL_0', - 1: 'WBSCL_COEF_RAM_RD_SEL_1', -} -WBSCL_COEF_RAM_RD_SEL_0 = 0 -WBSCL_COEF_RAM_RD_SEL_1 = 1 -WBSCL_COEF_RAM_RD_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_COEF_RAM_TAP_COEF_EN_ENUM' -WBSCL_COEF_RAM_TAP_COEF_EN_ENUM__enumvalues = { - 0: 'WBSCL_COEF_RAM_TAP_COEF_DISABLE', - 1: 'WBSCL_COEF_RAM_TAP_COEF_ENABLE', -} -WBSCL_COEF_RAM_TAP_COEF_DISABLE = 0 -WBSCL_COEF_RAM_TAP_COEF_ENABLE = 1 -WBSCL_COEF_RAM_TAP_COEF_EN_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_NUM_OF_TAPS_ENUM' -WBSCL_NUM_OF_TAPS_ENUM__enumvalues = { - 0: 'WBSCL_NUM_OF_TAPS0', - 1: 'WBSCL_NUM_OF_TAPS1', - 2: 'WBSCL_NUM_OF_TAPS2', - 3: 'WBSCL_NUM_OF_TAPS3', - 4: 'WBSCL_NUM_OF_TAPS4', - 5: 'WBSCL_NUM_OF_TAPS5', - 6: 'WBSCL_NUM_OF_TAPS6', - 7: 'WBSCL_NUM_OF_TAPS7', - 8: 'WBSCL_NUM_OF_TAPS8', - 9: 'WBSCL_NUM_OF_TAPS9', - 10: 'WBSCL_NUM_OF_TAPS10', - 11: 'WBSCL_NUM_OF_TAPS11', -} -WBSCL_NUM_OF_TAPS0 = 0 -WBSCL_NUM_OF_TAPS1 = 1 -WBSCL_NUM_OF_TAPS2 = 2 -WBSCL_NUM_OF_TAPS3 = 3 -WBSCL_NUM_OF_TAPS4 = 4 -WBSCL_NUM_OF_TAPS5 = 5 -WBSCL_NUM_OF_TAPS6 = 6 -WBSCL_NUM_OF_TAPS7 = 7 -WBSCL_NUM_OF_TAPS8 = 8 -WBSCL_NUM_OF_TAPS9 = 9 -WBSCL_NUM_OF_TAPS10 = 10 -WBSCL_NUM_OF_TAPS11 = 11 -WBSCL_NUM_OF_TAPS_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_STATUS_ACK_ENUM' -WBSCL_STATUS_ACK_ENUM__enumvalues = { - 0: 'WBSCL_STATUS_ACK_NCLR', - 1: 'WBSCL_STATUS_ACK_CLR', -} -WBSCL_STATUS_ACK_NCLR = 0 -WBSCL_STATUS_ACK_CLR = 1 -WBSCL_STATUS_ACK_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_STATUS_MASK_ENUM' -WBSCL_STATUS_MASK_ENUM__enumvalues = { - 0: 'WBSCL_STATUS_MASK_DISABLE', - 1: 'WBSCL_STATUS_MASK_ENABLE', -} -WBSCL_STATUS_MASK_DISABLE = 0 -WBSCL_STATUS_MASK_ENABLE = 1 -WBSCL_STATUS_MASK_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_DATA_OVERFLOW_INT_TYPE_ENUM' -WBSCL_DATA_OVERFLOW_INT_TYPE_ENUM__enumvalues = { - 0: 'WBSCL_DATA_OVERFLOW_INT_TYPE_REG', - 1: 'WBSCL_DATA_OVERFLOW_INT_TYPE_HW', -} -WBSCL_DATA_OVERFLOW_INT_TYPE_REG = 0 -WBSCL_DATA_OVERFLOW_INT_TYPE_HW = 1 -WBSCL_DATA_OVERFLOW_INT_TYPE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_HOST_CONFLICT_INT_TYPE_ENUM' -WBSCL_HOST_CONFLICT_INT_TYPE_ENUM__enumvalues = { - 0: 'WBSCL_HOST_CONFLICT_INT_TYPE_REG', - 1: 'WBSCL_HOST_CONFLICT_INT_TYPE_HW', -} -WBSCL_HOST_CONFLICT_INT_TYPE_REG = 0 -WBSCL_HOST_CONFLICT_INT_TYPE_HW = 1 -WBSCL_HOST_CONFLICT_INT_TYPE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_TEST_CRC_EN_ENUM' -WBSCL_TEST_CRC_EN_ENUM__enumvalues = { - 0: 'WBSCL_TEST_CRC_DISABLE', - 1: 'WBSCL_TEST_CRC_ENABLE', -} -WBSCL_TEST_CRC_DISABLE = 0 -WBSCL_TEST_CRC_ENABLE = 1 -WBSCL_TEST_CRC_EN_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_TEST_CRC_CONT_EN_ENUM' -WBSCL_TEST_CRC_CONT_EN_ENUM__enumvalues = { - 0: 'WBSCL_TEST_CRC_CONT_DISABLE', - 1: 'WBSCL_TEST_CRC_CONT_ENABLE', -} -WBSCL_TEST_CRC_CONT_DISABLE = 0 -WBSCL_TEST_CRC_CONT_ENABLE = 1 -WBSCL_TEST_CRC_CONT_EN_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_TEST_CRC_MASK_ENUM' -WBSCL_TEST_CRC_MASK_ENUM__enumvalues = { - 0: 'WBSCL_TEST_CRC_MASKED', - 1: 'WBSCL_TEST_CRC_UNMASKED', -} -WBSCL_TEST_CRC_MASKED = 0 -WBSCL_TEST_CRC_UNMASKED = 1 -WBSCL_TEST_CRC_MASK_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_BACKPRESSURE_CNT_EN_ENUM' -WBSCL_BACKPRESSURE_CNT_EN_ENUM__enumvalues = { - 0: 'WBSCL_BACKPRESSURE_CNT_DISABLE', - 1: 'WBSCL_BACKPRESSURE_CNT_ENABLE', -} -WBSCL_BACKPRESSURE_CNT_DISABLE = 0 -WBSCL_BACKPRESSURE_CNT_ENABLE = 1 -WBSCL_BACKPRESSURE_CNT_EN_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'WBSCL_OUTSIDE_PIX_STRATEGY_ENUM' -WBSCL_OUTSIDE_PIX_STRATEGY_ENUM__enumvalues = { - 0: 'WBSCL_OUTSIDE_PIX_STRATEGY_BLACK', - 1: 'WBSCL_OUTSIDE_PIX_STRATEGY_EDGE', -} -WBSCL_OUTSIDE_PIX_STRATEGY_BLACK = 0 -WBSCL_OUTSIDE_PIX_STRATEGY_EDGE = 1 -WBSCL_OUTSIDE_PIX_STRATEGY_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DPCSRX_RX_CLOCK_CNTL_DPCS_SYMCLK_RX_SEL' -DPCSRX_RX_CLOCK_CNTL_DPCS_SYMCLK_RX_SEL__enumvalues = { - 0: 'DPCSRX_BPHY_PCS_RX0_CLK', - 1: 'DPCSRX_BPHY_PCS_RX1_CLK', - 2: 'DPCSRX_BPHY_PCS_RX2_CLK', - 3: 'DPCSRX_BPHY_PCS_RX3_CLK', -} -DPCSRX_BPHY_PCS_RX0_CLK = 0 -DPCSRX_BPHY_PCS_RX1_CLK = 1 -DPCSRX_BPHY_PCS_RX2_CLK = 2 -DPCSRX_BPHY_PCS_RX3_CLK = 3 -DPCSRX_RX_CLOCK_CNTL_DPCS_SYMCLK_RX_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPCSTX_DVI_LINK_MODE' -DPCSTX_DVI_LINK_MODE__enumvalues = { - 0: 'DPCSTX_DVI_LINK_MODE_NORMAL', - 1: 'DPCSTX_DVI_LINK_MODE_DUAL_LINK_MASTER', - 2: 'DPCSTX_DVI_LINK_MODE_DUAL_LINK_SLAVER', -} -DPCSTX_DVI_LINK_MODE_NORMAL = 0 -DPCSTX_DVI_LINK_MODE_DUAL_LINK_MASTER = 1 -DPCSTX_DVI_LINK_MODE_DUAL_LINK_SLAVER = 2 -DPCSTX_DVI_LINK_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CNTL_RDPCS_CBUS_SOFT_RESET' -RDPCSTX_CNTL_RDPCS_CBUS_SOFT_RESET__enumvalues = { - 0: 'RDPCS_CBUS_SOFT_RESET_DISABLE', - 1: 'RDPCS_CBUS_SOFT_RESET_ENABLE', -} -RDPCS_CBUS_SOFT_RESET_DISABLE = 0 -RDPCS_CBUS_SOFT_RESET_ENABLE = 1 -RDPCSTX_CNTL_RDPCS_CBUS_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CNTL_RDPCS_SRAM_SOFT_RESET' -RDPCSTX_CNTL_RDPCS_SRAM_SOFT_RESET__enumvalues = { - 0: 'RDPCS_SRAM_SRAM_RESET_DISABLE', -} -RDPCS_SRAM_SRAM_RESET_DISABLE = 0 -RDPCSTX_CNTL_RDPCS_SRAM_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CNTL_RDPCS_TX_FIFO_LANE_EN' -RDPCSTX_CNTL_RDPCS_TX_FIFO_LANE_EN__enumvalues = { - 0: 'RDPCS_TX_FIFO_LANE_DISABLE', - 1: 'RDPCS_TX_FIFO_LANE_ENABLE', -} -RDPCS_TX_FIFO_LANE_DISABLE = 0 -RDPCS_TX_FIFO_LANE_ENABLE = 1 -RDPCSTX_CNTL_RDPCS_TX_FIFO_LANE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CNTL_RDPCS_TX_FIFO_EN' -RDPCSTX_CNTL_RDPCS_TX_FIFO_EN__enumvalues = { - 0: 'RDPCS_TX_FIFO_DISABLE', - 1: 'RDPCS_TX_FIFO_ENABLE', -} -RDPCS_TX_FIFO_DISABLE = 0 -RDPCS_TX_FIFO_ENABLE = 1 -RDPCSTX_CNTL_RDPCS_TX_FIFO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CNTL_RDPCS_TX_SOFT_RESET' -RDPCSTX_CNTL_RDPCS_TX_SOFT_RESET__enumvalues = { - 0: 'RDPCS_TX_SOFT_RESET_DISABLE', - 1: 'RDPCS_TX_SOFT_RESET_ENABLE', -} -RDPCS_TX_SOFT_RESET_DISABLE = 0 -RDPCS_TX_SOFT_RESET_ENABLE = 1 -RDPCSTX_CNTL_RDPCS_TX_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_EXT_REFCLK_EN' -RDPCSTX_CLOCK_CNTL_RDPCS_EXT_REFCLK_EN__enumvalues = { - 0: 'RDPCS_EXT_REFCLK_DISABLE', - 1: 'RDPCS_EXT_REFCLK_ENABLE', -} -RDPCS_EXT_REFCLK_DISABLE = 0 -RDPCS_EXT_REFCLK_ENABLE = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_EXT_REFCLK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_SYMCLK_DIV2_TX_EN' -RDPCSTX_CLOCK_CNTL_RDPCS_SYMCLK_DIV2_TX_EN__enumvalues = { - 0: 'RDPCS_EXT_REFCLK_EN_DISABLE', - 1: 'RDPCS_EXT_REFCLK_EN_ENABLE', -} -RDPCS_EXT_REFCLK_EN_DISABLE = 0 -RDPCS_EXT_REFCLK_EN_ENABLE = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_SYMCLK_DIV2_TX_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_SYMCLK_DIV2_GATE_DIS' -RDPCSTX_CLOCK_CNTL_RDPCS_SYMCLK_DIV2_GATE_DIS__enumvalues = { - 0: 'RDPCS_SYMCLK_DIV2_GATE_ENABLE', - 1: 'RDPCS_SYMCLK_DIV2_GATE_DISABLE', -} -RDPCS_SYMCLK_DIV2_GATE_ENABLE = 0 -RDPCS_SYMCLK_DIV2_GATE_DISABLE = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_SYMCLK_DIV2_GATE_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_SYMCLK_DIV2_EN' -RDPCSTX_CLOCK_CNTL_RDPCS_SYMCLK_DIV2_EN__enumvalues = { - 0: 'RDPCS_SYMCLK_DIV2_DISABLE', - 1: 'RDPCS_SYMCLK_DIV2_ENABLE', -} -RDPCS_SYMCLK_DIV2_DISABLE = 0 -RDPCS_SYMCLK_DIV2_ENABLE = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_SYMCLK_DIV2_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_SYMCLK_DIV2_CLOCK_ON' -RDPCSTX_CLOCK_CNTL_RDPCS_SYMCLK_DIV2_CLOCK_ON__enumvalues = { - 0: 'RDPCS_SYMCLK_DIV2_CLOCK_OFF', - 1: 'RDPCS_SYMCLK_DIV2_CLOCK_ON', -} -RDPCS_SYMCLK_DIV2_CLOCK_OFF = 0 -RDPCS_SYMCLK_DIV2_CLOCK_ON = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_SYMCLK_DIV2_CLOCK_ON = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_GATE_DIS' -RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_GATE_DIS__enumvalues = { - 0: 'RDPCS_SRAMCLK_GATE_ENABLE', - 1: 'RDPCS_SRAMCLK_GATE_DISABLE', -} -RDPCS_SRAMCLK_GATE_ENABLE = 0 -RDPCS_SRAMCLK_GATE_DISABLE = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_GATE_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_EN' -RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_EN__enumvalues = { - 0: 'RDPCS_SRAMCLK_DISABLE', - 1: 'RDPCS_SRAMCLK_ENABLE', -} -RDPCS_SRAMCLK_DISABLE = 0 -RDPCS_SRAMCLK_ENABLE = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_BYPASS' -RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_BYPASS__enumvalues = { - 0: 'RDPCS_SRAMCLK_NOT_BYPASS', - 1: 'RDPCS_SRAMCLK_BYPASS', -} -RDPCS_SRAMCLK_NOT_BYPASS = 0 -RDPCS_SRAMCLK_BYPASS = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_CLOCK_ON' -RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_CLOCK_ON__enumvalues = { - 0: 'RDPCS_SYMCLK_SRAMCLK_CLOCK_OFF', - 1: 'RDPCS_SYMCLK_SRAMCLK_CLOCK_ON', -} -RDPCS_SYMCLK_SRAMCLK_CLOCK_OFF = 0 -RDPCS_SYMCLK_SRAMCLK_CLOCK_ON = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_CLOCK_ON = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE' -RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE__enumvalues = { - 0: 'RDPCS_DPALT_DISABLE_TOGGLE_ENABLE', - 1: 'RDPCS_DPALT_DISABLE_TOGGLE_DISABLE', -} -RDPCS_DPALT_DISABLE_TOGGLE_ENABLE = 0 -RDPCS_DPALT_DISABLE_TOGGLE_DISABLE = 1 -RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE' -RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE__enumvalues = { - 0: 'RDPCS_DPALT_4LANE_TOGGLE_2LANE', - 1: 'RDPCS_DPALT_4LANE_TOGGLE_4LANE', -} -RDPCS_DPALT_4LANE_TOGGLE_2LANE = 0 -RDPCS_DPALT_4LANE_TOGGLE_4LANE = 1 -RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_REG_FIFO_ERROR_MASK' -RDPCSTX_INTERRUPT_CONTROL_RDPCS_REG_FIFO_ERROR_MASK__enumvalues = { - 0: 'RDPCS_REG_FIFO_ERROR_MASK_DISABLE', - 1: 'RDPCS_REG_FIFO_ERROR_MASK_ENABLE', -} -RDPCS_REG_FIFO_ERROR_MASK_DISABLE = 0 -RDPCS_REG_FIFO_ERROR_MASK_ENABLE = 1 -RDPCSTX_INTERRUPT_CONTROL_RDPCS_REG_FIFO_ERROR_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE_MASK' -RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE_MASK__enumvalues = { - 0: 'RDPCS_DPALT_DISABLE_TOGGLE_MASK_DISABLE', - 1: 'RDPCS_DPALT_DISABLE_TOGGLE_MASK_ENABLE', -} -RDPCS_DPALT_DISABLE_TOGGLE_MASK_DISABLE = 0 -RDPCS_DPALT_DISABLE_TOGGLE_MASK_ENABLE = 1 -RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE_MASK' -RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE_MASK__enumvalues = { - 0: 'RDPCS_DPALT_4LANE_TOGGLE_MASK_DISABLE', - 1: 'RDPCS_DPALT_4LANE_TOGGLE_MASK_ENABLE', -} -RDPCS_DPALT_4LANE_TOGGLE_MASK_DISABLE = 0 -RDPCS_DPALT_4LANE_TOGGLE_MASK_ENABLE = 1 -RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_TX_FIFO_ERROR_MASK' -RDPCSTX_INTERRUPT_CONTROL_RDPCS_TX_FIFO_ERROR_MASK__enumvalues = { - 0: 'RDPCS_TX_FIFO_ERROR_MASK_DISABLE', - 1: 'RDPCS_TX_FIFO_ERROR_MASK_ENABLE', -} -RDPCS_TX_FIFO_ERROR_MASK_DISABLE = 0 -RDPCS_TX_FIFO_ERROR_MASK_ENABLE = 1 -RDPCSTX_INTERRUPT_CONTROL_RDPCS_TX_FIFO_ERROR_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCS_TX_SRAM_CNTL_RDPCS_MEM_PWR_FORCE' -RDPCS_TX_SRAM_CNTL_RDPCS_MEM_PWR_FORCE__enumvalues = { - 0: 'RDPCS_MEM_PWR_NO_FORCE', - 1: 'RDPCS_MEM_PWR_LIGHT_SLEEP', - 2: 'RDPCS_MEM_PWR_DEEP_SLEEP', - 3: 'RDPCS_MEM_PWR_SHUT_DOWN', -} -RDPCS_MEM_PWR_NO_FORCE = 0 -RDPCS_MEM_PWR_LIGHT_SLEEP = 1 -RDPCS_MEM_PWR_DEEP_SLEEP = 2 -RDPCS_MEM_PWR_SHUT_DOWN = 3 -RDPCS_TX_SRAM_CNTL_RDPCS_MEM_PWR_FORCE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCS_TX_SRAM_CNTL_RDPCS_MEM_PWR_PWR_STATE' -RDPCS_TX_SRAM_CNTL_RDPCS_MEM_PWR_PWR_STATE__enumvalues = { - 0: 'RDPCS_MEM_PWR_PWR_STATE_ON', - 1: 'RDPCS_MEM_PWR_PWR_STATE_LIGHT_SLEEP', - 2: 'RDPCS_MEM_PWR_PWR_STATE_DEEP_SLEEP', - 3: 'RDPCS_MEM_PWR_PWR_STATE_SHUT_DOWN', -} -RDPCS_MEM_PWR_PWR_STATE_ON = 0 -RDPCS_MEM_PWR_PWR_STATE_LIGHT_SLEEP = 1 -RDPCS_MEM_PWR_PWR_STATE_DEEP_SLEEP = 2 -RDPCS_MEM_PWR_PWR_STATE_SHUT_DOWN = 3 -RDPCS_TX_SRAM_CNTL_RDPCS_MEM_PWR_PWR_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_MEM_POWER_CTRL2_RDPCS_MEM_POWER_CTRL_POFF' -RDPCSTX_MEM_POWER_CTRL2_RDPCS_MEM_POWER_CTRL_POFF__enumvalues = { - 0: 'RDPCS_MEM_POWER_CTRL_POFF_FOR_NO_PERIPHERY', - 1: 'RDPCS_MEM_POWER_CTRL_POFF_FOR_STANDARD', - 2: 'RDPCS_MEM_POWER_CTRL_POFF_FOR_RM3', - 3: 'RDPCS_MEM_POWER_CTRL_POFF_FOR_SD', -} -RDPCS_MEM_POWER_CTRL_POFF_FOR_NO_PERIPHERY = 0 -RDPCS_MEM_POWER_CTRL_POFF_FOR_STANDARD = 1 -RDPCS_MEM_POWER_CTRL_POFF_FOR_RM3 = 2 -RDPCS_MEM_POWER_CTRL_POFF_FOR_SD = 3 -RDPCSTX_MEM_POWER_CTRL2_RDPCS_MEM_POWER_CTRL_POFF = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL0_RDPCS_PHY_REF_RANGE' -RDPCSTX_PHY_CNTL0_RDPCS_PHY_REF_RANGE__enumvalues = { - 0: 'RDPCS_PHY_REF_RANGE_0', - 1: 'RDPCS_PHY_REF_RANGE_1', - 2: 'RDPCS_PHY_REF_RANGE_2', - 3: 'RDPCS_PHY_REF_RANGE_3', - 4: 'RDPCS_PHY_REF_RANGE_4', - 5: 'RDPCS_PHY_REF_RANGE_5', - 6: 'RDPCS_PHY_REF_RANGE_6', - 7: 'RDPCS_PHY_REF_RANGE_7', -} -RDPCS_PHY_REF_RANGE_0 = 0 -RDPCS_PHY_REF_RANGE_1 = 1 -RDPCS_PHY_REF_RANGE_2 = 2 -RDPCS_PHY_REF_RANGE_3 = 3 -RDPCS_PHY_REF_RANGE_4 = 4 -RDPCS_PHY_REF_RANGE_5 = 5 -RDPCS_PHY_REF_RANGE_6 = 6 -RDPCS_PHY_REF_RANGE_7 = 7 -RDPCSTX_PHY_CNTL0_RDPCS_PHY_REF_RANGE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL0_RDPCS_PHY_CR_PARA_SEL' -RDPCSTX_PHY_CNTL0_RDPCS_PHY_CR_PARA_SEL__enumvalues = { - 0: 'RDPCS_PHY_CR_PARA_SEL_JTAG', - 1: 'RDPCS_PHY_CR_PARA_SEL_CR', -} -RDPCS_PHY_CR_PARA_SEL_JTAG = 0 -RDPCS_PHY_CR_PARA_SEL_CR = 1 -RDPCSTX_PHY_CNTL0_RDPCS_PHY_CR_PARA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL0_RDPCS_PHY_CR_MUX_SEL' -RDPCSTX_PHY_CNTL0_RDPCS_PHY_CR_MUX_SEL__enumvalues = { - 0: 'RDPCS_PHY_CR_MUX_SEL_FOR_USB', - 1: 'RDPCS_PHY_CR_MUX_SEL_FOR_DC', -} -RDPCS_PHY_CR_MUX_SEL_FOR_USB = 0 -RDPCS_PHY_CR_MUX_SEL_FOR_DC = 1 -RDPCSTX_PHY_CNTL0_RDPCS_PHY_CR_MUX_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL0_RDPCS_SRAM_INIT_DONE' -RDPCSTX_PHY_CNTL0_RDPCS_SRAM_INIT_DONE__enumvalues = { - 0: 'RDPCS_SRAM_INIT_NOT_DONE', - 1: 'RDPCS_SRAM_INIT_DONE', -} -RDPCS_SRAM_INIT_NOT_DONE = 0 -RDPCS_SRAM_INIT_DONE = 1 -RDPCSTX_PHY_CNTL0_RDPCS_SRAM_INIT_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL0_RDPCS_SRAM_EXT_LD_DONE' -RDPCSTX_PHY_CNTL0_RDPCS_SRAM_EXT_LD_DONE__enumvalues = { - 0: 'RDPCS_SRAM_EXT_LD_NOT_DONE', - 1: 'RDPCS_SRAM_EXT_LD_DONE', -} -RDPCS_SRAM_EXT_LD_NOT_DONE = 0 -RDPCS_SRAM_EXT_LD_DONE = 1 -RDPCSTX_PHY_CNTL0_RDPCS_SRAM_EXT_LD_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL4_RDPCS_PHY_DP_TX_TERM_CTRL' -RDPCSTX_PHY_CNTL4_RDPCS_PHY_DP_TX_TERM_CTRL__enumvalues = { - 0: 'RDPCS_PHY_DP_TX_TERM_CTRL_54', - 1: 'RDPCS_PHY_DP_TX_TERM_CTRL_52', - 2: 'RDPCS_PHY_DP_TX_TERM_CTRL_50', - 3: 'RDPCS_PHY_DP_TX_TERM_CTRL_48', - 4: 'RDPCS_PHY_DP_TX_TERM_CTRL_46', - 5: 'RDPCS_PHY_DP_TX_TERM_CTRL_44', - 6: 'RDPCS_PHY_DP_TX_TERM_CTRL_42', - 7: 'RDPCS_PHY_DP_TX_TERM_CTRL_40', -} -RDPCS_PHY_DP_TX_TERM_CTRL_54 = 0 -RDPCS_PHY_DP_TX_TERM_CTRL_52 = 1 -RDPCS_PHY_DP_TX_TERM_CTRL_50 = 2 -RDPCS_PHY_DP_TX_TERM_CTRL_48 = 3 -RDPCS_PHY_DP_TX_TERM_CTRL_46 = 4 -RDPCS_PHY_DP_TX_TERM_CTRL_44 = 5 -RDPCS_PHY_DP_TX_TERM_CTRL_42 = 6 -RDPCS_PHY_DP_TX_TERM_CTRL_40 = 7 -RDPCSTX_PHY_CNTL4_RDPCS_PHY_DP_TX_TERM_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL_RRDPCS_PHY_DP_TX_PSTATE' -RDPCSTX_PHY_CNTL_RRDPCS_PHY_DP_TX_PSTATE__enumvalues = { - 0: 'RRDPCS_PHY_DP_TX_PSTATE_POWER_UP', - 1: 'RRDPCS_PHY_DP_TX_PSTATE_HOLD', - 2: 'RRDPCS_PHY_DP_TX_PSTATE_HOLD_OFF', - 3: 'RRDPCS_PHY_DP_TX_PSTATE_POWER_DOWN', -} -RRDPCS_PHY_DP_TX_PSTATE_POWER_UP = 0 -RRDPCS_PHY_DP_TX_PSTATE_HOLD = 1 -RRDPCS_PHY_DP_TX_PSTATE_HOLD_OFF = 2 -RRDPCS_PHY_DP_TX_PSTATE_POWER_DOWN = 3 -RDPCSTX_PHY_CNTL_RRDPCS_PHY_DP_TX_PSTATE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_RATE' -RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_RATE__enumvalues = { - 0: 'RDPCS_PHY_DP_TX_RATE', - 1: 'RDPCS_PHY_DP_TX_RATE_DIV2', - 2: 'RDPCS_PHY_DP_TX_RATE_DIV4', -} -RDPCS_PHY_DP_TX_RATE = 0 -RDPCS_PHY_DP_TX_RATE_DIV2 = 1 -RDPCS_PHY_DP_TX_RATE_DIV4 = 2 -RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_WIDTH' -RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_WIDTH__enumvalues = { - 0: 'RDPCS_PHY_DP_TX_WIDTH_8', - 1: 'RDPCS_PHY_DP_TX_WIDTH_10', - 2: 'RDPCS_PHY_DP_TX_WIDTH_16', - 3: 'RDPCS_PHY_DP_TX_WIDTH_20', -} -RDPCS_PHY_DP_TX_WIDTH_8 = 0 -RDPCS_PHY_DP_TX_WIDTH_10 = 1 -RDPCS_PHY_DP_TX_WIDTH_16 = 2 -RDPCS_PHY_DP_TX_WIDTH_20 = 3 -RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_WIDTH = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_DETRX_RESULT' -RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_DETRX_RESULT__enumvalues = { - 0: 'RDPCS_PHY_DP_TX_DETRX_RESULT_NO_DETECT', - 1: 'RDPCS_PHY_DP_TX_DETRX_RESULT_DETECT', -} -RDPCS_PHY_DP_TX_DETRX_RESULT_NO_DETECT = 0 -RDPCS_PHY_DP_TX_DETRX_RESULT_DETECT = 1 -RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_DETRX_RESULT = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL11_RDPCS_PHY_DP_REF_CLK_MPLLB_DIV' -RDPCSTX_PHY_CNTL11_RDPCS_PHY_DP_REF_CLK_MPLLB_DIV__enumvalues = { - 0: 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV1', - 1: 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV2', - 2: 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV3', - 3: 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV8', - 4: 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV16', -} -RDPCS_PHY_DP_REF_CLK_MPLLB_DIV1 = 0 -RDPCS_PHY_DP_REF_CLK_MPLLB_DIV2 = 1 -RDPCS_PHY_DP_REF_CLK_MPLLB_DIV3 = 2 -RDPCS_PHY_DP_REF_CLK_MPLLB_DIV8 = 3 -RDPCS_PHY_DP_REF_CLK_MPLLB_DIV16 = 4 -RDPCSTX_PHY_CNTL11_RDPCS_PHY_DP_REF_CLK_MPLLB_DIV = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL11_RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV' -RDPCSTX_PHY_CNTL11_RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV__enumvalues = { - 0: 'RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_0', - 1: 'RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_1', - 2: 'RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_2', - 3: 'RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_3', -} -RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_0 = 0 -RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_1 = 1 -RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_2 = 2 -RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_3 = 3 -RDPCSTX_PHY_CNTL11_RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL12_RDPCS_PHY_DP_MPLLB_TX_CLK_DIV' -RDPCSTX_PHY_CNTL12_RDPCS_PHY_DP_MPLLB_TX_CLK_DIV__enumvalues = { - 0: 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV', - 1: 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV2', - 2: 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV4', - 3: 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV8', - 4: 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV3', - 5: 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV5', - 6: 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV6', - 7: 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV10', -} -RDPCS_PHY_DP_MPLLB_TX_CLK_DIV = 0 -RDPCS_PHY_DP_MPLLB_TX_CLK_DIV2 = 1 -RDPCS_PHY_DP_MPLLB_TX_CLK_DIV4 = 2 -RDPCS_PHY_DP_MPLLB_TX_CLK_DIV8 = 3 -RDPCS_PHY_DP_MPLLB_TX_CLK_DIV3 = 4 -RDPCS_PHY_DP_MPLLB_TX_CLK_DIV5 = 5 -RDPCS_PHY_DP_MPLLB_TX_CLK_DIV6 = 6 -RDPCS_PHY_DP_MPLLB_TX_CLK_DIV10 = 7 -RDPCSTX_PHY_CNTL12_RDPCS_PHY_DP_MPLLB_TX_CLK_DIV = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCS_TEST_CLK_SEL' -RDPCS_TEST_CLK_SEL__enumvalues = { - 0: 'RDPCS_TEST_CLK_SEL_NONE', - 1: 'RDPCS_TEST_CLK_SEL_CFGCLK', - 2: 'RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS', - 3: 'RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS', - 4: 'RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS_DIV4', - 5: 'RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS_DIV4', - 6: 'RDPCS_TEST_CLK_SEL_SRAMCLK', - 7: 'RDPCS_TEST_CLK_SEL_EXT_CR_CLK', - 8: 'RDPCS_TEST_CLK_SEL_DP_TX0_WORD_CLK', - 9: 'RDPCS_TEST_CLK_SEL_DP_TX1_WORD_CLK', - 10: 'RDPCS_TEST_CLK_SEL_DP_TX2_WORD_CLK', - 11: 'RDPCS_TEST_CLK_SEL_DP_TX3_WORD_CLK', - 12: 'RDPCS_TEST_CLK_SEL_DP_MPLLB_DIV_CLK', - 13: 'RDPCS_TEST_CLK_SEL_HDMI_MPLLB_HDMI_PIXEL_CLK', - 14: 'RDPCS_TEST_CLK_SEL_PHY_REF_DIG_CLK', - 15: 'RDPCS_TEST_CLK_SEL_REF_DIG_FR_clk', - 16: 'RDPCS_TEST_CLK_SEL_dtb_out0', - 17: 'RDPCS_TEST_CLK_SEL_dtb_out1', -} -RDPCS_TEST_CLK_SEL_NONE = 0 -RDPCS_TEST_CLK_SEL_CFGCLK = 1 -RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS = 2 -RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS = 3 -RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS_DIV4 = 4 -RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS_DIV4 = 5 -RDPCS_TEST_CLK_SEL_SRAMCLK = 6 -RDPCS_TEST_CLK_SEL_EXT_CR_CLK = 7 -RDPCS_TEST_CLK_SEL_DP_TX0_WORD_CLK = 8 -RDPCS_TEST_CLK_SEL_DP_TX1_WORD_CLK = 9 -RDPCS_TEST_CLK_SEL_DP_TX2_WORD_CLK = 10 -RDPCS_TEST_CLK_SEL_DP_TX3_WORD_CLK = 11 -RDPCS_TEST_CLK_SEL_DP_MPLLB_DIV_CLK = 12 -RDPCS_TEST_CLK_SEL_HDMI_MPLLB_HDMI_PIXEL_CLK = 13 -RDPCS_TEST_CLK_SEL_PHY_REF_DIG_CLK = 14 -RDPCS_TEST_CLK_SEL_REF_DIG_FR_clk = 15 -RDPCS_TEST_CLK_SEL_dtb_out0 = 16 -RDPCS_TEST_CLK_SEL_dtb_out1 = 17 -RDPCS_TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CBMode' -CBMode__enumvalues = { - 0: 'CB_DISABLE', - 1: 'CB_NORMAL', - 2: 'CB_ELIMINATE_FAST_CLEAR', - 3: 'CB_RESOLVE', - 4: 'CB_DECOMPRESS', - 5: 'CB_FMASK_DECOMPRESS', - 6: 'CB_DCC_DECOMPRESS', - 7: 'CB_RESERVED', -} -CB_DISABLE = 0 -CB_NORMAL = 1 -CB_ELIMINATE_FAST_CLEAR = 2 -CB_RESOLVE = 3 -CB_DECOMPRESS = 4 -CB_FMASK_DECOMPRESS = 5 -CB_DCC_DECOMPRESS = 6 -CB_RESERVED = 7 -CBMode = ctypes.c_uint32 # enum - -# values for enumeration 'BlendOp' -BlendOp__enumvalues = { - 0: 'BLEND_ZERO', - 1: 'BLEND_ONE', - 2: 'BLEND_SRC_COLOR', - 3: 'BLEND_ONE_MINUS_SRC_COLOR', - 4: 'BLEND_SRC_ALPHA', - 5: 'BLEND_ONE_MINUS_SRC_ALPHA', - 6: 'BLEND_DST_ALPHA', - 7: 'BLEND_ONE_MINUS_DST_ALPHA', - 8: 'BLEND_DST_COLOR', - 9: 'BLEND_ONE_MINUS_DST_COLOR', - 10: 'BLEND_SRC_ALPHA_SATURATE', - 11: 'BLEND_BOTH_SRC_ALPHA', - 12: 'BLEND_BOTH_INV_SRC_ALPHA', - 13: 'BLEND_CONSTANT_COLOR', - 14: 'BLEND_ONE_MINUS_CONSTANT_COLOR', - 15: 'BLEND_SRC1_COLOR', - 16: 'BLEND_INV_SRC1_COLOR', - 17: 'BLEND_SRC1_ALPHA', - 18: 'BLEND_INV_SRC1_ALPHA', - 19: 'BLEND_CONSTANT_ALPHA', - 20: 'BLEND_ONE_MINUS_CONSTANT_ALPHA', -} -BLEND_ZERO = 0 -BLEND_ONE = 1 -BLEND_SRC_COLOR = 2 -BLEND_ONE_MINUS_SRC_COLOR = 3 -BLEND_SRC_ALPHA = 4 -BLEND_ONE_MINUS_SRC_ALPHA = 5 -BLEND_DST_ALPHA = 6 -BLEND_ONE_MINUS_DST_ALPHA = 7 -BLEND_DST_COLOR = 8 -BLEND_ONE_MINUS_DST_COLOR = 9 -BLEND_SRC_ALPHA_SATURATE = 10 -BLEND_BOTH_SRC_ALPHA = 11 -BLEND_BOTH_INV_SRC_ALPHA = 12 -BLEND_CONSTANT_COLOR = 13 -BLEND_ONE_MINUS_CONSTANT_COLOR = 14 -BLEND_SRC1_COLOR = 15 -BLEND_INV_SRC1_COLOR = 16 -BLEND_SRC1_ALPHA = 17 -BLEND_INV_SRC1_ALPHA = 18 -BLEND_CONSTANT_ALPHA = 19 -BLEND_ONE_MINUS_CONSTANT_ALPHA = 20 -BlendOp = ctypes.c_uint32 # enum -GL__ZERO = BLEND_ZERO # macro -GL__ONE = BLEND_ONE # macro -GL__SRC_COLOR = BLEND_SRC_COLOR # macro -GL__ONE_MINUS_SRC_COLOR = BLEND_ONE_MINUS_SRC_COLOR # macro -GL__DST_COLOR = BLEND_DST_COLOR # macro -GL__ONE_MINUS_DST_COLOR = BLEND_ONE_MINUS_DST_COLOR # macro -GL__SRC_ALPHA = BLEND_SRC_ALPHA # macro -GL__ONE_MINUS_SRC_ALPHA = BLEND_ONE_MINUS_SRC_ALPHA # macro -GL__DST_ALPHA = BLEND_DST_ALPHA # macro -GL__ONE_MINUS_DST_ALPHA = BLEND_ONE_MINUS_DST_ALPHA # macro -GL__SRC_ALPHA_SATURATE = BLEND_SRC_ALPHA_SATURATE # macro -GL__CONSTANT_COLOR = BLEND_CONSTANT_COLOR # macro -GL__ONE_MINUS_CONSTANT_COLOR = BLEND_ONE_MINUS_CONSTANT_COLOR # macro -GL__CONSTANT_ALPHA = BLEND_CONSTANT_ALPHA # macro -GL__ONE_MINUS_CONSTANT_ALPHA = BLEND_ONE_MINUS_CONSTANT_ALPHA # macro - -# values for enumeration 'CombFunc' -CombFunc__enumvalues = { - 0: 'COMB_DST_PLUS_SRC', - 1: 'COMB_SRC_MINUS_DST', - 2: 'COMB_MIN_DST_SRC', - 3: 'COMB_MAX_DST_SRC', - 4: 'COMB_DST_MINUS_SRC', -} -COMB_DST_PLUS_SRC = 0 -COMB_SRC_MINUS_DST = 1 -COMB_MIN_DST_SRC = 2 -COMB_MAX_DST_SRC = 3 -COMB_DST_MINUS_SRC = 4 -CombFunc = ctypes.c_uint32 # enum - -# values for enumeration 'BlendOpt' -BlendOpt__enumvalues = { - 0: 'FORCE_OPT_AUTO', - 1: 'FORCE_OPT_DISABLE', - 2: 'FORCE_OPT_ENABLE_IF_SRC_A_0', - 3: 'FORCE_OPT_ENABLE_IF_SRC_RGB_0', - 4: 'FORCE_OPT_ENABLE_IF_SRC_ARGB_0', - 5: 'FORCE_OPT_ENABLE_IF_SRC_A_1', - 6: 'FORCE_OPT_ENABLE_IF_SRC_RGB_1', - 7: 'FORCE_OPT_ENABLE_IF_SRC_ARGB_1', -} -FORCE_OPT_AUTO = 0 -FORCE_OPT_DISABLE = 1 -FORCE_OPT_ENABLE_IF_SRC_A_0 = 2 -FORCE_OPT_ENABLE_IF_SRC_RGB_0 = 3 -FORCE_OPT_ENABLE_IF_SRC_ARGB_0 = 4 -FORCE_OPT_ENABLE_IF_SRC_A_1 = 5 -FORCE_OPT_ENABLE_IF_SRC_RGB_1 = 6 -FORCE_OPT_ENABLE_IF_SRC_ARGB_1 = 7 -BlendOpt = ctypes.c_uint32 # enum - -# values for enumeration 'CmaskCode' -CmaskCode__enumvalues = { - 0: 'CMASK_CLR00_F0', - 1: 'CMASK_CLR00_F1', - 2: 'CMASK_CLR00_F2', - 3: 'CMASK_CLR00_FX', - 4: 'CMASK_CLR01_F0', - 5: 'CMASK_CLR01_F1', - 6: 'CMASK_CLR01_F2', - 7: 'CMASK_CLR01_FX', - 8: 'CMASK_CLR10_F0', - 9: 'CMASK_CLR10_F1', - 10: 'CMASK_CLR10_F2', - 11: 'CMASK_CLR10_FX', - 12: 'CMASK_CLR11_F0', - 13: 'CMASK_CLR11_F1', - 14: 'CMASK_CLR11_F2', - 15: 'CMASK_CLR11_FX', -} -CMASK_CLR00_F0 = 0 -CMASK_CLR00_F1 = 1 -CMASK_CLR00_F2 = 2 -CMASK_CLR00_FX = 3 -CMASK_CLR01_F0 = 4 -CMASK_CLR01_F1 = 5 -CMASK_CLR01_F2 = 6 -CMASK_CLR01_FX = 7 -CMASK_CLR10_F0 = 8 -CMASK_CLR10_F1 = 9 -CMASK_CLR10_F2 = 10 -CMASK_CLR10_FX = 11 -CMASK_CLR11_F0 = 12 -CMASK_CLR11_F1 = 13 -CMASK_CLR11_F2 = 14 -CMASK_CLR11_FX = 15 -CmaskCode = ctypes.c_uint32 # enum - -# values for enumeration 'MemArbMode' -MemArbMode__enumvalues = { - 0: 'MEM_ARB_MODE_FIXED', - 1: 'MEM_ARB_MODE_AGE', - 2: 'MEM_ARB_MODE_WEIGHT', - 3: 'MEM_ARB_MODE_BOTH', -} -MEM_ARB_MODE_FIXED = 0 -MEM_ARB_MODE_AGE = 1 -MEM_ARB_MODE_WEIGHT = 2 -MEM_ARB_MODE_BOTH = 3 -MemArbMode = ctypes.c_uint32 # enum - -# values for enumeration 'CBPerfOpFilterSel' -CBPerfOpFilterSel__enumvalues = { - 0: 'CB_PERF_OP_FILTER_SEL_WRITE_ONLY', - 1: 'CB_PERF_OP_FILTER_SEL_NEEDS_DESTINATION', - 2: 'CB_PERF_OP_FILTER_SEL_RESOLVE', - 3: 'CB_PERF_OP_FILTER_SEL_DECOMPRESS', - 4: 'CB_PERF_OP_FILTER_SEL_FMASK_DECOMPRESS', - 5: 'CB_PERF_OP_FILTER_SEL_ELIMINATE_FAST_CLEAR', -} -CB_PERF_OP_FILTER_SEL_WRITE_ONLY = 0 -CB_PERF_OP_FILTER_SEL_NEEDS_DESTINATION = 1 -CB_PERF_OP_FILTER_SEL_RESOLVE = 2 -CB_PERF_OP_FILTER_SEL_DECOMPRESS = 3 -CB_PERF_OP_FILTER_SEL_FMASK_DECOMPRESS = 4 -CB_PERF_OP_FILTER_SEL_ELIMINATE_FAST_CLEAR = 5 -CBPerfOpFilterSel = ctypes.c_uint32 # enum - -# values for enumeration 'CBPerfClearFilterSel' -CBPerfClearFilterSel__enumvalues = { - 0: 'CB_PERF_CLEAR_FILTER_SEL_NONCLEAR', - 1: 'CB_PERF_CLEAR_FILTER_SEL_CLEAR', -} -CB_PERF_CLEAR_FILTER_SEL_NONCLEAR = 0 -CB_PERF_CLEAR_FILTER_SEL_CLEAR = 1 -CBPerfClearFilterSel = ctypes.c_uint32 # enum - -# values for enumeration 'CBPerfSel' -CBPerfSel__enumvalues = { - 0: 'CB_PERF_SEL_NONE', - 1: 'CB_PERF_SEL_BUSY', - 2: 'CB_PERF_SEL_CORE_SCLK_VLD', - 3: 'CB_PERF_SEL_REG_SCLK0_VLD', - 4: 'CB_PERF_SEL_REG_SCLK1_VLD', - 5: 'CB_PERF_SEL_DRAWN_QUAD', - 6: 'CB_PERF_SEL_DRAWN_PIXEL', - 7: 'CB_PERF_SEL_DRAWN_QUAD_FRAGMENT', - 8: 'CB_PERF_SEL_DRAWN_TILE', - 9: 'CB_PERF_SEL_DB_CB_TILE_VALID_READY', - 10: 'CB_PERF_SEL_DB_CB_TILE_VALID_READYB', - 11: 'CB_PERF_SEL_DB_CB_TILE_VALIDB_READY', - 12: 'CB_PERF_SEL_DB_CB_TILE_VALIDB_READYB', - 13: 'CB_PERF_SEL_CM_FC_TILE_VALID_READY', - 14: 'CB_PERF_SEL_CM_FC_TILE_VALID_READYB', - 15: 'CB_PERF_SEL_CM_FC_TILE_VALIDB_READY', - 16: 'CB_PERF_SEL_CM_FC_TILE_VALIDB_READYB', - 17: 'CB_PERF_SEL_MERGE_TILE_ONLY_VALID_READY', - 18: 'CB_PERF_SEL_MERGE_TILE_ONLY_VALID_READYB', - 19: 'CB_PERF_SEL_DB_CB_LQUAD_VALID_READY', - 20: 'CB_PERF_SEL_DB_CB_LQUAD_VALID_READYB', - 21: 'CB_PERF_SEL_DB_CB_LQUAD_VALIDB_READY', - 22: 'CB_PERF_SEL_DB_CB_LQUAD_VALIDB_READYB', - 23: 'CB_PERF_SEL_LQUAD_NO_TILE', - 24: 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_R', - 25: 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_AR', - 26: 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_GR', - 27: 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_ABGR', - 28: 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_FP16_ABGR', - 29: 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_SIGNED16_ABGR', - 30: 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_UNSIGNED16_ABGR', - 31: 'CB_PERF_SEL_QUAD_KILLED_BY_EXTRA_PIXEL_EXPORT', - 32: 'CB_PERF_SEL_QUAD_KILLED_BY_COLOR_INVALID', - 33: 'CB_PERF_SEL_QUAD_KILLED_BY_NULL_TARGET_SHADER_MASK', - 34: 'CB_PERF_SEL_QUAD_KILLED_BY_NULL_SAMPLE_MASK', - 35: 'CB_PERF_SEL_QUAD_KILLED_BY_DISCARD_PIXEL', - 36: 'CB_PERF_SEL_FC_CLEAR_QUAD_VALID_READY', - 37: 'CB_PERF_SEL_FC_CLEAR_QUAD_VALID_READYB', - 38: 'CB_PERF_SEL_FC_CLEAR_QUAD_VALIDB_READY', - 39: 'CB_PERF_SEL_FC_CLEAR_QUAD_VALIDB_READYB', - 40: 'CB_PERF_SEL_FOP_IN_VALID_READY', - 41: 'CB_PERF_SEL_FOP_IN_VALID_READYB', - 42: 'CB_PERF_SEL_FOP_IN_VALIDB_READY', - 43: 'CB_PERF_SEL_FOP_IN_VALIDB_READYB', - 44: 'CB_PERF_SEL_FC_CC_QUADFRAG_VALID_READY', - 45: 'CB_PERF_SEL_FC_CC_QUADFRAG_VALID_READYB', - 46: 'CB_PERF_SEL_FC_CC_QUADFRAG_VALIDB_READY', - 47: 'CB_PERF_SEL_FC_CC_QUADFRAG_VALIDB_READYB', - 48: 'CB_PERF_SEL_CC_IB_SR_FRAG_VALID_READY', - 49: 'CB_PERF_SEL_CC_IB_SR_FRAG_VALID_READYB', - 50: 'CB_PERF_SEL_CC_IB_SR_FRAG_VALIDB_READY', - 51: 'CB_PERF_SEL_CC_IB_SR_FRAG_VALIDB_READYB', - 52: 'CB_PERF_SEL_CC_IB_TB_FRAG_VALID_READY', - 53: 'CB_PERF_SEL_CC_IB_TB_FRAG_VALID_READYB', - 54: 'CB_PERF_SEL_CC_IB_TB_FRAG_VALIDB_READY', - 55: 'CB_PERF_SEL_CC_IB_TB_FRAG_VALIDB_READYB', - 56: 'CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALID_READY', - 57: 'CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALID_READYB', - 58: 'CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALIDB_READY', - 59: 'CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALIDB_READYB', - 60: 'CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALID_READY', - 61: 'CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALID_READYB', - 62: 'CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALIDB_READY', - 63: 'CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALIDB_READYB', - 64: 'CB_PERF_SEL_CC_BC_CS_FRAG_VALID', - 65: 'CB_PERF_SEL_CM_CACHE_HIT', - 66: 'CB_PERF_SEL_CM_CACHE_TAG_MISS', - 67: 'CB_PERF_SEL_CM_CACHE_SECTOR_MISS', - 68: 'CB_PERF_SEL_CM_CACHE_REEVICTION_STALL', - 69: 'CB_PERF_SEL_CM_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 70: 'CB_PERF_SEL_CM_CACHE_REPLACE_PENDING_EVICT_STALL', - 71: 'CB_PERF_SEL_CM_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 72: 'CB_PERF_SEL_CM_CACHE_READ_OUTPUT_STALL', - 73: 'CB_PERF_SEL_CM_CACHE_WRITE_OUTPUT_STALL', - 74: 'CB_PERF_SEL_CM_CACHE_ACK_OUTPUT_STALL', - 75: 'CB_PERF_SEL_CM_CACHE_STALL', - 76: 'CB_PERF_SEL_CM_CACHE_FLUSH', - 77: 'CB_PERF_SEL_CM_CACHE_TAGS_FLUSHED', - 78: 'CB_PERF_SEL_CM_CACHE_SECTORS_FLUSHED', - 79: 'CB_PERF_SEL_CM_CACHE_DIRTY_SECTORS_FLUSHED', - 80: 'CB_PERF_SEL_FC_CACHE_HIT', - 81: 'CB_PERF_SEL_FC_CACHE_TAG_MISS', - 82: 'CB_PERF_SEL_FC_CACHE_SECTOR_MISS', - 83: 'CB_PERF_SEL_FC_CACHE_REEVICTION_STALL', - 84: 'CB_PERF_SEL_FC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 85: 'CB_PERF_SEL_FC_CACHE_REPLACE_PENDING_EVICT_STALL', - 86: 'CB_PERF_SEL_FC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 87: 'CB_PERF_SEL_FC_CACHE_READ_OUTPUT_STALL', - 88: 'CB_PERF_SEL_FC_CACHE_WRITE_OUTPUT_STALL', - 89: 'CB_PERF_SEL_FC_CACHE_ACK_OUTPUT_STALL', - 90: 'CB_PERF_SEL_FC_CACHE_STALL', - 91: 'CB_PERF_SEL_FC_CACHE_FLUSH', - 92: 'CB_PERF_SEL_FC_CACHE_TAGS_FLUSHED', - 93: 'CB_PERF_SEL_FC_CACHE_SECTORS_FLUSHED', - 94: 'CB_PERF_SEL_FC_CACHE_DIRTY_SECTORS_FLUSHED', - 95: 'CB_PERF_SEL_CC_CACHE_HIT', - 96: 'CB_PERF_SEL_CC_CACHE_TAG_MISS', - 97: 'CB_PERF_SEL_CC_CACHE_SECTOR_MISS', - 98: 'CB_PERF_SEL_CC_CACHE_REEVICTION_STALL', - 99: 'CB_PERF_SEL_CC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 100: 'CB_PERF_SEL_CC_CACHE_REPLACE_PENDING_EVICT_STALL', - 101: 'CB_PERF_SEL_CC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 102: 'CB_PERF_SEL_CC_CACHE_READ_OUTPUT_STALL', - 103: 'CB_PERF_SEL_CC_CACHE_WRITE_OUTPUT_STALL', - 104: 'CB_PERF_SEL_CC_CACHE_ACK_OUTPUT_STALL', - 105: 'CB_PERF_SEL_CC_CACHE_STALL', - 106: 'CB_PERF_SEL_CC_CACHE_FLUSH', - 107: 'CB_PERF_SEL_CC_CACHE_TAGS_FLUSHED', - 108: 'CB_PERF_SEL_CC_CACHE_SECTORS_FLUSHED', - 109: 'CB_PERF_SEL_CC_CACHE_DIRTY_SECTORS_FLUSHED', - 110: 'CB_PERF_SEL_CC_CACHE_WA_TO_RMW_CONVERSION', - 111: 'CB_PERF_SEL_CB_TAP_WRREQ_VALID_READY', - 112: 'CB_PERF_SEL_CB_TAP_WRREQ_VALID_READYB', - 113: 'CB_PERF_SEL_CB_TAP_WRREQ_VALIDB_READY', - 114: 'CB_PERF_SEL_CB_TAP_WRREQ_VALIDB_READYB', - 115: 'CB_PERF_SEL_CM_MC_WRITE_REQUEST', - 116: 'CB_PERF_SEL_FC_MC_WRITE_REQUEST', - 117: 'CB_PERF_SEL_CC_MC_WRITE_REQUEST', - 118: 'CB_PERF_SEL_CM_MC_WRITE_REQUESTS_IN_FLIGHT', - 119: 'CB_PERF_SEL_FC_MC_WRITE_REQUESTS_IN_FLIGHT', - 120: 'CB_PERF_SEL_CC_MC_WRITE_REQUESTS_IN_FLIGHT', - 121: 'CB_PERF_SEL_CB_TAP_RDREQ_VALID_READY', - 122: 'CB_PERF_SEL_CB_TAP_RDREQ_VALID_READYB', - 123: 'CB_PERF_SEL_CB_TAP_RDREQ_VALIDB_READY', - 124: 'CB_PERF_SEL_CB_TAP_RDREQ_VALIDB_READYB', - 125: 'CB_PERF_SEL_CM_MC_READ_REQUEST', - 126: 'CB_PERF_SEL_FC_MC_READ_REQUEST', - 127: 'CB_PERF_SEL_CC_MC_READ_REQUEST', - 128: 'CB_PERF_SEL_CM_MC_READ_REQUESTS_IN_FLIGHT', - 129: 'CB_PERF_SEL_FC_MC_READ_REQUESTS_IN_FLIGHT', - 130: 'CB_PERF_SEL_CC_MC_READ_REQUESTS_IN_FLIGHT', - 131: 'CB_PERF_SEL_CM_TQ_FULL', - 132: 'CB_PERF_SEL_CM_TQ_FIFO_TILE_RESIDENCY_STALL', - 133: 'CB_PERF_SEL_CM_TQ_FIFO_STUTTER_STALL', - 134: 'CB_PERF_SEL_FC_QUAD_RDLAT_FIFO_FULL', - 135: 'CB_PERF_SEL_FC_TILE_RDLAT_FIFO_FULL', - 136: 'CB_PERF_SEL_FC_RDLAT_FIFO_QUAD_RESIDENCY_STALL', - 137: 'CB_PERF_SEL_FC_TILE_STUTTER_STALL', - 138: 'CB_PERF_SEL_FC_QUAD_STUTTER_STALL', - 139: 'CB_PERF_SEL_FC_KEYID_STUTTER_STALL', - 140: 'CB_PERF_SEL_FOP_FMASK_RAW_STALL', - 141: 'CB_PERF_SEL_FOP_FMASK_BYPASS_STALL', - 142: 'CB_PERF_SEL_CC_SF_FULL', - 143: 'CB_PERF_SEL_CC_RB_FULL', - 144: 'CB_PERF_SEL_CC_EVENFIFO_QUAD_RESIDENCY_STALL', - 145: 'CB_PERF_SEL_CC_ODDFIFO_QUAD_RESIDENCY_STALL', - 146: 'CB_PERF_SEL_CC_EVENFIFO_STUTTER_STALL', - 147: 'CB_PERF_SEL_CC_ODDFIFO_STUTTER_STALL', - 148: 'CB_PERF_SEL_BLENDER_RAW_HAZARD_STALL', - 149: 'CB_PERF_SEL_EVENT', - 150: 'CB_PERF_SEL_EVENT_CACHE_FLUSH_TS', - 151: 'CB_PERF_SEL_EVENT_CONTEXT_DONE', - 152: 'CB_PERF_SEL_EVENT_CACHE_FLUSH', - 153: 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_TS_EVENT', - 154: 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_EVENT', - 155: 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_DATA_TS', - 156: 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_META', - 157: 'CB_PERF_SEL_CC_SURFACE_SYNC', - 158: 'CB_PERF_SEL_CMASK_READ_DATA_0xC', - 159: 'CB_PERF_SEL_CMASK_READ_DATA_0xD', - 160: 'CB_PERF_SEL_CMASK_READ_DATA_0xE', - 161: 'CB_PERF_SEL_CMASK_READ_DATA_0xF', - 162: 'CB_PERF_SEL_CMASK_WRITE_DATA_0xC', - 163: 'CB_PERF_SEL_CMASK_WRITE_DATA_0xD', - 164: 'CB_PERF_SEL_CMASK_WRITE_DATA_0xE', - 165: 'CB_PERF_SEL_CMASK_WRITE_DATA_0xF', - 166: 'CB_PERF_SEL_TWO_PROBE_QUAD_FRAGMENT', - 167: 'CB_PERF_SEL_EXPORT_32_ABGR_QUAD_FRAGMENT', - 168: 'CB_PERF_SEL_DUAL_SOURCE_COLOR_QUAD_FRAGMENT', - 169: 'CB_PERF_SEL_QUAD_HAS_1_FRAGMENT_BEFORE_UPDATE', - 170: 'CB_PERF_SEL_QUAD_HAS_2_FRAGMENTS_BEFORE_UPDATE', - 171: 'CB_PERF_SEL_QUAD_HAS_3_FRAGMENTS_BEFORE_UPDATE', - 172: 'CB_PERF_SEL_QUAD_HAS_4_FRAGMENTS_BEFORE_UPDATE', - 173: 'CB_PERF_SEL_QUAD_HAS_5_FRAGMENTS_BEFORE_UPDATE', - 174: 'CB_PERF_SEL_QUAD_HAS_6_FRAGMENTS_BEFORE_UPDATE', - 175: 'CB_PERF_SEL_QUAD_HAS_7_FRAGMENTS_BEFORE_UPDATE', - 176: 'CB_PERF_SEL_QUAD_HAS_8_FRAGMENTS_BEFORE_UPDATE', - 177: 'CB_PERF_SEL_QUAD_HAS_1_FRAGMENT_AFTER_UPDATE', - 178: 'CB_PERF_SEL_QUAD_HAS_2_FRAGMENTS_AFTER_UPDATE', - 179: 'CB_PERF_SEL_QUAD_HAS_3_FRAGMENTS_AFTER_UPDATE', - 180: 'CB_PERF_SEL_QUAD_HAS_4_FRAGMENTS_AFTER_UPDATE', - 181: 'CB_PERF_SEL_QUAD_HAS_5_FRAGMENTS_AFTER_UPDATE', - 182: 'CB_PERF_SEL_QUAD_HAS_6_FRAGMENTS_AFTER_UPDATE', - 183: 'CB_PERF_SEL_QUAD_HAS_7_FRAGMENTS_AFTER_UPDATE', - 184: 'CB_PERF_SEL_QUAD_HAS_8_FRAGMENTS_AFTER_UPDATE', - 185: 'CB_PERF_SEL_QUAD_ADDED_1_FRAGMENT', - 186: 'CB_PERF_SEL_QUAD_ADDED_2_FRAGMENTS', - 187: 'CB_PERF_SEL_QUAD_ADDED_3_FRAGMENTS', - 188: 'CB_PERF_SEL_QUAD_ADDED_4_FRAGMENTS', - 189: 'CB_PERF_SEL_QUAD_ADDED_5_FRAGMENTS', - 190: 'CB_PERF_SEL_QUAD_ADDED_6_FRAGMENTS', - 191: 'CB_PERF_SEL_QUAD_ADDED_7_FRAGMENTS', - 192: 'CB_PERF_SEL_QUAD_REMOVED_1_FRAGMENT', - 193: 'CB_PERF_SEL_QUAD_REMOVED_2_FRAGMENTS', - 194: 'CB_PERF_SEL_QUAD_REMOVED_3_FRAGMENTS', - 195: 'CB_PERF_SEL_QUAD_REMOVED_4_FRAGMENTS', - 196: 'CB_PERF_SEL_QUAD_REMOVED_5_FRAGMENTS', - 197: 'CB_PERF_SEL_QUAD_REMOVED_6_FRAGMENTS', - 198: 'CB_PERF_SEL_QUAD_REMOVED_7_FRAGMENTS', - 199: 'CB_PERF_SEL_QUAD_READS_FRAGMENT_0', - 200: 'CB_PERF_SEL_QUAD_READS_FRAGMENT_1', - 201: 'CB_PERF_SEL_QUAD_READS_FRAGMENT_2', - 202: 'CB_PERF_SEL_QUAD_READS_FRAGMENT_3', - 203: 'CB_PERF_SEL_QUAD_READS_FRAGMENT_4', - 204: 'CB_PERF_SEL_QUAD_READS_FRAGMENT_5', - 205: 'CB_PERF_SEL_QUAD_READS_FRAGMENT_6', - 206: 'CB_PERF_SEL_QUAD_READS_FRAGMENT_7', - 207: 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_0', - 208: 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_1', - 209: 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_2', - 210: 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_3', - 211: 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_4', - 212: 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_5', - 213: 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_6', - 214: 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_7', - 215: 'CB_PERF_SEL_QUAD_BLEND_OPT_DONT_READ_DST', - 216: 'CB_PERF_SEL_QUAD_BLEND_OPT_BLEND_BYPASS', - 217: 'CB_PERF_SEL_QUAD_BLEND_OPT_DISCARD_PIXELS', - 218: 'CB_PERF_SEL_QUAD_DST_READ_COULD_HAVE_BEEN_OPTIMIZED', - 219: 'CB_PERF_SEL_QUAD_BLENDING_COULD_HAVE_BEEN_BYPASSED', - 220: 'CB_PERF_SEL_QUAD_COULD_HAVE_BEEN_DISCARDED', - 221: 'CB_PERF_SEL_BLEND_OPT_PIXELS_RESULT_EQ_DEST', - 222: 'CB_PERF_SEL_DRAWN_BUSY', - 223: 'CB_PERF_SEL_TILE_TO_CMR_REGION_BUSY', - 224: 'CB_PERF_SEL_CMR_TO_FCR_REGION_BUSY', - 225: 'CB_PERF_SEL_FCR_TO_CCR_REGION_BUSY', - 226: 'CB_PERF_SEL_CCR_TO_CCW_REGION_BUSY', - 227: 'CB_PERF_SEL_FC_PF_SLOW_MODE_QUAD_EMPTY_HALF_DROPPED', - 228: 'CB_PERF_SEL_FC_SEQUENCER_CLEAR', - 229: 'CB_PERF_SEL_FC_SEQUENCER_ELIMINATE_FAST_CLEAR', - 230: 'CB_PERF_SEL_FC_SEQUENCER_FMASK_DECOMPRESS', - 231: 'CB_PERF_SEL_FC_SEQUENCER_FMASK_COMPRESSION_DISABLE', - 232: 'CB_PERF_SEL_CC_CACHE_READS_SAVED_DUE_TO_DCC', - 233: 'CB_PERF_SEL_FC_KEYID_RDLAT_FIFO_FULL', - 234: 'CB_PERF_SEL_FC_DOC_IS_STALLED', - 235: 'CB_PERF_SEL_FC_DOC_MRTS_NOT_COMBINED', - 236: 'CB_PERF_SEL_FC_DOC_MRTS_COMBINED', - 237: 'CB_PERF_SEL_FC_DOC_QTILE_CAM_MISS', - 238: 'CB_PERF_SEL_FC_DOC_QTILE_CAM_HIT', - 239: 'CB_PERF_SEL_FC_DOC_CLINE_CAM_MISS', - 240: 'CB_PERF_SEL_FC_DOC_CLINE_CAM_HIT', - 241: 'CB_PERF_SEL_FC_DOC_QUAD_PTR_FIFO_IS_FULL', - 242: 'CB_PERF_SEL_FC_DOC_OVERWROTE_1_SECTOR', - 243: 'CB_PERF_SEL_FC_DOC_OVERWROTE_2_SECTORS', - 244: 'CB_PERF_SEL_FC_DOC_OVERWROTE_3_SECTORS', - 245: 'CB_PERF_SEL_FC_DOC_OVERWROTE_4_SECTORS', - 246: 'CB_PERF_SEL_FC_DOC_TOTAL_OVERWRITTEN_SECTORS', - 247: 'CB_PERF_SEL_FC_DCC_CACHE_HIT', - 248: 'CB_PERF_SEL_FC_DCC_CACHE_TAG_MISS', - 249: 'CB_PERF_SEL_FC_DCC_CACHE_SECTOR_MISS', - 250: 'CB_PERF_SEL_FC_DCC_CACHE_REEVICTION_STALL', - 251: 'CB_PERF_SEL_FC_DCC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 252: 'CB_PERF_SEL_FC_DCC_CACHE_REPLACE_PENDING_EVICT_STALL', - 253: 'CB_PERF_SEL_FC_DCC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 254: 'CB_PERF_SEL_FC_DCC_CACHE_READ_OUTPUT_STALL', - 255: 'CB_PERF_SEL_FC_DCC_CACHE_WRITE_OUTPUT_STALL', - 256: 'CB_PERF_SEL_FC_DCC_CACHE_ACK_OUTPUT_STALL', - 257: 'CB_PERF_SEL_FC_DCC_CACHE_STALL', - 258: 'CB_PERF_SEL_FC_DCC_CACHE_FLUSH', - 259: 'CB_PERF_SEL_FC_DCC_CACHE_TAGS_FLUSHED', - 260: 'CB_PERF_SEL_FC_DCC_CACHE_SECTORS_FLUSHED', - 261: 'CB_PERF_SEL_FC_DCC_CACHE_DIRTY_SECTORS_FLUSHED', - 262: 'CB_PERF_SEL_CC_DCC_BEYOND_TILE_SPLIT', - 263: 'CB_PERF_SEL_FC_MC_DCC_WRITE_REQUEST', - 264: 'CB_PERF_SEL_FC_MC_DCC_WRITE_REQUESTS_IN_FLIGHT', - 265: 'CB_PERF_SEL_FC_MC_DCC_READ_REQUEST', - 266: 'CB_PERF_SEL_FC_MC_DCC_READ_REQUESTS_IN_FLIGHT', - 267: 'CB_PERF_SEL_CC_DCC_RDREQ_STALL', - 268: 'CB_PERF_SEL_CC_DCC_DECOMPRESS_TIDS_IN', - 269: 'CB_PERF_SEL_CC_DCC_DECOMPRESS_TIDS_OUT', - 270: 'CB_PERF_SEL_CC_DCC_COMPRESS_TIDS_IN', - 271: 'CB_PERF_SEL_CC_DCC_COMPRESS_TIDS_OUT', - 272: 'CB_PERF_SEL_FC_DCC_KEY_VALUE__CLEAR', - 273: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__4_BLOCKS__2TO1', - 274: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__3BLOCKS_2TO1__1BLOCK_2TO2', - 275: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_2TO2__1BLOCK_2TO1', - 276: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__2BLOCKS_2TO1', - 277: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__3BLOCKS_2TO1', - 278: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__2BLOCKS_2TO2', - 279: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__2BLOCKS_2TO2__1BLOCK_2TO1', - 280: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_2TO2', - 281: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_2TO1', - 282: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__2BLOCKS_2TO1', - 283: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__2BLOCKS_2TO1__1BLOCK_2TO2', - 284: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__3BLOCKS_2TO2', - 285: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__2BLOCKS_2TO2', - 286: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_2TO1__1BLOCK_2TO2', - 287: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__3BLOCKS_2TO2__1BLOCK_2TO1', - 288: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_4TO1', - 289: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_4TO2', - 290: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_4TO3', - 291: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_4TO4', - 292: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_4TO1', - 293: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_4TO2', - 294: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_4TO3', - 295: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_4TO4', - 296: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_4TO1', - 297: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_4TO2', - 298: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_4TO3', - 299: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_4TO4', - 300: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_4TO1', - 301: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_4TO2', - 302: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_4TO3', - 303: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO1', - 304: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO2', - 305: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO3', - 306: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO4', - 307: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO1', - 308: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO2', - 309: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO3', - 310: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO4', - 311: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO1', - 312: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO2', - 313: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO3', - 314: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO4', - 315: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_4TO1', - 316: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_4TO2', - 317: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_4TO3', - 318: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO1__1BLOCK_2TO1', - 319: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO2__1BLOCK_2TO1', - 320: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO3__1BLOCK_2TO1', - 321: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO4__1BLOCK_2TO1', - 322: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO1__1BLOCK_2TO1', - 323: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO2__1BLOCK_2TO1', - 324: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO3__1BLOCK_2TO1', - 325: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO4__1BLOCK_2TO1', - 326: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO1__1BLOCK_2TO2', - 327: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO2__1BLOCK_2TO2', - 328: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO3__1BLOCK_2TO2', - 329: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO4__1BLOCK_2TO2', - 330: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO1__1BLOCK_2TO2', - 331: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO2__1BLOCK_2TO2', - 332: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO3__1BLOCK_2TO2', - 333: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__2BLOCKS_2TO1', - 334: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__2BLOCKS_2TO1', - 335: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__2BLOCKS_2TO1', - 336: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__2BLOCKS_2TO1', - 337: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__2BLOCKS_2TO2', - 338: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__2BLOCKS_2TO2', - 339: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__2BLOCKS_2TO2', - 340: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_2TO1__1BLOCK_2TO2', - 341: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_2TO1__1BLOCK_2TO2', - 342: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_2TO1__1BLOCK_2TO2', - 343: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_2TO1__1BLOCK_2TO2', - 344: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_2TO2__1BLOCK_2TO1', - 345: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_2TO2__1BLOCK_2TO1', - 346: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_2TO2__1BLOCK_2TO1', - 347: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_2TO2__1BLOCK_2TO1', - 348: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO1', - 349: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO2', - 350: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO3', - 351: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO4', - 352: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO5', - 353: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO6', - 354: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__INV0', - 355: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__INV1', - 356: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO1', - 357: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO2', - 358: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO3', - 359: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO4', - 360: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO5', - 361: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__INV0', - 362: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__INV1', - 363: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO1__1BLOCK_2TO1', - 364: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO2__1BLOCK_2TO1', - 365: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO3__1BLOCK_2TO1', - 366: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO4__1BLOCK_2TO1', - 367: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO5__1BLOCK_2TO1', - 368: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO6__1BLOCK_2TO1', - 369: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__INV0__1BLOCK_2TO1', - 370: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__INV1__1BLOCK_2TO1', - 371: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO1__1BLOCK_2TO2', - 372: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO2__1BLOCK_2TO2', - 373: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO3__1BLOCK_2TO2', - 374: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO4__1BLOCK_2TO2', - 375: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO5__1BLOCK_2TO2', - 376: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__INV0__1BLOCK_2TO2', - 377: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__INV1__1BLOCK_2TO2', - 378: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO1', - 379: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO2', - 380: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO3', - 381: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO4', - 382: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO5', - 383: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO6', - 384: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO7', - 385: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__UNCOMPRESSED', - 386: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_2TO1', - 387: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_4TO1', - 388: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_4TO2', - 389: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_4TO3', - 390: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO1', - 391: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO2', - 392: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO3', - 393: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO4', - 394: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO5', - 395: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO1', - 396: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO2', - 397: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO3', - 398: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO4', - 399: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO5', - 400: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO6', - 401: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO7', - 402: 'CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_BOTH', - 403: 'CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_LEFT', - 404: 'CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_RIGHT', - 405: 'CB_PERF_SEL_RBP_SPLIT_MICROTILE', - 406: 'CB_PERF_SEL_RBP_SPLIT_AA_SAMPLE_MASK', - 407: 'CB_PERF_SEL_RBP_SPLIT_PARTIAL_TARGET_MASK', - 408: 'CB_PERF_SEL_RBP_SPLIT_LINEAR_ADDRESSING', - 409: 'CB_PERF_SEL_RBP_SPLIT_AA_NO_FMASK_COMPRESS', - 410: 'CB_PERF_SEL_RBP_INSERT_MISSING_LAST_QUAD', - 411: 'CB_PERF_SEL_NACK_CM_READ', - 412: 'CB_PERF_SEL_NACK_CM_WRITE', - 413: 'CB_PERF_SEL_NACK_FC_READ', - 414: 'CB_PERF_SEL_NACK_FC_WRITE', - 415: 'CB_PERF_SEL_NACK_DC_READ', - 416: 'CB_PERF_SEL_NACK_DC_WRITE', - 417: 'CB_PERF_SEL_NACK_CC_READ', - 418: 'CB_PERF_SEL_NACK_CC_WRITE', - 419: 'CB_PERF_SEL_CM_MC_EARLY_WRITE_RETURN', - 420: 'CB_PERF_SEL_FC_MC_EARLY_WRITE_RETURN', - 421: 'CB_PERF_SEL_DC_MC_EARLY_WRITE_RETURN', - 422: 'CB_PERF_SEL_CC_MC_EARLY_WRITE_RETURN', - 423: 'CB_PERF_SEL_CM_MC_EARLY_WRITE_REQUESTS_IN_FLIGHT', - 424: 'CB_PERF_SEL_FC_MC_EARLY_WRITE_REQUESTS_IN_FLIGHT', - 425: 'CB_PERF_SEL_DC_MC_EARLY_WRITE_REQUESTS_IN_FLIGHT', - 426: 'CB_PERF_SEL_CC_MC_EARLY_WRITE_REQUESTS_IN_FLIGHT', - 427: 'CB_PERF_SEL_CM_MC_WRITE_ACK64B', - 428: 'CB_PERF_SEL_FC_MC_WRITE_ACK64B', - 429: 'CB_PERF_SEL_DC_MC_WRITE_ACK64B', - 430: 'CB_PERF_SEL_CC_MC_WRITE_ACK64B', - 431: 'CB_PERF_SEL_EVENT_BOTTOM_OF_PIPE_TS', - 432: 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_DB_DATA_TS', - 433: 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_PIXEL_DATA', - 434: 'CB_PERF_SEL_DB_CB_TILE_TILENOTEVENT', - 435: 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32BPP_8PIX', - 436: 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_16_16_UNSIGNED_8PIX', - 437: 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_16_16_SIGNED_8PIX', - 438: 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_16_16_FLOAT_8PIX', - 439: 'CB_PERF_SEL_MERGE_PIXELS_WITH_BLEND_ENABLED', - 440: 'CB_PERF_SEL_DB_CB_CONTEXT_DONE', - 441: 'CB_PERF_SEL_DB_CB_EOP_DONE', - 442: 'CB_PERF_SEL_CC_MC_WRITE_REQUEST_PARTIAL', - 443: 'CB_PERF_SEL_CC_BB_BLEND_PIXEL_VLD', -} -CB_PERF_SEL_NONE = 0 -CB_PERF_SEL_BUSY = 1 -CB_PERF_SEL_CORE_SCLK_VLD = 2 -CB_PERF_SEL_REG_SCLK0_VLD = 3 -CB_PERF_SEL_REG_SCLK1_VLD = 4 -CB_PERF_SEL_DRAWN_QUAD = 5 -CB_PERF_SEL_DRAWN_PIXEL = 6 -CB_PERF_SEL_DRAWN_QUAD_FRAGMENT = 7 -CB_PERF_SEL_DRAWN_TILE = 8 -CB_PERF_SEL_DB_CB_TILE_VALID_READY = 9 -CB_PERF_SEL_DB_CB_TILE_VALID_READYB = 10 -CB_PERF_SEL_DB_CB_TILE_VALIDB_READY = 11 -CB_PERF_SEL_DB_CB_TILE_VALIDB_READYB = 12 -CB_PERF_SEL_CM_FC_TILE_VALID_READY = 13 -CB_PERF_SEL_CM_FC_TILE_VALID_READYB = 14 -CB_PERF_SEL_CM_FC_TILE_VALIDB_READY = 15 -CB_PERF_SEL_CM_FC_TILE_VALIDB_READYB = 16 -CB_PERF_SEL_MERGE_TILE_ONLY_VALID_READY = 17 -CB_PERF_SEL_MERGE_TILE_ONLY_VALID_READYB = 18 -CB_PERF_SEL_DB_CB_LQUAD_VALID_READY = 19 -CB_PERF_SEL_DB_CB_LQUAD_VALID_READYB = 20 -CB_PERF_SEL_DB_CB_LQUAD_VALIDB_READY = 21 -CB_PERF_SEL_DB_CB_LQUAD_VALIDB_READYB = 22 -CB_PERF_SEL_LQUAD_NO_TILE = 23 -CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_R = 24 -CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_AR = 25 -CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_GR = 26 -CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_ABGR = 27 -CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_FP16_ABGR = 28 -CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_SIGNED16_ABGR = 29 -CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_UNSIGNED16_ABGR = 30 -CB_PERF_SEL_QUAD_KILLED_BY_EXTRA_PIXEL_EXPORT = 31 -CB_PERF_SEL_QUAD_KILLED_BY_COLOR_INVALID = 32 -CB_PERF_SEL_QUAD_KILLED_BY_NULL_TARGET_SHADER_MASK = 33 -CB_PERF_SEL_QUAD_KILLED_BY_NULL_SAMPLE_MASK = 34 -CB_PERF_SEL_QUAD_KILLED_BY_DISCARD_PIXEL = 35 -CB_PERF_SEL_FC_CLEAR_QUAD_VALID_READY = 36 -CB_PERF_SEL_FC_CLEAR_QUAD_VALID_READYB = 37 -CB_PERF_SEL_FC_CLEAR_QUAD_VALIDB_READY = 38 -CB_PERF_SEL_FC_CLEAR_QUAD_VALIDB_READYB = 39 -CB_PERF_SEL_FOP_IN_VALID_READY = 40 -CB_PERF_SEL_FOP_IN_VALID_READYB = 41 -CB_PERF_SEL_FOP_IN_VALIDB_READY = 42 -CB_PERF_SEL_FOP_IN_VALIDB_READYB = 43 -CB_PERF_SEL_FC_CC_QUADFRAG_VALID_READY = 44 -CB_PERF_SEL_FC_CC_QUADFRAG_VALID_READYB = 45 -CB_PERF_SEL_FC_CC_QUADFRAG_VALIDB_READY = 46 -CB_PERF_SEL_FC_CC_QUADFRAG_VALIDB_READYB = 47 -CB_PERF_SEL_CC_IB_SR_FRAG_VALID_READY = 48 -CB_PERF_SEL_CC_IB_SR_FRAG_VALID_READYB = 49 -CB_PERF_SEL_CC_IB_SR_FRAG_VALIDB_READY = 50 -CB_PERF_SEL_CC_IB_SR_FRAG_VALIDB_READYB = 51 -CB_PERF_SEL_CC_IB_TB_FRAG_VALID_READY = 52 -CB_PERF_SEL_CC_IB_TB_FRAG_VALID_READYB = 53 -CB_PERF_SEL_CC_IB_TB_FRAG_VALIDB_READY = 54 -CB_PERF_SEL_CC_IB_TB_FRAG_VALIDB_READYB = 55 -CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALID_READY = 56 -CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALID_READYB = 57 -CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALIDB_READY = 58 -CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALIDB_READYB = 59 -CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALID_READY = 60 -CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALID_READYB = 61 -CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALIDB_READY = 62 -CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALIDB_READYB = 63 -CB_PERF_SEL_CC_BC_CS_FRAG_VALID = 64 -CB_PERF_SEL_CM_CACHE_HIT = 65 -CB_PERF_SEL_CM_CACHE_TAG_MISS = 66 -CB_PERF_SEL_CM_CACHE_SECTOR_MISS = 67 -CB_PERF_SEL_CM_CACHE_REEVICTION_STALL = 68 -CB_PERF_SEL_CM_CACHE_EVICT_NONZERO_INFLIGHT_STALL = 69 -CB_PERF_SEL_CM_CACHE_REPLACE_PENDING_EVICT_STALL = 70 -CB_PERF_SEL_CM_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL = 71 -CB_PERF_SEL_CM_CACHE_READ_OUTPUT_STALL = 72 -CB_PERF_SEL_CM_CACHE_WRITE_OUTPUT_STALL = 73 -CB_PERF_SEL_CM_CACHE_ACK_OUTPUT_STALL = 74 -CB_PERF_SEL_CM_CACHE_STALL = 75 -CB_PERF_SEL_CM_CACHE_FLUSH = 76 -CB_PERF_SEL_CM_CACHE_TAGS_FLUSHED = 77 -CB_PERF_SEL_CM_CACHE_SECTORS_FLUSHED = 78 -CB_PERF_SEL_CM_CACHE_DIRTY_SECTORS_FLUSHED = 79 -CB_PERF_SEL_FC_CACHE_HIT = 80 -CB_PERF_SEL_FC_CACHE_TAG_MISS = 81 -CB_PERF_SEL_FC_CACHE_SECTOR_MISS = 82 -CB_PERF_SEL_FC_CACHE_REEVICTION_STALL = 83 -CB_PERF_SEL_FC_CACHE_EVICT_NONZERO_INFLIGHT_STALL = 84 -CB_PERF_SEL_FC_CACHE_REPLACE_PENDING_EVICT_STALL = 85 -CB_PERF_SEL_FC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL = 86 -CB_PERF_SEL_FC_CACHE_READ_OUTPUT_STALL = 87 -CB_PERF_SEL_FC_CACHE_WRITE_OUTPUT_STALL = 88 -CB_PERF_SEL_FC_CACHE_ACK_OUTPUT_STALL = 89 -CB_PERF_SEL_FC_CACHE_STALL = 90 -CB_PERF_SEL_FC_CACHE_FLUSH = 91 -CB_PERF_SEL_FC_CACHE_TAGS_FLUSHED = 92 -CB_PERF_SEL_FC_CACHE_SECTORS_FLUSHED = 93 -CB_PERF_SEL_FC_CACHE_DIRTY_SECTORS_FLUSHED = 94 -CB_PERF_SEL_CC_CACHE_HIT = 95 -CB_PERF_SEL_CC_CACHE_TAG_MISS = 96 -CB_PERF_SEL_CC_CACHE_SECTOR_MISS = 97 -CB_PERF_SEL_CC_CACHE_REEVICTION_STALL = 98 -CB_PERF_SEL_CC_CACHE_EVICT_NONZERO_INFLIGHT_STALL = 99 -CB_PERF_SEL_CC_CACHE_REPLACE_PENDING_EVICT_STALL = 100 -CB_PERF_SEL_CC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL = 101 -CB_PERF_SEL_CC_CACHE_READ_OUTPUT_STALL = 102 -CB_PERF_SEL_CC_CACHE_WRITE_OUTPUT_STALL = 103 -CB_PERF_SEL_CC_CACHE_ACK_OUTPUT_STALL = 104 -CB_PERF_SEL_CC_CACHE_STALL = 105 -CB_PERF_SEL_CC_CACHE_FLUSH = 106 -CB_PERF_SEL_CC_CACHE_TAGS_FLUSHED = 107 -CB_PERF_SEL_CC_CACHE_SECTORS_FLUSHED = 108 -CB_PERF_SEL_CC_CACHE_DIRTY_SECTORS_FLUSHED = 109 -CB_PERF_SEL_CC_CACHE_WA_TO_RMW_CONVERSION = 110 -CB_PERF_SEL_CB_TAP_WRREQ_VALID_READY = 111 -CB_PERF_SEL_CB_TAP_WRREQ_VALID_READYB = 112 -CB_PERF_SEL_CB_TAP_WRREQ_VALIDB_READY = 113 -CB_PERF_SEL_CB_TAP_WRREQ_VALIDB_READYB = 114 -CB_PERF_SEL_CM_MC_WRITE_REQUEST = 115 -CB_PERF_SEL_FC_MC_WRITE_REQUEST = 116 -CB_PERF_SEL_CC_MC_WRITE_REQUEST = 117 -CB_PERF_SEL_CM_MC_WRITE_REQUESTS_IN_FLIGHT = 118 -CB_PERF_SEL_FC_MC_WRITE_REQUESTS_IN_FLIGHT = 119 -CB_PERF_SEL_CC_MC_WRITE_REQUESTS_IN_FLIGHT = 120 -CB_PERF_SEL_CB_TAP_RDREQ_VALID_READY = 121 -CB_PERF_SEL_CB_TAP_RDREQ_VALID_READYB = 122 -CB_PERF_SEL_CB_TAP_RDREQ_VALIDB_READY = 123 -CB_PERF_SEL_CB_TAP_RDREQ_VALIDB_READYB = 124 -CB_PERF_SEL_CM_MC_READ_REQUEST = 125 -CB_PERF_SEL_FC_MC_READ_REQUEST = 126 -CB_PERF_SEL_CC_MC_READ_REQUEST = 127 -CB_PERF_SEL_CM_MC_READ_REQUESTS_IN_FLIGHT = 128 -CB_PERF_SEL_FC_MC_READ_REQUESTS_IN_FLIGHT = 129 -CB_PERF_SEL_CC_MC_READ_REQUESTS_IN_FLIGHT = 130 -CB_PERF_SEL_CM_TQ_FULL = 131 -CB_PERF_SEL_CM_TQ_FIFO_TILE_RESIDENCY_STALL = 132 -CB_PERF_SEL_CM_TQ_FIFO_STUTTER_STALL = 133 -CB_PERF_SEL_FC_QUAD_RDLAT_FIFO_FULL = 134 -CB_PERF_SEL_FC_TILE_RDLAT_FIFO_FULL = 135 -CB_PERF_SEL_FC_RDLAT_FIFO_QUAD_RESIDENCY_STALL = 136 -CB_PERF_SEL_FC_TILE_STUTTER_STALL = 137 -CB_PERF_SEL_FC_QUAD_STUTTER_STALL = 138 -CB_PERF_SEL_FC_KEYID_STUTTER_STALL = 139 -CB_PERF_SEL_FOP_FMASK_RAW_STALL = 140 -CB_PERF_SEL_FOP_FMASK_BYPASS_STALL = 141 -CB_PERF_SEL_CC_SF_FULL = 142 -CB_PERF_SEL_CC_RB_FULL = 143 -CB_PERF_SEL_CC_EVENFIFO_QUAD_RESIDENCY_STALL = 144 -CB_PERF_SEL_CC_ODDFIFO_QUAD_RESIDENCY_STALL = 145 -CB_PERF_SEL_CC_EVENFIFO_STUTTER_STALL = 146 -CB_PERF_SEL_CC_ODDFIFO_STUTTER_STALL = 147 -CB_PERF_SEL_BLENDER_RAW_HAZARD_STALL = 148 -CB_PERF_SEL_EVENT = 149 -CB_PERF_SEL_EVENT_CACHE_FLUSH_TS = 150 -CB_PERF_SEL_EVENT_CONTEXT_DONE = 151 -CB_PERF_SEL_EVENT_CACHE_FLUSH = 152 -CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_TS_EVENT = 153 -CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_EVENT = 154 -CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_DATA_TS = 155 -CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_META = 156 -CB_PERF_SEL_CC_SURFACE_SYNC = 157 -CB_PERF_SEL_CMASK_READ_DATA_0xC = 158 -CB_PERF_SEL_CMASK_READ_DATA_0xD = 159 -CB_PERF_SEL_CMASK_READ_DATA_0xE = 160 -CB_PERF_SEL_CMASK_READ_DATA_0xF = 161 -CB_PERF_SEL_CMASK_WRITE_DATA_0xC = 162 -CB_PERF_SEL_CMASK_WRITE_DATA_0xD = 163 -CB_PERF_SEL_CMASK_WRITE_DATA_0xE = 164 -CB_PERF_SEL_CMASK_WRITE_DATA_0xF = 165 -CB_PERF_SEL_TWO_PROBE_QUAD_FRAGMENT = 166 -CB_PERF_SEL_EXPORT_32_ABGR_QUAD_FRAGMENT = 167 -CB_PERF_SEL_DUAL_SOURCE_COLOR_QUAD_FRAGMENT = 168 -CB_PERF_SEL_QUAD_HAS_1_FRAGMENT_BEFORE_UPDATE = 169 -CB_PERF_SEL_QUAD_HAS_2_FRAGMENTS_BEFORE_UPDATE = 170 -CB_PERF_SEL_QUAD_HAS_3_FRAGMENTS_BEFORE_UPDATE = 171 -CB_PERF_SEL_QUAD_HAS_4_FRAGMENTS_BEFORE_UPDATE = 172 -CB_PERF_SEL_QUAD_HAS_5_FRAGMENTS_BEFORE_UPDATE = 173 -CB_PERF_SEL_QUAD_HAS_6_FRAGMENTS_BEFORE_UPDATE = 174 -CB_PERF_SEL_QUAD_HAS_7_FRAGMENTS_BEFORE_UPDATE = 175 -CB_PERF_SEL_QUAD_HAS_8_FRAGMENTS_BEFORE_UPDATE = 176 -CB_PERF_SEL_QUAD_HAS_1_FRAGMENT_AFTER_UPDATE = 177 -CB_PERF_SEL_QUAD_HAS_2_FRAGMENTS_AFTER_UPDATE = 178 -CB_PERF_SEL_QUAD_HAS_3_FRAGMENTS_AFTER_UPDATE = 179 -CB_PERF_SEL_QUAD_HAS_4_FRAGMENTS_AFTER_UPDATE = 180 -CB_PERF_SEL_QUAD_HAS_5_FRAGMENTS_AFTER_UPDATE = 181 -CB_PERF_SEL_QUAD_HAS_6_FRAGMENTS_AFTER_UPDATE = 182 -CB_PERF_SEL_QUAD_HAS_7_FRAGMENTS_AFTER_UPDATE = 183 -CB_PERF_SEL_QUAD_HAS_8_FRAGMENTS_AFTER_UPDATE = 184 -CB_PERF_SEL_QUAD_ADDED_1_FRAGMENT = 185 -CB_PERF_SEL_QUAD_ADDED_2_FRAGMENTS = 186 -CB_PERF_SEL_QUAD_ADDED_3_FRAGMENTS = 187 -CB_PERF_SEL_QUAD_ADDED_4_FRAGMENTS = 188 -CB_PERF_SEL_QUAD_ADDED_5_FRAGMENTS = 189 -CB_PERF_SEL_QUAD_ADDED_6_FRAGMENTS = 190 -CB_PERF_SEL_QUAD_ADDED_7_FRAGMENTS = 191 -CB_PERF_SEL_QUAD_REMOVED_1_FRAGMENT = 192 -CB_PERF_SEL_QUAD_REMOVED_2_FRAGMENTS = 193 -CB_PERF_SEL_QUAD_REMOVED_3_FRAGMENTS = 194 -CB_PERF_SEL_QUAD_REMOVED_4_FRAGMENTS = 195 -CB_PERF_SEL_QUAD_REMOVED_5_FRAGMENTS = 196 -CB_PERF_SEL_QUAD_REMOVED_6_FRAGMENTS = 197 -CB_PERF_SEL_QUAD_REMOVED_7_FRAGMENTS = 198 -CB_PERF_SEL_QUAD_READS_FRAGMENT_0 = 199 -CB_PERF_SEL_QUAD_READS_FRAGMENT_1 = 200 -CB_PERF_SEL_QUAD_READS_FRAGMENT_2 = 201 -CB_PERF_SEL_QUAD_READS_FRAGMENT_3 = 202 -CB_PERF_SEL_QUAD_READS_FRAGMENT_4 = 203 -CB_PERF_SEL_QUAD_READS_FRAGMENT_5 = 204 -CB_PERF_SEL_QUAD_READS_FRAGMENT_6 = 205 -CB_PERF_SEL_QUAD_READS_FRAGMENT_7 = 206 -CB_PERF_SEL_QUAD_WRITES_FRAGMENT_0 = 207 -CB_PERF_SEL_QUAD_WRITES_FRAGMENT_1 = 208 -CB_PERF_SEL_QUAD_WRITES_FRAGMENT_2 = 209 -CB_PERF_SEL_QUAD_WRITES_FRAGMENT_3 = 210 -CB_PERF_SEL_QUAD_WRITES_FRAGMENT_4 = 211 -CB_PERF_SEL_QUAD_WRITES_FRAGMENT_5 = 212 -CB_PERF_SEL_QUAD_WRITES_FRAGMENT_6 = 213 -CB_PERF_SEL_QUAD_WRITES_FRAGMENT_7 = 214 -CB_PERF_SEL_QUAD_BLEND_OPT_DONT_READ_DST = 215 -CB_PERF_SEL_QUAD_BLEND_OPT_BLEND_BYPASS = 216 -CB_PERF_SEL_QUAD_BLEND_OPT_DISCARD_PIXELS = 217 -CB_PERF_SEL_QUAD_DST_READ_COULD_HAVE_BEEN_OPTIMIZED = 218 -CB_PERF_SEL_QUAD_BLENDING_COULD_HAVE_BEEN_BYPASSED = 219 -CB_PERF_SEL_QUAD_COULD_HAVE_BEEN_DISCARDED = 220 -CB_PERF_SEL_BLEND_OPT_PIXELS_RESULT_EQ_DEST = 221 -CB_PERF_SEL_DRAWN_BUSY = 222 -CB_PERF_SEL_TILE_TO_CMR_REGION_BUSY = 223 -CB_PERF_SEL_CMR_TO_FCR_REGION_BUSY = 224 -CB_PERF_SEL_FCR_TO_CCR_REGION_BUSY = 225 -CB_PERF_SEL_CCR_TO_CCW_REGION_BUSY = 226 -CB_PERF_SEL_FC_PF_SLOW_MODE_QUAD_EMPTY_HALF_DROPPED = 227 -CB_PERF_SEL_FC_SEQUENCER_CLEAR = 228 -CB_PERF_SEL_FC_SEQUENCER_ELIMINATE_FAST_CLEAR = 229 -CB_PERF_SEL_FC_SEQUENCER_FMASK_DECOMPRESS = 230 -CB_PERF_SEL_FC_SEQUENCER_FMASK_COMPRESSION_DISABLE = 231 -CB_PERF_SEL_CC_CACHE_READS_SAVED_DUE_TO_DCC = 232 -CB_PERF_SEL_FC_KEYID_RDLAT_FIFO_FULL = 233 -CB_PERF_SEL_FC_DOC_IS_STALLED = 234 -CB_PERF_SEL_FC_DOC_MRTS_NOT_COMBINED = 235 -CB_PERF_SEL_FC_DOC_MRTS_COMBINED = 236 -CB_PERF_SEL_FC_DOC_QTILE_CAM_MISS = 237 -CB_PERF_SEL_FC_DOC_QTILE_CAM_HIT = 238 -CB_PERF_SEL_FC_DOC_CLINE_CAM_MISS = 239 -CB_PERF_SEL_FC_DOC_CLINE_CAM_HIT = 240 -CB_PERF_SEL_FC_DOC_QUAD_PTR_FIFO_IS_FULL = 241 -CB_PERF_SEL_FC_DOC_OVERWROTE_1_SECTOR = 242 -CB_PERF_SEL_FC_DOC_OVERWROTE_2_SECTORS = 243 -CB_PERF_SEL_FC_DOC_OVERWROTE_3_SECTORS = 244 -CB_PERF_SEL_FC_DOC_OVERWROTE_4_SECTORS = 245 -CB_PERF_SEL_FC_DOC_TOTAL_OVERWRITTEN_SECTORS = 246 -CB_PERF_SEL_FC_DCC_CACHE_HIT = 247 -CB_PERF_SEL_FC_DCC_CACHE_TAG_MISS = 248 -CB_PERF_SEL_FC_DCC_CACHE_SECTOR_MISS = 249 -CB_PERF_SEL_FC_DCC_CACHE_REEVICTION_STALL = 250 -CB_PERF_SEL_FC_DCC_CACHE_EVICT_NONZERO_INFLIGHT_STALL = 251 -CB_PERF_SEL_FC_DCC_CACHE_REPLACE_PENDING_EVICT_STALL = 252 -CB_PERF_SEL_FC_DCC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL = 253 -CB_PERF_SEL_FC_DCC_CACHE_READ_OUTPUT_STALL = 254 -CB_PERF_SEL_FC_DCC_CACHE_WRITE_OUTPUT_STALL = 255 -CB_PERF_SEL_FC_DCC_CACHE_ACK_OUTPUT_STALL = 256 -CB_PERF_SEL_FC_DCC_CACHE_STALL = 257 -CB_PERF_SEL_FC_DCC_CACHE_FLUSH = 258 -CB_PERF_SEL_FC_DCC_CACHE_TAGS_FLUSHED = 259 -CB_PERF_SEL_FC_DCC_CACHE_SECTORS_FLUSHED = 260 -CB_PERF_SEL_FC_DCC_CACHE_DIRTY_SECTORS_FLUSHED = 261 -CB_PERF_SEL_CC_DCC_BEYOND_TILE_SPLIT = 262 -CB_PERF_SEL_FC_MC_DCC_WRITE_REQUEST = 263 -CB_PERF_SEL_FC_MC_DCC_WRITE_REQUESTS_IN_FLIGHT = 264 -CB_PERF_SEL_FC_MC_DCC_READ_REQUEST = 265 -CB_PERF_SEL_FC_MC_DCC_READ_REQUESTS_IN_FLIGHT = 266 -CB_PERF_SEL_CC_DCC_RDREQ_STALL = 267 -CB_PERF_SEL_CC_DCC_DECOMPRESS_TIDS_IN = 268 -CB_PERF_SEL_CC_DCC_DECOMPRESS_TIDS_OUT = 269 -CB_PERF_SEL_CC_DCC_COMPRESS_TIDS_IN = 270 -CB_PERF_SEL_CC_DCC_COMPRESS_TIDS_OUT = 271 -CB_PERF_SEL_FC_DCC_KEY_VALUE__CLEAR = 272 -CB_PERF_SEL_CC_DCC_KEY_VALUE__4_BLOCKS__2TO1 = 273 -CB_PERF_SEL_CC_DCC_KEY_VALUE__3BLOCKS_2TO1__1BLOCK_2TO2 = 274 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_2TO2__1BLOCK_2TO1 = 275 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__2BLOCKS_2TO1 = 276 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__3BLOCKS_2TO1 = 277 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__2BLOCKS_2TO2 = 278 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__2BLOCKS_2TO2__1BLOCK_2TO1 = 279 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_2TO2 = 280 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_2TO1 = 281 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__2BLOCKS_2TO1 = 282 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__2BLOCKS_2TO1__1BLOCK_2TO2 = 283 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__3BLOCKS_2TO2 = 284 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__2BLOCKS_2TO2 = 285 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_2TO1__1BLOCK_2TO2 = 286 -CB_PERF_SEL_CC_DCC_KEY_VALUE__3BLOCKS_2TO2__1BLOCK_2TO1 = 287 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_4TO1 = 288 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_4TO2 = 289 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_4TO3 = 290 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_4TO4 = 291 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_4TO1 = 292 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_4TO2 = 293 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_4TO3 = 294 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_4TO4 = 295 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_4TO1 = 296 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_4TO2 = 297 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_4TO3 = 298 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_4TO4 = 299 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_4TO1 = 300 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_4TO2 = 301 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_4TO3 = 302 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO1 = 303 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO2 = 304 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO3 = 305 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO4 = 306 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO1 = 307 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO2 = 308 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO3 = 309 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO4 = 310 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO1 = 311 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO2 = 312 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO3 = 313 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO4 = 314 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_4TO1 = 315 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_4TO2 = 316 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_4TO3 = 317 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO1__1BLOCK_2TO1 = 318 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO2__1BLOCK_2TO1 = 319 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO3__1BLOCK_2TO1 = 320 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO4__1BLOCK_2TO1 = 321 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO1__1BLOCK_2TO1 = 322 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO2__1BLOCK_2TO1 = 323 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO3__1BLOCK_2TO1 = 324 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO4__1BLOCK_2TO1 = 325 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO1__1BLOCK_2TO2 = 326 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO2__1BLOCK_2TO2 = 327 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO3__1BLOCK_2TO2 = 328 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO4__1BLOCK_2TO2 = 329 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO1__1BLOCK_2TO2 = 330 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO2__1BLOCK_2TO2 = 331 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO3__1BLOCK_2TO2 = 332 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__2BLOCKS_2TO1 = 333 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__2BLOCKS_2TO1 = 334 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__2BLOCKS_2TO1 = 335 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__2BLOCKS_2TO1 = 336 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__2BLOCKS_2TO2 = 337 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__2BLOCKS_2TO2 = 338 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__2BLOCKS_2TO2 = 339 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_2TO1__1BLOCK_2TO2 = 340 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_2TO1__1BLOCK_2TO2 = 341 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_2TO1__1BLOCK_2TO2 = 342 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_2TO1__1BLOCK_2TO2 = 343 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_2TO2__1BLOCK_2TO1 = 344 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_2TO2__1BLOCK_2TO1 = 345 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_2TO2__1BLOCK_2TO1 = 346 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_2TO2__1BLOCK_2TO1 = 347 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO1 = 348 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO2 = 349 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO3 = 350 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO4 = 351 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO5 = 352 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO6 = 353 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__INV0 = 354 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__INV1 = 355 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO1 = 356 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO2 = 357 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO3 = 358 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO4 = 359 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO5 = 360 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__INV0 = 361 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__INV1 = 362 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO1__1BLOCK_2TO1 = 363 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO2__1BLOCK_2TO1 = 364 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO3__1BLOCK_2TO1 = 365 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO4__1BLOCK_2TO1 = 366 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO5__1BLOCK_2TO1 = 367 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO6__1BLOCK_2TO1 = 368 -CB_PERF_SEL_CC_DCC_KEY_VALUE__INV0__1BLOCK_2TO1 = 369 -CB_PERF_SEL_CC_DCC_KEY_VALUE__INV1__1BLOCK_2TO1 = 370 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO1__1BLOCK_2TO2 = 371 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO2__1BLOCK_2TO2 = 372 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO3__1BLOCK_2TO2 = 373 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO4__1BLOCK_2TO2 = 374 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO5__1BLOCK_2TO2 = 375 -CB_PERF_SEL_CC_DCC_KEY_VALUE__INV0__1BLOCK_2TO2 = 376 -CB_PERF_SEL_CC_DCC_KEY_VALUE__INV1__1BLOCK_2TO2 = 377 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO1 = 378 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO2 = 379 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO3 = 380 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO4 = 381 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO5 = 382 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO6 = 383 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO7 = 384 -CB_PERF_SEL_CC_DCC_KEY_VALUE__UNCOMPRESSED = 385 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_2TO1 = 386 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_4TO1 = 387 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_4TO2 = 388 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_4TO3 = 389 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO1 = 390 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO2 = 391 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO3 = 392 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO4 = 393 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO5 = 394 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO1 = 395 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO2 = 396 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO3 = 397 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO4 = 398 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO5 = 399 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO6 = 400 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO7 = 401 -CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_BOTH = 402 -CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_LEFT = 403 -CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_RIGHT = 404 -CB_PERF_SEL_RBP_SPLIT_MICROTILE = 405 -CB_PERF_SEL_RBP_SPLIT_AA_SAMPLE_MASK = 406 -CB_PERF_SEL_RBP_SPLIT_PARTIAL_TARGET_MASK = 407 -CB_PERF_SEL_RBP_SPLIT_LINEAR_ADDRESSING = 408 -CB_PERF_SEL_RBP_SPLIT_AA_NO_FMASK_COMPRESS = 409 -CB_PERF_SEL_RBP_INSERT_MISSING_LAST_QUAD = 410 -CB_PERF_SEL_NACK_CM_READ = 411 -CB_PERF_SEL_NACK_CM_WRITE = 412 -CB_PERF_SEL_NACK_FC_READ = 413 -CB_PERF_SEL_NACK_FC_WRITE = 414 -CB_PERF_SEL_NACK_DC_READ = 415 -CB_PERF_SEL_NACK_DC_WRITE = 416 -CB_PERF_SEL_NACK_CC_READ = 417 -CB_PERF_SEL_NACK_CC_WRITE = 418 -CB_PERF_SEL_CM_MC_EARLY_WRITE_RETURN = 419 -CB_PERF_SEL_FC_MC_EARLY_WRITE_RETURN = 420 -CB_PERF_SEL_DC_MC_EARLY_WRITE_RETURN = 421 -CB_PERF_SEL_CC_MC_EARLY_WRITE_RETURN = 422 -CB_PERF_SEL_CM_MC_EARLY_WRITE_REQUESTS_IN_FLIGHT = 423 -CB_PERF_SEL_FC_MC_EARLY_WRITE_REQUESTS_IN_FLIGHT = 424 -CB_PERF_SEL_DC_MC_EARLY_WRITE_REQUESTS_IN_FLIGHT = 425 -CB_PERF_SEL_CC_MC_EARLY_WRITE_REQUESTS_IN_FLIGHT = 426 -CB_PERF_SEL_CM_MC_WRITE_ACK64B = 427 -CB_PERF_SEL_FC_MC_WRITE_ACK64B = 428 -CB_PERF_SEL_DC_MC_WRITE_ACK64B = 429 -CB_PERF_SEL_CC_MC_WRITE_ACK64B = 430 -CB_PERF_SEL_EVENT_BOTTOM_OF_PIPE_TS = 431 -CB_PERF_SEL_EVENT_FLUSH_AND_INV_DB_DATA_TS = 432 -CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_PIXEL_DATA = 433 -CB_PERF_SEL_DB_CB_TILE_TILENOTEVENT = 434 -CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32BPP_8PIX = 435 -CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_16_16_UNSIGNED_8PIX = 436 -CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_16_16_SIGNED_8PIX = 437 -CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_16_16_FLOAT_8PIX = 438 -CB_PERF_SEL_MERGE_PIXELS_WITH_BLEND_ENABLED = 439 -CB_PERF_SEL_DB_CB_CONTEXT_DONE = 440 -CB_PERF_SEL_DB_CB_EOP_DONE = 441 -CB_PERF_SEL_CC_MC_WRITE_REQUEST_PARTIAL = 442 -CB_PERF_SEL_CC_BB_BLEND_PIXEL_VLD = 443 -CBPerfSel = ctypes.c_uint32 # enum - -# values for enumeration 'CmaskAddr' -CmaskAddr__enumvalues = { - 0: 'CMASK_ADDR_TILED', - 1: 'CMASK_ADDR_LINEAR', - 2: 'CMASK_ADDR_COMPATIBLE', -} -CMASK_ADDR_TILED = 0 -CMASK_ADDR_LINEAR = 1 -CMASK_ADDR_COMPATIBLE = 2 -CmaskAddr = ctypes.c_uint32 # enum - -# values for enumeration 'SourceFormat' -SourceFormat__enumvalues = { - 0: 'EXPORT_4C_32BPC', - 1: 'EXPORT_4C_16BPC', - 2: 'EXPORT_2C_32BPC_GR', - 3: 'EXPORT_2C_32BPC_AR', -} -EXPORT_4C_32BPC = 0 -EXPORT_4C_16BPC = 1 -EXPORT_2C_32BPC_GR = 2 -EXPORT_2C_32BPC_AR = 3 -SourceFormat = ctypes.c_uint32 # enum - -# values for enumeration 'TC_OP_MASKS' -TC_OP_MASKS__enumvalues = { - 8: 'TC_OP_MASK_FLUSH_DENROM', - 32: 'TC_OP_MASK_64', - 64: 'TC_OP_MASK_NO_RTN', -} -TC_OP_MASK_FLUSH_DENROM = 8 -TC_OP_MASK_64 = 32 -TC_OP_MASK_NO_RTN = 64 -TC_OP_MASKS = ctypes.c_uint32 # enum - -# values for enumeration 'TC_OP' -TC_OP__enumvalues = { - 0: 'TC_OP_READ', - 1: 'TC_OP_ATOMIC_FCMPSWAP_RTN_32', - 2: 'TC_OP_ATOMIC_FMIN_RTN_32', - 3: 'TC_OP_ATOMIC_FMAX_RTN_32', - 4: 'TC_OP_RESERVED_FOP_RTN_32_0', - 5: 'TC_OP_RESERVED_FOP_RTN_32_1', - 6: 'TC_OP_RESERVED_FOP_RTN_32_2', - 7: 'TC_OP_ATOMIC_SWAP_RTN_32', - 8: 'TC_OP_ATOMIC_CMPSWAP_RTN_32', - 9: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32', - 10: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32', - 11: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32', - 12: 'TC_OP_PROBE_FILTER', - 13: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_1', - 14: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2', - 15: 'TC_OP_ATOMIC_ADD_RTN_32', - 16: 'TC_OP_ATOMIC_SUB_RTN_32', - 17: 'TC_OP_ATOMIC_SMIN_RTN_32', - 18: 'TC_OP_ATOMIC_UMIN_RTN_32', - 19: 'TC_OP_ATOMIC_SMAX_RTN_32', - 20: 'TC_OP_ATOMIC_UMAX_RTN_32', - 21: 'TC_OP_ATOMIC_AND_RTN_32', - 22: 'TC_OP_ATOMIC_OR_RTN_32', - 23: 'TC_OP_ATOMIC_XOR_RTN_32', - 24: 'TC_OP_ATOMIC_INC_RTN_32', - 25: 'TC_OP_ATOMIC_DEC_RTN_32', - 26: 'TC_OP_WBINVL1_VOL', - 27: 'TC_OP_WBINVL1_SD', - 28: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_0', - 29: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_1', - 30: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_2', - 31: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_3', - 32: 'TC_OP_WRITE', - 33: 'TC_OP_ATOMIC_FCMPSWAP_RTN_64', - 34: 'TC_OP_ATOMIC_FMIN_RTN_64', - 35: 'TC_OP_ATOMIC_FMAX_RTN_64', - 36: 'TC_OP_RESERVED_FOP_RTN_64_0', - 37: 'TC_OP_RESERVED_FOP_RTN_64_1', - 38: 'TC_OP_RESERVED_FOP_RTN_64_2', - 39: 'TC_OP_ATOMIC_SWAP_RTN_64', - 40: 'TC_OP_ATOMIC_CMPSWAP_RTN_64', - 41: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64', - 42: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64', - 43: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64', - 44: 'TC_OP_WBINVL2_SD', - 45: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_0', - 46: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_1', - 47: 'TC_OP_ATOMIC_ADD_RTN_64', - 48: 'TC_OP_ATOMIC_SUB_RTN_64', - 49: 'TC_OP_ATOMIC_SMIN_RTN_64', - 50: 'TC_OP_ATOMIC_UMIN_RTN_64', - 51: 'TC_OP_ATOMIC_SMAX_RTN_64', - 52: 'TC_OP_ATOMIC_UMAX_RTN_64', - 53: 'TC_OP_ATOMIC_AND_RTN_64', - 54: 'TC_OP_ATOMIC_OR_RTN_64', - 55: 'TC_OP_ATOMIC_XOR_RTN_64', - 56: 'TC_OP_ATOMIC_INC_RTN_64', - 57: 'TC_OP_ATOMIC_DEC_RTN_64', - 58: 'TC_OP_WBL2_NC', - 59: 'TC_OP_WBL2_WC', - 60: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_1', - 61: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_2', - 62: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_3', - 63: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_4', - 64: 'TC_OP_WBINVL1', - 65: 'TC_OP_ATOMIC_FCMPSWAP_32', - 66: 'TC_OP_ATOMIC_FMIN_32', - 67: 'TC_OP_ATOMIC_FMAX_32', - 68: 'TC_OP_RESERVED_FOP_32_0', - 69: 'TC_OP_RESERVED_FOP_32_1', - 70: 'TC_OP_RESERVED_FOP_32_2', - 71: 'TC_OP_ATOMIC_SWAP_32', - 72: 'TC_OP_ATOMIC_CMPSWAP_32', - 73: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32', - 74: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_32', - 75: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_32', - 76: 'TC_OP_INV_METADATA', - 77: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_32_1', - 78: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_32_2', - 79: 'TC_OP_ATOMIC_ADD_32', - 80: 'TC_OP_ATOMIC_SUB_32', - 81: 'TC_OP_ATOMIC_SMIN_32', - 82: 'TC_OP_ATOMIC_UMIN_32', - 83: 'TC_OP_ATOMIC_SMAX_32', - 84: 'TC_OP_ATOMIC_UMAX_32', - 85: 'TC_OP_ATOMIC_AND_32', - 86: 'TC_OP_ATOMIC_OR_32', - 87: 'TC_OP_ATOMIC_XOR_32', - 88: 'TC_OP_ATOMIC_INC_32', - 89: 'TC_OP_ATOMIC_DEC_32', - 90: 'TC_OP_INVL2_NC', - 91: 'TC_OP_NOP_RTN0', - 92: 'TC_OP_RESERVED_NON_FLOAT_32_1', - 93: 'TC_OP_RESERVED_NON_FLOAT_32_2', - 94: 'TC_OP_RESERVED_NON_FLOAT_32_3', - 95: 'TC_OP_RESERVED_NON_FLOAT_32_4', - 96: 'TC_OP_WBINVL2', - 97: 'TC_OP_ATOMIC_FCMPSWAP_64', - 98: 'TC_OP_ATOMIC_FMIN_64', - 99: 'TC_OP_ATOMIC_FMAX_64', - 100: 'TC_OP_RESERVED_FOP_64_0', - 101: 'TC_OP_RESERVED_FOP_64_1', - 102: 'TC_OP_RESERVED_FOP_64_2', - 103: 'TC_OP_ATOMIC_SWAP_64', - 104: 'TC_OP_ATOMIC_CMPSWAP_64', - 105: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64', - 106: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_64', - 107: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_64', - 108: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_0', - 109: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_1', - 110: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_2', - 111: 'TC_OP_ATOMIC_ADD_64', - 112: 'TC_OP_ATOMIC_SUB_64', - 113: 'TC_OP_ATOMIC_SMIN_64', - 114: 'TC_OP_ATOMIC_UMIN_64', - 115: 'TC_OP_ATOMIC_SMAX_64', - 116: 'TC_OP_ATOMIC_UMAX_64', - 117: 'TC_OP_ATOMIC_AND_64', - 118: 'TC_OP_ATOMIC_OR_64', - 119: 'TC_OP_ATOMIC_XOR_64', - 120: 'TC_OP_ATOMIC_INC_64', - 121: 'TC_OP_ATOMIC_DEC_64', - 122: 'TC_OP_WBINVL2_NC', - 123: 'TC_OP_NOP_ACK', - 124: 'TC_OP_RESERVED_NON_FLOAT_64_1', - 125: 'TC_OP_RESERVED_NON_FLOAT_64_2', - 126: 'TC_OP_RESERVED_NON_FLOAT_64_3', - 127: 'TC_OP_RESERVED_NON_FLOAT_64_4', -} -TC_OP_READ = 0 -TC_OP_ATOMIC_FCMPSWAP_RTN_32 = 1 -TC_OP_ATOMIC_FMIN_RTN_32 = 2 -TC_OP_ATOMIC_FMAX_RTN_32 = 3 -TC_OP_RESERVED_FOP_RTN_32_0 = 4 -TC_OP_RESERVED_FOP_RTN_32_1 = 5 -TC_OP_RESERVED_FOP_RTN_32_2 = 6 -TC_OP_ATOMIC_SWAP_RTN_32 = 7 -TC_OP_ATOMIC_CMPSWAP_RTN_32 = 8 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32 = 9 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32 = 10 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32 = 11 -TC_OP_PROBE_FILTER = 12 -TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_1 = 13 -TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2 = 14 -TC_OP_ATOMIC_ADD_RTN_32 = 15 -TC_OP_ATOMIC_SUB_RTN_32 = 16 -TC_OP_ATOMIC_SMIN_RTN_32 = 17 -TC_OP_ATOMIC_UMIN_RTN_32 = 18 -TC_OP_ATOMIC_SMAX_RTN_32 = 19 -TC_OP_ATOMIC_UMAX_RTN_32 = 20 -TC_OP_ATOMIC_AND_RTN_32 = 21 -TC_OP_ATOMIC_OR_RTN_32 = 22 -TC_OP_ATOMIC_XOR_RTN_32 = 23 -TC_OP_ATOMIC_INC_RTN_32 = 24 -TC_OP_ATOMIC_DEC_RTN_32 = 25 -TC_OP_WBINVL1_VOL = 26 -TC_OP_WBINVL1_SD = 27 -TC_OP_RESERVED_NON_FLOAT_RTN_32_0 = 28 -TC_OP_RESERVED_NON_FLOAT_RTN_32_1 = 29 -TC_OP_RESERVED_NON_FLOAT_RTN_32_2 = 30 -TC_OP_RESERVED_NON_FLOAT_RTN_32_3 = 31 -TC_OP_WRITE = 32 -TC_OP_ATOMIC_FCMPSWAP_RTN_64 = 33 -TC_OP_ATOMIC_FMIN_RTN_64 = 34 -TC_OP_ATOMIC_FMAX_RTN_64 = 35 -TC_OP_RESERVED_FOP_RTN_64_0 = 36 -TC_OP_RESERVED_FOP_RTN_64_1 = 37 -TC_OP_RESERVED_FOP_RTN_64_2 = 38 -TC_OP_ATOMIC_SWAP_RTN_64 = 39 -TC_OP_ATOMIC_CMPSWAP_RTN_64 = 40 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64 = 41 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64 = 42 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64 = 43 -TC_OP_WBINVL2_SD = 44 -TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_0 = 45 -TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_1 = 46 -TC_OP_ATOMIC_ADD_RTN_64 = 47 -TC_OP_ATOMIC_SUB_RTN_64 = 48 -TC_OP_ATOMIC_SMIN_RTN_64 = 49 -TC_OP_ATOMIC_UMIN_RTN_64 = 50 -TC_OP_ATOMIC_SMAX_RTN_64 = 51 -TC_OP_ATOMIC_UMAX_RTN_64 = 52 -TC_OP_ATOMIC_AND_RTN_64 = 53 -TC_OP_ATOMIC_OR_RTN_64 = 54 -TC_OP_ATOMIC_XOR_RTN_64 = 55 -TC_OP_ATOMIC_INC_RTN_64 = 56 -TC_OP_ATOMIC_DEC_RTN_64 = 57 -TC_OP_WBL2_NC = 58 -TC_OP_WBL2_WC = 59 -TC_OP_RESERVED_NON_FLOAT_RTN_64_1 = 60 -TC_OP_RESERVED_NON_FLOAT_RTN_64_2 = 61 -TC_OP_RESERVED_NON_FLOAT_RTN_64_3 = 62 -TC_OP_RESERVED_NON_FLOAT_RTN_64_4 = 63 -TC_OP_WBINVL1 = 64 -TC_OP_ATOMIC_FCMPSWAP_32 = 65 -TC_OP_ATOMIC_FMIN_32 = 66 -TC_OP_ATOMIC_FMAX_32 = 67 -TC_OP_RESERVED_FOP_32_0 = 68 -TC_OP_RESERVED_FOP_32_1 = 69 -TC_OP_RESERVED_FOP_32_2 = 70 -TC_OP_ATOMIC_SWAP_32 = 71 -TC_OP_ATOMIC_CMPSWAP_32 = 72 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32 = 73 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_32 = 74 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_32 = 75 -TC_OP_INV_METADATA = 76 -TC_OP_RESERVED_FOP_FLUSH_DENORM_32_1 = 77 -TC_OP_RESERVED_FOP_FLUSH_DENORM_32_2 = 78 -TC_OP_ATOMIC_ADD_32 = 79 -TC_OP_ATOMIC_SUB_32 = 80 -TC_OP_ATOMIC_SMIN_32 = 81 -TC_OP_ATOMIC_UMIN_32 = 82 -TC_OP_ATOMIC_SMAX_32 = 83 -TC_OP_ATOMIC_UMAX_32 = 84 -TC_OP_ATOMIC_AND_32 = 85 -TC_OP_ATOMIC_OR_32 = 86 -TC_OP_ATOMIC_XOR_32 = 87 -TC_OP_ATOMIC_INC_32 = 88 -TC_OP_ATOMIC_DEC_32 = 89 -TC_OP_INVL2_NC = 90 -TC_OP_NOP_RTN0 = 91 -TC_OP_RESERVED_NON_FLOAT_32_1 = 92 -TC_OP_RESERVED_NON_FLOAT_32_2 = 93 -TC_OP_RESERVED_NON_FLOAT_32_3 = 94 -TC_OP_RESERVED_NON_FLOAT_32_4 = 95 -TC_OP_WBINVL2 = 96 -TC_OP_ATOMIC_FCMPSWAP_64 = 97 -TC_OP_ATOMIC_FMIN_64 = 98 -TC_OP_ATOMIC_FMAX_64 = 99 -TC_OP_RESERVED_FOP_64_0 = 100 -TC_OP_RESERVED_FOP_64_1 = 101 -TC_OP_RESERVED_FOP_64_2 = 102 -TC_OP_ATOMIC_SWAP_64 = 103 -TC_OP_ATOMIC_CMPSWAP_64 = 104 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64 = 105 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_64 = 106 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_64 = 107 -TC_OP_RESERVED_FOP_FLUSH_DENORM_64_0 = 108 -TC_OP_RESERVED_FOP_FLUSH_DENORM_64_1 = 109 -TC_OP_RESERVED_FOP_FLUSH_DENORM_64_2 = 110 -TC_OP_ATOMIC_ADD_64 = 111 -TC_OP_ATOMIC_SUB_64 = 112 -TC_OP_ATOMIC_SMIN_64 = 113 -TC_OP_ATOMIC_UMIN_64 = 114 -TC_OP_ATOMIC_SMAX_64 = 115 -TC_OP_ATOMIC_UMAX_64 = 116 -TC_OP_ATOMIC_AND_64 = 117 -TC_OP_ATOMIC_OR_64 = 118 -TC_OP_ATOMIC_XOR_64 = 119 -TC_OP_ATOMIC_INC_64 = 120 -TC_OP_ATOMIC_DEC_64 = 121 -TC_OP_WBINVL2_NC = 122 -TC_OP_NOP_ACK = 123 -TC_OP_RESERVED_NON_FLOAT_64_1 = 124 -TC_OP_RESERVED_NON_FLOAT_64_2 = 125 -TC_OP_RESERVED_NON_FLOAT_64_3 = 126 -TC_OP_RESERVED_NON_FLOAT_64_4 = 127 -TC_OP = ctypes.c_uint32 # enum - -# values for enumeration 'TC_NACKS' -TC_NACKS__enumvalues = { - 0: 'TC_NACK_NO_FAULT', - 1: 'TC_NACK_PAGE_FAULT', - 2: 'TC_NACK_PROTECTION_FAULT', - 3: 'TC_NACK_DATA_ERROR', -} -TC_NACK_NO_FAULT = 0 -TC_NACK_PAGE_FAULT = 1 -TC_NACK_PROTECTION_FAULT = 2 -TC_NACK_DATA_ERROR = 3 -TC_NACKS = ctypes.c_uint32 # enum - -# values for enumeration 'TC_EA_CID' -TC_EA_CID__enumvalues = { - 0: 'TC_EA_CID_RT', - 1: 'TC_EA_CID_FMASK', - 2: 'TC_EA_CID_DCC', - 3: 'TC_EA_CID_TCPMETA', - 4: 'TC_EA_CID_Z', - 5: 'TC_EA_CID_STENCIL', - 6: 'TC_EA_CID_HTILE', - 7: 'TC_EA_CID_MISC', - 8: 'TC_EA_CID_TCP', - 9: 'TC_EA_CID_SQC', - 10: 'TC_EA_CID_CPF', - 11: 'TC_EA_CID_CPG', - 12: 'TC_EA_CID_IA', - 13: 'TC_EA_CID_WD', - 14: 'TC_EA_CID_PA', - 15: 'TC_EA_CID_UTCL2_TPI', -} -TC_EA_CID_RT = 0 -TC_EA_CID_FMASK = 1 -TC_EA_CID_DCC = 2 -TC_EA_CID_TCPMETA = 3 -TC_EA_CID_Z = 4 -TC_EA_CID_STENCIL = 5 -TC_EA_CID_HTILE = 6 -TC_EA_CID_MISC = 7 -TC_EA_CID_TCP = 8 -TC_EA_CID_SQC = 9 -TC_EA_CID_CPF = 10 -TC_EA_CID_CPG = 11 -TC_EA_CID_IA = 12 -TC_EA_CID_WD = 13 -TC_EA_CID_PA = 14 -TC_EA_CID_UTCL2_TPI = 15 -TC_EA_CID = ctypes.c_uint32 # enum - -# values for enumeration 'GL2_OP_MASKS' -GL2_OP_MASKS__enumvalues = { - 8: 'GL2_OP_MASK_FLUSH_DENROM', - 32: 'GL2_OP_MASK_64', - 64: 'GL2_OP_MASK_NO_RTN', -} -GL2_OP_MASK_FLUSH_DENROM = 8 -GL2_OP_MASK_64 = 32 -GL2_OP_MASK_NO_RTN = 64 -GL2_OP_MASKS = ctypes.c_uint32 # enum - -# values for enumeration 'GL2_OP' -GL2_OP__enumvalues = { - 0: 'GL2_OP_READ', - 1: 'GL2_OP_ATOMIC_FCMPSWAP_RTN_32', - 2: 'GL2_OP_ATOMIC_FMIN_RTN_32', - 3: 'GL2_OP_ATOMIC_FMAX_RTN_32', - 7: 'GL2_OP_ATOMIC_SWAP_RTN_32', - 8: 'GL2_OP_ATOMIC_CMPSWAP_RTN_32', - 9: 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32', - 10: 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32', - 11: 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32', - 12: 'GL2_OP_PROBE_FILTER', - 13: 'GL2_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_1', - 14: 'GL2_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2', - 15: 'GL2_OP_ATOMIC_ADD_RTN_32', - 16: 'GL2_OP_ATOMIC_SUB_RTN_32', - 17: 'GL2_OP_ATOMIC_SMIN_RTN_32', - 18: 'GL2_OP_ATOMIC_UMIN_RTN_32', - 19: 'GL2_OP_ATOMIC_SMAX_RTN_32', - 20: 'GL2_OP_ATOMIC_UMAX_RTN_32', - 21: 'GL2_OP_ATOMIC_AND_RTN_32', - 22: 'GL2_OP_ATOMIC_OR_RTN_32', - 23: 'GL2_OP_ATOMIC_XOR_RTN_32', - 24: 'GL2_OP_ATOMIC_INC_RTN_32', - 25: 'GL2_OP_ATOMIC_DEC_RTN_32', - 32: 'GL2_OP_WRITE', - 33: 'GL2_OP_ATOMIC_FCMPSWAP_RTN_64', - 34: 'GL2_OP_ATOMIC_FMIN_RTN_64', - 35: 'GL2_OP_ATOMIC_FMAX_RTN_64', - 39: 'GL2_OP_ATOMIC_SWAP_RTN_64', - 40: 'GL2_OP_ATOMIC_CMPSWAP_RTN_64', - 41: 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64', - 42: 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64', - 43: 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64', - 47: 'GL2_OP_ATOMIC_ADD_RTN_64', - 48: 'GL2_OP_ATOMIC_SUB_RTN_64', - 49: 'GL2_OP_ATOMIC_SMIN_RTN_64', - 50: 'GL2_OP_ATOMIC_UMIN_RTN_64', - 51: 'GL2_OP_ATOMIC_SMAX_RTN_64', - 52: 'GL2_OP_ATOMIC_UMAX_RTN_64', - 53: 'GL2_OP_ATOMIC_AND_RTN_64', - 54: 'GL2_OP_ATOMIC_OR_RTN_64', - 55: 'GL2_OP_ATOMIC_XOR_RTN_64', - 56: 'GL2_OP_ATOMIC_INC_RTN_64', - 57: 'GL2_OP_ATOMIC_DEC_RTN_64', - 64: 'GL2_OP_GL1_INV', - 65: 'GL2_OP_ATOMIC_FCMPSWAP_32', - 66: 'GL2_OP_ATOMIC_FMIN_32', - 67: 'GL2_OP_ATOMIC_FMAX_32', - 71: 'GL2_OP_ATOMIC_SWAP_32', - 72: 'GL2_OP_ATOMIC_CMPSWAP_32', - 73: 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32', - 74: 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_32', - 75: 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_32', - 79: 'GL2_OP_ATOMIC_ADD_32', - 80: 'GL2_OP_ATOMIC_SUB_32', - 81: 'GL2_OP_ATOMIC_SMIN_32', - 82: 'GL2_OP_ATOMIC_UMIN_32', - 83: 'GL2_OP_ATOMIC_SMAX_32', - 84: 'GL2_OP_ATOMIC_UMAX_32', - 85: 'GL2_OP_ATOMIC_AND_32', - 86: 'GL2_OP_ATOMIC_OR_32', - 87: 'GL2_OP_ATOMIC_XOR_32', - 88: 'GL2_OP_ATOMIC_INC_32', - 89: 'GL2_OP_ATOMIC_DEC_32', - 91: 'GL2_OP_NOP_RTN0', - 97: 'GL2_OP_ATOMIC_FCMPSWAP_64', - 98: 'GL2_OP_ATOMIC_FMIN_64', - 99: 'GL2_OP_ATOMIC_FMAX_64', - 103: 'GL2_OP_ATOMIC_SWAP_64', - 104: 'GL2_OP_ATOMIC_CMPSWAP_64', - 105: 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64', - 106: 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_64', - 107: 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_64', - 111: 'GL2_OP_ATOMIC_ADD_64', - 112: 'GL2_OP_ATOMIC_SUB_64', - 113: 'GL2_OP_ATOMIC_SMIN_64', - 114: 'GL2_OP_ATOMIC_UMIN_64', - 115: 'GL2_OP_ATOMIC_SMAX_64', - 116: 'GL2_OP_ATOMIC_UMAX_64', - 117: 'GL2_OP_ATOMIC_AND_64', - 118: 'GL2_OP_ATOMIC_OR_64', - 119: 'GL2_OP_ATOMIC_XOR_64', - 120: 'GL2_OP_ATOMIC_INC_64', - 121: 'GL2_OP_ATOMIC_DEC_64', - 123: 'GL2_OP_NOP_ACK', -} -GL2_OP_READ = 0 -GL2_OP_ATOMIC_FCMPSWAP_RTN_32 = 1 -GL2_OP_ATOMIC_FMIN_RTN_32 = 2 -GL2_OP_ATOMIC_FMAX_RTN_32 = 3 -GL2_OP_ATOMIC_SWAP_RTN_32 = 7 -GL2_OP_ATOMIC_CMPSWAP_RTN_32 = 8 -GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32 = 9 -GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32 = 10 -GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32 = 11 -GL2_OP_PROBE_FILTER = 12 -GL2_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_1 = 13 -GL2_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2 = 14 -GL2_OP_ATOMIC_ADD_RTN_32 = 15 -GL2_OP_ATOMIC_SUB_RTN_32 = 16 -GL2_OP_ATOMIC_SMIN_RTN_32 = 17 -GL2_OP_ATOMIC_UMIN_RTN_32 = 18 -GL2_OP_ATOMIC_SMAX_RTN_32 = 19 -GL2_OP_ATOMIC_UMAX_RTN_32 = 20 -GL2_OP_ATOMIC_AND_RTN_32 = 21 -GL2_OP_ATOMIC_OR_RTN_32 = 22 -GL2_OP_ATOMIC_XOR_RTN_32 = 23 -GL2_OP_ATOMIC_INC_RTN_32 = 24 -GL2_OP_ATOMIC_DEC_RTN_32 = 25 -GL2_OP_WRITE = 32 -GL2_OP_ATOMIC_FCMPSWAP_RTN_64 = 33 -GL2_OP_ATOMIC_FMIN_RTN_64 = 34 -GL2_OP_ATOMIC_FMAX_RTN_64 = 35 -GL2_OP_ATOMIC_SWAP_RTN_64 = 39 -GL2_OP_ATOMIC_CMPSWAP_RTN_64 = 40 -GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64 = 41 -GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64 = 42 -GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64 = 43 -GL2_OP_ATOMIC_ADD_RTN_64 = 47 -GL2_OP_ATOMIC_SUB_RTN_64 = 48 -GL2_OP_ATOMIC_SMIN_RTN_64 = 49 -GL2_OP_ATOMIC_UMIN_RTN_64 = 50 -GL2_OP_ATOMIC_SMAX_RTN_64 = 51 -GL2_OP_ATOMIC_UMAX_RTN_64 = 52 -GL2_OP_ATOMIC_AND_RTN_64 = 53 -GL2_OP_ATOMIC_OR_RTN_64 = 54 -GL2_OP_ATOMIC_XOR_RTN_64 = 55 -GL2_OP_ATOMIC_INC_RTN_64 = 56 -GL2_OP_ATOMIC_DEC_RTN_64 = 57 -GL2_OP_GL1_INV = 64 -GL2_OP_ATOMIC_FCMPSWAP_32 = 65 -GL2_OP_ATOMIC_FMIN_32 = 66 -GL2_OP_ATOMIC_FMAX_32 = 67 -GL2_OP_ATOMIC_SWAP_32 = 71 -GL2_OP_ATOMIC_CMPSWAP_32 = 72 -GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32 = 73 -GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_32 = 74 -GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_32 = 75 -GL2_OP_ATOMIC_ADD_32 = 79 -GL2_OP_ATOMIC_SUB_32 = 80 -GL2_OP_ATOMIC_SMIN_32 = 81 -GL2_OP_ATOMIC_UMIN_32 = 82 -GL2_OP_ATOMIC_SMAX_32 = 83 -GL2_OP_ATOMIC_UMAX_32 = 84 -GL2_OP_ATOMIC_AND_32 = 85 -GL2_OP_ATOMIC_OR_32 = 86 -GL2_OP_ATOMIC_XOR_32 = 87 -GL2_OP_ATOMIC_INC_32 = 88 -GL2_OP_ATOMIC_DEC_32 = 89 -GL2_OP_NOP_RTN0 = 91 -GL2_OP_ATOMIC_FCMPSWAP_64 = 97 -GL2_OP_ATOMIC_FMIN_64 = 98 -GL2_OP_ATOMIC_FMAX_64 = 99 -GL2_OP_ATOMIC_SWAP_64 = 103 -GL2_OP_ATOMIC_CMPSWAP_64 = 104 -GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64 = 105 -GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_64 = 106 -GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_64 = 107 -GL2_OP_ATOMIC_ADD_64 = 111 -GL2_OP_ATOMIC_SUB_64 = 112 -GL2_OP_ATOMIC_SMIN_64 = 113 -GL2_OP_ATOMIC_UMIN_64 = 114 -GL2_OP_ATOMIC_SMAX_64 = 115 -GL2_OP_ATOMIC_UMAX_64 = 116 -GL2_OP_ATOMIC_AND_64 = 117 -GL2_OP_ATOMIC_OR_64 = 118 -GL2_OP_ATOMIC_XOR_64 = 119 -GL2_OP_ATOMIC_INC_64 = 120 -GL2_OP_ATOMIC_DEC_64 = 121 -GL2_OP_NOP_ACK = 123 -GL2_OP = ctypes.c_uint32 # enum - -# values for enumeration 'GL2_NACKS' -GL2_NACKS__enumvalues = { - 0: 'GL2_NACK_NO_FAULT', - 1: 'GL2_NACK_PAGE_FAULT', - 2: 'GL2_NACK_PROTECTION_FAULT', - 3: 'GL2_NACK_DATA_ERROR', -} -GL2_NACK_NO_FAULT = 0 -GL2_NACK_PAGE_FAULT = 1 -GL2_NACK_PROTECTION_FAULT = 2 -GL2_NACK_DATA_ERROR = 3 -GL2_NACKS = ctypes.c_uint32 # enum - -# values for enumeration 'GL2_EA_CID' -GL2_EA_CID__enumvalues = { - 0: 'GL2_EA_CID_CLIENT', - 1: 'GL2_EA_CID_SDMA', - 2: 'GL2_EA_CID_RLC', - 4: 'GL2_EA_CID_CP', - 5: 'GL2_EA_CID_CPDMA', - 6: 'GL2_EA_CID_UTCL2', - 7: 'GL2_EA_CID_RT', - 8: 'GL2_EA_CID_FMASK', - 9: 'GL2_EA_CID_DCC', - 10: 'GL2_EA_CID_Z_STENCIL', - 11: 'GL2_EA_CID_ZPCPSD', - 12: 'GL2_EA_CID_HTILE', - 15: 'GL2_EA_CID_TCPMETA', -} -GL2_EA_CID_CLIENT = 0 -GL2_EA_CID_SDMA = 1 -GL2_EA_CID_RLC = 2 -GL2_EA_CID_CP = 4 -GL2_EA_CID_CPDMA = 5 -GL2_EA_CID_UTCL2 = 6 -GL2_EA_CID_RT = 7 -GL2_EA_CID_FMASK = 8 -GL2_EA_CID_DCC = 9 -GL2_EA_CID_Z_STENCIL = 10 -GL2_EA_CID_ZPCPSD = 11 -GL2_EA_CID_HTILE = 12 -GL2_EA_CID_TCPMETA = 15 -GL2_EA_CID = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_SAMPLE_CNTL' -SPI_SAMPLE_CNTL__enumvalues = { - 0: 'CENTROIDS_ONLY', - 1: 'CENTERS_ONLY', - 2: 'CENTROIDS_AND_CENTERS', - 3: 'UNDEF', -} -CENTROIDS_ONLY = 0 -CENTERS_ONLY = 1 -CENTROIDS_AND_CENTERS = 2 -UNDEF = 3 -SPI_SAMPLE_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_FOG_MODE' -SPI_FOG_MODE__enumvalues = { - 0: 'SPI_FOG_NONE', - 1: 'SPI_FOG_EXP', - 2: 'SPI_FOG_EXP2', - 3: 'SPI_FOG_LINEAR', -} -SPI_FOG_NONE = 0 -SPI_FOG_EXP = 1 -SPI_FOG_EXP2 = 2 -SPI_FOG_LINEAR = 3 -SPI_FOG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_PNT_SPRITE_OVERRIDE' -SPI_PNT_SPRITE_OVERRIDE__enumvalues = { - 0: 'SPI_PNT_SPRITE_SEL_0', - 1: 'SPI_PNT_SPRITE_SEL_1', - 2: 'SPI_PNT_SPRITE_SEL_S', - 3: 'SPI_PNT_SPRITE_SEL_T', - 4: 'SPI_PNT_SPRITE_SEL_NONE', -} -SPI_PNT_SPRITE_SEL_0 = 0 -SPI_PNT_SPRITE_SEL_1 = 1 -SPI_PNT_SPRITE_SEL_S = 2 -SPI_PNT_SPRITE_SEL_T = 3 -SPI_PNT_SPRITE_SEL_NONE = 4 -SPI_PNT_SPRITE_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_PERFCNT_SEL' -SPI_PERFCNT_SEL__enumvalues = { - 0: 'SPI_PERF_VS_WINDOW_VALID', - 1: 'SPI_PERF_VS_BUSY', - 2: 'SPI_PERF_VS_FIRST_WAVE', - 3: 'SPI_PERF_VS_LAST_WAVE', - 4: 'SPI_PERF_VS_LSHS_DEALLOC', - 5: 'SPI_PERF_VS_PC_STALL', - 6: 'SPI_PERF_VS_POS0_STALL', - 7: 'SPI_PERF_VS_POS1_STALL', - 8: 'SPI_PERF_VS_CRAWLER_STALL', - 9: 'SPI_PERF_VS_EVENT_WAVE', - 10: 'SPI_PERF_VS_WAVE', - 11: 'SPI_PERF_VS_PERS_UPD_FULL0', - 12: 'SPI_PERF_VS_PERS_UPD_FULL1', - 13: 'SPI_PERF_VS_LATE_ALLOC_FULL', - 14: 'SPI_PERF_VS_FIRST_SUBGRP', - 15: 'SPI_PERF_VS_LAST_SUBGRP', - 16: 'SPI_PERF_VS_ALLOC_CNT', - 17: 'SPI_PERF_VS_PC_ALLOC_CNT', - 18: 'SPI_PERF_VS_LATE_ALLOC_ACCUM', - 19: 'SPI_PERF_GS_WINDOW_VALID', - 20: 'SPI_PERF_GS_BUSY', - 21: 'SPI_PERF_GS_CRAWLER_STALL', - 22: 'SPI_PERF_GS_EVENT_WAVE', - 23: 'SPI_PERF_GS_WAVE', - 24: 'SPI_PERF_GS_PERS_UPD_FULL0', - 25: 'SPI_PERF_GS_PERS_UPD_FULL1', - 26: 'SPI_PERF_GS_FIRST_SUBGRP', - 27: 'SPI_PERF_GS_LAST_SUBGRP', - 28: 'SPI_PERF_GS_HS_DEALLOC', - 29: 'SPI_PERF_GS_NGG_SE_LATE_ALLOC_LIMIT', - 30: 'SPI_PERF_GS_GRP_FIFO_FULL', - 31: 'SPI_PERF_HS_WINDOW_VALID', - 32: 'SPI_PERF_HS_BUSY', - 33: 'SPI_PERF_HS_CRAWLER_STALL', - 34: 'SPI_PERF_HS_FIRST_WAVE', - 35: 'SPI_PERF_HS_LAST_WAVE', - 36: 'SPI_PERF_HS_OFFCHIP_LDS_STALL', - 37: 'SPI_PERF_HS_EVENT_WAVE', - 38: 'SPI_PERF_HS_WAVE', - 39: 'SPI_PERF_HS_PERS_UPD_FULL0', - 40: 'SPI_PERF_HS_PERS_UPD_FULL1', - 41: 'SPI_PERF_CSG_WINDOW_VALID', - 42: 'SPI_PERF_CSG_BUSY', - 43: 'SPI_PERF_CSG_NUM_THREADGROUPS', - 44: 'SPI_PERF_CSG_CRAWLER_STALL', - 45: 'SPI_PERF_CSG_EVENT_WAVE', - 46: 'SPI_PERF_CSG_WAVE', - 47: 'SPI_PERF_CSN_WINDOW_VALID', - 48: 'SPI_PERF_CSN_BUSY', - 49: 'SPI_PERF_CSN_NUM_THREADGROUPS', - 50: 'SPI_PERF_CSN_CRAWLER_STALL', - 51: 'SPI_PERF_CSN_EVENT_WAVE', - 52: 'SPI_PERF_CSN_WAVE', - 53: 'SPI_PERF_PS0_WINDOW_VALID', - 54: 'SPI_PERF_PS1_WINDOW_VALID', - 55: 'SPI_PERF_PS2_WINDOW_VALID', - 56: 'SPI_PERF_PS3_WINDOW_VALID', - 57: 'SPI_PERF_PS0_BUSY', - 58: 'SPI_PERF_PS1_BUSY', - 59: 'SPI_PERF_PS2_BUSY', - 60: 'SPI_PERF_PS3_BUSY', - 61: 'SPI_PERF_PS0_ACTIVE', - 62: 'SPI_PERF_PS1_ACTIVE', - 63: 'SPI_PERF_PS2_ACTIVE', - 64: 'SPI_PERF_PS3_ACTIVE', - 65: 'SPI_PERF_PS0_DEALLOC_BIN0', - 66: 'SPI_PERF_PS1_DEALLOC_BIN0', - 67: 'SPI_PERF_PS2_DEALLOC_BIN0', - 68: 'SPI_PERF_PS3_DEALLOC_BIN0', - 69: 'SPI_PERF_PS0_FPOS_BIN1_STALL', - 70: 'SPI_PERF_PS1_FPOS_BIN1_STALL', - 71: 'SPI_PERF_PS2_FPOS_BIN1_STALL', - 72: 'SPI_PERF_PS3_FPOS_BIN1_STALL', - 73: 'SPI_PERF_PS0_EVENT_WAVE', - 74: 'SPI_PERF_PS1_EVENT_WAVE', - 75: 'SPI_PERF_PS2_EVENT_WAVE', - 76: 'SPI_PERF_PS3_EVENT_WAVE', - 77: 'SPI_PERF_PS0_WAVE', - 78: 'SPI_PERF_PS1_WAVE', - 79: 'SPI_PERF_PS2_WAVE', - 80: 'SPI_PERF_PS3_WAVE', - 81: 'SPI_PERF_PS0_OPT_WAVE', - 82: 'SPI_PERF_PS1_OPT_WAVE', - 83: 'SPI_PERF_PS2_OPT_WAVE', - 84: 'SPI_PERF_PS3_OPT_WAVE', - 85: 'SPI_PERF_PS0_PASS_BIN0', - 86: 'SPI_PERF_PS1_PASS_BIN0', - 87: 'SPI_PERF_PS2_PASS_BIN0', - 88: 'SPI_PERF_PS3_PASS_BIN0', - 89: 'SPI_PERF_PS0_PASS_BIN1', - 90: 'SPI_PERF_PS1_PASS_BIN1', - 91: 'SPI_PERF_PS2_PASS_BIN1', - 92: 'SPI_PERF_PS3_PASS_BIN1', - 93: 'SPI_PERF_PS0_FPOS_BIN2', - 94: 'SPI_PERF_PS1_FPOS_BIN2', - 95: 'SPI_PERF_PS2_FPOS_BIN2', - 96: 'SPI_PERF_PS3_FPOS_BIN2', - 97: 'SPI_PERF_PS0_PRIM_BIN0', - 98: 'SPI_PERF_PS1_PRIM_BIN0', - 99: 'SPI_PERF_PS2_PRIM_BIN0', - 100: 'SPI_PERF_PS3_PRIM_BIN0', - 101: 'SPI_PERF_PS0_PRIM_BIN1', - 102: 'SPI_PERF_PS1_PRIM_BIN1', - 103: 'SPI_PERF_PS2_PRIM_BIN1', - 104: 'SPI_PERF_PS3_PRIM_BIN1', - 105: 'SPI_PERF_PS0_CNF_BIN2', - 106: 'SPI_PERF_PS1_CNF_BIN2', - 107: 'SPI_PERF_PS2_CNF_BIN2', - 108: 'SPI_PERF_PS3_CNF_BIN2', - 109: 'SPI_PERF_PS0_CNF_BIN3', - 110: 'SPI_PERF_PS1_CNF_BIN3', - 111: 'SPI_PERF_PS2_CNF_BIN3', - 112: 'SPI_PERF_PS3_CNF_BIN3', - 113: 'SPI_PERF_PS0_CRAWLER_STALL', - 114: 'SPI_PERF_PS1_CRAWLER_STALL', - 115: 'SPI_PERF_PS2_CRAWLER_STALL', - 116: 'SPI_PERF_PS3_CRAWLER_STALL', - 117: 'SPI_PERF_PS0_LDS_RES_FULL', - 118: 'SPI_PERF_PS1_LDS_RES_FULL', - 119: 'SPI_PERF_PS2_LDS_RES_FULL', - 120: 'SPI_PERF_PS3_LDS_RES_FULL', - 121: 'SPI_PERF_PS_PERS_UPD_FULL0', - 122: 'SPI_PERF_PS_PERS_UPD_FULL1', - 123: 'SPI_PERF_PS0_POPS_WAVE_SENT', - 124: 'SPI_PERF_PS1_POPS_WAVE_SENT', - 125: 'SPI_PERF_PS2_POPS_WAVE_SENT', - 126: 'SPI_PERF_PS3_POPS_WAVE_SENT', - 127: 'SPI_PERF_PS0_POPS_WAVE_EXIT', - 128: 'SPI_PERF_PS1_POPS_WAVE_EXIT', - 129: 'SPI_PERF_PS2_POPS_WAVE_EXIT', - 130: 'SPI_PERF_PS3_POPS_WAVE_EXIT', - 131: 'SPI_PERF_LDS0_PC_VALID', - 132: 'SPI_PERF_LDS1_PC_VALID', - 133: 'SPI_PERF_RA_PIPE_REQ_BIN2', - 134: 'SPI_PERF_RA_TASK_REQ_BIN3', - 135: 'SPI_PERF_RA_WR_CTL_FULL', - 136: 'SPI_PERF_RA_REQ_NO_ALLOC', - 137: 'SPI_PERF_RA_REQ_NO_ALLOC_PS', - 138: 'SPI_PERF_RA_REQ_NO_ALLOC_VS', - 139: 'SPI_PERF_RA_REQ_NO_ALLOC_GS', - 140: 'SPI_PERF_RA_REQ_NO_ALLOC_HS', - 141: 'SPI_PERF_RA_REQ_NO_ALLOC_CSG', - 142: 'SPI_PERF_RA_REQ_NO_ALLOC_CSN', - 143: 'SPI_PERF_RA_RES_STALL_PS', - 144: 'SPI_PERF_RA_RES_STALL_VS', - 145: 'SPI_PERF_RA_RES_STALL_GS', - 146: 'SPI_PERF_RA_RES_STALL_HS', - 147: 'SPI_PERF_RA_RES_STALL_CSG', - 148: 'SPI_PERF_RA_RES_STALL_CSN', - 149: 'SPI_PERF_RA_TMP_STALL_PS', - 150: 'SPI_PERF_RA_TMP_STALL_VS', - 151: 'SPI_PERF_RA_TMP_STALL_GS', - 152: 'SPI_PERF_RA_TMP_STALL_HS', - 153: 'SPI_PERF_RA_TMP_STALL_CSG', - 154: 'SPI_PERF_RA_TMP_STALL_CSN', - 155: 'SPI_PERF_RA_WAVE_SIMD_FULL_PS', - 156: 'SPI_PERF_RA_WAVE_SIMD_FULL_VS', - 157: 'SPI_PERF_RA_WAVE_SIMD_FULL_GS', - 158: 'SPI_PERF_RA_WAVE_SIMD_FULL_HS', - 159: 'SPI_PERF_RA_WAVE_SIMD_FULL_CSG', - 160: 'SPI_PERF_RA_WAVE_SIMD_FULL_CSN', - 161: 'SPI_PERF_RA_VGPR_SIMD_FULL_PS', - 162: 'SPI_PERF_RA_VGPR_SIMD_FULL_VS', - 163: 'SPI_PERF_RA_VGPR_SIMD_FULL_GS', - 164: 'SPI_PERF_RA_VGPR_SIMD_FULL_HS', - 165: 'SPI_PERF_RA_VGPR_SIMD_FULL_CSG', - 166: 'SPI_PERF_RA_VGPR_SIMD_FULL_CSN', - 167: 'SPI_PERF_RA_SGPR_SIMD_FULL_PS', - 168: 'SPI_PERF_RA_SGPR_SIMD_FULL_VS', - 169: 'SPI_PERF_RA_SGPR_SIMD_FULL_GS', - 170: 'SPI_PERF_RA_SGPR_SIMD_FULL_HS', - 171: 'SPI_PERF_RA_SGPR_SIMD_FULL_CSG', - 172: 'SPI_PERF_RA_SGPR_SIMD_FULL_CSN', - 173: 'SPI_PERF_RA_LDS_CU_FULL_PS', - 174: 'SPI_PERF_RA_LDS_CU_FULL_LS', - 175: 'SPI_PERF_RA_LDS_CU_FULL_ES', - 176: 'SPI_PERF_RA_LDS_CU_FULL_CSG', - 177: 'SPI_PERF_RA_LDS_CU_FULL_CSN', - 178: 'SPI_PERF_RA_BAR_CU_FULL_HS', - 179: 'SPI_PERF_RA_BAR_CU_FULL_CSG', - 180: 'SPI_PERF_RA_BAR_CU_FULL_CSN', - 181: 'SPI_PERF_RA_BULKY_CU_FULL_CSG', - 182: 'SPI_PERF_RA_BULKY_CU_FULL_CSN', - 183: 'SPI_PERF_RA_TGLIM_CU_FULL_CSG', - 184: 'SPI_PERF_RA_TGLIM_CU_FULL_CSN', - 185: 'SPI_PERF_RA_WVLIM_STALL_PS', - 186: 'SPI_PERF_RA_WVLIM_STALL_VS', - 187: 'SPI_PERF_RA_WVLIM_STALL_GS', - 188: 'SPI_PERF_RA_WVLIM_STALL_HS', - 189: 'SPI_PERF_RA_WVLIM_STALL_CSG', - 190: 'SPI_PERF_RA_WVLIM_STALL_CSN', - 191: 'SPI_PERF_RA_VS_LOCK', - 192: 'SPI_PERF_RA_GS_LOCK', - 193: 'SPI_PERF_RA_HS_LOCK', - 194: 'SPI_PERF_RA_CSG_LOCK', - 195: 'SPI_PERF_RA_CSN_LOCK', - 196: 'SPI_PERF_RA_RSV_UPD', - 197: 'SPI_PERF_EXP_ARB_COL_CNT', - 198: 'SPI_PERF_EXP_ARB_PAR_CNT', - 199: 'SPI_PERF_EXP_ARB_POS_CNT', - 200: 'SPI_PERF_EXP_ARB_GDS_CNT', - 201: 'SPI_PERF_NUM_PS_COL_R0_EXPORTS', - 202: 'SPI_PERF_NUM_PS_COL_R1_EXPORTS', - 203: 'SPI_PERF_NUM_VS_POS_R0_EXPORTS', - 204: 'SPI_PERF_NUM_VS_POS_R1_EXPORTS', - 205: 'SPI_PERF_NUM_VS_PARAM_R0_EXPORTS', - 206: 'SPI_PERF_NUM_VS_PARAM_R1_EXPORTS', - 207: 'SPI_PERF_NUM_VS_GDS_R0_EXPORTS', - 208: 'SPI_PERF_NUM_VS_GDS_R1_EXPORTS', - 209: 'SPI_PERF_NUM_EXPGRANT_EXPORTS', - 210: 'SPI_PERF_CLKGATE_BUSY_STALL', - 211: 'SPI_PERF_CLKGATE_ACTIVE_STALL', - 212: 'SPI_PERF_CLKGATE_ALL_CLOCKS_ON', - 213: 'SPI_PERF_CLKGATE_CGTT_DYN_ON', - 214: 'SPI_PERF_CLKGATE_CGTT_REG_ON', - 215: 'SPI_PERF_PIX_ALLOC_PEND_CNT', - 216: 'SPI_PERF_PIX_ALLOC_SCB0_STALL', - 217: 'SPI_PERF_PIX_ALLOC_SCB1_STALL', - 218: 'SPI_PERF_PIX_ALLOC_SCB2_STALL', - 219: 'SPI_PERF_PIX_ALLOC_SCB3_STALL', - 220: 'SPI_PERF_PIX_ALLOC_DB0_STALL', - 221: 'SPI_PERF_PIX_ALLOC_DB1_STALL', - 222: 'SPI_PERF_PIX_ALLOC_DB2_STALL', - 223: 'SPI_PERF_PIX_ALLOC_DB3_STALL', - 224: 'SPI_PERF_PIX_ALLOC_DB4_STALL', - 225: 'SPI_PERF_PIX_ALLOC_DB5_STALL', - 226: 'SPI_PERF_PIX_ALLOC_DB6_STALL', - 227: 'SPI_PERF_PIX_ALLOC_DB7_STALL', - 228: 'SPI_PERF_PC_ALLOC_ACCUM', - 229: 'SPI_PERF_GS_NGG_SE_HAS_BATON', - 230: 'SPI_PERF_GS_NGG_SE_DOES_NOT_HAVE_BATON', - 231: 'SPI_PERF_GS_NGG_SE_FORWARDED_BATON', - 232: 'SPI_PERF_GS_NGG_SE_AT_SYNC_EVENT', - 233: 'SPI_PERF_GS_NGG_SE_SG_ALLOC_PC_SPACE_CNT', - 234: 'SPI_PERF_GS_NGG_SE_DEALLOC_PC_SPACE_CNT', - 235: 'SPI_PERF_GS_NGG_PC_FULL', - 236: 'SPI_PERF_GS_NGG_SE_SEND_GS_ALLOC', - 237: 'SPI_PERF_GS_NGG_GS_ALLOC_FIFO_EMPTY', - 238: 'SPI_PERF_GSC_VTX_BUSY', - 239: 'SPI_PERF_GSC_VTX_INPUT_STARVED', - 240: 'SPI_PERF_GSC_VTX_VSR_STALL', - 241: 'SPI_PERF_GSC_VTX_VSR_FULL', - 242: 'SPI_PERF_GSC_VTX_CAC_BUSY', - 243: 'SPI_PERF_ESC_VTX_BUSY', - 244: 'SPI_PERF_ESC_VTX_INPUT_STARVED', - 245: 'SPI_PERF_ESC_VTX_VSR_STALL', - 246: 'SPI_PERF_ESC_VTX_VSR_FULL', - 247: 'SPI_PERF_ESC_VTX_CAC_BUSY', - 248: 'SPI_PERF_SWC_PS_WR', - 249: 'SPI_PERF_SWC_VS_WR', - 250: 'SPI_PERF_SWC_GS_WR', - 251: 'SPI_PERF_SWC_HS_WR', - 252: 'SPI_PERF_SWC_CSG_WR', - 253: 'SPI_PERF_SWC_CSC_WR', - 254: 'SPI_PERF_VWC_PS_WR', - 255: 'SPI_PERF_VWC_VS_WR', - 256: 'SPI_PERF_VWC_GS_WR', - 257: 'SPI_PERF_VWC_HS_WR', - 258: 'SPI_PERF_VWC_CSG_WR', - 259: 'SPI_PERF_VWC_CSC_WR', - 260: 'SPI_PERF_ES_WINDOW_VALID', - 261: 'SPI_PERF_ES_BUSY', - 262: 'SPI_PERF_ES_CRAWLER_STALL', - 263: 'SPI_PERF_ES_FIRST_WAVE', - 264: 'SPI_PERF_ES_LAST_WAVE', - 265: 'SPI_PERF_ES_LSHS_DEALLOC', - 266: 'SPI_PERF_ES_EVENT_WAVE', - 267: 'SPI_PERF_ES_WAVE', - 268: 'SPI_PERF_ES_PERS_UPD_FULL0', - 269: 'SPI_PERF_ES_PERS_UPD_FULL1', - 270: 'SPI_PERF_ES_FIRST_SUBGRP', - 271: 'SPI_PERF_ES_LAST_SUBGRP', - 272: 'SPI_PERF_LS_WINDOW_VALID', - 273: 'SPI_PERF_LS_BUSY', - 274: 'SPI_PERF_LS_CRAWLER_STALL', - 275: 'SPI_PERF_LS_FIRST_WAVE', - 276: 'SPI_PERF_LS_LAST_WAVE', - 277: 'SPI_PERF_LS_OFFCHIP_LDS_STALL', - 278: 'SPI_PERF_LS_EVENT_WAVE', - 279: 'SPI_PERF_LS_WAVE', - 280: 'SPI_PERF_LS_PERS_UPD_FULL0', - 281: 'SPI_PERF_LS_PERS_UPD_FULL1', -} -SPI_PERF_VS_WINDOW_VALID = 0 -SPI_PERF_VS_BUSY = 1 -SPI_PERF_VS_FIRST_WAVE = 2 -SPI_PERF_VS_LAST_WAVE = 3 -SPI_PERF_VS_LSHS_DEALLOC = 4 -SPI_PERF_VS_PC_STALL = 5 -SPI_PERF_VS_POS0_STALL = 6 -SPI_PERF_VS_POS1_STALL = 7 -SPI_PERF_VS_CRAWLER_STALL = 8 -SPI_PERF_VS_EVENT_WAVE = 9 -SPI_PERF_VS_WAVE = 10 -SPI_PERF_VS_PERS_UPD_FULL0 = 11 -SPI_PERF_VS_PERS_UPD_FULL1 = 12 -SPI_PERF_VS_LATE_ALLOC_FULL = 13 -SPI_PERF_VS_FIRST_SUBGRP = 14 -SPI_PERF_VS_LAST_SUBGRP = 15 -SPI_PERF_VS_ALLOC_CNT = 16 -SPI_PERF_VS_PC_ALLOC_CNT = 17 -SPI_PERF_VS_LATE_ALLOC_ACCUM = 18 -SPI_PERF_GS_WINDOW_VALID = 19 -SPI_PERF_GS_BUSY = 20 -SPI_PERF_GS_CRAWLER_STALL = 21 -SPI_PERF_GS_EVENT_WAVE = 22 -SPI_PERF_GS_WAVE = 23 -SPI_PERF_GS_PERS_UPD_FULL0 = 24 -SPI_PERF_GS_PERS_UPD_FULL1 = 25 -SPI_PERF_GS_FIRST_SUBGRP = 26 -SPI_PERF_GS_LAST_SUBGRP = 27 -SPI_PERF_GS_HS_DEALLOC = 28 -SPI_PERF_GS_NGG_SE_LATE_ALLOC_LIMIT = 29 -SPI_PERF_GS_GRP_FIFO_FULL = 30 -SPI_PERF_HS_WINDOW_VALID = 31 -SPI_PERF_HS_BUSY = 32 -SPI_PERF_HS_CRAWLER_STALL = 33 -SPI_PERF_HS_FIRST_WAVE = 34 -SPI_PERF_HS_LAST_WAVE = 35 -SPI_PERF_HS_OFFCHIP_LDS_STALL = 36 -SPI_PERF_HS_EVENT_WAVE = 37 -SPI_PERF_HS_WAVE = 38 -SPI_PERF_HS_PERS_UPD_FULL0 = 39 -SPI_PERF_HS_PERS_UPD_FULL1 = 40 -SPI_PERF_CSG_WINDOW_VALID = 41 -SPI_PERF_CSG_BUSY = 42 -SPI_PERF_CSG_NUM_THREADGROUPS = 43 -SPI_PERF_CSG_CRAWLER_STALL = 44 -SPI_PERF_CSG_EVENT_WAVE = 45 -SPI_PERF_CSG_WAVE = 46 -SPI_PERF_CSN_WINDOW_VALID = 47 -SPI_PERF_CSN_BUSY = 48 -SPI_PERF_CSN_NUM_THREADGROUPS = 49 -SPI_PERF_CSN_CRAWLER_STALL = 50 -SPI_PERF_CSN_EVENT_WAVE = 51 -SPI_PERF_CSN_WAVE = 52 -SPI_PERF_PS0_WINDOW_VALID = 53 -SPI_PERF_PS1_WINDOW_VALID = 54 -SPI_PERF_PS2_WINDOW_VALID = 55 -SPI_PERF_PS3_WINDOW_VALID = 56 -SPI_PERF_PS0_BUSY = 57 -SPI_PERF_PS1_BUSY = 58 -SPI_PERF_PS2_BUSY = 59 -SPI_PERF_PS3_BUSY = 60 -SPI_PERF_PS0_ACTIVE = 61 -SPI_PERF_PS1_ACTIVE = 62 -SPI_PERF_PS2_ACTIVE = 63 -SPI_PERF_PS3_ACTIVE = 64 -SPI_PERF_PS0_DEALLOC_BIN0 = 65 -SPI_PERF_PS1_DEALLOC_BIN0 = 66 -SPI_PERF_PS2_DEALLOC_BIN0 = 67 -SPI_PERF_PS3_DEALLOC_BIN0 = 68 -SPI_PERF_PS0_FPOS_BIN1_STALL = 69 -SPI_PERF_PS1_FPOS_BIN1_STALL = 70 -SPI_PERF_PS2_FPOS_BIN1_STALL = 71 -SPI_PERF_PS3_FPOS_BIN1_STALL = 72 -SPI_PERF_PS0_EVENT_WAVE = 73 -SPI_PERF_PS1_EVENT_WAVE = 74 -SPI_PERF_PS2_EVENT_WAVE = 75 -SPI_PERF_PS3_EVENT_WAVE = 76 -SPI_PERF_PS0_WAVE = 77 -SPI_PERF_PS1_WAVE = 78 -SPI_PERF_PS2_WAVE = 79 -SPI_PERF_PS3_WAVE = 80 -SPI_PERF_PS0_OPT_WAVE = 81 -SPI_PERF_PS1_OPT_WAVE = 82 -SPI_PERF_PS2_OPT_WAVE = 83 -SPI_PERF_PS3_OPT_WAVE = 84 -SPI_PERF_PS0_PASS_BIN0 = 85 -SPI_PERF_PS1_PASS_BIN0 = 86 -SPI_PERF_PS2_PASS_BIN0 = 87 -SPI_PERF_PS3_PASS_BIN0 = 88 -SPI_PERF_PS0_PASS_BIN1 = 89 -SPI_PERF_PS1_PASS_BIN1 = 90 -SPI_PERF_PS2_PASS_BIN1 = 91 -SPI_PERF_PS3_PASS_BIN1 = 92 -SPI_PERF_PS0_FPOS_BIN2 = 93 -SPI_PERF_PS1_FPOS_BIN2 = 94 -SPI_PERF_PS2_FPOS_BIN2 = 95 -SPI_PERF_PS3_FPOS_BIN2 = 96 -SPI_PERF_PS0_PRIM_BIN0 = 97 -SPI_PERF_PS1_PRIM_BIN0 = 98 -SPI_PERF_PS2_PRIM_BIN0 = 99 -SPI_PERF_PS3_PRIM_BIN0 = 100 -SPI_PERF_PS0_PRIM_BIN1 = 101 -SPI_PERF_PS1_PRIM_BIN1 = 102 -SPI_PERF_PS2_PRIM_BIN1 = 103 -SPI_PERF_PS3_PRIM_BIN1 = 104 -SPI_PERF_PS0_CNF_BIN2 = 105 -SPI_PERF_PS1_CNF_BIN2 = 106 -SPI_PERF_PS2_CNF_BIN2 = 107 -SPI_PERF_PS3_CNF_BIN2 = 108 -SPI_PERF_PS0_CNF_BIN3 = 109 -SPI_PERF_PS1_CNF_BIN3 = 110 -SPI_PERF_PS2_CNF_BIN3 = 111 -SPI_PERF_PS3_CNF_BIN3 = 112 -SPI_PERF_PS0_CRAWLER_STALL = 113 -SPI_PERF_PS1_CRAWLER_STALL = 114 -SPI_PERF_PS2_CRAWLER_STALL = 115 -SPI_PERF_PS3_CRAWLER_STALL = 116 -SPI_PERF_PS0_LDS_RES_FULL = 117 -SPI_PERF_PS1_LDS_RES_FULL = 118 -SPI_PERF_PS2_LDS_RES_FULL = 119 -SPI_PERF_PS3_LDS_RES_FULL = 120 -SPI_PERF_PS_PERS_UPD_FULL0 = 121 -SPI_PERF_PS_PERS_UPD_FULL1 = 122 -SPI_PERF_PS0_POPS_WAVE_SENT = 123 -SPI_PERF_PS1_POPS_WAVE_SENT = 124 -SPI_PERF_PS2_POPS_WAVE_SENT = 125 -SPI_PERF_PS3_POPS_WAVE_SENT = 126 -SPI_PERF_PS0_POPS_WAVE_EXIT = 127 -SPI_PERF_PS1_POPS_WAVE_EXIT = 128 -SPI_PERF_PS2_POPS_WAVE_EXIT = 129 -SPI_PERF_PS3_POPS_WAVE_EXIT = 130 -SPI_PERF_LDS0_PC_VALID = 131 -SPI_PERF_LDS1_PC_VALID = 132 -SPI_PERF_RA_PIPE_REQ_BIN2 = 133 -SPI_PERF_RA_TASK_REQ_BIN3 = 134 -SPI_PERF_RA_WR_CTL_FULL = 135 -SPI_PERF_RA_REQ_NO_ALLOC = 136 -SPI_PERF_RA_REQ_NO_ALLOC_PS = 137 -SPI_PERF_RA_REQ_NO_ALLOC_VS = 138 -SPI_PERF_RA_REQ_NO_ALLOC_GS = 139 -SPI_PERF_RA_REQ_NO_ALLOC_HS = 140 -SPI_PERF_RA_REQ_NO_ALLOC_CSG = 141 -SPI_PERF_RA_REQ_NO_ALLOC_CSN = 142 -SPI_PERF_RA_RES_STALL_PS = 143 -SPI_PERF_RA_RES_STALL_VS = 144 -SPI_PERF_RA_RES_STALL_GS = 145 -SPI_PERF_RA_RES_STALL_HS = 146 -SPI_PERF_RA_RES_STALL_CSG = 147 -SPI_PERF_RA_RES_STALL_CSN = 148 -SPI_PERF_RA_TMP_STALL_PS = 149 -SPI_PERF_RA_TMP_STALL_VS = 150 -SPI_PERF_RA_TMP_STALL_GS = 151 -SPI_PERF_RA_TMP_STALL_HS = 152 -SPI_PERF_RA_TMP_STALL_CSG = 153 -SPI_PERF_RA_TMP_STALL_CSN = 154 -SPI_PERF_RA_WAVE_SIMD_FULL_PS = 155 -SPI_PERF_RA_WAVE_SIMD_FULL_VS = 156 -SPI_PERF_RA_WAVE_SIMD_FULL_GS = 157 -SPI_PERF_RA_WAVE_SIMD_FULL_HS = 158 -SPI_PERF_RA_WAVE_SIMD_FULL_CSG = 159 -SPI_PERF_RA_WAVE_SIMD_FULL_CSN = 160 -SPI_PERF_RA_VGPR_SIMD_FULL_PS = 161 -SPI_PERF_RA_VGPR_SIMD_FULL_VS = 162 -SPI_PERF_RA_VGPR_SIMD_FULL_GS = 163 -SPI_PERF_RA_VGPR_SIMD_FULL_HS = 164 -SPI_PERF_RA_VGPR_SIMD_FULL_CSG = 165 -SPI_PERF_RA_VGPR_SIMD_FULL_CSN = 166 -SPI_PERF_RA_SGPR_SIMD_FULL_PS = 167 -SPI_PERF_RA_SGPR_SIMD_FULL_VS = 168 -SPI_PERF_RA_SGPR_SIMD_FULL_GS = 169 -SPI_PERF_RA_SGPR_SIMD_FULL_HS = 170 -SPI_PERF_RA_SGPR_SIMD_FULL_CSG = 171 -SPI_PERF_RA_SGPR_SIMD_FULL_CSN = 172 -SPI_PERF_RA_LDS_CU_FULL_PS = 173 -SPI_PERF_RA_LDS_CU_FULL_LS = 174 -SPI_PERF_RA_LDS_CU_FULL_ES = 175 -SPI_PERF_RA_LDS_CU_FULL_CSG = 176 -SPI_PERF_RA_LDS_CU_FULL_CSN = 177 -SPI_PERF_RA_BAR_CU_FULL_HS = 178 -SPI_PERF_RA_BAR_CU_FULL_CSG = 179 -SPI_PERF_RA_BAR_CU_FULL_CSN = 180 -SPI_PERF_RA_BULKY_CU_FULL_CSG = 181 -SPI_PERF_RA_BULKY_CU_FULL_CSN = 182 -SPI_PERF_RA_TGLIM_CU_FULL_CSG = 183 -SPI_PERF_RA_TGLIM_CU_FULL_CSN = 184 -SPI_PERF_RA_WVLIM_STALL_PS = 185 -SPI_PERF_RA_WVLIM_STALL_VS = 186 -SPI_PERF_RA_WVLIM_STALL_GS = 187 -SPI_PERF_RA_WVLIM_STALL_HS = 188 -SPI_PERF_RA_WVLIM_STALL_CSG = 189 -SPI_PERF_RA_WVLIM_STALL_CSN = 190 -SPI_PERF_RA_VS_LOCK = 191 -SPI_PERF_RA_GS_LOCK = 192 -SPI_PERF_RA_HS_LOCK = 193 -SPI_PERF_RA_CSG_LOCK = 194 -SPI_PERF_RA_CSN_LOCK = 195 -SPI_PERF_RA_RSV_UPD = 196 -SPI_PERF_EXP_ARB_COL_CNT = 197 -SPI_PERF_EXP_ARB_PAR_CNT = 198 -SPI_PERF_EXP_ARB_POS_CNT = 199 -SPI_PERF_EXP_ARB_GDS_CNT = 200 -SPI_PERF_NUM_PS_COL_R0_EXPORTS = 201 -SPI_PERF_NUM_PS_COL_R1_EXPORTS = 202 -SPI_PERF_NUM_VS_POS_R0_EXPORTS = 203 -SPI_PERF_NUM_VS_POS_R1_EXPORTS = 204 -SPI_PERF_NUM_VS_PARAM_R0_EXPORTS = 205 -SPI_PERF_NUM_VS_PARAM_R1_EXPORTS = 206 -SPI_PERF_NUM_VS_GDS_R0_EXPORTS = 207 -SPI_PERF_NUM_VS_GDS_R1_EXPORTS = 208 -SPI_PERF_NUM_EXPGRANT_EXPORTS = 209 -SPI_PERF_CLKGATE_BUSY_STALL = 210 -SPI_PERF_CLKGATE_ACTIVE_STALL = 211 -SPI_PERF_CLKGATE_ALL_CLOCKS_ON = 212 -SPI_PERF_CLKGATE_CGTT_DYN_ON = 213 -SPI_PERF_CLKGATE_CGTT_REG_ON = 214 -SPI_PERF_PIX_ALLOC_PEND_CNT = 215 -SPI_PERF_PIX_ALLOC_SCB0_STALL = 216 -SPI_PERF_PIX_ALLOC_SCB1_STALL = 217 -SPI_PERF_PIX_ALLOC_SCB2_STALL = 218 -SPI_PERF_PIX_ALLOC_SCB3_STALL = 219 -SPI_PERF_PIX_ALLOC_DB0_STALL = 220 -SPI_PERF_PIX_ALLOC_DB1_STALL = 221 -SPI_PERF_PIX_ALLOC_DB2_STALL = 222 -SPI_PERF_PIX_ALLOC_DB3_STALL = 223 -SPI_PERF_PIX_ALLOC_DB4_STALL = 224 -SPI_PERF_PIX_ALLOC_DB5_STALL = 225 -SPI_PERF_PIX_ALLOC_DB6_STALL = 226 -SPI_PERF_PIX_ALLOC_DB7_STALL = 227 -SPI_PERF_PC_ALLOC_ACCUM = 228 -SPI_PERF_GS_NGG_SE_HAS_BATON = 229 -SPI_PERF_GS_NGG_SE_DOES_NOT_HAVE_BATON = 230 -SPI_PERF_GS_NGG_SE_FORWARDED_BATON = 231 -SPI_PERF_GS_NGG_SE_AT_SYNC_EVENT = 232 -SPI_PERF_GS_NGG_SE_SG_ALLOC_PC_SPACE_CNT = 233 -SPI_PERF_GS_NGG_SE_DEALLOC_PC_SPACE_CNT = 234 -SPI_PERF_GS_NGG_PC_FULL = 235 -SPI_PERF_GS_NGG_SE_SEND_GS_ALLOC = 236 -SPI_PERF_GS_NGG_GS_ALLOC_FIFO_EMPTY = 237 -SPI_PERF_GSC_VTX_BUSY = 238 -SPI_PERF_GSC_VTX_INPUT_STARVED = 239 -SPI_PERF_GSC_VTX_VSR_STALL = 240 -SPI_PERF_GSC_VTX_VSR_FULL = 241 -SPI_PERF_GSC_VTX_CAC_BUSY = 242 -SPI_PERF_ESC_VTX_BUSY = 243 -SPI_PERF_ESC_VTX_INPUT_STARVED = 244 -SPI_PERF_ESC_VTX_VSR_STALL = 245 -SPI_PERF_ESC_VTX_VSR_FULL = 246 -SPI_PERF_ESC_VTX_CAC_BUSY = 247 -SPI_PERF_SWC_PS_WR = 248 -SPI_PERF_SWC_VS_WR = 249 -SPI_PERF_SWC_GS_WR = 250 -SPI_PERF_SWC_HS_WR = 251 -SPI_PERF_SWC_CSG_WR = 252 -SPI_PERF_SWC_CSC_WR = 253 -SPI_PERF_VWC_PS_WR = 254 -SPI_PERF_VWC_VS_WR = 255 -SPI_PERF_VWC_GS_WR = 256 -SPI_PERF_VWC_HS_WR = 257 -SPI_PERF_VWC_CSG_WR = 258 -SPI_PERF_VWC_CSC_WR = 259 -SPI_PERF_ES_WINDOW_VALID = 260 -SPI_PERF_ES_BUSY = 261 -SPI_PERF_ES_CRAWLER_STALL = 262 -SPI_PERF_ES_FIRST_WAVE = 263 -SPI_PERF_ES_LAST_WAVE = 264 -SPI_PERF_ES_LSHS_DEALLOC = 265 -SPI_PERF_ES_EVENT_WAVE = 266 -SPI_PERF_ES_WAVE = 267 -SPI_PERF_ES_PERS_UPD_FULL0 = 268 -SPI_PERF_ES_PERS_UPD_FULL1 = 269 -SPI_PERF_ES_FIRST_SUBGRP = 270 -SPI_PERF_ES_LAST_SUBGRP = 271 -SPI_PERF_LS_WINDOW_VALID = 272 -SPI_PERF_LS_BUSY = 273 -SPI_PERF_LS_CRAWLER_STALL = 274 -SPI_PERF_LS_FIRST_WAVE = 275 -SPI_PERF_LS_LAST_WAVE = 276 -SPI_PERF_LS_OFFCHIP_LDS_STALL = 277 -SPI_PERF_LS_EVENT_WAVE = 278 -SPI_PERF_LS_WAVE = 279 -SPI_PERF_LS_PERS_UPD_FULL0 = 280 -SPI_PERF_LS_PERS_UPD_FULL1 = 281 -SPI_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_SHADER_FORMAT' -SPI_SHADER_FORMAT__enumvalues = { - 0: 'SPI_SHADER_NONE', - 1: 'SPI_SHADER_1COMP', - 2: 'SPI_SHADER_2COMP', - 3: 'SPI_SHADER_4COMPRESS', - 4: 'SPI_SHADER_4COMP', -} -SPI_SHADER_NONE = 0 -SPI_SHADER_1COMP = 1 -SPI_SHADER_2COMP = 2 -SPI_SHADER_4COMPRESS = 3 -SPI_SHADER_4COMP = 4 -SPI_SHADER_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_SHADER_EX_FORMAT' -SPI_SHADER_EX_FORMAT__enumvalues = { - 0: 'SPI_SHADER_ZERO', - 1: 'SPI_SHADER_32_R', - 2: 'SPI_SHADER_32_GR', - 3: 'SPI_SHADER_32_AR', - 4: 'SPI_SHADER_FP16_ABGR', - 5: 'SPI_SHADER_UNORM16_ABGR', - 6: 'SPI_SHADER_SNORM16_ABGR', - 7: 'SPI_SHADER_UINT16_ABGR', - 8: 'SPI_SHADER_SINT16_ABGR', - 9: 'SPI_SHADER_32_ABGR', -} -SPI_SHADER_ZERO = 0 -SPI_SHADER_32_R = 1 -SPI_SHADER_32_GR = 2 -SPI_SHADER_32_AR = 3 -SPI_SHADER_FP16_ABGR = 4 -SPI_SHADER_UNORM16_ABGR = 5 -SPI_SHADER_SNORM16_ABGR = 6 -SPI_SHADER_UINT16_ABGR = 7 -SPI_SHADER_SINT16_ABGR = 8 -SPI_SHADER_32_ABGR = 9 -SPI_SHADER_EX_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'CLKGATE_SM_MODE' -CLKGATE_SM_MODE__enumvalues = { - 0: 'ON_SEQ', - 1: 'OFF_SEQ', - 2: 'PROG_SEQ', - 3: 'READ_SEQ', - 4: 'SM_MODE_RESERVED', -} -ON_SEQ = 0 -OFF_SEQ = 1 -PROG_SEQ = 2 -READ_SEQ = 3 -SM_MODE_RESERVED = 4 -CLKGATE_SM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CLKGATE_BASE_MODE' -CLKGATE_BASE_MODE__enumvalues = { - 0: 'MULT_8', - 1: 'MULT_16', -} -MULT_8 = 0 -MULT_16 = 1 -CLKGATE_BASE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_LB_WAVES_SELECT' -SPI_LB_WAVES_SELECT__enumvalues = { - 0: 'HS_GS', - 1: 'VS_PS', - 2: 'CS_NA', - 3: 'SPI_LB_WAVES_RSVD', -} -HS_GS = 0 -VS_PS = 1 -CS_NA = 2 -SPI_LB_WAVES_RSVD = 3 -SPI_LB_WAVES_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_CLAMP' -SQ_TEX_CLAMP__enumvalues = { - 0: 'SQ_TEX_WRAP', - 1: 'SQ_TEX_MIRROR', - 2: 'SQ_TEX_CLAMP_LAST_TEXEL', - 3: 'SQ_TEX_MIRROR_ONCE_LAST_TEXEL', - 4: 'SQ_TEX_CLAMP_HALF_BORDER', - 5: 'SQ_TEX_MIRROR_ONCE_HALF_BORDER', - 6: 'SQ_TEX_CLAMP_BORDER', - 7: 'SQ_TEX_MIRROR_ONCE_BORDER', -} -SQ_TEX_WRAP = 0 -SQ_TEX_MIRROR = 1 -SQ_TEX_CLAMP_LAST_TEXEL = 2 -SQ_TEX_MIRROR_ONCE_LAST_TEXEL = 3 -SQ_TEX_CLAMP_HALF_BORDER = 4 -SQ_TEX_MIRROR_ONCE_HALF_BORDER = 5 -SQ_TEX_CLAMP_BORDER = 6 -SQ_TEX_MIRROR_ONCE_BORDER = 7 -SQ_TEX_CLAMP = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_XY_FILTER' -SQ_TEX_XY_FILTER__enumvalues = { - 0: 'SQ_TEX_XY_FILTER_POINT', - 1: 'SQ_TEX_XY_FILTER_BILINEAR', - 2: 'SQ_TEX_XY_FILTER_ANISO_POINT', - 3: 'SQ_TEX_XY_FILTER_ANISO_BILINEAR', -} -SQ_TEX_XY_FILTER_POINT = 0 -SQ_TEX_XY_FILTER_BILINEAR = 1 -SQ_TEX_XY_FILTER_ANISO_POINT = 2 -SQ_TEX_XY_FILTER_ANISO_BILINEAR = 3 -SQ_TEX_XY_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_Z_FILTER' -SQ_TEX_Z_FILTER__enumvalues = { - 0: 'SQ_TEX_Z_FILTER_NONE', - 1: 'SQ_TEX_Z_FILTER_POINT', - 2: 'SQ_TEX_Z_FILTER_LINEAR', -} -SQ_TEX_Z_FILTER_NONE = 0 -SQ_TEX_Z_FILTER_POINT = 1 -SQ_TEX_Z_FILTER_LINEAR = 2 -SQ_TEX_Z_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_MIP_FILTER' -SQ_TEX_MIP_FILTER__enumvalues = { - 0: 'SQ_TEX_MIP_FILTER_NONE', - 1: 'SQ_TEX_MIP_FILTER_POINT', - 2: 'SQ_TEX_MIP_FILTER_LINEAR', - 3: 'SQ_TEX_MIP_FILTER_POINT_ANISO_ADJ', -} -SQ_TEX_MIP_FILTER_NONE = 0 -SQ_TEX_MIP_FILTER_POINT = 1 -SQ_TEX_MIP_FILTER_LINEAR = 2 -SQ_TEX_MIP_FILTER_POINT_ANISO_ADJ = 3 -SQ_TEX_MIP_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_ANISO_RATIO' -SQ_TEX_ANISO_RATIO__enumvalues = { - 0: 'SQ_TEX_ANISO_RATIO_1', - 1: 'SQ_TEX_ANISO_RATIO_2', - 2: 'SQ_TEX_ANISO_RATIO_4', - 3: 'SQ_TEX_ANISO_RATIO_8', - 4: 'SQ_TEX_ANISO_RATIO_16', -} -SQ_TEX_ANISO_RATIO_1 = 0 -SQ_TEX_ANISO_RATIO_2 = 1 -SQ_TEX_ANISO_RATIO_4 = 2 -SQ_TEX_ANISO_RATIO_8 = 3 -SQ_TEX_ANISO_RATIO_16 = 4 -SQ_TEX_ANISO_RATIO = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_DEPTH_COMPARE' -SQ_TEX_DEPTH_COMPARE__enumvalues = { - 0: 'SQ_TEX_DEPTH_COMPARE_NEVER', - 1: 'SQ_TEX_DEPTH_COMPARE_LESS', - 2: 'SQ_TEX_DEPTH_COMPARE_EQUAL', - 3: 'SQ_TEX_DEPTH_COMPARE_LESSEQUAL', - 4: 'SQ_TEX_DEPTH_COMPARE_GREATER', - 5: 'SQ_TEX_DEPTH_COMPARE_NOTEQUAL', - 6: 'SQ_TEX_DEPTH_COMPARE_GREATEREQUAL', - 7: 'SQ_TEX_DEPTH_COMPARE_ALWAYS', -} -SQ_TEX_DEPTH_COMPARE_NEVER = 0 -SQ_TEX_DEPTH_COMPARE_LESS = 1 -SQ_TEX_DEPTH_COMPARE_EQUAL = 2 -SQ_TEX_DEPTH_COMPARE_LESSEQUAL = 3 -SQ_TEX_DEPTH_COMPARE_GREATER = 4 -SQ_TEX_DEPTH_COMPARE_NOTEQUAL = 5 -SQ_TEX_DEPTH_COMPARE_GREATEREQUAL = 6 -SQ_TEX_DEPTH_COMPARE_ALWAYS = 7 -SQ_TEX_DEPTH_COMPARE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_BORDER_COLOR' -SQ_TEX_BORDER_COLOR__enumvalues = { - 0: 'SQ_TEX_BORDER_COLOR_TRANS_BLACK', - 1: 'SQ_TEX_BORDER_COLOR_OPAQUE_BLACK', - 2: 'SQ_TEX_BORDER_COLOR_OPAQUE_WHITE', - 3: 'SQ_TEX_BORDER_COLOR_REGISTER', -} -SQ_TEX_BORDER_COLOR_TRANS_BLACK = 0 -SQ_TEX_BORDER_COLOR_OPAQUE_BLACK = 1 -SQ_TEX_BORDER_COLOR_OPAQUE_WHITE = 2 -SQ_TEX_BORDER_COLOR_REGISTER = 3 -SQ_TEX_BORDER_COLOR = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_RSRC_BUF_TYPE' -SQ_RSRC_BUF_TYPE__enumvalues = { - 0: 'SQ_RSRC_BUF', - 1: 'SQ_RSRC_BUF_RSVD_1', - 2: 'SQ_RSRC_BUF_RSVD_2', - 3: 'SQ_RSRC_BUF_RSVD_3', -} -SQ_RSRC_BUF = 0 -SQ_RSRC_BUF_RSVD_1 = 1 -SQ_RSRC_BUF_RSVD_2 = 2 -SQ_RSRC_BUF_RSVD_3 = 3 -SQ_RSRC_BUF_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_RSRC_IMG_TYPE' -SQ_RSRC_IMG_TYPE__enumvalues = { - 0: 'SQ_RSRC_IMG_RSVD_0', - 1: 'SQ_RSRC_IMG_RSVD_1', - 2: 'SQ_RSRC_IMG_RSVD_2', - 3: 'SQ_RSRC_IMG_RSVD_3', - 4: 'SQ_RSRC_IMG_RSVD_4', - 5: 'SQ_RSRC_IMG_RSVD_5', - 6: 'SQ_RSRC_IMG_RSVD_6', - 7: 'SQ_RSRC_IMG_RSVD_7', - 8: 'SQ_RSRC_IMG_1D', - 9: 'SQ_RSRC_IMG_2D', - 10: 'SQ_RSRC_IMG_3D', - 11: 'SQ_RSRC_IMG_CUBE', - 12: 'SQ_RSRC_IMG_1D_ARRAY', - 13: 'SQ_RSRC_IMG_2D_ARRAY', - 14: 'SQ_RSRC_IMG_2D_MSAA', - 15: 'SQ_RSRC_IMG_2D_MSAA_ARRAY', -} -SQ_RSRC_IMG_RSVD_0 = 0 -SQ_RSRC_IMG_RSVD_1 = 1 -SQ_RSRC_IMG_RSVD_2 = 2 -SQ_RSRC_IMG_RSVD_3 = 3 -SQ_RSRC_IMG_RSVD_4 = 4 -SQ_RSRC_IMG_RSVD_5 = 5 -SQ_RSRC_IMG_RSVD_6 = 6 -SQ_RSRC_IMG_RSVD_7 = 7 -SQ_RSRC_IMG_1D = 8 -SQ_RSRC_IMG_2D = 9 -SQ_RSRC_IMG_3D = 10 -SQ_RSRC_IMG_CUBE = 11 -SQ_RSRC_IMG_1D_ARRAY = 12 -SQ_RSRC_IMG_2D_ARRAY = 13 -SQ_RSRC_IMG_2D_MSAA = 14 -SQ_RSRC_IMG_2D_MSAA_ARRAY = 15 -SQ_RSRC_IMG_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_RSRC_FLAT_TYPE' -SQ_RSRC_FLAT_TYPE__enumvalues = { - 0: 'SQ_RSRC_FLAT_RSVD_0', - 1: 'SQ_RSRC_FLAT', - 2: 'SQ_RSRC_FLAT_RSVD_2', - 3: 'SQ_RSRC_FLAT_RSVD_3', -} -SQ_RSRC_FLAT_RSVD_0 = 0 -SQ_RSRC_FLAT = 1 -SQ_RSRC_FLAT_RSVD_2 = 2 -SQ_RSRC_FLAT_RSVD_3 = 3 -SQ_RSRC_FLAT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IMG_FILTER_TYPE' -SQ_IMG_FILTER_TYPE__enumvalues = { - 0: 'SQ_IMG_FILTER_MODE_BLEND', - 1: 'SQ_IMG_FILTER_MODE_MIN', - 2: 'SQ_IMG_FILTER_MODE_MAX', -} -SQ_IMG_FILTER_MODE_BLEND = 0 -SQ_IMG_FILTER_MODE_MIN = 1 -SQ_IMG_FILTER_MODE_MAX = 2 -SQ_IMG_FILTER_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_SEL_XYZW01' -SQ_SEL_XYZW01__enumvalues = { - 0: 'SQ_SEL_0', - 1: 'SQ_SEL_1', - 2: 'SQ_SEL_N_BC_1', - 3: 'SQ_SEL_RESERVED_1', - 4: 'SQ_SEL_X', - 5: 'SQ_SEL_Y', - 6: 'SQ_SEL_Z', - 7: 'SQ_SEL_W', -} -SQ_SEL_0 = 0 -SQ_SEL_1 = 1 -SQ_SEL_N_BC_1 = 2 -SQ_SEL_RESERVED_1 = 3 -SQ_SEL_X = 4 -SQ_SEL_Y = 5 -SQ_SEL_Z = 6 -SQ_SEL_W = 7 -SQ_SEL_XYZW01 = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_OOB_SELECT' -SQ_OOB_SELECT__enumvalues = { - 0: 'SQ_OOB_INDEX_AND_OFFSET', - 1: 'SQ_OOB_INDEX_ONLY', - 2: 'SQ_OOB_NUM_RECORDS_0', - 3: 'SQ_OOB_COMPLETE', -} -SQ_OOB_INDEX_AND_OFFSET = 0 -SQ_OOB_INDEX_ONLY = 1 -SQ_OOB_NUM_RECORDS_0 = 2 -SQ_OOB_COMPLETE = 3 -SQ_OOB_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WAVE_TYPE' -SQ_WAVE_TYPE__enumvalues = { - 0: 'SQ_WAVE_TYPE_PS', - 1: 'SQ_WAVE_TYPE_VS', - 2: 'SQ_WAVE_TYPE_GS', - 3: 'SQ_WAVE_TYPE_ES', - 4: 'SQ_WAVE_TYPE_HS', - 5: 'SQ_WAVE_TYPE_LS', - 6: 'SQ_WAVE_TYPE_CS', - 7: 'SQ_WAVE_TYPE_PS1', - 8: 'SQ_WAVE_TYPE_PS2', - 9: 'SQ_WAVE_TYPE_PS3', -} -SQ_WAVE_TYPE_PS = 0 -SQ_WAVE_TYPE_VS = 1 -SQ_WAVE_TYPE_GS = 2 -SQ_WAVE_TYPE_ES = 3 -SQ_WAVE_TYPE_HS = 4 -SQ_WAVE_TYPE_LS = 5 -SQ_WAVE_TYPE_CS = 6 -SQ_WAVE_TYPE_PS1 = 7 -SQ_WAVE_TYPE_PS2 = 8 -SQ_WAVE_TYPE_PS3 = 9 -SQ_WAVE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_PERF_SEL' -SQ_PERF_SEL__enumvalues = { - 0: 'SQ_PERF_SEL_NONE', - 1: 'SQ_PERF_SEL_ACCUM_PREV', - 2: 'SQ_PERF_SEL_CYCLES', - 3: 'SQ_PERF_SEL_BUSY_CYCLES', - 4: 'SQ_PERF_SEL_WAVES', - 5: 'SQ_PERF_SEL_WAVES_32', - 6: 'SQ_PERF_SEL_WAVES_64', - 7: 'SQ_PERF_SEL_LEVEL_WAVES', - 8: 'SQ_PERF_SEL_ITEMS', - 9: 'SQ_PERF_SEL_WAVE32_ITEMS', - 10: 'SQ_PERF_SEL_WAVE64_ITEMS', - 11: 'SQ_PERF_SEL_QUADS', - 12: 'SQ_PERF_SEL_EVENTS', - 13: 'SQ_PERF_SEL_WAVES_EQ_64', - 14: 'SQ_PERF_SEL_WAVES_LT_64', - 15: 'SQ_PERF_SEL_WAVES_LT_48', - 16: 'SQ_PERF_SEL_WAVES_LT_32', - 17: 'SQ_PERF_SEL_WAVES_LT_16', - 18: 'SQ_PERF_SEL_WAVES_RESTORED', - 19: 'SQ_PERF_SEL_WAVES_SAVED', - 20: 'SQ_PERF_SEL_MSG', - 21: 'SQ_PERF_SEL_MSG_GSCNT', - 22: 'SQ_PERF_SEL_MSG_INTERRUPT', - 23: 'SQ_PERF_SEL_Reserved_1', - 24: 'SQ_PERF_SEL_Reserved_2', - 25: 'SQ_PERF_SEL_Reserved_3', - 26: 'SQ_PERF_SEL_WAVE_CYCLES', - 27: 'SQ_PERF_SEL_WAVE_READY', - 28: 'SQ_PERF_SEL_WAIT_INST_ANY', - 29: 'SQ_PERF_SEL_WAIT_INST_VALU', - 30: 'SQ_PERF_SEL_WAIT_INST_SCA', - 31: 'SQ_PERF_SEL_WAIT_INST_LDS', - 32: 'SQ_PERF_SEL_WAIT_INST_TEX', - 33: 'SQ_PERF_SEL_WAIT_INST_FLAT', - 34: 'SQ_PERF_SEL_WAIT_INST_VMEM', - 35: 'SQ_PERF_SEL_WAIT_INST_EXP_GDS', - 36: 'SQ_PERF_SEL_WAIT_INST_BR_MSG', - 37: 'SQ_PERF_SEL_WAIT_ANY', - 38: 'SQ_PERF_SEL_WAIT_CNT_ANY', - 39: 'SQ_PERF_SEL_WAIT_CNT_VMVS', - 40: 'SQ_PERF_SEL_WAIT_CNT_LGKM', - 41: 'SQ_PERF_SEL_WAIT_CNT_EXP', - 42: 'SQ_PERF_SEL_WAIT_TTRACE', - 43: 'SQ_PERF_SEL_WAIT_IFETCH', - 44: 'SQ_PERF_SEL_WAIT_BARRIER', - 45: 'SQ_PERF_SEL_WAIT_EXP_ALLOC', - 46: 'SQ_PERF_SEL_WAIT_SLEEP', - 47: 'SQ_PERF_SEL_WAIT_SLEEP_XNACK', - 48: 'SQ_PERF_SEL_WAIT_OTHER', - 49: 'SQ_PERF_SEL_INSTS_ALL', - 50: 'SQ_PERF_SEL_INSTS_BRANCH', - 51: 'SQ_PERF_SEL_INSTS_CBRANCH_NOT_TAKEN', - 52: 'SQ_PERF_SEL_INSTS_CBRANCH_TAKEN', - 53: 'SQ_PERF_SEL_INSTS_CBRANCH_TAKEN_HIT_IS', - 54: 'SQ_PERF_SEL_INSTS_EXP_GDS', - 55: 'SQ_PERF_SEL_INSTS_GDS', - 56: 'SQ_PERF_SEL_INSTS_EXP', - 57: 'SQ_PERF_SEL_INSTS_FLAT', - 58: 'SQ_PERF_SEL_Reserved_4', - 59: 'SQ_PERF_SEL_INSTS_LDS', - 60: 'SQ_PERF_SEL_INSTS_SALU', - 61: 'SQ_PERF_SEL_INSTS_SMEM', - 62: 'SQ_PERF_SEL_INSTS_SMEM_NORM', - 63: 'SQ_PERF_SEL_INSTS_SENDMSG', - 64: 'SQ_PERF_SEL_INSTS_VALU', - 65: 'SQ_PERF_SEL_Reserved_17', - 66: 'SQ_PERF_SEL_INSTS_VALU_TRANS32', - 67: 'SQ_PERF_SEL_INSTS_VALU_NO_COEXEC', - 68: 'SQ_PERF_SEL_INSTS_TEX', - 69: 'SQ_PERF_SEL_INSTS_TEX_LOAD', - 70: 'SQ_PERF_SEL_INSTS_TEX_STORE', - 71: 'SQ_PERF_SEL_INSTS_WAVE32', - 72: 'SQ_PERF_SEL_INSTS_WAVE32_FLAT', - 73: 'SQ_PERF_SEL_Reserved_5', - 74: 'SQ_PERF_SEL_INSTS_WAVE32_LDS', - 75: 'SQ_PERF_SEL_INSTS_WAVE32_VALU', - 76: 'SQ_PERF_SEL_Reserved_16', - 77: 'SQ_PERF_SEL_INSTS_WAVE32_VALU_TRANS32', - 78: 'SQ_PERF_SEL_INSTS_WAVE32_VALU_NO_COEXEC', - 79: 'SQ_PERF_SEL_INSTS_WAVE32_TEX', - 80: 'SQ_PERF_SEL_INSTS_WAVE32_TEX_LOAD', - 81: 'SQ_PERF_SEL_INSTS_WAVE32_TEX_STORE', - 82: 'SQ_PERF_SEL_ITEM_CYCLES_VALU', - 83: 'SQ_PERF_SEL_VALU_READWRITELANE_CYCLES', - 84: 'SQ_PERF_SEL_WAVE32_INSTS', - 85: 'SQ_PERF_SEL_WAVE64_INSTS', - 86: 'SQ_PERF_SEL_Reserved_18', - 87: 'SQ_PERF_SEL_INSTS_VALU_EXEC_SKIPPED', - 88: 'SQ_PERF_SEL_WAVE64_HALF_SKIP', - 89: 'SQ_PERF_SEL_INSTS_TEX_REPLAY', - 90: 'SQ_PERF_SEL_INSTS_SMEM_REPLAY', - 91: 'SQ_PERF_SEL_INSTS_SMEM_NORM_REPLAY', - 92: 'SQ_PERF_SEL_INSTS_FLAT_REPLAY', - 93: 'SQ_PERF_SEL_XNACK_ALL', - 94: 'SQ_PERF_SEL_XNACK_FIRST', - 95: 'SQ_PERF_SEL_INSTS_VALU_LDS_DIRECT_RD', - 96: 'SQ_PERF_SEL_INSTS_VALU_VINTRP_OP', - 97: 'SQ_PERF_SEL_INST_LEVEL_EXP', - 98: 'SQ_PERF_SEL_INST_LEVEL_GDS', - 99: 'SQ_PERF_SEL_INST_LEVEL_LDS', - 100: 'SQ_PERF_SEL_INST_LEVEL_SMEM', - 101: 'SQ_PERF_SEL_INST_LEVEL_TEX_LOAD', - 102: 'SQ_PERF_SEL_INST_LEVEL_TEX_STORE', - 103: 'SQ_PERF_SEL_IFETCH_REQS', - 104: 'SQ_PERF_SEL_IFETCH_LEVEL', - 105: 'SQ_PERF_SEL_IFETCH_XNACK', - 106: 'SQ_PERF_SEL_Reserved_6', - 107: 'SQ_PERF_SEL_Reserved_7', - 108: 'SQ_PERF_SEL_LDS_DIRECT_CMD_FIFO_FULL_STALL', - 109: 'SQ_PERF_SEL_VALU_SGATHER_STALL', - 110: 'SQ_PERF_SEL_VALU_FWD_BUFFER_FULL_STALL', - 111: 'SQ_PERF_SEL_VALU_SGPR_RD_FIFO_FULL_STALL', - 112: 'SQ_PERF_SEL_VALU_SGATHER_FULL_STALL', - 113: 'SQ_PERF_SEL_SALU_SGATHER_STALL', - 114: 'SQ_PERF_SEL_SALU_SGPR_RD_FIFO_FULL_STALL', - 115: 'SQ_PERF_SEL_SALU_GATHER_FULL_STALL', - 116: 'SQ_PERF_SEL_SMEM_DCACHE_FIFO_FULL_STALL', - 117: 'SQ_PERF_SEL_INST_CYCLES_VALU', - 118: 'SQ_PERF_SEL_INST_CYCLES_VALU_TRANS32', - 119: 'SQ_PERF_SEL_INST_CYCLES_VALU_NO_COEXEC', - 120: 'SQ_PERF_SEL_INST_CYCLES_VMEM', - 121: 'SQ_PERF_SEL_INST_CYCLES_VMEM_LOAD', - 122: 'SQ_PERF_SEL_INST_CYCLES_VMEM_STORE', - 123: 'SQ_PERF_SEL_INST_CYCLES_LDS', - 124: 'SQ_PERF_SEL_INST_CYCLES_TEX', - 125: 'SQ_PERF_SEL_INST_CYCLES_FLAT', - 126: 'SQ_PERF_SEL_INST_CYCLES_EXP_GDS', - 127: 'SQ_PERF_SEL_VMEM_ARB_FIFO_FULL', - 128: 'SQ_PERF_SEL_MSG_FIFO_FULL_STALL', - 129: 'SQ_PERF_SEL_EXP_REQ_FIFO_FULL', - 130: 'SQ_PERF_SEL_Reserved_8', - 131: 'SQ_PERF_SEL_Reserved_9', - 132: 'SQ_PERF_SEL_Reserved_10', - 133: 'SQ_PERF_SEL_Reserved_11', - 134: 'SQ_PERF_SEL_Reserved_12', - 135: 'SQ_PERF_SEL_Reserved_13', - 136: 'SQ_PERF_SEL_Reserved_14', - 137: 'SQ_PERF_SEL_VMEM_BUS_ACTIVE', - 138: 'SQ_PERF_SEL_VMEM_BUS_STALL', - 139: 'SQ_PERF_SEL_VMEM_BUS_STALL_TA_ADDR_FIFO_FULL', - 140: 'SQ_PERF_SEL_VMEM_BUS_STALL_TA_CMD_FIFO_FULL', - 141: 'SQ_PERF_SEL_VMEM_BUS_STALL_LDS_ADDR_FIFO_FULL', - 142: 'SQ_PERF_SEL_VMEM_BUS_STALL_LDS_CMD_FIFO_FULL', - 143: 'SQ_PERF_SEL_VMEM_STARVE_TA_ADDR_EMPTY', - 144: 'SQ_PERF_SEL_VMEM_STARVE_LDS_ADDR_EMPTY', - 145: 'SQ_PERF_SEL_Reserved_15', - 146: 'SQ_PERF_SEL_SALU_PIPE_STALL', - 147: 'SQ_PERF_SEL_SMEM_DCACHE_RETURN_CYCLES', - 148: 'SQ_PERF_SEL_SMEM_DCACHE_RETURN_STALL', - 149: 'SQ_PERF_SEL_MSG_BUS_BUSY', - 150: 'SQ_PERF_SEL_EXP_REQ_BUS_STALL', - 151: 'SQ_PERF_SEL_EXP_REQ0_BUS_BUSY', - 152: 'SQ_PERF_SEL_EXP_REQ1_BUS_BUSY', - 153: 'SQ_PERF_SEL_EXP_BUS0_BUSY', - 154: 'SQ_PERF_SEL_EXP_BUS1_BUSY', - 155: 'SQ_PERF_SEL_INST_CACHE_REQS', - 156: 'SQ_PERF_SEL_INST_CACHE_REQ_STALL', - 157: 'SQ_PERF_SEL_MIXED_SUBSEQUENT_ISSUES_VALU', - 158: 'SQ_PERF_SEL_MIXED_SUBSEQUENT_ISSUES_SALU', - 159: 'SQ_PERF_SEL_MIXED_SUBSEQUENT_ISSUES_VMEM', - 160: 'SQ_PERF_SEL_USER0', - 161: 'SQ_PERF_SEL_USER1', - 162: 'SQ_PERF_SEL_USER2', - 163: 'SQ_PERF_SEL_USER3', - 164: 'SQ_PERF_SEL_USER4', - 165: 'SQ_PERF_SEL_USER5', - 166: 'SQ_PERF_SEL_USER6', - 167: 'SQ_PERF_SEL_USER7', - 168: 'SQ_PERF_SEL_USER8', - 169: 'SQ_PERF_SEL_USER9', - 170: 'SQ_PERF_SEL_USER10', - 171: 'SQ_PERF_SEL_USER11', - 172: 'SQ_PERF_SEL_USER12', - 173: 'SQ_PERF_SEL_USER13', - 174: 'SQ_PERF_SEL_USER14', - 175: 'SQ_PERF_SEL_USER15', - 176: 'SQ_PERF_SEL_USER_LEVEL0', - 177: 'SQ_PERF_SEL_USER_LEVEL1', - 178: 'SQ_PERF_SEL_USER_LEVEL2', - 179: 'SQ_PERF_SEL_USER_LEVEL3', - 180: 'SQ_PERF_SEL_USER_LEVEL4', - 181: 'SQ_PERF_SEL_USER_LEVEL5', - 182: 'SQ_PERF_SEL_USER_LEVEL6', - 183: 'SQ_PERF_SEL_USER_LEVEL7', - 184: 'SQ_PERF_SEL_USER_LEVEL8', - 185: 'SQ_PERF_SEL_USER_LEVEL9', - 186: 'SQ_PERF_SEL_USER_LEVEL10', - 187: 'SQ_PERF_SEL_USER_LEVEL11', - 188: 'SQ_PERF_SEL_USER_LEVEL12', - 189: 'SQ_PERF_SEL_USER_LEVEL13', - 190: 'SQ_PERF_SEL_USER_LEVEL14', - 191: 'SQ_PERF_SEL_USER_LEVEL15', - 192: 'SQ_PERF_SEL_VALU_RETURN_SDST', - 193: 'SQ_PERF_SEL_VMEM_SECOND_TRY_USED', - 194: 'SQ_PERF_SEL_VMEM_SECOND_TRY_STALL', - 195: 'SQ_PERF_SEL_DUMMY_END', - 255: 'SQ_PERF_SEL_DUMMY_LAST', - 256: 'SQG_PERF_SEL_UTCL0_TRANSLATION_MISS', - 257: 'SQG_PERF_SEL_UTCL0_PERMISSION_MISS', - 258: 'SQG_PERF_SEL_UTCL0_TRANSLATION_HIT', - 259: 'SQG_PERF_SEL_UTCL0_REQUEST', - 260: 'SQG_PERF_SEL_UTCL0_STALL_MISSFIFO_FULL', - 261: 'SQG_PERF_SEL_UTCL0_STALL_INFLIGHT_MAX', - 262: 'SQG_PERF_SEL_UTCL0_STALL_LRU_INFLIGHT', - 263: 'SQG_PERF_SEL_UTCL0_LFIFO_FULL', - 264: 'SQG_PERF_SEL_UTCL0_STALL_LFIFO_NOT_RES', - 265: 'SQG_PERF_SEL_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS', - 266: 'SQG_PERF_SEL_UTCL0_HIT_FIFO_FULL', - 267: 'SQG_PERF_SEL_UTCL0_UTCL1_REQ', - 268: 'SQG_PERF_SEL_TLB_SHOOTDOWN', - 269: 'SQG_PERF_SEL_TLB_SHOOTDOWN_CYCLES', - 270: 'SQG_PERF_SEL_TTRACE_REQS', - 271: 'SQG_PERF_SEL_TTRACE_INFLIGHT_REQS', - 272: 'SQG_PERF_SEL_TTRACE_STALL', - 273: 'SQG_PERF_SEL_TTRACE_LOST_PACKETS', - 274: 'SQG_PERF_SEL_DUMMY_LAST', - 275: 'SQC_PERF_SEL_POWER_VALU', - 276: 'SQC_PERF_SEL_POWER_VALU0', - 277: 'SQC_PERF_SEL_POWER_VALU1', - 278: 'SQC_PERF_SEL_POWER_VALU2', - 279: 'SQC_PERF_SEL_POWER_GPR_RD', - 280: 'SQC_PERF_SEL_POWER_GPR_WR', - 281: 'SQC_PERF_SEL_POWER_LDS_BUSY', - 282: 'SQC_PERF_SEL_POWER_ALU_BUSY', - 283: 'SQC_PERF_SEL_POWER_TEX_BUSY', - 284: 'SQC_PERF_SEL_PT_POWER_STALL', - 285: 'SQC_PERF_SEL_LDS_BANK_CONFLICT', - 286: 'SQC_PERF_SEL_LDS_ADDR_CONFLICT', - 287: 'SQC_PERF_SEL_LDS_UNALIGNED_STALL', - 288: 'SQC_PERF_SEL_LDS_MEM_VIOLATIONS', - 289: 'SQC_PERF_SEL_LDS_ATOMIC_RETURN', - 290: 'SQC_PERF_SEL_LDS_IDX_ACTIVE', - 291: 'SQC_PERF_SEL_LDS_DATA_FIFO_FULL', - 292: 'SQC_PERF_SEL_LDS_CMD_FIFO_FULL', - 293: 'SQC_PERF_SEL_LDS_ADDR_STALL', - 294: 'SQC_PERF_SEL_LDS_ADDR_ACTIVE', - 295: 'SQC_PERF_SEL_LDS_DIRECT_FIFO_FULL_STALL', - 296: 'SQC_PERF_SEL_LDS_PC_LDS_WRITE_STALL_TD', - 297: 'SQC_PERF_SEL_LDS_SPI_VGPR_WRITE_STALL_TD', - 298: 'SQC_PERF_SEL_LDS_LDS_VGPR_WRITE_STALL', - 299: 'SQC_PERF_SEL_LDS_FP_ADD_CYCLES', - 300: 'SQC_PERF_SEL_ICACHE_BUSY_CYCLES', - 301: 'SQC_PERF_SEL_ICACHE_REQ', - 302: 'SQC_PERF_SEL_ICACHE_HITS', - 303: 'SQC_PERF_SEL_ICACHE_MISSES', - 304: 'SQC_PERF_SEL_ICACHE_MISSES_DUPLICATE', - 305: 'SQC_PERF_SEL_ICACHE_INVAL_INST', - 306: 'SQC_PERF_SEL_ICACHE_INVAL_ASYNC', - 307: 'SQC_PERF_SEL_ICACHE_INFLIGHT_LEVEL', - 308: 'SQC_PERF_SEL_DCACHE_INFLIGHT_LEVEL', - 309: 'SQC_PERF_SEL_TC_INFLIGHT_LEVEL', - 310: 'SQC_PERF_SEL_ICACHE_TC_INFLIGHT_LEVEL', - 311: 'SQC_PERF_SEL_DCACHE_TC_INFLIGHT_LEVEL', - 312: 'SQC_PERF_SEL_ICACHE_INPUT_VALID_READY', - 313: 'SQC_PERF_SEL_ICACHE_INPUT_VALID_READYB', - 314: 'SQC_PERF_SEL_ICACHE_INPUT_VALIDB', - 315: 'SQC_PERF_SEL_DCACHE_INPUT_VALID_READY', - 316: 'SQC_PERF_SEL_DCACHE_INPUT_VALID_READYB', - 317: 'SQC_PERF_SEL_DCACHE_INPUT_VALIDB', - 318: 'SQC_PERF_SEL_TC_REQ', - 319: 'SQC_PERF_SEL_TC_INST_REQ', - 320: 'SQC_PERF_SEL_TC_DATA_READ_REQ', - 321: 'SQC_PERF_SEL_TC_DATA_WRITE_REQ', - 322: 'SQC_PERF_SEL_TC_DATA_ATOMIC_REQ', - 323: 'SQC_PERF_SEL_TC_STALL', - 324: 'SQC_PERF_SEL_TC_STARVE', - 325: 'SQC_PERF_SEL_ICACHE_INPUT_STALL_ARB_NO_GRANT', - 326: 'SQC_PERF_SEL_ICACHE_INPUT_STALL_BANK_READYB', - 327: 'SQC_PERF_SEL_ICACHE_CACHE_STALLED', - 328: 'SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_NONZERO', - 329: 'SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_MAX', - 330: 'SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT', - 331: 'SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT_MISS_FIFO', - 332: 'SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT_HIT_FIFO', - 333: 'SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT_TC_IF', - 334: 'SQC_PERF_SEL_ICACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 335: 'SQC_PERF_SEL_DCACHE_BUSY_CYCLES', - 336: 'SQC_PERF_SEL_DCACHE_REQ', - 337: 'SQC_PERF_SEL_DCACHE_HITS', - 338: 'SQC_PERF_SEL_DCACHE_MISSES', - 339: 'SQC_PERF_SEL_DCACHE_MISSES_DUPLICATE', - 340: 'SQC_PERF_SEL_DCACHE_INVAL_INST', - 341: 'SQC_PERF_SEL_DCACHE_INVAL_ASYNC', - 342: 'SQC_PERF_SEL_DCACHE_HIT_LRU_READ', - 343: 'SQC_PERF_SEL_DCACHE_WC_LRU_WRITE', - 344: 'SQC_PERF_SEL_DCACHE_WT_EVICT_WRITE', - 345: 'SQC_PERF_SEL_DCACHE_ATOMIC', - 346: 'SQC_PERF_SEL_DCACHE_WB_INST', - 347: 'SQC_PERF_SEL_DCACHE_WB_ASYNC', - 348: 'SQC_PERF_SEL_DCACHE_INPUT_STALL_ARB_NO_GRANT', - 349: 'SQC_PERF_SEL_DCACHE_INPUT_STALL_BANK_READYB', - 350: 'SQC_PERF_SEL_DCACHE_CACHE_STALLED', - 351: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_INFLIGHT_NONZERO', - 352: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_INFLIGHT_MAX', - 353: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT', - 354: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_EVICT', - 355: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_UNORDERED', - 356: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_ALLOC_UNAVAILABLE', - 357: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_FORCE_EVICT', - 358: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_MULTI_FLUSH', - 359: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_FLUSH_DONE', - 360: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT_MISS_FIFO', - 361: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT_HIT_FIFO', - 362: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT_TC_IF', - 363: 'SQC_PERF_SEL_DCACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 364: 'SQC_PERF_SEL_DCACHE_REQ_READ_1', - 365: 'SQC_PERF_SEL_DCACHE_REQ_READ_2', - 366: 'SQC_PERF_SEL_DCACHE_REQ_READ_4', - 367: 'SQC_PERF_SEL_DCACHE_REQ_READ_8', - 368: 'SQC_PERF_SEL_DCACHE_REQ_READ_16', - 369: 'SQC_PERF_SEL_DCACHE_REQ_TIME', - 370: 'SQC_PERF_SEL_DCACHE_REQ_WRITE_1', - 371: 'SQC_PERF_SEL_DCACHE_REQ_WRITE_2', - 372: 'SQC_PERF_SEL_DCACHE_REQ_WRITE_4', - 373: 'SQC_PERF_SEL_DCACHE_REQ_ATC_PROBE', - 374: 'SQC_PERF_SEL_SQ_DCACHE_REQS', - 375: 'SQC_PERF_SEL_DCACHE_FLAT_REQ', - 376: 'SQC_PERF_SEL_DCACHE_NONFLAT_REQ', - 377: 'SQC_PERF_SEL_ICACHE_UTCL0_TRANSLATION_MISS', - 378: 'SQC_PERF_SEL_ICACHE_UTCL0_PERMISSION_MISS', - 379: 'SQC_PERF_SEL_ICACHE_UTCL0_TRANSLATION_HIT', - 380: 'SQC_PERF_SEL_ICACHE_UTCL0_REQUEST', - 381: 'SQC_PERF_SEL_ICACHE_UTCL0_XNACK', - 382: 'SQC_PERF_SEL_ICACHE_UTCL0_STALL_INFLIGHT_MAX', - 383: 'SQC_PERF_SEL_ICACHE_UTCL0_STALL_LRU_INFLIGHT', - 384: 'SQC_PERF_SEL_ICACHE_UTCL0_LFIFO_FULL', - 385: 'SQC_PERF_SEL_ICACHE_UTCL0_STALL_LFIFO_NOT_RES', - 386: 'SQC_PERF_SEL_ICACHE_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS', - 387: 'SQC_PERF_SEL_ICACHE_UTCL0_UTCL1_INFLIGHT', - 388: 'SQC_PERF_SEL_ICACHE_UTCL0_STALL_MISSFIFO_FULL', - 389: 'SQC_PERF_SEL_DCACHE_UTCL0_TRANSLATION_MISS', - 390: 'SQC_PERF_SEL_DCACHE_UTCL0_PERMISSION_MISS', - 391: 'SQC_PERF_SEL_DCACHE_UTCL0_TRANSLATION_HIT', - 392: 'SQC_PERF_SEL_DCACHE_UTCL0_REQUEST', - 393: 'SQC_PERF_SEL_DCACHE_UTCL0_XNACK', - 394: 'SQC_PERF_SEL_DCACHE_UTCL0_STALL_INFLIGHT_MAX', - 395: 'SQC_PERF_SEL_DCACHE_UTCL0_STALL_LRU_INFLIGHT', - 396: 'SQC_PERF_SEL_DCACHE_UTCL0_LFIFO_FULL', - 397: 'SQC_PERF_SEL_DCACHE_UTCL0_STALL_LFIFO_NOT_RES', - 398: 'SQC_PERF_SEL_DCACHE_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS', - 399: 'SQC_PERF_SEL_DCACHE_UTCL0_UTCL1_INFLIGHT', - 400: 'SQC_PERF_SEL_DCACHE_UTCL0_STALL_MISSFIFO_FULL', - 401: 'SQC_PERF_SEL_DCACHE_UTCL0_STALL_MULTI_MISS', - 402: 'SQC_PERF_SEL_DCACHE_UTCL0_HIT_FIFO_FULL', - 403: 'SQC_PERF_SEL_ICACHE_UTCL0_INFLIGHT_LEVEL', - 404: 'SQC_PERF_SEL_ICACHE_UTCL0_ALL_REQ', - 405: 'SQC_PERF_SEL_ICACHE_UTCL1_INFLIGHT_LEVEL', - 406: 'SQC_PERF_SEL_ICACHE_UTCL1_ALL_REQ', - 407: 'SQC_PERF_SEL_DCACHE_UTCL0_INFLIGHT_LEVEL', - 408: 'SQC_PERF_SEL_DCACHE_UTCL0_ALL_REQ', - 409: 'SQC_PERF_SEL_DCACHE_UTCL1_INFLIGHT_LEVEL', - 410: 'SQC_PERF_SEL_DCACHE_UTCL1_ALL_REQ', - 411: 'SQC_PERF_SEL_ICACHE_GCR', - 412: 'SQC_PERF_SEL_ICACHE_GCR_HITS', - 413: 'SQC_PERF_SEL_DCACHE_GCR', - 414: 'SQC_PERF_SEL_DCACHE_GCR_HITS', - 415: 'SQC_PERF_SEL_ICACHE_GCR_INVALIDATE', - 416: 'SQC_PERF_SEL_DCACHE_GCR_INVALIDATE', - 417: 'SQC_PERF_SEL_DCACHE_GCR_WRITEBACK', - 418: 'SQC_PERF_SEL_DUMMY_LAST', - 448: 'SP_PERF_SEL_DUMMY_BEGIN', - 511: 'SP_PERF_SEL_DUMMY_LAST', -} -SQ_PERF_SEL_NONE = 0 -SQ_PERF_SEL_ACCUM_PREV = 1 -SQ_PERF_SEL_CYCLES = 2 -SQ_PERF_SEL_BUSY_CYCLES = 3 -SQ_PERF_SEL_WAVES = 4 -SQ_PERF_SEL_WAVES_32 = 5 -SQ_PERF_SEL_WAVES_64 = 6 -SQ_PERF_SEL_LEVEL_WAVES = 7 -SQ_PERF_SEL_ITEMS = 8 -SQ_PERF_SEL_WAVE32_ITEMS = 9 -SQ_PERF_SEL_WAVE64_ITEMS = 10 -SQ_PERF_SEL_QUADS = 11 -SQ_PERF_SEL_EVENTS = 12 -SQ_PERF_SEL_WAVES_EQ_64 = 13 -SQ_PERF_SEL_WAVES_LT_64 = 14 -SQ_PERF_SEL_WAVES_LT_48 = 15 -SQ_PERF_SEL_WAVES_LT_32 = 16 -SQ_PERF_SEL_WAVES_LT_16 = 17 -SQ_PERF_SEL_WAVES_RESTORED = 18 -SQ_PERF_SEL_WAVES_SAVED = 19 -SQ_PERF_SEL_MSG = 20 -SQ_PERF_SEL_MSG_GSCNT = 21 -SQ_PERF_SEL_MSG_INTERRUPT = 22 -SQ_PERF_SEL_Reserved_1 = 23 -SQ_PERF_SEL_Reserved_2 = 24 -SQ_PERF_SEL_Reserved_3 = 25 -SQ_PERF_SEL_WAVE_CYCLES = 26 -SQ_PERF_SEL_WAVE_READY = 27 -SQ_PERF_SEL_WAIT_INST_ANY = 28 -SQ_PERF_SEL_WAIT_INST_VALU = 29 -SQ_PERF_SEL_WAIT_INST_SCA = 30 -SQ_PERF_SEL_WAIT_INST_LDS = 31 -SQ_PERF_SEL_WAIT_INST_TEX = 32 -SQ_PERF_SEL_WAIT_INST_FLAT = 33 -SQ_PERF_SEL_WAIT_INST_VMEM = 34 -SQ_PERF_SEL_WAIT_INST_EXP_GDS = 35 -SQ_PERF_SEL_WAIT_INST_BR_MSG = 36 -SQ_PERF_SEL_WAIT_ANY = 37 -SQ_PERF_SEL_WAIT_CNT_ANY = 38 -SQ_PERF_SEL_WAIT_CNT_VMVS = 39 -SQ_PERF_SEL_WAIT_CNT_LGKM = 40 -SQ_PERF_SEL_WAIT_CNT_EXP = 41 -SQ_PERF_SEL_WAIT_TTRACE = 42 -SQ_PERF_SEL_WAIT_IFETCH = 43 -SQ_PERF_SEL_WAIT_BARRIER = 44 -SQ_PERF_SEL_WAIT_EXP_ALLOC = 45 -SQ_PERF_SEL_WAIT_SLEEP = 46 -SQ_PERF_SEL_WAIT_SLEEP_XNACK = 47 -SQ_PERF_SEL_WAIT_OTHER = 48 -SQ_PERF_SEL_INSTS_ALL = 49 -SQ_PERF_SEL_INSTS_BRANCH = 50 -SQ_PERF_SEL_INSTS_CBRANCH_NOT_TAKEN = 51 -SQ_PERF_SEL_INSTS_CBRANCH_TAKEN = 52 -SQ_PERF_SEL_INSTS_CBRANCH_TAKEN_HIT_IS = 53 -SQ_PERF_SEL_INSTS_EXP_GDS = 54 -SQ_PERF_SEL_INSTS_GDS = 55 -SQ_PERF_SEL_INSTS_EXP = 56 -SQ_PERF_SEL_INSTS_FLAT = 57 -SQ_PERF_SEL_Reserved_4 = 58 -SQ_PERF_SEL_INSTS_LDS = 59 -SQ_PERF_SEL_INSTS_SALU = 60 -SQ_PERF_SEL_INSTS_SMEM = 61 -SQ_PERF_SEL_INSTS_SMEM_NORM = 62 -SQ_PERF_SEL_INSTS_SENDMSG = 63 -SQ_PERF_SEL_INSTS_VALU = 64 -SQ_PERF_SEL_Reserved_17 = 65 -SQ_PERF_SEL_INSTS_VALU_TRANS32 = 66 -SQ_PERF_SEL_INSTS_VALU_NO_COEXEC = 67 -SQ_PERF_SEL_INSTS_TEX = 68 -SQ_PERF_SEL_INSTS_TEX_LOAD = 69 -SQ_PERF_SEL_INSTS_TEX_STORE = 70 -SQ_PERF_SEL_INSTS_WAVE32 = 71 -SQ_PERF_SEL_INSTS_WAVE32_FLAT = 72 -SQ_PERF_SEL_Reserved_5 = 73 -SQ_PERF_SEL_INSTS_WAVE32_LDS = 74 -SQ_PERF_SEL_INSTS_WAVE32_VALU = 75 -SQ_PERF_SEL_Reserved_16 = 76 -SQ_PERF_SEL_INSTS_WAVE32_VALU_TRANS32 = 77 -SQ_PERF_SEL_INSTS_WAVE32_VALU_NO_COEXEC = 78 -SQ_PERF_SEL_INSTS_WAVE32_TEX = 79 -SQ_PERF_SEL_INSTS_WAVE32_TEX_LOAD = 80 -SQ_PERF_SEL_INSTS_WAVE32_TEX_STORE = 81 -SQ_PERF_SEL_ITEM_CYCLES_VALU = 82 -SQ_PERF_SEL_VALU_READWRITELANE_CYCLES = 83 -SQ_PERF_SEL_WAVE32_INSTS = 84 -SQ_PERF_SEL_WAVE64_INSTS = 85 -SQ_PERF_SEL_Reserved_18 = 86 -SQ_PERF_SEL_INSTS_VALU_EXEC_SKIPPED = 87 -SQ_PERF_SEL_WAVE64_HALF_SKIP = 88 -SQ_PERF_SEL_INSTS_TEX_REPLAY = 89 -SQ_PERF_SEL_INSTS_SMEM_REPLAY = 90 -SQ_PERF_SEL_INSTS_SMEM_NORM_REPLAY = 91 -SQ_PERF_SEL_INSTS_FLAT_REPLAY = 92 -SQ_PERF_SEL_XNACK_ALL = 93 -SQ_PERF_SEL_XNACK_FIRST = 94 -SQ_PERF_SEL_INSTS_VALU_LDS_DIRECT_RD = 95 -SQ_PERF_SEL_INSTS_VALU_VINTRP_OP = 96 -SQ_PERF_SEL_INST_LEVEL_EXP = 97 -SQ_PERF_SEL_INST_LEVEL_GDS = 98 -SQ_PERF_SEL_INST_LEVEL_LDS = 99 -SQ_PERF_SEL_INST_LEVEL_SMEM = 100 -SQ_PERF_SEL_INST_LEVEL_TEX_LOAD = 101 -SQ_PERF_SEL_INST_LEVEL_TEX_STORE = 102 -SQ_PERF_SEL_IFETCH_REQS = 103 -SQ_PERF_SEL_IFETCH_LEVEL = 104 -SQ_PERF_SEL_IFETCH_XNACK = 105 -SQ_PERF_SEL_Reserved_6 = 106 -SQ_PERF_SEL_Reserved_7 = 107 -SQ_PERF_SEL_LDS_DIRECT_CMD_FIFO_FULL_STALL = 108 -SQ_PERF_SEL_VALU_SGATHER_STALL = 109 -SQ_PERF_SEL_VALU_FWD_BUFFER_FULL_STALL = 110 -SQ_PERF_SEL_VALU_SGPR_RD_FIFO_FULL_STALL = 111 -SQ_PERF_SEL_VALU_SGATHER_FULL_STALL = 112 -SQ_PERF_SEL_SALU_SGATHER_STALL = 113 -SQ_PERF_SEL_SALU_SGPR_RD_FIFO_FULL_STALL = 114 -SQ_PERF_SEL_SALU_GATHER_FULL_STALL = 115 -SQ_PERF_SEL_SMEM_DCACHE_FIFO_FULL_STALL = 116 -SQ_PERF_SEL_INST_CYCLES_VALU = 117 -SQ_PERF_SEL_INST_CYCLES_VALU_TRANS32 = 118 -SQ_PERF_SEL_INST_CYCLES_VALU_NO_COEXEC = 119 -SQ_PERF_SEL_INST_CYCLES_VMEM = 120 -SQ_PERF_SEL_INST_CYCLES_VMEM_LOAD = 121 -SQ_PERF_SEL_INST_CYCLES_VMEM_STORE = 122 -SQ_PERF_SEL_INST_CYCLES_LDS = 123 -SQ_PERF_SEL_INST_CYCLES_TEX = 124 -SQ_PERF_SEL_INST_CYCLES_FLAT = 125 -SQ_PERF_SEL_INST_CYCLES_EXP_GDS = 126 -SQ_PERF_SEL_VMEM_ARB_FIFO_FULL = 127 -SQ_PERF_SEL_MSG_FIFO_FULL_STALL = 128 -SQ_PERF_SEL_EXP_REQ_FIFO_FULL = 129 -SQ_PERF_SEL_Reserved_8 = 130 -SQ_PERF_SEL_Reserved_9 = 131 -SQ_PERF_SEL_Reserved_10 = 132 -SQ_PERF_SEL_Reserved_11 = 133 -SQ_PERF_SEL_Reserved_12 = 134 -SQ_PERF_SEL_Reserved_13 = 135 -SQ_PERF_SEL_Reserved_14 = 136 -SQ_PERF_SEL_VMEM_BUS_ACTIVE = 137 -SQ_PERF_SEL_VMEM_BUS_STALL = 138 -SQ_PERF_SEL_VMEM_BUS_STALL_TA_ADDR_FIFO_FULL = 139 -SQ_PERF_SEL_VMEM_BUS_STALL_TA_CMD_FIFO_FULL = 140 -SQ_PERF_SEL_VMEM_BUS_STALL_LDS_ADDR_FIFO_FULL = 141 -SQ_PERF_SEL_VMEM_BUS_STALL_LDS_CMD_FIFO_FULL = 142 -SQ_PERF_SEL_VMEM_STARVE_TA_ADDR_EMPTY = 143 -SQ_PERF_SEL_VMEM_STARVE_LDS_ADDR_EMPTY = 144 -SQ_PERF_SEL_Reserved_15 = 145 -SQ_PERF_SEL_SALU_PIPE_STALL = 146 -SQ_PERF_SEL_SMEM_DCACHE_RETURN_CYCLES = 147 -SQ_PERF_SEL_SMEM_DCACHE_RETURN_STALL = 148 -SQ_PERF_SEL_MSG_BUS_BUSY = 149 -SQ_PERF_SEL_EXP_REQ_BUS_STALL = 150 -SQ_PERF_SEL_EXP_REQ0_BUS_BUSY = 151 -SQ_PERF_SEL_EXP_REQ1_BUS_BUSY = 152 -SQ_PERF_SEL_EXP_BUS0_BUSY = 153 -SQ_PERF_SEL_EXP_BUS1_BUSY = 154 -SQ_PERF_SEL_INST_CACHE_REQS = 155 -SQ_PERF_SEL_INST_CACHE_REQ_STALL = 156 -SQ_PERF_SEL_MIXED_SUBSEQUENT_ISSUES_VALU = 157 -SQ_PERF_SEL_MIXED_SUBSEQUENT_ISSUES_SALU = 158 -SQ_PERF_SEL_MIXED_SUBSEQUENT_ISSUES_VMEM = 159 -SQ_PERF_SEL_USER0 = 160 -SQ_PERF_SEL_USER1 = 161 -SQ_PERF_SEL_USER2 = 162 -SQ_PERF_SEL_USER3 = 163 -SQ_PERF_SEL_USER4 = 164 -SQ_PERF_SEL_USER5 = 165 -SQ_PERF_SEL_USER6 = 166 -SQ_PERF_SEL_USER7 = 167 -SQ_PERF_SEL_USER8 = 168 -SQ_PERF_SEL_USER9 = 169 -SQ_PERF_SEL_USER10 = 170 -SQ_PERF_SEL_USER11 = 171 -SQ_PERF_SEL_USER12 = 172 -SQ_PERF_SEL_USER13 = 173 -SQ_PERF_SEL_USER14 = 174 -SQ_PERF_SEL_USER15 = 175 -SQ_PERF_SEL_USER_LEVEL0 = 176 -SQ_PERF_SEL_USER_LEVEL1 = 177 -SQ_PERF_SEL_USER_LEVEL2 = 178 -SQ_PERF_SEL_USER_LEVEL3 = 179 -SQ_PERF_SEL_USER_LEVEL4 = 180 -SQ_PERF_SEL_USER_LEVEL5 = 181 -SQ_PERF_SEL_USER_LEVEL6 = 182 -SQ_PERF_SEL_USER_LEVEL7 = 183 -SQ_PERF_SEL_USER_LEVEL8 = 184 -SQ_PERF_SEL_USER_LEVEL9 = 185 -SQ_PERF_SEL_USER_LEVEL10 = 186 -SQ_PERF_SEL_USER_LEVEL11 = 187 -SQ_PERF_SEL_USER_LEVEL12 = 188 -SQ_PERF_SEL_USER_LEVEL13 = 189 -SQ_PERF_SEL_USER_LEVEL14 = 190 -SQ_PERF_SEL_USER_LEVEL15 = 191 -SQ_PERF_SEL_VALU_RETURN_SDST = 192 -SQ_PERF_SEL_VMEM_SECOND_TRY_USED = 193 -SQ_PERF_SEL_VMEM_SECOND_TRY_STALL = 194 -SQ_PERF_SEL_DUMMY_END = 195 -SQ_PERF_SEL_DUMMY_LAST = 255 -SQG_PERF_SEL_UTCL0_TRANSLATION_MISS = 256 -SQG_PERF_SEL_UTCL0_PERMISSION_MISS = 257 -SQG_PERF_SEL_UTCL0_TRANSLATION_HIT = 258 -SQG_PERF_SEL_UTCL0_REQUEST = 259 -SQG_PERF_SEL_UTCL0_STALL_MISSFIFO_FULL = 260 -SQG_PERF_SEL_UTCL0_STALL_INFLIGHT_MAX = 261 -SQG_PERF_SEL_UTCL0_STALL_LRU_INFLIGHT = 262 -SQG_PERF_SEL_UTCL0_LFIFO_FULL = 263 -SQG_PERF_SEL_UTCL0_STALL_LFIFO_NOT_RES = 264 -SQG_PERF_SEL_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS = 265 -SQG_PERF_SEL_UTCL0_HIT_FIFO_FULL = 266 -SQG_PERF_SEL_UTCL0_UTCL1_REQ = 267 -SQG_PERF_SEL_TLB_SHOOTDOWN = 268 -SQG_PERF_SEL_TLB_SHOOTDOWN_CYCLES = 269 -SQG_PERF_SEL_TTRACE_REQS = 270 -SQG_PERF_SEL_TTRACE_INFLIGHT_REQS = 271 -SQG_PERF_SEL_TTRACE_STALL = 272 -SQG_PERF_SEL_TTRACE_LOST_PACKETS = 273 -SQG_PERF_SEL_DUMMY_LAST = 274 -SQC_PERF_SEL_POWER_VALU = 275 -SQC_PERF_SEL_POWER_VALU0 = 276 -SQC_PERF_SEL_POWER_VALU1 = 277 -SQC_PERF_SEL_POWER_VALU2 = 278 -SQC_PERF_SEL_POWER_GPR_RD = 279 -SQC_PERF_SEL_POWER_GPR_WR = 280 -SQC_PERF_SEL_POWER_LDS_BUSY = 281 -SQC_PERF_SEL_POWER_ALU_BUSY = 282 -SQC_PERF_SEL_POWER_TEX_BUSY = 283 -SQC_PERF_SEL_PT_POWER_STALL = 284 -SQC_PERF_SEL_LDS_BANK_CONFLICT = 285 -SQC_PERF_SEL_LDS_ADDR_CONFLICT = 286 -SQC_PERF_SEL_LDS_UNALIGNED_STALL = 287 -SQC_PERF_SEL_LDS_MEM_VIOLATIONS = 288 -SQC_PERF_SEL_LDS_ATOMIC_RETURN = 289 -SQC_PERF_SEL_LDS_IDX_ACTIVE = 290 -SQC_PERF_SEL_LDS_DATA_FIFO_FULL = 291 -SQC_PERF_SEL_LDS_CMD_FIFO_FULL = 292 -SQC_PERF_SEL_LDS_ADDR_STALL = 293 -SQC_PERF_SEL_LDS_ADDR_ACTIVE = 294 -SQC_PERF_SEL_LDS_DIRECT_FIFO_FULL_STALL = 295 -SQC_PERF_SEL_LDS_PC_LDS_WRITE_STALL_TD = 296 -SQC_PERF_SEL_LDS_SPI_VGPR_WRITE_STALL_TD = 297 -SQC_PERF_SEL_LDS_LDS_VGPR_WRITE_STALL = 298 -SQC_PERF_SEL_LDS_FP_ADD_CYCLES = 299 -SQC_PERF_SEL_ICACHE_BUSY_CYCLES = 300 -SQC_PERF_SEL_ICACHE_REQ = 301 -SQC_PERF_SEL_ICACHE_HITS = 302 -SQC_PERF_SEL_ICACHE_MISSES = 303 -SQC_PERF_SEL_ICACHE_MISSES_DUPLICATE = 304 -SQC_PERF_SEL_ICACHE_INVAL_INST = 305 -SQC_PERF_SEL_ICACHE_INVAL_ASYNC = 306 -SQC_PERF_SEL_ICACHE_INFLIGHT_LEVEL = 307 -SQC_PERF_SEL_DCACHE_INFLIGHT_LEVEL = 308 -SQC_PERF_SEL_TC_INFLIGHT_LEVEL = 309 -SQC_PERF_SEL_ICACHE_TC_INFLIGHT_LEVEL = 310 -SQC_PERF_SEL_DCACHE_TC_INFLIGHT_LEVEL = 311 -SQC_PERF_SEL_ICACHE_INPUT_VALID_READY = 312 -SQC_PERF_SEL_ICACHE_INPUT_VALID_READYB = 313 -SQC_PERF_SEL_ICACHE_INPUT_VALIDB = 314 -SQC_PERF_SEL_DCACHE_INPUT_VALID_READY = 315 -SQC_PERF_SEL_DCACHE_INPUT_VALID_READYB = 316 -SQC_PERF_SEL_DCACHE_INPUT_VALIDB = 317 -SQC_PERF_SEL_TC_REQ = 318 -SQC_PERF_SEL_TC_INST_REQ = 319 -SQC_PERF_SEL_TC_DATA_READ_REQ = 320 -SQC_PERF_SEL_TC_DATA_WRITE_REQ = 321 -SQC_PERF_SEL_TC_DATA_ATOMIC_REQ = 322 -SQC_PERF_SEL_TC_STALL = 323 -SQC_PERF_SEL_TC_STARVE = 324 -SQC_PERF_SEL_ICACHE_INPUT_STALL_ARB_NO_GRANT = 325 -SQC_PERF_SEL_ICACHE_INPUT_STALL_BANK_READYB = 326 -SQC_PERF_SEL_ICACHE_CACHE_STALLED = 327 -SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_NONZERO = 328 -SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_MAX = 329 -SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT = 330 -SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT_MISS_FIFO = 331 -SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT_HIT_FIFO = 332 -SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT_TC_IF = 333 -SQC_PERF_SEL_ICACHE_STALL_OUTXBAR_ARB_NO_GRANT = 334 -SQC_PERF_SEL_DCACHE_BUSY_CYCLES = 335 -SQC_PERF_SEL_DCACHE_REQ = 336 -SQC_PERF_SEL_DCACHE_HITS = 337 -SQC_PERF_SEL_DCACHE_MISSES = 338 -SQC_PERF_SEL_DCACHE_MISSES_DUPLICATE = 339 -SQC_PERF_SEL_DCACHE_INVAL_INST = 340 -SQC_PERF_SEL_DCACHE_INVAL_ASYNC = 341 -SQC_PERF_SEL_DCACHE_HIT_LRU_READ = 342 -SQC_PERF_SEL_DCACHE_WC_LRU_WRITE = 343 -SQC_PERF_SEL_DCACHE_WT_EVICT_WRITE = 344 -SQC_PERF_SEL_DCACHE_ATOMIC = 345 -SQC_PERF_SEL_DCACHE_WB_INST = 346 -SQC_PERF_SEL_DCACHE_WB_ASYNC = 347 -SQC_PERF_SEL_DCACHE_INPUT_STALL_ARB_NO_GRANT = 348 -SQC_PERF_SEL_DCACHE_INPUT_STALL_BANK_READYB = 349 -SQC_PERF_SEL_DCACHE_CACHE_STALLED = 350 -SQC_PERF_SEL_DCACHE_CACHE_STALL_INFLIGHT_NONZERO = 351 -SQC_PERF_SEL_DCACHE_CACHE_STALL_INFLIGHT_MAX = 352 -SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT = 353 -SQC_PERF_SEL_DCACHE_CACHE_STALL_EVICT = 354 -SQC_PERF_SEL_DCACHE_CACHE_STALL_UNORDERED = 355 -SQC_PERF_SEL_DCACHE_CACHE_STALL_ALLOC_UNAVAILABLE = 356 -SQC_PERF_SEL_DCACHE_CACHE_STALL_FORCE_EVICT = 357 -SQC_PERF_SEL_DCACHE_CACHE_STALL_MULTI_FLUSH = 358 -SQC_PERF_SEL_DCACHE_CACHE_STALL_FLUSH_DONE = 359 -SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT_MISS_FIFO = 360 -SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT_HIT_FIFO = 361 -SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT_TC_IF = 362 -SQC_PERF_SEL_DCACHE_STALL_OUTXBAR_ARB_NO_GRANT = 363 -SQC_PERF_SEL_DCACHE_REQ_READ_1 = 364 -SQC_PERF_SEL_DCACHE_REQ_READ_2 = 365 -SQC_PERF_SEL_DCACHE_REQ_READ_4 = 366 -SQC_PERF_SEL_DCACHE_REQ_READ_8 = 367 -SQC_PERF_SEL_DCACHE_REQ_READ_16 = 368 -SQC_PERF_SEL_DCACHE_REQ_TIME = 369 -SQC_PERF_SEL_DCACHE_REQ_WRITE_1 = 370 -SQC_PERF_SEL_DCACHE_REQ_WRITE_2 = 371 -SQC_PERF_SEL_DCACHE_REQ_WRITE_4 = 372 -SQC_PERF_SEL_DCACHE_REQ_ATC_PROBE = 373 -SQC_PERF_SEL_SQ_DCACHE_REQS = 374 -SQC_PERF_SEL_DCACHE_FLAT_REQ = 375 -SQC_PERF_SEL_DCACHE_NONFLAT_REQ = 376 -SQC_PERF_SEL_ICACHE_UTCL0_TRANSLATION_MISS = 377 -SQC_PERF_SEL_ICACHE_UTCL0_PERMISSION_MISS = 378 -SQC_PERF_SEL_ICACHE_UTCL0_TRANSLATION_HIT = 379 -SQC_PERF_SEL_ICACHE_UTCL0_REQUEST = 380 -SQC_PERF_SEL_ICACHE_UTCL0_XNACK = 381 -SQC_PERF_SEL_ICACHE_UTCL0_STALL_INFLIGHT_MAX = 382 -SQC_PERF_SEL_ICACHE_UTCL0_STALL_LRU_INFLIGHT = 383 -SQC_PERF_SEL_ICACHE_UTCL0_LFIFO_FULL = 384 -SQC_PERF_SEL_ICACHE_UTCL0_STALL_LFIFO_NOT_RES = 385 -SQC_PERF_SEL_ICACHE_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS = 386 -SQC_PERF_SEL_ICACHE_UTCL0_UTCL1_INFLIGHT = 387 -SQC_PERF_SEL_ICACHE_UTCL0_STALL_MISSFIFO_FULL = 388 -SQC_PERF_SEL_DCACHE_UTCL0_TRANSLATION_MISS = 389 -SQC_PERF_SEL_DCACHE_UTCL0_PERMISSION_MISS = 390 -SQC_PERF_SEL_DCACHE_UTCL0_TRANSLATION_HIT = 391 -SQC_PERF_SEL_DCACHE_UTCL0_REQUEST = 392 -SQC_PERF_SEL_DCACHE_UTCL0_XNACK = 393 -SQC_PERF_SEL_DCACHE_UTCL0_STALL_INFLIGHT_MAX = 394 -SQC_PERF_SEL_DCACHE_UTCL0_STALL_LRU_INFLIGHT = 395 -SQC_PERF_SEL_DCACHE_UTCL0_LFIFO_FULL = 396 -SQC_PERF_SEL_DCACHE_UTCL0_STALL_LFIFO_NOT_RES = 397 -SQC_PERF_SEL_DCACHE_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS = 398 -SQC_PERF_SEL_DCACHE_UTCL0_UTCL1_INFLIGHT = 399 -SQC_PERF_SEL_DCACHE_UTCL0_STALL_MISSFIFO_FULL = 400 -SQC_PERF_SEL_DCACHE_UTCL0_STALL_MULTI_MISS = 401 -SQC_PERF_SEL_DCACHE_UTCL0_HIT_FIFO_FULL = 402 -SQC_PERF_SEL_ICACHE_UTCL0_INFLIGHT_LEVEL = 403 -SQC_PERF_SEL_ICACHE_UTCL0_ALL_REQ = 404 -SQC_PERF_SEL_ICACHE_UTCL1_INFLIGHT_LEVEL = 405 -SQC_PERF_SEL_ICACHE_UTCL1_ALL_REQ = 406 -SQC_PERF_SEL_DCACHE_UTCL0_INFLIGHT_LEVEL = 407 -SQC_PERF_SEL_DCACHE_UTCL0_ALL_REQ = 408 -SQC_PERF_SEL_DCACHE_UTCL1_INFLIGHT_LEVEL = 409 -SQC_PERF_SEL_DCACHE_UTCL1_ALL_REQ = 410 -SQC_PERF_SEL_ICACHE_GCR = 411 -SQC_PERF_SEL_ICACHE_GCR_HITS = 412 -SQC_PERF_SEL_DCACHE_GCR = 413 -SQC_PERF_SEL_DCACHE_GCR_HITS = 414 -SQC_PERF_SEL_ICACHE_GCR_INVALIDATE = 415 -SQC_PERF_SEL_DCACHE_GCR_INVALIDATE = 416 -SQC_PERF_SEL_DCACHE_GCR_WRITEBACK = 417 -SQC_PERF_SEL_DUMMY_LAST = 418 -SP_PERF_SEL_DUMMY_BEGIN = 448 -SP_PERF_SEL_DUMMY_LAST = 511 -SQ_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_CAC_POWER_SEL' -SQ_CAC_POWER_SEL__enumvalues = { - 0: 'SQ_CAC_POWER_VALU', - 1: 'SQ_CAC_POWER_VALU0', - 2: 'SQ_CAC_POWER_VALU1', - 3: 'SQ_CAC_POWER_VALU2', - 4: 'SQ_CAC_POWER_GPR_RD', - 5: 'SQ_CAC_POWER_GPR_WR', - 6: 'SQ_CAC_POWER_LDS_BUSY', - 7: 'SQ_CAC_POWER_ALU_BUSY', - 8: 'SQ_CAC_POWER_TEX_BUSY', -} -SQ_CAC_POWER_VALU = 0 -SQ_CAC_POWER_VALU0 = 1 -SQ_CAC_POWER_VALU1 = 2 -SQ_CAC_POWER_VALU2 = 3 -SQ_CAC_POWER_GPR_RD = 4 -SQ_CAC_POWER_GPR_WR = 5 -SQ_CAC_POWER_LDS_BUSY = 6 -SQ_CAC_POWER_ALU_BUSY = 7 -SQ_CAC_POWER_TEX_BUSY = 8 -SQ_CAC_POWER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IND_CMD_CMD' -SQ_IND_CMD_CMD__enumvalues = { - 0: 'SQ_IND_CMD_CMD_NULL', - 1: 'SQ_IND_CMD_CMD_SETHALT', - 2: 'SQ_IND_CMD_CMD_SAVECTX', - 3: 'SQ_IND_CMD_CMD_KILL', - 4: 'SQ_IND_CMD_CMD_DEBUG', - 5: 'SQ_IND_CMD_CMD_TRAP', - 6: 'SQ_IND_CMD_CMD_SET_SPI_PRIO', - 7: 'SQ_IND_CMD_CMD_SETFATALHALT', - 8: 'SQ_IND_CMD_CMD_SINGLE_STEP', -} -SQ_IND_CMD_CMD_NULL = 0 -SQ_IND_CMD_CMD_SETHALT = 1 -SQ_IND_CMD_CMD_SAVECTX = 2 -SQ_IND_CMD_CMD_KILL = 3 -SQ_IND_CMD_CMD_DEBUG = 4 -SQ_IND_CMD_CMD_TRAP = 5 -SQ_IND_CMD_CMD_SET_SPI_PRIO = 6 -SQ_IND_CMD_CMD_SETFATALHALT = 7 -SQ_IND_CMD_CMD_SINGLE_STEP = 8 -SQ_IND_CMD_CMD = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IND_CMD_MODE' -SQ_IND_CMD_MODE__enumvalues = { - 0: 'SQ_IND_CMD_MODE_SINGLE', - 1: 'SQ_IND_CMD_MODE_BROADCAST', - 2: 'SQ_IND_CMD_MODE_BROADCAST_QUEUE', - 3: 'SQ_IND_CMD_MODE_BROADCAST_PIPE', - 4: 'SQ_IND_CMD_MODE_BROADCAST_ME', -} -SQ_IND_CMD_MODE_SINGLE = 0 -SQ_IND_CMD_MODE_BROADCAST = 1 -SQ_IND_CMD_MODE_BROADCAST_QUEUE = 2 -SQ_IND_CMD_MODE_BROADCAST_PIPE = 3 -SQ_IND_CMD_MODE_BROADCAST_ME = 4 -SQ_IND_CMD_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_EDC_INFO_SOURCE' -SQ_EDC_INFO_SOURCE__enumvalues = { - 0: 'SQ_EDC_INFO_SOURCE_INVALID', - 1: 'SQ_EDC_INFO_SOURCE_INST', - 2: 'SQ_EDC_INFO_SOURCE_SGPR', - 3: 'SQ_EDC_INFO_SOURCE_VGPR', - 4: 'SQ_EDC_INFO_SOURCE_LDS', - 5: 'SQ_EDC_INFO_SOURCE_GDS', - 6: 'SQ_EDC_INFO_SOURCE_TA', -} -SQ_EDC_INFO_SOURCE_INVALID = 0 -SQ_EDC_INFO_SOURCE_INST = 1 -SQ_EDC_INFO_SOURCE_SGPR = 2 -SQ_EDC_INFO_SOURCE_VGPR = 3 -SQ_EDC_INFO_SOURCE_LDS = 4 -SQ_EDC_INFO_SOURCE_GDS = 5 -SQ_EDC_INFO_SOURCE_TA = 6 -SQ_EDC_INFO_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_ROUND_MODE' -SQ_ROUND_MODE__enumvalues = { - 0: 'SQ_ROUND_NEAREST_EVEN', - 1: 'SQ_ROUND_PLUS_INFINITY', - 2: 'SQ_ROUND_MINUS_INFINITY', - 3: 'SQ_ROUND_TO_ZERO', -} -SQ_ROUND_NEAREST_EVEN = 0 -SQ_ROUND_PLUS_INFINITY = 1 -SQ_ROUND_MINUS_INFINITY = 2 -SQ_ROUND_TO_ZERO = 3 -SQ_ROUND_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_INTERRUPT_WORD_ENCODING' -SQ_INTERRUPT_WORD_ENCODING__enumvalues = { - 0: 'SQ_INTERRUPT_WORD_ENCODING_AUTO', - 1: 'SQ_INTERRUPT_WORD_ENCODING_INST', - 2: 'SQ_INTERRUPT_WORD_ENCODING_ERROR', -} -SQ_INTERRUPT_WORD_ENCODING_AUTO = 0 -SQ_INTERRUPT_WORD_ENCODING_INST = 1 -SQ_INTERRUPT_WORD_ENCODING_ERROR = 2 -SQ_INTERRUPT_WORD_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IBUF_ST' -SQ_IBUF_ST__enumvalues = { - 0: 'SQ_IBUF_IB_IDLE', - 1: 'SQ_IBUF_IB_INI_WAIT_GNT', - 2: 'SQ_IBUF_IB_INI_WAIT_DRET', - 3: 'SQ_IBUF_IB_LE_4DW', - 4: 'SQ_IBUF_IB_WAIT_DRET', - 5: 'SQ_IBUF_IB_EMPTY_WAIT_DRET', - 6: 'SQ_IBUF_IB_DRET', - 7: 'SQ_IBUF_IB_EMPTY_WAIT_GNT', -} -SQ_IBUF_IB_IDLE = 0 -SQ_IBUF_IB_INI_WAIT_GNT = 1 -SQ_IBUF_IB_INI_WAIT_DRET = 2 -SQ_IBUF_IB_LE_4DW = 3 -SQ_IBUF_IB_WAIT_DRET = 4 -SQ_IBUF_IB_EMPTY_WAIT_DRET = 5 -SQ_IBUF_IB_DRET = 6 -SQ_IBUF_IB_EMPTY_WAIT_GNT = 7 -SQ_IBUF_ST = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_INST_STR_ST' -SQ_INST_STR_ST__enumvalues = { - 0: 'SQ_INST_STR_IB_WAVE_NORML', - 1: 'SQ_INST_STR_IB_WAVE2ID_NORMAL_INST_AV', - 2: 'SQ_INST_STR_IB_WAVE_INTERNAL_INST_AV', - 3: 'SQ_INST_STR_IB_WAVE_INST_SKIP_AV', - 4: 'SQ_INST_STR_IB_WAVE_SETVSKIP_ST0', - 5: 'SQ_INST_STR_IB_WAVE_SETVSKIP_ST1', - 6: 'SQ_INST_STR_IB_WAVE_NOP_SLEEP_WAIT', - 7: 'SQ_INST_STR_IB_WAVE_PC_FROM_SGPR_MSG_WAIT', -} -SQ_INST_STR_IB_WAVE_NORML = 0 -SQ_INST_STR_IB_WAVE2ID_NORMAL_INST_AV = 1 -SQ_INST_STR_IB_WAVE_INTERNAL_INST_AV = 2 -SQ_INST_STR_IB_WAVE_INST_SKIP_AV = 3 -SQ_INST_STR_IB_WAVE_SETVSKIP_ST0 = 4 -SQ_INST_STR_IB_WAVE_SETVSKIP_ST1 = 5 -SQ_INST_STR_IB_WAVE_NOP_SLEEP_WAIT = 6 -SQ_INST_STR_IB_WAVE_PC_FROM_SGPR_MSG_WAIT = 7 -SQ_INST_STR_ST = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WAVE_IB_ECC_ST' -SQ_WAVE_IB_ECC_ST__enumvalues = { - 0: 'SQ_WAVE_IB_ECC_CLEAN', - 1: 'SQ_WAVE_IB_ECC_ERR_CONTINUE', - 2: 'SQ_WAVE_IB_ECC_ERR_HALT', - 3: 'SQ_WAVE_IB_ECC_WITH_ERR_MSG', -} -SQ_WAVE_IB_ECC_CLEAN = 0 -SQ_WAVE_IB_ECC_ERR_CONTINUE = 1 -SQ_WAVE_IB_ECC_ERR_HALT = 2 -SQ_WAVE_IB_ECC_WITH_ERR_MSG = 3 -SQ_WAVE_IB_ECC_ST = ctypes.c_uint32 # enum - -# values for enumeration 'SH_MEM_ADDRESS_MODE' -SH_MEM_ADDRESS_MODE__enumvalues = { - 0: 'SH_MEM_ADDRESS_MODE_64', - 1: 'SH_MEM_ADDRESS_MODE_32', -} -SH_MEM_ADDRESS_MODE_64 = 0 -SH_MEM_ADDRESS_MODE_32 = 1 -SH_MEM_ADDRESS_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SH_MEM_RETRY_MODE' -SH_MEM_RETRY_MODE__enumvalues = { - 0: 'SH_MEM_RETRY_MODE_ALL', - 1: 'SH_MEM_RETRY_MODE_WRITEATOMIC', - 2: 'SH_MEM_RETRY_MODE_NONE', -} -SH_MEM_RETRY_MODE_ALL = 0 -SH_MEM_RETRY_MODE_WRITEATOMIC = 1 -SH_MEM_RETRY_MODE_NONE = 2 -SH_MEM_RETRY_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SH_MEM_ALIGNMENT_MODE' -SH_MEM_ALIGNMENT_MODE__enumvalues = { - 0: 'SH_MEM_ALIGNMENT_MODE_DWORD', - 1: 'SH_MEM_ALIGNMENT_MODE_DWORD_STRICT', - 2: 'SH_MEM_ALIGNMENT_MODE_STRICT', - 3: 'SH_MEM_ALIGNMENT_MODE_UNALIGNED', -} -SH_MEM_ALIGNMENT_MODE_DWORD = 0 -SH_MEM_ALIGNMENT_MODE_DWORD_STRICT = 1 -SH_MEM_ALIGNMENT_MODE_STRICT = 2 -SH_MEM_ALIGNMENT_MODE_UNALIGNED = 3 -SH_MEM_ALIGNMENT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_TOKEN_MASK_REG_INCLUDE_SHIFT' -SQ_TT_TOKEN_MASK_REG_INCLUDE_SHIFT__enumvalues = { - 0: 'SQ_TT_TOKEN_MASK_SQDEC_SHIFT', - 1: 'SQ_TT_TOKEN_MASK_SHDEC_SHIFT', - 2: 'SQ_TT_TOKEN_MASK_GFXUDEC_SHIFT', - 3: 'SQ_TT_TOKEN_MASK_COMP_SHIFT', - 4: 'SQ_TT_TOKEN_MASK_CONTEXT_SHIFT', - 5: 'SQ_TT_TOKEN_MASK_CONFIG_SHIFT', - 6: 'SQ_TT_TOKEN_MASK_OTHER_SHIFT', - 7: 'SQ_TT_TOKEN_MASK_READS_SHIFT', -} -SQ_TT_TOKEN_MASK_SQDEC_SHIFT = 0 -SQ_TT_TOKEN_MASK_SHDEC_SHIFT = 1 -SQ_TT_TOKEN_MASK_GFXUDEC_SHIFT = 2 -SQ_TT_TOKEN_MASK_COMP_SHIFT = 3 -SQ_TT_TOKEN_MASK_CONTEXT_SHIFT = 4 -SQ_TT_TOKEN_MASK_CONFIG_SHIFT = 5 -SQ_TT_TOKEN_MASK_OTHER_SHIFT = 6 -SQ_TT_TOKEN_MASK_READS_SHIFT = 7 -SQ_TT_TOKEN_MASK_REG_INCLUDE_SHIFT = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_TOKEN_MASK_REG_INCLUDE' -SQ_TT_TOKEN_MASK_REG_INCLUDE__enumvalues = { - 1: 'SQ_TT_TOKEN_MASK_SQDEC_BIT', - 2: 'SQ_TT_TOKEN_MASK_SHDEC_BIT', - 4: 'SQ_TT_TOKEN_MASK_GFXUDEC_BIT', - 8: 'SQ_TT_TOKEN_MASK_COMP_BIT', - 16: 'SQ_TT_TOKEN_MASK_CONTEXT_BIT', - 32: 'SQ_TT_TOKEN_MASK_CONFIG_BIT', - 64: 'SQ_TT_TOKEN_MASK_OTHER_BIT', - 128: 'SQ_TT_TOKEN_MASK_READS_BIT', -} -SQ_TT_TOKEN_MASK_SQDEC_BIT = 1 -SQ_TT_TOKEN_MASK_SHDEC_BIT = 2 -SQ_TT_TOKEN_MASK_GFXUDEC_BIT = 4 -SQ_TT_TOKEN_MASK_COMP_BIT = 8 -SQ_TT_TOKEN_MASK_CONTEXT_BIT = 16 -SQ_TT_TOKEN_MASK_CONFIG_BIT = 32 -SQ_TT_TOKEN_MASK_OTHER_BIT = 64 -SQ_TT_TOKEN_MASK_READS_BIT = 128 -SQ_TT_TOKEN_MASK_REG_INCLUDE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_TOKEN_MASK_TOKEN_EXCLUDE_SHIFT' -SQ_TT_TOKEN_MASK_TOKEN_EXCLUDE_SHIFT__enumvalues = { - 0: 'SQ_TT_TOKEN_EXCLUDE_VMEMEXEC_SHIFT', - 1: 'SQ_TT_TOKEN_EXCLUDE_ALUEXEC_SHIFT', - 2: 'SQ_TT_TOKEN_EXCLUDE_VALUINST_SHIFT', - 3: 'SQ_TT_TOKEN_EXCLUDE_WAVERDY_SHIFT', - 4: 'SQ_TT_TOKEN_EXCLUDE_IMMED1_SHIFT', - 5: 'SQ_TT_TOKEN_EXCLUDE_IMMEDIATE_SHIFT', - 6: 'SQ_TT_TOKEN_EXCLUDE_REG_SHIFT', - 7: 'SQ_TT_TOKEN_EXCLUDE_EVENT_SHIFT', - 8: 'SQ_TT_TOKEN_EXCLUDE_INST_SHIFT', - 9: 'SQ_TT_TOKEN_EXCLUDE_UTILCTR_SHIFT', - 10: 'SQ_TT_TOKEN_EXCLUDE_WAVEALLOC_SHIFT', - 11: 'SQ_TT_TOKEN_EXCLUDE_PERF_SHIFT', -} -SQ_TT_TOKEN_EXCLUDE_VMEMEXEC_SHIFT = 0 -SQ_TT_TOKEN_EXCLUDE_ALUEXEC_SHIFT = 1 -SQ_TT_TOKEN_EXCLUDE_VALUINST_SHIFT = 2 -SQ_TT_TOKEN_EXCLUDE_WAVERDY_SHIFT = 3 -SQ_TT_TOKEN_EXCLUDE_IMMED1_SHIFT = 4 -SQ_TT_TOKEN_EXCLUDE_IMMEDIATE_SHIFT = 5 -SQ_TT_TOKEN_EXCLUDE_REG_SHIFT = 6 -SQ_TT_TOKEN_EXCLUDE_EVENT_SHIFT = 7 -SQ_TT_TOKEN_EXCLUDE_INST_SHIFT = 8 -SQ_TT_TOKEN_EXCLUDE_UTILCTR_SHIFT = 9 -SQ_TT_TOKEN_EXCLUDE_WAVEALLOC_SHIFT = 10 -SQ_TT_TOKEN_EXCLUDE_PERF_SHIFT = 11 -SQ_TT_TOKEN_MASK_TOKEN_EXCLUDE_SHIFT = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_TOKEN_MASK_INST_EXCLUDE' -SQ_TT_TOKEN_MASK_INST_EXCLUDE__enumvalues = { - 0: 'SQ_TT_INST_EXCLUDE_VMEM_OTHER_SIMD', - 1: 'SQ_TT_INST_EXCLUDE_EXPGNT234', -} -SQ_TT_INST_EXCLUDE_VMEM_OTHER_SIMD = 0 -SQ_TT_INST_EXCLUDE_EXPGNT234 = 1 -SQ_TT_TOKEN_MASK_INST_EXCLUDE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_MODE' -SQ_TT_MODE__enumvalues = { - 0: 'SQ_TT_MODE_OFF', - 1: 'SQ_TT_MODE_ON', - 2: 'SQ_TT_MODE_GLOBAL', - 3: 'SQ_TT_MODE_DETAIL', -} -SQ_TT_MODE_OFF = 0 -SQ_TT_MODE_ON = 1 -SQ_TT_MODE_GLOBAL = 2 -SQ_TT_MODE_DETAIL = 3 -SQ_TT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_WTYPE_INCLUDE_SHIFT' -SQ_TT_WTYPE_INCLUDE_SHIFT__enumvalues = { - 0: 'SQ_TT_WTYPE_INCLUDE_PS_SHIFT', - 1: 'SQ_TT_WTYPE_INCLUDE_VS_SHIFT', - 2: 'SQ_TT_WTYPE_INCLUDE_GS_SHIFT', - 3: 'SQ_TT_WTYPE_INCLUDE_ES_SHIFT', - 4: 'SQ_TT_WTYPE_INCLUDE_HS_SHIFT', - 5: 'SQ_TT_WTYPE_INCLUDE_LS_SHIFT', - 6: 'SQ_TT_WTYPE_INCLUDE_CS_SHIFT', -} -SQ_TT_WTYPE_INCLUDE_PS_SHIFT = 0 -SQ_TT_WTYPE_INCLUDE_VS_SHIFT = 1 -SQ_TT_WTYPE_INCLUDE_GS_SHIFT = 2 -SQ_TT_WTYPE_INCLUDE_ES_SHIFT = 3 -SQ_TT_WTYPE_INCLUDE_HS_SHIFT = 4 -SQ_TT_WTYPE_INCLUDE_LS_SHIFT = 5 -SQ_TT_WTYPE_INCLUDE_CS_SHIFT = 6 -SQ_TT_WTYPE_INCLUDE_SHIFT = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_WTYPE_INCLUDE' -SQ_TT_WTYPE_INCLUDE__enumvalues = { - 1: 'SQ_TT_WTYPE_INCLUDE_PS_BIT', - 2: 'SQ_TT_WTYPE_INCLUDE_VS_BIT', - 4: 'SQ_TT_WTYPE_INCLUDE_GS_BIT', - 8: 'SQ_TT_WTYPE_INCLUDE_ES_BIT', - 16: 'SQ_TT_WTYPE_INCLUDE_HS_BIT', - 32: 'SQ_TT_WTYPE_INCLUDE_LS_BIT', - 64: 'SQ_TT_WTYPE_INCLUDE_CS_BIT', -} -SQ_TT_WTYPE_INCLUDE_PS_BIT = 1 -SQ_TT_WTYPE_INCLUDE_VS_BIT = 2 -SQ_TT_WTYPE_INCLUDE_GS_BIT = 4 -SQ_TT_WTYPE_INCLUDE_ES_BIT = 8 -SQ_TT_WTYPE_INCLUDE_HS_BIT = 16 -SQ_TT_WTYPE_INCLUDE_LS_BIT = 32 -SQ_TT_WTYPE_INCLUDE_CS_BIT = 64 -SQ_TT_WTYPE_INCLUDE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_UTIL_TIMER' -SQ_TT_UTIL_TIMER__enumvalues = { - 0: 'SQ_TT_UTIL_TIMER_100_CLK', - 1: 'SQ_TT_UTIL_TIMER_250_CLK', -} -SQ_TT_UTIL_TIMER_100_CLK = 0 -SQ_TT_UTIL_TIMER_250_CLK = 1 -SQ_TT_UTIL_TIMER = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_WAVESTART_MODE' -SQ_TT_WAVESTART_MODE__enumvalues = { - 0: 'SQ_TT_WAVESTART_MODE_SHORT', - 1: 'SQ_TT_WAVESTART_MODE_ALLOC', - 2: 'SQ_TT_WAVESTART_MODE_PBB_ID', -} -SQ_TT_WAVESTART_MODE_SHORT = 0 -SQ_TT_WAVESTART_MODE_ALLOC = 1 -SQ_TT_WAVESTART_MODE_PBB_ID = 2 -SQ_TT_WAVESTART_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_RT_FREQ' -SQ_TT_RT_FREQ__enumvalues = { - 0: 'SQ_TT_RT_FREQ_NEVER', - 1: 'SQ_TT_RT_FREQ_1024_CLK', - 2: 'SQ_TT_RT_FREQ_4096_CLK', -} -SQ_TT_RT_FREQ_NEVER = 0 -SQ_TT_RT_FREQ_1024_CLK = 1 -SQ_TT_RT_FREQ_4096_CLK = 2 -SQ_TT_RT_FREQ = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WATCH_MODES' -SQ_WATCH_MODES__enumvalues = { - 0: 'SQ_WATCH_MODE_READ', - 1: 'SQ_WATCH_MODE_NONREAD', - 2: 'SQ_WATCH_MODE_ATOMIC', - 3: 'SQ_WATCH_MODE_ALL', -} -SQ_WATCH_MODE_READ = 0 -SQ_WATCH_MODE_NONREAD = 1 -SQ_WATCH_MODE_ATOMIC = 2 -SQ_WATCH_MODE_ALL = 3 -SQ_WATCH_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WAVE_SCHED_MODES' -SQ_WAVE_SCHED_MODES__enumvalues = { - 0: 'SQ_WAVE_SCHED_MODE_NORMAL', - 1: 'SQ_WAVE_SCHED_MODE_EXPERT', - 2: 'SQ_WAVE_SCHED_MODE_DISABLE_VA_VDST', -} -SQ_WAVE_SCHED_MODE_NORMAL = 0 -SQ_WAVE_SCHED_MODE_EXPERT = 1 -SQ_WAVE_SCHED_MODE_DISABLE_VA_VDST = 2 -SQ_WAVE_SCHED_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'CSDATA_TYPE' -CSDATA_TYPE__enumvalues = { - 0: 'CSDATA_TYPE_TG', - 1: 'CSDATA_TYPE_STATE', - 2: 'CSDATA_TYPE_EVENT', - 3: 'CSDATA_TYPE_PRIVATE', -} -CSDATA_TYPE_TG = 0 -CSDATA_TYPE_STATE = 1 -CSDATA_TYPE_EVENT = 2 -CSDATA_TYPE_PRIVATE = 3 -CSDATA_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CSCNTL_TYPE' -CSCNTL_TYPE__enumvalues = { - 0: 'CSCNTL_TYPE_TG', - 1: 'CSCNTL_TYPE_STATE', - 2: 'CSCNTL_TYPE_EVENT', - 3: 'CSCNTL_TYPE_PRIVATE', -} -CSCNTL_TYPE_TG = 0 -CSCNTL_TYPE_STATE = 1 -CSCNTL_TYPE_EVENT = 2 -CSCNTL_TYPE_PRIVATE = 3 -CSCNTL_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_OUT_PRIM_TYPE' -VGT_OUT_PRIM_TYPE__enumvalues = { - 0: 'VGT_OUT_POINT', - 1: 'VGT_OUT_LINE', - 2: 'VGT_OUT_TRI', - 3: 'VGT_OUT_RECT_V0', - 4: 'VGT_OUT_RECT_V1', - 5: 'VGT_OUT_RECT_V2', - 6: 'VGT_OUT_RECT_V3', - 7: 'VGT_OUT_2D_RECT', - 8: 'VGT_TE_QUAD', - 9: 'VGT_TE_PRIM_INDEX_LINE', - 10: 'VGT_TE_PRIM_INDEX_TRI', - 11: 'VGT_TE_PRIM_INDEX_QUAD', - 12: 'VGT_OUT_LINE_ADJ', - 13: 'VGT_OUT_TRI_ADJ', - 14: 'VGT_OUT_PATCH', -} -VGT_OUT_POINT = 0 -VGT_OUT_LINE = 1 -VGT_OUT_TRI = 2 -VGT_OUT_RECT_V0 = 3 -VGT_OUT_RECT_V1 = 4 -VGT_OUT_RECT_V2 = 5 -VGT_OUT_RECT_V3 = 6 -VGT_OUT_2D_RECT = 7 -VGT_TE_QUAD = 8 -VGT_TE_PRIM_INDEX_LINE = 9 -VGT_TE_PRIM_INDEX_TRI = 10 -VGT_TE_PRIM_INDEX_QUAD = 11 -VGT_OUT_LINE_ADJ = 12 -VGT_OUT_TRI_ADJ = 13 -VGT_OUT_PATCH = 14 -VGT_OUT_PRIM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DI_PRIM_TYPE' -VGT_DI_PRIM_TYPE__enumvalues = { - 0: 'DI_PT_NONE', - 1: 'DI_PT_POINTLIST', - 2: 'DI_PT_LINELIST', - 3: 'DI_PT_LINESTRIP', - 4: 'DI_PT_TRILIST', - 5: 'DI_PT_TRIFAN', - 6: 'DI_PT_TRISTRIP', - 7: 'DI_PT_2D_RECTANGLE', - 8: 'DI_PT_UNUSED_1', - 9: 'DI_PT_PATCH', - 10: 'DI_PT_LINELIST_ADJ', - 11: 'DI_PT_LINESTRIP_ADJ', - 12: 'DI_PT_TRILIST_ADJ', - 13: 'DI_PT_TRISTRIP_ADJ', - 14: 'DI_PT_UNUSED_3', - 15: 'DI_PT_UNUSED_4', - 16: 'DI_PT_TRI_WITH_WFLAGS', - 17: 'DI_PT_RECTLIST', - 18: 'DI_PT_LINELOOP', - 19: 'DI_PT_QUADLIST', - 20: 'DI_PT_QUADSTRIP', - 21: 'DI_PT_POLYGON', -} -DI_PT_NONE = 0 -DI_PT_POINTLIST = 1 -DI_PT_LINELIST = 2 -DI_PT_LINESTRIP = 3 -DI_PT_TRILIST = 4 -DI_PT_TRIFAN = 5 -DI_PT_TRISTRIP = 6 -DI_PT_2D_RECTANGLE = 7 -DI_PT_UNUSED_1 = 8 -DI_PT_PATCH = 9 -DI_PT_LINELIST_ADJ = 10 -DI_PT_LINESTRIP_ADJ = 11 -DI_PT_TRILIST_ADJ = 12 -DI_PT_TRISTRIP_ADJ = 13 -DI_PT_UNUSED_3 = 14 -DI_PT_UNUSED_4 = 15 -DI_PT_TRI_WITH_WFLAGS = 16 -DI_PT_RECTLIST = 17 -DI_PT_LINELOOP = 18 -DI_PT_QUADLIST = 19 -DI_PT_QUADSTRIP = 20 -DI_PT_POLYGON = 21 -VGT_DI_PRIM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DI_SOURCE_SELECT' -VGT_DI_SOURCE_SELECT__enumvalues = { - 0: 'DI_SRC_SEL_DMA', - 1: 'DI_SRC_SEL_IMMEDIATE', - 2: 'DI_SRC_SEL_AUTO_INDEX', - 3: 'DI_SRC_SEL_RESERVED', -} -DI_SRC_SEL_DMA = 0 -DI_SRC_SEL_IMMEDIATE = 1 -DI_SRC_SEL_AUTO_INDEX = 2 -DI_SRC_SEL_RESERVED = 3 -VGT_DI_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DI_MAJOR_MODE_SELECT' -VGT_DI_MAJOR_MODE_SELECT__enumvalues = { - 0: 'DI_MAJOR_MODE_0', - 1: 'DI_MAJOR_MODE_1', -} -DI_MAJOR_MODE_0 = 0 -DI_MAJOR_MODE_1 = 1 -VGT_DI_MAJOR_MODE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DI_INDEX_SIZE' -VGT_DI_INDEX_SIZE__enumvalues = { - 0: 'DI_INDEX_SIZE_16_BIT', - 1: 'DI_INDEX_SIZE_32_BIT', - 2: 'DI_INDEX_SIZE_8_BIT', -} -DI_INDEX_SIZE_16_BIT = 0 -DI_INDEX_SIZE_32_BIT = 1 -DI_INDEX_SIZE_8_BIT = 2 -VGT_DI_INDEX_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_EVENT_TYPE' -VGT_EVENT_TYPE__enumvalues = { - 0: 'Reserved_0x00', - 1: 'SAMPLE_STREAMOUTSTATS1', - 2: 'SAMPLE_STREAMOUTSTATS2', - 3: 'SAMPLE_STREAMOUTSTATS3', - 4: 'CACHE_FLUSH_TS', - 5: 'CONTEXT_DONE', - 6: 'CACHE_FLUSH', - 7: 'CS_PARTIAL_FLUSH', - 8: 'VGT_STREAMOUT_SYNC', - 9: 'SET_FE_ID', - 10: 'VGT_STREAMOUT_RESET', - 11: 'END_OF_PIPE_INCR_DE', - 12: 'END_OF_PIPE_IB_END', - 13: 'RST_PIX_CNT', - 14: 'BREAK_BATCH', - 15: 'VS_PARTIAL_FLUSH', - 16: 'PS_PARTIAL_FLUSH', - 17: 'FLUSH_HS_OUTPUT', - 18: 'FLUSH_DFSM', - 19: 'RESET_TO_LOWEST_VGT', - 20: 'CACHE_FLUSH_AND_INV_TS_EVENT', - 21: 'ZPASS_DONE', - 22: 'CACHE_FLUSH_AND_INV_EVENT', - 23: 'PERFCOUNTER_START', - 24: 'PERFCOUNTER_STOP', - 25: 'PIPELINESTAT_START', - 26: 'PIPELINESTAT_STOP', - 27: 'PERFCOUNTER_SAMPLE', - 28: 'FLUSH_ES_OUTPUT', - 29: 'BIN_CONF_OVERRIDE_CHECK', - 30: 'SAMPLE_PIPELINESTAT', - 31: 'SO_VGTSTREAMOUT_FLUSH', - 32: 'SAMPLE_STREAMOUTSTATS', - 33: 'RESET_VTX_CNT', - 34: 'BLOCK_CONTEXT_DONE', - 35: 'CS_CONTEXT_DONE', - 36: 'VGT_FLUSH', - 37: 'TGID_ROLLOVER', - 38: 'SQ_NON_EVENT', - 39: 'SC_SEND_DB_VPZ', - 40: 'BOTTOM_OF_PIPE_TS', - 41: 'FLUSH_SX_TS', - 42: 'DB_CACHE_FLUSH_AND_INV', - 43: 'FLUSH_AND_INV_DB_DATA_TS', - 44: 'FLUSH_AND_INV_DB_META', - 45: 'FLUSH_AND_INV_CB_DATA_TS', - 46: 'FLUSH_AND_INV_CB_META', - 47: 'CS_DONE', - 48: 'PS_DONE', - 49: 'FLUSH_AND_INV_CB_PIXEL_DATA', - 50: 'SX_CB_RAT_ACK_REQUEST', - 51: 'THREAD_TRACE_START', - 52: 'THREAD_TRACE_STOP', - 53: 'THREAD_TRACE_MARKER', - 54: 'THREAD_TRACE_DRAW', - 55: 'THREAD_TRACE_FINISH', - 56: 'PIXEL_PIPE_STAT_CONTROL', - 57: 'PIXEL_PIPE_STAT_DUMP', - 58: 'PIXEL_PIPE_STAT_RESET', - 59: 'CONTEXT_SUSPEND', - 60: 'OFFCHIP_HS_DEALLOC', - 61: 'ENABLE_NGG_PIPELINE', - 62: 'ENABLE_LEGACY_PIPELINE', - 63: 'DRAW_DONE', -} -Reserved_0x00 = 0 -SAMPLE_STREAMOUTSTATS1 = 1 -SAMPLE_STREAMOUTSTATS2 = 2 -SAMPLE_STREAMOUTSTATS3 = 3 -CACHE_FLUSH_TS = 4 -CONTEXT_DONE = 5 -CACHE_FLUSH = 6 -CS_PARTIAL_FLUSH = 7 -VGT_STREAMOUT_SYNC = 8 -SET_FE_ID = 9 -VGT_STREAMOUT_RESET = 10 -END_OF_PIPE_INCR_DE = 11 -END_OF_PIPE_IB_END = 12 -RST_PIX_CNT = 13 -BREAK_BATCH = 14 -VS_PARTIAL_FLUSH = 15 -PS_PARTIAL_FLUSH = 16 -FLUSH_HS_OUTPUT = 17 -FLUSH_DFSM = 18 -RESET_TO_LOWEST_VGT = 19 -CACHE_FLUSH_AND_INV_TS_EVENT = 20 -ZPASS_DONE = 21 -CACHE_FLUSH_AND_INV_EVENT = 22 -PERFCOUNTER_START = 23 -PERFCOUNTER_STOP = 24 -PIPELINESTAT_START = 25 -PIPELINESTAT_STOP = 26 -PERFCOUNTER_SAMPLE = 27 -FLUSH_ES_OUTPUT = 28 -BIN_CONF_OVERRIDE_CHECK = 29 -SAMPLE_PIPELINESTAT = 30 -SO_VGTSTREAMOUT_FLUSH = 31 -SAMPLE_STREAMOUTSTATS = 32 -RESET_VTX_CNT = 33 -BLOCK_CONTEXT_DONE = 34 -CS_CONTEXT_DONE = 35 -VGT_FLUSH = 36 -TGID_ROLLOVER = 37 -SQ_NON_EVENT = 38 -SC_SEND_DB_VPZ = 39 -BOTTOM_OF_PIPE_TS = 40 -FLUSH_SX_TS = 41 -DB_CACHE_FLUSH_AND_INV = 42 -FLUSH_AND_INV_DB_DATA_TS = 43 -FLUSH_AND_INV_DB_META = 44 -FLUSH_AND_INV_CB_DATA_TS = 45 -FLUSH_AND_INV_CB_META = 46 -CS_DONE = 47 -PS_DONE = 48 -FLUSH_AND_INV_CB_PIXEL_DATA = 49 -SX_CB_RAT_ACK_REQUEST = 50 -THREAD_TRACE_START = 51 -THREAD_TRACE_STOP = 52 -THREAD_TRACE_MARKER = 53 -THREAD_TRACE_DRAW = 54 -THREAD_TRACE_FINISH = 55 -PIXEL_PIPE_STAT_CONTROL = 56 -PIXEL_PIPE_STAT_DUMP = 57 -PIXEL_PIPE_STAT_RESET = 58 -CONTEXT_SUSPEND = 59 -OFFCHIP_HS_DEALLOC = 60 -ENABLE_NGG_PIPELINE = 61 -ENABLE_LEGACY_PIPELINE = 62 -DRAW_DONE = 63 -VGT_EVENT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DMA_SWAP_MODE' -VGT_DMA_SWAP_MODE__enumvalues = { - 0: 'VGT_DMA_SWAP_NONE', - 1: 'VGT_DMA_SWAP_16_BIT', - 2: 'VGT_DMA_SWAP_32_BIT', - 3: 'VGT_DMA_SWAP_WORD', -} -VGT_DMA_SWAP_NONE = 0 -VGT_DMA_SWAP_16_BIT = 1 -VGT_DMA_SWAP_32_BIT = 2 -VGT_DMA_SWAP_WORD = 3 -VGT_DMA_SWAP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_INDEX_TYPE_MODE' -VGT_INDEX_TYPE_MODE__enumvalues = { - 0: 'VGT_INDEX_16', - 1: 'VGT_INDEX_32', - 2: 'VGT_INDEX_8', -} -VGT_INDEX_16 = 0 -VGT_INDEX_32 = 1 -VGT_INDEX_8 = 2 -VGT_INDEX_TYPE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DMA_BUF_TYPE' -VGT_DMA_BUF_TYPE__enumvalues = { - 0: 'VGT_DMA_BUF_MEM', - 1: 'VGT_DMA_BUF_RING', - 2: 'VGT_DMA_BUF_SETUP', - 3: 'VGT_DMA_PTR_UPDATE', -} -VGT_DMA_BUF_MEM = 0 -VGT_DMA_BUF_RING = 1 -VGT_DMA_BUF_SETUP = 2 -VGT_DMA_PTR_UPDATE = 3 -VGT_DMA_BUF_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_OUTPATH_SELECT' -VGT_OUTPATH_SELECT__enumvalues = { - 0: 'VGT_OUTPATH_VTX_REUSE', - 1: 'VGT_OUTPATH_GS_BLOCK', - 2: 'VGT_OUTPATH_HS_BLOCK', - 3: 'VGT_OUTPATH_PRIM_GEN', - 4: 'VGT_OUTPATH_TE_PRIM_GEN', - 5: 'VGT_OUTPATH_TE_GS_BLOCK', - 6: 'VGT_OUTPATH_TE_OUTPUT', -} -VGT_OUTPATH_VTX_REUSE = 0 -VGT_OUTPATH_GS_BLOCK = 1 -VGT_OUTPATH_HS_BLOCK = 2 -VGT_OUTPATH_PRIM_GEN = 3 -VGT_OUTPATH_TE_PRIM_GEN = 4 -VGT_OUTPATH_TE_GS_BLOCK = 5 -VGT_OUTPATH_TE_OUTPUT = 6 -VGT_OUTPATH_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GRP_PRIM_TYPE' -VGT_GRP_PRIM_TYPE__enumvalues = { - 0: 'VGT_GRP_3D_POINT', - 1: 'VGT_GRP_3D_LINE', - 2: 'VGT_GRP_3D_TRI', - 3: 'VGT_GRP_3D_RECT', - 4: 'VGT_GRP_3D_QUAD', - 5: 'VGT_GRP_2D_COPY_RECT_V0', - 6: 'VGT_GRP_2D_COPY_RECT_V1', - 7: 'VGT_GRP_2D_COPY_RECT_V2', - 8: 'VGT_GRP_2D_COPY_RECT_V3', - 9: 'VGT_GRP_2D_FILL_RECT', - 10: 'VGT_GRP_2D_LINE', - 11: 'VGT_GRP_2D_TRI', - 12: 'VGT_GRP_PRIM_INDEX_LINE', - 13: 'VGT_GRP_PRIM_INDEX_TRI', - 14: 'VGT_GRP_PRIM_INDEX_QUAD', - 15: 'VGT_GRP_3D_LINE_ADJ', - 16: 'VGT_GRP_3D_TRI_ADJ', - 17: 'VGT_GRP_3D_PATCH', - 18: 'VGT_GRP_2D_RECT', -} -VGT_GRP_3D_POINT = 0 -VGT_GRP_3D_LINE = 1 -VGT_GRP_3D_TRI = 2 -VGT_GRP_3D_RECT = 3 -VGT_GRP_3D_QUAD = 4 -VGT_GRP_2D_COPY_RECT_V0 = 5 -VGT_GRP_2D_COPY_RECT_V1 = 6 -VGT_GRP_2D_COPY_RECT_V2 = 7 -VGT_GRP_2D_COPY_RECT_V3 = 8 -VGT_GRP_2D_FILL_RECT = 9 -VGT_GRP_2D_LINE = 10 -VGT_GRP_2D_TRI = 11 -VGT_GRP_PRIM_INDEX_LINE = 12 -VGT_GRP_PRIM_INDEX_TRI = 13 -VGT_GRP_PRIM_INDEX_QUAD = 14 -VGT_GRP_3D_LINE_ADJ = 15 -VGT_GRP_3D_TRI_ADJ = 16 -VGT_GRP_3D_PATCH = 17 -VGT_GRP_2D_RECT = 18 -VGT_GRP_PRIM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GRP_PRIM_ORDER' -VGT_GRP_PRIM_ORDER__enumvalues = { - 0: 'VGT_GRP_LIST', - 1: 'VGT_GRP_STRIP', - 2: 'VGT_GRP_FAN', - 3: 'VGT_GRP_LOOP', - 4: 'VGT_GRP_POLYGON', -} -VGT_GRP_LIST = 0 -VGT_GRP_STRIP = 1 -VGT_GRP_FAN = 2 -VGT_GRP_LOOP = 3 -VGT_GRP_POLYGON = 4 -VGT_GRP_PRIM_ORDER = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GROUP_CONV_SEL' -VGT_GROUP_CONV_SEL__enumvalues = { - 0: 'VGT_GRP_INDEX_16', - 1: 'VGT_GRP_INDEX_32', - 2: 'VGT_GRP_UINT_16', - 3: 'VGT_GRP_UINT_32', - 4: 'VGT_GRP_SINT_16', - 5: 'VGT_GRP_SINT_32', - 6: 'VGT_GRP_FLOAT_32', - 7: 'VGT_GRP_AUTO_PRIM', - 8: 'VGT_GRP_FIX_1_23_TO_FLOAT', -} -VGT_GRP_INDEX_16 = 0 -VGT_GRP_INDEX_32 = 1 -VGT_GRP_UINT_16 = 2 -VGT_GRP_UINT_32 = 3 -VGT_GRP_SINT_16 = 4 -VGT_GRP_SINT_32 = 5 -VGT_GRP_FLOAT_32 = 6 -VGT_GRP_AUTO_PRIM = 7 -VGT_GRP_FIX_1_23_TO_FLOAT = 8 -VGT_GROUP_CONV_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GS_MODE_TYPE' -VGT_GS_MODE_TYPE__enumvalues = { - 0: 'GS_OFF', - 1: 'GS_SCENARIO_A', - 2: 'GS_SCENARIO_B', - 3: 'GS_SCENARIO_G', - 4: 'GS_SCENARIO_C', - 5: 'SPRITE_EN', -} -GS_OFF = 0 -GS_SCENARIO_A = 1 -GS_SCENARIO_B = 2 -GS_SCENARIO_G = 3 -GS_SCENARIO_C = 4 -SPRITE_EN = 5 -VGT_GS_MODE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GS_CUT_MODE' -VGT_GS_CUT_MODE__enumvalues = { - 0: 'GS_CUT_1024', - 1: 'GS_CUT_512', - 2: 'GS_CUT_256', - 3: 'GS_CUT_128', -} -GS_CUT_1024 = 0 -GS_CUT_512 = 1 -GS_CUT_256 = 2 -GS_CUT_128 = 3 -VGT_GS_CUT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GS_OUTPRIM_TYPE' -VGT_GS_OUTPRIM_TYPE__enumvalues = { - 0: 'POINTLIST', - 1: 'LINESTRIP', - 2: 'TRISTRIP', - 3: 'RECTLIST', -} -POINTLIST = 0 -LINESTRIP = 1 -TRISTRIP = 2 -RECTLIST = 3 -VGT_GS_OUTPRIM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_CACHE_INVALID_MODE' -VGT_CACHE_INVALID_MODE__enumvalues = { - 0: 'VC_ONLY', - 1: 'TC_ONLY', - 2: 'VC_AND_TC', -} -VC_ONLY = 0 -TC_ONLY = 1 -VC_AND_TC = 2 -VGT_CACHE_INVALID_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_TESS_TYPE' -VGT_TESS_TYPE__enumvalues = { - 0: 'TESS_ISOLINE', - 1: 'TESS_TRIANGLE', - 2: 'TESS_QUAD', -} -TESS_ISOLINE = 0 -TESS_TRIANGLE = 1 -TESS_QUAD = 2 -VGT_TESS_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_TESS_PARTITION' -VGT_TESS_PARTITION__enumvalues = { - 0: 'PART_INTEGER', - 1: 'PART_POW2', - 2: 'PART_FRAC_ODD', - 3: 'PART_FRAC_EVEN', -} -PART_INTEGER = 0 -PART_POW2 = 1 -PART_FRAC_ODD = 2 -PART_FRAC_EVEN = 3 -VGT_TESS_PARTITION = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_TESS_TOPOLOGY' -VGT_TESS_TOPOLOGY__enumvalues = { - 0: 'OUTPUT_POINT', - 1: 'OUTPUT_LINE', - 2: 'OUTPUT_TRIANGLE_CW', - 3: 'OUTPUT_TRIANGLE_CCW', -} -OUTPUT_POINT = 0 -OUTPUT_LINE = 1 -OUTPUT_TRIANGLE_CW = 2 -OUTPUT_TRIANGLE_CCW = 3 -VGT_TESS_TOPOLOGY = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_RDREQ_POLICY' -VGT_RDREQ_POLICY__enumvalues = { - 0: 'VGT_POLICY_LRU', - 1: 'VGT_POLICY_STREAM', - 2: 'VGT_POLICY_BYPASS', -} -VGT_POLICY_LRU = 0 -VGT_POLICY_STREAM = 1 -VGT_POLICY_BYPASS = 2 -VGT_RDREQ_POLICY = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DIST_MODE' -VGT_DIST_MODE__enumvalues = { - 0: 'NO_DIST', - 1: 'PATCHES', - 2: 'DONUTS', - 3: 'TRAPEZOIDS', -} -NO_DIST = 0 -PATCHES = 1 -DONUTS = 2 -TRAPEZOIDS = 3 -VGT_DIST_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DETECT_ONE' -VGT_DETECT_ONE__enumvalues = { - 0: 'PRE_CLAMP_TF1', - 1: 'POST_CLAMP_TF1', - 2: 'DISABLE_TF1', -} -PRE_CLAMP_TF1 = 0 -POST_CLAMP_TF1 = 1 -DISABLE_TF1 = 2 -VGT_DETECT_ONE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DETECT_ZERO' -VGT_DETECT_ZERO__enumvalues = { - 0: 'PRE_CLAMP_TF0', - 1: 'POST_CLAMP_TF0', - 2: 'DISABLE_TF0', -} -PRE_CLAMP_TF0 = 0 -POST_CLAMP_TF0 = 1 -DISABLE_TF0 = 2 -VGT_DETECT_ZERO = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_LS_EN' -VGT_STAGES_LS_EN__enumvalues = { - 0: 'LS_STAGE_OFF', - 1: 'LS_STAGE_ON', - 2: 'CS_STAGE_ON', - 3: 'RESERVED_LS', -} -LS_STAGE_OFF = 0 -LS_STAGE_ON = 1 -CS_STAGE_ON = 2 -RESERVED_LS = 3 -VGT_STAGES_LS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_HS_EN' -VGT_STAGES_HS_EN__enumvalues = { - 0: 'HS_STAGE_OFF', - 1: 'HS_STAGE_ON', -} -HS_STAGE_OFF = 0 -HS_STAGE_ON = 1 -VGT_STAGES_HS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_ES_EN' -VGT_STAGES_ES_EN__enumvalues = { - 0: 'ES_STAGE_OFF', - 1: 'ES_STAGE_DS', - 2: 'ES_STAGE_REAL', - 3: 'RESERVED_ES', -} -ES_STAGE_OFF = 0 -ES_STAGE_DS = 1 -ES_STAGE_REAL = 2 -RESERVED_ES = 3 -VGT_STAGES_ES_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_GS_EN' -VGT_STAGES_GS_EN__enumvalues = { - 0: 'GS_STAGE_OFF', - 1: 'GS_STAGE_ON', -} -GS_STAGE_OFF = 0 -GS_STAGE_ON = 1 -VGT_STAGES_GS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_VS_EN' -VGT_STAGES_VS_EN__enumvalues = { - 0: 'VS_STAGE_REAL', - 1: 'VS_STAGE_DS', - 2: 'VS_STAGE_COPY_SHADER', - 3: 'RESERVED_VS', -} -VS_STAGE_REAL = 0 -VS_STAGE_DS = 1 -VS_STAGE_COPY_SHADER = 2 -RESERVED_VS = 3 -VGT_STAGES_VS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'GE_PERFCOUNT_SELECT' -GE_PERFCOUNT_SELECT__enumvalues = { - 0: 'ge_assembler_busy', - 1: 'ge_assembler_stalled', - 2: 'ge_cm_reading_stalled', - 3: 'ge_cm_stalled_by_gog', - 4: 'ge_cm_stalled_by_gsfetch_done', - 5: 'ge_dma_busy', - 6: 'ge_dma_lat_bin_0', - 7: 'ge_dma_lat_bin_1', - 8: 'ge_dma_lat_bin_2', - 9: 'ge_dma_lat_bin_3', - 10: 'ge_dma_lat_bin_4', - 11: 'ge_dma_lat_bin_5', - 12: 'ge_dma_lat_bin_6', - 13: 'ge_dma_lat_bin_7', - 14: 'ge_dma_return', - 15: 'ge_dma_utcl1_consecutive_retry_event', - 16: 'ge_dma_utcl1_request_event', - 17: 'ge_dma_utcl1_retry_event', - 18: 'ge_dma_utcl1_stall_event', - 19: 'ge_dma_utcl1_stall_utcl2_event', - 20: 'ge_dma_utcl1_translation_hit_event', - 21: 'ge_dma_utcl1_translation_miss_event', - 22: 'ge_dma_utcl2_stall_on_trans', - 23: 'ge_dma_utcl2_trans_ack', - 24: 'ge_dma_utcl2_trans_xnack', - 25: 'ge_ds_cache_hits', - 26: 'ge_ds_prims', - 27: 'ge_es_done', - 28: 'ge_es_done_latency', - 29: 'ge_es_flush', - 30: 'ge_es_ring_high_water_mark', - 31: 'ge_es_thread_groups', - 32: 'ge_esthread_stalled_es_rb_full', - 33: 'ge_esthread_stalled_spi_bp', - 34: 'ge_esvert_stalled_es_tbl', - 35: 'ge_esvert_stalled_gs_event', - 36: 'ge_esvert_stalled_gs_tbl', - 37: 'ge_esvert_stalled_gsprim', - 38: 'ge_gea_dma_starved', - 39: 'ge_gog_busy', - 40: 'ge_gog_out_indx_stalled', - 41: 'ge_gog_out_prim_stalled', - 42: 'ge_gog_vs_tbl_stalled', - 43: 'ge_gs_cache_hits', - 44: 'ge_gs_counters_avail_stalled', - 45: 'ge_gs_done', - 46: 'ge_gs_done_latency', - 47: 'ge_gs_event_stall', - 48: 'ge_gs_issue_rtr_stalled', - 49: 'ge_gs_rb_space_avail_stalled', - 50: 'ge_gs_ring_high_water_mark', - 51: 'ge_gsprim_stalled_es_tbl', - 52: 'ge_gsprim_stalled_esvert', - 53: 'ge_gsprim_stalled_gs_event', - 54: 'ge_gsprim_stalled_gs_tbl', - 55: 'ge_gsthread_stalled', - 56: 'ge_hs_done', - 57: 'ge_hs_done_latency', - 58: 'ge_hs_done_se0', - 59: 'ge_hs_done_se1', - 60: 'ge_hs_done_se2_reserved', - 61: 'ge_hs_done_se3_reserved', - 62: 'ge_hs_tfm_stall', - 63: 'ge_hs_tgs_active_high_water_mark', - 64: 'ge_hs_thread_groups', - 65: 'ge_inside_tf_bin_0', - 66: 'ge_inside_tf_bin_1', - 67: 'ge_inside_tf_bin_2', - 68: 'ge_inside_tf_bin_3', - 69: 'ge_inside_tf_bin_4', - 70: 'ge_inside_tf_bin_5', - 71: 'ge_inside_tf_bin_6', - 72: 'ge_inside_tf_bin_7', - 73: 'ge_inside_tf_bin_8', - 74: 'ge_ls_done', - 75: 'ge_ls_done_latency', - 76: 'ge_null_patch', - 77: 'ge_pa_clipp_eop', - 78: 'ge_pa_clipp_is_event', - 79: 'ge_pa_clipp_new_vtx_vect', - 80: 'ge_pa_clipp_null_prim', - 81: 'ge_pa_clipp_send', - 82: 'ge_pa_clipp_send_not_event', - 83: 'ge_pa_clipp_stalled', - 84: 'ge_pa_clipp_starved_busy', - 85: 'ge_pa_clipp_starved_idle', - 86: 'ge_pa_clipp_valid_prim', - 87: 'ge_pa_clips_send', - 88: 'ge_pa_clips_stalled', - 89: 'ge_pa_clipv_send', - 90: 'ge_pa_clipv_stalled', - 91: 'ge_rbiu_di_fifo_stalled', - 92: 'ge_rbiu_di_fifo_starved', - 93: 'ge_rbiu_dr_fifo_stalled', - 94: 'ge_rbiu_dr_fifo_starved', - 95: 'ge_reused_es_indices', - 96: 'ge_reused_vs_indices', - 97: 'ge_sclk_core_vld', - 98: 'ge_sclk_gs_vld', - 99: 'ge_sclk_input_vld', - 100: 'ge_sclk_leg_gs_arb_vld', - 101: 'ge_sclk_ngg_vld', - 102: 'ge_sclk_reg_vld', - 103: 'ge_sclk_te11_vld', - 104: 'ge_sclk_vr_vld', - 105: 'ge_sclk_wd_te11_vld', - 106: 'ge_spi_esvert_eov', - 107: 'ge_spi_esvert_stalled', - 108: 'ge_spi_esvert_starved_busy', - 109: 'ge_spi_esvert_valid', - 110: 'ge_spi_eswave_is_event', - 111: 'ge_spi_eswave_send', - 112: 'ge_spi_gsprim_cont', - 113: 'ge_spi_gsprim_eov', - 114: 'ge_spi_gsprim_stalled', - 115: 'ge_spi_gsprim_starved_busy', - 116: 'ge_spi_gsprim_starved_idle', - 117: 'ge_spi_gsprim_valid', - 118: 'ge_spi_gssubgrp_is_event', - 119: 'ge_spi_gssubgrp_send', - 120: 'ge_spi_gswave_is_event', - 121: 'ge_spi_gswave_send', - 122: 'ge_spi_hsvert_eov', - 123: 'ge_spi_hsvert_stalled', - 124: 'ge_spi_hsvert_starved_busy', - 125: 'ge_spi_hsvert_valid', - 126: 'ge_spi_hswave_is_event', - 127: 'ge_spi_hswave_send', - 128: 'ge_spi_lsvert_eov', - 129: 'ge_spi_lsvert_stalled', - 130: 'ge_spi_lsvert_starved_busy', - 131: 'ge_spi_lsvert_starved_idle', - 132: 'ge_spi_lsvert_valid', - 133: 'ge_spi_lswave_is_event', - 134: 'ge_spi_lswave_send', - 135: 'ge_spi_vsvert_eov', - 136: 'ge_spi_vsvert_send', - 137: 'ge_spi_vsvert_stalled', - 138: 'ge_spi_vsvert_starved_busy', - 139: 'ge_spi_vsvert_starved_idle', - 140: 'ge_spi_vswave_is_event', - 141: 'ge_spi_vswave_send', - 142: 'ge_starved_on_hs_done', - 143: 'ge_stat_busy', - 144: 'ge_stat_combined_busy', - 145: 'ge_stat_no_dma_busy', - 146: 'ge_strmout_stalled', - 147: 'ge_te11_busy', - 148: 'ge_te11_starved', - 149: 'ge_tfreq_lat_bin_0', - 150: 'ge_tfreq_lat_bin_1', - 151: 'ge_tfreq_lat_bin_2', - 152: 'ge_tfreq_lat_bin_3', - 153: 'ge_tfreq_lat_bin_4', - 154: 'ge_tfreq_lat_bin_5', - 155: 'ge_tfreq_lat_bin_6', - 156: 'ge_tfreq_lat_bin_7', - 157: 'ge_tfreq_utcl1_consecutive_retry_event', - 158: 'ge_tfreq_utcl1_request_event', - 159: 'ge_tfreq_utcl1_retry_event', - 160: 'ge_tfreq_utcl1_stall_event', - 161: 'ge_tfreq_utcl1_stall_utcl2_event', - 162: 'ge_tfreq_utcl1_translation_hit_event', - 163: 'ge_tfreq_utcl1_translation_miss_event', - 164: 'ge_tfreq_utcl2_stall_on_trans', - 165: 'ge_tfreq_utcl2_trans_ack', - 166: 'ge_tfreq_utcl2_trans_xnack', - 167: 'ge_vs_cache_hits', - 168: 'ge_vs_done', - 169: 'ge_vs_pc_stall', - 170: 'ge_vs_table_high_water_mark', - 171: 'ge_vs_thread_groups', - 172: 'ge_vsvert_api_send', - 173: 'ge_vsvert_ds_send', - 174: 'ge_wait_for_es_done_stalled', - 175: 'ge_waveid_stalled', -} -ge_assembler_busy = 0 -ge_assembler_stalled = 1 -ge_cm_reading_stalled = 2 -ge_cm_stalled_by_gog = 3 -ge_cm_stalled_by_gsfetch_done = 4 -ge_dma_busy = 5 -ge_dma_lat_bin_0 = 6 -ge_dma_lat_bin_1 = 7 -ge_dma_lat_bin_2 = 8 -ge_dma_lat_bin_3 = 9 -ge_dma_lat_bin_4 = 10 -ge_dma_lat_bin_5 = 11 -ge_dma_lat_bin_6 = 12 -ge_dma_lat_bin_7 = 13 -ge_dma_return = 14 -ge_dma_utcl1_consecutive_retry_event = 15 -ge_dma_utcl1_request_event = 16 -ge_dma_utcl1_retry_event = 17 -ge_dma_utcl1_stall_event = 18 -ge_dma_utcl1_stall_utcl2_event = 19 -ge_dma_utcl1_translation_hit_event = 20 -ge_dma_utcl1_translation_miss_event = 21 -ge_dma_utcl2_stall_on_trans = 22 -ge_dma_utcl2_trans_ack = 23 -ge_dma_utcl2_trans_xnack = 24 -ge_ds_cache_hits = 25 -ge_ds_prims = 26 -ge_es_done = 27 -ge_es_done_latency = 28 -ge_es_flush = 29 -ge_es_ring_high_water_mark = 30 -ge_es_thread_groups = 31 -ge_esthread_stalled_es_rb_full = 32 -ge_esthread_stalled_spi_bp = 33 -ge_esvert_stalled_es_tbl = 34 -ge_esvert_stalled_gs_event = 35 -ge_esvert_stalled_gs_tbl = 36 -ge_esvert_stalled_gsprim = 37 -ge_gea_dma_starved = 38 -ge_gog_busy = 39 -ge_gog_out_indx_stalled = 40 -ge_gog_out_prim_stalled = 41 -ge_gog_vs_tbl_stalled = 42 -ge_gs_cache_hits = 43 -ge_gs_counters_avail_stalled = 44 -ge_gs_done = 45 -ge_gs_done_latency = 46 -ge_gs_event_stall = 47 -ge_gs_issue_rtr_stalled = 48 -ge_gs_rb_space_avail_stalled = 49 -ge_gs_ring_high_water_mark = 50 -ge_gsprim_stalled_es_tbl = 51 -ge_gsprim_stalled_esvert = 52 -ge_gsprim_stalled_gs_event = 53 -ge_gsprim_stalled_gs_tbl = 54 -ge_gsthread_stalled = 55 -ge_hs_done = 56 -ge_hs_done_latency = 57 -ge_hs_done_se0 = 58 -ge_hs_done_se1 = 59 -ge_hs_done_se2_reserved = 60 -ge_hs_done_se3_reserved = 61 -ge_hs_tfm_stall = 62 -ge_hs_tgs_active_high_water_mark = 63 -ge_hs_thread_groups = 64 -ge_inside_tf_bin_0 = 65 -ge_inside_tf_bin_1 = 66 -ge_inside_tf_bin_2 = 67 -ge_inside_tf_bin_3 = 68 -ge_inside_tf_bin_4 = 69 -ge_inside_tf_bin_5 = 70 -ge_inside_tf_bin_6 = 71 -ge_inside_tf_bin_7 = 72 -ge_inside_tf_bin_8 = 73 -ge_ls_done = 74 -ge_ls_done_latency = 75 -ge_null_patch = 76 -ge_pa_clipp_eop = 77 -ge_pa_clipp_is_event = 78 -ge_pa_clipp_new_vtx_vect = 79 -ge_pa_clipp_null_prim = 80 -ge_pa_clipp_send = 81 -ge_pa_clipp_send_not_event = 82 -ge_pa_clipp_stalled = 83 -ge_pa_clipp_starved_busy = 84 -ge_pa_clipp_starved_idle = 85 -ge_pa_clipp_valid_prim = 86 -ge_pa_clips_send = 87 -ge_pa_clips_stalled = 88 -ge_pa_clipv_send = 89 -ge_pa_clipv_stalled = 90 -ge_rbiu_di_fifo_stalled = 91 -ge_rbiu_di_fifo_starved = 92 -ge_rbiu_dr_fifo_stalled = 93 -ge_rbiu_dr_fifo_starved = 94 -ge_reused_es_indices = 95 -ge_reused_vs_indices = 96 -ge_sclk_core_vld = 97 -ge_sclk_gs_vld = 98 -ge_sclk_input_vld = 99 -ge_sclk_leg_gs_arb_vld = 100 -ge_sclk_ngg_vld = 101 -ge_sclk_reg_vld = 102 -ge_sclk_te11_vld = 103 -ge_sclk_vr_vld = 104 -ge_sclk_wd_te11_vld = 105 -ge_spi_esvert_eov = 106 -ge_spi_esvert_stalled = 107 -ge_spi_esvert_starved_busy = 108 -ge_spi_esvert_valid = 109 -ge_spi_eswave_is_event = 110 -ge_spi_eswave_send = 111 -ge_spi_gsprim_cont = 112 -ge_spi_gsprim_eov = 113 -ge_spi_gsprim_stalled = 114 -ge_spi_gsprim_starved_busy = 115 -ge_spi_gsprim_starved_idle = 116 -ge_spi_gsprim_valid = 117 -ge_spi_gssubgrp_is_event = 118 -ge_spi_gssubgrp_send = 119 -ge_spi_gswave_is_event = 120 -ge_spi_gswave_send = 121 -ge_spi_hsvert_eov = 122 -ge_spi_hsvert_stalled = 123 -ge_spi_hsvert_starved_busy = 124 -ge_spi_hsvert_valid = 125 -ge_spi_hswave_is_event = 126 -ge_spi_hswave_send = 127 -ge_spi_lsvert_eov = 128 -ge_spi_lsvert_stalled = 129 -ge_spi_lsvert_starved_busy = 130 -ge_spi_lsvert_starved_idle = 131 -ge_spi_lsvert_valid = 132 -ge_spi_lswave_is_event = 133 -ge_spi_lswave_send = 134 -ge_spi_vsvert_eov = 135 -ge_spi_vsvert_send = 136 -ge_spi_vsvert_stalled = 137 -ge_spi_vsvert_starved_busy = 138 -ge_spi_vsvert_starved_idle = 139 -ge_spi_vswave_is_event = 140 -ge_spi_vswave_send = 141 -ge_starved_on_hs_done = 142 -ge_stat_busy = 143 -ge_stat_combined_busy = 144 -ge_stat_no_dma_busy = 145 -ge_strmout_stalled = 146 -ge_te11_busy = 147 -ge_te11_starved = 148 -ge_tfreq_lat_bin_0 = 149 -ge_tfreq_lat_bin_1 = 150 -ge_tfreq_lat_bin_2 = 151 -ge_tfreq_lat_bin_3 = 152 -ge_tfreq_lat_bin_4 = 153 -ge_tfreq_lat_bin_5 = 154 -ge_tfreq_lat_bin_6 = 155 -ge_tfreq_lat_bin_7 = 156 -ge_tfreq_utcl1_consecutive_retry_event = 157 -ge_tfreq_utcl1_request_event = 158 -ge_tfreq_utcl1_retry_event = 159 -ge_tfreq_utcl1_stall_event = 160 -ge_tfreq_utcl1_stall_utcl2_event = 161 -ge_tfreq_utcl1_translation_hit_event = 162 -ge_tfreq_utcl1_translation_miss_event = 163 -ge_tfreq_utcl2_stall_on_trans = 164 -ge_tfreq_utcl2_trans_ack = 165 -ge_tfreq_utcl2_trans_xnack = 166 -ge_vs_cache_hits = 167 -ge_vs_done = 168 -ge_vs_pc_stall = 169 -ge_vs_table_high_water_mark = 170 -ge_vs_thread_groups = 171 -ge_vsvert_api_send = 172 -ge_vsvert_ds_send = 173 -ge_wait_for_es_done_stalled = 174 -ge_waveid_stalled = 175 -GE_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'WD_IA_DRAW_TYPE' -WD_IA_DRAW_TYPE__enumvalues = { - 0: 'WD_IA_DRAW_TYPE_DI_MM0', - 1: 'WD_IA_DRAW_TYPE_REG_XFER', - 2: 'WD_IA_DRAW_TYPE_EVENT_INIT', - 3: 'WD_IA_DRAW_TYPE_EVENT_ADDR', - 4: 'WD_IA_DRAW_TYPE_MIN_INDX', - 5: 'WD_IA_DRAW_TYPE_MAX_INDX', - 6: 'WD_IA_DRAW_TYPE_INDX_OFF', - 7: 'WD_IA_DRAW_TYPE_IMM_DATA', -} -WD_IA_DRAW_TYPE_DI_MM0 = 0 -WD_IA_DRAW_TYPE_REG_XFER = 1 -WD_IA_DRAW_TYPE_EVENT_INIT = 2 -WD_IA_DRAW_TYPE_EVENT_ADDR = 3 -WD_IA_DRAW_TYPE_MIN_INDX = 4 -WD_IA_DRAW_TYPE_MAX_INDX = 5 -WD_IA_DRAW_TYPE_INDX_OFF = 6 -WD_IA_DRAW_TYPE_IMM_DATA = 7 -WD_IA_DRAW_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'WD_IA_DRAW_REG_XFER' -WD_IA_DRAW_REG_XFER__enumvalues = { - 0: 'WD_IA_DRAW_REG_XFER_IA_MULTI_VGT_PARAM', - 1: 'WD_IA_DRAW_REG_XFER_VGT_MULTI_PRIM_IB_RESET_EN', - 2: 'WD_IA_DRAW_REG_XFER_VGT_INSTANCE_BASE_ID', - 3: 'WD_IA_DRAW_REG_XFER_GE_CNTL', -} -WD_IA_DRAW_REG_XFER_IA_MULTI_VGT_PARAM = 0 -WD_IA_DRAW_REG_XFER_VGT_MULTI_PRIM_IB_RESET_EN = 1 -WD_IA_DRAW_REG_XFER_VGT_INSTANCE_BASE_ID = 2 -WD_IA_DRAW_REG_XFER_GE_CNTL = 3 -WD_IA_DRAW_REG_XFER = ctypes.c_uint32 # enum - -# values for enumeration 'WD_IA_DRAW_SOURCE' -WD_IA_DRAW_SOURCE__enumvalues = { - 0: 'WD_IA_DRAW_SOURCE_DMA', - 1: 'WD_IA_DRAW_SOURCE_IMMD', - 2: 'WD_IA_DRAW_SOURCE_AUTO', - 3: 'WD_IA_DRAW_SOURCE_OPAQ', -} -WD_IA_DRAW_SOURCE_DMA = 0 -WD_IA_DRAW_SOURCE_IMMD = 1 -WD_IA_DRAW_SOURCE_AUTO = 2 -WD_IA_DRAW_SOURCE_OPAQ = 3 -WD_IA_DRAW_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'GB_EDC_DED_MODE' -GB_EDC_DED_MODE__enumvalues = { - 0: 'GB_EDC_DED_MODE_LOG', - 1: 'GB_EDC_DED_MODE_HALT', - 2: 'GB_EDC_DED_MODE_INT_HALT', -} -GB_EDC_DED_MODE_LOG = 0 -GB_EDC_DED_MODE_HALT = 1 -GB_EDC_DED_MODE_INT_HALT = 2 -GB_EDC_DED_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CHA_PERF_SEL' -CHA_PERF_SEL__enumvalues = { - 0: 'CHA_PERF_SEL_BUSY', - 1: 'CHA_PERF_SEL_STALL_CHC0', - 2: 'CHA_PERF_SEL_STALL_CHC1', - 3: 'CHA_PERF_SEL_STALL_CHC2', - 4: 'CHA_PERF_SEL_STALL_CHC3', - 5: 'CHA_PERF_SEL_STALL_CHC4', - 6: 'CHA_PERF_SEL_REQUEST_CHC0', - 7: 'CHA_PERF_SEL_REQUEST_CHC1', - 8: 'CHA_PERF_SEL_REQUEST_CHC2', - 9: 'CHA_PERF_SEL_REQUEST_CHC3', - 10: 'CHA_PERF_SEL_REQUEST_CHC4', - 11: 'CHA_PERF_SEL_REQUEST_CHC5', - 12: 'CHA_PERF_SEL_MEM_32B_WDS_CHC0', - 13: 'CHA_PERF_SEL_MEM_32B_WDS_CHC1', - 14: 'CHA_PERF_SEL_MEM_32B_WDS_CHC2', - 15: 'CHA_PERF_SEL_MEM_32B_WDS_CHC3', - 16: 'CHA_PERF_SEL_MEM_32B_WDS_CHC4', - 17: 'CHA_PERF_SEL_IO_32B_WDS_CHC0', - 18: 'CHA_PERF_SEL_IO_32B_WDS_CHC1', - 19: 'CHA_PERF_SEL_IO_32B_WDS_CHC2', - 20: 'CHA_PERF_SEL_IO_32B_WDS_CHC3', - 21: 'CHA_PERF_SEL_IO_32B_WDS_CHC4', - 22: 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC0', - 23: 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC1', - 24: 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC2', - 25: 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC3', - 26: 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC4', - 27: 'CHA_PERF_SEL_IO_BURST_COUNT_CHC0', - 28: 'CHA_PERF_SEL_IO_BURST_COUNT_CHC1', - 29: 'CHA_PERF_SEL_IO_BURST_COUNT_CHC2', - 30: 'CHA_PERF_SEL_IO_BURST_COUNT_CHC3', - 31: 'CHA_PERF_SEL_IO_BURST_COUNT_CHC4', - 32: 'CHA_PERF_SEL_ARB_REQUESTS', - 33: 'CHA_PERF_SEL_REQ_INFLIGHT_LEVEL', - 34: 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC0', - 35: 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC1', - 36: 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC2', - 37: 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC3', - 38: 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC4', - 39: 'CHA_PERF_SEL_CYCLE', -} -CHA_PERF_SEL_BUSY = 0 -CHA_PERF_SEL_STALL_CHC0 = 1 -CHA_PERF_SEL_STALL_CHC1 = 2 -CHA_PERF_SEL_STALL_CHC2 = 3 -CHA_PERF_SEL_STALL_CHC3 = 4 -CHA_PERF_SEL_STALL_CHC4 = 5 -CHA_PERF_SEL_REQUEST_CHC0 = 6 -CHA_PERF_SEL_REQUEST_CHC1 = 7 -CHA_PERF_SEL_REQUEST_CHC2 = 8 -CHA_PERF_SEL_REQUEST_CHC3 = 9 -CHA_PERF_SEL_REQUEST_CHC4 = 10 -CHA_PERF_SEL_REQUEST_CHC5 = 11 -CHA_PERF_SEL_MEM_32B_WDS_CHC0 = 12 -CHA_PERF_SEL_MEM_32B_WDS_CHC1 = 13 -CHA_PERF_SEL_MEM_32B_WDS_CHC2 = 14 -CHA_PERF_SEL_MEM_32B_WDS_CHC3 = 15 -CHA_PERF_SEL_MEM_32B_WDS_CHC4 = 16 -CHA_PERF_SEL_IO_32B_WDS_CHC0 = 17 -CHA_PERF_SEL_IO_32B_WDS_CHC1 = 18 -CHA_PERF_SEL_IO_32B_WDS_CHC2 = 19 -CHA_PERF_SEL_IO_32B_WDS_CHC3 = 20 -CHA_PERF_SEL_IO_32B_WDS_CHC4 = 21 -CHA_PERF_SEL_MEM_BURST_COUNT_CHC0 = 22 -CHA_PERF_SEL_MEM_BURST_COUNT_CHC1 = 23 -CHA_PERF_SEL_MEM_BURST_COUNT_CHC2 = 24 -CHA_PERF_SEL_MEM_BURST_COUNT_CHC3 = 25 -CHA_PERF_SEL_MEM_BURST_COUNT_CHC4 = 26 -CHA_PERF_SEL_IO_BURST_COUNT_CHC0 = 27 -CHA_PERF_SEL_IO_BURST_COUNT_CHC1 = 28 -CHA_PERF_SEL_IO_BURST_COUNT_CHC2 = 29 -CHA_PERF_SEL_IO_BURST_COUNT_CHC3 = 30 -CHA_PERF_SEL_IO_BURST_COUNT_CHC4 = 31 -CHA_PERF_SEL_ARB_REQUESTS = 32 -CHA_PERF_SEL_REQ_INFLIGHT_LEVEL = 33 -CHA_PERF_SEL_STALL_RET_CONFLICT_CHC0 = 34 -CHA_PERF_SEL_STALL_RET_CONFLICT_CHC1 = 35 -CHA_PERF_SEL_STALL_RET_CONFLICT_CHC2 = 36 -CHA_PERF_SEL_STALL_RET_CONFLICT_CHC3 = 37 -CHA_PERF_SEL_STALL_RET_CONFLICT_CHC4 = 38 -CHA_PERF_SEL_CYCLE = 39 -CHA_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CHC_PERF_SEL' -CHC_PERF_SEL__enumvalues = { - 0: 'CHC_PERF_SEL_GATE_EN1', - 1: 'CHC_PERF_SEL_GATE_EN2', - 2: 'CHC_PERF_SEL_CORE_REG_SCLK_VLD', - 3: 'CHC_PERF_SEL_TA_CHC_ADDR_STARVE_CYCLES', - 4: 'CHC_PERF_SEL_TA_CHC_DATA_STARVE_CYCLES', - 5: 'CHC_PERF_SEL_CYCLE', - 6: 'CHC_PERF_SEL_REQ', -} -CHC_PERF_SEL_GATE_EN1 = 0 -CHC_PERF_SEL_GATE_EN2 = 1 -CHC_PERF_SEL_CORE_REG_SCLK_VLD = 2 -CHC_PERF_SEL_TA_CHC_ADDR_STARVE_CYCLES = 3 -CHC_PERF_SEL_TA_CHC_DATA_STARVE_CYCLES = 4 -CHC_PERF_SEL_CYCLE = 5 -CHC_PERF_SEL_REQ = 6 -CHC_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CHCG_PERF_SEL' -CHCG_PERF_SEL__enumvalues = { - 0: 'CHCG_PERF_SEL_GATE_EN1', - 1: 'CHCG_PERF_SEL_GATE_EN2', - 2: 'CHCG_PERF_SEL_CORE_REG_SCLK_VLD', - 3: 'CHCG_PERF_SEL_TA_CHC_ADDR_STARVE_CYCLES', - 4: 'CHCG_PERF_SEL_TA_CHC_DATA_STARVE_CYCLES', - 5: 'CHCG_PERF_SEL_CYCLE', - 6: 'CHCG_PERF_SEL_REQ', -} -CHCG_PERF_SEL_GATE_EN1 = 0 -CHCG_PERF_SEL_GATE_EN2 = 1 -CHCG_PERF_SEL_CORE_REG_SCLK_VLD = 2 -CHCG_PERF_SEL_TA_CHC_ADDR_STARVE_CYCLES = 3 -CHCG_PERF_SEL_TA_CHC_DATA_STARVE_CYCLES = 4 -CHCG_PERF_SEL_CYCLE = 5 -CHCG_PERF_SEL_REQ = 6 -CHCG_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GL1A_PERF_SEL' -GL1A_PERF_SEL__enumvalues = { - 0: 'GL1A_PERF_SEL_BUSY', - 1: 'GL1A_PERF_SEL_STALL_GL1C0', - 2: 'GL1A_PERF_SEL_STALL_GL1C1', - 3: 'GL1A_PERF_SEL_STALL_GL1C2', - 4: 'GL1A_PERF_SEL_STALL_GL1C3', - 5: 'GL1A_PERF_SEL_STALL_GL1C4', - 6: 'GL1A_PERF_SEL_REQUEST_GL1C0', - 7: 'GL1A_PERF_SEL_REQUEST_GL1C1', - 8: 'GL1A_PERF_SEL_REQUEST_GL1C2', - 9: 'GL1A_PERF_SEL_REQUEST_GL1C3', - 10: 'GL1A_PERF_SEL_REQUEST_GL1C4', - 11: 'GL1A_PERF_SEL_MEM_32B_WDS_GL1C0', - 12: 'GL1A_PERF_SEL_MEM_32B_WDS_GL1C1', - 13: 'GL1A_PERF_SEL_MEM_32B_WDS_GL1C2', - 14: 'GL1A_PERF_SEL_MEM_32B_WDS_GL1C3', - 15: 'GL1A_PERF_SEL_MEM_32B_WDS_GL1C4', - 16: 'GL1A_PERF_SEL_IO_32B_WDS_GL1C0', - 17: 'GL1A_PERF_SEL_IO_32B_WDS_GL1C1', - 18: 'GL1A_PERF_SEL_IO_32B_WDS_GL1C2', - 19: 'GL1A_PERF_SEL_IO_32B_WDS_GL1C3', - 20: 'GL1A_PERF_SEL_IO_32B_WDS_GL1C4', - 21: 'GL1A_PERF_SEL_MEM_BURST_COUNT_GL1C0', - 22: 'GL1A_PERF_SEL_MEM_BURST_COUNT_GL1C1', - 23: 'GL1A_PERF_SEL_MEM_BURST_COUNT_GL1C2', - 24: 'GL1A_PERF_SEL_MEM_BURST_COUNT_GL1C3', - 25: 'GL1A_PERF_SEL_MEM_BURST_COUNT_GL1C4', - 26: 'GL1A_PERF_SEL_IO_BURST_COUNT_GL1C0', - 27: 'GL1A_PERF_SEL_IO_BURST_COUNT_GL1C1', - 28: 'GL1A_PERF_SEL_IO_BURST_COUNT_GL1C2', - 29: 'GL1A_PERF_SEL_IO_BURST_COUNT_GL1C3', - 30: 'GL1A_PERF_SEL_IO_BURST_COUNT_GL1C4', - 31: 'GL1A_PERF_SEL_ARB_REQUESTS', - 32: 'GL1A_PERF_SEL_REQ_INFLIGHT_LEVEL', - 33: 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C0', - 34: 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C1', - 35: 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C2', - 36: 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C3', - 37: 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C4', - 38: 'GL1A_PERF_SEL_CYCLE', -} -GL1A_PERF_SEL_BUSY = 0 -GL1A_PERF_SEL_STALL_GL1C0 = 1 -GL1A_PERF_SEL_STALL_GL1C1 = 2 -GL1A_PERF_SEL_STALL_GL1C2 = 3 -GL1A_PERF_SEL_STALL_GL1C3 = 4 -GL1A_PERF_SEL_STALL_GL1C4 = 5 -GL1A_PERF_SEL_REQUEST_GL1C0 = 6 -GL1A_PERF_SEL_REQUEST_GL1C1 = 7 -GL1A_PERF_SEL_REQUEST_GL1C2 = 8 -GL1A_PERF_SEL_REQUEST_GL1C3 = 9 -GL1A_PERF_SEL_REQUEST_GL1C4 = 10 -GL1A_PERF_SEL_MEM_32B_WDS_GL1C0 = 11 -GL1A_PERF_SEL_MEM_32B_WDS_GL1C1 = 12 -GL1A_PERF_SEL_MEM_32B_WDS_GL1C2 = 13 -GL1A_PERF_SEL_MEM_32B_WDS_GL1C3 = 14 -GL1A_PERF_SEL_MEM_32B_WDS_GL1C4 = 15 -GL1A_PERF_SEL_IO_32B_WDS_GL1C0 = 16 -GL1A_PERF_SEL_IO_32B_WDS_GL1C1 = 17 -GL1A_PERF_SEL_IO_32B_WDS_GL1C2 = 18 -GL1A_PERF_SEL_IO_32B_WDS_GL1C3 = 19 -GL1A_PERF_SEL_IO_32B_WDS_GL1C4 = 20 -GL1A_PERF_SEL_MEM_BURST_COUNT_GL1C0 = 21 -GL1A_PERF_SEL_MEM_BURST_COUNT_GL1C1 = 22 -GL1A_PERF_SEL_MEM_BURST_COUNT_GL1C2 = 23 -GL1A_PERF_SEL_MEM_BURST_COUNT_GL1C3 = 24 -GL1A_PERF_SEL_MEM_BURST_COUNT_GL1C4 = 25 -GL1A_PERF_SEL_IO_BURST_COUNT_GL1C0 = 26 -GL1A_PERF_SEL_IO_BURST_COUNT_GL1C1 = 27 -GL1A_PERF_SEL_IO_BURST_COUNT_GL1C2 = 28 -GL1A_PERF_SEL_IO_BURST_COUNT_GL1C3 = 29 -GL1A_PERF_SEL_IO_BURST_COUNT_GL1C4 = 30 -GL1A_PERF_SEL_ARB_REQUESTS = 31 -GL1A_PERF_SEL_REQ_INFLIGHT_LEVEL = 32 -GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C0 = 33 -GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C1 = 34 -GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C2 = 35 -GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C3 = 36 -GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C4 = 37 -GL1A_PERF_SEL_CYCLE = 38 -GL1A_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GL1C_PERF_SEL' -GL1C_PERF_SEL__enumvalues = { - 0: 'GL1C_PERF_SEL_GATE_EN1', - 1: 'GL1C_PERF_SEL_GATE_EN2', - 2: 'GL1C_PERF_SEL_CORE_REG_SCLK_VLD', - 3: 'GL1C_PERF_SEL_TA_GL1C_ADDR_STARVE_CYCLES', - 4: 'GL1C_PERF_SEL_TA_GL1C_DATA_STARVE_CYCLES', - 5: 'GL1C_PERF_SEL_CYCLE', - 6: 'GL1C_PERF_SEL_REQ', -} -GL1C_PERF_SEL_GATE_EN1 = 0 -GL1C_PERF_SEL_GATE_EN2 = 1 -GL1C_PERF_SEL_CORE_REG_SCLK_VLD = 2 -GL1C_PERF_SEL_TA_GL1C_ADDR_STARVE_CYCLES = 3 -GL1C_PERF_SEL_TA_GL1C_DATA_STARVE_CYCLES = 4 -GL1C_PERF_SEL_CYCLE = 5 -GL1C_PERF_SEL_REQ = 6 -GL1C_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GL1CG_PERF_SEL' -GL1CG_PERF_SEL__enumvalues = { - 0: 'GL1CG_PERF_SEL_GATE_EN1', - 1: 'GL1CG_PERF_SEL_GATE_EN2', - 2: 'GL1CG_PERF_SEL_CORE_REG_SCLK_VLD', - 3: 'GL1CG_PERF_SEL_TA_GL1C_ADDR_STARVE_CYCLES', - 4: 'GL1CG_PERF_SEL_TA_GL1C_DATA_STARVE_CYCLES', - 5: 'GL1CG_PERF_SEL_CYCLE', - 6: 'GL1CG_PERF_SEL_REQ', -} -GL1CG_PERF_SEL_GATE_EN1 = 0 -GL1CG_PERF_SEL_GATE_EN2 = 1 -GL1CG_PERF_SEL_CORE_REG_SCLK_VLD = 2 -GL1CG_PERF_SEL_TA_GL1C_ADDR_STARVE_CYCLES = 3 -GL1CG_PERF_SEL_TA_GL1C_DATA_STARVE_CYCLES = 4 -GL1CG_PERF_SEL_CYCLE = 5 -GL1CG_PERF_SEL_REQ = 6 -GL1CG_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TA_TC_REQ_MODES' -TA_TC_REQ_MODES__enumvalues = { - 0: 'TA_TC_REQ_MODE_BORDER', - 1: 'TA_TC_REQ_MODE_TEX2', - 2: 'TA_TC_REQ_MODE_TEX1', - 3: 'TA_TC_REQ_MODE_TEX0', - 4: 'TA_TC_REQ_MODE_NORMAL', - 5: 'TA_TC_REQ_MODE_DWORD', - 6: 'TA_TC_REQ_MODE_BYTE', - 7: 'TA_TC_REQ_MODE_BYTE_NV', -} -TA_TC_REQ_MODE_BORDER = 0 -TA_TC_REQ_MODE_TEX2 = 1 -TA_TC_REQ_MODE_TEX1 = 2 -TA_TC_REQ_MODE_TEX0 = 3 -TA_TC_REQ_MODE_NORMAL = 4 -TA_TC_REQ_MODE_DWORD = 5 -TA_TC_REQ_MODE_BYTE = 6 -TA_TC_REQ_MODE_BYTE_NV = 7 -TA_TC_REQ_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'TA_TC_ADDR_MODES' -TA_TC_ADDR_MODES__enumvalues = { - 0: 'TA_TC_ADDR_MODE_DEFAULT', - 1: 'TA_TC_ADDR_MODE_COMP0', - 2: 'TA_TC_ADDR_MODE_COMP1', - 3: 'TA_TC_ADDR_MODE_COMP2', - 4: 'TA_TC_ADDR_MODE_COMP3', - 5: 'TA_TC_ADDR_MODE_UNALIGNED', - 6: 'TA_TC_ADDR_MODE_BORDER_COLOR', -} -TA_TC_ADDR_MODE_DEFAULT = 0 -TA_TC_ADDR_MODE_COMP0 = 1 -TA_TC_ADDR_MODE_COMP1 = 2 -TA_TC_ADDR_MODE_COMP2 = 3 -TA_TC_ADDR_MODE_COMP3 = 4 -TA_TC_ADDR_MODE_UNALIGNED = 5 -TA_TC_ADDR_MODE_BORDER_COLOR = 6 -TA_TC_ADDR_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'TA_PERFCOUNT_SEL' -TA_PERFCOUNT_SEL__enumvalues = { - 0: 'TA_PERF_SEL_NULL', - 1: 'TA_PERF_SEL_sh_fifo_busy', - 2: 'TA_PERF_SEL_sh_fifo_cmd_busy', - 3: 'TA_PERF_SEL_sh_fifo_addr_busy', - 4: 'TA_PERF_SEL_sh_fifo_data_busy', - 5: 'TA_PERF_SEL_sh_fifo_data_sfifo_busy', - 6: 'TA_PERF_SEL_sh_fifo_data_tfifo_busy', - 7: 'TA_PERF_SEL_gradient_busy', - 8: 'TA_PERF_SEL_gradient_fifo_busy', - 9: 'TA_PERF_SEL_lod_busy', - 10: 'TA_PERF_SEL_lod_fifo_busy', - 11: 'TA_PERF_SEL_addresser_busy', - 12: 'TA_PERF_SEL_addresser_fifo_busy', - 13: 'TA_PERF_SEL_aligner_busy', - 14: 'TA_PERF_SEL_write_path_busy', - 15: 'TA_PERF_SEL_ta_busy', - 16: 'TA_PERF_SEL_sq_ta_cmd_cycles', - 17: 'TA_PERF_SEL_sp_ta_addr_cycles', - 18: 'TA_PERF_SEL_sp_ta_data_cycles', - 19: 'TA_PERF_SEL_ta_fa_data_state_cycles', - 20: 'TA_PERF_SEL_sh_fifo_addr_waiting_on_cmd_cycles', - 21: 'TA_PERF_SEL_sh_fifo_cmd_waiting_on_addr_cycles', - 22: 'TA_PERF_SEL_sh_fifo_addr_starved_while_busy_cycles', - 23: 'TA_PERF_SEL_sh_fifo_cmd_starved_while_busy_cycles', - 24: 'TA_PERF_SEL_sh_fifo_data_waiting_on_data_state_cycles', - 25: 'TA_PERF_SEL_sh_fifo_data_state_waiting_on_data_cycles', - 26: 'TA_PERF_SEL_sh_fifo_data_starved_while_busy_cycles', - 27: 'TA_PERF_SEL_sh_fifo_data_state_starved_while_busy_cycles', - 28: 'TA_PERF_SEL_ta_sh_fifo_starved', - 29: 'TA_PERF_SEL_RESERVED_29', - 30: 'TA_PERF_SEL_sh_fifo_addr_cycles', - 31: 'TA_PERF_SEL_sh_fifo_data_cycles', - 32: 'TA_PERF_SEL_total_wavefronts', - 33: 'TA_PERF_SEL_gradient_cycles', - 34: 'TA_PERF_SEL_walker_cycles', - 35: 'TA_PERF_SEL_aligner_cycles', - 36: 'TA_PERF_SEL_image_wavefronts', - 37: 'TA_PERF_SEL_image_read_wavefronts', - 38: 'TA_PERF_SEL_image_write_wavefronts', - 39: 'TA_PERF_SEL_image_atomic_wavefronts', - 40: 'TA_PERF_SEL_image_total_cycles', - 41: 'TA_PERF_SEL_RESERVED_41', - 42: 'TA_PERF_SEL_RESERVED_42', - 43: 'TA_PERF_SEL_RESERVED_43', - 44: 'TA_PERF_SEL_buffer_wavefronts', - 45: 'TA_PERF_SEL_buffer_read_wavefronts', - 46: 'TA_PERF_SEL_buffer_write_wavefronts', - 47: 'TA_PERF_SEL_buffer_atomic_wavefronts', - 48: 'TA_PERF_SEL_buffer_coalescable_wavefronts', - 49: 'TA_PERF_SEL_buffer_total_cycles', - 50: 'TA_PERF_SEL_buffer_coalescable_addr_multicycled_cycles', - 51: 'TA_PERF_SEL_buffer_coalescable_clamp_16kdword_multicycled_cycles', - 52: 'TA_PERF_SEL_buffer_coalesced_read_cycles', - 53: 'TA_PERF_SEL_buffer_coalesced_write_cycles', - 54: 'TA_PERF_SEL_addr_stalled_by_tc_cycles', - 55: 'TA_PERF_SEL_addr_stalled_by_td_cycles', - 56: 'TA_PERF_SEL_data_stalled_by_tc_cycles', - 57: 'TA_PERF_SEL_addresser_stalled_by_aligner_only_cycles', - 58: 'TA_PERF_SEL_addresser_stalled_cycles', - 59: 'TA_PERF_SEL_aniso_stalled_by_addresser_only_cycles', - 60: 'TA_PERF_SEL_aniso_stalled_cycles', - 61: 'TA_PERF_SEL_deriv_stalled_by_aniso_only_cycles', - 62: 'TA_PERF_SEL_deriv_stalled_cycles', - 63: 'TA_PERF_SEL_aniso_gt1_cycle_quads', - 64: 'TA_PERF_SEL_color_1_cycle_pixels', - 65: 'TA_PERF_SEL_color_2_cycle_pixels', - 66: 'TA_PERF_SEL_color_3_cycle_pixels', - 67: 'TA_PERF_SEL_color_4_cycle_pixels', - 68: 'TA_PERF_SEL_mip_1_cycle_pixels', - 69: 'TA_PERF_SEL_mip_2_cycle_pixels', - 70: 'TA_PERF_SEL_vol_1_cycle_pixels', - 71: 'TA_PERF_SEL_vol_2_cycle_pixels', - 72: 'TA_PERF_SEL_bilin_point_1_cycle_pixels', - 73: 'TA_PERF_SEL_mipmap_lod_0_samples', - 74: 'TA_PERF_SEL_mipmap_lod_1_samples', - 75: 'TA_PERF_SEL_mipmap_lod_2_samples', - 76: 'TA_PERF_SEL_mipmap_lod_3_samples', - 77: 'TA_PERF_SEL_mipmap_lod_4_samples', - 78: 'TA_PERF_SEL_mipmap_lod_5_samples', - 79: 'TA_PERF_SEL_mipmap_lod_6_samples', - 80: 'TA_PERF_SEL_mipmap_lod_7_samples', - 81: 'TA_PERF_SEL_mipmap_lod_8_samples', - 82: 'TA_PERF_SEL_mipmap_lod_9_samples', - 83: 'TA_PERF_SEL_mipmap_lod_10_samples', - 84: 'TA_PERF_SEL_mipmap_lod_11_samples', - 85: 'TA_PERF_SEL_mipmap_lod_12_samples', - 86: 'TA_PERF_SEL_mipmap_lod_13_samples', - 87: 'TA_PERF_SEL_mipmap_lod_14_samples', - 88: 'TA_PERF_SEL_mipmap_invalid_samples', - 89: 'TA_PERF_SEL_aniso_1_cycle_quads', - 90: 'TA_PERF_SEL_aniso_2_cycle_quads', - 91: 'TA_PERF_SEL_aniso_4_cycle_quads', - 92: 'TA_PERF_SEL_aniso_6_cycle_quads', - 93: 'TA_PERF_SEL_aniso_8_cycle_quads', - 94: 'TA_PERF_SEL_aniso_10_cycle_quads', - 95: 'TA_PERF_SEL_aniso_12_cycle_quads', - 96: 'TA_PERF_SEL_aniso_14_cycle_quads', - 97: 'TA_PERF_SEL_aniso_16_cycle_quads', - 98: 'TA_PERF_SEL_write_path_input_cycles', - 99: 'TA_PERF_SEL_write_path_output_cycles', - 100: 'TA_PERF_SEL_flat_wavefronts', - 101: 'TA_PERF_SEL_flat_read_wavefronts', - 102: 'TA_PERF_SEL_flat_write_wavefronts', - 103: 'TA_PERF_SEL_flat_atomic_wavefronts', - 104: 'TA_PERF_SEL_flat_coalesceable_wavefronts', - 105: 'TA_PERF_SEL_reg_sclk_vld', - 106: 'TA_PERF_SEL_local_cg_dyn_sclk_grp0_en', - 107: 'TA_PERF_SEL_local_cg_dyn_sclk_grp1_en', - 108: 'TA_PERF_SEL_local_cg_dyn_sclk_grp1_mems_en', - 109: 'TA_PERF_SEL_local_cg_dyn_sclk_grp4_en', - 110: 'TA_PERF_SEL_local_cg_dyn_sclk_grp5_en', - 111: 'TA_PERF_SEL_xnack_on_phase0', - 112: 'TA_PERF_SEL_xnack_on_phase1', - 113: 'TA_PERF_SEL_xnack_on_phase2', - 114: 'TA_PERF_SEL_xnack_on_phase3', - 115: 'TA_PERF_SEL_first_xnack_on_phase0', - 116: 'TA_PERF_SEL_first_xnack_on_phase1', - 117: 'TA_PERF_SEL_first_xnack_on_phase2', - 118: 'TA_PERF_SEL_first_xnack_on_phase3', -} -TA_PERF_SEL_NULL = 0 -TA_PERF_SEL_sh_fifo_busy = 1 -TA_PERF_SEL_sh_fifo_cmd_busy = 2 -TA_PERF_SEL_sh_fifo_addr_busy = 3 -TA_PERF_SEL_sh_fifo_data_busy = 4 -TA_PERF_SEL_sh_fifo_data_sfifo_busy = 5 -TA_PERF_SEL_sh_fifo_data_tfifo_busy = 6 -TA_PERF_SEL_gradient_busy = 7 -TA_PERF_SEL_gradient_fifo_busy = 8 -TA_PERF_SEL_lod_busy = 9 -TA_PERF_SEL_lod_fifo_busy = 10 -TA_PERF_SEL_addresser_busy = 11 -TA_PERF_SEL_addresser_fifo_busy = 12 -TA_PERF_SEL_aligner_busy = 13 -TA_PERF_SEL_write_path_busy = 14 -TA_PERF_SEL_ta_busy = 15 -TA_PERF_SEL_sq_ta_cmd_cycles = 16 -TA_PERF_SEL_sp_ta_addr_cycles = 17 -TA_PERF_SEL_sp_ta_data_cycles = 18 -TA_PERF_SEL_ta_fa_data_state_cycles = 19 -TA_PERF_SEL_sh_fifo_addr_waiting_on_cmd_cycles = 20 -TA_PERF_SEL_sh_fifo_cmd_waiting_on_addr_cycles = 21 -TA_PERF_SEL_sh_fifo_addr_starved_while_busy_cycles = 22 -TA_PERF_SEL_sh_fifo_cmd_starved_while_busy_cycles = 23 -TA_PERF_SEL_sh_fifo_data_waiting_on_data_state_cycles = 24 -TA_PERF_SEL_sh_fifo_data_state_waiting_on_data_cycles = 25 -TA_PERF_SEL_sh_fifo_data_starved_while_busy_cycles = 26 -TA_PERF_SEL_sh_fifo_data_state_starved_while_busy_cycles = 27 -TA_PERF_SEL_ta_sh_fifo_starved = 28 -TA_PERF_SEL_RESERVED_29 = 29 -TA_PERF_SEL_sh_fifo_addr_cycles = 30 -TA_PERF_SEL_sh_fifo_data_cycles = 31 -TA_PERF_SEL_total_wavefronts = 32 -TA_PERF_SEL_gradient_cycles = 33 -TA_PERF_SEL_walker_cycles = 34 -TA_PERF_SEL_aligner_cycles = 35 -TA_PERF_SEL_image_wavefronts = 36 -TA_PERF_SEL_image_read_wavefronts = 37 -TA_PERF_SEL_image_write_wavefronts = 38 -TA_PERF_SEL_image_atomic_wavefronts = 39 -TA_PERF_SEL_image_total_cycles = 40 -TA_PERF_SEL_RESERVED_41 = 41 -TA_PERF_SEL_RESERVED_42 = 42 -TA_PERF_SEL_RESERVED_43 = 43 -TA_PERF_SEL_buffer_wavefronts = 44 -TA_PERF_SEL_buffer_read_wavefronts = 45 -TA_PERF_SEL_buffer_write_wavefronts = 46 -TA_PERF_SEL_buffer_atomic_wavefronts = 47 -TA_PERF_SEL_buffer_coalescable_wavefronts = 48 -TA_PERF_SEL_buffer_total_cycles = 49 -TA_PERF_SEL_buffer_coalescable_addr_multicycled_cycles = 50 -TA_PERF_SEL_buffer_coalescable_clamp_16kdword_multicycled_cycles = 51 -TA_PERF_SEL_buffer_coalesced_read_cycles = 52 -TA_PERF_SEL_buffer_coalesced_write_cycles = 53 -TA_PERF_SEL_addr_stalled_by_tc_cycles = 54 -TA_PERF_SEL_addr_stalled_by_td_cycles = 55 -TA_PERF_SEL_data_stalled_by_tc_cycles = 56 -TA_PERF_SEL_addresser_stalled_by_aligner_only_cycles = 57 -TA_PERF_SEL_addresser_stalled_cycles = 58 -TA_PERF_SEL_aniso_stalled_by_addresser_only_cycles = 59 -TA_PERF_SEL_aniso_stalled_cycles = 60 -TA_PERF_SEL_deriv_stalled_by_aniso_only_cycles = 61 -TA_PERF_SEL_deriv_stalled_cycles = 62 -TA_PERF_SEL_aniso_gt1_cycle_quads = 63 -TA_PERF_SEL_color_1_cycle_pixels = 64 -TA_PERF_SEL_color_2_cycle_pixels = 65 -TA_PERF_SEL_color_3_cycle_pixels = 66 -TA_PERF_SEL_color_4_cycle_pixels = 67 -TA_PERF_SEL_mip_1_cycle_pixels = 68 -TA_PERF_SEL_mip_2_cycle_pixels = 69 -TA_PERF_SEL_vol_1_cycle_pixels = 70 -TA_PERF_SEL_vol_2_cycle_pixels = 71 -TA_PERF_SEL_bilin_point_1_cycle_pixels = 72 -TA_PERF_SEL_mipmap_lod_0_samples = 73 -TA_PERF_SEL_mipmap_lod_1_samples = 74 -TA_PERF_SEL_mipmap_lod_2_samples = 75 -TA_PERF_SEL_mipmap_lod_3_samples = 76 -TA_PERF_SEL_mipmap_lod_4_samples = 77 -TA_PERF_SEL_mipmap_lod_5_samples = 78 -TA_PERF_SEL_mipmap_lod_6_samples = 79 -TA_PERF_SEL_mipmap_lod_7_samples = 80 -TA_PERF_SEL_mipmap_lod_8_samples = 81 -TA_PERF_SEL_mipmap_lod_9_samples = 82 -TA_PERF_SEL_mipmap_lod_10_samples = 83 -TA_PERF_SEL_mipmap_lod_11_samples = 84 -TA_PERF_SEL_mipmap_lod_12_samples = 85 -TA_PERF_SEL_mipmap_lod_13_samples = 86 -TA_PERF_SEL_mipmap_lod_14_samples = 87 -TA_PERF_SEL_mipmap_invalid_samples = 88 -TA_PERF_SEL_aniso_1_cycle_quads = 89 -TA_PERF_SEL_aniso_2_cycle_quads = 90 -TA_PERF_SEL_aniso_4_cycle_quads = 91 -TA_PERF_SEL_aniso_6_cycle_quads = 92 -TA_PERF_SEL_aniso_8_cycle_quads = 93 -TA_PERF_SEL_aniso_10_cycle_quads = 94 -TA_PERF_SEL_aniso_12_cycle_quads = 95 -TA_PERF_SEL_aniso_14_cycle_quads = 96 -TA_PERF_SEL_aniso_16_cycle_quads = 97 -TA_PERF_SEL_write_path_input_cycles = 98 -TA_PERF_SEL_write_path_output_cycles = 99 -TA_PERF_SEL_flat_wavefronts = 100 -TA_PERF_SEL_flat_read_wavefronts = 101 -TA_PERF_SEL_flat_write_wavefronts = 102 -TA_PERF_SEL_flat_atomic_wavefronts = 103 -TA_PERF_SEL_flat_coalesceable_wavefronts = 104 -TA_PERF_SEL_reg_sclk_vld = 105 -TA_PERF_SEL_local_cg_dyn_sclk_grp0_en = 106 -TA_PERF_SEL_local_cg_dyn_sclk_grp1_en = 107 -TA_PERF_SEL_local_cg_dyn_sclk_grp1_mems_en = 108 -TA_PERF_SEL_local_cg_dyn_sclk_grp4_en = 109 -TA_PERF_SEL_local_cg_dyn_sclk_grp5_en = 110 -TA_PERF_SEL_xnack_on_phase0 = 111 -TA_PERF_SEL_xnack_on_phase1 = 112 -TA_PERF_SEL_xnack_on_phase2 = 113 -TA_PERF_SEL_xnack_on_phase3 = 114 -TA_PERF_SEL_first_xnack_on_phase0 = 115 -TA_PERF_SEL_first_xnack_on_phase1 = 116 -TA_PERF_SEL_first_xnack_on_phase2 = 117 -TA_PERF_SEL_first_xnack_on_phase3 = 118 -TA_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TD_PERFCOUNT_SEL' -TD_PERFCOUNT_SEL__enumvalues = { - 0: 'TD_PERF_SEL_none', - 1: 'TD_PERF_SEL_td_busy', - 2: 'TD_PERF_SEL_input_busy', - 3: 'TD_PERF_SEL_sampler_lerp_busy', - 4: 'TD_PERF_SEL_sampler_out_busy', - 5: 'TD_PERF_SEL_nofilter_busy', - 6: 'TD_PERF_SEL_sampler_sclk_on_nofilter_sclk_off', - 7: 'TD_PERF_SEL_nofilter_sclk_on_sampler_sclk_off', - 8: 'TD_PERF_SEL_RESERVED_8', - 9: 'TD_PERF_SEL_core_state_rams_read', - 10: 'TD_PERF_SEL_weight_data_rams_read', - 11: 'TD_PERF_SEL_reference_data_rams_read', - 12: 'TD_PERF_SEL_tc_td_data_fifo_full', - 13: 'TD_PERF_SEL_tc_td_ram_fifo_full', - 14: 'TD_PERF_SEL_input_state_fifo_full', - 15: 'TD_PERF_SEL_ta_data_stall', - 16: 'TD_PERF_SEL_tc_data_stall', - 17: 'TD_PERF_SEL_tc_ram_stall', - 18: 'TD_PERF_SEL_lds_stall', - 19: 'TD_PERF_SEL_sampler_pkr_full', - 20: 'TD_PERF_SEL_nofilter_pkr_full', - 21: 'TD_PERF_SEL_RESERVED_21', - 22: 'TD_PERF_SEL_gather4_wavefront', - 23: 'TD_PERF_SEL_gather4h_wavefront', - 24: 'TD_PERF_SEL_gather4h_packed_wavefront', - 25: 'TD_PERF_SEL_gather8h_packed_wavefront', - 26: 'TD_PERF_SEL_sample_c_wavefront', - 27: 'TD_PERF_SEL_load_wavefront', - 28: 'TD_PERF_SEL_store_wavefront', - 29: 'TD_PERF_SEL_ldfptr_wavefront', - 30: 'TD_PERF_SEL_write_ack_wavefront', - 31: 'TD_PERF_SEL_d16_en_wavefront', - 32: 'TD_PERF_SEL_bypassLerp_wavefront', - 33: 'TD_PERF_SEL_min_max_filter_wavefront', - 34: 'TD_PERF_SEL_one_comp_wavefront', - 35: 'TD_PERF_SEL_two_comp_wavefront', - 36: 'TD_PERF_SEL_three_comp_wavefront', - 37: 'TD_PERF_SEL_four_comp_wavefront', - 38: 'TD_PERF_SEL_user_defined_border', - 39: 'TD_PERF_SEL_white_border', - 40: 'TD_PERF_SEL_opaque_black_border', - 41: 'TD_PERF_SEL_lod_warn_from_ta', - 42: 'TD_PERF_SEL_wavefront_dest_is_lds', - 43: 'TD_PERF_SEL_td_cycling_of_nofilter_instr', - 44: 'TD_PERF_SEL_tc_cycling_of_nofilter_instr', - 45: 'TD_PERF_SEL_out_of_order_instr', - 46: 'TD_PERF_SEL_total_num_instr', - 47: 'TD_PERF_SEL_mixmode_instruction', - 48: 'TD_PERF_SEL_mixmode_resource', - 49: 'TD_PERF_SEL_status_packet', - 50: 'TD_PERF_SEL_address_cmd_poison', - 51: 'TD_PERF_SEL_data_poison', - 52: 'TD_PERF_SEL_done_scoreboard_not_empty', - 53: 'TD_PERF_SEL_done_scoreboard_is_full', - 54: 'TD_PERF_SEL_done_scoreboard_bp_due_to_ooo', - 55: 'TD_PERF_SEL_done_scoreboard_bp_due_to_lds', - 56: 'TD_PERF_SEL_nofilter_formatters_turned_off', - 57: 'TD_PERF_SEL_nofilter_popcount_dmask_gt_num_comp_of_fmt', - 58: 'TD_PERF_SEL_nofilter_popcount_dmask_lt_num_comp_of_fmt', -} -TD_PERF_SEL_none = 0 -TD_PERF_SEL_td_busy = 1 -TD_PERF_SEL_input_busy = 2 -TD_PERF_SEL_sampler_lerp_busy = 3 -TD_PERF_SEL_sampler_out_busy = 4 -TD_PERF_SEL_nofilter_busy = 5 -TD_PERF_SEL_sampler_sclk_on_nofilter_sclk_off = 6 -TD_PERF_SEL_nofilter_sclk_on_sampler_sclk_off = 7 -TD_PERF_SEL_RESERVED_8 = 8 -TD_PERF_SEL_core_state_rams_read = 9 -TD_PERF_SEL_weight_data_rams_read = 10 -TD_PERF_SEL_reference_data_rams_read = 11 -TD_PERF_SEL_tc_td_data_fifo_full = 12 -TD_PERF_SEL_tc_td_ram_fifo_full = 13 -TD_PERF_SEL_input_state_fifo_full = 14 -TD_PERF_SEL_ta_data_stall = 15 -TD_PERF_SEL_tc_data_stall = 16 -TD_PERF_SEL_tc_ram_stall = 17 -TD_PERF_SEL_lds_stall = 18 -TD_PERF_SEL_sampler_pkr_full = 19 -TD_PERF_SEL_nofilter_pkr_full = 20 -TD_PERF_SEL_RESERVED_21 = 21 -TD_PERF_SEL_gather4_wavefront = 22 -TD_PERF_SEL_gather4h_wavefront = 23 -TD_PERF_SEL_gather4h_packed_wavefront = 24 -TD_PERF_SEL_gather8h_packed_wavefront = 25 -TD_PERF_SEL_sample_c_wavefront = 26 -TD_PERF_SEL_load_wavefront = 27 -TD_PERF_SEL_store_wavefront = 28 -TD_PERF_SEL_ldfptr_wavefront = 29 -TD_PERF_SEL_write_ack_wavefront = 30 -TD_PERF_SEL_d16_en_wavefront = 31 -TD_PERF_SEL_bypassLerp_wavefront = 32 -TD_PERF_SEL_min_max_filter_wavefront = 33 -TD_PERF_SEL_one_comp_wavefront = 34 -TD_PERF_SEL_two_comp_wavefront = 35 -TD_PERF_SEL_three_comp_wavefront = 36 -TD_PERF_SEL_four_comp_wavefront = 37 -TD_PERF_SEL_user_defined_border = 38 -TD_PERF_SEL_white_border = 39 -TD_PERF_SEL_opaque_black_border = 40 -TD_PERF_SEL_lod_warn_from_ta = 41 -TD_PERF_SEL_wavefront_dest_is_lds = 42 -TD_PERF_SEL_td_cycling_of_nofilter_instr = 43 -TD_PERF_SEL_tc_cycling_of_nofilter_instr = 44 -TD_PERF_SEL_out_of_order_instr = 45 -TD_PERF_SEL_total_num_instr = 46 -TD_PERF_SEL_mixmode_instruction = 47 -TD_PERF_SEL_mixmode_resource = 48 -TD_PERF_SEL_status_packet = 49 -TD_PERF_SEL_address_cmd_poison = 50 -TD_PERF_SEL_data_poison = 51 -TD_PERF_SEL_done_scoreboard_not_empty = 52 -TD_PERF_SEL_done_scoreboard_is_full = 53 -TD_PERF_SEL_done_scoreboard_bp_due_to_ooo = 54 -TD_PERF_SEL_done_scoreboard_bp_due_to_lds = 55 -TD_PERF_SEL_nofilter_formatters_turned_off = 56 -TD_PERF_SEL_nofilter_popcount_dmask_gt_num_comp_of_fmt = 57 -TD_PERF_SEL_nofilter_popcount_dmask_lt_num_comp_of_fmt = 58 -TD_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_PERFCOUNT_SELECT' -TCP_PERFCOUNT_SELECT__enumvalues = { - 0: 'TCP_PERF_SEL_GATE_EN1', - 1: 'TCP_PERF_SEL_GATE_EN2', - 2: 'TCP_PERF_SEL_CORE_REG_SCLK_VLD', - 3: 'TCP_PERF_SEL_TA_TCP_ADDR_STARVE_CYCLES', - 4: 'TCP_PERF_SEL_TA_TCP_DATA_STARVE_CYCLES', - 5: 'TCP_PERF_SEL_TCP_TA_ADDR_STALL_CYCLES', - 6: 'TCP_PERF_SEL_TCP_TA_DATA_STALL_CYCLES', - 7: 'TCP_PERF_SEL_TD_TCP_STALL_CYCLES', - 8: 'TCP_PERF_SEL_TCR_TCP_STALL_CYCLES', - 9: 'TCP_PERF_SEL_TCP_TCR_STARVE_CYCLES', - 10: 'TCP_PERF_SEL_LOD_STALL_CYCLES', - 11: 'TCP_PERF_SEL_READ_TAGCONFLICT_STALL_CYCLES', - 12: 'TCP_PERF_SEL_WRITE_TAGCONFLICT_STALL_CYCLES', - 13: 'TCP_PERF_SEL_ATOMIC_TAGCONFLICT_STALL_CYCLES', - 14: 'TCP_PERF_SEL_ALLOC_STALL_CYCLES', - 15: 'TCP_PERF_SEL_UNORDERED_MTYPE_STALL', - 16: 'TCP_PERF_SEL_LFIFO_STALL_CYCLES', - 17: 'TCP_PERF_SEL_RFIFO_STALL_CYCLES', - 18: 'TCP_PERF_SEL_TCR_RDRET_STALL', - 19: 'TCP_PERF_SEL_WRITE_CONFLICT_STALL', - 20: 'TCP_PERF_SEL_HOLE_READ_STALL', - 21: 'TCP_PERF_SEL_READCONFLICT_STALL_CYCLES', - 22: 'TCP_PERF_SEL_PENDING_STALL_CYCLES', - 23: 'TCP_PERF_SEL_READFIFO_STALL_CYCLES', - 24: 'TCP_PERF_SEL_POWER_STALL', - 25: 'TCP_PERF_SEL_UTCL0_SERIALIZATION_STALL', - 26: 'TCP_PERF_SEL_TC_TA_XNACK_STALL', - 27: 'TCP_PERF_SEL_TA_TCP_STATE_READ', - 28: 'TCP_PERF_SEL_TOTAL_ACCESSES', - 29: 'TCP_PERF_SEL_TOTAL_READ', - 30: 'TCP_PERF_SEL_TOTAL_NON_READ', - 31: 'TCP_PERF_SEL_TOTAL_WRITE', - 32: 'TCP_PERF_SEL_TOTAL_HIT_LRU_READ', - 33: 'TCP_PERF_SEL_TOTAL_MISS_LRU_READ', - 34: 'TCP_PERF_SEL_TOTAL_MISS_EVICT_READ', - 35: 'TCP_PERF_SEL_TOTAL_MISS_LRU_WRITE', - 36: 'TCP_PERF_SEL_TOTAL_MISS_EVICT_WRITE', - 37: 'TCP_PERF_SEL_TOTAL_ATOMIC_WITH_RET', - 38: 'TCP_PERF_SEL_TOTAL_ATOMIC_WITHOUT_RET', - 39: 'TCP_PERF_SEL_TOTAL_WBINVL1', - 40: 'TCP_PERF_SEL_CP_TCP_INVALIDATE', - 41: 'TCP_PERF_SEL_TOTAL_WRITEBACK_INVALIDATES', - 42: 'TCP_PERF_SEL_SHOOTDOWN', - 43: 'TCP_PERF_SEL_UTCL0_REQUEST', - 44: 'TCP_PERF_SEL_UTCL0_TRANSLATION_MISS', - 45: 'TCP_PERF_SEL_UTCL0_TRANSLATION_HIT', - 46: 'TCP_PERF_SEL_UTCL0_PERMISSION_MISS', - 47: 'TCP_PERF_SEL_UTCL0_STALL_INFLIGHT_MAX', - 48: 'TCP_PERF_SEL_UTCL0_STALL_LRU_INFLIGHT', - 49: 'TCP_PERF_SEL_UTCL0_STALL_MULTI_MISS', - 50: 'TCP_PERF_SEL_UTCL0_LFIFO_FULL', - 51: 'TCP_PERF_SEL_UTCL0_STALL_LFIFO_NOT_RES', - 52: 'TCP_PERF_SEL_UTCL0_STALL_UTCL2_REQ_OUT_OF_CREDITS', - 53: 'TCP_PERF_SEL_CLIENT_UTCL0_INFLIGHT', - 54: 'TCP_PERF_SEL_UTCL0_UTCL2_INFLIGHT', - 55: 'TCP_PERF_SEL_UTCL0_STALL_MISSFIFO_FULL', - 56: 'TCP_PERF_SEL_TOTAL_CACHE_ACCESSES', - 57: 'TCP_PERF_SEL_TAGRAM0_REQ', - 58: 'TCP_PERF_SEL_TAGRAM1_REQ', - 59: 'TCP_PERF_SEL_TAGRAM2_REQ', - 60: 'TCP_PERF_SEL_TAGRAM3_REQ', - 61: 'TCP_PERF_SEL_TCP_LATENCY', - 62: 'TCP_PERF_SEL_TCC_READ_REQ_LATENCY', - 63: 'TCP_PERF_SEL_TCC_WRITE_REQ_LATENCY', - 64: 'TCP_PERF_SEL_TCC_WRITE_REQ_HOLE_LATENCY', - 65: 'TCP_PERF_SEL_TCC_READ_REQ', - 66: 'TCP_PERF_SEL_TCC_WRITE_REQ', - 67: 'TCP_PERF_SEL_TCC_ATOMIC_WITH_RET_REQ', - 68: 'TCP_PERF_SEL_TCC_ATOMIC_WITHOUT_RET_REQ', - 69: 'TCP_PERF_SEL_TCC_LRU_REQ', - 70: 'TCP_PERF_SEL_TCC_STREAM_REQ', - 71: 'TCP_PERF_SEL_TCC_NC_READ_REQ', - 72: 'TCP_PERF_SEL_TCC_NC_WRITE_REQ', - 73: 'TCP_PERF_SEL_TCC_NC_ATOMIC_REQ', - 74: 'TCP_PERF_SEL_TCC_UC_READ_REQ', - 75: 'TCP_PERF_SEL_TCC_UC_WRITE_REQ', - 76: 'TCP_PERF_SEL_TCC_UC_ATOMIC_REQ', - 77: 'TCP_PERF_SEL_TCC_CC_READ_REQ', - 78: 'TCP_PERF_SEL_TCC_CC_WRITE_REQ', - 79: 'TCP_PERF_SEL_TCC_CC_ATOMIC_REQ', - 80: 'TCP_PERF_SEL_TCC_DCC_REQ', - 81: 'TCP_PERF_SEL_GL1_REQ_ATOMIC_WITH_RET', - 82: 'TCP_PERF_SEL_GL1_REQ_ATOMIC_WITHOUT_RET', - 83: 'TCP_PERF_SEL_GL1_REQ_READ', - 84: 'TCP_PERF_SEL_GL1_REQ_READ_LATENCY', - 85: 'TCP_PERF_SEL_GL1_REQ_WRITE', - 86: 'TCP_PERF_SEL_GL1_REQ_WRITE_LATENCY', - 87: 'TCP_PERF_SEL_REQ_MISS_TAGRAM0', - 88: 'TCP_PERF_SEL_REQ_MISS_TAGRAM1', - 89: 'TCP_PERF_SEL_REQ_MISS_TAGRAM2', - 90: 'TCP_PERF_SEL_REQ_MISS_TAGRAM3', - 91: 'TCP_PERF_SEL_TA_REQ', - 92: 'TCP_PERF_SEL_TA_REQ_ATOMIC_WITH_RET', - 93: 'TCP_PERF_SEL_TA_REQ_ATOMIC_WITHOUT_RET', - 94: 'TCP_PERF_SEL_TA_REQ_READ', - 95: 'TCP_PERF_SEL_TA_REQ_WRITE', - 96: 'TCP_PERF_SEL_TA_REQ_STATE_READ', -} -TCP_PERF_SEL_GATE_EN1 = 0 -TCP_PERF_SEL_GATE_EN2 = 1 -TCP_PERF_SEL_CORE_REG_SCLK_VLD = 2 -TCP_PERF_SEL_TA_TCP_ADDR_STARVE_CYCLES = 3 -TCP_PERF_SEL_TA_TCP_DATA_STARVE_CYCLES = 4 -TCP_PERF_SEL_TCP_TA_ADDR_STALL_CYCLES = 5 -TCP_PERF_SEL_TCP_TA_DATA_STALL_CYCLES = 6 -TCP_PERF_SEL_TD_TCP_STALL_CYCLES = 7 -TCP_PERF_SEL_TCR_TCP_STALL_CYCLES = 8 -TCP_PERF_SEL_TCP_TCR_STARVE_CYCLES = 9 -TCP_PERF_SEL_LOD_STALL_CYCLES = 10 -TCP_PERF_SEL_READ_TAGCONFLICT_STALL_CYCLES = 11 -TCP_PERF_SEL_WRITE_TAGCONFLICT_STALL_CYCLES = 12 -TCP_PERF_SEL_ATOMIC_TAGCONFLICT_STALL_CYCLES = 13 -TCP_PERF_SEL_ALLOC_STALL_CYCLES = 14 -TCP_PERF_SEL_UNORDERED_MTYPE_STALL = 15 -TCP_PERF_SEL_LFIFO_STALL_CYCLES = 16 -TCP_PERF_SEL_RFIFO_STALL_CYCLES = 17 -TCP_PERF_SEL_TCR_RDRET_STALL = 18 -TCP_PERF_SEL_WRITE_CONFLICT_STALL = 19 -TCP_PERF_SEL_HOLE_READ_STALL = 20 -TCP_PERF_SEL_READCONFLICT_STALL_CYCLES = 21 -TCP_PERF_SEL_PENDING_STALL_CYCLES = 22 -TCP_PERF_SEL_READFIFO_STALL_CYCLES = 23 -TCP_PERF_SEL_POWER_STALL = 24 -TCP_PERF_SEL_UTCL0_SERIALIZATION_STALL = 25 -TCP_PERF_SEL_TC_TA_XNACK_STALL = 26 -TCP_PERF_SEL_TA_TCP_STATE_READ = 27 -TCP_PERF_SEL_TOTAL_ACCESSES = 28 -TCP_PERF_SEL_TOTAL_READ = 29 -TCP_PERF_SEL_TOTAL_NON_READ = 30 -TCP_PERF_SEL_TOTAL_WRITE = 31 -TCP_PERF_SEL_TOTAL_HIT_LRU_READ = 32 -TCP_PERF_SEL_TOTAL_MISS_LRU_READ = 33 -TCP_PERF_SEL_TOTAL_MISS_EVICT_READ = 34 -TCP_PERF_SEL_TOTAL_MISS_LRU_WRITE = 35 -TCP_PERF_SEL_TOTAL_MISS_EVICT_WRITE = 36 -TCP_PERF_SEL_TOTAL_ATOMIC_WITH_RET = 37 -TCP_PERF_SEL_TOTAL_ATOMIC_WITHOUT_RET = 38 -TCP_PERF_SEL_TOTAL_WBINVL1 = 39 -TCP_PERF_SEL_CP_TCP_INVALIDATE = 40 -TCP_PERF_SEL_TOTAL_WRITEBACK_INVALIDATES = 41 -TCP_PERF_SEL_SHOOTDOWN = 42 -TCP_PERF_SEL_UTCL0_REQUEST = 43 -TCP_PERF_SEL_UTCL0_TRANSLATION_MISS = 44 -TCP_PERF_SEL_UTCL0_TRANSLATION_HIT = 45 -TCP_PERF_SEL_UTCL0_PERMISSION_MISS = 46 -TCP_PERF_SEL_UTCL0_STALL_INFLIGHT_MAX = 47 -TCP_PERF_SEL_UTCL0_STALL_LRU_INFLIGHT = 48 -TCP_PERF_SEL_UTCL0_STALL_MULTI_MISS = 49 -TCP_PERF_SEL_UTCL0_LFIFO_FULL = 50 -TCP_PERF_SEL_UTCL0_STALL_LFIFO_NOT_RES = 51 -TCP_PERF_SEL_UTCL0_STALL_UTCL2_REQ_OUT_OF_CREDITS = 52 -TCP_PERF_SEL_CLIENT_UTCL0_INFLIGHT = 53 -TCP_PERF_SEL_UTCL0_UTCL2_INFLIGHT = 54 -TCP_PERF_SEL_UTCL0_STALL_MISSFIFO_FULL = 55 -TCP_PERF_SEL_TOTAL_CACHE_ACCESSES = 56 -TCP_PERF_SEL_TAGRAM0_REQ = 57 -TCP_PERF_SEL_TAGRAM1_REQ = 58 -TCP_PERF_SEL_TAGRAM2_REQ = 59 -TCP_PERF_SEL_TAGRAM3_REQ = 60 -TCP_PERF_SEL_TCP_LATENCY = 61 -TCP_PERF_SEL_TCC_READ_REQ_LATENCY = 62 -TCP_PERF_SEL_TCC_WRITE_REQ_LATENCY = 63 -TCP_PERF_SEL_TCC_WRITE_REQ_HOLE_LATENCY = 64 -TCP_PERF_SEL_TCC_READ_REQ = 65 -TCP_PERF_SEL_TCC_WRITE_REQ = 66 -TCP_PERF_SEL_TCC_ATOMIC_WITH_RET_REQ = 67 -TCP_PERF_SEL_TCC_ATOMIC_WITHOUT_RET_REQ = 68 -TCP_PERF_SEL_TCC_LRU_REQ = 69 -TCP_PERF_SEL_TCC_STREAM_REQ = 70 -TCP_PERF_SEL_TCC_NC_READ_REQ = 71 -TCP_PERF_SEL_TCC_NC_WRITE_REQ = 72 -TCP_PERF_SEL_TCC_NC_ATOMIC_REQ = 73 -TCP_PERF_SEL_TCC_UC_READ_REQ = 74 -TCP_PERF_SEL_TCC_UC_WRITE_REQ = 75 -TCP_PERF_SEL_TCC_UC_ATOMIC_REQ = 76 -TCP_PERF_SEL_TCC_CC_READ_REQ = 77 -TCP_PERF_SEL_TCC_CC_WRITE_REQ = 78 -TCP_PERF_SEL_TCC_CC_ATOMIC_REQ = 79 -TCP_PERF_SEL_TCC_DCC_REQ = 80 -TCP_PERF_SEL_GL1_REQ_ATOMIC_WITH_RET = 81 -TCP_PERF_SEL_GL1_REQ_ATOMIC_WITHOUT_RET = 82 -TCP_PERF_SEL_GL1_REQ_READ = 83 -TCP_PERF_SEL_GL1_REQ_READ_LATENCY = 84 -TCP_PERF_SEL_GL1_REQ_WRITE = 85 -TCP_PERF_SEL_GL1_REQ_WRITE_LATENCY = 86 -TCP_PERF_SEL_REQ_MISS_TAGRAM0 = 87 -TCP_PERF_SEL_REQ_MISS_TAGRAM1 = 88 -TCP_PERF_SEL_REQ_MISS_TAGRAM2 = 89 -TCP_PERF_SEL_REQ_MISS_TAGRAM3 = 90 -TCP_PERF_SEL_TA_REQ = 91 -TCP_PERF_SEL_TA_REQ_ATOMIC_WITH_RET = 92 -TCP_PERF_SEL_TA_REQ_ATOMIC_WITHOUT_RET = 93 -TCP_PERF_SEL_TA_REQ_READ = 94 -TCP_PERF_SEL_TA_REQ_WRITE = 95 -TCP_PERF_SEL_TA_REQ_STATE_READ = 96 -TCP_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_CACHE_POLICIES' -TCP_CACHE_POLICIES__enumvalues = { - 0: 'TCP_CACHE_POLICY_MISS_LRU', - 1: 'TCP_CACHE_POLICY_MISS_EVICT', - 2: 'TCP_CACHE_POLICY_HIT_LRU', - 3: 'TCP_CACHE_POLICY_HIT_EVICT', -} -TCP_CACHE_POLICY_MISS_LRU = 0 -TCP_CACHE_POLICY_MISS_EVICT = 1 -TCP_CACHE_POLICY_HIT_LRU = 2 -TCP_CACHE_POLICY_HIT_EVICT = 3 -TCP_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_CACHE_STORE_POLICIES' -TCP_CACHE_STORE_POLICIES__enumvalues = { - 0: 'TCP_CACHE_STORE_POLICY_WT_LRU', - 1: 'TCP_CACHE_STORE_POLICY_WT_EVICT', -} -TCP_CACHE_STORE_POLICY_WT_LRU = 0 -TCP_CACHE_STORE_POLICY_WT_EVICT = 1 -TCP_CACHE_STORE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_WATCH_MODES' -TCP_WATCH_MODES__enumvalues = { - 0: 'TCP_WATCH_MODE_READ', - 1: 'TCP_WATCH_MODE_NONREAD', - 2: 'TCP_WATCH_MODE_ATOMIC', - 3: 'TCP_WATCH_MODE_ALL', -} -TCP_WATCH_MODE_READ = 0 -TCP_WATCH_MODE_NONREAD = 1 -TCP_WATCH_MODE_ATOMIC = 2 -TCP_WATCH_MODE_ALL = 3 -TCP_WATCH_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_DSM_DATA_SEL' -TCP_DSM_DATA_SEL__enumvalues = { - 0: 'TCP_DSM_DISABLE', - 1: 'TCP_DSM_SEL0', - 2: 'TCP_DSM_SEL1', - 3: 'TCP_DSM_SEL_BOTH', -} -TCP_DSM_DISABLE = 0 -TCP_DSM_SEL0 = 1 -TCP_DSM_SEL1 = 2 -TCP_DSM_SEL_BOTH = 3 -TCP_DSM_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_DSM_SINGLE_WRITE' -TCP_DSM_SINGLE_WRITE__enumvalues = { - 0: 'TCP_DSM_SINGLE_WRITE_DIS', - 1: 'TCP_DSM_SINGLE_WRITE_EN', -} -TCP_DSM_SINGLE_WRITE_DIS = 0 -TCP_DSM_SINGLE_WRITE_EN = 1 -TCP_DSM_SINGLE_WRITE = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_DSM_INJECT_SEL' -TCP_DSM_INJECT_SEL__enumvalues = { - 0: 'TCP_DSM_INJECT_SEL0', - 1: 'TCP_DSM_INJECT_SEL1', - 2: 'TCP_DSM_INJECT_SEL2', - 3: 'TCP_DSM_INJECT_SEL3', -} -TCP_DSM_INJECT_SEL0 = 0 -TCP_DSM_INJECT_SEL1 = 1 -TCP_DSM_INJECT_SEL2 = 2 -TCP_DSM_INJECT_SEL3 = 3 -TCP_DSM_INJECT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_OPCODE_TYPE' -TCP_OPCODE_TYPE__enumvalues = { - 0: 'TCP_OPCODE_READ', - 1: 'TCP_OPCODE_WRITE', - 2: 'TCP_OPCODE_ATOMIC', - 3: 'TCP_OPCODE_WBINVL1', - 4: 'TCP_OPCODE_ATOMIC_CMPSWAP', - 5: 'TCP_OPCODE_GATHERH', -} -TCP_OPCODE_READ = 0 -TCP_OPCODE_WRITE = 1 -TCP_OPCODE_ATOMIC = 2 -TCP_OPCODE_WBINVL1 = 3 -TCP_OPCODE_ATOMIC_CMPSWAP = 4 -TCP_OPCODE_GATHERH = 5 -TCP_OPCODE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'GL2C_PERF_SEL' -GL2C_PERF_SEL__enumvalues = { - 0: 'GL2C_PERF_SEL_NONE', - 1: 'GL2C_PERF_SEL_CYCLE', - 2: 'GL2C_PERF_SEL_BUSY', - 3: 'GL2C_PERF_SEL_REQ', - 4: 'GL2C_PERF_SEL_VOL_REQ', - 5: 'GL2C_PERF_SEL_HIGH_PRIORITY_REQ', - 6: 'GL2C_PERF_SEL_READ', - 7: 'GL2C_PERF_SEL_WRITE', - 8: 'GL2C_PERF_SEL_ATOMIC', - 9: 'GL2C_PERF_SEL_NOP_ACK', - 10: 'GL2C_PERF_SEL_NOP_RTN0', - 11: 'GL2C_PERF_SEL_PROBE', - 12: 'GL2C_PERF_SEL_PROBE_ALL', - 13: 'GL2C_PERF_SEL_INTERNAL_PROBE', - 14: 'GL2C_PERF_SEL_COMPRESSED_READ_REQ', - 15: 'GL2C_PERF_SEL_METADATA_READ_REQ', - 16: 'GL2C_PERF_SEL_CLIENT0_REQ', - 17: 'GL2C_PERF_SEL_CLIENT1_REQ', - 18: 'GL2C_PERF_SEL_CLIENT2_REQ', - 19: 'GL2C_PERF_SEL_CLIENT3_REQ', - 20: 'GL2C_PERF_SEL_CLIENT4_REQ', - 21: 'GL2C_PERF_SEL_CLIENT5_REQ', - 22: 'GL2C_PERF_SEL_CLIENT6_REQ', - 23: 'GL2C_PERF_SEL_CLIENT7_REQ', - 24: 'GL2C_PERF_SEL_C_RW_S_REQ', - 25: 'GL2C_PERF_SEL_C_RW_US_REQ', - 26: 'GL2C_PERF_SEL_C_RO_S_REQ', - 27: 'GL2C_PERF_SEL_C_RO_US_REQ', - 28: 'GL2C_PERF_SEL_UC_REQ', - 29: 'GL2C_PERF_SEL_LRU_REQ', - 30: 'GL2C_PERF_SEL_STREAM_REQ', - 31: 'GL2C_PERF_SEL_BYPASS_REQ', - 32: 'GL2C_PERF_SEL_NOA_REQ', - 33: 'GL2C_PERF_SEL_SHARED_REQ', - 34: 'GL2C_PERF_SEL_HIT', - 35: 'GL2C_PERF_SEL_MISS', - 36: 'GL2C_PERF_SEL_FULL_HIT', - 37: 'GL2C_PERF_SEL_PARTIAL_32B_HIT', - 38: 'GL2C_PERF_SEL_PARTIAL_64B_HIT', - 39: 'GL2C_PERF_SEL_PARTIAL_96B_HIT', - 40: 'GL2C_PERF_SEL_DEWRITE_ALLOCATE_HIT', - 41: 'GL2C_PERF_SEL_FULLY_WRITTEN_HIT', - 42: 'GL2C_PERF_SEL_UNCACHED_WRITE', - 43: 'GL2C_PERF_SEL_WRITEBACK', - 44: 'GL2C_PERF_SEL_NORMAL_WRITEBACK', - 45: 'GL2C_PERF_SEL_EVICT', - 46: 'GL2C_PERF_SEL_NORMAL_EVICT', - 47: 'GL2C_PERF_SEL_PROBE_EVICT', - 48: 'GL2C_PERF_SEL_REQ_TO_MISS_QUEUE', - 49: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_HI_PRIO', - 50: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_COMP', - 51: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT0', - 52: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT1', - 53: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT2', - 54: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT3', - 55: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT4', - 56: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT5', - 57: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT6', - 58: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT7', - 59: 'GL2C_PERF_SEL_READ_32_REQ', - 60: 'GL2C_PERF_SEL_READ_64_REQ', - 61: 'GL2C_PERF_SEL_READ_128_REQ', - 62: 'GL2C_PERF_SEL_WRITE_32_REQ', - 63: 'GL2C_PERF_SEL_WRITE_64_REQ', - 64: 'GL2C_PERF_SEL_COMPRESSED_READ_0_REQ', - 65: 'GL2C_PERF_SEL_COMPRESSED_READ_32_REQ', - 66: 'GL2C_PERF_SEL_COMPRESSED_READ_64_REQ', - 67: 'GL2C_PERF_SEL_COMPRESSED_READ_96_REQ', - 68: 'GL2C_PERF_SEL_COMPRESSED_READ_128_REQ', - 69: 'GL2C_PERF_SEL_MC_WRREQ', - 70: 'GL2C_PERF_SEL_EA_WRREQ_64B', - 71: 'GL2C_PERF_SEL_EA_WRREQ_PROBE_COMMAND', - 72: 'GL2C_PERF_SEL_EA_WR_UNCACHED_32B', - 73: 'GL2C_PERF_SEL_MC_WRREQ_STALL', - 74: 'GL2C_PERF_SEL_EA_WRREQ_IO_CREDIT_STALL', - 75: 'GL2C_PERF_SEL_EA_WRREQ_GMI_CREDIT_STALL', - 76: 'GL2C_PERF_SEL_EA_WRREQ_DRAM_CREDIT_STALL', - 77: 'GL2C_PERF_SEL_TOO_MANY_EA_WRREQS_STALL', - 78: 'GL2C_PERF_SEL_MC_WRREQ_LEVEL', - 79: 'GL2C_PERF_SEL_EA_ATOMIC', - 80: 'GL2C_PERF_SEL_EA_ATOMIC_LEVEL', - 81: 'GL2C_PERF_SEL_MC_RDREQ', - 82: 'GL2C_PERF_SEL_EA_RDREQ_SPLIT', - 83: 'GL2C_PERF_SEL_EA_RDREQ_32B', - 84: 'GL2C_PERF_SEL_EA_RDREQ_64B', - 85: 'GL2C_PERF_SEL_EA_RDREQ_96B', - 86: 'GL2C_PERF_SEL_EA_RDREQ_128B', - 87: 'GL2C_PERF_SEL_EA_RD_UNCACHED_32B', - 88: 'GL2C_PERF_SEL_EA_RD_MDC_32B', - 89: 'GL2C_PERF_SEL_EA_RD_COMPRESSED_32B', - 90: 'GL2C_PERF_SEL_EA_RDREQ_IO_CREDIT_STALL', - 91: 'GL2C_PERF_SEL_EA_RDREQ_GMI_CREDIT_STALL', - 92: 'GL2C_PERF_SEL_EA_RDREQ_DRAM_CREDIT_STALL', - 93: 'GL2C_PERF_SEL_MC_RDREQ_LEVEL', - 94: 'GL2C_PERF_SEL_EA_RDREQ_DRAM', - 95: 'GL2C_PERF_SEL_EA_WRREQ_DRAM', - 96: 'GL2C_PERF_SEL_EA_RDREQ_DRAM_32B', - 97: 'GL2C_PERF_SEL_EA_WRREQ_DRAM_32B', - 98: 'GL2C_PERF_SEL_ONION_READ', - 99: 'GL2C_PERF_SEL_ONION_WRITE', - 100: 'GL2C_PERF_SEL_IO_READ', - 101: 'GL2C_PERF_SEL_IO_WRITE', - 102: 'GL2C_PERF_SEL_GARLIC_READ', - 103: 'GL2C_PERF_SEL_GARLIC_WRITE', - 104: 'GL2C_PERF_SEL_LATENCY_FIFO_FULL', - 105: 'GL2C_PERF_SEL_SRC_FIFO_FULL', - 106: 'GL2C_PERF_SEL_TAG_STALL', - 107: 'GL2C_PERF_SEL_TAG_WRITEBACK_FIFO_FULL_STALL', - 108: 'GL2C_PERF_SEL_TAG_MISS_NOTHING_REPLACEABLE_STALL', - 109: 'GL2C_PERF_SEL_TAG_UNCACHED_WRITE_ATOMIC_FIFO_FULL_STALL', - 110: 'GL2C_PERF_SEL_TAG_NO_UNCACHED_WRITE_ATOMIC_ENTRIES_STALL', - 111: 'GL2C_PERF_SEL_TAG_PROBE_STALL', - 112: 'GL2C_PERF_SEL_TAG_PROBE_FILTER_STALL', - 113: 'GL2C_PERF_SEL_TAG_PROBE_FIFO_FULL_STALL', - 114: 'GL2C_PERF_SEL_TAG_READ_DST_STALL', - 115: 'GL2C_PERF_SEL_READ_RETURN_TIMEOUT', - 116: 'GL2C_PERF_SEL_WRITEBACK_READ_TIMEOUT', - 117: 'GL2C_PERF_SEL_READ_RETURN_FULL_BUBBLE', - 118: 'GL2C_PERF_SEL_BUBBLE', - 119: 'GL2C_PERF_SEL_IB_REQ', - 120: 'GL2C_PERF_SEL_IB_STALL', - 121: 'GL2C_PERF_SEL_IB_TAG_STALL', - 122: 'GL2C_PERF_SEL_IB_CM_STALL', - 123: 'GL2C_PERF_SEL_RETURN_ACK', - 124: 'GL2C_PERF_SEL_RETURN_DATA', - 125: 'GL2C_PERF_SEL_EA_RDRET_NACK', - 126: 'GL2C_PERF_SEL_EA_WRRET_NACK', - 127: 'GL2C_PERF_SEL_GL2A_LEVEL', - 128: 'GL2C_PERF_SEL_PROBE_FILTER_DISABLE_TRANSITION', - 129: 'GL2C_PERF_SEL_PROBE_FILTER_DISABLED', - 130: 'GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_START', - 131: 'GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_VOL_START', - 132: 'GL2C_PERF_SEL_GCR_INV', - 133: 'GL2C_PERF_SEL_GCR_WB', - 134: 'GL2C_PERF_SEL_GCR_DISCARD', - 135: 'GL2C_PERF_SEL_GCR_RANGE', - 136: 'GL2C_PERF_SEL_GCR_ALL', - 137: 'GL2C_PERF_SEL_GCR_VOL', - 138: 'GL2C_PERF_SEL_GCR_UNSHARED', - 139: 'GL2C_PERF_SEL_GCR_MDC_INV', - 140: 'GL2C_PERF_SEL_GCR_GL2_INV_ALL', - 141: 'GL2C_PERF_SEL_GCR_GL2_WB_ALL', - 142: 'GL2C_PERF_SEL_GCR_MDC_INV_ALL', - 143: 'GL2C_PERF_SEL_GCR_GL2_INV_RANGE', - 144: 'GL2C_PERF_SEL_GCR_GL2_WB_RANGE', - 145: 'GL2C_PERF_SEL_GCR_GL2_WB_INV_RANGE', - 146: 'GL2C_PERF_SEL_GCR_MDC_INV_RANGE', - 147: 'GL2C_PERF_SEL_ALL_GCR_INV_EVICT', - 148: 'GL2C_PERF_SEL_ALL_GCR_INV_VOL_EVICT', - 149: 'GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_CYCLE', - 150: 'GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_VOL_CYCLE', - 151: 'GL2C_PERF_SEL_ALL_GCR_WB_WRITEBACK', - 152: 'GL2C_PERF_SEL_GCR_INVL2_VOL_CYCLE', - 153: 'GL2C_PERF_SEL_GCR_INVL2_VOL_EVICT', - 154: 'GL2C_PERF_SEL_GCR_INVL2_VOL_START', - 155: 'GL2C_PERF_SEL_GCR_WBL2_VOL_CYCLE', - 156: 'GL2C_PERF_SEL_GCR_WBL2_VOL_EVICT', - 157: 'GL2C_PERF_SEL_GCR_WBL2_VOL_START', - 158: 'GL2C_PERF_SEL_GCR_WBINVL2_CYCLE', - 159: 'GL2C_PERF_SEL_GCR_WBINVL2_EVICT', - 160: 'GL2C_PERF_SEL_GCR_WBINVL2_START', - 161: 'GL2C_PERF_SEL_MDC_INV_METADATA', - 162: 'GL2C_PERF_SEL_MDC_REQ', - 163: 'GL2C_PERF_SEL_MDC_LEVEL', - 164: 'GL2C_PERF_SEL_MDC_TAG_HIT', - 165: 'GL2C_PERF_SEL_MDC_SECTOR_HIT', - 166: 'GL2C_PERF_SEL_MDC_SECTOR_MISS', - 167: 'GL2C_PERF_SEL_MDC_TAG_STALL', - 168: 'GL2C_PERF_SEL_MDC_TAG_REPLACEMENT_LINE_IN_USE_STALL', - 169: 'GL2C_PERF_SEL_MDC_TAG_DESECTORIZATION_FIFO_FULL_STALL', - 170: 'GL2C_PERF_SEL_MDC_TAG_WAITING_FOR_INVALIDATE_COMPLETION_STALL', - 171: 'GL2C_PERF_SEL_CM_CHANNEL0_REQ', - 172: 'GL2C_PERF_SEL_CM_CHANNEL1_REQ', - 173: 'GL2C_PERF_SEL_CM_CHANNEL2_REQ', - 174: 'GL2C_PERF_SEL_CM_CHANNEL3_REQ', - 175: 'GL2C_PERF_SEL_CM_CHANNEL4_REQ', - 176: 'GL2C_PERF_SEL_CM_CHANNEL5_REQ', - 177: 'GL2C_PERF_SEL_CM_CHANNEL6_REQ', - 178: 'GL2C_PERF_SEL_CM_CHANNEL7_REQ', - 179: 'GL2C_PERF_SEL_CM_CHANNEL8_REQ', - 180: 'GL2C_PERF_SEL_CM_CHANNEL9_REQ', - 181: 'GL2C_PERF_SEL_CM_CHANNEL10_REQ', - 182: 'GL2C_PERF_SEL_CM_CHANNEL11_REQ', - 183: 'GL2C_PERF_SEL_CM_CHANNEL12_REQ', - 184: 'GL2C_PERF_SEL_CM_CHANNEL13_REQ', - 185: 'GL2C_PERF_SEL_CM_CHANNEL14_REQ', - 186: 'GL2C_PERF_SEL_CM_CHANNEL15_REQ', - 187: 'GL2C_PERF_SEL_CM_CHANNEL16_REQ', - 188: 'GL2C_PERF_SEL_CM_CHANNEL17_REQ', - 189: 'GL2C_PERF_SEL_CM_CHANNEL18_REQ', - 190: 'GL2C_PERF_SEL_CM_CHANNEL19_REQ', - 191: 'GL2C_PERF_SEL_CM_CHANNEL20_REQ', - 192: 'GL2C_PERF_SEL_CM_CHANNEL21_REQ', - 193: 'GL2C_PERF_SEL_CM_CHANNEL22_REQ', - 194: 'GL2C_PERF_SEL_CM_CHANNEL23_REQ', - 195: 'GL2C_PERF_SEL_CM_CHANNEL24_REQ', - 196: 'GL2C_PERF_SEL_CM_CHANNEL25_REQ', - 197: 'GL2C_PERF_SEL_CM_CHANNEL26_REQ', - 198: 'GL2C_PERF_SEL_CM_CHANNEL27_REQ', - 199: 'GL2C_PERF_SEL_CM_CHANNEL28_REQ', - 200: 'GL2C_PERF_SEL_CM_CHANNEL29_REQ', - 201: 'GL2C_PERF_SEL_CM_CHANNEL30_REQ', - 202: 'GL2C_PERF_SEL_CM_CHANNEL31_REQ', - 203: 'GL2C_PERF_SEL_CM_COMP_ATOMIC_COLOR_REQ', - 204: 'GL2C_PERF_SEL_CM_COMP_ATOMIC_DEPTH16_REQ', - 205: 'GL2C_PERF_SEL_CM_COMP_ATOMIC_DEPTH32_REQ', - 206: 'GL2C_PERF_SEL_CM_COMP_WRITE_COLOR_REQ', - 207: 'GL2C_PERF_SEL_CM_COMP_WRITE_DEPTH16_REQ', - 208: 'GL2C_PERF_SEL_CM_COMP_WRITE_DEPTH32_REQ', - 209: 'GL2C_PERF_SEL_CM_COMP_WRITE_STENCIL_REQ', - 210: 'GL2C_PERF_SEL_CM_COMP_READ_REQ', - 211: 'GL2C_PERF_SEL_CM_READ_BACK_REQ', - 212: 'GL2C_PERF_SEL_CM_METADATA_WR_REQ', - 213: 'GL2C_PERF_SEL_CM_WR_ACK_REQ', - 214: 'GL2C_PERF_SEL_CM_NO_ACK_REQ', - 215: 'GL2C_PERF_SEL_CM_NOOP_REQ', - 216: 'GL2C_PERF_SEL_CM_COMP_COLOR_EN_REQ', - 217: 'GL2C_PERF_SEL_CM_COMP_COLOR_DIS_REQ', - 218: 'GL2C_PERF_SEL_CM_COMP_STENCIL_REQ', - 219: 'GL2C_PERF_SEL_CM_COMP_DEPTH16_REQ', - 220: 'GL2C_PERF_SEL_CM_COMP_DEPTH32_REQ', - 221: 'GL2C_PERF_SEL_CM_COLOR_32B_WR_REQ', - 222: 'GL2C_PERF_SEL_CM_COLOR_64B_WR_REQ', - 223: 'GL2C_PERF_SEL_CM_FULL_WRITE_REQ', - 224: 'GL2C_PERF_SEL_CM_RVF_FULL', - 225: 'GL2C_PERF_SEL_CM_SDR_FULL', - 226: 'GL2C_PERF_SEL_CM_MERGE_BUF_FULL', - 227: 'GL2C_PERF_SEL_CM_DCC_STALL', -} -GL2C_PERF_SEL_NONE = 0 -GL2C_PERF_SEL_CYCLE = 1 -GL2C_PERF_SEL_BUSY = 2 -GL2C_PERF_SEL_REQ = 3 -GL2C_PERF_SEL_VOL_REQ = 4 -GL2C_PERF_SEL_HIGH_PRIORITY_REQ = 5 -GL2C_PERF_SEL_READ = 6 -GL2C_PERF_SEL_WRITE = 7 -GL2C_PERF_SEL_ATOMIC = 8 -GL2C_PERF_SEL_NOP_ACK = 9 -GL2C_PERF_SEL_NOP_RTN0 = 10 -GL2C_PERF_SEL_PROBE = 11 -GL2C_PERF_SEL_PROBE_ALL = 12 -GL2C_PERF_SEL_INTERNAL_PROBE = 13 -GL2C_PERF_SEL_COMPRESSED_READ_REQ = 14 -GL2C_PERF_SEL_METADATA_READ_REQ = 15 -GL2C_PERF_SEL_CLIENT0_REQ = 16 -GL2C_PERF_SEL_CLIENT1_REQ = 17 -GL2C_PERF_SEL_CLIENT2_REQ = 18 -GL2C_PERF_SEL_CLIENT3_REQ = 19 -GL2C_PERF_SEL_CLIENT4_REQ = 20 -GL2C_PERF_SEL_CLIENT5_REQ = 21 -GL2C_PERF_SEL_CLIENT6_REQ = 22 -GL2C_PERF_SEL_CLIENT7_REQ = 23 -GL2C_PERF_SEL_C_RW_S_REQ = 24 -GL2C_PERF_SEL_C_RW_US_REQ = 25 -GL2C_PERF_SEL_C_RO_S_REQ = 26 -GL2C_PERF_SEL_C_RO_US_REQ = 27 -GL2C_PERF_SEL_UC_REQ = 28 -GL2C_PERF_SEL_LRU_REQ = 29 -GL2C_PERF_SEL_STREAM_REQ = 30 -GL2C_PERF_SEL_BYPASS_REQ = 31 -GL2C_PERF_SEL_NOA_REQ = 32 -GL2C_PERF_SEL_SHARED_REQ = 33 -GL2C_PERF_SEL_HIT = 34 -GL2C_PERF_SEL_MISS = 35 -GL2C_PERF_SEL_FULL_HIT = 36 -GL2C_PERF_SEL_PARTIAL_32B_HIT = 37 -GL2C_PERF_SEL_PARTIAL_64B_HIT = 38 -GL2C_PERF_SEL_PARTIAL_96B_HIT = 39 -GL2C_PERF_SEL_DEWRITE_ALLOCATE_HIT = 40 -GL2C_PERF_SEL_FULLY_WRITTEN_HIT = 41 -GL2C_PERF_SEL_UNCACHED_WRITE = 42 -GL2C_PERF_SEL_WRITEBACK = 43 -GL2C_PERF_SEL_NORMAL_WRITEBACK = 44 -GL2C_PERF_SEL_EVICT = 45 -GL2C_PERF_SEL_NORMAL_EVICT = 46 -GL2C_PERF_SEL_PROBE_EVICT = 47 -GL2C_PERF_SEL_REQ_TO_MISS_QUEUE = 48 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_HI_PRIO = 49 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_COMP = 50 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT0 = 51 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT1 = 52 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT2 = 53 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT3 = 54 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT4 = 55 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT5 = 56 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT6 = 57 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT7 = 58 -GL2C_PERF_SEL_READ_32_REQ = 59 -GL2C_PERF_SEL_READ_64_REQ = 60 -GL2C_PERF_SEL_READ_128_REQ = 61 -GL2C_PERF_SEL_WRITE_32_REQ = 62 -GL2C_PERF_SEL_WRITE_64_REQ = 63 -GL2C_PERF_SEL_COMPRESSED_READ_0_REQ = 64 -GL2C_PERF_SEL_COMPRESSED_READ_32_REQ = 65 -GL2C_PERF_SEL_COMPRESSED_READ_64_REQ = 66 -GL2C_PERF_SEL_COMPRESSED_READ_96_REQ = 67 -GL2C_PERF_SEL_COMPRESSED_READ_128_REQ = 68 -GL2C_PERF_SEL_MC_WRREQ = 69 -GL2C_PERF_SEL_EA_WRREQ_64B = 70 -GL2C_PERF_SEL_EA_WRREQ_PROBE_COMMAND = 71 -GL2C_PERF_SEL_EA_WR_UNCACHED_32B = 72 -GL2C_PERF_SEL_MC_WRREQ_STALL = 73 -GL2C_PERF_SEL_EA_WRREQ_IO_CREDIT_STALL = 74 -GL2C_PERF_SEL_EA_WRREQ_GMI_CREDIT_STALL = 75 -GL2C_PERF_SEL_EA_WRREQ_DRAM_CREDIT_STALL = 76 -GL2C_PERF_SEL_TOO_MANY_EA_WRREQS_STALL = 77 -GL2C_PERF_SEL_MC_WRREQ_LEVEL = 78 -GL2C_PERF_SEL_EA_ATOMIC = 79 -GL2C_PERF_SEL_EA_ATOMIC_LEVEL = 80 -GL2C_PERF_SEL_MC_RDREQ = 81 -GL2C_PERF_SEL_EA_RDREQ_SPLIT = 82 -GL2C_PERF_SEL_EA_RDREQ_32B = 83 -GL2C_PERF_SEL_EA_RDREQ_64B = 84 -GL2C_PERF_SEL_EA_RDREQ_96B = 85 -GL2C_PERF_SEL_EA_RDREQ_128B = 86 -GL2C_PERF_SEL_EA_RD_UNCACHED_32B = 87 -GL2C_PERF_SEL_EA_RD_MDC_32B = 88 -GL2C_PERF_SEL_EA_RD_COMPRESSED_32B = 89 -GL2C_PERF_SEL_EA_RDREQ_IO_CREDIT_STALL = 90 -GL2C_PERF_SEL_EA_RDREQ_GMI_CREDIT_STALL = 91 -GL2C_PERF_SEL_EA_RDREQ_DRAM_CREDIT_STALL = 92 -GL2C_PERF_SEL_MC_RDREQ_LEVEL = 93 -GL2C_PERF_SEL_EA_RDREQ_DRAM = 94 -GL2C_PERF_SEL_EA_WRREQ_DRAM = 95 -GL2C_PERF_SEL_EA_RDREQ_DRAM_32B = 96 -GL2C_PERF_SEL_EA_WRREQ_DRAM_32B = 97 -GL2C_PERF_SEL_ONION_READ = 98 -GL2C_PERF_SEL_ONION_WRITE = 99 -GL2C_PERF_SEL_IO_READ = 100 -GL2C_PERF_SEL_IO_WRITE = 101 -GL2C_PERF_SEL_GARLIC_READ = 102 -GL2C_PERF_SEL_GARLIC_WRITE = 103 -GL2C_PERF_SEL_LATENCY_FIFO_FULL = 104 -GL2C_PERF_SEL_SRC_FIFO_FULL = 105 -GL2C_PERF_SEL_TAG_STALL = 106 -GL2C_PERF_SEL_TAG_WRITEBACK_FIFO_FULL_STALL = 107 -GL2C_PERF_SEL_TAG_MISS_NOTHING_REPLACEABLE_STALL = 108 -GL2C_PERF_SEL_TAG_UNCACHED_WRITE_ATOMIC_FIFO_FULL_STALL = 109 -GL2C_PERF_SEL_TAG_NO_UNCACHED_WRITE_ATOMIC_ENTRIES_STALL = 110 -GL2C_PERF_SEL_TAG_PROBE_STALL = 111 -GL2C_PERF_SEL_TAG_PROBE_FILTER_STALL = 112 -GL2C_PERF_SEL_TAG_PROBE_FIFO_FULL_STALL = 113 -GL2C_PERF_SEL_TAG_READ_DST_STALL = 114 -GL2C_PERF_SEL_READ_RETURN_TIMEOUT = 115 -GL2C_PERF_SEL_WRITEBACK_READ_TIMEOUT = 116 -GL2C_PERF_SEL_READ_RETURN_FULL_BUBBLE = 117 -GL2C_PERF_SEL_BUBBLE = 118 -GL2C_PERF_SEL_IB_REQ = 119 -GL2C_PERF_SEL_IB_STALL = 120 -GL2C_PERF_SEL_IB_TAG_STALL = 121 -GL2C_PERF_SEL_IB_CM_STALL = 122 -GL2C_PERF_SEL_RETURN_ACK = 123 -GL2C_PERF_SEL_RETURN_DATA = 124 -GL2C_PERF_SEL_EA_RDRET_NACK = 125 -GL2C_PERF_SEL_EA_WRRET_NACK = 126 -GL2C_PERF_SEL_GL2A_LEVEL = 127 -GL2C_PERF_SEL_PROBE_FILTER_DISABLE_TRANSITION = 128 -GL2C_PERF_SEL_PROBE_FILTER_DISABLED = 129 -GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_START = 130 -GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_VOL_START = 131 -GL2C_PERF_SEL_GCR_INV = 132 -GL2C_PERF_SEL_GCR_WB = 133 -GL2C_PERF_SEL_GCR_DISCARD = 134 -GL2C_PERF_SEL_GCR_RANGE = 135 -GL2C_PERF_SEL_GCR_ALL = 136 -GL2C_PERF_SEL_GCR_VOL = 137 -GL2C_PERF_SEL_GCR_UNSHARED = 138 -GL2C_PERF_SEL_GCR_MDC_INV = 139 -GL2C_PERF_SEL_GCR_GL2_INV_ALL = 140 -GL2C_PERF_SEL_GCR_GL2_WB_ALL = 141 -GL2C_PERF_SEL_GCR_MDC_INV_ALL = 142 -GL2C_PERF_SEL_GCR_GL2_INV_RANGE = 143 -GL2C_PERF_SEL_GCR_GL2_WB_RANGE = 144 -GL2C_PERF_SEL_GCR_GL2_WB_INV_RANGE = 145 -GL2C_PERF_SEL_GCR_MDC_INV_RANGE = 146 -GL2C_PERF_SEL_ALL_GCR_INV_EVICT = 147 -GL2C_PERF_SEL_ALL_GCR_INV_VOL_EVICT = 148 -GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_CYCLE = 149 -GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_VOL_CYCLE = 150 -GL2C_PERF_SEL_ALL_GCR_WB_WRITEBACK = 151 -GL2C_PERF_SEL_GCR_INVL2_VOL_CYCLE = 152 -GL2C_PERF_SEL_GCR_INVL2_VOL_EVICT = 153 -GL2C_PERF_SEL_GCR_INVL2_VOL_START = 154 -GL2C_PERF_SEL_GCR_WBL2_VOL_CYCLE = 155 -GL2C_PERF_SEL_GCR_WBL2_VOL_EVICT = 156 -GL2C_PERF_SEL_GCR_WBL2_VOL_START = 157 -GL2C_PERF_SEL_GCR_WBINVL2_CYCLE = 158 -GL2C_PERF_SEL_GCR_WBINVL2_EVICT = 159 -GL2C_PERF_SEL_GCR_WBINVL2_START = 160 -GL2C_PERF_SEL_MDC_INV_METADATA = 161 -GL2C_PERF_SEL_MDC_REQ = 162 -GL2C_PERF_SEL_MDC_LEVEL = 163 -GL2C_PERF_SEL_MDC_TAG_HIT = 164 -GL2C_PERF_SEL_MDC_SECTOR_HIT = 165 -GL2C_PERF_SEL_MDC_SECTOR_MISS = 166 -GL2C_PERF_SEL_MDC_TAG_STALL = 167 -GL2C_PERF_SEL_MDC_TAG_REPLACEMENT_LINE_IN_USE_STALL = 168 -GL2C_PERF_SEL_MDC_TAG_DESECTORIZATION_FIFO_FULL_STALL = 169 -GL2C_PERF_SEL_MDC_TAG_WAITING_FOR_INVALIDATE_COMPLETION_STALL = 170 -GL2C_PERF_SEL_CM_CHANNEL0_REQ = 171 -GL2C_PERF_SEL_CM_CHANNEL1_REQ = 172 -GL2C_PERF_SEL_CM_CHANNEL2_REQ = 173 -GL2C_PERF_SEL_CM_CHANNEL3_REQ = 174 -GL2C_PERF_SEL_CM_CHANNEL4_REQ = 175 -GL2C_PERF_SEL_CM_CHANNEL5_REQ = 176 -GL2C_PERF_SEL_CM_CHANNEL6_REQ = 177 -GL2C_PERF_SEL_CM_CHANNEL7_REQ = 178 -GL2C_PERF_SEL_CM_CHANNEL8_REQ = 179 -GL2C_PERF_SEL_CM_CHANNEL9_REQ = 180 -GL2C_PERF_SEL_CM_CHANNEL10_REQ = 181 -GL2C_PERF_SEL_CM_CHANNEL11_REQ = 182 -GL2C_PERF_SEL_CM_CHANNEL12_REQ = 183 -GL2C_PERF_SEL_CM_CHANNEL13_REQ = 184 -GL2C_PERF_SEL_CM_CHANNEL14_REQ = 185 -GL2C_PERF_SEL_CM_CHANNEL15_REQ = 186 -GL2C_PERF_SEL_CM_CHANNEL16_REQ = 187 -GL2C_PERF_SEL_CM_CHANNEL17_REQ = 188 -GL2C_PERF_SEL_CM_CHANNEL18_REQ = 189 -GL2C_PERF_SEL_CM_CHANNEL19_REQ = 190 -GL2C_PERF_SEL_CM_CHANNEL20_REQ = 191 -GL2C_PERF_SEL_CM_CHANNEL21_REQ = 192 -GL2C_PERF_SEL_CM_CHANNEL22_REQ = 193 -GL2C_PERF_SEL_CM_CHANNEL23_REQ = 194 -GL2C_PERF_SEL_CM_CHANNEL24_REQ = 195 -GL2C_PERF_SEL_CM_CHANNEL25_REQ = 196 -GL2C_PERF_SEL_CM_CHANNEL26_REQ = 197 -GL2C_PERF_SEL_CM_CHANNEL27_REQ = 198 -GL2C_PERF_SEL_CM_CHANNEL28_REQ = 199 -GL2C_PERF_SEL_CM_CHANNEL29_REQ = 200 -GL2C_PERF_SEL_CM_CHANNEL30_REQ = 201 -GL2C_PERF_SEL_CM_CHANNEL31_REQ = 202 -GL2C_PERF_SEL_CM_COMP_ATOMIC_COLOR_REQ = 203 -GL2C_PERF_SEL_CM_COMP_ATOMIC_DEPTH16_REQ = 204 -GL2C_PERF_SEL_CM_COMP_ATOMIC_DEPTH32_REQ = 205 -GL2C_PERF_SEL_CM_COMP_WRITE_COLOR_REQ = 206 -GL2C_PERF_SEL_CM_COMP_WRITE_DEPTH16_REQ = 207 -GL2C_PERF_SEL_CM_COMP_WRITE_DEPTH32_REQ = 208 -GL2C_PERF_SEL_CM_COMP_WRITE_STENCIL_REQ = 209 -GL2C_PERF_SEL_CM_COMP_READ_REQ = 210 -GL2C_PERF_SEL_CM_READ_BACK_REQ = 211 -GL2C_PERF_SEL_CM_METADATA_WR_REQ = 212 -GL2C_PERF_SEL_CM_WR_ACK_REQ = 213 -GL2C_PERF_SEL_CM_NO_ACK_REQ = 214 -GL2C_PERF_SEL_CM_NOOP_REQ = 215 -GL2C_PERF_SEL_CM_COMP_COLOR_EN_REQ = 216 -GL2C_PERF_SEL_CM_COMP_COLOR_DIS_REQ = 217 -GL2C_PERF_SEL_CM_COMP_STENCIL_REQ = 218 -GL2C_PERF_SEL_CM_COMP_DEPTH16_REQ = 219 -GL2C_PERF_SEL_CM_COMP_DEPTH32_REQ = 220 -GL2C_PERF_SEL_CM_COLOR_32B_WR_REQ = 221 -GL2C_PERF_SEL_CM_COLOR_64B_WR_REQ = 222 -GL2C_PERF_SEL_CM_FULL_WRITE_REQ = 223 -GL2C_PERF_SEL_CM_RVF_FULL = 224 -GL2C_PERF_SEL_CM_SDR_FULL = 225 -GL2C_PERF_SEL_CM_MERGE_BUF_FULL = 226 -GL2C_PERF_SEL_CM_DCC_STALL = 227 -GL2C_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GL2A_PERF_SEL' -GL2A_PERF_SEL__enumvalues = { - 0: 'GL2A_PERF_SEL_NONE', - 1: 'GL2A_PERF_SEL_CYCLE', - 2: 'GL2A_PERF_SEL_BUSY', - 3: 'GL2A_PERF_SEL_REQ_GL2C0', - 4: 'GL2A_PERF_SEL_REQ_GL2C1', - 5: 'GL2A_PERF_SEL_REQ_GL2C2', - 6: 'GL2A_PERF_SEL_REQ_GL2C3', - 7: 'GL2A_PERF_SEL_REQ_GL2C4', - 8: 'GL2A_PERF_SEL_REQ_GL2C5', - 9: 'GL2A_PERF_SEL_REQ_GL2C6', - 10: 'GL2A_PERF_SEL_REQ_GL2C7', - 11: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C0', - 12: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C1', - 13: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C2', - 14: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C3', - 15: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C4', - 16: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C5', - 17: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C6', - 18: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C7', - 19: 'GL2A_PERF_SEL_REQ_BURST_GL2C0', - 20: 'GL2A_PERF_SEL_REQ_BURST_GL2C1', - 21: 'GL2A_PERF_SEL_REQ_BURST_GL2C2', - 22: 'GL2A_PERF_SEL_REQ_BURST_GL2C3', - 23: 'GL2A_PERF_SEL_REQ_BURST_GL2C4', - 24: 'GL2A_PERF_SEL_REQ_BURST_GL2C5', - 25: 'GL2A_PERF_SEL_REQ_BURST_GL2C6', - 26: 'GL2A_PERF_SEL_REQ_BURST_GL2C7', - 27: 'GL2A_PERF_SEL_REQ_STALL_GL2C0', - 28: 'GL2A_PERF_SEL_REQ_STALL_GL2C1', - 29: 'GL2A_PERF_SEL_REQ_STALL_GL2C2', - 30: 'GL2A_PERF_SEL_REQ_STALL_GL2C3', - 31: 'GL2A_PERF_SEL_REQ_STALL_GL2C4', - 32: 'GL2A_PERF_SEL_REQ_STALL_GL2C5', - 33: 'GL2A_PERF_SEL_REQ_STALL_GL2C6', - 34: 'GL2A_PERF_SEL_REQ_STALL_GL2C7', - 35: 'GL2A_PERF_SEL_RTN_STALL_GL2C0', - 36: 'GL2A_PERF_SEL_RTN_STALL_GL2C1', - 37: 'GL2A_PERF_SEL_RTN_STALL_GL2C2', - 38: 'GL2A_PERF_SEL_RTN_STALL_GL2C3', - 39: 'GL2A_PERF_SEL_RTN_STALL_GL2C4', - 40: 'GL2A_PERF_SEL_RTN_STALL_GL2C5', - 41: 'GL2A_PERF_SEL_RTN_STALL_GL2C6', - 42: 'GL2A_PERF_SEL_RTN_STALL_GL2C7', - 43: 'GL2A_PERF_SEL_RTN_CLIENT0', - 44: 'GL2A_PERF_SEL_RTN_CLIENT1', - 45: 'GL2A_PERF_SEL_RTN_CLIENT2', - 46: 'GL2A_PERF_SEL_RTN_CLIENT3', - 47: 'GL2A_PERF_SEL_RTN_CLIENT4', - 48: 'GL2A_PERF_SEL_RTN_CLIENT5', - 49: 'GL2A_PERF_SEL_RTN_CLIENT6', - 50: 'GL2A_PERF_SEL_RTN_CLIENT7', - 51: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT0', - 52: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT1', - 53: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT2', - 54: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT3', - 55: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT4', - 56: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT5', - 57: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT6', - 58: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT7', -} -GL2A_PERF_SEL_NONE = 0 -GL2A_PERF_SEL_CYCLE = 1 -GL2A_PERF_SEL_BUSY = 2 -GL2A_PERF_SEL_REQ_GL2C0 = 3 -GL2A_PERF_SEL_REQ_GL2C1 = 4 -GL2A_PERF_SEL_REQ_GL2C2 = 5 -GL2A_PERF_SEL_REQ_GL2C3 = 6 -GL2A_PERF_SEL_REQ_GL2C4 = 7 -GL2A_PERF_SEL_REQ_GL2C5 = 8 -GL2A_PERF_SEL_REQ_GL2C6 = 9 -GL2A_PERF_SEL_REQ_GL2C7 = 10 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C0 = 11 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C1 = 12 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C2 = 13 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C3 = 14 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C4 = 15 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C5 = 16 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C6 = 17 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C7 = 18 -GL2A_PERF_SEL_REQ_BURST_GL2C0 = 19 -GL2A_PERF_SEL_REQ_BURST_GL2C1 = 20 -GL2A_PERF_SEL_REQ_BURST_GL2C2 = 21 -GL2A_PERF_SEL_REQ_BURST_GL2C3 = 22 -GL2A_PERF_SEL_REQ_BURST_GL2C4 = 23 -GL2A_PERF_SEL_REQ_BURST_GL2C5 = 24 -GL2A_PERF_SEL_REQ_BURST_GL2C6 = 25 -GL2A_PERF_SEL_REQ_BURST_GL2C7 = 26 -GL2A_PERF_SEL_REQ_STALL_GL2C0 = 27 -GL2A_PERF_SEL_REQ_STALL_GL2C1 = 28 -GL2A_PERF_SEL_REQ_STALL_GL2C2 = 29 -GL2A_PERF_SEL_REQ_STALL_GL2C3 = 30 -GL2A_PERF_SEL_REQ_STALL_GL2C4 = 31 -GL2A_PERF_SEL_REQ_STALL_GL2C5 = 32 -GL2A_PERF_SEL_REQ_STALL_GL2C6 = 33 -GL2A_PERF_SEL_REQ_STALL_GL2C7 = 34 -GL2A_PERF_SEL_RTN_STALL_GL2C0 = 35 -GL2A_PERF_SEL_RTN_STALL_GL2C1 = 36 -GL2A_PERF_SEL_RTN_STALL_GL2C2 = 37 -GL2A_PERF_SEL_RTN_STALL_GL2C3 = 38 -GL2A_PERF_SEL_RTN_STALL_GL2C4 = 39 -GL2A_PERF_SEL_RTN_STALL_GL2C5 = 40 -GL2A_PERF_SEL_RTN_STALL_GL2C6 = 41 -GL2A_PERF_SEL_RTN_STALL_GL2C7 = 42 -GL2A_PERF_SEL_RTN_CLIENT0 = 43 -GL2A_PERF_SEL_RTN_CLIENT1 = 44 -GL2A_PERF_SEL_RTN_CLIENT2 = 45 -GL2A_PERF_SEL_RTN_CLIENT3 = 46 -GL2A_PERF_SEL_RTN_CLIENT4 = 47 -GL2A_PERF_SEL_RTN_CLIENT5 = 48 -GL2A_PERF_SEL_RTN_CLIENT6 = 49 -GL2A_PERF_SEL_RTN_CLIENT7 = 50 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT0 = 51 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT1 = 52 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT2 = 53 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT3 = 54 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT4 = 55 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT5 = 56 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT6 = 57 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT7 = 58 -GL2A_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_PERF_SEL' -GRBM_PERF_SEL__enumvalues = { - 0: 'GRBM_PERF_SEL_COUNT', - 1: 'GRBM_PERF_SEL_USER_DEFINED', - 2: 'GRBM_PERF_SEL_GUI_ACTIVE', - 3: 'GRBM_PERF_SEL_CP_BUSY', - 4: 'GRBM_PERF_SEL_CP_COHER_BUSY', - 5: 'GRBM_PERF_SEL_CP_DMA_BUSY', - 6: 'GRBM_PERF_SEL_CB_BUSY', - 7: 'GRBM_PERF_SEL_DB_BUSY', - 8: 'GRBM_PERF_SEL_PA_BUSY', - 9: 'GRBM_PERF_SEL_SC_BUSY', - 10: 'GRBM_PERF_SEL_RESERVED_6', - 11: 'GRBM_PERF_SEL_SPI_BUSY', - 12: 'GRBM_PERF_SEL_SX_BUSY', - 13: 'GRBM_PERF_SEL_TA_BUSY', - 14: 'GRBM_PERF_SEL_CB_CLEAN', - 15: 'GRBM_PERF_SEL_DB_CLEAN', - 16: 'GRBM_PERF_SEL_RESERVED_5', - 17: 'GRBM_PERF_SEL_RESERVED_9', - 18: 'GRBM_PERF_SEL_RESERVED_4', - 19: 'GRBM_PERF_SEL_RESERVED_3', - 20: 'GRBM_PERF_SEL_RESERVED_2', - 21: 'GRBM_PERF_SEL_RESERVED_1', - 22: 'GRBM_PERF_SEL_RESERVED_0', - 23: 'GRBM_PERF_SEL_RESERVED_8', - 24: 'GRBM_PERF_SEL_RESERVED_7', - 25: 'GRBM_PERF_SEL_GDS_BUSY', - 26: 'GRBM_PERF_SEL_BCI_BUSY', - 27: 'GRBM_PERF_SEL_RLC_BUSY', - 28: 'GRBM_PERF_SEL_TCP_BUSY', - 29: 'GRBM_PERF_SEL_CPG_BUSY', - 30: 'GRBM_PERF_SEL_CPC_BUSY', - 31: 'GRBM_PERF_SEL_CPF_BUSY', - 32: 'GRBM_PERF_SEL_GE_BUSY', - 33: 'GRBM_PERF_SEL_GE_NO_DMA_BUSY', - 34: 'GRBM_PERF_SEL_UTCL2_BUSY', - 35: 'GRBM_PERF_SEL_EA_BUSY', - 36: 'GRBM_PERF_SEL_RMI_BUSY', - 37: 'GRBM_PERF_SEL_CPAXI_BUSY', - 39: 'GRBM_PERF_SEL_UTCL1_BUSY', - 40: 'GRBM_PERF_SEL_GL2CC_BUSY', - 41: 'GRBM_PERF_SEL_SDMA_BUSY', - 42: 'GRBM_PERF_SEL_CH_BUSY', - 43: 'GRBM_PERF_SEL_PH_BUSY', - 44: 'GRBM_PERF_SEL_PMM_BUSY', - 45: 'GRBM_PERF_SEL_GUS_BUSY', - 46: 'GRBM_PERF_SEL_GL1CC_BUSY', -} -GRBM_PERF_SEL_COUNT = 0 -GRBM_PERF_SEL_USER_DEFINED = 1 -GRBM_PERF_SEL_GUI_ACTIVE = 2 -GRBM_PERF_SEL_CP_BUSY = 3 -GRBM_PERF_SEL_CP_COHER_BUSY = 4 -GRBM_PERF_SEL_CP_DMA_BUSY = 5 -GRBM_PERF_SEL_CB_BUSY = 6 -GRBM_PERF_SEL_DB_BUSY = 7 -GRBM_PERF_SEL_PA_BUSY = 8 -GRBM_PERF_SEL_SC_BUSY = 9 -GRBM_PERF_SEL_RESERVED_6 = 10 -GRBM_PERF_SEL_SPI_BUSY = 11 -GRBM_PERF_SEL_SX_BUSY = 12 -GRBM_PERF_SEL_TA_BUSY = 13 -GRBM_PERF_SEL_CB_CLEAN = 14 -GRBM_PERF_SEL_DB_CLEAN = 15 -GRBM_PERF_SEL_RESERVED_5 = 16 -GRBM_PERF_SEL_RESERVED_9 = 17 -GRBM_PERF_SEL_RESERVED_4 = 18 -GRBM_PERF_SEL_RESERVED_3 = 19 -GRBM_PERF_SEL_RESERVED_2 = 20 -GRBM_PERF_SEL_RESERVED_1 = 21 -GRBM_PERF_SEL_RESERVED_0 = 22 -GRBM_PERF_SEL_RESERVED_8 = 23 -GRBM_PERF_SEL_RESERVED_7 = 24 -GRBM_PERF_SEL_GDS_BUSY = 25 -GRBM_PERF_SEL_BCI_BUSY = 26 -GRBM_PERF_SEL_RLC_BUSY = 27 -GRBM_PERF_SEL_TCP_BUSY = 28 -GRBM_PERF_SEL_CPG_BUSY = 29 -GRBM_PERF_SEL_CPC_BUSY = 30 -GRBM_PERF_SEL_CPF_BUSY = 31 -GRBM_PERF_SEL_GE_BUSY = 32 -GRBM_PERF_SEL_GE_NO_DMA_BUSY = 33 -GRBM_PERF_SEL_UTCL2_BUSY = 34 -GRBM_PERF_SEL_EA_BUSY = 35 -GRBM_PERF_SEL_RMI_BUSY = 36 -GRBM_PERF_SEL_CPAXI_BUSY = 37 -GRBM_PERF_SEL_UTCL1_BUSY = 39 -GRBM_PERF_SEL_GL2CC_BUSY = 40 -GRBM_PERF_SEL_SDMA_BUSY = 41 -GRBM_PERF_SEL_CH_BUSY = 42 -GRBM_PERF_SEL_PH_BUSY = 43 -GRBM_PERF_SEL_PMM_BUSY = 44 -GRBM_PERF_SEL_GUS_BUSY = 45 -GRBM_PERF_SEL_GL1CC_BUSY = 46 -GRBM_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE0_PERF_SEL' -GRBM_SE0_PERF_SEL__enumvalues = { - 0: 'GRBM_SE0_PERF_SEL_COUNT', - 1: 'GRBM_SE0_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE0_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE0_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE0_PERF_SEL_SC_BUSY', - 5: 'GRBM_SE0_PERF_SEL_RESERVED_1', - 6: 'GRBM_SE0_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE0_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE0_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE0_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE0_PERF_SEL_DB_CLEAN', - 11: 'GRBM_SE0_PERF_SEL_RESERVED_0', - 12: 'GRBM_SE0_PERF_SEL_PA_BUSY', - 13: 'GRBM_SE0_PERF_SEL_RESERVED_2', - 14: 'GRBM_SE0_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE0_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE0_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE0_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE0_PERF_SEL_GL1CC_BUSY', -} -GRBM_SE0_PERF_SEL_COUNT = 0 -GRBM_SE0_PERF_SEL_USER_DEFINED = 1 -GRBM_SE0_PERF_SEL_CB_BUSY = 2 -GRBM_SE0_PERF_SEL_DB_BUSY = 3 -GRBM_SE0_PERF_SEL_SC_BUSY = 4 -GRBM_SE0_PERF_SEL_RESERVED_1 = 5 -GRBM_SE0_PERF_SEL_SPI_BUSY = 6 -GRBM_SE0_PERF_SEL_SX_BUSY = 7 -GRBM_SE0_PERF_SEL_TA_BUSY = 8 -GRBM_SE0_PERF_SEL_CB_CLEAN = 9 -GRBM_SE0_PERF_SEL_DB_CLEAN = 10 -GRBM_SE0_PERF_SEL_RESERVED_0 = 11 -GRBM_SE0_PERF_SEL_PA_BUSY = 12 -GRBM_SE0_PERF_SEL_RESERVED_2 = 13 -GRBM_SE0_PERF_SEL_BCI_BUSY = 14 -GRBM_SE0_PERF_SEL_RMI_BUSY = 15 -GRBM_SE0_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE0_PERF_SEL_TCP_BUSY = 17 -GRBM_SE0_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE0_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE1_PERF_SEL' -GRBM_SE1_PERF_SEL__enumvalues = { - 0: 'GRBM_SE1_PERF_SEL_COUNT', - 1: 'GRBM_SE1_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE1_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE1_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE1_PERF_SEL_SC_BUSY', - 5: 'GRBM_SE1_PERF_SEL_RESERVED_1', - 6: 'GRBM_SE1_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE1_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE1_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE1_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE1_PERF_SEL_DB_CLEAN', - 11: 'GRBM_SE1_PERF_SEL_RESERVED_0', - 12: 'GRBM_SE1_PERF_SEL_PA_BUSY', - 13: 'GRBM_SE1_PERF_SEL_RESERVED_2', - 14: 'GRBM_SE1_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE1_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE1_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE1_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE1_PERF_SEL_GL1CC_BUSY', -} -GRBM_SE1_PERF_SEL_COUNT = 0 -GRBM_SE1_PERF_SEL_USER_DEFINED = 1 -GRBM_SE1_PERF_SEL_CB_BUSY = 2 -GRBM_SE1_PERF_SEL_DB_BUSY = 3 -GRBM_SE1_PERF_SEL_SC_BUSY = 4 -GRBM_SE1_PERF_SEL_RESERVED_1 = 5 -GRBM_SE1_PERF_SEL_SPI_BUSY = 6 -GRBM_SE1_PERF_SEL_SX_BUSY = 7 -GRBM_SE1_PERF_SEL_TA_BUSY = 8 -GRBM_SE1_PERF_SEL_CB_CLEAN = 9 -GRBM_SE1_PERF_SEL_DB_CLEAN = 10 -GRBM_SE1_PERF_SEL_RESERVED_0 = 11 -GRBM_SE1_PERF_SEL_PA_BUSY = 12 -GRBM_SE1_PERF_SEL_RESERVED_2 = 13 -GRBM_SE1_PERF_SEL_BCI_BUSY = 14 -GRBM_SE1_PERF_SEL_RMI_BUSY = 15 -GRBM_SE1_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE1_PERF_SEL_TCP_BUSY = 17 -GRBM_SE1_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE1_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE2_PERF_SEL' -GRBM_SE2_PERF_SEL__enumvalues = { - 0: 'GRBM_SE2_PERF_SEL_COUNT', - 1: 'GRBM_SE2_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE2_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE2_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE2_PERF_SEL_SC_BUSY', - 5: 'GRBM_SE2_PERF_SEL_RESERVED_1', - 6: 'GRBM_SE2_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE2_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE2_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE2_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE2_PERF_SEL_DB_CLEAN', - 11: 'GRBM_SE2_PERF_SEL_RESERVED_0', - 12: 'GRBM_SE2_PERF_SEL_PA_BUSY', - 13: 'GRBM_SE2_PERF_SEL_RESERVED_2', - 14: 'GRBM_SE2_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE2_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE2_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE2_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE2_PERF_SEL_GL1CC_BUSY', -} -GRBM_SE2_PERF_SEL_COUNT = 0 -GRBM_SE2_PERF_SEL_USER_DEFINED = 1 -GRBM_SE2_PERF_SEL_CB_BUSY = 2 -GRBM_SE2_PERF_SEL_DB_BUSY = 3 -GRBM_SE2_PERF_SEL_SC_BUSY = 4 -GRBM_SE2_PERF_SEL_RESERVED_1 = 5 -GRBM_SE2_PERF_SEL_SPI_BUSY = 6 -GRBM_SE2_PERF_SEL_SX_BUSY = 7 -GRBM_SE2_PERF_SEL_TA_BUSY = 8 -GRBM_SE2_PERF_SEL_CB_CLEAN = 9 -GRBM_SE2_PERF_SEL_DB_CLEAN = 10 -GRBM_SE2_PERF_SEL_RESERVED_0 = 11 -GRBM_SE2_PERF_SEL_PA_BUSY = 12 -GRBM_SE2_PERF_SEL_RESERVED_2 = 13 -GRBM_SE2_PERF_SEL_BCI_BUSY = 14 -GRBM_SE2_PERF_SEL_RMI_BUSY = 15 -GRBM_SE2_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE2_PERF_SEL_TCP_BUSY = 17 -GRBM_SE2_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE2_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE3_PERF_SEL' -GRBM_SE3_PERF_SEL__enumvalues = { - 0: 'GRBM_SE3_PERF_SEL_COUNT', - 1: 'GRBM_SE3_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE3_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE3_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE3_PERF_SEL_SC_BUSY', - 5: 'GRBM_SE3_PERF_SEL_RESERVED_1', - 6: 'GRBM_SE3_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE3_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE3_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE3_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE3_PERF_SEL_DB_CLEAN', - 11: 'GRBM_SE3_PERF_SEL_RESERVED_0', - 12: 'GRBM_SE3_PERF_SEL_PA_BUSY', - 13: 'GRBM_SE3_PERF_SEL_RESERVED_2', - 14: 'GRBM_SE3_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE3_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE3_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE3_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE3_PERF_SEL_GL1CC_BUSY', -} -GRBM_SE3_PERF_SEL_COUNT = 0 -GRBM_SE3_PERF_SEL_USER_DEFINED = 1 -GRBM_SE3_PERF_SEL_CB_BUSY = 2 -GRBM_SE3_PERF_SEL_DB_BUSY = 3 -GRBM_SE3_PERF_SEL_SC_BUSY = 4 -GRBM_SE3_PERF_SEL_RESERVED_1 = 5 -GRBM_SE3_PERF_SEL_SPI_BUSY = 6 -GRBM_SE3_PERF_SEL_SX_BUSY = 7 -GRBM_SE3_PERF_SEL_TA_BUSY = 8 -GRBM_SE3_PERF_SEL_CB_CLEAN = 9 -GRBM_SE3_PERF_SEL_DB_CLEAN = 10 -GRBM_SE3_PERF_SEL_RESERVED_0 = 11 -GRBM_SE3_PERF_SEL_PA_BUSY = 12 -GRBM_SE3_PERF_SEL_RESERVED_2 = 13 -GRBM_SE3_PERF_SEL_BCI_BUSY = 14 -GRBM_SE3_PERF_SEL_RMI_BUSY = 15 -GRBM_SE3_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE3_PERF_SEL_TCP_BUSY = 17 -GRBM_SE3_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE3_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CP_RING_ID' -CP_RING_ID__enumvalues = { - 0: 'RINGID0', - 1: 'RINGID1', - 2: 'RINGID2', - 3: 'RINGID3', -} -RINGID0 = 0 -RINGID1 = 1 -RINGID2 = 2 -RINGID3 = 3 -CP_RING_ID = ctypes.c_uint32 # enum - -# values for enumeration 'CP_PIPE_ID' -CP_PIPE_ID__enumvalues = { - 0: 'PIPE_ID0', - 1: 'PIPE_ID1', - 2: 'PIPE_ID2', - 3: 'PIPE_ID3', -} -PIPE_ID0 = 0 -PIPE_ID1 = 1 -PIPE_ID2 = 2 -PIPE_ID3 = 3 -CP_PIPE_ID = ctypes.c_uint32 # enum - -# values for enumeration 'CP_ME_ID' -CP_ME_ID__enumvalues = { - 0: 'ME_ID0', - 1: 'ME_ID1', - 2: 'ME_ID2', - 3: 'ME_ID3', -} -ME_ID0 = 0 -ME_ID1 = 1 -ME_ID2 = 2 -ME_ID3 = 3 -CP_ME_ID = ctypes.c_uint32 # enum - -# values for enumeration 'SPM_PERFMON_STATE' -SPM_PERFMON_STATE__enumvalues = { - 0: 'STRM_PERFMON_STATE_DISABLE_AND_RESET', - 1: 'STRM_PERFMON_STATE_START_COUNTING', - 2: 'STRM_PERFMON_STATE_STOP_COUNTING', - 3: 'STRM_PERFMON_STATE_RESERVED_3', - 4: 'STRM_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 5: 'STRM_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', -} -STRM_PERFMON_STATE_DISABLE_AND_RESET = 0 -STRM_PERFMON_STATE_START_COUNTING = 1 -STRM_PERFMON_STATE_STOP_COUNTING = 2 -STRM_PERFMON_STATE_RESERVED_3 = 3 -STRM_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM = 4 -STRM_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM = 5 -SPM_PERFMON_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'CP_PERFMON_STATE' -CP_PERFMON_STATE__enumvalues = { - 0: 'CP_PERFMON_STATE_DISABLE_AND_RESET', - 1: 'CP_PERFMON_STATE_START_COUNTING', - 2: 'CP_PERFMON_STATE_STOP_COUNTING', - 3: 'CP_PERFMON_STATE_RESERVED_3', - 4: 'CP_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 5: 'CP_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', -} -CP_PERFMON_STATE_DISABLE_AND_RESET = 0 -CP_PERFMON_STATE_START_COUNTING = 1 -CP_PERFMON_STATE_STOP_COUNTING = 2 -CP_PERFMON_STATE_RESERVED_3 = 3 -CP_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM = 4 -CP_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM = 5 -CP_PERFMON_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'CP_PERFMON_ENABLE_MODE' -CP_PERFMON_ENABLE_MODE__enumvalues = { - 0: 'CP_PERFMON_ENABLE_MODE_ALWAYS_COUNT', - 1: 'CP_PERFMON_ENABLE_MODE_RESERVED_1', - 2: 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_TRUE', - 3: 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_FALSE', -} -CP_PERFMON_ENABLE_MODE_ALWAYS_COUNT = 0 -CP_PERFMON_ENABLE_MODE_RESERVED_1 = 1 -CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_TRUE = 2 -CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_FALSE = 3 -CP_PERFMON_ENABLE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CPG_PERFCOUNT_SEL' -CPG_PERFCOUNT_SEL__enumvalues = { - 0: 'CPG_PERF_SEL_ALWAYS_COUNT', - 1: 'CPG_PERF_SEL_RBIU_FIFO_FULL', - 2: 'CPG_PERF_SEL_CSF_RTS_BUT_MIU_NOT_RTR', - 3: 'CPG_PERF_SEL_CSF_ST_BASE_SIZE_FIFO_FULL', - 4: 'CPG_PERF_SEL_CP_GRBM_DWORDS_SENT', - 5: 'CPG_PERF_SEL_ME_PARSER_BUSY', - 6: 'CPG_PERF_SEL_COUNT_TYPE0_PACKETS', - 7: 'CPG_PERF_SEL_COUNT_TYPE3_PACKETS', - 8: 'CPG_PERF_SEL_CSF_FETCHING_CMD_BUFFERS', - 9: 'CPG_PERF_SEL_CP_GRBM_OUT_OF_CREDITS', - 10: 'CPG_PERF_SEL_CP_PFP_GRBM_OUT_OF_CREDITS', - 11: 'CPG_PERF_SEL_CP_GDS_GRBM_OUT_OF_CREDITS', - 12: 'CPG_PERF_SEL_RCIU_STALLED_ON_ME_READ', - 13: 'CPG_PERF_SEL_RCIU_STALLED_ON_DMA_READ', - 14: 'CPG_PERF_SEL_SSU_STALLED_ON_ACTIVE_CNTX', - 15: 'CPG_PERF_SEL_SSU_STALLED_ON_CLEAN_SIGNALS', - 16: 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_PULSE', - 17: 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_WR_CONFIRM', - 18: 'CPG_PERF_SEL_PFP_STALLED_ON_CSF_READY', - 19: 'CPG_PERF_SEL_PFP_STALLED_ON_MEQ_READY', - 20: 'CPG_PERF_SEL_PFP_STALLED_ON_RCIU_READY', - 21: 'CPG_PERF_SEL_PFP_STALLED_FOR_DATA_FROM_ROQ', - 22: 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_PFP', - 23: 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_STQ', - 24: 'CPG_PERF_SEL_ME_STALLED_ON_NO_AVAIL_GFX_CNTX', - 25: 'CPG_PERF_SEL_ME_STALLED_WRITING_TO_RCIU', - 26: 'CPG_PERF_SEL_ME_STALLED_WRITING_CONSTANTS', - 27: 'CPG_PERF_SEL_ME_STALLED_ON_PARTIAL_FLUSH', - 28: 'CPG_PERF_SEL_ME_WAIT_ON_CE_COUNTER', - 29: 'CPG_PERF_SEL_ME_WAIT_ON_AVAIL_BUFFER', - 30: 'CPG_PERF_SEL_SEMAPHORE_BUSY_POLLING_FOR_PASS', - 31: 'CPG_PERF_SEL_LOAD_STALLED_ON_SET_COHERENCY', - 32: 'CPG_PERF_SEL_DYNAMIC_CLK_VALID', - 33: 'CPG_PERF_SEL_REGISTER_CLK_VALID', - 34: 'CPG_PERF_SEL_GUS_WRITE_REQUEST_SENT', - 35: 'CPG_PERF_SEL_GUS_READ_REQUEST_SENT', - 36: 'CPG_PERF_SEL_CE_STALL_RAM_DUMP', - 37: 'CPG_PERF_SEL_CE_STALL_RAM_WRITE', - 38: 'CPG_PERF_SEL_CE_STALL_ON_INC_FIFO', - 39: 'CPG_PERF_SEL_CE_STALL_ON_WR_RAM_FIFO', - 40: 'CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_MIU', - 41: 'CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_ROQ', - 42: 'CPG_PERF_SEL_CE_STALL_ON_CE_BUFFER_FLAG', - 43: 'CPG_PERF_SEL_CE_STALL_ON_DE_COUNTER', - 44: 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 45: 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_TAGS', - 46: 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 47: 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', - 48: 'CPG_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 49: 'CPG_PERF_SEL_TCIU_WRITE_REQUEST_SENT', - 50: 'CPG_PERF_SEL_TCIU_READ_REQUEST_SENT', - 51: 'CPG_PERF_SEL_CPG_STAT_BUSY', - 52: 'CPG_PERF_SEL_CPG_STAT_IDLE', - 53: 'CPG_PERF_SEL_CPG_STAT_STALL', - 54: 'CPG_PERF_SEL_CPG_TCIU_BUSY', - 55: 'CPG_PERF_SEL_CPG_TCIU_IDLE', - 56: 'CPF_PERF_SEL_CPG_TCIU_STALL', - 57: 'CPG_PERF_SEL_CPG_UTCL2IU_BUSY', - 58: 'CPG_PERF_SEL_CPG_UTCL2IU_IDLE', - 59: 'CPG_PERF_SEL_CPG_UTCL2IU_STALL', - 60: 'CPG_PERF_SEL_CPG_GCRIU_BUSY', - 61: 'CPG_PERF_SEL_CPG_GCRIU_IDLE', - 62: 'CPG_PERF_SEL_CPG_GCRIU_STALL', - 63: 'CPG_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 64: 'CPG_PERF_SEL_ALL_GFX_PIPES_BUSY', - 65: 'CPG_PERF_SEL_CPG_UTCL2IU_XACK', - 66: 'CPG_PERF_SEL_CPG_UTCL2IU_XNACK', - 67: 'CPG_PERF_SEL_PFP_STALLED_ON_MEQ_DDID_READY', - 68: 'CPG_PERF_SEL_PFP_INSTR_CACHE_HIT', - 69: 'CPG_PERF_SEL_PFP_INSTR_CACHE_MISS', - 70: 'CPG_PERF_SEL_CE_INSTR_CACHE_HIT', - 71: 'CPG_PERF_SEL_CE_INSTR_CACHE_MISS', - 72: 'CPG_PERF_SEL_ME_INSTR_CACHE_HIT', - 73: 'CPG_PERF_SEL_ME_INSTR_CACHE_MISS', - 74: 'CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB1', - 75: 'CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB1', - 76: 'CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB2', - 77: 'CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB2', -} -CPG_PERF_SEL_ALWAYS_COUNT = 0 -CPG_PERF_SEL_RBIU_FIFO_FULL = 1 -CPG_PERF_SEL_CSF_RTS_BUT_MIU_NOT_RTR = 2 -CPG_PERF_SEL_CSF_ST_BASE_SIZE_FIFO_FULL = 3 -CPG_PERF_SEL_CP_GRBM_DWORDS_SENT = 4 -CPG_PERF_SEL_ME_PARSER_BUSY = 5 -CPG_PERF_SEL_COUNT_TYPE0_PACKETS = 6 -CPG_PERF_SEL_COUNT_TYPE3_PACKETS = 7 -CPG_PERF_SEL_CSF_FETCHING_CMD_BUFFERS = 8 -CPG_PERF_SEL_CP_GRBM_OUT_OF_CREDITS = 9 -CPG_PERF_SEL_CP_PFP_GRBM_OUT_OF_CREDITS = 10 -CPG_PERF_SEL_CP_GDS_GRBM_OUT_OF_CREDITS = 11 -CPG_PERF_SEL_RCIU_STALLED_ON_ME_READ = 12 -CPG_PERF_SEL_RCIU_STALLED_ON_DMA_READ = 13 -CPG_PERF_SEL_SSU_STALLED_ON_ACTIVE_CNTX = 14 -CPG_PERF_SEL_SSU_STALLED_ON_CLEAN_SIGNALS = 15 -CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_PULSE = 16 -CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_WR_CONFIRM = 17 -CPG_PERF_SEL_PFP_STALLED_ON_CSF_READY = 18 -CPG_PERF_SEL_PFP_STALLED_ON_MEQ_READY = 19 -CPG_PERF_SEL_PFP_STALLED_ON_RCIU_READY = 20 -CPG_PERF_SEL_PFP_STALLED_FOR_DATA_FROM_ROQ = 21 -CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_PFP = 22 -CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_STQ = 23 -CPG_PERF_SEL_ME_STALLED_ON_NO_AVAIL_GFX_CNTX = 24 -CPG_PERF_SEL_ME_STALLED_WRITING_TO_RCIU = 25 -CPG_PERF_SEL_ME_STALLED_WRITING_CONSTANTS = 26 -CPG_PERF_SEL_ME_STALLED_ON_PARTIAL_FLUSH = 27 -CPG_PERF_SEL_ME_WAIT_ON_CE_COUNTER = 28 -CPG_PERF_SEL_ME_WAIT_ON_AVAIL_BUFFER = 29 -CPG_PERF_SEL_SEMAPHORE_BUSY_POLLING_FOR_PASS = 30 -CPG_PERF_SEL_LOAD_STALLED_ON_SET_COHERENCY = 31 -CPG_PERF_SEL_DYNAMIC_CLK_VALID = 32 -CPG_PERF_SEL_REGISTER_CLK_VALID = 33 -CPG_PERF_SEL_GUS_WRITE_REQUEST_SENT = 34 -CPG_PERF_SEL_GUS_READ_REQUEST_SENT = 35 -CPG_PERF_SEL_CE_STALL_RAM_DUMP = 36 -CPG_PERF_SEL_CE_STALL_RAM_WRITE = 37 -CPG_PERF_SEL_CE_STALL_ON_INC_FIFO = 38 -CPG_PERF_SEL_CE_STALL_ON_WR_RAM_FIFO = 39 -CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_MIU = 40 -CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_ROQ = 41 -CPG_PERF_SEL_CE_STALL_ON_CE_BUFFER_FLAG = 42 -CPG_PERF_SEL_CE_STALL_ON_DE_COUNTER = 43 -CPG_PERF_SEL_TCIU_STALL_WAIT_ON_FREE = 44 -CPG_PERF_SEL_TCIU_STALL_WAIT_ON_TAGS = 45 -CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE = 46 -CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS = 47 -CPG_PERF_SEL_UTCL1_STALL_ON_TRANSLATION = 48 -CPG_PERF_SEL_TCIU_WRITE_REQUEST_SENT = 49 -CPG_PERF_SEL_TCIU_READ_REQUEST_SENT = 50 -CPG_PERF_SEL_CPG_STAT_BUSY = 51 -CPG_PERF_SEL_CPG_STAT_IDLE = 52 -CPG_PERF_SEL_CPG_STAT_STALL = 53 -CPG_PERF_SEL_CPG_TCIU_BUSY = 54 -CPG_PERF_SEL_CPG_TCIU_IDLE = 55 -CPF_PERF_SEL_CPG_TCIU_STALL = 56 -CPG_PERF_SEL_CPG_UTCL2IU_BUSY = 57 -CPG_PERF_SEL_CPG_UTCL2IU_IDLE = 58 -CPG_PERF_SEL_CPG_UTCL2IU_STALL = 59 -CPG_PERF_SEL_CPG_GCRIU_BUSY = 60 -CPG_PERF_SEL_CPG_GCRIU_IDLE = 61 -CPG_PERF_SEL_CPG_GCRIU_STALL = 62 -CPG_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE = 63 -CPG_PERF_SEL_ALL_GFX_PIPES_BUSY = 64 -CPG_PERF_SEL_CPG_UTCL2IU_XACK = 65 -CPG_PERF_SEL_CPG_UTCL2IU_XNACK = 66 -CPG_PERF_SEL_PFP_STALLED_ON_MEQ_DDID_READY = 67 -CPG_PERF_SEL_PFP_INSTR_CACHE_HIT = 68 -CPG_PERF_SEL_PFP_INSTR_CACHE_MISS = 69 -CPG_PERF_SEL_CE_INSTR_CACHE_HIT = 70 -CPG_PERF_SEL_CE_INSTR_CACHE_MISS = 71 -CPG_PERF_SEL_ME_INSTR_CACHE_HIT = 72 -CPG_PERF_SEL_ME_INSTR_CACHE_MISS = 73 -CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB1 = 74 -CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB1 = 75 -CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB2 = 76 -CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB2 = 77 -CPG_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPF_PERFCOUNT_SEL' -CPF_PERFCOUNT_SEL__enumvalues = { - 0: 'CPF_PERF_SEL_ALWAYS_COUNT', - 1: 'CPF_PERF_SEL_MIU_STALLED_WAITING_RDREQ_FREE', - 2: 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_FREE', - 3: 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_TAGS', - 4: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_RING', - 5: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB1', - 6: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB2', - 7: 'CPF_PERF_SEL_CSF_BUSY_FOR_FECTHINC_STATE', - 8: 'CPF_PERF_SEL_MIU_BUSY_FOR_OUTSTANDING_TAGS', - 9: 'CPF_PERF_SEL_CSF_RTS_MIU_NOT_RTR', - 10: 'CPF_PERF_SEL_CSF_STATE_FIFO_NOT_RTR', - 11: 'CPF_PERF_SEL_CSF_FETCHING_CMD_BUFFERS', - 12: 'CPF_PERF_SEL_GRBM_DWORDS_SENT', - 13: 'CPF_PERF_SEL_DYNAMIC_CLOCK_VALID', - 14: 'CPF_PERF_SEL_REGISTER_CLOCK_VALID', - 15: 'CPF_PERF_SEL_GUS_WRITE_REQUEST_SEND', - 16: 'CPF_PERF_SEL_GUS_READ_REQUEST_SEND', - 17: 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 18: 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', - 19: 'CPF_PERF_SEL_GFX_UTCL1_STALL_ON_TRANSLATION', - 20: 'CPF_PERF_SEL_CMP_UTCL1_STALL_ON_TRANSLATION', - 21: 'CPF_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', - 22: 'CPF_PERF_SEL_TCIU_WRITE_REQUEST_SENT', - 23: 'CPF_PERF_SEL_TCIU_READ_REQUEST_SENT', - 24: 'CPF_PERF_SEL_CPF_STAT_BUSY', - 25: 'CPF_PERF_SEL_CPF_STAT_IDLE', - 26: 'CPF_PERF_SEL_CPF_STAT_STALL', - 27: 'CPF_PERF_SEL_CPF_TCIU_BUSY', - 28: 'CPF_PERF_SEL_CPF_TCIU_IDLE', - 29: 'CPF_PERF_SEL_CPF_TCIU_STALL', - 30: 'CPF_PERF_SEL_CPF_UTCL2IU_BUSY', - 31: 'CPF_PERF_SEL_CPF_UTCL2IU_IDLE', - 32: 'CPF_PERF_SEL_CPF_UTCL2IU_STALL', - 33: 'CPF_PERF_SEL_CPF_GCRIU_BUSY', - 34: 'CPF_PERF_SEL_CPF_GCRIU_IDLE', - 35: 'CPF_PERF_SEL_CPF_GCRIU_STALL', - 36: 'CPF_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 37: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_DB', - 38: 'CPF_PERF_SEL_CPF_UTCL2IU_XACK', - 39: 'CPF_PERF_SEL_CPF_UTCL2IU_XNACK', -} -CPF_PERF_SEL_ALWAYS_COUNT = 0 -CPF_PERF_SEL_MIU_STALLED_WAITING_RDREQ_FREE = 1 -CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_FREE = 2 -CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_TAGS = 3 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_RING = 4 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB1 = 5 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB2 = 6 -CPF_PERF_SEL_CSF_BUSY_FOR_FECTHINC_STATE = 7 -CPF_PERF_SEL_MIU_BUSY_FOR_OUTSTANDING_TAGS = 8 -CPF_PERF_SEL_CSF_RTS_MIU_NOT_RTR = 9 -CPF_PERF_SEL_CSF_STATE_FIFO_NOT_RTR = 10 -CPF_PERF_SEL_CSF_FETCHING_CMD_BUFFERS = 11 -CPF_PERF_SEL_GRBM_DWORDS_SENT = 12 -CPF_PERF_SEL_DYNAMIC_CLOCK_VALID = 13 -CPF_PERF_SEL_REGISTER_CLOCK_VALID = 14 -CPF_PERF_SEL_GUS_WRITE_REQUEST_SEND = 15 -CPF_PERF_SEL_GUS_READ_REQUEST_SEND = 16 -CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE = 17 -CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS = 18 -CPF_PERF_SEL_GFX_UTCL1_STALL_ON_TRANSLATION = 19 -CPF_PERF_SEL_CMP_UTCL1_STALL_ON_TRANSLATION = 20 -CPF_PERF_SEL_RCIU_STALL_WAIT_ON_FREE = 21 -CPF_PERF_SEL_TCIU_WRITE_REQUEST_SENT = 22 -CPF_PERF_SEL_TCIU_READ_REQUEST_SENT = 23 -CPF_PERF_SEL_CPF_STAT_BUSY = 24 -CPF_PERF_SEL_CPF_STAT_IDLE = 25 -CPF_PERF_SEL_CPF_STAT_STALL = 26 -CPF_PERF_SEL_CPF_TCIU_BUSY = 27 -CPF_PERF_SEL_CPF_TCIU_IDLE = 28 -CPF_PERF_SEL_CPF_TCIU_STALL = 29 -CPF_PERF_SEL_CPF_UTCL2IU_BUSY = 30 -CPF_PERF_SEL_CPF_UTCL2IU_IDLE = 31 -CPF_PERF_SEL_CPF_UTCL2IU_STALL = 32 -CPF_PERF_SEL_CPF_GCRIU_BUSY = 33 -CPF_PERF_SEL_CPF_GCRIU_IDLE = 34 -CPF_PERF_SEL_CPF_GCRIU_STALL = 35 -CPF_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE = 36 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_DB = 37 -CPF_PERF_SEL_CPF_UTCL2IU_XACK = 38 -CPF_PERF_SEL_CPF_UTCL2IU_XNACK = 39 -CPF_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPC_PERFCOUNT_SEL' -CPC_PERFCOUNT_SEL__enumvalues = { - 0: 'CPC_PERF_SEL_ALWAYS_COUNT', - 1: 'CPC_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', - 2: 'CPC_PERF_SEL_RCIU_STALL_PRIV_VIOLATION', - 3: 'CPC_PERF_SEL_MIU_STALL_ON_RDREQ_FREE', - 4: 'CPC_PERF_SEL_MIU_STALL_ON_WRREQ_FREE', - 5: 'CPC_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 6: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY', - 7: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY_PERF', - 8: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READ', - 9: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_GUS_READ', - 10: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_GUS_WRITE', - 11: 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ', - 12: 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ_PERF', - 13: 'CPC_PERF_SEL_ME1_BUSY_FOR_PACKET_DECODE', - 14: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY', - 15: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY_PERF', - 16: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READ', - 17: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_GUS_READ', - 18: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_GUS_WRITE', - 19: 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ', - 20: 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ_PERF', - 21: 'CPC_PERF_SEL_ME2_BUSY_FOR_PACKET_DECODE', - 22: 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 23: 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', - 24: 'CPC_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 25: 'CPC_PERF_SEL_CPC_STAT_BUSY', - 26: 'CPC_PERF_SEL_CPC_STAT_IDLE', - 27: 'CPC_PERF_SEL_CPC_STAT_STALL', - 28: 'CPC_PERF_SEL_CPC_TCIU_BUSY', - 29: 'CPC_PERF_SEL_CPC_TCIU_IDLE', - 30: 'CPC_PERF_SEL_CPC_UTCL2IU_BUSY', - 31: 'CPC_PERF_SEL_CPC_UTCL2IU_IDLE', - 32: 'CPC_PERF_SEL_CPC_UTCL2IU_STALL', - 33: 'CPC_PERF_SEL_ME1_DC0_SPI_BUSY', - 34: 'CPC_PERF_SEL_ME2_DC1_SPI_BUSY', - 35: 'CPC_PERF_SEL_CPC_GCRIU_BUSY', - 36: 'CPC_PERF_SEL_CPC_GCRIU_IDLE', - 37: 'CPC_PERF_SEL_CPC_GCRIU_STALL', - 38: 'CPC_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 39: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_TCIU_READ', - 40: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_TCIU_READ', - 41: 'CPC_PERF_SEL_CPC_UTCL2IU_XACK', - 42: 'CPC_PERF_SEL_CPC_UTCL2IU_XNACK', - 43: 'CPC_PERF_SEL_MEC_INSTR_CACHE_HIT', - 44: 'CPC_PERF_SEL_MEC_INSTR_CACHE_MISS', -} -CPC_PERF_SEL_ALWAYS_COUNT = 0 -CPC_PERF_SEL_RCIU_STALL_WAIT_ON_FREE = 1 -CPC_PERF_SEL_RCIU_STALL_PRIV_VIOLATION = 2 -CPC_PERF_SEL_MIU_STALL_ON_RDREQ_FREE = 3 -CPC_PERF_SEL_MIU_STALL_ON_WRREQ_FREE = 4 -CPC_PERF_SEL_TCIU_STALL_WAIT_ON_FREE = 5 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY = 6 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY_PERF = 7 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READ = 8 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_GUS_READ = 9 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_GUS_WRITE = 10 -CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ = 11 -CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ_PERF = 12 -CPC_PERF_SEL_ME1_BUSY_FOR_PACKET_DECODE = 13 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY = 14 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY_PERF = 15 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READ = 16 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_GUS_READ = 17 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_GUS_WRITE = 18 -CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ = 19 -CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ_PERF = 20 -CPC_PERF_SEL_ME2_BUSY_FOR_PACKET_DECODE = 21 -CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE = 22 -CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS = 23 -CPC_PERF_SEL_UTCL1_STALL_ON_TRANSLATION = 24 -CPC_PERF_SEL_CPC_STAT_BUSY = 25 -CPC_PERF_SEL_CPC_STAT_IDLE = 26 -CPC_PERF_SEL_CPC_STAT_STALL = 27 -CPC_PERF_SEL_CPC_TCIU_BUSY = 28 -CPC_PERF_SEL_CPC_TCIU_IDLE = 29 -CPC_PERF_SEL_CPC_UTCL2IU_BUSY = 30 -CPC_PERF_SEL_CPC_UTCL2IU_IDLE = 31 -CPC_PERF_SEL_CPC_UTCL2IU_STALL = 32 -CPC_PERF_SEL_ME1_DC0_SPI_BUSY = 33 -CPC_PERF_SEL_ME2_DC1_SPI_BUSY = 34 -CPC_PERF_SEL_CPC_GCRIU_BUSY = 35 -CPC_PERF_SEL_CPC_GCRIU_IDLE = 36 -CPC_PERF_SEL_CPC_GCRIU_STALL = 37 -CPC_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE = 38 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_TCIU_READ = 39 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_TCIU_READ = 40 -CPC_PERF_SEL_CPC_UTCL2IU_XACK = 41 -CPC_PERF_SEL_CPC_UTCL2IU_XNACK = 42 -CPC_PERF_SEL_MEC_INSTR_CACHE_HIT = 43 -CPC_PERF_SEL_MEC_INSTR_CACHE_MISS = 44 -CPC_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CP_ALPHA_TAG_RAM_SEL' -CP_ALPHA_TAG_RAM_SEL__enumvalues = { - 0: 'CPG_TAG_RAM', - 1: 'CPC_TAG_RAM', - 2: 'CPF_TAG_RAM', - 3: 'RSV_TAG_RAM', -} -CPG_TAG_RAM = 0 -CPC_TAG_RAM = 1 -CPF_TAG_RAM = 2 -RSV_TAG_RAM = 3 -CP_ALPHA_TAG_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPF_PERFCOUNTWINDOW_SEL' -CPF_PERFCOUNTWINDOW_SEL__enumvalues = { - 0: 'CPF_PERFWINDOW_SEL_CSF', - 1: 'CPF_PERFWINDOW_SEL_HQD1', - 2: 'CPF_PERFWINDOW_SEL_HQD2', - 3: 'CPF_PERFWINDOW_SEL_RDMA', - 4: 'CPF_PERFWINDOW_SEL_RWPP', -} -CPF_PERFWINDOW_SEL_CSF = 0 -CPF_PERFWINDOW_SEL_HQD1 = 1 -CPF_PERFWINDOW_SEL_HQD2 = 2 -CPF_PERFWINDOW_SEL_RDMA = 3 -CPF_PERFWINDOW_SEL_RWPP = 4 -CPF_PERFCOUNTWINDOW_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPG_PERFCOUNTWINDOW_SEL' -CPG_PERFCOUNTWINDOW_SEL__enumvalues = { - 0: 'CPG_PERFWINDOW_SEL_PFP', - 1: 'CPG_PERFWINDOW_SEL_ME', - 2: 'CPG_PERFWINDOW_SEL_CE', - 3: 'CPG_PERFWINDOW_SEL_MES', - 4: 'CPG_PERFWINDOW_SEL_MEC1', - 5: 'CPG_PERFWINDOW_SEL_MEC2', - 6: 'CPG_PERFWINDOW_SEL_DFY', - 7: 'CPG_PERFWINDOW_SEL_DMA', - 8: 'CPG_PERFWINDOW_SEL_SHADOW', - 9: 'CPG_PERFWINDOW_SEL_RB', - 10: 'CPG_PERFWINDOW_SEL_CEDMA', - 11: 'CPG_PERFWINDOW_SEL_PRT_HDR_RPTR', - 12: 'CPG_PERFWINDOW_SEL_PRT_SMP_RPTR', - 13: 'CPG_PERFWINDOW_SEL_PQ1', - 14: 'CPG_PERFWINDOW_SEL_PQ2', - 15: 'CPG_PERFWINDOW_SEL_PQ3', - 16: 'CPG_PERFWINDOW_SEL_MEMWR', - 17: 'CPG_PERFWINDOW_SEL_MEMRD', - 18: 'CPG_PERFWINDOW_SEL_VGT0', - 19: 'CPG_PERFWINDOW_SEL_VGT1', - 20: 'CPG_PERFWINDOW_SEL_APPEND', - 21: 'CPG_PERFWINDOW_SEL_QURD', - 22: 'CPG_PERFWINDOW_SEL_DDID', - 23: 'CPG_PERFWINDOW_SEL_SR', - 24: 'CPG_PERFWINDOW_SEL_QU_EOP', - 25: 'CPG_PERFWINDOW_SEL_QU_STRM', - 26: 'CPG_PERFWINDOW_SEL_QU_PIPE', - 27: 'CPG_PERFWINDOW_SEL_RESERVED1', - 28: 'CPG_PERFWINDOW_SEL_CPC_IC', - 29: 'CPG_PERFWINDOW_SEL_RESERVED2', - 30: 'CPG_PERFWINDOW_SEL_CPG_IC', -} -CPG_PERFWINDOW_SEL_PFP = 0 -CPG_PERFWINDOW_SEL_ME = 1 -CPG_PERFWINDOW_SEL_CE = 2 -CPG_PERFWINDOW_SEL_MES = 3 -CPG_PERFWINDOW_SEL_MEC1 = 4 -CPG_PERFWINDOW_SEL_MEC2 = 5 -CPG_PERFWINDOW_SEL_DFY = 6 -CPG_PERFWINDOW_SEL_DMA = 7 -CPG_PERFWINDOW_SEL_SHADOW = 8 -CPG_PERFWINDOW_SEL_RB = 9 -CPG_PERFWINDOW_SEL_CEDMA = 10 -CPG_PERFWINDOW_SEL_PRT_HDR_RPTR = 11 -CPG_PERFWINDOW_SEL_PRT_SMP_RPTR = 12 -CPG_PERFWINDOW_SEL_PQ1 = 13 -CPG_PERFWINDOW_SEL_PQ2 = 14 -CPG_PERFWINDOW_SEL_PQ3 = 15 -CPG_PERFWINDOW_SEL_MEMWR = 16 -CPG_PERFWINDOW_SEL_MEMRD = 17 -CPG_PERFWINDOW_SEL_VGT0 = 18 -CPG_PERFWINDOW_SEL_VGT1 = 19 -CPG_PERFWINDOW_SEL_APPEND = 20 -CPG_PERFWINDOW_SEL_QURD = 21 -CPG_PERFWINDOW_SEL_DDID = 22 -CPG_PERFWINDOW_SEL_SR = 23 -CPG_PERFWINDOW_SEL_QU_EOP = 24 -CPG_PERFWINDOW_SEL_QU_STRM = 25 -CPG_PERFWINDOW_SEL_QU_PIPE = 26 -CPG_PERFWINDOW_SEL_RESERVED1 = 27 -CPG_PERFWINDOW_SEL_CPC_IC = 28 -CPG_PERFWINDOW_SEL_RESERVED2 = 29 -CPG_PERFWINDOW_SEL_CPG_IC = 30 -CPG_PERFCOUNTWINDOW_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPF_LATENCY_STATS_SEL' -CPF_LATENCY_STATS_SEL__enumvalues = { - 0: 'CPF_LATENCY_STATS_SEL_XACK_MAX', - 1: 'CPF_LATENCY_STATS_SEL_XACK_MIN', - 2: 'CPF_LATENCY_STATS_SEL_XACK_LAST', - 3: 'CPF_LATENCY_STATS_SEL_XNACK_MAX', - 4: 'CPF_LATENCY_STATS_SEL_XNACK_MIN', - 5: 'CPF_LATENCY_STATS_SEL_XNACK_LAST', - 6: 'CPF_LATENCY_STATS_SEL_READ_MAX', - 7: 'CPF_LATENCY_STATS_SEL_READ_MIN', - 8: 'CPF_LATENCY_STATS_SEL_READ_LAST', - 9: 'CPF_LATENCY_STATS_SEL_INVAL_MAX', - 10: 'CPF_LATENCY_STATS_SEL_INVAL_MIN', - 11: 'CPF_LATENCY_STATS_SEL_INVAL_LAST', -} -CPF_LATENCY_STATS_SEL_XACK_MAX = 0 -CPF_LATENCY_STATS_SEL_XACK_MIN = 1 -CPF_LATENCY_STATS_SEL_XACK_LAST = 2 -CPF_LATENCY_STATS_SEL_XNACK_MAX = 3 -CPF_LATENCY_STATS_SEL_XNACK_MIN = 4 -CPF_LATENCY_STATS_SEL_XNACK_LAST = 5 -CPF_LATENCY_STATS_SEL_READ_MAX = 6 -CPF_LATENCY_STATS_SEL_READ_MIN = 7 -CPF_LATENCY_STATS_SEL_READ_LAST = 8 -CPF_LATENCY_STATS_SEL_INVAL_MAX = 9 -CPF_LATENCY_STATS_SEL_INVAL_MIN = 10 -CPF_LATENCY_STATS_SEL_INVAL_LAST = 11 -CPF_LATENCY_STATS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPG_LATENCY_STATS_SEL' -CPG_LATENCY_STATS_SEL__enumvalues = { - 0: 'CPG_LATENCY_STATS_SEL_XACK_MAX', - 1: 'CPG_LATENCY_STATS_SEL_XACK_MIN', - 2: 'CPG_LATENCY_STATS_SEL_XACK_LAST', - 3: 'CPG_LATENCY_STATS_SEL_XNACK_MAX', - 4: 'CPG_LATENCY_STATS_SEL_XNACK_MIN', - 5: 'CPG_LATENCY_STATS_SEL_XNACK_LAST', - 6: 'CPG_LATENCY_STATS_SEL_WRITE_MAX', - 7: 'CPG_LATENCY_STATS_SEL_WRITE_MIN', - 8: 'CPG_LATENCY_STATS_SEL_WRITE_LAST', - 9: 'CPG_LATENCY_STATS_SEL_READ_MAX', - 10: 'CPG_LATENCY_STATS_SEL_READ_MIN', - 11: 'CPG_LATENCY_STATS_SEL_READ_LAST', - 12: 'CPG_LATENCY_STATS_SEL_ATOMIC_MAX', - 13: 'CPG_LATENCY_STATS_SEL_ATOMIC_MIN', - 14: 'CPG_LATENCY_STATS_SEL_ATOMIC_LAST', - 15: 'CPG_LATENCY_STATS_SEL_INVAL_MAX', - 16: 'CPG_LATENCY_STATS_SEL_INVAL_MIN', - 17: 'CPG_LATENCY_STATS_SEL_INVAL_LAST', -} -CPG_LATENCY_STATS_SEL_XACK_MAX = 0 -CPG_LATENCY_STATS_SEL_XACK_MIN = 1 -CPG_LATENCY_STATS_SEL_XACK_LAST = 2 -CPG_LATENCY_STATS_SEL_XNACK_MAX = 3 -CPG_LATENCY_STATS_SEL_XNACK_MIN = 4 -CPG_LATENCY_STATS_SEL_XNACK_LAST = 5 -CPG_LATENCY_STATS_SEL_WRITE_MAX = 6 -CPG_LATENCY_STATS_SEL_WRITE_MIN = 7 -CPG_LATENCY_STATS_SEL_WRITE_LAST = 8 -CPG_LATENCY_STATS_SEL_READ_MAX = 9 -CPG_LATENCY_STATS_SEL_READ_MIN = 10 -CPG_LATENCY_STATS_SEL_READ_LAST = 11 -CPG_LATENCY_STATS_SEL_ATOMIC_MAX = 12 -CPG_LATENCY_STATS_SEL_ATOMIC_MIN = 13 -CPG_LATENCY_STATS_SEL_ATOMIC_LAST = 14 -CPG_LATENCY_STATS_SEL_INVAL_MAX = 15 -CPG_LATENCY_STATS_SEL_INVAL_MIN = 16 -CPG_LATENCY_STATS_SEL_INVAL_LAST = 17 -CPG_LATENCY_STATS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPC_LATENCY_STATS_SEL' -CPC_LATENCY_STATS_SEL__enumvalues = { - 0: 'CPC_LATENCY_STATS_SEL_XACK_MAX', - 1: 'CPC_LATENCY_STATS_SEL_XACK_MIN', - 2: 'CPC_LATENCY_STATS_SEL_XACK_LAST', - 3: 'CPC_LATENCY_STATS_SEL_XNACK_MAX', - 4: 'CPC_LATENCY_STATS_SEL_XNACK_MIN', - 5: 'CPC_LATENCY_STATS_SEL_XNACK_LAST', - 6: 'CPC_LATENCY_STATS_SEL_INVAL_MAX', - 7: 'CPC_LATENCY_STATS_SEL_INVAL_MIN', - 8: 'CPC_LATENCY_STATS_SEL_INVAL_LAST', -} -CPC_LATENCY_STATS_SEL_XACK_MAX = 0 -CPC_LATENCY_STATS_SEL_XACK_MIN = 1 -CPC_LATENCY_STATS_SEL_XACK_LAST = 2 -CPC_LATENCY_STATS_SEL_XNACK_MAX = 3 -CPC_LATENCY_STATS_SEL_XNACK_MIN = 4 -CPC_LATENCY_STATS_SEL_XNACK_LAST = 5 -CPC_LATENCY_STATS_SEL_INVAL_MAX = 6 -CPC_LATENCY_STATS_SEL_INVAL_MIN = 7 -CPC_LATENCY_STATS_SEL_INVAL_LAST = 8 -CPC_LATENCY_STATS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CP_DDID_CNTL_MODE' -CP_DDID_CNTL_MODE__enumvalues = { - 0: 'STALL', - 1: 'OVERRUN', -} -STALL = 0 -OVERRUN = 1 -CP_DDID_CNTL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CP_DDID_CNTL_SIZE' -CP_DDID_CNTL_SIZE__enumvalues = { - 0: 'SIZE_8K', - 1: 'SIZE_16K', -} -SIZE_8K = 0 -SIZE_16K = 1 -CP_DDID_CNTL_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'CP_DDID_CNTL_VMID_SEL' -CP_DDID_CNTL_VMID_SEL__enumvalues = { - 0: 'DDID_VMID_PIPE', - 1: 'DDID_VMID_CNTL', -} -DDID_VMID_PIPE = 0 -DDID_VMID_CNTL = 1 -CP_DDID_CNTL_VMID_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SX_BLEND_OPT' -SX_BLEND_OPT__enumvalues = { - 0: 'BLEND_OPT_PRESERVE_NONE_IGNORE_ALL', - 1: 'BLEND_OPT_PRESERVE_ALL_IGNORE_NONE', - 2: 'BLEND_OPT_PRESERVE_C1_IGNORE_C0', - 3: 'BLEND_OPT_PRESERVE_C0_IGNORE_C1', - 4: 'BLEND_OPT_PRESERVE_A1_IGNORE_A0', - 5: 'BLEND_OPT_PRESERVE_A0_IGNORE_A1', - 6: 'BLEND_OPT_PRESERVE_NONE_IGNORE_A0', - 7: 'BLEND_OPT_PRESERVE_NONE_IGNORE_NONE', -} -BLEND_OPT_PRESERVE_NONE_IGNORE_ALL = 0 -BLEND_OPT_PRESERVE_ALL_IGNORE_NONE = 1 -BLEND_OPT_PRESERVE_C1_IGNORE_C0 = 2 -BLEND_OPT_PRESERVE_C0_IGNORE_C1 = 3 -BLEND_OPT_PRESERVE_A1_IGNORE_A0 = 4 -BLEND_OPT_PRESERVE_A0_IGNORE_A1 = 5 -BLEND_OPT_PRESERVE_NONE_IGNORE_A0 = 6 -BLEND_OPT_PRESERVE_NONE_IGNORE_NONE = 7 -SX_BLEND_OPT = ctypes.c_uint32 # enum - -# values for enumeration 'SX_OPT_COMB_FCN' -SX_OPT_COMB_FCN__enumvalues = { - 0: 'OPT_COMB_NONE', - 1: 'OPT_COMB_ADD', - 2: 'OPT_COMB_SUBTRACT', - 3: 'OPT_COMB_MIN', - 4: 'OPT_COMB_MAX', - 5: 'OPT_COMB_REVSUBTRACT', - 6: 'OPT_COMB_BLEND_DISABLED', - 7: 'OPT_COMB_SAFE_ADD', -} -OPT_COMB_NONE = 0 -OPT_COMB_ADD = 1 -OPT_COMB_SUBTRACT = 2 -OPT_COMB_MIN = 3 -OPT_COMB_MAX = 4 -OPT_COMB_REVSUBTRACT = 5 -OPT_COMB_BLEND_DISABLED = 6 -OPT_COMB_SAFE_ADD = 7 -SX_OPT_COMB_FCN = ctypes.c_uint32 # enum - -# values for enumeration 'SX_DOWNCONVERT_FORMAT' -SX_DOWNCONVERT_FORMAT__enumvalues = { - 0: 'SX_RT_EXPORT_NO_CONVERSION', - 1: 'SX_RT_EXPORT_32_R', - 2: 'SX_RT_EXPORT_32_A', - 3: 'SX_RT_EXPORT_10_11_11', - 4: 'SX_RT_EXPORT_2_10_10_10', - 5: 'SX_RT_EXPORT_8_8_8_8', - 6: 'SX_RT_EXPORT_5_6_5', - 7: 'SX_RT_EXPORT_1_5_5_5', - 8: 'SX_RT_EXPORT_4_4_4_4', - 9: 'SX_RT_EXPORT_16_16_GR', - 10: 'SX_RT_EXPORT_16_16_AR', -} -SX_RT_EXPORT_NO_CONVERSION = 0 -SX_RT_EXPORT_32_R = 1 -SX_RT_EXPORT_32_A = 2 -SX_RT_EXPORT_10_11_11 = 3 -SX_RT_EXPORT_2_10_10_10 = 4 -SX_RT_EXPORT_8_8_8_8 = 5 -SX_RT_EXPORT_5_6_5 = 6 -SX_RT_EXPORT_1_5_5_5 = 7 -SX_RT_EXPORT_4_4_4_4 = 8 -SX_RT_EXPORT_16_16_GR = 9 -SX_RT_EXPORT_16_16_AR = 10 -SX_DOWNCONVERT_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'SX_PERFCOUNTER_VALS' -SX_PERFCOUNTER_VALS__enumvalues = { - 0: 'SX_PERF_SEL_PA_IDLE_CYCLES', - 1: 'SX_PERF_SEL_PA_REQ', - 2: 'SX_PERF_SEL_PA_POS', - 3: 'SX_PERF_SEL_CLOCK', - 4: 'SX_PERF_SEL_GATE_EN1', - 5: 'SX_PERF_SEL_GATE_EN2', - 6: 'SX_PERF_SEL_GATE_EN3', - 7: 'SX_PERF_SEL_GATE_EN4', - 8: 'SX_PERF_SEL_SH_POS_STARVE', - 9: 'SX_PERF_SEL_SH_COLOR_STARVE', - 10: 'SX_PERF_SEL_SH_POS_STALL', - 11: 'SX_PERF_SEL_SH_COLOR_STALL', - 12: 'SX_PERF_SEL_DB0_PIXELS', - 13: 'SX_PERF_SEL_DB0_HALF_QUADS', - 14: 'SX_PERF_SEL_DB0_PIXEL_STALL', - 15: 'SX_PERF_SEL_DB0_PIXEL_IDLE', - 16: 'SX_PERF_SEL_DB0_PRED_PIXELS', - 17: 'SX_PERF_SEL_DB1_PIXELS', - 18: 'SX_PERF_SEL_DB1_HALF_QUADS', - 19: 'SX_PERF_SEL_DB1_PIXEL_STALL', - 20: 'SX_PERF_SEL_DB1_PIXEL_IDLE', - 21: 'SX_PERF_SEL_DB1_PRED_PIXELS', - 22: 'SX_PERF_SEL_DB2_PIXELS', - 23: 'SX_PERF_SEL_DB2_HALF_QUADS', - 24: 'SX_PERF_SEL_DB2_PIXEL_STALL', - 25: 'SX_PERF_SEL_DB2_PIXEL_IDLE', - 26: 'SX_PERF_SEL_DB2_PRED_PIXELS', - 27: 'SX_PERF_SEL_DB3_PIXELS', - 28: 'SX_PERF_SEL_DB3_HALF_QUADS', - 29: 'SX_PERF_SEL_DB3_PIXEL_STALL', - 30: 'SX_PERF_SEL_DB3_PIXEL_IDLE', - 31: 'SX_PERF_SEL_DB3_PRED_PIXELS', - 32: 'SX_PERF_SEL_COL_BUSY', - 33: 'SX_PERF_SEL_POS_BUSY', - 34: 'SX_PERF_SEL_DB0_A2M_DISCARD_QUADS', - 35: 'SX_PERF_SEL_DB0_MRT0_BLEND_BYPASS', - 36: 'SX_PERF_SEL_DB0_MRT0_DONT_RD_DEST', - 37: 'SX_PERF_SEL_DB0_MRT0_DISCARD_SRC', - 38: 'SX_PERF_SEL_DB0_MRT0_SINGLE_QUADS', - 39: 'SX_PERF_SEL_DB0_MRT0_DOUBLE_QUADS', - 40: 'SX_PERF_SEL_DB0_MRT1_BLEND_BYPASS', - 41: 'SX_PERF_SEL_DB0_MRT1_DONT_RD_DEST', - 42: 'SX_PERF_SEL_DB0_MRT1_DISCARD_SRC', - 43: 'SX_PERF_SEL_DB0_MRT1_SINGLE_QUADS', - 44: 'SX_PERF_SEL_DB0_MRT1_DOUBLE_QUADS', - 45: 'SX_PERF_SEL_DB0_MRT2_BLEND_BYPASS', - 46: 'SX_PERF_SEL_DB0_MRT2_DONT_RD_DEST', - 47: 'SX_PERF_SEL_DB0_MRT2_DISCARD_SRC', - 48: 'SX_PERF_SEL_DB0_MRT2_SINGLE_QUADS', - 49: 'SX_PERF_SEL_DB0_MRT2_DOUBLE_QUADS', - 50: 'SX_PERF_SEL_DB0_MRT3_BLEND_BYPASS', - 51: 'SX_PERF_SEL_DB0_MRT3_DONT_RD_DEST', - 52: 'SX_PERF_SEL_DB0_MRT3_DISCARD_SRC', - 53: 'SX_PERF_SEL_DB0_MRT3_SINGLE_QUADS', - 54: 'SX_PERF_SEL_DB0_MRT3_DOUBLE_QUADS', - 55: 'SX_PERF_SEL_DB0_MRT4_BLEND_BYPASS', - 56: 'SX_PERF_SEL_DB0_MRT4_DONT_RD_DEST', - 57: 'SX_PERF_SEL_DB0_MRT4_DISCARD_SRC', - 58: 'SX_PERF_SEL_DB0_MRT4_SINGLE_QUADS', - 59: 'SX_PERF_SEL_DB0_MRT4_DOUBLE_QUADS', - 60: 'SX_PERF_SEL_DB0_MRT5_BLEND_BYPASS', - 61: 'SX_PERF_SEL_DB0_MRT5_DONT_RD_DEST', - 62: 'SX_PERF_SEL_DB0_MRT5_DISCARD_SRC', - 63: 'SX_PERF_SEL_DB0_MRT5_SINGLE_QUADS', - 64: 'SX_PERF_SEL_DB0_MRT5_DOUBLE_QUADS', - 65: 'SX_PERF_SEL_DB0_MRT6_BLEND_BYPASS', - 66: 'SX_PERF_SEL_DB0_MRT6_DONT_RD_DEST', - 67: 'SX_PERF_SEL_DB0_MRT6_DISCARD_SRC', - 68: 'SX_PERF_SEL_DB0_MRT6_SINGLE_QUADS', - 69: 'SX_PERF_SEL_DB0_MRT6_DOUBLE_QUADS', - 70: 'SX_PERF_SEL_DB0_MRT7_BLEND_BYPASS', - 71: 'SX_PERF_SEL_DB0_MRT7_DONT_RD_DEST', - 72: 'SX_PERF_SEL_DB0_MRT7_DISCARD_SRC', - 73: 'SX_PERF_SEL_DB0_MRT7_SINGLE_QUADS', - 74: 'SX_PERF_SEL_DB0_MRT7_DOUBLE_QUADS', - 75: 'SX_PERF_SEL_DB1_A2M_DISCARD_QUADS', - 76: 'SX_PERF_SEL_DB1_MRT0_BLEND_BYPASS', - 77: 'SX_PERF_SEL_DB1_MRT0_DONT_RD_DEST', - 78: 'SX_PERF_SEL_DB1_MRT0_DISCARD_SRC', - 79: 'SX_PERF_SEL_DB1_MRT0_SINGLE_QUADS', - 80: 'SX_PERF_SEL_DB1_MRT0_DOUBLE_QUADS', - 81: 'SX_PERF_SEL_DB1_MRT1_BLEND_BYPASS', - 82: 'SX_PERF_SEL_DB1_MRT1_DONT_RD_DEST', - 83: 'SX_PERF_SEL_DB1_MRT1_DISCARD_SRC', - 84: 'SX_PERF_SEL_DB1_MRT1_SINGLE_QUADS', - 85: 'SX_PERF_SEL_DB1_MRT1_DOUBLE_QUADS', - 86: 'SX_PERF_SEL_DB1_MRT2_BLEND_BYPASS', - 87: 'SX_PERF_SEL_DB1_MRT2_DONT_RD_DEST', - 88: 'SX_PERF_SEL_DB1_MRT2_DISCARD_SRC', - 89: 'SX_PERF_SEL_DB1_MRT2_SINGLE_QUADS', - 90: 'SX_PERF_SEL_DB1_MRT2_DOUBLE_QUADS', - 91: 'SX_PERF_SEL_DB1_MRT3_BLEND_BYPASS', - 92: 'SX_PERF_SEL_DB1_MRT3_DONT_RD_DEST', - 93: 'SX_PERF_SEL_DB1_MRT3_DISCARD_SRC', - 94: 'SX_PERF_SEL_DB1_MRT3_SINGLE_QUADS', - 95: 'SX_PERF_SEL_DB1_MRT3_DOUBLE_QUADS', - 96: 'SX_PERF_SEL_DB1_MRT4_BLEND_BYPASS', - 97: 'SX_PERF_SEL_DB1_MRT4_DONT_RD_DEST', - 98: 'SX_PERF_SEL_DB1_MRT4_DISCARD_SRC', - 99: 'SX_PERF_SEL_DB1_MRT4_SINGLE_QUADS', - 100: 'SX_PERF_SEL_DB1_MRT4_DOUBLE_QUADS', - 101: 'SX_PERF_SEL_DB1_MRT5_BLEND_BYPASS', - 102: 'SX_PERF_SEL_DB1_MRT5_DONT_RD_DEST', - 103: 'SX_PERF_SEL_DB1_MRT5_DISCARD_SRC', - 104: 'SX_PERF_SEL_DB1_MRT5_SINGLE_QUADS', - 105: 'SX_PERF_SEL_DB1_MRT5_DOUBLE_QUADS', - 106: 'SX_PERF_SEL_DB1_MRT6_BLEND_BYPASS', - 107: 'SX_PERF_SEL_DB1_MRT6_DONT_RD_DEST', - 108: 'SX_PERF_SEL_DB1_MRT6_DISCARD_SRC', - 109: 'SX_PERF_SEL_DB1_MRT6_SINGLE_QUADS', - 110: 'SX_PERF_SEL_DB1_MRT6_DOUBLE_QUADS', - 111: 'SX_PERF_SEL_DB1_MRT7_BLEND_BYPASS', - 112: 'SX_PERF_SEL_DB1_MRT7_DONT_RD_DEST', - 113: 'SX_PERF_SEL_DB1_MRT7_DISCARD_SRC', - 114: 'SX_PERF_SEL_DB1_MRT7_SINGLE_QUADS', - 115: 'SX_PERF_SEL_DB1_MRT7_DOUBLE_QUADS', - 116: 'SX_PERF_SEL_DB2_A2M_DISCARD_QUADS', - 117: 'SX_PERF_SEL_DB2_MRT0_BLEND_BYPASS', - 118: 'SX_PERF_SEL_DB2_MRT0_DONT_RD_DEST', - 119: 'SX_PERF_SEL_DB2_MRT0_DISCARD_SRC', - 120: 'SX_PERF_SEL_DB2_MRT0_SINGLE_QUADS', - 121: 'SX_PERF_SEL_DB2_MRT0_DOUBLE_QUADS', - 122: 'SX_PERF_SEL_DB2_MRT1_BLEND_BYPASS', - 123: 'SX_PERF_SEL_DB2_MRT1_DONT_RD_DEST', - 124: 'SX_PERF_SEL_DB2_MRT1_DISCARD_SRC', - 125: 'SX_PERF_SEL_DB2_MRT1_SINGLE_QUADS', - 126: 'SX_PERF_SEL_DB2_MRT1_DOUBLE_QUADS', - 127: 'SX_PERF_SEL_DB2_MRT2_BLEND_BYPASS', - 128: 'SX_PERF_SEL_DB2_MRT2_DONT_RD_DEST', - 129: 'SX_PERF_SEL_DB2_MRT2_DISCARD_SRC', - 130: 'SX_PERF_SEL_DB2_MRT2_SINGLE_QUADS', - 131: 'SX_PERF_SEL_DB2_MRT2_DOUBLE_QUADS', - 132: 'SX_PERF_SEL_DB2_MRT3_BLEND_BYPASS', - 133: 'SX_PERF_SEL_DB2_MRT3_DONT_RD_DEST', - 134: 'SX_PERF_SEL_DB2_MRT3_DISCARD_SRC', - 135: 'SX_PERF_SEL_DB2_MRT3_SINGLE_QUADS', - 136: 'SX_PERF_SEL_DB2_MRT3_DOUBLE_QUADS', - 137: 'SX_PERF_SEL_DB2_MRT4_BLEND_BYPASS', - 138: 'SX_PERF_SEL_DB2_MRT4_DONT_RD_DEST', - 139: 'SX_PERF_SEL_DB2_MRT4_DISCARD_SRC', - 140: 'SX_PERF_SEL_DB2_MRT4_SINGLE_QUADS', - 141: 'SX_PERF_SEL_DB2_MRT4_DOUBLE_QUADS', - 142: 'SX_PERF_SEL_DB2_MRT5_BLEND_BYPASS', - 143: 'SX_PERF_SEL_DB2_MRT5_DONT_RD_DEST', - 144: 'SX_PERF_SEL_DB2_MRT5_DISCARD_SRC', - 145: 'SX_PERF_SEL_DB2_MRT5_SINGLE_QUADS', - 146: 'SX_PERF_SEL_DB2_MRT5_DOUBLE_QUADS', - 147: 'SX_PERF_SEL_DB2_MRT6_BLEND_BYPASS', - 148: 'SX_PERF_SEL_DB2_MRT6_DONT_RD_DEST', - 149: 'SX_PERF_SEL_DB2_MRT6_DISCARD_SRC', - 150: 'SX_PERF_SEL_DB2_MRT6_SINGLE_QUADS', - 151: 'SX_PERF_SEL_DB2_MRT6_DOUBLE_QUADS', - 152: 'SX_PERF_SEL_DB2_MRT7_BLEND_BYPASS', - 153: 'SX_PERF_SEL_DB2_MRT7_DONT_RD_DEST', - 154: 'SX_PERF_SEL_DB2_MRT7_DISCARD_SRC', - 155: 'SX_PERF_SEL_DB2_MRT7_SINGLE_QUADS', - 156: 'SX_PERF_SEL_DB2_MRT7_DOUBLE_QUADS', - 157: 'SX_PERF_SEL_DB3_A2M_DISCARD_QUADS', - 158: 'SX_PERF_SEL_DB3_MRT0_BLEND_BYPASS', - 159: 'SX_PERF_SEL_DB3_MRT0_DONT_RD_DEST', - 160: 'SX_PERF_SEL_DB3_MRT0_DISCARD_SRC', - 161: 'SX_PERF_SEL_DB3_MRT0_SINGLE_QUADS', - 162: 'SX_PERF_SEL_DB3_MRT0_DOUBLE_QUADS', - 163: 'SX_PERF_SEL_DB3_MRT1_BLEND_BYPASS', - 164: 'SX_PERF_SEL_DB3_MRT1_DONT_RD_DEST', - 165: 'SX_PERF_SEL_DB3_MRT1_DISCARD_SRC', - 166: 'SX_PERF_SEL_DB3_MRT1_SINGLE_QUADS', - 167: 'SX_PERF_SEL_DB3_MRT1_DOUBLE_QUADS', - 168: 'SX_PERF_SEL_DB3_MRT2_BLEND_BYPASS', - 169: 'SX_PERF_SEL_DB3_MRT2_DONT_RD_DEST', - 170: 'SX_PERF_SEL_DB3_MRT2_DISCARD_SRC', - 171: 'SX_PERF_SEL_DB3_MRT2_SINGLE_QUADS', - 172: 'SX_PERF_SEL_DB3_MRT2_DOUBLE_QUADS', - 173: 'SX_PERF_SEL_DB3_MRT3_BLEND_BYPASS', - 174: 'SX_PERF_SEL_DB3_MRT3_DONT_RD_DEST', - 175: 'SX_PERF_SEL_DB3_MRT3_DISCARD_SRC', - 176: 'SX_PERF_SEL_DB3_MRT3_SINGLE_QUADS', - 177: 'SX_PERF_SEL_DB3_MRT3_DOUBLE_QUADS', - 178: 'SX_PERF_SEL_DB3_MRT4_BLEND_BYPASS', - 179: 'SX_PERF_SEL_DB3_MRT4_DONT_RD_DEST', - 180: 'SX_PERF_SEL_DB3_MRT4_DISCARD_SRC', - 181: 'SX_PERF_SEL_DB3_MRT4_SINGLE_QUADS', - 182: 'SX_PERF_SEL_DB3_MRT4_DOUBLE_QUADS', - 183: 'SX_PERF_SEL_DB3_MRT5_BLEND_BYPASS', - 184: 'SX_PERF_SEL_DB3_MRT5_DONT_RD_DEST', - 185: 'SX_PERF_SEL_DB3_MRT5_DISCARD_SRC', - 186: 'SX_PERF_SEL_DB3_MRT5_SINGLE_QUADS', - 187: 'SX_PERF_SEL_DB3_MRT5_DOUBLE_QUADS', - 188: 'SX_PERF_SEL_DB3_MRT6_BLEND_BYPASS', - 189: 'SX_PERF_SEL_DB3_MRT6_DONT_RD_DEST', - 190: 'SX_PERF_SEL_DB3_MRT6_DISCARD_SRC', - 191: 'SX_PERF_SEL_DB3_MRT6_SINGLE_QUADS', - 192: 'SX_PERF_SEL_DB3_MRT6_DOUBLE_QUADS', - 193: 'SX_PERF_SEL_DB3_MRT7_BLEND_BYPASS', - 194: 'SX_PERF_SEL_DB3_MRT7_DONT_RD_DEST', - 195: 'SX_PERF_SEL_DB3_MRT7_DISCARD_SRC', - 196: 'SX_PERF_SEL_DB3_MRT7_SINGLE_QUADS', - 197: 'SX_PERF_SEL_DB3_MRT7_DOUBLE_QUADS', - 198: 'SX_PERF_SEL_PA_REQ_LATENCY', - 199: 'SX_PERF_SEL_POS_SCBD_STALL', - 200: 'SX_PERF_SEL_COL_SCBD_STALL', - 201: 'SX_PERF_SEL_CLOCK_DROP_STALL', - 202: 'SX_PERF_SEL_GATE_EN5', - 203: 'SX_PERF_SEL_GATE_EN6', - 204: 'SX_PERF_SEL_DB0_SIZE', - 205: 'SX_PERF_SEL_DB1_SIZE', - 206: 'SX_PERF_SEL_DB2_SIZE', - 207: 'SX_PERF_SEL_DB3_SIZE', - 208: 'SX_PERF_SEL_SPLITMODE', - 209: 'SX_PERF_SEL_COL_SCBD0_STALL', - 210: 'SX_PERF_SEL_COL_SCBD1_STALL', - 211: 'SX_PERF_SEL_IDX_STALL_CYCLES', - 212: 'SX_PERF_SEL_IDX_IDLE_CYCLES', - 213: 'SX_PERF_SEL_IDX_REQ', - 214: 'SX_PERF_SEL_IDX_RET', - 215: 'SX_PERF_SEL_IDX_REQ_LATENCY', - 216: 'SX_PERF_SEL_IDX_SCBD_STALL', - 217: 'SX_PERF_SEL_GATE_EN7', - 218: 'SX_PERF_SEL_GATE_EN8', - 219: 'SX_PERF_SEL_SH_IDX_STARVE', - 220: 'SX_PERF_SEL_IDX_BUSY', -} -SX_PERF_SEL_PA_IDLE_CYCLES = 0 -SX_PERF_SEL_PA_REQ = 1 -SX_PERF_SEL_PA_POS = 2 -SX_PERF_SEL_CLOCK = 3 -SX_PERF_SEL_GATE_EN1 = 4 -SX_PERF_SEL_GATE_EN2 = 5 -SX_PERF_SEL_GATE_EN3 = 6 -SX_PERF_SEL_GATE_EN4 = 7 -SX_PERF_SEL_SH_POS_STARVE = 8 -SX_PERF_SEL_SH_COLOR_STARVE = 9 -SX_PERF_SEL_SH_POS_STALL = 10 -SX_PERF_SEL_SH_COLOR_STALL = 11 -SX_PERF_SEL_DB0_PIXELS = 12 -SX_PERF_SEL_DB0_HALF_QUADS = 13 -SX_PERF_SEL_DB0_PIXEL_STALL = 14 -SX_PERF_SEL_DB0_PIXEL_IDLE = 15 -SX_PERF_SEL_DB0_PRED_PIXELS = 16 -SX_PERF_SEL_DB1_PIXELS = 17 -SX_PERF_SEL_DB1_HALF_QUADS = 18 -SX_PERF_SEL_DB1_PIXEL_STALL = 19 -SX_PERF_SEL_DB1_PIXEL_IDLE = 20 -SX_PERF_SEL_DB1_PRED_PIXELS = 21 -SX_PERF_SEL_DB2_PIXELS = 22 -SX_PERF_SEL_DB2_HALF_QUADS = 23 -SX_PERF_SEL_DB2_PIXEL_STALL = 24 -SX_PERF_SEL_DB2_PIXEL_IDLE = 25 -SX_PERF_SEL_DB2_PRED_PIXELS = 26 -SX_PERF_SEL_DB3_PIXELS = 27 -SX_PERF_SEL_DB3_HALF_QUADS = 28 -SX_PERF_SEL_DB3_PIXEL_STALL = 29 -SX_PERF_SEL_DB3_PIXEL_IDLE = 30 -SX_PERF_SEL_DB3_PRED_PIXELS = 31 -SX_PERF_SEL_COL_BUSY = 32 -SX_PERF_SEL_POS_BUSY = 33 -SX_PERF_SEL_DB0_A2M_DISCARD_QUADS = 34 -SX_PERF_SEL_DB0_MRT0_BLEND_BYPASS = 35 -SX_PERF_SEL_DB0_MRT0_DONT_RD_DEST = 36 -SX_PERF_SEL_DB0_MRT0_DISCARD_SRC = 37 -SX_PERF_SEL_DB0_MRT0_SINGLE_QUADS = 38 -SX_PERF_SEL_DB0_MRT0_DOUBLE_QUADS = 39 -SX_PERF_SEL_DB0_MRT1_BLEND_BYPASS = 40 -SX_PERF_SEL_DB0_MRT1_DONT_RD_DEST = 41 -SX_PERF_SEL_DB0_MRT1_DISCARD_SRC = 42 -SX_PERF_SEL_DB0_MRT1_SINGLE_QUADS = 43 -SX_PERF_SEL_DB0_MRT1_DOUBLE_QUADS = 44 -SX_PERF_SEL_DB0_MRT2_BLEND_BYPASS = 45 -SX_PERF_SEL_DB0_MRT2_DONT_RD_DEST = 46 -SX_PERF_SEL_DB0_MRT2_DISCARD_SRC = 47 -SX_PERF_SEL_DB0_MRT2_SINGLE_QUADS = 48 -SX_PERF_SEL_DB0_MRT2_DOUBLE_QUADS = 49 -SX_PERF_SEL_DB0_MRT3_BLEND_BYPASS = 50 -SX_PERF_SEL_DB0_MRT3_DONT_RD_DEST = 51 -SX_PERF_SEL_DB0_MRT3_DISCARD_SRC = 52 -SX_PERF_SEL_DB0_MRT3_SINGLE_QUADS = 53 -SX_PERF_SEL_DB0_MRT3_DOUBLE_QUADS = 54 -SX_PERF_SEL_DB0_MRT4_BLEND_BYPASS = 55 -SX_PERF_SEL_DB0_MRT4_DONT_RD_DEST = 56 -SX_PERF_SEL_DB0_MRT4_DISCARD_SRC = 57 -SX_PERF_SEL_DB0_MRT4_SINGLE_QUADS = 58 -SX_PERF_SEL_DB0_MRT4_DOUBLE_QUADS = 59 -SX_PERF_SEL_DB0_MRT5_BLEND_BYPASS = 60 -SX_PERF_SEL_DB0_MRT5_DONT_RD_DEST = 61 -SX_PERF_SEL_DB0_MRT5_DISCARD_SRC = 62 -SX_PERF_SEL_DB0_MRT5_SINGLE_QUADS = 63 -SX_PERF_SEL_DB0_MRT5_DOUBLE_QUADS = 64 -SX_PERF_SEL_DB0_MRT6_BLEND_BYPASS = 65 -SX_PERF_SEL_DB0_MRT6_DONT_RD_DEST = 66 -SX_PERF_SEL_DB0_MRT6_DISCARD_SRC = 67 -SX_PERF_SEL_DB0_MRT6_SINGLE_QUADS = 68 -SX_PERF_SEL_DB0_MRT6_DOUBLE_QUADS = 69 -SX_PERF_SEL_DB0_MRT7_BLEND_BYPASS = 70 -SX_PERF_SEL_DB0_MRT7_DONT_RD_DEST = 71 -SX_PERF_SEL_DB0_MRT7_DISCARD_SRC = 72 -SX_PERF_SEL_DB0_MRT7_SINGLE_QUADS = 73 -SX_PERF_SEL_DB0_MRT7_DOUBLE_QUADS = 74 -SX_PERF_SEL_DB1_A2M_DISCARD_QUADS = 75 -SX_PERF_SEL_DB1_MRT0_BLEND_BYPASS = 76 -SX_PERF_SEL_DB1_MRT0_DONT_RD_DEST = 77 -SX_PERF_SEL_DB1_MRT0_DISCARD_SRC = 78 -SX_PERF_SEL_DB1_MRT0_SINGLE_QUADS = 79 -SX_PERF_SEL_DB1_MRT0_DOUBLE_QUADS = 80 -SX_PERF_SEL_DB1_MRT1_BLEND_BYPASS = 81 -SX_PERF_SEL_DB1_MRT1_DONT_RD_DEST = 82 -SX_PERF_SEL_DB1_MRT1_DISCARD_SRC = 83 -SX_PERF_SEL_DB1_MRT1_SINGLE_QUADS = 84 -SX_PERF_SEL_DB1_MRT1_DOUBLE_QUADS = 85 -SX_PERF_SEL_DB1_MRT2_BLEND_BYPASS = 86 -SX_PERF_SEL_DB1_MRT2_DONT_RD_DEST = 87 -SX_PERF_SEL_DB1_MRT2_DISCARD_SRC = 88 -SX_PERF_SEL_DB1_MRT2_SINGLE_QUADS = 89 -SX_PERF_SEL_DB1_MRT2_DOUBLE_QUADS = 90 -SX_PERF_SEL_DB1_MRT3_BLEND_BYPASS = 91 -SX_PERF_SEL_DB1_MRT3_DONT_RD_DEST = 92 -SX_PERF_SEL_DB1_MRT3_DISCARD_SRC = 93 -SX_PERF_SEL_DB1_MRT3_SINGLE_QUADS = 94 -SX_PERF_SEL_DB1_MRT3_DOUBLE_QUADS = 95 -SX_PERF_SEL_DB1_MRT4_BLEND_BYPASS = 96 -SX_PERF_SEL_DB1_MRT4_DONT_RD_DEST = 97 -SX_PERF_SEL_DB1_MRT4_DISCARD_SRC = 98 -SX_PERF_SEL_DB1_MRT4_SINGLE_QUADS = 99 -SX_PERF_SEL_DB1_MRT4_DOUBLE_QUADS = 100 -SX_PERF_SEL_DB1_MRT5_BLEND_BYPASS = 101 -SX_PERF_SEL_DB1_MRT5_DONT_RD_DEST = 102 -SX_PERF_SEL_DB1_MRT5_DISCARD_SRC = 103 -SX_PERF_SEL_DB1_MRT5_SINGLE_QUADS = 104 -SX_PERF_SEL_DB1_MRT5_DOUBLE_QUADS = 105 -SX_PERF_SEL_DB1_MRT6_BLEND_BYPASS = 106 -SX_PERF_SEL_DB1_MRT6_DONT_RD_DEST = 107 -SX_PERF_SEL_DB1_MRT6_DISCARD_SRC = 108 -SX_PERF_SEL_DB1_MRT6_SINGLE_QUADS = 109 -SX_PERF_SEL_DB1_MRT6_DOUBLE_QUADS = 110 -SX_PERF_SEL_DB1_MRT7_BLEND_BYPASS = 111 -SX_PERF_SEL_DB1_MRT7_DONT_RD_DEST = 112 -SX_PERF_SEL_DB1_MRT7_DISCARD_SRC = 113 -SX_PERF_SEL_DB1_MRT7_SINGLE_QUADS = 114 -SX_PERF_SEL_DB1_MRT7_DOUBLE_QUADS = 115 -SX_PERF_SEL_DB2_A2M_DISCARD_QUADS = 116 -SX_PERF_SEL_DB2_MRT0_BLEND_BYPASS = 117 -SX_PERF_SEL_DB2_MRT0_DONT_RD_DEST = 118 -SX_PERF_SEL_DB2_MRT0_DISCARD_SRC = 119 -SX_PERF_SEL_DB2_MRT0_SINGLE_QUADS = 120 -SX_PERF_SEL_DB2_MRT0_DOUBLE_QUADS = 121 -SX_PERF_SEL_DB2_MRT1_BLEND_BYPASS = 122 -SX_PERF_SEL_DB2_MRT1_DONT_RD_DEST = 123 -SX_PERF_SEL_DB2_MRT1_DISCARD_SRC = 124 -SX_PERF_SEL_DB2_MRT1_SINGLE_QUADS = 125 -SX_PERF_SEL_DB2_MRT1_DOUBLE_QUADS = 126 -SX_PERF_SEL_DB2_MRT2_BLEND_BYPASS = 127 -SX_PERF_SEL_DB2_MRT2_DONT_RD_DEST = 128 -SX_PERF_SEL_DB2_MRT2_DISCARD_SRC = 129 -SX_PERF_SEL_DB2_MRT2_SINGLE_QUADS = 130 -SX_PERF_SEL_DB2_MRT2_DOUBLE_QUADS = 131 -SX_PERF_SEL_DB2_MRT3_BLEND_BYPASS = 132 -SX_PERF_SEL_DB2_MRT3_DONT_RD_DEST = 133 -SX_PERF_SEL_DB2_MRT3_DISCARD_SRC = 134 -SX_PERF_SEL_DB2_MRT3_SINGLE_QUADS = 135 -SX_PERF_SEL_DB2_MRT3_DOUBLE_QUADS = 136 -SX_PERF_SEL_DB2_MRT4_BLEND_BYPASS = 137 -SX_PERF_SEL_DB2_MRT4_DONT_RD_DEST = 138 -SX_PERF_SEL_DB2_MRT4_DISCARD_SRC = 139 -SX_PERF_SEL_DB2_MRT4_SINGLE_QUADS = 140 -SX_PERF_SEL_DB2_MRT4_DOUBLE_QUADS = 141 -SX_PERF_SEL_DB2_MRT5_BLEND_BYPASS = 142 -SX_PERF_SEL_DB2_MRT5_DONT_RD_DEST = 143 -SX_PERF_SEL_DB2_MRT5_DISCARD_SRC = 144 -SX_PERF_SEL_DB2_MRT5_SINGLE_QUADS = 145 -SX_PERF_SEL_DB2_MRT5_DOUBLE_QUADS = 146 -SX_PERF_SEL_DB2_MRT6_BLEND_BYPASS = 147 -SX_PERF_SEL_DB2_MRT6_DONT_RD_DEST = 148 -SX_PERF_SEL_DB2_MRT6_DISCARD_SRC = 149 -SX_PERF_SEL_DB2_MRT6_SINGLE_QUADS = 150 -SX_PERF_SEL_DB2_MRT6_DOUBLE_QUADS = 151 -SX_PERF_SEL_DB2_MRT7_BLEND_BYPASS = 152 -SX_PERF_SEL_DB2_MRT7_DONT_RD_DEST = 153 -SX_PERF_SEL_DB2_MRT7_DISCARD_SRC = 154 -SX_PERF_SEL_DB2_MRT7_SINGLE_QUADS = 155 -SX_PERF_SEL_DB2_MRT7_DOUBLE_QUADS = 156 -SX_PERF_SEL_DB3_A2M_DISCARD_QUADS = 157 -SX_PERF_SEL_DB3_MRT0_BLEND_BYPASS = 158 -SX_PERF_SEL_DB3_MRT0_DONT_RD_DEST = 159 -SX_PERF_SEL_DB3_MRT0_DISCARD_SRC = 160 -SX_PERF_SEL_DB3_MRT0_SINGLE_QUADS = 161 -SX_PERF_SEL_DB3_MRT0_DOUBLE_QUADS = 162 -SX_PERF_SEL_DB3_MRT1_BLEND_BYPASS = 163 -SX_PERF_SEL_DB3_MRT1_DONT_RD_DEST = 164 -SX_PERF_SEL_DB3_MRT1_DISCARD_SRC = 165 -SX_PERF_SEL_DB3_MRT1_SINGLE_QUADS = 166 -SX_PERF_SEL_DB3_MRT1_DOUBLE_QUADS = 167 -SX_PERF_SEL_DB3_MRT2_BLEND_BYPASS = 168 -SX_PERF_SEL_DB3_MRT2_DONT_RD_DEST = 169 -SX_PERF_SEL_DB3_MRT2_DISCARD_SRC = 170 -SX_PERF_SEL_DB3_MRT2_SINGLE_QUADS = 171 -SX_PERF_SEL_DB3_MRT2_DOUBLE_QUADS = 172 -SX_PERF_SEL_DB3_MRT3_BLEND_BYPASS = 173 -SX_PERF_SEL_DB3_MRT3_DONT_RD_DEST = 174 -SX_PERF_SEL_DB3_MRT3_DISCARD_SRC = 175 -SX_PERF_SEL_DB3_MRT3_SINGLE_QUADS = 176 -SX_PERF_SEL_DB3_MRT3_DOUBLE_QUADS = 177 -SX_PERF_SEL_DB3_MRT4_BLEND_BYPASS = 178 -SX_PERF_SEL_DB3_MRT4_DONT_RD_DEST = 179 -SX_PERF_SEL_DB3_MRT4_DISCARD_SRC = 180 -SX_PERF_SEL_DB3_MRT4_SINGLE_QUADS = 181 -SX_PERF_SEL_DB3_MRT4_DOUBLE_QUADS = 182 -SX_PERF_SEL_DB3_MRT5_BLEND_BYPASS = 183 -SX_PERF_SEL_DB3_MRT5_DONT_RD_DEST = 184 -SX_PERF_SEL_DB3_MRT5_DISCARD_SRC = 185 -SX_PERF_SEL_DB3_MRT5_SINGLE_QUADS = 186 -SX_PERF_SEL_DB3_MRT5_DOUBLE_QUADS = 187 -SX_PERF_SEL_DB3_MRT6_BLEND_BYPASS = 188 -SX_PERF_SEL_DB3_MRT6_DONT_RD_DEST = 189 -SX_PERF_SEL_DB3_MRT6_DISCARD_SRC = 190 -SX_PERF_SEL_DB3_MRT6_SINGLE_QUADS = 191 -SX_PERF_SEL_DB3_MRT6_DOUBLE_QUADS = 192 -SX_PERF_SEL_DB3_MRT7_BLEND_BYPASS = 193 -SX_PERF_SEL_DB3_MRT7_DONT_RD_DEST = 194 -SX_PERF_SEL_DB3_MRT7_DISCARD_SRC = 195 -SX_PERF_SEL_DB3_MRT7_SINGLE_QUADS = 196 -SX_PERF_SEL_DB3_MRT7_DOUBLE_QUADS = 197 -SX_PERF_SEL_PA_REQ_LATENCY = 198 -SX_PERF_SEL_POS_SCBD_STALL = 199 -SX_PERF_SEL_COL_SCBD_STALL = 200 -SX_PERF_SEL_CLOCK_DROP_STALL = 201 -SX_PERF_SEL_GATE_EN5 = 202 -SX_PERF_SEL_GATE_EN6 = 203 -SX_PERF_SEL_DB0_SIZE = 204 -SX_PERF_SEL_DB1_SIZE = 205 -SX_PERF_SEL_DB2_SIZE = 206 -SX_PERF_SEL_DB3_SIZE = 207 -SX_PERF_SEL_SPLITMODE = 208 -SX_PERF_SEL_COL_SCBD0_STALL = 209 -SX_PERF_SEL_COL_SCBD1_STALL = 210 -SX_PERF_SEL_IDX_STALL_CYCLES = 211 -SX_PERF_SEL_IDX_IDLE_CYCLES = 212 -SX_PERF_SEL_IDX_REQ = 213 -SX_PERF_SEL_IDX_RET = 214 -SX_PERF_SEL_IDX_REQ_LATENCY = 215 -SX_PERF_SEL_IDX_SCBD_STALL = 216 -SX_PERF_SEL_GATE_EN7 = 217 -SX_PERF_SEL_GATE_EN8 = 218 -SX_PERF_SEL_SH_IDX_STARVE = 219 -SX_PERF_SEL_IDX_BUSY = 220 -SX_PERFCOUNTER_VALS = ctypes.c_uint32 # enum - -# values for enumeration 'ForceControl' -ForceControl__enumvalues = { - 0: 'FORCE_OFF', - 1: 'FORCE_ENABLE', - 2: 'FORCE_DISABLE', - 3: 'FORCE_RESERVED', -} -FORCE_OFF = 0 -FORCE_ENABLE = 1 -FORCE_DISABLE = 2 -FORCE_RESERVED = 3 -ForceControl = ctypes.c_uint32 # enum - -# values for enumeration 'ZSamplePosition' -ZSamplePosition__enumvalues = { - 0: 'Z_SAMPLE_CENTER', - 1: 'Z_SAMPLE_CENTROID', -} -Z_SAMPLE_CENTER = 0 -Z_SAMPLE_CENTROID = 1 -ZSamplePosition = ctypes.c_uint32 # enum - -# values for enumeration 'ZOrder' -ZOrder__enumvalues = { - 0: 'LATE_Z', - 1: 'EARLY_Z_THEN_LATE_Z', - 2: 'RE_Z', - 3: 'EARLY_Z_THEN_RE_Z', -} -LATE_Z = 0 -EARLY_Z_THEN_LATE_Z = 1 -RE_Z = 2 -EARLY_Z_THEN_RE_Z = 3 -ZOrder = ctypes.c_uint32 # enum - -# values for enumeration 'ZpassControl' -ZpassControl__enumvalues = { - 0: 'ZPASS_DISABLE', - 1: 'ZPASS_SAMPLES', - 2: 'ZPASS_PIXELS', -} -ZPASS_DISABLE = 0 -ZPASS_SAMPLES = 1 -ZPASS_PIXELS = 2 -ZpassControl = ctypes.c_uint32 # enum - -# values for enumeration 'ZModeForce' -ZModeForce__enumvalues = { - 0: 'NO_FORCE', - 1: 'FORCE_EARLY_Z', - 2: 'FORCE_LATE_Z', - 3: 'FORCE_RE_Z', -} -NO_FORCE = 0 -FORCE_EARLY_Z = 1 -FORCE_LATE_Z = 2 -FORCE_RE_Z = 3 -ZModeForce = ctypes.c_uint32 # enum - -# values for enumeration 'ZLimitSumm' -ZLimitSumm__enumvalues = { - 0: 'FORCE_SUMM_OFF', - 1: 'FORCE_SUMM_MINZ', - 2: 'FORCE_SUMM_MAXZ', - 3: 'FORCE_SUMM_BOTH', -} -FORCE_SUMM_OFF = 0 -FORCE_SUMM_MINZ = 1 -FORCE_SUMM_MAXZ = 2 -FORCE_SUMM_BOTH = 3 -ZLimitSumm = ctypes.c_uint32 # enum - -# values for enumeration 'CompareFrag' -CompareFrag__enumvalues = { - 0: 'FRAG_NEVER', - 1: 'FRAG_LESS', - 2: 'FRAG_EQUAL', - 3: 'FRAG_LEQUAL', - 4: 'FRAG_GREATER', - 5: 'FRAG_NOTEQUAL', - 6: 'FRAG_GEQUAL', - 7: 'FRAG_ALWAYS', -} -FRAG_NEVER = 0 -FRAG_LESS = 1 -FRAG_EQUAL = 2 -FRAG_LEQUAL = 3 -FRAG_GREATER = 4 -FRAG_NOTEQUAL = 5 -FRAG_GEQUAL = 6 -FRAG_ALWAYS = 7 -CompareFrag = ctypes.c_uint32 # enum - -# values for enumeration 'StencilOp' -StencilOp__enumvalues = { - 0: 'STENCIL_KEEP', - 1: 'STENCIL_ZERO', - 2: 'STENCIL_ONES', - 3: 'STENCIL_REPLACE_TEST', - 4: 'STENCIL_REPLACE_OP', - 5: 'STENCIL_ADD_CLAMP', - 6: 'STENCIL_SUB_CLAMP', - 7: 'STENCIL_INVERT', - 8: 'STENCIL_ADD_WRAP', - 9: 'STENCIL_SUB_WRAP', - 10: 'STENCIL_AND', - 11: 'STENCIL_OR', - 12: 'STENCIL_XOR', - 13: 'STENCIL_NAND', - 14: 'STENCIL_NOR', - 15: 'STENCIL_XNOR', -} -STENCIL_KEEP = 0 -STENCIL_ZERO = 1 -STENCIL_ONES = 2 -STENCIL_REPLACE_TEST = 3 -STENCIL_REPLACE_OP = 4 -STENCIL_ADD_CLAMP = 5 -STENCIL_SUB_CLAMP = 6 -STENCIL_INVERT = 7 -STENCIL_ADD_WRAP = 8 -STENCIL_SUB_WRAP = 9 -STENCIL_AND = 10 -STENCIL_OR = 11 -STENCIL_XOR = 12 -STENCIL_NAND = 13 -STENCIL_NOR = 14 -STENCIL_XNOR = 15 -StencilOp = ctypes.c_uint32 # enum - -# values for enumeration 'ConservativeZExport' -ConservativeZExport__enumvalues = { - 0: 'EXPORT_ANY_Z', - 1: 'EXPORT_LESS_THAN_Z', - 2: 'EXPORT_GREATER_THAN_Z', - 3: 'EXPORT_RESERVED', -} -EXPORT_ANY_Z = 0 -EXPORT_LESS_THAN_Z = 1 -EXPORT_GREATER_THAN_Z = 2 -EXPORT_RESERVED = 3 -ConservativeZExport = ctypes.c_uint32 # enum - -# values for enumeration 'DbPSLControl' -DbPSLControl__enumvalues = { - 0: 'PSLC_AUTO', - 1: 'PSLC_ON_HANG_ONLY', - 2: 'PSLC_ASAP', - 3: 'PSLC_COUNTDOWN', -} -PSLC_AUTO = 0 -PSLC_ON_HANG_ONLY = 1 -PSLC_ASAP = 2 -PSLC_COUNTDOWN = 3 -DbPSLControl = ctypes.c_uint32 # enum - -# values for enumeration 'DbPRTFaultBehavior' -DbPRTFaultBehavior__enumvalues = { - 0: 'FAULT_ZERO', - 1: 'FAULT_ONE', - 2: 'FAULT_FAIL', - 3: 'FAULT_PASS', -} -FAULT_ZERO = 0 -FAULT_ONE = 1 -FAULT_FAIL = 2 -FAULT_PASS = 3 -DbPRTFaultBehavior = ctypes.c_uint32 # enum - -# values for enumeration 'PerfCounter_Vals' -PerfCounter_Vals__enumvalues = { - 0: 'DB_PERF_SEL_SC_DB_tile_sends', - 1: 'DB_PERF_SEL_SC_DB_tile_busy', - 2: 'DB_PERF_SEL_SC_DB_tile_stalls', - 3: 'DB_PERF_SEL_SC_DB_tile_events', - 4: 'DB_PERF_SEL_SC_DB_tile_tiles', - 5: 'DB_PERF_SEL_SC_DB_tile_covered', - 6: 'DB_PERF_SEL_hiz_tc_read_starved', - 7: 'DB_PERF_SEL_hiz_tc_write_stall', - 8: 'DB_PERF_SEL_hiz_tile_culled', - 9: 'DB_PERF_SEL_his_tile_culled', - 10: 'DB_PERF_SEL_DB_SC_tile_sends', - 11: 'DB_PERF_SEL_DB_SC_tile_busy', - 12: 'DB_PERF_SEL_DB_SC_tile_stalls', - 13: 'DB_PERF_SEL_DB_SC_tile_df_stalls', - 14: 'DB_PERF_SEL_DB_SC_tile_tiles', - 15: 'DB_PERF_SEL_DB_SC_tile_culled', - 16: 'DB_PERF_SEL_DB_SC_tile_hier_kill', - 17: 'DB_PERF_SEL_DB_SC_tile_fast_ops', - 18: 'DB_PERF_SEL_DB_SC_tile_no_ops', - 19: 'DB_PERF_SEL_DB_SC_tile_tile_rate', - 20: 'DB_PERF_SEL_DB_SC_tile_ssaa_kill', - 21: 'DB_PERF_SEL_DB_SC_tile_fast_z_ops', - 22: 'DB_PERF_SEL_DB_SC_tile_fast_stencil_ops', - 23: 'DB_PERF_SEL_SC_DB_quad_sends', - 24: 'DB_PERF_SEL_SC_DB_quad_busy', - 25: 'DB_PERF_SEL_SC_DB_quad_squads', - 26: 'DB_PERF_SEL_SC_DB_quad_tiles', - 27: 'DB_PERF_SEL_SC_DB_quad_pixels', - 28: 'DB_PERF_SEL_SC_DB_quad_killed_tiles', - 29: 'DB_PERF_SEL_DB_SC_quad_sends', - 30: 'DB_PERF_SEL_DB_SC_quad_busy', - 31: 'DB_PERF_SEL_DB_SC_quad_stalls', - 32: 'DB_PERF_SEL_DB_SC_quad_tiles', - 33: 'DB_PERF_SEL_DB_SC_quad_lit_quad', - 34: 'DB_PERF_SEL_DB_CB_tile_sends', - 35: 'DB_PERF_SEL_DB_CB_tile_busy', - 36: 'DB_PERF_SEL_DB_CB_tile_stalls', - 37: 'DB_PERF_SEL_SX_DB_quad_sends', - 38: 'DB_PERF_SEL_SX_DB_quad_busy', - 39: 'DB_PERF_SEL_SX_DB_quad_stalls', - 40: 'DB_PERF_SEL_SX_DB_quad_quads', - 41: 'DB_PERF_SEL_SX_DB_quad_pixels', - 42: 'DB_PERF_SEL_SX_DB_quad_exports', - 43: 'DB_PERF_SEL_SH_quads_outstanding_sum', - 44: 'DB_PERF_SEL_DB_CB_lquad_sends', - 45: 'DB_PERF_SEL_DB_CB_lquad_busy', - 46: 'DB_PERF_SEL_DB_CB_lquad_stalls', - 47: 'DB_PERF_SEL_DB_CB_lquad_quads', - 48: 'DB_PERF_SEL_tile_rd_sends', - 49: 'DB_PERF_SEL_mi_tile_rd_outstanding_sum', - 50: 'DB_PERF_SEL_quad_rd_sends', - 51: 'DB_PERF_SEL_quad_rd_busy', - 52: 'DB_PERF_SEL_quad_rd_mi_stall', - 53: 'DB_PERF_SEL_quad_rd_rw_collision', - 54: 'DB_PERF_SEL_quad_rd_tag_stall', - 55: 'DB_PERF_SEL_quad_rd_32byte_reqs', - 56: 'DB_PERF_SEL_quad_rd_panic', - 57: 'DB_PERF_SEL_mi_quad_rd_outstanding_sum', - 58: 'DB_PERF_SEL_quad_rdret_sends', - 59: 'DB_PERF_SEL_quad_rdret_busy', - 60: 'DB_PERF_SEL_tile_wr_sends', - 61: 'DB_PERF_SEL_tile_wr_acks', - 62: 'DB_PERF_SEL_mi_tile_wr_outstanding_sum', - 63: 'DB_PERF_SEL_quad_wr_sends', - 64: 'DB_PERF_SEL_quad_wr_busy', - 65: 'DB_PERF_SEL_quad_wr_mi_stall', - 66: 'DB_PERF_SEL_quad_wr_coherency_stall', - 67: 'DB_PERF_SEL_quad_wr_acks', - 68: 'DB_PERF_SEL_mi_quad_wr_outstanding_sum', - 69: 'DB_PERF_SEL_Tile_Cache_misses', - 70: 'DB_PERF_SEL_Tile_Cache_hits', - 71: 'DB_PERF_SEL_Tile_Cache_flushes', - 72: 'DB_PERF_SEL_Tile_Cache_surface_stall', - 73: 'DB_PERF_SEL_Tile_Cache_starves', - 74: 'DB_PERF_SEL_Tile_Cache_mem_return_starve', - 75: 'DB_PERF_SEL_tcp_dispatcher_reads', - 76: 'DB_PERF_SEL_tcp_prefetcher_reads', - 77: 'DB_PERF_SEL_tcp_preloader_reads', - 78: 'DB_PERF_SEL_tcp_dispatcher_flushes', - 79: 'DB_PERF_SEL_tcp_prefetcher_flushes', - 80: 'DB_PERF_SEL_tcp_preloader_flushes', - 81: 'DB_PERF_SEL_Depth_Tile_Cache_sends', - 82: 'DB_PERF_SEL_Depth_Tile_Cache_busy', - 83: 'DB_PERF_SEL_Depth_Tile_Cache_starves', - 84: 'DB_PERF_SEL_Depth_Tile_Cache_dtile_locked', - 85: 'DB_PERF_SEL_Depth_Tile_Cache_alloc_stall', - 86: 'DB_PERF_SEL_Depth_Tile_Cache_misses', - 87: 'DB_PERF_SEL_Depth_Tile_Cache_hits', - 88: 'DB_PERF_SEL_Depth_Tile_Cache_flushes', - 89: 'DB_PERF_SEL_Depth_Tile_Cache_noop_tile', - 90: 'DB_PERF_SEL_Depth_Tile_Cache_detailed_noop', - 91: 'DB_PERF_SEL_Depth_Tile_Cache_event', - 92: 'DB_PERF_SEL_Depth_Tile_Cache_tile_frees', - 93: 'DB_PERF_SEL_Depth_Tile_Cache_data_frees', - 94: 'DB_PERF_SEL_Depth_Tile_Cache_mem_return_starve', - 95: 'DB_PERF_SEL_Stencil_Cache_misses', - 96: 'DB_PERF_SEL_Stencil_Cache_hits', - 97: 'DB_PERF_SEL_Stencil_Cache_flushes', - 98: 'DB_PERF_SEL_Stencil_Cache_starves', - 99: 'DB_PERF_SEL_Stencil_Cache_frees', - 100: 'DB_PERF_SEL_Z_Cache_separate_Z_misses', - 101: 'DB_PERF_SEL_Z_Cache_separate_Z_hits', - 102: 'DB_PERF_SEL_Z_Cache_separate_Z_flushes', - 103: 'DB_PERF_SEL_Z_Cache_separate_Z_starves', - 104: 'DB_PERF_SEL_Z_Cache_pmask_misses', - 105: 'DB_PERF_SEL_Z_Cache_pmask_hits', - 106: 'DB_PERF_SEL_Z_Cache_pmask_flushes', - 107: 'DB_PERF_SEL_Z_Cache_pmask_starves', - 108: 'DB_PERF_SEL_Z_Cache_frees', - 109: 'DB_PERF_SEL_Plane_Cache_misses', - 110: 'DB_PERF_SEL_Plane_Cache_hits', - 111: 'DB_PERF_SEL_Plane_Cache_flushes', - 112: 'DB_PERF_SEL_Plane_Cache_starves', - 113: 'DB_PERF_SEL_Plane_Cache_frees', - 114: 'DB_PERF_SEL_flush_expanded_stencil', - 115: 'DB_PERF_SEL_flush_compressed_stencil', - 116: 'DB_PERF_SEL_flush_single_stencil', - 117: 'DB_PERF_SEL_planes_flushed', - 118: 'DB_PERF_SEL_flush_1plane', - 119: 'DB_PERF_SEL_flush_2plane', - 120: 'DB_PERF_SEL_flush_3plane', - 121: 'DB_PERF_SEL_flush_4plane', - 122: 'DB_PERF_SEL_flush_5plane', - 123: 'DB_PERF_SEL_flush_6plane', - 124: 'DB_PERF_SEL_flush_7plane', - 125: 'DB_PERF_SEL_flush_8plane', - 126: 'DB_PERF_SEL_flush_9plane', - 127: 'DB_PERF_SEL_flush_10plane', - 128: 'DB_PERF_SEL_flush_11plane', - 129: 'DB_PERF_SEL_flush_12plane', - 130: 'DB_PERF_SEL_flush_13plane', - 131: 'DB_PERF_SEL_flush_14plane', - 132: 'DB_PERF_SEL_flush_15plane', - 133: 'DB_PERF_SEL_flush_16plane', - 134: 'DB_PERF_SEL_flush_expanded_z', - 135: 'DB_PERF_SEL_earlyZ_waiting_for_postZ_done', - 136: 'DB_PERF_SEL_reZ_waiting_for_postZ_done', - 137: 'DB_PERF_SEL_dk_tile_sends', - 138: 'DB_PERF_SEL_dk_tile_busy', - 139: 'DB_PERF_SEL_dk_tile_quad_starves', - 140: 'DB_PERF_SEL_dk_tile_stalls', - 141: 'DB_PERF_SEL_dk_squad_sends', - 142: 'DB_PERF_SEL_dk_squad_busy', - 143: 'DB_PERF_SEL_dk_squad_stalls', - 144: 'DB_PERF_SEL_Op_Pipe_Busy', - 145: 'DB_PERF_SEL_Op_Pipe_MC_Read_stall', - 146: 'DB_PERF_SEL_qc_busy', - 147: 'DB_PERF_SEL_qc_xfc', - 148: 'DB_PERF_SEL_qc_conflicts', - 149: 'DB_PERF_SEL_qc_full_stall', - 150: 'DB_PERF_SEL_qc_in_preZ_tile_stalls_postZ', - 151: 'DB_PERF_SEL_qc_in_postZ_tile_stalls_preZ', - 152: 'DB_PERF_SEL_tsc_insert_summarize_stall', - 153: 'DB_PERF_SEL_tl_busy', - 154: 'DB_PERF_SEL_tl_dtc_read_starved', - 155: 'DB_PERF_SEL_tl_z_fetch_stall', - 156: 'DB_PERF_SEL_tl_stencil_stall', - 157: 'DB_PERF_SEL_tl_z_decompress_stall', - 158: 'DB_PERF_SEL_tl_stencil_locked_stall', - 159: 'DB_PERF_SEL_tl_events', - 160: 'DB_PERF_SEL_tl_summarize_squads', - 161: 'DB_PERF_SEL_tl_flush_expand_squads', - 162: 'DB_PERF_SEL_tl_expand_squads', - 163: 'DB_PERF_SEL_tl_preZ_squads', - 164: 'DB_PERF_SEL_tl_postZ_squads', - 165: 'DB_PERF_SEL_tl_preZ_noop_squads', - 166: 'DB_PERF_SEL_tl_postZ_noop_squads', - 167: 'DB_PERF_SEL_tl_tile_ops', - 168: 'DB_PERF_SEL_tl_in_xfc', - 169: 'DB_PERF_SEL_tl_in_single_stencil_expand_stall', - 170: 'DB_PERF_SEL_tl_in_fast_z_stall', - 171: 'DB_PERF_SEL_tl_out_xfc', - 172: 'DB_PERF_SEL_tl_out_squads', - 173: 'DB_PERF_SEL_zf_plane_multicycle', - 174: 'DB_PERF_SEL_PostZ_Samples_passing_Z', - 175: 'DB_PERF_SEL_PostZ_Samples_failing_Z', - 176: 'DB_PERF_SEL_PostZ_Samples_failing_S', - 177: 'DB_PERF_SEL_PreZ_Samples_passing_Z', - 178: 'DB_PERF_SEL_PreZ_Samples_failing_Z', - 179: 'DB_PERF_SEL_PreZ_Samples_failing_S', - 180: 'DB_PERF_SEL_ts_tc_update_stall', - 181: 'DB_PERF_SEL_sc_kick_start', - 182: 'DB_PERF_SEL_sc_kick_end', - 183: 'DB_PERF_SEL_clock_reg_active', - 184: 'DB_PERF_SEL_clock_main_active', - 185: 'DB_PERF_SEL_clock_mem_export_active', - 186: 'DB_PERF_SEL_esr_ps_out_busy', - 187: 'DB_PERF_SEL_esr_ps_lqf_busy', - 188: 'DB_PERF_SEL_esr_ps_lqf_stall', - 189: 'DB_PERF_SEL_etr_out_send', - 190: 'DB_PERF_SEL_etr_out_busy', - 191: 'DB_PERF_SEL_etr_out_ltile_probe_fifo_full_stall', - 192: 'DB_PERF_SEL_etr_out_cb_tile_stall', - 193: 'DB_PERF_SEL_etr_out_esr_stall', - 194: 'DB_PERF_SEL_esr_ps_sqq_busy', - 195: 'DB_PERF_SEL_esr_ps_sqq_stall', - 196: 'DB_PERF_SEL_esr_eot_fwd_busy', - 197: 'DB_PERF_SEL_esr_eot_fwd_holding_squad', - 198: 'DB_PERF_SEL_esr_eot_fwd_forward', - 199: 'DB_PERF_SEL_esr_sqq_zi_busy', - 200: 'DB_PERF_SEL_esr_sqq_zi_stall', - 201: 'DB_PERF_SEL_postzl_sq_pt_busy', - 202: 'DB_PERF_SEL_postzl_sq_pt_stall', - 203: 'DB_PERF_SEL_postzl_se_busy', - 204: 'DB_PERF_SEL_postzl_se_stall', - 205: 'DB_PERF_SEL_postzl_partial_launch', - 206: 'DB_PERF_SEL_postzl_full_launch', - 207: 'DB_PERF_SEL_postzl_partial_waiting', - 208: 'DB_PERF_SEL_postzl_tile_mem_stall', - 209: 'DB_PERF_SEL_postzl_tile_init_stall', - 210: 'DB_PERF_SEL_prezl_tile_mem_stall', - 211: 'DB_PERF_SEL_prezl_tile_init_stall', - 212: 'DB_PERF_SEL_dtt_sm_clash_stall', - 213: 'DB_PERF_SEL_dtt_sm_slot_stall', - 214: 'DB_PERF_SEL_dtt_sm_miss_stall', - 215: 'DB_PERF_SEL_mi_rdreq_busy', - 216: 'DB_PERF_SEL_mi_rdreq_stall', - 217: 'DB_PERF_SEL_mi_wrreq_busy', - 218: 'DB_PERF_SEL_mi_wrreq_stall', - 219: 'DB_PERF_SEL_recomp_tile_to_1zplane_no_fastop', - 220: 'DB_PERF_SEL_dkg_tile_rate_tile', - 221: 'DB_PERF_SEL_prezl_src_in_sends', - 222: 'DB_PERF_SEL_prezl_src_in_stall', - 223: 'DB_PERF_SEL_prezl_src_in_squads', - 224: 'DB_PERF_SEL_prezl_src_in_squads_unrolled', - 225: 'DB_PERF_SEL_prezl_src_in_tile_rate', - 226: 'DB_PERF_SEL_prezl_src_in_tile_rate_unrolled', - 227: 'DB_PERF_SEL_prezl_src_out_stall', - 228: 'DB_PERF_SEL_postzl_src_in_sends', - 229: 'DB_PERF_SEL_postzl_src_in_stall', - 230: 'DB_PERF_SEL_postzl_src_in_squads', - 231: 'DB_PERF_SEL_postzl_src_in_squads_unrolled', - 232: 'DB_PERF_SEL_postzl_src_in_tile_rate', - 233: 'DB_PERF_SEL_postzl_src_in_tile_rate_unrolled', - 234: 'DB_PERF_SEL_postzl_src_out_stall', - 235: 'DB_PERF_SEL_esr_ps_src_in_sends', - 236: 'DB_PERF_SEL_esr_ps_src_in_stall', - 237: 'DB_PERF_SEL_esr_ps_src_in_squads', - 238: 'DB_PERF_SEL_esr_ps_src_in_squads_unrolled', - 239: 'DB_PERF_SEL_esr_ps_src_in_tile_rate', - 240: 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled', - 241: 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled_to_pixel_rate', - 242: 'DB_PERF_SEL_esr_ps_src_out_stall', - 243: 'DB_PERF_SEL_depth_bounds_tile_culled', - 244: 'DB_PERF_SEL_PreZ_Samples_failing_DB', - 245: 'DB_PERF_SEL_PostZ_Samples_failing_DB', - 246: 'DB_PERF_SEL_flush_compressed', - 247: 'DB_PERF_SEL_flush_plane_le4', - 248: 'DB_PERF_SEL_tiles_z_fully_summarized', - 249: 'DB_PERF_SEL_tiles_stencil_fully_summarized', - 250: 'DB_PERF_SEL_tiles_z_clear_on_expclear', - 251: 'DB_PERF_SEL_tiles_s_clear_on_expclear', - 252: 'DB_PERF_SEL_tiles_decomp_on_expclear', - 253: 'DB_PERF_SEL_tiles_compressed_to_decompressed', - 254: 'DB_PERF_SEL_Op_Pipe_Prez_Busy', - 255: 'DB_PERF_SEL_Op_Pipe_Postz_Busy', - 256: 'DB_PERF_SEL_di_dt_stall', - 257: 'DB_PERF_SEL_DB_SC_quad_lit_quad_pre_invoke', - 258: 'DB_PERF_SEL_DB_SC_s_tile_rate', - 259: 'DB_PERF_SEL_DB_SC_c_tile_rate', - 260: 'DB_PERF_SEL_DB_SC_z_tile_rate', - 261: 'Spare_261', - 262: 'DB_PERF_SEL_DB_CB_lquad_export_quads', - 263: 'DB_PERF_SEL_DB_CB_lquad_double_format', - 264: 'DB_PERF_SEL_DB_CB_lquad_fast_format', - 265: 'DB_PERF_SEL_DB_CB_lquad_slow_format', - 266: 'DB_PERF_SEL_CB_DB_rdreq_sends', - 267: 'DB_PERF_SEL_CB_DB_rdreq_prt_sends', - 268: 'DB_PERF_SEL_CB_DB_wrreq_sends', - 269: 'DB_PERF_SEL_CB_DB_wrreq_prt_sends', - 270: 'DB_PERF_SEL_DB_CB_rdret_ack', - 271: 'DB_PERF_SEL_DB_CB_rdret_nack', - 272: 'DB_PERF_SEL_DB_CB_wrret_ack', - 273: 'DB_PERF_SEL_DB_CB_wrret_nack', - 274: 'DB_PERF_SEL_DFSM_Stall_opmode_change', - 275: 'DB_PERF_SEL_DFSM_Stall_cam_fifo', - 276: 'DB_PERF_SEL_DFSM_Stall_bypass_fifo', - 277: 'DB_PERF_SEL_DFSM_Stall_retained_tile_fifo', - 278: 'DB_PERF_SEL_DFSM_Stall_control_fifo', - 279: 'DB_PERF_SEL_DFSM_Stall_overflow_counter', - 280: 'DB_PERF_SEL_DFSM_Stall_pops_stall_overflow', - 281: 'DB_PERF_SEL_DFSM_Stall_pops_stall_self_flush', - 282: 'DB_PERF_SEL_DFSM_Stall_middle_output', - 283: 'DB_PERF_SEL_DFSM_Stall_stalling_general', - 284: 'Spare_285', - 285: 'Spare_286', - 286: 'DB_PERF_SEL_DFSM_prez_killed_squad', - 287: 'DB_PERF_SEL_DFSM_squads_in', - 288: 'DB_PERF_SEL_DFSM_full_cleared_squads_out', - 289: 'DB_PERF_SEL_DFSM_quads_in', - 290: 'DB_PERF_SEL_DFSM_fully_cleared_quads_out', - 291: 'DB_PERF_SEL_DFSM_lit_pixels_in', - 292: 'DB_PERF_SEL_DFSM_fully_cleared_pixels_out', - 293: 'DB_PERF_SEL_DFSM_lit_samples_in', - 294: 'DB_PERF_SEL_DFSM_lit_samples_out', - 295: 'DB_PERF_SEL_DFSM_evicted_tiles_above_watermark', - 296: 'DB_PERF_SEL_DFSM_cant_accept_squads_but_not_stalled_by_downstream', - 297: 'DB_PERF_SEL_DFSM_stalled_by_downstream', - 298: 'DB_PERF_SEL_DFSM_evicted_squads_above_watermark', - 299: 'DB_PERF_SEL_DFSM_collisions_due_to_POPS_overflow', - 300: 'DB_PERF_SEL_DFSM_collisions_detected_within_POPS_FIFO', - 301: 'DB_PERF_SEL_DFSM_evicted_squads_due_to_prim_watermark', - 302: 'DB_PERF_SEL_MI_tile_req_wrack_counter_stall', - 303: 'DB_PERF_SEL_MI_quad_req_wrack_counter_stall', - 304: 'DB_PERF_SEL_MI_zpc_req_wrack_counter_stall', - 305: 'DB_PERF_SEL_MI_psd_req_wrack_counter_stall', - 306: 'DB_PERF_SEL_unmapped_z_tile_culled', - 307: 'DB_PERF_SEL_DB_CB_tile_is_event_FLUSH_AND_INV_DB_DATA_TS', - 308: 'DB_PERF_SEL_DB_CB_tile_is_event_FLUSH_AND_INV_CB_PIXEL_DATA', - 309: 'DB_PERF_SEL_DB_CB_tile_is_event_BOTTOM_OF_PIPE_TS', - 310: 'DB_PERF_SEL_DB_CB_tile_waiting_for_perfcounter_stop_event', - 311: 'DB_PERF_SEL_DB_CB_lquad_fmt_32bpp_8pix', - 312: 'DB_PERF_SEL_DB_CB_lquad_fmt_16_16_unsigned_8pix', - 313: 'DB_PERF_SEL_DB_CB_lquad_fmt_16_16_signed_8pix', - 314: 'DB_PERF_SEL_DB_CB_lquad_fmt_16_16_float_8pix', - 315: 'DB_PERF_SEL_DB_CB_lquad_num_pixels_need_blending', - 316: 'DB_PERF_SEL_DB_CB_context_dones', - 317: 'DB_PERF_SEL_DB_CB_eop_dones', - 318: 'DB_PERF_SEL_SX_DB_quad_all_pixels_killed', - 319: 'DB_PERF_SEL_SX_DB_quad_all_pixels_enabled', - 320: 'DB_PERF_SEL_SX_DB_quad_need_blending_and_dst_read', - 321: 'DB_PERF_SEL_SC_DB_tile_backface', - 322: 'DB_PERF_SEL_SC_DB_quad_quads', - 323: 'DB_PERF_SEL_DB_SC_quad_quads_with_1_pixel', - 324: 'DB_PERF_SEL_DB_SC_quad_quads_with_2_pixels', - 325: 'DB_PERF_SEL_DB_SC_quad_quads_with_3_pixels', - 326: 'DB_PERF_SEL_DB_SC_quad_quads_with_4_pixels', - 327: 'DB_PERF_SEL_DFSM_Flush_flushabit', - 328: 'DB_PERF_SEL_DFSM_Flush_flushabit_camcoord_fifo', - 329: 'DB_PERF_SEL_DFSM_Flush_flushabit_passthrough', - 330: 'DB_PERF_SEL_DFSM_Flush_flushabit_forceflush', - 331: 'DB_PERF_SEL_DFSM_Flush_flushabit_nearlyfull', - 332: 'DB_PERF_SEL_DFSM_Flush_flushabit_primitivesinflightwatermark', - 333: 'DB_PERF_SEL_DFSM_Flush_flushabit_punch_stalling', - 334: 'DB_PERF_SEL_DFSM_Flush_flushabit_retainedtilefifo_watermark', - 335: 'DB_PERF_SEL_DFSM_Flush_flushabit_tilesinflightwatermark', - 336: 'DB_PERF_SEL_DFSM_Flush_flushall', - 337: 'DB_PERF_SEL_DFSM_Flush_flushall_dfsmflush', - 338: 'DB_PERF_SEL_DFSM_Flush_flushall_opmodechange', - 339: 'DB_PERF_SEL_DFSM_Flush_flushall_sampleratechange', - 340: 'DB_PERF_SEL_DFSM_Flush_flushall_watchdog', - 341: 'DB_PERF_SEL_DB_SC_quad_double_quad', - 342: 'DB_PERF_SEL_SX_DB_quad_export_quads', - 343: 'DB_PERF_SEL_SX_DB_quad_double_format', - 344: 'DB_PERF_SEL_SX_DB_quad_fast_format', - 345: 'DB_PERF_SEL_SX_DB_quad_slow_format', -} -DB_PERF_SEL_SC_DB_tile_sends = 0 -DB_PERF_SEL_SC_DB_tile_busy = 1 -DB_PERF_SEL_SC_DB_tile_stalls = 2 -DB_PERF_SEL_SC_DB_tile_events = 3 -DB_PERF_SEL_SC_DB_tile_tiles = 4 -DB_PERF_SEL_SC_DB_tile_covered = 5 -DB_PERF_SEL_hiz_tc_read_starved = 6 -DB_PERF_SEL_hiz_tc_write_stall = 7 -DB_PERF_SEL_hiz_tile_culled = 8 -DB_PERF_SEL_his_tile_culled = 9 -DB_PERF_SEL_DB_SC_tile_sends = 10 -DB_PERF_SEL_DB_SC_tile_busy = 11 -DB_PERF_SEL_DB_SC_tile_stalls = 12 -DB_PERF_SEL_DB_SC_tile_df_stalls = 13 -DB_PERF_SEL_DB_SC_tile_tiles = 14 -DB_PERF_SEL_DB_SC_tile_culled = 15 -DB_PERF_SEL_DB_SC_tile_hier_kill = 16 -DB_PERF_SEL_DB_SC_tile_fast_ops = 17 -DB_PERF_SEL_DB_SC_tile_no_ops = 18 -DB_PERF_SEL_DB_SC_tile_tile_rate = 19 -DB_PERF_SEL_DB_SC_tile_ssaa_kill = 20 -DB_PERF_SEL_DB_SC_tile_fast_z_ops = 21 -DB_PERF_SEL_DB_SC_tile_fast_stencil_ops = 22 -DB_PERF_SEL_SC_DB_quad_sends = 23 -DB_PERF_SEL_SC_DB_quad_busy = 24 -DB_PERF_SEL_SC_DB_quad_squads = 25 -DB_PERF_SEL_SC_DB_quad_tiles = 26 -DB_PERF_SEL_SC_DB_quad_pixels = 27 -DB_PERF_SEL_SC_DB_quad_killed_tiles = 28 -DB_PERF_SEL_DB_SC_quad_sends = 29 -DB_PERF_SEL_DB_SC_quad_busy = 30 -DB_PERF_SEL_DB_SC_quad_stalls = 31 -DB_PERF_SEL_DB_SC_quad_tiles = 32 -DB_PERF_SEL_DB_SC_quad_lit_quad = 33 -DB_PERF_SEL_DB_CB_tile_sends = 34 -DB_PERF_SEL_DB_CB_tile_busy = 35 -DB_PERF_SEL_DB_CB_tile_stalls = 36 -DB_PERF_SEL_SX_DB_quad_sends = 37 -DB_PERF_SEL_SX_DB_quad_busy = 38 -DB_PERF_SEL_SX_DB_quad_stalls = 39 -DB_PERF_SEL_SX_DB_quad_quads = 40 -DB_PERF_SEL_SX_DB_quad_pixels = 41 -DB_PERF_SEL_SX_DB_quad_exports = 42 -DB_PERF_SEL_SH_quads_outstanding_sum = 43 -DB_PERF_SEL_DB_CB_lquad_sends = 44 -DB_PERF_SEL_DB_CB_lquad_busy = 45 -DB_PERF_SEL_DB_CB_lquad_stalls = 46 -DB_PERF_SEL_DB_CB_lquad_quads = 47 -DB_PERF_SEL_tile_rd_sends = 48 -DB_PERF_SEL_mi_tile_rd_outstanding_sum = 49 -DB_PERF_SEL_quad_rd_sends = 50 -DB_PERF_SEL_quad_rd_busy = 51 -DB_PERF_SEL_quad_rd_mi_stall = 52 -DB_PERF_SEL_quad_rd_rw_collision = 53 -DB_PERF_SEL_quad_rd_tag_stall = 54 -DB_PERF_SEL_quad_rd_32byte_reqs = 55 -DB_PERF_SEL_quad_rd_panic = 56 -DB_PERF_SEL_mi_quad_rd_outstanding_sum = 57 -DB_PERF_SEL_quad_rdret_sends = 58 -DB_PERF_SEL_quad_rdret_busy = 59 -DB_PERF_SEL_tile_wr_sends = 60 -DB_PERF_SEL_tile_wr_acks = 61 -DB_PERF_SEL_mi_tile_wr_outstanding_sum = 62 -DB_PERF_SEL_quad_wr_sends = 63 -DB_PERF_SEL_quad_wr_busy = 64 -DB_PERF_SEL_quad_wr_mi_stall = 65 -DB_PERF_SEL_quad_wr_coherency_stall = 66 -DB_PERF_SEL_quad_wr_acks = 67 -DB_PERF_SEL_mi_quad_wr_outstanding_sum = 68 -DB_PERF_SEL_Tile_Cache_misses = 69 -DB_PERF_SEL_Tile_Cache_hits = 70 -DB_PERF_SEL_Tile_Cache_flushes = 71 -DB_PERF_SEL_Tile_Cache_surface_stall = 72 -DB_PERF_SEL_Tile_Cache_starves = 73 -DB_PERF_SEL_Tile_Cache_mem_return_starve = 74 -DB_PERF_SEL_tcp_dispatcher_reads = 75 -DB_PERF_SEL_tcp_prefetcher_reads = 76 -DB_PERF_SEL_tcp_preloader_reads = 77 -DB_PERF_SEL_tcp_dispatcher_flushes = 78 -DB_PERF_SEL_tcp_prefetcher_flushes = 79 -DB_PERF_SEL_tcp_preloader_flushes = 80 -DB_PERF_SEL_Depth_Tile_Cache_sends = 81 -DB_PERF_SEL_Depth_Tile_Cache_busy = 82 -DB_PERF_SEL_Depth_Tile_Cache_starves = 83 -DB_PERF_SEL_Depth_Tile_Cache_dtile_locked = 84 -DB_PERF_SEL_Depth_Tile_Cache_alloc_stall = 85 -DB_PERF_SEL_Depth_Tile_Cache_misses = 86 -DB_PERF_SEL_Depth_Tile_Cache_hits = 87 -DB_PERF_SEL_Depth_Tile_Cache_flushes = 88 -DB_PERF_SEL_Depth_Tile_Cache_noop_tile = 89 -DB_PERF_SEL_Depth_Tile_Cache_detailed_noop = 90 -DB_PERF_SEL_Depth_Tile_Cache_event = 91 -DB_PERF_SEL_Depth_Tile_Cache_tile_frees = 92 -DB_PERF_SEL_Depth_Tile_Cache_data_frees = 93 -DB_PERF_SEL_Depth_Tile_Cache_mem_return_starve = 94 -DB_PERF_SEL_Stencil_Cache_misses = 95 -DB_PERF_SEL_Stencil_Cache_hits = 96 -DB_PERF_SEL_Stencil_Cache_flushes = 97 -DB_PERF_SEL_Stencil_Cache_starves = 98 -DB_PERF_SEL_Stencil_Cache_frees = 99 -DB_PERF_SEL_Z_Cache_separate_Z_misses = 100 -DB_PERF_SEL_Z_Cache_separate_Z_hits = 101 -DB_PERF_SEL_Z_Cache_separate_Z_flushes = 102 -DB_PERF_SEL_Z_Cache_separate_Z_starves = 103 -DB_PERF_SEL_Z_Cache_pmask_misses = 104 -DB_PERF_SEL_Z_Cache_pmask_hits = 105 -DB_PERF_SEL_Z_Cache_pmask_flushes = 106 -DB_PERF_SEL_Z_Cache_pmask_starves = 107 -DB_PERF_SEL_Z_Cache_frees = 108 -DB_PERF_SEL_Plane_Cache_misses = 109 -DB_PERF_SEL_Plane_Cache_hits = 110 -DB_PERF_SEL_Plane_Cache_flushes = 111 -DB_PERF_SEL_Plane_Cache_starves = 112 -DB_PERF_SEL_Plane_Cache_frees = 113 -DB_PERF_SEL_flush_expanded_stencil = 114 -DB_PERF_SEL_flush_compressed_stencil = 115 -DB_PERF_SEL_flush_single_stencil = 116 -DB_PERF_SEL_planes_flushed = 117 -DB_PERF_SEL_flush_1plane = 118 -DB_PERF_SEL_flush_2plane = 119 -DB_PERF_SEL_flush_3plane = 120 -DB_PERF_SEL_flush_4plane = 121 -DB_PERF_SEL_flush_5plane = 122 -DB_PERF_SEL_flush_6plane = 123 -DB_PERF_SEL_flush_7plane = 124 -DB_PERF_SEL_flush_8plane = 125 -DB_PERF_SEL_flush_9plane = 126 -DB_PERF_SEL_flush_10plane = 127 -DB_PERF_SEL_flush_11plane = 128 -DB_PERF_SEL_flush_12plane = 129 -DB_PERF_SEL_flush_13plane = 130 -DB_PERF_SEL_flush_14plane = 131 -DB_PERF_SEL_flush_15plane = 132 -DB_PERF_SEL_flush_16plane = 133 -DB_PERF_SEL_flush_expanded_z = 134 -DB_PERF_SEL_earlyZ_waiting_for_postZ_done = 135 -DB_PERF_SEL_reZ_waiting_for_postZ_done = 136 -DB_PERF_SEL_dk_tile_sends = 137 -DB_PERF_SEL_dk_tile_busy = 138 -DB_PERF_SEL_dk_tile_quad_starves = 139 -DB_PERF_SEL_dk_tile_stalls = 140 -DB_PERF_SEL_dk_squad_sends = 141 -DB_PERF_SEL_dk_squad_busy = 142 -DB_PERF_SEL_dk_squad_stalls = 143 -DB_PERF_SEL_Op_Pipe_Busy = 144 -DB_PERF_SEL_Op_Pipe_MC_Read_stall = 145 -DB_PERF_SEL_qc_busy = 146 -DB_PERF_SEL_qc_xfc = 147 -DB_PERF_SEL_qc_conflicts = 148 -DB_PERF_SEL_qc_full_stall = 149 -DB_PERF_SEL_qc_in_preZ_tile_stalls_postZ = 150 -DB_PERF_SEL_qc_in_postZ_tile_stalls_preZ = 151 -DB_PERF_SEL_tsc_insert_summarize_stall = 152 -DB_PERF_SEL_tl_busy = 153 -DB_PERF_SEL_tl_dtc_read_starved = 154 -DB_PERF_SEL_tl_z_fetch_stall = 155 -DB_PERF_SEL_tl_stencil_stall = 156 -DB_PERF_SEL_tl_z_decompress_stall = 157 -DB_PERF_SEL_tl_stencil_locked_stall = 158 -DB_PERF_SEL_tl_events = 159 -DB_PERF_SEL_tl_summarize_squads = 160 -DB_PERF_SEL_tl_flush_expand_squads = 161 -DB_PERF_SEL_tl_expand_squads = 162 -DB_PERF_SEL_tl_preZ_squads = 163 -DB_PERF_SEL_tl_postZ_squads = 164 -DB_PERF_SEL_tl_preZ_noop_squads = 165 -DB_PERF_SEL_tl_postZ_noop_squads = 166 -DB_PERF_SEL_tl_tile_ops = 167 -DB_PERF_SEL_tl_in_xfc = 168 -DB_PERF_SEL_tl_in_single_stencil_expand_stall = 169 -DB_PERF_SEL_tl_in_fast_z_stall = 170 -DB_PERF_SEL_tl_out_xfc = 171 -DB_PERF_SEL_tl_out_squads = 172 -DB_PERF_SEL_zf_plane_multicycle = 173 -DB_PERF_SEL_PostZ_Samples_passing_Z = 174 -DB_PERF_SEL_PostZ_Samples_failing_Z = 175 -DB_PERF_SEL_PostZ_Samples_failing_S = 176 -DB_PERF_SEL_PreZ_Samples_passing_Z = 177 -DB_PERF_SEL_PreZ_Samples_failing_Z = 178 -DB_PERF_SEL_PreZ_Samples_failing_S = 179 -DB_PERF_SEL_ts_tc_update_stall = 180 -DB_PERF_SEL_sc_kick_start = 181 -DB_PERF_SEL_sc_kick_end = 182 -DB_PERF_SEL_clock_reg_active = 183 -DB_PERF_SEL_clock_main_active = 184 -DB_PERF_SEL_clock_mem_export_active = 185 -DB_PERF_SEL_esr_ps_out_busy = 186 -DB_PERF_SEL_esr_ps_lqf_busy = 187 -DB_PERF_SEL_esr_ps_lqf_stall = 188 -DB_PERF_SEL_etr_out_send = 189 -DB_PERF_SEL_etr_out_busy = 190 -DB_PERF_SEL_etr_out_ltile_probe_fifo_full_stall = 191 -DB_PERF_SEL_etr_out_cb_tile_stall = 192 -DB_PERF_SEL_etr_out_esr_stall = 193 -DB_PERF_SEL_esr_ps_sqq_busy = 194 -DB_PERF_SEL_esr_ps_sqq_stall = 195 -DB_PERF_SEL_esr_eot_fwd_busy = 196 -DB_PERF_SEL_esr_eot_fwd_holding_squad = 197 -DB_PERF_SEL_esr_eot_fwd_forward = 198 -DB_PERF_SEL_esr_sqq_zi_busy = 199 -DB_PERF_SEL_esr_sqq_zi_stall = 200 -DB_PERF_SEL_postzl_sq_pt_busy = 201 -DB_PERF_SEL_postzl_sq_pt_stall = 202 -DB_PERF_SEL_postzl_se_busy = 203 -DB_PERF_SEL_postzl_se_stall = 204 -DB_PERF_SEL_postzl_partial_launch = 205 -DB_PERF_SEL_postzl_full_launch = 206 -DB_PERF_SEL_postzl_partial_waiting = 207 -DB_PERF_SEL_postzl_tile_mem_stall = 208 -DB_PERF_SEL_postzl_tile_init_stall = 209 -DB_PERF_SEL_prezl_tile_mem_stall = 210 -DB_PERF_SEL_prezl_tile_init_stall = 211 -DB_PERF_SEL_dtt_sm_clash_stall = 212 -DB_PERF_SEL_dtt_sm_slot_stall = 213 -DB_PERF_SEL_dtt_sm_miss_stall = 214 -DB_PERF_SEL_mi_rdreq_busy = 215 -DB_PERF_SEL_mi_rdreq_stall = 216 -DB_PERF_SEL_mi_wrreq_busy = 217 -DB_PERF_SEL_mi_wrreq_stall = 218 -DB_PERF_SEL_recomp_tile_to_1zplane_no_fastop = 219 -DB_PERF_SEL_dkg_tile_rate_tile = 220 -DB_PERF_SEL_prezl_src_in_sends = 221 -DB_PERF_SEL_prezl_src_in_stall = 222 -DB_PERF_SEL_prezl_src_in_squads = 223 -DB_PERF_SEL_prezl_src_in_squads_unrolled = 224 -DB_PERF_SEL_prezl_src_in_tile_rate = 225 -DB_PERF_SEL_prezl_src_in_tile_rate_unrolled = 226 -DB_PERF_SEL_prezl_src_out_stall = 227 -DB_PERF_SEL_postzl_src_in_sends = 228 -DB_PERF_SEL_postzl_src_in_stall = 229 -DB_PERF_SEL_postzl_src_in_squads = 230 -DB_PERF_SEL_postzl_src_in_squads_unrolled = 231 -DB_PERF_SEL_postzl_src_in_tile_rate = 232 -DB_PERF_SEL_postzl_src_in_tile_rate_unrolled = 233 -DB_PERF_SEL_postzl_src_out_stall = 234 -DB_PERF_SEL_esr_ps_src_in_sends = 235 -DB_PERF_SEL_esr_ps_src_in_stall = 236 -DB_PERF_SEL_esr_ps_src_in_squads = 237 -DB_PERF_SEL_esr_ps_src_in_squads_unrolled = 238 -DB_PERF_SEL_esr_ps_src_in_tile_rate = 239 -DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled = 240 -DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled_to_pixel_rate = 241 -DB_PERF_SEL_esr_ps_src_out_stall = 242 -DB_PERF_SEL_depth_bounds_tile_culled = 243 -DB_PERF_SEL_PreZ_Samples_failing_DB = 244 -DB_PERF_SEL_PostZ_Samples_failing_DB = 245 -DB_PERF_SEL_flush_compressed = 246 -DB_PERF_SEL_flush_plane_le4 = 247 -DB_PERF_SEL_tiles_z_fully_summarized = 248 -DB_PERF_SEL_tiles_stencil_fully_summarized = 249 -DB_PERF_SEL_tiles_z_clear_on_expclear = 250 -DB_PERF_SEL_tiles_s_clear_on_expclear = 251 -DB_PERF_SEL_tiles_decomp_on_expclear = 252 -DB_PERF_SEL_tiles_compressed_to_decompressed = 253 -DB_PERF_SEL_Op_Pipe_Prez_Busy = 254 -DB_PERF_SEL_Op_Pipe_Postz_Busy = 255 -DB_PERF_SEL_di_dt_stall = 256 -DB_PERF_SEL_DB_SC_quad_lit_quad_pre_invoke = 257 -DB_PERF_SEL_DB_SC_s_tile_rate = 258 -DB_PERF_SEL_DB_SC_c_tile_rate = 259 -DB_PERF_SEL_DB_SC_z_tile_rate = 260 -Spare_261 = 261 -DB_PERF_SEL_DB_CB_lquad_export_quads = 262 -DB_PERF_SEL_DB_CB_lquad_double_format = 263 -DB_PERF_SEL_DB_CB_lquad_fast_format = 264 -DB_PERF_SEL_DB_CB_lquad_slow_format = 265 -DB_PERF_SEL_CB_DB_rdreq_sends = 266 -DB_PERF_SEL_CB_DB_rdreq_prt_sends = 267 -DB_PERF_SEL_CB_DB_wrreq_sends = 268 -DB_PERF_SEL_CB_DB_wrreq_prt_sends = 269 -DB_PERF_SEL_DB_CB_rdret_ack = 270 -DB_PERF_SEL_DB_CB_rdret_nack = 271 -DB_PERF_SEL_DB_CB_wrret_ack = 272 -DB_PERF_SEL_DB_CB_wrret_nack = 273 -DB_PERF_SEL_DFSM_Stall_opmode_change = 274 -DB_PERF_SEL_DFSM_Stall_cam_fifo = 275 -DB_PERF_SEL_DFSM_Stall_bypass_fifo = 276 -DB_PERF_SEL_DFSM_Stall_retained_tile_fifo = 277 -DB_PERF_SEL_DFSM_Stall_control_fifo = 278 -DB_PERF_SEL_DFSM_Stall_overflow_counter = 279 -DB_PERF_SEL_DFSM_Stall_pops_stall_overflow = 280 -DB_PERF_SEL_DFSM_Stall_pops_stall_self_flush = 281 -DB_PERF_SEL_DFSM_Stall_middle_output = 282 -DB_PERF_SEL_DFSM_Stall_stalling_general = 283 -Spare_285 = 284 -Spare_286 = 285 -DB_PERF_SEL_DFSM_prez_killed_squad = 286 -DB_PERF_SEL_DFSM_squads_in = 287 -DB_PERF_SEL_DFSM_full_cleared_squads_out = 288 -DB_PERF_SEL_DFSM_quads_in = 289 -DB_PERF_SEL_DFSM_fully_cleared_quads_out = 290 -DB_PERF_SEL_DFSM_lit_pixels_in = 291 -DB_PERF_SEL_DFSM_fully_cleared_pixels_out = 292 -DB_PERF_SEL_DFSM_lit_samples_in = 293 -DB_PERF_SEL_DFSM_lit_samples_out = 294 -DB_PERF_SEL_DFSM_evicted_tiles_above_watermark = 295 -DB_PERF_SEL_DFSM_cant_accept_squads_but_not_stalled_by_downstream = 296 -DB_PERF_SEL_DFSM_stalled_by_downstream = 297 -DB_PERF_SEL_DFSM_evicted_squads_above_watermark = 298 -DB_PERF_SEL_DFSM_collisions_due_to_POPS_overflow = 299 -DB_PERF_SEL_DFSM_collisions_detected_within_POPS_FIFO = 300 -DB_PERF_SEL_DFSM_evicted_squads_due_to_prim_watermark = 301 -DB_PERF_SEL_MI_tile_req_wrack_counter_stall = 302 -DB_PERF_SEL_MI_quad_req_wrack_counter_stall = 303 -DB_PERF_SEL_MI_zpc_req_wrack_counter_stall = 304 -DB_PERF_SEL_MI_psd_req_wrack_counter_stall = 305 -DB_PERF_SEL_unmapped_z_tile_culled = 306 -DB_PERF_SEL_DB_CB_tile_is_event_FLUSH_AND_INV_DB_DATA_TS = 307 -DB_PERF_SEL_DB_CB_tile_is_event_FLUSH_AND_INV_CB_PIXEL_DATA = 308 -DB_PERF_SEL_DB_CB_tile_is_event_BOTTOM_OF_PIPE_TS = 309 -DB_PERF_SEL_DB_CB_tile_waiting_for_perfcounter_stop_event = 310 -DB_PERF_SEL_DB_CB_lquad_fmt_32bpp_8pix = 311 -DB_PERF_SEL_DB_CB_lquad_fmt_16_16_unsigned_8pix = 312 -DB_PERF_SEL_DB_CB_lquad_fmt_16_16_signed_8pix = 313 -DB_PERF_SEL_DB_CB_lquad_fmt_16_16_float_8pix = 314 -DB_PERF_SEL_DB_CB_lquad_num_pixels_need_blending = 315 -DB_PERF_SEL_DB_CB_context_dones = 316 -DB_PERF_SEL_DB_CB_eop_dones = 317 -DB_PERF_SEL_SX_DB_quad_all_pixels_killed = 318 -DB_PERF_SEL_SX_DB_quad_all_pixels_enabled = 319 -DB_PERF_SEL_SX_DB_quad_need_blending_and_dst_read = 320 -DB_PERF_SEL_SC_DB_tile_backface = 321 -DB_PERF_SEL_SC_DB_quad_quads = 322 -DB_PERF_SEL_DB_SC_quad_quads_with_1_pixel = 323 -DB_PERF_SEL_DB_SC_quad_quads_with_2_pixels = 324 -DB_PERF_SEL_DB_SC_quad_quads_with_3_pixels = 325 -DB_PERF_SEL_DB_SC_quad_quads_with_4_pixels = 326 -DB_PERF_SEL_DFSM_Flush_flushabit = 327 -DB_PERF_SEL_DFSM_Flush_flushabit_camcoord_fifo = 328 -DB_PERF_SEL_DFSM_Flush_flushabit_passthrough = 329 -DB_PERF_SEL_DFSM_Flush_flushabit_forceflush = 330 -DB_PERF_SEL_DFSM_Flush_flushabit_nearlyfull = 331 -DB_PERF_SEL_DFSM_Flush_flushabit_primitivesinflightwatermark = 332 -DB_PERF_SEL_DFSM_Flush_flushabit_punch_stalling = 333 -DB_PERF_SEL_DFSM_Flush_flushabit_retainedtilefifo_watermark = 334 -DB_PERF_SEL_DFSM_Flush_flushabit_tilesinflightwatermark = 335 -DB_PERF_SEL_DFSM_Flush_flushall = 336 -DB_PERF_SEL_DFSM_Flush_flushall_dfsmflush = 337 -DB_PERF_SEL_DFSM_Flush_flushall_opmodechange = 338 -DB_PERF_SEL_DFSM_Flush_flushall_sampleratechange = 339 -DB_PERF_SEL_DFSM_Flush_flushall_watchdog = 340 -DB_PERF_SEL_DB_SC_quad_double_quad = 341 -DB_PERF_SEL_SX_DB_quad_export_quads = 342 -DB_PERF_SEL_SX_DB_quad_double_format = 343 -DB_PERF_SEL_SX_DB_quad_fast_format = 344 -DB_PERF_SEL_SX_DB_quad_slow_format = 345 -PerfCounter_Vals = ctypes.c_uint32 # enum - -# values for enumeration 'RingCounterControl' -RingCounterControl__enumvalues = { - 0: 'COUNTER_RING_SPLIT', - 1: 'COUNTER_RING_0', - 2: 'COUNTER_RING_1', -} -COUNTER_RING_SPLIT = 0 -COUNTER_RING_0 = 1 -COUNTER_RING_1 = 2 -RingCounterControl = ctypes.c_uint32 # enum - -# values for enumeration 'DbMemArbWatermarks' -DbMemArbWatermarks__enumvalues = { - 0: 'TRANSFERRED_64_BYTES', - 1: 'TRANSFERRED_128_BYTES', - 2: 'TRANSFERRED_256_BYTES', - 3: 'TRANSFERRED_512_BYTES', - 4: 'TRANSFERRED_1024_BYTES', - 5: 'TRANSFERRED_2048_BYTES', - 6: 'TRANSFERRED_4096_BYTES', - 7: 'TRANSFERRED_8192_BYTES', -} -TRANSFERRED_64_BYTES = 0 -TRANSFERRED_128_BYTES = 1 -TRANSFERRED_256_BYTES = 2 -TRANSFERRED_512_BYTES = 3 -TRANSFERRED_1024_BYTES = 4 -TRANSFERRED_2048_BYTES = 5 -TRANSFERRED_4096_BYTES = 6 -TRANSFERRED_8192_BYTES = 7 -DbMemArbWatermarks = ctypes.c_uint32 # enum - -# values for enumeration 'DFSMFlushEvents' -DFSMFlushEvents__enumvalues = { - 0: 'DB_FLUSH_AND_INV_DB_DATA_TS', - 1: 'DB_FLUSH_AND_INV_DB_META', - 2: 'DB_CACHE_FLUSH', - 3: 'DB_CACHE_FLUSH_TS', - 4: 'DB_CACHE_FLUSH_AND_INV_EVENT', - 5: 'DB_CACHE_FLUSH_AND_INV_TS_EVENT', - 6: 'DB_VPORT_CHANGED_EVENT', - 7: 'DB_CONTEXT_DONE_EVENT', - 8: 'DB_BREAK_BATCH_EVENT', - 9: 'DB_PSINVOKE_CHANGE_EVENT', - 10: 'DB_CONTEXT_SUSPEND_EVENT', -} -DB_FLUSH_AND_INV_DB_DATA_TS = 0 -DB_FLUSH_AND_INV_DB_META = 1 -DB_CACHE_FLUSH = 2 -DB_CACHE_FLUSH_TS = 3 -DB_CACHE_FLUSH_AND_INV_EVENT = 4 -DB_CACHE_FLUSH_AND_INV_TS_EVENT = 5 -DB_VPORT_CHANGED_EVENT = 6 -DB_CONTEXT_DONE_EVENT = 7 -DB_BREAK_BATCH_EVENT = 8 -DB_PSINVOKE_CHANGE_EVENT = 9 -DB_CONTEXT_SUSPEND_EVENT = 10 -DFSMFlushEvents = ctypes.c_uint32 # enum - -# values for enumeration 'PixelPipeCounterId' -PixelPipeCounterId__enumvalues = { - 0: 'PIXEL_PIPE_OCCLUSION_COUNT_0', - 1: 'PIXEL_PIPE_OCCLUSION_COUNT_1', - 2: 'PIXEL_PIPE_OCCLUSION_COUNT_2', - 3: 'PIXEL_PIPE_OCCLUSION_COUNT_3', - 4: 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_0', - 5: 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_0', - 6: 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_1', - 7: 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_1', -} -PIXEL_PIPE_OCCLUSION_COUNT_0 = 0 -PIXEL_PIPE_OCCLUSION_COUNT_1 = 1 -PIXEL_PIPE_OCCLUSION_COUNT_2 = 2 -PIXEL_PIPE_OCCLUSION_COUNT_3 = 3 -PIXEL_PIPE_SCREEN_MIN_EXTENTS_0 = 4 -PIXEL_PIPE_SCREEN_MAX_EXTENTS_0 = 5 -PIXEL_PIPE_SCREEN_MIN_EXTENTS_1 = 6 -PIXEL_PIPE_SCREEN_MAX_EXTENTS_1 = 7 -PixelPipeCounterId = ctypes.c_uint32 # enum - -# values for enumeration 'PixelPipeStride' -PixelPipeStride__enumvalues = { - 0: 'PIXEL_PIPE_STRIDE_32_BITS', - 1: 'PIXEL_PIPE_STRIDE_64_BITS', - 2: 'PIXEL_PIPE_STRIDE_128_BITS', - 3: 'PIXEL_PIPE_STRIDE_256_BITS', -} -PIXEL_PIPE_STRIDE_32_BITS = 0 -PIXEL_PIPE_STRIDE_64_BITS = 1 -PIXEL_PIPE_STRIDE_128_BITS = 2 -PIXEL_PIPE_STRIDE_256_BITS = 3 -PixelPipeStride = ctypes.c_uint32 # enum - -# values for enumeration 'FullTileWaveBreak' -FullTileWaveBreak__enumvalues = { - 0: 'FULL_TILE_WAVE_BREAK_NBC_ONLY', - 1: 'FULL_TILE_WAVE_BREAK_BOTH', - 2: 'FULL_TILE_WAVE_BREAK_NONE', - 3: 'FULL_TILE_WAVE_BREAK_BC_ONLY', -} -FULL_TILE_WAVE_BREAK_NBC_ONLY = 0 -FULL_TILE_WAVE_BREAK_BOTH = 1 -FULL_TILE_WAVE_BREAK_NONE = 2 -FULL_TILE_WAVE_BREAK_BC_ONLY = 3 -FullTileWaveBreak = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_BORDER_COLOR_TYPE' -TEX_BORDER_COLOR_TYPE__enumvalues = { - 0: 'TEX_BorderColor_TransparentBlack', - 1: 'TEX_BorderColor_OpaqueBlack', - 2: 'TEX_BorderColor_OpaqueWhite', - 3: 'TEX_BorderColor_Register', -} -TEX_BorderColor_TransparentBlack = 0 -TEX_BorderColor_OpaqueBlack = 1 -TEX_BorderColor_OpaqueWhite = 2 -TEX_BorderColor_Register = 3 -TEX_BORDER_COLOR_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_BC_SWIZZLE' -TEX_BC_SWIZZLE__enumvalues = { - 0: 'TEX_BC_Swizzle_XYZW', - 1: 'TEX_BC_Swizzle_XWYZ', - 2: 'TEX_BC_Swizzle_WZYX', - 3: 'TEX_BC_Swizzle_WXYZ', - 4: 'TEX_BC_Swizzle_ZYXW', - 5: 'TEX_BC_Swizzle_YXWZ', -} -TEX_BC_Swizzle_XYZW = 0 -TEX_BC_Swizzle_XWYZ = 1 -TEX_BC_Swizzle_WZYX = 2 -TEX_BC_Swizzle_WXYZ = 3 -TEX_BC_Swizzle_ZYXW = 4 -TEX_BC_Swizzle_YXWZ = 5 -TEX_BC_SWIZZLE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_CHROMA_KEY' -TEX_CHROMA_KEY__enumvalues = { - 0: 'TEX_ChromaKey_Disabled', - 1: 'TEX_ChromaKey_Kill', - 2: 'TEX_ChromaKey_Blend', - 3: 'TEX_ChromaKey_RESERVED_3', -} -TEX_ChromaKey_Disabled = 0 -TEX_ChromaKey_Kill = 1 -TEX_ChromaKey_Blend = 2 -TEX_ChromaKey_RESERVED_3 = 3 -TEX_CHROMA_KEY = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_CLAMP' -TEX_CLAMP__enumvalues = { - 0: 'TEX_Clamp_Repeat', - 1: 'TEX_Clamp_Mirror', - 2: 'TEX_Clamp_ClampToLast', - 3: 'TEX_Clamp_MirrorOnceToLast', - 4: 'TEX_Clamp_ClampHalfToBorder', - 5: 'TEX_Clamp_MirrorOnceHalfToBorder', - 6: 'TEX_Clamp_ClampToBorder', - 7: 'TEX_Clamp_MirrorOnceToBorder', -} -TEX_Clamp_Repeat = 0 -TEX_Clamp_Mirror = 1 -TEX_Clamp_ClampToLast = 2 -TEX_Clamp_MirrorOnceToLast = 3 -TEX_Clamp_ClampHalfToBorder = 4 -TEX_Clamp_MirrorOnceHalfToBorder = 5 -TEX_Clamp_ClampToBorder = 6 -TEX_Clamp_MirrorOnceToBorder = 7 -TEX_CLAMP = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_COORD_TYPE' -TEX_COORD_TYPE__enumvalues = { - 0: 'TEX_CoordType_Unnormalized', - 1: 'TEX_CoordType_Normalized', -} -TEX_CoordType_Unnormalized = 0 -TEX_CoordType_Normalized = 1 -TEX_COORD_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_DEPTH_COMPARE_FUNCTION' -TEX_DEPTH_COMPARE_FUNCTION__enumvalues = { - 0: 'TEX_DepthCompareFunction_Never', - 1: 'TEX_DepthCompareFunction_Less', - 2: 'TEX_DepthCompareFunction_Equal', - 3: 'TEX_DepthCompareFunction_LessEqual', - 4: 'TEX_DepthCompareFunction_Greater', - 5: 'TEX_DepthCompareFunction_NotEqual', - 6: 'TEX_DepthCompareFunction_GreaterEqual', - 7: 'TEX_DepthCompareFunction_Always', -} -TEX_DepthCompareFunction_Never = 0 -TEX_DepthCompareFunction_Less = 1 -TEX_DepthCompareFunction_Equal = 2 -TEX_DepthCompareFunction_LessEqual = 3 -TEX_DepthCompareFunction_Greater = 4 -TEX_DepthCompareFunction_NotEqual = 5 -TEX_DepthCompareFunction_GreaterEqual = 6 -TEX_DepthCompareFunction_Always = 7 -TEX_DEPTH_COMPARE_FUNCTION = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_DIM' -TEX_DIM__enumvalues = { - 0: 'TEX_Dim_1D', - 1: 'TEX_Dim_2D', - 2: 'TEX_Dim_3D', - 3: 'TEX_Dim_CubeMap', - 4: 'TEX_Dim_1DArray', - 5: 'TEX_Dim_2DArray', - 6: 'TEX_Dim_2D_MSAA', - 7: 'TEX_Dim_2DArray_MSAA', -} -TEX_Dim_1D = 0 -TEX_Dim_2D = 1 -TEX_Dim_3D = 2 -TEX_Dim_CubeMap = 3 -TEX_Dim_1DArray = 4 -TEX_Dim_2DArray = 5 -TEX_Dim_2D_MSAA = 6 -TEX_Dim_2DArray_MSAA = 7 -TEX_DIM = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_FORMAT_COMP' -TEX_FORMAT_COMP__enumvalues = { - 0: 'TEX_FormatComp_Unsigned', - 1: 'TEX_FormatComp_Signed', - 2: 'TEX_FormatComp_UnsignedBiased', - 3: 'TEX_FormatComp_RESERVED_3', -} -TEX_FormatComp_Unsigned = 0 -TEX_FormatComp_Signed = 1 -TEX_FormatComp_UnsignedBiased = 2 -TEX_FormatComp_RESERVED_3 = 3 -TEX_FORMAT_COMP = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_MAX_ANISO_RATIO' -TEX_MAX_ANISO_RATIO__enumvalues = { - 0: 'TEX_MaxAnisoRatio_1to1', - 1: 'TEX_MaxAnisoRatio_2to1', - 2: 'TEX_MaxAnisoRatio_4to1', - 3: 'TEX_MaxAnisoRatio_8to1', - 4: 'TEX_MaxAnisoRatio_16to1', - 5: 'TEX_MaxAnisoRatio_RESERVED_5', - 6: 'TEX_MaxAnisoRatio_RESERVED_6', - 7: 'TEX_MaxAnisoRatio_RESERVED_7', -} -TEX_MaxAnisoRatio_1to1 = 0 -TEX_MaxAnisoRatio_2to1 = 1 -TEX_MaxAnisoRatio_4to1 = 2 -TEX_MaxAnisoRatio_8to1 = 3 -TEX_MaxAnisoRatio_16to1 = 4 -TEX_MaxAnisoRatio_RESERVED_5 = 5 -TEX_MaxAnisoRatio_RESERVED_6 = 6 -TEX_MaxAnisoRatio_RESERVED_7 = 7 -TEX_MAX_ANISO_RATIO = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_MIP_FILTER' -TEX_MIP_FILTER__enumvalues = { - 0: 'TEX_MipFilter_None', - 1: 'TEX_MipFilter_Point', - 2: 'TEX_MipFilter_Linear', - 3: 'TEX_MipFilter_Point_Aniso_Adj', -} -TEX_MipFilter_None = 0 -TEX_MipFilter_Point = 1 -TEX_MipFilter_Linear = 2 -TEX_MipFilter_Point_Aniso_Adj = 3 -TEX_MIP_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_REQUEST_SIZE' -TEX_REQUEST_SIZE__enumvalues = { - 0: 'TEX_RequestSize_32B', - 1: 'TEX_RequestSize_64B', - 2: 'TEX_RequestSize_128B', - 3: 'TEX_RequestSize_2X64B', -} -TEX_RequestSize_32B = 0 -TEX_RequestSize_64B = 1 -TEX_RequestSize_128B = 2 -TEX_RequestSize_2X64B = 3 -TEX_REQUEST_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_SAMPLER_TYPE' -TEX_SAMPLER_TYPE__enumvalues = { - 0: 'TEX_SamplerType_Invalid', - 1: 'TEX_SamplerType_Valid', -} -TEX_SamplerType_Invalid = 0 -TEX_SamplerType_Valid = 1 -TEX_SAMPLER_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_XY_FILTER' -TEX_XY_FILTER__enumvalues = { - 0: 'TEX_XYFilter_Point', - 1: 'TEX_XYFilter_Linear', - 2: 'TEX_XYFilter_AnisoPoint', - 3: 'TEX_XYFilter_AnisoLinear', -} -TEX_XYFilter_Point = 0 -TEX_XYFilter_Linear = 1 -TEX_XYFilter_AnisoPoint = 2 -TEX_XYFilter_AnisoLinear = 3 -TEX_XY_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_Z_FILTER' -TEX_Z_FILTER__enumvalues = { - 0: 'TEX_ZFilter_None', - 1: 'TEX_ZFilter_Point', - 2: 'TEX_ZFilter_Linear', - 3: 'TEX_ZFilter_RESERVED_3', -} -TEX_ZFilter_None = 0 -TEX_ZFilter_Point = 1 -TEX_ZFilter_Linear = 2 -TEX_ZFilter_RESERVED_3 = 3 -TEX_Z_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'VTX_CLAMP' -VTX_CLAMP__enumvalues = { - 0: 'VTX_Clamp_ClampToZero', - 1: 'VTX_Clamp_ClampToNAN', -} -VTX_Clamp_ClampToZero = 0 -VTX_Clamp_ClampToNAN = 1 -VTX_CLAMP = ctypes.c_uint32 # enum - -# values for enumeration 'VTX_FETCH_TYPE' -VTX_FETCH_TYPE__enumvalues = { - 0: 'VTX_FetchType_VertexData', - 1: 'VTX_FetchType_InstanceData', - 2: 'VTX_FetchType_NoIndexOffset', - 3: 'VTX_FetchType_RESERVED_3', -} -VTX_FetchType_VertexData = 0 -VTX_FetchType_InstanceData = 1 -VTX_FetchType_NoIndexOffset = 2 -VTX_FetchType_RESERVED_3 = 3 -VTX_FETCH_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VTX_FORMAT_COMP_ALL' -VTX_FORMAT_COMP_ALL__enumvalues = { - 0: 'VTX_FormatCompAll_Unsigned', - 1: 'VTX_FormatCompAll_Signed', -} -VTX_FormatCompAll_Unsigned = 0 -VTX_FormatCompAll_Signed = 1 -VTX_FORMAT_COMP_ALL = ctypes.c_uint32 # enum - -# values for enumeration 'VTX_MEM_REQUEST_SIZE' -VTX_MEM_REQUEST_SIZE__enumvalues = { - 0: 'VTX_MemRequestSize_32B', - 1: 'VTX_MemRequestSize_64B', -} -VTX_MemRequestSize_32B = 0 -VTX_MemRequestSize_64B = 1 -VTX_MEM_REQUEST_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'TVX_DATA_FORMAT' -TVX_DATA_FORMAT__enumvalues = { - 0: 'TVX_FMT_INVALID', - 1: 'TVX_FMT_8', - 2: 'TVX_FMT_4_4', - 3: 'TVX_FMT_3_3_2', - 4: 'TVX_FMT_RESERVED_4', - 5: 'TVX_FMT_16', - 6: 'TVX_FMT_16_FLOAT', - 7: 'TVX_FMT_8_8', - 8: 'TVX_FMT_5_6_5', - 9: 'TVX_FMT_6_5_5', - 10: 'TVX_FMT_1_5_5_5', - 11: 'TVX_FMT_4_4_4_4', - 12: 'TVX_FMT_5_5_5_1', - 13: 'TVX_FMT_32', - 14: 'TVX_FMT_32_FLOAT', - 15: 'TVX_FMT_16_16', - 16: 'TVX_FMT_16_16_FLOAT', - 17: 'TVX_FMT_8_24', - 18: 'TVX_FMT_8_24_FLOAT', - 19: 'TVX_FMT_24_8', - 20: 'TVX_FMT_24_8_FLOAT', - 21: 'TVX_FMT_10_11_11', - 22: 'TVX_FMT_10_11_11_FLOAT', - 23: 'TVX_FMT_11_11_10', - 24: 'TVX_FMT_11_11_10_FLOAT', - 25: 'TVX_FMT_2_10_10_10', - 26: 'TVX_FMT_8_8_8_8', - 27: 'TVX_FMT_10_10_10_2', - 28: 'TVX_FMT_X24_8_32_FLOAT', - 29: 'TVX_FMT_32_32', - 30: 'TVX_FMT_32_32_FLOAT', - 31: 'TVX_FMT_16_16_16_16', - 32: 'TVX_FMT_16_16_16_16_FLOAT', - 33: 'TVX_FMT_RESERVED_33', - 34: 'TVX_FMT_32_32_32_32', - 35: 'TVX_FMT_32_32_32_32_FLOAT', - 36: 'TVX_FMT_RESERVED_36', - 37: 'TVX_FMT_1', - 38: 'TVX_FMT_1_REVERSED', - 39: 'TVX_FMT_GB_GR', - 40: 'TVX_FMT_BG_RG', - 41: 'TVX_FMT_32_AS_8', - 42: 'TVX_FMT_32_AS_8_8', - 43: 'TVX_FMT_5_9_9_9_SHAREDEXP', - 44: 'TVX_FMT_8_8_8', - 45: 'TVX_FMT_16_16_16', - 46: 'TVX_FMT_16_16_16_FLOAT', - 47: 'TVX_FMT_32_32_32', - 48: 'TVX_FMT_32_32_32_FLOAT', - 49: 'TVX_FMT_BC1', - 50: 'TVX_FMT_BC2', - 51: 'TVX_FMT_BC3', - 52: 'TVX_FMT_BC4', - 53: 'TVX_FMT_BC5', - 54: 'TVX_FMT_APC0', - 55: 'TVX_FMT_APC1', - 56: 'TVX_FMT_APC2', - 57: 'TVX_FMT_APC3', - 58: 'TVX_FMT_APC4', - 59: 'TVX_FMT_APC5', - 60: 'TVX_FMT_APC6', - 61: 'TVX_FMT_APC7', - 62: 'TVX_FMT_CTX1', - 63: 'TVX_FMT_RESERVED_63', -} -TVX_FMT_INVALID = 0 -TVX_FMT_8 = 1 -TVX_FMT_4_4 = 2 -TVX_FMT_3_3_2 = 3 -TVX_FMT_RESERVED_4 = 4 -TVX_FMT_16 = 5 -TVX_FMT_16_FLOAT = 6 -TVX_FMT_8_8 = 7 -TVX_FMT_5_6_5 = 8 -TVX_FMT_6_5_5 = 9 -TVX_FMT_1_5_5_5 = 10 -TVX_FMT_4_4_4_4 = 11 -TVX_FMT_5_5_5_1 = 12 -TVX_FMT_32 = 13 -TVX_FMT_32_FLOAT = 14 -TVX_FMT_16_16 = 15 -TVX_FMT_16_16_FLOAT = 16 -TVX_FMT_8_24 = 17 -TVX_FMT_8_24_FLOAT = 18 -TVX_FMT_24_8 = 19 -TVX_FMT_24_8_FLOAT = 20 -TVX_FMT_10_11_11 = 21 -TVX_FMT_10_11_11_FLOAT = 22 -TVX_FMT_11_11_10 = 23 -TVX_FMT_11_11_10_FLOAT = 24 -TVX_FMT_2_10_10_10 = 25 -TVX_FMT_8_8_8_8 = 26 -TVX_FMT_10_10_10_2 = 27 -TVX_FMT_X24_8_32_FLOAT = 28 -TVX_FMT_32_32 = 29 -TVX_FMT_32_32_FLOAT = 30 -TVX_FMT_16_16_16_16 = 31 -TVX_FMT_16_16_16_16_FLOAT = 32 -TVX_FMT_RESERVED_33 = 33 -TVX_FMT_32_32_32_32 = 34 -TVX_FMT_32_32_32_32_FLOAT = 35 -TVX_FMT_RESERVED_36 = 36 -TVX_FMT_1 = 37 -TVX_FMT_1_REVERSED = 38 -TVX_FMT_GB_GR = 39 -TVX_FMT_BG_RG = 40 -TVX_FMT_32_AS_8 = 41 -TVX_FMT_32_AS_8_8 = 42 -TVX_FMT_5_9_9_9_SHAREDEXP = 43 -TVX_FMT_8_8_8 = 44 -TVX_FMT_16_16_16 = 45 -TVX_FMT_16_16_16_FLOAT = 46 -TVX_FMT_32_32_32 = 47 -TVX_FMT_32_32_32_FLOAT = 48 -TVX_FMT_BC1 = 49 -TVX_FMT_BC2 = 50 -TVX_FMT_BC3 = 51 -TVX_FMT_BC4 = 52 -TVX_FMT_BC5 = 53 -TVX_FMT_APC0 = 54 -TVX_FMT_APC1 = 55 -TVX_FMT_APC2 = 56 -TVX_FMT_APC3 = 57 -TVX_FMT_APC4 = 58 -TVX_FMT_APC5 = 59 -TVX_FMT_APC6 = 60 -TVX_FMT_APC7 = 61 -TVX_FMT_CTX1 = 62 -TVX_FMT_RESERVED_63 = 63 -TVX_DATA_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'TVX_DST_SEL' -TVX_DST_SEL__enumvalues = { - 0: 'TVX_DstSel_X', - 1: 'TVX_DstSel_Y', - 2: 'TVX_DstSel_Z', - 3: 'TVX_DstSel_W', - 4: 'TVX_DstSel_0f', - 5: 'TVX_DstSel_1f', - 6: 'TVX_DstSel_RESERVED_6', - 7: 'TVX_DstSel_Mask', -} -TVX_DstSel_X = 0 -TVX_DstSel_Y = 1 -TVX_DstSel_Z = 2 -TVX_DstSel_W = 3 -TVX_DstSel_0f = 4 -TVX_DstSel_1f = 5 -TVX_DstSel_RESERVED_6 = 6 -TVX_DstSel_Mask = 7 -TVX_DST_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TVX_ENDIAN_SWAP' -TVX_ENDIAN_SWAP__enumvalues = { - 0: 'TVX_EndianSwap_None', - 1: 'TVX_EndianSwap_8in16', - 2: 'TVX_EndianSwap_8in32', - 3: 'TVX_EndianSwap_8in64', -} -TVX_EndianSwap_None = 0 -TVX_EndianSwap_8in16 = 1 -TVX_EndianSwap_8in32 = 2 -TVX_EndianSwap_8in64 = 3 -TVX_ENDIAN_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'TVX_INST' -TVX_INST__enumvalues = { - 0: 'TVX_Inst_NormalVertexFetch', - 1: 'TVX_Inst_SemanticVertexFetch', - 2: 'TVX_Inst_RESERVED_2', - 3: 'TVX_Inst_LD', - 4: 'TVX_Inst_GetTextureResInfo', - 5: 'TVX_Inst_GetNumberOfSamples', - 6: 'TVX_Inst_GetLOD', - 7: 'TVX_Inst_GetGradientsH', - 8: 'TVX_Inst_GetGradientsV', - 9: 'TVX_Inst_SetTextureOffsets', - 10: 'TVX_Inst_KeepGradients', - 11: 'TVX_Inst_SetGradientsH', - 12: 'TVX_Inst_SetGradientsV', - 13: 'TVX_Inst_Pass', - 14: 'TVX_Inst_GetBufferResInfo', - 15: 'TVX_Inst_RESERVED_15', - 16: 'TVX_Inst_Sample', - 17: 'TVX_Inst_Sample_L', - 18: 'TVX_Inst_Sample_LB', - 19: 'TVX_Inst_Sample_LZ', - 20: 'TVX_Inst_Sample_G', - 21: 'TVX_Inst_Gather4', - 22: 'TVX_Inst_Sample_G_LB', - 23: 'TVX_Inst_Gather4_O', - 24: 'TVX_Inst_Sample_C', - 25: 'TVX_Inst_Sample_C_L', - 26: 'TVX_Inst_Sample_C_LB', - 27: 'TVX_Inst_Sample_C_LZ', - 28: 'TVX_Inst_Sample_C_G', - 29: 'TVX_Inst_Gather4_C', - 30: 'TVX_Inst_Sample_C_G_LB', - 31: 'TVX_Inst_Gather4_C_O', -} -TVX_Inst_NormalVertexFetch = 0 -TVX_Inst_SemanticVertexFetch = 1 -TVX_Inst_RESERVED_2 = 2 -TVX_Inst_LD = 3 -TVX_Inst_GetTextureResInfo = 4 -TVX_Inst_GetNumberOfSamples = 5 -TVX_Inst_GetLOD = 6 -TVX_Inst_GetGradientsH = 7 -TVX_Inst_GetGradientsV = 8 -TVX_Inst_SetTextureOffsets = 9 -TVX_Inst_KeepGradients = 10 -TVX_Inst_SetGradientsH = 11 -TVX_Inst_SetGradientsV = 12 -TVX_Inst_Pass = 13 -TVX_Inst_GetBufferResInfo = 14 -TVX_Inst_RESERVED_15 = 15 -TVX_Inst_Sample = 16 -TVX_Inst_Sample_L = 17 -TVX_Inst_Sample_LB = 18 -TVX_Inst_Sample_LZ = 19 -TVX_Inst_Sample_G = 20 -TVX_Inst_Gather4 = 21 -TVX_Inst_Sample_G_LB = 22 -TVX_Inst_Gather4_O = 23 -TVX_Inst_Sample_C = 24 -TVX_Inst_Sample_C_L = 25 -TVX_Inst_Sample_C_LB = 26 -TVX_Inst_Sample_C_LZ = 27 -TVX_Inst_Sample_C_G = 28 -TVX_Inst_Gather4_C = 29 -TVX_Inst_Sample_C_G_LB = 30 -TVX_Inst_Gather4_C_O = 31 -TVX_INST = ctypes.c_uint32 # enum - -# values for enumeration 'TVX_NUM_FORMAT_ALL' -TVX_NUM_FORMAT_ALL__enumvalues = { - 0: 'TVX_NumFormatAll_Norm', - 1: 'TVX_NumFormatAll_Int', - 2: 'TVX_NumFormatAll_Scaled', - 3: 'TVX_NumFormatAll_RESERVED_3', -} -TVX_NumFormatAll_Norm = 0 -TVX_NumFormatAll_Int = 1 -TVX_NumFormatAll_Scaled = 2 -TVX_NumFormatAll_RESERVED_3 = 3 -TVX_NUM_FORMAT_ALL = ctypes.c_uint32 # enum - -# values for enumeration 'TVX_SRC_SEL' -TVX_SRC_SEL__enumvalues = { - 0: 'TVX_SrcSel_X', - 1: 'TVX_SrcSel_Y', - 2: 'TVX_SrcSel_Z', - 3: 'TVX_SrcSel_W', - 4: 'TVX_SrcSel_0f', - 5: 'TVX_SrcSel_1f', -} -TVX_SrcSel_X = 0 -TVX_SrcSel_Y = 1 -TVX_SrcSel_Z = 2 -TVX_SrcSel_W = 3 -TVX_SrcSel_0f = 4 -TVX_SrcSel_1f = 5 -TVX_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TVX_SRF_MODE_ALL' -TVX_SRF_MODE_ALL__enumvalues = { - 0: 'TVX_SRFModeAll_ZCMO', - 1: 'TVX_SRFModeAll_NZ', -} -TVX_SRFModeAll_ZCMO = 0 -TVX_SRFModeAll_NZ = 1 -TVX_SRF_MODE_ALL = ctypes.c_uint32 # enum - -# values for enumeration 'TVX_TYPE' -TVX_TYPE__enumvalues = { - 0: 'TVX_Type_InvalidTextureResource', - 1: 'TVX_Type_InvalidVertexBuffer', - 2: 'TVX_Type_ValidTextureResource', - 3: 'TVX_Type_ValidVertexBuffer', -} -TVX_Type_InvalidTextureResource = 0 -TVX_Type_InvalidVertexBuffer = 1 -TVX_Type_ValidTextureResource = 2 -TVX_Type_ValidVertexBuffer = 3 -TVX_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'PH_PERFCNT_SEL' -PH_PERFCNT_SEL__enumvalues = { - 0: 'PH_SC0_SRPS_WINDOW_VALID', - 1: 'PH_SC0_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 2: 'PH_SC0_ARB_XFC_ONLY_PRIM_CYCLES', - 3: 'PH_SC0_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 4: 'PH_SC0_ARB_STALLED_FROM_BELOW', - 5: 'PH_SC0_ARB_STARVED_FROM_ABOVE', - 6: 'PH_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 7: 'PH_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 8: 'PH_SC0_ARB_BUSY', - 9: 'PH_SC0_ARB_PA_BUSY_SOP', - 10: 'PH_SC0_ARB_EOP_POP_SYNC_POP', - 11: 'PH_SC0_ARB_EVENT_SYNC_POP', - 12: 'PH_SC0_PS_ENG_MULTICYCLE_BUBBLE', - 13: 'PH_SC0_EOP_SYNC_WINDOW', - 14: 'PH_SC0_BUSY_PROCESSING_MULTICYCLE_PRIM', - 15: 'PH_SC0_BUSY_CNT_NOT_ZERO', - 16: 'PH_SC0_SEND', - 17: 'PH_SC0_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 18: 'PH_SC0_CREDIT_AT_MAX', - 19: 'PH_SC0_CREDIT_AT_MAX_NO_PENDING_SEND', - 20: 'PH_SC0_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 21: 'PH_SC0_GFX_PIPE_PRIM_PROVOKED_TRANSITION', - 22: 'PH_SC0_GFX_PIPE0_TO_1_TRANSITION', - 23: 'PH_SC0_GFX_PIPE1_TO_0_TRANSITION', - 24: 'PH_SC0_PA0_DATA_FIFO_RD', - 25: 'PH_SC0_PA0_DATA_FIFO_WE', - 26: 'PH_SC0_PA0_FIFO_EMPTY', - 27: 'PH_SC0_PA0_FIFO_FULL', - 28: 'PH_SC0_PA0_NULL_WE', - 29: 'PH_SC0_PA0_EVENT_WE', - 30: 'PH_SC0_PA0_FPOV_WE', - 31: 'PH_SC0_PA0_LPOV_WE', - 32: 'PH_SC0_PA0_EOP_WE', - 33: 'PH_SC0_PA0_DATA_FIFO_EOP_RD', - 34: 'PH_SC0_PA0_EOPG_WE', - 35: 'PH_SC0_PA0_DEALLOC_4_0_RD', - 36: 'PH_SC0_PA1_DATA_FIFO_RD', - 37: 'PH_SC0_PA1_DATA_FIFO_WE', - 38: 'PH_SC0_PA1_FIFO_EMPTY', - 39: 'PH_SC0_PA1_FIFO_FULL', - 40: 'PH_SC0_PA1_NULL_WE', - 41: 'PH_SC0_PA1_EVENT_WE', - 42: 'PH_SC0_PA1_FPOV_WE', - 43: 'PH_SC0_PA1_LPOV_WE', - 44: 'PH_SC0_PA1_EOP_WE', - 45: 'PH_SC0_PA1_DATA_FIFO_EOP_RD', - 46: 'PH_SC0_PA1_EOPG_WE', - 47: 'PH_SC0_PA1_DEALLOC_4_0_RD', - 48: 'PH_SC0_PA2_DATA_FIFO_RD', - 49: 'PH_SC0_PA2_DATA_FIFO_WE', - 50: 'PH_SC0_PA2_FIFO_EMPTY', - 51: 'PH_SC0_PA2_FIFO_FULL', - 52: 'PH_SC0_PA2_NULL_WE', - 53: 'PH_SC0_PA2_EVENT_WE', - 54: 'PH_SC0_PA2_FPOV_WE', - 55: 'PH_SC0_PA2_LPOV_WE', - 56: 'PH_SC0_PA2_EOP_WE', - 57: 'PH_SC0_PA2_DATA_FIFO_EOP_RD', - 58: 'PH_SC0_PA2_EOPG_WE', - 59: 'PH_SC0_PA2_DEALLOC_4_0_RD', - 60: 'PH_SC0_PA3_DATA_FIFO_RD', - 61: 'PH_SC0_PA3_DATA_FIFO_WE', - 62: 'PH_SC0_PA3_FIFO_EMPTY', - 63: 'PH_SC0_PA3_FIFO_FULL', - 64: 'PH_SC0_PA3_NULL_WE', - 65: 'PH_SC0_PA3_EVENT_WE', - 66: 'PH_SC0_PA3_FPOV_WE', - 67: 'PH_SC0_PA3_LPOV_WE', - 68: 'PH_SC0_PA3_EOP_WE', - 69: 'PH_SC0_PA3_DATA_FIFO_EOP_RD', - 70: 'PH_SC0_PA3_EOPG_WE', - 71: 'PH_SC0_PA3_DEALLOC_4_0_RD', - 72: 'PH_SC0_PA4_DATA_FIFO_RD', - 73: 'PH_SC0_PA4_DATA_FIFO_WE', - 74: 'PH_SC0_PA4_FIFO_EMPTY', - 75: 'PH_SC0_PA4_FIFO_FULL', - 76: 'PH_SC0_PA4_NULL_WE', - 77: 'PH_SC0_PA4_EVENT_WE', - 78: 'PH_SC0_PA4_FPOV_WE', - 79: 'PH_SC0_PA4_LPOV_WE', - 80: 'PH_SC0_PA4_EOP_WE', - 81: 'PH_SC0_PA4_DATA_FIFO_EOP_RD', - 82: 'PH_SC0_PA4_EOPG_WE', - 83: 'PH_SC0_PA4_DEALLOC_4_0_RD', - 84: 'PH_SC0_PA5_DATA_FIFO_RD', - 85: 'PH_SC0_PA5_DATA_FIFO_WE', - 86: 'PH_SC0_PA5_FIFO_EMPTY', - 87: 'PH_SC0_PA5_FIFO_FULL', - 88: 'PH_SC0_PA5_NULL_WE', - 89: 'PH_SC0_PA5_EVENT_WE', - 90: 'PH_SC0_PA5_FPOV_WE', - 91: 'PH_SC0_PA5_LPOV_WE', - 92: 'PH_SC0_PA5_EOP_WE', - 93: 'PH_SC0_PA5_DATA_FIFO_EOP_RD', - 94: 'PH_SC0_PA5_EOPG_WE', - 95: 'PH_SC0_PA5_DEALLOC_4_0_RD', - 96: 'PH_SC0_PA6_DATA_FIFO_RD', - 97: 'PH_SC0_PA6_DATA_FIFO_WE', - 98: 'PH_SC0_PA6_FIFO_EMPTY', - 99: 'PH_SC0_PA6_FIFO_FULL', - 100: 'PH_SC0_PA6_NULL_WE', - 101: 'PH_SC0_PA6_EVENT_WE', - 102: 'PH_SC0_PA6_FPOV_WE', - 103: 'PH_SC0_PA6_LPOV_WE', - 104: 'PH_SC0_PA6_EOP_WE', - 105: 'PH_SC0_PA6_DATA_FIFO_EOP_RD', - 106: 'PH_SC0_PA6_EOPG_WE', - 107: 'PH_SC0_PA6_DEALLOC_4_0_RD', - 108: 'PH_SC0_PA7_DATA_FIFO_RD', - 109: 'PH_SC0_PA7_DATA_FIFO_WE', - 110: 'PH_SC0_PA7_FIFO_EMPTY', - 111: 'PH_SC0_PA7_FIFO_FULL', - 112: 'PH_SC0_PA7_NULL_WE', - 113: 'PH_SC0_PA7_EVENT_WE', - 114: 'PH_SC0_PA7_FPOV_WE', - 115: 'PH_SC0_PA7_LPOV_WE', - 116: 'PH_SC0_PA7_EOP_WE', - 117: 'PH_SC0_PA7_DATA_FIFO_EOP_RD', - 118: 'PH_SC0_PA7_EOPG_WE', - 119: 'PH_SC0_PA7_DEALLOC_4_0_RD', - 120: 'PH_SC1_SRPS_WINDOW_VALID', - 121: 'PH_SC1_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 122: 'PH_SC1_ARB_XFC_ONLY_PRIM_CYCLES', - 123: 'PH_SC1_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 124: 'PH_SC1_ARB_STALLED_FROM_BELOW', - 125: 'PH_SC1_ARB_STARVED_FROM_ABOVE', - 126: 'PH_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 127: 'PH_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 128: 'PH_SC1_ARB_BUSY', - 129: 'PH_SC1_ARB_PA_BUSY_SOP', - 130: 'PH_SC1_ARB_EOP_POP_SYNC_POP', - 131: 'PH_SC1_ARB_EVENT_SYNC_POP', - 132: 'PH_SC1_PS_ENG_MULTICYCLE_BUBBLE', - 133: 'PH_SC1_EOP_SYNC_WINDOW', - 134: 'PH_SC1_BUSY_PROCESSING_MULTICYCLE_PRIM', - 135: 'PH_SC1_BUSY_CNT_NOT_ZERO', - 136: 'PH_SC1_SEND', - 137: 'PH_SC1_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 138: 'PH_SC1_CREDIT_AT_MAX', - 139: 'PH_SC1_CREDIT_AT_MAX_NO_PENDING_SEND', - 140: 'PH_SC1_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 141: 'PH_SC1_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 142: 'PH_SC1_GFX_PIPE0_TO_1_TRANSITION', - 143: 'PH_SC1_GFX_PIPE1_TO_0_TRANSITION', - 144: 'PH_SC1_PA0_DATA_FIFO_RD', - 145: 'PH_SC1_PA0_DATA_FIFO_WE', - 146: 'PH_SC1_PA0_FIFO_EMPTY', - 147: 'PH_SC1_PA0_FIFO_FULL', - 148: 'PH_SC1_PA0_NULL_WE', - 149: 'PH_SC1_PA0_EVENT_WE', - 150: 'PH_SC1_PA0_FPOV_WE', - 151: 'PH_SC1_PA0_LPOV_WE', - 152: 'PH_SC1_PA0_EOP_WE', - 153: 'PH_SC1_PA0_DATA_FIFO_EOP_RD', - 154: 'PH_SC1_PA0_EOPG_WE', - 155: 'PH_SC1_PA0_DEALLOC_4_0_RD', - 156: 'PH_SC1_PA1_DATA_FIFO_RD', - 157: 'PH_SC1_PA1_DATA_FIFO_WE', - 158: 'PH_SC1_PA1_FIFO_EMPTY', - 159: 'PH_SC1_PA1_FIFO_FULL', - 160: 'PH_SC1_PA1_NULL_WE', - 161: 'PH_SC1_PA1_EVENT_WE', - 162: 'PH_SC1_PA1_FPOV_WE', - 163: 'PH_SC1_PA1_LPOV_WE', - 164: 'PH_SC1_PA1_EOP_WE', - 165: 'PH_SC1_PA1_DATA_FIFO_EOP_RD', - 166: 'PH_SC1_PA1_EOPG_WE', - 167: 'PH_SC1_PA1_DEALLOC_4_0_RD', - 168: 'PH_SC1_PA2_DATA_FIFO_RD', - 169: 'PH_SC1_PA2_DATA_FIFO_WE', - 170: 'PH_SC1_PA2_FIFO_EMPTY', - 171: 'PH_SC1_PA2_FIFO_FULL', - 172: 'PH_SC1_PA2_NULL_WE', - 173: 'PH_SC1_PA2_EVENT_WE', - 174: 'PH_SC1_PA2_FPOV_WE', - 175: 'PH_SC1_PA2_LPOV_WE', - 176: 'PH_SC1_PA2_EOP_WE', - 177: 'PH_SC1_PA2_DATA_FIFO_EOP_RD', - 178: 'PH_SC1_PA2_EOPG_WE', - 179: 'PH_SC1_PA2_DEALLOC_4_0_RD', - 180: 'PH_SC1_PA3_DATA_FIFO_RD', - 181: 'PH_SC1_PA3_DATA_FIFO_WE', - 182: 'PH_SC1_PA3_FIFO_EMPTY', - 183: 'PH_SC1_PA3_FIFO_FULL', - 184: 'PH_SC1_PA3_NULL_WE', - 185: 'PH_SC1_PA3_EVENT_WE', - 186: 'PH_SC1_PA3_FPOV_WE', - 187: 'PH_SC1_PA3_LPOV_WE', - 188: 'PH_SC1_PA3_EOP_WE', - 189: 'PH_SC1_PA3_DATA_FIFO_EOP_RD', - 190: 'PH_SC1_PA3_EOPG_WE', - 191: 'PH_SC1_PA3_DEALLOC_4_0_RD', - 192: 'PH_SC1_PA4_DATA_FIFO_RD', - 193: 'PH_SC1_PA4_DATA_FIFO_WE', - 194: 'PH_SC1_PA4_FIFO_EMPTY', - 195: 'PH_SC1_PA4_FIFO_FULL', - 196: 'PH_SC1_PA4_NULL_WE', - 197: 'PH_SC1_PA4_EVENT_WE', - 198: 'PH_SC1_PA4_FPOV_WE', - 199: 'PH_SC1_PA4_LPOV_WE', - 200: 'PH_SC1_PA4_EOP_WE', - 201: 'PH_SC1_PA4_DATA_FIFO_EOP_RD', - 202: 'PH_SC1_PA4_EOPG_WE', - 203: 'PH_SC1_PA4_DEALLOC_4_0_RD', - 204: 'PH_SC1_PA5_DATA_FIFO_RD', - 205: 'PH_SC1_PA5_DATA_FIFO_WE', - 206: 'PH_SC1_PA5_FIFO_EMPTY', - 207: 'PH_SC1_PA5_FIFO_FULL', - 208: 'PH_SC1_PA5_NULL_WE', - 209: 'PH_SC1_PA5_EVENT_WE', - 210: 'PH_SC1_PA5_FPOV_WE', - 211: 'PH_SC1_PA5_LPOV_WE', - 212: 'PH_SC1_PA5_EOP_WE', - 213: 'PH_SC1_PA5_DATA_FIFO_EOP_RD', - 214: 'PH_SC1_PA5_EOPG_WE', - 215: 'PH_SC1_PA5_DEALLOC_4_0_RD', - 216: 'PH_SC1_PA6_DATA_FIFO_RD', - 217: 'PH_SC1_PA6_DATA_FIFO_WE', - 218: 'PH_SC1_PA6_FIFO_EMPTY', - 219: 'PH_SC1_PA6_FIFO_FULL', - 220: 'PH_SC1_PA6_NULL_WE', - 221: 'PH_SC1_PA6_EVENT_WE', - 222: 'PH_SC1_PA6_FPOV_WE', - 223: 'PH_SC1_PA6_LPOV_WE', - 224: 'PH_SC1_PA6_EOP_WE', - 225: 'PH_SC1_PA6_DATA_FIFO_EOP_RD', - 226: 'PH_SC1_PA6_EOPG_WE', - 227: 'PH_SC1_PA6_DEALLOC_4_0_RD', - 228: 'PH_SC1_PA7_DATA_FIFO_RD', - 229: 'PH_SC1_PA7_DATA_FIFO_WE', - 230: 'PH_SC1_PA7_FIFO_EMPTY', - 231: 'PH_SC1_PA7_FIFO_FULL', - 232: 'PH_SC1_PA7_NULL_WE', - 233: 'PH_SC1_PA7_EVENT_WE', - 234: 'PH_SC1_PA7_FPOV_WE', - 235: 'PH_SC1_PA7_LPOV_WE', - 236: 'PH_SC1_PA7_EOP_WE', - 237: 'PH_SC1_PA7_DATA_FIFO_EOP_RD', - 238: 'PH_SC1_PA7_EOPG_WE', - 239: 'PH_SC1_PA7_DEALLOC_4_0_RD', - 240: 'PH_SC2_SRPS_WINDOW_VALID', - 241: 'PH_SC2_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 242: 'PH_SC2_ARB_XFC_ONLY_PRIM_CYCLES', - 243: 'PH_SC2_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 244: 'PH_SC2_ARB_STALLED_FROM_BELOW', - 245: 'PH_SC2_ARB_STARVED_FROM_ABOVE', - 246: 'PH_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 247: 'PH_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 248: 'PH_SC2_ARB_BUSY', - 249: 'PH_SC2_ARB_PA_BUSY_SOP', - 250: 'PH_SC2_ARB_EOP_POP_SYNC_POP', - 251: 'PH_SC2_ARB_EVENT_SYNC_POP', - 252: 'PH_SC2_PS_ENG_MULTICYCLE_BUBBLE', - 253: 'PH_SC2_EOP_SYNC_WINDOW', - 254: 'PH_SC2_BUSY_PROCESSING_MULTICYCLE_PRIM', - 255: 'PH_SC2_BUSY_CNT_NOT_ZERO', - 256: 'PH_SC2_SEND', - 257: 'PH_SC2_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 258: 'PH_SC2_CREDIT_AT_MAX', - 259: 'PH_SC2_CREDIT_AT_MAX_NO_PENDING_SEND', - 260: 'PH_SC2_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 261: 'PH_SC2_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 262: 'PH_SC2_GFX_PIPE0_TO_1_TRANSITION', - 263: 'PH_SC2_GFX_PIPE1_TO_0_TRANSITION', - 264: 'PH_SC2_PA0_DATA_FIFO_RD', - 265: 'PH_SC2_PA0_DATA_FIFO_WE', - 266: 'PH_SC2_PA0_FIFO_EMPTY', - 267: 'PH_SC2_PA0_FIFO_FULL', - 268: 'PH_SC2_PA0_NULL_WE', - 269: 'PH_SC2_PA0_EVENT_WE', - 270: 'PH_SC2_PA0_FPOV_WE', - 271: 'PH_SC2_PA0_LPOV_WE', - 272: 'PH_SC2_PA0_EOP_WE', - 273: 'PH_SC2_PA0_DATA_FIFO_EOP_RD', - 274: 'PH_SC2_PA0_EOPG_WE', - 275: 'PH_SC2_PA0_DEALLOC_4_0_RD', - 276: 'PH_SC2_PA1_DATA_FIFO_RD', - 277: 'PH_SC2_PA1_DATA_FIFO_WE', - 278: 'PH_SC2_PA1_FIFO_EMPTY', - 279: 'PH_SC2_PA1_FIFO_FULL', - 280: 'PH_SC2_PA1_NULL_WE', - 281: 'PH_SC2_PA1_EVENT_WE', - 282: 'PH_SC2_PA1_FPOV_WE', - 283: 'PH_SC2_PA1_LPOV_WE', - 284: 'PH_SC2_PA1_EOP_WE', - 285: 'PH_SC2_PA1_DATA_FIFO_EOP_RD', - 286: 'PH_SC2_PA1_EOPG_WE', - 287: 'PH_SC2_PA1_DEALLOC_4_0_RD', - 288: 'PH_SC2_PA2_DATA_FIFO_RD', - 289: 'PH_SC2_PA2_DATA_FIFO_WE', - 290: 'PH_SC2_PA2_FIFO_EMPTY', - 291: 'PH_SC2_PA2_FIFO_FULL', - 292: 'PH_SC2_PA2_NULL_WE', - 293: 'PH_SC2_PA2_EVENT_WE', - 294: 'PH_SC2_PA2_FPOV_WE', - 295: 'PH_SC2_PA2_LPOV_WE', - 296: 'PH_SC2_PA2_EOP_WE', - 297: 'PH_SC2_PA2_DATA_FIFO_EOP_RD', - 298: 'PH_SC2_PA2_EOPG_WE', - 299: 'PH_SC2_PA2_DEALLOC_4_0_RD', - 300: 'PH_SC2_PA3_DATA_FIFO_RD', - 301: 'PH_SC2_PA3_DATA_FIFO_WE', - 302: 'PH_SC2_PA3_FIFO_EMPTY', - 303: 'PH_SC2_PA3_FIFO_FULL', - 304: 'PH_SC2_PA3_NULL_WE', - 305: 'PH_SC2_PA3_EVENT_WE', - 306: 'PH_SC2_PA3_FPOV_WE', - 307: 'PH_SC2_PA3_LPOV_WE', - 308: 'PH_SC2_PA3_EOP_WE', - 309: 'PH_SC2_PA3_DATA_FIFO_EOP_RD', - 310: 'PH_SC2_PA3_EOPG_WE', - 311: 'PH_SC2_PA3_DEALLOC_4_0_RD', - 312: 'PH_SC2_PA4_DATA_FIFO_RD', - 313: 'PH_SC2_PA4_DATA_FIFO_WE', - 314: 'PH_SC2_PA4_FIFO_EMPTY', - 315: 'PH_SC2_PA4_FIFO_FULL', - 316: 'PH_SC2_PA4_NULL_WE', - 317: 'PH_SC2_PA4_EVENT_WE', - 318: 'PH_SC2_PA4_FPOV_WE', - 319: 'PH_SC2_PA4_LPOV_WE', - 320: 'PH_SC2_PA4_EOP_WE', - 321: 'PH_SC2_PA4_DATA_FIFO_EOP_RD', - 322: 'PH_SC2_PA4_EOPG_WE', - 323: 'PH_SC2_PA4_DEALLOC_4_0_RD', - 324: 'PH_SC2_PA5_DATA_FIFO_RD', - 325: 'PH_SC2_PA5_DATA_FIFO_WE', - 326: 'PH_SC2_PA5_FIFO_EMPTY', - 327: 'PH_SC2_PA5_FIFO_FULL', - 328: 'PH_SC2_PA5_NULL_WE', - 329: 'PH_SC2_PA5_EVENT_WE', - 330: 'PH_SC2_PA5_FPOV_WE', - 331: 'PH_SC2_PA5_LPOV_WE', - 332: 'PH_SC2_PA5_EOP_WE', - 333: 'PH_SC2_PA5_DATA_FIFO_EOP_RD', - 334: 'PH_SC2_PA5_EOPG_WE', - 335: 'PH_SC2_PA5_DEALLOC_4_0_RD', - 336: 'PH_SC2_PA6_DATA_FIFO_RD', - 337: 'PH_SC2_PA6_DATA_FIFO_WE', - 338: 'PH_SC2_PA6_FIFO_EMPTY', - 339: 'PH_SC2_PA6_FIFO_FULL', - 340: 'PH_SC2_PA6_NULL_WE', - 341: 'PH_SC2_PA6_EVENT_WE', - 342: 'PH_SC2_PA6_FPOV_WE', - 343: 'PH_SC2_PA6_LPOV_WE', - 344: 'PH_SC2_PA6_EOP_WE', - 345: 'PH_SC2_PA6_DATA_FIFO_EOP_RD', - 346: 'PH_SC2_PA6_EOPG_WE', - 347: 'PH_SC2_PA6_DEALLOC_4_0_RD', - 348: 'PH_SC2_PA7_DATA_FIFO_RD', - 349: 'PH_SC2_PA7_DATA_FIFO_WE', - 350: 'PH_SC2_PA7_FIFO_EMPTY', - 351: 'PH_SC2_PA7_FIFO_FULL', - 352: 'PH_SC2_PA7_NULL_WE', - 353: 'PH_SC2_PA7_EVENT_WE', - 354: 'PH_SC2_PA7_FPOV_WE', - 355: 'PH_SC2_PA7_LPOV_WE', - 356: 'PH_SC2_PA7_EOP_WE', - 357: 'PH_SC2_PA7_DATA_FIFO_EOP_RD', - 358: 'PH_SC2_PA7_EOPG_WE', - 359: 'PH_SC2_PA7_DEALLOC_4_0_RD', - 360: 'PH_SC3_SRPS_WINDOW_VALID', - 361: 'PH_SC3_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 362: 'PH_SC3_ARB_XFC_ONLY_PRIM_CYCLES', - 363: 'PH_SC3_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 364: 'PH_SC3_ARB_STALLED_FROM_BELOW', - 365: 'PH_SC3_ARB_STARVED_FROM_ABOVE', - 366: 'PH_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 367: 'PH_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 368: 'PH_SC3_ARB_BUSY', - 369: 'PH_SC3_ARB_PA_BUSY_SOP', - 370: 'PH_SC3_ARB_EOP_POP_SYNC_POP', - 371: 'PH_SC3_ARB_EVENT_SYNC_POP', - 372: 'PH_SC3_PS_ENG_MULTICYCLE_BUBBLE', - 373: 'PH_SC3_EOP_SYNC_WINDOW', - 374: 'PH_SC3_BUSY_PROCESSING_MULTICYCLE_PRIM', - 375: 'PH_SC3_BUSY_CNT_NOT_ZERO', - 376: 'PH_SC3_SEND', - 377: 'PH_SC3_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 378: 'PH_SC3_CREDIT_AT_MAX', - 379: 'PH_SC3_CREDIT_AT_MAX_NO_PENDING_SEND', - 380: 'PH_SC3_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 381: 'PH_SC3_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 382: 'PH_SC3_GFX_PIPE0_TO_1_TRANSITION', - 383: 'PH_SC3_GFX_PIPE1_TO_0_TRANSITION', - 384: 'PH_SC3_PA0_DATA_FIFO_RD', - 385: 'PH_SC3_PA0_DATA_FIFO_WE', - 386: 'PH_SC3_PA0_FIFO_EMPTY', - 387: 'PH_SC3_PA0_FIFO_FULL', - 388: 'PH_SC3_PA0_NULL_WE', - 389: 'PH_SC3_PA0_EVENT_WE', - 390: 'PH_SC3_PA0_FPOV_WE', - 391: 'PH_SC3_PA0_LPOV_WE', - 392: 'PH_SC3_PA0_EOP_WE', - 393: 'PH_SC3_PA0_DATA_FIFO_EOP_RD', - 394: 'PH_SC3_PA0_EOPG_WE', - 395: 'PH_SC3_PA0_DEALLOC_4_0_RD', - 396: 'PH_SC3_PA1_DATA_FIFO_RD', - 397: 'PH_SC3_PA1_DATA_FIFO_WE', - 398: 'PH_SC3_PA1_FIFO_EMPTY', - 399: 'PH_SC3_PA1_FIFO_FULL', - 400: 'PH_SC3_PA1_NULL_WE', - 401: 'PH_SC3_PA1_EVENT_WE', - 402: 'PH_SC3_PA1_FPOV_WE', - 403: 'PH_SC3_PA1_LPOV_WE', - 404: 'PH_SC3_PA1_EOP_WE', - 405: 'PH_SC3_PA1_DATA_FIFO_EOP_RD', - 406: 'PH_SC3_PA1_EOPG_WE', - 407: 'PH_SC3_PA1_DEALLOC_4_0_RD', - 408: 'PH_SC3_PA2_DATA_FIFO_RD', - 409: 'PH_SC3_PA2_DATA_FIFO_WE', - 410: 'PH_SC3_PA2_FIFO_EMPTY', - 411: 'PH_SC3_PA2_FIFO_FULL', - 412: 'PH_SC3_PA2_NULL_WE', - 413: 'PH_SC3_PA2_EVENT_WE', - 414: 'PH_SC3_PA2_FPOV_WE', - 415: 'PH_SC3_PA2_LPOV_WE', - 416: 'PH_SC3_PA2_EOP_WE', - 417: 'PH_SC3_PA2_DATA_FIFO_EOP_RD', - 418: 'PH_SC3_PA2_EOPG_WE', - 419: 'PH_SC3_PA2_DEALLOC_4_0_RD', - 420: 'PH_SC3_PA3_DATA_FIFO_RD', - 421: 'PH_SC3_PA3_DATA_FIFO_WE', - 422: 'PH_SC3_PA3_FIFO_EMPTY', - 423: 'PH_SC3_PA3_FIFO_FULL', - 424: 'PH_SC3_PA3_NULL_WE', - 425: 'PH_SC3_PA3_EVENT_WE', - 426: 'PH_SC3_PA3_FPOV_WE', - 427: 'PH_SC3_PA3_LPOV_WE', - 428: 'PH_SC3_PA3_EOP_WE', - 429: 'PH_SC3_PA3_DATA_FIFO_EOP_RD', - 430: 'PH_SC3_PA3_EOPG_WE', - 431: 'PH_SC3_PA3_DEALLOC_4_0_RD', - 432: 'PH_SC3_PA4_DATA_FIFO_RD', - 433: 'PH_SC3_PA4_DATA_FIFO_WE', - 434: 'PH_SC3_PA4_FIFO_EMPTY', - 435: 'PH_SC3_PA4_FIFO_FULL', - 436: 'PH_SC3_PA4_NULL_WE', - 437: 'PH_SC3_PA4_EVENT_WE', - 438: 'PH_SC3_PA4_FPOV_WE', - 439: 'PH_SC3_PA4_LPOV_WE', - 440: 'PH_SC3_PA4_EOP_WE', - 441: 'PH_SC3_PA4_DATA_FIFO_EOP_RD', - 442: 'PH_SC3_PA4_EOPG_WE', - 443: 'PH_SC3_PA4_DEALLOC_4_0_RD', - 444: 'PH_SC3_PA5_DATA_FIFO_RD', - 445: 'PH_SC3_PA5_DATA_FIFO_WE', - 446: 'PH_SC3_PA5_FIFO_EMPTY', - 447: 'PH_SC3_PA5_FIFO_FULL', - 448: 'PH_SC3_PA5_NULL_WE', - 449: 'PH_SC3_PA5_EVENT_WE', - 450: 'PH_SC3_PA5_FPOV_WE', - 451: 'PH_SC3_PA5_LPOV_WE', - 452: 'PH_SC3_PA5_EOP_WE', - 453: 'PH_SC3_PA5_DATA_FIFO_EOP_RD', - 454: 'PH_SC3_PA5_EOPG_WE', - 455: 'PH_SC3_PA5_DEALLOC_4_0_RD', - 456: 'PH_SC3_PA6_DATA_FIFO_RD', - 457: 'PH_SC3_PA6_DATA_FIFO_WE', - 458: 'PH_SC3_PA6_FIFO_EMPTY', - 459: 'PH_SC3_PA6_FIFO_FULL', - 460: 'PH_SC3_PA6_NULL_WE', - 461: 'PH_SC3_PA6_EVENT_WE', - 462: 'PH_SC3_PA6_FPOV_WE', - 463: 'PH_SC3_PA6_LPOV_WE', - 464: 'PH_SC3_PA6_EOP_WE', - 465: 'PH_SC3_PA6_DATA_FIFO_EOP_RD', - 466: 'PH_SC3_PA6_EOPG_WE', - 467: 'PH_SC3_PA6_DEALLOC_4_0_RD', - 468: 'PH_SC3_PA7_DATA_FIFO_RD', - 469: 'PH_SC3_PA7_DATA_FIFO_WE', - 470: 'PH_SC3_PA7_FIFO_EMPTY', - 471: 'PH_SC3_PA7_FIFO_FULL', - 472: 'PH_SC3_PA7_NULL_WE', - 473: 'PH_SC3_PA7_EVENT_WE', - 474: 'PH_SC3_PA7_FPOV_WE', - 475: 'PH_SC3_PA7_LPOV_WE', - 476: 'PH_SC3_PA7_EOP_WE', - 477: 'PH_SC3_PA7_DATA_FIFO_EOP_RD', - 478: 'PH_SC3_PA7_EOPG_WE', - 479: 'PH_SC3_PA7_DEALLOC_4_0_RD', - 480: 'PH_SC4_SRPS_WINDOW_VALID', - 481: 'PH_SC4_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 482: 'PH_SC4_ARB_XFC_ONLY_PRIM_CYCLES', - 483: 'PH_SC4_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 484: 'PH_SC4_ARB_STALLED_FROM_BELOW', - 485: 'PH_SC4_ARB_STARVED_FROM_ABOVE', - 486: 'PH_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 487: 'PH_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 488: 'PH_SC4_ARB_BUSY', - 489: 'PH_SC4_ARB_PA_BUSY_SOP', - 490: 'PH_SC4_ARB_EOP_POP_SYNC_POP', - 491: 'PH_SC4_ARB_EVENT_SYNC_POP', - 492: 'PH_SC4_PS_ENG_MULTICYCLE_BUBBLE', - 493: 'PH_SC4_EOP_SYNC_WINDOW', - 494: 'PH_SC4_BUSY_PROCESSING_MULTICYCLE_PRIM', - 495: 'PH_SC4_BUSY_CNT_NOT_ZERO', - 496: 'PH_SC4_SEND', - 497: 'PH_SC4_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 498: 'PH_SC4_CREDIT_AT_MAX', - 499: 'PH_SC4_CREDIT_AT_MAX_NO_PENDING_SEND', - 500: 'PH_SC4_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 501: 'PH_SC4_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 502: 'PH_SC4_GFX_PIPE0_TO_1_TRANSITION', - 503: 'PH_SC4_GFX_PIPE1_TO_0_TRANSITION', - 504: 'PH_SC4_PA0_DATA_FIFO_RD', - 505: 'PH_SC4_PA0_DATA_FIFO_WE', - 506: 'PH_SC4_PA0_FIFO_EMPTY', - 507: 'PH_SC4_PA0_FIFO_FULL', - 508: 'PH_SC4_PA0_NULL_WE', - 509: 'PH_SC4_PA0_EVENT_WE', - 510: 'PH_SC4_PA0_FPOV_WE', - 511: 'PH_SC4_PA0_LPOV_WE', - 512: 'PH_SC4_PA0_EOP_WE', - 513: 'PH_SC4_PA0_DATA_FIFO_EOP_RD', - 514: 'PH_SC4_PA0_EOPG_WE', - 515: 'PH_SC4_PA0_DEALLOC_4_0_RD', - 516: 'PH_SC4_PA1_DATA_FIFO_RD', - 517: 'PH_SC4_PA1_DATA_FIFO_WE', - 518: 'PH_SC4_PA1_FIFO_EMPTY', - 519: 'PH_SC4_PA1_FIFO_FULL', - 520: 'PH_SC4_PA1_NULL_WE', - 521: 'PH_SC4_PA1_EVENT_WE', - 522: 'PH_SC4_PA1_FPOV_WE', - 523: 'PH_SC4_PA1_LPOV_WE', - 524: 'PH_SC4_PA1_EOP_WE', - 525: 'PH_SC4_PA1_DATA_FIFO_EOP_RD', - 526: 'PH_SC4_PA1_EOPG_WE', - 527: 'PH_SC4_PA1_DEALLOC_4_0_RD', - 528: 'PH_SC4_PA2_DATA_FIFO_RD', - 529: 'PH_SC4_PA2_DATA_FIFO_WE', - 530: 'PH_SC4_PA2_FIFO_EMPTY', - 531: 'PH_SC4_PA2_FIFO_FULL', - 532: 'PH_SC4_PA2_NULL_WE', - 533: 'PH_SC4_PA2_EVENT_WE', - 534: 'PH_SC4_PA2_FPOV_WE', - 535: 'PH_SC4_PA2_LPOV_WE', - 536: 'PH_SC4_PA2_EOP_WE', - 537: 'PH_SC4_PA2_DATA_FIFO_EOP_RD', - 538: 'PH_SC4_PA2_EOPG_WE', - 539: 'PH_SC4_PA2_DEALLOC_4_0_RD', - 540: 'PH_SC4_PA3_DATA_FIFO_RD', - 541: 'PH_SC4_PA3_DATA_FIFO_WE', - 542: 'PH_SC4_PA3_FIFO_EMPTY', - 543: 'PH_SC4_PA3_FIFO_FULL', - 544: 'PH_SC4_PA3_NULL_WE', - 545: 'PH_SC4_PA3_EVENT_WE', - 546: 'PH_SC4_PA3_FPOV_WE', - 547: 'PH_SC4_PA3_LPOV_WE', - 548: 'PH_SC4_PA3_EOP_WE', - 549: 'PH_SC4_PA3_DATA_FIFO_EOP_RD', - 550: 'PH_SC4_PA3_EOPG_WE', - 551: 'PH_SC4_PA3_DEALLOC_4_0_RD', - 552: 'PH_SC4_PA4_DATA_FIFO_RD', - 553: 'PH_SC4_PA4_DATA_FIFO_WE', - 554: 'PH_SC4_PA4_FIFO_EMPTY', - 555: 'PH_SC4_PA4_FIFO_FULL', - 556: 'PH_SC4_PA4_NULL_WE', - 557: 'PH_SC4_PA4_EVENT_WE', - 558: 'PH_SC4_PA4_FPOV_WE', - 559: 'PH_SC4_PA4_LPOV_WE', - 560: 'PH_SC4_PA4_EOP_WE', - 561: 'PH_SC4_PA4_DATA_FIFO_EOP_RD', - 562: 'PH_SC4_PA4_EOPG_WE', - 563: 'PH_SC4_PA4_DEALLOC_4_0_RD', - 564: 'PH_SC4_PA5_DATA_FIFO_RD', - 565: 'PH_SC4_PA5_DATA_FIFO_WE', - 566: 'PH_SC4_PA5_FIFO_EMPTY', - 567: 'PH_SC4_PA5_FIFO_FULL', - 568: 'PH_SC4_PA5_NULL_WE', - 569: 'PH_SC4_PA5_EVENT_WE', - 570: 'PH_SC4_PA5_FPOV_WE', - 571: 'PH_SC4_PA5_LPOV_WE', - 572: 'PH_SC4_PA5_EOP_WE', - 573: 'PH_SC4_PA5_DATA_FIFO_EOP_RD', - 574: 'PH_SC4_PA5_EOPG_WE', - 575: 'PH_SC4_PA5_DEALLOC_4_0_RD', - 576: 'PH_SC4_PA6_DATA_FIFO_RD', - 577: 'PH_SC4_PA6_DATA_FIFO_WE', - 578: 'PH_SC4_PA6_FIFO_EMPTY', - 579: 'PH_SC4_PA6_FIFO_FULL', - 580: 'PH_SC4_PA6_NULL_WE', - 581: 'PH_SC4_PA6_EVENT_WE', - 582: 'PH_SC4_PA6_FPOV_WE', - 583: 'PH_SC4_PA6_LPOV_WE', - 584: 'PH_SC4_PA6_EOP_WE', - 585: 'PH_SC4_PA6_DATA_FIFO_EOP_RD', - 586: 'PH_SC4_PA6_EOPG_WE', - 587: 'PH_SC4_PA6_DEALLOC_4_0_RD', - 588: 'PH_SC4_PA7_DATA_FIFO_RD', - 589: 'PH_SC4_PA7_DATA_FIFO_WE', - 590: 'PH_SC4_PA7_FIFO_EMPTY', - 591: 'PH_SC4_PA7_FIFO_FULL', - 592: 'PH_SC4_PA7_NULL_WE', - 593: 'PH_SC4_PA7_EVENT_WE', - 594: 'PH_SC4_PA7_FPOV_WE', - 595: 'PH_SC4_PA7_LPOV_WE', - 596: 'PH_SC4_PA7_EOP_WE', - 597: 'PH_SC4_PA7_DATA_FIFO_EOP_RD', - 598: 'PH_SC4_PA7_EOPG_WE', - 599: 'PH_SC4_PA7_DEALLOC_4_0_RD', - 600: 'PH_SC5_SRPS_WINDOW_VALID', - 601: 'PH_SC5_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 602: 'PH_SC5_ARB_XFC_ONLY_PRIM_CYCLES', - 603: 'PH_SC5_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 604: 'PH_SC5_ARB_STALLED_FROM_BELOW', - 605: 'PH_SC5_ARB_STARVED_FROM_ABOVE', - 606: 'PH_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 607: 'PH_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 608: 'PH_SC5_ARB_BUSY', - 609: 'PH_SC5_ARB_PA_BUSY_SOP', - 610: 'PH_SC5_ARB_EOP_POP_SYNC_POP', - 611: 'PH_SC5_ARB_EVENT_SYNC_POP', - 612: 'PH_SC5_PS_ENG_MULTICYCLE_BUBBLE', - 613: 'PH_SC5_EOP_SYNC_WINDOW', - 614: 'PH_SC5_BUSY_PROCESSING_MULTICYCLE_PRIM', - 615: 'PH_SC5_BUSY_CNT_NOT_ZERO', - 616: 'PH_SC5_SEND', - 617: 'PH_SC5_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 618: 'PH_SC5_CREDIT_AT_MAX', - 619: 'PH_SC5_CREDIT_AT_MAX_NO_PENDING_SEND', - 620: 'PH_SC5_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 621: 'PH_SC5_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 622: 'PH_SC5_GFX_PIPE0_TO_1_TRANSITION', - 623: 'PH_SC5_GFX_PIPE1_TO_0_TRANSITION', - 624: 'PH_SC5_PA0_DATA_FIFO_RD', - 625: 'PH_SC5_PA0_DATA_FIFO_WE', - 626: 'PH_SC5_PA0_FIFO_EMPTY', - 627: 'PH_SC5_PA0_FIFO_FULL', - 628: 'PH_SC5_PA0_NULL_WE', - 629: 'PH_SC5_PA0_EVENT_WE', - 630: 'PH_SC5_PA0_FPOV_WE', - 631: 'PH_SC5_PA0_LPOV_WE', - 632: 'PH_SC5_PA0_EOP_WE', - 633: 'PH_SC5_PA0_DATA_FIFO_EOP_RD', - 634: 'PH_SC5_PA0_EOPG_WE', - 635: 'PH_SC5_PA0_DEALLOC_4_0_RD', - 636: 'PH_SC5_PA1_DATA_FIFO_RD', - 637: 'PH_SC5_PA1_DATA_FIFO_WE', - 638: 'PH_SC5_PA1_FIFO_EMPTY', - 639: 'PH_SC5_PA1_FIFO_FULL', - 640: 'PH_SC5_PA1_NULL_WE', - 641: 'PH_SC5_PA1_EVENT_WE', - 642: 'PH_SC5_PA1_FPOV_WE', - 643: 'PH_SC5_PA1_LPOV_WE', - 644: 'PH_SC5_PA1_EOP_WE', - 645: 'PH_SC5_PA1_DATA_FIFO_EOP_RD', - 646: 'PH_SC5_PA1_EOPG_WE', - 647: 'PH_SC5_PA1_DEALLOC_4_0_RD', - 648: 'PH_SC5_PA2_DATA_FIFO_RD', - 649: 'PH_SC5_PA2_DATA_FIFO_WE', - 650: 'PH_SC5_PA2_FIFO_EMPTY', - 651: 'PH_SC5_PA2_FIFO_FULL', - 652: 'PH_SC5_PA2_NULL_WE', - 653: 'PH_SC5_PA2_EVENT_WE', - 654: 'PH_SC5_PA2_FPOV_WE', - 655: 'PH_SC5_PA2_LPOV_WE', - 656: 'PH_SC5_PA2_EOP_WE', - 657: 'PH_SC5_PA2_DATA_FIFO_EOP_RD', - 658: 'PH_SC5_PA2_EOPG_WE', - 659: 'PH_SC5_PA2_DEALLOC_4_0_RD', - 660: 'PH_SC5_PA3_DATA_FIFO_RD', - 661: 'PH_SC5_PA3_DATA_FIFO_WE', - 662: 'PH_SC5_PA3_FIFO_EMPTY', - 663: 'PH_SC5_PA3_FIFO_FULL', - 664: 'PH_SC5_PA3_NULL_WE', - 665: 'PH_SC5_PA3_EVENT_WE', - 666: 'PH_SC5_PA3_FPOV_WE', - 667: 'PH_SC5_PA3_LPOV_WE', - 668: 'PH_SC5_PA3_EOP_WE', - 669: 'PH_SC5_PA3_DATA_FIFO_EOP_RD', - 670: 'PH_SC5_PA3_EOPG_WE', - 671: 'PH_SC5_PA3_DEALLOC_4_0_RD', - 672: 'PH_SC5_PA4_DATA_FIFO_RD', - 673: 'PH_SC5_PA4_DATA_FIFO_WE', - 674: 'PH_SC5_PA4_FIFO_EMPTY', - 675: 'PH_SC5_PA4_FIFO_FULL', - 676: 'PH_SC5_PA4_NULL_WE', - 677: 'PH_SC5_PA4_EVENT_WE', - 678: 'PH_SC5_PA4_FPOV_WE', - 679: 'PH_SC5_PA4_LPOV_WE', - 680: 'PH_SC5_PA4_EOP_WE', - 681: 'PH_SC5_PA4_DATA_FIFO_EOP_RD', - 682: 'PH_SC5_PA4_EOPG_WE', - 683: 'PH_SC5_PA4_DEALLOC_4_0_RD', - 684: 'PH_SC5_PA5_DATA_FIFO_RD', - 685: 'PH_SC5_PA5_DATA_FIFO_WE', - 686: 'PH_SC5_PA5_FIFO_EMPTY', - 687: 'PH_SC5_PA5_FIFO_FULL', - 688: 'PH_SC5_PA5_NULL_WE', - 689: 'PH_SC5_PA5_EVENT_WE', - 690: 'PH_SC5_PA5_FPOV_WE', - 691: 'PH_SC5_PA5_LPOV_WE', - 692: 'PH_SC5_PA5_EOP_WE', - 693: 'PH_SC5_PA5_DATA_FIFO_EOP_RD', - 694: 'PH_SC5_PA5_EOPG_WE', - 695: 'PH_SC5_PA5_DEALLOC_4_0_RD', - 696: 'PH_SC5_PA6_DATA_FIFO_RD', - 697: 'PH_SC5_PA6_DATA_FIFO_WE', - 698: 'PH_SC5_PA6_FIFO_EMPTY', - 699: 'PH_SC5_PA6_FIFO_FULL', - 700: 'PH_SC5_PA6_NULL_WE', - 701: 'PH_SC5_PA6_EVENT_WE', - 702: 'PH_SC5_PA6_FPOV_WE', - 703: 'PH_SC5_PA6_LPOV_WE', - 704: 'PH_SC5_PA6_EOP_WE', - 705: 'PH_SC5_PA6_DATA_FIFO_EOP_RD', - 706: 'PH_SC5_PA6_EOPG_WE', - 707: 'PH_SC5_PA6_DEALLOC_4_0_RD', - 708: 'PH_SC5_PA7_DATA_FIFO_RD', - 709: 'PH_SC5_PA7_DATA_FIFO_WE', - 710: 'PH_SC5_PA7_FIFO_EMPTY', - 711: 'PH_SC5_PA7_FIFO_FULL', - 712: 'PH_SC5_PA7_NULL_WE', - 713: 'PH_SC5_PA7_EVENT_WE', - 714: 'PH_SC5_PA7_FPOV_WE', - 715: 'PH_SC5_PA7_LPOV_WE', - 716: 'PH_SC5_PA7_EOP_WE', - 717: 'PH_SC5_PA7_DATA_FIFO_EOP_RD', - 718: 'PH_SC5_PA7_EOPG_WE', - 719: 'PH_SC5_PA7_DEALLOC_4_0_RD', - 720: 'PH_SC6_SRPS_WINDOW_VALID', - 721: 'PH_SC6_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 722: 'PH_SC6_ARB_XFC_ONLY_PRIM_CYCLES', - 723: 'PH_SC6_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 724: 'PH_SC6_ARB_STALLED_FROM_BELOW', - 725: 'PH_SC6_ARB_STARVED_FROM_ABOVE', - 726: 'PH_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 727: 'PH_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 728: 'PH_SC6_ARB_BUSY', - 729: 'PH_SC6_ARB_PA_BUSY_SOP', - 730: 'PH_SC6_ARB_EOP_POP_SYNC_POP', - 731: 'PH_SC6_ARB_EVENT_SYNC_POP', - 732: 'PH_SC6_PS_ENG_MULTICYCLE_BUBBLE', - 733: 'PH_SC6_EOP_SYNC_WINDOW', - 734: 'PH_SC6_BUSY_PROCESSING_MULTICYCLE_PRIM', - 735: 'PH_SC6_BUSY_CNT_NOT_ZERO', - 736: 'PH_SC6_SEND', - 737: 'PH_SC6_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 738: 'PH_SC6_CREDIT_AT_MAX', - 739: 'PH_SC6_CREDIT_AT_MAX_NO_PENDING_SEND', - 740: 'PH_SC6_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 741: 'PH_SC6_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 742: 'PH_SC6_GFX_PIPE0_TO_1_TRANSITION', - 743: 'PH_SC6_GFX_PIPE1_TO_0_TRANSITION', - 744: 'PH_SC6_PA0_DATA_FIFO_RD', - 745: 'PH_SC6_PA0_DATA_FIFO_WE', - 746: 'PH_SC6_PA0_FIFO_EMPTY', - 747: 'PH_SC6_PA0_FIFO_FULL', - 748: 'PH_SC6_PA0_NULL_WE', - 749: 'PH_SC6_PA0_EVENT_WE', - 750: 'PH_SC6_PA0_FPOV_WE', - 751: 'PH_SC6_PA0_LPOV_WE', - 752: 'PH_SC6_PA0_EOP_WE', - 753: 'PH_SC6_PA0_DATA_FIFO_EOP_RD', - 754: 'PH_SC6_PA0_EOPG_WE', - 755: 'PH_SC6_PA0_DEALLOC_4_0_RD', - 756: 'PH_SC6_PA1_DATA_FIFO_RD', - 757: 'PH_SC6_PA1_DATA_FIFO_WE', - 758: 'PH_SC6_PA1_FIFO_EMPTY', - 759: 'PH_SC6_PA1_FIFO_FULL', - 760: 'PH_SC6_PA1_NULL_WE', - 761: 'PH_SC6_PA1_EVENT_WE', - 762: 'PH_SC6_PA1_FPOV_WE', - 763: 'PH_SC6_PA1_LPOV_WE', - 764: 'PH_SC6_PA1_EOP_WE', - 765: 'PH_SC6_PA1_DATA_FIFO_EOP_RD', - 766: 'PH_SC6_PA1_EOPG_WE', - 767: 'PH_SC6_PA1_DEALLOC_4_0_RD', - 768: 'PH_SC6_PA2_DATA_FIFO_RD', - 769: 'PH_SC6_PA2_DATA_FIFO_WE', - 770: 'PH_SC6_PA2_FIFO_EMPTY', - 771: 'PH_SC6_PA2_FIFO_FULL', - 772: 'PH_SC6_PA2_NULL_WE', - 773: 'PH_SC6_PA2_EVENT_WE', - 774: 'PH_SC6_PA2_FPOV_WE', - 775: 'PH_SC6_PA2_LPOV_WE', - 776: 'PH_SC6_PA2_EOP_WE', - 777: 'PH_SC6_PA2_DATA_FIFO_EOP_RD', - 778: 'PH_SC6_PA2_EOPG_WE', - 779: 'PH_SC6_PA2_DEALLOC_4_0_RD', - 780: 'PH_SC6_PA3_DATA_FIFO_RD', - 781: 'PH_SC6_PA3_DATA_FIFO_WE', - 782: 'PH_SC6_PA3_FIFO_EMPTY', - 783: 'PH_SC6_PA3_FIFO_FULL', - 784: 'PH_SC6_PA3_NULL_WE', - 785: 'PH_SC6_PA3_EVENT_WE', - 786: 'PH_SC6_PA3_FPOV_WE', - 787: 'PH_SC6_PA3_LPOV_WE', - 788: 'PH_SC6_PA3_EOP_WE', - 789: 'PH_SC6_PA3_DATA_FIFO_EOP_RD', - 790: 'PH_SC6_PA3_EOPG_WE', - 791: 'PH_SC6_PA3_DEALLOC_4_0_RD', - 792: 'PH_SC6_PA4_DATA_FIFO_RD', - 793: 'PH_SC6_PA4_DATA_FIFO_WE', - 794: 'PH_SC6_PA4_FIFO_EMPTY', - 795: 'PH_SC6_PA4_FIFO_FULL', - 796: 'PH_SC6_PA4_NULL_WE', - 797: 'PH_SC6_PA4_EVENT_WE', - 798: 'PH_SC6_PA4_FPOV_WE', - 799: 'PH_SC6_PA4_LPOV_WE', - 800: 'PH_SC6_PA4_EOP_WE', - 801: 'PH_SC6_PA4_DATA_FIFO_EOP_RD', - 802: 'PH_SC6_PA4_EOPG_WE', - 803: 'PH_SC6_PA4_DEALLOC_4_0_RD', - 804: 'PH_SC6_PA5_DATA_FIFO_RD', - 805: 'PH_SC6_PA5_DATA_FIFO_WE', - 806: 'PH_SC6_PA5_FIFO_EMPTY', - 807: 'PH_SC6_PA5_FIFO_FULL', - 808: 'PH_SC6_PA5_NULL_WE', - 809: 'PH_SC6_PA5_EVENT_WE', - 810: 'PH_SC6_PA5_FPOV_WE', - 811: 'PH_SC6_PA5_LPOV_WE', - 812: 'PH_SC6_PA5_EOP_WE', - 813: 'PH_SC6_PA5_DATA_FIFO_EOP_RD', - 814: 'PH_SC6_PA5_EOPG_WE', - 815: 'PH_SC6_PA5_DEALLOC_4_0_RD', - 816: 'PH_SC6_PA6_DATA_FIFO_RD', - 817: 'PH_SC6_PA6_DATA_FIFO_WE', - 818: 'PH_SC6_PA6_FIFO_EMPTY', - 819: 'PH_SC6_PA6_FIFO_FULL', - 820: 'PH_SC6_PA6_NULL_WE', - 821: 'PH_SC6_PA6_EVENT_WE', - 822: 'PH_SC6_PA6_FPOV_WE', - 823: 'PH_SC6_PA6_LPOV_WE', - 824: 'PH_SC6_PA6_EOP_WE', - 825: 'PH_SC6_PA6_DATA_FIFO_EOP_RD', - 826: 'PH_SC6_PA6_EOPG_WE', - 827: 'PH_SC6_PA6_DEALLOC_4_0_RD', - 828: 'PH_SC6_PA7_DATA_FIFO_RD', - 829: 'PH_SC6_PA7_DATA_FIFO_WE', - 830: 'PH_SC6_PA7_FIFO_EMPTY', - 831: 'PH_SC6_PA7_FIFO_FULL', - 832: 'PH_SC6_PA7_NULL_WE', - 833: 'PH_SC6_PA7_EVENT_WE', - 834: 'PH_SC6_PA7_FPOV_WE', - 835: 'PH_SC6_PA7_LPOV_WE', - 836: 'PH_SC6_PA7_EOP_WE', - 837: 'PH_SC6_PA7_DATA_FIFO_EOP_RD', - 838: 'PH_SC6_PA7_EOPG_WE', - 839: 'PH_SC6_PA7_DEALLOC_4_0_RD', - 840: 'PH_SC7_SRPS_WINDOW_VALID', - 841: 'PH_SC7_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 842: 'PH_SC7_ARB_XFC_ONLY_PRIM_CYCLES', - 843: 'PH_SC7_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 844: 'PH_SC7_ARB_STALLED_FROM_BELOW', - 845: 'PH_SC7_ARB_STARVED_FROM_ABOVE', - 846: 'PH_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 847: 'PH_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 848: 'PH_SC7_ARB_BUSY', - 849: 'PH_SC7_ARB_PA_BUSY_SOP', - 850: 'PH_SC7_ARB_EOP_POP_SYNC_POP', - 851: 'PH_SC7_ARB_EVENT_SYNC_POP', - 852: 'PH_SC7_PS_ENG_MULTICYCLE_BUBBLE', - 853: 'PH_SC7_EOP_SYNC_WINDOW', - 854: 'PH_SC7_BUSY_PROCESSING_MULTICYCLE_PRIM', - 855: 'PH_SC7_BUSY_CNT_NOT_ZERO', - 856: 'PH_SC7_SEND', - 857: 'PH_SC7_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 858: 'PH_SC7_CREDIT_AT_MAX', - 859: 'PH_SC7_CREDIT_AT_MAX_NO_PENDING_SEND', - 860: 'PH_SC7_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 861: 'PH_SC7_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 862: 'PH_SC7_GFX_PIPE0_TO_1_TRANSITION', - 863: 'PH_SC7_GFX_PIPE1_TO_0_TRANSITION', - 864: 'PH_SC7_PA0_DATA_FIFO_RD', - 865: 'PH_SC7_PA0_DATA_FIFO_WE', - 866: 'PH_SC7_PA0_FIFO_EMPTY', - 867: 'PH_SC7_PA0_FIFO_FULL', - 868: 'PH_SC7_PA0_NULL_WE', - 869: 'PH_SC7_PA0_EVENT_WE', - 870: 'PH_SC7_PA0_FPOV_WE', - 871: 'PH_SC7_PA0_LPOV_WE', - 872: 'PH_SC7_PA0_EOP_WE', - 873: 'PH_SC7_PA0_DATA_FIFO_EOP_RD', - 874: 'PH_SC7_PA0_EOPG_WE', - 875: 'PH_SC7_PA0_DEALLOC_4_0_RD', - 876: 'PH_SC7_PA1_DATA_FIFO_RD', - 877: 'PH_SC7_PA1_DATA_FIFO_WE', - 878: 'PH_SC7_PA1_FIFO_EMPTY', - 879: 'PH_SC7_PA1_FIFO_FULL', - 880: 'PH_SC7_PA1_NULL_WE', - 881: 'PH_SC7_PA1_EVENT_WE', - 882: 'PH_SC7_PA1_FPOV_WE', - 883: 'PH_SC7_PA1_LPOV_WE', - 884: 'PH_SC7_PA1_EOP_WE', - 885: 'PH_SC7_PA1_DATA_FIFO_EOP_RD', - 886: 'PH_SC7_PA1_EOPG_WE', - 887: 'PH_SC7_PA1_DEALLOC_4_0_RD', - 888: 'PH_SC7_PA2_DATA_FIFO_RD', - 889: 'PH_SC7_PA2_DATA_FIFO_WE', - 890: 'PH_SC7_PA2_FIFO_EMPTY', - 891: 'PH_SC7_PA2_FIFO_FULL', - 892: 'PH_SC7_PA2_NULL_WE', - 893: 'PH_SC7_PA2_EVENT_WE', - 894: 'PH_SC7_PA2_FPOV_WE', - 895: 'PH_SC7_PA2_LPOV_WE', - 896: 'PH_SC7_PA2_EOP_WE', - 897: 'PH_SC7_PA2_DATA_FIFO_EOP_RD', - 898: 'PH_SC7_PA2_EOPG_WE', - 899: 'PH_SC7_PA2_DEALLOC_4_0_RD', - 900: 'PH_SC7_PA3_DATA_FIFO_RD', - 901: 'PH_SC7_PA3_DATA_FIFO_WE', - 902: 'PH_SC7_PA3_FIFO_EMPTY', - 903: 'PH_SC7_PA3_FIFO_FULL', - 904: 'PH_SC7_PA3_NULL_WE', - 905: 'PH_SC7_PA3_EVENT_WE', - 906: 'PH_SC7_PA3_FPOV_WE', - 907: 'PH_SC7_PA3_LPOV_WE', - 908: 'PH_SC7_PA3_EOP_WE', - 909: 'PH_SC7_PA3_DATA_FIFO_EOP_RD', - 910: 'PH_SC7_PA3_EOPG_WE', - 911: 'PH_SC7_PA3_DEALLOC_4_0_RD', - 912: 'PH_SC7_PA4_DATA_FIFO_RD', - 913: 'PH_SC7_PA4_DATA_FIFO_WE', - 914: 'PH_SC7_PA4_FIFO_EMPTY', - 915: 'PH_SC7_PA4_FIFO_FULL', - 916: 'PH_SC7_PA4_NULL_WE', - 917: 'PH_SC7_PA4_EVENT_WE', - 918: 'PH_SC7_PA4_FPOV_WE', - 919: 'PH_SC7_PA4_LPOV_WE', - 920: 'PH_SC7_PA4_EOP_WE', - 921: 'PH_SC7_PA4_DATA_FIFO_EOP_RD', - 922: 'PH_SC7_PA4_EOPG_WE', - 923: 'PH_SC7_PA4_DEALLOC_4_0_RD', - 924: 'PH_SC7_PA5_DATA_FIFO_RD', - 925: 'PH_SC7_PA5_DATA_FIFO_WE', - 926: 'PH_SC7_PA5_FIFO_EMPTY', - 927: 'PH_SC7_PA5_FIFO_FULL', - 928: 'PH_SC7_PA5_NULL_WE', - 929: 'PH_SC7_PA5_EVENT_WE', - 930: 'PH_SC7_PA5_FPOV_WE', - 931: 'PH_SC7_PA5_LPOV_WE', - 932: 'PH_SC7_PA5_EOP_WE', - 933: 'PH_SC7_PA5_DATA_FIFO_EOP_RD', - 934: 'PH_SC7_PA5_EOPG_WE', - 935: 'PH_SC7_PA5_DEALLOC_4_0_RD', - 936: 'PH_SC7_PA6_DATA_FIFO_RD', - 937: 'PH_SC7_PA6_DATA_FIFO_WE', - 938: 'PH_SC7_PA6_FIFO_EMPTY', - 939: 'PH_SC7_PA6_FIFO_FULL', - 940: 'PH_SC7_PA6_NULL_WE', - 941: 'PH_SC7_PA6_EVENT_WE', - 942: 'PH_SC7_PA6_FPOV_WE', - 943: 'PH_SC7_PA6_LPOV_WE', - 944: 'PH_SC7_PA6_EOP_WE', - 945: 'PH_SC7_PA6_DATA_FIFO_EOP_RD', - 946: 'PH_SC7_PA6_EOPG_WE', - 947: 'PH_SC7_PA6_DEALLOC_4_0_RD', - 948: 'PH_SC7_PA7_DATA_FIFO_RD', - 949: 'PH_SC7_PA7_DATA_FIFO_WE', - 950: 'PH_SC7_PA7_FIFO_EMPTY', - 951: 'PH_SC7_PA7_FIFO_FULL', - 952: 'PH_SC7_PA7_NULL_WE', - 953: 'PH_SC7_PA7_EVENT_WE', - 954: 'PH_SC7_PA7_FPOV_WE', - 955: 'PH_SC7_PA7_LPOV_WE', - 956: 'PH_SC7_PA7_EOP_WE', - 957: 'PH_SC7_PA7_DATA_FIFO_EOP_RD', - 958: 'PH_SC7_PA7_EOPG_WE', - 959: 'PH_SC7_PA7_DEALLOC_4_0_RD', -} -PH_SC0_SRPS_WINDOW_VALID = 0 -PH_SC0_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 1 -PH_SC0_ARB_XFC_ONLY_PRIM_CYCLES = 2 -PH_SC0_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 3 -PH_SC0_ARB_STALLED_FROM_BELOW = 4 -PH_SC0_ARB_STARVED_FROM_ABOVE = 5 -PH_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 6 -PH_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 7 -PH_SC0_ARB_BUSY = 8 -PH_SC0_ARB_PA_BUSY_SOP = 9 -PH_SC0_ARB_EOP_POP_SYNC_POP = 10 -PH_SC0_ARB_EVENT_SYNC_POP = 11 -PH_SC0_PS_ENG_MULTICYCLE_BUBBLE = 12 -PH_SC0_EOP_SYNC_WINDOW = 13 -PH_SC0_BUSY_PROCESSING_MULTICYCLE_PRIM = 14 -PH_SC0_BUSY_CNT_NOT_ZERO = 15 -PH_SC0_SEND = 16 -PH_SC0_CREDIT_AT_ZERO_WITH_PENDING_SEND = 17 -PH_SC0_CREDIT_AT_MAX = 18 -PH_SC0_CREDIT_AT_MAX_NO_PENDING_SEND = 19 -PH_SC0_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 20 -PH_SC0_GFX_PIPE_PRIM_PROVOKED_TRANSITION = 21 -PH_SC0_GFX_PIPE0_TO_1_TRANSITION = 22 -PH_SC0_GFX_PIPE1_TO_0_TRANSITION = 23 -PH_SC0_PA0_DATA_FIFO_RD = 24 -PH_SC0_PA0_DATA_FIFO_WE = 25 -PH_SC0_PA0_FIFO_EMPTY = 26 -PH_SC0_PA0_FIFO_FULL = 27 -PH_SC0_PA0_NULL_WE = 28 -PH_SC0_PA0_EVENT_WE = 29 -PH_SC0_PA0_FPOV_WE = 30 -PH_SC0_PA0_LPOV_WE = 31 -PH_SC0_PA0_EOP_WE = 32 -PH_SC0_PA0_DATA_FIFO_EOP_RD = 33 -PH_SC0_PA0_EOPG_WE = 34 -PH_SC0_PA0_DEALLOC_4_0_RD = 35 -PH_SC0_PA1_DATA_FIFO_RD = 36 -PH_SC0_PA1_DATA_FIFO_WE = 37 -PH_SC0_PA1_FIFO_EMPTY = 38 -PH_SC0_PA1_FIFO_FULL = 39 -PH_SC0_PA1_NULL_WE = 40 -PH_SC0_PA1_EVENT_WE = 41 -PH_SC0_PA1_FPOV_WE = 42 -PH_SC0_PA1_LPOV_WE = 43 -PH_SC0_PA1_EOP_WE = 44 -PH_SC0_PA1_DATA_FIFO_EOP_RD = 45 -PH_SC0_PA1_EOPG_WE = 46 -PH_SC0_PA1_DEALLOC_4_0_RD = 47 -PH_SC0_PA2_DATA_FIFO_RD = 48 -PH_SC0_PA2_DATA_FIFO_WE = 49 -PH_SC0_PA2_FIFO_EMPTY = 50 -PH_SC0_PA2_FIFO_FULL = 51 -PH_SC0_PA2_NULL_WE = 52 -PH_SC0_PA2_EVENT_WE = 53 -PH_SC0_PA2_FPOV_WE = 54 -PH_SC0_PA2_LPOV_WE = 55 -PH_SC0_PA2_EOP_WE = 56 -PH_SC0_PA2_DATA_FIFO_EOP_RD = 57 -PH_SC0_PA2_EOPG_WE = 58 -PH_SC0_PA2_DEALLOC_4_0_RD = 59 -PH_SC0_PA3_DATA_FIFO_RD = 60 -PH_SC0_PA3_DATA_FIFO_WE = 61 -PH_SC0_PA3_FIFO_EMPTY = 62 -PH_SC0_PA3_FIFO_FULL = 63 -PH_SC0_PA3_NULL_WE = 64 -PH_SC0_PA3_EVENT_WE = 65 -PH_SC0_PA3_FPOV_WE = 66 -PH_SC0_PA3_LPOV_WE = 67 -PH_SC0_PA3_EOP_WE = 68 -PH_SC0_PA3_DATA_FIFO_EOP_RD = 69 -PH_SC0_PA3_EOPG_WE = 70 -PH_SC0_PA3_DEALLOC_4_0_RD = 71 -PH_SC0_PA4_DATA_FIFO_RD = 72 -PH_SC0_PA4_DATA_FIFO_WE = 73 -PH_SC0_PA4_FIFO_EMPTY = 74 -PH_SC0_PA4_FIFO_FULL = 75 -PH_SC0_PA4_NULL_WE = 76 -PH_SC0_PA4_EVENT_WE = 77 -PH_SC0_PA4_FPOV_WE = 78 -PH_SC0_PA4_LPOV_WE = 79 -PH_SC0_PA4_EOP_WE = 80 -PH_SC0_PA4_DATA_FIFO_EOP_RD = 81 -PH_SC0_PA4_EOPG_WE = 82 -PH_SC0_PA4_DEALLOC_4_0_RD = 83 -PH_SC0_PA5_DATA_FIFO_RD = 84 -PH_SC0_PA5_DATA_FIFO_WE = 85 -PH_SC0_PA5_FIFO_EMPTY = 86 -PH_SC0_PA5_FIFO_FULL = 87 -PH_SC0_PA5_NULL_WE = 88 -PH_SC0_PA5_EVENT_WE = 89 -PH_SC0_PA5_FPOV_WE = 90 -PH_SC0_PA5_LPOV_WE = 91 -PH_SC0_PA5_EOP_WE = 92 -PH_SC0_PA5_DATA_FIFO_EOP_RD = 93 -PH_SC0_PA5_EOPG_WE = 94 -PH_SC0_PA5_DEALLOC_4_0_RD = 95 -PH_SC0_PA6_DATA_FIFO_RD = 96 -PH_SC0_PA6_DATA_FIFO_WE = 97 -PH_SC0_PA6_FIFO_EMPTY = 98 -PH_SC0_PA6_FIFO_FULL = 99 -PH_SC0_PA6_NULL_WE = 100 -PH_SC0_PA6_EVENT_WE = 101 -PH_SC0_PA6_FPOV_WE = 102 -PH_SC0_PA6_LPOV_WE = 103 -PH_SC0_PA6_EOP_WE = 104 -PH_SC0_PA6_DATA_FIFO_EOP_RD = 105 -PH_SC0_PA6_EOPG_WE = 106 -PH_SC0_PA6_DEALLOC_4_0_RD = 107 -PH_SC0_PA7_DATA_FIFO_RD = 108 -PH_SC0_PA7_DATA_FIFO_WE = 109 -PH_SC0_PA7_FIFO_EMPTY = 110 -PH_SC0_PA7_FIFO_FULL = 111 -PH_SC0_PA7_NULL_WE = 112 -PH_SC0_PA7_EVENT_WE = 113 -PH_SC0_PA7_FPOV_WE = 114 -PH_SC0_PA7_LPOV_WE = 115 -PH_SC0_PA7_EOP_WE = 116 -PH_SC0_PA7_DATA_FIFO_EOP_RD = 117 -PH_SC0_PA7_EOPG_WE = 118 -PH_SC0_PA7_DEALLOC_4_0_RD = 119 -PH_SC1_SRPS_WINDOW_VALID = 120 -PH_SC1_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 121 -PH_SC1_ARB_XFC_ONLY_PRIM_CYCLES = 122 -PH_SC1_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 123 -PH_SC1_ARB_STALLED_FROM_BELOW = 124 -PH_SC1_ARB_STARVED_FROM_ABOVE = 125 -PH_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 126 -PH_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 127 -PH_SC1_ARB_BUSY = 128 -PH_SC1_ARB_PA_BUSY_SOP = 129 -PH_SC1_ARB_EOP_POP_SYNC_POP = 130 -PH_SC1_ARB_EVENT_SYNC_POP = 131 -PH_SC1_PS_ENG_MULTICYCLE_BUBBLE = 132 -PH_SC1_EOP_SYNC_WINDOW = 133 -PH_SC1_BUSY_PROCESSING_MULTICYCLE_PRIM = 134 -PH_SC1_BUSY_CNT_NOT_ZERO = 135 -PH_SC1_SEND = 136 -PH_SC1_CREDIT_AT_ZERO_WITH_PENDING_SEND = 137 -PH_SC1_CREDIT_AT_MAX = 138 -PH_SC1_CREDIT_AT_MAX_NO_PENDING_SEND = 139 -PH_SC1_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 140 -PH_SC1_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 141 -PH_SC1_GFX_PIPE0_TO_1_TRANSITION = 142 -PH_SC1_GFX_PIPE1_TO_0_TRANSITION = 143 -PH_SC1_PA0_DATA_FIFO_RD = 144 -PH_SC1_PA0_DATA_FIFO_WE = 145 -PH_SC1_PA0_FIFO_EMPTY = 146 -PH_SC1_PA0_FIFO_FULL = 147 -PH_SC1_PA0_NULL_WE = 148 -PH_SC1_PA0_EVENT_WE = 149 -PH_SC1_PA0_FPOV_WE = 150 -PH_SC1_PA0_LPOV_WE = 151 -PH_SC1_PA0_EOP_WE = 152 -PH_SC1_PA0_DATA_FIFO_EOP_RD = 153 -PH_SC1_PA0_EOPG_WE = 154 -PH_SC1_PA0_DEALLOC_4_0_RD = 155 -PH_SC1_PA1_DATA_FIFO_RD = 156 -PH_SC1_PA1_DATA_FIFO_WE = 157 -PH_SC1_PA1_FIFO_EMPTY = 158 -PH_SC1_PA1_FIFO_FULL = 159 -PH_SC1_PA1_NULL_WE = 160 -PH_SC1_PA1_EVENT_WE = 161 -PH_SC1_PA1_FPOV_WE = 162 -PH_SC1_PA1_LPOV_WE = 163 -PH_SC1_PA1_EOP_WE = 164 -PH_SC1_PA1_DATA_FIFO_EOP_RD = 165 -PH_SC1_PA1_EOPG_WE = 166 -PH_SC1_PA1_DEALLOC_4_0_RD = 167 -PH_SC1_PA2_DATA_FIFO_RD = 168 -PH_SC1_PA2_DATA_FIFO_WE = 169 -PH_SC1_PA2_FIFO_EMPTY = 170 -PH_SC1_PA2_FIFO_FULL = 171 -PH_SC1_PA2_NULL_WE = 172 -PH_SC1_PA2_EVENT_WE = 173 -PH_SC1_PA2_FPOV_WE = 174 -PH_SC1_PA2_LPOV_WE = 175 -PH_SC1_PA2_EOP_WE = 176 -PH_SC1_PA2_DATA_FIFO_EOP_RD = 177 -PH_SC1_PA2_EOPG_WE = 178 -PH_SC1_PA2_DEALLOC_4_0_RD = 179 -PH_SC1_PA3_DATA_FIFO_RD = 180 -PH_SC1_PA3_DATA_FIFO_WE = 181 -PH_SC1_PA3_FIFO_EMPTY = 182 -PH_SC1_PA3_FIFO_FULL = 183 -PH_SC1_PA3_NULL_WE = 184 -PH_SC1_PA3_EVENT_WE = 185 -PH_SC1_PA3_FPOV_WE = 186 -PH_SC1_PA3_LPOV_WE = 187 -PH_SC1_PA3_EOP_WE = 188 -PH_SC1_PA3_DATA_FIFO_EOP_RD = 189 -PH_SC1_PA3_EOPG_WE = 190 -PH_SC1_PA3_DEALLOC_4_0_RD = 191 -PH_SC1_PA4_DATA_FIFO_RD = 192 -PH_SC1_PA4_DATA_FIFO_WE = 193 -PH_SC1_PA4_FIFO_EMPTY = 194 -PH_SC1_PA4_FIFO_FULL = 195 -PH_SC1_PA4_NULL_WE = 196 -PH_SC1_PA4_EVENT_WE = 197 -PH_SC1_PA4_FPOV_WE = 198 -PH_SC1_PA4_LPOV_WE = 199 -PH_SC1_PA4_EOP_WE = 200 -PH_SC1_PA4_DATA_FIFO_EOP_RD = 201 -PH_SC1_PA4_EOPG_WE = 202 -PH_SC1_PA4_DEALLOC_4_0_RD = 203 -PH_SC1_PA5_DATA_FIFO_RD = 204 -PH_SC1_PA5_DATA_FIFO_WE = 205 -PH_SC1_PA5_FIFO_EMPTY = 206 -PH_SC1_PA5_FIFO_FULL = 207 -PH_SC1_PA5_NULL_WE = 208 -PH_SC1_PA5_EVENT_WE = 209 -PH_SC1_PA5_FPOV_WE = 210 -PH_SC1_PA5_LPOV_WE = 211 -PH_SC1_PA5_EOP_WE = 212 -PH_SC1_PA5_DATA_FIFO_EOP_RD = 213 -PH_SC1_PA5_EOPG_WE = 214 -PH_SC1_PA5_DEALLOC_4_0_RD = 215 -PH_SC1_PA6_DATA_FIFO_RD = 216 -PH_SC1_PA6_DATA_FIFO_WE = 217 -PH_SC1_PA6_FIFO_EMPTY = 218 -PH_SC1_PA6_FIFO_FULL = 219 -PH_SC1_PA6_NULL_WE = 220 -PH_SC1_PA6_EVENT_WE = 221 -PH_SC1_PA6_FPOV_WE = 222 -PH_SC1_PA6_LPOV_WE = 223 -PH_SC1_PA6_EOP_WE = 224 -PH_SC1_PA6_DATA_FIFO_EOP_RD = 225 -PH_SC1_PA6_EOPG_WE = 226 -PH_SC1_PA6_DEALLOC_4_0_RD = 227 -PH_SC1_PA7_DATA_FIFO_RD = 228 -PH_SC1_PA7_DATA_FIFO_WE = 229 -PH_SC1_PA7_FIFO_EMPTY = 230 -PH_SC1_PA7_FIFO_FULL = 231 -PH_SC1_PA7_NULL_WE = 232 -PH_SC1_PA7_EVENT_WE = 233 -PH_SC1_PA7_FPOV_WE = 234 -PH_SC1_PA7_LPOV_WE = 235 -PH_SC1_PA7_EOP_WE = 236 -PH_SC1_PA7_DATA_FIFO_EOP_RD = 237 -PH_SC1_PA7_EOPG_WE = 238 -PH_SC1_PA7_DEALLOC_4_0_RD = 239 -PH_SC2_SRPS_WINDOW_VALID = 240 -PH_SC2_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 241 -PH_SC2_ARB_XFC_ONLY_PRIM_CYCLES = 242 -PH_SC2_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 243 -PH_SC2_ARB_STALLED_FROM_BELOW = 244 -PH_SC2_ARB_STARVED_FROM_ABOVE = 245 -PH_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 246 -PH_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 247 -PH_SC2_ARB_BUSY = 248 -PH_SC2_ARB_PA_BUSY_SOP = 249 -PH_SC2_ARB_EOP_POP_SYNC_POP = 250 -PH_SC2_ARB_EVENT_SYNC_POP = 251 -PH_SC2_PS_ENG_MULTICYCLE_BUBBLE = 252 -PH_SC2_EOP_SYNC_WINDOW = 253 -PH_SC2_BUSY_PROCESSING_MULTICYCLE_PRIM = 254 -PH_SC2_BUSY_CNT_NOT_ZERO = 255 -PH_SC2_SEND = 256 -PH_SC2_CREDIT_AT_ZERO_WITH_PENDING_SEND = 257 -PH_SC2_CREDIT_AT_MAX = 258 -PH_SC2_CREDIT_AT_MAX_NO_PENDING_SEND = 259 -PH_SC2_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 260 -PH_SC2_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 261 -PH_SC2_GFX_PIPE0_TO_1_TRANSITION = 262 -PH_SC2_GFX_PIPE1_TO_0_TRANSITION = 263 -PH_SC2_PA0_DATA_FIFO_RD = 264 -PH_SC2_PA0_DATA_FIFO_WE = 265 -PH_SC2_PA0_FIFO_EMPTY = 266 -PH_SC2_PA0_FIFO_FULL = 267 -PH_SC2_PA0_NULL_WE = 268 -PH_SC2_PA0_EVENT_WE = 269 -PH_SC2_PA0_FPOV_WE = 270 -PH_SC2_PA0_LPOV_WE = 271 -PH_SC2_PA0_EOP_WE = 272 -PH_SC2_PA0_DATA_FIFO_EOP_RD = 273 -PH_SC2_PA0_EOPG_WE = 274 -PH_SC2_PA0_DEALLOC_4_0_RD = 275 -PH_SC2_PA1_DATA_FIFO_RD = 276 -PH_SC2_PA1_DATA_FIFO_WE = 277 -PH_SC2_PA1_FIFO_EMPTY = 278 -PH_SC2_PA1_FIFO_FULL = 279 -PH_SC2_PA1_NULL_WE = 280 -PH_SC2_PA1_EVENT_WE = 281 -PH_SC2_PA1_FPOV_WE = 282 -PH_SC2_PA1_LPOV_WE = 283 -PH_SC2_PA1_EOP_WE = 284 -PH_SC2_PA1_DATA_FIFO_EOP_RD = 285 -PH_SC2_PA1_EOPG_WE = 286 -PH_SC2_PA1_DEALLOC_4_0_RD = 287 -PH_SC2_PA2_DATA_FIFO_RD = 288 -PH_SC2_PA2_DATA_FIFO_WE = 289 -PH_SC2_PA2_FIFO_EMPTY = 290 -PH_SC2_PA2_FIFO_FULL = 291 -PH_SC2_PA2_NULL_WE = 292 -PH_SC2_PA2_EVENT_WE = 293 -PH_SC2_PA2_FPOV_WE = 294 -PH_SC2_PA2_LPOV_WE = 295 -PH_SC2_PA2_EOP_WE = 296 -PH_SC2_PA2_DATA_FIFO_EOP_RD = 297 -PH_SC2_PA2_EOPG_WE = 298 -PH_SC2_PA2_DEALLOC_4_0_RD = 299 -PH_SC2_PA3_DATA_FIFO_RD = 300 -PH_SC2_PA3_DATA_FIFO_WE = 301 -PH_SC2_PA3_FIFO_EMPTY = 302 -PH_SC2_PA3_FIFO_FULL = 303 -PH_SC2_PA3_NULL_WE = 304 -PH_SC2_PA3_EVENT_WE = 305 -PH_SC2_PA3_FPOV_WE = 306 -PH_SC2_PA3_LPOV_WE = 307 -PH_SC2_PA3_EOP_WE = 308 -PH_SC2_PA3_DATA_FIFO_EOP_RD = 309 -PH_SC2_PA3_EOPG_WE = 310 -PH_SC2_PA3_DEALLOC_4_0_RD = 311 -PH_SC2_PA4_DATA_FIFO_RD = 312 -PH_SC2_PA4_DATA_FIFO_WE = 313 -PH_SC2_PA4_FIFO_EMPTY = 314 -PH_SC2_PA4_FIFO_FULL = 315 -PH_SC2_PA4_NULL_WE = 316 -PH_SC2_PA4_EVENT_WE = 317 -PH_SC2_PA4_FPOV_WE = 318 -PH_SC2_PA4_LPOV_WE = 319 -PH_SC2_PA4_EOP_WE = 320 -PH_SC2_PA4_DATA_FIFO_EOP_RD = 321 -PH_SC2_PA4_EOPG_WE = 322 -PH_SC2_PA4_DEALLOC_4_0_RD = 323 -PH_SC2_PA5_DATA_FIFO_RD = 324 -PH_SC2_PA5_DATA_FIFO_WE = 325 -PH_SC2_PA5_FIFO_EMPTY = 326 -PH_SC2_PA5_FIFO_FULL = 327 -PH_SC2_PA5_NULL_WE = 328 -PH_SC2_PA5_EVENT_WE = 329 -PH_SC2_PA5_FPOV_WE = 330 -PH_SC2_PA5_LPOV_WE = 331 -PH_SC2_PA5_EOP_WE = 332 -PH_SC2_PA5_DATA_FIFO_EOP_RD = 333 -PH_SC2_PA5_EOPG_WE = 334 -PH_SC2_PA5_DEALLOC_4_0_RD = 335 -PH_SC2_PA6_DATA_FIFO_RD = 336 -PH_SC2_PA6_DATA_FIFO_WE = 337 -PH_SC2_PA6_FIFO_EMPTY = 338 -PH_SC2_PA6_FIFO_FULL = 339 -PH_SC2_PA6_NULL_WE = 340 -PH_SC2_PA6_EVENT_WE = 341 -PH_SC2_PA6_FPOV_WE = 342 -PH_SC2_PA6_LPOV_WE = 343 -PH_SC2_PA6_EOP_WE = 344 -PH_SC2_PA6_DATA_FIFO_EOP_RD = 345 -PH_SC2_PA6_EOPG_WE = 346 -PH_SC2_PA6_DEALLOC_4_0_RD = 347 -PH_SC2_PA7_DATA_FIFO_RD = 348 -PH_SC2_PA7_DATA_FIFO_WE = 349 -PH_SC2_PA7_FIFO_EMPTY = 350 -PH_SC2_PA7_FIFO_FULL = 351 -PH_SC2_PA7_NULL_WE = 352 -PH_SC2_PA7_EVENT_WE = 353 -PH_SC2_PA7_FPOV_WE = 354 -PH_SC2_PA7_LPOV_WE = 355 -PH_SC2_PA7_EOP_WE = 356 -PH_SC2_PA7_DATA_FIFO_EOP_RD = 357 -PH_SC2_PA7_EOPG_WE = 358 -PH_SC2_PA7_DEALLOC_4_0_RD = 359 -PH_SC3_SRPS_WINDOW_VALID = 360 -PH_SC3_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 361 -PH_SC3_ARB_XFC_ONLY_PRIM_CYCLES = 362 -PH_SC3_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 363 -PH_SC3_ARB_STALLED_FROM_BELOW = 364 -PH_SC3_ARB_STARVED_FROM_ABOVE = 365 -PH_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 366 -PH_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 367 -PH_SC3_ARB_BUSY = 368 -PH_SC3_ARB_PA_BUSY_SOP = 369 -PH_SC3_ARB_EOP_POP_SYNC_POP = 370 -PH_SC3_ARB_EVENT_SYNC_POP = 371 -PH_SC3_PS_ENG_MULTICYCLE_BUBBLE = 372 -PH_SC3_EOP_SYNC_WINDOW = 373 -PH_SC3_BUSY_PROCESSING_MULTICYCLE_PRIM = 374 -PH_SC3_BUSY_CNT_NOT_ZERO = 375 -PH_SC3_SEND = 376 -PH_SC3_CREDIT_AT_ZERO_WITH_PENDING_SEND = 377 -PH_SC3_CREDIT_AT_MAX = 378 -PH_SC3_CREDIT_AT_MAX_NO_PENDING_SEND = 379 -PH_SC3_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 380 -PH_SC3_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 381 -PH_SC3_GFX_PIPE0_TO_1_TRANSITION = 382 -PH_SC3_GFX_PIPE1_TO_0_TRANSITION = 383 -PH_SC3_PA0_DATA_FIFO_RD = 384 -PH_SC3_PA0_DATA_FIFO_WE = 385 -PH_SC3_PA0_FIFO_EMPTY = 386 -PH_SC3_PA0_FIFO_FULL = 387 -PH_SC3_PA0_NULL_WE = 388 -PH_SC3_PA0_EVENT_WE = 389 -PH_SC3_PA0_FPOV_WE = 390 -PH_SC3_PA0_LPOV_WE = 391 -PH_SC3_PA0_EOP_WE = 392 -PH_SC3_PA0_DATA_FIFO_EOP_RD = 393 -PH_SC3_PA0_EOPG_WE = 394 -PH_SC3_PA0_DEALLOC_4_0_RD = 395 -PH_SC3_PA1_DATA_FIFO_RD = 396 -PH_SC3_PA1_DATA_FIFO_WE = 397 -PH_SC3_PA1_FIFO_EMPTY = 398 -PH_SC3_PA1_FIFO_FULL = 399 -PH_SC3_PA1_NULL_WE = 400 -PH_SC3_PA1_EVENT_WE = 401 -PH_SC3_PA1_FPOV_WE = 402 -PH_SC3_PA1_LPOV_WE = 403 -PH_SC3_PA1_EOP_WE = 404 -PH_SC3_PA1_DATA_FIFO_EOP_RD = 405 -PH_SC3_PA1_EOPG_WE = 406 -PH_SC3_PA1_DEALLOC_4_0_RD = 407 -PH_SC3_PA2_DATA_FIFO_RD = 408 -PH_SC3_PA2_DATA_FIFO_WE = 409 -PH_SC3_PA2_FIFO_EMPTY = 410 -PH_SC3_PA2_FIFO_FULL = 411 -PH_SC3_PA2_NULL_WE = 412 -PH_SC3_PA2_EVENT_WE = 413 -PH_SC3_PA2_FPOV_WE = 414 -PH_SC3_PA2_LPOV_WE = 415 -PH_SC3_PA2_EOP_WE = 416 -PH_SC3_PA2_DATA_FIFO_EOP_RD = 417 -PH_SC3_PA2_EOPG_WE = 418 -PH_SC3_PA2_DEALLOC_4_0_RD = 419 -PH_SC3_PA3_DATA_FIFO_RD = 420 -PH_SC3_PA3_DATA_FIFO_WE = 421 -PH_SC3_PA3_FIFO_EMPTY = 422 -PH_SC3_PA3_FIFO_FULL = 423 -PH_SC3_PA3_NULL_WE = 424 -PH_SC3_PA3_EVENT_WE = 425 -PH_SC3_PA3_FPOV_WE = 426 -PH_SC3_PA3_LPOV_WE = 427 -PH_SC3_PA3_EOP_WE = 428 -PH_SC3_PA3_DATA_FIFO_EOP_RD = 429 -PH_SC3_PA3_EOPG_WE = 430 -PH_SC3_PA3_DEALLOC_4_0_RD = 431 -PH_SC3_PA4_DATA_FIFO_RD = 432 -PH_SC3_PA4_DATA_FIFO_WE = 433 -PH_SC3_PA4_FIFO_EMPTY = 434 -PH_SC3_PA4_FIFO_FULL = 435 -PH_SC3_PA4_NULL_WE = 436 -PH_SC3_PA4_EVENT_WE = 437 -PH_SC3_PA4_FPOV_WE = 438 -PH_SC3_PA4_LPOV_WE = 439 -PH_SC3_PA4_EOP_WE = 440 -PH_SC3_PA4_DATA_FIFO_EOP_RD = 441 -PH_SC3_PA4_EOPG_WE = 442 -PH_SC3_PA4_DEALLOC_4_0_RD = 443 -PH_SC3_PA5_DATA_FIFO_RD = 444 -PH_SC3_PA5_DATA_FIFO_WE = 445 -PH_SC3_PA5_FIFO_EMPTY = 446 -PH_SC3_PA5_FIFO_FULL = 447 -PH_SC3_PA5_NULL_WE = 448 -PH_SC3_PA5_EVENT_WE = 449 -PH_SC3_PA5_FPOV_WE = 450 -PH_SC3_PA5_LPOV_WE = 451 -PH_SC3_PA5_EOP_WE = 452 -PH_SC3_PA5_DATA_FIFO_EOP_RD = 453 -PH_SC3_PA5_EOPG_WE = 454 -PH_SC3_PA5_DEALLOC_4_0_RD = 455 -PH_SC3_PA6_DATA_FIFO_RD = 456 -PH_SC3_PA6_DATA_FIFO_WE = 457 -PH_SC3_PA6_FIFO_EMPTY = 458 -PH_SC3_PA6_FIFO_FULL = 459 -PH_SC3_PA6_NULL_WE = 460 -PH_SC3_PA6_EVENT_WE = 461 -PH_SC3_PA6_FPOV_WE = 462 -PH_SC3_PA6_LPOV_WE = 463 -PH_SC3_PA6_EOP_WE = 464 -PH_SC3_PA6_DATA_FIFO_EOP_RD = 465 -PH_SC3_PA6_EOPG_WE = 466 -PH_SC3_PA6_DEALLOC_4_0_RD = 467 -PH_SC3_PA7_DATA_FIFO_RD = 468 -PH_SC3_PA7_DATA_FIFO_WE = 469 -PH_SC3_PA7_FIFO_EMPTY = 470 -PH_SC3_PA7_FIFO_FULL = 471 -PH_SC3_PA7_NULL_WE = 472 -PH_SC3_PA7_EVENT_WE = 473 -PH_SC3_PA7_FPOV_WE = 474 -PH_SC3_PA7_LPOV_WE = 475 -PH_SC3_PA7_EOP_WE = 476 -PH_SC3_PA7_DATA_FIFO_EOP_RD = 477 -PH_SC3_PA7_EOPG_WE = 478 -PH_SC3_PA7_DEALLOC_4_0_RD = 479 -PH_SC4_SRPS_WINDOW_VALID = 480 -PH_SC4_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 481 -PH_SC4_ARB_XFC_ONLY_PRIM_CYCLES = 482 -PH_SC4_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 483 -PH_SC4_ARB_STALLED_FROM_BELOW = 484 -PH_SC4_ARB_STARVED_FROM_ABOVE = 485 -PH_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 486 -PH_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 487 -PH_SC4_ARB_BUSY = 488 -PH_SC4_ARB_PA_BUSY_SOP = 489 -PH_SC4_ARB_EOP_POP_SYNC_POP = 490 -PH_SC4_ARB_EVENT_SYNC_POP = 491 -PH_SC4_PS_ENG_MULTICYCLE_BUBBLE = 492 -PH_SC4_EOP_SYNC_WINDOW = 493 -PH_SC4_BUSY_PROCESSING_MULTICYCLE_PRIM = 494 -PH_SC4_BUSY_CNT_NOT_ZERO = 495 -PH_SC4_SEND = 496 -PH_SC4_CREDIT_AT_ZERO_WITH_PENDING_SEND = 497 -PH_SC4_CREDIT_AT_MAX = 498 -PH_SC4_CREDIT_AT_MAX_NO_PENDING_SEND = 499 -PH_SC4_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 500 -PH_SC4_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 501 -PH_SC4_GFX_PIPE0_TO_1_TRANSITION = 502 -PH_SC4_GFX_PIPE1_TO_0_TRANSITION = 503 -PH_SC4_PA0_DATA_FIFO_RD = 504 -PH_SC4_PA0_DATA_FIFO_WE = 505 -PH_SC4_PA0_FIFO_EMPTY = 506 -PH_SC4_PA0_FIFO_FULL = 507 -PH_SC4_PA0_NULL_WE = 508 -PH_SC4_PA0_EVENT_WE = 509 -PH_SC4_PA0_FPOV_WE = 510 -PH_SC4_PA0_LPOV_WE = 511 -PH_SC4_PA0_EOP_WE = 512 -PH_SC4_PA0_DATA_FIFO_EOP_RD = 513 -PH_SC4_PA0_EOPG_WE = 514 -PH_SC4_PA0_DEALLOC_4_0_RD = 515 -PH_SC4_PA1_DATA_FIFO_RD = 516 -PH_SC4_PA1_DATA_FIFO_WE = 517 -PH_SC4_PA1_FIFO_EMPTY = 518 -PH_SC4_PA1_FIFO_FULL = 519 -PH_SC4_PA1_NULL_WE = 520 -PH_SC4_PA1_EVENT_WE = 521 -PH_SC4_PA1_FPOV_WE = 522 -PH_SC4_PA1_LPOV_WE = 523 -PH_SC4_PA1_EOP_WE = 524 -PH_SC4_PA1_DATA_FIFO_EOP_RD = 525 -PH_SC4_PA1_EOPG_WE = 526 -PH_SC4_PA1_DEALLOC_4_0_RD = 527 -PH_SC4_PA2_DATA_FIFO_RD = 528 -PH_SC4_PA2_DATA_FIFO_WE = 529 -PH_SC4_PA2_FIFO_EMPTY = 530 -PH_SC4_PA2_FIFO_FULL = 531 -PH_SC4_PA2_NULL_WE = 532 -PH_SC4_PA2_EVENT_WE = 533 -PH_SC4_PA2_FPOV_WE = 534 -PH_SC4_PA2_LPOV_WE = 535 -PH_SC4_PA2_EOP_WE = 536 -PH_SC4_PA2_DATA_FIFO_EOP_RD = 537 -PH_SC4_PA2_EOPG_WE = 538 -PH_SC4_PA2_DEALLOC_4_0_RD = 539 -PH_SC4_PA3_DATA_FIFO_RD = 540 -PH_SC4_PA3_DATA_FIFO_WE = 541 -PH_SC4_PA3_FIFO_EMPTY = 542 -PH_SC4_PA3_FIFO_FULL = 543 -PH_SC4_PA3_NULL_WE = 544 -PH_SC4_PA3_EVENT_WE = 545 -PH_SC4_PA3_FPOV_WE = 546 -PH_SC4_PA3_LPOV_WE = 547 -PH_SC4_PA3_EOP_WE = 548 -PH_SC4_PA3_DATA_FIFO_EOP_RD = 549 -PH_SC4_PA3_EOPG_WE = 550 -PH_SC4_PA3_DEALLOC_4_0_RD = 551 -PH_SC4_PA4_DATA_FIFO_RD = 552 -PH_SC4_PA4_DATA_FIFO_WE = 553 -PH_SC4_PA4_FIFO_EMPTY = 554 -PH_SC4_PA4_FIFO_FULL = 555 -PH_SC4_PA4_NULL_WE = 556 -PH_SC4_PA4_EVENT_WE = 557 -PH_SC4_PA4_FPOV_WE = 558 -PH_SC4_PA4_LPOV_WE = 559 -PH_SC4_PA4_EOP_WE = 560 -PH_SC4_PA4_DATA_FIFO_EOP_RD = 561 -PH_SC4_PA4_EOPG_WE = 562 -PH_SC4_PA4_DEALLOC_4_0_RD = 563 -PH_SC4_PA5_DATA_FIFO_RD = 564 -PH_SC4_PA5_DATA_FIFO_WE = 565 -PH_SC4_PA5_FIFO_EMPTY = 566 -PH_SC4_PA5_FIFO_FULL = 567 -PH_SC4_PA5_NULL_WE = 568 -PH_SC4_PA5_EVENT_WE = 569 -PH_SC4_PA5_FPOV_WE = 570 -PH_SC4_PA5_LPOV_WE = 571 -PH_SC4_PA5_EOP_WE = 572 -PH_SC4_PA5_DATA_FIFO_EOP_RD = 573 -PH_SC4_PA5_EOPG_WE = 574 -PH_SC4_PA5_DEALLOC_4_0_RD = 575 -PH_SC4_PA6_DATA_FIFO_RD = 576 -PH_SC4_PA6_DATA_FIFO_WE = 577 -PH_SC4_PA6_FIFO_EMPTY = 578 -PH_SC4_PA6_FIFO_FULL = 579 -PH_SC4_PA6_NULL_WE = 580 -PH_SC4_PA6_EVENT_WE = 581 -PH_SC4_PA6_FPOV_WE = 582 -PH_SC4_PA6_LPOV_WE = 583 -PH_SC4_PA6_EOP_WE = 584 -PH_SC4_PA6_DATA_FIFO_EOP_RD = 585 -PH_SC4_PA6_EOPG_WE = 586 -PH_SC4_PA6_DEALLOC_4_0_RD = 587 -PH_SC4_PA7_DATA_FIFO_RD = 588 -PH_SC4_PA7_DATA_FIFO_WE = 589 -PH_SC4_PA7_FIFO_EMPTY = 590 -PH_SC4_PA7_FIFO_FULL = 591 -PH_SC4_PA7_NULL_WE = 592 -PH_SC4_PA7_EVENT_WE = 593 -PH_SC4_PA7_FPOV_WE = 594 -PH_SC4_PA7_LPOV_WE = 595 -PH_SC4_PA7_EOP_WE = 596 -PH_SC4_PA7_DATA_FIFO_EOP_RD = 597 -PH_SC4_PA7_EOPG_WE = 598 -PH_SC4_PA7_DEALLOC_4_0_RD = 599 -PH_SC5_SRPS_WINDOW_VALID = 600 -PH_SC5_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 601 -PH_SC5_ARB_XFC_ONLY_PRIM_CYCLES = 602 -PH_SC5_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 603 -PH_SC5_ARB_STALLED_FROM_BELOW = 604 -PH_SC5_ARB_STARVED_FROM_ABOVE = 605 -PH_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 606 -PH_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 607 -PH_SC5_ARB_BUSY = 608 -PH_SC5_ARB_PA_BUSY_SOP = 609 -PH_SC5_ARB_EOP_POP_SYNC_POP = 610 -PH_SC5_ARB_EVENT_SYNC_POP = 611 -PH_SC5_PS_ENG_MULTICYCLE_BUBBLE = 612 -PH_SC5_EOP_SYNC_WINDOW = 613 -PH_SC5_BUSY_PROCESSING_MULTICYCLE_PRIM = 614 -PH_SC5_BUSY_CNT_NOT_ZERO = 615 -PH_SC5_SEND = 616 -PH_SC5_CREDIT_AT_ZERO_WITH_PENDING_SEND = 617 -PH_SC5_CREDIT_AT_MAX = 618 -PH_SC5_CREDIT_AT_MAX_NO_PENDING_SEND = 619 -PH_SC5_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 620 -PH_SC5_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 621 -PH_SC5_GFX_PIPE0_TO_1_TRANSITION = 622 -PH_SC5_GFX_PIPE1_TO_0_TRANSITION = 623 -PH_SC5_PA0_DATA_FIFO_RD = 624 -PH_SC5_PA0_DATA_FIFO_WE = 625 -PH_SC5_PA0_FIFO_EMPTY = 626 -PH_SC5_PA0_FIFO_FULL = 627 -PH_SC5_PA0_NULL_WE = 628 -PH_SC5_PA0_EVENT_WE = 629 -PH_SC5_PA0_FPOV_WE = 630 -PH_SC5_PA0_LPOV_WE = 631 -PH_SC5_PA0_EOP_WE = 632 -PH_SC5_PA0_DATA_FIFO_EOP_RD = 633 -PH_SC5_PA0_EOPG_WE = 634 -PH_SC5_PA0_DEALLOC_4_0_RD = 635 -PH_SC5_PA1_DATA_FIFO_RD = 636 -PH_SC5_PA1_DATA_FIFO_WE = 637 -PH_SC5_PA1_FIFO_EMPTY = 638 -PH_SC5_PA1_FIFO_FULL = 639 -PH_SC5_PA1_NULL_WE = 640 -PH_SC5_PA1_EVENT_WE = 641 -PH_SC5_PA1_FPOV_WE = 642 -PH_SC5_PA1_LPOV_WE = 643 -PH_SC5_PA1_EOP_WE = 644 -PH_SC5_PA1_DATA_FIFO_EOP_RD = 645 -PH_SC5_PA1_EOPG_WE = 646 -PH_SC5_PA1_DEALLOC_4_0_RD = 647 -PH_SC5_PA2_DATA_FIFO_RD = 648 -PH_SC5_PA2_DATA_FIFO_WE = 649 -PH_SC5_PA2_FIFO_EMPTY = 650 -PH_SC5_PA2_FIFO_FULL = 651 -PH_SC5_PA2_NULL_WE = 652 -PH_SC5_PA2_EVENT_WE = 653 -PH_SC5_PA2_FPOV_WE = 654 -PH_SC5_PA2_LPOV_WE = 655 -PH_SC5_PA2_EOP_WE = 656 -PH_SC5_PA2_DATA_FIFO_EOP_RD = 657 -PH_SC5_PA2_EOPG_WE = 658 -PH_SC5_PA2_DEALLOC_4_0_RD = 659 -PH_SC5_PA3_DATA_FIFO_RD = 660 -PH_SC5_PA3_DATA_FIFO_WE = 661 -PH_SC5_PA3_FIFO_EMPTY = 662 -PH_SC5_PA3_FIFO_FULL = 663 -PH_SC5_PA3_NULL_WE = 664 -PH_SC5_PA3_EVENT_WE = 665 -PH_SC5_PA3_FPOV_WE = 666 -PH_SC5_PA3_LPOV_WE = 667 -PH_SC5_PA3_EOP_WE = 668 -PH_SC5_PA3_DATA_FIFO_EOP_RD = 669 -PH_SC5_PA3_EOPG_WE = 670 -PH_SC5_PA3_DEALLOC_4_0_RD = 671 -PH_SC5_PA4_DATA_FIFO_RD = 672 -PH_SC5_PA4_DATA_FIFO_WE = 673 -PH_SC5_PA4_FIFO_EMPTY = 674 -PH_SC5_PA4_FIFO_FULL = 675 -PH_SC5_PA4_NULL_WE = 676 -PH_SC5_PA4_EVENT_WE = 677 -PH_SC5_PA4_FPOV_WE = 678 -PH_SC5_PA4_LPOV_WE = 679 -PH_SC5_PA4_EOP_WE = 680 -PH_SC5_PA4_DATA_FIFO_EOP_RD = 681 -PH_SC5_PA4_EOPG_WE = 682 -PH_SC5_PA4_DEALLOC_4_0_RD = 683 -PH_SC5_PA5_DATA_FIFO_RD = 684 -PH_SC5_PA5_DATA_FIFO_WE = 685 -PH_SC5_PA5_FIFO_EMPTY = 686 -PH_SC5_PA5_FIFO_FULL = 687 -PH_SC5_PA5_NULL_WE = 688 -PH_SC5_PA5_EVENT_WE = 689 -PH_SC5_PA5_FPOV_WE = 690 -PH_SC5_PA5_LPOV_WE = 691 -PH_SC5_PA5_EOP_WE = 692 -PH_SC5_PA5_DATA_FIFO_EOP_RD = 693 -PH_SC5_PA5_EOPG_WE = 694 -PH_SC5_PA5_DEALLOC_4_0_RD = 695 -PH_SC5_PA6_DATA_FIFO_RD = 696 -PH_SC5_PA6_DATA_FIFO_WE = 697 -PH_SC5_PA6_FIFO_EMPTY = 698 -PH_SC5_PA6_FIFO_FULL = 699 -PH_SC5_PA6_NULL_WE = 700 -PH_SC5_PA6_EVENT_WE = 701 -PH_SC5_PA6_FPOV_WE = 702 -PH_SC5_PA6_LPOV_WE = 703 -PH_SC5_PA6_EOP_WE = 704 -PH_SC5_PA6_DATA_FIFO_EOP_RD = 705 -PH_SC5_PA6_EOPG_WE = 706 -PH_SC5_PA6_DEALLOC_4_0_RD = 707 -PH_SC5_PA7_DATA_FIFO_RD = 708 -PH_SC5_PA7_DATA_FIFO_WE = 709 -PH_SC5_PA7_FIFO_EMPTY = 710 -PH_SC5_PA7_FIFO_FULL = 711 -PH_SC5_PA7_NULL_WE = 712 -PH_SC5_PA7_EVENT_WE = 713 -PH_SC5_PA7_FPOV_WE = 714 -PH_SC5_PA7_LPOV_WE = 715 -PH_SC5_PA7_EOP_WE = 716 -PH_SC5_PA7_DATA_FIFO_EOP_RD = 717 -PH_SC5_PA7_EOPG_WE = 718 -PH_SC5_PA7_DEALLOC_4_0_RD = 719 -PH_SC6_SRPS_WINDOW_VALID = 720 -PH_SC6_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 721 -PH_SC6_ARB_XFC_ONLY_PRIM_CYCLES = 722 -PH_SC6_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 723 -PH_SC6_ARB_STALLED_FROM_BELOW = 724 -PH_SC6_ARB_STARVED_FROM_ABOVE = 725 -PH_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 726 -PH_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 727 -PH_SC6_ARB_BUSY = 728 -PH_SC6_ARB_PA_BUSY_SOP = 729 -PH_SC6_ARB_EOP_POP_SYNC_POP = 730 -PH_SC6_ARB_EVENT_SYNC_POP = 731 -PH_SC6_PS_ENG_MULTICYCLE_BUBBLE = 732 -PH_SC6_EOP_SYNC_WINDOW = 733 -PH_SC6_BUSY_PROCESSING_MULTICYCLE_PRIM = 734 -PH_SC6_BUSY_CNT_NOT_ZERO = 735 -PH_SC6_SEND = 736 -PH_SC6_CREDIT_AT_ZERO_WITH_PENDING_SEND = 737 -PH_SC6_CREDIT_AT_MAX = 738 -PH_SC6_CREDIT_AT_MAX_NO_PENDING_SEND = 739 -PH_SC6_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 740 -PH_SC6_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 741 -PH_SC6_GFX_PIPE0_TO_1_TRANSITION = 742 -PH_SC6_GFX_PIPE1_TO_0_TRANSITION = 743 -PH_SC6_PA0_DATA_FIFO_RD = 744 -PH_SC6_PA0_DATA_FIFO_WE = 745 -PH_SC6_PA0_FIFO_EMPTY = 746 -PH_SC6_PA0_FIFO_FULL = 747 -PH_SC6_PA0_NULL_WE = 748 -PH_SC6_PA0_EVENT_WE = 749 -PH_SC6_PA0_FPOV_WE = 750 -PH_SC6_PA0_LPOV_WE = 751 -PH_SC6_PA0_EOP_WE = 752 -PH_SC6_PA0_DATA_FIFO_EOP_RD = 753 -PH_SC6_PA0_EOPG_WE = 754 -PH_SC6_PA0_DEALLOC_4_0_RD = 755 -PH_SC6_PA1_DATA_FIFO_RD = 756 -PH_SC6_PA1_DATA_FIFO_WE = 757 -PH_SC6_PA1_FIFO_EMPTY = 758 -PH_SC6_PA1_FIFO_FULL = 759 -PH_SC6_PA1_NULL_WE = 760 -PH_SC6_PA1_EVENT_WE = 761 -PH_SC6_PA1_FPOV_WE = 762 -PH_SC6_PA1_LPOV_WE = 763 -PH_SC6_PA1_EOP_WE = 764 -PH_SC6_PA1_DATA_FIFO_EOP_RD = 765 -PH_SC6_PA1_EOPG_WE = 766 -PH_SC6_PA1_DEALLOC_4_0_RD = 767 -PH_SC6_PA2_DATA_FIFO_RD = 768 -PH_SC6_PA2_DATA_FIFO_WE = 769 -PH_SC6_PA2_FIFO_EMPTY = 770 -PH_SC6_PA2_FIFO_FULL = 771 -PH_SC6_PA2_NULL_WE = 772 -PH_SC6_PA2_EVENT_WE = 773 -PH_SC6_PA2_FPOV_WE = 774 -PH_SC6_PA2_LPOV_WE = 775 -PH_SC6_PA2_EOP_WE = 776 -PH_SC6_PA2_DATA_FIFO_EOP_RD = 777 -PH_SC6_PA2_EOPG_WE = 778 -PH_SC6_PA2_DEALLOC_4_0_RD = 779 -PH_SC6_PA3_DATA_FIFO_RD = 780 -PH_SC6_PA3_DATA_FIFO_WE = 781 -PH_SC6_PA3_FIFO_EMPTY = 782 -PH_SC6_PA3_FIFO_FULL = 783 -PH_SC6_PA3_NULL_WE = 784 -PH_SC6_PA3_EVENT_WE = 785 -PH_SC6_PA3_FPOV_WE = 786 -PH_SC6_PA3_LPOV_WE = 787 -PH_SC6_PA3_EOP_WE = 788 -PH_SC6_PA3_DATA_FIFO_EOP_RD = 789 -PH_SC6_PA3_EOPG_WE = 790 -PH_SC6_PA3_DEALLOC_4_0_RD = 791 -PH_SC6_PA4_DATA_FIFO_RD = 792 -PH_SC6_PA4_DATA_FIFO_WE = 793 -PH_SC6_PA4_FIFO_EMPTY = 794 -PH_SC6_PA4_FIFO_FULL = 795 -PH_SC6_PA4_NULL_WE = 796 -PH_SC6_PA4_EVENT_WE = 797 -PH_SC6_PA4_FPOV_WE = 798 -PH_SC6_PA4_LPOV_WE = 799 -PH_SC6_PA4_EOP_WE = 800 -PH_SC6_PA4_DATA_FIFO_EOP_RD = 801 -PH_SC6_PA4_EOPG_WE = 802 -PH_SC6_PA4_DEALLOC_4_0_RD = 803 -PH_SC6_PA5_DATA_FIFO_RD = 804 -PH_SC6_PA5_DATA_FIFO_WE = 805 -PH_SC6_PA5_FIFO_EMPTY = 806 -PH_SC6_PA5_FIFO_FULL = 807 -PH_SC6_PA5_NULL_WE = 808 -PH_SC6_PA5_EVENT_WE = 809 -PH_SC6_PA5_FPOV_WE = 810 -PH_SC6_PA5_LPOV_WE = 811 -PH_SC6_PA5_EOP_WE = 812 -PH_SC6_PA5_DATA_FIFO_EOP_RD = 813 -PH_SC6_PA5_EOPG_WE = 814 -PH_SC6_PA5_DEALLOC_4_0_RD = 815 -PH_SC6_PA6_DATA_FIFO_RD = 816 -PH_SC6_PA6_DATA_FIFO_WE = 817 -PH_SC6_PA6_FIFO_EMPTY = 818 -PH_SC6_PA6_FIFO_FULL = 819 -PH_SC6_PA6_NULL_WE = 820 -PH_SC6_PA6_EVENT_WE = 821 -PH_SC6_PA6_FPOV_WE = 822 -PH_SC6_PA6_LPOV_WE = 823 -PH_SC6_PA6_EOP_WE = 824 -PH_SC6_PA6_DATA_FIFO_EOP_RD = 825 -PH_SC6_PA6_EOPG_WE = 826 -PH_SC6_PA6_DEALLOC_4_0_RD = 827 -PH_SC6_PA7_DATA_FIFO_RD = 828 -PH_SC6_PA7_DATA_FIFO_WE = 829 -PH_SC6_PA7_FIFO_EMPTY = 830 -PH_SC6_PA7_FIFO_FULL = 831 -PH_SC6_PA7_NULL_WE = 832 -PH_SC6_PA7_EVENT_WE = 833 -PH_SC6_PA7_FPOV_WE = 834 -PH_SC6_PA7_LPOV_WE = 835 -PH_SC6_PA7_EOP_WE = 836 -PH_SC6_PA7_DATA_FIFO_EOP_RD = 837 -PH_SC6_PA7_EOPG_WE = 838 -PH_SC6_PA7_DEALLOC_4_0_RD = 839 -PH_SC7_SRPS_WINDOW_VALID = 840 -PH_SC7_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 841 -PH_SC7_ARB_XFC_ONLY_PRIM_CYCLES = 842 -PH_SC7_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 843 -PH_SC7_ARB_STALLED_FROM_BELOW = 844 -PH_SC7_ARB_STARVED_FROM_ABOVE = 845 -PH_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 846 -PH_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 847 -PH_SC7_ARB_BUSY = 848 -PH_SC7_ARB_PA_BUSY_SOP = 849 -PH_SC7_ARB_EOP_POP_SYNC_POP = 850 -PH_SC7_ARB_EVENT_SYNC_POP = 851 -PH_SC7_PS_ENG_MULTICYCLE_BUBBLE = 852 -PH_SC7_EOP_SYNC_WINDOW = 853 -PH_SC7_BUSY_PROCESSING_MULTICYCLE_PRIM = 854 -PH_SC7_BUSY_CNT_NOT_ZERO = 855 -PH_SC7_SEND = 856 -PH_SC7_CREDIT_AT_ZERO_WITH_PENDING_SEND = 857 -PH_SC7_CREDIT_AT_MAX = 858 -PH_SC7_CREDIT_AT_MAX_NO_PENDING_SEND = 859 -PH_SC7_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 860 -PH_SC7_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 861 -PH_SC7_GFX_PIPE0_TO_1_TRANSITION = 862 -PH_SC7_GFX_PIPE1_TO_0_TRANSITION = 863 -PH_SC7_PA0_DATA_FIFO_RD = 864 -PH_SC7_PA0_DATA_FIFO_WE = 865 -PH_SC7_PA0_FIFO_EMPTY = 866 -PH_SC7_PA0_FIFO_FULL = 867 -PH_SC7_PA0_NULL_WE = 868 -PH_SC7_PA0_EVENT_WE = 869 -PH_SC7_PA0_FPOV_WE = 870 -PH_SC7_PA0_LPOV_WE = 871 -PH_SC7_PA0_EOP_WE = 872 -PH_SC7_PA0_DATA_FIFO_EOP_RD = 873 -PH_SC7_PA0_EOPG_WE = 874 -PH_SC7_PA0_DEALLOC_4_0_RD = 875 -PH_SC7_PA1_DATA_FIFO_RD = 876 -PH_SC7_PA1_DATA_FIFO_WE = 877 -PH_SC7_PA1_FIFO_EMPTY = 878 -PH_SC7_PA1_FIFO_FULL = 879 -PH_SC7_PA1_NULL_WE = 880 -PH_SC7_PA1_EVENT_WE = 881 -PH_SC7_PA1_FPOV_WE = 882 -PH_SC7_PA1_LPOV_WE = 883 -PH_SC7_PA1_EOP_WE = 884 -PH_SC7_PA1_DATA_FIFO_EOP_RD = 885 -PH_SC7_PA1_EOPG_WE = 886 -PH_SC7_PA1_DEALLOC_4_0_RD = 887 -PH_SC7_PA2_DATA_FIFO_RD = 888 -PH_SC7_PA2_DATA_FIFO_WE = 889 -PH_SC7_PA2_FIFO_EMPTY = 890 -PH_SC7_PA2_FIFO_FULL = 891 -PH_SC7_PA2_NULL_WE = 892 -PH_SC7_PA2_EVENT_WE = 893 -PH_SC7_PA2_FPOV_WE = 894 -PH_SC7_PA2_LPOV_WE = 895 -PH_SC7_PA2_EOP_WE = 896 -PH_SC7_PA2_DATA_FIFO_EOP_RD = 897 -PH_SC7_PA2_EOPG_WE = 898 -PH_SC7_PA2_DEALLOC_4_0_RD = 899 -PH_SC7_PA3_DATA_FIFO_RD = 900 -PH_SC7_PA3_DATA_FIFO_WE = 901 -PH_SC7_PA3_FIFO_EMPTY = 902 -PH_SC7_PA3_FIFO_FULL = 903 -PH_SC7_PA3_NULL_WE = 904 -PH_SC7_PA3_EVENT_WE = 905 -PH_SC7_PA3_FPOV_WE = 906 -PH_SC7_PA3_LPOV_WE = 907 -PH_SC7_PA3_EOP_WE = 908 -PH_SC7_PA3_DATA_FIFO_EOP_RD = 909 -PH_SC7_PA3_EOPG_WE = 910 -PH_SC7_PA3_DEALLOC_4_0_RD = 911 -PH_SC7_PA4_DATA_FIFO_RD = 912 -PH_SC7_PA4_DATA_FIFO_WE = 913 -PH_SC7_PA4_FIFO_EMPTY = 914 -PH_SC7_PA4_FIFO_FULL = 915 -PH_SC7_PA4_NULL_WE = 916 -PH_SC7_PA4_EVENT_WE = 917 -PH_SC7_PA4_FPOV_WE = 918 -PH_SC7_PA4_LPOV_WE = 919 -PH_SC7_PA4_EOP_WE = 920 -PH_SC7_PA4_DATA_FIFO_EOP_RD = 921 -PH_SC7_PA4_EOPG_WE = 922 -PH_SC7_PA4_DEALLOC_4_0_RD = 923 -PH_SC7_PA5_DATA_FIFO_RD = 924 -PH_SC7_PA5_DATA_FIFO_WE = 925 -PH_SC7_PA5_FIFO_EMPTY = 926 -PH_SC7_PA5_FIFO_FULL = 927 -PH_SC7_PA5_NULL_WE = 928 -PH_SC7_PA5_EVENT_WE = 929 -PH_SC7_PA5_FPOV_WE = 930 -PH_SC7_PA5_LPOV_WE = 931 -PH_SC7_PA5_EOP_WE = 932 -PH_SC7_PA5_DATA_FIFO_EOP_RD = 933 -PH_SC7_PA5_EOPG_WE = 934 -PH_SC7_PA5_DEALLOC_4_0_RD = 935 -PH_SC7_PA6_DATA_FIFO_RD = 936 -PH_SC7_PA6_DATA_FIFO_WE = 937 -PH_SC7_PA6_FIFO_EMPTY = 938 -PH_SC7_PA6_FIFO_FULL = 939 -PH_SC7_PA6_NULL_WE = 940 -PH_SC7_PA6_EVENT_WE = 941 -PH_SC7_PA6_FPOV_WE = 942 -PH_SC7_PA6_LPOV_WE = 943 -PH_SC7_PA6_EOP_WE = 944 -PH_SC7_PA6_DATA_FIFO_EOP_RD = 945 -PH_SC7_PA6_EOPG_WE = 946 -PH_SC7_PA6_DEALLOC_4_0_RD = 947 -PH_SC7_PA7_DATA_FIFO_RD = 948 -PH_SC7_PA7_DATA_FIFO_WE = 949 -PH_SC7_PA7_FIFO_EMPTY = 950 -PH_SC7_PA7_FIFO_FULL = 951 -PH_SC7_PA7_NULL_WE = 952 -PH_SC7_PA7_EVENT_WE = 953 -PH_SC7_PA7_FPOV_WE = 954 -PH_SC7_PA7_LPOV_WE = 955 -PH_SC7_PA7_EOP_WE = 956 -PH_SC7_PA7_DATA_FIFO_EOP_RD = 957 -PH_SC7_PA7_EOPG_WE = 958 -PH_SC7_PA7_DEALLOC_4_0_RD = 959 -PH_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SU_PERFCNT_SEL' -SU_PERFCNT_SEL__enumvalues = { - 0: 'PERF_PAPC_PASX_REQ', - 1: 'PERF_PAPC_PASX_DISABLE_PIPE', - 2: 'PERF_PAPC_PASX_FIRST_VECTOR', - 3: 'PERF_PAPC_PASX_SECOND_VECTOR', - 4: 'PERF_PAPC_PASX_FIRST_DEAD', - 5: 'PERF_PAPC_PASX_SECOND_DEAD', - 6: 'PERF_PAPC_PASX_VTX_KILL_DISCARD', - 7: 'PERF_PAPC_PASX_VTX_NAN_DISCARD', - 8: 'PERF_PAPC_PA_INPUT_PRIM', - 9: 'PERF_PAPC_PA_INPUT_NULL_PRIM', - 10: 'PERF_PAPC_PA_INPUT_EVENT_FLAG', - 11: 'PERF_PAPC_PA_INPUT_FIRST_PRIM_SLOT', - 12: 'PERF_PAPC_PA_INPUT_END_OF_PACKET', - 13: 'PERF_PAPC_PA_INPUT_EXTENDED_EVENT', - 14: 'PERF_PAPC_CLPR_CULL_PRIM', - 15: 'PERF_PAPC_CLPR_VVUCP_CULL_PRIM', - 16: 'PERF_PAPC_CLPR_VV_CULL_PRIM', - 17: 'PERF_PAPC_CLPR_UCP_CULL_PRIM', - 18: 'PERF_PAPC_CLPR_VTX_KILL_CULL_PRIM', - 19: 'PERF_PAPC_CLPR_VTX_NAN_CULL_PRIM', - 20: 'PERF_PAPC_CLPR_CULL_TO_NULL_PRIM', - 21: 'PERF_PAPC_CLPR_VVUCP_CLIP_PRIM', - 22: 'PERF_PAPC_CLPR_VV_CLIP_PRIM', - 23: 'PERF_PAPC_CLPR_UCP_CLIP_PRIM', - 24: 'PERF_PAPC_CLPR_POINT_CLIP_CANDIDATE', - 25: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_1', - 26: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_2', - 27: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_3', - 28: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_4', - 29: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_5_8', - 30: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_9_12', - 31: 'PERF_PAPC_CLPR_CLIP_PLANE_NEAR', - 32: 'PERF_PAPC_CLPR_CLIP_PLANE_FAR', - 33: 'PERF_PAPC_CLPR_CLIP_PLANE_LEFT', - 34: 'PERF_PAPC_CLPR_CLIP_PLANE_RIGHT', - 35: 'PERF_PAPC_CLPR_CLIP_PLANE_TOP', - 36: 'PERF_PAPC_CLPR_CLIP_PLANE_BOTTOM', - 37: 'PERF_PAPC_CLPR_GSC_KILL_CULL_PRIM', - 38: 'PERF_PAPC_CLPR_RASTER_KILL_CULL_PRIM', - 39: 'PERF_PAPC_CLSM_NULL_PRIM', - 40: 'PERF_PAPC_CLSM_TOTALLY_VISIBLE_PRIM', - 41: 'PERF_PAPC_CLSM_CULL_TO_NULL_PRIM', - 42: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_1', - 43: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_2', - 44: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_3', - 45: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_4', - 46: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_5_8', - 47: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_9_13', - 48: 'PERF_PAPC_CLIPGA_VTE_KILL_PRIM', - 49: 'PERF_PAPC_SU_INPUT_PRIM', - 50: 'PERF_PAPC_SU_INPUT_CLIP_PRIM', - 51: 'PERF_PAPC_SU_INPUT_NULL_PRIM', - 52: 'PERF_PAPC_SU_INPUT_PRIM_DUAL', - 53: 'PERF_PAPC_SU_INPUT_CLIP_PRIM_DUAL', - 54: 'PERF_PAPC_SU_ZERO_AREA_CULL_PRIM', - 55: 'PERF_PAPC_SU_BACK_FACE_CULL_PRIM', - 56: 'PERF_PAPC_SU_FRONT_FACE_CULL_PRIM', - 57: 'PERF_PAPC_SU_POLYMODE_FACE_CULL', - 58: 'PERF_PAPC_SU_POLYMODE_BACK_CULL', - 59: 'PERF_PAPC_SU_POLYMODE_FRONT_CULL', - 60: 'PERF_PAPC_SU_POLYMODE_INVALID_FILL', - 61: 'PERF_PAPC_SU_OUTPUT_PRIM', - 62: 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM', - 63: 'PERF_PAPC_SU_OUTPUT_NULL_PRIM', - 64: 'PERF_PAPC_SU_OUTPUT_EVENT_FLAG', - 65: 'PERF_PAPC_SU_OUTPUT_FIRST_PRIM_SLOT', - 66: 'PERF_PAPC_SU_OUTPUT_END_OF_PACKET', - 67: 'PERF_PAPC_SU_OUTPUT_POLYMODE_FACE', - 68: 'PERF_PAPC_SU_OUTPUT_POLYMODE_BACK', - 69: 'PERF_PAPC_SU_OUTPUT_POLYMODE_FRONT', - 70: 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FACE', - 71: 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_BACK', - 72: 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FRONT', - 73: 'PERF_PAPC_SU_OUTPUT_PRIM_DUAL', - 74: 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM_DUAL', - 75: 'PERF_PAPC_SU_OUTPUT_POLYMODE_DUAL', - 76: 'PERF_PAPC_SU_OUTPUT_CLIP_POLYMODE_DUAL', - 77: 'PERF_PAPC_PASX_REQ_IDLE', - 78: 'PERF_PAPC_PASX_REQ_BUSY', - 79: 'PERF_PAPC_PASX_REQ_STALLED', - 80: 'PERF_PAPC_PASX_REC_IDLE', - 81: 'PERF_PAPC_PASX_REC_BUSY', - 82: 'PERF_PAPC_PASX_REC_STARVED_SX', - 83: 'PERF_PAPC_PASX_REC_STALLED', - 84: 'PERF_PAPC_PASX_REC_STALLED_POS_MEM', - 85: 'PERF_PAPC_PASX_REC_STALLED_CCGSM_IN', - 86: 'PERF_PAPC_CCGSM_IDLE', - 87: 'PERF_PAPC_CCGSM_BUSY', - 88: 'PERF_PAPC_CCGSM_STALLED', - 89: 'PERF_PAPC_CLPRIM_IDLE', - 90: 'PERF_PAPC_CLPRIM_BUSY', - 91: 'PERF_PAPC_CLPRIM_STALLED', - 92: 'PERF_PAPC_CLPRIM_STARVED_CCGSM', - 93: 'PERF_PAPC_CLIPSM_IDLE', - 94: 'PERF_PAPC_CLIPSM_BUSY', - 95: 'PERF_PAPC_CLIPSM_WAIT_CLIP_VERT_ENGH', - 96: 'PERF_PAPC_CLIPSM_WAIT_HIGH_PRI_SEQ', - 97: 'PERF_PAPC_CLIPSM_WAIT_CLIPGA', - 98: 'PERF_PAPC_CLIPSM_WAIT_AVAIL_VTE_CLIP', - 99: 'PERF_PAPC_CLIPSM_WAIT_CLIP_OUTSM', - 100: 'PERF_PAPC_CLIPGA_IDLE', - 101: 'PERF_PAPC_CLIPGA_BUSY', - 102: 'PERF_PAPC_CLIPGA_STARVED_VTE_CLIP', - 103: 'PERF_PAPC_CLIPGA_STALLED', - 104: 'PERF_PAPC_CLIP_IDLE', - 105: 'PERF_PAPC_CLIP_BUSY', - 106: 'PERF_PAPC_SU_IDLE', - 107: 'PERF_PAPC_SU_BUSY', - 108: 'PERF_PAPC_SU_STARVED_CLIP', - 109: 'PERF_PAPC_SU_STALLED_SC', - 110: 'PERF_PAPC_CL_DYN_SCLK_VLD', - 111: 'PERF_PAPC_SU_DYN_SCLK_VLD', - 112: 'PERF_PAPC_PA_REG_SCLK_VLD', - 113: 'PERF_PAPC_SU_MULTI_GPU_PRIM_FILTER_CULL', - 114: 'PERF_PAPC_PASX_SE0_REQ', - 115: 'PERF_PAPC_PASX_SE1_REQ', - 116: 'PERF_PAPC_PASX_SE0_FIRST_VECTOR', - 117: 'PERF_PAPC_PASX_SE0_SECOND_VECTOR', - 118: 'PERF_PAPC_PASX_SE1_FIRST_VECTOR', - 119: 'PERF_PAPC_PASX_SE1_SECOND_VECTOR', - 120: 'PERF_PAPC_SU_SE0_PRIM_FILTER_CULL', - 121: 'PERF_PAPC_SU_SE1_PRIM_FILTER_CULL', - 122: 'PERF_PAPC_SU_SE01_PRIM_FILTER_CULL', - 123: 'PERF_PAPC_SU_SE0_OUTPUT_PRIM', - 124: 'PERF_PAPC_SU_SE1_OUTPUT_PRIM', - 125: 'PERF_PAPC_SU_SE01_OUTPUT_PRIM', - 126: 'PERF_PAPC_SU_SE0_OUTPUT_NULL_PRIM', - 127: 'PERF_PAPC_SU_SE1_OUTPUT_NULL_PRIM', - 128: 'PERF_PAPC_SU_SE01_OUTPUT_NULL_PRIM', - 129: 'PERF_PAPC_SU_SE0_OUTPUT_FIRST_PRIM_SLOT', - 130: 'PERF_PAPC_SU_SE1_OUTPUT_FIRST_PRIM_SLOT', - 131: 'PERF_PAPC_SU_SE0_STALLED_SC', - 132: 'PERF_PAPC_SU_SE1_STALLED_SC', - 133: 'PERF_PAPC_SU_SE01_STALLED_SC', - 134: 'PERF_PAPC_CLSM_CLIPPING_PRIM', - 135: 'PERF_PAPC_SU_CULLED_PRIM', - 136: 'PERF_PAPC_SU_OUTPUT_EOPG', - 137: 'PERF_PAPC_SU_SE2_PRIM_FILTER_CULL', - 138: 'PERF_PAPC_SU_SE3_PRIM_FILTER_CULL', - 139: 'PERF_PAPC_SU_SE2_OUTPUT_PRIM', - 140: 'PERF_PAPC_SU_SE3_OUTPUT_PRIM', - 141: 'PERF_PAPC_SU_SE2_OUTPUT_NULL_PRIM', - 142: 'PERF_PAPC_SU_SE3_OUTPUT_NULL_PRIM', - 143: 'PERF_PAPC_SU_SE0_OUTPUT_END_OF_PACKET', - 144: 'PERF_PAPC_SU_SE1_OUTPUT_END_OF_PACKET', - 145: 'PERF_PAPC_SU_SE2_OUTPUT_END_OF_PACKET', - 146: 'PERF_PAPC_SU_SE3_OUTPUT_END_OF_PACKET', - 147: 'PERF_PAPC_SU_SE0_OUTPUT_EOPG', - 148: 'PERF_PAPC_SU_SE1_OUTPUT_EOPG', - 149: 'PERF_PAPC_SU_SE2_OUTPUT_EOPG', - 150: 'PERF_PAPC_SU_SE3_OUTPUT_EOPG', - 151: 'PERF_PAPC_SU_SE2_STALLED_SC', - 152: 'PERF_PAPC_SU_SE3_STALLED_SC', - 153: 'PERF_SU_SMALL_PRIM_FILTER_CULL_CNT', - 154: 'PERF_SMALL_PRIM_CULL_PRIM_1X1', - 155: 'PERF_SMALL_PRIM_CULL_PRIM_2X1', - 156: 'PERF_SMALL_PRIM_CULL_PRIM_1X2', - 157: 'PERF_SMALL_PRIM_CULL_PRIM_2X2', - 158: 'PERF_SMALL_PRIM_CULL_PRIM_3X1', - 159: 'PERF_SMALL_PRIM_CULL_PRIM_1X3', - 160: 'PERF_SMALL_PRIM_CULL_PRIM_3X2', - 161: 'PERF_SMALL_PRIM_CULL_PRIM_2X3', - 162: 'PERF_SMALL_PRIM_CULL_PRIM_NX1', - 163: 'PERF_SMALL_PRIM_CULL_PRIM_1XN', - 164: 'PERF_SMALL_PRIM_CULL_PRIM_NX2', - 165: 'PERF_SMALL_PRIM_CULL_PRIM_2XN', - 166: 'PERF_SMALL_PRIM_CULL_PRIM_FULL_RES_EVENT', - 167: 'PERF_SMALL_PRIM_CULL_PRIM_HALF_RES_EVENT', - 168: 'PERF_SMALL_PRIM_CULL_PRIM_QUARTER_RES_EVENT', - 169: 'PERF_SC0_QUALIFIED_SEND_BUSY_EVENT', - 170: 'PERF_SC0_QUALIFIED_SEND_NOT_BUSY_EVENT', - 171: 'PERF_SC1_QUALIFIED_SEND_BUSY_EVENT', - 172: 'PERF_SC1_QUALIFIED_SEND_NOT_BUSY_EVENT', - 173: 'PERF_SC2_QUALIFIED_SEND_BUSY_EVENT', - 174: 'PERF_SC2_QUALIFIED_SEND_NOT_BUSY_EVENT', - 175: 'PERF_SC3_QUALIFIED_SEND_BUSY_EVENT', - 176: 'PERF_SC3_QUALIFIED_SEND_NOT_BUSY_EVENT', - 177: 'PERF_UTC_SIDEBAND_DRIVER_WAITING_ON_UTCL1', - 178: 'PERF_UTC_SIDEBAND_DRIVER_STALLING_CLIENT', - 179: 'PERF_UTC_SIDEBAND_DRIVER_BUSY', - 180: 'PERF_UTC_INDEX_DRIVER_WAITING_ON_UTCL1', - 181: 'PERF_UTC_INDEX_DRIVER_STALLING_CLIENT', - 182: 'PERF_UTC_INDEX_DRIVER_BUSY', - 183: 'PERF_UTC_POSITION_DRIVER_WAITING_ON_UTCL1', - 184: 'PERF_UTC_POSITION_DRIVER_STALLING_CLIENT', - 185: 'PERF_UTC_POSITION_DRIVER_BUSY', - 186: 'PERF_UTC_SIDEBAND_RECEIVER_STALLING_UTCL1', - 187: 'PERF_UTC_SIDEBAND_RECEIVER_STALLED_BY_ARBITER', - 188: 'PERF_UTC_SIDEBAND_RECEIVER_BUSY', - 189: 'PERF_UTC_INDEX_RECEIVER_STALLING_UTCL1', - 190: 'PERF_UTC_INDEX_RECEIVER_STALLED_BY_ARBITER', - 191: 'PERF_UTC_INDEX_RECEIVER_BUSY', - 192: 'PERF_UTC_POSITION_RECEIVER_STALLING_UTCL1', - 193: 'PERF_UTC_POSITION_RECEIVER_STALLED_BY_ARBITER', - 194: 'PERF_UTC_POSITION_RECEIVER_BUSY', - 195: 'PERF_TC_ARBITER_WAITING_FOR_TC_INTERFACE', - 196: 'PERF_TCIF_STALLING_CLIENT_NO_CREDITS', - 197: 'PERF_TCIF_BUSY', - 198: 'PERF_TCIF_SIDEBAND_RDREQ', - 199: 'PERF_TCIF_INDEX_RDREQ', - 200: 'PERF_TCIF_POSITION_RDREQ', - 201: 'PERF_SIDEBAND_WAITING_ON_UTCL1', - 202: 'PERF_SIDEBAND_WAITING_ON_FULL_SIDEBAND_MEMORY', - 203: 'PERF_WRITING_TO_SIDEBAND_MEMORY', - 204: 'PERF_SIDEBAND_EXPECTING_1_POSSIBLE_VALID_DWORD', - 205: 'PERF_SIDEBAND_EXPECTING_2_TO_15_POSSIBLE_VALID_DWORD', - 206: 'PERF_SIDEBAND_EXPECTING_16_POSSIBLE_VALID_DWORD', - 207: 'PERF_SIDEBAND_WAITING_ON_RETURNED_DATA', - 208: 'PERF_SIDEBAND_POP_BIT_FIFO_FULL', - 209: 'PERF_SIDEBAND_FIFO_VMID_FIFO_FULL', - 210: 'PERF_SIDEBAND_INVALID_REFETCH', - 211: 'PERF_SIDEBAND_QUALIFIED_BUSY', - 212: 'PERF_SIDEBAND_QUALIFIED_STARVED', - 213: 'PERF_SIDEBAND_0_VALID_DWORDS_RECEIVED_', - 214: 'PERF_SIDEBAND_1_TO_7_VALID_DWORDS_RECEIVED_', - 215: 'PERF_SIDEBAND_8_TO_15_VALID_DWORDS_RECEIVED_', - 216: 'PERF_SIDEBAND_16_VALID_DWORDS_RECEIVED_', - 217: 'PERF_INDEX_REQUEST_WAITING_ON_TOKENS', - 218: 'PERF_INDEX_REQUEST_WAITING_ON_FULL_RECEIVE_FIFO', - 219: 'PERF_INDEX_REQUEST_QUALIFIED_BUSY', - 220: 'PERF_INDEX_REQUEST_QUALIFIED_STARVED', - 221: 'PERF_INDEX_RECEIVE_WAITING_ON_RETURNED_CACHELINE', - 222: 'PERF_INDEX_RECEIVE_WAITING_ON_PRIM_INDICES_FIFO', - 223: 'PERF_INDEX_RECEIVE_PRIM_INDICES_FIFO_WRITE', - 224: 'PERF_INDEX_RECEIVE_QUALIFIED_BUSY', - 225: 'PERF_INDEX_RECEIVE_QUALIFIED_STARVED', - 226: 'PERF_INDEX_RECEIVE_0_VALID_DWORDS_THIS_CACHELINE', - 227: 'PERF_INDEX_RECEIVE_1_VALID_DWORDS_THIS_CACHELINE', - 228: 'PERF_INDEX_RECEIVE_2_VALID_DWORDS_THIS_CACHELINE', - 229: 'PERF_INDEX_RECEIVE_3_VALID_DWORDS_THIS_CACHELINE', - 230: 'PERF_INDEX_RECEIVE_4_VALID_DWORDS_THIS_CACHELINE', - 231: 'PERF_INDEX_RECEIVE_5_VALID_DWORDS_THIS_CACHELINE', - 232: 'PERF_INDEX_RECEIVE_6_VALID_DWORDS_THIS_CACHELINE', - 233: 'PERF_INDEX_RECEIVE_7_VALID_DWORDS_THIS_CACHELINE', - 234: 'PERF_INDEX_RECEIVE_8_VALID_DWORDS_THIS_CACHELINE', - 235: 'PERF_INDEX_RECEIVE_9_VALID_DWORDS_THIS_CACHELINE', - 236: 'PERF_INDEX_RECEIVE_10_VALID_DWORDS_THIS_CACHELINE', - 237: 'PERF_INDEX_RECEIVE_11_VALID_DWORDS_THIS_CACHELINE', - 238: 'PERF_INDEX_RECEIVE_12_VALID_DWORDS_THIS_CACHELINE', - 239: 'PERF_INDEX_RECEIVE_13_VALID_DWORDS_THIS_CACHELINE', - 240: 'PERF_INDEX_RECEIVE_14_VALID_DWORDS_THIS_CACHELINE', - 241: 'PERF_INDEX_RECEIVE_15_VALID_DWORDS_THIS_CACHELINE', - 242: 'PERF_INDEX_RECEIVE_16_VALID_DWORDS_THIS_CACHELINE', - 243: 'PERF_POS_REQ_STALLED_BY_FULL_FETCH_TO_PRIMIC_P_FIFO', - 244: 'PERF_POS_REQ_STALLED_BY_FULL_FETCH_TO_PRIMIC_S_FIFO', - 245: 'PERF_POS_REQ_STALLED_BY_FULL_POSREQ_TO_POSRTN_V_FIFO', - 246: 'PERF_POS_REQ_STALLED_BY_FULL_POSREQ_TO_POSRTN_S_FIFO', - 247: 'PERF_POS_REQ_STALLED_BY_FULL_PA_TO_WD_DEALLOC_INDEX_FIFO', - 248: 'PERF_POS_REQ_STALLED_BY_NO_TOKENS', - 249: 'PERF_POS_REQ_STARVED_BY_NO_PRIM', - 250: 'PERF_POS_REQ_STALLED_BY_UTCL1', - 251: 'PERF_POS_REQ_FETCH_TO_PRIMIC_P_FIFO_WRITE', - 252: 'PERF_POS_REQ_FETCH_TO_PRIMIC_P_FIFO_NO_WRITE', - 253: 'PERF_POS_REQ_QUALIFIED_BUSY', - 254: 'PERF_POS_REQ_QUALIFIED_STARVED', - 255: 'PERF_POS_REQ_REUSE_0_NEW_VERTS_THIS_PRIM', - 256: 'PERF_POS_REQ_REUSE_1_NEW_VERTS_THIS_PRIM', - 257: 'PERF_POS_REQ_REUSE_2_NEW_VERTS_THIS_PRIM', - 258: 'PERF_POS_REQ_REUSE_3_NEW_VERTS_THIS_PRIM', - 259: 'PERF_POS_RET_FULL_FETCH_TO_SXIF_FIFO', - 260: 'PERF_POS_RET_FULL_PA_TO_WD_DEALLOC_POSITION_FIFO', - 261: 'PERF_POS_RET_WAITING_ON_RETURNED_CACHELINE', - 262: 'PERF_POS_RET_FETCH_TO_SXIF_FIFO_WRITE', - 263: 'PERF_POS_RET_QUALIFIED_BUSY', - 264: 'PERF_POS_RET_QUALIFIED_STARVED', - 265: 'PERF_POS_RET_1_CACHELINE_POSITION_USED', - 266: 'PERF_POS_RET_2_CACHELINE_POSITION_USED', - 267: 'PERF_POS_RET_3_CACHELINE_POSITION_USED', - 268: 'PERF_POS_RET_4_CACHELINE_POSITION_USED', - 269: 'PERF_TC_INDEX_LATENCY_BIN0', - 270: 'PERF_TC_INDEX_LATENCY_BIN1', - 271: 'PERF_TC_INDEX_LATENCY_BIN2', - 272: 'PERF_TC_INDEX_LATENCY_BIN3', - 273: 'PERF_TC_INDEX_LATENCY_BIN4', - 274: 'PERF_TC_INDEX_LATENCY_BIN5', - 275: 'PERF_TC_INDEX_LATENCY_BIN6', - 276: 'PERF_TC_INDEX_LATENCY_BIN7', - 277: 'PERF_TC_INDEX_LATENCY_BIN8', - 278: 'PERF_TC_INDEX_LATENCY_BIN9', - 279: 'PERF_TC_INDEX_LATENCY_BIN10', - 280: 'PERF_TC_INDEX_LATENCY_BIN11', - 281: 'PERF_TC_INDEX_LATENCY_BIN12', - 282: 'PERF_TC_INDEX_LATENCY_BIN13', - 283: 'PERF_TC_INDEX_LATENCY_BIN14', - 284: 'PERF_TC_INDEX_LATENCY_BIN15', - 285: 'PERF_TC_POSITION_LATENCY_BIN0', - 286: 'PERF_TC_POSITION_LATENCY_BIN1', - 287: 'PERF_TC_POSITION_LATENCY_BIN2', - 288: 'PERF_TC_POSITION_LATENCY_BIN3', - 289: 'PERF_TC_POSITION_LATENCY_BIN4', - 290: 'PERF_TC_POSITION_LATENCY_BIN5', - 291: 'PERF_TC_POSITION_LATENCY_BIN6', - 292: 'PERF_TC_POSITION_LATENCY_BIN7', - 293: 'PERF_TC_POSITION_LATENCY_BIN8', - 294: 'PERF_TC_POSITION_LATENCY_BIN9', - 295: 'PERF_TC_POSITION_LATENCY_BIN10', - 296: 'PERF_TC_POSITION_LATENCY_BIN11', - 297: 'PERF_TC_POSITION_LATENCY_BIN12', - 298: 'PERF_TC_POSITION_LATENCY_BIN13', - 299: 'PERF_TC_POSITION_LATENCY_BIN14', - 300: 'PERF_TC_POSITION_LATENCY_BIN15', - 301: 'PERF_TC_STREAM0_DATA_AVAILABLE', - 302: 'PERF_TC_STREAM1_DATA_AVAILABLE', - 303: 'PERF_TC_STREAM2_DATA_AVAILABLE', - 304: 'PERF_PAWD_DEALLOC_FIFO_IS_FULL', - 305: 'PERF_PAWD_DEALLOC_WAITING_TO_BE_READ', - 306: 'PERF_SHOOTDOWN_WAIT_ON_UTCL1', - 307: 'PERF_SHOOTDOWN_WAIT_ON_UTC_SIDEBAND', - 308: 'PERF_SHOOTDOWN_WAIT_ON_UTC_INDEX', - 309: 'PERF_SHOOTDOWN_WAIT_ON_UTC_POSITION', - 310: 'PERF_SHOOTDOWN_WAIT_ALL_CLEAN', - 311: 'PERF_SHOOTDOWN_WAIT_DEASSERT', - 312: 'PERF_UTCL1_TRANSLATION_MISS_CLIENT0', - 313: 'PERF_UTCL1_TRANSLATION_MISS_CLIENT1', - 314: 'PERF_UTCL1_TRANSLATION_MISS_CLIENT2', - 315: 'PERF_UTCL1_PERMISSION_MISS_CLIENT0', - 316: 'PERF_UTCL1_PERMISSION_MISS_CLIENT1', - 317: 'PERF_UTCL1_PERMISSION_MISS_CLIENT2', - 318: 'PERF_UTCL1_TRANSLATION_HIT_CLIENT0', - 319: 'PERF_UTCL1_TRANSLATION_HIT_CLIENT1', - 320: 'PERF_UTCL1_TRANSLATION_HIT_CLIENT2', - 321: 'PERF_UTCL1_REQUEST_CLIENT0', - 322: 'PERF_UTCL1_REQUEST_CLIENT1', - 323: 'PERF_UTCL1_REQUEST_CLIENT2', - 324: 'PERF_UTCL1_STALL_MISSFIFO_FULL', - 325: 'PERF_UTCL1_STALL_INFLIGHT_MAX', - 326: 'PERF_UTCL1_STALL_LRU_INFLIGHT', - 327: 'PERF_UTCL1_STALL_MULTI_MISS', - 328: 'PERF_UTCL1_LFIFO_FULL', - 329: 'PERF_UTCL1_STALL_LFIFO_NOT_RES_CLIENT0', - 330: 'PERF_UTCL1_STALL_LFIFO_NOT_RES_CLIENT1', - 331: 'PERF_UTCL1_STALL_LFIFO_NOT_RES_CLIENT2', - 332: 'PERF_UTCL1_STALL_UTCL2_REQ_OUT_OF_CREDITS', - 333: 'PERF_UTCL1_UTCL2_REQ', - 334: 'PERF_UTCL1_UTCL2_RET', - 335: 'PERF_UTCL1_UTCL2_INFLIGHT', - 336: 'PERF_CLIENT_UTCL1_INFLIGHT', - 337: 'PERF_PA_SE0_OUTPUT_QUALIFIED_CLKEN_NOT_ASSERTED', - 338: 'PERF_PA_SE0_OUTPUT_QUALIFIED_CLKEN_ASSERTED_NO_SEND', - 339: 'PERF_PA_SE0_OUTPUT_QUALIFIED_CLKEN_ASSERTED_WITH_SEND', - 340: 'PERF_PA_SE1_OUTPUT_QUALIFIED_CLKEN_NOT_ASSERTED', - 341: 'PERF_PA_SE1_OUTPUT_QUALIFIED_CLKEN_ASSERTED_NO_SEND', - 342: 'PERF_PA_SE1_OUTPUT_QUALIFIED_CLKEN_ASSERTED_WITH_SEND', - 343: 'PERF_PA_SE2_OUTPUT_QUALIFIED_CLKEN_NOT_ASSERTED', - 344: 'PERF_PA_SE2_OUTPUT_QUALIFIED_CLKEN_ASSERTED_NO_SEND', - 345: 'PERF_PA_SE2_OUTPUT_QUALIFIED_CLKEN_ASSERTED_WITH_SEND', - 346: 'PERF_PA_SE3_OUTPUT_QUALIFIED_CLKEN_NOT_ASSERTED', - 347: 'PERF_PA_SE3_OUTPUT_QUALIFIED_CLKEN_ASSERTED_NO_SEND', - 348: 'PERF_PA_SE3_OUTPUT_QUALIFIED_CLKEN_ASSERTED_WITH_SEND', - 349: 'PERF_PA_VERTEX_FIFO_FULL', - 350: 'PERF_PA_PRIMIC_TO_CLPRIM_FIFO_FULL', - 351: 'PERF_PA_FETCH_TO_PRIMIC_P_FIFO_FULL', - 352: 'PERF_PA_FETCH_TO_SXIF_FIFO_FULL', - 355: 'ENGG_CSB_MACHINE_IS_STARVED', - 356: 'ENGG_CSB_MACHINE_STALLED_BY_CSB_MEMORY', - 357: 'ENGG_CSB_MACHINE_STALLED_BY_SPI', - 358: 'ENGG_CSB_GE_INPUT_FIFO_FULL', - 359: 'ENGG_CSB_SPI_INPUT_FIFO_FULL', - 360: 'ENGG_CSB_OBJECTID_INPUT_FIFO_FULL', - 361: 'ENGG_CSB_PRIM_COUNT_EQ0', - 362: 'ENGG_CSB_GE_SENDING_SUBGROUP', - 363: 'ENGG_CSB_DELAY_BIN00', - 364: 'ENGG_CSB_DELAY_BIN01', - 365: 'ENGG_CSB_DELAY_BIN02', - 366: 'ENGG_CSB_DELAY_BIN03', - 367: 'ENGG_CSB_DELAY_BIN04', - 368: 'ENGG_CSB_DELAY_BIN05', - 369: 'ENGG_CSB_DELAY_BIN06', - 370: 'ENGG_CSB_DELAY_BIN07', - 371: 'ENGG_CSB_DELAY_BIN08', - 372: 'ENGG_CSB_DELAY_BIN09', - 373: 'ENGG_CSB_DELAY_BIN10', - 374: 'ENGG_CSB_DELAY_BIN11', - 375: 'ENGG_CSB_DELAY_BIN12', - 376: 'ENGG_CSB_DELAY_BIN13', - 377: 'ENGG_CSB_DELAY_BIN14', - 378: 'ENGG_CSB_DELAY_BIN15', - 379: 'ENGG_CSB_SPI_DELAY_BIN00', - 380: 'ENGG_CSB_SPI_DELAY_BIN01', - 381: 'ENGG_CSB_SPI_DELAY_BIN02', - 382: 'ENGG_CSB_SPI_DELAY_BIN03', - 383: 'ENGG_CSB_SPI_DELAY_BIN04', - 384: 'ENGG_CSB_SPI_DELAY_BIN05', - 385: 'ENGG_CSB_SPI_DELAY_BIN06', - 386: 'ENGG_CSB_SPI_DELAY_BIN07', - 387: 'ENGG_CSB_SPI_DELAY_BIN08', - 388: 'ENGG_CSB_SPI_DELAY_BIN09', - 389: 'ENGG_CSB_SPI_DELAY_BIN10', - 390: 'ENGG_CSB_SPI_DELAY_BIN11', - 391: 'ENGG_CSB_SPI_DELAY_BIN12', - 392: 'ENGG_CSB_SPI_DELAY_BIN13', - 393: 'ENGG_CSB_SPI_DELAY_BIN14', - 394: 'ENGG_CSB_SPI_DELAY_BIN15', - 395: 'ENGG_INDEX_REQ_STARVED', - 396: 'ENGG_INDEX_REQ_IDLE_AND_STALLED_BY_REQ2RTN_FIFO_FULL', - 397: 'ENGG_INDEX_REQ_BUSY_AND_STALLED_BY_REQ2RTN_FIFO_FULL', - 398: 'ENGG_INDEX_REQ_STALLED_BY_SX_CREDITS', - 399: 'ENGG_INDEX_RET_REQ2RTN_FIFO_FULL', - 400: 'ENGG_INDEX_RET_REQ2RTN_FIFO_EMPTY', - 401: 'ENGG_INDEX_RET_SX_RECEIVE_FIFO_FULL', - 402: 'ENGG_INDEX_RET_SXRX_STARVED_BY_CSB', - 403: 'ENGG_INDEX_RET_SXRX_STARVED_BY_PRIMS', - 404: 'ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_CSB_FIFO', - 405: 'ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_FIFO', - 406: 'ENGG_INDEX_RET_SXRX_READING_EVENT', - 407: 'ENGG_INDEX_RET_SXRX_READING_NULL_SUBGROUP', - 408: 'ENGG_INDEX_RET_SXRX_READING_SUBGROUP_PRIMCOUNT_EQ0', - 409: 'ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_NOPL', - 410: 'ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_PL', - 411: 'ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_NOPL', - 412: 'ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_PL', - 413: 'ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS', - 414: 'ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS', - 415: 'ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS', - 416: 'ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_P_FIFO', - 417: 'ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_S_FIFO', - 418: 'ENGG_INDEX_PRIM_IF_STARVED_BY_NO_PRIM', - 419: 'ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_WRITE', - 420: 'ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_NO_WRITE', - 421: 'ENGG_INDEX_PRIM_IF_QUALIFIED_BUSY', - 422: 'ENGG_INDEX_PRIM_IF_QUALIFIED_STARVED', - 423: 'ENGG_INDEX_PRIM_IF_REUSE_0_NEW_VERTS_THIS_PRIM', - 424: 'ENGG_INDEX_PRIM_IF_REUSE_1_NEW_VERTS_THIS_PRIM', - 425: 'ENGG_INDEX_PRIM_IF_REUSE_2_NEW_VERTS_THIS_PRIM', - 426: 'ENGG_INDEX_PRIM_IF_REUSE_3_NEW_VERTS_THIS_PRIM', - 427: 'ENGG_POS_REQ_STARVED', - 428: 'ENGG_POS_REQ_STALLED_BY_FULL_CLIPV_FIFO', -} -PERF_PAPC_PASX_REQ = 0 -PERF_PAPC_PASX_DISABLE_PIPE = 1 -PERF_PAPC_PASX_FIRST_VECTOR = 2 -PERF_PAPC_PASX_SECOND_VECTOR = 3 -PERF_PAPC_PASX_FIRST_DEAD = 4 -PERF_PAPC_PASX_SECOND_DEAD = 5 -PERF_PAPC_PASX_VTX_KILL_DISCARD = 6 -PERF_PAPC_PASX_VTX_NAN_DISCARD = 7 -PERF_PAPC_PA_INPUT_PRIM = 8 -PERF_PAPC_PA_INPUT_NULL_PRIM = 9 -PERF_PAPC_PA_INPUT_EVENT_FLAG = 10 -PERF_PAPC_PA_INPUT_FIRST_PRIM_SLOT = 11 -PERF_PAPC_PA_INPUT_END_OF_PACKET = 12 -PERF_PAPC_PA_INPUT_EXTENDED_EVENT = 13 -PERF_PAPC_CLPR_CULL_PRIM = 14 -PERF_PAPC_CLPR_VVUCP_CULL_PRIM = 15 -PERF_PAPC_CLPR_VV_CULL_PRIM = 16 -PERF_PAPC_CLPR_UCP_CULL_PRIM = 17 -PERF_PAPC_CLPR_VTX_KILL_CULL_PRIM = 18 -PERF_PAPC_CLPR_VTX_NAN_CULL_PRIM = 19 -PERF_PAPC_CLPR_CULL_TO_NULL_PRIM = 20 -PERF_PAPC_CLPR_VVUCP_CLIP_PRIM = 21 -PERF_PAPC_CLPR_VV_CLIP_PRIM = 22 -PERF_PAPC_CLPR_UCP_CLIP_PRIM = 23 -PERF_PAPC_CLPR_POINT_CLIP_CANDIDATE = 24 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_1 = 25 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_2 = 26 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_3 = 27 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_4 = 28 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_5_8 = 29 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_9_12 = 30 -PERF_PAPC_CLPR_CLIP_PLANE_NEAR = 31 -PERF_PAPC_CLPR_CLIP_PLANE_FAR = 32 -PERF_PAPC_CLPR_CLIP_PLANE_LEFT = 33 -PERF_PAPC_CLPR_CLIP_PLANE_RIGHT = 34 -PERF_PAPC_CLPR_CLIP_PLANE_TOP = 35 -PERF_PAPC_CLPR_CLIP_PLANE_BOTTOM = 36 -PERF_PAPC_CLPR_GSC_KILL_CULL_PRIM = 37 -PERF_PAPC_CLPR_RASTER_KILL_CULL_PRIM = 38 -PERF_PAPC_CLSM_NULL_PRIM = 39 -PERF_PAPC_CLSM_TOTALLY_VISIBLE_PRIM = 40 -PERF_PAPC_CLSM_CULL_TO_NULL_PRIM = 41 -PERF_PAPC_CLSM_OUT_PRIM_CNT_1 = 42 -PERF_PAPC_CLSM_OUT_PRIM_CNT_2 = 43 -PERF_PAPC_CLSM_OUT_PRIM_CNT_3 = 44 -PERF_PAPC_CLSM_OUT_PRIM_CNT_4 = 45 -PERF_PAPC_CLSM_OUT_PRIM_CNT_5_8 = 46 -PERF_PAPC_CLSM_OUT_PRIM_CNT_9_13 = 47 -PERF_PAPC_CLIPGA_VTE_KILL_PRIM = 48 -PERF_PAPC_SU_INPUT_PRIM = 49 -PERF_PAPC_SU_INPUT_CLIP_PRIM = 50 -PERF_PAPC_SU_INPUT_NULL_PRIM = 51 -PERF_PAPC_SU_INPUT_PRIM_DUAL = 52 -PERF_PAPC_SU_INPUT_CLIP_PRIM_DUAL = 53 -PERF_PAPC_SU_ZERO_AREA_CULL_PRIM = 54 -PERF_PAPC_SU_BACK_FACE_CULL_PRIM = 55 -PERF_PAPC_SU_FRONT_FACE_CULL_PRIM = 56 -PERF_PAPC_SU_POLYMODE_FACE_CULL = 57 -PERF_PAPC_SU_POLYMODE_BACK_CULL = 58 -PERF_PAPC_SU_POLYMODE_FRONT_CULL = 59 -PERF_PAPC_SU_POLYMODE_INVALID_FILL = 60 -PERF_PAPC_SU_OUTPUT_PRIM = 61 -PERF_PAPC_SU_OUTPUT_CLIP_PRIM = 62 -PERF_PAPC_SU_OUTPUT_NULL_PRIM = 63 -PERF_PAPC_SU_OUTPUT_EVENT_FLAG = 64 -PERF_PAPC_SU_OUTPUT_FIRST_PRIM_SLOT = 65 -PERF_PAPC_SU_OUTPUT_END_OF_PACKET = 66 -PERF_PAPC_SU_OUTPUT_POLYMODE_FACE = 67 -PERF_PAPC_SU_OUTPUT_POLYMODE_BACK = 68 -PERF_PAPC_SU_OUTPUT_POLYMODE_FRONT = 69 -PERF_PAPC_SU_OUT_CLIP_POLYMODE_FACE = 70 -PERF_PAPC_SU_OUT_CLIP_POLYMODE_BACK = 71 -PERF_PAPC_SU_OUT_CLIP_POLYMODE_FRONT = 72 -PERF_PAPC_SU_OUTPUT_PRIM_DUAL = 73 -PERF_PAPC_SU_OUTPUT_CLIP_PRIM_DUAL = 74 -PERF_PAPC_SU_OUTPUT_POLYMODE_DUAL = 75 -PERF_PAPC_SU_OUTPUT_CLIP_POLYMODE_DUAL = 76 -PERF_PAPC_PASX_REQ_IDLE = 77 -PERF_PAPC_PASX_REQ_BUSY = 78 -PERF_PAPC_PASX_REQ_STALLED = 79 -PERF_PAPC_PASX_REC_IDLE = 80 -PERF_PAPC_PASX_REC_BUSY = 81 -PERF_PAPC_PASX_REC_STARVED_SX = 82 -PERF_PAPC_PASX_REC_STALLED = 83 -PERF_PAPC_PASX_REC_STALLED_POS_MEM = 84 -PERF_PAPC_PASX_REC_STALLED_CCGSM_IN = 85 -PERF_PAPC_CCGSM_IDLE = 86 -PERF_PAPC_CCGSM_BUSY = 87 -PERF_PAPC_CCGSM_STALLED = 88 -PERF_PAPC_CLPRIM_IDLE = 89 -PERF_PAPC_CLPRIM_BUSY = 90 -PERF_PAPC_CLPRIM_STALLED = 91 -PERF_PAPC_CLPRIM_STARVED_CCGSM = 92 -PERF_PAPC_CLIPSM_IDLE = 93 -PERF_PAPC_CLIPSM_BUSY = 94 -PERF_PAPC_CLIPSM_WAIT_CLIP_VERT_ENGH = 95 -PERF_PAPC_CLIPSM_WAIT_HIGH_PRI_SEQ = 96 -PERF_PAPC_CLIPSM_WAIT_CLIPGA = 97 -PERF_PAPC_CLIPSM_WAIT_AVAIL_VTE_CLIP = 98 -PERF_PAPC_CLIPSM_WAIT_CLIP_OUTSM = 99 -PERF_PAPC_CLIPGA_IDLE = 100 -PERF_PAPC_CLIPGA_BUSY = 101 -PERF_PAPC_CLIPGA_STARVED_VTE_CLIP = 102 -PERF_PAPC_CLIPGA_STALLED = 103 -PERF_PAPC_CLIP_IDLE = 104 -PERF_PAPC_CLIP_BUSY = 105 -PERF_PAPC_SU_IDLE = 106 -PERF_PAPC_SU_BUSY = 107 -PERF_PAPC_SU_STARVED_CLIP = 108 -PERF_PAPC_SU_STALLED_SC = 109 -PERF_PAPC_CL_DYN_SCLK_VLD = 110 -PERF_PAPC_SU_DYN_SCLK_VLD = 111 -PERF_PAPC_PA_REG_SCLK_VLD = 112 -PERF_PAPC_SU_MULTI_GPU_PRIM_FILTER_CULL = 113 -PERF_PAPC_PASX_SE0_REQ = 114 -PERF_PAPC_PASX_SE1_REQ = 115 -PERF_PAPC_PASX_SE0_FIRST_VECTOR = 116 -PERF_PAPC_PASX_SE0_SECOND_VECTOR = 117 -PERF_PAPC_PASX_SE1_FIRST_VECTOR = 118 -PERF_PAPC_PASX_SE1_SECOND_VECTOR = 119 -PERF_PAPC_SU_SE0_PRIM_FILTER_CULL = 120 -PERF_PAPC_SU_SE1_PRIM_FILTER_CULL = 121 -PERF_PAPC_SU_SE01_PRIM_FILTER_CULL = 122 -PERF_PAPC_SU_SE0_OUTPUT_PRIM = 123 -PERF_PAPC_SU_SE1_OUTPUT_PRIM = 124 -PERF_PAPC_SU_SE01_OUTPUT_PRIM = 125 -PERF_PAPC_SU_SE0_OUTPUT_NULL_PRIM = 126 -PERF_PAPC_SU_SE1_OUTPUT_NULL_PRIM = 127 -PERF_PAPC_SU_SE01_OUTPUT_NULL_PRIM = 128 -PERF_PAPC_SU_SE0_OUTPUT_FIRST_PRIM_SLOT = 129 -PERF_PAPC_SU_SE1_OUTPUT_FIRST_PRIM_SLOT = 130 -PERF_PAPC_SU_SE0_STALLED_SC = 131 -PERF_PAPC_SU_SE1_STALLED_SC = 132 -PERF_PAPC_SU_SE01_STALLED_SC = 133 -PERF_PAPC_CLSM_CLIPPING_PRIM = 134 -PERF_PAPC_SU_CULLED_PRIM = 135 -PERF_PAPC_SU_OUTPUT_EOPG = 136 -PERF_PAPC_SU_SE2_PRIM_FILTER_CULL = 137 -PERF_PAPC_SU_SE3_PRIM_FILTER_CULL = 138 -PERF_PAPC_SU_SE2_OUTPUT_PRIM = 139 -PERF_PAPC_SU_SE3_OUTPUT_PRIM = 140 -PERF_PAPC_SU_SE2_OUTPUT_NULL_PRIM = 141 -PERF_PAPC_SU_SE3_OUTPUT_NULL_PRIM = 142 -PERF_PAPC_SU_SE0_OUTPUT_END_OF_PACKET = 143 -PERF_PAPC_SU_SE1_OUTPUT_END_OF_PACKET = 144 -PERF_PAPC_SU_SE2_OUTPUT_END_OF_PACKET = 145 -PERF_PAPC_SU_SE3_OUTPUT_END_OF_PACKET = 146 -PERF_PAPC_SU_SE0_OUTPUT_EOPG = 147 -PERF_PAPC_SU_SE1_OUTPUT_EOPG = 148 -PERF_PAPC_SU_SE2_OUTPUT_EOPG = 149 -PERF_PAPC_SU_SE3_OUTPUT_EOPG = 150 -PERF_PAPC_SU_SE2_STALLED_SC = 151 -PERF_PAPC_SU_SE3_STALLED_SC = 152 -PERF_SU_SMALL_PRIM_FILTER_CULL_CNT = 153 -PERF_SMALL_PRIM_CULL_PRIM_1X1 = 154 -PERF_SMALL_PRIM_CULL_PRIM_2X1 = 155 -PERF_SMALL_PRIM_CULL_PRIM_1X2 = 156 -PERF_SMALL_PRIM_CULL_PRIM_2X2 = 157 -PERF_SMALL_PRIM_CULL_PRIM_3X1 = 158 -PERF_SMALL_PRIM_CULL_PRIM_1X3 = 159 -PERF_SMALL_PRIM_CULL_PRIM_3X2 = 160 -PERF_SMALL_PRIM_CULL_PRIM_2X3 = 161 -PERF_SMALL_PRIM_CULL_PRIM_NX1 = 162 -PERF_SMALL_PRIM_CULL_PRIM_1XN = 163 -PERF_SMALL_PRIM_CULL_PRIM_NX2 = 164 -PERF_SMALL_PRIM_CULL_PRIM_2XN = 165 -PERF_SMALL_PRIM_CULL_PRIM_FULL_RES_EVENT = 166 -PERF_SMALL_PRIM_CULL_PRIM_HALF_RES_EVENT = 167 -PERF_SMALL_PRIM_CULL_PRIM_QUARTER_RES_EVENT = 168 -PERF_SC0_QUALIFIED_SEND_BUSY_EVENT = 169 -PERF_SC0_QUALIFIED_SEND_NOT_BUSY_EVENT = 170 -PERF_SC1_QUALIFIED_SEND_BUSY_EVENT = 171 -PERF_SC1_QUALIFIED_SEND_NOT_BUSY_EVENT = 172 -PERF_SC2_QUALIFIED_SEND_BUSY_EVENT = 173 -PERF_SC2_QUALIFIED_SEND_NOT_BUSY_EVENT = 174 -PERF_SC3_QUALIFIED_SEND_BUSY_EVENT = 175 -PERF_SC3_QUALIFIED_SEND_NOT_BUSY_EVENT = 176 -PERF_UTC_SIDEBAND_DRIVER_WAITING_ON_UTCL1 = 177 -PERF_UTC_SIDEBAND_DRIVER_STALLING_CLIENT = 178 -PERF_UTC_SIDEBAND_DRIVER_BUSY = 179 -PERF_UTC_INDEX_DRIVER_WAITING_ON_UTCL1 = 180 -PERF_UTC_INDEX_DRIVER_STALLING_CLIENT = 181 -PERF_UTC_INDEX_DRIVER_BUSY = 182 -PERF_UTC_POSITION_DRIVER_WAITING_ON_UTCL1 = 183 -PERF_UTC_POSITION_DRIVER_STALLING_CLIENT = 184 -PERF_UTC_POSITION_DRIVER_BUSY = 185 -PERF_UTC_SIDEBAND_RECEIVER_STALLING_UTCL1 = 186 -PERF_UTC_SIDEBAND_RECEIVER_STALLED_BY_ARBITER = 187 -PERF_UTC_SIDEBAND_RECEIVER_BUSY = 188 -PERF_UTC_INDEX_RECEIVER_STALLING_UTCL1 = 189 -PERF_UTC_INDEX_RECEIVER_STALLED_BY_ARBITER = 190 -PERF_UTC_INDEX_RECEIVER_BUSY = 191 -PERF_UTC_POSITION_RECEIVER_STALLING_UTCL1 = 192 -PERF_UTC_POSITION_RECEIVER_STALLED_BY_ARBITER = 193 -PERF_UTC_POSITION_RECEIVER_BUSY = 194 -PERF_TC_ARBITER_WAITING_FOR_TC_INTERFACE = 195 -PERF_TCIF_STALLING_CLIENT_NO_CREDITS = 196 -PERF_TCIF_BUSY = 197 -PERF_TCIF_SIDEBAND_RDREQ = 198 -PERF_TCIF_INDEX_RDREQ = 199 -PERF_TCIF_POSITION_RDREQ = 200 -PERF_SIDEBAND_WAITING_ON_UTCL1 = 201 -PERF_SIDEBAND_WAITING_ON_FULL_SIDEBAND_MEMORY = 202 -PERF_WRITING_TO_SIDEBAND_MEMORY = 203 -PERF_SIDEBAND_EXPECTING_1_POSSIBLE_VALID_DWORD = 204 -PERF_SIDEBAND_EXPECTING_2_TO_15_POSSIBLE_VALID_DWORD = 205 -PERF_SIDEBAND_EXPECTING_16_POSSIBLE_VALID_DWORD = 206 -PERF_SIDEBAND_WAITING_ON_RETURNED_DATA = 207 -PERF_SIDEBAND_POP_BIT_FIFO_FULL = 208 -PERF_SIDEBAND_FIFO_VMID_FIFO_FULL = 209 -PERF_SIDEBAND_INVALID_REFETCH = 210 -PERF_SIDEBAND_QUALIFIED_BUSY = 211 -PERF_SIDEBAND_QUALIFIED_STARVED = 212 -PERF_SIDEBAND_0_VALID_DWORDS_RECEIVED_ = 213 -PERF_SIDEBAND_1_TO_7_VALID_DWORDS_RECEIVED_ = 214 -PERF_SIDEBAND_8_TO_15_VALID_DWORDS_RECEIVED_ = 215 -PERF_SIDEBAND_16_VALID_DWORDS_RECEIVED_ = 216 -PERF_INDEX_REQUEST_WAITING_ON_TOKENS = 217 -PERF_INDEX_REQUEST_WAITING_ON_FULL_RECEIVE_FIFO = 218 -PERF_INDEX_REQUEST_QUALIFIED_BUSY = 219 -PERF_INDEX_REQUEST_QUALIFIED_STARVED = 220 -PERF_INDEX_RECEIVE_WAITING_ON_RETURNED_CACHELINE = 221 -PERF_INDEX_RECEIVE_WAITING_ON_PRIM_INDICES_FIFO = 222 -PERF_INDEX_RECEIVE_PRIM_INDICES_FIFO_WRITE = 223 -PERF_INDEX_RECEIVE_QUALIFIED_BUSY = 224 -PERF_INDEX_RECEIVE_QUALIFIED_STARVED = 225 -PERF_INDEX_RECEIVE_0_VALID_DWORDS_THIS_CACHELINE = 226 -PERF_INDEX_RECEIVE_1_VALID_DWORDS_THIS_CACHELINE = 227 -PERF_INDEX_RECEIVE_2_VALID_DWORDS_THIS_CACHELINE = 228 -PERF_INDEX_RECEIVE_3_VALID_DWORDS_THIS_CACHELINE = 229 -PERF_INDEX_RECEIVE_4_VALID_DWORDS_THIS_CACHELINE = 230 -PERF_INDEX_RECEIVE_5_VALID_DWORDS_THIS_CACHELINE = 231 -PERF_INDEX_RECEIVE_6_VALID_DWORDS_THIS_CACHELINE = 232 -PERF_INDEX_RECEIVE_7_VALID_DWORDS_THIS_CACHELINE = 233 -PERF_INDEX_RECEIVE_8_VALID_DWORDS_THIS_CACHELINE = 234 -PERF_INDEX_RECEIVE_9_VALID_DWORDS_THIS_CACHELINE = 235 -PERF_INDEX_RECEIVE_10_VALID_DWORDS_THIS_CACHELINE = 236 -PERF_INDEX_RECEIVE_11_VALID_DWORDS_THIS_CACHELINE = 237 -PERF_INDEX_RECEIVE_12_VALID_DWORDS_THIS_CACHELINE = 238 -PERF_INDEX_RECEIVE_13_VALID_DWORDS_THIS_CACHELINE = 239 -PERF_INDEX_RECEIVE_14_VALID_DWORDS_THIS_CACHELINE = 240 -PERF_INDEX_RECEIVE_15_VALID_DWORDS_THIS_CACHELINE = 241 -PERF_INDEX_RECEIVE_16_VALID_DWORDS_THIS_CACHELINE = 242 -PERF_POS_REQ_STALLED_BY_FULL_FETCH_TO_PRIMIC_P_FIFO = 243 -PERF_POS_REQ_STALLED_BY_FULL_FETCH_TO_PRIMIC_S_FIFO = 244 -PERF_POS_REQ_STALLED_BY_FULL_POSREQ_TO_POSRTN_V_FIFO = 245 -PERF_POS_REQ_STALLED_BY_FULL_POSREQ_TO_POSRTN_S_FIFO = 246 -PERF_POS_REQ_STALLED_BY_FULL_PA_TO_WD_DEALLOC_INDEX_FIFO = 247 -PERF_POS_REQ_STALLED_BY_NO_TOKENS = 248 -PERF_POS_REQ_STARVED_BY_NO_PRIM = 249 -PERF_POS_REQ_STALLED_BY_UTCL1 = 250 -PERF_POS_REQ_FETCH_TO_PRIMIC_P_FIFO_WRITE = 251 -PERF_POS_REQ_FETCH_TO_PRIMIC_P_FIFO_NO_WRITE = 252 -PERF_POS_REQ_QUALIFIED_BUSY = 253 -PERF_POS_REQ_QUALIFIED_STARVED = 254 -PERF_POS_REQ_REUSE_0_NEW_VERTS_THIS_PRIM = 255 -PERF_POS_REQ_REUSE_1_NEW_VERTS_THIS_PRIM = 256 -PERF_POS_REQ_REUSE_2_NEW_VERTS_THIS_PRIM = 257 -PERF_POS_REQ_REUSE_3_NEW_VERTS_THIS_PRIM = 258 -PERF_POS_RET_FULL_FETCH_TO_SXIF_FIFO = 259 -PERF_POS_RET_FULL_PA_TO_WD_DEALLOC_POSITION_FIFO = 260 -PERF_POS_RET_WAITING_ON_RETURNED_CACHELINE = 261 -PERF_POS_RET_FETCH_TO_SXIF_FIFO_WRITE = 262 -PERF_POS_RET_QUALIFIED_BUSY = 263 -PERF_POS_RET_QUALIFIED_STARVED = 264 -PERF_POS_RET_1_CACHELINE_POSITION_USED = 265 -PERF_POS_RET_2_CACHELINE_POSITION_USED = 266 -PERF_POS_RET_3_CACHELINE_POSITION_USED = 267 -PERF_POS_RET_4_CACHELINE_POSITION_USED = 268 -PERF_TC_INDEX_LATENCY_BIN0 = 269 -PERF_TC_INDEX_LATENCY_BIN1 = 270 -PERF_TC_INDEX_LATENCY_BIN2 = 271 -PERF_TC_INDEX_LATENCY_BIN3 = 272 -PERF_TC_INDEX_LATENCY_BIN4 = 273 -PERF_TC_INDEX_LATENCY_BIN5 = 274 -PERF_TC_INDEX_LATENCY_BIN6 = 275 -PERF_TC_INDEX_LATENCY_BIN7 = 276 -PERF_TC_INDEX_LATENCY_BIN8 = 277 -PERF_TC_INDEX_LATENCY_BIN9 = 278 -PERF_TC_INDEX_LATENCY_BIN10 = 279 -PERF_TC_INDEX_LATENCY_BIN11 = 280 -PERF_TC_INDEX_LATENCY_BIN12 = 281 -PERF_TC_INDEX_LATENCY_BIN13 = 282 -PERF_TC_INDEX_LATENCY_BIN14 = 283 -PERF_TC_INDEX_LATENCY_BIN15 = 284 -PERF_TC_POSITION_LATENCY_BIN0 = 285 -PERF_TC_POSITION_LATENCY_BIN1 = 286 -PERF_TC_POSITION_LATENCY_BIN2 = 287 -PERF_TC_POSITION_LATENCY_BIN3 = 288 -PERF_TC_POSITION_LATENCY_BIN4 = 289 -PERF_TC_POSITION_LATENCY_BIN5 = 290 -PERF_TC_POSITION_LATENCY_BIN6 = 291 -PERF_TC_POSITION_LATENCY_BIN7 = 292 -PERF_TC_POSITION_LATENCY_BIN8 = 293 -PERF_TC_POSITION_LATENCY_BIN9 = 294 -PERF_TC_POSITION_LATENCY_BIN10 = 295 -PERF_TC_POSITION_LATENCY_BIN11 = 296 -PERF_TC_POSITION_LATENCY_BIN12 = 297 -PERF_TC_POSITION_LATENCY_BIN13 = 298 -PERF_TC_POSITION_LATENCY_BIN14 = 299 -PERF_TC_POSITION_LATENCY_BIN15 = 300 -PERF_TC_STREAM0_DATA_AVAILABLE = 301 -PERF_TC_STREAM1_DATA_AVAILABLE = 302 -PERF_TC_STREAM2_DATA_AVAILABLE = 303 -PERF_PAWD_DEALLOC_FIFO_IS_FULL = 304 -PERF_PAWD_DEALLOC_WAITING_TO_BE_READ = 305 -PERF_SHOOTDOWN_WAIT_ON_UTCL1 = 306 -PERF_SHOOTDOWN_WAIT_ON_UTC_SIDEBAND = 307 -PERF_SHOOTDOWN_WAIT_ON_UTC_INDEX = 308 -PERF_SHOOTDOWN_WAIT_ON_UTC_POSITION = 309 -PERF_SHOOTDOWN_WAIT_ALL_CLEAN = 310 -PERF_SHOOTDOWN_WAIT_DEASSERT = 311 -PERF_UTCL1_TRANSLATION_MISS_CLIENT0 = 312 -PERF_UTCL1_TRANSLATION_MISS_CLIENT1 = 313 -PERF_UTCL1_TRANSLATION_MISS_CLIENT2 = 314 -PERF_UTCL1_PERMISSION_MISS_CLIENT0 = 315 -PERF_UTCL1_PERMISSION_MISS_CLIENT1 = 316 -PERF_UTCL1_PERMISSION_MISS_CLIENT2 = 317 -PERF_UTCL1_TRANSLATION_HIT_CLIENT0 = 318 -PERF_UTCL1_TRANSLATION_HIT_CLIENT1 = 319 -PERF_UTCL1_TRANSLATION_HIT_CLIENT2 = 320 -PERF_UTCL1_REQUEST_CLIENT0 = 321 -PERF_UTCL1_REQUEST_CLIENT1 = 322 -PERF_UTCL1_REQUEST_CLIENT2 = 323 -PERF_UTCL1_STALL_MISSFIFO_FULL = 324 -PERF_UTCL1_STALL_INFLIGHT_MAX = 325 -PERF_UTCL1_STALL_LRU_INFLIGHT = 326 -PERF_UTCL1_STALL_MULTI_MISS = 327 -PERF_UTCL1_LFIFO_FULL = 328 -PERF_UTCL1_STALL_LFIFO_NOT_RES_CLIENT0 = 329 -PERF_UTCL1_STALL_LFIFO_NOT_RES_CLIENT1 = 330 -PERF_UTCL1_STALL_LFIFO_NOT_RES_CLIENT2 = 331 -PERF_UTCL1_STALL_UTCL2_REQ_OUT_OF_CREDITS = 332 -PERF_UTCL1_UTCL2_REQ = 333 -PERF_UTCL1_UTCL2_RET = 334 -PERF_UTCL1_UTCL2_INFLIGHT = 335 -PERF_CLIENT_UTCL1_INFLIGHT = 336 -PERF_PA_SE0_OUTPUT_QUALIFIED_CLKEN_NOT_ASSERTED = 337 -PERF_PA_SE0_OUTPUT_QUALIFIED_CLKEN_ASSERTED_NO_SEND = 338 -PERF_PA_SE0_OUTPUT_QUALIFIED_CLKEN_ASSERTED_WITH_SEND = 339 -PERF_PA_SE1_OUTPUT_QUALIFIED_CLKEN_NOT_ASSERTED = 340 -PERF_PA_SE1_OUTPUT_QUALIFIED_CLKEN_ASSERTED_NO_SEND = 341 -PERF_PA_SE1_OUTPUT_QUALIFIED_CLKEN_ASSERTED_WITH_SEND = 342 -PERF_PA_SE2_OUTPUT_QUALIFIED_CLKEN_NOT_ASSERTED = 343 -PERF_PA_SE2_OUTPUT_QUALIFIED_CLKEN_ASSERTED_NO_SEND = 344 -PERF_PA_SE2_OUTPUT_QUALIFIED_CLKEN_ASSERTED_WITH_SEND = 345 -PERF_PA_SE3_OUTPUT_QUALIFIED_CLKEN_NOT_ASSERTED = 346 -PERF_PA_SE3_OUTPUT_QUALIFIED_CLKEN_ASSERTED_NO_SEND = 347 -PERF_PA_SE3_OUTPUT_QUALIFIED_CLKEN_ASSERTED_WITH_SEND = 348 -PERF_PA_VERTEX_FIFO_FULL = 349 -PERF_PA_PRIMIC_TO_CLPRIM_FIFO_FULL = 350 -PERF_PA_FETCH_TO_PRIMIC_P_FIFO_FULL = 351 -PERF_PA_FETCH_TO_SXIF_FIFO_FULL = 352 -ENGG_CSB_MACHINE_IS_STARVED = 355 -ENGG_CSB_MACHINE_STALLED_BY_CSB_MEMORY = 356 -ENGG_CSB_MACHINE_STALLED_BY_SPI = 357 -ENGG_CSB_GE_INPUT_FIFO_FULL = 358 -ENGG_CSB_SPI_INPUT_FIFO_FULL = 359 -ENGG_CSB_OBJECTID_INPUT_FIFO_FULL = 360 -ENGG_CSB_PRIM_COUNT_EQ0 = 361 -ENGG_CSB_GE_SENDING_SUBGROUP = 362 -ENGG_CSB_DELAY_BIN00 = 363 -ENGG_CSB_DELAY_BIN01 = 364 -ENGG_CSB_DELAY_BIN02 = 365 -ENGG_CSB_DELAY_BIN03 = 366 -ENGG_CSB_DELAY_BIN04 = 367 -ENGG_CSB_DELAY_BIN05 = 368 -ENGG_CSB_DELAY_BIN06 = 369 -ENGG_CSB_DELAY_BIN07 = 370 -ENGG_CSB_DELAY_BIN08 = 371 -ENGG_CSB_DELAY_BIN09 = 372 -ENGG_CSB_DELAY_BIN10 = 373 -ENGG_CSB_DELAY_BIN11 = 374 -ENGG_CSB_DELAY_BIN12 = 375 -ENGG_CSB_DELAY_BIN13 = 376 -ENGG_CSB_DELAY_BIN14 = 377 -ENGG_CSB_DELAY_BIN15 = 378 -ENGG_CSB_SPI_DELAY_BIN00 = 379 -ENGG_CSB_SPI_DELAY_BIN01 = 380 -ENGG_CSB_SPI_DELAY_BIN02 = 381 -ENGG_CSB_SPI_DELAY_BIN03 = 382 -ENGG_CSB_SPI_DELAY_BIN04 = 383 -ENGG_CSB_SPI_DELAY_BIN05 = 384 -ENGG_CSB_SPI_DELAY_BIN06 = 385 -ENGG_CSB_SPI_DELAY_BIN07 = 386 -ENGG_CSB_SPI_DELAY_BIN08 = 387 -ENGG_CSB_SPI_DELAY_BIN09 = 388 -ENGG_CSB_SPI_DELAY_BIN10 = 389 -ENGG_CSB_SPI_DELAY_BIN11 = 390 -ENGG_CSB_SPI_DELAY_BIN12 = 391 -ENGG_CSB_SPI_DELAY_BIN13 = 392 -ENGG_CSB_SPI_DELAY_BIN14 = 393 -ENGG_CSB_SPI_DELAY_BIN15 = 394 -ENGG_INDEX_REQ_STARVED = 395 -ENGG_INDEX_REQ_IDLE_AND_STALLED_BY_REQ2RTN_FIFO_FULL = 396 -ENGG_INDEX_REQ_BUSY_AND_STALLED_BY_REQ2RTN_FIFO_FULL = 397 -ENGG_INDEX_REQ_STALLED_BY_SX_CREDITS = 398 -ENGG_INDEX_RET_REQ2RTN_FIFO_FULL = 399 -ENGG_INDEX_RET_REQ2RTN_FIFO_EMPTY = 400 -ENGG_INDEX_RET_SX_RECEIVE_FIFO_FULL = 401 -ENGG_INDEX_RET_SXRX_STARVED_BY_CSB = 402 -ENGG_INDEX_RET_SXRX_STARVED_BY_PRIMS = 403 -ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_CSB_FIFO = 404 -ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_FIFO = 405 -ENGG_INDEX_RET_SXRX_READING_EVENT = 406 -ENGG_INDEX_RET_SXRX_READING_NULL_SUBGROUP = 407 -ENGG_INDEX_RET_SXRX_READING_SUBGROUP_PRIMCOUNT_EQ0 = 408 -ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_NOPL = 409 -ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_PL = 410 -ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_NOPL = 411 -ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_PL = 412 -ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS = 413 -ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS = 414 -ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS = 415 -ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_P_FIFO = 416 -ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_S_FIFO = 417 -ENGG_INDEX_PRIM_IF_STARVED_BY_NO_PRIM = 418 -ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_WRITE = 419 -ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_NO_WRITE = 420 -ENGG_INDEX_PRIM_IF_QUALIFIED_BUSY = 421 -ENGG_INDEX_PRIM_IF_QUALIFIED_STARVED = 422 -ENGG_INDEX_PRIM_IF_REUSE_0_NEW_VERTS_THIS_PRIM = 423 -ENGG_INDEX_PRIM_IF_REUSE_1_NEW_VERTS_THIS_PRIM = 424 -ENGG_INDEX_PRIM_IF_REUSE_2_NEW_VERTS_THIS_PRIM = 425 -ENGG_INDEX_PRIM_IF_REUSE_3_NEW_VERTS_THIS_PRIM = 426 -ENGG_POS_REQ_STARVED = 427 -ENGG_POS_REQ_STALLED_BY_FULL_CLIPV_FIFO = 428 -SU_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SC_PERFCNT_SEL' -SC_PERFCNT_SEL__enumvalues = { - 0: 'SC_SRPS_WINDOW_VALID', - 1: 'SC_PSSW_WINDOW_VALID', - 2: 'SC_TPQZ_WINDOW_VALID', - 3: 'SC_QZQP_WINDOW_VALID', - 4: 'SC_TRPK_WINDOW_VALID', - 5: 'SC_SRPS_WINDOW_VALID_BUSY', - 6: 'SC_PSSW_WINDOW_VALID_BUSY', - 7: 'SC_TPQZ_WINDOW_VALID_BUSY', - 8: 'SC_QZQP_WINDOW_VALID_BUSY', - 9: 'SC_TRPK_WINDOW_VALID_BUSY', - 10: 'SC_STARVED_BY_PA', - 11: 'SC_STALLED_BY_PRIMFIFO', - 12: 'SC_STALLED_BY_DB_TILE', - 13: 'SC_STARVED_BY_DB_TILE', - 14: 'SC_STALLED_BY_TILEORDERFIFO', - 15: 'SC_STALLED_BY_TILEFIFO', - 16: 'SC_STALLED_BY_DB_QUAD', - 17: 'SC_STARVED_BY_DB_QUAD', - 18: 'SC_STALLED_BY_QUADFIFO', - 19: 'SC_STALLED_BY_BCI', - 20: 'SC_STALLED_BY_SPI', - 21: 'SC_SCISSOR_DISCARD', - 22: 'SC_BB_DISCARD', - 23: 'SC_SUPERTILE_COUNT', - 24: 'SC_SUPERTILE_PER_PRIM_H0', - 25: 'SC_SUPERTILE_PER_PRIM_H1', - 26: 'SC_SUPERTILE_PER_PRIM_H2', - 27: 'SC_SUPERTILE_PER_PRIM_H3', - 28: 'SC_SUPERTILE_PER_PRIM_H4', - 29: 'SC_SUPERTILE_PER_PRIM_H5', - 30: 'SC_SUPERTILE_PER_PRIM_H6', - 31: 'SC_SUPERTILE_PER_PRIM_H7', - 32: 'SC_SUPERTILE_PER_PRIM_H8', - 33: 'SC_SUPERTILE_PER_PRIM_H9', - 34: 'SC_SUPERTILE_PER_PRIM_H10', - 35: 'SC_SUPERTILE_PER_PRIM_H11', - 36: 'SC_SUPERTILE_PER_PRIM_H12', - 37: 'SC_SUPERTILE_PER_PRIM_H13', - 38: 'SC_SUPERTILE_PER_PRIM_H14', - 39: 'SC_SUPERTILE_PER_PRIM_H15', - 40: 'SC_SUPERTILE_PER_PRIM_H16', - 41: 'SC_TILE_PER_PRIM_H0', - 42: 'SC_TILE_PER_PRIM_H1', - 43: 'SC_TILE_PER_PRIM_H2', - 44: 'SC_TILE_PER_PRIM_H3', - 45: 'SC_TILE_PER_PRIM_H4', - 46: 'SC_TILE_PER_PRIM_H5', - 47: 'SC_TILE_PER_PRIM_H6', - 48: 'SC_TILE_PER_PRIM_H7', - 49: 'SC_TILE_PER_PRIM_H8', - 50: 'SC_TILE_PER_PRIM_H9', - 51: 'SC_TILE_PER_PRIM_H10', - 52: 'SC_TILE_PER_PRIM_H11', - 53: 'SC_TILE_PER_PRIM_H12', - 54: 'SC_TILE_PER_PRIM_H13', - 55: 'SC_TILE_PER_PRIM_H14', - 56: 'SC_TILE_PER_PRIM_H15', - 57: 'SC_TILE_PER_PRIM_H16', - 58: 'SC_TILE_PER_SUPERTILE_H0', - 59: 'SC_TILE_PER_SUPERTILE_H1', - 60: 'SC_TILE_PER_SUPERTILE_H2', - 61: 'SC_TILE_PER_SUPERTILE_H3', - 62: 'SC_TILE_PER_SUPERTILE_H4', - 63: 'SC_TILE_PER_SUPERTILE_H5', - 64: 'SC_TILE_PER_SUPERTILE_H6', - 65: 'SC_TILE_PER_SUPERTILE_H7', - 66: 'SC_TILE_PER_SUPERTILE_H8', - 67: 'SC_TILE_PER_SUPERTILE_H9', - 68: 'SC_TILE_PER_SUPERTILE_H10', - 69: 'SC_TILE_PER_SUPERTILE_H11', - 70: 'SC_TILE_PER_SUPERTILE_H12', - 71: 'SC_TILE_PER_SUPERTILE_H13', - 72: 'SC_TILE_PER_SUPERTILE_H14', - 73: 'SC_TILE_PER_SUPERTILE_H15', - 74: 'SC_TILE_PER_SUPERTILE_H16', - 75: 'SC_TILE_PICKED_H1', - 76: 'SC_TILE_PICKED_H2', - 77: 'SC_TILE_PICKED_H3', - 78: 'SC_TILE_PICKED_H4', - 79: 'SC_QZ0_TILE_COUNT', - 80: 'SC_QZ1_TILE_COUNT', - 81: 'SC_QZ2_TILE_COUNT', - 82: 'SC_QZ3_TILE_COUNT', - 83: 'SC_QZ0_TILE_COVERED_COUNT', - 84: 'SC_QZ1_TILE_COVERED_COUNT', - 85: 'SC_QZ2_TILE_COVERED_COUNT', - 86: 'SC_QZ3_TILE_COVERED_COUNT', - 87: 'SC_QZ0_TILE_NOT_COVERED_COUNT', - 88: 'SC_QZ1_TILE_NOT_COVERED_COUNT', - 89: 'SC_QZ2_TILE_NOT_COVERED_COUNT', - 90: 'SC_QZ3_TILE_NOT_COVERED_COUNT', - 91: 'SC_QZ0_QUAD_PER_TILE_H0', - 92: 'SC_QZ0_QUAD_PER_TILE_H1', - 93: 'SC_QZ0_QUAD_PER_TILE_H2', - 94: 'SC_QZ0_QUAD_PER_TILE_H3', - 95: 'SC_QZ0_QUAD_PER_TILE_H4', - 96: 'SC_QZ0_QUAD_PER_TILE_H5', - 97: 'SC_QZ0_QUAD_PER_TILE_H6', - 98: 'SC_QZ0_QUAD_PER_TILE_H7', - 99: 'SC_QZ0_QUAD_PER_TILE_H8', - 100: 'SC_QZ0_QUAD_PER_TILE_H9', - 101: 'SC_QZ0_QUAD_PER_TILE_H10', - 102: 'SC_QZ0_QUAD_PER_TILE_H11', - 103: 'SC_QZ0_QUAD_PER_TILE_H12', - 104: 'SC_QZ0_QUAD_PER_TILE_H13', - 105: 'SC_QZ0_QUAD_PER_TILE_H14', - 106: 'SC_QZ0_QUAD_PER_TILE_H15', - 107: 'SC_QZ0_QUAD_PER_TILE_H16', - 108: 'SC_QZ1_QUAD_PER_TILE_H0', - 109: 'SC_QZ1_QUAD_PER_TILE_H1', - 110: 'SC_QZ1_QUAD_PER_TILE_H2', - 111: 'SC_QZ1_QUAD_PER_TILE_H3', - 112: 'SC_QZ1_QUAD_PER_TILE_H4', - 113: 'SC_QZ1_QUAD_PER_TILE_H5', - 114: 'SC_QZ1_QUAD_PER_TILE_H6', - 115: 'SC_QZ1_QUAD_PER_TILE_H7', - 116: 'SC_QZ1_QUAD_PER_TILE_H8', - 117: 'SC_QZ1_QUAD_PER_TILE_H9', - 118: 'SC_QZ1_QUAD_PER_TILE_H10', - 119: 'SC_QZ1_QUAD_PER_TILE_H11', - 120: 'SC_QZ1_QUAD_PER_TILE_H12', - 121: 'SC_QZ1_QUAD_PER_TILE_H13', - 122: 'SC_QZ1_QUAD_PER_TILE_H14', - 123: 'SC_QZ1_QUAD_PER_TILE_H15', - 124: 'SC_QZ1_QUAD_PER_TILE_H16', - 125: 'SC_QZ2_QUAD_PER_TILE_H0', - 126: 'SC_QZ2_QUAD_PER_TILE_H1', - 127: 'SC_QZ2_QUAD_PER_TILE_H2', - 128: 'SC_QZ2_QUAD_PER_TILE_H3', - 129: 'SC_QZ2_QUAD_PER_TILE_H4', - 130: 'SC_QZ2_QUAD_PER_TILE_H5', - 131: 'SC_QZ2_QUAD_PER_TILE_H6', - 132: 'SC_QZ2_QUAD_PER_TILE_H7', - 133: 'SC_QZ2_QUAD_PER_TILE_H8', - 134: 'SC_QZ2_QUAD_PER_TILE_H9', - 135: 'SC_QZ2_QUAD_PER_TILE_H10', - 136: 'SC_QZ2_QUAD_PER_TILE_H11', - 137: 'SC_QZ2_QUAD_PER_TILE_H12', - 138: 'SC_QZ2_QUAD_PER_TILE_H13', - 139: 'SC_QZ2_QUAD_PER_TILE_H14', - 140: 'SC_QZ2_QUAD_PER_TILE_H15', - 141: 'SC_QZ2_QUAD_PER_TILE_H16', - 142: 'SC_QZ3_QUAD_PER_TILE_H0', - 143: 'SC_QZ3_QUAD_PER_TILE_H1', - 144: 'SC_QZ3_QUAD_PER_TILE_H2', - 145: 'SC_QZ3_QUAD_PER_TILE_H3', - 146: 'SC_QZ3_QUAD_PER_TILE_H4', - 147: 'SC_QZ3_QUAD_PER_TILE_H5', - 148: 'SC_QZ3_QUAD_PER_TILE_H6', - 149: 'SC_QZ3_QUAD_PER_TILE_H7', - 150: 'SC_QZ3_QUAD_PER_TILE_H8', - 151: 'SC_QZ3_QUAD_PER_TILE_H9', - 152: 'SC_QZ3_QUAD_PER_TILE_H10', - 153: 'SC_QZ3_QUAD_PER_TILE_H11', - 154: 'SC_QZ3_QUAD_PER_TILE_H12', - 155: 'SC_QZ3_QUAD_PER_TILE_H13', - 156: 'SC_QZ3_QUAD_PER_TILE_H14', - 157: 'SC_QZ3_QUAD_PER_TILE_H15', - 158: 'SC_QZ3_QUAD_PER_TILE_H16', - 159: 'SC_QZ0_QUAD_COUNT', - 160: 'SC_QZ1_QUAD_COUNT', - 161: 'SC_QZ2_QUAD_COUNT', - 162: 'SC_QZ3_QUAD_COUNT', - 163: 'SC_P0_HIZ_TILE_COUNT', - 164: 'SC_P1_HIZ_TILE_COUNT', - 165: 'SC_P2_HIZ_TILE_COUNT', - 166: 'SC_P3_HIZ_TILE_COUNT', - 167: 'SC_P0_HIZ_QUAD_PER_TILE_H0', - 168: 'SC_P0_HIZ_QUAD_PER_TILE_H1', - 169: 'SC_P0_HIZ_QUAD_PER_TILE_H2', - 170: 'SC_P0_HIZ_QUAD_PER_TILE_H3', - 171: 'SC_P0_HIZ_QUAD_PER_TILE_H4', - 172: 'SC_P0_HIZ_QUAD_PER_TILE_H5', - 173: 'SC_P0_HIZ_QUAD_PER_TILE_H6', - 174: 'SC_P0_HIZ_QUAD_PER_TILE_H7', - 175: 'SC_P0_HIZ_QUAD_PER_TILE_H8', - 176: 'SC_P0_HIZ_QUAD_PER_TILE_H9', - 177: 'SC_P0_HIZ_QUAD_PER_TILE_H10', - 178: 'SC_P0_HIZ_QUAD_PER_TILE_H11', - 179: 'SC_P0_HIZ_QUAD_PER_TILE_H12', - 180: 'SC_P0_HIZ_QUAD_PER_TILE_H13', - 181: 'SC_P0_HIZ_QUAD_PER_TILE_H14', - 182: 'SC_P0_HIZ_QUAD_PER_TILE_H15', - 183: 'SC_P0_HIZ_QUAD_PER_TILE_H16', - 184: 'SC_P1_HIZ_QUAD_PER_TILE_H0', - 185: 'SC_P1_HIZ_QUAD_PER_TILE_H1', - 186: 'SC_P1_HIZ_QUAD_PER_TILE_H2', - 187: 'SC_P1_HIZ_QUAD_PER_TILE_H3', - 188: 'SC_P1_HIZ_QUAD_PER_TILE_H4', - 189: 'SC_P1_HIZ_QUAD_PER_TILE_H5', - 190: 'SC_P1_HIZ_QUAD_PER_TILE_H6', - 191: 'SC_P1_HIZ_QUAD_PER_TILE_H7', - 192: 'SC_P1_HIZ_QUAD_PER_TILE_H8', - 193: 'SC_P1_HIZ_QUAD_PER_TILE_H9', - 194: 'SC_P1_HIZ_QUAD_PER_TILE_H10', - 195: 'SC_P1_HIZ_QUAD_PER_TILE_H11', - 196: 'SC_P1_HIZ_QUAD_PER_TILE_H12', - 197: 'SC_P1_HIZ_QUAD_PER_TILE_H13', - 198: 'SC_P1_HIZ_QUAD_PER_TILE_H14', - 199: 'SC_P1_HIZ_QUAD_PER_TILE_H15', - 200: 'SC_P1_HIZ_QUAD_PER_TILE_H16', - 201: 'SC_P2_HIZ_QUAD_PER_TILE_H0', - 202: 'SC_P2_HIZ_QUAD_PER_TILE_H1', - 203: 'SC_P2_HIZ_QUAD_PER_TILE_H2', - 204: 'SC_P2_HIZ_QUAD_PER_TILE_H3', - 205: 'SC_P2_HIZ_QUAD_PER_TILE_H4', - 206: 'SC_P2_HIZ_QUAD_PER_TILE_H5', - 207: 'SC_P2_HIZ_QUAD_PER_TILE_H6', - 208: 'SC_P2_HIZ_QUAD_PER_TILE_H7', - 209: 'SC_P2_HIZ_QUAD_PER_TILE_H8', - 210: 'SC_P2_HIZ_QUAD_PER_TILE_H9', - 211: 'SC_P2_HIZ_QUAD_PER_TILE_H10', - 212: 'SC_P2_HIZ_QUAD_PER_TILE_H11', - 213: 'SC_P2_HIZ_QUAD_PER_TILE_H12', - 214: 'SC_P2_HIZ_QUAD_PER_TILE_H13', - 215: 'SC_P2_HIZ_QUAD_PER_TILE_H14', - 216: 'SC_P2_HIZ_QUAD_PER_TILE_H15', - 217: 'SC_P2_HIZ_QUAD_PER_TILE_H16', - 218: 'SC_P3_HIZ_QUAD_PER_TILE_H0', - 219: 'SC_P3_HIZ_QUAD_PER_TILE_H1', - 220: 'SC_P3_HIZ_QUAD_PER_TILE_H2', - 221: 'SC_P3_HIZ_QUAD_PER_TILE_H3', - 222: 'SC_P3_HIZ_QUAD_PER_TILE_H4', - 223: 'SC_P3_HIZ_QUAD_PER_TILE_H5', - 224: 'SC_P3_HIZ_QUAD_PER_TILE_H6', - 225: 'SC_P3_HIZ_QUAD_PER_TILE_H7', - 226: 'SC_P3_HIZ_QUAD_PER_TILE_H8', - 227: 'SC_P3_HIZ_QUAD_PER_TILE_H9', - 228: 'SC_P3_HIZ_QUAD_PER_TILE_H10', - 229: 'SC_P3_HIZ_QUAD_PER_TILE_H11', - 230: 'SC_P3_HIZ_QUAD_PER_TILE_H12', - 231: 'SC_P3_HIZ_QUAD_PER_TILE_H13', - 232: 'SC_P3_HIZ_QUAD_PER_TILE_H14', - 233: 'SC_P3_HIZ_QUAD_PER_TILE_H15', - 234: 'SC_P3_HIZ_QUAD_PER_TILE_H16', - 235: 'SC_P0_HIZ_QUAD_COUNT', - 236: 'SC_P1_HIZ_QUAD_COUNT', - 237: 'SC_P2_HIZ_QUAD_COUNT', - 238: 'SC_P3_HIZ_QUAD_COUNT', - 239: 'SC_P0_DETAIL_QUAD_COUNT', - 240: 'SC_P1_DETAIL_QUAD_COUNT', - 241: 'SC_P2_DETAIL_QUAD_COUNT', - 242: 'SC_P3_DETAIL_QUAD_COUNT', - 243: 'SC_P0_DETAIL_QUAD_WITH_1_PIX', - 244: 'SC_P0_DETAIL_QUAD_WITH_2_PIX', - 245: 'SC_P0_DETAIL_QUAD_WITH_3_PIX', - 246: 'SC_P0_DETAIL_QUAD_WITH_4_PIX', - 247: 'SC_P1_DETAIL_QUAD_WITH_1_PIX', - 248: 'SC_P1_DETAIL_QUAD_WITH_2_PIX', - 249: 'SC_P1_DETAIL_QUAD_WITH_3_PIX', - 250: 'SC_P1_DETAIL_QUAD_WITH_4_PIX', - 251: 'SC_P2_DETAIL_QUAD_WITH_1_PIX', - 252: 'SC_P2_DETAIL_QUAD_WITH_2_PIX', - 253: 'SC_P2_DETAIL_QUAD_WITH_3_PIX', - 254: 'SC_P2_DETAIL_QUAD_WITH_4_PIX', - 255: 'SC_P3_DETAIL_QUAD_WITH_1_PIX', - 256: 'SC_P3_DETAIL_QUAD_WITH_2_PIX', - 257: 'SC_P3_DETAIL_QUAD_WITH_3_PIX', - 258: 'SC_P3_DETAIL_QUAD_WITH_4_PIX', - 259: 'SC_EARLYZ_QUAD_COUNT', - 260: 'SC_EARLYZ_QUAD_WITH_1_PIX', - 261: 'SC_EARLYZ_QUAD_WITH_2_PIX', - 262: 'SC_EARLYZ_QUAD_WITH_3_PIX', - 263: 'SC_EARLYZ_QUAD_WITH_4_PIX', - 264: 'SC_PKR_QUAD_PER_ROW_H1', - 265: 'SC_PKR_QUAD_PER_ROW_H2', - 266: 'SC_PKR_4X2_QUAD_SPLIT', - 267: 'SC_PKR_4X2_FILL_QUAD', - 268: 'SC_PKR_END_OF_VECTOR', - 269: 'SC_PKR_CONTROL_XFER', - 270: 'SC_PKR_DBHANG_FORCE_EOV', - 271: 'SC_REG_SCLK_BUSY', - 272: 'SC_GRP0_DYN_SCLK_BUSY', - 273: 'SC_GRP1_DYN_SCLK_BUSY', - 274: 'SC_GRP2_DYN_SCLK_BUSY', - 275: 'SC_GRP3_DYN_SCLK_BUSY', - 276: 'SC_GRP4_DYN_SCLK_BUSY', - 277: 'SC_PA0_SC_DATA_FIFO_RD', - 278: 'SC_PA0_SC_DATA_FIFO_WE', - 279: 'SC_PA1_SC_DATA_FIFO_RD', - 280: 'SC_PA1_SC_DATA_FIFO_WE', - 281: 'SC_PS_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 282: 'SC_PS_ARB_XFC_ONLY_PRIM_CYCLES', - 283: 'SC_PS_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 284: 'SC_PS_ARB_STALLED_FROM_BELOW', - 285: 'SC_PS_ARB_STARVED_FROM_ABOVE', - 286: 'SC_PS_ARB_SC_BUSY', - 287: 'SC_PS_ARB_PA_SC_BUSY', - 288: 'SC_PA2_SC_DATA_FIFO_RD', - 289: 'SC_PA2_SC_DATA_FIFO_WE', - 290: 'SC_PA3_SC_DATA_FIFO_RD', - 291: 'SC_PA3_SC_DATA_FIFO_WE', - 292: 'SC_PA_SC_DEALLOC_0_0_WE', - 293: 'SC_PA_SC_DEALLOC_0_1_WE', - 294: 'SC_PA_SC_DEALLOC_1_0_WE', - 295: 'SC_PA_SC_DEALLOC_1_1_WE', - 296: 'SC_PA_SC_DEALLOC_2_0_WE', - 297: 'SC_PA_SC_DEALLOC_2_1_WE', - 298: 'SC_PA_SC_DEALLOC_3_0_WE', - 299: 'SC_PA_SC_DEALLOC_3_1_WE', - 300: 'SC_PA0_SC_EOP_WE', - 301: 'SC_PA0_SC_EOPG_WE', - 302: 'SC_PA0_SC_EVENT_WE', - 303: 'SC_PA1_SC_EOP_WE', - 304: 'SC_PA1_SC_EOPG_WE', - 305: 'SC_PA1_SC_EVENT_WE', - 306: 'SC_PA2_SC_EOP_WE', - 307: 'SC_PA2_SC_EOPG_WE', - 308: 'SC_PA2_SC_EVENT_WE', - 309: 'SC_PA3_SC_EOP_WE', - 310: 'SC_PA3_SC_EOPG_WE', - 311: 'SC_PA3_SC_EVENT_WE', - 312: 'SC_PS_ARB_OOO_THRESHOLD_SWITCH_TO_DESIRED_FIFO', - 313: 'SC_PS_ARB_OOO_FIFO_EMPTY_SWITCH', - 314: 'SC_PS_ARB_NULL_PRIM_BUBBLE_POP', - 315: 'SC_PS_ARB_EOP_POP_SYNC_POP', - 316: 'SC_PS_ARB_EVENT_SYNC_POP', - 317: 'SC_SC_PS_ENG_MULTICYCLE_BUBBLE', - 318: 'SC_PA0_SC_FPOV_WE', - 319: 'SC_PA1_SC_FPOV_WE', - 320: 'SC_PA2_SC_FPOV_WE', - 321: 'SC_PA3_SC_FPOV_WE', - 322: 'SC_PA0_SC_LPOV_WE', - 323: 'SC_PA1_SC_LPOV_WE', - 324: 'SC_PA2_SC_LPOV_WE', - 325: 'SC_PA3_SC_LPOV_WE', - 326: 'SC_SC_SPI_DEALLOC_0_0', - 327: 'SC_SC_SPI_DEALLOC_0_1', - 328: 'SC_SC_SPI_DEALLOC_0_2', - 329: 'SC_SC_SPI_DEALLOC_1_0', - 330: 'SC_SC_SPI_DEALLOC_1_1', - 331: 'SC_SC_SPI_DEALLOC_1_2', - 332: 'SC_SC_SPI_DEALLOC_2_0', - 333: 'SC_SC_SPI_DEALLOC_2_1', - 334: 'SC_SC_SPI_DEALLOC_2_2', - 335: 'SC_SC_SPI_DEALLOC_3_0', - 336: 'SC_SC_SPI_DEALLOC_3_1', - 337: 'SC_SC_SPI_DEALLOC_3_2', - 338: 'SC_SC_SPI_FPOV_0', - 339: 'SC_SC_SPI_FPOV_1', - 340: 'SC_SC_SPI_FPOV_2', - 341: 'SC_SC_SPI_FPOV_3', - 342: 'SC_SC_SPI_EVENT', - 343: 'SC_PS_TS_EVENT_FIFO_PUSH', - 344: 'SC_PS_TS_EVENT_FIFO_POP', - 345: 'SC_PS_CTX_DONE_FIFO_PUSH', - 346: 'SC_PS_CTX_DONE_FIFO_POP', - 347: 'SC_MULTICYCLE_BUBBLE_FREEZE', - 348: 'SC_EOP_SYNC_WINDOW', - 349: 'SC_PA0_SC_NULL_WE', - 350: 'SC_PA0_SC_NULL_DEALLOC_WE', - 351: 'SC_PA0_SC_DATA_FIFO_EOPG_RD', - 352: 'SC_PA0_SC_DATA_FIFO_EOP_RD', - 353: 'SC_PA0_SC_DEALLOC_0_RD', - 354: 'SC_PA0_SC_DEALLOC_1_RD', - 355: 'SC_PA1_SC_DATA_FIFO_EOPG_RD', - 356: 'SC_PA1_SC_DATA_FIFO_EOP_RD', - 357: 'SC_PA1_SC_DEALLOC_0_RD', - 358: 'SC_PA1_SC_DEALLOC_1_RD', - 359: 'SC_PA1_SC_NULL_WE', - 360: 'SC_PA1_SC_NULL_DEALLOC_WE', - 361: 'SC_PA2_SC_DATA_FIFO_EOPG_RD', - 362: 'SC_PA2_SC_DATA_FIFO_EOP_RD', - 363: 'SC_PA2_SC_DEALLOC_0_RD', - 364: 'SC_PA2_SC_DEALLOC_1_RD', - 365: 'SC_PA2_SC_NULL_WE', - 366: 'SC_PA2_SC_NULL_DEALLOC_WE', - 367: 'SC_PA3_SC_DATA_FIFO_EOPG_RD', - 368: 'SC_PA3_SC_DATA_FIFO_EOP_RD', - 369: 'SC_PA3_SC_DEALLOC_0_RD', - 370: 'SC_PA3_SC_DEALLOC_1_RD', - 371: 'SC_PA3_SC_NULL_WE', - 372: 'SC_PA3_SC_NULL_DEALLOC_WE', - 373: 'SC_PS_PA0_SC_FIFO_EMPTY', - 374: 'SC_PS_PA0_SC_FIFO_FULL', - 375: 'SC_RESERVED_0', - 376: 'SC_PS_PA1_SC_FIFO_EMPTY', - 377: 'SC_PS_PA1_SC_FIFO_FULL', - 378: 'SC_RESERVED_1', - 379: 'SC_PS_PA2_SC_FIFO_EMPTY', - 380: 'SC_PS_PA2_SC_FIFO_FULL', - 381: 'SC_RESERVED_2', - 382: 'SC_PS_PA3_SC_FIFO_EMPTY', - 383: 'SC_PS_PA3_SC_FIFO_FULL', - 384: 'SC_RESERVED_3', - 385: 'SC_BUSY_PROCESSING_MULTICYCLE_PRIM', - 386: 'SC_BUSY_CNT_NOT_ZERO', - 387: 'SC_BM_BUSY', - 388: 'SC_BACKEND_BUSY', - 389: 'SC_SCF_SCB_INTERFACE_BUSY', - 390: 'SC_SCB_BUSY', - 391: 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_NOT_EMPTY', - 392: 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_FULL', - 393: 'SC_PBB_BIN_HIST_NUM_PRIMS', - 394: 'SC_PBB_BATCH_HIST_NUM_PRIMS', - 395: 'SC_PBB_BIN_HIST_NUM_CONTEXTS', - 396: 'SC_PBB_BATCH_HIST_NUM_CONTEXTS', - 397: 'SC_PBB_BIN_HIST_NUM_PERSISTENT_STATES', - 398: 'SC_PBB_BATCH_HIST_NUM_PERSISTENT_STATES', - 399: 'SC_PBB_BATCH_HIST_NUM_PS_WAVE_BREAKS', - 400: 'SC_PBB_BATCH_HIST_NUM_TRIV_REJECTED_PRIMS', - 401: 'SC_PBB_BATCH_HIST_NUM_ROWS_PER_PRIM', - 402: 'SC_PBB_BATCH_HIST_NUM_COLUMNS_PER_ROW', - 403: 'SC_PBB_BUSY', - 404: 'SC_PBB_BUSY_AND_NO_SENDS', - 405: 'SC_PBB_STALLS_PA_DUE_TO_NO_TILES', - 406: 'SC_PBB_NUM_BINS', - 407: 'SC_PBB_END_OF_BIN', - 408: 'SC_PBB_END_OF_BATCH', - 409: 'SC_PBB_PRIMBIN_PROCESSED', - 410: 'SC_PBB_PRIM_ADDED_TO_BATCH', - 411: 'SC_PBB_NONBINNED_PRIM', - 412: 'SC_PBB_TOTAL_REAL_PRIMS_OUT_OF_PBB', - 413: 'SC_PBB_TOTAL_NULL_PRIMS_OUT_OF_PBB', - 414: 'SC_PBB_IDLE_CLK_DUE_TO_ROW_TO_COLUMN_TRANSITION', - 415: 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_ROW', - 416: 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_COLUMN', - 417: 'SC_PBB_BATCH_BREAK_DUE_TO_PERSISTENT_STATE', - 418: 'SC_PBB_BATCH_BREAK_DUE_TO_CONTEXT_STATE', - 419: 'SC_PBB_BATCH_BREAK_DUE_TO_PRIM', - 420: 'SC_PBB_BATCH_BREAK_DUE_TO_PC_STORAGE', - 421: 'SC_PBB_BATCH_BREAK_DUE_TO_EVENT', - 422: 'SC_PBB_BATCH_BREAK_DUE_TO_FPOV_LIMIT', - 423: 'SC_POPS_INTRA_WAVE_OVERLAPS', - 424: 'SC_POPS_FORCE_EOV', - 425: 'SC_PKR_QUAD_OVLP_NOT_FOUND_IN_WAVE_TABLE_AND_WAVES_SINCE_OVLP_SET_TO_MAX', - 426: 'SC_PKR_QUAD_OVLP_NOT_FOUND_IN_WAVE_TABLE_AND_NO_CHANGE_TO_WAVES_SINCE_OVLP', - 427: 'SC_PKR_QUAD_OVLP_FOUND_IN_WAVE_TABLE', - 428: 'SC_FULL_FULL_QUAD', - 429: 'SC_FULL_HALF_QUAD', - 430: 'SC_FULL_QTR_QUAD', - 431: 'SC_HALF_FULL_QUAD', - 432: 'SC_HALF_HALF_QUAD', - 433: 'SC_HALF_QTR_QUAD', - 434: 'SC_QTR_FULL_QUAD', - 435: 'SC_QTR_HALF_QUAD', - 436: 'SC_QTR_QTR_QUAD', - 437: 'SC_GRP5_DYN_SCLK_BUSY', - 438: 'SC_GRP6_DYN_SCLK_BUSY', - 439: 'SC_GRP7_DYN_SCLK_BUSY', - 440: 'SC_GRP8_DYN_SCLK_BUSY', - 441: 'SC_GRP9_DYN_SCLK_BUSY', - 442: 'SC_PS_TO_BE_SCLK_GATE_STALL', - 443: 'SC_PA_TO_PBB_SCLK_GATE_STALL_STALL', - 444: 'SC_PK_BUSY', - 445: 'SC_PK_MAX_DEALLOC_FORCE_EOV', - 446: 'SC_PK_DEALLOC_WAVE_BREAK', - 447: 'SC_SPI_SEND', - 448: 'SC_SPI_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 449: 'SC_SPI_CREDIT_AT_MAX', - 450: 'SC_SPI_CREDIT_AT_MAX_NO_PENDING_SEND', - 451: 'SC_BCI_SEND', - 452: 'SC_BCI_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 453: 'SC_BCI_CREDIT_AT_MAX', - 454: 'SC_BCI_CREDIT_AT_MAX_NO_PENDING_SEND', - 455: 'SC_SPIBC_FULL_FREEZE', - 456: 'SC_PW_BM_PASS_EMPTY_PRIM', - 457: 'SC_SUPERTILE_COUNT_EXCLUDE_PASS_EMPTY_PRIM', - 458: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H0', - 459: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H1', - 460: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H2', - 461: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H3', - 462: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H4', - 463: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H5', - 464: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H6', - 465: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H7', - 466: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H8', - 467: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H9', - 468: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H10', - 469: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H11', - 470: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H12', - 471: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H13', - 472: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H14', - 473: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H15', - 474: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H16', - 475: 'SC_DB0_TILE_INTERFACE_BUSY', - 476: 'SC_DB0_TILE_INTERFACE_SEND', - 477: 'SC_DB0_TILE_INTERFACE_SEND_EVENT', - 478: 'SC_DB0_TILE_INTERFACE_SEND_SOP_ONLY_EVENT', - 479: 'SC_DB0_TILE_INTERFACE_SEND_SOP', - 480: 'SC_DB0_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 481: 'SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX', - 482: 'SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND', - 483: 'SC_DB1_TILE_INTERFACE_BUSY', - 484: 'SC_DB1_TILE_INTERFACE_SEND', - 485: 'SC_DB1_TILE_INTERFACE_SEND_EVENT', - 486: 'SC_DB1_TILE_INTERFACE_SEND_SOP_ONLY_EVENT', - 487: 'SC_DB1_TILE_INTERFACE_SEND_SOP', - 488: 'SC_DB1_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 489: 'SC_DB1_TILE_INTERFACE_CREDIT_AT_MAX', - 490: 'SC_DB1_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND', - 491: 'SC_BACKEND_PRIM_FIFO_FULL', - 492: 'SC_PBB_BATCH_BREAK_DUE_TO_TIMEOUT_COUNTER', - 493: 'SC_PBB_BATCH_BREAK_DUE_TO_NONBINNED_BATCH', - 494: 'SC_PBB_BATCH_BREAK_DUE_TO_DEBUG_DATA_PER_DRAW_DISPATCH', - 495: 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_PERSISTENT', - 496: 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_CONTEXT', - 497: 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_FPOV', - 498: 'SC_PBB_BATCH_BREAK_DUE_TO_NEW_SC_MODE', - 499: 'SC_PBB_BATCH_BREAK_DUE_TO_BINNING_MODE_CHANGE', - 500: 'SC_PBB_BATCH_BREAK_DUE_TO_PIPELINE_EVENT_COUNT', -} -SC_SRPS_WINDOW_VALID = 0 -SC_PSSW_WINDOW_VALID = 1 -SC_TPQZ_WINDOW_VALID = 2 -SC_QZQP_WINDOW_VALID = 3 -SC_TRPK_WINDOW_VALID = 4 -SC_SRPS_WINDOW_VALID_BUSY = 5 -SC_PSSW_WINDOW_VALID_BUSY = 6 -SC_TPQZ_WINDOW_VALID_BUSY = 7 -SC_QZQP_WINDOW_VALID_BUSY = 8 -SC_TRPK_WINDOW_VALID_BUSY = 9 -SC_STARVED_BY_PA = 10 -SC_STALLED_BY_PRIMFIFO = 11 -SC_STALLED_BY_DB_TILE = 12 -SC_STARVED_BY_DB_TILE = 13 -SC_STALLED_BY_TILEORDERFIFO = 14 -SC_STALLED_BY_TILEFIFO = 15 -SC_STALLED_BY_DB_QUAD = 16 -SC_STARVED_BY_DB_QUAD = 17 -SC_STALLED_BY_QUADFIFO = 18 -SC_STALLED_BY_BCI = 19 -SC_STALLED_BY_SPI = 20 -SC_SCISSOR_DISCARD = 21 -SC_BB_DISCARD = 22 -SC_SUPERTILE_COUNT = 23 -SC_SUPERTILE_PER_PRIM_H0 = 24 -SC_SUPERTILE_PER_PRIM_H1 = 25 -SC_SUPERTILE_PER_PRIM_H2 = 26 -SC_SUPERTILE_PER_PRIM_H3 = 27 -SC_SUPERTILE_PER_PRIM_H4 = 28 -SC_SUPERTILE_PER_PRIM_H5 = 29 -SC_SUPERTILE_PER_PRIM_H6 = 30 -SC_SUPERTILE_PER_PRIM_H7 = 31 -SC_SUPERTILE_PER_PRIM_H8 = 32 -SC_SUPERTILE_PER_PRIM_H9 = 33 -SC_SUPERTILE_PER_PRIM_H10 = 34 -SC_SUPERTILE_PER_PRIM_H11 = 35 -SC_SUPERTILE_PER_PRIM_H12 = 36 -SC_SUPERTILE_PER_PRIM_H13 = 37 -SC_SUPERTILE_PER_PRIM_H14 = 38 -SC_SUPERTILE_PER_PRIM_H15 = 39 -SC_SUPERTILE_PER_PRIM_H16 = 40 -SC_TILE_PER_PRIM_H0 = 41 -SC_TILE_PER_PRIM_H1 = 42 -SC_TILE_PER_PRIM_H2 = 43 -SC_TILE_PER_PRIM_H3 = 44 -SC_TILE_PER_PRIM_H4 = 45 -SC_TILE_PER_PRIM_H5 = 46 -SC_TILE_PER_PRIM_H6 = 47 -SC_TILE_PER_PRIM_H7 = 48 -SC_TILE_PER_PRIM_H8 = 49 -SC_TILE_PER_PRIM_H9 = 50 -SC_TILE_PER_PRIM_H10 = 51 -SC_TILE_PER_PRIM_H11 = 52 -SC_TILE_PER_PRIM_H12 = 53 -SC_TILE_PER_PRIM_H13 = 54 -SC_TILE_PER_PRIM_H14 = 55 -SC_TILE_PER_PRIM_H15 = 56 -SC_TILE_PER_PRIM_H16 = 57 -SC_TILE_PER_SUPERTILE_H0 = 58 -SC_TILE_PER_SUPERTILE_H1 = 59 -SC_TILE_PER_SUPERTILE_H2 = 60 -SC_TILE_PER_SUPERTILE_H3 = 61 -SC_TILE_PER_SUPERTILE_H4 = 62 -SC_TILE_PER_SUPERTILE_H5 = 63 -SC_TILE_PER_SUPERTILE_H6 = 64 -SC_TILE_PER_SUPERTILE_H7 = 65 -SC_TILE_PER_SUPERTILE_H8 = 66 -SC_TILE_PER_SUPERTILE_H9 = 67 -SC_TILE_PER_SUPERTILE_H10 = 68 -SC_TILE_PER_SUPERTILE_H11 = 69 -SC_TILE_PER_SUPERTILE_H12 = 70 -SC_TILE_PER_SUPERTILE_H13 = 71 -SC_TILE_PER_SUPERTILE_H14 = 72 -SC_TILE_PER_SUPERTILE_H15 = 73 -SC_TILE_PER_SUPERTILE_H16 = 74 -SC_TILE_PICKED_H1 = 75 -SC_TILE_PICKED_H2 = 76 -SC_TILE_PICKED_H3 = 77 -SC_TILE_PICKED_H4 = 78 -SC_QZ0_TILE_COUNT = 79 -SC_QZ1_TILE_COUNT = 80 -SC_QZ2_TILE_COUNT = 81 -SC_QZ3_TILE_COUNT = 82 -SC_QZ0_TILE_COVERED_COUNT = 83 -SC_QZ1_TILE_COVERED_COUNT = 84 -SC_QZ2_TILE_COVERED_COUNT = 85 -SC_QZ3_TILE_COVERED_COUNT = 86 -SC_QZ0_TILE_NOT_COVERED_COUNT = 87 -SC_QZ1_TILE_NOT_COVERED_COUNT = 88 -SC_QZ2_TILE_NOT_COVERED_COUNT = 89 -SC_QZ3_TILE_NOT_COVERED_COUNT = 90 -SC_QZ0_QUAD_PER_TILE_H0 = 91 -SC_QZ0_QUAD_PER_TILE_H1 = 92 -SC_QZ0_QUAD_PER_TILE_H2 = 93 -SC_QZ0_QUAD_PER_TILE_H3 = 94 -SC_QZ0_QUAD_PER_TILE_H4 = 95 -SC_QZ0_QUAD_PER_TILE_H5 = 96 -SC_QZ0_QUAD_PER_TILE_H6 = 97 -SC_QZ0_QUAD_PER_TILE_H7 = 98 -SC_QZ0_QUAD_PER_TILE_H8 = 99 -SC_QZ0_QUAD_PER_TILE_H9 = 100 -SC_QZ0_QUAD_PER_TILE_H10 = 101 -SC_QZ0_QUAD_PER_TILE_H11 = 102 -SC_QZ0_QUAD_PER_TILE_H12 = 103 -SC_QZ0_QUAD_PER_TILE_H13 = 104 -SC_QZ0_QUAD_PER_TILE_H14 = 105 -SC_QZ0_QUAD_PER_TILE_H15 = 106 -SC_QZ0_QUAD_PER_TILE_H16 = 107 -SC_QZ1_QUAD_PER_TILE_H0 = 108 -SC_QZ1_QUAD_PER_TILE_H1 = 109 -SC_QZ1_QUAD_PER_TILE_H2 = 110 -SC_QZ1_QUAD_PER_TILE_H3 = 111 -SC_QZ1_QUAD_PER_TILE_H4 = 112 -SC_QZ1_QUAD_PER_TILE_H5 = 113 -SC_QZ1_QUAD_PER_TILE_H6 = 114 -SC_QZ1_QUAD_PER_TILE_H7 = 115 -SC_QZ1_QUAD_PER_TILE_H8 = 116 -SC_QZ1_QUAD_PER_TILE_H9 = 117 -SC_QZ1_QUAD_PER_TILE_H10 = 118 -SC_QZ1_QUAD_PER_TILE_H11 = 119 -SC_QZ1_QUAD_PER_TILE_H12 = 120 -SC_QZ1_QUAD_PER_TILE_H13 = 121 -SC_QZ1_QUAD_PER_TILE_H14 = 122 -SC_QZ1_QUAD_PER_TILE_H15 = 123 -SC_QZ1_QUAD_PER_TILE_H16 = 124 -SC_QZ2_QUAD_PER_TILE_H0 = 125 -SC_QZ2_QUAD_PER_TILE_H1 = 126 -SC_QZ2_QUAD_PER_TILE_H2 = 127 -SC_QZ2_QUAD_PER_TILE_H3 = 128 -SC_QZ2_QUAD_PER_TILE_H4 = 129 -SC_QZ2_QUAD_PER_TILE_H5 = 130 -SC_QZ2_QUAD_PER_TILE_H6 = 131 -SC_QZ2_QUAD_PER_TILE_H7 = 132 -SC_QZ2_QUAD_PER_TILE_H8 = 133 -SC_QZ2_QUAD_PER_TILE_H9 = 134 -SC_QZ2_QUAD_PER_TILE_H10 = 135 -SC_QZ2_QUAD_PER_TILE_H11 = 136 -SC_QZ2_QUAD_PER_TILE_H12 = 137 -SC_QZ2_QUAD_PER_TILE_H13 = 138 -SC_QZ2_QUAD_PER_TILE_H14 = 139 -SC_QZ2_QUAD_PER_TILE_H15 = 140 -SC_QZ2_QUAD_PER_TILE_H16 = 141 -SC_QZ3_QUAD_PER_TILE_H0 = 142 -SC_QZ3_QUAD_PER_TILE_H1 = 143 -SC_QZ3_QUAD_PER_TILE_H2 = 144 -SC_QZ3_QUAD_PER_TILE_H3 = 145 -SC_QZ3_QUAD_PER_TILE_H4 = 146 -SC_QZ3_QUAD_PER_TILE_H5 = 147 -SC_QZ3_QUAD_PER_TILE_H6 = 148 -SC_QZ3_QUAD_PER_TILE_H7 = 149 -SC_QZ3_QUAD_PER_TILE_H8 = 150 -SC_QZ3_QUAD_PER_TILE_H9 = 151 -SC_QZ3_QUAD_PER_TILE_H10 = 152 -SC_QZ3_QUAD_PER_TILE_H11 = 153 -SC_QZ3_QUAD_PER_TILE_H12 = 154 -SC_QZ3_QUAD_PER_TILE_H13 = 155 -SC_QZ3_QUAD_PER_TILE_H14 = 156 -SC_QZ3_QUAD_PER_TILE_H15 = 157 -SC_QZ3_QUAD_PER_TILE_H16 = 158 -SC_QZ0_QUAD_COUNT = 159 -SC_QZ1_QUAD_COUNT = 160 -SC_QZ2_QUAD_COUNT = 161 -SC_QZ3_QUAD_COUNT = 162 -SC_P0_HIZ_TILE_COUNT = 163 -SC_P1_HIZ_TILE_COUNT = 164 -SC_P2_HIZ_TILE_COUNT = 165 -SC_P3_HIZ_TILE_COUNT = 166 -SC_P0_HIZ_QUAD_PER_TILE_H0 = 167 -SC_P0_HIZ_QUAD_PER_TILE_H1 = 168 -SC_P0_HIZ_QUAD_PER_TILE_H2 = 169 -SC_P0_HIZ_QUAD_PER_TILE_H3 = 170 -SC_P0_HIZ_QUAD_PER_TILE_H4 = 171 -SC_P0_HIZ_QUAD_PER_TILE_H5 = 172 -SC_P0_HIZ_QUAD_PER_TILE_H6 = 173 -SC_P0_HIZ_QUAD_PER_TILE_H7 = 174 -SC_P0_HIZ_QUAD_PER_TILE_H8 = 175 -SC_P0_HIZ_QUAD_PER_TILE_H9 = 176 -SC_P0_HIZ_QUAD_PER_TILE_H10 = 177 -SC_P0_HIZ_QUAD_PER_TILE_H11 = 178 -SC_P0_HIZ_QUAD_PER_TILE_H12 = 179 -SC_P0_HIZ_QUAD_PER_TILE_H13 = 180 -SC_P0_HIZ_QUAD_PER_TILE_H14 = 181 -SC_P0_HIZ_QUAD_PER_TILE_H15 = 182 -SC_P0_HIZ_QUAD_PER_TILE_H16 = 183 -SC_P1_HIZ_QUAD_PER_TILE_H0 = 184 -SC_P1_HIZ_QUAD_PER_TILE_H1 = 185 -SC_P1_HIZ_QUAD_PER_TILE_H2 = 186 -SC_P1_HIZ_QUAD_PER_TILE_H3 = 187 -SC_P1_HIZ_QUAD_PER_TILE_H4 = 188 -SC_P1_HIZ_QUAD_PER_TILE_H5 = 189 -SC_P1_HIZ_QUAD_PER_TILE_H6 = 190 -SC_P1_HIZ_QUAD_PER_TILE_H7 = 191 -SC_P1_HIZ_QUAD_PER_TILE_H8 = 192 -SC_P1_HIZ_QUAD_PER_TILE_H9 = 193 -SC_P1_HIZ_QUAD_PER_TILE_H10 = 194 -SC_P1_HIZ_QUAD_PER_TILE_H11 = 195 -SC_P1_HIZ_QUAD_PER_TILE_H12 = 196 -SC_P1_HIZ_QUAD_PER_TILE_H13 = 197 -SC_P1_HIZ_QUAD_PER_TILE_H14 = 198 -SC_P1_HIZ_QUAD_PER_TILE_H15 = 199 -SC_P1_HIZ_QUAD_PER_TILE_H16 = 200 -SC_P2_HIZ_QUAD_PER_TILE_H0 = 201 -SC_P2_HIZ_QUAD_PER_TILE_H1 = 202 -SC_P2_HIZ_QUAD_PER_TILE_H2 = 203 -SC_P2_HIZ_QUAD_PER_TILE_H3 = 204 -SC_P2_HIZ_QUAD_PER_TILE_H4 = 205 -SC_P2_HIZ_QUAD_PER_TILE_H5 = 206 -SC_P2_HIZ_QUAD_PER_TILE_H6 = 207 -SC_P2_HIZ_QUAD_PER_TILE_H7 = 208 -SC_P2_HIZ_QUAD_PER_TILE_H8 = 209 -SC_P2_HIZ_QUAD_PER_TILE_H9 = 210 -SC_P2_HIZ_QUAD_PER_TILE_H10 = 211 -SC_P2_HIZ_QUAD_PER_TILE_H11 = 212 -SC_P2_HIZ_QUAD_PER_TILE_H12 = 213 -SC_P2_HIZ_QUAD_PER_TILE_H13 = 214 -SC_P2_HIZ_QUAD_PER_TILE_H14 = 215 -SC_P2_HIZ_QUAD_PER_TILE_H15 = 216 -SC_P2_HIZ_QUAD_PER_TILE_H16 = 217 -SC_P3_HIZ_QUAD_PER_TILE_H0 = 218 -SC_P3_HIZ_QUAD_PER_TILE_H1 = 219 -SC_P3_HIZ_QUAD_PER_TILE_H2 = 220 -SC_P3_HIZ_QUAD_PER_TILE_H3 = 221 -SC_P3_HIZ_QUAD_PER_TILE_H4 = 222 -SC_P3_HIZ_QUAD_PER_TILE_H5 = 223 -SC_P3_HIZ_QUAD_PER_TILE_H6 = 224 -SC_P3_HIZ_QUAD_PER_TILE_H7 = 225 -SC_P3_HIZ_QUAD_PER_TILE_H8 = 226 -SC_P3_HIZ_QUAD_PER_TILE_H9 = 227 -SC_P3_HIZ_QUAD_PER_TILE_H10 = 228 -SC_P3_HIZ_QUAD_PER_TILE_H11 = 229 -SC_P3_HIZ_QUAD_PER_TILE_H12 = 230 -SC_P3_HIZ_QUAD_PER_TILE_H13 = 231 -SC_P3_HIZ_QUAD_PER_TILE_H14 = 232 -SC_P3_HIZ_QUAD_PER_TILE_H15 = 233 -SC_P3_HIZ_QUAD_PER_TILE_H16 = 234 -SC_P0_HIZ_QUAD_COUNT = 235 -SC_P1_HIZ_QUAD_COUNT = 236 -SC_P2_HIZ_QUAD_COUNT = 237 -SC_P3_HIZ_QUAD_COUNT = 238 -SC_P0_DETAIL_QUAD_COUNT = 239 -SC_P1_DETAIL_QUAD_COUNT = 240 -SC_P2_DETAIL_QUAD_COUNT = 241 -SC_P3_DETAIL_QUAD_COUNT = 242 -SC_P0_DETAIL_QUAD_WITH_1_PIX = 243 -SC_P0_DETAIL_QUAD_WITH_2_PIX = 244 -SC_P0_DETAIL_QUAD_WITH_3_PIX = 245 -SC_P0_DETAIL_QUAD_WITH_4_PIX = 246 -SC_P1_DETAIL_QUAD_WITH_1_PIX = 247 -SC_P1_DETAIL_QUAD_WITH_2_PIX = 248 -SC_P1_DETAIL_QUAD_WITH_3_PIX = 249 -SC_P1_DETAIL_QUAD_WITH_4_PIX = 250 -SC_P2_DETAIL_QUAD_WITH_1_PIX = 251 -SC_P2_DETAIL_QUAD_WITH_2_PIX = 252 -SC_P2_DETAIL_QUAD_WITH_3_PIX = 253 -SC_P2_DETAIL_QUAD_WITH_4_PIX = 254 -SC_P3_DETAIL_QUAD_WITH_1_PIX = 255 -SC_P3_DETAIL_QUAD_WITH_2_PIX = 256 -SC_P3_DETAIL_QUAD_WITH_3_PIX = 257 -SC_P3_DETAIL_QUAD_WITH_4_PIX = 258 -SC_EARLYZ_QUAD_COUNT = 259 -SC_EARLYZ_QUAD_WITH_1_PIX = 260 -SC_EARLYZ_QUAD_WITH_2_PIX = 261 -SC_EARLYZ_QUAD_WITH_3_PIX = 262 -SC_EARLYZ_QUAD_WITH_4_PIX = 263 -SC_PKR_QUAD_PER_ROW_H1 = 264 -SC_PKR_QUAD_PER_ROW_H2 = 265 -SC_PKR_4X2_QUAD_SPLIT = 266 -SC_PKR_4X2_FILL_QUAD = 267 -SC_PKR_END_OF_VECTOR = 268 -SC_PKR_CONTROL_XFER = 269 -SC_PKR_DBHANG_FORCE_EOV = 270 -SC_REG_SCLK_BUSY = 271 -SC_GRP0_DYN_SCLK_BUSY = 272 -SC_GRP1_DYN_SCLK_BUSY = 273 -SC_GRP2_DYN_SCLK_BUSY = 274 -SC_GRP3_DYN_SCLK_BUSY = 275 -SC_GRP4_DYN_SCLK_BUSY = 276 -SC_PA0_SC_DATA_FIFO_RD = 277 -SC_PA0_SC_DATA_FIFO_WE = 278 -SC_PA1_SC_DATA_FIFO_RD = 279 -SC_PA1_SC_DATA_FIFO_WE = 280 -SC_PS_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 281 -SC_PS_ARB_XFC_ONLY_PRIM_CYCLES = 282 -SC_PS_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 283 -SC_PS_ARB_STALLED_FROM_BELOW = 284 -SC_PS_ARB_STARVED_FROM_ABOVE = 285 -SC_PS_ARB_SC_BUSY = 286 -SC_PS_ARB_PA_SC_BUSY = 287 -SC_PA2_SC_DATA_FIFO_RD = 288 -SC_PA2_SC_DATA_FIFO_WE = 289 -SC_PA3_SC_DATA_FIFO_RD = 290 -SC_PA3_SC_DATA_FIFO_WE = 291 -SC_PA_SC_DEALLOC_0_0_WE = 292 -SC_PA_SC_DEALLOC_0_1_WE = 293 -SC_PA_SC_DEALLOC_1_0_WE = 294 -SC_PA_SC_DEALLOC_1_1_WE = 295 -SC_PA_SC_DEALLOC_2_0_WE = 296 -SC_PA_SC_DEALLOC_2_1_WE = 297 -SC_PA_SC_DEALLOC_3_0_WE = 298 -SC_PA_SC_DEALLOC_3_1_WE = 299 -SC_PA0_SC_EOP_WE = 300 -SC_PA0_SC_EOPG_WE = 301 -SC_PA0_SC_EVENT_WE = 302 -SC_PA1_SC_EOP_WE = 303 -SC_PA1_SC_EOPG_WE = 304 -SC_PA1_SC_EVENT_WE = 305 -SC_PA2_SC_EOP_WE = 306 -SC_PA2_SC_EOPG_WE = 307 -SC_PA2_SC_EVENT_WE = 308 -SC_PA3_SC_EOP_WE = 309 -SC_PA3_SC_EOPG_WE = 310 -SC_PA3_SC_EVENT_WE = 311 -SC_PS_ARB_OOO_THRESHOLD_SWITCH_TO_DESIRED_FIFO = 312 -SC_PS_ARB_OOO_FIFO_EMPTY_SWITCH = 313 -SC_PS_ARB_NULL_PRIM_BUBBLE_POP = 314 -SC_PS_ARB_EOP_POP_SYNC_POP = 315 -SC_PS_ARB_EVENT_SYNC_POP = 316 -SC_SC_PS_ENG_MULTICYCLE_BUBBLE = 317 -SC_PA0_SC_FPOV_WE = 318 -SC_PA1_SC_FPOV_WE = 319 -SC_PA2_SC_FPOV_WE = 320 -SC_PA3_SC_FPOV_WE = 321 -SC_PA0_SC_LPOV_WE = 322 -SC_PA1_SC_LPOV_WE = 323 -SC_PA2_SC_LPOV_WE = 324 -SC_PA3_SC_LPOV_WE = 325 -SC_SC_SPI_DEALLOC_0_0 = 326 -SC_SC_SPI_DEALLOC_0_1 = 327 -SC_SC_SPI_DEALLOC_0_2 = 328 -SC_SC_SPI_DEALLOC_1_0 = 329 -SC_SC_SPI_DEALLOC_1_1 = 330 -SC_SC_SPI_DEALLOC_1_2 = 331 -SC_SC_SPI_DEALLOC_2_0 = 332 -SC_SC_SPI_DEALLOC_2_1 = 333 -SC_SC_SPI_DEALLOC_2_2 = 334 -SC_SC_SPI_DEALLOC_3_0 = 335 -SC_SC_SPI_DEALLOC_3_1 = 336 -SC_SC_SPI_DEALLOC_3_2 = 337 -SC_SC_SPI_FPOV_0 = 338 -SC_SC_SPI_FPOV_1 = 339 -SC_SC_SPI_FPOV_2 = 340 -SC_SC_SPI_FPOV_3 = 341 -SC_SC_SPI_EVENT = 342 -SC_PS_TS_EVENT_FIFO_PUSH = 343 -SC_PS_TS_EVENT_FIFO_POP = 344 -SC_PS_CTX_DONE_FIFO_PUSH = 345 -SC_PS_CTX_DONE_FIFO_POP = 346 -SC_MULTICYCLE_BUBBLE_FREEZE = 347 -SC_EOP_SYNC_WINDOW = 348 -SC_PA0_SC_NULL_WE = 349 -SC_PA0_SC_NULL_DEALLOC_WE = 350 -SC_PA0_SC_DATA_FIFO_EOPG_RD = 351 -SC_PA0_SC_DATA_FIFO_EOP_RD = 352 -SC_PA0_SC_DEALLOC_0_RD = 353 -SC_PA0_SC_DEALLOC_1_RD = 354 -SC_PA1_SC_DATA_FIFO_EOPG_RD = 355 -SC_PA1_SC_DATA_FIFO_EOP_RD = 356 -SC_PA1_SC_DEALLOC_0_RD = 357 -SC_PA1_SC_DEALLOC_1_RD = 358 -SC_PA1_SC_NULL_WE = 359 -SC_PA1_SC_NULL_DEALLOC_WE = 360 -SC_PA2_SC_DATA_FIFO_EOPG_RD = 361 -SC_PA2_SC_DATA_FIFO_EOP_RD = 362 -SC_PA2_SC_DEALLOC_0_RD = 363 -SC_PA2_SC_DEALLOC_1_RD = 364 -SC_PA2_SC_NULL_WE = 365 -SC_PA2_SC_NULL_DEALLOC_WE = 366 -SC_PA3_SC_DATA_FIFO_EOPG_RD = 367 -SC_PA3_SC_DATA_FIFO_EOP_RD = 368 -SC_PA3_SC_DEALLOC_0_RD = 369 -SC_PA3_SC_DEALLOC_1_RD = 370 -SC_PA3_SC_NULL_WE = 371 -SC_PA3_SC_NULL_DEALLOC_WE = 372 -SC_PS_PA0_SC_FIFO_EMPTY = 373 -SC_PS_PA0_SC_FIFO_FULL = 374 -SC_RESERVED_0 = 375 -SC_PS_PA1_SC_FIFO_EMPTY = 376 -SC_PS_PA1_SC_FIFO_FULL = 377 -SC_RESERVED_1 = 378 -SC_PS_PA2_SC_FIFO_EMPTY = 379 -SC_PS_PA2_SC_FIFO_FULL = 380 -SC_RESERVED_2 = 381 -SC_PS_PA3_SC_FIFO_EMPTY = 382 -SC_PS_PA3_SC_FIFO_FULL = 383 -SC_RESERVED_3 = 384 -SC_BUSY_PROCESSING_MULTICYCLE_PRIM = 385 -SC_BUSY_CNT_NOT_ZERO = 386 -SC_BM_BUSY = 387 -SC_BACKEND_BUSY = 388 -SC_SCF_SCB_INTERFACE_BUSY = 389 -SC_SCB_BUSY = 390 -SC_STARVED_BY_PA_WITH_UNSELECTED_PA_NOT_EMPTY = 391 -SC_STARVED_BY_PA_WITH_UNSELECTED_PA_FULL = 392 -SC_PBB_BIN_HIST_NUM_PRIMS = 393 -SC_PBB_BATCH_HIST_NUM_PRIMS = 394 -SC_PBB_BIN_HIST_NUM_CONTEXTS = 395 -SC_PBB_BATCH_HIST_NUM_CONTEXTS = 396 -SC_PBB_BIN_HIST_NUM_PERSISTENT_STATES = 397 -SC_PBB_BATCH_HIST_NUM_PERSISTENT_STATES = 398 -SC_PBB_BATCH_HIST_NUM_PS_WAVE_BREAKS = 399 -SC_PBB_BATCH_HIST_NUM_TRIV_REJECTED_PRIMS = 400 -SC_PBB_BATCH_HIST_NUM_ROWS_PER_PRIM = 401 -SC_PBB_BATCH_HIST_NUM_COLUMNS_PER_ROW = 402 -SC_PBB_BUSY = 403 -SC_PBB_BUSY_AND_NO_SENDS = 404 -SC_PBB_STALLS_PA_DUE_TO_NO_TILES = 405 -SC_PBB_NUM_BINS = 406 -SC_PBB_END_OF_BIN = 407 -SC_PBB_END_OF_BATCH = 408 -SC_PBB_PRIMBIN_PROCESSED = 409 -SC_PBB_PRIM_ADDED_TO_BATCH = 410 -SC_PBB_NONBINNED_PRIM = 411 -SC_PBB_TOTAL_REAL_PRIMS_OUT_OF_PBB = 412 -SC_PBB_TOTAL_NULL_PRIMS_OUT_OF_PBB = 413 -SC_PBB_IDLE_CLK_DUE_TO_ROW_TO_COLUMN_TRANSITION = 414 -SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_ROW = 415 -SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_COLUMN = 416 -SC_PBB_BATCH_BREAK_DUE_TO_PERSISTENT_STATE = 417 -SC_PBB_BATCH_BREAK_DUE_TO_CONTEXT_STATE = 418 -SC_PBB_BATCH_BREAK_DUE_TO_PRIM = 419 -SC_PBB_BATCH_BREAK_DUE_TO_PC_STORAGE = 420 -SC_PBB_BATCH_BREAK_DUE_TO_EVENT = 421 -SC_PBB_BATCH_BREAK_DUE_TO_FPOV_LIMIT = 422 -SC_POPS_INTRA_WAVE_OVERLAPS = 423 -SC_POPS_FORCE_EOV = 424 -SC_PKR_QUAD_OVLP_NOT_FOUND_IN_WAVE_TABLE_AND_WAVES_SINCE_OVLP_SET_TO_MAX = 425 -SC_PKR_QUAD_OVLP_NOT_FOUND_IN_WAVE_TABLE_AND_NO_CHANGE_TO_WAVES_SINCE_OVLP = 426 -SC_PKR_QUAD_OVLP_FOUND_IN_WAVE_TABLE = 427 -SC_FULL_FULL_QUAD = 428 -SC_FULL_HALF_QUAD = 429 -SC_FULL_QTR_QUAD = 430 -SC_HALF_FULL_QUAD = 431 -SC_HALF_HALF_QUAD = 432 -SC_HALF_QTR_QUAD = 433 -SC_QTR_FULL_QUAD = 434 -SC_QTR_HALF_QUAD = 435 -SC_QTR_QTR_QUAD = 436 -SC_GRP5_DYN_SCLK_BUSY = 437 -SC_GRP6_DYN_SCLK_BUSY = 438 -SC_GRP7_DYN_SCLK_BUSY = 439 -SC_GRP8_DYN_SCLK_BUSY = 440 -SC_GRP9_DYN_SCLK_BUSY = 441 -SC_PS_TO_BE_SCLK_GATE_STALL = 442 -SC_PA_TO_PBB_SCLK_GATE_STALL_STALL = 443 -SC_PK_BUSY = 444 -SC_PK_MAX_DEALLOC_FORCE_EOV = 445 -SC_PK_DEALLOC_WAVE_BREAK = 446 -SC_SPI_SEND = 447 -SC_SPI_CREDIT_AT_ZERO_WITH_PENDING_SEND = 448 -SC_SPI_CREDIT_AT_MAX = 449 -SC_SPI_CREDIT_AT_MAX_NO_PENDING_SEND = 450 -SC_BCI_SEND = 451 -SC_BCI_CREDIT_AT_ZERO_WITH_PENDING_SEND = 452 -SC_BCI_CREDIT_AT_MAX = 453 -SC_BCI_CREDIT_AT_MAX_NO_PENDING_SEND = 454 -SC_SPIBC_FULL_FREEZE = 455 -SC_PW_BM_PASS_EMPTY_PRIM = 456 -SC_SUPERTILE_COUNT_EXCLUDE_PASS_EMPTY_PRIM = 457 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H0 = 458 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H1 = 459 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H2 = 460 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H3 = 461 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H4 = 462 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H5 = 463 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H6 = 464 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H7 = 465 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H8 = 466 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H9 = 467 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H10 = 468 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H11 = 469 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H12 = 470 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H13 = 471 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H14 = 472 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H15 = 473 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H16 = 474 -SC_DB0_TILE_INTERFACE_BUSY = 475 -SC_DB0_TILE_INTERFACE_SEND = 476 -SC_DB0_TILE_INTERFACE_SEND_EVENT = 477 -SC_DB0_TILE_INTERFACE_SEND_SOP_ONLY_EVENT = 478 -SC_DB0_TILE_INTERFACE_SEND_SOP = 479 -SC_DB0_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND = 480 -SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX = 481 -SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND = 482 -SC_DB1_TILE_INTERFACE_BUSY = 483 -SC_DB1_TILE_INTERFACE_SEND = 484 -SC_DB1_TILE_INTERFACE_SEND_EVENT = 485 -SC_DB1_TILE_INTERFACE_SEND_SOP_ONLY_EVENT = 486 -SC_DB1_TILE_INTERFACE_SEND_SOP = 487 -SC_DB1_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND = 488 -SC_DB1_TILE_INTERFACE_CREDIT_AT_MAX = 489 -SC_DB1_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND = 490 -SC_BACKEND_PRIM_FIFO_FULL = 491 -SC_PBB_BATCH_BREAK_DUE_TO_TIMEOUT_COUNTER = 492 -SC_PBB_BATCH_BREAK_DUE_TO_NONBINNED_BATCH = 493 -SC_PBB_BATCH_BREAK_DUE_TO_DEBUG_DATA_PER_DRAW_DISPATCH = 494 -SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_PERSISTENT = 495 -SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_CONTEXT = 496 -SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_FPOV = 497 -SC_PBB_BATCH_BREAK_DUE_TO_NEW_SC_MODE = 498 -SC_PBB_BATCH_BREAK_DUE_TO_BINNING_MODE_CHANGE = 499 -SC_PBB_BATCH_BREAK_DUE_TO_PIPELINE_EVENT_COUNT = 500 -SC_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SePairXsel' -SePairXsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_PAIR_XSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_PAIR_XSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_PAIR_XSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_PAIR_XSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SE_PAIR_XSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_PAIR_XSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_PAIR_XSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_PAIR_XSEL_64_WIDE_TILE = 3 -SePairXsel = ctypes.c_uint32 # enum - -# values for enumeration 'SePairYsel' -SePairYsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_PAIR_YSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_PAIR_YSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_PAIR_YSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_PAIR_YSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SE_PAIR_YSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_PAIR_YSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_PAIR_YSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_PAIR_YSEL_64_WIDE_TILE = 3 -SePairYsel = ctypes.c_uint32 # enum - -# values for enumeration 'SePairMap' -SePairMap__enumvalues = { - 0: 'RASTER_CONFIG_SE_PAIR_MAP_0', - 1: 'RASTER_CONFIG_SE_PAIR_MAP_1', - 2: 'RASTER_CONFIG_SE_PAIR_MAP_2', - 3: 'RASTER_CONFIG_SE_PAIR_MAP_3', -} -RASTER_CONFIG_SE_PAIR_MAP_0 = 0 -RASTER_CONFIG_SE_PAIR_MAP_1 = 1 -RASTER_CONFIG_SE_PAIR_MAP_2 = 2 -RASTER_CONFIG_SE_PAIR_MAP_3 = 3 -SePairMap = ctypes.c_uint32 # enum - -# values for enumeration 'SeXsel' -SeXsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_XSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_XSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_XSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_XSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SE_XSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_XSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_XSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_XSEL_64_WIDE_TILE = 3 -SeXsel = ctypes.c_uint32 # enum - -# values for enumeration 'SeYsel' -SeYsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_YSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_YSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_YSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_YSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SE_YSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_YSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_YSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_YSEL_64_WIDE_TILE = 3 -SeYsel = ctypes.c_uint32 # enum - -# values for enumeration 'SeMap' -SeMap__enumvalues = { - 0: 'RASTER_CONFIG_SE_MAP_0', - 1: 'RASTER_CONFIG_SE_MAP_1', - 2: 'RASTER_CONFIG_SE_MAP_2', - 3: 'RASTER_CONFIG_SE_MAP_3', -} -RASTER_CONFIG_SE_MAP_0 = 0 -RASTER_CONFIG_SE_MAP_1 = 1 -RASTER_CONFIG_SE_MAP_2 = 2 -RASTER_CONFIG_SE_MAP_3 = 3 -SeMap = ctypes.c_uint32 # enum - -# values for enumeration 'ScXsel' -ScXsel__enumvalues = { - 0: 'RASTER_CONFIG_SC_XSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SC_XSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SC_XSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SC_XSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SC_XSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SC_XSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SC_XSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SC_XSEL_64_WIDE_TILE = 3 -ScXsel = ctypes.c_uint32 # enum - -# values for enumeration 'ScYsel' -ScYsel__enumvalues = { - 0: 'RASTER_CONFIG_SC_YSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SC_YSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SC_YSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SC_YSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SC_YSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SC_YSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SC_YSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SC_YSEL_64_WIDE_TILE = 3 -ScYsel = ctypes.c_uint32 # enum - -# values for enumeration 'ScMap' -ScMap__enumvalues = { - 0: 'RASTER_CONFIG_SC_MAP_0', - 1: 'RASTER_CONFIG_SC_MAP_1', - 2: 'RASTER_CONFIG_SC_MAP_2', - 3: 'RASTER_CONFIG_SC_MAP_3', -} -RASTER_CONFIG_SC_MAP_0 = 0 -RASTER_CONFIG_SC_MAP_1 = 1 -RASTER_CONFIG_SC_MAP_2 = 2 -RASTER_CONFIG_SC_MAP_3 = 3 -ScMap = ctypes.c_uint32 # enum - -# values for enumeration 'PkrXsel2' -PkrXsel2__enumvalues = { - 0: 'RASTER_CONFIG_PKR_XSEL2_0', - 1: 'RASTER_CONFIG_PKR_XSEL2_1', - 2: 'RASTER_CONFIG_PKR_XSEL2_2', - 3: 'RASTER_CONFIG_PKR_XSEL2_3', -} -RASTER_CONFIG_PKR_XSEL2_0 = 0 -RASTER_CONFIG_PKR_XSEL2_1 = 1 -RASTER_CONFIG_PKR_XSEL2_2 = 2 -RASTER_CONFIG_PKR_XSEL2_3 = 3 -PkrXsel2 = ctypes.c_uint32 # enum - -# values for enumeration 'PkrXsel' -PkrXsel__enumvalues = { - 0: 'RASTER_CONFIG_PKR_XSEL_0', - 1: 'RASTER_CONFIG_PKR_XSEL_1', - 2: 'RASTER_CONFIG_PKR_XSEL_2', - 3: 'RASTER_CONFIG_PKR_XSEL_3', -} -RASTER_CONFIG_PKR_XSEL_0 = 0 -RASTER_CONFIG_PKR_XSEL_1 = 1 -RASTER_CONFIG_PKR_XSEL_2 = 2 -RASTER_CONFIG_PKR_XSEL_3 = 3 -PkrXsel = ctypes.c_uint32 # enum - -# values for enumeration 'PkrYsel' -PkrYsel__enumvalues = { - 0: 'RASTER_CONFIG_PKR_YSEL_0', - 1: 'RASTER_CONFIG_PKR_YSEL_1', - 2: 'RASTER_CONFIG_PKR_YSEL_2', - 3: 'RASTER_CONFIG_PKR_YSEL_3', -} -RASTER_CONFIG_PKR_YSEL_0 = 0 -RASTER_CONFIG_PKR_YSEL_1 = 1 -RASTER_CONFIG_PKR_YSEL_2 = 2 -RASTER_CONFIG_PKR_YSEL_3 = 3 -PkrYsel = ctypes.c_uint32 # enum - -# values for enumeration 'PkrMap' -PkrMap__enumvalues = { - 0: 'RASTER_CONFIG_PKR_MAP_0', - 1: 'RASTER_CONFIG_PKR_MAP_1', - 2: 'RASTER_CONFIG_PKR_MAP_2', - 3: 'RASTER_CONFIG_PKR_MAP_3', -} -RASTER_CONFIG_PKR_MAP_0 = 0 -RASTER_CONFIG_PKR_MAP_1 = 1 -RASTER_CONFIG_PKR_MAP_2 = 2 -RASTER_CONFIG_PKR_MAP_3 = 3 -PkrMap = ctypes.c_uint32 # enum - -# values for enumeration 'RbXsel' -RbXsel__enumvalues = { - 0: 'RASTER_CONFIG_RB_XSEL_0', - 1: 'RASTER_CONFIG_RB_XSEL_1', -} -RASTER_CONFIG_RB_XSEL_0 = 0 -RASTER_CONFIG_RB_XSEL_1 = 1 -RbXsel = ctypes.c_uint32 # enum - -# values for enumeration 'RbYsel' -RbYsel__enumvalues = { - 0: 'RASTER_CONFIG_RB_YSEL_0', - 1: 'RASTER_CONFIG_RB_YSEL_1', -} -RASTER_CONFIG_RB_YSEL_0 = 0 -RASTER_CONFIG_RB_YSEL_1 = 1 -RbYsel = ctypes.c_uint32 # enum - -# values for enumeration 'RbXsel2' -RbXsel2__enumvalues = { - 0: 'RASTER_CONFIG_RB_XSEL2_0', - 1: 'RASTER_CONFIG_RB_XSEL2_1', - 2: 'RASTER_CONFIG_RB_XSEL2_2', - 3: 'RASTER_CONFIG_RB_XSEL2_3', -} -RASTER_CONFIG_RB_XSEL2_0 = 0 -RASTER_CONFIG_RB_XSEL2_1 = 1 -RASTER_CONFIG_RB_XSEL2_2 = 2 -RASTER_CONFIG_RB_XSEL2_3 = 3 -RbXsel2 = ctypes.c_uint32 # enum - -# values for enumeration 'RbMap' -RbMap__enumvalues = { - 0: 'RASTER_CONFIG_RB_MAP_0', - 1: 'RASTER_CONFIG_RB_MAP_1', - 2: 'RASTER_CONFIG_RB_MAP_2', - 3: 'RASTER_CONFIG_RB_MAP_3', -} -RASTER_CONFIG_RB_MAP_0 = 0 -RASTER_CONFIG_RB_MAP_1 = 1 -RASTER_CONFIG_RB_MAP_2 = 2 -RASTER_CONFIG_RB_MAP_3 = 3 -RbMap = ctypes.c_uint32 # enum - -# values for enumeration 'BinningMode' -BinningMode__enumvalues = { - 0: 'BINNING_ALLOWED', - 1: 'FORCE_BINNING_ON', - 2: 'DISABLE_BINNING_USE_NEW_SC', - 3: 'DISABLE_BINNING_USE_LEGACY_SC', -} -BINNING_ALLOWED = 0 -FORCE_BINNING_ON = 1 -DISABLE_BINNING_USE_NEW_SC = 2 -DISABLE_BINNING_USE_LEGACY_SC = 3 -BinningMode = ctypes.c_uint32 # enum - -# values for enumeration 'BinSizeExtend' -BinSizeExtend__enumvalues = { - 0: 'BIN_SIZE_32_PIXELS', - 1: 'BIN_SIZE_64_PIXELS', - 2: 'BIN_SIZE_128_PIXELS', - 3: 'BIN_SIZE_256_PIXELS', - 4: 'BIN_SIZE_512_PIXELS', -} -BIN_SIZE_32_PIXELS = 0 -BIN_SIZE_64_PIXELS = 1 -BIN_SIZE_128_PIXELS = 2 -BIN_SIZE_256_PIXELS = 3 -BIN_SIZE_512_PIXELS = 4 -BinSizeExtend = ctypes.c_uint32 # enum - -# values for enumeration 'BinMapMode' -BinMapMode__enumvalues = { - 0: 'BIN_MAP_MODE_NONE', - 1: 'BIN_MAP_MODE_RTA_INDEX', - 2: 'BIN_MAP_MODE_POPS', -} -BIN_MAP_MODE_NONE = 0 -BIN_MAP_MODE_RTA_INDEX = 1 -BIN_MAP_MODE_POPS = 2 -BinMapMode = ctypes.c_uint32 # enum - -# values for enumeration 'BinEventCntl' -BinEventCntl__enumvalues = { - 0: 'BINNER_BREAK_BATCH', - 1: 'BINNER_PIPELINE', - 2: 'BINNER_DROP', - 3: 'BINNER_DROP_ASSERT', -} -BINNER_BREAK_BATCH = 0 -BINNER_PIPELINE = 1 -BINNER_DROP = 2 -BINNER_DROP_ASSERT = 3 -BinEventCntl = ctypes.c_uint32 # enum - -# values for enumeration 'CovToShaderSel' -CovToShaderSel__enumvalues = { - 0: 'INPUT_COVERAGE', - 1: 'INPUT_INNER_COVERAGE', - 2: 'INPUT_DEPTH_COVERAGE', - 3: 'RAW', -} -INPUT_COVERAGE = 0 -INPUT_INNER_COVERAGE = 1 -INPUT_DEPTH_COVERAGE = 2 -RAW = 3 -CovToShaderSel = ctypes.c_uint32 # enum - -# values for enumeration 'ScUncertaintyRegionMode' -ScUncertaintyRegionMode__enumvalues = { - 0: 'SC_HALF_LSB', - 1: 'SC_LSB_ONE_SIDED', - 2: 'SC_LSB_TWO_SIDED', -} -SC_HALF_LSB = 0 -SC_LSB_ONE_SIDED = 1 -SC_LSB_TWO_SIDED = 2 -ScUncertaintyRegionMode = ctypes.c_uint32 # enum - -# values for enumeration 'RMIPerfSel' -RMIPerfSel__enumvalues = { - 0: 'RMI_PERF_SEL_NONE', - 1: 'RMI_PERF_SEL_BUSY', - 2: 'RMI_PERF_SEL_REG_CLK_VLD', - 3: 'RMI_PERF_SEL_DYN_CLK_CMN_VLD', - 4: 'RMI_PERF_SEL_DYN_CLK_RB_VLD', - 5: 'RMI_PERF_SEL_DYN_CLK_PERF_VLD', - 6: 'RMI_PERF_SEL_PERF_WINDOW', - 7: 'RMI_PERF_SEL_EVENT_SEND', - 8: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID0', - 9: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID1', - 10: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID2', - 11: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID3', - 12: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID4', - 13: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID5', - 14: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID6', - 15: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID7', - 16: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID8', - 17: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID9', - 18: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID10', - 19: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID11', - 20: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID12', - 21: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID13', - 22: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID14', - 23: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID15', - 24: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID_ALL', - 25: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID0', - 26: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID1', - 27: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID2', - 28: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID3', - 29: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID4', - 30: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID5', - 31: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID6', - 32: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID7', - 33: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID8', - 34: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID9', - 35: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID10', - 36: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID11', - 37: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID12', - 38: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID13', - 39: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID14', - 40: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID15', - 41: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID_ALL', - 42: 'RMI_PERF_SEL_UTCL1_TRANSLATION_MISS', - 43: 'RMI_PERF_SEL_UTCL1_PERMISSION_MISS', - 44: 'RMI_PERF_SEL_UTCL1_TRANSLATION_HIT', - 45: 'RMI_PERF_SEL_UTCL1_REQUEST', - 46: 'RMI_PERF_SEL_UTCL1_STALL_INFLIGHT_MAX', - 47: 'RMI_PERF_SEL_UTCL1_STALL_LRU_INFLIGHT', - 48: 'RMI_PERF_SEL_UTCL1_LFIFO_FULL', - 49: 'RMI_PERF_SEL_UTCL1_STALL_LFIFO_NOT_RES', - 50: 'RMI_PERF_SEL_UTCL1_STALL_UTCL2_REQ_OUT_OF_CREDITS', - 51: 'RMI_PERF_SEL_UTCL1_STALL_MISSFIFO_FULL', - 52: 'RMI_PERF_SEL_UTCL1_HIT_FIFO_FULL', - 53: 'RMI_PERF_SEL_UTCL1_STALL_MULTI_MISS', - 54: 'RMI_PERF_SEL_RB_RMI_WRREQ_ALL_CID', - 55: 'RMI_PERF_SEL_RB_RMI_WRREQ_TO_WRRET_BUSY', - 56: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID0', - 57: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID1', - 58: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID2', - 59: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID3', - 60: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID4', - 61: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID5', - 62: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID6', - 63: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID7', - 64: 'RMI_PERF_SEL_RB_RMI_32BWRREQ_INFLIGHT_ALL_ORONE_CID', - 65: 'RMI_PERF_SEL_RB_RMI_WRREQ_BURST_LENGTH_ALL_ORONE_CID', - 66: 'RMI_PERF_SEL_RB_RMI_WRREQ_BURST_ALL_ORONE_CID', - 67: 'RMI_PERF_SEL_RB_RMI_WRREQ_RESIDENCY', - 68: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_ALL_CID', - 69: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID0', - 70: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID1', - 71: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID2', - 72: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID3', - 73: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID4', - 74: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID5', - 75: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID6', - 76: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID7', - 77: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK0', - 78: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK1', - 79: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK2', - 80: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK3', - 81: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_ALL_CID', - 82: 'RMI_PERF_SEL_RB_RMI_RDREQ_ALL_CID', - 83: 'RMI_PERF_SEL_RB_RMI_RDREQ_TO_RDRET_BUSY', - 84: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID0', - 85: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID1', - 86: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID2', - 87: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID3', - 88: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID4', - 89: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID5', - 90: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID6', - 91: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID7', - 92: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID0', - 93: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID1', - 94: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID2', - 95: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID3', - 96: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID4', - 97: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID5', - 98: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID6', - 99: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID7', - 100: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_INFLIGHT_ALL_ORONE_CID', - 101: 'RMI_PERF_SEL_RB_RMI_RDREQ_BURST_LENGTH_ALL_ORONE_CID', - 102: 'RMI_PERF_SEL_RB_RMI_RDREQ_BURST_ALL_ORONE_CID', - 103: 'RMI_PERF_SEL_RB_RMI_RDREQ_RESIDENCY', - 104: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_ALL_CID', - 105: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID0', - 106: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID1', - 107: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID2', - 108: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID3', - 109: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID4', - 110: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID5', - 111: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID6', - 112: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID7', - 113: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK0', - 114: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK1', - 115: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK2', - 116: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK3', - 117: 'RMI_PERF_SEL_RB_RMI_WR_FIFO_MAX', - 118: 'RMI_PERF_SEL_RB_RMI_WR_FIFO_EMPTY', - 119: 'RMI_PERF_SEL_RB_RMI_WR_IDLE', - 120: 'RMI_PERF_SEL_RB_RMI_WR_STARVE', - 121: 'RMI_PERF_SEL_RB_RMI_WR_STALL', - 122: 'RMI_PERF_SEL_RB_RMI_WR_BUSY', - 123: 'RMI_PERF_SEL_RB_RMI_WR_INTF_BUSY', - 124: 'RMI_PERF_SEL_RB_RMI_RD_FIFO_MAX', - 125: 'RMI_PERF_SEL_RB_RMI_RD_FIFO_EMPTY', - 126: 'RMI_PERF_SEL_RB_RMI_RD_IDLE', - 127: 'RMI_PERF_SEL_RB_RMI_RD_STARVE', - 128: 'RMI_PERF_SEL_RB_RMI_RD_STALL', - 129: 'RMI_PERF_SEL_RB_RMI_RD_BUSY', - 130: 'RMI_PERF_SEL_RB_RMI_RD_INTF_BUSY', - 131: 'RMI_PERF_SEL_RMI_TC_64BWRREQ_ALL_ORONE_CID', - 132: 'RMI_PERF_SEL_RMI_TC_64BRDREQ_ALL_ORONE_CID', - 133: 'RMI_PERF_SEL_RMI_TC_WRREQ_ALL_CID', - 134: 'RMI_PERF_SEL_RMI_TC_REQ_BUSY', - 135: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID0', - 136: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID1', - 137: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID2', - 138: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID3', - 139: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID4', - 140: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID5', - 141: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID6', - 142: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID7', - 143: 'RMI_PERF_SEL_RMI_TC_WRREQ_INFLIGHT_ALL_CID', - 144: 'RMI_PERF_SEL_TC_RMI_WRRET_VALID_ALL_CID', - 145: 'RMI_PERF_SEL_RMI_TC_RDREQ_ALL_CID', - 146: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID0', - 147: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID1', - 148: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID2', - 149: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID3', - 150: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID4', - 151: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID5', - 152: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID6', - 153: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID7', - 154: 'RMI_PERF_SEL_RMI_TC_STALL_RDREQ', - 155: 'RMI_PERF_SEL_RMI_TC_STALL_WRREQ', - 156: 'RMI_PERF_SEL_RMI_TC_STALL_ALLREQ', - 157: 'RMI_PERF_SEL_RMI_TC_CREDIT_FULL_NO_PENDING_SEND', - 158: 'RMI_PERF_SEL_RMI_TC_CREDIT_ZERO_PENDING_SEND', - 159: 'RMI_PERF_SEL_RMI_TC_RDREQ_INFLIGHT_ALL_CID', - 160: 'RMI_PERF_SEL_TC_RMI_RDRET_VALID_ALL_CID', - 161: 'RMI_PERF_SEL_UTCL1_BUSY', - 162: 'RMI_PERF_SEL_RMI_UTC_REQ', - 163: 'RMI_PERF_SEL_RMI_UTC_BUSY', - 164: 'RMI_PERF_SEL_UTCL1_UTCL2_REQ', - 165: 'RMI_PERF_SEL_LEVEL_ADD_UTCL1_TO_UTCL2', - 166: 'RMI_PERF_SEL_PROBE_UTCL1_XNACK_RETRY', - 167: 'RMI_PERF_SEL_PROBE_UTCL1_ALL_FAULT', - 168: 'RMI_PERF_SEL_PROBE_UTCL1_PRT_FAULT', - 169: 'RMI_PERF_SEL_PROBE_UTCL1_VMID_BYPASS', - 170: 'RMI_PERF_SEL_PROBE_UTCL1_XNACK_NORETRY_FAULT', - 171: 'RMI_PERF_SEL_XNACK_FIFO_NUM_USED', - 172: 'RMI_PERF_SEL_LAT_FIFO_NUM_USED', - 173: 'RMI_PERF_SEL_LAT_FIFO_BLOCKING_REQ', - 174: 'RMI_PERF_SEL_LAT_FIFO_NONBLOCKING_REQ', - 175: 'RMI_PERF_SEL_XNACK_FIFO_FULL', - 176: 'RMI_PERF_SEL_XNACK_FIFO_BUSY', - 177: 'RMI_PERF_SEL_LAT_FIFO_FULL', - 178: 'RMI_PERF_SEL_SKID_FIFO_DEPTH', - 179: 'RMI_PERF_SEL_TCIW_INFLIGHT_COUNT', - 180: 'RMI_PERF_SEL_PRT_FIFO_NUM_USED', - 181: 'RMI_PERF_SEL_PRT_FIFO_REQ', - 182: 'RMI_PERF_SEL_PRT_FIFO_BUSY', - 183: 'RMI_PERF_SEL_TCIW_REQ', - 184: 'RMI_PERF_SEL_TCIW_BUSY', - 185: 'RMI_PERF_SEL_SKID_FIFO_REQ', - 186: 'RMI_PERF_SEL_SKID_FIFO_BUSY', - 187: 'RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK0', - 188: 'RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK1', - 189: 'RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK2', - 190: 'RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK3', - 191: 'RMI_PERF_SEL_XBAR_PROBEGEN_RTS_RTR', - 192: 'RMI_PERF_SEL_XBAR_PROBEGEN_RTSB_RTR', - 193: 'RMI_PERF_SEL_XBAR_PROBEGEN_RTS_RTRB', - 194: 'RMI_PERF_SEL_XBAR_PROBEGEN_RTSB_RTRB', - 195: 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTS_RTR', - 196: 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTSB_RTR', - 197: 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTS_RTRB', - 198: 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTSB_RTRB', - 199: 'RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTS_RTR', - 200: 'RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTSB_RTR', - 201: 'RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTS_RTRB', - 202: 'RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTSB_RTRB', - 203: 'RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTS_RTR', - 204: 'RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTSB_RTR', - 205: 'RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTS_RTRB', - 206: 'RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTSB_RTRB', - 207: 'RMI_PERF_SEL_POP_DEMUX_RTS_RTR', - 208: 'RMI_PERF_SEL_POP_DEMUX_RTSB_RTR', - 209: 'RMI_PERF_SEL_POP_DEMUX_RTS_RTRB', - 210: 'RMI_PERF_SEL_POP_DEMUX_RTSB_RTRB', - 211: 'RMI_PERF_SEL_PROBEGEN_UTC_RTS_RTR', - 212: 'RMI_PERF_SEL_LEVEL_ADD_RMI_TO_UTC', - 213: 'RMI_PERF_SEL_PROBEGEN_UTC_RTSB_RTR', - 214: 'RMI_PERF_SEL_PROBEGEN_UTC_RTS_RTRB', - 215: 'RMI_PERF_SEL_PROBEGEN_UTC_RTSB_RTRB', - 216: 'RMI_PERF_SEL_UTC_POP_RTS_RTR', - 217: 'RMI_PERF_SEL_UTC_POP_RTSB_RTR', - 218: 'RMI_PERF_SEL_UTC_POP_RTS_RTRB', - 219: 'RMI_PERF_SEL_UTC_POP_RTSB_RTRB', - 220: 'RMI_PERF_SEL_POP_XNACK_RTS_RTR', - 221: 'RMI_PERF_SEL_POP_XNACK_RTSB_RTR', - 222: 'RMI_PERF_SEL_POP_XNACK_RTS_RTRB', - 223: 'RMI_PERF_SEL_POP_XNACK_RTSB_RTRB', - 224: 'RMI_PERF_SEL_XNACK_PROBEGEN_RTS_RTR', - 225: 'RMI_PERF_SEL_XNACK_PROBEGEN_RTSB_RTR', - 226: 'RMI_PERF_SEL_XNACK_PROBEGEN_RTS_RTRB', - 227: 'RMI_PERF_SEL_XNACK_PROBEGEN_RTSB_RTRB', - 228: 'RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTS_RTR', - 229: 'RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTSB_RTR', - 230: 'RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTS_RTRB', - 231: 'RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTSB_RTRB', - 232: 'RMI_PERF_SEL_SKID_FIFO_IN_RTS', - 233: 'RMI_PERF_SEL_SKID_FIFO_IN_RTSB', - 234: 'RMI_PERF_SEL_SKID_FIFO_OUT_RTS', - 235: 'RMI_PERF_SEL_SKID_FIFO_OUT_RTSB', - 236: 'RMI_PERF_SEL_XBAR_PROBEGEN_READ_RTS_RTR', - 237: 'RMI_PERF_SEL_XBAR_PROBEGEN_WRITE_RTS_RTR', - 238: 'RMI_PERF_SEL_XBAR_PROBEGEN_IN0_RTS_RTR', - 239: 'RMI_PERF_SEL_XBAR_PROBEGEN_IN1_RTS_RTR', - 240: 'RMI_PERF_SEL_XBAR_PROBEGEN_CB_RTS_RTR', - 241: 'RMI_PERF_SEL_XBAR_PROBEGEN_DB_RTS_RTR', - 242: 'RMI_PERF_SEL_REORDER_FIFO_REQ', - 243: 'RMI_PERF_SEL_REORDER_FIFO_BUSY', - 244: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_ALL_CID', - 245: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID0', - 246: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID1', - 247: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID2', - 248: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID3', - 249: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID4', - 250: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID5', - 251: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID6', - 252: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID7', - 253: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK0', - 254: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK1', - 255: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK2', - 256: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK3', -} -RMI_PERF_SEL_NONE = 0 -RMI_PERF_SEL_BUSY = 1 -RMI_PERF_SEL_REG_CLK_VLD = 2 -RMI_PERF_SEL_DYN_CLK_CMN_VLD = 3 -RMI_PERF_SEL_DYN_CLK_RB_VLD = 4 -RMI_PERF_SEL_DYN_CLK_PERF_VLD = 5 -RMI_PERF_SEL_PERF_WINDOW = 6 -RMI_PERF_SEL_EVENT_SEND = 7 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID0 = 8 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID1 = 9 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID2 = 10 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID3 = 11 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID4 = 12 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID5 = 13 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID6 = 14 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID7 = 15 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID8 = 16 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID9 = 17 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID10 = 18 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID11 = 19 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID12 = 20 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID13 = 21 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID14 = 22 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID15 = 23 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID_ALL = 24 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID0 = 25 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID1 = 26 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID2 = 27 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID3 = 28 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID4 = 29 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID5 = 30 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID6 = 31 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID7 = 32 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID8 = 33 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID9 = 34 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID10 = 35 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID11 = 36 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID12 = 37 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID13 = 38 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID14 = 39 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID15 = 40 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID_ALL = 41 -RMI_PERF_SEL_UTCL1_TRANSLATION_MISS = 42 -RMI_PERF_SEL_UTCL1_PERMISSION_MISS = 43 -RMI_PERF_SEL_UTCL1_TRANSLATION_HIT = 44 -RMI_PERF_SEL_UTCL1_REQUEST = 45 -RMI_PERF_SEL_UTCL1_STALL_INFLIGHT_MAX = 46 -RMI_PERF_SEL_UTCL1_STALL_LRU_INFLIGHT = 47 -RMI_PERF_SEL_UTCL1_LFIFO_FULL = 48 -RMI_PERF_SEL_UTCL1_STALL_LFIFO_NOT_RES = 49 -RMI_PERF_SEL_UTCL1_STALL_UTCL2_REQ_OUT_OF_CREDITS = 50 -RMI_PERF_SEL_UTCL1_STALL_MISSFIFO_FULL = 51 -RMI_PERF_SEL_UTCL1_HIT_FIFO_FULL = 52 -RMI_PERF_SEL_UTCL1_STALL_MULTI_MISS = 53 -RMI_PERF_SEL_RB_RMI_WRREQ_ALL_CID = 54 -RMI_PERF_SEL_RB_RMI_WRREQ_TO_WRRET_BUSY = 55 -RMI_PERF_SEL_RB_RMI_WRREQ_CID0 = 56 -RMI_PERF_SEL_RB_RMI_WRREQ_CID1 = 57 -RMI_PERF_SEL_RB_RMI_WRREQ_CID2 = 58 -RMI_PERF_SEL_RB_RMI_WRREQ_CID3 = 59 -RMI_PERF_SEL_RB_RMI_WRREQ_CID4 = 60 -RMI_PERF_SEL_RB_RMI_WRREQ_CID5 = 61 -RMI_PERF_SEL_RB_RMI_WRREQ_CID6 = 62 -RMI_PERF_SEL_RB_RMI_WRREQ_CID7 = 63 -RMI_PERF_SEL_RB_RMI_32BWRREQ_INFLIGHT_ALL_ORONE_CID = 64 -RMI_PERF_SEL_RB_RMI_WRREQ_BURST_LENGTH_ALL_ORONE_CID = 65 -RMI_PERF_SEL_RB_RMI_WRREQ_BURST_ALL_ORONE_CID = 66 -RMI_PERF_SEL_RB_RMI_WRREQ_RESIDENCY = 67 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_ALL_CID = 68 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID0 = 69 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID1 = 70 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID2 = 71 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID3 = 72 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID4 = 73 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID5 = 74 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID6 = 75 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID7 = 76 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK0 = 77 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK1 = 78 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK2 = 79 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK3 = 80 -RMI_PERF_SEL_RB_RMI_32BRDREQ_ALL_CID = 81 -RMI_PERF_SEL_RB_RMI_RDREQ_ALL_CID = 82 -RMI_PERF_SEL_RB_RMI_RDREQ_TO_RDRET_BUSY = 83 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID0 = 84 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID1 = 85 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID2 = 86 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID3 = 87 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID4 = 88 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID5 = 89 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID6 = 90 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID7 = 91 -RMI_PERF_SEL_RB_RMI_RDREQ_CID0 = 92 -RMI_PERF_SEL_RB_RMI_RDREQ_CID1 = 93 -RMI_PERF_SEL_RB_RMI_RDREQ_CID2 = 94 -RMI_PERF_SEL_RB_RMI_RDREQ_CID3 = 95 -RMI_PERF_SEL_RB_RMI_RDREQ_CID4 = 96 -RMI_PERF_SEL_RB_RMI_RDREQ_CID5 = 97 -RMI_PERF_SEL_RB_RMI_RDREQ_CID6 = 98 -RMI_PERF_SEL_RB_RMI_RDREQ_CID7 = 99 -RMI_PERF_SEL_RB_RMI_32BRDREQ_INFLIGHT_ALL_ORONE_CID = 100 -RMI_PERF_SEL_RB_RMI_RDREQ_BURST_LENGTH_ALL_ORONE_CID = 101 -RMI_PERF_SEL_RB_RMI_RDREQ_BURST_ALL_ORONE_CID = 102 -RMI_PERF_SEL_RB_RMI_RDREQ_RESIDENCY = 103 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_ALL_CID = 104 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID0 = 105 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID1 = 106 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID2 = 107 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID3 = 108 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID4 = 109 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID5 = 110 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID6 = 111 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID7 = 112 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK0 = 113 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK1 = 114 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK2 = 115 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK3 = 116 -RMI_PERF_SEL_RB_RMI_WR_FIFO_MAX = 117 -RMI_PERF_SEL_RB_RMI_WR_FIFO_EMPTY = 118 -RMI_PERF_SEL_RB_RMI_WR_IDLE = 119 -RMI_PERF_SEL_RB_RMI_WR_STARVE = 120 -RMI_PERF_SEL_RB_RMI_WR_STALL = 121 -RMI_PERF_SEL_RB_RMI_WR_BUSY = 122 -RMI_PERF_SEL_RB_RMI_WR_INTF_BUSY = 123 -RMI_PERF_SEL_RB_RMI_RD_FIFO_MAX = 124 -RMI_PERF_SEL_RB_RMI_RD_FIFO_EMPTY = 125 -RMI_PERF_SEL_RB_RMI_RD_IDLE = 126 -RMI_PERF_SEL_RB_RMI_RD_STARVE = 127 -RMI_PERF_SEL_RB_RMI_RD_STALL = 128 -RMI_PERF_SEL_RB_RMI_RD_BUSY = 129 -RMI_PERF_SEL_RB_RMI_RD_INTF_BUSY = 130 -RMI_PERF_SEL_RMI_TC_64BWRREQ_ALL_ORONE_CID = 131 -RMI_PERF_SEL_RMI_TC_64BRDREQ_ALL_ORONE_CID = 132 -RMI_PERF_SEL_RMI_TC_WRREQ_ALL_CID = 133 -RMI_PERF_SEL_RMI_TC_REQ_BUSY = 134 -RMI_PERF_SEL_RMI_TC_WRREQ_CID0 = 135 -RMI_PERF_SEL_RMI_TC_WRREQ_CID1 = 136 -RMI_PERF_SEL_RMI_TC_WRREQ_CID2 = 137 -RMI_PERF_SEL_RMI_TC_WRREQ_CID3 = 138 -RMI_PERF_SEL_RMI_TC_WRREQ_CID4 = 139 -RMI_PERF_SEL_RMI_TC_WRREQ_CID5 = 140 -RMI_PERF_SEL_RMI_TC_WRREQ_CID6 = 141 -RMI_PERF_SEL_RMI_TC_WRREQ_CID7 = 142 -RMI_PERF_SEL_RMI_TC_WRREQ_INFLIGHT_ALL_CID = 143 -RMI_PERF_SEL_TC_RMI_WRRET_VALID_ALL_CID = 144 -RMI_PERF_SEL_RMI_TC_RDREQ_ALL_CID = 145 -RMI_PERF_SEL_RMI_TC_RDREQ_CID0 = 146 -RMI_PERF_SEL_RMI_TC_RDREQ_CID1 = 147 -RMI_PERF_SEL_RMI_TC_RDREQ_CID2 = 148 -RMI_PERF_SEL_RMI_TC_RDREQ_CID3 = 149 -RMI_PERF_SEL_RMI_TC_RDREQ_CID4 = 150 -RMI_PERF_SEL_RMI_TC_RDREQ_CID5 = 151 -RMI_PERF_SEL_RMI_TC_RDREQ_CID6 = 152 -RMI_PERF_SEL_RMI_TC_RDREQ_CID7 = 153 -RMI_PERF_SEL_RMI_TC_STALL_RDREQ = 154 -RMI_PERF_SEL_RMI_TC_STALL_WRREQ = 155 -RMI_PERF_SEL_RMI_TC_STALL_ALLREQ = 156 -RMI_PERF_SEL_RMI_TC_CREDIT_FULL_NO_PENDING_SEND = 157 -RMI_PERF_SEL_RMI_TC_CREDIT_ZERO_PENDING_SEND = 158 -RMI_PERF_SEL_RMI_TC_RDREQ_INFLIGHT_ALL_CID = 159 -RMI_PERF_SEL_TC_RMI_RDRET_VALID_ALL_CID = 160 -RMI_PERF_SEL_UTCL1_BUSY = 161 -RMI_PERF_SEL_RMI_UTC_REQ = 162 -RMI_PERF_SEL_RMI_UTC_BUSY = 163 -RMI_PERF_SEL_UTCL1_UTCL2_REQ = 164 -RMI_PERF_SEL_LEVEL_ADD_UTCL1_TO_UTCL2 = 165 -RMI_PERF_SEL_PROBE_UTCL1_XNACK_RETRY = 166 -RMI_PERF_SEL_PROBE_UTCL1_ALL_FAULT = 167 -RMI_PERF_SEL_PROBE_UTCL1_PRT_FAULT = 168 -RMI_PERF_SEL_PROBE_UTCL1_VMID_BYPASS = 169 -RMI_PERF_SEL_PROBE_UTCL1_XNACK_NORETRY_FAULT = 170 -RMI_PERF_SEL_XNACK_FIFO_NUM_USED = 171 -RMI_PERF_SEL_LAT_FIFO_NUM_USED = 172 -RMI_PERF_SEL_LAT_FIFO_BLOCKING_REQ = 173 -RMI_PERF_SEL_LAT_FIFO_NONBLOCKING_REQ = 174 -RMI_PERF_SEL_XNACK_FIFO_FULL = 175 -RMI_PERF_SEL_XNACK_FIFO_BUSY = 176 -RMI_PERF_SEL_LAT_FIFO_FULL = 177 -RMI_PERF_SEL_SKID_FIFO_DEPTH = 178 -RMI_PERF_SEL_TCIW_INFLIGHT_COUNT = 179 -RMI_PERF_SEL_PRT_FIFO_NUM_USED = 180 -RMI_PERF_SEL_PRT_FIFO_REQ = 181 -RMI_PERF_SEL_PRT_FIFO_BUSY = 182 -RMI_PERF_SEL_TCIW_REQ = 183 -RMI_PERF_SEL_TCIW_BUSY = 184 -RMI_PERF_SEL_SKID_FIFO_REQ = 185 -RMI_PERF_SEL_SKID_FIFO_BUSY = 186 -RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK0 = 187 -RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK1 = 188 -RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK2 = 189 -RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK3 = 190 -RMI_PERF_SEL_XBAR_PROBEGEN_RTS_RTR = 191 -RMI_PERF_SEL_XBAR_PROBEGEN_RTSB_RTR = 192 -RMI_PERF_SEL_XBAR_PROBEGEN_RTS_RTRB = 193 -RMI_PERF_SEL_XBAR_PROBEGEN_RTSB_RTRB = 194 -RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTS_RTR = 195 -RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTSB_RTR = 196 -RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTS_RTRB = 197 -RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTSB_RTRB = 198 -RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTS_RTR = 199 -RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTSB_RTR = 200 -RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTS_RTRB = 201 -RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTSB_RTRB = 202 -RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTS_RTR = 203 -RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTSB_RTR = 204 -RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTS_RTRB = 205 -RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTSB_RTRB = 206 -RMI_PERF_SEL_POP_DEMUX_RTS_RTR = 207 -RMI_PERF_SEL_POP_DEMUX_RTSB_RTR = 208 -RMI_PERF_SEL_POP_DEMUX_RTS_RTRB = 209 -RMI_PERF_SEL_POP_DEMUX_RTSB_RTRB = 210 -RMI_PERF_SEL_PROBEGEN_UTC_RTS_RTR = 211 -RMI_PERF_SEL_LEVEL_ADD_RMI_TO_UTC = 212 -RMI_PERF_SEL_PROBEGEN_UTC_RTSB_RTR = 213 -RMI_PERF_SEL_PROBEGEN_UTC_RTS_RTRB = 214 -RMI_PERF_SEL_PROBEGEN_UTC_RTSB_RTRB = 215 -RMI_PERF_SEL_UTC_POP_RTS_RTR = 216 -RMI_PERF_SEL_UTC_POP_RTSB_RTR = 217 -RMI_PERF_SEL_UTC_POP_RTS_RTRB = 218 -RMI_PERF_SEL_UTC_POP_RTSB_RTRB = 219 -RMI_PERF_SEL_POP_XNACK_RTS_RTR = 220 -RMI_PERF_SEL_POP_XNACK_RTSB_RTR = 221 -RMI_PERF_SEL_POP_XNACK_RTS_RTRB = 222 -RMI_PERF_SEL_POP_XNACK_RTSB_RTRB = 223 -RMI_PERF_SEL_XNACK_PROBEGEN_RTS_RTR = 224 -RMI_PERF_SEL_XNACK_PROBEGEN_RTSB_RTR = 225 -RMI_PERF_SEL_XNACK_PROBEGEN_RTS_RTRB = 226 -RMI_PERF_SEL_XNACK_PROBEGEN_RTSB_RTRB = 227 -RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTS_RTR = 228 -RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTSB_RTR = 229 -RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTS_RTRB = 230 -RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTSB_RTRB = 231 -RMI_PERF_SEL_SKID_FIFO_IN_RTS = 232 -RMI_PERF_SEL_SKID_FIFO_IN_RTSB = 233 -RMI_PERF_SEL_SKID_FIFO_OUT_RTS = 234 -RMI_PERF_SEL_SKID_FIFO_OUT_RTSB = 235 -RMI_PERF_SEL_XBAR_PROBEGEN_READ_RTS_RTR = 236 -RMI_PERF_SEL_XBAR_PROBEGEN_WRITE_RTS_RTR = 237 -RMI_PERF_SEL_XBAR_PROBEGEN_IN0_RTS_RTR = 238 -RMI_PERF_SEL_XBAR_PROBEGEN_IN1_RTS_RTR = 239 -RMI_PERF_SEL_XBAR_PROBEGEN_CB_RTS_RTR = 240 -RMI_PERF_SEL_XBAR_PROBEGEN_DB_RTS_RTR = 241 -RMI_PERF_SEL_REORDER_FIFO_REQ = 242 -RMI_PERF_SEL_REORDER_FIFO_BUSY = 243 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_ALL_CID = 244 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID0 = 245 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID1 = 246 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID2 = 247 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID3 = 248 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID4 = 249 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID5 = 250 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID6 = 251 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID7 = 252 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK0 = 253 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK1 = 254 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK2 = 255 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK3 = 256 -RMIPerfSel = ctypes.c_uint32 # enum - -# values for enumeration 'GCRPerfSel' -GCRPerfSel__enumvalues = { - 0: 'GCR_PERF_SEL_NONE', - 1: 'GCR_PERF_SEL_SDMA0_ALL_REQ', - 2: 'GCR_PERF_SEL_SDMA0_GL2_RANGE_REQ', - 3: 'GCR_PERF_SEL_SDMA0_GL2_RANGE_LT16K_REQ', - 4: 'GCR_PERF_SEL_SDMA0_GL2_RANGE_16K_REQ', - 5: 'GCR_PERF_SEL_SDMA0_GL2_RANGE_GT16K_REQ', - 6: 'GCR_PERF_SEL_SDMA0_GL2_ALL_REQ', - 7: 'GCR_PERF_SEL_SDMA0_GL1_RANGE_REQ', - 8: 'GCR_PERF_SEL_SDMA0_GL1_RANGE_LT16K_REQ', - 9: 'GCR_PERF_SEL_SDMA0_GL1_RANGE_16K_REQ', - 10: 'GCR_PERF_SEL_SDMA0_GL1_RANGE_GT16K_REQ', - 11: 'GCR_PERF_SEL_SDMA0_GL1_ALL_REQ', - 12: 'GCR_PERF_SEL_SDMA0_METADATA_REQ', - 13: 'GCR_PERF_SEL_SDMA0_SQC_DATA_REQ', - 14: 'GCR_PERF_SEL_SDMA0_SQC_INST_REQ', - 15: 'GCR_PERF_SEL_SDMA0_TCP_REQ', - 16: 'GCR_PERF_SEL_SDMA0_TCP_TLB_SHOOTDOWN_REQ', - 17: 'GCR_PERF_SEL_SDMA1_ALL_REQ', - 18: 'GCR_PERF_SEL_SDMA1_GL2_RANGE_REQ', - 19: 'GCR_PERF_SEL_SDMA1_GL2_RANGE_LT16K_REQ', - 20: 'GCR_PERF_SEL_SDMA1_GL2_RANGE_16K_REQ', - 21: 'GCR_PERF_SEL_SDMA1_GL2_RANGE_GT16K_REQ', - 22: 'GCR_PERF_SEL_SDMA1_GL2_ALL_REQ', - 23: 'GCR_PERF_SEL_SDMA1_GL1_RANGE_REQ', - 24: 'GCR_PERF_SEL_SDMA1_GL1_RANGE_LT16K_REQ', - 25: 'GCR_PERF_SEL_SDMA1_GL1_RANGE_16K_REQ', - 26: 'GCR_PERF_SEL_SDMA1_GL1_RANGE_GT16K_REQ', - 27: 'GCR_PERF_SEL_SDMA1_GL1_ALL_REQ', - 28: 'GCR_PERF_SEL_SDMA1_METADATA_REQ', - 29: 'GCR_PERF_SEL_SDMA1_SQC_DATA_REQ', - 30: 'GCR_PERF_SEL_SDMA1_SQC_INST_REQ', - 31: 'GCR_PERF_SEL_SDMA1_TCP_REQ', - 32: 'GCR_PERF_SEL_SDMA1_TCP_TLB_SHOOTDOWN_REQ', - 33: 'GCR_PERF_SEL_CPG_ALL_REQ', - 34: 'GCR_PERF_SEL_CPG_GL2_RANGE_REQ', - 35: 'GCR_PERF_SEL_CPG_GL2_RANGE_LT16K_REQ', - 36: 'GCR_PERF_SEL_CPG_GL2_RANGE_16K_REQ', - 37: 'GCR_PERF_SEL_CPG_GL2_RANGE_GT16K_REQ', - 38: 'GCR_PERF_SEL_CPG_GL2_ALL_REQ', - 39: 'GCR_PERF_SEL_CPG_GL1_RANGE_REQ', - 40: 'GCR_PERF_SEL_CPG_GL1_RANGE_LT16K_REQ', - 41: 'GCR_PERF_SEL_CPG_GL1_RANGE_16K_REQ', - 42: 'GCR_PERF_SEL_CPG_GL1_RANGE_GT16K_REQ', - 43: 'GCR_PERF_SEL_CPG_GL1_ALL_REQ', - 44: 'GCR_PERF_SEL_CPG_METADATA_REQ', - 45: 'GCR_PERF_SEL_CPG_SQC_DATA_REQ', - 46: 'GCR_PERF_SEL_CPG_SQC_INST_REQ', - 47: 'GCR_PERF_SEL_CPG_TCP_REQ', - 48: 'GCR_PERF_SEL_CPG_TCP_TLB_SHOOTDOWN_REQ', - 49: 'GCR_PERF_SEL_CPC_ALL_REQ', - 50: 'GCR_PERF_SEL_CPC_GL2_RANGE_REQ', - 51: 'GCR_PERF_SEL_CPC_GL2_RANGE_LT16K_REQ', - 52: 'GCR_PERF_SEL_CPC_GL2_RANGE_16K_REQ', - 53: 'GCR_PERF_SEL_CPC_GL2_RANGE_GT16K_REQ', - 54: 'GCR_PERF_SEL_CPC_GL2_ALL_REQ', - 55: 'GCR_PERF_SEL_CPC_GL1_RANGE_REQ', - 56: 'GCR_PERF_SEL_CPC_GL1_RANGE_LT16K_REQ', - 57: 'GCR_PERF_SEL_CPC_GL1_RANGE_16K_REQ', - 58: 'GCR_PERF_SEL_CPC_GL1_RANGE_GT16K_REQ', - 59: 'GCR_PERF_SEL_CPC_GL1_ALL_REQ', - 60: 'GCR_PERF_SEL_CPC_METADATA_REQ', - 61: 'GCR_PERF_SEL_CPC_SQC_DATA_REQ', - 62: 'GCR_PERF_SEL_CPC_SQC_INST_REQ', - 63: 'GCR_PERF_SEL_CPC_TCP_REQ', - 64: 'GCR_PERF_SEL_CPC_TCP_TLB_SHOOTDOWN_REQ', - 65: 'GCR_PERF_SEL_CPF_ALL_REQ', - 66: 'GCR_PERF_SEL_CPF_GL2_RANGE_REQ', - 67: 'GCR_PERF_SEL_CPF_GL2_RANGE_LT16K_REQ', - 68: 'GCR_PERF_SEL_CPF_GL2_RANGE_16K_REQ', - 69: 'GCR_PERF_SEL_CPF_GL2_RANGE_GT16K_REQ', - 70: 'GCR_PERF_SEL_CPF_GL2_ALL_REQ', - 71: 'GCR_PERF_SEL_CPF_GL1_RANGE_REQ', - 72: 'GCR_PERF_SEL_CPF_GL1_RANGE_LT16K_REQ', - 73: 'GCR_PERF_SEL_CPF_GL1_RANGE_16K_REQ', - 74: 'GCR_PERF_SEL_CPF_GL1_RANGE_GT16K_REQ', - 75: 'GCR_PERF_SEL_CPF_GL1_ALL_REQ', - 76: 'GCR_PERF_SEL_CPF_METADATA_REQ', - 77: 'GCR_PERF_SEL_CPF_SQC_DATA_REQ', - 78: 'GCR_PERF_SEL_CPF_SQC_INST_REQ', - 79: 'GCR_PERF_SEL_CPF_TCP_REQ', - 80: 'GCR_PERF_SEL_CPF_TCP_TLB_SHOOTDOWN_REQ', - 81: 'GCR_PERF_SEL_VIRT_REQ', - 82: 'GCR_PERF_SEL_PHY_REQ', - 83: 'GCR_PERF_SEL_TLB_SHOOTDOWN_HEAVY_REQ', - 84: 'GCR_PERF_SEL_TLB_SHOOTDOWN_LIGHT_REQ', - 85: 'GCR_PERF_SEL_ALL_REQ', - 86: 'GCR_PERF_SEL_CLK_FOR_PHY_OUTSTANDING_REQ', - 87: 'GCR_PERF_SEL_CLK_FOR_VIRT_OUTSTANDING_REQ', - 88: 'GCR_PERF_SEL_CLK_FOR_ALL_OUTSTANDING_REQ', - 89: 'GCR_PERF_SEL_UTCL2_REQ', - 90: 'GCR_PERF_SEL_UTCL2_RET', - 91: 'GCR_PERF_SEL_UTCL2_OUT_OF_CREDIT_EVENT', - 92: 'GCR_PERF_SEL_UTCL2_INFLIGHT_REQ', - 93: 'GCR_PERF_SEL_UTCL2_FILTERED_RET', -} -GCR_PERF_SEL_NONE = 0 -GCR_PERF_SEL_SDMA0_ALL_REQ = 1 -GCR_PERF_SEL_SDMA0_GL2_RANGE_REQ = 2 -GCR_PERF_SEL_SDMA0_GL2_RANGE_LT16K_REQ = 3 -GCR_PERF_SEL_SDMA0_GL2_RANGE_16K_REQ = 4 -GCR_PERF_SEL_SDMA0_GL2_RANGE_GT16K_REQ = 5 -GCR_PERF_SEL_SDMA0_GL2_ALL_REQ = 6 -GCR_PERF_SEL_SDMA0_GL1_RANGE_REQ = 7 -GCR_PERF_SEL_SDMA0_GL1_RANGE_LT16K_REQ = 8 -GCR_PERF_SEL_SDMA0_GL1_RANGE_16K_REQ = 9 -GCR_PERF_SEL_SDMA0_GL1_RANGE_GT16K_REQ = 10 -GCR_PERF_SEL_SDMA0_GL1_ALL_REQ = 11 -GCR_PERF_SEL_SDMA0_METADATA_REQ = 12 -GCR_PERF_SEL_SDMA0_SQC_DATA_REQ = 13 -GCR_PERF_SEL_SDMA0_SQC_INST_REQ = 14 -GCR_PERF_SEL_SDMA0_TCP_REQ = 15 -GCR_PERF_SEL_SDMA0_TCP_TLB_SHOOTDOWN_REQ = 16 -GCR_PERF_SEL_SDMA1_ALL_REQ = 17 -GCR_PERF_SEL_SDMA1_GL2_RANGE_REQ = 18 -GCR_PERF_SEL_SDMA1_GL2_RANGE_LT16K_REQ = 19 -GCR_PERF_SEL_SDMA1_GL2_RANGE_16K_REQ = 20 -GCR_PERF_SEL_SDMA1_GL2_RANGE_GT16K_REQ = 21 -GCR_PERF_SEL_SDMA1_GL2_ALL_REQ = 22 -GCR_PERF_SEL_SDMA1_GL1_RANGE_REQ = 23 -GCR_PERF_SEL_SDMA1_GL1_RANGE_LT16K_REQ = 24 -GCR_PERF_SEL_SDMA1_GL1_RANGE_16K_REQ = 25 -GCR_PERF_SEL_SDMA1_GL1_RANGE_GT16K_REQ = 26 -GCR_PERF_SEL_SDMA1_GL1_ALL_REQ = 27 -GCR_PERF_SEL_SDMA1_METADATA_REQ = 28 -GCR_PERF_SEL_SDMA1_SQC_DATA_REQ = 29 -GCR_PERF_SEL_SDMA1_SQC_INST_REQ = 30 -GCR_PERF_SEL_SDMA1_TCP_REQ = 31 -GCR_PERF_SEL_SDMA1_TCP_TLB_SHOOTDOWN_REQ = 32 -GCR_PERF_SEL_CPG_ALL_REQ = 33 -GCR_PERF_SEL_CPG_GL2_RANGE_REQ = 34 -GCR_PERF_SEL_CPG_GL2_RANGE_LT16K_REQ = 35 -GCR_PERF_SEL_CPG_GL2_RANGE_16K_REQ = 36 -GCR_PERF_SEL_CPG_GL2_RANGE_GT16K_REQ = 37 -GCR_PERF_SEL_CPG_GL2_ALL_REQ = 38 -GCR_PERF_SEL_CPG_GL1_RANGE_REQ = 39 -GCR_PERF_SEL_CPG_GL1_RANGE_LT16K_REQ = 40 -GCR_PERF_SEL_CPG_GL1_RANGE_16K_REQ = 41 -GCR_PERF_SEL_CPG_GL1_RANGE_GT16K_REQ = 42 -GCR_PERF_SEL_CPG_GL1_ALL_REQ = 43 -GCR_PERF_SEL_CPG_METADATA_REQ = 44 -GCR_PERF_SEL_CPG_SQC_DATA_REQ = 45 -GCR_PERF_SEL_CPG_SQC_INST_REQ = 46 -GCR_PERF_SEL_CPG_TCP_REQ = 47 -GCR_PERF_SEL_CPG_TCP_TLB_SHOOTDOWN_REQ = 48 -GCR_PERF_SEL_CPC_ALL_REQ = 49 -GCR_PERF_SEL_CPC_GL2_RANGE_REQ = 50 -GCR_PERF_SEL_CPC_GL2_RANGE_LT16K_REQ = 51 -GCR_PERF_SEL_CPC_GL2_RANGE_16K_REQ = 52 -GCR_PERF_SEL_CPC_GL2_RANGE_GT16K_REQ = 53 -GCR_PERF_SEL_CPC_GL2_ALL_REQ = 54 -GCR_PERF_SEL_CPC_GL1_RANGE_REQ = 55 -GCR_PERF_SEL_CPC_GL1_RANGE_LT16K_REQ = 56 -GCR_PERF_SEL_CPC_GL1_RANGE_16K_REQ = 57 -GCR_PERF_SEL_CPC_GL1_RANGE_GT16K_REQ = 58 -GCR_PERF_SEL_CPC_GL1_ALL_REQ = 59 -GCR_PERF_SEL_CPC_METADATA_REQ = 60 -GCR_PERF_SEL_CPC_SQC_DATA_REQ = 61 -GCR_PERF_SEL_CPC_SQC_INST_REQ = 62 -GCR_PERF_SEL_CPC_TCP_REQ = 63 -GCR_PERF_SEL_CPC_TCP_TLB_SHOOTDOWN_REQ = 64 -GCR_PERF_SEL_CPF_ALL_REQ = 65 -GCR_PERF_SEL_CPF_GL2_RANGE_REQ = 66 -GCR_PERF_SEL_CPF_GL2_RANGE_LT16K_REQ = 67 -GCR_PERF_SEL_CPF_GL2_RANGE_16K_REQ = 68 -GCR_PERF_SEL_CPF_GL2_RANGE_GT16K_REQ = 69 -GCR_PERF_SEL_CPF_GL2_ALL_REQ = 70 -GCR_PERF_SEL_CPF_GL1_RANGE_REQ = 71 -GCR_PERF_SEL_CPF_GL1_RANGE_LT16K_REQ = 72 -GCR_PERF_SEL_CPF_GL1_RANGE_16K_REQ = 73 -GCR_PERF_SEL_CPF_GL1_RANGE_GT16K_REQ = 74 -GCR_PERF_SEL_CPF_GL1_ALL_REQ = 75 -GCR_PERF_SEL_CPF_METADATA_REQ = 76 -GCR_PERF_SEL_CPF_SQC_DATA_REQ = 77 -GCR_PERF_SEL_CPF_SQC_INST_REQ = 78 -GCR_PERF_SEL_CPF_TCP_REQ = 79 -GCR_PERF_SEL_CPF_TCP_TLB_SHOOTDOWN_REQ = 80 -GCR_PERF_SEL_VIRT_REQ = 81 -GCR_PERF_SEL_PHY_REQ = 82 -GCR_PERF_SEL_TLB_SHOOTDOWN_HEAVY_REQ = 83 -GCR_PERF_SEL_TLB_SHOOTDOWN_LIGHT_REQ = 84 -GCR_PERF_SEL_ALL_REQ = 85 -GCR_PERF_SEL_CLK_FOR_PHY_OUTSTANDING_REQ = 86 -GCR_PERF_SEL_CLK_FOR_VIRT_OUTSTANDING_REQ = 87 -GCR_PERF_SEL_CLK_FOR_ALL_OUTSTANDING_REQ = 88 -GCR_PERF_SEL_UTCL2_REQ = 89 -GCR_PERF_SEL_UTCL2_RET = 90 -GCR_PERF_SEL_UTCL2_OUT_OF_CREDIT_EVENT = 91 -GCR_PERF_SEL_UTCL2_INFLIGHT_REQ = 92 -GCR_PERF_SEL_UTCL2_FILTERED_RET = 93 -GCRPerfSel = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL1PerfSel' -UTCL1PerfSel__enumvalues = { - 0: 'UTCL1_PERF_SEL_NONE', - 1: 'UTCL1_PERF_SEL_REQS', - 2: 'UTCL1_PERF_SEL_HITS', - 3: 'UTCL1_PERF_SEL_MISSES', - 4: 'UTCL1_PERF_SEL_BYPASS_REQS', - 5: 'UTCL1_PERF_SEL_HIT_INV_FILTER_REQS', - 6: 'UTCL1_PERF_SEL_NUM_SMALLK_PAGES', - 7: 'UTCL1_PERF_SEL_NUM_BIGK_PAGES', - 8: 'UTCL1_PERF_SEL_TOTAL_UTCL2_REQS', - 9: 'UTCL1_PERF_SEL_OUTSTANDING_UTCL2_REQS_ACCUM', - 10: 'UTCL1_PERF_SEL_STALL_ON_UTCL2_CREDITS', - 11: 'UTCL1_PERF_SEL_STALL_MH_OFIFO_FULL', - 12: 'UTCL1_PERF_SEL_STALL_MH_CAM_FULL', - 13: 'UTCL1_PERF_SEL_NONRANGE_INV_REQS', - 14: 'UTCL1_PERF_SEL_RANGE_INV_REQS', -} -UTCL1_PERF_SEL_NONE = 0 -UTCL1_PERF_SEL_REQS = 1 -UTCL1_PERF_SEL_HITS = 2 -UTCL1_PERF_SEL_MISSES = 3 -UTCL1_PERF_SEL_BYPASS_REQS = 4 -UTCL1_PERF_SEL_HIT_INV_FILTER_REQS = 5 -UTCL1_PERF_SEL_NUM_SMALLK_PAGES = 6 -UTCL1_PERF_SEL_NUM_BIGK_PAGES = 7 -UTCL1_PERF_SEL_TOTAL_UTCL2_REQS = 8 -UTCL1_PERF_SEL_OUTSTANDING_UTCL2_REQS_ACCUM = 9 -UTCL1_PERF_SEL_STALL_ON_UTCL2_CREDITS = 10 -UTCL1_PERF_SEL_STALL_MH_OFIFO_FULL = 11 -UTCL1_PERF_SEL_STALL_MH_CAM_FULL = 12 -UTCL1_PERF_SEL_NONRANGE_INV_REQS = 13 -UTCL1_PERF_SEL_RANGE_INV_REQS = 14 -UTCL1PerfSel = ctypes.c_uint32 # enum - -# values for enumeration 'SDMA_PERF_SEL' -SDMA_PERF_SEL__enumvalues = { - 0: 'SDMA_PERF_SEL_CYCLE', - 1: 'SDMA_PERF_SEL_IDLE', - 2: 'SDMA_PERF_SEL_REG_IDLE', - 3: 'SDMA_PERF_SEL_RB_EMPTY', - 4: 'SDMA_PERF_SEL_RB_FULL', - 5: 'SDMA_PERF_SEL_RB_WPTR_WRAP', - 6: 'SDMA_PERF_SEL_RB_RPTR_WRAP', - 7: 'SDMA_PERF_SEL_RB_WPTR_POLL_READ', - 8: 'SDMA_PERF_SEL_RB_RPTR_WB', - 9: 'SDMA_PERF_SEL_RB_CMD_IDLE', - 10: 'SDMA_PERF_SEL_RB_CMD_FULL', - 11: 'SDMA_PERF_SEL_IB_CMD_IDLE', - 12: 'SDMA_PERF_SEL_IB_CMD_FULL', - 13: 'SDMA_PERF_SEL_EX_IDLE', - 14: 'SDMA_PERF_SEL_SRBM_REG_SEND', - 15: 'SDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 16: 'SDMA_PERF_SEL_MC_WR_IDLE', - 17: 'SDMA_PERF_SEL_MC_WR_COUNT', - 18: 'SDMA_PERF_SEL_MC_RD_IDLE', - 19: 'SDMA_PERF_SEL_MC_RD_COUNT', - 20: 'SDMA_PERF_SEL_MC_RD_RET_STALL', - 21: 'SDMA_PERF_SEL_MC_RD_NO_POLL_IDLE', - 24: 'SDMA_PERF_SEL_SEM_IDLE', - 25: 'SDMA_PERF_SEL_SEM_REQ_STALL', - 26: 'SDMA_PERF_SEL_SEM_REQ_COUNT', - 27: 'SDMA_PERF_SEL_SEM_RESP_INCOMPLETE', - 28: 'SDMA_PERF_SEL_SEM_RESP_FAIL', - 29: 'SDMA_PERF_SEL_SEM_RESP_PASS', - 30: 'SDMA_PERF_SEL_INT_IDLE', - 31: 'SDMA_PERF_SEL_INT_REQ_STALL', - 32: 'SDMA_PERF_SEL_INT_REQ_COUNT', - 33: 'SDMA_PERF_SEL_INT_RESP_ACCEPTED', - 34: 'SDMA_PERF_SEL_INT_RESP_RETRY', - 35: 'SDMA_PERF_SEL_NUM_PACKET', - 37: 'SDMA_PERF_SEL_CE_WREQ_IDLE', - 38: 'SDMA_PERF_SEL_CE_WR_IDLE', - 39: 'SDMA_PERF_SEL_CE_SPLIT_IDLE', - 40: 'SDMA_PERF_SEL_CE_RREQ_IDLE', - 41: 'SDMA_PERF_SEL_CE_OUT_IDLE', - 42: 'SDMA_PERF_SEL_CE_IN_IDLE', - 43: 'SDMA_PERF_SEL_CE_DST_IDLE', - 46: 'SDMA_PERF_SEL_CE_AFIFO_FULL', - 49: 'SDMA_PERF_SEL_CE_INFO_FULL', - 50: 'SDMA_PERF_SEL_CE_INFO1_FULL', - 51: 'SDMA_PERF_SEL_CE_RD_STALL', - 52: 'SDMA_PERF_SEL_CE_WR_STALL', - 53: 'SDMA_PERF_SEL_GFX_SELECT', - 54: 'SDMA_PERF_SEL_RLC0_SELECT', - 55: 'SDMA_PERF_SEL_RLC1_SELECT', - 56: 'SDMA_PERF_SEL_PAGE_SELECT', - 57: 'SDMA_PERF_SEL_CTX_CHANGE', - 58: 'SDMA_PERF_SEL_CTX_CHANGE_EXPIRED', - 59: 'SDMA_PERF_SEL_CTX_CHANGE_EXCEPTION', - 60: 'SDMA_PERF_SEL_DOORBELL', - 61: 'SDMA_PERF_SEL_RD_BA_RTR', - 62: 'SDMA_PERF_SEL_WR_BA_RTR', - 63: 'SDMA_PERF_SEL_F32_L1_WR_VLD', - 64: 'SDMA_PERF_SEL_CE_L1_WR_VLD', - 65: 'SDMA_PERF_SEL_CPF_SDMA_INVREQ', - 66: 'SDMA_PERF_SEL_SDMA_CPF_INVACK', - 67: 'SDMA_PERF_SEL_UTCL2_SDMA_INVREQ', - 68: 'SDMA_PERF_SEL_SDMA_UTCL2_INVACK', - 69: 'SDMA_PERF_SEL_UTCL2_SDMA_INVREQ_ALL', - 70: 'SDMA_PERF_SEL_SDMA_UTCL2_INVACK_ALL', - 71: 'SDMA_PERF_SEL_UTCL2_RET_XNACK', - 72: 'SDMA_PERF_SEL_UTCL2_RET_ACK', - 73: 'SDMA_PERF_SEL_UTCL2_FREE', - 74: 'SDMA_PERF_SEL_SDMA_UTCL2_SEND', - 75: 'SDMA_PERF_SEL_DMA_L1_WR_SEND', - 76: 'SDMA_PERF_SEL_DMA_L1_RD_SEND', - 77: 'SDMA_PERF_SEL_DMA_MC_WR_SEND', - 78: 'SDMA_PERF_SEL_DMA_MC_RD_SEND', - 79: 'SDMA_PERF_SEL_GPUVM_INVREQ_HIGH', - 80: 'SDMA_PERF_SEL_GPUVM_INVREQ_LOW', - 81: 'SDMA_PERF_SEL_L1_WRL2_IDLE', - 82: 'SDMA_PERF_SEL_L1_RDL2_IDLE', - 83: 'SDMA_PERF_SEL_L1_WRMC_IDLE', - 84: 'SDMA_PERF_SEL_L1_RDMC_IDLE', - 85: 'SDMA_PERF_SEL_L1_WR_INV_IDLE', - 86: 'SDMA_PERF_SEL_L1_RD_INV_IDLE', - 87: 'SDMA_PERF_SEL_META_L2_REQ_SEND', - 88: 'SDMA_PERF_SEL_L2_META_RET_VLD', - 89: 'SDMA_PERF_SEL_SDMA_UTCL2_RD_SEND', - 90: 'SDMA_PERF_SEL_UTCL2_SDMA_RD_RTN', - 91: 'SDMA_PERF_SEL_SDMA_UTCL2_WR_SEND', - 92: 'SDMA_PERF_SEL_UTCL2_SDMA_WR_RTN', - 93: 'SDMA_PERF_SEL_META_REQ_SEND', - 94: 'SDMA_PERF_SEL_META_RTN_VLD', - 95: 'SDMA_PERF_SEL_TLBI_SEND', - 96: 'SDMA_PERF_SEL_TLBI_RTN', - 97: 'SDMA_PERF_SEL_GCR_SEND', - 98: 'SDMA_PERF_SEL_GCR_RTN', - 99: 'SDMA_PERF_SEL_UTCL1_TAG_DELAY_COUNTER', - 100: 'SDMA_PERF_SEL_MMHUB_TAG_DELAY_COUNTER', -} -SDMA_PERF_SEL_CYCLE = 0 -SDMA_PERF_SEL_IDLE = 1 -SDMA_PERF_SEL_REG_IDLE = 2 -SDMA_PERF_SEL_RB_EMPTY = 3 -SDMA_PERF_SEL_RB_FULL = 4 -SDMA_PERF_SEL_RB_WPTR_WRAP = 5 -SDMA_PERF_SEL_RB_RPTR_WRAP = 6 -SDMA_PERF_SEL_RB_WPTR_POLL_READ = 7 -SDMA_PERF_SEL_RB_RPTR_WB = 8 -SDMA_PERF_SEL_RB_CMD_IDLE = 9 -SDMA_PERF_SEL_RB_CMD_FULL = 10 -SDMA_PERF_SEL_IB_CMD_IDLE = 11 -SDMA_PERF_SEL_IB_CMD_FULL = 12 -SDMA_PERF_SEL_EX_IDLE = 13 -SDMA_PERF_SEL_SRBM_REG_SEND = 14 -SDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE = 15 -SDMA_PERF_SEL_MC_WR_IDLE = 16 -SDMA_PERF_SEL_MC_WR_COUNT = 17 -SDMA_PERF_SEL_MC_RD_IDLE = 18 -SDMA_PERF_SEL_MC_RD_COUNT = 19 -SDMA_PERF_SEL_MC_RD_RET_STALL = 20 -SDMA_PERF_SEL_MC_RD_NO_POLL_IDLE = 21 -SDMA_PERF_SEL_SEM_IDLE = 24 -SDMA_PERF_SEL_SEM_REQ_STALL = 25 -SDMA_PERF_SEL_SEM_REQ_COUNT = 26 -SDMA_PERF_SEL_SEM_RESP_INCOMPLETE = 27 -SDMA_PERF_SEL_SEM_RESP_FAIL = 28 -SDMA_PERF_SEL_SEM_RESP_PASS = 29 -SDMA_PERF_SEL_INT_IDLE = 30 -SDMA_PERF_SEL_INT_REQ_STALL = 31 -SDMA_PERF_SEL_INT_REQ_COUNT = 32 -SDMA_PERF_SEL_INT_RESP_ACCEPTED = 33 -SDMA_PERF_SEL_INT_RESP_RETRY = 34 -SDMA_PERF_SEL_NUM_PACKET = 35 -SDMA_PERF_SEL_CE_WREQ_IDLE = 37 -SDMA_PERF_SEL_CE_WR_IDLE = 38 -SDMA_PERF_SEL_CE_SPLIT_IDLE = 39 -SDMA_PERF_SEL_CE_RREQ_IDLE = 40 -SDMA_PERF_SEL_CE_OUT_IDLE = 41 -SDMA_PERF_SEL_CE_IN_IDLE = 42 -SDMA_PERF_SEL_CE_DST_IDLE = 43 -SDMA_PERF_SEL_CE_AFIFO_FULL = 46 -SDMA_PERF_SEL_CE_INFO_FULL = 49 -SDMA_PERF_SEL_CE_INFO1_FULL = 50 -SDMA_PERF_SEL_CE_RD_STALL = 51 -SDMA_PERF_SEL_CE_WR_STALL = 52 -SDMA_PERF_SEL_GFX_SELECT = 53 -SDMA_PERF_SEL_RLC0_SELECT = 54 -SDMA_PERF_SEL_RLC1_SELECT = 55 -SDMA_PERF_SEL_PAGE_SELECT = 56 -SDMA_PERF_SEL_CTX_CHANGE = 57 -SDMA_PERF_SEL_CTX_CHANGE_EXPIRED = 58 -SDMA_PERF_SEL_CTX_CHANGE_EXCEPTION = 59 -SDMA_PERF_SEL_DOORBELL = 60 -SDMA_PERF_SEL_RD_BA_RTR = 61 -SDMA_PERF_SEL_WR_BA_RTR = 62 -SDMA_PERF_SEL_F32_L1_WR_VLD = 63 -SDMA_PERF_SEL_CE_L1_WR_VLD = 64 -SDMA_PERF_SEL_CPF_SDMA_INVREQ = 65 -SDMA_PERF_SEL_SDMA_CPF_INVACK = 66 -SDMA_PERF_SEL_UTCL2_SDMA_INVREQ = 67 -SDMA_PERF_SEL_SDMA_UTCL2_INVACK = 68 -SDMA_PERF_SEL_UTCL2_SDMA_INVREQ_ALL = 69 -SDMA_PERF_SEL_SDMA_UTCL2_INVACK_ALL = 70 -SDMA_PERF_SEL_UTCL2_RET_XNACK = 71 -SDMA_PERF_SEL_UTCL2_RET_ACK = 72 -SDMA_PERF_SEL_UTCL2_FREE = 73 -SDMA_PERF_SEL_SDMA_UTCL2_SEND = 74 -SDMA_PERF_SEL_DMA_L1_WR_SEND = 75 -SDMA_PERF_SEL_DMA_L1_RD_SEND = 76 -SDMA_PERF_SEL_DMA_MC_WR_SEND = 77 -SDMA_PERF_SEL_DMA_MC_RD_SEND = 78 -SDMA_PERF_SEL_GPUVM_INVREQ_HIGH = 79 -SDMA_PERF_SEL_GPUVM_INVREQ_LOW = 80 -SDMA_PERF_SEL_L1_WRL2_IDLE = 81 -SDMA_PERF_SEL_L1_RDL2_IDLE = 82 -SDMA_PERF_SEL_L1_WRMC_IDLE = 83 -SDMA_PERF_SEL_L1_RDMC_IDLE = 84 -SDMA_PERF_SEL_L1_WR_INV_IDLE = 85 -SDMA_PERF_SEL_L1_RD_INV_IDLE = 86 -SDMA_PERF_SEL_META_L2_REQ_SEND = 87 -SDMA_PERF_SEL_L2_META_RET_VLD = 88 -SDMA_PERF_SEL_SDMA_UTCL2_RD_SEND = 89 -SDMA_PERF_SEL_UTCL2_SDMA_RD_RTN = 90 -SDMA_PERF_SEL_SDMA_UTCL2_WR_SEND = 91 -SDMA_PERF_SEL_UTCL2_SDMA_WR_RTN = 92 -SDMA_PERF_SEL_META_REQ_SEND = 93 -SDMA_PERF_SEL_META_RTN_VLD = 94 -SDMA_PERF_SEL_TLBI_SEND = 95 -SDMA_PERF_SEL_TLBI_RTN = 96 -SDMA_PERF_SEL_GCR_SEND = 97 -SDMA_PERF_SEL_GCR_RTN = 98 -SDMA_PERF_SEL_UTCL1_TAG_DELAY_COUNTER = 99 -SDMA_PERF_SEL_MMHUB_TAG_DELAY_COUNTER = 100 -SDMA_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'NUM_PIPES_BC_ENUM' -NUM_PIPES_BC_ENUM__enumvalues = { - 0: 'ADDR_NUM_PIPES_BC_P8', - 1: 'ADDR_NUM_PIPES_BC_P16', -} -ADDR_NUM_PIPES_BC_P8 = 0 -ADDR_NUM_PIPES_BC_P16 = 1 -NUM_PIPES_BC_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'NUM_BANKS_BC_ENUM' -NUM_BANKS_BC_ENUM__enumvalues = { - 0: 'ADDR_NUM_BANKS_BC_BANKS_1', - 1: 'ADDR_NUM_BANKS_BC_BANKS_2', - 2: 'ADDR_NUM_BANKS_BC_BANKS_4', - 3: 'ADDR_NUM_BANKS_BC_BANKS_8', - 4: 'ADDR_NUM_BANKS_BC_BANKS_16', -} -ADDR_NUM_BANKS_BC_BANKS_1 = 0 -ADDR_NUM_BANKS_BC_BANKS_2 = 1 -ADDR_NUM_BANKS_BC_BANKS_4 = 2 -ADDR_NUM_BANKS_BC_BANKS_8 = 3 -ADDR_NUM_BANKS_BC_BANKS_16 = 4 -NUM_BANKS_BC_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'SWIZZLE_TYPE_ENUM' -SWIZZLE_TYPE_ENUM__enumvalues = { - 0: 'SW_Z', - 1: 'SW_S', - 2: 'SW_D', - 3: 'SW_R', - 4: 'SW_L', -} -SW_Z = 0 -SW_S = 1 -SW_D = 2 -SW_R = 3 -SW_L = 4 -SWIZZLE_TYPE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'TC_MICRO_TILE_MODE' -TC_MICRO_TILE_MODE__enumvalues = { - 0: 'MICRO_TILE_MODE_LINEAR', - 1: 'MICRO_TILE_MODE_RENDER_TARGET', - 2: 'MICRO_TILE_MODE_STD_2D', - 3: 'MICRO_TILE_MODE_STD_3D', - 4: 'MICRO_TILE_MODE_DISPLAY_2D', - 5: 'MICRO_TILE_MODE_DISPLAY_3D', - 6: 'MICRO_TILE_MODE_Z', -} -MICRO_TILE_MODE_LINEAR = 0 -MICRO_TILE_MODE_RENDER_TARGET = 1 -MICRO_TILE_MODE_STD_2D = 2 -MICRO_TILE_MODE_STD_3D = 3 -MICRO_TILE_MODE_DISPLAY_2D = 4 -MICRO_TILE_MODE_DISPLAY_3D = 5 -MICRO_TILE_MODE_Z = 6 -TC_MICRO_TILE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SWIZZLE_MODE_ENUM' -SWIZZLE_MODE_ENUM__enumvalues = { - 0: 'SW_LINEAR', - 1: 'SW_256B_S', - 2: 'SW_256B_D', - 3: 'SW_256B_R', - 4: 'SW_4KB_Z', - 5: 'SW_4KB_S', - 6: 'SW_4KB_D', - 7: 'SW_4KB_R', - 8: 'SW_64KB_Z', - 9: 'SW_64KB_S', - 10: 'SW_64KB_D', - 11: 'SW_64KB_R', - 12: 'SW_VAR_Z', - 13: 'SW_VAR_S', - 14: 'SW_VAR_D', - 15: 'SW_VAR_R', - 16: 'SW_64KB_Z_T', - 17: 'SW_64KB_S_T', - 18: 'SW_64KB_D_T', - 19: 'SW_64KB_R_T', - 20: 'SW_4KB_Z_X', - 21: 'SW_4KB_S_X', - 22: 'SW_4KB_D_X', - 23: 'SW_4KB_R_X', - 24: 'SW_64KB_Z_X', - 25: 'SW_64KB_S_X', - 26: 'SW_64KB_D_X', - 27: 'SW_64KB_R_X', - 28: 'SW_VAR_Z_X', - 29: 'SW_VAR_S_X', - 30: 'SW_VAR_D_X', - 31: 'SW_VAR_R_X', -} -SW_LINEAR = 0 -SW_256B_S = 1 -SW_256B_D = 2 -SW_256B_R = 3 -SW_4KB_Z = 4 -SW_4KB_S = 5 -SW_4KB_D = 6 -SW_4KB_R = 7 -SW_64KB_Z = 8 -SW_64KB_S = 9 -SW_64KB_D = 10 -SW_64KB_R = 11 -SW_VAR_Z = 12 -SW_VAR_S = 13 -SW_VAR_D = 14 -SW_VAR_R = 15 -SW_64KB_Z_T = 16 -SW_64KB_S_T = 17 -SW_64KB_D_T = 18 -SW_64KB_R_T = 19 -SW_4KB_Z_X = 20 -SW_4KB_S_X = 21 -SW_4KB_D_X = 22 -SW_4KB_R_X = 23 -SW_64KB_Z_X = 24 -SW_64KB_S_X = 25 -SW_64KB_D_X = 26 -SW_64KB_R_X = 27 -SW_VAR_Z_X = 28 -SW_VAR_S_X = 29 -SW_VAR_D_X = 30 -SW_VAR_R_X = 31 -SWIZZLE_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'SurfaceEndian' -SurfaceEndian__enumvalues = { - 0: 'ENDIAN_NONE', - 1: 'ENDIAN_8IN16', - 2: 'ENDIAN_8IN32', - 3: 'ENDIAN_8IN64', -} -ENDIAN_NONE = 0 -ENDIAN_8IN16 = 1 -ENDIAN_8IN32 = 2 -ENDIAN_8IN64 = 3 -SurfaceEndian = ctypes.c_uint32 # enum - -# values for enumeration 'ArrayMode' -ArrayMode__enumvalues = { - 0: 'ARRAY_LINEAR_GENERAL', - 1: 'ARRAY_LINEAR_ALIGNED', - 2: 'ARRAY_1D_TILED_THIN1', - 3: 'ARRAY_1D_TILED_THICK', - 4: 'ARRAY_2D_TILED_THIN1', - 5: 'ARRAY_PRT_TILED_THIN1', - 6: 'ARRAY_PRT_2D_TILED_THIN1', - 7: 'ARRAY_2D_TILED_THICK', - 8: 'ARRAY_2D_TILED_XTHICK', - 9: 'ARRAY_PRT_TILED_THICK', - 10: 'ARRAY_PRT_2D_TILED_THICK', - 11: 'ARRAY_PRT_3D_TILED_THIN1', - 12: 'ARRAY_3D_TILED_THIN1', - 13: 'ARRAY_3D_TILED_THICK', - 14: 'ARRAY_3D_TILED_XTHICK', - 15: 'ARRAY_PRT_3D_TILED_THICK', -} -ARRAY_LINEAR_GENERAL = 0 -ARRAY_LINEAR_ALIGNED = 1 -ARRAY_1D_TILED_THIN1 = 2 -ARRAY_1D_TILED_THICK = 3 -ARRAY_2D_TILED_THIN1 = 4 -ARRAY_PRT_TILED_THIN1 = 5 -ARRAY_PRT_2D_TILED_THIN1 = 6 -ARRAY_2D_TILED_THICK = 7 -ARRAY_2D_TILED_XTHICK = 8 -ARRAY_PRT_TILED_THICK = 9 -ARRAY_PRT_2D_TILED_THICK = 10 -ARRAY_PRT_3D_TILED_THIN1 = 11 -ARRAY_3D_TILED_THIN1 = 12 -ARRAY_3D_TILED_THICK = 13 -ARRAY_3D_TILED_XTHICK = 14 -ARRAY_PRT_3D_TILED_THICK = 15 -ArrayMode = ctypes.c_uint32 # enum - -# values for enumeration 'NumPipes' -NumPipes__enumvalues = { - 0: 'ADDR_CONFIG_1_PIPE', - 1: 'ADDR_CONFIG_2_PIPE', - 2: 'ADDR_CONFIG_4_PIPE', - 3: 'ADDR_CONFIG_8_PIPE', - 4: 'ADDR_CONFIG_16_PIPE', - 5: 'ADDR_CONFIG_32_PIPE', - 6: 'ADDR_CONFIG_64_PIPE', -} -ADDR_CONFIG_1_PIPE = 0 -ADDR_CONFIG_2_PIPE = 1 -ADDR_CONFIG_4_PIPE = 2 -ADDR_CONFIG_8_PIPE = 3 -ADDR_CONFIG_16_PIPE = 4 -ADDR_CONFIG_32_PIPE = 5 -ADDR_CONFIG_64_PIPE = 6 -NumPipes = ctypes.c_uint32 # enum - -# values for enumeration 'NumBanksConfig' -NumBanksConfig__enumvalues = { - 0: 'ADDR_CONFIG_1_BANK', - 1: 'ADDR_CONFIG_2_BANK', - 2: 'ADDR_CONFIG_4_BANK', - 3: 'ADDR_CONFIG_8_BANK', - 4: 'ADDR_CONFIG_16_BANK', -} -ADDR_CONFIG_1_BANK = 0 -ADDR_CONFIG_2_BANK = 1 -ADDR_CONFIG_4_BANK = 2 -ADDR_CONFIG_8_BANK = 3 -ADDR_CONFIG_16_BANK = 4 -NumBanksConfig = ctypes.c_uint32 # enum - -# values for enumeration 'PipeInterleaveSize' -PipeInterleaveSize__enumvalues = { - 0: 'ADDR_CONFIG_PIPE_INTERLEAVE_256B', - 1: 'ADDR_CONFIG_PIPE_INTERLEAVE_512B', - 2: 'ADDR_CONFIG_PIPE_INTERLEAVE_1KB', - 3: 'ADDR_CONFIG_PIPE_INTERLEAVE_2KB', -} -ADDR_CONFIG_PIPE_INTERLEAVE_256B = 0 -ADDR_CONFIG_PIPE_INTERLEAVE_512B = 1 -ADDR_CONFIG_PIPE_INTERLEAVE_1KB = 2 -ADDR_CONFIG_PIPE_INTERLEAVE_2KB = 3 -PipeInterleaveSize = ctypes.c_uint32 # enum - -# values for enumeration 'BankInterleaveSize' -BankInterleaveSize__enumvalues = { - 0: 'ADDR_CONFIG_BANK_INTERLEAVE_1', - 1: 'ADDR_CONFIG_BANK_INTERLEAVE_2', - 2: 'ADDR_CONFIG_BANK_INTERLEAVE_4', - 3: 'ADDR_CONFIG_BANK_INTERLEAVE_8', -} -ADDR_CONFIG_BANK_INTERLEAVE_1 = 0 -ADDR_CONFIG_BANK_INTERLEAVE_2 = 1 -ADDR_CONFIG_BANK_INTERLEAVE_4 = 2 -ADDR_CONFIG_BANK_INTERLEAVE_8 = 3 -BankInterleaveSize = ctypes.c_uint32 # enum - -# values for enumeration 'NumShaderEngines' -NumShaderEngines__enumvalues = { - 0: 'ADDR_CONFIG_1_SHADER_ENGINE', - 1: 'ADDR_CONFIG_2_SHADER_ENGINE', - 2: 'ADDR_CONFIG_4_SHADER_ENGINE', - 3: 'ADDR_CONFIG_8_SHADER_ENGINE', -} -ADDR_CONFIG_1_SHADER_ENGINE = 0 -ADDR_CONFIG_2_SHADER_ENGINE = 1 -ADDR_CONFIG_4_SHADER_ENGINE = 2 -ADDR_CONFIG_8_SHADER_ENGINE = 3 -NumShaderEngines = ctypes.c_uint32 # enum - -# values for enumeration 'NumRbPerShaderEngine' -NumRbPerShaderEngine__enumvalues = { - 0: 'ADDR_CONFIG_1_RB_PER_SHADER_ENGINE', - 1: 'ADDR_CONFIG_2_RB_PER_SHADER_ENGINE', - 2: 'ADDR_CONFIG_4_RB_PER_SHADER_ENGINE', -} -ADDR_CONFIG_1_RB_PER_SHADER_ENGINE = 0 -ADDR_CONFIG_2_RB_PER_SHADER_ENGINE = 1 -ADDR_CONFIG_4_RB_PER_SHADER_ENGINE = 2 -NumRbPerShaderEngine = ctypes.c_uint32 # enum - -# values for enumeration 'NumGPUs' -NumGPUs__enumvalues = { - 0: 'ADDR_CONFIG_1_GPU', - 1: 'ADDR_CONFIG_2_GPU', - 2: 'ADDR_CONFIG_4_GPU', - 3: 'ADDR_CONFIG_8_GPU', -} -ADDR_CONFIG_1_GPU = 0 -ADDR_CONFIG_2_GPU = 1 -ADDR_CONFIG_4_GPU = 2 -ADDR_CONFIG_8_GPU = 3 -NumGPUs = ctypes.c_uint32 # enum - -# values for enumeration 'NumMaxCompressedFragments' -NumMaxCompressedFragments__enumvalues = { - 0: 'ADDR_CONFIG_1_MAX_COMPRESSED_FRAGMENTS', - 1: 'ADDR_CONFIG_2_MAX_COMPRESSED_FRAGMENTS', - 2: 'ADDR_CONFIG_4_MAX_COMPRESSED_FRAGMENTS', - 3: 'ADDR_CONFIG_8_MAX_COMPRESSED_FRAGMENTS', -} -ADDR_CONFIG_1_MAX_COMPRESSED_FRAGMENTS = 0 -ADDR_CONFIG_2_MAX_COMPRESSED_FRAGMENTS = 1 -ADDR_CONFIG_4_MAX_COMPRESSED_FRAGMENTS = 2 -ADDR_CONFIG_8_MAX_COMPRESSED_FRAGMENTS = 3 -NumMaxCompressedFragments = ctypes.c_uint32 # enum - -# values for enumeration 'ShaderEngineTileSize' -ShaderEngineTileSize__enumvalues = { - 0: 'ADDR_CONFIG_SE_TILE_16', - 1: 'ADDR_CONFIG_SE_TILE_32', -} -ADDR_CONFIG_SE_TILE_16 = 0 -ADDR_CONFIG_SE_TILE_32 = 1 -ShaderEngineTileSize = ctypes.c_uint32 # enum - -# values for enumeration 'MultiGPUTileSize' -MultiGPUTileSize__enumvalues = { - 0: 'ADDR_CONFIG_GPU_TILE_16', - 1: 'ADDR_CONFIG_GPU_TILE_32', - 2: 'ADDR_CONFIG_GPU_TILE_64', - 3: 'ADDR_CONFIG_GPU_TILE_128', -} -ADDR_CONFIG_GPU_TILE_16 = 0 -ADDR_CONFIG_GPU_TILE_32 = 1 -ADDR_CONFIG_GPU_TILE_64 = 2 -ADDR_CONFIG_GPU_TILE_128 = 3 -MultiGPUTileSize = ctypes.c_uint32 # enum - -# values for enumeration 'RowSize' -RowSize__enumvalues = { - 0: 'ADDR_CONFIG_1KB_ROW', - 1: 'ADDR_CONFIG_2KB_ROW', - 2: 'ADDR_CONFIG_4KB_ROW', -} -ADDR_CONFIG_1KB_ROW = 0 -ADDR_CONFIG_2KB_ROW = 1 -ADDR_CONFIG_4KB_ROW = 2 -RowSize = ctypes.c_uint32 # enum - -# values for enumeration 'NumLowerPipes' -NumLowerPipes__enumvalues = { - 0: 'ADDR_CONFIG_1_LOWER_PIPES', - 1: 'ADDR_CONFIG_2_LOWER_PIPES', -} -ADDR_CONFIG_1_LOWER_PIPES = 0 -ADDR_CONFIG_2_LOWER_PIPES = 1 -NumLowerPipes = ctypes.c_uint32 # enum - -# values for enumeration 'ColorTransform' -ColorTransform__enumvalues = { - 0: 'DCC_CT_AUTO', - 1: 'DCC_CT_NONE', - 2: 'ABGR_TO_A_BG_G_RB', - 3: 'BGRA_TO_BG_G_RB_A', -} -DCC_CT_AUTO = 0 -DCC_CT_NONE = 1 -ABGR_TO_A_BG_G_RB = 2 -BGRA_TO_BG_G_RB_A = 3 -ColorTransform = ctypes.c_uint32 # enum - -# values for enumeration 'CompareRef' -CompareRef__enumvalues = { - 0: 'REF_NEVER', - 1: 'REF_LESS', - 2: 'REF_EQUAL', - 3: 'REF_LEQUAL', - 4: 'REF_GREATER', - 5: 'REF_NOTEQUAL', - 6: 'REF_GEQUAL', - 7: 'REF_ALWAYS', -} -REF_NEVER = 0 -REF_LESS = 1 -REF_EQUAL = 2 -REF_LEQUAL = 3 -REF_GREATER = 4 -REF_NOTEQUAL = 5 -REF_GEQUAL = 6 -REF_ALWAYS = 7 -CompareRef = ctypes.c_uint32 # enum - -# values for enumeration 'ReadSize' -ReadSize__enumvalues = { - 0: 'READ_256_BITS', - 1: 'READ_512_BITS', -} -READ_256_BITS = 0 -READ_512_BITS = 1 -ReadSize = ctypes.c_uint32 # enum - -# values for enumeration 'DepthFormat' -DepthFormat__enumvalues = { - 0: 'DEPTH_INVALID', - 1: 'DEPTH_16', - 2: 'DEPTH_X8_24', - 3: 'DEPTH_8_24', - 4: 'DEPTH_X8_24_FLOAT', - 5: 'DEPTH_8_24_FLOAT', - 6: 'DEPTH_32_FLOAT', - 7: 'DEPTH_X24_8_32_FLOAT', -} -DEPTH_INVALID = 0 -DEPTH_16 = 1 -DEPTH_X8_24 = 2 -DEPTH_8_24 = 3 -DEPTH_X8_24_FLOAT = 4 -DEPTH_8_24_FLOAT = 5 -DEPTH_32_FLOAT = 6 -DEPTH_X24_8_32_FLOAT = 7 -DepthFormat = ctypes.c_uint32 # enum - -# values for enumeration 'ZFormat' -ZFormat__enumvalues = { - 0: 'Z_INVALID', - 1: 'Z_16', - 2: 'Z_24', - 3: 'Z_32_FLOAT', -} -Z_INVALID = 0 -Z_16 = 1 -Z_24 = 2 -Z_32_FLOAT = 3 -ZFormat = ctypes.c_uint32 # enum - -# values for enumeration 'StencilFormat' -StencilFormat__enumvalues = { - 0: 'STENCIL_INVALID', - 1: 'STENCIL_8', -} -STENCIL_INVALID = 0 -STENCIL_8 = 1 -StencilFormat = ctypes.c_uint32 # enum - -# values for enumeration 'CmaskMode' -CmaskMode__enumvalues = { - 0: 'CMASK_CLEAR_NONE', - 1: 'CMASK_CLEAR_ONE', - 2: 'CMASK_CLEAR_ALL', - 3: 'CMASK_ANY_EXPANDED', - 4: 'CMASK_ALPHA0_FRAG1', - 5: 'CMASK_ALPHA0_FRAG2', - 6: 'CMASK_ALPHA0_FRAG4', - 7: 'CMASK_ALPHA0_FRAGS', - 8: 'CMASK_ALPHA1_FRAG1', - 9: 'CMASK_ALPHA1_FRAG2', - 10: 'CMASK_ALPHA1_FRAG4', - 11: 'CMASK_ALPHA1_FRAGS', - 12: 'CMASK_ALPHAX_FRAG1', - 13: 'CMASK_ALPHAX_FRAG2', - 14: 'CMASK_ALPHAX_FRAG4', - 15: 'CMASK_ALPHAX_FRAGS', -} -CMASK_CLEAR_NONE = 0 -CMASK_CLEAR_ONE = 1 -CMASK_CLEAR_ALL = 2 -CMASK_ANY_EXPANDED = 3 -CMASK_ALPHA0_FRAG1 = 4 -CMASK_ALPHA0_FRAG2 = 5 -CMASK_ALPHA0_FRAG4 = 6 -CMASK_ALPHA0_FRAGS = 7 -CMASK_ALPHA1_FRAG1 = 8 -CMASK_ALPHA1_FRAG2 = 9 -CMASK_ALPHA1_FRAG4 = 10 -CMASK_ALPHA1_FRAGS = 11 -CMASK_ALPHAX_FRAG1 = 12 -CMASK_ALPHAX_FRAG2 = 13 -CMASK_ALPHAX_FRAG4 = 14 -CMASK_ALPHAX_FRAGS = 15 -CmaskMode = ctypes.c_uint32 # enum - -# values for enumeration 'QuadExportFormat' -QuadExportFormat__enumvalues = { - 0: 'EXPORT_UNUSED', - 1: 'EXPORT_32_R', - 2: 'EXPORT_32_GR', - 3: 'EXPORT_32_AR', - 4: 'EXPORT_FP16_ABGR', - 5: 'EXPORT_UNSIGNED16_ABGR', - 6: 'EXPORT_SIGNED16_ABGR', - 7: 'EXPORT_32_ABGR', - 8: 'EXPORT_32BPP_8PIX', - 9: 'EXPORT_16_16_UNSIGNED_8PIX', - 10: 'EXPORT_16_16_SIGNED_8PIX', - 11: 'EXPORT_16_16_FLOAT_8PIX', -} -EXPORT_UNUSED = 0 -EXPORT_32_R = 1 -EXPORT_32_GR = 2 -EXPORT_32_AR = 3 -EXPORT_FP16_ABGR = 4 -EXPORT_UNSIGNED16_ABGR = 5 -EXPORT_SIGNED16_ABGR = 6 -EXPORT_32_ABGR = 7 -EXPORT_32BPP_8PIX = 8 -EXPORT_16_16_UNSIGNED_8PIX = 9 -EXPORT_16_16_SIGNED_8PIX = 10 -EXPORT_16_16_FLOAT_8PIX = 11 -QuadExportFormat = ctypes.c_uint32 # enum - -# values for enumeration 'QuadExportFormatOld' -QuadExportFormatOld__enumvalues = { - 0: 'EXPORT_4P_32BPC_ABGR', - 1: 'EXPORT_4P_16BPC_ABGR', - 2: 'EXPORT_4P_32BPC_GR', - 3: 'EXPORT_4P_32BPC_AR', - 4: 'EXPORT_2P_32BPC_ABGR', - 5: 'EXPORT_8P_32BPC_R', -} -EXPORT_4P_32BPC_ABGR = 0 -EXPORT_4P_16BPC_ABGR = 1 -EXPORT_4P_32BPC_GR = 2 -EXPORT_4P_32BPC_AR = 3 -EXPORT_2P_32BPC_ABGR = 4 -EXPORT_8P_32BPC_R = 5 -QuadExportFormatOld = ctypes.c_uint32 # enum - -# values for enumeration 'ColorFormat' -ColorFormat__enumvalues = { - 0: 'COLOR_INVALID', - 1: 'COLOR_8', - 2: 'COLOR_16', - 3: 'COLOR_8_8', - 4: 'COLOR_32', - 5: 'COLOR_16_16', - 6: 'COLOR_10_11_11', - 7: 'COLOR_11_11_10', - 8: 'COLOR_10_10_10_2', - 9: 'COLOR_2_10_10_10', - 10: 'COLOR_8_8_8_8', - 11: 'COLOR_32_32', - 12: 'COLOR_16_16_16_16', - 13: 'COLOR_RESERVED_13', - 14: 'COLOR_32_32_32_32', - 15: 'COLOR_RESERVED_15', - 16: 'COLOR_5_6_5', - 17: 'COLOR_1_5_5_5', - 18: 'COLOR_5_5_5_1', - 19: 'COLOR_4_4_4_4', - 20: 'COLOR_8_24', - 21: 'COLOR_24_8', - 22: 'COLOR_X24_8_32_FLOAT', - 23: 'COLOR_RESERVED_23', - 24: 'COLOR_RESERVED_24', - 25: 'COLOR_RESERVED_25', - 26: 'COLOR_RESERVED_26', - 27: 'COLOR_RESERVED_27', - 28: 'COLOR_RESERVED_28', - 29: 'COLOR_RESERVED_29', - 30: 'COLOR_RESERVED_30', - 31: 'COLOR_2_10_10_10_6E4', -} -COLOR_INVALID = 0 -COLOR_8 = 1 -COLOR_16 = 2 -COLOR_8_8 = 3 -COLOR_32 = 4 -COLOR_16_16 = 5 -COLOR_10_11_11 = 6 -COLOR_11_11_10 = 7 -COLOR_10_10_10_2 = 8 -COLOR_2_10_10_10 = 9 -COLOR_8_8_8_8 = 10 -COLOR_32_32 = 11 -COLOR_16_16_16_16 = 12 -COLOR_RESERVED_13 = 13 -COLOR_32_32_32_32 = 14 -COLOR_RESERVED_15 = 15 -COLOR_5_6_5 = 16 -COLOR_1_5_5_5 = 17 -COLOR_5_5_5_1 = 18 -COLOR_4_4_4_4 = 19 -COLOR_8_24 = 20 -COLOR_24_8 = 21 -COLOR_X24_8_32_FLOAT = 22 -COLOR_RESERVED_23 = 23 -COLOR_RESERVED_24 = 24 -COLOR_RESERVED_25 = 25 -COLOR_RESERVED_26 = 26 -COLOR_RESERVED_27 = 27 -COLOR_RESERVED_28 = 28 -COLOR_RESERVED_29 = 29 -COLOR_RESERVED_30 = 30 -COLOR_2_10_10_10_6E4 = 31 -ColorFormat = ctypes.c_uint32 # enum - -# values for enumeration 'SurfaceFormat' -SurfaceFormat__enumvalues = { - 0: 'FMT_INVALID', - 1: 'FMT_8', - 2: 'FMT_16', - 3: 'FMT_8_8', - 4: 'FMT_32', - 5: 'FMT_16_16', - 6: 'FMT_10_11_11', - 7: 'FMT_11_11_10', - 8: 'FMT_10_10_10_2', - 9: 'FMT_2_10_10_10', - 10: 'FMT_8_8_8_8', - 11: 'FMT_32_32', - 12: 'FMT_16_16_16_16', - 13: 'FMT_32_32_32', - 14: 'FMT_32_32_32_32', - 15: 'FMT_RESERVED_4', - 16: 'FMT_5_6_5', - 17: 'FMT_1_5_5_5', - 18: 'FMT_5_5_5_1', - 19: 'FMT_4_4_4_4', - 20: 'FMT_8_24', - 21: 'FMT_24_8', - 22: 'FMT_X24_8_32_FLOAT', - 23: 'FMT_RESERVED_33', - 24: 'FMT_11_11_10_FLOAT', - 25: 'FMT_16_FLOAT', - 26: 'FMT_32_FLOAT', - 27: 'FMT_16_16_FLOAT', - 28: 'FMT_8_24_FLOAT', - 29: 'FMT_24_8_FLOAT', - 30: 'FMT_32_32_FLOAT', - 31: 'FMT_10_11_11_FLOAT', - 32: 'FMT_16_16_16_16_FLOAT', - 33: 'FMT_3_3_2', - 34: 'FMT_6_5_5', - 35: 'FMT_32_32_32_32_FLOAT', - 36: 'FMT_RESERVED_36', - 37: 'FMT_1', - 38: 'FMT_1_REVERSED', - 39: 'FMT_GB_GR', - 40: 'FMT_BG_RG', - 41: 'FMT_32_AS_8', - 42: 'FMT_32_AS_8_8', - 43: 'FMT_5_9_9_9_SHAREDEXP', - 44: 'FMT_8_8_8', - 45: 'FMT_16_16_16', - 46: 'FMT_16_16_16_FLOAT', - 47: 'FMT_4_4', - 48: 'FMT_32_32_32_FLOAT', - 49: 'FMT_BC1', - 50: 'FMT_BC2', - 51: 'FMT_BC3', - 52: 'FMT_BC4', - 53: 'FMT_BC5', - 54: 'FMT_BC6', - 55: 'FMT_BC7', - 56: 'FMT_32_AS_32_32_32_32', - 57: 'FMT_APC3', - 58: 'FMT_APC4', - 59: 'FMT_APC5', - 60: 'FMT_APC6', - 61: 'FMT_APC7', - 62: 'FMT_CTX1', - 63: 'FMT_RESERVED_63', -} -FMT_INVALID = 0 -FMT_8 = 1 -FMT_16 = 2 -FMT_8_8 = 3 -FMT_32 = 4 -FMT_16_16 = 5 -FMT_10_11_11 = 6 -FMT_11_11_10 = 7 -FMT_10_10_10_2 = 8 -FMT_2_10_10_10 = 9 -FMT_8_8_8_8 = 10 -FMT_32_32 = 11 -FMT_16_16_16_16 = 12 -FMT_32_32_32 = 13 -FMT_32_32_32_32 = 14 -FMT_RESERVED_4 = 15 -FMT_5_6_5 = 16 -FMT_1_5_5_5 = 17 -FMT_5_5_5_1 = 18 -FMT_4_4_4_4 = 19 -FMT_8_24 = 20 -FMT_24_8 = 21 -FMT_X24_8_32_FLOAT = 22 -FMT_RESERVED_33 = 23 -FMT_11_11_10_FLOAT = 24 -FMT_16_FLOAT = 25 -FMT_32_FLOAT = 26 -FMT_16_16_FLOAT = 27 -FMT_8_24_FLOAT = 28 -FMT_24_8_FLOAT = 29 -FMT_32_32_FLOAT = 30 -FMT_10_11_11_FLOAT = 31 -FMT_16_16_16_16_FLOAT = 32 -FMT_3_3_2 = 33 -FMT_6_5_5 = 34 -FMT_32_32_32_32_FLOAT = 35 -FMT_RESERVED_36 = 36 -FMT_1 = 37 -FMT_1_REVERSED = 38 -FMT_GB_GR = 39 -FMT_BG_RG = 40 -FMT_32_AS_8 = 41 -FMT_32_AS_8_8 = 42 -FMT_5_9_9_9_SHAREDEXP = 43 -FMT_8_8_8 = 44 -FMT_16_16_16 = 45 -FMT_16_16_16_FLOAT = 46 -FMT_4_4 = 47 -FMT_32_32_32_FLOAT = 48 -FMT_BC1 = 49 -FMT_BC2 = 50 -FMT_BC3 = 51 -FMT_BC4 = 52 -FMT_BC5 = 53 -FMT_BC6 = 54 -FMT_BC7 = 55 -FMT_32_AS_32_32_32_32 = 56 -FMT_APC3 = 57 -FMT_APC4 = 58 -FMT_APC5 = 59 -FMT_APC6 = 60 -FMT_APC7 = 61 -FMT_CTX1 = 62 -FMT_RESERVED_63 = 63 -SurfaceFormat = ctypes.c_uint32 # enum - -# values for enumeration 'IMG_NUM_FORMAT_FMASK' -IMG_NUM_FORMAT_FMASK__enumvalues = { - 0: 'IMG_NUM_FORMAT_FMASK_8_2_1', - 1: 'IMG_NUM_FORMAT_FMASK_8_4_1', - 2: 'IMG_NUM_FORMAT_FMASK_8_8_1', - 3: 'IMG_NUM_FORMAT_FMASK_8_2_2', - 4: 'IMG_NUM_FORMAT_FMASK_8_4_2', - 5: 'IMG_NUM_FORMAT_FMASK_8_4_4', - 6: 'IMG_NUM_FORMAT_FMASK_16_16_1', - 7: 'IMG_NUM_FORMAT_FMASK_16_8_2', - 8: 'IMG_NUM_FORMAT_FMASK_32_16_2', - 9: 'IMG_NUM_FORMAT_FMASK_32_8_4', - 10: 'IMG_NUM_FORMAT_FMASK_32_8_8', - 11: 'IMG_NUM_FORMAT_FMASK_64_16_4', - 12: 'IMG_NUM_FORMAT_FMASK_64_16_8', - 13: 'IMG_NUM_FORMAT_FMASK_RESERVED_13', - 14: 'IMG_NUM_FORMAT_FMASK_RESERVED_14', - 15: 'IMG_NUM_FORMAT_FMASK_RESERVED_15', -} -IMG_NUM_FORMAT_FMASK_8_2_1 = 0 -IMG_NUM_FORMAT_FMASK_8_4_1 = 1 -IMG_NUM_FORMAT_FMASK_8_8_1 = 2 -IMG_NUM_FORMAT_FMASK_8_2_2 = 3 -IMG_NUM_FORMAT_FMASK_8_4_2 = 4 -IMG_NUM_FORMAT_FMASK_8_4_4 = 5 -IMG_NUM_FORMAT_FMASK_16_16_1 = 6 -IMG_NUM_FORMAT_FMASK_16_8_2 = 7 -IMG_NUM_FORMAT_FMASK_32_16_2 = 8 -IMG_NUM_FORMAT_FMASK_32_8_4 = 9 -IMG_NUM_FORMAT_FMASK_32_8_8 = 10 -IMG_NUM_FORMAT_FMASK_64_16_4 = 11 -IMG_NUM_FORMAT_FMASK_64_16_8 = 12 -IMG_NUM_FORMAT_FMASK_RESERVED_13 = 13 -IMG_NUM_FORMAT_FMASK_RESERVED_14 = 14 -IMG_NUM_FORMAT_FMASK_RESERVED_15 = 15 -IMG_NUM_FORMAT_FMASK = ctypes.c_uint32 # enum - -# values for enumeration 'IMG_NUM_FORMAT_N_IN_16' -IMG_NUM_FORMAT_N_IN_16__enumvalues = { - 0: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_0', - 1: 'IMG_NUM_FORMAT_N_IN_16_UNORM_10', - 2: 'IMG_NUM_FORMAT_N_IN_16_UNORM_9', - 3: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_3', - 4: 'IMG_NUM_FORMAT_N_IN_16_UINT_10', - 5: 'IMG_NUM_FORMAT_N_IN_16_UINT_9', - 6: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_6', - 7: 'IMG_NUM_FORMAT_N_IN_16_UNORM_UINT_10', - 8: 'IMG_NUM_FORMAT_N_IN_16_UNORM_UINT_9', - 9: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_9', - 10: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_10', - 11: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_11', - 12: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_12', - 13: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_13', - 14: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_14', - 15: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_15', -} -IMG_NUM_FORMAT_N_IN_16_RESERVED_0 = 0 -IMG_NUM_FORMAT_N_IN_16_UNORM_10 = 1 -IMG_NUM_FORMAT_N_IN_16_UNORM_9 = 2 -IMG_NUM_FORMAT_N_IN_16_RESERVED_3 = 3 -IMG_NUM_FORMAT_N_IN_16_UINT_10 = 4 -IMG_NUM_FORMAT_N_IN_16_UINT_9 = 5 -IMG_NUM_FORMAT_N_IN_16_RESERVED_6 = 6 -IMG_NUM_FORMAT_N_IN_16_UNORM_UINT_10 = 7 -IMG_NUM_FORMAT_N_IN_16_UNORM_UINT_9 = 8 -IMG_NUM_FORMAT_N_IN_16_RESERVED_9 = 9 -IMG_NUM_FORMAT_N_IN_16_RESERVED_10 = 10 -IMG_NUM_FORMAT_N_IN_16_RESERVED_11 = 11 -IMG_NUM_FORMAT_N_IN_16_RESERVED_12 = 12 -IMG_NUM_FORMAT_N_IN_16_RESERVED_13 = 13 -IMG_NUM_FORMAT_N_IN_16_RESERVED_14 = 14 -IMG_NUM_FORMAT_N_IN_16_RESERVED_15 = 15 -IMG_NUM_FORMAT_N_IN_16 = ctypes.c_uint32 # enum - -# values for enumeration 'TileType' -TileType__enumvalues = { - 0: 'ARRAY_COLOR_TILE', - 1: 'ARRAY_DEPTH_TILE', -} -ARRAY_COLOR_TILE = 0 -ARRAY_DEPTH_TILE = 1 -TileType = ctypes.c_uint32 # enum - -# values for enumeration 'NonDispTilingOrder' -NonDispTilingOrder__enumvalues = { - 0: 'ADDR_SURF_MICRO_TILING_DISPLAY', - 1: 'ADDR_SURF_MICRO_TILING_NON_DISPLAY', -} -ADDR_SURF_MICRO_TILING_DISPLAY = 0 -ADDR_SURF_MICRO_TILING_NON_DISPLAY = 1 -NonDispTilingOrder = ctypes.c_uint32 # enum - -# values for enumeration 'MicroTileMode' -MicroTileMode__enumvalues = { - 0: 'ADDR_SURF_DISPLAY_MICRO_TILING', - 1: 'ADDR_SURF_THIN_MICRO_TILING', - 2: 'ADDR_SURF_DEPTH_MICRO_TILING', - 3: 'ADDR_SURF_ROTATED_MICRO_TILING', - 4: 'ADDR_SURF_THICK_MICRO_TILING', -} -ADDR_SURF_DISPLAY_MICRO_TILING = 0 -ADDR_SURF_THIN_MICRO_TILING = 1 -ADDR_SURF_DEPTH_MICRO_TILING = 2 -ADDR_SURF_ROTATED_MICRO_TILING = 3 -ADDR_SURF_THICK_MICRO_TILING = 4 -MicroTileMode = ctypes.c_uint32 # enum - -# values for enumeration 'TileSplit' -TileSplit__enumvalues = { - 0: 'ADDR_SURF_TILE_SPLIT_64B', - 1: 'ADDR_SURF_TILE_SPLIT_128B', - 2: 'ADDR_SURF_TILE_SPLIT_256B', - 3: 'ADDR_SURF_TILE_SPLIT_512B', - 4: 'ADDR_SURF_TILE_SPLIT_1KB', - 5: 'ADDR_SURF_TILE_SPLIT_2KB', - 6: 'ADDR_SURF_TILE_SPLIT_4KB', -} -ADDR_SURF_TILE_SPLIT_64B = 0 -ADDR_SURF_TILE_SPLIT_128B = 1 -ADDR_SURF_TILE_SPLIT_256B = 2 -ADDR_SURF_TILE_SPLIT_512B = 3 -ADDR_SURF_TILE_SPLIT_1KB = 4 -ADDR_SURF_TILE_SPLIT_2KB = 5 -ADDR_SURF_TILE_SPLIT_4KB = 6 -TileSplit = ctypes.c_uint32 # enum - -# values for enumeration 'SampleSplit' -SampleSplit__enumvalues = { - 0: 'ADDR_SURF_SAMPLE_SPLIT_1', - 1: 'ADDR_SURF_SAMPLE_SPLIT_2', - 2: 'ADDR_SURF_SAMPLE_SPLIT_4', - 3: 'ADDR_SURF_SAMPLE_SPLIT_8', -} -ADDR_SURF_SAMPLE_SPLIT_1 = 0 -ADDR_SURF_SAMPLE_SPLIT_2 = 1 -ADDR_SURF_SAMPLE_SPLIT_4 = 2 -ADDR_SURF_SAMPLE_SPLIT_8 = 3 -SampleSplit = ctypes.c_uint32 # enum - -# values for enumeration 'PipeConfig' -PipeConfig__enumvalues = { - 0: 'ADDR_SURF_P2', - 1: 'ADDR_SURF_P2_RESERVED0', - 2: 'ADDR_SURF_P2_RESERVED1', - 3: 'ADDR_SURF_P2_RESERVED2', - 4: 'ADDR_SURF_P4_8x16', - 5: 'ADDR_SURF_P4_16x16', - 6: 'ADDR_SURF_P4_16x32', - 7: 'ADDR_SURF_P4_32x32', - 8: 'ADDR_SURF_P8_16x16_8x16', - 9: 'ADDR_SURF_P8_16x32_8x16', - 10: 'ADDR_SURF_P8_32x32_8x16', - 11: 'ADDR_SURF_P8_16x32_16x16', - 12: 'ADDR_SURF_P8_32x32_16x16', - 13: 'ADDR_SURF_P8_32x32_16x32', - 14: 'ADDR_SURF_P8_32x64_32x32', - 15: 'ADDR_SURF_P8_RESERVED0', - 16: 'ADDR_SURF_P16_32x32_8x16', - 17: 'ADDR_SURF_P16_32x32_16x16', - 18: 'ADDR_SURF_P16', -} -ADDR_SURF_P2 = 0 -ADDR_SURF_P2_RESERVED0 = 1 -ADDR_SURF_P2_RESERVED1 = 2 -ADDR_SURF_P2_RESERVED2 = 3 -ADDR_SURF_P4_8x16 = 4 -ADDR_SURF_P4_16x16 = 5 -ADDR_SURF_P4_16x32 = 6 -ADDR_SURF_P4_32x32 = 7 -ADDR_SURF_P8_16x16_8x16 = 8 -ADDR_SURF_P8_16x32_8x16 = 9 -ADDR_SURF_P8_32x32_8x16 = 10 -ADDR_SURF_P8_16x32_16x16 = 11 -ADDR_SURF_P8_32x32_16x16 = 12 -ADDR_SURF_P8_32x32_16x32 = 13 -ADDR_SURF_P8_32x64_32x32 = 14 -ADDR_SURF_P8_RESERVED0 = 15 -ADDR_SURF_P16_32x32_8x16 = 16 -ADDR_SURF_P16_32x32_16x16 = 17 -ADDR_SURF_P16 = 18 -PipeConfig = ctypes.c_uint32 # enum - -# values for enumeration 'SeEnable' -SeEnable__enumvalues = { - 0: 'ADDR_CONFIG_DISABLE_SE', - 1: 'ADDR_CONFIG_ENABLE_SE', -} -ADDR_CONFIG_DISABLE_SE = 0 -ADDR_CONFIG_ENABLE_SE = 1 -SeEnable = ctypes.c_uint32 # enum - -# values for enumeration 'NumBanks' -NumBanks__enumvalues = { - 0: 'ADDR_SURF_2_BANK', - 1: 'ADDR_SURF_4_BANK', - 2: 'ADDR_SURF_8_BANK', - 3: 'ADDR_SURF_16_BANK', -} -ADDR_SURF_2_BANK = 0 -ADDR_SURF_4_BANK = 1 -ADDR_SURF_8_BANK = 2 -ADDR_SURF_16_BANK = 3 -NumBanks = ctypes.c_uint32 # enum - -# values for enumeration 'BankWidth' -BankWidth__enumvalues = { - 0: 'ADDR_SURF_BANK_WIDTH_1', - 1: 'ADDR_SURF_BANK_WIDTH_2', - 2: 'ADDR_SURF_BANK_WIDTH_4', - 3: 'ADDR_SURF_BANK_WIDTH_8', -} -ADDR_SURF_BANK_WIDTH_1 = 0 -ADDR_SURF_BANK_WIDTH_2 = 1 -ADDR_SURF_BANK_WIDTH_4 = 2 -ADDR_SURF_BANK_WIDTH_8 = 3 -BankWidth = ctypes.c_uint32 # enum - -# values for enumeration 'BankHeight' -BankHeight__enumvalues = { - 0: 'ADDR_SURF_BANK_HEIGHT_1', - 1: 'ADDR_SURF_BANK_HEIGHT_2', - 2: 'ADDR_SURF_BANK_HEIGHT_4', - 3: 'ADDR_SURF_BANK_HEIGHT_8', -} -ADDR_SURF_BANK_HEIGHT_1 = 0 -ADDR_SURF_BANK_HEIGHT_2 = 1 -ADDR_SURF_BANK_HEIGHT_4 = 2 -ADDR_SURF_BANK_HEIGHT_8 = 3 -BankHeight = ctypes.c_uint32 # enum - -# values for enumeration 'BankWidthHeight' -BankWidthHeight__enumvalues = { - 0: 'ADDR_SURF_BANK_WH_1', - 1: 'ADDR_SURF_BANK_WH_2', - 2: 'ADDR_SURF_BANK_WH_4', - 3: 'ADDR_SURF_BANK_WH_8', -} -ADDR_SURF_BANK_WH_1 = 0 -ADDR_SURF_BANK_WH_2 = 1 -ADDR_SURF_BANK_WH_4 = 2 -ADDR_SURF_BANK_WH_8 = 3 -BankWidthHeight = ctypes.c_uint32 # enum - -# values for enumeration 'MacroTileAspect' -MacroTileAspect__enumvalues = { - 0: 'ADDR_SURF_MACRO_ASPECT_1', - 1: 'ADDR_SURF_MACRO_ASPECT_2', - 2: 'ADDR_SURF_MACRO_ASPECT_4', - 3: 'ADDR_SURF_MACRO_ASPECT_8', -} -ADDR_SURF_MACRO_ASPECT_1 = 0 -ADDR_SURF_MACRO_ASPECT_2 = 1 -ADDR_SURF_MACRO_ASPECT_4 = 2 -ADDR_SURF_MACRO_ASPECT_8 = 3 -MacroTileAspect = ctypes.c_uint32 # enum - -# values for enumeration 'PipeTiling' -PipeTiling__enumvalues = { - 0: 'CONFIG_1_PIPE', - 1: 'CONFIG_2_PIPE', - 2: 'CONFIG_4_PIPE', - 3: 'CONFIG_8_PIPE', -} -CONFIG_1_PIPE = 0 -CONFIG_2_PIPE = 1 -CONFIG_4_PIPE = 2 -CONFIG_8_PIPE = 3 -PipeTiling = ctypes.c_uint32 # enum - -# values for enumeration 'BankTiling' -BankTiling__enumvalues = { - 0: 'CONFIG_4_BANK', - 1: 'CONFIG_8_BANK', -} -CONFIG_4_BANK = 0 -CONFIG_8_BANK = 1 -BankTiling = ctypes.c_uint32 # enum - -# values for enumeration 'GroupInterleave' -GroupInterleave__enumvalues = { - 0: 'CONFIG_256B_GROUP', - 1: 'CONFIG_512B_GROUP', -} -CONFIG_256B_GROUP = 0 -CONFIG_512B_GROUP = 1 -GroupInterleave = ctypes.c_uint32 # enum - -# values for enumeration 'RowTiling' -RowTiling__enumvalues = { - 0: 'CONFIG_1KB_ROW', - 1: 'CONFIG_2KB_ROW', - 2: 'CONFIG_4KB_ROW', - 3: 'CONFIG_8KB_ROW', - 4: 'CONFIG_1KB_ROW_OPT', - 5: 'CONFIG_2KB_ROW_OPT', - 6: 'CONFIG_4KB_ROW_OPT', - 7: 'CONFIG_8KB_ROW_OPT', -} -CONFIG_1KB_ROW = 0 -CONFIG_2KB_ROW = 1 -CONFIG_4KB_ROW = 2 -CONFIG_8KB_ROW = 3 -CONFIG_1KB_ROW_OPT = 4 -CONFIG_2KB_ROW_OPT = 5 -CONFIG_4KB_ROW_OPT = 6 -CONFIG_8KB_ROW_OPT = 7 -RowTiling = ctypes.c_uint32 # enum - -# values for enumeration 'BankSwapBytes' -BankSwapBytes__enumvalues = { - 0: 'CONFIG_128B_SWAPS', - 1: 'CONFIG_256B_SWAPS', - 2: 'CONFIG_512B_SWAPS', - 3: 'CONFIG_1KB_SWAPS', -} -CONFIG_128B_SWAPS = 0 -CONFIG_256B_SWAPS = 1 -CONFIG_512B_SWAPS = 2 -CONFIG_1KB_SWAPS = 3 -BankSwapBytes = ctypes.c_uint32 # enum - -# values for enumeration 'SampleSplitBytes' -SampleSplitBytes__enumvalues = { - 0: 'CONFIG_1KB_SPLIT', - 1: 'CONFIG_2KB_SPLIT', - 2: 'CONFIG_4KB_SPLIT', - 3: 'CONFIG_8KB_SPLIT', -} -CONFIG_1KB_SPLIT = 0 -CONFIG_2KB_SPLIT = 1 -CONFIG_4KB_SPLIT = 2 -CONFIG_8KB_SPLIT = 3 -SampleSplitBytes = ctypes.c_uint32 # enum - -# values for enumeration 'SurfaceNumber' -SurfaceNumber__enumvalues = { - 0: 'NUMBER_UNORM', - 1: 'NUMBER_SNORM', - 2: 'NUMBER_USCALED', - 3: 'NUMBER_SSCALED', - 4: 'NUMBER_UINT', - 5: 'NUMBER_SINT', - 6: 'NUMBER_SRGB', - 7: 'NUMBER_FLOAT', -} -NUMBER_UNORM = 0 -NUMBER_SNORM = 1 -NUMBER_USCALED = 2 -NUMBER_SSCALED = 3 -NUMBER_UINT = 4 -NUMBER_SINT = 5 -NUMBER_SRGB = 6 -NUMBER_FLOAT = 7 -SurfaceNumber = ctypes.c_uint32 # enum - -# values for enumeration 'SurfaceSwap' -SurfaceSwap__enumvalues = { - 0: 'SWAP_STD', - 1: 'SWAP_ALT', - 2: 'SWAP_STD_REV', - 3: 'SWAP_ALT_REV', -} -SWAP_STD = 0 -SWAP_ALT = 1 -SWAP_STD_REV = 2 -SWAP_ALT_REV = 3 -SurfaceSwap = ctypes.c_uint32 # enum - -# values for enumeration 'RoundMode' -RoundMode__enumvalues = { - 0: 'ROUND_BY_HALF', - 1: 'ROUND_TRUNCATE', -} -ROUND_BY_HALF = 0 -ROUND_TRUNCATE = 1 -RoundMode = ctypes.c_uint32 # enum - -# values for enumeration 'BUF_FMT' -BUF_FMT__enumvalues = { - 0: 'BUF_FMT_INVALID', - 1: 'BUF_FMT_8_UNORM', - 2: 'BUF_FMT_8_SNORM', - 3: 'BUF_FMT_8_USCALED', - 4: 'BUF_FMT_8_SSCALED', - 5: 'BUF_FMT_8_UINT', - 6: 'BUF_FMT_8_SINT', - 7: 'BUF_FMT_16_UNORM', - 8: 'BUF_FMT_16_SNORM', - 9: 'BUF_FMT_16_USCALED', - 10: 'BUF_FMT_16_SSCALED', - 11: 'BUF_FMT_16_UINT', - 12: 'BUF_FMT_16_SINT', - 13: 'BUF_FMT_16_FLOAT', - 14: 'BUF_FMT_8_8_UNORM', - 15: 'BUF_FMT_8_8_SNORM', - 16: 'BUF_FMT_8_8_USCALED', - 17: 'BUF_FMT_8_8_SSCALED', - 18: 'BUF_FMT_8_8_UINT', - 19: 'BUF_FMT_8_8_SINT', - 20: 'BUF_FMT_32_UINT', - 21: 'BUF_FMT_32_SINT', - 22: 'BUF_FMT_32_FLOAT', - 23: 'BUF_FMT_16_16_UNORM', - 24: 'BUF_FMT_16_16_SNORM', - 25: 'BUF_FMT_16_16_USCALED', - 26: 'BUF_FMT_16_16_SSCALED', - 27: 'BUF_FMT_16_16_UINT', - 28: 'BUF_FMT_16_16_SINT', - 29: 'BUF_FMT_16_16_FLOAT', - 30: 'BUF_FMT_10_11_11_UNORM', - 31: 'BUF_FMT_10_11_11_SNORM', - 32: 'BUF_FMT_10_11_11_USCALED', - 33: 'BUF_FMT_10_11_11_SSCALED', - 34: 'BUF_FMT_10_11_11_UINT', - 35: 'BUF_FMT_10_11_11_SINT', - 36: 'BUF_FMT_10_11_11_FLOAT', - 37: 'BUF_FMT_11_11_10_UNORM', - 38: 'BUF_FMT_11_11_10_SNORM', - 39: 'BUF_FMT_11_11_10_USCALED', - 40: 'BUF_FMT_11_11_10_SSCALED', - 41: 'BUF_FMT_11_11_10_UINT', - 42: 'BUF_FMT_11_11_10_SINT', - 43: 'BUF_FMT_11_11_10_FLOAT', - 44: 'BUF_FMT_10_10_10_2_UNORM', - 45: 'BUF_FMT_10_10_10_2_SNORM', - 46: 'BUF_FMT_10_10_10_2_USCALED', - 47: 'BUF_FMT_10_10_10_2_SSCALED', - 48: 'BUF_FMT_10_10_10_2_UINT', - 49: 'BUF_FMT_10_10_10_2_SINT', - 50: 'BUF_FMT_2_10_10_10_UNORM', - 51: 'BUF_FMT_2_10_10_10_SNORM', - 52: 'BUF_FMT_2_10_10_10_USCALED', - 53: 'BUF_FMT_2_10_10_10_SSCALED', - 54: 'BUF_FMT_2_10_10_10_UINT', - 55: 'BUF_FMT_2_10_10_10_SINT', - 56: 'BUF_FMT_8_8_8_8_UNORM', - 57: 'BUF_FMT_8_8_8_8_SNORM', - 58: 'BUF_FMT_8_8_8_8_USCALED', - 59: 'BUF_FMT_8_8_8_8_SSCALED', - 60: 'BUF_FMT_8_8_8_8_UINT', - 61: 'BUF_FMT_8_8_8_8_SINT', - 62: 'BUF_FMT_32_32_UINT', - 63: 'BUF_FMT_32_32_SINT', - 64: 'BUF_FMT_32_32_FLOAT', - 65: 'BUF_FMT_16_16_16_16_UNORM', - 66: 'BUF_FMT_16_16_16_16_SNORM', - 67: 'BUF_FMT_16_16_16_16_USCALED', - 68: 'BUF_FMT_16_16_16_16_SSCALED', - 69: 'BUF_FMT_16_16_16_16_UINT', - 70: 'BUF_FMT_16_16_16_16_SINT', - 71: 'BUF_FMT_16_16_16_16_FLOAT', - 72: 'BUF_FMT_32_32_32_UINT', - 73: 'BUF_FMT_32_32_32_SINT', - 74: 'BUF_FMT_32_32_32_FLOAT', - 75: 'BUF_FMT_32_32_32_32_UINT', - 76: 'BUF_FMT_32_32_32_32_SINT', - 77: 'BUF_FMT_32_32_32_32_FLOAT', - 78: 'BUF_FMT_RESERVED_78', - 79: 'BUF_FMT_RESERVED_79', - 80: 'BUF_FMT_RESERVED_80', - 81: 'BUF_FMT_RESERVED_81', - 82: 'BUF_FMT_RESERVED_82', - 83: 'BUF_FMT_RESERVED_83', - 84: 'BUF_FMT_RESERVED_84', - 85: 'BUF_FMT_RESERVED_85', - 86: 'BUF_FMT_RESERVED_86', - 87: 'BUF_FMT_RESERVED_87', - 88: 'BUF_FMT_RESERVED_88', - 89: 'BUF_FMT_RESERVED_89', - 90: 'BUF_FMT_RESERVED_90', - 91: 'BUF_FMT_RESERVED_91', - 92: 'BUF_FMT_RESERVED_92', - 93: 'BUF_FMT_RESERVED_93', - 94: 'BUF_FMT_RESERVED_94', - 95: 'BUF_FMT_RESERVED_95', - 96: 'BUF_FMT_RESERVED_96', - 97: 'BUF_FMT_RESERVED_97', - 98: 'BUF_FMT_RESERVED_98', - 99: 'BUF_FMT_RESERVED_99', - 100: 'BUF_FMT_RESERVED_100', - 101: 'BUF_FMT_RESERVED_101', - 102: 'BUF_FMT_RESERVED_102', - 103: 'BUF_FMT_RESERVED_103', - 104: 'BUF_FMT_RESERVED_104', - 105: 'BUF_FMT_RESERVED_105', - 106: 'BUF_FMT_RESERVED_106', - 107: 'BUF_FMT_RESERVED_107', - 108: 'BUF_FMT_RESERVED_108', - 109: 'BUF_FMT_RESERVED_109', - 110: 'BUF_FMT_RESERVED_110', - 111: 'BUF_FMT_RESERVED_111', - 112: 'BUF_FMT_RESERVED_112', - 113: 'BUF_FMT_RESERVED_113', - 114: 'BUF_FMT_RESERVED_114', - 115: 'BUF_FMT_RESERVED_115', - 116: 'BUF_FMT_RESERVED_116', - 117: 'BUF_FMT_RESERVED_117', - 118: 'BUF_FMT_RESERVED_118', - 119: 'BUF_FMT_RESERVED_119', - 120: 'BUF_FMT_RESERVED_120', - 121: 'BUF_FMT_RESERVED_121', - 122: 'BUF_FMT_RESERVED_122', - 123: 'BUF_FMT_RESERVED_123', - 124: 'BUF_FMT_RESERVED_124', - 125: 'BUF_FMT_RESERVED_125', - 126: 'BUF_FMT_RESERVED_126', - 127: 'BUF_FMT_RESERVED_127', -} -BUF_FMT_INVALID = 0 -BUF_FMT_8_UNORM = 1 -BUF_FMT_8_SNORM = 2 -BUF_FMT_8_USCALED = 3 -BUF_FMT_8_SSCALED = 4 -BUF_FMT_8_UINT = 5 -BUF_FMT_8_SINT = 6 -BUF_FMT_16_UNORM = 7 -BUF_FMT_16_SNORM = 8 -BUF_FMT_16_USCALED = 9 -BUF_FMT_16_SSCALED = 10 -BUF_FMT_16_UINT = 11 -BUF_FMT_16_SINT = 12 -BUF_FMT_16_FLOAT = 13 -BUF_FMT_8_8_UNORM = 14 -BUF_FMT_8_8_SNORM = 15 -BUF_FMT_8_8_USCALED = 16 -BUF_FMT_8_8_SSCALED = 17 -BUF_FMT_8_8_UINT = 18 -BUF_FMT_8_8_SINT = 19 -BUF_FMT_32_UINT = 20 -BUF_FMT_32_SINT = 21 -BUF_FMT_32_FLOAT = 22 -BUF_FMT_16_16_UNORM = 23 -BUF_FMT_16_16_SNORM = 24 -BUF_FMT_16_16_USCALED = 25 -BUF_FMT_16_16_SSCALED = 26 -BUF_FMT_16_16_UINT = 27 -BUF_FMT_16_16_SINT = 28 -BUF_FMT_16_16_FLOAT = 29 -BUF_FMT_10_11_11_UNORM = 30 -BUF_FMT_10_11_11_SNORM = 31 -BUF_FMT_10_11_11_USCALED = 32 -BUF_FMT_10_11_11_SSCALED = 33 -BUF_FMT_10_11_11_UINT = 34 -BUF_FMT_10_11_11_SINT = 35 -BUF_FMT_10_11_11_FLOAT = 36 -BUF_FMT_11_11_10_UNORM = 37 -BUF_FMT_11_11_10_SNORM = 38 -BUF_FMT_11_11_10_USCALED = 39 -BUF_FMT_11_11_10_SSCALED = 40 -BUF_FMT_11_11_10_UINT = 41 -BUF_FMT_11_11_10_SINT = 42 -BUF_FMT_11_11_10_FLOAT = 43 -BUF_FMT_10_10_10_2_UNORM = 44 -BUF_FMT_10_10_10_2_SNORM = 45 -BUF_FMT_10_10_10_2_USCALED = 46 -BUF_FMT_10_10_10_2_SSCALED = 47 -BUF_FMT_10_10_10_2_UINT = 48 -BUF_FMT_10_10_10_2_SINT = 49 -BUF_FMT_2_10_10_10_UNORM = 50 -BUF_FMT_2_10_10_10_SNORM = 51 -BUF_FMT_2_10_10_10_USCALED = 52 -BUF_FMT_2_10_10_10_SSCALED = 53 -BUF_FMT_2_10_10_10_UINT = 54 -BUF_FMT_2_10_10_10_SINT = 55 -BUF_FMT_8_8_8_8_UNORM = 56 -BUF_FMT_8_8_8_8_SNORM = 57 -BUF_FMT_8_8_8_8_USCALED = 58 -BUF_FMT_8_8_8_8_SSCALED = 59 -BUF_FMT_8_8_8_8_UINT = 60 -BUF_FMT_8_8_8_8_SINT = 61 -BUF_FMT_32_32_UINT = 62 -BUF_FMT_32_32_SINT = 63 -BUF_FMT_32_32_FLOAT = 64 -BUF_FMT_16_16_16_16_UNORM = 65 -BUF_FMT_16_16_16_16_SNORM = 66 -BUF_FMT_16_16_16_16_USCALED = 67 -BUF_FMT_16_16_16_16_SSCALED = 68 -BUF_FMT_16_16_16_16_UINT = 69 -BUF_FMT_16_16_16_16_SINT = 70 -BUF_FMT_16_16_16_16_FLOAT = 71 -BUF_FMT_32_32_32_UINT = 72 -BUF_FMT_32_32_32_SINT = 73 -BUF_FMT_32_32_32_FLOAT = 74 -BUF_FMT_32_32_32_32_UINT = 75 -BUF_FMT_32_32_32_32_SINT = 76 -BUF_FMT_32_32_32_32_FLOAT = 77 -BUF_FMT_RESERVED_78 = 78 -BUF_FMT_RESERVED_79 = 79 -BUF_FMT_RESERVED_80 = 80 -BUF_FMT_RESERVED_81 = 81 -BUF_FMT_RESERVED_82 = 82 -BUF_FMT_RESERVED_83 = 83 -BUF_FMT_RESERVED_84 = 84 -BUF_FMT_RESERVED_85 = 85 -BUF_FMT_RESERVED_86 = 86 -BUF_FMT_RESERVED_87 = 87 -BUF_FMT_RESERVED_88 = 88 -BUF_FMT_RESERVED_89 = 89 -BUF_FMT_RESERVED_90 = 90 -BUF_FMT_RESERVED_91 = 91 -BUF_FMT_RESERVED_92 = 92 -BUF_FMT_RESERVED_93 = 93 -BUF_FMT_RESERVED_94 = 94 -BUF_FMT_RESERVED_95 = 95 -BUF_FMT_RESERVED_96 = 96 -BUF_FMT_RESERVED_97 = 97 -BUF_FMT_RESERVED_98 = 98 -BUF_FMT_RESERVED_99 = 99 -BUF_FMT_RESERVED_100 = 100 -BUF_FMT_RESERVED_101 = 101 -BUF_FMT_RESERVED_102 = 102 -BUF_FMT_RESERVED_103 = 103 -BUF_FMT_RESERVED_104 = 104 -BUF_FMT_RESERVED_105 = 105 -BUF_FMT_RESERVED_106 = 106 -BUF_FMT_RESERVED_107 = 107 -BUF_FMT_RESERVED_108 = 108 -BUF_FMT_RESERVED_109 = 109 -BUF_FMT_RESERVED_110 = 110 -BUF_FMT_RESERVED_111 = 111 -BUF_FMT_RESERVED_112 = 112 -BUF_FMT_RESERVED_113 = 113 -BUF_FMT_RESERVED_114 = 114 -BUF_FMT_RESERVED_115 = 115 -BUF_FMT_RESERVED_116 = 116 -BUF_FMT_RESERVED_117 = 117 -BUF_FMT_RESERVED_118 = 118 -BUF_FMT_RESERVED_119 = 119 -BUF_FMT_RESERVED_120 = 120 -BUF_FMT_RESERVED_121 = 121 -BUF_FMT_RESERVED_122 = 122 -BUF_FMT_RESERVED_123 = 123 -BUF_FMT_RESERVED_124 = 124 -BUF_FMT_RESERVED_125 = 125 -BUF_FMT_RESERVED_126 = 126 -BUF_FMT_RESERVED_127 = 127 -BUF_FMT = ctypes.c_uint32 # enum - -# values for enumeration 'IMG_FMT' -IMG_FMT__enumvalues = { - 0: 'IMG_FMT_INVALID', - 1: 'IMG_FMT_8_UNORM', - 2: 'IMG_FMT_8_SNORM', - 3: 'IMG_FMT_8_USCALED', - 4: 'IMG_FMT_8_SSCALED', - 5: 'IMG_FMT_8_UINT', - 6: 'IMG_FMT_8_SINT', - 7: 'IMG_FMT_16_UNORM', - 8: 'IMG_FMT_16_SNORM', - 9: 'IMG_FMT_16_USCALED', - 10: 'IMG_FMT_16_SSCALED', - 11: 'IMG_FMT_16_UINT', - 12: 'IMG_FMT_16_SINT', - 13: 'IMG_FMT_16_FLOAT', - 14: 'IMG_FMT_8_8_UNORM', - 15: 'IMG_FMT_8_8_SNORM', - 16: 'IMG_FMT_8_8_USCALED', - 17: 'IMG_FMT_8_8_SSCALED', - 18: 'IMG_FMT_8_8_UINT', - 19: 'IMG_FMT_8_8_SINT', - 20: 'IMG_FMT_32_UINT', - 21: 'IMG_FMT_32_SINT', - 22: 'IMG_FMT_32_FLOAT', - 23: 'IMG_FMT_16_16_UNORM', - 24: 'IMG_FMT_16_16_SNORM', - 25: 'IMG_FMT_16_16_USCALED', - 26: 'IMG_FMT_16_16_SSCALED', - 27: 'IMG_FMT_16_16_UINT', - 28: 'IMG_FMT_16_16_SINT', - 29: 'IMG_FMT_16_16_FLOAT', - 30: 'IMG_FMT_10_11_11_UNORM', - 31: 'IMG_FMT_10_11_11_SNORM', - 32: 'IMG_FMT_10_11_11_USCALED', - 33: 'IMG_FMT_10_11_11_SSCALED', - 34: 'IMG_FMT_10_11_11_UINT', - 35: 'IMG_FMT_10_11_11_SINT', - 36: 'IMG_FMT_10_11_11_FLOAT', - 37: 'IMG_FMT_11_11_10_UNORM', - 38: 'IMG_FMT_11_11_10_SNORM', - 39: 'IMG_FMT_11_11_10_USCALED', - 40: 'IMG_FMT_11_11_10_SSCALED', - 41: 'IMG_FMT_11_11_10_UINT', - 42: 'IMG_FMT_11_11_10_SINT', - 43: 'IMG_FMT_11_11_10_FLOAT', - 44: 'IMG_FMT_10_10_10_2_UNORM', - 45: 'IMG_FMT_10_10_10_2_SNORM', - 46: 'IMG_FMT_10_10_10_2_USCALED', - 47: 'IMG_FMT_10_10_10_2_SSCALED', - 48: 'IMG_FMT_10_10_10_2_UINT', - 49: 'IMG_FMT_10_10_10_2_SINT', - 50: 'IMG_FMT_2_10_10_10_UNORM', - 51: 'IMG_FMT_2_10_10_10_SNORM', - 52: 'IMG_FMT_2_10_10_10_USCALED', - 53: 'IMG_FMT_2_10_10_10_SSCALED', - 54: 'IMG_FMT_2_10_10_10_UINT', - 55: 'IMG_FMT_2_10_10_10_SINT', - 56: 'IMG_FMT_8_8_8_8_UNORM', - 57: 'IMG_FMT_8_8_8_8_SNORM', - 58: 'IMG_FMT_8_8_8_8_USCALED', - 59: 'IMG_FMT_8_8_8_8_SSCALED', - 60: 'IMG_FMT_8_8_8_8_UINT', - 61: 'IMG_FMT_8_8_8_8_SINT', - 62: 'IMG_FMT_32_32_UINT', - 63: 'IMG_FMT_32_32_SINT', - 64: 'IMG_FMT_32_32_FLOAT', - 65: 'IMG_FMT_16_16_16_16_UNORM', - 66: 'IMG_FMT_16_16_16_16_SNORM', - 67: 'IMG_FMT_16_16_16_16_USCALED', - 68: 'IMG_FMT_16_16_16_16_SSCALED', - 69: 'IMG_FMT_16_16_16_16_UINT', - 70: 'IMG_FMT_16_16_16_16_SINT', - 71: 'IMG_FMT_16_16_16_16_FLOAT', - 72: 'IMG_FMT_32_32_32_UINT', - 73: 'IMG_FMT_32_32_32_SINT', - 74: 'IMG_FMT_32_32_32_FLOAT', - 75: 'IMG_FMT_32_32_32_32_UINT', - 76: 'IMG_FMT_32_32_32_32_SINT', - 77: 'IMG_FMT_32_32_32_32_FLOAT', - 78: 'IMG_FMT_RESERVED_78', - 79: 'IMG_FMT_RESERVED_79', - 80: 'IMG_FMT_RESERVED_80', - 81: 'IMG_FMT_RESERVED_81', - 82: 'IMG_FMT_RESERVED_82', - 83: 'IMG_FMT_RESERVED_83', - 84: 'IMG_FMT_RESERVED_84', - 85: 'IMG_FMT_RESERVED_85', - 86: 'IMG_FMT_RESERVED_86', - 87: 'IMG_FMT_RESERVED_87', - 88: 'IMG_FMT_RESERVED_88', - 89: 'IMG_FMT_RESERVED_89', - 90: 'IMG_FMT_RESERVED_90', - 91: 'IMG_FMT_RESERVED_91', - 92: 'IMG_FMT_RESERVED_92', - 93: 'IMG_FMT_RESERVED_93', - 94: 'IMG_FMT_RESERVED_94', - 95: 'IMG_FMT_RESERVED_95', - 96: 'IMG_FMT_RESERVED_96', - 97: 'IMG_FMT_RESERVED_97', - 98: 'IMG_FMT_RESERVED_98', - 99: 'IMG_FMT_RESERVED_99', - 100: 'IMG_FMT_RESERVED_100', - 101: 'IMG_FMT_RESERVED_101', - 102: 'IMG_FMT_RESERVED_102', - 103: 'IMG_FMT_RESERVED_103', - 104: 'IMG_FMT_RESERVED_104', - 105: 'IMG_FMT_RESERVED_105', - 106: 'IMG_FMT_RESERVED_106', - 107: 'IMG_FMT_RESERVED_107', - 108: 'IMG_FMT_RESERVED_108', - 109: 'IMG_FMT_RESERVED_109', - 110: 'IMG_FMT_RESERVED_110', - 111: 'IMG_FMT_RESERVED_111', - 112: 'IMG_FMT_RESERVED_112', - 113: 'IMG_FMT_RESERVED_113', - 114: 'IMG_FMT_RESERVED_114', - 115: 'IMG_FMT_RESERVED_115', - 116: 'IMG_FMT_RESERVED_116', - 117: 'IMG_FMT_RESERVED_117', - 118: 'IMG_FMT_RESERVED_118', - 119: 'IMG_FMT_RESERVED_119', - 120: 'IMG_FMT_RESERVED_120', - 121: 'IMG_FMT_RESERVED_121', - 122: 'IMG_FMT_RESERVED_122', - 123: 'IMG_FMT_RESERVED_123', - 124: 'IMG_FMT_RESERVED_124', - 125: 'IMG_FMT_RESERVED_125', - 126: 'IMG_FMT_RESERVED_126', - 127: 'IMG_FMT_RESERVED_127', - 128: 'IMG_FMT_8_SRGB', - 129: 'IMG_FMT_8_8_SRGB', - 130: 'IMG_FMT_8_8_8_8_SRGB', - 131: 'IMG_FMT_6E4_FLOAT', - 132: 'IMG_FMT_5_9_9_9_FLOAT', - 133: 'IMG_FMT_5_6_5_UNORM', - 134: 'IMG_FMT_1_5_5_5_UNORM', - 135: 'IMG_FMT_5_5_5_1_UNORM', - 136: 'IMG_FMT_4_4_4_4_UNORM', - 137: 'IMG_FMT_4_4_UNORM', - 138: 'IMG_FMT_1_UNORM', - 139: 'IMG_FMT_1_REVERSED_UNORM', - 140: 'IMG_FMT_32_FLOAT_CLAMP', - 141: 'IMG_FMT_8_24_UNORM', - 142: 'IMG_FMT_8_24_UINT', - 143: 'IMG_FMT_24_8_UNORM', - 144: 'IMG_FMT_24_8_UINT', - 145: 'IMG_FMT_X24_8_32_UINT', - 146: 'IMG_FMT_X24_8_32_FLOAT', - 147: 'IMG_FMT_GB_GR_UNORM', - 148: 'IMG_FMT_GB_GR_SNORM', - 149: 'IMG_FMT_GB_GR_UINT', - 150: 'IMG_FMT_GB_GR_SRGB', - 151: 'IMG_FMT_BG_RG_UNORM', - 152: 'IMG_FMT_BG_RG_SNORM', - 153: 'IMG_FMT_BG_RG_UINT', - 154: 'IMG_FMT_BG_RG_SRGB', - 155: 'IMG_FMT_RESERVED_155', - 156: 'IMG_FMT_FMASK8_S2_F1', - 157: 'IMG_FMT_FMASK8_S4_F1', - 158: 'IMG_FMT_FMASK8_S8_F1', - 159: 'IMG_FMT_FMASK8_S2_F2', - 160: 'IMG_FMT_FMASK8_S4_F2', - 161: 'IMG_FMT_FMASK8_S4_F4', - 162: 'IMG_FMT_FMASK16_S16_F1', - 163: 'IMG_FMT_FMASK16_S8_F2', - 164: 'IMG_FMT_FMASK32_S16_F2', - 165: 'IMG_FMT_FMASK32_S8_F4', - 166: 'IMG_FMT_FMASK32_S8_F8', - 167: 'IMG_FMT_FMASK64_S16_F4', - 168: 'IMG_FMT_FMASK64_S16_F8', - 169: 'IMG_FMT_BC1_UNORM', - 170: 'IMG_FMT_BC1_SRGB', - 171: 'IMG_FMT_BC2_UNORM', - 172: 'IMG_FMT_BC2_SRGB', - 173: 'IMG_FMT_BC3_UNORM', - 174: 'IMG_FMT_BC3_SRGB', - 175: 'IMG_FMT_BC4_UNORM', - 176: 'IMG_FMT_BC4_SNORM', - 177: 'IMG_FMT_BC5_UNORM', - 178: 'IMG_FMT_BC5_SNORM', - 179: 'IMG_FMT_BC6_UFLOAT', - 180: 'IMG_FMT_BC6_SFLOAT', - 181: 'IMG_FMT_BC7_UNORM', - 182: 'IMG_FMT_BC7_SRGB', - 265: 'IMG_FMT_MM_8_UNORM', - 266: 'IMG_FMT_MM_8_UINT', - 267: 'IMG_FMT_MM_8_8_UNORM', - 268: 'IMG_FMT_MM_8_8_UINT', - 269: 'IMG_FMT_MM_8_8_8_8_UNORM', - 270: 'IMG_FMT_MM_8_8_8_8_UINT', - 271: 'IMG_FMT_MM_VYUY8_UNORM', - 272: 'IMG_FMT_MM_VYUY8_UINT', - 273: 'IMG_FMT_MM_10_11_11_UNORM', - 274: 'IMG_FMT_MM_10_11_11_UINT', - 275: 'IMG_FMT_MM_2_10_10_10_UNORM', - 276: 'IMG_FMT_MM_2_10_10_10_UINT', - 277: 'IMG_FMT_MM_16_16_16_16_UNORM', - 278: 'IMG_FMT_MM_16_16_16_16_UINT', - 279: 'IMG_FMT_MM_10_IN_16_UNORM', - 280: 'IMG_FMT_MM_10_IN_16_UINT', - 281: 'IMG_FMT_MM_10_IN_16_16_UNORM', - 282: 'IMG_FMT_MM_10_IN_16_16_UINT', - 283: 'IMG_FMT_MM_10_IN_16_16_16_16_UNORM', - 284: 'IMG_FMT_MM_10_IN_16_16_16_16_UINT', - 285: 'IMG_FMT_RESERVED_285', - 286: 'IMG_FMT_RESERVED_286', - 287: 'IMG_FMT_RESERVED_287', - 288: 'IMG_FMT_RESERVED_288', - 289: 'IMG_FMT_RESERVED_289', - 290: 'IMG_FMT_RESERVED_290', - 291: 'IMG_FMT_RESERVED_291', - 292: 'IMG_FMT_RESERVED_292', - 293: 'IMG_FMT_RESERVED_293', - 294: 'IMG_FMT_RESERVED_294', - 295: 'IMG_FMT_RESERVED_295', - 296: 'IMG_FMT_RESERVED_296', - 297: 'IMG_FMT_RESERVED_297', - 298: 'IMG_FMT_RESERVED_298', - 299: 'IMG_FMT_RESERVED_299', - 300: 'IMG_FMT_RESERVED_300', - 301: 'IMG_FMT_RESERVED_301', - 302: 'IMG_FMT_RESERVED_302', - 303: 'IMG_FMT_RESERVED_303', - 304: 'IMG_FMT_RESERVED_304', - 305: 'IMG_FMT_RESERVED_305', - 306: 'IMG_FMT_RESERVED_306', - 307: 'IMG_FMT_RESERVED_307', - 308: 'IMG_FMT_RESERVED_308', - 309: 'IMG_FMT_RESERVED_309', - 310: 'IMG_FMT_RESERVED_310', - 311: 'IMG_FMT_RESERVED_311', - 312: 'IMG_FMT_RESERVED_312', - 313: 'IMG_FMT_RESERVED_313', - 314: 'IMG_FMT_RESERVED_314', - 315: 'IMG_FMT_RESERVED_315', - 316: 'IMG_FMT_RESERVED_316', - 317: 'IMG_FMT_RESERVED_317', - 318: 'IMG_FMT_RESERVED_318', - 319: 'IMG_FMT_RESERVED_319', - 320: 'IMG_FMT_RESERVED_320', - 321: 'IMG_FMT_RESERVED_321', - 322: 'IMG_FMT_RESERVED_322', - 323: 'IMG_FMT_RESERVED_323', - 324: 'IMG_FMT_RESERVED_324', - 325: 'IMG_FMT_RESERVED_325', - 326: 'IMG_FMT_RESERVED_326', - 327: 'IMG_FMT_RESERVED_327', - 328: 'IMG_FMT_RESERVED_328', - 329: 'IMG_FMT_RESERVED_329', - 330: 'IMG_FMT_RESERVED_330', - 331: 'IMG_FMT_RESERVED_331', - 332: 'IMG_FMT_RESERVED_332', - 333: 'IMG_FMT_RESERVED_333', - 334: 'IMG_FMT_RESERVED_334', - 335: 'IMG_FMT_RESERVED_335', - 336: 'IMG_FMT_RESERVED_336', - 337: 'IMG_FMT_RESERVED_337', - 338: 'IMG_FMT_RESERVED_338', - 339: 'IMG_FMT_RESERVED_339', - 340: 'IMG_FMT_RESERVED_340', - 341: 'IMG_FMT_RESERVED_341', - 342: 'IMG_FMT_RESERVED_342', - 343: 'IMG_FMT_RESERVED_343', - 344: 'IMG_FMT_RESERVED_344', - 345: 'IMG_FMT_RESERVED_345', - 346: 'IMG_FMT_RESERVED_346', - 347: 'IMG_FMT_RESERVED_347', - 348: 'IMG_FMT_RESERVED_348', - 349: 'IMG_FMT_RESERVED_349', - 350: 'IMG_FMT_RESERVED_350', - 351: 'IMG_FMT_RESERVED_351', - 352: 'IMG_FMT_RESERVED_352', - 353: 'IMG_FMT_RESERVED_353', - 354: 'IMG_FMT_RESERVED_354', - 355: 'IMG_FMT_RESERVED_355', - 356: 'IMG_FMT_RESERVED_356', - 357: 'IMG_FMT_RESERVED_357', - 358: 'IMG_FMT_RESERVED_358', - 359: 'IMG_FMT_RESERVED_359', - 360: 'IMG_FMT_RESERVED_360', - 361: 'IMG_FMT_RESERVED_361', - 362: 'IMG_FMT_RESERVED_362', - 363: 'IMG_FMT_RESERVED_363', - 364: 'IMG_FMT_RESERVED_364', - 365: 'IMG_FMT_RESERVED_365', - 366: 'IMG_FMT_RESERVED_366', - 367: 'IMG_FMT_RESERVED_367', - 368: 'IMG_FMT_RESERVED_368', - 369: 'IMG_FMT_RESERVED_369', - 370: 'IMG_FMT_RESERVED_370', - 371: 'IMG_FMT_RESERVED_371', - 372: 'IMG_FMT_RESERVED_372', - 373: 'IMG_FMT_RESERVED_373', - 374: 'IMG_FMT_RESERVED_374', - 375: 'IMG_FMT_RESERVED_375', - 376: 'IMG_FMT_RESERVED_376', - 377: 'IMG_FMT_RESERVED_377', - 378: 'IMG_FMT_RESERVED_378', - 379: 'IMG_FMT_RESERVED_379', - 380: 'IMG_FMT_RESERVED_380', - 381: 'IMG_FMT_RESERVED_381', - 382: 'IMG_FMT_RESERVED_382', - 383: 'IMG_FMT_RESERVED_383', - 384: 'IMG_FMT_RESERVED_384', - 385: 'IMG_FMT_RESERVED_385', - 386: 'IMG_FMT_RESERVED_386', - 387: 'IMG_FMT_RESERVED_387', - 388: 'IMG_FMT_RESERVED_388', - 389: 'IMG_FMT_RESERVED_389', - 390: 'IMG_FMT_RESERVED_390', - 391: 'IMG_FMT_RESERVED_391', - 392: 'IMG_FMT_RESERVED_392', - 393: 'IMG_FMT_RESERVED_393', - 394: 'IMG_FMT_RESERVED_394', - 395: 'IMG_FMT_RESERVED_395', - 396: 'IMG_FMT_RESERVED_396', - 397: 'IMG_FMT_RESERVED_397', - 398: 'IMG_FMT_RESERVED_398', - 399: 'IMG_FMT_RESERVED_399', - 400: 'IMG_FMT_RESERVED_400', - 401: 'IMG_FMT_RESERVED_401', - 402: 'IMG_FMT_RESERVED_402', - 403: 'IMG_FMT_RESERVED_403', - 404: 'IMG_FMT_RESERVED_404', - 405: 'IMG_FMT_RESERVED_405', - 406: 'IMG_FMT_RESERVED_406', - 407: 'IMG_FMT_RESERVED_407', - 408: 'IMG_FMT_RESERVED_408', - 409: 'IMG_FMT_RESERVED_409', - 410: 'IMG_FMT_RESERVED_410', - 411: 'IMG_FMT_RESERVED_411', - 412: 'IMG_FMT_RESERVED_412', - 413: 'IMG_FMT_RESERVED_413', - 414: 'IMG_FMT_RESERVED_414', - 415: 'IMG_FMT_RESERVED_415', - 416: 'IMG_FMT_RESERVED_416', - 417: 'IMG_FMT_RESERVED_417', - 418: 'IMG_FMT_RESERVED_418', - 419: 'IMG_FMT_RESERVED_419', - 420: 'IMG_FMT_RESERVED_420', - 421: 'IMG_FMT_RESERVED_421', - 422: 'IMG_FMT_RESERVED_422', - 423: 'IMG_FMT_RESERVED_423', - 424: 'IMG_FMT_RESERVED_424', - 425: 'IMG_FMT_RESERVED_425', - 426: 'IMG_FMT_RESERVED_426', - 427: 'IMG_FMT_RESERVED_427', - 428: 'IMG_FMT_RESERVED_428', - 429: 'IMG_FMT_RESERVED_429', - 430: 'IMG_FMT_RESERVED_430', - 431: 'IMG_FMT_RESERVED_431', - 432: 'IMG_FMT_RESERVED_432', - 433: 'IMG_FMT_RESERVED_433', - 434: 'IMG_FMT_RESERVED_434', - 435: 'IMG_FMT_RESERVED_435', - 436: 'IMG_FMT_RESERVED_436', - 437: 'IMG_FMT_RESERVED_437', - 438: 'IMG_FMT_RESERVED_438', - 439: 'IMG_FMT_RESERVED_439', - 440: 'IMG_FMT_RESERVED_440', - 441: 'IMG_FMT_RESERVED_441', - 442: 'IMG_FMT_RESERVED_442', - 443: 'IMG_FMT_RESERVED_443', - 444: 'IMG_FMT_RESERVED_444', - 445: 'IMG_FMT_RESERVED_445', - 446: 'IMG_FMT_RESERVED_446', - 447: 'IMG_FMT_RESERVED_447', - 448: 'IMG_FMT_RESERVED_448', - 449: 'IMG_FMT_RESERVED_449', - 450: 'IMG_FMT_RESERVED_450', - 451: 'IMG_FMT_RESERVED_451', - 452: 'IMG_FMT_RESERVED_452', - 453: 'IMG_FMT_RESERVED_453', - 454: 'IMG_FMT_RESERVED_454', - 455: 'IMG_FMT_RESERVED_455', - 456: 'IMG_FMT_RESERVED_456', - 457: 'IMG_FMT_RESERVED_457', - 458: 'IMG_FMT_RESERVED_458', - 459: 'IMG_FMT_RESERVED_459', - 460: 'IMG_FMT_RESERVED_460', - 461: 'IMG_FMT_RESERVED_461', - 462: 'IMG_FMT_RESERVED_462', - 463: 'IMG_FMT_RESERVED_463', - 464: 'IMG_FMT_RESERVED_464', - 465: 'IMG_FMT_RESERVED_465', - 466: 'IMG_FMT_RESERVED_466', - 467: 'IMG_FMT_RESERVED_467', - 468: 'IMG_FMT_RESERVED_468', - 469: 'IMG_FMT_RESERVED_469', - 470: 'IMG_FMT_RESERVED_470', - 471: 'IMG_FMT_RESERVED_471', - 472: 'IMG_FMT_RESERVED_472', - 473: 'IMG_FMT_RESERVED_473', - 474: 'IMG_FMT_RESERVED_474', - 475: 'IMG_FMT_RESERVED_475', - 476: 'IMG_FMT_RESERVED_476', - 477: 'IMG_FMT_RESERVED_477', - 478: 'IMG_FMT_RESERVED_478', - 479: 'IMG_FMT_RESERVED_479', - 480: 'IMG_FMT_RESERVED_480', - 481: 'IMG_FMT_RESERVED_481', - 482: 'IMG_FMT_RESERVED_482', - 483: 'IMG_FMT_RESERVED_483', - 484: 'IMG_FMT_RESERVED_484', - 485: 'IMG_FMT_RESERVED_485', - 486: 'IMG_FMT_RESERVED_486', - 487: 'IMG_FMT_RESERVED_487', - 488: 'IMG_FMT_RESERVED_488', - 489: 'IMG_FMT_RESERVED_489', - 490: 'IMG_FMT_RESERVED_490', - 491: 'IMG_FMT_RESERVED_491', - 492: 'IMG_FMT_RESERVED_492', - 493: 'IMG_FMT_RESERVED_493', - 494: 'IMG_FMT_RESERVED_494', - 495: 'IMG_FMT_RESERVED_495', - 496: 'IMG_FMT_RESERVED_496', - 497: 'IMG_FMT_RESERVED_497', - 498: 'IMG_FMT_RESERVED_498', - 499: 'IMG_FMT_RESERVED_499', - 500: 'IMG_FMT_RESERVED_500', - 501: 'IMG_FMT_RESERVED_501', - 502: 'IMG_FMT_RESERVED_502', - 503: 'IMG_FMT_RESERVED_503', - 504: 'IMG_FMT_RESERVED_504', - 505: 'IMG_FMT_RESERVED_505', - 506: 'IMG_FMT_RESERVED_506', - 507: 'IMG_FMT_RESERVED_507', - 508: 'IMG_FMT_RESERVED_508', - 509: 'IMG_FMT_RESERVED_509', - 510: 'IMG_FMT_RESERVED_510', - 511: 'IMG_FMT_RESERVED_511', -} -IMG_FMT_INVALID = 0 -IMG_FMT_8_UNORM = 1 -IMG_FMT_8_SNORM = 2 -IMG_FMT_8_USCALED = 3 -IMG_FMT_8_SSCALED = 4 -IMG_FMT_8_UINT = 5 -IMG_FMT_8_SINT = 6 -IMG_FMT_16_UNORM = 7 -IMG_FMT_16_SNORM = 8 -IMG_FMT_16_USCALED = 9 -IMG_FMT_16_SSCALED = 10 -IMG_FMT_16_UINT = 11 -IMG_FMT_16_SINT = 12 -IMG_FMT_16_FLOAT = 13 -IMG_FMT_8_8_UNORM = 14 -IMG_FMT_8_8_SNORM = 15 -IMG_FMT_8_8_USCALED = 16 -IMG_FMT_8_8_SSCALED = 17 -IMG_FMT_8_8_UINT = 18 -IMG_FMT_8_8_SINT = 19 -IMG_FMT_32_UINT = 20 -IMG_FMT_32_SINT = 21 -IMG_FMT_32_FLOAT = 22 -IMG_FMT_16_16_UNORM = 23 -IMG_FMT_16_16_SNORM = 24 -IMG_FMT_16_16_USCALED = 25 -IMG_FMT_16_16_SSCALED = 26 -IMG_FMT_16_16_UINT = 27 -IMG_FMT_16_16_SINT = 28 -IMG_FMT_16_16_FLOAT = 29 -IMG_FMT_10_11_11_UNORM = 30 -IMG_FMT_10_11_11_SNORM = 31 -IMG_FMT_10_11_11_USCALED = 32 -IMG_FMT_10_11_11_SSCALED = 33 -IMG_FMT_10_11_11_UINT = 34 -IMG_FMT_10_11_11_SINT = 35 -IMG_FMT_10_11_11_FLOAT = 36 -IMG_FMT_11_11_10_UNORM = 37 -IMG_FMT_11_11_10_SNORM = 38 -IMG_FMT_11_11_10_USCALED = 39 -IMG_FMT_11_11_10_SSCALED = 40 -IMG_FMT_11_11_10_UINT = 41 -IMG_FMT_11_11_10_SINT = 42 -IMG_FMT_11_11_10_FLOAT = 43 -IMG_FMT_10_10_10_2_UNORM = 44 -IMG_FMT_10_10_10_2_SNORM = 45 -IMG_FMT_10_10_10_2_USCALED = 46 -IMG_FMT_10_10_10_2_SSCALED = 47 -IMG_FMT_10_10_10_2_UINT = 48 -IMG_FMT_10_10_10_2_SINT = 49 -IMG_FMT_2_10_10_10_UNORM = 50 -IMG_FMT_2_10_10_10_SNORM = 51 -IMG_FMT_2_10_10_10_USCALED = 52 -IMG_FMT_2_10_10_10_SSCALED = 53 -IMG_FMT_2_10_10_10_UINT = 54 -IMG_FMT_2_10_10_10_SINT = 55 -IMG_FMT_8_8_8_8_UNORM = 56 -IMG_FMT_8_8_8_8_SNORM = 57 -IMG_FMT_8_8_8_8_USCALED = 58 -IMG_FMT_8_8_8_8_SSCALED = 59 -IMG_FMT_8_8_8_8_UINT = 60 -IMG_FMT_8_8_8_8_SINT = 61 -IMG_FMT_32_32_UINT = 62 -IMG_FMT_32_32_SINT = 63 -IMG_FMT_32_32_FLOAT = 64 -IMG_FMT_16_16_16_16_UNORM = 65 -IMG_FMT_16_16_16_16_SNORM = 66 -IMG_FMT_16_16_16_16_USCALED = 67 -IMG_FMT_16_16_16_16_SSCALED = 68 -IMG_FMT_16_16_16_16_UINT = 69 -IMG_FMT_16_16_16_16_SINT = 70 -IMG_FMT_16_16_16_16_FLOAT = 71 -IMG_FMT_32_32_32_UINT = 72 -IMG_FMT_32_32_32_SINT = 73 -IMG_FMT_32_32_32_FLOAT = 74 -IMG_FMT_32_32_32_32_UINT = 75 -IMG_FMT_32_32_32_32_SINT = 76 -IMG_FMT_32_32_32_32_FLOAT = 77 -IMG_FMT_RESERVED_78 = 78 -IMG_FMT_RESERVED_79 = 79 -IMG_FMT_RESERVED_80 = 80 -IMG_FMT_RESERVED_81 = 81 -IMG_FMT_RESERVED_82 = 82 -IMG_FMT_RESERVED_83 = 83 -IMG_FMT_RESERVED_84 = 84 -IMG_FMT_RESERVED_85 = 85 -IMG_FMT_RESERVED_86 = 86 -IMG_FMT_RESERVED_87 = 87 -IMG_FMT_RESERVED_88 = 88 -IMG_FMT_RESERVED_89 = 89 -IMG_FMT_RESERVED_90 = 90 -IMG_FMT_RESERVED_91 = 91 -IMG_FMT_RESERVED_92 = 92 -IMG_FMT_RESERVED_93 = 93 -IMG_FMT_RESERVED_94 = 94 -IMG_FMT_RESERVED_95 = 95 -IMG_FMT_RESERVED_96 = 96 -IMG_FMT_RESERVED_97 = 97 -IMG_FMT_RESERVED_98 = 98 -IMG_FMT_RESERVED_99 = 99 -IMG_FMT_RESERVED_100 = 100 -IMG_FMT_RESERVED_101 = 101 -IMG_FMT_RESERVED_102 = 102 -IMG_FMT_RESERVED_103 = 103 -IMG_FMT_RESERVED_104 = 104 -IMG_FMT_RESERVED_105 = 105 -IMG_FMT_RESERVED_106 = 106 -IMG_FMT_RESERVED_107 = 107 -IMG_FMT_RESERVED_108 = 108 -IMG_FMT_RESERVED_109 = 109 -IMG_FMT_RESERVED_110 = 110 -IMG_FMT_RESERVED_111 = 111 -IMG_FMT_RESERVED_112 = 112 -IMG_FMT_RESERVED_113 = 113 -IMG_FMT_RESERVED_114 = 114 -IMG_FMT_RESERVED_115 = 115 -IMG_FMT_RESERVED_116 = 116 -IMG_FMT_RESERVED_117 = 117 -IMG_FMT_RESERVED_118 = 118 -IMG_FMT_RESERVED_119 = 119 -IMG_FMT_RESERVED_120 = 120 -IMG_FMT_RESERVED_121 = 121 -IMG_FMT_RESERVED_122 = 122 -IMG_FMT_RESERVED_123 = 123 -IMG_FMT_RESERVED_124 = 124 -IMG_FMT_RESERVED_125 = 125 -IMG_FMT_RESERVED_126 = 126 -IMG_FMT_RESERVED_127 = 127 -IMG_FMT_8_SRGB = 128 -IMG_FMT_8_8_SRGB = 129 -IMG_FMT_8_8_8_8_SRGB = 130 -IMG_FMT_6E4_FLOAT = 131 -IMG_FMT_5_9_9_9_FLOAT = 132 -IMG_FMT_5_6_5_UNORM = 133 -IMG_FMT_1_5_5_5_UNORM = 134 -IMG_FMT_5_5_5_1_UNORM = 135 -IMG_FMT_4_4_4_4_UNORM = 136 -IMG_FMT_4_4_UNORM = 137 -IMG_FMT_1_UNORM = 138 -IMG_FMT_1_REVERSED_UNORM = 139 -IMG_FMT_32_FLOAT_CLAMP = 140 -IMG_FMT_8_24_UNORM = 141 -IMG_FMT_8_24_UINT = 142 -IMG_FMT_24_8_UNORM = 143 -IMG_FMT_24_8_UINT = 144 -IMG_FMT_X24_8_32_UINT = 145 -IMG_FMT_X24_8_32_FLOAT = 146 -IMG_FMT_GB_GR_UNORM = 147 -IMG_FMT_GB_GR_SNORM = 148 -IMG_FMT_GB_GR_UINT = 149 -IMG_FMT_GB_GR_SRGB = 150 -IMG_FMT_BG_RG_UNORM = 151 -IMG_FMT_BG_RG_SNORM = 152 -IMG_FMT_BG_RG_UINT = 153 -IMG_FMT_BG_RG_SRGB = 154 -IMG_FMT_RESERVED_155 = 155 -IMG_FMT_FMASK8_S2_F1 = 156 -IMG_FMT_FMASK8_S4_F1 = 157 -IMG_FMT_FMASK8_S8_F1 = 158 -IMG_FMT_FMASK8_S2_F2 = 159 -IMG_FMT_FMASK8_S4_F2 = 160 -IMG_FMT_FMASK8_S4_F4 = 161 -IMG_FMT_FMASK16_S16_F1 = 162 -IMG_FMT_FMASK16_S8_F2 = 163 -IMG_FMT_FMASK32_S16_F2 = 164 -IMG_FMT_FMASK32_S8_F4 = 165 -IMG_FMT_FMASK32_S8_F8 = 166 -IMG_FMT_FMASK64_S16_F4 = 167 -IMG_FMT_FMASK64_S16_F8 = 168 -IMG_FMT_BC1_UNORM = 169 -IMG_FMT_BC1_SRGB = 170 -IMG_FMT_BC2_UNORM = 171 -IMG_FMT_BC2_SRGB = 172 -IMG_FMT_BC3_UNORM = 173 -IMG_FMT_BC3_SRGB = 174 -IMG_FMT_BC4_UNORM = 175 -IMG_FMT_BC4_SNORM = 176 -IMG_FMT_BC5_UNORM = 177 -IMG_FMT_BC5_SNORM = 178 -IMG_FMT_BC6_UFLOAT = 179 -IMG_FMT_BC6_SFLOAT = 180 -IMG_FMT_BC7_UNORM = 181 -IMG_FMT_BC7_SRGB = 182 -IMG_FMT_MM_8_UNORM = 265 -IMG_FMT_MM_8_UINT = 266 -IMG_FMT_MM_8_8_UNORM = 267 -IMG_FMT_MM_8_8_UINT = 268 -IMG_FMT_MM_8_8_8_8_UNORM = 269 -IMG_FMT_MM_8_8_8_8_UINT = 270 -IMG_FMT_MM_VYUY8_UNORM = 271 -IMG_FMT_MM_VYUY8_UINT = 272 -IMG_FMT_MM_10_11_11_UNORM = 273 -IMG_FMT_MM_10_11_11_UINT = 274 -IMG_FMT_MM_2_10_10_10_UNORM = 275 -IMG_FMT_MM_2_10_10_10_UINT = 276 -IMG_FMT_MM_16_16_16_16_UNORM = 277 -IMG_FMT_MM_16_16_16_16_UINT = 278 -IMG_FMT_MM_10_IN_16_UNORM = 279 -IMG_FMT_MM_10_IN_16_UINT = 280 -IMG_FMT_MM_10_IN_16_16_UNORM = 281 -IMG_FMT_MM_10_IN_16_16_UINT = 282 -IMG_FMT_MM_10_IN_16_16_16_16_UNORM = 283 -IMG_FMT_MM_10_IN_16_16_16_16_UINT = 284 -IMG_FMT_RESERVED_285 = 285 -IMG_FMT_RESERVED_286 = 286 -IMG_FMT_RESERVED_287 = 287 -IMG_FMT_RESERVED_288 = 288 -IMG_FMT_RESERVED_289 = 289 -IMG_FMT_RESERVED_290 = 290 -IMG_FMT_RESERVED_291 = 291 -IMG_FMT_RESERVED_292 = 292 -IMG_FMT_RESERVED_293 = 293 -IMG_FMT_RESERVED_294 = 294 -IMG_FMT_RESERVED_295 = 295 -IMG_FMT_RESERVED_296 = 296 -IMG_FMT_RESERVED_297 = 297 -IMG_FMT_RESERVED_298 = 298 -IMG_FMT_RESERVED_299 = 299 -IMG_FMT_RESERVED_300 = 300 -IMG_FMT_RESERVED_301 = 301 -IMG_FMT_RESERVED_302 = 302 -IMG_FMT_RESERVED_303 = 303 -IMG_FMT_RESERVED_304 = 304 -IMG_FMT_RESERVED_305 = 305 -IMG_FMT_RESERVED_306 = 306 -IMG_FMT_RESERVED_307 = 307 -IMG_FMT_RESERVED_308 = 308 -IMG_FMT_RESERVED_309 = 309 -IMG_FMT_RESERVED_310 = 310 -IMG_FMT_RESERVED_311 = 311 -IMG_FMT_RESERVED_312 = 312 -IMG_FMT_RESERVED_313 = 313 -IMG_FMT_RESERVED_314 = 314 -IMG_FMT_RESERVED_315 = 315 -IMG_FMT_RESERVED_316 = 316 -IMG_FMT_RESERVED_317 = 317 -IMG_FMT_RESERVED_318 = 318 -IMG_FMT_RESERVED_319 = 319 -IMG_FMT_RESERVED_320 = 320 -IMG_FMT_RESERVED_321 = 321 -IMG_FMT_RESERVED_322 = 322 -IMG_FMT_RESERVED_323 = 323 -IMG_FMT_RESERVED_324 = 324 -IMG_FMT_RESERVED_325 = 325 -IMG_FMT_RESERVED_326 = 326 -IMG_FMT_RESERVED_327 = 327 -IMG_FMT_RESERVED_328 = 328 -IMG_FMT_RESERVED_329 = 329 -IMG_FMT_RESERVED_330 = 330 -IMG_FMT_RESERVED_331 = 331 -IMG_FMT_RESERVED_332 = 332 -IMG_FMT_RESERVED_333 = 333 -IMG_FMT_RESERVED_334 = 334 -IMG_FMT_RESERVED_335 = 335 -IMG_FMT_RESERVED_336 = 336 -IMG_FMT_RESERVED_337 = 337 -IMG_FMT_RESERVED_338 = 338 -IMG_FMT_RESERVED_339 = 339 -IMG_FMT_RESERVED_340 = 340 -IMG_FMT_RESERVED_341 = 341 -IMG_FMT_RESERVED_342 = 342 -IMG_FMT_RESERVED_343 = 343 -IMG_FMT_RESERVED_344 = 344 -IMG_FMT_RESERVED_345 = 345 -IMG_FMT_RESERVED_346 = 346 -IMG_FMT_RESERVED_347 = 347 -IMG_FMT_RESERVED_348 = 348 -IMG_FMT_RESERVED_349 = 349 -IMG_FMT_RESERVED_350 = 350 -IMG_FMT_RESERVED_351 = 351 -IMG_FMT_RESERVED_352 = 352 -IMG_FMT_RESERVED_353 = 353 -IMG_FMT_RESERVED_354 = 354 -IMG_FMT_RESERVED_355 = 355 -IMG_FMT_RESERVED_356 = 356 -IMG_FMT_RESERVED_357 = 357 -IMG_FMT_RESERVED_358 = 358 -IMG_FMT_RESERVED_359 = 359 -IMG_FMT_RESERVED_360 = 360 -IMG_FMT_RESERVED_361 = 361 -IMG_FMT_RESERVED_362 = 362 -IMG_FMT_RESERVED_363 = 363 -IMG_FMT_RESERVED_364 = 364 -IMG_FMT_RESERVED_365 = 365 -IMG_FMT_RESERVED_366 = 366 -IMG_FMT_RESERVED_367 = 367 -IMG_FMT_RESERVED_368 = 368 -IMG_FMT_RESERVED_369 = 369 -IMG_FMT_RESERVED_370 = 370 -IMG_FMT_RESERVED_371 = 371 -IMG_FMT_RESERVED_372 = 372 -IMG_FMT_RESERVED_373 = 373 -IMG_FMT_RESERVED_374 = 374 -IMG_FMT_RESERVED_375 = 375 -IMG_FMT_RESERVED_376 = 376 -IMG_FMT_RESERVED_377 = 377 -IMG_FMT_RESERVED_378 = 378 -IMG_FMT_RESERVED_379 = 379 -IMG_FMT_RESERVED_380 = 380 -IMG_FMT_RESERVED_381 = 381 -IMG_FMT_RESERVED_382 = 382 -IMG_FMT_RESERVED_383 = 383 -IMG_FMT_RESERVED_384 = 384 -IMG_FMT_RESERVED_385 = 385 -IMG_FMT_RESERVED_386 = 386 -IMG_FMT_RESERVED_387 = 387 -IMG_FMT_RESERVED_388 = 388 -IMG_FMT_RESERVED_389 = 389 -IMG_FMT_RESERVED_390 = 390 -IMG_FMT_RESERVED_391 = 391 -IMG_FMT_RESERVED_392 = 392 -IMG_FMT_RESERVED_393 = 393 -IMG_FMT_RESERVED_394 = 394 -IMG_FMT_RESERVED_395 = 395 -IMG_FMT_RESERVED_396 = 396 -IMG_FMT_RESERVED_397 = 397 -IMG_FMT_RESERVED_398 = 398 -IMG_FMT_RESERVED_399 = 399 -IMG_FMT_RESERVED_400 = 400 -IMG_FMT_RESERVED_401 = 401 -IMG_FMT_RESERVED_402 = 402 -IMG_FMT_RESERVED_403 = 403 -IMG_FMT_RESERVED_404 = 404 -IMG_FMT_RESERVED_405 = 405 -IMG_FMT_RESERVED_406 = 406 -IMG_FMT_RESERVED_407 = 407 -IMG_FMT_RESERVED_408 = 408 -IMG_FMT_RESERVED_409 = 409 -IMG_FMT_RESERVED_410 = 410 -IMG_FMT_RESERVED_411 = 411 -IMG_FMT_RESERVED_412 = 412 -IMG_FMT_RESERVED_413 = 413 -IMG_FMT_RESERVED_414 = 414 -IMG_FMT_RESERVED_415 = 415 -IMG_FMT_RESERVED_416 = 416 -IMG_FMT_RESERVED_417 = 417 -IMG_FMT_RESERVED_418 = 418 -IMG_FMT_RESERVED_419 = 419 -IMG_FMT_RESERVED_420 = 420 -IMG_FMT_RESERVED_421 = 421 -IMG_FMT_RESERVED_422 = 422 -IMG_FMT_RESERVED_423 = 423 -IMG_FMT_RESERVED_424 = 424 -IMG_FMT_RESERVED_425 = 425 -IMG_FMT_RESERVED_426 = 426 -IMG_FMT_RESERVED_427 = 427 -IMG_FMT_RESERVED_428 = 428 -IMG_FMT_RESERVED_429 = 429 -IMG_FMT_RESERVED_430 = 430 -IMG_FMT_RESERVED_431 = 431 -IMG_FMT_RESERVED_432 = 432 -IMG_FMT_RESERVED_433 = 433 -IMG_FMT_RESERVED_434 = 434 -IMG_FMT_RESERVED_435 = 435 -IMG_FMT_RESERVED_436 = 436 -IMG_FMT_RESERVED_437 = 437 -IMG_FMT_RESERVED_438 = 438 -IMG_FMT_RESERVED_439 = 439 -IMG_FMT_RESERVED_440 = 440 -IMG_FMT_RESERVED_441 = 441 -IMG_FMT_RESERVED_442 = 442 -IMG_FMT_RESERVED_443 = 443 -IMG_FMT_RESERVED_444 = 444 -IMG_FMT_RESERVED_445 = 445 -IMG_FMT_RESERVED_446 = 446 -IMG_FMT_RESERVED_447 = 447 -IMG_FMT_RESERVED_448 = 448 -IMG_FMT_RESERVED_449 = 449 -IMG_FMT_RESERVED_450 = 450 -IMG_FMT_RESERVED_451 = 451 -IMG_FMT_RESERVED_452 = 452 -IMG_FMT_RESERVED_453 = 453 -IMG_FMT_RESERVED_454 = 454 -IMG_FMT_RESERVED_455 = 455 -IMG_FMT_RESERVED_456 = 456 -IMG_FMT_RESERVED_457 = 457 -IMG_FMT_RESERVED_458 = 458 -IMG_FMT_RESERVED_459 = 459 -IMG_FMT_RESERVED_460 = 460 -IMG_FMT_RESERVED_461 = 461 -IMG_FMT_RESERVED_462 = 462 -IMG_FMT_RESERVED_463 = 463 -IMG_FMT_RESERVED_464 = 464 -IMG_FMT_RESERVED_465 = 465 -IMG_FMT_RESERVED_466 = 466 -IMG_FMT_RESERVED_467 = 467 -IMG_FMT_RESERVED_468 = 468 -IMG_FMT_RESERVED_469 = 469 -IMG_FMT_RESERVED_470 = 470 -IMG_FMT_RESERVED_471 = 471 -IMG_FMT_RESERVED_472 = 472 -IMG_FMT_RESERVED_473 = 473 -IMG_FMT_RESERVED_474 = 474 -IMG_FMT_RESERVED_475 = 475 -IMG_FMT_RESERVED_476 = 476 -IMG_FMT_RESERVED_477 = 477 -IMG_FMT_RESERVED_478 = 478 -IMG_FMT_RESERVED_479 = 479 -IMG_FMT_RESERVED_480 = 480 -IMG_FMT_RESERVED_481 = 481 -IMG_FMT_RESERVED_482 = 482 -IMG_FMT_RESERVED_483 = 483 -IMG_FMT_RESERVED_484 = 484 -IMG_FMT_RESERVED_485 = 485 -IMG_FMT_RESERVED_486 = 486 -IMG_FMT_RESERVED_487 = 487 -IMG_FMT_RESERVED_488 = 488 -IMG_FMT_RESERVED_489 = 489 -IMG_FMT_RESERVED_490 = 490 -IMG_FMT_RESERVED_491 = 491 -IMG_FMT_RESERVED_492 = 492 -IMG_FMT_RESERVED_493 = 493 -IMG_FMT_RESERVED_494 = 494 -IMG_FMT_RESERVED_495 = 495 -IMG_FMT_RESERVED_496 = 496 -IMG_FMT_RESERVED_497 = 497 -IMG_FMT_RESERVED_498 = 498 -IMG_FMT_RESERVED_499 = 499 -IMG_FMT_RESERVED_500 = 500 -IMG_FMT_RESERVED_501 = 501 -IMG_FMT_RESERVED_502 = 502 -IMG_FMT_RESERVED_503 = 503 -IMG_FMT_RESERVED_504 = 504 -IMG_FMT_RESERVED_505 = 505 -IMG_FMT_RESERVED_506 = 506 -IMG_FMT_RESERVED_507 = 507 -IMG_FMT_RESERVED_508 = 508 -IMG_FMT_RESERVED_509 = 509 -IMG_FMT_RESERVED_510 = 510 -IMG_FMT_RESERVED_511 = 511 -IMG_FMT = ctypes.c_uint32 # enum - -# values for enumeration 'BUF_DATA_FORMAT' -BUF_DATA_FORMAT__enumvalues = { - 0: 'BUF_DATA_FORMAT_INVALID', - 1: 'BUF_DATA_FORMAT_8', - 2: 'BUF_DATA_FORMAT_16', - 3: 'BUF_DATA_FORMAT_8_8', - 4: 'BUF_DATA_FORMAT_32', - 5: 'BUF_DATA_FORMAT_16_16', - 6: 'BUF_DATA_FORMAT_10_11_11', - 7: 'BUF_DATA_FORMAT_11_11_10', - 8: 'BUF_DATA_FORMAT_10_10_10_2', - 9: 'BUF_DATA_FORMAT_2_10_10_10', - 10: 'BUF_DATA_FORMAT_8_8_8_8', - 11: 'BUF_DATA_FORMAT_32_32', - 12: 'BUF_DATA_FORMAT_16_16_16_16', - 13: 'BUF_DATA_FORMAT_32_32_32', - 14: 'BUF_DATA_FORMAT_32_32_32_32', - 15: 'BUF_DATA_FORMAT_RESERVED_15', -} -BUF_DATA_FORMAT_INVALID = 0 -BUF_DATA_FORMAT_8 = 1 -BUF_DATA_FORMAT_16 = 2 -BUF_DATA_FORMAT_8_8 = 3 -BUF_DATA_FORMAT_32 = 4 -BUF_DATA_FORMAT_16_16 = 5 -BUF_DATA_FORMAT_10_11_11 = 6 -BUF_DATA_FORMAT_11_11_10 = 7 -BUF_DATA_FORMAT_10_10_10_2 = 8 -BUF_DATA_FORMAT_2_10_10_10 = 9 -BUF_DATA_FORMAT_8_8_8_8 = 10 -BUF_DATA_FORMAT_32_32 = 11 -BUF_DATA_FORMAT_16_16_16_16 = 12 -BUF_DATA_FORMAT_32_32_32 = 13 -BUF_DATA_FORMAT_32_32_32_32 = 14 -BUF_DATA_FORMAT_RESERVED_15 = 15 -BUF_DATA_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'IMG_DATA_FORMAT' -IMG_DATA_FORMAT__enumvalues = { - 0: 'IMG_DATA_FORMAT_INVALID', - 1: 'IMG_DATA_FORMAT_8', - 2: 'IMG_DATA_FORMAT_16', - 3: 'IMG_DATA_FORMAT_8_8', - 4: 'IMG_DATA_FORMAT_32', - 5: 'IMG_DATA_FORMAT_16_16', - 6: 'IMG_DATA_FORMAT_10_11_11', - 7: 'IMG_DATA_FORMAT_11_11_10', - 8: 'IMG_DATA_FORMAT_10_10_10_2', - 9: 'IMG_DATA_FORMAT_2_10_10_10', - 10: 'IMG_DATA_FORMAT_8_8_8_8', - 11: 'IMG_DATA_FORMAT_32_32', - 12: 'IMG_DATA_FORMAT_16_16_16_16', - 13: 'IMG_DATA_FORMAT_32_32_32', - 14: 'IMG_DATA_FORMAT_32_32_32_32', - 15: 'IMG_DATA_FORMAT_RESERVED_15', - 16: 'IMG_DATA_FORMAT_5_6_5', - 17: 'IMG_DATA_FORMAT_1_5_5_5', - 18: 'IMG_DATA_FORMAT_5_5_5_1', - 19: 'IMG_DATA_FORMAT_4_4_4_4', - 20: 'IMG_DATA_FORMAT_8_24', - 21: 'IMG_DATA_FORMAT_24_8', - 22: 'IMG_DATA_FORMAT_X24_8_32', - 23: 'IMG_DATA_FORMAT_RESERVED_23', - 24: 'IMG_DATA_FORMAT_RESERVED_24', - 25: 'IMG_DATA_FORMAT_RESERVED_25', - 26: 'IMG_DATA_FORMAT_RESERVED_26', - 27: 'IMG_DATA_FORMAT_RESERVED_27', - 28: 'IMG_DATA_FORMAT_RESERVED_28', - 29: 'IMG_DATA_FORMAT_RESERVED_29', - 30: 'IMG_DATA_FORMAT_RESERVED_30', - 31: 'IMG_DATA_FORMAT_6E4', - 32: 'IMG_DATA_FORMAT_GB_GR', - 33: 'IMG_DATA_FORMAT_BG_RG', - 34: 'IMG_DATA_FORMAT_5_9_9_9', - 35: 'IMG_DATA_FORMAT_BC1', - 36: 'IMG_DATA_FORMAT_BC2', - 37: 'IMG_DATA_FORMAT_BC3', - 38: 'IMG_DATA_FORMAT_BC4', - 39: 'IMG_DATA_FORMAT_BC5', - 40: 'IMG_DATA_FORMAT_BC6', - 41: 'IMG_DATA_FORMAT_BC7', - 42: 'IMG_DATA_FORMAT_RESERVED_42', - 43: 'IMG_DATA_FORMAT_RESERVED_43', - 44: 'IMG_DATA_FORMAT_FMASK8_S2_F1', - 45: 'IMG_DATA_FORMAT_FMASK8_S4_F1', - 46: 'IMG_DATA_FORMAT_FMASK8_S8_F1', - 47: 'IMG_DATA_FORMAT_FMASK8_S2_F2', - 48: 'IMG_DATA_FORMAT_FMASK8_S4_F2', - 49: 'IMG_DATA_FORMAT_FMASK8_S4_F4', - 50: 'IMG_DATA_FORMAT_FMASK16_S16_F1', - 51: 'IMG_DATA_FORMAT_FMASK16_S8_F2', - 52: 'IMG_DATA_FORMAT_FMASK32_S16_F2', - 53: 'IMG_DATA_FORMAT_FMASK32_S8_F4', - 54: 'IMG_DATA_FORMAT_FMASK32_S8_F8', - 55: 'IMG_DATA_FORMAT_FMASK64_S16_F4', - 56: 'IMG_DATA_FORMAT_FMASK64_S16_F8', - 57: 'IMG_DATA_FORMAT_4_4', - 58: 'IMG_DATA_FORMAT_6_5_5', - 59: 'IMG_DATA_FORMAT_1', - 60: 'IMG_DATA_FORMAT_1_REVERSED', - 61: 'IMG_DATA_FORMAT_RESERVED_61', - 62: 'IMG_DATA_FORMAT_RESERVED_62', - 63: 'IMG_DATA_FORMAT_32_AS_32_32_32_32', - 75: 'IMG_DATA_FORMAT_RESERVED_75', - 76: 'IMG_DATA_FORMAT_MM_8', - 77: 'IMG_DATA_FORMAT_MM_8_8', - 78: 'IMG_DATA_FORMAT_MM_8_8_8_8', - 79: 'IMG_DATA_FORMAT_MM_VYUY8', - 80: 'IMG_DATA_FORMAT_MM_10_11_11', - 81: 'IMG_DATA_FORMAT_MM_2_10_10_10', - 82: 'IMG_DATA_FORMAT_MM_16_16_16_16', - 83: 'IMG_DATA_FORMAT_MM_10_IN_16', - 84: 'IMG_DATA_FORMAT_MM_10_IN_16_16', - 85: 'IMG_DATA_FORMAT_MM_10_IN_16_16_16_16', - 86: 'IMG_DATA_FORMAT_RESERVED_86', - 87: 'IMG_DATA_FORMAT_RESERVED_87', - 88: 'IMG_DATA_FORMAT_RESERVED_88', - 89: 'IMG_DATA_FORMAT_RESERVED_89', - 90: 'IMG_DATA_FORMAT_RESERVED_90', - 91: 'IMG_DATA_FORMAT_RESERVED_91', - 92: 'IMG_DATA_FORMAT_RESERVED_92', - 93: 'IMG_DATA_FORMAT_RESERVED_93', - 94: 'IMG_DATA_FORMAT_RESERVED_94', - 95: 'IMG_DATA_FORMAT_RESERVED_95', - 96: 'IMG_DATA_FORMAT_RESERVED_96', - 97: 'IMG_DATA_FORMAT_RESERVED_97', - 98: 'IMG_DATA_FORMAT_RESERVED_98', - 99: 'IMG_DATA_FORMAT_RESERVED_99', - 100: 'IMG_DATA_FORMAT_RESERVED_100', - 101: 'IMG_DATA_FORMAT_RESERVED_101', - 102: 'IMG_DATA_FORMAT_RESERVED_102', - 103: 'IMG_DATA_FORMAT_RESERVED_103', - 104: 'IMG_DATA_FORMAT_RESERVED_104', - 105: 'IMG_DATA_FORMAT_RESERVED_105', - 106: 'IMG_DATA_FORMAT_RESERVED_106', - 107: 'IMG_DATA_FORMAT_RESERVED_107', - 108: 'IMG_DATA_FORMAT_RESERVED_108', - 109: 'IMG_DATA_FORMAT_RESERVED_109', - 110: 'IMG_DATA_FORMAT_RESERVED_110', - 111: 'IMG_DATA_FORMAT_RESERVED_111', - 112: 'IMG_DATA_FORMAT_RESERVED_112', - 113: 'IMG_DATA_FORMAT_RESERVED_113', - 114: 'IMG_DATA_FORMAT_RESERVED_114', - 115: 'IMG_DATA_FORMAT_RESERVED_115', - 116: 'IMG_DATA_FORMAT_RESERVED_116', - 117: 'IMG_DATA_FORMAT_RESERVED_117', - 118: 'IMG_DATA_FORMAT_RESERVED_118', - 119: 'IMG_DATA_FORMAT_RESERVED_119', - 120: 'IMG_DATA_FORMAT_RESERVED_120', - 121: 'IMG_DATA_FORMAT_RESERVED_121', - 122: 'IMG_DATA_FORMAT_RESERVED_122', - 123: 'IMG_DATA_FORMAT_RESERVED_123', - 124: 'IMG_DATA_FORMAT_RESERVED_124', - 125: 'IMG_DATA_FORMAT_RESERVED_125', - 126: 'IMG_DATA_FORMAT_RESERVED_126', - 127: 'IMG_DATA_FORMAT_RESERVED_127', -} -IMG_DATA_FORMAT_INVALID = 0 -IMG_DATA_FORMAT_8 = 1 -IMG_DATA_FORMAT_16 = 2 -IMG_DATA_FORMAT_8_8 = 3 -IMG_DATA_FORMAT_32 = 4 -IMG_DATA_FORMAT_16_16 = 5 -IMG_DATA_FORMAT_10_11_11 = 6 -IMG_DATA_FORMAT_11_11_10 = 7 -IMG_DATA_FORMAT_10_10_10_2 = 8 -IMG_DATA_FORMAT_2_10_10_10 = 9 -IMG_DATA_FORMAT_8_8_8_8 = 10 -IMG_DATA_FORMAT_32_32 = 11 -IMG_DATA_FORMAT_16_16_16_16 = 12 -IMG_DATA_FORMAT_32_32_32 = 13 -IMG_DATA_FORMAT_32_32_32_32 = 14 -IMG_DATA_FORMAT_RESERVED_15 = 15 -IMG_DATA_FORMAT_5_6_5 = 16 -IMG_DATA_FORMAT_1_5_5_5 = 17 -IMG_DATA_FORMAT_5_5_5_1 = 18 -IMG_DATA_FORMAT_4_4_4_4 = 19 -IMG_DATA_FORMAT_8_24 = 20 -IMG_DATA_FORMAT_24_8 = 21 -IMG_DATA_FORMAT_X24_8_32 = 22 -IMG_DATA_FORMAT_RESERVED_23 = 23 -IMG_DATA_FORMAT_RESERVED_24 = 24 -IMG_DATA_FORMAT_RESERVED_25 = 25 -IMG_DATA_FORMAT_RESERVED_26 = 26 -IMG_DATA_FORMAT_RESERVED_27 = 27 -IMG_DATA_FORMAT_RESERVED_28 = 28 -IMG_DATA_FORMAT_RESERVED_29 = 29 -IMG_DATA_FORMAT_RESERVED_30 = 30 -IMG_DATA_FORMAT_6E4 = 31 -IMG_DATA_FORMAT_GB_GR = 32 -IMG_DATA_FORMAT_BG_RG = 33 -IMG_DATA_FORMAT_5_9_9_9 = 34 -IMG_DATA_FORMAT_BC1 = 35 -IMG_DATA_FORMAT_BC2 = 36 -IMG_DATA_FORMAT_BC3 = 37 -IMG_DATA_FORMAT_BC4 = 38 -IMG_DATA_FORMAT_BC5 = 39 -IMG_DATA_FORMAT_BC6 = 40 -IMG_DATA_FORMAT_BC7 = 41 -IMG_DATA_FORMAT_RESERVED_42 = 42 -IMG_DATA_FORMAT_RESERVED_43 = 43 -IMG_DATA_FORMAT_FMASK8_S2_F1 = 44 -IMG_DATA_FORMAT_FMASK8_S4_F1 = 45 -IMG_DATA_FORMAT_FMASK8_S8_F1 = 46 -IMG_DATA_FORMAT_FMASK8_S2_F2 = 47 -IMG_DATA_FORMAT_FMASK8_S4_F2 = 48 -IMG_DATA_FORMAT_FMASK8_S4_F4 = 49 -IMG_DATA_FORMAT_FMASK16_S16_F1 = 50 -IMG_DATA_FORMAT_FMASK16_S8_F2 = 51 -IMG_DATA_FORMAT_FMASK32_S16_F2 = 52 -IMG_DATA_FORMAT_FMASK32_S8_F4 = 53 -IMG_DATA_FORMAT_FMASK32_S8_F8 = 54 -IMG_DATA_FORMAT_FMASK64_S16_F4 = 55 -IMG_DATA_FORMAT_FMASK64_S16_F8 = 56 -IMG_DATA_FORMAT_4_4 = 57 -IMG_DATA_FORMAT_6_5_5 = 58 -IMG_DATA_FORMAT_1 = 59 -IMG_DATA_FORMAT_1_REVERSED = 60 -IMG_DATA_FORMAT_RESERVED_61 = 61 -IMG_DATA_FORMAT_RESERVED_62 = 62 -IMG_DATA_FORMAT_32_AS_32_32_32_32 = 63 -IMG_DATA_FORMAT_RESERVED_75 = 75 -IMG_DATA_FORMAT_MM_8 = 76 -IMG_DATA_FORMAT_MM_8_8 = 77 -IMG_DATA_FORMAT_MM_8_8_8_8 = 78 -IMG_DATA_FORMAT_MM_VYUY8 = 79 -IMG_DATA_FORMAT_MM_10_11_11 = 80 -IMG_DATA_FORMAT_MM_2_10_10_10 = 81 -IMG_DATA_FORMAT_MM_16_16_16_16 = 82 -IMG_DATA_FORMAT_MM_10_IN_16 = 83 -IMG_DATA_FORMAT_MM_10_IN_16_16 = 84 -IMG_DATA_FORMAT_MM_10_IN_16_16_16_16 = 85 -IMG_DATA_FORMAT_RESERVED_86 = 86 -IMG_DATA_FORMAT_RESERVED_87 = 87 -IMG_DATA_FORMAT_RESERVED_88 = 88 -IMG_DATA_FORMAT_RESERVED_89 = 89 -IMG_DATA_FORMAT_RESERVED_90 = 90 -IMG_DATA_FORMAT_RESERVED_91 = 91 -IMG_DATA_FORMAT_RESERVED_92 = 92 -IMG_DATA_FORMAT_RESERVED_93 = 93 -IMG_DATA_FORMAT_RESERVED_94 = 94 -IMG_DATA_FORMAT_RESERVED_95 = 95 -IMG_DATA_FORMAT_RESERVED_96 = 96 -IMG_DATA_FORMAT_RESERVED_97 = 97 -IMG_DATA_FORMAT_RESERVED_98 = 98 -IMG_DATA_FORMAT_RESERVED_99 = 99 -IMG_DATA_FORMAT_RESERVED_100 = 100 -IMG_DATA_FORMAT_RESERVED_101 = 101 -IMG_DATA_FORMAT_RESERVED_102 = 102 -IMG_DATA_FORMAT_RESERVED_103 = 103 -IMG_DATA_FORMAT_RESERVED_104 = 104 -IMG_DATA_FORMAT_RESERVED_105 = 105 -IMG_DATA_FORMAT_RESERVED_106 = 106 -IMG_DATA_FORMAT_RESERVED_107 = 107 -IMG_DATA_FORMAT_RESERVED_108 = 108 -IMG_DATA_FORMAT_RESERVED_109 = 109 -IMG_DATA_FORMAT_RESERVED_110 = 110 -IMG_DATA_FORMAT_RESERVED_111 = 111 -IMG_DATA_FORMAT_RESERVED_112 = 112 -IMG_DATA_FORMAT_RESERVED_113 = 113 -IMG_DATA_FORMAT_RESERVED_114 = 114 -IMG_DATA_FORMAT_RESERVED_115 = 115 -IMG_DATA_FORMAT_RESERVED_116 = 116 -IMG_DATA_FORMAT_RESERVED_117 = 117 -IMG_DATA_FORMAT_RESERVED_118 = 118 -IMG_DATA_FORMAT_RESERVED_119 = 119 -IMG_DATA_FORMAT_RESERVED_120 = 120 -IMG_DATA_FORMAT_RESERVED_121 = 121 -IMG_DATA_FORMAT_RESERVED_122 = 122 -IMG_DATA_FORMAT_RESERVED_123 = 123 -IMG_DATA_FORMAT_RESERVED_124 = 124 -IMG_DATA_FORMAT_RESERVED_125 = 125 -IMG_DATA_FORMAT_RESERVED_126 = 126 -IMG_DATA_FORMAT_RESERVED_127 = 127 -IMG_DATA_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'BUF_NUM_FORMAT' -BUF_NUM_FORMAT__enumvalues = { - 0: 'BUF_NUM_FORMAT_UNORM', - 1: 'BUF_NUM_FORMAT_SNORM', - 2: 'BUF_NUM_FORMAT_USCALED', - 3: 'BUF_NUM_FORMAT_SSCALED', - 4: 'BUF_NUM_FORMAT_UINT', - 5: 'BUF_NUM_FORMAT_SINT', - 6: 'BUF_NUM_FORMAT_SNORM_NZ', - 7: 'BUF_NUM_FORMAT_FLOAT', -} -BUF_NUM_FORMAT_UNORM = 0 -BUF_NUM_FORMAT_SNORM = 1 -BUF_NUM_FORMAT_USCALED = 2 -BUF_NUM_FORMAT_SSCALED = 3 -BUF_NUM_FORMAT_UINT = 4 -BUF_NUM_FORMAT_SINT = 5 -BUF_NUM_FORMAT_SNORM_NZ = 6 -BUF_NUM_FORMAT_FLOAT = 7 -BUF_NUM_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'IMG_NUM_FORMAT' -IMG_NUM_FORMAT__enumvalues = { - 0: 'IMG_NUM_FORMAT_UNORM', - 1: 'IMG_NUM_FORMAT_SNORM', - 2: 'IMG_NUM_FORMAT_USCALED', - 3: 'IMG_NUM_FORMAT_SSCALED', - 4: 'IMG_NUM_FORMAT_UINT', - 5: 'IMG_NUM_FORMAT_SINT', - 6: 'IMG_NUM_FORMAT_SNORM_NZ', - 7: 'IMG_NUM_FORMAT_FLOAT', - 8: 'IMG_NUM_FORMAT_RESERVED_8', - 9: 'IMG_NUM_FORMAT_SRGB', - 10: 'IMG_NUM_FORMAT_UBNORM', - 11: 'IMG_NUM_FORMAT_UBNORM_NZ', - 12: 'IMG_NUM_FORMAT_UBINT', - 13: 'IMG_NUM_FORMAT_UBSCALED', - 14: 'IMG_NUM_FORMAT_RESERVED_14', - 15: 'IMG_NUM_FORMAT_RESERVED_15', -} -IMG_NUM_FORMAT_UNORM = 0 -IMG_NUM_FORMAT_SNORM = 1 -IMG_NUM_FORMAT_USCALED = 2 -IMG_NUM_FORMAT_SSCALED = 3 -IMG_NUM_FORMAT_UINT = 4 -IMG_NUM_FORMAT_SINT = 5 -IMG_NUM_FORMAT_SNORM_NZ = 6 -IMG_NUM_FORMAT_FLOAT = 7 -IMG_NUM_FORMAT_RESERVED_8 = 8 -IMG_NUM_FORMAT_SRGB = 9 -IMG_NUM_FORMAT_UBNORM = 10 -IMG_NUM_FORMAT_UBNORM_NZ = 11 -IMG_NUM_FORMAT_UBINT = 12 -IMG_NUM_FORMAT_UBSCALED = 13 -IMG_NUM_FORMAT_RESERVED_14 = 14 -IMG_NUM_FORMAT_RESERVED_15 = 15 -IMG_NUM_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'IH_PERF_SEL' -IH_PERF_SEL__enumvalues = { - 0: 'IH_PERF_SEL_CYCLE', - 1: 'IH_PERF_SEL_IDLE', - 2: 'IH_PERF_SEL_INPUT_IDLE', - 3: 'IH_PERF_SEL_BUFFER_IDLE', - 4: 'IH_PERF_SEL_RB0_FULL', - 5: 'IH_PERF_SEL_RB0_OVERFLOW', - 6: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK', - 7: 'IH_PERF_SEL_RB0_WPTR_WRAP', - 8: 'IH_PERF_SEL_RB0_RPTR_WRAP', - 9: 'IH_PERF_SEL_MC_WR_IDLE', - 10: 'IH_PERF_SEL_MC_WR_COUNT', - 11: 'IH_PERF_SEL_MC_WR_STALL', - 12: 'IH_PERF_SEL_MC_WR_CLEAN_PENDING', - 13: 'IH_PERF_SEL_MC_WR_CLEAN_STALL', - 14: 'IH_PERF_SEL_BIF_LINE0_RISING', - 15: 'IH_PERF_SEL_BIF_LINE0_FALLING', - 16: 'IH_PERF_SEL_RB1_FULL', - 17: 'IH_PERF_SEL_RB1_OVERFLOW', - 18: 'IH_PERF_SEL_COOKIE_REC_ERROR', - 19: 'IH_PERF_SEL_RB1_WPTR_WRAP', - 20: 'IH_PERF_SEL_RB1_RPTR_WRAP', - 21: 'IH_PERF_SEL_RB2_FULL', - 22: 'IH_PERF_SEL_RB2_OVERFLOW', - 23: 'IH_PERF_SEL_CLIENT_CREDIT_ERROR', - 24: 'IH_PERF_SEL_RB2_WPTR_WRAP', - 25: 'IH_PERF_SEL_RB2_RPTR_WRAP', - 26: 'IH_PERF_SEL_STORM_CLIENT_INT_DROP', - 27: 'IH_PERF_SEL_SELF_IV_VALID', - 28: 'IH_PERF_SEL_BUFFER_FIFO_FULL', - 29: 'IH_PERF_SEL_RB0_FULL_VF0', - 30: 'IH_PERF_SEL_RB0_FULL_VF1', - 31: 'IH_PERF_SEL_RB0_FULL_VF2', - 32: 'IH_PERF_SEL_RB0_FULL_VF3', - 33: 'IH_PERF_SEL_RB0_FULL_VF4', - 34: 'IH_PERF_SEL_RB0_FULL_VF5', - 35: 'IH_PERF_SEL_RB0_FULL_VF6', - 36: 'IH_PERF_SEL_RB0_FULL_VF7', - 37: 'IH_PERF_SEL_RB0_FULL_VF8', - 38: 'IH_PERF_SEL_RB0_FULL_VF9', - 39: 'IH_PERF_SEL_RB0_FULL_VF10', - 40: 'IH_PERF_SEL_RB0_FULL_VF11', - 41: 'IH_PERF_SEL_RB0_FULL_VF12', - 42: 'IH_PERF_SEL_RB0_FULL_VF13', - 43: 'IH_PERF_SEL_RB0_FULL_VF14', - 44: 'IH_PERF_SEL_RB0_FULL_VF15', - 45: 'IH_PERF_SEL_RB0_FULL_VF16', - 46: 'IH_PERF_SEL_RB0_FULL_VF17', - 47: 'IH_PERF_SEL_RB0_FULL_VF18', - 48: 'IH_PERF_SEL_RB0_FULL_VF19', - 49: 'IH_PERF_SEL_RB0_FULL_VF20', - 50: 'IH_PERF_SEL_RB0_FULL_VF21', - 51: 'IH_PERF_SEL_RB0_FULL_VF22', - 52: 'IH_PERF_SEL_RB0_FULL_VF23', - 53: 'IH_PERF_SEL_RB0_FULL_VF24', - 54: 'IH_PERF_SEL_RB0_FULL_VF25', - 55: 'IH_PERF_SEL_RB0_FULL_VF26', - 56: 'IH_PERF_SEL_RB0_FULL_VF27', - 57: 'IH_PERF_SEL_RB0_FULL_VF28', - 58: 'IH_PERF_SEL_RB0_FULL_VF29', - 59: 'IH_PERF_SEL_RB0_FULL_VF30', - 60: 'IH_PERF_SEL_RB0_OVERFLOW_VF0', - 61: 'IH_PERF_SEL_RB0_OVERFLOW_VF1', - 62: 'IH_PERF_SEL_RB0_OVERFLOW_VF2', - 63: 'IH_PERF_SEL_RB0_OVERFLOW_VF3', - 64: 'IH_PERF_SEL_RB0_OVERFLOW_VF4', - 65: 'IH_PERF_SEL_RB0_OVERFLOW_VF5', - 66: 'IH_PERF_SEL_RB0_OVERFLOW_VF6', - 67: 'IH_PERF_SEL_RB0_OVERFLOW_VF7', - 68: 'IH_PERF_SEL_RB0_OVERFLOW_VF8', - 69: 'IH_PERF_SEL_RB0_OVERFLOW_VF9', - 70: 'IH_PERF_SEL_RB0_OVERFLOW_VF10', - 71: 'IH_PERF_SEL_RB0_OVERFLOW_VF11', - 72: 'IH_PERF_SEL_RB0_OVERFLOW_VF12', - 73: 'IH_PERF_SEL_RB0_OVERFLOW_VF13', - 74: 'IH_PERF_SEL_RB0_OVERFLOW_VF14', - 75: 'IH_PERF_SEL_RB0_OVERFLOW_VF15', - 76: 'IH_PERF_SEL_RB0_OVERFLOW_VF16', - 77: 'IH_PERF_SEL_RB0_OVERFLOW_VF17', - 78: 'IH_PERF_SEL_RB0_OVERFLOW_VF18', - 79: 'IH_PERF_SEL_RB0_OVERFLOW_VF19', - 80: 'IH_PERF_SEL_RB0_OVERFLOW_VF20', - 81: 'IH_PERF_SEL_RB0_OVERFLOW_VF21', - 82: 'IH_PERF_SEL_RB0_OVERFLOW_VF22', - 83: 'IH_PERF_SEL_RB0_OVERFLOW_VF23', - 84: 'IH_PERF_SEL_RB0_OVERFLOW_VF24', - 85: 'IH_PERF_SEL_RB0_OVERFLOW_VF25', - 86: 'IH_PERF_SEL_RB0_OVERFLOW_VF26', - 87: 'IH_PERF_SEL_RB0_OVERFLOW_VF27', - 88: 'IH_PERF_SEL_RB0_OVERFLOW_VF28', - 89: 'IH_PERF_SEL_RB0_OVERFLOW_VF29', - 90: 'IH_PERF_SEL_RB0_OVERFLOW_VF30', - 91: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF0', - 92: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF1', - 93: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF2', - 94: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF3', - 95: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF4', - 96: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF5', - 97: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF6', - 98: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF7', - 99: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF8', - 100: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF9', - 101: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF10', - 102: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF11', - 103: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF12', - 104: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF13', - 105: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF14', - 106: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF15', - 107: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF16', - 108: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF17', - 109: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF18', - 110: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF19', - 111: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF20', - 112: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF21', - 113: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF22', - 114: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF23', - 115: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF24', - 116: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF25', - 117: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF26', - 118: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF27', - 119: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF28', - 120: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF29', - 121: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF30', - 122: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF0', - 123: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF1', - 124: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF2', - 125: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF3', - 126: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF4', - 127: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF5', - 128: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF6', - 129: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF7', - 130: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF8', - 131: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF9', - 132: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF10', - 133: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF11', - 134: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF12', - 135: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF13', - 136: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF14', - 137: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF15', - 138: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF16', - 139: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF17', - 140: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF18', - 141: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF19', - 142: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF20', - 143: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF21', - 144: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF22', - 145: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF23', - 146: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF24', - 147: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF25', - 148: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF26', - 149: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF27', - 150: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF28', - 151: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF29', - 152: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF30', - 153: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF0', - 154: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF1', - 155: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF2', - 156: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF3', - 157: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF4', - 158: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF5', - 159: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF6', - 160: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF7', - 161: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF8', - 162: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF9', - 163: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF10', - 164: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF11', - 165: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF12', - 166: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF13', - 167: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF14', - 168: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF15', - 169: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF16', - 170: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF17', - 171: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF18', - 172: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF19', - 173: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF20', - 174: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF21', - 175: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF22', - 176: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF23', - 177: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF24', - 178: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF25', - 179: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF26', - 180: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF27', - 181: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF28', - 182: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF29', - 183: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF30', - 184: 'IH_PERF_SEL_BIF_LINE0_RISING_VF0', - 185: 'IH_PERF_SEL_BIF_LINE0_RISING_VF1', - 186: 'IH_PERF_SEL_BIF_LINE0_RISING_VF2', - 187: 'IH_PERF_SEL_BIF_LINE0_RISING_VF3', - 188: 'IH_PERF_SEL_BIF_LINE0_RISING_VF4', - 189: 'IH_PERF_SEL_BIF_LINE0_RISING_VF5', - 190: 'IH_PERF_SEL_BIF_LINE0_RISING_VF6', - 191: 'IH_PERF_SEL_BIF_LINE0_RISING_VF7', - 192: 'IH_PERF_SEL_BIF_LINE0_RISING_VF8', - 193: 'IH_PERF_SEL_BIF_LINE0_RISING_VF9', - 194: 'IH_PERF_SEL_BIF_LINE0_RISING_VF10', - 195: 'IH_PERF_SEL_BIF_LINE0_RISING_VF11', - 196: 'IH_PERF_SEL_BIF_LINE0_RISING_VF12', - 197: 'IH_PERF_SEL_BIF_LINE0_RISING_VF13', - 198: 'IH_PERF_SEL_BIF_LINE0_RISING_VF14', - 199: 'IH_PERF_SEL_BIF_LINE0_RISING_VF15', - 200: 'IH_PERF_SEL_BIF_LINE0_RISING_VF16', - 201: 'IH_PERF_SEL_BIF_LINE0_RISING_VF17', - 202: 'IH_PERF_SEL_BIF_LINE0_RISING_VF18', - 203: 'IH_PERF_SEL_BIF_LINE0_RISING_VF19', - 204: 'IH_PERF_SEL_BIF_LINE0_RISING_VF20', - 205: 'IH_PERF_SEL_BIF_LINE0_RISING_VF21', - 206: 'IH_PERF_SEL_BIF_LINE0_RISING_VF22', - 207: 'IH_PERF_SEL_BIF_LINE0_RISING_VF23', - 208: 'IH_PERF_SEL_BIF_LINE0_RISING_VF24', - 209: 'IH_PERF_SEL_BIF_LINE0_RISING_VF25', - 210: 'IH_PERF_SEL_BIF_LINE0_RISING_VF26', - 211: 'IH_PERF_SEL_BIF_LINE0_RISING_VF27', - 212: 'IH_PERF_SEL_BIF_LINE0_RISING_VF28', - 213: 'IH_PERF_SEL_BIF_LINE0_RISING_VF29', - 214: 'IH_PERF_SEL_BIF_LINE0_RISING_VF30', - 215: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF0', - 216: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF1', - 217: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF2', - 218: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF3', - 219: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF4', - 220: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF5', - 221: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF6', - 222: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF7', - 223: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF8', - 224: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF9', - 225: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF10', - 226: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF11', - 227: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF12', - 228: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF13', - 229: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF14', - 230: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF15', - 231: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF16', - 232: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF17', - 233: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF18', - 234: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF19', - 235: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF20', - 236: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF21', - 237: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF22', - 238: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF23', - 239: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF24', - 240: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF25', - 241: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF26', - 242: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF27', - 243: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF28', - 244: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF29', - 245: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF30', - 246: 'IH_PERF_SEL_CLIENT0_INT', - 247: 'IH_PERF_SEL_CLIENT1_INT', - 248: 'IH_PERF_SEL_CLIENT2_INT', - 249: 'IH_PERF_SEL_CLIENT3_INT', - 250: 'IH_PERF_SEL_CLIENT4_INT', - 251: 'IH_PERF_SEL_CLIENT5_INT', - 252: 'IH_PERF_SEL_CLIENT6_INT', - 253: 'IH_PERF_SEL_CLIENT7_INT', - 254: 'IH_PERF_SEL_CLIENT8_INT', - 255: 'IH_PERF_SEL_CLIENT9_INT', - 256: 'IH_PERF_SEL_CLIENT10_INT', - 257: 'IH_PERF_SEL_CLIENT11_INT', - 258: 'IH_PERF_SEL_CLIENT12_INT', - 259: 'IH_PERF_SEL_CLIENT13_INT', - 260: 'IH_PERF_SEL_CLIENT14_INT', - 261: 'IH_PERF_SEL_CLIENT15_INT', - 262: 'IH_PERF_SEL_CLIENT16_INT', - 263: 'IH_PERF_SEL_CLIENT17_INT', - 264: 'IH_PERF_SEL_CLIENT18_INT', - 265: 'IH_PERF_SEL_CLIENT19_INT', - 266: 'IH_PERF_SEL_CLIENT20_INT', - 267: 'IH_PERF_SEL_CLIENT21_INT', - 268: 'IH_PERF_SEL_CLIENT22_INT', - 269: 'IH_PERF_SEL_CLIENT23_INT', - 270: 'IH_PERF_SEL_CLIENT24_INT', - 271: 'IH_PERF_SEL_CLIENT25_INT', - 272: 'IH_PERF_SEL_CLIENT26_INT', - 273: 'IH_PERF_SEL_CLIENT27_INT', - 274: 'IH_PERF_SEL_CLIENT28_INT', - 275: 'IH_PERF_SEL_CLIENT29_INT', - 276: 'IH_PERF_SEL_CLIENT30_INT', - 277: 'IH_PERF_SEL_CLIENT31_INT', - 278: 'IH_PERF_SEL_RB1_FULL_VF0', - 279: 'IH_PERF_SEL_RB1_FULL_VF1', - 280: 'IH_PERF_SEL_RB1_FULL_VF2', - 281: 'IH_PERF_SEL_RB1_FULL_VF3', - 282: 'IH_PERF_SEL_RB1_FULL_VF4', - 283: 'IH_PERF_SEL_RB1_FULL_VF5', - 284: 'IH_PERF_SEL_RB1_FULL_VF6', - 285: 'IH_PERF_SEL_RB1_FULL_VF7', - 286: 'IH_PERF_SEL_RB1_FULL_VF8', - 287: 'IH_PERF_SEL_RB1_FULL_VF9', - 288: 'IH_PERF_SEL_RB1_FULL_VF10', - 289: 'IH_PERF_SEL_RB1_FULL_VF11', - 290: 'IH_PERF_SEL_RB1_FULL_VF12', - 291: 'IH_PERF_SEL_RB1_FULL_VF13', - 292: 'IH_PERF_SEL_RB1_FULL_VF14', - 293: 'IH_PERF_SEL_RB1_FULL_VF15', - 294: 'IH_PERF_SEL_RB1_FULL_VF16', - 295: 'IH_PERF_SEL_RB1_FULL_VF17', - 296: 'IH_PERF_SEL_RB1_FULL_VF18', - 297: 'IH_PERF_SEL_RB1_FULL_VF19', - 298: 'IH_PERF_SEL_RB1_FULL_VF20', - 299: 'IH_PERF_SEL_RB1_FULL_VF21', - 300: 'IH_PERF_SEL_RB1_FULL_VF22', - 301: 'IH_PERF_SEL_RB1_FULL_VF23', - 302: 'IH_PERF_SEL_RB1_FULL_VF24', - 303: 'IH_PERF_SEL_RB1_FULL_VF25', - 304: 'IH_PERF_SEL_RB1_FULL_VF26', - 305: 'IH_PERF_SEL_RB1_FULL_VF27', - 306: 'IH_PERF_SEL_RB1_FULL_VF28', - 307: 'IH_PERF_SEL_RB1_FULL_VF29', - 308: 'IH_PERF_SEL_RB1_FULL_VF30', - 309: 'IH_PERF_SEL_RB1_OVERFLOW_VF0', - 310: 'IH_PERF_SEL_RB1_OVERFLOW_VF1', - 311: 'IH_PERF_SEL_RB1_OVERFLOW_VF2', - 312: 'IH_PERF_SEL_RB1_OVERFLOW_VF3', - 313: 'IH_PERF_SEL_RB1_OVERFLOW_VF4', - 314: 'IH_PERF_SEL_RB1_OVERFLOW_VF5', - 315: 'IH_PERF_SEL_RB1_OVERFLOW_VF6', - 316: 'IH_PERF_SEL_RB1_OVERFLOW_VF7', - 317: 'IH_PERF_SEL_RB1_OVERFLOW_VF8', - 318: 'IH_PERF_SEL_RB1_OVERFLOW_VF9', - 319: 'IH_PERF_SEL_RB1_OVERFLOW_VF10', - 320: 'IH_PERF_SEL_RB1_OVERFLOW_VF11', - 321: 'IH_PERF_SEL_RB1_OVERFLOW_VF12', - 322: 'IH_PERF_SEL_RB1_OVERFLOW_VF13', - 323: 'IH_PERF_SEL_RB1_OVERFLOW_VF14', - 324: 'IH_PERF_SEL_RB1_OVERFLOW_VF15', - 325: 'IH_PERF_SEL_RB1_OVERFLOW_VF16', - 326: 'IH_PERF_SEL_RB1_OVERFLOW_VF17', - 327: 'IH_PERF_SEL_RB1_OVERFLOW_VF18', - 328: 'IH_PERF_SEL_RB1_OVERFLOW_VF19', - 329: 'IH_PERF_SEL_RB1_OVERFLOW_VF20', - 330: 'IH_PERF_SEL_RB1_OVERFLOW_VF21', - 331: 'IH_PERF_SEL_RB1_OVERFLOW_VF22', - 332: 'IH_PERF_SEL_RB1_OVERFLOW_VF23', - 333: 'IH_PERF_SEL_RB1_OVERFLOW_VF24', - 334: 'IH_PERF_SEL_RB1_OVERFLOW_VF25', - 335: 'IH_PERF_SEL_RB1_OVERFLOW_VF26', - 336: 'IH_PERF_SEL_RB1_OVERFLOW_VF27', - 337: 'IH_PERF_SEL_RB1_OVERFLOW_VF28', - 338: 'IH_PERF_SEL_RB1_OVERFLOW_VF29', - 339: 'IH_PERF_SEL_RB1_OVERFLOW_VF30', - 340: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF0', - 341: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF1', - 342: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF2', - 343: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF3', - 344: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF4', - 345: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF5', - 346: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF6', - 347: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF7', - 348: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF8', - 349: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF9', - 350: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF10', - 351: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF11', - 352: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF12', - 353: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF13', - 354: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF14', - 355: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF15', - 356: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF16', - 357: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF17', - 358: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF18', - 359: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF19', - 360: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF20', - 361: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF21', - 362: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF22', - 363: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF23', - 364: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF24', - 365: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF25', - 366: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF26', - 367: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF27', - 368: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF28', - 369: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF29', - 370: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF30', - 371: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF0', - 372: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF1', - 373: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF2', - 374: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF3', - 375: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF4', - 376: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF5', - 377: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF6', - 378: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF7', - 379: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF8', - 380: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF9', - 381: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF10', - 382: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF11', - 383: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF12', - 384: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF13', - 385: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF14', - 386: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF15', - 387: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF16', - 388: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF17', - 389: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF18', - 390: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF19', - 391: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF20', - 392: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF21', - 393: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF22', - 394: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF23', - 395: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF24', - 396: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF25', - 397: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF26', - 398: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF27', - 399: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF28', - 400: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF29', - 401: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF30', - 402: 'IH_PERF_SEL_RB2_FULL_VF0', - 403: 'IH_PERF_SEL_RB2_FULL_VF1', - 404: 'IH_PERF_SEL_RB2_FULL_VF2', - 405: 'IH_PERF_SEL_RB2_FULL_VF3', - 406: 'IH_PERF_SEL_RB2_FULL_VF4', - 407: 'IH_PERF_SEL_RB2_FULL_VF5', - 408: 'IH_PERF_SEL_RB2_FULL_VF6', - 409: 'IH_PERF_SEL_RB2_FULL_VF7', - 410: 'IH_PERF_SEL_RB2_FULL_VF8', - 411: 'IH_PERF_SEL_RB2_FULL_VF9', - 412: 'IH_PERF_SEL_RB2_FULL_VF10', - 413: 'IH_PERF_SEL_RB2_FULL_VF11', - 414: 'IH_PERF_SEL_RB2_FULL_VF12', - 415: 'IH_PERF_SEL_RB2_FULL_VF13', - 416: 'IH_PERF_SEL_RB2_FULL_VF14', - 417: 'IH_PERF_SEL_RB2_FULL_VF15', - 418: 'IH_PERF_SEL_RB2_FULL_VF16', - 419: 'IH_PERF_SEL_RB2_FULL_VF17', - 420: 'IH_PERF_SEL_RB2_FULL_VF18', - 421: 'IH_PERF_SEL_RB2_FULL_VF19', - 422: 'IH_PERF_SEL_RB2_FULL_VF20', - 423: 'IH_PERF_SEL_RB2_FULL_VF21', - 424: 'IH_PERF_SEL_RB2_FULL_VF22', - 425: 'IH_PERF_SEL_RB2_FULL_VF23', - 426: 'IH_PERF_SEL_RB2_FULL_VF24', - 427: 'IH_PERF_SEL_RB2_FULL_VF25', - 428: 'IH_PERF_SEL_RB2_FULL_VF26', - 429: 'IH_PERF_SEL_RB2_FULL_VF27', - 430: 'IH_PERF_SEL_RB2_FULL_VF28', - 431: 'IH_PERF_SEL_RB2_FULL_VF29', - 432: 'IH_PERF_SEL_RB2_FULL_VF30', - 433: 'IH_PERF_SEL_RB2_OVERFLOW_VF0', - 434: 'IH_PERF_SEL_RB2_OVERFLOW_VF1', - 435: 'IH_PERF_SEL_RB2_OVERFLOW_VF2', - 436: 'IH_PERF_SEL_RB2_OVERFLOW_VF3', - 437: 'IH_PERF_SEL_RB2_OVERFLOW_VF4', - 438: 'IH_PERF_SEL_RB2_OVERFLOW_VF5', - 439: 'IH_PERF_SEL_RB2_OVERFLOW_VF6', - 440: 'IH_PERF_SEL_RB2_OVERFLOW_VF7', - 441: 'IH_PERF_SEL_RB2_OVERFLOW_VF8', - 442: 'IH_PERF_SEL_RB2_OVERFLOW_VF9', - 443: 'IH_PERF_SEL_RB2_OVERFLOW_VF10', - 444: 'IH_PERF_SEL_RB2_OVERFLOW_VF11', - 445: 'IH_PERF_SEL_RB2_OVERFLOW_VF12', - 446: 'IH_PERF_SEL_RB2_OVERFLOW_VF13', - 447: 'IH_PERF_SEL_RB2_OVERFLOW_VF14', - 448: 'IH_PERF_SEL_RB2_OVERFLOW_VF15', - 449: 'IH_PERF_SEL_RB2_OVERFLOW_VF16', - 450: 'IH_PERF_SEL_RB2_OVERFLOW_VF17', - 451: 'IH_PERF_SEL_RB2_OVERFLOW_VF18', - 452: 'IH_PERF_SEL_RB2_OVERFLOW_VF19', - 453: 'IH_PERF_SEL_RB2_OVERFLOW_VF20', - 454: 'IH_PERF_SEL_RB2_OVERFLOW_VF21', - 455: 'IH_PERF_SEL_RB2_OVERFLOW_VF22', - 456: 'IH_PERF_SEL_RB2_OVERFLOW_VF23', - 457: 'IH_PERF_SEL_RB2_OVERFLOW_VF24', - 458: 'IH_PERF_SEL_RB2_OVERFLOW_VF25', - 459: 'IH_PERF_SEL_RB2_OVERFLOW_VF26', - 460: 'IH_PERF_SEL_RB2_OVERFLOW_VF27', - 461: 'IH_PERF_SEL_RB2_OVERFLOW_VF28', - 462: 'IH_PERF_SEL_RB2_OVERFLOW_VF29', - 463: 'IH_PERF_SEL_RB2_OVERFLOW_VF30', - 464: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF0', - 465: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF1', - 466: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF2', - 467: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF3', - 468: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF4', - 469: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF5', - 470: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF6', - 471: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF7', - 472: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF8', - 473: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF9', - 474: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF10', - 475: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF11', - 476: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF12', - 477: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF13', - 478: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF14', - 479: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF15', - 480: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF16', - 481: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF17', - 482: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF18', - 483: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF19', - 484: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF20', - 485: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF21', - 486: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF22', - 487: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF23', - 488: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF24', - 489: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF25', - 490: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF26', - 491: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF27', - 492: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF28', - 493: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF29', - 494: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF30', - 495: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF0', - 496: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF1', - 497: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF2', - 498: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF3', - 499: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF4', - 500: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF5', - 501: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF6', - 502: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF7', - 503: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF8', - 504: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF9', - 505: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF10', - 506: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF11', - 507: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF12', - 508: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF13', - 509: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF14', - 510: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF15', - 511: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF16', - 512: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF17', - 513: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF18', - 514: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF19', - 515: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF20', - 516: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF21', - 517: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF22', - 518: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF23', - 519: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF24', - 520: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF25', - 521: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF26', - 522: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF27', - 523: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF28', - 524: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF29', - 525: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF30', - 526: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP', - 527: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF0', - 528: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF1', - 529: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF2', - 530: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF3', - 531: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF4', - 532: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF5', - 533: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF6', - 534: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF7', - 535: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF8', - 536: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF9', - 537: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF10', - 538: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF11', - 539: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF12', - 540: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF13', - 541: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF14', - 542: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF15', - 543: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF16', - 544: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF17', - 545: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF18', - 546: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF19', - 547: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF20', - 548: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF21', - 549: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF22', - 550: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF23', - 551: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF24', - 552: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF25', - 553: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF26', - 554: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF27', - 555: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF28', - 556: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF29', - 557: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF30', - 558: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP', - 559: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF0', - 560: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF1', - 561: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF2', - 562: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF3', - 563: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF4', - 564: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF5', - 565: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF6', - 566: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF7', - 567: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF8', - 568: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF9', - 569: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF10', - 570: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF11', - 571: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF12', - 572: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF13', - 573: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF14', - 574: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF15', - 575: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF16', - 576: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF17', - 577: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF18', - 578: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF19', - 579: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF20', - 580: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF21', - 581: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF22', - 582: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF23', - 583: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF24', - 584: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF25', - 585: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF26', - 586: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF27', - 587: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF28', - 588: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF29', - 589: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF30', - 590: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP', - 591: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF0', - 592: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF1', - 593: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF2', - 594: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF3', - 595: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF4', - 596: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF5', - 597: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF6', - 598: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF7', - 599: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF8', - 600: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF9', - 601: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF10', - 602: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF11', - 603: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF12', - 604: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF13', - 605: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF14', - 606: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF15', - 607: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF16', - 608: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF17', - 609: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF18', - 610: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF19', - 611: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF20', - 612: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF21', - 613: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF22', - 614: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF23', - 615: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF24', - 616: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF25', - 617: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF26', - 618: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF27', - 619: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF28', - 620: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF29', - 621: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF30', - 622: 'IH_PERF_SEL_RB0_LOAD_RPTR', - 623: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF0', - 624: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF1', - 625: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF2', - 626: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF3', - 627: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF4', - 628: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF5', - 629: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF6', - 630: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF7', - 631: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF8', - 632: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF9', - 633: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF10', - 634: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF11', - 635: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF12', - 636: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF13', - 637: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF14', - 638: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF15', - 639: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF16', - 640: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF17', - 641: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF18', - 642: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF19', - 643: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF20', - 644: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF21', - 645: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF22', - 646: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF23', - 647: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF24', - 648: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF25', - 649: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF26', - 650: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF27', - 651: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF28', - 652: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF29', - 653: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF30', - 654: 'IH_PERF_SEL_RB1_LOAD_RPTR', - 655: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF0', - 656: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF1', - 657: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF2', - 658: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF3', - 659: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF4', - 660: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF5', - 661: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF6', - 662: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF7', - 663: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF8', - 664: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF9', - 665: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF10', - 666: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF11', - 667: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF12', - 668: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF13', - 669: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF14', - 670: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF15', - 671: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF16', - 672: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF17', - 673: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF18', - 674: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF19', - 675: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF20', - 676: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF21', - 677: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF22', - 678: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF23', - 679: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF24', - 680: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF25', - 681: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF26', - 682: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF27', - 683: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF28', - 684: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF29', - 685: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF30', - 686: 'IH_PERF_SEL_RB2_LOAD_RPTR', - 687: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF0', - 688: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF1', - 689: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF2', - 690: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF3', - 691: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF4', - 692: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF5', - 693: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF6', - 694: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF7', - 695: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF8', - 696: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF9', - 697: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF10', - 698: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF11', - 699: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF12', - 700: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF13', - 701: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF14', - 702: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF15', - 703: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF16', - 704: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF17', - 705: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF18', - 706: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF19', - 707: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF20', - 708: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF21', - 709: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF22', - 710: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF23', - 711: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF24', - 712: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF25', - 713: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF26', - 714: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF27', - 715: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF28', - 716: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF29', - 717: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF30', -} -IH_PERF_SEL_CYCLE = 0 -IH_PERF_SEL_IDLE = 1 -IH_PERF_SEL_INPUT_IDLE = 2 -IH_PERF_SEL_BUFFER_IDLE = 3 -IH_PERF_SEL_RB0_FULL = 4 -IH_PERF_SEL_RB0_OVERFLOW = 5 -IH_PERF_SEL_RB0_WPTR_WRITEBACK = 6 -IH_PERF_SEL_RB0_WPTR_WRAP = 7 -IH_PERF_SEL_RB0_RPTR_WRAP = 8 -IH_PERF_SEL_MC_WR_IDLE = 9 -IH_PERF_SEL_MC_WR_COUNT = 10 -IH_PERF_SEL_MC_WR_STALL = 11 -IH_PERF_SEL_MC_WR_CLEAN_PENDING = 12 -IH_PERF_SEL_MC_WR_CLEAN_STALL = 13 -IH_PERF_SEL_BIF_LINE0_RISING = 14 -IH_PERF_SEL_BIF_LINE0_FALLING = 15 -IH_PERF_SEL_RB1_FULL = 16 -IH_PERF_SEL_RB1_OVERFLOW = 17 -IH_PERF_SEL_COOKIE_REC_ERROR = 18 -IH_PERF_SEL_RB1_WPTR_WRAP = 19 -IH_PERF_SEL_RB1_RPTR_WRAP = 20 -IH_PERF_SEL_RB2_FULL = 21 -IH_PERF_SEL_RB2_OVERFLOW = 22 -IH_PERF_SEL_CLIENT_CREDIT_ERROR = 23 -IH_PERF_SEL_RB2_WPTR_WRAP = 24 -IH_PERF_SEL_RB2_RPTR_WRAP = 25 -IH_PERF_SEL_STORM_CLIENT_INT_DROP = 26 -IH_PERF_SEL_SELF_IV_VALID = 27 -IH_PERF_SEL_BUFFER_FIFO_FULL = 28 -IH_PERF_SEL_RB0_FULL_VF0 = 29 -IH_PERF_SEL_RB0_FULL_VF1 = 30 -IH_PERF_SEL_RB0_FULL_VF2 = 31 -IH_PERF_SEL_RB0_FULL_VF3 = 32 -IH_PERF_SEL_RB0_FULL_VF4 = 33 -IH_PERF_SEL_RB0_FULL_VF5 = 34 -IH_PERF_SEL_RB0_FULL_VF6 = 35 -IH_PERF_SEL_RB0_FULL_VF7 = 36 -IH_PERF_SEL_RB0_FULL_VF8 = 37 -IH_PERF_SEL_RB0_FULL_VF9 = 38 -IH_PERF_SEL_RB0_FULL_VF10 = 39 -IH_PERF_SEL_RB0_FULL_VF11 = 40 -IH_PERF_SEL_RB0_FULL_VF12 = 41 -IH_PERF_SEL_RB0_FULL_VF13 = 42 -IH_PERF_SEL_RB0_FULL_VF14 = 43 -IH_PERF_SEL_RB0_FULL_VF15 = 44 -IH_PERF_SEL_RB0_FULL_VF16 = 45 -IH_PERF_SEL_RB0_FULL_VF17 = 46 -IH_PERF_SEL_RB0_FULL_VF18 = 47 -IH_PERF_SEL_RB0_FULL_VF19 = 48 -IH_PERF_SEL_RB0_FULL_VF20 = 49 -IH_PERF_SEL_RB0_FULL_VF21 = 50 -IH_PERF_SEL_RB0_FULL_VF22 = 51 -IH_PERF_SEL_RB0_FULL_VF23 = 52 -IH_PERF_SEL_RB0_FULL_VF24 = 53 -IH_PERF_SEL_RB0_FULL_VF25 = 54 -IH_PERF_SEL_RB0_FULL_VF26 = 55 -IH_PERF_SEL_RB0_FULL_VF27 = 56 -IH_PERF_SEL_RB0_FULL_VF28 = 57 -IH_PERF_SEL_RB0_FULL_VF29 = 58 -IH_PERF_SEL_RB0_FULL_VF30 = 59 -IH_PERF_SEL_RB0_OVERFLOW_VF0 = 60 -IH_PERF_SEL_RB0_OVERFLOW_VF1 = 61 -IH_PERF_SEL_RB0_OVERFLOW_VF2 = 62 -IH_PERF_SEL_RB0_OVERFLOW_VF3 = 63 -IH_PERF_SEL_RB0_OVERFLOW_VF4 = 64 -IH_PERF_SEL_RB0_OVERFLOW_VF5 = 65 -IH_PERF_SEL_RB0_OVERFLOW_VF6 = 66 -IH_PERF_SEL_RB0_OVERFLOW_VF7 = 67 -IH_PERF_SEL_RB0_OVERFLOW_VF8 = 68 -IH_PERF_SEL_RB0_OVERFLOW_VF9 = 69 -IH_PERF_SEL_RB0_OVERFLOW_VF10 = 70 -IH_PERF_SEL_RB0_OVERFLOW_VF11 = 71 -IH_PERF_SEL_RB0_OVERFLOW_VF12 = 72 -IH_PERF_SEL_RB0_OVERFLOW_VF13 = 73 -IH_PERF_SEL_RB0_OVERFLOW_VF14 = 74 -IH_PERF_SEL_RB0_OVERFLOW_VF15 = 75 -IH_PERF_SEL_RB0_OVERFLOW_VF16 = 76 -IH_PERF_SEL_RB0_OVERFLOW_VF17 = 77 -IH_PERF_SEL_RB0_OVERFLOW_VF18 = 78 -IH_PERF_SEL_RB0_OVERFLOW_VF19 = 79 -IH_PERF_SEL_RB0_OVERFLOW_VF20 = 80 -IH_PERF_SEL_RB0_OVERFLOW_VF21 = 81 -IH_PERF_SEL_RB0_OVERFLOW_VF22 = 82 -IH_PERF_SEL_RB0_OVERFLOW_VF23 = 83 -IH_PERF_SEL_RB0_OVERFLOW_VF24 = 84 -IH_PERF_SEL_RB0_OVERFLOW_VF25 = 85 -IH_PERF_SEL_RB0_OVERFLOW_VF26 = 86 -IH_PERF_SEL_RB0_OVERFLOW_VF27 = 87 -IH_PERF_SEL_RB0_OVERFLOW_VF28 = 88 -IH_PERF_SEL_RB0_OVERFLOW_VF29 = 89 -IH_PERF_SEL_RB0_OVERFLOW_VF30 = 90 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF0 = 91 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF1 = 92 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF2 = 93 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF3 = 94 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF4 = 95 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF5 = 96 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF6 = 97 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF7 = 98 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF8 = 99 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF9 = 100 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF10 = 101 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF11 = 102 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF12 = 103 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF13 = 104 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF14 = 105 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF15 = 106 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF16 = 107 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF17 = 108 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF18 = 109 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF19 = 110 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF20 = 111 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF21 = 112 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF22 = 113 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF23 = 114 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF24 = 115 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF25 = 116 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF26 = 117 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF27 = 118 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF28 = 119 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF29 = 120 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF30 = 121 -IH_PERF_SEL_RB0_WPTR_WRAP_VF0 = 122 -IH_PERF_SEL_RB0_WPTR_WRAP_VF1 = 123 -IH_PERF_SEL_RB0_WPTR_WRAP_VF2 = 124 -IH_PERF_SEL_RB0_WPTR_WRAP_VF3 = 125 -IH_PERF_SEL_RB0_WPTR_WRAP_VF4 = 126 -IH_PERF_SEL_RB0_WPTR_WRAP_VF5 = 127 -IH_PERF_SEL_RB0_WPTR_WRAP_VF6 = 128 -IH_PERF_SEL_RB0_WPTR_WRAP_VF7 = 129 -IH_PERF_SEL_RB0_WPTR_WRAP_VF8 = 130 -IH_PERF_SEL_RB0_WPTR_WRAP_VF9 = 131 -IH_PERF_SEL_RB0_WPTR_WRAP_VF10 = 132 -IH_PERF_SEL_RB0_WPTR_WRAP_VF11 = 133 -IH_PERF_SEL_RB0_WPTR_WRAP_VF12 = 134 -IH_PERF_SEL_RB0_WPTR_WRAP_VF13 = 135 -IH_PERF_SEL_RB0_WPTR_WRAP_VF14 = 136 -IH_PERF_SEL_RB0_WPTR_WRAP_VF15 = 137 -IH_PERF_SEL_RB0_WPTR_WRAP_VF16 = 138 -IH_PERF_SEL_RB0_WPTR_WRAP_VF17 = 139 -IH_PERF_SEL_RB0_WPTR_WRAP_VF18 = 140 -IH_PERF_SEL_RB0_WPTR_WRAP_VF19 = 141 -IH_PERF_SEL_RB0_WPTR_WRAP_VF20 = 142 -IH_PERF_SEL_RB0_WPTR_WRAP_VF21 = 143 -IH_PERF_SEL_RB0_WPTR_WRAP_VF22 = 144 -IH_PERF_SEL_RB0_WPTR_WRAP_VF23 = 145 -IH_PERF_SEL_RB0_WPTR_WRAP_VF24 = 146 -IH_PERF_SEL_RB0_WPTR_WRAP_VF25 = 147 -IH_PERF_SEL_RB0_WPTR_WRAP_VF26 = 148 -IH_PERF_SEL_RB0_WPTR_WRAP_VF27 = 149 -IH_PERF_SEL_RB0_WPTR_WRAP_VF28 = 150 -IH_PERF_SEL_RB0_WPTR_WRAP_VF29 = 151 -IH_PERF_SEL_RB0_WPTR_WRAP_VF30 = 152 -IH_PERF_SEL_RB0_RPTR_WRAP_VF0 = 153 -IH_PERF_SEL_RB0_RPTR_WRAP_VF1 = 154 -IH_PERF_SEL_RB0_RPTR_WRAP_VF2 = 155 -IH_PERF_SEL_RB0_RPTR_WRAP_VF3 = 156 -IH_PERF_SEL_RB0_RPTR_WRAP_VF4 = 157 -IH_PERF_SEL_RB0_RPTR_WRAP_VF5 = 158 -IH_PERF_SEL_RB0_RPTR_WRAP_VF6 = 159 -IH_PERF_SEL_RB0_RPTR_WRAP_VF7 = 160 -IH_PERF_SEL_RB0_RPTR_WRAP_VF8 = 161 -IH_PERF_SEL_RB0_RPTR_WRAP_VF9 = 162 -IH_PERF_SEL_RB0_RPTR_WRAP_VF10 = 163 -IH_PERF_SEL_RB0_RPTR_WRAP_VF11 = 164 -IH_PERF_SEL_RB0_RPTR_WRAP_VF12 = 165 -IH_PERF_SEL_RB0_RPTR_WRAP_VF13 = 166 -IH_PERF_SEL_RB0_RPTR_WRAP_VF14 = 167 -IH_PERF_SEL_RB0_RPTR_WRAP_VF15 = 168 -IH_PERF_SEL_RB0_RPTR_WRAP_VF16 = 169 -IH_PERF_SEL_RB0_RPTR_WRAP_VF17 = 170 -IH_PERF_SEL_RB0_RPTR_WRAP_VF18 = 171 -IH_PERF_SEL_RB0_RPTR_WRAP_VF19 = 172 -IH_PERF_SEL_RB0_RPTR_WRAP_VF20 = 173 -IH_PERF_SEL_RB0_RPTR_WRAP_VF21 = 174 -IH_PERF_SEL_RB0_RPTR_WRAP_VF22 = 175 -IH_PERF_SEL_RB0_RPTR_WRAP_VF23 = 176 -IH_PERF_SEL_RB0_RPTR_WRAP_VF24 = 177 -IH_PERF_SEL_RB0_RPTR_WRAP_VF25 = 178 -IH_PERF_SEL_RB0_RPTR_WRAP_VF26 = 179 -IH_PERF_SEL_RB0_RPTR_WRAP_VF27 = 180 -IH_PERF_SEL_RB0_RPTR_WRAP_VF28 = 181 -IH_PERF_SEL_RB0_RPTR_WRAP_VF29 = 182 -IH_PERF_SEL_RB0_RPTR_WRAP_VF30 = 183 -IH_PERF_SEL_BIF_LINE0_RISING_VF0 = 184 -IH_PERF_SEL_BIF_LINE0_RISING_VF1 = 185 -IH_PERF_SEL_BIF_LINE0_RISING_VF2 = 186 -IH_PERF_SEL_BIF_LINE0_RISING_VF3 = 187 -IH_PERF_SEL_BIF_LINE0_RISING_VF4 = 188 -IH_PERF_SEL_BIF_LINE0_RISING_VF5 = 189 -IH_PERF_SEL_BIF_LINE0_RISING_VF6 = 190 -IH_PERF_SEL_BIF_LINE0_RISING_VF7 = 191 -IH_PERF_SEL_BIF_LINE0_RISING_VF8 = 192 -IH_PERF_SEL_BIF_LINE0_RISING_VF9 = 193 -IH_PERF_SEL_BIF_LINE0_RISING_VF10 = 194 -IH_PERF_SEL_BIF_LINE0_RISING_VF11 = 195 -IH_PERF_SEL_BIF_LINE0_RISING_VF12 = 196 -IH_PERF_SEL_BIF_LINE0_RISING_VF13 = 197 -IH_PERF_SEL_BIF_LINE0_RISING_VF14 = 198 -IH_PERF_SEL_BIF_LINE0_RISING_VF15 = 199 -IH_PERF_SEL_BIF_LINE0_RISING_VF16 = 200 -IH_PERF_SEL_BIF_LINE0_RISING_VF17 = 201 -IH_PERF_SEL_BIF_LINE0_RISING_VF18 = 202 -IH_PERF_SEL_BIF_LINE0_RISING_VF19 = 203 -IH_PERF_SEL_BIF_LINE0_RISING_VF20 = 204 -IH_PERF_SEL_BIF_LINE0_RISING_VF21 = 205 -IH_PERF_SEL_BIF_LINE0_RISING_VF22 = 206 -IH_PERF_SEL_BIF_LINE0_RISING_VF23 = 207 -IH_PERF_SEL_BIF_LINE0_RISING_VF24 = 208 -IH_PERF_SEL_BIF_LINE0_RISING_VF25 = 209 -IH_PERF_SEL_BIF_LINE0_RISING_VF26 = 210 -IH_PERF_SEL_BIF_LINE0_RISING_VF27 = 211 -IH_PERF_SEL_BIF_LINE0_RISING_VF28 = 212 -IH_PERF_SEL_BIF_LINE0_RISING_VF29 = 213 -IH_PERF_SEL_BIF_LINE0_RISING_VF30 = 214 -IH_PERF_SEL_BIF_LINE0_FALLING_VF0 = 215 -IH_PERF_SEL_BIF_LINE0_FALLING_VF1 = 216 -IH_PERF_SEL_BIF_LINE0_FALLING_VF2 = 217 -IH_PERF_SEL_BIF_LINE0_FALLING_VF3 = 218 -IH_PERF_SEL_BIF_LINE0_FALLING_VF4 = 219 -IH_PERF_SEL_BIF_LINE0_FALLING_VF5 = 220 -IH_PERF_SEL_BIF_LINE0_FALLING_VF6 = 221 -IH_PERF_SEL_BIF_LINE0_FALLING_VF7 = 222 -IH_PERF_SEL_BIF_LINE0_FALLING_VF8 = 223 -IH_PERF_SEL_BIF_LINE0_FALLING_VF9 = 224 -IH_PERF_SEL_BIF_LINE0_FALLING_VF10 = 225 -IH_PERF_SEL_BIF_LINE0_FALLING_VF11 = 226 -IH_PERF_SEL_BIF_LINE0_FALLING_VF12 = 227 -IH_PERF_SEL_BIF_LINE0_FALLING_VF13 = 228 -IH_PERF_SEL_BIF_LINE0_FALLING_VF14 = 229 -IH_PERF_SEL_BIF_LINE0_FALLING_VF15 = 230 -IH_PERF_SEL_BIF_LINE0_FALLING_VF16 = 231 -IH_PERF_SEL_BIF_LINE0_FALLING_VF17 = 232 -IH_PERF_SEL_BIF_LINE0_FALLING_VF18 = 233 -IH_PERF_SEL_BIF_LINE0_FALLING_VF19 = 234 -IH_PERF_SEL_BIF_LINE0_FALLING_VF20 = 235 -IH_PERF_SEL_BIF_LINE0_FALLING_VF21 = 236 -IH_PERF_SEL_BIF_LINE0_FALLING_VF22 = 237 -IH_PERF_SEL_BIF_LINE0_FALLING_VF23 = 238 -IH_PERF_SEL_BIF_LINE0_FALLING_VF24 = 239 -IH_PERF_SEL_BIF_LINE0_FALLING_VF25 = 240 -IH_PERF_SEL_BIF_LINE0_FALLING_VF26 = 241 -IH_PERF_SEL_BIF_LINE0_FALLING_VF27 = 242 -IH_PERF_SEL_BIF_LINE0_FALLING_VF28 = 243 -IH_PERF_SEL_BIF_LINE0_FALLING_VF29 = 244 -IH_PERF_SEL_BIF_LINE0_FALLING_VF30 = 245 -IH_PERF_SEL_CLIENT0_INT = 246 -IH_PERF_SEL_CLIENT1_INT = 247 -IH_PERF_SEL_CLIENT2_INT = 248 -IH_PERF_SEL_CLIENT3_INT = 249 -IH_PERF_SEL_CLIENT4_INT = 250 -IH_PERF_SEL_CLIENT5_INT = 251 -IH_PERF_SEL_CLIENT6_INT = 252 -IH_PERF_SEL_CLIENT7_INT = 253 -IH_PERF_SEL_CLIENT8_INT = 254 -IH_PERF_SEL_CLIENT9_INT = 255 -IH_PERF_SEL_CLIENT10_INT = 256 -IH_PERF_SEL_CLIENT11_INT = 257 -IH_PERF_SEL_CLIENT12_INT = 258 -IH_PERF_SEL_CLIENT13_INT = 259 -IH_PERF_SEL_CLIENT14_INT = 260 -IH_PERF_SEL_CLIENT15_INT = 261 -IH_PERF_SEL_CLIENT16_INT = 262 -IH_PERF_SEL_CLIENT17_INT = 263 -IH_PERF_SEL_CLIENT18_INT = 264 -IH_PERF_SEL_CLIENT19_INT = 265 -IH_PERF_SEL_CLIENT20_INT = 266 -IH_PERF_SEL_CLIENT21_INT = 267 -IH_PERF_SEL_CLIENT22_INT = 268 -IH_PERF_SEL_CLIENT23_INT = 269 -IH_PERF_SEL_CLIENT24_INT = 270 -IH_PERF_SEL_CLIENT25_INT = 271 -IH_PERF_SEL_CLIENT26_INT = 272 -IH_PERF_SEL_CLIENT27_INT = 273 -IH_PERF_SEL_CLIENT28_INT = 274 -IH_PERF_SEL_CLIENT29_INT = 275 -IH_PERF_SEL_CLIENT30_INT = 276 -IH_PERF_SEL_CLIENT31_INT = 277 -IH_PERF_SEL_RB1_FULL_VF0 = 278 -IH_PERF_SEL_RB1_FULL_VF1 = 279 -IH_PERF_SEL_RB1_FULL_VF2 = 280 -IH_PERF_SEL_RB1_FULL_VF3 = 281 -IH_PERF_SEL_RB1_FULL_VF4 = 282 -IH_PERF_SEL_RB1_FULL_VF5 = 283 -IH_PERF_SEL_RB1_FULL_VF6 = 284 -IH_PERF_SEL_RB1_FULL_VF7 = 285 -IH_PERF_SEL_RB1_FULL_VF8 = 286 -IH_PERF_SEL_RB1_FULL_VF9 = 287 -IH_PERF_SEL_RB1_FULL_VF10 = 288 -IH_PERF_SEL_RB1_FULL_VF11 = 289 -IH_PERF_SEL_RB1_FULL_VF12 = 290 -IH_PERF_SEL_RB1_FULL_VF13 = 291 -IH_PERF_SEL_RB1_FULL_VF14 = 292 -IH_PERF_SEL_RB1_FULL_VF15 = 293 -IH_PERF_SEL_RB1_FULL_VF16 = 294 -IH_PERF_SEL_RB1_FULL_VF17 = 295 -IH_PERF_SEL_RB1_FULL_VF18 = 296 -IH_PERF_SEL_RB1_FULL_VF19 = 297 -IH_PERF_SEL_RB1_FULL_VF20 = 298 -IH_PERF_SEL_RB1_FULL_VF21 = 299 -IH_PERF_SEL_RB1_FULL_VF22 = 300 -IH_PERF_SEL_RB1_FULL_VF23 = 301 -IH_PERF_SEL_RB1_FULL_VF24 = 302 -IH_PERF_SEL_RB1_FULL_VF25 = 303 -IH_PERF_SEL_RB1_FULL_VF26 = 304 -IH_PERF_SEL_RB1_FULL_VF27 = 305 -IH_PERF_SEL_RB1_FULL_VF28 = 306 -IH_PERF_SEL_RB1_FULL_VF29 = 307 -IH_PERF_SEL_RB1_FULL_VF30 = 308 -IH_PERF_SEL_RB1_OVERFLOW_VF0 = 309 -IH_PERF_SEL_RB1_OVERFLOW_VF1 = 310 -IH_PERF_SEL_RB1_OVERFLOW_VF2 = 311 -IH_PERF_SEL_RB1_OVERFLOW_VF3 = 312 -IH_PERF_SEL_RB1_OVERFLOW_VF4 = 313 -IH_PERF_SEL_RB1_OVERFLOW_VF5 = 314 -IH_PERF_SEL_RB1_OVERFLOW_VF6 = 315 -IH_PERF_SEL_RB1_OVERFLOW_VF7 = 316 -IH_PERF_SEL_RB1_OVERFLOW_VF8 = 317 -IH_PERF_SEL_RB1_OVERFLOW_VF9 = 318 -IH_PERF_SEL_RB1_OVERFLOW_VF10 = 319 -IH_PERF_SEL_RB1_OVERFLOW_VF11 = 320 -IH_PERF_SEL_RB1_OVERFLOW_VF12 = 321 -IH_PERF_SEL_RB1_OVERFLOW_VF13 = 322 -IH_PERF_SEL_RB1_OVERFLOW_VF14 = 323 -IH_PERF_SEL_RB1_OVERFLOW_VF15 = 324 -IH_PERF_SEL_RB1_OVERFLOW_VF16 = 325 -IH_PERF_SEL_RB1_OVERFLOW_VF17 = 326 -IH_PERF_SEL_RB1_OVERFLOW_VF18 = 327 -IH_PERF_SEL_RB1_OVERFLOW_VF19 = 328 -IH_PERF_SEL_RB1_OVERFLOW_VF20 = 329 -IH_PERF_SEL_RB1_OVERFLOW_VF21 = 330 -IH_PERF_SEL_RB1_OVERFLOW_VF22 = 331 -IH_PERF_SEL_RB1_OVERFLOW_VF23 = 332 -IH_PERF_SEL_RB1_OVERFLOW_VF24 = 333 -IH_PERF_SEL_RB1_OVERFLOW_VF25 = 334 -IH_PERF_SEL_RB1_OVERFLOW_VF26 = 335 -IH_PERF_SEL_RB1_OVERFLOW_VF27 = 336 -IH_PERF_SEL_RB1_OVERFLOW_VF28 = 337 -IH_PERF_SEL_RB1_OVERFLOW_VF29 = 338 -IH_PERF_SEL_RB1_OVERFLOW_VF30 = 339 -IH_PERF_SEL_RB1_WPTR_WRAP_VF0 = 340 -IH_PERF_SEL_RB1_WPTR_WRAP_VF1 = 341 -IH_PERF_SEL_RB1_WPTR_WRAP_VF2 = 342 -IH_PERF_SEL_RB1_WPTR_WRAP_VF3 = 343 -IH_PERF_SEL_RB1_WPTR_WRAP_VF4 = 344 -IH_PERF_SEL_RB1_WPTR_WRAP_VF5 = 345 -IH_PERF_SEL_RB1_WPTR_WRAP_VF6 = 346 -IH_PERF_SEL_RB1_WPTR_WRAP_VF7 = 347 -IH_PERF_SEL_RB1_WPTR_WRAP_VF8 = 348 -IH_PERF_SEL_RB1_WPTR_WRAP_VF9 = 349 -IH_PERF_SEL_RB1_WPTR_WRAP_VF10 = 350 -IH_PERF_SEL_RB1_WPTR_WRAP_VF11 = 351 -IH_PERF_SEL_RB1_WPTR_WRAP_VF12 = 352 -IH_PERF_SEL_RB1_WPTR_WRAP_VF13 = 353 -IH_PERF_SEL_RB1_WPTR_WRAP_VF14 = 354 -IH_PERF_SEL_RB1_WPTR_WRAP_VF15 = 355 -IH_PERF_SEL_RB1_WPTR_WRAP_VF16 = 356 -IH_PERF_SEL_RB1_WPTR_WRAP_VF17 = 357 -IH_PERF_SEL_RB1_WPTR_WRAP_VF18 = 358 -IH_PERF_SEL_RB1_WPTR_WRAP_VF19 = 359 -IH_PERF_SEL_RB1_WPTR_WRAP_VF20 = 360 -IH_PERF_SEL_RB1_WPTR_WRAP_VF21 = 361 -IH_PERF_SEL_RB1_WPTR_WRAP_VF22 = 362 -IH_PERF_SEL_RB1_WPTR_WRAP_VF23 = 363 -IH_PERF_SEL_RB1_WPTR_WRAP_VF24 = 364 -IH_PERF_SEL_RB1_WPTR_WRAP_VF25 = 365 -IH_PERF_SEL_RB1_WPTR_WRAP_VF26 = 366 -IH_PERF_SEL_RB1_WPTR_WRAP_VF27 = 367 -IH_PERF_SEL_RB1_WPTR_WRAP_VF28 = 368 -IH_PERF_SEL_RB1_WPTR_WRAP_VF29 = 369 -IH_PERF_SEL_RB1_WPTR_WRAP_VF30 = 370 -IH_PERF_SEL_RB1_RPTR_WRAP_VF0 = 371 -IH_PERF_SEL_RB1_RPTR_WRAP_VF1 = 372 -IH_PERF_SEL_RB1_RPTR_WRAP_VF2 = 373 -IH_PERF_SEL_RB1_RPTR_WRAP_VF3 = 374 -IH_PERF_SEL_RB1_RPTR_WRAP_VF4 = 375 -IH_PERF_SEL_RB1_RPTR_WRAP_VF5 = 376 -IH_PERF_SEL_RB1_RPTR_WRAP_VF6 = 377 -IH_PERF_SEL_RB1_RPTR_WRAP_VF7 = 378 -IH_PERF_SEL_RB1_RPTR_WRAP_VF8 = 379 -IH_PERF_SEL_RB1_RPTR_WRAP_VF9 = 380 -IH_PERF_SEL_RB1_RPTR_WRAP_VF10 = 381 -IH_PERF_SEL_RB1_RPTR_WRAP_VF11 = 382 -IH_PERF_SEL_RB1_RPTR_WRAP_VF12 = 383 -IH_PERF_SEL_RB1_RPTR_WRAP_VF13 = 384 -IH_PERF_SEL_RB1_RPTR_WRAP_VF14 = 385 -IH_PERF_SEL_RB1_RPTR_WRAP_VF15 = 386 -IH_PERF_SEL_RB1_RPTR_WRAP_VF16 = 387 -IH_PERF_SEL_RB1_RPTR_WRAP_VF17 = 388 -IH_PERF_SEL_RB1_RPTR_WRAP_VF18 = 389 -IH_PERF_SEL_RB1_RPTR_WRAP_VF19 = 390 -IH_PERF_SEL_RB1_RPTR_WRAP_VF20 = 391 -IH_PERF_SEL_RB1_RPTR_WRAP_VF21 = 392 -IH_PERF_SEL_RB1_RPTR_WRAP_VF22 = 393 -IH_PERF_SEL_RB1_RPTR_WRAP_VF23 = 394 -IH_PERF_SEL_RB1_RPTR_WRAP_VF24 = 395 -IH_PERF_SEL_RB1_RPTR_WRAP_VF25 = 396 -IH_PERF_SEL_RB1_RPTR_WRAP_VF26 = 397 -IH_PERF_SEL_RB1_RPTR_WRAP_VF27 = 398 -IH_PERF_SEL_RB1_RPTR_WRAP_VF28 = 399 -IH_PERF_SEL_RB1_RPTR_WRAP_VF29 = 400 -IH_PERF_SEL_RB1_RPTR_WRAP_VF30 = 401 -IH_PERF_SEL_RB2_FULL_VF0 = 402 -IH_PERF_SEL_RB2_FULL_VF1 = 403 -IH_PERF_SEL_RB2_FULL_VF2 = 404 -IH_PERF_SEL_RB2_FULL_VF3 = 405 -IH_PERF_SEL_RB2_FULL_VF4 = 406 -IH_PERF_SEL_RB2_FULL_VF5 = 407 -IH_PERF_SEL_RB2_FULL_VF6 = 408 -IH_PERF_SEL_RB2_FULL_VF7 = 409 -IH_PERF_SEL_RB2_FULL_VF8 = 410 -IH_PERF_SEL_RB2_FULL_VF9 = 411 -IH_PERF_SEL_RB2_FULL_VF10 = 412 -IH_PERF_SEL_RB2_FULL_VF11 = 413 -IH_PERF_SEL_RB2_FULL_VF12 = 414 -IH_PERF_SEL_RB2_FULL_VF13 = 415 -IH_PERF_SEL_RB2_FULL_VF14 = 416 -IH_PERF_SEL_RB2_FULL_VF15 = 417 -IH_PERF_SEL_RB2_FULL_VF16 = 418 -IH_PERF_SEL_RB2_FULL_VF17 = 419 -IH_PERF_SEL_RB2_FULL_VF18 = 420 -IH_PERF_SEL_RB2_FULL_VF19 = 421 -IH_PERF_SEL_RB2_FULL_VF20 = 422 -IH_PERF_SEL_RB2_FULL_VF21 = 423 -IH_PERF_SEL_RB2_FULL_VF22 = 424 -IH_PERF_SEL_RB2_FULL_VF23 = 425 -IH_PERF_SEL_RB2_FULL_VF24 = 426 -IH_PERF_SEL_RB2_FULL_VF25 = 427 -IH_PERF_SEL_RB2_FULL_VF26 = 428 -IH_PERF_SEL_RB2_FULL_VF27 = 429 -IH_PERF_SEL_RB2_FULL_VF28 = 430 -IH_PERF_SEL_RB2_FULL_VF29 = 431 -IH_PERF_SEL_RB2_FULL_VF30 = 432 -IH_PERF_SEL_RB2_OVERFLOW_VF0 = 433 -IH_PERF_SEL_RB2_OVERFLOW_VF1 = 434 -IH_PERF_SEL_RB2_OVERFLOW_VF2 = 435 -IH_PERF_SEL_RB2_OVERFLOW_VF3 = 436 -IH_PERF_SEL_RB2_OVERFLOW_VF4 = 437 -IH_PERF_SEL_RB2_OVERFLOW_VF5 = 438 -IH_PERF_SEL_RB2_OVERFLOW_VF6 = 439 -IH_PERF_SEL_RB2_OVERFLOW_VF7 = 440 -IH_PERF_SEL_RB2_OVERFLOW_VF8 = 441 -IH_PERF_SEL_RB2_OVERFLOW_VF9 = 442 -IH_PERF_SEL_RB2_OVERFLOW_VF10 = 443 -IH_PERF_SEL_RB2_OVERFLOW_VF11 = 444 -IH_PERF_SEL_RB2_OVERFLOW_VF12 = 445 -IH_PERF_SEL_RB2_OVERFLOW_VF13 = 446 -IH_PERF_SEL_RB2_OVERFLOW_VF14 = 447 -IH_PERF_SEL_RB2_OVERFLOW_VF15 = 448 -IH_PERF_SEL_RB2_OVERFLOW_VF16 = 449 -IH_PERF_SEL_RB2_OVERFLOW_VF17 = 450 -IH_PERF_SEL_RB2_OVERFLOW_VF18 = 451 -IH_PERF_SEL_RB2_OVERFLOW_VF19 = 452 -IH_PERF_SEL_RB2_OVERFLOW_VF20 = 453 -IH_PERF_SEL_RB2_OVERFLOW_VF21 = 454 -IH_PERF_SEL_RB2_OVERFLOW_VF22 = 455 -IH_PERF_SEL_RB2_OVERFLOW_VF23 = 456 -IH_PERF_SEL_RB2_OVERFLOW_VF24 = 457 -IH_PERF_SEL_RB2_OVERFLOW_VF25 = 458 -IH_PERF_SEL_RB2_OVERFLOW_VF26 = 459 -IH_PERF_SEL_RB2_OVERFLOW_VF27 = 460 -IH_PERF_SEL_RB2_OVERFLOW_VF28 = 461 -IH_PERF_SEL_RB2_OVERFLOW_VF29 = 462 -IH_PERF_SEL_RB2_OVERFLOW_VF30 = 463 -IH_PERF_SEL_RB2_WPTR_WRAP_VF0 = 464 -IH_PERF_SEL_RB2_WPTR_WRAP_VF1 = 465 -IH_PERF_SEL_RB2_WPTR_WRAP_VF2 = 466 -IH_PERF_SEL_RB2_WPTR_WRAP_VF3 = 467 -IH_PERF_SEL_RB2_WPTR_WRAP_VF4 = 468 -IH_PERF_SEL_RB2_WPTR_WRAP_VF5 = 469 -IH_PERF_SEL_RB2_WPTR_WRAP_VF6 = 470 -IH_PERF_SEL_RB2_WPTR_WRAP_VF7 = 471 -IH_PERF_SEL_RB2_WPTR_WRAP_VF8 = 472 -IH_PERF_SEL_RB2_WPTR_WRAP_VF9 = 473 -IH_PERF_SEL_RB2_WPTR_WRAP_VF10 = 474 -IH_PERF_SEL_RB2_WPTR_WRAP_VF11 = 475 -IH_PERF_SEL_RB2_WPTR_WRAP_VF12 = 476 -IH_PERF_SEL_RB2_WPTR_WRAP_VF13 = 477 -IH_PERF_SEL_RB2_WPTR_WRAP_VF14 = 478 -IH_PERF_SEL_RB2_WPTR_WRAP_VF15 = 479 -IH_PERF_SEL_RB2_WPTR_WRAP_VF16 = 480 -IH_PERF_SEL_RB2_WPTR_WRAP_VF17 = 481 -IH_PERF_SEL_RB2_WPTR_WRAP_VF18 = 482 -IH_PERF_SEL_RB2_WPTR_WRAP_VF19 = 483 -IH_PERF_SEL_RB2_WPTR_WRAP_VF20 = 484 -IH_PERF_SEL_RB2_WPTR_WRAP_VF21 = 485 -IH_PERF_SEL_RB2_WPTR_WRAP_VF22 = 486 -IH_PERF_SEL_RB2_WPTR_WRAP_VF23 = 487 -IH_PERF_SEL_RB2_WPTR_WRAP_VF24 = 488 -IH_PERF_SEL_RB2_WPTR_WRAP_VF25 = 489 -IH_PERF_SEL_RB2_WPTR_WRAP_VF26 = 490 -IH_PERF_SEL_RB2_WPTR_WRAP_VF27 = 491 -IH_PERF_SEL_RB2_WPTR_WRAP_VF28 = 492 -IH_PERF_SEL_RB2_WPTR_WRAP_VF29 = 493 -IH_PERF_SEL_RB2_WPTR_WRAP_VF30 = 494 -IH_PERF_SEL_RB2_RPTR_WRAP_VF0 = 495 -IH_PERF_SEL_RB2_RPTR_WRAP_VF1 = 496 -IH_PERF_SEL_RB2_RPTR_WRAP_VF2 = 497 -IH_PERF_SEL_RB2_RPTR_WRAP_VF3 = 498 -IH_PERF_SEL_RB2_RPTR_WRAP_VF4 = 499 -IH_PERF_SEL_RB2_RPTR_WRAP_VF5 = 500 -IH_PERF_SEL_RB2_RPTR_WRAP_VF6 = 501 -IH_PERF_SEL_RB2_RPTR_WRAP_VF7 = 502 -IH_PERF_SEL_RB2_RPTR_WRAP_VF8 = 503 -IH_PERF_SEL_RB2_RPTR_WRAP_VF9 = 504 -IH_PERF_SEL_RB2_RPTR_WRAP_VF10 = 505 -IH_PERF_SEL_RB2_RPTR_WRAP_VF11 = 506 -IH_PERF_SEL_RB2_RPTR_WRAP_VF12 = 507 -IH_PERF_SEL_RB2_RPTR_WRAP_VF13 = 508 -IH_PERF_SEL_RB2_RPTR_WRAP_VF14 = 509 -IH_PERF_SEL_RB2_RPTR_WRAP_VF15 = 510 -IH_PERF_SEL_RB2_RPTR_WRAP_VF16 = 511 -IH_PERF_SEL_RB2_RPTR_WRAP_VF17 = 512 -IH_PERF_SEL_RB2_RPTR_WRAP_VF18 = 513 -IH_PERF_SEL_RB2_RPTR_WRAP_VF19 = 514 -IH_PERF_SEL_RB2_RPTR_WRAP_VF20 = 515 -IH_PERF_SEL_RB2_RPTR_WRAP_VF21 = 516 -IH_PERF_SEL_RB2_RPTR_WRAP_VF22 = 517 -IH_PERF_SEL_RB2_RPTR_WRAP_VF23 = 518 -IH_PERF_SEL_RB2_RPTR_WRAP_VF24 = 519 -IH_PERF_SEL_RB2_RPTR_WRAP_VF25 = 520 -IH_PERF_SEL_RB2_RPTR_WRAP_VF26 = 521 -IH_PERF_SEL_RB2_RPTR_WRAP_VF27 = 522 -IH_PERF_SEL_RB2_RPTR_WRAP_VF28 = 523 -IH_PERF_SEL_RB2_RPTR_WRAP_VF29 = 524 -IH_PERF_SEL_RB2_RPTR_WRAP_VF30 = 525 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP = 526 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF0 = 527 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF1 = 528 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF2 = 529 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF3 = 530 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF4 = 531 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF5 = 532 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF6 = 533 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF7 = 534 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF8 = 535 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF9 = 536 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF10 = 537 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF11 = 538 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF12 = 539 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF13 = 540 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF14 = 541 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF15 = 542 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF16 = 543 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF17 = 544 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF18 = 545 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF19 = 546 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF20 = 547 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF21 = 548 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF22 = 549 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF23 = 550 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF24 = 551 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF25 = 552 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF26 = 553 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF27 = 554 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF28 = 555 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF29 = 556 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF30 = 557 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP = 558 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF0 = 559 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF1 = 560 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF2 = 561 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF3 = 562 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF4 = 563 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF5 = 564 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF6 = 565 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF7 = 566 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF8 = 567 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF9 = 568 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF10 = 569 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF11 = 570 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF12 = 571 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF13 = 572 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF14 = 573 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF15 = 574 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF16 = 575 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF17 = 576 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF18 = 577 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF19 = 578 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF20 = 579 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF21 = 580 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF22 = 581 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF23 = 582 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF24 = 583 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF25 = 584 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF26 = 585 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF27 = 586 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF28 = 587 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF29 = 588 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF30 = 589 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP = 590 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF0 = 591 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF1 = 592 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF2 = 593 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF3 = 594 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF4 = 595 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF5 = 596 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF6 = 597 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF7 = 598 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF8 = 599 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF9 = 600 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF10 = 601 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF11 = 602 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF12 = 603 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF13 = 604 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF14 = 605 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF15 = 606 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF16 = 607 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF17 = 608 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF18 = 609 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF19 = 610 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF20 = 611 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF21 = 612 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF22 = 613 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF23 = 614 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF24 = 615 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF25 = 616 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF26 = 617 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF27 = 618 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF28 = 619 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF29 = 620 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF30 = 621 -IH_PERF_SEL_RB0_LOAD_RPTR = 622 -IH_PERF_SEL_RB0_LOAD_RPTR_VF0 = 623 -IH_PERF_SEL_RB0_LOAD_RPTR_VF1 = 624 -IH_PERF_SEL_RB0_LOAD_RPTR_VF2 = 625 -IH_PERF_SEL_RB0_LOAD_RPTR_VF3 = 626 -IH_PERF_SEL_RB0_LOAD_RPTR_VF4 = 627 -IH_PERF_SEL_RB0_LOAD_RPTR_VF5 = 628 -IH_PERF_SEL_RB0_LOAD_RPTR_VF6 = 629 -IH_PERF_SEL_RB0_LOAD_RPTR_VF7 = 630 -IH_PERF_SEL_RB0_LOAD_RPTR_VF8 = 631 -IH_PERF_SEL_RB0_LOAD_RPTR_VF9 = 632 -IH_PERF_SEL_RB0_LOAD_RPTR_VF10 = 633 -IH_PERF_SEL_RB0_LOAD_RPTR_VF11 = 634 -IH_PERF_SEL_RB0_LOAD_RPTR_VF12 = 635 -IH_PERF_SEL_RB0_LOAD_RPTR_VF13 = 636 -IH_PERF_SEL_RB0_LOAD_RPTR_VF14 = 637 -IH_PERF_SEL_RB0_LOAD_RPTR_VF15 = 638 -IH_PERF_SEL_RB0_LOAD_RPTR_VF16 = 639 -IH_PERF_SEL_RB0_LOAD_RPTR_VF17 = 640 -IH_PERF_SEL_RB0_LOAD_RPTR_VF18 = 641 -IH_PERF_SEL_RB0_LOAD_RPTR_VF19 = 642 -IH_PERF_SEL_RB0_LOAD_RPTR_VF20 = 643 -IH_PERF_SEL_RB0_LOAD_RPTR_VF21 = 644 -IH_PERF_SEL_RB0_LOAD_RPTR_VF22 = 645 -IH_PERF_SEL_RB0_LOAD_RPTR_VF23 = 646 -IH_PERF_SEL_RB0_LOAD_RPTR_VF24 = 647 -IH_PERF_SEL_RB0_LOAD_RPTR_VF25 = 648 -IH_PERF_SEL_RB0_LOAD_RPTR_VF26 = 649 -IH_PERF_SEL_RB0_LOAD_RPTR_VF27 = 650 -IH_PERF_SEL_RB0_LOAD_RPTR_VF28 = 651 -IH_PERF_SEL_RB0_LOAD_RPTR_VF29 = 652 -IH_PERF_SEL_RB0_LOAD_RPTR_VF30 = 653 -IH_PERF_SEL_RB1_LOAD_RPTR = 654 -IH_PERF_SEL_RB1_LOAD_RPTR_VF0 = 655 -IH_PERF_SEL_RB1_LOAD_RPTR_VF1 = 656 -IH_PERF_SEL_RB1_LOAD_RPTR_VF2 = 657 -IH_PERF_SEL_RB1_LOAD_RPTR_VF3 = 658 -IH_PERF_SEL_RB1_LOAD_RPTR_VF4 = 659 -IH_PERF_SEL_RB1_LOAD_RPTR_VF5 = 660 -IH_PERF_SEL_RB1_LOAD_RPTR_VF6 = 661 -IH_PERF_SEL_RB1_LOAD_RPTR_VF7 = 662 -IH_PERF_SEL_RB1_LOAD_RPTR_VF8 = 663 -IH_PERF_SEL_RB1_LOAD_RPTR_VF9 = 664 -IH_PERF_SEL_RB1_LOAD_RPTR_VF10 = 665 -IH_PERF_SEL_RB1_LOAD_RPTR_VF11 = 666 -IH_PERF_SEL_RB1_LOAD_RPTR_VF12 = 667 -IH_PERF_SEL_RB1_LOAD_RPTR_VF13 = 668 -IH_PERF_SEL_RB1_LOAD_RPTR_VF14 = 669 -IH_PERF_SEL_RB1_LOAD_RPTR_VF15 = 670 -IH_PERF_SEL_RB1_LOAD_RPTR_VF16 = 671 -IH_PERF_SEL_RB1_LOAD_RPTR_VF17 = 672 -IH_PERF_SEL_RB1_LOAD_RPTR_VF18 = 673 -IH_PERF_SEL_RB1_LOAD_RPTR_VF19 = 674 -IH_PERF_SEL_RB1_LOAD_RPTR_VF20 = 675 -IH_PERF_SEL_RB1_LOAD_RPTR_VF21 = 676 -IH_PERF_SEL_RB1_LOAD_RPTR_VF22 = 677 -IH_PERF_SEL_RB1_LOAD_RPTR_VF23 = 678 -IH_PERF_SEL_RB1_LOAD_RPTR_VF24 = 679 -IH_PERF_SEL_RB1_LOAD_RPTR_VF25 = 680 -IH_PERF_SEL_RB1_LOAD_RPTR_VF26 = 681 -IH_PERF_SEL_RB1_LOAD_RPTR_VF27 = 682 -IH_PERF_SEL_RB1_LOAD_RPTR_VF28 = 683 -IH_PERF_SEL_RB1_LOAD_RPTR_VF29 = 684 -IH_PERF_SEL_RB1_LOAD_RPTR_VF30 = 685 -IH_PERF_SEL_RB2_LOAD_RPTR = 686 -IH_PERF_SEL_RB2_LOAD_RPTR_VF0 = 687 -IH_PERF_SEL_RB2_LOAD_RPTR_VF1 = 688 -IH_PERF_SEL_RB2_LOAD_RPTR_VF2 = 689 -IH_PERF_SEL_RB2_LOAD_RPTR_VF3 = 690 -IH_PERF_SEL_RB2_LOAD_RPTR_VF4 = 691 -IH_PERF_SEL_RB2_LOAD_RPTR_VF5 = 692 -IH_PERF_SEL_RB2_LOAD_RPTR_VF6 = 693 -IH_PERF_SEL_RB2_LOAD_RPTR_VF7 = 694 -IH_PERF_SEL_RB2_LOAD_RPTR_VF8 = 695 -IH_PERF_SEL_RB2_LOAD_RPTR_VF9 = 696 -IH_PERF_SEL_RB2_LOAD_RPTR_VF10 = 697 -IH_PERF_SEL_RB2_LOAD_RPTR_VF11 = 698 -IH_PERF_SEL_RB2_LOAD_RPTR_VF12 = 699 -IH_PERF_SEL_RB2_LOAD_RPTR_VF13 = 700 -IH_PERF_SEL_RB2_LOAD_RPTR_VF14 = 701 -IH_PERF_SEL_RB2_LOAD_RPTR_VF15 = 702 -IH_PERF_SEL_RB2_LOAD_RPTR_VF16 = 703 -IH_PERF_SEL_RB2_LOAD_RPTR_VF17 = 704 -IH_PERF_SEL_RB2_LOAD_RPTR_VF18 = 705 -IH_PERF_SEL_RB2_LOAD_RPTR_VF19 = 706 -IH_PERF_SEL_RB2_LOAD_RPTR_VF20 = 707 -IH_PERF_SEL_RB2_LOAD_RPTR_VF21 = 708 -IH_PERF_SEL_RB2_LOAD_RPTR_VF22 = 709 -IH_PERF_SEL_RB2_LOAD_RPTR_VF23 = 710 -IH_PERF_SEL_RB2_LOAD_RPTR_VF24 = 711 -IH_PERF_SEL_RB2_LOAD_RPTR_VF25 = 712 -IH_PERF_SEL_RB2_LOAD_RPTR_VF26 = 713 -IH_PERF_SEL_RB2_LOAD_RPTR_VF27 = 714 -IH_PERF_SEL_RB2_LOAD_RPTR_VF28 = 715 -IH_PERF_SEL_RB2_LOAD_RPTR_VF29 = 716 -IH_PERF_SEL_RB2_LOAD_RPTR_VF30 = 717 -IH_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'IH_CLIENT_TYPE' -IH_CLIENT_TYPE__enumvalues = { - 0: 'IH_GFX_VMID_CLIENT', - 1: 'IH_MM_VMID_CLIENT', - 2: 'IH_MULTI_VMID_CLIENT', - 3: 'IH_CLIENT_TYPE_RESERVED', -} -IH_GFX_VMID_CLIENT = 0 -IH_MM_VMID_CLIENT = 1 -IH_MULTI_VMID_CLIENT = 2 -IH_CLIENT_TYPE_RESERVED = 3 -IH_CLIENT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'IH_RING_ID' -IH_RING_ID__enumvalues = { - 0: 'IH_RING_ID_INTERRUPT', - 1: 'IH_RING_ID_REQUEST', - 2: 'IH_RING_ID_TRANSLATION', - 3: 'IH_RING_ID_RESERVED', -} -IH_RING_ID_INTERRUPT = 0 -IH_RING_ID_REQUEST = 1 -IH_RING_ID_TRANSLATION = 2 -IH_RING_ID_RESERVED = 3 -IH_RING_ID = ctypes.c_uint32 # enum - -# values for enumeration 'IH_VF_RB_SELECT' -IH_VF_RB_SELECT__enumvalues = { - 0: 'IH_VF_RB_SELECT_CLIENT_FCN_ID', - 1: 'IH_VF_RB_SELECT_IH_FCN_ID', - 2: 'IH_VF_RB_SELECT_PF', - 3: 'IH_VF_RB_SELECT_RESERVED', -} -IH_VF_RB_SELECT_CLIENT_FCN_ID = 0 -IH_VF_RB_SELECT_IH_FCN_ID = 1 -IH_VF_RB_SELECT_PF = 2 -IH_VF_RB_SELECT_RESERVED = 3 -IH_VF_RB_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'IH_INTERFACE_TYPE' -IH_INTERFACE_TYPE__enumvalues = { - 0: 'IH_LEGACY_INTERFACE', - 1: 'IH_REGISTER_WRITE_INTERFACE', -} -IH_LEGACY_INTERFACE = 0 -IH_REGISTER_WRITE_INTERFACE = 1 -IH_INTERFACE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SEM_PERF_SEL' -SEM_PERF_SEL__enumvalues = { - 0: 'SEM_PERF_SEL_CYCLE', - 1: 'SEM_PERF_SEL_IDLE', - 2: 'SEM_PERF_SEL_SDMA0_REQ_SIGNAL', - 3: 'SEM_PERF_SEL_SDMA1_REQ_SIGNAL', - 4: 'SEM_PERF_SEL_UVD_REQ_SIGNAL', - 5: 'SEM_PERF_SEL_VCE0_REQ_SIGNAL', - 6: 'SEM_PERF_SEL_ACP_REQ_SIGNAL', - 7: 'SEM_PERF_SEL_ISP_REQ_SIGNAL', - 8: 'SEM_PERF_SEL_VCE1_REQ_SIGNAL', - 9: 'SEM_PERF_SEL_VP8_REQ_SIGNAL', - 10: 'SEM_PERF_SEL_CPG_E0_REQ_SIGNAL', - 11: 'SEM_PERF_SEL_CPG_E1_REQ_SIGNAL', - 12: 'SEM_PERF_SEL_CPC1_IMME_E0_REQ_SIGNAL', - 13: 'SEM_PERF_SEL_CPC1_IMME_E1_REQ_SIGNAL', - 14: 'SEM_PERF_SEL_CPC1_IMME_E2_REQ_SIGNAL', - 15: 'SEM_PERF_SEL_CPC1_IMME_E3_REQ_SIGNAL', - 16: 'SEM_PERF_SEL_CPC2_IMME_E0_REQ_SIGNAL', - 17: 'SEM_PERF_SEL_CPC2_IMME_E1_REQ_SIGNAL', - 18: 'SEM_PERF_SEL_CPC2_IMME_E2_REQ_SIGNAL', - 19: 'SEM_PERF_SEL_CPC2_IMME_E3_REQ_SIGNAL', - 20: 'SEM_PERF_SEL_SDMA0_REQ_WAIT', - 21: 'SEM_PERF_SEL_SDMA1_REQ_WAIT', - 22: 'SEM_PERF_SEL_UVD_REQ_WAIT', - 23: 'SEM_PERF_SEL_VCE0_REQ_WAIT', - 24: 'SEM_PERF_SEL_ACP_REQ_WAIT', - 25: 'SEM_PERF_SEL_ISP_REQ_WAIT', - 26: 'SEM_PERF_SEL_VCE1_REQ_WAIT', - 27: 'SEM_PERF_SEL_VP8_REQ_WAIT', - 28: 'SEM_PERF_SEL_CPG_E0_REQ_WAIT', - 29: 'SEM_PERF_SEL_CPG_E1_REQ_WAIT', - 30: 'SEM_PERF_SEL_CPC1_IMME_E0_REQ_WAIT', - 31: 'SEM_PERF_SEL_CPC1_IMME_E1_REQ_WAIT', - 32: 'SEM_PERF_SEL_CPC1_IMME_E2_REQ_WAIT', - 33: 'SEM_PERF_SEL_CPC1_IMME_E3_REQ_WAIT', - 34: 'SEM_PERF_SEL_CPC2_IMME_E0_REQ_WAIT', - 35: 'SEM_PERF_SEL_CPC2_IMME_E1_REQ_WAIT', - 36: 'SEM_PERF_SEL_CPC2_IMME_E2_REQ_WAIT', - 37: 'SEM_PERF_SEL_CPC2_IMME_E3_REQ_WAIT', - 38: 'SEM_PERF_SEL_CPC1_OFFL_E0_REQ_WAIT', - 39: 'SEM_PERF_SEL_CPC1_OFFL_E1_REQ_WAIT', - 40: 'SEM_PERF_SEL_CPC1_OFFL_E2_REQ_WAIT', - 41: 'SEM_PERF_SEL_CPC1_OFFL_E3_REQ_WAIT', - 42: 'SEM_PERF_SEL_CPC1_OFFL_E4_REQ_WAIT', - 43: 'SEM_PERF_SEL_CPC1_OFFL_E5_REQ_WAIT', - 44: 'SEM_PERF_SEL_CPC1_OFFL_E6_REQ_WAIT', - 45: 'SEM_PERF_SEL_CPC1_OFFL_E7_REQ_WAIT', - 46: 'SEM_PERF_SEL_CPC1_OFFL_E8_REQ_WAIT', - 47: 'SEM_PERF_SEL_CPC1_OFFL_E9_REQ_WAIT', - 48: 'SEM_PERF_SEL_CPC1_OFFL_E10_REQ_WAIT', - 49: 'SEM_PERF_SEL_CPC1_OFFL_E11_REQ_WAIT', - 50: 'SEM_PERF_SEL_CPC1_OFFL_E12_REQ_WAIT', - 51: 'SEM_PERF_SEL_CPC1_OFFL_E13_REQ_WAIT', - 52: 'SEM_PERF_SEL_CPC1_OFFL_E14_REQ_WAIT', - 53: 'SEM_PERF_SEL_CPC1_OFFL_E15_REQ_WAIT', - 54: 'SEM_PERF_SEL_CPC1_OFFL_E16_REQ_WAIT', - 55: 'SEM_PERF_SEL_CPC1_OFFL_E17_REQ_WAIT', - 56: 'SEM_PERF_SEL_CPC1_OFFL_E18_REQ_WAIT', - 57: 'SEM_PERF_SEL_CPC1_OFFL_E19_REQ_WAIT', - 58: 'SEM_PERF_SEL_CPC1_OFFL_E20_REQ_WAIT', - 59: 'SEM_PERF_SEL_CPC1_OFFL_E21_REQ_WAIT', - 60: 'SEM_PERF_SEL_CPC1_OFFL_E22_REQ_WAIT', - 61: 'SEM_PERF_SEL_CPC1_OFFL_E23_REQ_WAIT', - 62: 'SEM_PERF_SEL_CPC1_OFFL_E24_REQ_WAIT', - 63: 'SEM_PERF_SEL_CPC1_OFFL_E25_REQ_WAIT', - 64: 'SEM_PERF_SEL_CPC1_OFFL_E26_REQ_WAIT', - 65: 'SEM_PERF_SEL_CPC1_OFFL_E27_REQ_WAIT', - 66: 'SEM_PERF_SEL_CPC1_OFFL_E28_REQ_WAIT', - 67: 'SEM_PERF_SEL_CPC1_OFFL_E29_REQ_WAIT', - 68: 'SEM_PERF_SEL_CPC1_OFFL_E30_REQ_WAIT', - 69: 'SEM_PERF_SEL_CPC1_OFFL_E31_REQ_WAIT', - 70: 'SEM_PERF_SEL_CPC2_OFFL_E0_REQ_WAIT', - 71: 'SEM_PERF_SEL_CPC2_OFFL_E1_REQ_WAIT', - 72: 'SEM_PERF_SEL_CPC2_OFFL_E2_REQ_WAIT', - 73: 'SEM_PERF_SEL_CPC2_OFFL_E3_REQ_WAIT', - 74: 'SEM_PERF_SEL_CPC2_OFFL_E4_REQ_WAIT', - 75: 'SEM_PERF_SEL_CPC2_OFFL_E5_REQ_WAIT', - 76: 'SEM_PERF_SEL_CPC2_OFFL_E6_REQ_WAIT', - 77: 'SEM_PERF_SEL_CPC2_OFFL_E7_REQ_WAIT', - 78: 'SEM_PERF_SEL_CPC2_OFFL_E8_REQ_WAIT', - 79: 'SEM_PERF_SEL_CPC2_OFFL_E9_REQ_WAIT', - 80: 'SEM_PERF_SEL_CPC2_OFFL_E10_REQ_WAIT', - 81: 'SEM_PERF_SEL_CPC2_OFFL_E11_REQ_WAIT', - 82: 'SEM_PERF_SEL_CPC2_OFFL_E12_REQ_WAIT', - 83: 'SEM_PERF_SEL_CPC2_OFFL_E13_REQ_WAIT', - 84: 'SEM_PERF_SEL_CPC2_OFFL_E14_REQ_WAIT', - 85: 'SEM_PERF_SEL_CPC2_OFFL_E15_REQ_WAIT', - 86: 'SEM_PERF_SEL_CPC2_OFFL_E16_REQ_WAIT', - 87: 'SEM_PERF_SEL_CPC2_OFFL_E17_REQ_WAIT', - 88: 'SEM_PERF_SEL_CPC2_OFFL_E18_REQ_WAIT', - 89: 'SEM_PERF_SEL_CPC2_OFFL_E19_REQ_WAIT', - 90: 'SEM_PERF_SEL_CPC2_OFFL_E20_REQ_WAIT', - 91: 'SEM_PERF_SEL_CPC2_OFFL_E21_REQ_WAIT', - 92: 'SEM_PERF_SEL_CPC2_OFFL_E22_REQ_WAIT', - 93: 'SEM_PERF_SEL_CPC2_OFFL_E23_REQ_WAIT', - 94: 'SEM_PERF_SEL_CPC2_OFFL_E24_REQ_WAIT', - 95: 'SEM_PERF_SEL_CPC2_OFFL_E25_REQ_WAIT', - 96: 'SEM_PERF_SEL_CPC2_OFFL_E26_REQ_WAIT', - 97: 'SEM_PERF_SEL_CPC2_OFFL_E27_REQ_WAIT', - 98: 'SEM_PERF_SEL_CPC2_OFFL_E28_REQ_WAIT', - 99: 'SEM_PERF_SEL_CPC2_OFFL_E29_REQ_WAIT', - 100: 'SEM_PERF_SEL_CPC2_OFFL_E30_REQ_WAIT', - 101: 'SEM_PERF_SEL_CPC2_OFFL_E31_REQ_WAIT', - 102: 'SEM_PERF_SEL_CPC1_OFFL_E0_POLL_WAIT', - 103: 'SEM_PERF_SEL_CPC1_OFFL_E1_POLL_WAIT', - 104: 'SEM_PERF_SEL_CPC1_OFFL_E2_POLL_WAIT', - 105: 'SEM_PERF_SEL_CPC1_OFFL_E3_POLL_WAIT', - 106: 'SEM_PERF_SEL_CPC1_OFFL_E4_POLL_WAIT', - 107: 'SEM_PERF_SEL_CPC1_OFFL_E5_POLL_WAIT', - 108: 'SEM_PERF_SEL_CPC1_OFFL_E6_POLL_WAIT', - 109: 'SEM_PERF_SEL_CPC1_OFFL_E7_POLL_WAIT', - 110: 'SEM_PERF_SEL_CPC1_OFFL_E8_POLL_WAIT', - 111: 'SEM_PERF_SEL_CPC1_OFFL_E9_POLL_WAIT', - 112: 'SEM_PERF_SEL_CPC1_OFFL_E10_POLL_WAIT', - 113: 'SEM_PERF_SEL_CPC1_OFFL_E11_POLL_WAIT', - 114: 'SEM_PERF_SEL_CPC1_OFFL_E12_POLL_WAIT', - 115: 'SEM_PERF_SEL_CPC1_OFFL_E13_POLL_WAIT', - 116: 'SEM_PERF_SEL_CPC1_OFFL_E14_POLL_WAIT', - 117: 'SEM_PERF_SEL_CPC1_OFFL_E15_POLL_WAIT', - 118: 'SEM_PERF_SEL_CPC1_OFFL_E16_POLL_WAIT', - 119: 'SEM_PERF_SEL_CPC1_OFFL_E17_POLL_WAIT', - 120: 'SEM_PERF_SEL_CPC1_OFFL_E18_POLL_WAIT', - 121: 'SEM_PERF_SEL_CPC1_OFFL_E19_POLL_WAIT', - 122: 'SEM_PERF_SEL_CPC1_OFFL_E20_POLL_WAIT', - 123: 'SEM_PERF_SEL_CPC1_OFFL_E21_POLL_WAIT', - 124: 'SEM_PERF_SEL_CPC1_OFFL_E22_POLL_WAIT', - 125: 'SEM_PERF_SEL_CPC1_OFFL_E23_POLL_WAIT', - 126: 'SEM_PERF_SEL_CPC1_OFFL_E24_POLL_WAIT', - 127: 'SEM_PERF_SEL_CPC1_OFFL_E25_POLL_WAIT', - 128: 'SEM_PERF_SEL_CPC1_OFFL_E26_POLL_WAIT', - 129: 'SEM_PERF_SEL_CPC1_OFFL_E27_POLL_WAIT', - 130: 'SEM_PERF_SEL_CPC1_OFFL_E28_POLL_WAIT', - 131: 'SEM_PERF_SEL_CPC1_OFFL_E29_POLL_WAIT', - 132: 'SEM_PERF_SEL_CPC1_OFFL_E30_POLL_WAIT', - 133: 'SEM_PERF_SEL_CPC1_OFFL_E31_POLL_WAIT', - 134: 'SEM_PERF_SEL_CPC2_OFFL_E0_POLL_WAIT', - 135: 'SEM_PERF_SEL_CPC2_OFFL_E1_POLL_WAIT', - 136: 'SEM_PERF_SEL_CPC2_OFFL_E2_POLL_WAIT', - 137: 'SEM_PERF_SEL_CPC2_OFFL_E3_POLL_WAIT', - 138: 'SEM_PERF_SEL_CPC2_OFFL_E4_POLL_WAIT', - 139: 'SEM_PERF_SEL_CPC2_OFFL_E5_POLL_WAIT', - 140: 'SEM_PERF_SEL_CPC2_OFFL_E6_POLL_WAIT', - 141: 'SEM_PERF_SEL_CPC2_OFFL_E7_POLL_WAIT', - 142: 'SEM_PERF_SEL_CPC2_OFFL_E8_POLL_WAIT', - 143: 'SEM_PERF_SEL_CPC2_OFFL_E9_POLL_WAIT', - 144: 'SEM_PERF_SEL_CPC2_OFFL_E10_POLL_WAIT', - 145: 'SEM_PERF_SEL_CPC2_OFFL_E11_POLL_WAIT', - 146: 'SEM_PERF_SEL_CPC2_OFFL_E12_POLL_WAIT', - 147: 'SEM_PERF_SEL_CPC2_OFFL_E13_POLL_WAIT', - 148: 'SEM_PERF_SEL_CPC2_OFFL_E14_POLL_WAIT', - 149: 'SEM_PERF_SEL_CPC2_OFFL_E15_POLL_WAIT', - 150: 'SEM_PERF_SEL_CPC2_OFFL_E16_POLL_WAIT', - 151: 'SEM_PERF_SEL_CPC2_OFFL_E17_POLL_WAIT', - 152: 'SEM_PERF_SEL_CPC2_OFFL_E18_POLL_WAIT', - 153: 'SEM_PERF_SEL_CPC2_OFFL_E19_POLL_WAIT', - 154: 'SEM_PERF_SEL_CPC2_OFFL_E20_POLL_WAIT', - 155: 'SEM_PERF_SEL_CPC2_OFFL_E21_POLL_WAIT', - 156: 'SEM_PERF_SEL_CPC2_OFFL_E22_POLL_WAIT', - 157: 'SEM_PERF_SEL_CPC2_OFFL_E23_POLL_WAIT', - 158: 'SEM_PERF_SEL_CPC2_OFFL_E24_POLL_WAIT', - 159: 'SEM_PERF_SEL_CPC2_OFFL_E25_POLL_WAIT', - 160: 'SEM_PERF_SEL_CPC2_OFFL_E26_POLL_WAIT', - 161: 'SEM_PERF_SEL_CPC2_OFFL_E27_POLL_WAIT', - 162: 'SEM_PERF_SEL_CPC2_OFFL_E28_POLL_WAIT', - 163: 'SEM_PERF_SEL_CPC2_OFFL_E29_POLL_WAIT', - 164: 'SEM_PERF_SEL_CPC2_OFFL_E30_POLL_WAIT', - 165: 'SEM_PERF_SEL_CPC2_OFFL_E31_POLL_WAIT', - 166: 'SEM_PERF_SEL_MC_RD_REQ', - 167: 'SEM_PERF_SEL_MC_RD_RET', - 168: 'SEM_PERF_SEL_MC_WR_REQ', - 169: 'SEM_PERF_SEL_MC_WR_RET', - 170: 'SEM_PERF_SEL_ATC_REQ', - 171: 'SEM_PERF_SEL_ATC_RET', - 172: 'SEM_PERF_SEL_ATC_XNACK', - 173: 'SEM_PERF_SEL_ATC_INVALIDATION', - 174: 'SEM_PERF_SEL_ATC_VM_INVALIDATION', -} -SEM_PERF_SEL_CYCLE = 0 -SEM_PERF_SEL_IDLE = 1 -SEM_PERF_SEL_SDMA0_REQ_SIGNAL = 2 -SEM_PERF_SEL_SDMA1_REQ_SIGNAL = 3 -SEM_PERF_SEL_UVD_REQ_SIGNAL = 4 -SEM_PERF_SEL_VCE0_REQ_SIGNAL = 5 -SEM_PERF_SEL_ACP_REQ_SIGNAL = 6 -SEM_PERF_SEL_ISP_REQ_SIGNAL = 7 -SEM_PERF_SEL_VCE1_REQ_SIGNAL = 8 -SEM_PERF_SEL_VP8_REQ_SIGNAL = 9 -SEM_PERF_SEL_CPG_E0_REQ_SIGNAL = 10 -SEM_PERF_SEL_CPG_E1_REQ_SIGNAL = 11 -SEM_PERF_SEL_CPC1_IMME_E0_REQ_SIGNAL = 12 -SEM_PERF_SEL_CPC1_IMME_E1_REQ_SIGNAL = 13 -SEM_PERF_SEL_CPC1_IMME_E2_REQ_SIGNAL = 14 -SEM_PERF_SEL_CPC1_IMME_E3_REQ_SIGNAL = 15 -SEM_PERF_SEL_CPC2_IMME_E0_REQ_SIGNAL = 16 -SEM_PERF_SEL_CPC2_IMME_E1_REQ_SIGNAL = 17 -SEM_PERF_SEL_CPC2_IMME_E2_REQ_SIGNAL = 18 -SEM_PERF_SEL_CPC2_IMME_E3_REQ_SIGNAL = 19 -SEM_PERF_SEL_SDMA0_REQ_WAIT = 20 -SEM_PERF_SEL_SDMA1_REQ_WAIT = 21 -SEM_PERF_SEL_UVD_REQ_WAIT = 22 -SEM_PERF_SEL_VCE0_REQ_WAIT = 23 -SEM_PERF_SEL_ACP_REQ_WAIT = 24 -SEM_PERF_SEL_ISP_REQ_WAIT = 25 -SEM_PERF_SEL_VCE1_REQ_WAIT = 26 -SEM_PERF_SEL_VP8_REQ_WAIT = 27 -SEM_PERF_SEL_CPG_E0_REQ_WAIT = 28 -SEM_PERF_SEL_CPG_E1_REQ_WAIT = 29 -SEM_PERF_SEL_CPC1_IMME_E0_REQ_WAIT = 30 -SEM_PERF_SEL_CPC1_IMME_E1_REQ_WAIT = 31 -SEM_PERF_SEL_CPC1_IMME_E2_REQ_WAIT = 32 -SEM_PERF_SEL_CPC1_IMME_E3_REQ_WAIT = 33 -SEM_PERF_SEL_CPC2_IMME_E0_REQ_WAIT = 34 -SEM_PERF_SEL_CPC2_IMME_E1_REQ_WAIT = 35 -SEM_PERF_SEL_CPC2_IMME_E2_REQ_WAIT = 36 -SEM_PERF_SEL_CPC2_IMME_E3_REQ_WAIT = 37 -SEM_PERF_SEL_CPC1_OFFL_E0_REQ_WAIT = 38 -SEM_PERF_SEL_CPC1_OFFL_E1_REQ_WAIT = 39 -SEM_PERF_SEL_CPC1_OFFL_E2_REQ_WAIT = 40 -SEM_PERF_SEL_CPC1_OFFL_E3_REQ_WAIT = 41 -SEM_PERF_SEL_CPC1_OFFL_E4_REQ_WAIT = 42 -SEM_PERF_SEL_CPC1_OFFL_E5_REQ_WAIT = 43 -SEM_PERF_SEL_CPC1_OFFL_E6_REQ_WAIT = 44 -SEM_PERF_SEL_CPC1_OFFL_E7_REQ_WAIT = 45 -SEM_PERF_SEL_CPC1_OFFL_E8_REQ_WAIT = 46 -SEM_PERF_SEL_CPC1_OFFL_E9_REQ_WAIT = 47 -SEM_PERF_SEL_CPC1_OFFL_E10_REQ_WAIT = 48 -SEM_PERF_SEL_CPC1_OFFL_E11_REQ_WAIT = 49 -SEM_PERF_SEL_CPC1_OFFL_E12_REQ_WAIT = 50 -SEM_PERF_SEL_CPC1_OFFL_E13_REQ_WAIT = 51 -SEM_PERF_SEL_CPC1_OFFL_E14_REQ_WAIT = 52 -SEM_PERF_SEL_CPC1_OFFL_E15_REQ_WAIT = 53 -SEM_PERF_SEL_CPC1_OFFL_E16_REQ_WAIT = 54 -SEM_PERF_SEL_CPC1_OFFL_E17_REQ_WAIT = 55 -SEM_PERF_SEL_CPC1_OFFL_E18_REQ_WAIT = 56 -SEM_PERF_SEL_CPC1_OFFL_E19_REQ_WAIT = 57 -SEM_PERF_SEL_CPC1_OFFL_E20_REQ_WAIT = 58 -SEM_PERF_SEL_CPC1_OFFL_E21_REQ_WAIT = 59 -SEM_PERF_SEL_CPC1_OFFL_E22_REQ_WAIT = 60 -SEM_PERF_SEL_CPC1_OFFL_E23_REQ_WAIT = 61 -SEM_PERF_SEL_CPC1_OFFL_E24_REQ_WAIT = 62 -SEM_PERF_SEL_CPC1_OFFL_E25_REQ_WAIT = 63 -SEM_PERF_SEL_CPC1_OFFL_E26_REQ_WAIT = 64 -SEM_PERF_SEL_CPC1_OFFL_E27_REQ_WAIT = 65 -SEM_PERF_SEL_CPC1_OFFL_E28_REQ_WAIT = 66 -SEM_PERF_SEL_CPC1_OFFL_E29_REQ_WAIT = 67 -SEM_PERF_SEL_CPC1_OFFL_E30_REQ_WAIT = 68 -SEM_PERF_SEL_CPC1_OFFL_E31_REQ_WAIT = 69 -SEM_PERF_SEL_CPC2_OFFL_E0_REQ_WAIT = 70 -SEM_PERF_SEL_CPC2_OFFL_E1_REQ_WAIT = 71 -SEM_PERF_SEL_CPC2_OFFL_E2_REQ_WAIT = 72 -SEM_PERF_SEL_CPC2_OFFL_E3_REQ_WAIT = 73 -SEM_PERF_SEL_CPC2_OFFL_E4_REQ_WAIT = 74 -SEM_PERF_SEL_CPC2_OFFL_E5_REQ_WAIT = 75 -SEM_PERF_SEL_CPC2_OFFL_E6_REQ_WAIT = 76 -SEM_PERF_SEL_CPC2_OFFL_E7_REQ_WAIT = 77 -SEM_PERF_SEL_CPC2_OFFL_E8_REQ_WAIT = 78 -SEM_PERF_SEL_CPC2_OFFL_E9_REQ_WAIT = 79 -SEM_PERF_SEL_CPC2_OFFL_E10_REQ_WAIT = 80 -SEM_PERF_SEL_CPC2_OFFL_E11_REQ_WAIT = 81 -SEM_PERF_SEL_CPC2_OFFL_E12_REQ_WAIT = 82 -SEM_PERF_SEL_CPC2_OFFL_E13_REQ_WAIT = 83 -SEM_PERF_SEL_CPC2_OFFL_E14_REQ_WAIT = 84 -SEM_PERF_SEL_CPC2_OFFL_E15_REQ_WAIT = 85 -SEM_PERF_SEL_CPC2_OFFL_E16_REQ_WAIT = 86 -SEM_PERF_SEL_CPC2_OFFL_E17_REQ_WAIT = 87 -SEM_PERF_SEL_CPC2_OFFL_E18_REQ_WAIT = 88 -SEM_PERF_SEL_CPC2_OFFL_E19_REQ_WAIT = 89 -SEM_PERF_SEL_CPC2_OFFL_E20_REQ_WAIT = 90 -SEM_PERF_SEL_CPC2_OFFL_E21_REQ_WAIT = 91 -SEM_PERF_SEL_CPC2_OFFL_E22_REQ_WAIT = 92 -SEM_PERF_SEL_CPC2_OFFL_E23_REQ_WAIT = 93 -SEM_PERF_SEL_CPC2_OFFL_E24_REQ_WAIT = 94 -SEM_PERF_SEL_CPC2_OFFL_E25_REQ_WAIT = 95 -SEM_PERF_SEL_CPC2_OFFL_E26_REQ_WAIT = 96 -SEM_PERF_SEL_CPC2_OFFL_E27_REQ_WAIT = 97 -SEM_PERF_SEL_CPC2_OFFL_E28_REQ_WAIT = 98 -SEM_PERF_SEL_CPC2_OFFL_E29_REQ_WAIT = 99 -SEM_PERF_SEL_CPC2_OFFL_E30_REQ_WAIT = 100 -SEM_PERF_SEL_CPC2_OFFL_E31_REQ_WAIT = 101 -SEM_PERF_SEL_CPC1_OFFL_E0_POLL_WAIT = 102 -SEM_PERF_SEL_CPC1_OFFL_E1_POLL_WAIT = 103 -SEM_PERF_SEL_CPC1_OFFL_E2_POLL_WAIT = 104 -SEM_PERF_SEL_CPC1_OFFL_E3_POLL_WAIT = 105 -SEM_PERF_SEL_CPC1_OFFL_E4_POLL_WAIT = 106 -SEM_PERF_SEL_CPC1_OFFL_E5_POLL_WAIT = 107 -SEM_PERF_SEL_CPC1_OFFL_E6_POLL_WAIT = 108 -SEM_PERF_SEL_CPC1_OFFL_E7_POLL_WAIT = 109 -SEM_PERF_SEL_CPC1_OFFL_E8_POLL_WAIT = 110 -SEM_PERF_SEL_CPC1_OFFL_E9_POLL_WAIT = 111 -SEM_PERF_SEL_CPC1_OFFL_E10_POLL_WAIT = 112 -SEM_PERF_SEL_CPC1_OFFL_E11_POLL_WAIT = 113 -SEM_PERF_SEL_CPC1_OFFL_E12_POLL_WAIT = 114 -SEM_PERF_SEL_CPC1_OFFL_E13_POLL_WAIT = 115 -SEM_PERF_SEL_CPC1_OFFL_E14_POLL_WAIT = 116 -SEM_PERF_SEL_CPC1_OFFL_E15_POLL_WAIT = 117 -SEM_PERF_SEL_CPC1_OFFL_E16_POLL_WAIT = 118 -SEM_PERF_SEL_CPC1_OFFL_E17_POLL_WAIT = 119 -SEM_PERF_SEL_CPC1_OFFL_E18_POLL_WAIT = 120 -SEM_PERF_SEL_CPC1_OFFL_E19_POLL_WAIT = 121 -SEM_PERF_SEL_CPC1_OFFL_E20_POLL_WAIT = 122 -SEM_PERF_SEL_CPC1_OFFL_E21_POLL_WAIT = 123 -SEM_PERF_SEL_CPC1_OFFL_E22_POLL_WAIT = 124 -SEM_PERF_SEL_CPC1_OFFL_E23_POLL_WAIT = 125 -SEM_PERF_SEL_CPC1_OFFL_E24_POLL_WAIT = 126 -SEM_PERF_SEL_CPC1_OFFL_E25_POLL_WAIT = 127 -SEM_PERF_SEL_CPC1_OFFL_E26_POLL_WAIT = 128 -SEM_PERF_SEL_CPC1_OFFL_E27_POLL_WAIT = 129 -SEM_PERF_SEL_CPC1_OFFL_E28_POLL_WAIT = 130 -SEM_PERF_SEL_CPC1_OFFL_E29_POLL_WAIT = 131 -SEM_PERF_SEL_CPC1_OFFL_E30_POLL_WAIT = 132 -SEM_PERF_SEL_CPC1_OFFL_E31_POLL_WAIT = 133 -SEM_PERF_SEL_CPC2_OFFL_E0_POLL_WAIT = 134 -SEM_PERF_SEL_CPC2_OFFL_E1_POLL_WAIT = 135 -SEM_PERF_SEL_CPC2_OFFL_E2_POLL_WAIT = 136 -SEM_PERF_SEL_CPC2_OFFL_E3_POLL_WAIT = 137 -SEM_PERF_SEL_CPC2_OFFL_E4_POLL_WAIT = 138 -SEM_PERF_SEL_CPC2_OFFL_E5_POLL_WAIT = 139 -SEM_PERF_SEL_CPC2_OFFL_E6_POLL_WAIT = 140 -SEM_PERF_SEL_CPC2_OFFL_E7_POLL_WAIT = 141 -SEM_PERF_SEL_CPC2_OFFL_E8_POLL_WAIT = 142 -SEM_PERF_SEL_CPC2_OFFL_E9_POLL_WAIT = 143 -SEM_PERF_SEL_CPC2_OFFL_E10_POLL_WAIT = 144 -SEM_PERF_SEL_CPC2_OFFL_E11_POLL_WAIT = 145 -SEM_PERF_SEL_CPC2_OFFL_E12_POLL_WAIT = 146 -SEM_PERF_SEL_CPC2_OFFL_E13_POLL_WAIT = 147 -SEM_PERF_SEL_CPC2_OFFL_E14_POLL_WAIT = 148 -SEM_PERF_SEL_CPC2_OFFL_E15_POLL_WAIT = 149 -SEM_PERF_SEL_CPC2_OFFL_E16_POLL_WAIT = 150 -SEM_PERF_SEL_CPC2_OFFL_E17_POLL_WAIT = 151 -SEM_PERF_SEL_CPC2_OFFL_E18_POLL_WAIT = 152 -SEM_PERF_SEL_CPC2_OFFL_E19_POLL_WAIT = 153 -SEM_PERF_SEL_CPC2_OFFL_E20_POLL_WAIT = 154 -SEM_PERF_SEL_CPC2_OFFL_E21_POLL_WAIT = 155 -SEM_PERF_SEL_CPC2_OFFL_E22_POLL_WAIT = 156 -SEM_PERF_SEL_CPC2_OFFL_E23_POLL_WAIT = 157 -SEM_PERF_SEL_CPC2_OFFL_E24_POLL_WAIT = 158 -SEM_PERF_SEL_CPC2_OFFL_E25_POLL_WAIT = 159 -SEM_PERF_SEL_CPC2_OFFL_E26_POLL_WAIT = 160 -SEM_PERF_SEL_CPC2_OFFL_E27_POLL_WAIT = 161 -SEM_PERF_SEL_CPC2_OFFL_E28_POLL_WAIT = 162 -SEM_PERF_SEL_CPC2_OFFL_E29_POLL_WAIT = 163 -SEM_PERF_SEL_CPC2_OFFL_E30_POLL_WAIT = 164 -SEM_PERF_SEL_CPC2_OFFL_E31_POLL_WAIT = 165 -SEM_PERF_SEL_MC_RD_REQ = 166 -SEM_PERF_SEL_MC_RD_RET = 167 -SEM_PERF_SEL_MC_WR_REQ = 168 -SEM_PERF_SEL_MC_WR_RET = 169 -SEM_PERF_SEL_ATC_REQ = 170 -SEM_PERF_SEL_ATC_RET = 171 -SEM_PERF_SEL_ATC_XNACK = 172 -SEM_PERF_SEL_ATC_INVALIDATION = 173 -SEM_PERF_SEL_ATC_VM_INVALIDATION = 174 -SEM_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'EFC_SURFACE_PIXEL_FORMAT' -EFC_SURFACE_PIXEL_FORMAT__enumvalues = { - 1: 'EFC_ARGB1555', - 2: 'EFC_RGBA5551', - 3: 'EFC_RGB565', - 4: 'EFC_BGR565', - 5: 'EFC_ARGB4444', - 6: 'EFC_RGBA4444', - 8: 'EFC_ARGB8888', - 9: 'EFC_RGBA8888', - 10: 'EFC_ARGB2101010', - 11: 'EFC_RGBA1010102', - 12: 'EFC_AYCrCb8888', - 13: 'EFC_YCrCbA8888', - 14: 'EFC_ACrYCb8888', - 15: 'EFC_CrYCbA8888', - 16: 'EFC_ARGB16161616_10MSB', - 17: 'EFC_RGBA16161616_10MSB', - 18: 'EFC_ARGB16161616_10LSB', - 19: 'EFC_RGBA16161616_10LSB', - 20: 'EFC_ARGB16161616_12MSB', - 21: 'EFC_RGBA16161616_12MSB', - 22: 'EFC_ARGB16161616_12LSB', - 23: 'EFC_RGBA16161616_12LSB', - 24: 'EFC_ARGB16161616_FLOAT', - 25: 'EFC_RGBA16161616_FLOAT', - 26: 'EFC_ARGB16161616_UNORM', - 27: 'EFC_RGBA16161616_UNORM', - 28: 'EFC_ARGB16161616_SNORM', - 29: 'EFC_RGBA16161616_SNORM', - 32: 'EFC_AYCrCb16161616_10MSB', - 33: 'EFC_AYCrCb16161616_10LSB', - 34: 'EFC_YCrCbA16161616_10MSB', - 35: 'EFC_YCrCbA16161616_10LSB', - 36: 'EFC_ACrYCb16161616_10MSB', - 37: 'EFC_ACrYCb16161616_10LSB', - 38: 'EFC_CrYCbA16161616_10MSB', - 39: 'EFC_CrYCbA16161616_10LSB', - 40: 'EFC_AYCrCb16161616_12MSB', - 41: 'EFC_AYCrCb16161616_12LSB', - 42: 'EFC_YCrCbA16161616_12MSB', - 43: 'EFC_YCrCbA16161616_12LSB', - 44: 'EFC_ACrYCb16161616_12MSB', - 45: 'EFC_ACrYCb16161616_12LSB', - 46: 'EFC_CrYCbA16161616_12MSB', - 47: 'EFC_CrYCbA16161616_12LSB', - 64: 'EFC_Y8_CrCb88_420_PLANAR', - 65: 'EFC_Y8_CbCr88_420_PLANAR', - 66: 'EFC_Y10_CrCb1010_420_PLANAR', - 67: 'EFC_Y10_CbCr1010_420_PLANAR', - 68: 'EFC_Y12_CrCb1212_420_PLANAR', - 69: 'EFC_Y12_CbCr1212_420_PLANAR', - 72: 'EFC_YCrYCb8888_422_PACKED', - 73: 'EFC_YCbYCr8888_422_PACKED', - 74: 'EFC_CrYCbY8888_422_PACKED', - 75: 'EFC_CbYCrY8888_422_PACKED', - 76: 'EFC_YCrYCb10101010_422_PACKED', - 77: 'EFC_YCbYCr10101010_422_PACKED', - 78: 'EFC_CrYCbY10101010_422_PACKED', - 79: 'EFC_CbYCrY10101010_422_PACKED', - 80: 'EFC_YCrYCb12121212_422_PACKED', - 81: 'EFC_YCbYCr12121212_422_PACKED', - 82: 'EFC_CrYCbY12121212_422_PACKED', - 83: 'EFC_CbYCrY12121212_422_PACKED', - 112: 'EFC_RGB111110_FIX', - 113: 'EFC_BGR101111_FIX', - 114: 'EFC_ACrYCb2101010', - 115: 'EFC_CrYCbA1010102', - 118: 'EFC_RGB111110_FLOAT', - 119: 'EFC_BGR101111_FLOAT', - 120: 'EFC_MONO_8', - 121: 'EFC_MONO_10MSB', - 122: 'EFC_MONO_10LSB', - 123: 'EFC_MONO_12MSB', - 124: 'EFC_MONO_12LSB', - 125: 'EFC_MONO_16', -} -EFC_ARGB1555 = 1 -EFC_RGBA5551 = 2 -EFC_RGB565 = 3 -EFC_BGR565 = 4 -EFC_ARGB4444 = 5 -EFC_RGBA4444 = 6 -EFC_ARGB8888 = 8 -EFC_RGBA8888 = 9 -EFC_ARGB2101010 = 10 -EFC_RGBA1010102 = 11 -EFC_AYCrCb8888 = 12 -EFC_YCrCbA8888 = 13 -EFC_ACrYCb8888 = 14 -EFC_CrYCbA8888 = 15 -EFC_ARGB16161616_10MSB = 16 -EFC_RGBA16161616_10MSB = 17 -EFC_ARGB16161616_10LSB = 18 -EFC_RGBA16161616_10LSB = 19 -EFC_ARGB16161616_12MSB = 20 -EFC_RGBA16161616_12MSB = 21 -EFC_ARGB16161616_12LSB = 22 -EFC_RGBA16161616_12LSB = 23 -EFC_ARGB16161616_FLOAT = 24 -EFC_RGBA16161616_FLOAT = 25 -EFC_ARGB16161616_UNORM = 26 -EFC_RGBA16161616_UNORM = 27 -EFC_ARGB16161616_SNORM = 28 -EFC_RGBA16161616_SNORM = 29 -EFC_AYCrCb16161616_10MSB = 32 -EFC_AYCrCb16161616_10LSB = 33 -EFC_YCrCbA16161616_10MSB = 34 -EFC_YCrCbA16161616_10LSB = 35 -EFC_ACrYCb16161616_10MSB = 36 -EFC_ACrYCb16161616_10LSB = 37 -EFC_CrYCbA16161616_10MSB = 38 -EFC_CrYCbA16161616_10LSB = 39 -EFC_AYCrCb16161616_12MSB = 40 -EFC_AYCrCb16161616_12LSB = 41 -EFC_YCrCbA16161616_12MSB = 42 -EFC_YCrCbA16161616_12LSB = 43 -EFC_ACrYCb16161616_12MSB = 44 -EFC_ACrYCb16161616_12LSB = 45 -EFC_CrYCbA16161616_12MSB = 46 -EFC_CrYCbA16161616_12LSB = 47 -EFC_Y8_CrCb88_420_PLANAR = 64 -EFC_Y8_CbCr88_420_PLANAR = 65 -EFC_Y10_CrCb1010_420_PLANAR = 66 -EFC_Y10_CbCr1010_420_PLANAR = 67 -EFC_Y12_CrCb1212_420_PLANAR = 68 -EFC_Y12_CbCr1212_420_PLANAR = 69 -EFC_YCrYCb8888_422_PACKED = 72 -EFC_YCbYCr8888_422_PACKED = 73 -EFC_CrYCbY8888_422_PACKED = 74 -EFC_CbYCrY8888_422_PACKED = 75 -EFC_YCrYCb10101010_422_PACKED = 76 -EFC_YCbYCr10101010_422_PACKED = 77 -EFC_CrYCbY10101010_422_PACKED = 78 -EFC_CbYCrY10101010_422_PACKED = 79 -EFC_YCrYCb12121212_422_PACKED = 80 -EFC_YCbYCr12121212_422_PACKED = 81 -EFC_CrYCbY12121212_422_PACKED = 82 -EFC_CbYCrY12121212_422_PACKED = 83 -EFC_RGB111110_FIX = 112 -EFC_BGR101111_FIX = 113 -EFC_ACrYCb2101010 = 114 -EFC_CrYCbA1010102 = 115 -EFC_RGB111110_FLOAT = 118 -EFC_BGR101111_FLOAT = 119 -EFC_MONO_8 = 120 -EFC_MONO_10MSB = 121 -EFC_MONO_10LSB = 122 -EFC_MONO_12MSB = 123 -EFC_MONO_12LSB = 124 -EFC_MONO_16 = 125 -EFC_SURFACE_PIXEL_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'UVDFirmwareCommand' -UVDFirmwareCommand__enumvalues = { - 0: 'UVDFC_FENCE', - 1: 'UVDFC_TRAP', - 2: 'UVDFC_DECODED_ADDR', - 3: 'UVDFC_MBLOCK_ADDR', - 4: 'UVDFC_ITBUF_ADDR', - 5: 'UVDFC_DISPLAY_ADDR', - 6: 'UVDFC_EOD', - 7: 'UVDFC_DISPLAY_PITCH', - 8: 'UVDFC_DISPLAY_TILING', - 9: 'UVDFC_BITSTREAM_ADDR', - 10: 'UVDFC_BITSTREAM_SIZE', -} -UVDFC_FENCE = 0 -UVDFC_TRAP = 1 -UVDFC_DECODED_ADDR = 2 -UVDFC_MBLOCK_ADDR = 3 -UVDFC_ITBUF_ADDR = 4 -UVDFC_DISPLAY_ADDR = 5 -UVDFC_EOD = 6 -UVDFC_DISPLAY_PITCH = 7 -UVDFC_DISPLAY_TILING = 8 -UVDFC_BITSTREAM_ADDR = 9 -UVDFC_BITSTREAM_SIZE = 10 -UVDFirmwareCommand = ctypes.c_uint32 # enum -__all__ = \ - ['ABGR_TO_A_BG_G_RB', 'ACCEPT_UNSOLICITED_RESPONSE_ENABLE', - 'ACCEPT_UNSOLICITED_RESPONSE_NOT_ENABLE', 'ACrYCb16161616_10LSB', - 'ACrYCb16161616_10MSB', 'ACrYCb16161616_12LSB', - 'ACrYCb16161616_12MSB', 'ACrYCb2101010', 'ACrYCb8888', - 'ADDR_CONFIG_16_BANK', 'ADDR_CONFIG_16_PIPE', - 'ADDR_CONFIG_1KB_ROW', 'ADDR_CONFIG_1_BANK', 'ADDR_CONFIG_1_GPU', - 'ADDR_CONFIG_1_LOWER_PIPES', - 'ADDR_CONFIG_1_MAX_COMPRESSED_FRAGMENTS', 'ADDR_CONFIG_1_PIPE', - 'ADDR_CONFIG_1_RB_PER_SHADER_ENGINE', - 'ADDR_CONFIG_1_SHADER_ENGINE', 'ADDR_CONFIG_2KB_ROW', - 'ADDR_CONFIG_2_BANK', 'ADDR_CONFIG_2_GPU', - 'ADDR_CONFIG_2_LOWER_PIPES', - 'ADDR_CONFIG_2_MAX_COMPRESSED_FRAGMENTS', 'ADDR_CONFIG_2_PIPE', - 'ADDR_CONFIG_2_RB_PER_SHADER_ENGINE', - 'ADDR_CONFIG_2_SHADER_ENGINE', 'ADDR_CONFIG_32_PIPE', - 'ADDR_CONFIG_4KB_ROW', 'ADDR_CONFIG_4_BANK', 'ADDR_CONFIG_4_GPU', - 'ADDR_CONFIG_4_MAX_COMPRESSED_FRAGMENTS', 'ADDR_CONFIG_4_PIPE', - 'ADDR_CONFIG_4_RB_PER_SHADER_ENGINE', - 'ADDR_CONFIG_4_SHADER_ENGINE', 'ADDR_CONFIG_64_PIPE', - 'ADDR_CONFIG_8_BANK', 'ADDR_CONFIG_8_GPU', - 'ADDR_CONFIG_8_MAX_COMPRESSED_FRAGMENTS', 'ADDR_CONFIG_8_PIPE', - 'ADDR_CONFIG_8_SHADER_ENGINE', 'ADDR_CONFIG_BANK_INTERLEAVE_1', - 'ADDR_CONFIG_BANK_INTERLEAVE_2', 'ADDR_CONFIG_BANK_INTERLEAVE_4', - 'ADDR_CONFIG_BANK_INTERLEAVE_8', 'ADDR_CONFIG_DISABLE_SE', - 'ADDR_CONFIG_ENABLE_SE', 'ADDR_CONFIG_GPU_TILE_128', - 'ADDR_CONFIG_GPU_TILE_16', 'ADDR_CONFIG_GPU_TILE_32', - 'ADDR_CONFIG_GPU_TILE_64', 'ADDR_CONFIG_PIPE_INTERLEAVE_1KB', - 'ADDR_CONFIG_PIPE_INTERLEAVE_256B', - 'ADDR_CONFIG_PIPE_INTERLEAVE_2KB', - 'ADDR_CONFIG_PIPE_INTERLEAVE_512B', 'ADDR_CONFIG_SE_TILE_16', - 'ADDR_CONFIG_SE_TILE_32', 'ADDR_NUM_BANKS_BC_BANKS_1', - 'ADDR_NUM_BANKS_BC_BANKS_16', 'ADDR_NUM_BANKS_BC_BANKS_2', - 'ADDR_NUM_BANKS_BC_BANKS_4', 'ADDR_NUM_BANKS_BC_BANKS_8', - 'ADDR_NUM_PIPES_BC_P16', 'ADDR_NUM_PIPES_BC_P8', - 'ADDR_SURF_16_BANK', 'ADDR_SURF_2_BANK', 'ADDR_SURF_4_BANK', - 'ADDR_SURF_8_BANK', 'ADDR_SURF_BANK_HEIGHT_1', - 'ADDR_SURF_BANK_HEIGHT_2', 'ADDR_SURF_BANK_HEIGHT_4', - 'ADDR_SURF_BANK_HEIGHT_8', 'ADDR_SURF_BANK_WH_1', - 'ADDR_SURF_BANK_WH_2', 'ADDR_SURF_BANK_WH_4', - 'ADDR_SURF_BANK_WH_8', 'ADDR_SURF_BANK_WIDTH_1', - 'ADDR_SURF_BANK_WIDTH_2', 'ADDR_SURF_BANK_WIDTH_4', - 'ADDR_SURF_BANK_WIDTH_8', 'ADDR_SURF_DEPTH_MICRO_TILING', - 'ADDR_SURF_DISPLAY_MICRO_TILING', 'ADDR_SURF_MACRO_ASPECT_1', - 'ADDR_SURF_MACRO_ASPECT_2', 'ADDR_SURF_MACRO_ASPECT_4', - 'ADDR_SURF_MACRO_ASPECT_8', 'ADDR_SURF_MICRO_TILING_DISPLAY', - 'ADDR_SURF_MICRO_TILING_NON_DISPLAY', 'ADDR_SURF_P16', - 'ADDR_SURF_P16_32x32_16x16', 'ADDR_SURF_P16_32x32_8x16', - 'ADDR_SURF_P2', 'ADDR_SURF_P2_RESERVED0', - 'ADDR_SURF_P2_RESERVED1', 'ADDR_SURF_P2_RESERVED2', - 'ADDR_SURF_P4_16x16', 'ADDR_SURF_P4_16x32', 'ADDR_SURF_P4_32x32', - 'ADDR_SURF_P4_8x16', 'ADDR_SURF_P8_16x16_8x16', - 'ADDR_SURF_P8_16x32_16x16', 'ADDR_SURF_P8_16x32_8x16', - 'ADDR_SURF_P8_32x32_16x16', 'ADDR_SURF_P8_32x32_16x32', - 'ADDR_SURF_P8_32x32_8x16', 'ADDR_SURF_P8_32x64_32x32', - 'ADDR_SURF_P8_RESERVED0', 'ADDR_SURF_ROTATED_MICRO_TILING', - 'ADDR_SURF_SAMPLE_SPLIT_1', 'ADDR_SURF_SAMPLE_SPLIT_2', - 'ADDR_SURF_SAMPLE_SPLIT_4', 'ADDR_SURF_SAMPLE_SPLIT_8', - 'ADDR_SURF_THICK_MICRO_TILING', 'ADDR_SURF_THIN_MICRO_TILING', - 'ADDR_SURF_TILE_SPLIT_128B', 'ADDR_SURF_TILE_SPLIT_1KB', - 'ADDR_SURF_TILE_SPLIT_256B', 'ADDR_SURF_TILE_SPLIT_2KB', - 'ADDR_SURF_TILE_SPLIT_4KB', 'ADDR_SURF_TILE_SPLIT_512B', - 'ADDR_SURF_TILE_SPLIT_64B', 'AFMT_AUDIO_CRC_AUDIO_SAMPLE_COUNT', - 'AFMT_AUDIO_CRC_AUTO_RESTART', 'AFMT_AUDIO_CRC_CH0_SIG', - 'AFMT_AUDIO_CRC_CH1_SIG', 'AFMT_AUDIO_CRC_CH2_SIG', - 'AFMT_AUDIO_CRC_CH3_SIG', 'AFMT_AUDIO_CRC_CH4_SIG', - 'AFMT_AUDIO_CRC_CH5_SIG', 'AFMT_AUDIO_CRC_CH6_SIG', - 'AFMT_AUDIO_CRC_CH7_SIG', 'AFMT_AUDIO_CRC_CONTROL_CH_SEL', - 'AFMT_AUDIO_CRC_CONTROL_CONT', 'AFMT_AUDIO_CRC_CONTROL_SOURCE', - 'AFMT_AUDIO_CRC_ONESHOT', 'AFMT_AUDIO_CRC_RESERVED_10', - 'AFMT_AUDIO_CRC_RESERVED_11', 'AFMT_AUDIO_CRC_RESERVED_12', - 'AFMT_AUDIO_CRC_RESERVED_13', 'AFMT_AUDIO_CRC_RESERVED_14', - 'AFMT_AUDIO_CRC_RESERVED_8', 'AFMT_AUDIO_CRC_RESERVED_9', - 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_INPUT', - 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_OUTPUT', - 'AFMT_AUDIO_LAYOUT_DETERMINED_BY_AZ_AUDIO_CHANNEL_STATUS', - 'AFMT_AUDIO_LAYOUT_OVRD_BY_REGISTER', - 'AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD', - 'AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND', - 'AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS', - 'AFMT_AUDIO_PACKET_SENT_DISABLED', - 'AFMT_AUDIO_PACKET_SENT_ENABLED', 'AFMT_AUDIO_SRC_CONTROL_SELECT', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM0', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM1', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM2', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM3', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM4', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM5', 'AFMT_AUDIO_SRC_RESERVED', - 'AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE', - 'AFMT_INFOFRAME_SOURCE_FROM_AFMT_REGISTERS', - 'AFMT_INFOFRAME_SOURCE_FROM_AZALIA_BLOCK', - 'AFMT_INTERRUPT_DISABLE', 'AFMT_INTERRUPT_ENABLE', - 'AFMT_INTERRUPT_STATUS_CHG_MASK', - 'AFMT_NOT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED_RESERVED', - 'AFMT_RAMP_CONTROL0_SIGN', 'AFMT_RAMP_SIGNED', - 'AFMT_RAMP_UNSIGNED', 'AFMT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED', - 'AFMT_VBI_GSP0_INDEX', 'AFMT_VBI_GSP10_INDEX', - 'AFMT_VBI_GSP1_INDEX', 'AFMT_VBI_GSP2_INDEX', - 'AFMT_VBI_GSP3_INDEX', 'AFMT_VBI_GSP4_INDEX', - 'AFMT_VBI_GSP5_INDEX', 'AFMT_VBI_GSP6_INDEX', - 'AFMT_VBI_GSP7_INDEX', 'AFMT_VBI_GSP8_INDEX', - 'AFMT_VBI_GSP9_INDEX', 'AFMT_VBI_GSP_INDEX', - 'ALLOW_SR_ON_TRANS_REQ', 'ALLOW_SR_ON_TRANS_REQ_DISABLE', - 'ALLOW_SR_ON_TRANS_REQ_ENABLE', 'ALPHA_DATA_ON_ALPHA_PORT', - 'ALPHA_DATA_ON_CB_B_PORT', 'ALPHA_DATA_ON_CR_R_PORT', - 'ALPHA_DATA_ON_Y_G_PORT', 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_ACK', - 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_NOT_ACK', 'AM_1D_TILED_THICK', - 'AM_1D_TILED_THIN1', 'AM_2D_TILED_THICK', 'AM_2D_TILED_THIN1', - 'AM_2D_TILED_XTHICK', 'AM_3D_TILED_THICK', 'AM_3D_TILED_THIN1', - 'AM_3D_TILED_XTHICK', 'AM_LINEAR_ALIGNED', 'AM_LINEAR_GENERAL', - 'AM_PRT_2D_TILED_THICK', 'AM_PRT_2D_TILED_THIN1', - 'AM_PRT_3D_TILED_THICK', 'AM_PRT_3D_TILED_THIN1', - 'AM_PRT_TILED_THICK', 'AM_PRT_TILED_THIN1', 'ARGB1555', - 'ARGB16161616_10LSB', 'ARGB16161616_10MSB', 'ARGB16161616_12LSB', - 'ARGB16161616_12MSB', 'ARGB16161616_FLOAT', 'ARGB16161616_SNORM', - 'ARGB16161616_UNORM', 'ARGB2101010', 'ARGB4444', 'ARGB8888', - 'ARRAY_1D', 'ARRAY_1D_TILED_THICK', 'ARRAY_1D_TILED_THIN1', - 'ARRAY_2D', 'ARRAY_2D_ALT_COLOR', 'ARRAY_2D_ALT_DEPTH', - 'ARRAY_2D_COLOR', 'ARRAY_2D_DEPTH', 'ARRAY_2D_TILED_THICK', - 'ARRAY_2D_TILED_THIN1', 'ARRAY_2D_TILED_XTHICK', 'ARRAY_3D', - 'ARRAY_3D_SLICE', 'ARRAY_3D_SLICE_COLOR', 'ARRAY_3D_TILED_THICK', - 'ARRAY_3D_TILED_THIN1', 'ARRAY_3D_TILED_XTHICK', - 'ARRAY_COLOR_TILE', 'ARRAY_DEPTH_TILE', 'ARRAY_LINEAR', - 'ARRAY_LINEAR_ALIGNED', 'ARRAY_LINEAR_GENERAL', 'ARRAY_MODE', - 'ARRAY_PRT_2D_TILED_THICK', 'ARRAY_PRT_2D_TILED_THIN1', - 'ARRAY_PRT_3D_TILED_THICK', 'ARRAY_PRT_3D_TILED_THIN1', - 'ARRAY_PRT_TILED_THICK', 'ARRAY_PRT_TILED_THIN1', 'ARRAY_TILED', - 'AUDIO_LAYOUT_0', 'AUDIO_LAYOUT_1', 'AUDIO_LAYOUT_SELECT', - 'AUTOCAL_MODE_AUTOCENTER', 'AUTOCAL_MODE_AUTOREPLICATE', - 'AUTOCAL_MODE_AUTOSCALE', 'AUTOCAL_MODE_OFF', - 'AYCrCb16161616_10LSB', 'AYCrCb16161616_10MSB', - 'AYCrCb16161616_12LSB', 'AYCrCb16161616_12MSB', 'AYCrCb8888', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_ANALOG', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NOT_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_NO_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_NOT_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_HAVE_EAPD_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_NO_EAPD_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_PRESENCE_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_NOT_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_NOT_BALANCED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_JACK_PRESENCE_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE', - 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', - 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABLILITY', - 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE', - 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABLILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_EAPD_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_NOT_BALANCED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_EAPD_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_ENABLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_NOT_ENABLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_NOT_ON', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_ON', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ONE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ZERO', - 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_DO_RESET', - 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_NOT_RESET', - 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_DRIVEN', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_SHUT_OFF', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_0', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_1', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_10', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_11', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_12', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_13', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_14', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_15', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_2', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_3', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_4', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_5', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_6', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_7', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_8', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_9', - 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_FORBIDDEN', - 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT', - 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_NO_INFO_OR_PERMITTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', - 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE', - 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', - 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE', - 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_DRIVEN', - 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_SHUT_OFF', - 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET', - 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_NOT_RESET', - 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_RESET_REFCLK_LOGIC', - 'AZ_CORB_SIZE', 'AZ_CORB_SIZE_16ENTRIES_RESERVED', - 'AZ_CORB_SIZE_256ENTRIES', 'AZ_CORB_SIZE_2ENTRIES_RESERVED', - 'AZ_CORB_SIZE_RESERVED', 'AZ_GLOBAL_CAPABILITIES', - 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_NOT_SUPPORTED', - 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_SUPPORTED', - 'AZ_LATENCY_COUNTER_CONTROL', 'AZ_LATENCY_COUNTER_NO_RESET', - 'AZ_LATENCY_COUNTER_RESET_DONE', 'AZ_RIRB_SIZE', - 'AZ_RIRB_SIZE_16ENTRIES_RESERVED', 'AZ_RIRB_SIZE_256ENTRIES', - 'AZ_RIRB_SIZE_2ENTRIES_RESERVED', 'AZ_RIRB_SIZE_UNDEFINED', - 'AZ_RIRB_WRITE_POINTER_DO_RESET', - 'AZ_RIRB_WRITE_POINTER_NOT_RESET', 'AZ_RIRB_WRITE_POINTER_RESET', - 'AZ_STATE_CHANGE_STATUS', - 'AZ_STATE_CHANGE_STATUS_CODEC_NOT_PRESENT', - 'AZ_STATE_CHANGE_STATUS_CODEC_PRESENT', 'ArrayMode', - 'BANK_HEIGHT', 'BANK_WIDTH', 'BGR101111_FIX', 'BGR101111_FLOAT', - 'BGR565', 'BGRA_TO_BG_G_RB_A', 'BINNER_BREAK_BATCH', - 'BINNER_DROP', 'BINNER_DROP_ASSERT', 'BINNER_PIPELINE', - 'BINNING_ALLOWED', 'BIN_CONF_OVERRIDE_CHECK', 'BIN_MAP_MODE_NONE', - 'BIN_MAP_MODE_POPS', 'BIN_MAP_MODE_RTA_INDEX', - 'BIN_SIZE_128_PIXELS', 'BIN_SIZE_256_PIXELS', - 'BIN_SIZE_32_PIXELS', 'BIN_SIZE_512_PIXELS', 'BIN_SIZE_64_PIXELS', - 'BITS_31_0', 'BITS_32_1', 'BITS_33_2', 'BITS_34_3', 'BITS_35_4', - 'BITS_36_5', 'BITS_37_6', 'BITS_38_7', 'BLEND_BOTH_INV_SRC_ALPHA', - 'BLEND_BOTH_SRC_ALPHA', 'BLEND_CONSTANT_ALPHA', - 'BLEND_CONSTANT_COLOR', 'BLEND_DST_ALPHA', 'BLEND_DST_COLOR', - 'BLEND_INV_SRC1_ALPHA', 'BLEND_INV_SRC1_COLOR', 'BLEND_ONE', - 'BLEND_ONE_MINUS_CONSTANT_ALPHA', - 'BLEND_ONE_MINUS_CONSTANT_COLOR', 'BLEND_ONE_MINUS_DST_ALPHA', - 'BLEND_ONE_MINUS_DST_COLOR', 'BLEND_ONE_MINUS_SRC_ALPHA', - 'BLEND_ONE_MINUS_SRC_COLOR', 'BLEND_OPT_PRESERVE_A0_IGNORE_A1', - 'BLEND_OPT_PRESERVE_A1_IGNORE_A0', - 'BLEND_OPT_PRESERVE_ALL_IGNORE_NONE', - 'BLEND_OPT_PRESERVE_C0_IGNORE_C1', - 'BLEND_OPT_PRESERVE_C1_IGNORE_C0', - 'BLEND_OPT_PRESERVE_NONE_IGNORE_A0', - 'BLEND_OPT_PRESERVE_NONE_IGNORE_ALL', - 'BLEND_OPT_PRESERVE_NONE_IGNORE_NONE', 'BLEND_SRC1_ALPHA', - 'BLEND_SRC1_COLOR', 'BLEND_SRC_ALPHA', 'BLEND_SRC_ALPHA_SATURATE', - 'BLEND_SRC_COLOR', 'BLEND_ZERO', 'BLOCK_CONTEXT_DONE', 'BOTH_EYE', - 'BOTTOM_OF_PIPE_TS', 'BREAK_BATCH', 'BUF_DATA_FORMAT', - 'BUF_DATA_FORMAT_10_10_10_2', 'BUF_DATA_FORMAT_10_11_11', - 'BUF_DATA_FORMAT_11_11_10', 'BUF_DATA_FORMAT_16', - 'BUF_DATA_FORMAT_16_16', 'BUF_DATA_FORMAT_16_16_16_16', - 'BUF_DATA_FORMAT_2_10_10_10', 'BUF_DATA_FORMAT_32', - 'BUF_DATA_FORMAT_32_32', 'BUF_DATA_FORMAT_32_32_32', - 'BUF_DATA_FORMAT_32_32_32_32', 'BUF_DATA_FORMAT_8', - 'BUF_DATA_FORMAT_8_8', 'BUF_DATA_FORMAT_8_8_8_8', - 'BUF_DATA_FORMAT_INVALID', 'BUF_DATA_FORMAT_RESERVED_15', - 'BUF_FMT', 'BUF_FMT_10_10_10_2_SINT', 'BUF_FMT_10_10_10_2_SNORM', - 'BUF_FMT_10_10_10_2_SSCALED', 'BUF_FMT_10_10_10_2_UINT', - 'BUF_FMT_10_10_10_2_UNORM', 'BUF_FMT_10_10_10_2_USCALED', - 'BUF_FMT_10_11_11_FLOAT', 'BUF_FMT_10_11_11_SINT', - 'BUF_FMT_10_11_11_SNORM', 'BUF_FMT_10_11_11_SSCALED', - 'BUF_FMT_10_11_11_UINT', 'BUF_FMT_10_11_11_UNORM', - 'BUF_FMT_10_11_11_USCALED', 'BUF_FMT_11_11_10_FLOAT', - 'BUF_FMT_11_11_10_SINT', 'BUF_FMT_11_11_10_SNORM', - 'BUF_FMT_11_11_10_SSCALED', 'BUF_FMT_11_11_10_UINT', - 'BUF_FMT_11_11_10_UNORM', 'BUF_FMT_11_11_10_USCALED', - 'BUF_FMT_16_16_16_16_FLOAT', 'BUF_FMT_16_16_16_16_SINT', - 'BUF_FMT_16_16_16_16_SNORM', 'BUF_FMT_16_16_16_16_SSCALED', - 'BUF_FMT_16_16_16_16_UINT', 'BUF_FMT_16_16_16_16_UNORM', - 'BUF_FMT_16_16_16_16_USCALED', 'BUF_FMT_16_16_FLOAT', - 'BUF_FMT_16_16_SINT', 'BUF_FMT_16_16_SNORM', - 'BUF_FMT_16_16_SSCALED', 'BUF_FMT_16_16_UINT', - 'BUF_FMT_16_16_UNORM', 'BUF_FMT_16_16_USCALED', - 'BUF_FMT_16_FLOAT', 'BUF_FMT_16_SINT', 'BUF_FMT_16_SNORM', - 'BUF_FMT_16_SSCALED', 'BUF_FMT_16_UINT', 'BUF_FMT_16_UNORM', - 'BUF_FMT_16_USCALED', 'BUF_FMT_2_10_10_10_SINT', - 'BUF_FMT_2_10_10_10_SNORM', 'BUF_FMT_2_10_10_10_SSCALED', - 'BUF_FMT_2_10_10_10_UINT', 'BUF_FMT_2_10_10_10_UNORM', - 'BUF_FMT_2_10_10_10_USCALED', 'BUF_FMT_32_32_32_32_FLOAT', - 'BUF_FMT_32_32_32_32_SINT', 'BUF_FMT_32_32_32_32_UINT', - 'BUF_FMT_32_32_32_FLOAT', 'BUF_FMT_32_32_32_SINT', - 'BUF_FMT_32_32_32_UINT', 'BUF_FMT_32_32_FLOAT', - 'BUF_FMT_32_32_SINT', 'BUF_FMT_32_32_UINT', 'BUF_FMT_32_FLOAT', - 'BUF_FMT_32_SINT', 'BUF_FMT_32_UINT', 'BUF_FMT_8_8_8_8_SINT', - 'BUF_FMT_8_8_8_8_SNORM', 'BUF_FMT_8_8_8_8_SSCALED', - 'BUF_FMT_8_8_8_8_UINT', 'BUF_FMT_8_8_8_8_UNORM', - 'BUF_FMT_8_8_8_8_USCALED', 'BUF_FMT_8_8_SINT', - 'BUF_FMT_8_8_SNORM', 'BUF_FMT_8_8_SSCALED', 'BUF_FMT_8_8_UINT', - 'BUF_FMT_8_8_UNORM', 'BUF_FMT_8_8_USCALED', 'BUF_FMT_8_SINT', - 'BUF_FMT_8_SNORM', 'BUF_FMT_8_SSCALED', 'BUF_FMT_8_UINT', - 'BUF_FMT_8_UNORM', 'BUF_FMT_8_USCALED', 'BUF_FMT_INVALID', - 'BUF_FMT_RESERVED_100', 'BUF_FMT_RESERVED_101', - 'BUF_FMT_RESERVED_102', 'BUF_FMT_RESERVED_103', - 'BUF_FMT_RESERVED_104', 'BUF_FMT_RESERVED_105', - 'BUF_FMT_RESERVED_106', 'BUF_FMT_RESERVED_107', - 'BUF_FMT_RESERVED_108', 'BUF_FMT_RESERVED_109', - 'BUF_FMT_RESERVED_110', 'BUF_FMT_RESERVED_111', - 'BUF_FMT_RESERVED_112', 'BUF_FMT_RESERVED_113', - 'BUF_FMT_RESERVED_114', 'BUF_FMT_RESERVED_115', - 'BUF_FMT_RESERVED_116', 'BUF_FMT_RESERVED_117', - 'BUF_FMT_RESERVED_118', 'BUF_FMT_RESERVED_119', - 'BUF_FMT_RESERVED_120', 'BUF_FMT_RESERVED_121', - 'BUF_FMT_RESERVED_122', 'BUF_FMT_RESERVED_123', - 'BUF_FMT_RESERVED_124', 'BUF_FMT_RESERVED_125', - 'BUF_FMT_RESERVED_126', 'BUF_FMT_RESERVED_127', - 'BUF_FMT_RESERVED_78', 'BUF_FMT_RESERVED_79', - 'BUF_FMT_RESERVED_80', 'BUF_FMT_RESERVED_81', - 'BUF_FMT_RESERVED_82', 'BUF_FMT_RESERVED_83', - 'BUF_FMT_RESERVED_84', 'BUF_FMT_RESERVED_85', - 'BUF_FMT_RESERVED_86', 'BUF_FMT_RESERVED_87', - 'BUF_FMT_RESERVED_88', 'BUF_FMT_RESERVED_89', - 'BUF_FMT_RESERVED_90', 'BUF_FMT_RESERVED_91', - 'BUF_FMT_RESERVED_92', 'BUF_FMT_RESERVED_93', - 'BUF_FMT_RESERVED_94', 'BUF_FMT_RESERVED_95', - 'BUF_FMT_RESERVED_96', 'BUF_FMT_RESERVED_97', - 'BUF_FMT_RESERVED_98', 'BUF_FMT_RESERVED_99', 'BUF_NUM_FORMAT', - 'BUF_NUM_FORMAT_FLOAT', 'BUF_NUM_FORMAT_SINT', - 'BUF_NUM_FORMAT_SNORM', 'BUF_NUM_FORMAT_SNORM_NZ', - 'BUF_NUM_FORMAT_SSCALED', 'BUF_NUM_FORMAT_UINT', - 'BUF_NUM_FORMAT_UNORM', 'BUF_NUM_FORMAT_USCALED', 'BYPASS_EN', - 'BYPASS_GAMUT', 'BYPASS_ICSC', 'BankHeight', 'BankInterleaveSize', - 'BankSwapBytes', 'BankTiling', 'BankWidth', 'BankWidthHeight', - 'BinEventCntl', 'BinMapMode', 'BinSizeExtend', 'BinningMode', - 'BlendOp', 'BlendOpt', 'CACHE_BYPASS', 'CACHE_FLUSH', - 'CACHE_FLUSH_AND_INV_EVENT', 'CACHE_FLUSH_AND_INV_TS_EVENT', - 'CACHE_FLUSH_TS', 'CACHE_LRU_RD', 'CACHE_LRU_WR', 'CACHE_NOA', - 'CACHE_STREAM', 'CBMode', 'CBPerfClearFilterSel', - 'CBPerfOpFilterSel', 'CBPerfSel', 'CB_B_DATA_ON_ALPHA_PORT', - 'CB_B_DATA_ON_CB_B_PORT', 'CB_B_DATA_ON_CR_R_PORT', - 'CB_B_DATA_ON_Y_G_PORT', 'CB_DCC_DECOMPRESS', 'CB_DECOMPRESS', - 'CB_DISABLE', 'CB_ELIMINATE_FAST_CLEAR', 'CB_FMASK_DECOMPRESS', - 'CB_NORMAL', 'CB_PERF_CLEAR_FILTER_SEL_CLEAR', - 'CB_PERF_CLEAR_FILTER_SEL_NONCLEAR', - 'CB_PERF_OP_FILTER_SEL_DECOMPRESS', - 'CB_PERF_OP_FILTER_SEL_ELIMINATE_FAST_CLEAR', - 'CB_PERF_OP_FILTER_SEL_FMASK_DECOMPRESS', - 'CB_PERF_OP_FILTER_SEL_NEEDS_DESTINATION', - 'CB_PERF_OP_FILTER_SEL_RESOLVE', - 'CB_PERF_OP_FILTER_SEL_WRITE_ONLY', - 'CB_PERF_SEL_BLENDER_RAW_HAZARD_STALL', - 'CB_PERF_SEL_BLEND_OPT_PIXELS_RESULT_EQ_DEST', 'CB_PERF_SEL_BUSY', - 'CB_PERF_SEL_CB_TAP_RDREQ_VALIDB_READY', - 'CB_PERF_SEL_CB_TAP_RDREQ_VALIDB_READYB', - 'CB_PERF_SEL_CB_TAP_RDREQ_VALID_READY', - 'CB_PERF_SEL_CB_TAP_RDREQ_VALID_READYB', - 'CB_PERF_SEL_CB_TAP_WRREQ_VALIDB_READY', - 'CB_PERF_SEL_CB_TAP_WRREQ_VALIDB_READYB', - 'CB_PERF_SEL_CB_TAP_WRREQ_VALID_READY', - 'CB_PERF_SEL_CB_TAP_WRREQ_VALID_READYB', - 'CB_PERF_SEL_CCR_TO_CCW_REGION_BUSY', - 'CB_PERF_SEL_CC_BB_BLEND_PIXEL_VLD', - 'CB_PERF_SEL_CC_BC_CS_FRAG_VALID', - 'CB_PERF_SEL_CC_CACHE_ACK_OUTPUT_STALL', - 'CB_PERF_SEL_CC_CACHE_DIRTY_SECTORS_FLUSHED', - 'CB_PERF_SEL_CC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 'CB_PERF_SEL_CC_CACHE_FLUSH', 'CB_PERF_SEL_CC_CACHE_HIT', - 'CB_PERF_SEL_CC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 'CB_PERF_SEL_CC_CACHE_READS_SAVED_DUE_TO_DCC', - 'CB_PERF_SEL_CC_CACHE_READ_OUTPUT_STALL', - 'CB_PERF_SEL_CC_CACHE_REEVICTION_STALL', - 'CB_PERF_SEL_CC_CACHE_REPLACE_PENDING_EVICT_STALL', - 'CB_PERF_SEL_CC_CACHE_SECTORS_FLUSHED', - 'CB_PERF_SEL_CC_CACHE_SECTOR_MISS', 'CB_PERF_SEL_CC_CACHE_STALL', - 'CB_PERF_SEL_CC_CACHE_TAGS_FLUSHED', - 'CB_PERF_SEL_CC_CACHE_TAG_MISS', - 'CB_PERF_SEL_CC_CACHE_WA_TO_RMW_CONVERSION', - 'CB_PERF_SEL_CC_CACHE_WRITE_OUTPUT_STALL', - 'CB_PERF_SEL_CC_DCC_BEYOND_TILE_SPLIT', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_2TO1', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_4TO1', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_4TO2', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_4TO3', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO1', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO2', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO3', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO4', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO5', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO1', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO2', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO3', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO4', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO5', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO6', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO7', - 'CB_PERF_SEL_CC_DCC_COMPRESS_TIDS_IN', - 'CB_PERF_SEL_CC_DCC_COMPRESS_TIDS_OUT', - 'CB_PERF_SEL_CC_DCC_DECOMPRESS_TIDS_IN', - 'CB_PERF_SEL_CC_DCC_DECOMPRESS_TIDS_OUT', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO4', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__2BLOCKS_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO1__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO2__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO3__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO3__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO4__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO4__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO4', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO5', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO6', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__2BLOCKS_2TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__3BLOCKS_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__INV0', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__INV1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO4', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__2BLOCKS_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO1__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO2__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO3__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO3__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO4__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO4', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO5', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__2BLOCKS_2TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__3BLOCKS_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__INV0', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__INV1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_2TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_2TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_4TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_4TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_4TO4', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__2BLOCKS_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__2BLOCKS_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_2TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_2TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_4TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_4TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_4TO4', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__2BLOCKS_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__2BLOCKS_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_2TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_2TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_4TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_4TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_4TO4', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__2BLOCKS_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__2BLOCKS_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_2TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_2TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_4TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_4TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_4TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__2BLOCKS_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO1__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO2__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO3__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO3__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO4__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO4__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO5__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO5__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO6__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO4', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO5', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO6', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO7', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_2TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO4', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__2BLOCKS_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_2TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_4TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_4TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_4TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__2BLOCKS_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_4TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_4TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_4TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__3BLOCKS_2TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__3BLOCKS_2TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__4_BLOCKS__2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__INV0__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__INV0__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__INV1__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__INV1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__UNCOMPRESSED', - 'CB_PERF_SEL_CC_DCC_RDREQ_STALL', - 'CB_PERF_SEL_CC_EVENFIFO_QUAD_RESIDENCY_STALL', - 'CB_PERF_SEL_CC_EVENFIFO_STUTTER_STALL', - 'CB_PERF_SEL_CC_IB_SR_FRAG_VALIDB_READY', - 'CB_PERF_SEL_CC_IB_SR_FRAG_VALIDB_READYB', - 'CB_PERF_SEL_CC_IB_SR_FRAG_VALID_READY', - 'CB_PERF_SEL_CC_IB_SR_FRAG_VALID_READYB', - 'CB_PERF_SEL_CC_IB_TB_FRAG_VALIDB_READY', - 'CB_PERF_SEL_CC_IB_TB_FRAG_VALIDB_READYB', - 'CB_PERF_SEL_CC_IB_TB_FRAG_VALID_READY', - 'CB_PERF_SEL_CC_IB_TB_FRAG_VALID_READYB', - 'CB_PERF_SEL_CC_MC_EARLY_WRITE_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_CC_MC_EARLY_WRITE_RETURN', - 'CB_PERF_SEL_CC_MC_READ_REQUEST', - 'CB_PERF_SEL_CC_MC_READ_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_CC_MC_WRITE_ACK64B', - 'CB_PERF_SEL_CC_MC_WRITE_REQUEST', - 'CB_PERF_SEL_CC_MC_WRITE_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_CC_MC_WRITE_REQUEST_PARTIAL', - 'CB_PERF_SEL_CC_ODDFIFO_QUAD_RESIDENCY_STALL', - 'CB_PERF_SEL_CC_ODDFIFO_STUTTER_STALL', - 'CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALIDB_READY', - 'CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALIDB_READYB', - 'CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALID_READY', - 'CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALID_READYB', - 'CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALIDB_READY', - 'CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALIDB_READYB', - 'CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALID_READY', - 'CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALID_READYB', - 'CB_PERF_SEL_CC_RB_FULL', 'CB_PERF_SEL_CC_SF_FULL', - 'CB_PERF_SEL_CC_SURFACE_SYNC', 'CB_PERF_SEL_CMASK_READ_DATA_0xC', - 'CB_PERF_SEL_CMASK_READ_DATA_0xD', - 'CB_PERF_SEL_CMASK_READ_DATA_0xE', - 'CB_PERF_SEL_CMASK_READ_DATA_0xF', - 'CB_PERF_SEL_CMASK_WRITE_DATA_0xC', - 'CB_PERF_SEL_CMASK_WRITE_DATA_0xD', - 'CB_PERF_SEL_CMASK_WRITE_DATA_0xE', - 'CB_PERF_SEL_CMASK_WRITE_DATA_0xF', - 'CB_PERF_SEL_CMR_TO_FCR_REGION_BUSY', - 'CB_PERF_SEL_CM_CACHE_ACK_OUTPUT_STALL', - 'CB_PERF_SEL_CM_CACHE_DIRTY_SECTORS_FLUSHED', - 'CB_PERF_SEL_CM_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 'CB_PERF_SEL_CM_CACHE_FLUSH', 'CB_PERF_SEL_CM_CACHE_HIT', - 'CB_PERF_SEL_CM_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 'CB_PERF_SEL_CM_CACHE_READ_OUTPUT_STALL', - 'CB_PERF_SEL_CM_CACHE_REEVICTION_STALL', - 'CB_PERF_SEL_CM_CACHE_REPLACE_PENDING_EVICT_STALL', - 'CB_PERF_SEL_CM_CACHE_SECTORS_FLUSHED', - 'CB_PERF_SEL_CM_CACHE_SECTOR_MISS', 'CB_PERF_SEL_CM_CACHE_STALL', - 'CB_PERF_SEL_CM_CACHE_TAGS_FLUSHED', - 'CB_PERF_SEL_CM_CACHE_TAG_MISS', - 'CB_PERF_SEL_CM_CACHE_WRITE_OUTPUT_STALL', - 'CB_PERF_SEL_CM_FC_TILE_VALIDB_READY', - 'CB_PERF_SEL_CM_FC_TILE_VALIDB_READYB', - 'CB_PERF_SEL_CM_FC_TILE_VALID_READY', - 'CB_PERF_SEL_CM_FC_TILE_VALID_READYB', - 'CB_PERF_SEL_CM_MC_EARLY_WRITE_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_CM_MC_EARLY_WRITE_RETURN', - 'CB_PERF_SEL_CM_MC_READ_REQUEST', - 'CB_PERF_SEL_CM_MC_READ_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_CM_MC_WRITE_ACK64B', - 'CB_PERF_SEL_CM_MC_WRITE_REQUEST', - 'CB_PERF_SEL_CM_MC_WRITE_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_CM_TQ_FIFO_STUTTER_STALL', - 'CB_PERF_SEL_CM_TQ_FIFO_TILE_RESIDENCY_STALL', - 'CB_PERF_SEL_CM_TQ_FULL', 'CB_PERF_SEL_CORE_SCLK_VLD', - 'CB_PERF_SEL_DB_CB_CONTEXT_DONE', 'CB_PERF_SEL_DB_CB_EOP_DONE', - 'CB_PERF_SEL_DB_CB_LQUAD_VALIDB_READY', - 'CB_PERF_SEL_DB_CB_LQUAD_VALIDB_READYB', - 'CB_PERF_SEL_DB_CB_LQUAD_VALID_READY', - 'CB_PERF_SEL_DB_CB_LQUAD_VALID_READYB', - 'CB_PERF_SEL_DB_CB_TILE_TILENOTEVENT', - 'CB_PERF_SEL_DB_CB_TILE_VALIDB_READY', - 'CB_PERF_SEL_DB_CB_TILE_VALIDB_READYB', - 'CB_PERF_SEL_DB_CB_TILE_VALID_READY', - 'CB_PERF_SEL_DB_CB_TILE_VALID_READYB', - 'CB_PERF_SEL_DC_MC_EARLY_WRITE_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_DC_MC_EARLY_WRITE_RETURN', - 'CB_PERF_SEL_DC_MC_WRITE_ACK64B', 'CB_PERF_SEL_DRAWN_BUSY', - 'CB_PERF_SEL_DRAWN_PIXEL', 'CB_PERF_SEL_DRAWN_QUAD', - 'CB_PERF_SEL_DRAWN_QUAD_FRAGMENT', 'CB_PERF_SEL_DRAWN_TILE', - 'CB_PERF_SEL_DUAL_SOURCE_COLOR_QUAD_FRAGMENT', - 'CB_PERF_SEL_EVENT', 'CB_PERF_SEL_EVENT_BOTTOM_OF_PIPE_TS', - 'CB_PERF_SEL_EVENT_CACHE_FLUSH', - 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_EVENT', - 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_TS_EVENT', - 'CB_PERF_SEL_EVENT_CACHE_FLUSH_TS', - 'CB_PERF_SEL_EVENT_CONTEXT_DONE', - 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_DATA_TS', - 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_META', - 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_PIXEL_DATA', - 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_DB_DATA_TS', - 'CB_PERF_SEL_EXPORT_32_ABGR_QUAD_FRAGMENT', - 'CB_PERF_SEL_FCR_TO_CCR_REGION_BUSY', - 'CB_PERF_SEL_FC_CACHE_ACK_OUTPUT_STALL', - 'CB_PERF_SEL_FC_CACHE_DIRTY_SECTORS_FLUSHED', - 'CB_PERF_SEL_FC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 'CB_PERF_SEL_FC_CACHE_FLUSH', 'CB_PERF_SEL_FC_CACHE_HIT', - 'CB_PERF_SEL_FC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 'CB_PERF_SEL_FC_CACHE_READ_OUTPUT_STALL', - 'CB_PERF_SEL_FC_CACHE_REEVICTION_STALL', - 'CB_PERF_SEL_FC_CACHE_REPLACE_PENDING_EVICT_STALL', - 'CB_PERF_SEL_FC_CACHE_SECTORS_FLUSHED', - 'CB_PERF_SEL_FC_CACHE_SECTOR_MISS', 'CB_PERF_SEL_FC_CACHE_STALL', - 'CB_PERF_SEL_FC_CACHE_TAGS_FLUSHED', - 'CB_PERF_SEL_FC_CACHE_TAG_MISS', - 'CB_PERF_SEL_FC_CACHE_WRITE_OUTPUT_STALL', - 'CB_PERF_SEL_FC_CC_QUADFRAG_VALIDB_READY', - 'CB_PERF_SEL_FC_CC_QUADFRAG_VALIDB_READYB', - 'CB_PERF_SEL_FC_CC_QUADFRAG_VALID_READY', - 'CB_PERF_SEL_FC_CC_QUADFRAG_VALID_READYB', - 'CB_PERF_SEL_FC_CLEAR_QUAD_VALIDB_READY', - 'CB_PERF_SEL_FC_CLEAR_QUAD_VALIDB_READYB', - 'CB_PERF_SEL_FC_CLEAR_QUAD_VALID_READY', - 'CB_PERF_SEL_FC_CLEAR_QUAD_VALID_READYB', - 'CB_PERF_SEL_FC_DCC_CACHE_ACK_OUTPUT_STALL', - 'CB_PERF_SEL_FC_DCC_CACHE_DIRTY_SECTORS_FLUSHED', - 'CB_PERF_SEL_FC_DCC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 'CB_PERF_SEL_FC_DCC_CACHE_FLUSH', 'CB_PERF_SEL_FC_DCC_CACHE_HIT', - 'CB_PERF_SEL_FC_DCC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 'CB_PERF_SEL_FC_DCC_CACHE_READ_OUTPUT_STALL', - 'CB_PERF_SEL_FC_DCC_CACHE_REEVICTION_STALL', - 'CB_PERF_SEL_FC_DCC_CACHE_REPLACE_PENDING_EVICT_STALL', - 'CB_PERF_SEL_FC_DCC_CACHE_SECTORS_FLUSHED', - 'CB_PERF_SEL_FC_DCC_CACHE_SECTOR_MISS', - 'CB_PERF_SEL_FC_DCC_CACHE_STALL', - 'CB_PERF_SEL_FC_DCC_CACHE_TAGS_FLUSHED', - 'CB_PERF_SEL_FC_DCC_CACHE_TAG_MISS', - 'CB_PERF_SEL_FC_DCC_CACHE_WRITE_OUTPUT_STALL', - 'CB_PERF_SEL_FC_DCC_KEY_VALUE__CLEAR', - 'CB_PERF_SEL_FC_DOC_CLINE_CAM_HIT', - 'CB_PERF_SEL_FC_DOC_CLINE_CAM_MISS', - 'CB_PERF_SEL_FC_DOC_IS_STALLED', - 'CB_PERF_SEL_FC_DOC_MRTS_COMBINED', - 'CB_PERF_SEL_FC_DOC_MRTS_NOT_COMBINED', - 'CB_PERF_SEL_FC_DOC_OVERWROTE_1_SECTOR', - 'CB_PERF_SEL_FC_DOC_OVERWROTE_2_SECTORS', - 'CB_PERF_SEL_FC_DOC_OVERWROTE_3_SECTORS', - 'CB_PERF_SEL_FC_DOC_OVERWROTE_4_SECTORS', - 'CB_PERF_SEL_FC_DOC_QTILE_CAM_HIT', - 'CB_PERF_SEL_FC_DOC_QTILE_CAM_MISS', - 'CB_PERF_SEL_FC_DOC_QUAD_PTR_FIFO_IS_FULL', - 'CB_PERF_SEL_FC_DOC_TOTAL_OVERWRITTEN_SECTORS', - 'CB_PERF_SEL_FC_KEYID_RDLAT_FIFO_FULL', - 'CB_PERF_SEL_FC_KEYID_STUTTER_STALL', - 'CB_PERF_SEL_FC_MC_DCC_READ_REQUEST', - 'CB_PERF_SEL_FC_MC_DCC_READ_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_FC_MC_DCC_WRITE_REQUEST', - 'CB_PERF_SEL_FC_MC_DCC_WRITE_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_FC_MC_EARLY_WRITE_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_FC_MC_EARLY_WRITE_RETURN', - 'CB_PERF_SEL_FC_MC_READ_REQUEST', - 'CB_PERF_SEL_FC_MC_READ_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_FC_MC_WRITE_ACK64B', - 'CB_PERF_SEL_FC_MC_WRITE_REQUEST', - 'CB_PERF_SEL_FC_MC_WRITE_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_FC_PF_SLOW_MODE_QUAD_EMPTY_HALF_DROPPED', - 'CB_PERF_SEL_FC_QUAD_RDLAT_FIFO_FULL', - 'CB_PERF_SEL_FC_QUAD_STUTTER_STALL', - 'CB_PERF_SEL_FC_RDLAT_FIFO_QUAD_RESIDENCY_STALL', - 'CB_PERF_SEL_FC_SEQUENCER_CLEAR', - 'CB_PERF_SEL_FC_SEQUENCER_ELIMINATE_FAST_CLEAR', - 'CB_PERF_SEL_FC_SEQUENCER_FMASK_COMPRESSION_DISABLE', - 'CB_PERF_SEL_FC_SEQUENCER_FMASK_DECOMPRESS', - 'CB_PERF_SEL_FC_TILE_RDLAT_FIFO_FULL', - 'CB_PERF_SEL_FC_TILE_STUTTER_STALL', - 'CB_PERF_SEL_FOP_FMASK_BYPASS_STALL', - 'CB_PERF_SEL_FOP_FMASK_RAW_STALL', - 'CB_PERF_SEL_FOP_IN_VALIDB_READY', - 'CB_PERF_SEL_FOP_IN_VALIDB_READYB', - 'CB_PERF_SEL_FOP_IN_VALID_READY', - 'CB_PERF_SEL_FOP_IN_VALID_READYB', - 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_16_16_FLOAT_8PIX', - 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_16_16_SIGNED_8PIX', - 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_16_16_UNSIGNED_8PIX', - 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32BPP_8PIX', - 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_ABGR', - 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_AR', - 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_GR', - 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_R', - 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_FP16_ABGR', - 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_SIGNED16_ABGR', - 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_UNSIGNED16_ABGR', - 'CB_PERF_SEL_LQUAD_NO_TILE', - 'CB_PERF_SEL_MERGE_PIXELS_WITH_BLEND_ENABLED', - 'CB_PERF_SEL_MERGE_TILE_ONLY_VALID_READY', - 'CB_PERF_SEL_MERGE_TILE_ONLY_VALID_READYB', - 'CB_PERF_SEL_NACK_CC_READ', 'CB_PERF_SEL_NACK_CC_WRITE', - 'CB_PERF_SEL_NACK_CM_READ', 'CB_PERF_SEL_NACK_CM_WRITE', - 'CB_PERF_SEL_NACK_DC_READ', 'CB_PERF_SEL_NACK_DC_WRITE', - 'CB_PERF_SEL_NACK_FC_READ', 'CB_PERF_SEL_NACK_FC_WRITE', - 'CB_PERF_SEL_NONE', 'CB_PERF_SEL_QUAD_ADDED_1_FRAGMENT', - 'CB_PERF_SEL_QUAD_ADDED_2_FRAGMENTS', - 'CB_PERF_SEL_QUAD_ADDED_3_FRAGMENTS', - 'CB_PERF_SEL_QUAD_ADDED_4_FRAGMENTS', - 'CB_PERF_SEL_QUAD_ADDED_5_FRAGMENTS', - 'CB_PERF_SEL_QUAD_ADDED_6_FRAGMENTS', - 'CB_PERF_SEL_QUAD_ADDED_7_FRAGMENTS', - 'CB_PERF_SEL_QUAD_BLENDING_COULD_HAVE_BEEN_BYPASSED', - 'CB_PERF_SEL_QUAD_BLEND_OPT_BLEND_BYPASS', - 'CB_PERF_SEL_QUAD_BLEND_OPT_DISCARD_PIXELS', - 'CB_PERF_SEL_QUAD_BLEND_OPT_DONT_READ_DST', - 'CB_PERF_SEL_QUAD_COULD_HAVE_BEEN_DISCARDED', - 'CB_PERF_SEL_QUAD_DST_READ_COULD_HAVE_BEEN_OPTIMIZED', - 'CB_PERF_SEL_QUAD_HAS_1_FRAGMENT_AFTER_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_1_FRAGMENT_BEFORE_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_2_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_2_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_3_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_3_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_4_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_4_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_5_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_5_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_6_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_6_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_7_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_7_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_8_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_8_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_QUAD_KILLED_BY_COLOR_INVALID', - 'CB_PERF_SEL_QUAD_KILLED_BY_DISCARD_PIXEL', - 'CB_PERF_SEL_QUAD_KILLED_BY_EXTRA_PIXEL_EXPORT', - 'CB_PERF_SEL_QUAD_KILLED_BY_NULL_SAMPLE_MASK', - 'CB_PERF_SEL_QUAD_KILLED_BY_NULL_TARGET_SHADER_MASK', - 'CB_PERF_SEL_QUAD_READS_FRAGMENT_0', - 'CB_PERF_SEL_QUAD_READS_FRAGMENT_1', - 'CB_PERF_SEL_QUAD_READS_FRAGMENT_2', - 'CB_PERF_SEL_QUAD_READS_FRAGMENT_3', - 'CB_PERF_SEL_QUAD_READS_FRAGMENT_4', - 'CB_PERF_SEL_QUAD_READS_FRAGMENT_5', - 'CB_PERF_SEL_QUAD_READS_FRAGMENT_6', - 'CB_PERF_SEL_QUAD_READS_FRAGMENT_7', - 'CB_PERF_SEL_QUAD_REMOVED_1_FRAGMENT', - 'CB_PERF_SEL_QUAD_REMOVED_2_FRAGMENTS', - 'CB_PERF_SEL_QUAD_REMOVED_3_FRAGMENTS', - 'CB_PERF_SEL_QUAD_REMOVED_4_FRAGMENTS', - 'CB_PERF_SEL_QUAD_REMOVED_5_FRAGMENTS', - 'CB_PERF_SEL_QUAD_REMOVED_6_FRAGMENTS', - 'CB_PERF_SEL_QUAD_REMOVED_7_FRAGMENTS', - 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_0', - 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_1', - 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_2', - 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_3', - 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_4', - 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_5', - 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_6', - 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_7', - 'CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_BOTH', - 'CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_LEFT', - 'CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_RIGHT', - 'CB_PERF_SEL_RBP_INSERT_MISSING_LAST_QUAD', - 'CB_PERF_SEL_RBP_SPLIT_AA_NO_FMASK_COMPRESS', - 'CB_PERF_SEL_RBP_SPLIT_AA_SAMPLE_MASK', - 'CB_PERF_SEL_RBP_SPLIT_LINEAR_ADDRESSING', - 'CB_PERF_SEL_RBP_SPLIT_MICROTILE', - 'CB_PERF_SEL_RBP_SPLIT_PARTIAL_TARGET_MASK', - 'CB_PERF_SEL_REG_SCLK0_VLD', 'CB_PERF_SEL_REG_SCLK1_VLD', - 'CB_PERF_SEL_TILE_TO_CMR_REGION_BUSY', - 'CB_PERF_SEL_TWO_PROBE_QUAD_FRAGMENT', 'CB_RESERVED', - 'CB_RESOLVE', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_0', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_1', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_2', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_3', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_4', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_5', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_6', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_ALL', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_0', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_1', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_2', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_3', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_4', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_5', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_6', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_ALL', - 'CENTERS_ONLY', 'CENTROIDS_AND_CENTERS', 'CENTROIDS_ONLY', - 'CHA_PERF_SEL', 'CHA_PERF_SEL_ARB_REQUESTS', 'CHA_PERF_SEL_BUSY', - 'CHA_PERF_SEL_CYCLE', 'CHA_PERF_SEL_IO_32B_WDS_CHC0', - 'CHA_PERF_SEL_IO_32B_WDS_CHC1', 'CHA_PERF_SEL_IO_32B_WDS_CHC2', - 'CHA_PERF_SEL_IO_32B_WDS_CHC3', 'CHA_PERF_SEL_IO_32B_WDS_CHC4', - 'CHA_PERF_SEL_IO_BURST_COUNT_CHC0', - 'CHA_PERF_SEL_IO_BURST_COUNT_CHC1', - 'CHA_PERF_SEL_IO_BURST_COUNT_CHC2', - 'CHA_PERF_SEL_IO_BURST_COUNT_CHC3', - 'CHA_PERF_SEL_IO_BURST_COUNT_CHC4', - 'CHA_PERF_SEL_MEM_32B_WDS_CHC0', 'CHA_PERF_SEL_MEM_32B_WDS_CHC1', - 'CHA_PERF_SEL_MEM_32B_WDS_CHC2', 'CHA_PERF_SEL_MEM_32B_WDS_CHC3', - 'CHA_PERF_SEL_MEM_32B_WDS_CHC4', - 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC0', - 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC1', - 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC2', - 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC3', - 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC4', 'CHA_PERF_SEL_REQUEST_CHC0', - 'CHA_PERF_SEL_REQUEST_CHC1', 'CHA_PERF_SEL_REQUEST_CHC2', - 'CHA_PERF_SEL_REQUEST_CHC3', 'CHA_PERF_SEL_REQUEST_CHC4', - 'CHA_PERF_SEL_REQUEST_CHC5', 'CHA_PERF_SEL_REQ_INFLIGHT_LEVEL', - 'CHA_PERF_SEL_STALL_CHC0', 'CHA_PERF_SEL_STALL_CHC1', - 'CHA_PERF_SEL_STALL_CHC2', 'CHA_PERF_SEL_STALL_CHC3', - 'CHA_PERF_SEL_STALL_CHC4', 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC0', - 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC1', - 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC2', - 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC3', - 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC4', 'CHCG_PERF_SEL', - 'CHCG_PERF_SEL_CORE_REG_SCLK_VLD', 'CHCG_PERF_SEL_CYCLE', - 'CHCG_PERF_SEL_GATE_EN1', 'CHCG_PERF_SEL_GATE_EN2', - 'CHCG_PERF_SEL_REQ', 'CHCG_PERF_SEL_TA_CHC_ADDR_STARVE_CYCLES', - 'CHCG_PERF_SEL_TA_CHC_DATA_STARVE_CYCLES', 'CHC_PERF_SEL', - 'CHC_PERF_SEL_CORE_REG_SCLK_VLD', 'CHC_PERF_SEL_CYCLE', - 'CHC_PERF_SEL_GATE_EN1', 'CHC_PERF_SEL_GATE_EN2', - 'CHC_PERF_SEL_REQ', 'CHC_PERF_SEL_TA_CHC_ADDR_STARVE_CYCLES', - 'CHC_PERF_SEL_TA_CHC_DATA_STARVE_CYCLES', 'CHUNK_SIZE', - 'CHUNK_SIZE_16KB', 'CHUNK_SIZE_1KB', 'CHUNK_SIZE_2KB', - 'CHUNK_SIZE_32KB', 'CHUNK_SIZE_4KB', 'CHUNK_SIZE_64KB', - 'CHUNK_SIZE_8KB', 'CLEAR_SMU_INTR', 'CLKGATE_BASE_MODE', - 'CLKGATE_SM_MODE', 'CLOCK_BRANCH_SOFT_RESET', - 'CLOCK_BRANCH_SOFT_RESET_FORCE', 'CLOCK_BRANCH_SOFT_RESET_NOOP', - 'CLOCK_GATING_DISABLE', 'CLOCK_GATING_DISABLED', - 'CLOCK_GATING_DISABLED_IN_DCO', 'CLOCK_GATING_DISABLE_ENUM', - 'CLOCK_GATING_DISABLE_ENUM_DISABLED', - 'CLOCK_GATING_DISABLE_ENUM_ENABLED', 'CLOCK_GATING_EN', - 'CLOCK_GATING_ENABLE', 'CLOCK_GATING_ENABLED', - 'CLOCK_GATING_ENABLED_IN_DCO', 'CMASK_ADDR_COMPATIBLE', - 'CMASK_ADDR_LINEAR', 'CMASK_ADDR_TILED', 'CMASK_ALPHA0_FRAG1', - 'CMASK_ALPHA0_FRAG2', 'CMASK_ALPHA0_FRAG4', 'CMASK_ALPHA0_FRAGS', - 'CMASK_ALPHA1_FRAG1', 'CMASK_ALPHA1_FRAG2', 'CMASK_ALPHA1_FRAG4', - 'CMASK_ALPHA1_FRAGS', 'CMASK_ALPHAX_FRAG1', 'CMASK_ALPHAX_FRAG2', - 'CMASK_ALPHAX_FRAG4', 'CMASK_ALPHAX_FRAGS', 'CMASK_ANY_EXPANDED', - 'CMASK_CLEAR_ALL', 'CMASK_CLEAR_NONE', 'CMASK_CLEAR_ONE', - 'CMASK_CLR00_F0', 'CMASK_CLR00_F1', 'CMASK_CLR00_F2', - 'CMASK_CLR00_FX', 'CMASK_CLR01_F0', 'CMASK_CLR01_F1', - 'CMASK_CLR01_F2', 'CMASK_CLR01_FX', 'CMASK_CLR10_F0', - 'CMASK_CLR10_F1', 'CMASK_CLR10_F2', 'CMASK_CLR10_FX', - 'CMASK_CLR11_F0', 'CMASK_CLR11_F1', 'CMASK_CLR11_F2', - 'CMASK_CLR11_FX', 'CMC_3DLUT_17CUBE', 'CMC_3DLUT_30BIT', - 'CMC_3DLUT_30BIT_ENUM', 'CMC_3DLUT_36BIT', 'CMC_3DLUT_9CUBE', - 'CMC_3DLUT_RAM_SEL', 'CMC_3DLUT_SIZE_ENUM', - 'CMC_LUT_2CFG_MEMORY_A', 'CMC_LUT_2CFG_MEMORY_B', - 'CMC_LUT_2CFG_NO_MEMORY', 'CMC_LUT_2_CONFIG_ENUM', - 'CMC_LUT_2_MODE_BYPASS', 'CMC_LUT_2_MODE_ENUM', - 'CMC_LUT_2_MODE_RAMA_LUT', 'CMC_LUT_2_MODE_RAMB_LUT', - 'CMC_LUT_NUM_SEG', 'CMC_LUT_RAM_SEL', 'CMC_RAM0_ACCESS', - 'CMC_RAM1_ACCESS', 'CMC_RAM2_ACCESS', 'CMC_RAM3_ACCESS', - 'CMC_RAMA_ACCESS', 'CMC_RAMB_ACCESS', 'CMC_SEGMENTS_1', - 'CMC_SEGMENTS_128', 'CMC_SEGMENTS_16', 'CMC_SEGMENTS_2', - 'CMC_SEGMENTS_32', 'CMC_SEGMENTS_4', 'CMC_SEGMENTS_64', - 'CMC_SEGMENTS_8', 'CM_BYPASS', 'CM_COEF_FORMAT_ENUM', - 'CM_DATA_SIGNED', 'CM_DISABLE', 'CM_EN', 'CM_ENABLE', - 'CM_GAMUT_REMAP_MODE_ENUM', 'CM_ICSC_MODE_ENUM', - 'CM_LUT_2_CONFIG_ENUM', 'CM_LUT_2_MODE_ENUM', - 'CM_LUT_4_CONFIG_ENUM', 'CM_LUT_4_MODE_ENUM', 'CM_LUT_NUM_SEG', - 'CM_LUT_RAM_SEL', 'CM_NOT_PENDING', 'CM_PENDING', - 'CM_WRITE_BASE_ONLY', 'CM_YES_PENDING', 'CNVC_BYPASS', - 'CNVC_BYPASS_DISABLE', 'CNVC_BYPASS_EN', 'CNVC_DIS', 'CNVC_EN', - 'CNVC_ENABLE', 'CNVC_NOT_PENDING', 'CNVC_PENDING', 'CNVC_ROUND', - 'CNVC_TRUNCATE', 'CNVC_YES_PENDING', 'CNV_CSC_BYPASS_ENUM', - 'CNV_CSC_BYPASS_NEG', 'CNV_CSC_BYPASS_POS', 'CNV_EYE_SELECT', - 'CNV_FRAME_CAPTURE_DISABLE', 'CNV_FRAME_CAPTURE_ENABLE', - 'CNV_FRAME_CAPTURE_EN_ENUM', 'CNV_FRAME_CAPTURE_RATE_0', - 'CNV_FRAME_CAPTURE_RATE_1', 'CNV_FRAME_CAPTURE_RATE_2', - 'CNV_FRAME_CAPTURE_RATE_3', 'CNV_FRAME_CAPTURE_RATE_ENUM', - 'CNV_INTERLACED_FIELD_ORDER_BOT', - 'CNV_INTERLACED_FIELD_ORDER_ENUM', - 'CNV_INTERLACED_FIELD_ORDER_TOP', 'CNV_INTERLACED_MODE_ENUM', - 'CNV_INTERLACED_MODE_INTERLACED', - 'CNV_INTERLACED_MODE_PROGRESSIVE', 'CNV_NEW_CONTENT_ENUM', - 'CNV_NEW_CONTENT_NEG', 'CNV_NEW_CONTENT_POS', 'CNV_OUT_BPC_10BPC', - 'CNV_OUT_BPC_8BPC', 'CNV_OUT_BPC_ENUM', - 'CNV_STEREO_POLARITY_ENUM', 'CNV_STEREO_POLARITY_LEFT', - 'CNV_STEREO_POLARITY_RIGHT', 'CNV_STEREO_SPLIT_DISABLE', - 'CNV_STEREO_SPLIT_ENABLE', 'CNV_STEREO_SPLIT_ENUM', - 'CNV_STEREO_TYPE_ENUM', 'CNV_STEREO_TYPE_FRAME_SEQUENTIAL', - 'CNV_STEREO_TYPE_RESERVED0', 'CNV_STEREO_TYPE_RESERVED1', - 'CNV_STEREO_TYPE_RESERVED2', 'CNV_TEST_CRC_CONT_DISABLE', - 'CNV_TEST_CRC_CONT_ENABLE', 'CNV_TEST_CRC_CONT_EN_ENUM', - 'CNV_TEST_CRC_DISABLE', 'CNV_TEST_CRC_ENABLE', - 'CNV_TEST_CRC_EN_ENUM', 'CNV_UPDATE_LOCK', 'CNV_UPDATE_LOCK_ENUM', - 'CNV_UPDATE_PENDING_ENUM', 'CNV_UPDATE_PENDING_NEG', - 'CNV_UPDATE_PENDING_POS', 'CNV_UPDATE_UNLOCK', - 'CNV_WINDOW_CROP_DISABLE', 'CNV_WINDOW_CROP_ENABLE', - 'CNV_WINDOW_CROP_EN_ENUM', 'COEF_ICSC', 'COEF_ICSC_B', - 'COEF_RAM_SELECT_BACK', 'COEF_RAM_SELECT_CURRENT', - 'COEF_RAM_SELECT_RD', 'COLOR_10_10_10_2', 'COLOR_10_11_11', - 'COLOR_11_11_10', 'COLOR_16', 'COLOR_16_16', 'COLOR_16_16_16_16', - 'COLOR_1_5_5_5', 'COLOR_24BIT_1BIT_AND', - 'COLOR_24BIT_8BIT_ALPHA_PREMULT', - 'COLOR_24BIT_8BIT_ALPHA_UNPREMULT', 'COLOR_24_8', - 'COLOR_2_10_10_10', 'COLOR_2_10_10_10_6E4', 'COLOR_32', - 'COLOR_32_32', 'COLOR_32_32_32_32', 'COLOR_4_4_4_4', - 'COLOR_5_5_5_1', 'COLOR_5_6_5', 'COLOR_64BIT_FP_PREMULT', - 'COLOR_64BIT_FP_UNPREMULT', 'COLOR_8', 'COLOR_8_24', 'COLOR_8_8', - 'COLOR_8_8_8_8', 'COLOR_INVALID', 'COLOR_KEYER_MODE', - 'COLOR_RESERVED_13', 'COLOR_RESERVED_15', 'COLOR_RESERVED_23', - 'COLOR_RESERVED_24', 'COLOR_RESERVED_25', 'COLOR_RESERVED_26', - 'COLOR_RESERVED_27', 'COLOR_RESERVED_28', 'COLOR_RESERVED_29', - 'COLOR_RESERVED_30', 'COLOR_X24_8_32_FLOAT', 'COMB_DST_MINUS_SRC', - 'COMB_DST_PLUS_SRC', 'COMB_MAX_DST_SRC', 'COMB_MIN_DST_SRC', - 'COMB_SRC_MINUS_DST', 'CONFIG_128B_SWAPS', 'CONFIG_1KB_ROW', - 'CONFIG_1KB_ROW_OPT', 'CONFIG_1KB_SPLIT', 'CONFIG_1KB_SWAPS', - 'CONFIG_1_PIPE', 'CONFIG_256B_GROUP', 'CONFIG_256B_SWAPS', - 'CONFIG_2KB_ROW', 'CONFIG_2KB_ROW_OPT', 'CONFIG_2KB_SPLIT', - 'CONFIG_2_PIPE', 'CONFIG_4KB_ROW', 'CONFIG_4KB_ROW_OPT', - 'CONFIG_4KB_SPLIT', 'CONFIG_4_BANK', 'CONFIG_4_PIPE', - 'CONFIG_512B_GROUP', 'CONFIG_512B_SWAPS', 'CONFIG_8KB_ROW', - 'CONFIG_8KB_ROW_OPT', 'CONFIG_8KB_SPLIT', 'CONFIG_8_BANK', - 'CONFIG_8_PIPE', 'CONFIG_SPACE1_END', 'CONFIG_SPACE1_START', - 'CONFIG_SPACE2_END', 'CONFIG_SPACE2_START', 'CONFIG_SPACE_END', - 'CONFIG_SPACE_START', 'CONTEXT_DONE', 'CONTEXT_SPACE_END', - 'CONTEXT_SPACE_START', 'CONTEXT_SUSPEND', - 'CONTROLLER_RESET_AZ_CONTROLLER_IN_RESET', - 'CONTROLLER_RESET_AZ_CONTROLLER_NOT_IN_RESET', - 'CORB_READ_POINTER_RESET', - 'CORB_READ_POINTER_RESET_CORB_DMA_IS_NOT_RESET', - 'CORB_READ_POINTER_RESET_CORB_DMA_IS_RESET', 'COUNTER_RING_0', - 'COUNTER_RING_1', 'COUNTER_RING_SPLIT', 'CPC_LATENCY_STATS_SEL', - 'CPC_LATENCY_STATS_SEL_INVAL_LAST', - 'CPC_LATENCY_STATS_SEL_INVAL_MAX', - 'CPC_LATENCY_STATS_SEL_INVAL_MIN', - 'CPC_LATENCY_STATS_SEL_XACK_LAST', - 'CPC_LATENCY_STATS_SEL_XACK_MAX', - 'CPC_LATENCY_STATS_SEL_XACK_MIN', - 'CPC_LATENCY_STATS_SEL_XNACK_LAST', - 'CPC_LATENCY_STATS_SEL_XNACK_MAX', - 'CPC_LATENCY_STATS_SEL_XNACK_MIN', 'CPC_PERFCOUNT_SEL', - 'CPC_PERF_SEL_ALWAYS_COUNT', 'CPC_PERF_SEL_CPC_GCRIU_BUSY', - 'CPC_PERF_SEL_CPC_GCRIU_IDLE', 'CPC_PERF_SEL_CPC_GCRIU_STALL', - 'CPC_PERF_SEL_CPC_STAT_BUSY', 'CPC_PERF_SEL_CPC_STAT_IDLE', - 'CPC_PERF_SEL_CPC_STAT_STALL', 'CPC_PERF_SEL_CPC_TCIU_BUSY', - 'CPC_PERF_SEL_CPC_TCIU_IDLE', 'CPC_PERF_SEL_CPC_UTCL2IU_BUSY', - 'CPC_PERF_SEL_CPC_UTCL2IU_IDLE', 'CPC_PERF_SEL_CPC_UTCL2IU_STALL', - 'CPC_PERF_SEL_CPC_UTCL2IU_XACK', 'CPC_PERF_SEL_CPC_UTCL2IU_XNACK', - 'CPC_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 'CPC_PERF_SEL_ME1_BUSY_FOR_PACKET_DECODE', - 'CPC_PERF_SEL_ME1_DC0_SPI_BUSY', - 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ', - 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ_PERF', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_GUS_READ', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_GUS_WRITE', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READ', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY_PERF', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_TCIU_READ', - 'CPC_PERF_SEL_ME2_BUSY_FOR_PACKET_DECODE', - 'CPC_PERF_SEL_ME2_DC1_SPI_BUSY', - 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ', - 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ_PERF', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_GUS_READ', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_GUS_WRITE', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READ', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY_PERF', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_TCIU_READ', - 'CPC_PERF_SEL_MEC_INSTR_CACHE_HIT', - 'CPC_PERF_SEL_MEC_INSTR_CACHE_MISS', - 'CPC_PERF_SEL_MIU_STALL_ON_RDREQ_FREE', - 'CPC_PERF_SEL_MIU_STALL_ON_WRREQ_FREE', - 'CPC_PERF_SEL_RCIU_STALL_PRIV_VIOLATION', - 'CPC_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', - 'CPC_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 'CPC_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', 'CPC_TAG_RAM', - 'CPF_LATENCY_STATS_SEL', 'CPF_LATENCY_STATS_SEL_INVAL_LAST', - 'CPF_LATENCY_STATS_SEL_INVAL_MAX', - 'CPF_LATENCY_STATS_SEL_INVAL_MIN', - 'CPF_LATENCY_STATS_SEL_READ_LAST', - 'CPF_LATENCY_STATS_SEL_READ_MAX', - 'CPF_LATENCY_STATS_SEL_READ_MIN', - 'CPF_LATENCY_STATS_SEL_XACK_LAST', - 'CPF_LATENCY_STATS_SEL_XACK_MAX', - 'CPF_LATENCY_STATS_SEL_XACK_MIN', - 'CPF_LATENCY_STATS_SEL_XNACK_LAST', - 'CPF_LATENCY_STATS_SEL_XNACK_MAX', - 'CPF_LATENCY_STATS_SEL_XNACK_MIN', 'CPF_PERFCOUNTWINDOW_SEL', - 'CPF_PERFCOUNT_SEL', 'CPF_PERFWINDOW_SEL_CSF', - 'CPF_PERFWINDOW_SEL_HQD1', 'CPF_PERFWINDOW_SEL_HQD2', - 'CPF_PERFWINDOW_SEL_RDMA', 'CPF_PERFWINDOW_SEL_RWPP', - 'CPF_PERF_SEL_ALWAYS_COUNT', - 'CPF_PERF_SEL_CMP_UTCL1_STALL_ON_TRANSLATION', - 'CPF_PERF_SEL_CPF_GCRIU_BUSY', 'CPF_PERF_SEL_CPF_GCRIU_IDLE', - 'CPF_PERF_SEL_CPF_GCRIU_STALL', 'CPF_PERF_SEL_CPF_STAT_BUSY', - 'CPF_PERF_SEL_CPF_STAT_IDLE', 'CPF_PERF_SEL_CPF_STAT_STALL', - 'CPF_PERF_SEL_CPF_TCIU_BUSY', 'CPF_PERF_SEL_CPF_TCIU_IDLE', - 'CPF_PERF_SEL_CPF_TCIU_STALL', 'CPF_PERF_SEL_CPF_UTCL2IU_BUSY', - 'CPF_PERF_SEL_CPF_UTCL2IU_IDLE', 'CPF_PERF_SEL_CPF_UTCL2IU_STALL', - 'CPF_PERF_SEL_CPF_UTCL2IU_XACK', 'CPF_PERF_SEL_CPF_UTCL2IU_XNACK', - 'CPF_PERF_SEL_CPG_TCIU_STALL', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FECTHINC_STATE', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_DB', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB1', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB2', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_RING', - 'CPF_PERF_SEL_CSF_FETCHING_CMD_BUFFERS', - 'CPF_PERF_SEL_CSF_RTS_MIU_NOT_RTR', - 'CPF_PERF_SEL_CSF_STATE_FIFO_NOT_RTR', - 'CPF_PERF_SEL_DYNAMIC_CLOCK_VALID', - 'CPF_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 'CPF_PERF_SEL_GFX_UTCL1_STALL_ON_TRANSLATION', - 'CPF_PERF_SEL_GRBM_DWORDS_SENT', - 'CPF_PERF_SEL_GUS_READ_REQUEST_SEND', - 'CPF_PERF_SEL_GUS_WRITE_REQUEST_SEND', - 'CPF_PERF_SEL_MIU_BUSY_FOR_OUTSTANDING_TAGS', - 'CPF_PERF_SEL_MIU_STALLED_WAITING_RDREQ_FREE', - 'CPF_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', - 'CPF_PERF_SEL_REGISTER_CLOCK_VALID', - 'CPF_PERF_SEL_TCIU_READ_REQUEST_SENT', - 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_FREE', - 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_TAGS', - 'CPF_PERF_SEL_TCIU_WRITE_REQUEST_SENT', - 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', 'CPF_TAG_RAM', - 'CPG_LATENCY_STATS_SEL', 'CPG_LATENCY_STATS_SEL_ATOMIC_LAST', - 'CPG_LATENCY_STATS_SEL_ATOMIC_MAX', - 'CPG_LATENCY_STATS_SEL_ATOMIC_MIN', - 'CPG_LATENCY_STATS_SEL_INVAL_LAST', - 'CPG_LATENCY_STATS_SEL_INVAL_MAX', - 'CPG_LATENCY_STATS_SEL_INVAL_MIN', - 'CPG_LATENCY_STATS_SEL_READ_LAST', - 'CPG_LATENCY_STATS_SEL_READ_MAX', - 'CPG_LATENCY_STATS_SEL_READ_MIN', - 'CPG_LATENCY_STATS_SEL_WRITE_LAST', - 'CPG_LATENCY_STATS_SEL_WRITE_MAX', - 'CPG_LATENCY_STATS_SEL_WRITE_MIN', - 'CPG_LATENCY_STATS_SEL_XACK_LAST', - 'CPG_LATENCY_STATS_SEL_XACK_MAX', - 'CPG_LATENCY_STATS_SEL_XACK_MIN', - 'CPG_LATENCY_STATS_SEL_XNACK_LAST', - 'CPG_LATENCY_STATS_SEL_XNACK_MAX', - 'CPG_LATENCY_STATS_SEL_XNACK_MIN', 'CPG_PERFCOUNTWINDOW_SEL', - 'CPG_PERFCOUNT_SEL', 'CPG_PERFWINDOW_SEL_APPEND', - 'CPG_PERFWINDOW_SEL_CE', 'CPG_PERFWINDOW_SEL_CEDMA', - 'CPG_PERFWINDOW_SEL_CPC_IC', 'CPG_PERFWINDOW_SEL_CPG_IC', - 'CPG_PERFWINDOW_SEL_DDID', 'CPG_PERFWINDOW_SEL_DFY', - 'CPG_PERFWINDOW_SEL_DMA', 'CPG_PERFWINDOW_SEL_ME', - 'CPG_PERFWINDOW_SEL_MEC1', 'CPG_PERFWINDOW_SEL_MEC2', - 'CPG_PERFWINDOW_SEL_MEMRD', 'CPG_PERFWINDOW_SEL_MEMWR', - 'CPG_PERFWINDOW_SEL_MES', 'CPG_PERFWINDOW_SEL_PFP', - 'CPG_PERFWINDOW_SEL_PQ1', 'CPG_PERFWINDOW_SEL_PQ2', - 'CPG_PERFWINDOW_SEL_PQ3', 'CPG_PERFWINDOW_SEL_PRT_HDR_RPTR', - 'CPG_PERFWINDOW_SEL_PRT_SMP_RPTR', 'CPG_PERFWINDOW_SEL_QURD', - 'CPG_PERFWINDOW_SEL_QU_EOP', 'CPG_PERFWINDOW_SEL_QU_PIPE', - 'CPG_PERFWINDOW_SEL_QU_STRM', 'CPG_PERFWINDOW_SEL_RB', - 'CPG_PERFWINDOW_SEL_RESERVED1', 'CPG_PERFWINDOW_SEL_RESERVED2', - 'CPG_PERFWINDOW_SEL_SHADOW', 'CPG_PERFWINDOW_SEL_SR', - 'CPG_PERFWINDOW_SEL_VGT0', 'CPG_PERFWINDOW_SEL_VGT1', - 'CPG_PERF_SEL_ALL_GFX_PIPES_BUSY', 'CPG_PERF_SEL_ALWAYS_COUNT', - 'CPG_PERF_SEL_CE_INSTR_CACHE_HIT', - 'CPG_PERF_SEL_CE_INSTR_CACHE_MISS', - 'CPG_PERF_SEL_CE_STALL_ON_CE_BUFFER_FLAG', - 'CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_MIU', - 'CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_ROQ', - 'CPG_PERF_SEL_CE_STALL_ON_DE_COUNTER', - 'CPG_PERF_SEL_CE_STALL_ON_INC_FIFO', - 'CPG_PERF_SEL_CE_STALL_ON_WR_RAM_FIFO', - 'CPG_PERF_SEL_CE_STALL_RAM_DUMP', - 'CPG_PERF_SEL_CE_STALL_RAM_WRITE', - 'CPG_PERF_SEL_COUNT_TYPE0_PACKETS', - 'CPG_PERF_SEL_COUNT_TYPE3_PACKETS', 'CPG_PERF_SEL_CPG_GCRIU_BUSY', - 'CPG_PERF_SEL_CPG_GCRIU_IDLE', 'CPG_PERF_SEL_CPG_GCRIU_STALL', - 'CPG_PERF_SEL_CPG_STAT_BUSY', 'CPG_PERF_SEL_CPG_STAT_IDLE', - 'CPG_PERF_SEL_CPG_STAT_STALL', 'CPG_PERF_SEL_CPG_TCIU_BUSY', - 'CPG_PERF_SEL_CPG_TCIU_IDLE', 'CPG_PERF_SEL_CPG_UTCL2IU_BUSY', - 'CPG_PERF_SEL_CPG_UTCL2IU_IDLE', 'CPG_PERF_SEL_CPG_UTCL2IU_STALL', - 'CPG_PERF_SEL_CPG_UTCL2IU_XACK', 'CPG_PERF_SEL_CPG_UTCL2IU_XNACK', - 'CPG_PERF_SEL_CP_GDS_GRBM_OUT_OF_CREDITS', - 'CPG_PERF_SEL_CP_GRBM_DWORDS_SENT', - 'CPG_PERF_SEL_CP_GRBM_OUT_OF_CREDITS', - 'CPG_PERF_SEL_CP_PFP_GRBM_OUT_OF_CREDITS', - 'CPG_PERF_SEL_CSF_FETCHING_CMD_BUFFERS', - 'CPG_PERF_SEL_CSF_RTS_BUT_MIU_NOT_RTR', - 'CPG_PERF_SEL_CSF_ST_BASE_SIZE_FIFO_FULL', - 'CPG_PERF_SEL_DYNAMIC_CLK_VALID', - 'CPG_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 'CPG_PERF_SEL_GUS_READ_REQUEST_SENT', - 'CPG_PERF_SEL_GUS_WRITE_REQUEST_SENT', - 'CPG_PERF_SEL_LOAD_STALLED_ON_SET_COHERENCY', - 'CPG_PERF_SEL_ME_INSTR_CACHE_HIT', - 'CPG_PERF_SEL_ME_INSTR_CACHE_MISS', 'CPG_PERF_SEL_ME_PARSER_BUSY', - 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_PFP', - 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_STQ', - 'CPG_PERF_SEL_ME_STALLED_ON_NO_AVAIL_GFX_CNTX', - 'CPG_PERF_SEL_ME_STALLED_ON_PARTIAL_FLUSH', - 'CPG_PERF_SEL_ME_STALLED_WRITING_CONSTANTS', - 'CPG_PERF_SEL_ME_STALLED_WRITING_TO_RCIU', - 'CPG_PERF_SEL_ME_WAIT_ON_AVAIL_BUFFER', - 'CPG_PERF_SEL_ME_WAIT_ON_CE_COUNTER', - 'CPG_PERF_SEL_PFP_INSTR_CACHE_HIT', - 'CPG_PERF_SEL_PFP_INSTR_CACHE_MISS', - 'CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB1', - 'CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB2', - 'CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB1', - 'CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB2', - 'CPG_PERF_SEL_PFP_STALLED_FOR_DATA_FROM_ROQ', - 'CPG_PERF_SEL_PFP_STALLED_ON_CSF_READY', - 'CPG_PERF_SEL_PFP_STALLED_ON_MEQ_DDID_READY', - 'CPG_PERF_SEL_PFP_STALLED_ON_MEQ_READY', - 'CPG_PERF_SEL_PFP_STALLED_ON_RCIU_READY', - 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_PULSE', - 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_WR_CONFIRM', - 'CPG_PERF_SEL_RBIU_FIFO_FULL', - 'CPG_PERF_SEL_RCIU_STALLED_ON_DMA_READ', - 'CPG_PERF_SEL_RCIU_STALLED_ON_ME_READ', - 'CPG_PERF_SEL_REGISTER_CLK_VALID', - 'CPG_PERF_SEL_SEMAPHORE_BUSY_POLLING_FOR_PASS', - 'CPG_PERF_SEL_SSU_STALLED_ON_ACTIVE_CNTX', - 'CPG_PERF_SEL_SSU_STALLED_ON_CLEAN_SIGNALS', - 'CPG_PERF_SEL_TCIU_READ_REQUEST_SENT', - 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_TAGS', - 'CPG_PERF_SEL_TCIU_WRITE_REQUEST_SENT', - 'CPG_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', 'CPG_TAG_RAM', - 'CP_ALPHA_TAG_RAM_SEL', 'CP_DDID_CNTL_MODE', 'CP_DDID_CNTL_SIZE', - 'CP_DDID_CNTL_VMID_SEL', 'CP_ME_ID', 'CP_PERFMON_ENABLE_MODE', - 'CP_PERFMON_ENABLE_MODE_ALWAYS_COUNT', - 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_FALSE', - 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_TRUE', - 'CP_PERFMON_ENABLE_MODE_RESERVED_1', 'CP_PERFMON_STATE', - 'CP_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', - 'CP_PERFMON_STATE_DISABLE_AND_RESET', - 'CP_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 'CP_PERFMON_STATE_RESERVED_3', 'CP_PERFMON_STATE_START_COUNTING', - 'CP_PERFMON_STATE_STOP_COUNTING', 'CP_PIPE_ID', 'CP_RING_ID', - 'CRC_CUR_0', 'CRC_CUR_1', 'CRC_CUR_BITS_0', 'CRC_CUR_BITS_1', - 'CRC_CUR_BITS_SEL', 'CRC_CUR_SEL', 'CRC_INTERLACE_0', - 'CRC_INTERLACE_1', 'CRC_INTERLACE_2', 'CRC_INTERLACE_3', - 'CRC_INTERLACE_SEL', 'CRC_IN_CUR_0', 'CRC_IN_CUR_1', - 'CRC_IN_CUR_SEL', 'CRC_IN_PIX_0', 'CRC_IN_PIX_1', 'CRC_IN_PIX_2', - 'CRC_IN_PIX_3', 'CRC_IN_PIX_4', 'CRC_IN_PIX_5', 'CRC_IN_PIX_6', - 'CRC_IN_PIX_7', 'CRC_IN_PIX_SEL', 'CRC_SRC_0', 'CRC_SRC_1', - 'CRC_SRC_2', 'CRC_SRC_3', 'CRC_SRC_SEL', 'CRC_STEREO_0', - 'CRC_STEREO_1', 'CRC_STEREO_2', 'CRC_STEREO_3', 'CRC_STEREO_SEL', - 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_1', - 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_2', - 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 'CROB_MEM_PWR_LIGHT_SLEEP_MODE', 'CROSSBAR_FOR_ALPHA', - 'CROSSBAR_FOR_CB_B', 'CROSSBAR_FOR_CR_R', 'CROSSBAR_FOR_Y_G', - 'CR_R_DATA_ON_ALPHA_PORT', 'CR_R_DATA_ON_CB_B_PORT', - 'CR_R_DATA_ON_CR_R_PORT', 'CR_R_DATA_ON_Y_G_PORT', - 'CSCNTL_ADDR_WIDTH', 'CSCNTL_DATA_WIDTH', 'CSCNTL_TYPE', - 'CSCNTL_TYPE_EVENT', 'CSCNTL_TYPE_PRIVATE', 'CSCNTL_TYPE_STATE', - 'CSCNTL_TYPE_TG', 'CSCNTL_TYPE_WIDTH', 'CSDATA_ADDR_WIDTH', - 'CSDATA_DATA_WIDTH', 'CSDATA_TYPE', 'CSDATA_TYPE_EVENT', - 'CSDATA_TYPE_PRIVATE', 'CSDATA_TYPE_STATE', 'CSDATA_TYPE_TG', - 'CSDATA_TYPE_WIDTH', 'CS_CONTEXT_DONE', 'CS_DONE', 'CS_NA', - 'CS_PARTIAL_FLUSH', 'CS_STAGE_ON', 'CURSOR_2X_MAGNIFY', - 'CURSOR_2X_MAGNIFY_IS_DISABLE', 'CURSOR_2X_MAGNIFY_IS_ENABLE', - 'CURSOR_COLOR_24BIT_1BIT_AND', - 'CURSOR_COLOR_24BIT_8BIT_ALPHA_PREMULT', - 'CURSOR_COLOR_24BIT_8BIT_ALPHA_UNPREMULT', - 'CURSOR_COLOR_64BIT_FP_PREMULT', - 'CURSOR_COLOR_64BIT_FP_UNPREMULT', 'CURSOR_ENABLE', - 'CURSOR_IN_GUEST_PHYSICAL_ADDRESS', - 'CURSOR_IN_SYSTEM_PHYSICAL_ADDRESS', 'CURSOR_IS_DISABLE', - 'CURSOR_IS_ENABLE', 'CURSOR_IS_NOT_SNOOP', 'CURSOR_IS_SNOOP', - 'CURSOR_LINES_PER_CHUNK', 'CURSOR_LINE_PER_CHUNK_1', - 'CURSOR_LINE_PER_CHUNK_16', 'CURSOR_LINE_PER_CHUNK_2', - 'CURSOR_LINE_PER_CHUNK_4', 'CURSOR_LINE_PER_CHUNK_8', - 'CURSOR_MODE', 'CURSOR_MONO_2BIT', - 'CURSOR_PERFMON_LATENCY_MEASURE_CROB_LATENCY', - 'CURSOR_PERFMON_LATENCY_MEASURE_EN', - 'CURSOR_PERFMON_LATENCY_MEASURE_IS_DISABLED', - 'CURSOR_PERFMON_LATENCY_MEASURE_IS_ENABLED', - 'CURSOR_PERFMON_LATENCY_MEASURE_MC_LATENCY', - 'CURSOR_PERFMON_LATENCY_MEASURE_SEL', 'CURSOR_PITCH', - 'CURSOR_PITCH_128_PIXELS', 'CURSOR_PITCH_256_PIXELS', - 'CURSOR_PITCH_64_PIXELS', 'CURSOR_SNOOP', 'CURSOR_STEREO_EN', - 'CURSOR_STEREO_IS_DISABLED', 'CURSOR_STEREO_IS_ENABLED', - 'CURSOR_SURFACE_IS_NOT_TMZ', 'CURSOR_SURFACE_IS_TMZ', - 'CURSOR_SURFACE_TMZ', 'CURSOR_SYSTEM', - 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS', - 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_0', - 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_1', - 'CUR_CLAMP_DIS', 'CUR_CLAMP_EN', 'CUR_DIS', - 'CUR_DYNAMIC_EXPANSION', 'CUR_EN', 'CUR_ENABLE', - 'CUR_EXPAND_MODE', 'CUR_FP_NO_ROM', 'CUR_FP_USE_ROM', - 'CUR_INV_CLAMP', 'CUR_MODE', 'CUR_NOT_PENDING', 'CUR_PENDING', - 'CUR_ROM_EN', 'CUR_YES_PENDING', 'CUR_ZERO_EXPANSION', - 'CbYCrY10101010_422_PACKED', 'CbYCrY12121212_422_PACKED', - 'CbYCrY8888_422_PACKED', 'CmaskAddr', 'CmaskCode', 'CmaskMode', - 'ColorArray', 'ColorFormat', 'ColorTransform', 'CombFunc', - 'CompareFrag', 'CompareRef', 'ConservativeZExport', - 'CovToShaderSel', 'CrYCbA1010102', 'CrYCbA16161616_10LSB', - 'CrYCbA16161616_10MSB', 'CrYCbA16161616_12LSB', - 'CrYCbA16161616_12MSB', 'CrYCbA8888', 'CrYCbY10101010_422_PACKED', - 'CrYCbY12121212_422_PACKED', 'CrYCbY8888_422_PACKED', - 'DAC_MUX_SELECT', 'DAC_MUX_SELECT_DACA', 'DAC_MUX_SELECT_DACB', - 'DB_BREAK_BATCH_EVENT', 'DB_CACHE_FLUSH', - 'DB_CACHE_FLUSH_AND_INV', 'DB_CACHE_FLUSH_AND_INV_EVENT', - 'DB_CACHE_FLUSH_AND_INV_TS_EVENT', 'DB_CACHE_FLUSH_TS', - 'DB_CONTEXT_DONE_EVENT', 'DB_CONTEXT_SUSPEND_EVENT', - 'DB_FLUSH_AND_INV_DB_DATA_TS', 'DB_FLUSH_AND_INV_DB_META', - 'DB_PERF_SEL_CB_DB_rdreq_prt_sends', - 'DB_PERF_SEL_CB_DB_rdreq_sends', - 'DB_PERF_SEL_CB_DB_wrreq_prt_sends', - 'DB_PERF_SEL_CB_DB_wrreq_sends', - 'DB_PERF_SEL_DB_CB_context_dones', 'DB_PERF_SEL_DB_CB_eop_dones', - 'DB_PERF_SEL_DB_CB_lquad_busy', - 'DB_PERF_SEL_DB_CB_lquad_double_format', - 'DB_PERF_SEL_DB_CB_lquad_export_quads', - 'DB_PERF_SEL_DB_CB_lquad_fast_format', - 'DB_PERF_SEL_DB_CB_lquad_fmt_16_16_float_8pix', - 'DB_PERF_SEL_DB_CB_lquad_fmt_16_16_signed_8pix', - 'DB_PERF_SEL_DB_CB_lquad_fmt_16_16_unsigned_8pix', - 'DB_PERF_SEL_DB_CB_lquad_fmt_32bpp_8pix', - 'DB_PERF_SEL_DB_CB_lquad_num_pixels_need_blending', - 'DB_PERF_SEL_DB_CB_lquad_quads', 'DB_PERF_SEL_DB_CB_lquad_sends', - 'DB_PERF_SEL_DB_CB_lquad_slow_format', - 'DB_PERF_SEL_DB_CB_lquad_stalls', 'DB_PERF_SEL_DB_CB_rdret_ack', - 'DB_PERF_SEL_DB_CB_rdret_nack', 'DB_PERF_SEL_DB_CB_tile_busy', - 'DB_PERF_SEL_DB_CB_tile_is_event_BOTTOM_OF_PIPE_TS', - 'DB_PERF_SEL_DB_CB_tile_is_event_FLUSH_AND_INV_CB_PIXEL_DATA', - 'DB_PERF_SEL_DB_CB_tile_is_event_FLUSH_AND_INV_DB_DATA_TS', - 'DB_PERF_SEL_DB_CB_tile_sends', 'DB_PERF_SEL_DB_CB_tile_stalls', - 'DB_PERF_SEL_DB_CB_tile_waiting_for_perfcounter_stop_event', - 'DB_PERF_SEL_DB_CB_wrret_ack', 'DB_PERF_SEL_DB_CB_wrret_nack', - 'DB_PERF_SEL_DB_SC_c_tile_rate', 'DB_PERF_SEL_DB_SC_quad_busy', - 'DB_PERF_SEL_DB_SC_quad_double_quad', - 'DB_PERF_SEL_DB_SC_quad_lit_quad', - 'DB_PERF_SEL_DB_SC_quad_lit_quad_pre_invoke', - 'DB_PERF_SEL_DB_SC_quad_quads_with_1_pixel', - 'DB_PERF_SEL_DB_SC_quad_quads_with_2_pixels', - 'DB_PERF_SEL_DB_SC_quad_quads_with_3_pixels', - 'DB_PERF_SEL_DB_SC_quad_quads_with_4_pixels', - 'DB_PERF_SEL_DB_SC_quad_sends', 'DB_PERF_SEL_DB_SC_quad_stalls', - 'DB_PERF_SEL_DB_SC_quad_tiles', 'DB_PERF_SEL_DB_SC_s_tile_rate', - 'DB_PERF_SEL_DB_SC_tile_busy', 'DB_PERF_SEL_DB_SC_tile_culled', - 'DB_PERF_SEL_DB_SC_tile_df_stalls', - 'DB_PERF_SEL_DB_SC_tile_fast_ops', - 'DB_PERF_SEL_DB_SC_tile_fast_stencil_ops', - 'DB_PERF_SEL_DB_SC_tile_fast_z_ops', - 'DB_PERF_SEL_DB_SC_tile_hier_kill', - 'DB_PERF_SEL_DB_SC_tile_no_ops', 'DB_PERF_SEL_DB_SC_tile_sends', - 'DB_PERF_SEL_DB_SC_tile_ssaa_kill', - 'DB_PERF_SEL_DB_SC_tile_stalls', - 'DB_PERF_SEL_DB_SC_tile_tile_rate', - 'DB_PERF_SEL_DB_SC_tile_tiles', 'DB_PERF_SEL_DB_SC_z_tile_rate', - 'DB_PERF_SEL_DFSM_Flush_flushabit', - 'DB_PERF_SEL_DFSM_Flush_flushabit_camcoord_fifo', - 'DB_PERF_SEL_DFSM_Flush_flushabit_forceflush', - 'DB_PERF_SEL_DFSM_Flush_flushabit_nearlyfull', - 'DB_PERF_SEL_DFSM_Flush_flushabit_passthrough', - 'DB_PERF_SEL_DFSM_Flush_flushabit_primitivesinflightwatermark', - 'DB_PERF_SEL_DFSM_Flush_flushabit_punch_stalling', - 'DB_PERF_SEL_DFSM_Flush_flushabit_retainedtilefifo_watermark', - 'DB_PERF_SEL_DFSM_Flush_flushabit_tilesinflightwatermark', - 'DB_PERF_SEL_DFSM_Flush_flushall', - 'DB_PERF_SEL_DFSM_Flush_flushall_dfsmflush', - 'DB_PERF_SEL_DFSM_Flush_flushall_opmodechange', - 'DB_PERF_SEL_DFSM_Flush_flushall_sampleratechange', - 'DB_PERF_SEL_DFSM_Flush_flushall_watchdog', - 'DB_PERF_SEL_DFSM_Stall_bypass_fifo', - 'DB_PERF_SEL_DFSM_Stall_cam_fifo', - 'DB_PERF_SEL_DFSM_Stall_control_fifo', - 'DB_PERF_SEL_DFSM_Stall_middle_output', - 'DB_PERF_SEL_DFSM_Stall_opmode_change', - 'DB_PERF_SEL_DFSM_Stall_overflow_counter', - 'DB_PERF_SEL_DFSM_Stall_pops_stall_overflow', - 'DB_PERF_SEL_DFSM_Stall_pops_stall_self_flush', - 'DB_PERF_SEL_DFSM_Stall_retained_tile_fifo', - 'DB_PERF_SEL_DFSM_Stall_stalling_general', - 'DB_PERF_SEL_DFSM_cant_accept_squads_but_not_stalled_by_downstream', - 'DB_PERF_SEL_DFSM_collisions_detected_within_POPS_FIFO', - 'DB_PERF_SEL_DFSM_collisions_due_to_POPS_overflow', - 'DB_PERF_SEL_DFSM_evicted_squads_above_watermark', - 'DB_PERF_SEL_DFSM_evicted_squads_due_to_prim_watermark', - 'DB_PERF_SEL_DFSM_evicted_tiles_above_watermark', - 'DB_PERF_SEL_DFSM_full_cleared_squads_out', - 'DB_PERF_SEL_DFSM_fully_cleared_pixels_out', - 'DB_PERF_SEL_DFSM_fully_cleared_quads_out', - 'DB_PERF_SEL_DFSM_lit_pixels_in', - 'DB_PERF_SEL_DFSM_lit_samples_in', - 'DB_PERF_SEL_DFSM_lit_samples_out', - 'DB_PERF_SEL_DFSM_prez_killed_squad', 'DB_PERF_SEL_DFSM_quads_in', - 'DB_PERF_SEL_DFSM_squads_in', - 'DB_PERF_SEL_DFSM_stalled_by_downstream', - 'DB_PERF_SEL_Depth_Tile_Cache_alloc_stall', - 'DB_PERF_SEL_Depth_Tile_Cache_busy', - 'DB_PERF_SEL_Depth_Tile_Cache_data_frees', - 'DB_PERF_SEL_Depth_Tile_Cache_detailed_noop', - 'DB_PERF_SEL_Depth_Tile_Cache_dtile_locked', - 'DB_PERF_SEL_Depth_Tile_Cache_event', - 'DB_PERF_SEL_Depth_Tile_Cache_flushes', - 'DB_PERF_SEL_Depth_Tile_Cache_hits', - 'DB_PERF_SEL_Depth_Tile_Cache_mem_return_starve', - 'DB_PERF_SEL_Depth_Tile_Cache_misses', - 'DB_PERF_SEL_Depth_Tile_Cache_noop_tile', - 'DB_PERF_SEL_Depth_Tile_Cache_sends', - 'DB_PERF_SEL_Depth_Tile_Cache_starves', - 'DB_PERF_SEL_Depth_Tile_Cache_tile_frees', - 'DB_PERF_SEL_MI_psd_req_wrack_counter_stall', - 'DB_PERF_SEL_MI_quad_req_wrack_counter_stall', - 'DB_PERF_SEL_MI_tile_req_wrack_counter_stall', - 'DB_PERF_SEL_MI_zpc_req_wrack_counter_stall', - 'DB_PERF_SEL_Op_Pipe_Busy', 'DB_PERF_SEL_Op_Pipe_MC_Read_stall', - 'DB_PERF_SEL_Op_Pipe_Postz_Busy', 'DB_PERF_SEL_Op_Pipe_Prez_Busy', - 'DB_PERF_SEL_Plane_Cache_flushes', - 'DB_PERF_SEL_Plane_Cache_frees', 'DB_PERF_SEL_Plane_Cache_hits', - 'DB_PERF_SEL_Plane_Cache_misses', - 'DB_PERF_SEL_Plane_Cache_starves', - 'DB_PERF_SEL_PostZ_Samples_failing_DB', - 'DB_PERF_SEL_PostZ_Samples_failing_S', - 'DB_PERF_SEL_PostZ_Samples_failing_Z', - 'DB_PERF_SEL_PostZ_Samples_passing_Z', - 'DB_PERF_SEL_PreZ_Samples_failing_DB', - 'DB_PERF_SEL_PreZ_Samples_failing_S', - 'DB_PERF_SEL_PreZ_Samples_failing_Z', - 'DB_PERF_SEL_PreZ_Samples_passing_Z', - 'DB_PERF_SEL_SC_DB_quad_busy', - 'DB_PERF_SEL_SC_DB_quad_killed_tiles', - 'DB_PERF_SEL_SC_DB_quad_pixels', 'DB_PERF_SEL_SC_DB_quad_quads', - 'DB_PERF_SEL_SC_DB_quad_sends', 'DB_PERF_SEL_SC_DB_quad_squads', - 'DB_PERF_SEL_SC_DB_quad_tiles', 'DB_PERF_SEL_SC_DB_tile_backface', - 'DB_PERF_SEL_SC_DB_tile_busy', 'DB_PERF_SEL_SC_DB_tile_covered', - 'DB_PERF_SEL_SC_DB_tile_events', 'DB_PERF_SEL_SC_DB_tile_sends', - 'DB_PERF_SEL_SC_DB_tile_stalls', 'DB_PERF_SEL_SC_DB_tile_tiles', - 'DB_PERF_SEL_SH_quads_outstanding_sum', - 'DB_PERF_SEL_SX_DB_quad_all_pixels_enabled', - 'DB_PERF_SEL_SX_DB_quad_all_pixels_killed', - 'DB_PERF_SEL_SX_DB_quad_busy', - 'DB_PERF_SEL_SX_DB_quad_double_format', - 'DB_PERF_SEL_SX_DB_quad_export_quads', - 'DB_PERF_SEL_SX_DB_quad_exports', - 'DB_PERF_SEL_SX_DB_quad_fast_format', - 'DB_PERF_SEL_SX_DB_quad_need_blending_and_dst_read', - 'DB_PERF_SEL_SX_DB_quad_pixels', 'DB_PERF_SEL_SX_DB_quad_quads', - 'DB_PERF_SEL_SX_DB_quad_sends', - 'DB_PERF_SEL_SX_DB_quad_slow_format', - 'DB_PERF_SEL_SX_DB_quad_stalls', - 'DB_PERF_SEL_Stencil_Cache_flushes', - 'DB_PERF_SEL_Stencil_Cache_frees', - 'DB_PERF_SEL_Stencil_Cache_hits', - 'DB_PERF_SEL_Stencil_Cache_misses', - 'DB_PERF_SEL_Stencil_Cache_starves', - 'DB_PERF_SEL_Tile_Cache_flushes', 'DB_PERF_SEL_Tile_Cache_hits', - 'DB_PERF_SEL_Tile_Cache_mem_return_starve', - 'DB_PERF_SEL_Tile_Cache_misses', 'DB_PERF_SEL_Tile_Cache_starves', - 'DB_PERF_SEL_Tile_Cache_surface_stall', - 'DB_PERF_SEL_Z_Cache_frees', 'DB_PERF_SEL_Z_Cache_pmask_flushes', - 'DB_PERF_SEL_Z_Cache_pmask_hits', - 'DB_PERF_SEL_Z_Cache_pmask_misses', - 'DB_PERF_SEL_Z_Cache_pmask_starves', - 'DB_PERF_SEL_Z_Cache_separate_Z_flushes', - 'DB_PERF_SEL_Z_Cache_separate_Z_hits', - 'DB_PERF_SEL_Z_Cache_separate_Z_misses', - 'DB_PERF_SEL_Z_Cache_separate_Z_starves', - 'DB_PERF_SEL_clock_main_active', - 'DB_PERF_SEL_clock_mem_export_active', - 'DB_PERF_SEL_clock_reg_active', - 'DB_PERF_SEL_depth_bounds_tile_culled', 'DB_PERF_SEL_di_dt_stall', - 'DB_PERF_SEL_dk_squad_busy', 'DB_PERF_SEL_dk_squad_sends', - 'DB_PERF_SEL_dk_squad_stalls', 'DB_PERF_SEL_dk_tile_busy', - 'DB_PERF_SEL_dk_tile_quad_starves', 'DB_PERF_SEL_dk_tile_sends', - 'DB_PERF_SEL_dk_tile_stalls', 'DB_PERF_SEL_dkg_tile_rate_tile', - 'DB_PERF_SEL_dtt_sm_clash_stall', 'DB_PERF_SEL_dtt_sm_miss_stall', - 'DB_PERF_SEL_dtt_sm_slot_stall', - 'DB_PERF_SEL_earlyZ_waiting_for_postZ_done', - 'DB_PERF_SEL_esr_eot_fwd_busy', 'DB_PERF_SEL_esr_eot_fwd_forward', - 'DB_PERF_SEL_esr_eot_fwd_holding_squad', - 'DB_PERF_SEL_esr_ps_lqf_busy', 'DB_PERF_SEL_esr_ps_lqf_stall', - 'DB_PERF_SEL_esr_ps_out_busy', 'DB_PERF_SEL_esr_ps_sqq_busy', - 'DB_PERF_SEL_esr_ps_sqq_stall', 'DB_PERF_SEL_esr_ps_src_in_sends', - 'DB_PERF_SEL_esr_ps_src_in_squads', - 'DB_PERF_SEL_esr_ps_src_in_squads_unrolled', - 'DB_PERF_SEL_esr_ps_src_in_stall', - 'DB_PERF_SEL_esr_ps_src_in_tile_rate', - 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled', - 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled_to_pixel_rate', - 'DB_PERF_SEL_esr_ps_src_out_stall', 'DB_PERF_SEL_esr_sqq_zi_busy', - 'DB_PERF_SEL_esr_sqq_zi_stall', 'DB_PERF_SEL_etr_out_busy', - 'DB_PERF_SEL_etr_out_cb_tile_stall', - 'DB_PERF_SEL_etr_out_esr_stall', - 'DB_PERF_SEL_etr_out_ltile_probe_fifo_full_stall', - 'DB_PERF_SEL_etr_out_send', 'DB_PERF_SEL_flush_10plane', - 'DB_PERF_SEL_flush_11plane', 'DB_PERF_SEL_flush_12plane', - 'DB_PERF_SEL_flush_13plane', 'DB_PERF_SEL_flush_14plane', - 'DB_PERF_SEL_flush_15plane', 'DB_PERF_SEL_flush_16plane', - 'DB_PERF_SEL_flush_1plane', 'DB_PERF_SEL_flush_2plane', - 'DB_PERF_SEL_flush_3plane', 'DB_PERF_SEL_flush_4plane', - 'DB_PERF_SEL_flush_5plane', 'DB_PERF_SEL_flush_6plane', - 'DB_PERF_SEL_flush_7plane', 'DB_PERF_SEL_flush_8plane', - 'DB_PERF_SEL_flush_9plane', 'DB_PERF_SEL_flush_compressed', - 'DB_PERF_SEL_flush_compressed_stencil', - 'DB_PERF_SEL_flush_expanded_stencil', - 'DB_PERF_SEL_flush_expanded_z', 'DB_PERF_SEL_flush_plane_le4', - 'DB_PERF_SEL_flush_single_stencil', 'DB_PERF_SEL_his_tile_culled', - 'DB_PERF_SEL_hiz_tc_read_starved', - 'DB_PERF_SEL_hiz_tc_write_stall', 'DB_PERF_SEL_hiz_tile_culled', - 'DB_PERF_SEL_mi_quad_rd_outstanding_sum', - 'DB_PERF_SEL_mi_quad_wr_outstanding_sum', - 'DB_PERF_SEL_mi_rdreq_busy', 'DB_PERF_SEL_mi_rdreq_stall', - 'DB_PERF_SEL_mi_tile_rd_outstanding_sum', - 'DB_PERF_SEL_mi_tile_wr_outstanding_sum', - 'DB_PERF_SEL_mi_wrreq_busy', 'DB_PERF_SEL_mi_wrreq_stall', - 'DB_PERF_SEL_planes_flushed', 'DB_PERF_SEL_postzl_full_launch', - 'DB_PERF_SEL_postzl_partial_launch', - 'DB_PERF_SEL_postzl_partial_waiting', - 'DB_PERF_SEL_postzl_se_busy', 'DB_PERF_SEL_postzl_se_stall', - 'DB_PERF_SEL_postzl_sq_pt_busy', 'DB_PERF_SEL_postzl_sq_pt_stall', - 'DB_PERF_SEL_postzl_src_in_sends', - 'DB_PERF_SEL_postzl_src_in_squads', - 'DB_PERF_SEL_postzl_src_in_squads_unrolled', - 'DB_PERF_SEL_postzl_src_in_stall', - 'DB_PERF_SEL_postzl_src_in_tile_rate', - 'DB_PERF_SEL_postzl_src_in_tile_rate_unrolled', - 'DB_PERF_SEL_postzl_src_out_stall', - 'DB_PERF_SEL_postzl_tile_init_stall', - 'DB_PERF_SEL_postzl_tile_mem_stall', - 'DB_PERF_SEL_prezl_src_in_sends', - 'DB_PERF_SEL_prezl_src_in_squads', - 'DB_PERF_SEL_prezl_src_in_squads_unrolled', - 'DB_PERF_SEL_prezl_src_in_stall', - 'DB_PERF_SEL_prezl_src_in_tile_rate', - 'DB_PERF_SEL_prezl_src_in_tile_rate_unrolled', - 'DB_PERF_SEL_prezl_src_out_stall', - 'DB_PERF_SEL_prezl_tile_init_stall', - 'DB_PERF_SEL_prezl_tile_mem_stall', 'DB_PERF_SEL_qc_busy', - 'DB_PERF_SEL_qc_conflicts', 'DB_PERF_SEL_qc_full_stall', - 'DB_PERF_SEL_qc_in_postZ_tile_stalls_preZ', - 'DB_PERF_SEL_qc_in_preZ_tile_stalls_postZ', 'DB_PERF_SEL_qc_xfc', - 'DB_PERF_SEL_quad_rd_32byte_reqs', 'DB_PERF_SEL_quad_rd_busy', - 'DB_PERF_SEL_quad_rd_mi_stall', 'DB_PERF_SEL_quad_rd_panic', - 'DB_PERF_SEL_quad_rd_rw_collision', 'DB_PERF_SEL_quad_rd_sends', - 'DB_PERF_SEL_quad_rd_tag_stall', 'DB_PERF_SEL_quad_rdret_busy', - 'DB_PERF_SEL_quad_rdret_sends', 'DB_PERF_SEL_quad_wr_acks', - 'DB_PERF_SEL_quad_wr_busy', 'DB_PERF_SEL_quad_wr_coherency_stall', - 'DB_PERF_SEL_quad_wr_mi_stall', 'DB_PERF_SEL_quad_wr_sends', - 'DB_PERF_SEL_reZ_waiting_for_postZ_done', - 'DB_PERF_SEL_recomp_tile_to_1zplane_no_fastop', - 'DB_PERF_SEL_sc_kick_end', 'DB_PERF_SEL_sc_kick_start', - 'DB_PERF_SEL_tcp_dispatcher_flushes', - 'DB_PERF_SEL_tcp_dispatcher_reads', - 'DB_PERF_SEL_tcp_prefetcher_flushes', - 'DB_PERF_SEL_tcp_prefetcher_reads', - 'DB_PERF_SEL_tcp_preloader_flushes', - 'DB_PERF_SEL_tcp_preloader_reads', 'DB_PERF_SEL_tile_rd_sends', - 'DB_PERF_SEL_tile_wr_acks', 'DB_PERF_SEL_tile_wr_sends', - 'DB_PERF_SEL_tiles_compressed_to_decompressed', - 'DB_PERF_SEL_tiles_decomp_on_expclear', - 'DB_PERF_SEL_tiles_s_clear_on_expclear', - 'DB_PERF_SEL_tiles_stencil_fully_summarized', - 'DB_PERF_SEL_tiles_z_clear_on_expclear', - 'DB_PERF_SEL_tiles_z_fully_summarized', 'DB_PERF_SEL_tl_busy', - 'DB_PERF_SEL_tl_dtc_read_starved', 'DB_PERF_SEL_tl_events', - 'DB_PERF_SEL_tl_expand_squads', - 'DB_PERF_SEL_tl_flush_expand_squads', - 'DB_PERF_SEL_tl_in_fast_z_stall', - 'DB_PERF_SEL_tl_in_single_stencil_expand_stall', - 'DB_PERF_SEL_tl_in_xfc', 'DB_PERF_SEL_tl_out_squads', - 'DB_PERF_SEL_tl_out_xfc', 'DB_PERF_SEL_tl_postZ_noop_squads', - 'DB_PERF_SEL_tl_postZ_squads', 'DB_PERF_SEL_tl_preZ_noop_squads', - 'DB_PERF_SEL_tl_preZ_squads', - 'DB_PERF_SEL_tl_stencil_locked_stall', - 'DB_PERF_SEL_tl_stencil_stall', 'DB_PERF_SEL_tl_summarize_squads', - 'DB_PERF_SEL_tl_tile_ops', 'DB_PERF_SEL_tl_z_decompress_stall', - 'DB_PERF_SEL_tl_z_fetch_stall', 'DB_PERF_SEL_ts_tc_update_stall', - 'DB_PERF_SEL_tsc_insert_summarize_stall', - 'DB_PERF_SEL_unmapped_z_tile_culled', - 'DB_PERF_SEL_zf_plane_multicycle', 'DB_PSINVOKE_CHANGE_EVENT', - 'DB_VPORT_CHANGED_EVENT', 'DCCG_AUDIO_DTO0_SOURCE_SEL', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG0', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG1', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG2', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG3', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG4', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG5', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_RESERVED', - 'DCCG_AUDIO_DTO2_SOURCE_SEL', 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0', - 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK1', 'DCCG_AUDIO_DTO_SEL', - 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO0', 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO1', - 'DCCG_AUDIO_DTO_SEL_NO_AUDIO_DTO', - 'DCCG_AUDIO_DTO_USE_128FBR_FOR_DP', - 'DCCG_AUDIO_DTO_USE_512FBR_DTO', - 'DCCG_AUDIO_DTO_USE_512FBR_FOR_DP', 'DCCG_DEEP_COLOR_CNTL', - 'DCCG_DEEP_COLOR_DTO_2_1_RATIO', 'DCCG_DEEP_COLOR_DTO_3_2_RATIO', - 'DCCG_DEEP_COLOR_DTO_5_4_RATIO', 'DCCG_DEEP_COLOR_DTO_DISABLE', - 'DCCG_FIFO_ERRDET_OVR_DISABLE', 'DCCG_FIFO_ERRDET_OVR_EN', - 'DCCG_FIFO_ERRDET_OVR_ENABLE', 'DCCG_FIFO_ERRDET_RESET', - 'DCCG_FIFO_ERRDET_RESET_FORCE', 'DCCG_FIFO_ERRDET_RESET_NOOP', - 'DCCG_FIFO_ERRDET_STATE', 'DCCG_FIFO_ERRDET_STATE_CALIBRATION', - 'DCCG_FIFO_ERRDET_STATE_DETECTION', 'DCCG_PERF_MODE_HSYNC', - 'DCCG_PERF_MODE_HSYNC_NOOP', 'DCCG_PERF_MODE_HSYNC_START', - 'DCCG_PERF_MODE_VSYNC', 'DCCG_PERF_MODE_VSYNC_NOOP', - 'DCCG_PERF_MODE_VSYNC_START', 'DCCG_PERF_OTG_SELECT', - 'DCCG_PERF_RUN', 'DCCG_PERF_RUN_NOOP', 'DCCG_PERF_RUN_START', - 'DCCG_PERF_SEL_OTG0', 'DCCG_PERF_SEL_OTG1', 'DCCG_PERF_SEL_OTG2', - 'DCCG_PERF_SEL_OTG3', 'DCCG_PERF_SEL_OTG4', 'DCCG_PERF_SEL_OTG5', - 'DCCG_PERF_SEL_RESERVED', 'DCC_CT_AUTO', 'DCC_CT_NONE', - 'DCIOCHIP_2BIT_DISABLE', 'DCIOCHIP_2BIT_ENABLE', - 'DCIOCHIP_4BIT_DISABLE', 'DCIOCHIP_4BIT_ENABLE', - 'DCIOCHIP_5BIT_DISABLE', 'DCIOCHIP_5BIT_ENABLE', - 'DCIOCHIP_AUXSLAVE_PAD_MODE', 'DCIOCHIP_AUXSLAVE_PAD_MODE_AUX', - 'DCIOCHIP_AUXSLAVE_PAD_MODE_I2C', 'DCIOCHIP_AUX_ALL_PWR_OK', - 'DCIOCHIP_AUX_ALL_PWR_OK_0', 'DCIOCHIP_AUX_ALL_PWR_OK_1', - 'DCIOCHIP_AUX_CSEL0P9', 'DCIOCHIP_AUX_CSEL1P1', - 'DCIOCHIP_AUX_CSEL_DEC0P9', 'DCIOCHIP_AUX_CSEL_DEC1P0', - 'DCIOCHIP_AUX_CSEL_INC1P0', 'DCIOCHIP_AUX_CSEL_INC1P1', - 'DCIOCHIP_AUX_FALLSLEWSEL', 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH0', - 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH1', 'DCIOCHIP_AUX_FALLSLEWSEL_LOW', - 'DCIOCHIP_AUX_FALLSLEWSEL_ULTRAHIGH', 'DCIOCHIP_AUX_HYS_TUNE', - 'DCIOCHIP_AUX_HYS_TUNE_0', 'DCIOCHIP_AUX_HYS_TUNE_1', - 'DCIOCHIP_AUX_HYS_TUNE_2', 'DCIOCHIP_AUX_HYS_TUNE_3', - 'DCIOCHIP_AUX_RECEIVER_SEL', 'DCIOCHIP_AUX_RECEIVER_SEL_0', - 'DCIOCHIP_AUX_RECEIVER_SEL_1', 'DCIOCHIP_AUX_RECEIVER_SEL_2', - 'DCIOCHIP_AUX_RECEIVER_SEL_3', 'DCIOCHIP_AUX_RSEL0P9', - 'DCIOCHIP_AUX_RSEL1P1', 'DCIOCHIP_AUX_RSEL_DEC0P9', - 'DCIOCHIP_AUX_RSEL_DEC1P0', 'DCIOCHIP_AUX_RSEL_INC1P0', - 'DCIOCHIP_AUX_RSEL_INC1P1', 'DCIOCHIP_AUX_SPIKESEL', - 'DCIOCHIP_AUX_SPIKESEL_10NS', 'DCIOCHIP_AUX_SPIKESEL_50NS', - 'DCIOCHIP_AUX_VOD_TUNE', 'DCIOCHIP_AUX_VOD_TUNE_0', - 'DCIOCHIP_AUX_VOD_TUNE_1', 'DCIOCHIP_AUX_VOD_TUNE_2', - 'DCIOCHIP_AUX_VOD_TUNE_3', 'DCIOCHIP_DVO_VREFPON', - 'DCIOCHIP_DVO_VREFPON_DISABLE', 'DCIOCHIP_DVO_VREFPON_ENABLE', - 'DCIOCHIP_DVO_VREFSEL', 'DCIOCHIP_DVO_VREFSEL_EXTERNAL', - 'DCIOCHIP_DVO_VREFSEL_ONCHIP', 'DCIOCHIP_ENABLE_2BIT', - 'DCIOCHIP_ENABLE_4BIT', 'DCIOCHIP_ENABLE_5BIT', - 'DCIOCHIP_GPIO_I2C_DISABLE', 'DCIOCHIP_GPIO_I2C_DRIVE', - 'DCIOCHIP_GPIO_I2C_DRIVE_HIGH', 'DCIOCHIP_GPIO_I2C_DRIVE_LOW', - 'DCIOCHIP_GPIO_I2C_EN', 'DCIOCHIP_GPIO_I2C_ENABLE', - 'DCIOCHIP_GPIO_I2C_MASK', 'DCIOCHIP_GPIO_I2C_MASK_DISABLE', - 'DCIOCHIP_GPIO_I2C_MASK_ENABLE', 'DCIOCHIP_GPIO_MASK_EN', - 'DCIOCHIP_GPIO_MASK_EN_HARDWARE', - 'DCIOCHIP_GPIO_MASK_EN_SOFTWARE', 'DCIOCHIP_HPD_SEL', - 'DCIOCHIP_HPD_SEL_ASYNC', 'DCIOCHIP_HPD_SEL_CLOCKED', - 'DCIOCHIP_I2C_COMPSEL', 'DCIOCHIP_I2C_FALLSLEWSEL', - 'DCIOCHIP_I2C_FALLSLEWSEL_00', 'DCIOCHIP_I2C_FALLSLEWSEL_01', - 'DCIOCHIP_I2C_FALLSLEWSEL_10', 'DCIOCHIP_I2C_FALLSLEWSEL_11', - 'DCIOCHIP_I2C_RECEIVER_SEL', 'DCIOCHIP_I2C_RECEIVER_SEL_0', - 'DCIOCHIP_I2C_RECEIVER_SEL_1', 'DCIOCHIP_I2C_RECEIVER_SEL_2', - 'DCIOCHIP_I2C_RECEIVER_SEL_3', 'DCIOCHIP_I2C_REC_COMPARATOR', - 'DCIOCHIP_I2C_REC_SCHMIT', 'DCIOCHIP_I2C_VPH_1V2_EN', - 'DCIOCHIP_I2C_VPH_1V2_EN_0', 'DCIOCHIP_I2C_VPH_1V2_EN_1', - 'DCIOCHIP_INVERT', 'DCIOCHIP_MASIK_5BIT_DISABLE', - 'DCIOCHIP_MASIK_5BIT_ENABLE', 'DCIOCHIP_MASK', - 'DCIOCHIP_MASK_2BIT', 'DCIOCHIP_MASK_2BIT_DISABLE', - 'DCIOCHIP_MASK_2BIT_ENABLE', 'DCIOCHIP_MASK_4BIT', - 'DCIOCHIP_MASK_4BIT_DISABLE', 'DCIOCHIP_MASK_4BIT_ENABLE', - 'DCIOCHIP_MASK_5BIT', 'DCIOCHIP_MASK_DISABLE', - 'DCIOCHIP_MASK_ENABLE', 'DCIOCHIP_PAD_MODE', - 'DCIOCHIP_PAD_MODE_DDC', 'DCIOCHIP_PAD_MODE_DP', 'DCIOCHIP_PD_EN', - 'DCIOCHIP_PD_EN_ALLOW', 'DCIOCHIP_PD_EN_NOTALLOW', - 'DCIOCHIP_POL_INVERT', 'DCIOCHIP_POL_NON_INVERT', - 'DCIOCHIP_REF_27_SRC_SEL', - 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_BYPASS', - 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_DIVIDER', - 'DCIOCHIP_REF_27_SRC_SEL_XTAL_BYPASS', - 'DCIOCHIP_REF_27_SRC_SEL_XTAL_DIVIDER', 'DCIOCHIP_SPDIF1_IMODE', - 'DCIOCHIP_SPDIF1_IMODE_OE_A', 'DCIOCHIP_SPDIF1_IMODE_TSTE_TSTO', - 'DCIO_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE', - 'DCIO_BL_PWM_CNTL2_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN', - 'DCIO_BL_PWM_CNTL_BL_PWM_EN', - 'DCIO_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN', 'DCIO_BL_PWM_DISABLE', - 'DCIO_BL_PWM_ENABLE', 'DCIO_BL_PWM_FRACTIONAL_DISABLE', - 'DCIO_BL_PWM_FRACTIONAL_ENABLE', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER1', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER2', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER3', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER4', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER5', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER6', - 'DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_DISABLE', - 'DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN', - 'DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_ENABLE', - 'DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN', - 'DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL1_PWM', - 'DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL_PWM', - 'DCIO_BL_PWM_GRP1_REG_LOCK', 'DCIO_BL_PWM_GRP1_REG_LOCK_DISABLE', - 'DCIO_BL_PWM_GRP1_REG_LOCK_ENABLE', - 'DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START', - 'DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START_DISABLE', - 'DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START_ENABLE', - 'DCIO_BL_PWM_OVERRIDE_BL_OUT_DISABLE', - 'DCIO_BL_PWM_OVERRIDE_BL_OUT_ENABLE', - 'DCIO_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN_NORMAL', - 'DCIO_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN_PWM', - 'DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL', - 'DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS', 'DCIO_DACA_SOFT_RESET', - 'DCIO_DACA_SOFT_RESET_ASSERT', 'DCIO_DACA_SOFT_RESET_DEASSERT', - 'DCIO_DCRXPHY_SOFT_RESET', 'DCIO_DCRXPHY_SOFT_RESET_ASSERT', - 'DCIO_DCRXPHY_SOFT_RESET_DEASSERT', - 'DCIO_DC_DVODATA_CONFIG_DVO_ALTER_MAPPING_EN', - 'DCIO_DC_DVODATA_CONFIG_VIP_ALTER_MAPPING_EN', - 'DCIO_DC_DVODATA_CONFIG_VIP_MUX_EN', 'DCIO_DC_GENERICA_SEL', - 'DCIO_DC_GENERICB_SEL', - 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL', - 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL', - 'DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL', - 'DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL', - 'DCIO_DC_GPU_TIMER_READ_SELECT', - 'DCIO_DC_GPU_TIMER_START_POSITION', - 'DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL', - 'DCIO_DC_REF_CLK_CNTL_HSYNCA_OUTPUT_SEL', - 'DCIO_DIO_EXT_VSYNC_MASK', 'DCIO_DIO_OTG_EXT_VSYNC_MUX', - 'DCIO_DISPCLK_R_DCIO_GATE_DISABLE', - 'DCIO_DISPCLK_R_DCIO_GATE_ENABLE', 'DCIO_DPCS_INTERRUPT_DISABLE', - 'DCIO_DPCS_INTERRUPT_ENABLE', 'DCIO_DPCS_INTERRUPT_MASK', - 'DCIO_DPCS_INTERRUPT_TYPE', - 'DCIO_DPCS_INTERRUPT_TYPE_LEVEL_BASED', - 'DCIO_DPCS_INTERRUPT_TYPE_PULSE_BASED', 'DCIO_DPHY_LANE_SEL', - 'DCIO_DPHY_LANE_SEL_LANE0', 'DCIO_DPHY_LANE_SEL_LANE1', - 'DCIO_DPHY_LANE_SEL_LANE2', 'DCIO_DPHY_LANE_SEL_LANE3', - 'DCIO_DSYNC_SOFT_RESET', 'DCIO_DSYNC_SOFT_RESET_ASSERT', - 'DCIO_DSYNC_SOFT_RESET_DEASSERT', - 'DCIO_DVO_ALTER_MAPPING_EN_ALTERNATIVE', - 'DCIO_DVO_ALTER_MAPPING_EN_DEFAULT', 'DCIO_EXT_VSYNC_MASK_NONE', - 'DCIO_EXT_VSYNC_MASK_NONE_DUPLICATE', 'DCIO_EXT_VSYNC_MASK_PIPE0', - 'DCIO_EXT_VSYNC_MASK_PIPE1', 'DCIO_EXT_VSYNC_MASK_PIPE2', - 'DCIO_EXT_VSYNC_MASK_PIPE3', 'DCIO_EXT_VSYNC_MASK_PIPE4', - 'DCIO_EXT_VSYNC_MASK_PIPE5', 'DCIO_EXT_VSYNC_MUX_GENERICB', - 'DCIO_EXT_VSYNC_MUX_OTG0', 'DCIO_EXT_VSYNC_MUX_OTG1', - 'DCIO_EXT_VSYNC_MUX_OTG2', 'DCIO_EXT_VSYNC_MUX_OTG3', - 'DCIO_EXT_VSYNC_MUX_OTG4', 'DCIO_EXT_VSYNC_MUX_OTG5', - 'DCIO_EXT_VSYNC_MUX_SWAPLOCKB', - 'DCIO_GENERICA_SEL_DACA_FIELD_NUMBER', - 'DCIO_GENERICA_SEL_DACA_PIXCLK', - 'DCIO_GENERICA_SEL_DACA_STEREOSYNC', - 'DCIO_GENERICA_SEL_DACB_FIELD_NUMBER', - 'DCIO_GENERICA_SEL_DACB_PIXCLK', 'DCIO_GENERICA_SEL_DVOA_CTL3', - 'DCIO_GENERICA_SEL_DVOA_STEREOSYNC', - 'DCIO_GENERICA_SEL_GENERICA_DCCG', - 'DCIO_GENERICA_SEL_GENERICA_DPRX', - 'DCIO_GENERICA_SEL_GENERICB_DPRX', 'DCIO_GENERICA_SEL_P1_PLLCLK', - 'DCIO_GENERICA_SEL_P2_PLLCLK', 'DCIO_GENERICA_SEL_STEREOSYNC', - 'DCIO_GENERICA_SEL_SYNCEN', 'DCIO_GENERICA_SEL_UNIPHY_FBDIV_CLK', - 'DCIO_GENERICA_SEL_UNIPHY_FBDIV_CLK_DIV2', - 'DCIO_GENERICA_SEL_UNIPHY_FBDIV_SSC_CLK', - 'DCIO_GENERICA_SEL_UNIPHY_REFDIV_CLK', - 'DCIO_GENERICB_SEL_DACA_FIELD_NUMBER', - 'DCIO_GENERICB_SEL_DACA_PIXCLK', - 'DCIO_GENERICB_SEL_DACA_STEREOSYNC', - 'DCIO_GENERICB_SEL_DACB_FIELD_NUMBER', - 'DCIO_GENERICB_SEL_DACB_PIXCLK', 'DCIO_GENERICB_SEL_DVOA_CTL3', - 'DCIO_GENERICB_SEL_DVOA_STEREOSYNC', - 'DCIO_GENERICB_SEL_GENERICB_DCCG', 'DCIO_GENERICB_SEL_P1_PLLCLK', - 'DCIO_GENERICB_SEL_P2_PLLCLK', 'DCIO_GENERICB_SEL_STEREOSYNC', - 'DCIO_GENERICB_SEL_SYNCEN', 'DCIO_GENERICB_SEL_UNIPHY_FBDIV_CLK', - 'DCIO_GENERICB_SEL_UNIPHY_FBDIV_CLK_DIV2', - 'DCIO_GENERICB_SEL_UNIPHY_FBDIV_SSC_CLK', - 'DCIO_GENERICB_SEL_UNIPHY_REFDIV_CLK', 'DCIO_GENLK_CLK_GSL_MASK', - 'DCIO_GENLK_CLK_GSL_MASK_NO', 'DCIO_GENLK_CLK_GSL_MASK_STEREO', - 'DCIO_GENLK_CLK_GSL_MASK_TIMING', - 'DCIO_GENLK_CLK_OUTPUT_SEL_DISABLE', - 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL1', - 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL2', - 'DCIO_GENLK_CLK_OUTPUT_SEL_RESERVED_VALUE3', - 'DCIO_GENLK_VSYNC_GSL_MASK', 'DCIO_GENLK_VSYNC_GSL_MASK_NO', - 'DCIO_GENLK_VSYNC_GSL_MASK_STEREO', - 'DCIO_GENLK_VSYNC_GSL_MASK_TIMING', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE', - 'DCIO_GPU_TIMER_START_0_END_27', 'DCIO_GPU_TIMER_START_10_END_37', - 'DCIO_GPU_TIMER_START_1_END_28', 'DCIO_GPU_TIMER_START_2_END_29', - 'DCIO_GPU_TIMER_START_3_END_30', 'DCIO_GPU_TIMER_START_4_END_31', - 'DCIO_GPU_TIMER_START_6_END_33', 'DCIO_GPU_TIMER_START_8_END_35', - 'DCIO_GSL_SEL', 'DCIO_GSL_SEL_GROUP_0', 'DCIO_GSL_SEL_GROUP_1', - 'DCIO_GSL_SEL_GROUP_2', 'DCIO_HSYNCA_OUTPUT_SEL_DISABLE', - 'DCIO_HSYNCA_OUTPUT_SEL_PPLL1', 'DCIO_HSYNCA_OUTPUT_SEL_PPLL2', - 'DCIO_HSYNCA_OUTPUT_SEL_RESERVED', 'DCIO_IMPCAL_STEP_DELAY', - 'DCIO_IMPCAL_STEP_DELAY_10us', 'DCIO_IMPCAL_STEP_DELAY_11us', - 'DCIO_IMPCAL_STEP_DELAY_12us', 'DCIO_IMPCAL_STEP_DELAY_13us', - 'DCIO_IMPCAL_STEP_DELAY_14us', 'DCIO_IMPCAL_STEP_DELAY_15us', - 'DCIO_IMPCAL_STEP_DELAY_16us', 'DCIO_IMPCAL_STEP_DELAY_1us', - 'DCIO_IMPCAL_STEP_DELAY_2us', 'DCIO_IMPCAL_STEP_DELAY_3us', - 'DCIO_IMPCAL_STEP_DELAY_4us', 'DCIO_IMPCAL_STEP_DELAY_5us', - 'DCIO_IMPCAL_STEP_DELAY_6us', 'DCIO_IMPCAL_STEP_DELAY_7us', - 'DCIO_IMPCAL_STEP_DELAY_8us', 'DCIO_IMPCAL_STEP_DELAY_9us', - 'DCIO_LVTMA_BLON_OFF', 'DCIO_LVTMA_BLON_ON', - 'DCIO_LVTMA_BLON_POL_INVERT', 'DCIO_LVTMA_BLON_POL_NON_INVERT', - 'DCIO_LVTMA_DIGON_OFF', 'DCIO_LVTMA_DIGON_ON', - 'DCIO_LVTMA_DIGON_POL_INVERT', 'DCIO_LVTMA_DIGON_POL_NON_INVERT', - 'DCIO_LVTMA_PWRSEQ_CNTL_DISABLE_SYNCEN_CONTROL_OF_TX_EN', - 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_BLON', - 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_BLON_POL', - 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_DIGON', - 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_DIGON_POL', - 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_SYNCEN_POL', - 'DCIO_LVTMA_PWRSEQ_CNTL_TARGET_STATE', - 'DCIO_LVTMA_PWRSEQ_DELAY2_LVTMA_VARY_BL_OVERRIDE_EN', - 'DCIO_LVTMA_PWRSEQ_DISABLE_SYNCEN_CONTROL_OF_TX_DISABLE', - 'DCIO_LVTMA_PWRSEQ_DISABLE_SYNCEN_CONTROL_OF_TX_ENABLE', - 'DCIO_LVTMA_PWRSEQ_TARGET_STATE_LCD_OFF', - 'DCIO_LVTMA_PWRSEQ_TARGET_STATE_LCD_ON', - 'DCIO_LVTMA_SYNCEN_POL_INVERT', - 'DCIO_LVTMA_SYNCEN_POL_NON_INVERT', - 'DCIO_LVTMA_VARY_BL_OVERRIDE_EN_BLON', - 'DCIO_LVTMA_VARY_BL_OVERRIDE_EN_SEPARATE', - 'DCIO_SWAPLOCK_A_GSL_MASK', 'DCIO_SWAPLOCK_A_GSL_MASK_NO', - 'DCIO_SWAPLOCK_A_GSL_MASK_STEREO', - 'DCIO_SWAPLOCK_A_GSL_MASK_TIMING', 'DCIO_SWAPLOCK_B_GSL_MASK', - 'DCIO_SWAPLOCK_B_GSL_MASK_NO', 'DCIO_SWAPLOCK_B_GSL_MASK_STEREO', - 'DCIO_SWAPLOCK_B_GSL_MASK_TIMING', 'DCIO_TEST_CLK_SEL_DISPCLK', - 'DCIO_TEST_CLK_SEL_GATED_DISPCLK', 'DCIO_TEST_CLK_SEL_SOCCLK', - 'DCIO_UNIPHYA_FBDIV_CLK', 'DCIO_UNIPHYA_FBDIV_SSC_CLK', - 'DCIO_UNIPHYA_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYA_TEST_REFDIV_CLK', 'DCIO_UNIPHYB_FBDIV_CLK', - 'DCIO_UNIPHYB_FBDIV_SSC_CLK', 'DCIO_UNIPHYB_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYB_TEST_REFDIV_CLK', 'DCIO_UNIPHYC_FBDIV_CLK', - 'DCIO_UNIPHYC_FBDIV_SSC_CLK', 'DCIO_UNIPHYC_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYC_TEST_REFDIV_CLK', 'DCIO_UNIPHYD_FBDIV_CLK', - 'DCIO_UNIPHYD_FBDIV_SSC_CLK', 'DCIO_UNIPHYD_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYD_TEST_REFDIV_CLK', 'DCIO_UNIPHYE_FBDIV_CLK', - 'DCIO_UNIPHYE_FBDIV_SSC_CLK', 'DCIO_UNIPHYE_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYE_TEST_REFDIV_CLK', 'DCIO_UNIPHYF_FBDIV_CLK', - 'DCIO_UNIPHYF_FBDIV_SSC_CLK', 'DCIO_UNIPHYF_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYF_TEST_REFDIV_CLK', 'DCIO_UNIPHYG_FBDIV_CLK', - 'DCIO_UNIPHYG_FBDIV_SSC_CLK', 'DCIO_UNIPHYG_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYG_TEST_REFDIV_CLK', 'DCIO_UNIPHY_CHANNEL_INVERTED', - 'DCIO_UNIPHY_CHANNEL_NO_INVERSION', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH0', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH1', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH2', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH3', 'DCIO_UNIPHY_IMPCAL_SEL', - 'DCIO_UNIPHY_IMPCAL_SEL_BINARY', - 'DCIO_UNIPHY_IMPCAL_SEL_TEMPERATURE', - 'DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT', - 'DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK', - 'DCIO_UNIPHY_LINK_CNTL_MINIMUM_PIXVLD_LOW_DURATION', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_DEBOUNCED', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_TOGGLE_FILTERED', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_DISALLOW', - 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_11_CLOCKS', - 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_15_CLOCKS', - 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_19_CLOCKS', - 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_23_CLOCKS', - 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_27_CLOCKS', - 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_31_CLOCKS', - 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_3_CLOCKS', - 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_7_CLOCKS', - 'DCIO_VIP_ALTER_MAPPING_EN_ALTERNATIVE', - 'DCIO_VIP_ALTER_MAPPING_EN_DEFAULT', 'DCIO_VIP_MUX_EN_DVO', - 'DCIO_VIP_MUX_EN_VIP', 'DC_DMCUB_INT_TYPE', - 'DC_DMCUB_TIMER_WINDOW', 'DC_MEM_GLOBAL_PWR_REQ_DIS', - 'DC_MEM_GLOBAL_PWR_REQ_DISABLE', 'DC_MEM_GLOBAL_PWR_REQ_ENABLE', - 'DC_SMU_INTERRUPT_ENABLE', 'DDID_VMID_CNTL', 'DDID_VMID_PIPE', - 'DENORM_TRUNCATE', 'DEPTH_16', 'DEPTH_32_FLOAT', 'DEPTH_8_24', - 'DEPTH_8_24_FLOAT', 'DEPTH_INVALID', 'DEPTH_MICRO_TILING', - 'DEPTH_X24_8_32_FLOAT', 'DEPTH_X8_24', 'DEPTH_X8_24_FLOAT', - 'DETILE_BUFFER_PACKER_ENABLE', 'DETILE_BUFFER_PACKER_IS_DISABLE', - 'DETILE_BUFFER_PACKER_IS_ENABLE', - 'DET_MEM_POWER_LIGHT_SLEEP_MODE_1', - 'DET_MEM_POWER_LIGHT_SLEEP_MODE_2', - 'DET_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 'DET_MEM_PWR_LIGHT_SLEEP_MODE', 'DFQ_MIN_FREE_ENTRIES', - 'DFQ_MIN_FREE_ENTRIES_0', 'DFQ_MIN_FREE_ENTRIES_1', - 'DFQ_MIN_FREE_ENTRIES_2', 'DFQ_MIN_FREE_ENTRIES_3', - 'DFQ_MIN_FREE_ENTRIES_4', 'DFQ_MIN_FREE_ENTRIES_5', - 'DFQ_MIN_FREE_ENTRIES_6', 'DFQ_MIN_FREE_ENTRIES_7', - 'DFQ_NUM_ENTRIES', 'DFQ_NUM_ENTRIES_0', 'DFQ_NUM_ENTRIES_1', - 'DFQ_NUM_ENTRIES_2', 'DFQ_NUM_ENTRIES_3', 'DFQ_NUM_ENTRIES_4', - 'DFQ_NUM_ENTRIES_5', 'DFQ_NUM_ENTRIES_6', 'DFQ_NUM_ENTRIES_7', - 'DFQ_NUM_ENTRIES_8', 'DFQ_SIZE', 'DFQ_SIZE_0', 'DFQ_SIZE_1', - 'DFQ_SIZE_2', 'DFQ_SIZE_3', 'DFQ_SIZE_4', 'DFQ_SIZE_5', - 'DFQ_SIZE_6', 'DFQ_SIZE_7', 'DFSMFlushEvents', - 'DIG_10BIT_TEST_PATTERN', 'DIG_ALL_PIXEL', - 'DIG_ALTERNATING_TEST_PATTERN', 'DIG_BE_CNTL_HPD1', - 'DIG_BE_CNTL_HPD2', 'DIG_BE_CNTL_HPD3', 'DIG_BE_CNTL_HPD4', - 'DIG_BE_CNTL_HPD5', 'DIG_BE_CNTL_HPD6', 'DIG_BE_CNTL_HPD_SELECT', - 'DIG_BE_CNTL_MODE', 'DIG_BE_CNTL_NO_HPD', 'DIG_BE_DP_MST_MODE', - 'DIG_BE_DP_SST_MODE', 'DIG_BE_RESERVED1', 'DIG_BE_RESERVED2', - 'DIG_BE_RESERVED3', 'DIG_BE_RESERVED4', 'DIG_BE_TMDS_DVI_MODE', - 'DIG_BE_TMDS_HDMI_MODE', 'DIG_DIGITAL_BYPASS_SEL', - 'DIG_DIGITAL_BYPASS_SEL_10BPP_LSB', - 'DIG_DIGITAL_BYPASS_SEL_12BPC_LSB', - 'DIG_DIGITAL_BYPASS_SEL_36BPP', - 'DIG_DIGITAL_BYPASS_SEL_48BPP_LSB', - 'DIG_DIGITAL_BYPASS_SEL_48BPP_MSB', - 'DIG_DIGITAL_BYPASS_SEL_ALPHA', 'DIG_DIGITAL_BYPASS_SEL_BYPASS', - 'DIG_EVEN_PIXEL_ONLY', 'DIG_FE_CNTL_SOURCE_SELECT', - 'DIG_FE_CNTL_STEREOSYNC_SELECT', 'DIG_FE_SOURCE_FROM_OTG0', - 'DIG_FE_SOURCE_FROM_OTG1', 'DIG_FE_SOURCE_FROM_OTG2', - 'DIG_FE_SOURCE_FROM_OTG3', 'DIG_FE_SOURCE_FROM_OTG4', - 'DIG_FE_SOURCE_FROM_OTG5', 'DIG_FE_SOURCE_RESERVED', - 'DIG_FE_STEREOSYNC_FROM_OTG0', 'DIG_FE_STEREOSYNC_FROM_OTG1', - 'DIG_FE_STEREOSYNC_FROM_OTG2', 'DIG_FE_STEREOSYNC_FROM_OTG3', - 'DIG_FE_STEREOSYNC_FROM_OTG4', 'DIG_FE_STEREOSYNC_FROM_OTG5', - 'DIG_FE_STEREOSYNC_RESERVED', 'DIG_FIFO_ERROR_ACK', - 'DIG_FIFO_ERROR_ACK_INT', 'DIG_FIFO_ERROR_NOT_ACK', - 'DIG_FIFO_FORCE_RECAL_AVERAGE_LEVEL', - 'DIG_FIFO_FORCE_RECOMP_MINMAX', - 'DIG_FIFO_NOT_FORCE_RECAL_AVERAGE', - 'DIG_FIFO_NOT_FORCE_RECOMP_MINMAX', 'DIG_FIFO_READ_CLOCK_SRC', - 'DIG_FIFO_READ_CLOCK_SRC_FROM_DCCG', - 'DIG_FIFO_READ_CLOCK_SRC_FROM_DISPLAY_PIPE', - 'DIG_FIFO_STATUS_FORCE_RECAL_AVERAGE', - 'DIG_FIFO_STATUS_FORCE_RECOMP_MINMAX', - 'DIG_FIFO_STATUS_USE_OVERWRITE_LEVEL', - 'DIG_FIFO_USE_CAL_AVERAGE_LEVEL', 'DIG_FIFO_USE_OVERWRITE_LEVEL', - 'DIG_INPUT_PIXEL_SEL', 'DIG_IN_DEBUG_MODE', - 'DIG_IN_NORMAL_OPERATION', 'DIG_ODD_PIXEL_ONLY', - 'DIG_OUTPUT_CRC_CNTL_LINK_SEL', 'DIG_OUTPUT_CRC_DATA_SEL', - 'DIG_OUTPUT_CRC_FOR_ACTIVEONLY', 'DIG_OUTPUT_CRC_FOR_AUDIO', - 'DIG_OUTPUT_CRC_FOR_FULLFRAME', 'DIG_OUTPUT_CRC_FOR_VBI', - 'DIG_OUTPUT_CRC_ON_LINK0', 'DIG_OUTPUT_CRC_ON_LINK1', - 'DIG_RANDOM_PATTERN_ENABLED', 'DIG_RANDOM_PATTERN_RESETED', - 'DIG_RANDOM_PATTERN_SEED_RAN_PAT', - 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_ALL_PIXELS', - 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_DE_HIGH', - 'DIG_TEST_PATTERN_EXTERNAL_RESET_BY_EXT_SIG', - 'DIG_TEST_PATTERN_EXTERNAL_RESET_EN', - 'DIG_TEST_PATTERN_EXTERNAL_RESET_ENABLE', - 'DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL', - 'DIG_TEST_PATTERN_NORMAL', 'DIG_TEST_PATTERN_RANDOM', - 'DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN', - 'DIG_TEST_PATTERN_RANDOM_PATTERN_RESET', - 'DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN', 'DIM_TYPE', 'DIM_TYPE_1D', - 'DIM_TYPE_2D', 'DIM_TYPE_3D', 'DIM_TYPE_RESERVED', - 'DIOMEM_DISABLE_MEM_PWR_CTRL', 'DIOMEM_DYNAMIC_DEEP_SLEEP_EN', - 'DIOMEM_DYNAMIC_DEEP_SLEEP_ENABLE', - 'DIOMEM_DYNAMIC_LIGHT_SLEEP_EN', - 'DIOMEM_DYNAMIC_LIGHT_SLEEP_ENABLE', - 'DIOMEM_DYNAMIC_SHUT_DOWN_ENABLE', 'DIOMEM_ENABLE_MEM_PWR_CTRL', - 'DIOMEM_FORCE_DEEP_SLEEP_REQUEST', 'DIOMEM_FORCE_LIGHT_SLEEP_REQ', - 'DIOMEM_FORCE_LIGHT_SLEEP_REQUEST', - 'DIOMEM_FORCE_SHUT_DOWN_REQUEST', 'DIOMEM_NO_FORCE_REQ', - 'DIOMEM_NO_FORCE_REQUEST', 'DIOMEM_PWR_DIS_CTRL', - 'DIOMEM_PWR_FORCE_CTRL', 'DIOMEM_PWR_FORCE_CTRL2', - 'DIOMEM_PWR_SEL_CTRL', 'DIOMEM_PWR_SEL_CTRL2', 'DIO_FIFO_ERROR', - 'DIO_FIFO_ERROR_00', 'DIO_FIFO_ERROR_01', 'DIO_FIFO_ERROR_10', - 'DIO_FIFO_ERROR_11', - 'DIO_HDMI_RXSTATUS_TIMER_CONTROL_DIO_HDMI_RXSTATUS_TIMER_TYPE', - 'DIO_HDMI_RXSTATUS_TIMER_TYPE_LEVEL', - 'DIO_HDMI_RXSTATUS_TIMER_TYPE_PULSE', - 'DISABLE_BINNING_USE_LEGACY_SC', 'DISABLE_BINNING_USE_NEW_SC', - 'DISABLE_CLOCK_GATING', 'DISABLE_CLOCK_GATING_IN_DCO', - 'DISABLE_JITTER_REMOVAL', 'DISABLE_MEM_PWR_CTRL', 'DISABLE_TF0', - 'DISABLE_TF1', 'DISABLE_THE_CLOCK', 'DISABLE_THE_FEATURE', - 'DISABLE_THE_INTERRUPT', 'DISPCLK_CHG_FWD_CORR_DISABLE', - 'DISPCLK_CHG_FWD_CORR_DISABLE_AT_BEGINNING', - 'DISPCLK_CHG_FWD_CORR_ENABLE_AT_BEGINNING', - 'DISPCLK_FREQ_RAMP_COMPLETED', 'DISPCLK_FREQ_RAMP_DONE', - 'DISPCLK_FREQ_RAMP_IN_PROGRESS', 'DISPLAY_MICRO_TILING', 'DIV_2', - 'DIV_4', 'DIV_8', 'DI_INDEX_SIZE_16_BIT', 'DI_INDEX_SIZE_32_BIT', - 'DI_INDEX_SIZE_8_BIT', 'DI_MAJOR_MODE_0', 'DI_MAJOR_MODE_1', - 'DI_PT_2D_RECTANGLE', 'DI_PT_LINELIST', 'DI_PT_LINELIST_ADJ', - 'DI_PT_LINELOOP', 'DI_PT_LINESTRIP', 'DI_PT_LINESTRIP_ADJ', - 'DI_PT_NONE', 'DI_PT_PATCH', 'DI_PT_POINTLIST', 'DI_PT_POLYGON', - 'DI_PT_QUADLIST', 'DI_PT_QUADSTRIP', 'DI_PT_RECTLIST', - 'DI_PT_TRIFAN', 'DI_PT_TRILIST', 'DI_PT_TRILIST_ADJ', - 'DI_PT_TRISTRIP', 'DI_PT_TRISTRIP_ADJ', 'DI_PT_TRI_WITH_WFLAGS', - 'DI_PT_UNUSED_1', 'DI_PT_UNUSED_3', 'DI_PT_UNUSED_4', - 'DI_SRC_SEL_AUTO_INDEX', 'DI_SRC_SEL_DMA', 'DI_SRC_SEL_IMMEDIATE', - 'DI_SRC_SEL_RESERVED', - 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE', - 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_DISABLE', - 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_ENABLE', - 'DMDATA_CLEAR_UNDERFLOW_STATUS', 'DMDATA_DONE', - 'DMDATA_DONT_CLEAR', 'DMDATA_HARDWARE_UPDATE_MODE', 'DMDATA_MODE', - 'DMDATA_NOT_SENT_TO_DIG', 'DMDATA_NOT_UNDERFLOW', - 'DMDATA_NOT_UPDATED', 'DMDATA_QOS_LEVEL_FROM_SOFTWARE', - 'DMDATA_QOS_LEVEL_FROM_TTU', 'DMDATA_QOS_MODE', 'DMDATA_REPEAT', - 'DMDATA_SENT_TO_DIG', 'DMDATA_SOFTWARE_UPDATE_MODE', - 'DMDATA_UNDERFLOW', 'DMDATA_UNDERFLOWED', - 'DMDATA_UNDERFLOW_CLEAR', 'DMDATA_UPDATED', - 'DMDATA_USE_FOR_CURRENT_AND_FUTURE_FRAMES', - 'DMDATA_USE_FOR_CURRENT_FRAME_ONLY', 'DMDATA_WAS_UPDATED', - 'DMU_CLOCK_GATING_DISABLE', 'DMU_CLOCK_ON', - 'DMU_CLOCK_STATUS_OFF', 'DMU_CLOCK_STATUS_ON', - 'DMU_DC_GPU_TIMER_READ_SELECT', 'DMU_DC_GPU_TIMER_START_POSITION', - 'DMU_DISABLE_CLOCK_GATING', 'DMU_ENABLE_CLOCK_GATING', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_48', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_AWAY_76', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VREADY_36', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM_24', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_STARTUP_12', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_0', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_NO_LOCK_64', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_50', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_AWAY_78', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VREADY_38', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VSYNC_NOM_26', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_STARTUP_14', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_2', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_NO_LOCK_66', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_52', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_AWAY_80', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VREADY_40', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VSYNC_NOM_28', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_STARTUP_16', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_4', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_NO_LOCK_68', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_54', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_AWAY_82', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VREADY_42', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VSYNC_NOM_30', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_STARTUP_18', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_6', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_NO_LOCK_70', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D5_FLIP_56', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D5_FLIP_AWAY_84', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D5_VREADY_44', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D5_VSYNC_NOM_32', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D5_V_STARTUP_20', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D5_V_UPDATE_8', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D5_V_UPDATE_NO_LOCK_72', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D6_FLIP_58', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D6_FLIP_AWAY_86', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D6_VREADY_46', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D6_VSYNC_NOM_34', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D6_V_STARTUP_22', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D6_V_UPDATE_10', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D6_V_UPDATE_NO_LOCK_74', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_49', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_AWAY_77', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VREADY_37', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM_25', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_STARTUP_13', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_1', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_NO_LOCK_65', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_51', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_AWAY_79', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VREADY_39', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VSYNC_NOM_27', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_STARTUP_15', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_3', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_NO_LOCK_67', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_53', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_AWAY_81', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VREADY_41', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VSYNC_NOM_29', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_STARTUP_17', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_5', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_NO_LOCK_69', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_55', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_AWAY_83', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VREADY_43', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VSYNC_NOM_31', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_STARTUP_19', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_7', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_NO_LOCK_71', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D5_FLIP_57', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D5_FLIP_AWAY_85', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D5_VREADY_45', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D5_VSYNC_NOM_33', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D5_V_STARTUP_21', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D5_V_UPDATE_9', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D5_V_UPDATE_NO_LOCK_73', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D6_FLIP_59', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D6_FLIP_AWAY_87', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D6_VREADY_47', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D6_VSYNC_NOM_35', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D6_V_STARTUP_23', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D6_V_UPDATE_11', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D6_V_UPDATE_NO_LOCK_75', - 'DMU_GPU_TIMER_START_0_END_27', 'DMU_GPU_TIMER_START_10_END_37', - 'DMU_GPU_TIMER_START_1_END_28', 'DMU_GPU_TIMER_START_2_END_29', - 'DMU_GPU_TIMER_START_3_END_30', 'DMU_GPU_TIMER_START_4_END_31', - 'DMU_GPU_TIMER_START_6_END_33', 'DMU_GPU_TIMER_START_8_END_35', - 'DOLBY_VISION_DISABLED', 'DOLBY_VISION_ENABLE', - 'DOLBY_VISION_ENABLED', 'DONUTS', 'DOUT_I2C_ACK', - 'DOUT_I2C_ACK_TO_CLEAN', - 'DOUT_I2C_ARBITRATION_ABORT_CURRENT_TRANSFER', - 'DOUT_I2C_ARBITRATION_ABORT_XFER', - 'DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG', - 'DOUT_I2C_ARBITRATION_DONE__NOT_USING_I2C_REG', - 'DOUT_I2C_ARBITRATION_DONE__USING_I2C_REG', - 'DOUT_I2C_ARBITRATION_NOT_ABORT_CURRENT_TRANSFER', - 'DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_0_RESERVED', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_1_RESERVED', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_HIGH', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_NORMAL', - 'DOUT_I2C_ARBITRATION_SW_QUEUE_DISABLED', - 'DOUT_I2C_ARBITRATION_SW_QUEUE_ENABLED', - 'DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ', - 'DOUT_I2C_ARBITRATION__NOT_USE_I2C_REG_REQ', - 'DOUT_I2C_ARBITRATION__USE_I2C_REG_REQ', - 'DOUT_I2C_CONTROL_DDC_SELECT', 'DOUT_I2C_CONTROL_GO', - 'DOUT_I2C_CONTROL_NOT_RESET_I2C_CONTROLLER', - 'DOUT_I2C_CONTROL_NOT_RESET_SW_STATUS', - 'DOUT_I2C_CONTROL_RESET_I2C_CONTROLLER', - 'DOUT_I2C_CONTROL_RESET_SW_STATUS', - 'DOUT_I2C_CONTROL_SELECT_DDC1', 'DOUT_I2C_CONTROL_SELECT_DDC2', - 'DOUT_I2C_CONTROL_SELECT_DDC3', 'DOUT_I2C_CONTROL_SELECT_DDC4', - 'DOUT_I2C_CONTROL_SELECT_DDC5', 'DOUT_I2C_CONTROL_SELECT_DDC6', - 'DOUT_I2C_CONTROL_SELECT_DDCVGA', 'DOUT_I2C_CONTROL_SEND_RESET', - 'DOUT_I2C_CONTROL_SEND_RESET_LENGTH', - 'DOUT_I2C_CONTROL_SOFT_RESET', 'DOUT_I2C_CONTROL_START_TRANSFER', - 'DOUT_I2C_CONTROL_STOP_TRANSFER', - 'DOUT_I2C_CONTROL_SW_STATUS_RESET', 'DOUT_I2C_CONTROL_TRANS0', - 'DOUT_I2C_CONTROL_TRANS0_TRANS1', - 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2', - 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2_TRANS3', - 'DOUT_I2C_CONTROL_TRANSACTION_COUNT', - 'DOUT_I2C_CONTROL__NOT_SEND_RESET', - 'DOUT_I2C_CONTROL__SEND_RESET', - 'DOUT_I2C_CONTROL__SEND_RESET_LENGTH_10', - 'DOUT_I2C_CONTROL__SEND_RESET_LENGTH_9', - 'DOUT_I2C_DATA_INDEX_WRITE', 'DOUT_I2C_DATA__INDEX_WRITE', - 'DOUT_I2C_DATA__NOT_INDEX_WRITE', - 'DOUT_I2C_DDC_EDID_DETECT_STATUS', - 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_BY_EXTERNAL_RESISTOR', - 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_BY_EXTERNAL_RESISTOR', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_10MCLKS', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_20MCLKS', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL', - 'DOUT_I2C_DDC_SETUP_EDID_CONNECT_DETECTED', - 'DOUT_I2C_DDC_SETUP_EDID_DETECT_CONNECT', - 'DOUT_I2C_DDC_SETUP_EDID_DETECT_DISCONNECT', - 'DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE', - 'DOUT_I2C_DDC_SETUP_EDID_DISCONNECT_DETECTED', - 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SCL', - 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SDA', - 'DOUT_I2C_DDC_SPEED_THRESHOLD', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_BIG_THAN_ZERO', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_HALF_OF_TOTAL_SAMPLE', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_QUATER_OF_TOTAL_SAMPLE', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_THREE_QUATERS_OF_TOTAL_SAMPLE', - 'DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET', - 'DOUT_I2C_EDID_NOT_SEND_RESET_BEFORE_EDID_READ_TRACTION', - 'DOUT_I2C_EDID_SEND_RESET_BEFORE_EDID_READ_TRACTION', - 'DOUT_I2C_NO_ACK', 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE', - 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__LEVEL', - 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__PULSE', - 'DOUT_I2C_TRANSACTION_STOP_ALL_TRANS', - 'DOUT_I2C_TRANSACTION_STOP_CURRENT_TRANS', - 'DOUT_I2C_TRANSACTION_STOP_ON_NACK', 'DPCSRX_BPHY_PCS_RX0_CLK', - 'DPCSRX_BPHY_PCS_RX1_CLK', 'DPCSRX_BPHY_PCS_RX2_CLK', - 'DPCSRX_BPHY_PCS_RX3_CLK', - 'DPCSRX_RX_CLOCK_CNTL_DPCS_SYMCLK_RX_SEL', 'DPCSTX_DVI_LINK_MODE', - 'DPCSTX_DVI_LINK_MODE_DUAL_LINK_MASTER', - 'DPCSTX_DVI_LINK_MODE_DUAL_LINK_SLAVER', - 'DPCSTX_DVI_LINK_MODE_NORMAL', 'DPHY_8B10B_CUR_DISP', - 'DPHY_8B10B_CUR_DISP_ONE', 'DPHY_8B10B_CUR_DISP_ZERO', - 'DPHY_8B10B_NOT_RESET', 'DPHY_8B10B_OUTPUT', 'DPHY_8B10B_RESET', - 'DPHY_8B10B_RESETET', 'DPHY_ATEST_LANE0_PRBS_PATTERN', - 'DPHY_ATEST_LANE0_REG_PATTERN', 'DPHY_ATEST_LANE1_PRBS_PATTERN', - 'DPHY_ATEST_LANE1_REG_PATTERN', 'DPHY_ATEST_LANE2_PRBS_PATTERN', - 'DPHY_ATEST_LANE2_REG_PATTERN', 'DPHY_ATEST_LANE3_PRBS_PATTERN', - 'DPHY_ATEST_LANE3_REG_PATTERN', 'DPHY_ATEST_SEL_LANE0', - 'DPHY_ATEST_SEL_LANE1', 'DPHY_ATEST_SEL_LANE2', - 'DPHY_ATEST_SEL_LANE3', 'DPHY_BYPASS', 'DPHY_CRC_CONTINUOUS', - 'DPHY_CRC_CONT_EN', 'DPHY_CRC_DISABLED', 'DPHY_CRC_EN', - 'DPHY_CRC_ENABLED', 'DPHY_CRC_FIELD', 'DPHY_CRC_LANE0_SELECTED', - 'DPHY_CRC_LANE1_SELECTED', 'DPHY_CRC_LANE2_SELECTED', - 'DPHY_CRC_LANE3_SELECTED', 'DPHY_CRC_MST_PHASE_ERROR_ACK', - 'DPHY_CRC_MST_PHASE_ERROR_ACKED', - 'DPHY_CRC_MST_PHASE_ERROR_NO_ACK', 'DPHY_CRC_ONE_SHOT', - 'DPHY_CRC_SEL', 'DPHY_CRC_START_FROM_BOTTOM_FIELD', - 'DPHY_CRC_START_FROM_TOP_FIELD', 'DPHY_DBG_OUTPUT', - 'DPHY_FAST_TRAINING_CAPABLE', 'DPHY_FAST_TRAINING_NOT_CAPABLE_0', - 'DPHY_FEC_ACTIVE', 'DPHY_FEC_DISABLED', 'DPHY_FEC_ENABLE', - 'DPHY_FEC_ENABLED', 'DPHY_FEC_NOT_ACTIVE', 'DPHY_FEC_READY', - 'DPHY_FEC_READY_DIS', 'DPHY_FEC_READY_EN', - 'DPHY_LOAD_BS_COUNT_NOT_STARTED', 'DPHY_LOAD_BS_COUNT_START', - 'DPHY_LOAD_BS_COUNT_STARTED', 'DPHY_NO_SKEW', - 'DPHY_PRBS11_SELECTED', 'DPHY_PRBS23_SELECTED', - 'DPHY_PRBS7_SELECTED', 'DPHY_PRBS_DISABLE', 'DPHY_PRBS_EN', - 'DPHY_PRBS_ENABLE', 'DPHY_PRBS_SEL', - 'DPHY_RX_FAST_TRAINING_CAPABLE', 'DPHY_SKEW_BYPASS', - 'DPHY_SW_FAST_TRAINING_NOT_STARTED', - 'DPHY_SW_FAST_TRAINING_START', 'DPHY_SW_FAST_TRAINING_STARTED', - 'DPHY_TRAINING_PATTERN_1', 'DPHY_TRAINING_PATTERN_2', - 'DPHY_TRAINING_PATTERN_3', 'DPHY_TRAINING_PATTERN_4', - 'DPHY_TRAINING_PATTERN_SEL', 'DPHY_WITH_SKEW', 'DPREFCLK_SRC_SEL', - 'DPREFCLK_SRC_SEL_CK', 'DPREFCLK_SRC_SEL_P0PLL', - 'DPREFCLK_SRC_SEL_P1PLL', 'DPREFCLK_SRC_SEL_P2PLL', - 'DPTE_GROUP_SIZE', 'DPTE_GROUP_SIZE_1024B', - 'DPTE_GROUP_SIZE_128B', 'DPTE_GROUP_SIZE_2048B', - 'DPTE_GROUP_SIZE_256B', 'DPTE_GROUP_SIZE_4096B', - 'DPTE_GROUP_SIZE_512B', 'DPTE_GROUP_SIZE_64B', - 'DPTE_GROUP_SIZE_8192B', 'DP_AUX_ARB_CONTROL_ARB_PRIORITY', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__GTC_LS_SW', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__LS_GTC_SW', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_GTC_LS', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_LS_GTC', - 'DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG', - 'DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ', - 'DP_AUX_ARB_CONTROL__DONE_NOT_USING_AUX_REG', - 'DP_AUX_ARB_CONTROL__DONE_USING_AUX_REG', - 'DP_AUX_ARB_CONTROL__NOT_USE_AUX_REG_REQ', - 'DP_AUX_ARB_CONTROL__USE_AUX_REG_REQ', - 'DP_AUX_CONTROL_HPD1_SELECTED', 'DP_AUX_CONTROL_HPD2_SELECTED', - 'DP_AUX_CONTROL_HPD3_SELECTED', 'DP_AUX_CONTROL_HPD4_SELECTED', - 'DP_AUX_CONTROL_HPD5_SELECTED', 'DP_AUX_CONTROL_HPD6_SELECTED', - 'DP_AUX_CONTROL_HPD_SEL', 'DP_AUX_CONTROL_NO_HPD_SELECTED', - 'DP_AUX_CONTROL_TEST_MODE', 'DP_AUX_CONTROL_TEST_MODE_DISABLE', - 'DP_AUX_CONTROL_TEST_MODE_ENABLE', - 'DP_AUX_DEFINITE_ERR_REACHED_ACK', - 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START', - 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__10_EDGES', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__18_EDGES', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__6_EDGES', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__RESERVED', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__2_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__4_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__6_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__8_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO128_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO16_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO256_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO2_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO32_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO4_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO64_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO8_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO128_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO16_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO256_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO2_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO32_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO4_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO64_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO8_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_START', - 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_STOP', - 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_START', - 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_STOP', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__127to128', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__15to16', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__1to2', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__255to256', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__31to32', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__3to4', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__63to64', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__7to8', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__0', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__128US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__16US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__256US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__32US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__64US', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__1MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__2MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__4MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__8MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__DIVIDED_SYM_CLK', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__FROM_DCCG_MICROSECOND_REF', - 'DP_AUX_ERR_OCCURRED_ACK', 'DP_AUX_ERR_OCCURRED__ACK', - 'DP_AUX_ERR_OCCURRED__NOT_ACK', - 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_ALLOW_REQ_FROM_OTHER_AUX', - 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ', - 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ_FROM_OTHER_AUX', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__300US', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__400US', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__500US', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__600US', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__16_ATTAMPS', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__4_ATTAMPS', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__8_ATTAMPS', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__RESERVED', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__0', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__128', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__256', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__64', - 'DP_AUX_INT_ACK', 'DP_AUX_INT_LS_UPDATE_ACK', - 'DP_AUX_INT_LS_UPDATE_NOT_ACK', 'DP_AUX_INT__ACK', - 'DP_AUX_INT__NOT_ACK', 'DP_AUX_LS_UPDATE_ACK', - 'DP_AUX_PHY_WAKE_HIGH_PRIORITY', 'DP_AUX_PHY_WAKE_LOW_PRIORITY', - 'DP_AUX_PHY_WAKE_PRIORITY', 'DP_AUX_POTENTIAL_ERR_REACHED_ACK', - 'DP_AUX_POTENTIAL_ERR_REACHED__ACK', - 'DP_AUX_POTENTIAL_ERR_REACHED__NOT_ACK', 'DP_AUX_RESET', - 'DP_AUX_RESET_ASSERTED', 'DP_AUX_RESET_DEASSERTED', - 'DP_AUX_RESET_DONE', 'DP_AUX_RESET_SEQUENCE_DONE', - 'DP_AUX_RESET_SEQUENCE_NOT_DONE', 'DP_AUX_RX_TIMEOUT_LEN_MUL', - 'DP_AUX_RX_TIMEOUT_LEN_MUL_2', 'DP_AUX_RX_TIMEOUT_LEN_MUL_4', - 'DP_AUX_RX_TIMEOUT_LEN_MUL_8', 'DP_AUX_RX_TIMEOUT_LEN_NO_MUL', - 'DP_AUX_SW_CONTROL_LS_READ_TRIG', - 'DP_AUX_SW_CONTROL_LS_READ__NOT_TRIG', - 'DP_AUX_SW_CONTROL_LS_READ__TRIG', 'DP_AUX_SW_CONTROL_SW_GO', - 'DP_AUX_SW_CONTROL_SW__GO', 'DP_AUX_SW_CONTROL_SW__NOT_GO', - 'DP_AUX_TX_PRECHARGE_LEN_MUL', 'DP_AUX_TX_PRECHARGE_LEN_MUL_2', - 'DP_AUX_TX_PRECHARGE_LEN_MUL_4', 'DP_AUX_TX_PRECHARGE_LEN_MUL_8', - 'DP_AUX_TX_PRECHARGE_LEN_NO_MUL', 'DP_COMBINE_FOUR_PIXEL', - 'DP_COMBINE_ONE_PIXEL', 'DP_COMBINE_PIXEL_NUM', - 'DP_COMBINE_TWO_PIXEL', 'DP_COMPONENT_DEPTH', - 'DP_COMPONENT_DEPTH_10BPC', 'DP_COMPONENT_DEPTH_12BPC', - 'DP_COMPONENT_DEPTH_16BPC_RESERVED', 'DP_COMPONENT_DEPTH_6BPC', - 'DP_COMPONENT_DEPTH_8BPC', 'DP_COMPONENT_DEPTH_RESERVED', - 'DP_DPHY_8B10B_EXT_DISP', 'DP_DPHY_8B10B_EXT_DISP_ONE', - 'DP_DPHY_8B10B_EXT_DISP_ZERO', - 'DP_DPHY_FAST_TRAINING_COMPLETE_ACK', - 'DP_DPHY_FAST_TRAINING_COMPLETE_ACKED', - 'DP_DPHY_FAST_TRAINING_COMPLETE_MASK', - 'DP_DPHY_FAST_TRAINING_COMPLETE_MASKED', - 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_ACKED', - 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_MASKED', - 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_DISABLED', - 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN', - 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_ENABLED', - 'DP_DPHY_HBR2_PASS_THROUGH', 'DP_DPHY_HBR2_PATTERN_1', - 'DP_DPHY_HBR2_PATTERN_2_NEG', 'DP_DPHY_HBR2_PATTERN_2_POS', - 'DP_DPHY_HBR2_PATTERN_3', 'DP_DPHY_HBR2_PATTERN_CONTROL_MODE', - 'DP_DSC_444_SIMPLE_422', 'DP_DSC_DISABLE', 'DP_DSC_MODE', - 'DP_DSC_NATIVE_422_420', 'DP_DTO_DESPREAD_DISABLE', - 'DP_DTO_DESPREAD_ENABLE', 'DP_DTO_DS_DISABLE', - 'DP_EMBEDDED_PANEL', 'DP_EMBEDDED_PANEL_MODE', - 'DP_EXTERNAL_PANEL', 'DP_LINK_TRAINING_ALREADY_COMPLETE', - 'DP_LINK_TRAINING_COMPLETE', 'DP_LINK_TRAINING_NOT_COMPLETE', - 'DP_LINK_TRAINING_SWITCH_MODE', 'DP_LINK_TRAINING_SWITCH_TO_IDLE', - 'DP_LINK_TRAINING_SWITCH_TO_VIDEO', 'DP_ML_PHY_SEQ_IMMEDIATE', - 'DP_ML_PHY_SEQ_LINE_NUM', 'DP_ML_PHY_SEQ_MODE', - 'DP_MSA_V_TIMING_OVERRIDE_EN', 'DP_MSE_BLANK_CODE', - 'DP_MSE_BLANK_CODE_SF_FILLED', 'DP_MSE_BLANK_CODE_ZERO_FILLED', - 'DP_MSE_LINK_LINE', 'DP_MSE_LINK_LINE_128_MTP_LONG', - 'DP_MSE_LINK_LINE_256_MTP_LONG', 'DP_MSE_LINK_LINE_32_MTP_LONG', - 'DP_MSE_LINK_LINE_64_MTP_LONG', 'DP_MSE_NOT_ZERO_FE_ENCODER', - 'DP_MSE_SAT_UPDATE_ACT', 'DP_MSE_SAT_UPDATE_NO_ACTION', - 'DP_MSE_SAT_UPDATE_WITHOUT_TRIGGER', - 'DP_MSE_SAT_UPDATE_WITH_TRIGGER', - 'DP_MSE_TIMESTAMP_CALC_BASED_ON_LINK_RATE', - 'DP_MSE_TIMESTAMP_CALC_BASED_ON_VC_RATE', 'DP_MSE_TIMESTAMP_MODE', - 'DP_MSE_ZERO_ENCODER', 'DP_MSE_ZERO_FE_ENCODER', - 'DP_MSO_FOUR_SSTLINK', 'DP_MSO_NUM_OF_SST_LINKS', - 'DP_MSO_ONE_SSTLINK', 'DP_MSO_TWO_SSTLINK', 'DP_PIXEL_ENCODING', - 'DP_PIXEL_ENCODING_RESERVED', 'DP_PIXEL_ENCODING_RGB444', - 'DP_PIXEL_ENCODING_RGB_WIDE_GAMUT', 'DP_PIXEL_ENCODING_YCBCR420', - 'DP_PIXEL_ENCODING_YCBCR422', 'DP_PIXEL_ENCODING_YCBCR444', - 'DP_PIXEL_ENCODING_Y_ONLY', 'DP_SEC_ASP_CHANNEL_COUNT_FROM_AZ', - 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE', - 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED', - 'DP_SEC_ASP_HIGH_PRIORITY', 'DP_SEC_ASP_LOW_PRIORITY', - 'DP_SEC_ASP_PRIORITY', 'DP_SEC_AUDIO_MUTE', - 'DP_SEC_AUDIO_MUTE_HW_CTRL', 'DP_SEC_AUDIO_MUTE_SW_CTRL', - 'DP_SEC_COLLISION_ACK', 'DP_SEC_COLLISION_ACK_CLR_FLAG', - 'DP_SEC_COLLISION_ACK_NO_EFFECT', 'DP_SEC_GSP0_PRIORITY', - 'DP_SEC_GSP_SEND', 'DP_SEC_GSP_SEND_ANY_LINE', - 'DP_SEC_GSP_SEND_PPS', 'DP_SEC_LINE_REFERENCE', - 'DP_SEC_TIMESTAMP_AUTO_CALC_MODE', 'DP_SEC_TIMESTAMP_MODE', - 'DP_SEC_TIMESTAMP_PROGRAMMABLE_MODE', 'DP_STEER_OVERFLOW_ACK', - 'DP_STEER_OVERFLOW_ACK_CLR_INTERRUPT', - 'DP_STEER_OVERFLOW_ACK_NO_EFFECT', 'DP_STEER_OVERFLOW_MASK', - 'DP_STEER_OVERFLOW_MASKED', 'DP_STEER_OVERFLOW_UNMASK', - 'DP_SYNC_POLARITY', 'DP_SYNC_POLARITY_ACTIVE_HIGH', - 'DP_SYNC_POLARITY_ACTIVE_LOW', 'DP_TU_OVERFLOW_ACK', - 'DP_TU_OVERFLOW_ACK_CLR_INTERRUPT', - 'DP_TU_OVERFLOW_ACK_NO_EFFECT', 'DP_UDI_1_LANE', 'DP_UDI_2_LANES', - 'DP_UDI_4_LANES', 'DP_UDI_LANES', 'DP_UDI_LANES_RESERVED', - 'DP_VID_ENHANCED_FRAME_MODE', 'DP_VID_M_1X_INPUT_PIXEL_RATE', - 'DP_VID_M_2X_INPUT_PIXEL_RATE', 'DP_VID_M_4X_INPUT_PIXEL_RATE', - 'DP_VID_M_8X_INPUT_PIXEL_RATE', 'DP_VID_M_N_CALC_AUTO', - 'DP_VID_M_N_DOUBLE_BUFFER_AFTER_VID_M_UPDATE', - 'DP_VID_M_N_DOUBLE_BUFFER_AT_FRAME_START', - 'DP_VID_M_N_DOUBLE_BUFFER_MODE', 'DP_VID_M_N_GEN_EN', - 'DP_VID_M_N_PROGRAMMED_VIA_REG', 'DP_VID_N_MUL', - 'DP_VID_STREAM_DISABLE_ACK', 'DP_VID_STREAM_DISABLE_MASK', - 'DP_VID_STREAM_DIS_DEFER', 'DP_VID_STREAM_DIS_DEFER_TO_HBLANK', - 'DP_VID_STREAM_DIS_DEFER_TO_VBLANK', 'DP_VID_STREAM_DIS_NO_DEFER', - 'DP_VID_VBID_FIELD_POL', 'DP_VID_VBID_FIELD_POL_INV', - 'DP_VID_VBID_FIELD_POL_NORMAL', 'DRAW_DONE', - 'DRR_UPDATE_LOCK_SEL', 'DRR_UPDATE_LOCK_SEL_0', - 'DRR_UPDATE_LOCK_SEL_1', 'DRR_UPDATE_LOCK_SEL_2', - 'DRR_UPDATE_LOCK_SEL_3', 'DRR_UPDATE_LOCK_SEL_4', - 'DRR_UPDATE_LOCK_SEL_5', 'DSCCIF_BITS_PER_COMPONENT_ENUM', - 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT', - 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT', - 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT', - 'DSCCIF_ENABLE_ENUM', 'DSCCIF_ENABLE_ENUM_DISABLED', - 'DSCCIF_ENABLE_ENUM_ENABLED', 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_420', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_422', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_RGB', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_SIMPLE_YCBCR_422', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_YCBCR_444', - 'DSCC_BITS_PER_COMPONENT_ENUM', - 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT', - 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT', - 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT', - 'DSCC_DSC_VERSION_MAJOR_ENUM', - 'DSCC_DSC_VERSION_MAJOR_ENUM_DSC_1_X_MAJOR_VERSION', - 'DSCC_DSC_VERSION_MINOR_ENUM', - 'DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_1_MINOR_VERSION', - 'DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_2_MINOR_VERSION', - 'DSCC_ENABLE_ENUM', 'DSCC_ENABLE_ENUM_DISABLED', - 'DSCC_ENABLE_ENUM_ENABLED', 'DSCC_ICH_RESET_ENUM', - 'DSCC_ICH_RESET_ENUM_SLICE0_ICH_RESET', - 'DSCC_ICH_RESET_ENUM_SLICE1_ICH_RESET', - 'DSCC_ICH_RESET_ENUM_SLICE2_ICH_RESET', - 'DSCC_ICH_RESET_ENUM_SLICE3_ICH_RESET', 'DSCC_LINEBUF_DEPTH_ENUM', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_10_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_11_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_12_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_13_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_8_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_9_BIT', - 'DSCC_MEM_PWR_DIS_ENUM', 'DSCC_MEM_PWR_DIS_ENUM_REQUEST_DIS', - 'DSCC_MEM_PWR_DIS_ENUM_REQUEST_EN', 'DSCC_MEM_PWR_FORCE_ENUM', - 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_DEEP_SLEEP_REQUEST', - 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_LIGHT_SLEEP_REQUEST', - 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_SHUT_DOWN_REQUEST', - 'DSCC_MEM_PWR_FORCE_ENUM_NO_FORCE_REQUEST', - 'DSCL_MODE_CHROMA_SCALING_BYPASS', 'DSCL_MODE_DSCL_BYPASS', - 'DSCL_MODE_LUMA_SCALING_BYPASS', 'DSCL_MODE_SCALING_444_BYPASS', - 'DSCL_MODE_SCALING_444_RGB_ENABLE', - 'DSCL_MODE_SCALING_444_YCBCR_ENABLE', - 'DSCL_MODE_SCALING_YCBCR_ENABLE', 'DSCL_MODE_SEL', 'DSM_DATA_SEL', - 'DSM_DATA_SEL_0', 'DSM_DATA_SEL_1', 'DSM_DATA_SEL_BOTH', - 'DSM_DATA_SEL_DISABLE', 'DSM_ENABLE_ERROR_INJECT', - 'DSM_ENABLE_ERROR_INJECT_FED_IN', - 'DSM_ENABLE_ERROR_INJECT_SINGLE', - 'DSM_ENABLE_ERROR_INJECT_UNCORRECTABLE', - 'DSM_ENABLE_ERROR_INJECT_UNCORRECTABLE_LIMITED', - 'DSM_SELECT_INJECT_DELAY', 'DSM_SELECT_INJECT_DELAY_DELAY_ERROR', - 'DSM_SELECT_INJECT_DELAY_NO_DELAY', 'DSM_SINGLE_WRITE', - 'DSM_SINGLE_WRITE_DIS', 'DSM_SINGLE_WRITE_EN', 'DS_HW_CAL_DIS', - 'DS_HW_CAL_EN', 'DS_HW_CAL_ENABLE', 'DS_JITTER_COUNT_SRC_SEL', - 'DS_JITTER_COUNT_SRC_SEL0', 'DS_JITTER_COUNT_SRC_SEL1', - 'DS_REF_IS_EXT_GENLOCK', 'DS_REF_IS_PCIE', 'DS_REF_IS_XTALIN', - 'DS_REF_SRC', 'DVOACLKC_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', - 'DVOACLKC_IN_PHASE', 'DVOACLKC_IN_PHASE_WITH_PCLK_DVO', - 'DVOACLKC_MVP_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', - 'DVOACLKC_MVP_IN_PHASE', 'DVOACLKC_MVP_IN_PHASE_WITH_PCLK_DVO', - 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE', - 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_DISABLE', - 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_ENABLE', - 'DVOACLKD_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', 'DVOACLKD_IN_PHASE', - 'DVOACLKD_IN_PHASE_WITH_PCLK_DVO', 'DVOACLK_COARSE_SKEW_CNTL', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_10_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_11_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_12_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_13_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_14_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_15_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_1_STEP', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_2_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_3_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_4_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_5_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_6_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_7_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_8_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_9_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_10_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_11_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_12_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_13_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_14_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_15_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_1_STEP', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_2_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_3_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_4_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_5_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_6_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_7_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_8_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_9_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_NO_ADJUSTMENT', - 'DVOACLK_FINE_SKEW_CNTL', 'DVOACLK_FINE_SKEW_CNTL_DELAY_1_STEP', - 'DVOACLK_FINE_SKEW_CNTL_DELAY_2_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_DELAY_3_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_EARLY_1_STEP', - 'DVOACLK_FINE_SKEW_CNTL_EARLY_2_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_EARLY_3_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_EARLY_4_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_NO_ADJUSTMENT', 'DVO_ENABLE_RST', - 'DVO_ENABLE_RST_DISABLE', 'DVO_ENABLE_RST_ENABLE', - 'DWB_DATA_DEPTH_WARMUP_10BPC', 'DWB_DATA_DEPTH_WARMUP_8BPC', - 'DWB_DATA_DEPTH_WARMUP_ENUM', 'DWB_GMC_WARM_UP_DISABLE', - 'DWB_GMC_WARM_UP_ENABLE', 'DWB_GMC_WARM_UP_ENABLE_ENUM', - 'DWB_MODE_WARMUP_420', 'DWB_MODE_WARMUP_444', - 'DWB_MODE_WARMUP_ENUM', 'DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE', - 'DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE_0', - 'DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE_1', - 'DYNAMIC_DEEP_SLEEP_EN', 'DYNAMIC_DEEP_SLEEP_ENABLE', - 'DYNAMIC_LIGHT_SLEEP_EN', 'DYNAMIC_LIGHT_SLEEP_ENABLE', - 'DYNAMIC_SHUT_DOWN_ENABLE', 'DbMemArbWatermarks', - 'DbPRTFaultBehavior', 'DbPSLControl', 'DepthArray', 'DepthFormat', - 'EARLY_Z_THEN_LATE_Z', 'EARLY_Z_THEN_RE_Z', - 'EFC_ACrYCb16161616_10LSB', 'EFC_ACrYCb16161616_10MSB', - 'EFC_ACrYCb16161616_12LSB', 'EFC_ACrYCb16161616_12MSB', - 'EFC_ACrYCb2101010', 'EFC_ACrYCb8888', 'EFC_ARGB1555', - 'EFC_ARGB16161616_10LSB', 'EFC_ARGB16161616_10MSB', - 'EFC_ARGB16161616_12LSB', 'EFC_ARGB16161616_12MSB', - 'EFC_ARGB16161616_FLOAT', 'EFC_ARGB16161616_SNORM', - 'EFC_ARGB16161616_UNORM', 'EFC_ARGB2101010', 'EFC_ARGB4444', - 'EFC_ARGB8888', 'EFC_AYCrCb16161616_10LSB', - 'EFC_AYCrCb16161616_10MSB', 'EFC_AYCrCb16161616_12LSB', - 'EFC_AYCrCb16161616_12MSB', 'EFC_AYCrCb8888', 'EFC_BGR101111_FIX', - 'EFC_BGR101111_FLOAT', 'EFC_BGR565', - 'EFC_CbYCrY10101010_422_PACKED', 'EFC_CbYCrY12121212_422_PACKED', - 'EFC_CbYCrY8888_422_PACKED', 'EFC_CrYCbA1010102', - 'EFC_CrYCbA16161616_10LSB', 'EFC_CrYCbA16161616_10MSB', - 'EFC_CrYCbA16161616_12LSB', 'EFC_CrYCbA16161616_12MSB', - 'EFC_CrYCbA8888', 'EFC_CrYCbY10101010_422_PACKED', - 'EFC_CrYCbY12121212_422_PACKED', 'EFC_CrYCbY8888_422_PACKED', - 'EFC_MONO_10LSB', 'EFC_MONO_10MSB', 'EFC_MONO_12LSB', - 'EFC_MONO_12MSB', 'EFC_MONO_16', 'EFC_MONO_8', - 'EFC_RGB111110_FIX', 'EFC_RGB111110_FLOAT', 'EFC_RGB565', - 'EFC_RGBA1010102', 'EFC_RGBA16161616_10LSB', - 'EFC_RGBA16161616_10MSB', 'EFC_RGBA16161616_12LSB', - 'EFC_RGBA16161616_12MSB', 'EFC_RGBA16161616_FLOAT', - 'EFC_RGBA16161616_SNORM', 'EFC_RGBA16161616_UNORM', - 'EFC_RGBA4444', 'EFC_RGBA5551', 'EFC_RGBA8888', - 'EFC_SURFACE_PIXEL_FORMAT', 'EFC_Y10_CbCr1010_420_PLANAR', - 'EFC_Y10_CrCb1010_420_PLANAR', 'EFC_Y12_CbCr1212_420_PLANAR', - 'EFC_Y12_CrCb1212_420_PLANAR', 'EFC_Y8_CbCr88_420_PLANAR', - 'EFC_Y8_CrCb88_420_PLANAR', 'EFC_YCbYCr10101010_422_PACKED', - 'EFC_YCbYCr12121212_422_PACKED', 'EFC_YCbYCr8888_422_PACKED', - 'EFC_YCrCbA16161616_10LSB', 'EFC_YCrCbA16161616_10MSB', - 'EFC_YCrCbA16161616_12LSB', 'EFC_YCrCbA16161616_12MSB', - 'EFC_YCrCbA8888', 'EFC_YCrYCb10101010_422_PACKED', - 'EFC_YCrYCb12121212_422_PACKED', 'EFC_YCrYCb8888_422_PACKED', - 'EIGHT_BANKS', 'EIGHT_FRAGMENTS', 'EIGHT_PIPES', - 'EIGHT_SHADER_ENGINS', 'ENABLE', 'ENABLE_CLOCK', 'ENABLE_ENUM', - 'ENABLE_ENUM_DISABLED', 'ENABLE_ENUM_ENABLED', - 'ENABLE_JITTER_REMOVAL', 'ENABLE_LEGACY_PIPELINE', - 'ENABLE_MEM_PWR_CTRL', 'ENABLE_NGG_PIPELINE', 'ENABLE_THE_CLOCK', - 'ENABLE_THE_FEATURE', 'ENABLE_THE_INTERRUPT', 'ENDIAN_8IN16', - 'ENDIAN_8IN32', 'ENDIAN_8IN64', 'ENDIAN_NONE', - 'END_OF_PIPE_IB_END', 'END_OF_PIPE_INCR_DE', - 'ENGG_CSB_DELAY_BIN00', 'ENGG_CSB_DELAY_BIN01', - 'ENGG_CSB_DELAY_BIN02', 'ENGG_CSB_DELAY_BIN03', - 'ENGG_CSB_DELAY_BIN04', 'ENGG_CSB_DELAY_BIN05', - 'ENGG_CSB_DELAY_BIN06', 'ENGG_CSB_DELAY_BIN07', - 'ENGG_CSB_DELAY_BIN08', 'ENGG_CSB_DELAY_BIN09', - 'ENGG_CSB_DELAY_BIN10', 'ENGG_CSB_DELAY_BIN11', - 'ENGG_CSB_DELAY_BIN12', 'ENGG_CSB_DELAY_BIN13', - 'ENGG_CSB_DELAY_BIN14', 'ENGG_CSB_DELAY_BIN15', - 'ENGG_CSB_GE_INPUT_FIFO_FULL', 'ENGG_CSB_GE_SENDING_SUBGROUP', - 'ENGG_CSB_MACHINE_IS_STARVED', - 'ENGG_CSB_MACHINE_STALLED_BY_CSB_MEMORY', - 'ENGG_CSB_MACHINE_STALLED_BY_SPI', - 'ENGG_CSB_OBJECTID_INPUT_FIFO_FULL', 'ENGG_CSB_PRIM_COUNT_EQ0', - 'ENGG_CSB_SPI_DELAY_BIN00', 'ENGG_CSB_SPI_DELAY_BIN01', - 'ENGG_CSB_SPI_DELAY_BIN02', 'ENGG_CSB_SPI_DELAY_BIN03', - 'ENGG_CSB_SPI_DELAY_BIN04', 'ENGG_CSB_SPI_DELAY_BIN05', - 'ENGG_CSB_SPI_DELAY_BIN06', 'ENGG_CSB_SPI_DELAY_BIN07', - 'ENGG_CSB_SPI_DELAY_BIN08', 'ENGG_CSB_SPI_DELAY_BIN09', - 'ENGG_CSB_SPI_DELAY_BIN10', 'ENGG_CSB_SPI_DELAY_BIN11', - 'ENGG_CSB_SPI_DELAY_BIN12', 'ENGG_CSB_SPI_DELAY_BIN13', - 'ENGG_CSB_SPI_DELAY_BIN14', 'ENGG_CSB_SPI_DELAY_BIN15', - 'ENGG_CSB_SPI_INPUT_FIFO_FULL', - 'ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_NO_WRITE', - 'ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_WRITE', - 'ENGG_INDEX_PRIM_IF_QUALIFIED_BUSY', - 'ENGG_INDEX_PRIM_IF_QUALIFIED_STARVED', - 'ENGG_INDEX_PRIM_IF_REUSE_0_NEW_VERTS_THIS_PRIM', - 'ENGG_INDEX_PRIM_IF_REUSE_1_NEW_VERTS_THIS_PRIM', - 'ENGG_INDEX_PRIM_IF_REUSE_2_NEW_VERTS_THIS_PRIM', - 'ENGG_INDEX_PRIM_IF_REUSE_3_NEW_VERTS_THIS_PRIM', - 'ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_P_FIFO', - 'ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_S_FIFO', - 'ENGG_INDEX_PRIM_IF_STARVED_BY_NO_PRIM', - 'ENGG_INDEX_REQ_BUSY_AND_STALLED_BY_REQ2RTN_FIFO_FULL', - 'ENGG_INDEX_REQ_IDLE_AND_STALLED_BY_REQ2RTN_FIFO_FULL', - 'ENGG_INDEX_REQ_STALLED_BY_SX_CREDITS', 'ENGG_INDEX_REQ_STARVED', - 'ENGG_INDEX_RET_REQ2RTN_FIFO_EMPTY', - 'ENGG_INDEX_RET_REQ2RTN_FIFO_FULL', - 'ENGG_INDEX_RET_SXRX_READING_EVENT', - 'ENGG_INDEX_RET_SXRX_READING_NULL_SUBGROUP', - 'ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_NOPL', - 'ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_PL', - 'ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_NOPL', - 'ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_PL', - 'ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS', - 'ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS', - 'ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS', - 'ENGG_INDEX_RET_SXRX_READING_SUBGROUP_PRIMCOUNT_EQ0', - 'ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_CSB_FIFO', - 'ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_FIFO', - 'ENGG_INDEX_RET_SXRX_STARVED_BY_CSB', - 'ENGG_INDEX_RET_SXRX_STARVED_BY_PRIMS', - 'ENGG_INDEX_RET_SX_RECEIVE_FIFO_FULL', - 'ENGG_POS_REQ_STALLED_BY_FULL_CLIPV_FIFO', 'ENGG_POS_REQ_STARVED', - 'ENUMS_GDS_PERFCOUNT_SELECT_H', 'ENUM_DPG_BIT_DEPTH', - 'ENUM_DPG_BIT_DEPTH_10BPC', 'ENUM_DPG_BIT_DEPTH_12BPC', - 'ENUM_DPG_BIT_DEPTH_6BPC', 'ENUM_DPG_BIT_DEPTH_8BPC', - 'ENUM_DPG_DISABLE', 'ENUM_DPG_DYNAMIC_RANGE', - 'ENUM_DPG_DYNAMIC_RANGE_CEA', 'ENUM_DPG_DYNAMIC_RANGE_VESA', - 'ENUM_DPG_EN', 'ENUM_DPG_ENABLE', 'ENUM_DPG_FIELD_POLARITY', - 'ENUM_DPG_FIELD_POLARITY_TOP_EVEN_BOTTOM_ODD', - 'ENUM_DPG_FIELD_POLARITY_TOP_ODD_BOTTOM_EVEN', 'ENUM_DPG_MODE', - 'ENUM_DPG_MODE_HORIZONTAL_BAR', 'ENUM_DPG_MODE_RGB_COLOUR_BLOCK', - 'ENUM_DPG_MODE_RGB_DUAL_RAMP', 'ENUM_DPG_MODE_RGB_SINGLE_RAMP', - 'ENUM_DPG_MODE_RGB_XR_BIAS', 'ENUM_DPG_MODE_VERTICAL_BAR', - 'ENUM_DPG_MODE_YCBCR_601_COLOUR_BLOCK', - 'ENUM_DPG_MODE_YCBCR_709_COLOUR_BLOCK', - 'ENUM_FMT_PTI_FIELD_POLARITY', - 'ENUM_FMT_PTI_FIELD_POLARITY_TOP_EVEN_BOTTOM_ODD', - 'ENUM_FMT_PTI_FIELD_POLARITY_TOP_ODD_BOTTOM_EVEN', - 'ENUM_NUM_SIMD_PER_CU', 'ES_STAGE_DS', 'ES_STAGE_OFF', - 'ES_STAGE_REAL', 'EXPORT_16_16_FLOAT_8PIX', - 'EXPORT_16_16_SIGNED_8PIX', 'EXPORT_16_16_UNSIGNED_8PIX', - 'EXPORT_2C_32BPC_AR', 'EXPORT_2C_32BPC_GR', - 'EXPORT_2P_32BPC_ABGR', 'EXPORT_32BPP_8PIX', 'EXPORT_32_ABGR', - 'EXPORT_32_AR', 'EXPORT_32_GR', 'EXPORT_32_R', 'EXPORT_4C_16BPC', - 'EXPORT_4C_32BPC', 'EXPORT_4P_16BPC_ABGR', 'EXPORT_4P_32BPC_ABGR', - 'EXPORT_4P_32BPC_AR', 'EXPORT_4P_32BPC_GR', 'EXPORT_8P_32BPC_R', - 'EXPORT_ANY_Z', 'EXPORT_FP16_ABGR', 'EXPORT_GREATER_THAN_Z', - 'EXPORT_LESS_THAN_Z', 'EXPORT_RESERVED', 'EXPORT_SIGNED16_ABGR', - 'EXPORT_UNSIGNED16_ABGR', 'EXPORT_UNUSED', 'FAULT_FAIL', - 'FAULT_ONE', 'FAULT_PASS', 'FAULT_ZERO', 'FEC_ACTIVE_STATUS', - 'FIX_S2_13', 'FIX_S3_12', 'FLIP_ANY_FRAME', 'FLIP_LEFT_EYE', - 'FLIP_RATE', 'FLIP_RATE_0', 'FLIP_RATE_1', 'FLIP_RATE_2', - 'FLIP_RATE_3', 'FLIP_RATE_4', 'FLIP_RATE_5', 'FLIP_RATE_6', - 'FLIP_RATE_7', 'FLIP_RIGHT_EYE', 'FLUSH_AND_INV_CB_DATA_TS', - 'FLUSH_AND_INV_CB_META', 'FLUSH_AND_INV_CB_PIXEL_DATA', - 'FLUSH_AND_INV_DB_DATA_TS', 'FLUSH_AND_INV_DB_META', - 'FLUSH_CONTROL_FLUSH_NOT_STARTED', 'FLUSH_CONTROL_FLUSH_STARTED', - 'FLUSH_DFSM', 'FLUSH_ES_OUTPUT', 'FLUSH_HS_OUTPUT', 'FLUSH_SX_TS', - 'FMTMEM_DISABLE_MEM_PWR_CTRL', 'FMTMEM_ENABLE_MEM_PWR_CTRL', - 'FMTMEM_FORCE_DEEP_SLEEP_REQUEST', - 'FMTMEM_FORCE_LIGHT_SLEEP_REQUEST', - 'FMTMEM_FORCE_SHUT_DOWN_REQUEST', 'FMTMEM_NO_FORCE_REQUEST', - 'FMTMEM_PWR_DIS_CTRL', 'FMTMEM_PWR_FORCE_CTRL', 'FMT_1', - 'FMT_10_10_10_2', 'FMT_10_11_11', 'FMT_10_11_11_FLOAT', - 'FMT_11_11_10', 'FMT_11_11_10_FLOAT', 'FMT_16', 'FMT_16_16', - 'FMT_16_16_16', 'FMT_16_16_16_16', 'FMT_16_16_16_16_FLOAT', - 'FMT_16_16_16_FLOAT', 'FMT_16_16_FLOAT', 'FMT_16_FLOAT', - 'FMT_1_5_5_5', 'FMT_1_REVERSED', 'FMT_24_8', 'FMT_24_8_FLOAT', - 'FMT_2_10_10_10', 'FMT_32', 'FMT_32_32', 'FMT_32_32_32', - 'FMT_32_32_32_32', 'FMT_32_32_32_32_FLOAT', 'FMT_32_32_32_FLOAT', - 'FMT_32_32_FLOAT', 'FMT_32_AS_32_32_32_32', 'FMT_32_AS_8', - 'FMT_32_AS_8_8', 'FMT_32_FLOAT', 'FMT_3_3_2', 'FMT_4_4', - 'FMT_4_4_4_4', 'FMT_5_5_5_1', 'FMT_5_6_5', - 'FMT_5_9_9_9_SHAREDEXP', 'FMT_6_5_5', 'FMT_8', 'FMT_8_24', - 'FMT_8_24_FLOAT', 'FMT_8_8', 'FMT_8_8_8', 'FMT_8_8_8_8', - 'FMT_APC3', 'FMT_APC4', 'FMT_APC5', 'FMT_APC6', 'FMT_APC7', - 'FMT_BC1', 'FMT_BC2', 'FMT_BC3', 'FMT_BC4', 'FMT_BC5', 'FMT_BC6', - 'FMT_BC7', 'FMT_BG_RG', 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Ei', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Fi', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Gi', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_RESERVED', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_A', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_B', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_C', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_D', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_E', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_F', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_G', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_RESERVED', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_18BPP', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_24BPP', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_30BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_18BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_24BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_30BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL2', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL4', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_18BPP', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_24BPP', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_30BPP', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_ROUNDING', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_TRUNCATION', - 'FMT_CLAMP_CNTL_COLOR_FORMAT', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_10BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_12BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_6BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_8BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_PROGRAMMABLE', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED1', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED2', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED3', - 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS', - 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_DISABLE', - 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_ENABLE', - 'FMT_CONTROL_PIXEL_ENCODING', - 'FMT_CONTROL_PIXEL_ENCODING_RESERVED', - 'FMT_CONTROL_PIXEL_ENCODING_RGB444_OR_YCBCR444', - 'FMT_CONTROL_PIXEL_ENCODING_YCBCR420', - 'FMT_CONTROL_PIXEL_ENCODING_YCBCR422', - 'FMT_CONTROL_SUBSAMPLING_MODE', - 'FMT_CONTROL_SUBSAMPLING_MODE_AVERAGE', - 'FMT_CONTROL_SUBSAMPLING_MODE_DROP', - 'FMT_CONTROL_SUBSAMPLING_MOME_3_TAP', - 'FMT_CONTROL_SUBSAMPLING_MOME_RESERVED', - 'FMT_CONTROL_SUBSAMPLING_ORDER', - 'FMT_CONTROL_SUBSAMPLING_ORDER_CB_BEFORE_CR', - 'FMT_CONTROL_SUBSAMPLING_ORDER_CR_BEFORE_CB', 'FMT_CTX1', - 'FMT_DYNAMIC_EXP_MODE', 'FMT_DYNAMIC_EXP_MODE_10to12', - 'FMT_DYNAMIC_EXP_MODE_8to12', 'FMT_FRAME_RANDOM_ENABLE_CONTROL', - 'FMT_FRAME_RANDOM_ENABLE_RESET_EACH_FRAME', - 'FMT_FRAME_RANDOM_ENABLE_RESET_ONCE', 'FMT_GB_GR', 'FMT_INVALID', - 'FMT_POWER_STATE_ENUM', 'FMT_POWER_STATE_ENUM_DS', - 'FMT_POWER_STATE_ENUM_LS', 'FMT_POWER_STATE_ENUM_ON', - 'FMT_POWER_STATE_ENUM_SD', 'FMT_RESERVED_33', 'FMT_RESERVED_36', - 'FMT_RESERVED_4', 'FMT_RESERVED_63', - 'FMT_RGB_RANDOM_ENABLE_CONTROL', - 'FMT_RGB_RANDOM_ENABLE_CONTROL_DISABLE', - 'FMT_RGB_RANDOM_ENABLE_CONTROL_ENABLE', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_1', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_2', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_CONTROL', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_NO_SWAP', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_RESERVED', - 'FMT_SPATIAL_DITHER_MODE', 'FMT_SPATIAL_DITHER_MODE_0', - 'FMT_SPATIAL_DITHER_MODE_1', 'FMT_SPATIAL_DITHER_MODE_2', - 'FMT_SPATIAL_DITHER_MODE_3', 'FMT_STEREOSYNC_OVERRIDE_CONTROL', - 'FMT_STEREOSYNC_OVERRIDE_CONTROL_0', - 'FMT_STEREOSYNC_OVERRIDE_CONTROL_1', - 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0', - 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_BGR', - 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_RGB', - 'FMT_X24_8_32_FLOAT', 'FORCE_00', 'FORCE_BINNING_ON', - 'FORCE_DEEP_SLEEP_REQUEST', 'FORCE_DISABLE', 'FORCE_EARLY_Z', - 'FORCE_ENABLE', 'FORCE_FF', 'FORCE_LATE_Z', - 'FORCE_LIGHT_SLEEP_REQ', 'FORCE_LIGHT_SLEEP_REQUEST', 'FORCE_OFF', - 'FORCE_OPT_AUTO', 'FORCE_OPT_DISABLE', - 'FORCE_OPT_ENABLE_IF_SRC_ARGB_0', - 'FORCE_OPT_ENABLE_IF_SRC_ARGB_1', 'FORCE_OPT_ENABLE_IF_SRC_A_0', - 'FORCE_OPT_ENABLE_IF_SRC_A_1', 'FORCE_OPT_ENABLE_IF_SRC_RGB_0', - 'FORCE_OPT_ENABLE_IF_SRC_RGB_1', 'FORCE_RESERVED', 'FORCE_RE_Z', - 'FORCE_SENT', 'FORCE_SHUT_DOWN_REQUEST', 'FORCE_SUMM_BOTH', - 'FORCE_SUMM_MAXZ', 'FORCE_SUMM_MINZ', 'FORCE_SUMM_OFF', - 'FOUR_BANKS', 'FOUR_FRAGMENTS', 'FOUR_PIPES', 'FOUR_RB_PER_SE', - 'FOUR_SHADER_ENGINS', 'FRAG_ALWAYS', 'FRAG_EQUAL', 'FRAG_GEQUAL', - 'FRAG_GREATER', 'FRAG_LEQUAL', 'FRAG_LESS', 'FRAG_NEVER', - 'FRAG_NOTEQUAL', 'FULL_TILE_WAVE_BREAK_BC_ONLY', - 'FULL_TILE_WAVE_BREAK_BOTH', 'FULL_TILE_WAVE_BREAK_NBC_ONLY', - 'FULL_TILE_WAVE_BREAK_NONE', 'ForceControl', 'FullTileWaveBreak', - 'GAMUT_COEF', 'GAMUT_COEF_B', 'GATCL1RequestType', - 'GATCL1_TYPE_BYPASS', 'GATCL1_TYPE_NORMAL', - 'GATCL1_TYPE_SHOOTDOWN', 'GB_EDC_DED_MODE', - 'GB_EDC_DED_MODE_HALT', 'GB_EDC_DED_MODE_INT_HALT', - 'GB_EDC_DED_MODE_LOG', 'GCRPerfSel', 'GCR_PERF_SEL_ALL_REQ', - 'GCR_PERF_SEL_CLK_FOR_ALL_OUTSTANDING_REQ', - 'GCR_PERF_SEL_CLK_FOR_PHY_OUTSTANDING_REQ', - 'GCR_PERF_SEL_CLK_FOR_VIRT_OUTSTANDING_REQ', - 'GCR_PERF_SEL_CPC_ALL_REQ', 'GCR_PERF_SEL_CPC_GL1_ALL_REQ', - 'GCR_PERF_SEL_CPC_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPC_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPC_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPC_GL1_RANGE_REQ', 'GCR_PERF_SEL_CPC_GL2_ALL_REQ', - 'GCR_PERF_SEL_CPC_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPC_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPC_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPC_GL2_RANGE_REQ', 'GCR_PERF_SEL_CPC_METADATA_REQ', - 'GCR_PERF_SEL_CPC_SQC_DATA_REQ', 'GCR_PERF_SEL_CPC_SQC_INST_REQ', - 'GCR_PERF_SEL_CPC_TCP_REQ', - 'GCR_PERF_SEL_CPC_TCP_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_CPF_ALL_REQ', 'GCR_PERF_SEL_CPF_GL1_ALL_REQ', - 'GCR_PERF_SEL_CPF_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPF_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPF_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPF_GL1_RANGE_REQ', 'GCR_PERF_SEL_CPF_GL2_ALL_REQ', - 'GCR_PERF_SEL_CPF_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPF_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPF_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPF_GL2_RANGE_REQ', 'GCR_PERF_SEL_CPF_METADATA_REQ', - 'GCR_PERF_SEL_CPF_SQC_DATA_REQ', 'GCR_PERF_SEL_CPF_SQC_INST_REQ', - 'GCR_PERF_SEL_CPF_TCP_REQ', - 'GCR_PERF_SEL_CPF_TCP_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_CPG_ALL_REQ', 'GCR_PERF_SEL_CPG_GL1_ALL_REQ', - 'GCR_PERF_SEL_CPG_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPG_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPG_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPG_GL1_RANGE_REQ', 'GCR_PERF_SEL_CPG_GL2_ALL_REQ', - 'GCR_PERF_SEL_CPG_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPG_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPG_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPG_GL2_RANGE_REQ', 'GCR_PERF_SEL_CPG_METADATA_REQ', - 'GCR_PERF_SEL_CPG_SQC_DATA_REQ', 'GCR_PERF_SEL_CPG_SQC_INST_REQ', - 'GCR_PERF_SEL_CPG_TCP_REQ', - 'GCR_PERF_SEL_CPG_TCP_TLB_SHOOTDOWN_REQ', 'GCR_PERF_SEL_NONE', - 'GCR_PERF_SEL_PHY_REQ', 'GCR_PERF_SEL_SDMA0_ALL_REQ', - 'GCR_PERF_SEL_SDMA0_GL1_ALL_REQ', - 'GCR_PERF_SEL_SDMA0_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL1_RANGE_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_ALL_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_RANGE_REQ', - 'GCR_PERF_SEL_SDMA0_METADATA_REQ', - 'GCR_PERF_SEL_SDMA0_SQC_DATA_REQ', - 'GCR_PERF_SEL_SDMA0_SQC_INST_REQ', 'GCR_PERF_SEL_SDMA0_TCP_REQ', - 'GCR_PERF_SEL_SDMA0_TCP_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_SDMA1_ALL_REQ', 'GCR_PERF_SEL_SDMA1_GL1_ALL_REQ', - 'GCR_PERF_SEL_SDMA1_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL1_RANGE_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_ALL_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_RANGE_REQ', - 'GCR_PERF_SEL_SDMA1_METADATA_REQ', - 'GCR_PERF_SEL_SDMA1_SQC_DATA_REQ', - 'GCR_PERF_SEL_SDMA1_SQC_INST_REQ', 'GCR_PERF_SEL_SDMA1_TCP_REQ', - 'GCR_PERF_SEL_SDMA1_TCP_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_TLB_SHOOTDOWN_HEAVY_REQ', - 'GCR_PERF_SEL_TLB_SHOOTDOWN_LIGHT_REQ', - 'GCR_PERF_SEL_UTCL2_FILTERED_RET', - 'GCR_PERF_SEL_UTCL2_INFLIGHT_REQ', - 'GCR_PERF_SEL_UTCL2_OUT_OF_CREDIT_EVENT', - 'GCR_PERF_SEL_UTCL2_REQ', 'GCR_PERF_SEL_UTCL2_RET', - 'GCR_PERF_SEL_VIRT_REQ', 'GDS_PERFCOUNT_SELECT', - 'GDS_PERF_SEL_DS_ADDR_CONFL', 'GDS_PERF_SEL_DS_BANK_CONFL', - 'GDS_PERF_SEL_GWS_BYPASS', 'GDS_PERF_SEL_GWS_RELEASED', - 'GDS_PERF_SEL_RBUF_HIT', 'GDS_PERF_SEL_RBUF_MISS', - 'GDS_PERF_SEL_SE0_SH0_2COMP_REQ', - 'GDS_PERF_SEL_SE0_SH0_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE0_SH0_GDS_BYTE_OP', - 'GDS_PERF_SEL_SE0_SH0_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE0_SH0_GDS_DATA_VALID', - 'GDS_PERF_SEL_SE0_SH0_GDS_RD_OP', - 'GDS_PERF_SEL_SE0_SH0_GDS_REL_OP', - 'GDS_PERF_SEL_SE0_SH0_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE0_SH0_GDS_STALL_BY_ORD', - 'GDS_PERF_SEL_SE0_SH0_GDS_WR_OP', 'GDS_PERF_SEL_SE0_SH0_NORET', - 'GDS_PERF_SEL_SE0_SH0_ORD_CNT', - 'GDS_PERF_SEL_SE0_SH0_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE0_SH0_RET', - 'GDS_PERF_SEL_SE0_SH1_2COMP_REQ', - 'GDS_PERF_SEL_SE0_SH1_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE0_SH1_GDS_BYTE_OP', - 'GDS_PERF_SEL_SE0_SH1_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE0_SH1_GDS_DATA_VALID', - 'GDS_PERF_SEL_SE0_SH1_GDS_RD_OP', - 'GDS_PERF_SEL_SE0_SH1_GDS_REL_OP', - 'GDS_PERF_SEL_SE0_SH1_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE0_SH1_GDS_STALL_BY_ORD', - 'GDS_PERF_SEL_SE0_SH1_GDS_WR_OP', 'GDS_PERF_SEL_SE0_SH1_NORET', - 'GDS_PERF_SEL_SE0_SH1_ORD_CNT', - 'GDS_PERF_SEL_SE0_SH1_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE0_SH1_RET', - 'GDS_PERF_SEL_SE1_SH0_2COMP_REQ', - 'GDS_PERF_SEL_SE1_SH0_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE1_SH0_GDS_BYTE_OP', - 'GDS_PERF_SEL_SE1_SH0_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE1_SH0_GDS_DATA_VALID', - 'GDS_PERF_SEL_SE1_SH0_GDS_RD_OP', - 'GDS_PERF_SEL_SE1_SH0_GDS_REL_OP', - 'GDS_PERF_SEL_SE1_SH0_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE1_SH0_GDS_STALL_BY_ORD', - 'GDS_PERF_SEL_SE1_SH0_GDS_WR_OP', 'GDS_PERF_SEL_SE1_SH0_NORET', - 'GDS_PERF_SEL_SE1_SH0_ORD_CNT', - 'GDS_PERF_SEL_SE1_SH0_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE1_SH0_RET', - 'GDS_PERF_SEL_SE1_SH1_2COMP_REQ', - 'GDS_PERF_SEL_SE1_SH1_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE1_SH1_GDS_BYTE_OP', - 'GDS_PERF_SEL_SE1_SH1_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE1_SH1_GDS_DATA_VALID', - 'GDS_PERF_SEL_SE1_SH1_GDS_RD_OP', - 'GDS_PERF_SEL_SE1_SH1_GDS_REL_OP', - 'GDS_PERF_SEL_SE1_SH1_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE1_SH1_GDS_STALL_BY_ORD', - 'GDS_PERF_SEL_SE1_SH1_GDS_WR_OP', 'GDS_PERF_SEL_SE1_SH1_NORET', - 'GDS_PERF_SEL_SE1_SH1_ORD_CNT', - 'GDS_PERF_SEL_SE1_SH1_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE1_SH1_RET', - 'GDS_PERF_SEL_SE2_SH0_2COMP_REQ', - 'GDS_PERF_SEL_SE2_SH0_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE2_SH0_GDS_BYTE_OP', - 'GDS_PERF_SEL_SE2_SH0_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE2_SH0_GDS_DATA_VALID', - 'GDS_PERF_SEL_SE2_SH0_GDS_RD_OP', - 'GDS_PERF_SEL_SE2_SH0_GDS_REL_OP', - 'GDS_PERF_SEL_SE2_SH0_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE2_SH0_GDS_STALL_BY_ORD', - 'GDS_PERF_SEL_SE2_SH0_GDS_WR_OP', 'GDS_PERF_SEL_SE2_SH0_NORET', - 'GDS_PERF_SEL_SE2_SH0_ORD_CNT', - 'GDS_PERF_SEL_SE2_SH0_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE2_SH0_RET', - 'GDS_PERF_SEL_SE2_SH1_2COMP_REQ', - 'GDS_PERF_SEL_SE2_SH1_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE2_SH1_GDS_BYTE_OP', - 'GDS_PERF_SEL_SE2_SH1_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE2_SH1_GDS_DATA_VALID', - 'GDS_PERF_SEL_SE2_SH1_GDS_RD_OP', - 'GDS_PERF_SEL_SE2_SH1_GDS_REL_OP', - 'GDS_PERF_SEL_SE2_SH1_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE2_SH1_GDS_STALL_BY_ORD', - 'GDS_PERF_SEL_SE2_SH1_GDS_WR_OP', 'GDS_PERF_SEL_SE2_SH1_NORET', - 'GDS_PERF_SEL_SE2_SH1_ORD_CNT', - 'GDS_PERF_SEL_SE2_SH1_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE2_SH1_RET', - 'GDS_PERF_SEL_SE3_SH0_2COMP_REQ', - 'GDS_PERF_SEL_SE3_SH0_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE3_SH0_GDS_BYTE_OP', - 'GDS_PERF_SEL_SE3_SH0_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE3_SH0_GDS_DATA_VALID', - 'GDS_PERF_SEL_SE3_SH0_GDS_RD_OP', - 'GDS_PERF_SEL_SE3_SH0_GDS_REL_OP', - 'GDS_PERF_SEL_SE3_SH0_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE3_SH0_GDS_STALL_BY_ORD', - 'GDS_PERF_SEL_SE3_SH0_GDS_WR_OP', 'GDS_PERF_SEL_SE3_SH0_NORET', - 'GDS_PERF_SEL_SE3_SH0_ORD_CNT', - 'GDS_PERF_SEL_SE3_SH0_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE3_SH0_RET', - 'GDS_PERF_SEL_SE3_SH1_2COMP_REQ', - 'GDS_PERF_SEL_SE3_SH1_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE3_SH1_GDS_BYTE_OP', - 'GDS_PERF_SEL_SE3_SH1_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE3_SH1_GDS_DATA_VALID', - 'GDS_PERF_SEL_SE3_SH1_GDS_RD_OP', - 'GDS_PERF_SEL_SE3_SH1_GDS_REL_OP', - 'GDS_PERF_SEL_SE3_SH1_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE3_SH1_GDS_STALL_BY_ORD', - 'GDS_PERF_SEL_SE3_SH1_GDS_WR_OP', 'GDS_PERF_SEL_SE3_SH1_NORET', - 'GDS_PERF_SEL_SE3_SH1_ORD_CNT', - 'GDS_PERF_SEL_SE3_SH1_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE3_SH1_RET', - 'GDS_PERF_SEL_WBUF_FLUSH', 'GDS_PERF_SEL_WBUF_WR', - 'GDS_PERF_SEL_WR_COMP', 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE', - 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET_RESERVED', - 'GENERIC_STEREOSYNC_SEL', 'GENERIC_STEREOSYNC_SEL_D1', - 'GENERIC_STEREOSYNC_SEL_D2', 'GENERIC_STEREOSYNC_SEL_D3', - 'GENERIC_STEREOSYNC_SEL_D4', 'GENERIC_STEREOSYNC_SEL_D5', - 'GENERIC_STEREOSYNC_SEL_D6', 'GENERIC_STEREOSYNC_SEL_RESERVED', - 'GE_PERFCOUNT_SELECT', 'GL0V_CACHE_POLICIES', - 'GL0V_CACHE_POLICY_HIT_EVICT', 'GL0V_CACHE_POLICY_HIT_LRU', - 'GL0V_CACHE_POLICY_MISS_EVICT', 'GL0V_CACHE_POLICY_MISS_LRU', - 'GL1A_PERF_SEL', 'GL1A_PERF_SEL_ARB_REQUESTS', - 'GL1A_PERF_SEL_BUSY', 'GL1A_PERF_SEL_CYCLE', - 'GL1A_PERF_SEL_IO_32B_WDS_GL1C0', - 'GL1A_PERF_SEL_IO_32B_WDS_GL1C1', - 'GL1A_PERF_SEL_IO_32B_WDS_GL1C2', - 'GL1A_PERF_SEL_IO_32B_WDS_GL1C3', - 'GL1A_PERF_SEL_IO_32B_WDS_GL1C4', - 'GL1A_PERF_SEL_IO_BURST_COUNT_GL1C0', - 'GL1A_PERF_SEL_IO_BURST_COUNT_GL1C1', - 'GL1A_PERF_SEL_IO_BURST_COUNT_GL1C2', - 'GL1A_PERF_SEL_IO_BURST_COUNT_GL1C3', - 'GL1A_PERF_SEL_IO_BURST_COUNT_GL1C4', - 'GL1A_PERF_SEL_MEM_32B_WDS_GL1C0', - 'GL1A_PERF_SEL_MEM_32B_WDS_GL1C1', - 'GL1A_PERF_SEL_MEM_32B_WDS_GL1C2', - 'GL1A_PERF_SEL_MEM_32B_WDS_GL1C3', - 'GL1A_PERF_SEL_MEM_32B_WDS_GL1C4', - 'GL1A_PERF_SEL_MEM_BURST_COUNT_GL1C0', - 'GL1A_PERF_SEL_MEM_BURST_COUNT_GL1C1', - 'GL1A_PERF_SEL_MEM_BURST_COUNT_GL1C2', - 'GL1A_PERF_SEL_MEM_BURST_COUNT_GL1C3', - 'GL1A_PERF_SEL_MEM_BURST_COUNT_GL1C4', - 'GL1A_PERF_SEL_REQUEST_GL1C0', 'GL1A_PERF_SEL_REQUEST_GL1C1', - 'GL1A_PERF_SEL_REQUEST_GL1C2', 'GL1A_PERF_SEL_REQUEST_GL1C3', - 'GL1A_PERF_SEL_REQUEST_GL1C4', 'GL1A_PERF_SEL_REQ_INFLIGHT_LEVEL', - 'GL1A_PERF_SEL_STALL_GL1C0', 'GL1A_PERF_SEL_STALL_GL1C1', - 'GL1A_PERF_SEL_STALL_GL1C2', 'GL1A_PERF_SEL_STALL_GL1C3', - 'GL1A_PERF_SEL_STALL_GL1C4', - 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C0', - 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C1', - 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C2', - 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C3', - 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C4', 'GL1CG_PERF_SEL', - 'GL1CG_PERF_SEL_CORE_REG_SCLK_VLD', 'GL1CG_PERF_SEL_CYCLE', - 'GL1CG_PERF_SEL_GATE_EN1', 'GL1CG_PERF_SEL_GATE_EN2', - 'GL1CG_PERF_SEL_REQ', 'GL1CG_PERF_SEL_TA_GL1C_ADDR_STARVE_CYCLES', - 'GL1CG_PERF_SEL_TA_GL1C_DATA_STARVE_CYCLES', 'GL1C_PERF_SEL', - 'GL1C_PERF_SEL_CORE_REG_SCLK_VLD', 'GL1C_PERF_SEL_CYCLE', - 'GL1C_PERF_SEL_GATE_EN1', 'GL1C_PERF_SEL_GATE_EN2', - 'GL1C_PERF_SEL_REQ', 'GL1C_PERF_SEL_TA_GL1C_ADDR_STARVE_CYCLES', - 'GL1C_PERF_SEL_TA_GL1C_DATA_STARVE_CYCLES', 'GL1_CACHE_POLICIES', - 'GL1_CACHE_POLICY_HIT_EVICT', 'GL1_CACHE_POLICY_HIT_LRU', - 'GL1_CACHE_POLICY_MISS_EVICT', 'GL1_CACHE_POLICY_MISS_LRU', - 'GL1_CACHE_STORE_POLICIES', 'GL1_CACHE_STORE_POLICY_BYPASS', - 'GL2A_PERF_SEL', 'GL2A_PERF_SEL_BUSY', 'GL2A_PERF_SEL_CYCLE', - 'GL2A_PERF_SEL_NONE', 'GL2A_PERF_SEL_REQ_BURST_GL2C0', - 'GL2A_PERF_SEL_REQ_BURST_GL2C1', 'GL2A_PERF_SEL_REQ_BURST_GL2C2', - 'GL2A_PERF_SEL_REQ_BURST_GL2C3', 'GL2A_PERF_SEL_REQ_BURST_GL2C4', - 'GL2A_PERF_SEL_REQ_BURST_GL2C5', 'GL2A_PERF_SEL_REQ_BURST_GL2C6', - 'GL2A_PERF_SEL_REQ_BURST_GL2C7', 'GL2A_PERF_SEL_REQ_GL2C0', - 'GL2A_PERF_SEL_REQ_GL2C1', 'GL2A_PERF_SEL_REQ_GL2C2', - 'GL2A_PERF_SEL_REQ_GL2C3', 'GL2A_PERF_SEL_REQ_GL2C4', - 'GL2A_PERF_SEL_REQ_GL2C5', 'GL2A_PERF_SEL_REQ_GL2C6', - 'GL2A_PERF_SEL_REQ_GL2C7', 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C0', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C1', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C2', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C3', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C4', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C5', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C6', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C7', - 'GL2A_PERF_SEL_REQ_STALL_GL2C0', 'GL2A_PERF_SEL_REQ_STALL_GL2C1', - 'GL2A_PERF_SEL_REQ_STALL_GL2C2', 'GL2A_PERF_SEL_REQ_STALL_GL2C3', - 'GL2A_PERF_SEL_REQ_STALL_GL2C4', 'GL2A_PERF_SEL_REQ_STALL_GL2C5', - 'GL2A_PERF_SEL_REQ_STALL_GL2C6', 'GL2A_PERF_SEL_REQ_STALL_GL2C7', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT0', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT1', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT2', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT3', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT4', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT5', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT6', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT7', - 'GL2A_PERF_SEL_RTN_CLIENT0', 'GL2A_PERF_SEL_RTN_CLIENT1', - 'GL2A_PERF_SEL_RTN_CLIENT2', 'GL2A_PERF_SEL_RTN_CLIENT3', - 'GL2A_PERF_SEL_RTN_CLIENT4', 'GL2A_PERF_SEL_RTN_CLIENT5', - 'GL2A_PERF_SEL_RTN_CLIENT6', 'GL2A_PERF_SEL_RTN_CLIENT7', - 'GL2A_PERF_SEL_RTN_STALL_GL2C0', 'GL2A_PERF_SEL_RTN_STALL_GL2C1', - 'GL2A_PERF_SEL_RTN_STALL_GL2C2', 'GL2A_PERF_SEL_RTN_STALL_GL2C3', - 'GL2A_PERF_SEL_RTN_STALL_GL2C4', 'GL2A_PERF_SEL_RTN_STALL_GL2C5', - 'GL2A_PERF_SEL_RTN_STALL_GL2C6', 'GL2A_PERF_SEL_RTN_STALL_GL2C7', - 'GL2C_PERF_SEL', 'GL2C_PERF_SEL_ALL_GCR_INV_EVICT', - 'GL2C_PERF_SEL_ALL_GCR_INV_VOL_EVICT', - 'GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_CYCLE', - 'GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_VOL_CYCLE', - 'GL2C_PERF_SEL_ALL_GCR_WB_WRITEBACK', - 'GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_START', - 'GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_VOL_START', - 'GL2C_PERF_SEL_ATOMIC', 'GL2C_PERF_SEL_BUBBLE', - 'GL2C_PERF_SEL_BUSY', 'GL2C_PERF_SEL_BYPASS_REQ', - 'GL2C_PERF_SEL_CLIENT0_REQ', 'GL2C_PERF_SEL_CLIENT1_REQ', - 'GL2C_PERF_SEL_CLIENT2_REQ', 'GL2C_PERF_SEL_CLIENT3_REQ', - 'GL2C_PERF_SEL_CLIENT4_REQ', 'GL2C_PERF_SEL_CLIENT5_REQ', - 'GL2C_PERF_SEL_CLIENT6_REQ', 'GL2C_PERF_SEL_CLIENT7_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL0_REQ', 'GL2C_PERF_SEL_CM_CHANNEL10_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL11_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL12_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL13_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL14_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL15_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL16_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL17_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL18_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL19_REQ', 'GL2C_PERF_SEL_CM_CHANNEL1_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL20_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL21_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL22_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL23_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL24_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL25_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL26_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL27_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL28_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL29_REQ', 'GL2C_PERF_SEL_CM_CHANNEL2_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL30_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL31_REQ', 'GL2C_PERF_SEL_CM_CHANNEL3_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL4_REQ', 'GL2C_PERF_SEL_CM_CHANNEL5_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL6_REQ', 'GL2C_PERF_SEL_CM_CHANNEL7_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL8_REQ', 'GL2C_PERF_SEL_CM_CHANNEL9_REQ', - 'GL2C_PERF_SEL_CM_COLOR_32B_WR_REQ', - 'GL2C_PERF_SEL_CM_COLOR_64B_WR_REQ', - 'GL2C_PERF_SEL_CM_COMP_ATOMIC_COLOR_REQ', - 'GL2C_PERF_SEL_CM_COMP_ATOMIC_DEPTH16_REQ', - 'GL2C_PERF_SEL_CM_COMP_ATOMIC_DEPTH32_REQ', - 'GL2C_PERF_SEL_CM_COMP_COLOR_DIS_REQ', - 'GL2C_PERF_SEL_CM_COMP_COLOR_EN_REQ', - 'GL2C_PERF_SEL_CM_COMP_DEPTH16_REQ', - 'GL2C_PERF_SEL_CM_COMP_DEPTH32_REQ', - 'GL2C_PERF_SEL_CM_COMP_READ_REQ', - 'GL2C_PERF_SEL_CM_COMP_STENCIL_REQ', - 'GL2C_PERF_SEL_CM_COMP_WRITE_COLOR_REQ', - 'GL2C_PERF_SEL_CM_COMP_WRITE_DEPTH16_REQ', - 'GL2C_PERF_SEL_CM_COMP_WRITE_DEPTH32_REQ', - 'GL2C_PERF_SEL_CM_COMP_WRITE_STENCIL_REQ', - 'GL2C_PERF_SEL_CM_DCC_STALL', 'GL2C_PERF_SEL_CM_FULL_WRITE_REQ', - 'GL2C_PERF_SEL_CM_MERGE_BUF_FULL', - 'GL2C_PERF_SEL_CM_METADATA_WR_REQ', 'GL2C_PERF_SEL_CM_NOOP_REQ', - 'GL2C_PERF_SEL_CM_NO_ACK_REQ', 'GL2C_PERF_SEL_CM_READ_BACK_REQ', - 'GL2C_PERF_SEL_CM_RVF_FULL', 'GL2C_PERF_SEL_CM_SDR_FULL', - 'GL2C_PERF_SEL_CM_WR_ACK_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_0_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_128_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_32_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_64_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_96_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_REQ', 'GL2C_PERF_SEL_CYCLE', - 'GL2C_PERF_SEL_C_RO_S_REQ', 'GL2C_PERF_SEL_C_RO_US_REQ', - 'GL2C_PERF_SEL_C_RW_S_REQ', 'GL2C_PERF_SEL_C_RW_US_REQ', - 'GL2C_PERF_SEL_DEWRITE_ALLOCATE_HIT', 'GL2C_PERF_SEL_EA_ATOMIC', - 'GL2C_PERF_SEL_EA_ATOMIC_LEVEL', 'GL2C_PERF_SEL_EA_RDREQ_128B', - 'GL2C_PERF_SEL_EA_RDREQ_32B', 'GL2C_PERF_SEL_EA_RDREQ_64B', - 'GL2C_PERF_SEL_EA_RDREQ_96B', 'GL2C_PERF_SEL_EA_RDREQ_DRAM', - 'GL2C_PERF_SEL_EA_RDREQ_DRAM_32B', - 'GL2C_PERF_SEL_EA_RDREQ_DRAM_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_RDREQ_GMI_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_RDREQ_IO_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_RDREQ_SPLIT', 'GL2C_PERF_SEL_EA_RDRET_NACK', - 'GL2C_PERF_SEL_EA_RD_COMPRESSED_32B', - 'GL2C_PERF_SEL_EA_RD_MDC_32B', 'GL2C_PERF_SEL_EA_RD_UNCACHED_32B', - 'GL2C_PERF_SEL_EA_WRREQ_64B', 'GL2C_PERF_SEL_EA_WRREQ_DRAM', - 'GL2C_PERF_SEL_EA_WRREQ_DRAM_32B', - 'GL2C_PERF_SEL_EA_WRREQ_DRAM_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_WRREQ_GMI_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_WRREQ_IO_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_WRREQ_PROBE_COMMAND', - 'GL2C_PERF_SEL_EA_WRRET_NACK', 'GL2C_PERF_SEL_EA_WR_UNCACHED_32B', - 'GL2C_PERF_SEL_EVICT', 'GL2C_PERF_SEL_FULLY_WRITTEN_HIT', - 'GL2C_PERF_SEL_FULL_HIT', 'GL2C_PERF_SEL_GARLIC_READ', - 'GL2C_PERF_SEL_GARLIC_WRITE', 'GL2C_PERF_SEL_GCR_ALL', - 'GL2C_PERF_SEL_GCR_DISCARD', 'GL2C_PERF_SEL_GCR_GL2_INV_ALL', - 'GL2C_PERF_SEL_GCR_GL2_INV_RANGE', 'GL2C_PERF_SEL_GCR_GL2_WB_ALL', - 'GL2C_PERF_SEL_GCR_GL2_WB_INV_RANGE', - 'GL2C_PERF_SEL_GCR_GL2_WB_RANGE', 'GL2C_PERF_SEL_GCR_INV', - 'GL2C_PERF_SEL_GCR_INVL2_VOL_CYCLE', - 'GL2C_PERF_SEL_GCR_INVL2_VOL_EVICT', - 'GL2C_PERF_SEL_GCR_INVL2_VOL_START', 'GL2C_PERF_SEL_GCR_MDC_INV', - 'GL2C_PERF_SEL_GCR_MDC_INV_ALL', - 'GL2C_PERF_SEL_GCR_MDC_INV_RANGE', 'GL2C_PERF_SEL_GCR_RANGE', - 'GL2C_PERF_SEL_GCR_UNSHARED', 'GL2C_PERF_SEL_GCR_VOL', - 'GL2C_PERF_SEL_GCR_WB', 'GL2C_PERF_SEL_GCR_WBINVL2_CYCLE', - 'GL2C_PERF_SEL_GCR_WBINVL2_EVICT', - 'GL2C_PERF_SEL_GCR_WBINVL2_START', - 'GL2C_PERF_SEL_GCR_WBL2_VOL_CYCLE', - 'GL2C_PERF_SEL_GCR_WBL2_VOL_EVICT', - 'GL2C_PERF_SEL_GCR_WBL2_VOL_START', 'GL2C_PERF_SEL_GL2A_LEVEL', - 'GL2C_PERF_SEL_HIGH_PRIORITY_REQ', 'GL2C_PERF_SEL_HIT', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT0', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT1', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT2', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT3', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT4', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT5', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT6', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT7', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_COMP', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_HI_PRIO', - 'GL2C_PERF_SEL_IB_CM_STALL', 'GL2C_PERF_SEL_IB_REQ', - 'GL2C_PERF_SEL_IB_STALL', 'GL2C_PERF_SEL_IB_TAG_STALL', - 'GL2C_PERF_SEL_INTERNAL_PROBE', 'GL2C_PERF_SEL_IO_READ', - 'GL2C_PERF_SEL_IO_WRITE', 'GL2C_PERF_SEL_LATENCY_FIFO_FULL', - 'GL2C_PERF_SEL_LRU_REQ', 'GL2C_PERF_SEL_MC_RDREQ', - 'GL2C_PERF_SEL_MC_RDREQ_LEVEL', 'GL2C_PERF_SEL_MC_WRREQ', - 'GL2C_PERF_SEL_MC_WRREQ_LEVEL', 'GL2C_PERF_SEL_MC_WRREQ_STALL', - 'GL2C_PERF_SEL_MDC_INV_METADATA', 'GL2C_PERF_SEL_MDC_LEVEL', - 'GL2C_PERF_SEL_MDC_REQ', 'GL2C_PERF_SEL_MDC_SECTOR_HIT', - 'GL2C_PERF_SEL_MDC_SECTOR_MISS', - 'GL2C_PERF_SEL_MDC_TAG_DESECTORIZATION_FIFO_FULL_STALL', - 'GL2C_PERF_SEL_MDC_TAG_HIT', - 'GL2C_PERF_SEL_MDC_TAG_REPLACEMENT_LINE_IN_USE_STALL', - 'GL2C_PERF_SEL_MDC_TAG_STALL', - 'GL2C_PERF_SEL_MDC_TAG_WAITING_FOR_INVALIDATE_COMPLETION_STALL', - 'GL2C_PERF_SEL_METADATA_READ_REQ', 'GL2C_PERF_SEL_MISS', - 'GL2C_PERF_SEL_NOA_REQ', 'GL2C_PERF_SEL_NONE', - 'GL2C_PERF_SEL_NOP_ACK', 'GL2C_PERF_SEL_NOP_RTN0', - 'GL2C_PERF_SEL_NORMAL_EVICT', 'GL2C_PERF_SEL_NORMAL_WRITEBACK', - 'GL2C_PERF_SEL_ONION_READ', 'GL2C_PERF_SEL_ONION_WRITE', - 'GL2C_PERF_SEL_PARTIAL_32B_HIT', 'GL2C_PERF_SEL_PARTIAL_64B_HIT', - 'GL2C_PERF_SEL_PARTIAL_96B_HIT', 'GL2C_PERF_SEL_PROBE', - 'GL2C_PERF_SEL_PROBE_ALL', 'GL2C_PERF_SEL_PROBE_EVICT', - 'GL2C_PERF_SEL_PROBE_FILTER_DISABLED', - 'GL2C_PERF_SEL_PROBE_FILTER_DISABLE_TRANSITION', - 'GL2C_PERF_SEL_READ', 'GL2C_PERF_SEL_READ_128_REQ', - 'GL2C_PERF_SEL_READ_32_REQ', 'GL2C_PERF_SEL_READ_64_REQ', - 'GL2C_PERF_SEL_READ_RETURN_FULL_BUBBLE', - 'GL2C_PERF_SEL_READ_RETURN_TIMEOUT', 'GL2C_PERF_SEL_REQ', - 'GL2C_PERF_SEL_REQ_TO_MISS_QUEUE', 'GL2C_PERF_SEL_RETURN_ACK', - 'GL2C_PERF_SEL_RETURN_DATA', 'GL2C_PERF_SEL_SHARED_REQ', - 'GL2C_PERF_SEL_SRC_FIFO_FULL', 'GL2C_PERF_SEL_STREAM_REQ', - 'GL2C_PERF_SEL_TAG_MISS_NOTHING_REPLACEABLE_STALL', - 'GL2C_PERF_SEL_TAG_NO_UNCACHED_WRITE_ATOMIC_ENTRIES_STALL', - 'GL2C_PERF_SEL_TAG_PROBE_FIFO_FULL_STALL', - 'GL2C_PERF_SEL_TAG_PROBE_FILTER_STALL', - 'GL2C_PERF_SEL_TAG_PROBE_STALL', - 'GL2C_PERF_SEL_TAG_READ_DST_STALL', 'GL2C_PERF_SEL_TAG_STALL', - 'GL2C_PERF_SEL_TAG_UNCACHED_WRITE_ATOMIC_FIFO_FULL_STALL', - 'GL2C_PERF_SEL_TAG_WRITEBACK_FIFO_FULL_STALL', - 'GL2C_PERF_SEL_TOO_MANY_EA_WRREQS_STALL', 'GL2C_PERF_SEL_UC_REQ', - 'GL2C_PERF_SEL_UNCACHED_WRITE', 'GL2C_PERF_SEL_VOL_REQ', - 'GL2C_PERF_SEL_WRITE', 'GL2C_PERF_SEL_WRITEBACK', - 'GL2C_PERF_SEL_WRITEBACK_READ_TIMEOUT', - 'GL2C_PERF_SEL_WRITE_32_REQ', 'GL2C_PERF_SEL_WRITE_64_REQ', - 'GL2_CACHE_POLICIES', 'GL2_CACHE_POLICY_BYPASS', - 'GL2_CACHE_POLICY_LRU', 'GL2_CACHE_POLICY_NOA', - 'GL2_CACHE_POLICY_STREAM', 'GL2_EA_CID', 'GL2_EA_CID_CLIENT', - 'GL2_EA_CID_CP', 'GL2_EA_CID_CPDMA', 'GL2_EA_CID_DCC', - 'GL2_EA_CID_FMASK', 'GL2_EA_CID_HTILE', 'GL2_EA_CID_RLC', - 'GL2_EA_CID_RT', 'GL2_EA_CID_SDMA', 'GL2_EA_CID_TCPMETA', - 'GL2_EA_CID_UTCL2', 'GL2_EA_CID_ZPCPSD', 'GL2_EA_CID_Z_STENCIL', - 'GL2_NACKS', 'GL2_NACK_DATA_ERROR', 'GL2_NACK_NO_FAULT', - 'GL2_NACK_PAGE_FAULT', 'GL2_NACK_PROTECTION_FAULT', 'GL2_OP', - 'GL2_OP_ATOMIC_ADD_32', 'GL2_OP_ATOMIC_ADD_64', - 'GL2_OP_ATOMIC_ADD_RTN_32', 'GL2_OP_ATOMIC_ADD_RTN_64', - 'GL2_OP_ATOMIC_AND_32', 'GL2_OP_ATOMIC_AND_64', - 'GL2_OP_ATOMIC_AND_RTN_32', 'GL2_OP_ATOMIC_AND_RTN_64', - 'GL2_OP_ATOMIC_CMPSWAP_32', 'GL2_OP_ATOMIC_CMPSWAP_64', - 'GL2_OP_ATOMIC_CMPSWAP_RTN_32', 'GL2_OP_ATOMIC_CMPSWAP_RTN_64', - 'GL2_OP_ATOMIC_DEC_32', 'GL2_OP_ATOMIC_DEC_64', - 'GL2_OP_ATOMIC_DEC_RTN_32', 'GL2_OP_ATOMIC_DEC_RTN_64', - 'GL2_OP_ATOMIC_FCMPSWAP_32', 'GL2_OP_ATOMIC_FCMPSWAP_64', - 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32', - 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64', - 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32', - 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64', - 'GL2_OP_ATOMIC_FCMPSWAP_RTN_32', 'GL2_OP_ATOMIC_FCMPSWAP_RTN_64', - 'GL2_OP_ATOMIC_FMAX_32', 'GL2_OP_ATOMIC_FMAX_64', - 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_32', - 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_64', - 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32', - 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64', - 'GL2_OP_ATOMIC_FMAX_RTN_32', 'GL2_OP_ATOMIC_FMAX_RTN_64', - 'GL2_OP_ATOMIC_FMIN_32', 'GL2_OP_ATOMIC_FMIN_64', - 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_32', - 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_64', - 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32', - 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64', - 'GL2_OP_ATOMIC_FMIN_RTN_32', 'GL2_OP_ATOMIC_FMIN_RTN_64', - 'GL2_OP_ATOMIC_INC_32', 'GL2_OP_ATOMIC_INC_64', - 'GL2_OP_ATOMIC_INC_RTN_32', 'GL2_OP_ATOMIC_INC_RTN_64', - 'GL2_OP_ATOMIC_OR_32', 'GL2_OP_ATOMIC_OR_64', - 'GL2_OP_ATOMIC_OR_RTN_32', 'GL2_OP_ATOMIC_OR_RTN_64', - 'GL2_OP_ATOMIC_SMAX_32', 'GL2_OP_ATOMIC_SMAX_64', - 'GL2_OP_ATOMIC_SMAX_RTN_32', 'GL2_OP_ATOMIC_SMAX_RTN_64', - 'GL2_OP_ATOMIC_SMIN_32', 'GL2_OP_ATOMIC_SMIN_64', - 'GL2_OP_ATOMIC_SMIN_RTN_32', 'GL2_OP_ATOMIC_SMIN_RTN_64', - 'GL2_OP_ATOMIC_SUB_32', 'GL2_OP_ATOMIC_SUB_64', - 'GL2_OP_ATOMIC_SUB_RTN_32', 'GL2_OP_ATOMIC_SUB_RTN_64', - 'GL2_OP_ATOMIC_SWAP_32', 'GL2_OP_ATOMIC_SWAP_64', - 'GL2_OP_ATOMIC_SWAP_RTN_32', 'GL2_OP_ATOMIC_SWAP_RTN_64', - 'GL2_OP_ATOMIC_UMAX_32', 'GL2_OP_ATOMIC_UMAX_64', - 'GL2_OP_ATOMIC_UMAX_RTN_32', 'GL2_OP_ATOMIC_UMAX_RTN_64', - 'GL2_OP_ATOMIC_UMIN_32', 'GL2_OP_ATOMIC_UMIN_64', - 'GL2_OP_ATOMIC_UMIN_RTN_32', 'GL2_OP_ATOMIC_UMIN_RTN_64', - 'GL2_OP_ATOMIC_XOR_32', 'GL2_OP_ATOMIC_XOR_64', - 'GL2_OP_ATOMIC_XOR_RTN_32', 'GL2_OP_ATOMIC_XOR_RTN_64', - 'GL2_OP_GL1_INV', 'GL2_OP_MASKS', 'GL2_OP_MASK_64', - 'GL2_OP_MASK_FLUSH_DENROM', 'GL2_OP_MASK_NO_RTN', - 'GL2_OP_NOP_ACK', 'GL2_OP_NOP_RTN0', 'GL2_OP_PROBE_FILTER', - 'GL2_OP_READ', 'GL2_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_1', - 'GL2_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2', 'GL2_OP_WRITE', - 'GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE', - 'GLOBAL_CONTROL_CONTROLLER_RESET', 'GLOBAL_CONTROL_FLUSH_CONTROL', - 'GLOBAL_STATUS_FLUSH_STATUS', - 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_ENDED', - 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_NOT_ENDED', - 'GL__CONSTANT_ALPHA', 'GL__CONSTANT_COLOR', 'GL__DST_ALPHA', - 'GL__DST_COLOR', 'GL__ONE', 'GL__ONE_MINUS_CONSTANT_ALPHA', - 'GL__ONE_MINUS_CONSTANT_COLOR', 'GL__ONE_MINUS_DST_ALPHA', - 'GL__ONE_MINUS_DST_COLOR', 'GL__ONE_MINUS_SRC_ALPHA', - 'GL__ONE_MINUS_SRC_COLOR', 'GL__SRC_ALPHA', - 'GL__SRC_ALPHA_SATURATE', 'GL__SRC_COLOR', 'GL__ZERO', - 'GRBM_PERF_SEL', 'GRBM_PERF_SEL_BCI_BUSY', - 'GRBM_PERF_SEL_CB_BUSY', 'GRBM_PERF_SEL_CB_CLEAN', - 'GRBM_PERF_SEL_CH_BUSY', 'GRBM_PERF_SEL_COUNT', - 'GRBM_PERF_SEL_CPAXI_BUSY', 'GRBM_PERF_SEL_CPC_BUSY', - 'GRBM_PERF_SEL_CPF_BUSY', 'GRBM_PERF_SEL_CPG_BUSY', - 'GRBM_PERF_SEL_CP_BUSY', 'GRBM_PERF_SEL_CP_COHER_BUSY', - 'GRBM_PERF_SEL_CP_DMA_BUSY', 'GRBM_PERF_SEL_DB_BUSY', - 'GRBM_PERF_SEL_DB_CLEAN', 'GRBM_PERF_SEL_EA_BUSY', - 'GRBM_PERF_SEL_GDS_BUSY', 'GRBM_PERF_SEL_GE_BUSY', - 'GRBM_PERF_SEL_GE_NO_DMA_BUSY', 'GRBM_PERF_SEL_GL1CC_BUSY', - 'GRBM_PERF_SEL_GL2CC_BUSY', 'GRBM_PERF_SEL_GUI_ACTIVE', - 'GRBM_PERF_SEL_GUS_BUSY', 'GRBM_PERF_SEL_PA_BUSY', - 'GRBM_PERF_SEL_PH_BUSY', 'GRBM_PERF_SEL_PMM_BUSY', - 'GRBM_PERF_SEL_RESERVED_0', 'GRBM_PERF_SEL_RESERVED_1', - 'GRBM_PERF_SEL_RESERVED_2', 'GRBM_PERF_SEL_RESERVED_3', - 'GRBM_PERF_SEL_RESERVED_4', 'GRBM_PERF_SEL_RESERVED_5', - 'GRBM_PERF_SEL_RESERVED_6', 'GRBM_PERF_SEL_RESERVED_7', - 'GRBM_PERF_SEL_RESERVED_8', 'GRBM_PERF_SEL_RESERVED_9', - 'GRBM_PERF_SEL_RLC_BUSY', 'GRBM_PERF_SEL_RMI_BUSY', - 'GRBM_PERF_SEL_SC_BUSY', 'GRBM_PERF_SEL_SDMA_BUSY', - 'GRBM_PERF_SEL_SPI_BUSY', 'GRBM_PERF_SEL_SX_BUSY', - 'GRBM_PERF_SEL_TA_BUSY', 'GRBM_PERF_SEL_TCP_BUSY', - 'GRBM_PERF_SEL_USER_DEFINED', 'GRBM_PERF_SEL_UTCL1_BUSY', - 'GRBM_PERF_SEL_UTCL2_BUSY', 'GRBM_SE0_PERF_SEL', - 'GRBM_SE0_PERF_SEL_BCI_BUSY', 'GRBM_SE0_PERF_SEL_CB_BUSY', - 'GRBM_SE0_PERF_SEL_CB_CLEAN', 'GRBM_SE0_PERF_SEL_COUNT', - 'GRBM_SE0_PERF_SEL_DB_BUSY', 'GRBM_SE0_PERF_SEL_DB_CLEAN', - 'GRBM_SE0_PERF_SEL_GL1CC_BUSY', 'GRBM_SE0_PERF_SEL_PA_BUSY', - 'GRBM_SE0_PERF_SEL_RESERVED_0', 'GRBM_SE0_PERF_SEL_RESERVED_1', - 'GRBM_SE0_PERF_SEL_RESERVED_2', 'GRBM_SE0_PERF_SEL_RMI_BUSY', - 'GRBM_SE0_PERF_SEL_SC_BUSY', 'GRBM_SE0_PERF_SEL_SPI_BUSY', - 'GRBM_SE0_PERF_SEL_SX_BUSY', 'GRBM_SE0_PERF_SEL_TA_BUSY', - 'GRBM_SE0_PERF_SEL_TCP_BUSY', 'GRBM_SE0_PERF_SEL_USER_DEFINED', - 'GRBM_SE0_PERF_SEL_UTCL1_BUSY', 'GRBM_SE1_PERF_SEL', - 'GRBM_SE1_PERF_SEL_BCI_BUSY', 'GRBM_SE1_PERF_SEL_CB_BUSY', - 'GRBM_SE1_PERF_SEL_CB_CLEAN', 'GRBM_SE1_PERF_SEL_COUNT', - 'GRBM_SE1_PERF_SEL_DB_BUSY', 'GRBM_SE1_PERF_SEL_DB_CLEAN', - 'GRBM_SE1_PERF_SEL_GL1CC_BUSY', 'GRBM_SE1_PERF_SEL_PA_BUSY', - 'GRBM_SE1_PERF_SEL_RESERVED_0', 'GRBM_SE1_PERF_SEL_RESERVED_1', - 'GRBM_SE1_PERF_SEL_RESERVED_2', 'GRBM_SE1_PERF_SEL_RMI_BUSY', - 'GRBM_SE1_PERF_SEL_SC_BUSY', 'GRBM_SE1_PERF_SEL_SPI_BUSY', - 'GRBM_SE1_PERF_SEL_SX_BUSY', 'GRBM_SE1_PERF_SEL_TA_BUSY', - 'GRBM_SE1_PERF_SEL_TCP_BUSY', 'GRBM_SE1_PERF_SEL_USER_DEFINED', - 'GRBM_SE1_PERF_SEL_UTCL1_BUSY', 'GRBM_SE2_PERF_SEL', - 'GRBM_SE2_PERF_SEL_BCI_BUSY', 'GRBM_SE2_PERF_SEL_CB_BUSY', - 'GRBM_SE2_PERF_SEL_CB_CLEAN', 'GRBM_SE2_PERF_SEL_COUNT', - 'GRBM_SE2_PERF_SEL_DB_BUSY', 'GRBM_SE2_PERF_SEL_DB_CLEAN', - 'GRBM_SE2_PERF_SEL_GL1CC_BUSY', 'GRBM_SE2_PERF_SEL_PA_BUSY', - 'GRBM_SE2_PERF_SEL_RESERVED_0', 'GRBM_SE2_PERF_SEL_RESERVED_1', - 'GRBM_SE2_PERF_SEL_RESERVED_2', 'GRBM_SE2_PERF_SEL_RMI_BUSY', - 'GRBM_SE2_PERF_SEL_SC_BUSY', 'GRBM_SE2_PERF_SEL_SPI_BUSY', - 'GRBM_SE2_PERF_SEL_SX_BUSY', 'GRBM_SE2_PERF_SEL_TA_BUSY', - 'GRBM_SE2_PERF_SEL_TCP_BUSY', 'GRBM_SE2_PERF_SEL_USER_DEFINED', - 'GRBM_SE2_PERF_SEL_UTCL1_BUSY', 'GRBM_SE3_PERF_SEL', - 'GRBM_SE3_PERF_SEL_BCI_BUSY', 'GRBM_SE3_PERF_SEL_CB_BUSY', - 'GRBM_SE3_PERF_SEL_CB_CLEAN', 'GRBM_SE3_PERF_SEL_COUNT', - 'GRBM_SE3_PERF_SEL_DB_BUSY', 'GRBM_SE3_PERF_SEL_DB_CLEAN', - 'GRBM_SE3_PERF_SEL_GL1CC_BUSY', 'GRBM_SE3_PERF_SEL_PA_BUSY', - 'GRBM_SE3_PERF_SEL_RESERVED_0', 'GRBM_SE3_PERF_SEL_RESERVED_1', - 'GRBM_SE3_PERF_SEL_RESERVED_2', 'GRBM_SE3_PERF_SEL_RMI_BUSY', - 'GRBM_SE3_PERF_SEL_SC_BUSY', 'GRBM_SE3_PERF_SEL_SPI_BUSY', - 'GRBM_SE3_PERF_SEL_SX_BUSY', 'GRBM_SE3_PERF_SEL_TA_BUSY', - 'GRBM_SE3_PERF_SEL_TCP_BUSY', 'GRBM_SE3_PERF_SEL_USER_DEFINED', - 'GRBM_SE3_PERF_SEL_UTCL1_BUSY', 'GSTHREADID_SIZE', 'GS_CUT_1024', - 'GS_CUT_128', 'GS_CUT_256', 'GS_CUT_512', 'GS_OFF', - 'GS_SCENARIO_A', 'GS_SCENARIO_B', 'GS_SCENARIO_C', - 'GS_SCENARIO_G', 'GS_STAGE_OFF', 'GS_STAGE_ON', 'GroupInterleave', - 'HDMI_ACR_0_MULTIPLE_RESERVED', 'HDMI_ACR_1_MULTIPLE', - 'HDMI_ACR_2_MULTIPLE', 'HDMI_ACR_3_MULTIPLE_RESERVED', - 'HDMI_ACR_4_MULTIPLE', 'HDMI_ACR_5_MULTIPLE_RESERVED', - 'HDMI_ACR_6_MULTIPLE_RESERVED', 'HDMI_ACR_7_MULTIPLE_RESERVED', - 'HDMI_ACR_AUDIO_PRIORITY', 'HDMI_ACR_CONT', - 'HDMI_ACR_CONT_DISABLE', 'HDMI_ACR_CONT_ENABLE', - 'HDMI_ACR_NOT_SEND', 'HDMI_ACR_N_MULTIPLE', - 'HDMI_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE', - 'HDMI_ACR_PKT_SEND', 'HDMI_ACR_SELECT', 'HDMI_ACR_SELECT_32K', - 'HDMI_ACR_SELECT_44K', 'HDMI_ACR_SELECT_48K', - 'HDMI_ACR_SELECT_HW', 'HDMI_ACR_SEND', 'HDMI_ACR_SOURCE', - 'HDMI_ACR_SOURCE_HW', 'HDMI_ACR_SOURCE_SW', - 'HDMI_AUDIO_DELAY_56CLK', 'HDMI_AUDIO_DELAY_58CLK', - 'HDMI_AUDIO_DELAY_DISABLE', 'HDMI_AUDIO_DELAY_EN', - 'HDMI_AUDIO_DELAY_RESERVED', 'HDMI_AUDIO_INFO_CONT', - 'HDMI_AUDIO_INFO_CONT_DISABLE', 'HDMI_AUDIO_INFO_CONT_ENABLE', - 'HDMI_AUDIO_INFO_NOT_SEND', 'HDMI_AUDIO_INFO_PKT_SEND', - 'HDMI_AUDIO_INFO_SEND', - 'HDMI_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT', - 'HDMI_AUDIO_SEND_MAX_PACKETS', - 'HDMI_CLOCK_CHANNEL_FREQ_EQUAL_TO_CHAR_RATE', - 'HDMI_CLOCK_CHANNEL_FREQ_QUARTER_TO_CHAR_RATE', - 'HDMI_CLOCK_CHANNEL_RATE', 'HDMI_DEEP_COLOR_DEPTH', - 'HDMI_DEEP_COLOR_DEPTH_24BPP', 'HDMI_DEEP_COLOR_DEPTH_30BPP', - 'HDMI_DEEP_COLOR_DEPTH_36BPP', 'HDMI_DEEP_COLOR_DEPTH_48BPP', - 'HDMI_DEFAULT_PAHSE', 'HDMI_DEFAULT_PHASE_IS_0', - 'HDMI_DEFAULT_PHASE_IS_1', 'HDMI_ERROR_ACK', 'HDMI_ERROR_ACK_INT', - 'HDMI_ERROR_MASK', 'HDMI_ERROR_MASK_INT', 'HDMI_ERROR_NOT_ACK', - 'HDMI_ERROR_NOT_MASK', 'HDMI_EXTRA_NULL_PACKET_FILLED_DISABLE', - 'HDMI_EXTRA_NULL_PACKET_FILLED_ENABLE', 'HDMI_GC_AVMUTE', - 'HDMI_GC_AVMUTE_CONT', 'HDMI_GC_AVMUTE_CONT_DISABLE', - 'HDMI_GC_AVMUTE_CONT_ENABLE', 'HDMI_GC_AVMUTE_SET', - 'HDMI_GC_AVMUTE_UNSET', 'HDMI_GC_CONT', 'HDMI_GC_CONT_DISABLE', - 'HDMI_GC_CONT_ENABLE', 'HDMI_GC_NOT_SEND', 'HDMI_GC_PKT_SEND', - 'HDMI_GC_SEND', 'HDMI_GENERIC_CONT', 'HDMI_GENERIC_CONT_DISABLE', - 'HDMI_GENERIC_CONT_ENABLE', 'HDMI_GENERIC_NOT_SEND', - 'HDMI_GENERIC_PKT_SEND', 'HDMI_GENERIC_SEND', 'HDMI_ISRC_CONT', - 'HDMI_ISRC_CONT_DISABLE', 'HDMI_ISRC_CONT_ENABLE', - 'HDMI_ISRC_NOT_SEND', 'HDMI_ISRC_PKT_SEND', 'HDMI_ISRC_SEND', - 'HDMI_KEEPOUT_0_650PIX_AFTER_VSYNC', - 'HDMI_KEEPOUT_509_650PIX_AFTER_VSYNC', 'HDMI_KEEPOUT_MODE', - 'HDMI_METADATA_ENABLE', 'HDMI_METADATA_NOT_SEND', - 'HDMI_METADATA_PKT_SEND', 'HDMI_MPEG_INFO_CONT', - 'HDMI_MPEG_INFO_CONT_DISABLE', 'HDMI_MPEG_INFO_CONT_ENABLE', - 'HDMI_MPEG_INFO_NOT_SEND', 'HDMI_MPEG_INFO_PKT_SEND', - 'HDMI_MPEG_INFO_SEND', 'HDMI_NOT_SEND_MAX_AUDIO_PACKETS', - 'HDMI_NO_EXTRA_NULL_PACKET_FILLED', 'HDMI_NULL_NOT_SEND', - 'HDMI_NULL_PKT_SEND', 'HDMI_NULL_SEND', 'HDMI_PACKET_GEN_VERSION', - 'HDMI_PACKET_GEN_VERSION_NEW', 'HDMI_PACKET_GEN_VERSION_OLD', - 'HDMI_PACKET_LINE_REFERENCE', 'HDMI_PACKING_PHASE_OVERRIDE', - 'HDMI_PACKING_PHASE_SET_BY_HW', 'HDMI_PACKING_PHASE_SET_BY_SW', - 'HDMI_PKT_LINE_REF_OTGSOF', 'HDMI_PKT_LINE_REF_VSYNC', - 'HDMI_SEND_MAX_AUDIO_PACKETS', 'HDP_ENDIAN_8IN16', - 'HDP_ENDIAN_8IN32', 'HDP_ENDIAN_8IN64', 'HDP_ENDIAN_NONE', - 'HPD_INT_CONTROL_ACK', 'HPD_INT_CONTROL_ACK_0', - 'HPD_INT_CONTROL_ACK_1', 'HPD_INT_CONTROL_GEN_INT_ON_CON', - 'HPD_INT_CONTROL_GEN_INT_ON_DISCON', 'HPD_INT_CONTROL_POLARITY', - 'HPD_INT_CONTROL_RX_INT_ACK', 'HPD_INT_CONTROL_RX_INT_ACK_0', - 'HPD_INT_CONTROL_RX_INT_ACK_1', 'HS_GS', 'HS_STAGE_OFF', - 'HS_STAGE_ON', 'HUBP_BLANK_EN', 'HUBP_BLANK_SW_ASSERT', - 'HUBP_BLANK_SW_DEASSERT', 'HUBP_DISABLE', 'HUBP_DISABLED', - 'HUBP_ENABLED', 'HUBP_IN_ACTIVE', 'HUBP_IN_BLANK', - 'HUBP_IN_VBLANK', 'HUBP_MEASURE_WIN_MODE_DCFCLK', - 'HUBP_MEASURE_WIN_MODE_DCFCLK_0', - 'HUBP_MEASURE_WIN_MODE_DCFCLK_1', - 'HUBP_MEASURE_WIN_MODE_DCFCLK_2', - 'HUBP_MEASURE_WIN_MODE_DCFCLK_3', 'HUBP_NO_OUTSTANDING_REQ', - 'HUBP_TTU_DISABLE', 'HUBP_TTU_DISABLED', 'HUBP_TTU_ENABLED', - 'HUBP_VREADY_AT_OR_AFTER_VSYNC', 'HUBP_VTG_SEL', - 'HUBP_XFC_CHUNK_SIZE_16KB', 'HUBP_XFC_CHUNK_SIZE_1KB', - 'HUBP_XFC_CHUNK_SIZE_256B', 'HUBP_XFC_CHUNK_SIZE_2KB', - 'HUBP_XFC_CHUNK_SIZE_32KB', 'HUBP_XFC_CHUNK_SIZE_4KB', - 'HUBP_XFC_CHUNK_SIZE_512B', 'HUBP_XFC_CHUNK_SIZE_8KB', - 'HUBP_XFC_CHUNK_SIZE_ENUM', 'HUBP_XFC_FRAME_MODE_ENUM', - 'HUBP_XFC_FULL_FRAME_MODE', 'HUBP_XFC_PARTIAL_FRAME_MODE', - 'HUBP_XFC_PIXEL_FORMAT_ENUM', 'HUBP_XFC_PIXEL_IS_32BPP', - 'HUBP_XFC_PIXEL_IS_64BPP', 'HW_MIRRORING_DISABLE', - 'HW_MIRRORING_ENABLE', 'H_MIRROR_EN', 'Hdp_SurfaceEndian', - 'ID_STREAM_DISABLE_ACKED', 'ID_STREAM_DISABLE_NO_ACK', - 'IHC_INTERRUPT_LINE_STATUS', 'IH_CLIENT_TYPE', - 'IH_CLIENT_TYPE_RESERVED', 'IH_GFX_VMID_CLIENT', - 'IH_INTERFACE_TYPE', 'IH_LEGACY_INTERFACE', 'IH_MM_VMID_CLIENT', - 'IH_MULTI_VMID_CLIENT', 'IH_PERF_SEL', - 'IH_PERF_SEL_BIF_LINE0_FALLING', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF0', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF1', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF10', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF11', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF12', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF13', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF14', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF15', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF16', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF17', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF18', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF19', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF2', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF20', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF21', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF22', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF23', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF24', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF25', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF26', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF27', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF28', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF29', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF3', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF30', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF4', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF5', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF6', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF7', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF8', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF9', - 'IH_PERF_SEL_BIF_LINE0_RISING', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF0', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF1', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF10', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF11', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF12', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF13', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF14', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF15', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF16', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF17', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF18', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF19', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF2', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF20', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF21', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF22', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF23', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF24', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF25', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF26', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF27', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF28', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF29', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF3', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF30', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF4', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF5', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF6', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF7', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF8', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF9', - 'IH_PERF_SEL_BUFFER_FIFO_FULL', 'IH_PERF_SEL_BUFFER_IDLE', - 'IH_PERF_SEL_CLIENT0_INT', 'IH_PERF_SEL_CLIENT10_INT', - 'IH_PERF_SEL_CLIENT11_INT', 'IH_PERF_SEL_CLIENT12_INT', - 'IH_PERF_SEL_CLIENT13_INT', 'IH_PERF_SEL_CLIENT14_INT', - 'IH_PERF_SEL_CLIENT15_INT', 'IH_PERF_SEL_CLIENT16_INT', - 'IH_PERF_SEL_CLIENT17_INT', 'IH_PERF_SEL_CLIENT18_INT', - 'IH_PERF_SEL_CLIENT19_INT', 'IH_PERF_SEL_CLIENT1_INT', - 'IH_PERF_SEL_CLIENT20_INT', 'IH_PERF_SEL_CLIENT21_INT', - 'IH_PERF_SEL_CLIENT22_INT', 'IH_PERF_SEL_CLIENT23_INT', - 'IH_PERF_SEL_CLIENT24_INT', 'IH_PERF_SEL_CLIENT25_INT', - 'IH_PERF_SEL_CLIENT26_INT', 'IH_PERF_SEL_CLIENT27_INT', - 'IH_PERF_SEL_CLIENT28_INT', 'IH_PERF_SEL_CLIENT29_INT', - 'IH_PERF_SEL_CLIENT2_INT', 'IH_PERF_SEL_CLIENT30_INT', - 'IH_PERF_SEL_CLIENT31_INT', 'IH_PERF_SEL_CLIENT3_INT', - 'IH_PERF_SEL_CLIENT4_INT', 'IH_PERF_SEL_CLIENT5_INT', - 'IH_PERF_SEL_CLIENT6_INT', 'IH_PERF_SEL_CLIENT7_INT', - 'IH_PERF_SEL_CLIENT8_INT', 'IH_PERF_SEL_CLIENT9_INT', - 'IH_PERF_SEL_CLIENT_CREDIT_ERROR', 'IH_PERF_SEL_COOKIE_REC_ERROR', - 'IH_PERF_SEL_CYCLE', 'IH_PERF_SEL_IDLE', 'IH_PERF_SEL_INPUT_IDLE', - 'IH_PERF_SEL_MC_WR_CLEAN_PENDING', - 'IH_PERF_SEL_MC_WR_CLEAN_STALL', 'IH_PERF_SEL_MC_WR_COUNT', - 'IH_PERF_SEL_MC_WR_IDLE', 'IH_PERF_SEL_MC_WR_STALL', - 'IH_PERF_SEL_RB0_FULL', 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF0', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF1', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF10', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF11', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF12', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF13', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF14', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF15', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF16', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF17', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF18', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF19', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF2', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF20', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF21', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF22', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF23', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF24', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF25', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF26', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF27', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF28', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF29', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF3', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF30', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF4', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF5', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF6', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF7', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF8', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF9', 'IH_PERF_SEL_RB0_FULL_VF0', - 'IH_PERF_SEL_RB0_FULL_VF1', 'IH_PERF_SEL_RB0_FULL_VF10', - 'IH_PERF_SEL_RB0_FULL_VF11', 'IH_PERF_SEL_RB0_FULL_VF12', - 'IH_PERF_SEL_RB0_FULL_VF13', 'IH_PERF_SEL_RB0_FULL_VF14', - 'IH_PERF_SEL_RB0_FULL_VF15', 'IH_PERF_SEL_RB0_FULL_VF16', - 'IH_PERF_SEL_RB0_FULL_VF17', 'IH_PERF_SEL_RB0_FULL_VF18', - 'IH_PERF_SEL_RB0_FULL_VF19', 'IH_PERF_SEL_RB0_FULL_VF2', - 'IH_PERF_SEL_RB0_FULL_VF20', 'IH_PERF_SEL_RB0_FULL_VF21', - 'IH_PERF_SEL_RB0_FULL_VF22', 'IH_PERF_SEL_RB0_FULL_VF23', - 'IH_PERF_SEL_RB0_FULL_VF24', 'IH_PERF_SEL_RB0_FULL_VF25', - 'IH_PERF_SEL_RB0_FULL_VF26', 'IH_PERF_SEL_RB0_FULL_VF27', - 'IH_PERF_SEL_RB0_FULL_VF28', 'IH_PERF_SEL_RB0_FULL_VF29', - 'IH_PERF_SEL_RB0_FULL_VF3', 'IH_PERF_SEL_RB0_FULL_VF30', - 'IH_PERF_SEL_RB0_FULL_VF4', 'IH_PERF_SEL_RB0_FULL_VF5', - 'IH_PERF_SEL_RB0_FULL_VF6', 'IH_PERF_SEL_RB0_FULL_VF7', - 'IH_PERF_SEL_RB0_FULL_VF8', 'IH_PERF_SEL_RB0_FULL_VF9', - 'IH_PERF_SEL_RB0_LOAD_RPTR', 'IH_PERF_SEL_RB0_LOAD_RPTR_VF0', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF1', 'IH_PERF_SEL_RB0_LOAD_RPTR_VF10', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF11', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF12', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF13', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF14', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF15', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF16', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF17', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF18', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF19', 'IH_PERF_SEL_RB0_LOAD_RPTR_VF2', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF20', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF21', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF22', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF23', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF24', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF25', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF26', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF27', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF28', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF29', 'IH_PERF_SEL_RB0_LOAD_RPTR_VF3', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF30', 'IH_PERF_SEL_RB0_LOAD_RPTR_VF4', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF5', 'IH_PERF_SEL_RB0_LOAD_RPTR_VF6', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF7', 'IH_PERF_SEL_RB0_LOAD_RPTR_VF8', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF9', 'IH_PERF_SEL_RB0_OVERFLOW', - 'IH_PERF_SEL_RB0_OVERFLOW_VF0', 'IH_PERF_SEL_RB0_OVERFLOW_VF1', - 'IH_PERF_SEL_RB0_OVERFLOW_VF10', 'IH_PERF_SEL_RB0_OVERFLOW_VF11', - 'IH_PERF_SEL_RB0_OVERFLOW_VF12', 'IH_PERF_SEL_RB0_OVERFLOW_VF13', - 'IH_PERF_SEL_RB0_OVERFLOW_VF14', 'IH_PERF_SEL_RB0_OVERFLOW_VF15', - 'IH_PERF_SEL_RB0_OVERFLOW_VF16', 'IH_PERF_SEL_RB0_OVERFLOW_VF17', - 'IH_PERF_SEL_RB0_OVERFLOW_VF18', 'IH_PERF_SEL_RB0_OVERFLOW_VF19', - 'IH_PERF_SEL_RB0_OVERFLOW_VF2', 'IH_PERF_SEL_RB0_OVERFLOW_VF20', - 'IH_PERF_SEL_RB0_OVERFLOW_VF21', 'IH_PERF_SEL_RB0_OVERFLOW_VF22', - 'IH_PERF_SEL_RB0_OVERFLOW_VF23', 'IH_PERF_SEL_RB0_OVERFLOW_VF24', - 'IH_PERF_SEL_RB0_OVERFLOW_VF25', 'IH_PERF_SEL_RB0_OVERFLOW_VF26', - 'IH_PERF_SEL_RB0_OVERFLOW_VF27', 'IH_PERF_SEL_RB0_OVERFLOW_VF28', - 'IH_PERF_SEL_RB0_OVERFLOW_VF29', 'IH_PERF_SEL_RB0_OVERFLOW_VF3', - 'IH_PERF_SEL_RB0_OVERFLOW_VF30', 'IH_PERF_SEL_RB0_OVERFLOW_VF4', - 'IH_PERF_SEL_RB0_OVERFLOW_VF5', 'IH_PERF_SEL_RB0_OVERFLOW_VF6', - 'IH_PERF_SEL_RB0_OVERFLOW_VF7', 'IH_PERF_SEL_RB0_OVERFLOW_VF8', - 'IH_PERF_SEL_RB0_OVERFLOW_VF9', 'IH_PERF_SEL_RB0_RPTR_WRAP', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF0', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF1', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF10', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF11', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF12', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF13', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF14', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF15', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF16', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF17', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF18', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF19', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF2', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF20', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF21', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF22', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF23', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF24', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF25', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF26', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF27', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF28', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF29', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF3', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF30', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF4', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF5', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF6', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF7', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF8', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF9', 'IH_PERF_SEL_RB0_WPTR_WRAP', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF0', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF1', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF10', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF11', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF12', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF13', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF14', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF15', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF16', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF17', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF18', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF19', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF2', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF20', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF21', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF22', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF23', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF24', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF25', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF26', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF27', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF28', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF29', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF3', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF30', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF4', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF5', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF6', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF7', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF8', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF9', 'IH_PERF_SEL_RB0_WPTR_WRITEBACK', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF0', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF1', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF10', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF11', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF12', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF13', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF14', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF15', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF16', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF17', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF18', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF19', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF2', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF20', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF21', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF22', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF23', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF24', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF25', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF26', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF27', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF28', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF29', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF3', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF30', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF4', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF5', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF6', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF7', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF8', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF9', 'IH_PERF_SEL_RB1_FULL', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF0', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF1', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF10', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF11', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF12', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF13', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF14', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF15', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF16', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF17', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF18', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF19', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF2', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF20', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF21', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF22', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF23', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF24', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF25', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF26', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF27', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF28', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF29', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF3', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF30', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF4', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF5', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF6', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF7', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF8', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF9', 'IH_PERF_SEL_RB1_FULL_VF0', - 'IH_PERF_SEL_RB1_FULL_VF1', 'IH_PERF_SEL_RB1_FULL_VF10', - 'IH_PERF_SEL_RB1_FULL_VF11', 'IH_PERF_SEL_RB1_FULL_VF12', - 'IH_PERF_SEL_RB1_FULL_VF13', 'IH_PERF_SEL_RB1_FULL_VF14', - 'IH_PERF_SEL_RB1_FULL_VF15', 'IH_PERF_SEL_RB1_FULL_VF16', - 'IH_PERF_SEL_RB1_FULL_VF17', 'IH_PERF_SEL_RB1_FULL_VF18', - 'IH_PERF_SEL_RB1_FULL_VF19', 'IH_PERF_SEL_RB1_FULL_VF2', - 'IH_PERF_SEL_RB1_FULL_VF20', 'IH_PERF_SEL_RB1_FULL_VF21', - 'IH_PERF_SEL_RB1_FULL_VF22', 'IH_PERF_SEL_RB1_FULL_VF23', - 'IH_PERF_SEL_RB1_FULL_VF24', 'IH_PERF_SEL_RB1_FULL_VF25', - 'IH_PERF_SEL_RB1_FULL_VF26', 'IH_PERF_SEL_RB1_FULL_VF27', - 'IH_PERF_SEL_RB1_FULL_VF28', 'IH_PERF_SEL_RB1_FULL_VF29', - 'IH_PERF_SEL_RB1_FULL_VF3', 'IH_PERF_SEL_RB1_FULL_VF30', - 'IH_PERF_SEL_RB1_FULL_VF4', 'IH_PERF_SEL_RB1_FULL_VF5', - 'IH_PERF_SEL_RB1_FULL_VF6', 'IH_PERF_SEL_RB1_FULL_VF7', - 'IH_PERF_SEL_RB1_FULL_VF8', 'IH_PERF_SEL_RB1_FULL_VF9', - 'IH_PERF_SEL_RB1_LOAD_RPTR', 'IH_PERF_SEL_RB1_LOAD_RPTR_VF0', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF1', 'IH_PERF_SEL_RB1_LOAD_RPTR_VF10', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF11', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF12', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF13', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF14', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF15', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF16', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF17', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF18', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF19', 'IH_PERF_SEL_RB1_LOAD_RPTR_VF2', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF20', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF21', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF22', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF23', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF24', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF25', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF26', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF27', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF28', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF29', 'IH_PERF_SEL_RB1_LOAD_RPTR_VF3', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF30', 'IH_PERF_SEL_RB1_LOAD_RPTR_VF4', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF5', 'IH_PERF_SEL_RB1_LOAD_RPTR_VF6', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF7', 'IH_PERF_SEL_RB1_LOAD_RPTR_VF8', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF9', 'IH_PERF_SEL_RB1_OVERFLOW', - 'IH_PERF_SEL_RB1_OVERFLOW_VF0', 'IH_PERF_SEL_RB1_OVERFLOW_VF1', - 'IH_PERF_SEL_RB1_OVERFLOW_VF10', 'IH_PERF_SEL_RB1_OVERFLOW_VF11', - 'IH_PERF_SEL_RB1_OVERFLOW_VF12', 'IH_PERF_SEL_RB1_OVERFLOW_VF13', - 'IH_PERF_SEL_RB1_OVERFLOW_VF14', 'IH_PERF_SEL_RB1_OVERFLOW_VF15', - 'IH_PERF_SEL_RB1_OVERFLOW_VF16', 'IH_PERF_SEL_RB1_OVERFLOW_VF17', - 'IH_PERF_SEL_RB1_OVERFLOW_VF18', 'IH_PERF_SEL_RB1_OVERFLOW_VF19', - 'IH_PERF_SEL_RB1_OVERFLOW_VF2', 'IH_PERF_SEL_RB1_OVERFLOW_VF20', - 'IH_PERF_SEL_RB1_OVERFLOW_VF21', 'IH_PERF_SEL_RB1_OVERFLOW_VF22', - 'IH_PERF_SEL_RB1_OVERFLOW_VF23', 'IH_PERF_SEL_RB1_OVERFLOW_VF24', - 'IH_PERF_SEL_RB1_OVERFLOW_VF25', 'IH_PERF_SEL_RB1_OVERFLOW_VF26', - 'IH_PERF_SEL_RB1_OVERFLOW_VF27', 'IH_PERF_SEL_RB1_OVERFLOW_VF28', - 'IH_PERF_SEL_RB1_OVERFLOW_VF29', 'IH_PERF_SEL_RB1_OVERFLOW_VF3', - 'IH_PERF_SEL_RB1_OVERFLOW_VF30', 'IH_PERF_SEL_RB1_OVERFLOW_VF4', - 'IH_PERF_SEL_RB1_OVERFLOW_VF5', 'IH_PERF_SEL_RB1_OVERFLOW_VF6', - 'IH_PERF_SEL_RB1_OVERFLOW_VF7', 'IH_PERF_SEL_RB1_OVERFLOW_VF8', - 'IH_PERF_SEL_RB1_OVERFLOW_VF9', 'IH_PERF_SEL_RB1_RPTR_WRAP', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF0', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF1', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF10', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF11', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF12', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF13', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF14', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF15', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF16', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF17', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF18', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF19', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF2', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF20', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF21', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF22', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF23', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF24', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF25', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF26', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF27', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF28', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF29', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF3', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF30', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF4', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF5', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF6', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF7', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF8', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF9', 'IH_PERF_SEL_RB1_WPTR_WRAP', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF0', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF1', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF10', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF11', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF12', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF13', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF14', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF15', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF16', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF17', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF18', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF19', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF2', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF20', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF21', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF22', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF23', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF24', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF25', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF26', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF27', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF28', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF29', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF3', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF30', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF4', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF5', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF6', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF7', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF8', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF9', 'IH_PERF_SEL_RB2_FULL', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF0', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF1', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF10', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF11', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF12', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF13', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF14', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF15', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF16', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF17', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF18', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF19', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF2', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF20', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF21', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF22', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF23', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF24', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF25', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF26', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF27', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF28', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF29', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF3', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF30', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF4', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF5', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF6', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF7', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF8', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF9', 'IH_PERF_SEL_RB2_FULL_VF0', - 'IH_PERF_SEL_RB2_FULL_VF1', 'IH_PERF_SEL_RB2_FULL_VF10', - 'IH_PERF_SEL_RB2_FULL_VF11', 'IH_PERF_SEL_RB2_FULL_VF12', - 'IH_PERF_SEL_RB2_FULL_VF13', 'IH_PERF_SEL_RB2_FULL_VF14', - 'IH_PERF_SEL_RB2_FULL_VF15', 'IH_PERF_SEL_RB2_FULL_VF16', - 'IH_PERF_SEL_RB2_FULL_VF17', 'IH_PERF_SEL_RB2_FULL_VF18', - 'IH_PERF_SEL_RB2_FULL_VF19', 'IH_PERF_SEL_RB2_FULL_VF2', - 'IH_PERF_SEL_RB2_FULL_VF20', 'IH_PERF_SEL_RB2_FULL_VF21', - 'IH_PERF_SEL_RB2_FULL_VF22', 'IH_PERF_SEL_RB2_FULL_VF23', - 'IH_PERF_SEL_RB2_FULL_VF24', 'IH_PERF_SEL_RB2_FULL_VF25', - 'IH_PERF_SEL_RB2_FULL_VF26', 'IH_PERF_SEL_RB2_FULL_VF27', - 'IH_PERF_SEL_RB2_FULL_VF28', 'IH_PERF_SEL_RB2_FULL_VF29', - 'IH_PERF_SEL_RB2_FULL_VF3', 'IH_PERF_SEL_RB2_FULL_VF30', - 'IH_PERF_SEL_RB2_FULL_VF4', 'IH_PERF_SEL_RB2_FULL_VF5', - 'IH_PERF_SEL_RB2_FULL_VF6', 'IH_PERF_SEL_RB2_FULL_VF7', - 'IH_PERF_SEL_RB2_FULL_VF8', 'IH_PERF_SEL_RB2_FULL_VF9', - 'IH_PERF_SEL_RB2_LOAD_RPTR', 'IH_PERF_SEL_RB2_LOAD_RPTR_VF0', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF1', 'IH_PERF_SEL_RB2_LOAD_RPTR_VF10', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF11', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF12', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF13', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF14', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF15', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF16', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF17', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF18', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF19', 'IH_PERF_SEL_RB2_LOAD_RPTR_VF2', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF20', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF21', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF22', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF23', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF24', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF25', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF26', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF27', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF28', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF29', 'IH_PERF_SEL_RB2_LOAD_RPTR_VF3', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF30', 'IH_PERF_SEL_RB2_LOAD_RPTR_VF4', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF5', 'IH_PERF_SEL_RB2_LOAD_RPTR_VF6', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF7', 'IH_PERF_SEL_RB2_LOAD_RPTR_VF8', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF9', 'IH_PERF_SEL_RB2_OVERFLOW', - 'IH_PERF_SEL_RB2_OVERFLOW_VF0', 'IH_PERF_SEL_RB2_OVERFLOW_VF1', - 'IH_PERF_SEL_RB2_OVERFLOW_VF10', 'IH_PERF_SEL_RB2_OVERFLOW_VF11', - 'IH_PERF_SEL_RB2_OVERFLOW_VF12', 'IH_PERF_SEL_RB2_OVERFLOW_VF13', - 'IH_PERF_SEL_RB2_OVERFLOW_VF14', 'IH_PERF_SEL_RB2_OVERFLOW_VF15', - 'IH_PERF_SEL_RB2_OVERFLOW_VF16', 'IH_PERF_SEL_RB2_OVERFLOW_VF17', - 'IH_PERF_SEL_RB2_OVERFLOW_VF18', 'IH_PERF_SEL_RB2_OVERFLOW_VF19', - 'IH_PERF_SEL_RB2_OVERFLOW_VF2', 'IH_PERF_SEL_RB2_OVERFLOW_VF20', - 'IH_PERF_SEL_RB2_OVERFLOW_VF21', 'IH_PERF_SEL_RB2_OVERFLOW_VF22', - 'IH_PERF_SEL_RB2_OVERFLOW_VF23', 'IH_PERF_SEL_RB2_OVERFLOW_VF24', - 'IH_PERF_SEL_RB2_OVERFLOW_VF25', 'IH_PERF_SEL_RB2_OVERFLOW_VF26', - 'IH_PERF_SEL_RB2_OVERFLOW_VF27', 'IH_PERF_SEL_RB2_OVERFLOW_VF28', - 'IH_PERF_SEL_RB2_OVERFLOW_VF29', 'IH_PERF_SEL_RB2_OVERFLOW_VF3', - 'IH_PERF_SEL_RB2_OVERFLOW_VF30', 'IH_PERF_SEL_RB2_OVERFLOW_VF4', - 'IH_PERF_SEL_RB2_OVERFLOW_VF5', 'IH_PERF_SEL_RB2_OVERFLOW_VF6', - 'IH_PERF_SEL_RB2_OVERFLOW_VF7', 'IH_PERF_SEL_RB2_OVERFLOW_VF8', - 'IH_PERF_SEL_RB2_OVERFLOW_VF9', 'IH_PERF_SEL_RB2_RPTR_WRAP', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF0', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF1', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF10', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF11', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF12', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF13', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF14', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF15', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF16', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF17', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF18', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF19', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF2', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF20', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF21', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF22', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF23', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF24', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF25', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF26', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF27', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF28', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF29', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF3', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF30', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF4', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF5', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF6', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF7', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF8', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF9', 'IH_PERF_SEL_RB2_WPTR_WRAP', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF0', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF1', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF10', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF11', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF12', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF13', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF14', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF15', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF16', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF17', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF18', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF19', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF2', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF20', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF21', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF22', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF23', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF24', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF25', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF26', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF27', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF28', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF29', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF3', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF30', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF4', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF5', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF6', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF7', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF8', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF9', 'IH_PERF_SEL_SELF_IV_VALID', - 'IH_PERF_SEL_STORM_CLIENT_INT_DROP', - 'IH_REGISTER_WRITE_INTERFACE', 'IH_RING_ID', - 'IH_RING_ID_INTERRUPT', 'IH_RING_ID_REQUEST', - 'IH_RING_ID_RESERVED', 'IH_RING_ID_TRANSLATION', - 'IH_VF_RB_SELECT', 'IH_VF_RB_SELECT_CLIENT_FCN_ID', - 'IH_VF_RB_SELECT_IH_FCN_ID', 'IH_VF_RB_SELECT_PF', - 'IH_VF_RB_SELECT_RESERVED', 'IMG_DATA_FORMAT', - 'IMG_DATA_FORMAT_1', 'IMG_DATA_FORMAT_10_10_10_2', - 'IMG_DATA_FORMAT_10_11_11', 'IMG_DATA_FORMAT_11_11_10', - 'IMG_DATA_FORMAT_16', 'IMG_DATA_FORMAT_16_16', - 'IMG_DATA_FORMAT_16_16_16_16', 'IMG_DATA_FORMAT_1_5_5_5', - 'IMG_DATA_FORMAT_1_REVERSED', 'IMG_DATA_FORMAT_24_8', - 'IMG_DATA_FORMAT_2_10_10_10', 'IMG_DATA_FORMAT_32', - 'IMG_DATA_FORMAT_32_32', 'IMG_DATA_FORMAT_32_32_32', - 'IMG_DATA_FORMAT_32_32_32_32', - 'IMG_DATA_FORMAT_32_AS_32_32_32_32', 'IMG_DATA_FORMAT_4_4', - 'IMG_DATA_FORMAT_4_4_4_4', 'IMG_DATA_FORMAT_5_5_5_1', - 'IMG_DATA_FORMAT_5_6_5', 'IMG_DATA_FORMAT_5_9_9_9', - 'IMG_DATA_FORMAT_6E4', 'IMG_DATA_FORMAT_6_5_5', - 'IMG_DATA_FORMAT_8', 'IMG_DATA_FORMAT_8_24', - 'IMG_DATA_FORMAT_8_8', 'IMG_DATA_FORMAT_8_8_8_8', - 'IMG_DATA_FORMAT_BC1', 'IMG_DATA_FORMAT_BC2', - 'IMG_DATA_FORMAT_BC3', 'IMG_DATA_FORMAT_BC4', - 'IMG_DATA_FORMAT_BC5', 'IMG_DATA_FORMAT_BC6', - 'IMG_DATA_FORMAT_BC7', 'IMG_DATA_FORMAT_BG_RG', - 'IMG_DATA_FORMAT_FMASK16_S16_F1', 'IMG_DATA_FORMAT_FMASK16_S8_F2', - 'IMG_DATA_FORMAT_FMASK32_S16_F2', 'IMG_DATA_FORMAT_FMASK32_S8_F4', - 'IMG_DATA_FORMAT_FMASK32_S8_F8', 'IMG_DATA_FORMAT_FMASK64_S16_F4', - 'IMG_DATA_FORMAT_FMASK64_S16_F8', 'IMG_DATA_FORMAT_FMASK8_S2_F1', - 'IMG_DATA_FORMAT_FMASK8_S2_F2', 'IMG_DATA_FORMAT_FMASK8_S4_F1', - 'IMG_DATA_FORMAT_FMASK8_S4_F2', 'IMG_DATA_FORMAT_FMASK8_S4_F4', - 'IMG_DATA_FORMAT_FMASK8_S8_F1', 'IMG_DATA_FORMAT_GB_GR', - 'IMG_DATA_FORMAT_INVALID', 'IMG_DATA_FORMAT_MM_10_11_11', - 'IMG_DATA_FORMAT_MM_10_IN_16', 'IMG_DATA_FORMAT_MM_10_IN_16_16', - 'IMG_DATA_FORMAT_MM_10_IN_16_16_16_16', - 'IMG_DATA_FORMAT_MM_16_16_16_16', 'IMG_DATA_FORMAT_MM_2_10_10_10', - 'IMG_DATA_FORMAT_MM_8', 'IMG_DATA_FORMAT_MM_8_8', - 'IMG_DATA_FORMAT_MM_8_8_8_8', 'IMG_DATA_FORMAT_MM_VYUY8', - 'IMG_DATA_FORMAT_RESERVED_100', 'IMG_DATA_FORMAT_RESERVED_101', - 'IMG_DATA_FORMAT_RESERVED_102', 'IMG_DATA_FORMAT_RESERVED_103', - 'IMG_DATA_FORMAT_RESERVED_104', 'IMG_DATA_FORMAT_RESERVED_105', - 'IMG_DATA_FORMAT_RESERVED_106', 'IMG_DATA_FORMAT_RESERVED_107', - 'IMG_DATA_FORMAT_RESERVED_108', 'IMG_DATA_FORMAT_RESERVED_109', - 'IMG_DATA_FORMAT_RESERVED_110', 'IMG_DATA_FORMAT_RESERVED_111', - 'IMG_DATA_FORMAT_RESERVED_112', 'IMG_DATA_FORMAT_RESERVED_113', - 'IMG_DATA_FORMAT_RESERVED_114', 'IMG_DATA_FORMAT_RESERVED_115', - 'IMG_DATA_FORMAT_RESERVED_116', 'IMG_DATA_FORMAT_RESERVED_117', - 'IMG_DATA_FORMAT_RESERVED_118', 'IMG_DATA_FORMAT_RESERVED_119', - 'IMG_DATA_FORMAT_RESERVED_120', 'IMG_DATA_FORMAT_RESERVED_121', - 'IMG_DATA_FORMAT_RESERVED_122', 'IMG_DATA_FORMAT_RESERVED_123', - 'IMG_DATA_FORMAT_RESERVED_124', 'IMG_DATA_FORMAT_RESERVED_125', - 'IMG_DATA_FORMAT_RESERVED_126', 'IMG_DATA_FORMAT_RESERVED_127', - 'IMG_DATA_FORMAT_RESERVED_15', 'IMG_DATA_FORMAT_RESERVED_23', - 'IMG_DATA_FORMAT_RESERVED_24', 'IMG_DATA_FORMAT_RESERVED_25', - 'IMG_DATA_FORMAT_RESERVED_26', 'IMG_DATA_FORMAT_RESERVED_27', - 'IMG_DATA_FORMAT_RESERVED_28', 'IMG_DATA_FORMAT_RESERVED_29', - 'IMG_DATA_FORMAT_RESERVED_30', 'IMG_DATA_FORMAT_RESERVED_42', - 'IMG_DATA_FORMAT_RESERVED_43', 'IMG_DATA_FORMAT_RESERVED_61', - 'IMG_DATA_FORMAT_RESERVED_62', 'IMG_DATA_FORMAT_RESERVED_75', - 'IMG_DATA_FORMAT_RESERVED_86', 'IMG_DATA_FORMAT_RESERVED_87', - 'IMG_DATA_FORMAT_RESERVED_88', 'IMG_DATA_FORMAT_RESERVED_89', - 'IMG_DATA_FORMAT_RESERVED_90', 'IMG_DATA_FORMAT_RESERVED_91', - 'IMG_DATA_FORMAT_RESERVED_92', 'IMG_DATA_FORMAT_RESERVED_93', - 'IMG_DATA_FORMAT_RESERVED_94', 'IMG_DATA_FORMAT_RESERVED_95', - 'IMG_DATA_FORMAT_RESERVED_96', 'IMG_DATA_FORMAT_RESERVED_97', - 'IMG_DATA_FORMAT_RESERVED_98', 'IMG_DATA_FORMAT_RESERVED_99', - 'IMG_DATA_FORMAT_X24_8_32', 'IMG_FMT', 'IMG_FMT_10_10_10_2_SINT', - 'IMG_FMT_10_10_10_2_SNORM', 'IMG_FMT_10_10_10_2_SSCALED', - 'IMG_FMT_10_10_10_2_UINT', 'IMG_FMT_10_10_10_2_UNORM', - 'IMG_FMT_10_10_10_2_USCALED', 'IMG_FMT_10_11_11_FLOAT', - 'IMG_FMT_10_11_11_SINT', 'IMG_FMT_10_11_11_SNORM', - 'IMG_FMT_10_11_11_SSCALED', 'IMG_FMT_10_11_11_UINT', - 'IMG_FMT_10_11_11_UNORM', 'IMG_FMT_10_11_11_USCALED', - 'IMG_FMT_11_11_10_FLOAT', 'IMG_FMT_11_11_10_SINT', - 'IMG_FMT_11_11_10_SNORM', 'IMG_FMT_11_11_10_SSCALED', - 'IMG_FMT_11_11_10_UINT', 'IMG_FMT_11_11_10_UNORM', - 'IMG_FMT_11_11_10_USCALED', 'IMG_FMT_16_16_16_16_FLOAT', - 'IMG_FMT_16_16_16_16_SINT', 'IMG_FMT_16_16_16_16_SNORM', - 'IMG_FMT_16_16_16_16_SSCALED', 'IMG_FMT_16_16_16_16_UINT', - 'IMG_FMT_16_16_16_16_UNORM', 'IMG_FMT_16_16_16_16_USCALED', - 'IMG_FMT_16_16_FLOAT', 'IMG_FMT_16_16_SINT', - 'IMG_FMT_16_16_SNORM', 'IMG_FMT_16_16_SSCALED', - 'IMG_FMT_16_16_UINT', 'IMG_FMT_16_16_UNORM', - 'IMG_FMT_16_16_USCALED', 'IMG_FMT_16_FLOAT', 'IMG_FMT_16_SINT', - 'IMG_FMT_16_SNORM', 'IMG_FMT_16_SSCALED', 'IMG_FMT_16_UINT', - 'IMG_FMT_16_UNORM', 'IMG_FMT_16_USCALED', 'IMG_FMT_1_5_5_5_UNORM', - 'IMG_FMT_1_REVERSED_UNORM', 'IMG_FMT_1_UNORM', - 'IMG_FMT_24_8_UINT', 'IMG_FMT_24_8_UNORM', - 'IMG_FMT_2_10_10_10_SINT', 'IMG_FMT_2_10_10_10_SNORM', - 'IMG_FMT_2_10_10_10_SSCALED', 'IMG_FMT_2_10_10_10_UINT', - 'IMG_FMT_2_10_10_10_UNORM', 'IMG_FMT_2_10_10_10_USCALED', - 'IMG_FMT_32_32_32_32_FLOAT', 'IMG_FMT_32_32_32_32_SINT', - 'IMG_FMT_32_32_32_32_UINT', 'IMG_FMT_32_32_32_FLOAT', - 'IMG_FMT_32_32_32_SINT', 'IMG_FMT_32_32_32_UINT', - 'IMG_FMT_32_32_FLOAT', 'IMG_FMT_32_32_SINT', 'IMG_FMT_32_32_UINT', - 'IMG_FMT_32_FLOAT', 'IMG_FMT_32_FLOAT_CLAMP', 'IMG_FMT_32_SINT', - 'IMG_FMT_32_UINT', 'IMG_FMT_4_4_4_4_UNORM', 'IMG_FMT_4_4_UNORM', - 'IMG_FMT_5_5_5_1_UNORM', 'IMG_FMT_5_6_5_UNORM', - 'IMG_FMT_5_9_9_9_FLOAT', 'IMG_FMT_6E4_FLOAT', 'IMG_FMT_8_24_UINT', - 'IMG_FMT_8_24_UNORM', 'IMG_FMT_8_8_8_8_SINT', - 'IMG_FMT_8_8_8_8_SNORM', 'IMG_FMT_8_8_8_8_SRGB', - 'IMG_FMT_8_8_8_8_SSCALED', 'IMG_FMT_8_8_8_8_UINT', - 'IMG_FMT_8_8_8_8_UNORM', 'IMG_FMT_8_8_8_8_USCALED', - 'IMG_FMT_8_8_SINT', 'IMG_FMT_8_8_SNORM', 'IMG_FMT_8_8_SRGB', - 'IMG_FMT_8_8_SSCALED', 'IMG_FMT_8_8_UINT', 'IMG_FMT_8_8_UNORM', - 'IMG_FMT_8_8_USCALED', 'IMG_FMT_8_SINT', 'IMG_FMT_8_SNORM', - 'IMG_FMT_8_SRGB', 'IMG_FMT_8_SSCALED', 'IMG_FMT_8_UINT', - 'IMG_FMT_8_UNORM', 'IMG_FMT_8_USCALED', 'IMG_FMT_BC1_SRGB', - 'IMG_FMT_BC1_UNORM', 'IMG_FMT_BC2_SRGB', 'IMG_FMT_BC2_UNORM', - 'IMG_FMT_BC3_SRGB', 'IMG_FMT_BC3_UNORM', 'IMG_FMT_BC4_SNORM', - 'IMG_FMT_BC4_UNORM', 'IMG_FMT_BC5_SNORM', 'IMG_FMT_BC5_UNORM', - 'IMG_FMT_BC6_SFLOAT', 'IMG_FMT_BC6_UFLOAT', 'IMG_FMT_BC7_SRGB', - 'IMG_FMT_BC7_UNORM', 'IMG_FMT_BG_RG_SNORM', 'IMG_FMT_BG_RG_SRGB', - 'IMG_FMT_BG_RG_UINT', 'IMG_FMT_BG_RG_UNORM', - 'IMG_FMT_FMASK16_S16_F1', 'IMG_FMT_FMASK16_S8_F2', - 'IMG_FMT_FMASK32_S16_F2', 'IMG_FMT_FMASK32_S8_F4', - 'IMG_FMT_FMASK32_S8_F8', 'IMG_FMT_FMASK64_S16_F4', - 'IMG_FMT_FMASK64_S16_F8', 'IMG_FMT_FMASK8_S2_F1', - 'IMG_FMT_FMASK8_S2_F2', 'IMG_FMT_FMASK8_S4_F1', - 'IMG_FMT_FMASK8_S4_F2', 'IMG_FMT_FMASK8_S4_F4', - 'IMG_FMT_FMASK8_S8_F1', 'IMG_FMT_GB_GR_SNORM', - 'IMG_FMT_GB_GR_SRGB', 'IMG_FMT_GB_GR_UINT', 'IMG_FMT_GB_GR_UNORM', - 'IMG_FMT_INVALID', 'IMG_FMT_MM_10_11_11_UINT', - 'IMG_FMT_MM_10_11_11_UNORM', 'IMG_FMT_MM_10_IN_16_16_16_16_UINT', - 'IMG_FMT_MM_10_IN_16_16_16_16_UNORM', - 'IMG_FMT_MM_10_IN_16_16_UINT', 'IMG_FMT_MM_10_IN_16_16_UNORM', - 'IMG_FMT_MM_10_IN_16_UINT', 'IMG_FMT_MM_10_IN_16_UNORM', - 'IMG_FMT_MM_16_16_16_16_UINT', 'IMG_FMT_MM_16_16_16_16_UNORM', - 'IMG_FMT_MM_2_10_10_10_UINT', 'IMG_FMT_MM_2_10_10_10_UNORM', - 'IMG_FMT_MM_8_8_8_8_UINT', 'IMG_FMT_MM_8_8_8_8_UNORM', - 'IMG_FMT_MM_8_8_UINT', 'IMG_FMT_MM_8_8_UNORM', - 'IMG_FMT_MM_8_UINT', 'IMG_FMT_MM_8_UNORM', - 'IMG_FMT_MM_VYUY8_UINT', 'IMG_FMT_MM_VYUY8_UNORM', - 'IMG_FMT_RESERVED_100', 'IMG_FMT_RESERVED_101', - 'IMG_FMT_RESERVED_102', 'IMG_FMT_RESERVED_103', - 'IMG_FMT_RESERVED_104', 'IMG_FMT_RESERVED_105', - 'IMG_FMT_RESERVED_106', 'IMG_FMT_RESERVED_107', - 'IMG_FMT_RESERVED_108', 'IMG_FMT_RESERVED_109', - 'IMG_FMT_RESERVED_110', 'IMG_FMT_RESERVED_111', - 'IMG_FMT_RESERVED_112', 'IMG_FMT_RESERVED_113', - 'IMG_FMT_RESERVED_114', 'IMG_FMT_RESERVED_115', - 'IMG_FMT_RESERVED_116', 'IMG_FMT_RESERVED_117', - 'IMG_FMT_RESERVED_118', 'IMG_FMT_RESERVED_119', - 'IMG_FMT_RESERVED_120', 'IMG_FMT_RESERVED_121', - 'IMG_FMT_RESERVED_122', 'IMG_FMT_RESERVED_123', - 'IMG_FMT_RESERVED_124', 'IMG_FMT_RESERVED_125', - 'IMG_FMT_RESERVED_126', 'IMG_FMT_RESERVED_127', - 'IMG_FMT_RESERVED_155', 'IMG_FMT_RESERVED_285', - 'IMG_FMT_RESERVED_286', 'IMG_FMT_RESERVED_287', - 'IMG_FMT_RESERVED_288', 'IMG_FMT_RESERVED_289', - 'IMG_FMT_RESERVED_290', 'IMG_FMT_RESERVED_291', - 'IMG_FMT_RESERVED_292', 'IMG_FMT_RESERVED_293', - 'IMG_FMT_RESERVED_294', 'IMG_FMT_RESERVED_295', - 'IMG_FMT_RESERVED_296', 'IMG_FMT_RESERVED_297', - 'IMG_FMT_RESERVED_298', 'IMG_FMT_RESERVED_299', - 'IMG_FMT_RESERVED_300', 'IMG_FMT_RESERVED_301', - 'IMG_FMT_RESERVED_302', 'IMG_FMT_RESERVED_303', - 'IMG_FMT_RESERVED_304', 'IMG_FMT_RESERVED_305', - 'IMG_FMT_RESERVED_306', 'IMG_FMT_RESERVED_307', - 'IMG_FMT_RESERVED_308', 'IMG_FMT_RESERVED_309', - 'IMG_FMT_RESERVED_310', 'IMG_FMT_RESERVED_311', - 'IMG_FMT_RESERVED_312', 'IMG_FMT_RESERVED_313', - 'IMG_FMT_RESERVED_314', 'IMG_FMT_RESERVED_315', - 'IMG_FMT_RESERVED_316', 'IMG_FMT_RESERVED_317', - 'IMG_FMT_RESERVED_318', 'IMG_FMT_RESERVED_319', - 'IMG_FMT_RESERVED_320', 'IMG_FMT_RESERVED_321', - 'IMG_FMT_RESERVED_322', 'IMG_FMT_RESERVED_323', - 'IMG_FMT_RESERVED_324', 'IMG_FMT_RESERVED_325', - 'IMG_FMT_RESERVED_326', 'IMG_FMT_RESERVED_327', - 'IMG_FMT_RESERVED_328', 'IMG_FMT_RESERVED_329', - 'IMG_FMT_RESERVED_330', 'IMG_FMT_RESERVED_331', - 'IMG_FMT_RESERVED_332', 'IMG_FMT_RESERVED_333', - 'IMG_FMT_RESERVED_334', 'IMG_FMT_RESERVED_335', - 'IMG_FMT_RESERVED_336', 'IMG_FMT_RESERVED_337', - 'IMG_FMT_RESERVED_338', 'IMG_FMT_RESERVED_339', - 'IMG_FMT_RESERVED_340', 'IMG_FMT_RESERVED_341', - 'IMG_FMT_RESERVED_342', 'IMG_FMT_RESERVED_343', - 'IMG_FMT_RESERVED_344', 'IMG_FMT_RESERVED_345', - 'IMG_FMT_RESERVED_346', 'IMG_FMT_RESERVED_347', - 'IMG_FMT_RESERVED_348', 'IMG_FMT_RESERVED_349', - 'IMG_FMT_RESERVED_350', 'IMG_FMT_RESERVED_351', - 'IMG_FMT_RESERVED_352', 'IMG_FMT_RESERVED_353', - 'IMG_FMT_RESERVED_354', 'IMG_FMT_RESERVED_355', - 'IMG_FMT_RESERVED_356', 'IMG_FMT_RESERVED_357', - 'IMG_FMT_RESERVED_358', 'IMG_FMT_RESERVED_359', - 'IMG_FMT_RESERVED_360', 'IMG_FMT_RESERVED_361', - 'IMG_FMT_RESERVED_362', 'IMG_FMT_RESERVED_363', - 'IMG_FMT_RESERVED_364', 'IMG_FMT_RESERVED_365', - 'IMG_FMT_RESERVED_366', 'IMG_FMT_RESERVED_367', - 'IMG_FMT_RESERVED_368', 'IMG_FMT_RESERVED_369', - 'IMG_FMT_RESERVED_370', 'IMG_FMT_RESERVED_371', - 'IMG_FMT_RESERVED_372', 'IMG_FMT_RESERVED_373', - 'IMG_FMT_RESERVED_374', 'IMG_FMT_RESERVED_375', - 'IMG_FMT_RESERVED_376', 'IMG_FMT_RESERVED_377', - 'IMG_FMT_RESERVED_378', 'IMG_FMT_RESERVED_379', - 'IMG_FMT_RESERVED_380', 'IMG_FMT_RESERVED_381', - 'IMG_FMT_RESERVED_382', 'IMG_FMT_RESERVED_383', - 'IMG_FMT_RESERVED_384', 'IMG_FMT_RESERVED_385', - 'IMG_FMT_RESERVED_386', 'IMG_FMT_RESERVED_387', - 'IMG_FMT_RESERVED_388', 'IMG_FMT_RESERVED_389', - 'IMG_FMT_RESERVED_390', 'IMG_FMT_RESERVED_391', - 'IMG_FMT_RESERVED_392', 'IMG_FMT_RESERVED_393', - 'IMG_FMT_RESERVED_394', 'IMG_FMT_RESERVED_395', - 'IMG_FMT_RESERVED_396', 'IMG_FMT_RESERVED_397', - 'IMG_FMT_RESERVED_398', 'IMG_FMT_RESERVED_399', - 'IMG_FMT_RESERVED_400', 'IMG_FMT_RESERVED_401', - 'IMG_FMT_RESERVED_402', 'IMG_FMT_RESERVED_403', - 'IMG_FMT_RESERVED_404', 'IMG_FMT_RESERVED_405', - 'IMG_FMT_RESERVED_406', 'IMG_FMT_RESERVED_407', - 'IMG_FMT_RESERVED_408', 'IMG_FMT_RESERVED_409', - 'IMG_FMT_RESERVED_410', 'IMG_FMT_RESERVED_411', - 'IMG_FMT_RESERVED_412', 'IMG_FMT_RESERVED_413', - 'IMG_FMT_RESERVED_414', 'IMG_FMT_RESERVED_415', - 'IMG_FMT_RESERVED_416', 'IMG_FMT_RESERVED_417', - 'IMG_FMT_RESERVED_418', 'IMG_FMT_RESERVED_419', - 'IMG_FMT_RESERVED_420', 'IMG_FMT_RESERVED_421', - 'IMG_FMT_RESERVED_422', 'IMG_FMT_RESERVED_423', - 'IMG_FMT_RESERVED_424', 'IMG_FMT_RESERVED_425', - 'IMG_FMT_RESERVED_426', 'IMG_FMT_RESERVED_427', - 'IMG_FMT_RESERVED_428', 'IMG_FMT_RESERVED_429', - 'IMG_FMT_RESERVED_430', 'IMG_FMT_RESERVED_431', - 'IMG_FMT_RESERVED_432', 'IMG_FMT_RESERVED_433', - 'IMG_FMT_RESERVED_434', 'IMG_FMT_RESERVED_435', - 'IMG_FMT_RESERVED_436', 'IMG_FMT_RESERVED_437', - 'IMG_FMT_RESERVED_438', 'IMG_FMT_RESERVED_439', - 'IMG_FMT_RESERVED_440', 'IMG_FMT_RESERVED_441', - 'IMG_FMT_RESERVED_442', 'IMG_FMT_RESERVED_443', - 'IMG_FMT_RESERVED_444', 'IMG_FMT_RESERVED_445', - 'IMG_FMT_RESERVED_446', 'IMG_FMT_RESERVED_447', - 'IMG_FMT_RESERVED_448', 'IMG_FMT_RESERVED_449', - 'IMG_FMT_RESERVED_450', 'IMG_FMT_RESERVED_451', - 'IMG_FMT_RESERVED_452', 'IMG_FMT_RESERVED_453', - 'IMG_FMT_RESERVED_454', 'IMG_FMT_RESERVED_455', - 'IMG_FMT_RESERVED_456', 'IMG_FMT_RESERVED_457', - 'IMG_FMT_RESERVED_458', 'IMG_FMT_RESERVED_459', - 'IMG_FMT_RESERVED_460', 'IMG_FMT_RESERVED_461', - 'IMG_FMT_RESERVED_462', 'IMG_FMT_RESERVED_463', - 'IMG_FMT_RESERVED_464', 'IMG_FMT_RESERVED_465', - 'IMG_FMT_RESERVED_466', 'IMG_FMT_RESERVED_467', - 'IMG_FMT_RESERVED_468', 'IMG_FMT_RESERVED_469', - 'IMG_FMT_RESERVED_470', 'IMG_FMT_RESERVED_471', - 'IMG_FMT_RESERVED_472', 'IMG_FMT_RESERVED_473', - 'IMG_FMT_RESERVED_474', 'IMG_FMT_RESERVED_475', - 'IMG_FMT_RESERVED_476', 'IMG_FMT_RESERVED_477', - 'IMG_FMT_RESERVED_478', 'IMG_FMT_RESERVED_479', - 'IMG_FMT_RESERVED_480', 'IMG_FMT_RESERVED_481', - 'IMG_FMT_RESERVED_482', 'IMG_FMT_RESERVED_483', - 'IMG_FMT_RESERVED_484', 'IMG_FMT_RESERVED_485', - 'IMG_FMT_RESERVED_486', 'IMG_FMT_RESERVED_487', - 'IMG_FMT_RESERVED_488', 'IMG_FMT_RESERVED_489', - 'IMG_FMT_RESERVED_490', 'IMG_FMT_RESERVED_491', - 'IMG_FMT_RESERVED_492', 'IMG_FMT_RESERVED_493', - 'IMG_FMT_RESERVED_494', 'IMG_FMT_RESERVED_495', - 'IMG_FMT_RESERVED_496', 'IMG_FMT_RESERVED_497', - 'IMG_FMT_RESERVED_498', 'IMG_FMT_RESERVED_499', - 'IMG_FMT_RESERVED_500', 'IMG_FMT_RESERVED_501', - 'IMG_FMT_RESERVED_502', 'IMG_FMT_RESERVED_503', - 'IMG_FMT_RESERVED_504', 'IMG_FMT_RESERVED_505', - 'IMG_FMT_RESERVED_506', 'IMG_FMT_RESERVED_507', - 'IMG_FMT_RESERVED_508', 'IMG_FMT_RESERVED_509', - 'IMG_FMT_RESERVED_510', 'IMG_FMT_RESERVED_511', - 'IMG_FMT_RESERVED_78', 'IMG_FMT_RESERVED_79', - 'IMG_FMT_RESERVED_80', 'IMG_FMT_RESERVED_81', - 'IMG_FMT_RESERVED_82', 'IMG_FMT_RESERVED_83', - 'IMG_FMT_RESERVED_84', 'IMG_FMT_RESERVED_85', - 'IMG_FMT_RESERVED_86', 'IMG_FMT_RESERVED_87', - 'IMG_FMT_RESERVED_88', 'IMG_FMT_RESERVED_89', - 'IMG_FMT_RESERVED_90', 'IMG_FMT_RESERVED_91', - 'IMG_FMT_RESERVED_92', 'IMG_FMT_RESERVED_93', - 'IMG_FMT_RESERVED_94', 'IMG_FMT_RESERVED_95', - 'IMG_FMT_RESERVED_96', 'IMG_FMT_RESERVED_97', - 'IMG_FMT_RESERVED_98', 'IMG_FMT_RESERVED_99', - 'IMG_FMT_X24_8_32_FLOAT', 'IMG_FMT_X24_8_32_UINT', - 'IMG_NUM_FORMAT', 'IMG_NUM_FORMAT_FLOAT', 'IMG_NUM_FORMAT_FMASK', - 'IMG_NUM_FORMAT_FMASK_16_16_1', 'IMG_NUM_FORMAT_FMASK_16_8_2', - 'IMG_NUM_FORMAT_FMASK_32_16_2', 'IMG_NUM_FORMAT_FMASK_32_8_4', - 'IMG_NUM_FORMAT_FMASK_32_8_8', 'IMG_NUM_FORMAT_FMASK_64_16_4', - 'IMG_NUM_FORMAT_FMASK_64_16_8', 'IMG_NUM_FORMAT_FMASK_8_2_1', - 'IMG_NUM_FORMAT_FMASK_8_2_2', 'IMG_NUM_FORMAT_FMASK_8_4_1', - 'IMG_NUM_FORMAT_FMASK_8_4_2', 'IMG_NUM_FORMAT_FMASK_8_4_4', - 'IMG_NUM_FORMAT_FMASK_8_8_1', 'IMG_NUM_FORMAT_FMASK_RESERVED_13', - 'IMG_NUM_FORMAT_FMASK_RESERVED_14', - 'IMG_NUM_FORMAT_FMASK_RESERVED_15', 'IMG_NUM_FORMAT_N_IN_16', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_0', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_10', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_11', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_12', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_13', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_14', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_15', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_3', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_6', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_9', - 'IMG_NUM_FORMAT_N_IN_16_UINT_10', 'IMG_NUM_FORMAT_N_IN_16_UINT_9', - 'IMG_NUM_FORMAT_N_IN_16_UNORM_10', - 'IMG_NUM_FORMAT_N_IN_16_UNORM_9', - 'IMG_NUM_FORMAT_N_IN_16_UNORM_UINT_10', - 'IMG_NUM_FORMAT_N_IN_16_UNORM_UINT_9', - 'IMG_NUM_FORMAT_RESERVED_14', 'IMG_NUM_FORMAT_RESERVED_15', - 'IMG_NUM_FORMAT_RESERVED_8', 'IMG_NUM_FORMAT_SINT', - 'IMG_NUM_FORMAT_SNORM', 'IMG_NUM_FORMAT_SNORM_NZ', - 'IMG_NUM_FORMAT_SRGB', 'IMG_NUM_FORMAT_SSCALED', - 'IMG_NUM_FORMAT_UBINT', 'IMG_NUM_FORMAT_UBNORM', - 'IMG_NUM_FORMAT_UBNORM_NZ', 'IMG_NUM_FORMAT_UBSCALED', - 'IMG_NUM_FORMAT_UINT', 'IMG_NUM_FORMAT_UNORM', - 'IMG_NUM_FORMAT_USCALED', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_IS_BUSY', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_NOT_BUSY', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_IMMEDIATE_RESPONSE_VALID', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_NO_IMMEDIATE_RESPONSE_VALID', - 'INPUT_COVERAGE', 'INPUT_DEPTH_COVERAGE', 'INPUT_INNER_COVERAGE', - 'INST_ID_ECC_INTERRUPT_MSG', 'INST_ID_HOST_REG_TRAP_MSG', - 'INST_ID_HW_TRAP', 'INST_ID_KILL_SEQ', 'INST_ID_PRIV_START', - 'INST_ID_SPI_WREXEC', 'INST_ID_TTRACE_NEW_PC_MSG', - 'INTERRUPT_LINE_ASSERTED', 'INTERRUPT_LINE_NOT_ASSERTED', - 'INT_DISABLED', 'INT_ENABLED', 'INT_LEVEL', 'INT_MASK', - 'INT_PULSE', 'INVALID_REG_ACCESS_TYPE', 'IP_USB_PD_REVISION_ID', - 'IQ_DEQUEUE_RETRY', 'IQ_INTR_TYPE_IB', 'IQ_INTR_TYPE_MQD', - 'IQ_INTR_TYPE_PQ', 'IQ_OFFLOAD_RETRY', 'IQ_QUEUE_SLEEP', - 'IQ_SCH_WAVE_MSG', 'IQ_SEM_REARM', 'JITTER_REMOVE_DISABLE', - 'LATE_Z', 'LB_ALPHA_DISABLE', 'LB_ALPHA_EN', 'LB_ALPHA_ENABLE', - 'LB_INTERLEAVE_DISABLE', 'LB_INTERLEAVE_EN', - 'LB_INTERLEAVE_ENABLE', 'LEFT_EYE', 'LEGACY_NUM_BANKS', - 'LEGACY_PIPE_INTERLEAVE', 'LEGACY_PIPE_INTERLEAVE_256B', - 'LEGACY_PIPE_INTERLEAVE_512B', 'LINESTRIP', 'LS_STAGE_OFF', - 'LS_STAGE_ON', 'LUT_2CFG_MEMORY_A', 'LUT_2CFG_MEMORY_B', - 'LUT_2CFG_NO_MEMORY', 'LUT_2_MODE_BYPASS', 'LUT_2_MODE_RAMA_LUT', - 'LUT_2_MODE_RAMB_LUT', 'LUT_4CFG_MEMORY_A', 'LUT_4CFG_MEMORY_B', - 'LUT_4CFG_NO_MEMORY', 'LUT_4CFG_ROM_A', 'LUT_4CFG_ROM_B', - 'LUT_4_MODE_BYPASS', 'LUT_4_MODE_RAMA_LUT', 'LUT_4_MODE_RAMB_LUT', - 'LUT_4_MODE_ROMA_LUT', 'LUT_4_MODE_ROMB_LUT', - 'LVTMA_RANDOM_PATTERN_SEED_ALL_PIXELS', - 'LVTMA_RANDOM_PATTERN_SEED_ONLY_DE_HIGH', - 'LVTMA_RANDOM_PATTERN_SEED_RAN_PAT', 'MACRO_TILE_ASPECT', - 'MASTER_UPDATE_LOCK_DB_FIELD_BOTH', - 'MASTER_UPDATE_LOCK_DB_FIELD_RESERVED', - 'MASTER_UPDATE_LOCK_DB_FIELD_TOP', - 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_BOTH', - 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_LEFT', - 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_RESERVED', - 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_RIGHT', - 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK', - 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_FALSE', - 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_TRUE', - 'MASTER_UPDATE_LOCK_SEL', 'MASTER_UPDATE_LOCK_SEL_0', - 'MASTER_UPDATE_LOCK_SEL_1', 'MASTER_UPDATE_LOCK_SEL_2', - 'MASTER_UPDATE_LOCK_SEL_3', 'MASTER_UPDATE_LOCK_SEL_4', - 'MASTER_UPDATE_LOCK_SEL_5', - 'MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK', - 'MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK_FALSE', - 'MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK_TRUE', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTH', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTTOM', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_RESERVED', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_TOP', - 'MAX_COMPRESSED_FRAGS', 'MEM_ARB_MODE_AGE', 'MEM_ARB_MODE_BOTH', - 'MEM_ARB_MODE_FIXED', 'MEM_ARB_MODE_WEIGHT', 'MEM_PWR_DIS_CTRL', - 'MEM_PWR_FORCE_CTRL', 'MEM_PWR_FORCE_CTRL2', 'MEM_PWR_SEL_CTRL', - 'MEM_PWR_SEL_CTRL2', 'METADATA_HUBP_SEL', 'METADATA_HUBP_SEL_0', - 'METADATA_HUBP_SEL_1', 'METADATA_HUBP_SEL_2', - 'METADATA_HUBP_SEL_3', 'METADATA_HUBP_SEL_4', - 'METADATA_HUBP_SEL_5', 'METADATA_HUBP_SEL_RESERVED', - 'METADATA_STREAM_DP', 'METADATA_STREAM_DVE', - 'METADATA_STREAM_TYPE_SEL', 'META_CHUNK_SIZE', - 'META_CHUNK_SIZE_1KB', 'META_CHUNK_SIZE_2KB', - 'META_CHUNK_SIZE_4KB', 'META_CHUNK_SIZE_8KB', 'META_LINEAR', - 'META_SURF_LINEAR', 'META_SURF_TILED', 'ME_ID0', 'ME_ID1', - 'ME_ID2', 'ME_ID3', 'MICROSECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK', - 'MICROSECOND_TIME_BASE_CLOCK_IS_XTALIN', - 'MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL', - 'MICRO_TILE_MODE_DISPLAY_2D', 'MICRO_TILE_MODE_DISPLAY_3D', - 'MICRO_TILE_MODE_LINEAR', 'MICRO_TILE_MODE_NEW', - 'MICRO_TILE_MODE_RENDER_TARGET', 'MICRO_TILE_MODE_STD_2D', - 'MICRO_TILE_MODE_STD_3D', 'MICRO_TILE_MODE_Z', - 'MILLISECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK', - 'MILLISECOND_TIME_BASE_CLOCK_IS_XTALIN', - 'MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL', 'MIN_CHUNK_SIZE', - 'MIN_CHUNK_SIZE_1024B', 'MIN_CHUNK_SIZE_256B', - 'MIN_CHUNK_SIZE_512B', 'MIN_META_CHUNK_SIZE', - 'MIN_META_CHUNK_SIZE_128B', 'MIN_META_CHUNK_SIZE_256B', - 'MIN_META_CHUNK_SIZE_64B', 'MMHUBBUB_XFC_FRAME_MODE_ENUM', - 'MMHUBBUB_XFC_FULL_FRAME_MODE', 'MMHUBBUB_XFC_PARTIAL_FRAME_MODE', - 'MMHUBBUB_XFC_PIXEL_FORMAT_ENUM', 'MMHUBBUB_XFC_PIXEL_IS_32BPP', - 'MMHUBBUB_XFC_PIXEL_IS_64BPP', - 'MMHUBBUB_XFC_XFCMON_INTERFACE_SEL_ENUM', - 'MMHUBBUB_XFC_XFCMON_INTERFACE_SEL_MMHUB', - 'MMHUBBUB_XFC_XFCMON_INTERFACE_SEL_SYSHUB', - 'MMHUBBUB_XFC_XFCMON_MODE_CONTINUOUS', - 'MMHUBBUB_XFC_XFCMON_MODE_ENUM', - 'MMHUBBUB_XFC_XFCMON_MODE_ONE_SHOT', - 'MMHUBBUB_XFC_XFCMON_MODE_PERIODS', 'MONO_10LSB', 'MONO_10MSB', - 'MONO_12LSB', 'MONO_12MSB', 'MONO_16', 'MONO_2BIT', 'MONO_8', - 'MPCC_BG_COLOR_BPC', 'MPCC_BG_COLOR_BPC_10bit', - 'MPCC_BG_COLOR_BPC_11bit', 'MPCC_BG_COLOR_BPC_12bit', - 'MPCC_BG_COLOR_BPC_8bit', 'MPCC_BG_COLOR_BPC_9bit', - 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY', - 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_FALSE', - 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_TRUE', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_GLOBAL_ALPHA', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_UNUSED', - 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE', - 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_FALSE', - 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_TRUE', - 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE', - 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE_0', - 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE_1', 'MPCC_CONTROL_MPCC_MODE', - 'MPCC_CONTROL_MPCC_MODE_BYPASS', - 'MPCC_CONTROL_MPCC_MODE_TOP_BOT_BLENDING', - 'MPCC_CONTROL_MPCC_MODE_TOP_LAYER_ONLY', - 'MPCC_CONTROL_MPCC_MODE_TOP_LAYER_PASSTHROUGH', - 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL', - 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMA', - 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMB', - 'MPCC_OGAM_MODE_0', 'MPCC_OGAM_MODE_1', 'MPCC_OGAM_MODE_2', - 'MPCC_OGAM_MODE_MPCC_OGAM_MODE', 'MPCC_OGAM_MODE_RSV', - 'MPCC_SM_CONTROL_MPCC_SM_EN', 'MPCC_SM_CONTROL_MPCC_SM_EN_FALSE', - 'MPCC_SM_CONTROL_MPCC_SM_EN_TRUE', - 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT', - 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_FALSE', - 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_TRUE', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_HIGH', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_LOW', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_NO_FORCE', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_RESERVED', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_HIGH', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_LOW', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_NO_FORCE', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_RESERVED', - 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT', - 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_FALSE', - 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_TRUE', - 'MPCC_SM_CONTROL_MPCC_SM_MODE', - 'MPCC_SM_CONTROL_MPCC_SM_MODE_CHECKERBOARD_SUBSAMPLING', - 'MPCC_SM_CONTROL_MPCC_SM_MODE_COLUMN_SUBSAMPLING', - 'MPCC_SM_CONTROL_MPCC_SM_MODE_ROW_SUBSAMPLING', - 'MPCC_SM_CONTROL_MPCC_SM_MODE_SINGLE_PLANE', - 'MPCC_STALL_STATUS_MPCC_STALL_INT_ACK', - 'MPCC_STALL_STATUS_MPCC_STALL_INT_ACK_FALSE', - 'MPCC_STALL_STATUS_MPCC_STALL_INT_ACK_TRUE', - 'MPCC_STALL_STATUS_MPCC_STALL_INT_MASK', - 'MPCC_STALL_STATUS_MPCC_STALL_INT_MASK_FALSE', - 'MPCC_STALL_STATUS_MPCC_STALL_INT_MASK_TRUE', - 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET', - 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_TRUE', - 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET', - 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_TRUE', - 'MPC_CFG_ADR_VUPDATE_LOCK_SET', - 'MPC_CFG_ADR_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_ADR_VUPDATE_LOCK_SET_TRUE', - 'MPC_CFG_CFG_VUPDATE_LOCK_SET', - 'MPC_CFG_CFG_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_CFG_VUPDATE_LOCK_SET_TRUE', - 'MPC_CFG_CUR_VUPDATE_LOCK_SET', - 'MPC_CFG_CUR_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_CUR_VUPDATE_LOCK_SET_TRUE', 'MPC_CFG_MPC_TEST_CLK_SEL', - 'MPC_CFG_MPC_TEST_CLK_SEL_0', 'MPC_CFG_MPC_TEST_CLK_SEL_1', - 'MPC_CFG_MPC_TEST_CLK_SEL_2', 'MPC_CFG_MPC_TEST_CLK_SEL_3', - 'MPC_CRC_CALC_INTERLACE_MODE', 'MPC_CRC_CALC_MODE', - 'MPC_CRC_CALC_STEREO_MODE', 'MPC_CRC_CONTINUOUS_MODE', - 'MPC_CRC_INTERLACE_MODE_BOTH_RESET_BOTTOM', - 'MPC_CRC_INTERLACE_MODE_BOTH_RESET_EACH', - 'MPC_CRC_INTERLACE_MODE_BOTTOM', 'MPC_CRC_INTERLACE_MODE_TOP', - 'MPC_CRC_ONE_SHOT_MODE', 'MPC_CRC_SOURCE_SELECT', - 'MPC_CRC_SOURCE_SEL_DPP', 'MPC_CRC_SOURCE_SEL_DWB', - 'MPC_CRC_SOURCE_SEL_OPP', 'MPC_CRC_SOURCE_SEL_OTHER', - 'MPC_CRC_STEREO_MODE_BOTH_RESET_EACH', - 'MPC_CRC_STEREO_MODE_BOTH_RESET_RIGHT', - 'MPC_CRC_STEREO_MODE_LEFT', 'MPC_CRC_STEREO_MODE_RIGHT', - 'MPC_OCSC_COEF_FORMAT', 'MPC_OCSC_COEF_FORMAT_S2_13', - 'MPC_OCSC_COEF_FORMAT_S3_12', 'MPC_OUT_CSC_MODE', - 'MPC_OUT_CSC_MODE_0', 'MPC_OUT_CSC_MODE_1', 'MPC_OUT_CSC_MODE_2', - 'MPC_OUT_CSC_MODE_RSV', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_10BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_11BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_12BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_6BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_8BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_9BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_BYPASS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_MODE', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_PASSTHROUGH', - 'MPC_OUT_RATE_CONTROL_DISABLE_SET', - 'MPC_OUT_RATE_CONTROL_SET_DISABLE', - 'MPC_OUT_RATE_CONTROL_SET_ENABLE', 'MPTE_GROUP_SIZE', - 'MPTE_GROUP_SIZE_1024B', 'MPTE_GROUP_SIZE_128B', - 'MPTE_GROUP_SIZE_2048B', 'MPTE_GROUP_SIZE_256B', - 'MPTE_GROUP_SIZE_4096B', 'MPTE_GROUP_SIZE_512B', - 'MPTE_GROUP_SIZE_64B', 'MPTE_GROUP_SIZE_8192B', - 'MSA_V_TIMING_OVERRIDE_DISABLED', 'MSA_V_TIMING_OVERRIDE_ENABLED', - 'MTYPE', 'MTYPE_CC', 'MTYPE_C_RO_S', 'MTYPE_C_RO_US', - 'MTYPE_C_RW_S', 'MTYPE_C_RW_US', 'MTYPE_NC', 'MTYPE_RESERVED_1', - 'MTYPE_RESERVED_5', 'MTYPE_RESERVED_7', 'MTYPE_UC', 'MTYPE_WC', - 'MULT_16', 'MULT_8', 'MacroTileAspect', 'MemArbMode', - 'MicroTileMode', 'MultiGPUTileSize', 'NON_BYPASS', 'NOT_SENT', - 'NO_DIST', 'NO_DIV', 'NO_FORCE', 'NO_FORCE_REQ', - 'NO_FORCE_REQUEST', 'NO_MIN_CHUNK_SIZE', 'NO_MIN_META_CHUNK_SIZE', - 'NO_OUTSTANDING_REQ', 'NUMBER_FLOAT', 'NUMBER_SINT', - 'NUMBER_SNORM', 'NUMBER_SRGB', 'NUMBER_SSCALED', 'NUMBER_UINT', - 'NUMBER_UNORM', 'NUMBER_USCALED', 'NUM_BANKS', - 'NUM_BANKS_BC_ENUM', 'NUM_PIPES', 'NUM_PIPES_BC_ENUM', - 'NUM_RB_PER_SE', 'NUM_SE', 'NUM_SIMD_PER_CU', - 'NonDispTilingOrder', 'NumBanks', 'NumBanksConfig', 'NumGPUs', - 'NumLowerPipes', 'NumMaxCompressedFragments', 'NumPipes', - 'NumRbPerShaderEngine', 'NumShaderEngines', 'OBUF_BYPASS_DIS', - 'OBUF_BYPASS_EN', 'OBUF_BYPASS_SEL', 'OBUF_FULL', - 'OBUF_FULL_RECOUT', 'OBUF_HALF_RECOUT', - 'OBUF_IS_HALF_RECOUT_WIDTH_SEL', 'OBUF_RECOUT', - 'OBUF_USE_FULL_BUFFER_SEL', 'OFFCHIP_HS_DEALLOC', 'OFF_SEQ', - 'ONE_BANK', 'ONE_FRAGMENT', 'ONE_PIPE', 'ONE_RB_PER_SE', - 'ONE_SHADER_ENGIN', 'ON_SEQ', 'OPP_PIPE_CLOCK_DISABLE', - 'OPP_PIPE_CLOCK_ENABLE', 'OPP_PIPE_CLOCK_ENABLE_CONTROL', - 'OPP_PIPE_CRC_CONT_EN', 'OPP_PIPE_CRC_DISABLE', 'OPP_PIPE_CRC_EN', - 'OPP_PIPE_CRC_ENABLE', 'OPP_PIPE_CRC_INTERLACE_EN', - 'OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_INTERLACED', - 'OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_PROGRESSIVE', - 'OPP_PIPE_CRC_INTERLACE_MODE', - 'OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_BOTTOM_FIELD', - 'OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_EACH_FIELD', - 'OPP_PIPE_CRC_INTERLACE_MODE_BOTTOM', - 'OPP_PIPE_CRC_INTERLACE_MODE_TOP', 'OPP_PIPE_CRC_MODE_CONTINUOUS', - 'OPP_PIPE_CRC_MODE_ONE_SHOT', 'OPP_PIPE_CRC_ONE_SHOT_PENDING', - 'OPP_PIPE_CRC_ONE_SHOT_PENDING_NOT_PENDING', - 'OPP_PIPE_CRC_ONE_SHOT_PENDING_PENDING', - 'OPP_PIPE_CRC_PIXEL_SELECT', - 'OPP_PIPE_CRC_PIXEL_SELECT_ALL_PIXELS', - 'OPP_PIPE_CRC_PIXEL_SELECT_EVEN_PIXELS', - 'OPP_PIPE_CRC_PIXEL_SELECT_ODD_PIXELS', - 'OPP_PIPE_CRC_PIXEL_SELECT_RESERVED', - 'OPP_PIPE_CRC_SOURCE_SELECT', 'OPP_PIPE_CRC_SOURCE_SELECT_FMT', - 'OPP_PIPE_CRC_SOURCE_SELECT_SFT', 'OPP_PIPE_CRC_STEREO_EN', - 'OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_NON_STEREO', - 'OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_STEREO', - 'OPP_PIPE_CRC_STEREO_MODE', - 'OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_EACH_EYE', - 'OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_RIGHT_EYE', - 'OPP_PIPE_CRC_STEREO_MODE_LEFT', 'OPP_PIPE_CRC_STEREO_MODE_RIGHT', - 'OPP_PIPE_DIGTIAL_BYPASS_CONTROL', - 'OPP_PIPE_DIGTIAL_BYPASS_DISABLE', - 'OPP_PIPE_DIGTIAL_BYPASS_ENABLE', 'OPP_TEST_CLK_SEL_CONTROL', - 'OPP_TEST_CLK_SEL_DISPCLK_ABM0', 'OPP_TEST_CLK_SEL_DISPCLK_OPP0', - 'OPP_TEST_CLK_SEL_DISPCLK_OPP1', 'OPP_TEST_CLK_SEL_DISPCLK_OPP2', - 'OPP_TEST_CLK_SEL_DISPCLK_OPP3', 'OPP_TEST_CLK_SEL_DISPCLK_OPP4', - 'OPP_TEST_CLK_SEL_DISPCLK_OPP5', 'OPP_TEST_CLK_SEL_DISPCLK_P', - 'OPP_TEST_CLK_SEL_DISPCLK_R', 'OPP_TEST_CLK_SEL_RESERVED0', - 'OPP_TOP_CLOCK_DISABLED_STATUS', 'OPP_TOP_CLOCK_ENABLED_STATUS', - 'OPP_TOP_CLOCK_ENABLE_STATUS', 'OPP_TOP_CLOCK_GATING_CONTROL', - 'OPP_TOP_CLOCK_GATING_DISABLED', 'OPP_TOP_CLOCK_GATING_ENABLED', - 'OPT_COMB_ADD', 'OPT_COMB_BLEND_DISABLED', 'OPT_COMB_MAX', - 'OPT_COMB_MIN', 'OPT_COMB_NONE', 'OPT_COMB_REVSUBTRACT', - 'OPT_COMB_SAFE_ADD', 'OPT_COMB_SUBTRACT', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_FALSE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_TRUE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_FALSE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_TRUE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_FALSE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_TRUE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_BOTH', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_INTERLACE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_PROGRASSIVE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_RESERVED', - 'OTG_ADD_PIXEL', 'OTG_ADD_PIXEL_FORCE', 'OTG_ADD_PIXEL_NOOP', - 'OTG_BLANK_CONTROL_OTG_BLANK_DATA_EN', - 'OTG_BLANK_CONTROL_OTG_BLANK_DATA_EN_FALSE', - 'OTG_BLANK_CONTROL_OTG_BLANK_DATA_EN_TRUE', - 'OTG_BLANK_CONTROL_OTG_BLANK_DE_MODE', - 'OTG_BLANK_CONTROL_OTG_BLANK_DE_MODE_FALSE', - 'OTG_BLANK_CONTROL_OTG_BLANK_DE_MODE_TRUE', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_CURRENT', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_FIRST', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_RESERVED', - 'OTG_CONTROL_OTG_DISP_READ_REQUEST_DISABLE', - 'OTG_CONTROL_OTG_DISP_READ_REQUEST_DISABLE_FALSE', - 'OTG_CONTROL_OTG_DISP_READ_REQUEST_DISABLE_TRUE', - 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL', - 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_DP', - 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_NORMAL', - 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY', - 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_FALSE', - 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_TRUE', - 'OTG_CONTROL_OTG_MASTER_EN', 'OTG_CONTROL_OTG_MASTER_EN_FALSE', - 'OTG_CONTROL_OTG_MASTER_EN_TRUE', 'OTG_CONTROL_OTG_SOF_PULL_EN', - 'OTG_CONTROL_OTG_SOF_PULL_EN_FALSE', - 'OTG_CONTROL_OTG_SOF_PULL_EN_TRUE', - 'OTG_CONTROL_OTG_START_POINT_CNTL', - 'OTG_CONTROL_OTG_START_POINT_CNTL_DP', - 'OTG_CONTROL_OTG_START_POINT_CNTL_NORMAL', - 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN', - 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_FALSE', - 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_TRUE', - 'OTG_CRC_CNTL2_OTG_CRC_DATA_FORMAT', - 'OTG_CRC_CNTL2_OTG_CRC_DATA_FORMAT_0', - 'OTG_CRC_CNTL2_OTG_CRC_DATA_FORMAT_1', - 'OTG_CRC_CNTL2_OTG_CRC_DATA_FORMAT_2', - 'OTG_CRC_CNTL2_OTG_CRC_DATA_FORMAT_3', - 'OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_COMBINE_MODE', - 'OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_COMBINE_MODE_FALSE', - 'OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_COMBINE_MODE_TRUE', - 'OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_SPLIT_MODE', - 'OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_SPLIT_MODE_1', - 'OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_SPLIT_MODE_2', - 'OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_SPLIT_MODE_3', - 'OTG_CRC_CNTL2_OTG_CRC_DATA_STREAM_SPLIT_MODE_DSIABLE', - 'OTG_CRC_CNTL2_OTG_CRC_DSC_MODE', - 'OTG_CRC_CNTL2_OTG_CRC_DSC_MODE_FALSE', - 'OTG_CRC_CNTL2_OTG_CRC_DSC_MODE_TRUE', - 'OTG_CRC_CNTL_OTG_CRC_CONT_EN', - 'OTG_CRC_CNTL_OTG_CRC_CONT_EN_FALSE', - 'OTG_CRC_CNTL_OTG_CRC_CONT_EN_TRUE', 'OTG_CRC_CNTL_OTG_CRC_EN', - 'OTG_CRC_CNTL_OTG_CRC_EN_FALSE', 'OTG_CRC_CNTL_OTG_CRC_EN_TRUE', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_BOTTOM', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_FIELD', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTTOM', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_TOP', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_EYES', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_FIELDS', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_LEFT', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_RIGHT', - 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS', - 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_FALSE', - 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_TRUE', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IAB', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IA_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_AB', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_A_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UAB', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UA_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_AB', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_A_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IAB', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IA_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_AB', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_A_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UAB', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UA_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_AB', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_A_B', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_BLANK_DATA_DOUBLE_BUFFER_EN', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_BLANK_DATA_DOUBLE_BUFFER_EN_FALSE', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_BLANK_DATA_DOUBLE_BUFFER_EN_TRUE', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_RANGE_TIMING_DBUF_UPDATE_MODE', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_RANGE_TIMING_DBUF_UPDATE_MODE_0', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_RANGE_TIMING_DBUF_UPDATE_MODE_1', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_RANGE_TIMING_DBUF_UPDATE_MODE_2', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_RANGE_TIMING_DBUF_UPDATE_MODE_3', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_FALSE', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_TRUE', - 'OTG_DROP_PIXEL', 'OTG_DROP_PIXEL_FORCE', 'OTG_DROP_PIXEL_NOOP', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_1FRAME', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_2FRAME', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_4FRAME', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_8FRAME', - 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN', - 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_FALSE', - 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_TRUE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_ENABLE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_ENABLE_CONTINUOUS', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_ENABLE_DISABLE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_ENABLE_ONESHOT', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_ENABLE_RESERVED', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE_FALSE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE_TRUE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HSYNC_POLARITY', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HSYNC_POLARITY_FALSE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_HSYNC_POLARITY_TRUE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_INTERLACE_MODE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_INTERLACE_MODE_FALSE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_INTERLACE_MODE_TRUE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE_FALSE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE_TRUE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_1pixel', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_2pixel', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_3pixel', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_4pixel', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_VSYNC_POLARITY', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_VSYNC_POLARITY_FALSE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_VSYNC_POLARITY_TRUE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_ENABLE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_ENABLE_FALSE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_ENABLE_TRUE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_UPDATE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_UPDATE_FALSE', - 'OTG_EXT_TIMING_SYNC_CONTROL_OTG_EXT_TIMING_SYNC_WINDOW_UPDATE_TRUE', - 'OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_CLEAR', - 'OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_CLEAR_FALSE', - 'OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_CLEAR_TRUE', - 'OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_ENABLE', - 'OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_ENABLE_FALSE', - 'OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_ENABLE_TRUE', - 'OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_TYPE', - 'OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_TYPE_FALSE', - 'OTG_EXT_TIMING_SYNC_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_INT_TYPE_TRUE', - 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_CLEAR', - 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_CLEAR_FALSE', - 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_CLEAR_TRUE', - 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT', - 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_128FRAME', - 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_16FRAME', - 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_1FRAME', - 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_2FRAME', - 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_32FRAME', - 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_4FRAME', - 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_64FRAME', - 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_8FRAME', - 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_ENABLE', - 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_ENABLE_FALSE', - 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_ENABLE_TRUE', - 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_TYPE', - 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_TYPE_FALSE', - 'OTG_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_LOSS_INT_TYPE_TRUE', - 'OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_CLEAR', - 'OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_CLEAR_FALSE', - 'OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_CLEAR_TRUE', - 'OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE', - 'OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE_FALSE', - 'OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE_TRUE', - 'OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_TYPE', - 'OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_TYPE_FALSE', - 'OTG_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_OTG_EXT_TIMING_SYNC_SIGNAL_INT_TYPE_TRUE', - 'OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_ALIGNMENT', - 'OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_ALIGNMENT_FALSE', - 'OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_ALIGNMENT_TRUE', - 'OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_INDICATION_OUTPUT_POLARITY', - 'OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_INDICATION_OUTPUT_POLARITY_FALSE', - 'OTG_FIELD_INDICATION_CONTROL_OTG_FIELD_INDICATION_OUTPUT_POLARITY_TRUE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_FALSE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_TRUE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_FALSE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_TRUE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1CLK', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1DATA', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2CLK', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2DATA', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DSI_FREEZE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICA', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICB', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICC', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICD', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICF', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_CLK', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_VSYNC', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD1', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD2', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC0', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC1', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKA', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKB', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_FALSE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_TRUE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_FALSE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_TRUE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_DISABLE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT_VCOUNT', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_RESERVED', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_FALSE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_TRUE', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG0', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG1', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG2', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG3', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG4', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG5', - 'OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_FIELD', - 'OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_STEREO_SEL', - 'OTG_GSL_MASTER_MODE', 'OTG_GSL_MASTER_MODE_0', - 'OTG_GSL_MASTER_MODE_1', 'OTG_GSL_MASTER_MODE_2', - 'OTG_GSL_MASTER_MODE_3', 'OTG_HORZ_REPETITION_COUNT', - 'OTG_HORZ_REPETITION_COUNT_0', 'OTG_HORZ_REPETITION_COUNT_1', - 'OTG_HORZ_REPETITION_COUNT_10', 'OTG_HORZ_REPETITION_COUNT_11', - 'OTG_HORZ_REPETITION_COUNT_12', 'OTG_HORZ_REPETITION_COUNT_13', - 'OTG_HORZ_REPETITION_COUNT_14', 'OTG_HORZ_REPETITION_COUNT_15', - 'OTG_HORZ_REPETITION_COUNT_2', 'OTG_HORZ_REPETITION_COUNT_3', - 'OTG_HORZ_REPETITION_COUNT_4', 'OTG_HORZ_REPETITION_COUNT_5', - 'OTG_HORZ_REPETITION_COUNT_6', 'OTG_HORZ_REPETITION_COUNT_7', - 'OTG_HORZ_REPETITION_COUNT_8', 'OTG_HORZ_REPETITION_COUNT_9', - 'OTG_H_SYNC_A_POL', 'OTG_H_SYNC_A_POL_HIGH', - 'OTG_H_SYNC_A_POL_LOW', 'OTG_H_TIMING_DIV_BY2', - 'OTG_H_TIMING_DIV_BY2_FALSE', 'OTG_H_TIMING_DIV_BY2_TRUE', - 'OTG_H_TIMING_DIV_BY2_UPDATE_MODE', - 'OTG_H_TIMING_DIV_BY2_UPDATE_MODE_0', - 'OTG_H_TIMING_DIV_BY2_UPDATE_MODE_1', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_FALSE', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_TRUE', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_BOTTOM', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT2', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_TOP', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_V_UPDATE_INT_TYPE_TRUE', - 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE', - 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_FALSE', - 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_TRUE', - 'OTG_MASTER_UPDATE_LOCK_GSL_EN', - 'OTG_MASTER_UPDATE_LOCK_GSL_EN_FALSE', - 'OTG_MASTER_UPDATE_LOCK_GSL_EN_TRUE', - 'OTG_MVP_INBAND_CNTL_INSERT_OTG_MVP_INBAND_OUT_MODE', - 'OTG_MVP_INBAND_CNTL_INSERT_OTG_MVP_INBAND_OUT_MODE_DEBUG', - 'OTG_MVP_INBAND_CNTL_INSERT_OTG_MVP_INBAND_OUT_MODE_DISABLE', - 'OTG_MVP_INBAND_CNTL_INSERT_OTG_MVP_INBAND_OUT_MODE_NORMAL', - 'OTG_MVP_STATUS_OTG_AFR_HSYNC_SWITCH_DONE_CLEAR', - 'OTG_MVP_STATUS_OTG_AFR_HSYNC_SWITCH_DONE_CLEAR_FALSE', - 'OTG_MVP_STATUS_OTG_AFR_HSYNC_SWITCH_DONE_CLEAR_TRUE', - 'OTG_MVP_STATUS_OTG_FLIP_NOW_CLEAR', - 'OTG_MVP_STATUS_OTG_FLIP_NOW_CLEAR_FALSE', - 'OTG_MVP_STATUS_OTG_FLIP_NOW_CLEAR_TRUE', 'OTG_PIPE_ABORT', - 'OTG_PIPE_ABORT_0', 'OTG_PIPE_ABORT_1', - 'OTG_PTI_CONTROL_OTG_PIT_EN', 'OTG_PTI_CONTROL_OTG_PIT_EN_FALSE', - 'OTG_PTI_CONTROL_OTG_PIT_EN_TRUE', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_DISABLE', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_RESERVED', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERA', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERB', - 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR', - 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_FALSE', - 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_TRUE', - 'OTG_START_LINE_CONTROL_OTG_INTERLACE_START_LINE_EARLY', - 'OTG_START_LINE_CONTROL_OTG_INTERLACE_START_LINE_EARLY_FALSE', - 'OTG_START_LINE_CONTROL_OTG_INTERLACE_START_LINE_EARLY_TRUE', - 'OTG_START_LINE_CONTROL_OTG_LEGACY_REQUESTOR_EN', - 'OTG_START_LINE_CONTROL_OTG_LEGACY_REQUESTOR_EN_FALSE', - 'OTG_START_LINE_CONTROL_OTG_LEGACY_REQUESTOR_EN_TRUE', - 'OTG_START_LINE_CONTROL_OTG_PREFETCH_EN', - 'OTG_START_LINE_CONTROL_OTG_PREFETCH_EN_FALSE', - 'OTG_START_LINE_CONTROL_OTG_PREFETCH_EN_TRUE', - 'OTG_START_LINE_CONTROL_OTG_PROGRESSIVE_START_LINE_EARLY', - 'OTG_START_LINE_CONTROL_OTG_PROGRESSIVE_START_LINE_EARLY_FALSE', - 'OTG_START_LINE_CONTROL_OTG_PROGRESSIVE_START_LINE_EARLY_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_FALSE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_FALSE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_FALSE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_FALSE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_OFF', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_ON', - 'OTG_STEREO_CONTROL_OTG_STEREO_EN', - 'OTG_STEREO_CONTROL_OTG_STEREO_EN_FALSE', - 'OTG_STEREO_CONTROL_OTG_STEREO_EN_TRUE', - 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY', - 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_FALSE', - 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_TRUE', - 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY', - 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_FALSE', - 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_TRUE', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_LEFT', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_NO', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RESERVED', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RIGHT', - 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR', - 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_FALSE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_TRUE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICA', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICB', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICC', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICD', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_HSYNCA', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_INTERLACE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC0', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC1', - 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_FALSE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_TRUE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG0', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG1', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG2', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG3', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG4', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG5', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_BLON_Y_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_DSI_FORCE_TOTAL', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_FLIP_PENDING', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICA_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICB_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICC_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICD_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICE_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICF_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_CLK_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_VSYNC_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GSL_ALLOW_FLIP', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD1', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD2', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HSYNC', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC0', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC1', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_SOF', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKA_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKB_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_LOCK', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_PENDING', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_VSYNC', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_0', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_1', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_2', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_3', - 'OTG_TRIGA_FREQUENCY_SELECT', 'OTG_TRIGA_FREQUENCY_SELECT_0', - 'OTG_TRIGA_FREQUENCY_SELECT_1', 'OTG_TRIGA_FREQUENCY_SELECT_2', - 'OTG_TRIGA_FREQUENCY_SELECT_3', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_0', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_1', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_2', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_3', - 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR', - 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_FALSE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_TRUE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICA', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICB', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICC', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICD', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_HSYNCA', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_INTERLACE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC0', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC1', - 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_FALSE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_TRUE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG0', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG1', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG2', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG3', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG4', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG5', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_BLON_Y_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_DSI_FORCE_TOTAL', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_FLIP_PENDING', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICA_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICB_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICC_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICD_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICE_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICF_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_CLK_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_VSYNC_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GSL_ALLOW_FLIP', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD1', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD2', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HSYNC', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC0', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC1', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_SOF', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKA_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKB_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_LOCK', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_PENDING', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_VSYNC', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_0', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_1', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_2', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_3', - 'OTG_TRIGB_FREQUENCY_SELECT', 'OTG_TRIGB_FREQUENCY_SELECT_0', - 'OTG_TRIGB_FREQUENCY_SELECT_1', 'OTG_TRIGB_FREQUENCY_SELECT_2', - 'OTG_TRIGB_FREQUENCY_SELECT_3', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_0', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_1', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_2', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_3', - 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK', - 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_FALSE', - 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_TRUE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_FALSE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_TRUE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_FALSE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_TRUE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_FALSE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_TRUE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_FALSE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_TRUE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_CLEAR_FALSE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_TRUE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_FALSE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_TRUE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_FALSE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_TRUE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_CLEAR_FALSE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_TRUE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_FALSE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_TRUE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_FALSE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_TRUE', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_DISABLE', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_RESERVED', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERA', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERB', - 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR', - 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_FALSE', - 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_TRUE', - 'OTG_VGA_PARAMETER_CAPTURE_MODE_OTG_VGA_PARAMETER_CAPTURE_MODE', - 'OTG_VGA_PARAMETER_CAPTURE_MODE_OTG_VGA_PARAMETER_CAPTURE_MODE_FALSE', - 'OTG_VGA_PARAMETER_CAPTURE_MODE_OTG_VGA_PARAMETER_CAPTURE_MODE_TRUE', - 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR', - 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_FALSE', - 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_TRUE', - 'OTG_V_SYNC_A_POL', 'OTG_V_SYNC_A_POL_HIGH', - 'OTG_V_SYNC_A_POL_LOW', - 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD', - 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_0', - 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_1', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_DISABLE', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_ENABLE', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_DISABLE', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_ENABLE', - 'OTG_V_TOTAL_CONTROL_OTG_SET_V_TOTAL_MIN_MASK_EN', - 'OTG_V_TOTAL_CONTROL_OTG_SET_V_TOTAL_MIN_MASK_EN_FALSE', - 'OTG_V_TOTAL_CONTROL_OTG_SET_V_TOTAL_MIN_MASK_EN_TRUE', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_FALSE', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_TRUE', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_FALSE', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_TRUE', - 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK', - 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK_FALSE', - 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK_TRUE', - 'OTG_V_UPDATE_INT_STATUS_OTG_V_UPDATE_INT_CLEAR', - 'OTG_V_UPDATE_INT_STATUS_OTG_V_UPDATE_INT_CLEAR_FALSE', - 'OTG_V_UPDATE_INT_STATUS_OTG_V_UPDATE_INT_CLEAR_TRUE', - 'OUTPUT_LINE', 'OUTPUT_POINT', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_NOT_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_DISABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_NOT_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_DISABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_NOT_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_DISABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_ENABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_NO_TRAFFIC_PRIORITY', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_DO_RUN', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_IS_RESET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RESET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RUN', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_YES_TRAFFIC_PRIORITY', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_16', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_20', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_24', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_1', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_10_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_11_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_12_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_13_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_14_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_15_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_16_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_2', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_3', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_4', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_5', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_6', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_7', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_8', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_9_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 'OUTPUT_TRIANGLE_CCW', 'OUTPUT_TRIANGLE_CW', 'OUTSTANDING_REQ', - 'OVERRUN', 'P16_32x32_16x16', 'P16_32x32_8x16', 'P16_ADDR_SURF', - 'P2', 'P4_16x16', 'P4_16x32', 'P4_32x32', 'P4_8x16', - 'P8_16x16_8x16', 'P8_16x32_16x16', 'P8_16x32_8x16', - 'P8_32x32_16x16', 'P8_32x32_16x32', 'P8_32x32_8x16', - 'P8_32x64_32x32', 'PART_FRAC_EVEN', 'PART_FRAC_ODD', - 'PART_INTEGER', 'PART_POW2', 'PATCHES', 'PERFCOUNTER_ACTIVE', - 'PERFCOUNTER_CNT0_STATE', 'PERFCOUNTER_CNT0_STATE_FREEZE', - 'PERFCOUNTER_CNT0_STATE_HW', 'PERFCOUNTER_CNT0_STATE_RESET', - 'PERFCOUNTER_CNT0_STATE_START', 'PERFCOUNTER_CNT1_STATE', - 'PERFCOUNTER_CNT1_STATE_FREEZE', 'PERFCOUNTER_CNT1_STATE_HW', - 'PERFCOUNTER_CNT1_STATE_RESET', 'PERFCOUNTER_CNT1_STATE_START', - 'PERFCOUNTER_CNT2_STATE', 'PERFCOUNTER_CNT2_STATE_FREEZE', - 'PERFCOUNTER_CNT2_STATE_HW', 'PERFCOUNTER_CNT2_STATE_RESET', - 'PERFCOUNTER_CNT2_STATE_START', 'PERFCOUNTER_CNT3_STATE', - 'PERFCOUNTER_CNT3_STATE_FREEZE', 'PERFCOUNTER_CNT3_STATE_HW', - 'PERFCOUNTER_CNT3_STATE_RESET', 'PERFCOUNTER_CNT3_STATE_START', - 'PERFCOUNTER_CNT4_STATE', 'PERFCOUNTER_CNT4_STATE_FREEZE', - 'PERFCOUNTER_CNT4_STATE_HW', 'PERFCOUNTER_CNT4_STATE_RESET', - 'PERFCOUNTER_CNT4_STATE_START', 'PERFCOUNTER_CNT5_STATE', - 'PERFCOUNTER_CNT5_STATE_FREEZE', 'PERFCOUNTER_CNT5_STATE_HW', - 'PERFCOUNTER_CNT5_STATE_RESET', 'PERFCOUNTER_CNT5_STATE_START', - 'PERFCOUNTER_CNT6_STATE', 'PERFCOUNTER_CNT6_STATE_FREEZE', - 'PERFCOUNTER_CNT6_STATE_HW', 'PERFCOUNTER_CNT6_STATE_RESET', - 'PERFCOUNTER_CNT6_STATE_START', 'PERFCOUNTER_CNT7_STATE', - 'PERFCOUNTER_CNT7_STATE_FREEZE', 'PERFCOUNTER_CNT7_STATE_HW', - 'PERFCOUNTER_CNT7_STATE_RESET', 'PERFCOUNTER_CNT7_STATE_START', - 'PERFCOUNTER_CNTL_SEL', 'PERFCOUNTER_CNTL_SEL_0', - 'PERFCOUNTER_CNTL_SEL_1', 'PERFCOUNTER_CNTL_SEL_2', - 'PERFCOUNTER_CNTL_SEL_3', 'PERFCOUNTER_CNTL_SEL_4', - 'PERFCOUNTER_CNTL_SEL_5', 'PERFCOUNTER_CNTL_SEL_6', - 'PERFCOUNTER_CNTL_SEL_7', 'PERFCOUNTER_CNTOFF_START_DIS', - 'PERFCOUNTER_CNTOFF_START_DISABLE', - 'PERFCOUNTER_CNTOFF_START_ENABLE', - 'PERFCOUNTER_COUNTED_VALUE_TYPE', - 'PERFCOUNTER_COUNTED_VALUE_TYPE_ACC', - 'PERFCOUNTER_COUNTED_VALUE_TYPE_MAX', - 'PERFCOUNTER_COUNTED_VALUE_TYPE_MIN', 'PERFCOUNTER_CVALUE_SEL', - 'PERFCOUNTER_CVALUE_SEL_11_0', 'PERFCOUNTER_CVALUE_SEL_15_0', - 'PERFCOUNTER_CVALUE_SEL_23_12', 'PERFCOUNTER_CVALUE_SEL_31_16', - 'PERFCOUNTER_CVALUE_SEL_35_24', 'PERFCOUNTER_CVALUE_SEL_47_0', - 'PERFCOUNTER_CVALUE_SEL_47_32', 'PERFCOUNTER_CVALUE_SEL_47_36', - 'PERFCOUNTER_HW_CNTL_SEL', 'PERFCOUNTER_HW_CNTL_SEL_CNTOFF', - 'PERFCOUNTER_HW_CNTL_SEL_RUNEN', 'PERFCOUNTER_HW_STOP1_0', - 'PERFCOUNTER_HW_STOP1_1', 'PERFCOUNTER_HW_STOP1_SEL', - 'PERFCOUNTER_HW_STOP2_0', 'PERFCOUNTER_HW_STOP2_1', - 'PERFCOUNTER_HW_STOP2_SEL', 'PERFCOUNTER_INC_MODE', - 'PERFCOUNTER_INC_MODE_BOTH_EDGE', 'PERFCOUNTER_INC_MODE_LSB', - 'PERFCOUNTER_INC_MODE_MULTI_BIT', 'PERFCOUNTER_INC_MODE_NEG_EDGE', - 'PERFCOUNTER_INC_MODE_POS_EDGE', 'PERFCOUNTER_INT_DISABLE', - 'PERFCOUNTER_INT_EN', 'PERFCOUNTER_INT_ENABLE', - 'PERFCOUNTER_INT_TYPE', 'PERFCOUNTER_INT_TYPE_LEVEL', - 'PERFCOUNTER_INT_TYPE_PULSE', 'PERFCOUNTER_IS_ACTIVE', - 'PERFCOUNTER_IS_IDLE', 'PERFCOUNTER_OFF_MASK', - 'PERFCOUNTER_OFF_MASK_DISABLE', 'PERFCOUNTER_OFF_MASK_ENABLE', - 'PERFCOUNTER_RESTART_DISABLE', 'PERFCOUNTER_RESTART_EN', - 'PERFCOUNTER_RESTART_ENABLE', 'PERFCOUNTER_RUNEN_MODE', - 'PERFCOUNTER_RUNEN_MODE_EDGE', 'PERFCOUNTER_RUNEN_MODE_LEVEL', - 'PERFCOUNTER_SAMPLE', 'PERFCOUNTER_START', - 'PERFCOUNTER_STATE_SEL0', 'PERFCOUNTER_STATE_SEL0_GLOBAL', - 'PERFCOUNTER_STATE_SEL0_LOCAL', 'PERFCOUNTER_STATE_SEL1', - 'PERFCOUNTER_STATE_SEL1_GLOBAL', 'PERFCOUNTER_STATE_SEL1_LOCAL', - 'PERFCOUNTER_STATE_SEL2', 'PERFCOUNTER_STATE_SEL2_GLOBAL', - 'PERFCOUNTER_STATE_SEL2_LOCAL', 'PERFCOUNTER_STATE_SEL3', - 'PERFCOUNTER_STATE_SEL3_GLOBAL', 'PERFCOUNTER_STATE_SEL3_LOCAL', - 'PERFCOUNTER_STATE_SEL4', 'PERFCOUNTER_STATE_SEL4_GLOBAL', - 'PERFCOUNTER_STATE_SEL4_LOCAL', 'PERFCOUNTER_STATE_SEL5', - 'PERFCOUNTER_STATE_SEL5_GLOBAL', 'PERFCOUNTER_STATE_SEL5_LOCAL', - 'PERFCOUNTER_STATE_SEL6', 'PERFCOUNTER_STATE_SEL6_GLOBAL', - 'PERFCOUNTER_STATE_SEL6_LOCAL', 'PERFCOUNTER_STATE_SEL7', - 'PERFCOUNTER_STATE_SEL7_GLOBAL', 'PERFCOUNTER_STATE_SEL7_LOCAL', - 'PERFCOUNTER_STOP', 'PERFMON_CNTOFF_AND', 'PERFMON_CNTOFF_AND_OR', - 'PERFMON_CNTOFF_INT_DISABLE', 'PERFMON_CNTOFF_INT_EN', - 'PERFMON_CNTOFF_INT_ENABLE', 'PERFMON_CNTOFF_INT_TYPE', - 'PERFMON_CNTOFF_INT_TYPE_LEVEL', 'PERFMON_CNTOFF_INT_TYPE_PULSE', - 'PERFMON_CNTOFF_OR', 'PERFMON_COUNTER_MODE', - 'PERFMON_COUNTER_MODE_ACCUM', - 'PERFMON_COUNTER_MODE_ACTIVE_CYCLES', - 'PERFMON_COUNTER_MODE_CYCLES_EQ_HI', - 'PERFMON_COUNTER_MODE_CYCLES_GE_HI', - 'PERFMON_COUNTER_MODE_CYCLES_SINCE_FIRST_EVENT', - 'PERFMON_COUNTER_MODE_CYCLES_SINCE_LAST_EVENT', - 'PERFMON_COUNTER_MODE_DIRTY', - 'PERFMON_COUNTER_MODE_INACTIVE_CYCLES', - 'PERFMON_COUNTER_MODE_MAX', 'PERFMON_COUNTER_MODE_RESERVED', - 'PERFMON_COUNTER_MODE_SAMPLE', 'PERFMON_SPM_MODE', - 'PERFMON_SPM_MODE_16BIT_CLAMP', 'PERFMON_SPM_MODE_16BIT_NO_CLAMP', - 'PERFMON_SPM_MODE_32BIT_CLAMP', 'PERFMON_SPM_MODE_32BIT_NO_CLAMP', - 'PERFMON_SPM_MODE_OFF', 'PERFMON_SPM_MODE_RESERVED_5', - 'PERFMON_SPM_MODE_RESERVED_6', 'PERFMON_SPM_MODE_RESERVED_7', - 'PERFMON_SPM_MODE_TEST_MODE_0', 'PERFMON_SPM_MODE_TEST_MODE_1', - 'PERFMON_SPM_MODE_TEST_MODE_2', 'PERFMON_STATE', - 'PERFMON_STATE_FREEZE', 'PERFMON_STATE_HW', 'PERFMON_STATE_RESET', - 'PERFMON_STATE_START', 'PERF_CLIENT_UTCL1_INFLIGHT', - 'PERF_INDEX_RECEIVE_0_VALID_DWORDS_THIS_CACHELINE', - 'PERF_INDEX_RECEIVE_10_VALID_DWORDS_THIS_CACHELINE', - 'PERF_INDEX_RECEIVE_11_VALID_DWORDS_THIS_CACHELINE', - 'PERF_INDEX_RECEIVE_12_VALID_DWORDS_THIS_CACHELINE', - 'PERF_INDEX_RECEIVE_13_VALID_DWORDS_THIS_CACHELINE', - 'PERF_INDEX_RECEIVE_14_VALID_DWORDS_THIS_CACHELINE', - 'PERF_INDEX_RECEIVE_15_VALID_DWORDS_THIS_CACHELINE', - 'PERF_INDEX_RECEIVE_16_VALID_DWORDS_THIS_CACHELINE', - 'PERF_INDEX_RECEIVE_1_VALID_DWORDS_THIS_CACHELINE', - 'PERF_INDEX_RECEIVE_2_VALID_DWORDS_THIS_CACHELINE', - 'PERF_INDEX_RECEIVE_3_VALID_DWORDS_THIS_CACHELINE', - 'PERF_INDEX_RECEIVE_4_VALID_DWORDS_THIS_CACHELINE', - 'PERF_INDEX_RECEIVE_5_VALID_DWORDS_THIS_CACHELINE', - 'PERF_INDEX_RECEIVE_6_VALID_DWORDS_THIS_CACHELINE', - 'PERF_INDEX_RECEIVE_7_VALID_DWORDS_THIS_CACHELINE', - 'PERF_INDEX_RECEIVE_8_VALID_DWORDS_THIS_CACHELINE', - 'PERF_INDEX_RECEIVE_9_VALID_DWORDS_THIS_CACHELINE', - 'PERF_INDEX_RECEIVE_PRIM_INDICES_FIFO_WRITE', - 'PERF_INDEX_RECEIVE_QUALIFIED_BUSY', - 'PERF_INDEX_RECEIVE_QUALIFIED_STARVED', - 'PERF_INDEX_RECEIVE_WAITING_ON_PRIM_INDICES_FIFO', - 'PERF_INDEX_RECEIVE_WAITING_ON_RETURNED_CACHELINE', - 'PERF_INDEX_REQUEST_QUALIFIED_BUSY', - 'PERF_INDEX_REQUEST_QUALIFIED_STARVED', - 'PERF_INDEX_REQUEST_WAITING_ON_FULL_RECEIVE_FIFO', - 'PERF_INDEX_REQUEST_WAITING_ON_TOKENS', 'PERF_PAPC_CCGSM_BUSY', - 'PERF_PAPC_CCGSM_IDLE', 'PERF_PAPC_CCGSM_STALLED', - 'PERF_PAPC_CLIPGA_BUSY', 'PERF_PAPC_CLIPGA_IDLE', - 'PERF_PAPC_CLIPGA_STALLED', 'PERF_PAPC_CLIPGA_STARVED_VTE_CLIP', - 'PERF_PAPC_CLIPGA_VTE_KILL_PRIM', 'PERF_PAPC_CLIPSM_BUSY', - 'PERF_PAPC_CLIPSM_IDLE', 'PERF_PAPC_CLIPSM_WAIT_AVAIL_VTE_CLIP', - 'PERF_PAPC_CLIPSM_WAIT_CLIPGA', - 'PERF_PAPC_CLIPSM_WAIT_CLIP_OUTSM', - 'PERF_PAPC_CLIPSM_WAIT_CLIP_VERT_ENGH', - 'PERF_PAPC_CLIPSM_WAIT_HIGH_PRI_SEQ', 'PERF_PAPC_CLIP_BUSY', - 'PERF_PAPC_CLIP_IDLE', 'PERF_PAPC_CLPRIM_BUSY', - 'PERF_PAPC_CLPRIM_IDLE', 'PERF_PAPC_CLPRIM_STALLED', - 'PERF_PAPC_CLPRIM_STARVED_CCGSM', - 'PERF_PAPC_CLPR_CLIP_PLANE_BOTTOM', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_1', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_2', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_3', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_4', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_5_8', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_9_12', - 'PERF_PAPC_CLPR_CLIP_PLANE_FAR', 'PERF_PAPC_CLPR_CLIP_PLANE_LEFT', - 'PERF_PAPC_CLPR_CLIP_PLANE_NEAR', - 'PERF_PAPC_CLPR_CLIP_PLANE_RIGHT', - 'PERF_PAPC_CLPR_CLIP_PLANE_TOP', 'PERF_PAPC_CLPR_CULL_PRIM', - 'PERF_PAPC_CLPR_CULL_TO_NULL_PRIM', - 'PERF_PAPC_CLPR_GSC_KILL_CULL_PRIM', - 'PERF_PAPC_CLPR_POINT_CLIP_CANDIDATE', - 'PERF_PAPC_CLPR_RASTER_KILL_CULL_PRIM', - 'PERF_PAPC_CLPR_UCP_CLIP_PRIM', 'PERF_PAPC_CLPR_UCP_CULL_PRIM', - 'PERF_PAPC_CLPR_VTX_KILL_CULL_PRIM', - 'PERF_PAPC_CLPR_VTX_NAN_CULL_PRIM', - 'PERF_PAPC_CLPR_VVUCP_CLIP_PRIM', - 'PERF_PAPC_CLPR_VVUCP_CULL_PRIM', 'PERF_PAPC_CLPR_VV_CLIP_PRIM', - 'PERF_PAPC_CLPR_VV_CULL_PRIM', 'PERF_PAPC_CLSM_CLIPPING_PRIM', - 'PERF_PAPC_CLSM_CULL_TO_NULL_PRIM', 'PERF_PAPC_CLSM_NULL_PRIM', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_1', 'PERF_PAPC_CLSM_OUT_PRIM_CNT_2', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_3', 'PERF_PAPC_CLSM_OUT_PRIM_CNT_4', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_5_8', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_9_13', - 'PERF_PAPC_CLSM_TOTALLY_VISIBLE_PRIM', - 'PERF_PAPC_CL_DYN_SCLK_VLD', 'PERF_PAPC_PASX_DISABLE_PIPE', - 'PERF_PAPC_PASX_FIRST_DEAD', 'PERF_PAPC_PASX_FIRST_VECTOR', - 'PERF_PAPC_PASX_REC_BUSY', 'PERF_PAPC_PASX_REC_IDLE', - 'PERF_PAPC_PASX_REC_STALLED', - 'PERF_PAPC_PASX_REC_STALLED_CCGSM_IN', - 'PERF_PAPC_PASX_REC_STALLED_POS_MEM', - 'PERF_PAPC_PASX_REC_STARVED_SX', 'PERF_PAPC_PASX_REQ', - 'PERF_PAPC_PASX_REQ_BUSY', 'PERF_PAPC_PASX_REQ_IDLE', - 'PERF_PAPC_PASX_REQ_STALLED', 'PERF_PAPC_PASX_SE0_FIRST_VECTOR', - 'PERF_PAPC_PASX_SE0_REQ', 'PERF_PAPC_PASX_SE0_SECOND_VECTOR', - 'PERF_PAPC_PASX_SE1_FIRST_VECTOR', 'PERF_PAPC_PASX_SE1_REQ', - 'PERF_PAPC_PASX_SE1_SECOND_VECTOR', 'PERF_PAPC_PASX_SECOND_DEAD', - 'PERF_PAPC_PASX_SECOND_VECTOR', 'PERF_PAPC_PASX_VTX_KILL_DISCARD', - 'PERF_PAPC_PASX_VTX_NAN_DISCARD', - 'PERF_PAPC_PA_INPUT_END_OF_PACKET', - 'PERF_PAPC_PA_INPUT_EVENT_FLAG', - 'PERF_PAPC_PA_INPUT_EXTENDED_EVENT', - 'PERF_PAPC_PA_INPUT_FIRST_PRIM_SLOT', - 'PERF_PAPC_PA_INPUT_NULL_PRIM', 'PERF_PAPC_PA_INPUT_PRIM', - 'PERF_PAPC_PA_REG_SCLK_VLD', 'PERF_PAPC_SU_BACK_FACE_CULL_PRIM', - 'PERF_PAPC_SU_BUSY', 'PERF_PAPC_SU_CULLED_PRIM', - 'PERF_PAPC_SU_DYN_SCLK_VLD', 'PERF_PAPC_SU_FRONT_FACE_CULL_PRIM', - 'PERF_PAPC_SU_IDLE', 'PERF_PAPC_SU_INPUT_CLIP_PRIM', - 'PERF_PAPC_SU_INPUT_CLIP_PRIM_DUAL', - 'PERF_PAPC_SU_INPUT_NULL_PRIM', 'PERF_PAPC_SU_INPUT_PRIM', - 'PERF_PAPC_SU_INPUT_PRIM_DUAL', - 'PERF_PAPC_SU_MULTI_GPU_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_OUTPUT_CLIP_POLYMODE_DUAL', - 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM', - 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM_DUAL', - 'PERF_PAPC_SU_OUTPUT_END_OF_PACKET', 'PERF_PAPC_SU_OUTPUT_EOPG', - 'PERF_PAPC_SU_OUTPUT_EVENT_FLAG', - 'PERF_PAPC_SU_OUTPUT_FIRST_PRIM_SLOT', - 'PERF_PAPC_SU_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_BACK', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_DUAL', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_FACE', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_FRONT', 'PERF_PAPC_SU_OUTPUT_PRIM', - 'PERF_PAPC_SU_OUTPUT_PRIM_DUAL', - 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_BACK', - 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FACE', - 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FRONT', - 'PERF_PAPC_SU_POLYMODE_BACK_CULL', - 'PERF_PAPC_SU_POLYMODE_FACE_CULL', - 'PERF_PAPC_SU_POLYMODE_FRONT_CULL', - 'PERF_PAPC_SU_POLYMODE_INVALID_FILL', - 'PERF_PAPC_SU_SE01_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE01_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE01_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE01_STALLED_SC', - 'PERF_PAPC_SU_SE0_OUTPUT_END_OF_PACKET', - 'PERF_PAPC_SU_SE0_OUTPUT_EOPG', - 'PERF_PAPC_SU_SE0_OUTPUT_FIRST_PRIM_SLOT', - 'PERF_PAPC_SU_SE0_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE0_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE0_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE0_STALLED_SC', - 'PERF_PAPC_SU_SE1_OUTPUT_END_OF_PACKET', - 'PERF_PAPC_SU_SE1_OUTPUT_EOPG', - 'PERF_PAPC_SU_SE1_OUTPUT_FIRST_PRIM_SLOT', - 'PERF_PAPC_SU_SE1_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE1_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE1_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE1_STALLED_SC', - 'PERF_PAPC_SU_SE2_OUTPUT_END_OF_PACKET', - 'PERF_PAPC_SU_SE2_OUTPUT_EOPG', - 'PERF_PAPC_SU_SE2_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE2_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE2_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE2_STALLED_SC', - 'PERF_PAPC_SU_SE3_OUTPUT_END_OF_PACKET', - 'PERF_PAPC_SU_SE3_OUTPUT_EOPG', - 'PERF_PAPC_SU_SE3_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE3_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE3_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE3_STALLED_SC', 'PERF_PAPC_SU_STALLED_SC', - 'PERF_PAPC_SU_STARVED_CLIP', 'PERF_PAPC_SU_ZERO_AREA_CULL_PRIM', - 'PERF_PAWD_DEALLOC_FIFO_IS_FULL', - 'PERF_PAWD_DEALLOC_WAITING_TO_BE_READ', - 'PERF_PA_FETCH_TO_PRIMIC_P_FIFO_FULL', - 'PERF_PA_FETCH_TO_SXIF_FIFO_FULL', - 'PERF_PA_PRIMIC_TO_CLPRIM_FIFO_FULL', - 'PERF_PA_SE0_OUTPUT_QUALIFIED_CLKEN_ASSERTED_NO_SEND', - 'PERF_PA_SE0_OUTPUT_QUALIFIED_CLKEN_ASSERTED_WITH_SEND', - 'PERF_PA_SE0_OUTPUT_QUALIFIED_CLKEN_NOT_ASSERTED', - 'PERF_PA_SE1_OUTPUT_QUALIFIED_CLKEN_ASSERTED_NO_SEND', - 'PERF_PA_SE1_OUTPUT_QUALIFIED_CLKEN_ASSERTED_WITH_SEND', - 'PERF_PA_SE1_OUTPUT_QUALIFIED_CLKEN_NOT_ASSERTED', - 'PERF_PA_SE2_OUTPUT_QUALIFIED_CLKEN_ASSERTED_NO_SEND', - 'PERF_PA_SE2_OUTPUT_QUALIFIED_CLKEN_ASSERTED_WITH_SEND', - 'PERF_PA_SE2_OUTPUT_QUALIFIED_CLKEN_NOT_ASSERTED', - 'PERF_PA_SE3_OUTPUT_QUALIFIED_CLKEN_ASSERTED_NO_SEND', - 'PERF_PA_SE3_OUTPUT_QUALIFIED_CLKEN_ASSERTED_WITH_SEND', - 'PERF_PA_SE3_OUTPUT_QUALIFIED_CLKEN_NOT_ASSERTED', - 'PERF_PA_VERTEX_FIFO_FULL', - 'PERF_POS_REQ_FETCH_TO_PRIMIC_P_FIFO_NO_WRITE', - 'PERF_POS_REQ_FETCH_TO_PRIMIC_P_FIFO_WRITE', - 'PERF_POS_REQ_QUALIFIED_BUSY', 'PERF_POS_REQ_QUALIFIED_STARVED', - 'PERF_POS_REQ_REUSE_0_NEW_VERTS_THIS_PRIM', - 'PERF_POS_REQ_REUSE_1_NEW_VERTS_THIS_PRIM', - 'PERF_POS_REQ_REUSE_2_NEW_VERTS_THIS_PRIM', - 'PERF_POS_REQ_REUSE_3_NEW_VERTS_THIS_PRIM', - 'PERF_POS_REQ_STALLED_BY_FULL_FETCH_TO_PRIMIC_P_FIFO', - 'PERF_POS_REQ_STALLED_BY_FULL_FETCH_TO_PRIMIC_S_FIFO', - 'PERF_POS_REQ_STALLED_BY_FULL_PA_TO_WD_DEALLOC_INDEX_FIFO', - 'PERF_POS_REQ_STALLED_BY_FULL_POSREQ_TO_POSRTN_S_FIFO', - 'PERF_POS_REQ_STALLED_BY_FULL_POSREQ_TO_POSRTN_V_FIFO', - 'PERF_POS_REQ_STALLED_BY_NO_TOKENS', - 'PERF_POS_REQ_STALLED_BY_UTCL1', - 'PERF_POS_REQ_STARVED_BY_NO_PRIM', - 'PERF_POS_RET_1_CACHELINE_POSITION_USED', - 'PERF_POS_RET_2_CACHELINE_POSITION_USED', - 'PERF_POS_RET_3_CACHELINE_POSITION_USED', - 'PERF_POS_RET_4_CACHELINE_POSITION_USED', - 'PERF_POS_RET_FETCH_TO_SXIF_FIFO_WRITE', - 'PERF_POS_RET_FULL_FETCH_TO_SXIF_FIFO', - 'PERF_POS_RET_FULL_PA_TO_WD_DEALLOC_POSITION_FIFO', - 'PERF_POS_RET_QUALIFIED_BUSY', 'PERF_POS_RET_QUALIFIED_STARVED', - 'PERF_POS_RET_WAITING_ON_RETURNED_CACHELINE', - 'PERF_SC0_QUALIFIED_SEND_BUSY_EVENT', - 'PERF_SC0_QUALIFIED_SEND_NOT_BUSY_EVENT', - 'PERF_SC1_QUALIFIED_SEND_BUSY_EVENT', - 'PERF_SC1_QUALIFIED_SEND_NOT_BUSY_EVENT', - 'PERF_SC2_QUALIFIED_SEND_BUSY_EVENT', - 'PERF_SC2_QUALIFIED_SEND_NOT_BUSY_EVENT', - 'PERF_SC3_QUALIFIED_SEND_BUSY_EVENT', - 'PERF_SC3_QUALIFIED_SEND_NOT_BUSY_EVENT', - 'PERF_SHOOTDOWN_WAIT_ALL_CLEAN', 'PERF_SHOOTDOWN_WAIT_DEASSERT', - 'PERF_SHOOTDOWN_WAIT_ON_UTCL1', - 'PERF_SHOOTDOWN_WAIT_ON_UTC_INDEX', - 'PERF_SHOOTDOWN_WAIT_ON_UTC_POSITION', - 'PERF_SHOOTDOWN_WAIT_ON_UTC_SIDEBAND', - 'PERF_SIDEBAND_0_VALID_DWORDS_RECEIVED_', - 'PERF_SIDEBAND_16_VALID_DWORDS_RECEIVED_', - 'PERF_SIDEBAND_1_TO_7_VALID_DWORDS_RECEIVED_', - 'PERF_SIDEBAND_8_TO_15_VALID_DWORDS_RECEIVED_', - 'PERF_SIDEBAND_EXPECTING_16_POSSIBLE_VALID_DWORD', - 'PERF_SIDEBAND_EXPECTING_1_POSSIBLE_VALID_DWORD', - 'PERF_SIDEBAND_EXPECTING_2_TO_15_POSSIBLE_VALID_DWORD', - 'PERF_SIDEBAND_FIFO_VMID_FIFO_FULL', - 'PERF_SIDEBAND_INVALID_REFETCH', - 'PERF_SIDEBAND_POP_BIT_FIFO_FULL', 'PERF_SIDEBAND_QUALIFIED_BUSY', - 'PERF_SIDEBAND_QUALIFIED_STARVED', - 'PERF_SIDEBAND_WAITING_ON_FULL_SIDEBAND_MEMORY', - 'PERF_SIDEBAND_WAITING_ON_RETURNED_DATA', - 'PERF_SIDEBAND_WAITING_ON_UTCL1', 'PERF_SMALL_PRIM_CULL_PRIM_1X1', - 'PERF_SMALL_PRIM_CULL_PRIM_1X2', 'PERF_SMALL_PRIM_CULL_PRIM_1X3', - 'PERF_SMALL_PRIM_CULL_PRIM_1XN', 'PERF_SMALL_PRIM_CULL_PRIM_2X1', - 'PERF_SMALL_PRIM_CULL_PRIM_2X2', 'PERF_SMALL_PRIM_CULL_PRIM_2X3', - 'PERF_SMALL_PRIM_CULL_PRIM_2XN', 'PERF_SMALL_PRIM_CULL_PRIM_3X1', - 'PERF_SMALL_PRIM_CULL_PRIM_3X2', - 'PERF_SMALL_PRIM_CULL_PRIM_FULL_RES_EVENT', - 'PERF_SMALL_PRIM_CULL_PRIM_HALF_RES_EVENT', - 'PERF_SMALL_PRIM_CULL_PRIM_NX1', 'PERF_SMALL_PRIM_CULL_PRIM_NX2', - 'PERF_SMALL_PRIM_CULL_PRIM_QUARTER_RES_EVENT', - 'PERF_SU_SMALL_PRIM_FILTER_CULL_CNT', 'PERF_TCIF_BUSY', - 'PERF_TCIF_INDEX_RDREQ', 'PERF_TCIF_POSITION_RDREQ', - 'PERF_TCIF_SIDEBAND_RDREQ', - 'PERF_TCIF_STALLING_CLIENT_NO_CREDITS', - 'PERF_TC_ARBITER_WAITING_FOR_TC_INTERFACE', - 'PERF_TC_INDEX_LATENCY_BIN0', 'PERF_TC_INDEX_LATENCY_BIN1', - 'PERF_TC_INDEX_LATENCY_BIN10', 'PERF_TC_INDEX_LATENCY_BIN11', - 'PERF_TC_INDEX_LATENCY_BIN12', 'PERF_TC_INDEX_LATENCY_BIN13', - 'PERF_TC_INDEX_LATENCY_BIN14', 'PERF_TC_INDEX_LATENCY_BIN15', - 'PERF_TC_INDEX_LATENCY_BIN2', 'PERF_TC_INDEX_LATENCY_BIN3', - 'PERF_TC_INDEX_LATENCY_BIN4', 'PERF_TC_INDEX_LATENCY_BIN5', - 'PERF_TC_INDEX_LATENCY_BIN6', 'PERF_TC_INDEX_LATENCY_BIN7', - 'PERF_TC_INDEX_LATENCY_BIN8', 'PERF_TC_INDEX_LATENCY_BIN9', - 'PERF_TC_POSITION_LATENCY_BIN0', 'PERF_TC_POSITION_LATENCY_BIN1', - 'PERF_TC_POSITION_LATENCY_BIN10', - 'PERF_TC_POSITION_LATENCY_BIN11', - 'PERF_TC_POSITION_LATENCY_BIN12', - 'PERF_TC_POSITION_LATENCY_BIN13', - 'PERF_TC_POSITION_LATENCY_BIN14', - 'PERF_TC_POSITION_LATENCY_BIN15', 'PERF_TC_POSITION_LATENCY_BIN2', - 'PERF_TC_POSITION_LATENCY_BIN3', 'PERF_TC_POSITION_LATENCY_BIN4', - 'PERF_TC_POSITION_LATENCY_BIN5', 'PERF_TC_POSITION_LATENCY_BIN6', - 'PERF_TC_POSITION_LATENCY_BIN7', 'PERF_TC_POSITION_LATENCY_BIN8', - 'PERF_TC_POSITION_LATENCY_BIN9', 'PERF_TC_STREAM0_DATA_AVAILABLE', - 'PERF_TC_STREAM1_DATA_AVAILABLE', - 'PERF_TC_STREAM2_DATA_AVAILABLE', 'PERF_UTCL1_LFIFO_FULL', - 'PERF_UTCL1_PERMISSION_MISS_CLIENT0', - 'PERF_UTCL1_PERMISSION_MISS_CLIENT1', - 'PERF_UTCL1_PERMISSION_MISS_CLIENT2', - 'PERF_UTCL1_REQUEST_CLIENT0', 'PERF_UTCL1_REQUEST_CLIENT1', - 'PERF_UTCL1_REQUEST_CLIENT2', 'PERF_UTCL1_STALL_INFLIGHT_MAX', - 'PERF_UTCL1_STALL_LFIFO_NOT_RES_CLIENT0', - 'PERF_UTCL1_STALL_LFIFO_NOT_RES_CLIENT1', - 'PERF_UTCL1_STALL_LFIFO_NOT_RES_CLIENT2', - 'PERF_UTCL1_STALL_LRU_INFLIGHT', 'PERF_UTCL1_STALL_MISSFIFO_FULL', - 'PERF_UTCL1_STALL_MULTI_MISS', - 'PERF_UTCL1_STALL_UTCL2_REQ_OUT_OF_CREDITS', - 'PERF_UTCL1_TRANSLATION_HIT_CLIENT0', - 'PERF_UTCL1_TRANSLATION_HIT_CLIENT1', - 'PERF_UTCL1_TRANSLATION_HIT_CLIENT2', - 'PERF_UTCL1_TRANSLATION_MISS_CLIENT0', - 'PERF_UTCL1_TRANSLATION_MISS_CLIENT1', - 'PERF_UTCL1_TRANSLATION_MISS_CLIENT2', - 'PERF_UTCL1_UTCL2_INFLIGHT', 'PERF_UTCL1_UTCL2_REQ', - 'PERF_UTCL1_UTCL2_RET', 'PERF_UTC_INDEX_DRIVER_BUSY', - 'PERF_UTC_INDEX_DRIVER_STALLING_CLIENT', - 'PERF_UTC_INDEX_DRIVER_WAITING_ON_UTCL1', - 'PERF_UTC_INDEX_RECEIVER_BUSY', - 'PERF_UTC_INDEX_RECEIVER_STALLED_BY_ARBITER', - 'PERF_UTC_INDEX_RECEIVER_STALLING_UTCL1', - 'PERF_UTC_POSITION_DRIVER_BUSY', - 'PERF_UTC_POSITION_DRIVER_STALLING_CLIENT', - 'PERF_UTC_POSITION_DRIVER_WAITING_ON_UTCL1', - 'PERF_UTC_POSITION_RECEIVER_BUSY', - 'PERF_UTC_POSITION_RECEIVER_STALLED_BY_ARBITER', - 'PERF_UTC_POSITION_RECEIVER_STALLING_UTCL1', - 'PERF_UTC_SIDEBAND_DRIVER_BUSY', - 'PERF_UTC_SIDEBAND_DRIVER_STALLING_CLIENT', - 'PERF_UTC_SIDEBAND_DRIVER_WAITING_ON_UTCL1', - 'PERF_UTC_SIDEBAND_RECEIVER_BUSY', - 'PERF_UTC_SIDEBAND_RECEIVER_STALLED_BY_ARBITER', - 'PERF_UTC_SIDEBAND_RECEIVER_STALLING_UTCL1', - 'PERF_WRITING_TO_SIDEBAND_MEMORY', 'PERSISTENT_SPACE_END', - 'PERSISTENT_SPACE_START', 'PH_PERFCNT_SEL', 'PH_SC0_ARB_BUSY', - 'PH_SC0_ARB_EOP_POP_SYNC_POP', 'PH_SC0_ARB_EVENT_SYNC_POP', - 'PH_SC0_ARB_PA_BUSY_SOP', 'PH_SC0_ARB_STALLED_FROM_BELOW', - 'PH_SC0_ARB_STARVED_FROM_ABOVE', - 'PH_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_SC0_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_SC0_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_SC0_ARB_XFC_ONLY_PRIM_CYCLES', 'PH_SC0_BUSY_CNT_NOT_ZERO', - 'PH_SC0_BUSY_PROCESSING_MULTICYCLE_PRIM', 'PH_SC0_CREDIT_AT_MAX', - 'PH_SC0_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_SC0_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_SC0_EOP_SYNC_WINDOW', 'PH_SC0_GFX_PIPE0_TO_1_TRANSITION', - 'PH_SC0_GFX_PIPE1_TO_0_TRANSITION', - 'PH_SC0_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_SC0_GFX_PIPE_PRIM_PROVOKED_TRANSITION', - 'PH_SC0_PA0_DATA_FIFO_EOP_RD', 'PH_SC0_PA0_DATA_FIFO_RD', - 'PH_SC0_PA0_DATA_FIFO_WE', 'PH_SC0_PA0_DEALLOC_4_0_RD', - 'PH_SC0_PA0_EOPG_WE', 'PH_SC0_PA0_EOP_WE', 'PH_SC0_PA0_EVENT_WE', - 'PH_SC0_PA0_FIFO_EMPTY', 'PH_SC0_PA0_FIFO_FULL', - 'PH_SC0_PA0_FPOV_WE', 'PH_SC0_PA0_LPOV_WE', 'PH_SC0_PA0_NULL_WE', - 'PH_SC0_PA1_DATA_FIFO_EOP_RD', 'PH_SC0_PA1_DATA_FIFO_RD', - 'PH_SC0_PA1_DATA_FIFO_WE', 'PH_SC0_PA1_DEALLOC_4_0_RD', - 'PH_SC0_PA1_EOPG_WE', 'PH_SC0_PA1_EOP_WE', 'PH_SC0_PA1_EVENT_WE', - 'PH_SC0_PA1_FIFO_EMPTY', 'PH_SC0_PA1_FIFO_FULL', - 'PH_SC0_PA1_FPOV_WE', 'PH_SC0_PA1_LPOV_WE', 'PH_SC0_PA1_NULL_WE', - 'PH_SC0_PA2_DATA_FIFO_EOP_RD', 'PH_SC0_PA2_DATA_FIFO_RD', - 'PH_SC0_PA2_DATA_FIFO_WE', 'PH_SC0_PA2_DEALLOC_4_0_RD', - 'PH_SC0_PA2_EOPG_WE', 'PH_SC0_PA2_EOP_WE', 'PH_SC0_PA2_EVENT_WE', - 'PH_SC0_PA2_FIFO_EMPTY', 'PH_SC0_PA2_FIFO_FULL', - 'PH_SC0_PA2_FPOV_WE', 'PH_SC0_PA2_LPOV_WE', 'PH_SC0_PA2_NULL_WE', - 'PH_SC0_PA3_DATA_FIFO_EOP_RD', 'PH_SC0_PA3_DATA_FIFO_RD', - 'PH_SC0_PA3_DATA_FIFO_WE', 'PH_SC0_PA3_DEALLOC_4_0_RD', - 'PH_SC0_PA3_EOPG_WE', 'PH_SC0_PA3_EOP_WE', 'PH_SC0_PA3_EVENT_WE', - 'PH_SC0_PA3_FIFO_EMPTY', 'PH_SC0_PA3_FIFO_FULL', - 'PH_SC0_PA3_FPOV_WE', 'PH_SC0_PA3_LPOV_WE', 'PH_SC0_PA3_NULL_WE', - 'PH_SC0_PA4_DATA_FIFO_EOP_RD', 'PH_SC0_PA4_DATA_FIFO_RD', - 'PH_SC0_PA4_DATA_FIFO_WE', 'PH_SC0_PA4_DEALLOC_4_0_RD', - 'PH_SC0_PA4_EOPG_WE', 'PH_SC0_PA4_EOP_WE', 'PH_SC0_PA4_EVENT_WE', - 'PH_SC0_PA4_FIFO_EMPTY', 'PH_SC0_PA4_FIFO_FULL', - 'PH_SC0_PA4_FPOV_WE', 'PH_SC0_PA4_LPOV_WE', 'PH_SC0_PA4_NULL_WE', - 'PH_SC0_PA5_DATA_FIFO_EOP_RD', 'PH_SC0_PA5_DATA_FIFO_RD', - 'PH_SC0_PA5_DATA_FIFO_WE', 'PH_SC0_PA5_DEALLOC_4_0_RD', - 'PH_SC0_PA5_EOPG_WE', 'PH_SC0_PA5_EOP_WE', 'PH_SC0_PA5_EVENT_WE', - 'PH_SC0_PA5_FIFO_EMPTY', 'PH_SC0_PA5_FIFO_FULL', - 'PH_SC0_PA5_FPOV_WE', 'PH_SC0_PA5_LPOV_WE', 'PH_SC0_PA5_NULL_WE', - 'PH_SC0_PA6_DATA_FIFO_EOP_RD', 'PH_SC0_PA6_DATA_FIFO_RD', - 'PH_SC0_PA6_DATA_FIFO_WE', 'PH_SC0_PA6_DEALLOC_4_0_RD', - 'PH_SC0_PA6_EOPG_WE', 'PH_SC0_PA6_EOP_WE', 'PH_SC0_PA6_EVENT_WE', - 'PH_SC0_PA6_FIFO_EMPTY', 'PH_SC0_PA6_FIFO_FULL', - 'PH_SC0_PA6_FPOV_WE', 'PH_SC0_PA6_LPOV_WE', 'PH_SC0_PA6_NULL_WE', - 'PH_SC0_PA7_DATA_FIFO_EOP_RD', 'PH_SC0_PA7_DATA_FIFO_RD', - 'PH_SC0_PA7_DATA_FIFO_WE', 'PH_SC0_PA7_DEALLOC_4_0_RD', - 'PH_SC0_PA7_EOPG_WE', 'PH_SC0_PA7_EOP_WE', 'PH_SC0_PA7_EVENT_WE', - 'PH_SC0_PA7_FIFO_EMPTY', 'PH_SC0_PA7_FIFO_FULL', - 'PH_SC0_PA7_FPOV_WE', 'PH_SC0_PA7_LPOV_WE', 'PH_SC0_PA7_NULL_WE', - 'PH_SC0_PS_ENG_MULTICYCLE_BUBBLE', 'PH_SC0_SEND', - 'PH_SC0_SRPS_WINDOW_VALID', 'PH_SC1_ARB_BUSY', - 'PH_SC1_ARB_EOP_POP_SYNC_POP', 'PH_SC1_ARB_EVENT_SYNC_POP', - 'PH_SC1_ARB_PA_BUSY_SOP', 'PH_SC1_ARB_STALLED_FROM_BELOW', - 'PH_SC1_ARB_STARVED_FROM_ABOVE', - 'PH_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_SC1_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_SC1_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_SC1_ARB_XFC_ONLY_PRIM_CYCLES', 'PH_SC1_BUSY_CNT_NOT_ZERO', - 'PH_SC1_BUSY_PROCESSING_MULTICYCLE_PRIM', 'PH_SC1_CREDIT_AT_MAX', - 'PH_SC1_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_SC1_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_SC1_EOP_SYNC_WINDOW', 'PH_SC1_GFX_PIPE0_TO_1_TRANSITION', - 'PH_SC1_GFX_PIPE1_TO_0_TRANSITION', - 'PH_SC1_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_SC1_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_SC1_PA0_DATA_FIFO_EOP_RD', 'PH_SC1_PA0_DATA_FIFO_RD', - 'PH_SC1_PA0_DATA_FIFO_WE', 'PH_SC1_PA0_DEALLOC_4_0_RD', - 'PH_SC1_PA0_EOPG_WE', 'PH_SC1_PA0_EOP_WE', 'PH_SC1_PA0_EVENT_WE', - 'PH_SC1_PA0_FIFO_EMPTY', 'PH_SC1_PA0_FIFO_FULL', - 'PH_SC1_PA0_FPOV_WE', 'PH_SC1_PA0_LPOV_WE', 'PH_SC1_PA0_NULL_WE', - 'PH_SC1_PA1_DATA_FIFO_EOP_RD', 'PH_SC1_PA1_DATA_FIFO_RD', - 'PH_SC1_PA1_DATA_FIFO_WE', 'PH_SC1_PA1_DEALLOC_4_0_RD', - 'PH_SC1_PA1_EOPG_WE', 'PH_SC1_PA1_EOP_WE', 'PH_SC1_PA1_EVENT_WE', - 'PH_SC1_PA1_FIFO_EMPTY', 'PH_SC1_PA1_FIFO_FULL', - 'PH_SC1_PA1_FPOV_WE', 'PH_SC1_PA1_LPOV_WE', 'PH_SC1_PA1_NULL_WE', - 'PH_SC1_PA2_DATA_FIFO_EOP_RD', 'PH_SC1_PA2_DATA_FIFO_RD', - 'PH_SC1_PA2_DATA_FIFO_WE', 'PH_SC1_PA2_DEALLOC_4_0_RD', - 'PH_SC1_PA2_EOPG_WE', 'PH_SC1_PA2_EOP_WE', 'PH_SC1_PA2_EVENT_WE', - 'PH_SC1_PA2_FIFO_EMPTY', 'PH_SC1_PA2_FIFO_FULL', - 'PH_SC1_PA2_FPOV_WE', 'PH_SC1_PA2_LPOV_WE', 'PH_SC1_PA2_NULL_WE', - 'PH_SC1_PA3_DATA_FIFO_EOP_RD', 'PH_SC1_PA3_DATA_FIFO_RD', - 'PH_SC1_PA3_DATA_FIFO_WE', 'PH_SC1_PA3_DEALLOC_4_0_RD', - 'PH_SC1_PA3_EOPG_WE', 'PH_SC1_PA3_EOP_WE', 'PH_SC1_PA3_EVENT_WE', - 'PH_SC1_PA3_FIFO_EMPTY', 'PH_SC1_PA3_FIFO_FULL', - 'PH_SC1_PA3_FPOV_WE', 'PH_SC1_PA3_LPOV_WE', 'PH_SC1_PA3_NULL_WE', - 'PH_SC1_PA4_DATA_FIFO_EOP_RD', 'PH_SC1_PA4_DATA_FIFO_RD', - 'PH_SC1_PA4_DATA_FIFO_WE', 'PH_SC1_PA4_DEALLOC_4_0_RD', - 'PH_SC1_PA4_EOPG_WE', 'PH_SC1_PA4_EOP_WE', 'PH_SC1_PA4_EVENT_WE', - 'PH_SC1_PA4_FIFO_EMPTY', 'PH_SC1_PA4_FIFO_FULL', - 'PH_SC1_PA4_FPOV_WE', 'PH_SC1_PA4_LPOV_WE', 'PH_SC1_PA4_NULL_WE', - 'PH_SC1_PA5_DATA_FIFO_EOP_RD', 'PH_SC1_PA5_DATA_FIFO_RD', - 'PH_SC1_PA5_DATA_FIFO_WE', 'PH_SC1_PA5_DEALLOC_4_0_RD', - 'PH_SC1_PA5_EOPG_WE', 'PH_SC1_PA5_EOP_WE', 'PH_SC1_PA5_EVENT_WE', - 'PH_SC1_PA5_FIFO_EMPTY', 'PH_SC1_PA5_FIFO_FULL', - 'PH_SC1_PA5_FPOV_WE', 'PH_SC1_PA5_LPOV_WE', 'PH_SC1_PA5_NULL_WE', - 'PH_SC1_PA6_DATA_FIFO_EOP_RD', 'PH_SC1_PA6_DATA_FIFO_RD', - 'PH_SC1_PA6_DATA_FIFO_WE', 'PH_SC1_PA6_DEALLOC_4_0_RD', - 'PH_SC1_PA6_EOPG_WE', 'PH_SC1_PA6_EOP_WE', 'PH_SC1_PA6_EVENT_WE', - 'PH_SC1_PA6_FIFO_EMPTY', 'PH_SC1_PA6_FIFO_FULL', - 'PH_SC1_PA6_FPOV_WE', 'PH_SC1_PA6_LPOV_WE', 'PH_SC1_PA6_NULL_WE', - 'PH_SC1_PA7_DATA_FIFO_EOP_RD', 'PH_SC1_PA7_DATA_FIFO_RD', - 'PH_SC1_PA7_DATA_FIFO_WE', 'PH_SC1_PA7_DEALLOC_4_0_RD', - 'PH_SC1_PA7_EOPG_WE', 'PH_SC1_PA7_EOP_WE', 'PH_SC1_PA7_EVENT_WE', - 'PH_SC1_PA7_FIFO_EMPTY', 'PH_SC1_PA7_FIFO_FULL', - 'PH_SC1_PA7_FPOV_WE', 'PH_SC1_PA7_LPOV_WE', 'PH_SC1_PA7_NULL_WE', - 'PH_SC1_PS_ENG_MULTICYCLE_BUBBLE', 'PH_SC1_SEND', - 'PH_SC1_SRPS_WINDOW_VALID', 'PH_SC2_ARB_BUSY', - 'PH_SC2_ARB_EOP_POP_SYNC_POP', 'PH_SC2_ARB_EVENT_SYNC_POP', - 'PH_SC2_ARB_PA_BUSY_SOP', 'PH_SC2_ARB_STALLED_FROM_BELOW', - 'PH_SC2_ARB_STARVED_FROM_ABOVE', - 'PH_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_SC2_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_SC2_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_SC2_ARB_XFC_ONLY_PRIM_CYCLES', 'PH_SC2_BUSY_CNT_NOT_ZERO', - 'PH_SC2_BUSY_PROCESSING_MULTICYCLE_PRIM', 'PH_SC2_CREDIT_AT_MAX', - 'PH_SC2_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_SC2_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_SC2_EOP_SYNC_WINDOW', 'PH_SC2_GFX_PIPE0_TO_1_TRANSITION', - 'PH_SC2_GFX_PIPE1_TO_0_TRANSITION', - 'PH_SC2_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_SC2_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_SC2_PA0_DATA_FIFO_EOP_RD', 'PH_SC2_PA0_DATA_FIFO_RD', - 'PH_SC2_PA0_DATA_FIFO_WE', 'PH_SC2_PA0_DEALLOC_4_0_RD', - 'PH_SC2_PA0_EOPG_WE', 'PH_SC2_PA0_EOP_WE', 'PH_SC2_PA0_EVENT_WE', - 'PH_SC2_PA0_FIFO_EMPTY', 'PH_SC2_PA0_FIFO_FULL', - 'PH_SC2_PA0_FPOV_WE', 'PH_SC2_PA0_LPOV_WE', 'PH_SC2_PA0_NULL_WE', - 'PH_SC2_PA1_DATA_FIFO_EOP_RD', 'PH_SC2_PA1_DATA_FIFO_RD', - 'PH_SC2_PA1_DATA_FIFO_WE', 'PH_SC2_PA1_DEALLOC_4_0_RD', - 'PH_SC2_PA1_EOPG_WE', 'PH_SC2_PA1_EOP_WE', 'PH_SC2_PA1_EVENT_WE', - 'PH_SC2_PA1_FIFO_EMPTY', 'PH_SC2_PA1_FIFO_FULL', - 'PH_SC2_PA1_FPOV_WE', 'PH_SC2_PA1_LPOV_WE', 'PH_SC2_PA1_NULL_WE', - 'PH_SC2_PA2_DATA_FIFO_EOP_RD', 'PH_SC2_PA2_DATA_FIFO_RD', - 'PH_SC2_PA2_DATA_FIFO_WE', 'PH_SC2_PA2_DEALLOC_4_0_RD', - 'PH_SC2_PA2_EOPG_WE', 'PH_SC2_PA2_EOP_WE', 'PH_SC2_PA2_EVENT_WE', - 'PH_SC2_PA2_FIFO_EMPTY', 'PH_SC2_PA2_FIFO_FULL', - 'PH_SC2_PA2_FPOV_WE', 'PH_SC2_PA2_LPOV_WE', 'PH_SC2_PA2_NULL_WE', - 'PH_SC2_PA3_DATA_FIFO_EOP_RD', 'PH_SC2_PA3_DATA_FIFO_RD', - 'PH_SC2_PA3_DATA_FIFO_WE', 'PH_SC2_PA3_DEALLOC_4_0_RD', - 'PH_SC2_PA3_EOPG_WE', 'PH_SC2_PA3_EOP_WE', 'PH_SC2_PA3_EVENT_WE', - 'PH_SC2_PA3_FIFO_EMPTY', 'PH_SC2_PA3_FIFO_FULL', - 'PH_SC2_PA3_FPOV_WE', 'PH_SC2_PA3_LPOV_WE', 'PH_SC2_PA3_NULL_WE', - 'PH_SC2_PA4_DATA_FIFO_EOP_RD', 'PH_SC2_PA4_DATA_FIFO_RD', - 'PH_SC2_PA4_DATA_FIFO_WE', 'PH_SC2_PA4_DEALLOC_4_0_RD', - 'PH_SC2_PA4_EOPG_WE', 'PH_SC2_PA4_EOP_WE', 'PH_SC2_PA4_EVENT_WE', - 'PH_SC2_PA4_FIFO_EMPTY', 'PH_SC2_PA4_FIFO_FULL', - 'PH_SC2_PA4_FPOV_WE', 'PH_SC2_PA4_LPOV_WE', 'PH_SC2_PA4_NULL_WE', - 'PH_SC2_PA5_DATA_FIFO_EOP_RD', 'PH_SC2_PA5_DATA_FIFO_RD', - 'PH_SC2_PA5_DATA_FIFO_WE', 'PH_SC2_PA5_DEALLOC_4_0_RD', - 'PH_SC2_PA5_EOPG_WE', 'PH_SC2_PA5_EOP_WE', 'PH_SC2_PA5_EVENT_WE', - 'PH_SC2_PA5_FIFO_EMPTY', 'PH_SC2_PA5_FIFO_FULL', - 'PH_SC2_PA5_FPOV_WE', 'PH_SC2_PA5_LPOV_WE', 'PH_SC2_PA5_NULL_WE', - 'PH_SC2_PA6_DATA_FIFO_EOP_RD', 'PH_SC2_PA6_DATA_FIFO_RD', - 'PH_SC2_PA6_DATA_FIFO_WE', 'PH_SC2_PA6_DEALLOC_4_0_RD', - 'PH_SC2_PA6_EOPG_WE', 'PH_SC2_PA6_EOP_WE', 'PH_SC2_PA6_EVENT_WE', - 'PH_SC2_PA6_FIFO_EMPTY', 'PH_SC2_PA6_FIFO_FULL', - 'PH_SC2_PA6_FPOV_WE', 'PH_SC2_PA6_LPOV_WE', 'PH_SC2_PA6_NULL_WE', - 'PH_SC2_PA7_DATA_FIFO_EOP_RD', 'PH_SC2_PA7_DATA_FIFO_RD', - 'PH_SC2_PA7_DATA_FIFO_WE', 'PH_SC2_PA7_DEALLOC_4_0_RD', - 'PH_SC2_PA7_EOPG_WE', 'PH_SC2_PA7_EOP_WE', 'PH_SC2_PA7_EVENT_WE', - 'PH_SC2_PA7_FIFO_EMPTY', 'PH_SC2_PA7_FIFO_FULL', - 'PH_SC2_PA7_FPOV_WE', 'PH_SC2_PA7_LPOV_WE', 'PH_SC2_PA7_NULL_WE', - 'PH_SC2_PS_ENG_MULTICYCLE_BUBBLE', 'PH_SC2_SEND', - 'PH_SC2_SRPS_WINDOW_VALID', 'PH_SC3_ARB_BUSY', - 'PH_SC3_ARB_EOP_POP_SYNC_POP', 'PH_SC3_ARB_EVENT_SYNC_POP', - 'PH_SC3_ARB_PA_BUSY_SOP', 'PH_SC3_ARB_STALLED_FROM_BELOW', - 'PH_SC3_ARB_STARVED_FROM_ABOVE', - 'PH_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_SC3_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_SC3_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_SC3_ARB_XFC_ONLY_PRIM_CYCLES', 'PH_SC3_BUSY_CNT_NOT_ZERO', - 'PH_SC3_BUSY_PROCESSING_MULTICYCLE_PRIM', 'PH_SC3_CREDIT_AT_MAX', - 'PH_SC3_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_SC3_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_SC3_EOP_SYNC_WINDOW', 'PH_SC3_GFX_PIPE0_TO_1_TRANSITION', - 'PH_SC3_GFX_PIPE1_TO_0_TRANSITION', - 'PH_SC3_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_SC3_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_SC3_PA0_DATA_FIFO_EOP_RD', 'PH_SC3_PA0_DATA_FIFO_RD', - 'PH_SC3_PA0_DATA_FIFO_WE', 'PH_SC3_PA0_DEALLOC_4_0_RD', - 'PH_SC3_PA0_EOPG_WE', 'PH_SC3_PA0_EOP_WE', 'PH_SC3_PA0_EVENT_WE', - 'PH_SC3_PA0_FIFO_EMPTY', 'PH_SC3_PA0_FIFO_FULL', - 'PH_SC3_PA0_FPOV_WE', 'PH_SC3_PA0_LPOV_WE', 'PH_SC3_PA0_NULL_WE', - 'PH_SC3_PA1_DATA_FIFO_EOP_RD', 'PH_SC3_PA1_DATA_FIFO_RD', - 'PH_SC3_PA1_DATA_FIFO_WE', 'PH_SC3_PA1_DEALLOC_4_0_RD', - 'PH_SC3_PA1_EOPG_WE', 'PH_SC3_PA1_EOP_WE', 'PH_SC3_PA1_EVENT_WE', - 'PH_SC3_PA1_FIFO_EMPTY', 'PH_SC3_PA1_FIFO_FULL', - 'PH_SC3_PA1_FPOV_WE', 'PH_SC3_PA1_LPOV_WE', 'PH_SC3_PA1_NULL_WE', - 'PH_SC3_PA2_DATA_FIFO_EOP_RD', 'PH_SC3_PA2_DATA_FIFO_RD', - 'PH_SC3_PA2_DATA_FIFO_WE', 'PH_SC3_PA2_DEALLOC_4_0_RD', - 'PH_SC3_PA2_EOPG_WE', 'PH_SC3_PA2_EOP_WE', 'PH_SC3_PA2_EVENT_WE', - 'PH_SC3_PA2_FIFO_EMPTY', 'PH_SC3_PA2_FIFO_FULL', - 'PH_SC3_PA2_FPOV_WE', 'PH_SC3_PA2_LPOV_WE', 'PH_SC3_PA2_NULL_WE', - 'PH_SC3_PA3_DATA_FIFO_EOP_RD', 'PH_SC3_PA3_DATA_FIFO_RD', - 'PH_SC3_PA3_DATA_FIFO_WE', 'PH_SC3_PA3_DEALLOC_4_0_RD', - 'PH_SC3_PA3_EOPG_WE', 'PH_SC3_PA3_EOP_WE', 'PH_SC3_PA3_EVENT_WE', - 'PH_SC3_PA3_FIFO_EMPTY', 'PH_SC3_PA3_FIFO_FULL', - 'PH_SC3_PA3_FPOV_WE', 'PH_SC3_PA3_LPOV_WE', 'PH_SC3_PA3_NULL_WE', - 'PH_SC3_PA4_DATA_FIFO_EOP_RD', 'PH_SC3_PA4_DATA_FIFO_RD', - 'PH_SC3_PA4_DATA_FIFO_WE', 'PH_SC3_PA4_DEALLOC_4_0_RD', - 'PH_SC3_PA4_EOPG_WE', 'PH_SC3_PA4_EOP_WE', 'PH_SC3_PA4_EVENT_WE', - 'PH_SC3_PA4_FIFO_EMPTY', 'PH_SC3_PA4_FIFO_FULL', - 'PH_SC3_PA4_FPOV_WE', 'PH_SC3_PA4_LPOV_WE', 'PH_SC3_PA4_NULL_WE', - 'PH_SC3_PA5_DATA_FIFO_EOP_RD', 'PH_SC3_PA5_DATA_FIFO_RD', - 'PH_SC3_PA5_DATA_FIFO_WE', 'PH_SC3_PA5_DEALLOC_4_0_RD', - 'PH_SC3_PA5_EOPG_WE', 'PH_SC3_PA5_EOP_WE', 'PH_SC3_PA5_EVENT_WE', - 'PH_SC3_PA5_FIFO_EMPTY', 'PH_SC3_PA5_FIFO_FULL', - 'PH_SC3_PA5_FPOV_WE', 'PH_SC3_PA5_LPOV_WE', 'PH_SC3_PA5_NULL_WE', - 'PH_SC3_PA6_DATA_FIFO_EOP_RD', 'PH_SC3_PA6_DATA_FIFO_RD', - 'PH_SC3_PA6_DATA_FIFO_WE', 'PH_SC3_PA6_DEALLOC_4_0_RD', - 'PH_SC3_PA6_EOPG_WE', 'PH_SC3_PA6_EOP_WE', 'PH_SC3_PA6_EVENT_WE', - 'PH_SC3_PA6_FIFO_EMPTY', 'PH_SC3_PA6_FIFO_FULL', - 'PH_SC3_PA6_FPOV_WE', 'PH_SC3_PA6_LPOV_WE', 'PH_SC3_PA6_NULL_WE', - 'PH_SC3_PA7_DATA_FIFO_EOP_RD', 'PH_SC3_PA7_DATA_FIFO_RD', - 'PH_SC3_PA7_DATA_FIFO_WE', 'PH_SC3_PA7_DEALLOC_4_0_RD', - 'PH_SC3_PA7_EOPG_WE', 'PH_SC3_PA7_EOP_WE', 'PH_SC3_PA7_EVENT_WE', - 'PH_SC3_PA7_FIFO_EMPTY', 'PH_SC3_PA7_FIFO_FULL', - 'PH_SC3_PA7_FPOV_WE', 'PH_SC3_PA7_LPOV_WE', 'PH_SC3_PA7_NULL_WE', - 'PH_SC3_PS_ENG_MULTICYCLE_BUBBLE', 'PH_SC3_SEND', - 'PH_SC3_SRPS_WINDOW_VALID', 'PH_SC4_ARB_BUSY', - 'PH_SC4_ARB_EOP_POP_SYNC_POP', 'PH_SC4_ARB_EVENT_SYNC_POP', - 'PH_SC4_ARB_PA_BUSY_SOP', 'PH_SC4_ARB_STALLED_FROM_BELOW', - 'PH_SC4_ARB_STARVED_FROM_ABOVE', - 'PH_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_SC4_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_SC4_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_SC4_ARB_XFC_ONLY_PRIM_CYCLES', 'PH_SC4_BUSY_CNT_NOT_ZERO', - 'PH_SC4_BUSY_PROCESSING_MULTICYCLE_PRIM', 'PH_SC4_CREDIT_AT_MAX', - 'PH_SC4_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_SC4_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_SC4_EOP_SYNC_WINDOW', 'PH_SC4_GFX_PIPE0_TO_1_TRANSITION', - 'PH_SC4_GFX_PIPE1_TO_0_TRANSITION', - 'PH_SC4_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_SC4_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_SC4_PA0_DATA_FIFO_EOP_RD', 'PH_SC4_PA0_DATA_FIFO_RD', - 'PH_SC4_PA0_DATA_FIFO_WE', 'PH_SC4_PA0_DEALLOC_4_0_RD', - 'PH_SC4_PA0_EOPG_WE', 'PH_SC4_PA0_EOP_WE', 'PH_SC4_PA0_EVENT_WE', - 'PH_SC4_PA0_FIFO_EMPTY', 'PH_SC4_PA0_FIFO_FULL', - 'PH_SC4_PA0_FPOV_WE', 'PH_SC4_PA0_LPOV_WE', 'PH_SC4_PA0_NULL_WE', - 'PH_SC4_PA1_DATA_FIFO_EOP_RD', 'PH_SC4_PA1_DATA_FIFO_RD', - 'PH_SC4_PA1_DATA_FIFO_WE', 'PH_SC4_PA1_DEALLOC_4_0_RD', - 'PH_SC4_PA1_EOPG_WE', 'PH_SC4_PA1_EOP_WE', 'PH_SC4_PA1_EVENT_WE', - 'PH_SC4_PA1_FIFO_EMPTY', 'PH_SC4_PA1_FIFO_FULL', - 'PH_SC4_PA1_FPOV_WE', 'PH_SC4_PA1_LPOV_WE', 'PH_SC4_PA1_NULL_WE', - 'PH_SC4_PA2_DATA_FIFO_EOP_RD', 'PH_SC4_PA2_DATA_FIFO_RD', - 'PH_SC4_PA2_DATA_FIFO_WE', 'PH_SC4_PA2_DEALLOC_4_0_RD', - 'PH_SC4_PA2_EOPG_WE', 'PH_SC4_PA2_EOP_WE', 'PH_SC4_PA2_EVENT_WE', - 'PH_SC4_PA2_FIFO_EMPTY', 'PH_SC4_PA2_FIFO_FULL', - 'PH_SC4_PA2_FPOV_WE', 'PH_SC4_PA2_LPOV_WE', 'PH_SC4_PA2_NULL_WE', - 'PH_SC4_PA3_DATA_FIFO_EOP_RD', 'PH_SC4_PA3_DATA_FIFO_RD', - 'PH_SC4_PA3_DATA_FIFO_WE', 'PH_SC4_PA3_DEALLOC_4_0_RD', - 'PH_SC4_PA3_EOPG_WE', 'PH_SC4_PA3_EOP_WE', 'PH_SC4_PA3_EVENT_WE', - 'PH_SC4_PA3_FIFO_EMPTY', 'PH_SC4_PA3_FIFO_FULL', - 'PH_SC4_PA3_FPOV_WE', 'PH_SC4_PA3_LPOV_WE', 'PH_SC4_PA3_NULL_WE', - 'PH_SC4_PA4_DATA_FIFO_EOP_RD', 'PH_SC4_PA4_DATA_FIFO_RD', - 'PH_SC4_PA4_DATA_FIFO_WE', 'PH_SC4_PA4_DEALLOC_4_0_RD', - 'PH_SC4_PA4_EOPG_WE', 'PH_SC4_PA4_EOP_WE', 'PH_SC4_PA4_EVENT_WE', - 'PH_SC4_PA4_FIFO_EMPTY', 'PH_SC4_PA4_FIFO_FULL', - 'PH_SC4_PA4_FPOV_WE', 'PH_SC4_PA4_LPOV_WE', 'PH_SC4_PA4_NULL_WE', - 'PH_SC4_PA5_DATA_FIFO_EOP_RD', 'PH_SC4_PA5_DATA_FIFO_RD', - 'PH_SC4_PA5_DATA_FIFO_WE', 'PH_SC4_PA5_DEALLOC_4_0_RD', - 'PH_SC4_PA5_EOPG_WE', 'PH_SC4_PA5_EOP_WE', 'PH_SC4_PA5_EVENT_WE', - 'PH_SC4_PA5_FIFO_EMPTY', 'PH_SC4_PA5_FIFO_FULL', - 'PH_SC4_PA5_FPOV_WE', 'PH_SC4_PA5_LPOV_WE', 'PH_SC4_PA5_NULL_WE', - 'PH_SC4_PA6_DATA_FIFO_EOP_RD', 'PH_SC4_PA6_DATA_FIFO_RD', - 'PH_SC4_PA6_DATA_FIFO_WE', 'PH_SC4_PA6_DEALLOC_4_0_RD', - 'PH_SC4_PA6_EOPG_WE', 'PH_SC4_PA6_EOP_WE', 'PH_SC4_PA6_EVENT_WE', - 'PH_SC4_PA6_FIFO_EMPTY', 'PH_SC4_PA6_FIFO_FULL', - 'PH_SC4_PA6_FPOV_WE', 'PH_SC4_PA6_LPOV_WE', 'PH_SC4_PA6_NULL_WE', - 'PH_SC4_PA7_DATA_FIFO_EOP_RD', 'PH_SC4_PA7_DATA_FIFO_RD', - 'PH_SC4_PA7_DATA_FIFO_WE', 'PH_SC4_PA7_DEALLOC_4_0_RD', - 'PH_SC4_PA7_EOPG_WE', 'PH_SC4_PA7_EOP_WE', 'PH_SC4_PA7_EVENT_WE', - 'PH_SC4_PA7_FIFO_EMPTY', 'PH_SC4_PA7_FIFO_FULL', - 'PH_SC4_PA7_FPOV_WE', 'PH_SC4_PA7_LPOV_WE', 'PH_SC4_PA7_NULL_WE', - 'PH_SC4_PS_ENG_MULTICYCLE_BUBBLE', 'PH_SC4_SEND', - 'PH_SC4_SRPS_WINDOW_VALID', 'PH_SC5_ARB_BUSY', - 'PH_SC5_ARB_EOP_POP_SYNC_POP', 'PH_SC5_ARB_EVENT_SYNC_POP', - 'PH_SC5_ARB_PA_BUSY_SOP', 'PH_SC5_ARB_STALLED_FROM_BELOW', - 'PH_SC5_ARB_STARVED_FROM_ABOVE', - 'PH_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_SC5_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_SC5_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_SC5_ARB_XFC_ONLY_PRIM_CYCLES', 'PH_SC5_BUSY_CNT_NOT_ZERO', - 'PH_SC5_BUSY_PROCESSING_MULTICYCLE_PRIM', 'PH_SC5_CREDIT_AT_MAX', - 'PH_SC5_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_SC5_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_SC5_EOP_SYNC_WINDOW', 'PH_SC5_GFX_PIPE0_TO_1_TRANSITION', - 'PH_SC5_GFX_PIPE1_TO_0_TRANSITION', - 'PH_SC5_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_SC5_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_SC5_PA0_DATA_FIFO_EOP_RD', 'PH_SC5_PA0_DATA_FIFO_RD', - 'PH_SC5_PA0_DATA_FIFO_WE', 'PH_SC5_PA0_DEALLOC_4_0_RD', - 'PH_SC5_PA0_EOPG_WE', 'PH_SC5_PA0_EOP_WE', 'PH_SC5_PA0_EVENT_WE', - 'PH_SC5_PA0_FIFO_EMPTY', 'PH_SC5_PA0_FIFO_FULL', - 'PH_SC5_PA0_FPOV_WE', 'PH_SC5_PA0_LPOV_WE', 'PH_SC5_PA0_NULL_WE', - 'PH_SC5_PA1_DATA_FIFO_EOP_RD', 'PH_SC5_PA1_DATA_FIFO_RD', - 'PH_SC5_PA1_DATA_FIFO_WE', 'PH_SC5_PA1_DEALLOC_4_0_RD', - 'PH_SC5_PA1_EOPG_WE', 'PH_SC5_PA1_EOP_WE', 'PH_SC5_PA1_EVENT_WE', - 'PH_SC5_PA1_FIFO_EMPTY', 'PH_SC5_PA1_FIFO_FULL', - 'PH_SC5_PA1_FPOV_WE', 'PH_SC5_PA1_LPOV_WE', 'PH_SC5_PA1_NULL_WE', - 'PH_SC5_PA2_DATA_FIFO_EOP_RD', 'PH_SC5_PA2_DATA_FIFO_RD', - 'PH_SC5_PA2_DATA_FIFO_WE', 'PH_SC5_PA2_DEALLOC_4_0_RD', - 'PH_SC5_PA2_EOPG_WE', 'PH_SC5_PA2_EOP_WE', 'PH_SC5_PA2_EVENT_WE', - 'PH_SC5_PA2_FIFO_EMPTY', 'PH_SC5_PA2_FIFO_FULL', - 'PH_SC5_PA2_FPOV_WE', 'PH_SC5_PA2_LPOV_WE', 'PH_SC5_PA2_NULL_WE', - 'PH_SC5_PA3_DATA_FIFO_EOP_RD', 'PH_SC5_PA3_DATA_FIFO_RD', - 'PH_SC5_PA3_DATA_FIFO_WE', 'PH_SC5_PA3_DEALLOC_4_0_RD', - 'PH_SC5_PA3_EOPG_WE', 'PH_SC5_PA3_EOP_WE', 'PH_SC5_PA3_EVENT_WE', - 'PH_SC5_PA3_FIFO_EMPTY', 'PH_SC5_PA3_FIFO_FULL', - 'PH_SC5_PA3_FPOV_WE', 'PH_SC5_PA3_LPOV_WE', 'PH_SC5_PA3_NULL_WE', - 'PH_SC5_PA4_DATA_FIFO_EOP_RD', 'PH_SC5_PA4_DATA_FIFO_RD', - 'PH_SC5_PA4_DATA_FIFO_WE', 'PH_SC5_PA4_DEALLOC_4_0_RD', - 'PH_SC5_PA4_EOPG_WE', 'PH_SC5_PA4_EOP_WE', 'PH_SC5_PA4_EVENT_WE', - 'PH_SC5_PA4_FIFO_EMPTY', 'PH_SC5_PA4_FIFO_FULL', - 'PH_SC5_PA4_FPOV_WE', 'PH_SC5_PA4_LPOV_WE', 'PH_SC5_PA4_NULL_WE', - 'PH_SC5_PA5_DATA_FIFO_EOP_RD', 'PH_SC5_PA5_DATA_FIFO_RD', - 'PH_SC5_PA5_DATA_FIFO_WE', 'PH_SC5_PA5_DEALLOC_4_0_RD', - 'PH_SC5_PA5_EOPG_WE', 'PH_SC5_PA5_EOP_WE', 'PH_SC5_PA5_EVENT_WE', - 'PH_SC5_PA5_FIFO_EMPTY', 'PH_SC5_PA5_FIFO_FULL', - 'PH_SC5_PA5_FPOV_WE', 'PH_SC5_PA5_LPOV_WE', 'PH_SC5_PA5_NULL_WE', - 'PH_SC5_PA6_DATA_FIFO_EOP_RD', 'PH_SC5_PA6_DATA_FIFO_RD', - 'PH_SC5_PA6_DATA_FIFO_WE', 'PH_SC5_PA6_DEALLOC_4_0_RD', - 'PH_SC5_PA6_EOPG_WE', 'PH_SC5_PA6_EOP_WE', 'PH_SC5_PA6_EVENT_WE', - 'PH_SC5_PA6_FIFO_EMPTY', 'PH_SC5_PA6_FIFO_FULL', - 'PH_SC5_PA6_FPOV_WE', 'PH_SC5_PA6_LPOV_WE', 'PH_SC5_PA6_NULL_WE', - 'PH_SC5_PA7_DATA_FIFO_EOP_RD', 'PH_SC5_PA7_DATA_FIFO_RD', - 'PH_SC5_PA7_DATA_FIFO_WE', 'PH_SC5_PA7_DEALLOC_4_0_RD', - 'PH_SC5_PA7_EOPG_WE', 'PH_SC5_PA7_EOP_WE', 'PH_SC5_PA7_EVENT_WE', - 'PH_SC5_PA7_FIFO_EMPTY', 'PH_SC5_PA7_FIFO_FULL', - 'PH_SC5_PA7_FPOV_WE', 'PH_SC5_PA7_LPOV_WE', 'PH_SC5_PA7_NULL_WE', - 'PH_SC5_PS_ENG_MULTICYCLE_BUBBLE', 'PH_SC5_SEND', - 'PH_SC5_SRPS_WINDOW_VALID', 'PH_SC6_ARB_BUSY', - 'PH_SC6_ARB_EOP_POP_SYNC_POP', 'PH_SC6_ARB_EVENT_SYNC_POP', - 'PH_SC6_ARB_PA_BUSY_SOP', 'PH_SC6_ARB_STALLED_FROM_BELOW', - 'PH_SC6_ARB_STARVED_FROM_ABOVE', - 'PH_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_SC6_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_SC6_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_SC6_ARB_XFC_ONLY_PRIM_CYCLES', 'PH_SC6_BUSY_CNT_NOT_ZERO', - 'PH_SC6_BUSY_PROCESSING_MULTICYCLE_PRIM', 'PH_SC6_CREDIT_AT_MAX', - 'PH_SC6_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_SC6_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_SC6_EOP_SYNC_WINDOW', 'PH_SC6_GFX_PIPE0_TO_1_TRANSITION', - 'PH_SC6_GFX_PIPE1_TO_0_TRANSITION', - 'PH_SC6_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_SC6_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_SC6_PA0_DATA_FIFO_EOP_RD', 'PH_SC6_PA0_DATA_FIFO_RD', - 'PH_SC6_PA0_DATA_FIFO_WE', 'PH_SC6_PA0_DEALLOC_4_0_RD', - 'PH_SC6_PA0_EOPG_WE', 'PH_SC6_PA0_EOP_WE', 'PH_SC6_PA0_EVENT_WE', - 'PH_SC6_PA0_FIFO_EMPTY', 'PH_SC6_PA0_FIFO_FULL', - 'PH_SC6_PA0_FPOV_WE', 'PH_SC6_PA0_LPOV_WE', 'PH_SC6_PA0_NULL_WE', - 'PH_SC6_PA1_DATA_FIFO_EOP_RD', 'PH_SC6_PA1_DATA_FIFO_RD', - 'PH_SC6_PA1_DATA_FIFO_WE', 'PH_SC6_PA1_DEALLOC_4_0_RD', - 'PH_SC6_PA1_EOPG_WE', 'PH_SC6_PA1_EOP_WE', 'PH_SC6_PA1_EVENT_WE', - 'PH_SC6_PA1_FIFO_EMPTY', 'PH_SC6_PA1_FIFO_FULL', - 'PH_SC6_PA1_FPOV_WE', 'PH_SC6_PA1_LPOV_WE', 'PH_SC6_PA1_NULL_WE', - 'PH_SC6_PA2_DATA_FIFO_EOP_RD', 'PH_SC6_PA2_DATA_FIFO_RD', - 'PH_SC6_PA2_DATA_FIFO_WE', 'PH_SC6_PA2_DEALLOC_4_0_RD', - 'PH_SC6_PA2_EOPG_WE', 'PH_SC6_PA2_EOP_WE', 'PH_SC6_PA2_EVENT_WE', - 'PH_SC6_PA2_FIFO_EMPTY', 'PH_SC6_PA2_FIFO_FULL', - 'PH_SC6_PA2_FPOV_WE', 'PH_SC6_PA2_LPOV_WE', 'PH_SC6_PA2_NULL_WE', - 'PH_SC6_PA3_DATA_FIFO_EOP_RD', 'PH_SC6_PA3_DATA_FIFO_RD', - 'PH_SC6_PA3_DATA_FIFO_WE', 'PH_SC6_PA3_DEALLOC_4_0_RD', - 'PH_SC6_PA3_EOPG_WE', 'PH_SC6_PA3_EOP_WE', 'PH_SC6_PA3_EVENT_WE', - 'PH_SC6_PA3_FIFO_EMPTY', 'PH_SC6_PA3_FIFO_FULL', - 'PH_SC6_PA3_FPOV_WE', 'PH_SC6_PA3_LPOV_WE', 'PH_SC6_PA3_NULL_WE', - 'PH_SC6_PA4_DATA_FIFO_EOP_RD', 'PH_SC6_PA4_DATA_FIFO_RD', - 'PH_SC6_PA4_DATA_FIFO_WE', 'PH_SC6_PA4_DEALLOC_4_0_RD', - 'PH_SC6_PA4_EOPG_WE', 'PH_SC6_PA4_EOP_WE', 'PH_SC6_PA4_EVENT_WE', - 'PH_SC6_PA4_FIFO_EMPTY', 'PH_SC6_PA4_FIFO_FULL', - 'PH_SC6_PA4_FPOV_WE', 'PH_SC6_PA4_LPOV_WE', 'PH_SC6_PA4_NULL_WE', - 'PH_SC6_PA5_DATA_FIFO_EOP_RD', 'PH_SC6_PA5_DATA_FIFO_RD', - 'PH_SC6_PA5_DATA_FIFO_WE', 'PH_SC6_PA5_DEALLOC_4_0_RD', - 'PH_SC6_PA5_EOPG_WE', 'PH_SC6_PA5_EOP_WE', 'PH_SC6_PA5_EVENT_WE', - 'PH_SC6_PA5_FIFO_EMPTY', 'PH_SC6_PA5_FIFO_FULL', - 'PH_SC6_PA5_FPOV_WE', 'PH_SC6_PA5_LPOV_WE', 'PH_SC6_PA5_NULL_WE', - 'PH_SC6_PA6_DATA_FIFO_EOP_RD', 'PH_SC6_PA6_DATA_FIFO_RD', - 'PH_SC6_PA6_DATA_FIFO_WE', 'PH_SC6_PA6_DEALLOC_4_0_RD', - 'PH_SC6_PA6_EOPG_WE', 'PH_SC6_PA6_EOP_WE', 'PH_SC6_PA6_EVENT_WE', - 'PH_SC6_PA6_FIFO_EMPTY', 'PH_SC6_PA6_FIFO_FULL', - 'PH_SC6_PA6_FPOV_WE', 'PH_SC6_PA6_LPOV_WE', 'PH_SC6_PA6_NULL_WE', - 'PH_SC6_PA7_DATA_FIFO_EOP_RD', 'PH_SC6_PA7_DATA_FIFO_RD', - 'PH_SC6_PA7_DATA_FIFO_WE', 'PH_SC6_PA7_DEALLOC_4_0_RD', - 'PH_SC6_PA7_EOPG_WE', 'PH_SC6_PA7_EOP_WE', 'PH_SC6_PA7_EVENT_WE', - 'PH_SC6_PA7_FIFO_EMPTY', 'PH_SC6_PA7_FIFO_FULL', - 'PH_SC6_PA7_FPOV_WE', 'PH_SC6_PA7_LPOV_WE', 'PH_SC6_PA7_NULL_WE', - 'PH_SC6_PS_ENG_MULTICYCLE_BUBBLE', 'PH_SC6_SEND', - 'PH_SC6_SRPS_WINDOW_VALID', 'PH_SC7_ARB_BUSY', - 'PH_SC7_ARB_EOP_POP_SYNC_POP', 'PH_SC7_ARB_EVENT_SYNC_POP', - 'PH_SC7_ARB_PA_BUSY_SOP', 'PH_SC7_ARB_STALLED_FROM_BELOW', - 'PH_SC7_ARB_STARVED_FROM_ABOVE', - 'PH_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_SC7_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_SC7_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_SC7_ARB_XFC_ONLY_PRIM_CYCLES', 'PH_SC7_BUSY_CNT_NOT_ZERO', - 'PH_SC7_BUSY_PROCESSING_MULTICYCLE_PRIM', 'PH_SC7_CREDIT_AT_MAX', - 'PH_SC7_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_SC7_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_SC7_EOP_SYNC_WINDOW', 'PH_SC7_GFX_PIPE0_TO_1_TRANSITION', - 'PH_SC7_GFX_PIPE1_TO_0_TRANSITION', - 'PH_SC7_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_SC7_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_SC7_PA0_DATA_FIFO_EOP_RD', 'PH_SC7_PA0_DATA_FIFO_RD', - 'PH_SC7_PA0_DATA_FIFO_WE', 'PH_SC7_PA0_DEALLOC_4_0_RD', - 'PH_SC7_PA0_EOPG_WE', 'PH_SC7_PA0_EOP_WE', 'PH_SC7_PA0_EVENT_WE', - 'PH_SC7_PA0_FIFO_EMPTY', 'PH_SC7_PA0_FIFO_FULL', - 'PH_SC7_PA0_FPOV_WE', 'PH_SC7_PA0_LPOV_WE', 'PH_SC7_PA0_NULL_WE', - 'PH_SC7_PA1_DATA_FIFO_EOP_RD', 'PH_SC7_PA1_DATA_FIFO_RD', - 'PH_SC7_PA1_DATA_FIFO_WE', 'PH_SC7_PA1_DEALLOC_4_0_RD', - 'PH_SC7_PA1_EOPG_WE', 'PH_SC7_PA1_EOP_WE', 'PH_SC7_PA1_EVENT_WE', - 'PH_SC7_PA1_FIFO_EMPTY', 'PH_SC7_PA1_FIFO_FULL', - 'PH_SC7_PA1_FPOV_WE', 'PH_SC7_PA1_LPOV_WE', 'PH_SC7_PA1_NULL_WE', - 'PH_SC7_PA2_DATA_FIFO_EOP_RD', 'PH_SC7_PA2_DATA_FIFO_RD', - 'PH_SC7_PA2_DATA_FIFO_WE', 'PH_SC7_PA2_DEALLOC_4_0_RD', - 'PH_SC7_PA2_EOPG_WE', 'PH_SC7_PA2_EOP_WE', 'PH_SC7_PA2_EVENT_WE', - 'PH_SC7_PA2_FIFO_EMPTY', 'PH_SC7_PA2_FIFO_FULL', - 'PH_SC7_PA2_FPOV_WE', 'PH_SC7_PA2_LPOV_WE', 'PH_SC7_PA2_NULL_WE', - 'PH_SC7_PA3_DATA_FIFO_EOP_RD', 'PH_SC7_PA3_DATA_FIFO_RD', - 'PH_SC7_PA3_DATA_FIFO_WE', 'PH_SC7_PA3_DEALLOC_4_0_RD', - 'PH_SC7_PA3_EOPG_WE', 'PH_SC7_PA3_EOP_WE', 'PH_SC7_PA3_EVENT_WE', - 'PH_SC7_PA3_FIFO_EMPTY', 'PH_SC7_PA3_FIFO_FULL', - 'PH_SC7_PA3_FPOV_WE', 'PH_SC7_PA3_LPOV_WE', 'PH_SC7_PA3_NULL_WE', - 'PH_SC7_PA4_DATA_FIFO_EOP_RD', 'PH_SC7_PA4_DATA_FIFO_RD', - 'PH_SC7_PA4_DATA_FIFO_WE', 'PH_SC7_PA4_DEALLOC_4_0_RD', - 'PH_SC7_PA4_EOPG_WE', 'PH_SC7_PA4_EOP_WE', 'PH_SC7_PA4_EVENT_WE', - 'PH_SC7_PA4_FIFO_EMPTY', 'PH_SC7_PA4_FIFO_FULL', - 'PH_SC7_PA4_FPOV_WE', 'PH_SC7_PA4_LPOV_WE', 'PH_SC7_PA4_NULL_WE', - 'PH_SC7_PA5_DATA_FIFO_EOP_RD', 'PH_SC7_PA5_DATA_FIFO_RD', - 'PH_SC7_PA5_DATA_FIFO_WE', 'PH_SC7_PA5_DEALLOC_4_0_RD', - 'PH_SC7_PA5_EOPG_WE', 'PH_SC7_PA5_EOP_WE', 'PH_SC7_PA5_EVENT_WE', - 'PH_SC7_PA5_FIFO_EMPTY', 'PH_SC7_PA5_FIFO_FULL', - 'PH_SC7_PA5_FPOV_WE', 'PH_SC7_PA5_LPOV_WE', 'PH_SC7_PA5_NULL_WE', - 'PH_SC7_PA6_DATA_FIFO_EOP_RD', 'PH_SC7_PA6_DATA_FIFO_RD', - 'PH_SC7_PA6_DATA_FIFO_WE', 'PH_SC7_PA6_DEALLOC_4_0_RD', - 'PH_SC7_PA6_EOPG_WE', 'PH_SC7_PA6_EOP_WE', 'PH_SC7_PA6_EVENT_WE', - 'PH_SC7_PA6_FIFO_EMPTY', 'PH_SC7_PA6_FIFO_FULL', - 'PH_SC7_PA6_FPOV_WE', 'PH_SC7_PA6_LPOV_WE', 'PH_SC7_PA6_NULL_WE', - 'PH_SC7_PA7_DATA_FIFO_EOP_RD', 'PH_SC7_PA7_DATA_FIFO_RD', - 'PH_SC7_PA7_DATA_FIFO_WE', 'PH_SC7_PA7_DEALLOC_4_0_RD', - 'PH_SC7_PA7_EOPG_WE', 'PH_SC7_PA7_EOP_WE', 'PH_SC7_PA7_EVENT_WE', - 'PH_SC7_PA7_FIFO_EMPTY', 'PH_SC7_PA7_FIFO_FULL', - 'PH_SC7_PA7_FPOV_WE', 'PH_SC7_PA7_LPOV_WE', 'PH_SC7_PA7_NULL_WE', - 'PH_SC7_PS_ENG_MULTICYCLE_BUBBLE', 'PH_SC7_SEND', - 'PH_SC7_SRPS_WINDOW_VALID', 'PIPELINESTAT_START', - 'PIPELINESTAT_STOP', 'PIPE_ALIGNED', 'PIPE_ALIGNED_SURF', - 'PIPE_CONFIG', 'PIPE_ID0', 'PIPE_ID1', 'PIPE_ID2', 'PIPE_ID3', - 'PIPE_INTERLEAVE', 'PIPE_INTERLEAVE_1KB', 'PIPE_INTERLEAVE_256B', - 'PIPE_INTERLEAVE_512B', 'PIPE_PHYPLL_PIXEL_RATE_SOURCE', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_RESERVED', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYA', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYB', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYC', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYD', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYE', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYF', - 'PIPE_PIXEL_RATE_PLL_SOURCE', - 'PIPE_PIXEL_RATE_PLL_SOURCE_DISPPLL', - 'PIPE_PIXEL_RATE_PLL_SOURCE_PHYPLL', 'PIPE_PIXEL_RATE_SOURCE', - 'PIPE_PIXEL_RATE_SOURCE_P0PLL', 'PIPE_PIXEL_RATE_SOURCE_P1PLL', - 'PIPE_PIXEL_RATE_SOURCE_P2PLL', 'PIPE_UNALIGNED_SURF', - 'PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_1', - 'PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 'PIXCDC_MEM_PWR_LIGHT_SLEEP_MODE', 'PIXEL_DEPTH_10BPC', - 'PIXEL_DEPTH_8BPC', 'PIXEL_PIPE_OCCLUSION_COUNT_0', - 'PIXEL_PIPE_OCCLUSION_COUNT_1', 'PIXEL_PIPE_OCCLUSION_COUNT_2', - 'PIXEL_PIPE_OCCLUSION_COUNT_3', 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_0', - 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_1', - 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_0', - 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_1', 'PIXEL_PIPE_STAT_CONTROL', - 'PIXEL_PIPE_STAT_DUMP', 'PIXEL_PIPE_STAT_RESET', - 'PIXEL_PIPE_STRIDE_128_BITS', 'PIXEL_PIPE_STRIDE_256_BITS', - 'PIXEL_PIPE_STRIDE_32_BITS', 'PIXEL_PIPE_STRIDE_64_BITS', - 'PIX_DYNAMIC_EXPANSION', 'PIX_EXPAND_MODE', 'PIX_ZERO_EXPANSION', - 'PLL_CFG_IF_SOFT_RESET', 'PLL_CFG_IF_SOFT_RESET_FORCE', - 'PLL_CFG_IF_SOFT_RESET_NOOP', 'PM_ASSERT_RESET', - 'PM_ASSERT_RESET_0', 'PM_ASSERT_RESET_1', 'POINTLIST', - 'POST_CLAMP_TF0', 'POST_CLAMP_TF1', 'POWER_STATE_ENUM', - 'POWER_STATE_ENUM_DS', 'POWER_STATE_ENUM_LS', - 'POWER_STATE_ENUM_ON', 'POWER_STATE_ENUM_SD', 'PRE_CLAMP_TF0', - 'PRE_CLAMP_TF1', 'PROG_SEQ', 'PSLC_ASAP', 'PSLC_AUTO', - 'PSLC_COUNTDOWN', 'PSLC_ON_HANG_ONLY', 'PS_DONE', - 'PS_PARTIAL_FLUSH', 'PTE_ROW_HEIGHT_LINEAR', - 'PTE_ROW_HEIGHT_LINEAR_1024L', 'PTE_ROW_HEIGHT_LINEAR_128L', - 'PTE_ROW_HEIGHT_LINEAR_16L', 'PTE_ROW_HEIGHT_LINEAR_256L', - 'PTE_ROW_HEIGHT_LINEAR_32L', 'PTE_ROW_HEIGHT_LINEAR_512L', - 'PTE_ROW_HEIGHT_LINEAR_64L', 'PTE_ROW_HEIGHT_LINEAR_8L', - 'PerfCounter_Vals', 'PipeConfig', 'PipeInterleaveSize', - 'PipeTiling', 'PixelPipeCounterId', 'PixelPipeStride', 'PkrMap', - 'PkrXsel', 'PkrXsel2', 'PkrYsel', 'QuadExportFormat', - 'QuadExportFormatOld', 'RAMA_ACCESS', 'RAMB_ACCESS', 'RANGE_00', - 'RANGE_FF', 'RASTER_CONFIG_PKR_MAP_0', 'RASTER_CONFIG_PKR_MAP_1', - 'RASTER_CONFIG_PKR_MAP_2', 'RASTER_CONFIG_PKR_MAP_3', - 'RASTER_CONFIG_PKR_XSEL2_0', 'RASTER_CONFIG_PKR_XSEL2_1', - 'RASTER_CONFIG_PKR_XSEL2_2', 'RASTER_CONFIG_PKR_XSEL2_3', - 'RASTER_CONFIG_PKR_XSEL_0', 'RASTER_CONFIG_PKR_XSEL_1', - 'RASTER_CONFIG_PKR_XSEL_2', 'RASTER_CONFIG_PKR_XSEL_3', - 'RASTER_CONFIG_PKR_YSEL_0', 'RASTER_CONFIG_PKR_YSEL_1', - 'RASTER_CONFIG_PKR_YSEL_2', 'RASTER_CONFIG_PKR_YSEL_3', - 'RASTER_CONFIG_RB_MAP_0', 'RASTER_CONFIG_RB_MAP_1', - 'RASTER_CONFIG_RB_MAP_2', 'RASTER_CONFIG_RB_MAP_3', - 'RASTER_CONFIG_RB_XSEL2_0', 'RASTER_CONFIG_RB_XSEL2_1', - 'RASTER_CONFIG_RB_XSEL2_2', 'RASTER_CONFIG_RB_XSEL2_3', - 'RASTER_CONFIG_RB_XSEL_0', 'RASTER_CONFIG_RB_XSEL_1', - 'RASTER_CONFIG_RB_YSEL_0', 'RASTER_CONFIG_RB_YSEL_1', - 'RASTER_CONFIG_SC_MAP_0', 'RASTER_CONFIG_SC_MAP_1', - 'RASTER_CONFIG_SC_MAP_2', 'RASTER_CONFIG_SC_MAP_3', - 'RASTER_CONFIG_SC_XSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SC_XSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SC_XSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SC_XSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_8_WIDE_TILE', 'RASTER_CONFIG_SE_MAP_0', - 'RASTER_CONFIG_SE_MAP_1', 'RASTER_CONFIG_SE_MAP_2', - 'RASTER_CONFIG_SE_MAP_3', 'RASTER_CONFIG_SE_PAIR_MAP_0', - 'RASTER_CONFIG_SE_PAIR_MAP_1', 'RASTER_CONFIG_SE_PAIR_MAP_2', - 'RASTER_CONFIG_SE_PAIR_MAP_3', - 'RASTER_CONFIG_SE_PAIR_XSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_XSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_XSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_XSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_8_WIDE_TILE', 'RAW', 'RB_ALIGNED', - 'RB_ALIGNED_META_SURF', 'RB_UNALIGNED_META_SURF', - 'RDPCSTX_CLOCK_CNTL_RDPCS_EXT_REFCLK_EN', - 'RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_BYPASS', - 'RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_CLOCK_ON', - 'RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_EN', - 'RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_GATE_DIS', - 'RDPCSTX_CLOCK_CNTL_RDPCS_SYMCLK_DIV2_CLOCK_ON', - 'RDPCSTX_CLOCK_CNTL_RDPCS_SYMCLK_DIV2_EN', - 'RDPCSTX_CLOCK_CNTL_RDPCS_SYMCLK_DIV2_GATE_DIS', - 'RDPCSTX_CLOCK_CNTL_RDPCS_SYMCLK_DIV2_TX_EN', - 'RDPCSTX_CNTL_RDPCS_CBUS_SOFT_RESET', - 'RDPCSTX_CNTL_RDPCS_SRAM_SOFT_RESET', - 'RDPCSTX_CNTL_RDPCS_TX_FIFO_EN', - 'RDPCSTX_CNTL_RDPCS_TX_FIFO_LANE_EN', - 'RDPCSTX_CNTL_RDPCS_TX_SOFT_RESET', - 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE', - 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE_MASK', - 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE', - 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE_MASK', - 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_REG_FIFO_ERROR_MASK', - 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_TX_FIFO_ERROR_MASK', - 'RDPCSTX_MEM_POWER_CTRL2_RDPCS_MEM_POWER_CTRL_POFF', - 'RDPCSTX_PHY_CNTL0_RDPCS_PHY_CR_MUX_SEL', - 'RDPCSTX_PHY_CNTL0_RDPCS_PHY_CR_PARA_SEL', - 'RDPCSTX_PHY_CNTL0_RDPCS_PHY_REF_RANGE', - 'RDPCSTX_PHY_CNTL0_RDPCS_SRAM_EXT_LD_DONE', - 'RDPCSTX_PHY_CNTL0_RDPCS_SRAM_INIT_DONE', - 'RDPCSTX_PHY_CNTL11_RDPCS_PHY_DP_REF_CLK_MPLLB_DIV', - 'RDPCSTX_PHY_CNTL11_RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV', - 'RDPCSTX_PHY_CNTL12_RDPCS_PHY_DP_MPLLB_TX_CLK_DIV', - 'RDPCSTX_PHY_CNTL4_RDPCS_PHY_DP_TX_TERM_CTRL', - 'RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_DETRX_RESULT', - 'RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_RATE', - 'RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_WIDTH', - 'RDPCSTX_PHY_CNTL_RRDPCS_PHY_DP_TX_PSTATE', - 'RDPCS_CBUS_SOFT_RESET_DISABLE', 'RDPCS_CBUS_SOFT_RESET_ENABLE', - 'RDPCS_DPALT_4LANE_TOGGLE_2LANE', - 'RDPCS_DPALT_4LANE_TOGGLE_4LANE', - 'RDPCS_DPALT_4LANE_TOGGLE_MASK_DISABLE', - 'RDPCS_DPALT_4LANE_TOGGLE_MASK_ENABLE', - 'RDPCS_DPALT_DISABLE_TOGGLE_DISABLE', - 'RDPCS_DPALT_DISABLE_TOGGLE_ENABLE', - 'RDPCS_DPALT_DISABLE_TOGGLE_MASK_DISABLE', - 'RDPCS_DPALT_DISABLE_TOGGLE_MASK_ENABLE', - 'RDPCS_EXT_REFCLK_DISABLE', 'RDPCS_EXT_REFCLK_ENABLE', - 'RDPCS_EXT_REFCLK_EN_DISABLE', 'RDPCS_EXT_REFCLK_EN_ENABLE', - 'RDPCS_MEM_POWER_CTRL_POFF_FOR_NO_PERIPHERY', - 'RDPCS_MEM_POWER_CTRL_POFF_FOR_RM3', - 'RDPCS_MEM_POWER_CTRL_POFF_FOR_SD', - 'RDPCS_MEM_POWER_CTRL_POFF_FOR_STANDARD', - 'RDPCS_MEM_PWR_DEEP_SLEEP', 'RDPCS_MEM_PWR_LIGHT_SLEEP', - 'RDPCS_MEM_PWR_NO_FORCE', 'RDPCS_MEM_PWR_PWR_STATE_DEEP_SLEEP', - 'RDPCS_MEM_PWR_PWR_STATE_LIGHT_SLEEP', - 'RDPCS_MEM_PWR_PWR_STATE_ON', 'RDPCS_MEM_PWR_PWR_STATE_SHUT_DOWN', - 'RDPCS_MEM_PWR_SHUT_DOWN', 'RDPCS_PHY_CR_MUX_SEL_FOR_DC', - 'RDPCS_PHY_CR_MUX_SEL_FOR_USB', 'RDPCS_PHY_CR_PARA_SEL_CR', - 'RDPCS_PHY_CR_PARA_SEL_JTAG', 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV', - 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV10', - 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV2', - 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV3', - 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV4', - 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV5', - 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV6', - 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV8', - 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV1', - 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV16', - 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV2', - 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV3', - 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV8', - 'RDPCS_PHY_DP_TX_DETRX_RESULT_DETECT', - 'RDPCS_PHY_DP_TX_DETRX_RESULT_NO_DETECT', 'RDPCS_PHY_DP_TX_RATE', - 'RDPCS_PHY_DP_TX_RATE_DIV2', 'RDPCS_PHY_DP_TX_RATE_DIV4', - 'RDPCS_PHY_DP_TX_TERM_CTRL_40', 'RDPCS_PHY_DP_TX_TERM_CTRL_42', - 'RDPCS_PHY_DP_TX_TERM_CTRL_44', 'RDPCS_PHY_DP_TX_TERM_CTRL_46', - 'RDPCS_PHY_DP_TX_TERM_CTRL_48', 'RDPCS_PHY_DP_TX_TERM_CTRL_50', - 'RDPCS_PHY_DP_TX_TERM_CTRL_52', 'RDPCS_PHY_DP_TX_TERM_CTRL_54', - 'RDPCS_PHY_DP_TX_WIDTH_10', 'RDPCS_PHY_DP_TX_WIDTH_16', - 'RDPCS_PHY_DP_TX_WIDTH_20', 'RDPCS_PHY_DP_TX_WIDTH_8', - 'RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_0', - 'RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_1', - 'RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_2', - 'RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_3', - 'RDPCS_PHY_REF_RANGE_0', 'RDPCS_PHY_REF_RANGE_1', - 'RDPCS_PHY_REF_RANGE_2', 'RDPCS_PHY_REF_RANGE_3', - 'RDPCS_PHY_REF_RANGE_4', 'RDPCS_PHY_REF_RANGE_5', - 'RDPCS_PHY_REF_RANGE_6', 'RDPCS_PHY_REF_RANGE_7', - 'RDPCS_REG_FIFO_ERROR_MASK_DISABLE', - 'RDPCS_REG_FIFO_ERROR_MASK_ENABLE', 'RDPCS_SRAMCLK_BYPASS', - 'RDPCS_SRAMCLK_DISABLE', 'RDPCS_SRAMCLK_ENABLE', - 'RDPCS_SRAMCLK_GATE_DISABLE', 'RDPCS_SRAMCLK_GATE_ENABLE', - 'RDPCS_SRAMCLK_NOT_BYPASS', 'RDPCS_SRAM_EXT_LD_DONE', - 'RDPCS_SRAM_EXT_LD_NOT_DONE', 'RDPCS_SRAM_INIT_DONE', - 'RDPCS_SRAM_INIT_NOT_DONE', 'RDPCS_SRAM_SRAM_RESET_DISABLE', - 'RDPCS_SYMCLK_DIV2_CLOCK_OFF', 'RDPCS_SYMCLK_DIV2_CLOCK_ON', - 'RDPCS_SYMCLK_DIV2_DISABLE', 'RDPCS_SYMCLK_DIV2_ENABLE', - 'RDPCS_SYMCLK_DIV2_GATE_DISABLE', 'RDPCS_SYMCLK_DIV2_GATE_ENABLE', - 'RDPCS_SYMCLK_SRAMCLK_CLOCK_OFF', 'RDPCS_SYMCLK_SRAMCLK_CLOCK_ON', - 'RDPCS_TEST_CLK_SEL', 'RDPCS_TEST_CLK_SEL_CFGCLK', - 'RDPCS_TEST_CLK_SEL_DP_MPLLB_DIV_CLK', - 'RDPCS_TEST_CLK_SEL_DP_TX0_WORD_CLK', - 'RDPCS_TEST_CLK_SEL_DP_TX1_WORD_CLK', - 'RDPCS_TEST_CLK_SEL_DP_TX2_WORD_CLK', - 'RDPCS_TEST_CLK_SEL_DP_TX3_WORD_CLK', - 'RDPCS_TEST_CLK_SEL_EXT_CR_CLK', - 'RDPCS_TEST_CLK_SEL_HDMI_MPLLB_HDMI_PIXEL_CLK', - 'RDPCS_TEST_CLK_SEL_NONE', 'RDPCS_TEST_CLK_SEL_PHY_REF_DIG_CLK', - 'RDPCS_TEST_CLK_SEL_REF_DIG_FR_clk', 'RDPCS_TEST_CLK_SEL_SRAMCLK', - 'RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS', - 'RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS_DIV4', - 'RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS', - 'RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS_DIV4', - 'RDPCS_TEST_CLK_SEL_dtb_out0', 'RDPCS_TEST_CLK_SEL_dtb_out1', - 'RDPCS_TX_FIFO_DISABLE', 'RDPCS_TX_FIFO_ENABLE', - 'RDPCS_TX_FIFO_ERROR_MASK_DISABLE', - 'RDPCS_TX_FIFO_ERROR_MASK_ENABLE', 'RDPCS_TX_FIFO_LANE_DISABLE', - 'RDPCS_TX_FIFO_LANE_ENABLE', 'RDPCS_TX_SOFT_RESET_DISABLE', - 'RDPCS_TX_SOFT_RESET_ENABLE', - 'RDPCS_TX_SRAM_CNTL_RDPCS_MEM_PWR_FORCE', - 'RDPCS_TX_SRAM_CNTL_RDPCS_MEM_PWR_PWR_STATE', 'READ_256_BITS', - 'READ_512_BITS', 'READ_SEQ', 'RECTLIST', 'REFCLK_CLOCK_EN', - 'REFCLK_CLOCK_EN_ALLOW_SRC_SEL', 'REFCLK_CLOCK_EN_XTALIN_CLK', - 'REFCLK_SRC_SEL', 'REFCLK_SRC_SEL_CPL_REFCLK', - 'REFCLK_SRC_SEL_PCIE_REFCLK', 'REFER_TO_DP_SOF', - 'REFER_TO_OTG_SOF', 'REF_ALWAYS', 'REF_EQUAL', 'REF_GEQUAL', - 'REF_GREATER', 'REF_LEQUAL', 'REF_LESS', 'REF_NEVER', - 'REF_NOTEQUAL', 'REG_UNALLOCATED_ADDR_READ', - 'REG_UNALLOCATED_ADDR_WRITE', 'REG_VIRTUAL_READ', - 'REG_VIRTUAL_WRITE', 'RESERVED_60', 'RESERVED_61', 'RESERVED_62', - 'RESERVED_63', 'RESERVED_88', 'RESERVED_89', 'RESERVED_90', - 'RESERVED_91', 'RESERVED_ES', 'RESERVED_LS', 'RESERVED_RDPOLICY', - 'RESERVED_VS', 'RESET_TO_LOWEST_VGT', 'RESET_VTX_CNT', 'RE_Z', - 'RGB111110_FIX', 'RGB111110_FLOAT', 'RGB565', 'RGBA1010102', - 'RGBA16161616_10LSB', 'RGBA16161616_10MSB', 'RGBA16161616_12LSB', - 'RGBA16161616_12MSB', 'RGBA16161616_FLOAT', 'RGBA16161616_SNORM', - 'RGBA16161616_UNORM', 'RGBA4444', 'RGBA5551', 'RGBA8888', - 'RIGHT_EYE', 'RINGID0', 'RINGID1', 'RINGID2', 'RINGID3', - 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL', - 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_ENABLED', - 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL', - 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_ENABLED', - 'RMIPerfSel', 'RMI_CID', 'RMI_CID_CC', 'RMI_CID_CM', 'RMI_CID_DC', - 'RMI_CID_FC', 'RMI_CID_S', 'RMI_CID_TILE', 'RMI_CID_Z', - 'RMI_CID_ZPCPSD', 'RMI_PERF_SEL_BUSY', - 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTSB_RTR', - 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTSB_RTRB', - 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTS_RTR', - 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTS_RTRB', - 'RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK0', - 'RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK1', - 'RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK2', - 'RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK3', - 'RMI_PERF_SEL_DYN_CLK_CMN_VLD', 'RMI_PERF_SEL_DYN_CLK_PERF_VLD', - 'RMI_PERF_SEL_DYN_CLK_RB_VLD', 'RMI_PERF_SEL_EVENT_SEND', - 'RMI_PERF_SEL_LAT_FIFO_BLOCKING_REQ', - 'RMI_PERF_SEL_LAT_FIFO_FULL', - 'RMI_PERF_SEL_LAT_FIFO_NONBLOCKING_REQ', - 'RMI_PERF_SEL_LAT_FIFO_NUM_USED', - 'RMI_PERF_SEL_LEVEL_ADD_RMI_TO_UTC', - 'RMI_PERF_SEL_LEVEL_ADD_UTCL1_TO_UTCL2', 'RMI_PERF_SEL_NONE', - 'RMI_PERF_SEL_PERF_WINDOW', 'RMI_PERF_SEL_POP_DEMUX_RTSB_RTR', - 'RMI_PERF_SEL_POP_DEMUX_RTSB_RTRB', - 'RMI_PERF_SEL_POP_DEMUX_RTS_RTR', - 'RMI_PERF_SEL_POP_DEMUX_RTS_RTRB', - 'RMI_PERF_SEL_POP_XNACK_RTSB_RTR', - 'RMI_PERF_SEL_POP_XNACK_RTSB_RTRB', - 'RMI_PERF_SEL_POP_XNACK_RTS_RTR', - 'RMI_PERF_SEL_POP_XNACK_RTS_RTRB', - 'RMI_PERF_SEL_PROBEGEN_UTC_RTSB_RTR', - 'RMI_PERF_SEL_PROBEGEN_UTC_RTSB_RTRB', - 'RMI_PERF_SEL_PROBEGEN_UTC_RTS_RTR', - 'RMI_PERF_SEL_PROBEGEN_UTC_RTS_RTRB', - 'RMI_PERF_SEL_PROBE_UTCL1_ALL_FAULT', - 'RMI_PERF_SEL_PROBE_UTCL1_PRT_FAULT', - 'RMI_PERF_SEL_PROBE_UTCL1_VMID_BYPASS', - 'RMI_PERF_SEL_PROBE_UTCL1_XNACK_NORETRY_FAULT', - 'RMI_PERF_SEL_PROBE_UTCL1_XNACK_RETRY', - 'RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTSB_RTR', - 'RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTSB_RTRB', - 'RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTS_RTR', - 'RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTS_RTRB', - 'RMI_PERF_SEL_PRT_FIFO_BUSY', 'RMI_PERF_SEL_PRT_FIFO_NUM_USED', - 'RMI_PERF_SEL_PRT_FIFO_REQ', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_ALL_CID', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID0', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID1', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID2', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID3', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID4', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID5', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID6', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID7', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_INFLIGHT_ALL_ORONE_CID', - 'RMI_PERF_SEL_RB_RMI_32BWRREQ_INFLIGHT_ALL_ORONE_CID', - 'RMI_PERF_SEL_RB_RMI_RDREQ_ALL_CID', - 'RMI_PERF_SEL_RB_RMI_RDREQ_BURST_ALL_ORONE_CID', - 'RMI_PERF_SEL_RB_RMI_RDREQ_BURST_LENGTH_ALL_ORONE_CID', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID0', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID1', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID2', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID3', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID4', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID5', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID6', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID7', - 'RMI_PERF_SEL_RB_RMI_RDREQ_RESIDENCY', - 'RMI_PERF_SEL_RB_RMI_RDREQ_TO_RDRET_BUSY', - 'RMI_PERF_SEL_RB_RMI_RD_BUSY', - 'RMI_PERF_SEL_RB_RMI_RD_FIFO_EMPTY', - 'RMI_PERF_SEL_RB_RMI_RD_FIFO_MAX', 'RMI_PERF_SEL_RB_RMI_RD_IDLE', - 'RMI_PERF_SEL_RB_RMI_RD_INTF_BUSY', - 'RMI_PERF_SEL_RB_RMI_RD_STALL', 'RMI_PERF_SEL_RB_RMI_RD_STARVE', - 'RMI_PERF_SEL_RB_RMI_WRREQ_ALL_CID', - 'RMI_PERF_SEL_RB_RMI_WRREQ_BURST_ALL_ORONE_CID', - 'RMI_PERF_SEL_RB_RMI_WRREQ_BURST_LENGTH_ALL_ORONE_CID', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID0', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID1', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID2', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID3', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID4', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID5', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID6', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID7', - 'RMI_PERF_SEL_RB_RMI_WRREQ_RESIDENCY', - 'RMI_PERF_SEL_RB_RMI_WRREQ_TO_WRRET_BUSY', - 'RMI_PERF_SEL_RB_RMI_WR_BUSY', - 'RMI_PERF_SEL_RB_RMI_WR_FIFO_EMPTY', - 'RMI_PERF_SEL_RB_RMI_WR_FIFO_MAX', 'RMI_PERF_SEL_RB_RMI_WR_IDLE', - 'RMI_PERF_SEL_RB_RMI_WR_INTF_BUSY', - 'RMI_PERF_SEL_RB_RMI_WR_STALL', 'RMI_PERF_SEL_RB_RMI_WR_STARVE', - 'RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTSB_RTR', - 'RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTSB_RTRB', - 'RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTS_RTR', - 'RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTS_RTRB', - 'RMI_PERF_SEL_REG_CLK_VLD', 'RMI_PERF_SEL_REORDER_FIFO_BUSY', - 'RMI_PERF_SEL_REORDER_FIFO_REQ', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID0', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID1', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID10', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID11', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID12', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID13', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID14', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID15', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID2', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID3', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID4', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID5', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID6', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID7', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID8', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID9', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID_ALL', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID0', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID1', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID10', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID11', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID12', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID13', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID14', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID15', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID2', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID3', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID4', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID5', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID6', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID7', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID8', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID9', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID_ALL', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_ALL_CID', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID0', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID1', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID2', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID3', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID4', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID5', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID6', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID7', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK0', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK1', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK2', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK3', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_ALL_CID', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID0', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID1', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID2', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID3', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID4', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID5', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID6', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID7', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK0', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK1', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK2', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK3', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_ALL_CID', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID0', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID1', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID2', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID3', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID4', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID5', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID6', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID7', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK0', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK1', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK2', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK3', - 'RMI_PERF_SEL_RMI_TC_64BRDREQ_ALL_ORONE_CID', - 'RMI_PERF_SEL_RMI_TC_64BWRREQ_ALL_ORONE_CID', - 'RMI_PERF_SEL_RMI_TC_CREDIT_FULL_NO_PENDING_SEND', - 'RMI_PERF_SEL_RMI_TC_CREDIT_ZERO_PENDING_SEND', - 'RMI_PERF_SEL_RMI_TC_RDREQ_ALL_CID', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID0', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID1', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID2', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID3', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID4', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID5', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID6', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID7', - 'RMI_PERF_SEL_RMI_TC_RDREQ_INFLIGHT_ALL_CID', - 'RMI_PERF_SEL_RMI_TC_REQ_BUSY', - 'RMI_PERF_SEL_RMI_TC_STALL_ALLREQ', - 'RMI_PERF_SEL_RMI_TC_STALL_RDREQ', - 'RMI_PERF_SEL_RMI_TC_STALL_WRREQ', - 'RMI_PERF_SEL_RMI_TC_WRREQ_ALL_CID', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID0', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID1', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID2', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID3', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID4', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID5', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID6', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID7', - 'RMI_PERF_SEL_RMI_TC_WRREQ_INFLIGHT_ALL_CID', - 'RMI_PERF_SEL_RMI_UTC_BUSY', 'RMI_PERF_SEL_RMI_UTC_REQ', - 'RMI_PERF_SEL_SKID_FIFO_BUSY', 'RMI_PERF_SEL_SKID_FIFO_DEPTH', - 'RMI_PERF_SEL_SKID_FIFO_IN_RTS', 'RMI_PERF_SEL_SKID_FIFO_IN_RTSB', - 'RMI_PERF_SEL_SKID_FIFO_OUT_RTS', - 'RMI_PERF_SEL_SKID_FIFO_OUT_RTSB', 'RMI_PERF_SEL_SKID_FIFO_REQ', - 'RMI_PERF_SEL_TCIW_BUSY', 'RMI_PERF_SEL_TCIW_INFLIGHT_COUNT', - 'RMI_PERF_SEL_TCIW_REQ', - 'RMI_PERF_SEL_TC_RMI_RDRET_VALID_ALL_CID', - 'RMI_PERF_SEL_TC_RMI_WRRET_VALID_ALL_CID', - 'RMI_PERF_SEL_UTCL1_BUSY', 'RMI_PERF_SEL_UTCL1_HIT_FIFO_FULL', - 'RMI_PERF_SEL_UTCL1_LFIFO_FULL', - 'RMI_PERF_SEL_UTCL1_PERMISSION_MISS', - 'RMI_PERF_SEL_UTCL1_REQUEST', - 'RMI_PERF_SEL_UTCL1_STALL_INFLIGHT_MAX', - 'RMI_PERF_SEL_UTCL1_STALL_LFIFO_NOT_RES', - 'RMI_PERF_SEL_UTCL1_STALL_LRU_INFLIGHT', - 'RMI_PERF_SEL_UTCL1_STALL_MISSFIFO_FULL', - 'RMI_PERF_SEL_UTCL1_STALL_MULTI_MISS', - 'RMI_PERF_SEL_UTCL1_STALL_UTCL2_REQ_OUT_OF_CREDITS', - 'RMI_PERF_SEL_UTCL1_TRANSLATION_HIT', - 'RMI_PERF_SEL_UTCL1_TRANSLATION_MISS', - 'RMI_PERF_SEL_UTCL1_UTCL2_REQ', 'RMI_PERF_SEL_UTC_POP_RTSB_RTR', - 'RMI_PERF_SEL_UTC_POP_RTSB_RTRB', 'RMI_PERF_SEL_UTC_POP_RTS_RTR', - 'RMI_PERF_SEL_UTC_POP_RTS_RTRB', - 'RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTSB_RTR', - 'RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTSB_RTRB', - 'RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTS_RTR', - 'RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTS_RTRB', - 'RMI_PERF_SEL_XBAR_PROBEGEN_CB_RTS_RTR', - 'RMI_PERF_SEL_XBAR_PROBEGEN_DB_RTS_RTR', - 'RMI_PERF_SEL_XBAR_PROBEGEN_IN0_RTS_RTR', - 'RMI_PERF_SEL_XBAR_PROBEGEN_IN1_RTS_RTR', - 'RMI_PERF_SEL_XBAR_PROBEGEN_READ_RTS_RTR', - 'RMI_PERF_SEL_XBAR_PROBEGEN_RTSB_RTR', - 'RMI_PERF_SEL_XBAR_PROBEGEN_RTSB_RTRB', - 'RMI_PERF_SEL_XBAR_PROBEGEN_RTS_RTR', - 'RMI_PERF_SEL_XBAR_PROBEGEN_RTS_RTRB', - 'RMI_PERF_SEL_XBAR_PROBEGEN_WRITE_RTS_RTR', - 'RMI_PERF_SEL_XNACK_FIFO_BUSY', 'RMI_PERF_SEL_XNACK_FIFO_FULL', - 'RMI_PERF_SEL_XNACK_FIFO_NUM_USED', - 'RMI_PERF_SEL_XNACK_PROBEGEN_RTSB_RTR', - 'RMI_PERF_SEL_XNACK_PROBEGEN_RTSB_RTRB', - 'RMI_PERF_SEL_XNACK_PROBEGEN_RTS_RTR', - 'RMI_PERF_SEL_XNACK_PROBEGEN_RTS_RTRB', 'ROM_SIGNATURE', - 'ROTATED_MICRO_TILING', 'ROTATE_0_DEGREES', 'ROTATE_180_DEGREES', - 'ROTATE_270_DEGREES', 'ROTATE_90_DEGREES', 'ROTATION_ANGLE', - 'ROUND_BY_HALF', 'ROUND_TRUNCATE', 'RRDPCS_PHY_DP_TX_PSTATE_HOLD', - 'RRDPCS_PHY_DP_TX_PSTATE_HOLD_OFF', - 'RRDPCS_PHY_DP_TX_PSTATE_POWER_DOWN', - 'RRDPCS_PHY_DP_TX_PSTATE_POWER_UP', 'RST_PIX_CNT', 'RSV_TAG_RAM', - 'RbMap', 'RbXsel', 'RbXsel2', 'RbYsel', 'ReadPolicy', 'ReadSize', - 'Reserved_0x00', 'RingCounterControl', 'RoundMode', 'RowSize', - 'RowTiling', 'SAMPLE_PIPELINESTAT', 'SAMPLE_STREAMOUTSTATS', - 'SAMPLE_STREAMOUTSTATS1', 'SAMPLE_STREAMOUTSTATS2', - 'SAMPLE_STREAMOUTSTATS3', 'SCL_2TAP_HARDCODE', 'SCL_ALPHA_COEF', - 'SCL_ALPHA_COEF_ALPHA', 'SCL_ALPHA_COEF_LUMA', 'SCL_AUTOCAL_MODE', - 'SCL_BOUNDARY', 'SCL_BOUNDARY_BLACK', 'SCL_BOUNDARY_EDGE', - 'SCL_CHROMA_COEF', 'SCL_CHROMA_COEF_CHROMA', - 'SCL_CHROMA_COEF_LUMA', 'SCL_COEF_2TAP_HARDCODE_OFF', - 'SCL_COEF_2TAP_HARDCODE_ON', 'SCL_COEF_ALPHA_HORZ_FILTER', - 'SCL_COEF_ALPHA_VERT_FILTER', 'SCL_COEF_CHROMA_HORZ_FILTER', - 'SCL_COEF_CHROMA_VERT_FILTER', 'SCL_COEF_FILTER_TYPE_SEL', - 'SCL_COEF_LUMA_HORZ_FILTER', 'SCL_COEF_LUMA_VERT_FILTER', - 'SCL_COEF_RAM_SEL', 'SCL_COEF_RAM_SEL_0', 'SCL_COEF_RAM_SEL_1', - 'SCL_SHARP_DISABLE', 'SCL_SHARP_EN', 'SCL_SHARP_ENABLE', - 'SC_BACKEND_BUSY', 'SC_BACKEND_PRIM_FIFO_FULL', 'SC_BB_DISCARD', - 'SC_BCI_CREDIT_AT_MAX', 'SC_BCI_CREDIT_AT_MAX_NO_PENDING_SEND', - 'SC_BCI_CREDIT_AT_ZERO_WITH_PENDING_SEND', 'SC_BCI_SEND', - 'SC_BM_BUSY', 'SC_BUSY_CNT_NOT_ZERO', - 'SC_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'SC_DB0_TILE_INTERFACE_BUSY', - 'SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX', - 'SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND', - 'SC_DB0_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'SC_DB0_TILE_INTERFACE_SEND', 'SC_DB0_TILE_INTERFACE_SEND_EVENT', - 'SC_DB0_TILE_INTERFACE_SEND_SOP', - 'SC_DB0_TILE_INTERFACE_SEND_SOP_ONLY_EVENT', - 'SC_DB1_TILE_INTERFACE_BUSY', - 'SC_DB1_TILE_INTERFACE_CREDIT_AT_MAX', - 'SC_DB1_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND', - 'SC_DB1_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'SC_DB1_TILE_INTERFACE_SEND', 'SC_DB1_TILE_INTERFACE_SEND_EVENT', - 'SC_DB1_TILE_INTERFACE_SEND_SOP', - 'SC_DB1_TILE_INTERFACE_SEND_SOP_ONLY_EVENT', - 'SC_EARLYZ_QUAD_COUNT', 'SC_EARLYZ_QUAD_WITH_1_PIX', - 'SC_EARLYZ_QUAD_WITH_2_PIX', 'SC_EARLYZ_QUAD_WITH_3_PIX', - 'SC_EARLYZ_QUAD_WITH_4_PIX', 'SC_EOP_SYNC_WINDOW', - 'SC_FULL_FULL_QUAD', 'SC_FULL_HALF_QUAD', 'SC_FULL_QTR_QUAD', - 'SC_GRP0_DYN_SCLK_BUSY', 'SC_GRP1_DYN_SCLK_BUSY', - 'SC_GRP2_DYN_SCLK_BUSY', 'SC_GRP3_DYN_SCLK_BUSY', - 'SC_GRP4_DYN_SCLK_BUSY', 'SC_GRP5_DYN_SCLK_BUSY', - 'SC_GRP6_DYN_SCLK_BUSY', 'SC_GRP7_DYN_SCLK_BUSY', - 'SC_GRP8_DYN_SCLK_BUSY', 'SC_GRP9_DYN_SCLK_BUSY', - 'SC_HALF_FULL_QUAD', 'SC_HALF_HALF_QUAD', 'SC_HALF_LSB', - 'SC_HALF_QTR_QUAD', 'SC_LSB_ONE_SIDED', 'SC_LSB_TWO_SIDED', - 'SC_MULTICYCLE_BUBBLE_FREEZE', 'SC_P0_DETAIL_QUAD_COUNT', - 'SC_P0_DETAIL_QUAD_WITH_1_PIX', 'SC_P0_DETAIL_QUAD_WITH_2_PIX', - 'SC_P0_DETAIL_QUAD_WITH_3_PIX', 'SC_P0_DETAIL_QUAD_WITH_4_PIX', - 'SC_P0_HIZ_QUAD_COUNT', 'SC_P0_HIZ_QUAD_PER_TILE_H0', - 'SC_P0_HIZ_QUAD_PER_TILE_H1', 'SC_P0_HIZ_QUAD_PER_TILE_H10', - 'SC_P0_HIZ_QUAD_PER_TILE_H11', 'SC_P0_HIZ_QUAD_PER_TILE_H12', - 'SC_P0_HIZ_QUAD_PER_TILE_H13', 'SC_P0_HIZ_QUAD_PER_TILE_H14', - 'SC_P0_HIZ_QUAD_PER_TILE_H15', 'SC_P0_HIZ_QUAD_PER_TILE_H16', - 'SC_P0_HIZ_QUAD_PER_TILE_H2', 'SC_P0_HIZ_QUAD_PER_TILE_H3', - 'SC_P0_HIZ_QUAD_PER_TILE_H4', 'SC_P0_HIZ_QUAD_PER_TILE_H5', - 'SC_P0_HIZ_QUAD_PER_TILE_H6', 'SC_P0_HIZ_QUAD_PER_TILE_H7', - 'SC_P0_HIZ_QUAD_PER_TILE_H8', 'SC_P0_HIZ_QUAD_PER_TILE_H9', - 'SC_P0_HIZ_TILE_COUNT', 'SC_P1_DETAIL_QUAD_COUNT', - 'SC_P1_DETAIL_QUAD_WITH_1_PIX', 'SC_P1_DETAIL_QUAD_WITH_2_PIX', - 'SC_P1_DETAIL_QUAD_WITH_3_PIX', 'SC_P1_DETAIL_QUAD_WITH_4_PIX', - 'SC_P1_HIZ_QUAD_COUNT', 'SC_P1_HIZ_QUAD_PER_TILE_H0', - 'SC_P1_HIZ_QUAD_PER_TILE_H1', 'SC_P1_HIZ_QUAD_PER_TILE_H10', - 'SC_P1_HIZ_QUAD_PER_TILE_H11', 'SC_P1_HIZ_QUAD_PER_TILE_H12', - 'SC_P1_HIZ_QUAD_PER_TILE_H13', 'SC_P1_HIZ_QUAD_PER_TILE_H14', - 'SC_P1_HIZ_QUAD_PER_TILE_H15', 'SC_P1_HIZ_QUAD_PER_TILE_H16', - 'SC_P1_HIZ_QUAD_PER_TILE_H2', 'SC_P1_HIZ_QUAD_PER_TILE_H3', - 'SC_P1_HIZ_QUAD_PER_TILE_H4', 'SC_P1_HIZ_QUAD_PER_TILE_H5', - 'SC_P1_HIZ_QUAD_PER_TILE_H6', 'SC_P1_HIZ_QUAD_PER_TILE_H7', - 'SC_P1_HIZ_QUAD_PER_TILE_H8', 'SC_P1_HIZ_QUAD_PER_TILE_H9', - 'SC_P1_HIZ_TILE_COUNT', 'SC_P2_DETAIL_QUAD_COUNT', - 'SC_P2_DETAIL_QUAD_WITH_1_PIX', 'SC_P2_DETAIL_QUAD_WITH_2_PIX', - 'SC_P2_DETAIL_QUAD_WITH_3_PIX', 'SC_P2_DETAIL_QUAD_WITH_4_PIX', - 'SC_P2_HIZ_QUAD_COUNT', 'SC_P2_HIZ_QUAD_PER_TILE_H0', - 'SC_P2_HIZ_QUAD_PER_TILE_H1', 'SC_P2_HIZ_QUAD_PER_TILE_H10', - 'SC_P2_HIZ_QUAD_PER_TILE_H11', 'SC_P2_HIZ_QUAD_PER_TILE_H12', - 'SC_P2_HIZ_QUAD_PER_TILE_H13', 'SC_P2_HIZ_QUAD_PER_TILE_H14', - 'SC_P2_HIZ_QUAD_PER_TILE_H15', 'SC_P2_HIZ_QUAD_PER_TILE_H16', - 'SC_P2_HIZ_QUAD_PER_TILE_H2', 'SC_P2_HIZ_QUAD_PER_TILE_H3', - 'SC_P2_HIZ_QUAD_PER_TILE_H4', 'SC_P2_HIZ_QUAD_PER_TILE_H5', - 'SC_P2_HIZ_QUAD_PER_TILE_H6', 'SC_P2_HIZ_QUAD_PER_TILE_H7', - 'SC_P2_HIZ_QUAD_PER_TILE_H8', 'SC_P2_HIZ_QUAD_PER_TILE_H9', - 'SC_P2_HIZ_TILE_COUNT', 'SC_P3_DETAIL_QUAD_COUNT', - 'SC_P3_DETAIL_QUAD_WITH_1_PIX', 'SC_P3_DETAIL_QUAD_WITH_2_PIX', - 'SC_P3_DETAIL_QUAD_WITH_3_PIX', 'SC_P3_DETAIL_QUAD_WITH_4_PIX', - 'SC_P3_HIZ_QUAD_COUNT', 'SC_P3_HIZ_QUAD_PER_TILE_H0', - 'SC_P3_HIZ_QUAD_PER_TILE_H1', 'SC_P3_HIZ_QUAD_PER_TILE_H10', - 'SC_P3_HIZ_QUAD_PER_TILE_H11', 'SC_P3_HIZ_QUAD_PER_TILE_H12', - 'SC_P3_HIZ_QUAD_PER_TILE_H13', 'SC_P3_HIZ_QUAD_PER_TILE_H14', - 'SC_P3_HIZ_QUAD_PER_TILE_H15', 'SC_P3_HIZ_QUAD_PER_TILE_H16', - 'SC_P3_HIZ_QUAD_PER_TILE_H2', 'SC_P3_HIZ_QUAD_PER_TILE_H3', - 'SC_P3_HIZ_QUAD_PER_TILE_H4', 'SC_P3_HIZ_QUAD_PER_TILE_H5', - 'SC_P3_HIZ_QUAD_PER_TILE_H6', 'SC_P3_HIZ_QUAD_PER_TILE_H7', - 'SC_P3_HIZ_QUAD_PER_TILE_H8', 'SC_P3_HIZ_QUAD_PER_TILE_H9', - 'SC_P3_HIZ_TILE_COUNT', 'SC_PA0_SC_DATA_FIFO_EOPG_RD', - 'SC_PA0_SC_DATA_FIFO_EOP_RD', 'SC_PA0_SC_DATA_FIFO_RD', - 'SC_PA0_SC_DATA_FIFO_WE', 'SC_PA0_SC_DEALLOC_0_RD', - 'SC_PA0_SC_DEALLOC_1_RD', 'SC_PA0_SC_EOPG_WE', 'SC_PA0_SC_EOP_WE', - 'SC_PA0_SC_EVENT_WE', 'SC_PA0_SC_FPOV_WE', 'SC_PA0_SC_LPOV_WE', - 'SC_PA0_SC_NULL_DEALLOC_WE', 'SC_PA0_SC_NULL_WE', - 'SC_PA1_SC_DATA_FIFO_EOPG_RD', 'SC_PA1_SC_DATA_FIFO_EOP_RD', - 'SC_PA1_SC_DATA_FIFO_RD', 'SC_PA1_SC_DATA_FIFO_WE', - 'SC_PA1_SC_DEALLOC_0_RD', 'SC_PA1_SC_DEALLOC_1_RD', - 'SC_PA1_SC_EOPG_WE', 'SC_PA1_SC_EOP_WE', 'SC_PA1_SC_EVENT_WE', - 'SC_PA1_SC_FPOV_WE', 'SC_PA1_SC_LPOV_WE', - 'SC_PA1_SC_NULL_DEALLOC_WE', 'SC_PA1_SC_NULL_WE', - 'SC_PA2_SC_DATA_FIFO_EOPG_RD', 'SC_PA2_SC_DATA_FIFO_EOP_RD', - 'SC_PA2_SC_DATA_FIFO_RD', 'SC_PA2_SC_DATA_FIFO_WE', - 'SC_PA2_SC_DEALLOC_0_RD', 'SC_PA2_SC_DEALLOC_1_RD', - 'SC_PA2_SC_EOPG_WE', 'SC_PA2_SC_EOP_WE', 'SC_PA2_SC_EVENT_WE', - 'SC_PA2_SC_FPOV_WE', 'SC_PA2_SC_LPOV_WE', - 'SC_PA2_SC_NULL_DEALLOC_WE', 'SC_PA2_SC_NULL_WE', - 'SC_PA3_SC_DATA_FIFO_EOPG_RD', 'SC_PA3_SC_DATA_FIFO_EOP_RD', - 'SC_PA3_SC_DATA_FIFO_RD', 'SC_PA3_SC_DATA_FIFO_WE', - 'SC_PA3_SC_DEALLOC_0_RD', 'SC_PA3_SC_DEALLOC_1_RD', - 'SC_PA3_SC_EOPG_WE', 'SC_PA3_SC_EOP_WE', 'SC_PA3_SC_EVENT_WE', - 'SC_PA3_SC_FPOV_WE', 'SC_PA3_SC_LPOV_WE', - 'SC_PA3_SC_NULL_DEALLOC_WE', 'SC_PA3_SC_NULL_WE', - 'SC_PA_SC_DEALLOC_0_0_WE', 'SC_PA_SC_DEALLOC_0_1_WE', - 'SC_PA_SC_DEALLOC_1_0_WE', 'SC_PA_SC_DEALLOC_1_1_WE', - 'SC_PA_SC_DEALLOC_2_0_WE', 'SC_PA_SC_DEALLOC_2_1_WE', - 'SC_PA_SC_DEALLOC_3_0_WE', 'SC_PA_SC_DEALLOC_3_1_WE', - 'SC_PA_TO_PBB_SCLK_GATE_STALL_STALL', - 'SC_PBB_BATCH_BREAK_DUE_TO_BINNING_MODE_CHANGE', - 'SC_PBB_BATCH_BREAK_DUE_TO_CONTEXT_STATE', - 'SC_PBB_BATCH_BREAK_DUE_TO_DEBUG_DATA_PER_DRAW_DISPATCH', - 'SC_PBB_BATCH_BREAK_DUE_TO_EVENT', - 'SC_PBB_BATCH_BREAK_DUE_TO_FPOV_LIMIT', - 'SC_PBB_BATCH_BREAK_DUE_TO_NEW_SC_MODE', - 'SC_PBB_BATCH_BREAK_DUE_TO_NONBINNED_BATCH', - 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_CONTEXT', - 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_FPOV', - 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_PERSISTENT', - 'SC_PBB_BATCH_BREAK_DUE_TO_PC_STORAGE', - 'SC_PBB_BATCH_BREAK_DUE_TO_PERSISTENT_STATE', - 'SC_PBB_BATCH_BREAK_DUE_TO_PIPELINE_EVENT_COUNT', - 'SC_PBB_BATCH_BREAK_DUE_TO_PRIM', - 'SC_PBB_BATCH_BREAK_DUE_TO_TIMEOUT_COUNTER', - 'SC_PBB_BATCH_HIST_NUM_COLUMNS_PER_ROW', - 'SC_PBB_BATCH_HIST_NUM_CONTEXTS', - 'SC_PBB_BATCH_HIST_NUM_PERSISTENT_STATES', - 'SC_PBB_BATCH_HIST_NUM_PRIMS', - 'SC_PBB_BATCH_HIST_NUM_PS_WAVE_BREAKS', - 'SC_PBB_BATCH_HIST_NUM_ROWS_PER_PRIM', - 'SC_PBB_BATCH_HIST_NUM_TRIV_REJECTED_PRIMS', - 'SC_PBB_BIN_HIST_NUM_CONTEXTS', - 'SC_PBB_BIN_HIST_NUM_PERSISTENT_STATES', - 'SC_PBB_BIN_HIST_NUM_PRIMS', 'SC_PBB_BUSY', - 'SC_PBB_BUSY_AND_NO_SENDS', 'SC_PBB_END_OF_BATCH', - 'SC_PBB_END_OF_BIN', - 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_COLUMN', - 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_ROW', - 'SC_PBB_IDLE_CLK_DUE_TO_ROW_TO_COLUMN_TRANSITION', - 'SC_PBB_NONBINNED_PRIM', 'SC_PBB_NUM_BINS', - 'SC_PBB_PRIMBIN_PROCESSED', 'SC_PBB_PRIM_ADDED_TO_BATCH', - 'SC_PBB_STALLS_PA_DUE_TO_NO_TILES', - 'SC_PBB_TOTAL_NULL_PRIMS_OUT_OF_PBB', - 'SC_PBB_TOTAL_REAL_PRIMS_OUT_OF_PBB', 'SC_PERFCNT_SEL', - 'SC_PKR_4X2_FILL_QUAD', 'SC_PKR_4X2_QUAD_SPLIT', - 'SC_PKR_CONTROL_XFER', 'SC_PKR_DBHANG_FORCE_EOV', - 'SC_PKR_END_OF_VECTOR', 'SC_PKR_QUAD_OVLP_FOUND_IN_WAVE_TABLE', - 'SC_PKR_QUAD_OVLP_NOT_FOUND_IN_WAVE_TABLE_AND_NO_CHANGE_TO_WAVES_SINCE_OVLP', - 'SC_PKR_QUAD_OVLP_NOT_FOUND_IN_WAVE_TABLE_AND_WAVES_SINCE_OVLP_SET_TO_MAX', - 'SC_PKR_QUAD_PER_ROW_H1', 'SC_PKR_QUAD_PER_ROW_H2', 'SC_PK_BUSY', - 'SC_PK_DEALLOC_WAVE_BREAK', 'SC_PK_MAX_DEALLOC_FORCE_EOV', - 'SC_POPS_FORCE_EOV', 'SC_POPS_INTRA_WAVE_OVERLAPS', - 'SC_PSSW_WINDOW_VALID', 'SC_PSSW_WINDOW_VALID_BUSY', - 'SC_PS_ARB_EOP_POP_SYNC_POP', 'SC_PS_ARB_EVENT_SYNC_POP', - 'SC_PS_ARB_NULL_PRIM_BUBBLE_POP', - 'SC_PS_ARB_OOO_FIFO_EMPTY_SWITCH', - 'SC_PS_ARB_OOO_THRESHOLD_SWITCH_TO_DESIRED_FIFO', - 'SC_PS_ARB_PA_SC_BUSY', 'SC_PS_ARB_SC_BUSY', - 'SC_PS_ARB_STALLED_FROM_BELOW', 'SC_PS_ARB_STARVED_FROM_ABOVE', - 'SC_PS_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'SC_PS_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'SC_PS_ARB_XFC_ONLY_PRIM_CYCLES', 'SC_PS_CTX_DONE_FIFO_POP', - 'SC_PS_CTX_DONE_FIFO_PUSH', 'SC_PS_PA0_SC_FIFO_EMPTY', - 'SC_PS_PA0_SC_FIFO_FULL', 'SC_PS_PA1_SC_FIFO_EMPTY', - 'SC_PS_PA1_SC_FIFO_FULL', 'SC_PS_PA2_SC_FIFO_EMPTY', - 'SC_PS_PA2_SC_FIFO_FULL', 'SC_PS_PA3_SC_FIFO_EMPTY', - 'SC_PS_PA3_SC_FIFO_FULL', 'SC_PS_TO_BE_SCLK_GATE_STALL', - 'SC_PS_TS_EVENT_FIFO_POP', 'SC_PS_TS_EVENT_FIFO_PUSH', - 'SC_PW_BM_PASS_EMPTY_PRIM', 'SC_QTR_FULL_QUAD', - 'SC_QTR_HALF_QUAD', 'SC_QTR_QTR_QUAD', 'SC_QZ0_QUAD_COUNT', - 'SC_QZ0_QUAD_PER_TILE_H0', 'SC_QZ0_QUAD_PER_TILE_H1', - 'SC_QZ0_QUAD_PER_TILE_H10', 'SC_QZ0_QUAD_PER_TILE_H11', - 'SC_QZ0_QUAD_PER_TILE_H12', 'SC_QZ0_QUAD_PER_TILE_H13', - 'SC_QZ0_QUAD_PER_TILE_H14', 'SC_QZ0_QUAD_PER_TILE_H15', - 'SC_QZ0_QUAD_PER_TILE_H16', 'SC_QZ0_QUAD_PER_TILE_H2', - 'SC_QZ0_QUAD_PER_TILE_H3', 'SC_QZ0_QUAD_PER_TILE_H4', - 'SC_QZ0_QUAD_PER_TILE_H5', 'SC_QZ0_QUAD_PER_TILE_H6', - 'SC_QZ0_QUAD_PER_TILE_H7', 'SC_QZ0_QUAD_PER_TILE_H8', - 'SC_QZ0_QUAD_PER_TILE_H9', 'SC_QZ0_TILE_COUNT', - 'SC_QZ0_TILE_COVERED_COUNT', 'SC_QZ0_TILE_NOT_COVERED_COUNT', - 'SC_QZ1_QUAD_COUNT', 'SC_QZ1_QUAD_PER_TILE_H0', - 'SC_QZ1_QUAD_PER_TILE_H1', 'SC_QZ1_QUAD_PER_TILE_H10', - 'SC_QZ1_QUAD_PER_TILE_H11', 'SC_QZ1_QUAD_PER_TILE_H12', - 'SC_QZ1_QUAD_PER_TILE_H13', 'SC_QZ1_QUAD_PER_TILE_H14', - 'SC_QZ1_QUAD_PER_TILE_H15', 'SC_QZ1_QUAD_PER_TILE_H16', - 'SC_QZ1_QUAD_PER_TILE_H2', 'SC_QZ1_QUAD_PER_TILE_H3', - 'SC_QZ1_QUAD_PER_TILE_H4', 'SC_QZ1_QUAD_PER_TILE_H5', - 'SC_QZ1_QUAD_PER_TILE_H6', 'SC_QZ1_QUAD_PER_TILE_H7', - 'SC_QZ1_QUAD_PER_TILE_H8', 'SC_QZ1_QUAD_PER_TILE_H9', - 'SC_QZ1_TILE_COUNT', 'SC_QZ1_TILE_COVERED_COUNT', - 'SC_QZ1_TILE_NOT_COVERED_COUNT', 'SC_QZ2_QUAD_COUNT', - 'SC_QZ2_QUAD_PER_TILE_H0', 'SC_QZ2_QUAD_PER_TILE_H1', - 'SC_QZ2_QUAD_PER_TILE_H10', 'SC_QZ2_QUAD_PER_TILE_H11', - 'SC_QZ2_QUAD_PER_TILE_H12', 'SC_QZ2_QUAD_PER_TILE_H13', - 'SC_QZ2_QUAD_PER_TILE_H14', 'SC_QZ2_QUAD_PER_TILE_H15', - 'SC_QZ2_QUAD_PER_TILE_H16', 'SC_QZ2_QUAD_PER_TILE_H2', - 'SC_QZ2_QUAD_PER_TILE_H3', 'SC_QZ2_QUAD_PER_TILE_H4', - 'SC_QZ2_QUAD_PER_TILE_H5', 'SC_QZ2_QUAD_PER_TILE_H6', - 'SC_QZ2_QUAD_PER_TILE_H7', 'SC_QZ2_QUAD_PER_TILE_H8', - 'SC_QZ2_QUAD_PER_TILE_H9', 'SC_QZ2_TILE_COUNT', - 'SC_QZ2_TILE_COVERED_COUNT', 'SC_QZ2_TILE_NOT_COVERED_COUNT', - 'SC_QZ3_QUAD_COUNT', 'SC_QZ3_QUAD_PER_TILE_H0', - 'SC_QZ3_QUAD_PER_TILE_H1', 'SC_QZ3_QUAD_PER_TILE_H10', - 'SC_QZ3_QUAD_PER_TILE_H11', 'SC_QZ3_QUAD_PER_TILE_H12', - 'SC_QZ3_QUAD_PER_TILE_H13', 'SC_QZ3_QUAD_PER_TILE_H14', - 'SC_QZ3_QUAD_PER_TILE_H15', 'SC_QZ3_QUAD_PER_TILE_H16', - 'SC_QZ3_QUAD_PER_TILE_H2', 'SC_QZ3_QUAD_PER_TILE_H3', - 'SC_QZ3_QUAD_PER_TILE_H4', 'SC_QZ3_QUAD_PER_TILE_H5', - 'SC_QZ3_QUAD_PER_TILE_H6', 'SC_QZ3_QUAD_PER_TILE_H7', - 'SC_QZ3_QUAD_PER_TILE_H8', 'SC_QZ3_QUAD_PER_TILE_H9', - 'SC_QZ3_TILE_COUNT', 'SC_QZ3_TILE_COVERED_COUNT', - 'SC_QZ3_TILE_NOT_COVERED_COUNT', 'SC_QZQP_WINDOW_VALID', - 'SC_QZQP_WINDOW_VALID_BUSY', 'SC_REG_SCLK_BUSY', 'SC_RESERVED_0', - 'SC_RESERVED_1', 'SC_RESERVED_2', 'SC_RESERVED_3', 'SC_SCB_BUSY', - 'SC_SCF_SCB_INTERFACE_BUSY', 'SC_SCISSOR_DISCARD', - 'SC_SC_PS_ENG_MULTICYCLE_BUBBLE', 'SC_SC_SPI_DEALLOC_0_0', - 'SC_SC_SPI_DEALLOC_0_1', 'SC_SC_SPI_DEALLOC_0_2', - 'SC_SC_SPI_DEALLOC_1_0', 'SC_SC_SPI_DEALLOC_1_1', - 'SC_SC_SPI_DEALLOC_1_2', 'SC_SC_SPI_DEALLOC_2_0', - 'SC_SC_SPI_DEALLOC_2_1', 'SC_SC_SPI_DEALLOC_2_2', - 'SC_SC_SPI_DEALLOC_3_0', 'SC_SC_SPI_DEALLOC_3_1', - 'SC_SC_SPI_DEALLOC_3_2', 'SC_SC_SPI_EVENT', 'SC_SC_SPI_FPOV_0', - 'SC_SC_SPI_FPOV_1', 'SC_SC_SPI_FPOV_2', 'SC_SC_SPI_FPOV_3', - 'SC_SEND_DB_VPZ', 'SC_SPIBC_FULL_FREEZE', 'SC_SPI_CREDIT_AT_MAX', - 'SC_SPI_CREDIT_AT_MAX_NO_PENDING_SEND', - 'SC_SPI_CREDIT_AT_ZERO_WITH_PENDING_SEND', 'SC_SPI_SEND', - 'SC_SRPS_WINDOW_VALID', 'SC_SRPS_WINDOW_VALID_BUSY', - 'SC_STALLED_BY_BCI', 'SC_STALLED_BY_DB_QUAD', - 'SC_STALLED_BY_DB_TILE', 'SC_STALLED_BY_PRIMFIFO', - 'SC_STALLED_BY_QUADFIFO', 'SC_STALLED_BY_SPI', - 'SC_STALLED_BY_TILEFIFO', 'SC_STALLED_BY_TILEORDERFIFO', - 'SC_STARVED_BY_DB_QUAD', 'SC_STARVED_BY_DB_TILE', - 'SC_STARVED_BY_PA', 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_FULL', - 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_NOT_EMPTY', - 'SC_SUPERTILE_COUNT', - 'SC_SUPERTILE_COUNT_EXCLUDE_PASS_EMPTY_PRIM', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H0', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H1', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H10', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H11', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H12', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H13', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H14', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H15', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H16', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H2', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H3', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H4', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H5', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H6', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H7', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H8', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H9', - 'SC_SUPERTILE_PER_PRIM_H0', 'SC_SUPERTILE_PER_PRIM_H1', - 'SC_SUPERTILE_PER_PRIM_H10', 'SC_SUPERTILE_PER_PRIM_H11', - 'SC_SUPERTILE_PER_PRIM_H12', 'SC_SUPERTILE_PER_PRIM_H13', - 'SC_SUPERTILE_PER_PRIM_H14', 'SC_SUPERTILE_PER_PRIM_H15', - 'SC_SUPERTILE_PER_PRIM_H16', 'SC_SUPERTILE_PER_PRIM_H2', - 'SC_SUPERTILE_PER_PRIM_H3', 'SC_SUPERTILE_PER_PRIM_H4', - 'SC_SUPERTILE_PER_PRIM_H5', 'SC_SUPERTILE_PER_PRIM_H6', - 'SC_SUPERTILE_PER_PRIM_H7', 'SC_SUPERTILE_PER_PRIM_H8', - 'SC_SUPERTILE_PER_PRIM_H9', 'SC_TILE_PER_PRIM_H0', - 'SC_TILE_PER_PRIM_H1', 'SC_TILE_PER_PRIM_H10', - 'SC_TILE_PER_PRIM_H11', 'SC_TILE_PER_PRIM_H12', - 'SC_TILE_PER_PRIM_H13', 'SC_TILE_PER_PRIM_H14', - 'SC_TILE_PER_PRIM_H15', 'SC_TILE_PER_PRIM_H16', - 'SC_TILE_PER_PRIM_H2', 'SC_TILE_PER_PRIM_H3', - 'SC_TILE_PER_PRIM_H4', 'SC_TILE_PER_PRIM_H5', - 'SC_TILE_PER_PRIM_H6', 'SC_TILE_PER_PRIM_H7', - 'SC_TILE_PER_PRIM_H8', 'SC_TILE_PER_PRIM_H9', - 'SC_TILE_PER_SUPERTILE_H0', 'SC_TILE_PER_SUPERTILE_H1', - 'SC_TILE_PER_SUPERTILE_H10', 'SC_TILE_PER_SUPERTILE_H11', - 'SC_TILE_PER_SUPERTILE_H12', 'SC_TILE_PER_SUPERTILE_H13', - 'SC_TILE_PER_SUPERTILE_H14', 'SC_TILE_PER_SUPERTILE_H15', - 'SC_TILE_PER_SUPERTILE_H16', 'SC_TILE_PER_SUPERTILE_H2', - 'SC_TILE_PER_SUPERTILE_H3', 'SC_TILE_PER_SUPERTILE_H4', - 'SC_TILE_PER_SUPERTILE_H5', 'SC_TILE_PER_SUPERTILE_H6', - 'SC_TILE_PER_SUPERTILE_H7', 'SC_TILE_PER_SUPERTILE_H8', - 'SC_TILE_PER_SUPERTILE_H9', 'SC_TILE_PICKED_H1', - 'SC_TILE_PICKED_H2', 'SC_TILE_PICKED_H3', 'SC_TILE_PICKED_H4', - 'SC_TPQZ_WINDOW_VALID', 'SC_TPQZ_WINDOW_VALID_BUSY', - 'SC_TRPK_WINDOW_VALID', 'SC_TRPK_WINDOW_VALID_BUSY', - 'SDMA_PERF_SEL', 'SDMA_PERF_SEL_CE_AFIFO_FULL', - 'SDMA_PERF_SEL_CE_DST_IDLE', 'SDMA_PERF_SEL_CE_INFO1_FULL', - 'SDMA_PERF_SEL_CE_INFO_FULL', 'SDMA_PERF_SEL_CE_IN_IDLE', - 'SDMA_PERF_SEL_CE_L1_WR_VLD', 'SDMA_PERF_SEL_CE_OUT_IDLE', - 'SDMA_PERF_SEL_CE_RD_STALL', 'SDMA_PERF_SEL_CE_RREQ_IDLE', - 'SDMA_PERF_SEL_CE_SPLIT_IDLE', 'SDMA_PERF_SEL_CE_WREQ_IDLE', - 'SDMA_PERF_SEL_CE_WR_IDLE', 'SDMA_PERF_SEL_CE_WR_STALL', - 'SDMA_PERF_SEL_CPF_SDMA_INVREQ', 'SDMA_PERF_SEL_CTX_CHANGE', - 'SDMA_PERF_SEL_CTX_CHANGE_EXCEPTION', - 'SDMA_PERF_SEL_CTX_CHANGE_EXPIRED', 'SDMA_PERF_SEL_CYCLE', - 'SDMA_PERF_SEL_DMA_L1_RD_SEND', 'SDMA_PERF_SEL_DMA_L1_WR_SEND', - 'SDMA_PERF_SEL_DMA_MC_RD_SEND', 'SDMA_PERF_SEL_DMA_MC_WR_SEND', - 'SDMA_PERF_SEL_DOORBELL', 'SDMA_PERF_SEL_EX_IDLE', - 'SDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 'SDMA_PERF_SEL_F32_L1_WR_VLD', 'SDMA_PERF_SEL_GCR_RTN', - 'SDMA_PERF_SEL_GCR_SEND', 'SDMA_PERF_SEL_GFX_SELECT', - 'SDMA_PERF_SEL_GPUVM_INVREQ_HIGH', - 'SDMA_PERF_SEL_GPUVM_INVREQ_LOW', 'SDMA_PERF_SEL_IB_CMD_FULL', - 'SDMA_PERF_SEL_IB_CMD_IDLE', 'SDMA_PERF_SEL_IDLE', - 'SDMA_PERF_SEL_INT_IDLE', 'SDMA_PERF_SEL_INT_REQ_COUNT', - 'SDMA_PERF_SEL_INT_REQ_STALL', 'SDMA_PERF_SEL_INT_RESP_ACCEPTED', - 'SDMA_PERF_SEL_INT_RESP_RETRY', 'SDMA_PERF_SEL_L1_RDL2_IDLE', - 'SDMA_PERF_SEL_L1_RDMC_IDLE', 'SDMA_PERF_SEL_L1_RD_INV_IDLE', - 'SDMA_PERF_SEL_L1_WRL2_IDLE', 'SDMA_PERF_SEL_L1_WRMC_IDLE', - 'SDMA_PERF_SEL_L1_WR_INV_IDLE', 'SDMA_PERF_SEL_L2_META_RET_VLD', - 'SDMA_PERF_SEL_MC_RD_COUNT', 'SDMA_PERF_SEL_MC_RD_IDLE', - 'SDMA_PERF_SEL_MC_RD_NO_POLL_IDLE', - 'SDMA_PERF_SEL_MC_RD_RET_STALL', 'SDMA_PERF_SEL_MC_WR_COUNT', - 'SDMA_PERF_SEL_MC_WR_IDLE', 'SDMA_PERF_SEL_META_L2_REQ_SEND', - 'SDMA_PERF_SEL_META_REQ_SEND', 'SDMA_PERF_SEL_META_RTN_VLD', - 'SDMA_PERF_SEL_MMHUB_TAG_DELAY_COUNTER', - 'SDMA_PERF_SEL_NUM_PACKET', 'SDMA_PERF_SEL_PAGE_SELECT', - 'SDMA_PERF_SEL_RB_CMD_FULL', 'SDMA_PERF_SEL_RB_CMD_IDLE', - 'SDMA_PERF_SEL_RB_EMPTY', 'SDMA_PERF_SEL_RB_FULL', - 'SDMA_PERF_SEL_RB_RPTR_WB', 'SDMA_PERF_SEL_RB_RPTR_WRAP', - 'SDMA_PERF_SEL_RB_WPTR_POLL_READ', 'SDMA_PERF_SEL_RB_WPTR_WRAP', - 'SDMA_PERF_SEL_RD_BA_RTR', 'SDMA_PERF_SEL_REG_IDLE', - 'SDMA_PERF_SEL_RLC0_SELECT', 'SDMA_PERF_SEL_RLC1_SELECT', - 'SDMA_PERF_SEL_SDMA_CPF_INVACK', - 'SDMA_PERF_SEL_SDMA_UTCL2_INVACK', - 'SDMA_PERF_SEL_SDMA_UTCL2_INVACK_ALL', - 'SDMA_PERF_SEL_SDMA_UTCL2_RD_SEND', - 'SDMA_PERF_SEL_SDMA_UTCL2_SEND', - 'SDMA_PERF_SEL_SDMA_UTCL2_WR_SEND', 'SDMA_PERF_SEL_SEM_IDLE', - 'SDMA_PERF_SEL_SEM_REQ_COUNT', 'SDMA_PERF_SEL_SEM_REQ_STALL', - 'SDMA_PERF_SEL_SEM_RESP_FAIL', - 'SDMA_PERF_SEL_SEM_RESP_INCOMPLETE', - 'SDMA_PERF_SEL_SEM_RESP_PASS', 'SDMA_PERF_SEL_SRBM_REG_SEND', - 'SDMA_PERF_SEL_TLBI_RTN', 'SDMA_PERF_SEL_TLBI_SEND', - 'SDMA_PERF_SEL_UTCL1_TAG_DELAY_COUNTER', - 'SDMA_PERF_SEL_UTCL2_FREE', 'SDMA_PERF_SEL_UTCL2_RET_ACK', - 'SDMA_PERF_SEL_UTCL2_RET_XNACK', - 'SDMA_PERF_SEL_UTCL2_SDMA_INVREQ', - 'SDMA_PERF_SEL_UTCL2_SDMA_INVREQ_ALL', - 'SDMA_PERF_SEL_UTCL2_SDMA_RD_RTN', - 'SDMA_PERF_SEL_UTCL2_SDMA_WR_RTN', 'SDMA_PERF_SEL_WR_BA_RTR', - 'SEC_GSP0_PRIORITY_HIGH', 'SEC_GSP0_PRIORITY_LOW', 'SEGMENTS_1', - 'SEGMENTS_128', 'SEGMENTS_16', 'SEGMENTS_2', 'SEGMENTS_32', - 'SEGMENTS_4', 'SEGMENTS_64', 'SEGMENTS_8', 'SEM_ECC_ERROR', - 'SEM_PERF_SEL', 'SEM_PERF_SEL_ACP_REQ_SIGNAL', - 'SEM_PERF_SEL_ACP_REQ_WAIT', 'SEM_PERF_SEL_ATC_INVALIDATION', - 'SEM_PERF_SEL_ATC_REQ', 'SEM_PERF_SEL_ATC_RET', - 'SEM_PERF_SEL_ATC_VM_INVALIDATION', 'SEM_PERF_SEL_ATC_XNACK', - 'SEM_PERF_SEL_CPC1_IMME_E0_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC1_IMME_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_IMME_E1_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC1_IMME_E1_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_IMME_E2_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC1_IMME_E2_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_IMME_E3_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC1_IMME_E3_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E0_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E10_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E10_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E11_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E11_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E12_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E12_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E13_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E13_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E14_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E14_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E15_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E15_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E16_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E16_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E17_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E17_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E18_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E18_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E19_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E19_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E1_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E1_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E20_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E20_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E21_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E21_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E22_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E22_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E23_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E23_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E24_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E24_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E25_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E25_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E26_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E26_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E27_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E27_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E28_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E28_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E29_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E29_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E2_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E2_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E30_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E30_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E31_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E31_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E3_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E3_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E4_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E4_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E5_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E5_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E6_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E6_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E7_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E7_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E8_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E8_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E9_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E9_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_IMME_E0_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC2_IMME_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_IMME_E1_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC2_IMME_E1_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_IMME_E2_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC2_IMME_E2_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_IMME_E3_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC2_IMME_E3_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E0_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E10_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E10_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E11_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E11_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E12_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E12_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E13_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E13_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E14_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E14_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E15_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E15_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E16_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E16_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E17_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E17_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E18_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E18_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E19_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E19_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E1_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E1_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E20_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E20_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E21_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E21_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E22_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E22_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E23_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E23_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E24_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E24_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E25_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E25_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E26_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E26_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E27_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E27_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E28_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E28_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E29_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E29_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E2_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E2_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E30_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E30_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E31_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E31_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E3_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E3_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E4_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E4_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E5_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E5_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E6_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E6_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E7_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E7_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E8_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E8_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E9_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E9_REQ_WAIT', - 'SEM_PERF_SEL_CPG_E0_REQ_SIGNAL', 'SEM_PERF_SEL_CPG_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPG_E1_REQ_SIGNAL', 'SEM_PERF_SEL_CPG_E1_REQ_WAIT', - 'SEM_PERF_SEL_CYCLE', 'SEM_PERF_SEL_IDLE', - 'SEM_PERF_SEL_ISP_REQ_SIGNAL', 'SEM_PERF_SEL_ISP_REQ_WAIT', - 'SEM_PERF_SEL_MC_RD_REQ', 'SEM_PERF_SEL_MC_RD_RET', - 'SEM_PERF_SEL_MC_WR_REQ', 'SEM_PERF_SEL_MC_WR_RET', - 'SEM_PERF_SEL_SDMA0_REQ_SIGNAL', 'SEM_PERF_SEL_SDMA0_REQ_WAIT', - 'SEM_PERF_SEL_SDMA1_REQ_SIGNAL', 'SEM_PERF_SEL_SDMA1_REQ_WAIT', - 'SEM_PERF_SEL_UVD_REQ_SIGNAL', 'SEM_PERF_SEL_UVD_REQ_WAIT', - 'SEM_PERF_SEL_VCE0_REQ_SIGNAL', 'SEM_PERF_SEL_VCE0_REQ_WAIT', - 'SEM_PERF_SEL_VCE1_REQ_SIGNAL', 'SEM_PERF_SEL_VCE1_REQ_WAIT', - 'SEM_PERF_SEL_VP8_REQ_SIGNAL', 'SEM_PERF_SEL_VP8_REQ_WAIT', - 'SEM_RESP_FAILED', 'SEM_RESP_PASSED', 'SEM_TRANS_ERROR', - 'SEND_AT_EARLIEST_TIME', 'SEND_AT_LINK_NUMBER', - 'SEND_NORMAL_PACKET', 'SEND_PPS_PACKET', 'SET_FE_ID', - 'SET_STATIC_SCREEN_SMU_INTR', 'SH_MEM_ADDRESS_MODE', - 'SH_MEM_ADDRESS_MODE_32', 'SH_MEM_ADDRESS_MODE_64', - 'SH_MEM_ALIGNMENT_MODE', 'SH_MEM_ALIGNMENT_MODE_DWORD', - 'SH_MEM_ALIGNMENT_MODE_DWORD_STRICT', - 'SH_MEM_ALIGNMENT_MODE_STRICT', 'SH_MEM_ALIGNMENT_MODE_UNALIGNED', - 'SH_MEM_RETRY_MODE', 'SH_MEM_RETRY_MODE_ALL', - 'SH_MEM_RETRY_MODE_NONE', 'SH_MEM_RETRY_MODE_WRITEATOMIC', - 'SIGNED', 'SIMM16_WAITCNT_DEPCTR_SA_SDST_SIZE', - 'SIMM16_WAITCNT_DEPCTR_SA_SDST_START', - 'SIMM16_WAITCNT_DEPCTR_VA_SDST_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VA_SDST_START', - 'SIMM16_WAITCNT_DEPCTR_VA_SSRC_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VA_SSRC_START', - 'SIMM16_WAITCNT_DEPCTR_VA_VCC_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VA_VCC_START', - 'SIMM16_WAITCNT_DEPCTR_VA_VDST_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VA_VDST_START', - 'SIMM16_WAITCNT_DEPCTR_VM_VSRC_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VM_VSRC_START', - 'SIMM16_WAITCNT_EXP_CNT_SIZE', 'SIMM16_WAITCNT_EXP_CNT_START', - 'SIMM16_WAITCNT_LGKM_CNT_SIZE', 'SIMM16_WAITCNT_LGKM_CNT_START', - 'SIMM16_WAITCNT_VM_CNT_HI_SIZE', 'SIMM16_WAITCNT_VM_CNT_HI_START', - 'SIMM16_WAITCNT_VM_CNT_SIZE', 'SIMM16_WAITCNT_VM_CNT_START', - 'SIXTEEN_BANKS', 'SIXTEEN_PIPES', 'SIXTY_FOUR_PIPES', 'SIZE_16K', - 'SIZE_8K', 'SMU_INTR_STATUS_CLEAR', 'SMU_INTR_STATUS_NOOP', - 'SM_MODE_RESERVED', 'SOFT_RESET', 'SOFT_RESET_0', 'SOFT_RESET_1', - 'SO_VGTSTREAMOUT_FLUSH', 'SPI_FOG_EXP', 'SPI_FOG_EXP2', - 'SPI_FOG_LINEAR', 'SPI_FOG_MODE', 'SPI_FOG_NONE', - 'SPI_LB_WAVES_RSVD', 'SPI_LB_WAVES_SELECT', 'SPI_PERFCNT_SEL', - 'SPI_PERF_CLKGATE_ACTIVE_STALL', 'SPI_PERF_CLKGATE_ALL_CLOCKS_ON', - 'SPI_PERF_CLKGATE_BUSY_STALL', 'SPI_PERF_CLKGATE_CGTT_DYN_ON', - 'SPI_PERF_CLKGATE_CGTT_REG_ON', 'SPI_PERF_CSG_BUSY', - 'SPI_PERF_CSG_CRAWLER_STALL', 'SPI_PERF_CSG_EVENT_WAVE', - 'SPI_PERF_CSG_NUM_THREADGROUPS', 'SPI_PERF_CSG_WAVE', - 'SPI_PERF_CSG_WINDOW_VALID', 'SPI_PERF_CSN_BUSY', - 'SPI_PERF_CSN_CRAWLER_STALL', 'SPI_PERF_CSN_EVENT_WAVE', - 'SPI_PERF_CSN_NUM_THREADGROUPS', 'SPI_PERF_CSN_WAVE', - 'SPI_PERF_CSN_WINDOW_VALID', 'SPI_PERF_ESC_VTX_BUSY', - 'SPI_PERF_ESC_VTX_CAC_BUSY', 'SPI_PERF_ESC_VTX_INPUT_STARVED', - 'SPI_PERF_ESC_VTX_VSR_FULL', 'SPI_PERF_ESC_VTX_VSR_STALL', - 'SPI_PERF_ES_BUSY', 'SPI_PERF_ES_CRAWLER_STALL', - 'SPI_PERF_ES_EVENT_WAVE', 'SPI_PERF_ES_FIRST_SUBGRP', - 'SPI_PERF_ES_FIRST_WAVE', 'SPI_PERF_ES_LAST_SUBGRP', - 'SPI_PERF_ES_LAST_WAVE', 'SPI_PERF_ES_LSHS_DEALLOC', - 'SPI_PERF_ES_PERS_UPD_FULL0', 'SPI_PERF_ES_PERS_UPD_FULL1', - 'SPI_PERF_ES_WAVE', 'SPI_PERF_ES_WINDOW_VALID', - 'SPI_PERF_EXP_ARB_COL_CNT', 'SPI_PERF_EXP_ARB_GDS_CNT', - 'SPI_PERF_EXP_ARB_PAR_CNT', 'SPI_PERF_EXP_ARB_POS_CNT', - 'SPI_PERF_GSC_VTX_BUSY', 'SPI_PERF_GSC_VTX_CAC_BUSY', - 'SPI_PERF_GSC_VTX_INPUT_STARVED', 'SPI_PERF_GSC_VTX_VSR_FULL', - 'SPI_PERF_GSC_VTX_VSR_STALL', 'SPI_PERF_GS_BUSY', - 'SPI_PERF_GS_CRAWLER_STALL', 'SPI_PERF_GS_EVENT_WAVE', - 'SPI_PERF_GS_FIRST_SUBGRP', 'SPI_PERF_GS_GRP_FIFO_FULL', - 'SPI_PERF_GS_HS_DEALLOC', 'SPI_PERF_GS_LAST_SUBGRP', - 'SPI_PERF_GS_NGG_GS_ALLOC_FIFO_EMPTY', 'SPI_PERF_GS_NGG_PC_FULL', - 'SPI_PERF_GS_NGG_SE_AT_SYNC_EVENT', - 'SPI_PERF_GS_NGG_SE_DEALLOC_PC_SPACE_CNT', - 'SPI_PERF_GS_NGG_SE_DOES_NOT_HAVE_BATON', - 'SPI_PERF_GS_NGG_SE_FORWARDED_BATON', - 'SPI_PERF_GS_NGG_SE_HAS_BATON', - 'SPI_PERF_GS_NGG_SE_LATE_ALLOC_LIMIT', - 'SPI_PERF_GS_NGG_SE_SEND_GS_ALLOC', - 'SPI_PERF_GS_NGG_SE_SG_ALLOC_PC_SPACE_CNT', - 'SPI_PERF_GS_PERS_UPD_FULL0', 'SPI_PERF_GS_PERS_UPD_FULL1', - 'SPI_PERF_GS_WAVE', 'SPI_PERF_GS_WINDOW_VALID', - 'SPI_PERF_HS_BUSY', 'SPI_PERF_HS_CRAWLER_STALL', - 'SPI_PERF_HS_EVENT_WAVE', 'SPI_PERF_HS_FIRST_WAVE', - 'SPI_PERF_HS_LAST_WAVE', 'SPI_PERF_HS_OFFCHIP_LDS_STALL', - 'SPI_PERF_HS_PERS_UPD_FULL0', 'SPI_PERF_HS_PERS_UPD_FULL1', - 'SPI_PERF_HS_WAVE', 'SPI_PERF_HS_WINDOW_VALID', - 'SPI_PERF_LDS0_PC_VALID', 'SPI_PERF_LDS1_PC_VALID', - 'SPI_PERF_LS_BUSY', 'SPI_PERF_LS_CRAWLER_STALL', - 'SPI_PERF_LS_EVENT_WAVE', 'SPI_PERF_LS_FIRST_WAVE', - 'SPI_PERF_LS_LAST_WAVE', 'SPI_PERF_LS_OFFCHIP_LDS_STALL', - 'SPI_PERF_LS_PERS_UPD_FULL0', 'SPI_PERF_LS_PERS_UPD_FULL1', - 'SPI_PERF_LS_WAVE', 'SPI_PERF_LS_WINDOW_VALID', - 'SPI_PERF_NUM_EXPGRANT_EXPORTS', 'SPI_PERF_NUM_PS_COL_R0_EXPORTS', - 'SPI_PERF_NUM_PS_COL_R1_EXPORTS', - 'SPI_PERF_NUM_VS_GDS_R0_EXPORTS', - 'SPI_PERF_NUM_VS_GDS_R1_EXPORTS', - 'SPI_PERF_NUM_VS_PARAM_R0_EXPORTS', - 'SPI_PERF_NUM_VS_PARAM_R1_EXPORTS', - 'SPI_PERF_NUM_VS_POS_R0_EXPORTS', - 'SPI_PERF_NUM_VS_POS_R1_EXPORTS', 'SPI_PERF_PC_ALLOC_ACCUM', - 'SPI_PERF_PIX_ALLOC_DB0_STALL', 'SPI_PERF_PIX_ALLOC_DB1_STALL', - 'SPI_PERF_PIX_ALLOC_DB2_STALL', 'SPI_PERF_PIX_ALLOC_DB3_STALL', - 'SPI_PERF_PIX_ALLOC_DB4_STALL', 'SPI_PERF_PIX_ALLOC_DB5_STALL', - 'SPI_PERF_PIX_ALLOC_DB6_STALL', 'SPI_PERF_PIX_ALLOC_DB7_STALL', - 'SPI_PERF_PIX_ALLOC_PEND_CNT', 'SPI_PERF_PIX_ALLOC_SCB0_STALL', - 'SPI_PERF_PIX_ALLOC_SCB1_STALL', 'SPI_PERF_PIX_ALLOC_SCB2_STALL', - 'SPI_PERF_PIX_ALLOC_SCB3_STALL', 'SPI_PERF_PS0_ACTIVE', - 'SPI_PERF_PS0_BUSY', 'SPI_PERF_PS0_CNF_BIN2', - 'SPI_PERF_PS0_CNF_BIN3', 'SPI_PERF_PS0_CRAWLER_STALL', - 'SPI_PERF_PS0_DEALLOC_BIN0', 'SPI_PERF_PS0_EVENT_WAVE', - 'SPI_PERF_PS0_FPOS_BIN1_STALL', 'SPI_PERF_PS0_FPOS_BIN2', - 'SPI_PERF_PS0_LDS_RES_FULL', 'SPI_PERF_PS0_OPT_WAVE', - 'SPI_PERF_PS0_PASS_BIN0', 'SPI_PERF_PS0_PASS_BIN1', - 'SPI_PERF_PS0_POPS_WAVE_EXIT', 'SPI_PERF_PS0_POPS_WAVE_SENT', - 'SPI_PERF_PS0_PRIM_BIN0', 'SPI_PERF_PS0_PRIM_BIN1', - 'SPI_PERF_PS0_WAVE', 'SPI_PERF_PS0_WINDOW_VALID', - 'SPI_PERF_PS1_ACTIVE', 'SPI_PERF_PS1_BUSY', - 'SPI_PERF_PS1_CNF_BIN2', 'SPI_PERF_PS1_CNF_BIN3', - 'SPI_PERF_PS1_CRAWLER_STALL', 'SPI_PERF_PS1_DEALLOC_BIN0', - 'SPI_PERF_PS1_EVENT_WAVE', 'SPI_PERF_PS1_FPOS_BIN1_STALL', - 'SPI_PERF_PS1_FPOS_BIN2', 'SPI_PERF_PS1_LDS_RES_FULL', - 'SPI_PERF_PS1_OPT_WAVE', 'SPI_PERF_PS1_PASS_BIN0', - 'SPI_PERF_PS1_PASS_BIN1', 'SPI_PERF_PS1_POPS_WAVE_EXIT', - 'SPI_PERF_PS1_POPS_WAVE_SENT', 'SPI_PERF_PS1_PRIM_BIN0', - 'SPI_PERF_PS1_PRIM_BIN1', 'SPI_PERF_PS1_WAVE', - 'SPI_PERF_PS1_WINDOW_VALID', 'SPI_PERF_PS2_ACTIVE', - 'SPI_PERF_PS2_BUSY', 'SPI_PERF_PS2_CNF_BIN2', - 'SPI_PERF_PS2_CNF_BIN3', 'SPI_PERF_PS2_CRAWLER_STALL', - 'SPI_PERF_PS2_DEALLOC_BIN0', 'SPI_PERF_PS2_EVENT_WAVE', - 'SPI_PERF_PS2_FPOS_BIN1_STALL', 'SPI_PERF_PS2_FPOS_BIN2', - 'SPI_PERF_PS2_LDS_RES_FULL', 'SPI_PERF_PS2_OPT_WAVE', - 'SPI_PERF_PS2_PASS_BIN0', 'SPI_PERF_PS2_PASS_BIN1', - 'SPI_PERF_PS2_POPS_WAVE_EXIT', 'SPI_PERF_PS2_POPS_WAVE_SENT', - 'SPI_PERF_PS2_PRIM_BIN0', 'SPI_PERF_PS2_PRIM_BIN1', - 'SPI_PERF_PS2_WAVE', 'SPI_PERF_PS2_WINDOW_VALID', - 'SPI_PERF_PS3_ACTIVE', 'SPI_PERF_PS3_BUSY', - 'SPI_PERF_PS3_CNF_BIN2', 'SPI_PERF_PS3_CNF_BIN3', - 'SPI_PERF_PS3_CRAWLER_STALL', 'SPI_PERF_PS3_DEALLOC_BIN0', - 'SPI_PERF_PS3_EVENT_WAVE', 'SPI_PERF_PS3_FPOS_BIN1_STALL', - 'SPI_PERF_PS3_FPOS_BIN2', 'SPI_PERF_PS3_LDS_RES_FULL', - 'SPI_PERF_PS3_OPT_WAVE', 'SPI_PERF_PS3_PASS_BIN0', - 'SPI_PERF_PS3_PASS_BIN1', 'SPI_PERF_PS3_POPS_WAVE_EXIT', - 'SPI_PERF_PS3_POPS_WAVE_SENT', 'SPI_PERF_PS3_PRIM_BIN0', - 'SPI_PERF_PS3_PRIM_BIN1', 'SPI_PERF_PS3_WAVE', - 'SPI_PERF_PS3_WINDOW_VALID', 'SPI_PERF_PS_PERS_UPD_FULL0', - 'SPI_PERF_PS_PERS_UPD_FULL1', 'SPI_PERF_RA_BAR_CU_FULL_CSG', - 'SPI_PERF_RA_BAR_CU_FULL_CSN', 'SPI_PERF_RA_BAR_CU_FULL_HS', - 'SPI_PERF_RA_BULKY_CU_FULL_CSG', 'SPI_PERF_RA_BULKY_CU_FULL_CSN', - 'SPI_PERF_RA_CSG_LOCK', 'SPI_PERF_RA_CSN_LOCK', - 'SPI_PERF_RA_GS_LOCK', 'SPI_PERF_RA_HS_LOCK', - 'SPI_PERF_RA_LDS_CU_FULL_CSG', 'SPI_PERF_RA_LDS_CU_FULL_CSN', - 'SPI_PERF_RA_LDS_CU_FULL_ES', 'SPI_PERF_RA_LDS_CU_FULL_LS', - 'SPI_PERF_RA_LDS_CU_FULL_PS', 'SPI_PERF_RA_PIPE_REQ_BIN2', - 'SPI_PERF_RA_REQ_NO_ALLOC', 'SPI_PERF_RA_REQ_NO_ALLOC_CSG', - 'SPI_PERF_RA_REQ_NO_ALLOC_CSN', 'SPI_PERF_RA_REQ_NO_ALLOC_GS', - 'SPI_PERF_RA_REQ_NO_ALLOC_HS', 'SPI_PERF_RA_REQ_NO_ALLOC_PS', - 'SPI_PERF_RA_REQ_NO_ALLOC_VS', 'SPI_PERF_RA_RES_STALL_CSG', - 'SPI_PERF_RA_RES_STALL_CSN', 'SPI_PERF_RA_RES_STALL_GS', - 'SPI_PERF_RA_RES_STALL_HS', 'SPI_PERF_RA_RES_STALL_PS', - 'SPI_PERF_RA_RES_STALL_VS', 'SPI_PERF_RA_RSV_UPD', - 'SPI_PERF_RA_SGPR_SIMD_FULL_CSG', - 'SPI_PERF_RA_SGPR_SIMD_FULL_CSN', 'SPI_PERF_RA_SGPR_SIMD_FULL_GS', - 'SPI_PERF_RA_SGPR_SIMD_FULL_HS', 'SPI_PERF_RA_SGPR_SIMD_FULL_PS', - 'SPI_PERF_RA_SGPR_SIMD_FULL_VS', 'SPI_PERF_RA_TASK_REQ_BIN3', - 'SPI_PERF_RA_TGLIM_CU_FULL_CSG', 'SPI_PERF_RA_TGLIM_CU_FULL_CSN', - 'SPI_PERF_RA_TMP_STALL_CSG', 'SPI_PERF_RA_TMP_STALL_CSN', - 'SPI_PERF_RA_TMP_STALL_GS', 'SPI_PERF_RA_TMP_STALL_HS', - 'SPI_PERF_RA_TMP_STALL_PS', 'SPI_PERF_RA_TMP_STALL_VS', - 'SPI_PERF_RA_VGPR_SIMD_FULL_CSG', - 'SPI_PERF_RA_VGPR_SIMD_FULL_CSN', 'SPI_PERF_RA_VGPR_SIMD_FULL_GS', - 'SPI_PERF_RA_VGPR_SIMD_FULL_HS', 'SPI_PERF_RA_VGPR_SIMD_FULL_PS', - 'SPI_PERF_RA_VGPR_SIMD_FULL_VS', 'SPI_PERF_RA_VS_LOCK', - 'SPI_PERF_RA_WAVE_SIMD_FULL_CSG', - 'SPI_PERF_RA_WAVE_SIMD_FULL_CSN', 'SPI_PERF_RA_WAVE_SIMD_FULL_GS', - 'SPI_PERF_RA_WAVE_SIMD_FULL_HS', 'SPI_PERF_RA_WAVE_SIMD_FULL_PS', - 'SPI_PERF_RA_WAVE_SIMD_FULL_VS', 'SPI_PERF_RA_WR_CTL_FULL', - 'SPI_PERF_RA_WVLIM_STALL_CSG', 'SPI_PERF_RA_WVLIM_STALL_CSN', - 'SPI_PERF_RA_WVLIM_STALL_GS', 'SPI_PERF_RA_WVLIM_STALL_HS', - 'SPI_PERF_RA_WVLIM_STALL_PS', 'SPI_PERF_RA_WVLIM_STALL_VS', - 'SPI_PERF_SWC_CSC_WR', 'SPI_PERF_SWC_CSG_WR', - 'SPI_PERF_SWC_GS_WR', 'SPI_PERF_SWC_HS_WR', 'SPI_PERF_SWC_PS_WR', - 'SPI_PERF_SWC_VS_WR', 'SPI_PERF_VS_ALLOC_CNT', 'SPI_PERF_VS_BUSY', - 'SPI_PERF_VS_CRAWLER_STALL', 'SPI_PERF_VS_EVENT_WAVE', - 'SPI_PERF_VS_FIRST_SUBGRP', 'SPI_PERF_VS_FIRST_WAVE', - 'SPI_PERF_VS_LAST_SUBGRP', 'SPI_PERF_VS_LAST_WAVE', - 'SPI_PERF_VS_LATE_ALLOC_ACCUM', 'SPI_PERF_VS_LATE_ALLOC_FULL', - 'SPI_PERF_VS_LSHS_DEALLOC', 'SPI_PERF_VS_PC_ALLOC_CNT', - 'SPI_PERF_VS_PC_STALL', 'SPI_PERF_VS_PERS_UPD_FULL0', - 'SPI_PERF_VS_PERS_UPD_FULL1', 'SPI_PERF_VS_POS0_STALL', - 'SPI_PERF_VS_POS1_STALL', 'SPI_PERF_VS_WAVE', - 'SPI_PERF_VS_WINDOW_VALID', 'SPI_PERF_VWC_CSC_WR', - 'SPI_PERF_VWC_CSG_WR', 'SPI_PERF_VWC_GS_WR', 'SPI_PERF_VWC_HS_WR', - 'SPI_PERF_VWC_PS_WR', 'SPI_PERF_VWC_VS_WR', - 'SPI_PNT_SPRITE_OVERRIDE', 'SPI_PNT_SPRITE_SEL_0', - 'SPI_PNT_SPRITE_SEL_1', 'SPI_PNT_SPRITE_SEL_NONE', - 'SPI_PNT_SPRITE_SEL_S', 'SPI_PNT_SPRITE_SEL_T', 'SPI_SAMPLE_CNTL', - 'SPI_SHADER_1COMP', 'SPI_SHADER_2COMP', 'SPI_SHADER_32_ABGR', - 'SPI_SHADER_32_AR', 'SPI_SHADER_32_GR', 'SPI_SHADER_32_R', - 'SPI_SHADER_4COMP', 'SPI_SHADER_4COMPRESS', - 'SPI_SHADER_EX_FORMAT', 'SPI_SHADER_FORMAT', - 'SPI_SHADER_FP16_ABGR', 'SPI_SHADER_NONE', - 'SPI_SHADER_SINT16_ABGR', 'SPI_SHADER_SNORM16_ABGR', - 'SPI_SHADER_UINT16_ABGR', 'SPI_SHADER_UNORM16_ABGR', - 'SPI_SHADER_ZERO', 'SPM_PERFMON_STATE', 'SPRITE_EN', - 'SP_PERF_SEL_DUMMY_BEGIN', 'SP_PERF_SEL_DUMMY_LAST', - 'SQC_PERF_SEL_DCACHE_ATOMIC', 'SQC_PERF_SEL_DCACHE_BUSY_CYCLES', - 'SQC_PERF_SEL_DCACHE_CACHE_STALLED', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_ALLOC_UNAVAILABLE', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_EVICT', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_FLUSH_DONE', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_FORCE_EVICT', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_INFLIGHT_MAX', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_INFLIGHT_NONZERO', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_MULTI_FLUSH', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT_HIT_FIFO', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT_MISS_FIFO', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT_TC_IF', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_UNORDERED', - 'SQC_PERF_SEL_DCACHE_FLAT_REQ', 'SQC_PERF_SEL_DCACHE_GCR', - 'SQC_PERF_SEL_DCACHE_GCR_HITS', - 'SQC_PERF_SEL_DCACHE_GCR_INVALIDATE', - 'SQC_PERF_SEL_DCACHE_GCR_WRITEBACK', 'SQC_PERF_SEL_DCACHE_HITS', - 'SQC_PERF_SEL_DCACHE_HIT_LRU_READ', - 'SQC_PERF_SEL_DCACHE_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_DCACHE_INPUT_STALL_ARB_NO_GRANT', - 'SQC_PERF_SEL_DCACHE_INPUT_STALL_BANK_READYB', - 'SQC_PERF_SEL_DCACHE_INPUT_VALIDB', - 'SQC_PERF_SEL_DCACHE_INPUT_VALID_READY', - 'SQC_PERF_SEL_DCACHE_INPUT_VALID_READYB', - 'SQC_PERF_SEL_DCACHE_INVAL_ASYNC', - 'SQC_PERF_SEL_DCACHE_INVAL_INST', 'SQC_PERF_SEL_DCACHE_MISSES', - 'SQC_PERF_SEL_DCACHE_MISSES_DUPLICATE', - 'SQC_PERF_SEL_DCACHE_NONFLAT_REQ', 'SQC_PERF_SEL_DCACHE_REQ', - 'SQC_PERF_SEL_DCACHE_REQ_ATC_PROBE', - 'SQC_PERF_SEL_DCACHE_REQ_READ_1', - 'SQC_PERF_SEL_DCACHE_REQ_READ_16', - 'SQC_PERF_SEL_DCACHE_REQ_READ_2', - 'SQC_PERF_SEL_DCACHE_REQ_READ_4', - 'SQC_PERF_SEL_DCACHE_REQ_READ_8', 'SQC_PERF_SEL_DCACHE_REQ_TIME', - 'SQC_PERF_SEL_DCACHE_REQ_WRITE_1', - 'SQC_PERF_SEL_DCACHE_REQ_WRITE_2', - 'SQC_PERF_SEL_DCACHE_REQ_WRITE_4', - 'SQC_PERF_SEL_DCACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 'SQC_PERF_SEL_DCACHE_TC_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_DCACHE_UTCL0_ALL_REQ', - 'SQC_PERF_SEL_DCACHE_UTCL0_HIT_FIFO_FULL', - 'SQC_PERF_SEL_DCACHE_UTCL0_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_DCACHE_UTCL0_LFIFO_FULL', - 'SQC_PERF_SEL_DCACHE_UTCL0_PERMISSION_MISS', - 'SQC_PERF_SEL_DCACHE_UTCL0_REQUEST', - 'SQC_PERF_SEL_DCACHE_UTCL0_STALL_INFLIGHT_MAX', - 'SQC_PERF_SEL_DCACHE_UTCL0_STALL_LFIFO_NOT_RES', - 'SQC_PERF_SEL_DCACHE_UTCL0_STALL_LRU_INFLIGHT', - 'SQC_PERF_SEL_DCACHE_UTCL0_STALL_MISSFIFO_FULL', - 'SQC_PERF_SEL_DCACHE_UTCL0_STALL_MULTI_MISS', - 'SQC_PERF_SEL_DCACHE_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS', - 'SQC_PERF_SEL_DCACHE_UTCL0_TRANSLATION_HIT', - 'SQC_PERF_SEL_DCACHE_UTCL0_TRANSLATION_MISS', - 'SQC_PERF_SEL_DCACHE_UTCL0_UTCL1_INFLIGHT', - 'SQC_PERF_SEL_DCACHE_UTCL0_XNACK', - 'SQC_PERF_SEL_DCACHE_UTCL1_ALL_REQ', - 'SQC_PERF_SEL_DCACHE_UTCL1_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_DCACHE_WB_ASYNC', 'SQC_PERF_SEL_DCACHE_WB_INST', - 'SQC_PERF_SEL_DCACHE_WC_LRU_WRITE', - 'SQC_PERF_SEL_DCACHE_WT_EVICT_WRITE', 'SQC_PERF_SEL_DUMMY_LAST', - 'SQC_PERF_SEL_ICACHE_BUSY_CYCLES', - 'SQC_PERF_SEL_ICACHE_CACHE_STALLED', - 'SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_MAX', - 'SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_NONZERO', - 'SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT', - 'SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT_HIT_FIFO', - 'SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT_MISS_FIFO', - 'SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT_TC_IF', - 'SQC_PERF_SEL_ICACHE_GCR', 'SQC_PERF_SEL_ICACHE_GCR_HITS', - 'SQC_PERF_SEL_ICACHE_GCR_INVALIDATE', 'SQC_PERF_SEL_ICACHE_HITS', - 'SQC_PERF_SEL_ICACHE_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_ICACHE_INPUT_STALL_ARB_NO_GRANT', - 'SQC_PERF_SEL_ICACHE_INPUT_STALL_BANK_READYB', - 'SQC_PERF_SEL_ICACHE_INPUT_VALIDB', - 'SQC_PERF_SEL_ICACHE_INPUT_VALID_READY', - 'SQC_PERF_SEL_ICACHE_INPUT_VALID_READYB', - 'SQC_PERF_SEL_ICACHE_INVAL_ASYNC', - 'SQC_PERF_SEL_ICACHE_INVAL_INST', 'SQC_PERF_SEL_ICACHE_MISSES', - 'SQC_PERF_SEL_ICACHE_MISSES_DUPLICATE', 'SQC_PERF_SEL_ICACHE_REQ', - 'SQC_PERF_SEL_ICACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 'SQC_PERF_SEL_ICACHE_TC_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_ICACHE_UTCL0_ALL_REQ', - 'SQC_PERF_SEL_ICACHE_UTCL0_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_ICACHE_UTCL0_LFIFO_FULL', - 'SQC_PERF_SEL_ICACHE_UTCL0_PERMISSION_MISS', - 'SQC_PERF_SEL_ICACHE_UTCL0_REQUEST', - 'SQC_PERF_SEL_ICACHE_UTCL0_STALL_INFLIGHT_MAX', - 'SQC_PERF_SEL_ICACHE_UTCL0_STALL_LFIFO_NOT_RES', - 'SQC_PERF_SEL_ICACHE_UTCL0_STALL_LRU_INFLIGHT', - 'SQC_PERF_SEL_ICACHE_UTCL0_STALL_MISSFIFO_FULL', - 'SQC_PERF_SEL_ICACHE_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS', - 'SQC_PERF_SEL_ICACHE_UTCL0_TRANSLATION_HIT', - 'SQC_PERF_SEL_ICACHE_UTCL0_TRANSLATION_MISS', - 'SQC_PERF_SEL_ICACHE_UTCL0_UTCL1_INFLIGHT', - 'SQC_PERF_SEL_ICACHE_UTCL0_XNACK', - 'SQC_PERF_SEL_ICACHE_UTCL1_ALL_REQ', - 'SQC_PERF_SEL_ICACHE_UTCL1_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_LDS_ADDR_ACTIVE', 'SQC_PERF_SEL_LDS_ADDR_CONFLICT', - 'SQC_PERF_SEL_LDS_ADDR_STALL', 'SQC_PERF_SEL_LDS_ATOMIC_RETURN', - 'SQC_PERF_SEL_LDS_BANK_CONFLICT', - 'SQC_PERF_SEL_LDS_CMD_FIFO_FULL', - 'SQC_PERF_SEL_LDS_DATA_FIFO_FULL', - 'SQC_PERF_SEL_LDS_DIRECT_FIFO_FULL_STALL', - 'SQC_PERF_SEL_LDS_FP_ADD_CYCLES', 'SQC_PERF_SEL_LDS_IDX_ACTIVE', - 'SQC_PERF_SEL_LDS_LDS_VGPR_WRITE_STALL', - 'SQC_PERF_SEL_LDS_MEM_VIOLATIONS', - 'SQC_PERF_SEL_LDS_PC_LDS_WRITE_STALL_TD', - 'SQC_PERF_SEL_LDS_SPI_VGPR_WRITE_STALL_TD', - 'SQC_PERF_SEL_LDS_UNALIGNED_STALL', 'SQC_PERF_SEL_POWER_ALU_BUSY', - 'SQC_PERF_SEL_POWER_GPR_RD', 'SQC_PERF_SEL_POWER_GPR_WR', - 'SQC_PERF_SEL_POWER_LDS_BUSY', 'SQC_PERF_SEL_POWER_TEX_BUSY', - 'SQC_PERF_SEL_POWER_VALU', 'SQC_PERF_SEL_POWER_VALU0', - 'SQC_PERF_SEL_POWER_VALU1', 'SQC_PERF_SEL_POWER_VALU2', - 'SQC_PERF_SEL_PT_POWER_STALL', 'SQC_PERF_SEL_SQ_DCACHE_REQS', - 'SQC_PERF_SEL_TC_DATA_ATOMIC_REQ', - 'SQC_PERF_SEL_TC_DATA_READ_REQ', 'SQC_PERF_SEL_TC_DATA_WRITE_REQ', - 'SQC_PERF_SEL_TC_INFLIGHT_LEVEL', 'SQC_PERF_SEL_TC_INST_REQ', - 'SQC_PERF_SEL_TC_REQ', 'SQC_PERF_SEL_TC_STALL', - 'SQC_PERF_SEL_TC_STARVE', 'SQDEC_BEGIN', 'SQDEC_END', - 'SQGFXUDEC_BEGIN', 'SQGFXUDEC_END', 'SQG_PERF_SEL_DUMMY_LAST', - 'SQG_PERF_SEL_TLB_SHOOTDOWN', 'SQG_PERF_SEL_TLB_SHOOTDOWN_CYCLES', - 'SQG_PERF_SEL_TTRACE_INFLIGHT_REQS', - 'SQG_PERF_SEL_TTRACE_LOST_PACKETS', 'SQG_PERF_SEL_TTRACE_REQS', - 'SQG_PERF_SEL_TTRACE_STALL', 'SQG_PERF_SEL_UTCL0_HIT_FIFO_FULL', - 'SQG_PERF_SEL_UTCL0_LFIFO_FULL', - 'SQG_PERF_SEL_UTCL0_PERMISSION_MISS', - 'SQG_PERF_SEL_UTCL0_REQUEST', - 'SQG_PERF_SEL_UTCL0_STALL_INFLIGHT_MAX', - 'SQG_PERF_SEL_UTCL0_STALL_LFIFO_NOT_RES', - 'SQG_PERF_SEL_UTCL0_STALL_LRU_INFLIGHT', - 'SQG_PERF_SEL_UTCL0_STALL_MISSFIFO_FULL', - 'SQG_PERF_SEL_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS', - 'SQG_PERF_SEL_UTCL0_TRANSLATION_HIT', - 'SQG_PERF_SEL_UTCL0_TRANSLATION_MISS', - 'SQG_PERF_SEL_UTCL0_UTCL1_REQ', 'SQIND_GLOBAL_REGS_OFFSET', - 'SQIND_GLOBAL_REGS_SIZE', 'SQIND_LOCAL_REGS_OFFSET', - 'SQIND_LOCAL_REGS_SIZE', 'SQIND_WAVE_HWREGS_OFFSET', - 'SQIND_WAVE_HWREGS_SIZE', 'SQIND_WAVE_SGPRS_OFFSET', - 'SQIND_WAVE_SGPRS_SIZE', 'SQIND_WAVE_VGPRS_OFFSET', - 'SQIND_WAVE_VGPRS_SIZE', 'SQPERFDDEC_BEGIN', 'SQPERFDDEC_END', - 'SQPERFSDEC_BEGIN', 'SQPERFSDEC_END', 'SQPWRDEC_BEGIN', - 'SQPWRDEC_END', 'SQ_CAC_POWER_ALU_BUSY', 'SQ_CAC_POWER_GPR_RD', - 'SQ_CAC_POWER_GPR_WR', 'SQ_CAC_POWER_LDS_BUSY', - 'SQ_CAC_POWER_SEL', 'SQ_CAC_POWER_TEX_BUSY', 'SQ_CAC_POWER_VALU', - 'SQ_CAC_POWER_VALU0', 'SQ_CAC_POWER_VALU1', 'SQ_CAC_POWER_VALU2', - 'SQ_DISPATCHER_GFX_CNT_PER_RING', 'SQ_DISPATCHER_GFX_MIN', - 'SQ_EDC_FUE_CNTL_LDS', 'SQ_EDC_FUE_CNTL_SIMD0', - 'SQ_EDC_FUE_CNTL_SIMD1', 'SQ_EDC_FUE_CNTL_SIMD2', - 'SQ_EDC_FUE_CNTL_SIMD3', 'SQ_EDC_FUE_CNTL_SQ', - 'SQ_EDC_FUE_CNTL_TA', 'SQ_EDC_FUE_CNTL_TCP', 'SQ_EDC_FUE_CNTL_TD', - 'SQ_EDC_INFO_SOURCE', 'SQ_EDC_INFO_SOURCE_GDS', - 'SQ_EDC_INFO_SOURCE_INST', 'SQ_EDC_INFO_SOURCE_INVALID', - 'SQ_EDC_INFO_SOURCE_LDS', 'SQ_EDC_INFO_SOURCE_SGPR', - 'SQ_EDC_INFO_SOURCE_TA', 'SQ_EDC_INFO_SOURCE_VGPR', - 'SQ_EX_MODE_EXCP_ADDR_WATCH0', 'SQ_EX_MODE_EXCP_DIV0', - 'SQ_EX_MODE_EXCP_HI_ADDR_WATCH1', - 'SQ_EX_MODE_EXCP_HI_ADDR_WATCH2', - 'SQ_EX_MODE_EXCP_HI_ADDR_WATCH3', 'SQ_EX_MODE_EXCP_INEXACT', - 'SQ_EX_MODE_EXCP_INPUT_DENORM', 'SQ_EX_MODE_EXCP_INT_DIV0', - 'SQ_EX_MODE_EXCP_INVALID', 'SQ_EX_MODE_EXCP_MEM_VIOL', - 'SQ_EX_MODE_EXCP_OVERFLOW', 'SQ_EX_MODE_EXCP_UNDERFLOW', - 'SQ_EX_MODE_EXCP_VALU_BASE', 'SQ_EX_MODE_EXCP_VALU_SIZE', - 'SQ_GFXDEC_BEGIN', 'SQ_GFXDEC_END', 'SQ_GFXDEC_STATE_ID_SHIFT', - 'SQ_IBUF_IB_DRET', 'SQ_IBUF_IB_EMPTY_WAIT_DRET', - 'SQ_IBUF_IB_EMPTY_WAIT_GNT', 'SQ_IBUF_IB_IDLE', - 'SQ_IBUF_IB_INI_WAIT_DRET', 'SQ_IBUF_IB_INI_WAIT_GNT', - 'SQ_IBUF_IB_LE_4DW', 'SQ_IBUF_IB_WAIT_DRET', 'SQ_IBUF_ST', - 'SQ_IMG_FILTER_MODE_BLEND', 'SQ_IMG_FILTER_MODE_MAX', - 'SQ_IMG_FILTER_MODE_MIN', 'SQ_IMG_FILTER_TYPE', 'SQ_IND_CMD_CMD', - 'SQ_IND_CMD_CMD_DEBUG', 'SQ_IND_CMD_CMD_KILL', - 'SQ_IND_CMD_CMD_NULL', 'SQ_IND_CMD_CMD_SAVECTX', - 'SQ_IND_CMD_CMD_SETFATALHALT', 'SQ_IND_CMD_CMD_SETHALT', - 'SQ_IND_CMD_CMD_SET_SPI_PRIO', 'SQ_IND_CMD_CMD_SINGLE_STEP', - 'SQ_IND_CMD_CMD_TRAP', 'SQ_IND_CMD_MODE', - 'SQ_IND_CMD_MODE_BROADCAST', 'SQ_IND_CMD_MODE_BROADCAST_ME', - 'SQ_IND_CMD_MODE_BROADCAST_PIPE', - 'SQ_IND_CMD_MODE_BROADCAST_QUEUE', 'SQ_IND_CMD_MODE_SINGLE', - 'SQ_INST_STR_IB_WAVE2ID_NORMAL_INST_AV', - 'SQ_INST_STR_IB_WAVE_INST_SKIP_AV', - 'SQ_INST_STR_IB_WAVE_INTERNAL_INST_AV', - 'SQ_INST_STR_IB_WAVE_NOP_SLEEP_WAIT', 'SQ_INST_STR_IB_WAVE_NORML', - 'SQ_INST_STR_IB_WAVE_PC_FROM_SGPR_MSG_WAIT', - 'SQ_INST_STR_IB_WAVE_SETVSKIP_ST0', - 'SQ_INST_STR_IB_WAVE_SETVSKIP_ST1', 'SQ_INST_STR_ST', - 'SQ_INTERRUPT_WORD_ENCODING', 'SQ_INTERRUPT_WORD_ENCODING_AUTO', - 'SQ_INTERRUPT_WORD_ENCODING_ERROR', - 'SQ_INTERRUPT_WORD_ENCODING_INST', 'SQ_MAX_PGM_SGPRS', - 'SQ_MAX_PGM_VGPRS', 'SQ_NON_EVENT', 'SQ_OOB_COMPLETE', - 'SQ_OOB_INDEX_AND_OFFSET', 'SQ_OOB_INDEX_ONLY', - 'SQ_OOB_NUM_RECORDS_0', 'SQ_OOB_SELECT', 'SQ_PERF_SEL', - 'SQ_PERF_SEL_ACCUM_PREV', 'SQ_PERF_SEL_BUSY_CYCLES', - 'SQ_PERF_SEL_CYCLES', 'SQ_PERF_SEL_DUMMY_END', - 'SQ_PERF_SEL_DUMMY_LAST', 'SQ_PERF_SEL_EVENTS', - 'SQ_PERF_SEL_EXP_BUS0_BUSY', 'SQ_PERF_SEL_EXP_BUS1_BUSY', - 'SQ_PERF_SEL_EXP_REQ0_BUS_BUSY', 'SQ_PERF_SEL_EXP_REQ1_BUS_BUSY', - 'SQ_PERF_SEL_EXP_REQ_BUS_STALL', 'SQ_PERF_SEL_EXP_REQ_FIFO_FULL', - 'SQ_PERF_SEL_IFETCH_LEVEL', 'SQ_PERF_SEL_IFETCH_REQS', - 'SQ_PERF_SEL_IFETCH_XNACK', 'SQ_PERF_SEL_INSTS_ALL', - 'SQ_PERF_SEL_INSTS_BRANCH', 'SQ_PERF_SEL_INSTS_CBRANCH_NOT_TAKEN', - 'SQ_PERF_SEL_INSTS_CBRANCH_TAKEN', - 'SQ_PERF_SEL_INSTS_CBRANCH_TAKEN_HIT_IS', 'SQ_PERF_SEL_INSTS_EXP', - 'SQ_PERF_SEL_INSTS_EXP_GDS', 'SQ_PERF_SEL_INSTS_FLAT', - 'SQ_PERF_SEL_INSTS_FLAT_REPLAY', 'SQ_PERF_SEL_INSTS_GDS', - 'SQ_PERF_SEL_INSTS_LDS', 'SQ_PERF_SEL_INSTS_SALU', - 'SQ_PERF_SEL_INSTS_SENDMSG', 'SQ_PERF_SEL_INSTS_SMEM', - 'SQ_PERF_SEL_INSTS_SMEM_NORM', - 'SQ_PERF_SEL_INSTS_SMEM_NORM_REPLAY', - 'SQ_PERF_SEL_INSTS_SMEM_REPLAY', 'SQ_PERF_SEL_INSTS_TEX', - 'SQ_PERF_SEL_INSTS_TEX_LOAD', 'SQ_PERF_SEL_INSTS_TEX_REPLAY', - 'SQ_PERF_SEL_INSTS_TEX_STORE', 'SQ_PERF_SEL_INSTS_VALU', - 'SQ_PERF_SEL_INSTS_VALU_EXEC_SKIPPED', - 'SQ_PERF_SEL_INSTS_VALU_LDS_DIRECT_RD', - 'SQ_PERF_SEL_INSTS_VALU_NO_COEXEC', - 'SQ_PERF_SEL_INSTS_VALU_TRANS32', - 'SQ_PERF_SEL_INSTS_VALU_VINTRP_OP', 'SQ_PERF_SEL_INSTS_WAVE32', - 'SQ_PERF_SEL_INSTS_WAVE32_FLAT', 'SQ_PERF_SEL_INSTS_WAVE32_LDS', - 'SQ_PERF_SEL_INSTS_WAVE32_TEX', - 'SQ_PERF_SEL_INSTS_WAVE32_TEX_LOAD', - 'SQ_PERF_SEL_INSTS_WAVE32_TEX_STORE', - 'SQ_PERF_SEL_INSTS_WAVE32_VALU', - 'SQ_PERF_SEL_INSTS_WAVE32_VALU_NO_COEXEC', - 'SQ_PERF_SEL_INSTS_WAVE32_VALU_TRANS32', - 'SQ_PERF_SEL_INST_CACHE_REQS', 'SQ_PERF_SEL_INST_CACHE_REQ_STALL', - 'SQ_PERF_SEL_INST_CYCLES_EXP_GDS', 'SQ_PERF_SEL_INST_CYCLES_FLAT', - 'SQ_PERF_SEL_INST_CYCLES_LDS', 'SQ_PERF_SEL_INST_CYCLES_TEX', - 'SQ_PERF_SEL_INST_CYCLES_VALU', - 'SQ_PERF_SEL_INST_CYCLES_VALU_NO_COEXEC', - 'SQ_PERF_SEL_INST_CYCLES_VALU_TRANS32', - 'SQ_PERF_SEL_INST_CYCLES_VMEM', - 'SQ_PERF_SEL_INST_CYCLES_VMEM_LOAD', - 'SQ_PERF_SEL_INST_CYCLES_VMEM_STORE', - 'SQ_PERF_SEL_INST_LEVEL_EXP', 'SQ_PERF_SEL_INST_LEVEL_GDS', - 'SQ_PERF_SEL_INST_LEVEL_LDS', 'SQ_PERF_SEL_INST_LEVEL_SMEM', - 'SQ_PERF_SEL_INST_LEVEL_TEX_LOAD', - 'SQ_PERF_SEL_INST_LEVEL_TEX_STORE', 'SQ_PERF_SEL_ITEMS', - 'SQ_PERF_SEL_ITEM_CYCLES_VALU', - 'SQ_PERF_SEL_LDS_DIRECT_CMD_FIFO_FULL_STALL', - 'SQ_PERF_SEL_LEVEL_WAVES', - 'SQ_PERF_SEL_MIXED_SUBSEQUENT_ISSUES_SALU', - 'SQ_PERF_SEL_MIXED_SUBSEQUENT_ISSUES_VALU', - 'SQ_PERF_SEL_MIXED_SUBSEQUENT_ISSUES_VMEM', 'SQ_PERF_SEL_MSG', - 'SQ_PERF_SEL_MSG_BUS_BUSY', 'SQ_PERF_SEL_MSG_FIFO_FULL_STALL', - 'SQ_PERF_SEL_MSG_GSCNT', 'SQ_PERF_SEL_MSG_INTERRUPT', - 'SQ_PERF_SEL_NONE', 'SQ_PERF_SEL_QUADS', 'SQ_PERF_SEL_Reserved_1', - 'SQ_PERF_SEL_Reserved_10', 'SQ_PERF_SEL_Reserved_11', - 'SQ_PERF_SEL_Reserved_12', 'SQ_PERF_SEL_Reserved_13', - 'SQ_PERF_SEL_Reserved_14', 'SQ_PERF_SEL_Reserved_15', - 'SQ_PERF_SEL_Reserved_16', 'SQ_PERF_SEL_Reserved_17', - 'SQ_PERF_SEL_Reserved_18', 'SQ_PERF_SEL_Reserved_2', - 'SQ_PERF_SEL_Reserved_3', 'SQ_PERF_SEL_Reserved_4', - 'SQ_PERF_SEL_Reserved_5', 'SQ_PERF_SEL_Reserved_6', - 'SQ_PERF_SEL_Reserved_7', 'SQ_PERF_SEL_Reserved_8', - 'SQ_PERF_SEL_Reserved_9', 'SQ_PERF_SEL_SALU_GATHER_FULL_STALL', - 'SQ_PERF_SEL_SALU_PIPE_STALL', 'SQ_PERF_SEL_SALU_SGATHER_STALL', - 'SQ_PERF_SEL_SALU_SGPR_RD_FIFO_FULL_STALL', - 'SQ_PERF_SEL_SMEM_DCACHE_FIFO_FULL_STALL', - 'SQ_PERF_SEL_SMEM_DCACHE_RETURN_CYCLES', - 'SQ_PERF_SEL_SMEM_DCACHE_RETURN_STALL', 'SQ_PERF_SEL_USER0', - 'SQ_PERF_SEL_USER1', 'SQ_PERF_SEL_USER10', 'SQ_PERF_SEL_USER11', - 'SQ_PERF_SEL_USER12', 'SQ_PERF_SEL_USER13', 'SQ_PERF_SEL_USER14', - 'SQ_PERF_SEL_USER15', 'SQ_PERF_SEL_USER2', 'SQ_PERF_SEL_USER3', - 'SQ_PERF_SEL_USER4', 'SQ_PERF_SEL_USER5', 'SQ_PERF_SEL_USER6', - 'SQ_PERF_SEL_USER7', 'SQ_PERF_SEL_USER8', 'SQ_PERF_SEL_USER9', - 'SQ_PERF_SEL_USER_LEVEL0', 'SQ_PERF_SEL_USER_LEVEL1', - 'SQ_PERF_SEL_USER_LEVEL10', 'SQ_PERF_SEL_USER_LEVEL11', - 'SQ_PERF_SEL_USER_LEVEL12', 'SQ_PERF_SEL_USER_LEVEL13', - 'SQ_PERF_SEL_USER_LEVEL14', 'SQ_PERF_SEL_USER_LEVEL15', - 'SQ_PERF_SEL_USER_LEVEL2', 'SQ_PERF_SEL_USER_LEVEL3', - 'SQ_PERF_SEL_USER_LEVEL4', 'SQ_PERF_SEL_USER_LEVEL5', - 'SQ_PERF_SEL_USER_LEVEL6', 'SQ_PERF_SEL_USER_LEVEL7', - 'SQ_PERF_SEL_USER_LEVEL8', 'SQ_PERF_SEL_USER_LEVEL9', - 'SQ_PERF_SEL_VALU_FWD_BUFFER_FULL_STALL', - 'SQ_PERF_SEL_VALU_READWRITELANE_CYCLES', - 'SQ_PERF_SEL_VALU_RETURN_SDST', - 'SQ_PERF_SEL_VALU_SGATHER_FULL_STALL', - 'SQ_PERF_SEL_VALU_SGATHER_STALL', - 'SQ_PERF_SEL_VALU_SGPR_RD_FIFO_FULL_STALL', - 'SQ_PERF_SEL_VMEM_ARB_FIFO_FULL', 'SQ_PERF_SEL_VMEM_BUS_ACTIVE', - 'SQ_PERF_SEL_VMEM_BUS_STALL', - 'SQ_PERF_SEL_VMEM_BUS_STALL_LDS_ADDR_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_BUS_STALL_LDS_CMD_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_BUS_STALL_TA_ADDR_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_BUS_STALL_TA_CMD_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_SECOND_TRY_STALL', - 'SQ_PERF_SEL_VMEM_SECOND_TRY_USED', - 'SQ_PERF_SEL_VMEM_STARVE_LDS_ADDR_EMPTY', - 'SQ_PERF_SEL_VMEM_STARVE_TA_ADDR_EMPTY', 'SQ_PERF_SEL_WAIT_ANY', - 'SQ_PERF_SEL_WAIT_BARRIER', 'SQ_PERF_SEL_WAIT_CNT_ANY', - 'SQ_PERF_SEL_WAIT_CNT_EXP', 'SQ_PERF_SEL_WAIT_CNT_LGKM', - 'SQ_PERF_SEL_WAIT_CNT_VMVS', 'SQ_PERF_SEL_WAIT_EXP_ALLOC', - 'SQ_PERF_SEL_WAIT_IFETCH', 'SQ_PERF_SEL_WAIT_INST_ANY', - 'SQ_PERF_SEL_WAIT_INST_BR_MSG', 'SQ_PERF_SEL_WAIT_INST_EXP_GDS', - 'SQ_PERF_SEL_WAIT_INST_FLAT', 'SQ_PERF_SEL_WAIT_INST_LDS', - 'SQ_PERF_SEL_WAIT_INST_SCA', 'SQ_PERF_SEL_WAIT_INST_TEX', - 'SQ_PERF_SEL_WAIT_INST_VALU', 'SQ_PERF_SEL_WAIT_INST_VMEM', - 'SQ_PERF_SEL_WAIT_OTHER', 'SQ_PERF_SEL_WAIT_SLEEP', - 'SQ_PERF_SEL_WAIT_SLEEP_XNACK', 'SQ_PERF_SEL_WAIT_TTRACE', - 'SQ_PERF_SEL_WAVE32_INSTS', 'SQ_PERF_SEL_WAVE32_ITEMS', - 'SQ_PERF_SEL_WAVE64_HALF_SKIP', 'SQ_PERF_SEL_WAVE64_INSTS', - 'SQ_PERF_SEL_WAVE64_ITEMS', 'SQ_PERF_SEL_WAVES', - 'SQ_PERF_SEL_WAVES_32', 'SQ_PERF_SEL_WAVES_64', - 'SQ_PERF_SEL_WAVES_EQ_64', 'SQ_PERF_SEL_WAVES_LT_16', - 'SQ_PERF_SEL_WAVES_LT_32', 'SQ_PERF_SEL_WAVES_LT_48', - 'SQ_PERF_SEL_WAVES_LT_64', 'SQ_PERF_SEL_WAVES_RESTORED', - 'SQ_PERF_SEL_WAVES_SAVED', 'SQ_PERF_SEL_WAVE_CYCLES', - 'SQ_PERF_SEL_WAVE_READY', 'SQ_PERF_SEL_XNACK_ALL', - 'SQ_PERF_SEL_XNACK_FIRST', 'SQ_ROUND_MINUS_INFINITY', - 'SQ_ROUND_MODE', 'SQ_ROUND_NEAREST_EVEN', - 'SQ_ROUND_PLUS_INFINITY', 'SQ_ROUND_TO_ZERO', 'SQ_RSRC_BUF', - 'SQ_RSRC_BUF_RSVD_1', 'SQ_RSRC_BUF_RSVD_2', 'SQ_RSRC_BUF_RSVD_3', - 'SQ_RSRC_BUF_TYPE', 'SQ_RSRC_FLAT', 'SQ_RSRC_FLAT_RSVD_0', - 'SQ_RSRC_FLAT_RSVD_2', 'SQ_RSRC_FLAT_RSVD_3', 'SQ_RSRC_FLAT_TYPE', - 'SQ_RSRC_IMG_1D', 'SQ_RSRC_IMG_1D_ARRAY', 'SQ_RSRC_IMG_2D', - 'SQ_RSRC_IMG_2D_ARRAY', 'SQ_RSRC_IMG_2D_MSAA', - 'SQ_RSRC_IMG_2D_MSAA_ARRAY', 'SQ_RSRC_IMG_3D', 'SQ_RSRC_IMG_CUBE', - 'SQ_RSRC_IMG_RSVD_0', 'SQ_RSRC_IMG_RSVD_1', 'SQ_RSRC_IMG_RSVD_2', - 'SQ_RSRC_IMG_RSVD_3', 'SQ_RSRC_IMG_RSVD_4', 'SQ_RSRC_IMG_RSVD_5', - 'SQ_RSRC_IMG_RSVD_6', 'SQ_RSRC_IMG_RSVD_7', 'SQ_RSRC_IMG_TYPE', - 'SQ_SEL_0', 'SQ_SEL_1', 'SQ_SEL_N_BC_1', 'SQ_SEL_RESERVED_1', - 'SQ_SEL_W', 'SQ_SEL_X', 'SQ_SEL_XYZW01', 'SQ_SEL_Y', 'SQ_SEL_Z', - 'SQ_TEX_ANISO_RATIO', 'SQ_TEX_ANISO_RATIO_1', - 'SQ_TEX_ANISO_RATIO_16', 'SQ_TEX_ANISO_RATIO_2', - 'SQ_TEX_ANISO_RATIO_4', 'SQ_TEX_ANISO_RATIO_8', - 'SQ_TEX_BORDER_COLOR', 'SQ_TEX_BORDER_COLOR_OPAQUE_BLACK', - 'SQ_TEX_BORDER_COLOR_OPAQUE_WHITE', - 'SQ_TEX_BORDER_COLOR_REGISTER', 'SQ_TEX_BORDER_COLOR_TRANS_BLACK', - 'SQ_TEX_CLAMP', 'SQ_TEX_CLAMP_BORDER', 'SQ_TEX_CLAMP_HALF_BORDER', - 'SQ_TEX_CLAMP_LAST_TEXEL', 'SQ_TEX_DEPTH_COMPARE', - 'SQ_TEX_DEPTH_COMPARE_ALWAYS', 'SQ_TEX_DEPTH_COMPARE_EQUAL', - 'SQ_TEX_DEPTH_COMPARE_GREATER', - 'SQ_TEX_DEPTH_COMPARE_GREATEREQUAL', 'SQ_TEX_DEPTH_COMPARE_LESS', - 'SQ_TEX_DEPTH_COMPARE_LESSEQUAL', 'SQ_TEX_DEPTH_COMPARE_NEVER', - 'SQ_TEX_DEPTH_COMPARE_NOTEQUAL', 'SQ_TEX_MIP_FILTER', - 'SQ_TEX_MIP_FILTER_LINEAR', 'SQ_TEX_MIP_FILTER_NONE', - 'SQ_TEX_MIP_FILTER_POINT', 'SQ_TEX_MIP_FILTER_POINT_ANISO_ADJ', - 'SQ_TEX_MIRROR', 'SQ_TEX_MIRROR_ONCE_BORDER', - 'SQ_TEX_MIRROR_ONCE_HALF_BORDER', 'SQ_TEX_MIRROR_ONCE_LAST_TEXEL', - 'SQ_TEX_WRAP', 'SQ_TEX_XY_FILTER', - 'SQ_TEX_XY_FILTER_ANISO_BILINEAR', 'SQ_TEX_XY_FILTER_ANISO_POINT', - 'SQ_TEX_XY_FILTER_BILINEAR', 'SQ_TEX_XY_FILTER_POINT', - 'SQ_TEX_Z_FILTER', 'SQ_TEX_Z_FILTER_LINEAR', - 'SQ_TEX_Z_FILTER_NONE', 'SQ_TEX_Z_FILTER_POINT', - 'SQ_TT_INST_EXCLUDE_EXPGNT234', - 'SQ_TT_INST_EXCLUDE_VMEM_OTHER_SIMD', 'SQ_TT_MODE', - 'SQ_TT_MODE_DETAIL', 'SQ_TT_MODE_GLOBAL', 'SQ_TT_MODE_OFF', - 'SQ_TT_MODE_ON', 'SQ_TT_RT_FREQ', 'SQ_TT_RT_FREQ_1024_CLK', - 'SQ_TT_RT_FREQ_4096_CLK', 'SQ_TT_RT_FREQ_NEVER', - 'SQ_TT_TOKEN_EXCLUDE_ALUEXEC_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_EVENT_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_IMMED1_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_IMMEDIATE_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_INST_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_PERF_SHIFT', 'SQ_TT_TOKEN_EXCLUDE_REG_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_UTILCTR_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_VALUINST_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_VMEMEXEC_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_WAVEALLOC_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_WAVERDY_SHIFT', 'SQ_TT_TOKEN_MASK_COMP_BIT', - 'SQ_TT_TOKEN_MASK_COMP_SHIFT', 'SQ_TT_TOKEN_MASK_CONFIG_BIT', - 'SQ_TT_TOKEN_MASK_CONFIG_SHIFT', 'SQ_TT_TOKEN_MASK_CONTEXT_BIT', - 'SQ_TT_TOKEN_MASK_CONTEXT_SHIFT', 'SQ_TT_TOKEN_MASK_GFXUDEC_BIT', - 'SQ_TT_TOKEN_MASK_GFXUDEC_SHIFT', 'SQ_TT_TOKEN_MASK_INST_EXCLUDE', - 'SQ_TT_TOKEN_MASK_OTHER_BIT', 'SQ_TT_TOKEN_MASK_OTHER_SHIFT', - 'SQ_TT_TOKEN_MASK_READS_BIT', 'SQ_TT_TOKEN_MASK_READS_SHIFT', - 'SQ_TT_TOKEN_MASK_REG_INCLUDE', - 'SQ_TT_TOKEN_MASK_REG_INCLUDE_SHIFT', - 'SQ_TT_TOKEN_MASK_SHDEC_BIT', 'SQ_TT_TOKEN_MASK_SHDEC_SHIFT', - 'SQ_TT_TOKEN_MASK_SQDEC_BIT', 'SQ_TT_TOKEN_MASK_SQDEC_SHIFT', - 'SQ_TT_TOKEN_MASK_TOKEN_EXCLUDE_SHIFT', 'SQ_TT_UTIL_TIMER', - 'SQ_TT_UTIL_TIMER_100_CLK', 'SQ_TT_UTIL_TIMER_250_CLK', - 'SQ_TT_WAVESTART_MODE', 'SQ_TT_WAVESTART_MODE_ALLOC', - 'SQ_TT_WAVESTART_MODE_PBB_ID', 'SQ_TT_WAVESTART_MODE_SHORT', - 'SQ_TT_WTYPE_INCLUDE', 'SQ_TT_WTYPE_INCLUDE_CS_BIT', - 'SQ_TT_WTYPE_INCLUDE_CS_SHIFT', 'SQ_TT_WTYPE_INCLUDE_ES_BIT', - 'SQ_TT_WTYPE_INCLUDE_ES_SHIFT', 'SQ_TT_WTYPE_INCLUDE_GS_BIT', - 'SQ_TT_WTYPE_INCLUDE_GS_SHIFT', 'SQ_TT_WTYPE_INCLUDE_HS_BIT', - 'SQ_TT_WTYPE_INCLUDE_HS_SHIFT', 'SQ_TT_WTYPE_INCLUDE_LS_BIT', - 'SQ_TT_WTYPE_INCLUDE_LS_SHIFT', 'SQ_TT_WTYPE_INCLUDE_PS_BIT', - 'SQ_TT_WTYPE_INCLUDE_PS_SHIFT', 'SQ_TT_WTYPE_INCLUDE_SHIFT', - 'SQ_TT_WTYPE_INCLUDE_VS_BIT', 'SQ_TT_WTYPE_INCLUDE_VS_SHIFT', - 'SQ_WATCH_MODES', 'SQ_WATCH_MODE_ALL', 'SQ_WATCH_MODE_ATOMIC', - 'SQ_WATCH_MODE_NONREAD', 'SQ_WATCH_MODE_READ', - 'SQ_WAVE_IB_ECC_CLEAN', 'SQ_WAVE_IB_ECC_ERR_CONTINUE', - 'SQ_WAVE_IB_ECC_ERR_HALT', 'SQ_WAVE_IB_ECC_ST', - 'SQ_WAVE_IB_ECC_WITH_ERR_MSG', 'SQ_WAVE_SCHED_MODES', - 'SQ_WAVE_SCHED_MODE_DISABLE_VA_VDST', 'SQ_WAVE_SCHED_MODE_EXPERT', - 'SQ_WAVE_SCHED_MODE_NORMAL', 'SQ_WAVE_TYPE', 'SQ_WAVE_TYPE_CS', - 'SQ_WAVE_TYPE_ES', 'SQ_WAVE_TYPE_GS', 'SQ_WAVE_TYPE_HS', - 'SQ_WAVE_TYPE_LS', 'SQ_WAVE_TYPE_PS', 'SQ_WAVE_TYPE_PS0', - 'SQ_WAVE_TYPE_PS1', 'SQ_WAVE_TYPE_PS2', 'SQ_WAVE_TYPE_PS3', - 'SQ_WAVE_TYPE_VS', 'STALL', 'STATIC_SCREEN_SMU_INTR', - 'STATIC_SCREEN_SMU_INTR_NOOP', 'STENCIL_8', 'STENCIL_ADD_CLAMP', - 'STENCIL_ADD_WRAP', 'STENCIL_AND', 'STENCIL_INVALID', - 'STENCIL_INVERT', 'STENCIL_KEEP', 'STENCIL_NAND', 'STENCIL_NOR', - 'STENCIL_ONES', 'STENCIL_OR', 'STENCIL_REPLACE_OP', - 'STENCIL_REPLACE_TEST', 'STENCIL_SUB_CLAMP', 'STENCIL_SUB_WRAP', - 'STENCIL_XNOR', 'STENCIL_XOR', 'STENCIL_ZERO', 'STEREO_DISABLED', - 'STREAM_0_SYNCHRONIZATION', - 'STREAM_0_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_0_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_10_SYNCHRONIZATION', - 'STREAM_10_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_10_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_11_SYNCHRONIZATION', - 'STREAM_11_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_11_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_12_SYNCHRONIZATION', - 'STREAM_12_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_12_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_13_SYNCHRONIZATION', - 'STREAM_13_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_13_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_14_SYNCHRONIZATION', - 'STREAM_14_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_14_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_15_SYNCHRONIZATION', - 'STREAM_15_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_15_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_1_SYNCHRONIZATION', - 'STREAM_1_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_1_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_2_SYNCHRONIZATION', - 'STREAM_2_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_2_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_3_SYNCHRONIZATION', - 'STREAM_3_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_3_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_4_SYNCHRONIZATION', - 'STREAM_4_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_4_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_5_SYNCHRONIZATION', - 'STREAM_5_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_5_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_6_SYNCHRONIZATION', - 'STREAM_6_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_6_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_7_SYNCHRONIZATION', - 'STREAM_7_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_7_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_8_SYNCHRONIZATION', - 'STREAM_8_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_8_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_9_SYNCHRONIZATION', - 'STREAM_9_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_9_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STRM_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', - 'STRM_PERFMON_STATE_DISABLE_AND_RESET', - 'STRM_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 'STRM_PERFMON_STATE_RESERVED_3', - 'STRM_PERFMON_STATE_START_COUNTING', - 'STRM_PERFMON_STATE_STOP_COUNTING', 'SURFACE_DCC', - 'SURFACE_DCC_IND_64B', 'SURFACE_DCC_IS_IND_64B', - 'SURFACE_DCC_IS_NOT_IND_64B', 'SURFACE_FLIP_AWAY_INT_LEVEL', - 'SURFACE_FLIP_AWAY_INT_PULSE', 'SURFACE_FLIP_AWAY_INT_TYPE', - 'SURFACE_FLIP_INT_LEVEL', 'SURFACE_FLIP_INT_PULSE', - 'SURFACE_FLIP_INT_TYPE', 'SURFACE_FLIP_IN_STEREOSYNC', - 'SURFACE_FLIP_IN_STEREOSYNC_MODE', - 'SURFACE_FLIP_MODE_FOR_STEREOSYNC', - 'SURFACE_FLIP_MODE_FOR_STEREOSYNC_RESERVED', - 'SURFACE_FLIP_NOT_IN_STEREOSYNC_MODE', - 'SURFACE_FLIP_STEREO_SELECT_DISABLE', - 'SURFACE_FLIP_STEREO_SELECT_DISABLED', - 'SURFACE_FLIP_STEREO_SELECT_ENABLED', - 'SURFACE_FLIP_STEREO_SELECT_POLARITY', - 'SURFACE_FLIP_STEREO_SELECT_POLARITY_INVERT', - 'SURFACE_FLIP_STEREO_SELECT_POLARITY_NOT_INVERT', - 'SURFACE_FLIP_TYPE', 'SURFACE_FLIP_VUPDATE_SKIP_NUM', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_0', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_1', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_10', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_11', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_12', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_13', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_14', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_15', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_2', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_3', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_4', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_5', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_6', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_7', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_8', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_9', 'SURFACE_INUSE_IS_LATCHED', - 'SURFACE_INUSE_IS_NOT_LATCHED', 'SURFACE_INUSE_RAED_NO_LATCH', - 'SURFACE_IS_DCC', 'SURFACE_IS_NOT_DCC', 'SURFACE_IS_NOT_TMZ', - 'SURFACE_IS_TMZ', 'SURFACE_I_FLIP', 'SURFACE_PIXEL_FORMAT', - 'SURFACE_TMZ', 'SURFACE_UPDATE_IS_LOCKED', - 'SURFACE_UPDATE_IS_UNLOCKED', 'SURFACE_UPDATE_LOCK', - 'SURFACE_V_FLIP', 'SURF_16_BANK', 'SURF_2_BANK', 'SURF_4_BANK', - 'SURF_8_BANK', 'SURF_BANK_HEIGHT_1', 'SURF_BANK_HEIGHT_2', - 'SURF_BANK_HEIGHT_4', 'SURF_BANK_HEIGHT_8', 'SURF_BANK_WIDTH_1', - 'SURF_BANK_WIDTH_2', 'SURF_BANK_WIDTH_4', 'SURF_BANK_WIDTH_8', - 'SURF_MACRO_ASPECT_1', 'SURF_MACRO_ASPECT_2', - 'SURF_MACRO_ASPECT_4', 'SURF_MACRO_ASPECT_8', - 'SURF_TILE_SPLIT_128B', 'SURF_TILE_SPLIT_1KB', - 'SURF_TILE_SPLIT_256B', 'SURF_TILE_SPLIT_2KB', - 'SURF_TILE_SPLIT_4KB', 'SURF_TILE_SPLIT_512B', - 'SURF_TILE_SPLIT_64B', 'SU_PERFCNT_SEL', 'SWAP_ALT', - 'SWAP_ALT_REV', 'SWAP_STD', 'SWAP_STD_REV', 'SWATH_HEIGHT', - 'SWATH_HEIGHT_16L', 'SWATH_HEIGHT_1L', 'SWATH_HEIGHT_2L', - 'SWATH_HEIGHT_4L', 'SWATH_HEIGHT_8L', 'SWIZZLE_4KB_D', - 'SWIZZLE_4KB_D_X', 'SWIZZLE_4KB_S', 'SWIZZLE_4KB_S_X', - 'SWIZZLE_64KB_D', 'SWIZZLE_64KB_D_T', 'SWIZZLE_64KB_D_X', - 'SWIZZLE_64KB_R_X', 'SWIZZLE_64KB_S', 'SWIZZLE_64KB_S_T', - 'SWIZZLE_64KB_S_X', 'SWIZZLE_LINEAR', 'SWIZZLE_MODE_ENUM', - 'SWIZZLE_TYPE_ENUM', 'SWIZZLE_VAR_D', 'SWIZZLE_VAR_D_X', - 'SWIZZLE_VAR_S', 'SWIZZLE_VAR_S_X', 'SW_256B_D', 'SW_256B_R', - 'SW_256B_S', 'SW_4KB_D', 'SW_4KB_D_X', 'SW_4KB_R', 'SW_4KB_R_X', - 'SW_4KB_S', 'SW_4KB_S_X', 'SW_4KB_Z', 'SW_4KB_Z_X', 'SW_64KB_D', - 'SW_64KB_D_T', 'SW_64KB_D_X', 'SW_64KB_R', 'SW_64KB_R_T', - 'SW_64KB_R_X', 'SW_64KB_S', 'SW_64KB_S_T', 'SW_64KB_S_X', - 'SW_64KB_Z', 'SW_64KB_Z_T', 'SW_64KB_Z_X', 'SW_D', 'SW_L', - 'SW_LINEAR', 'SW_MODE', 'SW_R', 'SW_S', 'SW_VAR_D', 'SW_VAR_D_X', - 'SW_VAR_R', 'SW_VAR_R_X', 'SW_VAR_S', 'SW_VAR_S_X', 'SW_VAR_Z', - 'SW_VAR_Z_X', 'SW_Z', 'SX_BLEND_OPT', 'SX_CB_RAT_ACK_REQUEST', - 'SX_DOWNCONVERT_FORMAT', 'SX_OPT_COMB_FCN', 'SX_PERFCOUNTER_VALS', - 'SX_PERF_SEL_CLOCK', 'SX_PERF_SEL_CLOCK_DROP_STALL', - 'SX_PERF_SEL_COL_BUSY', 'SX_PERF_SEL_COL_SCBD0_STALL', - 'SX_PERF_SEL_COL_SCBD1_STALL', 'SX_PERF_SEL_COL_SCBD_STALL', - 'SX_PERF_SEL_DB0_A2M_DISCARD_QUADS', 'SX_PERF_SEL_DB0_HALF_QUADS', - 'SX_PERF_SEL_DB0_MRT0_BLEND_BYPASS', - 'SX_PERF_SEL_DB0_MRT0_DISCARD_SRC', - 'SX_PERF_SEL_DB0_MRT0_DONT_RD_DEST', - 'SX_PERF_SEL_DB0_MRT0_DOUBLE_QUADS', - 'SX_PERF_SEL_DB0_MRT0_SINGLE_QUADS', - 'SX_PERF_SEL_DB0_MRT1_BLEND_BYPASS', - 'SX_PERF_SEL_DB0_MRT1_DISCARD_SRC', - 'SX_PERF_SEL_DB0_MRT1_DONT_RD_DEST', - 'SX_PERF_SEL_DB0_MRT1_DOUBLE_QUADS', - 'SX_PERF_SEL_DB0_MRT1_SINGLE_QUADS', - 'SX_PERF_SEL_DB0_MRT2_BLEND_BYPASS', - 'SX_PERF_SEL_DB0_MRT2_DISCARD_SRC', - 'SX_PERF_SEL_DB0_MRT2_DONT_RD_DEST', - 'SX_PERF_SEL_DB0_MRT2_DOUBLE_QUADS', - 'SX_PERF_SEL_DB0_MRT2_SINGLE_QUADS', - 'SX_PERF_SEL_DB0_MRT3_BLEND_BYPASS', - 'SX_PERF_SEL_DB0_MRT3_DISCARD_SRC', - 'SX_PERF_SEL_DB0_MRT3_DONT_RD_DEST', - 'SX_PERF_SEL_DB0_MRT3_DOUBLE_QUADS', - 'SX_PERF_SEL_DB0_MRT3_SINGLE_QUADS', - 'SX_PERF_SEL_DB0_MRT4_BLEND_BYPASS', - 'SX_PERF_SEL_DB0_MRT4_DISCARD_SRC', - 'SX_PERF_SEL_DB0_MRT4_DONT_RD_DEST', - 'SX_PERF_SEL_DB0_MRT4_DOUBLE_QUADS', - 'SX_PERF_SEL_DB0_MRT4_SINGLE_QUADS', - 'SX_PERF_SEL_DB0_MRT5_BLEND_BYPASS', - 'SX_PERF_SEL_DB0_MRT5_DISCARD_SRC', - 'SX_PERF_SEL_DB0_MRT5_DONT_RD_DEST', - 'SX_PERF_SEL_DB0_MRT5_DOUBLE_QUADS', - 'SX_PERF_SEL_DB0_MRT5_SINGLE_QUADS', - 'SX_PERF_SEL_DB0_MRT6_BLEND_BYPASS', - 'SX_PERF_SEL_DB0_MRT6_DISCARD_SRC', - 'SX_PERF_SEL_DB0_MRT6_DONT_RD_DEST', - 'SX_PERF_SEL_DB0_MRT6_DOUBLE_QUADS', - 'SX_PERF_SEL_DB0_MRT6_SINGLE_QUADS', - 'SX_PERF_SEL_DB0_MRT7_BLEND_BYPASS', - 'SX_PERF_SEL_DB0_MRT7_DISCARD_SRC', - 'SX_PERF_SEL_DB0_MRT7_DONT_RD_DEST', - 'SX_PERF_SEL_DB0_MRT7_DOUBLE_QUADS', - 'SX_PERF_SEL_DB0_MRT7_SINGLE_QUADS', 'SX_PERF_SEL_DB0_PIXELS', - 'SX_PERF_SEL_DB0_PIXEL_IDLE', 'SX_PERF_SEL_DB0_PIXEL_STALL', - 'SX_PERF_SEL_DB0_PRED_PIXELS', 'SX_PERF_SEL_DB0_SIZE', - 'SX_PERF_SEL_DB1_A2M_DISCARD_QUADS', 'SX_PERF_SEL_DB1_HALF_QUADS', - 'SX_PERF_SEL_DB1_MRT0_BLEND_BYPASS', - 'SX_PERF_SEL_DB1_MRT0_DISCARD_SRC', - 'SX_PERF_SEL_DB1_MRT0_DONT_RD_DEST', - 'SX_PERF_SEL_DB1_MRT0_DOUBLE_QUADS', - 'SX_PERF_SEL_DB1_MRT0_SINGLE_QUADS', - 'SX_PERF_SEL_DB1_MRT1_BLEND_BYPASS', - 'SX_PERF_SEL_DB1_MRT1_DISCARD_SRC', - 'SX_PERF_SEL_DB1_MRT1_DONT_RD_DEST', - 'SX_PERF_SEL_DB1_MRT1_DOUBLE_QUADS', - 'SX_PERF_SEL_DB1_MRT1_SINGLE_QUADS', - 'SX_PERF_SEL_DB1_MRT2_BLEND_BYPASS', - 'SX_PERF_SEL_DB1_MRT2_DISCARD_SRC', - 'SX_PERF_SEL_DB1_MRT2_DONT_RD_DEST', - 'SX_PERF_SEL_DB1_MRT2_DOUBLE_QUADS', - 'SX_PERF_SEL_DB1_MRT2_SINGLE_QUADS', - 'SX_PERF_SEL_DB1_MRT3_BLEND_BYPASS', - 'SX_PERF_SEL_DB1_MRT3_DISCARD_SRC', - 'SX_PERF_SEL_DB1_MRT3_DONT_RD_DEST', - 'SX_PERF_SEL_DB1_MRT3_DOUBLE_QUADS', - 'SX_PERF_SEL_DB1_MRT3_SINGLE_QUADS', - 'SX_PERF_SEL_DB1_MRT4_BLEND_BYPASS', - 'SX_PERF_SEL_DB1_MRT4_DISCARD_SRC', - 'SX_PERF_SEL_DB1_MRT4_DONT_RD_DEST', - 'SX_PERF_SEL_DB1_MRT4_DOUBLE_QUADS', - 'SX_PERF_SEL_DB1_MRT4_SINGLE_QUADS', - 'SX_PERF_SEL_DB1_MRT5_BLEND_BYPASS', - 'SX_PERF_SEL_DB1_MRT5_DISCARD_SRC', - 'SX_PERF_SEL_DB1_MRT5_DONT_RD_DEST', - 'SX_PERF_SEL_DB1_MRT5_DOUBLE_QUADS', - 'SX_PERF_SEL_DB1_MRT5_SINGLE_QUADS', - 'SX_PERF_SEL_DB1_MRT6_BLEND_BYPASS', - 'SX_PERF_SEL_DB1_MRT6_DISCARD_SRC', - 'SX_PERF_SEL_DB1_MRT6_DONT_RD_DEST', - 'SX_PERF_SEL_DB1_MRT6_DOUBLE_QUADS', - 'SX_PERF_SEL_DB1_MRT6_SINGLE_QUADS', - 'SX_PERF_SEL_DB1_MRT7_BLEND_BYPASS', - 'SX_PERF_SEL_DB1_MRT7_DISCARD_SRC', - 'SX_PERF_SEL_DB1_MRT7_DONT_RD_DEST', - 'SX_PERF_SEL_DB1_MRT7_DOUBLE_QUADS', - 'SX_PERF_SEL_DB1_MRT7_SINGLE_QUADS', 'SX_PERF_SEL_DB1_PIXELS', - 'SX_PERF_SEL_DB1_PIXEL_IDLE', 'SX_PERF_SEL_DB1_PIXEL_STALL', - 'SX_PERF_SEL_DB1_PRED_PIXELS', 'SX_PERF_SEL_DB1_SIZE', - 'SX_PERF_SEL_DB2_A2M_DISCARD_QUADS', 'SX_PERF_SEL_DB2_HALF_QUADS', - 'SX_PERF_SEL_DB2_MRT0_BLEND_BYPASS', - 'SX_PERF_SEL_DB2_MRT0_DISCARD_SRC', - 'SX_PERF_SEL_DB2_MRT0_DONT_RD_DEST', - 'SX_PERF_SEL_DB2_MRT0_DOUBLE_QUADS', - 'SX_PERF_SEL_DB2_MRT0_SINGLE_QUADS', - 'SX_PERF_SEL_DB2_MRT1_BLEND_BYPASS', - 'SX_PERF_SEL_DB2_MRT1_DISCARD_SRC', - 'SX_PERF_SEL_DB2_MRT1_DONT_RD_DEST', - 'SX_PERF_SEL_DB2_MRT1_DOUBLE_QUADS', - 'SX_PERF_SEL_DB2_MRT1_SINGLE_QUADS', - 'SX_PERF_SEL_DB2_MRT2_BLEND_BYPASS', - 'SX_PERF_SEL_DB2_MRT2_DISCARD_SRC', - 'SX_PERF_SEL_DB2_MRT2_DONT_RD_DEST', - 'SX_PERF_SEL_DB2_MRT2_DOUBLE_QUADS', - 'SX_PERF_SEL_DB2_MRT2_SINGLE_QUADS', - 'SX_PERF_SEL_DB2_MRT3_BLEND_BYPASS', - 'SX_PERF_SEL_DB2_MRT3_DISCARD_SRC', - 'SX_PERF_SEL_DB2_MRT3_DONT_RD_DEST', - 'SX_PERF_SEL_DB2_MRT3_DOUBLE_QUADS', - 'SX_PERF_SEL_DB2_MRT3_SINGLE_QUADS', - 'SX_PERF_SEL_DB2_MRT4_BLEND_BYPASS', - 'SX_PERF_SEL_DB2_MRT4_DISCARD_SRC', - 'SX_PERF_SEL_DB2_MRT4_DONT_RD_DEST', - 'SX_PERF_SEL_DB2_MRT4_DOUBLE_QUADS', - 'SX_PERF_SEL_DB2_MRT4_SINGLE_QUADS', - 'SX_PERF_SEL_DB2_MRT5_BLEND_BYPASS', - 'SX_PERF_SEL_DB2_MRT5_DISCARD_SRC', - 'SX_PERF_SEL_DB2_MRT5_DONT_RD_DEST', - 'SX_PERF_SEL_DB2_MRT5_DOUBLE_QUADS', - 'SX_PERF_SEL_DB2_MRT5_SINGLE_QUADS', - 'SX_PERF_SEL_DB2_MRT6_BLEND_BYPASS', - 'SX_PERF_SEL_DB2_MRT6_DISCARD_SRC', - 'SX_PERF_SEL_DB2_MRT6_DONT_RD_DEST', - 'SX_PERF_SEL_DB2_MRT6_DOUBLE_QUADS', - 'SX_PERF_SEL_DB2_MRT6_SINGLE_QUADS', - 'SX_PERF_SEL_DB2_MRT7_BLEND_BYPASS', - 'SX_PERF_SEL_DB2_MRT7_DISCARD_SRC', - 'SX_PERF_SEL_DB2_MRT7_DONT_RD_DEST', - 'SX_PERF_SEL_DB2_MRT7_DOUBLE_QUADS', - 'SX_PERF_SEL_DB2_MRT7_SINGLE_QUADS', 'SX_PERF_SEL_DB2_PIXELS', - 'SX_PERF_SEL_DB2_PIXEL_IDLE', 'SX_PERF_SEL_DB2_PIXEL_STALL', - 'SX_PERF_SEL_DB2_PRED_PIXELS', 'SX_PERF_SEL_DB2_SIZE', - 'SX_PERF_SEL_DB3_A2M_DISCARD_QUADS', 'SX_PERF_SEL_DB3_HALF_QUADS', - 'SX_PERF_SEL_DB3_MRT0_BLEND_BYPASS', - 'SX_PERF_SEL_DB3_MRT0_DISCARD_SRC', - 'SX_PERF_SEL_DB3_MRT0_DONT_RD_DEST', - 'SX_PERF_SEL_DB3_MRT0_DOUBLE_QUADS', - 'SX_PERF_SEL_DB3_MRT0_SINGLE_QUADS', - 'SX_PERF_SEL_DB3_MRT1_BLEND_BYPASS', - 'SX_PERF_SEL_DB3_MRT1_DISCARD_SRC', - 'SX_PERF_SEL_DB3_MRT1_DONT_RD_DEST', - 'SX_PERF_SEL_DB3_MRT1_DOUBLE_QUADS', - 'SX_PERF_SEL_DB3_MRT1_SINGLE_QUADS', - 'SX_PERF_SEL_DB3_MRT2_BLEND_BYPASS', - 'SX_PERF_SEL_DB3_MRT2_DISCARD_SRC', - 'SX_PERF_SEL_DB3_MRT2_DONT_RD_DEST', - 'SX_PERF_SEL_DB3_MRT2_DOUBLE_QUADS', - 'SX_PERF_SEL_DB3_MRT2_SINGLE_QUADS', - 'SX_PERF_SEL_DB3_MRT3_BLEND_BYPASS', - 'SX_PERF_SEL_DB3_MRT3_DISCARD_SRC', - 'SX_PERF_SEL_DB3_MRT3_DONT_RD_DEST', - 'SX_PERF_SEL_DB3_MRT3_DOUBLE_QUADS', - 'SX_PERF_SEL_DB3_MRT3_SINGLE_QUADS', - 'SX_PERF_SEL_DB3_MRT4_BLEND_BYPASS', - 'SX_PERF_SEL_DB3_MRT4_DISCARD_SRC', - 'SX_PERF_SEL_DB3_MRT4_DONT_RD_DEST', - 'SX_PERF_SEL_DB3_MRT4_DOUBLE_QUADS', - 'SX_PERF_SEL_DB3_MRT4_SINGLE_QUADS', - 'SX_PERF_SEL_DB3_MRT5_BLEND_BYPASS', - 'SX_PERF_SEL_DB3_MRT5_DISCARD_SRC', - 'SX_PERF_SEL_DB3_MRT5_DONT_RD_DEST', - 'SX_PERF_SEL_DB3_MRT5_DOUBLE_QUADS', - 'SX_PERF_SEL_DB3_MRT5_SINGLE_QUADS', - 'SX_PERF_SEL_DB3_MRT6_BLEND_BYPASS', - 'SX_PERF_SEL_DB3_MRT6_DISCARD_SRC', - 'SX_PERF_SEL_DB3_MRT6_DONT_RD_DEST', - 'SX_PERF_SEL_DB3_MRT6_DOUBLE_QUADS', - 'SX_PERF_SEL_DB3_MRT6_SINGLE_QUADS', - 'SX_PERF_SEL_DB3_MRT7_BLEND_BYPASS', - 'SX_PERF_SEL_DB3_MRT7_DISCARD_SRC', - 'SX_PERF_SEL_DB3_MRT7_DONT_RD_DEST', - 'SX_PERF_SEL_DB3_MRT7_DOUBLE_QUADS', - 'SX_PERF_SEL_DB3_MRT7_SINGLE_QUADS', 'SX_PERF_SEL_DB3_PIXELS', - 'SX_PERF_SEL_DB3_PIXEL_IDLE', 'SX_PERF_SEL_DB3_PIXEL_STALL', - 'SX_PERF_SEL_DB3_PRED_PIXELS', 'SX_PERF_SEL_DB3_SIZE', - 'SX_PERF_SEL_GATE_EN1', 'SX_PERF_SEL_GATE_EN2', - 'SX_PERF_SEL_GATE_EN3', 'SX_PERF_SEL_GATE_EN4', - 'SX_PERF_SEL_GATE_EN5', 'SX_PERF_SEL_GATE_EN6', - 'SX_PERF_SEL_GATE_EN7', 'SX_PERF_SEL_GATE_EN8', - 'SX_PERF_SEL_IDX_BUSY', 'SX_PERF_SEL_IDX_IDLE_CYCLES', - 'SX_PERF_SEL_IDX_REQ', 'SX_PERF_SEL_IDX_REQ_LATENCY', - 'SX_PERF_SEL_IDX_RET', 'SX_PERF_SEL_IDX_SCBD_STALL', - 'SX_PERF_SEL_IDX_STALL_CYCLES', 'SX_PERF_SEL_PA_IDLE_CYCLES', - 'SX_PERF_SEL_PA_POS', 'SX_PERF_SEL_PA_REQ', - 'SX_PERF_SEL_PA_REQ_LATENCY', 'SX_PERF_SEL_POS_BUSY', - 'SX_PERF_SEL_POS_SCBD_STALL', 'SX_PERF_SEL_SH_COLOR_STALL', - 'SX_PERF_SEL_SH_COLOR_STARVE', 'SX_PERF_SEL_SH_IDX_STARVE', - 'SX_PERF_SEL_SH_POS_STALL', 'SX_PERF_SEL_SH_POS_STARVE', - 'SX_PERF_SEL_SPLITMODE', 'SX_RT_EXPORT_10_11_11', - 'SX_RT_EXPORT_16_16_AR', 'SX_RT_EXPORT_16_16_GR', - 'SX_RT_EXPORT_1_5_5_5', 'SX_RT_EXPORT_2_10_10_10', - 'SX_RT_EXPORT_32_A', 'SX_RT_EXPORT_32_R', 'SX_RT_EXPORT_4_4_4_4', - 'SX_RT_EXPORT_5_6_5', 'SX_RT_EXPORT_8_8_8_8', - 'SX_RT_EXPORT_NO_CONVERSION', 'SYMCLK_FE_FORCE_EN', - 'SYMCLK_FE_FORCE_EN_DISABLE', 'SYMCLK_FE_FORCE_EN_ENABLE', - 'SYMCLK_FE_FORCE_SRC', 'SYMCLK_FE_FORCE_SRC_RESERVED', - 'SYMCLK_FE_FORCE_SRC_UNIPHYA', 'SYMCLK_FE_FORCE_SRC_UNIPHYB', - 'SYMCLK_FE_FORCE_SRC_UNIPHYC', 'SYMCLK_FE_FORCE_SRC_UNIPHYD', - 'SYMCLK_FE_FORCE_SRC_UNIPHYE', 'SYMCLK_FE_FORCE_SRC_UNIPHYF', - 'SampleSplit', 'SampleSplitBytes', 'ScMap', - 'ScUncertaintyRegionMode', 'ScXsel', 'ScYsel', 'SeEnable', - 'SeMap', 'SePairMap', 'SePairXsel', 'SePairYsel', 'SeXsel', - 'SeYsel', 'ShaderEngineTileSize', 'SourceFormat', 'Spare_261', - 'Spare_285', 'Spare_286', 'StencilFormat', 'StencilOp', - 'SurfaceArray', 'SurfaceEndian', 'SurfaceFormat', 'SurfaceNumber', - 'SurfaceSwap', 'SurfaceTiling', 'TA_PERFCOUNT_SEL', - 'TA_PERF_SEL_NULL', 'TA_PERF_SEL_RESERVED_29', - 'TA_PERF_SEL_RESERVED_41', 'TA_PERF_SEL_RESERVED_42', - 'TA_PERF_SEL_RESERVED_43', - 'TA_PERF_SEL_addr_stalled_by_tc_cycles', - 'TA_PERF_SEL_addr_stalled_by_td_cycles', - 'TA_PERF_SEL_addresser_busy', 'TA_PERF_SEL_addresser_fifo_busy', - 'TA_PERF_SEL_addresser_stalled_by_aligner_only_cycles', - 'TA_PERF_SEL_addresser_stalled_cycles', - 'TA_PERF_SEL_aligner_busy', 'TA_PERF_SEL_aligner_cycles', - 'TA_PERF_SEL_aniso_10_cycle_quads', - 'TA_PERF_SEL_aniso_12_cycle_quads', - 'TA_PERF_SEL_aniso_14_cycle_quads', - 'TA_PERF_SEL_aniso_16_cycle_quads', - 'TA_PERF_SEL_aniso_1_cycle_quads', - 'TA_PERF_SEL_aniso_2_cycle_quads', - 'TA_PERF_SEL_aniso_4_cycle_quads', - 'TA_PERF_SEL_aniso_6_cycle_quads', - 'TA_PERF_SEL_aniso_8_cycle_quads', - 'TA_PERF_SEL_aniso_gt1_cycle_quads', - 'TA_PERF_SEL_aniso_stalled_by_addresser_only_cycles', - 'TA_PERF_SEL_aniso_stalled_cycles', - 'TA_PERF_SEL_bilin_point_1_cycle_pixels', - 'TA_PERF_SEL_buffer_atomic_wavefronts', - 'TA_PERF_SEL_buffer_coalescable_addr_multicycled_cycles', - 'TA_PERF_SEL_buffer_coalescable_clamp_16kdword_multicycled_cycles', - 'TA_PERF_SEL_buffer_coalescable_wavefronts', - 'TA_PERF_SEL_buffer_coalesced_read_cycles', - 'TA_PERF_SEL_buffer_coalesced_write_cycles', - 'TA_PERF_SEL_buffer_read_wavefronts', - 'TA_PERF_SEL_buffer_total_cycles', - 'TA_PERF_SEL_buffer_wavefronts', - 'TA_PERF_SEL_buffer_write_wavefronts', - 'TA_PERF_SEL_color_1_cycle_pixels', - 'TA_PERF_SEL_color_2_cycle_pixels', - 'TA_PERF_SEL_color_3_cycle_pixels', - 'TA_PERF_SEL_color_4_cycle_pixels', - 'TA_PERF_SEL_data_stalled_by_tc_cycles', - 'TA_PERF_SEL_deriv_stalled_by_aniso_only_cycles', - 'TA_PERF_SEL_deriv_stalled_cycles', - 'TA_PERF_SEL_first_xnack_on_phase0', - 'TA_PERF_SEL_first_xnack_on_phase1', - 'TA_PERF_SEL_first_xnack_on_phase2', - 'TA_PERF_SEL_first_xnack_on_phase3', - 'TA_PERF_SEL_flat_atomic_wavefronts', - 'TA_PERF_SEL_flat_coalesceable_wavefronts', - 'TA_PERF_SEL_flat_read_wavefronts', 'TA_PERF_SEL_flat_wavefronts', - 'TA_PERF_SEL_flat_write_wavefronts', 'TA_PERF_SEL_gradient_busy', - 'TA_PERF_SEL_gradient_cycles', 'TA_PERF_SEL_gradient_fifo_busy', - 'TA_PERF_SEL_image_atomic_wavefronts', - 'TA_PERF_SEL_image_read_wavefronts', - 'TA_PERF_SEL_image_total_cycles', 'TA_PERF_SEL_image_wavefronts', - 'TA_PERF_SEL_image_write_wavefronts', - 'TA_PERF_SEL_local_cg_dyn_sclk_grp0_en', - 'TA_PERF_SEL_local_cg_dyn_sclk_grp1_en', - 'TA_PERF_SEL_local_cg_dyn_sclk_grp1_mems_en', - 'TA_PERF_SEL_local_cg_dyn_sclk_grp4_en', - 'TA_PERF_SEL_local_cg_dyn_sclk_grp5_en', 'TA_PERF_SEL_lod_busy', - 'TA_PERF_SEL_lod_fifo_busy', 'TA_PERF_SEL_mip_1_cycle_pixels', - 'TA_PERF_SEL_mip_2_cycle_pixels', - 'TA_PERF_SEL_mipmap_invalid_samples', - 'TA_PERF_SEL_mipmap_lod_0_samples', - 'TA_PERF_SEL_mipmap_lod_10_samples', - 'TA_PERF_SEL_mipmap_lod_11_samples', - 'TA_PERF_SEL_mipmap_lod_12_samples', - 'TA_PERF_SEL_mipmap_lod_13_samples', - 'TA_PERF_SEL_mipmap_lod_14_samples', - 'TA_PERF_SEL_mipmap_lod_1_samples', - 'TA_PERF_SEL_mipmap_lod_2_samples', - 'TA_PERF_SEL_mipmap_lod_3_samples', - 'TA_PERF_SEL_mipmap_lod_4_samples', - 'TA_PERF_SEL_mipmap_lod_5_samples', - 'TA_PERF_SEL_mipmap_lod_6_samples', - 'TA_PERF_SEL_mipmap_lod_7_samples', - 'TA_PERF_SEL_mipmap_lod_8_samples', - 'TA_PERF_SEL_mipmap_lod_9_samples', 'TA_PERF_SEL_reg_sclk_vld', - 'TA_PERF_SEL_sh_fifo_addr_busy', - 'TA_PERF_SEL_sh_fifo_addr_cycles', - 'TA_PERF_SEL_sh_fifo_addr_starved_while_busy_cycles', - 'TA_PERF_SEL_sh_fifo_addr_waiting_on_cmd_cycles', - 'TA_PERF_SEL_sh_fifo_busy', 'TA_PERF_SEL_sh_fifo_cmd_busy', - 'TA_PERF_SEL_sh_fifo_cmd_starved_while_busy_cycles', - 'TA_PERF_SEL_sh_fifo_cmd_waiting_on_addr_cycles', - 'TA_PERF_SEL_sh_fifo_data_busy', - 'TA_PERF_SEL_sh_fifo_data_cycles', - 'TA_PERF_SEL_sh_fifo_data_sfifo_busy', - 'TA_PERF_SEL_sh_fifo_data_starved_while_busy_cycles', - 'TA_PERF_SEL_sh_fifo_data_state_starved_while_busy_cycles', - 'TA_PERF_SEL_sh_fifo_data_state_waiting_on_data_cycles', - 'TA_PERF_SEL_sh_fifo_data_tfifo_busy', - 'TA_PERF_SEL_sh_fifo_data_waiting_on_data_state_cycles', - 'TA_PERF_SEL_sp_ta_addr_cycles', 'TA_PERF_SEL_sp_ta_data_cycles', - 'TA_PERF_SEL_sq_ta_cmd_cycles', 'TA_PERF_SEL_ta_busy', - 'TA_PERF_SEL_ta_fa_data_state_cycles', - 'TA_PERF_SEL_ta_sh_fifo_starved', 'TA_PERF_SEL_total_wavefronts', - 'TA_PERF_SEL_vol_1_cycle_pixels', - 'TA_PERF_SEL_vol_2_cycle_pixels', 'TA_PERF_SEL_walker_cycles', - 'TA_PERF_SEL_write_path_busy', - 'TA_PERF_SEL_write_path_input_cycles', - 'TA_PERF_SEL_write_path_output_cycles', - 'TA_PERF_SEL_xnack_on_phase0', 'TA_PERF_SEL_xnack_on_phase1', - 'TA_PERF_SEL_xnack_on_phase2', 'TA_PERF_SEL_xnack_on_phase3', - 'TA_TC_ADDR_MODES', 'TA_TC_ADDR_MODE_BORDER_COLOR', - 'TA_TC_ADDR_MODE_COMP0', 'TA_TC_ADDR_MODE_COMP1', - 'TA_TC_ADDR_MODE_COMP2', 'TA_TC_ADDR_MODE_COMP3', - 'TA_TC_ADDR_MODE_DEFAULT', 'TA_TC_ADDR_MODE_UNALIGNED', - 'TA_TC_REQ_MODES', 'TA_TC_REQ_MODE_BORDER', 'TA_TC_REQ_MODE_BYTE', - 'TA_TC_REQ_MODE_BYTE_NV', 'TA_TC_REQ_MODE_DWORD', - 'TA_TC_REQ_MODE_NORMAL', 'TA_TC_REQ_MODE_TEX0', - 'TA_TC_REQ_MODE_TEX1', 'TA_TC_REQ_MODE_TEX2', - 'TCC_CACHE_POLICIES', 'TCC_CACHE_POLICY_LRU', - 'TCC_CACHE_POLICY_STREAM', 'TCC_MTYPE', 'TCP_CACHE_POLICIES', - 'TCP_CACHE_POLICY_HIT_EVICT', 'TCP_CACHE_POLICY_HIT_LRU', - 'TCP_CACHE_POLICY_MISS_EVICT', 'TCP_CACHE_POLICY_MISS_LRU', - 'TCP_CACHE_STORE_POLICIES', 'TCP_CACHE_STORE_POLICY_WT_EVICT', - 'TCP_CACHE_STORE_POLICY_WT_LRU', 'TCP_DSM_DATA_SEL', - 'TCP_DSM_DISABLE', 'TCP_DSM_INJECT_SEL', 'TCP_DSM_INJECT_SEL0', - 'TCP_DSM_INJECT_SEL1', 'TCP_DSM_INJECT_SEL2', - 'TCP_DSM_INJECT_SEL3', 'TCP_DSM_SEL0', 'TCP_DSM_SEL1', - 'TCP_DSM_SEL_BOTH', 'TCP_DSM_SINGLE_WRITE', - 'TCP_DSM_SINGLE_WRITE_DIS', 'TCP_DSM_SINGLE_WRITE_EN', - 'TCP_OPCODE_ATOMIC', 'TCP_OPCODE_ATOMIC_CMPSWAP', - 'TCP_OPCODE_GATHERH', 'TCP_OPCODE_READ', 'TCP_OPCODE_TYPE', - 'TCP_OPCODE_WBINVL1', 'TCP_OPCODE_WRITE', 'TCP_PERFCOUNT_SELECT', - 'TCP_PERF_SEL_ALLOC_STALL_CYCLES', - 'TCP_PERF_SEL_ATOMIC_TAGCONFLICT_STALL_CYCLES', - 'TCP_PERF_SEL_CLIENT_UTCL0_INFLIGHT', - 'TCP_PERF_SEL_CORE_REG_SCLK_VLD', - 'TCP_PERF_SEL_CP_TCP_INVALIDATE', 'TCP_PERF_SEL_GATE_EN1', - 'TCP_PERF_SEL_GATE_EN2', - 'TCP_PERF_SEL_GL1_REQ_ATOMIC_WITHOUT_RET', - 'TCP_PERF_SEL_GL1_REQ_ATOMIC_WITH_RET', - 'TCP_PERF_SEL_GL1_REQ_READ', 'TCP_PERF_SEL_GL1_REQ_READ_LATENCY', - 'TCP_PERF_SEL_GL1_REQ_WRITE', - 'TCP_PERF_SEL_GL1_REQ_WRITE_LATENCY', - 'TCP_PERF_SEL_HOLE_READ_STALL', 'TCP_PERF_SEL_LFIFO_STALL_CYCLES', - 'TCP_PERF_SEL_LOD_STALL_CYCLES', - 'TCP_PERF_SEL_PENDING_STALL_CYCLES', 'TCP_PERF_SEL_POWER_STALL', - 'TCP_PERF_SEL_READCONFLICT_STALL_CYCLES', - 'TCP_PERF_SEL_READFIFO_STALL_CYCLES', - 'TCP_PERF_SEL_READ_TAGCONFLICT_STALL_CYCLES', - 'TCP_PERF_SEL_REQ_MISS_TAGRAM0', 'TCP_PERF_SEL_REQ_MISS_TAGRAM1', - 'TCP_PERF_SEL_REQ_MISS_TAGRAM2', 'TCP_PERF_SEL_REQ_MISS_TAGRAM3', - 'TCP_PERF_SEL_RFIFO_STALL_CYCLES', 'TCP_PERF_SEL_SHOOTDOWN', - 'TCP_PERF_SEL_TAGRAM0_REQ', 'TCP_PERF_SEL_TAGRAM1_REQ', - 'TCP_PERF_SEL_TAGRAM2_REQ', 'TCP_PERF_SEL_TAGRAM3_REQ', - 'TCP_PERF_SEL_TA_REQ', 'TCP_PERF_SEL_TA_REQ_ATOMIC_WITHOUT_RET', - 'TCP_PERF_SEL_TA_REQ_ATOMIC_WITH_RET', 'TCP_PERF_SEL_TA_REQ_READ', - 'TCP_PERF_SEL_TA_REQ_STATE_READ', 'TCP_PERF_SEL_TA_REQ_WRITE', - 'TCP_PERF_SEL_TA_TCP_ADDR_STARVE_CYCLES', - 'TCP_PERF_SEL_TA_TCP_DATA_STARVE_CYCLES', - 'TCP_PERF_SEL_TA_TCP_STATE_READ', - 'TCP_PERF_SEL_TCC_ATOMIC_WITHOUT_RET_REQ', - 'TCP_PERF_SEL_TCC_ATOMIC_WITH_RET_REQ', - 'TCP_PERF_SEL_TCC_CC_ATOMIC_REQ', 'TCP_PERF_SEL_TCC_CC_READ_REQ', - 'TCP_PERF_SEL_TCC_CC_WRITE_REQ', 'TCP_PERF_SEL_TCC_DCC_REQ', - 'TCP_PERF_SEL_TCC_LRU_REQ', 'TCP_PERF_SEL_TCC_NC_ATOMIC_REQ', - 'TCP_PERF_SEL_TCC_NC_READ_REQ', 'TCP_PERF_SEL_TCC_NC_WRITE_REQ', - 'TCP_PERF_SEL_TCC_READ_REQ', 'TCP_PERF_SEL_TCC_READ_REQ_LATENCY', - 'TCP_PERF_SEL_TCC_STREAM_REQ', 'TCP_PERF_SEL_TCC_UC_ATOMIC_REQ', - 'TCP_PERF_SEL_TCC_UC_READ_REQ', 'TCP_PERF_SEL_TCC_UC_WRITE_REQ', - 'TCP_PERF_SEL_TCC_WRITE_REQ', - 'TCP_PERF_SEL_TCC_WRITE_REQ_HOLE_LATENCY', - 'TCP_PERF_SEL_TCC_WRITE_REQ_LATENCY', 'TCP_PERF_SEL_TCP_LATENCY', - 'TCP_PERF_SEL_TCP_TA_ADDR_STALL_CYCLES', - 'TCP_PERF_SEL_TCP_TA_DATA_STALL_CYCLES', - 'TCP_PERF_SEL_TCP_TCR_STARVE_CYCLES', - 'TCP_PERF_SEL_TCR_RDRET_STALL', - 'TCP_PERF_SEL_TCR_TCP_STALL_CYCLES', - 'TCP_PERF_SEL_TC_TA_XNACK_STALL', - 'TCP_PERF_SEL_TD_TCP_STALL_CYCLES', 'TCP_PERF_SEL_TOTAL_ACCESSES', - 'TCP_PERF_SEL_TOTAL_ATOMIC_WITHOUT_RET', - 'TCP_PERF_SEL_TOTAL_ATOMIC_WITH_RET', - 'TCP_PERF_SEL_TOTAL_CACHE_ACCESSES', - 'TCP_PERF_SEL_TOTAL_HIT_LRU_READ', - 'TCP_PERF_SEL_TOTAL_MISS_EVICT_READ', - 'TCP_PERF_SEL_TOTAL_MISS_EVICT_WRITE', - 'TCP_PERF_SEL_TOTAL_MISS_LRU_READ', - 'TCP_PERF_SEL_TOTAL_MISS_LRU_WRITE', - 'TCP_PERF_SEL_TOTAL_NON_READ', 'TCP_PERF_SEL_TOTAL_READ', - 'TCP_PERF_SEL_TOTAL_WBINVL1', 'TCP_PERF_SEL_TOTAL_WRITE', - 'TCP_PERF_SEL_TOTAL_WRITEBACK_INVALIDATES', - 'TCP_PERF_SEL_UNORDERED_MTYPE_STALL', - 'TCP_PERF_SEL_UTCL0_LFIFO_FULL', - 'TCP_PERF_SEL_UTCL0_PERMISSION_MISS', - 'TCP_PERF_SEL_UTCL0_REQUEST', - 'TCP_PERF_SEL_UTCL0_SERIALIZATION_STALL', - 'TCP_PERF_SEL_UTCL0_STALL_INFLIGHT_MAX', - 'TCP_PERF_SEL_UTCL0_STALL_LFIFO_NOT_RES', - 'TCP_PERF_SEL_UTCL0_STALL_LRU_INFLIGHT', - 'TCP_PERF_SEL_UTCL0_STALL_MISSFIFO_FULL', - 'TCP_PERF_SEL_UTCL0_STALL_MULTI_MISS', - 'TCP_PERF_SEL_UTCL0_STALL_UTCL2_REQ_OUT_OF_CREDITS', - 'TCP_PERF_SEL_UTCL0_TRANSLATION_HIT', - 'TCP_PERF_SEL_UTCL0_TRANSLATION_MISS', - 'TCP_PERF_SEL_UTCL0_UTCL2_INFLIGHT', - 'TCP_PERF_SEL_WRITE_CONFLICT_STALL', - 'TCP_PERF_SEL_WRITE_TAGCONFLICT_STALL_CYCLES', 'TCP_WATCH_MODES', - 'TCP_WATCH_MODE_ALL', 'TCP_WATCH_MODE_ATOMIC', - 'TCP_WATCH_MODE_NONREAD', 'TCP_WATCH_MODE_READ', 'TC_EA_CID', - 'TC_EA_CID_CPF', 'TC_EA_CID_CPG', 'TC_EA_CID_DCC', - 'TC_EA_CID_FMASK', 'TC_EA_CID_HTILE', 'TC_EA_CID_IA', - 'TC_EA_CID_MISC', 'TC_EA_CID_PA', 'TC_EA_CID_RT', 'TC_EA_CID_SQC', - 'TC_EA_CID_STENCIL', 'TC_EA_CID_TCP', 'TC_EA_CID_TCPMETA', - 'TC_EA_CID_UTCL2_TPI', 'TC_EA_CID_WD', 'TC_EA_CID_Z', - 'TC_MICRO_TILE_MODE', 'TC_NACKS', 'TC_NACK_DATA_ERROR', - 'TC_NACK_NO_FAULT', 'TC_NACK_PAGE_FAULT', - 'TC_NACK_PROTECTION_FAULT', 'TC_ONLY', 'TC_OP', - 'TC_OP_ATOMIC_ADD_32', 'TC_OP_ATOMIC_ADD_64', - 'TC_OP_ATOMIC_ADD_RTN_32', 'TC_OP_ATOMIC_ADD_RTN_64', - 'TC_OP_ATOMIC_AND_32', 'TC_OP_ATOMIC_AND_64', - 'TC_OP_ATOMIC_AND_RTN_32', 'TC_OP_ATOMIC_AND_RTN_64', - 'TC_OP_ATOMIC_CMPSWAP_32', 'TC_OP_ATOMIC_CMPSWAP_64', - 'TC_OP_ATOMIC_CMPSWAP_RTN_32', 'TC_OP_ATOMIC_CMPSWAP_RTN_64', - 'TC_OP_ATOMIC_DEC_32', 'TC_OP_ATOMIC_DEC_64', - 'TC_OP_ATOMIC_DEC_RTN_32', 'TC_OP_ATOMIC_DEC_RTN_64', - 'TC_OP_ATOMIC_FCMPSWAP_32', 'TC_OP_ATOMIC_FCMPSWAP_64', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64', - 'TC_OP_ATOMIC_FCMPSWAP_RTN_32', 'TC_OP_ATOMIC_FCMPSWAP_RTN_64', - 'TC_OP_ATOMIC_FMAX_32', 'TC_OP_ATOMIC_FMAX_64', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_32', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_64', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64', - 'TC_OP_ATOMIC_FMAX_RTN_32', 'TC_OP_ATOMIC_FMAX_RTN_64', - 'TC_OP_ATOMIC_FMIN_32', 'TC_OP_ATOMIC_FMIN_64', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_32', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_64', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64', - 'TC_OP_ATOMIC_FMIN_RTN_32', 'TC_OP_ATOMIC_FMIN_RTN_64', - 'TC_OP_ATOMIC_INC_32', 'TC_OP_ATOMIC_INC_64', - 'TC_OP_ATOMIC_INC_RTN_32', 'TC_OP_ATOMIC_INC_RTN_64', - 'TC_OP_ATOMIC_OR_32', 'TC_OP_ATOMIC_OR_64', - 'TC_OP_ATOMIC_OR_RTN_32', 'TC_OP_ATOMIC_OR_RTN_64', - 'TC_OP_ATOMIC_SMAX_32', 'TC_OP_ATOMIC_SMAX_64', - 'TC_OP_ATOMIC_SMAX_RTN_32', 'TC_OP_ATOMIC_SMAX_RTN_64', - 'TC_OP_ATOMIC_SMIN_32', 'TC_OP_ATOMIC_SMIN_64', - 'TC_OP_ATOMIC_SMIN_RTN_32', 'TC_OP_ATOMIC_SMIN_RTN_64', - 'TC_OP_ATOMIC_SUB_32', 'TC_OP_ATOMIC_SUB_64', - 'TC_OP_ATOMIC_SUB_RTN_32', 'TC_OP_ATOMIC_SUB_RTN_64', - 'TC_OP_ATOMIC_SWAP_32', 'TC_OP_ATOMIC_SWAP_64', - 'TC_OP_ATOMIC_SWAP_RTN_32', 'TC_OP_ATOMIC_SWAP_RTN_64', - 'TC_OP_ATOMIC_UMAX_32', 'TC_OP_ATOMIC_UMAX_64', - 'TC_OP_ATOMIC_UMAX_RTN_32', 'TC_OP_ATOMIC_UMAX_RTN_64', - 'TC_OP_ATOMIC_UMIN_32', 'TC_OP_ATOMIC_UMIN_64', - 'TC_OP_ATOMIC_UMIN_RTN_32', 'TC_OP_ATOMIC_UMIN_RTN_64', - 'TC_OP_ATOMIC_XOR_32', 'TC_OP_ATOMIC_XOR_64', - 'TC_OP_ATOMIC_XOR_RTN_32', 'TC_OP_ATOMIC_XOR_RTN_64', - 'TC_OP_INVL2_NC', 'TC_OP_INV_METADATA', 'TC_OP_MASKS', - 'TC_OP_MASK_64', 'TC_OP_MASK_FLUSH_DENROM', 'TC_OP_MASK_NO_RTN', - 'TC_OP_NOP_ACK', 'TC_OP_NOP_RTN0', 'TC_OP_PROBE_FILTER', - 'TC_OP_READ', 'TC_OP_RESERVED_FOP_32_0', - 'TC_OP_RESERVED_FOP_32_1', 'TC_OP_RESERVED_FOP_32_2', - 'TC_OP_RESERVED_FOP_64_0', 'TC_OP_RESERVED_FOP_64_1', - 'TC_OP_RESERVED_FOP_64_2', 'TC_OP_RESERVED_FOP_FLUSH_DENORM_32_1', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_32_2', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_0', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_1', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_2', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_1', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_0', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_1', - 'TC_OP_RESERVED_FOP_RTN_32_0', 'TC_OP_RESERVED_FOP_RTN_32_1', - 'TC_OP_RESERVED_FOP_RTN_32_2', 'TC_OP_RESERVED_FOP_RTN_64_0', - 'TC_OP_RESERVED_FOP_RTN_64_1', 'TC_OP_RESERVED_FOP_RTN_64_2', - 'TC_OP_RESERVED_NON_FLOAT_32_1', 'TC_OP_RESERVED_NON_FLOAT_32_2', - 'TC_OP_RESERVED_NON_FLOAT_32_3', 'TC_OP_RESERVED_NON_FLOAT_32_4', - 'TC_OP_RESERVED_NON_FLOAT_64_1', 'TC_OP_RESERVED_NON_FLOAT_64_2', - 'TC_OP_RESERVED_NON_FLOAT_64_3', 'TC_OP_RESERVED_NON_FLOAT_64_4', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_0', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_1', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_2', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_3', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_1', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_2', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_3', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_4', 'TC_OP_WBINVL1', - 'TC_OP_WBINVL1_SD', 'TC_OP_WBINVL1_VOL', 'TC_OP_WBINVL2', - 'TC_OP_WBINVL2_NC', 'TC_OP_WBINVL2_SD', 'TC_OP_WBL2_NC', - 'TC_OP_WBL2_WC', 'TC_OP_WRITE', 'TD_PERFCOUNT_SEL', - 'TD_PERF_SEL_RESERVED_21', 'TD_PERF_SEL_RESERVED_8', - 'TD_PERF_SEL_address_cmd_poison', - 'TD_PERF_SEL_bypassLerp_wavefront', - 'TD_PERF_SEL_core_state_rams_read', - 'TD_PERF_SEL_d16_en_wavefront', 'TD_PERF_SEL_data_poison', - 'TD_PERF_SEL_done_scoreboard_bp_due_to_lds', - 'TD_PERF_SEL_done_scoreboard_bp_due_to_ooo', - 'TD_PERF_SEL_done_scoreboard_is_full', - 'TD_PERF_SEL_done_scoreboard_not_empty', - 'TD_PERF_SEL_four_comp_wavefront', - 'TD_PERF_SEL_gather4_wavefront', - 'TD_PERF_SEL_gather4h_packed_wavefront', - 'TD_PERF_SEL_gather4h_wavefront', - 'TD_PERF_SEL_gather8h_packed_wavefront', 'TD_PERF_SEL_input_busy', - 'TD_PERF_SEL_input_state_fifo_full', - 'TD_PERF_SEL_ldfptr_wavefront', 'TD_PERF_SEL_lds_stall', - 'TD_PERF_SEL_load_wavefront', 'TD_PERF_SEL_lod_warn_from_ta', - 'TD_PERF_SEL_min_max_filter_wavefront', - 'TD_PERF_SEL_mixmode_instruction', 'TD_PERF_SEL_mixmode_resource', - 'TD_PERF_SEL_nofilter_busy', - 'TD_PERF_SEL_nofilter_formatters_turned_off', - 'TD_PERF_SEL_nofilter_pkr_full', - 'TD_PERF_SEL_nofilter_popcount_dmask_gt_num_comp_of_fmt', - 'TD_PERF_SEL_nofilter_popcount_dmask_lt_num_comp_of_fmt', - 'TD_PERF_SEL_nofilter_sclk_on_sampler_sclk_off', - 'TD_PERF_SEL_none', 'TD_PERF_SEL_one_comp_wavefront', - 'TD_PERF_SEL_opaque_black_border', - 'TD_PERF_SEL_out_of_order_instr', - 'TD_PERF_SEL_reference_data_rams_read', - 'TD_PERF_SEL_sample_c_wavefront', 'TD_PERF_SEL_sampler_lerp_busy', - 'TD_PERF_SEL_sampler_out_busy', 'TD_PERF_SEL_sampler_pkr_full', - 'TD_PERF_SEL_sampler_sclk_on_nofilter_sclk_off', - 'TD_PERF_SEL_status_packet', 'TD_PERF_SEL_store_wavefront', - 'TD_PERF_SEL_ta_data_stall', - 'TD_PERF_SEL_tc_cycling_of_nofilter_instr', - 'TD_PERF_SEL_tc_data_stall', 'TD_PERF_SEL_tc_ram_stall', - 'TD_PERF_SEL_tc_td_data_fifo_full', - 'TD_PERF_SEL_tc_td_ram_fifo_full', 'TD_PERF_SEL_td_busy', - 'TD_PERF_SEL_td_cycling_of_nofilter_instr', - 'TD_PERF_SEL_three_comp_wavefront', 'TD_PERF_SEL_total_num_instr', - 'TD_PERF_SEL_two_comp_wavefront', - 'TD_PERF_SEL_user_defined_border', - 'TD_PERF_SEL_wavefront_dest_is_lds', - 'TD_PERF_SEL_weight_data_rams_read', 'TD_PERF_SEL_white_border', - 'TD_PERF_SEL_write_ack_wavefront', 'TESS_ISOLINE', 'TESS_QUAD', - 'TESS_TRIANGLE', 'TEST_CLK_DIV_SEL', 'TEST_CLK_SEL', - 'TEST_CLK_SEL_0', 'TEST_CLK_SEL_1', 'TEST_CLK_SEL_2', - 'TEST_CLK_SEL_3', 'TEST_CLK_SEL_4', 'TEST_CLK_SEL_5', - 'TEST_CLK_SEL_6', 'TEST_CLK_SEL_7', 'TEST_CLK_SEL_8', - 'TEST_CLOCK_MUX_SELECT_DISPCLK_G', - 'TEST_CLOCK_MUX_SELECT_DISPCLK_P', - 'TEST_CLOCK_MUX_SELECT_DISPCLK_R', - 'TEST_CLOCK_MUX_SELECT_DSCCLK_G', - 'TEST_CLOCK_MUX_SELECT_DSCCLK_P', - 'TEST_CLOCK_MUX_SELECT_DSCCLK_R', 'TEST_CLOCK_MUX_SELECT_ENUM', - 'TEX_BC_SWIZZLE', 'TEX_BC_Swizzle_WXYZ', 'TEX_BC_Swizzle_WZYX', - 'TEX_BC_Swizzle_XWYZ', 'TEX_BC_Swizzle_XYZW', - 'TEX_BC_Swizzle_YXWZ', 'TEX_BC_Swizzle_ZYXW', - 'TEX_BORDER_COLOR_TYPE', 'TEX_BorderColor_OpaqueBlack', - 'TEX_BorderColor_OpaqueWhite', 'TEX_BorderColor_Register', - 'TEX_BorderColor_TransparentBlack', 'TEX_CHROMA_KEY', 'TEX_CLAMP', - 'TEX_COORD_TYPE', 'TEX_ChromaKey_Blend', 'TEX_ChromaKey_Disabled', - 'TEX_ChromaKey_Kill', 'TEX_ChromaKey_RESERVED_3', - 'TEX_Clamp_ClampHalfToBorder', 'TEX_Clamp_ClampToBorder', - 'TEX_Clamp_ClampToLast', 'TEX_Clamp_Mirror', - 'TEX_Clamp_MirrorOnceHalfToBorder', - 'TEX_Clamp_MirrorOnceToBorder', 'TEX_Clamp_MirrorOnceToLast', - 'TEX_Clamp_Repeat', 'TEX_CoordType_Normalized', - 'TEX_CoordType_Unnormalized', 'TEX_DEPTH_COMPARE_FUNCTION', - 'TEX_DIM', 'TEX_DepthCompareFunction_Always', - 'TEX_DepthCompareFunction_Equal', - 'TEX_DepthCompareFunction_Greater', - 'TEX_DepthCompareFunction_GreaterEqual', - 'TEX_DepthCompareFunction_Less', - 'TEX_DepthCompareFunction_LessEqual', - 'TEX_DepthCompareFunction_Never', - 'TEX_DepthCompareFunction_NotEqual', 'TEX_Dim_1D', - 'TEX_Dim_1DArray', 'TEX_Dim_2D', 'TEX_Dim_2DArray', - 'TEX_Dim_2DArray_MSAA', 'TEX_Dim_2D_MSAA', 'TEX_Dim_3D', - 'TEX_Dim_CubeMap', 'TEX_FORMAT_COMP', 'TEX_FormatComp_RESERVED_3', - 'TEX_FormatComp_Signed', 'TEX_FormatComp_Unsigned', - 'TEX_FormatComp_UnsignedBiased', 'TEX_MAX_ANISO_RATIO', - 'TEX_MIP_FILTER', 'TEX_MaxAnisoRatio_16to1', - 'TEX_MaxAnisoRatio_1to1', 'TEX_MaxAnisoRatio_2to1', - 'TEX_MaxAnisoRatio_4to1', 'TEX_MaxAnisoRatio_8to1', - 'TEX_MaxAnisoRatio_RESERVED_5', 'TEX_MaxAnisoRatio_RESERVED_6', - 'TEX_MaxAnisoRatio_RESERVED_7', 'TEX_MipFilter_Linear', - 'TEX_MipFilter_None', 'TEX_MipFilter_Point', - 'TEX_MipFilter_Point_Aniso_Adj', 'TEX_REQUEST_SIZE', - 'TEX_RequestSize_128B', 'TEX_RequestSize_2X64B', - 'TEX_RequestSize_32B', 'TEX_RequestSize_64B', 'TEX_SAMPLER_TYPE', - 'TEX_SamplerType_Invalid', 'TEX_SamplerType_Valid', - 'TEX_XYFilter_AnisoLinear', 'TEX_XYFilter_AnisoPoint', - 'TEX_XYFilter_Linear', 'TEX_XYFilter_Point', 'TEX_XY_FILTER', - 'TEX_ZFilter_Linear', 'TEX_ZFilter_None', 'TEX_ZFilter_Point', - 'TEX_ZFilter_RESERVED_3', 'TEX_Z_FILTER', 'TGID_ROLLOVER', - 'THICK_MICRO_TILING', 'THIN_MICRO_TILING', 'THIRTY_TWO_PIPES', - 'THREAD_TRACE_DRAW', 'THREAD_TRACE_FINISH', 'THREAD_TRACE_MARKER', - 'THREAD_TRACE_START', 'THREAD_TRACE_STOP', 'TILE_SPLIT', - 'TMDS_COLOR_FORMAT', 'TMDS_COLOR_FORMAT_DUAL30BPP', - 'TMDS_COLOR_FORMAT_RESERVED', 'TMDS_COLOR_FORMAT_TWIN30BPP_LSB', - 'TMDS_COLOR_FORMAT__24BPP__TWIN30BPP_MSB__DUAL48BPP', - 'TMDS_CTL0_DATA_INVERT', 'TMDS_CTL0_DATA_INVERT_EN', - 'TMDS_CTL0_DATA_MODULATION', 'TMDS_CTL0_DATA_MODULATION_BIT0', - 'TMDS_CTL0_DATA_MODULATION_BIT1', - 'TMDS_CTL0_DATA_MODULATION_BIT2', - 'TMDS_CTL0_DATA_MODULATION_DISABLE', 'TMDS_CTL0_DATA_NORMAL', - 'TMDS_CTL0_DATA_SEL', 'TMDS_CTL0_DATA_SEL0_RESERVED', - 'TMDS_CTL0_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL0_DATA_SEL2_VSYNC', - 'TMDS_CTL0_DATA_SEL3_RESERVED', 'TMDS_CTL0_DATA_SEL4_HSYNC', - 'TMDS_CTL0_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL0_DATA_SEL8_RANDOM_DATA', - 'TMDS_CTL0_DATA_SEL9_SEL15_RANDOM_DATA', - 'TMDS_CTL0_PATTERN_OUT_DISABLE', 'TMDS_CTL0_PATTERN_OUT_EN', - 'TMDS_CTL0_PATTERN_OUT_ENABLE', 'TMDS_CTL1_DATA_INVERT', - 'TMDS_CTL1_DATA_INVERT_EN', 'TMDS_CTL1_DATA_MODULATION', - 'TMDS_CTL1_DATA_MODULATION_BIT0', - 'TMDS_CTL1_DATA_MODULATION_BIT1', - 'TMDS_CTL1_DATA_MODULATION_BIT2', - 'TMDS_CTL1_DATA_MODULATION_DISABLE', 'TMDS_CTL1_DATA_NORMAL', - 'TMDS_CTL1_DATA_SEL', 'TMDS_CTL1_DATA_SEL0_RESERVED', - 'TMDS_CTL1_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL1_DATA_SEL2_VSYNC', - 'TMDS_CTL1_DATA_SEL3_RESERVED', 'TMDS_CTL1_DATA_SEL4_HSYNC', - 'TMDS_CTL1_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL1_DATA_SEL8_BLANK_TIME', - 'TMDS_CTL1_DATA_SEL9_SEL15_RESERVED', - 'TMDS_CTL1_PATTERN_OUT_DISABLE', 'TMDS_CTL1_PATTERN_OUT_EN', - 'TMDS_CTL1_PATTERN_OUT_ENABLE', 'TMDS_CTL2_DATA_INVERT', - 'TMDS_CTL2_DATA_INVERT_EN', 'TMDS_CTL2_DATA_MODULATION', - 'TMDS_CTL2_DATA_MODULATION_BIT0', - 'TMDS_CTL2_DATA_MODULATION_BIT1', - 'TMDS_CTL2_DATA_MODULATION_BIT2', - 'TMDS_CTL2_DATA_MODULATION_DISABLE', 'TMDS_CTL2_DATA_NORMAL', - 'TMDS_CTL2_DATA_SEL', 'TMDS_CTL2_DATA_SEL0_RESERVED', - 'TMDS_CTL2_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL2_DATA_SEL2_VSYNC', - 'TMDS_CTL2_DATA_SEL3_RESERVED', 'TMDS_CTL2_DATA_SEL4_HSYNC', - 'TMDS_CTL2_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL2_DATA_SEL8_BLANK_TIME', - 'TMDS_CTL2_DATA_SEL9_SEL15_RESERVED', - 'TMDS_CTL2_PATTERN_OUT_DISABLE', 'TMDS_CTL2_PATTERN_OUT_EN', - 'TMDS_CTL2_PATTERN_OUT_ENABLE', 'TMDS_CTL3_DATA_INVERT', - 'TMDS_CTL3_DATA_INVERT_EN', 'TMDS_CTL3_DATA_MODULATION', - 'TMDS_CTL3_DATA_MODULATION_BIT0', - 'TMDS_CTL3_DATA_MODULATION_BIT1', - 'TMDS_CTL3_DATA_MODULATION_BIT2', - 'TMDS_CTL3_DATA_MODULATION_DISABLE', 'TMDS_CTL3_DATA_NORMAL', - 'TMDS_CTL3_DATA_SEL', 'TMDS_CTL3_DATA_SEL0_RESERVED', - 'TMDS_CTL3_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL3_DATA_SEL2_VSYNC', - 'TMDS_CTL3_DATA_SEL3_RESERVED', 'TMDS_CTL3_DATA_SEL4_HSYNC', - 'TMDS_CTL3_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL3_DATA_SEL8_BLANK_TIME', - 'TMDS_CTL3_DATA_SEL9_SEL15_RESERVED', - 'TMDS_CTL3_PATTERN_OUT_DISABLE', 'TMDS_CTL3_PATTERN_OUT_EN', - 'TMDS_CTL3_PATTERN_OUT_ENABLE', - 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL', - 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_PCLK_TMDS', - 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_TMDS_PLL', 'TMDS_MUX_SELECT', - 'TMDS_MUX_SELECT_B', 'TMDS_MUX_SELECT_G', 'TMDS_MUX_SELECT_R', - 'TMDS_MUX_SELECT_RESERVED', 'TMDS_NOT_SYNC_PHASE_ON_FRAME_START', - 'TMDS_PIXEL_ENCODING', 'TMDS_PIXEL_ENCODING_422', - 'TMDS_PIXEL_ENCODING_444_OR_420', 'TMDS_REG_TEST_OUTPUTA_CNTLA', - 'TMDS_REG_TEST_OUTPUTA_CNTLA_NA', - 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA0', - 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA1', - 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA2', - 'TMDS_REG_TEST_OUTPUTB_CNTLB', 'TMDS_REG_TEST_OUTPUTB_CNTLB_NA', - 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB0', - 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB1', - 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB2', 'TMDS_STEREOSYNC_CTL0', - 'TMDS_STEREOSYNC_CTL1', 'TMDS_STEREOSYNC_CTL2', - 'TMDS_STEREOSYNC_CTL3', 'TMDS_STEREOSYNC_CTL_SEL_REG', - 'TMDS_SYNC_PHASE', 'TMDS_SYNC_PHASE_ON_FRAME_START', - 'TMDS_TRANSMITTER_BYPASS_PLLA_COHERENT', - 'TMDS_TRANSMITTER_BYPASS_PLLA_INCOHERENT', - 'TMDS_TRANSMITTER_BYPASS_PLLB_COHERENT', - 'TMDS_TRANSMITTER_BYPASS_PLLB_INCOHERENT', - 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA', - 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB', - 'TMDS_TRANSMITTER_CONTROL_IDSCKSELA', - 'TMDS_TRANSMITTER_CONTROL_IDSCKSELB', - 'TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN', - 'TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK', - 'TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN', - 'TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK', - 'TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS', - 'TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS', - 'TMDS_TRANSMITTER_ENABLE_HPD_MASK', - 'TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK', - 'TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK', - 'TMDS_TRANSMITTER_HPD_MASK_NOT_OVERRIDE', - 'TMDS_TRANSMITTER_HPD_MASK_OVERRIDE', - 'TMDS_TRANSMITTER_HPD_NOT_OVERRIDE_PLL_ENABLE', - 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE', - 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_CON', - 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_DISCON', - 'TMDS_TRANSMITTER_IDSCKSELA_USE_IDCLK', - 'TMDS_TRANSMITTER_IDSCKSELA_USE_IPIXCLK', - 'TMDS_TRANSMITTER_IDSCKSELB_USE_IDCLK', - 'TMDS_TRANSMITTER_IDSCKSELB_USE_IPIXCLK', - 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_NOT_OVERRIDE', - 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_OVERRIDE', - 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_NOT_OVERRIDE', - 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_OVERRIDE', - 'TMDS_TRANSMITTER_PLLSEL_BY_HW', - 'TMDS_TRANSMITTER_PLLSEL_OVERWRITE_BY_SW', - 'TMDS_TRANSMITTER_PLL_NOT_RST_ON_HPD', - 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_DISABLE', - 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_ENABLE', - 'TMDS_TRANSMITTER_PLL_RST_ON_HPD', - 'TMDS_TRANSMITTER_TDCLK_FROM_PADS', - 'TMDS_TRANSMITTER_TDCLK_FROM_TMDS_TDCLK', - 'TMDS_TRANSMITTER_TMCLK_FROM_PADS', - 'TMDS_TRANSMITTER_TMCLK_FROM_TMDS_TMCLK', - 'TRANSFERRED_1024_BYTES', 'TRANSFERRED_128_BYTES', - 'TRANSFERRED_2048_BYTES', 'TRANSFERRED_256_BYTES', - 'TRANSFERRED_4096_BYTES', 'TRANSFERRED_512_BYTES', - 'TRANSFERRED_64_BYTES', 'TRANSFERRED_8192_BYTES', 'TRAPEZOIDS', - 'TRISTRIP', 'TVX_DATA_FORMAT', 'TVX_DST_SEL', 'TVX_DstSel_0f', - 'TVX_DstSel_1f', 'TVX_DstSel_Mask', 'TVX_DstSel_RESERVED_6', - 'TVX_DstSel_W', 'TVX_DstSel_X', 'TVX_DstSel_Y', 'TVX_DstSel_Z', - 'TVX_ENDIAN_SWAP', 'TVX_EndianSwap_8in16', 'TVX_EndianSwap_8in32', - 'TVX_EndianSwap_8in64', 'TVX_EndianSwap_None', 'TVX_FMT_1', - 'TVX_FMT_10_10_10_2', 'TVX_FMT_10_11_11', - 'TVX_FMT_10_11_11_FLOAT', 'TVX_FMT_11_11_10', - 'TVX_FMT_11_11_10_FLOAT', 'TVX_FMT_16', 'TVX_FMT_16_16', - 'TVX_FMT_16_16_16', 'TVX_FMT_16_16_16_16', - 'TVX_FMT_16_16_16_16_FLOAT', 'TVX_FMT_16_16_16_FLOAT', - 'TVX_FMT_16_16_FLOAT', 'TVX_FMT_16_FLOAT', 'TVX_FMT_1_5_5_5', - 'TVX_FMT_1_REVERSED', 'TVX_FMT_24_8', 'TVX_FMT_24_8_FLOAT', - 'TVX_FMT_2_10_10_10', 'TVX_FMT_32', 'TVX_FMT_32_32', - 'TVX_FMT_32_32_32', 'TVX_FMT_32_32_32_32', - 'TVX_FMT_32_32_32_32_FLOAT', 'TVX_FMT_32_32_32_FLOAT', - 'TVX_FMT_32_32_FLOAT', 'TVX_FMT_32_AS_8', 'TVX_FMT_32_AS_8_8', - 'TVX_FMT_32_FLOAT', 'TVX_FMT_3_3_2', 'TVX_FMT_4_4', - 'TVX_FMT_4_4_4_4', 'TVX_FMT_5_5_5_1', 'TVX_FMT_5_6_5', - 'TVX_FMT_5_9_9_9_SHAREDEXP', 'TVX_FMT_6_5_5', 'TVX_FMT_8', - 'TVX_FMT_8_24', 'TVX_FMT_8_24_FLOAT', 'TVX_FMT_8_8', - 'TVX_FMT_8_8_8', 'TVX_FMT_8_8_8_8', 'TVX_FMT_APC0', - 'TVX_FMT_APC1', 'TVX_FMT_APC2', 'TVX_FMT_APC3', 'TVX_FMT_APC4', - 'TVX_FMT_APC5', 'TVX_FMT_APC6', 'TVX_FMT_APC7', 'TVX_FMT_BC1', - 'TVX_FMT_BC2', 'TVX_FMT_BC3', 'TVX_FMT_BC4', 'TVX_FMT_BC5', - 'TVX_FMT_BG_RG', 'TVX_FMT_CTX1', 'TVX_FMT_GB_GR', - 'TVX_FMT_INVALID', 'TVX_FMT_RESERVED_33', 'TVX_FMT_RESERVED_36', - 'TVX_FMT_RESERVED_4', 'TVX_FMT_RESERVED_63', - 'TVX_FMT_X24_8_32_FLOAT', 'TVX_INST', 'TVX_Inst_Gather4', - 'TVX_Inst_Gather4_C', 'TVX_Inst_Gather4_C_O', - 'TVX_Inst_Gather4_O', 'TVX_Inst_GetBufferResInfo', - 'TVX_Inst_GetGradientsH', 'TVX_Inst_GetGradientsV', - 'TVX_Inst_GetLOD', 'TVX_Inst_GetNumberOfSamples', - 'TVX_Inst_GetTextureResInfo', 'TVX_Inst_KeepGradients', - 'TVX_Inst_LD', 'TVX_Inst_NormalVertexFetch', 'TVX_Inst_Pass', - 'TVX_Inst_RESERVED_15', 'TVX_Inst_RESERVED_2', 'TVX_Inst_Sample', - 'TVX_Inst_Sample_C', 'TVX_Inst_Sample_C_G', - 'TVX_Inst_Sample_C_G_LB', 'TVX_Inst_Sample_C_L', - 'TVX_Inst_Sample_C_LB', 'TVX_Inst_Sample_C_LZ', - 'TVX_Inst_Sample_G', 'TVX_Inst_Sample_G_LB', 'TVX_Inst_Sample_L', - 'TVX_Inst_Sample_LB', 'TVX_Inst_Sample_LZ', - 'TVX_Inst_SemanticVertexFetch', 'TVX_Inst_SetGradientsH', - 'TVX_Inst_SetGradientsV', 'TVX_Inst_SetTextureOffsets', - 'TVX_NUM_FORMAT_ALL', 'TVX_NumFormatAll_Int', - 'TVX_NumFormatAll_Norm', 'TVX_NumFormatAll_RESERVED_3', - 'TVX_NumFormatAll_Scaled', 'TVX_SRC_SEL', 'TVX_SRFModeAll_NZ', - 'TVX_SRFModeAll_ZCMO', 'TVX_SRF_MODE_ALL', 'TVX_SrcSel_0f', - 'TVX_SrcSel_1f', 'TVX_SrcSel_W', 'TVX_SrcSel_X', 'TVX_SrcSel_Y', - 'TVX_SrcSel_Z', 'TVX_TYPE', 'TVX_Type_InvalidTextureResource', - 'TVX_Type_InvalidVertexBuffer', 'TVX_Type_ValidTextureResource', - 'TVX_Type_ValidVertexBuffer', 'TWO_BANKS', 'TWO_FRAGMENTS', - 'TWO_PIPES', 'TWO_RB_PER_SE', 'TWO_SHADER_ENGINS', 'TileSplit', - 'TileType', 'UCONFIG_SPACE_END', 'UCONFIG_SPACE_START', - 'UNCACHED_RD', 'UNCACHED_WR', 'UNDEF', 'UNSIGNED', - 'UTCL0FaultType', 'UTCL0RequestType', 'UTCL0_TYPE_BYPASS', - 'UTCL0_TYPE_NORMAL', 'UTCL0_TYPE_SHOOTDOWN', - 'UTCL0_XNACK_NO_RETRY', 'UTCL0_XNACK_PRT', 'UTCL0_XNACK_RETRY', - 'UTCL0_XNACK_SUCCESS', 'UTCL1FaultType', 'UTCL1PerfSel', - 'UTCL1RequestType', 'UTCL1_PERF_SEL_BYPASS_REQS', - 'UTCL1_PERF_SEL_HITS', 'UTCL1_PERF_SEL_HIT_INV_FILTER_REQS', - 'UTCL1_PERF_SEL_MISSES', 'UTCL1_PERF_SEL_NONE', - 'UTCL1_PERF_SEL_NONRANGE_INV_REQS', - 'UTCL1_PERF_SEL_NUM_BIGK_PAGES', - 'UTCL1_PERF_SEL_NUM_SMALLK_PAGES', - 'UTCL1_PERF_SEL_OUTSTANDING_UTCL2_REQS_ACCUM', - 'UTCL1_PERF_SEL_RANGE_INV_REQS', 'UTCL1_PERF_SEL_REQS', - 'UTCL1_PERF_SEL_STALL_MH_CAM_FULL', - 'UTCL1_PERF_SEL_STALL_MH_OFIFO_FULL', - 'UTCL1_PERF_SEL_STALL_ON_UTCL2_CREDITS', - 'UTCL1_PERF_SEL_TOTAL_UTCL2_REQS', 'UTCL1_TYPE_BYPASS', - 'UTCL1_TYPE_NORMAL', 'UTCL1_TYPE_SHOOTDOWN', - 'UTCL1_XNACK_NO_RETRY', 'UTCL1_XNACK_PRT', 'UTCL1_XNACK_RETRY', - 'UTCL1_XNACK_SUCCESS', 'UVDFC_BITSTREAM_ADDR', - 'UVDFC_BITSTREAM_SIZE', 'UVDFC_DECODED_ADDR', - 'UVDFC_DISPLAY_ADDR', 'UVDFC_DISPLAY_PITCH', - 'UVDFC_DISPLAY_TILING', 'UVDFC_EOD', 'UVDFC_FENCE', - 'UVDFC_ITBUF_ADDR', 'UVDFC_MBLOCK_ADDR', 'UVDFC_TRAP', - 'UVDFirmwareCommand', 'VC_AND_TC', 'VC_ONLY', - 'VGT_CACHE_INVALID_MODE', 'VGT_DETECT_ONE', 'VGT_DETECT_ZERO', - 'VGT_DIST_MODE', 'VGT_DI_INDEX_SIZE', 'VGT_DI_MAJOR_MODE_SELECT', - 'VGT_DI_PRIM_TYPE', 'VGT_DI_SOURCE_SELECT', 'VGT_DMA_BUF_MEM', - 'VGT_DMA_BUF_RING', 'VGT_DMA_BUF_SETUP', 'VGT_DMA_BUF_TYPE', - 'VGT_DMA_PTR_UPDATE', 'VGT_DMA_SWAP_16_BIT', - 'VGT_DMA_SWAP_32_BIT', 'VGT_DMA_SWAP_MODE', 'VGT_DMA_SWAP_NONE', - 'VGT_DMA_SWAP_WORD', 'VGT_EVENT_TYPE', 'VGT_FLUSH', - 'VGT_GROUP_CONV_SEL', 'VGT_GRP_2D_COPY_RECT_V0', - 'VGT_GRP_2D_COPY_RECT_V1', 'VGT_GRP_2D_COPY_RECT_V2', - 'VGT_GRP_2D_COPY_RECT_V3', 'VGT_GRP_2D_FILL_RECT', - 'VGT_GRP_2D_LINE', 'VGT_GRP_2D_RECT', 'VGT_GRP_2D_TRI', - 'VGT_GRP_3D_LINE', 'VGT_GRP_3D_LINE_ADJ', 'VGT_GRP_3D_PATCH', - 'VGT_GRP_3D_POINT', 'VGT_GRP_3D_QUAD', 'VGT_GRP_3D_RECT', - 'VGT_GRP_3D_TRI', 'VGT_GRP_3D_TRI_ADJ', 'VGT_GRP_AUTO_PRIM', - 'VGT_GRP_FAN', 'VGT_GRP_FIX_1_23_TO_FLOAT', 'VGT_GRP_FLOAT_32', - 'VGT_GRP_INDEX_16', 'VGT_GRP_INDEX_32', 'VGT_GRP_LIST', - 'VGT_GRP_LOOP', 'VGT_GRP_POLYGON', 'VGT_GRP_PRIM_INDEX_LINE', - 'VGT_GRP_PRIM_INDEX_QUAD', 'VGT_GRP_PRIM_INDEX_TRI', - 'VGT_GRP_PRIM_ORDER', 'VGT_GRP_PRIM_TYPE', 'VGT_GRP_SINT_16', - 'VGT_GRP_SINT_32', 'VGT_GRP_STRIP', 'VGT_GRP_UINT_16', - 'VGT_GRP_UINT_32', 'VGT_GS_CUT_MODE', 'VGT_GS_MODE_TYPE', - 'VGT_GS_OUTPRIM_TYPE', 'VGT_INDEX_16', 'VGT_INDEX_32', - 'VGT_INDEX_8', 'VGT_INDEX_TYPE_MODE', 'VGT_OUTPATH_GS_BLOCK', - 'VGT_OUTPATH_HS_BLOCK', 'VGT_OUTPATH_PRIM_GEN', - 'VGT_OUTPATH_SELECT', 'VGT_OUTPATH_TE_GS_BLOCK', - 'VGT_OUTPATH_TE_OUTPUT', 'VGT_OUTPATH_TE_PRIM_GEN', - 'VGT_OUTPATH_VTX_REUSE', 'VGT_OUT_2D_RECT', 'VGT_OUT_LINE', - 'VGT_OUT_LINE_ADJ', 'VGT_OUT_PATCH', 'VGT_OUT_POINT', - 'VGT_OUT_PRIM_TYPE', 'VGT_OUT_RECT_V0', 'VGT_OUT_RECT_V1', - 'VGT_OUT_RECT_V2', 'VGT_OUT_RECT_V3', 'VGT_OUT_TRI', - 'VGT_OUT_TRI_ADJ', 'VGT_POLICY_BYPASS', 'VGT_POLICY_LRU', - 'VGT_POLICY_STREAM', 'VGT_RDREQ_POLICY', 'VGT_STAGES_ES_EN', - 'VGT_STAGES_GS_EN', 'VGT_STAGES_HS_EN', 'VGT_STAGES_LS_EN', - 'VGT_STAGES_VS_EN', 'VGT_STREAMOUT_RESET', 'VGT_STREAMOUT_SYNC', - 'VGT_TESS_PARTITION', 'VGT_TESS_TOPOLOGY', 'VGT_TESS_TYPE', - 'VGT_TE_PRIM_INDEX_LINE', 'VGT_TE_PRIM_INDEX_QUAD', - 'VGT_TE_PRIM_INDEX_TRI', 'VGT_TE_QUAD', 'VID_ENHANCED_MODE', - 'VID_NORMAL_FRAME_MODE', 'VID_STREAM_DISABLE_MASKED', - 'VID_STREAM_DISABLE_UNMASK', 'VMEMCMD_RETURN_IN_ORDER', - 'VMEMCMD_RETURN_IN_ORDER_READ', 'VMEMCMD_RETURN_ORDER', - 'VMEMCMD_RETURN_OUT_OF_ORDER', 'VMID_SZ', 'VMPG_SIZE', - 'VMPG_SIZE_4KB', 'VMPG_SIZE_64KB', 'VREADY_AT_OR_AFTER_VSYNC', - 'VREADY_BEFORE_VSYNC', 'VSYNC_CNT_LATCH_MASK', - 'VSYNC_CNT_LATCH_MASK_0', 'VSYNC_CNT_LATCH_MASK_1', - 'VSYNC_CNT_REFCLK_SEL', 'VSYNC_CNT_REFCLK_SEL_0', - 'VSYNC_CNT_REFCLK_SEL_1', 'VSYNC_CNT_RESET_SEL', - 'VSYNC_CNT_RESET_SEL_0', 'VSYNC_CNT_RESET_SEL_1', - 'VS_PARTIAL_FLUSH', 'VS_PS', 'VS_STAGE_COPY_SHADER', - 'VS_STAGE_DS', 'VS_STAGE_REAL', 'VTG_SEL_0', 'VTG_SEL_1', - 'VTG_SEL_2', 'VTG_SEL_3', 'VTG_SEL_4', 'VTG_SEL_5', 'VTX_CLAMP', - 'VTX_Clamp_ClampToNAN', 'VTX_Clamp_ClampToZero', 'VTX_FETCH_TYPE', - 'VTX_FORMAT_COMP_ALL', 'VTX_FetchType_InstanceData', - 'VTX_FetchType_NoIndexOffset', 'VTX_FetchType_RESERVED_3', - 'VTX_FetchType_VertexData', 'VTX_FormatCompAll_Signed', - 'VTX_FormatCompAll_Unsigned', 'VTX_MEM_REQUEST_SIZE', - 'VTX_MemRequestSize_32B', 'VTX_MemRequestSize_64B', - 'WBSCL_BACKPRESSURE_CNT_DISABLE', 'WBSCL_BACKPRESSURE_CNT_ENABLE', - 'WBSCL_BACKPRESSURE_CNT_EN_ENUM', 'WBSCL_COEF_CHROMA_HORZ_FILTER', - 'WBSCL_COEF_CHROMA_VERT_FILTER', 'WBSCL_COEF_FILTER_TYPE_SEL', - 'WBSCL_COEF_LUMA_HORZ_FILTER', 'WBSCL_COEF_LUMA_VERT_FILTER', - 'WBSCL_COEF_RAM_FILTER_TYPE_ENUM', - 'WBSCL_COEF_RAM_FILTER_TYPE_HC', 'WBSCL_COEF_RAM_FILTER_TYPE_HL', - 'WBSCL_COEF_RAM_FILTER_TYPE_VC', 'WBSCL_COEF_RAM_FILTER_TYPE_VL', - 'WBSCL_COEF_RAM_PHASE0', 'WBSCL_COEF_RAM_PHASE1', - 'WBSCL_COEF_RAM_PHASE2', 'WBSCL_COEF_RAM_PHASE3', - 'WBSCL_COEF_RAM_PHASE4', 'WBSCL_COEF_RAM_PHASE5', - 'WBSCL_COEF_RAM_PHASE6', 'WBSCL_COEF_RAM_PHASE7', - 'WBSCL_COEF_RAM_PHASE8', 'WBSCL_COEF_RAM_PHASE_ENUM', - 'WBSCL_COEF_RAM_RD_SEL_0', 'WBSCL_COEF_RAM_RD_SEL_1', - 'WBSCL_COEF_RAM_RD_SEL_ENUM', 'WBSCL_COEF_RAM_SEL_0', - 'WBSCL_COEF_RAM_SEL_1', 'WBSCL_COEF_RAM_SEL_ENUM', - 'WBSCL_COEF_RAM_TAP_COEF_DISABLE', - 'WBSCL_COEF_RAM_TAP_COEF_ENABLE', - 'WBSCL_COEF_RAM_TAP_COEF_EN_ENUM', 'WBSCL_COEF_RAM_TAP_PAIR_IDX0', - 'WBSCL_COEF_RAM_TAP_PAIR_IDX1', 'WBSCL_COEF_RAM_TAP_PAIR_IDX2', - 'WBSCL_COEF_RAM_TAP_PAIR_IDX3', 'WBSCL_COEF_RAM_TAP_PAIR_IDX4', - 'WBSCL_COEF_RAM_TAP_PAIR_IDX5', - 'WBSCL_COEF_RAM_TAP_PAIR_IDX_ENUM', - 'WBSCL_DATA_OVERFLOW_INT_TYPE_ENUM', - 'WBSCL_DATA_OVERFLOW_INT_TYPE_HW', - 'WBSCL_DATA_OVERFLOW_INT_TYPE_REG', - 'WBSCL_HOST_CONFLICT_INT_TYPE_ENUM', - 'WBSCL_HOST_CONFLICT_INT_TYPE_HW', - 'WBSCL_HOST_CONFLICT_INT_TYPE_REG', 'WBSCL_LB_MEM_PWR_FORCE_DS', - 'WBSCL_LB_MEM_PWR_FORCE_ENUM', 'WBSCL_LB_MEM_PWR_FORCE_LS', - 'WBSCL_LB_MEM_PWR_FORCE_NO', 'WBSCL_LB_MEM_PWR_FORCE_SD', - 'WBSCL_LB_MEM_PWR_MODE_SEL_DS', 'WBSCL_LB_MEM_PWR_MODE_SEL_ENUM', - 'WBSCL_LB_MEM_PWR_MODE_SEL_LS', 'WBSCL_LB_MEM_PWR_MODE_SEL_ON', - 'WBSCL_LB_MEM_PWR_MODE_SEL_SD', 'WBSCL_LUT_MEM_PWR_STATE_ENUM', - 'WBSCL_LUT_MEM_PWR_STATE_LS', 'WBSCL_LUT_MEM_PWR_STATE_ON', - 'WBSCL_LUT_MEM_PWR_STATE_RESERVED2', - 'WBSCL_LUT_MEM_PWR_STATE_RESERVED3', 'WBSCL_MEM_PWR_STATE_DS', - 'WBSCL_MEM_PWR_STATE_ENUM', 'WBSCL_MEM_PWR_STATE_LS', - 'WBSCL_MEM_PWR_STATE_ON', 'WBSCL_MEM_PWR_STATE_SD', - 'WBSCL_MODE_SCALING_444_BYPASS', - 'WBSCL_MODE_SCALING_444_RGB_ENABLE', - 'WBSCL_MODE_SCALING_444_YCBCR_ENABLE', - 'WBSCL_MODE_SCALING_YCBCR_ENABLE', 'WBSCL_MODE_SEL', - 'WBSCL_NUM_OF_TAPS0', 'WBSCL_NUM_OF_TAPS1', 'WBSCL_NUM_OF_TAPS10', - 'WBSCL_NUM_OF_TAPS11', 'WBSCL_NUM_OF_TAPS2', 'WBSCL_NUM_OF_TAPS3', - 'WBSCL_NUM_OF_TAPS4', 'WBSCL_NUM_OF_TAPS5', 'WBSCL_NUM_OF_TAPS6', - 'WBSCL_NUM_OF_TAPS7', 'WBSCL_NUM_OF_TAPS8', 'WBSCL_NUM_OF_TAPS9', - 'WBSCL_NUM_OF_TAPS_ENUM', 'WBSCL_OUTSIDE_PIX_STRATEGY_BLACK', - 'WBSCL_OUTSIDE_PIX_STRATEGY_EDGE', - 'WBSCL_OUTSIDE_PIX_STRATEGY_ENUM', 'WBSCL_PIXEL_DEPTH', - 'WBSCL_STATUS_ACK_CLR', 'WBSCL_STATUS_ACK_ENUM', - 'WBSCL_STATUS_ACK_NCLR', 'WBSCL_STATUS_MASK_DISABLE', - 'WBSCL_STATUS_MASK_ENABLE', 'WBSCL_STATUS_MASK_ENUM', - 'WBSCL_TEST_CRC_CONT_DISABLE', 'WBSCL_TEST_CRC_CONT_ENABLE', - 'WBSCL_TEST_CRC_CONT_EN_ENUM', 'WBSCL_TEST_CRC_DISABLE', - 'WBSCL_TEST_CRC_ENABLE', 'WBSCL_TEST_CRC_EN_ENUM', - 'WBSCL_TEST_CRC_MASKED', 'WBSCL_TEST_CRC_MASK_ENUM', - 'WBSCL_TEST_CRC_UNMASKED', 'WB_CLK_GATE_DISABLE', - 'WB_CLK_GATE_DIS_ENUM', 'WB_CLK_GATE_ENABLE', 'WB_ENABLE_ENUM', - 'WB_EN_DISABLE', 'WB_EN_ENABLE', 'WB_MEM_PWR_DISABLE', - 'WB_MEM_PWR_DIS_ENUM', 'WB_MEM_PWR_ENABLE', - 'WB_RAM_PW_SAVE_MODE_ENUM', 'WB_RAM_PW_SAVE_MODE_LS', - 'WB_RAM_PW_SAVE_MODE_SD', 'WB_SOFT_RESET_ENUM', - 'WB_SOFT_RESET_NEG', 'WB_SOFT_RESET_POS', 'WB_TEST_CLK_SEL_ENUM', - 'WB_TEST_CLK_SEL_PERM', 'WB_TEST_CLK_SEL_REG', - 'WB_TEST_CLK_SEL_WB', 'WB_TEST_CLK_SEL_WBSCL', - 'WD_IA_DRAW_REG_XFER', 'WD_IA_DRAW_REG_XFER_GE_CNTL', - 'WD_IA_DRAW_REG_XFER_IA_MULTI_VGT_PARAM', - 'WD_IA_DRAW_REG_XFER_VGT_INSTANCE_BASE_ID', - 'WD_IA_DRAW_REG_XFER_VGT_MULTI_PRIM_IB_RESET_EN', - 'WD_IA_DRAW_SOURCE', 'WD_IA_DRAW_SOURCE_AUTO', - 'WD_IA_DRAW_SOURCE_DMA', 'WD_IA_DRAW_SOURCE_IMMD', - 'WD_IA_DRAW_SOURCE_OPAQ', 'WD_IA_DRAW_TYPE', - 'WD_IA_DRAW_TYPE_DI_MM0', 'WD_IA_DRAW_TYPE_EVENT_ADDR', - 'WD_IA_DRAW_TYPE_EVENT_INIT', 'WD_IA_DRAW_TYPE_IMM_DATA', - 'WD_IA_DRAW_TYPE_INDX_OFF', 'WD_IA_DRAW_TYPE_MAX_INDX', - 'WD_IA_DRAW_TYPE_MIN_INDX', 'WD_IA_DRAW_TYPE_REG_XFER', - 'WRITE_BASE_ONLY', 'WRITE_BOTH', 'WritePolicy', 'XNORM', - 'XNORM_A', 'XNORM_B', 'XTAL_REF_CLOCK_SOURCE_SEL', - 'XTAL_REF_CLOCK_SOURCE_SEL_DCCGREFCLK', - 'XTAL_REF_CLOCK_SOURCE_SEL_XTALIN', 'XTAL_REF_SEL', - 'XTAL_REF_SEL_1X', 'XTAL_REF_SEL_2X', 'Y10_CbCr1010_420_PLANAR', - 'Y10_CrCb1010_420_PLANAR', 'Y12_CbCr1212_420_PLANAR', - 'Y12_CrCb1212_420_PLANAR', 'Y8_CbCr88_420_PLANAR', - 'Y8_CrCb88_420_PLANAR', 'YCbYCr10101010_422_PACKED', - 'YCbYCr12121212_422_PACKED', 'YCbYCr8888_422_PACKED', - 'YCrCbA16161616_10LSB', 'YCrCbA16161616_10MSB', - 'YCrCbA16161616_12LSB', 'YCrCbA16161616_12MSB', 'YCrCbA8888', - 'YCrYCb10101010_422_PACKED', 'YCrYCb12121212_422_PACKED', - 'YCrYCb8888_422_PACKED', 'Y_G_DATA_ON_ALPHA_PORT', - 'Y_G_DATA_ON_CB_B_PORT', 'Y_G_DATA_ON_CR_R_PORT', - 'Y_G_DATA_ON_Y_G_PORT', 'ZFormat', 'ZLimitSumm', 'ZModeForce', - 'ZOrder', 'ZPASS_DISABLE', 'ZPASS_DONE', 'ZPASS_PIXELS', - 'ZPASS_SAMPLES', 'ZSamplePosition', 'Z_16', 'Z_24', 'Z_32_FLOAT', - 'Z_INVALID', 'Z_SAMPLE_CENTER', 'Z_SAMPLE_CENTROID', - 'ZpassControl', '_navi10_ENUM_HEADER', 'ge_assembler_busy', - 'ge_assembler_stalled', 'ge_cm_reading_stalled', - 'ge_cm_stalled_by_gog', 'ge_cm_stalled_by_gsfetch_done', - 'ge_dma_busy', 'ge_dma_lat_bin_0', 'ge_dma_lat_bin_1', - 'ge_dma_lat_bin_2', 'ge_dma_lat_bin_3', 'ge_dma_lat_bin_4', - 'ge_dma_lat_bin_5', 'ge_dma_lat_bin_6', 'ge_dma_lat_bin_7', - 'ge_dma_return', 'ge_dma_utcl1_consecutive_retry_event', - 'ge_dma_utcl1_request_event', 'ge_dma_utcl1_retry_event', - 'ge_dma_utcl1_stall_event', 'ge_dma_utcl1_stall_utcl2_event', - 'ge_dma_utcl1_translation_hit_event', - 'ge_dma_utcl1_translation_miss_event', - 'ge_dma_utcl2_stall_on_trans', 'ge_dma_utcl2_trans_ack', - 'ge_dma_utcl2_trans_xnack', 'ge_ds_cache_hits', 'ge_ds_prims', - 'ge_es_done', 'ge_es_done_latency', 'ge_es_flush', - 'ge_es_ring_high_water_mark', 'ge_es_thread_groups', - 'ge_esthread_stalled_es_rb_full', 'ge_esthread_stalled_spi_bp', - 'ge_esvert_stalled_es_tbl', 'ge_esvert_stalled_gs_event', - 'ge_esvert_stalled_gs_tbl', 'ge_esvert_stalled_gsprim', - 'ge_gea_dma_starved', 'ge_gog_busy', 'ge_gog_out_indx_stalled', - 'ge_gog_out_prim_stalled', 'ge_gog_vs_tbl_stalled', - 'ge_gs_cache_hits', 'ge_gs_counters_avail_stalled', 'ge_gs_done', - 'ge_gs_done_latency', 'ge_gs_event_stall', - 'ge_gs_issue_rtr_stalled', 'ge_gs_rb_space_avail_stalled', - 'ge_gs_ring_high_water_mark', 'ge_gsprim_stalled_es_tbl', - 'ge_gsprim_stalled_esvert', 'ge_gsprim_stalled_gs_event', - 'ge_gsprim_stalled_gs_tbl', 'ge_gsthread_stalled', 'ge_hs_done', - 'ge_hs_done_latency', 'ge_hs_done_se0', 'ge_hs_done_se1', - 'ge_hs_done_se2_reserved', 'ge_hs_done_se3_reserved', - 'ge_hs_tfm_stall', 'ge_hs_tgs_active_high_water_mark', - 'ge_hs_thread_groups', 'ge_inside_tf_bin_0', 'ge_inside_tf_bin_1', - 'ge_inside_tf_bin_2', 'ge_inside_tf_bin_3', 'ge_inside_tf_bin_4', - 'ge_inside_tf_bin_5', 'ge_inside_tf_bin_6', 'ge_inside_tf_bin_7', - 'ge_inside_tf_bin_8', 'ge_ls_done', 'ge_ls_done_latency', - 'ge_null_patch', 'ge_pa_clipp_eop', 'ge_pa_clipp_is_event', - 'ge_pa_clipp_new_vtx_vect', 'ge_pa_clipp_null_prim', - 'ge_pa_clipp_send', 'ge_pa_clipp_send_not_event', - 'ge_pa_clipp_stalled', 'ge_pa_clipp_starved_busy', - 'ge_pa_clipp_starved_idle', 'ge_pa_clipp_valid_prim', - 'ge_pa_clips_send', 'ge_pa_clips_stalled', 'ge_pa_clipv_send', - 'ge_pa_clipv_stalled', 'ge_rbiu_di_fifo_stalled', - 'ge_rbiu_di_fifo_starved', 'ge_rbiu_dr_fifo_stalled', - 'ge_rbiu_dr_fifo_starved', 'ge_reused_es_indices', - 'ge_reused_vs_indices', 'ge_sclk_core_vld', 'ge_sclk_gs_vld', - 'ge_sclk_input_vld', 'ge_sclk_leg_gs_arb_vld', 'ge_sclk_ngg_vld', - 'ge_sclk_reg_vld', 'ge_sclk_te11_vld', 'ge_sclk_vr_vld', - 'ge_sclk_wd_te11_vld', 'ge_spi_esvert_eov', - 'ge_spi_esvert_stalled', 'ge_spi_esvert_starved_busy', - 'ge_spi_esvert_valid', 'ge_spi_eswave_is_event', - 'ge_spi_eswave_send', 'ge_spi_gsprim_cont', 'ge_spi_gsprim_eov', - 'ge_spi_gsprim_stalled', 'ge_spi_gsprim_starved_busy', - 'ge_spi_gsprim_starved_idle', 'ge_spi_gsprim_valid', - 'ge_spi_gssubgrp_is_event', 'ge_spi_gssubgrp_send', - 'ge_spi_gswave_is_event', 'ge_spi_gswave_send', - 'ge_spi_hsvert_eov', 'ge_spi_hsvert_stalled', - 'ge_spi_hsvert_starved_busy', 'ge_spi_hsvert_valid', - 'ge_spi_hswave_is_event', 'ge_spi_hswave_send', - 'ge_spi_lsvert_eov', 'ge_spi_lsvert_stalled', - 'ge_spi_lsvert_starved_busy', 'ge_spi_lsvert_starved_idle', - 'ge_spi_lsvert_valid', 'ge_spi_lswave_is_event', - 'ge_spi_lswave_send', 'ge_spi_vsvert_eov', 'ge_spi_vsvert_send', - 'ge_spi_vsvert_stalled', 'ge_spi_vsvert_starved_busy', - 'ge_spi_vsvert_starved_idle', 'ge_spi_vswave_is_event', - 'ge_spi_vswave_send', 'ge_starved_on_hs_done', 'ge_stat_busy', - 'ge_stat_combined_busy', 'ge_stat_no_dma_busy', - 'ge_strmout_stalled', 'ge_te11_busy', 'ge_te11_starved', - 'ge_tfreq_lat_bin_0', 'ge_tfreq_lat_bin_1', 'ge_tfreq_lat_bin_2', - 'ge_tfreq_lat_bin_3', 'ge_tfreq_lat_bin_4', 'ge_tfreq_lat_bin_5', - 'ge_tfreq_lat_bin_6', 'ge_tfreq_lat_bin_7', - 'ge_tfreq_utcl1_consecutive_retry_event', - 'ge_tfreq_utcl1_request_event', 'ge_tfreq_utcl1_retry_event', - 'ge_tfreq_utcl1_stall_event', 'ge_tfreq_utcl1_stall_utcl2_event', - 'ge_tfreq_utcl1_translation_hit_event', - 'ge_tfreq_utcl1_translation_miss_event', - 'ge_tfreq_utcl2_stall_on_trans', 'ge_tfreq_utcl2_trans_ack', - 'ge_tfreq_utcl2_trans_xnack', 'ge_vs_cache_hits', 'ge_vs_done', - 'ge_vs_pc_stall', 'ge_vs_table_high_water_mark', - 'ge_vs_thread_groups', 'ge_vsvert_api_send', 'ge_vsvert_ds_send', - 'ge_wait_for_es_done_stalled', 'ge_waveid_stalled'] diff --git a/tinygrad_repo/tinygrad/runtime/autogen/am/soc21.py b/tinygrad_repo/tinygrad/runtime/autogen/am/soc21.py deleted file mode 100644 index 34a95940d..000000000 --- a/tinygrad_repo/tinygrad/runtime/autogen/am/soc21.py +++ /dev/null @@ -1,39083 +0,0 @@ -# mypy: ignore-errors -# -*- coding: utf-8 -*- -# -# TARGET arch is: [] -# WORD_SIZE is: 8 -# POINTER_SIZE is: 8 -# LONGDOUBLE_SIZE is: 16 -# -import ctypes - - - - -_soc21_ENUM_HEADER = True # macro -SQ_WAVE_TYPE_PS0 = 0x00000000 # macro -SQIND_GLOBAL_REGS_OFFSET = 0x00000000 # macro -SQIND_GLOBAL_REGS_SIZE = 0x00000008 # macro -SQIND_LOCAL_REGS_OFFSET = 0x00000008 # macro -SQIND_LOCAL_REGS_SIZE = 0x00000008 # macro -SQIND_WAVE_HWREGS_OFFSET = 0x00000100 # macro -SQIND_WAVE_HWREGS_SIZE = 0x00000100 # macro -SQIND_WAVE_SGPRS_OFFSET = 0x00000200 # macro -SQIND_WAVE_SGPRS_SIZE = 0x00000200 # macro -SQIND_WAVE_VGPRS_OFFSET = 0x00000400 # macro -SQIND_WAVE_VGPRS_SIZE = 0x00000400 # macro -SQ_GFXDEC_BEGIN = 0x0000a000 # macro -SQ_GFXDEC_END = 0x0000c000 # macro -SQ_GFXDEC_STATE_ID_SHIFT = 0x0000000a # macro -SQDEC_BEGIN = 0x00002300 # macro -SQDEC_END = 0x000023ff # macro -SQPERFSDEC_BEGIN = 0x0000d9c0 # macro -SQPERFSDEC_END = 0x0000da40 # macro -SQPERFDDEC_BEGIN = 0x0000d1c0 # macro -SQPERFDDEC_END = 0x0000d240 # macro -SQGFXUDEC_BEGIN = 0x0000c330 # macro -SQGFXUDEC_END = 0x0000c380 # macro -SQPWRDEC_BEGIN = 0x0000f08c # macro -SQPWRDEC_END = 0x0000f094 # macro -SQ_DISPATCHER_GFX_MIN = 0x00000010 # macro -SQ_DISPATCHER_GFX_CNT_PER_RING = 0x00000008 # macro -SQ_MAX_PGM_SGPRS = 0x00000068 # macro -SQ_MAX_PGM_VGPRS = 0x00000100 # macro -SQ_EX_MODE_EXCP_VALU_BASE = 0x00000000 # macro -SQ_EX_MODE_EXCP_VALU_SIZE = 0x00000007 # macro -SQ_EX_MODE_EXCP_INVALID = 0x00000000 # macro -SQ_EX_MODE_EXCP_INPUT_DENORM = 0x00000001 # macro -SQ_EX_MODE_EXCP_DIV0 = 0x00000002 # macro -SQ_EX_MODE_EXCP_OVERFLOW = 0x00000003 # macro -SQ_EX_MODE_EXCP_UNDERFLOW = 0x00000004 # macro -SQ_EX_MODE_EXCP_INEXACT = 0x00000005 # macro -SQ_EX_MODE_EXCP_INT_DIV0 = 0x00000006 # macro -SQ_EX_MODE_EXCP_ADDR_WATCH0 = 0x00000007 # macro -SQ_EX_MODE_EXCP_MEM_VIOL = 0x00000008 # macro -SQ_EX_MODE_EXCP_HI_ADDR_WATCH1 = 0x00000000 # macro -SQ_EX_MODE_EXCP_HI_ADDR_WATCH2 = 0x00000001 # macro -SQ_EX_MODE_EXCP_HI_ADDR_WATCH3 = 0x00000002 # macro -INST_ID_PRIV_START = 0x80000000 # macro -INST_ID_ECC_INTERRUPT_MSG = 0xfffffff0 # macro -INST_ID_TTRACE_NEW_PC_MSG = 0xfffffff1 # macro -INST_ID_HW_TRAP = 0xfffffff2 # macro -INST_ID_KILL_SEQ = 0xfffffff3 # macro -INST_ID_SPI_WREXEC = 0xfffffff4 # macro -INST_ID_HW_TRAP_GET_TBA = 0xfffffff5 # macro -INST_ID_HOST_REG_TRAP_MSG = 0xfffffffe # macro -SIMM16_WAITCNT_EXP_CNT_START = 0x00000000 # macro -SIMM16_WAITCNT_EXP_CNT_SIZE = 0x00000003 # macro -SIMM16_WAITCNT_LGKM_CNT_START = 0x00000004 # macro -SIMM16_WAITCNT_LGKM_CNT_SIZE = 0x00000006 # macro -SIMM16_WAITCNT_VM_CNT_START = 0x0000000a # macro -SIMM16_WAITCNT_VM_CNT_SIZE = 0x00000006 # macro -SIMM16_WAITCNT_DEPCTR_SA_SDST_START = 0x00000000 # macro -SIMM16_WAITCNT_DEPCTR_SA_SDST_SIZE = 0x00000001 # macro -SIMM16_WAITCNT_DEPCTR_VA_VCC_START = 0x00000001 # macro -SIMM16_WAITCNT_DEPCTR_VA_VCC_SIZE = 0x00000001 # macro -SIMM16_WAITCNT_DEPCTR_VM_VSRC_START = 0x00000002 # macro -SIMM16_WAITCNT_DEPCTR_VM_VSRC_SIZE = 0x00000003 # macro -SIMM16_WAITCNT_DEPCTR_HOLD_CNT_START = 0x00000006 # macro -SIMM16_WAITCNT_DEPCTR_HOLD_CNT_SIZE = 0x00000001 # macro -SIMM16_WAITCNT_DEPCTR_VA_SSRC_START = 0x00000007 # macro -SIMM16_WAITCNT_DEPCTR_VA_SSRC_SIZE = 0x00000001 # macro -SIMM16_WAITCNT_DEPCTR_VA_SDST_START = 0x00000008 # macro -SIMM16_WAITCNT_DEPCTR_VA_SDST_SIZE = 0x00000003 # macro -SIMM16_WAITCNT_DEPCTR_VA_VDST_START = 0x0000000b # macro -SIMM16_WAITCNT_DEPCTR_VA_VDST_SIZE = 0x00000005 # macro -SIMM16_WAIT_EVENT_EXP_RDY_START = 0x00000000 # macro -SIMM16_WAIT_EVENT_EXP_RDY_SIZE = 0x00000001 # macro -SQ_WAVE_IB_DEP_SA_SDST_SIZE = 0x00000004 # macro -SQ_WAVE_IB_DEP_SA_EXEC_SIZE = 0x00000002 # macro -SQ_WAVE_IB_DEP_SA_M0_SIZE = 0x00000001 # macro -SQ_WAVE_IB_DEP_VM_VSRC_SIZE = 0x00000004 # macro -SQ_WAVE_IB_DEP_HOLD_CNT_SIZE = 0x00000001 # macro -SQ_WAVE_IB_DEP_VA_SSRC_SIZE = 0x00000003 # macro -SQ_WAVE_IB_DEP_VA_SDST_SIZE = 0x00000004 # macro -SQ_WAVE_IB_DEP_VA_VCC_SIZE = 0x00000003 # macro -SQ_WAVE_IB_DEP_VA_EXEC_SIZE = 0x00000002 # macro -SQ_WAVE_IB_DEP_VA_VDST_SIZE = 0x00000005 # macro -SQ_WAVE_IB_DEP_LDS_DIR_SIZE = 0x00000003 # macro -SQ_EDC_FUE_CNTL_SIMD0 = 0x00000000 # macro -SQ_EDC_FUE_CNTL_SIMD1 = 0x00000001 # macro -SQ_EDC_FUE_CNTL_SIMD2 = 0x00000002 # macro -SQ_EDC_FUE_CNTL_SIMD3 = 0x00000003 # macro -SQ_EDC_FUE_CNTL_SQ = 0x00000004 # macro -SQ_EDC_FUE_CNTL_LDS = 0x00000005 # macro -SQ_EDC_FUE_CNTL_TD = 0x00000006 # macro -SQ_EDC_FUE_CNTL_TA = 0x00000007 # macro -SQ_EDC_FUE_CNTL_TCP = 0x00000008 # macro -CSDATA_TYPE_WIDTH = 0x00000002 # macro -CSDATA_ADDR_WIDTH = 0x00000007 # macro -CSDATA_DATA_WIDTH = 0x00000020 # macro -CSCNTL_TYPE_WIDTH = 0x00000002 # macro -CSCNTL_ADDR_WIDTH = 0x00000007 # macro -CSCNTL_DATA_WIDTH = 0x00000020 # macro -GSTHREADID_SIZE = 0x00000002 # macro -GB_TILING_CONFIG_TABLE_SIZE = 0x00000020 # macro -GB_TILING_CONFIG_MACROTABLE_SIZE = 0x00000010 # macro -SEM_ECC_ERROR = 0x00000000 # macro -SEM_TRANS_ERROR = 0x00000001 # macro -SEM_RESP_FAILED = 0x00000002 # macro -SEM_RESP_PASSED = 0x00000003 # macro -IQ_QUEUE_SLEEP = 0x00000000 # macro -IQ_OFFLOAD_RETRY = 0x00000001 # macro -IQ_SCH_WAVE_MSG = 0x00000002 # macro -IQ_SEM_REARM = 0x00000003 # macro -IQ_DEQUEUE_RETRY = 0x00000004 # macro -IQ_INTR_TYPE_PQ = 0x00000000 # macro -IQ_INTR_TYPE_IB = 0x00000001 # macro -IQ_INTR_TYPE_MQD = 0x00000002 # macro -VMID_SZ = 0x00000004 # macro -SRCID_RLC = 0x00000000 # macro -SRCID_RLCV = 0x00000006 # macro -SRCID_SECURE_CP = 0x00000007 # macro -SRCID_NONSECURE_CP = 0x00000001 # macro -SRCID_SECURE_CP_RCIU = 0x00000007 # macro -SRCID_NONSECURE_CP_RCIU = 0x00000001 # macro -CONFIG_SPACE_START = 0x00002000 # macro -CONFIG_SPACE_END = 0x00009fff # macro -CONFIG_SPACE1_START = 0x00002000 # macro -CONFIG_SPACE1_END = 0x00002bff # macro -CONFIG_SPACE2_START = 0x00003000 # macro -CONFIG_SPACE2_END = 0x00009fff # macro -UCONFIG_SPACE_START = 0x0000c000 # macro -UCONFIG_SPACE_END = 0x0000ffff # macro -PERSISTENT_SPACE_START = 0x00002c00 # macro -PERSISTENT_SPACE_END = 0x00002fff # macro -CONTEXT_SPACE_START = 0x0000a000 # macro -CONTEXT_SPACE_END = 0x0000a3ff # macro -ROM_SIGNATURE = 0x0000aa55 # macro - -# values for enumeration 'DSM_DATA_SEL' -DSM_DATA_SEL__enumvalues = { - 0: 'DSM_DATA_SEL_DISABLE', - 1: 'DSM_DATA_SEL_0', - 2: 'DSM_DATA_SEL_1', - 3: 'DSM_DATA_SEL_BOTH', -} -DSM_DATA_SEL_DISABLE = 0 -DSM_DATA_SEL_0 = 1 -DSM_DATA_SEL_1 = 2 -DSM_DATA_SEL_BOTH = 3 -DSM_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DSM_ENABLE_ERROR_INJECT' -DSM_ENABLE_ERROR_INJECT__enumvalues = { - 0: 'DSM_ENABLE_ERROR_INJECT_FED_IN', - 1: 'DSM_ENABLE_ERROR_INJECT_SINGLE', - 2: 'DSM_ENABLE_ERROR_INJECT_UNCORRECTABLE', - 3: 'DSM_ENABLE_ERROR_INJECT_UNCORRECTABLE_LIMITED', -} -DSM_ENABLE_ERROR_INJECT_FED_IN = 0 -DSM_ENABLE_ERROR_INJECT_SINGLE = 1 -DSM_ENABLE_ERROR_INJECT_UNCORRECTABLE = 2 -DSM_ENABLE_ERROR_INJECT_UNCORRECTABLE_LIMITED = 3 -DSM_ENABLE_ERROR_INJECT = ctypes.c_uint32 # enum - -# values for enumeration 'DSM_SELECT_INJECT_DELAY' -DSM_SELECT_INJECT_DELAY__enumvalues = { - 0: 'DSM_SELECT_INJECT_DELAY_NO_DELAY', - 1: 'DSM_SELECT_INJECT_DELAY_DELAY_ERROR', -} -DSM_SELECT_INJECT_DELAY_NO_DELAY = 0 -DSM_SELECT_INJECT_DELAY_DELAY_ERROR = 1 -DSM_SELECT_INJECT_DELAY = ctypes.c_uint32 # enum - -# values for enumeration 'DSM_SINGLE_WRITE' -DSM_SINGLE_WRITE__enumvalues = { - 0: 'DSM_SINGLE_WRITE_DIS', - 1: 'DSM_SINGLE_WRITE_EN', -} -DSM_SINGLE_WRITE_DIS = 0 -DSM_SINGLE_WRITE_EN = 1 -DSM_SINGLE_WRITE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_NUM_SIMD_PER_CU' -ENUM_NUM_SIMD_PER_CU__enumvalues = { - 2: 'NUM_SIMD_PER_CU', -} -NUM_SIMD_PER_CU = 2 -ENUM_NUM_SIMD_PER_CU = ctypes.c_uint32 # enum - -# values for enumeration 'GATCL1RequestType' -GATCL1RequestType__enumvalues = { - 0: 'GATCL1_TYPE_NORMAL', - 1: 'GATCL1_TYPE_SHOOTDOWN', - 2: 'GATCL1_TYPE_BYPASS', -} -GATCL1_TYPE_NORMAL = 0 -GATCL1_TYPE_SHOOTDOWN = 1 -GATCL1_TYPE_BYPASS = 2 -GATCL1RequestType = ctypes.c_uint32 # enum - -# values for enumeration 'GL0V_CACHE_POLICIES' -GL0V_CACHE_POLICIES__enumvalues = { - 0: 'GL0V_CACHE_POLICY_MISS_LRU', - 1: 'GL0V_CACHE_POLICY_MISS_EVICT', - 2: 'GL0V_CACHE_POLICY_HIT_LRU', - 3: 'GL0V_CACHE_POLICY_HIT_EVICT', -} -GL0V_CACHE_POLICY_MISS_LRU = 0 -GL0V_CACHE_POLICY_MISS_EVICT = 1 -GL0V_CACHE_POLICY_HIT_LRU = 2 -GL0V_CACHE_POLICY_HIT_EVICT = 3 -GL0V_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'GL1_CACHE_POLICIES' -GL1_CACHE_POLICIES__enumvalues = { - 0: 'GL1_CACHE_POLICY_MISS_LRU', - 1: 'GL1_CACHE_POLICY_MISS_EVICT', - 2: 'GL1_CACHE_POLICY_HIT_LRU', - 3: 'GL1_CACHE_POLICY_HIT_EVICT', -} -GL1_CACHE_POLICY_MISS_LRU = 0 -GL1_CACHE_POLICY_MISS_EVICT = 1 -GL1_CACHE_POLICY_HIT_LRU = 2 -GL1_CACHE_POLICY_HIT_EVICT = 3 -GL1_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'GL1_CACHE_STORE_POLICIES' -GL1_CACHE_STORE_POLICIES__enumvalues = { - 0: 'GL1_CACHE_STORE_POLICY_BYPASS', -} -GL1_CACHE_STORE_POLICY_BYPASS = 0 -GL1_CACHE_STORE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'GL2_CACHE_POLICIES' -GL2_CACHE_POLICIES__enumvalues = { - 0: 'GL2_CACHE_POLICY_LRU', - 1: 'GL2_CACHE_POLICY_STREAM', - 2: 'GL2_CACHE_POLICY_NOA', - 3: 'GL2_CACHE_POLICY_BYPASS', -} -GL2_CACHE_POLICY_LRU = 0 -GL2_CACHE_POLICY_STREAM = 1 -GL2_CACHE_POLICY_NOA = 2 -GL2_CACHE_POLICY_BYPASS = 3 -GL2_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'Hdp_SurfaceEndian' -Hdp_SurfaceEndian__enumvalues = { - 0: 'HDP_ENDIAN_NONE', - 1: 'HDP_ENDIAN_8IN16', - 2: 'HDP_ENDIAN_8IN32', - 3: 'HDP_ENDIAN_8IN64', -} -HDP_ENDIAN_NONE = 0 -HDP_ENDIAN_8IN16 = 1 -HDP_ENDIAN_8IN32 = 2 -HDP_ENDIAN_8IN64 = 3 -Hdp_SurfaceEndian = ctypes.c_uint32 # enum - -# values for enumeration 'MTYPE' -MTYPE__enumvalues = { - 0: 'MTYPE_C_RW_US', - 1: 'MTYPE_RESERVED_1', - 2: 'MTYPE_C_RO_S', - 3: 'MTYPE_UC', - 4: 'MTYPE_C_RW_S', - 5: 'MTYPE_RESERVED_5', - 6: 'MTYPE_C_RO_US', - 7: 'MTYPE_RESERVED_7', -} -MTYPE_C_RW_US = 0 -MTYPE_RESERVED_1 = 1 -MTYPE_C_RO_S = 2 -MTYPE_UC = 3 -MTYPE_C_RW_S = 4 -MTYPE_RESERVED_5 = 5 -MTYPE_C_RO_US = 6 -MTYPE_RESERVED_7 = 7 -MTYPE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_COUNTER_MODE' -PERFMON_COUNTER_MODE__enumvalues = { - 0: 'PERFMON_COUNTER_MODE_ACCUM', - 1: 'PERFMON_COUNTER_MODE_ACTIVE_CYCLES', - 2: 'PERFMON_COUNTER_MODE_MAX', - 3: 'PERFMON_COUNTER_MODE_DIRTY', - 4: 'PERFMON_COUNTER_MODE_SAMPLE', - 5: 'PERFMON_COUNTER_MODE_CYCLES_SINCE_FIRST_EVENT', - 6: 'PERFMON_COUNTER_MODE_CYCLES_SINCE_LAST_EVENT', - 7: 'PERFMON_COUNTER_MODE_CYCLES_GE_HI', - 8: 'PERFMON_COUNTER_MODE_CYCLES_EQ_HI', - 9: 'PERFMON_COUNTER_MODE_INACTIVE_CYCLES', - 15: 'PERFMON_COUNTER_MODE_RESERVED', -} -PERFMON_COUNTER_MODE_ACCUM = 0 -PERFMON_COUNTER_MODE_ACTIVE_CYCLES = 1 -PERFMON_COUNTER_MODE_MAX = 2 -PERFMON_COUNTER_MODE_DIRTY = 3 -PERFMON_COUNTER_MODE_SAMPLE = 4 -PERFMON_COUNTER_MODE_CYCLES_SINCE_FIRST_EVENT = 5 -PERFMON_COUNTER_MODE_CYCLES_SINCE_LAST_EVENT = 6 -PERFMON_COUNTER_MODE_CYCLES_GE_HI = 7 -PERFMON_COUNTER_MODE_CYCLES_EQ_HI = 8 -PERFMON_COUNTER_MODE_INACTIVE_CYCLES = 9 -PERFMON_COUNTER_MODE_RESERVED = 15 -PERFMON_COUNTER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_SPM_MODE' -PERFMON_SPM_MODE__enumvalues = { - 0: 'PERFMON_SPM_MODE_OFF', - 1: 'PERFMON_SPM_MODE_16BIT_CLAMP', - 2: 'PERFMON_SPM_MODE_16BIT_NO_CLAMP', - 3: 'PERFMON_SPM_MODE_32BIT_CLAMP', - 4: 'PERFMON_SPM_MODE_32BIT_NO_CLAMP', - 5: 'PERFMON_SPM_MODE_RESERVED_5', - 6: 'PERFMON_SPM_MODE_RESERVED_6', - 7: 'PERFMON_SPM_MODE_RESERVED_7', - 8: 'PERFMON_SPM_MODE_TEST_MODE_0', - 9: 'PERFMON_SPM_MODE_TEST_MODE_1', - 10: 'PERFMON_SPM_MODE_TEST_MODE_2', -} -PERFMON_SPM_MODE_OFF = 0 -PERFMON_SPM_MODE_16BIT_CLAMP = 1 -PERFMON_SPM_MODE_16BIT_NO_CLAMP = 2 -PERFMON_SPM_MODE_32BIT_CLAMP = 3 -PERFMON_SPM_MODE_32BIT_NO_CLAMP = 4 -PERFMON_SPM_MODE_RESERVED_5 = 5 -PERFMON_SPM_MODE_RESERVED_6 = 6 -PERFMON_SPM_MODE_RESERVED_7 = 7 -PERFMON_SPM_MODE_TEST_MODE_0 = 8 -PERFMON_SPM_MODE_TEST_MODE_1 = 9 -PERFMON_SPM_MODE_TEST_MODE_2 = 10 -PERFMON_SPM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'RMI_CID' -RMI_CID__enumvalues = { - 0: 'RMI_CID_CC', - 1: 'RMI_CID_FC', - 2: 'RMI_CID_CM', - 3: 'RMI_CID_DC', - 4: 'RMI_CID_Z', - 5: 'RMI_CID_S', - 6: 'RMI_CID_TILE', - 7: 'RMI_CID_ZPCPSD', -} -RMI_CID_CC = 0 -RMI_CID_FC = 1 -RMI_CID_CM = 2 -RMI_CID_DC = 3 -RMI_CID_Z = 4 -RMI_CID_S = 5 -RMI_CID_TILE = 6 -RMI_CID_ZPCPSD = 7 -RMI_CID = ctypes.c_uint32 # enum - -# values for enumeration 'ReadPolicy' -ReadPolicy__enumvalues = { - 0: 'CACHE_LRU_RD', - 1: 'CACHE_STREAM_RD', - 2: 'CACHE_NOA', - 3: 'RESERVED_RDPOLICY', -} -CACHE_LRU_RD = 0 -CACHE_STREAM_RD = 1 -CACHE_NOA = 2 -RESERVED_RDPOLICY = 3 -ReadPolicy = ctypes.c_uint32 # enum - -# values for enumeration 'SDMA_PERFMON_SEL' -SDMA_PERFMON_SEL__enumvalues = { - 0: 'SDMA_PERFMON_SEL_CYCLE', - 1: 'SDMA_PERFMON_SEL_IDLE', - 2: 'SDMA_PERFMON_SEL_REG_IDLE', - 3: 'SDMA_PERFMON_SEL_RB_EMPTY', - 4: 'SDMA_PERFMON_SEL_RB_FULL', - 5: 'SDMA_PERFMON_SEL_RB_WPTR_WRAP', - 6: 'SDMA_PERFMON_SEL_RB_RPTR_WRAP', - 7: 'SDMA_PERFMON_SEL_RB_WPTR_POLL_READ', - 8: 'SDMA_PERFMON_SEL_RB_RPTR_WB', - 9: 'SDMA_PERFMON_SEL_RB_CMD_IDLE', - 10: 'SDMA_PERFMON_SEL_RB_CMD_FULL', - 11: 'SDMA_PERFMON_SEL_IB_CMD_IDLE', - 12: 'SDMA_PERFMON_SEL_IB_CMD_FULL', - 13: 'SDMA_PERFMON_SEL_EX_IDLE', - 14: 'SDMA_PERFMON_SEL_SRBM_REG_SEND', - 15: 'SDMA_PERFMON_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 16: 'SDMA_PERFMON_SEL_WR_BA_RTR', - 17: 'SDMA_PERFMON_SEL_MC_WR_IDLE', - 18: 'SDMA_PERFMON_SEL_MC_WR_COUNT', - 19: 'SDMA_PERFMON_SEL_RD_BA_RTR', - 20: 'SDMA_PERFMON_SEL_MC_RD_IDLE', - 21: 'SDMA_PERFMON_SEL_MC_RD_COUNT', - 22: 'SDMA_PERFMON_SEL_MC_RD_RET_STALL', - 23: 'SDMA_PERFMON_SEL_MC_RD_NO_POLL_IDLE', - 26: 'SDMA_PERFMON_SEL_SEM_IDLE', - 27: 'SDMA_PERFMON_SEL_SEM_REQ_STALL', - 28: 'SDMA_PERFMON_SEL_SEM_REQ_COUNT', - 29: 'SDMA_PERFMON_SEL_SEM_RESP_INCOMPLETE', - 30: 'SDMA_PERFMON_SEL_SEM_RESP_FAIL', - 31: 'SDMA_PERFMON_SEL_SEM_RESP_PASS', - 32: 'SDMA_PERFMON_SEL_INT_IDLE', - 33: 'SDMA_PERFMON_SEL_INT_REQ_STALL', - 34: 'SDMA_PERFMON_SEL_INT_REQ_COUNT', - 35: 'SDMA_PERFMON_SEL_INT_RESP_ACCEPTED', - 36: 'SDMA_PERFMON_SEL_INT_RESP_RETRY', - 37: 'SDMA_PERFMON_SEL_NUM_PACKET', - 39: 'SDMA_PERFMON_SEL_CE_WREQ_IDLE', - 40: 'SDMA_PERFMON_SEL_CE_WR_IDLE', - 41: 'SDMA_PERFMON_SEL_CE_SPLIT_IDLE', - 42: 'SDMA_PERFMON_SEL_CE_RREQ_IDLE', - 43: 'SDMA_PERFMON_SEL_CE_OUT_IDLE', - 44: 'SDMA_PERFMON_SEL_CE_IN_IDLE', - 45: 'SDMA_PERFMON_SEL_CE_DST_IDLE', - 48: 'SDMA_PERFMON_SEL_CE_AFIFO_FULL', - 51: 'SDMA_PERFMON_SEL_CE_INFO_FULL', - 52: 'SDMA_PERFMON_SEL_CE_INFO1_FULL', - 53: 'SDMA_PERFMON_SEL_CE_RD_STALL', - 54: 'SDMA_PERFMON_SEL_CE_WR_STALL', - 55: 'SDMA_PERFMON_SEL_GFX_SELECT', - 56: 'SDMA_PERFMON_SEL_RLC0_SELECT', - 57: 'SDMA_PERFMON_SEL_RLC1_SELECT', - 58: 'SDMA_PERFMON_SEL_PAGE_SELECT', - 59: 'SDMA_PERFMON_SEL_CTX_CHANGE', - 60: 'SDMA_PERFMON_SEL_CTX_CHANGE_EXPIRED', - 61: 'SDMA_PERFMON_SEL_CTX_CHANGE_EXCEPTION', - 62: 'SDMA_PERFMON_SEL_DOORBELL', - 63: 'SDMA_PERFMON_SEL_F32_L1_WR_VLD', - 64: 'SDMA_PERFMON_SEL_CE_L1_WR_VLD', - 65: 'SDMA_PERFMON_SEL_CPF_SDMA_INVREQ', - 66: 'SDMA_PERFMON_SEL_SDMA_CPF_INVACK', - 67: 'SDMA_PERFMON_SEL_UTCL2_SDMA_INVREQ', - 68: 'SDMA_PERFMON_SEL_SDMA_UTCL2_INVACK', - 69: 'SDMA_PERFMON_SEL_UTCL2_SDMA_INVREQ_ALL', - 70: 'SDMA_PERFMON_SEL_SDMA_UTCL2_INVACK_ALL', - 71: 'SDMA_PERFMON_SEL_UTCL2_RET_XNACK', - 72: 'SDMA_PERFMON_SEL_UTCL2_RET_ACK', - 73: 'SDMA_PERFMON_SEL_UTCL2_FREE', - 74: 'SDMA_PERFMON_SEL_SDMA_UTCL2_SEND', - 75: 'SDMA_PERFMON_SEL_DMA_L1_WR_SEND', - 76: 'SDMA_PERFMON_SEL_DMA_L1_RD_SEND', - 77: 'SDMA_PERFMON_SEL_DMA_MC_WR_SEND', - 78: 'SDMA_PERFMON_SEL_DMA_MC_RD_SEND', - 79: 'SDMA_PERFMON_SEL_GPUVM_INV_HIGH', - 80: 'SDMA_PERFMON_SEL_GPUVM_INV_LOW', - 81: 'SDMA_PERFMON_SEL_L1_WRL2_IDLE', - 82: 'SDMA_PERFMON_SEL_L1_RDL2_IDLE', - 83: 'SDMA_PERFMON_SEL_L1_WRMC_IDLE', - 84: 'SDMA_PERFMON_SEL_L1_RDMC_IDLE', - 85: 'SDMA_PERFMON_SEL_L1_WR_INV_IDLE', - 86: 'SDMA_PERFMON_SEL_L1_RD_INV_IDLE', - 87: 'SDMA_PERFMON_SEL_META_L2_REQ_SEND', - 88: 'SDMA_PERFMON_SEL_L2_META_RET_VLD', - 89: 'SDMA_PERFMON_SEL_SDMA_UTCL2_RD_SEND', - 90: 'SDMA_PERFMON_SEL_UTCL2_SDMA_RD_RTN', - 91: 'SDMA_PERFMON_SEL_SDMA_UTCL2_WR_SEND', - 92: 'SDMA_PERFMON_SEL_UTCL2_SDMA_WR_RTN', - 93: 'SDMA_PERFMON_SEL_META_REQ_SEND', - 94: 'SDMA_PERFMON_SEL_META_RTN_VLD', - 95: 'SDMA_PERFMON_SEL_TLBI_SEND', - 96: 'SDMA_PERFMON_SEL_TLBI_RTN', - 97: 'SDMA_PERFMON_SEL_GCR_SEND', - 98: 'SDMA_PERFMON_SEL_GCR_RTN', - 99: 'SDMA_PERFMON_SEL_UTCL1_TAG_DELAY_COUNTER', - 100: 'SDMA_PERFMON_SEL_MMHUB_TAG_DELAY_COUNTER', -} -SDMA_PERFMON_SEL_CYCLE = 0 -SDMA_PERFMON_SEL_IDLE = 1 -SDMA_PERFMON_SEL_REG_IDLE = 2 -SDMA_PERFMON_SEL_RB_EMPTY = 3 -SDMA_PERFMON_SEL_RB_FULL = 4 -SDMA_PERFMON_SEL_RB_WPTR_WRAP = 5 -SDMA_PERFMON_SEL_RB_RPTR_WRAP = 6 -SDMA_PERFMON_SEL_RB_WPTR_POLL_READ = 7 -SDMA_PERFMON_SEL_RB_RPTR_WB = 8 -SDMA_PERFMON_SEL_RB_CMD_IDLE = 9 -SDMA_PERFMON_SEL_RB_CMD_FULL = 10 -SDMA_PERFMON_SEL_IB_CMD_IDLE = 11 -SDMA_PERFMON_SEL_IB_CMD_FULL = 12 -SDMA_PERFMON_SEL_EX_IDLE = 13 -SDMA_PERFMON_SEL_SRBM_REG_SEND = 14 -SDMA_PERFMON_SEL_EX_IDLE_POLL_TIMER_EXPIRE = 15 -SDMA_PERFMON_SEL_WR_BA_RTR = 16 -SDMA_PERFMON_SEL_MC_WR_IDLE = 17 -SDMA_PERFMON_SEL_MC_WR_COUNT = 18 -SDMA_PERFMON_SEL_RD_BA_RTR = 19 -SDMA_PERFMON_SEL_MC_RD_IDLE = 20 -SDMA_PERFMON_SEL_MC_RD_COUNT = 21 -SDMA_PERFMON_SEL_MC_RD_RET_STALL = 22 -SDMA_PERFMON_SEL_MC_RD_NO_POLL_IDLE = 23 -SDMA_PERFMON_SEL_SEM_IDLE = 26 -SDMA_PERFMON_SEL_SEM_REQ_STALL = 27 -SDMA_PERFMON_SEL_SEM_REQ_COUNT = 28 -SDMA_PERFMON_SEL_SEM_RESP_INCOMPLETE = 29 -SDMA_PERFMON_SEL_SEM_RESP_FAIL = 30 -SDMA_PERFMON_SEL_SEM_RESP_PASS = 31 -SDMA_PERFMON_SEL_INT_IDLE = 32 -SDMA_PERFMON_SEL_INT_REQ_STALL = 33 -SDMA_PERFMON_SEL_INT_REQ_COUNT = 34 -SDMA_PERFMON_SEL_INT_RESP_ACCEPTED = 35 -SDMA_PERFMON_SEL_INT_RESP_RETRY = 36 -SDMA_PERFMON_SEL_NUM_PACKET = 37 -SDMA_PERFMON_SEL_CE_WREQ_IDLE = 39 -SDMA_PERFMON_SEL_CE_WR_IDLE = 40 -SDMA_PERFMON_SEL_CE_SPLIT_IDLE = 41 -SDMA_PERFMON_SEL_CE_RREQ_IDLE = 42 -SDMA_PERFMON_SEL_CE_OUT_IDLE = 43 -SDMA_PERFMON_SEL_CE_IN_IDLE = 44 -SDMA_PERFMON_SEL_CE_DST_IDLE = 45 -SDMA_PERFMON_SEL_CE_AFIFO_FULL = 48 -SDMA_PERFMON_SEL_CE_INFO_FULL = 51 -SDMA_PERFMON_SEL_CE_INFO1_FULL = 52 -SDMA_PERFMON_SEL_CE_RD_STALL = 53 -SDMA_PERFMON_SEL_CE_WR_STALL = 54 -SDMA_PERFMON_SEL_GFX_SELECT = 55 -SDMA_PERFMON_SEL_RLC0_SELECT = 56 -SDMA_PERFMON_SEL_RLC1_SELECT = 57 -SDMA_PERFMON_SEL_PAGE_SELECT = 58 -SDMA_PERFMON_SEL_CTX_CHANGE = 59 -SDMA_PERFMON_SEL_CTX_CHANGE_EXPIRED = 60 -SDMA_PERFMON_SEL_CTX_CHANGE_EXCEPTION = 61 -SDMA_PERFMON_SEL_DOORBELL = 62 -SDMA_PERFMON_SEL_F32_L1_WR_VLD = 63 -SDMA_PERFMON_SEL_CE_L1_WR_VLD = 64 -SDMA_PERFMON_SEL_CPF_SDMA_INVREQ = 65 -SDMA_PERFMON_SEL_SDMA_CPF_INVACK = 66 -SDMA_PERFMON_SEL_UTCL2_SDMA_INVREQ = 67 -SDMA_PERFMON_SEL_SDMA_UTCL2_INVACK = 68 -SDMA_PERFMON_SEL_UTCL2_SDMA_INVREQ_ALL = 69 -SDMA_PERFMON_SEL_SDMA_UTCL2_INVACK_ALL = 70 -SDMA_PERFMON_SEL_UTCL2_RET_XNACK = 71 -SDMA_PERFMON_SEL_UTCL2_RET_ACK = 72 -SDMA_PERFMON_SEL_UTCL2_FREE = 73 -SDMA_PERFMON_SEL_SDMA_UTCL2_SEND = 74 -SDMA_PERFMON_SEL_DMA_L1_WR_SEND = 75 -SDMA_PERFMON_SEL_DMA_L1_RD_SEND = 76 -SDMA_PERFMON_SEL_DMA_MC_WR_SEND = 77 -SDMA_PERFMON_SEL_DMA_MC_RD_SEND = 78 -SDMA_PERFMON_SEL_GPUVM_INV_HIGH = 79 -SDMA_PERFMON_SEL_GPUVM_INV_LOW = 80 -SDMA_PERFMON_SEL_L1_WRL2_IDLE = 81 -SDMA_PERFMON_SEL_L1_RDL2_IDLE = 82 -SDMA_PERFMON_SEL_L1_WRMC_IDLE = 83 -SDMA_PERFMON_SEL_L1_RDMC_IDLE = 84 -SDMA_PERFMON_SEL_L1_WR_INV_IDLE = 85 -SDMA_PERFMON_SEL_L1_RD_INV_IDLE = 86 -SDMA_PERFMON_SEL_META_L2_REQ_SEND = 87 -SDMA_PERFMON_SEL_L2_META_RET_VLD = 88 -SDMA_PERFMON_SEL_SDMA_UTCL2_RD_SEND = 89 -SDMA_PERFMON_SEL_UTCL2_SDMA_RD_RTN = 90 -SDMA_PERFMON_SEL_SDMA_UTCL2_WR_SEND = 91 -SDMA_PERFMON_SEL_UTCL2_SDMA_WR_RTN = 92 -SDMA_PERFMON_SEL_META_REQ_SEND = 93 -SDMA_PERFMON_SEL_META_RTN_VLD = 94 -SDMA_PERFMON_SEL_TLBI_SEND = 95 -SDMA_PERFMON_SEL_TLBI_RTN = 96 -SDMA_PERFMON_SEL_GCR_SEND = 97 -SDMA_PERFMON_SEL_GCR_RTN = 98 -SDMA_PERFMON_SEL_UTCL1_TAG_DELAY_COUNTER = 99 -SDMA_PERFMON_SEL_MMHUB_TAG_DELAY_COUNTER = 100 -SDMA_PERFMON_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SDMA_PERF_SEL' -SDMA_PERF_SEL__enumvalues = { - 0: 'SDMA_PERF_SEL_CYCLE', - 1: 'SDMA_PERF_SEL_IDLE', - 2: 'SDMA_PERF_SEL_REG_IDLE', - 3: 'SDMA_PERF_SEL_RB_EMPTY', - 4: 'SDMA_PERF_SEL_RB_FULL', - 5: 'SDMA_PERF_SEL_RB_WPTR_WRAP', - 6: 'SDMA_PERF_SEL_RB_RPTR_WRAP', - 7: 'SDMA_PERF_SEL_RB_WPTR_POLL_READ', - 8: 'SDMA_PERF_SEL_RB_RPTR_WB', - 9: 'SDMA_PERF_SEL_RB_CMD_IDLE', - 10: 'SDMA_PERF_SEL_RB_CMD_FULL', - 11: 'SDMA_PERF_SEL_IB_CMD_IDLE', - 12: 'SDMA_PERF_SEL_IB_CMD_FULL', - 13: 'SDMA_PERF_SEL_EX_IDLE', - 14: 'SDMA_PERF_SEL_SRBM_REG_SEND', - 15: 'SDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 16: 'SDMA_PERF_SEL_MC_WR_IDLE', - 17: 'SDMA_PERF_SEL_MC_WR_COUNT', - 18: 'SDMA_PERF_SEL_MC_RD_IDLE', - 19: 'SDMA_PERF_SEL_MC_RD_COUNT', - 20: 'SDMA_PERF_SEL_MC_RD_RET_STALL', - 21: 'SDMA_PERF_SEL_MC_RD_NO_POLL_IDLE', - 24: 'SDMA_PERF_SEL_SEM_IDLE', - 25: 'SDMA_PERF_SEL_SEM_REQ_STALL', - 26: 'SDMA_PERF_SEL_SEM_REQ_COUNT', - 27: 'SDMA_PERF_SEL_SEM_RESP_INCOMPLETE', - 28: 'SDMA_PERF_SEL_SEM_RESP_FAIL', - 29: 'SDMA_PERF_SEL_SEM_RESP_PASS', - 30: 'SDMA_PERF_SEL_INT_IDLE', - 31: 'SDMA_PERF_SEL_INT_REQ_STALL', - 32: 'SDMA_PERF_SEL_INT_REQ_COUNT', - 33: 'SDMA_PERF_SEL_INT_RESP_ACCEPTED', - 34: 'SDMA_PERF_SEL_INT_RESP_RETRY', - 35: 'SDMA_PERF_SEL_NUM_PACKET', - 37: 'SDMA_PERF_SEL_CE_WREQ_IDLE', - 38: 'SDMA_PERF_SEL_CE_WR_IDLE', - 39: 'SDMA_PERF_SEL_CE_SPLIT_IDLE', - 40: 'SDMA_PERF_SEL_CE_RREQ_IDLE', - 41: 'SDMA_PERF_SEL_CE_OUT_IDLE', - 42: 'SDMA_PERF_SEL_CE_IN_IDLE', - 43: 'SDMA_PERF_SEL_CE_DST_IDLE', - 46: 'SDMA_PERF_SEL_CE_AFIFO_FULL', - 49: 'SDMA_PERF_SEL_CE_INFO_FULL', - 50: 'SDMA_PERF_SEL_CE_INFO1_FULL', - 51: 'SDMA_PERF_SEL_CE_RD_STALL', - 52: 'SDMA_PERF_SEL_CE_WR_STALL', - 53: 'SDMA_PERF_SEL_GFX_SELECT', - 54: 'SDMA_PERF_SEL_RLC0_SELECT', - 55: 'SDMA_PERF_SEL_RLC1_SELECT', - 56: 'SDMA_PERF_SEL_PAGE_SELECT', - 57: 'SDMA_PERF_SEL_CTX_CHANGE', - 58: 'SDMA_PERF_SEL_CTX_CHANGE_EXPIRED', - 59: 'SDMA_PERF_SEL_CTX_CHANGE_EXCEPTION', - 60: 'SDMA_PERF_SEL_DOORBELL', - 61: 'SDMA_PERF_SEL_RD_BA_RTR', - 62: 'SDMA_PERF_SEL_WR_BA_RTR', - 63: 'SDMA_PERF_SEL_F32_L1_WR_VLD', - 64: 'SDMA_PERF_SEL_CE_L1_WR_VLD', - 65: 'SDMA_PERF_SEL_CPF_SDMA_INVREQ', - 66: 'SDMA_PERF_SEL_SDMA_CPF_INVACK', - 67: 'SDMA_PERF_SEL_UTCL2_SDMA_INVREQ', - 68: 'SDMA_PERF_SEL_SDMA_UTCL2_INVACK', - 69: 'SDMA_PERF_SEL_UTCL2_SDMA_INVREQ_ALL', - 70: 'SDMA_PERF_SEL_SDMA_UTCL2_INVACK_ALL', - 71: 'SDMA_PERF_SEL_UTCL2_RET_XNACK', - 72: 'SDMA_PERF_SEL_UTCL2_RET_ACK', - 73: 'SDMA_PERF_SEL_UTCL2_FREE', - 74: 'SDMA_PERF_SEL_SDMA_UTCL2_SEND', - 75: 'SDMA_PERF_SEL_DMA_L1_WR_SEND', - 76: 'SDMA_PERF_SEL_DMA_L1_RD_SEND', - 77: 'SDMA_PERF_SEL_DMA_MC_WR_SEND', - 78: 'SDMA_PERF_SEL_DMA_MC_RD_SEND', - 79: 'SDMA_PERF_SEL_GPUVM_INV_HIGH', - 80: 'SDMA_PERF_SEL_GPUVM_INV_LOW', - 81: 'SDMA_PERF_SEL_L1_WRL2_IDLE', - 82: 'SDMA_PERF_SEL_L1_RDL2_IDLE', - 83: 'SDMA_PERF_SEL_L1_WRMC_IDLE', - 84: 'SDMA_PERF_SEL_L1_RDMC_IDLE', - 85: 'SDMA_PERF_SEL_L1_WR_INV_IDLE', - 86: 'SDMA_PERF_SEL_L1_RD_INV_IDLE', - 87: 'SDMA_PERF_SEL_META_L2_REQ_SEND', - 88: 'SDMA_PERF_SEL_L2_META_RET_VLD', - 89: 'SDMA_PERF_SEL_SDMA_UTCL2_RD_SEND', - 90: 'SDMA_PERF_SEL_UTCL2_SDMA_RD_RTN', - 91: 'SDMA_PERF_SEL_SDMA_UTCL2_WR_SEND', - 92: 'SDMA_PERF_SEL_UTCL2_SDMA_WR_RTN', - 93: 'SDMA_PERF_SEL_META_REQ_SEND', - 94: 'SDMA_PERF_SEL_META_RTN_VLD', - 95: 'SDMA_PERF_SEL_TLBI_SEND', - 96: 'SDMA_PERF_SEL_TLBI_RTN', - 97: 'SDMA_PERF_SEL_GCR_SEND', - 98: 'SDMA_PERF_SEL_GCR_RTN', - 99: 'SDMA_PERF_SEL_CGCG_FENCE', - 100: 'SDMA_PERF_SEL_CE_CH_WR_REQ', - 101: 'SDMA_PERF_SEL_CE_CH_WR_RET', - 102: 'SDMA_PERF_SEL_F32_CH_WR_REQ', - 103: 'SDMA_PERF_SEL_F32_CH_WR_RET', - 104: 'SDMA_PERF_SEL_CE_OR_F32_CH_RD_REQ', - 105: 'SDMA_PERF_SEL_CE_OR_F32_CH_RD_RET', - 106: 'SDMA_PERF_SEL_RB_CH_RD_REQ', - 107: 'SDMA_PERF_SEL_RB_CH_RD_RET', - 108: 'SDMA_PERF_SEL_IB_CH_RD_REQ', - 109: 'SDMA_PERF_SEL_IB_CH_RD_RET', - 110: 'SDMA_PERF_SEL_WPTR_CH_RD_REQ', - 111: 'SDMA_PERF_SEL_WPTR_CH_RD_RET', - 112: 'SDMA_PERF_SEL_UTCL1_UTCL2_REQ', - 113: 'SDMA_PERF_SEL_UTCL1_UTCL2_RET', - 114: 'SDMA_PERF_SEL_CMD_OP_MATCH', - 115: 'SDMA_PERF_SEL_CMD_OP_START', - 116: 'SDMA_PERF_SEL_CMD_OP_END', - 117: 'SDMA_PERF_SEL_CE_BUSY', - 118: 'SDMA_PERF_SEL_CE_BUSY_START', - 119: 'SDMA_PERF_SEL_CE_BUSY_END', - 120: 'SDMA_PERF_SEL_F32_PERFCNT_TRIGGER', - 121: 'SDMA_PERF_SEL_F32_PERFCNT_TRIGGER_START', - 122: 'SDMA_PERF_SEL_F32_PERFCNT_TRIGGER_END', - 123: 'SDMA_PERF_SEL_CE_CH_WRREQ_SEND', - 124: 'SDMA_PERF_SEL_CH_CE_WRRET_VALID', - 125: 'SDMA_PERF_SEL_CE_CH_RDREQ_SEND', - 126: 'SDMA_PERF_SEL_CH_CE_RDRET_VALID', -} -SDMA_PERF_SEL_CYCLE = 0 -SDMA_PERF_SEL_IDLE = 1 -SDMA_PERF_SEL_REG_IDLE = 2 -SDMA_PERF_SEL_RB_EMPTY = 3 -SDMA_PERF_SEL_RB_FULL = 4 -SDMA_PERF_SEL_RB_WPTR_WRAP = 5 -SDMA_PERF_SEL_RB_RPTR_WRAP = 6 -SDMA_PERF_SEL_RB_WPTR_POLL_READ = 7 -SDMA_PERF_SEL_RB_RPTR_WB = 8 -SDMA_PERF_SEL_RB_CMD_IDLE = 9 -SDMA_PERF_SEL_RB_CMD_FULL = 10 -SDMA_PERF_SEL_IB_CMD_IDLE = 11 -SDMA_PERF_SEL_IB_CMD_FULL = 12 -SDMA_PERF_SEL_EX_IDLE = 13 -SDMA_PERF_SEL_SRBM_REG_SEND = 14 -SDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE = 15 -SDMA_PERF_SEL_MC_WR_IDLE = 16 -SDMA_PERF_SEL_MC_WR_COUNT = 17 -SDMA_PERF_SEL_MC_RD_IDLE = 18 -SDMA_PERF_SEL_MC_RD_COUNT = 19 -SDMA_PERF_SEL_MC_RD_RET_STALL = 20 -SDMA_PERF_SEL_MC_RD_NO_POLL_IDLE = 21 -SDMA_PERF_SEL_SEM_IDLE = 24 -SDMA_PERF_SEL_SEM_REQ_STALL = 25 -SDMA_PERF_SEL_SEM_REQ_COUNT = 26 -SDMA_PERF_SEL_SEM_RESP_INCOMPLETE = 27 -SDMA_PERF_SEL_SEM_RESP_FAIL = 28 -SDMA_PERF_SEL_SEM_RESP_PASS = 29 -SDMA_PERF_SEL_INT_IDLE = 30 -SDMA_PERF_SEL_INT_REQ_STALL = 31 -SDMA_PERF_SEL_INT_REQ_COUNT = 32 -SDMA_PERF_SEL_INT_RESP_ACCEPTED = 33 -SDMA_PERF_SEL_INT_RESP_RETRY = 34 -SDMA_PERF_SEL_NUM_PACKET = 35 -SDMA_PERF_SEL_CE_WREQ_IDLE = 37 -SDMA_PERF_SEL_CE_WR_IDLE = 38 -SDMA_PERF_SEL_CE_SPLIT_IDLE = 39 -SDMA_PERF_SEL_CE_RREQ_IDLE = 40 -SDMA_PERF_SEL_CE_OUT_IDLE = 41 -SDMA_PERF_SEL_CE_IN_IDLE = 42 -SDMA_PERF_SEL_CE_DST_IDLE = 43 -SDMA_PERF_SEL_CE_AFIFO_FULL = 46 -SDMA_PERF_SEL_CE_INFO_FULL = 49 -SDMA_PERF_SEL_CE_INFO1_FULL = 50 -SDMA_PERF_SEL_CE_RD_STALL = 51 -SDMA_PERF_SEL_CE_WR_STALL = 52 -SDMA_PERF_SEL_GFX_SELECT = 53 -SDMA_PERF_SEL_RLC0_SELECT = 54 -SDMA_PERF_SEL_RLC1_SELECT = 55 -SDMA_PERF_SEL_PAGE_SELECT = 56 -SDMA_PERF_SEL_CTX_CHANGE = 57 -SDMA_PERF_SEL_CTX_CHANGE_EXPIRED = 58 -SDMA_PERF_SEL_CTX_CHANGE_EXCEPTION = 59 -SDMA_PERF_SEL_DOORBELL = 60 -SDMA_PERF_SEL_RD_BA_RTR = 61 -SDMA_PERF_SEL_WR_BA_RTR = 62 -SDMA_PERF_SEL_F32_L1_WR_VLD = 63 -SDMA_PERF_SEL_CE_L1_WR_VLD = 64 -SDMA_PERF_SEL_CPF_SDMA_INVREQ = 65 -SDMA_PERF_SEL_SDMA_CPF_INVACK = 66 -SDMA_PERF_SEL_UTCL2_SDMA_INVREQ = 67 -SDMA_PERF_SEL_SDMA_UTCL2_INVACK = 68 -SDMA_PERF_SEL_UTCL2_SDMA_INVREQ_ALL = 69 -SDMA_PERF_SEL_SDMA_UTCL2_INVACK_ALL = 70 -SDMA_PERF_SEL_UTCL2_RET_XNACK = 71 -SDMA_PERF_SEL_UTCL2_RET_ACK = 72 -SDMA_PERF_SEL_UTCL2_FREE = 73 -SDMA_PERF_SEL_SDMA_UTCL2_SEND = 74 -SDMA_PERF_SEL_DMA_L1_WR_SEND = 75 -SDMA_PERF_SEL_DMA_L1_RD_SEND = 76 -SDMA_PERF_SEL_DMA_MC_WR_SEND = 77 -SDMA_PERF_SEL_DMA_MC_RD_SEND = 78 -SDMA_PERF_SEL_GPUVM_INV_HIGH = 79 -SDMA_PERF_SEL_GPUVM_INV_LOW = 80 -SDMA_PERF_SEL_L1_WRL2_IDLE = 81 -SDMA_PERF_SEL_L1_RDL2_IDLE = 82 -SDMA_PERF_SEL_L1_WRMC_IDLE = 83 -SDMA_PERF_SEL_L1_RDMC_IDLE = 84 -SDMA_PERF_SEL_L1_WR_INV_IDLE = 85 -SDMA_PERF_SEL_L1_RD_INV_IDLE = 86 -SDMA_PERF_SEL_META_L2_REQ_SEND = 87 -SDMA_PERF_SEL_L2_META_RET_VLD = 88 -SDMA_PERF_SEL_SDMA_UTCL2_RD_SEND = 89 -SDMA_PERF_SEL_UTCL2_SDMA_RD_RTN = 90 -SDMA_PERF_SEL_SDMA_UTCL2_WR_SEND = 91 -SDMA_PERF_SEL_UTCL2_SDMA_WR_RTN = 92 -SDMA_PERF_SEL_META_REQ_SEND = 93 -SDMA_PERF_SEL_META_RTN_VLD = 94 -SDMA_PERF_SEL_TLBI_SEND = 95 -SDMA_PERF_SEL_TLBI_RTN = 96 -SDMA_PERF_SEL_GCR_SEND = 97 -SDMA_PERF_SEL_GCR_RTN = 98 -SDMA_PERF_SEL_CGCG_FENCE = 99 -SDMA_PERF_SEL_CE_CH_WR_REQ = 100 -SDMA_PERF_SEL_CE_CH_WR_RET = 101 -SDMA_PERF_SEL_F32_CH_WR_REQ = 102 -SDMA_PERF_SEL_F32_CH_WR_RET = 103 -SDMA_PERF_SEL_CE_OR_F32_CH_RD_REQ = 104 -SDMA_PERF_SEL_CE_OR_F32_CH_RD_RET = 105 -SDMA_PERF_SEL_RB_CH_RD_REQ = 106 -SDMA_PERF_SEL_RB_CH_RD_RET = 107 -SDMA_PERF_SEL_IB_CH_RD_REQ = 108 -SDMA_PERF_SEL_IB_CH_RD_RET = 109 -SDMA_PERF_SEL_WPTR_CH_RD_REQ = 110 -SDMA_PERF_SEL_WPTR_CH_RD_RET = 111 -SDMA_PERF_SEL_UTCL1_UTCL2_REQ = 112 -SDMA_PERF_SEL_UTCL1_UTCL2_RET = 113 -SDMA_PERF_SEL_CMD_OP_MATCH = 114 -SDMA_PERF_SEL_CMD_OP_START = 115 -SDMA_PERF_SEL_CMD_OP_END = 116 -SDMA_PERF_SEL_CE_BUSY = 117 -SDMA_PERF_SEL_CE_BUSY_START = 118 -SDMA_PERF_SEL_CE_BUSY_END = 119 -SDMA_PERF_SEL_F32_PERFCNT_TRIGGER = 120 -SDMA_PERF_SEL_F32_PERFCNT_TRIGGER_START = 121 -SDMA_PERF_SEL_F32_PERFCNT_TRIGGER_END = 122 -SDMA_PERF_SEL_CE_CH_WRREQ_SEND = 123 -SDMA_PERF_SEL_CH_CE_WRRET_VALID = 124 -SDMA_PERF_SEL_CE_CH_RDREQ_SEND = 125 -SDMA_PERF_SEL_CH_CE_RDRET_VALID = 126 -SDMA_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TCC_CACHE_POLICIES' -TCC_CACHE_POLICIES__enumvalues = { - 0: 'TCC_CACHE_POLICY_LRU', - 1: 'TCC_CACHE_POLICY_STREAM', -} -TCC_CACHE_POLICY_LRU = 0 -TCC_CACHE_POLICY_STREAM = 1 -TCC_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'TCC_MTYPE' -TCC_MTYPE__enumvalues = { - 0: 'MTYPE_NC', - 1: 'MTYPE_WC', - 2: 'MTYPE_CC', -} -MTYPE_NC = 0 -MTYPE_WC = 1 -MTYPE_CC = 2 -TCC_MTYPE = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL0FaultType' -UTCL0FaultType__enumvalues = { - 0: 'UTCL0_XNACK_SUCCESS', - 1: 'UTCL0_XNACK_RETRY', - 2: 'UTCL0_XNACK_PRT', - 3: 'UTCL0_XNACK_NO_RETRY', -} -UTCL0_XNACK_SUCCESS = 0 -UTCL0_XNACK_RETRY = 1 -UTCL0_XNACK_PRT = 2 -UTCL0_XNACK_NO_RETRY = 3 -UTCL0FaultType = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL0RequestType' -UTCL0RequestType__enumvalues = { - 0: 'UTCL0_TYPE_NORMAL', - 1: 'UTCL0_TYPE_SHOOTDOWN', - 2: 'UTCL0_TYPE_BYPASS', -} -UTCL0_TYPE_NORMAL = 0 -UTCL0_TYPE_SHOOTDOWN = 1 -UTCL0_TYPE_BYPASS = 2 -UTCL0RequestType = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL1FaultType' -UTCL1FaultType__enumvalues = { - 0: 'UTCL1_XNACK_SUCCESS', - 1: 'UTCL1_XNACK_RETRY', - 2: 'UTCL1_XNACK_PRT', - 3: 'UTCL1_XNACK_NO_RETRY', -} -UTCL1_XNACK_SUCCESS = 0 -UTCL1_XNACK_RETRY = 1 -UTCL1_XNACK_PRT = 2 -UTCL1_XNACK_NO_RETRY = 3 -UTCL1FaultType = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL1RequestType' -UTCL1RequestType__enumvalues = { - 0: 'UTCL1_TYPE_NORMAL', - 1: 'UTCL1_TYPE_SHOOTDOWN', - 2: 'UTCL1_TYPE_BYPASS', -} -UTCL1_TYPE_NORMAL = 0 -UTCL1_TYPE_SHOOTDOWN = 1 -UTCL1_TYPE_BYPASS = 2 -UTCL1RequestType = ctypes.c_uint32 # enum - -# values for enumeration 'VMEMCMD_RETURN_ORDER' -VMEMCMD_RETURN_ORDER__enumvalues = { - 0: 'VMEMCMD_RETURN_OUT_OF_ORDER', - 1: 'VMEMCMD_RETURN_IN_ORDER', - 2: 'VMEMCMD_RETURN_IN_ORDER_READ', -} -VMEMCMD_RETURN_OUT_OF_ORDER = 0 -VMEMCMD_RETURN_IN_ORDER = 1 -VMEMCMD_RETURN_IN_ORDER_READ = 2 -VMEMCMD_RETURN_ORDER = ctypes.c_uint32 # enum - -# values for enumeration 'WritePolicy' -WritePolicy__enumvalues = { - 0: 'CACHE_LRU_WR', - 1: 'CACHE_STREAM', - 2: 'CACHE_NOA_WR', - 3: 'CACHE_BYPASS', -} -CACHE_LRU_WR = 0 -CACHE_STREAM = 1 -CACHE_NOA_WR = 2 -CACHE_BYPASS = 3 -WritePolicy = ctypes.c_uint32 # enum - -# values for enumeration 'CNVC_BYPASS' -CNVC_BYPASS__enumvalues = { - 0: 'CNVC_BYPASS_DISABLE', - 1: 'CNVC_BYPASS_EN', -} -CNVC_BYPASS_DISABLE = 0 -CNVC_BYPASS_EN = 1 -CNVC_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'CNVC_COEF_FORMAT_ENUM' -CNVC_COEF_FORMAT_ENUM__enumvalues = { - 0: 'CNVC_FIX_S2_13', - 1: 'CNVC_FIX_S3_12', -} -CNVC_FIX_S2_13 = 0 -CNVC_FIX_S3_12 = 1 -CNVC_COEF_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CNVC_ENABLE' -CNVC_ENABLE__enumvalues = { - 0: 'CNVC_DIS', - 1: 'CNVC_EN', -} -CNVC_DIS = 0 -CNVC_EN = 1 -CNVC_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CNVC_PENDING' -CNVC_PENDING__enumvalues = { - 0: 'CNVC_NOT_PENDING', - 1: 'CNVC_YES_PENDING', -} -CNVC_NOT_PENDING = 0 -CNVC_YES_PENDING = 1 -CNVC_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'COLOR_KEYER_MODE' -COLOR_KEYER_MODE__enumvalues = { - 0: 'FORCE_00', - 1: 'FORCE_FF', - 2: 'RANGE_00', - 3: 'RANGE_FF', -} -FORCE_00 = 0 -FORCE_FF = 1 -RANGE_00 = 2 -RANGE_FF = 3 -COLOR_KEYER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DENORM_TRUNCATE' -DENORM_TRUNCATE__enumvalues = { - 0: 'CNVC_ROUND', - 1: 'CNVC_TRUNCATE', -} -CNVC_ROUND = 0 -CNVC_TRUNCATE = 1 -DENORM_TRUNCATE = ctypes.c_uint32 # enum - -# values for enumeration 'FORMAT_CROSSBAR' -FORMAT_CROSSBAR__enumvalues = { - 0: 'FORMAT_CROSSBAR_R', - 1: 'FORMAT_CROSSBAR_G', - 2: 'FORMAT_CROSSBAR_B', -} -FORMAT_CROSSBAR_R = 0 -FORMAT_CROSSBAR_G = 1 -FORMAT_CROSSBAR_B = 2 -FORMAT_CROSSBAR = ctypes.c_uint32 # enum - -# values for enumeration 'PIX_EXPAND_MODE' -PIX_EXPAND_MODE__enumvalues = { - 0: 'PIX_DYNAMIC_EXPANSION', - 1: 'PIX_ZERO_EXPANSION', -} -PIX_DYNAMIC_EXPANSION = 0 -PIX_ZERO_EXPANSION = 1 -PIX_EXPAND_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PRE_CSC_MODE_ENUM' -PRE_CSC_MODE_ENUM__enumvalues = { - 0: 'PRE_CSC_BYPASS', - 1: 'PRE_CSC_SET_A', - 2: 'PRE_CSC_SET_B', -} -PRE_CSC_BYPASS = 0 -PRE_CSC_SET_A = 1 -PRE_CSC_SET_B = 2 -PRE_CSC_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'PRE_DEGAM_MODE' -PRE_DEGAM_MODE__enumvalues = { - 0: 'PRE_DEGAM_BYPASS', - 1: 'PRE_DEGAM_ENABLE', -} -PRE_DEGAM_BYPASS = 0 -PRE_DEGAM_ENABLE = 1 -PRE_DEGAM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PRE_DEGAM_SELECT' -PRE_DEGAM_SELECT__enumvalues = { - 0: 'PRE_DEGAM_SRGB', - 1: 'PRE_DEGAM_GAMMA_22', - 2: 'PRE_DEGAM_GAMMA_24', - 3: 'PRE_DEGAM_GAMMA_26', - 4: 'PRE_DEGAM_BT2020', - 5: 'PRE_DEGAM_BT2100PQ', - 6: 'PRE_DEGAM_BT2100HLG', -} -PRE_DEGAM_SRGB = 0 -PRE_DEGAM_GAMMA_22 = 1 -PRE_DEGAM_GAMMA_24 = 2 -PRE_DEGAM_GAMMA_26 = 3 -PRE_DEGAM_BT2020 = 4 -PRE_DEGAM_BT2100PQ = 5 -PRE_DEGAM_BT2100HLG = 6 -PRE_DEGAM_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_PIXEL_FORMAT' -SURFACE_PIXEL_FORMAT__enumvalues = { - 1: 'ARGB1555', - 2: 'RGBA5551', - 3: 'RGB565', - 4: 'BGR565', - 5: 'ARGB4444', - 6: 'RGBA4444', - 8: 'ARGB8888', - 9: 'RGBA8888', - 10: 'ARGB2101010', - 11: 'RGBA1010102', - 12: 'AYCrCb8888', - 13: 'YCrCbA8888', - 14: 'ACrYCb8888', - 15: 'CrYCbA8888', - 16: 'ARGB16161616_10MSB', - 17: 'RGBA16161616_10MSB', - 18: 'ARGB16161616_10LSB', - 19: 'RGBA16161616_10LSB', - 20: 'ARGB16161616_12MSB', - 21: 'RGBA16161616_12MSB', - 22: 'ARGB16161616_12LSB', - 23: 'RGBA16161616_12LSB', - 24: 'ARGB16161616_FLOAT', - 25: 'RGBA16161616_FLOAT', - 26: 'ARGB16161616_UNORM', - 27: 'RGBA16161616_UNORM', - 28: 'ARGB16161616_SNORM', - 29: 'RGBA16161616_SNORM', - 32: 'AYCrCb16161616_10MSB', - 33: 'AYCrCb16161616_10LSB', - 34: 'YCrCbA16161616_10MSB', - 35: 'YCrCbA16161616_10LSB', - 36: 'ACrYCb16161616_10MSB', - 37: 'ACrYCb16161616_10LSB', - 38: 'CrYCbA16161616_10MSB', - 39: 'CrYCbA16161616_10LSB', - 40: 'AYCrCb16161616_12MSB', - 41: 'AYCrCb16161616_12LSB', - 42: 'YCrCbA16161616_12MSB', - 43: 'YCrCbA16161616_12LSB', - 44: 'ACrYCb16161616_12MSB', - 45: 'ACrYCb16161616_12LSB', - 46: 'CrYCbA16161616_12MSB', - 47: 'CrYCbA16161616_12LSB', - 64: 'Y8_CrCb88_420_PLANAR', - 65: 'Y8_CbCr88_420_PLANAR', - 66: 'Y10_CrCb1010_420_PLANAR', - 67: 'Y10_CbCr1010_420_PLANAR', - 68: 'Y12_CrCb1212_420_PLANAR', - 69: 'Y12_CbCr1212_420_PLANAR', - 72: 'YCrYCb8888_422_PACKED', - 73: 'YCbYCr8888_422_PACKED', - 74: 'CrYCbY8888_422_PACKED', - 75: 'CbYCrY8888_422_PACKED', - 76: 'YCrYCb10101010_422_PACKED', - 77: 'YCbYCr10101010_422_PACKED', - 78: 'CrYCbY10101010_422_PACKED', - 79: 'CbYCrY10101010_422_PACKED', - 80: 'YCrYCb12121212_422_PACKED', - 81: 'YCbYCr12121212_422_PACKED', - 82: 'CrYCbY12121212_422_PACKED', - 83: 'CbYCrY12121212_422_PACKED', - 112: 'RGB111110_FIX', - 113: 'BGR101111_FIX', - 114: 'ACrYCb2101010', - 115: 'CrYCbA1010102', - 116: 'RGBE', - 118: 'RGB111110_FLOAT', - 119: 'BGR101111_FLOAT', - 120: 'MONO_8', - 121: 'MONO_10MSB', - 122: 'MONO_10LSB', - 123: 'MONO_12MSB', - 124: 'MONO_12LSB', - 125: 'MONO_16', -} -ARGB1555 = 1 -RGBA5551 = 2 -RGB565 = 3 -BGR565 = 4 -ARGB4444 = 5 -RGBA4444 = 6 -ARGB8888 = 8 -RGBA8888 = 9 -ARGB2101010 = 10 -RGBA1010102 = 11 -AYCrCb8888 = 12 -YCrCbA8888 = 13 -ACrYCb8888 = 14 -CrYCbA8888 = 15 -ARGB16161616_10MSB = 16 -RGBA16161616_10MSB = 17 -ARGB16161616_10LSB = 18 -RGBA16161616_10LSB = 19 -ARGB16161616_12MSB = 20 -RGBA16161616_12MSB = 21 -ARGB16161616_12LSB = 22 -RGBA16161616_12LSB = 23 -ARGB16161616_FLOAT = 24 -RGBA16161616_FLOAT = 25 -ARGB16161616_UNORM = 26 -RGBA16161616_UNORM = 27 -ARGB16161616_SNORM = 28 -RGBA16161616_SNORM = 29 -AYCrCb16161616_10MSB = 32 -AYCrCb16161616_10LSB = 33 -YCrCbA16161616_10MSB = 34 -YCrCbA16161616_10LSB = 35 -ACrYCb16161616_10MSB = 36 -ACrYCb16161616_10LSB = 37 -CrYCbA16161616_10MSB = 38 -CrYCbA16161616_10LSB = 39 -AYCrCb16161616_12MSB = 40 -AYCrCb16161616_12LSB = 41 -YCrCbA16161616_12MSB = 42 -YCrCbA16161616_12LSB = 43 -ACrYCb16161616_12MSB = 44 -ACrYCb16161616_12LSB = 45 -CrYCbA16161616_12MSB = 46 -CrYCbA16161616_12LSB = 47 -Y8_CrCb88_420_PLANAR = 64 -Y8_CbCr88_420_PLANAR = 65 -Y10_CrCb1010_420_PLANAR = 66 -Y10_CbCr1010_420_PLANAR = 67 -Y12_CrCb1212_420_PLANAR = 68 -Y12_CbCr1212_420_PLANAR = 69 -YCrYCb8888_422_PACKED = 72 -YCbYCr8888_422_PACKED = 73 -CrYCbY8888_422_PACKED = 74 -CbYCrY8888_422_PACKED = 75 -YCrYCb10101010_422_PACKED = 76 -YCbYCr10101010_422_PACKED = 77 -CrYCbY10101010_422_PACKED = 78 -CbYCrY10101010_422_PACKED = 79 -YCrYCb12121212_422_PACKED = 80 -YCbYCr12121212_422_PACKED = 81 -CrYCbY12121212_422_PACKED = 82 -CbYCrY12121212_422_PACKED = 83 -RGB111110_FIX = 112 -BGR101111_FIX = 113 -ACrYCb2101010 = 114 -CrYCbA1010102 = 115 -RGBE = 116 -RGB111110_FLOAT = 118 -BGR101111_FLOAT = 119 -MONO_8 = 120 -MONO_10MSB = 121 -MONO_10LSB = 122 -MONO_12MSB = 123 -MONO_12LSB = 124 -MONO_16 = 125 -SURFACE_PIXEL_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'XNORM' -XNORM__enumvalues = { - 0: 'XNORM_A', - 1: 'XNORM_B', -} -XNORM_A = 0 -XNORM_B = 1 -XNORM = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_ENABLE' -CUR_ENABLE__enumvalues = { - 0: 'CUR_DIS', - 1: 'CUR_EN', -} -CUR_DIS = 0 -CUR_EN = 1 -CUR_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_EXPAND_MODE' -CUR_EXPAND_MODE__enumvalues = { - 0: 'CUR_DYNAMIC_EXPANSION', - 1: 'CUR_ZERO_EXPANSION', -} -CUR_DYNAMIC_EXPANSION = 0 -CUR_ZERO_EXPANSION = 1 -CUR_EXPAND_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_INV_CLAMP' -CUR_INV_CLAMP__enumvalues = { - 0: 'CUR_CLAMP_DIS', - 1: 'CUR_CLAMP_EN', -} -CUR_CLAMP_DIS = 0 -CUR_CLAMP_EN = 1 -CUR_INV_CLAMP = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_MODE' -CUR_MODE__enumvalues = { - 0: 'MONO_2BIT', - 1: 'COLOR_24BIT_1BIT_AND', - 2: 'COLOR_24BIT_8BIT_ALPHA_PREMULT', - 3: 'COLOR_24BIT_8BIT_ALPHA_UNPREMULT', - 4: 'COLOR_64BIT_FP_PREMULT', - 5: 'COLOR_64BIT_FP_UNPREMULT', -} -MONO_2BIT = 0 -COLOR_24BIT_1BIT_AND = 1 -COLOR_24BIT_8BIT_ALPHA_PREMULT = 2 -COLOR_24BIT_8BIT_ALPHA_UNPREMULT = 3 -COLOR_64BIT_FP_PREMULT = 4 -COLOR_64BIT_FP_UNPREMULT = 5 -CUR_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_PENDING' -CUR_PENDING__enumvalues = { - 0: 'CUR_NOT_PENDING', - 1: 'CUR_YES_PENDING', -} -CUR_NOT_PENDING = 0 -CUR_YES_PENDING = 1 -CUR_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_ROM_EN' -CUR_ROM_EN__enumvalues = { - 0: 'CUR_FP_NO_ROM', - 1: 'CUR_FP_USE_ROM', -} -CUR_FP_NO_ROM = 0 -CUR_FP_USE_ROM = 1 -CUR_ROM_EN = ctypes.c_uint32 # enum - -# values for enumeration 'COEF_RAM_SELECT_RD' -COEF_RAM_SELECT_RD__enumvalues = { - 0: 'COEF_RAM_SELECT_BACK', - 1: 'COEF_RAM_SELECT_CURRENT', -} -COEF_RAM_SELECT_BACK = 0 -COEF_RAM_SELECT_CURRENT = 1 -COEF_RAM_SELECT_RD = ctypes.c_uint32 # enum - -# values for enumeration 'DSCL_MODE_SEL' -DSCL_MODE_SEL__enumvalues = { - 0: 'DSCL_MODE_SCALING_444_BYPASS', - 1: 'DSCL_MODE_SCALING_444_RGB_ENABLE', - 2: 'DSCL_MODE_SCALING_444_YCBCR_ENABLE', - 3: 'DSCL_MODE_SCALING_YCBCR_ENABLE', - 4: 'DSCL_MODE_LUMA_SCALING_BYPASS', - 5: 'DSCL_MODE_CHROMA_SCALING_BYPASS', - 6: 'DSCL_MODE_DSCL_BYPASS', -} -DSCL_MODE_SCALING_444_BYPASS = 0 -DSCL_MODE_SCALING_444_RGB_ENABLE = 1 -DSCL_MODE_SCALING_444_YCBCR_ENABLE = 2 -DSCL_MODE_SCALING_YCBCR_ENABLE = 3 -DSCL_MODE_LUMA_SCALING_BYPASS = 4 -DSCL_MODE_CHROMA_SCALING_BYPASS = 5 -DSCL_MODE_DSCL_BYPASS = 6 -DSCL_MODE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'LB_ALPHA_EN' -LB_ALPHA_EN__enumvalues = { - 0: 'LB_ALPHA_DISABLE', - 1: 'LB_ALPHA_ENABLE', -} -LB_ALPHA_DISABLE = 0 -LB_ALPHA_ENABLE = 1 -LB_ALPHA_EN = ctypes.c_uint32 # enum - -# values for enumeration 'LB_INTERLEAVE_EN' -LB_INTERLEAVE_EN__enumvalues = { - 0: 'LB_INTERLEAVE_DISABLE', - 1: 'LB_INTERLEAVE_ENABLE', -} -LB_INTERLEAVE_DISABLE = 0 -LB_INTERLEAVE_ENABLE = 1 -LB_INTERLEAVE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'LB_MEMORY_CONFIG' -LB_MEMORY_CONFIG__enumvalues = { - 0: 'LB_MEMORY_CONFIG_0', - 1: 'LB_MEMORY_CONFIG_1', - 2: 'LB_MEMORY_CONFIG_2', - 3: 'LB_MEMORY_CONFIG_3', -} -LB_MEMORY_CONFIG_0 = 0 -LB_MEMORY_CONFIG_1 = 1 -LB_MEMORY_CONFIG_2 = 2 -LB_MEMORY_CONFIG_3 = 3 -LB_MEMORY_CONFIG = ctypes.c_uint32 # enum - -# values for enumeration 'OBUF_BYPASS_SEL' -OBUF_BYPASS_SEL__enumvalues = { - 0: 'OBUF_BYPASS_DIS', - 1: 'OBUF_BYPASS_EN', -} -OBUF_BYPASS_DIS = 0 -OBUF_BYPASS_EN = 1 -OBUF_BYPASS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OBUF_IS_HALF_RECOUT_WIDTH_SEL' -OBUF_IS_HALF_RECOUT_WIDTH_SEL__enumvalues = { - 0: 'OBUF_FULL_RECOUT', - 1: 'OBUF_HALF_RECOUT', -} -OBUF_FULL_RECOUT = 0 -OBUF_HALF_RECOUT = 1 -OBUF_IS_HALF_RECOUT_WIDTH_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OBUF_USE_FULL_BUFFER_SEL' -OBUF_USE_FULL_BUFFER_SEL__enumvalues = { - 0: 'OBUF_RECOUT', - 1: 'OBUF_FULL', -} -OBUF_RECOUT = 0 -OBUF_FULL = 1 -OBUF_USE_FULL_BUFFER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_2TAP_HARDCODE' -SCL_2TAP_HARDCODE__enumvalues = { - 0: 'SCL_COEF_2TAP_HARDCODE_OFF', - 1: 'SCL_COEF_2TAP_HARDCODE_ON', -} -SCL_COEF_2TAP_HARDCODE_OFF = 0 -SCL_COEF_2TAP_HARDCODE_ON = 1 -SCL_2TAP_HARDCODE = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_ALPHA_COEF' -SCL_ALPHA_COEF__enumvalues = { - 0: 'SCL_ALPHA_COEF_FIRST', - 1: 'SCL_ALPHA_COEF_SECOND', -} -SCL_ALPHA_COEF_FIRST = 0 -SCL_ALPHA_COEF_SECOND = 1 -SCL_ALPHA_COEF = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_AUTOCAL_MODE' -SCL_AUTOCAL_MODE__enumvalues = { - 0: 'AUTOCAL_MODE_OFF', - 1: 'AUTOCAL_MODE_AUTOSCALE', - 2: 'AUTOCAL_MODE_AUTOCENTER', - 3: 'AUTOCAL_MODE_AUTOREPLICATE', -} -AUTOCAL_MODE_OFF = 0 -AUTOCAL_MODE_AUTOSCALE = 1 -AUTOCAL_MODE_AUTOCENTER = 2 -AUTOCAL_MODE_AUTOREPLICATE = 3 -SCL_AUTOCAL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_BOUNDARY' -SCL_BOUNDARY__enumvalues = { - 0: 'SCL_BOUNDARY_EDGE', - 1: 'SCL_BOUNDARY_BLACK', -} -SCL_BOUNDARY_EDGE = 0 -SCL_BOUNDARY_BLACK = 1 -SCL_BOUNDARY = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_CHROMA_COEF' -SCL_CHROMA_COEF__enumvalues = { - 0: 'SCL_CHROMA_COEF_FIRST', - 1: 'SCL_CHROMA_COEF_SECOND', -} -SCL_CHROMA_COEF_FIRST = 0 -SCL_CHROMA_COEF_SECOND = 1 -SCL_CHROMA_COEF = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_COEF_FILTER_TYPE_SEL' -SCL_COEF_FILTER_TYPE_SEL__enumvalues = { - 0: 'SCL_COEF_LUMA_VERT_FILTER', - 1: 'SCL_COEF_LUMA_HORZ_FILTER', - 2: 'SCL_COEF_CHROMA_VERT_FILTER', - 3: 'SCL_COEF_CHROMA_HORZ_FILTER', -} -SCL_COEF_LUMA_VERT_FILTER = 0 -SCL_COEF_LUMA_HORZ_FILTER = 1 -SCL_COEF_CHROMA_VERT_FILTER = 2 -SCL_COEF_CHROMA_HORZ_FILTER = 3 -SCL_COEF_FILTER_TYPE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_COEF_RAM_SEL' -SCL_COEF_RAM_SEL__enumvalues = { - 0: 'SCL_COEF_RAM_SEL_0', - 1: 'SCL_COEF_RAM_SEL_1', -} -SCL_COEF_RAM_SEL_0 = 0 -SCL_COEF_RAM_SEL_1 = 1 -SCL_COEF_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_SHARP_EN' -SCL_SHARP_EN__enumvalues = { - 0: 'SCL_SHARP_DISABLE', - 1: 'SCL_SHARP_ENABLE', -} -SCL_SHARP_DISABLE = 0 -SCL_SHARP_ENABLE = 1 -SCL_SHARP_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_3DLUT_30BIT_ENUM' -CMC_3DLUT_30BIT_ENUM__enumvalues = { - 0: 'CMC_3DLUT_36BIT', - 1: 'CMC_3DLUT_30BIT', -} -CMC_3DLUT_36BIT = 0 -CMC_3DLUT_30BIT = 1 -CMC_3DLUT_30BIT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_3DLUT_RAM_SEL' -CMC_3DLUT_RAM_SEL__enumvalues = { - 0: 'CMC_RAM0_ACCESS', - 1: 'CMC_RAM1_ACCESS', - 2: 'CMC_RAM2_ACCESS', - 3: 'CMC_RAM3_ACCESS', -} -CMC_RAM0_ACCESS = 0 -CMC_RAM1_ACCESS = 1 -CMC_RAM2_ACCESS = 2 -CMC_RAM3_ACCESS = 3 -CMC_3DLUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_3DLUT_SIZE_ENUM' -CMC_3DLUT_SIZE_ENUM__enumvalues = { - 0: 'CMC_3DLUT_17CUBE', - 1: 'CMC_3DLUT_9CUBE', -} -CMC_3DLUT_17CUBE = 0 -CMC_3DLUT_9CUBE = 1 -CMC_3DLUT_SIZE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_LUT_2_CONFIG_ENUM' -CMC_LUT_2_CONFIG_ENUM__enumvalues = { - 0: 'CMC_LUT_2CFG_NO_MEMORY', - 1: 'CMC_LUT_2CFG_MEMORY_A', - 2: 'CMC_LUT_2CFG_MEMORY_B', -} -CMC_LUT_2CFG_NO_MEMORY = 0 -CMC_LUT_2CFG_MEMORY_A = 1 -CMC_LUT_2CFG_MEMORY_B = 2 -CMC_LUT_2_CONFIG_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_LUT_2_MODE_ENUM' -CMC_LUT_2_MODE_ENUM__enumvalues = { - 0: 'CMC_LUT_2_MODE_BYPASS', - 1: 'CMC_LUT_2_MODE_RAMA_LUT', - 2: 'CMC_LUT_2_MODE_RAMB_LUT', -} -CMC_LUT_2_MODE_BYPASS = 0 -CMC_LUT_2_MODE_RAMA_LUT = 1 -CMC_LUT_2_MODE_RAMB_LUT = 2 -CMC_LUT_2_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_LUT_NUM_SEG' -CMC_LUT_NUM_SEG__enumvalues = { - 0: 'CMC_SEGMENTS_1', - 1: 'CMC_SEGMENTS_2', - 2: 'CMC_SEGMENTS_4', - 3: 'CMC_SEGMENTS_8', - 4: 'CMC_SEGMENTS_16', - 5: 'CMC_SEGMENTS_32', - 6: 'CMC_SEGMENTS_64', - 7: 'CMC_SEGMENTS_128', -} -CMC_SEGMENTS_1 = 0 -CMC_SEGMENTS_2 = 1 -CMC_SEGMENTS_4 = 2 -CMC_SEGMENTS_8 = 3 -CMC_SEGMENTS_16 = 4 -CMC_SEGMENTS_32 = 5 -CMC_SEGMENTS_64 = 6 -CMC_SEGMENTS_128 = 7 -CMC_LUT_NUM_SEG = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_LUT_RAM_SEL' -CMC_LUT_RAM_SEL__enumvalues = { - 0: 'CMC_RAMA_ACCESS', - 1: 'CMC_RAMB_ACCESS', -} -CMC_RAMA_ACCESS = 0 -CMC_RAMB_ACCESS = 1 -CMC_LUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CM_BYPASS' -CM_BYPASS__enumvalues = { - 0: 'NON_BYPASS', - 1: 'BYPASS_EN', -} -NON_BYPASS = 0 -BYPASS_EN = 1 -CM_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'CM_COEF_FORMAT_ENUM' -CM_COEF_FORMAT_ENUM__enumvalues = { - 0: 'FIX_S2_13', - 1: 'FIX_S3_12', -} -FIX_S2_13 = 0 -FIX_S3_12 = 1 -CM_COEF_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_DATA_SIGNED' -CM_DATA_SIGNED__enumvalues = { - 0: 'UNSIGNED', - 1: 'SIGNED', -} -UNSIGNED = 0 -SIGNED = 1 -CM_DATA_SIGNED = ctypes.c_uint32 # enum - -# values for enumeration 'CM_EN' -CM_EN__enumvalues = { - 0: 'CM_DISABLE', - 1: 'CM_ENABLE', -} -CM_DISABLE = 0 -CM_ENABLE = 1 -CM_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CM_GAMMA_LUT_MODE_ENUM' -CM_GAMMA_LUT_MODE_ENUM__enumvalues = { - 0: 'BYPASS', - 1: 'RESERVED_1', - 2: 'RAM_LUT', - 3: 'RESERVED_3', -} -BYPASS = 0 -RESERVED_1 = 1 -RAM_LUT = 2 -RESERVED_3 = 3 -CM_GAMMA_LUT_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_GAMMA_LUT_PWL_DISABLE_ENUM' -CM_GAMMA_LUT_PWL_DISABLE_ENUM__enumvalues = { - 0: 'ENABLE_PWL', - 1: 'DISABLE_PWL', -} -ENABLE_PWL = 0 -DISABLE_PWL = 1 -CM_GAMMA_LUT_PWL_DISABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_GAMMA_LUT_SEL_ENUM' -CM_GAMMA_LUT_SEL_ENUM__enumvalues = { - 0: 'RAMA', - 1: 'RAMB', -} -RAMA = 0 -RAMB = 1 -CM_GAMMA_LUT_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_GAMUT_REMAP_MODE_ENUM' -CM_GAMUT_REMAP_MODE_ENUM__enumvalues = { - 0: 'BYPASS_GAMUT', - 1: 'GAMUT_COEF', - 2: 'GAMUT_COEF_B', -} -BYPASS_GAMUT = 0 -GAMUT_COEF = 1 -GAMUT_COEF_B = 2 -CM_GAMUT_REMAP_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_2_CONFIG_ENUM' -CM_LUT_2_CONFIG_ENUM__enumvalues = { - 0: 'LUT_2CFG_NO_MEMORY', - 1: 'LUT_2CFG_MEMORY_A', - 2: 'LUT_2CFG_MEMORY_B', -} -LUT_2CFG_NO_MEMORY = 0 -LUT_2CFG_MEMORY_A = 1 -LUT_2CFG_MEMORY_B = 2 -CM_LUT_2_CONFIG_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_2_MODE_ENUM' -CM_LUT_2_MODE_ENUM__enumvalues = { - 0: 'LUT_2_MODE_BYPASS', - 1: 'LUT_2_MODE_RAMA_LUT', - 2: 'LUT_2_MODE_RAMB_LUT', -} -LUT_2_MODE_BYPASS = 0 -LUT_2_MODE_RAMA_LUT = 1 -LUT_2_MODE_RAMB_LUT = 2 -CM_LUT_2_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_4_CONFIG_ENUM' -CM_LUT_4_CONFIG_ENUM__enumvalues = { - 0: 'LUT_4CFG_NO_MEMORY', - 1: 'LUT_4CFG_ROM_A', - 2: 'LUT_4CFG_ROM_B', - 3: 'LUT_4CFG_MEMORY_A', - 4: 'LUT_4CFG_MEMORY_B', -} -LUT_4CFG_NO_MEMORY = 0 -LUT_4CFG_ROM_A = 1 -LUT_4CFG_ROM_B = 2 -LUT_4CFG_MEMORY_A = 3 -LUT_4CFG_MEMORY_B = 4 -CM_LUT_4_CONFIG_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_4_MODE_ENUM' -CM_LUT_4_MODE_ENUM__enumvalues = { - 0: 'LUT_4_MODE_BYPASS', - 1: 'LUT_4_MODE_ROMA_LUT', - 2: 'LUT_4_MODE_ROMB_LUT', - 3: 'LUT_4_MODE_RAMA_LUT', - 4: 'LUT_4_MODE_RAMB_LUT', -} -LUT_4_MODE_BYPASS = 0 -LUT_4_MODE_ROMA_LUT = 1 -LUT_4_MODE_ROMB_LUT = 2 -LUT_4_MODE_RAMA_LUT = 3 -LUT_4_MODE_RAMB_LUT = 4 -CM_LUT_4_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_CONFIG_MODE' -CM_LUT_CONFIG_MODE__enumvalues = { - 0: 'DIFFERENT_RGB', - 1: 'ALL_USE_R', -} -DIFFERENT_RGB = 0 -ALL_USE_R = 1 -CM_LUT_CONFIG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_NUM_SEG' -CM_LUT_NUM_SEG__enumvalues = { - 0: 'SEGMENTS_1', - 1: 'SEGMENTS_2', - 2: 'SEGMENTS_4', - 3: 'SEGMENTS_8', - 4: 'SEGMENTS_16', - 5: 'SEGMENTS_32', - 6: 'SEGMENTS_64', - 7: 'SEGMENTS_128', -} -SEGMENTS_1 = 0 -SEGMENTS_2 = 1 -SEGMENTS_4 = 2 -SEGMENTS_8 = 3 -SEGMENTS_16 = 4 -SEGMENTS_32 = 5 -SEGMENTS_64 = 6 -SEGMENTS_128 = 7 -CM_LUT_NUM_SEG = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_RAM_SEL' -CM_LUT_RAM_SEL__enumvalues = { - 0: 'RAMA_ACCESS', - 1: 'RAMB_ACCESS', -} -RAMA_ACCESS = 0 -RAMB_ACCESS = 1 -CM_LUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_READ_COLOR_SEL' -CM_LUT_READ_COLOR_SEL__enumvalues = { - 0: 'BLUE_LUT', - 1: 'GREEN_LUT', - 2: 'RED_LUT', -} -BLUE_LUT = 0 -GREEN_LUT = 1 -RED_LUT = 2 -CM_LUT_READ_COLOR_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_READ_DBG' -CM_LUT_READ_DBG__enumvalues = { - 0: 'DISABLE_DEBUG', - 1: 'ENABLE_DEBUG', -} -DISABLE_DEBUG = 0 -ENABLE_DEBUG = 1 -CM_LUT_READ_DBG = ctypes.c_uint32 # enum - -# values for enumeration 'CM_PENDING' -CM_PENDING__enumvalues = { - 0: 'CM_NOT_PENDING', - 1: 'CM_YES_PENDING', -} -CM_NOT_PENDING = 0 -CM_YES_PENDING = 1 -CM_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'CM_POST_CSC_MODE_ENUM' -CM_POST_CSC_MODE_ENUM__enumvalues = { - 0: 'BYPASS_POST_CSC', - 1: 'COEF_POST_CSC', - 2: 'COEF_POST_CSC_B', -} -BYPASS_POST_CSC = 0 -COEF_POST_CSC = 1 -COEF_POST_CSC_B = 2 -CM_POST_CSC_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_WRITE_BASE_ONLY' -CM_WRITE_BASE_ONLY__enumvalues = { - 0: 'WRITE_BOTH', - 1: 'WRITE_BASE_ONLY', -} -WRITE_BOTH = 0 -WRITE_BASE_ONLY = 1 -CM_WRITE_BASE_ONLY = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_CUR_SEL' -CRC_CUR_SEL__enumvalues = { - 0: 'CRC_CUR_0', - 1: 'CRC_CUR_1', -} -CRC_CUR_0 = 0 -CRC_CUR_1 = 1 -CRC_CUR_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_INTERLACE_SEL' -CRC_INTERLACE_SEL__enumvalues = { - 0: 'CRC_INTERLACE_0', - 1: 'CRC_INTERLACE_1', - 2: 'CRC_INTERLACE_2', - 3: 'CRC_INTERLACE_3', -} -CRC_INTERLACE_0 = 0 -CRC_INTERLACE_1 = 1 -CRC_INTERLACE_2 = 2 -CRC_INTERLACE_3 = 3 -CRC_INTERLACE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_IN_CUR_SEL' -CRC_IN_CUR_SEL__enumvalues = { - 0: 'CRC_IN_CUR_0', - 1: 'CRC_IN_CUR_1', - 2: 'CRC_IN_CUR_2', - 3: 'CRC_IN_CUR_3', -} -CRC_IN_CUR_0 = 0 -CRC_IN_CUR_1 = 1 -CRC_IN_CUR_2 = 2 -CRC_IN_CUR_3 = 3 -CRC_IN_CUR_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_IN_PIX_SEL' -CRC_IN_PIX_SEL__enumvalues = { - 0: 'CRC_IN_PIX_0', - 1: 'CRC_IN_PIX_1', - 2: 'CRC_IN_PIX_2', - 3: 'CRC_IN_PIX_3', - 4: 'CRC_IN_PIX_4', - 5: 'CRC_IN_PIX_5', - 6: 'CRC_IN_PIX_6', - 7: 'CRC_IN_PIX_7', -} -CRC_IN_PIX_0 = 0 -CRC_IN_PIX_1 = 1 -CRC_IN_PIX_2 = 2 -CRC_IN_PIX_3 = 3 -CRC_IN_PIX_4 = 4 -CRC_IN_PIX_5 = 5 -CRC_IN_PIX_6 = 6 -CRC_IN_PIX_7 = 7 -CRC_IN_PIX_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_SRC_SEL' -CRC_SRC_SEL__enumvalues = { - 0: 'CRC_SRC_0', - 1: 'CRC_SRC_1', - 2: 'CRC_SRC_2', - 3: 'CRC_SRC_3', -} -CRC_SRC_0 = 0 -CRC_SRC_1 = 1 -CRC_SRC_2 = 2 -CRC_SRC_3 = 3 -CRC_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_STEREO_SEL' -CRC_STEREO_SEL__enumvalues = { - 0: 'CRC_STEREO_0', - 1: 'CRC_STEREO_1', - 2: 'CRC_STEREO_2', - 3: 'CRC_STEREO_3', -} -CRC_STEREO_0 = 0 -CRC_STEREO_1 = 1 -CRC_STEREO_2 = 2 -CRC_STEREO_3 = 3 -CRC_STEREO_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TEST_CLK_SEL' -TEST_CLK_SEL__enumvalues = { - 0: 'TEST_CLK_SEL_0', - 1: 'TEST_CLK_SEL_1', - 2: 'TEST_CLK_SEL_2', - 3: 'TEST_CLK_SEL_3', - 4: 'TEST_CLK_SEL_4', - 5: 'TEST_CLK_SEL_5', - 6: 'TEST_CLK_SEL_6', - 7: 'TEST_CLK_SEL_7', -} -TEST_CLK_SEL_0 = 0 -TEST_CLK_SEL_1 = 1 -TEST_CLK_SEL_2 = 2 -TEST_CLK_SEL_3 = 3 -TEST_CLK_SEL_4 = 4 -TEST_CLK_SEL_5 = 5 -TEST_CLK_SEL_6 = 6 -TEST_CLK_SEL_7 = 7 -TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_ACTIVE' -PERFCOUNTER_ACTIVE__enumvalues = { - 0: 'PERFCOUNTER_IS_IDLE', - 1: 'PERFCOUNTER_IS_ACTIVE', -} -PERFCOUNTER_IS_IDLE = 0 -PERFCOUNTER_IS_ACTIVE = 1 -PERFCOUNTER_ACTIVE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT0_STATE' -PERFCOUNTER_CNT0_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT0_STATE_RESET', - 1: 'PERFCOUNTER_CNT0_STATE_START', - 2: 'PERFCOUNTER_CNT0_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT0_STATE_HW', -} -PERFCOUNTER_CNT0_STATE_RESET = 0 -PERFCOUNTER_CNT0_STATE_START = 1 -PERFCOUNTER_CNT0_STATE_FREEZE = 2 -PERFCOUNTER_CNT0_STATE_HW = 3 -PERFCOUNTER_CNT0_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT1_STATE' -PERFCOUNTER_CNT1_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT1_STATE_RESET', - 1: 'PERFCOUNTER_CNT1_STATE_START', - 2: 'PERFCOUNTER_CNT1_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT1_STATE_HW', -} -PERFCOUNTER_CNT1_STATE_RESET = 0 -PERFCOUNTER_CNT1_STATE_START = 1 -PERFCOUNTER_CNT1_STATE_FREEZE = 2 -PERFCOUNTER_CNT1_STATE_HW = 3 -PERFCOUNTER_CNT1_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT2_STATE' -PERFCOUNTER_CNT2_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT2_STATE_RESET', - 1: 'PERFCOUNTER_CNT2_STATE_START', - 2: 'PERFCOUNTER_CNT2_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT2_STATE_HW', -} -PERFCOUNTER_CNT2_STATE_RESET = 0 -PERFCOUNTER_CNT2_STATE_START = 1 -PERFCOUNTER_CNT2_STATE_FREEZE = 2 -PERFCOUNTER_CNT2_STATE_HW = 3 -PERFCOUNTER_CNT2_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT3_STATE' -PERFCOUNTER_CNT3_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT3_STATE_RESET', - 1: 'PERFCOUNTER_CNT3_STATE_START', - 2: 'PERFCOUNTER_CNT3_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT3_STATE_HW', -} -PERFCOUNTER_CNT3_STATE_RESET = 0 -PERFCOUNTER_CNT3_STATE_START = 1 -PERFCOUNTER_CNT3_STATE_FREEZE = 2 -PERFCOUNTER_CNT3_STATE_HW = 3 -PERFCOUNTER_CNT3_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT4_STATE' -PERFCOUNTER_CNT4_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT4_STATE_RESET', - 1: 'PERFCOUNTER_CNT4_STATE_START', - 2: 'PERFCOUNTER_CNT4_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT4_STATE_HW', -} -PERFCOUNTER_CNT4_STATE_RESET = 0 -PERFCOUNTER_CNT4_STATE_START = 1 -PERFCOUNTER_CNT4_STATE_FREEZE = 2 -PERFCOUNTER_CNT4_STATE_HW = 3 -PERFCOUNTER_CNT4_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT5_STATE' -PERFCOUNTER_CNT5_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT5_STATE_RESET', - 1: 'PERFCOUNTER_CNT5_STATE_START', - 2: 'PERFCOUNTER_CNT5_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT5_STATE_HW', -} -PERFCOUNTER_CNT5_STATE_RESET = 0 -PERFCOUNTER_CNT5_STATE_START = 1 -PERFCOUNTER_CNT5_STATE_FREEZE = 2 -PERFCOUNTER_CNT5_STATE_HW = 3 -PERFCOUNTER_CNT5_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT6_STATE' -PERFCOUNTER_CNT6_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT6_STATE_RESET', - 1: 'PERFCOUNTER_CNT6_STATE_START', - 2: 'PERFCOUNTER_CNT6_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT6_STATE_HW', -} -PERFCOUNTER_CNT6_STATE_RESET = 0 -PERFCOUNTER_CNT6_STATE_START = 1 -PERFCOUNTER_CNT6_STATE_FREEZE = 2 -PERFCOUNTER_CNT6_STATE_HW = 3 -PERFCOUNTER_CNT6_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT7_STATE' -PERFCOUNTER_CNT7_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT7_STATE_RESET', - 1: 'PERFCOUNTER_CNT7_STATE_START', - 2: 'PERFCOUNTER_CNT7_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT7_STATE_HW', -} -PERFCOUNTER_CNT7_STATE_RESET = 0 -PERFCOUNTER_CNT7_STATE_START = 1 -PERFCOUNTER_CNT7_STATE_FREEZE = 2 -PERFCOUNTER_CNT7_STATE_HW = 3 -PERFCOUNTER_CNT7_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNTL_SEL' -PERFCOUNTER_CNTL_SEL__enumvalues = { - 0: 'PERFCOUNTER_CNTL_SEL_0', - 1: 'PERFCOUNTER_CNTL_SEL_1', - 2: 'PERFCOUNTER_CNTL_SEL_2', - 3: 'PERFCOUNTER_CNTL_SEL_3', - 4: 'PERFCOUNTER_CNTL_SEL_4', - 5: 'PERFCOUNTER_CNTL_SEL_5', - 6: 'PERFCOUNTER_CNTL_SEL_6', - 7: 'PERFCOUNTER_CNTL_SEL_7', -} -PERFCOUNTER_CNTL_SEL_0 = 0 -PERFCOUNTER_CNTL_SEL_1 = 1 -PERFCOUNTER_CNTL_SEL_2 = 2 -PERFCOUNTER_CNTL_SEL_3 = 3 -PERFCOUNTER_CNTL_SEL_4 = 4 -PERFCOUNTER_CNTL_SEL_5 = 5 -PERFCOUNTER_CNTL_SEL_6 = 6 -PERFCOUNTER_CNTL_SEL_7 = 7 -PERFCOUNTER_CNTL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNTOFF_START_DIS' -PERFCOUNTER_CNTOFF_START_DIS__enumvalues = { - 0: 'PERFCOUNTER_CNTOFF_START_ENABLE', - 1: 'PERFCOUNTER_CNTOFF_START_DISABLE', -} -PERFCOUNTER_CNTOFF_START_ENABLE = 0 -PERFCOUNTER_CNTOFF_START_DISABLE = 1 -PERFCOUNTER_CNTOFF_START_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_COUNTED_VALUE_TYPE' -PERFCOUNTER_COUNTED_VALUE_TYPE__enumvalues = { - 0: 'PERFCOUNTER_COUNTED_VALUE_TYPE_ACC', - 1: 'PERFCOUNTER_COUNTED_VALUE_TYPE_MAX', - 2: 'PERFCOUNTER_COUNTED_VALUE_TYPE_MIN', -} -PERFCOUNTER_COUNTED_VALUE_TYPE_ACC = 0 -PERFCOUNTER_COUNTED_VALUE_TYPE_MAX = 1 -PERFCOUNTER_COUNTED_VALUE_TYPE_MIN = 2 -PERFCOUNTER_COUNTED_VALUE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CVALUE_SEL' -PERFCOUNTER_CVALUE_SEL__enumvalues = { - 0: 'PERFCOUNTER_CVALUE_SEL_47_0', - 1: 'PERFCOUNTER_CVALUE_SEL_15_0', - 2: 'PERFCOUNTER_CVALUE_SEL_31_16', - 3: 'PERFCOUNTER_CVALUE_SEL_47_32', - 4: 'PERFCOUNTER_CVALUE_SEL_11_0', - 5: 'PERFCOUNTER_CVALUE_SEL_23_12', - 6: 'PERFCOUNTER_CVALUE_SEL_35_24', - 7: 'PERFCOUNTER_CVALUE_SEL_47_36', -} -PERFCOUNTER_CVALUE_SEL_47_0 = 0 -PERFCOUNTER_CVALUE_SEL_15_0 = 1 -PERFCOUNTER_CVALUE_SEL_31_16 = 2 -PERFCOUNTER_CVALUE_SEL_47_32 = 3 -PERFCOUNTER_CVALUE_SEL_11_0 = 4 -PERFCOUNTER_CVALUE_SEL_23_12 = 5 -PERFCOUNTER_CVALUE_SEL_35_24 = 6 -PERFCOUNTER_CVALUE_SEL_47_36 = 7 -PERFCOUNTER_CVALUE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_HW_CNTL_SEL' -PERFCOUNTER_HW_CNTL_SEL__enumvalues = { - 0: 'PERFCOUNTER_HW_CNTL_SEL_RUNEN', - 1: 'PERFCOUNTER_HW_CNTL_SEL_CNTOFF', -} -PERFCOUNTER_HW_CNTL_SEL_RUNEN = 0 -PERFCOUNTER_HW_CNTL_SEL_CNTOFF = 1 -PERFCOUNTER_HW_CNTL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_HW_STOP1_SEL' -PERFCOUNTER_HW_STOP1_SEL__enumvalues = { - 0: 'PERFCOUNTER_HW_STOP1_0', - 1: 'PERFCOUNTER_HW_STOP1_1', -} -PERFCOUNTER_HW_STOP1_0 = 0 -PERFCOUNTER_HW_STOP1_1 = 1 -PERFCOUNTER_HW_STOP1_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_HW_STOP2_SEL' -PERFCOUNTER_HW_STOP2_SEL__enumvalues = { - 0: 'PERFCOUNTER_HW_STOP2_0', - 1: 'PERFCOUNTER_HW_STOP2_1', -} -PERFCOUNTER_HW_STOP2_0 = 0 -PERFCOUNTER_HW_STOP2_1 = 1 -PERFCOUNTER_HW_STOP2_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_INC_MODE' -PERFCOUNTER_INC_MODE__enumvalues = { - 0: 'PERFCOUNTER_INC_MODE_MULTI_BIT', - 1: 'PERFCOUNTER_INC_MODE_BOTH_EDGE', - 2: 'PERFCOUNTER_INC_MODE_LSB', - 3: 'PERFCOUNTER_INC_MODE_POS_EDGE', - 4: 'PERFCOUNTER_INC_MODE_NEG_EDGE', -} -PERFCOUNTER_INC_MODE_MULTI_BIT = 0 -PERFCOUNTER_INC_MODE_BOTH_EDGE = 1 -PERFCOUNTER_INC_MODE_LSB = 2 -PERFCOUNTER_INC_MODE_POS_EDGE = 3 -PERFCOUNTER_INC_MODE_NEG_EDGE = 4 -PERFCOUNTER_INC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_INT_EN' -PERFCOUNTER_INT_EN__enumvalues = { - 0: 'PERFCOUNTER_INT_DISABLE', - 1: 'PERFCOUNTER_INT_ENABLE', -} -PERFCOUNTER_INT_DISABLE = 0 -PERFCOUNTER_INT_ENABLE = 1 -PERFCOUNTER_INT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_INT_TYPE' -PERFCOUNTER_INT_TYPE__enumvalues = { - 0: 'PERFCOUNTER_INT_TYPE_LEVEL', - 1: 'PERFCOUNTER_INT_TYPE_PULSE', -} -PERFCOUNTER_INT_TYPE_LEVEL = 0 -PERFCOUNTER_INT_TYPE_PULSE = 1 -PERFCOUNTER_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_OFF_MASK' -PERFCOUNTER_OFF_MASK__enumvalues = { - 0: 'PERFCOUNTER_OFF_MASK_DISABLE', - 1: 'PERFCOUNTER_OFF_MASK_ENABLE', -} -PERFCOUNTER_OFF_MASK_DISABLE = 0 -PERFCOUNTER_OFF_MASK_ENABLE = 1 -PERFCOUNTER_OFF_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_RESTART_EN' -PERFCOUNTER_RESTART_EN__enumvalues = { - 0: 'PERFCOUNTER_RESTART_DISABLE', - 1: 'PERFCOUNTER_RESTART_ENABLE', -} -PERFCOUNTER_RESTART_DISABLE = 0 -PERFCOUNTER_RESTART_ENABLE = 1 -PERFCOUNTER_RESTART_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_RUNEN_MODE' -PERFCOUNTER_RUNEN_MODE__enumvalues = { - 0: 'PERFCOUNTER_RUNEN_MODE_LEVEL', - 1: 'PERFCOUNTER_RUNEN_MODE_EDGE', -} -PERFCOUNTER_RUNEN_MODE_LEVEL = 0 -PERFCOUNTER_RUNEN_MODE_EDGE = 1 -PERFCOUNTER_RUNEN_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL0' -PERFCOUNTER_STATE_SEL0__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL0_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL0_LOCAL', -} -PERFCOUNTER_STATE_SEL0_GLOBAL = 0 -PERFCOUNTER_STATE_SEL0_LOCAL = 1 -PERFCOUNTER_STATE_SEL0 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL1' -PERFCOUNTER_STATE_SEL1__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL1_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL1_LOCAL', -} -PERFCOUNTER_STATE_SEL1_GLOBAL = 0 -PERFCOUNTER_STATE_SEL1_LOCAL = 1 -PERFCOUNTER_STATE_SEL1 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL2' -PERFCOUNTER_STATE_SEL2__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL2_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL2_LOCAL', -} -PERFCOUNTER_STATE_SEL2_GLOBAL = 0 -PERFCOUNTER_STATE_SEL2_LOCAL = 1 -PERFCOUNTER_STATE_SEL2 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL3' -PERFCOUNTER_STATE_SEL3__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL3_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL3_LOCAL', -} -PERFCOUNTER_STATE_SEL3_GLOBAL = 0 -PERFCOUNTER_STATE_SEL3_LOCAL = 1 -PERFCOUNTER_STATE_SEL3 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL4' -PERFCOUNTER_STATE_SEL4__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL4_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL4_LOCAL', -} -PERFCOUNTER_STATE_SEL4_GLOBAL = 0 -PERFCOUNTER_STATE_SEL4_LOCAL = 1 -PERFCOUNTER_STATE_SEL4 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL5' -PERFCOUNTER_STATE_SEL5__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL5_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL5_LOCAL', -} -PERFCOUNTER_STATE_SEL5_GLOBAL = 0 -PERFCOUNTER_STATE_SEL5_LOCAL = 1 -PERFCOUNTER_STATE_SEL5 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL6' -PERFCOUNTER_STATE_SEL6__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL6_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL6_LOCAL', -} -PERFCOUNTER_STATE_SEL6_GLOBAL = 0 -PERFCOUNTER_STATE_SEL6_LOCAL = 1 -PERFCOUNTER_STATE_SEL6 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL7' -PERFCOUNTER_STATE_SEL7__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL7_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL7_LOCAL', -} -PERFCOUNTER_STATE_SEL7_GLOBAL = 0 -PERFCOUNTER_STATE_SEL7_LOCAL = 1 -PERFCOUNTER_STATE_SEL7 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_CNTOFF_AND_OR' -PERFMON_CNTOFF_AND_OR__enumvalues = { - 0: 'PERFMON_CNTOFF_OR', - 1: 'PERFMON_CNTOFF_AND', -} -PERFMON_CNTOFF_OR = 0 -PERFMON_CNTOFF_AND = 1 -PERFMON_CNTOFF_AND_OR = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_CNTOFF_INT_EN' -PERFMON_CNTOFF_INT_EN__enumvalues = { - 0: 'PERFMON_CNTOFF_INT_DISABLE', - 1: 'PERFMON_CNTOFF_INT_ENABLE', -} -PERFMON_CNTOFF_INT_DISABLE = 0 -PERFMON_CNTOFF_INT_ENABLE = 1 -PERFMON_CNTOFF_INT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_CNTOFF_INT_TYPE' -PERFMON_CNTOFF_INT_TYPE__enumvalues = { - 0: 'PERFMON_CNTOFF_INT_TYPE_LEVEL', - 1: 'PERFMON_CNTOFF_INT_TYPE_PULSE', -} -PERFMON_CNTOFF_INT_TYPE_LEVEL = 0 -PERFMON_CNTOFF_INT_TYPE_PULSE = 1 -PERFMON_CNTOFF_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_STATE' -PERFMON_STATE__enumvalues = { - 0: 'PERFMON_STATE_RESET', - 1: 'PERFMON_STATE_START', - 2: 'PERFMON_STATE_FREEZE', - 3: 'PERFMON_STATE_HW', -} -PERFMON_STATE_RESET = 0 -PERFMON_STATE_START = 1 -PERFMON_STATE_FREEZE = 2 -PERFMON_STATE_HW = 3 -PERFMON_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'BIGK_FRAGMENT_SIZE' -BIGK_FRAGMENT_SIZE__enumvalues = { - 0: 'VM_PG_SIZE_4KB', - 1: 'VM_PG_SIZE_8KB', - 2: 'VM_PG_SIZE_16KB', - 3: 'VM_PG_SIZE_32KB', - 4: 'VM_PG_SIZE_64KB', - 5: 'VM_PG_SIZE_128KB', - 6: 'VM_PG_SIZE_256KB', - 7: 'VM_PG_SIZE_512KB', - 8: 'VM_PG_SIZE_1024KB', - 9: 'VM_PG_SIZE_2048KB', -} -VM_PG_SIZE_4KB = 0 -VM_PG_SIZE_8KB = 1 -VM_PG_SIZE_16KB = 2 -VM_PG_SIZE_32KB = 3 -VM_PG_SIZE_64KB = 4 -VM_PG_SIZE_128KB = 5 -VM_PG_SIZE_256KB = 6 -VM_PG_SIZE_512KB = 7 -VM_PG_SIZE_1024KB = 8 -VM_PG_SIZE_2048KB = 9 -BIGK_FRAGMENT_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'CHUNK_SIZE' -CHUNK_SIZE__enumvalues = { - 0: 'CHUNK_SIZE_1KB', - 1: 'CHUNK_SIZE_2KB', - 2: 'CHUNK_SIZE_4KB', - 3: 'CHUNK_SIZE_8KB', - 4: 'CHUNK_SIZE_16KB', - 5: 'CHUNK_SIZE_32KB', - 6: 'CHUNK_SIZE_64KB', -} -CHUNK_SIZE_1KB = 0 -CHUNK_SIZE_2KB = 1 -CHUNK_SIZE_4KB = 2 -CHUNK_SIZE_8KB = 3 -CHUNK_SIZE_16KB = 4 -CHUNK_SIZE_32KB = 5 -CHUNK_SIZE_64KB = 6 -CHUNK_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'COMPAT_LEVEL' -COMPAT_LEVEL__enumvalues = { - 0: 'ADDR_GEN_ZERO', - 1: 'ADDR_GEN_ONE', - 2: 'ADDR_GEN_TWO', - 3: 'ADDR_RESERVED', -} -ADDR_GEN_ZERO = 0 -ADDR_GEN_ONE = 1 -ADDR_GEN_TWO = 2 -ADDR_RESERVED = 3 -COMPAT_LEVEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPTE_GROUP_SIZE' -DPTE_GROUP_SIZE__enumvalues = { - 0: 'DPTE_GROUP_SIZE_64B', - 1: 'DPTE_GROUP_SIZE_128B', - 2: 'DPTE_GROUP_SIZE_256B', - 3: 'DPTE_GROUP_SIZE_512B', - 4: 'DPTE_GROUP_SIZE_1024B', - 5: 'DPTE_GROUP_SIZE_2048B', -} -DPTE_GROUP_SIZE_64B = 0 -DPTE_GROUP_SIZE_128B = 1 -DPTE_GROUP_SIZE_256B = 2 -DPTE_GROUP_SIZE_512B = 3 -DPTE_GROUP_SIZE_1024B = 4 -DPTE_GROUP_SIZE_2048B = 5 -DPTE_GROUP_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'FORCE_ONE_ROW_FOR_FRAME' -FORCE_ONE_ROW_FOR_FRAME__enumvalues = { - 0: 'FORCE_ONE_ROW_FOR_FRAME_0', - 1: 'FORCE_ONE_ROW_FOR_FRAME_1', -} -FORCE_ONE_ROW_FOR_FRAME_0 = 0 -FORCE_ONE_ROW_FOR_FRAME_1 = 1 -FORCE_ONE_ROW_FOR_FRAME = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_BLANK_EN' -HUBP_BLANK_EN__enumvalues = { - 0: 'HUBP_BLANK_SW_DEASSERT', - 1: 'HUBP_BLANK_SW_ASSERT', -} -HUBP_BLANK_SW_DEASSERT = 0 -HUBP_BLANK_SW_ASSERT = 1 -HUBP_BLANK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_IN_BLANK' -HUBP_IN_BLANK__enumvalues = { - 0: 'HUBP_IN_ACTIVE', - 1: 'HUBP_IN_VBLANK', -} -HUBP_IN_ACTIVE = 0 -HUBP_IN_VBLANK = 1 -HUBP_IN_BLANK = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_MEASURE_WIN_MODE_DCFCLK' -HUBP_MEASURE_WIN_MODE_DCFCLK__enumvalues = { - 0: 'HUBP_MEASURE_WIN_MODE_DCFCLK_0', - 1: 'HUBP_MEASURE_WIN_MODE_DCFCLK_1', - 2: 'HUBP_MEASURE_WIN_MODE_DCFCLK_2', - 3: 'HUBP_MEASURE_WIN_MODE_DCFCLK_3', -} -HUBP_MEASURE_WIN_MODE_DCFCLK_0 = 0 -HUBP_MEASURE_WIN_MODE_DCFCLK_1 = 1 -HUBP_MEASURE_WIN_MODE_DCFCLK_2 = 2 -HUBP_MEASURE_WIN_MODE_DCFCLK_3 = 3 -HUBP_MEASURE_WIN_MODE_DCFCLK = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_NO_OUTSTANDING_REQ' -HUBP_NO_OUTSTANDING_REQ__enumvalues = { - 0: 'OUTSTANDING_REQ', - 1: 'NO_OUTSTANDING_REQ', -} -OUTSTANDING_REQ = 0 -NO_OUTSTANDING_REQ = 1 -HUBP_NO_OUTSTANDING_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_SOFT_RESET' -HUBP_SOFT_RESET__enumvalues = { - 0: 'HUBP_SOFT_RESET_ON', - 1: 'HUBP_SOFT_RESET_OFF', -} -HUBP_SOFT_RESET_ON = 0 -HUBP_SOFT_RESET_OFF = 1 -HUBP_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_TTU_DISABLE' -HUBP_TTU_DISABLE__enumvalues = { - 0: 'HUBP_TTU_ENABLED', - 1: 'HUBP_TTU_DISABLED', -} -HUBP_TTU_ENABLED = 0 -HUBP_TTU_DISABLED = 1 -HUBP_TTU_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_VREADY_AT_OR_AFTER_VSYNC' -HUBP_VREADY_AT_OR_AFTER_VSYNC__enumvalues = { - 0: 'VREADY_BEFORE_VSYNC', - 1: 'VREADY_AT_OR_AFTER_VSYNC', -} -VREADY_BEFORE_VSYNC = 0 -VREADY_AT_OR_AFTER_VSYNC = 1 -HUBP_VREADY_AT_OR_AFTER_VSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_VTG_SEL' -HUBP_VTG_SEL__enumvalues = { - 0: 'VTG_SEL_0', - 1: 'VTG_SEL_1', - 2: 'VTG_SEL_2', - 3: 'VTG_SEL_3', - 4: 'VTG_SEL_4', - 5: 'VTG_SEL_5', -} -VTG_SEL_0 = 0 -VTG_SEL_1 = 1 -VTG_SEL_2 = 2 -VTG_SEL_3 = 3 -VTG_SEL_4 = 4 -VTG_SEL_5 = 5 -HUBP_VTG_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'H_MIRROR_EN' -H_MIRROR_EN__enumvalues = { - 0: 'HW_MIRRORING_DISABLE', - 1: 'HW_MIRRORING_ENABLE', -} -HW_MIRRORING_DISABLE = 0 -HW_MIRRORING_ENABLE = 1 -H_MIRROR_EN = ctypes.c_uint32 # enum - -# values for enumeration 'LEGACY_PIPE_INTERLEAVE' -LEGACY_PIPE_INTERLEAVE__enumvalues = { - 0: 'LEGACY_PIPE_INTERLEAVE_256B', - 1: 'LEGACY_PIPE_INTERLEAVE_512B', -} -LEGACY_PIPE_INTERLEAVE_256B = 0 -LEGACY_PIPE_INTERLEAVE_512B = 1 -LEGACY_PIPE_INTERLEAVE = ctypes.c_uint32 # enum - -# values for enumeration 'META_CHUNK_SIZE' -META_CHUNK_SIZE__enumvalues = { - 0: 'META_CHUNK_SIZE_1KB', - 1: 'META_CHUNK_SIZE_2KB', - 2: 'META_CHUNK_SIZE_4KB', - 3: 'META_CHUNK_SIZE_8KB', -} -META_CHUNK_SIZE_1KB = 0 -META_CHUNK_SIZE_2KB = 1 -META_CHUNK_SIZE_4KB = 2 -META_CHUNK_SIZE_8KB = 3 -META_CHUNK_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'META_LINEAR' -META_LINEAR__enumvalues = { - 0: 'META_SURF_TILED', - 1: 'META_SURF_LINEAR', -} -META_SURF_TILED = 0 -META_SURF_LINEAR = 1 -META_LINEAR = ctypes.c_uint32 # enum - -# values for enumeration 'MIN_CHUNK_SIZE' -MIN_CHUNK_SIZE__enumvalues = { - 0: 'NO_MIN_CHUNK_SIZE', - 1: 'MIN_CHUNK_SIZE_256B', - 2: 'MIN_CHUNK_SIZE_512B', - 3: 'MIN_CHUNK_SIZE_1024B', -} -NO_MIN_CHUNK_SIZE = 0 -MIN_CHUNK_SIZE_256B = 1 -MIN_CHUNK_SIZE_512B = 2 -MIN_CHUNK_SIZE_1024B = 3 -MIN_CHUNK_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'MIN_META_CHUNK_SIZE' -MIN_META_CHUNK_SIZE__enumvalues = { - 0: 'NO_MIN_META_CHUNK_SIZE', - 1: 'MIN_META_CHUNK_SIZE_64B', - 2: 'MIN_META_CHUNK_SIZE_128B', - 3: 'MIN_META_CHUNK_SIZE_256B', -} -NO_MIN_META_CHUNK_SIZE = 0 -MIN_META_CHUNK_SIZE_64B = 1 -MIN_META_CHUNK_SIZE_128B = 2 -MIN_META_CHUNK_SIZE_256B = 3 -MIN_META_CHUNK_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_ALIGNED' -PIPE_ALIGNED__enumvalues = { - 0: 'PIPE_UNALIGNED_SURF', - 1: 'PIPE_ALIGNED_SURF', -} -PIPE_UNALIGNED_SURF = 0 -PIPE_ALIGNED_SURF = 1 -PIPE_ALIGNED = ctypes.c_uint32 # enum - -# values for enumeration 'PTE_BUFFER_MODE' -PTE_BUFFER_MODE__enumvalues = { - 0: 'PTE_BUFFER_MODE_0', - 1: 'PTE_BUFFER_MODE_1', -} -PTE_BUFFER_MODE_0 = 0 -PTE_BUFFER_MODE_1 = 1 -PTE_BUFFER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PTE_ROW_HEIGHT_LINEAR' -PTE_ROW_HEIGHT_LINEAR__enumvalues = { - 0: 'PTE_ROW_HEIGHT_LINEAR_8L', - 1: 'PTE_ROW_HEIGHT_LINEAR_16L', - 2: 'PTE_ROW_HEIGHT_LINEAR_32L', - 3: 'PTE_ROW_HEIGHT_LINEAR_64L', - 4: 'PTE_ROW_HEIGHT_LINEAR_128L', - 5: 'PTE_ROW_HEIGHT_LINEAR_256L', - 6: 'PTE_ROW_HEIGHT_LINEAR_512L', - 7: 'PTE_ROW_HEIGHT_LINEAR_1024L', -} -PTE_ROW_HEIGHT_LINEAR_8L = 0 -PTE_ROW_HEIGHT_LINEAR_16L = 1 -PTE_ROW_HEIGHT_LINEAR_32L = 2 -PTE_ROW_HEIGHT_LINEAR_64L = 3 -PTE_ROW_HEIGHT_LINEAR_128L = 4 -PTE_ROW_HEIGHT_LINEAR_256L = 5 -PTE_ROW_HEIGHT_LINEAR_512L = 6 -PTE_ROW_HEIGHT_LINEAR_1024L = 7 -PTE_ROW_HEIGHT_LINEAR = ctypes.c_uint32 # enum - -# values for enumeration 'ROTATION_ANGLE' -ROTATION_ANGLE__enumvalues = { - 0: 'ROTATE_0_DEGREES', - 1: 'ROTATE_90_DEGREES', - 2: 'ROTATE_180_DEGREES', - 3: 'ROTATE_270_DEGREES', -} -ROTATE_0_DEGREES = 0 -ROTATE_90_DEGREES = 1 -ROTATE_180_DEGREES = 2 -ROTATE_270_DEGREES = 3 -ROTATION_ANGLE = ctypes.c_uint32 # enum - -# values for enumeration 'SWATH_HEIGHT' -SWATH_HEIGHT__enumvalues = { - 0: 'SWATH_HEIGHT_1L', - 1: 'SWATH_HEIGHT_2L', - 2: 'SWATH_HEIGHT_4L', - 3: 'SWATH_HEIGHT_8L', - 4: 'SWATH_HEIGHT_16L', -} -SWATH_HEIGHT_1L = 0 -SWATH_HEIGHT_2L = 1 -SWATH_HEIGHT_4L = 2 -SWATH_HEIGHT_8L = 3 -SWATH_HEIGHT_16L = 4 -SWATH_HEIGHT = ctypes.c_uint32 # enum - -# values for enumeration 'USE_MALL_FOR_CURSOR' -USE_MALL_FOR_CURSOR__enumvalues = { - 0: 'USE_MALL_FOR_CURSOR_0', - 1: 'USE_MALL_FOR_CURSOR_1', -} -USE_MALL_FOR_CURSOR_0 = 0 -USE_MALL_FOR_CURSOR_1 = 1 -USE_MALL_FOR_CURSOR = ctypes.c_uint32 # enum - -# values for enumeration 'USE_MALL_FOR_PSTATE_CHANGE' -USE_MALL_FOR_PSTATE_CHANGE__enumvalues = { - 0: 'USE_MALL_FOR_PSTATE_CHANGE_0', - 1: 'USE_MALL_FOR_PSTATE_CHANGE_1', -} -USE_MALL_FOR_PSTATE_CHANGE_0 = 0 -USE_MALL_FOR_PSTATE_CHANGE_1 = 1 -USE_MALL_FOR_PSTATE_CHANGE = ctypes.c_uint32 # enum - -# values for enumeration 'USE_MALL_FOR_STATIC_SCREEN' -USE_MALL_FOR_STATIC_SCREEN__enumvalues = { - 0: 'USE_MALL_FOR_STATIC_SCREEN_0', - 1: 'USE_MALL_FOR_STATIC_SCREEN_1', -} -USE_MALL_FOR_STATIC_SCREEN_0 = 0 -USE_MALL_FOR_STATIC_SCREEN_1 = 1 -USE_MALL_FOR_STATIC_SCREEN = ctypes.c_uint32 # enum - -# values for enumeration 'VMPG_SIZE' -VMPG_SIZE__enumvalues = { - 0: 'VMPG_SIZE_4KB', - 1: 'VMPG_SIZE_64KB', -} -VMPG_SIZE_4KB = 0 -VMPG_SIZE_64KB = 1 -VMPG_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'VM_GROUP_SIZE' -VM_GROUP_SIZE__enumvalues = { - 0: 'VM_GROUP_SIZE_64B', - 1: 'VM_GROUP_SIZE_128B', - 2: 'VM_GROUP_SIZE_256B', - 3: 'VM_GROUP_SIZE_512B', - 4: 'VM_GROUP_SIZE_1024B', - 5: 'VM_GROUP_SIZE_2048B', -} -VM_GROUP_SIZE_64B = 0 -VM_GROUP_SIZE_128B = 1 -VM_GROUP_SIZE_256B = 2 -VM_GROUP_SIZE_512B = 3 -VM_GROUP_SIZE_1024B = 4 -VM_GROUP_SIZE_2048B = 5 -VM_GROUP_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'DFQ_MIN_FREE_ENTRIES' -DFQ_MIN_FREE_ENTRIES__enumvalues = { - 0: 'DFQ_MIN_FREE_ENTRIES_0', - 1: 'DFQ_MIN_FREE_ENTRIES_1', - 2: 'DFQ_MIN_FREE_ENTRIES_2', - 3: 'DFQ_MIN_FREE_ENTRIES_3', - 4: 'DFQ_MIN_FREE_ENTRIES_4', - 5: 'DFQ_MIN_FREE_ENTRIES_5', - 6: 'DFQ_MIN_FREE_ENTRIES_6', - 7: 'DFQ_MIN_FREE_ENTRIES_7', -} -DFQ_MIN_FREE_ENTRIES_0 = 0 -DFQ_MIN_FREE_ENTRIES_1 = 1 -DFQ_MIN_FREE_ENTRIES_2 = 2 -DFQ_MIN_FREE_ENTRIES_3 = 3 -DFQ_MIN_FREE_ENTRIES_4 = 4 -DFQ_MIN_FREE_ENTRIES_5 = 5 -DFQ_MIN_FREE_ENTRIES_6 = 6 -DFQ_MIN_FREE_ENTRIES_7 = 7 -DFQ_MIN_FREE_ENTRIES = ctypes.c_uint32 # enum - -# values for enumeration 'DFQ_NUM_ENTRIES' -DFQ_NUM_ENTRIES__enumvalues = { - 0: 'DFQ_NUM_ENTRIES_0', - 1: 'DFQ_NUM_ENTRIES_1', - 2: 'DFQ_NUM_ENTRIES_2', - 3: 'DFQ_NUM_ENTRIES_3', - 4: 'DFQ_NUM_ENTRIES_4', - 5: 'DFQ_NUM_ENTRIES_5', - 6: 'DFQ_NUM_ENTRIES_6', - 7: 'DFQ_NUM_ENTRIES_7', - 8: 'DFQ_NUM_ENTRIES_8', -} -DFQ_NUM_ENTRIES_0 = 0 -DFQ_NUM_ENTRIES_1 = 1 -DFQ_NUM_ENTRIES_2 = 2 -DFQ_NUM_ENTRIES_3 = 3 -DFQ_NUM_ENTRIES_4 = 4 -DFQ_NUM_ENTRIES_5 = 5 -DFQ_NUM_ENTRIES_6 = 6 -DFQ_NUM_ENTRIES_7 = 7 -DFQ_NUM_ENTRIES_8 = 8 -DFQ_NUM_ENTRIES = ctypes.c_uint32 # enum - -# values for enumeration 'DFQ_SIZE' -DFQ_SIZE__enumvalues = { - 0: 'DFQ_SIZE_0', - 1: 'DFQ_SIZE_1', - 2: 'DFQ_SIZE_2', - 3: 'DFQ_SIZE_3', - 4: 'DFQ_SIZE_4', - 5: 'DFQ_SIZE_5', - 6: 'DFQ_SIZE_6', - 7: 'DFQ_SIZE_7', -} -DFQ_SIZE_0 = 0 -DFQ_SIZE_1 = 1 -DFQ_SIZE_2 = 2 -DFQ_SIZE_3 = 3 -DFQ_SIZE_4 = 4 -DFQ_SIZE_5 = 5 -DFQ_SIZE_6 = 6 -DFQ_SIZE_7 = 7 -DFQ_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_VM_DONE' -DMDATA_VM_DONE__enumvalues = { - 0: 'DMDATA_VM_IS_NOT_DONE', - 1: 'DMDATA_VM_IS_DONE', -} -DMDATA_VM_IS_NOT_DONE = 0 -DMDATA_VM_IS_DONE = 1 -DMDATA_VM_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'EXPANSION_MODE' -EXPANSION_MODE__enumvalues = { - 0: 'EXPANSION_MODE_ZERO', - 1: 'EXPANSION_MODE_CONSERVATIVE', - 2: 'EXPANSION_MODE_OPTIMAL', -} -EXPANSION_MODE_ZERO = 0 -EXPANSION_MODE_CONSERVATIVE = 1 -EXPANSION_MODE_OPTIMAL = 2 -EXPANSION_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FLIP_RATE' -FLIP_RATE__enumvalues = { - 0: 'FLIP_RATE_0', - 1: 'FLIP_RATE_1', - 2: 'FLIP_RATE_2', - 3: 'FLIP_RATE_3', - 4: 'FLIP_RATE_4', - 5: 'FLIP_RATE_5', - 6: 'FLIP_RATE_6', - 7: 'FLIP_RATE_7', -} -FLIP_RATE_0 = 0 -FLIP_RATE_1 = 1 -FLIP_RATE_2 = 2 -FLIP_RATE_3 = 3 -FLIP_RATE_4 = 4 -FLIP_RATE_5 = 5 -FLIP_RATE_6 = 6 -FLIP_RATE_7 = 7 -FLIP_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'INT_MASK' -INT_MASK__enumvalues = { - 0: 'INT_DISABLED', - 1: 'INT_ENABLED', -} -INT_DISABLED = 0 -INT_ENABLED = 1 -INT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_IN_FLUSH_URGENT' -PIPE_IN_FLUSH_URGENT__enumvalues = { - 0: 'PIPE_IN_FLUSH_URGENT_ENABLE', - 1: 'PIPE_IN_FLUSH_URGENT_DISABLE', -} -PIPE_IN_FLUSH_URGENT_ENABLE = 0 -PIPE_IN_FLUSH_URGENT_DISABLE = 1 -PIPE_IN_FLUSH_URGENT = ctypes.c_uint32 # enum - -# values for enumeration 'PRQ_MRQ_FLUSH_URGENT' -PRQ_MRQ_FLUSH_URGENT__enumvalues = { - 0: 'PRQ_MRQ_FLUSH_URGENT_ENABLE', - 1: 'PRQ_MRQ_FLUSH_URGENT_DISABLE', -} -PRQ_MRQ_FLUSH_URGENT_ENABLE = 0 -PRQ_MRQ_FLUSH_URGENT_DISABLE = 1 -PRQ_MRQ_FLUSH_URGENT = ctypes.c_uint32 # enum - -# values for enumeration 'ROW_TTU_MODE' -ROW_TTU_MODE__enumvalues = { - 0: 'END_OF_ROW_MODE', - 1: 'WATERMARK_MODE', -} -END_OF_ROW_MODE = 0 -WATERMARK_MODE = 1 -ROW_TTU_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_DCC' -SURFACE_DCC__enumvalues = { - 0: 'SURFACE_IS_NOT_DCC', - 1: 'SURFACE_IS_DCC', -} -SURFACE_IS_NOT_DCC = 0 -SURFACE_IS_DCC = 1 -SURFACE_DCC = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_DCC_IND_128B' -SURFACE_DCC_IND_128B__enumvalues = { - 0: 'SURFACE_DCC_IS_NOT_IND_128B', - 1: 'SURFACE_DCC_IS_IND_128B', -} -SURFACE_DCC_IS_NOT_IND_128B = 0 -SURFACE_DCC_IS_IND_128B = 1 -SURFACE_DCC_IND_128B = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_DCC_IND_64B' -SURFACE_DCC_IND_64B__enumvalues = { - 0: 'SURFACE_DCC_IS_NOT_IND_64B', - 1: 'SURFACE_DCC_IS_IND_64B', -} -SURFACE_DCC_IS_NOT_IND_64B = 0 -SURFACE_DCC_IS_IND_64B = 1 -SURFACE_DCC_IND_64B = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_DCC_IND_BLK' -SURFACE_DCC_IND_BLK__enumvalues = { - 0: 'SURFACE_DCC_BLOCK_IS_UNCONSTRAINED', - 1: 'SURFACE_DCC_BLOCK_IS_IND_64B', - 2: 'SURFACE_DCC_BLOCK_IS_IND_128B', - 3: 'SURFACE_DCC_BLOCK_IS_IND_64B_NO_128BCL', -} -SURFACE_DCC_BLOCK_IS_UNCONSTRAINED = 0 -SURFACE_DCC_BLOCK_IS_IND_64B = 1 -SURFACE_DCC_BLOCK_IS_IND_128B = 2 -SURFACE_DCC_BLOCK_IS_IND_64B_NO_128BCL = 3 -SURFACE_DCC_IND_BLK = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_AWAY_INT_TYPE' -SURFACE_FLIP_AWAY_INT_TYPE__enumvalues = { - 0: 'SURFACE_FLIP_AWAY_INT_LEVEL', - 1: 'SURFACE_FLIP_AWAY_INT_PULSE', -} -SURFACE_FLIP_AWAY_INT_LEVEL = 0 -SURFACE_FLIP_AWAY_INT_PULSE = 1 -SURFACE_FLIP_AWAY_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_EXEC_DEBUG_MODE' -SURFACE_FLIP_EXEC_DEBUG_MODE__enumvalues = { - 0: 'SURFACE_FLIP_EXEC_NORMAL_MODE', - 1: 'SURFACE_FLIP_EXEC_DEBUG_MODE_ENABLE', -} -SURFACE_FLIP_EXEC_NORMAL_MODE = 0 -SURFACE_FLIP_EXEC_DEBUG_MODE_ENABLE = 1 -SURFACE_FLIP_EXEC_DEBUG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_INT_TYPE' -SURFACE_FLIP_INT_TYPE__enumvalues = { - 0: 'SURFACE_FLIP_INT_LEVEL', - 1: 'SURFACE_FLIP_INT_PULSE', -} -SURFACE_FLIP_INT_LEVEL = 0 -SURFACE_FLIP_INT_PULSE = 1 -SURFACE_FLIP_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_IN_STEREOSYNC' -SURFACE_FLIP_IN_STEREOSYNC__enumvalues = { - 0: 'SURFACE_FLIP_NOT_IN_STEREOSYNC_MODE', - 1: 'SURFACE_FLIP_IN_STEREOSYNC_MODE', -} -SURFACE_FLIP_NOT_IN_STEREOSYNC_MODE = 0 -SURFACE_FLIP_IN_STEREOSYNC_MODE = 1 -SURFACE_FLIP_IN_STEREOSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_MODE_FOR_STEREOSYNC' -SURFACE_FLIP_MODE_FOR_STEREOSYNC__enumvalues = { - 0: 'FLIP_ANY_FRAME', - 1: 'FLIP_LEFT_EYE', - 2: 'FLIP_RIGHT_EYE', - 3: 'SURFACE_FLIP_MODE_FOR_STEREOSYNC_RESERVED', -} -FLIP_ANY_FRAME = 0 -FLIP_LEFT_EYE = 1 -FLIP_RIGHT_EYE = 2 -SURFACE_FLIP_MODE_FOR_STEREOSYNC_RESERVED = 3 -SURFACE_FLIP_MODE_FOR_STEREOSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_STEREO_SELECT_DISABLE' -SURFACE_FLIP_STEREO_SELECT_DISABLE__enumvalues = { - 0: 'SURFACE_FLIP_STEREO_SELECT_ENABLED', - 1: 'SURFACE_FLIP_STEREO_SELECT_DISABLED', -} -SURFACE_FLIP_STEREO_SELECT_ENABLED = 0 -SURFACE_FLIP_STEREO_SELECT_DISABLED = 1 -SURFACE_FLIP_STEREO_SELECT_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_STEREO_SELECT_POLARITY' -SURFACE_FLIP_STEREO_SELECT_POLARITY__enumvalues = { - 0: 'SURFACE_FLIP_STEREO_SELECT_POLARITY_NOT_INVERT', - 1: 'SURFACE_FLIP_STEREO_SELECT_POLARITY_INVERT', -} -SURFACE_FLIP_STEREO_SELECT_POLARITY_NOT_INVERT = 0 -SURFACE_FLIP_STEREO_SELECT_POLARITY_INVERT = 1 -SURFACE_FLIP_STEREO_SELECT_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_TYPE' -SURFACE_FLIP_TYPE__enumvalues = { - 0: 'SURFACE_V_FLIP', - 1: 'SURFACE_I_FLIP', -} -SURFACE_V_FLIP = 0 -SURFACE_I_FLIP = 1 -SURFACE_FLIP_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_VUPDATE_SKIP_NUM' -SURFACE_FLIP_VUPDATE_SKIP_NUM__enumvalues = { - 0: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_0', - 1: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_1', - 2: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_2', - 3: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_3', - 4: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_4', - 5: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_5', - 6: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_6', - 7: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_7', - 8: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_8', - 9: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_9', - 10: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_10', - 11: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_11', - 12: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_12', - 13: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_13', - 14: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_14', - 15: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_15', -} -SURFACE_FLIP_VUPDATE_SKIP_NUM_0 = 0 -SURFACE_FLIP_VUPDATE_SKIP_NUM_1 = 1 -SURFACE_FLIP_VUPDATE_SKIP_NUM_2 = 2 -SURFACE_FLIP_VUPDATE_SKIP_NUM_3 = 3 -SURFACE_FLIP_VUPDATE_SKIP_NUM_4 = 4 -SURFACE_FLIP_VUPDATE_SKIP_NUM_5 = 5 -SURFACE_FLIP_VUPDATE_SKIP_NUM_6 = 6 -SURFACE_FLIP_VUPDATE_SKIP_NUM_7 = 7 -SURFACE_FLIP_VUPDATE_SKIP_NUM_8 = 8 -SURFACE_FLIP_VUPDATE_SKIP_NUM_9 = 9 -SURFACE_FLIP_VUPDATE_SKIP_NUM_10 = 10 -SURFACE_FLIP_VUPDATE_SKIP_NUM_11 = 11 -SURFACE_FLIP_VUPDATE_SKIP_NUM_12 = 12 -SURFACE_FLIP_VUPDATE_SKIP_NUM_13 = 13 -SURFACE_FLIP_VUPDATE_SKIP_NUM_14 = 14 -SURFACE_FLIP_VUPDATE_SKIP_NUM_15 = 15 -SURFACE_FLIP_VUPDATE_SKIP_NUM = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_INUSE_RAED_NO_LATCH' -SURFACE_INUSE_RAED_NO_LATCH__enumvalues = { - 0: 'SURFACE_INUSE_IS_LATCHED', - 1: 'SURFACE_INUSE_IS_NOT_LATCHED', -} -SURFACE_INUSE_IS_LATCHED = 0 -SURFACE_INUSE_IS_NOT_LATCHED = 1 -SURFACE_INUSE_RAED_NO_LATCH = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_TMZ' -SURFACE_TMZ__enumvalues = { - 0: 'SURFACE_IS_NOT_TMZ', - 1: 'SURFACE_IS_TMZ', -} -SURFACE_IS_NOT_TMZ = 0 -SURFACE_IS_TMZ = 1 -SURFACE_TMZ = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_UPDATE_LOCK' -SURFACE_UPDATE_LOCK__enumvalues = { - 0: 'SURFACE_UPDATE_IS_UNLOCKED', - 1: 'SURFACE_UPDATE_IS_LOCKED', -} -SURFACE_UPDATE_IS_UNLOCKED = 0 -SURFACE_UPDATE_IS_LOCKED = 1 -SURFACE_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'CROSSBAR_FOR_ALPHA' -CROSSBAR_FOR_ALPHA__enumvalues = { - 0: 'ALPHA_DATA_ONTO_ALPHA_PORT', - 1: 'Y_G_DATA_ONTO_ALPHA_PORT', - 2: 'CB_B_DATA_ONTO_ALPHA_PORT', - 3: 'CR_R_DATA_ONTO_ALPHA_PORT', -} -ALPHA_DATA_ONTO_ALPHA_PORT = 0 -Y_G_DATA_ONTO_ALPHA_PORT = 1 -CB_B_DATA_ONTO_ALPHA_PORT = 2 -CR_R_DATA_ONTO_ALPHA_PORT = 3 -CROSSBAR_FOR_ALPHA = ctypes.c_uint32 # enum - -# values for enumeration 'CROSSBAR_FOR_CB_B' -CROSSBAR_FOR_CB_B__enumvalues = { - 0: 'ALPHA_DATA_ONTO_CB_B_PORT', - 1: 'Y_G_DATA_ONTO_CB_B_PORT', - 2: 'CB_B_DATA_ONTO_CB_B_PORT', - 3: 'CR_R_DATA_ONTO_CB_B_PORT', -} -ALPHA_DATA_ONTO_CB_B_PORT = 0 -Y_G_DATA_ONTO_CB_B_PORT = 1 -CB_B_DATA_ONTO_CB_B_PORT = 2 -CR_R_DATA_ONTO_CB_B_PORT = 3 -CROSSBAR_FOR_CB_B = ctypes.c_uint32 # enum - -# values for enumeration 'CROSSBAR_FOR_CR_R' -CROSSBAR_FOR_CR_R__enumvalues = { - 0: 'ALPHA_DATA_ONTO_CR_R_PORT', - 1: 'Y_G_DATA_ONTO_CR_R_PORT', - 2: 'CB_B_DATA_ONTO_CR_R_PORT', - 3: 'CR_R_DATA_ONTO_CR_R_PORT', -} -ALPHA_DATA_ONTO_CR_R_PORT = 0 -Y_G_DATA_ONTO_CR_R_PORT = 1 -CB_B_DATA_ONTO_CR_R_PORT = 2 -CR_R_DATA_ONTO_CR_R_PORT = 3 -CROSSBAR_FOR_CR_R = ctypes.c_uint32 # enum - -# values for enumeration 'CROSSBAR_FOR_Y_G' -CROSSBAR_FOR_Y_G__enumvalues = { - 0: 'ALPHA_DATA_ONTO_Y_G_PORT', - 1: 'Y_G_DATA_ONTO_Y_G_PORT', - 2: 'CB_B_DATA_ONTO_Y_G_PORT', - 3: 'CR_R_DATA_ONTO_Y_G_PORT', -} -ALPHA_DATA_ONTO_Y_G_PORT = 0 -Y_G_DATA_ONTO_Y_G_PORT = 1 -CB_B_DATA_ONTO_Y_G_PORT = 2 -CR_R_DATA_ONTO_Y_G_PORT = 3 -CROSSBAR_FOR_Y_G = ctypes.c_uint32 # enum - -# values for enumeration 'DETILE_BUFFER_PACKER_ENABLE' -DETILE_BUFFER_PACKER_ENABLE__enumvalues = { - 0: 'DETILE_BUFFER_PACKER_IS_DISABLE', - 1: 'DETILE_BUFFER_PACKER_IS_ENABLE', -} -DETILE_BUFFER_PACKER_IS_DISABLE = 0 -DETILE_BUFFER_PACKER_IS_ENABLE = 1 -DETILE_BUFFER_PACKER_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_DIS_MODE' -MEM_PWR_DIS_MODE__enumvalues = { - 0: 'MEM_POWER_DIS_MODE_ENABLE', - 1: 'MEM_POWER_DIS_MODE_DISABLE', -} -MEM_POWER_DIS_MODE_ENABLE = 0 -MEM_POWER_DIS_MODE_DISABLE = 1 -MEM_PWR_DIS_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_FORCE_MODE' -MEM_PWR_FORCE_MODE__enumvalues = { - 0: 'MEM_POWER_FORCE_MODE_OFF', - 1: 'MEM_POWER_FORCE_MODE_LIGHT_SLEEP', - 2: 'MEM_POWER_FORCE_MODE_DEEP_SLEEP', - 3: 'MEM_POWER_FORCE_MODE_SHUT_DOWN', -} -MEM_POWER_FORCE_MODE_OFF = 0 -MEM_POWER_FORCE_MODE_LIGHT_SLEEP = 1 -MEM_POWER_FORCE_MODE_DEEP_SLEEP = 2 -MEM_POWER_FORCE_MODE_SHUT_DOWN = 3 -MEM_PWR_FORCE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_STATUS' -MEM_PWR_STATUS__enumvalues = { - 0: 'MEM_POWER_STATUS_ON', - 1: 'MEM_POWER_STATUS_LIGHT_SLEEP', - 2: 'MEM_POWER_STATUS_DEEP_SLEEP', - 3: 'MEM_POWER_STATUS_SHUT_DOWN', -} -MEM_POWER_STATUS_ON = 0 -MEM_POWER_STATUS_LIGHT_SLEEP = 1 -MEM_POWER_STATUS_DEEP_SLEEP = 2 -MEM_POWER_STATUS_SHUT_DOWN = 3 -MEM_PWR_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_INT_MASK_MODE' -PIPE_INT_MASK_MODE__enumvalues = { - 0: 'PIPE_INT_MASK_MODE_DISABLE', - 1: 'PIPE_INT_MASK_MODE_ENABLE', -} -PIPE_INT_MASK_MODE_DISABLE = 0 -PIPE_INT_MASK_MODE_ENABLE = 1 -PIPE_INT_MASK_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_INT_TYPE_MODE' -PIPE_INT_TYPE_MODE__enumvalues = { - 0: 'PIPE_INT_TYPE_MODE_DISABLE', - 1: 'PIPE_INT_TYPE_MODE_ENABLE', -} -PIPE_INT_TYPE_MODE_DISABLE = 0 -PIPE_INT_TYPE_MODE_ENABLE = 1 -PIPE_INT_TYPE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PIXCDC_MEM_PWR_LIGHT_SLEEP_MODE' -PIXCDC_MEM_PWR_LIGHT_SLEEP_MODE__enumvalues = { - 0: 'PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 1: 'PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_1', -} -PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_OFF = 0 -PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_1 = 1 -PIXCDC_MEM_PWR_LIGHT_SLEEP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CROB_MEM_PWR_LIGHT_SLEEP_MODE' -CROB_MEM_PWR_LIGHT_SLEEP_MODE__enumvalues = { - 0: 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 1: 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_1', - 2: 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_2', -} -CROB_MEM_POWER_LIGHT_SLEEP_MODE_OFF = 0 -CROB_MEM_POWER_LIGHT_SLEEP_MODE_1 = 1 -CROB_MEM_POWER_LIGHT_SLEEP_MODE_2 = 2 -CROB_MEM_PWR_LIGHT_SLEEP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_2X_MAGNIFY' -CURSOR_2X_MAGNIFY__enumvalues = { - 0: 'CURSOR_2X_MAGNIFY_IS_DISABLE', - 1: 'CURSOR_2X_MAGNIFY_IS_ENABLE', -} -CURSOR_2X_MAGNIFY_IS_DISABLE = 0 -CURSOR_2X_MAGNIFY_IS_ENABLE = 1 -CURSOR_2X_MAGNIFY = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_ENABLE' -CURSOR_ENABLE__enumvalues = { - 0: 'CURSOR_IS_DISABLE', - 1: 'CURSOR_IS_ENABLE', -} -CURSOR_IS_DISABLE = 0 -CURSOR_IS_ENABLE = 1 -CURSOR_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_LINES_PER_CHUNK' -CURSOR_LINES_PER_CHUNK__enumvalues = { - 0: 'CURSOR_LINE_PER_CHUNK_1', - 1: 'CURSOR_LINE_PER_CHUNK_2', - 2: 'CURSOR_LINE_PER_CHUNK_4', - 3: 'CURSOR_LINE_PER_CHUNK_8', - 4: 'CURSOR_LINE_PER_CHUNK_16', -} -CURSOR_LINE_PER_CHUNK_1 = 0 -CURSOR_LINE_PER_CHUNK_2 = 1 -CURSOR_LINE_PER_CHUNK_4 = 2 -CURSOR_LINE_PER_CHUNK_8 = 3 -CURSOR_LINE_PER_CHUNK_16 = 4 -CURSOR_LINES_PER_CHUNK = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_MODE' -CURSOR_MODE__enumvalues = { - 0: 'CURSOR_MONO_2BIT', - 1: 'CURSOR_COLOR_24BIT_1BIT_AND', - 2: 'CURSOR_COLOR_24BIT_8BIT_ALPHA_PREMULT', - 3: 'CURSOR_COLOR_24BIT_8BIT_ALPHA_UNPREMULT', - 4: 'CURSOR_COLOR_64BIT_FP_PREMULT', - 5: 'CURSOR_COLOR_64BIT_FP_UNPREMULT', -} -CURSOR_MONO_2BIT = 0 -CURSOR_COLOR_24BIT_1BIT_AND = 1 -CURSOR_COLOR_24BIT_8BIT_ALPHA_PREMULT = 2 -CURSOR_COLOR_24BIT_8BIT_ALPHA_UNPREMULT = 3 -CURSOR_COLOR_64BIT_FP_PREMULT = 4 -CURSOR_COLOR_64BIT_FP_UNPREMULT = 5 -CURSOR_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_PERFMON_LATENCY_MEASURE_EN' -CURSOR_PERFMON_LATENCY_MEASURE_EN__enumvalues = { - 0: 'CURSOR_PERFMON_LATENCY_MEASURE_IS_DISABLED', - 1: 'CURSOR_PERFMON_LATENCY_MEASURE_IS_ENABLED', -} -CURSOR_PERFMON_LATENCY_MEASURE_IS_DISABLED = 0 -CURSOR_PERFMON_LATENCY_MEASURE_IS_ENABLED = 1 -CURSOR_PERFMON_LATENCY_MEASURE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_PERFMON_LATENCY_MEASURE_SEL' -CURSOR_PERFMON_LATENCY_MEASURE_SEL__enumvalues = { - 0: 'CURSOR_PERFMON_LATENCY_MEASURE_MC_LATENCY', - 1: 'CURSOR_PERFMON_LATENCY_MEASURE_CROB_LATENCY', -} -CURSOR_PERFMON_LATENCY_MEASURE_MC_LATENCY = 0 -CURSOR_PERFMON_LATENCY_MEASURE_CROB_LATENCY = 1 -CURSOR_PERFMON_LATENCY_MEASURE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_PITCH' -CURSOR_PITCH__enumvalues = { - 0: 'CURSOR_PITCH_64_PIXELS', - 1: 'CURSOR_PITCH_128_PIXELS', - 2: 'CURSOR_PITCH_256_PIXELS', -} -CURSOR_PITCH_64_PIXELS = 0 -CURSOR_PITCH_128_PIXELS = 1 -CURSOR_PITCH_256_PIXELS = 2 -CURSOR_PITCH = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_REQ_MODE' -CURSOR_REQ_MODE__enumvalues = { - 0: 'CURSOR_REQUEST_NORMALLY', - 1: 'CURSOR_REQUEST_EARLY', -} -CURSOR_REQUEST_NORMALLY = 0 -CURSOR_REQUEST_EARLY = 1 -CURSOR_REQ_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_SNOOP' -CURSOR_SNOOP__enumvalues = { - 0: 'CURSOR_IS_NOT_SNOOP', - 1: 'CURSOR_IS_SNOOP', -} -CURSOR_IS_NOT_SNOOP = 0 -CURSOR_IS_SNOOP = 1 -CURSOR_SNOOP = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_STEREO_EN' -CURSOR_STEREO_EN__enumvalues = { - 0: 'CURSOR_STEREO_IS_DISABLED', - 1: 'CURSOR_STEREO_IS_ENABLED', -} -CURSOR_STEREO_IS_DISABLED = 0 -CURSOR_STEREO_IS_ENABLED = 1 -CURSOR_STEREO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_SURFACE_TMZ' -CURSOR_SURFACE_TMZ__enumvalues = { - 0: 'CURSOR_SURFACE_IS_NOT_TMZ', - 1: 'CURSOR_SURFACE_IS_TMZ', -} -CURSOR_SURFACE_IS_NOT_TMZ = 0 -CURSOR_SURFACE_IS_TMZ = 1 -CURSOR_SURFACE_TMZ = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_SYSTEM' -CURSOR_SYSTEM__enumvalues = { - 0: 'CURSOR_IN_SYSTEM_PHYSICAL_ADDRESS', - 1: 'CURSOR_IN_GUEST_PHYSICAL_ADDRESS', -} -CURSOR_IN_SYSTEM_PHYSICAL_ADDRESS = 0 -CURSOR_IN_GUEST_PHYSICAL_ADDRESS = 1 -CURSOR_SYSTEM = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS' -CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS__enumvalues = { - 0: 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_0', - 1: 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_1', -} -CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_0 = 0 -CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_1 = 1 -CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_DONE' -DMDATA_DONE__enumvalues = { - 0: 'DMDATA_NOT_SENT_TO_DIG', - 1: 'DMDATA_SENT_TO_DIG', -} -DMDATA_NOT_SENT_TO_DIG = 0 -DMDATA_SENT_TO_DIG = 1 -DMDATA_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_MODE' -DMDATA_MODE__enumvalues = { - 0: 'DMDATA_SOFTWARE_UPDATE_MODE', - 1: 'DMDATA_HARDWARE_UPDATE_MODE', -} -DMDATA_SOFTWARE_UPDATE_MODE = 0 -DMDATA_HARDWARE_UPDATE_MODE = 1 -DMDATA_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_QOS_MODE' -DMDATA_QOS_MODE__enumvalues = { - 0: 'DMDATA_QOS_LEVEL_FROM_TTU', - 1: 'DMDATA_QOS_LEVEL_FROM_SOFTWARE', -} -DMDATA_QOS_LEVEL_FROM_TTU = 0 -DMDATA_QOS_LEVEL_FROM_SOFTWARE = 1 -DMDATA_QOS_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_REPEAT' -DMDATA_REPEAT__enumvalues = { - 0: 'DMDATA_USE_FOR_CURRENT_FRAME_ONLY', - 1: 'DMDATA_USE_FOR_CURRENT_AND_FUTURE_FRAMES', -} -DMDATA_USE_FOR_CURRENT_FRAME_ONLY = 0 -DMDATA_USE_FOR_CURRENT_AND_FUTURE_FRAMES = 1 -DMDATA_REPEAT = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_UNDERFLOW' -DMDATA_UNDERFLOW__enumvalues = { - 0: 'DMDATA_NOT_UNDERFLOW', - 1: 'DMDATA_UNDERFLOWED', -} -DMDATA_NOT_UNDERFLOW = 0 -DMDATA_UNDERFLOWED = 1 -DMDATA_UNDERFLOW = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_UNDERFLOW_CLEAR' -DMDATA_UNDERFLOW_CLEAR__enumvalues = { - 0: 'DMDATA_DONT_CLEAR', - 1: 'DMDATA_CLEAR_UNDERFLOW_STATUS', -} -DMDATA_DONT_CLEAR = 0 -DMDATA_CLEAR_UNDERFLOW_STATUS = 1 -DMDATA_UNDERFLOW_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_UPDATED' -DMDATA_UPDATED__enumvalues = { - 0: 'DMDATA_NOT_UPDATED', - 1: 'DMDATA_WAS_UPDATED', -} -DMDATA_NOT_UPDATED = 0 -DMDATA_WAS_UPDATED = 1 -DMDATA_UPDATED = ctypes.c_uint32 # enum - -# values for enumeration 'RESPONSE_STATUS' -RESPONSE_STATUS__enumvalues = { - 0: 'OKAY', - 1: 'EXOKAY', - 2: 'SLVERR', - 3: 'DECERR', - 4: 'EARLY', - 5: 'OKAY_NODATA', - 6: 'PROTVIOL', - 7: 'TRANSERR', - 8: 'CMPTO', - 12: 'CRS', -} -OKAY = 0 -EXOKAY = 1 -SLVERR = 2 -DECERR = 3 -EARLY = 4 -OKAY_NODATA = 5 -PROTVIOL = 6 -TRANSERR = 7 -CMPTO = 8 -CRS = 12 -RESPONSE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'DCHUBBUB_DET_MEM_PWR_LIGHT_SLEEP_MODE' -DCHUBBUB_DET_MEM_PWR_LIGHT_SLEEP_MODE__enumvalues = { - 0: 'DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 1: 'DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_1', - 2: 'DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_2', -} -DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_OFF = 0 -DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_1 = 1 -DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_2 = 2 -DCHUBBUB_DET_MEM_PWR_LIGHT_SLEEP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCHUBBUB_MEM_PWR_DIS_MODE' -DCHUBBUB_MEM_PWR_DIS_MODE__enumvalues = { - 0: 'DCHUBBUB_MEM_POWER_DIS_MODE_ENABLE', - 1: 'DCHUBBUB_MEM_POWER_DIS_MODE_DISABLE', -} -DCHUBBUB_MEM_POWER_DIS_MODE_ENABLE = 0 -DCHUBBUB_MEM_POWER_DIS_MODE_DISABLE = 1 -DCHUBBUB_MEM_PWR_DIS_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCHUBBUB_MEM_PWR_MODE' -DCHUBBUB_MEM_PWR_MODE__enumvalues = { - 0: 'DCHUBBUB_MEM_POWER_MODE_OFF', - 1: 'DCHUBBUB_MEM_POWER_MODE_LIGHT_SLEEP', - 2: 'DCHUBBUB_MEM_POWER_MODE_DEEP_SLEEP', - 3: 'DCHUBBUB_MEM_POWER_MODE_SHUT_DOWN', -} -DCHUBBUB_MEM_POWER_MODE_OFF = 0 -DCHUBBUB_MEM_POWER_MODE_LIGHT_SLEEP = 1 -DCHUBBUB_MEM_POWER_MODE_DEEP_SLEEP = 2 -DCHUBBUB_MEM_POWER_MODE_SHUT_DOWN = 3 -DCHUBBUB_MEM_PWR_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET' -MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET' -MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_ADR_VUPDATE_LOCK_SET' -MPC_CFG_ADR_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_ADR_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_ADR_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_ADR_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_ADR_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_ADR_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_CFG_VUPDATE_LOCK_SET' -MPC_CFG_CFG_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_CFG_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_CFG_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_CFG_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_CFG_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_CFG_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_CUR_VUPDATE_LOCK_SET' -MPC_CFG_CUR_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_CUR_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_CUR_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_CUR_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_CUR_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_CUR_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_MPC_TEST_CLK_SEL' -MPC_CFG_MPC_TEST_CLK_SEL__enumvalues = { - 0: 'MPC_CFG_MPC_TEST_CLK_SEL_0', - 1: 'MPC_CFG_MPC_TEST_CLK_SEL_1', - 2: 'MPC_CFG_MPC_TEST_CLK_SEL_2', - 3: 'MPC_CFG_MPC_TEST_CLK_SEL_3', -} -MPC_CFG_MPC_TEST_CLK_SEL_0 = 0 -MPC_CFG_MPC_TEST_CLK_SEL_1 = 1 -MPC_CFG_MPC_TEST_CLK_SEL_2 = 2 -MPC_CFG_MPC_TEST_CLK_SEL_3 = 3 -MPC_CFG_MPC_TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN' -MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN__enumvalues = { - 0: 'MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN_FALSE', - 1: 'MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN_TRUE', -} -MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN_FALSE = 0 -MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN_TRUE = 1 -MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CRC_CALC_INTERLACE_MODE' -MPC_CRC_CALC_INTERLACE_MODE__enumvalues = { - 0: 'MPC_CRC_INTERLACE_MODE_TOP', - 1: 'MPC_CRC_INTERLACE_MODE_BOTTOM', - 2: 'MPC_CRC_INTERLACE_MODE_BOTH_RESET_BOTTOM', - 3: 'MPC_CRC_INTERLACE_MODE_BOTH_RESET_EACH', -} -MPC_CRC_INTERLACE_MODE_TOP = 0 -MPC_CRC_INTERLACE_MODE_BOTTOM = 1 -MPC_CRC_INTERLACE_MODE_BOTH_RESET_BOTTOM = 2 -MPC_CRC_INTERLACE_MODE_BOTH_RESET_EACH = 3 -MPC_CRC_CALC_INTERLACE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CRC_CALC_MODE' -MPC_CRC_CALC_MODE__enumvalues = { - 0: 'MPC_CRC_ONE_SHOT_MODE', - 1: 'MPC_CRC_CONTINUOUS_MODE', -} -MPC_CRC_ONE_SHOT_MODE = 0 -MPC_CRC_CONTINUOUS_MODE = 1 -MPC_CRC_CALC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CRC_CALC_STEREO_MODE' -MPC_CRC_CALC_STEREO_MODE__enumvalues = { - 0: 'MPC_CRC_STEREO_MODE_LEFT', - 1: 'MPC_CRC_STEREO_MODE_RIGHT', - 2: 'MPC_CRC_STEREO_MODE_BOTH_RESET_RIGHT', - 3: 'MPC_CRC_STEREO_MODE_BOTH_RESET_EACH', -} -MPC_CRC_STEREO_MODE_LEFT = 0 -MPC_CRC_STEREO_MODE_RIGHT = 1 -MPC_CRC_STEREO_MODE_BOTH_RESET_RIGHT = 2 -MPC_CRC_STEREO_MODE_BOTH_RESET_EACH = 3 -MPC_CRC_CALC_STEREO_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CRC_SOURCE_SELECT' -MPC_CRC_SOURCE_SELECT__enumvalues = { - 0: 'MPC_CRC_SOURCE_SEL_DPP', - 1: 'MPC_CRC_SOURCE_SEL_OPP', - 2: 'MPC_CRC_SOURCE_SEL_DWB', - 3: 'MPC_CRC_SOURCE_SEL_OTHER', -} -MPC_CRC_SOURCE_SEL_DPP = 0 -MPC_CRC_SOURCE_SEL_OPP = 1 -MPC_CRC_SOURCE_SEL_DWB = 2 -MPC_CRC_SOURCE_SEL_OTHER = 3 -MPC_CRC_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_DEBUG_BUS1_DATA_SELECT' -MPC_DEBUG_BUS1_DATA_SELECT__enumvalues = { - 0: 'MPC_DEBUG_BUS1_DATA_SELECT_MPC_CFG', - 1: 'MPC_DEBUG_BUS1_DATA_SELECT_MPC_CONT', - 2: 'MPC_DEBUG_BUS1_DATA_SELECT_MPC_RSV1', - 3: 'MPC_DEBUG_BUS1_DATA_SELECT_MPC_RSV', -} -MPC_DEBUG_BUS1_DATA_SELECT_MPC_CFG = 0 -MPC_DEBUG_BUS1_DATA_SELECT_MPC_CONT = 1 -MPC_DEBUG_BUS1_DATA_SELECT_MPC_RSV1 = 2 -MPC_DEBUG_BUS1_DATA_SELECT_MPC_RSV = 3 -MPC_DEBUG_BUS1_DATA_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_DEBUG_BUS2_DATA_SELECT' -MPC_DEBUG_BUS2_DATA_SELECT__enumvalues = { - 0: 'MPC_DEBUG_BUS2_DATA_SELECT_MPCC', - 1: 'MPC_DEBUG_BUS2_DATA_SELECT_MPCC_CONT', - 2: 'MPC_DEBUG_BUS2_DATA_SELECT_MPCC_MCM', - 3: 'MPC_DEBUG_BUS2_DATA_SELECT_RES', -} -MPC_DEBUG_BUS2_DATA_SELECT_MPCC = 0 -MPC_DEBUG_BUS2_DATA_SELECT_MPCC_CONT = 1 -MPC_DEBUG_BUS2_DATA_SELECT_MPCC_MCM = 2 -MPC_DEBUG_BUS2_DATA_SELECT_RES = 3 -MPC_DEBUG_BUS2_DATA_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT' -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT__enumvalues = { - 0: 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPC_DEBUG_ID', - 1: 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPCC_DEBUG_ID', - 2: 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPCC_OGAM_DEBUG_ID', - 3: 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPC_OCSC_DEBUG_ID', - 4: 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_SFR_DEBUG_DATA', - 5: 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_SFT_DEBUG_DATA', - 6: 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_RSV1', - 7: 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPCC_MCM_DEBUG_ID', -} -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPC_DEBUG_ID = 0 -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPCC_DEBUG_ID = 1 -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPCC_OGAM_DEBUG_ID = 2 -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPC_OCSC_DEBUG_ID = 3 -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_SFR_DEBUG_DATA = 4 -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_SFT_DEBUG_DATA = 5 -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_RSV1 = 6 -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPCC_MCM_DEBUG_ID = 7 -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_DEBUG_BUS_MPCC_BYTE_SELECT' -MPC_DEBUG_BUS_MPCC_BYTE_SELECT__enumvalues = { - 0: 'MPC_DEBUG_BUS_MPCC_BYTE0', - 1: 'MPC_DEBUG_BUS_MPCC_BYTE1', - 2: 'MPC_DEBUG_BUS_MPCC_BYTE2', - 3: 'MPC_DEBUG_BUS_MPCC_BYTE3', -} -MPC_DEBUG_BUS_MPCC_BYTE0 = 0 -MPC_DEBUG_BUS_MPCC_BYTE1 = 1 -MPC_DEBUG_BUS_MPCC_BYTE2 = 2 -MPC_DEBUG_BUS_MPCC_BYTE3 = 3 -MPC_DEBUG_BUS_MPCC_BYTE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_OCSC_COEF_FORMAT' -MPC_OCSC_COEF_FORMAT__enumvalues = { - 0: 'MPC_OCSC_COEF_FORMAT_S2_13', - 1: 'MPC_OCSC_COEF_FORMAT_S3_12', -} -MPC_OCSC_COEF_FORMAT_S2_13 = 0 -MPC_OCSC_COEF_FORMAT_S3_12 = 1 -MPC_OCSC_COEF_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN' -MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN__enumvalues = { - 0: 'MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN_FALSE', - 1: 'MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN_TRUE', -} -MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN_FALSE = 0 -MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN_TRUE = 1 -MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_OUT_CSC_MODE' -MPC_OUT_CSC_MODE__enumvalues = { - 0: 'MPC_OUT_CSC_MODE_0', - 1: 'MPC_OUT_CSC_MODE_1', - 2: 'MPC_OUT_CSC_MODE_2', - 3: 'MPC_OUT_CSC_MODE_RSV', -} -MPC_OUT_CSC_MODE_0 = 0 -MPC_OUT_CSC_MODE_1 = 1 -MPC_OUT_CSC_MODE_2 = 2 -MPC_OUT_CSC_MODE_RSV = 3 -MPC_OUT_CSC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_MODE' -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_MODE__enumvalues = { - 0: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_BYPASS', - 1: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_6BITS', - 2: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_8BITS', - 3: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_9BITS', - 4: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_10BITS', - 5: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_11BITS', - 6: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_12BITS', - 7: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_PASSTHROUGH', -} -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_BYPASS = 0 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_6BITS = 1 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_8BITS = 2 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_9BITS = 3 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_10BITS = 4 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_11BITS = 5 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_12BITS = 6 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_PASSTHROUGH = 7 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_OUT_RATE_CONTROL_DISABLE_SET' -MPC_OUT_RATE_CONTROL_DISABLE_SET__enumvalues = { - 0: 'MPC_OUT_RATE_CONTROL_SET_ENABLE', - 1: 'MPC_OUT_RATE_CONTROL_SET_DISABLE', -} -MPC_OUT_RATE_CONTROL_SET_ENABLE = 0 -MPC_OUT_RATE_CONTROL_SET_DISABLE = 1 -MPC_OUT_RATE_CONTROL_DISABLE_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_BG_COLOR_BPC' -MPCC_BG_COLOR_BPC__enumvalues = { - 0: 'MPCC_BG_COLOR_BPC_8bit', - 1: 'MPCC_BG_COLOR_BPC_9bit', - 2: 'MPCC_BG_COLOR_BPC_10bit', - 3: 'MPCC_BG_COLOR_BPC_11bit', - 4: 'MPCC_BG_COLOR_BPC_12bit', -} -MPCC_BG_COLOR_BPC_8bit = 0 -MPCC_BG_COLOR_BPC_9bit = 1 -MPCC_BG_COLOR_BPC_10bit = 2 -MPCC_BG_COLOR_BPC_11bit = 3 -MPCC_BG_COLOR_BPC_12bit = 4 -MPCC_BG_COLOR_BPC = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY' -MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_FALSE', - 1: 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_TRUE', -} -MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_FALSE = 0 -MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_TRUE = 1 -MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE' -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA', - 1: 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN', - 2: 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_GLOBAL_ALPHA', - 3: 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_UNUSED', -} -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA = 0 -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN = 1 -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_GLOBAL_ALPHA = 2 -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_UNUSED = 3 -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE' -MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_FALSE', - 1: 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_TRUE', -} -MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_FALSE = 0 -MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_TRUE = 1 -MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE' -MPCC_CONTROL_MPCC_BOT_GAIN_MODE__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE_0', - 1: 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE_1', -} -MPCC_CONTROL_MPCC_BOT_GAIN_MODE_0 = 0 -MPCC_CONTROL_MPCC_BOT_GAIN_MODE_1 = 1 -MPCC_CONTROL_MPCC_BOT_GAIN_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_MODE' -MPCC_CONTROL_MPCC_MODE__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_MODE_BYPASS', - 1: 'MPCC_CONTROL_MPCC_MODE_TOP_LAYER_PASSTHROUGH', - 2: 'MPCC_CONTROL_MPCC_MODE_TOP_LAYER_ONLY', - 3: 'MPCC_CONTROL_MPCC_MODE_TOP_BOT_BLENDING', -} -MPCC_CONTROL_MPCC_MODE_BYPASS = 0 -MPCC_CONTROL_MPCC_MODE_TOP_LAYER_PASSTHROUGH = 1 -MPCC_CONTROL_MPCC_MODE_TOP_LAYER_ONLY = 2 -MPCC_CONTROL_MPCC_MODE_TOP_BOT_BLENDING = 3 -MPCC_CONTROL_MPCC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_EN' -MPCC_SM_CONTROL_MPCC_SM_EN__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_EN_FALSE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_EN_TRUE', -} -MPCC_SM_CONTROL_MPCC_SM_EN_FALSE = 0 -MPCC_SM_CONTROL_MPCC_SM_EN_TRUE = 1 -MPCC_SM_CONTROL_MPCC_SM_EN = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT' -MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_FALSE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_TRUE', -} -MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_FALSE = 0 -MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_TRUE = 1 -MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL' -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_NO_FORCE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_RESERVED', - 2: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_LOW', - 3: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_HIGH', -} -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_NO_FORCE = 0 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_RESERVED = 1 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_LOW = 2 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_HIGH = 3 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL' -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_NO_FORCE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_RESERVED', - 2: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_LOW', - 3: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_HIGH', -} -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_NO_FORCE = 0 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_RESERVED = 1 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_LOW = 2 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_HIGH = 3 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT' -MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_FALSE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_TRUE', -} -MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_FALSE = 0 -MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_TRUE = 1 -MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_MODE' -MPCC_SM_CONTROL_MPCC_SM_MODE__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_MODE_SINGLE_PLANE', - 2: 'MPCC_SM_CONTROL_MPCC_SM_MODE_ROW_SUBSAMPLING', - 4: 'MPCC_SM_CONTROL_MPCC_SM_MODE_COLUMN_SUBSAMPLING', - 6: 'MPCC_SM_CONTROL_MPCC_SM_MODE_CHECKERBOARD_SUBSAMPLING', -} -MPCC_SM_CONTROL_MPCC_SM_MODE_SINGLE_PLANE = 0 -MPCC_SM_CONTROL_MPCC_SM_MODE_ROW_SUBSAMPLING = 2 -MPCC_SM_CONTROL_MPCC_SM_MODE_COLUMN_SUBSAMPLING = 4 -MPCC_SM_CONTROL_MPCC_SM_MODE_CHECKERBOARD_SUBSAMPLING = 6 -MPCC_SM_CONTROL_MPCC_SM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN' -MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN__enumvalues = { - 0: 'MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN_FALSE', - 1: 'MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN_TRUE', -} -MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN_FALSE = 0 -MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN_TRUE = 1 -MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_GAMUT_REMAP_COEF_FORMAT_ENUM' -MPCC_GAMUT_REMAP_COEF_FORMAT_ENUM__enumvalues = { - 0: 'MPCC_GAMUT_REMAP_COEF_FORMAT_S2_13', - 1: 'MPCC_GAMUT_REMAP_COEF_FORMAT_S3_12', -} -MPCC_GAMUT_REMAP_COEF_FORMAT_S2_13 = 0 -MPCC_GAMUT_REMAP_COEF_FORMAT_S3_12 = 1 -MPCC_GAMUT_REMAP_COEF_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_GAMUT_REMAP_MODE_ENUM' -MPCC_GAMUT_REMAP_MODE_ENUM__enumvalues = { - 0: 'MPCC_GAMUT_REMAP_MODE_0', - 1: 'MPCC_GAMUT_REMAP_MODE_1', - 2: 'MPCC_GAMUT_REMAP_MODE_2', - 3: 'MPCC_GAMUT_REMAP_MODE_RSV', -} -MPCC_GAMUT_REMAP_MODE_0 = 0 -MPCC_GAMUT_REMAP_MODE_1 = 1 -MPCC_GAMUT_REMAP_MODE_2 = 2 -MPCC_GAMUT_REMAP_MODE_RSV = 3 -MPCC_GAMUT_REMAP_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_2_CONFIG_ENUM' -MPCC_OGAM_LUT_2_CONFIG_ENUM__enumvalues = { - 0: 'MPCC_OGAM_LUT_2CFG_NO_MEMORY', - 1: 'MPCC_OGAM_LUT_2CFG_MEMORY_A', - 2: 'MPCC_OGAM_LUT_2CFG_MEMORY_B', -} -MPCC_OGAM_LUT_2CFG_NO_MEMORY = 0 -MPCC_OGAM_LUT_2CFG_MEMORY_A = 1 -MPCC_OGAM_LUT_2CFG_MEMORY_B = 2 -MPCC_OGAM_LUT_2_CONFIG_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_CONFIG_MODE' -MPCC_OGAM_LUT_CONFIG_MODE__enumvalues = { - 0: 'MPCC_OGAM_DIFFERENT_RGB', - 1: 'MPCC_OGAM_ALL_USE_R', -} -MPCC_OGAM_DIFFERENT_RGB = 0 -MPCC_OGAM_ALL_USE_R = 1 -MPCC_OGAM_LUT_CONFIG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_PWL_DISABLE_ENUM' -MPCC_OGAM_LUT_PWL_DISABLE_ENUM__enumvalues = { - 0: 'MPCC_OGAM_ENABLE_PWL', - 1: 'MPCC_OGAM_DISABLE_PWL', -} -MPCC_OGAM_ENABLE_PWL = 0 -MPCC_OGAM_DISABLE_PWL = 1 -MPCC_OGAM_LUT_PWL_DISABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL' -MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL__enumvalues = { - 0: 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMA', - 1: 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMB', -} -MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMA = 0 -MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMB = 1 -MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_RAM_SEL' -MPCC_OGAM_LUT_RAM_SEL__enumvalues = { - 0: 'MPCC_OGAM_RAMA_ACCESS', - 1: 'MPCC_OGAM_RAMB_ACCESS', -} -MPCC_OGAM_RAMA_ACCESS = 0 -MPCC_OGAM_RAMB_ACCESS = 1 -MPCC_OGAM_LUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_READ_COLOR_SEL' -MPCC_OGAM_LUT_READ_COLOR_SEL__enumvalues = { - 0: 'MPCC_OGAM_BLUE_LUT', - 1: 'MPCC_OGAM_GREEN_LUT', - 2: 'MPCC_OGAM_RED_LUT', -} -MPCC_OGAM_BLUE_LUT = 0 -MPCC_OGAM_GREEN_LUT = 1 -MPCC_OGAM_RED_LUT = 2 -MPCC_OGAM_LUT_READ_COLOR_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_READ_DBG' -MPCC_OGAM_LUT_READ_DBG__enumvalues = { - 0: 'MPCC_OGAM_DISABLE_DEBUG', - 1: 'MPCC_OGAM_ENABLE_DEBUG', -} -MPCC_OGAM_DISABLE_DEBUG = 0 -MPCC_OGAM_ENABLE_DEBUG = 1 -MPCC_OGAM_LUT_READ_DBG = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_SEL_ENUM' -MPCC_OGAM_LUT_SEL_ENUM__enumvalues = { - 0: 'MPCC_OGAM_RAMA', - 1: 'MPCC_OGAM_RAMB', -} -MPCC_OGAM_RAMA = 0 -MPCC_OGAM_RAMB = 1 -MPCC_OGAM_LUT_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_MODE_MPCC_OGAM_MODE_ENUM' -MPCC_OGAM_MODE_MPCC_OGAM_MODE_ENUM__enumvalues = { - 0: 'MPCC_OGAM_MODE_0', - 1: 'MPCC_OGAM_MODE_RSV1', - 2: 'MPCC_OGAM_MODE_2', - 3: 'MPCC_OGAM_MODE_RSV', -} -MPCC_OGAM_MODE_0 = 0 -MPCC_OGAM_MODE_RSV1 = 1 -MPCC_OGAM_MODE_2 = 2 -MPCC_OGAM_MODE_RSV = 3 -MPCC_OGAM_MODE_MPCC_OGAM_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_NUM_SEG' -MPCC_OGAM_NUM_SEG__enumvalues = { - 0: 'MPCC_OGAM_SEGMENTS_1', - 1: 'MPCC_OGAM_SEGMENTS_2', - 2: 'MPCC_OGAM_SEGMENTS_4', - 3: 'MPCC_OGAM_SEGMENTS_8', - 4: 'MPCC_OGAM_SEGMENTS_16', - 5: 'MPCC_OGAM_SEGMENTS_32', - 6: 'MPCC_OGAM_SEGMENTS_64', - 7: 'MPCC_OGAM_SEGMENTS_128', -} -MPCC_OGAM_SEGMENTS_1 = 0 -MPCC_OGAM_SEGMENTS_2 = 1 -MPCC_OGAM_SEGMENTS_4 = 2 -MPCC_OGAM_SEGMENTS_8 = 3 -MPCC_OGAM_SEGMENTS_16 = 4 -MPCC_OGAM_SEGMENTS_32 = 5 -MPCC_OGAM_SEGMENTS_64 = 6 -MPCC_OGAM_SEGMENTS_128 = 7 -MPCC_OGAM_NUM_SEG = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN' -MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN__enumvalues = { - 0: 'MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN_FALSE', - 1: 'MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN_TRUE', -} -MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN_FALSE = 0 -MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN_TRUE = 1 -MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_3DLUT_30BIT_ENUM' -MPCC_MCM_3DLUT_30BIT_ENUM__enumvalues = { - 0: 'MPCC_MCM_3DLUT_36BIT', - 1: 'MPCC_MCM_3DLUT_30BIT', -} -MPCC_MCM_3DLUT_36BIT = 0 -MPCC_MCM_3DLUT_30BIT = 1 -MPCC_MCM_3DLUT_30BIT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_3DLUT_RAM_SEL' -MPCC_MCM_3DLUT_RAM_SEL__enumvalues = { - 0: 'MPCC_MCM_RAM0_ACCESS', - 1: 'MPCC_MCM_RAM1_ACCESS', - 2: 'MPCC_MCM_RAM2_ACCESS', - 3: 'MPCC_MCM_RAM3_ACCESS', -} -MPCC_MCM_RAM0_ACCESS = 0 -MPCC_MCM_RAM1_ACCESS = 1 -MPCC_MCM_RAM2_ACCESS = 2 -MPCC_MCM_RAM3_ACCESS = 3 -MPCC_MCM_3DLUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_3DLUT_SIZE_ENUM' -MPCC_MCM_3DLUT_SIZE_ENUM__enumvalues = { - 0: 'MPCC_MCM_3DLUT_17CUBE', - 1: 'MPCC_MCM_3DLUT_9CUBE', -} -MPCC_MCM_3DLUT_17CUBE = 0 -MPCC_MCM_3DLUT_9CUBE = 1 -MPCC_MCM_3DLUT_SIZE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_GAMMA_LUT_MODE_ENUM' -MPCC_MCM_GAMMA_LUT_MODE_ENUM__enumvalues = { - 0: 'MPCC_MCM_GAMMA_LUT_BYPASS', - 1: 'MPCC_MCM_GAMMA_LUT_RESERVED_1', - 2: 'MPCC_MCM_GAMMA_LUT_RAM_LUT', - 3: 'MPCC_MCM_GAMMA_LUT_RESERVED_3', -} -MPCC_MCM_GAMMA_LUT_BYPASS = 0 -MPCC_MCM_GAMMA_LUT_RESERVED_1 = 1 -MPCC_MCM_GAMMA_LUT_RAM_LUT = 2 -MPCC_MCM_GAMMA_LUT_RESERVED_3 = 3 -MPCC_MCM_GAMMA_LUT_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_GAMMA_LUT_PWL_DISABLE_ENUM' -MPCC_MCM_GAMMA_LUT_PWL_DISABLE_ENUM__enumvalues = { - 0: 'MPCC_MCM_GAMMA_LUT_ENABLE_PWL', - 1: 'MPCC_MCM_GAMMA_LUT_DISABLE_PWL', -} -MPCC_MCM_GAMMA_LUT_ENABLE_PWL = 0 -MPCC_MCM_GAMMA_LUT_DISABLE_PWL = 1 -MPCC_MCM_GAMMA_LUT_PWL_DISABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_GAMMA_LUT_SEL_ENUM' -MPCC_MCM_GAMMA_LUT_SEL_ENUM__enumvalues = { - 0: 'MPCC_MCM_GAMMA_LUT_RAMA', - 1: 'MPCC_MCM_GAMMA_LUT_RAMB', -} -MPCC_MCM_GAMMA_LUT_RAMA = 0 -MPCC_MCM_GAMMA_LUT_RAMB = 1 -MPCC_MCM_GAMMA_LUT_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_LUT_2_MODE_ENUM' -MPCC_MCM_LUT_2_MODE_ENUM__enumvalues = { - 0: 'MPCC_MCM_LUT_2_MODE_BYPASS', - 1: 'MPCC_MCM_LUT_2_MODE_RAMA_LUT', - 2: 'MPCC_MCM_LUT_2_MODE_RAMB_LUT', -} -MPCC_MCM_LUT_2_MODE_BYPASS = 0 -MPCC_MCM_LUT_2_MODE_RAMA_LUT = 1 -MPCC_MCM_LUT_2_MODE_RAMB_LUT = 2 -MPCC_MCM_LUT_2_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_LUT_CONFIG_MODE' -MPCC_MCM_LUT_CONFIG_MODE__enumvalues = { - 0: 'MPCC_MCM_LUT_DIFFERENT_RGB', - 1: 'MPCC_MCM_LUT_ALL_USE_R', -} -MPCC_MCM_LUT_DIFFERENT_RGB = 0 -MPCC_MCM_LUT_ALL_USE_R = 1 -MPCC_MCM_LUT_CONFIG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_LUT_NUM_SEG' -MPCC_MCM_LUT_NUM_SEG__enumvalues = { - 0: 'MPCC_MCM_LUT_SEGMENTS_1', - 1: 'MPCC_MCM_LUT_SEGMENTS_2', - 2: 'MPCC_MCM_LUT_SEGMENTS_4', - 3: 'MPCC_MCM_LUT_SEGMENTS_8', - 4: 'MPCC_MCM_LUT_SEGMENTS_16', - 5: 'MPCC_MCM_LUT_SEGMENTS_32', - 6: 'MPCC_MCM_LUT_SEGMENTS_64', - 7: 'MPCC_MCM_LUT_SEGMENTS_128', -} -MPCC_MCM_LUT_SEGMENTS_1 = 0 -MPCC_MCM_LUT_SEGMENTS_2 = 1 -MPCC_MCM_LUT_SEGMENTS_4 = 2 -MPCC_MCM_LUT_SEGMENTS_8 = 3 -MPCC_MCM_LUT_SEGMENTS_16 = 4 -MPCC_MCM_LUT_SEGMENTS_32 = 5 -MPCC_MCM_LUT_SEGMENTS_64 = 6 -MPCC_MCM_LUT_SEGMENTS_128 = 7 -MPCC_MCM_LUT_NUM_SEG = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_LUT_RAM_SEL' -MPCC_MCM_LUT_RAM_SEL__enumvalues = { - 0: 'MPCC_MCM_LUT_RAMA_ACCESS', - 1: 'MPCC_MCM_LUT_RAMB_ACCESS', -} -MPCC_MCM_LUT_RAMA_ACCESS = 0 -MPCC_MCM_LUT_RAMB_ACCESS = 1 -MPCC_MCM_LUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_LUT_READ_COLOR_SEL' -MPCC_MCM_LUT_READ_COLOR_SEL__enumvalues = { - 0: 'MPCC_MCM_LUT_BLUE_LUT', - 1: 'MPCC_MCM_LUT_GREEN_LUT', - 2: 'MPCC_MCM_LUT_RED_LUT', -} -MPCC_MCM_LUT_BLUE_LUT = 0 -MPCC_MCM_LUT_GREEN_LUT = 1 -MPCC_MCM_LUT_RED_LUT = 2 -MPCC_MCM_LUT_READ_COLOR_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_LUT_READ_DBG' -MPCC_MCM_LUT_READ_DBG__enumvalues = { - 0: 'MPCC_MCM_LUT_DISABLE_DEBUG', - 1: 'MPCC_MCM_LUT_ENABLE_DEBUG', -} -MPCC_MCM_LUT_DISABLE_DEBUG = 0 -MPCC_MCM_LUT_ENABLE_DEBUG = 1 -MPCC_MCM_LUT_READ_DBG = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_MEM_PWR_FORCE_ENUM' -MPCC_MCM_MEM_PWR_FORCE_ENUM__enumvalues = { - 0: 'MPCC_MCM_MEM_PWR_FORCE_DIS', - 1: 'MPCC_MCM_MEM_PWR_FORCE_LS', - 2: 'MPCC_MCM_MEM_PWR_FORCE_DS', - 3: 'MPCC_MCM_MEM_PWR_FORCE_SD', -} -MPCC_MCM_MEM_PWR_FORCE_DIS = 0 -MPCC_MCM_MEM_PWR_FORCE_LS = 1 -MPCC_MCM_MEM_PWR_FORCE_DS = 2 -MPCC_MCM_MEM_PWR_FORCE_SD = 3 -MPCC_MCM_MEM_PWR_FORCE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_MEM_PWR_STATE_ENUM' -MPCC_MCM_MEM_PWR_STATE_ENUM__enumvalues = { - 0: 'MPCC_MCM_MEM_PWR_STATE_ON', - 1: 'MPCC_MCM_MEM_PWR_STATE_LS', - 2: 'MPCC_MCM_MEM_PWR_STATE_DS', - 3: 'MPCC_MCM_MEM_PWR_STATE_SD', -} -MPCC_MCM_MEM_PWR_STATE_ON = 0 -MPCC_MCM_MEM_PWR_STATE_LS = 1 -MPCC_MCM_MEM_PWR_STATE_DS = 2 -MPCC_MCM_MEM_PWR_STATE_SD = 3 -MPCC_MCM_MEM_PWR_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_BIT_DEPTH' -ENUM_DPG_BIT_DEPTH__enumvalues = { - 0: 'ENUM_DPG_BIT_DEPTH_6BPC', - 1: 'ENUM_DPG_BIT_DEPTH_8BPC', - 2: 'ENUM_DPG_BIT_DEPTH_10BPC', - 3: 'ENUM_DPG_BIT_DEPTH_12BPC', -} -ENUM_DPG_BIT_DEPTH_6BPC = 0 -ENUM_DPG_BIT_DEPTH_8BPC = 1 -ENUM_DPG_BIT_DEPTH_10BPC = 2 -ENUM_DPG_BIT_DEPTH_12BPC = 3 -ENUM_DPG_BIT_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_DYNAMIC_RANGE' -ENUM_DPG_DYNAMIC_RANGE__enumvalues = { - 0: 'ENUM_DPG_DYNAMIC_RANGE_VESA', - 1: 'ENUM_DPG_DYNAMIC_RANGE_CEA', -} -ENUM_DPG_DYNAMIC_RANGE_VESA = 0 -ENUM_DPG_DYNAMIC_RANGE_CEA = 1 -ENUM_DPG_DYNAMIC_RANGE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_EN' -ENUM_DPG_EN__enumvalues = { - 0: 'ENUM_DPG_DISABLE', - 1: 'ENUM_DPG_ENABLE', -} -ENUM_DPG_DISABLE = 0 -ENUM_DPG_ENABLE = 1 -ENUM_DPG_EN = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_FIELD_POLARITY' -ENUM_DPG_FIELD_POLARITY__enumvalues = { - 0: 'ENUM_DPG_FIELD_POLARITY_TOP_EVEN_BOTTOM_ODD', - 1: 'ENUM_DPG_FIELD_POLARITY_TOP_ODD_BOTTOM_EVEN', -} -ENUM_DPG_FIELD_POLARITY_TOP_EVEN_BOTTOM_ODD = 0 -ENUM_DPG_FIELD_POLARITY_TOP_ODD_BOTTOM_EVEN = 1 -ENUM_DPG_FIELD_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_MODE' -ENUM_DPG_MODE__enumvalues = { - 0: 'ENUM_DPG_MODE_RGB_COLOUR_BLOCK', - 1: 'ENUM_DPG_MODE_YCBCR_601_COLOUR_BLOCK', - 2: 'ENUM_DPG_MODE_YCBCR_709_COLOUR_BLOCK', - 3: 'ENUM_DPG_MODE_VERTICAL_BAR', - 4: 'ENUM_DPG_MODE_HORIZONTAL_BAR', - 5: 'ENUM_DPG_MODE_RGB_SINGLE_RAMP', - 6: 'ENUM_DPG_MODE_RGB_DUAL_RAMP', - 7: 'ENUM_DPG_MODE_RGB_XR_BIAS', -} -ENUM_DPG_MODE_RGB_COLOUR_BLOCK = 0 -ENUM_DPG_MODE_YCBCR_601_COLOUR_BLOCK = 1 -ENUM_DPG_MODE_YCBCR_709_COLOUR_BLOCK = 2 -ENUM_DPG_MODE_VERTICAL_BAR = 3 -ENUM_DPG_MODE_HORIZONTAL_BAR = 4 -ENUM_DPG_MODE_RGB_SINGLE_RAMP = 5 -ENUM_DPG_MODE_RGB_DUAL_RAMP = 6 -ENUM_DPG_MODE_RGB_XR_BIAS = 7 -ENUM_DPG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMTMEM_PWR_DIS_CTRL' -FMTMEM_PWR_DIS_CTRL__enumvalues = { - 0: 'FMTMEM_ENABLE_MEM_PWR_CTRL', - 1: 'FMTMEM_DISABLE_MEM_PWR_CTRL', -} -FMTMEM_ENABLE_MEM_PWR_CTRL = 0 -FMTMEM_DISABLE_MEM_PWR_CTRL = 1 -FMTMEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'FMTMEM_PWR_FORCE_CTRL' -FMTMEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'FMTMEM_NO_FORCE_REQUEST', - 1: 'FMTMEM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'FMTMEM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'FMTMEM_FORCE_SHUT_DOWN_REQUEST', -} -FMTMEM_NO_FORCE_REQUEST = 0 -FMTMEM_FORCE_LIGHT_SLEEP_REQUEST = 1 -FMTMEM_FORCE_DEEP_SLEEP_REQUEST = 2 -FMTMEM_FORCE_SHUT_DOWN_REQUEST = 3 -FMTMEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL' -FMT_BIT_DEPTH_CONTROL_25FRC_SEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Ei', - 1: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Fi', - 2: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Gi', - 3: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_RESERVED', -} -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Ei = 0 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Fi = 1 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Gi = 2 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_RESERVED = 3 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL' -FMT_BIT_DEPTH_CONTROL_50FRC_SEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_A', - 1: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_B', - 2: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_C', - 3: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_D', -} -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_A = 0 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_B = 1 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_C = 2 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_D = 3 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL' -FMT_BIT_DEPTH_CONTROL_75FRC_SEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_E', - 1: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_F', - 2: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_G', - 3: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_RESERVED', -} -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_E = 0 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_F = 1 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_G = 2 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_RESERVED = 3 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH' -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_18BPP', - 1: 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_24BPP', - 2: 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_30BPP', -} -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_18BPP = 0 -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_24BPP = 1 -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_30BPP = 2 -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH' -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_18BPP', - 1: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_24BPP', - 2: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_30BPP', -} -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_18BPP = 0 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_24BPP = 1 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_30BPP = 2 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL' -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL2', - 1: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL4', -} -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL2 = 0 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL4 = 1 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH' -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_18BPP', - 1: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_24BPP', - 2: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_30BPP', -} -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_18BPP = 0 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_24BPP = 1 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_30BPP = 2 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE' -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_TRUNCATION', - 1: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_ROUNDING', -} -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_TRUNCATION = 0 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_ROUNDING = 1 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CLAMP_CNTL_COLOR_FORMAT' -FMT_CLAMP_CNTL_COLOR_FORMAT__enumvalues = { - 0: 'FMT_CLAMP_CNTL_COLOR_FORMAT_6BPC', - 1: 'FMT_CLAMP_CNTL_COLOR_FORMAT_8BPC', - 2: 'FMT_CLAMP_CNTL_COLOR_FORMAT_10BPC', - 3: 'FMT_CLAMP_CNTL_COLOR_FORMAT_12BPC', - 4: 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED1', - 5: 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED2', - 6: 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED3', - 7: 'FMT_CLAMP_CNTL_COLOR_FORMAT_PROGRAMMABLE', -} -FMT_CLAMP_CNTL_COLOR_FORMAT_6BPC = 0 -FMT_CLAMP_CNTL_COLOR_FORMAT_8BPC = 1 -FMT_CLAMP_CNTL_COLOR_FORMAT_10BPC = 2 -FMT_CLAMP_CNTL_COLOR_FORMAT_12BPC = 3 -FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED1 = 4 -FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED2 = 5 -FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED3 = 6 -FMT_CLAMP_CNTL_COLOR_FORMAT_PROGRAMMABLE = 7 -FMT_CLAMP_CNTL_COLOR_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS' -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS__enumvalues = { - 0: 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_DISABLE', - 1: 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_ENABLE', -} -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_DISABLE = 0 -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_ENABLE = 1 -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_PIXEL_ENCODING' -FMT_CONTROL_PIXEL_ENCODING__enumvalues = { - 0: 'FMT_CONTROL_PIXEL_ENCODING_RGB444_OR_YCBCR444', - 1: 'FMT_CONTROL_PIXEL_ENCODING_YCBCR422', - 2: 'FMT_CONTROL_PIXEL_ENCODING_YCBCR420', - 3: 'FMT_CONTROL_PIXEL_ENCODING_RESERVED', -} -FMT_CONTROL_PIXEL_ENCODING_RGB444_OR_YCBCR444 = 0 -FMT_CONTROL_PIXEL_ENCODING_YCBCR422 = 1 -FMT_CONTROL_PIXEL_ENCODING_YCBCR420 = 2 -FMT_CONTROL_PIXEL_ENCODING_RESERVED = 3 -FMT_CONTROL_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_SUBSAMPLING_MODE' -FMT_CONTROL_SUBSAMPLING_MODE__enumvalues = { - 0: 'FMT_CONTROL_SUBSAMPLING_MODE_DROP', - 1: 'FMT_CONTROL_SUBSAMPLING_MODE_AVERAGE', - 2: 'FMT_CONTROL_SUBSAMPLING_MOME_3_TAP', - 3: 'FMT_CONTROL_SUBSAMPLING_MOME_RESERVED', -} -FMT_CONTROL_SUBSAMPLING_MODE_DROP = 0 -FMT_CONTROL_SUBSAMPLING_MODE_AVERAGE = 1 -FMT_CONTROL_SUBSAMPLING_MOME_3_TAP = 2 -FMT_CONTROL_SUBSAMPLING_MOME_RESERVED = 3 -FMT_CONTROL_SUBSAMPLING_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_SUBSAMPLING_ORDER' -FMT_CONTROL_SUBSAMPLING_ORDER__enumvalues = { - 0: 'FMT_CONTROL_SUBSAMPLING_ORDER_CB_BEFORE_CR', - 1: 'FMT_CONTROL_SUBSAMPLING_ORDER_CR_BEFORE_CB', -} -FMT_CONTROL_SUBSAMPLING_ORDER_CB_BEFORE_CR = 0 -FMT_CONTROL_SUBSAMPLING_ORDER_CR_BEFORE_CB = 1 -FMT_CONTROL_SUBSAMPLING_ORDER = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_DEBUG_CNTL_COLOR_SELECT' -FMT_DEBUG_CNTL_COLOR_SELECT__enumvalues = { - 0: 'FMT_DEBUG_CNTL_COLOR_SELECT_BLUE', - 1: 'FMT_DEBUG_CNTL_COLOR_SELECT_GREEN', - 2: 'FMT_DEBUG_CNTL_COLOR_SELECT_RED1', - 3: 'FMT_DEBUG_CNTL_COLOR_SELECT_RED2', -} -FMT_DEBUG_CNTL_COLOR_SELECT_BLUE = 0 -FMT_DEBUG_CNTL_COLOR_SELECT_GREEN = 1 -FMT_DEBUG_CNTL_COLOR_SELECT_RED1 = 2 -FMT_DEBUG_CNTL_COLOR_SELECT_RED2 = 3 -FMT_DEBUG_CNTL_COLOR_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_DYNAMIC_EXP_MODE' -FMT_DYNAMIC_EXP_MODE__enumvalues = { - 0: 'FMT_DYNAMIC_EXP_MODE_10to12', - 1: 'FMT_DYNAMIC_EXP_MODE_8to12', -} -FMT_DYNAMIC_EXP_MODE_10to12 = 0 -FMT_DYNAMIC_EXP_MODE_8to12 = 1 -FMT_DYNAMIC_EXP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_FRAME_RANDOM_ENABLE_CONTROL' -FMT_FRAME_RANDOM_ENABLE_CONTROL__enumvalues = { - 0: 'FMT_FRAME_RANDOM_ENABLE_RESET_EACH_FRAME', - 1: 'FMT_FRAME_RANDOM_ENABLE_RESET_ONCE', -} -FMT_FRAME_RANDOM_ENABLE_RESET_EACH_FRAME = 0 -FMT_FRAME_RANDOM_ENABLE_RESET_ONCE = 1 -FMT_FRAME_RANDOM_ENABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_POWER_STATE_ENUM' -FMT_POWER_STATE_ENUM__enumvalues = { - 0: 'FMT_POWER_STATE_ENUM_ON', - 1: 'FMT_POWER_STATE_ENUM_LS', - 2: 'FMT_POWER_STATE_ENUM_DS', - 3: 'FMT_POWER_STATE_ENUM_SD', -} -FMT_POWER_STATE_ENUM_ON = 0 -FMT_POWER_STATE_ENUM_LS = 1 -FMT_POWER_STATE_ENUM_DS = 2 -FMT_POWER_STATE_ENUM_SD = 3 -FMT_POWER_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_RGB_RANDOM_ENABLE_CONTROL' -FMT_RGB_RANDOM_ENABLE_CONTROL__enumvalues = { - 0: 'FMT_RGB_RANDOM_ENABLE_CONTROL_DISABLE', - 1: 'FMT_RGB_RANDOM_ENABLE_CONTROL_ENABLE', -} -FMT_RGB_RANDOM_ENABLE_CONTROL_DISABLE = 0 -FMT_RGB_RANDOM_ENABLE_CONTROL_ENABLE = 1 -FMT_RGB_RANDOM_ENABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_CONTROL' -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_CONTROL__enumvalues = { - 0: 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_NO_SWAP', - 1: 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_1', - 2: 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_2', - 3: 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_RESERVED', -} -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_NO_SWAP = 0 -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_1 = 1 -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_2 = 2 -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_RESERVED = 3 -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_SPATIAL_DITHER_MODE' -FMT_SPATIAL_DITHER_MODE__enumvalues = { - 0: 'FMT_SPATIAL_DITHER_MODE_0', - 1: 'FMT_SPATIAL_DITHER_MODE_1', - 2: 'FMT_SPATIAL_DITHER_MODE_2', - 3: 'FMT_SPATIAL_DITHER_MODE_3', -} -FMT_SPATIAL_DITHER_MODE_0 = 0 -FMT_SPATIAL_DITHER_MODE_1 = 1 -FMT_SPATIAL_DITHER_MODE_2 = 2 -FMT_SPATIAL_DITHER_MODE_3 = 3 -FMT_SPATIAL_DITHER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_STEREOSYNC_OVERRIDE_CONTROL' -FMT_STEREOSYNC_OVERRIDE_CONTROL__enumvalues = { - 0: 'FMT_STEREOSYNC_OVERRIDE_CONTROL_0', - 1: 'FMT_STEREOSYNC_OVERRIDE_CONTROL_1', -} -FMT_STEREOSYNC_OVERRIDE_CONTROL_0 = 0 -FMT_STEREOSYNC_OVERRIDE_CONTROL_1 = 1 -FMT_STEREOSYNC_OVERRIDE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0' -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0__enumvalues = { - 0: 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_BGR', - 1: 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_RGB', -} -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_BGR = 0 -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_RGB = 1 -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0 = ctypes.c_uint32 # enum - -# values for enumeration 'OPPBUF_DISPLAY_SEGMENTATION' -OPPBUF_DISPLAY_SEGMENTATION__enumvalues = { - 0: 'OPPBUF_DISPLAY_SEGMENTATION_1_SEGMENT', - 1: 'OPPBUF_DISPLAY_SEGMENTATION_2_SEGMENT', - 2: 'OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT', - 3: 'OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT_SPLIT_LEFT', - 4: 'OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT_SPLIT_RIGHT', -} -OPPBUF_DISPLAY_SEGMENTATION_1_SEGMENT = 0 -OPPBUF_DISPLAY_SEGMENTATION_2_SEGMENT = 1 -OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT = 2 -OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT_SPLIT_LEFT = 3 -OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT_SPLIT_RIGHT = 4 -OPPBUF_DISPLAY_SEGMENTATION = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CLOCK_ENABLE_CONTROL' -OPP_PIPE_CLOCK_ENABLE_CONTROL__enumvalues = { - 0: 'OPP_PIPE_CLOCK_DISABLE', - 1: 'OPP_PIPE_CLOCK_ENABLE', -} -OPP_PIPE_CLOCK_DISABLE = 0 -OPP_PIPE_CLOCK_ENABLE = 1 -OPP_PIPE_CLOCK_ENABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_DIGTIAL_BYPASS_CONTROL' -OPP_PIPE_DIGTIAL_BYPASS_CONTROL__enumvalues = { - 0: 'OPP_PIPE_DIGTIAL_BYPASS_DISABLE', - 1: 'OPP_PIPE_DIGTIAL_BYPASS_ENABLE', -} -OPP_PIPE_DIGTIAL_BYPASS_DISABLE = 0 -OPP_PIPE_DIGTIAL_BYPASS_ENABLE = 1 -OPP_PIPE_DIGTIAL_BYPASS_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_CONT_EN' -OPP_PIPE_CRC_CONT_EN__enumvalues = { - 0: 'OPP_PIPE_CRC_MODE_ONE_SHOT', - 1: 'OPP_PIPE_CRC_MODE_CONTINUOUS', -} -OPP_PIPE_CRC_MODE_ONE_SHOT = 0 -OPP_PIPE_CRC_MODE_CONTINUOUS = 1 -OPP_PIPE_CRC_CONT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_EN' -OPP_PIPE_CRC_EN__enumvalues = { - 0: 'OPP_PIPE_CRC_DISABLE', - 1: 'OPP_PIPE_CRC_ENABLE', -} -OPP_PIPE_CRC_DISABLE = 0 -OPP_PIPE_CRC_ENABLE = 1 -OPP_PIPE_CRC_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_INTERLACE_EN' -OPP_PIPE_CRC_INTERLACE_EN__enumvalues = { - 0: 'OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_PROGRESSIVE', - 1: 'OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_INTERLACED', -} -OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_PROGRESSIVE = 0 -OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_INTERLACED = 1 -OPP_PIPE_CRC_INTERLACE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_INTERLACE_MODE' -OPP_PIPE_CRC_INTERLACE_MODE__enumvalues = { - 0: 'OPP_PIPE_CRC_INTERLACE_MODE_TOP', - 1: 'OPP_PIPE_CRC_INTERLACE_MODE_BOTTOM', - 2: 'OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_BOTTOM_FIELD', - 3: 'OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_EACH_FIELD', -} -OPP_PIPE_CRC_INTERLACE_MODE_TOP = 0 -OPP_PIPE_CRC_INTERLACE_MODE_BOTTOM = 1 -OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_BOTTOM_FIELD = 2 -OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_EACH_FIELD = 3 -OPP_PIPE_CRC_INTERLACE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_ONE_SHOT_PENDING' -OPP_PIPE_CRC_ONE_SHOT_PENDING__enumvalues = { - 0: 'OPP_PIPE_CRC_ONE_SHOT_PENDING_NOT_PENDING', - 1: 'OPP_PIPE_CRC_ONE_SHOT_PENDING_PENDING', -} -OPP_PIPE_CRC_ONE_SHOT_PENDING_NOT_PENDING = 0 -OPP_PIPE_CRC_ONE_SHOT_PENDING_PENDING = 1 -OPP_PIPE_CRC_ONE_SHOT_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_PIXEL_SELECT' -OPP_PIPE_CRC_PIXEL_SELECT__enumvalues = { - 0: 'OPP_PIPE_CRC_PIXEL_SELECT_ALL_PIXELS', - 1: 'OPP_PIPE_CRC_PIXEL_SELECT_RESERVED', - 2: 'OPP_PIPE_CRC_PIXEL_SELECT_EVEN_PIXELS', - 3: 'OPP_PIPE_CRC_PIXEL_SELECT_ODD_PIXELS', -} -OPP_PIPE_CRC_PIXEL_SELECT_ALL_PIXELS = 0 -OPP_PIPE_CRC_PIXEL_SELECT_RESERVED = 1 -OPP_PIPE_CRC_PIXEL_SELECT_EVEN_PIXELS = 2 -OPP_PIPE_CRC_PIXEL_SELECT_ODD_PIXELS = 3 -OPP_PIPE_CRC_PIXEL_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_SOURCE_SELECT' -OPP_PIPE_CRC_SOURCE_SELECT__enumvalues = { - 0: 'OPP_PIPE_CRC_SOURCE_SELECT_FMT', - 1: 'OPP_PIPE_CRC_SOURCE_SELECT_SFT', -} -OPP_PIPE_CRC_SOURCE_SELECT_FMT = 0 -OPP_PIPE_CRC_SOURCE_SELECT_SFT = 1 -OPP_PIPE_CRC_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_STEREO_EN' -OPP_PIPE_CRC_STEREO_EN__enumvalues = { - 0: 'OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_NON_STEREO', - 1: 'OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_STEREO', -} -OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_NON_STEREO = 0 -OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_STEREO = 1 -OPP_PIPE_CRC_STEREO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_STEREO_MODE' -OPP_PIPE_CRC_STEREO_MODE__enumvalues = { - 0: 'OPP_PIPE_CRC_STEREO_MODE_LEFT', - 1: 'OPP_PIPE_CRC_STEREO_MODE_RIGHT', - 2: 'OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_RIGHT_EYE', - 3: 'OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_EACH_EYE', -} -OPP_PIPE_CRC_STEREO_MODE_LEFT = 0 -OPP_PIPE_CRC_STEREO_MODE_RIGHT = 1 -OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_RIGHT_EYE = 2 -OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_EACH_EYE = 3 -OPP_PIPE_CRC_STEREO_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_ABM_DEBUG_BUS_SELECT_CONTROL' -OPP_ABM_DEBUG_BUS_SELECT_CONTROL__enumvalues = { - 0: 'DEBUG_BUS_SELECT_ABM0', - 1: 'DEBUG_BUS_SELECT_ABM1', - 2: 'DEBUG_BUS_SELECT_ABM2', - 3: 'DEBUG_BUS_SELECT_ABM3', - 4: 'DEBUG_BUS_SELECT_ABM_RESERVED0', - 5: 'DEBUG_BUS_SELECT_ABM_RESERVED1', -} -DEBUG_BUS_SELECT_ABM0 = 0 -DEBUG_BUS_SELECT_ABM1 = 1 -DEBUG_BUS_SELECT_ABM2 = 2 -DEBUG_BUS_SELECT_ABM3 = 3 -DEBUG_BUS_SELECT_ABM_RESERVED0 = 4 -DEBUG_BUS_SELECT_ABM_RESERVED1 = 5 -OPP_ABM_DEBUG_BUS_SELECT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_DPG_DEBUG_BUS_SELECT_CONTROL' -OPP_DPG_DEBUG_BUS_SELECT_CONTROL__enumvalues = { - 0: 'DEBUG_BUS_SELECT_DPG0', - 1: 'DEBUG_BUS_SELECT_DPG1', - 2: 'DEBUG_BUS_SELECT_DPG2', - 3: 'DEBUG_BUS_SELECT_DPG3', - 4: 'DEBUG_BUS_SELECT_DPG_RESERVED0', - 5: 'DEBUG_BUS_SELECT_DPG_RESERVED1', -} -DEBUG_BUS_SELECT_DPG0 = 0 -DEBUG_BUS_SELECT_DPG1 = 1 -DEBUG_BUS_SELECT_DPG2 = 2 -DEBUG_BUS_SELECT_DPG3 = 3 -DEBUG_BUS_SELECT_DPG_RESERVED0 = 4 -DEBUG_BUS_SELECT_DPG_RESERVED1 = 5 -OPP_DPG_DEBUG_BUS_SELECT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_FMT_DEBUG_BUS_SELECT_CONTROL' -OPP_FMT_DEBUG_BUS_SELECT_CONTROL__enumvalues = { - 0: 'DEBUG_BUS_SELECT_FMT0', - 1: 'DEBUG_BUS_SELECT_FMT1', - 2: 'DEBUG_BUS_SELECT_FMT2', - 3: 'DEBUG_BUS_SELECT_FMT3', - 4: 'DEBUG_BUS_SELECT_FMT_RESERVED0', - 5: 'DEBUG_BUS_SELECT_FMT_RESERVED1', -} -DEBUG_BUS_SELECT_FMT0 = 0 -DEBUG_BUS_SELECT_FMT1 = 1 -DEBUG_BUS_SELECT_FMT2 = 2 -DEBUG_BUS_SELECT_FMT3 = 3 -DEBUG_BUS_SELECT_FMT_RESERVED0 = 4 -DEBUG_BUS_SELECT_FMT_RESERVED1 = 5 -OPP_FMT_DEBUG_BUS_SELECT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_OPPBUF_DEBUG_BUS_SELECT_CONTROL' -OPP_OPPBUF_DEBUG_BUS_SELECT_CONTROL__enumvalues = { - 0: 'DEBUG_BUS_SELECT_OPPBUF0', - 1: 'DEBUG_BUS_SELECT_OPPBUF1', - 2: 'DEBUG_BUS_SELECT_OPPBUF2', - 3: 'DEBUG_BUS_SELECT_OPPBUF3', - 4: 'DEBUG_BUS_SELECT_OPPBUF_RESERVED0', - 5: 'DEBUG_BUS_SELECT_OPPBUF_RESERVED1', -} -DEBUG_BUS_SELECT_OPPBUF0 = 0 -DEBUG_BUS_SELECT_OPPBUF1 = 1 -DEBUG_BUS_SELECT_OPPBUF2 = 2 -DEBUG_BUS_SELECT_OPPBUF3 = 3 -DEBUG_BUS_SELECT_OPPBUF_RESERVED0 = 4 -DEBUG_BUS_SELECT_OPPBUF_RESERVED1 = 5 -OPP_OPPBUF_DEBUG_BUS_SELECT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_OPP_PIPE_DEBUG_BUS_SELECT_CONTROL' -OPP_OPP_PIPE_DEBUG_BUS_SELECT_CONTROL__enumvalues = { - 0: 'DEBUG_BUS_SELECT_OPP_PIPE0', - 1: 'DEBUG_BUS_SELECT_OPP_PIPE1', - 2: 'DEBUG_BUS_SELECT_OPP_PIPE2', - 3: 'DEBUG_BUS_SELECT_OPP_PIPE3', - 4: 'DEBUG_BUS_SELECT_OPP_PIPE_RESERVED0', - 5: 'DEBUG_BUS_SELECT_OPP_PIPE_RESERVED1', -} -DEBUG_BUS_SELECT_OPP_PIPE0 = 0 -DEBUG_BUS_SELECT_OPP_PIPE1 = 1 -DEBUG_BUS_SELECT_OPP_PIPE2 = 2 -DEBUG_BUS_SELECT_OPP_PIPE3 = 3 -DEBUG_BUS_SELECT_OPP_PIPE_RESERVED0 = 4 -DEBUG_BUS_SELECT_OPP_PIPE_RESERVED1 = 5 -OPP_OPP_PIPE_DEBUG_BUS_SELECT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_TEST_CLK_SEL_CONTROL' -OPP_TEST_CLK_SEL_CONTROL__enumvalues = { - 0: 'OPP_TEST_CLK_SEL_DISPCLK_P', - 1: 'OPP_TEST_CLK_SEL_DISPCLK_R', - 2: 'OPP_TEST_CLK_SEL_DISPCLK_ABM0', - 3: 'OPP_TEST_CLK_SEL_DISPCLK_ABM1', - 4: 'OPP_TEST_CLK_SEL_DISPCLK_ABM2', - 5: 'OPP_TEST_CLK_SEL_DISPCLK_ABM3', - 6: 'OPP_TEST_CLK_SEL_RESERVED0', - 7: 'OPP_TEST_CLK_SEL_RESERVED1', - 8: 'OPP_TEST_CLK_SEL_DISPCLK_OPP0', - 9: 'OPP_TEST_CLK_SEL_DISPCLK_OPP1', - 10: 'OPP_TEST_CLK_SEL_DISPCLK_OPP2', - 11: 'OPP_TEST_CLK_SEL_DISPCLK_OPP3', - 12: 'OPP_TEST_CLK_SEL_RESERVED2', - 13: 'OPP_TEST_CLK_SEL_RESERVED3', -} -OPP_TEST_CLK_SEL_DISPCLK_P = 0 -OPP_TEST_CLK_SEL_DISPCLK_R = 1 -OPP_TEST_CLK_SEL_DISPCLK_ABM0 = 2 -OPP_TEST_CLK_SEL_DISPCLK_ABM1 = 3 -OPP_TEST_CLK_SEL_DISPCLK_ABM2 = 4 -OPP_TEST_CLK_SEL_DISPCLK_ABM3 = 5 -OPP_TEST_CLK_SEL_RESERVED0 = 6 -OPP_TEST_CLK_SEL_RESERVED1 = 7 -OPP_TEST_CLK_SEL_DISPCLK_OPP0 = 8 -OPP_TEST_CLK_SEL_DISPCLK_OPP1 = 9 -OPP_TEST_CLK_SEL_DISPCLK_OPP2 = 10 -OPP_TEST_CLK_SEL_DISPCLK_OPP3 = 11 -OPP_TEST_CLK_SEL_RESERVED2 = 12 -OPP_TEST_CLK_SEL_RESERVED3 = 13 -OPP_TEST_CLK_SEL_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_TOP_CLOCK_ENABLE_STATUS' -OPP_TOP_CLOCK_ENABLE_STATUS__enumvalues = { - 0: 'OPP_TOP_CLOCK_DISABLED_STATUS', - 1: 'OPP_TOP_CLOCK_ENABLED_STATUS', -} -OPP_TOP_CLOCK_DISABLED_STATUS = 0 -OPP_TOP_CLOCK_ENABLED_STATUS = 1 -OPP_TOP_CLOCK_ENABLE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_TOP_CLOCK_GATING_CONTROL' -OPP_TOP_CLOCK_GATING_CONTROL__enumvalues = { - 0: 'OPP_TOP_CLOCK_GATING_ENABLED', - 1: 'OPP_TOP_CLOCK_GATING_DISABLED', -} -OPP_TOP_CLOCK_GATING_ENABLED = 0 -OPP_TOP_CLOCK_GATING_DISABLED = 1 -OPP_TOP_CLOCK_GATING_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DSCRM_EN' -ENUM_DSCRM_EN__enumvalues = { - 0: 'ENUM_DSCRM_DISABLE', - 1: 'ENUM_DSCRM_ENABLE', -} -ENUM_DSCRM_DISABLE = 0 -ENUM_DSCRM_ENABLE = 1 -ENUM_DSCRM_EN = ctypes.c_uint32 # enum - -# values for enumeration 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK' -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_FALSE', - 1: 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_TRUE', -} -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_FALSE = 0 -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_TRUE = 1 -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'MASTER_UPDATE_LOCK_SEL' -MASTER_UPDATE_LOCK_SEL__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_SEL_0', - 1: 'MASTER_UPDATE_LOCK_SEL_1', - 2: 'MASTER_UPDATE_LOCK_SEL_2', - 3: 'MASTER_UPDATE_LOCK_SEL_3', - 4: 'MASTER_UPDATE_LOCK_SEL_RESERVED4', - 5: 'MASTER_UPDATE_LOCK_SEL_RESERVED5', -} -MASTER_UPDATE_LOCK_SEL_0 = 0 -MASTER_UPDATE_LOCK_SEL_1 = 1 -MASTER_UPDATE_LOCK_SEL_2 = 2 -MASTER_UPDATE_LOCK_SEL_3 = 3 -MASTER_UPDATE_LOCK_SEL_RESERVED4 = 4 -MASTER_UPDATE_LOCK_SEL_RESERVED5 = 5 -MASTER_UPDATE_LOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE' -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE__enumvalues = { - 0: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTH', - 1: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_TOP', - 2: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTTOM', - 3: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_RESERVED', -} -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTH = 0 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_TOP = 1 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTTOM = 2 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_RESERVED = 3 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN' -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN__enumvalues = { - 0: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_FALSE', - 1: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_TRUE', -} -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_FALSE = 0 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_TRUE = 1 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB' -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB__enumvalues = { - 0: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_FALSE', - 1: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_TRUE', -} -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_FALSE = 0 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_TRUE = 1 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR' -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR__enumvalues = { - 0: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_FALSE', - 1: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_TRUE', -} -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_FALSE = 0 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_TRUE = 1 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE' -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE__enumvalues = { - 0: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_BOTH', - 1: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_INTERLACE', - 2: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_PROGRASSIVE', - 3: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_RESERVED', -} -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_BOTH = 0 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_INTERLACE = 1 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_PROGRASSIVE = 2 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_RESERVED = 3 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL' -OTG_CONTROL_OTG_DISABLE_POINT_CNTL__enumvalues = { - 0: 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE', - 1: 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_CURRENT', - 2: 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_VUPDATE', - 3: 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_FIRST', -} -OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE = 0 -OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_CURRENT = 1 -OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_VUPDATE = 2 -OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_FIRST = 3 -OTG_CONTROL_OTG_DISABLE_POINT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL' -OTG_CONTROL_OTG_FIELD_NUMBER_CNTL__enumvalues = { - 0: 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_NORMAL', - 1: 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_DP', -} -OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_NORMAL = 0 -OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_DP = 1 -OTG_CONTROL_OTG_FIELD_NUMBER_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY' -OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY__enumvalues = { - 0: 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_FALSE', - 1: 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_TRUE', -} -OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_FALSE = 0 -OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_TRUE = 1 -OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_MASTER_EN' -OTG_CONTROL_OTG_MASTER_EN__enumvalues = { - 0: 'OTG_CONTROL_OTG_MASTER_EN_FALSE', - 1: 'OTG_CONTROL_OTG_MASTER_EN_TRUE', -} -OTG_CONTROL_OTG_MASTER_EN_FALSE = 0 -OTG_CONTROL_OTG_MASTER_EN_TRUE = 1 -OTG_CONTROL_OTG_MASTER_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_OUT_MUX' -OTG_CONTROL_OTG_OUT_MUX__enumvalues = { - 0: 'OTG_CONTROL_OTG_OUT_MUX_0', - 1: 'OTG_CONTROL_OTG_OUT_MUX_1', - 2: 'OTG_CONTROL_OTG_OUT_MUX_2', -} -OTG_CONTROL_OTG_OUT_MUX_0 = 0 -OTG_CONTROL_OTG_OUT_MUX_1 = 1 -OTG_CONTROL_OTG_OUT_MUX_2 = 2 -OTG_CONTROL_OTG_OUT_MUX = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_START_POINT_CNTL' -OTG_CONTROL_OTG_START_POINT_CNTL__enumvalues = { - 0: 'OTG_CONTROL_OTG_START_POINT_CNTL_NORMAL', - 1: 'OTG_CONTROL_OTG_START_POINT_CNTL_DP', -} -OTG_CONTROL_OTG_START_POINT_CNTL_NORMAL = 0 -OTG_CONTROL_OTG_START_POINT_CNTL_DP = 1 -OTG_CONTROL_OTG_START_POINT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN' -OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN__enumvalues = { - 0: 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_FALSE', - 1: 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_TRUE', -} -OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_FALSE = 0 -OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_TRUE = 1 -OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC1_EN' -OTG_CRC_CNTL_OTG_CRC1_EN__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC1_EN_FALSE', - 1: 'OTG_CRC_CNTL_OTG_CRC1_EN_TRUE', -} -OTG_CRC_CNTL_OTG_CRC1_EN_FALSE = 0 -OTG_CRC_CNTL_OTG_CRC1_EN_TRUE = 1 -OTG_CRC_CNTL_OTG_CRC1_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_CONT_EN' -OTG_CRC_CNTL_OTG_CRC_CONT_EN__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_CONT_EN_FALSE', - 1: 'OTG_CRC_CNTL_OTG_CRC_CONT_EN_TRUE', -} -OTG_CRC_CNTL_OTG_CRC_CONT_EN_FALSE = 0 -OTG_CRC_CNTL_OTG_CRC_CONT_EN_TRUE = 1 -OTG_CRC_CNTL_OTG_CRC_CONT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_CONT_MODE' -OTG_CRC_CNTL_OTG_CRC_CONT_MODE__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_CONT_MODE_RESET', - 1: 'OTG_CRC_CNTL_OTG_CRC_CONT_MODE_NORESET', -} -OTG_CRC_CNTL_OTG_CRC_CONT_MODE_RESET = 0 -OTG_CRC_CNTL_OTG_CRC_CONT_MODE_NORESET = 1 -OTG_CRC_CNTL_OTG_CRC_CONT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_EN' -OTG_CRC_CNTL_OTG_CRC_EN__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_EN_FALSE', - 1: 'OTG_CRC_CNTL_OTG_CRC_EN_TRUE', -} -OTG_CRC_CNTL_OTG_CRC_EN_FALSE = 0 -OTG_CRC_CNTL_OTG_CRC_EN_TRUE = 1 -OTG_CRC_CNTL_OTG_CRC_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE' -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_TOP', - 1: 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTTOM', - 2: 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_BOTTOM', - 3: 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_FIELD', -} -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_TOP = 0 -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTTOM = 1 -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_BOTTOM = 2 -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_FIELD = 3 -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE' -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_LEFT', - 1: 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_RIGHT', - 2: 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_EYES', - 3: 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_FIELDS', -} -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_LEFT = 0 -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_RIGHT = 1 -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_EYES = 2 -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_FIELDS = 3 -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS' -OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_FALSE', - 1: 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_TRUE', -} -OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_FALSE = 0 -OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_TRUE = 1 -OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT' -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UAB', - 1: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UA_B', - 2: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_AB', - 3: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_A_B', - 4: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IAB', - 5: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IA_B', - 6: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_AB', - 7: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_A_B', -} -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UAB = 0 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UA_B = 1 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_AB = 2 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_A_B = 3 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IAB = 4 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IA_B = 5 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_AB = 6 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_A_B = 7 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT' -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UAB', - 1: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UA_B', - 2: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_AB', - 3: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_A_B', - 4: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IAB', - 5: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IA_B', - 6: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_AB', - 7: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_A_B', -} -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UAB = 0 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UA_B = 1 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_AB = 2 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_A_B = 3 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IAB = 4 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IA_B = 5 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_AB = 6 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_A_B = 7 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DIG_UPDATE_VCOUNT_MODE' -OTG_DIG_UPDATE_VCOUNT_MODE__enumvalues = { - 0: 'OTG_DIG_UPDATE_VCOUNT_0', - 1: 'OTG_DIG_UPDATE_VCOUNT_1', -} -OTG_DIG_UPDATE_VCOUNT_0 = 0 -OTG_DIG_UPDATE_VCOUNT_1 = 1 -OTG_DIG_UPDATE_VCOUNT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE' -OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE__enumvalues = { - 0: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_0', - 1: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_1', - 2: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_2', - 3: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_3', -} -OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_0 = 0 -OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_1 = 1 -OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_2 = 2 -OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_3 = 3 -OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY' -OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY__enumvalues = { - 0: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_FALSE', - 1: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_TRUE', -} -OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_FALSE = 0 -OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_TRUE = 1 -OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME' -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME__enumvalues = { - 0: 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_1FRAME', - 1: 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_2FRAME', - 2: 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_4FRAME', - 3: 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_8FRAME', -} -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_1FRAME = 0 -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_2FRAME = 1 -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_4FRAME = 2 -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_8FRAME = 3 -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN' -OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN__enumvalues = { - 0: 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_FALSE', - 1: 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_TRUE', -} -OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_FALSE = 0 -OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_TRUE = 1 -OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY' -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY__enumvalues = { - 0: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_FALSE', - 1: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_TRUE', -} -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_FALSE = 0 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_TRUE = 1 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY' -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY__enumvalues = { - 0: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_FALSE', - 1: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_TRUE', -} -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_FALSE = 0 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_TRUE = 1 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT' -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT__enumvalues = { - 0: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC0', - 1: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC1', - 2: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICA', - 3: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICB', - 4: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICC', - 5: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICD', - 6: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICE', - 7: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICF', - 8: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD1', - 9: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD2', - 10: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1DATA', - 11: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1CLK', - 12: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2DATA', - 13: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2CLK', - 14: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 15: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_RESERVED', - 16: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_CLK', - 17: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_VSYNC', - 18: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKA', - 19: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKB', -} -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC0 = 0 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC1 = 1 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICA = 2 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICB = 3 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICC = 4 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICD = 5 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICE = 6 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICF = 7 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD1 = 8 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD2 = 9 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1DATA = 10 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1CLK = 11 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2DATA = 12 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2CLK = 13 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_MANUAL_FLOW_CONTROL = 14 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_RESERVED = 15 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_CLK = 16 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_VSYNC = 17 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKA = 18 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKB = 19 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK' -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK__enumvalues = { - 0: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_FALSE', - 1: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_TRUE', -} -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_FALSE = 0 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_TRUE = 1 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR' -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR__enumvalues = { - 0: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_FALSE', - 1: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_TRUE', -} -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_FALSE = 0 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_TRUE = 1 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE' -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE__enumvalues = { - 0: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_DISABLE', - 1: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT', - 2: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT_VCOUNT', - 3: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_RESERVED', -} -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_DISABLE = 0 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT = 1 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT_VCOUNT = 2 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_RESERVED = 3 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL' -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL__enumvalues = { - 0: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_FALSE', - 1: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_TRUE', -} -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_FALSE = 0 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_TRUE = 1 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL' -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL__enumvalues = { - 0: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG0', - 1: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG1', - 2: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG2', - 3: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG3', - 4: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_RESERVED4', - 5: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_RESERVED5', -} -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG0 = 0 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG1 = 1 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG2 = 2 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG3 = 3 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_RESERVED4 = 4 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_RESERVED5 = 5 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_CONTROL3_DIG_UPDATE_EYE_SEL' -OTG_GLOBAL_CONTROL3_DIG_UPDATE_EYE_SEL__enumvalues = { - 0: 'DIG_UPDATE_EYE_SEL_BOTH', - 1: 'DIG_UPDATE_EYE_SEL_LEFT', - 2: 'DIG_UPDATE_EYE_SEL_RIGHT', -} -DIG_UPDATE_EYE_SEL_BOTH = 0 -DIG_UPDATE_EYE_SEL_LEFT = 1 -DIG_UPDATE_EYE_SEL_RIGHT = 2 -OTG_GLOBAL_CONTROL3_DIG_UPDATE_EYE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_CONTROL3_DIG_UPDATE_FIELD_SEL' -OTG_GLOBAL_CONTROL3_DIG_UPDATE_FIELD_SEL__enumvalues = { - 0: 'DIG_UPDATE_FIELD_SEL_BOTH', - 1: 'DIG_UPDATE_FIELD_SEL_TOP', - 2: 'DIG_UPDATE_FIELD_SEL_BOTTOM', - 3: 'DIG_UPDATE_FIELD_SEL_RESERVED', -} -DIG_UPDATE_FIELD_SEL_BOTH = 0 -DIG_UPDATE_FIELD_SEL_TOP = 1 -DIG_UPDATE_FIELD_SEL_BOTTOM = 2 -DIG_UPDATE_FIELD_SEL_RESERVED = 3 -OTG_GLOBAL_CONTROL3_DIG_UPDATE_FIELD_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_FIELD' -OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_FIELD__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_DB_FIELD_BOTH', - 1: 'MASTER_UPDATE_LOCK_DB_FIELD_TOP', - 2: 'MASTER_UPDATE_LOCK_DB_FIELD_BOTTOM', - 3: 'MASTER_UPDATE_LOCK_DB_FIELD_RESERVED', -} -MASTER_UPDATE_LOCK_DB_FIELD_BOTH = 0 -MASTER_UPDATE_LOCK_DB_FIELD_TOP = 1 -MASTER_UPDATE_LOCK_DB_FIELD_BOTTOM = 2 -MASTER_UPDATE_LOCK_DB_FIELD_RESERVED = 3 -OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_FIELD = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_STEREO_SEL' -OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_STEREO_SEL__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_BOTH', - 1: 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_LEFT', - 2: 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_RIGHT', - 3: 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_RESERVED', -} -MASTER_UPDATE_LOCK_DB_STEREO_SEL_BOTH = 0 -MASTER_UPDATE_LOCK_DB_STEREO_SEL_LEFT = 1 -MASTER_UPDATE_LOCK_DB_STEREO_SEL_RIGHT = 2 -MASTER_UPDATE_LOCK_DB_STEREO_SEL_RESERVED = 3 -OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_STEREO_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_UPDATE_LOCK_EN' -OTG_GLOBAL_UPDATE_LOCK_EN__enumvalues = { - 0: 'OTG_GLOBAL_UPDATE_LOCK_DISABLE', - 1: 'OTG_GLOBAL_UPDATE_LOCK_ENABLE', -} -OTG_GLOBAL_UPDATE_LOCK_DISABLE = 0 -OTG_GLOBAL_UPDATE_LOCK_ENABLE = 1 -OTG_GLOBAL_UPDATE_LOCK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GSL_MASTER_MODE' -OTG_GSL_MASTER_MODE__enumvalues = { - 0: 'OTG_GSL_MASTER_MODE_0', - 1: 'OTG_GSL_MASTER_MODE_1', - 2: 'OTG_GSL_MASTER_MODE_2', - 3: 'OTG_GSL_MASTER_MODE_3', -} -OTG_GSL_MASTER_MODE_0 = 0 -OTG_GSL_MASTER_MODE_1 = 1 -OTG_GSL_MASTER_MODE_2 = 2 -OTG_GSL_MASTER_MODE_3 = 3 -OTG_GSL_MASTER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_HORZ_REPETITION_COUNT' -OTG_HORZ_REPETITION_COUNT__enumvalues = { - 0: 'OTG_HORZ_REPETITION_COUNT_0', - 1: 'OTG_HORZ_REPETITION_COUNT_1', - 2: 'OTG_HORZ_REPETITION_COUNT_2', - 3: 'OTG_HORZ_REPETITION_COUNT_3', - 4: 'OTG_HORZ_REPETITION_COUNT_4', - 5: 'OTG_HORZ_REPETITION_COUNT_5', - 6: 'OTG_HORZ_REPETITION_COUNT_6', - 7: 'OTG_HORZ_REPETITION_COUNT_7', - 8: 'OTG_HORZ_REPETITION_COUNT_8', - 9: 'OTG_HORZ_REPETITION_COUNT_9', - 10: 'OTG_HORZ_REPETITION_COUNT_10', - 11: 'OTG_HORZ_REPETITION_COUNT_11', - 12: 'OTG_HORZ_REPETITION_COUNT_12', - 13: 'OTG_HORZ_REPETITION_COUNT_13', - 14: 'OTG_HORZ_REPETITION_COUNT_14', - 15: 'OTG_HORZ_REPETITION_COUNT_15', -} -OTG_HORZ_REPETITION_COUNT_0 = 0 -OTG_HORZ_REPETITION_COUNT_1 = 1 -OTG_HORZ_REPETITION_COUNT_2 = 2 -OTG_HORZ_REPETITION_COUNT_3 = 3 -OTG_HORZ_REPETITION_COUNT_4 = 4 -OTG_HORZ_REPETITION_COUNT_5 = 5 -OTG_HORZ_REPETITION_COUNT_6 = 6 -OTG_HORZ_REPETITION_COUNT_7 = 7 -OTG_HORZ_REPETITION_COUNT_8 = 8 -OTG_HORZ_REPETITION_COUNT_9 = 9 -OTG_HORZ_REPETITION_COUNT_10 = 10 -OTG_HORZ_REPETITION_COUNT_11 = 11 -OTG_HORZ_REPETITION_COUNT_12 = 12 -OTG_HORZ_REPETITION_COUNT_13 = 13 -OTG_HORZ_REPETITION_COUNT_14 = 14 -OTG_HORZ_REPETITION_COUNT_15 = 15 -OTG_HORZ_REPETITION_COUNT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_H_SYNC_A_POL' -OTG_H_SYNC_A_POL__enumvalues = { - 0: 'OTG_H_SYNC_A_POL_HIGH', - 1: 'OTG_H_SYNC_A_POL_LOW', -} -OTG_H_SYNC_A_POL_HIGH = 0 -OTG_H_SYNC_A_POL_LOW = 1 -OTG_H_SYNC_A_POL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_H_TIMING_DIV_MODE' -OTG_H_TIMING_DIV_MODE__enumvalues = { - 0: 'OTG_H_TIMING_DIV_MODE_NO_DIV', - 1: 'OTG_H_TIMING_DIV_MODE_DIV_BY2', - 2: 'OTG_H_TIMING_DIV_MODE_RESERVED', - 3: 'OTG_H_TIMING_DIV_MODE_DIV_BY4', -} -OTG_H_TIMING_DIV_MODE_NO_DIV = 0 -OTG_H_TIMING_DIV_MODE_DIV_BY2 = 1 -OTG_H_TIMING_DIV_MODE_RESERVED = 2 -OTG_H_TIMING_DIV_MODE_DIV_BY4 = 3 -OTG_H_TIMING_DIV_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_H_TIMING_DIV_MODE_MANUAL' -OTG_H_TIMING_DIV_MODE_MANUAL__enumvalues = { - 0: 'OTG_H_TIMING_DIV_MODE_AUTO', - 1: 'OTG_H_TIMING_DIV_MODE_NOAUTO', -} -OTG_H_TIMING_DIV_MODE_AUTO = 0 -OTG_H_TIMING_DIV_MODE_NOAUTO = 1 -OTG_H_TIMING_DIV_MODE_MANUAL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE' -OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE__enumvalues = { - 0: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_FALSE', - 1: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_TRUE', -} -OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_FALSE = 0 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_TRUE = 1 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD' -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD__enumvalues = { - 0: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT', - 1: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_BOTTOM', - 2: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_TOP', - 3: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT2', -} -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT = 0 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_BOTTOM = 1 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_TOP = 2 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT2 = 3 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE' -OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE__enumvalues = { - 0: 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_FALSE', - 1: 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_TRUE', -} -OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_FALSE = 0 -OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_TRUE = 1 -OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_MASTER_UPDATE_LOCK_DB_EN' -OTG_MASTER_UPDATE_LOCK_DB_EN__enumvalues = { - 0: 'OTG_MASTER_UPDATE_LOCK_DISABLE', - 1: 'OTG_MASTER_UPDATE_LOCK_ENABLE', -} -OTG_MASTER_UPDATE_LOCK_DISABLE = 0 -OTG_MASTER_UPDATE_LOCK_ENABLE = 1 -OTG_MASTER_UPDATE_LOCK_DB_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_MASTER_UPDATE_LOCK_GSL_EN' -OTG_MASTER_UPDATE_LOCK_GSL_EN__enumvalues = { - 0: 'OTG_MASTER_UPDATE_LOCK_GSL_EN_FALSE', - 1: 'OTG_MASTER_UPDATE_LOCK_GSL_EN_TRUE', -} -OTG_MASTER_UPDATE_LOCK_GSL_EN_FALSE = 0 -OTG_MASTER_UPDATE_LOCK_GSL_EN_TRUE = 1 -OTG_MASTER_UPDATE_LOCK_GSL_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_MASTER_UPDATE_LOCK_VCOUNT_MODE' -OTG_MASTER_UPDATE_LOCK_VCOUNT_MODE__enumvalues = { - 0: 'OTG_MASTER_UPDATE_LOCK_VCOUNT_0', - 1: 'OTG_MASTER_UPDATE_LOCK_VCOUNT_1', -} -OTG_MASTER_UPDATE_LOCK_VCOUNT_0 = 0 -OTG_MASTER_UPDATE_LOCK_VCOUNT_1 = 1 -OTG_MASTER_UPDATE_LOCK_VCOUNT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL' -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL__enumvalues = { - 0: 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_DISABLE', - 1: 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERA', - 2: 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERB', - 3: 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_RESERVED', -} -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_DISABLE = 0 -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERA = 1 -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERB = 2 -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_RESERVED = 3 -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR' -OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR__enumvalues = { - 0: 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_FALSE', - 1: 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_TRUE', -} -OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_FALSE = 0 -OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_TRUE = 1 -OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR' -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_FALSE', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_TRUE', -} -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_FALSE = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_TRUE = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE' -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_FALSE', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_TRUE', -} -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_FALSE = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_TRUE = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE' -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_FALSE', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_TRUE', -} -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_FALSE = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_TRUE = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE' -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_FALSE', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_TRUE', -} -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_FALSE = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_TRUE = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE' -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_OFF', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_ON', -} -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_OFF = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_ON = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL' -OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL__enumvalues = { - 0: 'OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL_FALSE', - 1: 'OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL_TRUE', -} -OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL_FALSE = 0 -OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL_TRUE = 1 -OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STEREO_CONTROL_OTG_STEREO_EN' -OTG_STEREO_CONTROL_OTG_STEREO_EN__enumvalues = { - 0: 'OTG_STEREO_CONTROL_OTG_STEREO_EN_FALSE', - 1: 'OTG_STEREO_CONTROL_OTG_STEREO_EN_TRUE', -} -OTG_STEREO_CONTROL_OTG_STEREO_EN_FALSE = 0 -OTG_STEREO_CONTROL_OTG_STEREO_EN_TRUE = 1 -OTG_STEREO_CONTROL_OTG_STEREO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY' -OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY__enumvalues = { - 0: 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_FALSE', - 1: 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_TRUE', -} -OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_FALSE = 0 -OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_TRUE = 1 -OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY' -OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY__enumvalues = { - 0: 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_FALSE', - 1: 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_TRUE', -} -OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_FALSE = 0 -OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_TRUE = 1 -OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE' -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE__enumvalues = { - 0: 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_NO', - 1: 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RIGHT', - 2: 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_LEFT', - 3: 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RESERVED', -} -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_NO = 0 -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RIGHT = 1 -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_LEFT = 2 -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RESERVED = 3 -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR' -OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_FALSE', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_TRUE', -} -OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_FALSE = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_TRUE = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT' -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC0', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_INTERLACE', - 2: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICA', - 3: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICB', - 4: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_HSYNCA', - 5: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC1', - 6: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICC', - 7: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICD', -} -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC0 = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_INTERLACE = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICA = 2 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICB = 3 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_HSYNCA = 4 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC1 = 5 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICC = 6 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICD = 7 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN' -OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_FALSE', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_TRUE', -} -OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_FALSE = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_TRUE = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT' -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG0', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG1', - 2: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG2', - 3: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG3', - 4: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_RESERVED4', - 5: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_RESERVED5', -} -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG0 = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG1 = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG2 = 2 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG3 = 3 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_RESERVED4 = 4 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_RESERVED5 = 5 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT' -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC0', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICA_PIN', - 2: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICB_PIN', - 3: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICC_PIN', - 4: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICD_PIN', - 5: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICE_PIN', - 6: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICF_PIN', - 7: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKA_PIN', - 8: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKB_PIN', - 9: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_CLK_PIN', - 10: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_VSYNC_PIN', - 11: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD1', - 12: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD2', - 13: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_BLON_Y_PIN', - 14: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_RESERVED14', - 15: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_LOCK', - 16: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GSL_ALLOW_FLIP', - 17: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_PENDING', - 18: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_SOF', - 19: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HSYNC', - 20: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_VSYNC', - 21: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL', - 22: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 23: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC1', - 24: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_FLIP_PENDING', -} -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC0 = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICA_PIN = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICB_PIN = 2 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICC_PIN = 3 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICD_PIN = 4 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICE_PIN = 5 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICF_PIN = 6 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKA_PIN = 7 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKB_PIN = 8 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_CLK_PIN = 9 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_VSYNC_PIN = 10 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD1 = 11 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD2 = 12 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_BLON_Y_PIN = 13 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_RESERVED14 = 14 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_LOCK = 15 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GSL_ALLOW_FLIP = 16 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_PENDING = 17 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_SOF = 18 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HSYNC = 19 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_VSYNC = 20 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL = 21 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_MANUAL_FLOW_CONTROL = 22 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC1 = 23 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_FLIP_PENDING = 24 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL' -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL__enumvalues = { - 0: 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_0', - 1: 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_1', - 2: 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_2', - 3: 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_3', -} -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_0 = 0 -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_1 = 1 -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_2 = 2 -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_3 = 3 -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_FREQUENCY_SELECT' -OTG_TRIGA_FREQUENCY_SELECT__enumvalues = { - 0: 'OTG_TRIGA_FREQUENCY_SELECT_0', - 1: 'OTG_TRIGA_FREQUENCY_SELECT_1', - 2: 'OTG_TRIGA_FREQUENCY_SELECT_2', - 3: 'OTG_TRIGA_FREQUENCY_SELECT_3', -} -OTG_TRIGA_FREQUENCY_SELECT_0 = 0 -OTG_TRIGA_FREQUENCY_SELECT_1 = 1 -OTG_TRIGA_FREQUENCY_SELECT_2 = 2 -OTG_TRIGA_FREQUENCY_SELECT_3 = 3 -OTG_TRIGA_FREQUENCY_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL' -OTG_TRIGA_RISING_EDGE_DETECT_CNTL__enumvalues = { - 0: 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_0', - 1: 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_1', - 2: 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_2', - 3: 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_3', -} -OTG_TRIGA_RISING_EDGE_DETECT_CNTL_0 = 0 -OTG_TRIGA_RISING_EDGE_DETECT_CNTL_1 = 1 -OTG_TRIGA_RISING_EDGE_DETECT_CNTL_2 = 2 -OTG_TRIGA_RISING_EDGE_DETECT_CNTL_3 = 3 -OTG_TRIGA_RISING_EDGE_DETECT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR' -OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_FALSE', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_TRUE', -} -OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_FALSE = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_TRUE = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT' -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC0', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_INTERLACE', - 2: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICA', - 3: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICB', - 4: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_HSYNCA', - 5: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC1', - 6: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICC', - 7: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICD', -} -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC0 = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_INTERLACE = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICA = 2 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICB = 3 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_HSYNCA = 4 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC1 = 5 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICC = 6 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICD = 7 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN' -OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_FALSE', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_TRUE', -} -OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_FALSE = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_TRUE = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT' -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG0', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG1', - 2: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG2', - 3: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG3', - 4: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_RESERVED4', - 5: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_RESERVED5', -} -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG0 = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG1 = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG2 = 2 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG3 = 3 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_RESERVED4 = 4 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_RESERVED5 = 5 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT' -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC0', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICA_PIN', - 2: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICB_PIN', - 3: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICC_PIN', - 4: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICD_PIN', - 5: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICE_PIN', - 6: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICF_PIN', - 7: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKA_PIN', - 8: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKB_PIN', - 9: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_CLK_PIN', - 10: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_VSYNC_PIN', - 11: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD1', - 12: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD2', - 13: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_BLON_Y_PIN', - 14: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_RESERVED14', - 15: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_LOCK', - 16: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GSL_ALLOW_FLIP', - 17: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_PENDING', - 18: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_SOF', - 19: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HSYNC', - 20: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_VSYNC', - 21: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL', - 22: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 23: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC1', - 24: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_FLIP_PENDING', -} -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC0 = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICA_PIN = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICB_PIN = 2 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICC_PIN = 3 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICD_PIN = 4 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICE_PIN = 5 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICF_PIN = 6 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKA_PIN = 7 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKB_PIN = 8 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_CLK_PIN = 9 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_VSYNC_PIN = 10 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD1 = 11 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD2 = 12 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_BLON_Y_PIN = 13 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_RESERVED14 = 14 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_LOCK = 15 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GSL_ALLOW_FLIP = 16 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_PENDING = 17 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_SOF = 18 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HSYNC = 19 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_VSYNC = 20 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL = 21 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_MANUAL_FLOW_CONTROL = 22 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC1 = 23 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_FLIP_PENDING = 24 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL' -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL__enumvalues = { - 0: 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_0', - 1: 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_1', - 2: 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_2', - 3: 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_3', -} -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_0 = 0 -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_1 = 1 -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_2 = 2 -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_3 = 3 -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_FREQUENCY_SELECT' -OTG_TRIGB_FREQUENCY_SELECT__enumvalues = { - 0: 'OTG_TRIGB_FREQUENCY_SELECT_0', - 1: 'OTG_TRIGB_FREQUENCY_SELECT_1', - 2: 'OTG_TRIGB_FREQUENCY_SELECT_2', - 3: 'OTG_TRIGB_FREQUENCY_SELECT_3', -} -OTG_TRIGB_FREQUENCY_SELECT_0 = 0 -OTG_TRIGB_FREQUENCY_SELECT_1 = 1 -OTG_TRIGB_FREQUENCY_SELECT_2 = 2 -OTG_TRIGB_FREQUENCY_SELECT_3 = 3 -OTG_TRIGB_FREQUENCY_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL' -OTG_TRIGB_RISING_EDGE_DETECT_CNTL__enumvalues = { - 0: 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_0', - 1: 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_1', - 2: 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_2', - 3: 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_3', -} -OTG_TRIGB_RISING_EDGE_DETECT_CNTL_0 = 0 -OTG_TRIGB_RISING_EDGE_DETECT_CNTL_1 = 1 -OTG_TRIGB_RISING_EDGE_DETECT_CNTL_2 = 2 -OTG_TRIGB_RISING_EDGE_DETECT_CNTL_3 = 3 -OTG_TRIGB_RISING_EDGE_DETECT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK' -OTG_UPDATE_LOCK_OTG_UPDATE_LOCK__enumvalues = { - 0: 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_FALSE', - 1: 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_TRUE', -} -OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_FALSE = 0 -OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_TRUE = 1 -OTG_UPDATE_LOCK_OTG_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR' -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_TRUE', -} -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_FALSE = 0 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_TRUE = 1 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE' -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_TRUE', -} -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_FALSE = 0 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_TRUE = 1 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE' -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_TRUE', -} -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_FALSE = 0 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_TRUE = 1 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY' -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_TRUE', -} -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_FALSE = 0 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_TRUE = 1 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR' -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_CLEAR_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_TRUE', -} -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_CLEAR_FALSE = 0 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_TRUE = 1 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE' -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_TRUE', -} -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_FALSE = 0 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_TRUE = 1 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE' -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_TRUE', -} -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_FALSE = 0 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_TRUE = 1 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR' -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_CLEAR_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_TRUE', -} -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_CLEAR_FALSE = 0 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_TRUE = 1 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE' -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_TRUE', -} -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_FALSE = 0 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_TRUE = 1 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE' -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_TRUE', -} -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_FALSE = 0 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_TRUE = 1 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE' -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE__enumvalues = { - 0: 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_DISABLE', - 1: 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERA', - 2: 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERB', - 3: 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_RESERVED', -} -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_DISABLE = 0 -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERA = 1 -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERB = 2 -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_RESERVED = 3 -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR' -OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR__enumvalues = { - 0: 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_FALSE', - 1: 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_TRUE', -} -OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_FALSE = 0 -OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_TRUE = 1 -OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR' -OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR__enumvalues = { - 0: 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_FALSE', - 1: 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_TRUE', -} -OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_FALSE = 0 -OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_TRUE = 1 -OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VUPDATE_BLOCK_DISABLE' -OTG_VUPDATE_BLOCK_DISABLE__enumvalues = { - 0: 'OTG_VUPDATE_BLOCK_DISABLE_OFF', - 1: 'OTG_VUPDATE_BLOCK_DISABLE_ON', -} -OTG_VUPDATE_BLOCK_DISABLE_OFF = 0 -OTG_VUPDATE_BLOCK_DISABLE_ON = 1 -OTG_VUPDATE_BLOCK_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_SYNC_A_POL' -OTG_V_SYNC_A_POL__enumvalues = { - 0: 'OTG_V_SYNC_A_POL_HIGH', - 1: 'OTG_V_SYNC_A_POL_LOW', -} -OTG_V_SYNC_A_POL_HIGH = 0 -OTG_V_SYNC_A_POL_LOW = 1 -OTG_V_SYNC_A_POL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_SYNC_MODE' -OTG_V_SYNC_MODE__enumvalues = { - 0: 'OTG_V_SYNC_MODE_HSYNC', - 1: 'OTG_V_SYNC_MODE_HBLANK', -} -OTG_V_SYNC_MODE_HSYNC = 0 -OTG_V_SYNC_MODE_HBLANK = 1 -OTG_V_SYNC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD' -OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_0', - 1: 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_1', -} -OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_0 = 0 -OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_1 = 1 -OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT' -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_DISABLE', - 1: 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_ENABLE', -} -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_DISABLE = 0 -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_ENABLE = 1 -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC' -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_DISABLE', - 1: 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_ENABLE', -} -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_DISABLE = 0 -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_ENABLE = 1 -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL' -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_FALSE', - 1: 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_TRUE', -} -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_FALSE = 0 -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_TRUE = 1 -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL' -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_FALSE', - 1: 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_TRUE', -} -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_FALSE = 0 -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_TRUE = 1 -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK' -OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK__enumvalues = { - 0: 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK_FALSE', - 1: 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK_TRUE', -} -OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK_FALSE = 0 -OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK_TRUE = 1 -OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL' -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL__enumvalues = { - 0: 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG0', - 1: 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG1', - 2: 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG2', - 3: 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG3', - 4: 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_RESERVED4', - 5: 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_RESERVED5', -} -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG0 = 0 -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG1 = 1 -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG2 = 2 -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG3 = 3 -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_RESERVED4 = 4 -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_RESERVED5 = 5 -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DC_DMCUB_INT_TYPE' -DC_DMCUB_INT_TYPE__enumvalues = { - 0: 'INT_LEVEL', - 1: 'INT_PULSE', -} -INT_LEVEL = 0 -INT_PULSE = 1 -DC_DMCUB_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DC_DMCUB_TIMER_WINDOW' -DC_DMCUB_TIMER_WINDOW__enumvalues = { - 0: 'BITS_31_0', - 1: 'BITS_32_1', - 2: 'BITS_33_2', - 3: 'BITS_34_3', - 4: 'BITS_35_4', - 5: 'BITS_36_5', - 6: 'BITS_37_6', - 7: 'BITS_38_7', -} -BITS_31_0 = 0 -BITS_32_1 = 1 -BITS_33_2 = 2 -BITS_34_3 = 3 -BITS_35_4 = 4 -BITS_36_5 = 5 -BITS_37_6 = 6 -BITS_38_7 = 7 -DC_DMCUB_TIMER_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'INVALID_REG_ACCESS_TYPE' -INVALID_REG_ACCESS_TYPE__enumvalues = { - 0: 'REG_UNALLOCATED_ADDR_WRITE', - 1: 'REG_UNALLOCATED_ADDR_READ', - 2: 'REG_VIRTUAL_WRITE', - 3: 'REG_VIRTUAL_READ', - 4: 'REG_SECURE_VIOLATE_WRITE', - 5: 'REG_SECURE_VIOLATE_READ', -} -REG_UNALLOCATED_ADDR_WRITE = 0 -REG_UNALLOCATED_ADDR_READ = 1 -REG_VIRTUAL_WRITE = 2 -REG_VIRTUAL_READ = 3 -REG_SECURE_VIOLATE_WRITE = 4 -REG_SECURE_VIOLATE_READ = 5 -INVALID_REG_ACCESS_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DMU_DC_GPU_TIMER_READ_SELECT' -DMU_DC_GPU_TIMER_READ_SELECT__enumvalues = { - 0: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_0', - 1: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_1', - 2: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_2', - 3: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_3', - 4: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_4', - 5: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_5', - 6: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_6', - 7: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_7', - 8: 'RESERVED_8', - 9: 'RESERVED_9', - 10: 'RESERVED_10', - 11: 'RESERVED_11', - 12: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_STARTUP_12', - 13: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_STARTUP_13', - 14: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_STARTUP_14', - 15: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_STARTUP_15', - 16: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_STARTUP_16', - 17: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_STARTUP_17', - 18: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_STARTUP_18', - 19: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_STARTUP_19', - 20: 'RESERVED_20', - 21: 'RESERVED_21', - 22: 'RESERVED_22', - 23: 'RESERVED_23', - 24: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM_24', - 25: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM_25', - 26: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VSYNC_NOM_26', - 27: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VSYNC_NOM_27', - 28: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VSYNC_NOM_28', - 29: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VSYNC_NOM_29', - 30: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VSYNC_NOM_30', - 31: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VSYNC_NOM_31', - 32: 'RESERVED_32', - 33: 'RESERVED_33', - 34: 'RESERVED_34', - 35: 'RESERVED_35', - 36: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VREADY_36', - 37: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VREADY_37', - 38: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VREADY_38', - 39: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VREADY_39', - 40: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VREADY_40', - 41: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VREADY_41', - 42: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VREADY_42', - 43: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VREADY_43', - 44: 'RESERVED_44', - 45: 'RESERVED_45', - 46: 'RESERVED_46', - 47: 'RESERVED_47', - 48: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_48', - 49: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_49', - 50: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_50', - 51: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_51', - 52: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_52', - 53: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_53', - 54: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_54', - 55: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_55', - 56: 'RESERVED_56', - 57: 'RESERVED_57', - 58: 'RESERVED_58', - 59: 'RESERVED_59', - 60: 'RESERVED_60', - 61: 'RESERVED_61', - 62: 'RESERVED_62', - 63: 'RESERVED_63', - 64: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_NO_LOCK_64', - 65: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_NO_LOCK_65', - 66: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_NO_LOCK_66', - 67: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_NO_LOCK_67', - 68: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_NO_LOCK_68', - 69: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_NO_LOCK_69', - 70: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_NO_LOCK_70', - 71: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_NO_LOCK_71', - 72: 'RESERVED_72', - 73: 'RESERVED_73', - 74: 'RESERVED_74', - 75: 'RESERVED_75', - 76: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_AWAY_76', - 77: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_AWAY_77', - 78: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_AWAY_78', - 79: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_AWAY_79', - 80: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_AWAY_80', - 81: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_AWAY_81', - 82: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_AWAY_82', - 83: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_AWAY_83', - 84: 'RESERVED_84', - 85: 'RESERVED_85', - 86: 'RESERVED_86', - 87: 'RESERVED_87', - 88: 'RESERVED_88', - 89: 'RESERVED_89', - 90: 'RESERVED_90', - 91: 'RESERVED_91', -} -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_0 = 0 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_1 = 1 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_2 = 2 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_3 = 3 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_4 = 4 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_5 = 5 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_6 = 6 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_7 = 7 -RESERVED_8 = 8 -RESERVED_9 = 9 -RESERVED_10 = 10 -RESERVED_11 = 11 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_STARTUP_12 = 12 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_STARTUP_13 = 13 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_STARTUP_14 = 14 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_STARTUP_15 = 15 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_STARTUP_16 = 16 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_STARTUP_17 = 17 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_STARTUP_18 = 18 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_STARTUP_19 = 19 -RESERVED_20 = 20 -RESERVED_21 = 21 -RESERVED_22 = 22 -RESERVED_23 = 23 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM_24 = 24 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM_25 = 25 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VSYNC_NOM_26 = 26 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VSYNC_NOM_27 = 27 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VSYNC_NOM_28 = 28 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VSYNC_NOM_29 = 29 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VSYNC_NOM_30 = 30 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VSYNC_NOM_31 = 31 -RESERVED_32 = 32 -RESERVED_33 = 33 -RESERVED_34 = 34 -RESERVED_35 = 35 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VREADY_36 = 36 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VREADY_37 = 37 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VREADY_38 = 38 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VREADY_39 = 39 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VREADY_40 = 40 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VREADY_41 = 41 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VREADY_42 = 42 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VREADY_43 = 43 -RESERVED_44 = 44 -RESERVED_45 = 45 -RESERVED_46 = 46 -RESERVED_47 = 47 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_48 = 48 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_49 = 49 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_50 = 50 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_51 = 51 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_52 = 52 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_53 = 53 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_54 = 54 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_55 = 55 -RESERVED_56 = 56 -RESERVED_57 = 57 -RESERVED_58 = 58 -RESERVED_59 = 59 -RESERVED_60 = 60 -RESERVED_61 = 61 -RESERVED_62 = 62 -RESERVED_63 = 63 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_NO_LOCK_64 = 64 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_NO_LOCK_65 = 65 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_NO_LOCK_66 = 66 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_NO_LOCK_67 = 67 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_NO_LOCK_68 = 68 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_NO_LOCK_69 = 69 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_NO_LOCK_70 = 70 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_NO_LOCK_71 = 71 -RESERVED_72 = 72 -RESERVED_73 = 73 -RESERVED_74 = 74 -RESERVED_75 = 75 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_AWAY_76 = 76 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_AWAY_77 = 77 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_AWAY_78 = 78 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_AWAY_79 = 79 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_AWAY_80 = 80 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_AWAY_81 = 81 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_AWAY_82 = 82 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_AWAY_83 = 83 -RESERVED_84 = 84 -RESERVED_85 = 85 -RESERVED_86 = 86 -RESERVED_87 = 87 -RESERVED_88 = 88 -RESERVED_89 = 89 -RESERVED_90 = 90 -RESERVED_91 = 91 -DMU_DC_GPU_TIMER_READ_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DMU_DC_GPU_TIMER_START_POSITION' -DMU_DC_GPU_TIMER_START_POSITION__enumvalues = { - 0: 'DMU_GPU_TIMER_START_0_END_27', - 1: 'DMU_GPU_TIMER_START_1_END_28', - 2: 'DMU_GPU_TIMER_START_2_END_29', - 3: 'DMU_GPU_TIMER_START_3_END_30', - 4: 'DMU_GPU_TIMER_START_4_END_31', - 5: 'DMU_GPU_TIMER_START_6_END_33', - 6: 'DMU_GPU_TIMER_START_8_END_35', - 7: 'DMU_GPU_TIMER_START_10_END_37', -} -DMU_GPU_TIMER_START_0_END_27 = 0 -DMU_GPU_TIMER_START_1_END_28 = 1 -DMU_GPU_TIMER_START_2_END_29 = 2 -DMU_GPU_TIMER_START_3_END_30 = 3 -DMU_GPU_TIMER_START_4_END_31 = 4 -DMU_GPU_TIMER_START_6_END_33 = 5 -DMU_GPU_TIMER_START_8_END_35 = 6 -DMU_GPU_TIMER_START_10_END_37 = 7 -DMU_DC_GPU_TIMER_START_POSITION = ctypes.c_uint32 # enum - -# values for enumeration 'IHC_INTERRUPT_DEST' -IHC_INTERRUPT_DEST__enumvalues = { - 0: 'INTERRUPT_SENT_TO_IH', - 1: 'INTERRUPT_SENT_TO_DMCUB', -} -INTERRUPT_SENT_TO_IH = 0 -INTERRUPT_SENT_TO_DMCUB = 1 -IHC_INTERRUPT_DEST = ctypes.c_uint32 # enum - -# values for enumeration 'IHC_INTERRUPT_LINE_STATUS' -IHC_INTERRUPT_LINE_STATUS__enumvalues = { - 0: 'INTERRUPT_LINE_NOT_ASSERTED', - 1: 'INTERRUPT_LINE_ASSERTED', -} -INTERRUPT_LINE_NOT_ASSERTED = 0 -INTERRUPT_LINE_ASSERTED = 1 -IHC_INTERRUPT_LINE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'DC_SMU_INTERRUPT_ENABLE' -DC_SMU_INTERRUPT_ENABLE__enumvalues = { - 0: 'DISABLE_THE_INTERRUPT', - 1: 'ENABLE_THE_INTERRUPT', -} -DISABLE_THE_INTERRUPT = 0 -ENABLE_THE_INTERRUPT = 1 -DC_SMU_INTERRUPT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DMU_CLOCK_ON' -DMU_CLOCK_ON__enumvalues = { - 0: 'DMU_CLOCK_STATUS_ON', - 1: 'DMU_CLOCK_STATUS_OFF', -} -DMU_CLOCK_STATUS_ON = 0 -DMU_CLOCK_STATUS_OFF = 1 -DMU_CLOCK_ON = ctypes.c_uint32 # enum - -# values for enumeration 'SMU_INTR' -SMU_INTR__enumvalues = { - 0: 'SMU_MSG_INTR_NOOP', - 1: 'SET_SMU_MSG_INTR', -} -SMU_MSG_INTR_NOOP = 0 -SET_SMU_MSG_INTR = 1 -SMU_INTR = ctypes.c_uint32 # enum - -# values for enumeration 'ALLOW_SR_ON_TRANS_REQ' -ALLOW_SR_ON_TRANS_REQ__enumvalues = { - 0: 'ALLOW_SR_ON_TRANS_REQ_ENABLE', - 1: 'ALLOW_SR_ON_TRANS_REQ_DISABLE', -} -ALLOW_SR_ON_TRANS_REQ_ENABLE = 0 -ALLOW_SR_ON_TRANS_REQ_DISABLE = 1 -ALLOW_SR_ON_TRANS_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'AMCLOCK_ENABLE' -AMCLOCK_ENABLE__enumvalues = { - 0: 'ENABLE_AMCLK0', - 1: 'ENABLE_AMCLK1', -} -ENABLE_AMCLK0 = 0 -ENABLE_AMCLK1 = 1 -AMCLOCK_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CLEAR_SMU_INTR' -CLEAR_SMU_INTR__enumvalues = { - 0: 'SMU_INTR_STATUS_NOOP', - 1: 'SMU_INTR_STATUS_CLEAR', -} -SMU_INTR_STATUS_NOOP = 0 -SMU_INTR_STATUS_CLEAR = 1 -CLEAR_SMU_INTR = ctypes.c_uint32 # enum - -# values for enumeration 'CLOCK_BRANCH_SOFT_RESET' -CLOCK_BRANCH_SOFT_RESET__enumvalues = { - 0: 'CLOCK_BRANCH_SOFT_RESET_NOOP', - 1: 'CLOCK_BRANCH_SOFT_RESET_FORCE', -} -CLOCK_BRANCH_SOFT_RESET_NOOP = 0 -CLOCK_BRANCH_SOFT_RESET_FORCE = 1 -CLOCK_BRANCH_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO0_SOURCE_SEL' -DCCG_AUDIO_DTO0_SOURCE_SEL__enumvalues = { - 0: 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG0', - 1: 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG1', - 2: 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG2', - 3: 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG3', - 4: 'DCCG_AUDIO_DTO0_SOURCE_SEL_RESERVED', -} -DCCG_AUDIO_DTO0_SOURCE_SEL_OTG0 = 0 -DCCG_AUDIO_DTO0_SOURCE_SEL_OTG1 = 1 -DCCG_AUDIO_DTO0_SOURCE_SEL_OTG2 = 2 -DCCG_AUDIO_DTO0_SOURCE_SEL_OTG3 = 3 -DCCG_AUDIO_DTO0_SOURCE_SEL_RESERVED = 4 -DCCG_AUDIO_DTO0_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO2_SOURCE_SEL' -DCCG_AUDIO_DTO2_SOURCE_SEL__enumvalues = { - 0: 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0', - 1: 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0_DIV2', -} -DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0 = 0 -DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0_DIV2 = 1 -DCCG_AUDIO_DTO2_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO_SEL' -DCCG_AUDIO_DTO_SEL__enumvalues = { - 0: 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO0', - 1: 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO1', - 2: 'DCCG_AUDIO_DTO_SEL_NO_AUDIO_DTO', - 3: 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO_DTBCLK', -} -DCCG_AUDIO_DTO_SEL_AUDIO_DTO0 = 0 -DCCG_AUDIO_DTO_SEL_AUDIO_DTO1 = 1 -DCCG_AUDIO_DTO_SEL_NO_AUDIO_DTO = 2 -DCCG_AUDIO_DTO_SEL_AUDIO_DTO_DTBCLK = 3 -DCCG_AUDIO_DTO_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO_USE_512FBR_DTO' -DCCG_AUDIO_DTO_USE_512FBR_DTO__enumvalues = { - 0: 'DCCG_AUDIO_DTO_USE_128FBR_FOR_DP', - 1: 'DCCG_AUDIO_DTO_USE_512FBR_FOR_DP', -} -DCCG_AUDIO_DTO_USE_128FBR_FOR_DP = 0 -DCCG_AUDIO_DTO_USE_512FBR_FOR_DP = 1 -DCCG_AUDIO_DTO_USE_512FBR_DTO = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_DBG_BLOCK_SEL' -DCCG_DBG_BLOCK_SEL__enumvalues = { - 0: 'DCCG_DBG_BLOCK_SEL_DCCG', - 1: 'DCCG_DBG_BLOCK_SEL_PMON', - 2: 'DCCG_DBG_BLOCK_SEL_PMON2', -} -DCCG_DBG_BLOCK_SEL_DCCG = 0 -DCCG_DBG_BLOCK_SEL_PMON = 1 -DCCG_DBG_BLOCK_SEL_PMON2 = 2 -DCCG_DBG_BLOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_DBG_EN' -DCCG_DBG_EN__enumvalues = { - 0: 'DCCG_DBG_EN_DISABLE', - 1: 'DCCG_DBG_EN_ENABLE', -} -DCCG_DBG_EN_DISABLE = 0 -DCCG_DBG_EN_ENABLE = 1 -DCCG_DBG_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_DEEP_COLOR_CNTL' -DCCG_DEEP_COLOR_CNTL__enumvalues = { - 0: 'DCCG_DEEP_COLOR_DTO_DISABLE', - 1: 'DCCG_DEEP_COLOR_DTO_5_4_RATIO', - 2: 'DCCG_DEEP_COLOR_DTO_3_2_RATIO', - 3: 'DCCG_DEEP_COLOR_DTO_2_1_RATIO', -} -DCCG_DEEP_COLOR_DTO_DISABLE = 0 -DCCG_DEEP_COLOR_DTO_5_4_RATIO = 1 -DCCG_DEEP_COLOR_DTO_3_2_RATIO = 2 -DCCG_DEEP_COLOR_DTO_2_1_RATIO = 3 -DCCG_DEEP_COLOR_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_FIFO_ERRDET_OVR_EN' -DCCG_FIFO_ERRDET_OVR_EN__enumvalues = { - 0: 'DCCG_FIFO_ERRDET_OVR_DISABLE', - 1: 'DCCG_FIFO_ERRDET_OVR_ENABLE', -} -DCCG_FIFO_ERRDET_OVR_DISABLE = 0 -DCCG_FIFO_ERRDET_OVR_ENABLE = 1 -DCCG_FIFO_ERRDET_OVR_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_FIFO_ERRDET_RESET' -DCCG_FIFO_ERRDET_RESET__enumvalues = { - 0: 'DCCG_FIFO_ERRDET_RESET_NOOP', - 1: 'DCCG_FIFO_ERRDET_RESET_FORCE', -} -DCCG_FIFO_ERRDET_RESET_NOOP = 0 -DCCG_FIFO_ERRDET_RESET_FORCE = 1 -DCCG_FIFO_ERRDET_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_FIFO_ERRDET_STATE' -DCCG_FIFO_ERRDET_STATE__enumvalues = { - 0: 'DCCG_FIFO_ERRDET_STATE_CALIBRATION', - 1: 'DCCG_FIFO_ERRDET_STATE_DETECTION', -} -DCCG_FIFO_ERRDET_STATE_CALIBRATION = 0 -DCCG_FIFO_ERRDET_STATE_DETECTION = 1 -DCCG_FIFO_ERRDET_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_MODE_HSYNC' -DCCG_PERF_MODE_HSYNC__enumvalues = { - 0: 'DCCG_PERF_MODE_HSYNC_NOOP', - 1: 'DCCG_PERF_MODE_HSYNC_START', -} -DCCG_PERF_MODE_HSYNC_NOOP = 0 -DCCG_PERF_MODE_HSYNC_START = 1 -DCCG_PERF_MODE_HSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_MODE_VSYNC' -DCCG_PERF_MODE_VSYNC__enumvalues = { - 0: 'DCCG_PERF_MODE_VSYNC_NOOP', - 1: 'DCCG_PERF_MODE_VSYNC_START', -} -DCCG_PERF_MODE_VSYNC_NOOP = 0 -DCCG_PERF_MODE_VSYNC_START = 1 -DCCG_PERF_MODE_VSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_OTG_SELECT' -DCCG_PERF_OTG_SELECT__enumvalues = { - 0: 'DCCG_PERF_SEL_OTG0', - 1: 'DCCG_PERF_SEL_OTG1', - 2: 'DCCG_PERF_SEL_OTG2', - 3: 'DCCG_PERF_SEL_OTG3', - 4: 'DCCG_PERF_SEL_RESERVED', -} -DCCG_PERF_SEL_OTG0 = 0 -DCCG_PERF_SEL_OTG1 = 1 -DCCG_PERF_SEL_OTG2 = 2 -DCCG_PERF_SEL_OTG3 = 3 -DCCG_PERF_SEL_RESERVED = 4 -DCCG_PERF_OTG_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_RUN' -DCCG_PERF_RUN__enumvalues = { - 0: 'DCCG_PERF_RUN_NOOP', - 1: 'DCCG_PERF_RUN_START', -} -DCCG_PERF_RUN_NOOP = 0 -DCCG_PERF_RUN_START = 1 -DCCG_PERF_RUN = ctypes.c_uint32 # enum - -# values for enumeration 'DC_MEM_GLOBAL_PWR_REQ_DIS' -DC_MEM_GLOBAL_PWR_REQ_DIS__enumvalues = { - 0: 'DC_MEM_GLOBAL_PWR_REQ_ENABLE', - 1: 'DC_MEM_GLOBAL_PWR_REQ_DISABLE', -} -DC_MEM_GLOBAL_PWR_REQ_ENABLE = 0 -DC_MEM_GLOBAL_PWR_REQ_DISABLE = 1 -DC_MEM_GLOBAL_PWR_REQ_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'DIO_FIFO_ERROR' -DIO_FIFO_ERROR__enumvalues = { - 0: 'DIO_FIFO_ERROR_00', - 1: 'DIO_FIFO_ERROR_01', - 2: 'DIO_FIFO_ERROR_10', - 3: 'DIO_FIFO_ERROR_11', -} -DIO_FIFO_ERROR_00 = 0 -DIO_FIFO_ERROR_01 = 1 -DIO_FIFO_ERROR_10 = 2 -DIO_FIFO_ERROR_11 = 3 -DIO_FIFO_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'DISABLE_CLOCK_GATING' -DISABLE_CLOCK_GATING__enumvalues = { - 0: 'CLOCK_GATING_ENABLED', - 1: 'CLOCK_GATING_DISABLED', -} -CLOCK_GATING_ENABLED = 0 -CLOCK_GATING_DISABLED = 1 -DISABLE_CLOCK_GATING = ctypes.c_uint32 # enum - -# values for enumeration 'DISABLE_CLOCK_GATING_IN_DCO' -DISABLE_CLOCK_GATING_IN_DCO__enumvalues = { - 0: 'CLOCK_GATING_ENABLED_IN_DCO', - 1: 'CLOCK_GATING_DISABLED_IN_DCO', -} -CLOCK_GATING_ENABLED_IN_DCO = 0 -CLOCK_GATING_DISABLED_IN_DCO = 1 -DISABLE_CLOCK_GATING_IN_DCO = ctypes.c_uint32 # enum - -# values for enumeration 'DISPCLK_CHG_FWD_CORR_DISABLE' -DISPCLK_CHG_FWD_CORR_DISABLE__enumvalues = { - 0: 'DISPCLK_CHG_FWD_CORR_ENABLE_AT_BEGINNING', - 1: 'DISPCLK_CHG_FWD_CORR_DISABLE_AT_BEGINNING', -} -DISPCLK_CHG_FWD_CORR_ENABLE_AT_BEGINNING = 0 -DISPCLK_CHG_FWD_CORR_DISABLE_AT_BEGINNING = 1 -DISPCLK_CHG_FWD_CORR_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DISPCLK_FREQ_RAMP_DONE' -DISPCLK_FREQ_RAMP_DONE__enumvalues = { - 0: 'DISPCLK_FREQ_RAMP_IN_PROGRESS', - 1: 'DISPCLK_FREQ_RAMP_COMPLETED', -} -DISPCLK_FREQ_RAMP_IN_PROGRESS = 0 -DISPCLK_FREQ_RAMP_COMPLETED = 1 -DISPCLK_FREQ_RAMP_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'DPREFCLK_SRC_SEL' -DPREFCLK_SRC_SEL__enumvalues = { - 0: 'DPREFCLK_SRC_SEL_CK', - 1: 'DPREFCLK_SRC_SEL_P0PLL', - 2: 'DPREFCLK_SRC_SEL_P1PLL', - 3: 'DPREFCLK_SRC_SEL_P2PLL', -} -DPREFCLK_SRC_SEL_CK = 0 -DPREFCLK_SRC_SEL_P0PLL = 1 -DPREFCLK_SRC_SEL_P1PLL = 2 -DPREFCLK_SRC_SEL_P2PLL = 3 -DPREFCLK_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DTO_DS_DISABLE' -DP_DTO_DS_DISABLE__enumvalues = { - 0: 'DP_DTO_DESPREAD_DISABLE', - 1: 'DP_DTO_DESPREAD_ENABLE', -} -DP_DTO_DESPREAD_DISABLE = 0 -DP_DTO_DESPREAD_ENABLE = 1 -DP_DTO_DS_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DS_HW_CAL_ENABLE' -DS_HW_CAL_ENABLE__enumvalues = { - 0: 'DS_HW_CAL_DIS', - 1: 'DS_HW_CAL_EN', -} -DS_HW_CAL_DIS = 0 -DS_HW_CAL_EN = 1 -DS_HW_CAL_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DS_JITTER_COUNT_SRC_SEL' -DS_JITTER_COUNT_SRC_SEL__enumvalues = { - 0: 'DS_JITTER_COUNT_SRC_SEL0', - 1: 'DS_JITTER_COUNT_SRC_SEL1', -} -DS_JITTER_COUNT_SRC_SEL0 = 0 -DS_JITTER_COUNT_SRC_SEL1 = 1 -DS_JITTER_COUNT_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DS_REF_SRC' -DS_REF_SRC__enumvalues = { - 0: 'DS_REF_IS_XTALIN', - 1: 'DS_REF_IS_EXT_GENLOCK', - 2: 'DS_REF_IS_PCIE', -} -DS_REF_IS_XTALIN = 0 -DS_REF_IS_EXT_GENLOCK = 1 -DS_REF_IS_PCIE = 2 -DS_REF_SRC = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLKC_IN_PHASE' -DVOACLKC_IN_PHASE__enumvalues = { - 0: 'DVOACLKC_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', - 1: 'DVOACLKC_IN_PHASE_WITH_PCLK_DVO', -} -DVOACLKC_IN_OPPOSITE_PHASE_WITH_PCLK_DVO = 0 -DVOACLKC_IN_PHASE_WITH_PCLK_DVO = 1 -DVOACLKC_IN_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLKC_MVP_IN_PHASE' -DVOACLKC_MVP_IN_PHASE__enumvalues = { - 0: 'DVOACLKC_MVP_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', - 1: 'DVOACLKC_MVP_IN_PHASE_WITH_PCLK_DVO', -} -DVOACLKC_MVP_IN_OPPOSITE_PHASE_WITH_PCLK_DVO = 0 -DVOACLKC_MVP_IN_PHASE_WITH_PCLK_DVO = 1 -DVOACLKC_MVP_IN_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE' -DVOACLKC_MVP_SKEW_PHASE_OVERRIDE__enumvalues = { - 0: 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_DISABLE', - 1: 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_ENABLE', -} -DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_DISABLE = 0 -DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_ENABLE = 1 -DVOACLKC_MVP_SKEW_PHASE_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLKD_IN_PHASE' -DVOACLKD_IN_PHASE__enumvalues = { - 0: 'DVOACLKD_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', - 1: 'DVOACLKD_IN_PHASE_WITH_PCLK_DVO', -} -DVOACLKD_IN_OPPOSITE_PHASE_WITH_PCLK_DVO = 0 -DVOACLKD_IN_PHASE_WITH_PCLK_DVO = 1 -DVOACLKD_IN_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLK_COARSE_SKEW_CNTL' -DVOACLK_COARSE_SKEW_CNTL__enumvalues = { - 0: 'DVOACLK_COARSE_SKEW_CNTL_NO_ADJUSTMENT', - 1: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_1_STEP', - 2: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_2_STEPS', - 3: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_3_STEPS', - 4: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_4_STEPS', - 5: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_5_STEPS', - 6: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_6_STEPS', - 7: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_7_STEPS', - 8: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_8_STEPS', - 9: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_9_STEPS', - 10: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_10_STEPS', - 11: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_11_STEPS', - 12: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_12_STEPS', - 13: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_13_STEPS', - 14: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_14_STEPS', - 15: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_15_STEPS', - 16: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_1_STEP', - 17: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_2_STEPS', - 18: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_3_STEPS', - 19: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_4_STEPS', - 20: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_5_STEPS', - 21: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_6_STEPS', - 22: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_7_STEPS', - 23: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_8_STEPS', - 24: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_9_STEPS', - 25: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_10_STEPS', - 26: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_11_STEPS', - 27: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_12_STEPS', - 28: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_13_STEPS', - 29: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_14_STEPS', - 30: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_15_STEPS', -} -DVOACLK_COARSE_SKEW_CNTL_NO_ADJUSTMENT = 0 -DVOACLK_COARSE_SKEW_CNTL_DELAY_1_STEP = 1 -DVOACLK_COARSE_SKEW_CNTL_DELAY_2_STEPS = 2 -DVOACLK_COARSE_SKEW_CNTL_DELAY_3_STEPS = 3 -DVOACLK_COARSE_SKEW_CNTL_DELAY_4_STEPS = 4 -DVOACLK_COARSE_SKEW_CNTL_DELAY_5_STEPS = 5 -DVOACLK_COARSE_SKEW_CNTL_DELAY_6_STEPS = 6 -DVOACLK_COARSE_SKEW_CNTL_DELAY_7_STEPS = 7 -DVOACLK_COARSE_SKEW_CNTL_DELAY_8_STEPS = 8 -DVOACLK_COARSE_SKEW_CNTL_DELAY_9_STEPS = 9 -DVOACLK_COARSE_SKEW_CNTL_DELAY_10_STEPS = 10 -DVOACLK_COARSE_SKEW_CNTL_DELAY_11_STEPS = 11 -DVOACLK_COARSE_SKEW_CNTL_DELAY_12_STEPS = 12 -DVOACLK_COARSE_SKEW_CNTL_DELAY_13_STEPS = 13 -DVOACLK_COARSE_SKEW_CNTL_DELAY_14_STEPS = 14 -DVOACLK_COARSE_SKEW_CNTL_DELAY_15_STEPS = 15 -DVOACLK_COARSE_SKEW_CNTL_EARLY_1_STEP = 16 -DVOACLK_COARSE_SKEW_CNTL_EARLY_2_STEPS = 17 -DVOACLK_COARSE_SKEW_CNTL_EARLY_3_STEPS = 18 -DVOACLK_COARSE_SKEW_CNTL_EARLY_4_STEPS = 19 -DVOACLK_COARSE_SKEW_CNTL_EARLY_5_STEPS = 20 -DVOACLK_COARSE_SKEW_CNTL_EARLY_6_STEPS = 21 -DVOACLK_COARSE_SKEW_CNTL_EARLY_7_STEPS = 22 -DVOACLK_COARSE_SKEW_CNTL_EARLY_8_STEPS = 23 -DVOACLK_COARSE_SKEW_CNTL_EARLY_9_STEPS = 24 -DVOACLK_COARSE_SKEW_CNTL_EARLY_10_STEPS = 25 -DVOACLK_COARSE_SKEW_CNTL_EARLY_11_STEPS = 26 -DVOACLK_COARSE_SKEW_CNTL_EARLY_12_STEPS = 27 -DVOACLK_COARSE_SKEW_CNTL_EARLY_13_STEPS = 28 -DVOACLK_COARSE_SKEW_CNTL_EARLY_14_STEPS = 29 -DVOACLK_COARSE_SKEW_CNTL_EARLY_15_STEPS = 30 -DVOACLK_COARSE_SKEW_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLK_FINE_SKEW_CNTL' -DVOACLK_FINE_SKEW_CNTL__enumvalues = { - 0: 'DVOACLK_FINE_SKEW_CNTL_NO_ADJUSTMENT', - 1: 'DVOACLK_FINE_SKEW_CNTL_DELAY_1_STEP', - 2: 'DVOACLK_FINE_SKEW_CNTL_DELAY_2_STEPS', - 3: 'DVOACLK_FINE_SKEW_CNTL_DELAY_3_STEPS', - 4: 'DVOACLK_FINE_SKEW_CNTL_EARLY_1_STEP', - 5: 'DVOACLK_FINE_SKEW_CNTL_EARLY_2_STEPS', - 6: 'DVOACLK_FINE_SKEW_CNTL_EARLY_3_STEPS', - 7: 'DVOACLK_FINE_SKEW_CNTL_EARLY_4_STEPS', -} -DVOACLK_FINE_SKEW_CNTL_NO_ADJUSTMENT = 0 -DVOACLK_FINE_SKEW_CNTL_DELAY_1_STEP = 1 -DVOACLK_FINE_SKEW_CNTL_DELAY_2_STEPS = 2 -DVOACLK_FINE_SKEW_CNTL_DELAY_3_STEPS = 3 -DVOACLK_FINE_SKEW_CNTL_EARLY_1_STEP = 4 -DVOACLK_FINE_SKEW_CNTL_EARLY_2_STEPS = 5 -DVOACLK_FINE_SKEW_CNTL_EARLY_3_STEPS = 6 -DVOACLK_FINE_SKEW_CNTL_EARLY_4_STEPS = 7 -DVOACLK_FINE_SKEW_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'DVO_ENABLE_RST' -DVO_ENABLE_RST__enumvalues = { - 0: 'DVO_ENABLE_RST_DISABLE', - 1: 'DVO_ENABLE_RST_ENABLE', -} -DVO_ENABLE_RST_DISABLE = 0 -DVO_ENABLE_RST_ENABLE = 1 -DVO_ENABLE_RST = ctypes.c_uint32 # enum - -# values for enumeration 'ENABLE' -ENABLE__enumvalues = { - 0: 'DISABLE_THE_FEATURE', - 1: 'ENABLE_THE_FEATURE', -} -DISABLE_THE_FEATURE = 0 -ENABLE_THE_FEATURE = 1 -ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'ENABLE_CLOCK' -ENABLE_CLOCK__enumvalues = { - 0: 'ENABLE_THE_REFCLK', - 1: 'ENABLE_THE_FUNC_CLOCK', -} -ENABLE_THE_REFCLK = 0 -ENABLE_THE_FUNC_CLOCK = 1 -ENABLE_CLOCK = ctypes.c_uint32 # enum - -# values for enumeration 'FORCE_DISABLE_CLOCK' -FORCE_DISABLE_CLOCK__enumvalues = { - 0: 'NOT_FORCE_THE_CLOCK_DISABLED', - 1: 'FORCE_THE_CLOCK_DISABLED', -} -NOT_FORCE_THE_CLOCK_DISABLED = 0 -FORCE_THE_CLOCK_DISABLED = 1 -FORCE_DISABLE_CLOCK = ctypes.c_uint32 # enum - -# values for enumeration 'HDMICHARCLK_SRC_SEL' -HDMICHARCLK_SRC_SEL__enumvalues = { - 0: 'HDMICHARCLK_SRC_SEL_UNIPHYA', - 1: 'HDMICHARCLK_SRC_SEL_UNIPHYB', - 2: 'HDMICHARCLK_SRC_SEL_UNIPHYC', - 3: 'HDMICHARCLK_SRC_SEL_UNIPHYD', - 4: 'HDMICHARCLK_SRC_SEL_UNIPHYE', - 5: 'HDMICHARCLK_SRC_SEL_SRC_RESERVED', -} -HDMICHARCLK_SRC_SEL_UNIPHYA = 0 -HDMICHARCLK_SRC_SEL_UNIPHYB = 1 -HDMICHARCLK_SRC_SEL_UNIPHYC = 2 -HDMICHARCLK_SRC_SEL_UNIPHYD = 3 -HDMICHARCLK_SRC_SEL_UNIPHYE = 4 -HDMICHARCLK_SRC_SEL_SRC_RESERVED = 5 -HDMICHARCLK_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'HDMISTREAMCLK_DTO_FORCE_DIS' -HDMISTREAMCLK_DTO_FORCE_DIS__enumvalues = { - 0: 'DTO_FORCE_NO_BYPASS', - 1: 'DTO_FORCE_BYPASS', -} -DTO_FORCE_NO_BYPASS = 0 -DTO_FORCE_BYPASS = 1 -HDMISTREAMCLK_DTO_FORCE_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'HDMISTREAMCLK_SRC_SEL' -HDMISTREAMCLK_SRC_SEL__enumvalues = { - 0: 'SEL_REFCLK0', - 1: 'SEL_DTBCLK0', - 2: 'SEL_DTBCLK1', -} -SEL_REFCLK0 = 0 -SEL_DTBCLK0 = 1 -SEL_DTBCLK1 = 2 -HDMISTREAMCLK_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'JITTER_REMOVE_DISABLE' -JITTER_REMOVE_DISABLE__enumvalues = { - 0: 'ENABLE_JITTER_REMOVAL', - 1: 'DISABLE_JITTER_REMOVAL', -} -ENABLE_JITTER_REMOVAL = 0 -DISABLE_JITTER_REMOVAL = 1 -JITTER_REMOVE_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL' -MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL__enumvalues = { - 0: 'MICROSECOND_TIME_BASE_CLOCK_IS_XTALIN', - 1: 'MICROSECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK', -} -MICROSECOND_TIME_BASE_CLOCK_IS_XTALIN = 0 -MICROSECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK = 1 -MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL' -MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL__enumvalues = { - 0: 'MILLISECOND_TIME_BASE_CLOCK_IS_XTALIN', - 1: 'MILLISECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK', -} -MILLISECOND_TIME_BASE_CLOCK_IS_XTALIN = 0 -MILLISECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK = 1 -MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_ADD_PIXEL' -OTG_ADD_PIXEL__enumvalues = { - 0: 'OTG_ADD_PIXEL_NOOP', - 1: 'OTG_ADD_PIXEL_FORCE', -} -OTG_ADD_PIXEL_NOOP = 0 -OTG_ADD_PIXEL_FORCE = 1 -OTG_ADD_PIXEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DROP_PIXEL' -OTG_DROP_PIXEL__enumvalues = { - 0: 'OTG_DROP_PIXEL_NOOP', - 1: 'OTG_DROP_PIXEL_FORCE', -} -OTG_DROP_PIXEL_NOOP = 0 -OTG_DROP_PIXEL_FORCE = 1 -OTG_DROP_PIXEL = ctypes.c_uint32 # enum - -# values for enumeration 'PHYSYMCLK_FORCE_EN' -PHYSYMCLK_FORCE_EN__enumvalues = { - 0: 'PHYSYMCLK_FORCE_EN_DISABLE', - 1: 'PHYSYMCLK_FORCE_EN_ENABLE', -} -PHYSYMCLK_FORCE_EN_DISABLE = 0 -PHYSYMCLK_FORCE_EN_ENABLE = 1 -PHYSYMCLK_FORCE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PHYSYMCLK_FORCE_SRC_SEL' -PHYSYMCLK_FORCE_SRC_SEL__enumvalues = { - 0: 'PHYSYMCLK_FORCE_SRC_SYMCLK', - 1: 'PHYSYMCLK_FORCE_SRC_PHYD18CLK', - 2: 'PHYSYMCLK_FORCE_SRC_PHYD32CLK', -} -PHYSYMCLK_FORCE_SRC_SYMCLK = 0 -PHYSYMCLK_FORCE_SRC_PHYD18CLK = 1 -PHYSYMCLK_FORCE_SRC_PHYD32CLK = 2 -PHYSYMCLK_FORCE_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_PHYPLL_PIXEL_RATE_SOURCE' -PIPE_PHYPLL_PIXEL_RATE_SOURCE__enumvalues = { - 0: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYA', - 1: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYB', - 2: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYC', - 3: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYD', - 4: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_RESERVED', -} -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYA = 0 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYB = 1 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYC = 2 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYD = 3 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_RESERVED = 4 -PIPE_PHYPLL_PIXEL_RATE_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_PIXEL_RATE_PLL_SOURCE' -PIPE_PIXEL_RATE_PLL_SOURCE__enumvalues = { - 0: 'PIPE_PIXEL_RATE_PLL_SOURCE_PHYPLL', - 1: 'PIPE_PIXEL_RATE_PLL_SOURCE_DISPPLL', -} -PIPE_PIXEL_RATE_PLL_SOURCE_PHYPLL = 0 -PIPE_PIXEL_RATE_PLL_SOURCE_DISPPLL = 1 -PIPE_PIXEL_RATE_PLL_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_PIXEL_RATE_SOURCE' -PIPE_PIXEL_RATE_SOURCE__enumvalues = { - 0: 'PIPE_PIXEL_RATE_SOURCE_P0PLL', - 1: 'PIPE_PIXEL_RATE_SOURCE_P1PLL', - 2: 'PIPE_PIXEL_RATE_SOURCE_P2PLL', -} -PIPE_PIXEL_RATE_SOURCE_P0PLL = 0 -PIPE_PIXEL_RATE_SOURCE_P1PLL = 1 -PIPE_PIXEL_RATE_SOURCE_P2PLL = 2 -PIPE_PIXEL_RATE_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'PLL_CFG_IF_SOFT_RESET' -PLL_CFG_IF_SOFT_RESET__enumvalues = { - 0: 'PLL_CFG_IF_SOFT_RESET_NOOP', - 1: 'PLL_CFG_IF_SOFT_RESET_FORCE', -} -PLL_CFG_IF_SOFT_RESET_NOOP = 0 -PLL_CFG_IF_SOFT_RESET_FORCE = 1 -PLL_CFG_IF_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'SYMCLK_FE_FORCE_EN' -SYMCLK_FE_FORCE_EN__enumvalues = { - 0: 'SYMCLK_FE_FORCE_EN_DISABLE', - 1: 'SYMCLK_FE_FORCE_EN_ENABLE', -} -SYMCLK_FE_FORCE_EN_DISABLE = 0 -SYMCLK_FE_FORCE_EN_ENABLE = 1 -SYMCLK_FE_FORCE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'SYMCLK_FE_FORCE_SRC' -SYMCLK_FE_FORCE_SRC__enumvalues = { - 0: 'SYMCLK_FE_FORCE_SRC_UNIPHYA', - 1: 'SYMCLK_FE_FORCE_SRC_UNIPHYB', - 2: 'SYMCLK_FE_FORCE_SRC_UNIPHYC', - 3: 'SYMCLK_FE_FORCE_SRC_UNIPHYD', - 4: 'SYMCLK_FE_FORCE_SRC_RESERVED', -} -SYMCLK_FE_FORCE_SRC_UNIPHYA = 0 -SYMCLK_FE_FORCE_SRC_UNIPHYB = 1 -SYMCLK_FE_FORCE_SRC_UNIPHYC = 2 -SYMCLK_FE_FORCE_SRC_UNIPHYD = 3 -SYMCLK_FE_FORCE_SRC_RESERVED = 4 -SYMCLK_FE_FORCE_SRC = ctypes.c_uint32 # enum - -# values for enumeration 'TEST_CLK_DIV_SEL' -TEST_CLK_DIV_SEL__enumvalues = { - 0: 'NO_DIV', - 1: 'DIV_2', - 2: 'DIV_4', - 3: 'DIV_8', -} -NO_DIV = 0 -DIV_2 = 1 -DIV_4 = 2 -DIV_8 = 3 -TEST_CLK_DIV_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'VSYNC_CNT_LATCH_MASK' -VSYNC_CNT_LATCH_MASK__enumvalues = { - 0: 'VSYNC_CNT_LATCH_MASK_0', - 1: 'VSYNC_CNT_LATCH_MASK_1', -} -VSYNC_CNT_LATCH_MASK_0 = 0 -VSYNC_CNT_LATCH_MASK_1 = 1 -VSYNC_CNT_LATCH_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'VSYNC_CNT_RESET_SEL' -VSYNC_CNT_RESET_SEL__enumvalues = { - 0: 'VSYNC_CNT_RESET_SEL_0', - 1: 'VSYNC_CNT_RESET_SEL_1', -} -VSYNC_CNT_RESET_SEL_0 = 0 -VSYNC_CNT_RESET_SEL_1 = 1 -VSYNC_CNT_RESET_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'XTAL_REF_CLOCK_SOURCE_SEL' -XTAL_REF_CLOCK_SOURCE_SEL__enumvalues = { - 0: 'XTAL_REF_CLOCK_SOURCE_SEL_XTALIN', - 1: 'XTAL_REF_CLOCK_SOURCE_SEL_DCCGREFCLK', -} -XTAL_REF_CLOCK_SOURCE_SEL_XTALIN = 0 -XTAL_REF_CLOCK_SOURCE_SEL_DCCGREFCLK = 1 -XTAL_REF_CLOCK_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'XTAL_REF_SEL' -XTAL_REF_SEL__enumvalues = { - 0: 'XTAL_REF_SEL_1X', - 1: 'XTAL_REF_SEL_2X', -} -XTAL_REF_SEL_1X = 0 -XTAL_REF_SEL_2X = 1 -XTAL_REF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'HPD_INT_CONTROL_ACK' -HPD_INT_CONTROL_ACK__enumvalues = { - 0: 'HPD_INT_CONTROL_ACK_0', - 1: 'HPD_INT_CONTROL_ACK_1', -} -HPD_INT_CONTROL_ACK_0 = 0 -HPD_INT_CONTROL_ACK_1 = 1 -HPD_INT_CONTROL_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'HPD_INT_CONTROL_POLARITY' -HPD_INT_CONTROL_POLARITY__enumvalues = { - 0: 'HPD_INT_CONTROL_GEN_INT_ON_DISCON', - 1: 'HPD_INT_CONTROL_GEN_INT_ON_CON', -} -HPD_INT_CONTROL_GEN_INT_ON_DISCON = 0 -HPD_INT_CONTROL_GEN_INT_ON_CON = 1 -HPD_INT_CONTROL_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'HPD_INT_CONTROL_RX_INT_ACK' -HPD_INT_CONTROL_RX_INT_ACK__enumvalues = { - 0: 'HPD_INT_CONTROL_RX_INT_ACK_0', - 1: 'HPD_INT_CONTROL_RX_INT_ACK_1', -} -HPD_INT_CONTROL_RX_INT_ACK_0 = 0 -HPD_INT_CONTROL_RX_INT_ACK_1 = 1 -HPD_INT_CONTROL_RX_INT_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_8B10B_CUR_DISP' -DPHY_8B10B_CUR_DISP__enumvalues = { - 0: 'DPHY_8B10B_CUR_DISP_ZERO', - 1: 'DPHY_8B10B_CUR_DISP_ONE', -} -DPHY_8B10B_CUR_DISP_ZERO = 0 -DPHY_8B10B_CUR_DISP_ONE = 1 -DPHY_8B10B_CUR_DISP = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_8B10B_RESET' -DPHY_8B10B_RESET__enumvalues = { - 0: 'DPHY_8B10B_NOT_RESET', - 1: 'DPHY_8B10B_RESETET', -} -DPHY_8B10B_NOT_RESET = 0 -DPHY_8B10B_RESETET = 1 -DPHY_8B10B_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ALT_SCRAMBLER_RESET_EN' -DPHY_ALT_SCRAMBLER_RESET_EN__enumvalues = { - 0: 'DPHY_ALT_SCRAMBLER_REGULAR_RESET_VALUE', - 1: 'DPHY_ALT_SCRAMBLER_INTERNAL_RESET_SOLUTION', -} -DPHY_ALT_SCRAMBLER_REGULAR_RESET_VALUE = 0 -DPHY_ALT_SCRAMBLER_INTERNAL_RESET_SOLUTION = 1 -DPHY_ALT_SCRAMBLER_RESET_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ALT_SCRAMBLER_RESET_SEL' -DPHY_ALT_SCRAMBLER_RESET_SEL__enumvalues = { - 0: 'DPHY_ALT_SCRAMBLER_RESET_SEL_EDP_RESET_VALUE', - 1: 'DPHY_ALT_SCRAMBLER_RESET_SEL_CUSTOM_RESET_VALUE', -} -DPHY_ALT_SCRAMBLER_RESET_SEL_EDP_RESET_VALUE = 0 -DPHY_ALT_SCRAMBLER_RESET_SEL_CUSTOM_RESET_VALUE = 1 -DPHY_ALT_SCRAMBLER_RESET_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE0' -DPHY_ATEST_SEL_LANE0__enumvalues = { - 0: 'DPHY_ATEST_LANE0_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE0_REG_PATTERN', -} -DPHY_ATEST_LANE0_PRBS_PATTERN = 0 -DPHY_ATEST_LANE0_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE0 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE1' -DPHY_ATEST_SEL_LANE1__enumvalues = { - 0: 'DPHY_ATEST_LANE1_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE1_REG_PATTERN', -} -DPHY_ATEST_LANE1_PRBS_PATTERN = 0 -DPHY_ATEST_LANE1_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE1 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE2' -DPHY_ATEST_SEL_LANE2__enumvalues = { - 0: 'DPHY_ATEST_LANE2_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE2_REG_PATTERN', -} -DPHY_ATEST_LANE2_PRBS_PATTERN = 0 -DPHY_ATEST_LANE2_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE2 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE3' -DPHY_ATEST_SEL_LANE3__enumvalues = { - 0: 'DPHY_ATEST_LANE3_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE3_REG_PATTERN', -} -DPHY_ATEST_LANE3_PRBS_PATTERN = 0 -DPHY_ATEST_LANE3_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE3 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_BYPASS' -DPHY_BYPASS__enumvalues = { - 0: 'DPHY_8B10B_OUTPUT', - 1: 'DPHY_DBG_OUTPUT', -} -DPHY_8B10B_OUTPUT = 0 -DPHY_DBG_OUTPUT = 1 -DPHY_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_CONT_EN' -DPHY_CRC_CONT_EN__enumvalues = { - 0: 'DPHY_CRC_ONE_SHOT', - 1: 'DPHY_CRC_CONTINUOUS', -} -DPHY_CRC_ONE_SHOT = 0 -DPHY_CRC_CONTINUOUS = 1 -DPHY_CRC_CONT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_EN' -DPHY_CRC_EN__enumvalues = { - 0: 'DPHY_CRC_DISABLED', - 1: 'DPHY_CRC_ENABLED', -} -DPHY_CRC_DISABLED = 0 -DPHY_CRC_ENABLED = 1 -DPHY_CRC_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_FIELD' -DPHY_CRC_FIELD__enumvalues = { - 0: 'DPHY_CRC_START_FROM_TOP_FIELD', - 1: 'DPHY_CRC_START_FROM_BOTTOM_FIELD', -} -DPHY_CRC_START_FROM_TOP_FIELD = 0 -DPHY_CRC_START_FROM_BOTTOM_FIELD = 1 -DPHY_CRC_FIELD = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_MST_PHASE_ERROR_ACK' -DPHY_CRC_MST_PHASE_ERROR_ACK__enumvalues = { - 0: 'DPHY_CRC_MST_PHASE_ERROR_NO_ACK', - 1: 'DPHY_CRC_MST_PHASE_ERROR_ACKED', -} -DPHY_CRC_MST_PHASE_ERROR_NO_ACK = 0 -DPHY_CRC_MST_PHASE_ERROR_ACKED = 1 -DPHY_CRC_MST_PHASE_ERROR_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_SEL' -DPHY_CRC_SEL__enumvalues = { - 0: 'DPHY_CRC_LANE0_SELECTED', - 1: 'DPHY_CRC_LANE1_SELECTED', - 2: 'DPHY_CRC_LANE2_SELECTED', - 3: 'DPHY_CRC_LANE3_SELECTED', -} -DPHY_CRC_LANE0_SELECTED = 0 -DPHY_CRC_LANE1_SELECTED = 1 -DPHY_CRC_LANE2_SELECTED = 2 -DPHY_CRC_LANE3_SELECTED = 3 -DPHY_CRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_FEC_ENABLE' -DPHY_FEC_ENABLE__enumvalues = { - 0: 'DPHY_FEC_DISABLED', - 1: 'DPHY_FEC_ENABLED', -} -DPHY_FEC_DISABLED = 0 -DPHY_FEC_ENABLED = 1 -DPHY_FEC_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_FEC_READY' -DPHY_FEC_READY__enumvalues = { - 0: 'DPHY_FEC_READY_EN', - 1: 'DPHY_FEC_READY_DIS', -} -DPHY_FEC_READY_EN = 0 -DPHY_FEC_READY_DIS = 1 -DPHY_FEC_READY = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_LOAD_BS_COUNT_START' -DPHY_LOAD_BS_COUNT_START__enumvalues = { - 0: 'DPHY_LOAD_BS_COUNT_STARTED', - 1: 'DPHY_LOAD_BS_COUNT_NOT_STARTED', -} -DPHY_LOAD_BS_COUNT_STARTED = 0 -DPHY_LOAD_BS_COUNT_NOT_STARTED = 1 -DPHY_LOAD_BS_COUNT_START = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_PRBS_EN' -DPHY_PRBS_EN__enumvalues = { - 0: 'DPHY_PRBS_DISABLE', - 1: 'DPHY_PRBS_ENABLE', -} -DPHY_PRBS_DISABLE = 0 -DPHY_PRBS_ENABLE = 1 -DPHY_PRBS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_PRBS_SEL' -DPHY_PRBS_SEL__enumvalues = { - 0: 'DPHY_PRBS7_SELECTED', - 1: 'DPHY_PRBS23_SELECTED', - 2: 'DPHY_PRBS11_SELECTED', -} -DPHY_PRBS7_SELECTED = 0 -DPHY_PRBS23_SELECTED = 1 -DPHY_PRBS11_SELECTED = 2 -DPHY_PRBS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_RX_FAST_TRAINING_CAPABLE' -DPHY_RX_FAST_TRAINING_CAPABLE__enumvalues = { - 0: 'DPHY_FAST_TRAINING_NOT_CAPABLE_0', - 1: 'DPHY_FAST_TRAINING_CAPABLE', -} -DPHY_FAST_TRAINING_NOT_CAPABLE_0 = 0 -DPHY_FAST_TRAINING_CAPABLE = 1 -DPHY_RX_FAST_TRAINING_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SCRAMBLER_ADVANCE' -DPHY_SCRAMBLER_ADVANCE__enumvalues = { - 0: 'DPHY_DPHY_SCRAMBLER_ADVANCE_ON_DATA_SYMBOL_ONLY', - 1: 'DPHY_SCRAMBLER_ADVANCE_ON_BOTH_DATA_AND_CTRL', -} -DPHY_DPHY_SCRAMBLER_ADVANCE_ON_DATA_SYMBOL_ONLY = 0 -DPHY_SCRAMBLER_ADVANCE_ON_BOTH_DATA_AND_CTRL = 1 -DPHY_SCRAMBLER_ADVANCE = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SCRAMBLER_DIS' -DPHY_SCRAMBLER_DIS__enumvalues = { - 0: 'DPHY_SCR_ENABLED', - 1: 'DPHY_SCR_DISABLED', -} -DPHY_SCR_ENABLED = 0 -DPHY_SCR_DISABLED = 1 -DPHY_SCRAMBLER_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SCRAMBLER_KCODE' -DPHY_SCRAMBLER_KCODE__enumvalues = { - 0: 'DPHY_SCRAMBLER_KCODE_DISABLED', - 1: 'DPHY_SCRAMBLER_KCODE_ENABLED', -} -DPHY_SCRAMBLER_KCODE_DISABLED = 0 -DPHY_SCRAMBLER_KCODE_ENABLED = 1 -DPHY_SCRAMBLER_KCODE = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SCRAMBLER_SEL' -DPHY_SCRAMBLER_SEL__enumvalues = { - 0: 'DPHY_SCRAMBLER_SEL_LANE_DATA', - 1: 'DPHY_SCRAMBLER_SEL_DBG_DATA', -} -DPHY_SCRAMBLER_SEL_LANE_DATA = 0 -DPHY_SCRAMBLER_SEL_DBG_DATA = 1 -DPHY_SCRAMBLER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SKEW_BYPASS' -DPHY_SKEW_BYPASS__enumvalues = { - 0: 'DPHY_WITH_SKEW', - 1: 'DPHY_NO_SKEW', -} -DPHY_WITH_SKEW = 0 -DPHY_NO_SKEW = 1 -DPHY_SKEW_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_STREAM_RESET_DURING_FAST_TRAINING_ENUM' -DPHY_STREAM_RESET_DURING_FAST_TRAINING_ENUM__enumvalues = { - 0: 'DPHY_STREAM_RESET_DURING_FAST_TRAINING_RESET', - 1: 'DPHY_STREAM_RESET_DURING_FAST_TRAINING_NOT_RESET', -} -DPHY_STREAM_RESET_DURING_FAST_TRAINING_RESET = 0 -DPHY_STREAM_RESET_DURING_FAST_TRAINING_NOT_RESET = 1 -DPHY_STREAM_RESET_DURING_FAST_TRAINING_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SW_FAST_TRAINING_START' -DPHY_SW_FAST_TRAINING_START__enumvalues = { - 0: 'DPHY_SW_FAST_TRAINING_NOT_STARTED', - 1: 'DPHY_SW_FAST_TRAINING_STARTED', -} -DPHY_SW_FAST_TRAINING_NOT_STARTED = 0 -DPHY_SW_FAST_TRAINING_STARTED = 1 -DPHY_SW_FAST_TRAINING_START = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_TRAINING_PATTERN_SEL' -DPHY_TRAINING_PATTERN_SEL__enumvalues = { - 0: 'DPHY_TRAINING_PATTERN_1', - 1: 'DPHY_TRAINING_PATTERN_2', - 2: 'DPHY_TRAINING_PATTERN_3', - 3: 'DPHY_TRAINING_PATTERN_4', -} -DPHY_TRAINING_PATTERN_1 = 0 -DPHY_TRAINING_PATTERN_2 = 1 -DPHY_TRAINING_PATTERN_3 = 2 -DPHY_TRAINING_PATTERN_4 = 3 -DPHY_TRAINING_PATTERN_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_COMPONENT_DEPTH' -DP_COMPONENT_DEPTH__enumvalues = { - 0: 'DP_COMPONENT_DEPTH_6BPC', - 1: 'DP_COMPONENT_DEPTH_8BPC', - 2: 'DP_COMPONENT_DEPTH_10BPC', - 3: 'DP_COMPONENT_DEPTH_12BPC', - 4: 'DP_COMPONENT_DEPTH_16BPC', -} -DP_COMPONENT_DEPTH_6BPC = 0 -DP_COMPONENT_DEPTH_8BPC = 1 -DP_COMPONENT_DEPTH_10BPC = 2 -DP_COMPONENT_DEPTH_12BPC = 3 -DP_COMPONENT_DEPTH_16BPC = 4 -DP_COMPONENT_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'DP_CP_ENCRYPTION_TYPE' -DP_CP_ENCRYPTION_TYPE__enumvalues = { - 0: 'DP_CP_ENCRYPTION_TYPE_0', - 1: 'DP_CP_ENCRYPTION_TYPE_1', -} -DP_CP_ENCRYPTION_TYPE_0 = 0 -DP_CP_ENCRYPTION_TYPE_1 = 1 -DP_CP_ENCRYPTION_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_8B10B_EXT_DISP' -DP_DPHY_8B10B_EXT_DISP__enumvalues = { - 0: 'DP_DPHY_8B10B_EXT_DISP_ZERO', - 1: 'DP_DPHY_8B10B_EXT_DISP_ONE', -} -DP_DPHY_8B10B_EXT_DISP_ZERO = 0 -DP_DPHY_8B10B_EXT_DISP_ONE = 1 -DP_DPHY_8B10B_EXT_DISP = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_FAST_TRAINING_COMPLETE_ACK' -DP_DPHY_FAST_TRAINING_COMPLETE_ACK__enumvalues = { - 0: 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_ACKED', - 1: 'DP_DPHY_FAST_TRAINING_COMPLETE_ACKED', -} -DP_DPHY_FAST_TRAINING_COMPLETE_NOT_ACKED = 0 -DP_DPHY_FAST_TRAINING_COMPLETE_ACKED = 1 -DP_DPHY_FAST_TRAINING_COMPLETE_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_FAST_TRAINING_COMPLETE_MASK' -DP_DPHY_FAST_TRAINING_COMPLETE_MASK__enumvalues = { - 0: 'DP_DPHY_FAST_TRAINING_COMPLETE_MASKED', - 1: 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_MASKED', -} -DP_DPHY_FAST_TRAINING_COMPLETE_MASKED = 0 -DP_DPHY_FAST_TRAINING_COMPLETE_NOT_MASKED = 1 -DP_DPHY_FAST_TRAINING_COMPLETE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN' -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN__enumvalues = { - 0: 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_DISABLED', - 1: 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_ENABLED', -} -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_DISABLED = 0 -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_ENABLED = 1 -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_HBR2_PATTERN_CONTROL_MODE' -DP_DPHY_HBR2_PATTERN_CONTROL_MODE__enumvalues = { - 0: 'DP_DPHY_HBR2_PASS_THROUGH', - 1: 'DP_DPHY_HBR2_PATTERN_1', - 2: 'DP_DPHY_HBR2_PATTERN_2_NEG', - 3: 'DP_DPHY_HBR2_PATTERN_3', - 6: 'DP_DPHY_HBR2_PATTERN_2_POS', -} -DP_DPHY_HBR2_PASS_THROUGH = 0 -DP_DPHY_HBR2_PATTERN_1 = 1 -DP_DPHY_HBR2_PATTERN_2_NEG = 2 -DP_DPHY_HBR2_PATTERN_3 = 3 -DP_DPHY_HBR2_PATTERN_2_POS = 6 -DP_DPHY_HBR2_PATTERN_CONTROL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DSC_MODE' -DP_DSC_MODE__enumvalues = { - 0: 'DP_DSC_DISABLE', - 1: 'DP_DSC_444_SIMPLE_422', - 2: 'DP_DSC_NATIVE_422_420', -} -DP_DSC_DISABLE = 0 -DP_DSC_444_SIMPLE_422 = 1 -DP_DSC_NATIVE_422_420 = 2 -DP_DSC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_EMBEDDED_PANEL_MODE' -DP_EMBEDDED_PANEL_MODE__enumvalues = { - 0: 'DP_EXTERNAL_PANEL', - 1: 'DP_EMBEDDED_PANEL', -} -DP_EXTERNAL_PANEL = 0 -DP_EMBEDDED_PANEL = 1 -DP_EMBEDDED_PANEL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_LINK_TRAINING_COMPLETE' -DP_LINK_TRAINING_COMPLETE__enumvalues = { - 0: 'DP_LINK_TRAINING_NOT_COMPLETE', - 1: 'DP_LINK_TRAINING_ALREADY_COMPLETE', -} -DP_LINK_TRAINING_NOT_COMPLETE = 0 -DP_LINK_TRAINING_ALREADY_COMPLETE = 1 -DP_LINK_TRAINING_COMPLETE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_LINK_TRAINING_SWITCH_MODE' -DP_LINK_TRAINING_SWITCH_MODE__enumvalues = { - 0: 'DP_LINK_TRAINING_SWITCH_TO_IDLE', - 1: 'DP_LINK_TRAINING_SWITCH_TO_VIDEO', -} -DP_LINK_TRAINING_SWITCH_TO_IDLE = 0 -DP_LINK_TRAINING_SWITCH_TO_VIDEO = 1 -DP_LINK_TRAINING_SWITCH_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_ML_PHY_SEQ_MODE' -DP_ML_PHY_SEQ_MODE__enumvalues = { - 0: 'DP_ML_PHY_SEQ_LINE_NUM', - 1: 'DP_ML_PHY_SEQ_IMMEDIATE', -} -DP_ML_PHY_SEQ_LINE_NUM = 0 -DP_ML_PHY_SEQ_IMMEDIATE = 1 -DP_ML_PHY_SEQ_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSA_V_TIMING_OVERRIDE_EN' -DP_MSA_V_TIMING_OVERRIDE_EN__enumvalues = { - 0: 'MSA_V_TIMING_OVERRIDE_DISABLED', - 1: 'MSA_V_TIMING_OVERRIDE_ENABLED', -} -MSA_V_TIMING_OVERRIDE_DISABLED = 0 -MSA_V_TIMING_OVERRIDE_ENABLED = 1 -DP_MSA_V_TIMING_OVERRIDE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_BLANK_CODE' -DP_MSE_BLANK_CODE__enumvalues = { - 0: 'DP_MSE_BLANK_CODE_SF_FILLED', - 1: 'DP_MSE_BLANK_CODE_ZERO_FILLED', -} -DP_MSE_BLANK_CODE_SF_FILLED = 0 -DP_MSE_BLANK_CODE_ZERO_FILLED = 1 -DP_MSE_BLANK_CODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_LINK_LINE' -DP_MSE_LINK_LINE__enumvalues = { - 0: 'DP_MSE_LINK_LINE_32_MTP_LONG', - 1: 'DP_MSE_LINK_LINE_64_MTP_LONG', - 2: 'DP_MSE_LINK_LINE_128_MTP_LONG', - 3: 'DP_MSE_LINK_LINE_256_MTP_LONG', -} -DP_MSE_LINK_LINE_32_MTP_LONG = 0 -DP_MSE_LINK_LINE_64_MTP_LONG = 1 -DP_MSE_LINK_LINE_128_MTP_LONG = 2 -DP_MSE_LINK_LINE_256_MTP_LONG = 3 -DP_MSE_LINK_LINE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_SAT_ENCRYPT0' -DP_MSE_SAT_ENCRYPT0__enumvalues = { - 0: 'DP_MSE_SAT_ENCRYPT0_DISABLED', - 1: 'DP_MSE_SAT_ENCRYPT0_ENABLED', -} -DP_MSE_SAT_ENCRYPT0_DISABLED = 0 -DP_MSE_SAT_ENCRYPT0_ENABLED = 1 -DP_MSE_SAT_ENCRYPT0 = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_SAT_ENCRYPT1' -DP_MSE_SAT_ENCRYPT1__enumvalues = { - 0: 'DP_MSE_SAT_ENCRYPT1_DISABLED', - 1: 'DP_MSE_SAT_ENCRYPT1_ENABLED', -} -DP_MSE_SAT_ENCRYPT1_DISABLED = 0 -DP_MSE_SAT_ENCRYPT1_ENABLED = 1 -DP_MSE_SAT_ENCRYPT1 = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_SAT_ENCRYPT2' -DP_MSE_SAT_ENCRYPT2__enumvalues = { - 0: 'DP_MSE_SAT_ENCRYPT2_DISABLED', - 1: 'DP_MSE_SAT_ENCRYPT2_ENABLED', -} -DP_MSE_SAT_ENCRYPT2_DISABLED = 0 -DP_MSE_SAT_ENCRYPT2_ENABLED = 1 -DP_MSE_SAT_ENCRYPT2 = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_SAT_ENCRYPT3' -DP_MSE_SAT_ENCRYPT3__enumvalues = { - 0: 'DP_MSE_SAT_ENCRYPT3_DISABLED', - 1: 'DP_MSE_SAT_ENCRYPT3_ENABLED', -} -DP_MSE_SAT_ENCRYPT3_DISABLED = 0 -DP_MSE_SAT_ENCRYPT3_ENABLED = 1 -DP_MSE_SAT_ENCRYPT3 = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_SAT_ENCRYPT4' -DP_MSE_SAT_ENCRYPT4__enumvalues = { - 0: 'DP_MSE_SAT_ENCRYPT4_DISABLED', - 1: 'DP_MSE_SAT_ENCRYPT4_ENABLED', -} -DP_MSE_SAT_ENCRYPT4_DISABLED = 0 -DP_MSE_SAT_ENCRYPT4_ENABLED = 1 -DP_MSE_SAT_ENCRYPT4 = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_SAT_ENCRYPT5' -DP_MSE_SAT_ENCRYPT5__enumvalues = { - 0: 'DP_MSE_SAT_ENCRYPT5_DISABLED', - 1: 'DP_MSE_SAT_ENCRYPT5_ENABLED', -} -DP_MSE_SAT_ENCRYPT5_DISABLED = 0 -DP_MSE_SAT_ENCRYPT5_ENABLED = 1 -DP_MSE_SAT_ENCRYPT5 = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_SAT_UPDATE_ACT' -DP_MSE_SAT_UPDATE_ACT__enumvalues = { - 0: 'DP_MSE_SAT_UPDATE_NO_ACTION', - 1: 'DP_MSE_SAT_UPDATE_WITH_TRIGGER', - 2: 'DP_MSE_SAT_UPDATE_WITHOUT_TRIGGER', -} -DP_MSE_SAT_UPDATE_NO_ACTION = 0 -DP_MSE_SAT_UPDATE_WITH_TRIGGER = 1 -DP_MSE_SAT_UPDATE_WITHOUT_TRIGGER = 2 -DP_MSE_SAT_UPDATE_ACT = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_TIMESTAMP_MODE' -DP_MSE_TIMESTAMP_MODE__enumvalues = { - 0: 'DP_MSE_TIMESTAMP_CALC_BASED_ON_LINK_RATE', - 1: 'DP_MSE_TIMESTAMP_CALC_BASED_ON_VC_RATE', -} -DP_MSE_TIMESTAMP_CALC_BASED_ON_LINK_RATE = 0 -DP_MSE_TIMESTAMP_CALC_BASED_ON_VC_RATE = 1 -DP_MSE_TIMESTAMP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_ZERO_ENCODER' -DP_MSE_ZERO_ENCODER__enumvalues = { - 0: 'DP_MSE_NOT_ZERO_FE_ENCODER', - 1: 'DP_MSE_ZERO_FE_ENCODER', -} -DP_MSE_NOT_ZERO_FE_ENCODER = 0 -DP_MSE_ZERO_FE_ENCODER = 1 -DP_MSE_ZERO_ENCODER = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSO_NUM_OF_SST_LINKS' -DP_MSO_NUM_OF_SST_LINKS__enumvalues = { - 0: 'DP_MSO_ONE_SSTLINK', - 1: 'DP_MSO_TWO_SSTLINK', - 2: 'DP_MSO_FOUR_SSTLINK', -} -DP_MSO_ONE_SSTLINK = 0 -DP_MSO_TWO_SSTLINK = 1 -DP_MSO_FOUR_SSTLINK = 2 -DP_MSO_NUM_OF_SST_LINKS = ctypes.c_uint32 # enum - -# values for enumeration 'DP_PIXEL_ENCODING' -DP_PIXEL_ENCODING__enumvalues = { - 0: 'DP_PIXEL_ENCODING_RGB444', - 1: 'DP_PIXEL_ENCODING_YCBCR422', - 2: 'DP_PIXEL_ENCODING_YCBCR444', - 3: 'DP_PIXEL_ENCODING_RGB_WIDE_GAMUT', - 4: 'DP_PIXEL_ENCODING_Y_ONLY', - 5: 'DP_PIXEL_ENCODING_YCBCR420', -} -DP_PIXEL_ENCODING_RGB444 = 0 -DP_PIXEL_ENCODING_YCBCR422 = 1 -DP_PIXEL_ENCODING_YCBCR444 = 2 -DP_PIXEL_ENCODING_RGB_WIDE_GAMUT = 3 -DP_PIXEL_ENCODING_Y_ONLY = 4 -DP_PIXEL_ENCODING_YCBCR420 = 5 -DP_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'DP_PIXEL_PER_CYCLE_PROCESSING_NUM' -DP_PIXEL_PER_CYCLE_PROCESSING_NUM__enumvalues = { - 0: 'DP_ONE_PIXEL_PER_CYCLE', - 1: 'DP_TWO_PIXEL_PER_CYCLE', -} -DP_ONE_PIXEL_PER_CYCLE = 0 -DP_TWO_PIXEL_PER_CYCLE = 1 -DP_PIXEL_PER_CYCLE_PROCESSING_NUM = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE' -DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE__enumvalues = { - 0: 'DP_SEC_ASP_CHANNEL_COUNT_FROM_AZ', - 1: 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED', -} -DP_SEC_ASP_CHANNEL_COUNT_FROM_AZ = 0 -DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED = 1 -DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_ASP_PRIORITY' -DP_SEC_ASP_PRIORITY__enumvalues = { - 0: 'DP_SEC_ASP_LOW_PRIORITY', - 1: 'DP_SEC_ASP_HIGH_PRIORITY', -} -DP_SEC_ASP_LOW_PRIORITY = 0 -DP_SEC_ASP_HIGH_PRIORITY = 1 -DP_SEC_ASP_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_AUDIO_MUTE' -DP_SEC_AUDIO_MUTE__enumvalues = { - 0: 'DP_SEC_AUDIO_MUTE_HW_CTRL', - 1: 'DP_SEC_AUDIO_MUTE_SW_CTRL', -} -DP_SEC_AUDIO_MUTE_HW_CTRL = 0 -DP_SEC_AUDIO_MUTE_SW_CTRL = 1 -DP_SEC_AUDIO_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_COLLISION_ACK' -DP_SEC_COLLISION_ACK__enumvalues = { - 0: 'DP_SEC_COLLISION_ACK_NO_EFFECT', - 1: 'DP_SEC_COLLISION_ACK_CLR_FLAG', -} -DP_SEC_COLLISION_ACK_NO_EFFECT = 0 -DP_SEC_COLLISION_ACK_CLR_FLAG = 1 -DP_SEC_COLLISION_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_GSP0_PRIORITY' -DP_SEC_GSP0_PRIORITY__enumvalues = { - 0: 'SEC_GSP0_PRIORITY_LOW', - 1: 'SEC_GSP0_PRIORITY_HIGH', -} -SEC_GSP0_PRIORITY_LOW = 0 -SEC_GSP0_PRIORITY_HIGH = 1 -DP_SEC_GSP0_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_GSP_SEND' -DP_SEC_GSP_SEND__enumvalues = { - 0: 'NOT_SENT', - 1: 'FORCE_SENT', -} -NOT_SENT = 0 -FORCE_SENT = 1 -DP_SEC_GSP_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_GSP_SEND_ANY_LINE' -DP_SEC_GSP_SEND_ANY_LINE__enumvalues = { - 0: 'SEND_AT_LINK_NUMBER', - 1: 'SEND_AT_EARLIEST_TIME', -} -SEND_AT_LINK_NUMBER = 0 -SEND_AT_EARLIEST_TIME = 1 -DP_SEC_GSP_SEND_ANY_LINE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_GSP_SEND_PPS' -DP_SEC_GSP_SEND_PPS__enumvalues = { - 0: 'SEND_NORMAL_PACKET', - 1: 'SEND_PPS_PACKET', -} -SEND_NORMAL_PACKET = 0 -SEND_PPS_PACKET = 1 -DP_SEC_GSP_SEND_PPS = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_LINE_REFERENCE' -DP_SEC_LINE_REFERENCE__enumvalues = { - 0: 'REFER_TO_DP_SOF', - 1: 'REFER_TO_OTG_SOF', -} -REFER_TO_DP_SOF = 0 -REFER_TO_OTG_SOF = 1 -DP_SEC_LINE_REFERENCE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_TIMESTAMP_MODE' -DP_SEC_TIMESTAMP_MODE__enumvalues = { - 0: 'DP_SEC_TIMESTAMP_PROGRAMMABLE_MODE', - 1: 'DP_SEC_TIMESTAMP_AUTO_CALC_MODE', -} -DP_SEC_TIMESTAMP_PROGRAMMABLE_MODE = 0 -DP_SEC_TIMESTAMP_AUTO_CALC_MODE = 1 -DP_SEC_TIMESTAMP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STEER_OVERFLOW_ACK' -DP_STEER_OVERFLOW_ACK__enumvalues = { - 0: 'DP_STEER_OVERFLOW_ACK_NO_EFFECT', - 1: 'DP_STEER_OVERFLOW_ACK_CLR_INTERRUPT', -} -DP_STEER_OVERFLOW_ACK_NO_EFFECT = 0 -DP_STEER_OVERFLOW_ACK_CLR_INTERRUPT = 1 -DP_STEER_OVERFLOW_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STEER_OVERFLOW_MASK' -DP_STEER_OVERFLOW_MASK__enumvalues = { - 0: 'DP_STEER_OVERFLOW_MASKED', - 1: 'DP_STEER_OVERFLOW_UNMASK', -} -DP_STEER_OVERFLOW_MASKED = 0 -DP_STEER_OVERFLOW_UNMASK = 1 -DP_STEER_OVERFLOW_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SYNC_POLARITY' -DP_SYNC_POLARITY__enumvalues = { - 0: 'DP_SYNC_POLARITY_ACTIVE_HIGH', - 1: 'DP_SYNC_POLARITY_ACTIVE_LOW', -} -DP_SYNC_POLARITY_ACTIVE_HIGH = 0 -DP_SYNC_POLARITY_ACTIVE_LOW = 1 -DP_SYNC_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_TU_OVERFLOW_ACK' -DP_TU_OVERFLOW_ACK__enumvalues = { - 0: 'DP_TU_OVERFLOW_ACK_NO_EFFECT', - 1: 'DP_TU_OVERFLOW_ACK_CLR_INTERRUPT', -} -DP_TU_OVERFLOW_ACK_NO_EFFECT = 0 -DP_TU_OVERFLOW_ACK_CLR_INTERRUPT = 1 -DP_TU_OVERFLOW_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_UDI_LANES' -DP_UDI_LANES__enumvalues = { - 0: 'DP_UDI_1_LANE', - 1: 'DP_UDI_2_LANES', - 2: 'DP_UDI_LANES_RESERVED', - 3: 'DP_UDI_4_LANES', -} -DP_UDI_1_LANE = 0 -DP_UDI_2_LANES = 1 -DP_UDI_LANES_RESERVED = 2 -DP_UDI_4_LANES = 3 -DP_UDI_LANES = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_ENHANCED_FRAME_MODE' -DP_VID_ENHANCED_FRAME_MODE__enumvalues = { - 0: 'VID_NORMAL_FRAME_MODE', - 1: 'VID_ENHANCED_MODE', -} -VID_NORMAL_FRAME_MODE = 0 -VID_ENHANCED_MODE = 1 -DP_VID_ENHANCED_FRAME_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_M_N_DOUBLE_BUFFER_MODE' -DP_VID_M_N_DOUBLE_BUFFER_MODE__enumvalues = { - 0: 'DP_VID_M_N_DOUBLE_BUFFER_AFTER_VID_M_UPDATE', - 1: 'DP_VID_M_N_DOUBLE_BUFFER_AT_FRAME_START', -} -DP_VID_M_N_DOUBLE_BUFFER_AFTER_VID_M_UPDATE = 0 -DP_VID_M_N_DOUBLE_BUFFER_AT_FRAME_START = 1 -DP_VID_M_N_DOUBLE_BUFFER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_M_N_GEN_EN' -DP_VID_M_N_GEN_EN__enumvalues = { - 0: 'DP_VID_M_N_PROGRAMMED_VIA_REG', - 1: 'DP_VID_M_N_CALC_AUTO', -} -DP_VID_M_N_PROGRAMMED_VIA_REG = 0 -DP_VID_M_N_CALC_AUTO = 1 -DP_VID_M_N_GEN_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_N_MUL' -DP_VID_N_MUL__enumvalues = { - 0: 'DP_VID_M_1X_INPUT_PIXEL_RATE', - 1: 'DP_VID_M_2X_INPUT_PIXEL_RATE', - 2: 'DP_VID_M_4X_INPUT_PIXEL_RATE', - 3: 'DP_VID_M_8X_INPUT_PIXEL_RATE', -} -DP_VID_M_1X_INPUT_PIXEL_RATE = 0 -DP_VID_M_2X_INPUT_PIXEL_RATE = 1 -DP_VID_M_4X_INPUT_PIXEL_RATE = 2 -DP_VID_M_8X_INPUT_PIXEL_RATE = 3 -DP_VID_N_MUL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_STREAM_DISABLE_ACK' -DP_VID_STREAM_DISABLE_ACK__enumvalues = { - 0: 'ID_STREAM_DISABLE_NO_ACK', - 1: 'ID_STREAM_DISABLE_ACKED', -} -ID_STREAM_DISABLE_NO_ACK = 0 -ID_STREAM_DISABLE_ACKED = 1 -DP_VID_STREAM_DISABLE_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_STREAM_DISABLE_MASK' -DP_VID_STREAM_DISABLE_MASK__enumvalues = { - 0: 'VID_STREAM_DISABLE_MASKED', - 1: 'VID_STREAM_DISABLE_UNMASK', -} -VID_STREAM_DISABLE_MASKED = 0 -VID_STREAM_DISABLE_UNMASK = 1 -DP_VID_STREAM_DISABLE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_STREAM_DIS_DEFER' -DP_VID_STREAM_DIS_DEFER__enumvalues = { - 0: 'DP_VID_STREAM_DIS_NO_DEFER', - 1: 'DP_VID_STREAM_DIS_DEFER_TO_HBLANK', - 2: 'DP_VID_STREAM_DIS_DEFER_TO_VBLANK', -} -DP_VID_STREAM_DIS_NO_DEFER = 0 -DP_VID_STREAM_DIS_DEFER_TO_HBLANK = 1 -DP_VID_STREAM_DIS_DEFER_TO_VBLANK = 2 -DP_VID_STREAM_DIS_DEFER = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_VBID_FIELD_POL' -DP_VID_VBID_FIELD_POL__enumvalues = { - 0: 'DP_VID_VBID_FIELD_POL_NORMAL', - 1: 'DP_VID_VBID_FIELD_POL_INV', -} -DP_VID_VBID_FIELD_POL_NORMAL = 0 -DP_VID_VBID_FIELD_POL_INV = 1 -DP_VID_VBID_FIELD_POL = ctypes.c_uint32 # enum - -# values for enumeration 'FEC_ACTIVE_STATUS' -FEC_ACTIVE_STATUS__enumvalues = { - 0: 'DPHY_FEC_NOT_ACTIVE', - 1: 'DPHY_FEC_ACTIVE', -} -DPHY_FEC_NOT_ACTIVE = 0 -DPHY_FEC_ACTIVE = 1 -FEC_ACTIVE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_BE_CNTL_HPD_SELECT' -DIG_BE_CNTL_HPD_SELECT__enumvalues = { - 0: 'DIG_BE_CNTL_HPD1', - 1: 'DIG_BE_CNTL_HPD2', - 2: 'DIG_BE_CNTL_HPD3', - 3: 'DIG_BE_CNTL_HPD4', - 4: 'DIG_BE_CNTL_HPD5', - 5: 'DIG_BE_CNTL_NO_HPD', -} -DIG_BE_CNTL_HPD1 = 0 -DIG_BE_CNTL_HPD2 = 1 -DIG_BE_CNTL_HPD3 = 2 -DIG_BE_CNTL_HPD4 = 3 -DIG_BE_CNTL_HPD5 = 4 -DIG_BE_CNTL_NO_HPD = 5 -DIG_BE_CNTL_HPD_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_BE_CNTL_MODE' -DIG_BE_CNTL_MODE__enumvalues = { - 0: 'DIG_BE_DP_SST_MODE', - 1: 'DIG_BE_RESERVED1', - 2: 'DIG_BE_TMDS_DVI_MODE', - 3: 'DIG_BE_TMDS_HDMI_MODE', - 4: 'DIG_BE_RESERVED4', - 5: 'DIG_BE_DP_MST_MODE', - 6: 'DIG_BE_RESERVED2', - 7: 'DIG_BE_RESERVED3', -} -DIG_BE_DP_SST_MODE = 0 -DIG_BE_RESERVED1 = 1 -DIG_BE_TMDS_DVI_MODE = 2 -DIG_BE_TMDS_HDMI_MODE = 3 -DIG_BE_RESERVED4 = 4 -DIG_BE_DP_MST_MODE = 5 -DIG_BE_RESERVED2 = 6 -DIG_BE_RESERVED3 = 7 -DIG_BE_CNTL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_DIGITAL_BYPASS_ENABLE' -DIG_DIGITAL_BYPASS_ENABLE__enumvalues = { - 0: 'DIG_DIGITAL_BYPASS_OFF', - 1: 'DIG_DIGITAL_BYPASS_ON', -} -DIG_DIGITAL_BYPASS_OFF = 0 -DIG_DIGITAL_BYPASS_ON = 1 -DIG_DIGITAL_BYPASS_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_DIGITAL_BYPASS_SEL' -DIG_DIGITAL_BYPASS_SEL__enumvalues = { - 0: 'DIG_DIGITAL_BYPASS_SEL_BYPASS', - 1: 'DIG_DIGITAL_BYPASS_SEL_36BPP', - 2: 'DIG_DIGITAL_BYPASS_SEL_48BPP_LSB', - 3: 'DIG_DIGITAL_BYPASS_SEL_48BPP_MSB', - 4: 'DIG_DIGITAL_BYPASS_SEL_10BPP_LSB', - 5: 'DIG_DIGITAL_BYPASS_SEL_12BPC_LSB', - 6: 'DIG_DIGITAL_BYPASS_SEL_ALPHA', -} -DIG_DIGITAL_BYPASS_SEL_BYPASS = 0 -DIG_DIGITAL_BYPASS_SEL_36BPP = 1 -DIG_DIGITAL_BYPASS_SEL_48BPP_LSB = 2 -DIG_DIGITAL_BYPASS_SEL_48BPP_MSB = 3 -DIG_DIGITAL_BYPASS_SEL_10BPP_LSB = 4 -DIG_DIGITAL_BYPASS_SEL_12BPC_LSB = 5 -DIG_DIGITAL_BYPASS_SEL_ALPHA = 6 -DIG_DIGITAL_BYPASS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FE_CNTL_SOURCE_SELECT' -DIG_FE_CNTL_SOURCE_SELECT__enumvalues = { - 0: 'DIG_FE_SOURCE_FROM_OTG0', - 1: 'DIG_FE_SOURCE_FROM_OTG1', - 2: 'DIG_FE_SOURCE_FROM_OTG2', - 3: 'DIG_FE_SOURCE_FROM_OTG3', - 4: 'DIG_FE_SOURCE_RESERVED', -} -DIG_FE_SOURCE_FROM_OTG0 = 0 -DIG_FE_SOURCE_FROM_OTG1 = 1 -DIG_FE_SOURCE_FROM_OTG2 = 2 -DIG_FE_SOURCE_FROM_OTG3 = 3 -DIG_FE_SOURCE_RESERVED = 4 -DIG_FE_CNTL_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FE_CNTL_STEREOSYNC_SELECT' -DIG_FE_CNTL_STEREOSYNC_SELECT__enumvalues = { - 0: 'DIG_FE_STEREOSYNC_FROM_OTG0', - 1: 'DIG_FE_STEREOSYNC_FROM_OTG1', - 2: 'DIG_FE_STEREOSYNC_FROM_OTG2', - 3: 'DIG_FE_STEREOSYNC_FROM_OTG3', - 4: 'DIG_FE_STEREOSYNC_RESERVED', -} -DIG_FE_STEREOSYNC_FROM_OTG0 = 0 -DIG_FE_STEREOSYNC_FROM_OTG1 = 1 -DIG_FE_STEREOSYNC_FROM_OTG2 = 2 -DIG_FE_STEREOSYNC_FROM_OTG3 = 3 -DIG_FE_STEREOSYNC_RESERVED = 4 -DIG_FE_CNTL_STEREOSYNC_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_CTRL_FORCE_RECOMP_MINMAX' -DIG_FIFO_CTRL_FORCE_RECOMP_MINMAX__enumvalues = { - 0: 'DIG_FIFO_NOT_FORCE_RECOMP_MINMAX', - 1: 'DIG_FIFO_FORCE_RECOMP_MINMAX', -} -DIG_FIFO_NOT_FORCE_RECOMP_MINMAX = 0 -DIG_FIFO_FORCE_RECOMP_MINMAX = 1 -DIG_FIFO_CTRL_FORCE_RECOMP_MINMAX = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_CTRL_USE_OVERWRITE_LEVEL' -DIG_FIFO_CTRL_USE_OVERWRITE_LEVEL__enumvalues = { - 0: 'DIG_FIFO_USE_OVERWRITE_LEVEL', - 1: 'DIG_FIFO_USE_CAL_AVERAGE_LEVEL', -} -DIG_FIFO_USE_OVERWRITE_LEVEL = 0 -DIG_FIFO_USE_CAL_AVERAGE_LEVEL = 1 -DIG_FIFO_CTRL_USE_OVERWRITE_LEVEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_FORCE_RECAL_AVERAGE' -DIG_FIFO_FORCE_RECAL_AVERAGE__enumvalues = { - 0: 'DIG_FIFO_NOT_FORCE_RECAL_AVERAGE', - 1: 'DIG_FIFO_FORCE_RECAL_AVERAGE_LEVEL', -} -DIG_FIFO_NOT_FORCE_RECAL_AVERAGE = 0 -DIG_FIFO_FORCE_RECAL_AVERAGE_LEVEL = 1 -DIG_FIFO_FORCE_RECAL_AVERAGE = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_OUTPUT_PROCESSING_MODE' -DIG_FIFO_OUTPUT_PROCESSING_MODE__enumvalues = { - 0: 'DIG_FIFO_1_PIX_PER_CYCLE', - 1: 'DIG_FIFO_2_PIX_PER_CYCLE', -} -DIG_FIFO_1_PIX_PER_CYCLE = 0 -DIG_FIFO_2_PIX_PER_CYCLE = 1 -DIG_FIFO_OUTPUT_PROCESSING_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_OVERFLOW_UNDERFLOW_ERROR' -DIG_FIFO_OVERFLOW_UNDERFLOW_ERROR__enumvalues = { - 0: 'DIG_FIFO_NO_ERROR_OCCURRED', - 1: 'DIG_FIFO_UNDERFLOW_OCCURRED', - 2: 'DIG_FIFO_OVERFLOW_OCCURRED', -} -DIG_FIFO_NO_ERROR_OCCURRED = 0 -DIG_FIFO_UNDERFLOW_OCCURRED = 1 -DIG_FIFO_OVERFLOW_OCCURRED = 2 -DIG_FIFO_OVERFLOW_UNDERFLOW_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_READ_CLOCK_SRC' -DIG_FIFO_READ_CLOCK_SRC__enumvalues = { - 0: 'DIG_FIFO_READ_CLOCK_SRC_FROM_DCCG', - 1: 'DIG_FIFO_READ_CLOCK_SRC_FROM_DISPLAY_PIPE', -} -DIG_FIFO_READ_CLOCK_SRC_FROM_DCCG = 0 -DIG_FIFO_READ_CLOCK_SRC_FROM_DISPLAY_PIPE = 1 -DIG_FIFO_READ_CLOCK_SRC = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_INPUT_PIXEL_SEL' -DIG_INPUT_PIXEL_SEL__enumvalues = { - 0: 'DIG_ALL_PIXEL', - 1: 'DIG_EVEN_PIXEL_ONLY', - 2: 'DIG_ODD_PIXEL_ONLY', -} -DIG_ALL_PIXEL = 0 -DIG_EVEN_PIXEL_ONLY = 1 -DIG_ODD_PIXEL_ONLY = 2 -DIG_INPUT_PIXEL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_OUTPUT_CRC_CNTL_LINK_SEL' -DIG_OUTPUT_CRC_CNTL_LINK_SEL__enumvalues = { - 0: 'DIG_OUTPUT_CRC_ON_LINK0', - 1: 'DIG_OUTPUT_CRC_ON_LINK1', -} -DIG_OUTPUT_CRC_ON_LINK0 = 0 -DIG_OUTPUT_CRC_ON_LINK1 = 1 -DIG_OUTPUT_CRC_CNTL_LINK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_OUTPUT_CRC_DATA_SEL' -DIG_OUTPUT_CRC_DATA_SEL__enumvalues = { - 0: 'DIG_OUTPUT_CRC_FOR_FULLFRAME', - 1: 'DIG_OUTPUT_CRC_FOR_ACTIVEONLY', - 2: 'DIG_OUTPUT_CRC_FOR_VBI', - 3: 'DIG_OUTPUT_CRC_FOR_AUDIO', -} -DIG_OUTPUT_CRC_FOR_FULLFRAME = 0 -DIG_OUTPUT_CRC_FOR_ACTIVEONLY = 1 -DIG_OUTPUT_CRC_FOR_VBI = 2 -DIG_OUTPUT_CRC_FOR_AUDIO = 3 -DIG_OUTPUT_CRC_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_RANDOM_PATTERN_SEED_RAN_PAT' -DIG_RANDOM_PATTERN_SEED_RAN_PAT__enumvalues = { - 0: 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_ALL_PIXELS', - 1: 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_DE_HIGH', -} -DIG_RANDOM_PATTERN_SEED_RAN_PAT_ALL_PIXELS = 0 -DIG_RANDOM_PATTERN_SEED_RAN_PAT_DE_HIGH = 1 -DIG_RANDOM_PATTERN_SEED_RAN_PAT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_SL_PIXEL_GROUPING' -DIG_SL_PIXEL_GROUPING__enumvalues = { - 0: 'DIG_SINGLETON_PIXELS', - 1: 'DIG_PAIR_PIXELS', -} -DIG_SINGLETON_PIXELS = 0 -DIG_PAIR_PIXELS = 1 -DIG_SL_PIXEL_GROUPING = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_EXTERNAL_RESET_EN' -DIG_TEST_PATTERN_EXTERNAL_RESET_EN__enumvalues = { - 0: 'DIG_TEST_PATTERN_EXTERNAL_RESET_ENABLE', - 1: 'DIG_TEST_PATTERN_EXTERNAL_RESET_BY_EXT_SIG', -} -DIG_TEST_PATTERN_EXTERNAL_RESET_ENABLE = 0 -DIG_TEST_PATTERN_EXTERNAL_RESET_BY_EXT_SIG = 1 -DIG_TEST_PATTERN_EXTERNAL_RESET_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL' -DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL__enumvalues = { - 0: 'DIG_10BIT_TEST_PATTERN', - 1: 'DIG_ALTERNATING_TEST_PATTERN', -} -DIG_10BIT_TEST_PATTERN = 0 -DIG_ALTERNATING_TEST_PATTERN = 1 -DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN' -DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN__enumvalues = { - 0: 'DIG_TEST_PATTERN_NORMAL', - 1: 'DIG_TEST_PATTERN_RANDOM', -} -DIG_TEST_PATTERN_NORMAL = 0 -DIG_TEST_PATTERN_RANDOM = 1 -DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_RANDOM_PATTERN_RESET' -DIG_TEST_PATTERN_RANDOM_PATTERN_RESET__enumvalues = { - 0: 'DIG_RANDOM_PATTERN_ENABLED', - 1: 'DIG_RANDOM_PATTERN_RESETED', -} -DIG_RANDOM_PATTERN_ENABLED = 0 -DIG_RANDOM_PATTERN_RESETED = 1 -DIG_TEST_PATTERN_RANDOM_PATTERN_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN' -DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN__enumvalues = { - 0: 'DIG_IN_NORMAL_OPERATION', - 1: 'DIG_IN_DEBUG_MODE', -} -DIG_IN_NORMAL_OPERATION = 0 -DIG_IN_DEBUG_MODE = 1 -DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DOLBY_VISION_ENABLE' -DOLBY_VISION_ENABLE__enumvalues = { - 0: 'DOLBY_VISION_DISABLED', - 1: 'DOLBY_VISION_ENABLED', -} -DOLBY_VISION_DISABLED = 0 -DOLBY_VISION_ENABLED = 1 -DOLBY_VISION_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACP_SEND' -HDMI_ACP_SEND__enumvalues = { - 0: 'HDMI_ACP_NOT_SEND', - 1: 'HDMI_ACP_PKT_SEND', -} -HDMI_ACP_NOT_SEND = 0 -HDMI_ACP_PKT_SEND = 1 -HDMI_ACP_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_AUDIO_PRIORITY' -HDMI_ACR_AUDIO_PRIORITY__enumvalues = { - 0: 'HDMI_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE', - 1: 'HDMI_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT', -} -HDMI_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE = 0 -HDMI_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT = 1 -HDMI_ACR_AUDIO_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_CONT' -HDMI_ACR_CONT__enumvalues = { - 0: 'HDMI_ACR_CONT_DISABLE', - 1: 'HDMI_ACR_CONT_ENABLE', -} -HDMI_ACR_CONT_DISABLE = 0 -HDMI_ACR_CONT_ENABLE = 1 -HDMI_ACR_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_N_MULTIPLE' -HDMI_ACR_N_MULTIPLE__enumvalues = { - 0: 'HDMI_ACR_0_MULTIPLE_RESERVED', - 1: 'HDMI_ACR_1_MULTIPLE', - 2: 'HDMI_ACR_2_MULTIPLE', - 3: 'HDMI_ACR_3_MULTIPLE_RESERVED', - 4: 'HDMI_ACR_4_MULTIPLE', - 5: 'HDMI_ACR_5_MULTIPLE_RESERVED', - 6: 'HDMI_ACR_6_MULTIPLE_RESERVED', - 7: 'HDMI_ACR_7_MULTIPLE_RESERVED', -} -HDMI_ACR_0_MULTIPLE_RESERVED = 0 -HDMI_ACR_1_MULTIPLE = 1 -HDMI_ACR_2_MULTIPLE = 2 -HDMI_ACR_3_MULTIPLE_RESERVED = 3 -HDMI_ACR_4_MULTIPLE = 4 -HDMI_ACR_5_MULTIPLE_RESERVED = 5 -HDMI_ACR_6_MULTIPLE_RESERVED = 6 -HDMI_ACR_7_MULTIPLE_RESERVED = 7 -HDMI_ACR_N_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_SELECT' -HDMI_ACR_SELECT__enumvalues = { - 0: 'HDMI_ACR_SELECT_HW', - 1: 'HDMI_ACR_SELECT_32K', - 2: 'HDMI_ACR_SELECT_44K', - 3: 'HDMI_ACR_SELECT_48K', -} -HDMI_ACR_SELECT_HW = 0 -HDMI_ACR_SELECT_32K = 1 -HDMI_ACR_SELECT_44K = 2 -HDMI_ACR_SELECT_48K = 3 -HDMI_ACR_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_SEND' -HDMI_ACR_SEND__enumvalues = { - 0: 'HDMI_ACR_NOT_SEND', - 1: 'HDMI_ACR_PKT_SEND', -} -HDMI_ACR_NOT_SEND = 0 -HDMI_ACR_PKT_SEND = 1 -HDMI_ACR_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_SOURCE' -HDMI_ACR_SOURCE__enumvalues = { - 0: 'HDMI_ACR_SOURCE_HW', - 1: 'HDMI_ACR_SOURCE_SW', -} -HDMI_ACR_SOURCE_HW = 0 -HDMI_ACR_SOURCE_SW = 1 -HDMI_ACR_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_AUDIO_DELAY_EN' -HDMI_AUDIO_DELAY_EN__enumvalues = { - 0: 'HDMI_AUDIO_DELAY_DISABLE', - 1: 'HDMI_AUDIO_DELAY_58CLK', - 2: 'HDMI_AUDIO_DELAY_56CLK', - 3: 'HDMI_AUDIO_DELAY_RESERVED', -} -HDMI_AUDIO_DELAY_DISABLE = 0 -HDMI_AUDIO_DELAY_58CLK = 1 -HDMI_AUDIO_DELAY_56CLK = 2 -HDMI_AUDIO_DELAY_RESERVED = 3 -HDMI_AUDIO_DELAY_EN = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_AUDIO_INFO_CONT' -HDMI_AUDIO_INFO_CONT__enumvalues = { - 0: 'HDMI_AUDIO_INFO_CONT_DISABLE', - 1: 'HDMI_AUDIO_INFO_CONT_ENABLE', -} -HDMI_AUDIO_INFO_CONT_DISABLE = 0 -HDMI_AUDIO_INFO_CONT_ENABLE = 1 -HDMI_AUDIO_INFO_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_AUDIO_INFO_SEND' -HDMI_AUDIO_INFO_SEND__enumvalues = { - 0: 'HDMI_AUDIO_INFO_NOT_SEND', - 1: 'HDMI_AUDIO_INFO_PKT_SEND', -} -HDMI_AUDIO_INFO_NOT_SEND = 0 -HDMI_AUDIO_INFO_PKT_SEND = 1 -HDMI_AUDIO_INFO_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_CLOCK_CHANNEL_RATE' -HDMI_CLOCK_CHANNEL_RATE__enumvalues = { - 0: 'HDMI_CLOCK_CHANNEL_FREQ_EQUAL_TO_CHAR_RATE', - 1: 'HDMI_CLOCK_CHANNEL_FREQ_QUARTER_TO_CHAR_RATE', -} -HDMI_CLOCK_CHANNEL_FREQ_EQUAL_TO_CHAR_RATE = 0 -HDMI_CLOCK_CHANNEL_FREQ_QUARTER_TO_CHAR_RATE = 1 -HDMI_CLOCK_CHANNEL_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_DATA_SCRAMBLE_EN' -HDMI_DATA_SCRAMBLE_EN__enumvalues = { - 0: 'HDMI_DATA_SCRAMBLE_DISABLE', - 1: 'HDMI_DATA_SCRAMBLE_ENABLE', -} -HDMI_DATA_SCRAMBLE_DISABLE = 0 -HDMI_DATA_SCRAMBLE_ENABLE = 1 -HDMI_DATA_SCRAMBLE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_DEEP_COLOR_DEPTH' -HDMI_DEEP_COLOR_DEPTH__enumvalues = { - 0: 'HDMI_DEEP_COLOR_DEPTH_24BPP', - 1: 'HDMI_DEEP_COLOR_DEPTH_30BPP', - 2: 'HDMI_DEEP_COLOR_DEPTH_36BPP', - 3: 'HDMI_DEEP_COLOR_DEPTH_48BPP', -} -HDMI_DEEP_COLOR_DEPTH_24BPP = 0 -HDMI_DEEP_COLOR_DEPTH_30BPP = 1 -HDMI_DEEP_COLOR_DEPTH_36BPP = 2 -HDMI_DEEP_COLOR_DEPTH_48BPP = 3 -HDMI_DEEP_COLOR_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_DEFAULT_PAHSE' -HDMI_DEFAULT_PAHSE__enumvalues = { - 0: 'HDMI_DEFAULT_PHASE_IS_0', - 1: 'HDMI_DEFAULT_PHASE_IS_1', -} -HDMI_DEFAULT_PHASE_IS_0 = 0 -HDMI_DEFAULT_PHASE_IS_1 = 1 -HDMI_DEFAULT_PAHSE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ERROR_ACK' -HDMI_ERROR_ACK__enumvalues = { - 0: 'HDMI_ERROR_ACK_INT', - 1: 'HDMI_ERROR_NOT_ACK', -} -HDMI_ERROR_ACK_INT = 0 -HDMI_ERROR_NOT_ACK = 1 -HDMI_ERROR_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ERROR_MASK' -HDMI_ERROR_MASK__enumvalues = { - 0: 'HDMI_ERROR_MASK_INT', - 1: 'HDMI_ERROR_NOT_MASK', -} -HDMI_ERROR_MASK_INT = 0 -HDMI_ERROR_NOT_MASK = 1 -HDMI_ERROR_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_AVMUTE' -HDMI_GC_AVMUTE__enumvalues = { - 0: 'HDMI_GC_AVMUTE_SET', - 1: 'HDMI_GC_AVMUTE_UNSET', -} -HDMI_GC_AVMUTE_SET = 0 -HDMI_GC_AVMUTE_UNSET = 1 -HDMI_GC_AVMUTE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_AVMUTE_CONT' -HDMI_GC_AVMUTE_CONT__enumvalues = { - 0: 'HDMI_GC_AVMUTE_CONT_DISABLE', - 1: 'HDMI_GC_AVMUTE_CONT_ENABLE', -} -HDMI_GC_AVMUTE_CONT_DISABLE = 0 -HDMI_GC_AVMUTE_CONT_ENABLE = 1 -HDMI_GC_AVMUTE_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_CONT' -HDMI_GC_CONT__enumvalues = { - 0: 'HDMI_GC_CONT_DISABLE', - 1: 'HDMI_GC_CONT_ENABLE', -} -HDMI_GC_CONT_DISABLE = 0 -HDMI_GC_CONT_ENABLE = 1 -HDMI_GC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_SEND' -HDMI_GC_SEND__enumvalues = { - 0: 'HDMI_GC_NOT_SEND', - 1: 'HDMI_GC_PKT_SEND', -} -HDMI_GC_NOT_SEND = 0 -HDMI_GC_PKT_SEND = 1 -HDMI_GC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GENERIC_CONT' -HDMI_GENERIC_CONT__enumvalues = { - 0: 'HDMI_GENERIC_CONT_DISABLE', - 1: 'HDMI_GENERIC_CONT_ENABLE', -} -HDMI_GENERIC_CONT_DISABLE = 0 -HDMI_GENERIC_CONT_ENABLE = 1 -HDMI_GENERIC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GENERIC_SEND' -HDMI_GENERIC_SEND__enumvalues = { - 0: 'HDMI_GENERIC_NOT_SEND', - 1: 'HDMI_GENERIC_PKT_SEND', -} -HDMI_GENERIC_NOT_SEND = 0 -HDMI_GENERIC_PKT_SEND = 1 -HDMI_GENERIC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ISRC_CONT' -HDMI_ISRC_CONT__enumvalues = { - 0: 'HDMI_ISRC_CONT_DISABLE', - 1: 'HDMI_ISRC_CONT_ENABLE', -} -HDMI_ISRC_CONT_DISABLE = 0 -HDMI_ISRC_CONT_ENABLE = 1 -HDMI_ISRC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ISRC_SEND' -HDMI_ISRC_SEND__enumvalues = { - 0: 'HDMI_ISRC_NOT_SEND', - 1: 'HDMI_ISRC_PKT_SEND', -} -HDMI_ISRC_NOT_SEND = 0 -HDMI_ISRC_PKT_SEND = 1 -HDMI_ISRC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_KEEPOUT_MODE' -HDMI_KEEPOUT_MODE__enumvalues = { - 0: 'HDMI_KEEPOUT_0_650PIX_AFTER_VSYNC', - 1: 'HDMI_KEEPOUT_509_650PIX_AFTER_VSYNC', -} -HDMI_KEEPOUT_0_650PIX_AFTER_VSYNC = 0 -HDMI_KEEPOUT_509_650PIX_AFTER_VSYNC = 1 -HDMI_KEEPOUT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_METADATA_ENABLE' -HDMI_METADATA_ENABLE__enumvalues = { - 0: 'HDMI_METADATA_NOT_SEND', - 1: 'HDMI_METADATA_PKT_SEND', -} -HDMI_METADATA_NOT_SEND = 0 -HDMI_METADATA_PKT_SEND = 1 -HDMI_METADATA_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_MPEG_INFO_CONT' -HDMI_MPEG_INFO_CONT__enumvalues = { - 0: 'HDMI_MPEG_INFO_CONT_DISABLE', - 1: 'HDMI_MPEG_INFO_CONT_ENABLE', -} -HDMI_MPEG_INFO_CONT_DISABLE = 0 -HDMI_MPEG_INFO_CONT_ENABLE = 1 -HDMI_MPEG_INFO_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_MPEG_INFO_SEND' -HDMI_MPEG_INFO_SEND__enumvalues = { - 0: 'HDMI_MPEG_INFO_NOT_SEND', - 1: 'HDMI_MPEG_INFO_PKT_SEND', -} -HDMI_MPEG_INFO_NOT_SEND = 0 -HDMI_MPEG_INFO_PKT_SEND = 1 -HDMI_MPEG_INFO_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_NO_EXTRA_NULL_PACKET_FILLED' -HDMI_NO_EXTRA_NULL_PACKET_FILLED__enumvalues = { - 0: 'HDMI_EXTRA_NULL_PACKET_FILLED_ENABLE', - 1: 'HDMI_EXTRA_NULL_PACKET_FILLED_DISABLE', -} -HDMI_EXTRA_NULL_PACKET_FILLED_ENABLE = 0 -HDMI_EXTRA_NULL_PACKET_FILLED_DISABLE = 1 -HDMI_NO_EXTRA_NULL_PACKET_FILLED = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_NULL_SEND' -HDMI_NULL_SEND__enumvalues = { - 0: 'HDMI_NULL_NOT_SEND', - 1: 'HDMI_NULL_PKT_SEND', -} -HDMI_NULL_NOT_SEND = 0 -HDMI_NULL_PKT_SEND = 1 -HDMI_NULL_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_PACKET_GEN_VERSION' -HDMI_PACKET_GEN_VERSION__enumvalues = { - 0: 'HDMI_PACKET_GEN_VERSION_OLD', - 1: 'HDMI_PACKET_GEN_VERSION_NEW', -} -HDMI_PACKET_GEN_VERSION_OLD = 0 -HDMI_PACKET_GEN_VERSION_NEW = 1 -HDMI_PACKET_GEN_VERSION = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_PACKET_LINE_REFERENCE' -HDMI_PACKET_LINE_REFERENCE__enumvalues = { - 0: 'HDMI_PKT_LINE_REF_VSYNC', - 1: 'HDMI_PKT_LINE_REF_OTGSOF', -} -HDMI_PKT_LINE_REF_VSYNC = 0 -HDMI_PKT_LINE_REF_OTGSOF = 1 -HDMI_PACKET_LINE_REFERENCE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_PACKING_PHASE_OVERRIDE' -HDMI_PACKING_PHASE_OVERRIDE__enumvalues = { - 0: 'HDMI_PACKING_PHASE_SET_BY_HW', - 1: 'HDMI_PACKING_PHASE_SET_BY_SW', -} -HDMI_PACKING_PHASE_SET_BY_HW = 0 -HDMI_PACKING_PHASE_SET_BY_SW = 1 -HDMI_PACKING_PHASE_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'LVTMA_RANDOM_PATTERN_SEED_RAN_PAT' -LVTMA_RANDOM_PATTERN_SEED_RAN_PAT__enumvalues = { - 0: 'LVTMA_RANDOM_PATTERN_SEED_ALL_PIXELS', - 1: 'LVTMA_RANDOM_PATTERN_SEED_ONLY_DE_HIGH', -} -LVTMA_RANDOM_PATTERN_SEED_ALL_PIXELS = 0 -LVTMA_RANDOM_PATTERN_SEED_ONLY_DE_HIGH = 1 -LVTMA_RANDOM_PATTERN_SEED_RAN_PAT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_COLOR_FORMAT' -TMDS_COLOR_FORMAT__enumvalues = { - 0: 'TMDS_COLOR_FORMAT__24BPP__TWIN30BPP_MSB__DUAL48BPP', - 1: 'TMDS_COLOR_FORMAT_TWIN30BPP_LSB', - 2: 'TMDS_COLOR_FORMAT_DUAL30BPP', - 3: 'TMDS_COLOR_FORMAT_RESERVED', -} -TMDS_COLOR_FORMAT__24BPP__TWIN30BPP_MSB__DUAL48BPP = 0 -TMDS_COLOR_FORMAT_TWIN30BPP_LSB = 1 -TMDS_COLOR_FORMAT_DUAL30BPP = 2 -TMDS_COLOR_FORMAT_RESERVED = 3 -TMDS_COLOR_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_DATA_INVERT' -TMDS_CTL0_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL0_DATA_NORMAL', - 1: 'TMDS_CTL0_DATA_INVERT_EN', -} -TMDS_CTL0_DATA_NORMAL = 0 -TMDS_CTL0_DATA_INVERT_EN = 1 -TMDS_CTL0_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_DATA_MODULATION' -TMDS_CTL0_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL0_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL0_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL0_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL0_DATA_MODULATION_BIT2', -} -TMDS_CTL0_DATA_MODULATION_DISABLE = 0 -TMDS_CTL0_DATA_MODULATION_BIT0 = 1 -TMDS_CTL0_DATA_MODULATION_BIT1 = 2 -TMDS_CTL0_DATA_MODULATION_BIT2 = 3 -TMDS_CTL0_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_DATA_SEL' -TMDS_CTL0_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL0_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL0_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL0_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL0_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL0_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL0_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL0_DATA_SEL8_RANDOM_DATA', - 7: 'TMDS_CTL0_DATA_SEL9_SEL15_RANDOM_DATA', -} -TMDS_CTL0_DATA_SEL0_RESERVED = 0 -TMDS_CTL0_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL0_DATA_SEL2_VSYNC = 2 -TMDS_CTL0_DATA_SEL3_RESERVED = 3 -TMDS_CTL0_DATA_SEL4_HSYNC = 4 -TMDS_CTL0_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL0_DATA_SEL8_RANDOM_DATA = 6 -TMDS_CTL0_DATA_SEL9_SEL15_RANDOM_DATA = 7 -TMDS_CTL0_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_PATTERN_OUT_EN' -TMDS_CTL0_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL0_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL0_PATTERN_OUT_ENABLE', -} -TMDS_CTL0_PATTERN_OUT_DISABLE = 0 -TMDS_CTL0_PATTERN_OUT_ENABLE = 1 -TMDS_CTL0_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_DATA_INVERT' -TMDS_CTL1_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL1_DATA_NORMAL', - 1: 'TMDS_CTL1_DATA_INVERT_EN', -} -TMDS_CTL1_DATA_NORMAL = 0 -TMDS_CTL1_DATA_INVERT_EN = 1 -TMDS_CTL1_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_DATA_MODULATION' -TMDS_CTL1_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL1_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL1_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL1_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL1_DATA_MODULATION_BIT2', -} -TMDS_CTL1_DATA_MODULATION_DISABLE = 0 -TMDS_CTL1_DATA_MODULATION_BIT0 = 1 -TMDS_CTL1_DATA_MODULATION_BIT1 = 2 -TMDS_CTL1_DATA_MODULATION_BIT2 = 3 -TMDS_CTL1_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_DATA_SEL' -TMDS_CTL1_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL1_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL1_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL1_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL1_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL1_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL1_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL1_DATA_SEL8_BLANK_TIME', - 7: 'TMDS_CTL1_DATA_SEL9_SEL15_RESERVED', -} -TMDS_CTL1_DATA_SEL0_RESERVED = 0 -TMDS_CTL1_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL1_DATA_SEL2_VSYNC = 2 -TMDS_CTL1_DATA_SEL3_RESERVED = 3 -TMDS_CTL1_DATA_SEL4_HSYNC = 4 -TMDS_CTL1_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL1_DATA_SEL8_BLANK_TIME = 6 -TMDS_CTL1_DATA_SEL9_SEL15_RESERVED = 7 -TMDS_CTL1_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_PATTERN_OUT_EN' -TMDS_CTL1_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL1_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL1_PATTERN_OUT_ENABLE', -} -TMDS_CTL1_PATTERN_OUT_DISABLE = 0 -TMDS_CTL1_PATTERN_OUT_ENABLE = 1 -TMDS_CTL1_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_DATA_INVERT' -TMDS_CTL2_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL2_DATA_NORMAL', - 1: 'TMDS_CTL2_DATA_INVERT_EN', -} -TMDS_CTL2_DATA_NORMAL = 0 -TMDS_CTL2_DATA_INVERT_EN = 1 -TMDS_CTL2_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_DATA_MODULATION' -TMDS_CTL2_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL2_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL2_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL2_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL2_DATA_MODULATION_BIT2', -} -TMDS_CTL2_DATA_MODULATION_DISABLE = 0 -TMDS_CTL2_DATA_MODULATION_BIT0 = 1 -TMDS_CTL2_DATA_MODULATION_BIT1 = 2 -TMDS_CTL2_DATA_MODULATION_BIT2 = 3 -TMDS_CTL2_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_DATA_SEL' -TMDS_CTL2_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL2_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL2_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL2_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL2_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL2_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL2_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL2_DATA_SEL8_BLANK_TIME', - 7: 'TMDS_CTL2_DATA_SEL9_SEL15_RESERVED', -} -TMDS_CTL2_DATA_SEL0_RESERVED = 0 -TMDS_CTL2_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL2_DATA_SEL2_VSYNC = 2 -TMDS_CTL2_DATA_SEL3_RESERVED = 3 -TMDS_CTL2_DATA_SEL4_HSYNC = 4 -TMDS_CTL2_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL2_DATA_SEL8_BLANK_TIME = 6 -TMDS_CTL2_DATA_SEL9_SEL15_RESERVED = 7 -TMDS_CTL2_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_PATTERN_OUT_EN' -TMDS_CTL2_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL2_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL2_PATTERN_OUT_ENABLE', -} -TMDS_CTL2_PATTERN_OUT_DISABLE = 0 -TMDS_CTL2_PATTERN_OUT_ENABLE = 1 -TMDS_CTL2_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_DATA_INVERT' -TMDS_CTL3_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL3_DATA_NORMAL', - 1: 'TMDS_CTL3_DATA_INVERT_EN', -} -TMDS_CTL3_DATA_NORMAL = 0 -TMDS_CTL3_DATA_INVERT_EN = 1 -TMDS_CTL3_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_DATA_MODULATION' -TMDS_CTL3_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL3_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL3_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL3_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL3_DATA_MODULATION_BIT2', -} -TMDS_CTL3_DATA_MODULATION_DISABLE = 0 -TMDS_CTL3_DATA_MODULATION_BIT0 = 1 -TMDS_CTL3_DATA_MODULATION_BIT1 = 2 -TMDS_CTL3_DATA_MODULATION_BIT2 = 3 -TMDS_CTL3_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_DATA_SEL' -TMDS_CTL3_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL3_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL3_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL3_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL3_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL3_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL3_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL3_DATA_SEL8_BLANK_TIME', - 7: 'TMDS_CTL3_DATA_SEL9_SEL15_RESERVED', -} -TMDS_CTL3_DATA_SEL0_RESERVED = 0 -TMDS_CTL3_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL3_DATA_SEL2_VSYNC = 2 -TMDS_CTL3_DATA_SEL3_RESERVED = 3 -TMDS_CTL3_DATA_SEL4_HSYNC = 4 -TMDS_CTL3_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL3_DATA_SEL8_BLANK_TIME = 6 -TMDS_CTL3_DATA_SEL9_SEL15_RESERVED = 7 -TMDS_CTL3_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_PATTERN_OUT_EN' -TMDS_CTL3_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL3_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL3_PATTERN_OUT_ENABLE', -} -TMDS_CTL3_PATTERN_OUT_DISABLE = 0 -TMDS_CTL3_PATTERN_OUT_ENABLE = 1 -TMDS_CTL3_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL' -TMDS_DATA_SYNCHRONIZATION_DSINTSEL__enumvalues = { - 0: 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_PCLK_TMDS', - 1: 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_TMDS_PLL', -} -TMDS_DATA_SYNCHRONIZATION_DSINTSEL_PCLK_TMDS = 0 -TMDS_DATA_SYNCHRONIZATION_DSINTSEL_TMDS_PLL = 1 -TMDS_DATA_SYNCHRONIZATION_DSINTSEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_PIXEL_ENCODING' -TMDS_PIXEL_ENCODING__enumvalues = { - 0: 'TMDS_PIXEL_ENCODING_444_OR_420', - 1: 'TMDS_PIXEL_ENCODING_422', -} -TMDS_PIXEL_ENCODING_444_OR_420 = 0 -TMDS_PIXEL_ENCODING_422 = 1 -TMDS_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_REG_TEST_OUTPUTA_CNTLA' -TMDS_REG_TEST_OUTPUTA_CNTLA__enumvalues = { - 0: 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA0', - 1: 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA1', - 2: 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA2', - 3: 'TMDS_REG_TEST_OUTPUTA_CNTLA_NA', -} -TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA0 = 0 -TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA1 = 1 -TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA2 = 2 -TMDS_REG_TEST_OUTPUTA_CNTLA_NA = 3 -TMDS_REG_TEST_OUTPUTA_CNTLA = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_REG_TEST_OUTPUTB_CNTLB' -TMDS_REG_TEST_OUTPUTB_CNTLB__enumvalues = { - 0: 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB0', - 1: 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB1', - 2: 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB2', - 3: 'TMDS_REG_TEST_OUTPUTB_CNTLB_NA', -} -TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB0 = 0 -TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB1 = 1 -TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB2 = 2 -TMDS_REG_TEST_OUTPUTB_CNTLB_NA = 3 -TMDS_REG_TEST_OUTPUTB_CNTLB = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_STEREOSYNC_CTL_SEL_REG' -TMDS_STEREOSYNC_CTL_SEL_REG__enumvalues = { - 0: 'TMDS_STEREOSYNC_CTL0', - 1: 'TMDS_STEREOSYNC_CTL1', - 2: 'TMDS_STEREOSYNC_CTL2', - 3: 'TMDS_STEREOSYNC_CTL3', -} -TMDS_STEREOSYNC_CTL0 = 0 -TMDS_STEREOSYNC_CTL1 = 1 -TMDS_STEREOSYNC_CTL2 = 2 -TMDS_STEREOSYNC_CTL3 = 3 -TMDS_STEREOSYNC_CTL_SEL_REG = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_SYNC_PHASE' -TMDS_SYNC_PHASE__enumvalues = { - 0: 'TMDS_NOT_SYNC_PHASE_ON_FRAME_START', - 1: 'TMDS_SYNC_PHASE_ON_FRAME_START', -} -TMDS_NOT_SYNC_PHASE_ON_FRAME_START = 0 -TMDS_SYNC_PHASE_ON_FRAME_START = 1 -TMDS_SYNC_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA' -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA__enumvalues = { - 0: 'TMDS_TRANSMITTER_BYPASS_PLLA_COHERENT', - 1: 'TMDS_TRANSMITTER_BYPASS_PLLA_INCOHERENT', -} -TMDS_TRANSMITTER_BYPASS_PLLA_COHERENT = 0 -TMDS_TRANSMITTER_BYPASS_PLLA_INCOHERENT = 1 -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB' -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB__enumvalues = { - 0: 'TMDS_TRANSMITTER_BYPASS_PLLB_COHERENT', - 1: 'TMDS_TRANSMITTER_BYPASS_PLLB_INCOHERENT', -} -TMDS_TRANSMITTER_BYPASS_PLLB_COHERENT = 0 -TMDS_TRANSMITTER_BYPASS_PLLB_INCOHERENT = 1 -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_IDSCKSELA' -TMDS_TRANSMITTER_CONTROL_IDSCKSELA__enumvalues = { - 0: 'TMDS_TRANSMITTER_IDSCKSELA_USE_IPIXCLK', - 1: 'TMDS_TRANSMITTER_IDSCKSELA_USE_IDCLK', -} -TMDS_TRANSMITTER_IDSCKSELA_USE_IPIXCLK = 0 -TMDS_TRANSMITTER_IDSCKSELA_USE_IDCLK = 1 -TMDS_TRANSMITTER_CONTROL_IDSCKSELA = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_IDSCKSELB' -TMDS_TRANSMITTER_CONTROL_IDSCKSELB__enumvalues = { - 0: 'TMDS_TRANSMITTER_IDSCKSELB_USE_IPIXCLK', - 1: 'TMDS_TRANSMITTER_IDSCKSELB_USE_IDCLK', -} -TMDS_TRANSMITTER_IDSCKSELB_USE_IPIXCLK = 0 -TMDS_TRANSMITTER_IDSCKSELB_USE_IDCLK = 1 -TMDS_TRANSMITTER_CONTROL_IDSCKSELB = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN' -TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN__enumvalues = { - 0: 'TMDS_TRANSMITTER_PLLSEL_BY_HW', - 1: 'TMDS_TRANSMITTER_PLLSEL_OVERWRITE_BY_SW', -} -TMDS_TRANSMITTER_PLLSEL_BY_HW = 0 -TMDS_TRANSMITTER_PLLSEL_OVERWRITE_BY_SW = 1 -TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK' -TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_HPD_NOT_OVERRIDE_PLL_ENABLE', - 1: 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_DISCON', - 2: 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_CON', - 3: 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE', -} -TMDS_TRANSMITTER_HPD_NOT_OVERRIDE_PLL_ENABLE = 0 -TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_DISCON = 1 -TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_CON = 2 -TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE = 3 -TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN' -TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN__enumvalues = { - 0: 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_DISABLE', - 1: 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_ENABLE', -} -TMDS_TRANSMITTER_PLL_PWRUP_SEQ_DISABLE = 0 -TMDS_TRANSMITTER_PLL_PWRUP_SEQ_ENABLE = 1 -TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK' -TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_PLL_NOT_RST_ON_HPD', - 1: 'TMDS_TRANSMITTER_PLL_RST_ON_HPD', -} -TMDS_TRANSMITTER_PLL_NOT_RST_ON_HPD = 0 -TMDS_TRANSMITTER_PLL_RST_ON_HPD = 1 -TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS' -TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS__enumvalues = { - 0: 'TMDS_TRANSMITTER_TDCLK_FROM_TMDS_TDCLK', - 1: 'TMDS_TRANSMITTER_TDCLK_FROM_PADS', -} -TMDS_TRANSMITTER_TDCLK_FROM_TMDS_TDCLK = 0 -TMDS_TRANSMITTER_TDCLK_FROM_PADS = 1 -TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS' -TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS__enumvalues = { - 0: 'TMDS_TRANSMITTER_TMCLK_FROM_TMDS_TMCLK', - 1: 'TMDS_TRANSMITTER_TMCLK_FROM_PADS', -} -TMDS_TRANSMITTER_TMCLK_FROM_TMDS_TMCLK = 0 -TMDS_TRANSMITTER_TMCLK_FROM_PADS = 1 -TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_ENABLE_HPD_MASK' -TMDS_TRANSMITTER_ENABLE_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_HPD_MASK_NOT_OVERRIDE', - 1: 'TMDS_TRANSMITTER_HPD_MASK_OVERRIDE', -} -TMDS_TRANSMITTER_HPD_MASK_NOT_OVERRIDE = 0 -TMDS_TRANSMITTER_HPD_MASK_OVERRIDE = 1 -TMDS_TRANSMITTER_ENABLE_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK' -TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_NOT_OVERRIDE', - 1: 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_OVERRIDE', -} -TMDS_TRANSMITTER_LNKCEN_HPD_MASK_NOT_OVERRIDE = 0 -TMDS_TRANSMITTER_LNKCEN_HPD_MASK_OVERRIDE = 1 -TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK' -TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_NOT_OVERRIDE', - 1: 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_OVERRIDE', -} -TMDS_TRANSMITTER_LNKDEN_HPD_MASK_NOT_OVERRIDE = 0 -TMDS_TRANSMITTER_LNKDEN_HPD_MASK_OVERRIDE = 1 -TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ARB_CONTROL_ARB_PRIORITY' -DP_AUX_ARB_CONTROL_ARB_PRIORITY__enumvalues = { - 0: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__GTC_LS_SW', - 1: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__LS_GTC_SW', - 2: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_LS_GTC', - 3: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_GTC_LS', -} -DP_AUX_ARB_CONTROL_ARB_PRIORITY__GTC_LS_SW = 0 -DP_AUX_ARB_CONTROL_ARB_PRIORITY__LS_GTC_SW = 1 -DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_LS_GTC = 2 -DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_GTC_LS = 3 -DP_AUX_ARB_CONTROL_ARB_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG' -DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG__enumvalues = { - 0: 'DP_AUX_ARB_CONTROL__DONE_NOT_USING_AUX_REG', - 1: 'DP_AUX_ARB_CONTROL__DONE_USING_AUX_REG', -} -DP_AUX_ARB_CONTROL__DONE_NOT_USING_AUX_REG = 0 -DP_AUX_ARB_CONTROL__DONE_USING_AUX_REG = 1 -DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ' -DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ__enumvalues = { - 0: 'DP_AUX_ARB_CONTROL__NOT_USE_AUX_REG_REQ', - 1: 'DP_AUX_ARB_CONTROL__USE_AUX_REG_REQ', -} -DP_AUX_ARB_CONTROL__NOT_USE_AUX_REG_REQ = 0 -DP_AUX_ARB_CONTROL__USE_AUX_REG_REQ = 1 -DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ARB_STATUS' -DP_AUX_ARB_STATUS__enumvalues = { - 0: 'DP_AUX_IDLE', - 1: 'DP_AUX_IN_USE_LS', - 2: 'DP_AUX_IN_USE_GTC', - 3: 'DP_AUX_IN_USE_SW', - 4: 'DP_AUX_IN_USE_PHYWAKE', -} -DP_AUX_IDLE = 0 -DP_AUX_IN_USE_LS = 1 -DP_AUX_IN_USE_GTC = 2 -DP_AUX_IN_USE_SW = 3 -DP_AUX_IN_USE_PHYWAKE = 4 -DP_AUX_ARB_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_CONTROL_HPD_SEL' -DP_AUX_CONTROL_HPD_SEL__enumvalues = { - 0: 'DP_AUX_CONTROL_HPD1_SELECTED', - 1: 'DP_AUX_CONTROL_HPD2_SELECTED', - 2: 'DP_AUX_CONTROL_HPD3_SELECTED', - 3: 'DP_AUX_CONTROL_HPD4_SELECTED', - 4: 'DP_AUX_CONTROL_HPD5_SELECTED', - 5: 'DP_AUX_CONTROL_NO_HPD_SELECTED', -} -DP_AUX_CONTROL_HPD1_SELECTED = 0 -DP_AUX_CONTROL_HPD2_SELECTED = 1 -DP_AUX_CONTROL_HPD3_SELECTED = 2 -DP_AUX_CONTROL_HPD4_SELECTED = 3 -DP_AUX_CONTROL_HPD5_SELECTED = 4 -DP_AUX_CONTROL_NO_HPD_SELECTED = 5 -DP_AUX_CONTROL_HPD_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_CONTROL_TEST_MODE' -DP_AUX_CONTROL_TEST_MODE__enumvalues = { - 0: 'DP_AUX_CONTROL_TEST_MODE_DISABLE', - 1: 'DP_AUX_CONTROL_TEST_MODE_ENABLE', -} -DP_AUX_CONTROL_TEST_MODE_DISABLE = 0 -DP_AUX_CONTROL_TEST_MODE_ENABLE = 1 -DP_AUX_CONTROL_TEST_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DEFINITE_ERR_REACHED_ACK' -DP_AUX_DEFINITE_ERR_REACHED_ACK__enumvalues = { - 0: 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_NOT_ACK', - 1: 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_ACK', -} -ALPHA_DP_AUX_DEFINITE_ERR_REACHED_NOT_ACK = 0 -ALPHA_DP_AUX_DEFINITE_ERR_REACHED_ACK = 1 -DP_AUX_DEFINITE_ERR_REACHED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT' -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 1: 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_PHASE_DETECT', -} -DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_PHASE_DETECT = 0 -DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_PHASE_DETECT = 1 -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START' -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_START', - 1: 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_START', -} -DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_START = 0 -DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_START = 1 -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP' -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_STOP', - 1: 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_STOP', -} -DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_STOP = 0 -DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_STOP = 1 -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN' -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__6_EDGES', - 1: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__10_EDGES', - 2: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__18_EDGES', - 3: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__RESERVED', -} -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__6_EDGES = 0 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__10_EDGES = 1 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__18_EDGES = 2 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__RESERVED = 3 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN' -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__2_HALF_SYMBOLS', - 1: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__4_HALF_SYMBOLS', - 2: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__6_HALF_SYMBOLS', - 3: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__8_HALF_SYMBOLS', -} -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__2_HALF_SYMBOLS = 0 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__4_HALF_SYMBOLS = 1 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__6_HALF_SYMBOLS = 2 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__8_HALF_SYMBOLS = 3 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW' -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO2_PERIOD', - 1: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO4_PERIOD', - 2: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO8_PERIOD', - 3: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO16_PERIOD', - 4: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO32_PERIOD', - 5: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO64_PERIOD', - 6: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO128_PERIOD', - 7: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO256_PERIOD', -} -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO2_PERIOD = 0 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO4_PERIOD = 1 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO8_PERIOD = 2 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO16_PERIOD = 3 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO32_PERIOD = 4 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO64_PERIOD = 5 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO128_PERIOD = 6 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO256_PERIOD = 7 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW' -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO2_PERIOD', - 1: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO4_PERIOD', - 2: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO8_PERIOD', - 3: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO16_PERIOD', - 4: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO32_PERIOD', - 5: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO64_PERIOD', - 6: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO128_PERIOD', - 7: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO256_PERIOD', -} -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO2_PERIOD = 0 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO4_PERIOD = 1 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO8_PERIOD = 2 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO16_PERIOD = 3 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO32_PERIOD = 4 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO64_PERIOD = 5 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO128_PERIOD = 6 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO256_PERIOD = 7 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD' -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__enumvalues = { - 0: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__1to2', - 1: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__3to4', - 2: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__7to8', - 3: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__15to16', - 4: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__31to32', - 5: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__63to64', - 6: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__127to128', - 7: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__255to256', -} -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__1to2 = 0 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__3to4 = 1 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__7to8 = 2 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__15to16 = 3 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__31to32 = 4 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__63to64 = 5 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__127to128 = 6 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__255to256 = 7 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY' -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__enumvalues = { - 0: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__0', - 1: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__16US', - 2: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__32US', - 3: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__64US', - 4: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__128US', - 5: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__256US', -} -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__0 = 0 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__16US = 1 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__32US = 2 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__64US = 3 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__128US = 4 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__256US = 5 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE' -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__enumvalues = { - 0: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__1MHZ', - 1: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__2MHZ', - 2: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__4MHZ', - 3: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__8MHZ', -} -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__1MHZ = 0 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__2MHZ = 1 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__4MHZ = 2 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__8MHZ = 3 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL' -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__enumvalues = { - 0: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__DIVIDED_SYM_CLK', - 1: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__FROM_DCCG_MICROSECOND_REF', -} -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__DIVIDED_SYM_CLK = 0 -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__FROM_DCCG_MICROSECOND_REF = 1 -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ERR_OCCURRED_ACK' -DP_AUX_ERR_OCCURRED_ACK__enumvalues = { - 0: 'DP_AUX_ERR_OCCURRED__NOT_ACK', - 1: 'DP_AUX_ERR_OCCURRED__ACK', -} -DP_AUX_ERR_OCCURRED__NOT_ACK = 0 -DP_AUX_ERR_OCCURRED__ACK = 1 -DP_AUX_ERR_OCCURRED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ' -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_ALLOW_REQ_FROM_OTHER_AUX', - 1: 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ_FROM_OTHER_AUX', -} -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_ALLOW_REQ_FROM_OTHER_AUX = 0 -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ_FROM_OTHER_AUX = 1 -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW' -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__300US', - 1: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__400US', - 2: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__500US', - 3: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__600US', -} -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__300US = 0 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__400US = 1 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__500US = 2 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__600US = 3 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT' -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__4_ATTAMPS', - 1: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__8_ATTAMPS', - 2: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__16_ATTAMPS', - 3: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__RESERVED', -} -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__4_ATTAMPS = 0 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__8_ATTAMPS = 1 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__16_ATTAMPS = 2 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__RESERVED = 3 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN' -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__0', - 1: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__64', - 2: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__128', - 3: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__256', -} -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__0 = 0 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__64 = 1 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__128 = 2 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__256 = 3 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_INT_ACK' -DP_AUX_INT_ACK__enumvalues = { - 0: 'DP_AUX_INT__NOT_ACK', - 1: 'DP_AUX_INT__ACK', -} -DP_AUX_INT__NOT_ACK = 0 -DP_AUX_INT__ACK = 1 -DP_AUX_INT_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_LS_UPDATE_ACK' -DP_AUX_LS_UPDATE_ACK__enumvalues = { - 0: 'DP_AUX_INT_LS_UPDATE_NOT_ACK', - 1: 'DP_AUX_INT_LS_UPDATE_ACK', -} -DP_AUX_INT_LS_UPDATE_NOT_ACK = 0 -DP_AUX_INT_LS_UPDATE_ACK = 1 -DP_AUX_LS_UPDATE_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_PHY_WAKE_PRIORITY' -DP_AUX_PHY_WAKE_PRIORITY__enumvalues = { - 0: 'DP_AUX_PHY_WAKE_HIGH_PRIORITY', - 1: 'DP_AUX_PHY_WAKE_LOW_PRIORITY', -} -DP_AUX_PHY_WAKE_HIGH_PRIORITY = 0 -DP_AUX_PHY_WAKE_LOW_PRIORITY = 1 -DP_AUX_PHY_WAKE_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_POTENTIAL_ERR_REACHED_ACK' -DP_AUX_POTENTIAL_ERR_REACHED_ACK__enumvalues = { - 0: 'DP_AUX_POTENTIAL_ERR_REACHED__NOT_ACK', - 1: 'DP_AUX_POTENTIAL_ERR_REACHED__ACK', -} -DP_AUX_POTENTIAL_ERR_REACHED__NOT_ACK = 0 -DP_AUX_POTENTIAL_ERR_REACHED__ACK = 1 -DP_AUX_POTENTIAL_ERR_REACHED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_RESET' -DP_AUX_RESET__enumvalues = { - 0: 'DP_AUX_RESET_DEASSERTED', - 1: 'DP_AUX_RESET_ASSERTED', -} -DP_AUX_RESET_DEASSERTED = 0 -DP_AUX_RESET_ASSERTED = 1 -DP_AUX_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_RESET_DONE' -DP_AUX_RESET_DONE__enumvalues = { - 0: 'DP_AUX_RESET_SEQUENCE_NOT_DONE', - 1: 'DP_AUX_RESET_SEQUENCE_DONE', -} -DP_AUX_RESET_SEQUENCE_NOT_DONE = 0 -DP_AUX_RESET_SEQUENCE_DONE = 1 -DP_AUX_RESET_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_RX_TIMEOUT_LEN_MUL' -DP_AUX_RX_TIMEOUT_LEN_MUL__enumvalues = { - 0: 'DP_AUX_RX_TIMEOUT_LEN_NO_MUL', - 1: 'DP_AUX_RX_TIMEOUT_LEN_MUL_2', - 2: 'DP_AUX_RX_TIMEOUT_LEN_MUL_4', - 3: 'DP_AUX_RX_TIMEOUT_LEN_MUL_8', -} -DP_AUX_RX_TIMEOUT_LEN_NO_MUL = 0 -DP_AUX_RX_TIMEOUT_LEN_MUL_2 = 1 -DP_AUX_RX_TIMEOUT_LEN_MUL_4 = 2 -DP_AUX_RX_TIMEOUT_LEN_MUL_8 = 3 -DP_AUX_RX_TIMEOUT_LEN_MUL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_SW_CONTROL_LS_READ_TRIG' -DP_AUX_SW_CONTROL_LS_READ_TRIG__enumvalues = { - 0: 'DP_AUX_SW_CONTROL_LS_READ__NOT_TRIG', - 1: 'DP_AUX_SW_CONTROL_LS_READ__TRIG', -} -DP_AUX_SW_CONTROL_LS_READ__NOT_TRIG = 0 -DP_AUX_SW_CONTROL_LS_READ__TRIG = 1 -DP_AUX_SW_CONTROL_LS_READ_TRIG = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_SW_CONTROL_SW_GO' -DP_AUX_SW_CONTROL_SW_GO__enumvalues = { - 0: 'DP_AUX_SW_CONTROL_SW__NOT_GO', - 1: 'DP_AUX_SW_CONTROL_SW__GO', -} -DP_AUX_SW_CONTROL_SW__NOT_GO = 0 -DP_AUX_SW_CONTROL_SW__GO = 1 -DP_AUX_SW_CONTROL_SW_GO = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_TX_PRECHARGE_LEN_MUL' -DP_AUX_TX_PRECHARGE_LEN_MUL__enumvalues = { - 0: 'DP_AUX_TX_PRECHARGE_LEN_NO_MUL', - 1: 'DP_AUX_TX_PRECHARGE_LEN_MUL_2', - 2: 'DP_AUX_TX_PRECHARGE_LEN_MUL_4', - 3: 'DP_AUX_TX_PRECHARGE_LEN_MUL_8', -} -DP_AUX_TX_PRECHARGE_LEN_NO_MUL = 0 -DP_AUX_TX_PRECHARGE_LEN_MUL_2 = 1 -DP_AUX_TX_PRECHARGE_LEN_MUL_4 = 2 -DP_AUX_TX_PRECHARGE_LEN_MUL_8 = 3 -DP_AUX_TX_PRECHARGE_LEN_MUL = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ACK' -DOUT_I2C_ACK__enumvalues = { - 0: 'DOUT_I2C_NO_ACK', - 1: 'DOUT_I2C_ACK_TO_CLEAN', -} -DOUT_I2C_NO_ACK = 0 -DOUT_I2C_ACK_TO_CLEAN = 1 -DOUT_I2C_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_ABORT_XFER' -DOUT_I2C_ARBITRATION_ABORT_XFER__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_NOT_ABORT_CURRENT_TRANSFER', - 1: 'DOUT_I2C_ARBITRATION_ABORT_CURRENT_TRANSFER', -} -DOUT_I2C_ARBITRATION_NOT_ABORT_CURRENT_TRANSFER = 0 -DOUT_I2C_ARBITRATION_ABORT_CURRENT_TRANSFER = 1 -DOUT_I2C_ARBITRATION_ABORT_XFER = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG' -DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_DONE__NOT_USING_I2C_REG', - 1: 'DOUT_I2C_ARBITRATION_DONE__USING_I2C_REG', -} -DOUT_I2C_ARBITRATION_DONE__NOT_USING_I2C_REG = 0 -DOUT_I2C_ARBITRATION_DONE__USING_I2C_REG = 1 -DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO' -DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_SW_QUEUE_ENABLED', - 1: 'DOUT_I2C_ARBITRATION_SW_QUEUE_DISABLED', -} -DOUT_I2C_ARBITRATION_SW_QUEUE_ENABLED = 0 -DOUT_I2C_ARBITRATION_SW_QUEUE_DISABLED = 1 -DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_SW_PRIORITY' -DOUT_I2C_ARBITRATION_SW_PRIORITY__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_NORMAL', - 1: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_HIGH', - 2: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_0_RESERVED', - 3: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_1_RESERVED', -} -DOUT_I2C_ARBITRATION_SW_PRIORITY_NORMAL = 0 -DOUT_I2C_ARBITRATION_SW_PRIORITY_HIGH = 1 -DOUT_I2C_ARBITRATION_SW_PRIORITY_0_RESERVED = 2 -DOUT_I2C_ARBITRATION_SW_PRIORITY_1_RESERVED = 3 -DOUT_I2C_ARBITRATION_SW_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ' -DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION__NOT_USE_I2C_REG_REQ', - 1: 'DOUT_I2C_ARBITRATION__USE_I2C_REG_REQ', -} -DOUT_I2C_ARBITRATION__NOT_USE_I2C_REG_REQ = 0 -DOUT_I2C_ARBITRATION__USE_I2C_REG_REQ = 1 -DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_DBG_REF_SEL' -DOUT_I2C_CONTROL_DBG_REF_SEL__enumvalues = { - 0: 'DOUT_I2C_CONTROL_NORMAL_DEBUG', - 1: 'DOUT_I2C_CONTROL_FAST_REFERENCE_DEBUG', -} -DOUT_I2C_CONTROL_NORMAL_DEBUG = 0 -DOUT_I2C_CONTROL_FAST_REFERENCE_DEBUG = 1 -DOUT_I2C_CONTROL_DBG_REF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_DDC_SELECT' -DOUT_I2C_CONTROL_DDC_SELECT__enumvalues = { - 0: 'DOUT_I2C_CONTROL_SELECT_DDC1', - 1: 'DOUT_I2C_CONTROL_SELECT_DDC2', - 2: 'DOUT_I2C_CONTROL_SELECT_DDC3', - 3: 'DOUT_I2C_CONTROL_SELECT_DDC4', - 4: 'DOUT_I2C_CONTROL_SELECT_DDC5', - 5: 'DOUT_I2C_CONTROL_SELECT_DDCVGA', -} -DOUT_I2C_CONTROL_SELECT_DDC1 = 0 -DOUT_I2C_CONTROL_SELECT_DDC2 = 1 -DOUT_I2C_CONTROL_SELECT_DDC3 = 2 -DOUT_I2C_CONTROL_SELECT_DDC4 = 3 -DOUT_I2C_CONTROL_SELECT_DDC5 = 4 -DOUT_I2C_CONTROL_SELECT_DDCVGA = 5 -DOUT_I2C_CONTROL_DDC_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_GO' -DOUT_I2C_CONTROL_GO__enumvalues = { - 0: 'DOUT_I2C_CONTROL_STOP_TRANSFER', - 1: 'DOUT_I2C_CONTROL_START_TRANSFER', -} -DOUT_I2C_CONTROL_STOP_TRANSFER = 0 -DOUT_I2C_CONTROL_START_TRANSFER = 1 -DOUT_I2C_CONTROL_GO = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_SEND_RESET' -DOUT_I2C_CONTROL_SEND_RESET__enumvalues = { - 0: 'DOUT_I2C_CONTROL__NOT_SEND_RESET', - 1: 'DOUT_I2C_CONTROL__SEND_RESET', -} -DOUT_I2C_CONTROL__NOT_SEND_RESET = 0 -DOUT_I2C_CONTROL__SEND_RESET = 1 -DOUT_I2C_CONTROL_SEND_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_SEND_RESET_LENGTH' -DOUT_I2C_CONTROL_SEND_RESET_LENGTH__enumvalues = { - 0: 'DOUT_I2C_CONTROL__SEND_RESET_LENGTH_9', - 1: 'DOUT_I2C_CONTROL__SEND_RESET_LENGTH_10', -} -DOUT_I2C_CONTROL__SEND_RESET_LENGTH_9 = 0 -DOUT_I2C_CONTROL__SEND_RESET_LENGTH_10 = 1 -DOUT_I2C_CONTROL_SEND_RESET_LENGTH = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_SOFT_RESET' -DOUT_I2C_CONTROL_SOFT_RESET__enumvalues = { - 0: 'DOUT_I2C_CONTROL_NOT_RESET_I2C_CONTROLLER', - 1: 'DOUT_I2C_CONTROL_RESET_I2C_CONTROLLER', -} -DOUT_I2C_CONTROL_NOT_RESET_I2C_CONTROLLER = 0 -DOUT_I2C_CONTROL_RESET_I2C_CONTROLLER = 1 -DOUT_I2C_CONTROL_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_SW_STATUS_RESET' -DOUT_I2C_CONTROL_SW_STATUS_RESET__enumvalues = { - 0: 'DOUT_I2C_CONTROL_NOT_RESET_SW_STATUS', - 1: 'DOUT_I2C_CONTROL_RESET_SW_STATUS', -} -DOUT_I2C_CONTROL_NOT_RESET_SW_STATUS = 0 -DOUT_I2C_CONTROL_RESET_SW_STATUS = 1 -DOUT_I2C_CONTROL_SW_STATUS_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_TRANSACTION_COUNT' -DOUT_I2C_CONTROL_TRANSACTION_COUNT__enumvalues = { - 0: 'DOUT_I2C_CONTROL_TRANS0', - 1: 'DOUT_I2C_CONTROL_TRANS0_TRANS1', - 2: 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2', - 3: 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2_TRANS3', -} -DOUT_I2C_CONTROL_TRANS0 = 0 -DOUT_I2C_CONTROL_TRANS0_TRANS1 = 1 -DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2 = 2 -DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2_TRANS3 = 3 -DOUT_I2C_CONTROL_TRANSACTION_COUNT = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DATA_INDEX_WRITE' -DOUT_I2C_DATA_INDEX_WRITE__enumvalues = { - 0: 'DOUT_I2C_DATA__NOT_INDEX_WRITE', - 1: 'DOUT_I2C_DATA__INDEX_WRITE', -} -DOUT_I2C_DATA__NOT_INDEX_WRITE = 0 -DOUT_I2C_DATA__INDEX_WRITE = 1 -DOUT_I2C_DATA_INDEX_WRITE = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN' -DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_BY_EXTERNAL_RESISTOR', - 1: 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SCL', -} -DOUT_I2C_DDC_SETUP_CLK_DRIVE_BY_EXTERNAL_RESISTOR = 0 -DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SCL = 1 -DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN' -DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_BY_EXTERNAL_RESISTOR', - 1: 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SDA', -} -DOUT_I2C_DDC_SETUP_DATA_DRIVE_BY_EXTERNAL_RESISTOR = 0 -DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SDA = 1 -DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL' -DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_10MCLKS', - 1: 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_20MCLKS', -} -DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_10MCLKS = 0 -DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_20MCLKS = 1 -DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE' -DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_EDID_DETECT_CONNECT', - 1: 'DOUT_I2C_DDC_SETUP_EDID_DETECT_DISCONNECT', -} -DOUT_I2C_DDC_SETUP_EDID_DETECT_CONNECT = 0 -DOUT_I2C_DDC_SETUP_EDID_DETECT_DISCONNECT = 1 -DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SPEED_THRESHOLD' -DOUT_I2C_DDC_SPEED_THRESHOLD__enumvalues = { - 0: 'DOUT_I2C_DDC_SPEED_THRESHOLD_BIG_THAN_ZERO', - 1: 'DOUT_I2C_DDC_SPEED_THRESHOLD_QUATER_OF_TOTAL_SAMPLE', - 2: 'DOUT_I2C_DDC_SPEED_THRESHOLD_HALF_OF_TOTAL_SAMPLE', - 3: 'DOUT_I2C_DDC_SPEED_THRESHOLD_THREE_QUATERS_OF_TOTAL_SAMPLE', -} -DOUT_I2C_DDC_SPEED_THRESHOLD_BIG_THAN_ZERO = 0 -DOUT_I2C_DDC_SPEED_THRESHOLD_QUATER_OF_TOTAL_SAMPLE = 1 -DOUT_I2C_DDC_SPEED_THRESHOLD_HALF_OF_TOTAL_SAMPLE = 2 -DOUT_I2C_DDC_SPEED_THRESHOLD_THREE_QUATERS_OF_TOTAL_SAMPLE = 3 -DOUT_I2C_DDC_SPEED_THRESHOLD = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET' -DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET__enumvalues = { - 0: 'DOUT_I2C_EDID_NOT_SEND_RESET_BEFORE_EDID_READ_TRACTION', - 1: 'DOUT_I2C_EDID_SEND_RESET_BEFORE_EDID_READ_TRACTION', -} -DOUT_I2C_EDID_NOT_SEND_RESET_BEFORE_EDID_READ_TRACTION = 0 -DOUT_I2C_EDID_SEND_RESET_BEFORE_EDID_READ_TRACTION = 1 -DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE' -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__enumvalues = { - 0: 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__LEVEL', - 1: 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__PULSE', -} -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__LEVEL = 0 -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__PULSE = 1 -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_TRANSACTION_STOP_ON_NACK' -DOUT_I2C_TRANSACTION_STOP_ON_NACK__enumvalues = { - 0: 'DOUT_I2C_TRANSACTION_STOP_CURRENT_TRANS', - 1: 'DOUT_I2C_TRANSACTION_STOP_ALL_TRANS', -} -DOUT_I2C_TRANSACTION_STOP_CURRENT_TRANS = 0 -DOUT_I2C_TRANSACTION_STOP_ALL_TRANS = 1 -DOUT_I2C_TRANSACTION_STOP_ON_NACK = ctypes.c_uint32 # enum - -# values for enumeration 'CLOCK_GATING_EN' -CLOCK_GATING_EN__enumvalues = { - 0: 'CLOCK_GATING_ENABLE', - 1: 'CLOCK_GATING_DISABLE', -} -CLOCK_GATING_ENABLE = 0 -CLOCK_GATING_DISABLE = 1 -CLOCK_GATING_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DAC_MUX_SELECT' -DAC_MUX_SELECT__enumvalues = { - 0: 'DAC_MUX_SELECT_DACA', - 1: 'DAC_MUX_SELECT_DACB', -} -DAC_MUX_SELECT_DACA = 0 -DAC_MUX_SELECT_DACB = 1 -DAC_MUX_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_DIS_CTRL' -DIOMEM_PWR_DIS_CTRL__enumvalues = { - 0: 'DIOMEM_ENABLE_MEM_PWR_CTRL', - 1: 'DIOMEM_DISABLE_MEM_PWR_CTRL', -} -DIOMEM_ENABLE_MEM_PWR_CTRL = 0 -DIOMEM_DISABLE_MEM_PWR_CTRL = 1 -DIOMEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_FORCE_CTRL' -DIOMEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'DIOMEM_NO_FORCE_REQUEST', - 1: 'DIOMEM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'DIOMEM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'DIOMEM_FORCE_SHUT_DOWN_REQUEST', -} -DIOMEM_NO_FORCE_REQUEST = 0 -DIOMEM_FORCE_LIGHT_SLEEP_REQUEST = 1 -DIOMEM_FORCE_DEEP_SLEEP_REQUEST = 2 -DIOMEM_FORCE_SHUT_DOWN_REQUEST = 3 -DIOMEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_FORCE_CTRL2' -DIOMEM_PWR_FORCE_CTRL2__enumvalues = { - 0: 'DIOMEM_NO_FORCE_REQ', - 1: 'DIOMEM_FORCE_LIGHT_SLEEP_REQ', -} -DIOMEM_NO_FORCE_REQ = 0 -DIOMEM_FORCE_LIGHT_SLEEP_REQ = 1 -DIOMEM_PWR_FORCE_CTRL2 = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_SEL_CTRL' -DIOMEM_PWR_SEL_CTRL__enumvalues = { - 0: 'DIOMEM_DYNAMIC_SHUT_DOWN_ENABLE', - 1: 'DIOMEM_DYNAMIC_DEEP_SLEEP_ENABLE', - 2: 'DIOMEM_DYNAMIC_LIGHT_SLEEP_ENABLE', -} -DIOMEM_DYNAMIC_SHUT_DOWN_ENABLE = 0 -DIOMEM_DYNAMIC_DEEP_SLEEP_ENABLE = 1 -DIOMEM_DYNAMIC_LIGHT_SLEEP_ENABLE = 2 -DIOMEM_PWR_SEL_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_SEL_CTRL2' -DIOMEM_PWR_SEL_CTRL2__enumvalues = { - 0: 'DIOMEM_DYNAMIC_DEEP_SLEEP_EN', - 1: 'DIOMEM_DYNAMIC_LIGHT_SLEEP_EN', -} -DIOMEM_DYNAMIC_DEEP_SLEEP_EN = 0 -DIOMEM_DYNAMIC_LIGHT_SLEEP_EN = 1 -DIOMEM_PWR_SEL_CTRL2 = ctypes.c_uint32 # enum - -# values for enumeration 'DIO_DBG_BLOCK_SEL' -DIO_DBG_BLOCK_SEL__enumvalues = { - 0: 'DIO_DBG_BLOCK_SEL_DIO', - 11: 'DIO_DBG_BLOCK_SEL_DIGFE_A', - 12: 'DIO_DBG_BLOCK_SEL_DIGFE_B', - 13: 'DIO_DBG_BLOCK_SEL_DIGFE_C', - 14: 'DIO_DBG_BLOCK_SEL_DIGFE_D', - 15: 'DIO_DBG_BLOCK_SEL_DIGFE_E', - 18: 'DIO_DBG_BLOCK_SEL_DIGA', - 19: 'DIO_DBG_BLOCK_SEL_DIGB', - 20: 'DIO_DBG_BLOCK_SEL_DIGC', - 21: 'DIO_DBG_BLOCK_SEL_DIGD', - 22: 'DIO_DBG_BLOCK_SEL_DIGE', - 25: 'DIO_DBG_BLOCK_SEL_DPFE_A', - 26: 'DIO_DBG_BLOCK_SEL_DPFE_B', - 27: 'DIO_DBG_BLOCK_SEL_DPFE_C', - 28: 'DIO_DBG_BLOCK_SEL_DPFE_D', - 29: 'DIO_DBG_BLOCK_SEL_DPFE_E', - 32: 'DIO_DBG_BLOCK_SEL_DPA', - 33: 'DIO_DBG_BLOCK_SEL_DPB', - 34: 'DIO_DBG_BLOCK_SEL_DPC', - 35: 'DIO_DBG_BLOCK_SEL_DPD', - 36: 'DIO_DBG_BLOCK_SEL_DPE', - 39: 'DIO_DBG_BLOCK_SEL_AUX0', - 40: 'DIO_DBG_BLOCK_SEL_AUX1', - 41: 'DIO_DBG_BLOCK_SEL_AUX2', - 42: 'DIO_DBG_BLOCK_SEL_AUX3', - 43: 'DIO_DBG_BLOCK_SEL_AUX4', - 45: 'DIO_DBG_BLOCK_SEL_PERFMON_DIO', - 46: 'DIO_DBG_BLOCK_SEL_RESERVED', -} -DIO_DBG_BLOCK_SEL_DIO = 0 -DIO_DBG_BLOCK_SEL_DIGFE_A = 11 -DIO_DBG_BLOCK_SEL_DIGFE_B = 12 -DIO_DBG_BLOCK_SEL_DIGFE_C = 13 -DIO_DBG_BLOCK_SEL_DIGFE_D = 14 -DIO_DBG_BLOCK_SEL_DIGFE_E = 15 -DIO_DBG_BLOCK_SEL_DIGA = 18 -DIO_DBG_BLOCK_SEL_DIGB = 19 -DIO_DBG_BLOCK_SEL_DIGC = 20 -DIO_DBG_BLOCK_SEL_DIGD = 21 -DIO_DBG_BLOCK_SEL_DIGE = 22 -DIO_DBG_BLOCK_SEL_DPFE_A = 25 -DIO_DBG_BLOCK_SEL_DPFE_B = 26 -DIO_DBG_BLOCK_SEL_DPFE_C = 27 -DIO_DBG_BLOCK_SEL_DPFE_D = 28 -DIO_DBG_BLOCK_SEL_DPFE_E = 29 -DIO_DBG_BLOCK_SEL_DPA = 32 -DIO_DBG_BLOCK_SEL_DPB = 33 -DIO_DBG_BLOCK_SEL_DPC = 34 -DIO_DBG_BLOCK_SEL_DPD = 35 -DIO_DBG_BLOCK_SEL_DPE = 36 -DIO_DBG_BLOCK_SEL_AUX0 = 39 -DIO_DBG_BLOCK_SEL_AUX1 = 40 -DIO_DBG_BLOCK_SEL_AUX2 = 41 -DIO_DBG_BLOCK_SEL_AUX3 = 42 -DIO_DBG_BLOCK_SEL_AUX4 = 43 -DIO_DBG_BLOCK_SEL_PERFMON_DIO = 45 -DIO_DBG_BLOCK_SEL_RESERVED = 46 -DIO_DBG_BLOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIO_HDMI_RXSTATUS_TIMER_CONTROL_DIO_HDMI_RXSTATUS_TIMER_TYPE' -DIO_HDMI_RXSTATUS_TIMER_CONTROL_DIO_HDMI_RXSTATUS_TIMER_TYPE__enumvalues = { - 0: 'DIO_HDMI_RXSTATUS_TIMER_TYPE_LEVEL', - 1: 'DIO_HDMI_RXSTATUS_TIMER_TYPE_PULSE', -} -DIO_HDMI_RXSTATUS_TIMER_TYPE_LEVEL = 0 -DIO_HDMI_RXSTATUS_TIMER_TYPE_PULSE = 1 -DIO_HDMI_RXSTATUS_TIMER_CONTROL_DIO_HDMI_RXSTATUS_TIMER_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE' -DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE__enumvalues = { - 0: 'DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE_0', - 1: 'DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE_1', -} -DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE_0 = 0 -DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE_1 = 1 -DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DIO_DCN_ACTIVE_STATUS' -ENUM_DIO_DCN_ACTIVE_STATUS__enumvalues = { - 0: 'ENUM_DCN_NOT_ACTIVE', - 1: 'ENUM_DCN_ACTIVE', -} -ENUM_DCN_NOT_ACTIVE = 0 -ENUM_DCN_ACTIVE = 1 -ENUM_DIO_DCN_ACTIVE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_STEREOSYNC_SEL' -GENERIC_STEREOSYNC_SEL__enumvalues = { - 0: 'GENERIC_STEREOSYNC_SEL_D1', - 1: 'GENERIC_STEREOSYNC_SEL_D2', - 2: 'GENERIC_STEREOSYNC_SEL_D3', - 3: 'GENERIC_STEREOSYNC_SEL_D4', - 4: 'GENERIC_STEREOSYNC_SEL_RESERVED', -} -GENERIC_STEREOSYNC_SEL_D1 = 0 -GENERIC_STEREOSYNC_SEL_D2 = 1 -GENERIC_STEREOSYNC_SEL_D3 = 2 -GENERIC_STEREOSYNC_SEL_D4 = 3 -GENERIC_STEREOSYNC_SEL_RESERVED = 4 -GENERIC_STEREOSYNC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PM_ASSERT_RESET' -PM_ASSERT_RESET__enumvalues = { - 0: 'PM_ASSERT_RESET_0', - 1: 'PM_ASSERT_RESET_1', -} -PM_ASSERT_RESET_0 = 0 -PM_ASSERT_RESET_1 = 1 -PM_ASSERT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'SOFT_RESET' -SOFT_RESET__enumvalues = { - 0: 'SOFT_RESET_0', - 1: 'SOFT_RESET_1', -} -SOFT_RESET_0 = 0 -SOFT_RESET_1 = 1 -SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_MUX_SELECT' -TMDS_MUX_SELECT__enumvalues = { - 0: 'TMDS_MUX_SELECT_B', - 1: 'TMDS_MUX_SELECT_G', - 2: 'TMDS_MUX_SELECT_R', - 3: 'TMDS_MUX_SELECT_RESERVED', -} -TMDS_MUX_SELECT_B = 0 -TMDS_MUX_SELECT_G = 1 -TMDS_MUX_SELECT_R = 2 -TMDS_MUX_SELECT_RESERVED = 3 -TMDS_MUX_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DME_MEM_POWER_STATE_ENUM' -DME_MEM_POWER_STATE_ENUM__enumvalues = { - 0: 'DME_MEM_POWER_STATE_ENUM_ON', - 1: 'DME_MEM_POWER_STATE_ENUM_LS', - 2: 'DME_MEM_POWER_STATE_ENUM_DS', - 3: 'DME_MEM_POWER_STATE_ENUM_SD', -} -DME_MEM_POWER_STATE_ENUM_ON = 0 -DME_MEM_POWER_STATE_ENUM_LS = 1 -DME_MEM_POWER_STATE_ENUM_DS = 2 -DME_MEM_POWER_STATE_ENUM_SD = 3 -DME_MEM_POWER_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DME_MEM_PWR_DIS_CTRL' -DME_MEM_PWR_DIS_CTRL__enumvalues = { - 0: 'DME_MEM_ENABLE_MEM_PWR_CTRL', - 1: 'DME_MEM_DISABLE_MEM_PWR_CTRL', -} -DME_MEM_ENABLE_MEM_PWR_CTRL = 0 -DME_MEM_DISABLE_MEM_PWR_CTRL = 1 -DME_MEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'DME_MEM_PWR_FORCE_CTRL' -DME_MEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'DME_MEM_NO_FORCE_REQUEST', - 1: 'DME_MEM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'DME_MEM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'DME_MEM_FORCE_SHUT_DOWN_REQUEST', -} -DME_MEM_NO_FORCE_REQUEST = 0 -DME_MEM_FORCE_LIGHT_SLEEP_REQUEST = 1 -DME_MEM_FORCE_DEEP_SLEEP_REQUEST = 2 -DME_MEM_FORCE_SHUT_DOWN_REQUEST = 3 -DME_MEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'METADATA_HUBP_SEL' -METADATA_HUBP_SEL__enumvalues = { - 0: 'METADATA_HUBP_SEL_0', - 1: 'METADATA_HUBP_SEL_1', - 2: 'METADATA_HUBP_SEL_2', - 3: 'METADATA_HUBP_SEL_3', - 4: 'METADATA_HUBP_SEL_RESERVED', -} -METADATA_HUBP_SEL_0 = 0 -METADATA_HUBP_SEL_1 = 1 -METADATA_HUBP_SEL_2 = 2 -METADATA_HUBP_SEL_3 = 3 -METADATA_HUBP_SEL_RESERVED = 4 -METADATA_HUBP_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'METADATA_STREAM_TYPE_SEL' -METADATA_STREAM_TYPE_SEL__enumvalues = { - 0: 'METADATA_STREAM_DP', - 1: 'METADATA_STREAM_DVE', -} -METADATA_STREAM_DP = 0 -METADATA_STREAM_DVE = 1 -METADATA_STREAM_TYPE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'VPG_MEM_PWR_DIS_CTRL' -VPG_MEM_PWR_DIS_CTRL__enumvalues = { - 0: 'VPG_MEM_ENABLE_MEM_PWR_CTRL', - 1: 'VPG_MEM_DISABLE_MEM_PWR_CTRL', -} -VPG_MEM_ENABLE_MEM_PWR_CTRL = 0 -VPG_MEM_DISABLE_MEM_PWR_CTRL = 1 -VPG_MEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'VPG_MEM_PWR_FORCE_CTRL' -VPG_MEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'VPG_MEM_NO_FORCE_REQ', - 1: 'VPG_MEM_FORCE_LIGHT_SLEEP_REQ', -} -VPG_MEM_NO_FORCE_REQ = 0 -VPG_MEM_FORCE_LIGHT_SLEEP_REQ = 1 -VPG_MEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_ACP_TYPE' -AFMT_ACP_TYPE__enumvalues = { - 0: 'ACP_TYPE_GENERIC_AUDIO', - 1: 'ACP_TYPE_ICE60958_AUDIO', - 2: 'ACP_TYPE_DVD_AUDIO', - 3: 'ACP_TYPE_SUPER_AUDIO_CD', -} -ACP_TYPE_GENERIC_AUDIO = 0 -ACP_TYPE_ICE60958_AUDIO = 1 -ACP_TYPE_DVD_AUDIO = 2 -ACP_TYPE_SUPER_AUDIO_CD = 3 -AFMT_ACP_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_CRC_CONTROL_CH_SEL' -AFMT_AUDIO_CRC_CONTROL_CH_SEL__enumvalues = { - 0: 'AFMT_AUDIO_CRC_CH0_SIG', - 1: 'AFMT_AUDIO_CRC_CH1_SIG', - 2: 'AFMT_AUDIO_CRC_CH2_SIG', - 3: 'AFMT_AUDIO_CRC_CH3_SIG', - 4: 'AFMT_AUDIO_CRC_CH4_SIG', - 5: 'AFMT_AUDIO_CRC_CH5_SIG', - 6: 'AFMT_AUDIO_CRC_CH6_SIG', - 7: 'AFMT_AUDIO_CRC_CH7_SIG', - 8: 'AFMT_AUDIO_CRC_RESERVED_8', - 9: 'AFMT_AUDIO_CRC_RESERVED_9', - 10: 'AFMT_AUDIO_CRC_RESERVED_10', - 11: 'AFMT_AUDIO_CRC_RESERVED_11', - 12: 'AFMT_AUDIO_CRC_RESERVED_12', - 13: 'AFMT_AUDIO_CRC_RESERVED_13', - 14: 'AFMT_AUDIO_CRC_RESERVED_14', - 15: 'AFMT_AUDIO_CRC_AUDIO_SAMPLE_COUNT', -} -AFMT_AUDIO_CRC_CH0_SIG = 0 -AFMT_AUDIO_CRC_CH1_SIG = 1 -AFMT_AUDIO_CRC_CH2_SIG = 2 -AFMT_AUDIO_CRC_CH3_SIG = 3 -AFMT_AUDIO_CRC_CH4_SIG = 4 -AFMT_AUDIO_CRC_CH5_SIG = 5 -AFMT_AUDIO_CRC_CH6_SIG = 6 -AFMT_AUDIO_CRC_CH7_SIG = 7 -AFMT_AUDIO_CRC_RESERVED_8 = 8 -AFMT_AUDIO_CRC_RESERVED_9 = 9 -AFMT_AUDIO_CRC_RESERVED_10 = 10 -AFMT_AUDIO_CRC_RESERVED_11 = 11 -AFMT_AUDIO_CRC_RESERVED_12 = 12 -AFMT_AUDIO_CRC_RESERVED_13 = 13 -AFMT_AUDIO_CRC_RESERVED_14 = 14 -AFMT_AUDIO_CRC_AUDIO_SAMPLE_COUNT = 15 -AFMT_AUDIO_CRC_CONTROL_CH_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_CRC_CONTROL_CONT' -AFMT_AUDIO_CRC_CONTROL_CONT__enumvalues = { - 0: 'AFMT_AUDIO_CRC_ONESHOT', - 1: 'AFMT_AUDIO_CRC_AUTO_RESTART', -} -AFMT_AUDIO_CRC_ONESHOT = 0 -AFMT_AUDIO_CRC_AUTO_RESTART = 1 -AFMT_AUDIO_CRC_CONTROL_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_CRC_CONTROL_SOURCE' -AFMT_AUDIO_CRC_CONTROL_SOURCE__enumvalues = { - 0: 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_INPUT', - 1: 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_OUTPUT', -} -AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_INPUT = 0 -AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_OUTPUT = 1 -AFMT_AUDIO_CRC_CONTROL_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD' -AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD__enumvalues = { - 0: 'AFMT_AUDIO_LAYOUT_DETERMINED_BY_AZ_AUDIO_CHANNEL_STATUS', - 1: 'AFMT_AUDIO_LAYOUT_OVRD_BY_REGISTER', -} -AFMT_AUDIO_LAYOUT_DETERMINED_BY_AZ_AUDIO_CHANNEL_STATUS = 0 -AFMT_AUDIO_LAYOUT_OVRD_BY_REGISTER = 1 -AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND' -AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND__enumvalues = { - 0: 'AFMT_AUDIO_PACKET_SENT_DISABLED', - 1: 'AFMT_AUDIO_PACKET_SENT_ENABLED', -} -AFMT_AUDIO_PACKET_SENT_DISABLED = 0 -AFMT_AUDIO_PACKET_SENT_ENABLED = 1 -AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS' -AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS__enumvalues = { - 0: 'AFMT_NOT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED_RESERVED', - 1: 'AFMT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED', -} -AFMT_NOT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED_RESERVED = 0 -AFMT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED = 1 -AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_SRC_CONTROL_SELECT' -AFMT_AUDIO_SRC_CONTROL_SELECT__enumvalues = { - 0: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM0', - 1: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM1', - 2: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM2', - 3: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM3', - 4: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM4', - 5: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM5', -} -AFMT_AUDIO_SRC_FROM_AZ_STREAM0 = 0 -AFMT_AUDIO_SRC_FROM_AZ_STREAM1 = 1 -AFMT_AUDIO_SRC_FROM_AZ_STREAM2 = 2 -AFMT_AUDIO_SRC_FROM_AZ_STREAM3 = 3 -AFMT_AUDIO_SRC_FROM_AZ_STREAM4 = 4 -AFMT_AUDIO_SRC_FROM_AZ_STREAM5 = 5 -AFMT_AUDIO_SRC_CONTROL_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_HDMI_AUDIO_SEND_MAX_PACKETS' -AFMT_HDMI_AUDIO_SEND_MAX_PACKETS__enumvalues = { - 0: 'HDMI_NOT_SEND_MAX_AUDIO_PACKETS', - 1: 'HDMI_SEND_MAX_AUDIO_PACKETS', -} -HDMI_NOT_SEND_MAX_AUDIO_PACKETS = 0 -HDMI_SEND_MAX_AUDIO_PACKETS = 1 -AFMT_HDMI_AUDIO_SEND_MAX_PACKETS = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE' -AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE__enumvalues = { - 0: 'AFMT_INFOFRAME_SOURCE_FROM_AZALIA_BLOCK', - 1: 'AFMT_INFOFRAME_SOURCE_FROM_AFMT_REGISTERS', -} -AFMT_INFOFRAME_SOURCE_FROM_AZALIA_BLOCK = 0 -AFMT_INFOFRAME_SOURCE_FROM_AFMT_REGISTERS = 1 -AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_INTERRUPT_STATUS_CHG_MASK' -AFMT_INTERRUPT_STATUS_CHG_MASK__enumvalues = { - 0: 'AFMT_INTERRUPT_DISABLE', - 1: 'AFMT_INTERRUPT_ENABLE', -} -AFMT_INTERRUPT_DISABLE = 0 -AFMT_INTERRUPT_ENABLE = 1 -AFMT_INTERRUPT_STATUS_CHG_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_MEM_PWR_DIS_CTRL' -AFMT_MEM_PWR_DIS_CTRL__enumvalues = { - 0: 'AFMT_MEM_ENABLE_MEM_PWR_CTRL', - 1: 'AFMT_MEM_DISABLE_MEM_PWR_CTRL', -} -AFMT_MEM_ENABLE_MEM_PWR_CTRL = 0 -AFMT_MEM_DISABLE_MEM_PWR_CTRL = 1 -AFMT_MEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_MEM_PWR_FORCE_CTRL' -AFMT_MEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'AFMT_MEM_NO_FORCE_REQUEST', - 1: 'AFMT_MEM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'AFMT_MEM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'AFMT_MEM_FORCE_SHUT_DOWN_REQUEST', -} -AFMT_MEM_NO_FORCE_REQUEST = 0 -AFMT_MEM_FORCE_LIGHT_SLEEP_REQUEST = 1 -AFMT_MEM_FORCE_DEEP_SLEEP_REQUEST = 2 -AFMT_MEM_FORCE_SHUT_DOWN_REQUEST = 3 -AFMT_MEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_RAMP_CONTROL0_SIGN' -AFMT_RAMP_CONTROL0_SIGN__enumvalues = { - 0: 'AFMT_RAMP_SIGNED', - 1: 'AFMT_RAMP_UNSIGNED', -} -AFMT_RAMP_SIGNED = 0 -AFMT_RAMP_UNSIGNED = 1 -AFMT_RAMP_CONTROL0_SIGN = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_VBI_PACKET_CONTROL_ACP_SOURCE' -AFMT_VBI_PACKET_CONTROL_ACP_SOURCE__enumvalues = { - 0: 'AFMT_ACP_SOURCE_FROM_AZALIA', - 1: 'AFMT_ACP_SOURCE_FROM_AFMT_REGISTERS', -} -AFMT_ACP_SOURCE_FROM_AZALIA = 0 -AFMT_ACP_SOURCE_FROM_AFMT_REGISTERS = 1 -AFMT_VBI_PACKET_CONTROL_ACP_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'AUDIO_LAYOUT_SELECT' -AUDIO_LAYOUT_SELECT__enumvalues = { - 0: 'AUDIO_LAYOUT_0', - 1: 'AUDIO_LAYOUT_1', -} -AUDIO_LAYOUT_0 = 0 -AUDIO_LAYOUT_1 = 1 -AUDIO_LAYOUT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'HPO_TOP_CLOCK_GATING_DISABLE' -HPO_TOP_CLOCK_GATING_DISABLE__enumvalues = { - 0: 'HPO_TOP_CLOCK_GATING_EN', - 1: 'HPO_TOP_CLOCK_GATING_DIS', -} -HPO_TOP_CLOCK_GATING_EN = 0 -HPO_TOP_CLOCK_GATING_DIS = 1 -HPO_TOP_CLOCK_GATING_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'HPO_TOP_TEST_CLK_SEL' -HPO_TOP_TEST_CLK_SEL__enumvalues = { - 0: 'HPO_TOP_PERMANENT_DISPCLK', - 1: 'HPO_TOP_REGISTER_GATED_DISPCLK', - 2: 'HPO_TOP_PERMANENT_SOCCLK', - 3: 'HPO_TOP_TEST_CLOCK_RESERVED', - 4: 'HPO_TOP_PERMANENT_HDMISTREAMCLK0', - 5: 'HPO_TOP_FEATURE_GATED_HDMISTREAMCLK0', - 6: 'HPO_TOP_REGISTER_GATED_HDMISTREAMCLK0', - 7: 'HPO_TOP_FEATURE_GATED_DISPCLK_IN_HDMISTREAMENC0', - 8: 'HPO_TOP_FEATURE_GATED_SOCCLK_IN_HDMISTREAMENC0', - 9: 'HPO_TOP_PERMANENT_HDMICHARCLK0', - 10: 'HPO_TOP_FEATURE_GATED_HDMICHARCLK0', - 11: 'HPO_TOP_REGISTER_GATED_HDMICHARCLK0', -} -HPO_TOP_PERMANENT_DISPCLK = 0 -HPO_TOP_REGISTER_GATED_DISPCLK = 1 -HPO_TOP_PERMANENT_SOCCLK = 2 -HPO_TOP_TEST_CLOCK_RESERVED = 3 -HPO_TOP_PERMANENT_HDMISTREAMCLK0 = 4 -HPO_TOP_FEATURE_GATED_HDMISTREAMCLK0 = 5 -HPO_TOP_REGISTER_GATED_HDMISTREAMCLK0 = 6 -HPO_TOP_FEATURE_GATED_DISPCLK_IN_HDMISTREAMENC0 = 7 -HPO_TOP_FEATURE_GATED_SOCCLK_IN_HDMISTREAMENC0 = 8 -HPO_TOP_PERMANENT_HDMICHARCLK0 = 9 -HPO_TOP_FEATURE_GATED_HDMICHARCLK0 = 10 -HPO_TOP_REGISTER_GATED_HDMICHARCLK0 = 11 -HPO_TOP_TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STREAM_MAPPER_DP_STREAM_LINK_TARGET' -DP_STREAM_MAPPER_DP_STREAM_LINK_TARGET__enumvalues = { - 0: 'DP_STREAM_MAPPER_LINK0', - 1: 'DP_STREAM_MAPPER_LINK1', - 2: 'DP_STREAM_MAPPER_RESERVED', -} -DP_STREAM_MAPPER_LINK0 = 0 -DP_STREAM_MAPPER_LINK1 = 1 -DP_STREAM_MAPPER_RESERVED = 2 -DP_STREAM_MAPPER_DP_STREAM_LINK_TARGET = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_DB_DISABLE_CONTROL' -HDMI_STREAM_ENC_DB_DISABLE_CONTROL__enumvalues = { - 0: 'HDMI_STREAM_ENC_DB_ENABLE', - 1: 'HDMI_STREAM_ENC_DB_DISABLE', -} -HDMI_STREAM_ENC_DB_ENABLE = 0 -HDMI_STREAM_ENC_DB_DISABLE = 1 -HDMI_STREAM_ENC_DB_DISABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_DSC_MODE' -HDMI_STREAM_ENC_DSC_MODE__enumvalues = { - 0: 'STREAM_DSC_DISABLE', - 1: 'STREAM_DSC_444_RGB', - 2: 'STREAM_DSC_NATIVE_422_420', -} -STREAM_DSC_DISABLE = 0 -STREAM_DSC_444_RGB = 1 -STREAM_DSC_NATIVE_422_420 = 2 -HDMI_STREAM_ENC_DSC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_ENABLE_CONTROL' -HDMI_STREAM_ENC_ENABLE_CONTROL__enumvalues = { - 0: 'HDMI_STREAM_ENC_DISABLE', - 1: 'HDMI_STREAM_ENC_ENABLE', -} -HDMI_STREAM_ENC_DISABLE = 0 -HDMI_STREAM_ENC_ENABLE = 1 -HDMI_STREAM_ENC_ENABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_ODM_COMBINE_MODE' -HDMI_STREAM_ENC_ODM_COMBINE_MODE__enumvalues = { - 0: 'STREAM_ODM_COMBINE_1_SEGMENT', - 1: 'STREAM_ODM_COMBINE_2_SEGMENT', - 2: 'STREAM_ODM_COMBINE_RESERVED', - 3: 'STREAM_ODM_COMBINE_4_SEGMENT', -} -STREAM_ODM_COMBINE_1_SEGMENT = 0 -STREAM_ODM_COMBINE_2_SEGMENT = 1 -STREAM_ODM_COMBINE_RESERVED = 2 -STREAM_ODM_COMBINE_4_SEGMENT = 3 -HDMI_STREAM_ENC_ODM_COMBINE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR' -HDMI_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR__enumvalues = { - 0: 'HDMI_STREAM_ENC_NO_ERROR_OCCURRED', - 1: 'HDMI_STREAM_ENC_UNDERFLOW_OCCURRED', - 2: 'HDMI_STREAM_ENC_OVERFLOW_OCCURRED', -} -HDMI_STREAM_ENC_NO_ERROR_OCCURRED = 0 -HDMI_STREAM_ENC_UNDERFLOW_OCCURRED = 1 -HDMI_STREAM_ENC_OVERFLOW_OCCURRED = 2 -HDMI_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_OVERWRITE_LEVEL_SELECT' -HDMI_STREAM_ENC_OVERWRITE_LEVEL_SELECT__enumvalues = { - 0: 'HDMI_STREAM_ENC_HARDWARE', - 1: 'HDMI_STREAM_ENC_PROGRAMMABLE', -} -HDMI_STREAM_ENC_HARDWARE = 0 -HDMI_STREAM_ENC_PROGRAMMABLE = 1 -HDMI_STREAM_ENC_OVERWRITE_LEVEL_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_PIXEL_ENCODING' -HDMI_STREAM_ENC_PIXEL_ENCODING__enumvalues = { - 0: 'STREAM_PIXEL_ENCODING_444_RGB', - 1: 'STREAM_PIXEL_ENCODING_422', - 2: 'STREAM_PIXEL_ENCODING_420', -} -STREAM_PIXEL_ENCODING_444_RGB = 0 -STREAM_PIXEL_ENCODING_422 = 1 -STREAM_PIXEL_ENCODING_420 = 2 -HDMI_STREAM_ENC_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_READ_CLOCK_CONTROL' -HDMI_STREAM_ENC_READ_CLOCK_CONTROL__enumvalues = { - 0: 'HDMI_STREAM_ENC_DCCG', - 1: 'HDMI_STREAM_ENC_DISPLAY_PIPE', -} -HDMI_STREAM_ENC_DCCG = 0 -HDMI_STREAM_ENC_DISPLAY_PIPE = 1 -HDMI_STREAM_ENC_READ_CLOCK_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_RESET_CONTROL' -HDMI_STREAM_ENC_RESET_CONTROL__enumvalues = { - 0: 'HDMI_STREAM_ENC_NOT_RESET', - 1: 'HDMI_STREAM_ENC_RESET', -} -HDMI_STREAM_ENC_NOT_RESET = 0 -HDMI_STREAM_ENC_RESET = 1 -HDMI_STREAM_ENC_RESET_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_STREAM_ACTIVE' -HDMI_STREAM_ENC_STREAM_ACTIVE__enumvalues = { - 0: 'HDMI_STREAM_ENC_VIDEO_STREAM_NOT_ACTIVE', - 1: 'HDMI_STREAM_ENC_VIDEO_STREAM_ACTIVE', -} -HDMI_STREAM_ENC_VIDEO_STREAM_NOT_ACTIVE = 0 -HDMI_STREAM_ENC_VIDEO_STREAM_ACTIVE = 1 -HDMI_STREAM_ENC_STREAM_ACTIVE = ctypes.c_uint32 # enum - -# values for enumeration 'BORROWBUFFER_MEM_POWER_STATE_ENUM' -BORROWBUFFER_MEM_POWER_STATE_ENUM__enumvalues = { - 0: 'BORROWBUFFER_MEM_POWER_STATE_ENUM_ON', - 1: 'BORROWBUFFER_MEM_POWER_STATE_ENUM_LS', - 2: 'BORROWBUFFER_MEM_POWER_STATE_ENUM_DS', - 3: 'BORROWBUFFER_MEM_POWER_STATE_ENUM_SD', -} -BORROWBUFFER_MEM_POWER_STATE_ENUM_ON = 0 -BORROWBUFFER_MEM_POWER_STATE_ENUM_LS = 1 -BORROWBUFFER_MEM_POWER_STATE_ENUM_DS = 2 -BORROWBUFFER_MEM_POWER_STATE_ENUM_SD = 3 -BORROWBUFFER_MEM_POWER_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_BORROW_MODE' -HDMI_BORROW_MODE__enumvalues = { - 0: 'TB_BORROW_MODE_NONE', - 1: 'TB_BORROW_MODE_ACTIVE', - 2: 'TB_BORROW_MODE_BLANK', - 3: 'TB_BORROW_MODE_RESERVED', -} -TB_BORROW_MODE_NONE = 0 -TB_BORROW_MODE_ACTIVE = 1 -TB_BORROW_MODE_BLANK = 2 -TB_BORROW_MODE_RESERVED = 3 -HDMI_BORROW_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ACP_SEND' -HDMI_TB_ENC_ACP_SEND__enumvalues = { - 0: 'TB_ACP_NOT_SEND', - 1: 'TB_ACP_PKT_SEND', -} -TB_ACP_NOT_SEND = 0 -TB_ACP_PKT_SEND = 1 -HDMI_TB_ENC_ACP_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ACR_AUDIO_PRIORITY' -HDMI_TB_ENC_ACR_AUDIO_PRIORITY__enumvalues = { - 0: 'TB_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE', - 1: 'TB_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT', -} -TB_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE = 0 -TB_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT = 1 -HDMI_TB_ENC_ACR_AUDIO_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ACR_CONT' -HDMI_TB_ENC_ACR_CONT__enumvalues = { - 0: 'TB_ACR_CONT_DISABLE', - 1: 'TB_ACR_CONT_ENABLE', -} -TB_ACR_CONT_DISABLE = 0 -TB_ACR_CONT_ENABLE = 1 -HDMI_TB_ENC_ACR_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ACR_N_MULTIPLE' -HDMI_TB_ENC_ACR_N_MULTIPLE__enumvalues = { - 0: 'TB_ACR_0_MULTIPLE_RESERVED', - 1: 'TB_ACR_1_MULTIPLE', - 2: 'TB_ACR_2_MULTIPLE', - 3: 'TB_ACR_3_MULTIPLE_RESERVED', - 4: 'TB_ACR_4_MULTIPLE', - 5: 'TB_ACR_5_MULTIPLE_RESERVED', - 6: 'TB_ACR_6_MULTIPLE_RESERVED', - 7: 'TB_ACR_7_MULTIPLE_RESERVED', -} -TB_ACR_0_MULTIPLE_RESERVED = 0 -TB_ACR_1_MULTIPLE = 1 -TB_ACR_2_MULTIPLE = 2 -TB_ACR_3_MULTIPLE_RESERVED = 3 -TB_ACR_4_MULTIPLE = 4 -TB_ACR_5_MULTIPLE_RESERVED = 5 -TB_ACR_6_MULTIPLE_RESERVED = 6 -TB_ACR_7_MULTIPLE_RESERVED = 7 -HDMI_TB_ENC_ACR_N_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ACR_SELECT' -HDMI_TB_ENC_ACR_SELECT__enumvalues = { - 0: 'TB_ACR_SELECT_HW', - 1: 'TB_ACR_SELECT_32K', - 2: 'TB_ACR_SELECT_44K', - 3: 'TB_ACR_SELECT_48K', -} -TB_ACR_SELECT_HW = 0 -TB_ACR_SELECT_32K = 1 -TB_ACR_SELECT_44K = 2 -TB_ACR_SELECT_48K = 3 -HDMI_TB_ENC_ACR_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ACR_SEND' -HDMI_TB_ENC_ACR_SEND__enumvalues = { - 0: 'TB_ACR_NOT_SEND', - 1: 'TB_ACR_PKT_SEND', -} -TB_ACR_NOT_SEND = 0 -TB_ACR_PKT_SEND = 1 -HDMI_TB_ENC_ACR_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ACR_SOURCE' -HDMI_TB_ENC_ACR_SOURCE__enumvalues = { - 0: 'TB_ACR_SOURCE_HW', - 1: 'TB_ACR_SOURCE_SW', -} -TB_ACR_SOURCE_HW = 0 -TB_ACR_SOURCE_SW = 1 -HDMI_TB_ENC_ACR_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_AUDIO_INFO_CONT' -HDMI_TB_ENC_AUDIO_INFO_CONT__enumvalues = { - 0: 'TB_AUDIO_INFO_CONT_DISABLE', - 1: 'TB_AUDIO_INFO_CONT_ENABLE', -} -TB_AUDIO_INFO_CONT_DISABLE = 0 -TB_AUDIO_INFO_CONT_ENABLE = 1 -HDMI_TB_ENC_AUDIO_INFO_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_AUDIO_INFO_SEND' -HDMI_TB_ENC_AUDIO_INFO_SEND__enumvalues = { - 0: 'TB_AUDIO_INFO_NOT_SEND', - 1: 'TB_AUDIO_INFO_PKT_SEND', -} -TB_AUDIO_INFO_NOT_SEND = 0 -TB_AUDIO_INFO_PKT_SEND = 1 -HDMI_TB_ENC_AUDIO_INFO_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_CRC_SRC_SEL' -HDMI_TB_ENC_CRC_SRC_SEL__enumvalues = { - 0: 'TB_CRC_TB_ENC_INPUT', - 1: 'TB_CRC_DSC_PACKER', - 2: 'TB_CRC_DEEP_COLOR_PACKER', - 3: 'TB_CRC_ENCRYPTOR_INPUT', -} -TB_CRC_TB_ENC_INPUT = 0 -TB_CRC_DSC_PACKER = 1 -TB_CRC_DEEP_COLOR_PACKER = 2 -TB_CRC_ENCRYPTOR_INPUT = 3 -HDMI_TB_ENC_CRC_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_CRC_TYPE' -HDMI_TB_ENC_CRC_TYPE__enumvalues = { - 0: 'TB_CRC_ALL_TRIBYTES', - 1: 'TB_CRC_ACTIVE_TRIBYTES', - 2: 'TB_CRC_DATAISLAND_TRIBYTES', - 3: 'TB_CRC_ACTIVE_AND_DATAISLAND_TRIBYTES', -} -TB_CRC_ALL_TRIBYTES = 0 -TB_CRC_ACTIVE_TRIBYTES = 1 -TB_CRC_DATAISLAND_TRIBYTES = 2 -TB_CRC_ACTIVE_AND_DATAISLAND_TRIBYTES = 3 -HDMI_TB_ENC_CRC_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_DEEP_COLOR_DEPTH' -HDMI_TB_ENC_DEEP_COLOR_DEPTH__enumvalues = { - 0: 'TB_DEEP_COLOR_DEPTH_24BPP', - 1: 'TB_DEEP_COLOR_DEPTH_30BPP', - 2: 'TB_DEEP_COLOR_DEPTH_36BPP', - 3: 'TB_DEEP_COLOR_DEPTH_RESERVED', -} -TB_DEEP_COLOR_DEPTH_24BPP = 0 -TB_DEEP_COLOR_DEPTH_30BPP = 1 -TB_DEEP_COLOR_DEPTH_36BPP = 2 -TB_DEEP_COLOR_DEPTH_RESERVED = 3 -HDMI_TB_ENC_DEEP_COLOR_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_DEFAULT_PAHSE' -HDMI_TB_ENC_DEFAULT_PAHSE__enumvalues = { - 0: 'TB_DEFAULT_PHASE_IS_0', - 1: 'TB_DEFAULT_PHASE_IS_1', -} -TB_DEFAULT_PHASE_IS_0 = 0 -TB_DEFAULT_PHASE_IS_1 = 1 -HDMI_TB_ENC_DEFAULT_PAHSE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_DSC_MODE' -HDMI_TB_ENC_DSC_MODE__enumvalues = { - 0: 'TB_DSC_DISABLE', - 1: 'TB_DSC_444_RGB', - 2: 'TB_DSC_NATIVE_422_420', -} -TB_DSC_DISABLE = 0 -TB_DSC_444_RGB = 1 -TB_DSC_NATIVE_422_420 = 2 -HDMI_TB_ENC_DSC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ENABLE' -HDMI_TB_ENC_ENABLE__enumvalues = { - 0: 'TB_DISABLE', - 1: 'TB_ENABLE', -} -TB_DISABLE = 0 -TB_ENABLE = 1 -HDMI_TB_ENC_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_GC_AVMUTE' -HDMI_TB_ENC_GC_AVMUTE__enumvalues = { - 0: 'TB_GC_AVMUTE_SET', - 1: 'TB_GC_AVMUTE_UNSET', -} -TB_GC_AVMUTE_SET = 0 -TB_GC_AVMUTE_UNSET = 1 -HDMI_TB_ENC_GC_AVMUTE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_GC_AVMUTE_CONT' -HDMI_TB_ENC_GC_AVMUTE_CONT__enumvalues = { - 0: 'TB_GC_AVMUTE_CONT_DISABLE', - 1: 'TB_GC_AVMUTE_CONT_ENABLE', -} -TB_GC_AVMUTE_CONT_DISABLE = 0 -TB_GC_AVMUTE_CONT_ENABLE = 1 -HDMI_TB_ENC_GC_AVMUTE_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_GC_CONT' -HDMI_TB_ENC_GC_CONT__enumvalues = { - 0: 'TB_GC_CONT_DISABLE', - 1: 'TB_GC_CONT_ENABLE', -} -TB_GC_CONT_DISABLE = 0 -TB_GC_CONT_ENABLE = 1 -HDMI_TB_ENC_GC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_GC_SEND' -HDMI_TB_ENC_GC_SEND__enumvalues = { - 0: 'TB_GC_NOT_SEND', - 1: 'TB_GC_PKT_SEND', -} -TB_GC_NOT_SEND = 0 -TB_GC_PKT_SEND = 1 -HDMI_TB_ENC_GC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_GENERIC_CONT' -HDMI_TB_ENC_GENERIC_CONT__enumvalues = { - 0: 'TB_GENERIC_CONT_DISABLE', - 1: 'TB_GENERIC_CONT_ENABLE', -} -TB_GENERIC_CONT_DISABLE = 0 -TB_GENERIC_CONT_ENABLE = 1 -HDMI_TB_ENC_GENERIC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_GENERIC_LOCK_EN' -HDMI_TB_ENC_GENERIC_LOCK_EN__enumvalues = { - 0: 'HDMI_TB_ENC_GENERIC_LOCK_DISABLE', - 1: 'HDMI_TB_ENC_GENERIC_LOCK_ENABLE', -} -HDMI_TB_ENC_GENERIC_LOCK_DISABLE = 0 -HDMI_TB_ENC_GENERIC_LOCK_ENABLE = 1 -HDMI_TB_ENC_GENERIC_LOCK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_GENERIC_SEND' -HDMI_TB_ENC_GENERIC_SEND__enumvalues = { - 0: 'TB_GENERIC_NOT_SEND', - 1: 'TB_GENERIC_PKT_SEND', -} -TB_GENERIC_NOT_SEND = 0 -TB_GENERIC_PKT_SEND = 1 -HDMI_TB_ENC_GENERIC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ISRC_CONT' -HDMI_TB_ENC_ISRC_CONT__enumvalues = { - 0: 'TB_ISRC_CONT_DISABLE', - 1: 'TB_ISRC_CONT_ENABLE', -} -TB_ISRC_CONT_DISABLE = 0 -TB_ISRC_CONT_ENABLE = 1 -HDMI_TB_ENC_ISRC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ISRC_SEND' -HDMI_TB_ENC_ISRC_SEND__enumvalues = { - 0: 'TB_ISRC_NOT_SEND', - 1: 'TB_ISRC_PKT_SEND', -} -TB_ISRC_NOT_SEND = 0 -TB_ISRC_PKT_SEND = 1 -HDMI_TB_ENC_ISRC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_METADATA_ENABLE' -HDMI_TB_ENC_METADATA_ENABLE__enumvalues = { - 0: 'TB_METADATA_NOT_SEND', - 1: 'TB_METADATA_PKT_SEND', -} -TB_METADATA_NOT_SEND = 0 -TB_METADATA_PKT_SEND = 1 -HDMI_TB_ENC_METADATA_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_PACKET_LINE_REFERENCE' -HDMI_TB_ENC_PACKET_LINE_REFERENCE__enumvalues = { - 0: 'TB_PKT_LINE_REF_END_OF_ACTIVE', - 1: 'TB_PKT_LINE_REF_OTGSOF', -} -TB_PKT_LINE_REF_END_OF_ACTIVE = 0 -TB_PKT_LINE_REF_OTGSOF = 1 -HDMI_TB_ENC_PACKET_LINE_REFERENCE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_PIXEL_ENCODING' -HDMI_TB_ENC_PIXEL_ENCODING__enumvalues = { - 0: 'TB_PIXEL_ENCODING_444_RGB', - 1: 'TB_PIXEL_ENCODING_422', - 2: 'TB_PIXEL_ENCODING_420', -} -TB_PIXEL_ENCODING_444_RGB = 0 -TB_PIXEL_ENCODING_422 = 1 -TB_PIXEL_ENCODING_420 = 2 -HDMI_TB_ENC_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_RESET' -HDMI_TB_ENC_RESET__enumvalues = { - 0: 'TB_NOT_RESET', - 1: 'TB_RESET', -} -TB_NOT_RESET = 0 -TB_RESET = 1 -HDMI_TB_ENC_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_SYNC_PHASE' -HDMI_TB_ENC_SYNC_PHASE__enumvalues = { - 0: 'TB_NOT_SYNC_PHASE_ON_FRAME_START', - 1: 'TB_SYNC_PHASE_ON_FRAME_START', -} -TB_NOT_SYNC_PHASE_ON_FRAME_START = 0 -TB_SYNC_PHASE_ON_FRAME_START = 1 -HDMI_TB_ENC_SYNC_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'INPUT_FIFO_ERROR_TYPE' -INPUT_FIFO_ERROR_TYPE__enumvalues = { - 0: 'TB_NO_ERROR_OCCURRED', - 1: 'TB_OVERFLOW_OCCURRED', -} -TB_NO_ERROR_OCCURRED = 0 -TB_OVERFLOW_OCCURRED = 1 -INPUT_FIFO_ERROR_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR' -DP_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR__enumvalues = { - 0: 'DP_STREAM_ENC_NO_ERROR_OCCURRED', - 1: 'DP_STREAM_ENC_UNDERFLOW_OCCURRED', - 2: 'DP_STREAM_ENC_OVERFLOW_OCCURRED', -} -DP_STREAM_ENC_NO_ERROR_OCCURRED = 0 -DP_STREAM_ENC_UNDERFLOW_OCCURRED = 1 -DP_STREAM_ENC_OVERFLOW_OCCURRED = 2 -DP_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STREAM_ENC_OVERWRITE_LEVEL_SELECT' -DP_STREAM_ENC_OVERWRITE_LEVEL_SELECT__enumvalues = { - 0: 'DP_STREAM_ENC_HARDWARE', - 1: 'DP_STREAM_ENC_PROGRAMMABLE', -} -DP_STREAM_ENC_HARDWARE = 0 -DP_STREAM_ENC_PROGRAMMABLE = 1 -DP_STREAM_ENC_OVERWRITE_LEVEL_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STREAM_ENC_READ_CLOCK_CONTROL' -DP_STREAM_ENC_READ_CLOCK_CONTROL__enumvalues = { - 0: 'DP_STREAM_ENC_DCCG', - 1: 'DP_STREAM_ENC_DISPLAY_PIPE', -} -DP_STREAM_ENC_DCCG = 0 -DP_STREAM_ENC_DISPLAY_PIPE = 1 -DP_STREAM_ENC_READ_CLOCK_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STREAM_ENC_RESET_CONTROL' -DP_STREAM_ENC_RESET_CONTROL__enumvalues = { - 0: 'DP_STREAM_ENC_NOT_RESET', - 1: 'DP_STREAM_ENC_RESET', -} -DP_STREAM_ENC_NOT_RESET = 0 -DP_STREAM_ENC_RESET = 1 -DP_STREAM_ENC_RESET_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STREAM_ENC_STREAM_ACTIVE' -DP_STREAM_ENC_STREAM_ACTIVE__enumvalues = { - 0: 'DP_STREAM_ENC_VIDEO_STREAM_NOT_ACTIVE', - 1: 'DP_STREAM_ENC_VIDEO_STREAM_ACTIVE', -} -DP_STREAM_ENC_VIDEO_STREAM_NOT_ACTIVE = 0 -DP_STREAM_ENC_VIDEO_STREAM_ACTIVE = 1 -DP_STREAM_ENC_STREAM_ACTIVE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_AUDIO_MUTE' -ENUM_DP_SYM32_ENC_AUDIO_MUTE__enumvalues = { - 0: 'DP_SYM32_ENC_SDP_AUDIO_MUTE_NOT_FORCED', - 1: 'DP_SYM32_ENC_SDP_AUDIO_MUTE_FORCED', -} -DP_SYM32_ENC_SDP_AUDIO_MUTE_NOT_FORCED = 0 -DP_SYM32_ENC_SDP_AUDIO_MUTE_FORCED = 1 -ENUM_DP_SYM32_ENC_AUDIO_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_CONTINUOUS_MODE' -ENUM_DP_SYM32_ENC_CONTINUOUS_MODE__enumvalues = { - 0: 'DP_SYM32_ENC_ONE_SHOT_MODE', - 1: 'DP_SYM32_ENC_CONTINUOUS_MODE', -} -DP_SYM32_ENC_ONE_SHOT_MODE = 0 -DP_SYM32_ENC_CONTINUOUS_MODE = 1 -ENUM_DP_SYM32_ENC_CONTINUOUS_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_CRC_VALID' -ENUM_DP_SYM32_ENC_CRC_VALID__enumvalues = { - 0: 'DP_SYM32_ENC_CRC_NOT_VALID', - 1: 'DP_SYM32_ENC_CRC_VALID', -} -DP_SYM32_ENC_CRC_NOT_VALID = 0 -DP_SYM32_ENC_CRC_VALID = 1 -ENUM_DP_SYM32_ENC_CRC_VALID = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_DP_COMPONENT_DEPTH' -ENUM_DP_SYM32_ENC_DP_COMPONENT_DEPTH__enumvalues = { - 0: 'DP_SYM32_ENC_COMPONENT_DEPTH_6BPC', - 1: 'DP_SYM32_ENC_COMPONENT_DEPTH_8BPC', - 2: 'DP_SYM32_ENC_COMPONENT_DEPTH_10BPC', - 3: 'DP_SYM32_ENC_COMPONENT_DEPTH_12BPC', -} -DP_SYM32_ENC_COMPONENT_DEPTH_6BPC = 0 -DP_SYM32_ENC_COMPONENT_DEPTH_8BPC = 1 -DP_SYM32_ENC_COMPONENT_DEPTH_10BPC = 2 -DP_SYM32_ENC_COMPONENT_DEPTH_12BPC = 3 -ENUM_DP_SYM32_ENC_DP_COMPONENT_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_ENABLE' -ENUM_DP_SYM32_ENC_ENABLE__enumvalues = { - 0: 'DP_SYM32_ENC_DISABLE', - 1: 'DP_SYM32_ENC_ENABLE', -} -DP_SYM32_ENC_DISABLE = 0 -DP_SYM32_ENC_ENABLE = 1 -ENUM_DP_SYM32_ENC_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_GSP_DEADLINE_MISSED' -ENUM_DP_SYM32_ENC_GSP_DEADLINE_MISSED__enumvalues = { - 0: 'DP_SYM32_ENC_GSP_DEADLINE_NOT_MISSED', - 1: 'DP_SYM32_ENC_GSP_DEADLINE_MISSED', -} -DP_SYM32_ENC_GSP_DEADLINE_NOT_MISSED = 0 -DP_SYM32_ENC_GSP_DEADLINE_MISSED = 1 -ENUM_DP_SYM32_ENC_GSP_DEADLINE_MISSED = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_GSP_ONE_SHOT_TRIGGER_POSITION' -ENUM_DP_SYM32_ENC_GSP_ONE_SHOT_TRIGGER_POSITION__enumvalues = { - 0: 'DP_SYM32_ENC_GSP_SEND_AT_LINE_NUMBER', - 1: 'DP_SYM32_ENC_GSP_SEND_AT_EARLIEST_TIME', -} -DP_SYM32_ENC_GSP_SEND_AT_LINE_NUMBER = 0 -DP_SYM32_ENC_GSP_SEND_AT_EARLIEST_TIME = 1 -ENUM_DP_SYM32_ENC_GSP_ONE_SHOT_TRIGGER_POSITION = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_GSP_PAYLOAD_SIZE' -ENUM_DP_SYM32_ENC_GSP_PAYLOAD_SIZE__enumvalues = { - 0: 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_32', - 1: 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_RESERVED0', - 2: 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_RESERVED1', - 3: 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_128', -} -DP_SYM32_ENC_GSP_PAYLOAD_SIZE_32 = 0 -DP_SYM32_ENC_GSP_PAYLOAD_SIZE_RESERVED0 = 1 -DP_SYM32_ENC_GSP_PAYLOAD_SIZE_RESERVED1 = 2 -DP_SYM32_ENC_GSP_PAYLOAD_SIZE_128 = 3 -ENUM_DP_SYM32_ENC_GSP_PAYLOAD_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_GSP_TRIGGER_PENDING' -ENUM_DP_SYM32_ENC_GSP_TRIGGER_PENDING__enumvalues = { - 0: 'DP_SYM32_ENC_GSP_TRIGGER_NOT_PENDING', - 1: 'DP_SYM32_ENC_GSP_TRIGGER_PENDING', -} -DP_SYM32_ENC_GSP_TRIGGER_NOT_PENDING = 0 -DP_SYM32_ENC_GSP_TRIGGER_PENDING = 1 -ENUM_DP_SYM32_ENC_GSP_TRIGGER_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_MEM_PWR_FORCE_ENUM' -ENUM_DP_SYM32_ENC_MEM_PWR_FORCE_ENUM__enumvalues = { - 0: 'DP_SYM32_ENC_MEM_PWR_NO_FORCE_REQUEST', - 1: 'DP_SYM32_ENC_MEM_PWR_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'DP_SYM32_ENC_MEM_PWR_FORCE_DEEP_SLEEP_REQUEST', - 3: 'DP_SYM32_ENC_MEM_PWR_FORCE_SHUT_DOWN_REQUEST', -} -DP_SYM32_ENC_MEM_PWR_NO_FORCE_REQUEST = 0 -DP_SYM32_ENC_MEM_PWR_FORCE_LIGHT_SLEEP_REQUEST = 1 -DP_SYM32_ENC_MEM_PWR_FORCE_DEEP_SLEEP_REQUEST = 2 -DP_SYM32_ENC_MEM_PWR_FORCE_SHUT_DOWN_REQUEST = 3 -ENUM_DP_SYM32_ENC_MEM_PWR_FORCE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_OVERFLOW_STATUS' -ENUM_DP_SYM32_ENC_OVERFLOW_STATUS__enumvalues = { - 0: 'DP_SYM32_ENC_NO_OVERFLOW_OCCURRED', - 1: 'DP_SYM32_ENC_OVERFLOW_OCCURRED', -} -DP_SYM32_ENC_NO_OVERFLOW_OCCURRED = 0 -DP_SYM32_ENC_OVERFLOW_OCCURRED = 1 -ENUM_DP_SYM32_ENC_OVERFLOW_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_PENDING' -ENUM_DP_SYM32_ENC_PENDING__enumvalues = { - 0: 'DP_SYM32_ENC_NOT_PENDING', - 1: 'DP_SYM32_ENC_PENDING', -} -DP_SYM32_ENC_NOT_PENDING = 0 -DP_SYM32_ENC_PENDING = 1 -ENUM_DP_SYM32_ENC_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_PIXEL_ENCODING' -ENUM_DP_SYM32_ENC_PIXEL_ENCODING__enumvalues = { - 0: 'DP_SYM32_ENC_PIXEL_ENCODING_RGB_YCBCR444', - 1: 'DP_SYM32_ENC_PIXEL_ENCODING_YCBCR422', - 2: 'DP_SYM32_ENC_PIXEL_ENCODING_YCBCR420', - 3: 'DP_SYM32_ENC_PIXEL_ENCODING_Y_ONLY', -} -DP_SYM32_ENC_PIXEL_ENCODING_RGB_YCBCR444 = 0 -DP_SYM32_ENC_PIXEL_ENCODING_YCBCR422 = 1 -DP_SYM32_ENC_PIXEL_ENCODING_YCBCR420 = 2 -DP_SYM32_ENC_PIXEL_ENCODING_Y_ONLY = 3 -ENUM_DP_SYM32_ENC_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_PIXEL_ENCODING_TYPE' -ENUM_DP_SYM32_ENC_PIXEL_ENCODING_TYPE__enumvalues = { - 0: 'DP_SYM32_ENC_UNCOMPRESSED_FORMAT', - 1: 'DP_SYM32_ENC_COMPRESSED_FORMAT', -} -DP_SYM32_ENC_UNCOMPRESSED_FORMAT = 0 -DP_SYM32_ENC_COMPRESSED_FORMAT = 1 -ENUM_DP_SYM32_ENC_PIXEL_ENCODING_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_POWER_STATE_ENUM' -ENUM_DP_SYM32_ENC_POWER_STATE_ENUM__enumvalues = { - 0: 'DP_SYM32_ENC_POWER_STATE_ENUM_ON', - 1: 'DP_SYM32_ENC_POWER_STATE_ENUM_LS', - 2: 'DP_SYM32_ENC_POWER_STATE_ENUM_DS', - 3: 'DP_SYM32_ENC_POWER_STATE_ENUM_SD', -} -DP_SYM32_ENC_POWER_STATE_ENUM_ON = 0 -DP_SYM32_ENC_POWER_STATE_ENUM_LS = 1 -DP_SYM32_ENC_POWER_STATE_ENUM_DS = 2 -DP_SYM32_ENC_POWER_STATE_ENUM_SD = 3 -ENUM_DP_SYM32_ENC_POWER_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_RESET' -ENUM_DP_SYM32_ENC_RESET__enumvalues = { - 0: 'DP_SYM32_ENC_NOT_RESET', - 1: 'DP_SYM32_ENC_RESET', -} -DP_SYM32_ENC_NOT_RESET = 0 -DP_SYM32_ENC_RESET = 1 -ENUM_DP_SYM32_ENC_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_SDP_PRIORITY' -ENUM_DP_SYM32_ENC_SDP_PRIORITY__enumvalues = { - 0: 'DP_SYM32_ENC_SDP_LOW_PRIORITY', - 1: 'DP_SYM32_ENC_SDP_HIGH_PRIORITY', -} -DP_SYM32_ENC_SDP_LOW_PRIORITY = 0 -DP_SYM32_ENC_SDP_HIGH_PRIORITY = 1 -ENUM_DP_SYM32_ENC_SDP_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_SOF_REFERENCE' -ENUM_DP_SYM32_ENC_SOF_REFERENCE__enumvalues = { - 0: 'DP_SYM32_ENC_DP_SOF', - 1: 'DP_SYM32_ENC_OTG_SOF', -} -DP_SYM32_ENC_DP_SOF = 0 -DP_SYM32_ENC_OTG_SOF = 1 -ENUM_DP_SYM32_ENC_SOF_REFERENCE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_VID_STREAM_DEFER' -ENUM_DP_SYM32_ENC_VID_STREAM_DEFER__enumvalues = { - 0: 'DP_SYM32_ENC_VID_STREAM_NO_DEFER', - 1: 'DP_SYM32_ENC_VID_STREAM_DEFER_TO_HBLANK', - 2: 'DP_SYM32_ENC_VID_STREAM_DEFER_TO_VBLANK', -} -DP_SYM32_ENC_VID_STREAM_NO_DEFER = 0 -DP_SYM32_ENC_VID_STREAM_DEFER_TO_HBLANK = 1 -DP_SYM32_ENC_VID_STREAM_DEFER_TO_VBLANK = 2 -ENUM_DP_SYM32_ENC_VID_STREAM_DEFER = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_CRC_END_EVENT' -ENUM_DP_DPHY_SYM32_CRC_END_EVENT__enumvalues = { - 0: 'DP_DPHY_SYM32_CRC_END_LLCP', - 1: 'DP_DPHY_SYM32_CRC_END_PS_ONLY', - 2: 'DP_DPHY_SYM32_CRC_END_PS_LT_SR', - 3: 'DP_DPHY_SYM32_CRC_END_PS_ANY', -} -DP_DPHY_SYM32_CRC_END_LLCP = 0 -DP_DPHY_SYM32_CRC_END_PS_ONLY = 1 -DP_DPHY_SYM32_CRC_END_PS_LT_SR = 2 -DP_DPHY_SYM32_CRC_END_PS_ANY = 3 -ENUM_DP_DPHY_SYM32_CRC_END_EVENT = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_CRC_START_EVENT' -ENUM_DP_DPHY_SYM32_CRC_START_EVENT__enumvalues = { - 0: 'DP_DPHY_SYM32_CRC_START_LLCP', - 1: 'DP_DPHY_SYM32_CRC_START_PS_ONLY', - 2: 'DP_DPHY_SYM32_CRC_START_PS_LT_SR', - 3: 'DP_DPHY_SYM32_CRC_START_PS_POST_LT_SR', - 4: 'DP_DPHY_SYM32_CRC_START_TP_START', -} -DP_DPHY_SYM32_CRC_START_LLCP = 0 -DP_DPHY_SYM32_CRC_START_PS_ONLY = 1 -DP_DPHY_SYM32_CRC_START_PS_LT_SR = 2 -DP_DPHY_SYM32_CRC_START_PS_POST_LT_SR = 3 -DP_DPHY_SYM32_CRC_START_TP_START = 4 -ENUM_DP_DPHY_SYM32_CRC_START_EVENT = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_CRC_TAP_SOURCE' -ENUM_DP_DPHY_SYM32_CRC_TAP_SOURCE__enumvalues = { - 0: 'DP_DPHY_SYM32_CRC_TAP_SOURCE_SCHEDULER', - 1: 'DP_DPHY_SYM32_CRC_TAP_SOURCE_SYMBOL_HANDLER', - 2: 'DP_DPHY_SYM32_CRC_TAP_SOURCE_TP_GEN_MUX', -} -DP_DPHY_SYM32_CRC_TAP_SOURCE_SCHEDULER = 0 -DP_DPHY_SYM32_CRC_TAP_SOURCE_SYMBOL_HANDLER = 1 -DP_DPHY_SYM32_CRC_TAP_SOURCE_TP_GEN_MUX = 2 -ENUM_DP_DPHY_SYM32_CRC_TAP_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS' -ENUM_DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS__enumvalues = { - 0: 'DP_DPHY_SYM32_CRC_USE_END_EVENT', - 1: 'DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS', -} -DP_DPHY_SYM32_CRC_USE_END_EVENT = 0 -DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS = 1 -ENUM_DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_ENABLE' -ENUM_DP_DPHY_SYM32_ENABLE__enumvalues = { - 0: 'DP_DPHY_SYM32_DISABLE', - 1: 'DP_DPHY_SYM32_ENABLE', -} -DP_DPHY_SYM32_DISABLE = 0 -DP_DPHY_SYM32_ENABLE = 1 -ENUM_DP_DPHY_SYM32_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_ENCRYPT_TYPE' -ENUM_DP_DPHY_SYM32_ENCRYPT_TYPE__enumvalues = { - 0: 'DP_DPHY_SYM32_ENCRYPT_TYPE0', - 1: 'DP_DPHY_SYM32_ENCRYPT_TYPE1', -} -DP_DPHY_SYM32_ENCRYPT_TYPE0 = 0 -DP_DPHY_SYM32_ENCRYPT_TYPE1 = 1 -ENUM_DP_DPHY_SYM32_ENCRYPT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_MODE' -ENUM_DP_DPHY_SYM32_MODE__enumvalues = { - 0: 'DP_DPHY_SYM32_LT_TPS1', - 1: 'DP_DPHY_SYM32_LT_TPS2', - 2: 'DP_DPHY_SYM32_ACTIVE', - 3: 'DP_DPHY_SYM32_TEST', -} -DP_DPHY_SYM32_LT_TPS1 = 0 -DP_DPHY_SYM32_LT_TPS2 = 1 -DP_DPHY_SYM32_ACTIVE = 2 -DP_DPHY_SYM32_TEST = 3 -ENUM_DP_DPHY_SYM32_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_NUM_LANES' -ENUM_DP_DPHY_SYM32_NUM_LANES__enumvalues = { - 0: 'DP_DPHY_SYM32_1LANE', - 1: 'DP_DPHY_SYM32_2LANE', - 2: 'DP_DPHY_SYM32_RESERVED', - 3: 'DP_DPHY_SYM32_4LANE', -} -DP_DPHY_SYM32_1LANE = 0 -DP_DPHY_SYM32_2LANE = 1 -DP_DPHY_SYM32_RESERVED = 2 -DP_DPHY_SYM32_4LANE = 3 -ENUM_DP_DPHY_SYM32_NUM_LANES = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_RATE_UPDATE_PENDING' -ENUM_DP_DPHY_SYM32_RATE_UPDATE_PENDING__enumvalues = { - 0: 'DP_DPHY_SYM32_NO_RATE_UPDATE_PENDING', - 1: 'DP_DPHY_SYM32_RATE_UPDATE_PENDING', -} -DP_DPHY_SYM32_NO_RATE_UPDATE_PENDING = 0 -DP_DPHY_SYM32_RATE_UPDATE_PENDING = 1 -ENUM_DP_DPHY_SYM32_RATE_UPDATE_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_RESET' -ENUM_DP_DPHY_SYM32_RESET__enumvalues = { - 0: 'DP_DPHY_SYM32_NOT_RESET', - 1: 'DP_DPHY_SYM32_RESET', -} -DP_DPHY_SYM32_NOT_RESET = 0 -DP_DPHY_SYM32_RESET = 1 -ENUM_DP_DPHY_SYM32_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_RESET_STATUS' -ENUM_DP_DPHY_SYM32_RESET_STATUS__enumvalues = { - 0: 'DP_DPHY_SYM32_RESET_STATUS_DEASSERTED', - 1: 'DP_DPHY_SYM32_RESET_STATUS_ASSERTED', -} -DP_DPHY_SYM32_RESET_STATUS_DEASSERTED = 0 -DP_DPHY_SYM32_RESET_STATUS_ASSERTED = 1 -ENUM_DP_DPHY_SYM32_RESET_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_SAT_UPDATE' -ENUM_DP_DPHY_SYM32_SAT_UPDATE__enumvalues = { - 0: 'DP_DPHY_SYM32_SAT_NO_UPDATE', - 1: 'DP_DPHY_SYM32_SAT_TRIGGER_UPDATE', - 2: 'DP_DPHY_SYM32_SAT_NOTRIGGER_UPDATE', -} -DP_DPHY_SYM32_SAT_NO_UPDATE = 0 -DP_DPHY_SYM32_SAT_TRIGGER_UPDATE = 1 -DP_DPHY_SYM32_SAT_NOTRIGGER_UPDATE = 2 -ENUM_DP_DPHY_SYM32_SAT_UPDATE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_SAT_UPDATE_PENDING' -ENUM_DP_DPHY_SYM32_SAT_UPDATE_PENDING__enumvalues = { - 0: 'DP_DPHY_SYM32_SAT_NO_UPDATE_PENDING', - 1: 'DP_DPHY_SYM32_SAT_TRIGGER_UPDATE_PENDING', - 2: 'DP_DPHY_SYM32_SAT_NOTRIGGER_UPDATE_PENDING', -} -DP_DPHY_SYM32_SAT_NO_UPDATE_PENDING = 0 -DP_DPHY_SYM32_SAT_TRIGGER_UPDATE_PENDING = 1 -DP_DPHY_SYM32_SAT_NOTRIGGER_UPDATE_PENDING = 2 -ENUM_DP_DPHY_SYM32_SAT_UPDATE_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_STATUS' -ENUM_DP_DPHY_SYM32_STATUS__enumvalues = { - 0: 'DP_DPHY_SYM32_STATUS_IDLE', - 1: 'DP_DPHY_SYM32_STATUS_ENABLED', -} -DP_DPHY_SYM32_STATUS_IDLE = 0 -DP_DPHY_SYM32_STATUS_ENABLED = 1 -ENUM_DP_DPHY_SYM32_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_STREAM_OVR_ENABLE' -ENUM_DP_DPHY_SYM32_STREAM_OVR_ENABLE__enumvalues = { - 0: 'DP_DPHY_SYM32_STREAM_OVR_NONE', - 1: 'DP_DPHY_SYM32_STREAM_OVR_REPLACE', - 2: 'DP_DPHY_SYM32_STREAM_OVR_ALWAYS', -} -DP_DPHY_SYM32_STREAM_OVR_NONE = 0 -DP_DPHY_SYM32_STREAM_OVR_REPLACE = 1 -DP_DPHY_SYM32_STREAM_OVR_ALWAYS = 2 -ENUM_DP_DPHY_SYM32_STREAM_OVR_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_STREAM_OVR_TYPE' -ENUM_DP_DPHY_SYM32_STREAM_OVR_TYPE__enumvalues = { - 0: 'DP_DPHY_SYM32_STREAM_OVR_TYPE_DATA', - 1: 'DP_DPHY_SYM32_STREAM_OVR_TYPE_CONTROL', -} -DP_DPHY_SYM32_STREAM_OVR_TYPE_DATA = 0 -DP_DPHY_SYM32_STREAM_OVR_TYPE_CONTROL = 1 -ENUM_DP_DPHY_SYM32_STREAM_OVR_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_TP_PRBS_SEL' -ENUM_DP_DPHY_SYM32_TP_PRBS_SEL__enumvalues = { - 0: 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS7', - 1: 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS9', - 2: 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS11', - 3: 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS15', - 4: 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS23', - 5: 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS31', -} -DP_DPHY_SYM32_TP_PRBS_SEL_PRBS7 = 0 -DP_DPHY_SYM32_TP_PRBS_SEL_PRBS9 = 1 -DP_DPHY_SYM32_TP_PRBS_SEL_PRBS11 = 2 -DP_DPHY_SYM32_TP_PRBS_SEL_PRBS15 = 3 -DP_DPHY_SYM32_TP_PRBS_SEL_PRBS23 = 4 -DP_DPHY_SYM32_TP_PRBS_SEL_PRBS31 = 5 -ENUM_DP_DPHY_SYM32_TP_PRBS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_TP_SELECT' -ENUM_DP_DPHY_SYM32_TP_SELECT__enumvalues = { - 0: 'DP_DPHY_SYM32_TP_SELECT_TPS1', - 1: 'DP_DPHY_SYM32_TP_SELECT_TPS2', - 2: 'DP_DPHY_SYM32_TP_SELECT_PRBS', - 3: 'DP_DPHY_SYM32_TP_SELECT_CUSTOM', - 4: 'DP_DPHY_SYM32_TP_SELECT_SQUARE', -} -DP_DPHY_SYM32_TP_SELECT_TPS1 = 0 -DP_DPHY_SYM32_TP_SELECT_TPS2 = 1 -DP_DPHY_SYM32_TP_SELECT_PRBS = 2 -DP_DPHY_SYM32_TP_SELECT_CUSTOM = 3 -DP_DPHY_SYM32_TP_SELECT_SQUARE = 4 -ENUM_DP_DPHY_SYM32_TP_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'APG_AUDIO_CRC_CONTROL_CH_SEL' -APG_AUDIO_CRC_CONTROL_CH_SEL__enumvalues = { - 0: 'APG_AUDIO_CRC_CH0_SIG', - 1: 'APG_AUDIO_CRC_CH1_SIG', - 2: 'APG_AUDIO_CRC_CH2_SIG', - 3: 'APG_AUDIO_CRC_CH3_SIG', - 4: 'APG_AUDIO_CRC_CH4_SIG', - 5: 'APG_AUDIO_CRC_CH5_SIG', - 6: 'APG_AUDIO_CRC_CH6_SIG', - 7: 'APG_AUDIO_CRC_CH7_SIG', - 8: 'APG_AUDIO_CRC_RESERVED_8', - 9: 'APG_AUDIO_CRC_RESERVED_9', - 10: 'APG_AUDIO_CRC_RESERVED_10', - 11: 'APG_AUDIO_CRC_RESERVED_11', - 12: 'APG_AUDIO_CRC_RESERVED_12', - 13: 'APG_AUDIO_CRC_RESERVED_13', - 14: 'APG_AUDIO_CRC_RESERVED_14', - 15: 'APG_AUDIO_CRC_RESERVED_15', -} -APG_AUDIO_CRC_CH0_SIG = 0 -APG_AUDIO_CRC_CH1_SIG = 1 -APG_AUDIO_CRC_CH2_SIG = 2 -APG_AUDIO_CRC_CH3_SIG = 3 -APG_AUDIO_CRC_CH4_SIG = 4 -APG_AUDIO_CRC_CH5_SIG = 5 -APG_AUDIO_CRC_CH6_SIG = 6 -APG_AUDIO_CRC_CH7_SIG = 7 -APG_AUDIO_CRC_RESERVED_8 = 8 -APG_AUDIO_CRC_RESERVED_9 = 9 -APG_AUDIO_CRC_RESERVED_10 = 10 -APG_AUDIO_CRC_RESERVED_11 = 11 -APG_AUDIO_CRC_RESERVED_12 = 12 -APG_AUDIO_CRC_RESERVED_13 = 13 -APG_AUDIO_CRC_RESERVED_14 = 14 -APG_AUDIO_CRC_RESERVED_15 = 15 -APG_AUDIO_CRC_CONTROL_CH_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'APG_AUDIO_CRC_CONTROL_CONT' -APG_AUDIO_CRC_CONTROL_CONT__enumvalues = { - 0: 'APG_AUDIO_CRC_ONESHOT', - 1: 'APG_AUDIO_CRC_CONTINUOUS', -} -APG_AUDIO_CRC_ONESHOT = 0 -APG_AUDIO_CRC_CONTINUOUS = 1 -APG_AUDIO_CRC_CONTROL_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'APG_DBG_ACP_TYPE' -APG_DBG_ACP_TYPE__enumvalues = { - 0: 'APG_ACP_TYPE_GENERIC_AUDIO', - 1: 'APG_ACP_TYPE_ICE60958_AUDIO', - 2: 'APG_ACP_TYPE_DVD_AUDIO', - 3: 'APG_ACP_TYPE_SUPER_AUDIO_CD', -} -APG_ACP_TYPE_GENERIC_AUDIO = 0 -APG_ACP_TYPE_ICE60958_AUDIO = 1 -APG_ACP_TYPE_DVD_AUDIO = 2 -APG_ACP_TYPE_SUPER_AUDIO_CD = 3 -APG_DBG_ACP_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'APG_DBG_AUDIO_DTO_BASE' -APG_DBG_AUDIO_DTO_BASE__enumvalues = { - 0: 'BASE_RATE_48KHZ', - 1: 'BASE_RATE_44P1KHZ', -} -BASE_RATE_48KHZ = 0 -BASE_RATE_44P1KHZ = 1 -APG_DBG_AUDIO_DTO_BASE = ctypes.c_uint32 # enum - -# values for enumeration 'APG_DBG_AUDIO_DTO_DIV' -APG_DBG_AUDIO_DTO_DIV__enumvalues = { - 0: 'DIVISOR_BY1', - 1: 'DIVISOR_BY2_RESERVED', - 2: 'DIVISOR_BY3', - 3: 'DIVISOR_BY4_RESERVED', - 4: 'DIVISOR_BY5_RESERVED', - 5: 'DIVISOR_BY6_RESERVED', - 6: 'DIVISOR_BY7_RESERVED', - 7: 'DIVISOR_BY8_RESERVED', -} -DIVISOR_BY1 = 0 -DIVISOR_BY2_RESERVED = 1 -DIVISOR_BY3 = 2 -DIVISOR_BY4_RESERVED = 3 -DIVISOR_BY5_RESERVED = 4 -DIVISOR_BY6_RESERVED = 5 -DIVISOR_BY7_RESERVED = 6 -DIVISOR_BY8_RESERVED = 7 -APG_DBG_AUDIO_DTO_DIV = ctypes.c_uint32 # enum - -# values for enumeration 'APG_DBG_AUDIO_DTO_MULTI' -APG_DBG_AUDIO_DTO_MULTI__enumvalues = { - 0: 'MULTIPLE_BY1', - 1: 'MULTIPLE_BY2', - 2: 'MULTIPLE_BY3_RESERVED', - 3: 'MULTIPLE_BY4', - 4: 'MULTIPLE_RESERVED', -} -MULTIPLE_BY1 = 0 -MULTIPLE_BY2 = 1 -MULTIPLE_BY3_RESERVED = 2 -MULTIPLE_BY4 = 3 -MULTIPLE_RESERVED = 4 -APG_DBG_AUDIO_DTO_MULTI = ctypes.c_uint32 # enum - -# values for enumeration 'APG_DBG_MUX_SEL' -APG_DBG_MUX_SEL__enumvalues = { - 0: 'APG_FUNCTIONAL_MODE', - 1: 'APG_DEBUG_AUDIO_MODE', -} -APG_FUNCTIONAL_MODE = 0 -APG_DEBUG_AUDIO_MODE = 1 -APG_DBG_MUX_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'APG_DP_ASP_CHANNEL_COUNT_OVERRIDE' -APG_DP_ASP_CHANNEL_COUNT_OVERRIDE__enumvalues = { - 0: 'APG_DP_ASP_CHANNEL_COUNT_FROM_AZ', - 1: 'APG_DP_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED', -} -APG_DP_ASP_CHANNEL_COUNT_FROM_AZ = 0 -APG_DP_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED = 1 -APG_DP_ASP_CHANNEL_COUNT_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'APG_MEM_POWER_STATE' -APG_MEM_POWER_STATE__enumvalues = { - 0: 'APG_MEM_POWER_STATE_ON', - 1: 'APG_MEM_POWER_STATE_LS', - 2: 'APG_MEM_POWER_STATE_DS', - 3: 'APG_MEM_POWER_STATE_SD', -} -APG_MEM_POWER_STATE_ON = 0 -APG_MEM_POWER_STATE_LS = 1 -APG_MEM_POWER_STATE_DS = 2 -APG_MEM_POWER_STATE_SD = 3 -APG_MEM_POWER_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'APG_MEM_PWR_DIS_CTRL' -APG_MEM_PWR_DIS_CTRL__enumvalues = { - 0: 'APG_MEM_ENABLE_MEM_PWR_CTRL', - 1: 'APG_MEM_DISABLE_MEM_PWR_CTRL', -} -APG_MEM_ENABLE_MEM_PWR_CTRL = 0 -APG_MEM_DISABLE_MEM_PWR_CTRL = 1 -APG_MEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'APG_MEM_PWR_FORCE_CTRL' -APG_MEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'APG_MEM_NO_FORCE_REQUEST', - 1: 'APG_MEM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'APG_MEM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'APG_MEM_FORCE_SHUT_DOWN_REQUEST', -} -APG_MEM_NO_FORCE_REQUEST = 0 -APG_MEM_FORCE_LIGHT_SLEEP_REQUEST = 1 -APG_MEM_FORCE_DEEP_SLEEP_REQUEST = 2 -APG_MEM_FORCE_SHUT_DOWN_REQUEST = 3 -APG_MEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'APG_PACKET_CONTROL_ACP_SOURCE' -APG_PACKET_CONTROL_ACP_SOURCE__enumvalues = { - 0: 'APG_ACP_SOURCE_NO_OVERRIDE', - 1: 'APG_ACP_OVERRIDE', -} -APG_ACP_SOURCE_NO_OVERRIDE = 0 -APG_ACP_OVERRIDE = 1 -APG_PACKET_CONTROL_ACP_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'APG_PACKET_CONTROL_AUDIO_INFO_SOURCE' -APG_PACKET_CONTROL_AUDIO_INFO_SOURCE__enumvalues = { - 0: 'APG_INFOFRAME_SOURCE_NO_OVERRIDE', - 1: 'APG_INFOFRAME_SOURCE_FROM_APG_REGISTERS', -} -APG_INFOFRAME_SOURCE_NO_OVERRIDE = 0 -APG_INFOFRAME_SOURCE_FROM_APG_REGISTERS = 1 -APG_PACKET_CONTROL_AUDIO_INFO_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'APG_RAMP_CONTROL_SIGN' -APG_RAMP_CONTROL_SIGN__enumvalues = { - 0: 'APG_RAMP_SIGNED', - 1: 'APG_RAMP_UNSIGNED', -} -APG_RAMP_SIGNED = 0 -APG_RAMP_UNSIGNED = 1 -APG_RAMP_CONTROL_SIGN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL' -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL__enumvalues = { - 0: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER1', - 1: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER2', - 2: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER3', - 3: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER4', - 4: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER5', - 5: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER6', -} -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER1 = 0 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER2 = 1 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER3 = 2 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER4 = 3 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER5 = 4 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER6 = 5 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL' -DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL__enumvalues = { - 0: 'DCIO_TEST_CLK_SEL_DISPCLK', - 1: 'DCIO_TEST_CLK_SEL_GATED_DISPCLK', - 2: 'DCIO_TEST_CLK_SEL_SOCCLK', -} -DCIO_TEST_CLK_SEL_DISPCLK = 0 -DCIO_TEST_CLK_SEL_GATED_DISPCLK = 1 -DCIO_TEST_CLK_SEL_SOCCLK = 2 -DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS' -DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS__enumvalues = { - 0: 'DCIO_DISPCLK_R_DCIO_GATE_DISABLE', - 1: 'DCIO_DISPCLK_R_DCIO_GATE_ENABLE', -} -DCIO_DISPCLK_R_DCIO_GATE_DISABLE = 0 -DCIO_DISPCLK_R_DCIO_GATE_ENABLE = 1 -DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DBG_ASYNC_4BIT_SEL' -DCIO_DBG_ASYNC_4BIT_SEL__enumvalues = { - 0: 'DCIO_DBG_ASYNC_4BIT_SEL_3TO0', - 1: 'DCIO_DBG_ASYNC_4BIT_SEL_7TO4', - 2: 'DCIO_DBG_ASYNC_4BIT_SEL_11TO8', - 3: 'DCIO_DBG_ASYNC_4BIT_SEL_15TO12', - 4: 'DCIO_DBG_ASYNC_4BIT_SEL_19TO16', - 5: 'DCIO_DBG_ASYNC_4BIT_SEL_23TO20', - 6: 'DCIO_DBG_ASYNC_4BIT_SEL_27TO24', - 7: 'DCIO_DBG_ASYNC_4BIT_SEL_31TO28', -} -DCIO_DBG_ASYNC_4BIT_SEL_3TO0 = 0 -DCIO_DBG_ASYNC_4BIT_SEL_7TO4 = 1 -DCIO_DBG_ASYNC_4BIT_SEL_11TO8 = 2 -DCIO_DBG_ASYNC_4BIT_SEL_15TO12 = 3 -DCIO_DBG_ASYNC_4BIT_SEL_19TO16 = 4 -DCIO_DBG_ASYNC_4BIT_SEL_23TO20 = 5 -DCIO_DBG_ASYNC_4BIT_SEL_27TO24 = 6 -DCIO_DBG_ASYNC_4BIT_SEL_31TO28 = 7 -DCIO_DBG_ASYNC_4BIT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DBG_ASYNC_BLOCK_SEL' -DCIO_DBG_ASYNC_BLOCK_SEL__enumvalues = { - 0: 'DCIO_DBG_ASYNC_BLOCK_SEL_OVERRIDE', - 1: 'DCIO_DBG_ASYNC_BLOCK_SEL_DCCG', - 2: 'DCIO_DBG_ASYNC_BLOCK_SEL_DCIO', - 3: 'DCIO_DBG_ASYNC_BLOCK_SEL_DIO', -} -DCIO_DBG_ASYNC_BLOCK_SEL_OVERRIDE = 0 -DCIO_DBG_ASYNC_BLOCK_SEL_DCCG = 1 -DCIO_DBG_ASYNC_BLOCK_SEL_DCIO = 2 -DCIO_DBG_ASYNC_BLOCK_SEL_DIO = 3 -DCIO_DBG_ASYNC_BLOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DCRXPHY_SOFT_RESET' -DCIO_DCRXPHY_SOFT_RESET__enumvalues = { - 0: 'DCIO_DCRXPHY_SOFT_RESET_DEASSERT', - 1: 'DCIO_DCRXPHY_SOFT_RESET_ASSERT', -} -DCIO_DCRXPHY_SOFT_RESET_DEASSERT = 0 -DCIO_DCRXPHY_SOFT_RESET_ASSERT = 1 -DCIO_DCRXPHY_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERICA_SEL' -DCIO_DC_GENERICA_SEL__enumvalues = { - 1: 'DCIO_GENERICA_SEL_STEREOSYNC', - 10: 'DCIO_GENERICA_SEL_GENERICA_DCCG', - 11: 'DCIO_GENERICA_SEL_SYNCEN', -} -DCIO_GENERICA_SEL_STEREOSYNC = 1 -DCIO_GENERICA_SEL_GENERICA_DCCG = 10 -DCIO_GENERICA_SEL_SYNCEN = 11 -DCIO_DC_GENERICA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERICB_SEL' -DCIO_DC_GENERICB_SEL__enumvalues = { - 1: 'DCIO_GENERICB_SEL_STEREOSYNC', - 10: 'DCIO_GENERICB_SEL_GENERICB_DCCG', - 11: 'DCIO_GENERICB_SEL_SYNCEN', -} -DCIO_GENERICB_SEL_STEREOSYNC = 1 -DCIO_GENERICB_SEL_GENERICB_DCCG = 10 -DCIO_GENERICB_SEL_SYNCEN = 11 -DCIO_DC_GENERICB_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL' -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_TEST_FBDIV_CLK_DIV2', - 1: 'DCIO_UNIPHYB_TEST_FBDIV_CLK_DIV2', - 2: 'DCIO_UNIPHYC_TEST_FBDIV_CLK_DIV2', - 3: 'DCIO_UNIPHYD_TEST_FBDIV_CLK_DIV2', - 4: 'DCIO_UNIPHYE_TEST_FBDIV_CLK_DIV2', - 5: 'DCIO_UNIPHYF_TEST_FBDIV_CLK_DIV2', - 6: 'DCIO_UNIPHYG_TEST_FBDIV_CLK_DIV2', -} -DCIO_UNIPHYA_TEST_FBDIV_CLK_DIV2 = 0 -DCIO_UNIPHYB_TEST_FBDIV_CLK_DIV2 = 1 -DCIO_UNIPHYC_TEST_FBDIV_CLK_DIV2 = 2 -DCIO_UNIPHYD_TEST_FBDIV_CLK_DIV2 = 3 -DCIO_UNIPHYE_TEST_FBDIV_CLK_DIV2 = 4 -DCIO_UNIPHYF_TEST_FBDIV_CLK_DIV2 = 5 -DCIO_UNIPHYG_TEST_FBDIV_CLK_DIV2 = 6 -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL' -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_FBDIV_CLK', - 1: 'DCIO_UNIPHYB_FBDIV_CLK', - 2: 'DCIO_UNIPHYC_FBDIV_CLK', - 3: 'DCIO_UNIPHYD_FBDIV_CLK', - 4: 'DCIO_UNIPHYE_FBDIV_CLK', - 5: 'DCIO_UNIPHYF_FBDIV_CLK', - 6: 'DCIO_UNIPHYG_FBDIV_CLK', -} -DCIO_UNIPHYA_FBDIV_CLK = 0 -DCIO_UNIPHYB_FBDIV_CLK = 1 -DCIO_UNIPHYC_FBDIV_CLK = 2 -DCIO_UNIPHYD_FBDIV_CLK = 3 -DCIO_UNIPHYE_FBDIV_CLK = 4 -DCIO_UNIPHYF_FBDIV_CLK = 5 -DCIO_UNIPHYG_FBDIV_CLK = 6 -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL' -DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_FBDIV_SSC_CLK', - 1: 'DCIO_UNIPHYB_FBDIV_SSC_CLK', - 2: 'DCIO_UNIPHYC_FBDIV_SSC_CLK', - 3: 'DCIO_UNIPHYD_FBDIV_SSC_CLK', - 4: 'DCIO_UNIPHYE_FBDIV_SSC_CLK', - 5: 'DCIO_UNIPHYF_FBDIV_SSC_CLK', - 6: 'DCIO_UNIPHYG_FBDIV_SSC_CLK', -} -DCIO_UNIPHYA_FBDIV_SSC_CLK = 0 -DCIO_UNIPHYB_FBDIV_SSC_CLK = 1 -DCIO_UNIPHYC_FBDIV_SSC_CLK = 2 -DCIO_UNIPHYD_FBDIV_SSC_CLK = 3 -DCIO_UNIPHYE_FBDIV_SSC_CLK = 4 -DCIO_UNIPHYF_FBDIV_SSC_CLK = 5 -DCIO_UNIPHYG_FBDIV_SSC_CLK = 6 -DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL' -DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_TEST_REFDIV_CLK', - 1: 'DCIO_UNIPHYB_TEST_REFDIV_CLK', - 2: 'DCIO_UNIPHYC_TEST_REFDIV_CLK', - 3: 'DCIO_UNIPHYD_TEST_REFDIV_CLK', - 4: 'DCIO_UNIPHYE_TEST_REFDIV_CLK', - 5: 'DCIO_UNIPHYF_TEST_REFDIV_CLK', - 6: 'DCIO_UNIPHYG_TEST_REFDIV_CLK', -} -DCIO_UNIPHYA_TEST_REFDIV_CLK = 0 -DCIO_UNIPHYB_TEST_REFDIV_CLK = 1 -DCIO_UNIPHYC_TEST_REFDIV_CLK = 2 -DCIO_UNIPHYD_TEST_REFDIV_CLK = 3 -DCIO_UNIPHYE_TEST_REFDIV_CLK = 4 -DCIO_UNIPHYF_TEST_REFDIV_CLK = 5 -DCIO_UNIPHYG_TEST_REFDIV_CLK = 6 -DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GPIO_DEBUG_DPRX_LOOPBACK_ENABLE' -DCIO_DC_GPIO_DEBUG_DPRX_LOOPBACK_ENABLE__enumvalues = { - 0: 'DCIO_DPRX_LOOPBACK_ENABLE_NORMAL', - 1: 'DCIO_DPRX_LOOPBACK_ENABLE_LOOP', -} -DCIO_DPRX_LOOPBACK_ENABLE_NORMAL = 0 -DCIO_DPRX_LOOPBACK_ENABLE_LOOP = 1 -DCIO_DC_GPIO_DEBUG_DPRX_LOOPBACK_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GPU_TIMER_READ_SELECT' -DCIO_DC_GPU_TIMER_READ_SELECT__enumvalues = { - 0: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE', - 1: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE', - 2: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_P_FLIP', - 3: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_P_FLIP', - 4: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM', - 5: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM', -} -DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE = 0 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE = 1 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_P_FLIP = 2 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_P_FLIP = 3 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM = 4 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM = 5 -DCIO_DC_GPU_TIMER_READ_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GPU_TIMER_START_POSITION' -DCIO_DC_GPU_TIMER_START_POSITION__enumvalues = { - 0: 'DCIO_GPU_TIMER_START_0_END_27', - 1: 'DCIO_GPU_TIMER_START_1_END_28', - 2: 'DCIO_GPU_TIMER_START_2_END_29', - 3: 'DCIO_GPU_TIMER_START_3_END_30', - 4: 'DCIO_GPU_TIMER_START_4_END_31', - 5: 'DCIO_GPU_TIMER_START_6_END_33', - 6: 'DCIO_GPU_TIMER_START_8_END_35', - 7: 'DCIO_GPU_TIMER_START_10_END_37', -} -DCIO_GPU_TIMER_START_0_END_27 = 0 -DCIO_GPU_TIMER_START_1_END_28 = 1 -DCIO_GPU_TIMER_START_2_END_29 = 2 -DCIO_GPU_TIMER_START_3_END_30 = 3 -DCIO_GPU_TIMER_START_4_END_31 = 4 -DCIO_GPU_TIMER_START_6_END_33 = 5 -DCIO_GPU_TIMER_START_8_END_35 = 6 -DCIO_GPU_TIMER_START_10_END_37 = 7 -DCIO_DC_GPU_TIMER_START_POSITION = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL' -DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL__enumvalues = { - 0: 'DCIO_GENLK_CLK_OUTPUT_SEL_DISABLE', - 1: 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL1', - 2: 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL2', - 3: 'DCIO_GENLK_CLK_OUTPUT_SEL_RESERVED_VALUE3', -} -DCIO_GENLK_CLK_OUTPUT_SEL_DISABLE = 0 -DCIO_GENLK_CLK_OUTPUT_SEL_PPLL1 = 1 -DCIO_GENLK_CLK_OUTPUT_SEL_PPLL2 = 2 -DCIO_GENLK_CLK_OUTPUT_SEL_RESERVED_VALUE3 = 3 -DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_REF_CLK_CNTL_HSYNCA_OUTPUT_SEL' -DCIO_DC_REF_CLK_CNTL_HSYNCA_OUTPUT_SEL__enumvalues = { - 0: 'DCIO_HSYNCA_OUTPUT_SEL_DISABLE', - 1: 'DCIO_HSYNCA_OUTPUT_SEL_PPLL1', - 2: 'DCIO_HSYNCA_OUTPUT_SEL_PPLL2', - 3: 'DCIO_HSYNCA_OUTPUT_SEL_RESERVED', -} -DCIO_HSYNCA_OUTPUT_SEL_DISABLE = 0 -DCIO_HSYNCA_OUTPUT_SEL_PPLL1 = 1 -DCIO_HSYNCA_OUTPUT_SEL_PPLL2 = 2 -DCIO_HSYNCA_OUTPUT_SEL_RESERVED = 3 -DCIO_DC_REF_CLK_CNTL_HSYNCA_OUTPUT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DIO_EXT_VSYNC_MASK' -DCIO_DIO_EXT_VSYNC_MASK__enumvalues = { - 0: 'DCIO_EXT_VSYNC_MASK_NONE', - 1: 'DCIO_EXT_VSYNC_MASK_PIPE0', - 2: 'DCIO_EXT_VSYNC_MASK_PIPE1', - 3: 'DCIO_EXT_VSYNC_MASK_PIPE2', - 4: 'DCIO_EXT_VSYNC_MASK_PIPE3', - 5: 'DCIO_EXT_VSYNC_MASK_PIPE4', - 6: 'DCIO_EXT_VSYNC_MASK_PIPE5', - 7: 'DCIO_EXT_VSYNC_MASK_NONE_DUPLICATE', -} -DCIO_EXT_VSYNC_MASK_NONE = 0 -DCIO_EXT_VSYNC_MASK_PIPE0 = 1 -DCIO_EXT_VSYNC_MASK_PIPE1 = 2 -DCIO_EXT_VSYNC_MASK_PIPE2 = 3 -DCIO_EXT_VSYNC_MASK_PIPE3 = 4 -DCIO_EXT_VSYNC_MASK_PIPE4 = 5 -DCIO_EXT_VSYNC_MASK_PIPE5 = 6 -DCIO_EXT_VSYNC_MASK_NONE_DUPLICATE = 7 -DCIO_DIO_EXT_VSYNC_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DIO_OTG_EXT_VSYNC_MUX' -DCIO_DIO_OTG_EXT_VSYNC_MUX__enumvalues = { - 0: 'DCIO_EXT_VSYNC_MUX_SWAPLOCKB', - 1: 'DCIO_EXT_VSYNC_MUX_OTG0', - 2: 'DCIO_EXT_VSYNC_MUX_OTG1', - 3: 'DCIO_EXT_VSYNC_MUX_OTG2', - 4: 'DCIO_EXT_VSYNC_MUX_OTG3', - 5: 'DCIO_EXT_VSYNC_MUX_OTG4', - 6: 'DCIO_EXT_VSYNC_MUX_OTG5', - 7: 'DCIO_EXT_VSYNC_MUX_GENERICB', -} -DCIO_EXT_VSYNC_MUX_SWAPLOCKB = 0 -DCIO_EXT_VSYNC_MUX_OTG0 = 1 -DCIO_EXT_VSYNC_MUX_OTG1 = 2 -DCIO_EXT_VSYNC_MUX_OTG2 = 3 -DCIO_EXT_VSYNC_MUX_OTG3 = 4 -DCIO_EXT_VSYNC_MUX_OTG4 = 5 -DCIO_EXT_VSYNC_MUX_OTG5 = 6 -DCIO_EXT_VSYNC_MUX_GENERICB = 7 -DCIO_DIO_OTG_EXT_VSYNC_MUX = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DPCS_INTERRUPT_MASK' -DCIO_DPCS_INTERRUPT_MASK__enumvalues = { - 0: 'DCIO_DPCS_INTERRUPT_DISABLE', - 1: 'DCIO_DPCS_INTERRUPT_ENABLE', -} -DCIO_DPCS_INTERRUPT_DISABLE = 0 -DCIO_DPCS_INTERRUPT_ENABLE = 1 -DCIO_DPCS_INTERRUPT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DPCS_INTERRUPT_TYPE' -DCIO_DPCS_INTERRUPT_TYPE__enumvalues = { - 0: 'DCIO_DPCS_INTERRUPT_TYPE_LEVEL_BASED', - 1: 'DCIO_DPCS_INTERRUPT_TYPE_PULSE_BASED', -} -DCIO_DPCS_INTERRUPT_TYPE_LEVEL_BASED = 0 -DCIO_DPCS_INTERRUPT_TYPE_PULSE_BASED = 1 -DCIO_DPCS_INTERRUPT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DSYNC_SOFT_RESET' -DCIO_DSYNC_SOFT_RESET__enumvalues = { - 0: 'DCIO_DSYNC_SOFT_RESET_DEASSERT', - 1: 'DCIO_DSYNC_SOFT_RESET_ASSERT', -} -DCIO_DSYNC_SOFT_RESET_DEASSERT = 0 -DCIO_DSYNC_SOFT_RESET_ASSERT = 1 -DCIO_DSYNC_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GENLK_CLK_GSL_MASK' -DCIO_GENLK_CLK_GSL_MASK__enumvalues = { - 0: 'DCIO_GENLK_CLK_GSL_MASK_NO', - 1: 'DCIO_GENLK_CLK_GSL_MASK_TIMING', - 2: 'DCIO_GENLK_CLK_GSL_MASK_STEREO', -} -DCIO_GENLK_CLK_GSL_MASK_NO = 0 -DCIO_GENLK_CLK_GSL_MASK_TIMING = 1 -DCIO_GENLK_CLK_GSL_MASK_STEREO = 2 -DCIO_GENLK_CLK_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GENLK_VSYNC_GSL_MASK' -DCIO_GENLK_VSYNC_GSL_MASK__enumvalues = { - 0: 'DCIO_GENLK_VSYNC_GSL_MASK_NO', - 1: 'DCIO_GENLK_VSYNC_GSL_MASK_TIMING', - 2: 'DCIO_GENLK_VSYNC_GSL_MASK_STEREO', -} -DCIO_GENLK_VSYNC_GSL_MASK_NO = 0 -DCIO_GENLK_VSYNC_GSL_MASK_TIMING = 1 -DCIO_GENLK_VSYNC_GSL_MASK_STEREO = 2 -DCIO_GENLK_VSYNC_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GSL_SEL' -DCIO_GSL_SEL__enumvalues = { - 0: 'DCIO_GSL_SEL_GROUP_0', - 1: 'DCIO_GSL_SEL_GROUP_1', - 2: 'DCIO_GSL_SEL_GROUP_2', -} -DCIO_GSL_SEL_GROUP_0 = 0 -DCIO_GSL_SEL_GROUP_1 = 1 -DCIO_GSL_SEL_GROUP_2 = 2 -DCIO_GSL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_PHY_HPO_ENC_SRC_SEL' -DCIO_PHY_HPO_ENC_SRC_SEL__enumvalues = { - 0: 'HPO_SRC0', - 1: 'HPO_SRC_RESERVED', -} -HPO_SRC0 = 0 -HPO_SRC_RESERVED = 1 -DCIO_PHY_HPO_ENC_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_SWAPLOCK_A_GSL_MASK' -DCIO_SWAPLOCK_A_GSL_MASK__enumvalues = { - 0: 'DCIO_SWAPLOCK_A_GSL_MASK_NO', - 1: 'DCIO_SWAPLOCK_A_GSL_MASK_TIMING', - 2: 'DCIO_SWAPLOCK_A_GSL_MASK_STEREO', -} -DCIO_SWAPLOCK_A_GSL_MASK_NO = 0 -DCIO_SWAPLOCK_A_GSL_MASK_TIMING = 1 -DCIO_SWAPLOCK_A_GSL_MASK_STEREO = 2 -DCIO_SWAPLOCK_A_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_SWAPLOCK_B_GSL_MASK' -DCIO_SWAPLOCK_B_GSL_MASK__enumvalues = { - 0: 'DCIO_SWAPLOCK_B_GSL_MASK_NO', - 1: 'DCIO_SWAPLOCK_B_GSL_MASK_TIMING', - 2: 'DCIO_SWAPLOCK_B_GSL_MASK_STEREO', -} -DCIO_SWAPLOCK_B_GSL_MASK_NO = 0 -DCIO_SWAPLOCK_B_GSL_MASK_TIMING = 1 -DCIO_SWAPLOCK_B_GSL_MASK_STEREO = 2 -DCIO_SWAPLOCK_B_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE' -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE__enumvalues = { - 0: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH0', - 1: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH1', - 2: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH2', - 3: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH3', -} -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH0 = 0 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH1 = 1 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH2 = 2 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH3 = 3 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_IMPCAL_SEL' -DCIO_UNIPHY_IMPCAL_SEL__enumvalues = { - 0: 'DCIO_UNIPHY_IMPCAL_SEL_TEMPERATURE', - 1: 'DCIO_UNIPHY_IMPCAL_SEL_BINARY', -} -DCIO_UNIPHY_IMPCAL_SEL_TEMPERATURE = 0 -DCIO_UNIPHY_IMPCAL_SEL_BINARY = 1 -DCIO_UNIPHY_IMPCAL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT' -DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT__enumvalues = { - 0: 'DCIO_UNIPHY_CHANNEL_NO_INVERSION', - 1: 'DCIO_UNIPHY_CHANNEL_INVERTED', -} -DCIO_UNIPHY_CHANNEL_NO_INVERSION = 0 -DCIO_UNIPHY_CHANNEL_INVERTED = 1 -DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK' -DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK__enumvalues = { - 0: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_DISALLOW', - 1: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW', - 2: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_DEBOUNCED', - 3: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_TOGGLE_FILTERED', -} -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_DISALLOW = 0 -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW = 1 -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_DEBOUNCED = 2 -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_TOGGLE_FILTERED = 3 -DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_ALL_PWR_OK' -DCIOCHIP_AUX_ALL_PWR_OK__enumvalues = { - 0: 'DCIOCHIP_AUX_ALL_PWR_OK_0', - 1: 'DCIOCHIP_AUX_ALL_PWR_OK_1', -} -DCIOCHIP_AUX_ALL_PWR_OK_0 = 0 -DCIOCHIP_AUX_ALL_PWR_OK_1 = 1 -DCIOCHIP_AUX_ALL_PWR_OK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_CSEL0P9' -DCIOCHIP_AUX_CSEL0P9__enumvalues = { - 0: 'DCIOCHIP_AUX_CSEL_DEC1P0', - 1: 'DCIOCHIP_AUX_CSEL_DEC0P9', -} -DCIOCHIP_AUX_CSEL_DEC1P0 = 0 -DCIOCHIP_AUX_CSEL_DEC0P9 = 1 -DCIOCHIP_AUX_CSEL0P9 = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_CSEL1P1' -DCIOCHIP_AUX_CSEL1P1__enumvalues = { - 0: 'DCIOCHIP_AUX_CSEL_INC1P0', - 1: 'DCIOCHIP_AUX_CSEL_INC1P1', -} -DCIOCHIP_AUX_CSEL_INC1P0 = 0 -DCIOCHIP_AUX_CSEL_INC1P1 = 1 -DCIOCHIP_AUX_CSEL1P1 = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_FALLSLEWSEL' -DCIOCHIP_AUX_FALLSLEWSEL__enumvalues = { - 0: 'DCIOCHIP_AUX_FALLSLEWSEL_LOW', - 1: 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH0', - 2: 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH1', - 3: 'DCIOCHIP_AUX_FALLSLEWSEL_ULTRAHIGH', -} -DCIOCHIP_AUX_FALLSLEWSEL_LOW = 0 -DCIOCHIP_AUX_FALLSLEWSEL_HIGH0 = 1 -DCIOCHIP_AUX_FALLSLEWSEL_HIGH1 = 2 -DCIOCHIP_AUX_FALLSLEWSEL_ULTRAHIGH = 3 -DCIOCHIP_AUX_FALLSLEWSEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_HYS_TUNE' -DCIOCHIP_AUX_HYS_TUNE__enumvalues = { - 0: 'DCIOCHIP_AUX_HYS_TUNE_0', - 1: 'DCIOCHIP_AUX_HYS_TUNE_1', - 2: 'DCIOCHIP_AUX_HYS_TUNE_2', - 3: 'DCIOCHIP_AUX_HYS_TUNE_3', -} -DCIOCHIP_AUX_HYS_TUNE_0 = 0 -DCIOCHIP_AUX_HYS_TUNE_1 = 1 -DCIOCHIP_AUX_HYS_TUNE_2 = 2 -DCIOCHIP_AUX_HYS_TUNE_3 = 3 -DCIOCHIP_AUX_HYS_TUNE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_RECEIVER_SEL' -DCIOCHIP_AUX_RECEIVER_SEL__enumvalues = { - 0: 'DCIOCHIP_AUX_RECEIVER_SEL_0', - 1: 'DCIOCHIP_AUX_RECEIVER_SEL_1', - 2: 'DCIOCHIP_AUX_RECEIVER_SEL_2', - 3: 'DCIOCHIP_AUX_RECEIVER_SEL_3', -} -DCIOCHIP_AUX_RECEIVER_SEL_0 = 0 -DCIOCHIP_AUX_RECEIVER_SEL_1 = 1 -DCIOCHIP_AUX_RECEIVER_SEL_2 = 2 -DCIOCHIP_AUX_RECEIVER_SEL_3 = 3 -DCIOCHIP_AUX_RECEIVER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_RSEL0P9' -DCIOCHIP_AUX_RSEL0P9__enumvalues = { - 0: 'DCIOCHIP_AUX_RSEL_DEC1P0', - 1: 'DCIOCHIP_AUX_RSEL_DEC0P9', -} -DCIOCHIP_AUX_RSEL_DEC1P0 = 0 -DCIOCHIP_AUX_RSEL_DEC0P9 = 1 -DCIOCHIP_AUX_RSEL0P9 = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_RSEL1P1' -DCIOCHIP_AUX_RSEL1P1__enumvalues = { - 0: 'DCIOCHIP_AUX_RSEL_INC1P0', - 1: 'DCIOCHIP_AUX_RSEL_INC1P1', -} -DCIOCHIP_AUX_RSEL_INC1P0 = 0 -DCIOCHIP_AUX_RSEL_INC1P1 = 1 -DCIOCHIP_AUX_RSEL1P1 = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_SPIKESEL' -DCIOCHIP_AUX_SPIKESEL__enumvalues = { - 0: 'DCIOCHIP_AUX_SPIKESEL_50NS', - 1: 'DCIOCHIP_AUX_SPIKESEL_10NS', -} -DCIOCHIP_AUX_SPIKESEL_50NS = 0 -DCIOCHIP_AUX_SPIKESEL_10NS = 1 -DCIOCHIP_AUX_SPIKESEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_VOD_TUNE' -DCIOCHIP_AUX_VOD_TUNE__enumvalues = { - 0: 'DCIOCHIP_AUX_VOD_TUNE_0', - 1: 'DCIOCHIP_AUX_VOD_TUNE_1', - 2: 'DCIOCHIP_AUX_VOD_TUNE_2', - 3: 'DCIOCHIP_AUX_VOD_TUNE_3', -} -DCIOCHIP_AUX_VOD_TUNE_0 = 0 -DCIOCHIP_AUX_VOD_TUNE_1 = 1 -DCIOCHIP_AUX_VOD_TUNE_2 = 2 -DCIOCHIP_AUX_VOD_TUNE_3 = 3 -DCIOCHIP_AUX_VOD_TUNE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_GPIO_MASK_EN' -DCIOCHIP_GPIO_MASK_EN__enumvalues = { - 0: 'DCIOCHIP_GPIO_MASK_EN_HARDWARE', - 1: 'DCIOCHIP_GPIO_MASK_EN_SOFTWARE', -} -DCIOCHIP_GPIO_MASK_EN_HARDWARE = 0 -DCIOCHIP_GPIO_MASK_EN_SOFTWARE = 1 -DCIOCHIP_GPIO_MASK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_HPD_SEL' -DCIOCHIP_HPD_SEL__enumvalues = { - 0: 'DCIOCHIP_HPD_SEL_ASYNC', - 1: 'DCIOCHIP_HPD_SEL_CLOCKED', -} -DCIOCHIP_HPD_SEL_ASYNC = 0 -DCIOCHIP_HPD_SEL_CLOCKED = 1 -DCIOCHIP_HPD_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_I2C_COMPSEL' -DCIOCHIP_I2C_COMPSEL__enumvalues = { - 0: 'DCIOCHIP_I2C_REC_SCHMIT', - 1: 'DCIOCHIP_I2C_REC_COMPARATOR', -} -DCIOCHIP_I2C_REC_SCHMIT = 0 -DCIOCHIP_I2C_REC_COMPARATOR = 1 -DCIOCHIP_I2C_COMPSEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_I2C_FALLSLEWSEL' -DCIOCHIP_I2C_FALLSLEWSEL__enumvalues = { - 0: 'DCIOCHIP_I2C_FALLSLEWSEL_00', - 1: 'DCIOCHIP_I2C_FALLSLEWSEL_01', - 2: 'DCIOCHIP_I2C_FALLSLEWSEL_10', - 3: 'DCIOCHIP_I2C_FALLSLEWSEL_11', -} -DCIOCHIP_I2C_FALLSLEWSEL_00 = 0 -DCIOCHIP_I2C_FALLSLEWSEL_01 = 1 -DCIOCHIP_I2C_FALLSLEWSEL_10 = 2 -DCIOCHIP_I2C_FALLSLEWSEL_11 = 3 -DCIOCHIP_I2C_FALLSLEWSEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_I2C_RECEIVER_SEL' -DCIOCHIP_I2C_RECEIVER_SEL__enumvalues = { - 0: 'DCIOCHIP_I2C_RECEIVER_SEL_0', - 1: 'DCIOCHIP_I2C_RECEIVER_SEL_1', - 2: 'DCIOCHIP_I2C_RECEIVER_SEL_2', - 3: 'DCIOCHIP_I2C_RECEIVER_SEL_3', -} -DCIOCHIP_I2C_RECEIVER_SEL_0 = 0 -DCIOCHIP_I2C_RECEIVER_SEL_1 = 1 -DCIOCHIP_I2C_RECEIVER_SEL_2 = 2 -DCIOCHIP_I2C_RECEIVER_SEL_3 = 3 -DCIOCHIP_I2C_RECEIVER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_I2C_VPH_1V2_EN' -DCIOCHIP_I2C_VPH_1V2_EN__enumvalues = { - 0: 'DCIOCHIP_I2C_VPH_1V2_EN_0', - 1: 'DCIOCHIP_I2C_VPH_1V2_EN_1', -} -DCIOCHIP_I2C_VPH_1V2_EN_0 = 0 -DCIOCHIP_I2C_VPH_1V2_EN_1 = 1 -DCIOCHIP_I2C_VPH_1V2_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_INVERT' -DCIOCHIP_INVERT__enumvalues = { - 0: 'DCIOCHIP_POL_NON_INVERT', - 1: 'DCIOCHIP_POL_INVERT', -} -DCIOCHIP_POL_NON_INVERT = 0 -DCIOCHIP_POL_INVERT = 1 -DCIOCHIP_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_MASK' -DCIOCHIP_MASK__enumvalues = { - 0: 'DCIOCHIP_MASK_DISABLE', - 1: 'DCIOCHIP_MASK_ENABLE', -} -DCIOCHIP_MASK_DISABLE = 0 -DCIOCHIP_MASK_ENABLE = 1 -DCIOCHIP_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_PAD_MODE' -DCIOCHIP_PAD_MODE__enumvalues = { - 0: 'DCIOCHIP_PAD_MODE_DDC', - 1: 'DCIOCHIP_PAD_MODE_DP', -} -DCIOCHIP_PAD_MODE_DDC = 0 -DCIOCHIP_PAD_MODE_DP = 1 -DCIOCHIP_PAD_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_PD_EN' -DCIOCHIP_PD_EN__enumvalues = { - 0: 'DCIOCHIP_PD_EN_NOTALLOW', - 1: 'DCIOCHIP_PD_EN_ALLOW', -} -DCIOCHIP_PD_EN_NOTALLOW = 0 -DCIOCHIP_PD_EN_ALLOW = 1 -DCIOCHIP_PD_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_REF_27_SRC_SEL' -DCIOCHIP_REF_27_SRC_SEL__enumvalues = { - 0: 'DCIOCHIP_REF_27_SRC_SEL_XTAL_DIVIDER', - 1: 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_DIVIDER', - 2: 'DCIOCHIP_REF_27_SRC_SEL_XTAL_BYPASS', - 3: 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_BYPASS', -} -DCIOCHIP_REF_27_SRC_SEL_XTAL_DIVIDER = 0 -DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_DIVIDER = 1 -DCIOCHIP_REF_27_SRC_SEL_XTAL_BYPASS = 2 -DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_BYPASS = 3 -DCIOCHIP_REF_27_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE' -PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE__enumvalues = { - 0: 'PWRSEQ_BL_PWM_OVERRIDE_BL_OUT_DISABLE', - 1: 'PWRSEQ_BL_PWM_OVERRIDE_BL_OUT_ENABLE', -} -PWRSEQ_BL_PWM_OVERRIDE_BL_OUT_DISABLE = 0 -PWRSEQ_BL_PWM_OVERRIDE_BL_OUT_ENABLE = 1 -PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN' -PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN__enumvalues = { - 0: 'PWRSEQ_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN_NORMAL', - 1: 'PWRSEQ_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN_PWM', -} -PWRSEQ_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN_NORMAL = 0 -PWRSEQ_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN_PWM = 1 -PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_CNTL2_DBG_BL_PWM_INPUT_REFCLK_SELECT' -PWRSEQ_BL_PWM_CNTL2_DBG_BL_PWM_INPUT_REFCLK_SELECT__enumvalues = { - 0: 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_NORMAL', - 1: 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG1', - 2: 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG2', - 3: 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG3', -} -PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_NORMAL = 0 -PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG1 = 1 -PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG2 = 2 -PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG3 = 3 -PWRSEQ_BL_PWM_CNTL2_DBG_BL_PWM_INPUT_REFCLK_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_CNTL_BL_PWM_EN' -PWRSEQ_BL_PWM_CNTL_BL_PWM_EN__enumvalues = { - 0: 'PWRSEQ_BL_PWM_DISABLE', - 1: 'PWRSEQ_BL_PWM_ENABLE', -} -PWRSEQ_BL_PWM_DISABLE = 0 -PWRSEQ_BL_PWM_ENABLE = 1 -PWRSEQ_BL_PWM_CNTL_BL_PWM_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN' -PWRSEQ_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN__enumvalues = { - 0: 'PWRSEQ_BL_PWM_FRACTIONAL_DISABLE', - 1: 'PWRSEQ_BL_PWM_FRACTIONAL_ENABLE', -} -PWRSEQ_BL_PWM_FRACTIONAL_DISABLE = 0 -PWRSEQ_BL_PWM_FRACTIONAL_ENABLE = 1 -PWRSEQ_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN' -PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN__enumvalues = { - 0: 'PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_ENABLE', - 1: 'PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_DISABLE', -} -PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_ENABLE = 0 -PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_DISABLE = 1 -PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN' -PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN__enumvalues = { - 0: 'PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL_PWM', - 1: 'PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL1_PWM', -} -PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL_PWM = 0 -PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL1_PWM = 1 -PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_GRP1_REG_LOCK' -PWRSEQ_BL_PWM_GRP1_REG_LOCK__enumvalues = { - 0: 'PWRSEQ_BL_PWM_GRP1_REG_LOCK_DISABLE', - 1: 'PWRSEQ_BL_PWM_GRP1_REG_LOCK_ENABLE', -} -PWRSEQ_BL_PWM_GRP1_REG_LOCK_DISABLE = 0 -PWRSEQ_BL_PWM_GRP1_REG_LOCK_ENABLE = 1 -PWRSEQ_BL_PWM_GRP1_REG_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START' -PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START__enumvalues = { - 0: 'PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START_DISABLE', - 1: 'PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START_ENABLE', -} -PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START_DISABLE = 0 -PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START_ENABLE = 1 -PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_GPIO_MASK_EN' -PWRSEQ_GPIO_MASK_EN__enumvalues = { - 0: 'PWRSEQ_GPIO_MASK_EN_HARDWARE', - 1: 'PWRSEQ_GPIO_MASK_EN_SOFTWARE', -} -PWRSEQ_GPIO_MASK_EN_HARDWARE = 0 -PWRSEQ_GPIO_MASK_EN_SOFTWARE = 1 -PWRSEQ_GPIO_MASK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON' -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON__enumvalues = { - 0: 'PWRSEQ_PANEL_BLON_OFF', - 1: 'PWRSEQ_PANEL_BLON_ON', -} -PWRSEQ_PANEL_BLON_OFF = 0 -PWRSEQ_PANEL_BLON_ON = 1 -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON_POL' -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON_POL__enumvalues = { - 0: 'PWRSEQ_PANEL_BLON_POL_NON_INVERT', - 1: 'PWRSEQ_PANEL_BLON_POL_INVERT', -} -PWRSEQ_PANEL_BLON_POL_NON_INVERT = 0 -PWRSEQ_PANEL_BLON_POL_INVERT = 1 -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON_POL = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON' -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON__enumvalues = { - 0: 'PWRSEQ_PANEL_DIGON_OFF', - 1: 'PWRSEQ_PANEL_DIGON_ON', -} -PWRSEQ_PANEL_DIGON_OFF = 0 -PWRSEQ_PANEL_DIGON_ON = 1 -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON_POL' -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON_POL__enumvalues = { - 0: 'PWRSEQ_PANEL_DIGON_POL_NON_INVERT', - 1: 'PWRSEQ_PANEL_DIGON_POL_INVERT', -} -PWRSEQ_PANEL_DIGON_POL_NON_INVERT = 0 -PWRSEQ_PANEL_DIGON_POL_INVERT = 1 -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON_POL = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_SYNCEN_POL' -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_SYNCEN_POL__enumvalues = { - 0: 'PWRSEQ_PANEL_SYNCEN_POL_NON_INVERT', - 1: 'PWRSEQ_PANEL_SYNCEN_POL_INVERT', -} -PWRSEQ_PANEL_SYNCEN_POL_NON_INVERT = 0 -PWRSEQ_PANEL_SYNCEN_POL_INVERT = 1 -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_SYNCEN_POL = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_CNTL_TARGET_STATE' -PWRSEQ_PANEL_PWRSEQ_CNTL_TARGET_STATE__enumvalues = { - 0: 'PWRSEQ_PANEL_PWRSEQ_TARGET_STATE_LCD_OFF', - 1: 'PWRSEQ_PANEL_PWRSEQ_TARGET_STATE_LCD_ON', -} -PWRSEQ_PANEL_PWRSEQ_TARGET_STATE_LCD_OFF = 0 -PWRSEQ_PANEL_PWRSEQ_TARGET_STATE_LCD_ON = 1 -PWRSEQ_PANEL_PWRSEQ_CNTL_TARGET_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_DELAY2_PANEL_VARY_BL_OVERRIDE_EN' -PWRSEQ_PANEL_PWRSEQ_DELAY2_PANEL_VARY_BL_OVERRIDE_EN__enumvalues = { - 0: 'PWRSEQ_PANEL_VARY_BL_OVERRIDE_EN_BLON', - 1: 'PWRSEQ_PANEL_VARY_BL_OVERRIDE_EN_SEPARATE', -} -PWRSEQ_PANEL_VARY_BL_OVERRIDE_EN_BLON = 0 -PWRSEQ_PANEL_VARY_BL_OVERRIDE_EN_SEPARATE = 1 -PWRSEQ_PANEL_PWRSEQ_DELAY2_PANEL_VARY_BL_OVERRIDE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_CORB_SIZE' -AZ_CORB_SIZE__enumvalues = { - 0: 'AZ_CORB_SIZE_2ENTRIES_RESERVED', - 1: 'AZ_CORB_SIZE_16ENTRIES_RESERVED', - 2: 'AZ_CORB_SIZE_256ENTRIES', - 3: 'AZ_CORB_SIZE_RESERVED', -} -AZ_CORB_SIZE_2ENTRIES_RESERVED = 0 -AZ_CORB_SIZE_16ENTRIES_RESERVED = 1 -AZ_CORB_SIZE_256ENTRIES = 2 -AZ_CORB_SIZE_RESERVED = 3 -AZ_CORB_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_GLOBAL_CAPABILITIES' -AZ_GLOBAL_CAPABILITIES__enumvalues = { - 0: 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_NOT_SUPPORTED', - 1: 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_SUPPORTED', -} -AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_NOT_SUPPORTED = 0 -AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_SUPPORTED = 1 -AZ_GLOBAL_CAPABILITIES = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_RIRB_SIZE' -AZ_RIRB_SIZE__enumvalues = { - 0: 'AZ_RIRB_SIZE_2ENTRIES_RESERVED', - 1: 'AZ_RIRB_SIZE_16ENTRIES_RESERVED', - 2: 'AZ_RIRB_SIZE_256ENTRIES', - 3: 'AZ_RIRB_SIZE_UNDEFINED', -} -AZ_RIRB_SIZE_2ENTRIES_RESERVED = 0 -AZ_RIRB_SIZE_16ENTRIES_RESERVED = 1 -AZ_RIRB_SIZE_256ENTRIES = 2 -AZ_RIRB_SIZE_UNDEFINED = 3 -AZ_RIRB_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_RIRB_WRITE_POINTER_RESET' -AZ_RIRB_WRITE_POINTER_RESET__enumvalues = { - 0: 'AZ_RIRB_WRITE_POINTER_NOT_RESET', - 1: 'AZ_RIRB_WRITE_POINTER_DO_RESET', -} -AZ_RIRB_WRITE_POINTER_NOT_RESET = 0 -AZ_RIRB_WRITE_POINTER_DO_RESET = 1 -AZ_RIRB_WRITE_POINTER_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_STATE_CHANGE_STATUS' -AZ_STATE_CHANGE_STATUS__enumvalues = { - 0: 'AZ_STATE_CHANGE_STATUS_CODEC_NOT_PRESENT', - 1: 'AZ_STATE_CHANGE_STATUS_CODEC_PRESENT', -} -AZ_STATE_CHANGE_STATUS_CODEC_NOT_PRESENT = 0 -AZ_STATE_CHANGE_STATUS_CODEC_PRESENT = 1 -AZ_STATE_CHANGE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'CORB_READ_POINTER_RESET' -CORB_READ_POINTER_RESET__enumvalues = { - 0: 'CORB_READ_POINTER_RESET_CORB_DMA_IS_NOT_RESET', - 1: 'CORB_READ_POINTER_RESET_CORB_DMA_IS_RESET', -} -CORB_READ_POINTER_RESET_CORB_DMA_IS_NOT_RESET = 0 -CORB_READ_POINTER_RESET_CORB_DMA_IS_RESET = 1 -CORB_READ_POINTER_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE' -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE__enumvalues = { - 0: 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_DISABLE', - 1: 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_ENABLE', -} -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_DISABLE = 0 -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_ENABLE = 1 -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL' -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE', -} -GENERIC_AZ_CONTROLLER_REGISTER_DISABLE = 0 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE = 1 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED' -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE_RESERVED', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_RESERVED', -} -GENERIC_AZ_CONTROLLER_REGISTER_DISABLE_RESERVED = 0 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_RESERVED = 1 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS' -GENERIC_AZ_CONTROLLER_REGISTER_STATUS__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET', -} -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET = 0 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET = 1 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED' -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET_RESERVED', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET_RESERVED', -} -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET_RESERVED = 0 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET_RESERVED = 1 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE' -GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE__enumvalues = { - 0: 'ACCEPT_UNSOLICITED_RESPONSE_NOT_ENABLE', - 1: 'ACCEPT_UNSOLICITED_RESPONSE_ENABLE', -} -ACCEPT_UNSOLICITED_RESPONSE_NOT_ENABLE = 0 -ACCEPT_UNSOLICITED_RESPONSE_ENABLE = 1 -GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_CONTROL_CONTROLLER_RESET' -GLOBAL_CONTROL_CONTROLLER_RESET__enumvalues = { - 0: 'CONTROLLER_RESET_AZ_CONTROLLER_IN_RESET', - 1: 'CONTROLLER_RESET_AZ_CONTROLLER_NOT_IN_RESET', -} -CONTROLLER_RESET_AZ_CONTROLLER_IN_RESET = 0 -CONTROLLER_RESET_AZ_CONTROLLER_NOT_IN_RESET = 1 -GLOBAL_CONTROL_CONTROLLER_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_CONTROL_FLUSH_CONTROL' -GLOBAL_CONTROL_FLUSH_CONTROL__enumvalues = { - 0: 'FLUSH_CONTROL_FLUSH_NOT_STARTED', - 1: 'FLUSH_CONTROL_FLUSH_STARTED', -} -FLUSH_CONTROL_FLUSH_NOT_STARTED = 0 -FLUSH_CONTROL_FLUSH_STARTED = 1 -GLOBAL_CONTROL_FLUSH_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_STATUS_FLUSH_STATUS' -GLOBAL_STATUS_FLUSH_STATUS__enumvalues = { - 0: 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_NOT_ENDED', - 1: 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_ENDED', -} -GLOBAL_STATUS_FLUSH_STATUS_FLUSH_NOT_ENDED = 0 -GLOBAL_STATUS_FLUSH_STATUS_FLUSH_ENDED = 1 -GLOBAL_STATUS_FLUSH_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY' -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY__enumvalues = { - 0: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_NOT_BUSY', - 1: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_IS_BUSY', -} -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_NOT_BUSY = 0 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_IS_BUSY = 1 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY = ctypes.c_uint32 # enum - -# values for enumeration 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID' -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID__enumvalues = { - 0: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_NO_IMMEDIATE_RESPONSE_VALID', - 1: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_IMMEDIATE_RESPONSE_VALID', -} -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_NO_IMMEDIATE_RESPONSE_VALID = 0 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_IMMEDIATE_RESPONSE_VALID = 1 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID = ctypes.c_uint32 # enum - -# values for enumeration 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL' -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL__enumvalues = { - 0: 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 1: 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_ENABLED', -} -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_DISABLED = 0 -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_ENABLED = 1 -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL' -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL__enumvalues = { - 0: 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 1: 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_ENABLED', -} -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_DISABLED = 0 -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_ENABLED = 1 -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_0_SYNCHRONIZATION' -STREAM_0_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_0_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_0_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_0_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_0_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_0_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_10_SYNCHRONIZATION' -STREAM_10_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_10_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_10_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_10_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_10_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_10_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_11_SYNCHRONIZATION' -STREAM_11_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_11_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_11_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_11_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_11_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_11_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_12_SYNCHRONIZATION' -STREAM_12_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_12_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_12_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_12_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_12_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_12_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_13_SYNCHRONIZATION' -STREAM_13_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_13_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_13_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_13_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_13_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_13_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_14_SYNCHRONIZATION' -STREAM_14_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_14_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_14_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_14_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_14_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_14_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_15_SYNCHRONIZATION' -STREAM_15_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_15_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_15_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_15_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_15_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_15_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_1_SYNCHRONIZATION' -STREAM_1_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_1_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_1_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_1_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_1_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_1_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_2_SYNCHRONIZATION' -STREAM_2_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_2_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_2_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_2_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_2_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_2_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_3_SYNCHRONIZATION' -STREAM_3_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_3_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_3_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_3_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_3_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_3_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_4_SYNCHRONIZATION' -STREAM_4_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_4_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_4_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_4_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_4_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_4_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_5_SYNCHRONIZATION' -STREAM_5_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_5_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_5_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_5_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_5_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_5_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_6_SYNCHRONIZATION' -STREAM_6_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_6_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_6_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_6_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_6_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_6_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_7_SYNCHRONIZATION' -STREAM_7_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_7_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_7_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_7_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_7_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_7_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_8_SYNCHRONIZATION' -STREAM_8_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_8_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_8_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_8_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_8_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_8_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_9_SYNCHRONIZATION' -STREAM_9_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_9_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_9_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_9_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_9_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_9_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 5: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16 = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20 = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24 = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED = 5 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 5: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 6: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 7: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 8: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1 = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2 = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3 = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4 = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5 = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6 = 5 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7 = 6 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8 = 7 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED = 8 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 5: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 6: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 7: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1 = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3 = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED = 5 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED = 6 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED = 7 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1 = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2 = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4 = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_NOT_ENABLE', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_ENABLE', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_NOT_ENABLE = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_ENABLE = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_IS_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_NOT_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_IS_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_NOT_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ZERO', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ONE', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ZERO = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ONE = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_NOT_ON', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_ON', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_NOT_ON = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_ON = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE' -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_0', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_1', - 2: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_2', - 3: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_3', - 4: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_4', - 5: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_5', - 6: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_6', - 7: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_7', - 8: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_8', - 9: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_9', - 10: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_10', - 11: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_11', - 12: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_12', - 13: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_13', - 14: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_14', - 15: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_15', -} -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_0 = 0 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_1 = 1 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_2 = 2 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_3 = 3 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_4 = 4 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_5 = 5 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_6 = 6 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_7 = 7 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_8 = 8 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_9 = 9 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_10 = 10 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_11 = 11 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_12 = 12 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_13 = 13 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_14 = 14 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_15 = 15 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT' -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_NO_INFO_OR_PERMITTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_FORBIDDEN', -} -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_NO_INFO_OR_PERMITTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_FORBIDDEN = 1 -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE' -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', -} -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE' -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_SHUT_OFF', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_DRIVEN', -} -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_SHUT_OFF = 0 -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_DRIVEN = 1 -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET' -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET__enumvalues = { - 0: 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_NOT_RESET', - 1: 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_RESET_REFCLK_LOGIC', -} -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_NOT_RESET = 0 -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_RESET_REFCLK_LOGIC = 1 -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_DIS_CTRL' -MEM_PWR_DIS_CTRL__enumvalues = { - 0: 'ENABLE_MEM_PWR_CTRL', - 1: 'DISABLE_MEM_PWR_CTRL', -} -ENABLE_MEM_PWR_CTRL = 0 -DISABLE_MEM_PWR_CTRL = 1 -MEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_FORCE_CTRL' -MEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'NO_FORCE_REQUEST', - 1: 'FORCE_LIGHT_SLEEP_REQUEST', - 2: 'FORCE_DEEP_SLEEP_REQUEST', - 3: 'FORCE_SHUT_DOWN_REQUEST', -} -NO_FORCE_REQUEST = 0 -FORCE_LIGHT_SLEEP_REQUEST = 1 -FORCE_DEEP_SLEEP_REQUEST = 2 -FORCE_SHUT_DOWN_REQUEST = 3 -MEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_FORCE_CTRL2' -MEM_PWR_FORCE_CTRL2__enumvalues = { - 0: 'NO_FORCE_REQ', - 1: 'FORCE_LIGHT_SLEEP_REQ', -} -NO_FORCE_REQ = 0 -FORCE_LIGHT_SLEEP_REQ = 1 -MEM_PWR_FORCE_CTRL2 = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_SEL_CTRL' -MEM_PWR_SEL_CTRL__enumvalues = { - 0: 'DYNAMIC_SHUT_DOWN_ENABLE', - 1: 'DYNAMIC_DEEP_SLEEP_ENABLE', - 2: 'DYNAMIC_LIGHT_SLEEP_ENABLE', -} -DYNAMIC_SHUT_DOWN_ENABLE = 0 -DYNAMIC_DEEP_SLEEP_ENABLE = 1 -DYNAMIC_LIGHT_SLEEP_ENABLE = 2 -MEM_PWR_SEL_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_SEL_CTRL2' -MEM_PWR_SEL_CTRL2__enumvalues = { - 0: 'DYNAMIC_DEEP_SLEEP_EN', - 1: 'DYNAMIC_LIGHT_SLEEP_EN', -} -DYNAMIC_DEEP_SLEEP_EN = 0 -DYNAMIC_LIGHT_SLEEP_EN = 1 -MEM_PWR_SEL_CTRL2 = ctypes.c_uint32 # enum - -# values for enumeration 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY' -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY__enumvalues = { - 0: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_ALL', - 1: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_6', - 2: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_5', - 3: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_4', - 4: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_3', - 5: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_2', - 6: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_1', - 7: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_0', -} -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_ALL = 0 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_6 = 1 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_5 = 2 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_4 = 3 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_3 = 4 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_2 = 5 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_1 = 6 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_0 = 7 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY = ctypes.c_uint32 # enum - -# values for enumeration 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY' -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY__enumvalues = { - 0: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_ALL', - 1: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_6', - 2: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_5', - 3: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_4', - 4: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_3', - 5: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_2', - 6: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_1', - 7: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_0', -} -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_ALL = 0 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_6 = 1 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_5 = 2 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_4 = 3 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_3 = 4 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_2 = 5 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_1 = 6 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_0 = 7 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 5: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16 = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20 = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24 = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED = 5 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 5: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 6: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 7: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 8: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1 = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2 = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3 = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4 = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5 = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6 = 5 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7 = 6 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8 = 7 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED = 8 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 5: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 6: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 7: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1 = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3 = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED = 5 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED = 6 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED = 7 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1 = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2 = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4 = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_SHUT_OFF', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_DRIVEN', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_SHUT_OFF = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_DRIVEN = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET' -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET__enumvalues = { - 0: 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_NOT_RESET', - 1: 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_DO_RESET', -} -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_NOT_RESET = 0 -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_DO_RESET = 1 -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_LATENCY_COUNTER_CONTROL' -AZ_LATENCY_COUNTER_CONTROL__enumvalues = { - 0: 'AZ_LATENCY_COUNTER_NO_RESET', - 1: 'AZ_LATENCY_COUNTER_RESET_DONE', -} -AZ_LATENCY_COUNTER_NO_RESET = 0 -AZ_LATENCY_COUNTER_RESET_DONE = 1 -AZ_LATENCY_COUNTER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_NOT_SET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_SET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_NOT_SET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_SET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_NOT_SET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_SET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_NOT_SET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_SET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_DISABLED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLED', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_DISABLED = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLED = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_NOT_SET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_SET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_NOT_SET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_SET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_DISABLED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLED', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_DISABLED = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLED = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_DISABLED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_ENABLED', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_DISABLED = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_ENABLED = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RESET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_IS_RESET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RESET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_IS_RESET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RUN', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_DO_RUN', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RUN = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_DO_RUN = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_NO_TRAFFIC_PRIORITY', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_YES_TRAFFIC_PRIORITY', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_NO_TRAFFIC_PRIORITY = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_YES_TRAFFIC_PRIORITY = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_16', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_20', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_24', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 5: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_8_RESERVED = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_16 = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_20 = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_24 = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_32_RESERVED = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_RESERVED = 5 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_1', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_2', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_3', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_4', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_5', - 5: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_6', - 6: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_7', - 7: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_8', - 8: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_9_RESERVED', - 9: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_10_RESERVED', - 10: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_11_RESERVED', - 11: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_12_RESERVED', - 12: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_13_RESERVED', - 13: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_14_RESERVED', - 14: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_15_RESERVED', - 15: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_16_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_1 = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_2 = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_3 = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_4 = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_5 = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_6 = 5 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_7 = 6 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_8 = 7 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_9_RESERVED = 8 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_10_RESERVED = 9 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_11_RESERVED = 10 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_12_RESERVED = 11 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_13_RESERVED = 12 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_14_RESERVED = 13 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_15_RESERVED = 14 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_16_RESERVED = 15 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 5: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 6: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 7: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY1 = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY3 = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED = 5 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED = 6 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED = 7 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY1 = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY2 = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY4 = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_48KHZ = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_44P1KHZ = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_FORMAT_OVERRIDE', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_FORMAT_OVERRIDE = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 9: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED = 8 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE' -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 1: 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', -} -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE = 0 -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE = 1 -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE' -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABLILITY', - 1: 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABLILITY', -} -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABLILITY = 0 -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABLILITY = 1 -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER_PRESENT', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER_PRESENT = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 9: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED = 8 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_NOT_BALANCED', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_NOT_BALANCED = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_EAPD_PIN', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_EAPD_PIN', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_EAPD_PIN = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_EAPD_PIN = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_JACK_DETECTION_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_DETECTION_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_JACK_DETECTION_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_DETECTION_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_DIGITAL', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_ANALOG = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_DIGITAL = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_FORMAT_OVERRIDE', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_FORMAT_OVERRIDE = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_NO_PROCESSING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_PROCESSING_CAPABILITIES', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_NO_PROCESSING_CAPABILITIES = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_PROCESSING_CAPABILITIES = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NOT_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NOT_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 9: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED = 8 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESING_CAPABILITIES', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESING_CAPABILITIES = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESING_CAPABILITIES = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 9: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED = 8 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_NOT_BALANCED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_NOT_BALANCED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_NOT_ENABLED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_ENABLED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_NOT_ENABLED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_ENABLED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_NO_EAPD_PIN', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_HAVE_EAPD_PIN', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_NO_EAPD_PIN = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_HAVE_EAPD_PIN = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_NOT_ENABLED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_ENABLED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_NOT_ENABLED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_ENABLED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_JACK_PRESENCE_DETECTION_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_PRESENCE_DETECTION_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_JACK_PRESENCE_DETECTION_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_PRESENCE_DETECTION_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_BITS_PER_COMPONENT_ENUM' -DSCC_BITS_PER_COMPONENT_ENUM__enumvalues = { - 8: 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT', - 10: 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT', - 12: 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT', -} -DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT = 8 -DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT = 10 -DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT = 12 -DSCC_BITS_PER_COMPONENT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_DSC_VERSION_MAJOR_ENUM' -DSCC_DSC_VERSION_MAJOR_ENUM__enumvalues = { - 1: 'DSCC_DSC_VERSION_MAJOR_ENUM_DSC_1_X_MAJOR_VERSION', -} -DSCC_DSC_VERSION_MAJOR_ENUM_DSC_1_X_MAJOR_VERSION = 1 -DSCC_DSC_VERSION_MAJOR_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_DSC_VERSION_MINOR_ENUM' -DSCC_DSC_VERSION_MINOR_ENUM__enumvalues = { - 1: 'DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_1_MINOR_VERSION', - 2: 'DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_2_MINOR_VERSION', -} -DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_1_MINOR_VERSION = 1 -DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_2_MINOR_VERSION = 2 -DSCC_DSC_VERSION_MINOR_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_ENABLE_ENUM' -DSCC_ENABLE_ENUM__enumvalues = { - 0: 'DSCC_ENABLE_ENUM_DISABLED', - 1: 'DSCC_ENABLE_ENUM_ENABLED', -} -DSCC_ENABLE_ENUM_DISABLED = 0 -DSCC_ENABLE_ENUM_ENABLED = 1 -DSCC_ENABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_ICH_RESET_ENUM' -DSCC_ICH_RESET_ENUM__enumvalues = { - 1: 'DSCC_ICH_RESET_ENUM_SLICE0_ICH_RESET', - 2: 'DSCC_ICH_RESET_ENUM_SLICE1_ICH_RESET', - 4: 'DSCC_ICH_RESET_ENUM_SLICE2_ICH_RESET', - 8: 'DSCC_ICH_RESET_ENUM_SLICE3_ICH_RESET', -} -DSCC_ICH_RESET_ENUM_SLICE0_ICH_RESET = 1 -DSCC_ICH_RESET_ENUM_SLICE1_ICH_RESET = 2 -DSCC_ICH_RESET_ENUM_SLICE2_ICH_RESET = 4 -DSCC_ICH_RESET_ENUM_SLICE3_ICH_RESET = 8 -DSCC_ICH_RESET_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_LINEBUF_DEPTH_ENUM' -DSCC_LINEBUF_DEPTH_ENUM__enumvalues = { - 8: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_8_BIT', - 9: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_9_BIT', - 10: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_10_BIT', - 11: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_11_BIT', - 12: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_12_BIT', - 13: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_13_BIT', -} -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_8_BIT = 8 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_9_BIT = 9 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_10_BIT = 10 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_11_BIT = 11 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_12_BIT = 12 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_13_BIT = 13 -DSCC_LINEBUF_DEPTH_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_MEM_PWR_DIS_ENUM' -DSCC_MEM_PWR_DIS_ENUM__enumvalues = { - 0: 'DSCC_MEM_PWR_DIS_ENUM_REQUEST_EN', - 1: 'DSCC_MEM_PWR_DIS_ENUM_REQUEST_DIS', -} -DSCC_MEM_PWR_DIS_ENUM_REQUEST_EN = 0 -DSCC_MEM_PWR_DIS_ENUM_REQUEST_DIS = 1 -DSCC_MEM_PWR_DIS_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_MEM_PWR_FORCE_ENUM' -DSCC_MEM_PWR_FORCE_ENUM__enumvalues = { - 0: 'DSCC_MEM_PWR_FORCE_ENUM_NO_FORCE_REQUEST', - 1: 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_SHUT_DOWN_REQUEST', -} -DSCC_MEM_PWR_FORCE_ENUM_NO_FORCE_REQUEST = 0 -DSCC_MEM_PWR_FORCE_ENUM_FORCE_LIGHT_SLEEP_REQUEST = 1 -DSCC_MEM_PWR_FORCE_ENUM_FORCE_DEEP_SLEEP_REQUEST = 2 -DSCC_MEM_PWR_FORCE_ENUM_FORCE_SHUT_DOWN_REQUEST = 3 -DSCC_MEM_PWR_FORCE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'POWER_STATE_ENUM' -POWER_STATE_ENUM__enumvalues = { - 0: 'POWER_STATE_ENUM_ON', - 1: 'POWER_STATE_ENUM_LS', - 2: 'POWER_STATE_ENUM_DS', - 3: 'POWER_STATE_ENUM_SD', -} -POWER_STATE_ENUM_ON = 0 -POWER_STATE_ENUM_LS = 1 -POWER_STATE_ENUM_DS = 2 -POWER_STATE_ENUM_SD = 3 -POWER_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCCIF_BITS_PER_COMPONENT_ENUM' -DSCCIF_BITS_PER_COMPONENT_ENUM__enumvalues = { - 8: 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT', - 10: 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT', - 12: 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT', -} -DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT = 8 -DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT = 10 -DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT = 12 -DSCCIF_BITS_PER_COMPONENT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCCIF_ENABLE_ENUM' -DSCCIF_ENABLE_ENUM__enumvalues = { - 0: 'DSCCIF_ENABLE_ENUM_DISABLED', - 1: 'DSCCIF_ENABLE_ENUM_ENABLED', -} -DSCCIF_ENABLE_ENUM_DISABLED = 0 -DSCCIF_ENABLE_ENUM_ENABLED = 1 -DSCCIF_ENABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM' -DSCCIF_INPUT_PIXEL_FORMAT_ENUM__enumvalues = { - 0: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_RGB', - 1: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_YCBCR_444', - 2: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_SIMPLE_YCBCR_422', - 3: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_422', - 4: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_420', -} -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_RGB = 0 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_YCBCR_444 = 1 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_SIMPLE_YCBCR_422 = 2 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_422 = 3 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_420 = 4 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CLOCK_GATING_DISABLE_ENUM' -CLOCK_GATING_DISABLE_ENUM__enumvalues = { - 0: 'CLOCK_GATING_DISABLE_ENUM_ENABLED', - 1: 'CLOCK_GATING_DISABLE_ENUM_DISABLED', -} -CLOCK_GATING_DISABLE_ENUM_ENABLED = 0 -CLOCK_GATING_DISABLE_ENUM_DISABLED = 1 -CLOCK_GATING_DISABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'ENABLE_ENUM' -ENABLE_ENUM__enumvalues = { - 0: 'ENABLE_ENUM_DISABLED', - 1: 'ENABLE_ENUM_ENABLED', -} -ENABLE_ENUM_DISABLED = 0 -ENABLE_ENUM_ENABLED = 1 -ENABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'TEST_CLOCK_MUX_SELECT_ENUM' -TEST_CLOCK_MUX_SELECT_ENUM__enumvalues = { - 0: 'TEST_CLOCK_MUX_SELECT_DISPCLK_P', - 1: 'TEST_CLOCK_MUX_SELECT_DISPCLK_G', - 2: 'TEST_CLOCK_MUX_SELECT_DISPCLK_R', - 3: 'TEST_CLOCK_MUX_SELECT_DSCCLK_P', - 4: 'TEST_CLOCK_MUX_SELECT_DSCCLK_G', - 5: 'TEST_CLOCK_MUX_SELECT_DSCCLK_R', -} -TEST_CLOCK_MUX_SELECT_DISPCLK_P = 0 -TEST_CLOCK_MUX_SELECT_DISPCLK_G = 1 -TEST_CLOCK_MUX_SELECT_DISPCLK_R = 2 -TEST_CLOCK_MUX_SELECT_DSCCLK_P = 3 -TEST_CLOCK_MUX_SELECT_DSCCLK_G = 4 -TEST_CLOCK_MUX_SELECT_DSCCLK_R = 5 -TEST_CLOCK_MUX_SELECT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_CRC_CONT_EN_ENUM' -DWB_CRC_CONT_EN_ENUM__enumvalues = { - 0: 'DWB_CRC_CONT_EN_ONE_SHOT', - 1: 'DWB_CRC_CONT_EN_CONT', -} -DWB_CRC_CONT_EN_ONE_SHOT = 0 -DWB_CRC_CONT_EN_CONT = 1 -DWB_CRC_CONT_EN_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_CRC_SRC_SEL_ENUM' -DWB_CRC_SRC_SEL_ENUM__enumvalues = { - 0: 'DWB_CRC_SRC_SEL_DWB_IN', - 1: 'DWB_CRC_SRC_SEL_OGAM_OUT', - 2: 'DWB_CRC_SRC_SEL_DWB_OUT', -} -DWB_CRC_SRC_SEL_DWB_IN = 0 -DWB_CRC_SRC_SEL_OGAM_OUT = 1 -DWB_CRC_SRC_SEL_DWB_OUT = 2 -DWB_CRC_SRC_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_DATA_OVERFLOW_INT_TYPE_ENUM' -DWB_DATA_OVERFLOW_INT_TYPE_ENUM__enumvalues = { - 0: 'DWB_DATA_OVERFLOW_INT_TYPE_0', - 1: 'DWB_DATA_OVERFLOW_INT_TYPE_1', -} -DWB_DATA_OVERFLOW_INT_TYPE_0 = 0 -DWB_DATA_OVERFLOW_INT_TYPE_1 = 1 -DWB_DATA_OVERFLOW_INT_TYPE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_DATA_OVERFLOW_TYPE_ENUM' -DWB_DATA_OVERFLOW_TYPE_ENUM__enumvalues = { - 0: 'DWB_DATA_OVERFLOW_TYPE_NO_OVERFLOW', - 1: 'DWB_DATA_OVERFLOW_TYPE_BUFFER', - 2: 'DWB_DATA_OVERFLOW_TYPE_VUPDATE', - 3: 'DWB_DATA_OVERFLOW_TYPE_VREADY', -} -DWB_DATA_OVERFLOW_TYPE_NO_OVERFLOW = 0 -DWB_DATA_OVERFLOW_TYPE_BUFFER = 1 -DWB_DATA_OVERFLOW_TYPE_VUPDATE = 2 -DWB_DATA_OVERFLOW_TYPE_VREADY = 3 -DWB_DATA_OVERFLOW_TYPE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_DEBUG_SEL_ENUM' -DWB_DEBUG_SEL_ENUM__enumvalues = { - 0: 'DWB_DEBUG_SEL_FC', - 1: 'DWB_DEBUG_SEL_RESERVED', - 2: 'DWB_DEBUG_SEL_DWBCP', - 3: 'DWB_DEBUG_SEL_PERFMON', -} -DWB_DEBUG_SEL_FC = 0 -DWB_DEBUG_SEL_RESERVED = 1 -DWB_DEBUG_SEL_DWBCP = 2 -DWB_DEBUG_SEL_PERFMON = 3 -DWB_DEBUG_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_MEM_PWR_FORCE_ENUM' -DWB_MEM_PWR_FORCE_ENUM__enumvalues = { - 0: 'DWB_MEM_PWR_FORCE_DIS', - 1: 'DWB_MEM_PWR_FORCE_LS', - 2: 'DWB_MEM_PWR_FORCE_DS', - 3: 'DWB_MEM_PWR_FORCE_SD', -} -DWB_MEM_PWR_FORCE_DIS = 0 -DWB_MEM_PWR_FORCE_LS = 1 -DWB_MEM_PWR_FORCE_DS = 2 -DWB_MEM_PWR_FORCE_SD = 3 -DWB_MEM_PWR_FORCE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_MEM_PWR_STATE_ENUM' -DWB_MEM_PWR_STATE_ENUM__enumvalues = { - 0: 'DWB_MEM_PWR_STATE_ON', - 1: 'DWB_MEM_PWR_STATE_LS', - 2: 'DWB_MEM_PWR_STATE_DS', - 3: 'DWB_MEM_PWR_STATE_SD', -} -DWB_MEM_PWR_STATE_ON = 0 -DWB_MEM_PWR_STATE_LS = 1 -DWB_MEM_PWR_STATE_DS = 2 -DWB_MEM_PWR_STATE_SD = 3 -DWB_MEM_PWR_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_TEST_CLK_SEL_ENUM' -DWB_TEST_CLK_SEL_ENUM__enumvalues = { - 0: 'DWB_TEST_CLK_SEL_R', - 1: 'DWB_TEST_CLK_SEL_G', - 2: 'DWB_TEST_CLK_SEL_P', -} -DWB_TEST_CLK_SEL_R = 0 -DWB_TEST_CLK_SEL_G = 1 -DWB_TEST_CLK_SEL_P = 2 -DWB_TEST_CLK_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'FC_EYE_SELECTION_ENUM' -FC_EYE_SELECTION_ENUM__enumvalues = { - 0: 'FC_EYE_SELECTION_STEREO_DIS', - 1: 'FC_EYE_SELECTION_LEFT_EYE', - 2: 'FC_EYE_SELECTION_RIGHT_EYE', -} -FC_EYE_SELECTION_STEREO_DIS = 0 -FC_EYE_SELECTION_LEFT_EYE = 1 -FC_EYE_SELECTION_RIGHT_EYE = 2 -FC_EYE_SELECTION_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'FC_FRAME_CAPTURE_RATE_ENUM' -FC_FRAME_CAPTURE_RATE_ENUM__enumvalues = { - 0: 'FC_FRAME_CAPTURE_RATE_FULL', - 1: 'FC_FRAME_CAPTURE_RATE_HALF', - 2: 'FC_FRAME_CAPTURE_RATE_THIRD', - 3: 'FC_FRAME_CAPTURE_RATE_QUARTER', -} -FC_FRAME_CAPTURE_RATE_FULL = 0 -FC_FRAME_CAPTURE_RATE_HALF = 1 -FC_FRAME_CAPTURE_RATE_THIRD = 2 -FC_FRAME_CAPTURE_RATE_QUARTER = 3 -FC_FRAME_CAPTURE_RATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'FC_STEREO_EYE_POLARITY_ENUM' -FC_STEREO_EYE_POLARITY_ENUM__enumvalues = { - 0: 'FC_STEREO_EYE_POLARITY_LEFT', - 1: 'FC_STEREO_EYE_POLARITY_RIGHT', -} -FC_STEREO_EYE_POLARITY_LEFT = 0 -FC_STEREO_EYE_POLARITY_RIGHT = 1 -FC_STEREO_EYE_POLARITY_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_GAMUT_REMAP_COEF_FORMAT_ENUM' -DWB_GAMUT_REMAP_COEF_FORMAT_ENUM__enumvalues = { - 0: 'DWB_GAMUT_REMAP_COEF_FORMAT_S2_13', - 1: 'DWB_GAMUT_REMAP_COEF_FORMAT_S3_12', -} -DWB_GAMUT_REMAP_COEF_FORMAT_S2_13 = 0 -DWB_GAMUT_REMAP_COEF_FORMAT_S3_12 = 1 -DWB_GAMUT_REMAP_COEF_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_GAMUT_REMAP_MODE_ENUM' -DWB_GAMUT_REMAP_MODE_ENUM__enumvalues = { - 0: 'DWB_GAMUT_REMAP_MODE_BYPASS', - 1: 'DWB_GAMUT_REMAP_MODE_COEF_A', - 2: 'DWB_GAMUT_REMAP_MODE_COEF_B', - 3: 'DWB_GAMUT_REMAP_MODE_RESERVED', -} -DWB_GAMUT_REMAP_MODE_BYPASS = 0 -DWB_GAMUT_REMAP_MODE_COEF_A = 1 -DWB_GAMUT_REMAP_MODE_COEF_B = 2 -DWB_GAMUT_REMAP_MODE_RESERVED = 3 -DWB_GAMUT_REMAP_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_LUT_NUM_SEG' -DWB_LUT_NUM_SEG__enumvalues = { - 0: 'DWB_SEGMENTS_1', - 1: 'DWB_SEGMENTS_2', - 2: 'DWB_SEGMENTS_4', - 3: 'DWB_SEGMENTS_8', - 4: 'DWB_SEGMENTS_16', - 5: 'DWB_SEGMENTS_32', - 6: 'DWB_SEGMENTS_64', - 7: 'DWB_SEGMENTS_128', -} -DWB_SEGMENTS_1 = 0 -DWB_SEGMENTS_2 = 1 -DWB_SEGMENTS_4 = 2 -DWB_SEGMENTS_8 = 3 -DWB_SEGMENTS_16 = 4 -DWB_SEGMENTS_32 = 5 -DWB_SEGMENTS_64 = 6 -DWB_SEGMENTS_128 = 7 -DWB_LUT_NUM_SEG = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_LUT_CONFIG_MODE_ENUM' -DWB_OGAM_LUT_CONFIG_MODE_ENUM__enumvalues = { - 0: 'DWB_OGAM_LUT_CONFIG_MODE_DIFF', - 1: 'DWB_OGAM_LUT_CONFIG_MODE_SAME', -} -DWB_OGAM_LUT_CONFIG_MODE_DIFF = 0 -DWB_OGAM_LUT_CONFIG_MODE_SAME = 1 -DWB_OGAM_LUT_CONFIG_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_LUT_HOST_SEL_ENUM' -DWB_OGAM_LUT_HOST_SEL_ENUM__enumvalues = { - 0: 'DWB_OGAM_LUT_HOST_SEL_RAMA', - 1: 'DWB_OGAM_LUT_HOST_SEL_RAMB', -} -DWB_OGAM_LUT_HOST_SEL_RAMA = 0 -DWB_OGAM_LUT_HOST_SEL_RAMB = 1 -DWB_OGAM_LUT_HOST_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_LUT_READ_COLOR_SEL_ENUM' -DWB_OGAM_LUT_READ_COLOR_SEL_ENUM__enumvalues = { - 0: 'DWB_OGAM_LUT_READ_COLOR_SEL_B', - 1: 'DWB_OGAM_LUT_READ_COLOR_SEL_G', - 2: 'DWB_OGAM_LUT_READ_COLOR_SEL_R', - 3: 'DWB_OGAM_LUT_READ_COLOR_SEL_RESERVED', -} -DWB_OGAM_LUT_READ_COLOR_SEL_B = 0 -DWB_OGAM_LUT_READ_COLOR_SEL_G = 1 -DWB_OGAM_LUT_READ_COLOR_SEL_R = 2 -DWB_OGAM_LUT_READ_COLOR_SEL_RESERVED = 3 -DWB_OGAM_LUT_READ_COLOR_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_LUT_READ_DBG_ENUM' -DWB_OGAM_LUT_READ_DBG_ENUM__enumvalues = { - 0: 'DWB_OGAM_LUT_READ_DBG_DISABLE', - 1: 'DWB_OGAM_LUT_READ_DBG_ENABLE', -} -DWB_OGAM_LUT_READ_DBG_DISABLE = 0 -DWB_OGAM_LUT_READ_DBG_ENABLE = 1 -DWB_OGAM_LUT_READ_DBG_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_MODE_ENUM' -DWB_OGAM_MODE_ENUM__enumvalues = { - 0: 'DWB_OGAM_MODE_BYPASS', - 1: 'DWB_OGAM_MODE_RESERVED', - 2: 'DWB_OGAM_MODE_RAM_LUT_ENABLED', -} -DWB_OGAM_MODE_BYPASS = 0 -DWB_OGAM_MODE_RESERVED = 1 -DWB_OGAM_MODE_RAM_LUT_ENABLED = 2 -DWB_OGAM_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_PWL_DISABLE_ENUM' -DWB_OGAM_PWL_DISABLE_ENUM__enumvalues = { - 0: 'DWB_OGAM_PWL_DISABLE_FALSE', - 1: 'DWB_OGAM_PWL_DISABLE_TRUE', -} -DWB_OGAM_PWL_DISABLE_FALSE = 0 -DWB_OGAM_PWL_DISABLE_TRUE = 1 -DWB_OGAM_PWL_DISABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_SELECT_ENUM' -DWB_OGAM_SELECT_ENUM__enumvalues = { - 0: 'DWB_OGAM_SELECT_A', - 1: 'DWB_OGAM_SELECT_B', -} -DWB_OGAM_SELECT_A = 0 -DWB_OGAM_SELECT_B = 1 -DWB_OGAM_SELECT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_LANE_CLK_EN' -RDPCSPIPE_CLOCK_CNTL_LANE_CLK_EN__enumvalues = { - 0: 'RDPCSPIPE_EXT_PCLK_EN_DISABLE', - 1: 'RDPCSPIPE_EXT_PCLK_EN_ENABLE', -} -RDPCSPIPE_EXT_PCLK_EN_DISABLE = 0 -RDPCSPIPE_EXT_PCLK_EN_ENABLE = 1 -RDPCSPIPE_CLOCK_CNTL_LANE_CLK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_RDPCS_APBCLK_EN' -RDPCSPIPE_CLOCK_CNTL_RDPCS_APBCLK_EN__enumvalues = { - 0: 'RDPCSPIPE_APBCLK_DISABLE', - 1: 'RDPCSPIPE_APBCLK_ENABLE', -} -RDPCSPIPE_APBCLK_DISABLE = 0 -RDPCSPIPE_APBCLK_ENABLE = 1 -RDPCSPIPE_CLOCK_CNTL_RDPCS_APBCLK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_CLOCK_ON' -RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_CLOCK_ON__enumvalues = { - 0: 'RDPCS_PIPE_CLK_CLOCK_OFF', - 1: 'RDPCS_PIPE_CLK_CLOCK_ON', -} -RDPCS_PIPE_CLK_CLOCK_OFF = 0 -RDPCS_PIPE_CLK_CLOCK_ON = 1 -RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_CLOCK_ON = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_EN' -RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_EN__enumvalues = { - 0: 'RDPCS_PIPE_CLK_DISABLE', - 1: 'RDPCS_PIPE_CLK_ENABLE', -} -RDPCS_PIPE_CLK_DISABLE = 0 -RDPCS_PIPE_CLK_ENABLE = 1 -RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_GATE_DIS' -RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_GATE_DIS__enumvalues = { - 0: 'RDPCS_PIPE_CLK_GATE_ENABLE', - 1: 'RDPCS_PIPE_CLK_GATE_DISABLE', -} -RDPCS_PIPE_CLK_GATE_ENABLE = 0 -RDPCS_PIPE_CLK_GATE_DISABLE = 1 -RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_GATE_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_PHYD32CLK_CLOCK_ON' -RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_PHYD32CLK_CLOCK_ON__enumvalues = { - 0: 'RDPCS_PIPE_PHYD32CLK_CLOCK_OFF', - 1: 'RDPCS_PIPE_PHYD32CLK_CLOCK_ON', -} -RDPCS_PIPE_PHYD32CLK_CLOCK_OFF = 0 -RDPCS_PIPE_PHYD32CLK_CLOCK_ON = 1 -RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_PHYD32CLK_CLOCK_ON = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_CLOCK_ON' -RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_CLOCK_ON__enumvalues = { - 0: 'RDPCSPIPE_SYMCLK_SRAMCLK_CLOCK_OFF', - 1: 'RDPCSPIPE_SYMCLK_SRAMCLK_CLOCK_ON', -} -RDPCSPIPE_SYMCLK_SRAMCLK_CLOCK_OFF = 0 -RDPCSPIPE_SYMCLK_SRAMCLK_CLOCK_ON = 1 -RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_CLOCK_ON = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_EN' -RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_EN__enumvalues = { - 0: 'RDPCSPIPE_SRAMCLK_DISABLE', - 1: 'RDPCSPIPE_SRAMCLK_ENABLE', -} -RDPCSPIPE_SRAMCLK_DISABLE = 0 -RDPCSPIPE_SRAMCLK_ENABLE = 1 -RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_GATE_DIS' -RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_GATE_DIS__enumvalues = { - 0: 'RDPCSPIPE_SRAMCLK_GATE_ENABLE', - 1: 'RDPCSPIPE_SRAMCLK_GATE_DISABLE', -} -RDPCSPIPE_SRAMCLK_GATE_ENABLE = 0 -RDPCSPIPE_SRAMCLK_GATE_DISABLE = 1 -RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_GATE_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_PASS' -RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_PASS__enumvalues = { - 0: 'RDPCSPIPE_SRAMCLK_NOT_PASS', - 1: 'RDPCSPIPE_SRAMCLK_PASS', -} -RDPCSPIPE_SRAMCLK_NOT_PASS = 0 -RDPCSPIPE_SRAMCLK_PASS = 1 -RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_PASS = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CNTL_RDPCS_PIPE_FIFO_EN' -RDPCSPIPE_CNTL_RDPCS_PIPE_FIFO_EN__enumvalues = { - 0: 'RDPCS_PIPE_FIFO_DISABLE', - 1: 'RDPCS_PIPE_FIFO_ENABLE', -} -RDPCS_PIPE_FIFO_DISABLE = 0 -RDPCS_PIPE_FIFO_ENABLE = 1 -RDPCSPIPE_CNTL_RDPCS_PIPE_FIFO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CNTL_RDPCS_PIPE_FIFO_LANE_EN' -RDPCSPIPE_CNTL_RDPCS_PIPE_FIFO_LANE_EN__enumvalues = { - 0: 'RDPCS_PIPE_FIFO_LANE_DISABLE', - 1: 'RDPCS_PIPE_FIFO_LANE_ENABLE', -} -RDPCS_PIPE_FIFO_LANE_DISABLE = 0 -RDPCS_PIPE_FIFO_LANE_ENABLE = 1 -RDPCSPIPE_CNTL_RDPCS_PIPE_FIFO_LANE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CNTL_RDPCS_PIPE_SOFT_RESET' -RDPCSPIPE_CNTL_RDPCS_PIPE_SOFT_RESET__enumvalues = { - 0: 'RDPCS_PIPE_SOFT_RESET_DISABLE', - 1: 'RDPCS_PIPE_SOFT_RESET_ENABLE', -} -RDPCS_PIPE_SOFT_RESET_DISABLE = 0 -RDPCS_PIPE_SOFT_RESET_ENABLE = 1 -RDPCSPIPE_CNTL_RDPCS_PIPE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CNTL_RDPCS_SRAM_SOFT_RESET' -RDPCSPIPE_CNTL_RDPCS_SRAM_SOFT_RESET__enumvalues = { - 0: 'RDPCSPIPE_SRAM_SRAM_RESET_DISABLE', - 1: 'RDPCSPIPE_SRAM_SRAM_RESET_ENABLE', -} -RDPCSPIPE_SRAM_SRAM_RESET_DISABLE = 0 -RDPCSPIPE_SRAM_SRAM_RESET_ENABLE = 1 -RDPCSPIPE_CNTL_RDPCS_SRAM_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK' -RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK__enumvalues = { - 0: 'RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK_DISABLE', - 1: 'RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK_ENABLE', -} -RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK_DISABLE = 0 -RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK_ENABLE = 1 -RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_DBG_OCLA_SEL' -RDPCSPIPE_DBG_OCLA_SEL__enumvalues = { - 0: 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_7_0', - 1: 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_15_8', - 2: 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_23_16', - 3: 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_31_24', - 4: 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_39_32', - 5: 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_47_40', - 6: 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_55_48', - 7: 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_63_56', -} -RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_7_0 = 0 -RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_15_8 = 1 -RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_23_16 = 2 -RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_31_24 = 3 -RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_39_32 = 4 -RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_47_40 = 5 -RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_55_48 = 6 -RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_63_56 = 7 -RDPCSPIPE_DBG_OCLA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_ENC_TYPE' -RDPCSPIPE_ENC_TYPE__enumvalues = { - 0: 'HDMI_TMDS_OR_DP_8B10B', - 1: 'HDMI_FRL', - 2: 'DP_128B132B', -} -HDMI_TMDS_OR_DP_8B10B = 0 -HDMI_FRL = 1 -DP_128B132B = 2 -RDPCSPIPE_ENC_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_FIFO_EMPTY' -RDPCSPIPE_FIFO_EMPTY__enumvalues = { - 0: 'RDPCSPIPE_FIFO_NOT_EMPTY', - 1: 'RDPCSPIPE_FIFO_IS_EMPTY', -} -RDPCSPIPE_FIFO_NOT_EMPTY = 0 -RDPCSPIPE_FIFO_IS_EMPTY = 1 -RDPCSPIPE_FIFO_EMPTY = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_FIFO_FULL' -RDPCSPIPE_FIFO_FULL__enumvalues = { - 0: 'RDPCSPIPE_FIFO_NOT_FULL', - 1: 'RDPCSPIPE_FIFO_IS_FULL', -} -RDPCSPIPE_FIFO_NOT_FULL = 0 -RDPCSPIPE_FIFO_IS_FULL = 1 -RDPCSPIPE_FIFO_FULL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_APB_PSLVERR_MASK' -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_APB_PSLVERR_MASK__enumvalues = { - 0: 'RDPCSPIPE_APB_PSLVERR_MASK_DISABLE', - 1: 'RDPCSPIPE_APB_PSLVERR_MASK_ENABLE', -} -RDPCSPIPE_APB_PSLVERR_MASK_DISABLE = 0 -RDPCSPIPE_APB_PSLVERR_MASK_ENABLE = 1 -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_APB_PSLVERR_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE' -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE__enumvalues = { - 0: 'RDPCSPIPE_DPALT_4LANE_TOGGLE_2LANE', - 1: 'RDPCSPIPE_DPALT_4LANE_TOGGLE_4LANE', -} -RDPCSPIPE_DPALT_4LANE_TOGGLE_2LANE = 0 -RDPCSPIPE_DPALT_4LANE_TOGGLE_4LANE = 1 -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE_MASK' -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE_MASK__enumvalues = { - 0: 'RDPCSPIPE_DPALT_4LANE_TOGGLE_MASK_DISABLE', - 1: 'RDPCSPIPE_DPALT_4LANE_TOGGLE_MASK_ENABLE', -} -RDPCSPIPE_DPALT_4LANE_TOGGLE_MASK_DISABLE = 0 -RDPCSPIPE_DPALT_4LANE_TOGGLE_MASK_ENABLE = 1 -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE' -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE__enumvalues = { - 0: 'RDPCSPIPE_DPALT_DISABLE_TOGGLE_ENABLE', - 1: 'RDPCSPIPE_DPALT_DISABLE_TOGGLE_DISABLE', -} -RDPCSPIPE_DPALT_DISABLE_TOGGLE_ENABLE = 0 -RDPCSPIPE_DPALT_DISABLE_TOGGLE_DISABLE = 1 -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE_MASK' -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE_MASK__enumvalues = { - 0: 'RDPCSPIPE_DPALT_DISABLE_TOGGLE_MASK_DISABLE', - 1: 'RDPCSPIPE_DPALT_DISABLE_TOGGLE_MASK_ENABLE', -} -RDPCSPIPE_DPALT_DISABLE_TOGGLE_MASK_DISABLE = 0 -RDPCSPIPE_DPALT_DISABLE_TOGGLE_MASK_ENABLE = 1 -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_PIPE_FIFO_ERROR_MASK' -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_PIPE_FIFO_ERROR_MASK__enumvalues = { - 0: 'RDPCSPIPE_PIPE_FIFO_ERROR_MASK_DISABLE', - 1: 'RDPCSPIPE_PIPE_FIFO_ERROR_MASK_ENABLE', -} -RDPCSPIPE_PIPE_FIFO_ERROR_MASK_DISABLE = 0 -RDPCSPIPE_PIPE_FIFO_ERROR_MASK_ENABLE = 1 -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_PIPE_FIFO_ERROR_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_REG_FIFO_ERROR_MASK' -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_REG_FIFO_ERROR_MASK__enumvalues = { - 0: 'RDPCSPIPE_REG_FIFO_ERROR_MASK_DISABLE', - 1: 'RDPCSPIPE_REG_FIFO_ERROR_MASK_ENABLE', -} -RDPCSPIPE_REG_FIFO_ERROR_MASK_DISABLE = 0 -RDPCSPIPE_REG_FIFO_ERROR_MASK_ENABLE = 1 -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_REG_FIFO_ERROR_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK' -RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK__enumvalues = { - 0: 'RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK_DISABLE', - 1: 'RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK_ENABLE', -} -RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK_DISABLE = 0 -RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK_ENABLE = 1 -RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PACK_MODE' -RDPCSPIPE_PACK_MODE__enumvalues = { - 0: 'TIGHT_PACK', - 1: 'LOOSE_PACK', -} -TIGHT_PACK = 0 -LOOSE_PACK = 1 -RDPCSPIPE_PACK_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_CR_MUX_SEL' -RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_CR_MUX_SEL__enumvalues = { - 0: 'RDPCSPIPE_PHY_CR_MUX_SEL_FOR_USB', - 1: 'RDPCSPIPE_PHY_CR_MUX_SEL_FOR_DC', -} -RDPCSPIPE_PHY_CR_MUX_SEL_FOR_USB = 0 -RDPCSPIPE_PHY_CR_MUX_SEL_FOR_DC = 1 -RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_CR_MUX_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_CR_PARA_SEL' -RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_CR_PARA_SEL__enumvalues = { - 0: 'RDPCSPIPE_PHY_CR_PARA_SEL_JTAG', - 1: 'RDPCSPIPE_PHY_CR_PARA_SEL_CR', -} -RDPCSPIPE_PHY_CR_PARA_SEL_JTAG = 0 -RDPCSPIPE_PHY_CR_PARA_SEL_CR = 1 -RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_CR_PARA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_REF_RANGE' -RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_REF_RANGE__enumvalues = { - 0: 'RDPCSPIPE_PHY_REF_RANGE_0', - 1: 'RDPCSPIPE_PHY_REF_RANGE_1', - 2: 'RDPCSPIPE_PHY_REF_RANGE_2', - 3: 'RDPCSPIPE_PHY_REF_RANGE_3', - 4: 'RDPCSPIPE_PHY_REF_RANGE_4', - 5: 'RDPCSPIPE_PHY_REF_RANGE_5', - 6: 'RDPCSPIPE_PHY_REF_RANGE_6', - 7: 'RDPCSPIPE_PHY_REF_RANGE_7', -} -RDPCSPIPE_PHY_REF_RANGE_0 = 0 -RDPCSPIPE_PHY_REF_RANGE_1 = 1 -RDPCSPIPE_PHY_REF_RANGE_2 = 2 -RDPCSPIPE_PHY_REF_RANGE_3 = 3 -RDPCSPIPE_PHY_REF_RANGE_4 = 4 -RDPCSPIPE_PHY_REF_RANGE_5 = 5 -RDPCSPIPE_PHY_REF_RANGE_6 = 6 -RDPCSPIPE_PHY_REF_RANGE_7 = 7 -RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_REF_RANGE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL0_RDPCS_SRAM_EXT_LD_DONE' -RDPCSPIPE_PHY_CNTL0_RDPCS_SRAM_EXT_LD_DONE__enumvalues = { - 0: 'RDPCSPIPE_SRAM_EXT_LD_NOT_DONE', - 1: 'RDPCSPIPE_SRAM_EXT_LD_DONE', -} -RDPCSPIPE_SRAM_EXT_LD_NOT_DONE = 0 -RDPCSPIPE_SRAM_EXT_LD_DONE = 1 -RDPCSPIPE_PHY_CNTL0_RDPCS_SRAM_EXT_LD_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL0_RDPCS_SRAM_INIT_DONE' -RDPCSPIPE_PHY_CNTL0_RDPCS_SRAM_INIT_DONE__enumvalues = { - 0: 'RDPCSPIPE_SRAM_INIT_NOT_DONE', - 1: 'RDPCSPIPE_SRAM_INIT_DONE', -} -RDPCSPIPE_SRAM_INIT_NOT_DONE = 0 -RDPCSPIPE_SRAM_INIT_DONE = 1 -RDPCSPIPE_PHY_CNTL0_RDPCS_SRAM_INIT_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL11_RDPCS_PHY_DP_REF_CLK_MPLLB_DIV' -RDPCSPIPE_PHY_CNTL11_RDPCS_PHY_DP_REF_CLK_MPLLB_DIV__enumvalues = { - 0: 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV1', - 1: 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV2', - 2: 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV3', - 3: 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV8', - 4: 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV16', -} -RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV1 = 0 -RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV2 = 1 -RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV3 = 2 -RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV8 = 3 -RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV16 = 4 -RDPCSPIPE_PHY_CNTL11_RDPCS_PHY_DP_REF_CLK_MPLLB_DIV = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL11_RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV' -RDPCSPIPE_PHY_CNTL11_RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV__enumvalues = { - 0: 'RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_0', - 1: 'RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_1', - 2: 'RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_2', - 3: 'RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_3', -} -RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_0 = 0 -RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_1 = 1 -RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_2 = 2 -RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_3 = 3 -RDPCSPIPE_PHY_CNTL11_RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL12_RDPCS_PHY_DP_MPLLB_TX_CLK_DIV' -RDPCSPIPE_PHY_CNTL12_RDPCS_PHY_DP_MPLLB_TX_CLK_DIV__enumvalues = { - 0: 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV', - 1: 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV2', - 2: 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV4', - 3: 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV8', - 4: 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV3', - 5: 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV5', - 6: 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV6', - 7: 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV10', -} -RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV = 0 -RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV2 = 1 -RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV4 = 2 -RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV8 = 3 -RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV3 = 4 -RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV5 = 5 -RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV6 = 6 -RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV10 = 7 -RDPCSPIPE_PHY_CNTL12_RDPCS_PHY_DP_MPLLB_TX_CLK_DIV = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL4_RDPCS_PHY_DP_TX_TERM_CTRL' -RDPCSPIPE_PHY_CNTL4_RDPCS_PHY_DP_TX_TERM_CTRL__enumvalues = { - 0: 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_54', - 1: 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_52', - 2: 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_50', - 3: 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_48', - 4: 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_46', - 5: 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_44', - 6: 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_42', - 7: 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_40', -} -RDPCSPIPE_PHY_DP_TX_TERM_CTRL_54 = 0 -RDPCSPIPE_PHY_DP_TX_TERM_CTRL_52 = 1 -RDPCSPIPE_PHY_DP_TX_TERM_CTRL_50 = 2 -RDPCSPIPE_PHY_DP_TX_TERM_CTRL_48 = 3 -RDPCSPIPE_PHY_DP_TX_TERM_CTRL_46 = 4 -RDPCSPIPE_PHY_DP_TX_TERM_CTRL_44 = 5 -RDPCSPIPE_PHY_DP_TX_TERM_CTRL_42 = 6 -RDPCSPIPE_PHY_DP_TX_TERM_CTRL_40 = 7 -RDPCSPIPE_PHY_CNTL4_RDPCS_PHY_DP_TX_TERM_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_DETRX_RESULT' -RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_DETRX_RESULT__enumvalues = { - 0: 'RDPCSPIPE_PHY_DP_TX_DETRX_RESULT_NO_DETECT', - 1: 'RDPCSPIPE_PHY_DP_TX_DETRX_RESULT_DETECT', -} -RDPCSPIPE_PHY_DP_TX_DETRX_RESULT_NO_DETECT = 0 -RDPCSPIPE_PHY_DP_TX_DETRX_RESULT_DETECT = 1 -RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_DETRX_RESULT = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_RATE' -RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_RATE__enumvalues = { - 0: 'RDPCSPIPE_PHY_DP_TX_RATE', - 1: 'RDPCSPIPE_PHY_DP_TX_RATE_DIV2', - 2: 'RDPCSPIPE_PHY_DP_TX_RATE_DIV4', -} -RDPCSPIPE_PHY_DP_TX_RATE = 0 -RDPCSPIPE_PHY_DP_TX_RATE_DIV2 = 1 -RDPCSPIPE_PHY_DP_TX_RATE_DIV4 = 2 -RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_WIDTH' -RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_WIDTH__enumvalues = { - 0: 'RDPCSPIPE_PHY_DP_TX_WIDTH_8', - 1: 'RDPCSPIPE_PHY_DP_TX_WIDTH_10', - 2: 'RDPCSPIPE_PHY_DP_TX_WIDTH_16', - 3: 'RDPCSPIPE_PHY_DP_TX_WIDTH_20', -} -RDPCSPIPE_PHY_DP_TX_WIDTH_8 = 0 -RDPCSPIPE_PHY_DP_TX_WIDTH_10 = 1 -RDPCSPIPE_PHY_DP_TX_WIDTH_16 = 2 -RDPCSPIPE_PHY_DP_TX_WIDTH_20 = 3 -RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_WIDTH = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL_RRDPCS_PHY_DP_TX_PSTATE' -RDPCSPIPE_PHY_CNTL_RRDPCS_PHY_DP_TX_PSTATE__enumvalues = { - 0: 'RRDPCSPIPE_PHY_DP_TX_PSTATE_POWER_UP', - 1: 'RRDPCSPIPE_PHY_DP_TX_PSTATE_HOLD', - 2: 'RRDPCSPIPE_PHY_DP_TX_PSTATE_HOLD_OFF', - 3: 'RRDPCSPIPE_PHY_DP_TX_PSTATE_POWER_DOWN', -} -RRDPCSPIPE_PHY_DP_TX_PSTATE_POWER_UP = 0 -RRDPCSPIPE_PHY_DP_TX_PSTATE_HOLD = 1 -RRDPCSPIPE_PHY_DP_TX_PSTATE_HOLD_OFF = 2 -RRDPCSPIPE_PHY_DP_TX_PSTATE_POWER_DOWN = 3 -RDPCSPIPE_PHY_CNTL_RRDPCS_PHY_DP_TX_PSTATE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_IF_WIDTH' -RDPCSPIPE_PHY_IF_WIDTH__enumvalues = { - 0: 'PHY_IF_WIDTH_10BIT', - 1: 'PHY_IF_WIDTH_20BIT', - 2: 'PHY_IF_WIDTH_40BIT', - 3: 'PHY_IF_WIDTH_80BIT', -} -PHY_IF_WIDTH_10BIT = 0 -PHY_IF_WIDTH_20BIT = 1 -PHY_IF_WIDTH_40BIT = 2 -PHY_IF_WIDTH_80BIT = 3 -RDPCSPIPE_PHY_IF_WIDTH = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_RATE' -RDPCSPIPE_PHY_RATE__enumvalues = { - 0: 'PHY_DP_RATE_1P62', - 1: 'PHY_DP_RATE_2P7', - 2: 'PHY_DP_RATE_5P4', - 3: 'PHY_DP_RATE_8P1', - 4: 'PHY_DP_RATE_2P16', - 5: 'PHY_DP_RATE_2P43', - 6: 'PHY_DP_RATE_3P24', - 7: 'PHY_DP_RATE_4P32', - 8: 'PHY_DP_RATE_10P', - 9: 'PHY_DP_RATE_13P5', - 10: 'PHY_DP_RATE_20P', - 15: 'PHY_CUSTOM_RATE', -} -PHY_DP_RATE_1P62 = 0 -PHY_DP_RATE_2P7 = 1 -PHY_DP_RATE_5P4 = 2 -PHY_DP_RATE_8P1 = 3 -PHY_DP_RATE_2P16 = 4 -PHY_DP_RATE_2P43 = 5 -PHY_DP_RATE_3P24 = 6 -PHY_DP_RATE_4P32 = 7 -PHY_DP_RATE_10P = 8 -PHY_DP_RATE_13P5 = 9 -PHY_DP_RATE_20P = 10 -PHY_CUSTOM_RATE = 15 -RDPCSPIPE_PHY_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_REF_ALT_CLK_EN' -RDPCSPIPE_PHY_REF_ALT_CLK_EN__enumvalues = { - 0: 'RDPCSPIPE_PHY_REF_ALT_CLK_DISABLE', - 1: 'RDPCSPIPE_PHY_REF_ALT_CLK_ENABLE', -} -RDPCSPIPE_PHY_REF_ALT_CLK_DISABLE = 0 -RDPCSPIPE_PHY_REF_ALT_CLK_ENABLE = 1 -RDPCSPIPE_PHY_REF_ALT_CLK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_TEST_CLK_SEL' -RDPCSPIPE_TEST_CLK_SEL__enumvalues = { - 0: 'RDPCSPIPE_TEST_CLK_SEL_NONE', - 1: 'RDPCSPIPE_TEST_CLK_SEL_CFGCLK', - 2: 'RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS', - 3: 'RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS', - 4: 'RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS_DIV4', - 5: 'RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS_DIV4', - 6: 'RDPCSPIPE_TEST_CLK_SEL_SRAMCLK', - 7: 'RDPCSPIPE_TEST_CLK_SEL_EXT_CR_CLK', - 8: 'RDPCSPIPE_TEST_CLK_SEL_DP_TX0_WORD_CLK', - 9: 'RDPCSPIPE_TEST_CLK_SEL_DP_TX1_WORD_CLK', - 10: 'RDPCSPIPE_TEST_CLK_SEL_DP_TX2_WORD_CLK', - 11: 'RDPCSPIPE_TEST_CLK_SEL_DP_TX3_WORD_CLK', - 12: 'RDPCSPIPE_TEST_CLK_SEL_DP_MPLLB_DIV_CLK', - 13: 'RDPCSPIPE_TEST_CLK_SEL_HDMI_MPLLB_HDMI_PIXEL_CLK', - 14: 'RDPCSPIPE_TEST_CLK_SEL_PHY_REF_DIG_CLK', - 15: 'RDPCSPIPE_TEST_CLK_SEL_REF_DIG_FR_clk', - 16: 'RDPCSPIPE_TEST_CLK_SEL_dtb_out0', - 17: 'RDPCSPIPE_TEST_CLK_SEL_dtb_out1', -} -RDPCSPIPE_TEST_CLK_SEL_NONE = 0 -RDPCSPIPE_TEST_CLK_SEL_CFGCLK = 1 -RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS = 2 -RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS = 3 -RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS_DIV4 = 4 -RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS_DIV4 = 5 -RDPCSPIPE_TEST_CLK_SEL_SRAMCLK = 6 -RDPCSPIPE_TEST_CLK_SEL_EXT_CR_CLK = 7 -RDPCSPIPE_TEST_CLK_SEL_DP_TX0_WORD_CLK = 8 -RDPCSPIPE_TEST_CLK_SEL_DP_TX1_WORD_CLK = 9 -RDPCSPIPE_TEST_CLK_SEL_DP_TX2_WORD_CLK = 10 -RDPCSPIPE_TEST_CLK_SEL_DP_TX3_WORD_CLK = 11 -RDPCSPIPE_TEST_CLK_SEL_DP_MPLLB_DIV_CLK = 12 -RDPCSPIPE_TEST_CLK_SEL_HDMI_MPLLB_HDMI_PIXEL_CLK = 13 -RDPCSPIPE_TEST_CLK_SEL_PHY_REF_DIG_CLK = 14 -RDPCSPIPE_TEST_CLK_SEL_REF_DIG_FR_clk = 15 -RDPCSPIPE_TEST_CLK_SEL_dtb_out0 = 16 -RDPCSPIPE_TEST_CLK_SEL_dtb_out1 = 17 -RDPCSPIPE_TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCS_PIPE_CNTL_TX_LANE_PACK_FROM_MSB' -RDPCS_PIPE_CNTL_TX_LANE_PACK_FROM_MSB__enumvalues = { - 0: 'RDPCSPIPE_LANE_PACK_FROM_MSB_DISABLE', - 1: 'RDPCSPIPE_LANE_PACK_FROM_MSB_ENABLE', -} -RDPCSPIPE_LANE_PACK_FROM_MSB_DISABLE = 0 -RDPCSPIPE_LANE_PACK_FROM_MSB_ENABLE = 1 -RDPCS_PIPE_CNTL_TX_LANE_PACK_FROM_MSB = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCS_PIPE_SRAM_CNTL_RDPCS_MEM_PWR_FORCE' -RDPCS_PIPE_SRAM_CNTL_RDPCS_MEM_PWR_FORCE__enumvalues = { - 0: 'RDPCSPIPE_MEM_PWR_NO_FORCE', - 1: 'RDPCSPIPE_MEM_PWR_LIGHT_SLEEP', - 2: 'RDPCSPIPE_MEM_PWR_DEEP_SLEEP', - 3: 'RDPCSPIPE_MEM_PWR_SHUT_DOWN', -} -RDPCSPIPE_MEM_PWR_NO_FORCE = 0 -RDPCSPIPE_MEM_PWR_LIGHT_SLEEP = 1 -RDPCSPIPE_MEM_PWR_DEEP_SLEEP = 2 -RDPCSPIPE_MEM_PWR_SHUT_DOWN = 3 -RDPCS_PIPE_SRAM_CNTL_RDPCS_MEM_PWR_FORCE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCS_PIPE_SRAM_CNTL_RDPCS_MEM_PWR_PWR_STATE' -RDPCS_PIPE_SRAM_CNTL_RDPCS_MEM_PWR_PWR_STATE__enumvalues = { - 0: 'RDPCSPIPE_MEM_PWR_PWR_STATE_ON', - 1: 'RDPCSPIPE_MEM_PWR_PWR_STATE_LIGHT_SLEEP', - 2: 'RDPCSPIPE_MEM_PWR_PWR_STATE_DEEP_SLEEP', - 3: 'RDPCSPIPE_MEM_PWR_PWR_STATE_SHUT_DOWN', -} -RDPCSPIPE_MEM_PWR_PWR_STATE_ON = 0 -RDPCSPIPE_MEM_PWR_PWR_STATE_LIGHT_SLEEP = 1 -RDPCSPIPE_MEM_PWR_PWR_STATE_DEEP_SLEEP = 2 -RDPCSPIPE_MEM_PWR_PWR_STATE_SHUT_DOWN = 3 -RDPCS_PIPE_SRAM_CNTL_RDPCS_MEM_PWR_PWR_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'RPDCSPIPE_CNTL_TX_LANE_BIT_ORDER_REVERSE_BEFORE_PACK' -RPDCSPIPE_CNTL_TX_LANE_BIT_ORDER_REVERSE_BEFORE_PACK__enumvalues = { - 0: 'RDPCSPIPE_LANE_BIT_ORDER_REVERSE_DISABLE', - 1: 'RDPCSPIPE_LANE_BIT_ORDER_REVERSE_ENABLE', -} -RDPCSPIPE_LANE_BIT_ORDER_REVERSE_DISABLE = 0 -RDPCSPIPE_LANE_BIT_ORDER_REVERSE_ENABLE = 1 -RPDCSPIPE_CNTL_TX_LANE_BIT_ORDER_REVERSE_BEFORE_PACK = ctypes.c_uint32 # enum - -# values for enumeration 'GDS_PERFCOUNT_SELECT' -GDS_PERFCOUNT_SELECT__enumvalues = { - 0: 'GDS_PERF_SEL_WR_COMP', - 1: 'GDS_PERF_SEL_WBUF_WR', - 2: 'GDS_PERF_SEL_SE0_NORET', - 3: 'GDS_PERF_SEL_SE0_RET', - 4: 'GDS_PERF_SEL_SE0_ORD_CNT', - 5: 'GDS_PERF_SEL_SE0_2COMP_REQ', - 6: 'GDS_PERF_SEL_SE0_ORD_WAVE_VALID', - 7: 'GDS_PERF_SEL_SE0_GDS_STALL_BY_ORD', - 8: 'GDS_PERF_SEL_SE0_GDS_WR_OP', - 9: 'GDS_PERF_SEL_SE0_GDS_RD_OP', - 10: 'GDS_PERF_SEL_SE0_GDS_ATOM_OP', - 11: 'GDS_PERF_SEL_SE0_GDS_REL_OP', - 12: 'GDS_PERF_SEL_SE0_GDS_CMPXCH_OP', - 13: 'GDS_PERF_SEL_SE0_GDS_BYTE_OP', - 14: 'GDS_PERF_SEL_SE0_GDS_SHORT_OP', - 15: 'GDS_PERF_SEL_SE1_NORET', - 16: 'GDS_PERF_SEL_SE1_RET', - 17: 'GDS_PERF_SEL_SE1_ORD_CNT', - 18: 'GDS_PERF_SEL_SE1_2COMP_REQ', - 19: 'GDS_PERF_SEL_SE1_ORD_WAVE_VALID', - 20: 'GDS_PERF_SEL_SE1_GDS_STALL_BY_ORD', - 21: 'GDS_PERF_SEL_SE1_GDS_WR_OP', - 22: 'GDS_PERF_SEL_SE1_GDS_RD_OP', - 23: 'GDS_PERF_SEL_SE1_GDS_ATOM_OP', - 24: 'GDS_PERF_SEL_SE1_GDS_REL_OP', - 25: 'GDS_PERF_SEL_SE1_GDS_CMPXCH_OP', - 26: 'GDS_PERF_SEL_SE1_GDS_BYTE_OP', - 27: 'GDS_PERF_SEL_SE1_GDS_SHORT_OP', - 28: 'GDS_PERF_SEL_SE2_NORET', - 29: 'GDS_PERF_SEL_SE2_RET', - 30: 'GDS_PERF_SEL_SE2_ORD_CNT', - 31: 'GDS_PERF_SEL_SE2_2COMP_REQ', - 32: 'GDS_PERF_SEL_SE2_ORD_WAVE_VALID', - 33: 'GDS_PERF_SEL_SE2_GDS_STALL_BY_ORD', - 34: 'GDS_PERF_SEL_SE2_GDS_WR_OP', - 35: 'GDS_PERF_SEL_SE2_GDS_RD_OP', - 36: 'GDS_PERF_SEL_SE2_GDS_ATOM_OP', - 37: 'GDS_PERF_SEL_SE2_GDS_REL_OP', - 38: 'GDS_PERF_SEL_SE2_GDS_CMPXCH_OP', - 39: 'GDS_PERF_SEL_SE2_GDS_BYTE_OP', - 40: 'GDS_PERF_SEL_SE2_GDS_SHORT_OP', - 41: 'GDS_PERF_SEL_SE3_NORET', - 42: 'GDS_PERF_SEL_SE3_RET', - 43: 'GDS_PERF_SEL_SE3_ORD_CNT', - 44: 'GDS_PERF_SEL_SE3_2COMP_REQ', - 45: 'GDS_PERF_SEL_SE3_ORD_WAVE_VALID', - 46: 'GDS_PERF_SEL_SE3_GDS_STALL_BY_ORD', - 47: 'GDS_PERF_SEL_SE3_GDS_WR_OP', - 48: 'GDS_PERF_SEL_SE3_GDS_RD_OP', - 49: 'GDS_PERF_SEL_SE3_GDS_ATOM_OP', - 50: 'GDS_PERF_SEL_SE3_GDS_REL_OP', - 51: 'GDS_PERF_SEL_SE3_GDS_CMPXCH_OP', - 52: 'GDS_PERF_SEL_SE3_GDS_BYTE_OP', - 53: 'GDS_PERF_SEL_SE3_GDS_SHORT_OP', - 54: 'GDS_PERF_SEL_SE4_NORET', - 55: 'GDS_PERF_SEL_SE4_RET', - 56: 'GDS_PERF_SEL_SE4_ORD_CNT', - 57: 'GDS_PERF_SEL_SE4_2COMP_REQ', - 58: 'GDS_PERF_SEL_SE4_ORD_WAVE_VALID', - 59: 'GDS_PERF_SEL_SE4_GDS_STALL_BY_ORD', - 60: 'GDS_PERF_SEL_SE4_GDS_WR_OP', - 61: 'GDS_PERF_SEL_SE4_GDS_RD_OP', - 62: 'GDS_PERF_SEL_SE4_GDS_ATOM_OP', - 63: 'GDS_PERF_SEL_SE4_GDS_REL_OP', - 64: 'GDS_PERF_SEL_SE4_GDS_CMPXCH_OP', - 65: 'GDS_PERF_SEL_SE4_GDS_BYTE_OP', - 66: 'GDS_PERF_SEL_SE4_GDS_SHORT_OP', - 67: 'GDS_PERF_SEL_SE5_NORET', - 68: 'GDS_PERF_SEL_SE5_RET', - 69: 'GDS_PERF_SEL_SE5_ORD_CNT', - 70: 'GDS_PERF_SEL_SE5_2COMP_REQ', - 71: 'GDS_PERF_SEL_SE5_ORD_WAVE_VALID', - 72: 'GDS_PERF_SEL_SE5_GDS_STALL_BY_ORD', - 73: 'GDS_PERF_SEL_SE5_GDS_WR_OP', - 74: 'GDS_PERF_SEL_SE5_GDS_RD_OP', - 75: 'GDS_PERF_SEL_SE5_GDS_ATOM_OP', - 76: 'GDS_PERF_SEL_SE5_GDS_REL_OP', - 77: 'GDS_PERF_SEL_SE5_GDS_CMPXCH_OP', - 78: 'GDS_PERF_SEL_SE5_GDS_BYTE_OP', - 79: 'GDS_PERF_SEL_SE5_GDS_SHORT_OP', - 80: 'GDS_PERF_SEL_SE6_NORET', - 81: 'GDS_PERF_SEL_SE6_RET', - 82: 'GDS_PERF_SEL_SE6_ORD_CNT', - 83: 'GDS_PERF_SEL_SE6_2COMP_REQ', - 84: 'GDS_PERF_SEL_SE6_ORD_WAVE_VALID', - 85: 'GDS_PERF_SEL_SE6_GDS_STALL_BY_ORD', - 86: 'GDS_PERF_SEL_SE6_GDS_WR_OP', - 87: 'GDS_PERF_SEL_SE6_GDS_RD_OP', - 88: 'GDS_PERF_SEL_SE6_GDS_ATOM_OP', - 89: 'GDS_PERF_SEL_SE6_GDS_REL_OP', - 90: 'GDS_PERF_SEL_SE6_GDS_CMPXCH_OP', - 91: 'GDS_PERF_SEL_SE6_GDS_BYTE_OP', - 92: 'GDS_PERF_SEL_SE6_GDS_SHORT_OP', - 93: 'GDS_PERF_SEL_SE7_NORET', - 94: 'GDS_PERF_SEL_SE7_RET', - 95: 'GDS_PERF_SEL_SE7_ORD_CNT', - 96: 'GDS_PERF_SEL_SE7_2COMP_REQ', - 97: 'GDS_PERF_SEL_SE7_ORD_WAVE_VALID', - 98: 'GDS_PERF_SEL_SE7_GDS_STALL_BY_ORD', - 99: 'GDS_PERF_SEL_SE7_GDS_WR_OP', - 100: 'GDS_PERF_SEL_SE7_GDS_RD_OP', - 101: 'GDS_PERF_SEL_SE7_GDS_ATOM_OP', - 102: 'GDS_PERF_SEL_SE7_GDS_REL_OP', - 103: 'GDS_PERF_SEL_SE7_GDS_CMPXCH_OP', - 104: 'GDS_PERF_SEL_SE7_GDS_BYTE_OP', - 105: 'GDS_PERF_SEL_SE7_GDS_SHORT_OP', - 106: 'GDS_PERF_SEL_GWS_RELEASED', - 107: 'GDS_PERF_SEL_GWS_BYPASS', -} -GDS_PERF_SEL_WR_COMP = 0 -GDS_PERF_SEL_WBUF_WR = 1 -GDS_PERF_SEL_SE0_NORET = 2 -GDS_PERF_SEL_SE0_RET = 3 -GDS_PERF_SEL_SE0_ORD_CNT = 4 -GDS_PERF_SEL_SE0_2COMP_REQ = 5 -GDS_PERF_SEL_SE0_ORD_WAVE_VALID = 6 -GDS_PERF_SEL_SE0_GDS_STALL_BY_ORD = 7 -GDS_PERF_SEL_SE0_GDS_WR_OP = 8 -GDS_PERF_SEL_SE0_GDS_RD_OP = 9 -GDS_PERF_SEL_SE0_GDS_ATOM_OP = 10 -GDS_PERF_SEL_SE0_GDS_REL_OP = 11 -GDS_PERF_SEL_SE0_GDS_CMPXCH_OP = 12 -GDS_PERF_SEL_SE0_GDS_BYTE_OP = 13 -GDS_PERF_SEL_SE0_GDS_SHORT_OP = 14 -GDS_PERF_SEL_SE1_NORET = 15 -GDS_PERF_SEL_SE1_RET = 16 -GDS_PERF_SEL_SE1_ORD_CNT = 17 -GDS_PERF_SEL_SE1_2COMP_REQ = 18 -GDS_PERF_SEL_SE1_ORD_WAVE_VALID = 19 -GDS_PERF_SEL_SE1_GDS_STALL_BY_ORD = 20 -GDS_PERF_SEL_SE1_GDS_WR_OP = 21 -GDS_PERF_SEL_SE1_GDS_RD_OP = 22 -GDS_PERF_SEL_SE1_GDS_ATOM_OP = 23 -GDS_PERF_SEL_SE1_GDS_REL_OP = 24 -GDS_PERF_SEL_SE1_GDS_CMPXCH_OP = 25 -GDS_PERF_SEL_SE1_GDS_BYTE_OP = 26 -GDS_PERF_SEL_SE1_GDS_SHORT_OP = 27 -GDS_PERF_SEL_SE2_NORET = 28 -GDS_PERF_SEL_SE2_RET = 29 -GDS_PERF_SEL_SE2_ORD_CNT = 30 -GDS_PERF_SEL_SE2_2COMP_REQ = 31 -GDS_PERF_SEL_SE2_ORD_WAVE_VALID = 32 -GDS_PERF_SEL_SE2_GDS_STALL_BY_ORD = 33 -GDS_PERF_SEL_SE2_GDS_WR_OP = 34 -GDS_PERF_SEL_SE2_GDS_RD_OP = 35 -GDS_PERF_SEL_SE2_GDS_ATOM_OP = 36 -GDS_PERF_SEL_SE2_GDS_REL_OP = 37 -GDS_PERF_SEL_SE2_GDS_CMPXCH_OP = 38 -GDS_PERF_SEL_SE2_GDS_BYTE_OP = 39 -GDS_PERF_SEL_SE2_GDS_SHORT_OP = 40 -GDS_PERF_SEL_SE3_NORET = 41 -GDS_PERF_SEL_SE3_RET = 42 -GDS_PERF_SEL_SE3_ORD_CNT = 43 -GDS_PERF_SEL_SE3_2COMP_REQ = 44 -GDS_PERF_SEL_SE3_ORD_WAVE_VALID = 45 -GDS_PERF_SEL_SE3_GDS_STALL_BY_ORD = 46 -GDS_PERF_SEL_SE3_GDS_WR_OP = 47 -GDS_PERF_SEL_SE3_GDS_RD_OP = 48 -GDS_PERF_SEL_SE3_GDS_ATOM_OP = 49 -GDS_PERF_SEL_SE3_GDS_REL_OP = 50 -GDS_PERF_SEL_SE3_GDS_CMPXCH_OP = 51 -GDS_PERF_SEL_SE3_GDS_BYTE_OP = 52 -GDS_PERF_SEL_SE3_GDS_SHORT_OP = 53 -GDS_PERF_SEL_SE4_NORET = 54 -GDS_PERF_SEL_SE4_RET = 55 -GDS_PERF_SEL_SE4_ORD_CNT = 56 -GDS_PERF_SEL_SE4_2COMP_REQ = 57 -GDS_PERF_SEL_SE4_ORD_WAVE_VALID = 58 -GDS_PERF_SEL_SE4_GDS_STALL_BY_ORD = 59 -GDS_PERF_SEL_SE4_GDS_WR_OP = 60 -GDS_PERF_SEL_SE4_GDS_RD_OP = 61 -GDS_PERF_SEL_SE4_GDS_ATOM_OP = 62 -GDS_PERF_SEL_SE4_GDS_REL_OP = 63 -GDS_PERF_SEL_SE4_GDS_CMPXCH_OP = 64 -GDS_PERF_SEL_SE4_GDS_BYTE_OP = 65 -GDS_PERF_SEL_SE4_GDS_SHORT_OP = 66 -GDS_PERF_SEL_SE5_NORET = 67 -GDS_PERF_SEL_SE5_RET = 68 -GDS_PERF_SEL_SE5_ORD_CNT = 69 -GDS_PERF_SEL_SE5_2COMP_REQ = 70 -GDS_PERF_SEL_SE5_ORD_WAVE_VALID = 71 -GDS_PERF_SEL_SE5_GDS_STALL_BY_ORD = 72 -GDS_PERF_SEL_SE5_GDS_WR_OP = 73 -GDS_PERF_SEL_SE5_GDS_RD_OP = 74 -GDS_PERF_SEL_SE5_GDS_ATOM_OP = 75 -GDS_PERF_SEL_SE5_GDS_REL_OP = 76 -GDS_PERF_SEL_SE5_GDS_CMPXCH_OP = 77 -GDS_PERF_SEL_SE5_GDS_BYTE_OP = 78 -GDS_PERF_SEL_SE5_GDS_SHORT_OP = 79 -GDS_PERF_SEL_SE6_NORET = 80 -GDS_PERF_SEL_SE6_RET = 81 -GDS_PERF_SEL_SE6_ORD_CNT = 82 -GDS_PERF_SEL_SE6_2COMP_REQ = 83 -GDS_PERF_SEL_SE6_ORD_WAVE_VALID = 84 -GDS_PERF_SEL_SE6_GDS_STALL_BY_ORD = 85 -GDS_PERF_SEL_SE6_GDS_WR_OP = 86 -GDS_PERF_SEL_SE6_GDS_RD_OP = 87 -GDS_PERF_SEL_SE6_GDS_ATOM_OP = 88 -GDS_PERF_SEL_SE6_GDS_REL_OP = 89 -GDS_PERF_SEL_SE6_GDS_CMPXCH_OP = 90 -GDS_PERF_SEL_SE6_GDS_BYTE_OP = 91 -GDS_PERF_SEL_SE6_GDS_SHORT_OP = 92 -GDS_PERF_SEL_SE7_NORET = 93 -GDS_PERF_SEL_SE7_RET = 94 -GDS_PERF_SEL_SE7_ORD_CNT = 95 -GDS_PERF_SEL_SE7_2COMP_REQ = 96 -GDS_PERF_SEL_SE7_ORD_WAVE_VALID = 97 -GDS_PERF_SEL_SE7_GDS_STALL_BY_ORD = 98 -GDS_PERF_SEL_SE7_GDS_WR_OP = 99 -GDS_PERF_SEL_SE7_GDS_RD_OP = 100 -GDS_PERF_SEL_SE7_GDS_ATOM_OP = 101 -GDS_PERF_SEL_SE7_GDS_REL_OP = 102 -GDS_PERF_SEL_SE7_GDS_CMPXCH_OP = 103 -GDS_PERF_SEL_SE7_GDS_BYTE_OP = 104 -GDS_PERF_SEL_SE7_GDS_SHORT_OP = 105 -GDS_PERF_SEL_GWS_RELEASED = 106 -GDS_PERF_SEL_GWS_BYPASS = 107 -GDS_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'BlendOp' -BlendOp__enumvalues = { - 0: 'BLEND_ZERO', - 1: 'BLEND_ONE', - 2: 'BLEND_SRC_COLOR', - 3: 'BLEND_ONE_MINUS_SRC_COLOR', - 4: 'BLEND_SRC_ALPHA', - 5: 'BLEND_ONE_MINUS_SRC_ALPHA', - 6: 'BLEND_DST_ALPHA', - 7: 'BLEND_ONE_MINUS_DST_ALPHA', - 8: 'BLEND_DST_COLOR', - 9: 'BLEND_ONE_MINUS_DST_COLOR', - 10: 'BLEND_SRC_ALPHA_SATURATE', - 11: 'BLEND_CONSTANT_COLOR', - 12: 'BLEND_ONE_MINUS_CONSTANT_COLOR', - 13: 'BLEND_SRC1_COLOR', - 14: 'BLEND_INV_SRC1_COLOR', - 15: 'BLEND_SRC1_ALPHA', - 16: 'BLEND_INV_SRC1_ALPHA', - 17: 'BLEND_CONSTANT_ALPHA', - 18: 'BLEND_ONE_MINUS_CONSTANT_ALPHA', -} -BLEND_ZERO = 0 -BLEND_ONE = 1 -BLEND_SRC_COLOR = 2 -BLEND_ONE_MINUS_SRC_COLOR = 3 -BLEND_SRC_ALPHA = 4 -BLEND_ONE_MINUS_SRC_ALPHA = 5 -BLEND_DST_ALPHA = 6 -BLEND_ONE_MINUS_DST_ALPHA = 7 -BLEND_DST_COLOR = 8 -BLEND_ONE_MINUS_DST_COLOR = 9 -BLEND_SRC_ALPHA_SATURATE = 10 -BLEND_CONSTANT_COLOR = 11 -BLEND_ONE_MINUS_CONSTANT_COLOR = 12 -BLEND_SRC1_COLOR = 13 -BLEND_INV_SRC1_COLOR = 14 -BLEND_SRC1_ALPHA = 15 -BLEND_INV_SRC1_ALPHA = 16 -BLEND_CONSTANT_ALPHA = 17 -BLEND_ONE_MINUS_CONSTANT_ALPHA = 18 -BlendOp = ctypes.c_uint32 # enum -GL__ZERO = BLEND_ZERO # macro -GL__ONE = BLEND_ONE # macro -GL__SRC_COLOR = BLEND_SRC_COLOR # macro -GL__ONE_MINUS_SRC_COLOR = BLEND_ONE_MINUS_SRC_COLOR # macro -GL__DST_COLOR = BLEND_DST_COLOR # macro -GL__ONE_MINUS_DST_COLOR = BLEND_ONE_MINUS_DST_COLOR # macro -GL__SRC_ALPHA = BLEND_SRC_ALPHA # macro -GL__ONE_MINUS_SRC_ALPHA = BLEND_ONE_MINUS_SRC_ALPHA # macro -GL__DST_ALPHA = BLEND_DST_ALPHA # macro -GL__ONE_MINUS_DST_ALPHA = BLEND_ONE_MINUS_DST_ALPHA # macro -GL__SRC_ALPHA_SATURATE = BLEND_SRC_ALPHA_SATURATE # macro -GL__CONSTANT_COLOR = BLEND_CONSTANT_COLOR # macro -GL__ONE_MINUS_CONSTANT_COLOR = BLEND_ONE_MINUS_CONSTANT_COLOR # macro -GL__CONSTANT_ALPHA = BLEND_CONSTANT_ALPHA # macro -GL__ONE_MINUS_CONSTANT_ALPHA = BLEND_ONE_MINUS_CONSTANT_ALPHA # macro - -# values for enumeration 'BlendOpt' -BlendOpt__enumvalues = { - 0: 'FORCE_OPT_AUTO', - 1: 'FORCE_OPT_DISABLE', - 2: 'FORCE_OPT_ENABLE_IF_SRC_A_0', - 3: 'FORCE_OPT_ENABLE_IF_SRC_RGB_0', - 4: 'FORCE_OPT_ENABLE_IF_SRC_ARGB_0', - 5: 'FORCE_OPT_ENABLE_IF_SRC_A_1', - 6: 'FORCE_OPT_ENABLE_IF_SRC_RGB_1', - 7: 'FORCE_OPT_ENABLE_IF_SRC_ARGB_1', -} -FORCE_OPT_AUTO = 0 -FORCE_OPT_DISABLE = 1 -FORCE_OPT_ENABLE_IF_SRC_A_0 = 2 -FORCE_OPT_ENABLE_IF_SRC_RGB_0 = 3 -FORCE_OPT_ENABLE_IF_SRC_ARGB_0 = 4 -FORCE_OPT_ENABLE_IF_SRC_A_1 = 5 -FORCE_OPT_ENABLE_IF_SRC_RGB_1 = 6 -FORCE_OPT_ENABLE_IF_SRC_ARGB_1 = 7 -BlendOpt = ctypes.c_uint32 # enum - -# values for enumeration 'CBMode' -CBMode__enumvalues = { - 0: 'CB_DISABLE', - 1: 'CB_NORMAL', - 2: 'CB_ELIMINATE_FAST_CLEAR', - 3: 'CB_DCC_DECOMPRESS', - 4: 'CB_RESERVED', -} -CB_DISABLE = 0 -CB_NORMAL = 1 -CB_ELIMINATE_FAST_CLEAR = 2 -CB_DCC_DECOMPRESS = 3 -CB_RESERVED = 4 -CBMode = ctypes.c_uint32 # enum - -# values for enumeration 'CBPerfClearFilterSel' -CBPerfClearFilterSel__enumvalues = { - 0: 'CB_PERF_CLEAR_FILTER_SEL_NONCLEAR', - 1: 'CB_PERF_CLEAR_FILTER_SEL_CLEAR', -} -CB_PERF_CLEAR_FILTER_SEL_NONCLEAR = 0 -CB_PERF_CLEAR_FILTER_SEL_CLEAR = 1 -CBPerfClearFilterSel = ctypes.c_uint32 # enum - -# values for enumeration 'CBPerfOpFilterSel' -CBPerfOpFilterSel__enumvalues = { - 0: 'CB_PERF_OP_FILTER_SEL_WRITE_ONLY', - 1: 'CB_PERF_OP_FILTER_SEL_NEEDS_DESTINATION', - 2: 'CB_PERF_OP_FILTER_SEL_RESOLVE', - 3: 'CB_PERF_OP_FILTER_SEL_DECOMPRESS', - 4: 'CB_PERF_OP_FILTER_SEL_FMASK_DECOMPRESS', - 5: 'CB_PERF_OP_FILTER_SEL_ELIMINATE_FAST_CLEAR', -} -CB_PERF_OP_FILTER_SEL_WRITE_ONLY = 0 -CB_PERF_OP_FILTER_SEL_NEEDS_DESTINATION = 1 -CB_PERF_OP_FILTER_SEL_RESOLVE = 2 -CB_PERF_OP_FILTER_SEL_DECOMPRESS = 3 -CB_PERF_OP_FILTER_SEL_FMASK_DECOMPRESS = 4 -CB_PERF_OP_FILTER_SEL_ELIMINATE_FAST_CLEAR = 5 -CBPerfOpFilterSel = ctypes.c_uint32 # enum - -# values for enumeration 'CBPerfSel' -CBPerfSel__enumvalues = { - 0: 'CB_PERF_SEL_NONE', - 1: 'CB_PERF_SEL_DRAWN_PIXEL', - 2: 'CB_PERF_SEL_DRAWN_QUAD', - 3: 'CB_PERF_SEL_DRAWN_QUAD_FRAGMENT', - 4: 'CB_PERF_SEL_DRAWN_TILE', - 5: 'CB_PERF_SEL_FILTER_DRAWN_PIXEL', - 6: 'CB_PERF_SEL_FILTER_DRAWN_QUAD', - 7: 'CB_PERF_SEL_FILTER_DRAWN_QUAD_FRAGMENT', - 8: 'CB_PERF_SEL_FILTER_DRAWN_TILE', - 9: 'CB_PERF_SEL_CC_DCC_DECOMPRESS_TID_IN', - 10: 'CB_PERF_SEL_CC_DCC_DECOMPRESS_TID_OUT', - 11: 'CB_PERF_SEL_CC_DCC_COMPRESS_TID_IN', - 12: 'CB_PERF_SEL_CC_DCC_COMPRESS_TID_OUT', - 13: 'CB_PERF_SEL_CC_MC_WRITE_REQUEST', - 14: 'CB_PERF_SEL_CC_MC_WRITE_REQUESTS_IN_FLIGHT', - 15: 'CB_PERF_SEL_CC_MC_READ_REQUEST', - 16: 'CB_PERF_SEL_CC_MC_READ_REQUESTS_IN_FLIGHT', - 17: 'CB_PERF_SEL_DB_CB_EXPORT_VALID_READY', - 18: 'CB_PERF_SEL_DB_CB_EXPORT_VALID_READYB', - 19: 'CB_PERF_SEL_DB_CB_EXPORT_VALIDB_READY', - 20: 'CB_PERF_SEL_DB_CB_EXPORT_VALIDB_READYB', - 21: 'CB_PERF_SEL_RESERVED_21', - 22: 'CB_PERF_SEL_RESERVED_22', - 23: 'CB_PERF_SEL_RESERVED_23', - 24: 'CB_PERF_SEL_RESERVED_24', - 25: 'CB_PERF_SEL_RESERVED_25', - 26: 'CB_PERF_SEL_RESERVED_26', - 27: 'CB_PERF_SEL_RESERVED_27', - 28: 'CB_PERF_SEL_RESERVED_28', - 29: 'CB_PERF_SEL_RESERVED_29', - 30: 'CB_PERF_SEL_CB_RMI_WRREQ_VALID_READY', - 31: 'CB_PERF_SEL_CB_RMI_WRREQ_VALID_READYB', - 32: 'CB_PERF_SEL_CB_RMI_WRREQ_VALIDB_READY', - 33: 'CB_PERF_SEL_CB_RMI_WRREQ_VALIDB_READYB', - 34: 'CB_PERF_SEL_CB_RMI_RDREQ_VALID_READY', - 35: 'CB_PERF_SEL_CB_RMI_RDREQ_VALID_READYB', - 36: 'CB_PERF_SEL_CB_RMI_RDREQ_VALIDB_READY', - 37: 'CB_PERF_SEL_CB_RMI_RDREQ_VALIDB_READYB', - 38: 'CB_PERF_SEL_RESERVED_38', - 39: 'CB_PERF_SEL_RESERVED_39', - 40: 'CB_PERF_SEL_RESERVED_40', - 41: 'CB_PERF_SEL_RESERVED_41', - 42: 'CB_PERF_SEL_RESERVED_42', - 43: 'CB_PERF_SEL_RESERVED_43', - 44: 'CB_PERF_SEL_RESERVED_44', - 45: 'CB_PERF_SEL_RESERVED_45', - 46: 'CB_PERF_SEL_RESERVED_46', - 47: 'CB_PERF_SEL_RESERVED_47', - 48: 'CB_PERF_SEL_RESERVED_48', - 49: 'CB_PERF_SEL_RESERVED_49', - 50: 'CB_PERF_SEL_STATIC_CLOCK_EN', - 51: 'CB_PERF_SEL_PERFMON_CLOCK_EN', - 52: 'CB_PERF_SEL_BLEND_CLOCK_EN', - 53: 'CB_PERF_SEL_COLOR_STORE_CLOCK_EN', - 54: 'CB_PERF_SEL_BACKEND_READ_CLOCK_EN', - 55: 'CB_PERF_SEL_GRBM_CLOCK_EN', - 56: 'CB_PERF_SEL_MEMARB_CLOCK_EN', - 57: 'CB_PERF_SEL_BACKEND_EVICT_PIPE_CLOCK_EN', - 58: 'CB_PERF_SEL_BACKEND_FRAGOP_CLOCK_EN', - 59: 'CB_PERF_SEL_BACKEND_SRC_FIFO_CLOCK_EN', - 60: 'CB_PERF_SEL_BACKEND_CACHE_CTL_CLOCK_EN', - 61: 'CB_PERF_SEL_FRONTEND_INPUT_CLOCK_EN', - 62: 'CB_PERF_SEL_FRONTEND_ADDR_CLOCK_EN', - 63: 'CB_PERF_SEL_FRONTEND_FDCC_CLOCK_EN', - 64: 'CB_PERF_SEL_FRONTEND_SAMPLE_MASK_TRACKER_CLOCK_EN', - 65: 'CB_PERF_SEL_RESERVED_65', - 66: 'CB_PERF_SEL_RESERVED_66', - 67: 'CB_PERF_SEL_RESERVED_67', - 68: 'CB_PERF_SEL_RESERVED_68', - 69: 'CB_PERF_SEL_RESERVED_69', - 70: 'CB_PERF_SEL_RESERVED_70', - 71: 'CB_PERF_SEL_RESERVED_71', - 72: 'CB_PERF_SEL_RESERVED_72', - 73: 'CB_PERF_SEL_RESERVED_73', - 74: 'CB_PERF_SEL_RESERVED_74', - 75: 'CB_PERF_SEL_RESERVED_75', - 76: 'CB_PERF_SEL_RESERVED_76', - 77: 'CB_PERF_SEL_RESERVED_77', - 78: 'CB_PERF_SEL_RESERVED_78', - 79: 'CB_PERF_SEL_RESERVED_79', - 80: 'CB_PERF_SEL_RESERVED_80', - 81: 'CB_PERF_SEL_RESERVED_81', - 82: 'CB_PERF_SEL_RESERVED_82', - 83: 'CB_PERF_SEL_RESERVED_83', - 84: 'CB_PERF_SEL_RESERVED_84', - 85: 'CB_PERF_SEL_RESERVED_85', - 86: 'CB_PERF_SEL_RESERVED_86', - 87: 'CB_PERF_SEL_RESERVED_87', - 88: 'CB_PERF_SEL_RESERVED_88', - 89: 'CB_PERF_SEL_RESERVED_89', - 90: 'CB_PERF_SEL_RESERVED_90', - 91: 'CB_PERF_SEL_RESERVED_91', - 92: 'CB_PERF_SEL_RESERVED_92', - 93: 'CB_PERF_SEL_RESERVED_93', - 94: 'CB_PERF_SEL_RESERVED_94', - 95: 'CB_PERF_SEL_RESERVED_95', - 96: 'CB_PERF_SEL_RESERVED_96', - 97: 'CB_PERF_SEL_RESERVED_97', - 98: 'CB_PERF_SEL_RESERVED_98', - 99: 'CB_PERF_SEL_RESERVED_99', - 100: 'CB_PERF_SEL_CC_TAG_HIT', - 101: 'CB_PERF_SEL_CC_CACHE_TAG_MISS', - 102: 'CB_PERF_SEL_CC_CACHE_SECTOR_MISS', - 103: 'CB_PERF_SEL_CC_CACHE_SECTOR_HIT', - 104: 'CB_PERF_SEL_CC_CACHE_REEVICTION_STALL', - 105: 'CB_PERF_SEL_CC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 106: 'CB_PERF_SEL_CC_CACHE_REPLACE_PENDING_EVICT_STALL', - 107: 'CB_PERF_SEL_CC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 108: 'CB_PERF_SEL_CC_CACHE_READ_OUTPUT_STALL', - 109: 'CB_PERF_SEL_CC_CACHE_WRITE_OUTPUT_STALL', - 110: 'CB_PERF_SEL_CC_CACHE_ACK_OUTPUT_STALL', - 111: 'CB_PERF_SEL_CC_CACHE_STALL', - 112: 'CB_PERF_SEL_CC_CACHE_FLUSH', - 113: 'CB_PERF_SEL_CC_CACHE_TAGS_FLUSHED', - 114: 'CB_PERF_SEL_CC_CACHE_WA_TO_RMW_CONVERSION', - 115: 'CB_PERF_SEL_CC_CACHE_SECTORS_FLUSHED', - 116: 'CB_PERF_SEL_CC_CACHE_DIRTY_SECTORS_FLUSHED', - 117: 'CB_PERF_SEL_CC_CACHE_READS_SAVED_DUE_TO_DCC', - 118: 'CB_PERF_SEL_RESERVED_118', - 119: 'CB_PERF_SEL_RESERVED_119', - 120: 'CB_PERF_SEL_RESERVED_120', - 121: 'CB_PERF_SEL_RESERVED_121', - 122: 'CB_PERF_SEL_RESERVED_122', - 123: 'CB_PERF_SEL_RESERVED_123', - 124: 'CB_PERF_SEL_RESERVED_124', - 125: 'CB_PERF_SEL_RESERVED_125', - 126: 'CB_PERF_SEL_RESERVED_126', - 127: 'CB_PERF_SEL_RESERVED_127', - 128: 'CB_PERF_SEL_RESERVED_128', - 129: 'CB_PERF_SEL_RESERVED_129', - 130: 'CB_PERF_SEL_RESERVED_130', - 131: 'CB_PERF_SEL_RESERVED_131', - 132: 'CB_PERF_SEL_RESERVED_132', - 133: 'CB_PERF_SEL_RESERVED_133', - 134: 'CB_PERF_SEL_RESERVED_134', - 135: 'CB_PERF_SEL_RESERVED_135', - 136: 'CB_PERF_SEL_RESERVED_136', - 137: 'CB_PERF_SEL_RESERVED_137', - 138: 'CB_PERF_SEL_RESERVED_138', - 139: 'CB_PERF_SEL_RESERVED_139', - 140: 'CB_PERF_SEL_RESERVED_140', - 141: 'CB_PERF_SEL_RESERVED_141', - 142: 'CB_PERF_SEL_RESERVED_142', - 143: 'CB_PERF_SEL_RESERVED_143', - 144: 'CB_PERF_SEL_RESERVED_144', - 145: 'CB_PERF_SEL_RESERVED_145', - 146: 'CB_PERF_SEL_RESERVED_146', - 147: 'CB_PERF_SEL_RESERVED_147', - 148: 'CB_PERF_SEL_RESERVED_148', - 149: 'CB_PERF_SEL_RESERVED_149', - 150: 'CB_PERF_SEL_DCC_CACHE_PERF_HIT', - 151: 'CB_PERF_SEL_DCC_CACHE_TAG_MISS', - 152: 'CB_PERF_SEL_DCC_CACHE_SECTOR_MISS', - 153: 'CB_PERF_SEL_DCC_CACHE_REEVICTION_STALL', - 154: 'CB_PERF_SEL_DCC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 155: 'CB_PERF_SEL_DCC_CACHE_REPLACE_PENDING_EVICT_STALL', - 156: 'CB_PERF_SEL_DCC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 157: 'CB_PERF_SEL_DCC_CACHE_READ_OUTPUT_STALL', - 158: 'CB_PERF_SEL_DCC_CACHE_WRITE_OUTPUT_STALL', - 159: 'CB_PERF_SEL_DCC_CACHE_ACK_OUTPUT_STALL', - 160: 'CB_PERF_SEL_DCC_CACHE_STALL', - 161: 'CB_PERF_SEL_DCC_CACHE_FLUSH', - 162: 'CB_PERF_SEL_DCC_CACHE_SECTORS_FLUSHED', - 163: 'CB_PERF_SEL_DCC_CACHE_DIRTY_SECTORS_FLUSHED', - 164: 'CB_PERF_SEL_DCC_CACHE_TAGS_FLUSHED', - 165: 'CB_PERF_SEL_RESERVED_165', - 166: 'CB_PERF_SEL_RESERVED_166', - 167: 'CB_PERF_SEL_RESERVED_167', - 168: 'CB_PERF_SEL_RESERVED_168', - 169: 'CB_PERF_SEL_RESERVED_169', - 170: 'CB_PERF_SEL_RESERVED_170', - 171: 'CB_PERF_SEL_RESERVED_171', - 172: 'CB_PERF_SEL_RESERVED_172', - 173: 'CB_PERF_SEL_RESERVED_173', - 174: 'CB_PERF_SEL_RESERVED_174', - 175: 'CB_PERF_SEL_RESERVED_175', - 176: 'CB_PERF_SEL_RESERVED_176', - 177: 'CB_PERF_SEL_RESERVED_177', - 178: 'CB_PERF_SEL_RESERVED_178', - 179: 'CB_PERF_SEL_RESERVED_179', - 180: 'CB_PERF_SEL_RESERVED_180', - 181: 'CB_PERF_SEL_RESERVED_181', - 182: 'CB_PERF_SEL_RESERVED_182', - 183: 'CB_PERF_SEL_RESERVED_183', - 184: 'CB_PERF_SEL_RESERVED_184', - 185: 'CB_PERF_SEL_RESERVED_185', - 186: 'CB_PERF_SEL_RESERVED_186', - 187: 'CB_PERF_SEL_RESERVED_187', - 188: 'CB_PERF_SEL_RESERVED_188', - 189: 'CB_PERF_SEL_RESERVED_189', - 190: 'CB_PERF_SEL_RESERVED_190', - 191: 'CB_PERF_SEL_RESERVED_191', - 192: 'CB_PERF_SEL_RESERVED_192', - 193: 'CB_PERF_SEL_RESERVED_193', - 194: 'CB_PERF_SEL_RESERVED_194', - 195: 'CB_PERF_SEL_RESERVED_195', - 196: 'CB_PERF_SEL_RESERVED_196', - 197: 'CB_PERF_SEL_RESERVED_197', - 198: 'CB_PERF_SEL_RESERVED_198', - 199: 'CB_PERF_SEL_RESERVED_199', - 200: 'CB_PERF_SEL_BLEND_QUAD_DST_READ_COULD_HAVE_BEEN_OPTIMIZED', - 201: 'CB_PERF_SEL_BLEND_QUAD_BLENDING_COULD_HAVE_BEEN_BYPASSED', - 202: 'CB_PERF_SEL_BLEND_QUAD_COULD_HAVE_BEEN_DISCARDED', - 203: 'CB_PERF_SEL_BLEND_OPT_PIXELS_RESULT_EQ_DEST', - 204: 'CB_PERF_SEL_BLEND_STALL_AT_OUTPUT', - 205: 'CB_PERF_SEL_RESERVED_205', - 206: 'CB_PERF_SEL_RESERVED_206', - 207: 'CB_PERF_SEL_RESERVED_207', - 208: 'CB_PERF_SEL_RESERVED_208', - 209: 'CB_PERF_SEL_RESERVED_209', - 210: 'CB_PERF_SEL_RESERVED_210', - 211: 'CB_PERF_SEL_RESERVED_211', - 212: 'CB_PERF_SEL_RESERVED_212', - 213: 'CB_PERF_SEL_RESERVED_213', - 214: 'CB_PERF_SEL_RESERVED_214', - 215: 'CB_PERF_SEL_RESERVED_215', - 216: 'CB_PERF_SEL_RESERVED_216', - 217: 'CB_PERF_SEL_RESERVED_217', - 218: 'CB_PERF_SEL_RESERVED_218', - 219: 'CB_PERF_SEL_RESERVED_219', - 220: 'CB_PERF_SEL_RESERVED_220', - 221: 'CB_PERF_SEL_RESERVED_221', - 222: 'CB_PERF_SEL_RESERVED_222', - 223: 'CB_PERF_SEL_RESERVED_223', - 224: 'CB_PERF_SEL_RESERVED_224', - 225: 'CB_PERF_SEL_RESERVED_225', - 226: 'CB_PERF_SEL_RESERVED_226', - 227: 'CB_PERF_SEL_RESERVED_227', - 228: 'CB_PERF_SEL_RESERVED_228', - 229: 'CB_PERF_SEL_RESERVED_229', - 230: 'CB_PERF_SEL_RESERVED_230', - 231: 'CB_PERF_SEL_RESERVED_231', - 232: 'CB_PERF_SEL_RESERVED_232', - 233: 'CB_PERF_SEL_RESERVED_233', - 234: 'CB_PERF_SEL_RESERVED_234', - 235: 'CB_PERF_SEL_RESERVED_235', - 236: 'CB_PERF_SEL_RESERVED_236', - 237: 'CB_PERF_SEL_RESERVED_237', - 238: 'CB_PERF_SEL_RESERVED_238', - 239: 'CB_PERF_SEL_RESERVED_239', - 240: 'CB_PERF_SEL_RESERVED_240', - 241: 'CB_PERF_SEL_RESERVED_241', - 242: 'CB_PERF_SEL_RESERVED_242', - 243: 'CB_PERF_SEL_RESERVED_243', - 244: 'CB_PERF_SEL_RESERVED_244', - 245: 'CB_PERF_SEL_RESERVED_245', - 246: 'CB_PERF_SEL_RESERVED_246', - 247: 'CB_PERF_SEL_RESERVED_247', - 248: 'CB_PERF_SEL_RESERVED_248', - 249: 'CB_PERF_SEL_RESERVED_249', - 250: 'CB_PERF_SEL_EVENT', - 251: 'CB_PERF_SEL_EVENT_CACHE_FLUSH_TS', - 252: 'CB_PERF_SEL_EVENT_CONTEXT_DONE', - 253: 'CB_PERF_SEL_EVENT_CACHE_FLUSH', - 254: 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_TS_EVENT', - 255: 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_EVENT', - 256: 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_DATA_TS', - 257: 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_META', - 258: 'CB_PERF_SEL_CC_SURFACE_SYNC', - 259: 'CB_PERF_SEL_RESERVED_259', - 260: 'CB_PERF_SEL_RESERVED_260', - 261: 'CB_PERF_SEL_RESERVED_261', - 262: 'CB_PERF_SEL_RESERVED_262', - 263: 'CB_PERF_SEL_RESERVED_263', - 264: 'CB_PERF_SEL_RESERVED_264', - 265: 'CB_PERF_SEL_RESERVED_265', - 266: 'CB_PERF_SEL_RESERVED_266', - 267: 'CB_PERF_SEL_RESERVED_267', - 268: 'CB_PERF_SEL_RESERVED_268', - 269: 'CB_PERF_SEL_RESERVED_269', - 270: 'CB_PERF_SEL_RESERVED_270', - 271: 'CB_PERF_SEL_RESERVED_271', - 272: 'CB_PERF_SEL_RESERVED_272', - 273: 'CB_PERF_SEL_RESERVED_273', - 274: 'CB_PERF_SEL_RESERVED_274', - 275: 'CB_PERF_SEL_RESERVED_275', - 276: 'CB_PERF_SEL_RESERVED_276', - 277: 'CB_PERF_SEL_RESERVED_277', - 278: 'CB_PERF_SEL_RESERVED_278', - 279: 'CB_PERF_SEL_RESERVED_279', - 280: 'CB_PERF_SEL_RESERVED_280', - 281: 'CB_PERF_SEL_RESERVED_281', - 282: 'CB_PERF_SEL_RESERVED_282', - 283: 'CB_PERF_SEL_RESERVED_283', - 284: 'CB_PERF_SEL_RESERVED_284', - 285: 'CB_PERF_SEL_RESERVED_285', - 286: 'CB_PERF_SEL_RESERVED_286', - 287: 'CB_PERF_SEL_RESERVED_287', - 288: 'CB_PERF_SEL_RESERVED_288', - 289: 'CB_PERF_SEL_RESERVED_289', - 290: 'CB_PERF_SEL_RESERVED_290', - 291: 'CB_PERF_SEL_RESERVED_291', - 292: 'CB_PERF_SEL_RESERVED_292', - 293: 'CB_PERF_SEL_RESERVED_293', - 294: 'CB_PERF_SEL_RESERVED_294', - 295: 'CB_PERF_SEL_RESERVED_295', - 296: 'CB_PERF_SEL_RESERVED_296', - 297: 'CB_PERF_SEL_RESERVED_297', - 298: 'CB_PERF_SEL_RESERVED_298', - 299: 'CB_PERF_SEL_RESERVED_299', - 300: 'CB_PERF_SEL_NACK_CC_READ', - 301: 'CB_PERF_SEL_NACK_CC_WRITE', - 302: 'CB_PERF_SEL_EXPORT_32_ABGR_QUAD_FRAGMENT', - 303: 'CB_PERF_SEL_RESERVED_303', - 304: 'CB_PERF_SEL_RESERVED_304', - 305: 'CB_PERF_SEL_RESERVED_305', - 306: 'CB_PERF_SEL_RESERVED_306', - 307: 'CB_PERF_SEL_RESERVED_307', - 308: 'CB_PERF_SEL_RESERVED_308', - 309: 'CB_PERF_SEL_RESERVED_309', - 310: 'CB_PERF_SEL_RESERVED_310', - 311: 'CB_PERF_SEL_RESERVED_311', - 312: 'CB_PERF_SEL_RESERVED_312', - 313: 'CB_PERF_SEL_RESERVED_313', - 314: 'CB_PERF_SEL_RESERVED_314', - 315: 'CB_PERF_SEL_RESERVED_315', - 316: 'CB_PERF_SEL_RESERVED_316', - 317: 'CB_PERF_SEL_RESERVED_317', - 318: 'CB_PERF_SEL_RESERVED_318', - 319: 'CB_PERF_SEL_RESERVED_319', - 320: 'CB_PERF_SEL_RESERVED_320', - 321: 'CB_PERF_SEL_RESERVED_321', - 322: 'CB_PERF_SEL_RESERVED_322', - 323: 'CB_PERF_SEL_RESERVED_323', - 324: 'CB_PERF_SEL_RESERVED_324', - 325: 'CB_PERF_SEL_RESERVED_325', - 326: 'CB_PERF_SEL_RESERVED_326', - 327: 'CB_PERF_SEL_RESERVED_327', - 328: 'CB_PERF_SEL_RESERVED_328', - 329: 'CB_PERF_SEL_RESERVED_329', - 330: 'CB_PERF_SEL_RESERVED_330', - 331: 'CB_PERF_SEL_RESERVED_331', - 332: 'CB_PERF_SEL_RESERVED_332', - 333: 'CB_PERF_SEL_RESERVED_333', - 334: 'CB_PERF_SEL_RESERVED_334', - 335: 'CB_PERF_SEL_RESERVED_335', - 336: 'CB_PERF_SEL_RESERVED_336', - 337: 'CB_PERF_SEL_RESERVED_337', - 338: 'CB_PERF_SEL_RESERVED_338', - 339: 'CB_PERF_SEL_RESERVED_339', - 340: 'CB_PERF_SEL_RESERVED_340', - 341: 'CB_PERF_SEL_RESERVED_341', - 342: 'CB_PERF_SEL_RESERVED_342', - 343: 'CB_PERF_SEL_RESERVED_343', - 344: 'CB_PERF_SEL_RESERVED_344', - 345: 'CB_PERF_SEL_RESERVED_345', - 346: 'CB_PERF_SEL_RESERVED_346', - 347: 'CB_PERF_SEL_RESERVED_347', - 348: 'CB_PERF_SEL_RESERVED_348', - 349: 'CB_PERF_SEL_RESERVED_349', - 350: 'CB_PERF_SEL_RESERVED_350', - 351: 'CB_PERF_SEL_RESERVED_351', - 352: 'CB_PERF_SEL_RESERVED_352', - 353: 'CB_PERF_SEL_RESERVED_353', - 354: 'CB_PERF_SEL_RESERVED_354', - 355: 'CB_PERF_SEL_RESERVED_355', - 356: 'CB_PERF_SEL_RESERVED_356', - 357: 'CB_PERF_SEL_RESERVED_357', - 358: 'CB_PERF_SEL_RESERVED_358', - 359: 'CB_PERF_SEL_RESERVED_359', - 360: 'CB_PERF_SEL_RESERVED_360', - 361: 'CB_PERF_SEL_RESERVED_361', - 362: 'CB_PERF_SEL_RESERVED_362', - 363: 'CB_PERF_SEL_RESERVED_363', - 364: 'CB_PERF_SEL_RESERVED_364', - 365: 'CB_PERF_SEL_RESERVED_365', - 366: 'CB_PERF_SEL_RESERVED_366', - 367: 'CB_PERF_SEL_RESERVED_367', - 368: 'CB_PERF_SEL_RESERVED_368', - 369: 'CB_PERF_SEL_RESERVED_369', - 370: 'CB_PERF_SEL_RESERVED_370', - 371: 'CB_PERF_SEL_RESERVED_371', - 372: 'CB_PERF_SEL_RESERVED_372', - 373: 'CB_PERF_SEL_RESERVED_373', - 374: 'CB_PERF_SEL_RESERVED_374', - 375: 'CB_PERF_SEL_RESERVED_375', - 376: 'CB_PERF_SEL_RESERVED_376', - 377: 'CB_PERF_SEL_RESERVED_377', - 378: 'CB_PERF_SEL_RESERVED_378', - 379: 'CB_PERF_SEL_RESERVED_379', - 380: 'CB_PERF_SEL_RESERVED_380', - 381: 'CB_PERF_SEL_RESERVED_381', - 382: 'CB_PERF_SEL_RESERVED_382', - 383: 'CB_PERF_SEL_RESERVED_383', - 384: 'CB_PERF_SEL_RESERVED_384', - 385: 'CB_PERF_SEL_RESERVED_385', - 386: 'CB_PERF_SEL_RESERVED_386', - 387: 'CB_PERF_SEL_RESERVED_387', - 388: 'CB_PERF_SEL_RESERVED_388', - 389: 'CB_PERF_SEL_RESERVED_389', - 390: 'CB_PERF_SEL_RESERVED_390', - 391: 'CB_PERF_SEL_RESERVED_391', - 392: 'CB_PERF_SEL_RESERVED_392', - 393: 'CB_PERF_SEL_RESERVED_393', - 394: 'CB_PERF_SEL_RESERVED_394', - 395: 'CB_PERF_SEL_RESERVED_395', - 396: 'CB_PERF_SEL_RESERVED_396', - 397: 'CB_PERF_SEL_RESERVED_397', - 398: 'CB_PERF_SEL_RESERVED_398', - 399: 'CB_PERF_SEL_RESERVED_399', - 400: 'CB_PERF_SEL_RESERVED_400', - 401: 'CB_PERF_SEL_RESERVED_401', - 402: 'CB_PERF_SEL_RESERVED_402', - 403: 'CB_PERF_SEL_RESERVED_403', - 404: 'CB_PERF_SEL_RESERVED_404', - 405: 'CB_PERF_SEL_RESERVED_405', - 406: 'CB_PERF_SEL_RESERVED_406', - 407: 'CB_PERF_SEL_RESERVED_407', - 408: 'CB_PERF_SEL_RESERVED_408', - 409: 'CB_PERF_SEL_RESERVED_409', - 410: 'CB_PERF_SEL_RESERVED_410', - 411: 'CB_PERF_SEL_RESERVED_411', - 412: 'CB_PERF_SEL_RESERVED_412', - 413: 'CB_PERF_SEL_RESERVED_413', - 414: 'CB_PERF_SEL_RESERVED_414', - 415: 'CB_PERF_SEL_RESERVED_415', - 416: 'CB_PERF_SEL_RESERVED_416', - 417: 'CB_PERF_SEL_RESERVED_417', - 418: 'CB_PERF_SEL_RESERVED_418', - 419: 'CB_PERF_SEL_RESERVED_419', - 420: 'CB_PERF_SEL_RESERVED_420', - 421: 'CB_PERF_SEL_RESERVED_421', - 422: 'CB_PERF_SEL_RESERVED_422', - 423: 'CB_PERF_SEL_RESERVED_423', - 424: 'CB_PERF_SEL_RESERVED_424', - 425: 'CB_PERF_SEL_RESERVED_425', - 426: 'CB_PERF_SEL_RESERVED_426', - 427: 'CB_PERF_SEL_RESERVED_427', - 428: 'CB_PERF_SEL_RESERVED_428', - 429: 'CB_PERF_SEL_RESERVED_429', - 430: 'CB_PERF_SEL_RESERVED_430', - 431: 'CB_PERF_SEL_RESERVED_431', - 432: 'CB_PERF_SEL_RESERVED_432', - 433: 'CB_PERF_SEL_RESERVED_433', - 434: 'CB_PERF_SEL_RESERVED_434', - 435: 'CB_PERF_SEL_RESERVED_435', - 436: 'CB_PERF_SEL_RESERVED_436', - 437: 'CB_PERF_SEL_RESERVED_437', - 438: 'CB_PERF_SEL_RESERVED_438', - 439: 'CB_PERF_SEL_RESERVED_439', - 440: 'CB_PERF_SEL_RESERVED_440', - 441: 'CB_PERF_SEL_RESERVED_441', - 442: 'CB_PERF_SEL_RESERVED_442', - 443: 'CB_PERF_SEL_RESERVED_443', - 444: 'CB_PERF_SEL_RESERVED_444', - 445: 'CB_PERF_SEL_RESERVED_445', - 446: 'CB_PERF_SEL_RESERVED_446', - 447: 'CB_PERF_SEL_RESERVED_447', - 448: 'CB_PERF_SEL_RESERVED_448', - 449: 'CB_PERF_SEL_RESERVED_449', - 450: 'CB_PERF_SEL_RESERVED_450', - 451: 'CB_PERF_SEL_RESERVED_451', - 452: 'CB_PERF_SEL_RESERVED_452', - 453: 'CB_PERF_SEL_RESERVED_453', - 454: 'CB_PERF_SEL_RESERVED_454', - 455: 'CB_PERF_SEL_RESERVED_455', - 456: 'CB_PERF_SEL_RESERVED_456', - 457: 'CB_PERF_SEL_RESERVED_457', - 458: 'CB_PERF_SEL_RESERVED_458', - 459: 'CB_PERF_SEL_RESERVED_459', - 460: 'CB_PERF_SEL_RESERVED_460', - 461: 'CB_PERF_SEL_RESERVED_461', - 462: 'CB_PERF_SEL_RESERVED_462', - 463: 'CB_PERF_SEL_RESERVED_463', - 464: 'CB_PERF_SEL_RESERVED_464', - 465: 'CB_PERF_SEL_RESERVED_465', -} -CB_PERF_SEL_NONE = 0 -CB_PERF_SEL_DRAWN_PIXEL = 1 -CB_PERF_SEL_DRAWN_QUAD = 2 -CB_PERF_SEL_DRAWN_QUAD_FRAGMENT = 3 -CB_PERF_SEL_DRAWN_TILE = 4 -CB_PERF_SEL_FILTER_DRAWN_PIXEL = 5 -CB_PERF_SEL_FILTER_DRAWN_QUAD = 6 -CB_PERF_SEL_FILTER_DRAWN_QUAD_FRAGMENT = 7 -CB_PERF_SEL_FILTER_DRAWN_TILE = 8 -CB_PERF_SEL_CC_DCC_DECOMPRESS_TID_IN = 9 -CB_PERF_SEL_CC_DCC_DECOMPRESS_TID_OUT = 10 -CB_PERF_SEL_CC_DCC_COMPRESS_TID_IN = 11 -CB_PERF_SEL_CC_DCC_COMPRESS_TID_OUT = 12 -CB_PERF_SEL_CC_MC_WRITE_REQUEST = 13 -CB_PERF_SEL_CC_MC_WRITE_REQUESTS_IN_FLIGHT = 14 -CB_PERF_SEL_CC_MC_READ_REQUEST = 15 -CB_PERF_SEL_CC_MC_READ_REQUESTS_IN_FLIGHT = 16 -CB_PERF_SEL_DB_CB_EXPORT_VALID_READY = 17 -CB_PERF_SEL_DB_CB_EXPORT_VALID_READYB = 18 -CB_PERF_SEL_DB_CB_EXPORT_VALIDB_READY = 19 -CB_PERF_SEL_DB_CB_EXPORT_VALIDB_READYB = 20 -CB_PERF_SEL_RESERVED_21 = 21 -CB_PERF_SEL_RESERVED_22 = 22 -CB_PERF_SEL_RESERVED_23 = 23 -CB_PERF_SEL_RESERVED_24 = 24 -CB_PERF_SEL_RESERVED_25 = 25 -CB_PERF_SEL_RESERVED_26 = 26 -CB_PERF_SEL_RESERVED_27 = 27 -CB_PERF_SEL_RESERVED_28 = 28 -CB_PERF_SEL_RESERVED_29 = 29 -CB_PERF_SEL_CB_RMI_WRREQ_VALID_READY = 30 -CB_PERF_SEL_CB_RMI_WRREQ_VALID_READYB = 31 -CB_PERF_SEL_CB_RMI_WRREQ_VALIDB_READY = 32 -CB_PERF_SEL_CB_RMI_WRREQ_VALIDB_READYB = 33 -CB_PERF_SEL_CB_RMI_RDREQ_VALID_READY = 34 -CB_PERF_SEL_CB_RMI_RDREQ_VALID_READYB = 35 -CB_PERF_SEL_CB_RMI_RDREQ_VALIDB_READY = 36 -CB_PERF_SEL_CB_RMI_RDREQ_VALIDB_READYB = 37 -CB_PERF_SEL_RESERVED_38 = 38 -CB_PERF_SEL_RESERVED_39 = 39 -CB_PERF_SEL_RESERVED_40 = 40 -CB_PERF_SEL_RESERVED_41 = 41 -CB_PERF_SEL_RESERVED_42 = 42 -CB_PERF_SEL_RESERVED_43 = 43 -CB_PERF_SEL_RESERVED_44 = 44 -CB_PERF_SEL_RESERVED_45 = 45 -CB_PERF_SEL_RESERVED_46 = 46 -CB_PERF_SEL_RESERVED_47 = 47 -CB_PERF_SEL_RESERVED_48 = 48 -CB_PERF_SEL_RESERVED_49 = 49 -CB_PERF_SEL_STATIC_CLOCK_EN = 50 -CB_PERF_SEL_PERFMON_CLOCK_EN = 51 -CB_PERF_SEL_BLEND_CLOCK_EN = 52 -CB_PERF_SEL_COLOR_STORE_CLOCK_EN = 53 -CB_PERF_SEL_BACKEND_READ_CLOCK_EN = 54 -CB_PERF_SEL_GRBM_CLOCK_EN = 55 -CB_PERF_SEL_MEMARB_CLOCK_EN = 56 -CB_PERF_SEL_BACKEND_EVICT_PIPE_CLOCK_EN = 57 -CB_PERF_SEL_BACKEND_FRAGOP_CLOCK_EN = 58 -CB_PERF_SEL_BACKEND_SRC_FIFO_CLOCK_EN = 59 -CB_PERF_SEL_BACKEND_CACHE_CTL_CLOCK_EN = 60 -CB_PERF_SEL_FRONTEND_INPUT_CLOCK_EN = 61 -CB_PERF_SEL_FRONTEND_ADDR_CLOCK_EN = 62 -CB_PERF_SEL_FRONTEND_FDCC_CLOCK_EN = 63 -CB_PERF_SEL_FRONTEND_SAMPLE_MASK_TRACKER_CLOCK_EN = 64 -CB_PERF_SEL_RESERVED_65 = 65 -CB_PERF_SEL_RESERVED_66 = 66 -CB_PERF_SEL_RESERVED_67 = 67 -CB_PERF_SEL_RESERVED_68 = 68 -CB_PERF_SEL_RESERVED_69 = 69 -CB_PERF_SEL_RESERVED_70 = 70 -CB_PERF_SEL_RESERVED_71 = 71 -CB_PERF_SEL_RESERVED_72 = 72 -CB_PERF_SEL_RESERVED_73 = 73 -CB_PERF_SEL_RESERVED_74 = 74 -CB_PERF_SEL_RESERVED_75 = 75 -CB_PERF_SEL_RESERVED_76 = 76 -CB_PERF_SEL_RESERVED_77 = 77 -CB_PERF_SEL_RESERVED_78 = 78 -CB_PERF_SEL_RESERVED_79 = 79 -CB_PERF_SEL_RESERVED_80 = 80 -CB_PERF_SEL_RESERVED_81 = 81 -CB_PERF_SEL_RESERVED_82 = 82 -CB_PERF_SEL_RESERVED_83 = 83 -CB_PERF_SEL_RESERVED_84 = 84 -CB_PERF_SEL_RESERVED_85 = 85 -CB_PERF_SEL_RESERVED_86 = 86 -CB_PERF_SEL_RESERVED_87 = 87 -CB_PERF_SEL_RESERVED_88 = 88 -CB_PERF_SEL_RESERVED_89 = 89 -CB_PERF_SEL_RESERVED_90 = 90 -CB_PERF_SEL_RESERVED_91 = 91 -CB_PERF_SEL_RESERVED_92 = 92 -CB_PERF_SEL_RESERVED_93 = 93 -CB_PERF_SEL_RESERVED_94 = 94 -CB_PERF_SEL_RESERVED_95 = 95 -CB_PERF_SEL_RESERVED_96 = 96 -CB_PERF_SEL_RESERVED_97 = 97 -CB_PERF_SEL_RESERVED_98 = 98 -CB_PERF_SEL_RESERVED_99 = 99 -CB_PERF_SEL_CC_TAG_HIT = 100 -CB_PERF_SEL_CC_CACHE_TAG_MISS = 101 -CB_PERF_SEL_CC_CACHE_SECTOR_MISS = 102 -CB_PERF_SEL_CC_CACHE_SECTOR_HIT = 103 -CB_PERF_SEL_CC_CACHE_REEVICTION_STALL = 104 -CB_PERF_SEL_CC_CACHE_EVICT_NONZERO_INFLIGHT_STALL = 105 -CB_PERF_SEL_CC_CACHE_REPLACE_PENDING_EVICT_STALL = 106 -CB_PERF_SEL_CC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL = 107 -CB_PERF_SEL_CC_CACHE_READ_OUTPUT_STALL = 108 -CB_PERF_SEL_CC_CACHE_WRITE_OUTPUT_STALL = 109 -CB_PERF_SEL_CC_CACHE_ACK_OUTPUT_STALL = 110 -CB_PERF_SEL_CC_CACHE_STALL = 111 -CB_PERF_SEL_CC_CACHE_FLUSH = 112 -CB_PERF_SEL_CC_CACHE_TAGS_FLUSHED = 113 -CB_PERF_SEL_CC_CACHE_WA_TO_RMW_CONVERSION = 114 -CB_PERF_SEL_CC_CACHE_SECTORS_FLUSHED = 115 -CB_PERF_SEL_CC_CACHE_DIRTY_SECTORS_FLUSHED = 116 -CB_PERF_SEL_CC_CACHE_READS_SAVED_DUE_TO_DCC = 117 -CB_PERF_SEL_RESERVED_118 = 118 -CB_PERF_SEL_RESERVED_119 = 119 -CB_PERF_SEL_RESERVED_120 = 120 -CB_PERF_SEL_RESERVED_121 = 121 -CB_PERF_SEL_RESERVED_122 = 122 -CB_PERF_SEL_RESERVED_123 = 123 -CB_PERF_SEL_RESERVED_124 = 124 -CB_PERF_SEL_RESERVED_125 = 125 -CB_PERF_SEL_RESERVED_126 = 126 -CB_PERF_SEL_RESERVED_127 = 127 -CB_PERF_SEL_RESERVED_128 = 128 -CB_PERF_SEL_RESERVED_129 = 129 -CB_PERF_SEL_RESERVED_130 = 130 -CB_PERF_SEL_RESERVED_131 = 131 -CB_PERF_SEL_RESERVED_132 = 132 -CB_PERF_SEL_RESERVED_133 = 133 -CB_PERF_SEL_RESERVED_134 = 134 -CB_PERF_SEL_RESERVED_135 = 135 -CB_PERF_SEL_RESERVED_136 = 136 -CB_PERF_SEL_RESERVED_137 = 137 -CB_PERF_SEL_RESERVED_138 = 138 -CB_PERF_SEL_RESERVED_139 = 139 -CB_PERF_SEL_RESERVED_140 = 140 -CB_PERF_SEL_RESERVED_141 = 141 -CB_PERF_SEL_RESERVED_142 = 142 -CB_PERF_SEL_RESERVED_143 = 143 -CB_PERF_SEL_RESERVED_144 = 144 -CB_PERF_SEL_RESERVED_145 = 145 -CB_PERF_SEL_RESERVED_146 = 146 -CB_PERF_SEL_RESERVED_147 = 147 -CB_PERF_SEL_RESERVED_148 = 148 -CB_PERF_SEL_RESERVED_149 = 149 -CB_PERF_SEL_DCC_CACHE_PERF_HIT = 150 -CB_PERF_SEL_DCC_CACHE_TAG_MISS = 151 -CB_PERF_SEL_DCC_CACHE_SECTOR_MISS = 152 -CB_PERF_SEL_DCC_CACHE_REEVICTION_STALL = 153 -CB_PERF_SEL_DCC_CACHE_EVICT_NONZERO_INFLIGHT_STALL = 154 -CB_PERF_SEL_DCC_CACHE_REPLACE_PENDING_EVICT_STALL = 155 -CB_PERF_SEL_DCC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL = 156 -CB_PERF_SEL_DCC_CACHE_READ_OUTPUT_STALL = 157 -CB_PERF_SEL_DCC_CACHE_WRITE_OUTPUT_STALL = 158 -CB_PERF_SEL_DCC_CACHE_ACK_OUTPUT_STALL = 159 -CB_PERF_SEL_DCC_CACHE_STALL = 160 -CB_PERF_SEL_DCC_CACHE_FLUSH = 161 -CB_PERF_SEL_DCC_CACHE_SECTORS_FLUSHED = 162 -CB_PERF_SEL_DCC_CACHE_DIRTY_SECTORS_FLUSHED = 163 -CB_PERF_SEL_DCC_CACHE_TAGS_FLUSHED = 164 -CB_PERF_SEL_RESERVED_165 = 165 -CB_PERF_SEL_RESERVED_166 = 166 -CB_PERF_SEL_RESERVED_167 = 167 -CB_PERF_SEL_RESERVED_168 = 168 -CB_PERF_SEL_RESERVED_169 = 169 -CB_PERF_SEL_RESERVED_170 = 170 -CB_PERF_SEL_RESERVED_171 = 171 -CB_PERF_SEL_RESERVED_172 = 172 -CB_PERF_SEL_RESERVED_173 = 173 -CB_PERF_SEL_RESERVED_174 = 174 -CB_PERF_SEL_RESERVED_175 = 175 -CB_PERF_SEL_RESERVED_176 = 176 -CB_PERF_SEL_RESERVED_177 = 177 -CB_PERF_SEL_RESERVED_178 = 178 -CB_PERF_SEL_RESERVED_179 = 179 -CB_PERF_SEL_RESERVED_180 = 180 -CB_PERF_SEL_RESERVED_181 = 181 -CB_PERF_SEL_RESERVED_182 = 182 -CB_PERF_SEL_RESERVED_183 = 183 -CB_PERF_SEL_RESERVED_184 = 184 -CB_PERF_SEL_RESERVED_185 = 185 -CB_PERF_SEL_RESERVED_186 = 186 -CB_PERF_SEL_RESERVED_187 = 187 -CB_PERF_SEL_RESERVED_188 = 188 -CB_PERF_SEL_RESERVED_189 = 189 -CB_PERF_SEL_RESERVED_190 = 190 -CB_PERF_SEL_RESERVED_191 = 191 -CB_PERF_SEL_RESERVED_192 = 192 -CB_PERF_SEL_RESERVED_193 = 193 -CB_PERF_SEL_RESERVED_194 = 194 -CB_PERF_SEL_RESERVED_195 = 195 -CB_PERF_SEL_RESERVED_196 = 196 -CB_PERF_SEL_RESERVED_197 = 197 -CB_PERF_SEL_RESERVED_198 = 198 -CB_PERF_SEL_RESERVED_199 = 199 -CB_PERF_SEL_BLEND_QUAD_DST_READ_COULD_HAVE_BEEN_OPTIMIZED = 200 -CB_PERF_SEL_BLEND_QUAD_BLENDING_COULD_HAVE_BEEN_BYPASSED = 201 -CB_PERF_SEL_BLEND_QUAD_COULD_HAVE_BEEN_DISCARDED = 202 -CB_PERF_SEL_BLEND_OPT_PIXELS_RESULT_EQ_DEST = 203 -CB_PERF_SEL_BLEND_STALL_AT_OUTPUT = 204 -CB_PERF_SEL_RESERVED_205 = 205 -CB_PERF_SEL_RESERVED_206 = 206 -CB_PERF_SEL_RESERVED_207 = 207 -CB_PERF_SEL_RESERVED_208 = 208 -CB_PERF_SEL_RESERVED_209 = 209 -CB_PERF_SEL_RESERVED_210 = 210 -CB_PERF_SEL_RESERVED_211 = 211 -CB_PERF_SEL_RESERVED_212 = 212 -CB_PERF_SEL_RESERVED_213 = 213 -CB_PERF_SEL_RESERVED_214 = 214 -CB_PERF_SEL_RESERVED_215 = 215 -CB_PERF_SEL_RESERVED_216 = 216 -CB_PERF_SEL_RESERVED_217 = 217 -CB_PERF_SEL_RESERVED_218 = 218 -CB_PERF_SEL_RESERVED_219 = 219 -CB_PERF_SEL_RESERVED_220 = 220 -CB_PERF_SEL_RESERVED_221 = 221 -CB_PERF_SEL_RESERVED_222 = 222 -CB_PERF_SEL_RESERVED_223 = 223 -CB_PERF_SEL_RESERVED_224 = 224 -CB_PERF_SEL_RESERVED_225 = 225 -CB_PERF_SEL_RESERVED_226 = 226 -CB_PERF_SEL_RESERVED_227 = 227 -CB_PERF_SEL_RESERVED_228 = 228 -CB_PERF_SEL_RESERVED_229 = 229 -CB_PERF_SEL_RESERVED_230 = 230 -CB_PERF_SEL_RESERVED_231 = 231 -CB_PERF_SEL_RESERVED_232 = 232 -CB_PERF_SEL_RESERVED_233 = 233 -CB_PERF_SEL_RESERVED_234 = 234 -CB_PERF_SEL_RESERVED_235 = 235 -CB_PERF_SEL_RESERVED_236 = 236 -CB_PERF_SEL_RESERVED_237 = 237 -CB_PERF_SEL_RESERVED_238 = 238 -CB_PERF_SEL_RESERVED_239 = 239 -CB_PERF_SEL_RESERVED_240 = 240 -CB_PERF_SEL_RESERVED_241 = 241 -CB_PERF_SEL_RESERVED_242 = 242 -CB_PERF_SEL_RESERVED_243 = 243 -CB_PERF_SEL_RESERVED_244 = 244 -CB_PERF_SEL_RESERVED_245 = 245 -CB_PERF_SEL_RESERVED_246 = 246 -CB_PERF_SEL_RESERVED_247 = 247 -CB_PERF_SEL_RESERVED_248 = 248 -CB_PERF_SEL_RESERVED_249 = 249 -CB_PERF_SEL_EVENT = 250 -CB_PERF_SEL_EVENT_CACHE_FLUSH_TS = 251 -CB_PERF_SEL_EVENT_CONTEXT_DONE = 252 -CB_PERF_SEL_EVENT_CACHE_FLUSH = 253 -CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_TS_EVENT = 254 -CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_EVENT = 255 -CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_DATA_TS = 256 -CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_META = 257 -CB_PERF_SEL_CC_SURFACE_SYNC = 258 -CB_PERF_SEL_RESERVED_259 = 259 -CB_PERF_SEL_RESERVED_260 = 260 -CB_PERF_SEL_RESERVED_261 = 261 -CB_PERF_SEL_RESERVED_262 = 262 -CB_PERF_SEL_RESERVED_263 = 263 -CB_PERF_SEL_RESERVED_264 = 264 -CB_PERF_SEL_RESERVED_265 = 265 -CB_PERF_SEL_RESERVED_266 = 266 -CB_PERF_SEL_RESERVED_267 = 267 -CB_PERF_SEL_RESERVED_268 = 268 -CB_PERF_SEL_RESERVED_269 = 269 -CB_PERF_SEL_RESERVED_270 = 270 -CB_PERF_SEL_RESERVED_271 = 271 -CB_PERF_SEL_RESERVED_272 = 272 -CB_PERF_SEL_RESERVED_273 = 273 -CB_PERF_SEL_RESERVED_274 = 274 -CB_PERF_SEL_RESERVED_275 = 275 -CB_PERF_SEL_RESERVED_276 = 276 -CB_PERF_SEL_RESERVED_277 = 277 -CB_PERF_SEL_RESERVED_278 = 278 -CB_PERF_SEL_RESERVED_279 = 279 -CB_PERF_SEL_RESERVED_280 = 280 -CB_PERF_SEL_RESERVED_281 = 281 -CB_PERF_SEL_RESERVED_282 = 282 -CB_PERF_SEL_RESERVED_283 = 283 -CB_PERF_SEL_RESERVED_284 = 284 -CB_PERF_SEL_RESERVED_285 = 285 -CB_PERF_SEL_RESERVED_286 = 286 -CB_PERF_SEL_RESERVED_287 = 287 -CB_PERF_SEL_RESERVED_288 = 288 -CB_PERF_SEL_RESERVED_289 = 289 -CB_PERF_SEL_RESERVED_290 = 290 -CB_PERF_SEL_RESERVED_291 = 291 -CB_PERF_SEL_RESERVED_292 = 292 -CB_PERF_SEL_RESERVED_293 = 293 -CB_PERF_SEL_RESERVED_294 = 294 -CB_PERF_SEL_RESERVED_295 = 295 -CB_PERF_SEL_RESERVED_296 = 296 -CB_PERF_SEL_RESERVED_297 = 297 -CB_PERF_SEL_RESERVED_298 = 298 -CB_PERF_SEL_RESERVED_299 = 299 -CB_PERF_SEL_NACK_CC_READ = 300 -CB_PERF_SEL_NACK_CC_WRITE = 301 -CB_PERF_SEL_EXPORT_32_ABGR_QUAD_FRAGMENT = 302 -CB_PERF_SEL_RESERVED_303 = 303 -CB_PERF_SEL_RESERVED_304 = 304 -CB_PERF_SEL_RESERVED_305 = 305 -CB_PERF_SEL_RESERVED_306 = 306 -CB_PERF_SEL_RESERVED_307 = 307 -CB_PERF_SEL_RESERVED_308 = 308 -CB_PERF_SEL_RESERVED_309 = 309 -CB_PERF_SEL_RESERVED_310 = 310 -CB_PERF_SEL_RESERVED_311 = 311 -CB_PERF_SEL_RESERVED_312 = 312 -CB_PERF_SEL_RESERVED_313 = 313 -CB_PERF_SEL_RESERVED_314 = 314 -CB_PERF_SEL_RESERVED_315 = 315 -CB_PERF_SEL_RESERVED_316 = 316 -CB_PERF_SEL_RESERVED_317 = 317 -CB_PERF_SEL_RESERVED_318 = 318 -CB_PERF_SEL_RESERVED_319 = 319 -CB_PERF_SEL_RESERVED_320 = 320 -CB_PERF_SEL_RESERVED_321 = 321 -CB_PERF_SEL_RESERVED_322 = 322 -CB_PERF_SEL_RESERVED_323 = 323 -CB_PERF_SEL_RESERVED_324 = 324 -CB_PERF_SEL_RESERVED_325 = 325 -CB_PERF_SEL_RESERVED_326 = 326 -CB_PERF_SEL_RESERVED_327 = 327 -CB_PERF_SEL_RESERVED_328 = 328 -CB_PERF_SEL_RESERVED_329 = 329 -CB_PERF_SEL_RESERVED_330 = 330 -CB_PERF_SEL_RESERVED_331 = 331 -CB_PERF_SEL_RESERVED_332 = 332 -CB_PERF_SEL_RESERVED_333 = 333 -CB_PERF_SEL_RESERVED_334 = 334 -CB_PERF_SEL_RESERVED_335 = 335 -CB_PERF_SEL_RESERVED_336 = 336 -CB_PERF_SEL_RESERVED_337 = 337 -CB_PERF_SEL_RESERVED_338 = 338 -CB_PERF_SEL_RESERVED_339 = 339 -CB_PERF_SEL_RESERVED_340 = 340 -CB_PERF_SEL_RESERVED_341 = 341 -CB_PERF_SEL_RESERVED_342 = 342 -CB_PERF_SEL_RESERVED_343 = 343 -CB_PERF_SEL_RESERVED_344 = 344 -CB_PERF_SEL_RESERVED_345 = 345 -CB_PERF_SEL_RESERVED_346 = 346 -CB_PERF_SEL_RESERVED_347 = 347 -CB_PERF_SEL_RESERVED_348 = 348 -CB_PERF_SEL_RESERVED_349 = 349 -CB_PERF_SEL_RESERVED_350 = 350 -CB_PERF_SEL_RESERVED_351 = 351 -CB_PERF_SEL_RESERVED_352 = 352 -CB_PERF_SEL_RESERVED_353 = 353 -CB_PERF_SEL_RESERVED_354 = 354 -CB_PERF_SEL_RESERVED_355 = 355 -CB_PERF_SEL_RESERVED_356 = 356 -CB_PERF_SEL_RESERVED_357 = 357 -CB_PERF_SEL_RESERVED_358 = 358 -CB_PERF_SEL_RESERVED_359 = 359 -CB_PERF_SEL_RESERVED_360 = 360 -CB_PERF_SEL_RESERVED_361 = 361 -CB_PERF_SEL_RESERVED_362 = 362 -CB_PERF_SEL_RESERVED_363 = 363 -CB_PERF_SEL_RESERVED_364 = 364 -CB_PERF_SEL_RESERVED_365 = 365 -CB_PERF_SEL_RESERVED_366 = 366 -CB_PERF_SEL_RESERVED_367 = 367 -CB_PERF_SEL_RESERVED_368 = 368 -CB_PERF_SEL_RESERVED_369 = 369 -CB_PERF_SEL_RESERVED_370 = 370 -CB_PERF_SEL_RESERVED_371 = 371 -CB_PERF_SEL_RESERVED_372 = 372 -CB_PERF_SEL_RESERVED_373 = 373 -CB_PERF_SEL_RESERVED_374 = 374 -CB_PERF_SEL_RESERVED_375 = 375 -CB_PERF_SEL_RESERVED_376 = 376 -CB_PERF_SEL_RESERVED_377 = 377 -CB_PERF_SEL_RESERVED_378 = 378 -CB_PERF_SEL_RESERVED_379 = 379 -CB_PERF_SEL_RESERVED_380 = 380 -CB_PERF_SEL_RESERVED_381 = 381 -CB_PERF_SEL_RESERVED_382 = 382 -CB_PERF_SEL_RESERVED_383 = 383 -CB_PERF_SEL_RESERVED_384 = 384 -CB_PERF_SEL_RESERVED_385 = 385 -CB_PERF_SEL_RESERVED_386 = 386 -CB_PERF_SEL_RESERVED_387 = 387 -CB_PERF_SEL_RESERVED_388 = 388 -CB_PERF_SEL_RESERVED_389 = 389 -CB_PERF_SEL_RESERVED_390 = 390 -CB_PERF_SEL_RESERVED_391 = 391 -CB_PERF_SEL_RESERVED_392 = 392 -CB_PERF_SEL_RESERVED_393 = 393 -CB_PERF_SEL_RESERVED_394 = 394 -CB_PERF_SEL_RESERVED_395 = 395 -CB_PERF_SEL_RESERVED_396 = 396 -CB_PERF_SEL_RESERVED_397 = 397 -CB_PERF_SEL_RESERVED_398 = 398 -CB_PERF_SEL_RESERVED_399 = 399 -CB_PERF_SEL_RESERVED_400 = 400 -CB_PERF_SEL_RESERVED_401 = 401 -CB_PERF_SEL_RESERVED_402 = 402 -CB_PERF_SEL_RESERVED_403 = 403 -CB_PERF_SEL_RESERVED_404 = 404 -CB_PERF_SEL_RESERVED_405 = 405 -CB_PERF_SEL_RESERVED_406 = 406 -CB_PERF_SEL_RESERVED_407 = 407 -CB_PERF_SEL_RESERVED_408 = 408 -CB_PERF_SEL_RESERVED_409 = 409 -CB_PERF_SEL_RESERVED_410 = 410 -CB_PERF_SEL_RESERVED_411 = 411 -CB_PERF_SEL_RESERVED_412 = 412 -CB_PERF_SEL_RESERVED_413 = 413 -CB_PERF_SEL_RESERVED_414 = 414 -CB_PERF_SEL_RESERVED_415 = 415 -CB_PERF_SEL_RESERVED_416 = 416 -CB_PERF_SEL_RESERVED_417 = 417 -CB_PERF_SEL_RESERVED_418 = 418 -CB_PERF_SEL_RESERVED_419 = 419 -CB_PERF_SEL_RESERVED_420 = 420 -CB_PERF_SEL_RESERVED_421 = 421 -CB_PERF_SEL_RESERVED_422 = 422 -CB_PERF_SEL_RESERVED_423 = 423 -CB_PERF_SEL_RESERVED_424 = 424 -CB_PERF_SEL_RESERVED_425 = 425 -CB_PERF_SEL_RESERVED_426 = 426 -CB_PERF_SEL_RESERVED_427 = 427 -CB_PERF_SEL_RESERVED_428 = 428 -CB_PERF_SEL_RESERVED_429 = 429 -CB_PERF_SEL_RESERVED_430 = 430 -CB_PERF_SEL_RESERVED_431 = 431 -CB_PERF_SEL_RESERVED_432 = 432 -CB_PERF_SEL_RESERVED_433 = 433 -CB_PERF_SEL_RESERVED_434 = 434 -CB_PERF_SEL_RESERVED_435 = 435 -CB_PERF_SEL_RESERVED_436 = 436 -CB_PERF_SEL_RESERVED_437 = 437 -CB_PERF_SEL_RESERVED_438 = 438 -CB_PERF_SEL_RESERVED_439 = 439 -CB_PERF_SEL_RESERVED_440 = 440 -CB_PERF_SEL_RESERVED_441 = 441 -CB_PERF_SEL_RESERVED_442 = 442 -CB_PERF_SEL_RESERVED_443 = 443 -CB_PERF_SEL_RESERVED_444 = 444 -CB_PERF_SEL_RESERVED_445 = 445 -CB_PERF_SEL_RESERVED_446 = 446 -CB_PERF_SEL_RESERVED_447 = 447 -CB_PERF_SEL_RESERVED_448 = 448 -CB_PERF_SEL_RESERVED_449 = 449 -CB_PERF_SEL_RESERVED_450 = 450 -CB_PERF_SEL_RESERVED_451 = 451 -CB_PERF_SEL_RESERVED_452 = 452 -CB_PERF_SEL_RESERVED_453 = 453 -CB_PERF_SEL_RESERVED_454 = 454 -CB_PERF_SEL_RESERVED_455 = 455 -CB_PERF_SEL_RESERVED_456 = 456 -CB_PERF_SEL_RESERVED_457 = 457 -CB_PERF_SEL_RESERVED_458 = 458 -CB_PERF_SEL_RESERVED_459 = 459 -CB_PERF_SEL_RESERVED_460 = 460 -CB_PERF_SEL_RESERVED_461 = 461 -CB_PERF_SEL_RESERVED_462 = 462 -CB_PERF_SEL_RESERVED_463 = 463 -CB_PERF_SEL_RESERVED_464 = 464 -CB_PERF_SEL_RESERVED_465 = 465 -CBPerfSel = ctypes.c_uint32 # enum - -# values for enumeration 'CBRamList' -CBRamList__enumvalues = { - 0: 'CB_DCG_CCC_CAS_TAG_ARRAY', - 1: 'CB_DCG_CCC_CAS_FRAG_PTR', - 2: 'CB_DCG_CCC_CAS_COLOR_PTR', - 3: 'CB_DCG_CCC_CAS_SURF_PARAM', - 4: 'CB_DCG_CCC_CAS_KEYID', - 5: 'CB_DCG_BACKEND_RDLAT_FIFO', - 6: 'CB_DCG_FRONTEND_RDLAT_FIFO', - 7: 'CB_DCG_SRC_FIFO', - 8: 'CB_DCG_COLOR_STORE', - 9: 'CB_DCG_COLOR_STORE_DIRTY_BYTE', - 10: 'CB_DCG_FMASK_CACHE_STORE', - 11: 'CB_DCG_READ_SKID_FIFO', - 12: 'CB_DCG_QUAD_PTR_FIFO', - 13: 'CB_DCG_OUTPUT_FIFO', - 14: 'CB_DCG_DCC_CACHE', - 15: 'CB_DCG_DCC_DIRTY_BITS', - 16: 'CB_DCG_QBLOCK_ALLOC', -} -CB_DCG_CCC_CAS_TAG_ARRAY = 0 -CB_DCG_CCC_CAS_FRAG_PTR = 1 -CB_DCG_CCC_CAS_COLOR_PTR = 2 -CB_DCG_CCC_CAS_SURF_PARAM = 3 -CB_DCG_CCC_CAS_KEYID = 4 -CB_DCG_BACKEND_RDLAT_FIFO = 5 -CB_DCG_FRONTEND_RDLAT_FIFO = 6 -CB_DCG_SRC_FIFO = 7 -CB_DCG_COLOR_STORE = 8 -CB_DCG_COLOR_STORE_DIRTY_BYTE = 9 -CB_DCG_FMASK_CACHE_STORE = 10 -CB_DCG_READ_SKID_FIFO = 11 -CB_DCG_QUAD_PTR_FIFO = 12 -CB_DCG_OUTPUT_FIFO = 13 -CB_DCG_DCC_CACHE = 14 -CB_DCG_DCC_DIRTY_BITS = 15 -CB_DCG_QBLOCK_ALLOC = 16 -CBRamList = ctypes.c_uint32 # enum - -# values for enumeration 'CmaskCode' -CmaskCode__enumvalues = { - 0: 'CMASK_CLR00_F0', - 1: 'CMASK_CLR00_F1', - 2: 'CMASK_CLR00_F2', - 3: 'CMASK_CLR00_FX', - 4: 'CMASK_CLR01_F0', - 5: 'CMASK_CLR01_F1', - 6: 'CMASK_CLR01_F2', - 7: 'CMASK_CLR01_FX', - 8: 'CMASK_CLR10_F0', - 9: 'CMASK_CLR10_F1', - 10: 'CMASK_CLR10_F2', - 11: 'CMASK_CLR10_FX', - 12: 'CMASK_CLR11_F0', - 13: 'CMASK_CLR11_F1', - 14: 'CMASK_CLR11_F2', - 15: 'CMASK_CLR11_FX', -} -CMASK_CLR00_F0 = 0 -CMASK_CLR00_F1 = 1 -CMASK_CLR00_F2 = 2 -CMASK_CLR00_FX = 3 -CMASK_CLR01_F0 = 4 -CMASK_CLR01_F1 = 5 -CMASK_CLR01_F2 = 6 -CMASK_CLR01_FX = 7 -CMASK_CLR10_F0 = 8 -CMASK_CLR10_F1 = 9 -CMASK_CLR10_F2 = 10 -CMASK_CLR10_FX = 11 -CMASK_CLR11_F0 = 12 -CMASK_CLR11_F1 = 13 -CMASK_CLR11_F2 = 14 -CMASK_CLR11_FX = 15 -CmaskCode = ctypes.c_uint32 # enum - -# values for enumeration 'CombFunc' -CombFunc__enumvalues = { - 0: 'COMB_DST_PLUS_SRC', - 1: 'COMB_SRC_MINUS_DST', - 2: 'COMB_MIN_DST_SRC', - 3: 'COMB_MAX_DST_SRC', - 4: 'COMB_DST_MINUS_SRC', -} -COMB_DST_PLUS_SRC = 0 -COMB_SRC_MINUS_DST = 1 -COMB_MIN_DST_SRC = 2 -COMB_MAX_DST_SRC = 3 -COMB_DST_MINUS_SRC = 4 -CombFunc = ctypes.c_uint32 # enum - -# values for enumeration 'MemArbMode' -MemArbMode__enumvalues = { - 0: 'MEM_ARB_MODE_FIXED', - 1: 'MEM_ARB_MODE_AGE', - 2: 'MEM_ARB_MODE_WEIGHT', - 3: 'MEM_ARB_MODE_BOTH', -} -MEM_ARB_MODE_FIXED = 0 -MEM_ARB_MODE_AGE = 1 -MEM_ARB_MODE_WEIGHT = 2 -MEM_ARB_MODE_BOTH = 3 -MemArbMode = ctypes.c_uint32 # enum - -# values for enumeration 'SourceFormat' -SourceFormat__enumvalues = { - 0: 'EXPORT_4C_32BPC', - 1: 'EXPORT_4C_16BPC', - 2: 'EXPORT_2C_32BPC_GR', - 3: 'EXPORT_2C_32BPC_AR', -} -EXPORT_4C_32BPC = 0 -EXPORT_4C_16BPC = 1 -EXPORT_2C_32BPC_GR = 2 -EXPORT_2C_32BPC_AR = 3 -SourceFormat = ctypes.c_uint32 # enum - -# values for enumeration 'BinEventCntl' -BinEventCntl__enumvalues = { - 0: 'BINNER_BREAK_BATCH', - 1: 'BINNER_PIPELINE', - 2: 'BINNER_DROP', - 3: 'BINNER_PIPELINE_BREAK', -} -BINNER_BREAK_BATCH = 0 -BINNER_PIPELINE = 1 -BINNER_DROP = 2 -BINNER_PIPELINE_BREAK = 3 -BinEventCntl = ctypes.c_uint32 # enum - -# values for enumeration 'BinMapMode' -BinMapMode__enumvalues = { - 0: 'BIN_MAP_MODE_NONE', - 1: 'BIN_MAP_MODE_RTA_INDEX', - 2: 'BIN_MAP_MODE_POPS', -} -BIN_MAP_MODE_NONE = 0 -BIN_MAP_MODE_RTA_INDEX = 1 -BIN_MAP_MODE_POPS = 2 -BinMapMode = ctypes.c_uint32 # enum - -# values for enumeration 'BinSizeExtend' -BinSizeExtend__enumvalues = { - 0: 'BIN_SIZE_32_PIXELS', - 1: 'BIN_SIZE_64_PIXELS', - 2: 'BIN_SIZE_128_PIXELS', - 3: 'BIN_SIZE_256_PIXELS', - 4: 'BIN_SIZE_512_PIXELS', -} -BIN_SIZE_32_PIXELS = 0 -BIN_SIZE_64_PIXELS = 1 -BIN_SIZE_128_PIXELS = 2 -BIN_SIZE_256_PIXELS = 3 -BIN_SIZE_512_PIXELS = 4 -BinSizeExtend = ctypes.c_uint32 # enum - -# values for enumeration 'BinningMode' -BinningMode__enumvalues = { - 0: 'BINNING_ALLOWED', - 1: 'FORCE_BINNING_ON', - 2: 'DISABLE_BINNING_USE_NEW_SC', - 3: 'DISABLE_BINNING_USE_LEGACY_SC', -} -BINNING_ALLOWED = 0 -FORCE_BINNING_ON = 1 -DISABLE_BINNING_USE_NEW_SC = 2 -DISABLE_BINNING_USE_LEGACY_SC = 3 -BinningMode = ctypes.c_uint32 # enum - -# values for enumeration 'CovToShaderSel' -CovToShaderSel__enumvalues = { - 0: 'INPUT_COVERAGE', - 1: 'INPUT_INNER_COVERAGE', - 2: 'INPUT_DEPTH_COVERAGE', - 3: 'RAW', -} -INPUT_COVERAGE = 0 -INPUT_INNER_COVERAGE = 1 -INPUT_DEPTH_COVERAGE = 2 -RAW = 3 -CovToShaderSel = ctypes.c_uint32 # enum - -# values for enumeration 'PkrMap' -PkrMap__enumvalues = { - 0: 'RASTER_CONFIG_PKR_MAP_0', - 1: 'RASTER_CONFIG_PKR_MAP_1', - 2: 'RASTER_CONFIG_PKR_MAP_2', - 3: 'RASTER_CONFIG_PKR_MAP_3', -} -RASTER_CONFIG_PKR_MAP_0 = 0 -RASTER_CONFIG_PKR_MAP_1 = 1 -RASTER_CONFIG_PKR_MAP_2 = 2 -RASTER_CONFIG_PKR_MAP_3 = 3 -PkrMap = ctypes.c_uint32 # enum - -# values for enumeration 'PkrXsel' -PkrXsel__enumvalues = { - 0: 'RASTER_CONFIG_PKR_XSEL_0', - 1: 'RASTER_CONFIG_PKR_XSEL_1', - 2: 'RASTER_CONFIG_PKR_XSEL_2', - 3: 'RASTER_CONFIG_PKR_XSEL_3', -} -RASTER_CONFIG_PKR_XSEL_0 = 0 -RASTER_CONFIG_PKR_XSEL_1 = 1 -RASTER_CONFIG_PKR_XSEL_2 = 2 -RASTER_CONFIG_PKR_XSEL_3 = 3 -PkrXsel = ctypes.c_uint32 # enum - -# values for enumeration 'PkrXsel2' -PkrXsel2__enumvalues = { - 0: 'RASTER_CONFIG_PKR_XSEL2_0', - 1: 'RASTER_CONFIG_PKR_XSEL2_1', - 2: 'RASTER_CONFIG_PKR_XSEL2_2', - 3: 'RASTER_CONFIG_PKR_XSEL2_3', -} -RASTER_CONFIG_PKR_XSEL2_0 = 0 -RASTER_CONFIG_PKR_XSEL2_1 = 1 -RASTER_CONFIG_PKR_XSEL2_2 = 2 -RASTER_CONFIG_PKR_XSEL2_3 = 3 -PkrXsel2 = ctypes.c_uint32 # enum - -# values for enumeration 'PkrYsel' -PkrYsel__enumvalues = { - 0: 'RASTER_CONFIG_PKR_YSEL_0', - 1: 'RASTER_CONFIG_PKR_YSEL_1', - 2: 'RASTER_CONFIG_PKR_YSEL_2', - 3: 'RASTER_CONFIG_PKR_YSEL_3', -} -RASTER_CONFIG_PKR_YSEL_0 = 0 -RASTER_CONFIG_PKR_YSEL_1 = 1 -RASTER_CONFIG_PKR_YSEL_2 = 2 -RASTER_CONFIG_PKR_YSEL_3 = 3 -PkrYsel = ctypes.c_uint32 # enum - -# values for enumeration 'RbMap' -RbMap__enumvalues = { - 0: 'RASTER_CONFIG_RB_MAP_0', - 1: 'RASTER_CONFIG_RB_MAP_1', - 2: 'RASTER_CONFIG_RB_MAP_2', - 3: 'RASTER_CONFIG_RB_MAP_3', -} -RASTER_CONFIG_RB_MAP_0 = 0 -RASTER_CONFIG_RB_MAP_1 = 1 -RASTER_CONFIG_RB_MAP_2 = 2 -RASTER_CONFIG_RB_MAP_3 = 3 -RbMap = ctypes.c_uint32 # enum - -# values for enumeration 'RbXsel' -RbXsel__enumvalues = { - 0: 'RASTER_CONFIG_RB_XSEL_0', - 1: 'RASTER_CONFIG_RB_XSEL_1', -} -RASTER_CONFIG_RB_XSEL_0 = 0 -RASTER_CONFIG_RB_XSEL_1 = 1 -RbXsel = ctypes.c_uint32 # enum - -# values for enumeration 'RbXsel2' -RbXsel2__enumvalues = { - 0: 'RASTER_CONFIG_RB_XSEL2_0', - 1: 'RASTER_CONFIG_RB_XSEL2_1', - 2: 'RASTER_CONFIG_RB_XSEL2_2', - 3: 'RASTER_CONFIG_RB_XSEL2_3', -} -RASTER_CONFIG_RB_XSEL2_0 = 0 -RASTER_CONFIG_RB_XSEL2_1 = 1 -RASTER_CONFIG_RB_XSEL2_2 = 2 -RASTER_CONFIG_RB_XSEL2_3 = 3 -RbXsel2 = ctypes.c_uint32 # enum - -# values for enumeration 'RbYsel' -RbYsel__enumvalues = { - 0: 'RASTER_CONFIG_RB_YSEL_0', - 1: 'RASTER_CONFIG_RB_YSEL_1', -} -RASTER_CONFIG_RB_YSEL_0 = 0 -RASTER_CONFIG_RB_YSEL_1 = 1 -RbYsel = ctypes.c_uint32 # enum - -# values for enumeration 'SC_PERFCNT_SEL' -SC_PERFCNT_SEL__enumvalues = { - 0: 'SC_SRPS_WINDOW_VALID', - 1: 'SC_PSSW_WINDOW_VALID', - 2: 'SC_TPQZ_WINDOW_VALID', - 3: 'SC_QZQP_WINDOW_VALID', - 4: 'SC_TRPK_WINDOW_VALID', - 5: 'SC_SRPS_WINDOW_VALID_BUSY', - 6: 'SC_PSSW_WINDOW_VALID_BUSY', - 7: 'SC_TPQZ_WINDOW_VALID_BUSY', - 8: 'SC_QZQP_WINDOW_VALID_BUSY', - 9: 'SC_TRPK_WINDOW_VALID_BUSY', - 10: 'SC_STARVED_BY_PA', - 11: 'SC_STALLED_BY_PRIMFIFO', - 12: 'SC_STALLED_BY_DB_TILE', - 13: 'SC_STARVED_BY_DB_TILE', - 14: 'SC_STALLED_BY_TILEORDERFIFO', - 15: 'SC_STALLED_BY_TILEFIFO', - 16: 'SC_STALLED_BY_DB_QUAD', - 17: 'SC_STARVED_BY_DB_QUAD', - 18: 'SC_STALLED_BY_QUADFIFO', - 19: 'SC_STALLED_BY_BCI', - 20: 'SC_STALLED_BY_SPI', - 21: 'SC_SCISSOR_DISCARD', - 22: 'SC_BB_DISCARD', - 23: 'SC_SUPERTILE_COUNT', - 24: 'SC_SUPERTILE_PER_PRIM_H0', - 25: 'SC_SUPERTILE_PER_PRIM_H1', - 26: 'SC_SUPERTILE_PER_PRIM_H2', - 27: 'SC_SUPERTILE_PER_PRIM_H3', - 28: 'SC_SUPERTILE_PER_PRIM_H4', - 29: 'SC_SUPERTILE_PER_PRIM_H5', - 30: 'SC_SUPERTILE_PER_PRIM_H6', - 31: 'SC_SUPERTILE_PER_PRIM_H7', - 32: 'SC_SUPERTILE_PER_PRIM_H8', - 33: 'SC_SUPERTILE_PER_PRIM_H9', - 34: 'SC_SUPERTILE_PER_PRIM_H10', - 35: 'SC_SUPERTILE_PER_PRIM_H11', - 36: 'SC_SUPERTILE_PER_PRIM_H12', - 37: 'SC_SUPERTILE_PER_PRIM_H13', - 38: 'SC_SUPERTILE_PER_PRIM_H14', - 39: 'SC_SUPERTILE_PER_PRIM_H15', - 40: 'SC_SUPERTILE_PER_PRIM_H16', - 41: 'SC_TILE_PER_PRIM_H0', - 42: 'SC_TILE_PER_PRIM_H1', - 43: 'SC_TILE_PER_PRIM_H2', - 44: 'SC_TILE_PER_PRIM_H3', - 45: 'SC_TILE_PER_PRIM_H4', - 46: 'SC_TILE_PER_PRIM_H5', - 47: 'SC_TILE_PER_PRIM_H6', - 48: 'SC_TILE_PER_PRIM_H7', - 49: 'SC_TILE_PER_PRIM_H8', - 50: 'SC_TILE_PER_PRIM_H9', - 51: 'SC_TILE_PER_PRIM_H10', - 52: 'SC_TILE_PER_PRIM_H11', - 53: 'SC_TILE_PER_PRIM_H12', - 54: 'SC_TILE_PER_PRIM_H13', - 55: 'SC_TILE_PER_PRIM_H14', - 56: 'SC_TILE_PER_PRIM_H15', - 57: 'SC_TILE_PER_PRIM_H16', - 58: 'SC_TILE_PER_SUPERTILE_H0', - 59: 'SC_TILE_PER_SUPERTILE_H1', - 60: 'SC_TILE_PER_SUPERTILE_H2', - 61: 'SC_TILE_PER_SUPERTILE_H3', - 62: 'SC_TILE_PER_SUPERTILE_H4', - 63: 'SC_TILE_PER_SUPERTILE_H5', - 64: 'SC_TILE_PER_SUPERTILE_H6', - 65: 'SC_TILE_PER_SUPERTILE_H7', - 66: 'SC_TILE_PER_SUPERTILE_H8', - 67: 'SC_TILE_PER_SUPERTILE_H9', - 68: 'SC_TILE_PER_SUPERTILE_H10', - 69: 'SC_TILE_PER_SUPERTILE_H11', - 70: 'SC_TILE_PER_SUPERTILE_H12', - 71: 'SC_TILE_PER_SUPERTILE_H13', - 72: 'SC_TILE_PER_SUPERTILE_H14', - 73: 'SC_TILE_PER_SUPERTILE_H15', - 74: 'SC_TILE_PER_SUPERTILE_H16', - 75: 'SC_TILE_PICKED_H1', - 76: 'SC_TILE_PICKED_H2', - 77: 'SC_TILE_PICKED_H3', - 78: 'SC_TILE_PICKED_H4', - 79: 'SC_QZ0_TILE_COUNT', - 80: 'SC_QZ1_TILE_COUNT', - 81: 'SC_QZ2_TILE_COUNT', - 82: 'SC_QZ3_TILE_COUNT', - 83: 'SC_QZ0_TILE_COVERED_COUNT', - 84: 'SC_QZ1_TILE_COVERED_COUNT', - 85: 'SC_QZ2_TILE_COVERED_COUNT', - 86: 'SC_QZ3_TILE_COVERED_COUNT', - 87: 'SC_QZ0_TILE_NOT_COVERED_COUNT', - 88: 'SC_QZ1_TILE_NOT_COVERED_COUNT', - 89: 'SC_QZ2_TILE_NOT_COVERED_COUNT', - 90: 'SC_QZ3_TILE_NOT_COVERED_COUNT', - 91: 'SC_QZ0_QUAD_PER_TILE_H0', - 92: 'SC_QZ0_QUAD_PER_TILE_H1', - 93: 'SC_QZ0_QUAD_PER_TILE_H2', - 94: 'SC_QZ0_QUAD_PER_TILE_H3', - 95: 'SC_QZ0_QUAD_PER_TILE_H4', - 96: 'SC_QZ0_QUAD_PER_TILE_H5', - 97: 'SC_QZ0_QUAD_PER_TILE_H6', - 98: 'SC_QZ0_QUAD_PER_TILE_H7', - 99: 'SC_QZ0_QUAD_PER_TILE_H8', - 100: 'SC_QZ0_QUAD_PER_TILE_H9', - 101: 'SC_QZ0_QUAD_PER_TILE_H10', - 102: 'SC_QZ0_QUAD_PER_TILE_H11', - 103: 'SC_QZ0_QUAD_PER_TILE_H12', - 104: 'SC_QZ0_QUAD_PER_TILE_H13', - 105: 'SC_QZ0_QUAD_PER_TILE_H14', - 106: 'SC_QZ0_QUAD_PER_TILE_H15', - 107: 'SC_QZ0_QUAD_PER_TILE_H16', - 108: 'SC_QZ1_QUAD_PER_TILE_H0', - 109: 'SC_QZ1_QUAD_PER_TILE_H1', - 110: 'SC_QZ1_QUAD_PER_TILE_H2', - 111: 'SC_QZ1_QUAD_PER_TILE_H3', - 112: 'SC_QZ1_QUAD_PER_TILE_H4', - 113: 'SC_QZ1_QUAD_PER_TILE_H5', - 114: 'SC_QZ1_QUAD_PER_TILE_H6', - 115: 'SC_QZ1_QUAD_PER_TILE_H7', - 116: 'SC_QZ1_QUAD_PER_TILE_H8', - 117: 'SC_QZ1_QUAD_PER_TILE_H9', - 118: 'SC_QZ1_QUAD_PER_TILE_H10', - 119: 'SC_QZ1_QUAD_PER_TILE_H11', - 120: 'SC_QZ1_QUAD_PER_TILE_H12', - 121: 'SC_QZ1_QUAD_PER_TILE_H13', - 122: 'SC_QZ1_QUAD_PER_TILE_H14', - 123: 'SC_QZ1_QUAD_PER_TILE_H15', - 124: 'SC_QZ1_QUAD_PER_TILE_H16', - 125: 'SC_QZ2_QUAD_PER_TILE_H0', - 126: 'SC_QZ2_QUAD_PER_TILE_H1', - 127: 'SC_QZ2_QUAD_PER_TILE_H2', - 128: 'SC_QZ2_QUAD_PER_TILE_H3', - 129: 'SC_QZ2_QUAD_PER_TILE_H4', - 130: 'SC_QZ2_QUAD_PER_TILE_H5', - 131: 'SC_QZ2_QUAD_PER_TILE_H6', - 132: 'SC_QZ2_QUAD_PER_TILE_H7', - 133: 'SC_QZ2_QUAD_PER_TILE_H8', - 134: 'SC_QZ2_QUAD_PER_TILE_H9', - 135: 'SC_QZ2_QUAD_PER_TILE_H10', - 136: 'SC_QZ2_QUAD_PER_TILE_H11', - 137: 'SC_QZ2_QUAD_PER_TILE_H12', - 138: 'SC_QZ2_QUAD_PER_TILE_H13', - 139: 'SC_QZ2_QUAD_PER_TILE_H14', - 140: 'SC_QZ2_QUAD_PER_TILE_H15', - 141: 'SC_QZ2_QUAD_PER_TILE_H16', - 142: 'SC_QZ3_QUAD_PER_TILE_H0', - 143: 'SC_QZ3_QUAD_PER_TILE_H1', - 144: 'SC_QZ3_QUAD_PER_TILE_H2', - 145: 'SC_QZ3_QUAD_PER_TILE_H3', - 146: 'SC_QZ3_QUAD_PER_TILE_H4', - 147: 'SC_QZ3_QUAD_PER_TILE_H5', - 148: 'SC_QZ3_QUAD_PER_TILE_H6', - 149: 'SC_QZ3_QUAD_PER_TILE_H7', - 150: 'SC_QZ3_QUAD_PER_TILE_H8', - 151: 'SC_QZ3_QUAD_PER_TILE_H9', - 152: 'SC_QZ3_QUAD_PER_TILE_H10', - 153: 'SC_QZ3_QUAD_PER_TILE_H11', - 154: 'SC_QZ3_QUAD_PER_TILE_H12', - 155: 'SC_QZ3_QUAD_PER_TILE_H13', - 156: 'SC_QZ3_QUAD_PER_TILE_H14', - 157: 'SC_QZ3_QUAD_PER_TILE_H15', - 158: 'SC_QZ3_QUAD_PER_TILE_H16', - 159: 'SC_QZ0_QUAD_COUNT', - 160: 'SC_QZ1_QUAD_COUNT', - 161: 'SC_QZ2_QUAD_COUNT', - 162: 'SC_QZ3_QUAD_COUNT', - 163: 'SC_P0_HIZ_TILE_COUNT', - 164: 'SC_P1_HIZ_TILE_COUNT', - 165: 'SC_P2_HIZ_TILE_COUNT', - 166: 'SC_P3_HIZ_TILE_COUNT', - 167: 'SC_P0_HIZ_QUAD_PER_TILE_H0', - 168: 'SC_P0_HIZ_QUAD_PER_TILE_H1', - 169: 'SC_P0_HIZ_QUAD_PER_TILE_H2', - 170: 'SC_P0_HIZ_QUAD_PER_TILE_H3', - 171: 'SC_P0_HIZ_QUAD_PER_TILE_H4', - 172: 'SC_P0_HIZ_QUAD_PER_TILE_H5', - 173: 'SC_P0_HIZ_QUAD_PER_TILE_H6', - 174: 'SC_P0_HIZ_QUAD_PER_TILE_H7', - 175: 'SC_P0_HIZ_QUAD_PER_TILE_H8', - 176: 'SC_P0_HIZ_QUAD_PER_TILE_H9', - 177: 'SC_P0_HIZ_QUAD_PER_TILE_H10', - 178: 'SC_P0_HIZ_QUAD_PER_TILE_H11', - 179: 'SC_P0_HIZ_QUAD_PER_TILE_H12', - 180: 'SC_P0_HIZ_QUAD_PER_TILE_H13', - 181: 'SC_P0_HIZ_QUAD_PER_TILE_H14', - 182: 'SC_P0_HIZ_QUAD_PER_TILE_H15', - 183: 'SC_P0_HIZ_QUAD_PER_TILE_H16', - 184: 'SC_P1_HIZ_QUAD_PER_TILE_H0', - 185: 'SC_P1_HIZ_QUAD_PER_TILE_H1', - 186: 'SC_P1_HIZ_QUAD_PER_TILE_H2', - 187: 'SC_P1_HIZ_QUAD_PER_TILE_H3', - 188: 'SC_P1_HIZ_QUAD_PER_TILE_H4', - 189: 'SC_P1_HIZ_QUAD_PER_TILE_H5', - 190: 'SC_P1_HIZ_QUAD_PER_TILE_H6', - 191: 'SC_P1_HIZ_QUAD_PER_TILE_H7', - 192: 'SC_P1_HIZ_QUAD_PER_TILE_H8', - 193: 'SC_P1_HIZ_QUAD_PER_TILE_H9', - 194: 'SC_P1_HIZ_QUAD_PER_TILE_H10', - 195: 'SC_P1_HIZ_QUAD_PER_TILE_H11', - 196: 'SC_P1_HIZ_QUAD_PER_TILE_H12', - 197: 'SC_P1_HIZ_QUAD_PER_TILE_H13', - 198: 'SC_P1_HIZ_QUAD_PER_TILE_H14', - 199: 'SC_P1_HIZ_QUAD_PER_TILE_H15', - 200: 'SC_P1_HIZ_QUAD_PER_TILE_H16', - 201: 'SC_P2_HIZ_QUAD_PER_TILE_H0', - 202: 'SC_P2_HIZ_QUAD_PER_TILE_H1', - 203: 'SC_P2_HIZ_QUAD_PER_TILE_H2', - 204: 'SC_P2_HIZ_QUAD_PER_TILE_H3', - 205: 'SC_P2_HIZ_QUAD_PER_TILE_H4', - 206: 'SC_P2_HIZ_QUAD_PER_TILE_H5', - 207: 'SC_P2_HIZ_QUAD_PER_TILE_H6', - 208: 'SC_P2_HIZ_QUAD_PER_TILE_H7', - 209: 'SC_P2_HIZ_QUAD_PER_TILE_H8', - 210: 'SC_P2_HIZ_QUAD_PER_TILE_H9', - 211: 'SC_P2_HIZ_QUAD_PER_TILE_H10', - 212: 'SC_P2_HIZ_QUAD_PER_TILE_H11', - 213: 'SC_P2_HIZ_QUAD_PER_TILE_H12', - 214: 'SC_P2_HIZ_QUAD_PER_TILE_H13', - 215: 'SC_P2_HIZ_QUAD_PER_TILE_H14', - 216: 'SC_P2_HIZ_QUAD_PER_TILE_H15', - 217: 'SC_P2_HIZ_QUAD_PER_TILE_H16', - 218: 'SC_P3_HIZ_QUAD_PER_TILE_H0', - 219: 'SC_P3_HIZ_QUAD_PER_TILE_H1', - 220: 'SC_P3_HIZ_QUAD_PER_TILE_H2', - 221: 'SC_P3_HIZ_QUAD_PER_TILE_H3', - 222: 'SC_P3_HIZ_QUAD_PER_TILE_H4', - 223: 'SC_P3_HIZ_QUAD_PER_TILE_H5', - 224: 'SC_P3_HIZ_QUAD_PER_TILE_H6', - 225: 'SC_P3_HIZ_QUAD_PER_TILE_H7', - 226: 'SC_P3_HIZ_QUAD_PER_TILE_H8', - 227: 'SC_P3_HIZ_QUAD_PER_TILE_H9', - 228: 'SC_P3_HIZ_QUAD_PER_TILE_H10', - 229: 'SC_P3_HIZ_QUAD_PER_TILE_H11', - 230: 'SC_P3_HIZ_QUAD_PER_TILE_H12', - 231: 'SC_P3_HIZ_QUAD_PER_TILE_H13', - 232: 'SC_P3_HIZ_QUAD_PER_TILE_H14', - 233: 'SC_P3_HIZ_QUAD_PER_TILE_H15', - 234: 'SC_P3_HIZ_QUAD_PER_TILE_H16', - 235: 'SC_P0_HIZ_QUAD_COUNT', - 236: 'SC_P1_HIZ_QUAD_COUNT', - 237: 'SC_P2_HIZ_QUAD_COUNT', - 238: 'SC_P3_HIZ_QUAD_COUNT', - 239: 'SC_P0_DETAIL_QUAD_COUNT', - 240: 'SC_P1_DETAIL_QUAD_COUNT', - 241: 'SC_P2_DETAIL_QUAD_COUNT', - 242: 'SC_P3_DETAIL_QUAD_COUNT', - 243: 'SC_P0_DETAIL_QUAD_WITH_1_PIX', - 244: 'SC_P0_DETAIL_QUAD_WITH_2_PIX', - 245: 'SC_P0_DETAIL_QUAD_WITH_3_PIX', - 246: 'SC_P0_DETAIL_QUAD_WITH_4_PIX', - 247: 'SC_P1_DETAIL_QUAD_WITH_1_PIX', - 248: 'SC_P1_DETAIL_QUAD_WITH_2_PIX', - 249: 'SC_P1_DETAIL_QUAD_WITH_3_PIX', - 250: 'SC_P1_DETAIL_QUAD_WITH_4_PIX', - 251: 'SC_P2_DETAIL_QUAD_WITH_1_PIX', - 252: 'SC_P2_DETAIL_QUAD_WITH_2_PIX', - 253: 'SC_P2_DETAIL_QUAD_WITH_3_PIX', - 254: 'SC_P2_DETAIL_QUAD_WITH_4_PIX', - 255: 'SC_P3_DETAIL_QUAD_WITH_1_PIX', - 256: 'SC_P3_DETAIL_QUAD_WITH_2_PIX', - 257: 'SC_P3_DETAIL_QUAD_WITH_3_PIX', - 258: 'SC_P3_DETAIL_QUAD_WITH_4_PIX', - 259: 'SC_EARLYZ_QUAD_COUNT', - 260: 'SC_EARLYZ_QUAD_WITH_1_PIX', - 261: 'SC_EARLYZ_QUAD_WITH_2_PIX', - 262: 'SC_EARLYZ_QUAD_WITH_3_PIX', - 263: 'SC_EARLYZ_QUAD_WITH_4_PIX', - 264: 'SC_PKR_QUAD_PER_ROW_H1', - 265: 'SC_PKR_QUAD_PER_ROW_H2', - 266: 'SC_PKR_4X2_QUAD_SPLIT', - 267: 'SC_PKR_4X2_FILL_QUAD', - 268: 'SC_PKR_END_OF_VECTOR', - 269: 'SC_PKR_CONTROL_XFER', - 270: 'SC_PKR_DBHANG_FORCE_EOV', - 271: 'SC_REG_SCLK_BUSY', - 272: 'SC_GRP0_DYN_SCLK_BUSY', - 273: 'SC_GRP1_DYN_SCLK_BUSY', - 274: 'SC_GRP2_DYN_SCLK_BUSY', - 275: 'SC_GRP3_DYN_SCLK_BUSY', - 276: 'SC_GRP4_DYN_SCLK_BUSY', - 277: 'SC_PA0_SC_DATA_FIFO_RD', - 278: 'SC_PA0_SC_DATA_FIFO_WE', - 279: 'SC_PA1_SC_DATA_FIFO_RD', - 280: 'SC_PA1_SC_DATA_FIFO_WE', - 281: 'SC_PS_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 282: 'SC_PS_ARB_XFC_ONLY_PRIM_CYCLES', - 283: 'SC_PS_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 284: 'SC_PS_ARB_STALLED_FROM_BELOW', - 285: 'SC_PS_ARB_STARVED_FROM_ABOVE', - 286: 'SC_PS_ARB_SC_BUSY', - 287: 'SC_PS_ARB_PA_SC_BUSY', - 288: 'SC_PA2_SC_DATA_FIFO_RD', - 289: 'SC_PA2_SC_DATA_FIFO_WE', - 290: 'SC_PA3_SC_DATA_FIFO_RD', - 291: 'SC_PA3_SC_DATA_FIFO_WE', - 292: 'SC_PA_SC_DEALLOC_0_0_WE', - 293: 'SC_PA_SC_DEALLOC_0_1_WE', - 294: 'SC_PA_SC_DEALLOC_1_0_WE', - 295: 'SC_PA_SC_DEALLOC_1_1_WE', - 296: 'SC_PA_SC_DEALLOC_2_0_WE', - 297: 'SC_PA_SC_DEALLOC_2_1_WE', - 298: 'SC_PA_SC_DEALLOC_3_0_WE', - 299: 'SC_PA_SC_DEALLOC_3_1_WE', - 300: 'SC_PA0_SC_EOP_WE', - 301: 'SC_PA0_SC_EOPG_WE', - 302: 'SC_PA0_SC_EVENT_WE', - 303: 'SC_PA1_SC_EOP_WE', - 304: 'SC_PA1_SC_EOPG_WE', - 305: 'SC_PA1_SC_EVENT_WE', - 306: 'SC_PA2_SC_EOP_WE', - 307: 'SC_PA2_SC_EOPG_WE', - 308: 'SC_PA2_SC_EVENT_WE', - 309: 'SC_PA3_SC_EOP_WE', - 310: 'SC_PA3_SC_EOPG_WE', - 311: 'SC_PA3_SC_EVENT_WE', - 312: 'SC_PS_ARB_OOO_THRESHOLD_SWITCH_TO_DESIRED_FIFO', - 313: 'SC_PS_ARB_OOO_FIFO_EMPTY_SWITCH', - 314: 'SC_PS_ARB_NULL_PRIM_BUBBLE_POP', - 315: 'SC_PS_ARB_EOP_POP_SYNC_POP', - 316: 'SC_PS_ARB_EVENT_SYNC_POP', - 317: 'SC_PS_ENG_MULTICYCLE_BUBBLE', - 318: 'SC_PA0_SC_FPOV_WE', - 319: 'SC_PA1_SC_FPOV_WE', - 320: 'SC_PA2_SC_FPOV_WE', - 321: 'SC_PA3_SC_FPOV_WE', - 322: 'SC_PA0_SC_LPOV_WE', - 323: 'SC_PA1_SC_LPOV_WE', - 324: 'SC_PA2_SC_LPOV_WE', - 325: 'SC_PA3_SC_LPOV_WE', - 326: 'SC_SPI_DEALLOC_0_0', - 327: 'SC_SPI_DEALLOC_0_1', - 328: 'SC_SPI_DEALLOC_0_2', - 329: 'SC_SPI_DEALLOC_1_0', - 330: 'SC_SPI_DEALLOC_1_1', - 331: 'SC_SPI_DEALLOC_1_2', - 332: 'SC_SPI_DEALLOC_2_0', - 333: 'SC_SPI_DEALLOC_2_1', - 334: 'SC_SPI_DEALLOC_2_2', - 335: 'SC_SPI_DEALLOC_3_0', - 336: 'SC_SPI_DEALLOC_3_1', - 337: 'SC_SPI_DEALLOC_3_2', - 338: 'SC_SPI_FPOV_0', - 339: 'SC_SPI_FPOV_1', - 340: 'SC_SPI_FPOV_2', - 341: 'SC_SPI_FPOV_3', - 342: 'SC_SPI_EVENT', - 343: 'SC_PS_TS_EVENT_FIFO_PUSH', - 344: 'SC_PS_TS_EVENT_FIFO_POP', - 345: 'SC_PS_CTX_DONE_FIFO_PUSH', - 346: 'SC_PS_CTX_DONE_FIFO_POP', - 347: 'SC_MULTICYCLE_BUBBLE_FREEZE', - 348: 'SC_EOP_SYNC_WINDOW', - 349: 'SC_PA0_SC_NULL_WE', - 350: 'SC_PA0_SC_NULL_DEALLOC_WE', - 351: 'SC_PA0_SC_DATA_FIFO_EOPG_RD', - 352: 'SC_PA0_SC_DATA_FIFO_EOP_RD', - 353: 'SC_PA0_SC_DEALLOC_0_RD', - 354: 'SC_PA0_SC_DEALLOC_1_RD', - 355: 'SC_PA1_SC_DATA_FIFO_EOPG_RD', - 356: 'SC_PA1_SC_DATA_FIFO_EOP_RD', - 357: 'SC_PA1_SC_DEALLOC_0_RD', - 358: 'SC_PA1_SC_DEALLOC_1_RD', - 359: 'SC_PA1_SC_NULL_WE', - 360: 'SC_PA1_SC_NULL_DEALLOC_WE', - 361: 'SC_PA2_SC_DATA_FIFO_EOPG_RD', - 362: 'SC_PA2_SC_DATA_FIFO_EOP_RD', - 363: 'SC_PA2_SC_DEALLOC_0_RD', - 364: 'SC_PA2_SC_DEALLOC_1_RD', - 365: 'SC_PA2_SC_NULL_WE', - 366: 'SC_PA2_SC_NULL_DEALLOC_WE', - 367: 'SC_PA3_SC_DATA_FIFO_EOPG_RD', - 368: 'SC_PA3_SC_DATA_FIFO_EOP_RD', - 369: 'SC_PA3_SC_DEALLOC_0_RD', - 370: 'SC_PA3_SC_DEALLOC_1_RD', - 371: 'SC_PA3_SC_NULL_WE', - 372: 'SC_PA3_SC_NULL_DEALLOC_WE', - 373: 'SC_PS_PA0_SC_FIFO_EMPTY', - 374: 'SC_PS_PA0_SC_FIFO_FULL', - 375: 'SC_RESERVED_0', - 376: 'SC_PS_PA1_SC_FIFO_EMPTY', - 377: 'SC_PS_PA1_SC_FIFO_FULL', - 378: 'SC_RESERVED_1', - 379: 'SC_PS_PA2_SC_FIFO_EMPTY', - 380: 'SC_PS_PA2_SC_FIFO_FULL', - 381: 'SC_RESERVED_2', - 382: 'SC_PS_PA3_SC_FIFO_EMPTY', - 383: 'SC_PS_PA3_SC_FIFO_FULL', - 384: 'SC_RESERVED_3', - 385: 'SC_BUSY_PROCESSING_MULTICYCLE_PRIM', - 386: 'SC_BUSY_CNT_NOT_ZERO', - 387: 'SC_BM_BUSY', - 388: 'SC_BACKEND_BUSY', - 389: 'SC_SCF_SCB_INTERFACE_BUSY', - 390: 'SC_SCB_BUSY', - 391: 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_NOT_EMPTY', - 392: 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_FULL', - 393: 'SC_PBB_BIN_HIST_NUM_PRIMS', - 394: 'SC_PBB_BATCH_HIST_NUM_PRIMS', - 395: 'SC_PBB_BIN_HIST_NUM_CONTEXTS', - 396: 'SC_PBB_BATCH_HIST_NUM_CONTEXTS', - 397: 'SC_PBB_BIN_HIST_NUM_PERSISTENT_STATES', - 398: 'SC_PBB_BATCH_HIST_NUM_PERSISTENT_STATES', - 399: 'SC_PBB_BATCH_HIST_NUM_PS_WAVE_BREAKS', - 400: 'SC_PBB_BATCH_HIST_NUM_TRIV_REJECTED_PRIMS', - 401: 'SC_PBB_BATCH_HIST_NUM_ROWS_PER_PRIM', - 402: 'SC_PBB_BATCH_HIST_NUM_COLUMNS_PER_ROW', - 403: 'SC_PBB_BUSY', - 404: 'SC_PBB_BUSY_AND_NO_SENDS', - 405: 'SC_PBB_STALLS_PA_DUE_TO_NO_TILES', - 406: 'SC_PBB_NUM_BINS', - 407: 'SC_PBB_END_OF_BIN', - 408: 'SC_PBB_END_OF_BATCH', - 409: 'SC_PBB_PRIMBIN_PROCESSED', - 410: 'SC_PBB_PRIM_ADDED_TO_BATCH', - 411: 'SC_PBB_NONBINNED_PRIM', - 412: 'SC_PBB_TOTAL_REAL_PRIMS_OUT_OF_PBB', - 413: 'SC_PBB_TOTAL_NULL_PRIMS_OUT_OF_PBB', - 414: 'SC_PBB_IDLE_CLK_DUE_TO_ROW_TO_COLUMN_TRANSITION', - 415: 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_ROW', - 416: 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_COLUMN', - 417: 'SC_PBB_BATCH_BREAK_DUE_TO_PERSISTENT_STATE', - 418: 'SC_PBB_BATCH_BREAK_DUE_TO_CONTEXT_STATE', - 419: 'SC_PBB_BATCH_BREAK_DUE_TO_PRIM', - 420: 'SC_PBB_BATCH_BREAK_DUE_TO_PC_STORAGE', - 421: 'SC_PBB_BATCH_BREAK_DUE_TO_EVENT', - 422: 'SC_PBB_BATCH_BREAK_DUE_TO_FPOV_LIMIT', - 423: 'SC_POPS_INTRA_WAVE_OVERLAPS', - 424: 'SC_POPS_FORCE_EOV', - 425: 'SC_PKR_QUAD_OVLP_NOT_FOUND_IN_WAVE_TABLE_AND_WAVES_SINCE_OVLP_SET_TO_MAX', - 426: 'SC_PKR_QUAD_OVLP_NOT_FOUND_IN_WAVE_TABLE_AND_NO_CHANGE_TO_WAVES_SINCE_OVLP', - 427: 'SC_PKR_QUAD_OVLP_FOUND_IN_WAVE_TABLE', - 428: 'SC_FULL_FULL_QUAD', - 429: 'SC_FULL_HALF_QUAD', - 430: 'SC_FULL_QTR_QUAD', - 431: 'SC_HALF_FULL_QUAD', - 432: 'SC_HALF_HALF_QUAD', - 433: 'SC_HALF_QTR_QUAD', - 434: 'SC_QTR_FULL_QUAD', - 435: 'SC_QTR_HALF_QUAD', - 436: 'SC_QTR_QTR_QUAD', - 437: 'SC_GRP5_DYN_SCLK_BUSY', - 438: 'SC_GRP6_DYN_SCLK_BUSY', - 439: 'SC_GRP7_DYN_SCLK_BUSY', - 440: 'SC_GRP8_DYN_SCLK_BUSY', - 441: 'SC_GRP9_DYN_SCLK_BUSY', - 442: 'SC_PS_TO_BE_SCLK_GATE_STALL', - 443: 'SC_PA_TO_PBB_SCLK_GATE_STALL_STALL', - 444: 'SC_PK_BUSY', - 445: 'SC_PK_MAX_DEALLOC_FORCE_EOV', - 446: 'SC_PK_DEALLOC_WAVE_BREAK', - 447: 'SC_SPI_SEND', - 448: 'SC_SPI_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 449: 'SC_SPI_CREDIT_AT_MAX', - 450: 'SC_SPI_CREDIT_AT_MAX_NO_PENDING_SEND', - 451: 'SC_BCI_SEND', - 452: 'SC_BCI_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 453: 'SC_BCI_CREDIT_AT_MAX', - 454: 'SC_BCI_CREDIT_AT_MAX_NO_PENDING_SEND', - 455: 'SC_SPIBC_FULL_FREEZE', - 456: 'SC_PW_BM_PASS_EMPTY_PRIM', - 457: 'SC_SUPERTILE_COUNT_EXCLUDE_PASS_EMPTY_PRIM', - 458: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H0', - 459: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H1', - 460: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H2', - 461: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H3', - 462: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H4', - 463: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H5', - 464: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H6', - 465: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H7', - 466: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H8', - 467: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H9', - 468: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H10', - 469: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H11', - 470: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H12', - 471: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H13', - 472: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H14', - 473: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H15', - 474: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H16', - 475: 'SC_DB0_TILE_INTERFACE_BUSY', - 476: 'SC_DB0_TILE_INTERFACE_SEND', - 477: 'SC_DB0_TILE_INTERFACE_SEND_EVENT', - 478: 'SC_DB0_TILE_INTERFACE_SEND_SOP_ONLY_EVENT', - 479: 'SC_DB0_TILE_INTERFACE_SEND_SOP', - 480: 'SC_DB0_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 481: 'SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX', - 482: 'SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND', - 483: 'SC_DB1_TILE_INTERFACE_BUSY', - 484: 'SC_DB1_TILE_INTERFACE_SEND', - 485: 'SC_DB1_TILE_INTERFACE_SEND_EVENT', - 486: 'SC_DB1_TILE_INTERFACE_SEND_SOP_ONLY_EVENT', - 487: 'SC_DB1_TILE_INTERFACE_SEND_SOP', - 488: 'SC_DB1_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 489: 'SC_DB1_TILE_INTERFACE_CREDIT_AT_MAX', - 490: 'SC_DB1_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND', - 491: 'SC_BACKEND_PRIM_FIFO_FULL', - 492: 'SC_PBB_BATCH_BREAK_DUE_TO_TIMEOUT_COUNTER', - 493: 'SC_PBB_BATCH_BREAK_DUE_TO_NONBINNED_BATCH', - 494: 'SC_PBB_BATCH_BREAK_DUE_TO_DEBUG_DATA_PER_DRAW_DISPATCH', - 495: 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_PERSISTENT', - 496: 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_CONTEXT', - 497: 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_FPOV', - 498: 'SC_PBB_BATCH_BREAK_DUE_TO_NEW_SC_MODE', - 499: 'SC_PBB_BATCH_BREAK_DUE_TO_BINNING_MODE_CHANGE', - 500: 'SC_PBB_BATCH_BREAK_DUE_TO_PIPELINE_EVENT_COUNT', - 501: 'SC_PBB_BATCH_BREAK_DUE_TO_PIPE_RESET', - 502: 'SC_PBB_BATCH_BREAK_DUE_TO_GFX_PIPE_CHANGE', - 503: 'SC_STALLED_BY_DB0_TILEFIFO', - 504: 'SC_DB0_QUAD_INTF_SEND', - 505: 'SC_DB0_QUAD_INTF_BUSY', - 506: 'SC_DB0_QUAD_INTF_STALLED_BY_DB', - 507: 'SC_DB0_QUAD_INTF_CREDIT_AT_MAX', - 508: 'SC_DB0_QUAD_INTF_IDLE', - 509: 'SC_DB1_QUAD_INTF_SEND', - 510: 'SC_STALLED_BY_DB1_TILEFIFO', - 511: 'SC_DB1_QUAD_INTF_BUSY', - 512: 'SC_DB1_QUAD_INTF_STALLED_BY_DB', - 513: 'SC_DB1_QUAD_INTF_CREDIT_AT_MAX', - 514: 'SC_DB1_QUAD_INTF_IDLE', - 515: 'SC_PKR_WAVE_BREAK_OUTSIDE_REGION', - 516: 'SC_PKR_WAVE_BREAK_FULL_TILE', - 517: 'SC_FSR_WALKED', - 518: 'SC_PBB_EMPTY_INPUT_CYCLE_WHEN_BATCH_OPEN', - 519: 'SC_PBB_BATCH_BREAK_DUE_TO_NULL_PRIM_BREAK_BATCH_LIMIT', - 520: 'SC_DB0_WE_STALLED_BY_RSLT_FIFO_FULL', - 521: 'SC_DB0_WE_TILE_MASK_RETURN_FIFO_FULL_WITH_WE_RSLT_FIFO_STALL', - 522: 'SC_DB0_TILE_MASK_FIFO_FULL', - 523: 'SC_DB1_WE_STALLED_BY_RSLT_FIFO_FULL', - 524: 'SC_DB1_WE_TILE_MASK_RETURN_FIFO_FULL_WITH_WE_RSLT_FIFO_STALL', - 525: 'SC_DB1_TILE_MASK_FIFO_FULL', - 526: 'SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_PFF_PW_FULL', - 527: 'SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_ZFF_PW_FULL', - 528: 'SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_PBB_TO_PSE_FIFO_FULL', - 529: 'SC_PS_PM_PFF_PW_FULL', - 530: 'SC_PS_PM_ZFF_PW_FULL', - 531: 'SC_PS_PM_PBB_TO_PSE_FIFO_FULL', - 532: 'SC_PK_PM_QD1_FD_CONFLICT_WAVE_BRK_1H', - 533: 'SC_PK_PM_QD1_FORCE_PARTIAL_FOR_DEALLOC_WAVE_BRK_1H', - 534: 'SC_PK_PM_QD1_AVOID_DEALLOC_ADD_WAVE_BRK_1H', - 535: 'SC_PK_PM_4X2_SPLIT_WAVE_BRK_1H', - 536: 'SC_PK_PM_PKR_FILL_4X2_WAVE_BRK_1H', - 537: 'SC_PK_PM_SPLIT_OR_FILL_4X2_WAVE_BRK_1H', - 538: 'SC_PK_PM_END_OF_VECTOR_WAVE_BRK_1H', - 539: 'SC_PK_PM_LAST_AND_DEALLOC_WAVE_BRK_1H', - 540: 'SC_PK_PM_CTL_ONLY_CMD_WAVE_BRK_1H', - 541: 'SC_PK_PM_AVOID_DEALLOC_ADD_WAVE_BRK_1H', - 542: 'SC_PK_PM_FD_CONFLICT_WAVE_BRK_1H', - 543: 'SC_PK_PM_FORCE_PARTIAL_FOR_DEALLOC_WAVE_BRK_1H', - 544: 'SC_PK_PM_AE_CONFLICT_WAVE_BRK_1H', - 545: 'SC_PK_PM_EOP_OR_LAD_WAVE_BRK_1H', - 546: 'SC_PK_PM_FULL_TILE_WAVE_BRK_1H', - 547: 'SC_PK_PM_POPS_FORCE_EOV_WAVE_BRK_1H', - 548: 'SC_PK_PM_MAX_DEALLOC_FORCE_EOV_WAVE_BRK_1H', - 549: 'SC_PK_PM_WAVE_BREAK_OUTSIDE_REGION_WAVE_BRK_1H', - 550: 'SC_PK_PM_MAX_CLK_CNT_FORCE_EOV_WAVE_BRK_1H', - 551: 'SC_PK_PM_MAX_REZ_CNT_FORCE_EOV_WAVE_BRK_1H', - 552: 'SC_PK_PM_VRS_RATE_X_00_Y_00_QUAD', - 553: 'SC_PK_PM_VRS_RATE_X_00_Y_01_QUAD', - 554: 'SC_PK_PM_VRS_RATE_X_00_Y_10_QUAD', - 555: 'SC_PK_PM_VRS_RATE_X_00_Y_11_QUAD', - 556: 'SC_PK_PM_VRS_RATE_X_01_Y_00_QUAD', - 557: 'SC_PK_PM_VRS_RATE_X_01_Y_01_QUAD', - 558: 'SC_PK_PM_VRS_RATE_X_01_Y_10_QUAD', - 559: 'SC_PK_PM_VRS_RATE_X_01_Y_11_QUAD', - 560: 'SC_PK_PM_VRS_RATE_X_10_Y_00_QUAD', - 561: 'SC_PK_PM_VRS_RATE_X_10_Y_01_QUAD', - 562: 'SC_PK_PM_VRS_RATE_X_10_Y_10_QUAD', - 563: 'SC_PK_PM_VRS_RATE_X_10_Y_11_QUAD', - 564: 'SC_PK_PM_VRS_RATE_X_11_Y_00_QUAD', - 565: 'SC_PK_PM_VRS_RATE_X_11_Y_01_QUAD', - 566: 'SC_PK_PM_VRS_RATE_X_11_Y_10_QUAD', - 567: 'SC_PK_PM_VRS_RATE_X_11_Y_11_QUAD', - 568: 'SC_PBB_BATCH_BREAK_DUE_TO_PIPELINE_MODE_CHANGE', - 569: 'SC_PBB_RESERVED', - 570: 'SC_BM_BE0_STALLED', - 571: 'SC_BM_BE1_STALLED', - 572: 'SC_BM_BE2_STALLED', - 573: 'SC_BM_BE3_STALLED', - 574: 'SC_BM_MULTI_ACCUM_1_BE_STALLED', - 575: 'SC_BM_MULTI_ACCUM_2_BE_STALLED', - 576: 'SC_BM_MULTI_ACCUM_3_BE_STALLED', - 577: 'SC_BM_MULTI_ACCUM_4_BE_STALLED', -} -SC_SRPS_WINDOW_VALID = 0 -SC_PSSW_WINDOW_VALID = 1 -SC_TPQZ_WINDOW_VALID = 2 -SC_QZQP_WINDOW_VALID = 3 -SC_TRPK_WINDOW_VALID = 4 -SC_SRPS_WINDOW_VALID_BUSY = 5 -SC_PSSW_WINDOW_VALID_BUSY = 6 -SC_TPQZ_WINDOW_VALID_BUSY = 7 -SC_QZQP_WINDOW_VALID_BUSY = 8 -SC_TRPK_WINDOW_VALID_BUSY = 9 -SC_STARVED_BY_PA = 10 -SC_STALLED_BY_PRIMFIFO = 11 -SC_STALLED_BY_DB_TILE = 12 -SC_STARVED_BY_DB_TILE = 13 -SC_STALLED_BY_TILEORDERFIFO = 14 -SC_STALLED_BY_TILEFIFO = 15 -SC_STALLED_BY_DB_QUAD = 16 -SC_STARVED_BY_DB_QUAD = 17 -SC_STALLED_BY_QUADFIFO = 18 -SC_STALLED_BY_BCI = 19 -SC_STALLED_BY_SPI = 20 -SC_SCISSOR_DISCARD = 21 -SC_BB_DISCARD = 22 -SC_SUPERTILE_COUNT = 23 -SC_SUPERTILE_PER_PRIM_H0 = 24 -SC_SUPERTILE_PER_PRIM_H1 = 25 -SC_SUPERTILE_PER_PRIM_H2 = 26 -SC_SUPERTILE_PER_PRIM_H3 = 27 -SC_SUPERTILE_PER_PRIM_H4 = 28 -SC_SUPERTILE_PER_PRIM_H5 = 29 -SC_SUPERTILE_PER_PRIM_H6 = 30 -SC_SUPERTILE_PER_PRIM_H7 = 31 -SC_SUPERTILE_PER_PRIM_H8 = 32 -SC_SUPERTILE_PER_PRIM_H9 = 33 -SC_SUPERTILE_PER_PRIM_H10 = 34 -SC_SUPERTILE_PER_PRIM_H11 = 35 -SC_SUPERTILE_PER_PRIM_H12 = 36 -SC_SUPERTILE_PER_PRIM_H13 = 37 -SC_SUPERTILE_PER_PRIM_H14 = 38 -SC_SUPERTILE_PER_PRIM_H15 = 39 -SC_SUPERTILE_PER_PRIM_H16 = 40 -SC_TILE_PER_PRIM_H0 = 41 -SC_TILE_PER_PRIM_H1 = 42 -SC_TILE_PER_PRIM_H2 = 43 -SC_TILE_PER_PRIM_H3 = 44 -SC_TILE_PER_PRIM_H4 = 45 -SC_TILE_PER_PRIM_H5 = 46 -SC_TILE_PER_PRIM_H6 = 47 -SC_TILE_PER_PRIM_H7 = 48 -SC_TILE_PER_PRIM_H8 = 49 -SC_TILE_PER_PRIM_H9 = 50 -SC_TILE_PER_PRIM_H10 = 51 -SC_TILE_PER_PRIM_H11 = 52 -SC_TILE_PER_PRIM_H12 = 53 -SC_TILE_PER_PRIM_H13 = 54 -SC_TILE_PER_PRIM_H14 = 55 -SC_TILE_PER_PRIM_H15 = 56 -SC_TILE_PER_PRIM_H16 = 57 -SC_TILE_PER_SUPERTILE_H0 = 58 -SC_TILE_PER_SUPERTILE_H1 = 59 -SC_TILE_PER_SUPERTILE_H2 = 60 -SC_TILE_PER_SUPERTILE_H3 = 61 -SC_TILE_PER_SUPERTILE_H4 = 62 -SC_TILE_PER_SUPERTILE_H5 = 63 -SC_TILE_PER_SUPERTILE_H6 = 64 -SC_TILE_PER_SUPERTILE_H7 = 65 -SC_TILE_PER_SUPERTILE_H8 = 66 -SC_TILE_PER_SUPERTILE_H9 = 67 -SC_TILE_PER_SUPERTILE_H10 = 68 -SC_TILE_PER_SUPERTILE_H11 = 69 -SC_TILE_PER_SUPERTILE_H12 = 70 -SC_TILE_PER_SUPERTILE_H13 = 71 -SC_TILE_PER_SUPERTILE_H14 = 72 -SC_TILE_PER_SUPERTILE_H15 = 73 -SC_TILE_PER_SUPERTILE_H16 = 74 -SC_TILE_PICKED_H1 = 75 -SC_TILE_PICKED_H2 = 76 -SC_TILE_PICKED_H3 = 77 -SC_TILE_PICKED_H4 = 78 -SC_QZ0_TILE_COUNT = 79 -SC_QZ1_TILE_COUNT = 80 -SC_QZ2_TILE_COUNT = 81 -SC_QZ3_TILE_COUNT = 82 -SC_QZ0_TILE_COVERED_COUNT = 83 -SC_QZ1_TILE_COVERED_COUNT = 84 -SC_QZ2_TILE_COVERED_COUNT = 85 -SC_QZ3_TILE_COVERED_COUNT = 86 -SC_QZ0_TILE_NOT_COVERED_COUNT = 87 -SC_QZ1_TILE_NOT_COVERED_COUNT = 88 -SC_QZ2_TILE_NOT_COVERED_COUNT = 89 -SC_QZ3_TILE_NOT_COVERED_COUNT = 90 -SC_QZ0_QUAD_PER_TILE_H0 = 91 -SC_QZ0_QUAD_PER_TILE_H1 = 92 -SC_QZ0_QUAD_PER_TILE_H2 = 93 -SC_QZ0_QUAD_PER_TILE_H3 = 94 -SC_QZ0_QUAD_PER_TILE_H4 = 95 -SC_QZ0_QUAD_PER_TILE_H5 = 96 -SC_QZ0_QUAD_PER_TILE_H6 = 97 -SC_QZ0_QUAD_PER_TILE_H7 = 98 -SC_QZ0_QUAD_PER_TILE_H8 = 99 -SC_QZ0_QUAD_PER_TILE_H9 = 100 -SC_QZ0_QUAD_PER_TILE_H10 = 101 -SC_QZ0_QUAD_PER_TILE_H11 = 102 -SC_QZ0_QUAD_PER_TILE_H12 = 103 -SC_QZ0_QUAD_PER_TILE_H13 = 104 -SC_QZ0_QUAD_PER_TILE_H14 = 105 -SC_QZ0_QUAD_PER_TILE_H15 = 106 -SC_QZ0_QUAD_PER_TILE_H16 = 107 -SC_QZ1_QUAD_PER_TILE_H0 = 108 -SC_QZ1_QUAD_PER_TILE_H1 = 109 -SC_QZ1_QUAD_PER_TILE_H2 = 110 -SC_QZ1_QUAD_PER_TILE_H3 = 111 -SC_QZ1_QUAD_PER_TILE_H4 = 112 -SC_QZ1_QUAD_PER_TILE_H5 = 113 -SC_QZ1_QUAD_PER_TILE_H6 = 114 -SC_QZ1_QUAD_PER_TILE_H7 = 115 -SC_QZ1_QUAD_PER_TILE_H8 = 116 -SC_QZ1_QUAD_PER_TILE_H9 = 117 -SC_QZ1_QUAD_PER_TILE_H10 = 118 -SC_QZ1_QUAD_PER_TILE_H11 = 119 -SC_QZ1_QUAD_PER_TILE_H12 = 120 -SC_QZ1_QUAD_PER_TILE_H13 = 121 -SC_QZ1_QUAD_PER_TILE_H14 = 122 -SC_QZ1_QUAD_PER_TILE_H15 = 123 -SC_QZ1_QUAD_PER_TILE_H16 = 124 -SC_QZ2_QUAD_PER_TILE_H0 = 125 -SC_QZ2_QUAD_PER_TILE_H1 = 126 -SC_QZ2_QUAD_PER_TILE_H2 = 127 -SC_QZ2_QUAD_PER_TILE_H3 = 128 -SC_QZ2_QUAD_PER_TILE_H4 = 129 -SC_QZ2_QUAD_PER_TILE_H5 = 130 -SC_QZ2_QUAD_PER_TILE_H6 = 131 -SC_QZ2_QUAD_PER_TILE_H7 = 132 -SC_QZ2_QUAD_PER_TILE_H8 = 133 -SC_QZ2_QUAD_PER_TILE_H9 = 134 -SC_QZ2_QUAD_PER_TILE_H10 = 135 -SC_QZ2_QUAD_PER_TILE_H11 = 136 -SC_QZ2_QUAD_PER_TILE_H12 = 137 -SC_QZ2_QUAD_PER_TILE_H13 = 138 -SC_QZ2_QUAD_PER_TILE_H14 = 139 -SC_QZ2_QUAD_PER_TILE_H15 = 140 -SC_QZ2_QUAD_PER_TILE_H16 = 141 -SC_QZ3_QUAD_PER_TILE_H0 = 142 -SC_QZ3_QUAD_PER_TILE_H1 = 143 -SC_QZ3_QUAD_PER_TILE_H2 = 144 -SC_QZ3_QUAD_PER_TILE_H3 = 145 -SC_QZ3_QUAD_PER_TILE_H4 = 146 -SC_QZ3_QUAD_PER_TILE_H5 = 147 -SC_QZ3_QUAD_PER_TILE_H6 = 148 -SC_QZ3_QUAD_PER_TILE_H7 = 149 -SC_QZ3_QUAD_PER_TILE_H8 = 150 -SC_QZ3_QUAD_PER_TILE_H9 = 151 -SC_QZ3_QUAD_PER_TILE_H10 = 152 -SC_QZ3_QUAD_PER_TILE_H11 = 153 -SC_QZ3_QUAD_PER_TILE_H12 = 154 -SC_QZ3_QUAD_PER_TILE_H13 = 155 -SC_QZ3_QUAD_PER_TILE_H14 = 156 -SC_QZ3_QUAD_PER_TILE_H15 = 157 -SC_QZ3_QUAD_PER_TILE_H16 = 158 -SC_QZ0_QUAD_COUNT = 159 -SC_QZ1_QUAD_COUNT = 160 -SC_QZ2_QUAD_COUNT = 161 -SC_QZ3_QUAD_COUNT = 162 -SC_P0_HIZ_TILE_COUNT = 163 -SC_P1_HIZ_TILE_COUNT = 164 -SC_P2_HIZ_TILE_COUNT = 165 -SC_P3_HIZ_TILE_COUNT = 166 -SC_P0_HIZ_QUAD_PER_TILE_H0 = 167 -SC_P0_HIZ_QUAD_PER_TILE_H1 = 168 -SC_P0_HIZ_QUAD_PER_TILE_H2 = 169 -SC_P0_HIZ_QUAD_PER_TILE_H3 = 170 -SC_P0_HIZ_QUAD_PER_TILE_H4 = 171 -SC_P0_HIZ_QUAD_PER_TILE_H5 = 172 -SC_P0_HIZ_QUAD_PER_TILE_H6 = 173 -SC_P0_HIZ_QUAD_PER_TILE_H7 = 174 -SC_P0_HIZ_QUAD_PER_TILE_H8 = 175 -SC_P0_HIZ_QUAD_PER_TILE_H9 = 176 -SC_P0_HIZ_QUAD_PER_TILE_H10 = 177 -SC_P0_HIZ_QUAD_PER_TILE_H11 = 178 -SC_P0_HIZ_QUAD_PER_TILE_H12 = 179 -SC_P0_HIZ_QUAD_PER_TILE_H13 = 180 -SC_P0_HIZ_QUAD_PER_TILE_H14 = 181 -SC_P0_HIZ_QUAD_PER_TILE_H15 = 182 -SC_P0_HIZ_QUAD_PER_TILE_H16 = 183 -SC_P1_HIZ_QUAD_PER_TILE_H0 = 184 -SC_P1_HIZ_QUAD_PER_TILE_H1 = 185 -SC_P1_HIZ_QUAD_PER_TILE_H2 = 186 -SC_P1_HIZ_QUAD_PER_TILE_H3 = 187 -SC_P1_HIZ_QUAD_PER_TILE_H4 = 188 -SC_P1_HIZ_QUAD_PER_TILE_H5 = 189 -SC_P1_HIZ_QUAD_PER_TILE_H6 = 190 -SC_P1_HIZ_QUAD_PER_TILE_H7 = 191 -SC_P1_HIZ_QUAD_PER_TILE_H8 = 192 -SC_P1_HIZ_QUAD_PER_TILE_H9 = 193 -SC_P1_HIZ_QUAD_PER_TILE_H10 = 194 -SC_P1_HIZ_QUAD_PER_TILE_H11 = 195 -SC_P1_HIZ_QUAD_PER_TILE_H12 = 196 -SC_P1_HIZ_QUAD_PER_TILE_H13 = 197 -SC_P1_HIZ_QUAD_PER_TILE_H14 = 198 -SC_P1_HIZ_QUAD_PER_TILE_H15 = 199 -SC_P1_HIZ_QUAD_PER_TILE_H16 = 200 -SC_P2_HIZ_QUAD_PER_TILE_H0 = 201 -SC_P2_HIZ_QUAD_PER_TILE_H1 = 202 -SC_P2_HIZ_QUAD_PER_TILE_H2 = 203 -SC_P2_HIZ_QUAD_PER_TILE_H3 = 204 -SC_P2_HIZ_QUAD_PER_TILE_H4 = 205 -SC_P2_HIZ_QUAD_PER_TILE_H5 = 206 -SC_P2_HIZ_QUAD_PER_TILE_H6 = 207 -SC_P2_HIZ_QUAD_PER_TILE_H7 = 208 -SC_P2_HIZ_QUAD_PER_TILE_H8 = 209 -SC_P2_HIZ_QUAD_PER_TILE_H9 = 210 -SC_P2_HIZ_QUAD_PER_TILE_H10 = 211 -SC_P2_HIZ_QUAD_PER_TILE_H11 = 212 -SC_P2_HIZ_QUAD_PER_TILE_H12 = 213 -SC_P2_HIZ_QUAD_PER_TILE_H13 = 214 -SC_P2_HIZ_QUAD_PER_TILE_H14 = 215 -SC_P2_HIZ_QUAD_PER_TILE_H15 = 216 -SC_P2_HIZ_QUAD_PER_TILE_H16 = 217 -SC_P3_HIZ_QUAD_PER_TILE_H0 = 218 -SC_P3_HIZ_QUAD_PER_TILE_H1 = 219 -SC_P3_HIZ_QUAD_PER_TILE_H2 = 220 -SC_P3_HIZ_QUAD_PER_TILE_H3 = 221 -SC_P3_HIZ_QUAD_PER_TILE_H4 = 222 -SC_P3_HIZ_QUAD_PER_TILE_H5 = 223 -SC_P3_HIZ_QUAD_PER_TILE_H6 = 224 -SC_P3_HIZ_QUAD_PER_TILE_H7 = 225 -SC_P3_HIZ_QUAD_PER_TILE_H8 = 226 -SC_P3_HIZ_QUAD_PER_TILE_H9 = 227 -SC_P3_HIZ_QUAD_PER_TILE_H10 = 228 -SC_P3_HIZ_QUAD_PER_TILE_H11 = 229 -SC_P3_HIZ_QUAD_PER_TILE_H12 = 230 -SC_P3_HIZ_QUAD_PER_TILE_H13 = 231 -SC_P3_HIZ_QUAD_PER_TILE_H14 = 232 -SC_P3_HIZ_QUAD_PER_TILE_H15 = 233 -SC_P3_HIZ_QUAD_PER_TILE_H16 = 234 -SC_P0_HIZ_QUAD_COUNT = 235 -SC_P1_HIZ_QUAD_COUNT = 236 -SC_P2_HIZ_QUAD_COUNT = 237 -SC_P3_HIZ_QUAD_COUNT = 238 -SC_P0_DETAIL_QUAD_COUNT = 239 -SC_P1_DETAIL_QUAD_COUNT = 240 -SC_P2_DETAIL_QUAD_COUNT = 241 -SC_P3_DETAIL_QUAD_COUNT = 242 -SC_P0_DETAIL_QUAD_WITH_1_PIX = 243 -SC_P0_DETAIL_QUAD_WITH_2_PIX = 244 -SC_P0_DETAIL_QUAD_WITH_3_PIX = 245 -SC_P0_DETAIL_QUAD_WITH_4_PIX = 246 -SC_P1_DETAIL_QUAD_WITH_1_PIX = 247 -SC_P1_DETAIL_QUAD_WITH_2_PIX = 248 -SC_P1_DETAIL_QUAD_WITH_3_PIX = 249 -SC_P1_DETAIL_QUAD_WITH_4_PIX = 250 -SC_P2_DETAIL_QUAD_WITH_1_PIX = 251 -SC_P2_DETAIL_QUAD_WITH_2_PIX = 252 -SC_P2_DETAIL_QUAD_WITH_3_PIX = 253 -SC_P2_DETAIL_QUAD_WITH_4_PIX = 254 -SC_P3_DETAIL_QUAD_WITH_1_PIX = 255 -SC_P3_DETAIL_QUAD_WITH_2_PIX = 256 -SC_P3_DETAIL_QUAD_WITH_3_PIX = 257 -SC_P3_DETAIL_QUAD_WITH_4_PIX = 258 -SC_EARLYZ_QUAD_COUNT = 259 -SC_EARLYZ_QUAD_WITH_1_PIX = 260 -SC_EARLYZ_QUAD_WITH_2_PIX = 261 -SC_EARLYZ_QUAD_WITH_3_PIX = 262 -SC_EARLYZ_QUAD_WITH_4_PIX = 263 -SC_PKR_QUAD_PER_ROW_H1 = 264 -SC_PKR_QUAD_PER_ROW_H2 = 265 -SC_PKR_4X2_QUAD_SPLIT = 266 -SC_PKR_4X2_FILL_QUAD = 267 -SC_PKR_END_OF_VECTOR = 268 -SC_PKR_CONTROL_XFER = 269 -SC_PKR_DBHANG_FORCE_EOV = 270 -SC_REG_SCLK_BUSY = 271 -SC_GRP0_DYN_SCLK_BUSY = 272 -SC_GRP1_DYN_SCLK_BUSY = 273 -SC_GRP2_DYN_SCLK_BUSY = 274 -SC_GRP3_DYN_SCLK_BUSY = 275 -SC_GRP4_DYN_SCLK_BUSY = 276 -SC_PA0_SC_DATA_FIFO_RD = 277 -SC_PA0_SC_DATA_FIFO_WE = 278 -SC_PA1_SC_DATA_FIFO_RD = 279 -SC_PA1_SC_DATA_FIFO_WE = 280 -SC_PS_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 281 -SC_PS_ARB_XFC_ONLY_PRIM_CYCLES = 282 -SC_PS_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 283 -SC_PS_ARB_STALLED_FROM_BELOW = 284 -SC_PS_ARB_STARVED_FROM_ABOVE = 285 -SC_PS_ARB_SC_BUSY = 286 -SC_PS_ARB_PA_SC_BUSY = 287 -SC_PA2_SC_DATA_FIFO_RD = 288 -SC_PA2_SC_DATA_FIFO_WE = 289 -SC_PA3_SC_DATA_FIFO_RD = 290 -SC_PA3_SC_DATA_FIFO_WE = 291 -SC_PA_SC_DEALLOC_0_0_WE = 292 -SC_PA_SC_DEALLOC_0_1_WE = 293 -SC_PA_SC_DEALLOC_1_0_WE = 294 -SC_PA_SC_DEALLOC_1_1_WE = 295 -SC_PA_SC_DEALLOC_2_0_WE = 296 -SC_PA_SC_DEALLOC_2_1_WE = 297 -SC_PA_SC_DEALLOC_3_0_WE = 298 -SC_PA_SC_DEALLOC_3_1_WE = 299 -SC_PA0_SC_EOP_WE = 300 -SC_PA0_SC_EOPG_WE = 301 -SC_PA0_SC_EVENT_WE = 302 -SC_PA1_SC_EOP_WE = 303 -SC_PA1_SC_EOPG_WE = 304 -SC_PA1_SC_EVENT_WE = 305 -SC_PA2_SC_EOP_WE = 306 -SC_PA2_SC_EOPG_WE = 307 -SC_PA2_SC_EVENT_WE = 308 -SC_PA3_SC_EOP_WE = 309 -SC_PA3_SC_EOPG_WE = 310 -SC_PA3_SC_EVENT_WE = 311 -SC_PS_ARB_OOO_THRESHOLD_SWITCH_TO_DESIRED_FIFO = 312 -SC_PS_ARB_OOO_FIFO_EMPTY_SWITCH = 313 -SC_PS_ARB_NULL_PRIM_BUBBLE_POP = 314 -SC_PS_ARB_EOP_POP_SYNC_POP = 315 -SC_PS_ARB_EVENT_SYNC_POP = 316 -SC_PS_ENG_MULTICYCLE_BUBBLE = 317 -SC_PA0_SC_FPOV_WE = 318 -SC_PA1_SC_FPOV_WE = 319 -SC_PA2_SC_FPOV_WE = 320 -SC_PA3_SC_FPOV_WE = 321 -SC_PA0_SC_LPOV_WE = 322 -SC_PA1_SC_LPOV_WE = 323 -SC_PA2_SC_LPOV_WE = 324 -SC_PA3_SC_LPOV_WE = 325 -SC_SPI_DEALLOC_0_0 = 326 -SC_SPI_DEALLOC_0_1 = 327 -SC_SPI_DEALLOC_0_2 = 328 -SC_SPI_DEALLOC_1_0 = 329 -SC_SPI_DEALLOC_1_1 = 330 -SC_SPI_DEALLOC_1_2 = 331 -SC_SPI_DEALLOC_2_0 = 332 -SC_SPI_DEALLOC_2_1 = 333 -SC_SPI_DEALLOC_2_2 = 334 -SC_SPI_DEALLOC_3_0 = 335 -SC_SPI_DEALLOC_3_1 = 336 -SC_SPI_DEALLOC_3_2 = 337 -SC_SPI_FPOV_0 = 338 -SC_SPI_FPOV_1 = 339 -SC_SPI_FPOV_2 = 340 -SC_SPI_FPOV_3 = 341 -SC_SPI_EVENT = 342 -SC_PS_TS_EVENT_FIFO_PUSH = 343 -SC_PS_TS_EVENT_FIFO_POP = 344 -SC_PS_CTX_DONE_FIFO_PUSH = 345 -SC_PS_CTX_DONE_FIFO_POP = 346 -SC_MULTICYCLE_BUBBLE_FREEZE = 347 -SC_EOP_SYNC_WINDOW = 348 -SC_PA0_SC_NULL_WE = 349 -SC_PA0_SC_NULL_DEALLOC_WE = 350 -SC_PA0_SC_DATA_FIFO_EOPG_RD = 351 -SC_PA0_SC_DATA_FIFO_EOP_RD = 352 -SC_PA0_SC_DEALLOC_0_RD = 353 -SC_PA0_SC_DEALLOC_1_RD = 354 -SC_PA1_SC_DATA_FIFO_EOPG_RD = 355 -SC_PA1_SC_DATA_FIFO_EOP_RD = 356 -SC_PA1_SC_DEALLOC_0_RD = 357 -SC_PA1_SC_DEALLOC_1_RD = 358 -SC_PA1_SC_NULL_WE = 359 -SC_PA1_SC_NULL_DEALLOC_WE = 360 -SC_PA2_SC_DATA_FIFO_EOPG_RD = 361 -SC_PA2_SC_DATA_FIFO_EOP_RD = 362 -SC_PA2_SC_DEALLOC_0_RD = 363 -SC_PA2_SC_DEALLOC_1_RD = 364 -SC_PA2_SC_NULL_WE = 365 -SC_PA2_SC_NULL_DEALLOC_WE = 366 -SC_PA3_SC_DATA_FIFO_EOPG_RD = 367 -SC_PA3_SC_DATA_FIFO_EOP_RD = 368 -SC_PA3_SC_DEALLOC_0_RD = 369 -SC_PA3_SC_DEALLOC_1_RD = 370 -SC_PA3_SC_NULL_WE = 371 -SC_PA3_SC_NULL_DEALLOC_WE = 372 -SC_PS_PA0_SC_FIFO_EMPTY = 373 -SC_PS_PA0_SC_FIFO_FULL = 374 -SC_RESERVED_0 = 375 -SC_PS_PA1_SC_FIFO_EMPTY = 376 -SC_PS_PA1_SC_FIFO_FULL = 377 -SC_RESERVED_1 = 378 -SC_PS_PA2_SC_FIFO_EMPTY = 379 -SC_PS_PA2_SC_FIFO_FULL = 380 -SC_RESERVED_2 = 381 -SC_PS_PA3_SC_FIFO_EMPTY = 382 -SC_PS_PA3_SC_FIFO_FULL = 383 -SC_RESERVED_3 = 384 -SC_BUSY_PROCESSING_MULTICYCLE_PRIM = 385 -SC_BUSY_CNT_NOT_ZERO = 386 -SC_BM_BUSY = 387 -SC_BACKEND_BUSY = 388 -SC_SCF_SCB_INTERFACE_BUSY = 389 -SC_SCB_BUSY = 390 -SC_STARVED_BY_PA_WITH_UNSELECTED_PA_NOT_EMPTY = 391 -SC_STARVED_BY_PA_WITH_UNSELECTED_PA_FULL = 392 -SC_PBB_BIN_HIST_NUM_PRIMS = 393 -SC_PBB_BATCH_HIST_NUM_PRIMS = 394 -SC_PBB_BIN_HIST_NUM_CONTEXTS = 395 -SC_PBB_BATCH_HIST_NUM_CONTEXTS = 396 -SC_PBB_BIN_HIST_NUM_PERSISTENT_STATES = 397 -SC_PBB_BATCH_HIST_NUM_PERSISTENT_STATES = 398 -SC_PBB_BATCH_HIST_NUM_PS_WAVE_BREAKS = 399 -SC_PBB_BATCH_HIST_NUM_TRIV_REJECTED_PRIMS = 400 -SC_PBB_BATCH_HIST_NUM_ROWS_PER_PRIM = 401 -SC_PBB_BATCH_HIST_NUM_COLUMNS_PER_ROW = 402 -SC_PBB_BUSY = 403 -SC_PBB_BUSY_AND_NO_SENDS = 404 -SC_PBB_STALLS_PA_DUE_TO_NO_TILES = 405 -SC_PBB_NUM_BINS = 406 -SC_PBB_END_OF_BIN = 407 -SC_PBB_END_OF_BATCH = 408 -SC_PBB_PRIMBIN_PROCESSED = 409 -SC_PBB_PRIM_ADDED_TO_BATCH = 410 -SC_PBB_NONBINNED_PRIM = 411 -SC_PBB_TOTAL_REAL_PRIMS_OUT_OF_PBB = 412 -SC_PBB_TOTAL_NULL_PRIMS_OUT_OF_PBB = 413 -SC_PBB_IDLE_CLK_DUE_TO_ROW_TO_COLUMN_TRANSITION = 414 -SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_ROW = 415 -SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_COLUMN = 416 -SC_PBB_BATCH_BREAK_DUE_TO_PERSISTENT_STATE = 417 -SC_PBB_BATCH_BREAK_DUE_TO_CONTEXT_STATE = 418 -SC_PBB_BATCH_BREAK_DUE_TO_PRIM = 419 -SC_PBB_BATCH_BREAK_DUE_TO_PC_STORAGE = 420 -SC_PBB_BATCH_BREAK_DUE_TO_EVENT = 421 -SC_PBB_BATCH_BREAK_DUE_TO_FPOV_LIMIT = 422 -SC_POPS_INTRA_WAVE_OVERLAPS = 423 -SC_POPS_FORCE_EOV = 424 -SC_PKR_QUAD_OVLP_NOT_FOUND_IN_WAVE_TABLE_AND_WAVES_SINCE_OVLP_SET_TO_MAX = 425 -SC_PKR_QUAD_OVLP_NOT_FOUND_IN_WAVE_TABLE_AND_NO_CHANGE_TO_WAVES_SINCE_OVLP = 426 -SC_PKR_QUAD_OVLP_FOUND_IN_WAVE_TABLE = 427 -SC_FULL_FULL_QUAD = 428 -SC_FULL_HALF_QUAD = 429 -SC_FULL_QTR_QUAD = 430 -SC_HALF_FULL_QUAD = 431 -SC_HALF_HALF_QUAD = 432 -SC_HALF_QTR_QUAD = 433 -SC_QTR_FULL_QUAD = 434 -SC_QTR_HALF_QUAD = 435 -SC_QTR_QTR_QUAD = 436 -SC_GRP5_DYN_SCLK_BUSY = 437 -SC_GRP6_DYN_SCLK_BUSY = 438 -SC_GRP7_DYN_SCLK_BUSY = 439 -SC_GRP8_DYN_SCLK_BUSY = 440 -SC_GRP9_DYN_SCLK_BUSY = 441 -SC_PS_TO_BE_SCLK_GATE_STALL = 442 -SC_PA_TO_PBB_SCLK_GATE_STALL_STALL = 443 -SC_PK_BUSY = 444 -SC_PK_MAX_DEALLOC_FORCE_EOV = 445 -SC_PK_DEALLOC_WAVE_BREAK = 446 -SC_SPI_SEND = 447 -SC_SPI_CREDIT_AT_ZERO_WITH_PENDING_SEND = 448 -SC_SPI_CREDIT_AT_MAX = 449 -SC_SPI_CREDIT_AT_MAX_NO_PENDING_SEND = 450 -SC_BCI_SEND = 451 -SC_BCI_CREDIT_AT_ZERO_WITH_PENDING_SEND = 452 -SC_BCI_CREDIT_AT_MAX = 453 -SC_BCI_CREDIT_AT_MAX_NO_PENDING_SEND = 454 -SC_SPIBC_FULL_FREEZE = 455 -SC_PW_BM_PASS_EMPTY_PRIM = 456 -SC_SUPERTILE_COUNT_EXCLUDE_PASS_EMPTY_PRIM = 457 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H0 = 458 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H1 = 459 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H2 = 460 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H3 = 461 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H4 = 462 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H5 = 463 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H6 = 464 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H7 = 465 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H8 = 466 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H9 = 467 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H10 = 468 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H11 = 469 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H12 = 470 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H13 = 471 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H14 = 472 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H15 = 473 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H16 = 474 -SC_DB0_TILE_INTERFACE_BUSY = 475 -SC_DB0_TILE_INTERFACE_SEND = 476 -SC_DB0_TILE_INTERFACE_SEND_EVENT = 477 -SC_DB0_TILE_INTERFACE_SEND_SOP_ONLY_EVENT = 478 -SC_DB0_TILE_INTERFACE_SEND_SOP = 479 -SC_DB0_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND = 480 -SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX = 481 -SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND = 482 -SC_DB1_TILE_INTERFACE_BUSY = 483 -SC_DB1_TILE_INTERFACE_SEND = 484 -SC_DB1_TILE_INTERFACE_SEND_EVENT = 485 -SC_DB1_TILE_INTERFACE_SEND_SOP_ONLY_EVENT = 486 -SC_DB1_TILE_INTERFACE_SEND_SOP = 487 -SC_DB1_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND = 488 -SC_DB1_TILE_INTERFACE_CREDIT_AT_MAX = 489 -SC_DB1_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND = 490 -SC_BACKEND_PRIM_FIFO_FULL = 491 -SC_PBB_BATCH_BREAK_DUE_TO_TIMEOUT_COUNTER = 492 -SC_PBB_BATCH_BREAK_DUE_TO_NONBINNED_BATCH = 493 -SC_PBB_BATCH_BREAK_DUE_TO_DEBUG_DATA_PER_DRAW_DISPATCH = 494 -SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_PERSISTENT = 495 -SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_CONTEXT = 496 -SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_FPOV = 497 -SC_PBB_BATCH_BREAK_DUE_TO_NEW_SC_MODE = 498 -SC_PBB_BATCH_BREAK_DUE_TO_BINNING_MODE_CHANGE = 499 -SC_PBB_BATCH_BREAK_DUE_TO_PIPELINE_EVENT_COUNT = 500 -SC_PBB_BATCH_BREAK_DUE_TO_PIPE_RESET = 501 -SC_PBB_BATCH_BREAK_DUE_TO_GFX_PIPE_CHANGE = 502 -SC_STALLED_BY_DB0_TILEFIFO = 503 -SC_DB0_QUAD_INTF_SEND = 504 -SC_DB0_QUAD_INTF_BUSY = 505 -SC_DB0_QUAD_INTF_STALLED_BY_DB = 506 -SC_DB0_QUAD_INTF_CREDIT_AT_MAX = 507 -SC_DB0_QUAD_INTF_IDLE = 508 -SC_DB1_QUAD_INTF_SEND = 509 -SC_STALLED_BY_DB1_TILEFIFO = 510 -SC_DB1_QUAD_INTF_BUSY = 511 -SC_DB1_QUAD_INTF_STALLED_BY_DB = 512 -SC_DB1_QUAD_INTF_CREDIT_AT_MAX = 513 -SC_DB1_QUAD_INTF_IDLE = 514 -SC_PKR_WAVE_BREAK_OUTSIDE_REGION = 515 -SC_PKR_WAVE_BREAK_FULL_TILE = 516 -SC_FSR_WALKED = 517 -SC_PBB_EMPTY_INPUT_CYCLE_WHEN_BATCH_OPEN = 518 -SC_PBB_BATCH_BREAK_DUE_TO_NULL_PRIM_BREAK_BATCH_LIMIT = 519 -SC_DB0_WE_STALLED_BY_RSLT_FIFO_FULL = 520 -SC_DB0_WE_TILE_MASK_RETURN_FIFO_FULL_WITH_WE_RSLT_FIFO_STALL = 521 -SC_DB0_TILE_MASK_FIFO_FULL = 522 -SC_DB1_WE_STALLED_BY_RSLT_FIFO_FULL = 523 -SC_DB1_WE_TILE_MASK_RETURN_FIFO_FULL_WITH_WE_RSLT_FIFO_STALL = 524 -SC_DB1_TILE_MASK_FIFO_FULL = 525 -SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_PFF_PW_FULL = 526 -SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_ZFF_PW_FULL = 527 -SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_PBB_TO_PSE_FIFO_FULL = 528 -SC_PS_PM_PFF_PW_FULL = 529 -SC_PS_PM_ZFF_PW_FULL = 530 -SC_PS_PM_PBB_TO_PSE_FIFO_FULL = 531 -SC_PK_PM_QD1_FD_CONFLICT_WAVE_BRK_1H = 532 -SC_PK_PM_QD1_FORCE_PARTIAL_FOR_DEALLOC_WAVE_BRK_1H = 533 -SC_PK_PM_QD1_AVOID_DEALLOC_ADD_WAVE_BRK_1H = 534 -SC_PK_PM_4X2_SPLIT_WAVE_BRK_1H = 535 -SC_PK_PM_PKR_FILL_4X2_WAVE_BRK_1H = 536 -SC_PK_PM_SPLIT_OR_FILL_4X2_WAVE_BRK_1H = 537 -SC_PK_PM_END_OF_VECTOR_WAVE_BRK_1H = 538 -SC_PK_PM_LAST_AND_DEALLOC_WAVE_BRK_1H = 539 -SC_PK_PM_CTL_ONLY_CMD_WAVE_BRK_1H = 540 -SC_PK_PM_AVOID_DEALLOC_ADD_WAVE_BRK_1H = 541 -SC_PK_PM_FD_CONFLICT_WAVE_BRK_1H = 542 -SC_PK_PM_FORCE_PARTIAL_FOR_DEALLOC_WAVE_BRK_1H = 543 -SC_PK_PM_AE_CONFLICT_WAVE_BRK_1H = 544 -SC_PK_PM_EOP_OR_LAD_WAVE_BRK_1H = 545 -SC_PK_PM_FULL_TILE_WAVE_BRK_1H = 546 -SC_PK_PM_POPS_FORCE_EOV_WAVE_BRK_1H = 547 -SC_PK_PM_MAX_DEALLOC_FORCE_EOV_WAVE_BRK_1H = 548 -SC_PK_PM_WAVE_BREAK_OUTSIDE_REGION_WAVE_BRK_1H = 549 -SC_PK_PM_MAX_CLK_CNT_FORCE_EOV_WAVE_BRK_1H = 550 -SC_PK_PM_MAX_REZ_CNT_FORCE_EOV_WAVE_BRK_1H = 551 -SC_PK_PM_VRS_RATE_X_00_Y_00_QUAD = 552 -SC_PK_PM_VRS_RATE_X_00_Y_01_QUAD = 553 -SC_PK_PM_VRS_RATE_X_00_Y_10_QUAD = 554 -SC_PK_PM_VRS_RATE_X_00_Y_11_QUAD = 555 -SC_PK_PM_VRS_RATE_X_01_Y_00_QUAD = 556 -SC_PK_PM_VRS_RATE_X_01_Y_01_QUAD = 557 -SC_PK_PM_VRS_RATE_X_01_Y_10_QUAD = 558 -SC_PK_PM_VRS_RATE_X_01_Y_11_QUAD = 559 -SC_PK_PM_VRS_RATE_X_10_Y_00_QUAD = 560 -SC_PK_PM_VRS_RATE_X_10_Y_01_QUAD = 561 -SC_PK_PM_VRS_RATE_X_10_Y_10_QUAD = 562 -SC_PK_PM_VRS_RATE_X_10_Y_11_QUAD = 563 -SC_PK_PM_VRS_RATE_X_11_Y_00_QUAD = 564 -SC_PK_PM_VRS_RATE_X_11_Y_01_QUAD = 565 -SC_PK_PM_VRS_RATE_X_11_Y_10_QUAD = 566 -SC_PK_PM_VRS_RATE_X_11_Y_11_QUAD = 567 -SC_PBB_BATCH_BREAK_DUE_TO_PIPELINE_MODE_CHANGE = 568 -SC_PBB_RESERVED = 569 -SC_BM_BE0_STALLED = 570 -SC_BM_BE1_STALLED = 571 -SC_BM_BE2_STALLED = 572 -SC_BM_BE3_STALLED = 573 -SC_BM_MULTI_ACCUM_1_BE_STALLED = 574 -SC_BM_MULTI_ACCUM_2_BE_STALLED = 575 -SC_BM_MULTI_ACCUM_3_BE_STALLED = 576 -SC_BM_MULTI_ACCUM_4_BE_STALLED = 577 -SC_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'ScMap' -ScMap__enumvalues = { - 0: 'RASTER_CONFIG_SC_MAP_0', - 1: 'RASTER_CONFIG_SC_MAP_1', - 2: 'RASTER_CONFIG_SC_MAP_2', - 3: 'RASTER_CONFIG_SC_MAP_3', -} -RASTER_CONFIG_SC_MAP_0 = 0 -RASTER_CONFIG_SC_MAP_1 = 1 -RASTER_CONFIG_SC_MAP_2 = 2 -RASTER_CONFIG_SC_MAP_3 = 3 -ScMap = ctypes.c_uint32 # enum - -# values for enumeration 'ScUncertaintyRegionMode' -ScUncertaintyRegionMode__enumvalues = { - 0: 'SC_HALF_LSB', - 1: 'SC_LSB_ONE_SIDED', - 2: 'SC_LSB_TWO_SIDED', -} -SC_HALF_LSB = 0 -SC_LSB_ONE_SIDED = 1 -SC_LSB_TWO_SIDED = 2 -ScUncertaintyRegionMode = ctypes.c_uint32 # enum - -# values for enumeration 'ScUncertaintyRegionMult' -ScUncertaintyRegionMult__enumvalues = { - 0: 'SC_UR_1X', - 1: 'SC_UR_2X', - 2: 'SC_UR_4X', - 3: 'SC_UR_8X', -} -SC_UR_1X = 0 -SC_UR_2X = 1 -SC_UR_4X = 2 -SC_UR_8X = 3 -ScUncertaintyRegionMult = ctypes.c_uint32 # enum - -# values for enumeration 'ScXsel' -ScXsel__enumvalues = { - 0: 'RASTER_CONFIG_SC_XSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SC_XSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SC_XSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SC_XSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SC_XSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SC_XSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SC_XSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SC_XSEL_64_WIDE_TILE = 3 -ScXsel = ctypes.c_uint32 # enum - -# values for enumeration 'ScYsel' -ScYsel__enumvalues = { - 0: 'RASTER_CONFIG_SC_YSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SC_YSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SC_YSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SC_YSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SC_YSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SC_YSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SC_YSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SC_YSEL_64_WIDE_TILE = 3 -ScYsel = ctypes.c_uint32 # enum - -# values for enumeration 'SeMap' -SeMap__enumvalues = { - 0: 'RASTER_CONFIG_SE_MAP_0', - 1: 'RASTER_CONFIG_SE_MAP_1', - 2: 'RASTER_CONFIG_SE_MAP_2', - 3: 'RASTER_CONFIG_SE_MAP_3', -} -RASTER_CONFIG_SE_MAP_0 = 0 -RASTER_CONFIG_SE_MAP_1 = 1 -RASTER_CONFIG_SE_MAP_2 = 2 -RASTER_CONFIG_SE_MAP_3 = 3 -SeMap = ctypes.c_uint32 # enum - -# values for enumeration 'SePairMap' -SePairMap__enumvalues = { - 0: 'RASTER_CONFIG_SE_PAIR_MAP_0', - 1: 'RASTER_CONFIG_SE_PAIR_MAP_1', - 2: 'RASTER_CONFIG_SE_PAIR_MAP_2', - 3: 'RASTER_CONFIG_SE_PAIR_MAP_3', -} -RASTER_CONFIG_SE_PAIR_MAP_0 = 0 -RASTER_CONFIG_SE_PAIR_MAP_1 = 1 -RASTER_CONFIG_SE_PAIR_MAP_2 = 2 -RASTER_CONFIG_SE_PAIR_MAP_3 = 3 -SePairMap = ctypes.c_uint32 # enum - -# values for enumeration 'SePairXsel' -SePairXsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_PAIR_XSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_PAIR_XSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_PAIR_XSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_PAIR_XSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SE_PAIR_XSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_PAIR_XSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_PAIR_XSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_PAIR_XSEL_64_WIDE_TILE = 3 -SePairXsel = ctypes.c_uint32 # enum - -# values for enumeration 'SePairYsel' -SePairYsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_PAIR_YSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_PAIR_YSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_PAIR_YSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_PAIR_YSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SE_PAIR_YSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_PAIR_YSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_PAIR_YSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_PAIR_YSEL_64_WIDE_TILE = 3 -SePairYsel = ctypes.c_uint32 # enum - -# values for enumeration 'SeXsel' -SeXsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_XSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_XSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_XSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_XSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SE_XSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_XSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_XSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_XSEL_64_WIDE_TILE = 3 -SeXsel = ctypes.c_uint32 # enum - -# values for enumeration 'SeYsel' -SeYsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_YSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_YSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_YSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_YSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SE_YSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_YSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_YSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_YSEL_64_WIDE_TILE = 3 -SeYsel = ctypes.c_uint32 # enum - -# values for enumeration 'VRSCombinerModeSC' -VRSCombinerModeSC__enumvalues = { - 0: 'SC_VRS_COMB_MODE_PASSTHRU', - 1: 'SC_VRS_COMB_MODE_OVERRIDE', - 2: 'SC_VRS_COMB_MODE_MIN', - 3: 'SC_VRS_COMB_MODE_MAX', - 4: 'SC_VRS_COMB_MODE_SATURATE', -} -SC_VRS_COMB_MODE_PASSTHRU = 0 -SC_VRS_COMB_MODE_OVERRIDE = 1 -SC_VRS_COMB_MODE_MIN = 2 -SC_VRS_COMB_MODE_MAX = 3 -SC_VRS_COMB_MODE_SATURATE = 4 -VRSCombinerModeSC = ctypes.c_uint32 # enum - -# values for enumeration 'VRSrate' -VRSrate__enumvalues = { - 0: 'VRS_SHADING_RATE_1X1', - 1: 'VRS_SHADING_RATE_1X2', - 2: 'VRS_SHADING_RATE_UNDEFINED0', - 3: 'VRS_SHADING_RATE_UNDEFINED1', - 4: 'VRS_SHADING_RATE_2X1', - 5: 'VRS_SHADING_RATE_2X2', - 6: 'VRS_SHADING_RATE_2X4', - 7: 'VRS_SHADING_RATE_UNDEFINED2', - 8: 'VRS_SHADING_RATE_UNDEFINED3', - 9: 'VRS_SHADING_RATE_4X2', - 10: 'VRS_SHADING_RATE_4X4', - 11: 'VRS_SHADING_RATE_UNDEFINED4', - 12: 'VRS_SHADING_RATE_16X_SSAA', - 13: 'VRS_SHADING_RATE_8X_SSAA', - 14: 'VRS_SHADING_RATE_4X_SSAA', - 15: 'VRS_SHADING_RATE_2X_SSAA', -} -VRS_SHADING_RATE_1X1 = 0 -VRS_SHADING_RATE_1X2 = 1 -VRS_SHADING_RATE_UNDEFINED0 = 2 -VRS_SHADING_RATE_UNDEFINED1 = 3 -VRS_SHADING_RATE_2X1 = 4 -VRS_SHADING_RATE_2X2 = 5 -VRS_SHADING_RATE_2X4 = 6 -VRS_SHADING_RATE_UNDEFINED2 = 7 -VRS_SHADING_RATE_UNDEFINED3 = 8 -VRS_SHADING_RATE_4X2 = 9 -VRS_SHADING_RATE_4X4 = 10 -VRS_SHADING_RATE_UNDEFINED4 = 11 -VRS_SHADING_RATE_16X_SSAA = 12 -VRS_SHADING_RATE_8X_SSAA = 13 -VRS_SHADING_RATE_4X_SSAA = 14 -VRS_SHADING_RATE_2X_SSAA = 15 -VRSrate = ctypes.c_uint32 # enum - -# values for enumeration 'TC_EA_CID' -TC_EA_CID__enumvalues = { - 0: 'TC_EA_CID_RT', - 1: 'TC_EA_CID_FMASK', - 2: 'TC_EA_CID_DCC', - 3: 'TC_EA_CID_TCPMETA', - 4: 'TC_EA_CID_Z', - 5: 'TC_EA_CID_STENCIL', - 6: 'TC_EA_CID_HTILE', - 7: 'TC_EA_CID_MISC', - 8: 'TC_EA_CID_TCP', - 9: 'TC_EA_CID_SQC', - 10: 'TC_EA_CID_CPF', - 11: 'TC_EA_CID_CPG', - 12: 'TC_EA_CID_IA', - 13: 'TC_EA_CID_WD', - 14: 'TC_EA_CID_PA', - 15: 'TC_EA_CID_UTCL2_TPI', -} -TC_EA_CID_RT = 0 -TC_EA_CID_FMASK = 1 -TC_EA_CID_DCC = 2 -TC_EA_CID_TCPMETA = 3 -TC_EA_CID_Z = 4 -TC_EA_CID_STENCIL = 5 -TC_EA_CID_HTILE = 6 -TC_EA_CID_MISC = 7 -TC_EA_CID_TCP = 8 -TC_EA_CID_SQC = 9 -TC_EA_CID_CPF = 10 -TC_EA_CID_CPG = 11 -TC_EA_CID_IA = 12 -TC_EA_CID_WD = 13 -TC_EA_CID_PA = 14 -TC_EA_CID_UTCL2_TPI = 15 -TC_EA_CID = ctypes.c_uint32 # enum - -# values for enumeration 'TC_NACKS' -TC_NACKS__enumvalues = { - 0: 'TC_NACK_NO_FAULT', - 1: 'TC_NACK_PAGE_FAULT', - 2: 'TC_NACK_PROTECTION_FAULT', - 3: 'TC_NACK_DATA_ERROR', -} -TC_NACK_NO_FAULT = 0 -TC_NACK_PAGE_FAULT = 1 -TC_NACK_PROTECTION_FAULT = 2 -TC_NACK_DATA_ERROR = 3 -TC_NACKS = ctypes.c_uint32 # enum - -# values for enumeration 'TC_OP' -TC_OP__enumvalues = { - 0: 'TC_OP_READ', - 1: 'TC_OP_ATOMIC_FCMPSWAP_RTN_32', - 2: 'TC_OP_ATOMIC_FMIN_RTN_32', - 3: 'TC_OP_ATOMIC_FMAX_RTN_32', - 4: 'TC_OP_RESERVED_FOP_RTN_32_0', - 5: 'TC_OP_RESERVED_FADD_RTN_32', - 6: 'TC_OP_RESERVED_FOP_RTN_32_2', - 7: 'TC_OP_ATOMIC_SWAP_RTN_32', - 8: 'TC_OP_ATOMIC_CMPSWAP_RTN_32', - 9: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32', - 10: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32', - 11: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32', - 12: 'TC_OP_PROBE_FILTER', - 13: 'TC_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32', - 14: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2', - 15: 'TC_OP_ATOMIC_ADD_RTN_32', - 16: 'TC_OP_ATOMIC_SUB_RTN_32', - 17: 'TC_OP_ATOMIC_SMIN_RTN_32', - 18: 'TC_OP_ATOMIC_UMIN_RTN_32', - 19: 'TC_OP_ATOMIC_SMAX_RTN_32', - 20: 'TC_OP_ATOMIC_UMAX_RTN_32', - 21: 'TC_OP_ATOMIC_AND_RTN_32', - 22: 'TC_OP_ATOMIC_OR_RTN_32', - 23: 'TC_OP_ATOMIC_XOR_RTN_32', - 24: 'TC_OP_ATOMIC_INC_RTN_32', - 25: 'TC_OP_ATOMIC_DEC_RTN_32', - 26: 'TC_OP_WBINVL1_VOL', - 27: 'TC_OP_WBINVL1_SD', - 28: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_0', - 29: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_1', - 30: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_2', - 31: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_3', - 32: 'TC_OP_WRITE', - 33: 'TC_OP_ATOMIC_FCMPSWAP_RTN_64', - 34: 'TC_OP_ATOMIC_FMIN_RTN_64', - 35: 'TC_OP_ATOMIC_FMAX_RTN_64', - 36: 'TC_OP_RESERVED_FOP_RTN_64_0', - 37: 'TC_OP_RESERVED_FOP_RTN_64_1', - 38: 'TC_OP_RESERVED_FOP_RTN_64_2', - 39: 'TC_OP_ATOMIC_SWAP_RTN_64', - 40: 'TC_OP_ATOMIC_CMPSWAP_RTN_64', - 41: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64', - 42: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64', - 43: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64', - 44: 'TC_OP_WBINVL2_SD', - 45: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_0', - 46: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_1', - 47: 'TC_OP_ATOMIC_ADD_RTN_64', - 48: 'TC_OP_ATOMIC_SUB_RTN_64', - 49: 'TC_OP_ATOMIC_SMIN_RTN_64', - 50: 'TC_OP_ATOMIC_UMIN_RTN_64', - 51: 'TC_OP_ATOMIC_SMAX_RTN_64', - 52: 'TC_OP_ATOMIC_UMAX_RTN_64', - 53: 'TC_OP_ATOMIC_AND_RTN_64', - 54: 'TC_OP_ATOMIC_OR_RTN_64', - 55: 'TC_OP_ATOMIC_XOR_RTN_64', - 56: 'TC_OP_ATOMIC_INC_RTN_64', - 57: 'TC_OP_ATOMIC_DEC_RTN_64', - 58: 'TC_OP_WBL2_NC', - 59: 'TC_OP_WBL2_WC', - 60: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_1', - 61: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_2', - 62: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_3', - 63: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_4', - 64: 'TC_OP_WBINVL1', - 65: 'TC_OP_ATOMIC_FCMPSWAP_32', - 66: 'TC_OP_ATOMIC_FMIN_32', - 67: 'TC_OP_ATOMIC_FMAX_32', - 68: 'TC_OP_RESERVED_FOP_32_0', - 69: 'TC_OP_RESERVED_FADD_32', - 70: 'TC_OP_RESERVED_FOP_32_2', - 71: 'TC_OP_ATOMIC_SWAP_32', - 72: 'TC_OP_ATOMIC_CMPSWAP_32', - 73: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32', - 74: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_32', - 75: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_32', - 76: 'TC_OP_INV_METADATA', - 77: 'TC_OP_ATOMIC_FADD_FLUSH_DENORM_32', - 78: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_32_2', - 79: 'TC_OP_ATOMIC_ADD_32', - 80: 'TC_OP_ATOMIC_SUB_32', - 81: 'TC_OP_ATOMIC_SMIN_32', - 82: 'TC_OP_ATOMIC_UMIN_32', - 83: 'TC_OP_ATOMIC_SMAX_32', - 84: 'TC_OP_ATOMIC_UMAX_32', - 85: 'TC_OP_ATOMIC_AND_32', - 86: 'TC_OP_ATOMIC_OR_32', - 87: 'TC_OP_ATOMIC_XOR_32', - 88: 'TC_OP_ATOMIC_INC_32', - 89: 'TC_OP_ATOMIC_DEC_32', - 90: 'TC_OP_INVL2_NC', - 91: 'TC_OP_NOP_RTN0', - 92: 'TC_OP_RESERVED_NON_FLOAT_32_1', - 93: 'TC_OP_RESERVED_NON_FLOAT_32_2', - 94: 'TC_OP_RESERVED_NON_FLOAT_32_3', - 95: 'TC_OP_RESERVED_NON_FLOAT_32_4', - 96: 'TC_OP_WBINVL2', - 97: 'TC_OP_ATOMIC_FCMPSWAP_64', - 98: 'TC_OP_ATOMIC_FMIN_64', - 99: 'TC_OP_ATOMIC_FMAX_64', - 100: 'TC_OP_RESERVED_FOP_64_0', - 101: 'TC_OP_RESERVED_FOP_64_1', - 102: 'TC_OP_RESERVED_FOP_64_2', - 103: 'TC_OP_ATOMIC_SWAP_64', - 104: 'TC_OP_ATOMIC_CMPSWAP_64', - 105: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64', - 106: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_64', - 107: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_64', - 108: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_0', - 109: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_1', - 110: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_2', - 111: 'TC_OP_ATOMIC_ADD_64', - 112: 'TC_OP_ATOMIC_SUB_64', - 113: 'TC_OP_ATOMIC_SMIN_64', - 114: 'TC_OP_ATOMIC_UMIN_64', - 115: 'TC_OP_ATOMIC_SMAX_64', - 116: 'TC_OP_ATOMIC_UMAX_64', - 117: 'TC_OP_ATOMIC_AND_64', - 118: 'TC_OP_ATOMIC_OR_64', - 119: 'TC_OP_ATOMIC_XOR_64', - 120: 'TC_OP_ATOMIC_INC_64', - 121: 'TC_OP_ATOMIC_DEC_64', - 122: 'TC_OP_WBINVL2_NC', - 123: 'TC_OP_NOP_ACK', - 124: 'TC_OP_RESERVED_NON_FLOAT_64_1', - 125: 'TC_OP_RESERVED_NON_FLOAT_64_2', - 126: 'TC_OP_RESERVED_NON_FLOAT_64_3', - 127: 'TC_OP_RESERVED_NON_FLOAT_64_4', -} -TC_OP_READ = 0 -TC_OP_ATOMIC_FCMPSWAP_RTN_32 = 1 -TC_OP_ATOMIC_FMIN_RTN_32 = 2 -TC_OP_ATOMIC_FMAX_RTN_32 = 3 -TC_OP_RESERVED_FOP_RTN_32_0 = 4 -TC_OP_RESERVED_FADD_RTN_32 = 5 -TC_OP_RESERVED_FOP_RTN_32_2 = 6 -TC_OP_ATOMIC_SWAP_RTN_32 = 7 -TC_OP_ATOMIC_CMPSWAP_RTN_32 = 8 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32 = 9 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32 = 10 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32 = 11 -TC_OP_PROBE_FILTER = 12 -TC_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32 = 13 -TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2 = 14 -TC_OP_ATOMIC_ADD_RTN_32 = 15 -TC_OP_ATOMIC_SUB_RTN_32 = 16 -TC_OP_ATOMIC_SMIN_RTN_32 = 17 -TC_OP_ATOMIC_UMIN_RTN_32 = 18 -TC_OP_ATOMIC_SMAX_RTN_32 = 19 -TC_OP_ATOMIC_UMAX_RTN_32 = 20 -TC_OP_ATOMIC_AND_RTN_32 = 21 -TC_OP_ATOMIC_OR_RTN_32 = 22 -TC_OP_ATOMIC_XOR_RTN_32 = 23 -TC_OP_ATOMIC_INC_RTN_32 = 24 -TC_OP_ATOMIC_DEC_RTN_32 = 25 -TC_OP_WBINVL1_VOL = 26 -TC_OP_WBINVL1_SD = 27 -TC_OP_RESERVED_NON_FLOAT_RTN_32_0 = 28 -TC_OP_RESERVED_NON_FLOAT_RTN_32_1 = 29 -TC_OP_RESERVED_NON_FLOAT_RTN_32_2 = 30 -TC_OP_RESERVED_NON_FLOAT_RTN_32_3 = 31 -TC_OP_WRITE = 32 -TC_OP_ATOMIC_FCMPSWAP_RTN_64 = 33 -TC_OP_ATOMIC_FMIN_RTN_64 = 34 -TC_OP_ATOMIC_FMAX_RTN_64 = 35 -TC_OP_RESERVED_FOP_RTN_64_0 = 36 -TC_OP_RESERVED_FOP_RTN_64_1 = 37 -TC_OP_RESERVED_FOP_RTN_64_2 = 38 -TC_OP_ATOMIC_SWAP_RTN_64 = 39 -TC_OP_ATOMIC_CMPSWAP_RTN_64 = 40 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64 = 41 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64 = 42 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64 = 43 -TC_OP_WBINVL2_SD = 44 -TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_0 = 45 -TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_1 = 46 -TC_OP_ATOMIC_ADD_RTN_64 = 47 -TC_OP_ATOMIC_SUB_RTN_64 = 48 -TC_OP_ATOMIC_SMIN_RTN_64 = 49 -TC_OP_ATOMIC_UMIN_RTN_64 = 50 -TC_OP_ATOMIC_SMAX_RTN_64 = 51 -TC_OP_ATOMIC_UMAX_RTN_64 = 52 -TC_OP_ATOMIC_AND_RTN_64 = 53 -TC_OP_ATOMIC_OR_RTN_64 = 54 -TC_OP_ATOMIC_XOR_RTN_64 = 55 -TC_OP_ATOMIC_INC_RTN_64 = 56 -TC_OP_ATOMIC_DEC_RTN_64 = 57 -TC_OP_WBL2_NC = 58 -TC_OP_WBL2_WC = 59 -TC_OP_RESERVED_NON_FLOAT_RTN_64_1 = 60 -TC_OP_RESERVED_NON_FLOAT_RTN_64_2 = 61 -TC_OP_RESERVED_NON_FLOAT_RTN_64_3 = 62 -TC_OP_RESERVED_NON_FLOAT_RTN_64_4 = 63 -TC_OP_WBINVL1 = 64 -TC_OP_ATOMIC_FCMPSWAP_32 = 65 -TC_OP_ATOMIC_FMIN_32 = 66 -TC_OP_ATOMIC_FMAX_32 = 67 -TC_OP_RESERVED_FOP_32_0 = 68 -TC_OP_RESERVED_FADD_32 = 69 -TC_OP_RESERVED_FOP_32_2 = 70 -TC_OP_ATOMIC_SWAP_32 = 71 -TC_OP_ATOMIC_CMPSWAP_32 = 72 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32 = 73 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_32 = 74 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_32 = 75 -TC_OP_INV_METADATA = 76 -TC_OP_ATOMIC_FADD_FLUSH_DENORM_32 = 77 -TC_OP_RESERVED_FOP_FLUSH_DENORM_32_2 = 78 -TC_OP_ATOMIC_ADD_32 = 79 -TC_OP_ATOMIC_SUB_32 = 80 -TC_OP_ATOMIC_SMIN_32 = 81 -TC_OP_ATOMIC_UMIN_32 = 82 -TC_OP_ATOMIC_SMAX_32 = 83 -TC_OP_ATOMIC_UMAX_32 = 84 -TC_OP_ATOMIC_AND_32 = 85 -TC_OP_ATOMIC_OR_32 = 86 -TC_OP_ATOMIC_XOR_32 = 87 -TC_OP_ATOMIC_INC_32 = 88 -TC_OP_ATOMIC_DEC_32 = 89 -TC_OP_INVL2_NC = 90 -TC_OP_NOP_RTN0 = 91 -TC_OP_RESERVED_NON_FLOAT_32_1 = 92 -TC_OP_RESERVED_NON_FLOAT_32_2 = 93 -TC_OP_RESERVED_NON_FLOAT_32_3 = 94 -TC_OP_RESERVED_NON_FLOAT_32_4 = 95 -TC_OP_WBINVL2 = 96 -TC_OP_ATOMIC_FCMPSWAP_64 = 97 -TC_OP_ATOMIC_FMIN_64 = 98 -TC_OP_ATOMIC_FMAX_64 = 99 -TC_OP_RESERVED_FOP_64_0 = 100 -TC_OP_RESERVED_FOP_64_1 = 101 -TC_OP_RESERVED_FOP_64_2 = 102 -TC_OP_ATOMIC_SWAP_64 = 103 -TC_OP_ATOMIC_CMPSWAP_64 = 104 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64 = 105 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_64 = 106 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_64 = 107 -TC_OP_RESERVED_FOP_FLUSH_DENORM_64_0 = 108 -TC_OP_RESERVED_FOP_FLUSH_DENORM_64_1 = 109 -TC_OP_RESERVED_FOP_FLUSH_DENORM_64_2 = 110 -TC_OP_ATOMIC_ADD_64 = 111 -TC_OP_ATOMIC_SUB_64 = 112 -TC_OP_ATOMIC_SMIN_64 = 113 -TC_OP_ATOMIC_UMIN_64 = 114 -TC_OP_ATOMIC_SMAX_64 = 115 -TC_OP_ATOMIC_UMAX_64 = 116 -TC_OP_ATOMIC_AND_64 = 117 -TC_OP_ATOMIC_OR_64 = 118 -TC_OP_ATOMIC_XOR_64 = 119 -TC_OP_ATOMIC_INC_64 = 120 -TC_OP_ATOMIC_DEC_64 = 121 -TC_OP_WBINVL2_NC = 122 -TC_OP_NOP_ACK = 123 -TC_OP_RESERVED_NON_FLOAT_64_1 = 124 -TC_OP_RESERVED_NON_FLOAT_64_2 = 125 -TC_OP_RESERVED_NON_FLOAT_64_3 = 126 -TC_OP_RESERVED_NON_FLOAT_64_4 = 127 -TC_OP = ctypes.c_uint32 # enum - -# values for enumeration 'TC_OP_MASKS' -TC_OP_MASKS__enumvalues = { - 8: 'TC_OP_MASK_FLUSH_DENROM', - 32: 'TC_OP_MASK_64', - 64: 'TC_OP_MASK_NO_RTN', -} -TC_OP_MASK_FLUSH_DENROM = 8 -TC_OP_MASK_64 = 32 -TC_OP_MASK_NO_RTN = 64 -TC_OP_MASKS = ctypes.c_uint32 # enum - -# values for enumeration 'GL2_EA_CID' -GL2_EA_CID__enumvalues = { - 0: 'GL2_EA_CID_CLIENT', - 1: 'GL2_EA_CID_SDMA', - 2: 'GL2_EA_CID_RLC', - 3: 'GL2_EA_CID_SQC', - 4: 'GL2_EA_CID_CP', - 5: 'GL2_EA_CID_CPDMA', - 6: 'GL2_EA_CID_UTCL2', - 7: 'GL2_EA_CID_RT', - 8: 'GL2_EA_CID_FMASK', - 9: 'GL2_EA_CID_DCC', - 10: 'GL2_EA_CID_Z_STENCIL', - 11: 'GL2_EA_CID_ZPCPSD', - 12: 'GL2_EA_CID_HTILE', - 13: 'GL2_EA_CID_MES', - 15: 'GL2_EA_CID_TCPMETA', -} -GL2_EA_CID_CLIENT = 0 -GL2_EA_CID_SDMA = 1 -GL2_EA_CID_RLC = 2 -GL2_EA_CID_SQC = 3 -GL2_EA_CID_CP = 4 -GL2_EA_CID_CPDMA = 5 -GL2_EA_CID_UTCL2 = 6 -GL2_EA_CID_RT = 7 -GL2_EA_CID_FMASK = 8 -GL2_EA_CID_DCC = 9 -GL2_EA_CID_Z_STENCIL = 10 -GL2_EA_CID_ZPCPSD = 11 -GL2_EA_CID_HTILE = 12 -GL2_EA_CID_MES = 13 -GL2_EA_CID_TCPMETA = 15 -GL2_EA_CID = ctypes.c_uint32 # enum - -# values for enumeration 'GL2_NACKS' -GL2_NACKS__enumvalues = { - 0: 'GL2_NACK_NO_FAULT', - 1: 'GL2_NACK_PAGE_FAULT', - 2: 'GL2_NACK_PROTECTION_FAULT', - 3: 'GL2_NACK_DATA_ERROR', -} -GL2_NACK_NO_FAULT = 0 -GL2_NACK_PAGE_FAULT = 1 -GL2_NACK_PROTECTION_FAULT = 2 -GL2_NACK_DATA_ERROR = 3 -GL2_NACKS = ctypes.c_uint32 # enum - -# values for enumeration 'GL2_OP' -GL2_OP__enumvalues = { - 0: 'GL2_OP_READ', - 1: 'GL2_OP_ATOMIC_FCMPSWAP_RTN_32', - 2: 'GL2_OP_ATOMIC_FMIN_RTN_32', - 3: 'GL2_OP_ATOMIC_FMAX_RTN_32', - 7: 'GL2_OP_ATOMIC_SWAP_RTN_32', - 8: 'GL2_OP_ATOMIC_CMPSWAP_RTN_32', - 9: 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32', - 10: 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32', - 11: 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32', - 12: 'GL2_OP_PROBE_FILTER', - 13: 'GL2_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32', - 14: 'GL2_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2', - 15: 'GL2_OP_ATOMIC_ADD_RTN_32', - 16: 'GL2_OP_ATOMIC_SUB_RTN_32', - 17: 'GL2_OP_ATOMIC_SMIN_RTN_32', - 18: 'GL2_OP_ATOMIC_UMIN_RTN_32', - 19: 'GL2_OP_ATOMIC_SMAX_RTN_32', - 20: 'GL2_OP_ATOMIC_UMAX_RTN_32', - 21: 'GL2_OP_ATOMIC_AND_RTN_32', - 22: 'GL2_OP_ATOMIC_OR_RTN_32', - 23: 'GL2_OP_ATOMIC_XOR_RTN_32', - 24: 'GL2_OP_ATOMIC_INC_RTN_32', - 25: 'GL2_OP_ATOMIC_DEC_RTN_32', - 26: 'GL2_OP_ATOMIC_CLAMP_SUB_RTN_32', - 32: 'GL2_OP_WRITE', - 33: 'GL2_OP_ATOMIC_FCMPSWAP_RTN_64', - 34: 'GL2_OP_ATOMIC_FMIN_RTN_64', - 35: 'GL2_OP_ATOMIC_FMAX_RTN_64', - 39: 'GL2_OP_ATOMIC_SWAP_RTN_64', - 40: 'GL2_OP_ATOMIC_CMPSWAP_RTN_64', - 41: 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64', - 42: 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64', - 43: 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64', - 47: 'GL2_OP_ATOMIC_ADD_RTN_64', - 48: 'GL2_OP_ATOMIC_SUB_RTN_64', - 49: 'GL2_OP_ATOMIC_SMIN_RTN_64', - 50: 'GL2_OP_ATOMIC_UMIN_RTN_64', - 51: 'GL2_OP_ATOMIC_SMAX_RTN_64', - 52: 'GL2_OP_ATOMIC_UMAX_RTN_64', - 53: 'GL2_OP_ATOMIC_AND_RTN_64', - 54: 'GL2_OP_ATOMIC_OR_RTN_64', - 55: 'GL2_OP_ATOMIC_XOR_RTN_64', - 56: 'GL2_OP_ATOMIC_INC_RTN_64', - 57: 'GL2_OP_ATOMIC_DEC_RTN_64', - 64: 'GL2_OP_GL1_INV', - 65: 'GL2_OP_ATOMIC_FCMPSWAP_32', - 66: 'GL2_OP_ATOMIC_FMIN_32', - 67: 'GL2_OP_ATOMIC_FMAX_32', - 71: 'GL2_OP_ATOMIC_SWAP_32', - 72: 'GL2_OP_ATOMIC_CMPSWAP_32', - 73: 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32', - 74: 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_32', - 75: 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_32', - 76: 'GL2_OP_ATOMIC_UMIN_8', - 77: 'GL2_OP_ATOMIC_FADD_FLUSH_DENORM_32', - 79: 'GL2_OP_ATOMIC_ADD_32', - 80: 'GL2_OP_ATOMIC_SUB_32', - 81: 'GL2_OP_ATOMIC_SMIN_32', - 82: 'GL2_OP_ATOMIC_UMIN_32', - 83: 'GL2_OP_ATOMIC_SMAX_32', - 84: 'GL2_OP_ATOMIC_UMAX_32', - 85: 'GL2_OP_ATOMIC_AND_32', - 86: 'GL2_OP_ATOMIC_OR_32', - 87: 'GL2_OP_ATOMIC_XOR_32', - 88: 'GL2_OP_ATOMIC_INC_32', - 89: 'GL2_OP_ATOMIC_DEC_32', - 91: 'GL2_OP_NOP_RTN0', - 97: 'GL2_OP_ATOMIC_FCMPSWAP_64', - 98: 'GL2_OP_ATOMIC_FMIN_64', - 99: 'GL2_OP_ATOMIC_FMAX_64', - 103: 'GL2_OP_ATOMIC_SWAP_64', - 104: 'GL2_OP_ATOMIC_CMPSWAP_64', - 105: 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64', - 106: 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_64', - 107: 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_64', - 111: 'GL2_OP_ATOMIC_ADD_64', - 112: 'GL2_OP_ATOMIC_SUB_64', - 113: 'GL2_OP_ATOMIC_SMIN_64', - 114: 'GL2_OP_ATOMIC_UMIN_64', - 115: 'GL2_OP_ATOMIC_SMAX_64', - 116: 'GL2_OP_ATOMIC_UMAX_64', - 117: 'GL2_OP_ATOMIC_AND_64', - 118: 'GL2_OP_ATOMIC_OR_64', - 119: 'GL2_OP_ATOMIC_XOR_64', - 120: 'GL2_OP_ATOMIC_INC_64', - 121: 'GL2_OP_ATOMIC_DEC_64', - 122: 'GL2_OP_ATOMIC_UMAX_8', - 123: 'GL2_OP_NOP_ACK', -} -GL2_OP_READ = 0 -GL2_OP_ATOMIC_FCMPSWAP_RTN_32 = 1 -GL2_OP_ATOMIC_FMIN_RTN_32 = 2 -GL2_OP_ATOMIC_FMAX_RTN_32 = 3 -GL2_OP_ATOMIC_SWAP_RTN_32 = 7 -GL2_OP_ATOMIC_CMPSWAP_RTN_32 = 8 -GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32 = 9 -GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32 = 10 -GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32 = 11 -GL2_OP_PROBE_FILTER = 12 -GL2_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32 = 13 -GL2_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2 = 14 -GL2_OP_ATOMIC_ADD_RTN_32 = 15 -GL2_OP_ATOMIC_SUB_RTN_32 = 16 -GL2_OP_ATOMIC_SMIN_RTN_32 = 17 -GL2_OP_ATOMIC_UMIN_RTN_32 = 18 -GL2_OP_ATOMIC_SMAX_RTN_32 = 19 -GL2_OP_ATOMIC_UMAX_RTN_32 = 20 -GL2_OP_ATOMIC_AND_RTN_32 = 21 -GL2_OP_ATOMIC_OR_RTN_32 = 22 -GL2_OP_ATOMIC_XOR_RTN_32 = 23 -GL2_OP_ATOMIC_INC_RTN_32 = 24 -GL2_OP_ATOMIC_DEC_RTN_32 = 25 -GL2_OP_ATOMIC_CLAMP_SUB_RTN_32 = 26 -GL2_OP_WRITE = 32 -GL2_OP_ATOMIC_FCMPSWAP_RTN_64 = 33 -GL2_OP_ATOMIC_FMIN_RTN_64 = 34 -GL2_OP_ATOMIC_FMAX_RTN_64 = 35 -GL2_OP_ATOMIC_SWAP_RTN_64 = 39 -GL2_OP_ATOMIC_CMPSWAP_RTN_64 = 40 -GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64 = 41 -GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64 = 42 -GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64 = 43 -GL2_OP_ATOMIC_ADD_RTN_64 = 47 -GL2_OP_ATOMIC_SUB_RTN_64 = 48 -GL2_OP_ATOMIC_SMIN_RTN_64 = 49 -GL2_OP_ATOMIC_UMIN_RTN_64 = 50 -GL2_OP_ATOMIC_SMAX_RTN_64 = 51 -GL2_OP_ATOMIC_UMAX_RTN_64 = 52 -GL2_OP_ATOMIC_AND_RTN_64 = 53 -GL2_OP_ATOMIC_OR_RTN_64 = 54 -GL2_OP_ATOMIC_XOR_RTN_64 = 55 -GL2_OP_ATOMIC_INC_RTN_64 = 56 -GL2_OP_ATOMIC_DEC_RTN_64 = 57 -GL2_OP_GL1_INV = 64 -GL2_OP_ATOMIC_FCMPSWAP_32 = 65 -GL2_OP_ATOMIC_FMIN_32 = 66 -GL2_OP_ATOMIC_FMAX_32 = 67 -GL2_OP_ATOMIC_SWAP_32 = 71 -GL2_OP_ATOMIC_CMPSWAP_32 = 72 -GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32 = 73 -GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_32 = 74 -GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_32 = 75 -GL2_OP_ATOMIC_UMIN_8 = 76 -GL2_OP_ATOMIC_FADD_FLUSH_DENORM_32 = 77 -GL2_OP_ATOMIC_ADD_32 = 79 -GL2_OP_ATOMIC_SUB_32 = 80 -GL2_OP_ATOMIC_SMIN_32 = 81 -GL2_OP_ATOMIC_UMIN_32 = 82 -GL2_OP_ATOMIC_SMAX_32 = 83 -GL2_OP_ATOMIC_UMAX_32 = 84 -GL2_OP_ATOMIC_AND_32 = 85 -GL2_OP_ATOMIC_OR_32 = 86 -GL2_OP_ATOMIC_XOR_32 = 87 -GL2_OP_ATOMIC_INC_32 = 88 -GL2_OP_ATOMIC_DEC_32 = 89 -GL2_OP_NOP_RTN0 = 91 -GL2_OP_ATOMIC_FCMPSWAP_64 = 97 -GL2_OP_ATOMIC_FMIN_64 = 98 -GL2_OP_ATOMIC_FMAX_64 = 99 -GL2_OP_ATOMIC_SWAP_64 = 103 -GL2_OP_ATOMIC_CMPSWAP_64 = 104 -GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64 = 105 -GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_64 = 106 -GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_64 = 107 -GL2_OP_ATOMIC_ADD_64 = 111 -GL2_OP_ATOMIC_SUB_64 = 112 -GL2_OP_ATOMIC_SMIN_64 = 113 -GL2_OP_ATOMIC_UMIN_64 = 114 -GL2_OP_ATOMIC_SMAX_64 = 115 -GL2_OP_ATOMIC_UMAX_64 = 116 -GL2_OP_ATOMIC_AND_64 = 117 -GL2_OP_ATOMIC_OR_64 = 118 -GL2_OP_ATOMIC_XOR_64 = 119 -GL2_OP_ATOMIC_INC_64 = 120 -GL2_OP_ATOMIC_DEC_64 = 121 -GL2_OP_ATOMIC_UMAX_8 = 122 -GL2_OP_NOP_ACK = 123 -GL2_OP = ctypes.c_uint32 # enum - -# values for enumeration 'GL2_OP_MASKS' -GL2_OP_MASKS__enumvalues = { - 8: 'GL2_OP_MASK_FLUSH_DENROM', - 32: 'GL2_OP_MASK_64', - 64: 'GL2_OP_MASK_NO_RTN', -} -GL2_OP_MASK_FLUSH_DENROM = 8 -GL2_OP_MASK_64 = 32 -GL2_OP_MASK_NO_RTN = 64 -GL2_OP_MASKS = ctypes.c_uint32 # enum - -# values for enumeration 'RLC_DOORBELL_MODE' -RLC_DOORBELL_MODE__enumvalues = { - 0: 'RLC_DOORBELL_MODE_DISABLE', - 1: 'RLC_DOORBELL_MODE_ENABLE', - 2: 'RLC_DOORBELL_MODE_ENABLE_PF', - 3: 'RLC_DOORBELL_MODE_ENABLE_PF_VF', -} -RLC_DOORBELL_MODE_DISABLE = 0 -RLC_DOORBELL_MODE_ENABLE = 1 -RLC_DOORBELL_MODE_ENABLE_PF = 2 -RLC_DOORBELL_MODE_ENABLE_PF_VF = 3 -RLC_DOORBELL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'RLC_PERFCOUNTER_SEL' -RLC_PERFCOUNTER_SEL__enumvalues = { - 0: 'RLC_PERF_SEL_POWER_FEATURE_0', - 1: 'RLC_PERF_SEL_POWER_FEATURE_1', - 2: 'RLC_PERF_SEL_CP_INTERRUPT', - 3: 'RLC_PERF_SEL_GRBM_INTERRUPT', - 4: 'RLC_PERF_SEL_SPM_INTERRUPT', - 5: 'RLC_PERF_SEL_IH_INTERRUPT', - 6: 'RLC_PERF_SEL_SERDES_COMMAND_WRITE', -} -RLC_PERF_SEL_POWER_FEATURE_0 = 0 -RLC_PERF_SEL_POWER_FEATURE_1 = 1 -RLC_PERF_SEL_CP_INTERRUPT = 2 -RLC_PERF_SEL_GRBM_INTERRUPT = 3 -RLC_PERF_SEL_SPM_INTERRUPT = 4 -RLC_PERF_SEL_IH_INTERRUPT = 5 -RLC_PERF_SEL_SERDES_COMMAND_WRITE = 6 -RLC_PERFCOUNTER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'RLC_PERFMON_STATE' -RLC_PERFMON_STATE__enumvalues = { - 0: 'RLC_PERFMON_STATE_RESET', - 1: 'RLC_PERFMON_STATE_ENABLE', - 2: 'RLC_PERFMON_STATE_DISABLE', - 3: 'RLC_PERFMON_STATE_RESERVED_3', - 4: 'RLC_PERFMON_STATE_RESERVED_4', - 5: 'RLC_PERFMON_STATE_RESERVED_5', - 6: 'RLC_PERFMON_STATE_RESERVED_6', - 7: 'RLC_PERFMON_STATE_ROLLOVER', -} -RLC_PERFMON_STATE_RESET = 0 -RLC_PERFMON_STATE_ENABLE = 1 -RLC_PERFMON_STATE_DISABLE = 2 -RLC_PERFMON_STATE_RESERVED_3 = 3 -RLC_PERFMON_STATE_RESERVED_4 = 4 -RLC_PERFMON_STATE_RESERVED_5 = 5 -RLC_PERFMON_STATE_RESERVED_6 = 6 -RLC_PERFMON_STATE_ROLLOVER = 7 -RLC_PERFMON_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'RSPM_CMD' -RSPM_CMD__enumvalues = { - 0: 'RSPM_CMD_INVALID', - 1: 'RSPM_CMD_IDLE', - 2: 'RSPM_CMD_CALIBRATE', - 3: 'RSPM_CMD_SPM_RESET', - 4: 'RSPM_CMD_SPM_START', - 5: 'RSPM_CMD_SPM_STOP', - 6: 'RSPM_CMD_PERF_RESET', - 7: 'RSPM_CMD_PERF_SAMPLE', - 8: 'RSPM_CMD_PROF_START', - 9: 'RSPM_CMD_PROF_STOP', - 10: 'RSPM_CMD_FORCE_SAMPLE', -} -RSPM_CMD_INVALID = 0 -RSPM_CMD_IDLE = 1 -RSPM_CMD_CALIBRATE = 2 -RSPM_CMD_SPM_RESET = 3 -RSPM_CMD_SPM_START = 4 -RSPM_CMD_SPM_STOP = 5 -RSPM_CMD_PERF_RESET = 6 -RSPM_CMD_PERF_SAMPLE = 7 -RSPM_CMD_PROF_START = 8 -RSPM_CMD_PROF_STOP = 9 -RSPM_CMD_FORCE_SAMPLE = 10 -RSPM_CMD = ctypes.c_uint32 # enum - -# values for enumeration 'CLKGATE_BASE_MODE' -CLKGATE_BASE_MODE__enumvalues = { - 0: 'MULT_8', - 1: 'MULT_16', -} -MULT_8 = 0 -MULT_16 = 1 -CLKGATE_BASE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CLKGATE_SM_MODE' -CLKGATE_SM_MODE__enumvalues = { - 0: 'ON_SEQ', - 1: 'OFF_SEQ', - 2: 'PROG_SEQ', - 3: 'READ_SEQ', - 4: 'SM_MODE_RESERVED', -} -ON_SEQ = 0 -OFF_SEQ = 1 -PROG_SEQ = 2 -READ_SEQ = 3 -SM_MODE_RESERVED = 4 -CLKGATE_SM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_FOG_MODE' -SPI_FOG_MODE__enumvalues = { - 0: 'SPI_FOG_NONE', - 1: 'SPI_FOG_EXP', - 2: 'SPI_FOG_EXP2', - 3: 'SPI_FOG_LINEAR', -} -SPI_FOG_NONE = 0 -SPI_FOG_EXP = 1 -SPI_FOG_EXP2 = 2 -SPI_FOG_LINEAR = 3 -SPI_FOG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_LB_WAVES_SELECT' -SPI_LB_WAVES_SELECT__enumvalues = { - 0: 'HS_GS', - 1: 'PS', - 2: 'CS_NA', - 3: 'SPI_LB_WAVES_RSVD', -} -HS_GS = 0 -PS = 1 -CS_NA = 2 -SPI_LB_WAVES_RSVD = 3 -SPI_LB_WAVES_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_PERFCNT_SEL' -SPI_PERFCNT_SEL__enumvalues = { - 1: 'SPI_PERF_GS_WINDOW_VALID', - 2: 'SPI_PERF_GS_BUSY', - 3: 'SPI_PERF_GS_CRAWLER_STALL', - 4: 'SPI_PERF_GS_EVENT_WAVE', - 5: 'SPI_PERF_GS_WAVE', - 6: 'SPI_PERF_GS_PERS_UPD_FULL0', - 7: 'SPI_PERF_GS_PERS_UPD_FULL1', - 8: 'SPI_PERF_GS_FIRST_SUBGRP', - 9: 'SPI_PERF_GS_HS_DEALLOC', - 10: 'SPI_PERF_GS_NGG_SE_LATE_ALLOC_LIMIT', - 11: 'SPI_PERF_GS_POS0_STALL', - 12: 'SPI_PERF_GS_POS1_STALL', - 13: 'SPI_PERF_GS_INDX0_STALL', - 14: 'SPI_PERF_GS_INDX1_STALL', - 15: 'SPI_PERF_GS_PWS_STALL', - 21: 'SPI_PERF_HS_WINDOW_VALID', - 22: 'SPI_PERF_HS_BUSY', - 23: 'SPI_PERF_HS_CRAWLER_STALL', - 24: 'SPI_PERF_HS_FIRST_WAVE', - 25: 'SPI_PERF_HS_OFFCHIP_LDS_STALL', - 26: 'SPI_PERF_HS_EVENT_WAVE', - 27: 'SPI_PERF_HS_WAVE', - 28: 'SPI_PERF_HS_PERS_UPD_FULL0', - 29: 'SPI_PERF_HS_PERS_UPD_FULL1', - 30: 'SPI_PERF_HS_PWS_STALL', - 37: 'SPI_PERF_CSGN_WINDOW_VALID', - 38: 'SPI_PERF_CSGN_BUSY', - 39: 'SPI_PERF_CSGN_NUM_THREADGROUPS', - 40: 'SPI_PERF_CSGN_CRAWLER_STALL', - 41: 'SPI_PERF_CSGN_EVENT_WAVE', - 42: 'SPI_PERF_CSGN_WAVE', - 43: 'SPI_PERF_CSGN_PWS_STALL', - 44: 'SPI_PERF_CSN_WINDOW_VALID', - 45: 'SPI_PERF_CSN_BUSY', - 46: 'SPI_PERF_CSN_NUM_THREADGROUPS', - 47: 'SPI_PERF_CSN_CRAWLER_STALL', - 48: 'SPI_PERF_CSN_EVENT_WAVE', - 49: 'SPI_PERF_CSN_WAVE', - 53: 'SPI_PERF_PS0_WINDOW_VALID', - 54: 'SPI_PERF_PS1_WINDOW_VALID', - 55: 'SPI_PERF_PS2_WINDOW_VALID', - 56: 'SPI_PERF_PS3_WINDOW_VALID', - 57: 'SPI_PERF_PS0_BUSY', - 58: 'SPI_PERF_PS1_BUSY', - 59: 'SPI_PERF_PS2_BUSY', - 60: 'SPI_PERF_PS3_BUSY', - 61: 'SPI_PERF_PS0_ACTIVE', - 62: 'SPI_PERF_PS1_ACTIVE', - 63: 'SPI_PERF_PS2_ACTIVE', - 64: 'SPI_PERF_PS3_ACTIVE', - 65: 'SPI_PERF_PS0_DEALLOC', - 66: 'SPI_PERF_PS1_DEALLOC', - 67: 'SPI_PERF_PS2_DEALLOC', - 68: 'SPI_PERF_PS3_DEALLOC', - 69: 'SPI_PERF_PS0_EVENT_WAVE', - 70: 'SPI_PERF_PS1_EVENT_WAVE', - 71: 'SPI_PERF_PS2_EVENT_WAVE', - 72: 'SPI_PERF_PS3_EVENT_WAVE', - 73: 'SPI_PERF_PS0_WAVE', - 74: 'SPI_PERF_PS1_WAVE', - 75: 'SPI_PERF_PS2_WAVE', - 76: 'SPI_PERF_PS3_WAVE', - 77: 'SPI_PERF_PS0_OPT_WAVE', - 78: 'SPI_PERF_PS1_OPT_WAVE', - 79: 'SPI_PERF_PS2_OPT_WAVE', - 80: 'SPI_PERF_PS3_OPT_WAVE', - 81: 'SPI_PERF_PS0_PRIM_BIN0', - 82: 'SPI_PERF_PS1_PRIM_BIN0', - 83: 'SPI_PERF_PS2_PRIM_BIN0', - 84: 'SPI_PERF_PS3_PRIM_BIN0', - 85: 'SPI_PERF_PS0_PRIM_BIN1', - 86: 'SPI_PERF_PS1_PRIM_BIN1', - 87: 'SPI_PERF_PS2_PRIM_BIN1', - 88: 'SPI_PERF_PS3_PRIM_BIN1', - 89: 'SPI_PERF_PS0_CRAWLER_STALL', - 90: 'SPI_PERF_PS1_CRAWLER_STALL', - 91: 'SPI_PERF_PS2_CRAWLER_STALL', - 92: 'SPI_PERF_PS3_CRAWLER_STALL', - 93: 'SPI_PERF_PS_PERS_UPD_FULL0', - 94: 'SPI_PERF_PS_PERS_UPD_FULL1', - 95: 'SPI_PERF_PS0_2_WAVE_GROUPS', - 96: 'SPI_PERF_PS1_2_WAVE_GROUPS', - 97: 'SPI_PERF_PS2_2_WAVE_GROUPS', - 98: 'SPI_PERF_PS3_2_WAVE_GROUPS', - 99: 'SPI_PERF_PS0_WAVE_GROUP_CLOCK_DELAY', - 100: 'SPI_PERF_PS1_WAVE_GROUP_CLOCK_DELAY', - 101: 'SPI_PERF_PS2_WAVE_GROUP_CLOCK_DELAY', - 102: 'SPI_PERF_PS3_WAVE_GROUP_CLOCK_DELAY', - 103: 'SPI_PERF_PS0_WAVE_GROUP_TIMEOUTS', - 104: 'SPI_PERF_PS1_WAVE_GROUP_TIMEOUTS', - 105: 'SPI_PERF_PS2_WAVE_GROUP_TIMEOUTS', - 106: 'SPI_PERF_PS3_WAVE_GROUP_TIMEOUTS', - 107: 'SPI_PERF_PS_PWS_STALL', - 141: 'SPI_PERF_RA_PIPE_REQ_BIN2', - 142: 'SPI_PERF_RA_TASK_REQ_BIN3', - 143: 'SPI_PERF_RA_WR_CTL_FULL', - 144: 'SPI_PERF_RA_REQ_NO_ALLOC', - 145: 'SPI_PERF_RA_REQ_NO_ALLOC_PS', - 146: 'SPI_PERF_RA_REQ_NO_ALLOC_GS', - 147: 'SPI_PERF_RA_REQ_NO_ALLOC_HS', - 148: 'SPI_PERF_RA_REQ_NO_ALLOC_CSG', - 149: 'SPI_PERF_RA_REQ_NO_ALLOC_CSN', - 150: 'SPI_PERF_RA_RES_STALL_PS', - 151: 'SPI_PERF_RA_RES_STALL_GS', - 152: 'SPI_PERF_RA_RES_STALL_HS', - 153: 'SPI_PERF_RA_RES_STALL_CSG', - 154: 'SPI_PERF_RA_RES_STALL_CSN', - 155: 'SPI_PERF_RA_TMP_STALL_PS', - 156: 'SPI_PERF_RA_TMP_STALL_GS', - 157: 'SPI_PERF_RA_TMP_STALL_HS', - 158: 'SPI_PERF_RA_TMP_STALL_CSG', - 159: 'SPI_PERF_RA_TMP_STALL_CSN', - 160: 'SPI_PERF_RA_WAVE_SIMD_FULL_PS', - 161: 'SPI_PERF_RA_WAVE_SIMD_FULL_GS', - 162: 'SPI_PERF_RA_WAVE_SIMD_FULL_HS', - 163: 'SPI_PERF_RA_WAVE_SIMD_FULL_CSG', - 164: 'SPI_PERF_RA_WAVE_SIMD_FULL_CSN', - 165: 'SPI_PERF_RA_VGPR_SIMD_FULL_PS', - 166: 'SPI_PERF_RA_VGPR_SIMD_FULL_GS', - 167: 'SPI_PERF_RA_VGPR_SIMD_FULL_HS', - 168: 'SPI_PERF_RA_VGPR_SIMD_FULL_CSG', - 169: 'SPI_PERF_RA_VGPR_SIMD_FULL_CSN', - 170: 'SPI_PERF_RA_LDS_CU_FULL_PS', - 171: 'SPI_PERF_RA_LDS_CU_FULL_HS', - 172: 'SPI_PERF_RA_LDS_CU_FULL_GS', - 173: 'SPI_PERF_RA_LDS_CU_FULL_CSG', - 174: 'SPI_PERF_RA_LDS_CU_FULL_CSN', - 175: 'SPI_PERF_RA_BAR_CU_FULL_HS', - 176: 'SPI_PERF_RA_BAR_CU_FULL_CSG', - 177: 'SPI_PERF_RA_BAR_CU_FULL_CSN', - 178: 'SPI_PERF_RA_BULKY_CU_FULL_CSG', - 179: 'SPI_PERF_RA_BULKY_CU_FULL_CSN', - 180: 'SPI_PERF_RA_TGLIM_CU_FULL_CSG', - 181: 'SPI_PERF_RA_TGLIM_CU_FULL_CSN', - 182: 'SPI_PERF_RA_WVLIM_STALL_PS', - 183: 'SPI_PERF_RA_WVLIM_STALL_GS', - 184: 'SPI_PERF_RA_WVLIM_STALL_HS', - 185: 'SPI_PERF_RA_WVLIM_STALL_CSG', - 186: 'SPI_PERF_RA_WVLIM_STALL_CSN', - 187: 'SPI_PERF_RA_GS_LOCK', - 188: 'SPI_PERF_RA_HS_LOCK', - 189: 'SPI_PERF_RA_CSG_LOCK', - 190: 'SPI_PERF_RA_CSN_LOCK', - 191: 'SPI_PERF_RA_RSV_UPD', - 192: 'SPI_PERF_RA_PRE_ALLOC_STALL', - 193: 'SPI_PERF_RA_GFX_UNDER_TUNNEL', - 194: 'SPI_PERF_RA_CSC_UNDER_TUNNEL', - 195: 'SPI_PERF_RA_WVALLOC_STALL', - 196: 'SPI_PERF_RA_ACCUM0_SIMD_FULL_PS', - 197: 'SPI_PERF_RA_ACCUM1_SIMD_FULL_PS', - 198: 'SPI_PERF_RA_ACCUM2_SIMD_FULL_PS', - 199: 'SPI_PERF_RA_ACCUM3_SIMD_FULL_PS', - 200: 'SPI_PERF_RA_ACCUM0_SIMD_FULL_GS', - 201: 'SPI_PERF_RA_ACCUM1_SIMD_FULL_GS', - 202: 'SPI_PERF_RA_ACCUM2_SIMD_FULL_GS', - 203: 'SPI_PERF_RA_ACCUM3_SIMD_FULL_GS', - 204: 'SPI_PERF_RA_ACCUM0_SIMD_FULL_HS', - 205: 'SPI_PERF_RA_ACCUM1_SIMD_FULL_HS', - 206: 'SPI_PERF_RA_ACCUM2_SIMD_FULL_HS', - 207: 'SPI_PERF_RA_ACCUM3_SIMD_FULL_HS', - 208: 'SPI_PERF_RA_ACCUM0_SIMD_FULL_CSG', - 209: 'SPI_PERF_RA_ACCUM1_SIMD_FULL_CSG', - 210: 'SPI_PERF_RA_ACCUM2_SIMD_FULL_CSG', - 211: 'SPI_PERF_RA_ACCUM3_SIMD_FULL_CSG', - 212: 'SPI_PERF_RA_ACCUM0_SIMD_FULL_CSN', - 213: 'SPI_PERF_RA_ACCUM1_SIMD_FULL_CSN', - 214: 'SPI_PERF_RA_ACCUM2_SIMD_FULL_CSN', - 215: 'SPI_PERF_RA_ACCUM3_SIMD_FULL_CSN', - 216: 'SPI_PERF_EXP_ARB_COL_CNT', - 217: 'SPI_PERF_EXP_ARB_POS_CNT', - 218: 'SPI_PERF_EXP_ARB_GDS_CNT', - 219: 'SPI_PERF_EXP_ARB_IDX_CNT', - 220: 'SPI_PERF_EXP_WITH_CONFLICT', - 221: 'SPI_PERF_EXP_WITH_CONFLICT_CLEAR', - 222: 'SPI_PERF_GS_EXP_DONE', - 223: 'SPI_PERF_PS_EXP_DONE', - 224: 'SPI_PERF_PS_EXP_ARB_CONFLICT', - 225: 'SPI_PERF_PS_EXP_ALLOC', - 226: 'SPI_PERF_PS0_WAVEID_STARVED', - 227: 'SPI_PERF_PS1_WAVEID_STARVED', - 228: 'SPI_PERF_PS2_WAVEID_STARVED', - 229: 'SPI_PERF_PS3_WAVEID_STARVED', - 230: 'SPI_PERF_PS0_EXP_ALLOC_WITH_CONFLICT', - 231: 'SPI_PERF_PS1_EXP_ALLOC_WITH_CONFLICT', - 232: 'SPI_PERF_PS2_EXP_ALLOC_WITH_CONFLICT', - 233: 'SPI_PERF_PS3_EXP_ALLOC_WITH_CONFLICT', - 234: 'SPI_PERF_NUM_PS_COL_SA0SQ0_EXPORTS', - 235: 'SPI_PERF_NUM_PS_COL_SA0SQ1_EXPORTS', - 236: 'SPI_PERF_NUM_PS_COL_SA1SQ0_EXPORTS', - 237: 'SPI_PERF_NUM_PS_COL_SA1SQ1_EXPORTS', - 238: 'SPI_PERF_NUM_POS_SA0SQ0_EXPORTS', - 239: 'SPI_PERF_NUM_POS_SA0SQ1_EXPORTS', - 240: 'SPI_PERF_NUM_POS_SA1SQ0_EXPORTS', - 241: 'SPI_PERF_NUM_POS_SA1SQ1_EXPORTS', - 242: 'SPI_PERF_NUM_GDS_SA0SQ0_EXPORTS', - 243: 'SPI_PERF_NUM_GDS_SA0SQ1_EXPORTS', - 244: 'SPI_PERF_NUM_GDS_SA1SQ0_EXPORTS', - 245: 'SPI_PERF_NUM_GDS_SA1SQ1_EXPORTS', - 246: 'SPI_PERF_NUM_EXPGRANT_EXPORTS', - 253: 'SPI_PERF_PIX_ALLOC_PEND_CNT', - 254: 'SPI_PERF_EXPORT_SCB0_STALL', - 255: 'SPI_PERF_EXPORT_SCB1_STALL', - 256: 'SPI_PERF_EXPORT_SCB2_STALL', - 257: 'SPI_PERF_EXPORT_SCB3_STALL', - 258: 'SPI_PERF_EXPORT_DB0_STALL', - 259: 'SPI_PERF_EXPORT_DB1_STALL', - 260: 'SPI_PERF_EXPORT_DB2_STALL', - 261: 'SPI_PERF_EXPORT_DB3_STALL', - 262: 'SPI_PERF_EXPORT_DB4_STALL', - 263: 'SPI_PERF_EXPORT_DB5_STALL', - 264: 'SPI_PERF_EXPORT_DB6_STALL', - 265: 'SPI_PERF_EXPORT_DB7_STALL', - 266: 'SPI_PERF_GS_NGG_SE_SEND_GS_ALLOC', - 267: 'SPI_PERF_GS_NGG_STALL_MSG_VAL', - 268: 'SPI_PERF_SWC_PS_WR', - 269: 'SPI_PERF_SWC_GS_WR', - 270: 'SPI_PERF_SWC_HS_WR', - 271: 'SPI_PERF_SWC_CSGN_WR', - 272: 'SPI_PERF_SWC_CSN_WR', - 273: 'SPI_PERF_VWC_PS_WR', - 274: 'SPI_PERF_VWC_ES_WR', - 275: 'SPI_PERF_VWC_GS_WR', - 276: 'SPI_PERF_VWC_LS_WR', - 277: 'SPI_PERF_VWC_HS_WR', - 278: 'SPI_PERF_VWC_CSGN_WR', - 279: 'SPI_PERF_VWC_CSN_WR', - 280: 'SPI_PERF_EXP_THROT_UPSTEP', - 281: 'SPI_PERF_EXP_THROT_DOWNSTEP', - 282: 'SPI_PERF_EXP_THROT_CAUSALITY_DETECTED', - 283: 'SPI_PERF_BUSY', -} -SPI_PERF_GS_WINDOW_VALID = 1 -SPI_PERF_GS_BUSY = 2 -SPI_PERF_GS_CRAWLER_STALL = 3 -SPI_PERF_GS_EVENT_WAVE = 4 -SPI_PERF_GS_WAVE = 5 -SPI_PERF_GS_PERS_UPD_FULL0 = 6 -SPI_PERF_GS_PERS_UPD_FULL1 = 7 -SPI_PERF_GS_FIRST_SUBGRP = 8 -SPI_PERF_GS_HS_DEALLOC = 9 -SPI_PERF_GS_NGG_SE_LATE_ALLOC_LIMIT = 10 -SPI_PERF_GS_POS0_STALL = 11 -SPI_PERF_GS_POS1_STALL = 12 -SPI_PERF_GS_INDX0_STALL = 13 -SPI_PERF_GS_INDX1_STALL = 14 -SPI_PERF_GS_PWS_STALL = 15 -SPI_PERF_HS_WINDOW_VALID = 21 -SPI_PERF_HS_BUSY = 22 -SPI_PERF_HS_CRAWLER_STALL = 23 -SPI_PERF_HS_FIRST_WAVE = 24 -SPI_PERF_HS_OFFCHIP_LDS_STALL = 25 -SPI_PERF_HS_EVENT_WAVE = 26 -SPI_PERF_HS_WAVE = 27 -SPI_PERF_HS_PERS_UPD_FULL0 = 28 -SPI_PERF_HS_PERS_UPD_FULL1 = 29 -SPI_PERF_HS_PWS_STALL = 30 -SPI_PERF_CSGN_WINDOW_VALID = 37 -SPI_PERF_CSGN_BUSY = 38 -SPI_PERF_CSGN_NUM_THREADGROUPS = 39 -SPI_PERF_CSGN_CRAWLER_STALL = 40 -SPI_PERF_CSGN_EVENT_WAVE = 41 -SPI_PERF_CSGN_WAVE = 42 -SPI_PERF_CSGN_PWS_STALL = 43 -SPI_PERF_CSN_WINDOW_VALID = 44 -SPI_PERF_CSN_BUSY = 45 -SPI_PERF_CSN_NUM_THREADGROUPS = 46 -SPI_PERF_CSN_CRAWLER_STALL = 47 -SPI_PERF_CSN_EVENT_WAVE = 48 -SPI_PERF_CSN_WAVE = 49 -SPI_PERF_PS0_WINDOW_VALID = 53 -SPI_PERF_PS1_WINDOW_VALID = 54 -SPI_PERF_PS2_WINDOW_VALID = 55 -SPI_PERF_PS3_WINDOW_VALID = 56 -SPI_PERF_PS0_BUSY = 57 -SPI_PERF_PS1_BUSY = 58 -SPI_PERF_PS2_BUSY = 59 -SPI_PERF_PS3_BUSY = 60 -SPI_PERF_PS0_ACTIVE = 61 -SPI_PERF_PS1_ACTIVE = 62 -SPI_PERF_PS2_ACTIVE = 63 -SPI_PERF_PS3_ACTIVE = 64 -SPI_PERF_PS0_DEALLOC = 65 -SPI_PERF_PS1_DEALLOC = 66 -SPI_PERF_PS2_DEALLOC = 67 -SPI_PERF_PS3_DEALLOC = 68 -SPI_PERF_PS0_EVENT_WAVE = 69 -SPI_PERF_PS1_EVENT_WAVE = 70 -SPI_PERF_PS2_EVENT_WAVE = 71 -SPI_PERF_PS3_EVENT_WAVE = 72 -SPI_PERF_PS0_WAVE = 73 -SPI_PERF_PS1_WAVE = 74 -SPI_PERF_PS2_WAVE = 75 -SPI_PERF_PS3_WAVE = 76 -SPI_PERF_PS0_OPT_WAVE = 77 -SPI_PERF_PS1_OPT_WAVE = 78 -SPI_PERF_PS2_OPT_WAVE = 79 -SPI_PERF_PS3_OPT_WAVE = 80 -SPI_PERF_PS0_PRIM_BIN0 = 81 -SPI_PERF_PS1_PRIM_BIN0 = 82 -SPI_PERF_PS2_PRIM_BIN0 = 83 -SPI_PERF_PS3_PRIM_BIN0 = 84 -SPI_PERF_PS0_PRIM_BIN1 = 85 -SPI_PERF_PS1_PRIM_BIN1 = 86 -SPI_PERF_PS2_PRIM_BIN1 = 87 -SPI_PERF_PS3_PRIM_BIN1 = 88 -SPI_PERF_PS0_CRAWLER_STALL = 89 -SPI_PERF_PS1_CRAWLER_STALL = 90 -SPI_PERF_PS2_CRAWLER_STALL = 91 -SPI_PERF_PS3_CRAWLER_STALL = 92 -SPI_PERF_PS_PERS_UPD_FULL0 = 93 -SPI_PERF_PS_PERS_UPD_FULL1 = 94 -SPI_PERF_PS0_2_WAVE_GROUPS = 95 -SPI_PERF_PS1_2_WAVE_GROUPS = 96 -SPI_PERF_PS2_2_WAVE_GROUPS = 97 -SPI_PERF_PS3_2_WAVE_GROUPS = 98 -SPI_PERF_PS0_WAVE_GROUP_CLOCK_DELAY = 99 -SPI_PERF_PS1_WAVE_GROUP_CLOCK_DELAY = 100 -SPI_PERF_PS2_WAVE_GROUP_CLOCK_DELAY = 101 -SPI_PERF_PS3_WAVE_GROUP_CLOCK_DELAY = 102 -SPI_PERF_PS0_WAVE_GROUP_TIMEOUTS = 103 -SPI_PERF_PS1_WAVE_GROUP_TIMEOUTS = 104 -SPI_PERF_PS2_WAVE_GROUP_TIMEOUTS = 105 -SPI_PERF_PS3_WAVE_GROUP_TIMEOUTS = 106 -SPI_PERF_PS_PWS_STALL = 107 -SPI_PERF_RA_PIPE_REQ_BIN2 = 141 -SPI_PERF_RA_TASK_REQ_BIN3 = 142 -SPI_PERF_RA_WR_CTL_FULL = 143 -SPI_PERF_RA_REQ_NO_ALLOC = 144 -SPI_PERF_RA_REQ_NO_ALLOC_PS = 145 -SPI_PERF_RA_REQ_NO_ALLOC_GS = 146 -SPI_PERF_RA_REQ_NO_ALLOC_HS = 147 -SPI_PERF_RA_REQ_NO_ALLOC_CSG = 148 -SPI_PERF_RA_REQ_NO_ALLOC_CSN = 149 -SPI_PERF_RA_RES_STALL_PS = 150 -SPI_PERF_RA_RES_STALL_GS = 151 -SPI_PERF_RA_RES_STALL_HS = 152 -SPI_PERF_RA_RES_STALL_CSG = 153 -SPI_PERF_RA_RES_STALL_CSN = 154 -SPI_PERF_RA_TMP_STALL_PS = 155 -SPI_PERF_RA_TMP_STALL_GS = 156 -SPI_PERF_RA_TMP_STALL_HS = 157 -SPI_PERF_RA_TMP_STALL_CSG = 158 -SPI_PERF_RA_TMP_STALL_CSN = 159 -SPI_PERF_RA_WAVE_SIMD_FULL_PS = 160 -SPI_PERF_RA_WAVE_SIMD_FULL_GS = 161 -SPI_PERF_RA_WAVE_SIMD_FULL_HS = 162 -SPI_PERF_RA_WAVE_SIMD_FULL_CSG = 163 -SPI_PERF_RA_WAVE_SIMD_FULL_CSN = 164 -SPI_PERF_RA_VGPR_SIMD_FULL_PS = 165 -SPI_PERF_RA_VGPR_SIMD_FULL_GS = 166 -SPI_PERF_RA_VGPR_SIMD_FULL_HS = 167 -SPI_PERF_RA_VGPR_SIMD_FULL_CSG = 168 -SPI_PERF_RA_VGPR_SIMD_FULL_CSN = 169 -SPI_PERF_RA_LDS_CU_FULL_PS = 170 -SPI_PERF_RA_LDS_CU_FULL_HS = 171 -SPI_PERF_RA_LDS_CU_FULL_GS = 172 -SPI_PERF_RA_LDS_CU_FULL_CSG = 173 -SPI_PERF_RA_LDS_CU_FULL_CSN = 174 -SPI_PERF_RA_BAR_CU_FULL_HS = 175 -SPI_PERF_RA_BAR_CU_FULL_CSG = 176 -SPI_PERF_RA_BAR_CU_FULL_CSN = 177 -SPI_PERF_RA_BULKY_CU_FULL_CSG = 178 -SPI_PERF_RA_BULKY_CU_FULL_CSN = 179 -SPI_PERF_RA_TGLIM_CU_FULL_CSG = 180 -SPI_PERF_RA_TGLIM_CU_FULL_CSN = 181 -SPI_PERF_RA_WVLIM_STALL_PS = 182 -SPI_PERF_RA_WVLIM_STALL_GS = 183 -SPI_PERF_RA_WVLIM_STALL_HS = 184 -SPI_PERF_RA_WVLIM_STALL_CSG = 185 -SPI_PERF_RA_WVLIM_STALL_CSN = 186 -SPI_PERF_RA_GS_LOCK = 187 -SPI_PERF_RA_HS_LOCK = 188 -SPI_PERF_RA_CSG_LOCK = 189 -SPI_PERF_RA_CSN_LOCK = 190 -SPI_PERF_RA_RSV_UPD = 191 -SPI_PERF_RA_PRE_ALLOC_STALL = 192 -SPI_PERF_RA_GFX_UNDER_TUNNEL = 193 -SPI_PERF_RA_CSC_UNDER_TUNNEL = 194 -SPI_PERF_RA_WVALLOC_STALL = 195 -SPI_PERF_RA_ACCUM0_SIMD_FULL_PS = 196 -SPI_PERF_RA_ACCUM1_SIMD_FULL_PS = 197 -SPI_PERF_RA_ACCUM2_SIMD_FULL_PS = 198 -SPI_PERF_RA_ACCUM3_SIMD_FULL_PS = 199 -SPI_PERF_RA_ACCUM0_SIMD_FULL_GS = 200 -SPI_PERF_RA_ACCUM1_SIMD_FULL_GS = 201 -SPI_PERF_RA_ACCUM2_SIMD_FULL_GS = 202 -SPI_PERF_RA_ACCUM3_SIMD_FULL_GS = 203 -SPI_PERF_RA_ACCUM0_SIMD_FULL_HS = 204 -SPI_PERF_RA_ACCUM1_SIMD_FULL_HS = 205 -SPI_PERF_RA_ACCUM2_SIMD_FULL_HS = 206 -SPI_PERF_RA_ACCUM3_SIMD_FULL_HS = 207 -SPI_PERF_RA_ACCUM0_SIMD_FULL_CSG = 208 -SPI_PERF_RA_ACCUM1_SIMD_FULL_CSG = 209 -SPI_PERF_RA_ACCUM2_SIMD_FULL_CSG = 210 -SPI_PERF_RA_ACCUM3_SIMD_FULL_CSG = 211 -SPI_PERF_RA_ACCUM0_SIMD_FULL_CSN = 212 -SPI_PERF_RA_ACCUM1_SIMD_FULL_CSN = 213 -SPI_PERF_RA_ACCUM2_SIMD_FULL_CSN = 214 -SPI_PERF_RA_ACCUM3_SIMD_FULL_CSN = 215 -SPI_PERF_EXP_ARB_COL_CNT = 216 -SPI_PERF_EXP_ARB_POS_CNT = 217 -SPI_PERF_EXP_ARB_GDS_CNT = 218 -SPI_PERF_EXP_ARB_IDX_CNT = 219 -SPI_PERF_EXP_WITH_CONFLICT = 220 -SPI_PERF_EXP_WITH_CONFLICT_CLEAR = 221 -SPI_PERF_GS_EXP_DONE = 222 -SPI_PERF_PS_EXP_DONE = 223 -SPI_PERF_PS_EXP_ARB_CONFLICT = 224 -SPI_PERF_PS_EXP_ALLOC = 225 -SPI_PERF_PS0_WAVEID_STARVED = 226 -SPI_PERF_PS1_WAVEID_STARVED = 227 -SPI_PERF_PS2_WAVEID_STARVED = 228 -SPI_PERF_PS3_WAVEID_STARVED = 229 -SPI_PERF_PS0_EXP_ALLOC_WITH_CONFLICT = 230 -SPI_PERF_PS1_EXP_ALLOC_WITH_CONFLICT = 231 -SPI_PERF_PS2_EXP_ALLOC_WITH_CONFLICT = 232 -SPI_PERF_PS3_EXP_ALLOC_WITH_CONFLICT = 233 -SPI_PERF_NUM_PS_COL_SA0SQ0_EXPORTS = 234 -SPI_PERF_NUM_PS_COL_SA0SQ1_EXPORTS = 235 -SPI_PERF_NUM_PS_COL_SA1SQ0_EXPORTS = 236 -SPI_PERF_NUM_PS_COL_SA1SQ1_EXPORTS = 237 -SPI_PERF_NUM_POS_SA0SQ0_EXPORTS = 238 -SPI_PERF_NUM_POS_SA0SQ1_EXPORTS = 239 -SPI_PERF_NUM_POS_SA1SQ0_EXPORTS = 240 -SPI_PERF_NUM_POS_SA1SQ1_EXPORTS = 241 -SPI_PERF_NUM_GDS_SA0SQ0_EXPORTS = 242 -SPI_PERF_NUM_GDS_SA0SQ1_EXPORTS = 243 -SPI_PERF_NUM_GDS_SA1SQ0_EXPORTS = 244 -SPI_PERF_NUM_GDS_SA1SQ1_EXPORTS = 245 -SPI_PERF_NUM_EXPGRANT_EXPORTS = 246 -SPI_PERF_PIX_ALLOC_PEND_CNT = 253 -SPI_PERF_EXPORT_SCB0_STALL = 254 -SPI_PERF_EXPORT_SCB1_STALL = 255 -SPI_PERF_EXPORT_SCB2_STALL = 256 -SPI_PERF_EXPORT_SCB3_STALL = 257 -SPI_PERF_EXPORT_DB0_STALL = 258 -SPI_PERF_EXPORT_DB1_STALL = 259 -SPI_PERF_EXPORT_DB2_STALL = 260 -SPI_PERF_EXPORT_DB3_STALL = 261 -SPI_PERF_EXPORT_DB4_STALL = 262 -SPI_PERF_EXPORT_DB5_STALL = 263 -SPI_PERF_EXPORT_DB6_STALL = 264 -SPI_PERF_EXPORT_DB7_STALL = 265 -SPI_PERF_GS_NGG_SE_SEND_GS_ALLOC = 266 -SPI_PERF_GS_NGG_STALL_MSG_VAL = 267 -SPI_PERF_SWC_PS_WR = 268 -SPI_PERF_SWC_GS_WR = 269 -SPI_PERF_SWC_HS_WR = 270 -SPI_PERF_SWC_CSGN_WR = 271 -SPI_PERF_SWC_CSN_WR = 272 -SPI_PERF_VWC_PS_WR = 273 -SPI_PERF_VWC_ES_WR = 274 -SPI_PERF_VWC_GS_WR = 275 -SPI_PERF_VWC_LS_WR = 276 -SPI_PERF_VWC_HS_WR = 277 -SPI_PERF_VWC_CSGN_WR = 278 -SPI_PERF_VWC_CSN_WR = 279 -SPI_PERF_EXP_THROT_UPSTEP = 280 -SPI_PERF_EXP_THROT_DOWNSTEP = 281 -SPI_PERF_EXP_THROT_CAUSALITY_DETECTED = 282 -SPI_PERF_BUSY = 283 -SPI_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_PNT_SPRITE_OVERRIDE' -SPI_PNT_SPRITE_OVERRIDE__enumvalues = { - 0: 'SPI_PNT_SPRITE_SEL_0', - 1: 'SPI_PNT_SPRITE_SEL_1', - 2: 'SPI_PNT_SPRITE_SEL_S', - 3: 'SPI_PNT_SPRITE_SEL_T', - 4: 'SPI_PNT_SPRITE_SEL_NONE', -} -SPI_PNT_SPRITE_SEL_0 = 0 -SPI_PNT_SPRITE_SEL_1 = 1 -SPI_PNT_SPRITE_SEL_S = 2 -SPI_PNT_SPRITE_SEL_T = 3 -SPI_PNT_SPRITE_SEL_NONE = 4 -SPI_PNT_SPRITE_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_PS_LDS_GROUP_SIZE' -SPI_PS_LDS_GROUP_SIZE__enumvalues = { - 0: 'SPI_PS_LDS_GROUP_1', - 1: 'SPI_PS_LDS_GROUP_2', - 2: 'SPI_PS_LDS_GROUP_4', -} -SPI_PS_LDS_GROUP_1 = 0 -SPI_PS_LDS_GROUP_2 = 1 -SPI_PS_LDS_GROUP_4 = 2 -SPI_PS_LDS_GROUP_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_SAMPLE_CNTL' -SPI_SAMPLE_CNTL__enumvalues = { - 0: 'CENTROIDS_ONLY', - 1: 'CENTERS_ONLY', - 2: 'CENTROIDS_AND_CENTERS', - 3: 'UNDEF', -} -CENTROIDS_ONLY = 0 -CENTERS_ONLY = 1 -CENTROIDS_AND_CENTERS = 2 -UNDEF = 3 -SPI_SAMPLE_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_SHADER_EX_FORMAT' -SPI_SHADER_EX_FORMAT__enumvalues = { - 0: 'SPI_SHADER_ZERO', - 1: 'SPI_SHADER_32_R', - 2: 'SPI_SHADER_32_GR', - 3: 'SPI_SHADER_32_AR', - 4: 'SPI_SHADER_FP16_ABGR', - 5: 'SPI_SHADER_UNORM16_ABGR', - 6: 'SPI_SHADER_SNORM16_ABGR', - 7: 'SPI_SHADER_UINT16_ABGR', - 8: 'SPI_SHADER_SINT16_ABGR', - 9: 'SPI_SHADER_32_ABGR', -} -SPI_SHADER_ZERO = 0 -SPI_SHADER_32_R = 1 -SPI_SHADER_32_GR = 2 -SPI_SHADER_32_AR = 3 -SPI_SHADER_FP16_ABGR = 4 -SPI_SHADER_UNORM16_ABGR = 5 -SPI_SHADER_SNORM16_ABGR = 6 -SPI_SHADER_UINT16_ABGR = 7 -SPI_SHADER_SINT16_ABGR = 8 -SPI_SHADER_32_ABGR = 9 -SPI_SHADER_EX_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_SHADER_FORMAT' -SPI_SHADER_FORMAT__enumvalues = { - 0: 'SPI_SHADER_NONE', - 1: 'SPI_SHADER_1COMP', - 2: 'SPI_SHADER_2COMP', - 3: 'SPI_SHADER_4COMPRESS', - 4: 'SPI_SHADER_4COMP', -} -SPI_SHADER_NONE = 0 -SPI_SHADER_1COMP = 1 -SPI_SHADER_2COMP = 2 -SPI_SHADER_4COMPRESS = 3 -SPI_SHADER_4COMP = 4 -SPI_SHADER_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'SH_MEM_ADDRESS_MODE' -SH_MEM_ADDRESS_MODE__enumvalues = { - 0: 'SH_MEM_ADDRESS_MODE_64', - 1: 'SH_MEM_ADDRESS_MODE_32', -} -SH_MEM_ADDRESS_MODE_64 = 0 -SH_MEM_ADDRESS_MODE_32 = 1 -SH_MEM_ADDRESS_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SH_MEM_ALIGNMENT_MODE' -SH_MEM_ALIGNMENT_MODE__enumvalues = { - 0: 'SH_MEM_ALIGNMENT_MODE_DWORD', - 1: 'SH_MEM_ALIGNMENT_MODE_DWORD_STRICT', - 2: 'SH_MEM_ALIGNMENT_MODE_STRICT', - 3: 'SH_MEM_ALIGNMENT_MODE_UNALIGNED', -} -SH_MEM_ALIGNMENT_MODE_DWORD = 0 -SH_MEM_ALIGNMENT_MODE_DWORD_STRICT = 1 -SH_MEM_ALIGNMENT_MODE_STRICT = 2 -SH_MEM_ALIGNMENT_MODE_UNALIGNED = 3 -SH_MEM_ALIGNMENT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQG_PERF_SEL' -SQG_PERF_SEL__enumvalues = { - 0: 'SQG_PERF_SEL_NONE', - 1: 'SQG_PERF_SEL_MSG_BUS_BUSY', - 2: 'SQG_PERF_SEL_EXP_REQ0_BUS_BUSY', - 3: 'SQG_PERF_SEL_EXP_REQ1_BUS_BUSY', - 4: 'SQG_PERF_SEL_EXP_BUS0_BUSY', - 5: 'SQG_PERF_SEL_EXP_BUS1_BUSY', - 6: 'SQG_PERF_SEL_TTRACE_REQS', - 7: 'SQG_PERF_SEL_TTRACE_INFLIGHT_REQS', - 8: 'SQG_PERF_SEL_TTRACE_STALL', - 9: 'SQG_PERF_SEL_TTRACE_LOST_PACKETS', - 10: 'SQG_PERF_SEL_WAVES_INITIAL_PREFETCH', - 11: 'SQG_PERF_SEL_EVENTS', - 12: 'SQG_PERF_SEL_WAVES_RESTORED', - 13: 'SQG_PERF_SEL_WAVES_SAVED', - 14: 'SQG_PERF_SEL_ACCUM_PREV', - 15: 'SQG_PERF_SEL_CYCLES', - 16: 'SQG_PERF_SEL_BUSY_CYCLES', - 17: 'SQG_PERF_SEL_WAVE_CYCLES', - 18: 'SQG_PERF_SEL_MSG', - 19: 'SQG_PERF_SEL_MSG_INTERRUPT', - 20: 'SQG_PERF_SEL_WAVES', - 21: 'SQG_PERF_SEL_WAVES_32', - 22: 'SQG_PERF_SEL_WAVES_64', - 23: 'SQG_PERF_SEL_LEVEL_WAVES', - 24: 'SQG_PERF_SEL_ITEMS', - 25: 'SQG_PERF_SEL_WAVE32_ITEMS', - 26: 'SQG_PERF_SEL_WAVE64_ITEMS', - 27: 'SQG_PERF_SEL_PS_QUADS', - 28: 'SQG_PERF_SEL_WAVES_EQ_64', - 29: 'SQG_PERF_SEL_WAVES_EQ_32', - 30: 'SQG_PERF_SEL_WAVES_LT_64', - 31: 'SQG_PERF_SEL_WAVES_LT_48', - 32: 'SQG_PERF_SEL_WAVES_LT_32', - 33: 'SQG_PERF_SEL_WAVES_LT_16', - 34: 'SQG_PERF_SEL_DUMMY_LAST', -} -SQG_PERF_SEL_NONE = 0 -SQG_PERF_SEL_MSG_BUS_BUSY = 1 -SQG_PERF_SEL_EXP_REQ0_BUS_BUSY = 2 -SQG_PERF_SEL_EXP_REQ1_BUS_BUSY = 3 -SQG_PERF_SEL_EXP_BUS0_BUSY = 4 -SQG_PERF_SEL_EXP_BUS1_BUSY = 5 -SQG_PERF_SEL_TTRACE_REQS = 6 -SQG_PERF_SEL_TTRACE_INFLIGHT_REQS = 7 -SQG_PERF_SEL_TTRACE_STALL = 8 -SQG_PERF_SEL_TTRACE_LOST_PACKETS = 9 -SQG_PERF_SEL_WAVES_INITIAL_PREFETCH = 10 -SQG_PERF_SEL_EVENTS = 11 -SQG_PERF_SEL_WAVES_RESTORED = 12 -SQG_PERF_SEL_WAVES_SAVED = 13 -SQG_PERF_SEL_ACCUM_PREV = 14 -SQG_PERF_SEL_CYCLES = 15 -SQG_PERF_SEL_BUSY_CYCLES = 16 -SQG_PERF_SEL_WAVE_CYCLES = 17 -SQG_PERF_SEL_MSG = 18 -SQG_PERF_SEL_MSG_INTERRUPT = 19 -SQG_PERF_SEL_WAVES = 20 -SQG_PERF_SEL_WAVES_32 = 21 -SQG_PERF_SEL_WAVES_64 = 22 -SQG_PERF_SEL_LEVEL_WAVES = 23 -SQG_PERF_SEL_ITEMS = 24 -SQG_PERF_SEL_WAVE32_ITEMS = 25 -SQG_PERF_SEL_WAVE64_ITEMS = 26 -SQG_PERF_SEL_PS_QUADS = 27 -SQG_PERF_SEL_WAVES_EQ_64 = 28 -SQG_PERF_SEL_WAVES_EQ_32 = 29 -SQG_PERF_SEL_WAVES_LT_64 = 30 -SQG_PERF_SEL_WAVES_LT_48 = 31 -SQG_PERF_SEL_WAVES_LT_32 = 32 -SQG_PERF_SEL_WAVES_LT_16 = 33 -SQG_PERF_SEL_DUMMY_LAST = 34 -SQG_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_CAC_POWER_SEL' -SQ_CAC_POWER_SEL__enumvalues = { - 0: 'SQ_CAC_POWER_VALU', - 1: 'SQ_CAC_POWER_VALU0', - 2: 'SQ_CAC_POWER_VALU1', - 3: 'SQ_CAC_POWER_VALU2', - 4: 'SQ_CAC_POWER_GPR_RD', - 5: 'SQ_CAC_POWER_GPR_WR', - 6: 'SQ_CAC_POWER_LDS_BUSY', - 7: 'SQ_CAC_POWER_ALU_BUSY', - 8: 'SQ_CAC_POWER_TEX_BUSY', -} -SQ_CAC_POWER_VALU = 0 -SQ_CAC_POWER_VALU0 = 1 -SQ_CAC_POWER_VALU1 = 2 -SQ_CAC_POWER_VALU2 = 3 -SQ_CAC_POWER_GPR_RD = 4 -SQ_CAC_POWER_GPR_WR = 5 -SQ_CAC_POWER_LDS_BUSY = 6 -SQ_CAC_POWER_ALU_BUSY = 7 -SQ_CAC_POWER_TEX_BUSY = 8 -SQ_CAC_POWER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_EDC_INFO_SOURCE' -SQ_EDC_INFO_SOURCE__enumvalues = { - 0: 'SQ_EDC_INFO_SOURCE_INVALID', - 1: 'SQ_EDC_INFO_SOURCE_INST', - 2: 'SQ_EDC_INFO_SOURCE_SGPR', - 3: 'SQ_EDC_INFO_SOURCE_VGPR', - 4: 'SQ_EDC_INFO_SOURCE_LDS', - 5: 'SQ_EDC_INFO_SOURCE_GDS', - 6: 'SQ_EDC_INFO_SOURCE_TA', -} -SQ_EDC_INFO_SOURCE_INVALID = 0 -SQ_EDC_INFO_SOURCE_INST = 1 -SQ_EDC_INFO_SOURCE_SGPR = 2 -SQ_EDC_INFO_SOURCE_VGPR = 3 -SQ_EDC_INFO_SOURCE_LDS = 4 -SQ_EDC_INFO_SOURCE_GDS = 5 -SQ_EDC_INFO_SOURCE_TA = 6 -SQ_EDC_INFO_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IBUF_ST' -SQ_IBUF_ST__enumvalues = { - 0: 'SQ_IBUF_IB_IDLE', - 1: 'SQ_IBUF_IB_INI_WAIT_GNT', - 2: 'SQ_IBUF_IB_INI_WAIT_DRET', - 3: 'SQ_IBUF_IB_LE_4DW', - 4: 'SQ_IBUF_IB_WAIT_DRET', - 5: 'SQ_IBUF_IB_EMPTY_WAIT_DRET', - 6: 'SQ_IBUF_IB_DRET', - 7: 'SQ_IBUF_IB_EMPTY_WAIT_GNT', -} -SQ_IBUF_IB_IDLE = 0 -SQ_IBUF_IB_INI_WAIT_GNT = 1 -SQ_IBUF_IB_INI_WAIT_DRET = 2 -SQ_IBUF_IB_LE_4DW = 3 -SQ_IBUF_IB_WAIT_DRET = 4 -SQ_IBUF_IB_EMPTY_WAIT_DRET = 5 -SQ_IBUF_IB_DRET = 6 -SQ_IBUF_IB_EMPTY_WAIT_GNT = 7 -SQ_IBUF_ST = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IMG_FILTER_TYPE' -SQ_IMG_FILTER_TYPE__enumvalues = { - 0: 'SQ_IMG_FILTER_MODE_BLEND', - 1: 'SQ_IMG_FILTER_MODE_MIN', - 2: 'SQ_IMG_FILTER_MODE_MAX', -} -SQ_IMG_FILTER_MODE_BLEND = 0 -SQ_IMG_FILTER_MODE_MIN = 1 -SQ_IMG_FILTER_MODE_MAX = 2 -SQ_IMG_FILTER_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IND_CMD_CMD' -SQ_IND_CMD_CMD__enumvalues = { - 0: 'SQ_IND_CMD_CMD_NULL', - 1: 'SQ_IND_CMD_CMD_SETHALT', - 2: 'SQ_IND_CMD_CMD_SAVECTX', - 3: 'SQ_IND_CMD_CMD_KILL', - 4: 'SQ_IND_CMD_CMD_TRAP_AFTER_INST', - 5: 'SQ_IND_CMD_CMD_TRAP', - 6: 'SQ_IND_CMD_CMD_SET_SPI_PRIO', - 7: 'SQ_IND_CMD_CMD_SETFATALHALT', - 8: 'SQ_IND_CMD_CMD_SINGLE_STEP', -} -SQ_IND_CMD_CMD_NULL = 0 -SQ_IND_CMD_CMD_SETHALT = 1 -SQ_IND_CMD_CMD_SAVECTX = 2 -SQ_IND_CMD_CMD_KILL = 3 -SQ_IND_CMD_CMD_TRAP_AFTER_INST = 4 -SQ_IND_CMD_CMD_TRAP = 5 -SQ_IND_CMD_CMD_SET_SPI_PRIO = 6 -SQ_IND_CMD_CMD_SETFATALHALT = 7 -SQ_IND_CMD_CMD_SINGLE_STEP = 8 -SQ_IND_CMD_CMD = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IND_CMD_MODE' -SQ_IND_CMD_MODE__enumvalues = { - 0: 'SQ_IND_CMD_MODE_SINGLE', - 1: 'SQ_IND_CMD_MODE_BROADCAST', - 2: 'SQ_IND_CMD_MODE_BROADCAST_QUEUE', - 3: 'SQ_IND_CMD_MODE_BROADCAST_PIPE', - 4: 'SQ_IND_CMD_MODE_BROADCAST_ME', -} -SQ_IND_CMD_MODE_SINGLE = 0 -SQ_IND_CMD_MODE_BROADCAST = 1 -SQ_IND_CMD_MODE_BROADCAST_QUEUE = 2 -SQ_IND_CMD_MODE_BROADCAST_PIPE = 3 -SQ_IND_CMD_MODE_BROADCAST_ME = 4 -SQ_IND_CMD_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_INST_STR_ST' -SQ_INST_STR_ST__enumvalues = { - 0: 'SQ_INST_STR_IB_WAVE_NORML', - 1: 'SQ_INST_STR_IB_WAVE2ID_NORMAL_INST_AV', - 2: 'SQ_INST_STR_IB_WAVE_INTERNAL_INST_AV', - 3: 'SQ_INST_STR_IB_WAVE_INST_SKIP_AV', - 4: 'SQ_INST_STR_IB_WAVE_NOP_SLEEP_WAIT', - 5: 'SQ_INST_STR_IB_WAVE_PC_FROM_SGPR_MSG_WAIT', -} -SQ_INST_STR_IB_WAVE_NORML = 0 -SQ_INST_STR_IB_WAVE2ID_NORMAL_INST_AV = 1 -SQ_INST_STR_IB_WAVE_INTERNAL_INST_AV = 2 -SQ_INST_STR_IB_WAVE_INST_SKIP_AV = 3 -SQ_INST_STR_IB_WAVE_NOP_SLEEP_WAIT = 4 -SQ_INST_STR_IB_WAVE_PC_FROM_SGPR_MSG_WAIT = 5 -SQ_INST_STR_ST = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_INST_TYPE' -SQ_INST_TYPE__enumvalues = { - 0: 'SQ_INST_TYPE_VALU', - 1: 'SQ_INST_TYPE_SCALAR', - 2: 'SQ_INST_TYPE_TEX', - 3: 'SQ_INST_TYPE_LDS', - 4: 'SQ_INST_TYPE_LDS_DIRECT', - 5: 'SQ_INST_TYPE_EXP', - 6: 'SQ_INST_TYPE_MSG', - 7: 'SQ_INST_TYPE_BARRIER', - 8: 'SQ_INST_TYPE_BRANCH_NOT_TAKEN', - 9: 'SQ_INST_TYPE_BRANCH_TAKEN', - 10: 'SQ_INST_TYPE_JUMP', - 11: 'SQ_INST_TYPE_OTHER', - 12: 'SQ_INST_TYPE_NONE', -} -SQ_INST_TYPE_VALU = 0 -SQ_INST_TYPE_SCALAR = 1 -SQ_INST_TYPE_TEX = 2 -SQ_INST_TYPE_LDS = 3 -SQ_INST_TYPE_LDS_DIRECT = 4 -SQ_INST_TYPE_EXP = 5 -SQ_INST_TYPE_MSG = 6 -SQ_INST_TYPE_BARRIER = 7 -SQ_INST_TYPE_BRANCH_NOT_TAKEN = 8 -SQ_INST_TYPE_BRANCH_TAKEN = 9 -SQ_INST_TYPE_JUMP = 10 -SQ_INST_TYPE_OTHER = 11 -SQ_INST_TYPE_NONE = 12 -SQ_INST_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_LLC_CTL' -SQ_LLC_CTL__enumvalues = { - 0: 'SQ_LLC_0', - 1: 'SQ_LLC_1', - 2: 'SQ_LLC_RSVD_2', - 3: 'SQ_LLC_BYPASS', -} -SQ_LLC_0 = 0 -SQ_LLC_1 = 1 -SQ_LLC_RSVD_2 = 2 -SQ_LLC_BYPASS = 3 -SQ_LLC_CTL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_NO_INST_ISSUE' -SQ_NO_INST_ISSUE__enumvalues = { - 0: 'SQ_NO_INST_ISSUE_NO_INSTS', - 1: 'SQ_NO_INST_ISSUE_ALU_DEP', - 2: 'SQ_NO_INST_ISSUE_S_WAITCNT', - 3: 'SQ_NO_INST_ISSUE_NO_ARB_WIN', - 4: 'SQ_NO_INST_ISSUE_SLEEP_WAIT', - 5: 'SQ_NO_INST_ISSUE_BARRIER_WAIT', - 6: 'SQ_NO_INST_ISSUE_OTHER', -} -SQ_NO_INST_ISSUE_NO_INSTS = 0 -SQ_NO_INST_ISSUE_ALU_DEP = 1 -SQ_NO_INST_ISSUE_S_WAITCNT = 2 -SQ_NO_INST_ISSUE_NO_ARB_WIN = 3 -SQ_NO_INST_ISSUE_SLEEP_WAIT = 4 -SQ_NO_INST_ISSUE_BARRIER_WAIT = 5 -SQ_NO_INST_ISSUE_OTHER = 6 -SQ_NO_INST_ISSUE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_OOB_SELECT' -SQ_OOB_SELECT__enumvalues = { - 0: 'SQ_OOB_INDEX_AND_OFFSET', - 1: 'SQ_OOB_INDEX_ONLY', - 2: 'SQ_OOB_NUM_RECORDS_0', - 3: 'SQ_OOB_COMPLETE', -} -SQ_OOB_INDEX_AND_OFFSET = 0 -SQ_OOB_INDEX_ONLY = 1 -SQ_OOB_NUM_RECORDS_0 = 2 -SQ_OOB_COMPLETE = 3 -SQ_OOB_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_PERF_SEL' -SQ_PERF_SEL__enumvalues = { - 0: 'SQ_PERF_SEL_NONE', - 1: 'SQ_PERF_SEL_ACCUM_PREV', - 2: 'SQ_PERF_SEL_CYCLES', - 3: 'SQ_PERF_SEL_BUSY_CYCLES', - 4: 'SQ_PERF_SEL_WAVES', - 5: 'SQ_PERF_SEL_WAVES_32', - 6: 'SQ_PERF_SEL_WAVES_64', - 7: 'SQ_PERF_SEL_LEVEL_WAVES', - 8: 'SQ_PERF_SEL_ITEMS', - 9: 'SQ_PERF_SEL_WAVE32_ITEMS', - 10: 'SQ_PERF_SEL_WAVE64_ITEMS', - 11: 'SQ_PERF_SEL_PS_QUADS', - 12: 'SQ_PERF_SEL_EVENTS', - 13: 'SQ_PERF_SEL_WAVES_EQ_32', - 14: 'SQ_PERF_SEL_WAVES_EQ_64', - 15: 'SQ_PERF_SEL_WAVES_LT_64', - 16: 'SQ_PERF_SEL_WAVES_LT_48', - 17: 'SQ_PERF_SEL_WAVES_LT_32', - 18: 'SQ_PERF_SEL_WAVES_LT_16', - 19: 'SQ_PERF_SEL_WAVES_RESTORED', - 20: 'SQ_PERF_SEL_WAVES_SAVED', - 21: 'SQ_PERF_SEL_MSG', - 22: 'SQ_PERF_SEL_MSG_INTERRUPT', - 23: 'SQ_PERF_SEL_WAVES_INITIAL_PREFETCH', - 24: 'SQ_PERF_SEL_WAVE_CYCLES', - 25: 'SQ_PERF_SEL_WAVE_READY', - 26: 'SQ_PERF_SEL_WAIT_INST_ANY', - 27: 'SQ_PERF_SEL_WAIT_INST_VALU', - 28: 'SQ_PERF_SEL_WAIT_INST_SCA', - 29: 'SQ_PERF_SEL_WAIT_INST_LDS', - 30: 'SQ_PERF_SEL_WAIT_INST_TEX', - 31: 'SQ_PERF_SEL_WAIT_INST_FLAT', - 32: 'SQ_PERF_SEL_WAIT_INST_VMEM', - 33: 'SQ_PERF_SEL_WAIT_INST_EXP_GDS', - 34: 'SQ_PERF_SEL_WAIT_INST_BR_MSG', - 35: 'SQ_PERF_SEL_WAIT_ANY', - 36: 'SQ_PERF_SEL_WAIT_CNT_ANY', - 37: 'SQ_PERF_SEL_WAIT_CNT_VMVS', - 38: 'SQ_PERF_SEL_WAIT_CNT_LGKM', - 39: 'SQ_PERF_SEL_WAIT_CNT_EXP', - 40: 'SQ_PERF_SEL_WAIT_TTRACE', - 41: 'SQ_PERF_SEL_WAIT_IFETCH', - 42: 'SQ_PERF_SEL_WAIT_BARRIER', - 43: 'SQ_PERF_SEL_WAIT_EXP_ALLOC', - 44: 'SQ_PERF_SEL_WAIT_SLEEP', - 45: 'SQ_PERF_SEL_WAIT_DELAY_ALU', - 46: 'SQ_PERF_SEL_WAIT_DEPCTR', - 47: 'SQ_PERF_SEL_WAIT_OTHER', - 48: 'SQ_PERF_SEL_INSTS_ALL', - 49: 'SQ_PERF_SEL_INSTS_BRANCH', - 50: 'SQ_PERF_SEL_INSTS_CBRANCH_NOT_TAKEN', - 51: 'SQ_PERF_SEL_INSTS_CBRANCH_TAKEN', - 52: 'SQ_PERF_SEL_INSTS_CBRANCH_TAKEN_HIT_IS', - 53: 'SQ_PERF_SEL_INSTS_EXP_GDS', - 54: 'SQ_PERF_SEL_INSTS_GDS', - 55: 'SQ_PERF_SEL_INSTS_EXP', - 56: 'SQ_PERF_SEL_INSTS_FLAT', - 57: 'SQ_PERF_SEL_INSTS_LDS', - 58: 'SQ_PERF_SEL_INSTS_SALU', - 59: 'SQ_PERF_SEL_INSTS_SMEM', - 60: 'SQ_PERF_SEL_INSTS_SMEM_NORM', - 61: 'SQ_PERF_SEL_INSTS_SENDMSG', - 62: 'SQ_PERF_SEL_INSTS_VALU', - 63: 'SQ_PERF_SEL_INSTS_VALU_TRANS32', - 64: 'SQ_PERF_SEL_INSTS_VALU_NO_COEXEC', - 65: 'SQ_PERF_SEL_INSTS_TEX', - 66: 'SQ_PERF_SEL_INSTS_TEX_LOAD', - 67: 'SQ_PERF_SEL_INSTS_TEX_STORE', - 68: 'SQ_PERF_SEL_INSTS_DELAY_ALU', - 69: 'SQ_PERF_SEL_INSTS_INTERNAL', - 70: 'SQ_PERF_SEL_INSTS_WAVE32', - 71: 'SQ_PERF_SEL_INSTS_WAVE32_FLAT', - 72: 'SQ_PERF_SEL_INSTS_WAVE32_LDS', - 73: 'SQ_PERF_SEL_INSTS_WAVE32_VALU', - 74: 'SQ_PERF_SEL_WAVE32_INSTS_EXP_GDS', - 75: 'SQ_PERF_SEL_INSTS_WAVE32_VALU_TRANS32', - 76: 'SQ_PERF_SEL_INSTS_WAVE32_VALU_NO_COEXEC', - 77: 'SQ_PERF_SEL_INSTS_WAVE32_TEX', - 78: 'SQ_PERF_SEL_INSTS_WAVE32_TEX_LOAD', - 79: 'SQ_PERF_SEL_INSTS_WAVE32_TEX_STORE', - 80: 'SQ_PERF_SEL_ITEM_CYCLES_VALU', - 81: 'SQ_PERF_SEL_VALU_READWRITELANE_CYCLES', - 82: 'SQ_PERF_SEL_WAVE32_INSTS', - 83: 'SQ_PERF_SEL_WAVE64_INSTS', - 84: 'SQ_PERF_SEL_INSTS_VALU_EXEC_SKIPPED', - 85: 'SQ_PERF_SEL_WAVE64_HALF_SKIP', - 86: 'SQ_PERF_SEL_INST_LEVEL_EXP', - 87: 'SQ_PERF_SEL_INST_LEVEL_GDS', - 88: 'SQ_PERF_SEL_INST_LEVEL_LDS', - 89: 'SQ_PERF_SEL_INST_LEVEL_SMEM', - 90: 'SQ_PERF_SEL_INST_LEVEL_TEX_LOAD', - 91: 'SQ_PERF_SEL_INST_LEVEL_TEX_STORE', - 92: 'SQ_PERF_SEL_IFETCH_REQS', - 93: 'SQ_PERF_SEL_IFETCH_LEVEL', - 94: 'SQ_PERF_SEL_LDS_DIRECT_CMD_FIFO_FULL_STALL', - 95: 'SQ_PERF_SEL_VALU_SGATHER_STALL', - 96: 'SQ_PERF_SEL_VALU_FWD_BUFFER_FULL_STALL', - 97: 'SQ_PERF_SEL_VALU_SGPR_RD_FIFO_FULL_STALL', - 98: 'SQ_PERF_SEL_VALU_SGATHER_FULL_STALL', - 99: 'SQ_PERF_SEL_SALU_SGATHER_STALL', - 100: 'SQ_PERF_SEL_SALU_SGPR_RD_FIFO_FULL_STALL', - 101: 'SQ_PERF_SEL_SALU_GATHER_FULL_STALL', - 102: 'SQ_PERF_SEL_SMEM_DCACHE_FIFO_FULL_STALL', - 103: 'SQ_PERF_SEL_INST_CYCLES_VALU', - 104: 'SQ_PERF_SEL_INST_CYCLES_VALU_TRANS32', - 105: 'SQ_PERF_SEL_INST_CYCLES_VALU_NO_COEXEC', - 106: 'SQ_PERF_SEL_INST_CYCLES_VMEM', - 107: 'SQ_PERF_SEL_INST_CYCLES_VMEM_LOAD', - 108: 'SQ_PERF_SEL_INST_CYCLES_VMEM_STORE', - 109: 'SQ_PERF_SEL_INST_CYCLES_LDS', - 110: 'SQ_PERF_SEL_INST_CYCLES_TEX', - 111: 'SQ_PERF_SEL_INST_CYCLES_FLAT', - 112: 'SQ_PERF_SEL_INST_CYCLES_EXP_GDS', - 113: 'SQ_PERF_SEL_INST_CYCLES_EXP', - 114: 'SQ_PERF_SEL_INST_CYCLES_GDS', - 115: 'SQ_PERF_SEL_VALU_STARVE', - 116: 'SQ_PERF_SEL_VMEM_ARB_FIFO_FULL', - 117: 'SQ_PERF_SEL_MSG_FIFO_FULL_STALL', - 118: 'SQ_PERF_SEL_EXP_REQ_FIFO_FULL', - 119: 'SQ_PERF_SEL_VMEM_BUS_ACTIVE', - 120: 'SQ_PERF_SEL_VMEM_BUS_STALL', - 121: 'SQ_PERF_SEL_VMEM_BUS_STALL_TA_ADDR_FIFO_FULL', - 122: 'SQ_PERF_SEL_VMEM_BUS_STALL_TA_CMD_FIFO_FULL', - 123: 'SQ_PERF_SEL_VMEM_BUS_STALL_LDS_ADDR_FIFO_FULL', - 124: 'SQ_PERF_SEL_VMEM_BUS_STALL_LDS_CMD_FIFO_FULL', - 125: 'SQ_PERF_SEL_VMEM_STARVE_TA_ADDR_EMPTY', - 126: 'SQ_PERF_SEL_VMEM_STARVE_LDS_ADDR_EMPTY', - 127: 'SQ_PERF_SEL_SALU_PIPE_STALL', - 128: 'SQ_PERF_SEL_SMEM_DCACHE_RETURN_CYCLES', - 129: 'SQ_PERF_SEL_MSG_BUS_BUSY', - 130: 'SQ_PERF_SEL_EXP_REQ_BUS_STALL', - 131: 'SQ_PERF_SEL_EXP_REQ0_BUS_BUSY', - 132: 'SQ_PERF_SEL_EXP_REQ1_BUS_BUSY', - 133: 'SQ_PERF_SEL_EXP_BUS0_BUSY', - 134: 'SQ_PERF_SEL_EXP_BUS1_BUSY', - 135: 'SQ_PERF_SEL_INST_CACHE_REQ_STALL', - 136: 'SQ_PERF_SEL_USER0', - 137: 'SQ_PERF_SEL_USER1', - 138: 'SQ_PERF_SEL_USER2', - 139: 'SQ_PERF_SEL_USER3', - 140: 'SQ_PERF_SEL_USER4', - 141: 'SQ_PERF_SEL_USER5', - 142: 'SQ_PERF_SEL_USER6', - 143: 'SQ_PERF_SEL_USER7', - 144: 'SQ_PERF_SEL_USER8', - 145: 'SQ_PERF_SEL_USER9', - 146: 'SQ_PERF_SEL_USER10', - 147: 'SQ_PERF_SEL_USER11', - 148: 'SQ_PERF_SEL_USER12', - 149: 'SQ_PERF_SEL_USER13', - 150: 'SQ_PERF_SEL_USER14', - 151: 'SQ_PERF_SEL_USER15', - 152: 'SQ_PERF_SEL_USER_LEVEL0', - 153: 'SQ_PERF_SEL_USER_LEVEL1', - 154: 'SQ_PERF_SEL_USER_LEVEL2', - 155: 'SQ_PERF_SEL_USER_LEVEL3', - 156: 'SQ_PERF_SEL_USER_LEVEL4', - 157: 'SQ_PERF_SEL_USER_LEVEL5', - 158: 'SQ_PERF_SEL_USER_LEVEL6', - 159: 'SQ_PERF_SEL_USER_LEVEL7', - 160: 'SQ_PERF_SEL_USER_LEVEL8', - 161: 'SQ_PERF_SEL_USER_LEVEL9', - 162: 'SQ_PERF_SEL_USER_LEVEL10', - 163: 'SQ_PERF_SEL_USER_LEVEL11', - 164: 'SQ_PERF_SEL_USER_LEVEL12', - 165: 'SQ_PERF_SEL_USER_LEVEL13', - 166: 'SQ_PERF_SEL_USER_LEVEL14', - 167: 'SQ_PERF_SEL_USER_LEVEL15', - 168: 'SQ_PERF_SEL_VALU_RETURN_SDST', - 169: 'SQ_PERF_SEL_VMEM_VGPR_READ_STALLED_BY_EXPORT', - 170: 'SQ_PERF_SEL_INSTS_VALU_TRANS', - 171: 'SQ_PERF_SEL_INSTS_LDS_DIRECT_LOAD', - 172: 'SQ_PERF_SEL_INSTS_LDS_PARAM_LOAD', - 173: 'SQ_PERF_SEL_INSTS_WAVE32_LDS_PARAM_LOAD', - 174: 'SQ_PERF_SEL_INSTS_VALU_ONE_CYCLE_WAVE64', - 175: 'SQ_PERF_SEL_INSTS_VALU_VINTERP', - 176: 'SQ_PERF_SEL_INSTS_VALU_WAVE32_VINTERP', - 177: 'SQ_PERF_SEL_OVERFLOW_PREV', - 178: 'SQ_PERF_SEL_INSTS_DUAL_VALU_WAVE32', - 179: 'SQ_PERF_SEL_INSTS_VALU_1_PASS', - 180: 'SQ_PERF_SEL_INSTS_VALU_2_PASS', - 181: 'SQ_PERF_SEL_INSTS_VALU_4_PASS', - 182: 'SQ_PERF_SEL_INSTS_VALU_DP', - 183: 'SQ_PERF_SEL_SP_CONST_CYCLES', - 184: 'SQ_PERF_SEL_SP_CONST_STALL_CYCLES', - 185: 'SQ_PERF_SEL_ITEMS_VALU', - 186: 'SQ_PERF_SEL_ITEMS_MAX_VALU', - 187: 'SQ_PERF_SEL_ITEM_CYCLES_VMEM', - 188: 'SQ_PERF_SEL_DUMMY_END', - 255: 'SQ_PERF_SEL_DUMMY_LAST', - 256: 'SQC_PERF_SEL_LDS_BANK_CONFLICT', - 257: 'SQC_PERF_SEL_LDS_ADDR_CONFLICT', - 258: 'SQC_PERF_SEL_LDS_UNALIGNED_STALL', - 259: 'SQC_PERF_SEL_LDS_MEM_VIOLATIONS', - 260: 'SQC_PERF_SEL_LDS_ATOMIC_RETURN', - 261: 'SQC_PERF_SEL_LDS_IDX_ACTIVE', - 262: 'SQC_PERF_SEL_LDS_ADDR_STALL', - 263: 'SQC_PERF_SEL_LDS_ADDR_ACTIVE', - 264: 'SQC_PERF_SEL_LDS_PC_LDS_WRITE_STALL_TD', - 265: 'SQC_PERF_SEL_LDS_SPI_VGPR_WRITE_STALL_TD', - 266: 'SQC_PERF_SEL_LDS_LDS_VGPR_WRITE_STALL', - 267: 'SQC_PERF_SEL_LDS_FP_ADD_CYCLES', - 268: 'SQC_PERF_SEL_ICACHE_BUSY_CYCLES', - 269: 'SQC_PERF_SEL_ICACHE_REQ', - 270: 'SQC_PERF_SEL_ICACHE_HITS', - 271: 'SQC_PERF_SEL_ICACHE_MISSES', - 272: 'SQC_PERF_SEL_ICACHE_MISSES_DUPLICATE', - 273: 'SQC_PERF_SEL_ICACHE_INVAL_INST', - 274: 'SQC_PERF_SEL_ICACHE_INVAL_ASYNC', - 275: 'SQC_PERF_SEL_ICACHE_INFLIGHT_LEVEL', - 276: 'SQC_PERF_SEL_DCACHE_INFLIGHT_LEVEL', - 277: 'SQC_PERF_SEL_TC_INFLIGHT_LEVEL', - 278: 'SQC_PERF_SEL_ICACHE_TC_INFLIGHT_LEVEL', - 279: 'SQC_PERF_SEL_DCACHE_TC_INFLIGHT_LEVEL', - 280: 'SQC_PERF_SEL_ICACHE_INPUT_VALID_READYB', - 281: 'SQC_PERF_SEL_DCACHE_INPUT_VALID_READYB', - 282: 'SQC_PERF_SEL_TC_REQ', - 283: 'SQC_PERF_SEL_TC_INST_REQ', - 284: 'SQC_PERF_SEL_TC_DATA_READ_REQ', - 285: 'SQC_PERF_SEL_TC_STALL', - 286: 'SQC_PERF_SEL_TC_STARVE', - 287: 'SQC_PERF_SEL_ICACHE_INPUT_STALL_ARB_NO_GRANT', - 288: 'SQC_PERF_SEL_ICACHE_INPUT_STALL_BANK_READYB', - 289: 'SQC_PERF_SEL_ICACHE_CACHE_STALLED', - 290: 'SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_MAX', - 291: 'SQC_PERF_SEL_ICACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 292: 'SQC_PERF_SEL_DCACHE_BUSY_CYCLES', - 293: 'SQC_PERF_SEL_DCACHE_REQ', - 294: 'SQC_PERF_SEL_DCACHE_HITS', - 295: 'SQC_PERF_SEL_DCACHE_MISSES', - 296: 'SQC_PERF_SEL_DCACHE_MISSES_DUPLICATE', - 297: 'SQC_PERF_SEL_DCACHE_INVAL_INST', - 298: 'SQC_PERF_SEL_DCACHE_INVAL_ASYNC', - 299: 'SQC_PERF_SEL_DCACHE_HIT_LRU_READ', - 300: 'SQC_PERF_SEL_DCACHE_INPUT_STALL_ARB_NO_GRANT', - 301: 'SQC_PERF_SEL_DCACHE_INPUT_STALL_BANK_READYB', - 302: 'SQC_PERF_SEL_DCACHE_CACHE_STALLED', - 303: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_INFLIGHT_MAX', - 304: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT', - 305: 'SQC_PERF_SEL_DCACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 306: 'SQC_PERF_SEL_DCACHE_REQ_READ_1', - 307: 'SQC_PERF_SEL_DCACHE_REQ_READ_2', - 308: 'SQC_PERF_SEL_DCACHE_REQ_READ_4', - 309: 'SQC_PERF_SEL_DCACHE_REQ_READ_8', - 310: 'SQC_PERF_SEL_DCACHE_REQ_READ_16', - 311: 'SQC_PERF_SEL_DCACHE_REQ_ATC_PROBE', - 312: 'SQC_PERF_SEL_SQ_DCACHE_REQS', - 313: 'SQC_PERF_SEL_DCACHE_FLAT_REQ', - 314: 'SQC_PERF_SEL_TD_VGPR_BUSY', - 315: 'SQC_PERF_SEL_LDS_VGPR_BUSY', - 316: 'SQC_PERF_SEL_LDS_TD_VGPR_CONF_STALL', - 317: 'SQC_PERF_SEL_ICACHE_GCR', - 318: 'SQC_PERF_SEL_ICACHE_GCR_HITS', - 319: 'SQC_PERF_SEL_DCACHE_GCR', - 320: 'SQC_PERF_SEL_DCACHE_GCR_HITS', - 321: 'SQC_PERF_SEL_ICACHE_GCR_INVALIDATE', - 322: 'SQC_PERF_SEL_DCACHE_GCR_INVALIDATE', - 323: 'SQC_PERF_SEL_DCACHE_SPI_RETURN_STALL', - 324: 'SQC_PERF_SEL_DUMMY_LAST', - 448: 'SP_PERF_SEL_DST_BUF_ALLOC_STALL', - 449: 'SP_PERF_SEL_DST_BUF_WB_CONF_W_TD_LDS', - 450: 'SP_PERF_SEL_DST_BUF_WB_CONF_W_SPI', - 451: 'SP_PERF_SEL_DST_BUF_EVEN_DIRTY', - 452: 'SP_PERF_SEL_DST_BUF_ODD_DIRTY', - 453: 'SP_PERF_SEL_SRC_CACHE_HIT_B0', - 454: 'SP_PERF_SEL_SRC_CACHE_HIT_B1', - 455: 'SP_PERF_SEL_SRC_CACHE_HIT_B2', - 456: 'SP_PERF_SEL_SRC_CACHE_HIT_B3', - 457: 'SP_PERF_SEL_SRC_CACHE_PROBE_B0', - 458: 'SP_PERF_SEL_SRC_CACHE_PROBE_B1', - 459: 'SP_PERF_SEL_SRC_CACHE_PROBE_B2', - 460: 'SP_PERF_SEL_SRC_CACHE_PROBE_B3', - 461: 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B0', - 462: 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B1', - 463: 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B2', - 464: 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B3', - 465: 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B0', - 466: 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B1', - 467: 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B2', - 468: 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B3', - 469: 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B0', - 470: 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B1', - 471: 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B2', - 472: 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B3', - 473: 'SP_PERF_SEL_VALU_PENDING_QUEUE_STALL', - 474: 'SP_PERF_SEL_VALU_OPERAND', - 475: 'SP_PERF_SEL_VALU_VGPR_OPERAND', - 476: 'SP_PERF_SEL_VALU_OPERAND_FROM_DST_BUF', - 477: 'SP_PERF_SEL_VALU_EXEC_MASK_CHANGE', - 478: 'SP_PERF_SEL_VALU_COEXEC_WITH_TRANS', - 479: 'SP_PERF_SEL_VALU_SGPR_FWD_BUF_FULL', - 480: 'SP_PERF_SEL_VALU_STALL', - 481: 'SP_PERF_SEL_VALU_STALL_VGPR_NOT_READY', - 482: 'SP_PERF_SEL_VALU_STALL_SGPR_NOT_READY', - 483: 'SP_PERF_SEL_VALU_STALL_VDST_FWD', - 484: 'SP_PERF_SEL_VALU_STALL_SDST_FWD', - 485: 'SP_PERF_SEL_VALU_STALL_DST_STALL', - 486: 'SP_PERF_SEL_VALU_FAST_OP_STALL_VGPR_NOT_READY', - 487: 'SP_PERF_SEL_VGPR_VMEM_RD', - 488: 'SP_PERF_SEL_VGPR_EXP_RD', - 489: 'SP_PERF_SEL_VGPR_SPI_WR', - 490: 'SP_PERF_SEL_VGPR_TDLDS_DATA_WR', - 491: 'SP_PERF_SEL_VGPR_WR', - 492: 'SP_PERF_SEL_VGPR_RD', - 493: 'SP_PERF_SEL_DUMMY_LAST', - 511: 'SQ_PERF_SEL_NONE2', -} -SQ_PERF_SEL_NONE = 0 -SQ_PERF_SEL_ACCUM_PREV = 1 -SQ_PERF_SEL_CYCLES = 2 -SQ_PERF_SEL_BUSY_CYCLES = 3 -SQ_PERF_SEL_WAVES = 4 -SQ_PERF_SEL_WAVES_32 = 5 -SQ_PERF_SEL_WAVES_64 = 6 -SQ_PERF_SEL_LEVEL_WAVES = 7 -SQ_PERF_SEL_ITEMS = 8 -SQ_PERF_SEL_WAVE32_ITEMS = 9 -SQ_PERF_SEL_WAVE64_ITEMS = 10 -SQ_PERF_SEL_PS_QUADS = 11 -SQ_PERF_SEL_EVENTS = 12 -SQ_PERF_SEL_WAVES_EQ_32 = 13 -SQ_PERF_SEL_WAVES_EQ_64 = 14 -SQ_PERF_SEL_WAVES_LT_64 = 15 -SQ_PERF_SEL_WAVES_LT_48 = 16 -SQ_PERF_SEL_WAVES_LT_32 = 17 -SQ_PERF_SEL_WAVES_LT_16 = 18 -SQ_PERF_SEL_WAVES_RESTORED = 19 -SQ_PERF_SEL_WAVES_SAVED = 20 -SQ_PERF_SEL_MSG = 21 -SQ_PERF_SEL_MSG_INTERRUPT = 22 -SQ_PERF_SEL_WAVES_INITIAL_PREFETCH = 23 -SQ_PERF_SEL_WAVE_CYCLES = 24 -SQ_PERF_SEL_WAVE_READY = 25 -SQ_PERF_SEL_WAIT_INST_ANY = 26 -SQ_PERF_SEL_WAIT_INST_VALU = 27 -SQ_PERF_SEL_WAIT_INST_SCA = 28 -SQ_PERF_SEL_WAIT_INST_LDS = 29 -SQ_PERF_SEL_WAIT_INST_TEX = 30 -SQ_PERF_SEL_WAIT_INST_FLAT = 31 -SQ_PERF_SEL_WAIT_INST_VMEM = 32 -SQ_PERF_SEL_WAIT_INST_EXP_GDS = 33 -SQ_PERF_SEL_WAIT_INST_BR_MSG = 34 -SQ_PERF_SEL_WAIT_ANY = 35 -SQ_PERF_SEL_WAIT_CNT_ANY = 36 -SQ_PERF_SEL_WAIT_CNT_VMVS = 37 -SQ_PERF_SEL_WAIT_CNT_LGKM = 38 -SQ_PERF_SEL_WAIT_CNT_EXP = 39 -SQ_PERF_SEL_WAIT_TTRACE = 40 -SQ_PERF_SEL_WAIT_IFETCH = 41 -SQ_PERF_SEL_WAIT_BARRIER = 42 -SQ_PERF_SEL_WAIT_EXP_ALLOC = 43 -SQ_PERF_SEL_WAIT_SLEEP = 44 -SQ_PERF_SEL_WAIT_DELAY_ALU = 45 -SQ_PERF_SEL_WAIT_DEPCTR = 46 -SQ_PERF_SEL_WAIT_OTHER = 47 -SQ_PERF_SEL_INSTS_ALL = 48 -SQ_PERF_SEL_INSTS_BRANCH = 49 -SQ_PERF_SEL_INSTS_CBRANCH_NOT_TAKEN = 50 -SQ_PERF_SEL_INSTS_CBRANCH_TAKEN = 51 -SQ_PERF_SEL_INSTS_CBRANCH_TAKEN_HIT_IS = 52 -SQ_PERF_SEL_INSTS_EXP_GDS = 53 -SQ_PERF_SEL_INSTS_GDS = 54 -SQ_PERF_SEL_INSTS_EXP = 55 -SQ_PERF_SEL_INSTS_FLAT = 56 -SQ_PERF_SEL_INSTS_LDS = 57 -SQ_PERF_SEL_INSTS_SALU = 58 -SQ_PERF_SEL_INSTS_SMEM = 59 -SQ_PERF_SEL_INSTS_SMEM_NORM = 60 -SQ_PERF_SEL_INSTS_SENDMSG = 61 -SQ_PERF_SEL_INSTS_VALU = 62 -SQ_PERF_SEL_INSTS_VALU_TRANS32 = 63 -SQ_PERF_SEL_INSTS_VALU_NO_COEXEC = 64 -SQ_PERF_SEL_INSTS_TEX = 65 -SQ_PERF_SEL_INSTS_TEX_LOAD = 66 -SQ_PERF_SEL_INSTS_TEX_STORE = 67 -SQ_PERF_SEL_INSTS_DELAY_ALU = 68 -SQ_PERF_SEL_INSTS_INTERNAL = 69 -SQ_PERF_SEL_INSTS_WAVE32 = 70 -SQ_PERF_SEL_INSTS_WAVE32_FLAT = 71 -SQ_PERF_SEL_INSTS_WAVE32_LDS = 72 -SQ_PERF_SEL_INSTS_WAVE32_VALU = 73 -SQ_PERF_SEL_WAVE32_INSTS_EXP_GDS = 74 -SQ_PERF_SEL_INSTS_WAVE32_VALU_TRANS32 = 75 -SQ_PERF_SEL_INSTS_WAVE32_VALU_NO_COEXEC = 76 -SQ_PERF_SEL_INSTS_WAVE32_TEX = 77 -SQ_PERF_SEL_INSTS_WAVE32_TEX_LOAD = 78 -SQ_PERF_SEL_INSTS_WAVE32_TEX_STORE = 79 -SQ_PERF_SEL_ITEM_CYCLES_VALU = 80 -SQ_PERF_SEL_VALU_READWRITELANE_CYCLES = 81 -SQ_PERF_SEL_WAVE32_INSTS = 82 -SQ_PERF_SEL_WAVE64_INSTS = 83 -SQ_PERF_SEL_INSTS_VALU_EXEC_SKIPPED = 84 -SQ_PERF_SEL_WAVE64_HALF_SKIP = 85 -SQ_PERF_SEL_INST_LEVEL_EXP = 86 -SQ_PERF_SEL_INST_LEVEL_GDS = 87 -SQ_PERF_SEL_INST_LEVEL_LDS = 88 -SQ_PERF_SEL_INST_LEVEL_SMEM = 89 -SQ_PERF_SEL_INST_LEVEL_TEX_LOAD = 90 -SQ_PERF_SEL_INST_LEVEL_TEX_STORE = 91 -SQ_PERF_SEL_IFETCH_REQS = 92 -SQ_PERF_SEL_IFETCH_LEVEL = 93 -SQ_PERF_SEL_LDS_DIRECT_CMD_FIFO_FULL_STALL = 94 -SQ_PERF_SEL_VALU_SGATHER_STALL = 95 -SQ_PERF_SEL_VALU_FWD_BUFFER_FULL_STALL = 96 -SQ_PERF_SEL_VALU_SGPR_RD_FIFO_FULL_STALL = 97 -SQ_PERF_SEL_VALU_SGATHER_FULL_STALL = 98 -SQ_PERF_SEL_SALU_SGATHER_STALL = 99 -SQ_PERF_SEL_SALU_SGPR_RD_FIFO_FULL_STALL = 100 -SQ_PERF_SEL_SALU_GATHER_FULL_STALL = 101 -SQ_PERF_SEL_SMEM_DCACHE_FIFO_FULL_STALL = 102 -SQ_PERF_SEL_INST_CYCLES_VALU = 103 -SQ_PERF_SEL_INST_CYCLES_VALU_TRANS32 = 104 -SQ_PERF_SEL_INST_CYCLES_VALU_NO_COEXEC = 105 -SQ_PERF_SEL_INST_CYCLES_VMEM = 106 -SQ_PERF_SEL_INST_CYCLES_VMEM_LOAD = 107 -SQ_PERF_SEL_INST_CYCLES_VMEM_STORE = 108 -SQ_PERF_SEL_INST_CYCLES_LDS = 109 -SQ_PERF_SEL_INST_CYCLES_TEX = 110 -SQ_PERF_SEL_INST_CYCLES_FLAT = 111 -SQ_PERF_SEL_INST_CYCLES_EXP_GDS = 112 -SQ_PERF_SEL_INST_CYCLES_EXP = 113 -SQ_PERF_SEL_INST_CYCLES_GDS = 114 -SQ_PERF_SEL_VALU_STARVE = 115 -SQ_PERF_SEL_VMEM_ARB_FIFO_FULL = 116 -SQ_PERF_SEL_MSG_FIFO_FULL_STALL = 117 -SQ_PERF_SEL_EXP_REQ_FIFO_FULL = 118 -SQ_PERF_SEL_VMEM_BUS_ACTIVE = 119 -SQ_PERF_SEL_VMEM_BUS_STALL = 120 -SQ_PERF_SEL_VMEM_BUS_STALL_TA_ADDR_FIFO_FULL = 121 -SQ_PERF_SEL_VMEM_BUS_STALL_TA_CMD_FIFO_FULL = 122 -SQ_PERF_SEL_VMEM_BUS_STALL_LDS_ADDR_FIFO_FULL = 123 -SQ_PERF_SEL_VMEM_BUS_STALL_LDS_CMD_FIFO_FULL = 124 -SQ_PERF_SEL_VMEM_STARVE_TA_ADDR_EMPTY = 125 -SQ_PERF_SEL_VMEM_STARVE_LDS_ADDR_EMPTY = 126 -SQ_PERF_SEL_SALU_PIPE_STALL = 127 -SQ_PERF_SEL_SMEM_DCACHE_RETURN_CYCLES = 128 -SQ_PERF_SEL_MSG_BUS_BUSY = 129 -SQ_PERF_SEL_EXP_REQ_BUS_STALL = 130 -SQ_PERF_SEL_EXP_REQ0_BUS_BUSY = 131 -SQ_PERF_SEL_EXP_REQ1_BUS_BUSY = 132 -SQ_PERF_SEL_EXP_BUS0_BUSY = 133 -SQ_PERF_SEL_EXP_BUS1_BUSY = 134 -SQ_PERF_SEL_INST_CACHE_REQ_STALL = 135 -SQ_PERF_SEL_USER0 = 136 -SQ_PERF_SEL_USER1 = 137 -SQ_PERF_SEL_USER2 = 138 -SQ_PERF_SEL_USER3 = 139 -SQ_PERF_SEL_USER4 = 140 -SQ_PERF_SEL_USER5 = 141 -SQ_PERF_SEL_USER6 = 142 -SQ_PERF_SEL_USER7 = 143 -SQ_PERF_SEL_USER8 = 144 -SQ_PERF_SEL_USER9 = 145 -SQ_PERF_SEL_USER10 = 146 -SQ_PERF_SEL_USER11 = 147 -SQ_PERF_SEL_USER12 = 148 -SQ_PERF_SEL_USER13 = 149 -SQ_PERF_SEL_USER14 = 150 -SQ_PERF_SEL_USER15 = 151 -SQ_PERF_SEL_USER_LEVEL0 = 152 -SQ_PERF_SEL_USER_LEVEL1 = 153 -SQ_PERF_SEL_USER_LEVEL2 = 154 -SQ_PERF_SEL_USER_LEVEL3 = 155 -SQ_PERF_SEL_USER_LEVEL4 = 156 -SQ_PERF_SEL_USER_LEVEL5 = 157 -SQ_PERF_SEL_USER_LEVEL6 = 158 -SQ_PERF_SEL_USER_LEVEL7 = 159 -SQ_PERF_SEL_USER_LEVEL8 = 160 -SQ_PERF_SEL_USER_LEVEL9 = 161 -SQ_PERF_SEL_USER_LEVEL10 = 162 -SQ_PERF_SEL_USER_LEVEL11 = 163 -SQ_PERF_SEL_USER_LEVEL12 = 164 -SQ_PERF_SEL_USER_LEVEL13 = 165 -SQ_PERF_SEL_USER_LEVEL14 = 166 -SQ_PERF_SEL_USER_LEVEL15 = 167 -SQ_PERF_SEL_VALU_RETURN_SDST = 168 -SQ_PERF_SEL_VMEM_VGPR_READ_STALLED_BY_EXPORT = 169 -SQ_PERF_SEL_INSTS_VALU_TRANS = 170 -SQ_PERF_SEL_INSTS_LDS_DIRECT_LOAD = 171 -SQ_PERF_SEL_INSTS_LDS_PARAM_LOAD = 172 -SQ_PERF_SEL_INSTS_WAVE32_LDS_PARAM_LOAD = 173 -SQ_PERF_SEL_INSTS_VALU_ONE_CYCLE_WAVE64 = 174 -SQ_PERF_SEL_INSTS_VALU_VINTERP = 175 -SQ_PERF_SEL_INSTS_VALU_WAVE32_VINTERP = 176 -SQ_PERF_SEL_OVERFLOW_PREV = 177 -SQ_PERF_SEL_INSTS_DUAL_VALU_WAVE32 = 178 -SQ_PERF_SEL_INSTS_VALU_1_PASS = 179 -SQ_PERF_SEL_INSTS_VALU_2_PASS = 180 -SQ_PERF_SEL_INSTS_VALU_4_PASS = 181 -SQ_PERF_SEL_INSTS_VALU_DP = 182 -SQ_PERF_SEL_SP_CONST_CYCLES = 183 -SQ_PERF_SEL_SP_CONST_STALL_CYCLES = 184 -SQ_PERF_SEL_ITEMS_VALU = 185 -SQ_PERF_SEL_ITEMS_MAX_VALU = 186 -SQ_PERF_SEL_ITEM_CYCLES_VMEM = 187 -SQ_PERF_SEL_DUMMY_END = 188 -SQ_PERF_SEL_DUMMY_LAST = 255 -SQC_PERF_SEL_LDS_BANK_CONFLICT = 256 -SQC_PERF_SEL_LDS_ADDR_CONFLICT = 257 -SQC_PERF_SEL_LDS_UNALIGNED_STALL = 258 -SQC_PERF_SEL_LDS_MEM_VIOLATIONS = 259 -SQC_PERF_SEL_LDS_ATOMIC_RETURN = 260 -SQC_PERF_SEL_LDS_IDX_ACTIVE = 261 -SQC_PERF_SEL_LDS_ADDR_STALL = 262 -SQC_PERF_SEL_LDS_ADDR_ACTIVE = 263 -SQC_PERF_SEL_LDS_PC_LDS_WRITE_STALL_TD = 264 -SQC_PERF_SEL_LDS_SPI_VGPR_WRITE_STALL_TD = 265 -SQC_PERF_SEL_LDS_LDS_VGPR_WRITE_STALL = 266 -SQC_PERF_SEL_LDS_FP_ADD_CYCLES = 267 -SQC_PERF_SEL_ICACHE_BUSY_CYCLES = 268 -SQC_PERF_SEL_ICACHE_REQ = 269 -SQC_PERF_SEL_ICACHE_HITS = 270 -SQC_PERF_SEL_ICACHE_MISSES = 271 -SQC_PERF_SEL_ICACHE_MISSES_DUPLICATE = 272 -SQC_PERF_SEL_ICACHE_INVAL_INST = 273 -SQC_PERF_SEL_ICACHE_INVAL_ASYNC = 274 -SQC_PERF_SEL_ICACHE_INFLIGHT_LEVEL = 275 -SQC_PERF_SEL_DCACHE_INFLIGHT_LEVEL = 276 -SQC_PERF_SEL_TC_INFLIGHT_LEVEL = 277 -SQC_PERF_SEL_ICACHE_TC_INFLIGHT_LEVEL = 278 -SQC_PERF_SEL_DCACHE_TC_INFLIGHT_LEVEL = 279 -SQC_PERF_SEL_ICACHE_INPUT_VALID_READYB = 280 -SQC_PERF_SEL_DCACHE_INPUT_VALID_READYB = 281 -SQC_PERF_SEL_TC_REQ = 282 -SQC_PERF_SEL_TC_INST_REQ = 283 -SQC_PERF_SEL_TC_DATA_READ_REQ = 284 -SQC_PERF_SEL_TC_STALL = 285 -SQC_PERF_SEL_TC_STARVE = 286 -SQC_PERF_SEL_ICACHE_INPUT_STALL_ARB_NO_GRANT = 287 -SQC_PERF_SEL_ICACHE_INPUT_STALL_BANK_READYB = 288 -SQC_PERF_SEL_ICACHE_CACHE_STALLED = 289 -SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_MAX = 290 -SQC_PERF_SEL_ICACHE_STALL_OUTXBAR_ARB_NO_GRANT = 291 -SQC_PERF_SEL_DCACHE_BUSY_CYCLES = 292 -SQC_PERF_SEL_DCACHE_REQ = 293 -SQC_PERF_SEL_DCACHE_HITS = 294 -SQC_PERF_SEL_DCACHE_MISSES = 295 -SQC_PERF_SEL_DCACHE_MISSES_DUPLICATE = 296 -SQC_PERF_SEL_DCACHE_INVAL_INST = 297 -SQC_PERF_SEL_DCACHE_INVAL_ASYNC = 298 -SQC_PERF_SEL_DCACHE_HIT_LRU_READ = 299 -SQC_PERF_SEL_DCACHE_INPUT_STALL_ARB_NO_GRANT = 300 -SQC_PERF_SEL_DCACHE_INPUT_STALL_BANK_READYB = 301 -SQC_PERF_SEL_DCACHE_CACHE_STALLED = 302 -SQC_PERF_SEL_DCACHE_CACHE_STALL_INFLIGHT_MAX = 303 -SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT = 304 -SQC_PERF_SEL_DCACHE_STALL_OUTXBAR_ARB_NO_GRANT = 305 -SQC_PERF_SEL_DCACHE_REQ_READ_1 = 306 -SQC_PERF_SEL_DCACHE_REQ_READ_2 = 307 -SQC_PERF_SEL_DCACHE_REQ_READ_4 = 308 -SQC_PERF_SEL_DCACHE_REQ_READ_8 = 309 -SQC_PERF_SEL_DCACHE_REQ_READ_16 = 310 -SQC_PERF_SEL_DCACHE_REQ_ATC_PROBE = 311 -SQC_PERF_SEL_SQ_DCACHE_REQS = 312 -SQC_PERF_SEL_DCACHE_FLAT_REQ = 313 -SQC_PERF_SEL_TD_VGPR_BUSY = 314 -SQC_PERF_SEL_LDS_VGPR_BUSY = 315 -SQC_PERF_SEL_LDS_TD_VGPR_CONF_STALL = 316 -SQC_PERF_SEL_ICACHE_GCR = 317 -SQC_PERF_SEL_ICACHE_GCR_HITS = 318 -SQC_PERF_SEL_DCACHE_GCR = 319 -SQC_PERF_SEL_DCACHE_GCR_HITS = 320 -SQC_PERF_SEL_ICACHE_GCR_INVALIDATE = 321 -SQC_PERF_SEL_DCACHE_GCR_INVALIDATE = 322 -SQC_PERF_SEL_DCACHE_SPI_RETURN_STALL = 323 -SQC_PERF_SEL_DUMMY_LAST = 324 -SP_PERF_SEL_DST_BUF_ALLOC_STALL = 448 -SP_PERF_SEL_DST_BUF_WB_CONF_W_TD_LDS = 449 -SP_PERF_SEL_DST_BUF_WB_CONF_W_SPI = 450 -SP_PERF_SEL_DST_BUF_EVEN_DIRTY = 451 -SP_PERF_SEL_DST_BUF_ODD_DIRTY = 452 -SP_PERF_SEL_SRC_CACHE_HIT_B0 = 453 -SP_PERF_SEL_SRC_CACHE_HIT_B1 = 454 -SP_PERF_SEL_SRC_CACHE_HIT_B2 = 455 -SP_PERF_SEL_SRC_CACHE_HIT_B3 = 456 -SP_PERF_SEL_SRC_CACHE_PROBE_B0 = 457 -SP_PERF_SEL_SRC_CACHE_PROBE_B1 = 458 -SP_PERF_SEL_SRC_CACHE_PROBE_B2 = 459 -SP_PERF_SEL_SRC_CACHE_PROBE_B3 = 460 -SP_PERF_SEL_SRC_CACHE_VGPR_RD_B0 = 461 -SP_PERF_SEL_SRC_CACHE_VGPR_RD_B1 = 462 -SP_PERF_SEL_SRC_CACHE_VGPR_RD_B2 = 463 -SP_PERF_SEL_SRC_CACHE_VGPR_RD_B3 = 464 -SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B0 = 465 -SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B1 = 466 -SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B2 = 467 -SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B3 = 468 -SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B0 = 469 -SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B1 = 470 -SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B2 = 471 -SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B3 = 472 -SP_PERF_SEL_VALU_PENDING_QUEUE_STALL = 473 -SP_PERF_SEL_VALU_OPERAND = 474 -SP_PERF_SEL_VALU_VGPR_OPERAND = 475 -SP_PERF_SEL_VALU_OPERAND_FROM_DST_BUF = 476 -SP_PERF_SEL_VALU_EXEC_MASK_CHANGE = 477 -SP_PERF_SEL_VALU_COEXEC_WITH_TRANS = 478 -SP_PERF_SEL_VALU_SGPR_FWD_BUF_FULL = 479 -SP_PERF_SEL_VALU_STALL = 480 -SP_PERF_SEL_VALU_STALL_VGPR_NOT_READY = 481 -SP_PERF_SEL_VALU_STALL_SGPR_NOT_READY = 482 -SP_PERF_SEL_VALU_STALL_VDST_FWD = 483 -SP_PERF_SEL_VALU_STALL_SDST_FWD = 484 -SP_PERF_SEL_VALU_STALL_DST_STALL = 485 -SP_PERF_SEL_VALU_FAST_OP_STALL_VGPR_NOT_READY = 486 -SP_PERF_SEL_VGPR_VMEM_RD = 487 -SP_PERF_SEL_VGPR_EXP_RD = 488 -SP_PERF_SEL_VGPR_SPI_WR = 489 -SP_PERF_SEL_VGPR_TDLDS_DATA_WR = 490 -SP_PERF_SEL_VGPR_WR = 491 -SP_PERF_SEL_VGPR_RD = 492 -SP_PERF_SEL_DUMMY_LAST = 493 -SQ_PERF_SEL_NONE2 = 511 -SQ_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_ROUND_MODE' -SQ_ROUND_MODE__enumvalues = { - 0: 'SQ_ROUND_NEAREST_EVEN', - 1: 'SQ_ROUND_PLUS_INFINITY', - 2: 'SQ_ROUND_MINUS_INFINITY', - 3: 'SQ_ROUND_TO_ZERO', -} -SQ_ROUND_NEAREST_EVEN = 0 -SQ_ROUND_PLUS_INFINITY = 1 -SQ_ROUND_MINUS_INFINITY = 2 -SQ_ROUND_TO_ZERO = 3 -SQ_ROUND_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_RSRC_BUF_TYPE' -SQ_RSRC_BUF_TYPE__enumvalues = { - 0: 'SQ_RSRC_BUF', - 1: 'SQ_RSRC_BUF_RSVD_1', - 2: 'SQ_RSRC_BUF_RSVD_2', - 3: 'SQ_RSRC_BUF_RSVD_3', -} -SQ_RSRC_BUF = 0 -SQ_RSRC_BUF_RSVD_1 = 1 -SQ_RSRC_BUF_RSVD_2 = 2 -SQ_RSRC_BUF_RSVD_3 = 3 -SQ_RSRC_BUF_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_RSRC_FLAT_TYPE' -SQ_RSRC_FLAT_TYPE__enumvalues = { - 0: 'SQ_RSRC_FLAT_RSVD_0', - 1: 'SQ_RSRC_FLAT', - 2: 'SQ_RSRC_FLAT_RSVD_2', - 3: 'SQ_RSRC_FLAT_RSVD_3', -} -SQ_RSRC_FLAT_RSVD_0 = 0 -SQ_RSRC_FLAT = 1 -SQ_RSRC_FLAT_RSVD_2 = 2 -SQ_RSRC_FLAT_RSVD_3 = 3 -SQ_RSRC_FLAT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_RSRC_IMG_TYPE' -SQ_RSRC_IMG_TYPE__enumvalues = { - 0: 'SQ_RSRC_IMG_RSVD_0', - 1: 'SQ_RSRC_IMG_RSVD_1', - 2: 'SQ_RSRC_IMG_RSVD_2', - 3: 'SQ_RSRC_IMG_RSVD_3', - 4: 'SQ_RSRC_IMG_RSVD_4', - 5: 'SQ_RSRC_IMG_RSVD_5', - 6: 'SQ_RSRC_IMG_RSVD_6', - 7: 'SQ_RSRC_IMG_RSVD_7', - 8: 'SQ_RSRC_IMG_1D', - 9: 'SQ_RSRC_IMG_2D', - 10: 'SQ_RSRC_IMG_3D', - 11: 'SQ_RSRC_IMG_CUBE', - 12: 'SQ_RSRC_IMG_1D_ARRAY', - 13: 'SQ_RSRC_IMG_2D_ARRAY', - 14: 'SQ_RSRC_IMG_2D_MSAA', - 15: 'SQ_RSRC_IMG_2D_MSAA_ARRAY', -} -SQ_RSRC_IMG_RSVD_0 = 0 -SQ_RSRC_IMG_RSVD_1 = 1 -SQ_RSRC_IMG_RSVD_2 = 2 -SQ_RSRC_IMG_RSVD_3 = 3 -SQ_RSRC_IMG_RSVD_4 = 4 -SQ_RSRC_IMG_RSVD_5 = 5 -SQ_RSRC_IMG_RSVD_6 = 6 -SQ_RSRC_IMG_RSVD_7 = 7 -SQ_RSRC_IMG_1D = 8 -SQ_RSRC_IMG_2D = 9 -SQ_RSRC_IMG_3D = 10 -SQ_RSRC_IMG_CUBE = 11 -SQ_RSRC_IMG_1D_ARRAY = 12 -SQ_RSRC_IMG_2D_ARRAY = 13 -SQ_RSRC_IMG_2D_MSAA = 14 -SQ_RSRC_IMG_2D_MSAA_ARRAY = 15 -SQ_RSRC_IMG_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_SEL_XYZW01' -SQ_SEL_XYZW01__enumvalues = { - 0: 'SQ_SEL_0', - 1: 'SQ_SEL_1', - 2: 'SQ_SEL_N_BC_1', - 3: 'SQ_SEL_RESERVED_1', - 4: 'SQ_SEL_X', - 5: 'SQ_SEL_Y', - 6: 'SQ_SEL_Z', - 7: 'SQ_SEL_W', -} -SQ_SEL_0 = 0 -SQ_SEL_1 = 1 -SQ_SEL_N_BC_1 = 2 -SQ_SEL_RESERVED_1 = 3 -SQ_SEL_X = 4 -SQ_SEL_Y = 5 -SQ_SEL_Z = 6 -SQ_SEL_W = 7 -SQ_SEL_XYZW01 = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_ANISO_RATIO' -SQ_TEX_ANISO_RATIO__enumvalues = { - 0: 'SQ_TEX_ANISO_RATIO_1', - 1: 'SQ_TEX_ANISO_RATIO_2', - 2: 'SQ_TEX_ANISO_RATIO_4', - 3: 'SQ_TEX_ANISO_RATIO_8', - 4: 'SQ_TEX_ANISO_RATIO_16', -} -SQ_TEX_ANISO_RATIO_1 = 0 -SQ_TEX_ANISO_RATIO_2 = 1 -SQ_TEX_ANISO_RATIO_4 = 2 -SQ_TEX_ANISO_RATIO_8 = 3 -SQ_TEX_ANISO_RATIO_16 = 4 -SQ_TEX_ANISO_RATIO = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_BORDER_COLOR' -SQ_TEX_BORDER_COLOR__enumvalues = { - 0: 'SQ_TEX_BORDER_COLOR_TRANS_BLACK', - 1: 'SQ_TEX_BORDER_COLOR_OPAQUE_BLACK', - 2: 'SQ_TEX_BORDER_COLOR_OPAQUE_WHITE', - 3: 'SQ_TEX_BORDER_COLOR_REGISTER', -} -SQ_TEX_BORDER_COLOR_TRANS_BLACK = 0 -SQ_TEX_BORDER_COLOR_OPAQUE_BLACK = 1 -SQ_TEX_BORDER_COLOR_OPAQUE_WHITE = 2 -SQ_TEX_BORDER_COLOR_REGISTER = 3 -SQ_TEX_BORDER_COLOR = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_CLAMP' -SQ_TEX_CLAMP__enumvalues = { - 0: 'SQ_TEX_WRAP', - 1: 'SQ_TEX_MIRROR', - 2: 'SQ_TEX_CLAMP_LAST_TEXEL', - 3: 'SQ_TEX_MIRROR_ONCE_LAST_TEXEL', - 4: 'SQ_TEX_CLAMP_HALF_BORDER', - 5: 'SQ_TEX_MIRROR_ONCE_HALF_BORDER', - 6: 'SQ_TEX_CLAMP_BORDER', - 7: 'SQ_TEX_MIRROR_ONCE_BORDER', -} -SQ_TEX_WRAP = 0 -SQ_TEX_MIRROR = 1 -SQ_TEX_CLAMP_LAST_TEXEL = 2 -SQ_TEX_MIRROR_ONCE_LAST_TEXEL = 3 -SQ_TEX_CLAMP_HALF_BORDER = 4 -SQ_TEX_MIRROR_ONCE_HALF_BORDER = 5 -SQ_TEX_CLAMP_BORDER = 6 -SQ_TEX_MIRROR_ONCE_BORDER = 7 -SQ_TEX_CLAMP = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_DEPTH_COMPARE' -SQ_TEX_DEPTH_COMPARE__enumvalues = { - 0: 'SQ_TEX_DEPTH_COMPARE_NEVER', - 1: 'SQ_TEX_DEPTH_COMPARE_LESS', - 2: 'SQ_TEX_DEPTH_COMPARE_EQUAL', - 3: 'SQ_TEX_DEPTH_COMPARE_LESSEQUAL', - 4: 'SQ_TEX_DEPTH_COMPARE_GREATER', - 5: 'SQ_TEX_DEPTH_COMPARE_NOTEQUAL', - 6: 'SQ_TEX_DEPTH_COMPARE_GREATEREQUAL', - 7: 'SQ_TEX_DEPTH_COMPARE_ALWAYS', -} -SQ_TEX_DEPTH_COMPARE_NEVER = 0 -SQ_TEX_DEPTH_COMPARE_LESS = 1 -SQ_TEX_DEPTH_COMPARE_EQUAL = 2 -SQ_TEX_DEPTH_COMPARE_LESSEQUAL = 3 -SQ_TEX_DEPTH_COMPARE_GREATER = 4 -SQ_TEX_DEPTH_COMPARE_NOTEQUAL = 5 -SQ_TEX_DEPTH_COMPARE_GREATEREQUAL = 6 -SQ_TEX_DEPTH_COMPARE_ALWAYS = 7 -SQ_TEX_DEPTH_COMPARE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_MIP_FILTER' -SQ_TEX_MIP_FILTER__enumvalues = { - 0: 'SQ_TEX_MIP_FILTER_NONE', - 1: 'SQ_TEX_MIP_FILTER_POINT', - 2: 'SQ_TEX_MIP_FILTER_LINEAR', - 3: 'SQ_TEX_MIP_FILTER_POINT_ANISO_ADJ', -} -SQ_TEX_MIP_FILTER_NONE = 0 -SQ_TEX_MIP_FILTER_POINT = 1 -SQ_TEX_MIP_FILTER_LINEAR = 2 -SQ_TEX_MIP_FILTER_POINT_ANISO_ADJ = 3 -SQ_TEX_MIP_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_XY_FILTER' -SQ_TEX_XY_FILTER__enumvalues = { - 0: 'SQ_TEX_XY_FILTER_POINT', - 1: 'SQ_TEX_XY_FILTER_BILINEAR', - 2: 'SQ_TEX_XY_FILTER_ANISO_POINT', - 3: 'SQ_TEX_XY_FILTER_ANISO_BILINEAR', -} -SQ_TEX_XY_FILTER_POINT = 0 -SQ_TEX_XY_FILTER_BILINEAR = 1 -SQ_TEX_XY_FILTER_ANISO_POINT = 2 -SQ_TEX_XY_FILTER_ANISO_BILINEAR = 3 -SQ_TEX_XY_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_Z_FILTER' -SQ_TEX_Z_FILTER__enumvalues = { - 0: 'SQ_TEX_Z_FILTER_NONE', - 1: 'SQ_TEX_Z_FILTER_POINT', - 2: 'SQ_TEX_Z_FILTER_LINEAR', -} -SQ_TEX_Z_FILTER_NONE = 0 -SQ_TEX_Z_FILTER_POINT = 1 -SQ_TEX_Z_FILTER_LINEAR = 2 -SQ_TEX_Z_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_MODE' -SQ_TT_MODE__enumvalues = { - 0: 'SQ_TT_MODE_OFF', - 1: 'SQ_TT_MODE_ON', - 2: 'SQ_TT_MODE_GLOBAL', - 3: 'SQ_TT_MODE_DETAIL', -} -SQ_TT_MODE_OFF = 0 -SQ_TT_MODE_ON = 1 -SQ_TT_MODE_GLOBAL = 2 -SQ_TT_MODE_DETAIL = 3 -SQ_TT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_RT_FREQ' -SQ_TT_RT_FREQ__enumvalues = { - 0: 'SQ_TT_RT_FREQ_NEVER', - 1: 'SQ_TT_RT_FREQ_1024_CLK', - 2: 'SQ_TT_RT_FREQ_4096_CLK', -} -SQ_TT_RT_FREQ_NEVER = 0 -SQ_TT_RT_FREQ_1024_CLK = 1 -SQ_TT_RT_FREQ_4096_CLK = 2 -SQ_TT_RT_FREQ = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_TOKEN_MASK_INST_EXCLUDE' -SQ_TT_TOKEN_MASK_INST_EXCLUDE__enumvalues = { - 1: 'SQ_TT_INST_EXCLUDE_VMEM_OTHER_SIMD_BIT', - 2: 'SQ_TT_INST_EXCLUDE_EXPGNT234_BIT', -} -SQ_TT_INST_EXCLUDE_VMEM_OTHER_SIMD_BIT = 1 -SQ_TT_INST_EXCLUDE_EXPGNT234_BIT = 2 -SQ_TT_TOKEN_MASK_INST_EXCLUDE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_TOKEN_MASK_INST_EXCLUDE_SHIFT' -SQ_TT_TOKEN_MASK_INST_EXCLUDE_SHIFT__enumvalues = { - 0: 'SQ_TT_INST_EXCLUDE_VMEM_OTHER_SIMD_SHIFT', - 1: 'SQ_TT_INST_EXCLUDE_EXPGNT234_SHIFT', -} -SQ_TT_INST_EXCLUDE_VMEM_OTHER_SIMD_SHIFT = 0 -SQ_TT_INST_EXCLUDE_EXPGNT234_SHIFT = 1 -SQ_TT_TOKEN_MASK_INST_EXCLUDE_SHIFT = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_TOKEN_MASK_REG_EXCLUDE' -SQ_TT_TOKEN_MASK_REG_EXCLUDE__enumvalues = { - 1: 'SQ_TT_REG_EXCLUDE_USER_DATA_BIT', - 2: 'SQ_TT_REG_EXCLUDE_CP_ME_MC_RADDR_BIT', - 4: 'SQ_TT_REG_EXCLUDE_GRBM_COMPUTE_EXCLUDE_BIT', -} -SQ_TT_REG_EXCLUDE_USER_DATA_BIT = 1 -SQ_TT_REG_EXCLUDE_CP_ME_MC_RADDR_BIT = 2 -SQ_TT_REG_EXCLUDE_GRBM_COMPUTE_EXCLUDE_BIT = 4 -SQ_TT_TOKEN_MASK_REG_EXCLUDE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_TOKEN_MASK_REG_EXCLUDE_SHIFT' -SQ_TT_TOKEN_MASK_REG_EXCLUDE_SHIFT__enumvalues = { - 0: 'SQ_TT_REG_EXCLUDE_USER_DATA_SHIFT', - 1: 'SQ_TT_REG_EXCLUDE_CP_ME_MC_RADDR_SHIFT', - 2: 'SQ_TT_REG_EXCLUDE_GRBM_COMPUTE_EXCLUDE_SHIFT', -} -SQ_TT_REG_EXCLUDE_USER_DATA_SHIFT = 0 -SQ_TT_REG_EXCLUDE_CP_ME_MC_RADDR_SHIFT = 1 -SQ_TT_REG_EXCLUDE_GRBM_COMPUTE_EXCLUDE_SHIFT = 2 -SQ_TT_TOKEN_MASK_REG_EXCLUDE_SHIFT = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_TOKEN_MASK_REG_INCLUDE' -SQ_TT_TOKEN_MASK_REG_INCLUDE__enumvalues = { - 1: 'SQ_TT_TOKEN_MASK_SQDEC_BIT', - 2: 'SQ_TT_TOKEN_MASK_SHDEC_BIT', - 4: 'SQ_TT_TOKEN_MASK_GFXUDEC_BIT', - 8: 'SQ_TT_TOKEN_MASK_COMP_BIT', - 16: 'SQ_TT_TOKEN_MASK_CONTEXT_BIT', - 32: 'SQ_TT_TOKEN_MASK_CONFIG_BIT', - 64: 'SQ_TT_TOKEN_MASK_ALL_BIT', - 128: 'SQ_TT_TOKEN_MASK_RSVD_BIT', -} -SQ_TT_TOKEN_MASK_SQDEC_BIT = 1 -SQ_TT_TOKEN_MASK_SHDEC_BIT = 2 -SQ_TT_TOKEN_MASK_GFXUDEC_BIT = 4 -SQ_TT_TOKEN_MASK_COMP_BIT = 8 -SQ_TT_TOKEN_MASK_CONTEXT_BIT = 16 -SQ_TT_TOKEN_MASK_CONFIG_BIT = 32 -SQ_TT_TOKEN_MASK_ALL_BIT = 64 -SQ_TT_TOKEN_MASK_RSVD_BIT = 128 -SQ_TT_TOKEN_MASK_REG_INCLUDE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_TOKEN_MASK_REG_INCLUDE_SHIFT' -SQ_TT_TOKEN_MASK_REG_INCLUDE_SHIFT__enumvalues = { - 0: 'SQ_TT_TOKEN_MASK_SQDEC_SHIFT', - 1: 'SQ_TT_TOKEN_MASK_SHDEC_SHIFT', - 2: 'SQ_TT_TOKEN_MASK_GFXUDEC_SHIFT', - 3: 'SQ_TT_TOKEN_MASK_COMP_SHIFT', - 4: 'SQ_TT_TOKEN_MASK_CONTEXT_SHIFT', - 5: 'SQ_TT_TOKEN_MASK_CONFIG_SHIFT', - 6: 'SQ_TT_TOKEN_MASK_ALL_SHIFT', - 7: 'SQ_TT_TOKEN_MASK_RSVD_SHIFT', -} -SQ_TT_TOKEN_MASK_SQDEC_SHIFT = 0 -SQ_TT_TOKEN_MASK_SHDEC_SHIFT = 1 -SQ_TT_TOKEN_MASK_GFXUDEC_SHIFT = 2 -SQ_TT_TOKEN_MASK_COMP_SHIFT = 3 -SQ_TT_TOKEN_MASK_CONTEXT_SHIFT = 4 -SQ_TT_TOKEN_MASK_CONFIG_SHIFT = 5 -SQ_TT_TOKEN_MASK_ALL_SHIFT = 6 -SQ_TT_TOKEN_MASK_RSVD_SHIFT = 7 -SQ_TT_TOKEN_MASK_REG_INCLUDE_SHIFT = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_TOKEN_MASK_TOKEN_EXCLUDE_SHIFT' -SQ_TT_TOKEN_MASK_TOKEN_EXCLUDE_SHIFT__enumvalues = { - 0: 'SQ_TT_TOKEN_EXCLUDE_VMEMEXEC_SHIFT', - 1: 'SQ_TT_TOKEN_EXCLUDE_ALUEXEC_SHIFT', - 2: 'SQ_TT_TOKEN_EXCLUDE_VALUINST_SHIFT', - 3: 'SQ_TT_TOKEN_EXCLUDE_WAVERDY_SHIFT', - 4: 'SQ_TT_TOKEN_EXCLUDE_WAVESTARTEND_SHIFT', - 5: 'SQ_TT_TOKEN_EXCLUDE_IMMEDIATE_SHIFT', - 6: 'SQ_TT_TOKEN_EXCLUDE_REG_SHIFT', - 7: 'SQ_TT_TOKEN_EXCLUDE_EVENT_SHIFT', - 8: 'SQ_TT_TOKEN_EXCLUDE_INST_SHIFT', - 9: 'SQ_TT_TOKEN_EXCLUDE_UTILCTR_SHIFT', - 10: 'SQ_TT_TOKEN_EXCLUDE_WAVEALLOC_SHIFT', - 11: 'SQ_TT_TOKEN_EXCLUDE_PERF_SHIFT', -} -SQ_TT_TOKEN_EXCLUDE_VMEMEXEC_SHIFT = 0 -SQ_TT_TOKEN_EXCLUDE_ALUEXEC_SHIFT = 1 -SQ_TT_TOKEN_EXCLUDE_VALUINST_SHIFT = 2 -SQ_TT_TOKEN_EXCLUDE_WAVERDY_SHIFT = 3 -SQ_TT_TOKEN_EXCLUDE_WAVESTARTEND_SHIFT = 4 -SQ_TT_TOKEN_EXCLUDE_IMMEDIATE_SHIFT = 5 -SQ_TT_TOKEN_EXCLUDE_REG_SHIFT = 6 -SQ_TT_TOKEN_EXCLUDE_EVENT_SHIFT = 7 -SQ_TT_TOKEN_EXCLUDE_INST_SHIFT = 8 -SQ_TT_TOKEN_EXCLUDE_UTILCTR_SHIFT = 9 -SQ_TT_TOKEN_EXCLUDE_WAVEALLOC_SHIFT = 10 -SQ_TT_TOKEN_EXCLUDE_PERF_SHIFT = 11 -SQ_TT_TOKEN_MASK_TOKEN_EXCLUDE_SHIFT = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_UTIL_TIMER' -SQ_TT_UTIL_TIMER__enumvalues = { - 0: 'SQ_TT_UTIL_TIMER_100_CLK', - 1: 'SQ_TT_UTIL_TIMER_250_CLK', -} -SQ_TT_UTIL_TIMER_100_CLK = 0 -SQ_TT_UTIL_TIMER_250_CLK = 1 -SQ_TT_UTIL_TIMER = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_WAVESTART_MODE' -SQ_TT_WAVESTART_MODE__enumvalues = { - 0: 'SQ_TT_WAVESTART_MODE_SHORT', - 1: 'SQ_TT_WAVESTART_MODE_ALLOC', - 2: 'SQ_TT_WAVESTART_MODE_PBB_ID', -} -SQ_TT_WAVESTART_MODE_SHORT = 0 -SQ_TT_WAVESTART_MODE_ALLOC = 1 -SQ_TT_WAVESTART_MODE_PBB_ID = 2 -SQ_TT_WAVESTART_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_WTYPE_INCLUDE' -SQ_TT_WTYPE_INCLUDE__enumvalues = { - 1: 'SQ_TT_WTYPE_INCLUDE_PS_BIT', - 2: 'SQ_TT_WTYPE_INCLUDE_RSVD0_BIT', - 4: 'SQ_TT_WTYPE_INCLUDE_GS_BIT', - 8: 'SQ_TT_WTYPE_INCLUDE_RSVD1_BIT', - 16: 'SQ_TT_WTYPE_INCLUDE_HS_BIT', - 32: 'SQ_TT_WTYPE_INCLUDE_RSVD2_BIT', - 64: 'SQ_TT_WTYPE_INCLUDE_CS_BIT', -} -SQ_TT_WTYPE_INCLUDE_PS_BIT = 1 -SQ_TT_WTYPE_INCLUDE_RSVD0_BIT = 2 -SQ_TT_WTYPE_INCLUDE_GS_BIT = 4 -SQ_TT_WTYPE_INCLUDE_RSVD1_BIT = 8 -SQ_TT_WTYPE_INCLUDE_HS_BIT = 16 -SQ_TT_WTYPE_INCLUDE_RSVD2_BIT = 32 -SQ_TT_WTYPE_INCLUDE_CS_BIT = 64 -SQ_TT_WTYPE_INCLUDE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_WTYPE_INCLUDE_SHIFT' -SQ_TT_WTYPE_INCLUDE_SHIFT__enumvalues = { - 0: 'SQ_TT_WTYPE_INCLUDE_PS_SHIFT', - 1: 'SQ_TT_WTYPE_INCLUDE_RSVD0_SHIFT', - 2: 'SQ_TT_WTYPE_INCLUDE_GS_SHIFT', - 3: 'SQ_TT_WTYPE_INCLUDE_RSVD1_SHIFT', - 4: 'SQ_TT_WTYPE_INCLUDE_HS_SHIFT', - 5: 'SQ_TT_WTYPE_INCLUDE_RSVD2_SHIFT', - 6: 'SQ_TT_WTYPE_INCLUDE_CS_SHIFT', -} -SQ_TT_WTYPE_INCLUDE_PS_SHIFT = 0 -SQ_TT_WTYPE_INCLUDE_RSVD0_SHIFT = 1 -SQ_TT_WTYPE_INCLUDE_GS_SHIFT = 2 -SQ_TT_WTYPE_INCLUDE_RSVD1_SHIFT = 3 -SQ_TT_WTYPE_INCLUDE_HS_SHIFT = 4 -SQ_TT_WTYPE_INCLUDE_RSVD2_SHIFT = 5 -SQ_TT_WTYPE_INCLUDE_CS_SHIFT = 6 -SQ_TT_WTYPE_INCLUDE_SHIFT = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WATCH_MODES' -SQ_WATCH_MODES__enumvalues = { - 0: 'SQ_WATCH_MODE_READ', - 1: 'SQ_WATCH_MODE_NONREAD', - 2: 'SQ_WATCH_MODE_ATOMIC', - 3: 'SQ_WATCH_MODE_ALL', -} -SQ_WATCH_MODE_READ = 0 -SQ_WATCH_MODE_NONREAD = 1 -SQ_WATCH_MODE_ATOMIC = 2 -SQ_WATCH_MODE_ALL = 3 -SQ_WATCH_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WAVE_FWD_PROG_INTERVAL' -SQ_WAVE_FWD_PROG_INTERVAL__enumvalues = { - 0: 'SQ_WAVE_FWD_PROG_INTERVAL_NEVER', - 1: 'SQ_WAVE_FWD_PROG_INTERVAL_256', - 2: 'SQ_WAVE_FWD_PROG_INTERVAL_1024', - 3: 'SQ_WAVE_FWD_PROG_INTERVAL_4096', -} -SQ_WAVE_FWD_PROG_INTERVAL_NEVER = 0 -SQ_WAVE_FWD_PROG_INTERVAL_256 = 1 -SQ_WAVE_FWD_PROG_INTERVAL_1024 = 2 -SQ_WAVE_FWD_PROG_INTERVAL_4096 = 3 -SQ_WAVE_FWD_PROG_INTERVAL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WAVE_IB_ECC_ST' -SQ_WAVE_IB_ECC_ST__enumvalues = { - 0: 'SQ_WAVE_IB_ECC_CLEAN', - 1: 'SQ_WAVE_IB_ECC_ERR_CONTINUE', - 2: 'SQ_WAVE_IB_ECC_ERR_HALT', - 3: 'SQ_WAVE_IB_ECC_WITH_ERR_MSG', -} -SQ_WAVE_IB_ECC_CLEAN = 0 -SQ_WAVE_IB_ECC_ERR_CONTINUE = 1 -SQ_WAVE_IB_ECC_ERR_HALT = 2 -SQ_WAVE_IB_ECC_WITH_ERR_MSG = 3 -SQ_WAVE_IB_ECC_ST = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WAVE_SCHED_MODES' -SQ_WAVE_SCHED_MODES__enumvalues = { - 0: 'SQ_WAVE_SCHED_MODE_NORMAL', - 1: 'SQ_WAVE_SCHED_MODE_EXPERT', - 2: 'SQ_WAVE_SCHED_MODE_DISABLE_VA_VDST', -} -SQ_WAVE_SCHED_MODE_NORMAL = 0 -SQ_WAVE_SCHED_MODE_EXPERT = 1 -SQ_WAVE_SCHED_MODE_DISABLE_VA_VDST = 2 -SQ_WAVE_SCHED_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WAVE_TYPE' -SQ_WAVE_TYPE__enumvalues = { - 0: 'SQ_WAVE_TYPE_PS', - 1: 'SQ_WAVE_TYPE_RSVD0', - 2: 'SQ_WAVE_TYPE_GS', - 3: 'SQ_WAVE_TYPE_RSVD1', - 4: 'SQ_WAVE_TYPE_HS', - 5: 'SQ_WAVE_TYPE_RSVD2', - 6: 'SQ_WAVE_TYPE_CS', - 7: 'SQ_WAVE_TYPE_PS1', - 8: 'SQ_WAVE_TYPE_PS2', - 9: 'SQ_WAVE_TYPE_PS3', -} -SQ_WAVE_TYPE_PS = 0 -SQ_WAVE_TYPE_RSVD0 = 1 -SQ_WAVE_TYPE_GS = 2 -SQ_WAVE_TYPE_RSVD1 = 3 -SQ_WAVE_TYPE_HS = 4 -SQ_WAVE_TYPE_RSVD2 = 5 -SQ_WAVE_TYPE_CS = 6 -SQ_WAVE_TYPE_PS1 = 7 -SQ_WAVE_TYPE_PS2 = 8 -SQ_WAVE_TYPE_PS3 = 9 -SQ_WAVE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CSCNTL_TYPE' -CSCNTL_TYPE__enumvalues = { - 0: 'CSCNTL_TYPE_TG', - 1: 'CSCNTL_TYPE_STATE', - 2: 'CSCNTL_TYPE_EVENT', - 3: 'CSCNTL_TYPE_PRIVATE', -} -CSCNTL_TYPE_TG = 0 -CSCNTL_TYPE_STATE = 1 -CSCNTL_TYPE_EVENT = 2 -CSCNTL_TYPE_PRIVATE = 3 -CSCNTL_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CSDATA_TYPE' -CSDATA_TYPE__enumvalues = { - 0: 'CSDATA_TYPE_TG', - 1: 'CSDATA_TYPE_STATE', - 2: 'CSDATA_TYPE_EVENT', - 3: 'CSDATA_TYPE_PRIVATE', -} -CSDATA_TYPE_TG = 0 -CSDATA_TYPE_STATE = 1 -CSDATA_TYPE_EVENT = 2 -CSDATA_TYPE_PRIVATE = 3 -CSDATA_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'GE1_PERFCOUNT_SELECT' -GE1_PERFCOUNT_SELECT__enumvalues = { - 0: 'ge1_assembler_busy', - 1: 'ge1_assembler_stalled', - 2: 'ge1_dma_busy', - 3: 'ge1_dma_lat_bin_0', - 4: 'ge1_dma_lat_bin_1', - 5: 'ge1_dma_lat_bin_2', - 6: 'ge1_dma_lat_bin_3', - 7: 'ge1_dma_lat_bin_4', - 8: 'ge1_dma_lat_bin_5', - 9: 'ge1_dma_lat_bin_6', - 10: 'ge1_dma_lat_bin_7', - 11: 'ge1_dma_return_cl0', - 12: 'ge1_dma_return_cl1', - 13: 'ge1_dma_utcl1_consecutive_retry_event', - 14: 'ge1_dma_utcl1_request_event', - 15: 'ge1_dma_utcl1_retry_event', - 16: 'ge1_dma_utcl1_stall_event', - 17: 'ge1_dma_utcl1_stall_utcl2_event', - 18: 'ge1_dma_utcl1_translation_hit_event', - 19: 'ge1_dma_utcl1_translation_miss_event', - 20: 'ge1_assembler_dma_starved', - 21: 'ge1_rbiu_di_fifo_stalled_p0', - 22: 'ge1_rbiu_di_fifo_starved_p0', - 23: 'ge1_rbiu_dr_fifo_stalled_p0', - 24: 'ge1_rbiu_dr_fifo_starved_p0', - 25: 'ge1_sclk_reg_vld', - 26: 'ge1_stat_busy', - 27: 'ge1_stat_no_dma_busy', - 28: 'ge1_pipe0_to_pipe1', - 29: 'ge1_pipe1_to_pipe0', - 30: 'ge1_dma_return_size_cl0', - 31: 'ge1_dma_return_size_cl1', - 32: 'ge1_small_draws_one_instance', - 33: 'ge1_sclk_input_vld', - 34: 'ge1_prim_group_limit_hit', - 35: 'ge1_unopt_multi_instance_draws', - 36: 'ge1_rbiu_di_fifo_stalled_p1', - 37: 'ge1_rbiu_di_fifo_starved_p1', - 38: 'ge1_rbiu_dr_fifo_stalled_p1', - 39: 'ge1_rbiu_dr_fifo_starved_p1', -} -ge1_assembler_busy = 0 -ge1_assembler_stalled = 1 -ge1_dma_busy = 2 -ge1_dma_lat_bin_0 = 3 -ge1_dma_lat_bin_1 = 4 -ge1_dma_lat_bin_2 = 5 -ge1_dma_lat_bin_3 = 6 -ge1_dma_lat_bin_4 = 7 -ge1_dma_lat_bin_5 = 8 -ge1_dma_lat_bin_6 = 9 -ge1_dma_lat_bin_7 = 10 -ge1_dma_return_cl0 = 11 -ge1_dma_return_cl1 = 12 -ge1_dma_utcl1_consecutive_retry_event = 13 -ge1_dma_utcl1_request_event = 14 -ge1_dma_utcl1_retry_event = 15 -ge1_dma_utcl1_stall_event = 16 -ge1_dma_utcl1_stall_utcl2_event = 17 -ge1_dma_utcl1_translation_hit_event = 18 -ge1_dma_utcl1_translation_miss_event = 19 -ge1_assembler_dma_starved = 20 -ge1_rbiu_di_fifo_stalled_p0 = 21 -ge1_rbiu_di_fifo_starved_p0 = 22 -ge1_rbiu_dr_fifo_stalled_p0 = 23 -ge1_rbiu_dr_fifo_starved_p0 = 24 -ge1_sclk_reg_vld = 25 -ge1_stat_busy = 26 -ge1_stat_no_dma_busy = 27 -ge1_pipe0_to_pipe1 = 28 -ge1_pipe1_to_pipe0 = 29 -ge1_dma_return_size_cl0 = 30 -ge1_dma_return_size_cl1 = 31 -ge1_small_draws_one_instance = 32 -ge1_sclk_input_vld = 33 -ge1_prim_group_limit_hit = 34 -ge1_unopt_multi_instance_draws = 35 -ge1_rbiu_di_fifo_stalled_p1 = 36 -ge1_rbiu_di_fifo_starved_p1 = 37 -ge1_rbiu_dr_fifo_stalled_p1 = 38 -ge1_rbiu_dr_fifo_starved_p1 = 39 -GE1_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'GE2_DIST_PERFCOUNT_SELECT' -GE2_DIST_PERFCOUNT_SELECT__enumvalues = { - 0: 'ge_dist_hs_done', - 1: 'ge_dist_hs_done_latency_se0', - 2: 'ge_dist_hs_done_latency_se1', - 3: 'ge_dist_hs_done_latency_se2', - 4: 'ge_dist_hs_done_latency_se3', - 5: 'ge_dist_hs_done_latency_se4', - 6: 'ge_dist_hs_done_latency_se5', - 7: 'ge_dist_hs_done_latency_se6', - 8: 'ge_dist_hs_done_latency_se7', - 9: 'ge_dist_inside_tf_bin_0', - 10: 'ge_dist_inside_tf_bin_1', - 11: 'ge_dist_inside_tf_bin_2', - 12: 'ge_dist_inside_tf_bin_3', - 13: 'ge_dist_inside_tf_bin_4', - 14: 'ge_dist_inside_tf_bin_5', - 15: 'ge_dist_inside_tf_bin_6', - 16: 'ge_dist_inside_tf_bin_7', - 17: 'ge_dist_inside_tf_bin_8', - 18: 'ge_dist_null_patch', - 19: 'ge_dist_sclk_core_vld', - 20: 'ge_dist_sclk_wd_te11_vld', - 21: 'ge_dist_tfreq_lat_bin_0', - 22: 'ge_dist_tfreq_lat_bin_1', - 23: 'ge_dist_tfreq_lat_bin_2', - 24: 'ge_dist_tfreq_lat_bin_3', - 25: 'ge_dist_tfreq_lat_bin_4', - 26: 'ge_dist_tfreq_lat_bin_5', - 27: 'ge_dist_tfreq_lat_bin_6', - 28: 'ge_dist_tfreq_lat_bin_7', - 29: 'ge_dist_tfreq_utcl1_consecutive_retry_event', - 30: 'ge_dist_tfreq_utcl1_request_event', - 31: 'ge_dist_tfreq_utcl1_retry_event', - 32: 'ge_dist_tfreq_utcl1_stall_event', - 33: 'ge_dist_tfreq_utcl1_stall_utcl2_event', - 34: 'ge_dist_tfreq_utcl1_translation_hit_event', - 35: 'ge_dist_tfreq_utcl1_translation_miss_event', - 36: 'ge_dist_vs_pc_stall', - 37: 'ge_dist_pc_feorder_fifo_full', - 38: 'ge_dist_pc_ge_manager_busy', - 39: 'ge_dist_pc_req_stall_se0', - 40: 'ge_dist_pc_req_stall_se1', - 41: 'ge_dist_pc_req_stall_se2', - 42: 'ge_dist_pc_req_stall_se3', - 43: 'ge_dist_pc_req_stall_se4', - 44: 'ge_dist_pc_req_stall_se5', - 45: 'ge_dist_pc_req_stall_se6', - 46: 'ge_dist_pc_req_stall_se7', - 47: 'ge_dist_pc_space_zero', - 48: 'ge_dist_sclk_input_vld', - 49: 'ge_dist_reserved', - 50: 'ge_dist_wd_te11_busy', - 51: 'ge_dist_te11_starved', - 52: 'ge_dist_switch_mode_stall', - 53: 'ge_all_tf_eq', - 54: 'ge_all_tf2', - 55: 'ge_all_tf3', - 56: 'ge_all_tf4', - 57: 'ge_all_tf5', - 58: 'ge_all_tf6', - 59: 'ge_se0_te11_starved_on_hs_done', - 60: 'ge_se1_te11_starved_on_hs_done', - 61: 'ge_se2_te11_starved_on_hs_done', - 62: 'ge_se3_te11_starved_on_hs_done', - 63: 'ge_se4_te11_starved_on_hs_done', - 64: 'ge_se5_te11_starved_on_hs_done', - 65: 'ge_se6_te11_starved_on_hs_done', - 66: 'ge_se7_te11_starved_on_hs_done', - 67: 'ge_dist_op_fifo_full_starve', - 68: 'ge_dist_hs_done_se0', - 69: 'ge_dist_hs_done_se1', - 70: 'ge_dist_hs_done_se2', - 71: 'ge_dist_hs_done_se3', - 72: 'ge_dist_hs_done_se4', - 73: 'ge_dist_hs_done_se5', - 74: 'ge_dist_hs_done_se6', - 75: 'ge_dist_hs_done_se7', - 76: 'ge_dist_hs_done_latency', - 77: 'ge_dist_distributer_busy', - 78: 'ge_tf_ret_data_stalling_hs_done', - 79: 'ge_num_of_no_dist_patches', - 80: 'ge_num_of_donut_dist_patches', - 81: 'ge_num_of_patch_dist_patches', - 82: 'ge_num_of_se_switches_due_to_patch_accum', - 83: 'ge_num_of_se_switches_due_to_donut', - 84: 'ge_num_of_se_switches_due_to_trap', - 85: 'ge_num_of_hs_alloc_events', - 86: 'ge_agm_gcr_req', - 87: 'ge_agm_gcr_tag_stall', - 88: 'ge_agm_gcr_crd_stall', - 89: 'ge_agm_gcr_stall', - 90: 'ge_agm_gcr_latency', - 91: 'ge_distclk_vld', -} -ge_dist_hs_done = 0 -ge_dist_hs_done_latency_se0 = 1 -ge_dist_hs_done_latency_se1 = 2 -ge_dist_hs_done_latency_se2 = 3 -ge_dist_hs_done_latency_se3 = 4 -ge_dist_hs_done_latency_se4 = 5 -ge_dist_hs_done_latency_se5 = 6 -ge_dist_hs_done_latency_se6 = 7 -ge_dist_hs_done_latency_se7 = 8 -ge_dist_inside_tf_bin_0 = 9 -ge_dist_inside_tf_bin_1 = 10 -ge_dist_inside_tf_bin_2 = 11 -ge_dist_inside_tf_bin_3 = 12 -ge_dist_inside_tf_bin_4 = 13 -ge_dist_inside_tf_bin_5 = 14 -ge_dist_inside_tf_bin_6 = 15 -ge_dist_inside_tf_bin_7 = 16 -ge_dist_inside_tf_bin_8 = 17 -ge_dist_null_patch = 18 -ge_dist_sclk_core_vld = 19 -ge_dist_sclk_wd_te11_vld = 20 -ge_dist_tfreq_lat_bin_0 = 21 -ge_dist_tfreq_lat_bin_1 = 22 -ge_dist_tfreq_lat_bin_2 = 23 -ge_dist_tfreq_lat_bin_3 = 24 -ge_dist_tfreq_lat_bin_4 = 25 -ge_dist_tfreq_lat_bin_5 = 26 -ge_dist_tfreq_lat_bin_6 = 27 -ge_dist_tfreq_lat_bin_7 = 28 -ge_dist_tfreq_utcl1_consecutive_retry_event = 29 -ge_dist_tfreq_utcl1_request_event = 30 -ge_dist_tfreq_utcl1_retry_event = 31 -ge_dist_tfreq_utcl1_stall_event = 32 -ge_dist_tfreq_utcl1_stall_utcl2_event = 33 -ge_dist_tfreq_utcl1_translation_hit_event = 34 -ge_dist_tfreq_utcl1_translation_miss_event = 35 -ge_dist_vs_pc_stall = 36 -ge_dist_pc_feorder_fifo_full = 37 -ge_dist_pc_ge_manager_busy = 38 -ge_dist_pc_req_stall_se0 = 39 -ge_dist_pc_req_stall_se1 = 40 -ge_dist_pc_req_stall_se2 = 41 -ge_dist_pc_req_stall_se3 = 42 -ge_dist_pc_req_stall_se4 = 43 -ge_dist_pc_req_stall_se5 = 44 -ge_dist_pc_req_stall_se6 = 45 -ge_dist_pc_req_stall_se7 = 46 -ge_dist_pc_space_zero = 47 -ge_dist_sclk_input_vld = 48 -ge_dist_reserved = 49 -ge_dist_wd_te11_busy = 50 -ge_dist_te11_starved = 51 -ge_dist_switch_mode_stall = 52 -ge_all_tf_eq = 53 -ge_all_tf2 = 54 -ge_all_tf3 = 55 -ge_all_tf4 = 56 -ge_all_tf5 = 57 -ge_all_tf6 = 58 -ge_se0_te11_starved_on_hs_done = 59 -ge_se1_te11_starved_on_hs_done = 60 -ge_se2_te11_starved_on_hs_done = 61 -ge_se3_te11_starved_on_hs_done = 62 -ge_se4_te11_starved_on_hs_done = 63 -ge_se5_te11_starved_on_hs_done = 64 -ge_se6_te11_starved_on_hs_done = 65 -ge_se7_te11_starved_on_hs_done = 66 -ge_dist_op_fifo_full_starve = 67 -ge_dist_hs_done_se0 = 68 -ge_dist_hs_done_se1 = 69 -ge_dist_hs_done_se2 = 70 -ge_dist_hs_done_se3 = 71 -ge_dist_hs_done_se4 = 72 -ge_dist_hs_done_se5 = 73 -ge_dist_hs_done_se6 = 74 -ge_dist_hs_done_se7 = 75 -ge_dist_hs_done_latency = 76 -ge_dist_distributer_busy = 77 -ge_tf_ret_data_stalling_hs_done = 78 -ge_num_of_no_dist_patches = 79 -ge_num_of_donut_dist_patches = 80 -ge_num_of_patch_dist_patches = 81 -ge_num_of_se_switches_due_to_patch_accum = 82 -ge_num_of_se_switches_due_to_donut = 83 -ge_num_of_se_switches_due_to_trap = 84 -ge_num_of_hs_alloc_events = 85 -ge_agm_gcr_req = 86 -ge_agm_gcr_tag_stall = 87 -ge_agm_gcr_crd_stall = 88 -ge_agm_gcr_stall = 89 -ge_agm_gcr_latency = 90 -ge_distclk_vld = 91 -GE2_DIST_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'GE2_SE_PERFCOUNT_SELECT' -GE2_SE_PERFCOUNT_SELECT__enumvalues = { - 0: 'ge_se_ds_prims', - 1: 'ge_se_es_thread_groups', - 2: 'ge_se_esvert_stalled_gsprim', - 3: 'ge_se_hs_tfm_stall', - 4: 'ge_se_hs_tgs_active_high_water_mark', - 5: 'ge_se_hs_thread_groups', - 6: 'ge_se_reused_es_indices', - 7: 'ge_se_sclk_ngg_vld', - 8: 'ge_se_sclk_te11_vld', - 9: 'ge_se_spi_esvert_eov', - 10: 'ge_se_spi_esvert_stalled', - 11: 'ge_se_spi_esvert_starved_busy', - 12: 'ge_se_spi_esvert_valid', - 13: 'ge_se_spi_gsprim_cont', - 14: 'ge_se_spi_gsprim_eov', - 15: 'ge_se_spi_gsprim_stalled', - 16: 'ge_se_spi_gsprim_starved_busy', - 17: 'ge_se_spi_gsprim_valid', - 18: 'ge_se_spi_gssubgrp_is_event', - 19: 'ge_se_spi_gssubgrp_send', - 20: 'ge_se_spi_hsvert_eov', - 21: 'ge_se_spi_hsvert_stalled', - 22: 'ge_se_spi_hsvert_starved_busy', - 23: 'ge_se_spi_hsvert_valid', - 24: 'ge_se_spi_hswave_is_event', - 25: 'ge_se_spi_hswave_send', - 26: 'ge_se_spi_lsvert_eov', - 27: 'ge_se_spi_lsvert_stalled', - 28: 'ge_se_spi_lsvert_starved_busy', - 29: 'ge_se_spi_lsvert_valid', - 30: 'ge_se_spi_hsvert_fifo_full_stall', - 31: 'ge_se_spi_tgrp_fifo_stall', - 32: 'ge_spi_hsgrp_spi_stall', - 33: 'ge_se_spi_gssubgrp_event_window_active', - 34: 'ge_se_hs_input_stall', - 35: 'ge_se_sending_vert_or_prim', - 36: 'ge_se_sclk_input_vld', - 37: 'ge_spi_lswave_fifo_full_stall', - 38: 'ge_spi_hswave_fifo_full_stall', - 39: 'ge_hs_tif_stall', - 40: 'ge_csb_spi_bp', - 41: 'ge_ngg_starving_for_pc_grant', - 42: 'ge_pa0_csb_eop', - 43: 'ge_pa1_csb_eop', - 44: 'ge_ngg_starved_idle', - 45: 'ge_gsprim_send', - 46: 'ge_esvert_send', - 47: 'ge_ngg_starved_after_work', - 48: 'ge_ngg_subgrp_fifo_stall', - 49: 'ge_ngg_ord_id_req_stall', - 50: 'ge_ngg_indx_bus_stall', - 51: 'ge_hs_stall_tfmm_fifo_full', - 52: 'ge_gs_issue_rtr_stalled', - 53: 'ge_gsprim_stalled_esvert', - 54: 'ge_gsthread_stalled', - 55: 'ge_te11_stall_prim_funnel', - 56: 'ge_te11_stall_vert_funnel', - 57: 'ge_ngg_attr_grp_alloc', - 58: 'ge_ngg_attr_discard_alloc', - 59: 'ge_ngg_pc_space_not_avail', - 60: 'ge_ngg_agm_req_stall', - 61: 'ge_ngg_spi_esvert_partial_eov', - 62: 'ge_ngg_spi_gsprim_partial_eov', - 63: 'ge_spi_gsgrp_valid', - 64: 'ge_ngg_attr_grp_latency', - 65: 'ge_ngg_reuse_prim_limit_hit', - 66: 'ge_ngg_reuse_vert_limit_hit', - 67: 'ge_te11_con_stall', - 68: 'ge_te11_compactor_starved', - 69: 'ge_ngg_stall_tess_off_tess_on', - 70: 'ge_ngg_stall_tess_on_tess_off', -} -ge_se_ds_prims = 0 -ge_se_es_thread_groups = 1 -ge_se_esvert_stalled_gsprim = 2 -ge_se_hs_tfm_stall = 3 -ge_se_hs_tgs_active_high_water_mark = 4 -ge_se_hs_thread_groups = 5 -ge_se_reused_es_indices = 6 -ge_se_sclk_ngg_vld = 7 -ge_se_sclk_te11_vld = 8 -ge_se_spi_esvert_eov = 9 -ge_se_spi_esvert_stalled = 10 -ge_se_spi_esvert_starved_busy = 11 -ge_se_spi_esvert_valid = 12 -ge_se_spi_gsprim_cont = 13 -ge_se_spi_gsprim_eov = 14 -ge_se_spi_gsprim_stalled = 15 -ge_se_spi_gsprim_starved_busy = 16 -ge_se_spi_gsprim_valid = 17 -ge_se_spi_gssubgrp_is_event = 18 -ge_se_spi_gssubgrp_send = 19 -ge_se_spi_hsvert_eov = 20 -ge_se_spi_hsvert_stalled = 21 -ge_se_spi_hsvert_starved_busy = 22 -ge_se_spi_hsvert_valid = 23 -ge_se_spi_hswave_is_event = 24 -ge_se_spi_hswave_send = 25 -ge_se_spi_lsvert_eov = 26 -ge_se_spi_lsvert_stalled = 27 -ge_se_spi_lsvert_starved_busy = 28 -ge_se_spi_lsvert_valid = 29 -ge_se_spi_hsvert_fifo_full_stall = 30 -ge_se_spi_tgrp_fifo_stall = 31 -ge_spi_hsgrp_spi_stall = 32 -ge_se_spi_gssubgrp_event_window_active = 33 -ge_se_hs_input_stall = 34 -ge_se_sending_vert_or_prim = 35 -ge_se_sclk_input_vld = 36 -ge_spi_lswave_fifo_full_stall = 37 -ge_spi_hswave_fifo_full_stall = 38 -ge_hs_tif_stall = 39 -ge_csb_spi_bp = 40 -ge_ngg_starving_for_pc_grant = 41 -ge_pa0_csb_eop = 42 -ge_pa1_csb_eop = 43 -ge_ngg_starved_idle = 44 -ge_gsprim_send = 45 -ge_esvert_send = 46 -ge_ngg_starved_after_work = 47 -ge_ngg_subgrp_fifo_stall = 48 -ge_ngg_ord_id_req_stall = 49 -ge_ngg_indx_bus_stall = 50 -ge_hs_stall_tfmm_fifo_full = 51 -ge_gs_issue_rtr_stalled = 52 -ge_gsprim_stalled_esvert = 53 -ge_gsthread_stalled = 54 -ge_te11_stall_prim_funnel = 55 -ge_te11_stall_vert_funnel = 56 -ge_ngg_attr_grp_alloc = 57 -ge_ngg_attr_discard_alloc = 58 -ge_ngg_pc_space_not_avail = 59 -ge_ngg_agm_req_stall = 60 -ge_ngg_spi_esvert_partial_eov = 61 -ge_ngg_spi_gsprim_partial_eov = 62 -ge_spi_gsgrp_valid = 63 -ge_ngg_attr_grp_latency = 64 -ge_ngg_reuse_prim_limit_hit = 65 -ge_ngg_reuse_vert_limit_hit = 66 -ge_te11_con_stall = 67 -ge_te11_compactor_starved = 68 -ge_ngg_stall_tess_off_tess_on = 69 -ge_ngg_stall_tess_on_tess_off = 70 -GE2_SE_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DETECT_ONE' -VGT_DETECT_ONE__enumvalues = { - 0: 'ENABLE_TF1_OPT', - 1: 'DISABLE_TF1_OPT', -} -ENABLE_TF1_OPT = 0 -DISABLE_TF1_OPT = 1 -VGT_DETECT_ONE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DETECT_ZERO' -VGT_DETECT_ZERO__enumvalues = { - 0: 'ENABLE_TF0_OPT', - 1: 'DISABLE_TF0_OPT', -} -ENABLE_TF0_OPT = 0 -DISABLE_TF0_OPT = 1 -VGT_DETECT_ZERO = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DIST_MODE' -VGT_DIST_MODE__enumvalues = { - 0: 'NO_DIST', - 1: 'PATCHES', - 2: 'DONUTS', - 3: 'TRAPEZOIDS', -} -NO_DIST = 0 -PATCHES = 1 -DONUTS = 2 -TRAPEZOIDS = 3 -VGT_DIST_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DI_INDEX_SIZE' -VGT_DI_INDEX_SIZE__enumvalues = { - 0: 'DI_INDEX_SIZE_16_BIT', - 1: 'DI_INDEX_SIZE_32_BIT', - 2: 'DI_INDEX_SIZE_8_BIT', -} -DI_INDEX_SIZE_16_BIT = 0 -DI_INDEX_SIZE_32_BIT = 1 -DI_INDEX_SIZE_8_BIT = 2 -VGT_DI_INDEX_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DI_MAJOR_MODE_SELECT' -VGT_DI_MAJOR_MODE_SELECT__enumvalues = { - 0: 'DI_MAJOR_MODE_0', - 1: 'DI_MAJOR_MODE_1', -} -DI_MAJOR_MODE_0 = 0 -DI_MAJOR_MODE_1 = 1 -VGT_DI_MAJOR_MODE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DI_PRIM_TYPE' -VGT_DI_PRIM_TYPE__enumvalues = { - 0: 'DI_PT_NONE', - 1: 'DI_PT_POINTLIST', - 2: 'DI_PT_LINELIST', - 3: 'DI_PT_LINESTRIP', - 4: 'DI_PT_TRILIST', - 5: 'DI_PT_TRIFAN', - 6: 'DI_PT_TRISTRIP', - 7: 'DI_PT_2D_RECTANGLE', - 8: 'DI_PT_UNUSED_1', - 9: 'DI_PT_PATCH', - 10: 'DI_PT_LINELIST_ADJ', - 11: 'DI_PT_LINESTRIP_ADJ', - 12: 'DI_PT_TRILIST_ADJ', - 13: 'DI_PT_TRISTRIP_ADJ', - 14: 'DI_PT_UNUSED_3', - 15: 'DI_PT_UNUSED_4', - 16: 'DI_PT_UNUSED_5', - 17: 'DI_PT_RECTLIST', - 18: 'DI_PT_LINELOOP', - 19: 'DI_PT_QUADLIST', - 20: 'DI_PT_QUADSTRIP', - 21: 'DI_PT_POLYGON', -} -DI_PT_NONE = 0 -DI_PT_POINTLIST = 1 -DI_PT_LINELIST = 2 -DI_PT_LINESTRIP = 3 -DI_PT_TRILIST = 4 -DI_PT_TRIFAN = 5 -DI_PT_TRISTRIP = 6 -DI_PT_2D_RECTANGLE = 7 -DI_PT_UNUSED_1 = 8 -DI_PT_PATCH = 9 -DI_PT_LINELIST_ADJ = 10 -DI_PT_LINESTRIP_ADJ = 11 -DI_PT_TRILIST_ADJ = 12 -DI_PT_TRISTRIP_ADJ = 13 -DI_PT_UNUSED_3 = 14 -DI_PT_UNUSED_4 = 15 -DI_PT_UNUSED_5 = 16 -DI_PT_RECTLIST = 17 -DI_PT_LINELOOP = 18 -DI_PT_QUADLIST = 19 -DI_PT_QUADSTRIP = 20 -DI_PT_POLYGON = 21 -VGT_DI_PRIM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DI_SOURCE_SELECT' -VGT_DI_SOURCE_SELECT__enumvalues = { - 0: 'DI_SRC_SEL_DMA', - 1: 'DI_SRC_SEL_IMMEDIATE', - 2: 'DI_SRC_SEL_AUTO_INDEX', - 3: 'DI_SRC_SEL_RESERVED', -} -DI_SRC_SEL_DMA = 0 -DI_SRC_SEL_IMMEDIATE = 1 -DI_SRC_SEL_AUTO_INDEX = 2 -DI_SRC_SEL_RESERVED = 3 -VGT_DI_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DMA_BUF_TYPE' -VGT_DMA_BUF_TYPE__enumvalues = { - 0: 'VGT_DMA_BUF_MEM', - 1: 'VGT_DMA_BUF_RING', - 2: 'VGT_DMA_BUF_SETUP', - 3: 'VGT_DMA_PTR_UPDATE', -} -VGT_DMA_BUF_MEM = 0 -VGT_DMA_BUF_RING = 1 -VGT_DMA_BUF_SETUP = 2 -VGT_DMA_PTR_UPDATE = 3 -VGT_DMA_BUF_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DMA_SWAP_MODE' -VGT_DMA_SWAP_MODE__enumvalues = { - 0: 'VGT_DMA_SWAP_NONE', - 1: 'VGT_DMA_SWAP_16_BIT', - 2: 'VGT_DMA_SWAP_32_BIT', - 3: 'VGT_DMA_SWAP_WORD', -} -VGT_DMA_SWAP_NONE = 0 -VGT_DMA_SWAP_16_BIT = 1 -VGT_DMA_SWAP_32_BIT = 2 -VGT_DMA_SWAP_WORD = 3 -VGT_DMA_SWAP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_EVENT_TYPE' -VGT_EVENT_TYPE__enumvalues = { - 0: 'Reserved_0x00', - 1: 'SAMPLE_STREAMOUTSTATS1', - 2: 'SAMPLE_STREAMOUTSTATS2', - 3: 'SAMPLE_STREAMOUTSTATS3', - 4: 'CACHE_FLUSH_TS', - 5: 'CONTEXT_DONE', - 6: 'CACHE_FLUSH', - 7: 'CS_PARTIAL_FLUSH', - 8: 'VGT_STREAMOUT_SYNC', - 9: 'Reserved_0x09', - 10: 'VGT_STREAMOUT_RESET', - 11: 'END_OF_PIPE_INCR_DE', - 12: 'END_OF_PIPE_IB_END', - 13: 'RST_PIX_CNT', - 14: 'BREAK_BATCH', - 15: 'VS_PARTIAL_FLUSH', - 16: 'PS_PARTIAL_FLUSH', - 17: 'FLUSH_HS_OUTPUT', - 18: 'FLUSH_DFSM', - 19: 'RESET_TO_LOWEST_VGT', - 20: 'CACHE_FLUSH_AND_INV_TS_EVENT', - 21: 'WAIT_SYNC', - 22: 'CACHE_FLUSH_AND_INV_EVENT', - 23: 'PERFCOUNTER_START', - 24: 'PERFCOUNTER_STOP', - 25: 'PIPELINESTAT_START', - 26: 'PIPELINESTAT_STOP', - 27: 'PERFCOUNTER_SAMPLE', - 28: 'FLUSH_ES_OUTPUT', - 29: 'BIN_CONF_OVERRIDE_CHECK', - 30: 'SAMPLE_PIPELINESTAT', - 31: 'SO_VGTSTREAMOUT_FLUSH', - 32: 'SAMPLE_STREAMOUTSTATS', - 33: 'RESET_VTX_CNT', - 34: 'BLOCK_CONTEXT_DONE', - 35: 'CS_CONTEXT_DONE', - 36: 'VGT_FLUSH', - 37: 'TGID_ROLLOVER', - 38: 'SQ_NON_EVENT', - 39: 'SC_SEND_DB_VPZ', - 40: 'BOTTOM_OF_PIPE_TS', - 41: 'FLUSH_SX_TS', - 42: 'DB_CACHE_FLUSH_AND_INV', - 43: 'FLUSH_AND_INV_DB_DATA_TS', - 44: 'FLUSH_AND_INV_DB_META', - 45: 'FLUSH_AND_INV_CB_DATA_TS', - 46: 'FLUSH_AND_INV_CB_META', - 47: 'CS_DONE', - 48: 'PS_DONE', - 49: 'FLUSH_AND_INV_CB_PIXEL_DATA', - 50: 'SX_CB_RAT_ACK_REQUEST', - 51: 'THREAD_TRACE_START', - 52: 'THREAD_TRACE_STOP', - 53: 'THREAD_TRACE_MARKER', - 54: 'THREAD_TRACE_DRAW', - 55: 'THREAD_TRACE_FINISH', - 56: 'PIXEL_PIPE_STAT_CONTROL', - 57: 'PIXEL_PIPE_STAT_DUMP', - 58: 'PIXEL_PIPE_STAT_RESET', - 59: 'CONTEXT_SUSPEND', - 60: 'OFFCHIP_HS_DEALLOC', - 61: 'ENABLE_NGG_PIPELINE', - 62: 'ENABLE_LEGACY_PIPELINE', - 63: 'DRAW_DONE', -} -Reserved_0x00 = 0 -SAMPLE_STREAMOUTSTATS1 = 1 -SAMPLE_STREAMOUTSTATS2 = 2 -SAMPLE_STREAMOUTSTATS3 = 3 -CACHE_FLUSH_TS = 4 -CONTEXT_DONE = 5 -CACHE_FLUSH = 6 -CS_PARTIAL_FLUSH = 7 -VGT_STREAMOUT_SYNC = 8 -Reserved_0x09 = 9 -VGT_STREAMOUT_RESET = 10 -END_OF_PIPE_INCR_DE = 11 -END_OF_PIPE_IB_END = 12 -RST_PIX_CNT = 13 -BREAK_BATCH = 14 -VS_PARTIAL_FLUSH = 15 -PS_PARTIAL_FLUSH = 16 -FLUSH_HS_OUTPUT = 17 -FLUSH_DFSM = 18 -RESET_TO_LOWEST_VGT = 19 -CACHE_FLUSH_AND_INV_TS_EVENT = 20 -WAIT_SYNC = 21 -CACHE_FLUSH_AND_INV_EVENT = 22 -PERFCOUNTER_START = 23 -PERFCOUNTER_STOP = 24 -PIPELINESTAT_START = 25 -PIPELINESTAT_STOP = 26 -PERFCOUNTER_SAMPLE = 27 -FLUSH_ES_OUTPUT = 28 -BIN_CONF_OVERRIDE_CHECK = 29 -SAMPLE_PIPELINESTAT = 30 -SO_VGTSTREAMOUT_FLUSH = 31 -SAMPLE_STREAMOUTSTATS = 32 -RESET_VTX_CNT = 33 -BLOCK_CONTEXT_DONE = 34 -CS_CONTEXT_DONE = 35 -VGT_FLUSH = 36 -TGID_ROLLOVER = 37 -SQ_NON_EVENT = 38 -SC_SEND_DB_VPZ = 39 -BOTTOM_OF_PIPE_TS = 40 -FLUSH_SX_TS = 41 -DB_CACHE_FLUSH_AND_INV = 42 -FLUSH_AND_INV_DB_DATA_TS = 43 -FLUSH_AND_INV_DB_META = 44 -FLUSH_AND_INV_CB_DATA_TS = 45 -FLUSH_AND_INV_CB_META = 46 -CS_DONE = 47 -PS_DONE = 48 -FLUSH_AND_INV_CB_PIXEL_DATA = 49 -SX_CB_RAT_ACK_REQUEST = 50 -THREAD_TRACE_START = 51 -THREAD_TRACE_STOP = 52 -THREAD_TRACE_MARKER = 53 -THREAD_TRACE_DRAW = 54 -THREAD_TRACE_FINISH = 55 -PIXEL_PIPE_STAT_CONTROL = 56 -PIXEL_PIPE_STAT_DUMP = 57 -PIXEL_PIPE_STAT_RESET = 58 -CONTEXT_SUSPEND = 59 -OFFCHIP_HS_DEALLOC = 60 -ENABLE_NGG_PIPELINE = 61 -ENABLE_LEGACY_PIPELINE = 62 -DRAW_DONE = 63 -VGT_EVENT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GROUP_CONV_SEL' -VGT_GROUP_CONV_SEL__enumvalues = { - 0: 'VGT_GRP_INDEX_16', - 1: 'VGT_GRP_INDEX_32', - 2: 'VGT_GRP_UINT_16', - 3: 'VGT_GRP_UINT_32', - 4: 'VGT_GRP_SINT_16', - 5: 'VGT_GRP_SINT_32', - 6: 'VGT_GRP_FLOAT_32', - 7: 'VGT_GRP_AUTO_PRIM', - 8: 'VGT_GRP_FIX_1_23_TO_FLOAT', -} -VGT_GRP_INDEX_16 = 0 -VGT_GRP_INDEX_32 = 1 -VGT_GRP_UINT_16 = 2 -VGT_GRP_UINT_32 = 3 -VGT_GRP_SINT_16 = 4 -VGT_GRP_SINT_32 = 5 -VGT_GRP_FLOAT_32 = 6 -VGT_GRP_AUTO_PRIM = 7 -VGT_GRP_FIX_1_23_TO_FLOAT = 8 -VGT_GROUP_CONV_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GS_MODE_TYPE' -VGT_GS_MODE_TYPE__enumvalues = { - 0: 'GS_OFF', - 1: 'GS_SCENARIO_A', - 2: 'GS_SCENARIO_B', - 3: 'GS_SCENARIO_G', - 4: 'GS_SCENARIO_C', - 5: 'SPRITE_EN', -} -GS_OFF = 0 -GS_SCENARIO_A = 1 -GS_SCENARIO_B = 2 -GS_SCENARIO_G = 3 -GS_SCENARIO_C = 4 -SPRITE_EN = 5 -VGT_GS_MODE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GS_OUTPRIM_TYPE' -VGT_GS_OUTPRIM_TYPE__enumvalues = { - 0: 'POINTLIST', - 1: 'LINESTRIP', - 2: 'TRISTRIP', - 3: 'RECT_2D', - 4: 'RECTLIST', -} -POINTLIST = 0 -LINESTRIP = 1 -TRISTRIP = 2 -RECT_2D = 3 -RECTLIST = 4 -VGT_GS_OUTPRIM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_INDEX_TYPE_MODE' -VGT_INDEX_TYPE_MODE__enumvalues = { - 0: 'VGT_INDEX_16', - 1: 'VGT_INDEX_32', - 2: 'VGT_INDEX_8', -} -VGT_INDEX_16 = 0 -VGT_INDEX_32 = 1 -VGT_INDEX_8 = 2 -VGT_INDEX_TYPE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_OUTPATH_SELECT' -VGT_OUTPATH_SELECT__enumvalues = { - 0: 'VGT_OUTPATH_VTX_REUSE', - 1: 'VGT_OUTPATH_GS_BLOCK', - 2: 'VGT_OUTPATH_HS_BLOCK', - 3: 'VGT_OUTPATH_PRIM_GEN', - 4: 'VGT_OUTPATH_TE_PRIM_GEN', - 5: 'VGT_OUTPATH_TE_GS_BLOCK', - 6: 'VGT_OUTPATH_TE_OUTPUT', -} -VGT_OUTPATH_VTX_REUSE = 0 -VGT_OUTPATH_GS_BLOCK = 1 -VGT_OUTPATH_HS_BLOCK = 2 -VGT_OUTPATH_PRIM_GEN = 3 -VGT_OUTPATH_TE_PRIM_GEN = 4 -VGT_OUTPATH_TE_GS_BLOCK = 5 -VGT_OUTPATH_TE_OUTPUT = 6 -VGT_OUTPATH_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_OUT_PRIM_TYPE' -VGT_OUT_PRIM_TYPE__enumvalues = { - 0: 'VGT_OUT_POINT', - 1: 'VGT_OUT_LINE', - 2: 'VGT_OUT_TRI', - 3: 'VGT_OUT_RECT_V0', - 4: 'VGT_OUT_RECT_V1', - 5: 'VGT_OUT_RECT_V2', - 6: 'VGT_OUT_RECT_V3', - 7: 'VGT_OUT_2D_RECT', - 8: 'VGT_TE_QUAD', - 9: 'VGT_TE_PRIM_INDEX_LINE', - 10: 'VGT_TE_PRIM_INDEX_TRI', - 11: 'VGT_TE_PRIM_INDEX_QUAD', - 12: 'VGT_OUT_LINE_ADJ', - 13: 'VGT_OUT_TRI_ADJ', - 14: 'VGT_OUT_PATCH', -} -VGT_OUT_POINT = 0 -VGT_OUT_LINE = 1 -VGT_OUT_TRI = 2 -VGT_OUT_RECT_V0 = 3 -VGT_OUT_RECT_V1 = 4 -VGT_OUT_RECT_V2 = 5 -VGT_OUT_RECT_V3 = 6 -VGT_OUT_2D_RECT = 7 -VGT_TE_QUAD = 8 -VGT_TE_PRIM_INDEX_LINE = 9 -VGT_TE_PRIM_INDEX_TRI = 10 -VGT_TE_PRIM_INDEX_QUAD = 11 -VGT_OUT_LINE_ADJ = 12 -VGT_OUT_TRI_ADJ = 13 -VGT_OUT_PATCH = 14 -VGT_OUT_PRIM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_RDREQ_POLICY' -VGT_RDREQ_POLICY__enumvalues = { - 0: 'VGT_POLICY_LRU', - 1: 'VGT_POLICY_STREAM', - 2: 'VGT_POLICY_BYPASS', -} -VGT_POLICY_LRU = 0 -VGT_POLICY_STREAM = 1 -VGT_POLICY_BYPASS = 2 -VGT_RDREQ_POLICY = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_ES_EN' -VGT_STAGES_ES_EN__enumvalues = { - 0: 'ES_STAGE_OFF', - 1: 'ES_STAGE_DS', - 2: 'ES_STAGE_REAL', - 3: 'RESERVED_ES', -} -ES_STAGE_OFF = 0 -ES_STAGE_DS = 1 -ES_STAGE_REAL = 2 -RESERVED_ES = 3 -VGT_STAGES_ES_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_GS_EN' -VGT_STAGES_GS_EN__enumvalues = { - 0: 'GS_STAGE_OFF', - 1: 'GS_STAGE_ON', -} -GS_STAGE_OFF = 0 -GS_STAGE_ON = 1 -VGT_STAGES_GS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_HS_EN' -VGT_STAGES_HS_EN__enumvalues = { - 0: 'HS_STAGE_OFF', - 1: 'HS_STAGE_ON', -} -HS_STAGE_OFF = 0 -HS_STAGE_ON = 1 -VGT_STAGES_HS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_LS_EN' -VGT_STAGES_LS_EN__enumvalues = { - 0: 'LS_STAGE_OFF', - 1: 'LS_STAGE_ON', - 2: 'CS_STAGE_ON', - 3: 'RESERVED_LS', -} -LS_STAGE_OFF = 0 -LS_STAGE_ON = 1 -CS_STAGE_ON = 2 -RESERVED_LS = 3 -VGT_STAGES_LS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_VS_EN' -VGT_STAGES_VS_EN__enumvalues = { - 0: 'VS_STAGE_REAL', - 1: 'VS_STAGE_DS', - 2: 'VS_STAGE_COPY_SHADER', - 3: 'RESERVED_VS', -} -VS_STAGE_REAL = 0 -VS_STAGE_DS = 1 -VS_STAGE_COPY_SHADER = 2 -RESERVED_VS = 3 -VGT_STAGES_VS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_TESS_PARTITION' -VGT_TESS_PARTITION__enumvalues = { - 0: 'PART_INTEGER', - 1: 'PART_POW2', - 2: 'PART_FRAC_ODD', - 3: 'PART_FRAC_EVEN', -} -PART_INTEGER = 0 -PART_POW2 = 1 -PART_FRAC_ODD = 2 -PART_FRAC_EVEN = 3 -VGT_TESS_PARTITION = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_TESS_TOPOLOGY' -VGT_TESS_TOPOLOGY__enumvalues = { - 0: 'OUTPUT_POINT', - 1: 'OUTPUT_LINE', - 2: 'OUTPUT_TRIANGLE_CW', - 3: 'OUTPUT_TRIANGLE_CCW', -} -OUTPUT_POINT = 0 -OUTPUT_LINE = 1 -OUTPUT_TRIANGLE_CW = 2 -OUTPUT_TRIANGLE_CCW = 3 -VGT_TESS_TOPOLOGY = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_TESS_TYPE' -VGT_TESS_TYPE__enumvalues = { - 0: 'TESS_ISOLINE', - 1: 'TESS_TRIANGLE', - 2: 'TESS_QUAD', -} -TESS_ISOLINE = 0 -TESS_TRIANGLE = 1 -TESS_QUAD = 2 -VGT_TESS_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'WD_IA_DRAW_REG_XFER' -WD_IA_DRAW_REG_XFER__enumvalues = { - 0: 'WD_IA_DRAW_REG_XFER_IA_MULTI_VGT_PARAM', - 1: 'WD_IA_DRAW_REG_XFER_VGT_MULTI_PRIM_IB_RESET_EN', - 2: 'WD_IA_DRAW_REG_XFER_VGT_INSTANCE_BASE_ID', - 3: 'WD_IA_DRAW_REG_XFER_GE_CNTL', - 4: 'WD_IA_DRAW_REG_XFER_GE_USER_VGPR_EN', - 5: 'WD_IA_DRAW_REG_XFER_FL_MS_WG_DIM', - 6: 'WD_IA_DRAW_REG_XFER_FL_MS_WG_DIM_1', - 7: 'WD_IA_DRAW_REG_XFER_FL_MS_TG_SIZE', - 8: 'WD_IA_DRAW_REG_XFER_FL_MS_EXP_ALLOC', -} -WD_IA_DRAW_REG_XFER_IA_MULTI_VGT_PARAM = 0 -WD_IA_DRAW_REG_XFER_VGT_MULTI_PRIM_IB_RESET_EN = 1 -WD_IA_DRAW_REG_XFER_VGT_INSTANCE_BASE_ID = 2 -WD_IA_DRAW_REG_XFER_GE_CNTL = 3 -WD_IA_DRAW_REG_XFER_GE_USER_VGPR_EN = 4 -WD_IA_DRAW_REG_XFER_FL_MS_WG_DIM = 5 -WD_IA_DRAW_REG_XFER_FL_MS_WG_DIM_1 = 6 -WD_IA_DRAW_REG_XFER_FL_MS_TG_SIZE = 7 -WD_IA_DRAW_REG_XFER_FL_MS_EXP_ALLOC = 8 -WD_IA_DRAW_REG_XFER = ctypes.c_uint32 # enum - -# values for enumeration 'WD_IA_DRAW_SOURCE' -WD_IA_DRAW_SOURCE__enumvalues = { - 0: 'WD_IA_DRAW_SOURCE_DMA', - 1: 'WD_IA_DRAW_SOURCE_IMMD', - 2: 'WD_IA_DRAW_SOURCE_AUTO', - 3: 'WD_IA_DRAW_SOURCE_OPAQ', -} -WD_IA_DRAW_SOURCE_DMA = 0 -WD_IA_DRAW_SOURCE_IMMD = 1 -WD_IA_DRAW_SOURCE_AUTO = 2 -WD_IA_DRAW_SOURCE_OPAQ = 3 -WD_IA_DRAW_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'WD_IA_DRAW_TYPE' -WD_IA_DRAW_TYPE__enumvalues = { - 0: 'WD_IA_DRAW_TYPE_DI_MM0', - 1: 'WD_IA_DRAW_TYPE_REG_XFER', - 2: 'WD_IA_DRAW_TYPE_EVENT_INIT', - 3: 'WD_IA_DRAW_TYPE_EVENT_ADDR', - 4: 'WD_IA_DRAW_TYPE_MIN_INDX', - 5: 'WD_IA_DRAW_TYPE_MAX_INDX', - 6: 'WD_IA_DRAW_TYPE_INDX_OFF', - 7: 'WD_IA_DRAW_TYPE_IMM_DATA', -} -WD_IA_DRAW_TYPE_DI_MM0 = 0 -WD_IA_DRAW_TYPE_REG_XFER = 1 -WD_IA_DRAW_TYPE_EVENT_INIT = 2 -WD_IA_DRAW_TYPE_EVENT_ADDR = 3 -WD_IA_DRAW_TYPE_MIN_INDX = 4 -WD_IA_DRAW_TYPE_MAX_INDX = 5 -WD_IA_DRAW_TYPE_INDX_OFF = 6 -WD_IA_DRAW_TYPE_IMM_DATA = 7 -WD_IA_DRAW_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'GB_EDC_DED_MODE' -GB_EDC_DED_MODE__enumvalues = { - 0: 'GB_EDC_DED_MODE_LOG', - 1: 'GB_EDC_DED_MODE_HALT', - 2: 'GB_EDC_DED_MODE_INT_HALT', -} -GB_EDC_DED_MODE_LOG = 0 -GB_EDC_DED_MODE_HALT = 1 -GB_EDC_DED_MODE_INT_HALT = 2 -GB_EDC_DED_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CHA_PERF_SEL' -CHA_PERF_SEL__enumvalues = { - 0: 'CHA_PERF_SEL_BUSY', - 1: 'CHA_PERF_SEL_STALL_CHC0', - 2: 'CHA_PERF_SEL_STALL_CHC1', - 3: 'CHA_PERF_SEL_STALL_CHC2', - 4: 'CHA_PERF_SEL_STALL_CHC3', - 5: 'CHA_PERF_SEL_STALL_CHC4', - 6: 'CHA_PERF_SEL_STALL_CHC5', - 7: 'CHA_PERF_SEL_REQUEST_CHC0', - 8: 'CHA_PERF_SEL_REQUEST_CHC1', - 9: 'CHA_PERF_SEL_REQUEST_CHC2', - 10: 'CHA_PERF_SEL_REQUEST_CHC3', - 11: 'CHA_PERF_SEL_REQUEST_CHC4', - 12: 'CHA_PERF_SEL_MEM_32B_WDS_CHC0', - 13: 'CHA_PERF_SEL_MEM_32B_WDS_CHC1', - 14: 'CHA_PERF_SEL_MEM_32B_WDS_CHC2', - 15: 'CHA_PERF_SEL_MEM_32B_WDS_CHC3', - 16: 'CHA_PERF_SEL_MEM_32B_WDS_CHC4', - 17: 'CHA_PERF_SEL_IO_32B_WDS_CHC0', - 18: 'CHA_PERF_SEL_IO_32B_WDS_CHC1', - 19: 'CHA_PERF_SEL_IO_32B_WDS_CHC2', - 20: 'CHA_PERF_SEL_IO_32B_WDS_CHC3', - 21: 'CHA_PERF_SEL_IO_32B_WDS_CHC4', - 22: 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC0', - 23: 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC1', - 24: 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC2', - 25: 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC3', - 26: 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC4', - 27: 'CHA_PERF_SEL_IO_BURST_COUNT_CHC0', - 28: 'CHA_PERF_SEL_IO_BURST_COUNT_CHC1', - 29: 'CHA_PERF_SEL_IO_BURST_COUNT_CHC2', - 30: 'CHA_PERF_SEL_IO_BURST_COUNT_CHC3', - 31: 'CHA_PERF_SEL_IO_BURST_COUNT_CHC4', - 32: 'CHA_PERF_SEL_ARB_REQUESTS', - 33: 'CHA_PERF_SEL_REQ_INFLIGHT_LEVEL', - 34: 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC0', - 35: 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC1', - 36: 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC2', - 37: 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC3', - 38: 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC4', - 39: 'CHA_PERF_SEL_CYCLE', -} -CHA_PERF_SEL_BUSY = 0 -CHA_PERF_SEL_STALL_CHC0 = 1 -CHA_PERF_SEL_STALL_CHC1 = 2 -CHA_PERF_SEL_STALL_CHC2 = 3 -CHA_PERF_SEL_STALL_CHC3 = 4 -CHA_PERF_SEL_STALL_CHC4 = 5 -CHA_PERF_SEL_STALL_CHC5 = 6 -CHA_PERF_SEL_REQUEST_CHC0 = 7 -CHA_PERF_SEL_REQUEST_CHC1 = 8 -CHA_PERF_SEL_REQUEST_CHC2 = 9 -CHA_PERF_SEL_REQUEST_CHC3 = 10 -CHA_PERF_SEL_REQUEST_CHC4 = 11 -CHA_PERF_SEL_MEM_32B_WDS_CHC0 = 12 -CHA_PERF_SEL_MEM_32B_WDS_CHC1 = 13 -CHA_PERF_SEL_MEM_32B_WDS_CHC2 = 14 -CHA_PERF_SEL_MEM_32B_WDS_CHC3 = 15 -CHA_PERF_SEL_MEM_32B_WDS_CHC4 = 16 -CHA_PERF_SEL_IO_32B_WDS_CHC0 = 17 -CHA_PERF_SEL_IO_32B_WDS_CHC1 = 18 -CHA_PERF_SEL_IO_32B_WDS_CHC2 = 19 -CHA_PERF_SEL_IO_32B_WDS_CHC3 = 20 -CHA_PERF_SEL_IO_32B_WDS_CHC4 = 21 -CHA_PERF_SEL_MEM_BURST_COUNT_CHC0 = 22 -CHA_PERF_SEL_MEM_BURST_COUNT_CHC1 = 23 -CHA_PERF_SEL_MEM_BURST_COUNT_CHC2 = 24 -CHA_PERF_SEL_MEM_BURST_COUNT_CHC3 = 25 -CHA_PERF_SEL_MEM_BURST_COUNT_CHC4 = 26 -CHA_PERF_SEL_IO_BURST_COUNT_CHC0 = 27 -CHA_PERF_SEL_IO_BURST_COUNT_CHC1 = 28 -CHA_PERF_SEL_IO_BURST_COUNT_CHC2 = 29 -CHA_PERF_SEL_IO_BURST_COUNT_CHC3 = 30 -CHA_PERF_SEL_IO_BURST_COUNT_CHC4 = 31 -CHA_PERF_SEL_ARB_REQUESTS = 32 -CHA_PERF_SEL_REQ_INFLIGHT_LEVEL = 33 -CHA_PERF_SEL_STALL_RET_CONFLICT_CHC0 = 34 -CHA_PERF_SEL_STALL_RET_CONFLICT_CHC1 = 35 -CHA_PERF_SEL_STALL_RET_CONFLICT_CHC2 = 36 -CHA_PERF_SEL_STALL_RET_CONFLICT_CHC3 = 37 -CHA_PERF_SEL_STALL_RET_CONFLICT_CHC4 = 38 -CHA_PERF_SEL_CYCLE = 39 -CHA_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CHCG_PERF_SEL' -CHCG_PERF_SEL__enumvalues = { - 0: 'CHCG_PERF_SEL_CYCLE', - 1: 'CHCG_PERF_SEL_BUSY', - 2: 'CHCG_PERF_SEL_STARVE', - 3: 'CHCG_PERF_SEL_ARB_RET_LEVEL', - 4: 'CHCG_PERF_SEL_GL2_REQ_READ_LATENCY', - 5: 'CHCG_PERF_SEL_GL2_REQ_WRITE_LATENCY', - 6: 'CHCG_PERF_SEL_REQ', - 7: 'CHCG_PERF_SEL_REQ_ATOMIC_WITH_RET', - 8: 'CHCG_PERF_SEL_REQ_ATOMIC_WITHOUT_RET', - 9: 'CHCG_PERF_SEL_REQ_NOP_ACK', - 10: 'CHCG_PERF_SEL_REQ_NOP_RTN0', - 11: 'CHCG_PERF_SEL_REQ_READ', - 12: 'CHCG_PERF_SEL_REQ_READ_128B', - 13: 'CHCG_PERF_SEL_REQ_READ_32B', - 14: 'CHCG_PERF_SEL_REQ_READ_64B', - 15: 'CHCG_PERF_SEL_REQ_WRITE', - 16: 'CHCG_PERF_SEL_REQ_WRITE_32B', - 17: 'CHCG_PERF_SEL_REQ_WRITE_64B', - 18: 'CHCG_PERF_SEL_STALL_GUS_GL1', - 19: 'CHCG_PERF_SEL_STALL_BUFFER_FULL', - 20: 'CHCG_PERF_SEL_REQ_CLIENT0', - 21: 'CHCG_PERF_SEL_REQ_CLIENT1', - 22: 'CHCG_PERF_SEL_REQ_CLIENT2', - 23: 'CHCG_PERF_SEL_REQ_CLIENT3', - 24: 'CHCG_PERF_SEL_REQ_CLIENT4', - 25: 'CHCG_PERF_SEL_REQ_CLIENT5', - 26: 'CHCG_PERF_SEL_REQ_CLIENT6', - 27: 'CHCG_PERF_SEL_REQ_CLIENT7', - 28: 'CHCG_PERF_SEL_REQ_CLIENT8', - 29: 'CHCG_PERF_SEL_REQ_CLIENT9', - 30: 'CHCG_PERF_SEL_REQ_CLIENT10', - 31: 'CHCG_PERF_SEL_REQ_CLIENT11', - 32: 'CHCG_PERF_SEL_REQ_CLIENT12', - 33: 'CHCG_PERF_SEL_REQ_CLIENT13', - 34: 'CHCG_PERF_SEL_REQ_CLIENT14', - 35: 'CHCG_PERF_SEL_REQ_CLIENT15', - 36: 'CHCG_PERF_SEL_REQ_CLIENT16', - 37: 'CHCG_PERF_SEL_REQ_CLIENT17', - 38: 'CHCG_PERF_SEL_REQ_CLIENT18', - 39: 'CHCG_PERF_SEL_REQ_CLIENT19', - 40: 'CHCG_PERF_SEL_REQ_CLIENT20', - 41: 'CHCG_PERF_SEL_REQ_CLIENT21', - 42: 'CHCG_PERF_SEL_REQ_CLIENT22', - 43: 'CHCG_PERF_SEL_REQ_CLIENT23', -} -CHCG_PERF_SEL_CYCLE = 0 -CHCG_PERF_SEL_BUSY = 1 -CHCG_PERF_SEL_STARVE = 2 -CHCG_PERF_SEL_ARB_RET_LEVEL = 3 -CHCG_PERF_SEL_GL2_REQ_READ_LATENCY = 4 -CHCG_PERF_SEL_GL2_REQ_WRITE_LATENCY = 5 -CHCG_PERF_SEL_REQ = 6 -CHCG_PERF_SEL_REQ_ATOMIC_WITH_RET = 7 -CHCG_PERF_SEL_REQ_ATOMIC_WITHOUT_RET = 8 -CHCG_PERF_SEL_REQ_NOP_ACK = 9 -CHCG_PERF_SEL_REQ_NOP_RTN0 = 10 -CHCG_PERF_SEL_REQ_READ = 11 -CHCG_PERF_SEL_REQ_READ_128B = 12 -CHCG_PERF_SEL_REQ_READ_32B = 13 -CHCG_PERF_SEL_REQ_READ_64B = 14 -CHCG_PERF_SEL_REQ_WRITE = 15 -CHCG_PERF_SEL_REQ_WRITE_32B = 16 -CHCG_PERF_SEL_REQ_WRITE_64B = 17 -CHCG_PERF_SEL_STALL_GUS_GL1 = 18 -CHCG_PERF_SEL_STALL_BUFFER_FULL = 19 -CHCG_PERF_SEL_REQ_CLIENT0 = 20 -CHCG_PERF_SEL_REQ_CLIENT1 = 21 -CHCG_PERF_SEL_REQ_CLIENT2 = 22 -CHCG_PERF_SEL_REQ_CLIENT3 = 23 -CHCG_PERF_SEL_REQ_CLIENT4 = 24 -CHCG_PERF_SEL_REQ_CLIENT5 = 25 -CHCG_PERF_SEL_REQ_CLIENT6 = 26 -CHCG_PERF_SEL_REQ_CLIENT7 = 27 -CHCG_PERF_SEL_REQ_CLIENT8 = 28 -CHCG_PERF_SEL_REQ_CLIENT9 = 29 -CHCG_PERF_SEL_REQ_CLIENT10 = 30 -CHCG_PERF_SEL_REQ_CLIENT11 = 31 -CHCG_PERF_SEL_REQ_CLIENT12 = 32 -CHCG_PERF_SEL_REQ_CLIENT13 = 33 -CHCG_PERF_SEL_REQ_CLIENT14 = 34 -CHCG_PERF_SEL_REQ_CLIENT15 = 35 -CHCG_PERF_SEL_REQ_CLIENT16 = 36 -CHCG_PERF_SEL_REQ_CLIENT17 = 37 -CHCG_PERF_SEL_REQ_CLIENT18 = 38 -CHCG_PERF_SEL_REQ_CLIENT19 = 39 -CHCG_PERF_SEL_REQ_CLIENT20 = 40 -CHCG_PERF_SEL_REQ_CLIENT21 = 41 -CHCG_PERF_SEL_REQ_CLIENT22 = 42 -CHCG_PERF_SEL_REQ_CLIENT23 = 43 -CHCG_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CHC_PERF_SEL' -CHC_PERF_SEL__enumvalues = { - 0: 'CHC_PERF_SEL_CYCLE', - 1: 'CHC_PERF_SEL_BUSY', - 2: 'CHC_PERF_SEL_STARVE', - 3: 'CHC_PERF_SEL_ARB_RET_LEVEL', - 4: 'CHC_PERF_SEL_GL2_REQ_READ_LATENCY', - 5: 'CHC_PERF_SEL_GL2_REQ_WRITE_LATENCY', - 6: 'CHC_PERF_SEL_REQ', - 7: 'CHC_PERF_SEL_REQ_ATOMIC_WITH_RET', - 8: 'CHC_PERF_SEL_REQ_ATOMIC_WITHOUT_RET', - 9: 'CHC_PERF_SEL_REQ_NOP_ACK', - 10: 'CHC_PERF_SEL_REQ_NOP_RTN0', - 11: 'CHC_PERF_SEL_REQ_READ', - 12: 'CHC_PERF_SEL_REQ_READ_128B', - 13: 'CHC_PERF_SEL_REQ_READ_32B', - 14: 'CHC_PERF_SEL_REQ_READ_64B', - 15: 'CHC_PERF_SEL_REQ_WRITE', - 16: 'CHC_PERF_SEL_REQ_WRITE_32B', - 17: 'CHC_PERF_SEL_REQ_WRITE_64B', - 18: 'CHC_PERF_SEL_STALL_GL2_GL1', - 19: 'CHC_PERF_SEL_STALL_BUFFER_FULL', - 20: 'CHC_PERF_SEL_REQ_CLIENT0', - 21: 'CHC_PERF_SEL_REQ_CLIENT1', - 22: 'CHC_PERF_SEL_REQ_CLIENT2', - 23: 'CHC_PERF_SEL_REQ_CLIENT3', - 24: 'CHC_PERF_SEL_REQ_CLIENT4', - 25: 'CHC_PERF_SEL_REQ_CLIENT5', - 26: 'CHC_PERF_SEL_REQ_CLIENT6', - 27: 'CHC_PERF_SEL_REQ_CLIENT7', - 28: 'CHC_PERF_SEL_REQ_CLIENT8', - 29: 'CHC_PERF_SEL_REQ_CLIENT9', - 30: 'CHC_PERF_SEL_REQ_CLIENT10', - 31: 'CHC_PERF_SEL_REQ_CLIENT11', - 32: 'CHC_PERF_SEL_REQ_CLIENT12', - 33: 'CHC_PERF_SEL_REQ_CLIENT13', - 34: 'CHC_PERF_SEL_REQ_CLIENT14', - 35: 'CHC_PERF_SEL_REQ_CLIENT15', - 36: 'CHC_PERF_SEL_REQ_CLIENT16', - 37: 'CHC_PERF_SEL_REQ_CLIENT17', - 38: 'CHC_PERF_SEL_REQ_CLIENT18', - 39: 'CHC_PERF_SEL_REQ_CLIENT19', - 40: 'CHC_PERF_SEL_REQ_CLIENT20', - 41: 'CHC_PERF_SEL_REQ_CLIENT21', - 42: 'CHC_PERF_SEL_REQ_CLIENT22', - 43: 'CHC_PERF_SEL_REQ_CLIENT23', -} -CHC_PERF_SEL_CYCLE = 0 -CHC_PERF_SEL_BUSY = 1 -CHC_PERF_SEL_STARVE = 2 -CHC_PERF_SEL_ARB_RET_LEVEL = 3 -CHC_PERF_SEL_GL2_REQ_READ_LATENCY = 4 -CHC_PERF_SEL_GL2_REQ_WRITE_LATENCY = 5 -CHC_PERF_SEL_REQ = 6 -CHC_PERF_SEL_REQ_ATOMIC_WITH_RET = 7 -CHC_PERF_SEL_REQ_ATOMIC_WITHOUT_RET = 8 -CHC_PERF_SEL_REQ_NOP_ACK = 9 -CHC_PERF_SEL_REQ_NOP_RTN0 = 10 -CHC_PERF_SEL_REQ_READ = 11 -CHC_PERF_SEL_REQ_READ_128B = 12 -CHC_PERF_SEL_REQ_READ_32B = 13 -CHC_PERF_SEL_REQ_READ_64B = 14 -CHC_PERF_SEL_REQ_WRITE = 15 -CHC_PERF_SEL_REQ_WRITE_32B = 16 -CHC_PERF_SEL_REQ_WRITE_64B = 17 -CHC_PERF_SEL_STALL_GL2_GL1 = 18 -CHC_PERF_SEL_STALL_BUFFER_FULL = 19 -CHC_PERF_SEL_REQ_CLIENT0 = 20 -CHC_PERF_SEL_REQ_CLIENT1 = 21 -CHC_PERF_SEL_REQ_CLIENT2 = 22 -CHC_PERF_SEL_REQ_CLIENT3 = 23 -CHC_PERF_SEL_REQ_CLIENT4 = 24 -CHC_PERF_SEL_REQ_CLIENT5 = 25 -CHC_PERF_SEL_REQ_CLIENT6 = 26 -CHC_PERF_SEL_REQ_CLIENT7 = 27 -CHC_PERF_SEL_REQ_CLIENT8 = 28 -CHC_PERF_SEL_REQ_CLIENT9 = 29 -CHC_PERF_SEL_REQ_CLIENT10 = 30 -CHC_PERF_SEL_REQ_CLIENT11 = 31 -CHC_PERF_SEL_REQ_CLIENT12 = 32 -CHC_PERF_SEL_REQ_CLIENT13 = 33 -CHC_PERF_SEL_REQ_CLIENT14 = 34 -CHC_PERF_SEL_REQ_CLIENT15 = 35 -CHC_PERF_SEL_REQ_CLIENT16 = 36 -CHC_PERF_SEL_REQ_CLIENT17 = 37 -CHC_PERF_SEL_REQ_CLIENT18 = 38 -CHC_PERF_SEL_REQ_CLIENT19 = 39 -CHC_PERF_SEL_REQ_CLIENT20 = 40 -CHC_PERF_SEL_REQ_CLIENT21 = 41 -CHC_PERF_SEL_REQ_CLIENT22 = 42 -CHC_PERF_SEL_REQ_CLIENT23 = 43 -CHC_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GL1A_PERF_SEL' -GL1A_PERF_SEL__enumvalues = { - 0: 'GL1A_PERF_SEL_BUSY', - 1: 'GL1A_PERF_SEL_STALL_GL1C0', - 2: 'GL1A_PERF_SEL_STALL_GL1C1', - 3: 'GL1A_PERF_SEL_STALL_GL1C2', - 4: 'GL1A_PERF_SEL_STALL_GL1C3', - 5: 'GL1A_PERF_SEL_REQUEST_GL1C0', - 6: 'GL1A_PERF_SEL_REQUEST_GL1C1', - 7: 'GL1A_PERF_SEL_REQUEST_GL1C2', - 8: 'GL1A_PERF_SEL_REQUEST_GL1C3', - 9: 'GL1A_PERF_SEL_WDS_32B_GL1C0', - 10: 'GL1A_PERF_SEL_WDS_32B_GL1C1', - 11: 'GL1A_PERF_SEL_WDS_32B_GL1C2', - 12: 'GL1A_PERF_SEL_WDS_32B_GL1C3', - 13: 'GL1A_PERF_SEL_BURST_COUNT_GL1C0', - 14: 'GL1A_PERF_SEL_BURST_COUNT_GL1C1', - 15: 'GL1A_PERF_SEL_BURST_COUNT_GL1C2', - 16: 'GL1A_PERF_SEL_BURST_COUNT_GL1C3', - 17: 'GL1A_PERF_SEL_ARB_REQUESTS', - 18: 'GL1A_PERF_SEL_REQ_INFLIGHT_LEVEL', - 19: 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C0', - 20: 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C1', - 21: 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C2', - 22: 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C3', - 23: 'GL1A_PERF_SEL_CYCLE', -} -GL1A_PERF_SEL_BUSY = 0 -GL1A_PERF_SEL_STALL_GL1C0 = 1 -GL1A_PERF_SEL_STALL_GL1C1 = 2 -GL1A_PERF_SEL_STALL_GL1C2 = 3 -GL1A_PERF_SEL_STALL_GL1C3 = 4 -GL1A_PERF_SEL_REQUEST_GL1C0 = 5 -GL1A_PERF_SEL_REQUEST_GL1C1 = 6 -GL1A_PERF_SEL_REQUEST_GL1C2 = 7 -GL1A_PERF_SEL_REQUEST_GL1C3 = 8 -GL1A_PERF_SEL_WDS_32B_GL1C0 = 9 -GL1A_PERF_SEL_WDS_32B_GL1C1 = 10 -GL1A_PERF_SEL_WDS_32B_GL1C2 = 11 -GL1A_PERF_SEL_WDS_32B_GL1C3 = 12 -GL1A_PERF_SEL_BURST_COUNT_GL1C0 = 13 -GL1A_PERF_SEL_BURST_COUNT_GL1C1 = 14 -GL1A_PERF_SEL_BURST_COUNT_GL1C2 = 15 -GL1A_PERF_SEL_BURST_COUNT_GL1C3 = 16 -GL1A_PERF_SEL_ARB_REQUESTS = 17 -GL1A_PERF_SEL_REQ_INFLIGHT_LEVEL = 18 -GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C0 = 19 -GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C1 = 20 -GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C2 = 21 -GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C3 = 22 -GL1A_PERF_SEL_CYCLE = 23 -GL1A_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GL1C_PERF_SEL' -GL1C_PERF_SEL__enumvalues = { - 0: 'GL1C_PERF_SEL_CYCLE', - 1: 'GL1C_PERF_SEL_BUSY', - 2: 'GL1C_PERF_SEL_STARVE', - 3: 'GL1C_PERF_SEL_ARB_RET_LEVEL', - 4: 'GL1C_PERF_SEL_GL2_REQ_READ', - 5: 'GL1C_PERF_SEL_GL2_REQ_READ_128B', - 6: 'GL1C_PERF_SEL_GL2_REQ_READ_32B', - 7: 'GL1C_PERF_SEL_GL2_REQ_READ_64B', - 8: 'GL1C_PERF_SEL_GL2_REQ_READ_LATENCY', - 9: 'GL1C_PERF_SEL_GL2_REQ_WRITE', - 10: 'GL1C_PERF_SEL_GL2_REQ_WRITE_32B', - 11: 'GL1C_PERF_SEL_GL2_REQ_WRITE_64B', - 12: 'GL1C_PERF_SEL_GL2_REQ_WRITE_LATENCY', - 13: 'GL1C_PERF_SEL_GL2_REQ_PREFETCH', - 14: 'GL1C_PERF_SEL_REQ', - 15: 'GL1C_PERF_SEL_REQ_ATOMIC_WITH_RET', - 16: 'GL1C_PERF_SEL_REQ_ATOMIC_WITHOUT_RET', - 17: 'GL1C_PERF_SEL_REQ_SHADER_INV', - 18: 'GL1C_PERF_SEL_REQ_MISS', - 19: 'GL1C_PERF_SEL_REQ_NOP_ACK', - 20: 'GL1C_PERF_SEL_REQ_NOP_RTN0', - 21: 'GL1C_PERF_SEL_REQ_READ', - 22: 'GL1C_PERF_SEL_REQ_READ_128B', - 23: 'GL1C_PERF_SEL_REQ_READ_32B', - 24: 'GL1C_PERF_SEL_REQ_READ_64B', - 25: 'GL1C_PERF_SEL_REQ_READ_POLICY_HIT_EVICT', - 26: 'GL1C_PERF_SEL_REQ_READ_POLICY_HIT_LRU', - 27: 'GL1C_PERF_SEL_REQ_READ_POLICY_MISS_EVICT', - 28: 'GL1C_PERF_SEL_REQ_WRITE', - 29: 'GL1C_PERF_SEL_REQ_WRITE_32B', - 30: 'GL1C_PERF_SEL_REQ_WRITE_64B', - 31: 'GL1C_PERF_SEL_STALL_GL2_GL1', - 32: 'GL1C_PERF_SEL_STALL_LFIFO_FULL', - 33: 'GL1C_PERF_SEL_STALL_NO_AVAILABLE_ACK_ALLOC', - 34: 'GL1C_PERF_SEL_STALL_NOTHING_REPLACEABLE', - 35: 'GL1C_PERF_SEL_STALL_GCR_INV', - 36: 'GL1C_PERF_SEL_STALL_VM', - 37: 'GL1C_PERF_SEL_REQ_CLIENT0', - 38: 'GL1C_PERF_SEL_REQ_CLIENT1', - 39: 'GL1C_PERF_SEL_REQ_CLIENT2', - 40: 'GL1C_PERF_SEL_REQ_CLIENT3', - 41: 'GL1C_PERF_SEL_REQ_CLIENT4', - 42: 'GL1C_PERF_SEL_REQ_CLIENT5', - 43: 'GL1C_PERF_SEL_REQ_CLIENT6', - 44: 'GL1C_PERF_SEL_REQ_CLIENT7', - 45: 'GL1C_PERF_SEL_REQ_CLIENT8', - 46: 'GL1C_PERF_SEL_REQ_CLIENT9', - 47: 'GL1C_PERF_SEL_REQ_CLIENT10', - 48: 'GL1C_PERF_SEL_REQ_CLIENT11', - 49: 'GL1C_PERF_SEL_REQ_CLIENT12', - 50: 'GL1C_PERF_SEL_REQ_CLIENT13', - 51: 'GL1C_PERF_SEL_REQ_CLIENT14', - 52: 'GL1C_PERF_SEL_REQ_CLIENT15', - 53: 'GL1C_PERF_SEL_REQ_CLIENT16', - 54: 'GL1C_PERF_SEL_REQ_CLIENT17', - 55: 'GL1C_PERF_SEL_REQ_CLIENT18', - 56: 'GL1C_PERF_SEL_REQ_CLIENT19', - 57: 'GL1C_PERF_SEL_REQ_CLIENT20', - 58: 'GL1C_PERF_SEL_REQ_CLIENT21', - 59: 'GL1C_PERF_SEL_REQ_CLIENT22', - 60: 'GL1C_PERF_SEL_REQ_CLIENT23', - 61: 'GL1C_PERF_SEL_REQ_CLIENT24', - 62: 'GL1C_PERF_SEL_REQ_CLIENT25', - 63: 'GL1C_PERF_SEL_REQ_CLIENT26', - 64: 'GL1C_PERF_SEL_REQ_CLIENT27', - 65: 'GL1C_PERF_SEL_UTCL0_REQUEST', - 66: 'GL1C_PERF_SEL_UTCL0_TRANSLATION_HIT', - 67: 'GL1C_PERF_SEL_UTCL0_TRANSLATION_MISS', - 68: 'GL1C_PERF_SEL_UTCL0_PERMISSION_MISS', - 69: 'GL1C_PERF_SEL_UTCL0_MISS_UNDER_MISS', - 70: 'GL1C_PERF_SEL_UTCL0_LFIFO_FULL', - 71: 'GL1C_PERF_SEL_UTCL0_STALL_INFLIGHT_MAX', - 72: 'GL1C_PERF_SEL_UTCL0_STALL_LFIFO_NOT_RES', - 73: 'GL1C_PERF_SEL_UTCL0_STALL_LRU_INFLIGHT', - 74: 'GL1C_PERF_SEL_UTCL0_STALL_MISSFIFO_FULL', - 75: 'GL1C_PERF_SEL_UTCL0_STALL_MULTI_MISS', - 76: 'GL1C_PERF_SEL_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS', - 77: 'GL1C_PERF_SEL_UTCL0_UTCL1_PERM_FAULT', - 78: 'GL1C_PERF_SEL_CLIENT_UTCL0_INFLIGHT', - 79: 'GL1C_PERF_SEL_UTCL0_UTCL1_INFLIGHT', - 80: 'GL1C_PERF_SEL_UTCL0_INTERNAL_RETRY_REQ', - 81: 'GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_RETRY_FAULT', - 82: 'GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_PRT_FAULT', - 83: 'GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_NO_RETRY_FAULT', -} -GL1C_PERF_SEL_CYCLE = 0 -GL1C_PERF_SEL_BUSY = 1 -GL1C_PERF_SEL_STARVE = 2 -GL1C_PERF_SEL_ARB_RET_LEVEL = 3 -GL1C_PERF_SEL_GL2_REQ_READ = 4 -GL1C_PERF_SEL_GL2_REQ_READ_128B = 5 -GL1C_PERF_SEL_GL2_REQ_READ_32B = 6 -GL1C_PERF_SEL_GL2_REQ_READ_64B = 7 -GL1C_PERF_SEL_GL2_REQ_READ_LATENCY = 8 -GL1C_PERF_SEL_GL2_REQ_WRITE = 9 -GL1C_PERF_SEL_GL2_REQ_WRITE_32B = 10 -GL1C_PERF_SEL_GL2_REQ_WRITE_64B = 11 -GL1C_PERF_SEL_GL2_REQ_WRITE_LATENCY = 12 -GL1C_PERF_SEL_GL2_REQ_PREFETCH = 13 -GL1C_PERF_SEL_REQ = 14 -GL1C_PERF_SEL_REQ_ATOMIC_WITH_RET = 15 -GL1C_PERF_SEL_REQ_ATOMIC_WITHOUT_RET = 16 -GL1C_PERF_SEL_REQ_SHADER_INV = 17 -GL1C_PERF_SEL_REQ_MISS = 18 -GL1C_PERF_SEL_REQ_NOP_ACK = 19 -GL1C_PERF_SEL_REQ_NOP_RTN0 = 20 -GL1C_PERF_SEL_REQ_READ = 21 -GL1C_PERF_SEL_REQ_READ_128B = 22 -GL1C_PERF_SEL_REQ_READ_32B = 23 -GL1C_PERF_SEL_REQ_READ_64B = 24 -GL1C_PERF_SEL_REQ_READ_POLICY_HIT_EVICT = 25 -GL1C_PERF_SEL_REQ_READ_POLICY_HIT_LRU = 26 -GL1C_PERF_SEL_REQ_READ_POLICY_MISS_EVICT = 27 -GL1C_PERF_SEL_REQ_WRITE = 28 -GL1C_PERF_SEL_REQ_WRITE_32B = 29 -GL1C_PERF_SEL_REQ_WRITE_64B = 30 -GL1C_PERF_SEL_STALL_GL2_GL1 = 31 -GL1C_PERF_SEL_STALL_LFIFO_FULL = 32 -GL1C_PERF_SEL_STALL_NO_AVAILABLE_ACK_ALLOC = 33 -GL1C_PERF_SEL_STALL_NOTHING_REPLACEABLE = 34 -GL1C_PERF_SEL_STALL_GCR_INV = 35 -GL1C_PERF_SEL_STALL_VM = 36 -GL1C_PERF_SEL_REQ_CLIENT0 = 37 -GL1C_PERF_SEL_REQ_CLIENT1 = 38 -GL1C_PERF_SEL_REQ_CLIENT2 = 39 -GL1C_PERF_SEL_REQ_CLIENT3 = 40 -GL1C_PERF_SEL_REQ_CLIENT4 = 41 -GL1C_PERF_SEL_REQ_CLIENT5 = 42 -GL1C_PERF_SEL_REQ_CLIENT6 = 43 -GL1C_PERF_SEL_REQ_CLIENT7 = 44 -GL1C_PERF_SEL_REQ_CLIENT8 = 45 -GL1C_PERF_SEL_REQ_CLIENT9 = 46 -GL1C_PERF_SEL_REQ_CLIENT10 = 47 -GL1C_PERF_SEL_REQ_CLIENT11 = 48 -GL1C_PERF_SEL_REQ_CLIENT12 = 49 -GL1C_PERF_SEL_REQ_CLIENT13 = 50 -GL1C_PERF_SEL_REQ_CLIENT14 = 51 -GL1C_PERF_SEL_REQ_CLIENT15 = 52 -GL1C_PERF_SEL_REQ_CLIENT16 = 53 -GL1C_PERF_SEL_REQ_CLIENT17 = 54 -GL1C_PERF_SEL_REQ_CLIENT18 = 55 -GL1C_PERF_SEL_REQ_CLIENT19 = 56 -GL1C_PERF_SEL_REQ_CLIENT20 = 57 -GL1C_PERF_SEL_REQ_CLIENT21 = 58 -GL1C_PERF_SEL_REQ_CLIENT22 = 59 -GL1C_PERF_SEL_REQ_CLIENT23 = 60 -GL1C_PERF_SEL_REQ_CLIENT24 = 61 -GL1C_PERF_SEL_REQ_CLIENT25 = 62 -GL1C_PERF_SEL_REQ_CLIENT26 = 63 -GL1C_PERF_SEL_REQ_CLIENT27 = 64 -GL1C_PERF_SEL_UTCL0_REQUEST = 65 -GL1C_PERF_SEL_UTCL0_TRANSLATION_HIT = 66 -GL1C_PERF_SEL_UTCL0_TRANSLATION_MISS = 67 -GL1C_PERF_SEL_UTCL0_PERMISSION_MISS = 68 -GL1C_PERF_SEL_UTCL0_MISS_UNDER_MISS = 69 -GL1C_PERF_SEL_UTCL0_LFIFO_FULL = 70 -GL1C_PERF_SEL_UTCL0_STALL_INFLIGHT_MAX = 71 -GL1C_PERF_SEL_UTCL0_STALL_LFIFO_NOT_RES = 72 -GL1C_PERF_SEL_UTCL0_STALL_LRU_INFLIGHT = 73 -GL1C_PERF_SEL_UTCL0_STALL_MISSFIFO_FULL = 74 -GL1C_PERF_SEL_UTCL0_STALL_MULTI_MISS = 75 -GL1C_PERF_SEL_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS = 76 -GL1C_PERF_SEL_UTCL0_UTCL1_PERM_FAULT = 77 -GL1C_PERF_SEL_CLIENT_UTCL0_INFLIGHT = 78 -GL1C_PERF_SEL_UTCL0_UTCL1_INFLIGHT = 79 -GL1C_PERF_SEL_UTCL0_INTERNAL_RETRY_REQ = 80 -GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_RETRY_FAULT = 81 -GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_PRT_FAULT = 82 -GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_NO_RETRY_FAULT = 83 -GL1C_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GL1H_REQ_PERF_SEL' -GL1H_REQ_PERF_SEL__enumvalues = { - 0: 'GL1H_REQ_PERF_SEL_BUSY', - 1: 'GL1H_REQ_PERF_SEL_STALL_GL1_0', - 2: 'GL1H_REQ_PERF_SEL_STALL_GL1_1', - 3: 'GL1H_REQ_PERF_SEL_REQUEST_GL1_0', - 4: 'GL1H_REQ_PERF_SEL_REQUEST_GL1_1', - 5: 'GL1H_REQ_PERF_SEL_WDS_32B_GL1_0', - 6: 'GL1H_REQ_PERF_SEL_WDS_32B_GL1_1', - 7: 'GL1H_REQ_PERF_SEL_BURST_COUNT_GL1_0', - 8: 'GL1H_REQ_PERF_SEL_BURST_COUNT_GL1_1', - 9: 'GL1H_REQ_PERF_SEL_ARB_REQUESTS', - 10: 'GL1H_REQ_PERF_SEL_REQ_INFLIGHT_LEVEL', - 11: 'GL1H_REQ_PERF_SEL_CYCLE', -} -GL1H_REQ_PERF_SEL_BUSY = 0 -GL1H_REQ_PERF_SEL_STALL_GL1_0 = 1 -GL1H_REQ_PERF_SEL_STALL_GL1_1 = 2 -GL1H_REQ_PERF_SEL_REQUEST_GL1_0 = 3 -GL1H_REQ_PERF_SEL_REQUEST_GL1_1 = 4 -GL1H_REQ_PERF_SEL_WDS_32B_GL1_0 = 5 -GL1H_REQ_PERF_SEL_WDS_32B_GL1_1 = 6 -GL1H_REQ_PERF_SEL_BURST_COUNT_GL1_0 = 7 -GL1H_REQ_PERF_SEL_BURST_COUNT_GL1_1 = 8 -GL1H_REQ_PERF_SEL_ARB_REQUESTS = 9 -GL1H_REQ_PERF_SEL_REQ_INFLIGHT_LEVEL = 10 -GL1H_REQ_PERF_SEL_CYCLE = 11 -GL1H_REQ_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TA_PERFCOUNT_SEL' -TA_PERFCOUNT_SEL__enumvalues = { - 0: 'TA_PERF_SEL_NULL', - 1: 'TA_PERF_SEL_image_sampler_has_offset_instructions', - 2: 'TA_PERF_SEL_image_sampler_has_bias_instructions', - 3: 'TA_PERF_SEL_image_sampler_has_reference_instructions', - 4: 'TA_PERF_SEL_image_sampler_has_ds_instructions', - 5: 'TA_PERF_SEL_image_sampler_has_dt_instructions', - 6: 'TA_PERF_SEL_image_sampler_has_dr_instructions', - 7: 'TA_PERF_SEL_gradient_busy', - 8: 'TA_PERF_SEL_gradient_fifo_busy', - 9: 'TA_PERF_SEL_lod_busy', - 10: 'TA_PERF_SEL_lod_fifo_busy', - 11: 'TA_PERF_SEL_addresser_busy', - 12: 'TA_PERF_SEL_addresser_fifo_busy', - 13: 'TA_PERF_SEL_aligner_busy', - 14: 'TA_PERF_SEL_write_path_busy', - 15: 'TA_PERF_SEL_ta_busy', - 16: 'TA_PERF_SEL_image_sampler_1_input_vgpr_instructions', - 17: 'TA_PERF_SEL_image_sampler_2_input_vgpr_instructions', - 18: 'TA_PERF_SEL_image_sampler_3_input_vgpr_instructions', - 19: 'TA_PERF_SEL_image_sampler_4_input_vgpr_instructions', - 20: 'TA_PERF_SEL_image_sampler_5_input_vgpr_instructions', - 21: 'TA_PERF_SEL_image_sampler_6_input_vgpr_instructions', - 22: 'TA_PERF_SEL_image_sampler_7_input_vgpr_instructions', - 23: 'TA_PERF_SEL_image_sampler_8_input_vgpr_instructions', - 24: 'TA_PERF_SEL_image_sampler_9_input_vgpr_instructions', - 25: 'TA_PERF_SEL_image_sampler_10_input_vgpr_instructions', - 26: 'TA_PERF_SEL_image_sampler_11_input_vgpr_instructions', - 27: 'TA_PERF_SEL_image_sampler_12_input_vgpr_instructions', - 28: 'TA_PERF_SEL_image_sampler_has_t_instructions', - 29: 'TA_PERF_SEL_image_sampler_has_r_instructions', - 30: 'TA_PERF_SEL_image_sampler_has_q_instructions', - 32: 'TA_PERF_SEL_total_wavefronts', - 33: 'TA_PERF_SEL_gradient_cycles', - 34: 'TA_PERF_SEL_walker_cycles', - 35: 'TA_PERF_SEL_aligner_cycles', - 36: 'TA_PERF_SEL_image_wavefronts', - 37: 'TA_PERF_SEL_image_read_wavefronts', - 38: 'TA_PERF_SEL_image_store_wavefronts', - 39: 'TA_PERF_SEL_image_atomic_wavefronts', - 40: 'TA_PERF_SEL_image_sampler_total_cycles', - 41: 'TA_PERF_SEL_image_nosampler_total_cycles', - 42: 'TA_PERF_SEL_flat_total_cycles', - 43: 'TA_PERF_SEL_bvh_total_cycles', - 44: 'TA_PERF_SEL_buffer_wavefronts', - 45: 'TA_PERF_SEL_buffer_load_wavefronts', - 46: 'TA_PERF_SEL_buffer_store_wavefronts', - 47: 'TA_PERF_SEL_buffer_atomic_wavefronts', - 49: 'TA_PERF_SEL_buffer_total_cycles', - 50: 'TA_PERF_SEL_buffer_1_address_input_vgpr_instructions', - 51: 'TA_PERF_SEL_buffer_2_address_input_vgpr_instructions', - 52: 'TA_PERF_SEL_buffer_has_index_instructions', - 53: 'TA_PERF_SEL_buffer_has_offset_instructions', - 54: 'TA_PERF_SEL_addr_stalled_by_tc_cycles', - 55: 'TA_PERF_SEL_addr_stalled_by_td_cycles', - 56: 'TA_PERF_SEL_image_sampler_wavefronts', - 57: 'TA_PERF_SEL_addresser_stalled_by_aligner_only_cycles', - 58: 'TA_PERF_SEL_addresser_stalled_cycles', - 59: 'TA_PERF_SEL_aniso_stalled_by_addresser_only_cycles', - 60: 'TA_PERF_SEL_aniso_stalled_cycles', - 61: 'TA_PERF_SEL_deriv_stalled_by_aniso_only_cycles', - 62: 'TA_PERF_SEL_deriv_stalled_cycles', - 63: 'TA_PERF_SEL_aniso_gt1_cycle_quads', - 64: 'TA_PERF_SEL_color_1_cycle_quads', - 65: 'TA_PERF_SEL_color_2_cycle_quads', - 66: 'TA_PERF_SEL_color_3_cycle_quads', - 68: 'TA_PERF_SEL_mip_1_cycle_quads', - 69: 'TA_PERF_SEL_mip_2_cycle_quads', - 70: 'TA_PERF_SEL_vol_1_cycle_quads', - 71: 'TA_PERF_SEL_vol_2_cycle_quads', - 72: 'TA_PERF_SEL_sampler_op_quads', - 73: 'TA_PERF_SEL_mipmap_lod_0_samples', - 74: 'TA_PERF_SEL_mipmap_lod_1_samples', - 75: 'TA_PERF_SEL_mipmap_lod_2_samples', - 76: 'TA_PERF_SEL_mipmap_lod_3_samples', - 77: 'TA_PERF_SEL_mipmap_lod_4_samples', - 78: 'TA_PERF_SEL_mipmap_lod_5_samples', - 79: 'TA_PERF_SEL_mipmap_lod_6_samples', - 80: 'TA_PERF_SEL_mipmap_lod_7_samples', - 81: 'TA_PERF_SEL_mipmap_lod_8_samples', - 82: 'TA_PERF_SEL_mipmap_lod_9_samples', - 83: 'TA_PERF_SEL_mipmap_lod_10_samples', - 84: 'TA_PERF_SEL_mipmap_lod_11_samples', - 85: 'TA_PERF_SEL_mipmap_lod_12_samples', - 86: 'TA_PERF_SEL_mipmap_lod_13_samples', - 87: 'TA_PERF_SEL_mipmap_lod_14_samples', - 88: 'TA_PERF_SEL_mipmap_invalid_samples', - 89: 'TA_PERF_SEL_aniso_1_cycle_quads', - 90: 'TA_PERF_SEL_aniso_2_cycle_quads', - 91: 'TA_PERF_SEL_aniso_4_cycle_quads', - 92: 'TA_PERF_SEL_aniso_6_cycle_quads', - 93: 'TA_PERF_SEL_aniso_8_cycle_quads', - 94: 'TA_PERF_SEL_aniso_10_cycle_quads', - 95: 'TA_PERF_SEL_aniso_12_cycle_quads', - 96: 'TA_PERF_SEL_aniso_14_cycle_quads', - 97: 'TA_PERF_SEL_aniso_16_cycle_quads', - 98: 'TA_PERF_SEL_store_write_data_input_cycles', - 99: 'TA_PERF_SEL_store_write_data_output_cycles', - 100: 'TA_PERF_SEL_flat_wavefronts', - 101: 'TA_PERF_SEL_flat_load_wavefronts', - 102: 'TA_PERF_SEL_flat_store_wavefronts', - 103: 'TA_PERF_SEL_flat_atomic_wavefronts', - 104: 'TA_PERF_SEL_flat_1_address_input_vgpr_instructions', - 105: 'TA_PERF_SEL_register_clk_valid_cycles', - 106: 'TA_PERF_SEL_non_harvestable_clk_enabled_cycles', - 107: 'TA_PERF_SEL_harvestable_clk_enabled_cycles', - 108: 'TA_PERF_SEL_harvestable_register_clk_enabled_cycles', - 109: 'TA_PERF_SEL_boundary_non_harvestable_clk_enabled_cycles', - 110: 'TA_PERF_SEL_boundary_harvestable_clk_enabled_cycles', - 114: 'TA_PERF_SEL_store_2_write_data_vgpr_instructions', - 115: 'TA_PERF_SEL_store_3_write_data_vgpr_instructions', - 116: 'TA_PERF_SEL_store_4_write_data_vgpr_instructions', - 117: 'TA_PERF_SEL_store_has_x_instructions', - 118: 'TA_PERF_SEL_store_has_y_instructions', - 119: 'TA_PERF_SEL_store_has_z_instructions', - 120: 'TA_PERF_SEL_store_has_w_instructions', - 121: 'TA_PERF_SEL_image_nosampler_has_t_instructions', - 122: 'TA_PERF_SEL_image_nosampler_has_r_instructions', - 123: 'TA_PERF_SEL_image_nosampler_has_q_instructions', - 124: 'TA_PERF_SEL_image_nosampler_1_address_input_vgpr_instructions', - 125: 'TA_PERF_SEL_image_nosampler_2_address_input_vgpr_instructions', - 126: 'TA_PERF_SEL_image_nosampler_3_address_input_vgpr_instructions', - 127: 'TA_PERF_SEL_image_nosampler_4_address_input_vgpr_instructions', - 128: 'TA_PERF_SEL_in_busy', - 129: 'TA_PERF_SEL_in_fifos_busy', - 130: 'TA_PERF_SEL_in_cfifo_busy', - 131: 'TA_PERF_SEL_in_qfifo_busy', - 132: 'TA_PERF_SEL_in_wfifo_busy', - 133: 'TA_PERF_SEL_in_rfifo_busy', - 134: 'TA_PERF_SEL_bf_busy', - 135: 'TA_PERF_SEL_ns_busy', - 136: 'TA_PERF_SEL_smp_busy_ns_idle', - 137: 'TA_PERF_SEL_smp_idle_ns_busy', - 144: 'TA_PERF_SEL_vmemcmd_cycles', - 145: 'TA_PERF_SEL_vmemreq_cycles', - 146: 'TA_PERF_SEL_in_waiting_on_req_cycles', - 150: 'TA_PERF_SEL_in_addr_cycles', - 151: 'TA_PERF_SEL_in_data_cycles', - 154: 'TA_PERF_SEL_latency_ram_weights_written_cycles', - 155: 'TA_PERF_SEL_latency_ram_ws_required_quads', - 156: 'TA_PERF_SEL_latency_ram_whv_required_quads', - 157: 'TA_PERF_SEL_latency_ram_ws_required_instructions', - 158: 'TA_PERF_SEL_latency_ram_whv_required_instructions', - 159: 'TA_PERF_SEL_latency_ram_ref_required_instructions', - 160: 'TA_PERF_SEL_point_sampled_quads', - 162: 'TA_PERF_SEL_atomic_2_write_data_vgpr_instructions', - 163: 'TA_PERF_SEL_atomic_4_write_data_vgpr_instructions', - 164: 'TA_PERF_SEL_atomic_write_data_input_cycles', - 165: 'TA_PERF_SEL_atomic_write_data_output_cycles', - 173: 'TA_PERF_SEL_num_unlit_nodes_ta_opt', - 174: 'TA_PERF_SEL_num_nodes_invalidated_due_to_bad_input', - 175: 'TA_PERF_SEL_num_nodes_invalidated_due_to_oob', - 176: 'TA_PERF_SEL_num_of_bvh_valid_first_tri', - 177: 'TA_PERF_SEL_num_of_bvh_valid_second_tri', - 178: 'TA_PERF_SEL_num_of_bvh_valid_third_tri', - 179: 'TA_PERF_SEL_num_of_bvh_valid_fourth_tri', - 180: 'TA_PERF_SEL_num_of_bvh_valid_fp16_box', - 181: 'TA_PERF_SEL_num_of_bvh_valid_fp32_box', - 182: 'TA_PERF_SEL_num_of_bvh_invalidated_first_tri', - 183: 'TA_PERF_SEL_num_of_bvh_invalidated_second_tri', - 184: 'TA_PERF_SEL_num_of_bvh_invalidated_third_tri', - 185: 'TA_PERF_SEL_num_of_bvh_invalidated_fourth_tri', - 186: 'TA_PERF_SEL_num_of_bvh_invalidated_fp16_box', - 187: 'TA_PERF_SEL_num_of_bvh_invalidated_fp32_box', - 188: 'TA_PERF_SEL_image_bvh_8_input_vgpr_instructions', - 189: 'TA_PERF_SEL_image_bvh_9_input_vgpr_instructions', - 190: 'TA_PERF_SEL_image_bvh_11_input_vgpr_instructions', - 191: 'TA_PERF_SEL_image_bvh_12_input_vgpr_instructions', - 192: 'TA_PERF_SEL_image_sampler_1_op_burst', - 193: 'TA_PERF_SEL_image_sampler_2to3_op_burst', - 194: 'TA_PERF_SEL_image_sampler_4to7_op_burst', - 195: 'TA_PERF_SEL_image_sampler_ge8_op_burst', - 196: 'TA_PERF_SEL_image_linked_1_op_burst', - 197: 'TA_PERF_SEL_image_linked_2to3_op_burst', - 198: 'TA_PERF_SEL_image_linked_4to7_op_burst', - 199: 'TA_PERF_SEL_image_linked_ge8_op_burst', - 200: 'TA_PERF_SEL_image_bvh_1_op_burst', - 201: 'TA_PERF_SEL_image_bvh_2to3_op_burst', - 202: 'TA_PERF_SEL_image_bvh_4to7_op_burst', - 203: 'TA_PERF_SEL_image_bvh_ge8_op_burst', - 204: 'TA_PERF_SEL_image_nosampler_1_op_burst', - 205: 'TA_PERF_SEL_image_nosampler_2to3_op_burst', - 206: 'TA_PERF_SEL_image_nosampler_4to31_op_burst', - 207: 'TA_PERF_SEL_image_nosampler_ge32_op_burst', - 208: 'TA_PERF_SEL_buffer_flat_1_op_burst', - 209: 'TA_PERF_SEL_buffer_flat_2to3_op_burst', - 210: 'TA_PERF_SEL_buffer_flat_4to31_op_burst', - 211: 'TA_PERF_SEL_buffer_flat_ge32_op_burst', - 212: 'TA_PERF_SEL_write_1_op_burst', - 213: 'TA_PERF_SEL_write_2to3_op_burst', - 214: 'TA_PERF_SEL_write_4to31_op_burst', - 215: 'TA_PERF_SEL_write_ge32_op_burst', - 216: 'TA_PERF_SEL_ibubble_1_cycle_burst', - 217: 'TA_PERF_SEL_ibubble_2to3_cycle_burst', - 218: 'TA_PERF_SEL_ibubble_4to15_cycle_burst', - 219: 'TA_PERF_SEL_ibubble_16to31_cycle_burst', - 220: 'TA_PERF_SEL_ibubble_32to63_cycle_burst', - 221: 'TA_PERF_SEL_ibubble_ge64_cycle_burst', - 224: 'TA_PERF_SEL_sampler_clk_valid_cycles', - 225: 'TA_PERF_SEL_nonsampler_clk_valid_cycles', - 226: 'TA_PERF_SEL_buffer_flat_clk_valid_cycles', - 227: 'TA_PERF_SEL_write_data_clk_valid_cycles', - 228: 'TA_PERF_SEL_gradient_clk_valid_cycles', - 229: 'TA_PERF_SEL_lod_aniso_clk_valid_cycles', - 230: 'TA_PERF_SEL_sampler_addressing_clk_valid_cycles', - 231: 'TA_PERF_SEL_sync_sampler_sstate_fifo_clk_valid_cycles', - 232: 'TA_PERF_SEL_sync_sampler_cstate_fifo_clk_valid_cycles', - 233: 'TA_PERF_SEL_sync_nonsampler_fifo_clk_valid_cycles', - 234: 'TA_PERF_SEL_aligner_clk_valid_cycles', - 235: 'TA_PERF_SEL_tcreq_clk_valid_cycles', -} -TA_PERF_SEL_NULL = 0 -TA_PERF_SEL_image_sampler_has_offset_instructions = 1 -TA_PERF_SEL_image_sampler_has_bias_instructions = 2 -TA_PERF_SEL_image_sampler_has_reference_instructions = 3 -TA_PERF_SEL_image_sampler_has_ds_instructions = 4 -TA_PERF_SEL_image_sampler_has_dt_instructions = 5 -TA_PERF_SEL_image_sampler_has_dr_instructions = 6 -TA_PERF_SEL_gradient_busy = 7 -TA_PERF_SEL_gradient_fifo_busy = 8 -TA_PERF_SEL_lod_busy = 9 -TA_PERF_SEL_lod_fifo_busy = 10 -TA_PERF_SEL_addresser_busy = 11 -TA_PERF_SEL_addresser_fifo_busy = 12 -TA_PERF_SEL_aligner_busy = 13 -TA_PERF_SEL_write_path_busy = 14 -TA_PERF_SEL_ta_busy = 15 -TA_PERF_SEL_image_sampler_1_input_vgpr_instructions = 16 -TA_PERF_SEL_image_sampler_2_input_vgpr_instructions = 17 -TA_PERF_SEL_image_sampler_3_input_vgpr_instructions = 18 -TA_PERF_SEL_image_sampler_4_input_vgpr_instructions = 19 -TA_PERF_SEL_image_sampler_5_input_vgpr_instructions = 20 -TA_PERF_SEL_image_sampler_6_input_vgpr_instructions = 21 -TA_PERF_SEL_image_sampler_7_input_vgpr_instructions = 22 -TA_PERF_SEL_image_sampler_8_input_vgpr_instructions = 23 -TA_PERF_SEL_image_sampler_9_input_vgpr_instructions = 24 -TA_PERF_SEL_image_sampler_10_input_vgpr_instructions = 25 -TA_PERF_SEL_image_sampler_11_input_vgpr_instructions = 26 -TA_PERF_SEL_image_sampler_12_input_vgpr_instructions = 27 -TA_PERF_SEL_image_sampler_has_t_instructions = 28 -TA_PERF_SEL_image_sampler_has_r_instructions = 29 -TA_PERF_SEL_image_sampler_has_q_instructions = 30 -TA_PERF_SEL_total_wavefronts = 32 -TA_PERF_SEL_gradient_cycles = 33 -TA_PERF_SEL_walker_cycles = 34 -TA_PERF_SEL_aligner_cycles = 35 -TA_PERF_SEL_image_wavefronts = 36 -TA_PERF_SEL_image_read_wavefronts = 37 -TA_PERF_SEL_image_store_wavefronts = 38 -TA_PERF_SEL_image_atomic_wavefronts = 39 -TA_PERF_SEL_image_sampler_total_cycles = 40 -TA_PERF_SEL_image_nosampler_total_cycles = 41 -TA_PERF_SEL_flat_total_cycles = 42 -TA_PERF_SEL_bvh_total_cycles = 43 -TA_PERF_SEL_buffer_wavefronts = 44 -TA_PERF_SEL_buffer_load_wavefronts = 45 -TA_PERF_SEL_buffer_store_wavefronts = 46 -TA_PERF_SEL_buffer_atomic_wavefronts = 47 -TA_PERF_SEL_buffer_total_cycles = 49 -TA_PERF_SEL_buffer_1_address_input_vgpr_instructions = 50 -TA_PERF_SEL_buffer_2_address_input_vgpr_instructions = 51 -TA_PERF_SEL_buffer_has_index_instructions = 52 -TA_PERF_SEL_buffer_has_offset_instructions = 53 -TA_PERF_SEL_addr_stalled_by_tc_cycles = 54 -TA_PERF_SEL_addr_stalled_by_td_cycles = 55 -TA_PERF_SEL_image_sampler_wavefronts = 56 -TA_PERF_SEL_addresser_stalled_by_aligner_only_cycles = 57 -TA_PERF_SEL_addresser_stalled_cycles = 58 -TA_PERF_SEL_aniso_stalled_by_addresser_only_cycles = 59 -TA_PERF_SEL_aniso_stalled_cycles = 60 -TA_PERF_SEL_deriv_stalled_by_aniso_only_cycles = 61 -TA_PERF_SEL_deriv_stalled_cycles = 62 -TA_PERF_SEL_aniso_gt1_cycle_quads = 63 -TA_PERF_SEL_color_1_cycle_quads = 64 -TA_PERF_SEL_color_2_cycle_quads = 65 -TA_PERF_SEL_color_3_cycle_quads = 66 -TA_PERF_SEL_mip_1_cycle_quads = 68 -TA_PERF_SEL_mip_2_cycle_quads = 69 -TA_PERF_SEL_vol_1_cycle_quads = 70 -TA_PERF_SEL_vol_2_cycle_quads = 71 -TA_PERF_SEL_sampler_op_quads = 72 -TA_PERF_SEL_mipmap_lod_0_samples = 73 -TA_PERF_SEL_mipmap_lod_1_samples = 74 -TA_PERF_SEL_mipmap_lod_2_samples = 75 -TA_PERF_SEL_mipmap_lod_3_samples = 76 -TA_PERF_SEL_mipmap_lod_4_samples = 77 -TA_PERF_SEL_mipmap_lod_5_samples = 78 -TA_PERF_SEL_mipmap_lod_6_samples = 79 -TA_PERF_SEL_mipmap_lod_7_samples = 80 -TA_PERF_SEL_mipmap_lod_8_samples = 81 -TA_PERF_SEL_mipmap_lod_9_samples = 82 -TA_PERF_SEL_mipmap_lod_10_samples = 83 -TA_PERF_SEL_mipmap_lod_11_samples = 84 -TA_PERF_SEL_mipmap_lod_12_samples = 85 -TA_PERF_SEL_mipmap_lod_13_samples = 86 -TA_PERF_SEL_mipmap_lod_14_samples = 87 -TA_PERF_SEL_mipmap_invalid_samples = 88 -TA_PERF_SEL_aniso_1_cycle_quads = 89 -TA_PERF_SEL_aniso_2_cycle_quads = 90 -TA_PERF_SEL_aniso_4_cycle_quads = 91 -TA_PERF_SEL_aniso_6_cycle_quads = 92 -TA_PERF_SEL_aniso_8_cycle_quads = 93 -TA_PERF_SEL_aniso_10_cycle_quads = 94 -TA_PERF_SEL_aniso_12_cycle_quads = 95 -TA_PERF_SEL_aniso_14_cycle_quads = 96 -TA_PERF_SEL_aniso_16_cycle_quads = 97 -TA_PERF_SEL_store_write_data_input_cycles = 98 -TA_PERF_SEL_store_write_data_output_cycles = 99 -TA_PERF_SEL_flat_wavefronts = 100 -TA_PERF_SEL_flat_load_wavefronts = 101 -TA_PERF_SEL_flat_store_wavefronts = 102 -TA_PERF_SEL_flat_atomic_wavefronts = 103 -TA_PERF_SEL_flat_1_address_input_vgpr_instructions = 104 -TA_PERF_SEL_register_clk_valid_cycles = 105 -TA_PERF_SEL_non_harvestable_clk_enabled_cycles = 106 -TA_PERF_SEL_harvestable_clk_enabled_cycles = 107 -TA_PERF_SEL_harvestable_register_clk_enabled_cycles = 108 -TA_PERF_SEL_boundary_non_harvestable_clk_enabled_cycles = 109 -TA_PERF_SEL_boundary_harvestable_clk_enabled_cycles = 110 -TA_PERF_SEL_store_2_write_data_vgpr_instructions = 114 -TA_PERF_SEL_store_3_write_data_vgpr_instructions = 115 -TA_PERF_SEL_store_4_write_data_vgpr_instructions = 116 -TA_PERF_SEL_store_has_x_instructions = 117 -TA_PERF_SEL_store_has_y_instructions = 118 -TA_PERF_SEL_store_has_z_instructions = 119 -TA_PERF_SEL_store_has_w_instructions = 120 -TA_PERF_SEL_image_nosampler_has_t_instructions = 121 -TA_PERF_SEL_image_nosampler_has_r_instructions = 122 -TA_PERF_SEL_image_nosampler_has_q_instructions = 123 -TA_PERF_SEL_image_nosampler_1_address_input_vgpr_instructions = 124 -TA_PERF_SEL_image_nosampler_2_address_input_vgpr_instructions = 125 -TA_PERF_SEL_image_nosampler_3_address_input_vgpr_instructions = 126 -TA_PERF_SEL_image_nosampler_4_address_input_vgpr_instructions = 127 -TA_PERF_SEL_in_busy = 128 -TA_PERF_SEL_in_fifos_busy = 129 -TA_PERF_SEL_in_cfifo_busy = 130 -TA_PERF_SEL_in_qfifo_busy = 131 -TA_PERF_SEL_in_wfifo_busy = 132 -TA_PERF_SEL_in_rfifo_busy = 133 -TA_PERF_SEL_bf_busy = 134 -TA_PERF_SEL_ns_busy = 135 -TA_PERF_SEL_smp_busy_ns_idle = 136 -TA_PERF_SEL_smp_idle_ns_busy = 137 -TA_PERF_SEL_vmemcmd_cycles = 144 -TA_PERF_SEL_vmemreq_cycles = 145 -TA_PERF_SEL_in_waiting_on_req_cycles = 146 -TA_PERF_SEL_in_addr_cycles = 150 -TA_PERF_SEL_in_data_cycles = 151 -TA_PERF_SEL_latency_ram_weights_written_cycles = 154 -TA_PERF_SEL_latency_ram_ws_required_quads = 155 -TA_PERF_SEL_latency_ram_whv_required_quads = 156 -TA_PERF_SEL_latency_ram_ws_required_instructions = 157 -TA_PERF_SEL_latency_ram_whv_required_instructions = 158 -TA_PERF_SEL_latency_ram_ref_required_instructions = 159 -TA_PERF_SEL_point_sampled_quads = 160 -TA_PERF_SEL_atomic_2_write_data_vgpr_instructions = 162 -TA_PERF_SEL_atomic_4_write_data_vgpr_instructions = 163 -TA_PERF_SEL_atomic_write_data_input_cycles = 164 -TA_PERF_SEL_atomic_write_data_output_cycles = 165 -TA_PERF_SEL_num_unlit_nodes_ta_opt = 173 -TA_PERF_SEL_num_nodes_invalidated_due_to_bad_input = 174 -TA_PERF_SEL_num_nodes_invalidated_due_to_oob = 175 -TA_PERF_SEL_num_of_bvh_valid_first_tri = 176 -TA_PERF_SEL_num_of_bvh_valid_second_tri = 177 -TA_PERF_SEL_num_of_bvh_valid_third_tri = 178 -TA_PERF_SEL_num_of_bvh_valid_fourth_tri = 179 -TA_PERF_SEL_num_of_bvh_valid_fp16_box = 180 -TA_PERF_SEL_num_of_bvh_valid_fp32_box = 181 -TA_PERF_SEL_num_of_bvh_invalidated_first_tri = 182 -TA_PERF_SEL_num_of_bvh_invalidated_second_tri = 183 -TA_PERF_SEL_num_of_bvh_invalidated_third_tri = 184 -TA_PERF_SEL_num_of_bvh_invalidated_fourth_tri = 185 -TA_PERF_SEL_num_of_bvh_invalidated_fp16_box = 186 -TA_PERF_SEL_num_of_bvh_invalidated_fp32_box = 187 -TA_PERF_SEL_image_bvh_8_input_vgpr_instructions = 188 -TA_PERF_SEL_image_bvh_9_input_vgpr_instructions = 189 -TA_PERF_SEL_image_bvh_11_input_vgpr_instructions = 190 -TA_PERF_SEL_image_bvh_12_input_vgpr_instructions = 191 -TA_PERF_SEL_image_sampler_1_op_burst = 192 -TA_PERF_SEL_image_sampler_2to3_op_burst = 193 -TA_PERF_SEL_image_sampler_4to7_op_burst = 194 -TA_PERF_SEL_image_sampler_ge8_op_burst = 195 -TA_PERF_SEL_image_linked_1_op_burst = 196 -TA_PERF_SEL_image_linked_2to3_op_burst = 197 -TA_PERF_SEL_image_linked_4to7_op_burst = 198 -TA_PERF_SEL_image_linked_ge8_op_burst = 199 -TA_PERF_SEL_image_bvh_1_op_burst = 200 -TA_PERF_SEL_image_bvh_2to3_op_burst = 201 -TA_PERF_SEL_image_bvh_4to7_op_burst = 202 -TA_PERF_SEL_image_bvh_ge8_op_burst = 203 -TA_PERF_SEL_image_nosampler_1_op_burst = 204 -TA_PERF_SEL_image_nosampler_2to3_op_burst = 205 -TA_PERF_SEL_image_nosampler_4to31_op_burst = 206 -TA_PERF_SEL_image_nosampler_ge32_op_burst = 207 -TA_PERF_SEL_buffer_flat_1_op_burst = 208 -TA_PERF_SEL_buffer_flat_2to3_op_burst = 209 -TA_PERF_SEL_buffer_flat_4to31_op_burst = 210 -TA_PERF_SEL_buffer_flat_ge32_op_burst = 211 -TA_PERF_SEL_write_1_op_burst = 212 -TA_PERF_SEL_write_2to3_op_burst = 213 -TA_PERF_SEL_write_4to31_op_burst = 214 -TA_PERF_SEL_write_ge32_op_burst = 215 -TA_PERF_SEL_ibubble_1_cycle_burst = 216 -TA_PERF_SEL_ibubble_2to3_cycle_burst = 217 -TA_PERF_SEL_ibubble_4to15_cycle_burst = 218 -TA_PERF_SEL_ibubble_16to31_cycle_burst = 219 -TA_PERF_SEL_ibubble_32to63_cycle_burst = 220 -TA_PERF_SEL_ibubble_ge64_cycle_burst = 221 -TA_PERF_SEL_sampler_clk_valid_cycles = 224 -TA_PERF_SEL_nonsampler_clk_valid_cycles = 225 -TA_PERF_SEL_buffer_flat_clk_valid_cycles = 226 -TA_PERF_SEL_write_data_clk_valid_cycles = 227 -TA_PERF_SEL_gradient_clk_valid_cycles = 228 -TA_PERF_SEL_lod_aniso_clk_valid_cycles = 229 -TA_PERF_SEL_sampler_addressing_clk_valid_cycles = 230 -TA_PERF_SEL_sync_sampler_sstate_fifo_clk_valid_cycles = 231 -TA_PERF_SEL_sync_sampler_cstate_fifo_clk_valid_cycles = 232 -TA_PERF_SEL_sync_nonsampler_fifo_clk_valid_cycles = 233 -TA_PERF_SEL_aligner_clk_valid_cycles = 234 -TA_PERF_SEL_tcreq_clk_valid_cycles = 235 -TA_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_BC_SWIZZLE' -TEX_BC_SWIZZLE__enumvalues = { - 0: 'TEX_BC_Swizzle_XYZW', - 1: 'TEX_BC_Swizzle_XWYZ', - 2: 'TEX_BC_Swizzle_WZYX', - 3: 'TEX_BC_Swizzle_WXYZ', - 4: 'TEX_BC_Swizzle_ZYXW', - 5: 'TEX_BC_Swizzle_YXWZ', -} -TEX_BC_Swizzle_XYZW = 0 -TEX_BC_Swizzle_XWYZ = 1 -TEX_BC_Swizzle_WZYX = 2 -TEX_BC_Swizzle_WXYZ = 3 -TEX_BC_Swizzle_ZYXW = 4 -TEX_BC_Swizzle_YXWZ = 5 -TEX_BC_SWIZZLE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_BORDER_COLOR_TYPE' -TEX_BORDER_COLOR_TYPE__enumvalues = { - 0: 'TEX_BorderColor_TransparentBlack', - 1: 'TEX_BorderColor_OpaqueBlack', - 2: 'TEX_BorderColor_OpaqueWhite', - 3: 'TEX_BorderColor_Register', -} -TEX_BorderColor_TransparentBlack = 0 -TEX_BorderColor_OpaqueBlack = 1 -TEX_BorderColor_OpaqueWhite = 2 -TEX_BorderColor_Register = 3 -TEX_BORDER_COLOR_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_CHROMA_KEY' -TEX_CHROMA_KEY__enumvalues = { - 0: 'TEX_ChromaKey_Disabled', - 1: 'TEX_ChromaKey_Kill', - 2: 'TEX_ChromaKey_Blend', - 3: 'TEX_ChromaKey_RESERVED_3', -} -TEX_ChromaKey_Disabled = 0 -TEX_ChromaKey_Kill = 1 -TEX_ChromaKey_Blend = 2 -TEX_ChromaKey_RESERVED_3 = 3 -TEX_CHROMA_KEY = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_CLAMP' -TEX_CLAMP__enumvalues = { - 0: 'TEX_Clamp_Repeat', - 1: 'TEX_Clamp_Mirror', - 2: 'TEX_Clamp_ClampToLast', - 3: 'TEX_Clamp_MirrorOnceToLast', - 4: 'TEX_Clamp_ClampHalfToBorder', - 5: 'TEX_Clamp_MirrorOnceHalfToBorder', - 6: 'TEX_Clamp_ClampToBorder', - 7: 'TEX_Clamp_MirrorOnceToBorder', -} -TEX_Clamp_Repeat = 0 -TEX_Clamp_Mirror = 1 -TEX_Clamp_ClampToLast = 2 -TEX_Clamp_MirrorOnceToLast = 3 -TEX_Clamp_ClampHalfToBorder = 4 -TEX_Clamp_MirrorOnceHalfToBorder = 5 -TEX_Clamp_ClampToBorder = 6 -TEX_Clamp_MirrorOnceToBorder = 7 -TEX_CLAMP = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_COORD_TYPE' -TEX_COORD_TYPE__enumvalues = { - 0: 'TEX_CoordType_Unnormalized', - 1: 'TEX_CoordType_Normalized', -} -TEX_CoordType_Unnormalized = 0 -TEX_CoordType_Normalized = 1 -TEX_COORD_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_DEPTH_COMPARE_FUNCTION' -TEX_DEPTH_COMPARE_FUNCTION__enumvalues = { - 0: 'TEX_DepthCompareFunction_Never', - 1: 'TEX_DepthCompareFunction_Less', - 2: 'TEX_DepthCompareFunction_Equal', - 3: 'TEX_DepthCompareFunction_LessEqual', - 4: 'TEX_DepthCompareFunction_Greater', - 5: 'TEX_DepthCompareFunction_NotEqual', - 6: 'TEX_DepthCompareFunction_GreaterEqual', - 7: 'TEX_DepthCompareFunction_Always', -} -TEX_DepthCompareFunction_Never = 0 -TEX_DepthCompareFunction_Less = 1 -TEX_DepthCompareFunction_Equal = 2 -TEX_DepthCompareFunction_LessEqual = 3 -TEX_DepthCompareFunction_Greater = 4 -TEX_DepthCompareFunction_NotEqual = 5 -TEX_DepthCompareFunction_GreaterEqual = 6 -TEX_DepthCompareFunction_Always = 7 -TEX_DEPTH_COMPARE_FUNCTION = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_FORMAT_COMP' -TEX_FORMAT_COMP__enumvalues = { - 0: 'TEX_FormatComp_Unsigned', - 1: 'TEX_FormatComp_Signed', - 2: 'TEX_FormatComp_UnsignedBiased', - 3: 'TEX_FormatComp_RESERVED_3', -} -TEX_FormatComp_Unsigned = 0 -TEX_FormatComp_Signed = 1 -TEX_FormatComp_UnsignedBiased = 2 -TEX_FormatComp_RESERVED_3 = 3 -TEX_FORMAT_COMP = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_MAX_ANISO_RATIO' -TEX_MAX_ANISO_RATIO__enumvalues = { - 0: 'TEX_MaxAnisoRatio_1to1', - 1: 'TEX_MaxAnisoRatio_2to1', - 2: 'TEX_MaxAnisoRatio_4to1', - 3: 'TEX_MaxAnisoRatio_8to1', - 4: 'TEX_MaxAnisoRatio_16to1', - 5: 'TEX_MaxAnisoRatio_RESERVED_5', - 6: 'TEX_MaxAnisoRatio_RESERVED_6', - 7: 'TEX_MaxAnisoRatio_RESERVED_7', -} -TEX_MaxAnisoRatio_1to1 = 0 -TEX_MaxAnisoRatio_2to1 = 1 -TEX_MaxAnisoRatio_4to1 = 2 -TEX_MaxAnisoRatio_8to1 = 3 -TEX_MaxAnisoRatio_16to1 = 4 -TEX_MaxAnisoRatio_RESERVED_5 = 5 -TEX_MaxAnisoRatio_RESERVED_6 = 6 -TEX_MaxAnisoRatio_RESERVED_7 = 7 -TEX_MAX_ANISO_RATIO = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_MIP_FILTER' -TEX_MIP_FILTER__enumvalues = { - 0: 'TEX_MipFilter_None', - 1: 'TEX_MipFilter_Point', - 2: 'TEX_MipFilter_Linear', - 3: 'TEX_MipFilter_Point_Aniso_Adj', -} -TEX_MipFilter_None = 0 -TEX_MipFilter_Point = 1 -TEX_MipFilter_Linear = 2 -TEX_MipFilter_Point_Aniso_Adj = 3 -TEX_MIP_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_REQUEST_SIZE' -TEX_REQUEST_SIZE__enumvalues = { - 0: 'TEX_RequestSize_32B', - 1: 'TEX_RequestSize_64B', - 2: 'TEX_RequestSize_128B', - 3: 'TEX_RequestSize_2X64B', -} -TEX_RequestSize_32B = 0 -TEX_RequestSize_64B = 1 -TEX_RequestSize_128B = 2 -TEX_RequestSize_2X64B = 3 -TEX_REQUEST_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_SAMPLER_TYPE' -TEX_SAMPLER_TYPE__enumvalues = { - 0: 'TEX_SamplerType_Invalid', - 1: 'TEX_SamplerType_Valid', -} -TEX_SamplerType_Invalid = 0 -TEX_SamplerType_Valid = 1 -TEX_SAMPLER_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_XY_FILTER' -TEX_XY_FILTER__enumvalues = { - 0: 'TEX_XYFilter_Point', - 1: 'TEX_XYFilter_Linear', - 2: 'TEX_XYFilter_AnisoPoint', - 3: 'TEX_XYFilter_AnisoLinear', -} -TEX_XYFilter_Point = 0 -TEX_XYFilter_Linear = 1 -TEX_XYFilter_AnisoPoint = 2 -TEX_XYFilter_AnisoLinear = 3 -TEX_XY_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_Z_FILTER' -TEX_Z_FILTER__enumvalues = { - 0: 'TEX_ZFilter_None', - 1: 'TEX_ZFilter_Point', - 2: 'TEX_ZFilter_Linear', - 3: 'TEX_ZFilter_RESERVED_3', -} -TEX_ZFilter_None = 0 -TEX_ZFilter_Point = 1 -TEX_ZFilter_Linear = 2 -TEX_ZFilter_RESERVED_3 = 3 -TEX_Z_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'TVX_TYPE' -TVX_TYPE__enumvalues = { - 0: 'TVX_Type_InvalidTextureResource', - 1: 'TVX_Type_InvalidVertexBuffer', - 2: 'TVX_Type_ValidTextureResource', - 3: 'TVX_Type_ValidVertexBuffer', -} -TVX_Type_InvalidTextureResource = 0 -TVX_Type_InvalidVertexBuffer = 1 -TVX_Type_ValidTextureResource = 2 -TVX_Type_ValidVertexBuffer = 3 -TVX_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TA_TC_ADDR_MODES' -TA_TC_ADDR_MODES__enumvalues = { - 0: 'TA_TC_ADDR_MODE_DEFAULT', - 1: 'TA_TC_ADDR_MODE_COMP0', - 2: 'TA_TC_ADDR_MODE_COMP1', - 3: 'TA_TC_ADDR_MODE_COMP2', - 4: 'TA_TC_ADDR_MODE_COMP3', - 5: 'TA_TC_ADDR_MODE_UNALIGNED', - 6: 'TA_TC_ADDR_MODE_BORDER_COLOR', -} -TA_TC_ADDR_MODE_DEFAULT = 0 -TA_TC_ADDR_MODE_COMP0 = 1 -TA_TC_ADDR_MODE_COMP1 = 2 -TA_TC_ADDR_MODE_COMP2 = 3 -TA_TC_ADDR_MODE_COMP3 = 4 -TA_TC_ADDR_MODE_UNALIGNED = 5 -TA_TC_ADDR_MODE_BORDER_COLOR = 6 -TA_TC_ADDR_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'TA_TC_REQ_MODES' -TA_TC_REQ_MODES__enumvalues = { - 0: 'TA_TC_REQ_MODE_BORDER', - 1: 'TA_TC_REQ_MODE_TEX2', - 2: 'TA_TC_REQ_MODE_TEX1', - 3: 'TA_TC_REQ_MODE_TEX0', - 4: 'TA_TC_REQ_MODE_NORMAL', - 5: 'TA_TC_REQ_MODE_DWORD', - 6: 'TA_TC_REQ_MODE_BYTE', - 7: 'TA_TC_REQ_MODE_BYTE_NV', -} -TA_TC_REQ_MODE_BORDER = 0 -TA_TC_REQ_MODE_TEX2 = 1 -TA_TC_REQ_MODE_TEX1 = 2 -TA_TC_REQ_MODE_TEX0 = 3 -TA_TC_REQ_MODE_NORMAL = 4 -TA_TC_REQ_MODE_DWORD = 5 -TA_TC_REQ_MODE_BYTE = 6 -TA_TC_REQ_MODE_BYTE_NV = 7 -TA_TC_REQ_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_CACHE_POLICIES' -TCP_CACHE_POLICIES__enumvalues = { - 0: 'TCP_CACHE_POLICY_MISS_LRU', - 1: 'TCP_CACHE_POLICY_MISS_EVICT', - 2: 'TCP_CACHE_POLICY_HIT_LRU', - 3: 'TCP_CACHE_POLICY_HIT_EVICT', -} -TCP_CACHE_POLICY_MISS_LRU = 0 -TCP_CACHE_POLICY_MISS_EVICT = 1 -TCP_CACHE_POLICY_HIT_LRU = 2 -TCP_CACHE_POLICY_HIT_EVICT = 3 -TCP_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_CACHE_STORE_POLICIES' -TCP_CACHE_STORE_POLICIES__enumvalues = { - 0: 'TCP_CACHE_STORE_POLICY_WT_LRU', - 1: 'TCP_CACHE_STORE_POLICY_WT_EVICT', -} -TCP_CACHE_STORE_POLICY_WT_LRU = 0 -TCP_CACHE_STORE_POLICY_WT_EVICT = 1 -TCP_CACHE_STORE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_DSM_DATA_SEL' -TCP_DSM_DATA_SEL__enumvalues = { - 0: 'TCP_DSM_DISABLE', - 1: 'TCP_DSM_SEL0', - 2: 'TCP_DSM_SEL1', - 3: 'TCP_DSM_SEL_BOTH', -} -TCP_DSM_DISABLE = 0 -TCP_DSM_SEL0 = 1 -TCP_DSM_SEL1 = 2 -TCP_DSM_SEL_BOTH = 3 -TCP_DSM_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_DSM_INJECT_SEL' -TCP_DSM_INJECT_SEL__enumvalues = { - 0: 'TCP_DSM_INJECT_SEL0', - 1: 'TCP_DSM_INJECT_SEL1', - 2: 'TCP_DSM_INJECT_SEL2', - 3: 'TCP_DSM_INJECT_SEL3', -} -TCP_DSM_INJECT_SEL0 = 0 -TCP_DSM_INJECT_SEL1 = 1 -TCP_DSM_INJECT_SEL2 = 2 -TCP_DSM_INJECT_SEL3 = 3 -TCP_DSM_INJECT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_DSM_SINGLE_WRITE' -TCP_DSM_SINGLE_WRITE__enumvalues = { - 0: 'TCP_DSM_SINGLE_WRITE_DIS', - 1: 'TCP_DSM_SINGLE_WRITE_EN', -} -TCP_DSM_SINGLE_WRITE_DIS = 0 -TCP_DSM_SINGLE_WRITE_EN = 1 -TCP_DSM_SINGLE_WRITE = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_OPCODE_TYPE' -TCP_OPCODE_TYPE__enumvalues = { - 0: 'TCP_OPCODE_READ', - 1: 'TCP_OPCODE_WRITE', - 2: 'TCP_OPCODE_ATOMIC', - 3: 'TCP_OPCODE_INV', - 4: 'TCP_OPCODE_ATOMIC_CMPSWAP', - 5: 'TCP_OPCODE_SAMPLER', - 6: 'TCP_OPCODE_LOAD', - 7: 'TCP_OPCODE_GATHERH', -} -TCP_OPCODE_READ = 0 -TCP_OPCODE_WRITE = 1 -TCP_OPCODE_ATOMIC = 2 -TCP_OPCODE_INV = 3 -TCP_OPCODE_ATOMIC_CMPSWAP = 4 -TCP_OPCODE_SAMPLER = 5 -TCP_OPCODE_LOAD = 6 -TCP_OPCODE_GATHERH = 7 -TCP_OPCODE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_PERFCOUNT_SELECT' -TCP_PERFCOUNT_SELECT__enumvalues = { - 0: 'TCP_PERF_SEL_GATE_EN1', - 1: 'TCP_PERF_SEL_GATE_EN2', - 2: 'TCP_PERF_SEL_TA_REQ', - 3: 'TCP_PERF_SEL_TA_REQ_STATE_READ', - 4: 'TCP_PERF_SEL_TA_REQ_READ', - 5: 'TCP_PERF_SEL_TA_REQ_WRITE', - 6: 'TCP_PERF_SEL_TA_REQ_ATOMIC_WITH_RET', - 7: 'TCP_PERF_SEL_TA_REQ_ATOMIC_WITHOUT_RET', - 8: 'TCP_PERF_SEL_TA_REQ_GL0_INV', - 9: 'TCP_PERF_SEL_REQ', - 10: 'TCP_PERF_SEL_REQ_READ', - 11: 'TCP_PERF_SEL_REQ_READ_HIT_EVICT', - 12: 'TCP_PERF_SEL_REQ_READ_HIT_LRU', - 13: 'TCP_PERF_SEL_REQ_READ_MISS_EVICT', - 14: 'TCP_PERF_SEL_REQ_WRITE', - 15: 'TCP_PERF_SEL_REQ_WRITE_MISS_EVICT', - 16: 'TCP_PERF_SEL_REQ_WRITE_MISS_LRU', - 17: 'TCP_PERF_SEL_REQ_NON_READ', - 18: 'TCP_PERF_SEL_REQ_MISS', - 19: 'TCP_PERF_SEL_REQ_TAGBANK0_SET0', - 20: 'TCP_PERF_SEL_REQ_TAGBANK0_SET1', - 21: 'TCP_PERF_SEL_REQ_TAGBANK1_SET0', - 22: 'TCP_PERF_SEL_REQ_TAGBANK1_SET1', - 23: 'TCP_PERF_SEL_REQ_TAGBANK2_SET0', - 24: 'TCP_PERF_SEL_REQ_TAGBANK2_SET1', - 25: 'TCP_PERF_SEL_REQ_TAGBANK3_SET0', - 26: 'TCP_PERF_SEL_REQ_TAGBANK3_SET1', - 27: 'TCP_PERF_SEL_REQ_MISS_TAGBANK0', - 28: 'TCP_PERF_SEL_REQ_MISS_TAGBANK1', - 29: 'TCP_PERF_SEL_REQ_MISS_TAGBANK2', - 30: 'TCP_PERF_SEL_REQ_MISS_TAGBANK3', - 31: 'TCP_PERF_SEL_GL1_REQ_READ', - 32: 'TCP_PERF_SEL_GL1_REQ_READ_128B', - 33: 'TCP_PERF_SEL_GL1_REQ_READ_64B', - 34: 'TCP_PERF_SEL_GL1_REQ_WRITE', - 35: 'TCP_PERF_SEL_GL1_REQ_ATOMIC_WITH_RET', - 36: 'TCP_PERF_SEL_GL1_REQ_ATOMIC_WITHOUT_RET', - 37: 'TCP_PERF_SEL_GL1_READ_LATENCY', - 38: 'TCP_PERF_SEL_GL1_WRITE_LATENCY', - 39: 'TCP_PERF_SEL_TCP_LATENCY', - 40: 'TCP_PERF_SEL_TCP_TA_REQ_STALL', - 41: 'TCP_PERF_SEL_TA_TCP_REQ_STARVE', - 42: 'TCP_PERF_SEL_DATA_FIFO_STALL', - 43: 'TCP_PERF_SEL_LOD_STALL', - 44: 'TCP_PERF_SEL_POWER_STALL', - 45: 'TCP_PERF_SEL_ALLOC_STALL', - 46: 'TCP_PERF_SEL_UNORDERED_MTYPE_STALL', - 47: 'TCP_PERF_SEL_READ_TAGCONFLICT_STALL', - 48: 'TCP_PERF_SEL_WRITE_TAGCONFLICT_STALL', - 49: 'TCP_PERF_SEL_ATOMIC_TAGCONFLICT_STALL', - 50: 'TCP_PERF_SEL_LFIFO_STALL', - 51: 'TCP_PERF_SEL_MEM_REQ_FIFO_STALL', - 52: 'TCP_PERF_SEL_GL1_TCP_BACK_PRESSURE', - 53: 'TCP_PERF_SEL_GL1_TCP_RDRET_STALL', - 54: 'TCP_PERF_SEL_GL1_GRANT_READ_STALL', - 55: 'TCP_PERF_SEL_GL1_PENDING_STALL', - 56: 'TCP_PERF_SEL_OFIFO_INCOMPLETE_STALL', - 57: 'TCP_PERF_SEL_OFIFO_AGE_ORDER_STALL', - 58: 'TCP_PERF_SEL_TD_DATA_CYCLE_STALL', - 59: 'TCP_PERF_SEL_COMP_TEX_LOAD_STALL', - 60: 'TCP_PERF_SEL_READ_DATACONFLICT_STALL', - 61: 'TCP_PERF_SEL_WRITE_DATACONFLICT_STALL', - 62: 'TCP_PERF_SEL_TD_TCP_STALL', -} -TCP_PERF_SEL_GATE_EN1 = 0 -TCP_PERF_SEL_GATE_EN2 = 1 -TCP_PERF_SEL_TA_REQ = 2 -TCP_PERF_SEL_TA_REQ_STATE_READ = 3 -TCP_PERF_SEL_TA_REQ_READ = 4 -TCP_PERF_SEL_TA_REQ_WRITE = 5 -TCP_PERF_SEL_TA_REQ_ATOMIC_WITH_RET = 6 -TCP_PERF_SEL_TA_REQ_ATOMIC_WITHOUT_RET = 7 -TCP_PERF_SEL_TA_REQ_GL0_INV = 8 -TCP_PERF_SEL_REQ = 9 -TCP_PERF_SEL_REQ_READ = 10 -TCP_PERF_SEL_REQ_READ_HIT_EVICT = 11 -TCP_PERF_SEL_REQ_READ_HIT_LRU = 12 -TCP_PERF_SEL_REQ_READ_MISS_EVICT = 13 -TCP_PERF_SEL_REQ_WRITE = 14 -TCP_PERF_SEL_REQ_WRITE_MISS_EVICT = 15 -TCP_PERF_SEL_REQ_WRITE_MISS_LRU = 16 -TCP_PERF_SEL_REQ_NON_READ = 17 -TCP_PERF_SEL_REQ_MISS = 18 -TCP_PERF_SEL_REQ_TAGBANK0_SET0 = 19 -TCP_PERF_SEL_REQ_TAGBANK0_SET1 = 20 -TCP_PERF_SEL_REQ_TAGBANK1_SET0 = 21 -TCP_PERF_SEL_REQ_TAGBANK1_SET1 = 22 -TCP_PERF_SEL_REQ_TAGBANK2_SET0 = 23 -TCP_PERF_SEL_REQ_TAGBANK2_SET1 = 24 -TCP_PERF_SEL_REQ_TAGBANK3_SET0 = 25 -TCP_PERF_SEL_REQ_TAGBANK3_SET1 = 26 -TCP_PERF_SEL_REQ_MISS_TAGBANK0 = 27 -TCP_PERF_SEL_REQ_MISS_TAGBANK1 = 28 -TCP_PERF_SEL_REQ_MISS_TAGBANK2 = 29 -TCP_PERF_SEL_REQ_MISS_TAGBANK3 = 30 -TCP_PERF_SEL_GL1_REQ_READ = 31 -TCP_PERF_SEL_GL1_REQ_READ_128B = 32 -TCP_PERF_SEL_GL1_REQ_READ_64B = 33 -TCP_PERF_SEL_GL1_REQ_WRITE = 34 -TCP_PERF_SEL_GL1_REQ_ATOMIC_WITH_RET = 35 -TCP_PERF_SEL_GL1_REQ_ATOMIC_WITHOUT_RET = 36 -TCP_PERF_SEL_GL1_READ_LATENCY = 37 -TCP_PERF_SEL_GL1_WRITE_LATENCY = 38 -TCP_PERF_SEL_TCP_LATENCY = 39 -TCP_PERF_SEL_TCP_TA_REQ_STALL = 40 -TCP_PERF_SEL_TA_TCP_REQ_STARVE = 41 -TCP_PERF_SEL_DATA_FIFO_STALL = 42 -TCP_PERF_SEL_LOD_STALL = 43 -TCP_PERF_SEL_POWER_STALL = 44 -TCP_PERF_SEL_ALLOC_STALL = 45 -TCP_PERF_SEL_UNORDERED_MTYPE_STALL = 46 -TCP_PERF_SEL_READ_TAGCONFLICT_STALL = 47 -TCP_PERF_SEL_WRITE_TAGCONFLICT_STALL = 48 -TCP_PERF_SEL_ATOMIC_TAGCONFLICT_STALL = 49 -TCP_PERF_SEL_LFIFO_STALL = 50 -TCP_PERF_SEL_MEM_REQ_FIFO_STALL = 51 -TCP_PERF_SEL_GL1_TCP_BACK_PRESSURE = 52 -TCP_PERF_SEL_GL1_TCP_RDRET_STALL = 53 -TCP_PERF_SEL_GL1_GRANT_READ_STALL = 54 -TCP_PERF_SEL_GL1_PENDING_STALL = 55 -TCP_PERF_SEL_OFIFO_INCOMPLETE_STALL = 56 -TCP_PERF_SEL_OFIFO_AGE_ORDER_STALL = 57 -TCP_PERF_SEL_TD_DATA_CYCLE_STALL = 58 -TCP_PERF_SEL_COMP_TEX_LOAD_STALL = 59 -TCP_PERF_SEL_READ_DATACONFLICT_STALL = 60 -TCP_PERF_SEL_WRITE_DATACONFLICT_STALL = 61 -TCP_PERF_SEL_TD_TCP_STALL = 62 -TCP_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_WATCH_MODES' -TCP_WATCH_MODES__enumvalues = { - 0: 'TCP_WATCH_MODE_READ', - 1: 'TCP_WATCH_MODE_NONREAD', - 2: 'TCP_WATCH_MODE_ATOMIC', - 3: 'TCP_WATCH_MODE_ALL', -} -TCP_WATCH_MODE_READ = 0 -TCP_WATCH_MODE_NONREAD = 1 -TCP_WATCH_MODE_ATOMIC = 2 -TCP_WATCH_MODE_ALL = 3 -TCP_WATCH_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'TD_PERFCOUNT_SEL' -TD_PERFCOUNT_SEL__enumvalues = { - 0: 'TD_PERF_SEL_none', - 1: 'TD_PERF_SEL_td_busy', - 2: 'TD_PERF_SEL_input_busy', - 3: 'TD_PERF_SEL_sampler_lerp_busy', - 4: 'TD_PERF_SEL_sampler_out_busy', - 5: 'TD_PERF_SEL_nofilter_busy', - 6: 'TD_PERF_SEL_ray_tracing_bvh4_busy', - 7: 'TD_PERF_SEL_sampler_core_sclk_en', - 8: 'TD_PERF_SEL_sampler_preformatter_sclk_en', - 9: 'TD_PERF_SEL_sampler_bilerp_sclk_en', - 10: 'TD_PERF_SEL_sampler_bypass_sclk_en', - 11: 'TD_PERF_SEL_sampler_minmax_sclk_en', - 12: 'TD_PERF_SEL_sampler_accum_sclk_en', - 13: 'TD_PERF_SEL_sampler_format_flt_sclk_en', - 14: 'TD_PERF_SEL_sampler_format_fxdpt_sclk_en', - 15: 'TD_PERF_SEL_sampler_out_sclk_en', - 16: 'TD_PERF_SEL_nofilter_sclk_en', - 17: 'TD_PERF_SEL_nofilter_d32_sclk_en', - 18: 'TD_PERF_SEL_nofilter_d16_sclk_en', - 22: 'TD_PERF_SEL_ray_tracing_bvh4_sclk_en', - 23: 'TD_PERF_SEL_ray_tracing_bvh4_ip_sclk_en', - 24: 'TD_PERF_SEL_ray_tracing_bvh4_box_sclk_en', - 25: 'TD_PERF_SEL_ray_tracing_bvh4_tri_sclk_en', - 26: 'TD_PERF_SEL_sampler_sclk_on_nofilter_sclk_off', - 27: 'TD_PERF_SEL_nofilter_sclk_on_sampler_sclk_off', - 28: 'TD_PERF_SEL_all_pipes_sclk_on_at_same_time', - 29: 'TD_PERF_SEL_sampler_and_nofilter_sclk_on_bvh4_sclk_off', - 30: 'TD_PERF_SEL_sampler_and_bvh4_sclk_on_nofilter_sclk_off', - 31: 'TD_PERF_SEL_nofilter_and_bvh4_sclk_on_sampler_sclk_off', - 32: 'TD_PERF_SEL_core_state_ram_max_cnt', - 33: 'TD_PERF_SEL_core_state_rams_read', - 34: 'TD_PERF_SEL_weight_data_rams_read', - 35: 'TD_PERF_SEL_reference_data_rams_read', - 36: 'TD_PERF_SEL_tc_td_ram_fifo_full', - 37: 'TD_PERF_SEL_tc_td_ram_fifo_max_cnt', - 38: 'TD_PERF_SEL_tc_td_data_fifo_full', - 39: 'TD_PERF_SEL_input_state_fifo_full', - 40: 'TD_PERF_SEL_ta_data_stall', - 41: 'TD_PERF_SEL_tc_data_stall', - 42: 'TD_PERF_SEL_tc_ram_stall', - 43: 'TD_PERF_SEL_lds_stall', - 44: 'TD_PERF_SEL_sampler_pkr_full', - 45: 'TD_PERF_SEL_sampler_pkr_full_due_to_arb', - 46: 'TD_PERF_SEL_nofilter_pkr_full', - 47: 'TD_PERF_SEL_nofilter_pkr_full_due_to_arb', - 48: 'TD_PERF_SEL_ray_tracing_bvh4_pkr_full', - 49: 'TD_PERF_SEL_ray_tracing_bvh4_pkr_full_due_to_arb', - 50: 'TD_PERF_SEL_gather4_instr', - 51: 'TD_PERF_SEL_gather4h_instr', - 54: 'TD_PERF_SEL_sample_instr', - 55: 'TD_PERF_SEL_sample_c_instr', - 56: 'TD_PERF_SEL_load_instr', - 57: 'TD_PERF_SEL_ldfptr_instr', - 58: 'TD_PERF_SEL_write_ack_instr', - 59: 'TD_PERF_SEL_d16_en_instr', - 60: 'TD_PERF_SEL_bypassLerp_instr', - 61: 'TD_PERF_SEL_min_max_filter_instr', - 62: 'TD_PERF_SEL_one_comp_return_instr', - 63: 'TD_PERF_SEL_two_comp_return_instr', - 64: 'TD_PERF_SEL_three_comp_return_instr', - 65: 'TD_PERF_SEL_four_comp_return_instr', - 66: 'TD_PERF_SEL_user_defined_border', - 67: 'TD_PERF_SEL_white_border', - 68: 'TD_PERF_SEL_opaque_black_border', - 69: 'TD_PERF_SEL_lod_warn_from_ta', - 70: 'TD_PERF_SEL_instruction_dest_is_lds', - 71: 'TD_PERF_SEL_td_cycling_of_nofilter_instr_2cycles', - 72: 'TD_PERF_SEL_td_cycling_of_nofilter_instr_4cycles', - 73: 'TD_PERF_SEL_tc_cycling_of_nofilter_instr_2cycles', - 74: 'TD_PERF_SEL_tc_cycling_of_nofilter_instr_4cycles', - 75: 'TD_PERF_SEL_out_of_order_instr', - 76: 'TD_PERF_SEL_total_num_instr', - 77: 'TD_PERF_SEL_total_num_instr_with_perf_wdw', - 78: 'TD_PERF_SEL_total_num_sampler_instr', - 79: 'TD_PERF_SEL_total_num_sampler_instr_with_perf_wdw', - 80: 'TD_PERF_SEL_total_num_nofilter_instr', - 81: 'TD_PERF_SEL_total_num_nofilter_instr_with_perf_wdw', - 82: 'TD_PERF_SEL_total_num_ray_tracing_bvh4_instr', - 83: 'TD_PERF_SEL_total_num_ray_tracing_bvh4_instr_with_perf_wdw', - 84: 'TD_PERF_SEL_mixmode_instr', - 85: 'TD_PERF_SEL_mixmode_resource', - 86: 'TD_PERF_SEL_status_packet', - 87: 'TD_PERF_SEL_address_cmd_poison', - 88: 'TD_PERF_SEL_data_poison', - 89: 'TD_PERF_SEL_done_scoreboard_max_stored_cnt', - 90: 'TD_PERF_SEL_done_scoreboard_max_waiting_cnt', - 91: 'TD_PERF_SEL_done_scoreboard_not_empty', - 92: 'TD_PERF_SEL_done_scoreboard_is_full', - 93: 'TD_PERF_SEL_done_scoreboard_bp_due_to_ooo', - 94: 'TD_PERF_SEL_done_scoreboard_bp_due_to_lds', - 95: 'TD_PERF_SEL_nofilter_formatters_turned_on', - 96: 'TD_PERF_SEL_nofilter_insert_extra_comps', - 97: 'TD_PERF_SEL_nofilter_popcount_dmask_gt_num_comp_of_fmt', - 98: 'TD_PERF_SEL_nofilter_popcount_dmask_lt_num_comp_of_fmt', - 99: 'TD_PERF_SEL_msaa_load_instr', - 100: 'TD_PERF_SEL_blend_prt_with_prt_default_0', - 101: 'TD_PERF_SEL_blend_prt_with_prt_default_1', - 102: 'TD_PERF_SEL_resmap_instr', - 103: 'TD_PERF_SEL_prt_ack_instr', - 104: 'TD_PERF_SEL_resmap_with_volume_filtering', - 105: 'TD_PERF_SEL_resmap_with_aniso_filtering', - 106: 'TD_PERF_SEL_resmap_with_no_more_filtering', - 107: 'TD_PERF_SEL_resmap_with_cubemap_corner', - 108: 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_0', - 109: 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_1', - 110: 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_2', - 111: 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_3to4', - 112: 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_5to8', - 113: 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_9to16', - 114: 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_17to31', - 115: 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_32', - 116: 'TD_PERF_SEL_ray_tracing_bvh4_fp16_box_node', - 117: 'TD_PERF_SEL_ray_tracing_bvh4_fp32_box_node', - 118: 'TD_PERF_SEL_ray_tracing_bvh4_tri_node', - 119: 'TD_PERF_SEL_ray_tracing_bvh4_dropped_box_node', - 120: 'TD_PERF_SEL_ray_tracing_bvh4_dropped_tri_node', - 121: 'TD_PERF_SEL_ray_tracing_bvh4_invalid_box_node', - 122: 'TD_PERF_SEL_ray_tracing_bvh4_invalid_tri_node', - 123: 'TD_PERF_SEL_ray_tracing_bvh4_box_sort_en', - 124: 'TD_PERF_SEL_ray_tracing_bvh4_box_grow_val_nonzero', - 125: 'TD_PERF_SEL_ray_tracing_bvh4_num_box_with_inf_or_nan_vtx', - 126: 'TD_PERF_SEL_ray_tracing_bvh4_num_tri_with_inf_or_nan_vtx', - 127: 'TD_PERF_SEL_ray_tracing_bvh4_num_box_that_squashed_a_nan', - 128: 'TD_PERF_SEL_ray_tracing_bvh4_num_box_misses', - 129: 'TD_PERF_SEL_ray_tracing_bvh4_num_tri_misses', - 130: 'TD_PERF_SEL_ray_tracing_bvh4_num_tri_tie_breakers', - 131: 'TD_PERF_SEL_burst_bin_preempting_nofilter_1', - 132: 'TD_PERF_SEL_burst_bin_preempting_nofilter_2to4', - 133: 'TD_PERF_SEL_burst_bin_preempting_nofilter_5to7', - 134: 'TD_PERF_SEL_burst_bin_preempting_nofilter_8to16', - 135: 'TD_PERF_SEL_burst_bin_preempting_nofilter_gt16', - 136: 'TD_PERF_SEL_burst_bin_sampler_1', - 137: 'TD_PERF_SEL_burst_bin_sampler_2to8', - 138: 'TD_PERF_SEL_burst_bin_sampler_9to16', - 139: 'TD_PERF_SEL_burst_bin_sampler_gt16', - 140: 'TD_PERF_SEL_burst_bin_gather_1', - 141: 'TD_PERF_SEL_burst_bin_gather_2to8', - 142: 'TD_PERF_SEL_burst_bin_gather_9to16', - 143: 'TD_PERF_SEL_burst_bin_gather_gt16', - 144: 'TD_PERF_SEL_burst_bin_nofilter_1', - 145: 'TD_PERF_SEL_burst_bin_nofilter_2to4', - 146: 'TD_PERF_SEL_burst_bin_nofilter_5to7', - 147: 'TD_PERF_SEL_burst_bin_nofilter_8to16', - 148: 'TD_PERF_SEL_burst_bin_nofilter_gt16', - 149: 'TD_PERF_SEL_burst_bin_bvh4_1', - 150: 'TD_PERF_SEL_burst_bin_bvh4_2to8', - 151: 'TD_PERF_SEL_burst_bin_bvh4_9to16', - 152: 'TD_PERF_SEL_burst_bin_bvh4_gt16', - 153: 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_1', - 154: 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_2to4', - 155: 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_5to7', - 156: 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_8to16', - 157: 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_gt16', - 158: 'TD_PERF_SEL_burst_bin_bvh4_tri_nodes_1', - 159: 'TD_PERF_SEL_burst_bin_bvh4_tri_nodes_2to8', - 160: 'TD_PERF_SEL_burst_bin_bvh4_tri_nodes_9to16', - 161: 'TD_PERF_SEL_burst_bin_bvh4_tri_nodes_gt16', - 162: 'TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_1', - 163: 'TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_2to8', - 164: 'TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_9to16', - 165: 'TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_gt16', - 166: 'TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_1', - 167: 'TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_2to8', - 168: 'TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_9to16', - 169: 'TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_gt16', - 170: 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_0', - 171: 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_1', - 172: 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_2to31', - 173: 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_32to127', - 174: 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_128to511', - 175: 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_gt511', - 176: 'TD_PERF_SEL_bubble_bin_lds_stall_1to3', - 177: 'TD_PERF_SEL_bubble_bin_lds_stall_4to7', - 178: 'TD_PERF_SEL_bubble_bin_lds_stall_8to15', - 179: 'TD_PERF_SEL_bubble_bin_lds_stall_gt15', - 180: 'TD_PERF_SEL_preempting_nofilter_max_cnt', - 181: 'TD_PERF_SEL_sampler_lerp0_active', - 182: 'TD_PERF_SEL_sampler_lerp1_active', - 183: 'TD_PERF_SEL_sampler_lerp2_active', - 184: 'TD_PERF_SEL_sampler_lerp3_active', - 185: 'TD_PERF_SEL_nofilter_total_num_comps_to_lds', - 186: 'TD_PERF_SEL_nofilter_byte_cycling_4cycles', - 187: 'TD_PERF_SEL_nofilter_byte_cycling_8cycles', - 188: 'TD_PERF_SEL_nofilter_byte_cycling_16cycles', - 189: 'TD_PERF_SEL_nofilter_dword_cycling_2cycles', - 190: 'TD_PERF_SEL_nofilter_dword_cycling_4cycles', - 191: 'TD_PERF_SEL_input_bp_due_to_done_scoreboard_full', - 192: 'TD_PERF_SEL_ray_tracing_bvh4_instr_invld_thread_cnt', -} -TD_PERF_SEL_none = 0 -TD_PERF_SEL_td_busy = 1 -TD_PERF_SEL_input_busy = 2 -TD_PERF_SEL_sampler_lerp_busy = 3 -TD_PERF_SEL_sampler_out_busy = 4 -TD_PERF_SEL_nofilter_busy = 5 -TD_PERF_SEL_ray_tracing_bvh4_busy = 6 -TD_PERF_SEL_sampler_core_sclk_en = 7 -TD_PERF_SEL_sampler_preformatter_sclk_en = 8 -TD_PERF_SEL_sampler_bilerp_sclk_en = 9 -TD_PERF_SEL_sampler_bypass_sclk_en = 10 -TD_PERF_SEL_sampler_minmax_sclk_en = 11 -TD_PERF_SEL_sampler_accum_sclk_en = 12 -TD_PERF_SEL_sampler_format_flt_sclk_en = 13 -TD_PERF_SEL_sampler_format_fxdpt_sclk_en = 14 -TD_PERF_SEL_sampler_out_sclk_en = 15 -TD_PERF_SEL_nofilter_sclk_en = 16 -TD_PERF_SEL_nofilter_d32_sclk_en = 17 -TD_PERF_SEL_nofilter_d16_sclk_en = 18 -TD_PERF_SEL_ray_tracing_bvh4_sclk_en = 22 -TD_PERF_SEL_ray_tracing_bvh4_ip_sclk_en = 23 -TD_PERF_SEL_ray_tracing_bvh4_box_sclk_en = 24 -TD_PERF_SEL_ray_tracing_bvh4_tri_sclk_en = 25 -TD_PERF_SEL_sampler_sclk_on_nofilter_sclk_off = 26 -TD_PERF_SEL_nofilter_sclk_on_sampler_sclk_off = 27 -TD_PERF_SEL_all_pipes_sclk_on_at_same_time = 28 -TD_PERF_SEL_sampler_and_nofilter_sclk_on_bvh4_sclk_off = 29 -TD_PERF_SEL_sampler_and_bvh4_sclk_on_nofilter_sclk_off = 30 -TD_PERF_SEL_nofilter_and_bvh4_sclk_on_sampler_sclk_off = 31 -TD_PERF_SEL_core_state_ram_max_cnt = 32 -TD_PERF_SEL_core_state_rams_read = 33 -TD_PERF_SEL_weight_data_rams_read = 34 -TD_PERF_SEL_reference_data_rams_read = 35 -TD_PERF_SEL_tc_td_ram_fifo_full = 36 -TD_PERF_SEL_tc_td_ram_fifo_max_cnt = 37 -TD_PERF_SEL_tc_td_data_fifo_full = 38 -TD_PERF_SEL_input_state_fifo_full = 39 -TD_PERF_SEL_ta_data_stall = 40 -TD_PERF_SEL_tc_data_stall = 41 -TD_PERF_SEL_tc_ram_stall = 42 -TD_PERF_SEL_lds_stall = 43 -TD_PERF_SEL_sampler_pkr_full = 44 -TD_PERF_SEL_sampler_pkr_full_due_to_arb = 45 -TD_PERF_SEL_nofilter_pkr_full = 46 -TD_PERF_SEL_nofilter_pkr_full_due_to_arb = 47 -TD_PERF_SEL_ray_tracing_bvh4_pkr_full = 48 -TD_PERF_SEL_ray_tracing_bvh4_pkr_full_due_to_arb = 49 -TD_PERF_SEL_gather4_instr = 50 -TD_PERF_SEL_gather4h_instr = 51 -TD_PERF_SEL_sample_instr = 54 -TD_PERF_SEL_sample_c_instr = 55 -TD_PERF_SEL_load_instr = 56 -TD_PERF_SEL_ldfptr_instr = 57 -TD_PERF_SEL_write_ack_instr = 58 -TD_PERF_SEL_d16_en_instr = 59 -TD_PERF_SEL_bypassLerp_instr = 60 -TD_PERF_SEL_min_max_filter_instr = 61 -TD_PERF_SEL_one_comp_return_instr = 62 -TD_PERF_SEL_two_comp_return_instr = 63 -TD_PERF_SEL_three_comp_return_instr = 64 -TD_PERF_SEL_four_comp_return_instr = 65 -TD_PERF_SEL_user_defined_border = 66 -TD_PERF_SEL_white_border = 67 -TD_PERF_SEL_opaque_black_border = 68 -TD_PERF_SEL_lod_warn_from_ta = 69 -TD_PERF_SEL_instruction_dest_is_lds = 70 -TD_PERF_SEL_td_cycling_of_nofilter_instr_2cycles = 71 -TD_PERF_SEL_td_cycling_of_nofilter_instr_4cycles = 72 -TD_PERF_SEL_tc_cycling_of_nofilter_instr_2cycles = 73 -TD_PERF_SEL_tc_cycling_of_nofilter_instr_4cycles = 74 -TD_PERF_SEL_out_of_order_instr = 75 -TD_PERF_SEL_total_num_instr = 76 -TD_PERF_SEL_total_num_instr_with_perf_wdw = 77 -TD_PERF_SEL_total_num_sampler_instr = 78 -TD_PERF_SEL_total_num_sampler_instr_with_perf_wdw = 79 -TD_PERF_SEL_total_num_nofilter_instr = 80 -TD_PERF_SEL_total_num_nofilter_instr_with_perf_wdw = 81 -TD_PERF_SEL_total_num_ray_tracing_bvh4_instr = 82 -TD_PERF_SEL_total_num_ray_tracing_bvh4_instr_with_perf_wdw = 83 -TD_PERF_SEL_mixmode_instr = 84 -TD_PERF_SEL_mixmode_resource = 85 -TD_PERF_SEL_status_packet = 86 -TD_PERF_SEL_address_cmd_poison = 87 -TD_PERF_SEL_data_poison = 88 -TD_PERF_SEL_done_scoreboard_max_stored_cnt = 89 -TD_PERF_SEL_done_scoreboard_max_waiting_cnt = 90 -TD_PERF_SEL_done_scoreboard_not_empty = 91 -TD_PERF_SEL_done_scoreboard_is_full = 92 -TD_PERF_SEL_done_scoreboard_bp_due_to_ooo = 93 -TD_PERF_SEL_done_scoreboard_bp_due_to_lds = 94 -TD_PERF_SEL_nofilter_formatters_turned_on = 95 -TD_PERF_SEL_nofilter_insert_extra_comps = 96 -TD_PERF_SEL_nofilter_popcount_dmask_gt_num_comp_of_fmt = 97 -TD_PERF_SEL_nofilter_popcount_dmask_lt_num_comp_of_fmt = 98 -TD_PERF_SEL_msaa_load_instr = 99 -TD_PERF_SEL_blend_prt_with_prt_default_0 = 100 -TD_PERF_SEL_blend_prt_with_prt_default_1 = 101 -TD_PERF_SEL_resmap_instr = 102 -TD_PERF_SEL_prt_ack_instr = 103 -TD_PERF_SEL_resmap_with_volume_filtering = 104 -TD_PERF_SEL_resmap_with_aniso_filtering = 105 -TD_PERF_SEL_resmap_with_no_more_filtering = 106 -TD_PERF_SEL_resmap_with_cubemap_corner = 107 -TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_0 = 108 -TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_1 = 109 -TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_2 = 110 -TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_3to4 = 111 -TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_5to8 = 112 -TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_9to16 = 113 -TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_17to31 = 114 -TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_32 = 115 -TD_PERF_SEL_ray_tracing_bvh4_fp16_box_node = 116 -TD_PERF_SEL_ray_tracing_bvh4_fp32_box_node = 117 -TD_PERF_SEL_ray_tracing_bvh4_tri_node = 118 -TD_PERF_SEL_ray_tracing_bvh4_dropped_box_node = 119 -TD_PERF_SEL_ray_tracing_bvh4_dropped_tri_node = 120 -TD_PERF_SEL_ray_tracing_bvh4_invalid_box_node = 121 -TD_PERF_SEL_ray_tracing_bvh4_invalid_tri_node = 122 -TD_PERF_SEL_ray_tracing_bvh4_box_sort_en = 123 -TD_PERF_SEL_ray_tracing_bvh4_box_grow_val_nonzero = 124 -TD_PERF_SEL_ray_tracing_bvh4_num_box_with_inf_or_nan_vtx = 125 -TD_PERF_SEL_ray_tracing_bvh4_num_tri_with_inf_or_nan_vtx = 126 -TD_PERF_SEL_ray_tracing_bvh4_num_box_that_squashed_a_nan = 127 -TD_PERF_SEL_ray_tracing_bvh4_num_box_misses = 128 -TD_PERF_SEL_ray_tracing_bvh4_num_tri_misses = 129 -TD_PERF_SEL_ray_tracing_bvh4_num_tri_tie_breakers = 130 -TD_PERF_SEL_burst_bin_preempting_nofilter_1 = 131 -TD_PERF_SEL_burst_bin_preempting_nofilter_2to4 = 132 -TD_PERF_SEL_burst_bin_preempting_nofilter_5to7 = 133 -TD_PERF_SEL_burst_bin_preempting_nofilter_8to16 = 134 -TD_PERF_SEL_burst_bin_preempting_nofilter_gt16 = 135 -TD_PERF_SEL_burst_bin_sampler_1 = 136 -TD_PERF_SEL_burst_bin_sampler_2to8 = 137 -TD_PERF_SEL_burst_bin_sampler_9to16 = 138 -TD_PERF_SEL_burst_bin_sampler_gt16 = 139 -TD_PERF_SEL_burst_bin_gather_1 = 140 -TD_PERF_SEL_burst_bin_gather_2to8 = 141 -TD_PERF_SEL_burst_bin_gather_9to16 = 142 -TD_PERF_SEL_burst_bin_gather_gt16 = 143 -TD_PERF_SEL_burst_bin_nofilter_1 = 144 -TD_PERF_SEL_burst_bin_nofilter_2to4 = 145 -TD_PERF_SEL_burst_bin_nofilter_5to7 = 146 -TD_PERF_SEL_burst_bin_nofilter_8to16 = 147 -TD_PERF_SEL_burst_bin_nofilter_gt16 = 148 -TD_PERF_SEL_burst_bin_bvh4_1 = 149 -TD_PERF_SEL_burst_bin_bvh4_2to8 = 150 -TD_PERF_SEL_burst_bin_bvh4_9to16 = 151 -TD_PERF_SEL_burst_bin_bvh4_gt16 = 152 -TD_PERF_SEL_burst_bin_bvh4_box_nodes_1 = 153 -TD_PERF_SEL_burst_bin_bvh4_box_nodes_2to4 = 154 -TD_PERF_SEL_burst_bin_bvh4_box_nodes_5to7 = 155 -TD_PERF_SEL_burst_bin_bvh4_box_nodes_8to16 = 156 -TD_PERF_SEL_burst_bin_bvh4_box_nodes_gt16 = 157 -TD_PERF_SEL_burst_bin_bvh4_tri_nodes_1 = 158 -TD_PERF_SEL_burst_bin_bvh4_tri_nodes_2to8 = 159 -TD_PERF_SEL_burst_bin_bvh4_tri_nodes_9to16 = 160 -TD_PERF_SEL_burst_bin_bvh4_tri_nodes_gt16 = 161 -TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_1 = 162 -TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_2to8 = 163 -TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_9to16 = 164 -TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_gt16 = 165 -TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_1 = 166 -TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_2to8 = 167 -TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_9to16 = 168 -TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_gt16 = 169 -TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_0 = 170 -TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_1 = 171 -TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_2to31 = 172 -TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_32to127 = 173 -TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_128to511 = 174 -TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_gt511 = 175 -TD_PERF_SEL_bubble_bin_lds_stall_1to3 = 176 -TD_PERF_SEL_bubble_bin_lds_stall_4to7 = 177 -TD_PERF_SEL_bubble_bin_lds_stall_8to15 = 178 -TD_PERF_SEL_bubble_bin_lds_stall_gt15 = 179 -TD_PERF_SEL_preempting_nofilter_max_cnt = 180 -TD_PERF_SEL_sampler_lerp0_active = 181 -TD_PERF_SEL_sampler_lerp1_active = 182 -TD_PERF_SEL_sampler_lerp2_active = 183 -TD_PERF_SEL_sampler_lerp3_active = 184 -TD_PERF_SEL_nofilter_total_num_comps_to_lds = 185 -TD_PERF_SEL_nofilter_byte_cycling_4cycles = 186 -TD_PERF_SEL_nofilter_byte_cycling_8cycles = 187 -TD_PERF_SEL_nofilter_byte_cycling_16cycles = 188 -TD_PERF_SEL_nofilter_dword_cycling_2cycles = 189 -TD_PERF_SEL_nofilter_dword_cycling_4cycles = 190 -TD_PERF_SEL_input_bp_due_to_done_scoreboard_full = 191 -TD_PERF_SEL_ray_tracing_bvh4_instr_invld_thread_cnt = 192 -TD_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GL2A_PERF_SEL' -GL2A_PERF_SEL__enumvalues = { - 0: 'GL2A_PERF_SEL_NONE', - 1: 'GL2A_PERF_SEL_CYCLE', - 2: 'GL2A_PERF_SEL_BUSY', - 3: 'GL2A_PERF_SEL_REQ_GL2C0', - 4: 'GL2A_PERF_SEL_REQ_GL2C1', - 5: 'GL2A_PERF_SEL_REQ_GL2C2', - 6: 'GL2A_PERF_SEL_REQ_GL2C3', - 7: 'GL2A_PERF_SEL_REQ_GL2C4', - 8: 'GL2A_PERF_SEL_REQ_GL2C5', - 9: 'GL2A_PERF_SEL_REQ_GL2C6', - 10: 'GL2A_PERF_SEL_REQ_GL2C7', - 11: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C0', - 12: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C1', - 13: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C2', - 14: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C3', - 15: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C4', - 16: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C5', - 17: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C6', - 18: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C7', - 19: 'GL2A_PERF_SEL_REQ_BURST_GL2C0', - 20: 'GL2A_PERF_SEL_REQ_BURST_GL2C1', - 21: 'GL2A_PERF_SEL_REQ_BURST_GL2C2', - 22: 'GL2A_PERF_SEL_REQ_BURST_GL2C3', - 23: 'GL2A_PERF_SEL_REQ_BURST_GL2C4', - 24: 'GL2A_PERF_SEL_REQ_BURST_GL2C5', - 25: 'GL2A_PERF_SEL_REQ_BURST_GL2C6', - 26: 'GL2A_PERF_SEL_REQ_BURST_GL2C7', - 27: 'GL2A_PERF_SEL_REQ_STALL_GL2C0', - 28: 'GL2A_PERF_SEL_REQ_STALL_GL2C1', - 29: 'GL2A_PERF_SEL_REQ_STALL_GL2C2', - 30: 'GL2A_PERF_SEL_REQ_STALL_GL2C3', - 31: 'GL2A_PERF_SEL_REQ_STALL_GL2C4', - 32: 'GL2A_PERF_SEL_REQ_STALL_GL2C5', - 33: 'GL2A_PERF_SEL_REQ_STALL_GL2C6', - 34: 'GL2A_PERF_SEL_REQ_STALL_GL2C7', - 35: 'GL2A_PERF_SEL_RTN_STALL_GL2C0', - 36: 'GL2A_PERF_SEL_RTN_STALL_GL2C1', - 37: 'GL2A_PERF_SEL_RTN_STALL_GL2C2', - 38: 'GL2A_PERF_SEL_RTN_STALL_GL2C3', - 39: 'GL2A_PERF_SEL_RTN_STALL_GL2C4', - 40: 'GL2A_PERF_SEL_RTN_STALL_GL2C5', - 41: 'GL2A_PERF_SEL_RTN_STALL_GL2C6', - 42: 'GL2A_PERF_SEL_RTN_STALL_GL2C7', - 43: 'GL2A_PERF_SEL_RTN_CLIENT0', - 44: 'GL2A_PERF_SEL_RTN_CLIENT1', - 45: 'GL2A_PERF_SEL_RTN_CLIENT2', - 46: 'GL2A_PERF_SEL_RTN_CLIENT3', - 47: 'GL2A_PERF_SEL_RTN_CLIENT4', - 48: 'GL2A_PERF_SEL_RTN_CLIENT5', - 49: 'GL2A_PERF_SEL_RTN_CLIENT6', - 50: 'GL2A_PERF_SEL_RTN_CLIENT7', - 51: 'GL2A_PERF_SEL_RTN_CLIENT8', - 52: 'GL2A_PERF_SEL_RTN_CLIENT9', - 53: 'GL2A_PERF_SEL_RTN_CLIENT10', - 54: 'GL2A_PERF_SEL_RTN_CLIENT11', - 55: 'GL2A_PERF_SEL_RTN_CLIENT12', - 56: 'GL2A_PERF_SEL_RTN_CLIENT13', - 57: 'GL2A_PERF_SEL_RTN_CLIENT14', - 58: 'GL2A_PERF_SEL_RTN_CLIENT15', - 59: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT0', - 60: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT1', - 61: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT2', - 62: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT3', - 63: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT4', - 64: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT5', - 65: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT6', - 66: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT7', - 67: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT8', - 68: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT9', - 69: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT10', - 70: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT11', - 71: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT12', - 72: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT13', - 73: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT14', - 74: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT15', - 75: 'GL2A_PERF_SEL_REQ_BURST_CLIENT0', - 76: 'GL2A_PERF_SEL_REQ_BURST_CLIENT1', - 77: 'GL2A_PERF_SEL_REQ_BURST_CLIENT2', - 78: 'GL2A_PERF_SEL_REQ_BURST_CLIENT3', - 79: 'GL2A_PERF_SEL_REQ_BURST_CLIENT4', - 80: 'GL2A_PERF_SEL_REQ_BURST_CLIENT5', - 81: 'GL2A_PERF_SEL_REQ_BURST_CLIENT6', - 82: 'GL2A_PERF_SEL_REQ_BURST_CLIENT7', - 83: 'GL2A_PERF_SEL_REQ_BURST_CLIENT8', - 84: 'GL2A_PERF_SEL_REQ_BURST_CLIENT9', - 85: 'GL2A_PERF_SEL_REQ_BURST_CLIENT10', - 86: 'GL2A_PERF_SEL_REQ_BURST_CLIENT11', - 87: 'GL2A_PERF_SEL_REQ_BURST_CLIENT12', - 88: 'GL2A_PERF_SEL_REQ_BURST_CLIENT13', - 89: 'GL2A_PERF_SEL_REQ_BURST_CLIENT14', - 90: 'GL2A_PERF_SEL_REQ_BURST_CLIENT15', - 91: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT0', - 92: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT1', - 93: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT2', - 94: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT3', - 95: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT4', - 96: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT5', - 97: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT6', - 98: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT7', - 99: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT8', - 100: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT9', - 101: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT10', - 103: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT11', - 104: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT12', - 105: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT13', - 106: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT14', - 107: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT15', -} -GL2A_PERF_SEL_NONE = 0 -GL2A_PERF_SEL_CYCLE = 1 -GL2A_PERF_SEL_BUSY = 2 -GL2A_PERF_SEL_REQ_GL2C0 = 3 -GL2A_PERF_SEL_REQ_GL2C1 = 4 -GL2A_PERF_SEL_REQ_GL2C2 = 5 -GL2A_PERF_SEL_REQ_GL2C3 = 6 -GL2A_PERF_SEL_REQ_GL2C4 = 7 -GL2A_PERF_SEL_REQ_GL2C5 = 8 -GL2A_PERF_SEL_REQ_GL2C6 = 9 -GL2A_PERF_SEL_REQ_GL2C7 = 10 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C0 = 11 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C1 = 12 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C2 = 13 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C3 = 14 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C4 = 15 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C5 = 16 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C6 = 17 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C7 = 18 -GL2A_PERF_SEL_REQ_BURST_GL2C0 = 19 -GL2A_PERF_SEL_REQ_BURST_GL2C1 = 20 -GL2A_PERF_SEL_REQ_BURST_GL2C2 = 21 -GL2A_PERF_SEL_REQ_BURST_GL2C3 = 22 -GL2A_PERF_SEL_REQ_BURST_GL2C4 = 23 -GL2A_PERF_SEL_REQ_BURST_GL2C5 = 24 -GL2A_PERF_SEL_REQ_BURST_GL2C6 = 25 -GL2A_PERF_SEL_REQ_BURST_GL2C7 = 26 -GL2A_PERF_SEL_REQ_STALL_GL2C0 = 27 -GL2A_PERF_SEL_REQ_STALL_GL2C1 = 28 -GL2A_PERF_SEL_REQ_STALL_GL2C2 = 29 -GL2A_PERF_SEL_REQ_STALL_GL2C3 = 30 -GL2A_PERF_SEL_REQ_STALL_GL2C4 = 31 -GL2A_PERF_SEL_REQ_STALL_GL2C5 = 32 -GL2A_PERF_SEL_REQ_STALL_GL2C6 = 33 -GL2A_PERF_SEL_REQ_STALL_GL2C7 = 34 -GL2A_PERF_SEL_RTN_STALL_GL2C0 = 35 -GL2A_PERF_SEL_RTN_STALL_GL2C1 = 36 -GL2A_PERF_SEL_RTN_STALL_GL2C2 = 37 -GL2A_PERF_SEL_RTN_STALL_GL2C3 = 38 -GL2A_PERF_SEL_RTN_STALL_GL2C4 = 39 -GL2A_PERF_SEL_RTN_STALL_GL2C5 = 40 -GL2A_PERF_SEL_RTN_STALL_GL2C6 = 41 -GL2A_PERF_SEL_RTN_STALL_GL2C7 = 42 -GL2A_PERF_SEL_RTN_CLIENT0 = 43 -GL2A_PERF_SEL_RTN_CLIENT1 = 44 -GL2A_PERF_SEL_RTN_CLIENT2 = 45 -GL2A_PERF_SEL_RTN_CLIENT3 = 46 -GL2A_PERF_SEL_RTN_CLIENT4 = 47 -GL2A_PERF_SEL_RTN_CLIENT5 = 48 -GL2A_PERF_SEL_RTN_CLIENT6 = 49 -GL2A_PERF_SEL_RTN_CLIENT7 = 50 -GL2A_PERF_SEL_RTN_CLIENT8 = 51 -GL2A_PERF_SEL_RTN_CLIENT9 = 52 -GL2A_PERF_SEL_RTN_CLIENT10 = 53 -GL2A_PERF_SEL_RTN_CLIENT11 = 54 -GL2A_PERF_SEL_RTN_CLIENT12 = 55 -GL2A_PERF_SEL_RTN_CLIENT13 = 56 -GL2A_PERF_SEL_RTN_CLIENT14 = 57 -GL2A_PERF_SEL_RTN_CLIENT15 = 58 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT0 = 59 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT1 = 60 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT2 = 61 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT3 = 62 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT4 = 63 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT5 = 64 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT6 = 65 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT7 = 66 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT8 = 67 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT9 = 68 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT10 = 69 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT11 = 70 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT12 = 71 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT13 = 72 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT14 = 73 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT15 = 74 -GL2A_PERF_SEL_REQ_BURST_CLIENT0 = 75 -GL2A_PERF_SEL_REQ_BURST_CLIENT1 = 76 -GL2A_PERF_SEL_REQ_BURST_CLIENT2 = 77 -GL2A_PERF_SEL_REQ_BURST_CLIENT3 = 78 -GL2A_PERF_SEL_REQ_BURST_CLIENT4 = 79 -GL2A_PERF_SEL_REQ_BURST_CLIENT5 = 80 -GL2A_PERF_SEL_REQ_BURST_CLIENT6 = 81 -GL2A_PERF_SEL_REQ_BURST_CLIENT7 = 82 -GL2A_PERF_SEL_REQ_BURST_CLIENT8 = 83 -GL2A_PERF_SEL_REQ_BURST_CLIENT9 = 84 -GL2A_PERF_SEL_REQ_BURST_CLIENT10 = 85 -GL2A_PERF_SEL_REQ_BURST_CLIENT11 = 86 -GL2A_PERF_SEL_REQ_BURST_CLIENT12 = 87 -GL2A_PERF_SEL_REQ_BURST_CLIENT13 = 88 -GL2A_PERF_SEL_REQ_BURST_CLIENT14 = 89 -GL2A_PERF_SEL_REQ_BURST_CLIENT15 = 90 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT0 = 91 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT1 = 92 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT2 = 93 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT3 = 94 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT4 = 95 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT5 = 96 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT6 = 97 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT7 = 98 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT8 = 99 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT9 = 100 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT10 = 101 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT11 = 103 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT12 = 104 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT13 = 105 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT14 = 106 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT15 = 107 -GL2A_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GL2C_PERF_SEL' -GL2C_PERF_SEL__enumvalues = { - 0: 'GL2C_PERF_SEL_NONE', - 1: 'GL2C_PERF_SEL_CYCLE', - 2: 'GL2C_PERF_SEL_BUSY', - 3: 'GL2C_PERF_SEL_REQ', - 4: 'GL2C_PERF_SEL_VOL_REQ', - 5: 'GL2C_PERF_SEL_HIGH_PRIORITY_REQ', - 6: 'GL2C_PERF_SEL_READ', - 7: 'GL2C_PERF_SEL_WRITE', - 8: 'GL2C_PERF_SEL_ATOMIC', - 9: 'GL2C_PERF_SEL_NOP_ACK', - 10: 'GL2C_PERF_SEL_NOP_RTN0', - 11: 'GL2C_PERF_SEL_PROBE', - 12: 'GL2C_PERF_SEL_PROBE_ALL', - 13: 'GL2C_PERF_SEL_INTERNAL_PROBE', - 14: 'GL2C_PERF_SEL_COMPRESSED_READ_REQ', - 15: 'GL2C_PERF_SEL_METADATA_READ_REQ', - 16: 'GL2C_PERF_SEL_CLIENT0_REQ', - 17: 'GL2C_PERF_SEL_CLIENT1_REQ', - 18: 'GL2C_PERF_SEL_CLIENT2_REQ', - 19: 'GL2C_PERF_SEL_CLIENT3_REQ', - 20: 'GL2C_PERF_SEL_CLIENT4_REQ', - 21: 'GL2C_PERF_SEL_CLIENT5_REQ', - 22: 'GL2C_PERF_SEL_CLIENT6_REQ', - 23: 'GL2C_PERF_SEL_CLIENT7_REQ', - 24: 'GL2C_PERF_SEL_CLIENT8_REQ', - 25: 'GL2C_PERF_SEL_CLIENT9_REQ', - 26: 'GL2C_PERF_SEL_CLIENT10_REQ', - 27: 'GL2C_PERF_SEL_CLIENT11_REQ', - 28: 'GL2C_PERF_SEL_CLIENT12_REQ', - 29: 'GL2C_PERF_SEL_CLIENT13_REQ', - 30: 'GL2C_PERF_SEL_CLIENT14_REQ', - 31: 'GL2C_PERF_SEL_CLIENT15_REQ', - 32: 'GL2C_PERF_SEL_C_RW_S_REQ', - 33: 'GL2C_PERF_SEL_C_RW_US_REQ', - 34: 'GL2C_PERF_SEL_C_RO_S_REQ', - 35: 'GL2C_PERF_SEL_C_RO_US_REQ', - 36: 'GL2C_PERF_SEL_UC_REQ', - 37: 'GL2C_PERF_SEL_LRU_REQ', - 38: 'GL2C_PERF_SEL_STREAM_REQ', - 39: 'GL2C_PERF_SEL_BYPASS_REQ', - 40: 'GL2C_PERF_SEL_NOA_REQ', - 41: 'GL2C_PERF_SEL_SHARED_REQ', - 42: 'GL2C_PERF_SEL_HIT', - 43: 'GL2C_PERF_SEL_MISS', - 44: 'GL2C_PERF_SEL_FULL_HIT', - 45: 'GL2C_PERF_SEL_PARTIAL_32B_HIT', - 46: 'GL2C_PERF_SEL_PARTIAL_64B_HIT', - 47: 'GL2C_PERF_SEL_PARTIAL_96B_HIT', - 48: 'GL2C_PERF_SEL_DEWRITE_ALLOCATE_HIT', - 49: 'GL2C_PERF_SEL_FULLY_WRITTEN_HIT', - 50: 'GL2C_PERF_SEL_UNCACHED_WRITE', - 51: 'GL2C_PERF_SEL_WRITEBACK', - 52: 'GL2C_PERF_SEL_NORMAL_WRITEBACK', - 53: 'GL2C_PERF_SEL_EVICT', - 54: 'GL2C_PERF_SEL_NORMAL_EVICT', - 55: 'GL2C_PERF_SEL_PROBE_EVICT', - 56: 'GL2C_PERF_SEL_REQ_TO_MISS_QUEUE', - 57: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT0', - 58: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT1', - 59: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT2', - 60: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT3', - 61: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT4', - 62: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT5', - 63: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT6', - 64: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT7', - 65: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT8', - 66: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT9', - 67: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT10', - 68: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT11', - 69: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT12', - 70: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT13', - 71: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT14', - 72: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT15', - 73: 'GL2C_PERF_SEL_READ_32_REQ', - 74: 'GL2C_PERF_SEL_READ_64_REQ', - 75: 'GL2C_PERF_SEL_READ_128_REQ', - 76: 'GL2C_PERF_SEL_WRITE_32_REQ', - 77: 'GL2C_PERF_SEL_WRITE_64_REQ', - 78: 'GL2C_PERF_SEL_COMPRESSED_READ_0_REQ', - 79: 'GL2C_PERF_SEL_COMPRESSED_READ_32_REQ', - 80: 'GL2C_PERF_SEL_COMPRESSED_READ_64_REQ', - 81: 'GL2C_PERF_SEL_COMPRESSED_READ_96_REQ', - 82: 'GL2C_PERF_SEL_COMPRESSED_READ_128_REQ', - 83: 'GL2C_PERF_SEL_MC_WRREQ', - 84: 'GL2C_PERF_SEL_EA_WRREQ_SNOOP', - 85: 'GL2C_PERF_SEL_EA_WRREQ_64B', - 86: 'GL2C_PERF_SEL_EA_WRREQ_PROBE_COMMAND', - 87: 'GL2C_PERF_SEL_EA_WR_UNCACHED_32B', - 88: 'GL2C_PERF_SEL_MC_WRREQ_STALL', - 89: 'GL2C_PERF_SEL_EA_WRREQ_IO_CREDIT_STALL', - 90: 'GL2C_PERF_SEL_EA_WRREQ_GMI_CREDIT_STALL', - 91: 'GL2C_PERF_SEL_EA_WRREQ_DRAM_CREDIT_STALL', - 92: 'GL2C_PERF_SEL_TOO_MANY_EA_WRREQS_STALL', - 93: 'GL2C_PERF_SEL_MC_WRREQ_LEVEL', - 94: 'GL2C_PERF_SEL_EA_ATOMIC', - 95: 'GL2C_PERF_SEL_EA_ATOMIC_LEVEL', - 96: 'GL2C_PERF_SEL_MC_RDREQ', - 97: 'GL2C_PERF_SEL_EA_RDREQ_SNOOP', - 98: 'GL2C_PERF_SEL_EA_RDREQ_SPLIT', - 99: 'GL2C_PERF_SEL_EA_RDREQ_32B', - 100: 'GL2C_PERF_SEL_EA_RDREQ_64B', - 101: 'GL2C_PERF_SEL_EA_RDREQ_96B', - 102: 'GL2C_PERF_SEL_EA_RDREQ_128B', - 103: 'GL2C_PERF_SEL_EA_RD_UNCACHED_32B', - 104: 'GL2C_PERF_SEL_EA_RD_MDC_32B', - 105: 'GL2C_PERF_SEL_EA_RD_COMPRESSED_32B', - 106: 'GL2C_PERF_SEL_EA_RDREQ_IO_CREDIT_STALL', - 107: 'GL2C_PERF_SEL_EA_RDREQ_GMI_CREDIT_STALL', - 108: 'GL2C_PERF_SEL_EA_RDREQ_DRAM_CREDIT_STALL', - 109: 'GL2C_PERF_SEL_MC_RDREQ_LEVEL', - 110: 'GL2C_PERF_SEL_EA_RDREQ_DRAM', - 111: 'GL2C_PERF_SEL_EA_WRREQ_DRAM', - 112: 'GL2C_PERF_SEL_EA_RDREQ_DRAM_32B', - 113: 'GL2C_PERF_SEL_EA_WRREQ_DRAM_32B', - 114: 'GL2C_PERF_SEL_ONION_READ', - 115: 'GL2C_PERF_SEL_ONION_WRITE', - 116: 'GL2C_PERF_SEL_IO_READ', - 117: 'GL2C_PERF_SEL_IO_WRITE', - 118: 'GL2C_PERF_SEL_GARLIC_READ', - 119: 'GL2C_PERF_SEL_GARLIC_WRITE', - 120: 'GL2C_PERF_SEL_EA_OUTSTANDING', - 121: 'GL2C_PERF_SEL_LATENCY_FIFO_FULL', - 122: 'GL2C_PERF_SEL_SRC_FIFO_FULL', - 123: 'GL2C_PERF_SEL_TAG_STALL', - 124: 'GL2C_PERF_SEL_TAG_WRITEBACK_FIFO_FULL_STALL', - 125: 'GL2C_PERF_SEL_TAG_MISS_NOTHING_REPLACEABLE_STALL', - 126: 'GL2C_PERF_SEL_TAG_UNCACHED_WRITE_ATOMIC_FIFO_FULL_STALL', - 127: 'GL2C_PERF_SEL_TAG_NO_UNCACHED_WRITE_ATOMIC_ENTRIES_STALL', - 128: 'GL2C_PERF_SEL_TAG_PROBE_STALL', - 129: 'GL2C_PERF_SEL_TAG_PROBE_FILTER_STALL', - 130: 'GL2C_PERF_SEL_TAG_PROBE_FIFO_FULL_STALL', - 131: 'GL2C_PERF_SEL_TAG_READ_DST_STALL', - 132: 'GL2C_PERF_SEL_READ_RETURN_TIMEOUT', - 133: 'GL2C_PERF_SEL_WRITEBACK_READ_TIMEOUT', - 134: 'GL2C_PERF_SEL_READ_RETURN_FULL_BUBBLE', - 135: 'GL2C_PERF_SEL_BUBBLE', - 136: 'GL2C_PERF_SEL_IB_REQ', - 137: 'GL2C_PERF_SEL_IB_STALL', - 138: 'GL2C_PERF_SEL_IB_TAG_STALL', - 139: 'GL2C_PERF_SEL_IB_CM_STALL', - 140: 'GL2C_PERF_SEL_RETURN_ACK', - 141: 'GL2C_PERF_SEL_RETURN_DATA', - 142: 'GL2C_PERF_SEL_EA_RDRET_NACK', - 143: 'GL2C_PERF_SEL_EA_WRRET_NACK', - 144: 'GL2C_PERF_SEL_GL2A_LEVEL', - 145: 'GL2C_PERF_SEL_PROBE_FILTER_DISABLE_TRANSITION', - 146: 'GL2C_PERF_SEL_PROBE_FILTER_DISABLED', - 147: 'GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_START', - 148: 'GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_VOL_START', - 149: 'GL2C_PERF_SEL_GCR_INV', - 150: 'GL2C_PERF_SEL_GCR_WB', - 151: 'GL2C_PERF_SEL_GCR_DISCARD', - 152: 'GL2C_PERF_SEL_GCR_RANGE', - 153: 'GL2C_PERF_SEL_GCR_ALL', - 154: 'GL2C_PERF_SEL_GCR_VOL', - 155: 'GL2C_PERF_SEL_GCR_UNSHARED', - 156: 'GL2C_PERF_SEL_GCR_MDC_INV', - 157: 'GL2C_PERF_SEL_GCR_GL2_INV_ALL', - 158: 'GL2C_PERF_SEL_GCR_GL2_WB_ALL', - 159: 'GL2C_PERF_SEL_GCR_MDC_INV_ALL', - 160: 'GL2C_PERF_SEL_GCR_GL2_INV_RANGE', - 161: 'GL2C_PERF_SEL_GCR_GL2_WB_RANGE', - 162: 'GL2C_PERF_SEL_GCR_GL2_WB_INV_RANGE', - 163: 'GL2C_PERF_SEL_GCR_MDC_INV_RANGE', - 164: 'GL2C_PERF_SEL_ALL_GCR_INV_EVICT', - 165: 'GL2C_PERF_SEL_ALL_GCR_INV_VOL_EVICT', - 166: 'GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_CYCLE', - 167: 'GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_VOL_CYCLE', - 168: 'GL2C_PERF_SEL_ALL_GCR_WB_WRITEBACK', - 169: 'GL2C_PERF_SEL_GCR_INVL2_VOL_CYCLE', - 170: 'GL2C_PERF_SEL_GCR_INVL2_VOL_EVICT', - 171: 'GL2C_PERF_SEL_GCR_INVL2_VOL_START', - 172: 'GL2C_PERF_SEL_GCR_WBL2_VOL_CYCLE', - 173: 'GL2C_PERF_SEL_GCR_WBL2_VOL_START', - 174: 'GL2C_PERF_SEL_GCR_WBINVL2_CYCLE', - 175: 'GL2C_PERF_SEL_GCR_WBINVL2_EVICT', - 176: 'GL2C_PERF_SEL_GCR_WBINVL2_START', - 177: 'GL2C_PERF_SEL_MDC_INV_METADATA', - 178: 'GL2C_PERF_SEL_MDC_REQ', - 179: 'GL2C_PERF_SEL_MDC_LEVEL', - 180: 'GL2C_PERF_SEL_MDC_TAG_HIT', - 181: 'GL2C_PERF_SEL_MDC_SECTOR_HIT', - 182: 'GL2C_PERF_SEL_MDC_SECTOR_MISS', - 183: 'GL2C_PERF_SEL_MDC_TAG_STALL', - 184: 'GL2C_PERF_SEL_MDC_TAG_REPLACEMENT_LINE_IN_USE_STALL', - 185: 'GL2C_PERF_SEL_MDC_TAG_DESECTORIZATION_FIFO_FULL_STALL', - 186: 'GL2C_PERF_SEL_MDC_TAG_WAITING_FOR_INVALIDATE_COMPLETION_STALL', - 187: 'GL2C_PERF_SEL_CM_CHANNEL0_REQ', - 188: 'GL2C_PERF_SEL_CM_CHANNEL1_REQ', - 189: 'GL2C_PERF_SEL_CM_CHANNEL2_REQ', - 190: 'GL2C_PERF_SEL_CM_CHANNEL3_REQ', - 191: 'GL2C_PERF_SEL_CM_CHANNEL4_REQ', - 192: 'GL2C_PERF_SEL_CM_CHANNEL5_REQ', - 193: 'GL2C_PERF_SEL_CM_CHANNEL6_REQ', - 194: 'GL2C_PERF_SEL_CM_CHANNEL7_REQ', - 195: 'GL2C_PERF_SEL_CM_CHANNEL8_REQ', - 196: 'GL2C_PERF_SEL_CM_CHANNEL9_REQ', - 197: 'GL2C_PERF_SEL_CM_CHANNEL10_REQ', - 198: 'GL2C_PERF_SEL_CM_CHANNEL11_REQ', - 199: 'GL2C_PERF_SEL_CM_CHANNEL12_REQ', - 200: 'GL2C_PERF_SEL_CM_CHANNEL13_REQ', - 201: 'GL2C_PERF_SEL_CM_CHANNEL14_REQ', - 202: 'GL2C_PERF_SEL_CM_CHANNEL15_REQ', - 203: 'GL2C_PERF_SEL_CM_CHANNEL16_REQ', - 204: 'GL2C_PERF_SEL_CM_CHANNEL17_REQ', - 205: 'GL2C_PERF_SEL_CM_CHANNEL18_REQ', - 206: 'GL2C_PERF_SEL_CM_CHANNEL19_REQ', - 207: 'GL2C_PERF_SEL_CM_CHANNEL20_REQ', - 208: 'GL2C_PERF_SEL_CM_CHANNEL21_REQ', - 209: 'GL2C_PERF_SEL_CM_CHANNEL22_REQ', - 210: 'GL2C_PERF_SEL_CM_CHANNEL23_REQ', - 211: 'GL2C_PERF_SEL_CM_CHANNEL24_REQ', - 212: 'GL2C_PERF_SEL_CM_CHANNEL25_REQ', - 213: 'GL2C_PERF_SEL_CM_CHANNEL26_REQ', - 214: 'GL2C_PERF_SEL_CM_CHANNEL27_REQ', - 215: 'GL2C_PERF_SEL_CM_CHANNEL28_REQ', - 216: 'GL2C_PERF_SEL_CM_CHANNEL29_REQ', - 217: 'GL2C_PERF_SEL_CM_CHANNEL30_REQ', - 218: 'GL2C_PERF_SEL_CM_CHANNEL31_REQ', - 219: 'GL2C_PERF_SEL_CM_COMP_ATOMIC_COLOR_REQ', - 220: 'GL2C_PERF_SEL_CM_COMP_ATOMIC_DEPTH16_REQ', - 221: 'GL2C_PERF_SEL_CM_COMP_ATOMIC_DEPTH32_REQ', - 222: 'GL2C_PERF_SEL_CM_COMP_ATOMIC_STENCIL_REQ', - 223: 'GL2C_PERF_SEL_CM_COMP_WRITE_COLOR_REQ', - 224: 'GL2C_PERF_SEL_CM_COMP_WRITE_DEPTH16_REQ', - 225: 'GL2C_PERF_SEL_CM_COMP_WRITE_DEPTH32_REQ', - 226: 'GL2C_PERF_SEL_CM_COMP_WRITE_STENCIL_REQ', - 227: 'GL2C_PERF_SEL_CM_COMP_READ_REQ', - 228: 'GL2C_PERF_SEL_CM_READ_BACK_REQ', - 229: 'GL2C_PERF_SEL_CM_METADATA_WR_REQ', - 230: 'GL2C_PERF_SEL_CM_WR_ACK_REQ', - 231: 'GL2C_PERF_SEL_CM_NO_ACK_REQ', - 232: 'GL2C_PERF_SEL_CM_NOOP_REQ', - 233: 'GL2C_PERF_SEL_CM_COMP_COLOR_EN_REQ', - 234: 'GL2C_PERF_SEL_CM_COMP_COLOR_DIS_REQ', - 235: 'GL2C_PERF_SEL_CM_COMP_STENCIL_REQ', - 236: 'GL2C_PERF_SEL_CM_COMP_DEPTH16_REQ', - 237: 'GL2C_PERF_SEL_CM_COMP_DEPTH32_REQ', - 238: 'GL2C_PERF_SEL_CM_COMP_RB_SKIP_REQ', - 239: 'GL2C_PERF_SEL_CM_COLOR_32B_WR_REQ', - 240: 'GL2C_PERF_SEL_CM_COLOR_64B_WR_REQ', - 241: 'GL2C_PERF_SEL_CM_FULL_WRITE_REQ', - 242: 'GL2C_PERF_SEL_CM_RVF_FULL', - 243: 'GL2C_PERF_SEL_CM_SDR_FULL', - 244: 'GL2C_PERF_SEL_CM_MERGE_BUF_FULL', - 245: 'GL2C_PERF_SEL_CM_DCC_STALL', - 246: 'GL2C_PERF_SEL_CM_DCC_IN_XFC', - 247: 'GL2C_PERF_SEL_CM_DCC_OUT_XFC', - 248: 'GL2C_PERF_SEL_CM_DCC_OUT_1x1', - 249: 'GL2C_PERF_SEL_CM_DCC_OUT_1x2', - 250: 'GL2C_PERF_SEL_CM_DCC_OUT_2x1', - 251: 'GL2C_PERF_SEL_CM_DCC_OUT_2x2', - 252: 'GL2C_PERF_SEL_CM_DCC_OUT_UNCOMP', - 253: 'GL2C_PERF_SEL_CM_DCC_OUT_CONST', - 254: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT16', - 255: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT17', - 256: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT18', - 257: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT19', -} -GL2C_PERF_SEL_NONE = 0 -GL2C_PERF_SEL_CYCLE = 1 -GL2C_PERF_SEL_BUSY = 2 -GL2C_PERF_SEL_REQ = 3 -GL2C_PERF_SEL_VOL_REQ = 4 -GL2C_PERF_SEL_HIGH_PRIORITY_REQ = 5 -GL2C_PERF_SEL_READ = 6 -GL2C_PERF_SEL_WRITE = 7 -GL2C_PERF_SEL_ATOMIC = 8 -GL2C_PERF_SEL_NOP_ACK = 9 -GL2C_PERF_SEL_NOP_RTN0 = 10 -GL2C_PERF_SEL_PROBE = 11 -GL2C_PERF_SEL_PROBE_ALL = 12 -GL2C_PERF_SEL_INTERNAL_PROBE = 13 -GL2C_PERF_SEL_COMPRESSED_READ_REQ = 14 -GL2C_PERF_SEL_METADATA_READ_REQ = 15 -GL2C_PERF_SEL_CLIENT0_REQ = 16 -GL2C_PERF_SEL_CLIENT1_REQ = 17 -GL2C_PERF_SEL_CLIENT2_REQ = 18 -GL2C_PERF_SEL_CLIENT3_REQ = 19 -GL2C_PERF_SEL_CLIENT4_REQ = 20 -GL2C_PERF_SEL_CLIENT5_REQ = 21 -GL2C_PERF_SEL_CLIENT6_REQ = 22 -GL2C_PERF_SEL_CLIENT7_REQ = 23 -GL2C_PERF_SEL_CLIENT8_REQ = 24 -GL2C_PERF_SEL_CLIENT9_REQ = 25 -GL2C_PERF_SEL_CLIENT10_REQ = 26 -GL2C_PERF_SEL_CLIENT11_REQ = 27 -GL2C_PERF_SEL_CLIENT12_REQ = 28 -GL2C_PERF_SEL_CLIENT13_REQ = 29 -GL2C_PERF_SEL_CLIENT14_REQ = 30 -GL2C_PERF_SEL_CLIENT15_REQ = 31 -GL2C_PERF_SEL_C_RW_S_REQ = 32 -GL2C_PERF_SEL_C_RW_US_REQ = 33 -GL2C_PERF_SEL_C_RO_S_REQ = 34 -GL2C_PERF_SEL_C_RO_US_REQ = 35 -GL2C_PERF_SEL_UC_REQ = 36 -GL2C_PERF_SEL_LRU_REQ = 37 -GL2C_PERF_SEL_STREAM_REQ = 38 -GL2C_PERF_SEL_BYPASS_REQ = 39 -GL2C_PERF_SEL_NOA_REQ = 40 -GL2C_PERF_SEL_SHARED_REQ = 41 -GL2C_PERF_SEL_HIT = 42 -GL2C_PERF_SEL_MISS = 43 -GL2C_PERF_SEL_FULL_HIT = 44 -GL2C_PERF_SEL_PARTIAL_32B_HIT = 45 -GL2C_PERF_SEL_PARTIAL_64B_HIT = 46 -GL2C_PERF_SEL_PARTIAL_96B_HIT = 47 -GL2C_PERF_SEL_DEWRITE_ALLOCATE_HIT = 48 -GL2C_PERF_SEL_FULLY_WRITTEN_HIT = 49 -GL2C_PERF_SEL_UNCACHED_WRITE = 50 -GL2C_PERF_SEL_WRITEBACK = 51 -GL2C_PERF_SEL_NORMAL_WRITEBACK = 52 -GL2C_PERF_SEL_EVICT = 53 -GL2C_PERF_SEL_NORMAL_EVICT = 54 -GL2C_PERF_SEL_PROBE_EVICT = 55 -GL2C_PERF_SEL_REQ_TO_MISS_QUEUE = 56 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT0 = 57 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT1 = 58 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT2 = 59 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT3 = 60 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT4 = 61 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT5 = 62 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT6 = 63 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT7 = 64 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT8 = 65 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT9 = 66 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT10 = 67 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT11 = 68 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT12 = 69 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT13 = 70 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT14 = 71 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT15 = 72 -GL2C_PERF_SEL_READ_32_REQ = 73 -GL2C_PERF_SEL_READ_64_REQ = 74 -GL2C_PERF_SEL_READ_128_REQ = 75 -GL2C_PERF_SEL_WRITE_32_REQ = 76 -GL2C_PERF_SEL_WRITE_64_REQ = 77 -GL2C_PERF_SEL_COMPRESSED_READ_0_REQ = 78 -GL2C_PERF_SEL_COMPRESSED_READ_32_REQ = 79 -GL2C_PERF_SEL_COMPRESSED_READ_64_REQ = 80 -GL2C_PERF_SEL_COMPRESSED_READ_96_REQ = 81 -GL2C_PERF_SEL_COMPRESSED_READ_128_REQ = 82 -GL2C_PERF_SEL_MC_WRREQ = 83 -GL2C_PERF_SEL_EA_WRREQ_SNOOP = 84 -GL2C_PERF_SEL_EA_WRREQ_64B = 85 -GL2C_PERF_SEL_EA_WRREQ_PROBE_COMMAND = 86 -GL2C_PERF_SEL_EA_WR_UNCACHED_32B = 87 -GL2C_PERF_SEL_MC_WRREQ_STALL = 88 -GL2C_PERF_SEL_EA_WRREQ_IO_CREDIT_STALL = 89 -GL2C_PERF_SEL_EA_WRREQ_GMI_CREDIT_STALL = 90 -GL2C_PERF_SEL_EA_WRREQ_DRAM_CREDIT_STALL = 91 -GL2C_PERF_SEL_TOO_MANY_EA_WRREQS_STALL = 92 -GL2C_PERF_SEL_MC_WRREQ_LEVEL = 93 -GL2C_PERF_SEL_EA_ATOMIC = 94 -GL2C_PERF_SEL_EA_ATOMIC_LEVEL = 95 -GL2C_PERF_SEL_MC_RDREQ = 96 -GL2C_PERF_SEL_EA_RDREQ_SNOOP = 97 -GL2C_PERF_SEL_EA_RDREQ_SPLIT = 98 -GL2C_PERF_SEL_EA_RDREQ_32B = 99 -GL2C_PERF_SEL_EA_RDREQ_64B = 100 -GL2C_PERF_SEL_EA_RDREQ_96B = 101 -GL2C_PERF_SEL_EA_RDREQ_128B = 102 -GL2C_PERF_SEL_EA_RD_UNCACHED_32B = 103 -GL2C_PERF_SEL_EA_RD_MDC_32B = 104 -GL2C_PERF_SEL_EA_RD_COMPRESSED_32B = 105 -GL2C_PERF_SEL_EA_RDREQ_IO_CREDIT_STALL = 106 -GL2C_PERF_SEL_EA_RDREQ_GMI_CREDIT_STALL = 107 -GL2C_PERF_SEL_EA_RDREQ_DRAM_CREDIT_STALL = 108 -GL2C_PERF_SEL_MC_RDREQ_LEVEL = 109 -GL2C_PERF_SEL_EA_RDREQ_DRAM = 110 -GL2C_PERF_SEL_EA_WRREQ_DRAM = 111 -GL2C_PERF_SEL_EA_RDREQ_DRAM_32B = 112 -GL2C_PERF_SEL_EA_WRREQ_DRAM_32B = 113 -GL2C_PERF_SEL_ONION_READ = 114 -GL2C_PERF_SEL_ONION_WRITE = 115 -GL2C_PERF_SEL_IO_READ = 116 -GL2C_PERF_SEL_IO_WRITE = 117 -GL2C_PERF_SEL_GARLIC_READ = 118 -GL2C_PERF_SEL_GARLIC_WRITE = 119 -GL2C_PERF_SEL_EA_OUTSTANDING = 120 -GL2C_PERF_SEL_LATENCY_FIFO_FULL = 121 -GL2C_PERF_SEL_SRC_FIFO_FULL = 122 -GL2C_PERF_SEL_TAG_STALL = 123 -GL2C_PERF_SEL_TAG_WRITEBACK_FIFO_FULL_STALL = 124 -GL2C_PERF_SEL_TAG_MISS_NOTHING_REPLACEABLE_STALL = 125 -GL2C_PERF_SEL_TAG_UNCACHED_WRITE_ATOMIC_FIFO_FULL_STALL = 126 -GL2C_PERF_SEL_TAG_NO_UNCACHED_WRITE_ATOMIC_ENTRIES_STALL = 127 -GL2C_PERF_SEL_TAG_PROBE_STALL = 128 -GL2C_PERF_SEL_TAG_PROBE_FILTER_STALL = 129 -GL2C_PERF_SEL_TAG_PROBE_FIFO_FULL_STALL = 130 -GL2C_PERF_SEL_TAG_READ_DST_STALL = 131 -GL2C_PERF_SEL_READ_RETURN_TIMEOUT = 132 -GL2C_PERF_SEL_WRITEBACK_READ_TIMEOUT = 133 -GL2C_PERF_SEL_READ_RETURN_FULL_BUBBLE = 134 -GL2C_PERF_SEL_BUBBLE = 135 -GL2C_PERF_SEL_IB_REQ = 136 -GL2C_PERF_SEL_IB_STALL = 137 -GL2C_PERF_SEL_IB_TAG_STALL = 138 -GL2C_PERF_SEL_IB_CM_STALL = 139 -GL2C_PERF_SEL_RETURN_ACK = 140 -GL2C_PERF_SEL_RETURN_DATA = 141 -GL2C_PERF_SEL_EA_RDRET_NACK = 142 -GL2C_PERF_SEL_EA_WRRET_NACK = 143 -GL2C_PERF_SEL_GL2A_LEVEL = 144 -GL2C_PERF_SEL_PROBE_FILTER_DISABLE_TRANSITION = 145 -GL2C_PERF_SEL_PROBE_FILTER_DISABLED = 146 -GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_START = 147 -GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_VOL_START = 148 -GL2C_PERF_SEL_GCR_INV = 149 -GL2C_PERF_SEL_GCR_WB = 150 -GL2C_PERF_SEL_GCR_DISCARD = 151 -GL2C_PERF_SEL_GCR_RANGE = 152 -GL2C_PERF_SEL_GCR_ALL = 153 -GL2C_PERF_SEL_GCR_VOL = 154 -GL2C_PERF_SEL_GCR_UNSHARED = 155 -GL2C_PERF_SEL_GCR_MDC_INV = 156 -GL2C_PERF_SEL_GCR_GL2_INV_ALL = 157 -GL2C_PERF_SEL_GCR_GL2_WB_ALL = 158 -GL2C_PERF_SEL_GCR_MDC_INV_ALL = 159 -GL2C_PERF_SEL_GCR_GL2_INV_RANGE = 160 -GL2C_PERF_SEL_GCR_GL2_WB_RANGE = 161 -GL2C_PERF_SEL_GCR_GL2_WB_INV_RANGE = 162 -GL2C_PERF_SEL_GCR_MDC_INV_RANGE = 163 -GL2C_PERF_SEL_ALL_GCR_INV_EVICT = 164 -GL2C_PERF_SEL_ALL_GCR_INV_VOL_EVICT = 165 -GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_CYCLE = 166 -GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_VOL_CYCLE = 167 -GL2C_PERF_SEL_ALL_GCR_WB_WRITEBACK = 168 -GL2C_PERF_SEL_GCR_INVL2_VOL_CYCLE = 169 -GL2C_PERF_SEL_GCR_INVL2_VOL_EVICT = 170 -GL2C_PERF_SEL_GCR_INVL2_VOL_START = 171 -GL2C_PERF_SEL_GCR_WBL2_VOL_CYCLE = 172 -GL2C_PERF_SEL_GCR_WBL2_VOL_START = 173 -GL2C_PERF_SEL_GCR_WBINVL2_CYCLE = 174 -GL2C_PERF_SEL_GCR_WBINVL2_EVICT = 175 -GL2C_PERF_SEL_GCR_WBINVL2_START = 176 -GL2C_PERF_SEL_MDC_INV_METADATA = 177 -GL2C_PERF_SEL_MDC_REQ = 178 -GL2C_PERF_SEL_MDC_LEVEL = 179 -GL2C_PERF_SEL_MDC_TAG_HIT = 180 -GL2C_PERF_SEL_MDC_SECTOR_HIT = 181 -GL2C_PERF_SEL_MDC_SECTOR_MISS = 182 -GL2C_PERF_SEL_MDC_TAG_STALL = 183 -GL2C_PERF_SEL_MDC_TAG_REPLACEMENT_LINE_IN_USE_STALL = 184 -GL2C_PERF_SEL_MDC_TAG_DESECTORIZATION_FIFO_FULL_STALL = 185 -GL2C_PERF_SEL_MDC_TAG_WAITING_FOR_INVALIDATE_COMPLETION_STALL = 186 -GL2C_PERF_SEL_CM_CHANNEL0_REQ = 187 -GL2C_PERF_SEL_CM_CHANNEL1_REQ = 188 -GL2C_PERF_SEL_CM_CHANNEL2_REQ = 189 -GL2C_PERF_SEL_CM_CHANNEL3_REQ = 190 -GL2C_PERF_SEL_CM_CHANNEL4_REQ = 191 -GL2C_PERF_SEL_CM_CHANNEL5_REQ = 192 -GL2C_PERF_SEL_CM_CHANNEL6_REQ = 193 -GL2C_PERF_SEL_CM_CHANNEL7_REQ = 194 -GL2C_PERF_SEL_CM_CHANNEL8_REQ = 195 -GL2C_PERF_SEL_CM_CHANNEL9_REQ = 196 -GL2C_PERF_SEL_CM_CHANNEL10_REQ = 197 -GL2C_PERF_SEL_CM_CHANNEL11_REQ = 198 -GL2C_PERF_SEL_CM_CHANNEL12_REQ = 199 -GL2C_PERF_SEL_CM_CHANNEL13_REQ = 200 -GL2C_PERF_SEL_CM_CHANNEL14_REQ = 201 -GL2C_PERF_SEL_CM_CHANNEL15_REQ = 202 -GL2C_PERF_SEL_CM_CHANNEL16_REQ = 203 -GL2C_PERF_SEL_CM_CHANNEL17_REQ = 204 -GL2C_PERF_SEL_CM_CHANNEL18_REQ = 205 -GL2C_PERF_SEL_CM_CHANNEL19_REQ = 206 -GL2C_PERF_SEL_CM_CHANNEL20_REQ = 207 -GL2C_PERF_SEL_CM_CHANNEL21_REQ = 208 -GL2C_PERF_SEL_CM_CHANNEL22_REQ = 209 -GL2C_PERF_SEL_CM_CHANNEL23_REQ = 210 -GL2C_PERF_SEL_CM_CHANNEL24_REQ = 211 -GL2C_PERF_SEL_CM_CHANNEL25_REQ = 212 -GL2C_PERF_SEL_CM_CHANNEL26_REQ = 213 -GL2C_PERF_SEL_CM_CHANNEL27_REQ = 214 -GL2C_PERF_SEL_CM_CHANNEL28_REQ = 215 -GL2C_PERF_SEL_CM_CHANNEL29_REQ = 216 -GL2C_PERF_SEL_CM_CHANNEL30_REQ = 217 -GL2C_PERF_SEL_CM_CHANNEL31_REQ = 218 -GL2C_PERF_SEL_CM_COMP_ATOMIC_COLOR_REQ = 219 -GL2C_PERF_SEL_CM_COMP_ATOMIC_DEPTH16_REQ = 220 -GL2C_PERF_SEL_CM_COMP_ATOMIC_DEPTH32_REQ = 221 -GL2C_PERF_SEL_CM_COMP_ATOMIC_STENCIL_REQ = 222 -GL2C_PERF_SEL_CM_COMP_WRITE_COLOR_REQ = 223 -GL2C_PERF_SEL_CM_COMP_WRITE_DEPTH16_REQ = 224 -GL2C_PERF_SEL_CM_COMP_WRITE_DEPTH32_REQ = 225 -GL2C_PERF_SEL_CM_COMP_WRITE_STENCIL_REQ = 226 -GL2C_PERF_SEL_CM_COMP_READ_REQ = 227 -GL2C_PERF_SEL_CM_READ_BACK_REQ = 228 -GL2C_PERF_SEL_CM_METADATA_WR_REQ = 229 -GL2C_PERF_SEL_CM_WR_ACK_REQ = 230 -GL2C_PERF_SEL_CM_NO_ACK_REQ = 231 -GL2C_PERF_SEL_CM_NOOP_REQ = 232 -GL2C_PERF_SEL_CM_COMP_COLOR_EN_REQ = 233 -GL2C_PERF_SEL_CM_COMP_COLOR_DIS_REQ = 234 -GL2C_PERF_SEL_CM_COMP_STENCIL_REQ = 235 -GL2C_PERF_SEL_CM_COMP_DEPTH16_REQ = 236 -GL2C_PERF_SEL_CM_COMP_DEPTH32_REQ = 237 -GL2C_PERF_SEL_CM_COMP_RB_SKIP_REQ = 238 -GL2C_PERF_SEL_CM_COLOR_32B_WR_REQ = 239 -GL2C_PERF_SEL_CM_COLOR_64B_WR_REQ = 240 -GL2C_PERF_SEL_CM_FULL_WRITE_REQ = 241 -GL2C_PERF_SEL_CM_RVF_FULL = 242 -GL2C_PERF_SEL_CM_SDR_FULL = 243 -GL2C_PERF_SEL_CM_MERGE_BUF_FULL = 244 -GL2C_PERF_SEL_CM_DCC_STALL = 245 -GL2C_PERF_SEL_CM_DCC_IN_XFC = 246 -GL2C_PERF_SEL_CM_DCC_OUT_XFC = 247 -GL2C_PERF_SEL_CM_DCC_OUT_1x1 = 248 -GL2C_PERF_SEL_CM_DCC_OUT_1x2 = 249 -GL2C_PERF_SEL_CM_DCC_OUT_2x1 = 250 -GL2C_PERF_SEL_CM_DCC_OUT_2x2 = 251 -GL2C_PERF_SEL_CM_DCC_OUT_UNCOMP = 252 -GL2C_PERF_SEL_CM_DCC_OUT_CONST = 253 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT16 = 254 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT17 = 255 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT18 = 256 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT19 = 257 -GL2C_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_PERF_SEL' -GRBM_PERF_SEL__enumvalues = { - 0: 'GRBM_PERF_SEL_COUNT', - 1: 'GRBM_PERF_SEL_USER_DEFINED', - 2: 'GRBM_PERF_SEL_GUI_ACTIVE', - 3: 'GRBM_PERF_SEL_CP_BUSY', - 4: 'GRBM_PERF_SEL_CP_COHER_BUSY', - 5: 'GRBM_PERF_SEL_CP_DMA_BUSY', - 6: 'GRBM_PERF_SEL_CB_BUSY', - 7: 'GRBM_PERF_SEL_DB_BUSY', - 8: 'GRBM_PERF_SEL_PA_BUSY', - 9: 'GRBM_PERF_SEL_SC_BUSY', - 11: 'GRBM_PERF_SEL_SPI_BUSY', - 12: 'GRBM_PERF_SEL_SX_BUSY', - 13: 'GRBM_PERF_SEL_TA_BUSY', - 14: 'GRBM_PERF_SEL_CB_CLEAN', - 15: 'GRBM_PERF_SEL_DB_CLEAN', - 25: 'GRBM_PERF_SEL_GDS_BUSY', - 26: 'GRBM_PERF_SEL_BCI_BUSY', - 27: 'GRBM_PERF_SEL_RLC_BUSY', - 28: 'GRBM_PERF_SEL_TCP_BUSY', - 29: 'GRBM_PERF_SEL_CPG_BUSY', - 30: 'GRBM_PERF_SEL_CPC_BUSY', - 31: 'GRBM_PERF_SEL_CPF_BUSY', - 32: 'GRBM_PERF_SEL_GE_BUSY', - 33: 'GRBM_PERF_SEL_GE_NO_DMA_BUSY', - 34: 'GRBM_PERF_SEL_UTCL2_BUSY', - 35: 'GRBM_PERF_SEL_EA_BUSY', - 36: 'GRBM_PERF_SEL_RMI_BUSY', - 37: 'GRBM_PERF_SEL_CPAXI_BUSY', - 39: 'GRBM_PERF_SEL_UTCL1_BUSY', - 40: 'GRBM_PERF_SEL_GL2CC_BUSY', - 41: 'GRBM_PERF_SEL_SDMA_BUSY', - 42: 'GRBM_PERF_SEL_CH_BUSY', - 43: 'GRBM_PERF_SEL_PH_BUSY', - 44: 'GRBM_PERF_SEL_PMM_BUSY', - 45: 'GRBM_PERF_SEL_GUS_BUSY', - 46: 'GRBM_PERF_SEL_GL1CC_BUSY', - 47: 'GRBM_PERF_SEL_ANY_ACTIVE_F_BUSY', - 48: 'GRBM_PERF_SEL_GL1H_BUSY', - 49: 'GRBM_PERF_SEL_PC_BUSY', -} -GRBM_PERF_SEL_COUNT = 0 -GRBM_PERF_SEL_USER_DEFINED = 1 -GRBM_PERF_SEL_GUI_ACTIVE = 2 -GRBM_PERF_SEL_CP_BUSY = 3 -GRBM_PERF_SEL_CP_COHER_BUSY = 4 -GRBM_PERF_SEL_CP_DMA_BUSY = 5 -GRBM_PERF_SEL_CB_BUSY = 6 -GRBM_PERF_SEL_DB_BUSY = 7 -GRBM_PERF_SEL_PA_BUSY = 8 -GRBM_PERF_SEL_SC_BUSY = 9 -GRBM_PERF_SEL_SPI_BUSY = 11 -GRBM_PERF_SEL_SX_BUSY = 12 -GRBM_PERF_SEL_TA_BUSY = 13 -GRBM_PERF_SEL_CB_CLEAN = 14 -GRBM_PERF_SEL_DB_CLEAN = 15 -GRBM_PERF_SEL_GDS_BUSY = 25 -GRBM_PERF_SEL_BCI_BUSY = 26 -GRBM_PERF_SEL_RLC_BUSY = 27 -GRBM_PERF_SEL_TCP_BUSY = 28 -GRBM_PERF_SEL_CPG_BUSY = 29 -GRBM_PERF_SEL_CPC_BUSY = 30 -GRBM_PERF_SEL_CPF_BUSY = 31 -GRBM_PERF_SEL_GE_BUSY = 32 -GRBM_PERF_SEL_GE_NO_DMA_BUSY = 33 -GRBM_PERF_SEL_UTCL2_BUSY = 34 -GRBM_PERF_SEL_EA_BUSY = 35 -GRBM_PERF_SEL_RMI_BUSY = 36 -GRBM_PERF_SEL_CPAXI_BUSY = 37 -GRBM_PERF_SEL_UTCL1_BUSY = 39 -GRBM_PERF_SEL_GL2CC_BUSY = 40 -GRBM_PERF_SEL_SDMA_BUSY = 41 -GRBM_PERF_SEL_CH_BUSY = 42 -GRBM_PERF_SEL_PH_BUSY = 43 -GRBM_PERF_SEL_PMM_BUSY = 44 -GRBM_PERF_SEL_GUS_BUSY = 45 -GRBM_PERF_SEL_GL1CC_BUSY = 46 -GRBM_PERF_SEL_ANY_ACTIVE_F_BUSY = 47 -GRBM_PERF_SEL_GL1H_BUSY = 48 -GRBM_PERF_SEL_PC_BUSY = 49 -GRBM_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE0_PERF_SEL' -GRBM_SE0_PERF_SEL__enumvalues = { - 0: 'GRBM_SE0_PERF_SEL_COUNT', - 1: 'GRBM_SE0_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE0_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE0_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE0_PERF_SEL_SC_BUSY', - 6: 'GRBM_SE0_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE0_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE0_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE0_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE0_PERF_SEL_DB_CLEAN', - 12: 'GRBM_SE0_PERF_SEL_PA_BUSY', - 14: 'GRBM_SE0_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE0_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE0_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE0_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE0_PERF_SEL_GL1CC_BUSY', - 19: 'GRBM_SE0_PERF_SEL_GL1H_BUSY', - 20: 'GRBM_SE0_PERF_SEL_PC_BUSY', -} -GRBM_SE0_PERF_SEL_COUNT = 0 -GRBM_SE0_PERF_SEL_USER_DEFINED = 1 -GRBM_SE0_PERF_SEL_CB_BUSY = 2 -GRBM_SE0_PERF_SEL_DB_BUSY = 3 -GRBM_SE0_PERF_SEL_SC_BUSY = 4 -GRBM_SE0_PERF_SEL_SPI_BUSY = 6 -GRBM_SE0_PERF_SEL_SX_BUSY = 7 -GRBM_SE0_PERF_SEL_TA_BUSY = 8 -GRBM_SE0_PERF_SEL_CB_CLEAN = 9 -GRBM_SE0_PERF_SEL_DB_CLEAN = 10 -GRBM_SE0_PERF_SEL_PA_BUSY = 12 -GRBM_SE0_PERF_SEL_BCI_BUSY = 14 -GRBM_SE0_PERF_SEL_RMI_BUSY = 15 -GRBM_SE0_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE0_PERF_SEL_TCP_BUSY = 17 -GRBM_SE0_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE0_PERF_SEL_GL1H_BUSY = 19 -GRBM_SE0_PERF_SEL_PC_BUSY = 20 -GRBM_SE0_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE1_PERF_SEL' -GRBM_SE1_PERF_SEL__enumvalues = { - 0: 'GRBM_SE1_PERF_SEL_COUNT', - 1: 'GRBM_SE1_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE1_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE1_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE1_PERF_SEL_SC_BUSY', - 6: 'GRBM_SE1_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE1_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE1_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE1_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE1_PERF_SEL_DB_CLEAN', - 12: 'GRBM_SE1_PERF_SEL_PA_BUSY', - 14: 'GRBM_SE1_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE1_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE1_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE1_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE1_PERF_SEL_GL1CC_BUSY', - 19: 'GRBM_SE1_PERF_SEL_GL1H_BUSY', - 20: 'GRBM_SE1_PERF_SEL_PC_BUSY', -} -GRBM_SE1_PERF_SEL_COUNT = 0 -GRBM_SE1_PERF_SEL_USER_DEFINED = 1 -GRBM_SE1_PERF_SEL_CB_BUSY = 2 -GRBM_SE1_PERF_SEL_DB_BUSY = 3 -GRBM_SE1_PERF_SEL_SC_BUSY = 4 -GRBM_SE1_PERF_SEL_SPI_BUSY = 6 -GRBM_SE1_PERF_SEL_SX_BUSY = 7 -GRBM_SE1_PERF_SEL_TA_BUSY = 8 -GRBM_SE1_PERF_SEL_CB_CLEAN = 9 -GRBM_SE1_PERF_SEL_DB_CLEAN = 10 -GRBM_SE1_PERF_SEL_PA_BUSY = 12 -GRBM_SE1_PERF_SEL_BCI_BUSY = 14 -GRBM_SE1_PERF_SEL_RMI_BUSY = 15 -GRBM_SE1_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE1_PERF_SEL_TCP_BUSY = 17 -GRBM_SE1_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE1_PERF_SEL_GL1H_BUSY = 19 -GRBM_SE1_PERF_SEL_PC_BUSY = 20 -GRBM_SE1_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE2_PERF_SEL' -GRBM_SE2_PERF_SEL__enumvalues = { - 0: 'GRBM_SE2_PERF_SEL_COUNT', - 1: 'GRBM_SE2_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE2_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE2_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE2_PERF_SEL_SC_BUSY', - 6: 'GRBM_SE2_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE2_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE2_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE2_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE2_PERF_SEL_DB_CLEAN', - 12: 'GRBM_SE2_PERF_SEL_PA_BUSY', - 14: 'GRBM_SE2_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE2_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE2_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE2_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE2_PERF_SEL_GL1CC_BUSY', - 19: 'GRBM_SE2_PERF_SEL_GL1H_BUSY', - 20: 'GRBM_SE2_PERF_SEL_PC_BUSY', -} -GRBM_SE2_PERF_SEL_COUNT = 0 -GRBM_SE2_PERF_SEL_USER_DEFINED = 1 -GRBM_SE2_PERF_SEL_CB_BUSY = 2 -GRBM_SE2_PERF_SEL_DB_BUSY = 3 -GRBM_SE2_PERF_SEL_SC_BUSY = 4 -GRBM_SE2_PERF_SEL_SPI_BUSY = 6 -GRBM_SE2_PERF_SEL_SX_BUSY = 7 -GRBM_SE2_PERF_SEL_TA_BUSY = 8 -GRBM_SE2_PERF_SEL_CB_CLEAN = 9 -GRBM_SE2_PERF_SEL_DB_CLEAN = 10 -GRBM_SE2_PERF_SEL_PA_BUSY = 12 -GRBM_SE2_PERF_SEL_BCI_BUSY = 14 -GRBM_SE2_PERF_SEL_RMI_BUSY = 15 -GRBM_SE2_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE2_PERF_SEL_TCP_BUSY = 17 -GRBM_SE2_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE2_PERF_SEL_GL1H_BUSY = 19 -GRBM_SE2_PERF_SEL_PC_BUSY = 20 -GRBM_SE2_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE3_PERF_SEL' -GRBM_SE3_PERF_SEL__enumvalues = { - 0: 'GRBM_SE3_PERF_SEL_COUNT', - 1: 'GRBM_SE3_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE3_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE3_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE3_PERF_SEL_SC_BUSY', - 6: 'GRBM_SE3_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE3_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE3_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE3_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE3_PERF_SEL_DB_CLEAN', - 12: 'GRBM_SE3_PERF_SEL_PA_BUSY', - 14: 'GRBM_SE3_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE3_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE3_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE3_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE3_PERF_SEL_GL1CC_BUSY', - 19: 'GRBM_SE3_PERF_SEL_GL1H_BUSY', - 20: 'GRBM_SE3_PERF_SEL_PC_BUSY', -} -GRBM_SE3_PERF_SEL_COUNT = 0 -GRBM_SE3_PERF_SEL_USER_DEFINED = 1 -GRBM_SE3_PERF_SEL_CB_BUSY = 2 -GRBM_SE3_PERF_SEL_DB_BUSY = 3 -GRBM_SE3_PERF_SEL_SC_BUSY = 4 -GRBM_SE3_PERF_SEL_SPI_BUSY = 6 -GRBM_SE3_PERF_SEL_SX_BUSY = 7 -GRBM_SE3_PERF_SEL_TA_BUSY = 8 -GRBM_SE3_PERF_SEL_CB_CLEAN = 9 -GRBM_SE3_PERF_SEL_DB_CLEAN = 10 -GRBM_SE3_PERF_SEL_PA_BUSY = 12 -GRBM_SE3_PERF_SEL_BCI_BUSY = 14 -GRBM_SE3_PERF_SEL_RMI_BUSY = 15 -GRBM_SE3_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE3_PERF_SEL_TCP_BUSY = 17 -GRBM_SE3_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE3_PERF_SEL_GL1H_BUSY = 19 -GRBM_SE3_PERF_SEL_PC_BUSY = 20 -GRBM_SE3_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE4_PERF_SEL' -GRBM_SE4_PERF_SEL__enumvalues = { - 0: 'GRBM_SE4_PERF_SEL_COUNT', - 1: 'GRBM_SE4_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE4_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE4_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE4_PERF_SEL_SC_BUSY', - 6: 'GRBM_SE4_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE4_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE4_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE4_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE4_PERF_SEL_DB_CLEAN', - 12: 'GRBM_SE4_PERF_SEL_PA_BUSY', - 14: 'GRBM_SE4_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE4_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE4_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE4_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE4_PERF_SEL_GL1CC_BUSY', - 19: 'GRBM_SE4_PERF_SEL_GL1H_BUSY', - 20: 'GRBM_SE4_PERF_SEL_PC_BUSY', -} -GRBM_SE4_PERF_SEL_COUNT = 0 -GRBM_SE4_PERF_SEL_USER_DEFINED = 1 -GRBM_SE4_PERF_SEL_CB_BUSY = 2 -GRBM_SE4_PERF_SEL_DB_BUSY = 3 -GRBM_SE4_PERF_SEL_SC_BUSY = 4 -GRBM_SE4_PERF_SEL_SPI_BUSY = 6 -GRBM_SE4_PERF_SEL_SX_BUSY = 7 -GRBM_SE4_PERF_SEL_TA_BUSY = 8 -GRBM_SE4_PERF_SEL_CB_CLEAN = 9 -GRBM_SE4_PERF_SEL_DB_CLEAN = 10 -GRBM_SE4_PERF_SEL_PA_BUSY = 12 -GRBM_SE4_PERF_SEL_BCI_BUSY = 14 -GRBM_SE4_PERF_SEL_RMI_BUSY = 15 -GRBM_SE4_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE4_PERF_SEL_TCP_BUSY = 17 -GRBM_SE4_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE4_PERF_SEL_GL1H_BUSY = 19 -GRBM_SE4_PERF_SEL_PC_BUSY = 20 -GRBM_SE4_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE5_PERF_SEL' -GRBM_SE5_PERF_SEL__enumvalues = { - 0: 'GRBM_SE5_PERF_SEL_COUNT', - 1: 'GRBM_SE5_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE5_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE5_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE5_PERF_SEL_SC_BUSY', - 6: 'GRBM_SE5_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE5_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE5_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE5_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE5_PERF_SEL_DB_CLEAN', - 12: 'GRBM_SE5_PERF_SEL_PA_BUSY', - 14: 'GRBM_SE5_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE5_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE5_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE5_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE5_PERF_SEL_GL1CC_BUSY', - 19: 'GRBM_SE5_PERF_SEL_GL1H_BUSY', - 20: 'GRBM_SE5_PERF_SEL_PC_BUSY', -} -GRBM_SE5_PERF_SEL_COUNT = 0 -GRBM_SE5_PERF_SEL_USER_DEFINED = 1 -GRBM_SE5_PERF_SEL_CB_BUSY = 2 -GRBM_SE5_PERF_SEL_DB_BUSY = 3 -GRBM_SE5_PERF_SEL_SC_BUSY = 4 -GRBM_SE5_PERF_SEL_SPI_BUSY = 6 -GRBM_SE5_PERF_SEL_SX_BUSY = 7 -GRBM_SE5_PERF_SEL_TA_BUSY = 8 -GRBM_SE5_PERF_SEL_CB_CLEAN = 9 -GRBM_SE5_PERF_SEL_DB_CLEAN = 10 -GRBM_SE5_PERF_SEL_PA_BUSY = 12 -GRBM_SE5_PERF_SEL_BCI_BUSY = 14 -GRBM_SE5_PERF_SEL_RMI_BUSY = 15 -GRBM_SE5_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE5_PERF_SEL_TCP_BUSY = 17 -GRBM_SE5_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE5_PERF_SEL_GL1H_BUSY = 19 -GRBM_SE5_PERF_SEL_PC_BUSY = 20 -GRBM_SE5_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE6_PERF_SEL' -GRBM_SE6_PERF_SEL__enumvalues = { - 0: 'GRBM_SE6_PERF_SEL_COUNT', - 1: 'GRBM_SE6_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE6_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE6_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE6_PERF_SEL_SC_BUSY', - 6: 'GRBM_SE6_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE6_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE6_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE6_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE6_PERF_SEL_DB_CLEAN', - 12: 'GRBM_SE6_PERF_SEL_PA_BUSY', - 14: 'GRBM_SE6_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE6_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE6_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE6_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE6_PERF_SEL_GL1CC_BUSY', - 19: 'GRBM_SE6_PERF_SEL_GL1H_BUSY', - 20: 'GRBM_SE6_PERF_SEL_PC_BUSY', -} -GRBM_SE6_PERF_SEL_COUNT = 0 -GRBM_SE6_PERF_SEL_USER_DEFINED = 1 -GRBM_SE6_PERF_SEL_CB_BUSY = 2 -GRBM_SE6_PERF_SEL_DB_BUSY = 3 -GRBM_SE6_PERF_SEL_SC_BUSY = 4 -GRBM_SE6_PERF_SEL_SPI_BUSY = 6 -GRBM_SE6_PERF_SEL_SX_BUSY = 7 -GRBM_SE6_PERF_SEL_TA_BUSY = 8 -GRBM_SE6_PERF_SEL_CB_CLEAN = 9 -GRBM_SE6_PERF_SEL_DB_CLEAN = 10 -GRBM_SE6_PERF_SEL_PA_BUSY = 12 -GRBM_SE6_PERF_SEL_BCI_BUSY = 14 -GRBM_SE6_PERF_SEL_RMI_BUSY = 15 -GRBM_SE6_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE6_PERF_SEL_TCP_BUSY = 17 -GRBM_SE6_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE6_PERF_SEL_GL1H_BUSY = 19 -GRBM_SE6_PERF_SEL_PC_BUSY = 20 -GRBM_SE6_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE7_PERF_SEL' -GRBM_SE7_PERF_SEL__enumvalues = { - 0: 'GRBM_SE7_PERF_SEL_COUNT', - 1: 'GRBM_SE7_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE7_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE7_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE7_PERF_SEL_SC_BUSY', - 6: 'GRBM_SE7_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE7_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE7_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE7_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE7_PERF_SEL_DB_CLEAN', - 12: 'GRBM_SE7_PERF_SEL_PA_BUSY', - 14: 'GRBM_SE7_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE7_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE7_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE7_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE7_PERF_SEL_GL1CC_BUSY', - 19: 'GRBM_SE7_PERF_SEL_GL1H_BUSY', - 20: 'GRBM_SE7_PERF_SEL_PC_BUSY', -} -GRBM_SE7_PERF_SEL_COUNT = 0 -GRBM_SE7_PERF_SEL_USER_DEFINED = 1 -GRBM_SE7_PERF_SEL_CB_BUSY = 2 -GRBM_SE7_PERF_SEL_DB_BUSY = 3 -GRBM_SE7_PERF_SEL_SC_BUSY = 4 -GRBM_SE7_PERF_SEL_SPI_BUSY = 6 -GRBM_SE7_PERF_SEL_SX_BUSY = 7 -GRBM_SE7_PERF_SEL_TA_BUSY = 8 -GRBM_SE7_PERF_SEL_CB_CLEAN = 9 -GRBM_SE7_PERF_SEL_DB_CLEAN = 10 -GRBM_SE7_PERF_SEL_PA_BUSY = 12 -GRBM_SE7_PERF_SEL_BCI_BUSY = 14 -GRBM_SE7_PERF_SEL_RMI_BUSY = 15 -GRBM_SE7_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE7_PERF_SEL_TCP_BUSY = 17 -GRBM_SE7_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE7_PERF_SEL_GL1H_BUSY = 19 -GRBM_SE7_PERF_SEL_PC_BUSY = 20 -GRBM_SE7_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_COMPAT_LEVEL' -PIPE_COMPAT_LEVEL__enumvalues = { - 0: 'GEN_ZERO', - 1: 'GEN_ONE', - 2: 'GEN_TWO', - 3: 'GEN_RESERVED', -} -GEN_ZERO = 0 -GEN_ONE = 1 -GEN_TWO = 2 -GEN_RESERVED = 3 -PIPE_COMPAT_LEVEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPC_LATENCY_STATS_SEL' -CPC_LATENCY_STATS_SEL__enumvalues = { - 0: 'CPC_LATENCY_STATS_SEL_XACK_MAX', - 1: 'CPC_LATENCY_STATS_SEL_XACK_MIN', - 2: 'CPC_LATENCY_STATS_SEL_XACK_LAST', - 3: 'CPC_LATENCY_STATS_SEL_XNACK_MAX', - 4: 'CPC_LATENCY_STATS_SEL_XNACK_MIN', - 5: 'CPC_LATENCY_STATS_SEL_XNACK_LAST', - 6: 'CPC_LATENCY_STATS_SEL_INVAL_MAX', - 7: 'CPC_LATENCY_STATS_SEL_INVAL_MIN', - 8: 'CPC_LATENCY_STATS_SEL_INVAL_LAST', -} -CPC_LATENCY_STATS_SEL_XACK_MAX = 0 -CPC_LATENCY_STATS_SEL_XACK_MIN = 1 -CPC_LATENCY_STATS_SEL_XACK_LAST = 2 -CPC_LATENCY_STATS_SEL_XNACK_MAX = 3 -CPC_LATENCY_STATS_SEL_XNACK_MIN = 4 -CPC_LATENCY_STATS_SEL_XNACK_LAST = 5 -CPC_LATENCY_STATS_SEL_INVAL_MAX = 6 -CPC_LATENCY_STATS_SEL_INVAL_MIN = 7 -CPC_LATENCY_STATS_SEL_INVAL_LAST = 8 -CPC_LATENCY_STATS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPC_PERFCOUNT_SEL' -CPC_PERFCOUNT_SEL__enumvalues = { - 0: 'CPC_PERF_SEL_ALWAYS_COUNT', - 1: 'CPC_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', - 2: 'CPC_PERF_SEL_RCIU_STALL_PRIV_VIOLATION', - 5: 'CPC_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 6: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY', - 7: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY_PERF', - 8: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READ', - 9: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_GUS_READ', - 10: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_GUS_WRITE', - 11: 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ', - 12: 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ_PERF', - 13: 'CPC_PERF_SEL_ME1_BUSY_FOR_PACKET_DECODE', - 14: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY', - 15: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY_PERF', - 16: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READ', - 17: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_GUS_READ', - 18: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_GUS_WRITE', - 19: 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ', - 20: 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ_PERF', - 21: 'CPC_PERF_SEL_ME2_BUSY_FOR_PACKET_DECODE', - 22: 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 23: 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', - 24: 'CPC_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 25: 'CPC_PERF_SEL_CPC_STAT_BUSY', - 26: 'CPC_PERF_SEL_CPC_STAT_IDLE', - 27: 'CPC_PERF_SEL_CPC_STAT_STALL', - 28: 'CPC_PERF_SEL_CPC_TCIU_BUSY', - 29: 'CPC_PERF_SEL_CPC_TCIU_IDLE', - 30: 'CPC_PERF_SEL_CPC_UTCL2IU_BUSY', - 31: 'CPC_PERF_SEL_CPC_UTCL2IU_IDLE', - 32: 'CPC_PERF_SEL_CPC_UTCL2IU_STALL', - 33: 'CPC_PERF_SEL_ME1_DC0_SPI_BUSY', - 34: 'CPC_PERF_SEL_ME2_DC1_SPI_BUSY', - 35: 'CPC_PERF_SEL_CPC_GCRIU_BUSY', - 36: 'CPC_PERF_SEL_CPC_GCRIU_IDLE', - 37: 'CPC_PERF_SEL_CPC_GCRIU_STALL', - 38: 'CPC_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 39: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_TCIU_READ', - 40: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_TCIU_READ', - 41: 'CPC_PERF_SEL_CPC_UTCL2IU_XACK', - 42: 'CPC_PERF_SEL_CPC_UTCL2IU_XNACK', - 43: 'CPC_PERF_SEL_MEC_INSTR_CACHE_HIT', - 44: 'CPC_PERF_SEL_MEC_INSTR_CACHE_MISS', - 45: 'CPC_PERF_SEL_MES_THREAD0', - 46: 'CPC_PERF_SEL_MES_THREAD1', -} -CPC_PERF_SEL_ALWAYS_COUNT = 0 -CPC_PERF_SEL_RCIU_STALL_WAIT_ON_FREE = 1 -CPC_PERF_SEL_RCIU_STALL_PRIV_VIOLATION = 2 -CPC_PERF_SEL_TCIU_STALL_WAIT_ON_FREE = 5 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY = 6 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY_PERF = 7 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READ = 8 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_GUS_READ = 9 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_GUS_WRITE = 10 -CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ = 11 -CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ_PERF = 12 -CPC_PERF_SEL_ME1_BUSY_FOR_PACKET_DECODE = 13 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY = 14 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY_PERF = 15 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READ = 16 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_GUS_READ = 17 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_GUS_WRITE = 18 -CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ = 19 -CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ_PERF = 20 -CPC_PERF_SEL_ME2_BUSY_FOR_PACKET_DECODE = 21 -CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE = 22 -CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS = 23 -CPC_PERF_SEL_UTCL1_STALL_ON_TRANSLATION = 24 -CPC_PERF_SEL_CPC_STAT_BUSY = 25 -CPC_PERF_SEL_CPC_STAT_IDLE = 26 -CPC_PERF_SEL_CPC_STAT_STALL = 27 -CPC_PERF_SEL_CPC_TCIU_BUSY = 28 -CPC_PERF_SEL_CPC_TCIU_IDLE = 29 -CPC_PERF_SEL_CPC_UTCL2IU_BUSY = 30 -CPC_PERF_SEL_CPC_UTCL2IU_IDLE = 31 -CPC_PERF_SEL_CPC_UTCL2IU_STALL = 32 -CPC_PERF_SEL_ME1_DC0_SPI_BUSY = 33 -CPC_PERF_SEL_ME2_DC1_SPI_BUSY = 34 -CPC_PERF_SEL_CPC_GCRIU_BUSY = 35 -CPC_PERF_SEL_CPC_GCRIU_IDLE = 36 -CPC_PERF_SEL_CPC_GCRIU_STALL = 37 -CPC_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE = 38 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_TCIU_READ = 39 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_TCIU_READ = 40 -CPC_PERF_SEL_CPC_UTCL2IU_XACK = 41 -CPC_PERF_SEL_CPC_UTCL2IU_XNACK = 42 -CPC_PERF_SEL_MEC_INSTR_CACHE_HIT = 43 -CPC_PERF_SEL_MEC_INSTR_CACHE_MISS = 44 -CPC_PERF_SEL_MES_THREAD0 = 45 -CPC_PERF_SEL_MES_THREAD1 = 46 -CPC_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPF_LATENCY_STATS_SEL' -CPF_LATENCY_STATS_SEL__enumvalues = { - 0: 'CPF_LATENCY_STATS_SEL_XACK_MAX', - 1: 'CPF_LATENCY_STATS_SEL_XACK_MIN', - 2: 'CPF_LATENCY_STATS_SEL_XACK_LAST', - 3: 'CPF_LATENCY_STATS_SEL_XNACK_MAX', - 4: 'CPF_LATENCY_STATS_SEL_XNACK_MIN', - 5: 'CPF_LATENCY_STATS_SEL_XNACK_LAST', - 6: 'CPF_LATENCY_STATS_SEL_READ_MAX', - 7: 'CPF_LATENCY_STATS_SEL_READ_MIN', - 8: 'CPF_LATENCY_STATS_SEL_READ_LAST', - 9: 'CPF_LATENCY_STATS_SEL_INVAL_MAX', - 10: 'CPF_LATENCY_STATS_SEL_INVAL_MIN', - 11: 'CPF_LATENCY_STATS_SEL_INVAL_LAST', -} -CPF_LATENCY_STATS_SEL_XACK_MAX = 0 -CPF_LATENCY_STATS_SEL_XACK_MIN = 1 -CPF_LATENCY_STATS_SEL_XACK_LAST = 2 -CPF_LATENCY_STATS_SEL_XNACK_MAX = 3 -CPF_LATENCY_STATS_SEL_XNACK_MIN = 4 -CPF_LATENCY_STATS_SEL_XNACK_LAST = 5 -CPF_LATENCY_STATS_SEL_READ_MAX = 6 -CPF_LATENCY_STATS_SEL_READ_MIN = 7 -CPF_LATENCY_STATS_SEL_READ_LAST = 8 -CPF_LATENCY_STATS_SEL_INVAL_MAX = 9 -CPF_LATENCY_STATS_SEL_INVAL_MIN = 10 -CPF_LATENCY_STATS_SEL_INVAL_LAST = 11 -CPF_LATENCY_STATS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPF_PERFCOUNTWINDOW_SEL' -CPF_PERFCOUNTWINDOW_SEL__enumvalues = { - 0: 'CPF_PERFWINDOW_SEL_CSF', - 1: 'CPF_PERFWINDOW_SEL_HQD1', - 2: 'CPF_PERFWINDOW_SEL_HQD2', - 3: 'CPF_PERFWINDOW_SEL_RDMA', - 4: 'CPF_PERFWINDOW_SEL_RWPP', -} -CPF_PERFWINDOW_SEL_CSF = 0 -CPF_PERFWINDOW_SEL_HQD1 = 1 -CPF_PERFWINDOW_SEL_HQD2 = 2 -CPF_PERFWINDOW_SEL_RDMA = 3 -CPF_PERFWINDOW_SEL_RWPP = 4 -CPF_PERFCOUNTWINDOW_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPF_PERFCOUNT_SEL' -CPF_PERFCOUNT_SEL__enumvalues = { - 0: 'CPF_PERF_SEL_ALWAYS_COUNT', - 2: 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_FREE', - 3: 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_TAGS', - 4: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_RING', - 5: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB1', - 6: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB2', - 7: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_STATE', - 10: 'CPF_PERF_SEL_CSF_STATE_FIFO_NOT_RTR', - 11: 'CPF_PERF_SEL_CSF_FETCHING_CMD_BUFFERS', - 12: 'CPF_PERF_SEL_GRBM_DWORDS_SENT', - 13: 'CPF_PERF_SEL_DYNAMIC_CLOCK_VALID', - 14: 'CPF_PERF_SEL_REGISTER_CLOCK_VALID', - 15: 'CPF_PERF_SEL_GUS_WRITE_REQUEST_SENT', - 16: 'CPF_PERF_SEL_GUS_READ_REQUEST_SENT', - 17: 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 18: 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', - 19: 'CPF_PERF_SEL_GFX_UTCL1_STALL_ON_TRANSLATION', - 20: 'CPF_PERF_SEL_CMP_UTCL1_STALL_ON_TRANSLATION', - 21: 'CPF_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', - 22: 'CPF_PERF_SEL_TCIU_WRITE_REQUEST_SENT', - 23: 'CPF_PERF_SEL_TCIU_READ_REQUEST_SENT', - 24: 'CPF_PERF_SEL_CPF_STAT_BUSY', - 25: 'CPF_PERF_SEL_CPF_STAT_IDLE', - 26: 'CPF_PERF_SEL_CPF_STAT_STALL', - 27: 'CPF_PERF_SEL_CPF_TCIU_BUSY', - 28: 'CPF_PERF_SEL_CPF_TCIU_IDLE', - 29: 'CPF_PERF_SEL_CPF_TCIU_STALL', - 30: 'CPF_PERF_SEL_CPF_UTCL2IU_BUSY', - 31: 'CPF_PERF_SEL_CPF_UTCL2IU_IDLE', - 32: 'CPF_PERF_SEL_CPF_UTCL2IU_STALL', - 33: 'CPF_PERF_SEL_CPF_GCRIU_BUSY', - 34: 'CPF_PERF_SEL_CPF_GCRIU_IDLE', - 35: 'CPF_PERF_SEL_CPF_GCRIU_STALL', - 36: 'CPF_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 37: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_DB', - 38: 'CPF_PERF_SEL_CPF_UTCL2IU_XACK', - 39: 'CPF_PERF_SEL_CPF_UTCL2IU_XNACK', - 40: 'CPF_PERF_SEL_CP_SDMA_MNGR_DMA_REQ', - 41: 'CPF_PERF_SEL_CP_SDMA_MNGR_DMA_DONE', - 42: 'CPF_PERF_SEL_CP_SDMA_MNGR_LATENCY', - 43: 'CPF_PERF_SEL_CP_SDMA_MNGR_SDMABUSY', -} -CPF_PERF_SEL_ALWAYS_COUNT = 0 -CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_FREE = 2 -CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_TAGS = 3 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_RING = 4 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB1 = 5 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB2 = 6 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_STATE = 7 -CPF_PERF_SEL_CSF_STATE_FIFO_NOT_RTR = 10 -CPF_PERF_SEL_CSF_FETCHING_CMD_BUFFERS = 11 -CPF_PERF_SEL_GRBM_DWORDS_SENT = 12 -CPF_PERF_SEL_DYNAMIC_CLOCK_VALID = 13 -CPF_PERF_SEL_REGISTER_CLOCK_VALID = 14 -CPF_PERF_SEL_GUS_WRITE_REQUEST_SENT = 15 -CPF_PERF_SEL_GUS_READ_REQUEST_SENT = 16 -CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE = 17 -CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS = 18 -CPF_PERF_SEL_GFX_UTCL1_STALL_ON_TRANSLATION = 19 -CPF_PERF_SEL_CMP_UTCL1_STALL_ON_TRANSLATION = 20 -CPF_PERF_SEL_RCIU_STALL_WAIT_ON_FREE = 21 -CPF_PERF_SEL_TCIU_WRITE_REQUEST_SENT = 22 -CPF_PERF_SEL_TCIU_READ_REQUEST_SENT = 23 -CPF_PERF_SEL_CPF_STAT_BUSY = 24 -CPF_PERF_SEL_CPF_STAT_IDLE = 25 -CPF_PERF_SEL_CPF_STAT_STALL = 26 -CPF_PERF_SEL_CPF_TCIU_BUSY = 27 -CPF_PERF_SEL_CPF_TCIU_IDLE = 28 -CPF_PERF_SEL_CPF_TCIU_STALL = 29 -CPF_PERF_SEL_CPF_UTCL2IU_BUSY = 30 -CPF_PERF_SEL_CPF_UTCL2IU_IDLE = 31 -CPF_PERF_SEL_CPF_UTCL2IU_STALL = 32 -CPF_PERF_SEL_CPF_GCRIU_BUSY = 33 -CPF_PERF_SEL_CPF_GCRIU_IDLE = 34 -CPF_PERF_SEL_CPF_GCRIU_STALL = 35 -CPF_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE = 36 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_DB = 37 -CPF_PERF_SEL_CPF_UTCL2IU_XACK = 38 -CPF_PERF_SEL_CPF_UTCL2IU_XNACK = 39 -CPF_PERF_SEL_CP_SDMA_MNGR_DMA_REQ = 40 -CPF_PERF_SEL_CP_SDMA_MNGR_DMA_DONE = 41 -CPF_PERF_SEL_CP_SDMA_MNGR_LATENCY = 42 -CPF_PERF_SEL_CP_SDMA_MNGR_SDMABUSY = 43 -CPF_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPF_SCRATCH_REG_ATOMIC_OP' -CPF_SCRATCH_REG_ATOMIC_OP__enumvalues = { - 0: 'CPF_SCRATCH_REG_ATOMIC_ADD', - 1: 'CPF_SCRATCH_REG_ATOMIC_SUB', - 2: 'CPF_SCRATCH_REG_ATOMIC_OR', - 3: 'CPF_SCRATCH_REG_ATOMIC_AND', - 4: 'CPF_SCRATCH_REG_ATOMIC_NOT', - 5: 'CPF_SCRATCH_REG_ATOMIC_MIN', - 6: 'CPF_SCRATCH_REG_ATOMIC_MAX', - 7: 'CPF_SCRATCH_REG_ATOMIC_CMPSWAP', -} -CPF_SCRATCH_REG_ATOMIC_ADD = 0 -CPF_SCRATCH_REG_ATOMIC_SUB = 1 -CPF_SCRATCH_REG_ATOMIC_OR = 2 -CPF_SCRATCH_REG_ATOMIC_AND = 3 -CPF_SCRATCH_REG_ATOMIC_NOT = 4 -CPF_SCRATCH_REG_ATOMIC_MIN = 5 -CPF_SCRATCH_REG_ATOMIC_MAX = 6 -CPF_SCRATCH_REG_ATOMIC_CMPSWAP = 7 -CPF_SCRATCH_REG_ATOMIC_OP = ctypes.c_uint32 # enum - -# values for enumeration 'CPG_LATENCY_STATS_SEL' -CPG_LATENCY_STATS_SEL__enumvalues = { - 0: 'CPG_LATENCY_STATS_SEL_XACK_MAX', - 1: 'CPG_LATENCY_STATS_SEL_XACK_MIN', - 2: 'CPG_LATENCY_STATS_SEL_XACK_LAST', - 3: 'CPG_LATENCY_STATS_SEL_XNACK_MAX', - 4: 'CPG_LATENCY_STATS_SEL_XNACK_MIN', - 5: 'CPG_LATENCY_STATS_SEL_XNACK_LAST', - 6: 'CPG_LATENCY_STATS_SEL_WRITE_MAX', - 7: 'CPG_LATENCY_STATS_SEL_WRITE_MIN', - 8: 'CPG_LATENCY_STATS_SEL_WRITE_LAST', - 9: 'CPG_LATENCY_STATS_SEL_READ_MAX', - 10: 'CPG_LATENCY_STATS_SEL_READ_MIN', - 11: 'CPG_LATENCY_STATS_SEL_READ_LAST', - 12: 'CPG_LATENCY_STATS_SEL_ATOMIC_MAX', - 13: 'CPG_LATENCY_STATS_SEL_ATOMIC_MIN', - 14: 'CPG_LATENCY_STATS_SEL_ATOMIC_LAST', - 15: 'CPG_LATENCY_STATS_SEL_INVAL_MAX', - 16: 'CPG_LATENCY_STATS_SEL_INVAL_MIN', - 17: 'CPG_LATENCY_STATS_SEL_INVAL_LAST', -} -CPG_LATENCY_STATS_SEL_XACK_MAX = 0 -CPG_LATENCY_STATS_SEL_XACK_MIN = 1 -CPG_LATENCY_STATS_SEL_XACK_LAST = 2 -CPG_LATENCY_STATS_SEL_XNACK_MAX = 3 -CPG_LATENCY_STATS_SEL_XNACK_MIN = 4 -CPG_LATENCY_STATS_SEL_XNACK_LAST = 5 -CPG_LATENCY_STATS_SEL_WRITE_MAX = 6 -CPG_LATENCY_STATS_SEL_WRITE_MIN = 7 -CPG_LATENCY_STATS_SEL_WRITE_LAST = 8 -CPG_LATENCY_STATS_SEL_READ_MAX = 9 -CPG_LATENCY_STATS_SEL_READ_MIN = 10 -CPG_LATENCY_STATS_SEL_READ_LAST = 11 -CPG_LATENCY_STATS_SEL_ATOMIC_MAX = 12 -CPG_LATENCY_STATS_SEL_ATOMIC_MIN = 13 -CPG_LATENCY_STATS_SEL_ATOMIC_LAST = 14 -CPG_LATENCY_STATS_SEL_INVAL_MAX = 15 -CPG_LATENCY_STATS_SEL_INVAL_MIN = 16 -CPG_LATENCY_STATS_SEL_INVAL_LAST = 17 -CPG_LATENCY_STATS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPG_PERFCOUNTWINDOW_SEL' -CPG_PERFCOUNTWINDOW_SEL__enumvalues = { - 0: 'CPG_PERFWINDOW_SEL_PFP', - 1: 'CPG_PERFWINDOW_SEL_ME', - 2: 'CPG_PERFWINDOW_SEL_CE', - 3: 'CPG_PERFWINDOW_SEL_MES', - 4: 'CPG_PERFWINDOW_SEL_MEC1', - 5: 'CPG_PERFWINDOW_SEL_MEC2', - 6: 'CPG_PERFWINDOW_SEL_DFY', - 7: 'CPG_PERFWINDOW_SEL_DMA', - 8: 'CPG_PERFWINDOW_SEL_SHADOW', - 9: 'CPG_PERFWINDOW_SEL_RB', - 10: 'CPG_PERFWINDOW_SEL_CEDMA', - 11: 'CPG_PERFWINDOW_SEL_PRT_HDR_RPTR', - 12: 'CPG_PERFWINDOW_SEL_PRT_SMP_RPTR', - 13: 'CPG_PERFWINDOW_SEL_PQ1', - 14: 'CPG_PERFWINDOW_SEL_PQ2', - 15: 'CPG_PERFWINDOW_SEL_PQ3', - 16: 'CPG_PERFWINDOW_SEL_MEMWR', - 17: 'CPG_PERFWINDOW_SEL_MEMRD', - 18: 'CPG_PERFWINDOW_SEL_VGT0', - 19: 'CPG_PERFWINDOW_SEL_VGT1', - 20: 'CPG_PERFWINDOW_SEL_APPEND', - 21: 'CPG_PERFWINDOW_SEL_QURD', - 22: 'CPG_PERFWINDOW_SEL_DDID', - 23: 'CPG_PERFWINDOW_SEL_SR', - 24: 'CPG_PERFWINDOW_SEL_QU_EOP', - 25: 'CPG_PERFWINDOW_SEL_QU_STRM', - 26: 'CPG_PERFWINDOW_SEL_QU_PIPE', - 27: 'CPG_PERFWINDOW_SEL_RESERVED1', - 28: 'CPG_PERFWINDOW_SEL_CPC_IC', - 29: 'CPG_PERFWINDOW_SEL_RESERVED2', - 30: 'CPG_PERFWINDOW_SEL_CPG_IC', -} -CPG_PERFWINDOW_SEL_PFP = 0 -CPG_PERFWINDOW_SEL_ME = 1 -CPG_PERFWINDOW_SEL_CE = 2 -CPG_PERFWINDOW_SEL_MES = 3 -CPG_PERFWINDOW_SEL_MEC1 = 4 -CPG_PERFWINDOW_SEL_MEC2 = 5 -CPG_PERFWINDOW_SEL_DFY = 6 -CPG_PERFWINDOW_SEL_DMA = 7 -CPG_PERFWINDOW_SEL_SHADOW = 8 -CPG_PERFWINDOW_SEL_RB = 9 -CPG_PERFWINDOW_SEL_CEDMA = 10 -CPG_PERFWINDOW_SEL_PRT_HDR_RPTR = 11 -CPG_PERFWINDOW_SEL_PRT_SMP_RPTR = 12 -CPG_PERFWINDOW_SEL_PQ1 = 13 -CPG_PERFWINDOW_SEL_PQ2 = 14 -CPG_PERFWINDOW_SEL_PQ3 = 15 -CPG_PERFWINDOW_SEL_MEMWR = 16 -CPG_PERFWINDOW_SEL_MEMRD = 17 -CPG_PERFWINDOW_SEL_VGT0 = 18 -CPG_PERFWINDOW_SEL_VGT1 = 19 -CPG_PERFWINDOW_SEL_APPEND = 20 -CPG_PERFWINDOW_SEL_QURD = 21 -CPG_PERFWINDOW_SEL_DDID = 22 -CPG_PERFWINDOW_SEL_SR = 23 -CPG_PERFWINDOW_SEL_QU_EOP = 24 -CPG_PERFWINDOW_SEL_QU_STRM = 25 -CPG_PERFWINDOW_SEL_QU_PIPE = 26 -CPG_PERFWINDOW_SEL_RESERVED1 = 27 -CPG_PERFWINDOW_SEL_CPC_IC = 28 -CPG_PERFWINDOW_SEL_RESERVED2 = 29 -CPG_PERFWINDOW_SEL_CPG_IC = 30 -CPG_PERFCOUNTWINDOW_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPG_PERFCOUNT_SEL' -CPG_PERFCOUNT_SEL__enumvalues = { - 0: 'CPG_PERF_SEL_ALWAYS_COUNT', - 1: 'CPG_PERF_SEL_RBIU_FIFO_FULL', - 4: 'CPG_PERF_SEL_CP_GRBM_DWORDS_SENT', - 5: 'CPG_PERF_SEL_ME_PARSER_BUSY', - 6: 'CPG_PERF_SEL_COUNT_TYPE0_PACKETS', - 7: 'CPG_PERF_SEL_COUNT_TYPE3_PACKETS', - 9: 'CPG_PERF_SEL_CP_GRBM_OUT_OF_CREDITS', - 10: 'CPG_PERF_SEL_CP_PFP_GRBM_OUT_OF_CREDITS', - 11: 'CPG_PERF_SEL_CP_GDS_GRBM_OUT_OF_CREDITS', - 12: 'CPG_PERF_SEL_RCIU_STALLED_ON_ME_READ', - 13: 'CPG_PERF_SEL_RCIU_STALLED_ON_DMA_READ', - 14: 'CPG_PERF_SEL_SSU_STALLED_ON_ACTIVE_CNTX', - 15: 'CPG_PERF_SEL_SSU_STALLED_ON_CLEAN_SIGNALS', - 16: 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_PULSE', - 17: 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_WR_CONFIRM', - 18: 'CPG_PERF_SEL_PFP_STALLED_ON_CSF_READY', - 19: 'CPG_PERF_SEL_PFP_STALLED_ON_MEQ_READY', - 20: 'CPG_PERF_SEL_PFP_STALLED_ON_RCIU_READY', - 21: 'CPG_PERF_SEL_PFP_STALLED_FOR_DATA_FROM_ROQ', - 22: 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_PFP', - 23: 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_STQ', - 24: 'CPG_PERF_SEL_ME_STALLED_ON_NO_AVAIL_GFX_CNTX', - 25: 'CPG_PERF_SEL_ME_STALLED_WRITING_TO_RCIU', - 26: 'CPG_PERF_SEL_ME_STALLED_WRITING_CONSTANTS', - 27: 'CPG_PERF_SEL_ME_STALLED_ON_PARTIAL_FLUSH', - 28: 'CPG_PERF_SEL_ME_WAIT_ON_CE_COUNTER', - 29: 'CPG_PERF_SEL_ME_WAIT_ON_AVAIL_BUFFER', - 31: 'CPG_PERF_SEL_LOAD_STALLED_ON_SET_COHERENCY', - 32: 'CPG_PERF_SEL_DYNAMIC_CLK_VALID', - 33: 'CPG_PERF_SEL_REGISTER_CLK_VALID', - 34: 'CPG_PERF_SEL_GUS_WRITE_REQUEST_SENT', - 35: 'CPG_PERF_SEL_GUS_READ_REQUEST_SENT', - 36: 'CPG_PERF_SEL_CE_STALL_RAM_DUMP', - 37: 'CPG_PERF_SEL_CE_STALL_RAM_WRITE', - 38: 'CPG_PERF_SEL_CE_STALL_ON_INC_FIFO', - 39: 'CPG_PERF_SEL_CE_STALL_ON_WR_RAM_FIFO', - 41: 'CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_ROQ', - 42: 'CPG_PERF_SEL_CE_STALL_ON_CE_BUFFER_FLAG', - 43: 'CPG_PERF_SEL_CE_STALL_ON_DE_COUNTER', - 44: 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 45: 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_TAGS', - 46: 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 47: 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', - 48: 'CPG_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 49: 'CPG_PERF_SEL_TCIU_WRITE_REQUEST_SENT', - 50: 'CPG_PERF_SEL_TCIU_READ_REQUEST_SENT', - 51: 'CPG_PERF_SEL_CPG_STAT_BUSY', - 52: 'CPG_PERF_SEL_CPG_STAT_IDLE', - 53: 'CPG_PERF_SEL_CPG_STAT_STALL', - 54: 'CPG_PERF_SEL_CPG_TCIU_BUSY', - 55: 'CPG_PERF_SEL_CPG_TCIU_IDLE', - 56: 'CPG_PERF_SEL_CPG_TCIU_STALL', - 57: 'CPG_PERF_SEL_CPG_UTCL2IU_BUSY', - 58: 'CPG_PERF_SEL_CPG_UTCL2IU_IDLE', - 59: 'CPG_PERF_SEL_CPG_UTCL2IU_STALL', - 60: 'CPG_PERF_SEL_CPG_GCRIU_BUSY', - 61: 'CPG_PERF_SEL_CPG_GCRIU_IDLE', - 62: 'CPG_PERF_SEL_CPG_GCRIU_STALL', - 63: 'CPG_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 64: 'CPG_PERF_SEL_ALL_GFX_PIPES_BUSY', - 65: 'CPG_PERF_SEL_CPG_UTCL2IU_XACK', - 66: 'CPG_PERF_SEL_CPG_UTCL2IU_XNACK', - 67: 'CPG_PERF_SEL_PFP_STALLED_ON_MEQ_DDID_READY', - 68: 'CPG_PERF_SEL_PFP_INSTR_CACHE_HIT', - 69: 'CPG_PERF_SEL_PFP_INSTR_CACHE_MISS', - 70: 'CPG_PERF_SEL_CE_INSTR_CACHE_HIT', - 71: 'CPG_PERF_SEL_CE_INSTR_CACHE_MISS', - 72: 'CPG_PERF_SEL_ME_INSTR_CACHE_HIT', - 73: 'CPG_PERF_SEL_ME_INSTR_CACHE_MISS', - 74: 'CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB1', - 75: 'CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB1', - 76: 'CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB2', - 77: 'CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB2', - 78: 'CPG_PERF_SEL_DMA_BUSY', - 79: 'CPG_PERF_SEL_DMA_STARVED', - 80: 'CPG_PERF_SEL_DMA_STALLED', - 81: 'CPG_PERF_SEL_DMA_FETCHER_STALLED_ON_ROQ_FULL', - 82: 'CPG_PERF_SEL_PFP_PWS_STALLED0', - 83: 'CPG_PERF_SEL_ME_PWS_STALLED0', - 84: 'CPG_PERF_SEL_PFP_PWS_STALLED1', - 85: 'CPG_PERF_SEL_ME_PWS_STALLED1', -} -CPG_PERF_SEL_ALWAYS_COUNT = 0 -CPG_PERF_SEL_RBIU_FIFO_FULL = 1 -CPG_PERF_SEL_CP_GRBM_DWORDS_SENT = 4 -CPG_PERF_SEL_ME_PARSER_BUSY = 5 -CPG_PERF_SEL_COUNT_TYPE0_PACKETS = 6 -CPG_PERF_SEL_COUNT_TYPE3_PACKETS = 7 -CPG_PERF_SEL_CP_GRBM_OUT_OF_CREDITS = 9 -CPG_PERF_SEL_CP_PFP_GRBM_OUT_OF_CREDITS = 10 -CPG_PERF_SEL_CP_GDS_GRBM_OUT_OF_CREDITS = 11 -CPG_PERF_SEL_RCIU_STALLED_ON_ME_READ = 12 -CPG_PERF_SEL_RCIU_STALLED_ON_DMA_READ = 13 -CPG_PERF_SEL_SSU_STALLED_ON_ACTIVE_CNTX = 14 -CPG_PERF_SEL_SSU_STALLED_ON_CLEAN_SIGNALS = 15 -CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_PULSE = 16 -CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_WR_CONFIRM = 17 -CPG_PERF_SEL_PFP_STALLED_ON_CSF_READY = 18 -CPG_PERF_SEL_PFP_STALLED_ON_MEQ_READY = 19 -CPG_PERF_SEL_PFP_STALLED_ON_RCIU_READY = 20 -CPG_PERF_SEL_PFP_STALLED_FOR_DATA_FROM_ROQ = 21 -CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_PFP = 22 -CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_STQ = 23 -CPG_PERF_SEL_ME_STALLED_ON_NO_AVAIL_GFX_CNTX = 24 -CPG_PERF_SEL_ME_STALLED_WRITING_TO_RCIU = 25 -CPG_PERF_SEL_ME_STALLED_WRITING_CONSTANTS = 26 -CPG_PERF_SEL_ME_STALLED_ON_PARTIAL_FLUSH = 27 -CPG_PERF_SEL_ME_WAIT_ON_CE_COUNTER = 28 -CPG_PERF_SEL_ME_WAIT_ON_AVAIL_BUFFER = 29 -CPG_PERF_SEL_LOAD_STALLED_ON_SET_COHERENCY = 31 -CPG_PERF_SEL_DYNAMIC_CLK_VALID = 32 -CPG_PERF_SEL_REGISTER_CLK_VALID = 33 -CPG_PERF_SEL_GUS_WRITE_REQUEST_SENT = 34 -CPG_PERF_SEL_GUS_READ_REQUEST_SENT = 35 -CPG_PERF_SEL_CE_STALL_RAM_DUMP = 36 -CPG_PERF_SEL_CE_STALL_RAM_WRITE = 37 -CPG_PERF_SEL_CE_STALL_ON_INC_FIFO = 38 -CPG_PERF_SEL_CE_STALL_ON_WR_RAM_FIFO = 39 -CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_ROQ = 41 -CPG_PERF_SEL_CE_STALL_ON_CE_BUFFER_FLAG = 42 -CPG_PERF_SEL_CE_STALL_ON_DE_COUNTER = 43 -CPG_PERF_SEL_TCIU_STALL_WAIT_ON_FREE = 44 -CPG_PERF_SEL_TCIU_STALL_WAIT_ON_TAGS = 45 -CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE = 46 -CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS = 47 -CPG_PERF_SEL_UTCL1_STALL_ON_TRANSLATION = 48 -CPG_PERF_SEL_TCIU_WRITE_REQUEST_SENT = 49 -CPG_PERF_SEL_TCIU_READ_REQUEST_SENT = 50 -CPG_PERF_SEL_CPG_STAT_BUSY = 51 -CPG_PERF_SEL_CPG_STAT_IDLE = 52 -CPG_PERF_SEL_CPG_STAT_STALL = 53 -CPG_PERF_SEL_CPG_TCIU_BUSY = 54 -CPG_PERF_SEL_CPG_TCIU_IDLE = 55 -CPG_PERF_SEL_CPG_TCIU_STALL = 56 -CPG_PERF_SEL_CPG_UTCL2IU_BUSY = 57 -CPG_PERF_SEL_CPG_UTCL2IU_IDLE = 58 -CPG_PERF_SEL_CPG_UTCL2IU_STALL = 59 -CPG_PERF_SEL_CPG_GCRIU_BUSY = 60 -CPG_PERF_SEL_CPG_GCRIU_IDLE = 61 -CPG_PERF_SEL_CPG_GCRIU_STALL = 62 -CPG_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE = 63 -CPG_PERF_SEL_ALL_GFX_PIPES_BUSY = 64 -CPG_PERF_SEL_CPG_UTCL2IU_XACK = 65 -CPG_PERF_SEL_CPG_UTCL2IU_XNACK = 66 -CPG_PERF_SEL_PFP_STALLED_ON_MEQ_DDID_READY = 67 -CPG_PERF_SEL_PFP_INSTR_CACHE_HIT = 68 -CPG_PERF_SEL_PFP_INSTR_CACHE_MISS = 69 -CPG_PERF_SEL_CE_INSTR_CACHE_HIT = 70 -CPG_PERF_SEL_CE_INSTR_CACHE_MISS = 71 -CPG_PERF_SEL_ME_INSTR_CACHE_HIT = 72 -CPG_PERF_SEL_ME_INSTR_CACHE_MISS = 73 -CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB1 = 74 -CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB1 = 75 -CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB2 = 76 -CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB2 = 77 -CPG_PERF_SEL_DMA_BUSY = 78 -CPG_PERF_SEL_DMA_STARVED = 79 -CPG_PERF_SEL_DMA_STALLED = 80 -CPG_PERF_SEL_DMA_FETCHER_STALLED_ON_ROQ_FULL = 81 -CPG_PERF_SEL_PFP_PWS_STALLED0 = 82 -CPG_PERF_SEL_ME_PWS_STALLED0 = 83 -CPG_PERF_SEL_PFP_PWS_STALLED1 = 84 -CPG_PERF_SEL_ME_PWS_STALLED1 = 85 -CPG_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CP_ALPHA_TAG_RAM_SEL' -CP_ALPHA_TAG_RAM_SEL__enumvalues = { - 0: 'CPG_TAG_RAM', - 1: 'CPC_TAG_RAM', - 2: 'CPF_TAG_RAM', - 3: 'RSV_TAG_RAM', -} -CPG_TAG_RAM = 0 -CPC_TAG_RAM = 1 -CPF_TAG_RAM = 2 -RSV_TAG_RAM = 3 -CP_ALPHA_TAG_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CP_DDID_CNTL_MODE' -CP_DDID_CNTL_MODE__enumvalues = { - 0: 'STALL', - 1: 'OVERRUN', -} -STALL = 0 -OVERRUN = 1 -CP_DDID_CNTL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CP_DDID_CNTL_SIZE' -CP_DDID_CNTL_SIZE__enumvalues = { - 0: 'SIZE_8K', - 1: 'SIZE_16K', -} -SIZE_8K = 0 -SIZE_16K = 1 -CP_DDID_CNTL_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'CP_DDID_CNTL_VMID_SEL' -CP_DDID_CNTL_VMID_SEL__enumvalues = { - 0: 'DDID_VMID_PIPE', - 1: 'DDID_VMID_CNTL', -} -DDID_VMID_PIPE = 0 -DDID_VMID_CNTL = 1 -CP_DDID_CNTL_VMID_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CP_ME_ID' -CP_ME_ID__enumvalues = { - 0: 'ME_ID0', - 1: 'ME_ID1', - 2: 'ME_ID2', - 3: 'ME_ID3', -} -ME_ID0 = 0 -ME_ID1 = 1 -ME_ID2 = 2 -ME_ID3 = 3 -CP_ME_ID = ctypes.c_uint32 # enum - -# values for enumeration 'CP_PERFMON_ENABLE_MODE' -CP_PERFMON_ENABLE_MODE__enumvalues = { - 0: 'CP_PERFMON_ENABLE_MODE_ALWAYS_COUNT', - 1: 'CP_PERFMON_ENABLE_MODE_RESERVED_1', - 2: 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_TRUE', - 3: 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_FALSE', -} -CP_PERFMON_ENABLE_MODE_ALWAYS_COUNT = 0 -CP_PERFMON_ENABLE_MODE_RESERVED_1 = 1 -CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_TRUE = 2 -CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_FALSE = 3 -CP_PERFMON_ENABLE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CP_PERFMON_STATE' -CP_PERFMON_STATE__enumvalues = { - 0: 'CP_PERFMON_STATE_DISABLE_AND_RESET', - 1: 'CP_PERFMON_STATE_START_COUNTING', - 2: 'CP_PERFMON_STATE_STOP_COUNTING', - 3: 'CP_PERFMON_STATE_RESERVED_3', - 4: 'CP_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 5: 'CP_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', -} -CP_PERFMON_STATE_DISABLE_AND_RESET = 0 -CP_PERFMON_STATE_START_COUNTING = 1 -CP_PERFMON_STATE_STOP_COUNTING = 2 -CP_PERFMON_STATE_RESERVED_3 = 3 -CP_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM = 4 -CP_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM = 5 -CP_PERFMON_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'CP_PIPE_ID' -CP_PIPE_ID__enumvalues = { - 0: 'PIPE_ID0', - 1: 'PIPE_ID1', - 2: 'PIPE_ID2', - 3: 'PIPE_ID3', -} -PIPE_ID0 = 0 -PIPE_ID1 = 1 -PIPE_ID2 = 2 -PIPE_ID3 = 3 -CP_PIPE_ID = ctypes.c_uint32 # enum - -# values for enumeration 'CP_RING_ID' -CP_RING_ID__enumvalues = { - 0: 'RINGID0', - 1: 'RINGID1', - 2: 'RINGID2', - 3: 'RINGID3', -} -RINGID0 = 0 -RINGID1 = 1 -RINGID2 = 2 -RINGID3 = 3 -CP_RING_ID = ctypes.c_uint32 # enum - -# values for enumeration 'SPM_PERFMON_STATE' -SPM_PERFMON_STATE__enumvalues = { - 0: 'STRM_PERFMON_STATE_DISABLE_AND_RESET', - 1: 'STRM_PERFMON_STATE_START_COUNTING', - 2: 'STRM_PERFMON_STATE_STOP_COUNTING', - 3: 'STRM_PERFMON_STATE_RESERVED_3', - 4: 'STRM_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 5: 'STRM_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', -} -STRM_PERFMON_STATE_DISABLE_AND_RESET = 0 -STRM_PERFMON_STATE_START_COUNTING = 1 -STRM_PERFMON_STATE_STOP_COUNTING = 2 -STRM_PERFMON_STATE_RESERVED_3 = 3 -STRM_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM = 4 -STRM_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM = 5 -SPM_PERFMON_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'SX_BLEND_OPT' -SX_BLEND_OPT__enumvalues = { - 0: 'BLEND_OPT_PRESERVE_NONE_IGNORE_ALL', - 1: 'BLEND_OPT_PRESERVE_ALL_IGNORE_NONE', - 2: 'BLEND_OPT_PRESERVE_C1_IGNORE_C0', - 3: 'BLEND_OPT_PRESERVE_C0_IGNORE_C1', - 4: 'BLEND_OPT_PRESERVE_A1_IGNORE_A0', - 5: 'BLEND_OPT_PRESERVE_A0_IGNORE_A1', - 6: 'BLEND_OPT_PRESERVE_NONE_IGNORE_A0', - 7: 'BLEND_OPT_PRESERVE_NONE_IGNORE_NONE', -} -BLEND_OPT_PRESERVE_NONE_IGNORE_ALL = 0 -BLEND_OPT_PRESERVE_ALL_IGNORE_NONE = 1 -BLEND_OPT_PRESERVE_C1_IGNORE_C0 = 2 -BLEND_OPT_PRESERVE_C0_IGNORE_C1 = 3 -BLEND_OPT_PRESERVE_A1_IGNORE_A0 = 4 -BLEND_OPT_PRESERVE_A0_IGNORE_A1 = 5 -BLEND_OPT_PRESERVE_NONE_IGNORE_A0 = 6 -BLEND_OPT_PRESERVE_NONE_IGNORE_NONE = 7 -SX_BLEND_OPT = ctypes.c_uint32 # enum - -# values for enumeration 'SX_DOWNCONVERT_FORMAT' -SX_DOWNCONVERT_FORMAT__enumvalues = { - 0: 'SX_RT_EXPORT_NO_CONVERSION', - 1: 'SX_RT_EXPORT_32_R', - 2: 'SX_RT_EXPORT_32_A', - 3: 'SX_RT_EXPORT_10_11_11', - 4: 'SX_RT_EXPORT_2_10_10_10', - 5: 'SX_RT_EXPORT_8_8_8_8', - 6: 'SX_RT_EXPORT_5_6_5', - 7: 'SX_RT_EXPORT_1_5_5_5', - 8: 'SX_RT_EXPORT_4_4_4_4', - 9: 'SX_RT_EXPORT_16_16_GR', - 10: 'SX_RT_EXPORT_16_16_AR', - 11: 'SX_RT_EXPORT_9_9_9_E5', - 12: 'SX_RT_EXPORT_2_10_10_10_7E3', - 13: 'SX_RT_EXPORT_2_10_10_10_6E4', -} -SX_RT_EXPORT_NO_CONVERSION = 0 -SX_RT_EXPORT_32_R = 1 -SX_RT_EXPORT_32_A = 2 -SX_RT_EXPORT_10_11_11 = 3 -SX_RT_EXPORT_2_10_10_10 = 4 -SX_RT_EXPORT_8_8_8_8 = 5 -SX_RT_EXPORT_5_6_5 = 6 -SX_RT_EXPORT_1_5_5_5 = 7 -SX_RT_EXPORT_4_4_4_4 = 8 -SX_RT_EXPORT_16_16_GR = 9 -SX_RT_EXPORT_16_16_AR = 10 -SX_RT_EXPORT_9_9_9_E5 = 11 -SX_RT_EXPORT_2_10_10_10_7E3 = 12 -SX_RT_EXPORT_2_10_10_10_6E4 = 13 -SX_DOWNCONVERT_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'SX_OPT_COMB_FCN' -SX_OPT_COMB_FCN__enumvalues = { - 0: 'OPT_COMB_NONE', - 1: 'OPT_COMB_ADD', - 2: 'OPT_COMB_SUBTRACT', - 3: 'OPT_COMB_MIN', - 4: 'OPT_COMB_MAX', - 5: 'OPT_COMB_REVSUBTRACT', - 6: 'OPT_COMB_BLEND_DISABLED', - 7: 'OPT_COMB_SAFE_ADD', -} -OPT_COMB_NONE = 0 -OPT_COMB_ADD = 1 -OPT_COMB_SUBTRACT = 2 -OPT_COMB_MIN = 3 -OPT_COMB_MAX = 4 -OPT_COMB_REVSUBTRACT = 5 -OPT_COMB_BLEND_DISABLED = 6 -OPT_COMB_SAFE_ADD = 7 -SX_OPT_COMB_FCN = ctypes.c_uint32 # enum - -# values for enumeration 'SX_PERFCOUNTER_VALS' -SX_PERFCOUNTER_VALS__enumvalues = { - 0: 'SX_PERF_SEL_PA_IDLE_CYCLES', - 1: 'SX_PERF_SEL_PA_REQ', - 2: 'SX_PERF_SEL_PA_POS', - 3: 'SX_PERF_SEL_CLOCK', - 4: 'SX_PERF_SEL_GATE_EN1', - 5: 'SX_PERF_SEL_GATE_EN2', - 6: 'SX_PERF_SEL_GATE_EN3', - 7: 'SX_PERF_SEL_GATE_EN4', - 8: 'SX_PERF_SEL_SH_POS_STARVE', - 9: 'SX_PERF_SEL_SH_COLOR_STARVE', - 10: 'SX_PERF_SEL_SH_POS_STALL', - 11: 'SX_PERF_SEL_SH_COLOR_STALL', - 12: 'SX_PERF_SEL_DB0_PIXELS', - 13: 'SX_PERF_SEL_DB0_HALF_QUADS', - 14: 'SX_PERF_SEL_DB0_PIXEL_STALL', - 15: 'SX_PERF_SEL_DB0_PIXEL_IDLE', - 16: 'SX_PERF_SEL_DB0_PRED_PIXELS', - 17: 'SX_PERF_SEL_DB1_PIXELS', - 18: 'SX_PERF_SEL_DB1_HALF_QUADS', - 19: 'SX_PERF_SEL_DB1_PIXEL_STALL', - 20: 'SX_PERF_SEL_DB1_PIXEL_IDLE', - 21: 'SX_PERF_SEL_DB1_PRED_PIXELS', - 22: 'SX_PERF_SEL_DB2_PIXELS', - 23: 'SX_PERF_SEL_DB2_HALF_QUADS', - 24: 'SX_PERF_SEL_DB2_PIXEL_STALL', - 25: 'SX_PERF_SEL_DB2_PIXEL_IDLE', - 26: 'SX_PERF_SEL_DB2_PRED_PIXELS', - 27: 'SX_PERF_SEL_DB3_PIXELS', - 28: 'SX_PERF_SEL_DB3_HALF_QUADS', - 29: 'SX_PERF_SEL_DB3_PIXEL_STALL', - 30: 'SX_PERF_SEL_DB3_PIXEL_IDLE', - 31: 'SX_PERF_SEL_DB3_PRED_PIXELS', - 32: 'SX_PERF_SEL_COL_BUSY', - 33: 'SX_PERF_SEL_POS_BUSY', - 34: 'SX_PERF_SEL_DB0_MRT_BLEND_BYPASS', - 35: 'SX_PERF_SEL_DB0_MRT_DONT_RD_DEST', - 36: 'SX_PERF_SEL_DB0_MRT_DISCARD_SRC', - 37: 'SX_PERF_SEL_DB0_MRT_SINGLE_QUADS', - 38: 'SX_PERF_SEL_DB0_MRT_DOUBLE_QUADS', - 39: 'SX_PERF_SEL_DB1_MRT_BLEND_BYPASS', - 40: 'SX_PERF_SEL_DB1_MRT_DONT_RD_DEST', - 41: 'SX_PERF_SEL_DB1_MRT_DISCARD_SRC', - 42: 'SX_PERF_SEL_DB1_MRT_SINGLE_QUADS', - 43: 'SX_PERF_SEL_DB1_MRT_DOUBLE_QUADS', - 44: 'SX_PERF_SEL_DB2_MRT_BLEND_BYPASS', - 45: 'SX_PERF_SEL_DB2_MRT_DONT_RD_DEST', - 46: 'SX_PERF_SEL_DB2_MRT_DISCARD_SRC', - 47: 'SX_PERF_SEL_DB2_MRT_SINGLE_QUADS', - 48: 'SX_PERF_SEL_DB2_MRT_DOUBLE_QUADS', - 49: 'SX_PERF_SEL_DB3_MRT_BLEND_BYPASS', - 50: 'SX_PERF_SEL_DB3_MRT_DONT_RD_DEST', - 51: 'SX_PERF_SEL_DB3_MRT_DISCARD_SRC', - 52: 'SX_PERF_SEL_DB3_MRT_SINGLE_QUADS', - 53: 'SX_PERF_SEL_DB3_MRT_DOUBLE_QUADS', - 54: 'SX_PERF_SEL_PA_REQ_LATENCY', - 55: 'SX_PERF_SEL_POS_SCBD_STALL', - 56: 'SX_PERF_SEL_CLOCK_DROP_STALL', - 57: 'SX_PERF_SEL_GATE_EN5', - 58: 'SX_PERF_SEL_GATE_EN6', - 59: 'SX_PERF_SEL_DB0_SIZE', - 60: 'SX_PERF_SEL_DB1_SIZE', - 61: 'SX_PERF_SEL_DB2_SIZE', - 62: 'SX_PERF_SEL_DB3_SIZE', - 63: 'SX_PERF_SEL_IDX_STALL_CYCLES', - 64: 'SX_PERF_SEL_IDX_IDLE_CYCLES', - 65: 'SX_PERF_SEL_IDX_REQ', - 66: 'SX_PERF_SEL_IDX_RET', - 67: 'SX_PERF_SEL_IDX_REQ_LATENCY', - 68: 'SX_PERF_SEL_IDX_SCBD_STALL', - 69: 'SX_PERF_SEL_GATE_EN7', - 70: 'SX_PERF_SEL_GATE_EN8', - 71: 'SX_PERF_SEL_SH_IDX_STARVE', - 72: 'SX_PERF_SEL_IDX_BUSY', - 73: 'SX_PERF_SEL_PA_POS_BANK_CONF', - 74: 'SX_PERF_SEL_DB0_END_OF_WAVE', - 75: 'SX_PERF_SEL_DB0_4X2_DISCARD', - 76: 'SX_PERF_SEL_DB1_END_OF_WAVE', - 77: 'SX_PERF_SEL_DB1_4X2_DISCARD', - 78: 'SX_PERF_SEL_DB2_END_OF_WAVE', - 79: 'SX_PERF_SEL_DB2_4X2_DISCARD', - 80: 'SX_PERF_SEL_DB3_END_OF_WAVE', - 81: 'SX_PERF_SEL_DB3_4X2_DISCARD', -} -SX_PERF_SEL_PA_IDLE_CYCLES = 0 -SX_PERF_SEL_PA_REQ = 1 -SX_PERF_SEL_PA_POS = 2 -SX_PERF_SEL_CLOCK = 3 -SX_PERF_SEL_GATE_EN1 = 4 -SX_PERF_SEL_GATE_EN2 = 5 -SX_PERF_SEL_GATE_EN3 = 6 -SX_PERF_SEL_GATE_EN4 = 7 -SX_PERF_SEL_SH_POS_STARVE = 8 -SX_PERF_SEL_SH_COLOR_STARVE = 9 -SX_PERF_SEL_SH_POS_STALL = 10 -SX_PERF_SEL_SH_COLOR_STALL = 11 -SX_PERF_SEL_DB0_PIXELS = 12 -SX_PERF_SEL_DB0_HALF_QUADS = 13 -SX_PERF_SEL_DB0_PIXEL_STALL = 14 -SX_PERF_SEL_DB0_PIXEL_IDLE = 15 -SX_PERF_SEL_DB0_PRED_PIXELS = 16 -SX_PERF_SEL_DB1_PIXELS = 17 -SX_PERF_SEL_DB1_HALF_QUADS = 18 -SX_PERF_SEL_DB1_PIXEL_STALL = 19 -SX_PERF_SEL_DB1_PIXEL_IDLE = 20 -SX_PERF_SEL_DB1_PRED_PIXELS = 21 -SX_PERF_SEL_DB2_PIXELS = 22 -SX_PERF_SEL_DB2_HALF_QUADS = 23 -SX_PERF_SEL_DB2_PIXEL_STALL = 24 -SX_PERF_SEL_DB2_PIXEL_IDLE = 25 -SX_PERF_SEL_DB2_PRED_PIXELS = 26 -SX_PERF_SEL_DB3_PIXELS = 27 -SX_PERF_SEL_DB3_HALF_QUADS = 28 -SX_PERF_SEL_DB3_PIXEL_STALL = 29 -SX_PERF_SEL_DB3_PIXEL_IDLE = 30 -SX_PERF_SEL_DB3_PRED_PIXELS = 31 -SX_PERF_SEL_COL_BUSY = 32 -SX_PERF_SEL_POS_BUSY = 33 -SX_PERF_SEL_DB0_MRT_BLEND_BYPASS = 34 -SX_PERF_SEL_DB0_MRT_DONT_RD_DEST = 35 -SX_PERF_SEL_DB0_MRT_DISCARD_SRC = 36 -SX_PERF_SEL_DB0_MRT_SINGLE_QUADS = 37 -SX_PERF_SEL_DB0_MRT_DOUBLE_QUADS = 38 -SX_PERF_SEL_DB1_MRT_BLEND_BYPASS = 39 -SX_PERF_SEL_DB1_MRT_DONT_RD_DEST = 40 -SX_PERF_SEL_DB1_MRT_DISCARD_SRC = 41 -SX_PERF_SEL_DB1_MRT_SINGLE_QUADS = 42 -SX_PERF_SEL_DB1_MRT_DOUBLE_QUADS = 43 -SX_PERF_SEL_DB2_MRT_BLEND_BYPASS = 44 -SX_PERF_SEL_DB2_MRT_DONT_RD_DEST = 45 -SX_PERF_SEL_DB2_MRT_DISCARD_SRC = 46 -SX_PERF_SEL_DB2_MRT_SINGLE_QUADS = 47 -SX_PERF_SEL_DB2_MRT_DOUBLE_QUADS = 48 -SX_PERF_SEL_DB3_MRT_BLEND_BYPASS = 49 -SX_PERF_SEL_DB3_MRT_DONT_RD_DEST = 50 -SX_PERF_SEL_DB3_MRT_DISCARD_SRC = 51 -SX_PERF_SEL_DB3_MRT_SINGLE_QUADS = 52 -SX_PERF_SEL_DB3_MRT_DOUBLE_QUADS = 53 -SX_PERF_SEL_PA_REQ_LATENCY = 54 -SX_PERF_SEL_POS_SCBD_STALL = 55 -SX_PERF_SEL_CLOCK_DROP_STALL = 56 -SX_PERF_SEL_GATE_EN5 = 57 -SX_PERF_SEL_GATE_EN6 = 58 -SX_PERF_SEL_DB0_SIZE = 59 -SX_PERF_SEL_DB1_SIZE = 60 -SX_PERF_SEL_DB2_SIZE = 61 -SX_PERF_SEL_DB3_SIZE = 62 -SX_PERF_SEL_IDX_STALL_CYCLES = 63 -SX_PERF_SEL_IDX_IDLE_CYCLES = 64 -SX_PERF_SEL_IDX_REQ = 65 -SX_PERF_SEL_IDX_RET = 66 -SX_PERF_SEL_IDX_REQ_LATENCY = 67 -SX_PERF_SEL_IDX_SCBD_STALL = 68 -SX_PERF_SEL_GATE_EN7 = 69 -SX_PERF_SEL_GATE_EN8 = 70 -SX_PERF_SEL_SH_IDX_STARVE = 71 -SX_PERF_SEL_IDX_BUSY = 72 -SX_PERF_SEL_PA_POS_BANK_CONF = 73 -SX_PERF_SEL_DB0_END_OF_WAVE = 74 -SX_PERF_SEL_DB0_4X2_DISCARD = 75 -SX_PERF_SEL_DB1_END_OF_WAVE = 76 -SX_PERF_SEL_DB1_4X2_DISCARD = 77 -SX_PERF_SEL_DB2_END_OF_WAVE = 78 -SX_PERF_SEL_DB2_4X2_DISCARD = 79 -SX_PERF_SEL_DB3_END_OF_WAVE = 80 -SX_PERF_SEL_DB3_4X2_DISCARD = 81 -SX_PERFCOUNTER_VALS = ctypes.c_uint32 # enum - -# values for enumeration 'CompareFrag' -CompareFrag__enumvalues = { - 0: 'FRAG_NEVER', - 1: 'FRAG_LESS', - 2: 'FRAG_EQUAL', - 3: 'FRAG_LEQUAL', - 4: 'FRAG_GREATER', - 5: 'FRAG_NOTEQUAL', - 6: 'FRAG_GEQUAL', - 7: 'FRAG_ALWAYS', -} -FRAG_NEVER = 0 -FRAG_LESS = 1 -FRAG_EQUAL = 2 -FRAG_LEQUAL = 3 -FRAG_GREATER = 4 -FRAG_NOTEQUAL = 5 -FRAG_GEQUAL = 6 -FRAG_ALWAYS = 7 -CompareFrag = ctypes.c_uint32 # enum - -# values for enumeration 'ConservativeZExport' -ConservativeZExport__enumvalues = { - 0: 'EXPORT_ANY_Z', - 1: 'EXPORT_LESS_THAN_Z', - 2: 'EXPORT_GREATER_THAN_Z', - 3: 'EXPORT_RESERVED', -} -EXPORT_ANY_Z = 0 -EXPORT_LESS_THAN_Z = 1 -EXPORT_GREATER_THAN_Z = 2 -EXPORT_RESERVED = 3 -ConservativeZExport = ctypes.c_uint32 # enum - -# values for enumeration 'DFSMFlushEvents' -DFSMFlushEvents__enumvalues = { - 0: 'DB_FLUSH_AND_INV_DB_DATA_TS', - 1: 'DB_FLUSH_AND_INV_DB_META', - 2: 'DB_CACHE_FLUSH', - 3: 'DB_CACHE_FLUSH_TS', - 4: 'DB_CACHE_FLUSH_AND_INV_EVENT', - 5: 'DB_CACHE_FLUSH_AND_INV_TS_EVENT', - 6: 'DB_VPORT_CHANGED_EVENT', - 7: 'DB_CONTEXT_DONE_EVENT', - 8: 'DB_BREAK_BATCH_EVENT', - 9: 'DB_INVOKE_CHANGE_EVENT', - 10: 'DB_CONTEXT_SUSPEND_EVENT', -} -DB_FLUSH_AND_INV_DB_DATA_TS = 0 -DB_FLUSH_AND_INV_DB_META = 1 -DB_CACHE_FLUSH = 2 -DB_CACHE_FLUSH_TS = 3 -DB_CACHE_FLUSH_AND_INV_EVENT = 4 -DB_CACHE_FLUSH_AND_INV_TS_EVENT = 5 -DB_VPORT_CHANGED_EVENT = 6 -DB_CONTEXT_DONE_EVENT = 7 -DB_BREAK_BATCH_EVENT = 8 -DB_INVOKE_CHANGE_EVENT = 9 -DB_CONTEXT_SUSPEND_EVENT = 10 -DFSMFlushEvents = ctypes.c_uint32 # enum - -# values for enumeration 'DbMemArbWatermarks' -DbMemArbWatermarks__enumvalues = { - 0: 'TRANSFERRED_64_BYTES', - 1: 'TRANSFERRED_128_BYTES', - 2: 'TRANSFERRED_256_BYTES', - 3: 'TRANSFERRED_512_BYTES', - 4: 'TRANSFERRED_1024_BYTES', - 5: 'TRANSFERRED_2048_BYTES', - 6: 'TRANSFERRED_4096_BYTES', - 7: 'TRANSFERRED_8192_BYTES', -} -TRANSFERRED_64_BYTES = 0 -TRANSFERRED_128_BYTES = 1 -TRANSFERRED_256_BYTES = 2 -TRANSFERRED_512_BYTES = 3 -TRANSFERRED_1024_BYTES = 4 -TRANSFERRED_2048_BYTES = 5 -TRANSFERRED_4096_BYTES = 6 -TRANSFERRED_8192_BYTES = 7 -DbMemArbWatermarks = ctypes.c_uint32 # enum - -# values for enumeration 'DbPRTFaultBehavior' -DbPRTFaultBehavior__enumvalues = { - 0: 'FAULT_ZERO', - 1: 'FAULT_ONE', - 2: 'FAULT_FAIL', - 3: 'FAULT_PASS', -} -FAULT_ZERO = 0 -FAULT_ONE = 1 -FAULT_FAIL = 2 -FAULT_PASS = 3 -DbPRTFaultBehavior = ctypes.c_uint32 # enum - -# values for enumeration 'DbPSLControl' -DbPSLControl__enumvalues = { - 0: 'PSLC_AUTO', - 1: 'PSLC_ON_HANG_ONLY', - 2: 'PSLC_ASAP', - 3: 'PSLC_COUNTDOWN', -} -PSLC_AUTO = 0 -PSLC_ON_HANG_ONLY = 1 -PSLC_ASAP = 2 -PSLC_COUNTDOWN = 3 -DbPSLControl = ctypes.c_uint32 # enum - -# values for enumeration 'ForceControl' -ForceControl__enumvalues = { - 0: 'FORCE_OFF', - 1: 'FORCE_ENABLE', - 2: 'FORCE_DISABLE', - 3: 'FORCE_RESERVED', -} -FORCE_OFF = 0 -FORCE_ENABLE = 1 -FORCE_DISABLE = 2 -FORCE_RESERVED = 3 -ForceControl = ctypes.c_uint32 # enum - -# values for enumeration 'OreoMode' -OreoMode__enumvalues = { - 0: 'OMODE_BLEND', - 1: 'OMODE_O_THEN_B', - 2: 'OMODE_P_THEN_O_THEN_B', - 3: 'OMODE_RESERVED_3', -} -OMODE_BLEND = 0 -OMODE_O_THEN_B = 1 -OMODE_P_THEN_O_THEN_B = 2 -OMODE_RESERVED_3 = 3 -OreoMode = ctypes.c_uint32 # enum - -# values for enumeration 'PerfCounter_Vals' -PerfCounter_Vals__enumvalues = { - 0: 'DB_PERF_SEL_SC_DB_tile_sends', - 1: 'DB_PERF_SEL_SC_DB_tile_busy', - 2: 'DB_PERF_SEL_SC_DB_tile_stalls', - 3: 'DB_PERF_SEL_SC_DB_tile_events', - 4: 'DB_PERF_SEL_SC_DB_tile_tiles', - 5: 'DB_PERF_SEL_SC_DB_tile_covered', - 6: 'DB_PERF_SEL_hiz_tc_read_starved', - 7: 'DB_PERF_SEL_hiz_tc_write_stall', - 8: 'DB_PERF_SEL_hiz_tile_culled', - 9: 'DB_PERF_SEL_his_tile_culled', - 10: 'DB_PERF_SEL_DB_SC_tile_sends', - 11: 'DB_PERF_SEL_DB_SC_tile_busy', - 12: 'DB_PERF_SEL_DB_SC_tile_stalls', - 13: 'DB_PERF_SEL_DB_SC_tile_df_stalls', - 14: 'DB_PERF_SEL_DB_SC_tile_tiles', - 15: 'DB_PERF_SEL_DB_SC_tile_culled', - 16: 'DB_PERF_SEL_DB_SC_tile_hier_kill', - 17: 'DB_PERF_SEL_DB_SC_tile_fast_ops', - 18: 'DB_PERF_SEL_DB_SC_tile_no_ops', - 19: 'DB_PERF_SEL_DB_SC_tile_tile_rate', - 20: 'DB_PERF_SEL_DB_SC_tile_ssaa_kill', - 21: 'DB_PERF_SEL_DB_SC_tile_fast_z_ops', - 22: 'DB_PERF_SEL_DB_SC_tile_fast_stencil_ops', - 23: 'DB_PERF_SEL_SC_DB_quad_sends', - 24: 'DB_PERF_SEL_SC_DB_quad_busy', - 25: 'DB_PERF_SEL_SC_DB_quad_squads', - 26: 'DB_PERF_SEL_SC_DB_quad_tiles', - 27: 'DB_PERF_SEL_SC_DB_quad_pixels', - 28: 'DB_PERF_SEL_SC_DB_quad_killed_tiles', - 29: 'DB_PERF_SEL_DB_SC_quad_sends', - 30: 'DB_PERF_SEL_DB_SC_quad_busy', - 31: 'DB_PERF_SEL_DB_SC_quad_stalls', - 32: 'DB_PERF_SEL_DB_SC_quad_tiles', - 33: 'DB_PERF_SEL_DB_SC_quad_lit_quad', - 34: 'DB_PERF_SEL_DB_CB_tile_sends', - 35: 'DB_PERF_SEL_DB_CB_tile_busy', - 36: 'DB_PERF_SEL_DB_CB_tile_stalls', - 37: 'DB_PERF_SEL_SX_DB_quad_sends', - 38: 'DB_PERF_SEL_SX_DB_quad_busy', - 39: 'DB_PERF_SEL_SX_DB_quad_stalls', - 40: 'DB_PERF_SEL_SX_DB_quad_quads', - 41: 'DB_PERF_SEL_SX_DB_quad_pixels', - 42: 'DB_PERF_SEL_SX_DB_quad_exports', - 43: 'DB_PERF_SEL_SH_quads_outstanding_sum', - 44: 'DB_PERF_SEL_DB_CB_lquad_sends', - 45: 'DB_PERF_SEL_DB_CB_lquad_busy', - 46: 'DB_PERF_SEL_DB_CB_lquad_stalls', - 47: 'DB_PERF_SEL_DB_CB_lquad_quads', - 48: 'DB_PERF_SEL_tile_rd_sends', - 49: 'DB_PERF_SEL_mi_tile_rd_outstanding_sum', - 50: 'DB_PERF_SEL_quad_rd_sends', - 51: 'DB_PERF_SEL_quad_rd_busy', - 52: 'DB_PERF_SEL_quad_rd_mi_stall', - 53: 'DB_PERF_SEL_quad_rd_rw_collision', - 54: 'DB_PERF_SEL_quad_rd_tag_stall', - 55: 'DB_PERF_SEL_quad_rd_32byte_reqs', - 56: 'DB_PERF_SEL_quad_rd_panic', - 57: 'DB_PERF_SEL_mi_quad_rd_outstanding_sum', - 58: 'DB_PERF_SEL_quad_rdret_sends', - 59: 'DB_PERF_SEL_quad_rdret_busy', - 60: 'DB_PERF_SEL_tile_wr_sends', - 61: 'DB_PERF_SEL_tile_wr_acks', - 62: 'DB_PERF_SEL_mi_tile_wr_outstanding_sum', - 63: 'DB_PERF_SEL_quad_wr_sends', - 64: 'DB_PERF_SEL_quad_wr_busy', - 65: 'DB_PERF_SEL_quad_wr_mi_stall', - 66: 'DB_PERF_SEL_quad_wr_coherency_stall', - 67: 'DB_PERF_SEL_quad_wr_acks', - 68: 'DB_PERF_SEL_mi_quad_wr_outstanding_sum', - 69: 'DB_PERF_SEL_Tile_Cache_misses', - 70: 'DB_PERF_SEL_Tile_Cache_hits', - 71: 'DB_PERF_SEL_Tile_Cache_flushes', - 72: 'DB_PERF_SEL_Tile_Cache_surface_stall', - 73: 'DB_PERF_SEL_Tile_Cache_starves', - 74: 'DB_PERF_SEL_Tile_Cache_mem_return_starve', - 75: 'DB_PERF_SEL_tcp_dispatcher_reads', - 76: 'DB_PERF_SEL_tcp_prefetcher_reads', - 77: 'DB_PERF_SEL_tcp_preloader_reads', - 78: 'DB_PERF_SEL_tcp_dispatcher_flushes', - 79: 'DB_PERF_SEL_tcp_prefetcher_flushes', - 80: 'DB_PERF_SEL_tcp_preloader_flushes', - 81: 'DB_PERF_SEL_Depth_Tile_Cache_sends', - 82: 'DB_PERF_SEL_Depth_Tile_Cache_busy', - 83: 'DB_PERF_SEL_Depth_Tile_Cache_starves', - 84: 'DB_PERF_SEL_Depth_Tile_Cache_dtile_locked', - 85: 'DB_PERF_SEL_Depth_Tile_Cache_alloc_stall', - 86: 'DB_PERF_SEL_Depth_Tile_Cache_misses', - 87: 'DB_PERF_SEL_Depth_Tile_Cache_hits', - 88: 'DB_PERF_SEL_Depth_Tile_Cache_flushes', - 89: 'DB_PERF_SEL_Depth_Tile_Cache_noop_tile', - 90: 'DB_PERF_SEL_Depth_Tile_Cache_detailed_noop', - 91: 'DB_PERF_SEL_Depth_Tile_Cache_event', - 92: 'DB_PERF_SEL_Depth_Tile_Cache_tile_frees', - 93: 'DB_PERF_SEL_Depth_Tile_Cache_data_frees', - 94: 'DB_PERF_SEL_Depth_Tile_Cache_mem_return_starve', - 95: 'DB_PERF_SEL_Stencil_Cache_misses', - 96: 'DB_PERF_SEL_Stencil_Cache_hits', - 97: 'DB_PERF_SEL_Stencil_Cache_flushes', - 98: 'DB_PERF_SEL_Stencil_Cache_starves', - 99: 'DB_PERF_SEL_Stencil_Cache_frees', - 100: 'DB_PERF_SEL_Z_Cache_separate_Z_misses', - 101: 'DB_PERF_SEL_Z_Cache_separate_Z_hits', - 102: 'DB_PERF_SEL_Z_Cache_separate_Z_flushes', - 103: 'DB_PERF_SEL_Z_Cache_separate_Z_starves', - 104: 'DB_PERF_SEL_Z_Cache_pmask_misses', - 105: 'DB_PERF_SEL_Z_Cache_pmask_hits', - 106: 'DB_PERF_SEL_Z_Cache_pmask_flushes', - 107: 'DB_PERF_SEL_Z_Cache_pmask_starves', - 108: 'DB_PERF_SEL_Z_Cache_frees', - 109: 'DB_PERF_SEL_Plane_Cache_misses', - 110: 'DB_PERF_SEL_Plane_Cache_hits', - 111: 'DB_PERF_SEL_Plane_Cache_flushes', - 112: 'DB_PERF_SEL_Plane_Cache_starves', - 113: 'DB_PERF_SEL_Plane_Cache_frees', - 114: 'DB_PERF_SEL_flush_expanded_stencil', - 115: 'DB_PERF_SEL_flush_compressed_stencil', - 116: 'DB_PERF_SEL_flush_single_stencil', - 117: 'DB_PERF_SEL_planes_flushed', - 118: 'DB_PERF_SEL_flush_1plane', - 119: 'DB_PERF_SEL_flush_2plane', - 120: 'DB_PERF_SEL_flush_3plane', - 121: 'DB_PERF_SEL_flush_4plane', - 122: 'DB_PERF_SEL_flush_5plane', - 123: 'DB_PERF_SEL_flush_6plane', - 124: 'DB_PERF_SEL_flush_7plane', - 125: 'DB_PERF_SEL_flush_8plane', - 126: 'DB_PERF_SEL_flush_9plane', - 127: 'DB_PERF_SEL_flush_10plane', - 128: 'DB_PERF_SEL_flush_11plane', - 129: 'DB_PERF_SEL_flush_12plane', - 130: 'DB_PERF_SEL_flush_13plane', - 131: 'DB_PERF_SEL_flush_14plane', - 132: 'DB_PERF_SEL_flush_15plane', - 133: 'DB_PERF_SEL_flush_16plane', - 134: 'DB_PERF_SEL_flush_expanded_z', - 135: 'DB_PERF_SEL_earlyZ_waiting_for_postZ_done', - 136: 'DB_PERF_SEL_reZ_waiting_for_postZ_done', - 137: 'DB_PERF_SEL_dk_tile_sends', - 138: 'DB_PERF_SEL_dk_tile_busy', - 139: 'DB_PERF_SEL_dk_tile_quad_starves', - 140: 'DB_PERF_SEL_dk_tile_stalls', - 141: 'DB_PERF_SEL_dk_squad_sends', - 142: 'DB_PERF_SEL_dk_squad_busy', - 143: 'DB_PERF_SEL_dk_squad_stalls', - 144: 'DB_PERF_SEL_Op_Pipe_Busy', - 145: 'DB_PERF_SEL_Op_Pipe_MC_Read_stall', - 146: 'DB_PERF_SEL_qc_busy', - 147: 'DB_PERF_SEL_qc_xfc', - 148: 'DB_PERF_SEL_qc_conflicts', - 149: 'DB_PERF_SEL_qc_full_stall', - 150: 'DB_PERF_SEL_qc_in_preZ_tile_stalls_postZ', - 151: 'DB_PERF_SEL_qc_in_postZ_tile_stalls_preZ', - 152: 'DB_PERF_SEL_tsc_insert_summarize_stall', - 153: 'DB_PERF_SEL_tl_busy', - 154: 'DB_PERF_SEL_tl_dtc_read_starved', - 155: 'DB_PERF_SEL_tl_z_fetch_stall', - 156: 'DB_PERF_SEL_tl_stencil_stall', - 157: 'DB_PERF_SEL_tl_z_decompress_stall', - 158: 'DB_PERF_SEL_tl_stencil_locked_stall', - 159: 'DB_PERF_SEL_tl_events', - 160: 'DB_PERF_SEL_tl_summarize_squads', - 161: 'DB_PERF_SEL_tl_flush_expand_squads', - 162: 'DB_PERF_SEL_tl_expand_squads', - 163: 'DB_PERF_SEL_tl_preZ_squads', - 164: 'DB_PERF_SEL_tl_postZ_squads', - 165: 'DB_PERF_SEL_tl_preZ_noop_squads', - 166: 'DB_PERF_SEL_tl_postZ_noop_squads', - 167: 'DB_PERF_SEL_tl_tile_ops', - 168: 'DB_PERF_SEL_tl_in_xfc', - 169: 'DB_PERF_SEL_tl_in_single_stencil_expand_stall', - 170: 'DB_PERF_SEL_tl_in_fast_z_stall', - 171: 'DB_PERF_SEL_tl_out_xfc', - 172: 'DB_PERF_SEL_tl_out_squads', - 173: 'DB_PERF_SEL_zf_plane_multicycle', - 174: 'DB_PERF_SEL_PostZ_Samples_passing_Z', - 175: 'DB_PERF_SEL_PostZ_Samples_failing_Z', - 176: 'DB_PERF_SEL_PostZ_Samples_failing_S', - 177: 'DB_PERF_SEL_PreZ_Samples_passing_Z', - 178: 'DB_PERF_SEL_PreZ_Samples_failing_Z', - 179: 'DB_PERF_SEL_PreZ_Samples_failing_S', - 180: 'DB_PERF_SEL_ts_tc_update_stall', - 181: 'DB_PERF_SEL_sc_kick_start', - 182: 'DB_PERF_SEL_sc_kick_end', - 183: 'DB_PERF_SEL_clock_reg_active', - 184: 'DB_PERF_SEL_clock_main_active', - 185: 'DB_PERF_SEL_clock_mem_export_active', - 186: 'DB_PERF_SEL_esr_ps_out_busy', - 187: 'DB_PERF_SEL_esr_ps_lqf_busy', - 188: 'DB_PERF_SEL_esr_ps_lqf_stall', - 189: 'DB_PERF_SEL_etr_out_send', - 190: 'DB_PERF_SEL_etr_out_busy', - 191: 'DB_PERF_SEL_etr_out_ltile_probe_fifo_full_stall', - 192: 'DB_PERF_SEL_etr_out_cb_tile_stall', - 193: 'DB_PERF_SEL_etr_out_esr_stall', - 194: 'DB_PERF_SEL_esr_ps_vic_busy', - 195: 'DB_PERF_SEL_esr_ps_vic_stall', - 196: 'DB_PERF_SEL_esr_eot_fwd_busy', - 197: 'DB_PERF_SEL_esr_eot_fwd_holding_squad', - 198: 'DB_PERF_SEL_esr_eot_fwd_forward', - 199: 'DB_PERF_SEL_esr_sqq_zi_busy', - 200: 'DB_PERF_SEL_esr_sqq_zi_stall', - 201: 'DB_PERF_SEL_postzl_sq_pt_busy', - 202: 'DB_PERF_SEL_postzl_sq_pt_stall', - 203: 'DB_PERF_SEL_postzl_se_busy', - 204: 'DB_PERF_SEL_postzl_se_stall', - 205: 'DB_PERF_SEL_postzl_partial_launch', - 206: 'DB_PERF_SEL_postzl_full_launch', - 207: 'DB_PERF_SEL_postzl_partial_waiting', - 208: 'DB_PERF_SEL_postzl_tile_mem_stall', - 209: 'DB_PERF_SEL_postzl_tile_init_stall', - 210: 'DB_PERF_SEL_prezl_tile_mem_stall', - 211: 'DB_PERF_SEL_prezl_tile_init_stall', - 212: 'DB_PERF_SEL_dtt_sm_clash_stall', - 213: 'DB_PERF_SEL_dtt_sm_slot_stall', - 214: 'DB_PERF_SEL_dtt_sm_miss_stall', - 215: 'DB_PERF_SEL_mi_rdreq_busy', - 216: 'DB_PERF_SEL_mi_rdreq_stall', - 217: 'DB_PERF_SEL_mi_wrreq_busy', - 218: 'DB_PERF_SEL_mi_wrreq_stall', - 219: 'DB_PERF_SEL_recomp_tile_to_1zplane_no_fastop', - 220: 'DB_PERF_SEL_dkg_tile_rate_tile', - 221: 'DB_PERF_SEL_prezl_src_in_sends', - 222: 'DB_PERF_SEL_prezl_src_in_stall', - 223: 'DB_PERF_SEL_prezl_src_in_squads', - 224: 'DB_PERF_SEL_prezl_src_in_squads_unrolled', - 225: 'DB_PERF_SEL_prezl_src_in_tile_rate', - 226: 'DB_PERF_SEL_prezl_src_in_tile_rate_unrolled', - 227: 'DB_PERF_SEL_prezl_src_out_stall', - 228: 'DB_PERF_SEL_postzl_src_in_sends', - 229: 'DB_PERF_SEL_postzl_src_in_stall', - 230: 'DB_PERF_SEL_postzl_src_in_squads', - 231: 'DB_PERF_SEL_postzl_src_in_squads_unrolled', - 232: 'DB_PERF_SEL_postzl_src_in_tile_rate', - 233: 'DB_PERF_SEL_postzl_src_in_tile_rate_unrolled', - 234: 'DB_PERF_SEL_postzl_src_out_stall', - 235: 'DB_PERF_SEL_esr_ps_src_in_sends', - 236: 'DB_PERF_SEL_esr_ps_src_in_stall', - 237: 'DB_PERF_SEL_esr_ps_src_in_squads', - 238: 'DB_PERF_SEL_esr_ps_src_in_squads_unrolled', - 239: 'DB_PERF_SEL_esr_ps_src_in_tile_rate', - 240: 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled', - 241: 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled_to_pixel_rate', - 242: 'DB_PERF_SEL_esr_ps_src_out_stall', - 243: 'DB_PERF_SEL_depth_bounds_tile_culled', - 244: 'DB_PERF_SEL_PreZ_Samples_failing_DB', - 245: 'DB_PERF_SEL_PostZ_Samples_failing_DB', - 246: 'DB_PERF_SEL_flush_compressed', - 247: 'DB_PERF_SEL_flush_plane_le4', - 248: 'DB_PERF_SEL_tiles_z_fully_summarized', - 249: 'DB_PERF_SEL_tiles_stencil_fully_summarized', - 250: 'DB_PERF_SEL_tiles_z_clear_on_expclear', - 251: 'DB_PERF_SEL_tiles_s_clear_on_expclear', - 252: 'DB_PERF_SEL_tiles_decomp_on_expclear', - 253: 'DB_PERF_SEL_tiles_compressed_to_decompressed', - 254: 'DB_PERF_SEL_Op_Pipe_Prez_Busy', - 255: 'DB_PERF_SEL_Op_Pipe_Postz_Busy', - 256: 'DB_PERF_SEL_di_dt_stall', - 257: 'Spare_257', - 258: 'DB_PERF_SEL_DB_SC_s_tile_rate', - 259: 'DB_PERF_SEL_DB_SC_c_tile_rate', - 260: 'DB_PERF_SEL_DB_SC_z_tile_rate', - 261: 'DB_PERF_SEL_DB_CB_lquad_export_quads', - 262: 'DB_PERF_SEL_DB_CB_lquad_double_format', - 263: 'DB_PERF_SEL_DB_CB_lquad_fast_format', - 264: 'DB_PERF_SEL_DB_CB_lquad_slow_format', - 265: 'DB_PERF_SEL_CB_DB_rdreq_sends', - 266: 'DB_PERF_SEL_CB_DB_rdreq_prt_sends', - 267: 'DB_PERF_SEL_CB_DB_wrreq_sends', - 268: 'DB_PERF_SEL_CB_DB_wrreq_prt_sends', - 269: 'DB_PERF_SEL_DB_CB_rdret_ack', - 270: 'DB_PERF_SEL_DB_CB_rdret_nack', - 271: 'DB_PERF_SEL_DB_CB_wrret_ack', - 272: 'DB_PERF_SEL_DB_CB_wrret_nack', - 273: 'DB_PERF_SEL_MI_tile_req_wrack_counter_stall', - 274: 'DB_PERF_SEL_MI_quad_req_wrack_counter_stall', - 275: 'DB_PERF_SEL_MI_zpc_req_wrack_counter_stall', - 276: 'DB_PERF_SEL_MI_psd_req_wrack_counter_stall', - 277: 'DB_PERF_SEL_unmapped_z_tile_culled', - 278: 'DB_PERF_SEL_DB_CB_tile_is_event_FLUSH_AND_INV_DB_DATA_TS', - 279: 'DB_PERF_SEL_DB_CB_tile_is_event_FLUSH_AND_INV_CB_PIXEL_DATA', - 280: 'DB_PERF_SEL_DB_CB_tile_is_event_BOTTOM_OF_PIPE_TS', - 281: 'DB_PERF_SEL_DB_CB_tile_waiting_for_perfcounter_stop_event', - 282: 'DB_PERF_SEL_DB_CB_lquad_fmt_32bpp_8pix', - 283: 'DB_PERF_SEL_DB_CB_lquad_fmt_16_16_unsigned_8pix', - 284: 'DB_PERF_SEL_DB_CB_lquad_fmt_16_16_signed_8pix', - 285: 'DB_PERF_SEL_DB_CB_lquad_fmt_16_16_float_8pix', - 286: 'DB_PERF_SEL_DB_CB_lquad_num_pixels_need_blending', - 287: 'DB_PERF_SEL_DB_CB_context_dones', - 288: 'DB_PERF_SEL_DB_CB_eop_dones', - 289: 'DB_PERF_SEL_SX_DB_quad_all_pixels_killed', - 290: 'DB_PERF_SEL_SX_DB_quad_all_pixels_enabled', - 291: 'DB_PERF_SEL_SX_DB_quad_need_blending_and_dst_read', - 292: 'DB_PERF_SEL_SC_DB_tile_backface', - 293: 'DB_PERF_SEL_SC_DB_quad_quads', - 294: 'DB_PERF_SEL_DB_SC_quad_quads_with_1_pixel', - 295: 'DB_PERF_SEL_DB_SC_quad_quads_with_2_pixels', - 296: 'DB_PERF_SEL_DB_SC_quad_quads_with_3_pixels', - 297: 'DB_PERF_SEL_DB_SC_quad_quads_with_4_pixels', - 298: 'DB_PERF_SEL_DB_SC_quad_double_quad', - 299: 'DB_PERF_SEL_SX_DB_quad_export_quads', - 300: 'DB_PERF_SEL_SX_DB_quad_double_format', - 301: 'DB_PERF_SEL_SX_DB_quad_fast_format', - 302: 'DB_PERF_SEL_SX_DB_quad_slow_format', - 303: 'DB_PERF_SEL_quad_rd_sends_unc', - 304: 'DB_PERF_SEL_quad_rd_mi_stall_unc', - 305: 'DB_PERF_SEL_SC_DB_tile_tiles_pipe0', - 306: 'DB_PERF_SEL_SC_DB_tile_tiles_pipe1', - 307: 'DB_PERF_SEL_SC_DB_quad_quads_pipe0', - 308: 'DB_PERF_SEL_SC_DB_quad_quads_pipe1', - 309: 'DB_PERF_SEL_PERF_fg_lob_fwdr_timeout_hits', - 310: 'DB_PERF_SEL_noz_waiting_for_postz_done', - 311: 'DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_1x1', - 312: 'DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_2x1', - 313: 'DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_1x2', - 314: 'DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_2x2', - 315: 'DB_PERF_SEL_RMI_rd_tile_32byte_req', - 316: 'DB_PERF_SEL_RMI_rd_z_32byte_req', - 317: 'DB_PERF_SEL_RMI_rd_s_32byte_req', - 318: 'DB_PERF_SEL_RMI_wr_tile_32byte_req', - 319: 'DB_PERF_SEL_RMI_wr_z_32byte_req', - 320: 'DB_PERF_SEL_RMI_wr_s_32byte_req', - 321: 'DB_PERF_SEL_RMI_wr_psdzpc_32byte_req', - 322: 'DB_PERF_SEL_RMI_rd_tile_32byte_ret', - 323: 'DB_PERF_SEL_RMI_rd_z_32byte_ret', - 324: 'DB_PERF_SEL_RMI_rd_s_32byte_ret', - 325: 'DB_PERF_SEL_RMI_wr_tile_32byte_ack', - 326: 'DB_PERF_SEL_RMI_wr_z_32byte_ack', - 327: 'DB_PERF_SEL_RMI_wr_s_32byte_ack', - 328: 'DB_PERF_SEL_RMI_wr_psdzpc_32byte_ack', - 329: 'DB_PERF_SEL_esr_vic_sqq_busy', - 330: 'DB_PERF_SEL_esr_vic_sqq_stall', - 331: 'DB_PERF_SEL_esr_psi_vic_tile_rate', - 332: 'DB_PERF_SEL_esr_vic_footprint_match_2x2', - 333: 'DB_PERF_SEL_esr_vic_footprint_match_2x1', - 334: 'DB_PERF_SEL_esr_vic_footprint_match_1x2', - 335: 'DB_PERF_SEL_DB_SC_quad_num_null_2x2_coarse_pixels', - 336: 'DB_PERF_SEL_DB_SC_quad_num_null_2x1_coarse_pixels', - 337: 'DB_PERF_SEL_DB_SC_quad_num_null_1x2_coarse_pixels', - 338: 'DB_PERF_SEL_hi_z_s_checker_force_coarse_vrs_1x1', - 339: 'DB_PERF_SEL_hi_z_s_checker_force_ssaa_vrs_1x1', - 340: 'DB_PERF_SEL_esr_ps_woc_1squadIn_2squadOut', - 341: 'DB_PERF_SEL_esr_ps_woc_2squadIn_1squadOut', - 342: 'DB_PERF_SEL_prez_ps_invoked_pixel_cnt', - 343: 'DB_PERF_SEL_postz_ps_invoked_pixel_cnt', - 344: 'DB_PERF_SEL_ts_events_pws_enable', - 345: 'DB_PERF_SEL_ps_events_pws_enable', - 346: 'DB_PERF_SEL_cs_events_pws_enable', - 347: 'DB_PERF_SEL_DB_SC_quad_noz_tiles', - 348: 'DB_PERF_SEL_DB_SC_quad_lit_noz_quad', -} -DB_PERF_SEL_SC_DB_tile_sends = 0 -DB_PERF_SEL_SC_DB_tile_busy = 1 -DB_PERF_SEL_SC_DB_tile_stalls = 2 -DB_PERF_SEL_SC_DB_tile_events = 3 -DB_PERF_SEL_SC_DB_tile_tiles = 4 -DB_PERF_SEL_SC_DB_tile_covered = 5 -DB_PERF_SEL_hiz_tc_read_starved = 6 -DB_PERF_SEL_hiz_tc_write_stall = 7 -DB_PERF_SEL_hiz_tile_culled = 8 -DB_PERF_SEL_his_tile_culled = 9 -DB_PERF_SEL_DB_SC_tile_sends = 10 -DB_PERF_SEL_DB_SC_tile_busy = 11 -DB_PERF_SEL_DB_SC_tile_stalls = 12 -DB_PERF_SEL_DB_SC_tile_df_stalls = 13 -DB_PERF_SEL_DB_SC_tile_tiles = 14 -DB_PERF_SEL_DB_SC_tile_culled = 15 -DB_PERF_SEL_DB_SC_tile_hier_kill = 16 -DB_PERF_SEL_DB_SC_tile_fast_ops = 17 -DB_PERF_SEL_DB_SC_tile_no_ops = 18 -DB_PERF_SEL_DB_SC_tile_tile_rate = 19 -DB_PERF_SEL_DB_SC_tile_ssaa_kill = 20 -DB_PERF_SEL_DB_SC_tile_fast_z_ops = 21 -DB_PERF_SEL_DB_SC_tile_fast_stencil_ops = 22 -DB_PERF_SEL_SC_DB_quad_sends = 23 -DB_PERF_SEL_SC_DB_quad_busy = 24 -DB_PERF_SEL_SC_DB_quad_squads = 25 -DB_PERF_SEL_SC_DB_quad_tiles = 26 -DB_PERF_SEL_SC_DB_quad_pixels = 27 -DB_PERF_SEL_SC_DB_quad_killed_tiles = 28 -DB_PERF_SEL_DB_SC_quad_sends = 29 -DB_PERF_SEL_DB_SC_quad_busy = 30 -DB_PERF_SEL_DB_SC_quad_stalls = 31 -DB_PERF_SEL_DB_SC_quad_tiles = 32 -DB_PERF_SEL_DB_SC_quad_lit_quad = 33 -DB_PERF_SEL_DB_CB_tile_sends = 34 -DB_PERF_SEL_DB_CB_tile_busy = 35 -DB_PERF_SEL_DB_CB_tile_stalls = 36 -DB_PERF_SEL_SX_DB_quad_sends = 37 -DB_PERF_SEL_SX_DB_quad_busy = 38 -DB_PERF_SEL_SX_DB_quad_stalls = 39 -DB_PERF_SEL_SX_DB_quad_quads = 40 -DB_PERF_SEL_SX_DB_quad_pixels = 41 -DB_PERF_SEL_SX_DB_quad_exports = 42 -DB_PERF_SEL_SH_quads_outstanding_sum = 43 -DB_PERF_SEL_DB_CB_lquad_sends = 44 -DB_PERF_SEL_DB_CB_lquad_busy = 45 -DB_PERF_SEL_DB_CB_lquad_stalls = 46 -DB_PERF_SEL_DB_CB_lquad_quads = 47 -DB_PERF_SEL_tile_rd_sends = 48 -DB_PERF_SEL_mi_tile_rd_outstanding_sum = 49 -DB_PERF_SEL_quad_rd_sends = 50 -DB_PERF_SEL_quad_rd_busy = 51 -DB_PERF_SEL_quad_rd_mi_stall = 52 -DB_PERF_SEL_quad_rd_rw_collision = 53 -DB_PERF_SEL_quad_rd_tag_stall = 54 -DB_PERF_SEL_quad_rd_32byte_reqs = 55 -DB_PERF_SEL_quad_rd_panic = 56 -DB_PERF_SEL_mi_quad_rd_outstanding_sum = 57 -DB_PERF_SEL_quad_rdret_sends = 58 -DB_PERF_SEL_quad_rdret_busy = 59 -DB_PERF_SEL_tile_wr_sends = 60 -DB_PERF_SEL_tile_wr_acks = 61 -DB_PERF_SEL_mi_tile_wr_outstanding_sum = 62 -DB_PERF_SEL_quad_wr_sends = 63 -DB_PERF_SEL_quad_wr_busy = 64 -DB_PERF_SEL_quad_wr_mi_stall = 65 -DB_PERF_SEL_quad_wr_coherency_stall = 66 -DB_PERF_SEL_quad_wr_acks = 67 -DB_PERF_SEL_mi_quad_wr_outstanding_sum = 68 -DB_PERF_SEL_Tile_Cache_misses = 69 -DB_PERF_SEL_Tile_Cache_hits = 70 -DB_PERF_SEL_Tile_Cache_flushes = 71 -DB_PERF_SEL_Tile_Cache_surface_stall = 72 -DB_PERF_SEL_Tile_Cache_starves = 73 -DB_PERF_SEL_Tile_Cache_mem_return_starve = 74 -DB_PERF_SEL_tcp_dispatcher_reads = 75 -DB_PERF_SEL_tcp_prefetcher_reads = 76 -DB_PERF_SEL_tcp_preloader_reads = 77 -DB_PERF_SEL_tcp_dispatcher_flushes = 78 -DB_PERF_SEL_tcp_prefetcher_flushes = 79 -DB_PERF_SEL_tcp_preloader_flushes = 80 -DB_PERF_SEL_Depth_Tile_Cache_sends = 81 -DB_PERF_SEL_Depth_Tile_Cache_busy = 82 -DB_PERF_SEL_Depth_Tile_Cache_starves = 83 -DB_PERF_SEL_Depth_Tile_Cache_dtile_locked = 84 -DB_PERF_SEL_Depth_Tile_Cache_alloc_stall = 85 -DB_PERF_SEL_Depth_Tile_Cache_misses = 86 -DB_PERF_SEL_Depth_Tile_Cache_hits = 87 -DB_PERF_SEL_Depth_Tile_Cache_flushes = 88 -DB_PERF_SEL_Depth_Tile_Cache_noop_tile = 89 -DB_PERF_SEL_Depth_Tile_Cache_detailed_noop = 90 -DB_PERF_SEL_Depth_Tile_Cache_event = 91 -DB_PERF_SEL_Depth_Tile_Cache_tile_frees = 92 -DB_PERF_SEL_Depth_Tile_Cache_data_frees = 93 -DB_PERF_SEL_Depth_Tile_Cache_mem_return_starve = 94 -DB_PERF_SEL_Stencil_Cache_misses = 95 -DB_PERF_SEL_Stencil_Cache_hits = 96 -DB_PERF_SEL_Stencil_Cache_flushes = 97 -DB_PERF_SEL_Stencil_Cache_starves = 98 -DB_PERF_SEL_Stencil_Cache_frees = 99 -DB_PERF_SEL_Z_Cache_separate_Z_misses = 100 -DB_PERF_SEL_Z_Cache_separate_Z_hits = 101 -DB_PERF_SEL_Z_Cache_separate_Z_flushes = 102 -DB_PERF_SEL_Z_Cache_separate_Z_starves = 103 -DB_PERF_SEL_Z_Cache_pmask_misses = 104 -DB_PERF_SEL_Z_Cache_pmask_hits = 105 -DB_PERF_SEL_Z_Cache_pmask_flushes = 106 -DB_PERF_SEL_Z_Cache_pmask_starves = 107 -DB_PERF_SEL_Z_Cache_frees = 108 -DB_PERF_SEL_Plane_Cache_misses = 109 -DB_PERF_SEL_Plane_Cache_hits = 110 -DB_PERF_SEL_Plane_Cache_flushes = 111 -DB_PERF_SEL_Plane_Cache_starves = 112 -DB_PERF_SEL_Plane_Cache_frees = 113 -DB_PERF_SEL_flush_expanded_stencil = 114 -DB_PERF_SEL_flush_compressed_stencil = 115 -DB_PERF_SEL_flush_single_stencil = 116 -DB_PERF_SEL_planes_flushed = 117 -DB_PERF_SEL_flush_1plane = 118 -DB_PERF_SEL_flush_2plane = 119 -DB_PERF_SEL_flush_3plane = 120 -DB_PERF_SEL_flush_4plane = 121 -DB_PERF_SEL_flush_5plane = 122 -DB_PERF_SEL_flush_6plane = 123 -DB_PERF_SEL_flush_7plane = 124 -DB_PERF_SEL_flush_8plane = 125 -DB_PERF_SEL_flush_9plane = 126 -DB_PERF_SEL_flush_10plane = 127 -DB_PERF_SEL_flush_11plane = 128 -DB_PERF_SEL_flush_12plane = 129 -DB_PERF_SEL_flush_13plane = 130 -DB_PERF_SEL_flush_14plane = 131 -DB_PERF_SEL_flush_15plane = 132 -DB_PERF_SEL_flush_16plane = 133 -DB_PERF_SEL_flush_expanded_z = 134 -DB_PERF_SEL_earlyZ_waiting_for_postZ_done = 135 -DB_PERF_SEL_reZ_waiting_for_postZ_done = 136 -DB_PERF_SEL_dk_tile_sends = 137 -DB_PERF_SEL_dk_tile_busy = 138 -DB_PERF_SEL_dk_tile_quad_starves = 139 -DB_PERF_SEL_dk_tile_stalls = 140 -DB_PERF_SEL_dk_squad_sends = 141 -DB_PERF_SEL_dk_squad_busy = 142 -DB_PERF_SEL_dk_squad_stalls = 143 -DB_PERF_SEL_Op_Pipe_Busy = 144 -DB_PERF_SEL_Op_Pipe_MC_Read_stall = 145 -DB_PERF_SEL_qc_busy = 146 -DB_PERF_SEL_qc_xfc = 147 -DB_PERF_SEL_qc_conflicts = 148 -DB_PERF_SEL_qc_full_stall = 149 -DB_PERF_SEL_qc_in_preZ_tile_stalls_postZ = 150 -DB_PERF_SEL_qc_in_postZ_tile_stalls_preZ = 151 -DB_PERF_SEL_tsc_insert_summarize_stall = 152 -DB_PERF_SEL_tl_busy = 153 -DB_PERF_SEL_tl_dtc_read_starved = 154 -DB_PERF_SEL_tl_z_fetch_stall = 155 -DB_PERF_SEL_tl_stencil_stall = 156 -DB_PERF_SEL_tl_z_decompress_stall = 157 -DB_PERF_SEL_tl_stencil_locked_stall = 158 -DB_PERF_SEL_tl_events = 159 -DB_PERF_SEL_tl_summarize_squads = 160 -DB_PERF_SEL_tl_flush_expand_squads = 161 -DB_PERF_SEL_tl_expand_squads = 162 -DB_PERF_SEL_tl_preZ_squads = 163 -DB_PERF_SEL_tl_postZ_squads = 164 -DB_PERF_SEL_tl_preZ_noop_squads = 165 -DB_PERF_SEL_tl_postZ_noop_squads = 166 -DB_PERF_SEL_tl_tile_ops = 167 -DB_PERF_SEL_tl_in_xfc = 168 -DB_PERF_SEL_tl_in_single_stencil_expand_stall = 169 -DB_PERF_SEL_tl_in_fast_z_stall = 170 -DB_PERF_SEL_tl_out_xfc = 171 -DB_PERF_SEL_tl_out_squads = 172 -DB_PERF_SEL_zf_plane_multicycle = 173 -DB_PERF_SEL_PostZ_Samples_passing_Z = 174 -DB_PERF_SEL_PostZ_Samples_failing_Z = 175 -DB_PERF_SEL_PostZ_Samples_failing_S = 176 -DB_PERF_SEL_PreZ_Samples_passing_Z = 177 -DB_PERF_SEL_PreZ_Samples_failing_Z = 178 -DB_PERF_SEL_PreZ_Samples_failing_S = 179 -DB_PERF_SEL_ts_tc_update_stall = 180 -DB_PERF_SEL_sc_kick_start = 181 -DB_PERF_SEL_sc_kick_end = 182 -DB_PERF_SEL_clock_reg_active = 183 -DB_PERF_SEL_clock_main_active = 184 -DB_PERF_SEL_clock_mem_export_active = 185 -DB_PERF_SEL_esr_ps_out_busy = 186 -DB_PERF_SEL_esr_ps_lqf_busy = 187 -DB_PERF_SEL_esr_ps_lqf_stall = 188 -DB_PERF_SEL_etr_out_send = 189 -DB_PERF_SEL_etr_out_busy = 190 -DB_PERF_SEL_etr_out_ltile_probe_fifo_full_stall = 191 -DB_PERF_SEL_etr_out_cb_tile_stall = 192 -DB_PERF_SEL_etr_out_esr_stall = 193 -DB_PERF_SEL_esr_ps_vic_busy = 194 -DB_PERF_SEL_esr_ps_vic_stall = 195 -DB_PERF_SEL_esr_eot_fwd_busy = 196 -DB_PERF_SEL_esr_eot_fwd_holding_squad = 197 -DB_PERF_SEL_esr_eot_fwd_forward = 198 -DB_PERF_SEL_esr_sqq_zi_busy = 199 -DB_PERF_SEL_esr_sqq_zi_stall = 200 -DB_PERF_SEL_postzl_sq_pt_busy = 201 -DB_PERF_SEL_postzl_sq_pt_stall = 202 -DB_PERF_SEL_postzl_se_busy = 203 -DB_PERF_SEL_postzl_se_stall = 204 -DB_PERF_SEL_postzl_partial_launch = 205 -DB_PERF_SEL_postzl_full_launch = 206 -DB_PERF_SEL_postzl_partial_waiting = 207 -DB_PERF_SEL_postzl_tile_mem_stall = 208 -DB_PERF_SEL_postzl_tile_init_stall = 209 -DB_PERF_SEL_prezl_tile_mem_stall = 210 -DB_PERF_SEL_prezl_tile_init_stall = 211 -DB_PERF_SEL_dtt_sm_clash_stall = 212 -DB_PERF_SEL_dtt_sm_slot_stall = 213 -DB_PERF_SEL_dtt_sm_miss_stall = 214 -DB_PERF_SEL_mi_rdreq_busy = 215 -DB_PERF_SEL_mi_rdreq_stall = 216 -DB_PERF_SEL_mi_wrreq_busy = 217 -DB_PERF_SEL_mi_wrreq_stall = 218 -DB_PERF_SEL_recomp_tile_to_1zplane_no_fastop = 219 -DB_PERF_SEL_dkg_tile_rate_tile = 220 -DB_PERF_SEL_prezl_src_in_sends = 221 -DB_PERF_SEL_prezl_src_in_stall = 222 -DB_PERF_SEL_prezl_src_in_squads = 223 -DB_PERF_SEL_prezl_src_in_squads_unrolled = 224 -DB_PERF_SEL_prezl_src_in_tile_rate = 225 -DB_PERF_SEL_prezl_src_in_tile_rate_unrolled = 226 -DB_PERF_SEL_prezl_src_out_stall = 227 -DB_PERF_SEL_postzl_src_in_sends = 228 -DB_PERF_SEL_postzl_src_in_stall = 229 -DB_PERF_SEL_postzl_src_in_squads = 230 -DB_PERF_SEL_postzl_src_in_squads_unrolled = 231 -DB_PERF_SEL_postzl_src_in_tile_rate = 232 -DB_PERF_SEL_postzl_src_in_tile_rate_unrolled = 233 -DB_PERF_SEL_postzl_src_out_stall = 234 -DB_PERF_SEL_esr_ps_src_in_sends = 235 -DB_PERF_SEL_esr_ps_src_in_stall = 236 -DB_PERF_SEL_esr_ps_src_in_squads = 237 -DB_PERF_SEL_esr_ps_src_in_squads_unrolled = 238 -DB_PERF_SEL_esr_ps_src_in_tile_rate = 239 -DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled = 240 -DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled_to_pixel_rate = 241 -DB_PERF_SEL_esr_ps_src_out_stall = 242 -DB_PERF_SEL_depth_bounds_tile_culled = 243 -DB_PERF_SEL_PreZ_Samples_failing_DB = 244 -DB_PERF_SEL_PostZ_Samples_failing_DB = 245 -DB_PERF_SEL_flush_compressed = 246 -DB_PERF_SEL_flush_plane_le4 = 247 -DB_PERF_SEL_tiles_z_fully_summarized = 248 -DB_PERF_SEL_tiles_stencil_fully_summarized = 249 -DB_PERF_SEL_tiles_z_clear_on_expclear = 250 -DB_PERF_SEL_tiles_s_clear_on_expclear = 251 -DB_PERF_SEL_tiles_decomp_on_expclear = 252 -DB_PERF_SEL_tiles_compressed_to_decompressed = 253 -DB_PERF_SEL_Op_Pipe_Prez_Busy = 254 -DB_PERF_SEL_Op_Pipe_Postz_Busy = 255 -DB_PERF_SEL_di_dt_stall = 256 -Spare_257 = 257 -DB_PERF_SEL_DB_SC_s_tile_rate = 258 -DB_PERF_SEL_DB_SC_c_tile_rate = 259 -DB_PERF_SEL_DB_SC_z_tile_rate = 260 -DB_PERF_SEL_DB_CB_lquad_export_quads = 261 -DB_PERF_SEL_DB_CB_lquad_double_format = 262 -DB_PERF_SEL_DB_CB_lquad_fast_format = 263 -DB_PERF_SEL_DB_CB_lquad_slow_format = 264 -DB_PERF_SEL_CB_DB_rdreq_sends = 265 -DB_PERF_SEL_CB_DB_rdreq_prt_sends = 266 -DB_PERF_SEL_CB_DB_wrreq_sends = 267 -DB_PERF_SEL_CB_DB_wrreq_prt_sends = 268 -DB_PERF_SEL_DB_CB_rdret_ack = 269 -DB_PERF_SEL_DB_CB_rdret_nack = 270 -DB_PERF_SEL_DB_CB_wrret_ack = 271 -DB_PERF_SEL_DB_CB_wrret_nack = 272 -DB_PERF_SEL_MI_tile_req_wrack_counter_stall = 273 -DB_PERF_SEL_MI_quad_req_wrack_counter_stall = 274 -DB_PERF_SEL_MI_zpc_req_wrack_counter_stall = 275 -DB_PERF_SEL_MI_psd_req_wrack_counter_stall = 276 -DB_PERF_SEL_unmapped_z_tile_culled = 277 -DB_PERF_SEL_DB_CB_tile_is_event_FLUSH_AND_INV_DB_DATA_TS = 278 -DB_PERF_SEL_DB_CB_tile_is_event_FLUSH_AND_INV_CB_PIXEL_DATA = 279 -DB_PERF_SEL_DB_CB_tile_is_event_BOTTOM_OF_PIPE_TS = 280 -DB_PERF_SEL_DB_CB_tile_waiting_for_perfcounter_stop_event = 281 -DB_PERF_SEL_DB_CB_lquad_fmt_32bpp_8pix = 282 -DB_PERF_SEL_DB_CB_lquad_fmt_16_16_unsigned_8pix = 283 -DB_PERF_SEL_DB_CB_lquad_fmt_16_16_signed_8pix = 284 -DB_PERF_SEL_DB_CB_lquad_fmt_16_16_float_8pix = 285 -DB_PERF_SEL_DB_CB_lquad_num_pixels_need_blending = 286 -DB_PERF_SEL_DB_CB_context_dones = 287 -DB_PERF_SEL_DB_CB_eop_dones = 288 -DB_PERF_SEL_SX_DB_quad_all_pixels_killed = 289 -DB_PERF_SEL_SX_DB_quad_all_pixels_enabled = 290 -DB_PERF_SEL_SX_DB_quad_need_blending_and_dst_read = 291 -DB_PERF_SEL_SC_DB_tile_backface = 292 -DB_PERF_SEL_SC_DB_quad_quads = 293 -DB_PERF_SEL_DB_SC_quad_quads_with_1_pixel = 294 -DB_PERF_SEL_DB_SC_quad_quads_with_2_pixels = 295 -DB_PERF_SEL_DB_SC_quad_quads_with_3_pixels = 296 -DB_PERF_SEL_DB_SC_quad_quads_with_4_pixels = 297 -DB_PERF_SEL_DB_SC_quad_double_quad = 298 -DB_PERF_SEL_SX_DB_quad_export_quads = 299 -DB_PERF_SEL_SX_DB_quad_double_format = 300 -DB_PERF_SEL_SX_DB_quad_fast_format = 301 -DB_PERF_SEL_SX_DB_quad_slow_format = 302 -DB_PERF_SEL_quad_rd_sends_unc = 303 -DB_PERF_SEL_quad_rd_mi_stall_unc = 304 -DB_PERF_SEL_SC_DB_tile_tiles_pipe0 = 305 -DB_PERF_SEL_SC_DB_tile_tiles_pipe1 = 306 -DB_PERF_SEL_SC_DB_quad_quads_pipe0 = 307 -DB_PERF_SEL_SC_DB_quad_quads_pipe1 = 308 -DB_PERF_SEL_PERF_fg_lob_fwdr_timeout_hits = 309 -DB_PERF_SEL_noz_waiting_for_postz_done = 310 -DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_1x1 = 311 -DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_2x1 = 312 -DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_1x2 = 313 -DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_2x2 = 314 -DB_PERF_SEL_RMI_rd_tile_32byte_req = 315 -DB_PERF_SEL_RMI_rd_z_32byte_req = 316 -DB_PERF_SEL_RMI_rd_s_32byte_req = 317 -DB_PERF_SEL_RMI_wr_tile_32byte_req = 318 -DB_PERF_SEL_RMI_wr_z_32byte_req = 319 -DB_PERF_SEL_RMI_wr_s_32byte_req = 320 -DB_PERF_SEL_RMI_wr_psdzpc_32byte_req = 321 -DB_PERF_SEL_RMI_rd_tile_32byte_ret = 322 -DB_PERF_SEL_RMI_rd_z_32byte_ret = 323 -DB_PERF_SEL_RMI_rd_s_32byte_ret = 324 -DB_PERF_SEL_RMI_wr_tile_32byte_ack = 325 -DB_PERF_SEL_RMI_wr_z_32byte_ack = 326 -DB_PERF_SEL_RMI_wr_s_32byte_ack = 327 -DB_PERF_SEL_RMI_wr_psdzpc_32byte_ack = 328 -DB_PERF_SEL_esr_vic_sqq_busy = 329 -DB_PERF_SEL_esr_vic_sqq_stall = 330 -DB_PERF_SEL_esr_psi_vic_tile_rate = 331 -DB_PERF_SEL_esr_vic_footprint_match_2x2 = 332 -DB_PERF_SEL_esr_vic_footprint_match_2x1 = 333 -DB_PERF_SEL_esr_vic_footprint_match_1x2 = 334 -DB_PERF_SEL_DB_SC_quad_num_null_2x2_coarse_pixels = 335 -DB_PERF_SEL_DB_SC_quad_num_null_2x1_coarse_pixels = 336 -DB_PERF_SEL_DB_SC_quad_num_null_1x2_coarse_pixels = 337 -DB_PERF_SEL_hi_z_s_checker_force_coarse_vrs_1x1 = 338 -DB_PERF_SEL_hi_z_s_checker_force_ssaa_vrs_1x1 = 339 -DB_PERF_SEL_esr_ps_woc_1squadIn_2squadOut = 340 -DB_PERF_SEL_esr_ps_woc_2squadIn_1squadOut = 341 -DB_PERF_SEL_prez_ps_invoked_pixel_cnt = 342 -DB_PERF_SEL_postz_ps_invoked_pixel_cnt = 343 -DB_PERF_SEL_ts_events_pws_enable = 344 -DB_PERF_SEL_ps_events_pws_enable = 345 -DB_PERF_SEL_cs_events_pws_enable = 346 -DB_PERF_SEL_DB_SC_quad_noz_tiles = 347 -DB_PERF_SEL_DB_SC_quad_lit_noz_quad = 348 -PerfCounter_Vals = ctypes.c_uint32 # enum - -# values for enumeration 'PixelPipeCounterId' -PixelPipeCounterId__enumvalues = { - 0: 'PIXEL_PIPE_OCCLUSION_COUNT_0', - 1: 'PIXEL_PIPE_OCCLUSION_COUNT_1', - 2: 'PIXEL_PIPE_OCCLUSION_COUNT_2', - 3: 'PIXEL_PIPE_OCCLUSION_COUNT_3', - 4: 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_0', - 5: 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_0', - 6: 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_1', - 7: 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_1', -} -PIXEL_PIPE_OCCLUSION_COUNT_0 = 0 -PIXEL_PIPE_OCCLUSION_COUNT_1 = 1 -PIXEL_PIPE_OCCLUSION_COUNT_2 = 2 -PIXEL_PIPE_OCCLUSION_COUNT_3 = 3 -PIXEL_PIPE_SCREEN_MIN_EXTENTS_0 = 4 -PIXEL_PIPE_SCREEN_MAX_EXTENTS_0 = 5 -PIXEL_PIPE_SCREEN_MIN_EXTENTS_1 = 6 -PIXEL_PIPE_SCREEN_MAX_EXTENTS_1 = 7 -PixelPipeCounterId = ctypes.c_uint32 # enum - -# values for enumeration 'PixelPipeStride' -PixelPipeStride__enumvalues = { - 0: 'PIXEL_PIPE_STRIDE_32_BITS', - 1: 'PIXEL_PIPE_STRIDE_64_BITS', - 2: 'PIXEL_PIPE_STRIDE_128_BITS', - 3: 'PIXEL_PIPE_STRIDE_256_BITS', -} -PIXEL_PIPE_STRIDE_32_BITS = 0 -PIXEL_PIPE_STRIDE_64_BITS = 1 -PIXEL_PIPE_STRIDE_128_BITS = 2 -PIXEL_PIPE_STRIDE_256_BITS = 3 -PixelPipeStride = ctypes.c_uint32 # enum - -# values for enumeration 'RingCounterControl' -RingCounterControl__enumvalues = { - 0: 'COUNTER_RING_SPLIT', - 1: 'COUNTER_RING_0', - 2: 'COUNTER_RING_1', -} -COUNTER_RING_SPLIT = 0 -COUNTER_RING_0 = 1 -COUNTER_RING_1 = 2 -RingCounterControl = ctypes.c_uint32 # enum - -# values for enumeration 'StencilOp' -StencilOp__enumvalues = { - 0: 'STENCIL_KEEP', - 1: 'STENCIL_ZERO', - 2: 'STENCIL_ONES', - 3: 'STENCIL_REPLACE_TEST', - 4: 'STENCIL_REPLACE_OP', - 5: 'STENCIL_ADD_CLAMP', - 6: 'STENCIL_SUB_CLAMP', - 7: 'STENCIL_INVERT', - 8: 'STENCIL_ADD_WRAP', - 9: 'STENCIL_SUB_WRAP', - 10: 'STENCIL_AND', - 11: 'STENCIL_OR', - 12: 'STENCIL_XOR', - 13: 'STENCIL_NAND', - 14: 'STENCIL_NOR', - 15: 'STENCIL_XNOR', -} -STENCIL_KEEP = 0 -STENCIL_ZERO = 1 -STENCIL_ONES = 2 -STENCIL_REPLACE_TEST = 3 -STENCIL_REPLACE_OP = 4 -STENCIL_ADD_CLAMP = 5 -STENCIL_SUB_CLAMP = 6 -STENCIL_INVERT = 7 -STENCIL_ADD_WRAP = 8 -STENCIL_SUB_WRAP = 9 -STENCIL_AND = 10 -STENCIL_OR = 11 -STENCIL_XOR = 12 -STENCIL_NAND = 13 -STENCIL_NOR = 14 -STENCIL_XNOR = 15 -StencilOp = ctypes.c_uint32 # enum - -# values for enumeration 'ZLimitSumm' -ZLimitSumm__enumvalues = { - 0: 'FORCE_SUMM_OFF', - 1: 'FORCE_SUMM_MINZ', - 2: 'FORCE_SUMM_MAXZ', - 3: 'FORCE_SUMM_BOTH', -} -FORCE_SUMM_OFF = 0 -FORCE_SUMM_MINZ = 1 -FORCE_SUMM_MAXZ = 2 -FORCE_SUMM_BOTH = 3 -ZLimitSumm = ctypes.c_uint32 # enum - -# values for enumeration 'ZModeForce' -ZModeForce__enumvalues = { - 0: 'NO_FORCE', - 1: 'FORCE_EARLY_Z', - 2: 'FORCE_LATE_Z', - 3: 'FORCE_RE_Z', -} -NO_FORCE = 0 -FORCE_EARLY_Z = 1 -FORCE_LATE_Z = 2 -FORCE_RE_Z = 3 -ZModeForce = ctypes.c_uint32 # enum - -# values for enumeration 'ZOrder' -ZOrder__enumvalues = { - 0: 'LATE_Z', - 1: 'EARLY_Z_THEN_LATE_Z', - 2: 'RE_Z', - 3: 'EARLY_Z_THEN_RE_Z', -} -LATE_Z = 0 -EARLY_Z_THEN_LATE_Z = 1 -RE_Z = 2 -EARLY_Z_THEN_RE_Z = 3 -ZOrder = ctypes.c_uint32 # enum - -# values for enumeration 'ZSamplePosition' -ZSamplePosition__enumvalues = { - 0: 'Z_SAMPLE_CENTER', - 1: 'Z_SAMPLE_CENTROID', -} -Z_SAMPLE_CENTER = 0 -Z_SAMPLE_CENTROID = 1 -ZSamplePosition = ctypes.c_uint32 # enum - -# values for enumeration 'ZpassControl' -ZpassControl__enumvalues = { - 0: 'ZPASS_DISABLE', - 1: 'ZPASS_SAMPLES', - 2: 'ZPASS_PIXELS', -} -ZPASS_DISABLE = 0 -ZPASS_SAMPLES = 1 -ZPASS_PIXELS = 2 -ZpassControl = ctypes.c_uint32 # enum - -# values for enumeration 'SU_PERFCNT_SEL' -SU_PERFCNT_SEL__enumvalues = { - 0: 'PERF_PAPC_PASX_REQ', - 1: 'PERF_PAPC_PASX_DISABLE_PIPE', - 2: 'PERF_PAPC_PASX_FIRST_VECTOR', - 3: 'PERF_PAPC_PASX_SECOND_VECTOR', - 4: 'PERF_PAPC_PASX_FIRST_DEAD', - 5: 'PERF_PAPC_PASX_SECOND_DEAD', - 6: 'PERF_PAPC_PASX_VTX_KILL_DISCARD', - 7: 'PERF_PAPC_PASX_VTX_NAN_DISCARD', - 8: 'PERF_PAPC_PA_INPUT_PRIM', - 9: 'PERF_PAPC_PA_INPUT_NULL_PRIM', - 10: 'PERF_PAPC_PA_INPUT_EVENT_FLAG', - 11: 'PERF_PAPC_PA_INPUT_FIRST_PRIM_SLOT', - 12: 'PERF_PAPC_PA_INPUT_END_OF_PACKET', - 13: 'PERF_PAPC_PA_INPUT_EXTENDED_EVENT', - 14: 'PERF_PAPC_CLPR_CULL_PRIM', - 15: 'PERF_PAPC_CLPR_VVUCP_CULL_PRIM', - 16: 'PERF_PAPC_CLPR_VV_CULL_PRIM', - 17: 'PERF_PAPC_CLPR_UCP_CULL_PRIM', - 18: 'PERF_PAPC_CLPR_VTX_KILL_CULL_PRIM', - 19: 'PERF_PAPC_CLPR_VTX_NAN_CULL_PRIM', - 20: 'PERF_PAPC_CLPR_CULL_TO_NULL_PRIM', - 21: 'PERF_PAPC_CLPR_VVUCP_CLIP_PRIM', - 22: 'PERF_PAPC_CLPR_VV_CLIP_PRIM', - 23: 'PERF_PAPC_CLPR_UCP_CLIP_PRIM', - 24: 'PERF_PAPC_CLPR_POINT_CLIP_CANDIDATE', - 25: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_1', - 26: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_2', - 27: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_3', - 28: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_4', - 29: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_5_8', - 30: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_9_12', - 31: 'PERF_PAPC_CLPR_CLIP_PLANE_NEAR', - 32: 'PERF_PAPC_CLPR_CLIP_PLANE_FAR', - 33: 'PERF_PAPC_CLPR_CLIP_PLANE_LEFT', - 34: 'PERF_PAPC_CLPR_CLIP_PLANE_RIGHT', - 35: 'PERF_PAPC_CLPR_CLIP_PLANE_TOP', - 36: 'PERF_PAPC_CLPR_CLIP_PLANE_BOTTOM', - 37: 'PERF_PAPC_CLPR_GSC_KILL_CULL_PRIM', - 38: 'PERF_PAPC_CLPR_RASTER_KILL_CULL_PRIM', - 39: 'PERF_PAPC_CLSM_NULL_PRIM', - 40: 'PERF_PAPC_CLSM_TOTALLY_VISIBLE_PRIM', - 41: 'PERF_PAPC_CLSM_CULL_TO_NULL_PRIM', - 42: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_1', - 43: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_2', - 44: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_3', - 45: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_4', - 46: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_5_8', - 47: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_9_13', - 48: 'PERF_PAPC_CLIPGA_VTE_KILL_PRIM', - 49: 'PERF_PAPC_SU_INPUT_PRIM', - 50: 'PERF_PAPC_SU_INPUT_CLIP_PRIM', - 51: 'PERF_PAPC_SU_INPUT_NULL_PRIM', - 52: 'PERF_PAPC_SU_INPUT_PRIM_DUAL', - 53: 'PERF_PAPC_SU_INPUT_CLIP_PRIM_DUAL', - 54: 'PERF_PAPC_SU_ZERO_AREA_CULL_PRIM', - 55: 'PERF_PAPC_SU_BACK_FACE_CULL_PRIM', - 56: 'PERF_PAPC_SU_FRONT_FACE_CULL_PRIM', - 57: 'PERF_PAPC_SU_POLYMODE_FACE_CULL', - 58: 'PERF_PAPC_SU_POLYMODE_BACK_CULL', - 59: 'PERF_PAPC_SU_POLYMODE_FRONT_CULL', - 60: 'PERF_PAPC_SU_POLYMODE_INVALID_FILL', - 61: 'PERF_PAPC_SU_OUTPUT_PRIM', - 62: 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM', - 63: 'PERF_PAPC_SU_OUTPUT_NULL_PRIM', - 64: 'PERF_PAPC_SU_OUTPUT_EVENT_FLAG', - 65: 'PERF_PAPC_SU_OUTPUT_FIRST_PRIM_SLOT', - 66: 'PERF_PAPC_SU_OUTPUT_END_OF_PACKET', - 67: 'PERF_PAPC_SU_OUTPUT_POLYMODE_FACE', - 68: 'PERF_PAPC_SU_OUTPUT_POLYMODE_BACK', - 69: 'PERF_PAPC_SU_OUTPUT_POLYMODE_FRONT', - 70: 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FACE', - 71: 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_BACK', - 72: 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FRONT', - 73: 'PERF_PAPC_SU_OUTPUT_PRIM_DUAL', - 74: 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM_DUAL', - 75: 'PERF_PAPC_SU_OUTPUT_POLYMODE_DUAL', - 76: 'PERF_PAPC_SU_OUTPUT_CLIP_POLYMODE_DUAL', - 77: 'PERF_PAPC_PASX_REQ_IDLE', - 78: 'PERF_PAPC_PASX_REQ_BUSY', - 79: 'PERF_PAPC_PASX_REQ_STALLED', - 80: 'PERF_PAPC_PASX_REC_IDLE', - 81: 'PERF_PAPC_PASX_REC_BUSY', - 82: 'PERF_PAPC_PASX_REC_STARVED_SX', - 83: 'PERF_PAPC_PASX_REC_STALLED', - 84: 'PERF_PAPC_PASX_REC_STALLED_POS_MEM', - 85: 'PERF_PAPC_PASX_REC_STALLED_CCGSM_IN', - 86: 'PERF_PAPC_CCGSM_IDLE', - 87: 'PERF_PAPC_CCGSM_BUSY', - 88: 'PERF_PAPC_CCGSM_STALLED', - 89: 'PERF_PAPC_CLPRIM_IDLE', - 90: 'PERF_PAPC_CLPRIM_BUSY', - 91: 'PERF_PAPC_CLPRIM_STALLED', - 92: 'PERF_PAPC_CLPRIM_STARVED_CCGSM', - 93: 'PERF_PAPC_CLIPSM_IDLE', - 94: 'PERF_PAPC_CLIPSM_BUSY', - 95: 'PERF_PAPC_CLIPSM_WAIT_CLIP_VERT_ENGH', - 96: 'PERF_PAPC_CLIPSM_WAIT_HIGH_PRI_SEQ', - 97: 'PERF_PAPC_CLIPSM_WAIT_CLIPGA', - 98: 'PERF_PAPC_CLIPSM_WAIT_AVAIL_VTE_CLIP', - 99: 'PERF_PAPC_CLIPSM_WAIT_CLIP_OUTSM', - 100: 'PERF_PAPC_CLIPGA_IDLE', - 101: 'PERF_PAPC_CLIPGA_BUSY', - 102: 'PERF_PAPC_CLIPGA_STARVED_VTE_CLIP', - 103: 'PERF_PAPC_CLIPGA_STALLED', - 104: 'PERF_PAPC_CLIP_IDLE', - 105: 'PERF_PAPC_CLIP_BUSY', - 106: 'PERF_PAPC_SU_IDLE', - 107: 'PERF_PAPC_SU_BUSY', - 108: 'PERF_PAPC_SU_STARVED_CLIP', - 109: 'PERF_PAPC_SU_STALLED_SC', - 110: 'PERF_PAPC_CL_DYN_SCLK_VLD', - 111: 'PERF_PAPC_SU_DYN_SCLK_VLD', - 112: 'PERF_PAPC_PA_REG_SCLK_VLD', - 113: 'PERF_PAPC_SU_MULTI_GPU_PRIM_FILTER_CULL', - 114: 'PERF_PAPC_PASX_SE0_REQ', - 115: 'PERF_PAPC_PASX_SE1_REQ', - 116: 'PERF_PAPC_PASX_SE0_FIRST_VECTOR', - 117: 'PERF_PAPC_PASX_SE0_SECOND_VECTOR', - 118: 'PERF_PAPC_PASX_SE1_FIRST_VECTOR', - 119: 'PERF_PAPC_PASX_SE1_SECOND_VECTOR', - 120: 'PERF_PAPC_SU_SE0_PRIM_FILTER_CULL', - 121: 'PERF_PAPC_SU_SE1_PRIM_FILTER_CULL', - 122: 'PERF_PAPC_SU_SE01_PRIM_FILTER_CULL', - 123: 'PERF_PAPC_SU_SE0_OUTPUT_PRIM', - 124: 'PERF_PAPC_SU_SE1_OUTPUT_PRIM', - 125: 'PERF_PAPC_SU_SE01_OUTPUT_PRIM', - 126: 'PERF_PAPC_SU_SE0_OUTPUT_NULL_PRIM', - 127: 'PERF_PAPC_SU_SE1_OUTPUT_NULL_PRIM', - 128: 'PERF_PAPC_SU_SE01_OUTPUT_NULL_PRIM', - 129: 'PERF_PAPC_SU_SE0_OUTPUT_FIRST_PRIM_SLOT', - 130: 'PERF_PAPC_SU_SE1_OUTPUT_FIRST_PRIM_SLOT', - 131: 'PERF_PAPC_SU_SE0_STALLED_SC', - 132: 'PERF_PAPC_SU_SE1_STALLED_SC', - 133: 'PERF_PAPC_SU_SE01_STALLED_SC', - 134: 'PERF_PAPC_CLSM_CLIPPING_PRIM', - 135: 'PERF_PAPC_SU_CULLED_PRIM', - 136: 'PERF_PAPC_SU_OUTPUT_EOPG', - 137: 'PERF_PAPC_SU_SE2_PRIM_FILTER_CULL', - 138: 'PERF_PAPC_SU_SE3_PRIM_FILTER_CULL', - 139: 'PERF_PAPC_SU_SE2_OUTPUT_PRIM', - 140: 'PERF_PAPC_SU_SE3_OUTPUT_PRIM', - 141: 'PERF_PAPC_SU_SE2_OUTPUT_NULL_PRIM', - 142: 'PERF_PAPC_SU_SE3_OUTPUT_NULL_PRIM', - 143: 'PERF_PAPC_SU_SE0_OUTPUT_END_OF_PACKET', - 144: 'PERF_PAPC_SU_SE1_OUTPUT_END_OF_PACKET', - 145: 'PERF_PAPC_SU_SE2_OUTPUT_END_OF_PACKET', - 146: 'PERF_PAPC_SU_SE3_OUTPUT_END_OF_PACKET', - 147: 'PERF_PAPC_SU_SE0_OUTPUT_EOPG', - 148: 'PERF_PAPC_SU_SE1_OUTPUT_EOPG', - 149: 'PERF_PAPC_SU_SE2_OUTPUT_EOPG', - 150: 'PERF_PAPC_SU_SE3_OUTPUT_EOPG', - 151: 'PERF_PAPC_SU_SE2_STALLED_SC', - 152: 'PERF_PAPC_SU_SE3_STALLED_SC', - 153: 'PERF_SU_SMALL_PRIM_FILTER_CULL_CNT', - 154: 'PERF_SMALL_PRIM_CULL_PRIM_1X1', - 155: 'PERF_SMALL_PRIM_CULL_PRIM_2X1', - 156: 'PERF_SMALL_PRIM_CULL_PRIM_1X2', - 157: 'PERF_SMALL_PRIM_CULL_PRIM_2X2', - 158: 'PERF_SMALL_PRIM_CULL_PRIM_3X1', - 159: 'PERF_SMALL_PRIM_CULL_PRIM_1X3', - 160: 'PERF_SMALL_PRIM_CULL_PRIM_3X2', - 161: 'PERF_SMALL_PRIM_CULL_PRIM_2X3', - 162: 'PERF_SMALL_PRIM_CULL_PRIM_NX1', - 163: 'PERF_SMALL_PRIM_CULL_PRIM_1XN', - 164: 'PERF_SMALL_PRIM_CULL_PRIM_NX2', - 165: 'PERF_SMALL_PRIM_CULL_PRIM_2XN', - 166: 'PERF_SMALL_PRIM_CULL_PRIM_FULL_RES_EVENT', - 167: 'PERF_SMALL_PRIM_CULL_PRIM_HALF_RES_EVENT', - 168: 'PERF_SMALL_PRIM_CULL_PRIM_QUARTER_RES_EVENT', - 170: 'PERF_SC0_QUALIFIED_SEND_BUSY_EVENT', - 171: 'PERF_SC0_QUALIFIED_SEND_NOT_BUSY_EVENT', - 172: 'PERF_SC1_QUALIFIED_SEND_BUSY_EVENT', - 173: 'PERF_SC1_QUALIFIED_SEND_NOT_BUSY_EVENT', - 174: 'PERF_SC2_QUALIFIED_SEND_BUSY_EVENT', - 175: 'PERF_SC2_QUALIFIED_SEND_NOT_BUSY_EVENT', - 176: 'PERF_SC3_QUALIFIED_SEND_BUSY_EVENT', - 177: 'PERF_SC3_QUALIFIED_SEND_NOT_BUSY_EVENT', - 179: 'PERF_PA_VERTEX_FIFO_FULL', - 180: 'PERF_PA_PRIMIC_TO_CLPRIM_FIFO_FULL', - 182: 'PERF_PA_FETCH_TO_PRIMIC_P_FIFO_FULL', - 183: 'PERF_PA_FETCH_TO_SXIF_FIFO_FULL', - 185: 'PERF_PA_PIPE0_SWITCHED_GEN', - 186: 'PERF_PA_PIPE1_SWITCHED_GEN', - 188: 'PERF_ENGG_CSB_MACHINE_IS_STARVED', - 189: 'PERF_ENGG_CSB_MACHINE_STALLED_BY_CSB_MEMORY', - 190: 'PERF_ENGG_CSB_MACHINE_STALLED_BY_SPI', - 191: 'PERF_ENGG_CSB_GE_INPUT_FIFO_FULL', - 192: 'PERF_ENGG_CSB_SPI_INPUT_FIFO_FULL', - 193: 'PERF_ENGG_CSB_PAYLOAD_INPUT_FIFO_FULL', - 194: 'PERF_ENGG_CSB_GE_INPUT_FIFO_POP_BIT', - 195: 'PERF_ENGG_CSB_PRIM_COUNT_EQ0', - 196: 'PERF_ENGG_CSB_NULL_SUBGROUP', - 197: 'PERF_ENGG_CSB_GE_SENDING_SUBGROUP', - 198: 'PERF_ENGG_CSB_GE_MEMORY_FULL', - 199: 'PERF_ENGG_CSB_GE_MEMORY_EMPTY', - 200: 'PERF_ENGG_CSB_SPI_MEMORY_FULL', - 201: 'PERF_ENGG_CSB_SPI_MEMORY_EMPTY', - 202: 'PERF_ENGG_CSB_DELAY_BIN00', - 203: 'PERF_ENGG_CSB_DELAY_BIN01', - 204: 'PERF_ENGG_CSB_DELAY_BIN02', - 205: 'PERF_ENGG_CSB_DELAY_BIN03', - 206: 'PERF_ENGG_CSB_DELAY_BIN04', - 207: 'PERF_ENGG_CSB_DELAY_BIN05', - 208: 'PERF_ENGG_CSB_DELAY_BIN06', - 209: 'PERF_ENGG_CSB_DELAY_BIN07', - 210: 'PERF_ENGG_CSB_DELAY_BIN08', - 211: 'PERF_ENGG_CSB_DELAY_BIN09', - 212: 'PERF_ENGG_CSB_DELAY_BIN10', - 213: 'PERF_ENGG_CSB_DELAY_BIN11', - 214: 'PERF_ENGG_CSB_DELAY_BIN12', - 215: 'PERF_ENGG_CSB_DELAY_BIN13', - 216: 'PERF_ENGG_CSB_DELAY_BIN14', - 217: 'PERF_ENGG_CSB_DELAY_BIN15', - 218: 'PERF_ENGG_CSB_SPI_DELAY_BIN00', - 219: 'PERF_ENGG_CSB_SPI_DELAY_BIN01', - 220: 'PERF_ENGG_CSB_SPI_DELAY_BIN02', - 221: 'PERF_ENGG_CSB_SPI_DELAY_BIN03', - 222: 'PERF_ENGG_CSB_SPI_DELAY_BIN04', - 223: 'PERF_ENGG_CSB_SPI_DELAY_BIN05', - 224: 'PERF_ENGG_CSB_SPI_DELAY_BIN06', - 225: 'PERF_ENGG_CSB_SPI_DELAY_BIN07', - 226: 'PERF_ENGG_CSB_SPI_DELAY_BIN08', - 227: 'PERF_ENGG_CSB_SPI_DELAY_BIN09', - 228: 'PERF_ENGG_CSB_SPI_DELAY_BIN10', - 229: 'PERF_ENGG_INDEX_REQ_NULL_REQUEST', - 230: 'PERF_ENGG_INDEX_REQ_0_NEW_VERTS_THIS_PRIM', - 231: 'PERF_ENGG_INDEX_REQ_1_NEW_VERTS_THIS_PRIM', - 232: 'PERF_ENGG_INDEX_REQ_2_NEW_VERTS_THIS_PRIM', - 233: 'PERF_ENGG_INDEX_REQ_3_NEW_VERTS_THIS_PRIM', - 234: 'PERF_ENGG_INDEX_REQ_STARVED', - 235: 'PERF_ENGG_INDEX_REQ_IDLE_AND_STALLED_BY_REQ2RTN_FIFO_FULL', - 236: 'PERF_ENGG_INDEX_REQ_BUSY_AND_STALLED_BY_REQ2RTN_FIFO_FULL', - 237: 'PERF_ENGG_INDEX_REQ_STALLED_BY_SX_CREDITS', - 238: 'PERF_ENGG_INDEX_RET_REQ2RTN_FIFO_FULL', - 239: 'PERF_ENGG_INDEX_RET_REQ2RTN_FIFO_EMPTY', - 240: 'PERF_ENGG_INDEX_RET_SX_RECEIVE_FIFO_FULL', - 241: 'PERF_ENGG_INDEX_RET_SXRX_STARVED_BY_CSB', - 242: 'PERF_ENGG_INDEX_RET_SXRX_STARVED_BY_PRIMS', - 243: 'PERF_ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_CSB_FIFO', - 244: 'PERF_ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_FIFO', - 245: 'PERF_ENGG_INDEX_RET_SXRX_READING_EVENT', - 246: 'PERF_ENGG_INDEX_RET_SXRX_READING_NULL_SUBGROUP', - 247: 'PERF_ENGG_INDEX_RET_SXRX_READING_SUBGROUP_PRIMCOUNT_EQ0', - 248: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_NOPL', - 249: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_NOPL', - 250: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS_NOPL', - 251: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS_NOPL', - 252: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS_NOPL', - 253: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_PL', - 254: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_PL', - 255: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS_PL', - 256: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS_PL', - 257: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS_PL', - 258: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_NULL_PRIMS', - 259: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_NULL_PRIMS', - 260: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_NULL_PRIMS', - 261: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_NULL_PRIMS', - 262: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_NULL_PRIMS', - 263: 'PERF_ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_P_FIFO', - 264: 'PERF_ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_S_FIFO', - 265: 'PERF_ENGG_INDEX_PRIM_IF_STARVED_BY_NO_CSB', - 266: 'PERF_ENGG_INDEX_PRIM_IF_STARVED_BY_NO_PRIM', - 267: 'PERF_ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_WRITE', - 268: 'PERF_ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_NO_WRITE', - 269: 'PERF_ENGG_POS_REQ_STARVED', - 270: 'PERF_ENGG_INDEX_RET_SXRX_NULL_DROPPER_STALLED_BY_FULL_PRIM_FIFO', - 271: 'PERF_ENGG_BUSY', - 272: 'PERF_CLIPSM_CULL_PRIMS_CNT', - 273: 'PERF_PH_SEND_1_SC', - 274: 'PERF_PH_SEND_2_SC', - 275: 'PERF_PH_SEND_3_SC', - 276: 'PERF_PH_SEND_4_SC', - 277: 'PERF_OUTPUT_PRIM_1_SC', - 278: 'PERF_OUTPUT_PRIM_2_SC', - 279: 'PERF_OUTPUT_PRIM_3_SC', - 280: 'PERF_OUTPUT_PRIM_4_SC', -} -PERF_PAPC_PASX_REQ = 0 -PERF_PAPC_PASX_DISABLE_PIPE = 1 -PERF_PAPC_PASX_FIRST_VECTOR = 2 -PERF_PAPC_PASX_SECOND_VECTOR = 3 -PERF_PAPC_PASX_FIRST_DEAD = 4 -PERF_PAPC_PASX_SECOND_DEAD = 5 -PERF_PAPC_PASX_VTX_KILL_DISCARD = 6 -PERF_PAPC_PASX_VTX_NAN_DISCARD = 7 -PERF_PAPC_PA_INPUT_PRIM = 8 -PERF_PAPC_PA_INPUT_NULL_PRIM = 9 -PERF_PAPC_PA_INPUT_EVENT_FLAG = 10 -PERF_PAPC_PA_INPUT_FIRST_PRIM_SLOT = 11 -PERF_PAPC_PA_INPUT_END_OF_PACKET = 12 -PERF_PAPC_PA_INPUT_EXTENDED_EVENT = 13 -PERF_PAPC_CLPR_CULL_PRIM = 14 -PERF_PAPC_CLPR_VVUCP_CULL_PRIM = 15 -PERF_PAPC_CLPR_VV_CULL_PRIM = 16 -PERF_PAPC_CLPR_UCP_CULL_PRIM = 17 -PERF_PAPC_CLPR_VTX_KILL_CULL_PRIM = 18 -PERF_PAPC_CLPR_VTX_NAN_CULL_PRIM = 19 -PERF_PAPC_CLPR_CULL_TO_NULL_PRIM = 20 -PERF_PAPC_CLPR_VVUCP_CLIP_PRIM = 21 -PERF_PAPC_CLPR_VV_CLIP_PRIM = 22 -PERF_PAPC_CLPR_UCP_CLIP_PRIM = 23 -PERF_PAPC_CLPR_POINT_CLIP_CANDIDATE = 24 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_1 = 25 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_2 = 26 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_3 = 27 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_4 = 28 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_5_8 = 29 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_9_12 = 30 -PERF_PAPC_CLPR_CLIP_PLANE_NEAR = 31 -PERF_PAPC_CLPR_CLIP_PLANE_FAR = 32 -PERF_PAPC_CLPR_CLIP_PLANE_LEFT = 33 -PERF_PAPC_CLPR_CLIP_PLANE_RIGHT = 34 -PERF_PAPC_CLPR_CLIP_PLANE_TOP = 35 -PERF_PAPC_CLPR_CLIP_PLANE_BOTTOM = 36 -PERF_PAPC_CLPR_GSC_KILL_CULL_PRIM = 37 -PERF_PAPC_CLPR_RASTER_KILL_CULL_PRIM = 38 -PERF_PAPC_CLSM_NULL_PRIM = 39 -PERF_PAPC_CLSM_TOTALLY_VISIBLE_PRIM = 40 -PERF_PAPC_CLSM_CULL_TO_NULL_PRIM = 41 -PERF_PAPC_CLSM_OUT_PRIM_CNT_1 = 42 -PERF_PAPC_CLSM_OUT_PRIM_CNT_2 = 43 -PERF_PAPC_CLSM_OUT_PRIM_CNT_3 = 44 -PERF_PAPC_CLSM_OUT_PRIM_CNT_4 = 45 -PERF_PAPC_CLSM_OUT_PRIM_CNT_5_8 = 46 -PERF_PAPC_CLSM_OUT_PRIM_CNT_9_13 = 47 -PERF_PAPC_CLIPGA_VTE_KILL_PRIM = 48 -PERF_PAPC_SU_INPUT_PRIM = 49 -PERF_PAPC_SU_INPUT_CLIP_PRIM = 50 -PERF_PAPC_SU_INPUT_NULL_PRIM = 51 -PERF_PAPC_SU_INPUT_PRIM_DUAL = 52 -PERF_PAPC_SU_INPUT_CLIP_PRIM_DUAL = 53 -PERF_PAPC_SU_ZERO_AREA_CULL_PRIM = 54 -PERF_PAPC_SU_BACK_FACE_CULL_PRIM = 55 -PERF_PAPC_SU_FRONT_FACE_CULL_PRIM = 56 -PERF_PAPC_SU_POLYMODE_FACE_CULL = 57 -PERF_PAPC_SU_POLYMODE_BACK_CULL = 58 -PERF_PAPC_SU_POLYMODE_FRONT_CULL = 59 -PERF_PAPC_SU_POLYMODE_INVALID_FILL = 60 -PERF_PAPC_SU_OUTPUT_PRIM = 61 -PERF_PAPC_SU_OUTPUT_CLIP_PRIM = 62 -PERF_PAPC_SU_OUTPUT_NULL_PRIM = 63 -PERF_PAPC_SU_OUTPUT_EVENT_FLAG = 64 -PERF_PAPC_SU_OUTPUT_FIRST_PRIM_SLOT = 65 -PERF_PAPC_SU_OUTPUT_END_OF_PACKET = 66 -PERF_PAPC_SU_OUTPUT_POLYMODE_FACE = 67 -PERF_PAPC_SU_OUTPUT_POLYMODE_BACK = 68 -PERF_PAPC_SU_OUTPUT_POLYMODE_FRONT = 69 -PERF_PAPC_SU_OUT_CLIP_POLYMODE_FACE = 70 -PERF_PAPC_SU_OUT_CLIP_POLYMODE_BACK = 71 -PERF_PAPC_SU_OUT_CLIP_POLYMODE_FRONT = 72 -PERF_PAPC_SU_OUTPUT_PRIM_DUAL = 73 -PERF_PAPC_SU_OUTPUT_CLIP_PRIM_DUAL = 74 -PERF_PAPC_SU_OUTPUT_POLYMODE_DUAL = 75 -PERF_PAPC_SU_OUTPUT_CLIP_POLYMODE_DUAL = 76 -PERF_PAPC_PASX_REQ_IDLE = 77 -PERF_PAPC_PASX_REQ_BUSY = 78 -PERF_PAPC_PASX_REQ_STALLED = 79 -PERF_PAPC_PASX_REC_IDLE = 80 -PERF_PAPC_PASX_REC_BUSY = 81 -PERF_PAPC_PASX_REC_STARVED_SX = 82 -PERF_PAPC_PASX_REC_STALLED = 83 -PERF_PAPC_PASX_REC_STALLED_POS_MEM = 84 -PERF_PAPC_PASX_REC_STALLED_CCGSM_IN = 85 -PERF_PAPC_CCGSM_IDLE = 86 -PERF_PAPC_CCGSM_BUSY = 87 -PERF_PAPC_CCGSM_STALLED = 88 -PERF_PAPC_CLPRIM_IDLE = 89 -PERF_PAPC_CLPRIM_BUSY = 90 -PERF_PAPC_CLPRIM_STALLED = 91 -PERF_PAPC_CLPRIM_STARVED_CCGSM = 92 -PERF_PAPC_CLIPSM_IDLE = 93 -PERF_PAPC_CLIPSM_BUSY = 94 -PERF_PAPC_CLIPSM_WAIT_CLIP_VERT_ENGH = 95 -PERF_PAPC_CLIPSM_WAIT_HIGH_PRI_SEQ = 96 -PERF_PAPC_CLIPSM_WAIT_CLIPGA = 97 -PERF_PAPC_CLIPSM_WAIT_AVAIL_VTE_CLIP = 98 -PERF_PAPC_CLIPSM_WAIT_CLIP_OUTSM = 99 -PERF_PAPC_CLIPGA_IDLE = 100 -PERF_PAPC_CLIPGA_BUSY = 101 -PERF_PAPC_CLIPGA_STARVED_VTE_CLIP = 102 -PERF_PAPC_CLIPGA_STALLED = 103 -PERF_PAPC_CLIP_IDLE = 104 -PERF_PAPC_CLIP_BUSY = 105 -PERF_PAPC_SU_IDLE = 106 -PERF_PAPC_SU_BUSY = 107 -PERF_PAPC_SU_STARVED_CLIP = 108 -PERF_PAPC_SU_STALLED_SC = 109 -PERF_PAPC_CL_DYN_SCLK_VLD = 110 -PERF_PAPC_SU_DYN_SCLK_VLD = 111 -PERF_PAPC_PA_REG_SCLK_VLD = 112 -PERF_PAPC_SU_MULTI_GPU_PRIM_FILTER_CULL = 113 -PERF_PAPC_PASX_SE0_REQ = 114 -PERF_PAPC_PASX_SE1_REQ = 115 -PERF_PAPC_PASX_SE0_FIRST_VECTOR = 116 -PERF_PAPC_PASX_SE0_SECOND_VECTOR = 117 -PERF_PAPC_PASX_SE1_FIRST_VECTOR = 118 -PERF_PAPC_PASX_SE1_SECOND_VECTOR = 119 -PERF_PAPC_SU_SE0_PRIM_FILTER_CULL = 120 -PERF_PAPC_SU_SE1_PRIM_FILTER_CULL = 121 -PERF_PAPC_SU_SE01_PRIM_FILTER_CULL = 122 -PERF_PAPC_SU_SE0_OUTPUT_PRIM = 123 -PERF_PAPC_SU_SE1_OUTPUT_PRIM = 124 -PERF_PAPC_SU_SE01_OUTPUT_PRIM = 125 -PERF_PAPC_SU_SE0_OUTPUT_NULL_PRIM = 126 -PERF_PAPC_SU_SE1_OUTPUT_NULL_PRIM = 127 -PERF_PAPC_SU_SE01_OUTPUT_NULL_PRIM = 128 -PERF_PAPC_SU_SE0_OUTPUT_FIRST_PRIM_SLOT = 129 -PERF_PAPC_SU_SE1_OUTPUT_FIRST_PRIM_SLOT = 130 -PERF_PAPC_SU_SE0_STALLED_SC = 131 -PERF_PAPC_SU_SE1_STALLED_SC = 132 -PERF_PAPC_SU_SE01_STALLED_SC = 133 -PERF_PAPC_CLSM_CLIPPING_PRIM = 134 -PERF_PAPC_SU_CULLED_PRIM = 135 -PERF_PAPC_SU_OUTPUT_EOPG = 136 -PERF_PAPC_SU_SE2_PRIM_FILTER_CULL = 137 -PERF_PAPC_SU_SE3_PRIM_FILTER_CULL = 138 -PERF_PAPC_SU_SE2_OUTPUT_PRIM = 139 -PERF_PAPC_SU_SE3_OUTPUT_PRIM = 140 -PERF_PAPC_SU_SE2_OUTPUT_NULL_PRIM = 141 -PERF_PAPC_SU_SE3_OUTPUT_NULL_PRIM = 142 -PERF_PAPC_SU_SE0_OUTPUT_END_OF_PACKET = 143 -PERF_PAPC_SU_SE1_OUTPUT_END_OF_PACKET = 144 -PERF_PAPC_SU_SE2_OUTPUT_END_OF_PACKET = 145 -PERF_PAPC_SU_SE3_OUTPUT_END_OF_PACKET = 146 -PERF_PAPC_SU_SE0_OUTPUT_EOPG = 147 -PERF_PAPC_SU_SE1_OUTPUT_EOPG = 148 -PERF_PAPC_SU_SE2_OUTPUT_EOPG = 149 -PERF_PAPC_SU_SE3_OUTPUT_EOPG = 150 -PERF_PAPC_SU_SE2_STALLED_SC = 151 -PERF_PAPC_SU_SE3_STALLED_SC = 152 -PERF_SU_SMALL_PRIM_FILTER_CULL_CNT = 153 -PERF_SMALL_PRIM_CULL_PRIM_1X1 = 154 -PERF_SMALL_PRIM_CULL_PRIM_2X1 = 155 -PERF_SMALL_PRIM_CULL_PRIM_1X2 = 156 -PERF_SMALL_PRIM_CULL_PRIM_2X2 = 157 -PERF_SMALL_PRIM_CULL_PRIM_3X1 = 158 -PERF_SMALL_PRIM_CULL_PRIM_1X3 = 159 -PERF_SMALL_PRIM_CULL_PRIM_3X2 = 160 -PERF_SMALL_PRIM_CULL_PRIM_2X3 = 161 -PERF_SMALL_PRIM_CULL_PRIM_NX1 = 162 -PERF_SMALL_PRIM_CULL_PRIM_1XN = 163 -PERF_SMALL_PRIM_CULL_PRIM_NX2 = 164 -PERF_SMALL_PRIM_CULL_PRIM_2XN = 165 -PERF_SMALL_PRIM_CULL_PRIM_FULL_RES_EVENT = 166 -PERF_SMALL_PRIM_CULL_PRIM_HALF_RES_EVENT = 167 -PERF_SMALL_PRIM_CULL_PRIM_QUARTER_RES_EVENT = 168 -PERF_SC0_QUALIFIED_SEND_BUSY_EVENT = 170 -PERF_SC0_QUALIFIED_SEND_NOT_BUSY_EVENT = 171 -PERF_SC1_QUALIFIED_SEND_BUSY_EVENT = 172 -PERF_SC1_QUALIFIED_SEND_NOT_BUSY_EVENT = 173 -PERF_SC2_QUALIFIED_SEND_BUSY_EVENT = 174 -PERF_SC2_QUALIFIED_SEND_NOT_BUSY_EVENT = 175 -PERF_SC3_QUALIFIED_SEND_BUSY_EVENT = 176 -PERF_SC3_QUALIFIED_SEND_NOT_BUSY_EVENT = 177 -PERF_PA_VERTEX_FIFO_FULL = 179 -PERF_PA_PRIMIC_TO_CLPRIM_FIFO_FULL = 180 -PERF_PA_FETCH_TO_PRIMIC_P_FIFO_FULL = 182 -PERF_PA_FETCH_TO_SXIF_FIFO_FULL = 183 -PERF_PA_PIPE0_SWITCHED_GEN = 185 -PERF_PA_PIPE1_SWITCHED_GEN = 186 -PERF_ENGG_CSB_MACHINE_IS_STARVED = 188 -PERF_ENGG_CSB_MACHINE_STALLED_BY_CSB_MEMORY = 189 -PERF_ENGG_CSB_MACHINE_STALLED_BY_SPI = 190 -PERF_ENGG_CSB_GE_INPUT_FIFO_FULL = 191 -PERF_ENGG_CSB_SPI_INPUT_FIFO_FULL = 192 -PERF_ENGG_CSB_PAYLOAD_INPUT_FIFO_FULL = 193 -PERF_ENGG_CSB_GE_INPUT_FIFO_POP_BIT = 194 -PERF_ENGG_CSB_PRIM_COUNT_EQ0 = 195 -PERF_ENGG_CSB_NULL_SUBGROUP = 196 -PERF_ENGG_CSB_GE_SENDING_SUBGROUP = 197 -PERF_ENGG_CSB_GE_MEMORY_FULL = 198 -PERF_ENGG_CSB_GE_MEMORY_EMPTY = 199 -PERF_ENGG_CSB_SPI_MEMORY_FULL = 200 -PERF_ENGG_CSB_SPI_MEMORY_EMPTY = 201 -PERF_ENGG_CSB_DELAY_BIN00 = 202 -PERF_ENGG_CSB_DELAY_BIN01 = 203 -PERF_ENGG_CSB_DELAY_BIN02 = 204 -PERF_ENGG_CSB_DELAY_BIN03 = 205 -PERF_ENGG_CSB_DELAY_BIN04 = 206 -PERF_ENGG_CSB_DELAY_BIN05 = 207 -PERF_ENGG_CSB_DELAY_BIN06 = 208 -PERF_ENGG_CSB_DELAY_BIN07 = 209 -PERF_ENGG_CSB_DELAY_BIN08 = 210 -PERF_ENGG_CSB_DELAY_BIN09 = 211 -PERF_ENGG_CSB_DELAY_BIN10 = 212 -PERF_ENGG_CSB_DELAY_BIN11 = 213 -PERF_ENGG_CSB_DELAY_BIN12 = 214 -PERF_ENGG_CSB_DELAY_BIN13 = 215 -PERF_ENGG_CSB_DELAY_BIN14 = 216 -PERF_ENGG_CSB_DELAY_BIN15 = 217 -PERF_ENGG_CSB_SPI_DELAY_BIN00 = 218 -PERF_ENGG_CSB_SPI_DELAY_BIN01 = 219 -PERF_ENGG_CSB_SPI_DELAY_BIN02 = 220 -PERF_ENGG_CSB_SPI_DELAY_BIN03 = 221 -PERF_ENGG_CSB_SPI_DELAY_BIN04 = 222 -PERF_ENGG_CSB_SPI_DELAY_BIN05 = 223 -PERF_ENGG_CSB_SPI_DELAY_BIN06 = 224 -PERF_ENGG_CSB_SPI_DELAY_BIN07 = 225 -PERF_ENGG_CSB_SPI_DELAY_BIN08 = 226 -PERF_ENGG_CSB_SPI_DELAY_BIN09 = 227 -PERF_ENGG_CSB_SPI_DELAY_BIN10 = 228 -PERF_ENGG_INDEX_REQ_NULL_REQUEST = 229 -PERF_ENGG_INDEX_REQ_0_NEW_VERTS_THIS_PRIM = 230 -PERF_ENGG_INDEX_REQ_1_NEW_VERTS_THIS_PRIM = 231 -PERF_ENGG_INDEX_REQ_2_NEW_VERTS_THIS_PRIM = 232 -PERF_ENGG_INDEX_REQ_3_NEW_VERTS_THIS_PRIM = 233 -PERF_ENGG_INDEX_REQ_STARVED = 234 -PERF_ENGG_INDEX_REQ_IDLE_AND_STALLED_BY_REQ2RTN_FIFO_FULL = 235 -PERF_ENGG_INDEX_REQ_BUSY_AND_STALLED_BY_REQ2RTN_FIFO_FULL = 236 -PERF_ENGG_INDEX_REQ_STALLED_BY_SX_CREDITS = 237 -PERF_ENGG_INDEX_RET_REQ2RTN_FIFO_FULL = 238 -PERF_ENGG_INDEX_RET_REQ2RTN_FIFO_EMPTY = 239 -PERF_ENGG_INDEX_RET_SX_RECEIVE_FIFO_FULL = 240 -PERF_ENGG_INDEX_RET_SXRX_STARVED_BY_CSB = 241 -PERF_ENGG_INDEX_RET_SXRX_STARVED_BY_PRIMS = 242 -PERF_ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_CSB_FIFO = 243 -PERF_ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_FIFO = 244 -PERF_ENGG_INDEX_RET_SXRX_READING_EVENT = 245 -PERF_ENGG_INDEX_RET_SXRX_READING_NULL_SUBGROUP = 246 -PERF_ENGG_INDEX_RET_SXRX_READING_SUBGROUP_PRIMCOUNT_EQ0 = 247 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_NOPL = 248 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_NOPL = 249 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS_NOPL = 250 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS_NOPL = 251 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS_NOPL = 252 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_PL = 253 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_PL = 254 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS_PL = 255 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS_PL = 256 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS_PL = 257 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_NULL_PRIMS = 258 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_NULL_PRIMS = 259 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_NULL_PRIMS = 260 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_NULL_PRIMS = 261 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_NULL_PRIMS = 262 -PERF_ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_P_FIFO = 263 -PERF_ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_S_FIFO = 264 -PERF_ENGG_INDEX_PRIM_IF_STARVED_BY_NO_CSB = 265 -PERF_ENGG_INDEX_PRIM_IF_STARVED_BY_NO_PRIM = 266 -PERF_ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_WRITE = 267 -PERF_ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_NO_WRITE = 268 -PERF_ENGG_POS_REQ_STARVED = 269 -PERF_ENGG_INDEX_RET_SXRX_NULL_DROPPER_STALLED_BY_FULL_PRIM_FIFO = 270 -PERF_ENGG_BUSY = 271 -PERF_CLIPSM_CULL_PRIMS_CNT = 272 -PERF_PH_SEND_1_SC = 273 -PERF_PH_SEND_2_SC = 274 -PERF_PH_SEND_3_SC = 275 -PERF_PH_SEND_4_SC = 276 -PERF_OUTPUT_PRIM_1_SC = 277 -PERF_OUTPUT_PRIM_2_SC = 278 -PERF_OUTPUT_PRIM_3_SC = 279 -PERF_OUTPUT_PRIM_4_SC = 280 -SU_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PH_PERFCNT_SEL' -PH_PERFCNT_SEL__enumvalues = { - 0: 'PH_PERF_SEL_SC0_SRPS_WINDOW_VALID', - 1: 'PH_PERF_SEL_SC0_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 2: 'PH_PERF_SEL_SC0_ARB_XFC_ONLY_PRIM_CYCLES', - 3: 'PH_PERF_SEL_SC0_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 4: 'PH_PERF_SEL_SC0_ARB_STALLED_FROM_BELOW', - 5: 'PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE', - 6: 'PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 7: 'PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 8: 'PH_PERF_SEL_SC0_ARB_BUSY', - 9: 'PH_PERF_SEL_SC0_ARB_PA_BUSY_SOP', - 10: 'PH_PERF_SEL_SC0_ARB_EOP_POP_SYNC_POP', - 11: 'PH_PERF_SEL_SC0_ARB_EVENT_SYNC_POP', - 12: 'PH_PERF_SEL_SC0_PS_ENG_MULTICYCLE_BUBBLE', - 13: 'PH_PERF_SEL_SC0_EOP_SYNC_WINDOW', - 14: 'PH_PERF_SEL_SC0_BUSY_PROCESSING_MULTICYCLE_PRIM', - 15: 'PH_PERF_SEL_SC0_BUSY_CNT_NOT_ZERO', - 16: 'PH_PERF_SEL_SC0_SEND', - 17: 'PH_PERF_SEL_SC0_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 18: 'PH_PERF_SEL_SC0_CREDIT_AT_MAX', - 19: 'PH_PERF_SEL_SC0_CREDIT_AT_MAX_NO_PENDING_SEND', - 20: 'PH_PERF_SEL_SC0_GFX_PIPE0_TO_1_TRANSITION', - 21: 'PH_PERF_SEL_SC0_GFX_PIPE1_TO_0_TRANSITION', - 22: 'PH_PERF_SEL_SC0_GFX_PIPE_PRIM_PROVOKED_TRANSITION', - 23: 'PH_PERF_SEL_SC0_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 24: 'PH_PERF_SEL_SC0_PA0_DATA_FIFO_RD', - 25: 'PH_PERF_SEL_SC0_PA0_DATA_FIFO_WE', - 26: 'PH_PERF_SEL_SC0_PA0_FIFO_EMPTY', - 27: 'PH_PERF_SEL_SC0_PA0_FIFO_FULL', - 28: 'PH_PERF_SEL_SC0_PA0_NULL_WE', - 29: 'PH_PERF_SEL_SC0_PA0_EVENT_WE', - 30: 'PH_PERF_SEL_SC0_PA0_FPOV_WE', - 31: 'PH_PERF_SEL_SC0_PA0_LPOV_WE', - 32: 'PH_PERF_SEL_SC0_PA0_EOP_WE', - 33: 'PH_PERF_SEL_SC0_PA0_DATA_FIFO_EOP_RD', - 34: 'PH_PERF_SEL_SC0_PA0_EOPG_WE', - 35: 'PH_PERF_SEL_SC0_PA0_DEALLOC_4_0_RD', - 36: 'PH_PERF_SEL_SC0_PA1_DATA_FIFO_RD', - 37: 'PH_PERF_SEL_SC0_PA1_DATA_FIFO_WE', - 38: 'PH_PERF_SEL_SC0_PA1_FIFO_EMPTY', - 39: 'PH_PERF_SEL_SC0_PA1_FIFO_FULL', - 40: 'PH_PERF_SEL_SC0_PA1_NULL_WE', - 41: 'PH_PERF_SEL_SC0_PA1_EVENT_WE', - 42: 'PH_PERF_SEL_SC0_PA1_FPOV_WE', - 43: 'PH_PERF_SEL_SC0_PA1_LPOV_WE', - 44: 'PH_PERF_SEL_SC0_PA1_EOP_WE', - 45: 'PH_PERF_SEL_SC0_PA1_DATA_FIFO_EOP_RD', - 46: 'PH_PERF_SEL_SC0_PA1_EOPG_WE', - 47: 'PH_PERF_SEL_SC0_PA1_DEALLOC_4_0_RD', - 48: 'PH_PERF_SEL_SC0_PA2_DATA_FIFO_RD', - 49: 'PH_PERF_SEL_SC0_PA2_DATA_FIFO_WE', - 50: 'PH_PERF_SEL_SC0_PA2_FIFO_EMPTY', - 51: 'PH_PERF_SEL_SC0_PA2_FIFO_FULL', - 52: 'PH_PERF_SEL_SC0_PA2_NULL_WE', - 53: 'PH_PERF_SEL_SC0_PA2_EVENT_WE', - 54: 'PH_PERF_SEL_SC0_PA2_FPOV_WE', - 55: 'PH_PERF_SEL_SC0_PA2_LPOV_WE', - 56: 'PH_PERF_SEL_SC0_PA2_EOP_WE', - 57: 'PH_PERF_SEL_SC0_PA2_DATA_FIFO_EOP_RD', - 58: 'PH_PERF_SEL_SC0_PA2_EOPG_WE', - 59: 'PH_PERF_SEL_SC0_PA2_DEALLOC_4_0_RD', - 60: 'PH_PERF_SEL_SC0_PA3_DATA_FIFO_RD', - 61: 'PH_PERF_SEL_SC0_PA3_DATA_FIFO_WE', - 62: 'PH_PERF_SEL_SC0_PA3_FIFO_EMPTY', - 63: 'PH_PERF_SEL_SC0_PA3_FIFO_FULL', - 64: 'PH_PERF_SEL_SC0_PA3_NULL_WE', - 65: 'PH_PERF_SEL_SC0_PA3_EVENT_WE', - 66: 'PH_PERF_SEL_SC0_PA3_FPOV_WE', - 67: 'PH_PERF_SEL_SC0_PA3_LPOV_WE', - 68: 'PH_PERF_SEL_SC0_PA3_EOP_WE', - 69: 'PH_PERF_SEL_SC0_PA3_DATA_FIFO_EOP_RD', - 70: 'PH_PERF_SEL_SC0_PA3_EOPG_WE', - 71: 'PH_PERF_SEL_SC0_PA3_DEALLOC_4_0_RD', - 72: 'PH_PERF_SEL_SC0_PA4_DATA_FIFO_RD', - 73: 'PH_PERF_SEL_SC0_PA4_DATA_FIFO_WE', - 74: 'PH_PERF_SEL_SC0_PA4_FIFO_EMPTY', - 75: 'PH_PERF_SEL_SC0_PA4_FIFO_FULL', - 76: 'PH_PERF_SEL_SC0_PA4_NULL_WE', - 77: 'PH_PERF_SEL_SC0_PA4_EVENT_WE', - 78: 'PH_PERF_SEL_SC0_PA4_FPOV_WE', - 79: 'PH_PERF_SEL_SC0_PA4_LPOV_WE', - 80: 'PH_PERF_SEL_SC0_PA4_EOP_WE', - 81: 'PH_PERF_SEL_SC0_PA4_DATA_FIFO_EOP_RD', - 82: 'PH_PERF_SEL_SC0_PA4_EOPG_WE', - 83: 'PH_PERF_SEL_SC0_PA4_DEALLOC_4_0_RD', - 84: 'PH_PERF_SEL_SC0_PA5_DATA_FIFO_RD', - 85: 'PH_PERF_SEL_SC0_PA5_DATA_FIFO_WE', - 86: 'PH_PERF_SEL_SC0_PA5_FIFO_EMPTY', - 87: 'PH_PERF_SEL_SC0_PA5_FIFO_FULL', - 88: 'PH_PERF_SEL_SC0_PA5_NULL_WE', - 89: 'PH_PERF_SEL_SC0_PA5_EVENT_WE', - 90: 'PH_PERF_SEL_SC0_PA5_FPOV_WE', - 91: 'PH_PERF_SEL_SC0_PA5_LPOV_WE', - 92: 'PH_PERF_SEL_SC0_PA5_EOP_WE', - 93: 'PH_PERF_SEL_SC0_PA5_DATA_FIFO_EOP_RD', - 94: 'PH_PERF_SEL_SC0_PA5_EOPG_WE', - 95: 'PH_PERF_SEL_SC0_PA5_DEALLOC_4_0_RD', - 96: 'PH_PERF_SEL_SC0_PA6_DATA_FIFO_RD', - 97: 'PH_PERF_SEL_SC0_PA6_DATA_FIFO_WE', - 98: 'PH_PERF_SEL_SC0_PA6_FIFO_EMPTY', - 99: 'PH_PERF_SEL_SC0_PA6_FIFO_FULL', - 100: 'PH_PERF_SEL_SC0_PA6_NULL_WE', - 101: 'PH_PERF_SEL_SC0_PA6_EVENT_WE', - 102: 'PH_PERF_SEL_SC0_PA6_FPOV_WE', - 103: 'PH_PERF_SEL_SC0_PA6_LPOV_WE', - 104: 'PH_PERF_SEL_SC0_PA6_EOP_WE', - 105: 'PH_PERF_SEL_SC0_PA6_DATA_FIFO_EOP_RD', - 106: 'PH_PERF_SEL_SC0_PA6_EOPG_WE', - 107: 'PH_PERF_SEL_SC0_PA6_DEALLOC_4_0_RD', - 108: 'PH_PERF_SEL_SC0_PA7_DATA_FIFO_RD', - 109: 'PH_PERF_SEL_SC0_PA7_DATA_FIFO_WE', - 110: 'PH_PERF_SEL_SC0_PA7_FIFO_EMPTY', - 111: 'PH_PERF_SEL_SC0_PA7_FIFO_FULL', - 112: 'PH_PERF_SEL_SC0_PA7_NULL_WE', - 113: 'PH_PERF_SEL_SC0_PA7_EVENT_WE', - 114: 'PH_PERF_SEL_SC0_PA7_FPOV_WE', - 115: 'PH_PERF_SEL_SC0_PA7_LPOV_WE', - 116: 'PH_PERF_SEL_SC0_PA7_EOP_WE', - 117: 'PH_PERF_SEL_SC0_PA7_DATA_FIFO_EOP_RD', - 118: 'PH_PERF_SEL_SC0_PA7_EOPG_WE', - 119: 'PH_PERF_SEL_SC0_PA7_DEALLOC_4_0_RD', - 120: 'PH_PERF_SEL_SC1_SRPS_WINDOW_VALID', - 121: 'PH_PERF_SEL_SC1_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 122: 'PH_PERF_SEL_SC1_ARB_XFC_ONLY_PRIM_CYCLES', - 123: 'PH_PERF_SEL_SC1_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 124: 'PH_PERF_SEL_SC1_ARB_STALLED_FROM_BELOW', - 125: 'PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE', - 126: 'PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 127: 'PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 128: 'PH_PERF_SEL_SC1_ARB_BUSY', - 129: 'PH_PERF_SEL_SC1_ARB_PA_BUSY_SOP', - 130: 'PH_PERF_SEL_SC1_ARB_EOP_POP_SYNC_POP', - 131: 'PH_PERF_SEL_SC1_ARB_EVENT_SYNC_POP', - 132: 'PH_PERF_SEL_SC1_PS_ENG_MULTICYCLE_BUBBLE', - 133: 'PH_PERF_SEL_SC1_EOP_SYNC_WINDOW', - 134: 'PH_PERF_SEL_SC1_BUSY_PROCESSING_MULTICYCLE_PRIM', - 135: 'PH_PERF_SEL_SC1_BUSY_CNT_NOT_ZERO', - 136: 'PH_PERF_SEL_SC1_SEND', - 137: 'PH_PERF_SEL_SC1_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 138: 'PH_PERF_SEL_SC1_CREDIT_AT_MAX', - 139: 'PH_PERF_SEL_SC1_CREDIT_AT_MAX_NO_PENDING_SEND', - 140: 'PH_PERF_SEL_SC1_GFX_PIPE0_TO_1_TRANSITION', - 141: 'PH_PERF_SEL_SC1_GFX_PIPE1_TO_0_TRANSITION', - 142: 'PH_PERF_SEL_SC1_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 143: 'PH_PERF_SEL_SC1_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 144: 'PH_PERF_SEL_SC1_PA0_DATA_FIFO_RD', - 145: 'PH_PERF_SEL_SC1_PA0_DATA_FIFO_WE', - 146: 'PH_PERF_SEL_SC1_PA0_FIFO_EMPTY', - 147: 'PH_PERF_SEL_SC1_PA0_FIFO_FULL', - 148: 'PH_PERF_SEL_SC1_PA0_NULL_WE', - 149: 'PH_PERF_SEL_SC1_PA0_EVENT_WE', - 150: 'PH_PERF_SEL_SC1_PA0_FPOV_WE', - 151: 'PH_PERF_SEL_SC1_PA0_LPOV_WE', - 152: 'PH_PERF_SEL_SC1_PA0_EOP_WE', - 153: 'PH_PERF_SEL_SC1_PA0_DATA_FIFO_EOP_RD', - 154: 'PH_PERF_SEL_SC1_PA0_EOPG_WE', - 155: 'PH_PERF_SEL_SC1_PA0_DEALLOC_4_0_RD', - 156: 'PH_PERF_SEL_SC1_PA1_DATA_FIFO_RD', - 157: 'PH_PERF_SEL_SC1_PA1_DATA_FIFO_WE', - 158: 'PH_PERF_SEL_SC1_PA1_FIFO_EMPTY', - 159: 'PH_PERF_SEL_SC1_PA1_FIFO_FULL', - 160: 'PH_PERF_SEL_SC1_PA1_NULL_WE', - 161: 'PH_PERF_SEL_SC1_PA1_EVENT_WE', - 162: 'PH_PERF_SEL_SC1_PA1_FPOV_WE', - 163: 'PH_PERF_SEL_SC1_PA1_LPOV_WE', - 164: 'PH_PERF_SEL_SC1_PA1_EOP_WE', - 165: 'PH_PERF_SEL_SC1_PA1_DATA_FIFO_EOP_RD', - 166: 'PH_PERF_SEL_SC1_PA1_EOPG_WE', - 167: 'PH_PERF_SEL_SC1_PA1_DEALLOC_4_0_RD', - 168: 'PH_PERF_SEL_SC1_PA2_DATA_FIFO_RD', - 169: 'PH_PERF_SEL_SC1_PA2_DATA_FIFO_WE', - 170: 'PH_PERF_SEL_SC1_PA2_FIFO_EMPTY', - 171: 'PH_PERF_SEL_SC1_PA2_FIFO_FULL', - 172: 'PH_PERF_SEL_SC1_PA2_NULL_WE', - 173: 'PH_PERF_SEL_SC1_PA2_EVENT_WE', - 174: 'PH_PERF_SEL_SC1_PA2_FPOV_WE', - 175: 'PH_PERF_SEL_SC1_PA2_LPOV_WE', - 176: 'PH_PERF_SEL_SC1_PA2_EOP_WE', - 177: 'PH_PERF_SEL_SC1_PA2_DATA_FIFO_EOP_RD', - 178: 'PH_PERF_SEL_SC1_PA2_EOPG_WE', - 179: 'PH_PERF_SEL_SC1_PA2_DEALLOC_4_0_RD', - 180: 'PH_PERF_SEL_SC1_PA3_DATA_FIFO_RD', - 181: 'PH_PERF_SEL_SC1_PA3_DATA_FIFO_WE', - 182: 'PH_PERF_SEL_SC1_PA3_FIFO_EMPTY', - 183: 'PH_PERF_SEL_SC1_PA3_FIFO_FULL', - 184: 'PH_PERF_SEL_SC1_PA3_NULL_WE', - 185: 'PH_PERF_SEL_SC1_PA3_EVENT_WE', - 186: 'PH_PERF_SEL_SC1_PA3_FPOV_WE', - 187: 'PH_PERF_SEL_SC1_PA3_LPOV_WE', - 188: 'PH_PERF_SEL_SC1_PA3_EOP_WE', - 189: 'PH_PERF_SEL_SC1_PA3_DATA_FIFO_EOP_RD', - 190: 'PH_PERF_SEL_SC1_PA3_EOPG_WE', - 191: 'PH_PERF_SEL_SC1_PA3_DEALLOC_4_0_RD', - 192: 'PH_PERF_SEL_SC1_PA4_DATA_FIFO_RD', - 193: 'PH_PERF_SEL_SC1_PA4_DATA_FIFO_WE', - 194: 'PH_PERF_SEL_SC1_PA4_FIFO_EMPTY', - 195: 'PH_PERF_SEL_SC1_PA4_FIFO_FULL', - 196: 'PH_PERF_SEL_SC1_PA4_NULL_WE', - 197: 'PH_PERF_SEL_SC1_PA4_EVENT_WE', - 198: 'PH_PERF_SEL_SC1_PA4_FPOV_WE', - 199: 'PH_PERF_SEL_SC1_PA4_LPOV_WE', - 200: 'PH_PERF_SEL_SC1_PA4_EOP_WE', - 201: 'PH_PERF_SEL_SC1_PA4_DATA_FIFO_EOP_RD', - 202: 'PH_PERF_SEL_SC1_PA4_EOPG_WE', - 203: 'PH_PERF_SEL_SC1_PA4_DEALLOC_4_0_RD', - 204: 'PH_PERF_SEL_SC1_PA5_DATA_FIFO_RD', - 205: 'PH_PERF_SEL_SC1_PA5_DATA_FIFO_WE', - 206: 'PH_PERF_SEL_SC1_PA5_FIFO_EMPTY', - 207: 'PH_PERF_SEL_SC1_PA5_FIFO_FULL', - 208: 'PH_PERF_SEL_SC1_PA5_NULL_WE', - 209: 'PH_PERF_SEL_SC1_PA5_EVENT_WE', - 210: 'PH_PERF_SEL_SC1_PA5_FPOV_WE', - 211: 'PH_PERF_SEL_SC1_PA5_LPOV_WE', - 212: 'PH_PERF_SEL_SC1_PA5_EOP_WE', - 213: 'PH_PERF_SEL_SC1_PA5_DATA_FIFO_EOP_RD', - 214: 'PH_PERF_SEL_SC1_PA5_EOPG_WE', - 215: 'PH_PERF_SEL_SC1_PA5_DEALLOC_4_0_RD', - 216: 'PH_PERF_SEL_SC1_PA6_DATA_FIFO_RD', - 217: 'PH_PERF_SEL_SC1_PA6_DATA_FIFO_WE', - 218: 'PH_PERF_SEL_SC1_PA6_FIFO_EMPTY', - 219: 'PH_PERF_SEL_SC1_PA6_FIFO_FULL', - 220: 'PH_PERF_SEL_SC1_PA6_NULL_WE', - 221: 'PH_PERF_SEL_SC1_PA6_EVENT_WE', - 222: 'PH_PERF_SEL_SC1_PA6_FPOV_WE', - 223: 'PH_PERF_SEL_SC1_PA6_LPOV_WE', - 224: 'PH_PERF_SEL_SC1_PA6_EOP_WE', - 225: 'PH_PERF_SEL_SC1_PA6_DATA_FIFO_EOP_RD', - 226: 'PH_PERF_SEL_SC1_PA6_EOPG_WE', - 227: 'PH_PERF_SEL_SC1_PA6_DEALLOC_4_0_RD', - 228: 'PH_PERF_SEL_SC1_PA7_DATA_FIFO_RD', - 229: 'PH_PERF_SEL_SC1_PA7_DATA_FIFO_WE', - 230: 'PH_PERF_SEL_SC1_PA7_FIFO_EMPTY', - 231: 'PH_PERF_SEL_SC1_PA7_FIFO_FULL', - 232: 'PH_PERF_SEL_SC1_PA7_NULL_WE', - 233: 'PH_PERF_SEL_SC1_PA7_EVENT_WE', - 234: 'PH_PERF_SEL_SC1_PA7_FPOV_WE', - 235: 'PH_PERF_SEL_SC1_PA7_LPOV_WE', - 236: 'PH_PERF_SEL_SC1_PA7_EOP_WE', - 237: 'PH_PERF_SEL_SC1_PA7_DATA_FIFO_EOP_RD', - 238: 'PH_PERF_SEL_SC1_PA7_EOPG_WE', - 239: 'PH_PERF_SEL_SC1_PA7_DEALLOC_4_0_RD', - 240: 'PH_PERF_SEL_SC2_SRPS_WINDOW_VALID', - 241: 'PH_PERF_SEL_SC2_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 242: 'PH_PERF_SEL_SC2_ARB_XFC_ONLY_PRIM_CYCLES', - 243: 'PH_PERF_SEL_SC2_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 244: 'PH_PERF_SEL_SC2_ARB_STALLED_FROM_BELOW', - 245: 'PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE', - 246: 'PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 247: 'PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 248: 'PH_PERF_SEL_SC2_ARB_BUSY', - 249: 'PH_PERF_SEL_SC2_ARB_PA_BUSY_SOP', - 250: 'PH_PERF_SEL_SC2_ARB_EOP_POP_SYNC_POP', - 251: 'PH_PERF_SEL_SC2_ARB_EVENT_SYNC_POP', - 252: 'PH_PERF_SEL_SC2_PS_ENG_MULTICYCLE_BUBBLE', - 253: 'PH_PERF_SEL_SC2_EOP_SYNC_WINDOW', - 254: 'PH_PERF_SEL_SC2_BUSY_PROCESSING_MULTICYCLE_PRIM', - 255: 'PH_PERF_SEL_SC2_BUSY_CNT_NOT_ZERO', - 256: 'PH_PERF_SEL_SC2_SEND', - 257: 'PH_PERF_SEL_SC2_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 258: 'PH_PERF_SEL_SC2_CREDIT_AT_MAX', - 259: 'PH_PERF_SEL_SC2_CREDIT_AT_MAX_NO_PENDING_SEND', - 260: 'PH_PERF_SEL_SC2_GFX_PIPE0_TO_1_TRANSITION', - 261: 'PH_PERF_SEL_SC2_GFX_PIPE1_TO_0_TRANSITION', - 262: 'PH_PERF_SEL_SC2_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 263: 'PH_PERF_SEL_SC2_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 264: 'PH_PERF_SEL_SC2_PA0_DATA_FIFO_RD', - 265: 'PH_PERF_SEL_SC2_PA0_DATA_FIFO_WE', - 266: 'PH_PERF_SEL_SC2_PA0_FIFO_EMPTY', - 267: 'PH_PERF_SEL_SC2_PA0_FIFO_FULL', - 268: 'PH_PERF_SEL_SC2_PA0_NULL_WE', - 269: 'PH_PERF_SEL_SC2_PA0_EVENT_WE', - 270: 'PH_PERF_SEL_SC2_PA0_FPOV_WE', - 271: 'PH_PERF_SEL_SC2_PA0_LPOV_WE', - 272: 'PH_PERF_SEL_SC2_PA0_EOP_WE', - 273: 'PH_PERF_SEL_SC2_PA0_DATA_FIFO_EOP_RD', - 274: 'PH_PERF_SEL_SC2_PA0_EOPG_WE', - 275: 'PH_PERF_SEL_SC2_PA0_DEALLOC_4_0_RD', - 276: 'PH_PERF_SEL_SC2_PA1_DATA_FIFO_RD', - 277: 'PH_PERF_SEL_SC2_PA1_DATA_FIFO_WE', - 278: 'PH_PERF_SEL_SC2_PA1_FIFO_EMPTY', - 279: 'PH_PERF_SEL_SC2_PA1_FIFO_FULL', - 280: 'PH_PERF_SEL_SC2_PA1_NULL_WE', - 281: 'PH_PERF_SEL_SC2_PA1_EVENT_WE', - 282: 'PH_PERF_SEL_SC2_PA1_FPOV_WE', - 283: 'PH_PERF_SEL_SC2_PA1_LPOV_WE', - 284: 'PH_PERF_SEL_SC2_PA1_EOP_WE', - 285: 'PH_PERF_SEL_SC2_PA1_DATA_FIFO_EOP_RD', - 286: 'PH_PERF_SEL_SC2_PA1_EOPG_WE', - 287: 'PH_PERF_SEL_SC2_PA1_DEALLOC_4_0_RD', - 288: 'PH_PERF_SEL_SC2_PA2_DATA_FIFO_RD', - 289: 'PH_PERF_SEL_SC2_PA2_DATA_FIFO_WE', - 290: 'PH_PERF_SEL_SC2_PA2_FIFO_EMPTY', - 291: 'PH_PERF_SEL_SC2_PA2_FIFO_FULL', - 292: 'PH_PERF_SEL_SC2_PA2_NULL_WE', - 293: 'PH_PERF_SEL_SC2_PA2_EVENT_WE', - 294: 'PH_PERF_SEL_SC2_PA2_FPOV_WE', - 295: 'PH_PERF_SEL_SC2_PA2_LPOV_WE', - 296: 'PH_PERF_SEL_SC2_PA2_EOP_WE', - 297: 'PH_PERF_SEL_SC2_PA2_DATA_FIFO_EOP_RD', - 298: 'PH_PERF_SEL_SC2_PA2_EOPG_WE', - 299: 'PH_PERF_SEL_SC2_PA2_DEALLOC_4_0_RD', - 300: 'PH_PERF_SEL_SC2_PA3_DATA_FIFO_RD', - 301: 'PH_PERF_SEL_SC2_PA3_DATA_FIFO_WE', - 302: 'PH_PERF_SEL_SC2_PA3_FIFO_EMPTY', - 303: 'PH_PERF_SEL_SC2_PA3_FIFO_FULL', - 304: 'PH_PERF_SEL_SC2_PA3_NULL_WE', - 305: 'PH_PERF_SEL_SC2_PA3_EVENT_WE', - 306: 'PH_PERF_SEL_SC2_PA3_FPOV_WE', - 307: 'PH_PERF_SEL_SC2_PA3_LPOV_WE', - 308: 'PH_PERF_SEL_SC2_PA3_EOP_WE', - 309: 'PH_PERF_SEL_SC2_PA3_DATA_FIFO_EOP_RD', - 310: 'PH_PERF_SEL_SC2_PA3_EOPG_WE', - 311: 'PH_PERF_SEL_SC2_PA3_DEALLOC_4_0_RD', - 312: 'PH_PERF_SEL_SC2_PA4_DATA_FIFO_RD', - 313: 'PH_PERF_SEL_SC2_PA4_DATA_FIFO_WE', - 314: 'PH_PERF_SEL_SC2_PA4_FIFO_EMPTY', - 315: 'PH_PERF_SEL_SC2_PA4_FIFO_FULL', - 316: 'PH_PERF_SEL_SC2_PA4_NULL_WE', - 317: 'PH_PERF_SEL_SC2_PA4_EVENT_WE', - 318: 'PH_PERF_SEL_SC2_PA4_FPOV_WE', - 319: 'PH_PERF_SEL_SC2_PA4_LPOV_WE', - 320: 'PH_PERF_SEL_SC2_PA4_EOP_WE', - 321: 'PH_PERF_SEL_SC2_PA4_DATA_FIFO_EOP_RD', - 322: 'PH_PERF_SEL_SC2_PA4_EOPG_WE', - 323: 'PH_PERF_SEL_SC2_PA4_DEALLOC_4_0_RD', - 324: 'PH_PERF_SEL_SC2_PA5_DATA_FIFO_RD', - 325: 'PH_PERF_SEL_SC2_PA5_DATA_FIFO_WE', - 326: 'PH_PERF_SEL_SC2_PA5_FIFO_EMPTY', - 327: 'PH_PERF_SEL_SC2_PA5_FIFO_FULL', - 328: 'PH_PERF_SEL_SC2_PA5_NULL_WE', - 329: 'PH_PERF_SEL_SC2_PA5_EVENT_WE', - 330: 'PH_PERF_SEL_SC2_PA5_FPOV_WE', - 331: 'PH_PERF_SEL_SC2_PA5_LPOV_WE', - 332: 'PH_PERF_SEL_SC2_PA5_EOP_WE', - 333: 'PH_PERF_SEL_SC2_PA5_DATA_FIFO_EOP_RD', - 334: 'PH_PERF_SEL_SC2_PA5_EOPG_WE', - 335: 'PH_PERF_SEL_SC2_PA5_DEALLOC_4_0_RD', - 336: 'PH_PERF_SEL_SC2_PA6_DATA_FIFO_RD', - 337: 'PH_PERF_SEL_SC2_PA6_DATA_FIFO_WE', - 338: 'PH_PERF_SEL_SC2_PA6_FIFO_EMPTY', - 339: 'PH_PERF_SEL_SC2_PA6_FIFO_FULL', - 340: 'PH_PERF_SEL_SC2_PA6_NULL_WE', - 341: 'PH_PERF_SEL_SC2_PA6_EVENT_WE', - 342: 'PH_PERF_SEL_SC2_PA6_FPOV_WE', - 343: 'PH_PERF_SEL_SC2_PA6_LPOV_WE', - 344: 'PH_PERF_SEL_SC2_PA6_EOP_WE', - 345: 'PH_PERF_SEL_SC2_PA6_DATA_FIFO_EOP_RD', - 346: 'PH_PERF_SEL_SC2_PA6_EOPG_WE', - 347: 'PH_PERF_SEL_SC2_PA6_DEALLOC_4_0_RD', - 348: 'PH_PERF_SEL_SC2_PA7_DATA_FIFO_RD', - 349: 'PH_PERF_SEL_SC2_PA7_DATA_FIFO_WE', - 350: 'PH_PERF_SEL_SC2_PA7_FIFO_EMPTY', - 351: 'PH_PERF_SEL_SC2_PA7_FIFO_FULL', - 352: 'PH_PERF_SEL_SC2_PA7_NULL_WE', - 353: 'PH_PERF_SEL_SC2_PA7_EVENT_WE', - 354: 'PH_PERF_SEL_SC2_PA7_FPOV_WE', - 355: 'PH_PERF_SEL_SC2_PA7_LPOV_WE', - 356: 'PH_PERF_SEL_SC2_PA7_EOP_WE', - 357: 'PH_PERF_SEL_SC2_PA7_DATA_FIFO_EOP_RD', - 358: 'PH_PERF_SEL_SC2_PA7_EOPG_WE', - 359: 'PH_PERF_SEL_SC2_PA7_DEALLOC_4_0_RD', - 360: 'PH_PERF_SEL_SC3_SRPS_WINDOW_VALID', - 361: 'PH_PERF_SEL_SC3_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 362: 'PH_PERF_SEL_SC3_ARB_XFC_ONLY_PRIM_CYCLES', - 363: 'PH_PERF_SEL_SC3_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 364: 'PH_PERF_SEL_SC3_ARB_STALLED_FROM_BELOW', - 365: 'PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE', - 366: 'PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 367: 'PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 368: 'PH_PERF_SEL_SC3_ARB_BUSY', - 369: 'PH_PERF_SEL_SC3_ARB_PA_BUSY_SOP', - 370: 'PH_PERF_SEL_SC3_ARB_EOP_POP_SYNC_POP', - 371: 'PH_PERF_SEL_SC3_ARB_EVENT_SYNC_POP', - 372: 'PH_PERF_SEL_SC3_PS_ENG_MULTICYCLE_BUBBLE', - 373: 'PH_PERF_SEL_SC3_EOP_SYNC_WINDOW', - 374: 'PH_PERF_SEL_SC3_BUSY_PROCESSING_MULTICYCLE_PRIM', - 375: 'PH_PERF_SEL_SC3_BUSY_CNT_NOT_ZERO', - 376: 'PH_PERF_SEL_SC3_SEND', - 377: 'PH_PERF_SEL_SC3_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 378: 'PH_PERF_SEL_SC3_CREDIT_AT_MAX', - 379: 'PH_PERF_SEL_SC3_CREDIT_AT_MAX_NO_PENDING_SEND', - 380: 'PH_PERF_SEL_SC3_GFX_PIPE0_TO_1_TRANSITION', - 381: 'PH_PERF_SEL_SC3_GFX_PIPE1_TO_0_TRANSITION', - 382: 'PH_PERF_SEL_SC3_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 383: 'PH_PERF_SEL_SC3_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 384: 'PH_PERF_SEL_SC3_PA0_DATA_FIFO_RD', - 385: 'PH_PERF_SEL_SC3_PA0_DATA_FIFO_WE', - 386: 'PH_PERF_SEL_SC3_PA0_FIFO_EMPTY', - 387: 'PH_PERF_SEL_SC3_PA0_FIFO_FULL', - 388: 'PH_PERF_SEL_SC3_PA0_NULL_WE', - 389: 'PH_PERF_SEL_SC3_PA0_EVENT_WE', - 390: 'PH_PERF_SEL_SC3_PA0_FPOV_WE', - 391: 'PH_PERF_SEL_SC3_PA0_LPOV_WE', - 392: 'PH_PERF_SEL_SC3_PA0_EOP_WE', - 393: 'PH_PERF_SEL_SC3_PA0_DATA_FIFO_EOP_RD', - 394: 'PH_PERF_SEL_SC3_PA0_EOPG_WE', - 395: 'PH_PERF_SEL_SC3_PA0_DEALLOC_4_0_RD', - 396: 'PH_PERF_SEL_SC3_PA1_DATA_FIFO_RD', - 397: 'PH_PERF_SEL_SC3_PA1_DATA_FIFO_WE', - 398: 'PH_PERF_SEL_SC3_PA1_FIFO_EMPTY', - 399: 'PH_PERF_SEL_SC3_PA1_FIFO_FULL', - 400: 'PH_PERF_SEL_SC3_PA1_NULL_WE', - 401: 'PH_PERF_SEL_SC3_PA1_EVENT_WE', - 402: 'PH_PERF_SEL_SC3_PA1_FPOV_WE', - 403: 'PH_PERF_SEL_SC3_PA1_LPOV_WE', - 404: 'PH_PERF_SEL_SC3_PA1_EOP_WE', - 405: 'PH_PERF_SEL_SC3_PA1_DATA_FIFO_EOP_RD', - 406: 'PH_PERF_SEL_SC3_PA1_EOPG_WE', - 407: 'PH_PERF_SEL_SC3_PA1_DEALLOC_4_0_RD', - 408: 'PH_PERF_SEL_SC3_PA2_DATA_FIFO_RD', - 409: 'PH_PERF_SEL_SC3_PA2_DATA_FIFO_WE', - 410: 'PH_PERF_SEL_SC3_PA2_FIFO_EMPTY', - 411: 'PH_PERF_SEL_SC3_PA2_FIFO_FULL', - 412: 'PH_PERF_SEL_SC3_PA2_NULL_WE', - 413: 'PH_PERF_SEL_SC3_PA2_EVENT_WE', - 414: 'PH_PERF_SEL_SC3_PA2_FPOV_WE', - 415: 'PH_PERF_SEL_SC3_PA2_LPOV_WE', - 416: 'PH_PERF_SEL_SC3_PA2_EOP_WE', - 417: 'PH_PERF_SEL_SC3_PA2_DATA_FIFO_EOP_RD', - 418: 'PH_PERF_SEL_SC3_PA2_EOPG_WE', - 419: 'PH_PERF_SEL_SC3_PA2_DEALLOC_4_0_RD', - 420: 'PH_PERF_SEL_SC3_PA3_DATA_FIFO_RD', - 421: 'PH_PERF_SEL_SC3_PA3_DATA_FIFO_WE', - 422: 'PH_PERF_SEL_SC3_PA3_FIFO_EMPTY', - 423: 'PH_PERF_SEL_SC3_PA3_FIFO_FULL', - 424: 'PH_PERF_SEL_SC3_PA3_NULL_WE', - 425: 'PH_PERF_SEL_SC3_PA3_EVENT_WE', - 426: 'PH_PERF_SEL_SC3_PA3_FPOV_WE', - 427: 'PH_PERF_SEL_SC3_PA3_LPOV_WE', - 428: 'PH_PERF_SEL_SC3_PA3_EOP_WE', - 429: 'PH_PERF_SEL_SC3_PA3_DATA_FIFO_EOP_RD', - 430: 'PH_PERF_SEL_SC3_PA3_EOPG_WE', - 431: 'PH_PERF_SEL_SC3_PA3_DEALLOC_4_0_RD', - 432: 'PH_PERF_SEL_SC3_PA4_DATA_FIFO_RD', - 433: 'PH_PERF_SEL_SC3_PA4_DATA_FIFO_WE', - 434: 'PH_PERF_SEL_SC3_PA4_FIFO_EMPTY', - 435: 'PH_PERF_SEL_SC3_PA4_FIFO_FULL', - 436: 'PH_PERF_SEL_SC3_PA4_NULL_WE', - 437: 'PH_PERF_SEL_SC3_PA4_EVENT_WE', - 438: 'PH_PERF_SEL_SC3_PA4_FPOV_WE', - 439: 'PH_PERF_SEL_SC3_PA4_LPOV_WE', - 440: 'PH_PERF_SEL_SC3_PA4_EOP_WE', - 441: 'PH_PERF_SEL_SC3_PA4_DATA_FIFO_EOP_RD', - 442: 'PH_PERF_SEL_SC3_PA4_EOPG_WE', - 443: 'PH_PERF_SEL_SC3_PA4_DEALLOC_4_0_RD', - 444: 'PH_PERF_SEL_SC3_PA5_DATA_FIFO_RD', - 445: 'PH_PERF_SEL_SC3_PA5_DATA_FIFO_WE', - 446: 'PH_PERF_SEL_SC3_PA5_FIFO_EMPTY', - 447: 'PH_PERF_SEL_SC3_PA5_FIFO_FULL', - 448: 'PH_PERF_SEL_SC3_PA5_NULL_WE', - 449: 'PH_PERF_SEL_SC3_PA5_EVENT_WE', - 450: 'PH_PERF_SEL_SC3_PA5_FPOV_WE', - 451: 'PH_PERF_SEL_SC3_PA5_LPOV_WE', - 452: 'PH_PERF_SEL_SC3_PA5_EOP_WE', - 453: 'PH_PERF_SEL_SC3_PA5_DATA_FIFO_EOP_RD', - 454: 'PH_PERF_SEL_SC3_PA5_EOPG_WE', - 455: 'PH_PERF_SEL_SC3_PA5_DEALLOC_4_0_RD', - 456: 'PH_PERF_SEL_SC3_PA6_DATA_FIFO_RD', - 457: 'PH_PERF_SEL_SC3_PA6_DATA_FIFO_WE', - 458: 'PH_PERF_SEL_SC3_PA6_FIFO_EMPTY', - 459: 'PH_PERF_SEL_SC3_PA6_FIFO_FULL', - 460: 'PH_PERF_SEL_SC3_PA6_NULL_WE', - 461: 'PH_PERF_SEL_SC3_PA6_EVENT_WE', - 462: 'PH_PERF_SEL_SC3_PA6_FPOV_WE', - 463: 'PH_PERF_SEL_SC3_PA6_LPOV_WE', - 464: 'PH_PERF_SEL_SC3_PA6_EOP_WE', - 465: 'PH_PERF_SEL_SC3_PA6_DATA_FIFO_EOP_RD', - 466: 'PH_PERF_SEL_SC3_PA6_EOPG_WE', - 467: 'PH_PERF_SEL_SC3_PA6_DEALLOC_4_0_RD', - 468: 'PH_PERF_SEL_SC3_PA7_DATA_FIFO_RD', - 469: 'PH_PERF_SEL_SC3_PA7_DATA_FIFO_WE', - 470: 'PH_PERF_SEL_SC3_PA7_FIFO_EMPTY', - 471: 'PH_PERF_SEL_SC3_PA7_FIFO_FULL', - 472: 'PH_PERF_SEL_SC3_PA7_NULL_WE', - 473: 'PH_PERF_SEL_SC3_PA7_EVENT_WE', - 474: 'PH_PERF_SEL_SC3_PA7_FPOV_WE', - 475: 'PH_PERF_SEL_SC3_PA7_LPOV_WE', - 476: 'PH_PERF_SEL_SC3_PA7_EOP_WE', - 477: 'PH_PERF_SEL_SC3_PA7_DATA_FIFO_EOP_RD', - 478: 'PH_PERF_SEL_SC3_PA7_EOPG_WE', - 479: 'PH_PERF_SEL_SC3_PA7_DEALLOC_4_0_RD', - 480: 'PH_PERF_SEL_SC4_SRPS_WINDOW_VALID', - 481: 'PH_PERF_SEL_SC4_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 482: 'PH_PERF_SEL_SC4_ARB_XFC_ONLY_PRIM_CYCLES', - 483: 'PH_PERF_SEL_SC4_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 484: 'PH_PERF_SEL_SC4_ARB_STALLED_FROM_BELOW', - 485: 'PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE', - 486: 'PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 487: 'PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 488: 'PH_PERF_SEL_SC4_ARB_BUSY', - 489: 'PH_PERF_SEL_SC4_ARB_PA_BUSY_SOP', - 490: 'PH_PERF_SEL_SC4_ARB_EOP_POP_SYNC_POP', - 491: 'PH_PERF_SEL_SC4_ARB_EVENT_SYNC_POP', - 492: 'PH_PERF_SEL_SC4_PS_ENG_MULTICYCLE_BUBBLE', - 493: 'PH_PERF_SEL_SC4_EOP_SYNC_WINDOW', - 494: 'PH_PERF_SEL_SC4_BUSY_PROCESSING_MULTICYCLE_PRIM', - 495: 'PH_PERF_SEL_SC4_BUSY_CNT_NOT_ZERO', - 496: 'PH_PERF_SEL_SC4_SEND', - 497: 'PH_PERF_SEL_SC4_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 498: 'PH_PERF_SEL_SC4_CREDIT_AT_MAX', - 499: 'PH_PERF_SEL_SC4_CREDIT_AT_MAX_NO_PENDING_SEND', - 500: 'PH_PERF_SEL_SC4_GFX_PIPE0_TO_1_TRANSITION', - 501: 'PH_PERF_SEL_SC4_GFX_PIPE1_TO_0_TRANSITION', - 502: 'PH_PERF_SEL_SC4_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 503: 'PH_PERF_SEL_SC4_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 504: 'PH_PERF_SEL_SC4_PA0_DATA_FIFO_RD', - 505: 'PH_PERF_SEL_SC4_PA0_DATA_FIFO_WE', - 506: 'PH_PERF_SEL_SC4_PA0_FIFO_EMPTY', - 507: 'PH_PERF_SEL_SC4_PA0_FIFO_FULL', - 508: 'PH_PERF_SEL_SC4_PA0_NULL_WE', - 509: 'PH_PERF_SEL_SC4_PA0_EVENT_WE', - 510: 'PH_PERF_SEL_SC4_PA0_FPOV_WE', - 511: 'PH_PERF_SEL_SC4_PA0_LPOV_WE', - 512: 'PH_PERF_SEL_SC4_PA0_EOP_WE', - 513: 'PH_PERF_SEL_SC4_PA0_DATA_FIFO_EOP_RD', - 514: 'PH_PERF_SEL_SC4_PA0_EOPG_WE', - 515: 'PH_PERF_SEL_SC4_PA0_DEALLOC_4_0_RD', - 516: 'PH_PERF_SEL_SC4_PA1_DATA_FIFO_RD', - 517: 'PH_PERF_SEL_SC4_PA1_DATA_FIFO_WE', - 518: 'PH_PERF_SEL_SC4_PA1_FIFO_EMPTY', - 519: 'PH_PERF_SEL_SC4_PA1_FIFO_FULL', - 520: 'PH_PERF_SEL_SC4_PA1_NULL_WE', - 521: 'PH_PERF_SEL_SC4_PA1_EVENT_WE', - 522: 'PH_PERF_SEL_SC4_PA1_FPOV_WE', - 523: 'PH_PERF_SEL_SC4_PA1_LPOV_WE', - 524: 'PH_PERF_SEL_SC4_PA1_EOP_WE', - 525: 'PH_PERF_SEL_SC4_PA1_DATA_FIFO_EOP_RD', - 526: 'PH_PERF_SEL_SC4_PA1_EOPG_WE', - 527: 'PH_PERF_SEL_SC4_PA1_DEALLOC_4_0_RD', - 528: 'PH_PERF_SEL_SC4_PA2_DATA_FIFO_RD', - 529: 'PH_PERF_SEL_SC4_PA2_DATA_FIFO_WE', - 530: 'PH_PERF_SEL_SC4_PA2_FIFO_EMPTY', - 531: 'PH_PERF_SEL_SC4_PA2_FIFO_FULL', - 532: 'PH_PERF_SEL_SC4_PA2_NULL_WE', - 533: 'PH_PERF_SEL_SC4_PA2_EVENT_WE', - 534: 'PH_PERF_SEL_SC4_PA2_FPOV_WE', - 535: 'PH_PERF_SEL_SC4_PA2_LPOV_WE', - 536: 'PH_PERF_SEL_SC4_PA2_EOP_WE', - 537: 'PH_PERF_SEL_SC4_PA2_DATA_FIFO_EOP_RD', - 538: 'PH_PERF_SEL_SC4_PA2_EOPG_WE', - 539: 'PH_PERF_SEL_SC4_PA2_DEALLOC_4_0_RD', - 540: 'PH_PERF_SEL_SC4_PA3_DATA_FIFO_RD', - 541: 'PH_PERF_SEL_SC4_PA3_DATA_FIFO_WE', - 542: 'PH_PERF_SEL_SC4_PA3_FIFO_EMPTY', - 543: 'PH_PERF_SEL_SC4_PA3_FIFO_FULL', - 544: 'PH_PERF_SEL_SC4_PA3_NULL_WE', - 545: 'PH_PERF_SEL_SC4_PA3_EVENT_WE', - 546: 'PH_PERF_SEL_SC4_PA3_FPOV_WE', - 547: 'PH_PERF_SEL_SC4_PA3_LPOV_WE', - 548: 'PH_PERF_SEL_SC4_PA3_EOP_WE', - 549: 'PH_PERF_SEL_SC4_PA3_DATA_FIFO_EOP_RD', - 550: 'PH_PERF_SEL_SC4_PA3_EOPG_WE', - 551: 'PH_PERF_SEL_SC4_PA3_DEALLOC_4_0_RD', - 552: 'PH_PERF_SEL_SC4_PA4_DATA_FIFO_RD', - 553: 'PH_PERF_SEL_SC4_PA4_DATA_FIFO_WE', - 554: 'PH_PERF_SEL_SC4_PA4_FIFO_EMPTY', - 555: 'PH_PERF_SEL_SC4_PA4_FIFO_FULL', - 556: 'PH_PERF_SEL_SC4_PA4_NULL_WE', - 557: 'PH_PERF_SEL_SC4_PA4_EVENT_WE', - 558: 'PH_PERF_SEL_SC4_PA4_FPOV_WE', - 559: 'PH_PERF_SEL_SC4_PA4_LPOV_WE', - 560: 'PH_PERF_SEL_SC4_PA4_EOP_WE', - 561: 'PH_PERF_SEL_SC4_PA4_DATA_FIFO_EOP_RD', - 562: 'PH_PERF_SEL_SC4_PA4_EOPG_WE', - 563: 'PH_PERF_SEL_SC4_PA4_DEALLOC_4_0_RD', - 564: 'PH_PERF_SEL_SC4_PA5_DATA_FIFO_RD', - 565: 'PH_PERF_SEL_SC4_PA5_DATA_FIFO_WE', - 566: 'PH_PERF_SEL_SC4_PA5_FIFO_EMPTY', - 567: 'PH_PERF_SEL_SC4_PA5_FIFO_FULL', - 568: 'PH_PERF_SEL_SC4_PA5_NULL_WE', - 569: 'PH_PERF_SEL_SC4_PA5_EVENT_WE', - 570: 'PH_PERF_SEL_SC4_PA5_FPOV_WE', - 571: 'PH_PERF_SEL_SC4_PA5_LPOV_WE', - 572: 'PH_PERF_SEL_SC4_PA5_EOP_WE', - 573: 'PH_PERF_SEL_SC4_PA5_DATA_FIFO_EOP_RD', - 574: 'PH_PERF_SEL_SC4_PA5_EOPG_WE', - 575: 'PH_PERF_SEL_SC4_PA5_DEALLOC_4_0_RD', - 576: 'PH_PERF_SEL_SC4_PA6_DATA_FIFO_RD', - 577: 'PH_PERF_SEL_SC4_PA6_DATA_FIFO_WE', - 578: 'PH_PERF_SEL_SC4_PA6_FIFO_EMPTY', - 579: 'PH_PERF_SEL_SC4_PA6_FIFO_FULL', - 580: 'PH_PERF_SEL_SC4_PA6_NULL_WE', - 581: 'PH_PERF_SEL_SC4_PA6_EVENT_WE', - 582: 'PH_PERF_SEL_SC4_PA6_FPOV_WE', - 583: 'PH_PERF_SEL_SC4_PA6_LPOV_WE', - 584: 'PH_PERF_SEL_SC4_PA6_EOP_WE', - 585: 'PH_PERF_SEL_SC4_PA6_DATA_FIFO_EOP_RD', - 586: 'PH_PERF_SEL_SC4_PA6_EOPG_WE', - 587: 'PH_PERF_SEL_SC4_PA6_DEALLOC_4_0_RD', - 588: 'PH_PERF_SEL_SC4_PA7_DATA_FIFO_RD', - 589: 'PH_PERF_SEL_SC4_PA7_DATA_FIFO_WE', - 590: 'PH_PERF_SEL_SC4_PA7_FIFO_EMPTY', - 591: 'PH_PERF_SEL_SC4_PA7_FIFO_FULL', - 592: 'PH_PERF_SEL_SC4_PA7_NULL_WE', - 593: 'PH_PERF_SEL_SC4_PA7_EVENT_WE', - 594: 'PH_PERF_SEL_SC4_PA7_FPOV_WE', - 595: 'PH_PERF_SEL_SC4_PA7_LPOV_WE', - 596: 'PH_PERF_SEL_SC4_PA7_EOP_WE', - 597: 'PH_PERF_SEL_SC4_PA7_DATA_FIFO_EOP_RD', - 598: 'PH_PERF_SEL_SC4_PA7_EOPG_WE', - 599: 'PH_PERF_SEL_SC4_PA7_DEALLOC_4_0_RD', - 600: 'PH_PERF_SEL_SC5_SRPS_WINDOW_VALID', - 601: 'PH_PERF_SEL_SC5_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 602: 'PH_PERF_SEL_SC5_ARB_XFC_ONLY_PRIM_CYCLES', - 603: 'PH_PERF_SEL_SC5_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 604: 'PH_PERF_SEL_SC5_ARB_STALLED_FROM_BELOW', - 605: 'PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE', - 606: 'PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 607: 'PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 608: 'PH_PERF_SEL_SC5_ARB_BUSY', - 609: 'PH_PERF_SEL_SC5_ARB_PA_BUSY_SOP', - 610: 'PH_PERF_SEL_SC5_ARB_EOP_POP_SYNC_POP', - 611: 'PH_PERF_SEL_SC5_ARB_EVENT_SYNC_POP', - 612: 'PH_PERF_SEL_SC5_PS_ENG_MULTICYCLE_BUBBLE', - 613: 'PH_PERF_SEL_SC5_EOP_SYNC_WINDOW', - 614: 'PH_PERF_SEL_SC5_BUSY_PROCESSING_MULTICYCLE_PRIM', - 615: 'PH_PERF_SEL_SC5_BUSY_CNT_NOT_ZERO', - 616: 'PH_PERF_SEL_SC5_SEND', - 617: 'PH_PERF_SEL_SC5_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 618: 'PH_PERF_SEL_SC5_CREDIT_AT_MAX', - 619: 'PH_PERF_SEL_SC5_CREDIT_AT_MAX_NO_PENDING_SEND', - 620: 'PH_PERF_SEL_SC5_GFX_PIPE0_TO_1_TRANSITION', - 621: 'PH_PERF_SEL_SC5_GFX_PIPE1_TO_0_TRANSITION', - 622: 'PH_PERF_SEL_SC5_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 623: 'PH_PERF_SEL_SC5_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 624: 'PH_PERF_SEL_SC5_PA0_DATA_FIFO_RD', - 625: 'PH_PERF_SEL_SC5_PA0_DATA_FIFO_WE', - 626: 'PH_PERF_SEL_SC5_PA0_FIFO_EMPTY', - 627: 'PH_PERF_SEL_SC5_PA0_FIFO_FULL', - 628: 'PH_PERF_SEL_SC5_PA0_NULL_WE', - 629: 'PH_PERF_SEL_SC5_PA0_EVENT_WE', - 630: 'PH_PERF_SEL_SC5_PA0_FPOV_WE', - 631: 'PH_PERF_SEL_SC5_PA0_LPOV_WE', - 632: 'PH_PERF_SEL_SC5_PA0_EOP_WE', - 633: 'PH_PERF_SEL_SC5_PA0_DATA_FIFO_EOP_RD', - 634: 'PH_PERF_SEL_SC5_PA0_EOPG_WE', - 635: 'PH_PERF_SEL_SC5_PA0_DEALLOC_4_0_RD', - 636: 'PH_PERF_SEL_SC5_PA1_DATA_FIFO_RD', - 637: 'PH_PERF_SEL_SC5_PA1_DATA_FIFO_WE', - 638: 'PH_PERF_SEL_SC5_PA1_FIFO_EMPTY', - 639: 'PH_PERF_SEL_SC5_PA1_FIFO_FULL', - 640: 'PH_PERF_SEL_SC5_PA1_NULL_WE', - 641: 'PH_PERF_SEL_SC5_PA1_EVENT_WE', - 642: 'PH_PERF_SEL_SC5_PA1_FPOV_WE', - 643: 'PH_PERF_SEL_SC5_PA1_LPOV_WE', - 644: 'PH_PERF_SEL_SC5_PA1_EOP_WE', - 645: 'PH_PERF_SEL_SC5_PA1_DATA_FIFO_EOP_RD', - 646: 'PH_PERF_SEL_SC5_PA1_EOPG_WE', - 647: 'PH_PERF_SEL_SC5_PA1_DEALLOC_4_0_RD', - 648: 'PH_PERF_SEL_SC5_PA2_DATA_FIFO_RD', - 649: 'PH_PERF_SEL_SC5_PA2_DATA_FIFO_WE', - 650: 'PH_PERF_SEL_SC5_PA2_FIFO_EMPTY', - 651: 'PH_PERF_SEL_SC5_PA2_FIFO_FULL', - 652: 'PH_PERF_SEL_SC5_PA2_NULL_WE', - 653: 'PH_PERF_SEL_SC5_PA2_EVENT_WE', - 654: 'PH_PERF_SEL_SC5_PA2_FPOV_WE', - 655: 'PH_PERF_SEL_SC5_PA2_LPOV_WE', - 656: 'PH_PERF_SEL_SC5_PA2_EOP_WE', - 657: 'PH_PERF_SEL_SC5_PA2_DATA_FIFO_EOP_RD', - 658: 'PH_PERF_SEL_SC5_PA2_EOPG_WE', - 659: 'PH_PERF_SEL_SC5_PA2_DEALLOC_4_0_RD', - 660: 'PH_PERF_SEL_SC5_PA3_DATA_FIFO_RD', - 661: 'PH_PERF_SEL_SC5_PA3_DATA_FIFO_WE', - 662: 'PH_PERF_SEL_SC5_PA3_FIFO_EMPTY', - 663: 'PH_PERF_SEL_SC5_PA3_FIFO_FULL', - 664: 'PH_PERF_SEL_SC5_PA3_NULL_WE', - 665: 'PH_PERF_SEL_SC5_PA3_EVENT_WE', - 666: 'PH_PERF_SEL_SC5_PA3_FPOV_WE', - 667: 'PH_PERF_SEL_SC5_PA3_LPOV_WE', - 668: 'PH_PERF_SEL_SC5_PA3_EOP_WE', - 669: 'PH_PERF_SEL_SC5_PA3_DATA_FIFO_EOP_RD', - 670: 'PH_PERF_SEL_SC5_PA3_EOPG_WE', - 671: 'PH_PERF_SEL_SC5_PA3_DEALLOC_4_0_RD', - 672: 'PH_PERF_SEL_SC5_PA4_DATA_FIFO_RD', - 673: 'PH_PERF_SEL_SC5_PA4_DATA_FIFO_WE', - 674: 'PH_PERF_SEL_SC5_PA4_FIFO_EMPTY', - 675: 'PH_PERF_SEL_SC5_PA4_FIFO_FULL', - 676: 'PH_PERF_SEL_SC5_PA4_NULL_WE', - 677: 'PH_PERF_SEL_SC5_PA4_EVENT_WE', - 678: 'PH_PERF_SEL_SC5_PA4_FPOV_WE', - 679: 'PH_PERF_SEL_SC5_PA4_LPOV_WE', - 680: 'PH_PERF_SEL_SC5_PA4_EOP_WE', - 681: 'PH_PERF_SEL_SC5_PA4_DATA_FIFO_EOP_RD', - 682: 'PH_PERF_SEL_SC5_PA4_EOPG_WE', - 683: 'PH_PERF_SEL_SC5_PA4_DEALLOC_4_0_RD', - 684: 'PH_PERF_SEL_SC5_PA5_DATA_FIFO_RD', - 685: 'PH_PERF_SEL_SC5_PA5_DATA_FIFO_WE', - 686: 'PH_PERF_SEL_SC5_PA5_FIFO_EMPTY', - 687: 'PH_PERF_SEL_SC5_PA5_FIFO_FULL', - 688: 'PH_PERF_SEL_SC5_PA5_NULL_WE', - 689: 'PH_PERF_SEL_SC5_PA5_EVENT_WE', - 690: 'PH_PERF_SEL_SC5_PA5_FPOV_WE', - 691: 'PH_PERF_SEL_SC5_PA5_LPOV_WE', - 692: 'PH_PERF_SEL_SC5_PA5_EOP_WE', - 693: 'PH_PERF_SEL_SC5_PA5_DATA_FIFO_EOP_RD', - 694: 'PH_PERF_SEL_SC5_PA5_EOPG_WE', - 695: 'PH_PERF_SEL_SC5_PA5_DEALLOC_4_0_RD', - 696: 'PH_PERF_SEL_SC5_PA6_DATA_FIFO_RD', - 697: 'PH_PERF_SEL_SC5_PA6_DATA_FIFO_WE', - 698: 'PH_PERF_SEL_SC5_PA6_FIFO_EMPTY', - 699: 'PH_PERF_SEL_SC5_PA6_FIFO_FULL', - 700: 'PH_PERF_SEL_SC5_PA6_NULL_WE', - 701: 'PH_PERF_SEL_SC5_PA6_EVENT_WE', - 702: 'PH_PERF_SEL_SC5_PA6_FPOV_WE', - 703: 'PH_PERF_SEL_SC5_PA6_LPOV_WE', - 704: 'PH_PERF_SEL_SC5_PA6_EOP_WE', - 705: 'PH_PERF_SEL_SC5_PA6_DATA_FIFO_EOP_RD', - 706: 'PH_PERF_SEL_SC5_PA6_EOPG_WE', - 707: 'PH_PERF_SEL_SC5_PA6_DEALLOC_4_0_RD', - 708: 'PH_PERF_SEL_SC5_PA7_DATA_FIFO_RD', - 709: 'PH_PERF_SEL_SC5_PA7_DATA_FIFO_WE', - 710: 'PH_PERF_SEL_SC5_PA7_FIFO_EMPTY', - 711: 'PH_PERF_SEL_SC5_PA7_FIFO_FULL', - 712: 'PH_PERF_SEL_SC5_PA7_NULL_WE', - 713: 'PH_PERF_SEL_SC5_PA7_EVENT_WE', - 714: 'PH_PERF_SEL_SC5_PA7_FPOV_WE', - 715: 'PH_PERF_SEL_SC5_PA7_LPOV_WE', - 716: 'PH_PERF_SEL_SC5_PA7_EOP_WE', - 717: 'PH_PERF_SEL_SC5_PA7_DATA_FIFO_EOP_RD', - 718: 'PH_PERF_SEL_SC5_PA7_EOPG_WE', - 719: 'PH_PERF_SEL_SC5_PA7_DEALLOC_4_0_RD', - 720: 'PH_PERF_SEL_SC6_SRPS_WINDOW_VALID', - 721: 'PH_PERF_SEL_SC6_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 722: 'PH_PERF_SEL_SC6_ARB_XFC_ONLY_PRIM_CYCLES', - 723: 'PH_PERF_SEL_SC6_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 724: 'PH_PERF_SEL_SC6_ARB_STALLED_FROM_BELOW', - 725: 'PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE', - 726: 'PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 727: 'PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 728: 'PH_PERF_SEL_SC6_ARB_BUSY', - 729: 'PH_PERF_SEL_SC6_ARB_PA_BUSY_SOP', - 730: 'PH_PERF_SEL_SC6_ARB_EOP_POP_SYNC_POP', - 731: 'PH_PERF_SEL_SC6_ARB_EVENT_SYNC_POP', - 732: 'PH_PERF_SEL_SC6_PS_ENG_MULTICYCLE_BUBBLE', - 733: 'PH_PERF_SEL_SC6_EOP_SYNC_WINDOW', - 734: 'PH_PERF_SEL_SC6_BUSY_PROCESSING_MULTICYCLE_PRIM', - 735: 'PH_PERF_SEL_SC6_BUSY_CNT_NOT_ZERO', - 736: 'PH_PERF_SEL_SC6_SEND', - 737: 'PH_PERF_SEL_SC6_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 738: 'PH_PERF_SEL_SC6_CREDIT_AT_MAX', - 739: 'PH_PERF_SEL_SC6_CREDIT_AT_MAX_NO_PENDING_SEND', - 740: 'PH_PERF_SEL_SC6_GFX_PIPE0_TO_1_TRANSITION', - 741: 'PH_PERF_SEL_SC6_GFX_PIPE1_TO_0_TRANSITION', - 742: 'PH_PERF_SEL_SC6_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 743: 'PH_PERF_SEL_SC6_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 744: 'PH_PERF_SEL_SC6_PA0_DATA_FIFO_RD', - 745: 'PH_PERF_SEL_SC6_PA0_DATA_FIFO_WE', - 746: 'PH_PERF_SEL_SC6_PA0_FIFO_EMPTY', - 747: 'PH_PERF_SEL_SC6_PA0_FIFO_FULL', - 748: 'PH_PERF_SEL_SC6_PA0_NULL_WE', - 749: 'PH_PERF_SEL_SC6_PA0_EVENT_WE', - 750: 'PH_PERF_SEL_SC6_PA0_FPOV_WE', - 751: 'PH_PERF_SEL_SC6_PA0_LPOV_WE', - 752: 'PH_PERF_SEL_SC6_PA0_EOP_WE', - 753: 'PH_PERF_SEL_SC6_PA0_DATA_FIFO_EOP_RD', - 754: 'PH_PERF_SEL_SC6_PA0_EOPG_WE', - 755: 'PH_PERF_SEL_SC6_PA0_DEALLOC_4_0_RD', - 756: 'PH_PERF_SEL_SC6_PA1_DATA_FIFO_RD', - 757: 'PH_PERF_SEL_SC6_PA1_DATA_FIFO_WE', - 758: 'PH_PERF_SEL_SC6_PA1_FIFO_EMPTY', - 759: 'PH_PERF_SEL_SC6_PA1_FIFO_FULL', - 760: 'PH_PERF_SEL_SC6_PA1_NULL_WE', - 761: 'PH_PERF_SEL_SC6_PA1_EVENT_WE', - 762: 'PH_PERF_SEL_SC6_PA1_FPOV_WE', - 763: 'PH_PERF_SEL_SC6_PA1_LPOV_WE', - 764: 'PH_PERF_SEL_SC6_PA1_EOP_WE', - 765: 'PH_PERF_SEL_SC6_PA1_DATA_FIFO_EOP_RD', - 766: 'PH_PERF_SEL_SC6_PA1_EOPG_WE', - 767: 'PH_PERF_SEL_SC6_PA1_DEALLOC_4_0_RD', - 768: 'PH_PERF_SEL_SC6_PA2_DATA_FIFO_RD', - 769: 'PH_PERF_SEL_SC6_PA2_DATA_FIFO_WE', - 770: 'PH_PERF_SEL_SC6_PA2_FIFO_EMPTY', - 771: 'PH_PERF_SEL_SC6_PA2_FIFO_FULL', - 772: 'PH_PERF_SEL_SC6_PA2_NULL_WE', - 773: 'PH_PERF_SEL_SC6_PA2_EVENT_WE', - 774: 'PH_PERF_SEL_SC6_PA2_FPOV_WE', - 775: 'PH_PERF_SEL_SC6_PA2_LPOV_WE', - 776: 'PH_PERF_SEL_SC6_PA2_EOP_WE', - 777: 'PH_PERF_SEL_SC6_PA2_DATA_FIFO_EOP_RD', - 778: 'PH_PERF_SEL_SC6_PA2_EOPG_WE', - 779: 'PH_PERF_SEL_SC6_PA2_DEALLOC_4_0_RD', - 780: 'PH_PERF_SEL_SC6_PA3_DATA_FIFO_RD', - 781: 'PH_PERF_SEL_SC6_PA3_DATA_FIFO_WE', - 782: 'PH_PERF_SEL_SC6_PA3_FIFO_EMPTY', - 783: 'PH_PERF_SEL_SC6_PA3_FIFO_FULL', - 784: 'PH_PERF_SEL_SC6_PA3_NULL_WE', - 785: 'PH_PERF_SEL_SC6_PA3_EVENT_WE', - 786: 'PH_PERF_SEL_SC6_PA3_FPOV_WE', - 787: 'PH_PERF_SEL_SC6_PA3_LPOV_WE', - 788: 'PH_PERF_SEL_SC6_PA3_EOP_WE', - 789: 'PH_PERF_SEL_SC6_PA3_DATA_FIFO_EOP_RD', - 790: 'PH_PERF_SEL_SC6_PA3_EOPG_WE', - 791: 'PH_PERF_SEL_SC6_PA3_DEALLOC_4_0_RD', - 792: 'PH_PERF_SEL_SC6_PA4_DATA_FIFO_RD', - 793: 'PH_PERF_SEL_SC6_PA4_DATA_FIFO_WE', - 794: 'PH_PERF_SEL_SC6_PA4_FIFO_EMPTY', - 795: 'PH_PERF_SEL_SC6_PA4_FIFO_FULL', - 796: 'PH_PERF_SEL_SC6_PA4_NULL_WE', - 797: 'PH_PERF_SEL_SC6_PA4_EVENT_WE', - 798: 'PH_PERF_SEL_SC6_PA4_FPOV_WE', - 799: 'PH_PERF_SEL_SC6_PA4_LPOV_WE', - 800: 'PH_PERF_SEL_SC6_PA4_EOP_WE', - 801: 'PH_PERF_SEL_SC6_PA4_DATA_FIFO_EOP_RD', - 802: 'PH_PERF_SEL_SC6_PA4_EOPG_WE', - 803: 'PH_PERF_SEL_SC6_PA4_DEALLOC_4_0_RD', - 804: 'PH_PERF_SEL_SC6_PA5_DATA_FIFO_RD', - 805: 'PH_PERF_SEL_SC6_PA5_DATA_FIFO_WE', - 806: 'PH_PERF_SEL_SC6_PA5_FIFO_EMPTY', - 807: 'PH_PERF_SEL_SC6_PA5_FIFO_FULL', - 808: 'PH_PERF_SEL_SC6_PA5_NULL_WE', - 809: 'PH_PERF_SEL_SC6_PA5_EVENT_WE', - 810: 'PH_PERF_SEL_SC6_PA5_FPOV_WE', - 811: 'PH_PERF_SEL_SC6_PA5_LPOV_WE', - 812: 'PH_PERF_SEL_SC6_PA5_EOP_WE', - 813: 'PH_PERF_SEL_SC6_PA5_DATA_FIFO_EOP_RD', - 814: 'PH_PERF_SEL_SC6_PA5_EOPG_WE', - 815: 'PH_PERF_SEL_SC6_PA5_DEALLOC_4_0_RD', - 816: 'PH_PERF_SEL_SC6_PA6_DATA_FIFO_RD', - 817: 'PH_PERF_SEL_SC6_PA6_DATA_FIFO_WE', - 818: 'PH_PERF_SEL_SC6_PA6_FIFO_EMPTY', - 819: 'PH_PERF_SEL_SC6_PA6_FIFO_FULL', - 820: 'PH_PERF_SEL_SC6_PA6_NULL_WE', - 821: 'PH_PERF_SEL_SC6_PA6_EVENT_WE', - 822: 'PH_PERF_SEL_SC6_PA6_FPOV_WE', - 823: 'PH_PERF_SEL_SC6_PA6_LPOV_WE', - 824: 'PH_PERF_SEL_SC6_PA6_EOP_WE', - 825: 'PH_PERF_SEL_SC6_PA6_DATA_FIFO_EOP_RD', - 826: 'PH_PERF_SEL_SC6_PA6_EOPG_WE', - 827: 'PH_PERF_SEL_SC6_PA6_DEALLOC_4_0_RD', - 828: 'PH_PERF_SEL_SC6_PA7_DATA_FIFO_RD', - 829: 'PH_PERF_SEL_SC6_PA7_DATA_FIFO_WE', - 830: 'PH_PERF_SEL_SC6_PA7_FIFO_EMPTY', - 831: 'PH_PERF_SEL_SC6_PA7_FIFO_FULL', - 832: 'PH_PERF_SEL_SC6_PA7_NULL_WE', - 833: 'PH_PERF_SEL_SC6_PA7_EVENT_WE', - 834: 'PH_PERF_SEL_SC6_PA7_FPOV_WE', - 835: 'PH_PERF_SEL_SC6_PA7_LPOV_WE', - 836: 'PH_PERF_SEL_SC6_PA7_EOP_WE', - 837: 'PH_PERF_SEL_SC6_PA7_DATA_FIFO_EOP_RD', - 838: 'PH_PERF_SEL_SC6_PA7_EOPG_WE', - 839: 'PH_PERF_SEL_SC6_PA7_DEALLOC_4_0_RD', - 840: 'PH_PERF_SEL_SC7_SRPS_WINDOW_VALID', - 841: 'PH_PERF_SEL_SC7_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 842: 'PH_PERF_SEL_SC7_ARB_XFC_ONLY_PRIM_CYCLES', - 843: 'PH_PERF_SEL_SC7_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 844: 'PH_PERF_SEL_SC7_ARB_STALLED_FROM_BELOW', - 845: 'PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE', - 846: 'PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 847: 'PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 848: 'PH_PERF_SEL_SC7_ARB_BUSY', - 849: 'PH_PERF_SEL_SC7_ARB_PA_BUSY_SOP', - 850: 'PH_PERF_SEL_SC7_ARB_EOP_POP_SYNC_POP', - 851: 'PH_PERF_SEL_SC7_ARB_EVENT_SYNC_POP', - 852: 'PH_PERF_SEL_SC7_PS_ENG_MULTICYCLE_BUBBLE', - 853: 'PH_PERF_SEL_SC7_EOP_SYNC_WINDOW', - 854: 'PH_PERF_SEL_SC7_BUSY_PROCESSING_MULTICYCLE_PRIM', - 855: 'PH_PERF_SEL_SC7_BUSY_CNT_NOT_ZERO', - 856: 'PH_PERF_SEL_SC7_SEND', - 857: 'PH_PERF_SEL_SC7_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 858: 'PH_PERF_SEL_SC7_CREDIT_AT_MAX', - 859: 'PH_PERF_SEL_SC7_CREDIT_AT_MAX_NO_PENDING_SEND', - 860: 'PH_PERF_SEL_SC7_GFX_PIPE0_TO_1_TRANSITION', - 861: 'PH_PERF_SEL_SC7_GFX_PIPE1_TO_0_TRANSITION', - 862: 'PH_PERF_SEL_SC7_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 863: 'PH_PERF_SEL_SC7_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 864: 'PH_PERF_SEL_SC7_PA0_DATA_FIFO_RD', - 865: 'PH_PERF_SEL_SC7_PA0_DATA_FIFO_WE', - 866: 'PH_PERF_SEL_SC7_PA0_FIFO_EMPTY', - 867: 'PH_PERF_SEL_SC7_PA0_FIFO_FULL', - 868: 'PH_PERF_SEL_SC7_PA0_NULL_WE', - 869: 'PH_PERF_SEL_SC7_PA0_EVENT_WE', - 870: 'PH_PERF_SEL_SC7_PA0_FPOV_WE', - 871: 'PH_PERF_SEL_SC7_PA0_LPOV_WE', - 872: 'PH_PERF_SEL_SC7_PA0_EOP_WE', - 873: 'PH_PERF_SEL_SC7_PA0_DATA_FIFO_EOP_RD', - 874: 'PH_PERF_SEL_SC7_PA0_EOPG_WE', - 875: 'PH_PERF_SEL_SC7_PA0_DEALLOC_4_0_RD', - 876: 'PH_PERF_SEL_SC7_PA1_DATA_FIFO_RD', - 877: 'PH_PERF_SEL_SC7_PA1_DATA_FIFO_WE', - 878: 'PH_PERF_SEL_SC7_PA1_FIFO_EMPTY', - 879: 'PH_PERF_SEL_SC7_PA1_FIFO_FULL', - 880: 'PH_PERF_SEL_SC7_PA1_NULL_WE', - 881: 'PH_PERF_SEL_SC7_PA1_EVENT_WE', - 882: 'PH_PERF_SEL_SC7_PA1_FPOV_WE', - 883: 'PH_PERF_SEL_SC7_PA1_LPOV_WE', - 884: 'PH_PERF_SEL_SC7_PA1_EOP_WE', - 885: 'PH_PERF_SEL_SC7_PA1_DATA_FIFO_EOP_RD', - 886: 'PH_PERF_SEL_SC7_PA1_EOPG_WE', - 887: 'PH_PERF_SEL_SC7_PA1_DEALLOC_4_0_RD', - 888: 'PH_PERF_SEL_SC7_PA2_DATA_FIFO_RD', - 889: 'PH_PERF_SEL_SC7_PA2_DATA_FIFO_WE', - 890: 'PH_PERF_SEL_SC7_PA2_FIFO_EMPTY', - 891: 'PH_PERF_SEL_SC7_PA2_FIFO_FULL', - 892: 'PH_PERF_SEL_SC7_PA2_NULL_WE', - 893: 'PH_PERF_SEL_SC7_PA2_EVENT_WE', - 894: 'PH_PERF_SEL_SC7_PA2_FPOV_WE', - 895: 'PH_PERF_SEL_SC7_PA2_LPOV_WE', - 896: 'PH_PERF_SEL_SC7_PA2_EOP_WE', - 897: 'PH_PERF_SEL_SC7_PA2_DATA_FIFO_EOP_RD', - 898: 'PH_PERF_SEL_SC7_PA2_EOPG_WE', - 899: 'PH_PERF_SEL_SC7_PA2_DEALLOC_4_0_RD', - 900: 'PH_PERF_SEL_SC7_PA3_DATA_FIFO_RD', - 901: 'PH_PERF_SEL_SC7_PA3_DATA_FIFO_WE', - 902: 'PH_PERF_SEL_SC7_PA3_FIFO_EMPTY', - 903: 'PH_PERF_SEL_SC7_PA3_FIFO_FULL', - 904: 'PH_PERF_SEL_SC7_PA3_NULL_WE', - 905: 'PH_PERF_SEL_SC7_PA3_EVENT_WE', - 906: 'PH_PERF_SEL_SC7_PA3_FPOV_WE', - 907: 'PH_PERF_SEL_SC7_PA3_LPOV_WE', - 908: 'PH_PERF_SEL_SC7_PA3_EOP_WE', - 909: 'PH_PERF_SEL_SC7_PA3_DATA_FIFO_EOP_RD', - 910: 'PH_PERF_SEL_SC7_PA3_EOPG_WE', - 911: 'PH_PERF_SEL_SC7_PA3_DEALLOC_4_0_RD', - 912: 'PH_PERF_SEL_SC7_PA4_DATA_FIFO_RD', - 913: 'PH_PERF_SEL_SC7_PA4_DATA_FIFO_WE', - 914: 'PH_PERF_SEL_SC7_PA4_FIFO_EMPTY', - 915: 'PH_PERF_SEL_SC7_PA4_FIFO_FULL', - 916: 'PH_PERF_SEL_SC7_PA4_NULL_WE', - 917: 'PH_PERF_SEL_SC7_PA4_EVENT_WE', - 918: 'PH_PERF_SEL_SC7_PA4_FPOV_WE', - 919: 'PH_PERF_SEL_SC7_PA4_LPOV_WE', - 920: 'PH_PERF_SEL_SC7_PA4_EOP_WE', - 921: 'PH_PERF_SEL_SC7_PA4_DATA_FIFO_EOP_RD', - 922: 'PH_PERF_SEL_SC7_PA4_EOPG_WE', - 923: 'PH_PERF_SEL_SC7_PA4_DEALLOC_4_0_RD', - 924: 'PH_PERF_SEL_SC7_PA5_DATA_FIFO_RD', - 925: 'PH_PERF_SEL_SC7_PA5_DATA_FIFO_WE', - 926: 'PH_PERF_SEL_SC7_PA5_FIFO_EMPTY', - 927: 'PH_PERF_SEL_SC7_PA5_FIFO_FULL', - 928: 'PH_PERF_SEL_SC7_PA5_NULL_WE', - 929: 'PH_PERF_SEL_SC7_PA5_EVENT_WE', - 930: 'PH_PERF_SEL_SC7_PA5_FPOV_WE', - 931: 'PH_PERF_SEL_SC7_PA5_LPOV_WE', - 932: 'PH_PERF_SEL_SC7_PA5_EOP_WE', - 933: 'PH_PERF_SEL_SC7_PA5_DATA_FIFO_EOP_RD', - 934: 'PH_PERF_SEL_SC7_PA5_EOPG_WE', - 935: 'PH_PERF_SEL_SC7_PA5_DEALLOC_4_0_RD', - 936: 'PH_PERF_SEL_SC7_PA6_DATA_FIFO_RD', - 937: 'PH_PERF_SEL_SC7_PA6_DATA_FIFO_WE', - 938: 'PH_PERF_SEL_SC7_PA6_FIFO_EMPTY', - 939: 'PH_PERF_SEL_SC7_PA6_FIFO_FULL', - 940: 'PH_PERF_SEL_SC7_PA6_NULL_WE', - 941: 'PH_PERF_SEL_SC7_PA6_EVENT_WE', - 942: 'PH_PERF_SEL_SC7_PA6_FPOV_WE', - 943: 'PH_PERF_SEL_SC7_PA6_LPOV_WE', - 944: 'PH_PERF_SEL_SC7_PA6_EOP_WE', - 945: 'PH_PERF_SEL_SC7_PA6_DATA_FIFO_EOP_RD', - 946: 'PH_PERF_SEL_SC7_PA6_EOPG_WE', - 947: 'PH_PERF_SEL_SC7_PA6_DEALLOC_4_0_RD', - 948: 'PH_PERF_SEL_SC7_PA7_DATA_FIFO_RD', - 949: 'PH_PERF_SEL_SC7_PA7_DATA_FIFO_WE', - 950: 'PH_PERF_SEL_SC7_PA7_FIFO_EMPTY', - 951: 'PH_PERF_SEL_SC7_PA7_FIFO_FULL', - 952: 'PH_PERF_SEL_SC7_PA7_NULL_WE', - 953: 'PH_PERF_SEL_SC7_PA7_EVENT_WE', - 954: 'PH_PERF_SEL_SC7_PA7_FPOV_WE', - 955: 'PH_PERF_SEL_SC7_PA7_LPOV_WE', - 956: 'PH_PERF_SEL_SC7_PA7_EOP_WE', - 957: 'PH_PERF_SEL_SC7_PA7_DATA_FIFO_EOP_RD', - 958: 'PH_PERF_SEL_SC7_PA7_EOPG_WE', - 959: 'PH_PERF_SEL_SC7_PA7_DEALLOC_4_0_RD', - 960: 'PH_PERF_SEL_1_SC_ARB_STALLED_FROM_BELOW', - 961: 'PH_PERF_SEL_2_SC_ARB_STALLED_FROM_BELOW', - 962: 'PH_PERF_SEL_3_SC_ARB_STALLED_FROM_BELOW', - 963: 'PH_PERF_SEL_4_SC_ARB_STALLED_FROM_BELOW', - 964: 'PH_PERF_SEL_5_SC_ARB_STALLED_FROM_BELOW', - 965: 'PH_PERF_SEL_6_SC_ARB_STALLED_FROM_BELOW', - 966: 'PH_PERF_SEL_7_SC_ARB_STALLED_FROM_BELOW', - 967: 'PH_PERF_SEL_8_SC_ARB_STALLED_FROM_BELOW', - 968: 'PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE', - 969: 'PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE', - 970: 'PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE', - 971: 'PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE', - 972: 'PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE', - 973: 'PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE', - 974: 'PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE', - 975: 'PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE', - 976: 'PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 977: 'PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 978: 'PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 979: 'PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 980: 'PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 981: 'PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 982: 'PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 983: 'PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 984: 'PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 985: 'PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 986: 'PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 987: 'PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 988: 'PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 989: 'PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 990: 'PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 991: 'PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 992: 'PH_PERF_SC0_FIFO_STATUS_0', - 993: 'PH_PERF_SC0_FIFO_STATUS_1', - 994: 'PH_PERF_SC0_FIFO_STATUS_2', - 995: 'PH_PERF_SC0_FIFO_STATUS_3', - 996: 'PH_PERF_SC1_FIFO_STATUS_0', - 997: 'PH_PERF_SC1_FIFO_STATUS_1', - 998: 'PH_PERF_SC1_FIFO_STATUS_2', - 999: 'PH_PERF_SC1_FIFO_STATUS_3', - 1000: 'PH_PERF_SC2_FIFO_STATUS_0', - 1001: 'PH_PERF_SC2_FIFO_STATUS_1', - 1002: 'PH_PERF_SC2_FIFO_STATUS_2', - 1003: 'PH_PERF_SC2_FIFO_STATUS_3', - 1004: 'PH_PERF_SC3_FIFO_STATUS_0', - 1005: 'PH_PERF_SC3_FIFO_STATUS_1', - 1006: 'PH_PERF_SC3_FIFO_STATUS_2', - 1007: 'PH_PERF_SC3_FIFO_STATUS_3', - 1008: 'PH_PERF_SC4_FIFO_STATUS_0', - 1009: 'PH_PERF_SC4_FIFO_STATUS_1', - 1010: 'PH_PERF_SC4_FIFO_STATUS_2', - 1011: 'PH_PERF_SC4_FIFO_STATUS_3', - 1012: 'PH_PERF_SC5_FIFO_STATUS_0', - 1013: 'PH_PERF_SC5_FIFO_STATUS_1', - 1014: 'PH_PERF_SC5_FIFO_STATUS_2', - 1015: 'PH_PERF_SC5_FIFO_STATUS_3', - 1016: 'PH_PERF_SC6_FIFO_STATUS_0', - 1017: 'PH_PERF_SC6_FIFO_STATUS_1', - 1018: 'PH_PERF_SC6_FIFO_STATUS_2', - 1019: 'PH_PERF_SC6_FIFO_STATUS_3', - 1020: 'PH_PERF_SC7_FIFO_STATUS_0', - 1021: 'PH_PERF_SC7_FIFO_STATUS_1', - 1022: 'PH_PERF_SC7_FIFO_STATUS_2', - 1023: 'PH_PERF_SC7_FIFO_STATUS_3', -} -PH_PERF_SEL_SC0_SRPS_WINDOW_VALID = 0 -PH_PERF_SEL_SC0_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 1 -PH_PERF_SEL_SC0_ARB_XFC_ONLY_PRIM_CYCLES = 2 -PH_PERF_SEL_SC0_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 3 -PH_PERF_SEL_SC0_ARB_STALLED_FROM_BELOW = 4 -PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE = 5 -PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 6 -PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 7 -PH_PERF_SEL_SC0_ARB_BUSY = 8 -PH_PERF_SEL_SC0_ARB_PA_BUSY_SOP = 9 -PH_PERF_SEL_SC0_ARB_EOP_POP_SYNC_POP = 10 -PH_PERF_SEL_SC0_ARB_EVENT_SYNC_POP = 11 -PH_PERF_SEL_SC0_PS_ENG_MULTICYCLE_BUBBLE = 12 -PH_PERF_SEL_SC0_EOP_SYNC_WINDOW = 13 -PH_PERF_SEL_SC0_BUSY_PROCESSING_MULTICYCLE_PRIM = 14 -PH_PERF_SEL_SC0_BUSY_CNT_NOT_ZERO = 15 -PH_PERF_SEL_SC0_SEND = 16 -PH_PERF_SEL_SC0_CREDIT_AT_ZERO_WITH_PENDING_SEND = 17 -PH_PERF_SEL_SC0_CREDIT_AT_MAX = 18 -PH_PERF_SEL_SC0_CREDIT_AT_MAX_NO_PENDING_SEND = 19 -PH_PERF_SEL_SC0_GFX_PIPE0_TO_1_TRANSITION = 20 -PH_PERF_SEL_SC0_GFX_PIPE1_TO_0_TRANSITION = 21 -PH_PERF_SEL_SC0_GFX_PIPE_PRIM_PROVOKED_TRANSITION = 22 -PH_PERF_SEL_SC0_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 23 -PH_PERF_SEL_SC0_PA0_DATA_FIFO_RD = 24 -PH_PERF_SEL_SC0_PA0_DATA_FIFO_WE = 25 -PH_PERF_SEL_SC0_PA0_FIFO_EMPTY = 26 -PH_PERF_SEL_SC0_PA0_FIFO_FULL = 27 -PH_PERF_SEL_SC0_PA0_NULL_WE = 28 -PH_PERF_SEL_SC0_PA0_EVENT_WE = 29 -PH_PERF_SEL_SC0_PA0_FPOV_WE = 30 -PH_PERF_SEL_SC0_PA0_LPOV_WE = 31 -PH_PERF_SEL_SC0_PA0_EOP_WE = 32 -PH_PERF_SEL_SC0_PA0_DATA_FIFO_EOP_RD = 33 -PH_PERF_SEL_SC0_PA0_EOPG_WE = 34 -PH_PERF_SEL_SC0_PA0_DEALLOC_4_0_RD = 35 -PH_PERF_SEL_SC0_PA1_DATA_FIFO_RD = 36 -PH_PERF_SEL_SC0_PA1_DATA_FIFO_WE = 37 -PH_PERF_SEL_SC0_PA1_FIFO_EMPTY = 38 -PH_PERF_SEL_SC0_PA1_FIFO_FULL = 39 -PH_PERF_SEL_SC0_PA1_NULL_WE = 40 -PH_PERF_SEL_SC0_PA1_EVENT_WE = 41 -PH_PERF_SEL_SC0_PA1_FPOV_WE = 42 -PH_PERF_SEL_SC0_PA1_LPOV_WE = 43 -PH_PERF_SEL_SC0_PA1_EOP_WE = 44 -PH_PERF_SEL_SC0_PA1_DATA_FIFO_EOP_RD = 45 -PH_PERF_SEL_SC0_PA1_EOPG_WE = 46 -PH_PERF_SEL_SC0_PA1_DEALLOC_4_0_RD = 47 -PH_PERF_SEL_SC0_PA2_DATA_FIFO_RD = 48 -PH_PERF_SEL_SC0_PA2_DATA_FIFO_WE = 49 -PH_PERF_SEL_SC0_PA2_FIFO_EMPTY = 50 -PH_PERF_SEL_SC0_PA2_FIFO_FULL = 51 -PH_PERF_SEL_SC0_PA2_NULL_WE = 52 -PH_PERF_SEL_SC0_PA2_EVENT_WE = 53 -PH_PERF_SEL_SC0_PA2_FPOV_WE = 54 -PH_PERF_SEL_SC0_PA2_LPOV_WE = 55 -PH_PERF_SEL_SC0_PA2_EOP_WE = 56 -PH_PERF_SEL_SC0_PA2_DATA_FIFO_EOP_RD = 57 -PH_PERF_SEL_SC0_PA2_EOPG_WE = 58 -PH_PERF_SEL_SC0_PA2_DEALLOC_4_0_RD = 59 -PH_PERF_SEL_SC0_PA3_DATA_FIFO_RD = 60 -PH_PERF_SEL_SC0_PA3_DATA_FIFO_WE = 61 -PH_PERF_SEL_SC0_PA3_FIFO_EMPTY = 62 -PH_PERF_SEL_SC0_PA3_FIFO_FULL = 63 -PH_PERF_SEL_SC0_PA3_NULL_WE = 64 -PH_PERF_SEL_SC0_PA3_EVENT_WE = 65 -PH_PERF_SEL_SC0_PA3_FPOV_WE = 66 -PH_PERF_SEL_SC0_PA3_LPOV_WE = 67 -PH_PERF_SEL_SC0_PA3_EOP_WE = 68 -PH_PERF_SEL_SC0_PA3_DATA_FIFO_EOP_RD = 69 -PH_PERF_SEL_SC0_PA3_EOPG_WE = 70 -PH_PERF_SEL_SC0_PA3_DEALLOC_4_0_RD = 71 -PH_PERF_SEL_SC0_PA4_DATA_FIFO_RD = 72 -PH_PERF_SEL_SC0_PA4_DATA_FIFO_WE = 73 -PH_PERF_SEL_SC0_PA4_FIFO_EMPTY = 74 -PH_PERF_SEL_SC0_PA4_FIFO_FULL = 75 -PH_PERF_SEL_SC0_PA4_NULL_WE = 76 -PH_PERF_SEL_SC0_PA4_EVENT_WE = 77 -PH_PERF_SEL_SC0_PA4_FPOV_WE = 78 -PH_PERF_SEL_SC0_PA4_LPOV_WE = 79 -PH_PERF_SEL_SC0_PA4_EOP_WE = 80 -PH_PERF_SEL_SC0_PA4_DATA_FIFO_EOP_RD = 81 -PH_PERF_SEL_SC0_PA4_EOPG_WE = 82 -PH_PERF_SEL_SC0_PA4_DEALLOC_4_0_RD = 83 -PH_PERF_SEL_SC0_PA5_DATA_FIFO_RD = 84 -PH_PERF_SEL_SC0_PA5_DATA_FIFO_WE = 85 -PH_PERF_SEL_SC0_PA5_FIFO_EMPTY = 86 -PH_PERF_SEL_SC0_PA5_FIFO_FULL = 87 -PH_PERF_SEL_SC0_PA5_NULL_WE = 88 -PH_PERF_SEL_SC0_PA5_EVENT_WE = 89 -PH_PERF_SEL_SC0_PA5_FPOV_WE = 90 -PH_PERF_SEL_SC0_PA5_LPOV_WE = 91 -PH_PERF_SEL_SC0_PA5_EOP_WE = 92 -PH_PERF_SEL_SC0_PA5_DATA_FIFO_EOP_RD = 93 -PH_PERF_SEL_SC0_PA5_EOPG_WE = 94 -PH_PERF_SEL_SC0_PA5_DEALLOC_4_0_RD = 95 -PH_PERF_SEL_SC0_PA6_DATA_FIFO_RD = 96 -PH_PERF_SEL_SC0_PA6_DATA_FIFO_WE = 97 -PH_PERF_SEL_SC0_PA6_FIFO_EMPTY = 98 -PH_PERF_SEL_SC0_PA6_FIFO_FULL = 99 -PH_PERF_SEL_SC0_PA6_NULL_WE = 100 -PH_PERF_SEL_SC0_PA6_EVENT_WE = 101 -PH_PERF_SEL_SC0_PA6_FPOV_WE = 102 -PH_PERF_SEL_SC0_PA6_LPOV_WE = 103 -PH_PERF_SEL_SC0_PA6_EOP_WE = 104 -PH_PERF_SEL_SC0_PA6_DATA_FIFO_EOP_RD = 105 -PH_PERF_SEL_SC0_PA6_EOPG_WE = 106 -PH_PERF_SEL_SC0_PA6_DEALLOC_4_0_RD = 107 -PH_PERF_SEL_SC0_PA7_DATA_FIFO_RD = 108 -PH_PERF_SEL_SC0_PA7_DATA_FIFO_WE = 109 -PH_PERF_SEL_SC0_PA7_FIFO_EMPTY = 110 -PH_PERF_SEL_SC0_PA7_FIFO_FULL = 111 -PH_PERF_SEL_SC0_PA7_NULL_WE = 112 -PH_PERF_SEL_SC0_PA7_EVENT_WE = 113 -PH_PERF_SEL_SC0_PA7_FPOV_WE = 114 -PH_PERF_SEL_SC0_PA7_LPOV_WE = 115 -PH_PERF_SEL_SC0_PA7_EOP_WE = 116 -PH_PERF_SEL_SC0_PA7_DATA_FIFO_EOP_RD = 117 -PH_PERF_SEL_SC0_PA7_EOPG_WE = 118 -PH_PERF_SEL_SC0_PA7_DEALLOC_4_0_RD = 119 -PH_PERF_SEL_SC1_SRPS_WINDOW_VALID = 120 -PH_PERF_SEL_SC1_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 121 -PH_PERF_SEL_SC1_ARB_XFC_ONLY_PRIM_CYCLES = 122 -PH_PERF_SEL_SC1_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 123 -PH_PERF_SEL_SC1_ARB_STALLED_FROM_BELOW = 124 -PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE = 125 -PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 126 -PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 127 -PH_PERF_SEL_SC1_ARB_BUSY = 128 -PH_PERF_SEL_SC1_ARB_PA_BUSY_SOP = 129 -PH_PERF_SEL_SC1_ARB_EOP_POP_SYNC_POP = 130 -PH_PERF_SEL_SC1_ARB_EVENT_SYNC_POP = 131 -PH_PERF_SEL_SC1_PS_ENG_MULTICYCLE_BUBBLE = 132 -PH_PERF_SEL_SC1_EOP_SYNC_WINDOW = 133 -PH_PERF_SEL_SC1_BUSY_PROCESSING_MULTICYCLE_PRIM = 134 -PH_PERF_SEL_SC1_BUSY_CNT_NOT_ZERO = 135 -PH_PERF_SEL_SC1_SEND = 136 -PH_PERF_SEL_SC1_CREDIT_AT_ZERO_WITH_PENDING_SEND = 137 -PH_PERF_SEL_SC1_CREDIT_AT_MAX = 138 -PH_PERF_SEL_SC1_CREDIT_AT_MAX_NO_PENDING_SEND = 139 -PH_PERF_SEL_SC1_GFX_PIPE0_TO_1_TRANSITION = 140 -PH_PERF_SEL_SC1_GFX_PIPE1_TO_0_TRANSITION = 141 -PH_PERF_SEL_SC1_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 142 -PH_PERF_SEL_SC1_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 143 -PH_PERF_SEL_SC1_PA0_DATA_FIFO_RD = 144 -PH_PERF_SEL_SC1_PA0_DATA_FIFO_WE = 145 -PH_PERF_SEL_SC1_PA0_FIFO_EMPTY = 146 -PH_PERF_SEL_SC1_PA0_FIFO_FULL = 147 -PH_PERF_SEL_SC1_PA0_NULL_WE = 148 -PH_PERF_SEL_SC1_PA0_EVENT_WE = 149 -PH_PERF_SEL_SC1_PA0_FPOV_WE = 150 -PH_PERF_SEL_SC1_PA0_LPOV_WE = 151 -PH_PERF_SEL_SC1_PA0_EOP_WE = 152 -PH_PERF_SEL_SC1_PA0_DATA_FIFO_EOP_RD = 153 -PH_PERF_SEL_SC1_PA0_EOPG_WE = 154 -PH_PERF_SEL_SC1_PA0_DEALLOC_4_0_RD = 155 -PH_PERF_SEL_SC1_PA1_DATA_FIFO_RD = 156 -PH_PERF_SEL_SC1_PA1_DATA_FIFO_WE = 157 -PH_PERF_SEL_SC1_PA1_FIFO_EMPTY = 158 -PH_PERF_SEL_SC1_PA1_FIFO_FULL = 159 -PH_PERF_SEL_SC1_PA1_NULL_WE = 160 -PH_PERF_SEL_SC1_PA1_EVENT_WE = 161 -PH_PERF_SEL_SC1_PA1_FPOV_WE = 162 -PH_PERF_SEL_SC1_PA1_LPOV_WE = 163 -PH_PERF_SEL_SC1_PA1_EOP_WE = 164 -PH_PERF_SEL_SC1_PA1_DATA_FIFO_EOP_RD = 165 -PH_PERF_SEL_SC1_PA1_EOPG_WE = 166 -PH_PERF_SEL_SC1_PA1_DEALLOC_4_0_RD = 167 -PH_PERF_SEL_SC1_PA2_DATA_FIFO_RD = 168 -PH_PERF_SEL_SC1_PA2_DATA_FIFO_WE = 169 -PH_PERF_SEL_SC1_PA2_FIFO_EMPTY = 170 -PH_PERF_SEL_SC1_PA2_FIFO_FULL = 171 -PH_PERF_SEL_SC1_PA2_NULL_WE = 172 -PH_PERF_SEL_SC1_PA2_EVENT_WE = 173 -PH_PERF_SEL_SC1_PA2_FPOV_WE = 174 -PH_PERF_SEL_SC1_PA2_LPOV_WE = 175 -PH_PERF_SEL_SC1_PA2_EOP_WE = 176 -PH_PERF_SEL_SC1_PA2_DATA_FIFO_EOP_RD = 177 -PH_PERF_SEL_SC1_PA2_EOPG_WE = 178 -PH_PERF_SEL_SC1_PA2_DEALLOC_4_0_RD = 179 -PH_PERF_SEL_SC1_PA3_DATA_FIFO_RD = 180 -PH_PERF_SEL_SC1_PA3_DATA_FIFO_WE = 181 -PH_PERF_SEL_SC1_PA3_FIFO_EMPTY = 182 -PH_PERF_SEL_SC1_PA3_FIFO_FULL = 183 -PH_PERF_SEL_SC1_PA3_NULL_WE = 184 -PH_PERF_SEL_SC1_PA3_EVENT_WE = 185 -PH_PERF_SEL_SC1_PA3_FPOV_WE = 186 -PH_PERF_SEL_SC1_PA3_LPOV_WE = 187 -PH_PERF_SEL_SC1_PA3_EOP_WE = 188 -PH_PERF_SEL_SC1_PA3_DATA_FIFO_EOP_RD = 189 -PH_PERF_SEL_SC1_PA3_EOPG_WE = 190 -PH_PERF_SEL_SC1_PA3_DEALLOC_4_0_RD = 191 -PH_PERF_SEL_SC1_PA4_DATA_FIFO_RD = 192 -PH_PERF_SEL_SC1_PA4_DATA_FIFO_WE = 193 -PH_PERF_SEL_SC1_PA4_FIFO_EMPTY = 194 -PH_PERF_SEL_SC1_PA4_FIFO_FULL = 195 -PH_PERF_SEL_SC1_PA4_NULL_WE = 196 -PH_PERF_SEL_SC1_PA4_EVENT_WE = 197 -PH_PERF_SEL_SC1_PA4_FPOV_WE = 198 -PH_PERF_SEL_SC1_PA4_LPOV_WE = 199 -PH_PERF_SEL_SC1_PA4_EOP_WE = 200 -PH_PERF_SEL_SC1_PA4_DATA_FIFO_EOP_RD = 201 -PH_PERF_SEL_SC1_PA4_EOPG_WE = 202 -PH_PERF_SEL_SC1_PA4_DEALLOC_4_0_RD = 203 -PH_PERF_SEL_SC1_PA5_DATA_FIFO_RD = 204 -PH_PERF_SEL_SC1_PA5_DATA_FIFO_WE = 205 -PH_PERF_SEL_SC1_PA5_FIFO_EMPTY = 206 -PH_PERF_SEL_SC1_PA5_FIFO_FULL = 207 -PH_PERF_SEL_SC1_PA5_NULL_WE = 208 -PH_PERF_SEL_SC1_PA5_EVENT_WE = 209 -PH_PERF_SEL_SC1_PA5_FPOV_WE = 210 -PH_PERF_SEL_SC1_PA5_LPOV_WE = 211 -PH_PERF_SEL_SC1_PA5_EOP_WE = 212 -PH_PERF_SEL_SC1_PA5_DATA_FIFO_EOP_RD = 213 -PH_PERF_SEL_SC1_PA5_EOPG_WE = 214 -PH_PERF_SEL_SC1_PA5_DEALLOC_4_0_RD = 215 -PH_PERF_SEL_SC1_PA6_DATA_FIFO_RD = 216 -PH_PERF_SEL_SC1_PA6_DATA_FIFO_WE = 217 -PH_PERF_SEL_SC1_PA6_FIFO_EMPTY = 218 -PH_PERF_SEL_SC1_PA6_FIFO_FULL = 219 -PH_PERF_SEL_SC1_PA6_NULL_WE = 220 -PH_PERF_SEL_SC1_PA6_EVENT_WE = 221 -PH_PERF_SEL_SC1_PA6_FPOV_WE = 222 -PH_PERF_SEL_SC1_PA6_LPOV_WE = 223 -PH_PERF_SEL_SC1_PA6_EOP_WE = 224 -PH_PERF_SEL_SC1_PA6_DATA_FIFO_EOP_RD = 225 -PH_PERF_SEL_SC1_PA6_EOPG_WE = 226 -PH_PERF_SEL_SC1_PA6_DEALLOC_4_0_RD = 227 -PH_PERF_SEL_SC1_PA7_DATA_FIFO_RD = 228 -PH_PERF_SEL_SC1_PA7_DATA_FIFO_WE = 229 -PH_PERF_SEL_SC1_PA7_FIFO_EMPTY = 230 -PH_PERF_SEL_SC1_PA7_FIFO_FULL = 231 -PH_PERF_SEL_SC1_PA7_NULL_WE = 232 -PH_PERF_SEL_SC1_PA7_EVENT_WE = 233 -PH_PERF_SEL_SC1_PA7_FPOV_WE = 234 -PH_PERF_SEL_SC1_PA7_LPOV_WE = 235 -PH_PERF_SEL_SC1_PA7_EOP_WE = 236 -PH_PERF_SEL_SC1_PA7_DATA_FIFO_EOP_RD = 237 -PH_PERF_SEL_SC1_PA7_EOPG_WE = 238 -PH_PERF_SEL_SC1_PA7_DEALLOC_4_0_RD = 239 -PH_PERF_SEL_SC2_SRPS_WINDOW_VALID = 240 -PH_PERF_SEL_SC2_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 241 -PH_PERF_SEL_SC2_ARB_XFC_ONLY_PRIM_CYCLES = 242 -PH_PERF_SEL_SC2_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 243 -PH_PERF_SEL_SC2_ARB_STALLED_FROM_BELOW = 244 -PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE = 245 -PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 246 -PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 247 -PH_PERF_SEL_SC2_ARB_BUSY = 248 -PH_PERF_SEL_SC2_ARB_PA_BUSY_SOP = 249 -PH_PERF_SEL_SC2_ARB_EOP_POP_SYNC_POP = 250 -PH_PERF_SEL_SC2_ARB_EVENT_SYNC_POP = 251 -PH_PERF_SEL_SC2_PS_ENG_MULTICYCLE_BUBBLE = 252 -PH_PERF_SEL_SC2_EOP_SYNC_WINDOW = 253 -PH_PERF_SEL_SC2_BUSY_PROCESSING_MULTICYCLE_PRIM = 254 -PH_PERF_SEL_SC2_BUSY_CNT_NOT_ZERO = 255 -PH_PERF_SEL_SC2_SEND = 256 -PH_PERF_SEL_SC2_CREDIT_AT_ZERO_WITH_PENDING_SEND = 257 -PH_PERF_SEL_SC2_CREDIT_AT_MAX = 258 -PH_PERF_SEL_SC2_CREDIT_AT_MAX_NO_PENDING_SEND = 259 -PH_PERF_SEL_SC2_GFX_PIPE0_TO_1_TRANSITION = 260 -PH_PERF_SEL_SC2_GFX_PIPE1_TO_0_TRANSITION = 261 -PH_PERF_SEL_SC2_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 262 -PH_PERF_SEL_SC2_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 263 -PH_PERF_SEL_SC2_PA0_DATA_FIFO_RD = 264 -PH_PERF_SEL_SC2_PA0_DATA_FIFO_WE = 265 -PH_PERF_SEL_SC2_PA0_FIFO_EMPTY = 266 -PH_PERF_SEL_SC2_PA0_FIFO_FULL = 267 -PH_PERF_SEL_SC2_PA0_NULL_WE = 268 -PH_PERF_SEL_SC2_PA0_EVENT_WE = 269 -PH_PERF_SEL_SC2_PA0_FPOV_WE = 270 -PH_PERF_SEL_SC2_PA0_LPOV_WE = 271 -PH_PERF_SEL_SC2_PA0_EOP_WE = 272 -PH_PERF_SEL_SC2_PA0_DATA_FIFO_EOP_RD = 273 -PH_PERF_SEL_SC2_PA0_EOPG_WE = 274 -PH_PERF_SEL_SC2_PA0_DEALLOC_4_0_RD = 275 -PH_PERF_SEL_SC2_PA1_DATA_FIFO_RD = 276 -PH_PERF_SEL_SC2_PA1_DATA_FIFO_WE = 277 -PH_PERF_SEL_SC2_PA1_FIFO_EMPTY = 278 -PH_PERF_SEL_SC2_PA1_FIFO_FULL = 279 -PH_PERF_SEL_SC2_PA1_NULL_WE = 280 -PH_PERF_SEL_SC2_PA1_EVENT_WE = 281 -PH_PERF_SEL_SC2_PA1_FPOV_WE = 282 -PH_PERF_SEL_SC2_PA1_LPOV_WE = 283 -PH_PERF_SEL_SC2_PA1_EOP_WE = 284 -PH_PERF_SEL_SC2_PA1_DATA_FIFO_EOP_RD = 285 -PH_PERF_SEL_SC2_PA1_EOPG_WE = 286 -PH_PERF_SEL_SC2_PA1_DEALLOC_4_0_RD = 287 -PH_PERF_SEL_SC2_PA2_DATA_FIFO_RD = 288 -PH_PERF_SEL_SC2_PA2_DATA_FIFO_WE = 289 -PH_PERF_SEL_SC2_PA2_FIFO_EMPTY = 290 -PH_PERF_SEL_SC2_PA2_FIFO_FULL = 291 -PH_PERF_SEL_SC2_PA2_NULL_WE = 292 -PH_PERF_SEL_SC2_PA2_EVENT_WE = 293 -PH_PERF_SEL_SC2_PA2_FPOV_WE = 294 -PH_PERF_SEL_SC2_PA2_LPOV_WE = 295 -PH_PERF_SEL_SC2_PA2_EOP_WE = 296 -PH_PERF_SEL_SC2_PA2_DATA_FIFO_EOP_RD = 297 -PH_PERF_SEL_SC2_PA2_EOPG_WE = 298 -PH_PERF_SEL_SC2_PA2_DEALLOC_4_0_RD = 299 -PH_PERF_SEL_SC2_PA3_DATA_FIFO_RD = 300 -PH_PERF_SEL_SC2_PA3_DATA_FIFO_WE = 301 -PH_PERF_SEL_SC2_PA3_FIFO_EMPTY = 302 -PH_PERF_SEL_SC2_PA3_FIFO_FULL = 303 -PH_PERF_SEL_SC2_PA3_NULL_WE = 304 -PH_PERF_SEL_SC2_PA3_EVENT_WE = 305 -PH_PERF_SEL_SC2_PA3_FPOV_WE = 306 -PH_PERF_SEL_SC2_PA3_LPOV_WE = 307 -PH_PERF_SEL_SC2_PA3_EOP_WE = 308 -PH_PERF_SEL_SC2_PA3_DATA_FIFO_EOP_RD = 309 -PH_PERF_SEL_SC2_PA3_EOPG_WE = 310 -PH_PERF_SEL_SC2_PA3_DEALLOC_4_0_RD = 311 -PH_PERF_SEL_SC2_PA4_DATA_FIFO_RD = 312 -PH_PERF_SEL_SC2_PA4_DATA_FIFO_WE = 313 -PH_PERF_SEL_SC2_PA4_FIFO_EMPTY = 314 -PH_PERF_SEL_SC2_PA4_FIFO_FULL = 315 -PH_PERF_SEL_SC2_PA4_NULL_WE = 316 -PH_PERF_SEL_SC2_PA4_EVENT_WE = 317 -PH_PERF_SEL_SC2_PA4_FPOV_WE = 318 -PH_PERF_SEL_SC2_PA4_LPOV_WE = 319 -PH_PERF_SEL_SC2_PA4_EOP_WE = 320 -PH_PERF_SEL_SC2_PA4_DATA_FIFO_EOP_RD = 321 -PH_PERF_SEL_SC2_PA4_EOPG_WE = 322 -PH_PERF_SEL_SC2_PA4_DEALLOC_4_0_RD = 323 -PH_PERF_SEL_SC2_PA5_DATA_FIFO_RD = 324 -PH_PERF_SEL_SC2_PA5_DATA_FIFO_WE = 325 -PH_PERF_SEL_SC2_PA5_FIFO_EMPTY = 326 -PH_PERF_SEL_SC2_PA5_FIFO_FULL = 327 -PH_PERF_SEL_SC2_PA5_NULL_WE = 328 -PH_PERF_SEL_SC2_PA5_EVENT_WE = 329 -PH_PERF_SEL_SC2_PA5_FPOV_WE = 330 -PH_PERF_SEL_SC2_PA5_LPOV_WE = 331 -PH_PERF_SEL_SC2_PA5_EOP_WE = 332 -PH_PERF_SEL_SC2_PA5_DATA_FIFO_EOP_RD = 333 -PH_PERF_SEL_SC2_PA5_EOPG_WE = 334 -PH_PERF_SEL_SC2_PA5_DEALLOC_4_0_RD = 335 -PH_PERF_SEL_SC2_PA6_DATA_FIFO_RD = 336 -PH_PERF_SEL_SC2_PA6_DATA_FIFO_WE = 337 -PH_PERF_SEL_SC2_PA6_FIFO_EMPTY = 338 -PH_PERF_SEL_SC2_PA6_FIFO_FULL = 339 -PH_PERF_SEL_SC2_PA6_NULL_WE = 340 -PH_PERF_SEL_SC2_PA6_EVENT_WE = 341 -PH_PERF_SEL_SC2_PA6_FPOV_WE = 342 -PH_PERF_SEL_SC2_PA6_LPOV_WE = 343 -PH_PERF_SEL_SC2_PA6_EOP_WE = 344 -PH_PERF_SEL_SC2_PA6_DATA_FIFO_EOP_RD = 345 -PH_PERF_SEL_SC2_PA6_EOPG_WE = 346 -PH_PERF_SEL_SC2_PA6_DEALLOC_4_0_RD = 347 -PH_PERF_SEL_SC2_PA7_DATA_FIFO_RD = 348 -PH_PERF_SEL_SC2_PA7_DATA_FIFO_WE = 349 -PH_PERF_SEL_SC2_PA7_FIFO_EMPTY = 350 -PH_PERF_SEL_SC2_PA7_FIFO_FULL = 351 -PH_PERF_SEL_SC2_PA7_NULL_WE = 352 -PH_PERF_SEL_SC2_PA7_EVENT_WE = 353 -PH_PERF_SEL_SC2_PA7_FPOV_WE = 354 -PH_PERF_SEL_SC2_PA7_LPOV_WE = 355 -PH_PERF_SEL_SC2_PA7_EOP_WE = 356 -PH_PERF_SEL_SC2_PA7_DATA_FIFO_EOP_RD = 357 -PH_PERF_SEL_SC2_PA7_EOPG_WE = 358 -PH_PERF_SEL_SC2_PA7_DEALLOC_4_0_RD = 359 -PH_PERF_SEL_SC3_SRPS_WINDOW_VALID = 360 -PH_PERF_SEL_SC3_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 361 -PH_PERF_SEL_SC3_ARB_XFC_ONLY_PRIM_CYCLES = 362 -PH_PERF_SEL_SC3_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 363 -PH_PERF_SEL_SC3_ARB_STALLED_FROM_BELOW = 364 -PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE = 365 -PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 366 -PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 367 -PH_PERF_SEL_SC3_ARB_BUSY = 368 -PH_PERF_SEL_SC3_ARB_PA_BUSY_SOP = 369 -PH_PERF_SEL_SC3_ARB_EOP_POP_SYNC_POP = 370 -PH_PERF_SEL_SC3_ARB_EVENT_SYNC_POP = 371 -PH_PERF_SEL_SC3_PS_ENG_MULTICYCLE_BUBBLE = 372 -PH_PERF_SEL_SC3_EOP_SYNC_WINDOW = 373 -PH_PERF_SEL_SC3_BUSY_PROCESSING_MULTICYCLE_PRIM = 374 -PH_PERF_SEL_SC3_BUSY_CNT_NOT_ZERO = 375 -PH_PERF_SEL_SC3_SEND = 376 -PH_PERF_SEL_SC3_CREDIT_AT_ZERO_WITH_PENDING_SEND = 377 -PH_PERF_SEL_SC3_CREDIT_AT_MAX = 378 -PH_PERF_SEL_SC3_CREDIT_AT_MAX_NO_PENDING_SEND = 379 -PH_PERF_SEL_SC3_GFX_PIPE0_TO_1_TRANSITION = 380 -PH_PERF_SEL_SC3_GFX_PIPE1_TO_0_TRANSITION = 381 -PH_PERF_SEL_SC3_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 382 -PH_PERF_SEL_SC3_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 383 -PH_PERF_SEL_SC3_PA0_DATA_FIFO_RD = 384 -PH_PERF_SEL_SC3_PA0_DATA_FIFO_WE = 385 -PH_PERF_SEL_SC3_PA0_FIFO_EMPTY = 386 -PH_PERF_SEL_SC3_PA0_FIFO_FULL = 387 -PH_PERF_SEL_SC3_PA0_NULL_WE = 388 -PH_PERF_SEL_SC3_PA0_EVENT_WE = 389 -PH_PERF_SEL_SC3_PA0_FPOV_WE = 390 -PH_PERF_SEL_SC3_PA0_LPOV_WE = 391 -PH_PERF_SEL_SC3_PA0_EOP_WE = 392 -PH_PERF_SEL_SC3_PA0_DATA_FIFO_EOP_RD = 393 -PH_PERF_SEL_SC3_PA0_EOPG_WE = 394 -PH_PERF_SEL_SC3_PA0_DEALLOC_4_0_RD = 395 -PH_PERF_SEL_SC3_PA1_DATA_FIFO_RD = 396 -PH_PERF_SEL_SC3_PA1_DATA_FIFO_WE = 397 -PH_PERF_SEL_SC3_PA1_FIFO_EMPTY = 398 -PH_PERF_SEL_SC3_PA1_FIFO_FULL = 399 -PH_PERF_SEL_SC3_PA1_NULL_WE = 400 -PH_PERF_SEL_SC3_PA1_EVENT_WE = 401 -PH_PERF_SEL_SC3_PA1_FPOV_WE = 402 -PH_PERF_SEL_SC3_PA1_LPOV_WE = 403 -PH_PERF_SEL_SC3_PA1_EOP_WE = 404 -PH_PERF_SEL_SC3_PA1_DATA_FIFO_EOP_RD = 405 -PH_PERF_SEL_SC3_PA1_EOPG_WE = 406 -PH_PERF_SEL_SC3_PA1_DEALLOC_4_0_RD = 407 -PH_PERF_SEL_SC3_PA2_DATA_FIFO_RD = 408 -PH_PERF_SEL_SC3_PA2_DATA_FIFO_WE = 409 -PH_PERF_SEL_SC3_PA2_FIFO_EMPTY = 410 -PH_PERF_SEL_SC3_PA2_FIFO_FULL = 411 -PH_PERF_SEL_SC3_PA2_NULL_WE = 412 -PH_PERF_SEL_SC3_PA2_EVENT_WE = 413 -PH_PERF_SEL_SC3_PA2_FPOV_WE = 414 -PH_PERF_SEL_SC3_PA2_LPOV_WE = 415 -PH_PERF_SEL_SC3_PA2_EOP_WE = 416 -PH_PERF_SEL_SC3_PA2_DATA_FIFO_EOP_RD = 417 -PH_PERF_SEL_SC3_PA2_EOPG_WE = 418 -PH_PERF_SEL_SC3_PA2_DEALLOC_4_0_RD = 419 -PH_PERF_SEL_SC3_PA3_DATA_FIFO_RD = 420 -PH_PERF_SEL_SC3_PA3_DATA_FIFO_WE = 421 -PH_PERF_SEL_SC3_PA3_FIFO_EMPTY = 422 -PH_PERF_SEL_SC3_PA3_FIFO_FULL = 423 -PH_PERF_SEL_SC3_PA3_NULL_WE = 424 -PH_PERF_SEL_SC3_PA3_EVENT_WE = 425 -PH_PERF_SEL_SC3_PA3_FPOV_WE = 426 -PH_PERF_SEL_SC3_PA3_LPOV_WE = 427 -PH_PERF_SEL_SC3_PA3_EOP_WE = 428 -PH_PERF_SEL_SC3_PA3_DATA_FIFO_EOP_RD = 429 -PH_PERF_SEL_SC3_PA3_EOPG_WE = 430 -PH_PERF_SEL_SC3_PA3_DEALLOC_4_0_RD = 431 -PH_PERF_SEL_SC3_PA4_DATA_FIFO_RD = 432 -PH_PERF_SEL_SC3_PA4_DATA_FIFO_WE = 433 -PH_PERF_SEL_SC3_PA4_FIFO_EMPTY = 434 -PH_PERF_SEL_SC3_PA4_FIFO_FULL = 435 -PH_PERF_SEL_SC3_PA4_NULL_WE = 436 -PH_PERF_SEL_SC3_PA4_EVENT_WE = 437 -PH_PERF_SEL_SC3_PA4_FPOV_WE = 438 -PH_PERF_SEL_SC3_PA4_LPOV_WE = 439 -PH_PERF_SEL_SC3_PA4_EOP_WE = 440 -PH_PERF_SEL_SC3_PA4_DATA_FIFO_EOP_RD = 441 -PH_PERF_SEL_SC3_PA4_EOPG_WE = 442 -PH_PERF_SEL_SC3_PA4_DEALLOC_4_0_RD = 443 -PH_PERF_SEL_SC3_PA5_DATA_FIFO_RD = 444 -PH_PERF_SEL_SC3_PA5_DATA_FIFO_WE = 445 -PH_PERF_SEL_SC3_PA5_FIFO_EMPTY = 446 -PH_PERF_SEL_SC3_PA5_FIFO_FULL = 447 -PH_PERF_SEL_SC3_PA5_NULL_WE = 448 -PH_PERF_SEL_SC3_PA5_EVENT_WE = 449 -PH_PERF_SEL_SC3_PA5_FPOV_WE = 450 -PH_PERF_SEL_SC3_PA5_LPOV_WE = 451 -PH_PERF_SEL_SC3_PA5_EOP_WE = 452 -PH_PERF_SEL_SC3_PA5_DATA_FIFO_EOP_RD = 453 -PH_PERF_SEL_SC3_PA5_EOPG_WE = 454 -PH_PERF_SEL_SC3_PA5_DEALLOC_4_0_RD = 455 -PH_PERF_SEL_SC3_PA6_DATA_FIFO_RD = 456 -PH_PERF_SEL_SC3_PA6_DATA_FIFO_WE = 457 -PH_PERF_SEL_SC3_PA6_FIFO_EMPTY = 458 -PH_PERF_SEL_SC3_PA6_FIFO_FULL = 459 -PH_PERF_SEL_SC3_PA6_NULL_WE = 460 -PH_PERF_SEL_SC3_PA6_EVENT_WE = 461 -PH_PERF_SEL_SC3_PA6_FPOV_WE = 462 -PH_PERF_SEL_SC3_PA6_LPOV_WE = 463 -PH_PERF_SEL_SC3_PA6_EOP_WE = 464 -PH_PERF_SEL_SC3_PA6_DATA_FIFO_EOP_RD = 465 -PH_PERF_SEL_SC3_PA6_EOPG_WE = 466 -PH_PERF_SEL_SC3_PA6_DEALLOC_4_0_RD = 467 -PH_PERF_SEL_SC3_PA7_DATA_FIFO_RD = 468 -PH_PERF_SEL_SC3_PA7_DATA_FIFO_WE = 469 -PH_PERF_SEL_SC3_PA7_FIFO_EMPTY = 470 -PH_PERF_SEL_SC3_PA7_FIFO_FULL = 471 -PH_PERF_SEL_SC3_PA7_NULL_WE = 472 -PH_PERF_SEL_SC3_PA7_EVENT_WE = 473 -PH_PERF_SEL_SC3_PA7_FPOV_WE = 474 -PH_PERF_SEL_SC3_PA7_LPOV_WE = 475 -PH_PERF_SEL_SC3_PA7_EOP_WE = 476 -PH_PERF_SEL_SC3_PA7_DATA_FIFO_EOP_RD = 477 -PH_PERF_SEL_SC3_PA7_EOPG_WE = 478 -PH_PERF_SEL_SC3_PA7_DEALLOC_4_0_RD = 479 -PH_PERF_SEL_SC4_SRPS_WINDOW_VALID = 480 -PH_PERF_SEL_SC4_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 481 -PH_PERF_SEL_SC4_ARB_XFC_ONLY_PRIM_CYCLES = 482 -PH_PERF_SEL_SC4_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 483 -PH_PERF_SEL_SC4_ARB_STALLED_FROM_BELOW = 484 -PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE = 485 -PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 486 -PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 487 -PH_PERF_SEL_SC4_ARB_BUSY = 488 -PH_PERF_SEL_SC4_ARB_PA_BUSY_SOP = 489 -PH_PERF_SEL_SC4_ARB_EOP_POP_SYNC_POP = 490 -PH_PERF_SEL_SC4_ARB_EVENT_SYNC_POP = 491 -PH_PERF_SEL_SC4_PS_ENG_MULTICYCLE_BUBBLE = 492 -PH_PERF_SEL_SC4_EOP_SYNC_WINDOW = 493 -PH_PERF_SEL_SC4_BUSY_PROCESSING_MULTICYCLE_PRIM = 494 -PH_PERF_SEL_SC4_BUSY_CNT_NOT_ZERO = 495 -PH_PERF_SEL_SC4_SEND = 496 -PH_PERF_SEL_SC4_CREDIT_AT_ZERO_WITH_PENDING_SEND = 497 -PH_PERF_SEL_SC4_CREDIT_AT_MAX = 498 -PH_PERF_SEL_SC4_CREDIT_AT_MAX_NO_PENDING_SEND = 499 -PH_PERF_SEL_SC4_GFX_PIPE0_TO_1_TRANSITION = 500 -PH_PERF_SEL_SC4_GFX_PIPE1_TO_0_TRANSITION = 501 -PH_PERF_SEL_SC4_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 502 -PH_PERF_SEL_SC4_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 503 -PH_PERF_SEL_SC4_PA0_DATA_FIFO_RD = 504 -PH_PERF_SEL_SC4_PA0_DATA_FIFO_WE = 505 -PH_PERF_SEL_SC4_PA0_FIFO_EMPTY = 506 -PH_PERF_SEL_SC4_PA0_FIFO_FULL = 507 -PH_PERF_SEL_SC4_PA0_NULL_WE = 508 -PH_PERF_SEL_SC4_PA0_EVENT_WE = 509 -PH_PERF_SEL_SC4_PA0_FPOV_WE = 510 -PH_PERF_SEL_SC4_PA0_LPOV_WE = 511 -PH_PERF_SEL_SC4_PA0_EOP_WE = 512 -PH_PERF_SEL_SC4_PA0_DATA_FIFO_EOP_RD = 513 -PH_PERF_SEL_SC4_PA0_EOPG_WE = 514 -PH_PERF_SEL_SC4_PA0_DEALLOC_4_0_RD = 515 -PH_PERF_SEL_SC4_PA1_DATA_FIFO_RD = 516 -PH_PERF_SEL_SC4_PA1_DATA_FIFO_WE = 517 -PH_PERF_SEL_SC4_PA1_FIFO_EMPTY = 518 -PH_PERF_SEL_SC4_PA1_FIFO_FULL = 519 -PH_PERF_SEL_SC4_PA1_NULL_WE = 520 -PH_PERF_SEL_SC4_PA1_EVENT_WE = 521 -PH_PERF_SEL_SC4_PA1_FPOV_WE = 522 -PH_PERF_SEL_SC4_PA1_LPOV_WE = 523 -PH_PERF_SEL_SC4_PA1_EOP_WE = 524 -PH_PERF_SEL_SC4_PA1_DATA_FIFO_EOP_RD = 525 -PH_PERF_SEL_SC4_PA1_EOPG_WE = 526 -PH_PERF_SEL_SC4_PA1_DEALLOC_4_0_RD = 527 -PH_PERF_SEL_SC4_PA2_DATA_FIFO_RD = 528 -PH_PERF_SEL_SC4_PA2_DATA_FIFO_WE = 529 -PH_PERF_SEL_SC4_PA2_FIFO_EMPTY = 530 -PH_PERF_SEL_SC4_PA2_FIFO_FULL = 531 -PH_PERF_SEL_SC4_PA2_NULL_WE = 532 -PH_PERF_SEL_SC4_PA2_EVENT_WE = 533 -PH_PERF_SEL_SC4_PA2_FPOV_WE = 534 -PH_PERF_SEL_SC4_PA2_LPOV_WE = 535 -PH_PERF_SEL_SC4_PA2_EOP_WE = 536 -PH_PERF_SEL_SC4_PA2_DATA_FIFO_EOP_RD = 537 -PH_PERF_SEL_SC4_PA2_EOPG_WE = 538 -PH_PERF_SEL_SC4_PA2_DEALLOC_4_0_RD = 539 -PH_PERF_SEL_SC4_PA3_DATA_FIFO_RD = 540 -PH_PERF_SEL_SC4_PA3_DATA_FIFO_WE = 541 -PH_PERF_SEL_SC4_PA3_FIFO_EMPTY = 542 -PH_PERF_SEL_SC4_PA3_FIFO_FULL = 543 -PH_PERF_SEL_SC4_PA3_NULL_WE = 544 -PH_PERF_SEL_SC4_PA3_EVENT_WE = 545 -PH_PERF_SEL_SC4_PA3_FPOV_WE = 546 -PH_PERF_SEL_SC4_PA3_LPOV_WE = 547 -PH_PERF_SEL_SC4_PA3_EOP_WE = 548 -PH_PERF_SEL_SC4_PA3_DATA_FIFO_EOP_RD = 549 -PH_PERF_SEL_SC4_PA3_EOPG_WE = 550 -PH_PERF_SEL_SC4_PA3_DEALLOC_4_0_RD = 551 -PH_PERF_SEL_SC4_PA4_DATA_FIFO_RD = 552 -PH_PERF_SEL_SC4_PA4_DATA_FIFO_WE = 553 -PH_PERF_SEL_SC4_PA4_FIFO_EMPTY = 554 -PH_PERF_SEL_SC4_PA4_FIFO_FULL = 555 -PH_PERF_SEL_SC4_PA4_NULL_WE = 556 -PH_PERF_SEL_SC4_PA4_EVENT_WE = 557 -PH_PERF_SEL_SC4_PA4_FPOV_WE = 558 -PH_PERF_SEL_SC4_PA4_LPOV_WE = 559 -PH_PERF_SEL_SC4_PA4_EOP_WE = 560 -PH_PERF_SEL_SC4_PA4_DATA_FIFO_EOP_RD = 561 -PH_PERF_SEL_SC4_PA4_EOPG_WE = 562 -PH_PERF_SEL_SC4_PA4_DEALLOC_4_0_RD = 563 -PH_PERF_SEL_SC4_PA5_DATA_FIFO_RD = 564 -PH_PERF_SEL_SC4_PA5_DATA_FIFO_WE = 565 -PH_PERF_SEL_SC4_PA5_FIFO_EMPTY = 566 -PH_PERF_SEL_SC4_PA5_FIFO_FULL = 567 -PH_PERF_SEL_SC4_PA5_NULL_WE = 568 -PH_PERF_SEL_SC4_PA5_EVENT_WE = 569 -PH_PERF_SEL_SC4_PA5_FPOV_WE = 570 -PH_PERF_SEL_SC4_PA5_LPOV_WE = 571 -PH_PERF_SEL_SC4_PA5_EOP_WE = 572 -PH_PERF_SEL_SC4_PA5_DATA_FIFO_EOP_RD = 573 -PH_PERF_SEL_SC4_PA5_EOPG_WE = 574 -PH_PERF_SEL_SC4_PA5_DEALLOC_4_0_RD = 575 -PH_PERF_SEL_SC4_PA6_DATA_FIFO_RD = 576 -PH_PERF_SEL_SC4_PA6_DATA_FIFO_WE = 577 -PH_PERF_SEL_SC4_PA6_FIFO_EMPTY = 578 -PH_PERF_SEL_SC4_PA6_FIFO_FULL = 579 -PH_PERF_SEL_SC4_PA6_NULL_WE = 580 -PH_PERF_SEL_SC4_PA6_EVENT_WE = 581 -PH_PERF_SEL_SC4_PA6_FPOV_WE = 582 -PH_PERF_SEL_SC4_PA6_LPOV_WE = 583 -PH_PERF_SEL_SC4_PA6_EOP_WE = 584 -PH_PERF_SEL_SC4_PA6_DATA_FIFO_EOP_RD = 585 -PH_PERF_SEL_SC4_PA6_EOPG_WE = 586 -PH_PERF_SEL_SC4_PA6_DEALLOC_4_0_RD = 587 -PH_PERF_SEL_SC4_PA7_DATA_FIFO_RD = 588 -PH_PERF_SEL_SC4_PA7_DATA_FIFO_WE = 589 -PH_PERF_SEL_SC4_PA7_FIFO_EMPTY = 590 -PH_PERF_SEL_SC4_PA7_FIFO_FULL = 591 -PH_PERF_SEL_SC4_PA7_NULL_WE = 592 -PH_PERF_SEL_SC4_PA7_EVENT_WE = 593 -PH_PERF_SEL_SC4_PA7_FPOV_WE = 594 -PH_PERF_SEL_SC4_PA7_LPOV_WE = 595 -PH_PERF_SEL_SC4_PA7_EOP_WE = 596 -PH_PERF_SEL_SC4_PA7_DATA_FIFO_EOP_RD = 597 -PH_PERF_SEL_SC4_PA7_EOPG_WE = 598 -PH_PERF_SEL_SC4_PA7_DEALLOC_4_0_RD = 599 -PH_PERF_SEL_SC5_SRPS_WINDOW_VALID = 600 -PH_PERF_SEL_SC5_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 601 -PH_PERF_SEL_SC5_ARB_XFC_ONLY_PRIM_CYCLES = 602 -PH_PERF_SEL_SC5_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 603 -PH_PERF_SEL_SC5_ARB_STALLED_FROM_BELOW = 604 -PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE = 605 -PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 606 -PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 607 -PH_PERF_SEL_SC5_ARB_BUSY = 608 -PH_PERF_SEL_SC5_ARB_PA_BUSY_SOP = 609 -PH_PERF_SEL_SC5_ARB_EOP_POP_SYNC_POP = 610 -PH_PERF_SEL_SC5_ARB_EVENT_SYNC_POP = 611 -PH_PERF_SEL_SC5_PS_ENG_MULTICYCLE_BUBBLE = 612 -PH_PERF_SEL_SC5_EOP_SYNC_WINDOW = 613 -PH_PERF_SEL_SC5_BUSY_PROCESSING_MULTICYCLE_PRIM = 614 -PH_PERF_SEL_SC5_BUSY_CNT_NOT_ZERO = 615 -PH_PERF_SEL_SC5_SEND = 616 -PH_PERF_SEL_SC5_CREDIT_AT_ZERO_WITH_PENDING_SEND = 617 -PH_PERF_SEL_SC5_CREDIT_AT_MAX = 618 -PH_PERF_SEL_SC5_CREDIT_AT_MAX_NO_PENDING_SEND = 619 -PH_PERF_SEL_SC5_GFX_PIPE0_TO_1_TRANSITION = 620 -PH_PERF_SEL_SC5_GFX_PIPE1_TO_0_TRANSITION = 621 -PH_PERF_SEL_SC5_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 622 -PH_PERF_SEL_SC5_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 623 -PH_PERF_SEL_SC5_PA0_DATA_FIFO_RD = 624 -PH_PERF_SEL_SC5_PA0_DATA_FIFO_WE = 625 -PH_PERF_SEL_SC5_PA0_FIFO_EMPTY = 626 -PH_PERF_SEL_SC5_PA0_FIFO_FULL = 627 -PH_PERF_SEL_SC5_PA0_NULL_WE = 628 -PH_PERF_SEL_SC5_PA0_EVENT_WE = 629 -PH_PERF_SEL_SC5_PA0_FPOV_WE = 630 -PH_PERF_SEL_SC5_PA0_LPOV_WE = 631 -PH_PERF_SEL_SC5_PA0_EOP_WE = 632 -PH_PERF_SEL_SC5_PA0_DATA_FIFO_EOP_RD = 633 -PH_PERF_SEL_SC5_PA0_EOPG_WE = 634 -PH_PERF_SEL_SC5_PA0_DEALLOC_4_0_RD = 635 -PH_PERF_SEL_SC5_PA1_DATA_FIFO_RD = 636 -PH_PERF_SEL_SC5_PA1_DATA_FIFO_WE = 637 -PH_PERF_SEL_SC5_PA1_FIFO_EMPTY = 638 -PH_PERF_SEL_SC5_PA1_FIFO_FULL = 639 -PH_PERF_SEL_SC5_PA1_NULL_WE = 640 -PH_PERF_SEL_SC5_PA1_EVENT_WE = 641 -PH_PERF_SEL_SC5_PA1_FPOV_WE = 642 -PH_PERF_SEL_SC5_PA1_LPOV_WE = 643 -PH_PERF_SEL_SC5_PA1_EOP_WE = 644 -PH_PERF_SEL_SC5_PA1_DATA_FIFO_EOP_RD = 645 -PH_PERF_SEL_SC5_PA1_EOPG_WE = 646 -PH_PERF_SEL_SC5_PA1_DEALLOC_4_0_RD = 647 -PH_PERF_SEL_SC5_PA2_DATA_FIFO_RD = 648 -PH_PERF_SEL_SC5_PA2_DATA_FIFO_WE = 649 -PH_PERF_SEL_SC5_PA2_FIFO_EMPTY = 650 -PH_PERF_SEL_SC5_PA2_FIFO_FULL = 651 -PH_PERF_SEL_SC5_PA2_NULL_WE = 652 -PH_PERF_SEL_SC5_PA2_EVENT_WE = 653 -PH_PERF_SEL_SC5_PA2_FPOV_WE = 654 -PH_PERF_SEL_SC5_PA2_LPOV_WE = 655 -PH_PERF_SEL_SC5_PA2_EOP_WE = 656 -PH_PERF_SEL_SC5_PA2_DATA_FIFO_EOP_RD = 657 -PH_PERF_SEL_SC5_PA2_EOPG_WE = 658 -PH_PERF_SEL_SC5_PA2_DEALLOC_4_0_RD = 659 -PH_PERF_SEL_SC5_PA3_DATA_FIFO_RD = 660 -PH_PERF_SEL_SC5_PA3_DATA_FIFO_WE = 661 -PH_PERF_SEL_SC5_PA3_FIFO_EMPTY = 662 -PH_PERF_SEL_SC5_PA3_FIFO_FULL = 663 -PH_PERF_SEL_SC5_PA3_NULL_WE = 664 -PH_PERF_SEL_SC5_PA3_EVENT_WE = 665 -PH_PERF_SEL_SC5_PA3_FPOV_WE = 666 -PH_PERF_SEL_SC5_PA3_LPOV_WE = 667 -PH_PERF_SEL_SC5_PA3_EOP_WE = 668 -PH_PERF_SEL_SC5_PA3_DATA_FIFO_EOP_RD = 669 -PH_PERF_SEL_SC5_PA3_EOPG_WE = 670 -PH_PERF_SEL_SC5_PA3_DEALLOC_4_0_RD = 671 -PH_PERF_SEL_SC5_PA4_DATA_FIFO_RD = 672 -PH_PERF_SEL_SC5_PA4_DATA_FIFO_WE = 673 -PH_PERF_SEL_SC5_PA4_FIFO_EMPTY = 674 -PH_PERF_SEL_SC5_PA4_FIFO_FULL = 675 -PH_PERF_SEL_SC5_PA4_NULL_WE = 676 -PH_PERF_SEL_SC5_PA4_EVENT_WE = 677 -PH_PERF_SEL_SC5_PA4_FPOV_WE = 678 -PH_PERF_SEL_SC5_PA4_LPOV_WE = 679 -PH_PERF_SEL_SC5_PA4_EOP_WE = 680 -PH_PERF_SEL_SC5_PA4_DATA_FIFO_EOP_RD = 681 -PH_PERF_SEL_SC5_PA4_EOPG_WE = 682 -PH_PERF_SEL_SC5_PA4_DEALLOC_4_0_RD = 683 -PH_PERF_SEL_SC5_PA5_DATA_FIFO_RD = 684 -PH_PERF_SEL_SC5_PA5_DATA_FIFO_WE = 685 -PH_PERF_SEL_SC5_PA5_FIFO_EMPTY = 686 -PH_PERF_SEL_SC5_PA5_FIFO_FULL = 687 -PH_PERF_SEL_SC5_PA5_NULL_WE = 688 -PH_PERF_SEL_SC5_PA5_EVENT_WE = 689 -PH_PERF_SEL_SC5_PA5_FPOV_WE = 690 -PH_PERF_SEL_SC5_PA5_LPOV_WE = 691 -PH_PERF_SEL_SC5_PA5_EOP_WE = 692 -PH_PERF_SEL_SC5_PA5_DATA_FIFO_EOP_RD = 693 -PH_PERF_SEL_SC5_PA5_EOPG_WE = 694 -PH_PERF_SEL_SC5_PA5_DEALLOC_4_0_RD = 695 -PH_PERF_SEL_SC5_PA6_DATA_FIFO_RD = 696 -PH_PERF_SEL_SC5_PA6_DATA_FIFO_WE = 697 -PH_PERF_SEL_SC5_PA6_FIFO_EMPTY = 698 -PH_PERF_SEL_SC5_PA6_FIFO_FULL = 699 -PH_PERF_SEL_SC5_PA6_NULL_WE = 700 -PH_PERF_SEL_SC5_PA6_EVENT_WE = 701 -PH_PERF_SEL_SC5_PA6_FPOV_WE = 702 -PH_PERF_SEL_SC5_PA6_LPOV_WE = 703 -PH_PERF_SEL_SC5_PA6_EOP_WE = 704 -PH_PERF_SEL_SC5_PA6_DATA_FIFO_EOP_RD = 705 -PH_PERF_SEL_SC5_PA6_EOPG_WE = 706 -PH_PERF_SEL_SC5_PA6_DEALLOC_4_0_RD = 707 -PH_PERF_SEL_SC5_PA7_DATA_FIFO_RD = 708 -PH_PERF_SEL_SC5_PA7_DATA_FIFO_WE = 709 -PH_PERF_SEL_SC5_PA7_FIFO_EMPTY = 710 -PH_PERF_SEL_SC5_PA7_FIFO_FULL = 711 -PH_PERF_SEL_SC5_PA7_NULL_WE = 712 -PH_PERF_SEL_SC5_PA7_EVENT_WE = 713 -PH_PERF_SEL_SC5_PA7_FPOV_WE = 714 -PH_PERF_SEL_SC5_PA7_LPOV_WE = 715 -PH_PERF_SEL_SC5_PA7_EOP_WE = 716 -PH_PERF_SEL_SC5_PA7_DATA_FIFO_EOP_RD = 717 -PH_PERF_SEL_SC5_PA7_EOPG_WE = 718 -PH_PERF_SEL_SC5_PA7_DEALLOC_4_0_RD = 719 -PH_PERF_SEL_SC6_SRPS_WINDOW_VALID = 720 -PH_PERF_SEL_SC6_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 721 -PH_PERF_SEL_SC6_ARB_XFC_ONLY_PRIM_CYCLES = 722 -PH_PERF_SEL_SC6_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 723 -PH_PERF_SEL_SC6_ARB_STALLED_FROM_BELOW = 724 -PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE = 725 -PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 726 -PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 727 -PH_PERF_SEL_SC6_ARB_BUSY = 728 -PH_PERF_SEL_SC6_ARB_PA_BUSY_SOP = 729 -PH_PERF_SEL_SC6_ARB_EOP_POP_SYNC_POP = 730 -PH_PERF_SEL_SC6_ARB_EVENT_SYNC_POP = 731 -PH_PERF_SEL_SC6_PS_ENG_MULTICYCLE_BUBBLE = 732 -PH_PERF_SEL_SC6_EOP_SYNC_WINDOW = 733 -PH_PERF_SEL_SC6_BUSY_PROCESSING_MULTICYCLE_PRIM = 734 -PH_PERF_SEL_SC6_BUSY_CNT_NOT_ZERO = 735 -PH_PERF_SEL_SC6_SEND = 736 -PH_PERF_SEL_SC6_CREDIT_AT_ZERO_WITH_PENDING_SEND = 737 -PH_PERF_SEL_SC6_CREDIT_AT_MAX = 738 -PH_PERF_SEL_SC6_CREDIT_AT_MAX_NO_PENDING_SEND = 739 -PH_PERF_SEL_SC6_GFX_PIPE0_TO_1_TRANSITION = 740 -PH_PERF_SEL_SC6_GFX_PIPE1_TO_0_TRANSITION = 741 -PH_PERF_SEL_SC6_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 742 -PH_PERF_SEL_SC6_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 743 -PH_PERF_SEL_SC6_PA0_DATA_FIFO_RD = 744 -PH_PERF_SEL_SC6_PA0_DATA_FIFO_WE = 745 -PH_PERF_SEL_SC6_PA0_FIFO_EMPTY = 746 -PH_PERF_SEL_SC6_PA0_FIFO_FULL = 747 -PH_PERF_SEL_SC6_PA0_NULL_WE = 748 -PH_PERF_SEL_SC6_PA0_EVENT_WE = 749 -PH_PERF_SEL_SC6_PA0_FPOV_WE = 750 -PH_PERF_SEL_SC6_PA0_LPOV_WE = 751 -PH_PERF_SEL_SC6_PA0_EOP_WE = 752 -PH_PERF_SEL_SC6_PA0_DATA_FIFO_EOP_RD = 753 -PH_PERF_SEL_SC6_PA0_EOPG_WE = 754 -PH_PERF_SEL_SC6_PA0_DEALLOC_4_0_RD = 755 -PH_PERF_SEL_SC6_PA1_DATA_FIFO_RD = 756 -PH_PERF_SEL_SC6_PA1_DATA_FIFO_WE = 757 -PH_PERF_SEL_SC6_PA1_FIFO_EMPTY = 758 -PH_PERF_SEL_SC6_PA1_FIFO_FULL = 759 -PH_PERF_SEL_SC6_PA1_NULL_WE = 760 -PH_PERF_SEL_SC6_PA1_EVENT_WE = 761 -PH_PERF_SEL_SC6_PA1_FPOV_WE = 762 -PH_PERF_SEL_SC6_PA1_LPOV_WE = 763 -PH_PERF_SEL_SC6_PA1_EOP_WE = 764 -PH_PERF_SEL_SC6_PA1_DATA_FIFO_EOP_RD = 765 -PH_PERF_SEL_SC6_PA1_EOPG_WE = 766 -PH_PERF_SEL_SC6_PA1_DEALLOC_4_0_RD = 767 -PH_PERF_SEL_SC6_PA2_DATA_FIFO_RD = 768 -PH_PERF_SEL_SC6_PA2_DATA_FIFO_WE = 769 -PH_PERF_SEL_SC6_PA2_FIFO_EMPTY = 770 -PH_PERF_SEL_SC6_PA2_FIFO_FULL = 771 -PH_PERF_SEL_SC6_PA2_NULL_WE = 772 -PH_PERF_SEL_SC6_PA2_EVENT_WE = 773 -PH_PERF_SEL_SC6_PA2_FPOV_WE = 774 -PH_PERF_SEL_SC6_PA2_LPOV_WE = 775 -PH_PERF_SEL_SC6_PA2_EOP_WE = 776 -PH_PERF_SEL_SC6_PA2_DATA_FIFO_EOP_RD = 777 -PH_PERF_SEL_SC6_PA2_EOPG_WE = 778 -PH_PERF_SEL_SC6_PA2_DEALLOC_4_0_RD = 779 -PH_PERF_SEL_SC6_PA3_DATA_FIFO_RD = 780 -PH_PERF_SEL_SC6_PA3_DATA_FIFO_WE = 781 -PH_PERF_SEL_SC6_PA3_FIFO_EMPTY = 782 -PH_PERF_SEL_SC6_PA3_FIFO_FULL = 783 -PH_PERF_SEL_SC6_PA3_NULL_WE = 784 -PH_PERF_SEL_SC6_PA3_EVENT_WE = 785 -PH_PERF_SEL_SC6_PA3_FPOV_WE = 786 -PH_PERF_SEL_SC6_PA3_LPOV_WE = 787 -PH_PERF_SEL_SC6_PA3_EOP_WE = 788 -PH_PERF_SEL_SC6_PA3_DATA_FIFO_EOP_RD = 789 -PH_PERF_SEL_SC6_PA3_EOPG_WE = 790 -PH_PERF_SEL_SC6_PA3_DEALLOC_4_0_RD = 791 -PH_PERF_SEL_SC6_PA4_DATA_FIFO_RD = 792 -PH_PERF_SEL_SC6_PA4_DATA_FIFO_WE = 793 -PH_PERF_SEL_SC6_PA4_FIFO_EMPTY = 794 -PH_PERF_SEL_SC6_PA4_FIFO_FULL = 795 -PH_PERF_SEL_SC6_PA4_NULL_WE = 796 -PH_PERF_SEL_SC6_PA4_EVENT_WE = 797 -PH_PERF_SEL_SC6_PA4_FPOV_WE = 798 -PH_PERF_SEL_SC6_PA4_LPOV_WE = 799 -PH_PERF_SEL_SC6_PA4_EOP_WE = 800 -PH_PERF_SEL_SC6_PA4_DATA_FIFO_EOP_RD = 801 -PH_PERF_SEL_SC6_PA4_EOPG_WE = 802 -PH_PERF_SEL_SC6_PA4_DEALLOC_4_0_RD = 803 -PH_PERF_SEL_SC6_PA5_DATA_FIFO_RD = 804 -PH_PERF_SEL_SC6_PA5_DATA_FIFO_WE = 805 -PH_PERF_SEL_SC6_PA5_FIFO_EMPTY = 806 -PH_PERF_SEL_SC6_PA5_FIFO_FULL = 807 -PH_PERF_SEL_SC6_PA5_NULL_WE = 808 -PH_PERF_SEL_SC6_PA5_EVENT_WE = 809 -PH_PERF_SEL_SC6_PA5_FPOV_WE = 810 -PH_PERF_SEL_SC6_PA5_LPOV_WE = 811 -PH_PERF_SEL_SC6_PA5_EOP_WE = 812 -PH_PERF_SEL_SC6_PA5_DATA_FIFO_EOP_RD = 813 -PH_PERF_SEL_SC6_PA5_EOPG_WE = 814 -PH_PERF_SEL_SC6_PA5_DEALLOC_4_0_RD = 815 -PH_PERF_SEL_SC6_PA6_DATA_FIFO_RD = 816 -PH_PERF_SEL_SC6_PA6_DATA_FIFO_WE = 817 -PH_PERF_SEL_SC6_PA6_FIFO_EMPTY = 818 -PH_PERF_SEL_SC6_PA6_FIFO_FULL = 819 -PH_PERF_SEL_SC6_PA6_NULL_WE = 820 -PH_PERF_SEL_SC6_PA6_EVENT_WE = 821 -PH_PERF_SEL_SC6_PA6_FPOV_WE = 822 -PH_PERF_SEL_SC6_PA6_LPOV_WE = 823 -PH_PERF_SEL_SC6_PA6_EOP_WE = 824 -PH_PERF_SEL_SC6_PA6_DATA_FIFO_EOP_RD = 825 -PH_PERF_SEL_SC6_PA6_EOPG_WE = 826 -PH_PERF_SEL_SC6_PA6_DEALLOC_4_0_RD = 827 -PH_PERF_SEL_SC6_PA7_DATA_FIFO_RD = 828 -PH_PERF_SEL_SC6_PA7_DATA_FIFO_WE = 829 -PH_PERF_SEL_SC6_PA7_FIFO_EMPTY = 830 -PH_PERF_SEL_SC6_PA7_FIFO_FULL = 831 -PH_PERF_SEL_SC6_PA7_NULL_WE = 832 -PH_PERF_SEL_SC6_PA7_EVENT_WE = 833 -PH_PERF_SEL_SC6_PA7_FPOV_WE = 834 -PH_PERF_SEL_SC6_PA7_LPOV_WE = 835 -PH_PERF_SEL_SC6_PA7_EOP_WE = 836 -PH_PERF_SEL_SC6_PA7_DATA_FIFO_EOP_RD = 837 -PH_PERF_SEL_SC6_PA7_EOPG_WE = 838 -PH_PERF_SEL_SC6_PA7_DEALLOC_4_0_RD = 839 -PH_PERF_SEL_SC7_SRPS_WINDOW_VALID = 840 -PH_PERF_SEL_SC7_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 841 -PH_PERF_SEL_SC7_ARB_XFC_ONLY_PRIM_CYCLES = 842 -PH_PERF_SEL_SC7_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 843 -PH_PERF_SEL_SC7_ARB_STALLED_FROM_BELOW = 844 -PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE = 845 -PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 846 -PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 847 -PH_PERF_SEL_SC7_ARB_BUSY = 848 -PH_PERF_SEL_SC7_ARB_PA_BUSY_SOP = 849 -PH_PERF_SEL_SC7_ARB_EOP_POP_SYNC_POP = 850 -PH_PERF_SEL_SC7_ARB_EVENT_SYNC_POP = 851 -PH_PERF_SEL_SC7_PS_ENG_MULTICYCLE_BUBBLE = 852 -PH_PERF_SEL_SC7_EOP_SYNC_WINDOW = 853 -PH_PERF_SEL_SC7_BUSY_PROCESSING_MULTICYCLE_PRIM = 854 -PH_PERF_SEL_SC7_BUSY_CNT_NOT_ZERO = 855 -PH_PERF_SEL_SC7_SEND = 856 -PH_PERF_SEL_SC7_CREDIT_AT_ZERO_WITH_PENDING_SEND = 857 -PH_PERF_SEL_SC7_CREDIT_AT_MAX = 858 -PH_PERF_SEL_SC7_CREDIT_AT_MAX_NO_PENDING_SEND = 859 -PH_PERF_SEL_SC7_GFX_PIPE0_TO_1_TRANSITION = 860 -PH_PERF_SEL_SC7_GFX_PIPE1_TO_0_TRANSITION = 861 -PH_PERF_SEL_SC7_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 862 -PH_PERF_SEL_SC7_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 863 -PH_PERF_SEL_SC7_PA0_DATA_FIFO_RD = 864 -PH_PERF_SEL_SC7_PA0_DATA_FIFO_WE = 865 -PH_PERF_SEL_SC7_PA0_FIFO_EMPTY = 866 -PH_PERF_SEL_SC7_PA0_FIFO_FULL = 867 -PH_PERF_SEL_SC7_PA0_NULL_WE = 868 -PH_PERF_SEL_SC7_PA0_EVENT_WE = 869 -PH_PERF_SEL_SC7_PA0_FPOV_WE = 870 -PH_PERF_SEL_SC7_PA0_LPOV_WE = 871 -PH_PERF_SEL_SC7_PA0_EOP_WE = 872 -PH_PERF_SEL_SC7_PA0_DATA_FIFO_EOP_RD = 873 -PH_PERF_SEL_SC7_PA0_EOPG_WE = 874 -PH_PERF_SEL_SC7_PA0_DEALLOC_4_0_RD = 875 -PH_PERF_SEL_SC7_PA1_DATA_FIFO_RD = 876 -PH_PERF_SEL_SC7_PA1_DATA_FIFO_WE = 877 -PH_PERF_SEL_SC7_PA1_FIFO_EMPTY = 878 -PH_PERF_SEL_SC7_PA1_FIFO_FULL = 879 -PH_PERF_SEL_SC7_PA1_NULL_WE = 880 -PH_PERF_SEL_SC7_PA1_EVENT_WE = 881 -PH_PERF_SEL_SC7_PA1_FPOV_WE = 882 -PH_PERF_SEL_SC7_PA1_LPOV_WE = 883 -PH_PERF_SEL_SC7_PA1_EOP_WE = 884 -PH_PERF_SEL_SC7_PA1_DATA_FIFO_EOP_RD = 885 -PH_PERF_SEL_SC7_PA1_EOPG_WE = 886 -PH_PERF_SEL_SC7_PA1_DEALLOC_4_0_RD = 887 -PH_PERF_SEL_SC7_PA2_DATA_FIFO_RD = 888 -PH_PERF_SEL_SC7_PA2_DATA_FIFO_WE = 889 -PH_PERF_SEL_SC7_PA2_FIFO_EMPTY = 890 -PH_PERF_SEL_SC7_PA2_FIFO_FULL = 891 -PH_PERF_SEL_SC7_PA2_NULL_WE = 892 -PH_PERF_SEL_SC7_PA2_EVENT_WE = 893 -PH_PERF_SEL_SC7_PA2_FPOV_WE = 894 -PH_PERF_SEL_SC7_PA2_LPOV_WE = 895 -PH_PERF_SEL_SC7_PA2_EOP_WE = 896 -PH_PERF_SEL_SC7_PA2_DATA_FIFO_EOP_RD = 897 -PH_PERF_SEL_SC7_PA2_EOPG_WE = 898 -PH_PERF_SEL_SC7_PA2_DEALLOC_4_0_RD = 899 -PH_PERF_SEL_SC7_PA3_DATA_FIFO_RD = 900 -PH_PERF_SEL_SC7_PA3_DATA_FIFO_WE = 901 -PH_PERF_SEL_SC7_PA3_FIFO_EMPTY = 902 -PH_PERF_SEL_SC7_PA3_FIFO_FULL = 903 -PH_PERF_SEL_SC7_PA3_NULL_WE = 904 -PH_PERF_SEL_SC7_PA3_EVENT_WE = 905 -PH_PERF_SEL_SC7_PA3_FPOV_WE = 906 -PH_PERF_SEL_SC7_PA3_LPOV_WE = 907 -PH_PERF_SEL_SC7_PA3_EOP_WE = 908 -PH_PERF_SEL_SC7_PA3_DATA_FIFO_EOP_RD = 909 -PH_PERF_SEL_SC7_PA3_EOPG_WE = 910 -PH_PERF_SEL_SC7_PA3_DEALLOC_4_0_RD = 911 -PH_PERF_SEL_SC7_PA4_DATA_FIFO_RD = 912 -PH_PERF_SEL_SC7_PA4_DATA_FIFO_WE = 913 -PH_PERF_SEL_SC7_PA4_FIFO_EMPTY = 914 -PH_PERF_SEL_SC7_PA4_FIFO_FULL = 915 -PH_PERF_SEL_SC7_PA4_NULL_WE = 916 -PH_PERF_SEL_SC7_PA4_EVENT_WE = 917 -PH_PERF_SEL_SC7_PA4_FPOV_WE = 918 -PH_PERF_SEL_SC7_PA4_LPOV_WE = 919 -PH_PERF_SEL_SC7_PA4_EOP_WE = 920 -PH_PERF_SEL_SC7_PA4_DATA_FIFO_EOP_RD = 921 -PH_PERF_SEL_SC7_PA4_EOPG_WE = 922 -PH_PERF_SEL_SC7_PA4_DEALLOC_4_0_RD = 923 -PH_PERF_SEL_SC7_PA5_DATA_FIFO_RD = 924 -PH_PERF_SEL_SC7_PA5_DATA_FIFO_WE = 925 -PH_PERF_SEL_SC7_PA5_FIFO_EMPTY = 926 -PH_PERF_SEL_SC7_PA5_FIFO_FULL = 927 -PH_PERF_SEL_SC7_PA5_NULL_WE = 928 -PH_PERF_SEL_SC7_PA5_EVENT_WE = 929 -PH_PERF_SEL_SC7_PA5_FPOV_WE = 930 -PH_PERF_SEL_SC7_PA5_LPOV_WE = 931 -PH_PERF_SEL_SC7_PA5_EOP_WE = 932 -PH_PERF_SEL_SC7_PA5_DATA_FIFO_EOP_RD = 933 -PH_PERF_SEL_SC7_PA5_EOPG_WE = 934 -PH_PERF_SEL_SC7_PA5_DEALLOC_4_0_RD = 935 -PH_PERF_SEL_SC7_PA6_DATA_FIFO_RD = 936 -PH_PERF_SEL_SC7_PA6_DATA_FIFO_WE = 937 -PH_PERF_SEL_SC7_PA6_FIFO_EMPTY = 938 -PH_PERF_SEL_SC7_PA6_FIFO_FULL = 939 -PH_PERF_SEL_SC7_PA6_NULL_WE = 940 -PH_PERF_SEL_SC7_PA6_EVENT_WE = 941 -PH_PERF_SEL_SC7_PA6_FPOV_WE = 942 -PH_PERF_SEL_SC7_PA6_LPOV_WE = 943 -PH_PERF_SEL_SC7_PA6_EOP_WE = 944 -PH_PERF_SEL_SC7_PA6_DATA_FIFO_EOP_RD = 945 -PH_PERF_SEL_SC7_PA6_EOPG_WE = 946 -PH_PERF_SEL_SC7_PA6_DEALLOC_4_0_RD = 947 -PH_PERF_SEL_SC7_PA7_DATA_FIFO_RD = 948 -PH_PERF_SEL_SC7_PA7_DATA_FIFO_WE = 949 -PH_PERF_SEL_SC7_PA7_FIFO_EMPTY = 950 -PH_PERF_SEL_SC7_PA7_FIFO_FULL = 951 -PH_PERF_SEL_SC7_PA7_NULL_WE = 952 -PH_PERF_SEL_SC7_PA7_EVENT_WE = 953 -PH_PERF_SEL_SC7_PA7_FPOV_WE = 954 -PH_PERF_SEL_SC7_PA7_LPOV_WE = 955 -PH_PERF_SEL_SC7_PA7_EOP_WE = 956 -PH_PERF_SEL_SC7_PA7_DATA_FIFO_EOP_RD = 957 -PH_PERF_SEL_SC7_PA7_EOPG_WE = 958 -PH_PERF_SEL_SC7_PA7_DEALLOC_4_0_RD = 959 -PH_PERF_SEL_1_SC_ARB_STALLED_FROM_BELOW = 960 -PH_PERF_SEL_2_SC_ARB_STALLED_FROM_BELOW = 961 -PH_PERF_SEL_3_SC_ARB_STALLED_FROM_BELOW = 962 -PH_PERF_SEL_4_SC_ARB_STALLED_FROM_BELOW = 963 -PH_PERF_SEL_5_SC_ARB_STALLED_FROM_BELOW = 964 -PH_PERF_SEL_6_SC_ARB_STALLED_FROM_BELOW = 965 -PH_PERF_SEL_7_SC_ARB_STALLED_FROM_BELOW = 966 -PH_PERF_SEL_8_SC_ARB_STALLED_FROM_BELOW = 967 -PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE = 968 -PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE = 969 -PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE = 970 -PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE = 971 -PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE = 972 -PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE = 973 -PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE = 974 -PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE = 975 -PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 976 -PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 977 -PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 978 -PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 979 -PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 980 -PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 981 -PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 982 -PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 983 -PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 984 -PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 985 -PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 986 -PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 987 -PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 988 -PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 989 -PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 990 -PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 991 -PH_PERF_SC0_FIFO_STATUS_0 = 992 -PH_PERF_SC0_FIFO_STATUS_1 = 993 -PH_PERF_SC0_FIFO_STATUS_2 = 994 -PH_PERF_SC0_FIFO_STATUS_3 = 995 -PH_PERF_SC1_FIFO_STATUS_0 = 996 -PH_PERF_SC1_FIFO_STATUS_1 = 997 -PH_PERF_SC1_FIFO_STATUS_2 = 998 -PH_PERF_SC1_FIFO_STATUS_3 = 999 -PH_PERF_SC2_FIFO_STATUS_0 = 1000 -PH_PERF_SC2_FIFO_STATUS_1 = 1001 -PH_PERF_SC2_FIFO_STATUS_2 = 1002 -PH_PERF_SC2_FIFO_STATUS_3 = 1003 -PH_PERF_SC3_FIFO_STATUS_0 = 1004 -PH_PERF_SC3_FIFO_STATUS_1 = 1005 -PH_PERF_SC3_FIFO_STATUS_2 = 1006 -PH_PERF_SC3_FIFO_STATUS_3 = 1007 -PH_PERF_SC4_FIFO_STATUS_0 = 1008 -PH_PERF_SC4_FIFO_STATUS_1 = 1009 -PH_PERF_SC4_FIFO_STATUS_2 = 1010 -PH_PERF_SC4_FIFO_STATUS_3 = 1011 -PH_PERF_SC5_FIFO_STATUS_0 = 1012 -PH_PERF_SC5_FIFO_STATUS_1 = 1013 -PH_PERF_SC5_FIFO_STATUS_2 = 1014 -PH_PERF_SC5_FIFO_STATUS_3 = 1015 -PH_PERF_SC6_FIFO_STATUS_0 = 1016 -PH_PERF_SC6_FIFO_STATUS_1 = 1017 -PH_PERF_SC6_FIFO_STATUS_2 = 1018 -PH_PERF_SC6_FIFO_STATUS_3 = 1019 -PH_PERF_SC7_FIFO_STATUS_0 = 1020 -PH_PERF_SC7_FIFO_STATUS_1 = 1021 -PH_PERF_SC7_FIFO_STATUS_2 = 1022 -PH_PERF_SC7_FIFO_STATUS_3 = 1023 -PH_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PhSPIstatusMode' -PhSPIstatusMode__enumvalues = { - 0: 'PH_SPI_MODE_LARGEST_PA_PH_FIFO_COUNT', - 1: 'PH_SPI_MODE_ARBITER_SELECTED_PA_PH_FIFO_COUNT', - 2: 'PH_SPI_MODE_DISABLED', -} -PH_SPI_MODE_LARGEST_PA_PH_FIFO_COUNT = 0 -PH_SPI_MODE_ARBITER_SELECTED_PA_PH_FIFO_COUNT = 1 -PH_SPI_MODE_DISABLED = 2 -PhSPIstatusMode = ctypes.c_uint32 # enum - -# values for enumeration 'RMIPerfSel' -RMIPerfSel__enumvalues = { - 0: 'RMI_PERF_SEL_RB_RMI_WRREQ_ALL_CID', - 1: 'RMI_PERF_SEL_RB_RMI_RDREQ_ALL_CID', -} -RMI_PERF_SEL_RB_RMI_WRREQ_ALL_CID = 0 -RMI_PERF_SEL_RB_RMI_RDREQ_ALL_CID = 1 -RMIPerfSel = ctypes.c_uint32 # enum - -# values for enumeration 'GCRPerfSel' -GCRPerfSel__enumvalues = { - 0: 'GCR_PERF_SEL_NONE', - 1: 'GCR_PERF_SEL_SDMA0_ALL_REQ', - 2: 'GCR_PERF_SEL_SDMA0_GL2_RANGE_REQ', - 3: 'GCR_PERF_SEL_SDMA0_GL2_RANGE_LT16K_REQ', - 4: 'GCR_PERF_SEL_SDMA0_GL2_RANGE_16K_REQ', - 5: 'GCR_PERF_SEL_SDMA0_GL2_RANGE_GT16K_REQ', - 6: 'GCR_PERF_SEL_SDMA0_GL2_ALL_REQ', - 7: 'GCR_PERF_SEL_SDMA0_GL1_RANGE_REQ', - 8: 'GCR_PERF_SEL_SDMA0_GL1_RANGE_LT16K_REQ', - 9: 'GCR_PERF_SEL_SDMA0_GL1_RANGE_16K_REQ', - 10: 'GCR_PERF_SEL_SDMA0_GL1_RANGE_GT16K_REQ', - 11: 'GCR_PERF_SEL_SDMA0_GL1_ALL_REQ', - 12: 'GCR_PERF_SEL_SDMA0_METADATA_REQ', - 13: 'GCR_PERF_SEL_SDMA0_SQC_DATA_REQ', - 14: 'GCR_PERF_SEL_SDMA0_SQC_INST_REQ', - 15: 'GCR_PERF_SEL_SDMA0_TCP_REQ', - 16: 'GCR_PERF_SEL_SDMA0_TCP_TLB_SHOOTDOWN_REQ', - 17: 'GCR_PERF_SEL_SDMA1_ALL_REQ', - 18: 'GCR_PERF_SEL_SDMA1_GL2_RANGE_REQ', - 19: 'GCR_PERF_SEL_SDMA1_GL2_RANGE_LT16K_REQ', - 20: 'GCR_PERF_SEL_SDMA1_GL2_RANGE_16K_REQ', - 21: 'GCR_PERF_SEL_SDMA1_GL2_RANGE_GT16K_REQ', - 22: 'GCR_PERF_SEL_SDMA1_GL2_ALL_REQ', - 23: 'GCR_PERF_SEL_SDMA1_GL1_RANGE_REQ', - 24: 'GCR_PERF_SEL_SDMA1_GL1_RANGE_LT16K_REQ', - 25: 'GCR_PERF_SEL_SDMA1_GL1_RANGE_16K_REQ', - 26: 'GCR_PERF_SEL_SDMA1_GL1_RANGE_GT16K_REQ', - 27: 'GCR_PERF_SEL_SDMA1_GL1_ALL_REQ', - 28: 'GCR_PERF_SEL_SDMA1_METADATA_REQ', - 29: 'GCR_PERF_SEL_SDMA1_SQC_DATA_REQ', - 30: 'GCR_PERF_SEL_SDMA1_SQC_INST_REQ', - 31: 'GCR_PERF_SEL_SDMA1_TCP_REQ', - 32: 'GCR_PERF_SEL_SDMA1_TCP_TLB_SHOOTDOWN_REQ', - 33: 'GCR_PERF_SEL_CPC_ALL_REQ', - 34: 'GCR_PERF_SEL_CPC_GL2_RANGE_REQ', - 35: 'GCR_PERF_SEL_CPC_GL2_RANGE_LT16K_REQ', - 36: 'GCR_PERF_SEL_CPC_GL2_RANGE_16K_REQ', - 37: 'GCR_PERF_SEL_CPC_GL2_RANGE_GT16K_REQ', - 38: 'GCR_PERF_SEL_CPC_GL2_ALL_REQ', - 39: 'GCR_PERF_SEL_CPC_GL1_RANGE_REQ', - 40: 'GCR_PERF_SEL_CPC_GL1_RANGE_LT16K_REQ', - 41: 'GCR_PERF_SEL_CPC_GL1_RANGE_16K_REQ', - 42: 'GCR_PERF_SEL_CPC_GL1_RANGE_GT16K_REQ', - 43: 'GCR_PERF_SEL_CPC_GL1_ALL_REQ', - 44: 'GCR_PERF_SEL_CPC_METADATA_REQ', - 45: 'GCR_PERF_SEL_CPC_SQC_DATA_REQ', - 46: 'GCR_PERF_SEL_CPC_SQC_INST_REQ', - 47: 'GCR_PERF_SEL_CPC_TCP_REQ', - 48: 'GCR_PERF_SEL_CPC_TCP_TLB_SHOOTDOWN_REQ', - 49: 'GCR_PERF_SEL_CPG_ALL_REQ', - 50: 'GCR_PERF_SEL_CPG_GL2_RANGE_REQ', - 51: 'GCR_PERF_SEL_CPG_GL2_RANGE_LT16K_REQ', - 52: 'GCR_PERF_SEL_CPG_GL2_RANGE_16K_REQ', - 53: 'GCR_PERF_SEL_CPG_GL2_RANGE_GT16K_REQ', - 54: 'GCR_PERF_SEL_CPG_GL2_ALL_REQ', - 55: 'GCR_PERF_SEL_CPG_GL1_RANGE_REQ', - 56: 'GCR_PERF_SEL_CPG_GL1_RANGE_LT16K_REQ', - 57: 'GCR_PERF_SEL_CPG_GL1_RANGE_16K_REQ', - 58: 'GCR_PERF_SEL_CPG_GL1_RANGE_GT16K_REQ', - 59: 'GCR_PERF_SEL_CPG_GL1_ALL_REQ', - 60: 'GCR_PERF_SEL_CPG_METADATA_REQ', - 61: 'GCR_PERF_SEL_CPG_SQC_DATA_REQ', - 62: 'GCR_PERF_SEL_CPG_SQC_INST_REQ', - 63: 'GCR_PERF_SEL_CPG_TCP_REQ', - 64: 'GCR_PERF_SEL_CPG_TCP_TLB_SHOOTDOWN_REQ', - 65: 'GCR_PERF_SEL_CPF_ALL_REQ', - 66: 'GCR_PERF_SEL_CPF_GL2_RANGE_REQ', - 67: 'GCR_PERF_SEL_CPF_GL2_RANGE_LT16K_REQ', - 68: 'GCR_PERF_SEL_CPF_GL2_RANGE_16K_REQ', - 69: 'GCR_PERF_SEL_CPF_GL2_RANGE_GT16K_REQ', - 70: 'GCR_PERF_SEL_CPF_GL2_ALL_REQ', - 71: 'GCR_PERF_SEL_CPF_GL1_RANGE_REQ', - 72: 'GCR_PERF_SEL_CPF_GL1_RANGE_LT16K_REQ', - 73: 'GCR_PERF_SEL_CPF_GL1_RANGE_16K_REQ', - 74: 'GCR_PERF_SEL_CPF_GL1_RANGE_GT16K_REQ', - 75: 'GCR_PERF_SEL_CPF_GL1_ALL_REQ', - 76: 'GCR_PERF_SEL_CPF_METADATA_REQ', - 77: 'GCR_PERF_SEL_CPF_SQC_DATA_REQ', - 78: 'GCR_PERF_SEL_CPF_SQC_INST_REQ', - 79: 'GCR_PERF_SEL_CPF_TCP_REQ', - 80: 'GCR_PERF_SEL_CPF_TCP_TLB_SHOOTDOWN_REQ', - 81: 'GCR_PERF_SEL_VIRT_REQ', - 82: 'GCR_PERF_SEL_PHY_REQ', - 83: 'GCR_PERF_SEL_TLB_SHOOTDOWN_HEAVY_REQ', - 84: 'GCR_PERF_SEL_TLB_SHOOTDOWN_LIGHT_REQ', - 85: 'GCR_PERF_SEL_ALL_REQ', - 86: 'GCR_PERF_SEL_CLK_FOR_PHY_OUTSTANDING_REQ', - 87: 'GCR_PERF_SEL_CLK_FOR_VIRT_OUTSTANDING_REQ', - 88: 'GCR_PERF_SEL_CLK_FOR_ALL_OUTSTANDING_REQ', - 89: 'GCR_PERF_SEL_UTCL2_REQ', - 90: 'GCR_PERF_SEL_UTCL2_RET', - 91: 'GCR_PERF_SEL_UTCL2_OUT_OF_CREDIT_EVENT', - 92: 'GCR_PERF_SEL_UTCL2_INFLIGHT_REQ', - 93: 'GCR_PERF_SEL_UTCL2_FILTERED_RET', - 94: 'GCR_PERF_SEL_RLC_ALL_REQ', - 95: 'GCR_PERF_SEL_RLC_GL2_RANGE_REQ', - 96: 'GCR_PERF_SEL_RLC_GL2_RANGE_LT16K_REQ', - 97: 'GCR_PERF_SEL_RLC_GL2_RANGE_16K_REQ', - 98: 'GCR_PERF_SEL_RLC_GL2_RANGE_GT16K_REQ', - 99: 'GCR_PERF_SEL_RLC_GL2_ALL_REQ', - 100: 'GCR_PERF_SEL_RLC_GL1_RANGE_REQ', - 101: 'GCR_PERF_SEL_RLC_GL1_RANGE_LT16K_REQ', - 102: 'GCR_PERF_SEL_RLC_GL1_RANGE_16K_REQ', - 103: 'GCR_PERF_SEL_RLC_GL1_RANGE_GT16K_REQ', - 104: 'GCR_PERF_SEL_RLC_GL1_ALL_REQ', - 105: 'GCR_PERF_SEL_RLC_METADATA_REQ', - 106: 'GCR_PERF_SEL_RLC_SQC_DATA_REQ', - 107: 'GCR_PERF_SEL_RLC_SQC_INST_REQ', - 108: 'GCR_PERF_SEL_RLC_TCP_REQ', - 109: 'GCR_PERF_SEL_RLC_TCP_TLB_SHOOTDOWN_REQ', - 110: 'GCR_PERF_SEL_PM_ALL_REQ', - 111: 'GCR_PERF_SEL_PM_GL2_RANGE_REQ', - 112: 'GCR_PERF_SEL_PM_GL2_RANGE_LT16K_REQ', - 113: 'GCR_PERF_SEL_PM_GL2_RANGE_16K_REQ', - 114: 'GCR_PERF_SEL_PM_GL2_RANGE_GT16K_REQ', - 115: 'GCR_PERF_SEL_PM_GL2_ALL_REQ', - 116: 'GCR_PERF_SEL_PM_GL1_RANGE_REQ', - 117: 'GCR_PERF_SEL_PM_GL1_RANGE_LT16K_REQ', - 118: 'GCR_PERF_SEL_PM_GL1_RANGE_16K_REQ', - 119: 'GCR_PERF_SEL_PM_GL1_RANGE_GT16K_REQ', - 120: 'GCR_PERF_SEL_PM_GL1_ALL_REQ', - 121: 'GCR_PERF_SEL_PM_METADATA_REQ', - 122: 'GCR_PERF_SEL_PM_SQC_DATA_REQ', - 123: 'GCR_PERF_SEL_PM_SQC_INST_REQ', - 124: 'GCR_PERF_SEL_PM_TCP_REQ', - 125: 'GCR_PERF_SEL_PM_TCP_TLB_SHOOTDOWN_REQ', - 126: 'GCR_PERF_SEL_PIO_ALL_REQ', - 127: 'GCR_PERF_SEL_PIO_GL2_RANGE_REQ', - 128: 'GCR_PERF_SEL_PIO_GL2_RANGE_LT16K_REQ', - 129: 'GCR_PERF_SEL_PIO_GL2_RANGE_16K_REQ', - 130: 'GCR_PERF_SEL_PIO_GL2_RANGE_GT16K_REQ', - 131: 'GCR_PERF_SEL_PIO_GL2_ALL_REQ', - 132: 'GCR_PERF_SEL_PIO_GL1_RANGE_REQ', - 133: 'GCR_PERF_SEL_PIO_GL1_RANGE_LT16K_REQ', - 134: 'GCR_PERF_SEL_PIO_GL1_RANGE_16K_REQ', - 135: 'GCR_PERF_SEL_PIO_GL1_RANGE_GT16K_REQ', - 136: 'GCR_PERF_SEL_PIO_GL1_ALL_REQ', - 137: 'GCR_PERF_SEL_PIO_METADATA_REQ', - 138: 'GCR_PERF_SEL_PIO_SQC_DATA_REQ', - 139: 'GCR_PERF_SEL_PIO_SQC_INST_REQ', - 140: 'GCR_PERF_SEL_PIO_TCP_REQ', - 141: 'GCR_PERF_SEL_PIO_TCP_TLB_SHOOTDOWN_REQ', -} -GCR_PERF_SEL_NONE = 0 -GCR_PERF_SEL_SDMA0_ALL_REQ = 1 -GCR_PERF_SEL_SDMA0_GL2_RANGE_REQ = 2 -GCR_PERF_SEL_SDMA0_GL2_RANGE_LT16K_REQ = 3 -GCR_PERF_SEL_SDMA0_GL2_RANGE_16K_REQ = 4 -GCR_PERF_SEL_SDMA0_GL2_RANGE_GT16K_REQ = 5 -GCR_PERF_SEL_SDMA0_GL2_ALL_REQ = 6 -GCR_PERF_SEL_SDMA0_GL1_RANGE_REQ = 7 -GCR_PERF_SEL_SDMA0_GL1_RANGE_LT16K_REQ = 8 -GCR_PERF_SEL_SDMA0_GL1_RANGE_16K_REQ = 9 -GCR_PERF_SEL_SDMA0_GL1_RANGE_GT16K_REQ = 10 -GCR_PERF_SEL_SDMA0_GL1_ALL_REQ = 11 -GCR_PERF_SEL_SDMA0_METADATA_REQ = 12 -GCR_PERF_SEL_SDMA0_SQC_DATA_REQ = 13 -GCR_PERF_SEL_SDMA0_SQC_INST_REQ = 14 -GCR_PERF_SEL_SDMA0_TCP_REQ = 15 -GCR_PERF_SEL_SDMA0_TCP_TLB_SHOOTDOWN_REQ = 16 -GCR_PERF_SEL_SDMA1_ALL_REQ = 17 -GCR_PERF_SEL_SDMA1_GL2_RANGE_REQ = 18 -GCR_PERF_SEL_SDMA1_GL2_RANGE_LT16K_REQ = 19 -GCR_PERF_SEL_SDMA1_GL2_RANGE_16K_REQ = 20 -GCR_PERF_SEL_SDMA1_GL2_RANGE_GT16K_REQ = 21 -GCR_PERF_SEL_SDMA1_GL2_ALL_REQ = 22 -GCR_PERF_SEL_SDMA1_GL1_RANGE_REQ = 23 -GCR_PERF_SEL_SDMA1_GL1_RANGE_LT16K_REQ = 24 -GCR_PERF_SEL_SDMA1_GL1_RANGE_16K_REQ = 25 -GCR_PERF_SEL_SDMA1_GL1_RANGE_GT16K_REQ = 26 -GCR_PERF_SEL_SDMA1_GL1_ALL_REQ = 27 -GCR_PERF_SEL_SDMA1_METADATA_REQ = 28 -GCR_PERF_SEL_SDMA1_SQC_DATA_REQ = 29 -GCR_PERF_SEL_SDMA1_SQC_INST_REQ = 30 -GCR_PERF_SEL_SDMA1_TCP_REQ = 31 -GCR_PERF_SEL_SDMA1_TCP_TLB_SHOOTDOWN_REQ = 32 -GCR_PERF_SEL_CPC_ALL_REQ = 33 -GCR_PERF_SEL_CPC_GL2_RANGE_REQ = 34 -GCR_PERF_SEL_CPC_GL2_RANGE_LT16K_REQ = 35 -GCR_PERF_SEL_CPC_GL2_RANGE_16K_REQ = 36 -GCR_PERF_SEL_CPC_GL2_RANGE_GT16K_REQ = 37 -GCR_PERF_SEL_CPC_GL2_ALL_REQ = 38 -GCR_PERF_SEL_CPC_GL1_RANGE_REQ = 39 -GCR_PERF_SEL_CPC_GL1_RANGE_LT16K_REQ = 40 -GCR_PERF_SEL_CPC_GL1_RANGE_16K_REQ = 41 -GCR_PERF_SEL_CPC_GL1_RANGE_GT16K_REQ = 42 -GCR_PERF_SEL_CPC_GL1_ALL_REQ = 43 -GCR_PERF_SEL_CPC_METADATA_REQ = 44 -GCR_PERF_SEL_CPC_SQC_DATA_REQ = 45 -GCR_PERF_SEL_CPC_SQC_INST_REQ = 46 -GCR_PERF_SEL_CPC_TCP_REQ = 47 -GCR_PERF_SEL_CPC_TCP_TLB_SHOOTDOWN_REQ = 48 -GCR_PERF_SEL_CPG_ALL_REQ = 49 -GCR_PERF_SEL_CPG_GL2_RANGE_REQ = 50 -GCR_PERF_SEL_CPG_GL2_RANGE_LT16K_REQ = 51 -GCR_PERF_SEL_CPG_GL2_RANGE_16K_REQ = 52 -GCR_PERF_SEL_CPG_GL2_RANGE_GT16K_REQ = 53 -GCR_PERF_SEL_CPG_GL2_ALL_REQ = 54 -GCR_PERF_SEL_CPG_GL1_RANGE_REQ = 55 -GCR_PERF_SEL_CPG_GL1_RANGE_LT16K_REQ = 56 -GCR_PERF_SEL_CPG_GL1_RANGE_16K_REQ = 57 -GCR_PERF_SEL_CPG_GL1_RANGE_GT16K_REQ = 58 -GCR_PERF_SEL_CPG_GL1_ALL_REQ = 59 -GCR_PERF_SEL_CPG_METADATA_REQ = 60 -GCR_PERF_SEL_CPG_SQC_DATA_REQ = 61 -GCR_PERF_SEL_CPG_SQC_INST_REQ = 62 -GCR_PERF_SEL_CPG_TCP_REQ = 63 -GCR_PERF_SEL_CPG_TCP_TLB_SHOOTDOWN_REQ = 64 -GCR_PERF_SEL_CPF_ALL_REQ = 65 -GCR_PERF_SEL_CPF_GL2_RANGE_REQ = 66 -GCR_PERF_SEL_CPF_GL2_RANGE_LT16K_REQ = 67 -GCR_PERF_SEL_CPF_GL2_RANGE_16K_REQ = 68 -GCR_PERF_SEL_CPF_GL2_RANGE_GT16K_REQ = 69 -GCR_PERF_SEL_CPF_GL2_ALL_REQ = 70 -GCR_PERF_SEL_CPF_GL1_RANGE_REQ = 71 -GCR_PERF_SEL_CPF_GL1_RANGE_LT16K_REQ = 72 -GCR_PERF_SEL_CPF_GL1_RANGE_16K_REQ = 73 -GCR_PERF_SEL_CPF_GL1_RANGE_GT16K_REQ = 74 -GCR_PERF_SEL_CPF_GL1_ALL_REQ = 75 -GCR_PERF_SEL_CPF_METADATA_REQ = 76 -GCR_PERF_SEL_CPF_SQC_DATA_REQ = 77 -GCR_PERF_SEL_CPF_SQC_INST_REQ = 78 -GCR_PERF_SEL_CPF_TCP_REQ = 79 -GCR_PERF_SEL_CPF_TCP_TLB_SHOOTDOWN_REQ = 80 -GCR_PERF_SEL_VIRT_REQ = 81 -GCR_PERF_SEL_PHY_REQ = 82 -GCR_PERF_SEL_TLB_SHOOTDOWN_HEAVY_REQ = 83 -GCR_PERF_SEL_TLB_SHOOTDOWN_LIGHT_REQ = 84 -GCR_PERF_SEL_ALL_REQ = 85 -GCR_PERF_SEL_CLK_FOR_PHY_OUTSTANDING_REQ = 86 -GCR_PERF_SEL_CLK_FOR_VIRT_OUTSTANDING_REQ = 87 -GCR_PERF_SEL_CLK_FOR_ALL_OUTSTANDING_REQ = 88 -GCR_PERF_SEL_UTCL2_REQ = 89 -GCR_PERF_SEL_UTCL2_RET = 90 -GCR_PERF_SEL_UTCL2_OUT_OF_CREDIT_EVENT = 91 -GCR_PERF_SEL_UTCL2_INFLIGHT_REQ = 92 -GCR_PERF_SEL_UTCL2_FILTERED_RET = 93 -GCR_PERF_SEL_RLC_ALL_REQ = 94 -GCR_PERF_SEL_RLC_GL2_RANGE_REQ = 95 -GCR_PERF_SEL_RLC_GL2_RANGE_LT16K_REQ = 96 -GCR_PERF_SEL_RLC_GL2_RANGE_16K_REQ = 97 -GCR_PERF_SEL_RLC_GL2_RANGE_GT16K_REQ = 98 -GCR_PERF_SEL_RLC_GL2_ALL_REQ = 99 -GCR_PERF_SEL_RLC_GL1_RANGE_REQ = 100 -GCR_PERF_SEL_RLC_GL1_RANGE_LT16K_REQ = 101 -GCR_PERF_SEL_RLC_GL1_RANGE_16K_REQ = 102 -GCR_PERF_SEL_RLC_GL1_RANGE_GT16K_REQ = 103 -GCR_PERF_SEL_RLC_GL1_ALL_REQ = 104 -GCR_PERF_SEL_RLC_METADATA_REQ = 105 -GCR_PERF_SEL_RLC_SQC_DATA_REQ = 106 -GCR_PERF_SEL_RLC_SQC_INST_REQ = 107 -GCR_PERF_SEL_RLC_TCP_REQ = 108 -GCR_PERF_SEL_RLC_TCP_TLB_SHOOTDOWN_REQ = 109 -GCR_PERF_SEL_PM_ALL_REQ = 110 -GCR_PERF_SEL_PM_GL2_RANGE_REQ = 111 -GCR_PERF_SEL_PM_GL2_RANGE_LT16K_REQ = 112 -GCR_PERF_SEL_PM_GL2_RANGE_16K_REQ = 113 -GCR_PERF_SEL_PM_GL2_RANGE_GT16K_REQ = 114 -GCR_PERF_SEL_PM_GL2_ALL_REQ = 115 -GCR_PERF_SEL_PM_GL1_RANGE_REQ = 116 -GCR_PERF_SEL_PM_GL1_RANGE_LT16K_REQ = 117 -GCR_PERF_SEL_PM_GL1_RANGE_16K_REQ = 118 -GCR_PERF_SEL_PM_GL1_RANGE_GT16K_REQ = 119 -GCR_PERF_SEL_PM_GL1_ALL_REQ = 120 -GCR_PERF_SEL_PM_METADATA_REQ = 121 -GCR_PERF_SEL_PM_SQC_DATA_REQ = 122 -GCR_PERF_SEL_PM_SQC_INST_REQ = 123 -GCR_PERF_SEL_PM_TCP_REQ = 124 -GCR_PERF_SEL_PM_TCP_TLB_SHOOTDOWN_REQ = 125 -GCR_PERF_SEL_PIO_ALL_REQ = 126 -GCR_PERF_SEL_PIO_GL2_RANGE_REQ = 127 -GCR_PERF_SEL_PIO_GL2_RANGE_LT16K_REQ = 128 -GCR_PERF_SEL_PIO_GL2_RANGE_16K_REQ = 129 -GCR_PERF_SEL_PIO_GL2_RANGE_GT16K_REQ = 130 -GCR_PERF_SEL_PIO_GL2_ALL_REQ = 131 -GCR_PERF_SEL_PIO_GL1_RANGE_REQ = 132 -GCR_PERF_SEL_PIO_GL1_RANGE_LT16K_REQ = 133 -GCR_PERF_SEL_PIO_GL1_RANGE_16K_REQ = 134 -GCR_PERF_SEL_PIO_GL1_RANGE_GT16K_REQ = 135 -GCR_PERF_SEL_PIO_GL1_ALL_REQ = 136 -GCR_PERF_SEL_PIO_METADATA_REQ = 137 -GCR_PERF_SEL_PIO_SQC_DATA_REQ = 138 -GCR_PERF_SEL_PIO_SQC_INST_REQ = 139 -GCR_PERF_SEL_PIO_TCP_REQ = 140 -GCR_PERF_SEL_PIO_TCP_TLB_SHOOTDOWN_REQ = 141 -GCRPerfSel = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL1PerfSel' -UTCL1PerfSel__enumvalues = { - 0: 'UTCL1_PERF_SEL_NONE', - 1: 'UTCL1_PERF_SEL_REQS', - 2: 'UTCL1_PERF_SEL_HITS', - 3: 'UTCL1_PERF_SEL_MISSES', - 4: 'UTCL1_PERF_SEL_MH_RECENT_BUF_HIT', - 5: 'UTCL1_PERF_SEL_MH_DUPLICATE_DETECT', - 6: 'UTCL1_PERF_SEL_UTCL2_REQS', - 7: 'UTCL1_PERF_SEL_UTCL2_RET_XNACK_RETRY', - 8: 'UTCL1_PERF_SEL_UTCL2_RET_FAULT', - 9: 'UTCL1_PERF_SEL_STALL_UTCL2_CREDITS', - 10: 'UTCL1_PERF_SEL_STALL_MH_FULL', - 11: 'UTCL1_PERF_SEL_UTCL2_REQS_OUTSTANDING_ACCUM', - 12: 'UTCL1_PERF_SEL_UTCL2_RET_CNT', - 13: 'UTCL1_PERF_SEL_RTNS', - 14: 'UTCL1_PERF_SEL_XLAT_REQ_BUSY', - 15: 'UTCL1_PERF_SEL_BYPASS_REQS', - 16: 'UTCL1_PERF_SEL_HIT_INV_FILTER_REQS', - 17: 'UTCL1_PERF_SEL_UTCL2_RET_PERM_FAULT', - 18: 'UTCL1_PERF_SEL_UTCL2_RET_PRT_FAULT', - 19: 'UTCL1_PERF_SEL_CP_INVREQS', - 20: 'UTCL1_PERF_SEL_UTCL2_UTCL1_INVREQS', - 21: 'UTCL1_PERF_SEL_RANGE_INVREQS', - 22: 'UTCL1_PERF_SEL_INV_ALL_VMID_INVREQS', -} -UTCL1_PERF_SEL_NONE = 0 -UTCL1_PERF_SEL_REQS = 1 -UTCL1_PERF_SEL_HITS = 2 -UTCL1_PERF_SEL_MISSES = 3 -UTCL1_PERF_SEL_MH_RECENT_BUF_HIT = 4 -UTCL1_PERF_SEL_MH_DUPLICATE_DETECT = 5 -UTCL1_PERF_SEL_UTCL2_REQS = 6 -UTCL1_PERF_SEL_UTCL2_RET_XNACK_RETRY = 7 -UTCL1_PERF_SEL_UTCL2_RET_FAULT = 8 -UTCL1_PERF_SEL_STALL_UTCL2_CREDITS = 9 -UTCL1_PERF_SEL_STALL_MH_FULL = 10 -UTCL1_PERF_SEL_UTCL2_REQS_OUTSTANDING_ACCUM = 11 -UTCL1_PERF_SEL_UTCL2_RET_CNT = 12 -UTCL1_PERF_SEL_RTNS = 13 -UTCL1_PERF_SEL_XLAT_REQ_BUSY = 14 -UTCL1_PERF_SEL_BYPASS_REQS = 15 -UTCL1_PERF_SEL_HIT_INV_FILTER_REQS = 16 -UTCL1_PERF_SEL_UTCL2_RET_PERM_FAULT = 17 -UTCL1_PERF_SEL_UTCL2_RET_PRT_FAULT = 18 -UTCL1_PERF_SEL_CP_INVREQS = 19 -UTCL1_PERF_SEL_UTCL2_UTCL1_INVREQS = 20 -UTCL1_PERF_SEL_RANGE_INVREQS = 21 -UTCL1_PERF_SEL_INV_ALL_VMID_INVREQS = 22 -UTCL1PerfSel = ctypes.c_uint32 # enum - -# values for enumeration 'IH_CLIENT_TYPE' -IH_CLIENT_TYPE__enumvalues = { - 0: 'IH_GFX_VMID_CLIENT', - 1: 'IH_MM_VMID_CLIENT', - 2: 'IH_MULTI_VMID_CLIENT', - 3: 'IH_CLIENT_TYPE_RESERVED', -} -IH_GFX_VMID_CLIENT = 0 -IH_MM_VMID_CLIENT = 1 -IH_MULTI_VMID_CLIENT = 2 -IH_CLIENT_TYPE_RESERVED = 3 -IH_CLIENT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'IH_INTERFACE_TYPE' -IH_INTERFACE_TYPE__enumvalues = { - 0: 'IH_LEGACY_INTERFACE', - 1: 'IH_REGISTER_WRITE_INTERFACE', -} -IH_LEGACY_INTERFACE = 0 -IH_REGISTER_WRITE_INTERFACE = 1 -IH_INTERFACE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'IH_PERF_SEL' -IH_PERF_SEL__enumvalues = { - 0: 'IH_PERF_SEL_CYCLE', - 1: 'IH_PERF_SEL_IDLE', - 2: 'IH_PERF_SEL_INPUT_IDLE', - 3: 'IH_PERF_SEL_BUFFER_IDLE', - 4: 'IH_PERF_SEL_RB0_FULL', - 5: 'IH_PERF_SEL_RB0_OVERFLOW', - 6: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK', - 7: 'IH_PERF_SEL_RB0_WPTR_WRAP', - 8: 'IH_PERF_SEL_RB0_RPTR_WRAP', - 9: 'IH_PERF_SEL_MC_WR_IDLE', - 10: 'IH_PERF_SEL_MC_WR_COUNT', - 11: 'IH_PERF_SEL_MC_WR_STALL', - 12: 'IH_PERF_SEL_MC_WR_CLEAN_PENDING', - 13: 'IH_PERF_SEL_MC_WR_CLEAN_STALL', - 14: 'IH_PERF_SEL_BIF_LINE0_RISING', - 15: 'IH_PERF_SEL_BIF_LINE0_FALLING', - 16: 'IH_PERF_SEL_RB1_FULL', - 17: 'IH_PERF_SEL_RB1_OVERFLOW', - 18: 'IH_PERF_SEL_COOKIE_REC_ERROR', - 19: 'IH_PERF_SEL_RB1_WPTR_WRAP', - 20: 'IH_PERF_SEL_RB1_RPTR_WRAP', - 21: 'IH_PERF_SEL_RB2_FULL', - 22: 'IH_PERF_SEL_RB2_OVERFLOW', - 23: 'IH_PERF_SEL_CLIENT_CREDIT_ERROR', - 24: 'IH_PERF_SEL_RB2_WPTR_WRAP', - 25: 'IH_PERF_SEL_RB2_RPTR_WRAP', - 26: 'IH_PERF_SEL_STORM_CLIENT_INT_DROP', - 27: 'IH_PERF_SEL_SELF_IV_VALID', - 28: 'IH_PERF_SEL_BUFFER_FIFO_FULL', - 29: 'IH_PERF_SEL_RB0_FULL_VF0', - 30: 'IH_PERF_SEL_RB0_FULL_VF1', - 31: 'IH_PERF_SEL_RB0_FULL_VF2', - 32: 'IH_PERF_SEL_RB0_FULL_VF3', - 33: 'IH_PERF_SEL_RB0_FULL_VF4', - 34: 'IH_PERF_SEL_RB0_FULL_VF5', - 35: 'IH_PERF_SEL_RB0_FULL_VF6', - 36: 'IH_PERF_SEL_RB0_FULL_VF7', - 37: 'IH_PERF_SEL_RB0_FULL_VF8', - 38: 'IH_PERF_SEL_RB0_FULL_VF9', - 39: 'IH_PERF_SEL_RB0_FULL_VF10', - 40: 'IH_PERF_SEL_RB0_FULL_VF11', - 41: 'IH_PERF_SEL_RB0_FULL_VF12', - 42: 'IH_PERF_SEL_RB0_FULL_VF13', - 43: 'IH_PERF_SEL_RB0_FULL_VF14', - 44: 'IH_PERF_SEL_RB0_FULL_VF15', - 45: 'IH_PERF_SEL_RB0_OVERFLOW_VF0', - 46: 'IH_PERF_SEL_RB0_OVERFLOW_VF1', - 47: 'IH_PERF_SEL_RB0_OVERFLOW_VF2', - 48: 'IH_PERF_SEL_RB0_OVERFLOW_VF3', - 49: 'IH_PERF_SEL_RB0_OVERFLOW_VF4', - 50: 'IH_PERF_SEL_RB0_OVERFLOW_VF5', - 51: 'IH_PERF_SEL_RB0_OVERFLOW_VF6', - 52: 'IH_PERF_SEL_RB0_OVERFLOW_VF7', - 53: 'IH_PERF_SEL_RB0_OVERFLOW_VF8', - 54: 'IH_PERF_SEL_RB0_OVERFLOW_VF9', - 55: 'IH_PERF_SEL_RB0_OVERFLOW_VF10', - 56: 'IH_PERF_SEL_RB0_OVERFLOW_VF11', - 57: 'IH_PERF_SEL_RB0_OVERFLOW_VF12', - 58: 'IH_PERF_SEL_RB0_OVERFLOW_VF13', - 59: 'IH_PERF_SEL_RB0_OVERFLOW_VF14', - 60: 'IH_PERF_SEL_RB0_OVERFLOW_VF15', - 61: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF0', - 62: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF1', - 63: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF2', - 64: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF3', - 65: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF4', - 66: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF5', - 67: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF6', - 68: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF7', - 69: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF8', - 70: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF9', - 71: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF10', - 72: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF11', - 73: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF12', - 74: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF13', - 75: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF14', - 76: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF15', - 77: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF0', - 78: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF1', - 79: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF2', - 80: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF3', - 81: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF4', - 82: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF5', - 83: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF6', - 84: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF7', - 85: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF8', - 86: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF9', - 87: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF10', - 88: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF11', - 89: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF12', - 90: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF13', - 91: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF14', - 92: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF15', - 93: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF0', - 94: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF1', - 95: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF2', - 96: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF3', - 97: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF4', - 98: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF5', - 99: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF6', - 100: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF7', - 101: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF8', - 102: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF9', - 103: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF10', - 104: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF11', - 105: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF12', - 106: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF13', - 107: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF14', - 108: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF15', - 109: 'IH_PERF_SEL_BIF_LINE0_RISING_VF0', - 110: 'IH_PERF_SEL_BIF_LINE0_RISING_VF1', - 111: 'IH_PERF_SEL_BIF_LINE0_RISING_VF2', - 112: 'IH_PERF_SEL_BIF_LINE0_RISING_VF3', - 113: 'IH_PERF_SEL_BIF_LINE0_RISING_VF4', - 114: 'IH_PERF_SEL_BIF_LINE0_RISING_VF5', - 115: 'IH_PERF_SEL_BIF_LINE0_RISING_VF6', - 116: 'IH_PERF_SEL_BIF_LINE0_RISING_VF7', - 117: 'IH_PERF_SEL_BIF_LINE0_RISING_VF8', - 118: 'IH_PERF_SEL_BIF_LINE0_RISING_VF9', - 119: 'IH_PERF_SEL_BIF_LINE0_RISING_VF10', - 120: 'IH_PERF_SEL_BIF_LINE0_RISING_VF11', - 121: 'IH_PERF_SEL_BIF_LINE0_RISING_VF12', - 122: 'IH_PERF_SEL_BIF_LINE0_RISING_VF13', - 123: 'IH_PERF_SEL_BIF_LINE0_RISING_VF14', - 124: 'IH_PERF_SEL_BIF_LINE0_RISING_VF15', - 125: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF0', - 126: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF1', - 127: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF2', - 128: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF3', - 129: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF4', - 130: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF5', - 131: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF6', - 132: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF7', - 133: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF8', - 134: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF9', - 135: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF10', - 136: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF11', - 137: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF12', - 138: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF13', - 139: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF14', - 140: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF15', - 141: 'IH_PERF_SEL_CLIENT0_INT', - 142: 'IH_PERF_SEL_CLIENT1_INT', - 143: 'IH_PERF_SEL_CLIENT2_INT', - 144: 'IH_PERF_SEL_CLIENT3_INT', - 145: 'IH_PERF_SEL_CLIENT4_INT', - 146: 'IH_PERF_SEL_CLIENT5_INT', - 147: 'IH_PERF_SEL_CLIENT6_INT', - 148: 'IH_PERF_SEL_CLIENT7_INT', - 149: 'IH_PERF_SEL_CLIENT8_INT', - 150: 'IH_PERF_SEL_CLIENT9_INT', - 151: 'IH_PERF_SEL_CLIENT10_INT', - 152: 'IH_PERF_SEL_CLIENT11_INT', - 153: 'IH_PERF_SEL_CLIENT12_INT', - 154: 'IH_PERF_SEL_CLIENT13_INT', - 155: 'IH_PERF_SEL_CLIENT14_INT', - 156: 'IH_PERF_SEL_CLIENT15_INT', - 157: 'IH_PERF_SEL_CLIENT16_INT', - 158: 'IH_PERF_SEL_CLIENT17_INT', - 159: 'IH_PERF_SEL_CLIENT18_INT', - 160: 'IH_PERF_SEL_CLIENT19_INT', - 161: 'IH_PERF_SEL_CLIENT20_INT', - 162: 'IH_PERF_SEL_CLIENT21_INT', - 163: 'IH_PERF_SEL_CLIENT22_INT', - 164: 'IH_PERF_SEL_CLIENT23_INT', - 165: 'IH_PERF_SEL_CLIENT24_INT', - 166: 'IH_PERF_SEL_CLIENT25_INT', - 167: 'IH_PERF_SEL_CLIENT26_INT', - 168: 'IH_PERF_SEL_CLIENT27_INT', - 169: 'IH_PERF_SEL_CLIENT28_INT', - 170: 'IH_PERF_SEL_CLIENT29_INT', - 171: 'IH_PERF_SEL_CLIENT30_INT', - 172: 'IH_PERF_SEL_CLIENT31_INT', - 173: 'IH_PERF_SEL_RB1_FULL_VF0', - 174: 'IH_PERF_SEL_RB1_FULL_VF1', - 175: 'IH_PERF_SEL_RB1_FULL_VF2', - 176: 'IH_PERF_SEL_RB1_FULL_VF3', - 177: 'IH_PERF_SEL_RB1_FULL_VF4', - 178: 'IH_PERF_SEL_RB1_FULL_VF5', - 179: 'IH_PERF_SEL_RB1_FULL_VF6', - 180: 'IH_PERF_SEL_RB1_FULL_VF7', - 181: 'IH_PERF_SEL_RB1_FULL_VF8', - 182: 'IH_PERF_SEL_RB1_FULL_VF9', - 183: 'IH_PERF_SEL_RB1_FULL_VF10', - 184: 'IH_PERF_SEL_RB1_FULL_VF11', - 185: 'IH_PERF_SEL_RB1_FULL_VF12', - 186: 'IH_PERF_SEL_RB1_FULL_VF13', - 187: 'IH_PERF_SEL_RB1_FULL_VF14', - 188: 'IH_PERF_SEL_RB1_FULL_VF15', - 189: 'IH_PERF_SEL_RB1_OVERFLOW_VF0', - 190: 'IH_PERF_SEL_RB1_OVERFLOW_VF1', - 191: 'IH_PERF_SEL_RB1_OVERFLOW_VF2', - 192: 'IH_PERF_SEL_RB1_OVERFLOW_VF3', - 193: 'IH_PERF_SEL_RB1_OVERFLOW_VF4', - 194: 'IH_PERF_SEL_RB1_OVERFLOW_VF5', - 195: 'IH_PERF_SEL_RB1_OVERFLOW_VF6', - 196: 'IH_PERF_SEL_RB1_OVERFLOW_VF7', - 197: 'IH_PERF_SEL_RB1_OVERFLOW_VF8', - 198: 'IH_PERF_SEL_RB1_OVERFLOW_VF9', - 199: 'IH_PERF_SEL_RB1_OVERFLOW_VF10', - 200: 'IH_PERF_SEL_RB1_OVERFLOW_VF11', - 201: 'IH_PERF_SEL_RB1_OVERFLOW_VF12', - 202: 'IH_PERF_SEL_RB1_OVERFLOW_VF13', - 203: 'IH_PERF_SEL_RB1_OVERFLOW_VF14', - 204: 'IH_PERF_SEL_RB1_OVERFLOW_VF15', - 205: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF0', - 206: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF1', - 207: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF2', - 208: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF3', - 209: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF4', - 210: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF5', - 211: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF6', - 212: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF7', - 213: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF8', - 214: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF9', - 215: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF10', - 216: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF11', - 217: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF12', - 218: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF13', - 219: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF14', - 220: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF15', - 221: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF0', - 222: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF1', - 223: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF2', - 224: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF3', - 225: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF4', - 226: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF5', - 227: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF6', - 228: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF7', - 229: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF8', - 230: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF9', - 231: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF10', - 232: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF11', - 233: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF12', - 234: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF13', - 235: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF14', - 236: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF15', - 237: 'IH_PERF_SEL_RB2_FULL_VF0', - 238: 'IH_PERF_SEL_RB2_FULL_VF1', - 239: 'IH_PERF_SEL_RB2_FULL_VF2', - 240: 'IH_PERF_SEL_RB2_FULL_VF3', - 241: 'IH_PERF_SEL_RB2_FULL_VF4', - 242: 'IH_PERF_SEL_RB2_FULL_VF5', - 243: 'IH_PERF_SEL_RB2_FULL_VF6', - 244: 'IH_PERF_SEL_RB2_FULL_VF7', - 245: 'IH_PERF_SEL_RB2_FULL_VF8', - 246: 'IH_PERF_SEL_RB2_FULL_VF9', - 247: 'IH_PERF_SEL_RB2_FULL_VF10', - 248: 'IH_PERF_SEL_RB2_FULL_VF11', - 249: 'IH_PERF_SEL_RB2_FULL_VF12', - 250: 'IH_PERF_SEL_RB2_FULL_VF13', - 251: 'IH_PERF_SEL_RB2_FULL_VF14', - 252: 'IH_PERF_SEL_RB2_FULL_VF15', - 253: 'IH_PERF_SEL_RB2_OVERFLOW_VF0', - 254: 'IH_PERF_SEL_RB2_OVERFLOW_VF1', - 255: 'IH_PERF_SEL_RB2_OVERFLOW_VF2', - 256: 'IH_PERF_SEL_RB2_OVERFLOW_VF3', - 257: 'IH_PERF_SEL_RB2_OVERFLOW_VF4', - 258: 'IH_PERF_SEL_RB2_OVERFLOW_VF5', - 259: 'IH_PERF_SEL_RB2_OVERFLOW_VF6', - 260: 'IH_PERF_SEL_RB2_OVERFLOW_VF7', - 261: 'IH_PERF_SEL_RB2_OVERFLOW_VF8', - 262: 'IH_PERF_SEL_RB2_OVERFLOW_VF9', - 263: 'IH_PERF_SEL_RB2_OVERFLOW_VF10', - 264: 'IH_PERF_SEL_RB2_OVERFLOW_VF11', - 265: 'IH_PERF_SEL_RB2_OVERFLOW_VF12', - 266: 'IH_PERF_SEL_RB2_OVERFLOW_VF13', - 267: 'IH_PERF_SEL_RB2_OVERFLOW_VF14', - 268: 'IH_PERF_SEL_RB2_OVERFLOW_VF15', - 269: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF0', - 270: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF1', - 271: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF2', - 272: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF3', - 273: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF4', - 274: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF5', - 275: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF6', - 276: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF7', - 277: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF8', - 278: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF9', - 279: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF10', - 280: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF11', - 281: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF12', - 282: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF13', - 283: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF14', - 284: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF15', - 285: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF0', - 286: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF1', - 287: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF2', - 288: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF3', - 289: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF4', - 290: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF5', - 291: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF6', - 292: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF7', - 293: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF8', - 294: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF9', - 295: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF10', - 296: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF11', - 297: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF12', - 298: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF13', - 299: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF14', - 300: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF15', - 301: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP', - 302: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF0', - 303: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF1', - 304: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF2', - 305: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF3', - 306: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF4', - 307: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF5', - 308: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF6', - 309: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF7', - 310: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF8', - 311: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF9', - 312: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF10', - 313: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF11', - 314: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF12', - 315: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF13', - 316: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF14', - 317: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF15', - 318: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP', - 319: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF0', - 320: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF1', - 321: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF2', - 322: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF3', - 323: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF4', - 324: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF5', - 325: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF6', - 326: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF7', - 327: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF8', - 328: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF9', - 329: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF10', - 330: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF11', - 331: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF12', - 332: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF13', - 333: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF14', - 334: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF15', - 335: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP', - 336: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF0', - 337: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF1', - 338: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF2', - 339: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF3', - 340: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF4', - 341: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF5', - 342: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF6', - 343: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF7', - 344: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF8', - 345: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF9', - 346: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF10', - 347: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF11', - 348: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF12', - 349: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF13', - 350: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF14', - 351: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF15', - 352: 'IH_PERF_SEL_RB0_LOAD_RPTR', - 353: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF0', - 354: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF1', - 355: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF2', - 356: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF3', - 357: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF4', - 358: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF5', - 359: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF6', - 360: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF7', - 361: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF8', - 362: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF9', - 363: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF10', - 364: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF11', - 365: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF12', - 366: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF13', - 367: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF14', - 368: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF15', - 369: 'IH_PERF_SEL_RB1_LOAD_RPTR', - 370: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF0', - 371: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF1', - 372: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF2', - 373: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF3', - 374: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF4', - 375: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF5', - 376: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF6', - 377: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF7', - 378: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF8', - 379: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF9', - 380: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF10', - 381: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF11', - 382: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF12', - 383: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF13', - 384: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF14', - 385: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF15', - 386: 'IH_PERF_SEL_RB2_LOAD_RPTR', - 387: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF0', - 388: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF1', - 389: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF2', - 390: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF3', - 391: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF4', - 392: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF5', - 393: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF6', - 394: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF7', - 395: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF8', - 396: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF9', - 397: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF10', - 398: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF11', - 399: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF12', - 400: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF13', - 401: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF14', - 402: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF15', -} -IH_PERF_SEL_CYCLE = 0 -IH_PERF_SEL_IDLE = 1 -IH_PERF_SEL_INPUT_IDLE = 2 -IH_PERF_SEL_BUFFER_IDLE = 3 -IH_PERF_SEL_RB0_FULL = 4 -IH_PERF_SEL_RB0_OVERFLOW = 5 -IH_PERF_SEL_RB0_WPTR_WRITEBACK = 6 -IH_PERF_SEL_RB0_WPTR_WRAP = 7 -IH_PERF_SEL_RB0_RPTR_WRAP = 8 -IH_PERF_SEL_MC_WR_IDLE = 9 -IH_PERF_SEL_MC_WR_COUNT = 10 -IH_PERF_SEL_MC_WR_STALL = 11 -IH_PERF_SEL_MC_WR_CLEAN_PENDING = 12 -IH_PERF_SEL_MC_WR_CLEAN_STALL = 13 -IH_PERF_SEL_BIF_LINE0_RISING = 14 -IH_PERF_SEL_BIF_LINE0_FALLING = 15 -IH_PERF_SEL_RB1_FULL = 16 -IH_PERF_SEL_RB1_OVERFLOW = 17 -IH_PERF_SEL_COOKIE_REC_ERROR = 18 -IH_PERF_SEL_RB1_WPTR_WRAP = 19 -IH_PERF_SEL_RB1_RPTR_WRAP = 20 -IH_PERF_SEL_RB2_FULL = 21 -IH_PERF_SEL_RB2_OVERFLOW = 22 -IH_PERF_SEL_CLIENT_CREDIT_ERROR = 23 -IH_PERF_SEL_RB2_WPTR_WRAP = 24 -IH_PERF_SEL_RB2_RPTR_WRAP = 25 -IH_PERF_SEL_STORM_CLIENT_INT_DROP = 26 -IH_PERF_SEL_SELF_IV_VALID = 27 -IH_PERF_SEL_BUFFER_FIFO_FULL = 28 -IH_PERF_SEL_RB0_FULL_VF0 = 29 -IH_PERF_SEL_RB0_FULL_VF1 = 30 -IH_PERF_SEL_RB0_FULL_VF2 = 31 -IH_PERF_SEL_RB0_FULL_VF3 = 32 -IH_PERF_SEL_RB0_FULL_VF4 = 33 -IH_PERF_SEL_RB0_FULL_VF5 = 34 -IH_PERF_SEL_RB0_FULL_VF6 = 35 -IH_PERF_SEL_RB0_FULL_VF7 = 36 -IH_PERF_SEL_RB0_FULL_VF8 = 37 -IH_PERF_SEL_RB0_FULL_VF9 = 38 -IH_PERF_SEL_RB0_FULL_VF10 = 39 -IH_PERF_SEL_RB0_FULL_VF11 = 40 -IH_PERF_SEL_RB0_FULL_VF12 = 41 -IH_PERF_SEL_RB0_FULL_VF13 = 42 -IH_PERF_SEL_RB0_FULL_VF14 = 43 -IH_PERF_SEL_RB0_FULL_VF15 = 44 -IH_PERF_SEL_RB0_OVERFLOW_VF0 = 45 -IH_PERF_SEL_RB0_OVERFLOW_VF1 = 46 -IH_PERF_SEL_RB0_OVERFLOW_VF2 = 47 -IH_PERF_SEL_RB0_OVERFLOW_VF3 = 48 -IH_PERF_SEL_RB0_OVERFLOW_VF4 = 49 -IH_PERF_SEL_RB0_OVERFLOW_VF5 = 50 -IH_PERF_SEL_RB0_OVERFLOW_VF6 = 51 -IH_PERF_SEL_RB0_OVERFLOW_VF7 = 52 -IH_PERF_SEL_RB0_OVERFLOW_VF8 = 53 -IH_PERF_SEL_RB0_OVERFLOW_VF9 = 54 -IH_PERF_SEL_RB0_OVERFLOW_VF10 = 55 -IH_PERF_SEL_RB0_OVERFLOW_VF11 = 56 -IH_PERF_SEL_RB0_OVERFLOW_VF12 = 57 -IH_PERF_SEL_RB0_OVERFLOW_VF13 = 58 -IH_PERF_SEL_RB0_OVERFLOW_VF14 = 59 -IH_PERF_SEL_RB0_OVERFLOW_VF15 = 60 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF0 = 61 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF1 = 62 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF2 = 63 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF3 = 64 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF4 = 65 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF5 = 66 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF6 = 67 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF7 = 68 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF8 = 69 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF9 = 70 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF10 = 71 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF11 = 72 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF12 = 73 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF13 = 74 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF14 = 75 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF15 = 76 -IH_PERF_SEL_RB0_WPTR_WRAP_VF0 = 77 -IH_PERF_SEL_RB0_WPTR_WRAP_VF1 = 78 -IH_PERF_SEL_RB0_WPTR_WRAP_VF2 = 79 -IH_PERF_SEL_RB0_WPTR_WRAP_VF3 = 80 -IH_PERF_SEL_RB0_WPTR_WRAP_VF4 = 81 -IH_PERF_SEL_RB0_WPTR_WRAP_VF5 = 82 -IH_PERF_SEL_RB0_WPTR_WRAP_VF6 = 83 -IH_PERF_SEL_RB0_WPTR_WRAP_VF7 = 84 -IH_PERF_SEL_RB0_WPTR_WRAP_VF8 = 85 -IH_PERF_SEL_RB0_WPTR_WRAP_VF9 = 86 -IH_PERF_SEL_RB0_WPTR_WRAP_VF10 = 87 -IH_PERF_SEL_RB0_WPTR_WRAP_VF11 = 88 -IH_PERF_SEL_RB0_WPTR_WRAP_VF12 = 89 -IH_PERF_SEL_RB0_WPTR_WRAP_VF13 = 90 -IH_PERF_SEL_RB0_WPTR_WRAP_VF14 = 91 -IH_PERF_SEL_RB0_WPTR_WRAP_VF15 = 92 -IH_PERF_SEL_RB0_RPTR_WRAP_VF0 = 93 -IH_PERF_SEL_RB0_RPTR_WRAP_VF1 = 94 -IH_PERF_SEL_RB0_RPTR_WRAP_VF2 = 95 -IH_PERF_SEL_RB0_RPTR_WRAP_VF3 = 96 -IH_PERF_SEL_RB0_RPTR_WRAP_VF4 = 97 -IH_PERF_SEL_RB0_RPTR_WRAP_VF5 = 98 -IH_PERF_SEL_RB0_RPTR_WRAP_VF6 = 99 -IH_PERF_SEL_RB0_RPTR_WRAP_VF7 = 100 -IH_PERF_SEL_RB0_RPTR_WRAP_VF8 = 101 -IH_PERF_SEL_RB0_RPTR_WRAP_VF9 = 102 -IH_PERF_SEL_RB0_RPTR_WRAP_VF10 = 103 -IH_PERF_SEL_RB0_RPTR_WRAP_VF11 = 104 -IH_PERF_SEL_RB0_RPTR_WRAP_VF12 = 105 -IH_PERF_SEL_RB0_RPTR_WRAP_VF13 = 106 -IH_PERF_SEL_RB0_RPTR_WRAP_VF14 = 107 -IH_PERF_SEL_RB0_RPTR_WRAP_VF15 = 108 -IH_PERF_SEL_BIF_LINE0_RISING_VF0 = 109 -IH_PERF_SEL_BIF_LINE0_RISING_VF1 = 110 -IH_PERF_SEL_BIF_LINE0_RISING_VF2 = 111 -IH_PERF_SEL_BIF_LINE0_RISING_VF3 = 112 -IH_PERF_SEL_BIF_LINE0_RISING_VF4 = 113 -IH_PERF_SEL_BIF_LINE0_RISING_VF5 = 114 -IH_PERF_SEL_BIF_LINE0_RISING_VF6 = 115 -IH_PERF_SEL_BIF_LINE0_RISING_VF7 = 116 -IH_PERF_SEL_BIF_LINE0_RISING_VF8 = 117 -IH_PERF_SEL_BIF_LINE0_RISING_VF9 = 118 -IH_PERF_SEL_BIF_LINE0_RISING_VF10 = 119 -IH_PERF_SEL_BIF_LINE0_RISING_VF11 = 120 -IH_PERF_SEL_BIF_LINE0_RISING_VF12 = 121 -IH_PERF_SEL_BIF_LINE0_RISING_VF13 = 122 -IH_PERF_SEL_BIF_LINE0_RISING_VF14 = 123 -IH_PERF_SEL_BIF_LINE0_RISING_VF15 = 124 -IH_PERF_SEL_BIF_LINE0_FALLING_VF0 = 125 -IH_PERF_SEL_BIF_LINE0_FALLING_VF1 = 126 -IH_PERF_SEL_BIF_LINE0_FALLING_VF2 = 127 -IH_PERF_SEL_BIF_LINE0_FALLING_VF3 = 128 -IH_PERF_SEL_BIF_LINE0_FALLING_VF4 = 129 -IH_PERF_SEL_BIF_LINE0_FALLING_VF5 = 130 -IH_PERF_SEL_BIF_LINE0_FALLING_VF6 = 131 -IH_PERF_SEL_BIF_LINE0_FALLING_VF7 = 132 -IH_PERF_SEL_BIF_LINE0_FALLING_VF8 = 133 -IH_PERF_SEL_BIF_LINE0_FALLING_VF9 = 134 -IH_PERF_SEL_BIF_LINE0_FALLING_VF10 = 135 -IH_PERF_SEL_BIF_LINE0_FALLING_VF11 = 136 -IH_PERF_SEL_BIF_LINE0_FALLING_VF12 = 137 -IH_PERF_SEL_BIF_LINE0_FALLING_VF13 = 138 -IH_PERF_SEL_BIF_LINE0_FALLING_VF14 = 139 -IH_PERF_SEL_BIF_LINE0_FALLING_VF15 = 140 -IH_PERF_SEL_CLIENT0_INT = 141 -IH_PERF_SEL_CLIENT1_INT = 142 -IH_PERF_SEL_CLIENT2_INT = 143 -IH_PERF_SEL_CLIENT3_INT = 144 -IH_PERF_SEL_CLIENT4_INT = 145 -IH_PERF_SEL_CLIENT5_INT = 146 -IH_PERF_SEL_CLIENT6_INT = 147 -IH_PERF_SEL_CLIENT7_INT = 148 -IH_PERF_SEL_CLIENT8_INT = 149 -IH_PERF_SEL_CLIENT9_INT = 150 -IH_PERF_SEL_CLIENT10_INT = 151 -IH_PERF_SEL_CLIENT11_INT = 152 -IH_PERF_SEL_CLIENT12_INT = 153 -IH_PERF_SEL_CLIENT13_INT = 154 -IH_PERF_SEL_CLIENT14_INT = 155 -IH_PERF_SEL_CLIENT15_INT = 156 -IH_PERF_SEL_CLIENT16_INT = 157 -IH_PERF_SEL_CLIENT17_INT = 158 -IH_PERF_SEL_CLIENT18_INT = 159 -IH_PERF_SEL_CLIENT19_INT = 160 -IH_PERF_SEL_CLIENT20_INT = 161 -IH_PERF_SEL_CLIENT21_INT = 162 -IH_PERF_SEL_CLIENT22_INT = 163 -IH_PERF_SEL_CLIENT23_INT = 164 -IH_PERF_SEL_CLIENT24_INT = 165 -IH_PERF_SEL_CLIENT25_INT = 166 -IH_PERF_SEL_CLIENT26_INT = 167 -IH_PERF_SEL_CLIENT27_INT = 168 -IH_PERF_SEL_CLIENT28_INT = 169 -IH_PERF_SEL_CLIENT29_INT = 170 -IH_PERF_SEL_CLIENT30_INT = 171 -IH_PERF_SEL_CLIENT31_INT = 172 -IH_PERF_SEL_RB1_FULL_VF0 = 173 -IH_PERF_SEL_RB1_FULL_VF1 = 174 -IH_PERF_SEL_RB1_FULL_VF2 = 175 -IH_PERF_SEL_RB1_FULL_VF3 = 176 -IH_PERF_SEL_RB1_FULL_VF4 = 177 -IH_PERF_SEL_RB1_FULL_VF5 = 178 -IH_PERF_SEL_RB1_FULL_VF6 = 179 -IH_PERF_SEL_RB1_FULL_VF7 = 180 -IH_PERF_SEL_RB1_FULL_VF8 = 181 -IH_PERF_SEL_RB1_FULL_VF9 = 182 -IH_PERF_SEL_RB1_FULL_VF10 = 183 -IH_PERF_SEL_RB1_FULL_VF11 = 184 -IH_PERF_SEL_RB1_FULL_VF12 = 185 -IH_PERF_SEL_RB1_FULL_VF13 = 186 -IH_PERF_SEL_RB1_FULL_VF14 = 187 -IH_PERF_SEL_RB1_FULL_VF15 = 188 -IH_PERF_SEL_RB1_OVERFLOW_VF0 = 189 -IH_PERF_SEL_RB1_OVERFLOW_VF1 = 190 -IH_PERF_SEL_RB1_OVERFLOW_VF2 = 191 -IH_PERF_SEL_RB1_OVERFLOW_VF3 = 192 -IH_PERF_SEL_RB1_OVERFLOW_VF4 = 193 -IH_PERF_SEL_RB1_OVERFLOW_VF5 = 194 -IH_PERF_SEL_RB1_OVERFLOW_VF6 = 195 -IH_PERF_SEL_RB1_OVERFLOW_VF7 = 196 -IH_PERF_SEL_RB1_OVERFLOW_VF8 = 197 -IH_PERF_SEL_RB1_OVERFLOW_VF9 = 198 -IH_PERF_SEL_RB1_OVERFLOW_VF10 = 199 -IH_PERF_SEL_RB1_OVERFLOW_VF11 = 200 -IH_PERF_SEL_RB1_OVERFLOW_VF12 = 201 -IH_PERF_SEL_RB1_OVERFLOW_VF13 = 202 -IH_PERF_SEL_RB1_OVERFLOW_VF14 = 203 -IH_PERF_SEL_RB1_OVERFLOW_VF15 = 204 -IH_PERF_SEL_RB1_WPTR_WRAP_VF0 = 205 -IH_PERF_SEL_RB1_WPTR_WRAP_VF1 = 206 -IH_PERF_SEL_RB1_WPTR_WRAP_VF2 = 207 -IH_PERF_SEL_RB1_WPTR_WRAP_VF3 = 208 -IH_PERF_SEL_RB1_WPTR_WRAP_VF4 = 209 -IH_PERF_SEL_RB1_WPTR_WRAP_VF5 = 210 -IH_PERF_SEL_RB1_WPTR_WRAP_VF6 = 211 -IH_PERF_SEL_RB1_WPTR_WRAP_VF7 = 212 -IH_PERF_SEL_RB1_WPTR_WRAP_VF8 = 213 -IH_PERF_SEL_RB1_WPTR_WRAP_VF9 = 214 -IH_PERF_SEL_RB1_WPTR_WRAP_VF10 = 215 -IH_PERF_SEL_RB1_WPTR_WRAP_VF11 = 216 -IH_PERF_SEL_RB1_WPTR_WRAP_VF12 = 217 -IH_PERF_SEL_RB1_WPTR_WRAP_VF13 = 218 -IH_PERF_SEL_RB1_WPTR_WRAP_VF14 = 219 -IH_PERF_SEL_RB1_WPTR_WRAP_VF15 = 220 -IH_PERF_SEL_RB1_RPTR_WRAP_VF0 = 221 -IH_PERF_SEL_RB1_RPTR_WRAP_VF1 = 222 -IH_PERF_SEL_RB1_RPTR_WRAP_VF2 = 223 -IH_PERF_SEL_RB1_RPTR_WRAP_VF3 = 224 -IH_PERF_SEL_RB1_RPTR_WRAP_VF4 = 225 -IH_PERF_SEL_RB1_RPTR_WRAP_VF5 = 226 -IH_PERF_SEL_RB1_RPTR_WRAP_VF6 = 227 -IH_PERF_SEL_RB1_RPTR_WRAP_VF7 = 228 -IH_PERF_SEL_RB1_RPTR_WRAP_VF8 = 229 -IH_PERF_SEL_RB1_RPTR_WRAP_VF9 = 230 -IH_PERF_SEL_RB1_RPTR_WRAP_VF10 = 231 -IH_PERF_SEL_RB1_RPTR_WRAP_VF11 = 232 -IH_PERF_SEL_RB1_RPTR_WRAP_VF12 = 233 -IH_PERF_SEL_RB1_RPTR_WRAP_VF13 = 234 -IH_PERF_SEL_RB1_RPTR_WRAP_VF14 = 235 -IH_PERF_SEL_RB1_RPTR_WRAP_VF15 = 236 -IH_PERF_SEL_RB2_FULL_VF0 = 237 -IH_PERF_SEL_RB2_FULL_VF1 = 238 -IH_PERF_SEL_RB2_FULL_VF2 = 239 -IH_PERF_SEL_RB2_FULL_VF3 = 240 -IH_PERF_SEL_RB2_FULL_VF4 = 241 -IH_PERF_SEL_RB2_FULL_VF5 = 242 -IH_PERF_SEL_RB2_FULL_VF6 = 243 -IH_PERF_SEL_RB2_FULL_VF7 = 244 -IH_PERF_SEL_RB2_FULL_VF8 = 245 -IH_PERF_SEL_RB2_FULL_VF9 = 246 -IH_PERF_SEL_RB2_FULL_VF10 = 247 -IH_PERF_SEL_RB2_FULL_VF11 = 248 -IH_PERF_SEL_RB2_FULL_VF12 = 249 -IH_PERF_SEL_RB2_FULL_VF13 = 250 -IH_PERF_SEL_RB2_FULL_VF14 = 251 -IH_PERF_SEL_RB2_FULL_VF15 = 252 -IH_PERF_SEL_RB2_OVERFLOW_VF0 = 253 -IH_PERF_SEL_RB2_OVERFLOW_VF1 = 254 -IH_PERF_SEL_RB2_OVERFLOW_VF2 = 255 -IH_PERF_SEL_RB2_OVERFLOW_VF3 = 256 -IH_PERF_SEL_RB2_OVERFLOW_VF4 = 257 -IH_PERF_SEL_RB2_OVERFLOW_VF5 = 258 -IH_PERF_SEL_RB2_OVERFLOW_VF6 = 259 -IH_PERF_SEL_RB2_OVERFLOW_VF7 = 260 -IH_PERF_SEL_RB2_OVERFLOW_VF8 = 261 -IH_PERF_SEL_RB2_OVERFLOW_VF9 = 262 -IH_PERF_SEL_RB2_OVERFLOW_VF10 = 263 -IH_PERF_SEL_RB2_OVERFLOW_VF11 = 264 -IH_PERF_SEL_RB2_OVERFLOW_VF12 = 265 -IH_PERF_SEL_RB2_OVERFLOW_VF13 = 266 -IH_PERF_SEL_RB2_OVERFLOW_VF14 = 267 -IH_PERF_SEL_RB2_OVERFLOW_VF15 = 268 -IH_PERF_SEL_RB2_WPTR_WRAP_VF0 = 269 -IH_PERF_SEL_RB2_WPTR_WRAP_VF1 = 270 -IH_PERF_SEL_RB2_WPTR_WRAP_VF2 = 271 -IH_PERF_SEL_RB2_WPTR_WRAP_VF3 = 272 -IH_PERF_SEL_RB2_WPTR_WRAP_VF4 = 273 -IH_PERF_SEL_RB2_WPTR_WRAP_VF5 = 274 -IH_PERF_SEL_RB2_WPTR_WRAP_VF6 = 275 -IH_PERF_SEL_RB2_WPTR_WRAP_VF7 = 276 -IH_PERF_SEL_RB2_WPTR_WRAP_VF8 = 277 -IH_PERF_SEL_RB2_WPTR_WRAP_VF9 = 278 -IH_PERF_SEL_RB2_WPTR_WRAP_VF10 = 279 -IH_PERF_SEL_RB2_WPTR_WRAP_VF11 = 280 -IH_PERF_SEL_RB2_WPTR_WRAP_VF12 = 281 -IH_PERF_SEL_RB2_WPTR_WRAP_VF13 = 282 -IH_PERF_SEL_RB2_WPTR_WRAP_VF14 = 283 -IH_PERF_SEL_RB2_WPTR_WRAP_VF15 = 284 -IH_PERF_SEL_RB2_RPTR_WRAP_VF0 = 285 -IH_PERF_SEL_RB2_RPTR_WRAP_VF1 = 286 -IH_PERF_SEL_RB2_RPTR_WRAP_VF2 = 287 -IH_PERF_SEL_RB2_RPTR_WRAP_VF3 = 288 -IH_PERF_SEL_RB2_RPTR_WRAP_VF4 = 289 -IH_PERF_SEL_RB2_RPTR_WRAP_VF5 = 290 -IH_PERF_SEL_RB2_RPTR_WRAP_VF6 = 291 -IH_PERF_SEL_RB2_RPTR_WRAP_VF7 = 292 -IH_PERF_SEL_RB2_RPTR_WRAP_VF8 = 293 -IH_PERF_SEL_RB2_RPTR_WRAP_VF9 = 294 -IH_PERF_SEL_RB2_RPTR_WRAP_VF10 = 295 -IH_PERF_SEL_RB2_RPTR_WRAP_VF11 = 296 -IH_PERF_SEL_RB2_RPTR_WRAP_VF12 = 297 -IH_PERF_SEL_RB2_RPTR_WRAP_VF13 = 298 -IH_PERF_SEL_RB2_RPTR_WRAP_VF14 = 299 -IH_PERF_SEL_RB2_RPTR_WRAP_VF15 = 300 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP = 301 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF0 = 302 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF1 = 303 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF2 = 304 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF3 = 305 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF4 = 306 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF5 = 307 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF6 = 308 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF7 = 309 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF8 = 310 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF9 = 311 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF10 = 312 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF11 = 313 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF12 = 314 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF13 = 315 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF14 = 316 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF15 = 317 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP = 318 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF0 = 319 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF1 = 320 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF2 = 321 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF3 = 322 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF4 = 323 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF5 = 324 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF6 = 325 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF7 = 326 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF8 = 327 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF9 = 328 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF10 = 329 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF11 = 330 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF12 = 331 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF13 = 332 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF14 = 333 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF15 = 334 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP = 335 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF0 = 336 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF1 = 337 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF2 = 338 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF3 = 339 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF4 = 340 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF5 = 341 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF6 = 342 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF7 = 343 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF8 = 344 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF9 = 345 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF10 = 346 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF11 = 347 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF12 = 348 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF13 = 349 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF14 = 350 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF15 = 351 -IH_PERF_SEL_RB0_LOAD_RPTR = 352 -IH_PERF_SEL_RB0_LOAD_RPTR_VF0 = 353 -IH_PERF_SEL_RB0_LOAD_RPTR_VF1 = 354 -IH_PERF_SEL_RB0_LOAD_RPTR_VF2 = 355 -IH_PERF_SEL_RB0_LOAD_RPTR_VF3 = 356 -IH_PERF_SEL_RB0_LOAD_RPTR_VF4 = 357 -IH_PERF_SEL_RB0_LOAD_RPTR_VF5 = 358 -IH_PERF_SEL_RB0_LOAD_RPTR_VF6 = 359 -IH_PERF_SEL_RB0_LOAD_RPTR_VF7 = 360 -IH_PERF_SEL_RB0_LOAD_RPTR_VF8 = 361 -IH_PERF_SEL_RB0_LOAD_RPTR_VF9 = 362 -IH_PERF_SEL_RB0_LOAD_RPTR_VF10 = 363 -IH_PERF_SEL_RB0_LOAD_RPTR_VF11 = 364 -IH_PERF_SEL_RB0_LOAD_RPTR_VF12 = 365 -IH_PERF_SEL_RB0_LOAD_RPTR_VF13 = 366 -IH_PERF_SEL_RB0_LOAD_RPTR_VF14 = 367 -IH_PERF_SEL_RB0_LOAD_RPTR_VF15 = 368 -IH_PERF_SEL_RB1_LOAD_RPTR = 369 -IH_PERF_SEL_RB1_LOAD_RPTR_VF0 = 370 -IH_PERF_SEL_RB1_LOAD_RPTR_VF1 = 371 -IH_PERF_SEL_RB1_LOAD_RPTR_VF2 = 372 -IH_PERF_SEL_RB1_LOAD_RPTR_VF3 = 373 -IH_PERF_SEL_RB1_LOAD_RPTR_VF4 = 374 -IH_PERF_SEL_RB1_LOAD_RPTR_VF5 = 375 -IH_PERF_SEL_RB1_LOAD_RPTR_VF6 = 376 -IH_PERF_SEL_RB1_LOAD_RPTR_VF7 = 377 -IH_PERF_SEL_RB1_LOAD_RPTR_VF8 = 378 -IH_PERF_SEL_RB1_LOAD_RPTR_VF9 = 379 -IH_PERF_SEL_RB1_LOAD_RPTR_VF10 = 380 -IH_PERF_SEL_RB1_LOAD_RPTR_VF11 = 381 -IH_PERF_SEL_RB1_LOAD_RPTR_VF12 = 382 -IH_PERF_SEL_RB1_LOAD_RPTR_VF13 = 383 -IH_PERF_SEL_RB1_LOAD_RPTR_VF14 = 384 -IH_PERF_SEL_RB1_LOAD_RPTR_VF15 = 385 -IH_PERF_SEL_RB2_LOAD_RPTR = 386 -IH_PERF_SEL_RB2_LOAD_RPTR_VF0 = 387 -IH_PERF_SEL_RB2_LOAD_RPTR_VF1 = 388 -IH_PERF_SEL_RB2_LOAD_RPTR_VF2 = 389 -IH_PERF_SEL_RB2_LOAD_RPTR_VF3 = 390 -IH_PERF_SEL_RB2_LOAD_RPTR_VF4 = 391 -IH_PERF_SEL_RB2_LOAD_RPTR_VF5 = 392 -IH_PERF_SEL_RB2_LOAD_RPTR_VF6 = 393 -IH_PERF_SEL_RB2_LOAD_RPTR_VF7 = 394 -IH_PERF_SEL_RB2_LOAD_RPTR_VF8 = 395 -IH_PERF_SEL_RB2_LOAD_RPTR_VF9 = 396 -IH_PERF_SEL_RB2_LOAD_RPTR_VF10 = 397 -IH_PERF_SEL_RB2_LOAD_RPTR_VF11 = 398 -IH_PERF_SEL_RB2_LOAD_RPTR_VF12 = 399 -IH_PERF_SEL_RB2_LOAD_RPTR_VF13 = 400 -IH_PERF_SEL_RB2_LOAD_RPTR_VF14 = 401 -IH_PERF_SEL_RB2_LOAD_RPTR_VF15 = 402 -IH_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'IH_RING_ID' -IH_RING_ID__enumvalues = { - 0: 'IH_RING_ID_INTERRUPT', - 1: 'IH_RING_ID_REQUEST', - 2: 'IH_RING_ID_TRANSLATION', - 3: 'IH_RING_ID_RESERVED', -} -IH_RING_ID_INTERRUPT = 0 -IH_RING_ID_REQUEST = 1 -IH_RING_ID_TRANSLATION = 2 -IH_RING_ID_RESERVED = 3 -IH_RING_ID = ctypes.c_uint32 # enum - -# values for enumeration 'IH_VF_RB_SELECT' -IH_VF_RB_SELECT__enumvalues = { - 0: 'IH_VF_RB_SELECT_CLIENT_FCN_ID', - 1: 'IH_VF_RB_SELECT_IH_FCN_ID', - 2: 'IH_VF_RB_SELECT_PF', - 3: 'IH_VF_RB_SELECT_RESERVED', -} -IH_VF_RB_SELECT_CLIENT_FCN_ID = 0 -IH_VF_RB_SELECT_IH_FCN_ID = 1 -IH_VF_RB_SELECT_PF = 2 -IH_VF_RB_SELECT_RESERVED = 3 -IH_VF_RB_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'SEM_PERF_SEL' -SEM_PERF_SEL__enumvalues = { - 0: 'SEM_PERF_SEL_CYCLE', - 1: 'SEM_PERF_SEL_IDLE', - 2: 'SEM_PERF_SEL_SDMA0_REQ_SIGNAL', - 3: 'SEM_PERF_SEL_SDMA1_REQ_SIGNAL', - 4: 'SEM_PERF_SEL_SDMA2_REQ_SIGNAL', - 5: 'SEM_PERF_SEL_SDMA3_REQ_SIGNAL', - 6: 'SEM_PERF_SEL_UVD_REQ_SIGNAL', - 7: 'SEM_PERF_SEL_UVD1_REQ_SIGNAL', - 8: 'SEM_PERF_SEL_VCE0_REQ_SIGNAL', - 9: 'SEM_PERF_SEL_ACP_REQ_SIGNAL', - 10: 'SEM_PERF_SEL_ISP_REQ_SIGNAL', - 11: 'SEM_PERF_SEL_VCE1_REQ_SIGNAL', - 12: 'SEM_PERF_SEL_VP8_REQ_SIGNAL', - 13: 'SEM_PERF_SEL_CPG_E0_REQ_SIGNAL', - 14: 'SEM_PERF_SEL_CPG_E1_REQ_SIGNAL', - 15: 'SEM_PERF_SEL_CPC1_IMME_E0_REQ_SIGNAL', - 16: 'SEM_PERF_SEL_CPC1_IMME_E1_REQ_SIGNAL', - 17: 'SEM_PERF_SEL_CPC1_IMME_E2_REQ_SIGNAL', - 18: 'SEM_PERF_SEL_CPC1_IMME_E3_REQ_SIGNAL', - 19: 'SEM_PERF_SEL_CPC2_IMME_E0_REQ_SIGNAL', - 20: 'SEM_PERF_SEL_CPC2_IMME_E1_REQ_SIGNAL', - 21: 'SEM_PERF_SEL_CPC2_IMME_E2_REQ_SIGNAL', - 22: 'SEM_PERF_SEL_CPC2_IMME_E3_REQ_SIGNAL', - 23: 'SEM_PERF_SEL_SDMA0_REQ_WAIT', - 24: 'SEM_PERF_SEL_SDMA1_REQ_WAIT', - 25: 'SEM_PERF_SEL_SDMA2_REQ_WAIT', - 26: 'SEM_PERF_SEL_SDMA3_REQ_WAIT', - 27: 'SEM_PERF_SEL_UVD_REQ_WAIT', - 28: 'SEM_PERF_SEL_UVD1_REQ_WAIT', - 29: 'SEM_PERF_SEL_VCE0_REQ_WAIT', - 30: 'SEM_PERF_SEL_ACP_REQ_WAIT', - 31: 'SEM_PERF_SEL_ISP_REQ_WAIT', - 32: 'SEM_PERF_SEL_VCE1_REQ_WAIT', - 33: 'SEM_PERF_SEL_VP8_REQ_WAIT', - 34: 'SEM_PERF_SEL_CPG_E0_REQ_WAIT', - 35: 'SEM_PERF_SEL_CPG_E1_REQ_WAIT', - 36: 'SEM_PERF_SEL_CPC1_IMME_E0_REQ_WAIT', - 37: 'SEM_PERF_SEL_CPC1_IMME_E1_REQ_WAIT', - 38: 'SEM_PERF_SEL_CPC1_IMME_E2_REQ_WAIT', - 39: 'SEM_PERF_SEL_CPC1_IMME_E3_REQ_WAIT', - 40: 'SEM_PERF_SEL_CPC2_IMME_E0_REQ_WAIT', - 41: 'SEM_PERF_SEL_CPC2_IMME_E1_REQ_WAIT', - 42: 'SEM_PERF_SEL_CPC2_IMME_E2_REQ_WAIT', - 43: 'SEM_PERF_SEL_CPC2_IMME_E3_REQ_WAIT', - 44: 'SEM_PERF_SEL_CPC1_OFFL_E0_REQ_WAIT', - 45: 'SEM_PERF_SEL_CPC1_OFFL_E1_REQ_WAIT', - 46: 'SEM_PERF_SEL_CPC1_OFFL_E2_REQ_WAIT', - 47: 'SEM_PERF_SEL_CPC1_OFFL_E3_REQ_WAIT', - 48: 'SEM_PERF_SEL_CPC1_OFFL_E4_REQ_WAIT', - 49: 'SEM_PERF_SEL_CPC1_OFFL_E5_REQ_WAIT', - 50: 'SEM_PERF_SEL_CPC1_OFFL_E6_REQ_WAIT', - 51: 'SEM_PERF_SEL_CPC1_OFFL_E7_REQ_WAIT', - 52: 'SEM_PERF_SEL_CPC1_OFFL_E8_REQ_WAIT', - 53: 'SEM_PERF_SEL_CPC1_OFFL_E9_REQ_WAIT', - 54: 'SEM_PERF_SEL_CPC1_OFFL_E10_REQ_WAIT', - 55: 'SEM_PERF_SEL_CPC1_OFFL_E11_REQ_WAIT', - 56: 'SEM_PERF_SEL_CPC1_OFFL_E12_REQ_WAIT', - 57: 'SEM_PERF_SEL_CPC1_OFFL_E13_REQ_WAIT', - 58: 'SEM_PERF_SEL_CPC1_OFFL_E14_REQ_WAIT', - 59: 'SEM_PERF_SEL_CPC1_OFFL_E15_REQ_WAIT', - 60: 'SEM_PERF_SEL_CPC1_OFFL_E16_REQ_WAIT', - 61: 'SEM_PERF_SEL_CPC1_OFFL_E17_REQ_WAIT', - 62: 'SEM_PERF_SEL_CPC1_OFFL_E18_REQ_WAIT', - 63: 'SEM_PERF_SEL_CPC1_OFFL_E19_REQ_WAIT', - 64: 'SEM_PERF_SEL_CPC1_OFFL_E20_REQ_WAIT', - 65: 'SEM_PERF_SEL_CPC1_OFFL_E21_REQ_WAIT', - 66: 'SEM_PERF_SEL_CPC1_OFFL_E22_REQ_WAIT', - 67: 'SEM_PERF_SEL_CPC1_OFFL_E23_REQ_WAIT', - 68: 'SEM_PERF_SEL_CPC1_OFFL_E24_REQ_WAIT', - 69: 'SEM_PERF_SEL_CPC1_OFFL_E25_REQ_WAIT', - 70: 'SEM_PERF_SEL_CPC1_OFFL_E26_REQ_WAIT', - 71: 'SEM_PERF_SEL_CPC1_OFFL_E27_REQ_WAIT', - 72: 'SEM_PERF_SEL_CPC1_OFFL_E28_REQ_WAIT', - 73: 'SEM_PERF_SEL_CPC1_OFFL_E29_REQ_WAIT', - 74: 'SEM_PERF_SEL_CPC1_OFFL_E30_REQ_WAIT', - 75: 'SEM_PERF_SEL_CPC1_OFFL_E31_REQ_WAIT', - 76: 'SEM_PERF_SEL_CPC2_OFFL_E0_REQ_WAIT', - 77: 'SEM_PERF_SEL_CPC2_OFFL_E1_REQ_WAIT', - 78: 'SEM_PERF_SEL_CPC2_OFFL_E2_REQ_WAIT', - 79: 'SEM_PERF_SEL_CPC2_OFFL_E3_REQ_WAIT', - 80: 'SEM_PERF_SEL_CPC2_OFFL_E4_REQ_WAIT', - 81: 'SEM_PERF_SEL_CPC2_OFFL_E5_REQ_WAIT', - 82: 'SEM_PERF_SEL_CPC2_OFFL_E6_REQ_WAIT', - 83: 'SEM_PERF_SEL_CPC2_OFFL_E7_REQ_WAIT', - 84: 'SEM_PERF_SEL_CPC2_OFFL_E8_REQ_WAIT', - 85: 'SEM_PERF_SEL_CPC2_OFFL_E9_REQ_WAIT', - 86: 'SEM_PERF_SEL_CPC2_OFFL_E10_REQ_WAIT', - 87: 'SEM_PERF_SEL_CPC2_OFFL_E11_REQ_WAIT', - 88: 'SEM_PERF_SEL_CPC2_OFFL_E12_REQ_WAIT', - 89: 'SEM_PERF_SEL_CPC2_OFFL_E13_REQ_WAIT', - 90: 'SEM_PERF_SEL_CPC2_OFFL_E14_REQ_WAIT', - 91: 'SEM_PERF_SEL_CPC2_OFFL_E15_REQ_WAIT', - 92: 'SEM_PERF_SEL_CPC2_OFFL_E16_REQ_WAIT', - 93: 'SEM_PERF_SEL_CPC2_OFFL_E17_REQ_WAIT', - 94: 'SEM_PERF_SEL_CPC2_OFFL_E18_REQ_WAIT', - 95: 'SEM_PERF_SEL_CPC2_OFFL_E19_REQ_WAIT', - 96: 'SEM_PERF_SEL_CPC2_OFFL_E20_REQ_WAIT', - 97: 'SEM_PERF_SEL_CPC2_OFFL_E21_REQ_WAIT', - 98: 'SEM_PERF_SEL_CPC2_OFFL_E22_REQ_WAIT', - 99: 'SEM_PERF_SEL_CPC2_OFFL_E23_REQ_WAIT', - 100: 'SEM_PERF_SEL_CPC2_OFFL_E24_REQ_WAIT', - 101: 'SEM_PERF_SEL_CPC2_OFFL_E25_REQ_WAIT', - 102: 'SEM_PERF_SEL_CPC2_OFFL_E26_REQ_WAIT', - 103: 'SEM_PERF_SEL_CPC2_OFFL_E27_REQ_WAIT', - 104: 'SEM_PERF_SEL_CPC2_OFFL_E28_REQ_WAIT', - 105: 'SEM_PERF_SEL_CPC2_OFFL_E29_REQ_WAIT', - 106: 'SEM_PERF_SEL_CPC2_OFFL_E30_REQ_WAIT', - 107: 'SEM_PERF_SEL_CPC2_OFFL_E31_REQ_WAIT', - 108: 'SEM_PERF_SEL_CPC1_OFFL_E0_POLL_WAIT', - 109: 'SEM_PERF_SEL_CPC1_OFFL_E1_POLL_WAIT', - 110: 'SEM_PERF_SEL_CPC1_OFFL_E2_POLL_WAIT', - 111: 'SEM_PERF_SEL_CPC1_OFFL_E3_POLL_WAIT', - 112: 'SEM_PERF_SEL_CPC1_OFFL_E4_POLL_WAIT', - 113: 'SEM_PERF_SEL_CPC1_OFFL_E5_POLL_WAIT', - 114: 'SEM_PERF_SEL_CPC1_OFFL_E6_POLL_WAIT', - 115: 'SEM_PERF_SEL_CPC1_OFFL_E7_POLL_WAIT', - 116: 'SEM_PERF_SEL_CPC1_OFFL_E8_POLL_WAIT', - 117: 'SEM_PERF_SEL_CPC1_OFFL_E9_POLL_WAIT', - 118: 'SEM_PERF_SEL_CPC1_OFFL_E10_POLL_WAIT', - 119: 'SEM_PERF_SEL_CPC1_OFFL_E11_POLL_WAIT', - 120: 'SEM_PERF_SEL_CPC1_OFFL_E12_POLL_WAIT', - 121: 'SEM_PERF_SEL_CPC1_OFFL_E13_POLL_WAIT', - 122: 'SEM_PERF_SEL_CPC1_OFFL_E14_POLL_WAIT', - 123: 'SEM_PERF_SEL_CPC1_OFFL_E15_POLL_WAIT', - 124: 'SEM_PERF_SEL_CPC1_OFFL_E16_POLL_WAIT', - 125: 'SEM_PERF_SEL_CPC1_OFFL_E17_POLL_WAIT', - 126: 'SEM_PERF_SEL_CPC1_OFFL_E18_POLL_WAIT', - 127: 'SEM_PERF_SEL_CPC1_OFFL_E19_POLL_WAIT', - 128: 'SEM_PERF_SEL_CPC1_OFFL_E20_POLL_WAIT', - 129: 'SEM_PERF_SEL_CPC1_OFFL_E21_POLL_WAIT', - 130: 'SEM_PERF_SEL_CPC1_OFFL_E22_POLL_WAIT', - 131: 'SEM_PERF_SEL_CPC1_OFFL_E23_POLL_WAIT', - 132: 'SEM_PERF_SEL_CPC1_OFFL_E24_POLL_WAIT', - 133: 'SEM_PERF_SEL_CPC1_OFFL_E25_POLL_WAIT', - 134: 'SEM_PERF_SEL_CPC1_OFFL_E26_POLL_WAIT', - 135: 'SEM_PERF_SEL_CPC1_OFFL_E27_POLL_WAIT', - 136: 'SEM_PERF_SEL_CPC1_OFFL_E28_POLL_WAIT', - 137: 'SEM_PERF_SEL_CPC1_OFFL_E29_POLL_WAIT', - 138: 'SEM_PERF_SEL_CPC1_OFFL_E30_POLL_WAIT', - 139: 'SEM_PERF_SEL_CPC1_OFFL_E31_POLL_WAIT', - 140: 'SEM_PERF_SEL_CPC2_OFFL_E0_POLL_WAIT', - 141: 'SEM_PERF_SEL_CPC2_OFFL_E1_POLL_WAIT', - 142: 'SEM_PERF_SEL_CPC2_OFFL_E2_POLL_WAIT', - 143: 'SEM_PERF_SEL_CPC2_OFFL_E3_POLL_WAIT', - 144: 'SEM_PERF_SEL_CPC2_OFFL_E4_POLL_WAIT', - 145: 'SEM_PERF_SEL_CPC2_OFFL_E5_POLL_WAIT', - 146: 'SEM_PERF_SEL_CPC2_OFFL_E6_POLL_WAIT', - 147: 'SEM_PERF_SEL_CPC2_OFFL_E7_POLL_WAIT', - 148: 'SEM_PERF_SEL_CPC2_OFFL_E8_POLL_WAIT', - 149: 'SEM_PERF_SEL_CPC2_OFFL_E9_POLL_WAIT', - 150: 'SEM_PERF_SEL_CPC2_OFFL_E10_POLL_WAIT', - 151: 'SEM_PERF_SEL_CPC2_OFFL_E11_POLL_WAIT', - 152: 'SEM_PERF_SEL_CPC2_OFFL_E12_POLL_WAIT', - 153: 'SEM_PERF_SEL_CPC2_OFFL_E13_POLL_WAIT', - 154: 'SEM_PERF_SEL_CPC2_OFFL_E14_POLL_WAIT', - 155: 'SEM_PERF_SEL_CPC2_OFFL_E15_POLL_WAIT', - 156: 'SEM_PERF_SEL_CPC2_OFFL_E16_POLL_WAIT', - 157: 'SEM_PERF_SEL_CPC2_OFFL_E17_POLL_WAIT', - 158: 'SEM_PERF_SEL_CPC2_OFFL_E18_POLL_WAIT', - 159: 'SEM_PERF_SEL_CPC2_OFFL_E19_POLL_WAIT', - 160: 'SEM_PERF_SEL_CPC2_OFFL_E20_POLL_WAIT', - 161: 'SEM_PERF_SEL_CPC2_OFFL_E21_POLL_WAIT', - 162: 'SEM_PERF_SEL_CPC2_OFFL_E22_POLL_WAIT', - 163: 'SEM_PERF_SEL_CPC2_OFFL_E23_POLL_WAIT', - 164: 'SEM_PERF_SEL_CPC2_OFFL_E24_POLL_WAIT', - 165: 'SEM_PERF_SEL_CPC2_OFFL_E25_POLL_WAIT', - 166: 'SEM_PERF_SEL_CPC2_OFFL_E26_POLL_WAIT', - 167: 'SEM_PERF_SEL_CPC2_OFFL_E27_POLL_WAIT', - 168: 'SEM_PERF_SEL_CPC2_OFFL_E28_POLL_WAIT', - 169: 'SEM_PERF_SEL_CPC2_OFFL_E29_POLL_WAIT', - 170: 'SEM_PERF_SEL_CPC2_OFFL_E30_POLL_WAIT', - 171: 'SEM_PERF_SEL_CPC2_OFFL_E31_POLL_WAIT', - 172: 'SEM_PERF_SEL_MC_RD_REQ', - 173: 'SEM_PERF_SEL_MC_RD_RET', - 174: 'SEM_PERF_SEL_MC_WR_REQ', - 175: 'SEM_PERF_SEL_MC_WR_RET', - 176: 'SEM_PERF_SEL_ATC_REQ', - 177: 'SEM_PERF_SEL_ATC_RET', - 178: 'SEM_PERF_SEL_ATC_XNACK', - 179: 'SEM_PERF_SEL_ATC_INVALIDATION', - 180: 'SEM_PERF_SEL_ATC_VM_INVALIDATION', -} -SEM_PERF_SEL_CYCLE = 0 -SEM_PERF_SEL_IDLE = 1 -SEM_PERF_SEL_SDMA0_REQ_SIGNAL = 2 -SEM_PERF_SEL_SDMA1_REQ_SIGNAL = 3 -SEM_PERF_SEL_SDMA2_REQ_SIGNAL = 4 -SEM_PERF_SEL_SDMA3_REQ_SIGNAL = 5 -SEM_PERF_SEL_UVD_REQ_SIGNAL = 6 -SEM_PERF_SEL_UVD1_REQ_SIGNAL = 7 -SEM_PERF_SEL_VCE0_REQ_SIGNAL = 8 -SEM_PERF_SEL_ACP_REQ_SIGNAL = 9 -SEM_PERF_SEL_ISP_REQ_SIGNAL = 10 -SEM_PERF_SEL_VCE1_REQ_SIGNAL = 11 -SEM_PERF_SEL_VP8_REQ_SIGNAL = 12 -SEM_PERF_SEL_CPG_E0_REQ_SIGNAL = 13 -SEM_PERF_SEL_CPG_E1_REQ_SIGNAL = 14 -SEM_PERF_SEL_CPC1_IMME_E0_REQ_SIGNAL = 15 -SEM_PERF_SEL_CPC1_IMME_E1_REQ_SIGNAL = 16 -SEM_PERF_SEL_CPC1_IMME_E2_REQ_SIGNAL = 17 -SEM_PERF_SEL_CPC1_IMME_E3_REQ_SIGNAL = 18 -SEM_PERF_SEL_CPC2_IMME_E0_REQ_SIGNAL = 19 -SEM_PERF_SEL_CPC2_IMME_E1_REQ_SIGNAL = 20 -SEM_PERF_SEL_CPC2_IMME_E2_REQ_SIGNAL = 21 -SEM_PERF_SEL_CPC2_IMME_E3_REQ_SIGNAL = 22 -SEM_PERF_SEL_SDMA0_REQ_WAIT = 23 -SEM_PERF_SEL_SDMA1_REQ_WAIT = 24 -SEM_PERF_SEL_SDMA2_REQ_WAIT = 25 -SEM_PERF_SEL_SDMA3_REQ_WAIT = 26 -SEM_PERF_SEL_UVD_REQ_WAIT = 27 -SEM_PERF_SEL_UVD1_REQ_WAIT = 28 -SEM_PERF_SEL_VCE0_REQ_WAIT = 29 -SEM_PERF_SEL_ACP_REQ_WAIT = 30 -SEM_PERF_SEL_ISP_REQ_WAIT = 31 -SEM_PERF_SEL_VCE1_REQ_WAIT = 32 -SEM_PERF_SEL_VP8_REQ_WAIT = 33 -SEM_PERF_SEL_CPG_E0_REQ_WAIT = 34 -SEM_PERF_SEL_CPG_E1_REQ_WAIT = 35 -SEM_PERF_SEL_CPC1_IMME_E0_REQ_WAIT = 36 -SEM_PERF_SEL_CPC1_IMME_E1_REQ_WAIT = 37 -SEM_PERF_SEL_CPC1_IMME_E2_REQ_WAIT = 38 -SEM_PERF_SEL_CPC1_IMME_E3_REQ_WAIT = 39 -SEM_PERF_SEL_CPC2_IMME_E0_REQ_WAIT = 40 -SEM_PERF_SEL_CPC2_IMME_E1_REQ_WAIT = 41 -SEM_PERF_SEL_CPC2_IMME_E2_REQ_WAIT = 42 -SEM_PERF_SEL_CPC2_IMME_E3_REQ_WAIT = 43 -SEM_PERF_SEL_CPC1_OFFL_E0_REQ_WAIT = 44 -SEM_PERF_SEL_CPC1_OFFL_E1_REQ_WAIT = 45 -SEM_PERF_SEL_CPC1_OFFL_E2_REQ_WAIT = 46 -SEM_PERF_SEL_CPC1_OFFL_E3_REQ_WAIT = 47 -SEM_PERF_SEL_CPC1_OFFL_E4_REQ_WAIT = 48 -SEM_PERF_SEL_CPC1_OFFL_E5_REQ_WAIT = 49 -SEM_PERF_SEL_CPC1_OFFL_E6_REQ_WAIT = 50 -SEM_PERF_SEL_CPC1_OFFL_E7_REQ_WAIT = 51 -SEM_PERF_SEL_CPC1_OFFL_E8_REQ_WAIT = 52 -SEM_PERF_SEL_CPC1_OFFL_E9_REQ_WAIT = 53 -SEM_PERF_SEL_CPC1_OFFL_E10_REQ_WAIT = 54 -SEM_PERF_SEL_CPC1_OFFL_E11_REQ_WAIT = 55 -SEM_PERF_SEL_CPC1_OFFL_E12_REQ_WAIT = 56 -SEM_PERF_SEL_CPC1_OFFL_E13_REQ_WAIT = 57 -SEM_PERF_SEL_CPC1_OFFL_E14_REQ_WAIT = 58 -SEM_PERF_SEL_CPC1_OFFL_E15_REQ_WAIT = 59 -SEM_PERF_SEL_CPC1_OFFL_E16_REQ_WAIT = 60 -SEM_PERF_SEL_CPC1_OFFL_E17_REQ_WAIT = 61 -SEM_PERF_SEL_CPC1_OFFL_E18_REQ_WAIT = 62 -SEM_PERF_SEL_CPC1_OFFL_E19_REQ_WAIT = 63 -SEM_PERF_SEL_CPC1_OFFL_E20_REQ_WAIT = 64 -SEM_PERF_SEL_CPC1_OFFL_E21_REQ_WAIT = 65 -SEM_PERF_SEL_CPC1_OFFL_E22_REQ_WAIT = 66 -SEM_PERF_SEL_CPC1_OFFL_E23_REQ_WAIT = 67 -SEM_PERF_SEL_CPC1_OFFL_E24_REQ_WAIT = 68 -SEM_PERF_SEL_CPC1_OFFL_E25_REQ_WAIT = 69 -SEM_PERF_SEL_CPC1_OFFL_E26_REQ_WAIT = 70 -SEM_PERF_SEL_CPC1_OFFL_E27_REQ_WAIT = 71 -SEM_PERF_SEL_CPC1_OFFL_E28_REQ_WAIT = 72 -SEM_PERF_SEL_CPC1_OFFL_E29_REQ_WAIT = 73 -SEM_PERF_SEL_CPC1_OFFL_E30_REQ_WAIT = 74 -SEM_PERF_SEL_CPC1_OFFL_E31_REQ_WAIT = 75 -SEM_PERF_SEL_CPC2_OFFL_E0_REQ_WAIT = 76 -SEM_PERF_SEL_CPC2_OFFL_E1_REQ_WAIT = 77 -SEM_PERF_SEL_CPC2_OFFL_E2_REQ_WAIT = 78 -SEM_PERF_SEL_CPC2_OFFL_E3_REQ_WAIT = 79 -SEM_PERF_SEL_CPC2_OFFL_E4_REQ_WAIT = 80 -SEM_PERF_SEL_CPC2_OFFL_E5_REQ_WAIT = 81 -SEM_PERF_SEL_CPC2_OFFL_E6_REQ_WAIT = 82 -SEM_PERF_SEL_CPC2_OFFL_E7_REQ_WAIT = 83 -SEM_PERF_SEL_CPC2_OFFL_E8_REQ_WAIT = 84 -SEM_PERF_SEL_CPC2_OFFL_E9_REQ_WAIT = 85 -SEM_PERF_SEL_CPC2_OFFL_E10_REQ_WAIT = 86 -SEM_PERF_SEL_CPC2_OFFL_E11_REQ_WAIT = 87 -SEM_PERF_SEL_CPC2_OFFL_E12_REQ_WAIT = 88 -SEM_PERF_SEL_CPC2_OFFL_E13_REQ_WAIT = 89 -SEM_PERF_SEL_CPC2_OFFL_E14_REQ_WAIT = 90 -SEM_PERF_SEL_CPC2_OFFL_E15_REQ_WAIT = 91 -SEM_PERF_SEL_CPC2_OFFL_E16_REQ_WAIT = 92 -SEM_PERF_SEL_CPC2_OFFL_E17_REQ_WAIT = 93 -SEM_PERF_SEL_CPC2_OFFL_E18_REQ_WAIT = 94 -SEM_PERF_SEL_CPC2_OFFL_E19_REQ_WAIT = 95 -SEM_PERF_SEL_CPC2_OFFL_E20_REQ_WAIT = 96 -SEM_PERF_SEL_CPC2_OFFL_E21_REQ_WAIT = 97 -SEM_PERF_SEL_CPC2_OFFL_E22_REQ_WAIT = 98 -SEM_PERF_SEL_CPC2_OFFL_E23_REQ_WAIT = 99 -SEM_PERF_SEL_CPC2_OFFL_E24_REQ_WAIT = 100 -SEM_PERF_SEL_CPC2_OFFL_E25_REQ_WAIT = 101 -SEM_PERF_SEL_CPC2_OFFL_E26_REQ_WAIT = 102 -SEM_PERF_SEL_CPC2_OFFL_E27_REQ_WAIT = 103 -SEM_PERF_SEL_CPC2_OFFL_E28_REQ_WAIT = 104 -SEM_PERF_SEL_CPC2_OFFL_E29_REQ_WAIT = 105 -SEM_PERF_SEL_CPC2_OFFL_E30_REQ_WAIT = 106 -SEM_PERF_SEL_CPC2_OFFL_E31_REQ_WAIT = 107 -SEM_PERF_SEL_CPC1_OFFL_E0_POLL_WAIT = 108 -SEM_PERF_SEL_CPC1_OFFL_E1_POLL_WAIT = 109 -SEM_PERF_SEL_CPC1_OFFL_E2_POLL_WAIT = 110 -SEM_PERF_SEL_CPC1_OFFL_E3_POLL_WAIT = 111 -SEM_PERF_SEL_CPC1_OFFL_E4_POLL_WAIT = 112 -SEM_PERF_SEL_CPC1_OFFL_E5_POLL_WAIT = 113 -SEM_PERF_SEL_CPC1_OFFL_E6_POLL_WAIT = 114 -SEM_PERF_SEL_CPC1_OFFL_E7_POLL_WAIT = 115 -SEM_PERF_SEL_CPC1_OFFL_E8_POLL_WAIT = 116 -SEM_PERF_SEL_CPC1_OFFL_E9_POLL_WAIT = 117 -SEM_PERF_SEL_CPC1_OFFL_E10_POLL_WAIT = 118 -SEM_PERF_SEL_CPC1_OFFL_E11_POLL_WAIT = 119 -SEM_PERF_SEL_CPC1_OFFL_E12_POLL_WAIT = 120 -SEM_PERF_SEL_CPC1_OFFL_E13_POLL_WAIT = 121 -SEM_PERF_SEL_CPC1_OFFL_E14_POLL_WAIT = 122 -SEM_PERF_SEL_CPC1_OFFL_E15_POLL_WAIT = 123 -SEM_PERF_SEL_CPC1_OFFL_E16_POLL_WAIT = 124 -SEM_PERF_SEL_CPC1_OFFL_E17_POLL_WAIT = 125 -SEM_PERF_SEL_CPC1_OFFL_E18_POLL_WAIT = 126 -SEM_PERF_SEL_CPC1_OFFL_E19_POLL_WAIT = 127 -SEM_PERF_SEL_CPC1_OFFL_E20_POLL_WAIT = 128 -SEM_PERF_SEL_CPC1_OFFL_E21_POLL_WAIT = 129 -SEM_PERF_SEL_CPC1_OFFL_E22_POLL_WAIT = 130 -SEM_PERF_SEL_CPC1_OFFL_E23_POLL_WAIT = 131 -SEM_PERF_SEL_CPC1_OFFL_E24_POLL_WAIT = 132 -SEM_PERF_SEL_CPC1_OFFL_E25_POLL_WAIT = 133 -SEM_PERF_SEL_CPC1_OFFL_E26_POLL_WAIT = 134 -SEM_PERF_SEL_CPC1_OFFL_E27_POLL_WAIT = 135 -SEM_PERF_SEL_CPC1_OFFL_E28_POLL_WAIT = 136 -SEM_PERF_SEL_CPC1_OFFL_E29_POLL_WAIT = 137 -SEM_PERF_SEL_CPC1_OFFL_E30_POLL_WAIT = 138 -SEM_PERF_SEL_CPC1_OFFL_E31_POLL_WAIT = 139 -SEM_PERF_SEL_CPC2_OFFL_E0_POLL_WAIT = 140 -SEM_PERF_SEL_CPC2_OFFL_E1_POLL_WAIT = 141 -SEM_PERF_SEL_CPC2_OFFL_E2_POLL_WAIT = 142 -SEM_PERF_SEL_CPC2_OFFL_E3_POLL_WAIT = 143 -SEM_PERF_SEL_CPC2_OFFL_E4_POLL_WAIT = 144 -SEM_PERF_SEL_CPC2_OFFL_E5_POLL_WAIT = 145 -SEM_PERF_SEL_CPC2_OFFL_E6_POLL_WAIT = 146 -SEM_PERF_SEL_CPC2_OFFL_E7_POLL_WAIT = 147 -SEM_PERF_SEL_CPC2_OFFL_E8_POLL_WAIT = 148 -SEM_PERF_SEL_CPC2_OFFL_E9_POLL_WAIT = 149 -SEM_PERF_SEL_CPC2_OFFL_E10_POLL_WAIT = 150 -SEM_PERF_SEL_CPC2_OFFL_E11_POLL_WAIT = 151 -SEM_PERF_SEL_CPC2_OFFL_E12_POLL_WAIT = 152 -SEM_PERF_SEL_CPC2_OFFL_E13_POLL_WAIT = 153 -SEM_PERF_SEL_CPC2_OFFL_E14_POLL_WAIT = 154 -SEM_PERF_SEL_CPC2_OFFL_E15_POLL_WAIT = 155 -SEM_PERF_SEL_CPC2_OFFL_E16_POLL_WAIT = 156 -SEM_PERF_SEL_CPC2_OFFL_E17_POLL_WAIT = 157 -SEM_PERF_SEL_CPC2_OFFL_E18_POLL_WAIT = 158 -SEM_PERF_SEL_CPC2_OFFL_E19_POLL_WAIT = 159 -SEM_PERF_SEL_CPC2_OFFL_E20_POLL_WAIT = 160 -SEM_PERF_SEL_CPC2_OFFL_E21_POLL_WAIT = 161 -SEM_PERF_SEL_CPC2_OFFL_E22_POLL_WAIT = 162 -SEM_PERF_SEL_CPC2_OFFL_E23_POLL_WAIT = 163 -SEM_PERF_SEL_CPC2_OFFL_E24_POLL_WAIT = 164 -SEM_PERF_SEL_CPC2_OFFL_E25_POLL_WAIT = 165 -SEM_PERF_SEL_CPC2_OFFL_E26_POLL_WAIT = 166 -SEM_PERF_SEL_CPC2_OFFL_E27_POLL_WAIT = 167 -SEM_PERF_SEL_CPC2_OFFL_E28_POLL_WAIT = 168 -SEM_PERF_SEL_CPC2_OFFL_E29_POLL_WAIT = 169 -SEM_PERF_SEL_CPC2_OFFL_E30_POLL_WAIT = 170 -SEM_PERF_SEL_CPC2_OFFL_E31_POLL_WAIT = 171 -SEM_PERF_SEL_MC_RD_REQ = 172 -SEM_PERF_SEL_MC_RD_RET = 173 -SEM_PERF_SEL_MC_WR_REQ = 174 -SEM_PERF_SEL_MC_WR_RET = 175 -SEM_PERF_SEL_ATC_REQ = 176 -SEM_PERF_SEL_ATC_RET = 177 -SEM_PERF_SEL_ATC_XNACK = 178 -SEM_PERF_SEL_ATC_INVALIDATION = 179 -SEM_PERF_SEL_ATC_VM_INVALIDATION = 180 -SEM_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'LSDMA_PERF_SEL' -LSDMA_PERF_SEL__enumvalues = { - 0: 'LSDMA_PERF_SEL_CYCLE', - 1: 'LSDMA_PERF_SEL_IDLE', - 2: 'LSDMA_PERF_SEL_REG_IDLE', - 3: 'LSDMA_PERF_SEL_RB_EMPTY', - 4: 'LSDMA_PERF_SEL_RB_FULL', - 5: 'LSDMA_PERF_SEL_RB_WPTR_WRAP', - 6: 'LSDMA_PERF_SEL_RB_RPTR_WRAP', - 7: 'LSDMA_PERF_SEL_RB_WPTR_POLL_READ', - 8: 'LSDMA_PERF_SEL_RB_RPTR_WB', - 9: 'LSDMA_PERF_SEL_RB_CMD_IDLE', - 10: 'LSDMA_PERF_SEL_RB_CMD_FULL', - 11: 'LSDMA_PERF_SEL_IB_CMD_IDLE', - 12: 'LSDMA_PERF_SEL_IB_CMD_FULL', - 13: 'LSDMA_PERF_SEL_EX_IDLE', - 14: 'LSDMA_PERF_SEL_SRBM_REG_SEND', - 15: 'LSDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 16: 'LSDMA_PERF_SEL_MC_WR_IDLE', - 17: 'LSDMA_PERF_SEL_MC_WR_COUNT', - 18: 'LSDMA_PERF_SEL_MC_RD_IDLE', - 19: 'LSDMA_PERF_SEL_MC_RD_COUNT', - 20: 'LSDMA_PERF_SEL_MC_RD_RET_STALL', - 21: 'LSDMA_PERF_SEL_MC_RD_NO_POLL_IDLE', - 24: 'LSDMA_PERF_SEL_SEM_IDLE', - 25: 'LSDMA_PERF_SEL_SEM_REQ_STALL', - 26: 'LSDMA_PERF_SEL_SEM_REQ_COUNT', - 27: 'LSDMA_PERF_SEL_SEM_RESP_INCOMPLETE', - 28: 'LSDMA_PERF_SEL_SEM_RESP_FAIL', - 29: 'LSDMA_PERF_SEL_SEM_RESP_PASS', - 30: 'LSDMA_PERF_SEL_INT_IDLE', - 31: 'LSDMA_PERF_SEL_INT_REQ_STALL', - 32: 'LSDMA_PERF_SEL_INT_REQ_COUNT', - 33: 'LSDMA_PERF_SEL_INT_RESP_ACCEPTED', - 34: 'LSDMA_PERF_SEL_INT_RESP_RETRY', - 35: 'LSDMA_PERF_SEL_NUM_PACKET', - 37: 'LSDMA_PERF_SEL_CE_WREQ_IDLE', - 38: 'LSDMA_PERF_SEL_CE_WR_IDLE', - 39: 'LSDMA_PERF_SEL_CE_SPLIT_IDLE', - 40: 'LSDMA_PERF_SEL_CE_RREQ_IDLE', - 41: 'LSDMA_PERF_SEL_CE_OUT_IDLE', - 42: 'LSDMA_PERF_SEL_CE_IN_IDLE', - 43: 'LSDMA_PERF_SEL_CE_DST_IDLE', - 46: 'LSDMA_PERF_SEL_CE_AFIFO_FULL', - 49: 'LSDMA_PERF_SEL_CE_INFO_FULL', - 50: 'LSDMA_PERF_SEL_CE_INFO1_FULL', - 51: 'LSDMA_PERF_SEL_CE_RD_STALL', - 52: 'LSDMA_PERF_SEL_CE_WR_STALL', - 53: 'LSDMA_PERF_SEL_GFX_SELECT', - 54: 'LSDMA_PERF_SEL_RLC0_SELECT', - 55: 'LSDMA_PERF_SEL_RLC1_SELECT', - 56: 'LSDMA_PERF_SEL_PAGE_SELECT', - 57: 'LSDMA_PERF_SEL_CTX_CHANGE', - 58: 'LSDMA_PERF_SEL_CTX_CHANGE_EXPIRED', - 59: 'LSDMA_PERF_SEL_CTX_CHANGE_EXCEPTION', - 60: 'LSDMA_PERF_SEL_DOORBELL', - 61: 'LSDMA_PERF_SEL_RD_BA_RTR', - 62: 'LSDMA_PERF_SEL_WR_BA_RTR', - 63: 'LSDMA_PERF_SEL_F32_L1_WR_VLD', - 64: 'LSDMA_PERF_SEL_CE_L1_WR_VLD', - 65: 'LSDMA_PERF_SEL_CE_L1_STALL', - 66: 'LSDMA_PERF_SEL_SDMA_INVACK_NFLUSH', - 67: 'LSDMA_PERF_SEL_SDMA_INVACK_FLUSH', - 68: 'LSDMA_PERF_SEL_ATCL2_INVREQ_NFLUSH', - 69: 'LSDMA_PERF_SEL_ATCL2_INVREQ_FLUSH', - 70: 'LSDMA_PERF_SEL_ATCL2_RET_XNACK', - 71: 'LSDMA_PERF_SEL_ATCL2_RET_ACK', - 72: 'LSDMA_PERF_SEL_ATCL2_FREE', - 73: 'LSDMA_PERF_SEL_SDMA_ATCL2_SEND', - 74: 'LSDMA_PERF_SEL_DMA_L1_WR_SEND', - 75: 'LSDMA_PERF_SEL_DMA_L1_RD_SEND', - 76: 'LSDMA_PERF_SEL_DMA_MC_WR_SEND', - 77: 'LSDMA_PERF_SEL_DMA_MC_RD_SEND', - 78: 'LSDMA_PERF_SEL_L1_WR_FIFO_IDLE', - 79: 'LSDMA_PERF_SEL_L1_RD_FIFO_IDLE', - 80: 'LSDMA_PERF_SEL_L1_WRL2_IDLE', - 81: 'LSDMA_PERF_SEL_L1_RDL2_IDLE', - 82: 'LSDMA_PERF_SEL_L1_WRMC_IDLE', - 83: 'LSDMA_PERF_SEL_L1_RDMC_IDLE', - 84: 'LSDMA_PERF_SEL_L1_WR_INV_IDLE', - 85: 'LSDMA_PERF_SEL_L1_RD_INV_IDLE', - 86: 'LSDMA_PERF_SEL_L1_WR_INV_EN', - 87: 'LSDMA_PERF_SEL_L1_RD_INV_EN', - 88: 'LSDMA_PERF_SEL_L1_WR_WAIT_INVADR', - 89: 'LSDMA_PERF_SEL_L1_RD_WAIT_INVADR', - 90: 'LSDMA_PERF_SEL_IS_INVREQ_ADDR_WR', - 91: 'LSDMA_PERF_SEL_IS_INVREQ_ADDR_RD', - 92: 'LSDMA_PERF_SEL_L1_WR_XNACK_TIMEOUT', - 93: 'LSDMA_PERF_SEL_L1_RD_XNACK_TIMEOUT', - 94: 'LSDMA_PERF_SEL_L1_INV_MIDDLE', - 95: 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_WR_REQ', - 96: 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_WR_RET', - 97: 'LSDMA_PERF_SEL_ATOMIC_MMHUB_WR_REQ', - 98: 'LSDMA_PERF_SEL_ATOMIC_MMHUB_WR_RET', - 99: 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_RD_REQ', - 100: 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_RD_RET', - 101: 'LSDMA_PERF_SEL_RB_MMHUB_RD_REQ', - 102: 'LSDMA_PERF_SEL_RB_MMHUB_RD_RET', - 103: 'LSDMA_PERF_SEL_IB_MMHUB_RD_REQ', - 104: 'LSDMA_PERF_SEL_IB_MMHUB_RD_RET', - 105: 'LSDMA_PERF_SEL_WPTR_MMHUB_RD_REQ', - 106: 'LSDMA_PERF_SEL_WPTR_MMHUB_RD_RET', - 107: 'LSDMA_PERF_SEL_UTCL1_UTCL2_REQ', - 108: 'LSDMA_PERF_SEL_UTCL1_UTCL2_RET', - 109: 'LSDMA_PERF_SEL_CMD_OP_MATCH', - 110: 'LSDMA_PERF_SEL_CMD_OP_START', - 111: 'LSDMA_PERF_SEL_CMD_OP_END', - 112: 'LSDMA_PERF_SEL_CE_BUSY', - 113: 'LSDMA_PERF_SEL_CE_BUSY_START', - 114: 'LSDMA_PERF_SEL_CE_BUSY_END', - 115: 'LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER', - 116: 'LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER_START', - 117: 'LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER_END', - 118: 'LSDMA_PERF_SEL_CE_MMHUB_WRREQ_SEND', - 119: 'LSDMA_PERF_SEL_MMHUB_CE_WRRET_VALID', - 120: 'LSDMA_PERF_SEL_CE_MMHUB_RDREQ_SEND', - 121: 'LSDMA_PERF_SEL_MMHUB_CE_RDRET_VALID', - 122: 'LSDMA_PERF_SEL_DRAM_ECC', - 123: 'LSDMA_PERF_SEL_NACK_GEN_ERR', -} -LSDMA_PERF_SEL_CYCLE = 0 -LSDMA_PERF_SEL_IDLE = 1 -LSDMA_PERF_SEL_REG_IDLE = 2 -LSDMA_PERF_SEL_RB_EMPTY = 3 -LSDMA_PERF_SEL_RB_FULL = 4 -LSDMA_PERF_SEL_RB_WPTR_WRAP = 5 -LSDMA_PERF_SEL_RB_RPTR_WRAP = 6 -LSDMA_PERF_SEL_RB_WPTR_POLL_READ = 7 -LSDMA_PERF_SEL_RB_RPTR_WB = 8 -LSDMA_PERF_SEL_RB_CMD_IDLE = 9 -LSDMA_PERF_SEL_RB_CMD_FULL = 10 -LSDMA_PERF_SEL_IB_CMD_IDLE = 11 -LSDMA_PERF_SEL_IB_CMD_FULL = 12 -LSDMA_PERF_SEL_EX_IDLE = 13 -LSDMA_PERF_SEL_SRBM_REG_SEND = 14 -LSDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE = 15 -LSDMA_PERF_SEL_MC_WR_IDLE = 16 -LSDMA_PERF_SEL_MC_WR_COUNT = 17 -LSDMA_PERF_SEL_MC_RD_IDLE = 18 -LSDMA_PERF_SEL_MC_RD_COUNT = 19 -LSDMA_PERF_SEL_MC_RD_RET_STALL = 20 -LSDMA_PERF_SEL_MC_RD_NO_POLL_IDLE = 21 -LSDMA_PERF_SEL_SEM_IDLE = 24 -LSDMA_PERF_SEL_SEM_REQ_STALL = 25 -LSDMA_PERF_SEL_SEM_REQ_COUNT = 26 -LSDMA_PERF_SEL_SEM_RESP_INCOMPLETE = 27 -LSDMA_PERF_SEL_SEM_RESP_FAIL = 28 -LSDMA_PERF_SEL_SEM_RESP_PASS = 29 -LSDMA_PERF_SEL_INT_IDLE = 30 -LSDMA_PERF_SEL_INT_REQ_STALL = 31 -LSDMA_PERF_SEL_INT_REQ_COUNT = 32 -LSDMA_PERF_SEL_INT_RESP_ACCEPTED = 33 -LSDMA_PERF_SEL_INT_RESP_RETRY = 34 -LSDMA_PERF_SEL_NUM_PACKET = 35 -LSDMA_PERF_SEL_CE_WREQ_IDLE = 37 -LSDMA_PERF_SEL_CE_WR_IDLE = 38 -LSDMA_PERF_SEL_CE_SPLIT_IDLE = 39 -LSDMA_PERF_SEL_CE_RREQ_IDLE = 40 -LSDMA_PERF_SEL_CE_OUT_IDLE = 41 -LSDMA_PERF_SEL_CE_IN_IDLE = 42 -LSDMA_PERF_SEL_CE_DST_IDLE = 43 -LSDMA_PERF_SEL_CE_AFIFO_FULL = 46 -LSDMA_PERF_SEL_CE_INFO_FULL = 49 -LSDMA_PERF_SEL_CE_INFO1_FULL = 50 -LSDMA_PERF_SEL_CE_RD_STALL = 51 -LSDMA_PERF_SEL_CE_WR_STALL = 52 -LSDMA_PERF_SEL_GFX_SELECT = 53 -LSDMA_PERF_SEL_RLC0_SELECT = 54 -LSDMA_PERF_SEL_RLC1_SELECT = 55 -LSDMA_PERF_SEL_PAGE_SELECT = 56 -LSDMA_PERF_SEL_CTX_CHANGE = 57 -LSDMA_PERF_SEL_CTX_CHANGE_EXPIRED = 58 -LSDMA_PERF_SEL_CTX_CHANGE_EXCEPTION = 59 -LSDMA_PERF_SEL_DOORBELL = 60 -LSDMA_PERF_SEL_RD_BA_RTR = 61 -LSDMA_PERF_SEL_WR_BA_RTR = 62 -LSDMA_PERF_SEL_F32_L1_WR_VLD = 63 -LSDMA_PERF_SEL_CE_L1_WR_VLD = 64 -LSDMA_PERF_SEL_CE_L1_STALL = 65 -LSDMA_PERF_SEL_SDMA_INVACK_NFLUSH = 66 -LSDMA_PERF_SEL_SDMA_INVACK_FLUSH = 67 -LSDMA_PERF_SEL_ATCL2_INVREQ_NFLUSH = 68 -LSDMA_PERF_SEL_ATCL2_INVREQ_FLUSH = 69 -LSDMA_PERF_SEL_ATCL2_RET_XNACK = 70 -LSDMA_PERF_SEL_ATCL2_RET_ACK = 71 -LSDMA_PERF_SEL_ATCL2_FREE = 72 -LSDMA_PERF_SEL_SDMA_ATCL2_SEND = 73 -LSDMA_PERF_SEL_DMA_L1_WR_SEND = 74 -LSDMA_PERF_SEL_DMA_L1_RD_SEND = 75 -LSDMA_PERF_SEL_DMA_MC_WR_SEND = 76 -LSDMA_PERF_SEL_DMA_MC_RD_SEND = 77 -LSDMA_PERF_SEL_L1_WR_FIFO_IDLE = 78 -LSDMA_PERF_SEL_L1_RD_FIFO_IDLE = 79 -LSDMA_PERF_SEL_L1_WRL2_IDLE = 80 -LSDMA_PERF_SEL_L1_RDL2_IDLE = 81 -LSDMA_PERF_SEL_L1_WRMC_IDLE = 82 -LSDMA_PERF_SEL_L1_RDMC_IDLE = 83 -LSDMA_PERF_SEL_L1_WR_INV_IDLE = 84 -LSDMA_PERF_SEL_L1_RD_INV_IDLE = 85 -LSDMA_PERF_SEL_L1_WR_INV_EN = 86 -LSDMA_PERF_SEL_L1_RD_INV_EN = 87 -LSDMA_PERF_SEL_L1_WR_WAIT_INVADR = 88 -LSDMA_PERF_SEL_L1_RD_WAIT_INVADR = 89 -LSDMA_PERF_SEL_IS_INVREQ_ADDR_WR = 90 -LSDMA_PERF_SEL_IS_INVREQ_ADDR_RD = 91 -LSDMA_PERF_SEL_L1_WR_XNACK_TIMEOUT = 92 -LSDMA_PERF_SEL_L1_RD_XNACK_TIMEOUT = 93 -LSDMA_PERF_SEL_L1_INV_MIDDLE = 94 -LSDMA_PERF_SEL_CE_OR_F32_MMHUB_WR_REQ = 95 -LSDMA_PERF_SEL_CE_OR_F32_MMHUB_WR_RET = 96 -LSDMA_PERF_SEL_ATOMIC_MMHUB_WR_REQ = 97 -LSDMA_PERF_SEL_ATOMIC_MMHUB_WR_RET = 98 -LSDMA_PERF_SEL_CE_OR_F32_MMHUB_RD_REQ = 99 -LSDMA_PERF_SEL_CE_OR_F32_MMHUB_RD_RET = 100 -LSDMA_PERF_SEL_RB_MMHUB_RD_REQ = 101 -LSDMA_PERF_SEL_RB_MMHUB_RD_RET = 102 -LSDMA_PERF_SEL_IB_MMHUB_RD_REQ = 103 -LSDMA_PERF_SEL_IB_MMHUB_RD_RET = 104 -LSDMA_PERF_SEL_WPTR_MMHUB_RD_REQ = 105 -LSDMA_PERF_SEL_WPTR_MMHUB_RD_RET = 106 -LSDMA_PERF_SEL_UTCL1_UTCL2_REQ = 107 -LSDMA_PERF_SEL_UTCL1_UTCL2_RET = 108 -LSDMA_PERF_SEL_CMD_OP_MATCH = 109 -LSDMA_PERF_SEL_CMD_OP_START = 110 -LSDMA_PERF_SEL_CMD_OP_END = 111 -LSDMA_PERF_SEL_CE_BUSY = 112 -LSDMA_PERF_SEL_CE_BUSY_START = 113 -LSDMA_PERF_SEL_CE_BUSY_END = 114 -LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER = 115 -LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER_START = 116 -LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER_END = 117 -LSDMA_PERF_SEL_CE_MMHUB_WRREQ_SEND = 118 -LSDMA_PERF_SEL_MMHUB_CE_WRRET_VALID = 119 -LSDMA_PERF_SEL_CE_MMHUB_RDREQ_SEND = 120 -LSDMA_PERF_SEL_MMHUB_CE_RDRET_VALID = 121 -LSDMA_PERF_SEL_DRAM_ECC = 122 -LSDMA_PERF_SEL_NACK_GEN_ERR = 123 -LSDMA_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'EFC_SURFACE_PIXEL_FORMAT' -EFC_SURFACE_PIXEL_FORMAT__enumvalues = { - 1: 'EFC_ARGB1555', - 2: 'EFC_RGBA5551', - 3: 'EFC_RGB565', - 4: 'EFC_BGR565', - 5: 'EFC_ARGB4444', - 6: 'EFC_RGBA4444', - 8: 'EFC_ARGB8888', - 9: 'EFC_RGBA8888', - 10: 'EFC_ARGB2101010', - 11: 'EFC_RGBA1010102', - 12: 'EFC_AYCrCb8888', - 13: 'EFC_YCrCbA8888', - 14: 'EFC_ACrYCb8888', - 15: 'EFC_CrYCbA8888', - 16: 'EFC_ARGB16161616_10MSB', - 17: 'EFC_RGBA16161616_10MSB', - 18: 'EFC_ARGB16161616_10LSB', - 19: 'EFC_RGBA16161616_10LSB', - 20: 'EFC_ARGB16161616_12MSB', - 21: 'EFC_RGBA16161616_12MSB', - 22: 'EFC_ARGB16161616_12LSB', - 23: 'EFC_RGBA16161616_12LSB', - 24: 'EFC_ARGB16161616_FLOAT', - 25: 'EFC_RGBA16161616_FLOAT', - 26: 'EFC_ARGB16161616_UNORM', - 27: 'EFC_RGBA16161616_UNORM', - 28: 'EFC_ARGB16161616_SNORM', - 29: 'EFC_RGBA16161616_SNORM', - 32: 'EFC_AYCrCb16161616_10MSB', - 33: 'EFC_AYCrCb16161616_10LSB', - 34: 'EFC_YCrCbA16161616_10MSB', - 35: 'EFC_YCrCbA16161616_10LSB', - 36: 'EFC_ACrYCb16161616_10MSB', - 37: 'EFC_ACrYCb16161616_10LSB', - 38: 'EFC_CrYCbA16161616_10MSB', - 39: 'EFC_CrYCbA16161616_10LSB', - 40: 'EFC_AYCrCb16161616_12MSB', - 41: 'EFC_AYCrCb16161616_12LSB', - 42: 'EFC_YCrCbA16161616_12MSB', - 43: 'EFC_YCrCbA16161616_12LSB', - 44: 'EFC_ACrYCb16161616_12MSB', - 45: 'EFC_ACrYCb16161616_12LSB', - 46: 'EFC_CrYCbA16161616_12MSB', - 47: 'EFC_CrYCbA16161616_12LSB', - 64: 'EFC_Y8_CrCb88_420_PLANAR', - 65: 'EFC_Y8_CbCr88_420_PLANAR', - 66: 'EFC_Y10_CrCb1010_420_PLANAR', - 67: 'EFC_Y10_CbCr1010_420_PLANAR', - 68: 'EFC_Y12_CrCb1212_420_PLANAR', - 69: 'EFC_Y12_CbCr1212_420_PLANAR', - 72: 'EFC_YCrYCb8888_422_PACKED', - 73: 'EFC_YCbYCr8888_422_PACKED', - 74: 'EFC_CrYCbY8888_422_PACKED', - 75: 'EFC_CbYCrY8888_422_PACKED', - 76: 'EFC_YCrYCb10101010_422_PACKED', - 77: 'EFC_YCbYCr10101010_422_PACKED', - 78: 'EFC_CrYCbY10101010_422_PACKED', - 79: 'EFC_CbYCrY10101010_422_PACKED', - 80: 'EFC_YCrYCb12121212_422_PACKED', - 81: 'EFC_YCbYCr12121212_422_PACKED', - 82: 'EFC_CrYCbY12121212_422_PACKED', - 83: 'EFC_CbYCrY12121212_422_PACKED', - 112: 'EFC_RGB111110_FIX', - 113: 'EFC_BGR101111_FIX', - 114: 'EFC_ACrYCb2101010', - 115: 'EFC_CrYCbA1010102', - 118: 'EFC_RGB111110_FLOAT', - 119: 'EFC_BGR101111_FLOAT', - 120: 'EFC_MONO_8', - 121: 'EFC_MONO_10MSB', - 122: 'EFC_MONO_10LSB', - 123: 'EFC_MONO_12MSB', - 124: 'EFC_MONO_12LSB', - 125: 'EFC_MONO_16', -} -EFC_ARGB1555 = 1 -EFC_RGBA5551 = 2 -EFC_RGB565 = 3 -EFC_BGR565 = 4 -EFC_ARGB4444 = 5 -EFC_RGBA4444 = 6 -EFC_ARGB8888 = 8 -EFC_RGBA8888 = 9 -EFC_ARGB2101010 = 10 -EFC_RGBA1010102 = 11 -EFC_AYCrCb8888 = 12 -EFC_YCrCbA8888 = 13 -EFC_ACrYCb8888 = 14 -EFC_CrYCbA8888 = 15 -EFC_ARGB16161616_10MSB = 16 -EFC_RGBA16161616_10MSB = 17 -EFC_ARGB16161616_10LSB = 18 -EFC_RGBA16161616_10LSB = 19 -EFC_ARGB16161616_12MSB = 20 -EFC_RGBA16161616_12MSB = 21 -EFC_ARGB16161616_12LSB = 22 -EFC_RGBA16161616_12LSB = 23 -EFC_ARGB16161616_FLOAT = 24 -EFC_RGBA16161616_FLOAT = 25 -EFC_ARGB16161616_UNORM = 26 -EFC_RGBA16161616_UNORM = 27 -EFC_ARGB16161616_SNORM = 28 -EFC_RGBA16161616_SNORM = 29 -EFC_AYCrCb16161616_10MSB = 32 -EFC_AYCrCb16161616_10LSB = 33 -EFC_YCrCbA16161616_10MSB = 34 -EFC_YCrCbA16161616_10LSB = 35 -EFC_ACrYCb16161616_10MSB = 36 -EFC_ACrYCb16161616_10LSB = 37 -EFC_CrYCbA16161616_10MSB = 38 -EFC_CrYCbA16161616_10LSB = 39 -EFC_AYCrCb16161616_12MSB = 40 -EFC_AYCrCb16161616_12LSB = 41 -EFC_YCrCbA16161616_12MSB = 42 -EFC_YCrCbA16161616_12LSB = 43 -EFC_ACrYCb16161616_12MSB = 44 -EFC_ACrYCb16161616_12LSB = 45 -EFC_CrYCbA16161616_12MSB = 46 -EFC_CrYCbA16161616_12LSB = 47 -EFC_Y8_CrCb88_420_PLANAR = 64 -EFC_Y8_CbCr88_420_PLANAR = 65 -EFC_Y10_CrCb1010_420_PLANAR = 66 -EFC_Y10_CbCr1010_420_PLANAR = 67 -EFC_Y12_CrCb1212_420_PLANAR = 68 -EFC_Y12_CbCr1212_420_PLANAR = 69 -EFC_YCrYCb8888_422_PACKED = 72 -EFC_YCbYCr8888_422_PACKED = 73 -EFC_CrYCbY8888_422_PACKED = 74 -EFC_CbYCrY8888_422_PACKED = 75 -EFC_YCrYCb10101010_422_PACKED = 76 -EFC_YCbYCr10101010_422_PACKED = 77 -EFC_CrYCbY10101010_422_PACKED = 78 -EFC_CbYCrY10101010_422_PACKED = 79 -EFC_YCrYCb12121212_422_PACKED = 80 -EFC_YCbYCr12121212_422_PACKED = 81 -EFC_CrYCbY12121212_422_PACKED = 82 -EFC_CbYCrY12121212_422_PACKED = 83 -EFC_RGB111110_FIX = 112 -EFC_BGR101111_FIX = 113 -EFC_ACrYCb2101010 = 114 -EFC_CrYCbA1010102 = 115 -EFC_RGB111110_FLOAT = 118 -EFC_BGR101111_FLOAT = 119 -EFC_MONO_8 = 120 -EFC_MONO_10MSB = 121 -EFC_MONO_10LSB = 122 -EFC_MONO_12MSB = 123 -EFC_MONO_12LSB = 124 -EFC_MONO_16 = 125 -EFC_SURFACE_PIXEL_FORMAT = ctypes.c_uint32 # enum -__all__ = \ - ['ACCEPT_UNSOLICITED_RESPONSE_ENABLE', - 'ACCEPT_UNSOLICITED_RESPONSE_NOT_ENABLE', 'ACP_TYPE_DVD_AUDIO', - 'ACP_TYPE_GENERIC_AUDIO', 'ACP_TYPE_ICE60958_AUDIO', - 'ACP_TYPE_SUPER_AUDIO_CD', 'ACrYCb16161616_10LSB', - 'ACrYCb16161616_10MSB', 'ACrYCb16161616_12LSB', - 'ACrYCb16161616_12MSB', 'ACrYCb2101010', 'ACrYCb8888', - 'ADDR_GEN_ONE', 'ADDR_GEN_TWO', 'ADDR_GEN_ZERO', 'ADDR_RESERVED', - 'AFMT_ACP_SOURCE_FROM_AFMT_REGISTERS', - 'AFMT_ACP_SOURCE_FROM_AZALIA', 'AFMT_ACP_TYPE', - 'AFMT_AUDIO_CRC_AUDIO_SAMPLE_COUNT', - 'AFMT_AUDIO_CRC_AUTO_RESTART', 'AFMT_AUDIO_CRC_CH0_SIG', - 'AFMT_AUDIO_CRC_CH1_SIG', 'AFMT_AUDIO_CRC_CH2_SIG', - 'AFMT_AUDIO_CRC_CH3_SIG', 'AFMT_AUDIO_CRC_CH4_SIG', - 'AFMT_AUDIO_CRC_CH5_SIG', 'AFMT_AUDIO_CRC_CH6_SIG', - 'AFMT_AUDIO_CRC_CH7_SIG', 'AFMT_AUDIO_CRC_CONTROL_CH_SEL', - 'AFMT_AUDIO_CRC_CONTROL_CONT', 'AFMT_AUDIO_CRC_CONTROL_SOURCE', - 'AFMT_AUDIO_CRC_ONESHOT', 'AFMT_AUDIO_CRC_RESERVED_10', - 'AFMT_AUDIO_CRC_RESERVED_11', 'AFMT_AUDIO_CRC_RESERVED_12', - 'AFMT_AUDIO_CRC_RESERVED_13', 'AFMT_AUDIO_CRC_RESERVED_14', - 'AFMT_AUDIO_CRC_RESERVED_8', 'AFMT_AUDIO_CRC_RESERVED_9', - 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_INPUT', - 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_OUTPUT', - 'AFMT_AUDIO_LAYOUT_DETERMINED_BY_AZ_AUDIO_CHANNEL_STATUS', - 'AFMT_AUDIO_LAYOUT_OVRD_BY_REGISTER', - 'AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD', - 'AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND', - 'AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS', - 'AFMT_AUDIO_PACKET_SENT_DISABLED', - 'AFMT_AUDIO_PACKET_SENT_ENABLED', 'AFMT_AUDIO_SRC_CONTROL_SELECT', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM0', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM1', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM2', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM3', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM4', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM5', - 'AFMT_HDMI_AUDIO_SEND_MAX_PACKETS', - 'AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE', - 'AFMT_INFOFRAME_SOURCE_FROM_AFMT_REGISTERS', - 'AFMT_INFOFRAME_SOURCE_FROM_AZALIA_BLOCK', - 'AFMT_INTERRUPT_DISABLE', 'AFMT_INTERRUPT_ENABLE', - 'AFMT_INTERRUPT_STATUS_CHG_MASK', 'AFMT_MEM_DISABLE_MEM_PWR_CTRL', - 'AFMT_MEM_ENABLE_MEM_PWR_CTRL', - 'AFMT_MEM_FORCE_DEEP_SLEEP_REQUEST', - 'AFMT_MEM_FORCE_LIGHT_SLEEP_REQUEST', - 'AFMT_MEM_FORCE_SHUT_DOWN_REQUEST', 'AFMT_MEM_NO_FORCE_REQUEST', - 'AFMT_MEM_PWR_DIS_CTRL', 'AFMT_MEM_PWR_FORCE_CTRL', - 'AFMT_NOT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED_RESERVED', - 'AFMT_RAMP_CONTROL0_SIGN', 'AFMT_RAMP_SIGNED', - 'AFMT_RAMP_UNSIGNED', 'AFMT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED', - 'AFMT_VBI_PACKET_CONTROL_ACP_SOURCE', 'ALLOW_SR_ON_TRANS_REQ', - 'ALLOW_SR_ON_TRANS_REQ_DISABLE', 'ALLOW_SR_ON_TRANS_REQ_ENABLE', - 'ALL_USE_R', 'ALPHA_DATA_ONTO_ALPHA_PORT', - 'ALPHA_DATA_ONTO_CB_B_PORT', 'ALPHA_DATA_ONTO_CR_R_PORT', - 'ALPHA_DATA_ONTO_Y_G_PORT', - 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_ACK', - 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_NOT_ACK', 'AMCLOCK_ENABLE', - 'APG_ACP_OVERRIDE', 'APG_ACP_SOURCE_NO_OVERRIDE', - 'APG_ACP_TYPE_DVD_AUDIO', 'APG_ACP_TYPE_GENERIC_AUDIO', - 'APG_ACP_TYPE_ICE60958_AUDIO', 'APG_ACP_TYPE_SUPER_AUDIO_CD', - 'APG_AUDIO_CRC_CH0_SIG', 'APG_AUDIO_CRC_CH1_SIG', - 'APG_AUDIO_CRC_CH2_SIG', 'APG_AUDIO_CRC_CH3_SIG', - 'APG_AUDIO_CRC_CH4_SIG', 'APG_AUDIO_CRC_CH5_SIG', - 'APG_AUDIO_CRC_CH6_SIG', 'APG_AUDIO_CRC_CH7_SIG', - 'APG_AUDIO_CRC_CONTINUOUS', 'APG_AUDIO_CRC_CONTROL_CH_SEL', - 'APG_AUDIO_CRC_CONTROL_CONT', 'APG_AUDIO_CRC_ONESHOT', - 'APG_AUDIO_CRC_RESERVED_10', 'APG_AUDIO_CRC_RESERVED_11', - 'APG_AUDIO_CRC_RESERVED_12', 'APG_AUDIO_CRC_RESERVED_13', - 'APG_AUDIO_CRC_RESERVED_14', 'APG_AUDIO_CRC_RESERVED_15', - 'APG_AUDIO_CRC_RESERVED_8', 'APG_AUDIO_CRC_RESERVED_9', - 'APG_DBG_ACP_TYPE', 'APG_DBG_AUDIO_DTO_BASE', - 'APG_DBG_AUDIO_DTO_DIV', 'APG_DBG_AUDIO_DTO_MULTI', - 'APG_DBG_MUX_SEL', 'APG_DEBUG_AUDIO_MODE', - 'APG_DP_ASP_CHANNEL_COUNT_FROM_AZ', - 'APG_DP_ASP_CHANNEL_COUNT_OVERRIDE', - 'APG_DP_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED', - 'APG_FUNCTIONAL_MODE', 'APG_INFOFRAME_SOURCE_FROM_APG_REGISTERS', - 'APG_INFOFRAME_SOURCE_NO_OVERRIDE', - 'APG_MEM_DISABLE_MEM_PWR_CTRL', 'APG_MEM_ENABLE_MEM_PWR_CTRL', - 'APG_MEM_FORCE_DEEP_SLEEP_REQUEST', - 'APG_MEM_FORCE_LIGHT_SLEEP_REQUEST', - 'APG_MEM_FORCE_SHUT_DOWN_REQUEST', 'APG_MEM_NO_FORCE_REQUEST', - 'APG_MEM_POWER_STATE', 'APG_MEM_POWER_STATE_DS', - 'APG_MEM_POWER_STATE_LS', 'APG_MEM_POWER_STATE_ON', - 'APG_MEM_POWER_STATE_SD', 'APG_MEM_PWR_DIS_CTRL', - 'APG_MEM_PWR_FORCE_CTRL', 'APG_PACKET_CONTROL_ACP_SOURCE', - 'APG_PACKET_CONTROL_AUDIO_INFO_SOURCE', 'APG_RAMP_CONTROL_SIGN', - 'APG_RAMP_SIGNED', 'APG_RAMP_UNSIGNED', 'ARGB1555', - 'ARGB16161616_10LSB', 'ARGB16161616_10MSB', 'ARGB16161616_12LSB', - 'ARGB16161616_12MSB', 'ARGB16161616_FLOAT', 'ARGB16161616_SNORM', - 'ARGB16161616_UNORM', 'ARGB2101010', 'ARGB4444', 'ARGB8888', - 'AUDIO_LAYOUT_0', 'AUDIO_LAYOUT_1', 'AUDIO_LAYOUT_SELECT', - 'AUTOCAL_MODE_AUTOCENTER', 'AUTOCAL_MODE_AUTOREPLICATE', - 'AUTOCAL_MODE_AUTOSCALE', 'AUTOCAL_MODE_OFF', - 'AYCrCb16161616_10LSB', 'AYCrCb16161616_10MSB', - 'AYCrCb16161616_12LSB', 'AYCrCb16161616_12MSB', 'AYCrCb8888', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_ANALOG', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NOT_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_NO_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_NOT_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_HAVE_EAPD_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_NO_EAPD_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_PRESENCE_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_NOT_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_NOT_BALANCED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_JACK_PRESENCE_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE', - 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', - 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABLILITY', - 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE', - 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABLILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_EAPD_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_NOT_BALANCED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_EAPD_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_ENABLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_NOT_ENABLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_NOT_ON', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_ON', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ONE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ZERO', - 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_DO_RESET', - 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_NOT_RESET', - 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_DRIVEN', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_SHUT_OFF', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_0', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_1', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_10', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_11', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_12', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_13', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_14', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_15', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_2', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_3', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_4', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_5', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_6', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_7', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_8', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_9', - 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_FORBIDDEN', - 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT', - 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_NO_INFO_OR_PERMITTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', - 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE', - 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', - 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE', - 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_DRIVEN', - 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_SHUT_OFF', - 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET', - 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_NOT_RESET', - 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_RESET_REFCLK_LOGIC', - 'AZ_CORB_SIZE', 'AZ_CORB_SIZE_16ENTRIES_RESERVED', - 'AZ_CORB_SIZE_256ENTRIES', 'AZ_CORB_SIZE_2ENTRIES_RESERVED', - 'AZ_CORB_SIZE_RESERVED', 'AZ_GLOBAL_CAPABILITIES', - 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_NOT_SUPPORTED', - 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_SUPPORTED', - 'AZ_LATENCY_COUNTER_CONTROL', 'AZ_LATENCY_COUNTER_NO_RESET', - 'AZ_LATENCY_COUNTER_RESET_DONE', 'AZ_RIRB_SIZE', - 'AZ_RIRB_SIZE_16ENTRIES_RESERVED', 'AZ_RIRB_SIZE_256ENTRIES', - 'AZ_RIRB_SIZE_2ENTRIES_RESERVED', 'AZ_RIRB_SIZE_UNDEFINED', - 'AZ_RIRB_WRITE_POINTER_DO_RESET', - 'AZ_RIRB_WRITE_POINTER_NOT_RESET', 'AZ_RIRB_WRITE_POINTER_RESET', - 'AZ_STATE_CHANGE_STATUS', - 'AZ_STATE_CHANGE_STATUS_CODEC_NOT_PRESENT', - 'AZ_STATE_CHANGE_STATUS_CODEC_PRESENT', 'BASE_RATE_44P1KHZ', - 'BASE_RATE_48KHZ', 'BGR101111_FIX', 'BGR101111_FLOAT', 'BGR565', - 'BIGK_FRAGMENT_SIZE', 'BINNER_BREAK_BATCH', 'BINNER_DROP', - 'BINNER_PIPELINE', 'BINNER_PIPELINE_BREAK', 'BINNING_ALLOWED', - 'BIN_CONF_OVERRIDE_CHECK', 'BIN_MAP_MODE_NONE', - 'BIN_MAP_MODE_POPS', 'BIN_MAP_MODE_RTA_INDEX', - 'BIN_SIZE_128_PIXELS', 'BIN_SIZE_256_PIXELS', - 'BIN_SIZE_32_PIXELS', 'BIN_SIZE_512_PIXELS', 'BIN_SIZE_64_PIXELS', - 'BITS_31_0', 'BITS_32_1', 'BITS_33_2', 'BITS_34_3', 'BITS_35_4', - 'BITS_36_5', 'BITS_37_6', 'BITS_38_7', 'BLEND_CONSTANT_ALPHA', - 'BLEND_CONSTANT_COLOR', 'BLEND_DST_ALPHA', 'BLEND_DST_COLOR', - 'BLEND_INV_SRC1_ALPHA', 'BLEND_INV_SRC1_COLOR', 'BLEND_ONE', - 'BLEND_ONE_MINUS_CONSTANT_ALPHA', - 'BLEND_ONE_MINUS_CONSTANT_COLOR', 'BLEND_ONE_MINUS_DST_ALPHA', - 'BLEND_ONE_MINUS_DST_COLOR', 'BLEND_ONE_MINUS_SRC_ALPHA', - 'BLEND_ONE_MINUS_SRC_COLOR', 'BLEND_OPT_PRESERVE_A0_IGNORE_A1', - 'BLEND_OPT_PRESERVE_A1_IGNORE_A0', - 'BLEND_OPT_PRESERVE_ALL_IGNORE_NONE', - 'BLEND_OPT_PRESERVE_C0_IGNORE_C1', - 'BLEND_OPT_PRESERVE_C1_IGNORE_C0', - 'BLEND_OPT_PRESERVE_NONE_IGNORE_A0', - 'BLEND_OPT_PRESERVE_NONE_IGNORE_ALL', - 'BLEND_OPT_PRESERVE_NONE_IGNORE_NONE', 'BLEND_SRC1_ALPHA', - 'BLEND_SRC1_COLOR', 'BLEND_SRC_ALPHA', 'BLEND_SRC_ALPHA_SATURATE', - 'BLEND_SRC_COLOR', 'BLEND_ZERO', 'BLOCK_CONTEXT_DONE', 'BLUE_LUT', - 'BORROWBUFFER_MEM_POWER_STATE_ENUM', - 'BORROWBUFFER_MEM_POWER_STATE_ENUM_DS', - 'BORROWBUFFER_MEM_POWER_STATE_ENUM_LS', - 'BORROWBUFFER_MEM_POWER_STATE_ENUM_ON', - 'BORROWBUFFER_MEM_POWER_STATE_ENUM_SD', 'BOTTOM_OF_PIPE_TS', - 'BREAK_BATCH', 'BYPASS', 'BYPASS_EN', 'BYPASS_GAMUT', - 'BYPASS_POST_CSC', 'BinEventCntl', 'BinMapMode', 'BinSizeExtend', - 'BinningMode', 'BlendOp', 'BlendOpt', 'CACHE_BYPASS', - 'CACHE_FLUSH', 'CACHE_FLUSH_AND_INV_EVENT', - 'CACHE_FLUSH_AND_INV_TS_EVENT', 'CACHE_FLUSH_TS', 'CACHE_LRU_RD', - 'CACHE_LRU_WR', 'CACHE_NOA', 'CACHE_NOA_WR', 'CACHE_STREAM', - 'CACHE_STREAM_RD', 'CBMode', 'CBPerfClearFilterSel', - 'CBPerfOpFilterSel', 'CBPerfSel', 'CBRamList', - 'CB_B_DATA_ONTO_ALPHA_PORT', 'CB_B_DATA_ONTO_CB_B_PORT', - 'CB_B_DATA_ONTO_CR_R_PORT', 'CB_B_DATA_ONTO_Y_G_PORT', - 'CB_DCC_DECOMPRESS', 'CB_DCG_BACKEND_RDLAT_FIFO', - 'CB_DCG_CCC_CAS_COLOR_PTR', 'CB_DCG_CCC_CAS_FRAG_PTR', - 'CB_DCG_CCC_CAS_KEYID', 'CB_DCG_CCC_CAS_SURF_PARAM', - 'CB_DCG_CCC_CAS_TAG_ARRAY', 'CB_DCG_COLOR_STORE', - 'CB_DCG_COLOR_STORE_DIRTY_BYTE', 'CB_DCG_DCC_CACHE', - 'CB_DCG_DCC_DIRTY_BITS', 'CB_DCG_FMASK_CACHE_STORE', - 'CB_DCG_FRONTEND_RDLAT_FIFO', 'CB_DCG_OUTPUT_FIFO', - 'CB_DCG_QBLOCK_ALLOC', 'CB_DCG_QUAD_PTR_FIFO', - 'CB_DCG_READ_SKID_FIFO', 'CB_DCG_SRC_FIFO', 'CB_DISABLE', - 'CB_ELIMINATE_FAST_CLEAR', 'CB_NORMAL', - 'CB_PERF_CLEAR_FILTER_SEL_CLEAR', - 'CB_PERF_CLEAR_FILTER_SEL_NONCLEAR', - 'CB_PERF_OP_FILTER_SEL_DECOMPRESS', - 'CB_PERF_OP_FILTER_SEL_ELIMINATE_FAST_CLEAR', - 'CB_PERF_OP_FILTER_SEL_FMASK_DECOMPRESS', - 'CB_PERF_OP_FILTER_SEL_NEEDS_DESTINATION', - 'CB_PERF_OP_FILTER_SEL_RESOLVE', - 'CB_PERF_OP_FILTER_SEL_WRITE_ONLY', - 'CB_PERF_SEL_BACKEND_CACHE_CTL_CLOCK_EN', - 'CB_PERF_SEL_BACKEND_EVICT_PIPE_CLOCK_EN', - 'CB_PERF_SEL_BACKEND_FRAGOP_CLOCK_EN', - 'CB_PERF_SEL_BACKEND_READ_CLOCK_EN', - 'CB_PERF_SEL_BACKEND_SRC_FIFO_CLOCK_EN', - 'CB_PERF_SEL_BLEND_CLOCK_EN', - 'CB_PERF_SEL_BLEND_OPT_PIXELS_RESULT_EQ_DEST', - 'CB_PERF_SEL_BLEND_QUAD_BLENDING_COULD_HAVE_BEEN_BYPASSED', - 'CB_PERF_SEL_BLEND_QUAD_COULD_HAVE_BEEN_DISCARDED', - 'CB_PERF_SEL_BLEND_QUAD_DST_READ_COULD_HAVE_BEEN_OPTIMIZED', - 'CB_PERF_SEL_BLEND_STALL_AT_OUTPUT', - 'CB_PERF_SEL_CB_RMI_RDREQ_VALIDB_READY', - 'CB_PERF_SEL_CB_RMI_RDREQ_VALIDB_READYB', - 'CB_PERF_SEL_CB_RMI_RDREQ_VALID_READY', - 'CB_PERF_SEL_CB_RMI_RDREQ_VALID_READYB', - 'CB_PERF_SEL_CB_RMI_WRREQ_VALIDB_READY', - 'CB_PERF_SEL_CB_RMI_WRREQ_VALIDB_READYB', - 'CB_PERF_SEL_CB_RMI_WRREQ_VALID_READY', - 'CB_PERF_SEL_CB_RMI_WRREQ_VALID_READYB', - 'CB_PERF_SEL_CC_CACHE_ACK_OUTPUT_STALL', - 'CB_PERF_SEL_CC_CACHE_DIRTY_SECTORS_FLUSHED', - 'CB_PERF_SEL_CC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 'CB_PERF_SEL_CC_CACHE_FLUSH', - 'CB_PERF_SEL_CC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 'CB_PERF_SEL_CC_CACHE_READS_SAVED_DUE_TO_DCC', - 'CB_PERF_SEL_CC_CACHE_READ_OUTPUT_STALL', - 'CB_PERF_SEL_CC_CACHE_REEVICTION_STALL', - 'CB_PERF_SEL_CC_CACHE_REPLACE_PENDING_EVICT_STALL', - 'CB_PERF_SEL_CC_CACHE_SECTORS_FLUSHED', - 'CB_PERF_SEL_CC_CACHE_SECTOR_HIT', - 'CB_PERF_SEL_CC_CACHE_SECTOR_MISS', 'CB_PERF_SEL_CC_CACHE_STALL', - 'CB_PERF_SEL_CC_CACHE_TAGS_FLUSHED', - 'CB_PERF_SEL_CC_CACHE_TAG_MISS', - 'CB_PERF_SEL_CC_CACHE_WA_TO_RMW_CONVERSION', - 'CB_PERF_SEL_CC_CACHE_WRITE_OUTPUT_STALL', - 'CB_PERF_SEL_CC_DCC_COMPRESS_TID_IN', - 'CB_PERF_SEL_CC_DCC_COMPRESS_TID_OUT', - 'CB_PERF_SEL_CC_DCC_DECOMPRESS_TID_IN', - 'CB_PERF_SEL_CC_DCC_DECOMPRESS_TID_OUT', - 'CB_PERF_SEL_CC_MC_READ_REQUEST', - 'CB_PERF_SEL_CC_MC_READ_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_CC_MC_WRITE_REQUEST', - 'CB_PERF_SEL_CC_MC_WRITE_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_CC_SURFACE_SYNC', 'CB_PERF_SEL_CC_TAG_HIT', - 'CB_PERF_SEL_COLOR_STORE_CLOCK_EN', - 'CB_PERF_SEL_DB_CB_EXPORT_VALIDB_READY', - 'CB_PERF_SEL_DB_CB_EXPORT_VALIDB_READYB', - 'CB_PERF_SEL_DB_CB_EXPORT_VALID_READY', - 'CB_PERF_SEL_DB_CB_EXPORT_VALID_READYB', - 'CB_PERF_SEL_DCC_CACHE_ACK_OUTPUT_STALL', - 'CB_PERF_SEL_DCC_CACHE_DIRTY_SECTORS_FLUSHED', - 'CB_PERF_SEL_DCC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 'CB_PERF_SEL_DCC_CACHE_FLUSH', - 'CB_PERF_SEL_DCC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 'CB_PERF_SEL_DCC_CACHE_PERF_HIT', - 'CB_PERF_SEL_DCC_CACHE_READ_OUTPUT_STALL', - 'CB_PERF_SEL_DCC_CACHE_REEVICTION_STALL', - 'CB_PERF_SEL_DCC_CACHE_REPLACE_PENDING_EVICT_STALL', - 'CB_PERF_SEL_DCC_CACHE_SECTORS_FLUSHED', - 'CB_PERF_SEL_DCC_CACHE_SECTOR_MISS', - 'CB_PERF_SEL_DCC_CACHE_STALL', - 'CB_PERF_SEL_DCC_CACHE_TAGS_FLUSHED', - 'CB_PERF_SEL_DCC_CACHE_TAG_MISS', - 'CB_PERF_SEL_DCC_CACHE_WRITE_OUTPUT_STALL', - 'CB_PERF_SEL_DRAWN_PIXEL', 'CB_PERF_SEL_DRAWN_QUAD', - 'CB_PERF_SEL_DRAWN_QUAD_FRAGMENT', 'CB_PERF_SEL_DRAWN_TILE', - 'CB_PERF_SEL_EVENT', 'CB_PERF_SEL_EVENT_CACHE_FLUSH', - 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_EVENT', - 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_TS_EVENT', - 'CB_PERF_SEL_EVENT_CACHE_FLUSH_TS', - 'CB_PERF_SEL_EVENT_CONTEXT_DONE', - 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_DATA_TS', - 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_META', - 'CB_PERF_SEL_EXPORT_32_ABGR_QUAD_FRAGMENT', - 'CB_PERF_SEL_FILTER_DRAWN_PIXEL', 'CB_PERF_SEL_FILTER_DRAWN_QUAD', - 'CB_PERF_SEL_FILTER_DRAWN_QUAD_FRAGMENT', - 'CB_PERF_SEL_FILTER_DRAWN_TILE', - 'CB_PERF_SEL_FRONTEND_ADDR_CLOCK_EN', - 'CB_PERF_SEL_FRONTEND_FDCC_CLOCK_EN', - 'CB_PERF_SEL_FRONTEND_INPUT_CLOCK_EN', - 'CB_PERF_SEL_FRONTEND_SAMPLE_MASK_TRACKER_CLOCK_EN', - 'CB_PERF_SEL_GRBM_CLOCK_EN', 'CB_PERF_SEL_MEMARB_CLOCK_EN', - 'CB_PERF_SEL_NACK_CC_READ', 'CB_PERF_SEL_NACK_CC_WRITE', - 'CB_PERF_SEL_NONE', 'CB_PERF_SEL_PERFMON_CLOCK_EN', - 'CB_PERF_SEL_RESERVED_118', 'CB_PERF_SEL_RESERVED_119', - 'CB_PERF_SEL_RESERVED_120', 'CB_PERF_SEL_RESERVED_121', - 'CB_PERF_SEL_RESERVED_122', 'CB_PERF_SEL_RESERVED_123', - 'CB_PERF_SEL_RESERVED_124', 'CB_PERF_SEL_RESERVED_125', - 'CB_PERF_SEL_RESERVED_126', 'CB_PERF_SEL_RESERVED_127', - 'CB_PERF_SEL_RESERVED_128', 'CB_PERF_SEL_RESERVED_129', - 'CB_PERF_SEL_RESERVED_130', 'CB_PERF_SEL_RESERVED_131', - 'CB_PERF_SEL_RESERVED_132', 'CB_PERF_SEL_RESERVED_133', - 'CB_PERF_SEL_RESERVED_134', 'CB_PERF_SEL_RESERVED_135', - 'CB_PERF_SEL_RESERVED_136', 'CB_PERF_SEL_RESERVED_137', - 'CB_PERF_SEL_RESERVED_138', 'CB_PERF_SEL_RESERVED_139', - 'CB_PERF_SEL_RESERVED_140', 'CB_PERF_SEL_RESERVED_141', - 'CB_PERF_SEL_RESERVED_142', 'CB_PERF_SEL_RESERVED_143', - 'CB_PERF_SEL_RESERVED_144', 'CB_PERF_SEL_RESERVED_145', - 'CB_PERF_SEL_RESERVED_146', 'CB_PERF_SEL_RESERVED_147', - 'CB_PERF_SEL_RESERVED_148', 'CB_PERF_SEL_RESERVED_149', - 'CB_PERF_SEL_RESERVED_165', 'CB_PERF_SEL_RESERVED_166', - 'CB_PERF_SEL_RESERVED_167', 'CB_PERF_SEL_RESERVED_168', - 'CB_PERF_SEL_RESERVED_169', 'CB_PERF_SEL_RESERVED_170', - 'CB_PERF_SEL_RESERVED_171', 'CB_PERF_SEL_RESERVED_172', - 'CB_PERF_SEL_RESERVED_173', 'CB_PERF_SEL_RESERVED_174', - 'CB_PERF_SEL_RESERVED_175', 'CB_PERF_SEL_RESERVED_176', - 'CB_PERF_SEL_RESERVED_177', 'CB_PERF_SEL_RESERVED_178', - 'CB_PERF_SEL_RESERVED_179', 'CB_PERF_SEL_RESERVED_180', - 'CB_PERF_SEL_RESERVED_181', 'CB_PERF_SEL_RESERVED_182', - 'CB_PERF_SEL_RESERVED_183', 'CB_PERF_SEL_RESERVED_184', - 'CB_PERF_SEL_RESERVED_185', 'CB_PERF_SEL_RESERVED_186', - 'CB_PERF_SEL_RESERVED_187', 'CB_PERF_SEL_RESERVED_188', - 'CB_PERF_SEL_RESERVED_189', 'CB_PERF_SEL_RESERVED_190', - 'CB_PERF_SEL_RESERVED_191', 'CB_PERF_SEL_RESERVED_192', - 'CB_PERF_SEL_RESERVED_193', 'CB_PERF_SEL_RESERVED_194', - 'CB_PERF_SEL_RESERVED_195', 'CB_PERF_SEL_RESERVED_196', - 'CB_PERF_SEL_RESERVED_197', 'CB_PERF_SEL_RESERVED_198', - 'CB_PERF_SEL_RESERVED_199', 'CB_PERF_SEL_RESERVED_205', - 'CB_PERF_SEL_RESERVED_206', 'CB_PERF_SEL_RESERVED_207', - 'CB_PERF_SEL_RESERVED_208', 'CB_PERF_SEL_RESERVED_209', - 'CB_PERF_SEL_RESERVED_21', 'CB_PERF_SEL_RESERVED_210', - 'CB_PERF_SEL_RESERVED_211', 'CB_PERF_SEL_RESERVED_212', - 'CB_PERF_SEL_RESERVED_213', 'CB_PERF_SEL_RESERVED_214', - 'CB_PERF_SEL_RESERVED_215', 'CB_PERF_SEL_RESERVED_216', - 'CB_PERF_SEL_RESERVED_217', 'CB_PERF_SEL_RESERVED_218', - 'CB_PERF_SEL_RESERVED_219', 'CB_PERF_SEL_RESERVED_22', - 'CB_PERF_SEL_RESERVED_220', 'CB_PERF_SEL_RESERVED_221', - 'CB_PERF_SEL_RESERVED_222', 'CB_PERF_SEL_RESERVED_223', - 'CB_PERF_SEL_RESERVED_224', 'CB_PERF_SEL_RESERVED_225', - 'CB_PERF_SEL_RESERVED_226', 'CB_PERF_SEL_RESERVED_227', - 'CB_PERF_SEL_RESERVED_228', 'CB_PERF_SEL_RESERVED_229', - 'CB_PERF_SEL_RESERVED_23', 'CB_PERF_SEL_RESERVED_230', - 'CB_PERF_SEL_RESERVED_231', 'CB_PERF_SEL_RESERVED_232', - 'CB_PERF_SEL_RESERVED_233', 'CB_PERF_SEL_RESERVED_234', - 'CB_PERF_SEL_RESERVED_235', 'CB_PERF_SEL_RESERVED_236', - 'CB_PERF_SEL_RESERVED_237', 'CB_PERF_SEL_RESERVED_238', - 'CB_PERF_SEL_RESERVED_239', 'CB_PERF_SEL_RESERVED_24', - 'CB_PERF_SEL_RESERVED_240', 'CB_PERF_SEL_RESERVED_241', - 'CB_PERF_SEL_RESERVED_242', 'CB_PERF_SEL_RESERVED_243', - 'CB_PERF_SEL_RESERVED_244', 'CB_PERF_SEL_RESERVED_245', - 'CB_PERF_SEL_RESERVED_246', 'CB_PERF_SEL_RESERVED_247', - 'CB_PERF_SEL_RESERVED_248', 'CB_PERF_SEL_RESERVED_249', - 'CB_PERF_SEL_RESERVED_25', 'CB_PERF_SEL_RESERVED_259', - 'CB_PERF_SEL_RESERVED_26', 'CB_PERF_SEL_RESERVED_260', - 'CB_PERF_SEL_RESERVED_261', 'CB_PERF_SEL_RESERVED_262', - 'CB_PERF_SEL_RESERVED_263', 'CB_PERF_SEL_RESERVED_264', - 'CB_PERF_SEL_RESERVED_265', 'CB_PERF_SEL_RESERVED_266', - 'CB_PERF_SEL_RESERVED_267', 'CB_PERF_SEL_RESERVED_268', - 'CB_PERF_SEL_RESERVED_269', 'CB_PERF_SEL_RESERVED_27', - 'CB_PERF_SEL_RESERVED_270', 'CB_PERF_SEL_RESERVED_271', - 'CB_PERF_SEL_RESERVED_272', 'CB_PERF_SEL_RESERVED_273', - 'CB_PERF_SEL_RESERVED_274', 'CB_PERF_SEL_RESERVED_275', - 'CB_PERF_SEL_RESERVED_276', 'CB_PERF_SEL_RESERVED_277', - 'CB_PERF_SEL_RESERVED_278', 'CB_PERF_SEL_RESERVED_279', - 'CB_PERF_SEL_RESERVED_28', 'CB_PERF_SEL_RESERVED_280', - 'CB_PERF_SEL_RESERVED_281', 'CB_PERF_SEL_RESERVED_282', - 'CB_PERF_SEL_RESERVED_283', 'CB_PERF_SEL_RESERVED_284', - 'CB_PERF_SEL_RESERVED_285', 'CB_PERF_SEL_RESERVED_286', - 'CB_PERF_SEL_RESERVED_287', 'CB_PERF_SEL_RESERVED_288', - 'CB_PERF_SEL_RESERVED_289', 'CB_PERF_SEL_RESERVED_29', - 'CB_PERF_SEL_RESERVED_290', 'CB_PERF_SEL_RESERVED_291', - 'CB_PERF_SEL_RESERVED_292', 'CB_PERF_SEL_RESERVED_293', - 'CB_PERF_SEL_RESERVED_294', 'CB_PERF_SEL_RESERVED_295', - 'CB_PERF_SEL_RESERVED_296', 'CB_PERF_SEL_RESERVED_297', - 'CB_PERF_SEL_RESERVED_298', 'CB_PERF_SEL_RESERVED_299', - 'CB_PERF_SEL_RESERVED_303', 'CB_PERF_SEL_RESERVED_304', - 'CB_PERF_SEL_RESERVED_305', 'CB_PERF_SEL_RESERVED_306', - 'CB_PERF_SEL_RESERVED_307', 'CB_PERF_SEL_RESERVED_308', - 'CB_PERF_SEL_RESERVED_309', 'CB_PERF_SEL_RESERVED_310', - 'CB_PERF_SEL_RESERVED_311', 'CB_PERF_SEL_RESERVED_312', - 'CB_PERF_SEL_RESERVED_313', 'CB_PERF_SEL_RESERVED_314', - 'CB_PERF_SEL_RESERVED_315', 'CB_PERF_SEL_RESERVED_316', - 'CB_PERF_SEL_RESERVED_317', 'CB_PERF_SEL_RESERVED_318', - 'CB_PERF_SEL_RESERVED_319', 'CB_PERF_SEL_RESERVED_320', - 'CB_PERF_SEL_RESERVED_321', 'CB_PERF_SEL_RESERVED_322', - 'CB_PERF_SEL_RESERVED_323', 'CB_PERF_SEL_RESERVED_324', - 'CB_PERF_SEL_RESERVED_325', 'CB_PERF_SEL_RESERVED_326', - 'CB_PERF_SEL_RESERVED_327', 'CB_PERF_SEL_RESERVED_328', - 'CB_PERF_SEL_RESERVED_329', 'CB_PERF_SEL_RESERVED_330', - 'CB_PERF_SEL_RESERVED_331', 'CB_PERF_SEL_RESERVED_332', - 'CB_PERF_SEL_RESERVED_333', 'CB_PERF_SEL_RESERVED_334', - 'CB_PERF_SEL_RESERVED_335', 'CB_PERF_SEL_RESERVED_336', - 'CB_PERF_SEL_RESERVED_337', 'CB_PERF_SEL_RESERVED_338', - 'CB_PERF_SEL_RESERVED_339', 'CB_PERF_SEL_RESERVED_340', - 'CB_PERF_SEL_RESERVED_341', 'CB_PERF_SEL_RESERVED_342', - 'CB_PERF_SEL_RESERVED_343', 'CB_PERF_SEL_RESERVED_344', - 'CB_PERF_SEL_RESERVED_345', 'CB_PERF_SEL_RESERVED_346', - 'CB_PERF_SEL_RESERVED_347', 'CB_PERF_SEL_RESERVED_348', - 'CB_PERF_SEL_RESERVED_349', 'CB_PERF_SEL_RESERVED_350', - 'CB_PERF_SEL_RESERVED_351', 'CB_PERF_SEL_RESERVED_352', - 'CB_PERF_SEL_RESERVED_353', 'CB_PERF_SEL_RESERVED_354', - 'CB_PERF_SEL_RESERVED_355', 'CB_PERF_SEL_RESERVED_356', - 'CB_PERF_SEL_RESERVED_357', 'CB_PERF_SEL_RESERVED_358', - 'CB_PERF_SEL_RESERVED_359', 'CB_PERF_SEL_RESERVED_360', - 'CB_PERF_SEL_RESERVED_361', 'CB_PERF_SEL_RESERVED_362', - 'CB_PERF_SEL_RESERVED_363', 'CB_PERF_SEL_RESERVED_364', - 'CB_PERF_SEL_RESERVED_365', 'CB_PERF_SEL_RESERVED_366', - 'CB_PERF_SEL_RESERVED_367', 'CB_PERF_SEL_RESERVED_368', - 'CB_PERF_SEL_RESERVED_369', 'CB_PERF_SEL_RESERVED_370', - 'CB_PERF_SEL_RESERVED_371', 'CB_PERF_SEL_RESERVED_372', - 'CB_PERF_SEL_RESERVED_373', 'CB_PERF_SEL_RESERVED_374', - 'CB_PERF_SEL_RESERVED_375', 'CB_PERF_SEL_RESERVED_376', - 'CB_PERF_SEL_RESERVED_377', 'CB_PERF_SEL_RESERVED_378', - 'CB_PERF_SEL_RESERVED_379', 'CB_PERF_SEL_RESERVED_38', - 'CB_PERF_SEL_RESERVED_380', 'CB_PERF_SEL_RESERVED_381', - 'CB_PERF_SEL_RESERVED_382', 'CB_PERF_SEL_RESERVED_383', - 'CB_PERF_SEL_RESERVED_384', 'CB_PERF_SEL_RESERVED_385', - 'CB_PERF_SEL_RESERVED_386', 'CB_PERF_SEL_RESERVED_387', - 'CB_PERF_SEL_RESERVED_388', 'CB_PERF_SEL_RESERVED_389', - 'CB_PERF_SEL_RESERVED_39', 'CB_PERF_SEL_RESERVED_390', - 'CB_PERF_SEL_RESERVED_391', 'CB_PERF_SEL_RESERVED_392', - 'CB_PERF_SEL_RESERVED_393', 'CB_PERF_SEL_RESERVED_394', - 'CB_PERF_SEL_RESERVED_395', 'CB_PERF_SEL_RESERVED_396', - 'CB_PERF_SEL_RESERVED_397', 'CB_PERF_SEL_RESERVED_398', - 'CB_PERF_SEL_RESERVED_399', 'CB_PERF_SEL_RESERVED_40', - 'CB_PERF_SEL_RESERVED_400', 'CB_PERF_SEL_RESERVED_401', - 'CB_PERF_SEL_RESERVED_402', 'CB_PERF_SEL_RESERVED_403', - 'CB_PERF_SEL_RESERVED_404', 'CB_PERF_SEL_RESERVED_405', - 'CB_PERF_SEL_RESERVED_406', 'CB_PERF_SEL_RESERVED_407', - 'CB_PERF_SEL_RESERVED_408', 'CB_PERF_SEL_RESERVED_409', - 'CB_PERF_SEL_RESERVED_41', 'CB_PERF_SEL_RESERVED_410', - 'CB_PERF_SEL_RESERVED_411', 'CB_PERF_SEL_RESERVED_412', - 'CB_PERF_SEL_RESERVED_413', 'CB_PERF_SEL_RESERVED_414', - 'CB_PERF_SEL_RESERVED_415', 'CB_PERF_SEL_RESERVED_416', - 'CB_PERF_SEL_RESERVED_417', 'CB_PERF_SEL_RESERVED_418', - 'CB_PERF_SEL_RESERVED_419', 'CB_PERF_SEL_RESERVED_42', - 'CB_PERF_SEL_RESERVED_420', 'CB_PERF_SEL_RESERVED_421', - 'CB_PERF_SEL_RESERVED_422', 'CB_PERF_SEL_RESERVED_423', - 'CB_PERF_SEL_RESERVED_424', 'CB_PERF_SEL_RESERVED_425', - 'CB_PERF_SEL_RESERVED_426', 'CB_PERF_SEL_RESERVED_427', - 'CB_PERF_SEL_RESERVED_428', 'CB_PERF_SEL_RESERVED_429', - 'CB_PERF_SEL_RESERVED_43', 'CB_PERF_SEL_RESERVED_430', - 'CB_PERF_SEL_RESERVED_431', 'CB_PERF_SEL_RESERVED_432', - 'CB_PERF_SEL_RESERVED_433', 'CB_PERF_SEL_RESERVED_434', - 'CB_PERF_SEL_RESERVED_435', 'CB_PERF_SEL_RESERVED_436', - 'CB_PERF_SEL_RESERVED_437', 'CB_PERF_SEL_RESERVED_438', - 'CB_PERF_SEL_RESERVED_439', 'CB_PERF_SEL_RESERVED_44', - 'CB_PERF_SEL_RESERVED_440', 'CB_PERF_SEL_RESERVED_441', - 'CB_PERF_SEL_RESERVED_442', 'CB_PERF_SEL_RESERVED_443', - 'CB_PERF_SEL_RESERVED_444', 'CB_PERF_SEL_RESERVED_445', - 'CB_PERF_SEL_RESERVED_446', 'CB_PERF_SEL_RESERVED_447', - 'CB_PERF_SEL_RESERVED_448', 'CB_PERF_SEL_RESERVED_449', - 'CB_PERF_SEL_RESERVED_45', 'CB_PERF_SEL_RESERVED_450', - 'CB_PERF_SEL_RESERVED_451', 'CB_PERF_SEL_RESERVED_452', - 'CB_PERF_SEL_RESERVED_453', 'CB_PERF_SEL_RESERVED_454', - 'CB_PERF_SEL_RESERVED_455', 'CB_PERF_SEL_RESERVED_456', - 'CB_PERF_SEL_RESERVED_457', 'CB_PERF_SEL_RESERVED_458', - 'CB_PERF_SEL_RESERVED_459', 'CB_PERF_SEL_RESERVED_46', - 'CB_PERF_SEL_RESERVED_460', 'CB_PERF_SEL_RESERVED_461', - 'CB_PERF_SEL_RESERVED_462', 'CB_PERF_SEL_RESERVED_463', - 'CB_PERF_SEL_RESERVED_464', 'CB_PERF_SEL_RESERVED_465', - 'CB_PERF_SEL_RESERVED_47', 'CB_PERF_SEL_RESERVED_48', - 'CB_PERF_SEL_RESERVED_49', 'CB_PERF_SEL_RESERVED_65', - 'CB_PERF_SEL_RESERVED_66', 'CB_PERF_SEL_RESERVED_67', - 'CB_PERF_SEL_RESERVED_68', 'CB_PERF_SEL_RESERVED_69', - 'CB_PERF_SEL_RESERVED_70', 'CB_PERF_SEL_RESERVED_71', - 'CB_PERF_SEL_RESERVED_72', 'CB_PERF_SEL_RESERVED_73', - 'CB_PERF_SEL_RESERVED_74', 'CB_PERF_SEL_RESERVED_75', - 'CB_PERF_SEL_RESERVED_76', 'CB_PERF_SEL_RESERVED_77', - 'CB_PERF_SEL_RESERVED_78', 'CB_PERF_SEL_RESERVED_79', - 'CB_PERF_SEL_RESERVED_80', 'CB_PERF_SEL_RESERVED_81', - 'CB_PERF_SEL_RESERVED_82', 'CB_PERF_SEL_RESERVED_83', - 'CB_PERF_SEL_RESERVED_84', 'CB_PERF_SEL_RESERVED_85', - 'CB_PERF_SEL_RESERVED_86', 'CB_PERF_SEL_RESERVED_87', - 'CB_PERF_SEL_RESERVED_88', 'CB_PERF_SEL_RESERVED_89', - 'CB_PERF_SEL_RESERVED_90', 'CB_PERF_SEL_RESERVED_91', - 'CB_PERF_SEL_RESERVED_92', 'CB_PERF_SEL_RESERVED_93', - 'CB_PERF_SEL_RESERVED_94', 'CB_PERF_SEL_RESERVED_95', - 'CB_PERF_SEL_RESERVED_96', 'CB_PERF_SEL_RESERVED_97', - 'CB_PERF_SEL_RESERVED_98', 'CB_PERF_SEL_RESERVED_99', - 'CB_PERF_SEL_STATIC_CLOCK_EN', 'CB_RESERVED', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_0', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_1', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_2', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_3', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_4', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_5', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_6', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_ALL', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_0', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_1', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_2', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_3', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_4', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_5', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_6', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_ALL', - 'CENTERS_ONLY', 'CENTROIDS_AND_CENTERS', 'CENTROIDS_ONLY', - 'CHA_PERF_SEL', 'CHA_PERF_SEL_ARB_REQUESTS', 'CHA_PERF_SEL_BUSY', - 'CHA_PERF_SEL_CYCLE', 'CHA_PERF_SEL_IO_32B_WDS_CHC0', - 'CHA_PERF_SEL_IO_32B_WDS_CHC1', 'CHA_PERF_SEL_IO_32B_WDS_CHC2', - 'CHA_PERF_SEL_IO_32B_WDS_CHC3', 'CHA_PERF_SEL_IO_32B_WDS_CHC4', - 'CHA_PERF_SEL_IO_BURST_COUNT_CHC0', - 'CHA_PERF_SEL_IO_BURST_COUNT_CHC1', - 'CHA_PERF_SEL_IO_BURST_COUNT_CHC2', - 'CHA_PERF_SEL_IO_BURST_COUNT_CHC3', - 'CHA_PERF_SEL_IO_BURST_COUNT_CHC4', - 'CHA_PERF_SEL_MEM_32B_WDS_CHC0', 'CHA_PERF_SEL_MEM_32B_WDS_CHC1', - 'CHA_PERF_SEL_MEM_32B_WDS_CHC2', 'CHA_PERF_SEL_MEM_32B_WDS_CHC3', - 'CHA_PERF_SEL_MEM_32B_WDS_CHC4', - 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC0', - 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC1', - 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC2', - 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC3', - 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC4', 'CHA_PERF_SEL_REQUEST_CHC0', - 'CHA_PERF_SEL_REQUEST_CHC1', 'CHA_PERF_SEL_REQUEST_CHC2', - 'CHA_PERF_SEL_REQUEST_CHC3', 'CHA_PERF_SEL_REQUEST_CHC4', - 'CHA_PERF_SEL_REQ_INFLIGHT_LEVEL', 'CHA_PERF_SEL_STALL_CHC0', - 'CHA_PERF_SEL_STALL_CHC1', 'CHA_PERF_SEL_STALL_CHC2', - 'CHA_PERF_SEL_STALL_CHC3', 'CHA_PERF_SEL_STALL_CHC4', - 'CHA_PERF_SEL_STALL_CHC5', 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC0', - 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC1', - 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC2', - 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC3', - 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC4', 'CHCG_PERF_SEL', - 'CHCG_PERF_SEL_ARB_RET_LEVEL', 'CHCG_PERF_SEL_BUSY', - 'CHCG_PERF_SEL_CYCLE', 'CHCG_PERF_SEL_GL2_REQ_READ_LATENCY', - 'CHCG_PERF_SEL_GL2_REQ_WRITE_LATENCY', 'CHCG_PERF_SEL_REQ', - 'CHCG_PERF_SEL_REQ_ATOMIC_WITHOUT_RET', - 'CHCG_PERF_SEL_REQ_ATOMIC_WITH_RET', 'CHCG_PERF_SEL_REQ_CLIENT0', - 'CHCG_PERF_SEL_REQ_CLIENT1', 'CHCG_PERF_SEL_REQ_CLIENT10', - 'CHCG_PERF_SEL_REQ_CLIENT11', 'CHCG_PERF_SEL_REQ_CLIENT12', - 'CHCG_PERF_SEL_REQ_CLIENT13', 'CHCG_PERF_SEL_REQ_CLIENT14', - 'CHCG_PERF_SEL_REQ_CLIENT15', 'CHCG_PERF_SEL_REQ_CLIENT16', - 'CHCG_PERF_SEL_REQ_CLIENT17', 'CHCG_PERF_SEL_REQ_CLIENT18', - 'CHCG_PERF_SEL_REQ_CLIENT19', 'CHCG_PERF_SEL_REQ_CLIENT2', - 'CHCG_PERF_SEL_REQ_CLIENT20', 'CHCG_PERF_SEL_REQ_CLIENT21', - 'CHCG_PERF_SEL_REQ_CLIENT22', 'CHCG_PERF_SEL_REQ_CLIENT23', - 'CHCG_PERF_SEL_REQ_CLIENT3', 'CHCG_PERF_SEL_REQ_CLIENT4', - 'CHCG_PERF_SEL_REQ_CLIENT5', 'CHCG_PERF_SEL_REQ_CLIENT6', - 'CHCG_PERF_SEL_REQ_CLIENT7', 'CHCG_PERF_SEL_REQ_CLIENT8', - 'CHCG_PERF_SEL_REQ_CLIENT9', 'CHCG_PERF_SEL_REQ_NOP_ACK', - 'CHCG_PERF_SEL_REQ_NOP_RTN0', 'CHCG_PERF_SEL_REQ_READ', - 'CHCG_PERF_SEL_REQ_READ_128B', 'CHCG_PERF_SEL_REQ_READ_32B', - 'CHCG_PERF_SEL_REQ_READ_64B', 'CHCG_PERF_SEL_REQ_WRITE', - 'CHCG_PERF_SEL_REQ_WRITE_32B', 'CHCG_PERF_SEL_REQ_WRITE_64B', - 'CHCG_PERF_SEL_STALL_BUFFER_FULL', 'CHCG_PERF_SEL_STALL_GUS_GL1', - 'CHCG_PERF_SEL_STARVE', 'CHC_PERF_SEL', - 'CHC_PERF_SEL_ARB_RET_LEVEL', 'CHC_PERF_SEL_BUSY', - 'CHC_PERF_SEL_CYCLE', 'CHC_PERF_SEL_GL2_REQ_READ_LATENCY', - 'CHC_PERF_SEL_GL2_REQ_WRITE_LATENCY', 'CHC_PERF_SEL_REQ', - 'CHC_PERF_SEL_REQ_ATOMIC_WITHOUT_RET', - 'CHC_PERF_SEL_REQ_ATOMIC_WITH_RET', 'CHC_PERF_SEL_REQ_CLIENT0', - 'CHC_PERF_SEL_REQ_CLIENT1', 'CHC_PERF_SEL_REQ_CLIENT10', - 'CHC_PERF_SEL_REQ_CLIENT11', 'CHC_PERF_SEL_REQ_CLIENT12', - 'CHC_PERF_SEL_REQ_CLIENT13', 'CHC_PERF_SEL_REQ_CLIENT14', - 'CHC_PERF_SEL_REQ_CLIENT15', 'CHC_PERF_SEL_REQ_CLIENT16', - 'CHC_PERF_SEL_REQ_CLIENT17', 'CHC_PERF_SEL_REQ_CLIENT18', - 'CHC_PERF_SEL_REQ_CLIENT19', 'CHC_PERF_SEL_REQ_CLIENT2', - 'CHC_PERF_SEL_REQ_CLIENT20', 'CHC_PERF_SEL_REQ_CLIENT21', - 'CHC_PERF_SEL_REQ_CLIENT22', 'CHC_PERF_SEL_REQ_CLIENT23', - 'CHC_PERF_SEL_REQ_CLIENT3', 'CHC_PERF_SEL_REQ_CLIENT4', - 'CHC_PERF_SEL_REQ_CLIENT5', 'CHC_PERF_SEL_REQ_CLIENT6', - 'CHC_PERF_SEL_REQ_CLIENT7', 'CHC_PERF_SEL_REQ_CLIENT8', - 'CHC_PERF_SEL_REQ_CLIENT9', 'CHC_PERF_SEL_REQ_NOP_ACK', - 'CHC_PERF_SEL_REQ_NOP_RTN0', 'CHC_PERF_SEL_REQ_READ', - 'CHC_PERF_SEL_REQ_READ_128B', 'CHC_PERF_SEL_REQ_READ_32B', - 'CHC_PERF_SEL_REQ_READ_64B', 'CHC_PERF_SEL_REQ_WRITE', - 'CHC_PERF_SEL_REQ_WRITE_32B', 'CHC_PERF_SEL_REQ_WRITE_64B', - 'CHC_PERF_SEL_STALL_BUFFER_FULL', 'CHC_PERF_SEL_STALL_GL2_GL1', - 'CHC_PERF_SEL_STARVE', 'CHUNK_SIZE', 'CHUNK_SIZE_16KB', - 'CHUNK_SIZE_1KB', 'CHUNK_SIZE_2KB', 'CHUNK_SIZE_32KB', - 'CHUNK_SIZE_4KB', 'CHUNK_SIZE_64KB', 'CHUNK_SIZE_8KB', - 'CLEAR_SMU_INTR', 'CLKGATE_BASE_MODE', 'CLKGATE_SM_MODE', - 'CLOCK_BRANCH_SOFT_RESET', 'CLOCK_BRANCH_SOFT_RESET_FORCE', - 'CLOCK_BRANCH_SOFT_RESET_NOOP', 'CLOCK_GATING_DISABLE', - 'CLOCK_GATING_DISABLED', 'CLOCK_GATING_DISABLED_IN_DCO', - 'CLOCK_GATING_DISABLE_ENUM', 'CLOCK_GATING_DISABLE_ENUM_DISABLED', - 'CLOCK_GATING_DISABLE_ENUM_ENABLED', 'CLOCK_GATING_EN', - 'CLOCK_GATING_ENABLE', 'CLOCK_GATING_ENABLED', - 'CLOCK_GATING_ENABLED_IN_DCO', 'CMASK_CLR00_F0', 'CMASK_CLR00_F1', - 'CMASK_CLR00_F2', 'CMASK_CLR00_FX', 'CMASK_CLR01_F0', - 'CMASK_CLR01_F1', 'CMASK_CLR01_F2', 'CMASK_CLR01_FX', - 'CMASK_CLR10_F0', 'CMASK_CLR10_F1', 'CMASK_CLR10_F2', - 'CMASK_CLR10_FX', 'CMASK_CLR11_F0', 'CMASK_CLR11_F1', - 'CMASK_CLR11_F2', 'CMASK_CLR11_FX', 'CMC_3DLUT_17CUBE', - 'CMC_3DLUT_30BIT', 'CMC_3DLUT_30BIT_ENUM', 'CMC_3DLUT_36BIT', - 'CMC_3DLUT_9CUBE', 'CMC_3DLUT_RAM_SEL', 'CMC_3DLUT_SIZE_ENUM', - 'CMC_LUT_2CFG_MEMORY_A', 'CMC_LUT_2CFG_MEMORY_B', - 'CMC_LUT_2CFG_NO_MEMORY', 'CMC_LUT_2_CONFIG_ENUM', - 'CMC_LUT_2_MODE_BYPASS', 'CMC_LUT_2_MODE_ENUM', - 'CMC_LUT_2_MODE_RAMA_LUT', 'CMC_LUT_2_MODE_RAMB_LUT', - 'CMC_LUT_NUM_SEG', 'CMC_LUT_RAM_SEL', 'CMC_RAM0_ACCESS', - 'CMC_RAM1_ACCESS', 'CMC_RAM2_ACCESS', 'CMC_RAM3_ACCESS', - 'CMC_RAMA_ACCESS', 'CMC_RAMB_ACCESS', 'CMC_SEGMENTS_1', - 'CMC_SEGMENTS_128', 'CMC_SEGMENTS_16', 'CMC_SEGMENTS_2', - 'CMC_SEGMENTS_32', 'CMC_SEGMENTS_4', 'CMC_SEGMENTS_64', - 'CMC_SEGMENTS_8', 'CMPTO', 'CM_BYPASS', 'CM_COEF_FORMAT_ENUM', - 'CM_DATA_SIGNED', 'CM_DISABLE', 'CM_EN', 'CM_ENABLE', - 'CM_GAMMA_LUT_MODE_ENUM', 'CM_GAMMA_LUT_PWL_DISABLE_ENUM', - 'CM_GAMMA_LUT_SEL_ENUM', 'CM_GAMUT_REMAP_MODE_ENUM', - 'CM_LUT_2_CONFIG_ENUM', 'CM_LUT_2_MODE_ENUM', - 'CM_LUT_4_CONFIG_ENUM', 'CM_LUT_4_MODE_ENUM', - 'CM_LUT_CONFIG_MODE', 'CM_LUT_NUM_SEG', 'CM_LUT_RAM_SEL', - 'CM_LUT_READ_COLOR_SEL', 'CM_LUT_READ_DBG', 'CM_NOT_PENDING', - 'CM_PENDING', 'CM_POST_CSC_MODE_ENUM', 'CM_WRITE_BASE_ONLY', - 'CM_YES_PENDING', 'CNVC_BYPASS', 'CNVC_BYPASS_DISABLE', - 'CNVC_BYPASS_EN', 'CNVC_COEF_FORMAT_ENUM', 'CNVC_DIS', 'CNVC_EN', - 'CNVC_ENABLE', 'CNVC_FIX_S2_13', 'CNVC_FIX_S3_12', - 'CNVC_NOT_PENDING', 'CNVC_PENDING', 'CNVC_ROUND', 'CNVC_TRUNCATE', - 'CNVC_YES_PENDING', 'COEF_POST_CSC', 'COEF_POST_CSC_B', - 'COEF_RAM_SELECT_BACK', 'COEF_RAM_SELECT_CURRENT', - 'COEF_RAM_SELECT_RD', 'COLOR_24BIT_1BIT_AND', - 'COLOR_24BIT_8BIT_ALPHA_PREMULT', - 'COLOR_24BIT_8BIT_ALPHA_UNPREMULT', 'COLOR_64BIT_FP_PREMULT', - 'COLOR_64BIT_FP_UNPREMULT', 'COLOR_KEYER_MODE', - 'COMB_DST_MINUS_SRC', 'COMB_DST_PLUS_SRC', 'COMB_MAX_DST_SRC', - 'COMB_MIN_DST_SRC', 'COMB_SRC_MINUS_DST', 'COMPAT_LEVEL', - 'CONFIG_SPACE1_END', 'CONFIG_SPACE1_START', 'CONFIG_SPACE2_END', - 'CONFIG_SPACE2_START', 'CONFIG_SPACE_END', 'CONFIG_SPACE_START', - 'CONTEXT_DONE', 'CONTEXT_SPACE_END', 'CONTEXT_SPACE_START', - 'CONTEXT_SUSPEND', 'CONTROLLER_RESET_AZ_CONTROLLER_IN_RESET', - 'CONTROLLER_RESET_AZ_CONTROLLER_NOT_IN_RESET', - 'CORB_READ_POINTER_RESET', - 'CORB_READ_POINTER_RESET_CORB_DMA_IS_NOT_RESET', - 'CORB_READ_POINTER_RESET_CORB_DMA_IS_RESET', 'COUNTER_RING_0', - 'COUNTER_RING_1', 'COUNTER_RING_SPLIT', 'CPC_LATENCY_STATS_SEL', - 'CPC_LATENCY_STATS_SEL_INVAL_LAST', - 'CPC_LATENCY_STATS_SEL_INVAL_MAX', - 'CPC_LATENCY_STATS_SEL_INVAL_MIN', - 'CPC_LATENCY_STATS_SEL_XACK_LAST', - 'CPC_LATENCY_STATS_SEL_XACK_MAX', - 'CPC_LATENCY_STATS_SEL_XACK_MIN', - 'CPC_LATENCY_STATS_SEL_XNACK_LAST', - 'CPC_LATENCY_STATS_SEL_XNACK_MAX', - 'CPC_LATENCY_STATS_SEL_XNACK_MIN', 'CPC_PERFCOUNT_SEL', - 'CPC_PERF_SEL_ALWAYS_COUNT', 'CPC_PERF_SEL_CPC_GCRIU_BUSY', - 'CPC_PERF_SEL_CPC_GCRIU_IDLE', 'CPC_PERF_SEL_CPC_GCRIU_STALL', - 'CPC_PERF_SEL_CPC_STAT_BUSY', 'CPC_PERF_SEL_CPC_STAT_IDLE', - 'CPC_PERF_SEL_CPC_STAT_STALL', 'CPC_PERF_SEL_CPC_TCIU_BUSY', - 'CPC_PERF_SEL_CPC_TCIU_IDLE', 'CPC_PERF_SEL_CPC_UTCL2IU_BUSY', - 'CPC_PERF_SEL_CPC_UTCL2IU_IDLE', 'CPC_PERF_SEL_CPC_UTCL2IU_STALL', - 'CPC_PERF_SEL_CPC_UTCL2IU_XACK', 'CPC_PERF_SEL_CPC_UTCL2IU_XNACK', - 'CPC_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 'CPC_PERF_SEL_ME1_BUSY_FOR_PACKET_DECODE', - 'CPC_PERF_SEL_ME1_DC0_SPI_BUSY', - 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ', - 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ_PERF', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_GUS_READ', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_GUS_WRITE', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READ', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY_PERF', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_TCIU_READ', - 'CPC_PERF_SEL_ME2_BUSY_FOR_PACKET_DECODE', - 'CPC_PERF_SEL_ME2_DC1_SPI_BUSY', - 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ', - 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ_PERF', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_GUS_READ', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_GUS_WRITE', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READ', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY_PERF', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_TCIU_READ', - 'CPC_PERF_SEL_MEC_INSTR_CACHE_HIT', - 'CPC_PERF_SEL_MEC_INSTR_CACHE_MISS', 'CPC_PERF_SEL_MES_THREAD0', - 'CPC_PERF_SEL_MES_THREAD1', - 'CPC_PERF_SEL_RCIU_STALL_PRIV_VIOLATION', - 'CPC_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', - 'CPC_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 'CPC_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', 'CPC_TAG_RAM', - 'CPF_LATENCY_STATS_SEL', 'CPF_LATENCY_STATS_SEL_INVAL_LAST', - 'CPF_LATENCY_STATS_SEL_INVAL_MAX', - 'CPF_LATENCY_STATS_SEL_INVAL_MIN', - 'CPF_LATENCY_STATS_SEL_READ_LAST', - 'CPF_LATENCY_STATS_SEL_READ_MAX', - 'CPF_LATENCY_STATS_SEL_READ_MIN', - 'CPF_LATENCY_STATS_SEL_XACK_LAST', - 'CPF_LATENCY_STATS_SEL_XACK_MAX', - 'CPF_LATENCY_STATS_SEL_XACK_MIN', - 'CPF_LATENCY_STATS_SEL_XNACK_LAST', - 'CPF_LATENCY_STATS_SEL_XNACK_MAX', - 'CPF_LATENCY_STATS_SEL_XNACK_MIN', 'CPF_PERFCOUNTWINDOW_SEL', - 'CPF_PERFCOUNT_SEL', 'CPF_PERFWINDOW_SEL_CSF', - 'CPF_PERFWINDOW_SEL_HQD1', 'CPF_PERFWINDOW_SEL_HQD2', - 'CPF_PERFWINDOW_SEL_RDMA', 'CPF_PERFWINDOW_SEL_RWPP', - 'CPF_PERF_SEL_ALWAYS_COUNT', - 'CPF_PERF_SEL_CMP_UTCL1_STALL_ON_TRANSLATION', - 'CPF_PERF_SEL_CPF_GCRIU_BUSY', 'CPF_PERF_SEL_CPF_GCRIU_IDLE', - 'CPF_PERF_SEL_CPF_GCRIU_STALL', 'CPF_PERF_SEL_CPF_STAT_BUSY', - 'CPF_PERF_SEL_CPF_STAT_IDLE', 'CPF_PERF_SEL_CPF_STAT_STALL', - 'CPF_PERF_SEL_CPF_TCIU_BUSY', 'CPF_PERF_SEL_CPF_TCIU_IDLE', - 'CPF_PERF_SEL_CPF_TCIU_STALL', 'CPF_PERF_SEL_CPF_UTCL2IU_BUSY', - 'CPF_PERF_SEL_CPF_UTCL2IU_IDLE', 'CPF_PERF_SEL_CPF_UTCL2IU_STALL', - 'CPF_PERF_SEL_CPF_UTCL2IU_XACK', 'CPF_PERF_SEL_CPF_UTCL2IU_XNACK', - 'CPF_PERF_SEL_CP_SDMA_MNGR_DMA_DONE', - 'CPF_PERF_SEL_CP_SDMA_MNGR_DMA_REQ', - 'CPF_PERF_SEL_CP_SDMA_MNGR_LATENCY', - 'CPF_PERF_SEL_CP_SDMA_MNGR_SDMABUSY', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_DB', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB1', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB2', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_RING', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_STATE', - 'CPF_PERF_SEL_CSF_FETCHING_CMD_BUFFERS', - 'CPF_PERF_SEL_CSF_STATE_FIFO_NOT_RTR', - 'CPF_PERF_SEL_DYNAMIC_CLOCK_VALID', - 'CPF_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 'CPF_PERF_SEL_GFX_UTCL1_STALL_ON_TRANSLATION', - 'CPF_PERF_SEL_GRBM_DWORDS_SENT', - 'CPF_PERF_SEL_GUS_READ_REQUEST_SENT', - 'CPF_PERF_SEL_GUS_WRITE_REQUEST_SENT', - 'CPF_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', - 'CPF_PERF_SEL_REGISTER_CLOCK_VALID', - 'CPF_PERF_SEL_TCIU_READ_REQUEST_SENT', - 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_FREE', - 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_TAGS', - 'CPF_PERF_SEL_TCIU_WRITE_REQUEST_SENT', - 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', - 'CPF_SCRATCH_REG_ATOMIC_ADD', 'CPF_SCRATCH_REG_ATOMIC_AND', - 'CPF_SCRATCH_REG_ATOMIC_CMPSWAP', 'CPF_SCRATCH_REG_ATOMIC_MAX', - 'CPF_SCRATCH_REG_ATOMIC_MIN', 'CPF_SCRATCH_REG_ATOMIC_NOT', - 'CPF_SCRATCH_REG_ATOMIC_OP', 'CPF_SCRATCH_REG_ATOMIC_OR', - 'CPF_SCRATCH_REG_ATOMIC_SUB', 'CPF_TAG_RAM', - 'CPG_LATENCY_STATS_SEL', 'CPG_LATENCY_STATS_SEL_ATOMIC_LAST', - 'CPG_LATENCY_STATS_SEL_ATOMIC_MAX', - 'CPG_LATENCY_STATS_SEL_ATOMIC_MIN', - 'CPG_LATENCY_STATS_SEL_INVAL_LAST', - 'CPG_LATENCY_STATS_SEL_INVAL_MAX', - 'CPG_LATENCY_STATS_SEL_INVAL_MIN', - 'CPG_LATENCY_STATS_SEL_READ_LAST', - 'CPG_LATENCY_STATS_SEL_READ_MAX', - 'CPG_LATENCY_STATS_SEL_READ_MIN', - 'CPG_LATENCY_STATS_SEL_WRITE_LAST', - 'CPG_LATENCY_STATS_SEL_WRITE_MAX', - 'CPG_LATENCY_STATS_SEL_WRITE_MIN', - 'CPG_LATENCY_STATS_SEL_XACK_LAST', - 'CPG_LATENCY_STATS_SEL_XACK_MAX', - 'CPG_LATENCY_STATS_SEL_XACK_MIN', - 'CPG_LATENCY_STATS_SEL_XNACK_LAST', - 'CPG_LATENCY_STATS_SEL_XNACK_MAX', - 'CPG_LATENCY_STATS_SEL_XNACK_MIN', 'CPG_PERFCOUNTWINDOW_SEL', - 'CPG_PERFCOUNT_SEL', 'CPG_PERFWINDOW_SEL_APPEND', - 'CPG_PERFWINDOW_SEL_CE', 'CPG_PERFWINDOW_SEL_CEDMA', - 'CPG_PERFWINDOW_SEL_CPC_IC', 'CPG_PERFWINDOW_SEL_CPG_IC', - 'CPG_PERFWINDOW_SEL_DDID', 'CPG_PERFWINDOW_SEL_DFY', - 'CPG_PERFWINDOW_SEL_DMA', 'CPG_PERFWINDOW_SEL_ME', - 'CPG_PERFWINDOW_SEL_MEC1', 'CPG_PERFWINDOW_SEL_MEC2', - 'CPG_PERFWINDOW_SEL_MEMRD', 'CPG_PERFWINDOW_SEL_MEMWR', - 'CPG_PERFWINDOW_SEL_MES', 'CPG_PERFWINDOW_SEL_PFP', - 'CPG_PERFWINDOW_SEL_PQ1', 'CPG_PERFWINDOW_SEL_PQ2', - 'CPG_PERFWINDOW_SEL_PQ3', 'CPG_PERFWINDOW_SEL_PRT_HDR_RPTR', - 'CPG_PERFWINDOW_SEL_PRT_SMP_RPTR', 'CPG_PERFWINDOW_SEL_QURD', - 'CPG_PERFWINDOW_SEL_QU_EOP', 'CPG_PERFWINDOW_SEL_QU_PIPE', - 'CPG_PERFWINDOW_SEL_QU_STRM', 'CPG_PERFWINDOW_SEL_RB', - 'CPG_PERFWINDOW_SEL_RESERVED1', 'CPG_PERFWINDOW_SEL_RESERVED2', - 'CPG_PERFWINDOW_SEL_SHADOW', 'CPG_PERFWINDOW_SEL_SR', - 'CPG_PERFWINDOW_SEL_VGT0', 'CPG_PERFWINDOW_SEL_VGT1', - 'CPG_PERF_SEL_ALL_GFX_PIPES_BUSY', 'CPG_PERF_SEL_ALWAYS_COUNT', - 'CPG_PERF_SEL_CE_INSTR_CACHE_HIT', - 'CPG_PERF_SEL_CE_INSTR_CACHE_MISS', - 'CPG_PERF_SEL_CE_STALL_ON_CE_BUFFER_FLAG', - 'CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_ROQ', - 'CPG_PERF_SEL_CE_STALL_ON_DE_COUNTER', - 'CPG_PERF_SEL_CE_STALL_ON_INC_FIFO', - 'CPG_PERF_SEL_CE_STALL_ON_WR_RAM_FIFO', - 'CPG_PERF_SEL_CE_STALL_RAM_DUMP', - 'CPG_PERF_SEL_CE_STALL_RAM_WRITE', - 'CPG_PERF_SEL_COUNT_TYPE0_PACKETS', - 'CPG_PERF_SEL_COUNT_TYPE3_PACKETS', 'CPG_PERF_SEL_CPG_GCRIU_BUSY', - 'CPG_PERF_SEL_CPG_GCRIU_IDLE', 'CPG_PERF_SEL_CPG_GCRIU_STALL', - 'CPG_PERF_SEL_CPG_STAT_BUSY', 'CPG_PERF_SEL_CPG_STAT_IDLE', - 'CPG_PERF_SEL_CPG_STAT_STALL', 'CPG_PERF_SEL_CPG_TCIU_BUSY', - 'CPG_PERF_SEL_CPG_TCIU_IDLE', 'CPG_PERF_SEL_CPG_TCIU_STALL', - 'CPG_PERF_SEL_CPG_UTCL2IU_BUSY', 'CPG_PERF_SEL_CPG_UTCL2IU_IDLE', - 'CPG_PERF_SEL_CPG_UTCL2IU_STALL', 'CPG_PERF_SEL_CPG_UTCL2IU_XACK', - 'CPG_PERF_SEL_CPG_UTCL2IU_XNACK', - 'CPG_PERF_SEL_CP_GDS_GRBM_OUT_OF_CREDITS', - 'CPG_PERF_SEL_CP_GRBM_DWORDS_SENT', - 'CPG_PERF_SEL_CP_GRBM_OUT_OF_CREDITS', - 'CPG_PERF_SEL_CP_PFP_GRBM_OUT_OF_CREDITS', - 'CPG_PERF_SEL_DMA_BUSY', - 'CPG_PERF_SEL_DMA_FETCHER_STALLED_ON_ROQ_FULL', - 'CPG_PERF_SEL_DMA_STALLED', 'CPG_PERF_SEL_DMA_STARVED', - 'CPG_PERF_SEL_DYNAMIC_CLK_VALID', - 'CPG_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 'CPG_PERF_SEL_GUS_READ_REQUEST_SENT', - 'CPG_PERF_SEL_GUS_WRITE_REQUEST_SENT', - 'CPG_PERF_SEL_LOAD_STALLED_ON_SET_COHERENCY', - 'CPG_PERF_SEL_ME_INSTR_CACHE_HIT', - 'CPG_PERF_SEL_ME_INSTR_CACHE_MISS', 'CPG_PERF_SEL_ME_PARSER_BUSY', - 'CPG_PERF_SEL_ME_PWS_STALLED0', 'CPG_PERF_SEL_ME_PWS_STALLED1', - 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_PFP', - 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_STQ', - 'CPG_PERF_SEL_ME_STALLED_ON_NO_AVAIL_GFX_CNTX', - 'CPG_PERF_SEL_ME_STALLED_ON_PARTIAL_FLUSH', - 'CPG_PERF_SEL_ME_STALLED_WRITING_CONSTANTS', - 'CPG_PERF_SEL_ME_STALLED_WRITING_TO_RCIU', - 'CPG_PERF_SEL_ME_WAIT_ON_AVAIL_BUFFER', - 'CPG_PERF_SEL_ME_WAIT_ON_CE_COUNTER', - 'CPG_PERF_SEL_PFP_INSTR_CACHE_HIT', - 'CPG_PERF_SEL_PFP_INSTR_CACHE_MISS', - 'CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB1', - 'CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB2', - 'CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB1', - 'CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB2', - 'CPG_PERF_SEL_PFP_PWS_STALLED0', 'CPG_PERF_SEL_PFP_PWS_STALLED1', - 'CPG_PERF_SEL_PFP_STALLED_FOR_DATA_FROM_ROQ', - 'CPG_PERF_SEL_PFP_STALLED_ON_CSF_READY', - 'CPG_PERF_SEL_PFP_STALLED_ON_MEQ_DDID_READY', - 'CPG_PERF_SEL_PFP_STALLED_ON_MEQ_READY', - 'CPG_PERF_SEL_PFP_STALLED_ON_RCIU_READY', - 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_PULSE', - 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_WR_CONFIRM', - 'CPG_PERF_SEL_RBIU_FIFO_FULL', - 'CPG_PERF_SEL_RCIU_STALLED_ON_DMA_READ', - 'CPG_PERF_SEL_RCIU_STALLED_ON_ME_READ', - 'CPG_PERF_SEL_REGISTER_CLK_VALID', - 'CPG_PERF_SEL_SSU_STALLED_ON_ACTIVE_CNTX', - 'CPG_PERF_SEL_SSU_STALLED_ON_CLEAN_SIGNALS', - 'CPG_PERF_SEL_TCIU_READ_REQUEST_SENT', - 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_TAGS', - 'CPG_PERF_SEL_TCIU_WRITE_REQUEST_SENT', - 'CPG_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', 'CPG_TAG_RAM', - 'CP_ALPHA_TAG_RAM_SEL', 'CP_DDID_CNTL_MODE', 'CP_DDID_CNTL_SIZE', - 'CP_DDID_CNTL_VMID_SEL', 'CP_ME_ID', 'CP_PERFMON_ENABLE_MODE', - 'CP_PERFMON_ENABLE_MODE_ALWAYS_COUNT', - 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_FALSE', - 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_TRUE', - 'CP_PERFMON_ENABLE_MODE_RESERVED_1', 'CP_PERFMON_STATE', - 'CP_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', - 'CP_PERFMON_STATE_DISABLE_AND_RESET', - 'CP_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 'CP_PERFMON_STATE_RESERVED_3', 'CP_PERFMON_STATE_START_COUNTING', - 'CP_PERFMON_STATE_STOP_COUNTING', 'CP_PIPE_ID', 'CP_RING_ID', - 'CRC_CUR_0', 'CRC_CUR_1', 'CRC_CUR_SEL', 'CRC_INTERLACE_0', - 'CRC_INTERLACE_1', 'CRC_INTERLACE_2', 'CRC_INTERLACE_3', - 'CRC_INTERLACE_SEL', 'CRC_IN_CUR_0', 'CRC_IN_CUR_1', - 'CRC_IN_CUR_2', 'CRC_IN_CUR_3', 'CRC_IN_CUR_SEL', 'CRC_IN_PIX_0', - 'CRC_IN_PIX_1', 'CRC_IN_PIX_2', 'CRC_IN_PIX_3', 'CRC_IN_PIX_4', - 'CRC_IN_PIX_5', 'CRC_IN_PIX_6', 'CRC_IN_PIX_7', 'CRC_IN_PIX_SEL', - 'CRC_SRC_0', 'CRC_SRC_1', 'CRC_SRC_2', 'CRC_SRC_3', 'CRC_SRC_SEL', - 'CRC_STEREO_0', 'CRC_STEREO_1', 'CRC_STEREO_2', 'CRC_STEREO_3', - 'CRC_STEREO_SEL', 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_1', - 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_2', - 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 'CROB_MEM_PWR_LIGHT_SLEEP_MODE', 'CROSSBAR_FOR_ALPHA', - 'CROSSBAR_FOR_CB_B', 'CROSSBAR_FOR_CR_R', 'CROSSBAR_FOR_Y_G', - 'CRS', 'CR_R_DATA_ONTO_ALPHA_PORT', 'CR_R_DATA_ONTO_CB_B_PORT', - 'CR_R_DATA_ONTO_CR_R_PORT', 'CR_R_DATA_ONTO_Y_G_PORT', - 'CSCNTL_ADDR_WIDTH', 'CSCNTL_DATA_WIDTH', 'CSCNTL_TYPE', - 'CSCNTL_TYPE_EVENT', 'CSCNTL_TYPE_PRIVATE', 'CSCNTL_TYPE_STATE', - 'CSCNTL_TYPE_TG', 'CSCNTL_TYPE_WIDTH', 'CSDATA_ADDR_WIDTH', - 'CSDATA_DATA_WIDTH', 'CSDATA_TYPE', 'CSDATA_TYPE_EVENT', - 'CSDATA_TYPE_PRIVATE', 'CSDATA_TYPE_STATE', 'CSDATA_TYPE_TG', - 'CSDATA_TYPE_WIDTH', 'CS_CONTEXT_DONE', 'CS_DONE', 'CS_NA', - 'CS_PARTIAL_FLUSH', 'CS_STAGE_ON', 'CURSOR_2X_MAGNIFY', - 'CURSOR_2X_MAGNIFY_IS_DISABLE', 'CURSOR_2X_MAGNIFY_IS_ENABLE', - 'CURSOR_COLOR_24BIT_1BIT_AND', - 'CURSOR_COLOR_24BIT_8BIT_ALPHA_PREMULT', - 'CURSOR_COLOR_24BIT_8BIT_ALPHA_UNPREMULT', - 'CURSOR_COLOR_64BIT_FP_PREMULT', - 'CURSOR_COLOR_64BIT_FP_UNPREMULT', 'CURSOR_ENABLE', - 'CURSOR_IN_GUEST_PHYSICAL_ADDRESS', - 'CURSOR_IN_SYSTEM_PHYSICAL_ADDRESS', 'CURSOR_IS_DISABLE', - 'CURSOR_IS_ENABLE', 'CURSOR_IS_NOT_SNOOP', 'CURSOR_IS_SNOOP', - 'CURSOR_LINES_PER_CHUNK', 'CURSOR_LINE_PER_CHUNK_1', - 'CURSOR_LINE_PER_CHUNK_16', 'CURSOR_LINE_PER_CHUNK_2', - 'CURSOR_LINE_PER_CHUNK_4', 'CURSOR_LINE_PER_CHUNK_8', - 'CURSOR_MODE', 'CURSOR_MONO_2BIT', - 'CURSOR_PERFMON_LATENCY_MEASURE_CROB_LATENCY', - 'CURSOR_PERFMON_LATENCY_MEASURE_EN', - 'CURSOR_PERFMON_LATENCY_MEASURE_IS_DISABLED', - 'CURSOR_PERFMON_LATENCY_MEASURE_IS_ENABLED', - 'CURSOR_PERFMON_LATENCY_MEASURE_MC_LATENCY', - 'CURSOR_PERFMON_LATENCY_MEASURE_SEL', 'CURSOR_PITCH', - 'CURSOR_PITCH_128_PIXELS', 'CURSOR_PITCH_256_PIXELS', - 'CURSOR_PITCH_64_PIXELS', 'CURSOR_REQUEST_EARLY', - 'CURSOR_REQUEST_NORMALLY', 'CURSOR_REQ_MODE', 'CURSOR_SNOOP', - 'CURSOR_STEREO_EN', 'CURSOR_STEREO_IS_DISABLED', - 'CURSOR_STEREO_IS_ENABLED', 'CURSOR_SURFACE_IS_NOT_TMZ', - 'CURSOR_SURFACE_IS_TMZ', 'CURSOR_SURFACE_TMZ', 'CURSOR_SYSTEM', - 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS', - 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_0', - 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_1', - 'CUR_CLAMP_DIS', 'CUR_CLAMP_EN', 'CUR_DIS', - 'CUR_DYNAMIC_EXPANSION', 'CUR_EN', 'CUR_ENABLE', - 'CUR_EXPAND_MODE', 'CUR_FP_NO_ROM', 'CUR_FP_USE_ROM', - 'CUR_INV_CLAMP', 'CUR_MODE', 'CUR_NOT_PENDING', 'CUR_PENDING', - 'CUR_ROM_EN', 'CUR_YES_PENDING', 'CUR_ZERO_EXPANSION', - 'CbYCrY10101010_422_PACKED', 'CbYCrY12121212_422_PACKED', - 'CbYCrY8888_422_PACKED', 'CmaskCode', 'CombFunc', 'CompareFrag', - 'ConservativeZExport', 'CovToShaderSel', 'CrYCbA1010102', - 'CrYCbA16161616_10LSB', 'CrYCbA16161616_10MSB', - 'CrYCbA16161616_12LSB', 'CrYCbA16161616_12MSB', 'CrYCbA8888', - 'CrYCbY10101010_422_PACKED', 'CrYCbY12121212_422_PACKED', - 'CrYCbY8888_422_PACKED', 'DAC_MUX_SELECT', 'DAC_MUX_SELECT_DACA', - 'DAC_MUX_SELECT_DACB', 'DB_BREAK_BATCH_EVENT', 'DB_CACHE_FLUSH', - 'DB_CACHE_FLUSH_AND_INV', 'DB_CACHE_FLUSH_AND_INV_EVENT', - 'DB_CACHE_FLUSH_AND_INV_TS_EVENT', 'DB_CACHE_FLUSH_TS', - 'DB_CONTEXT_DONE_EVENT', 'DB_CONTEXT_SUSPEND_EVENT', - 'DB_FLUSH_AND_INV_DB_DATA_TS', 'DB_FLUSH_AND_INV_DB_META', - 'DB_INVOKE_CHANGE_EVENT', 'DB_PERF_SEL_CB_DB_rdreq_prt_sends', - 'DB_PERF_SEL_CB_DB_rdreq_sends', - 'DB_PERF_SEL_CB_DB_wrreq_prt_sends', - 'DB_PERF_SEL_CB_DB_wrreq_sends', - 'DB_PERF_SEL_DB_CB_context_dones', 'DB_PERF_SEL_DB_CB_eop_dones', - 'DB_PERF_SEL_DB_CB_lquad_busy', - 'DB_PERF_SEL_DB_CB_lquad_double_format', - 'DB_PERF_SEL_DB_CB_lquad_export_quads', - 'DB_PERF_SEL_DB_CB_lquad_fast_format', - 'DB_PERF_SEL_DB_CB_lquad_fmt_16_16_float_8pix', - 'DB_PERF_SEL_DB_CB_lquad_fmt_16_16_signed_8pix', - 'DB_PERF_SEL_DB_CB_lquad_fmt_16_16_unsigned_8pix', - 'DB_PERF_SEL_DB_CB_lquad_fmt_32bpp_8pix', - 'DB_PERF_SEL_DB_CB_lquad_num_pixels_need_blending', - 'DB_PERF_SEL_DB_CB_lquad_quads', - 'DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_1x1', - 'DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_1x2', - 'DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_2x1', - 'DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_2x2', - 'DB_PERF_SEL_DB_CB_lquad_sends', - 'DB_PERF_SEL_DB_CB_lquad_slow_format', - 'DB_PERF_SEL_DB_CB_lquad_stalls', 'DB_PERF_SEL_DB_CB_rdret_ack', - 'DB_PERF_SEL_DB_CB_rdret_nack', 'DB_PERF_SEL_DB_CB_tile_busy', - 'DB_PERF_SEL_DB_CB_tile_is_event_BOTTOM_OF_PIPE_TS', - 'DB_PERF_SEL_DB_CB_tile_is_event_FLUSH_AND_INV_CB_PIXEL_DATA', - 'DB_PERF_SEL_DB_CB_tile_is_event_FLUSH_AND_INV_DB_DATA_TS', - 'DB_PERF_SEL_DB_CB_tile_sends', 'DB_PERF_SEL_DB_CB_tile_stalls', - 'DB_PERF_SEL_DB_CB_tile_waiting_for_perfcounter_stop_event', - 'DB_PERF_SEL_DB_CB_wrret_ack', 'DB_PERF_SEL_DB_CB_wrret_nack', - 'DB_PERF_SEL_DB_SC_c_tile_rate', 'DB_PERF_SEL_DB_SC_quad_busy', - 'DB_PERF_SEL_DB_SC_quad_double_quad', - 'DB_PERF_SEL_DB_SC_quad_lit_noz_quad', - 'DB_PERF_SEL_DB_SC_quad_lit_quad', - 'DB_PERF_SEL_DB_SC_quad_noz_tiles', - 'DB_PERF_SEL_DB_SC_quad_num_null_1x2_coarse_pixels', - 'DB_PERF_SEL_DB_SC_quad_num_null_2x1_coarse_pixels', - 'DB_PERF_SEL_DB_SC_quad_num_null_2x2_coarse_pixels', - 'DB_PERF_SEL_DB_SC_quad_quads_with_1_pixel', - 'DB_PERF_SEL_DB_SC_quad_quads_with_2_pixels', - 'DB_PERF_SEL_DB_SC_quad_quads_with_3_pixels', - 'DB_PERF_SEL_DB_SC_quad_quads_with_4_pixels', - 'DB_PERF_SEL_DB_SC_quad_sends', 'DB_PERF_SEL_DB_SC_quad_stalls', - 'DB_PERF_SEL_DB_SC_quad_tiles', 'DB_PERF_SEL_DB_SC_s_tile_rate', - 'DB_PERF_SEL_DB_SC_tile_busy', 'DB_PERF_SEL_DB_SC_tile_culled', - 'DB_PERF_SEL_DB_SC_tile_df_stalls', - 'DB_PERF_SEL_DB_SC_tile_fast_ops', - 'DB_PERF_SEL_DB_SC_tile_fast_stencil_ops', - 'DB_PERF_SEL_DB_SC_tile_fast_z_ops', - 'DB_PERF_SEL_DB_SC_tile_hier_kill', - 'DB_PERF_SEL_DB_SC_tile_no_ops', 'DB_PERF_SEL_DB_SC_tile_sends', - 'DB_PERF_SEL_DB_SC_tile_ssaa_kill', - 'DB_PERF_SEL_DB_SC_tile_stalls', - 'DB_PERF_SEL_DB_SC_tile_tile_rate', - 'DB_PERF_SEL_DB_SC_tile_tiles', 'DB_PERF_SEL_DB_SC_z_tile_rate', - 'DB_PERF_SEL_Depth_Tile_Cache_alloc_stall', - 'DB_PERF_SEL_Depth_Tile_Cache_busy', - 'DB_PERF_SEL_Depth_Tile_Cache_data_frees', - 'DB_PERF_SEL_Depth_Tile_Cache_detailed_noop', - 'DB_PERF_SEL_Depth_Tile_Cache_dtile_locked', - 'DB_PERF_SEL_Depth_Tile_Cache_event', - 'DB_PERF_SEL_Depth_Tile_Cache_flushes', - 'DB_PERF_SEL_Depth_Tile_Cache_hits', - 'DB_PERF_SEL_Depth_Tile_Cache_mem_return_starve', - 'DB_PERF_SEL_Depth_Tile_Cache_misses', - 'DB_PERF_SEL_Depth_Tile_Cache_noop_tile', - 'DB_PERF_SEL_Depth_Tile_Cache_sends', - 'DB_PERF_SEL_Depth_Tile_Cache_starves', - 'DB_PERF_SEL_Depth_Tile_Cache_tile_frees', - 'DB_PERF_SEL_MI_psd_req_wrack_counter_stall', - 'DB_PERF_SEL_MI_quad_req_wrack_counter_stall', - 'DB_PERF_SEL_MI_tile_req_wrack_counter_stall', - 'DB_PERF_SEL_MI_zpc_req_wrack_counter_stall', - 'DB_PERF_SEL_Op_Pipe_Busy', 'DB_PERF_SEL_Op_Pipe_MC_Read_stall', - 'DB_PERF_SEL_Op_Pipe_Postz_Busy', 'DB_PERF_SEL_Op_Pipe_Prez_Busy', - 'DB_PERF_SEL_PERF_fg_lob_fwdr_timeout_hits', - 'DB_PERF_SEL_Plane_Cache_flushes', - 'DB_PERF_SEL_Plane_Cache_frees', 'DB_PERF_SEL_Plane_Cache_hits', - 'DB_PERF_SEL_Plane_Cache_misses', - 'DB_PERF_SEL_Plane_Cache_starves', - 'DB_PERF_SEL_PostZ_Samples_failing_DB', - 'DB_PERF_SEL_PostZ_Samples_failing_S', - 'DB_PERF_SEL_PostZ_Samples_failing_Z', - 'DB_PERF_SEL_PostZ_Samples_passing_Z', - 'DB_PERF_SEL_PreZ_Samples_failing_DB', - 'DB_PERF_SEL_PreZ_Samples_failing_S', - 'DB_PERF_SEL_PreZ_Samples_failing_Z', - 'DB_PERF_SEL_PreZ_Samples_passing_Z', - 'DB_PERF_SEL_RMI_rd_s_32byte_req', - 'DB_PERF_SEL_RMI_rd_s_32byte_ret', - 'DB_PERF_SEL_RMI_rd_tile_32byte_req', - 'DB_PERF_SEL_RMI_rd_tile_32byte_ret', - 'DB_PERF_SEL_RMI_rd_z_32byte_req', - 'DB_PERF_SEL_RMI_rd_z_32byte_ret', - 'DB_PERF_SEL_RMI_wr_psdzpc_32byte_ack', - 'DB_PERF_SEL_RMI_wr_psdzpc_32byte_req', - 'DB_PERF_SEL_RMI_wr_s_32byte_ack', - 'DB_PERF_SEL_RMI_wr_s_32byte_req', - 'DB_PERF_SEL_RMI_wr_tile_32byte_ack', - 'DB_PERF_SEL_RMI_wr_tile_32byte_req', - 'DB_PERF_SEL_RMI_wr_z_32byte_ack', - 'DB_PERF_SEL_RMI_wr_z_32byte_req', 'DB_PERF_SEL_SC_DB_quad_busy', - 'DB_PERF_SEL_SC_DB_quad_killed_tiles', - 'DB_PERF_SEL_SC_DB_quad_pixels', 'DB_PERF_SEL_SC_DB_quad_quads', - 'DB_PERF_SEL_SC_DB_quad_quads_pipe0', - 'DB_PERF_SEL_SC_DB_quad_quads_pipe1', - 'DB_PERF_SEL_SC_DB_quad_sends', 'DB_PERF_SEL_SC_DB_quad_squads', - 'DB_PERF_SEL_SC_DB_quad_tiles', 'DB_PERF_SEL_SC_DB_tile_backface', - 'DB_PERF_SEL_SC_DB_tile_busy', 'DB_PERF_SEL_SC_DB_tile_covered', - 'DB_PERF_SEL_SC_DB_tile_events', 'DB_PERF_SEL_SC_DB_tile_sends', - 'DB_PERF_SEL_SC_DB_tile_stalls', 'DB_PERF_SEL_SC_DB_tile_tiles', - 'DB_PERF_SEL_SC_DB_tile_tiles_pipe0', - 'DB_PERF_SEL_SC_DB_tile_tiles_pipe1', - 'DB_PERF_SEL_SH_quads_outstanding_sum', - 'DB_PERF_SEL_SX_DB_quad_all_pixels_enabled', - 'DB_PERF_SEL_SX_DB_quad_all_pixels_killed', - 'DB_PERF_SEL_SX_DB_quad_busy', - 'DB_PERF_SEL_SX_DB_quad_double_format', - 'DB_PERF_SEL_SX_DB_quad_export_quads', - 'DB_PERF_SEL_SX_DB_quad_exports', - 'DB_PERF_SEL_SX_DB_quad_fast_format', - 'DB_PERF_SEL_SX_DB_quad_need_blending_and_dst_read', - 'DB_PERF_SEL_SX_DB_quad_pixels', 'DB_PERF_SEL_SX_DB_quad_quads', - 'DB_PERF_SEL_SX_DB_quad_sends', - 'DB_PERF_SEL_SX_DB_quad_slow_format', - 'DB_PERF_SEL_SX_DB_quad_stalls', - 'DB_PERF_SEL_Stencil_Cache_flushes', - 'DB_PERF_SEL_Stencil_Cache_frees', - 'DB_PERF_SEL_Stencil_Cache_hits', - 'DB_PERF_SEL_Stencil_Cache_misses', - 'DB_PERF_SEL_Stencil_Cache_starves', - 'DB_PERF_SEL_Tile_Cache_flushes', 'DB_PERF_SEL_Tile_Cache_hits', - 'DB_PERF_SEL_Tile_Cache_mem_return_starve', - 'DB_PERF_SEL_Tile_Cache_misses', 'DB_PERF_SEL_Tile_Cache_starves', - 'DB_PERF_SEL_Tile_Cache_surface_stall', - 'DB_PERF_SEL_Z_Cache_frees', 'DB_PERF_SEL_Z_Cache_pmask_flushes', - 'DB_PERF_SEL_Z_Cache_pmask_hits', - 'DB_PERF_SEL_Z_Cache_pmask_misses', - 'DB_PERF_SEL_Z_Cache_pmask_starves', - 'DB_PERF_SEL_Z_Cache_separate_Z_flushes', - 'DB_PERF_SEL_Z_Cache_separate_Z_hits', - 'DB_PERF_SEL_Z_Cache_separate_Z_misses', - 'DB_PERF_SEL_Z_Cache_separate_Z_starves', - 'DB_PERF_SEL_clock_main_active', - 'DB_PERF_SEL_clock_mem_export_active', - 'DB_PERF_SEL_clock_reg_active', - 'DB_PERF_SEL_cs_events_pws_enable', - 'DB_PERF_SEL_depth_bounds_tile_culled', 'DB_PERF_SEL_di_dt_stall', - 'DB_PERF_SEL_dk_squad_busy', 'DB_PERF_SEL_dk_squad_sends', - 'DB_PERF_SEL_dk_squad_stalls', 'DB_PERF_SEL_dk_tile_busy', - 'DB_PERF_SEL_dk_tile_quad_starves', 'DB_PERF_SEL_dk_tile_sends', - 'DB_PERF_SEL_dk_tile_stalls', 'DB_PERF_SEL_dkg_tile_rate_tile', - 'DB_PERF_SEL_dtt_sm_clash_stall', 'DB_PERF_SEL_dtt_sm_miss_stall', - 'DB_PERF_SEL_dtt_sm_slot_stall', - 'DB_PERF_SEL_earlyZ_waiting_for_postZ_done', - 'DB_PERF_SEL_esr_eot_fwd_busy', 'DB_PERF_SEL_esr_eot_fwd_forward', - 'DB_PERF_SEL_esr_eot_fwd_holding_squad', - 'DB_PERF_SEL_esr_ps_lqf_busy', 'DB_PERF_SEL_esr_ps_lqf_stall', - 'DB_PERF_SEL_esr_ps_out_busy', 'DB_PERF_SEL_esr_ps_src_in_sends', - 'DB_PERF_SEL_esr_ps_src_in_squads', - 'DB_PERF_SEL_esr_ps_src_in_squads_unrolled', - 'DB_PERF_SEL_esr_ps_src_in_stall', - 'DB_PERF_SEL_esr_ps_src_in_tile_rate', - 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled', - 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled_to_pixel_rate', - 'DB_PERF_SEL_esr_ps_src_out_stall', 'DB_PERF_SEL_esr_ps_vic_busy', - 'DB_PERF_SEL_esr_ps_vic_stall', - 'DB_PERF_SEL_esr_ps_woc_1squadIn_2squadOut', - 'DB_PERF_SEL_esr_ps_woc_2squadIn_1squadOut', - 'DB_PERF_SEL_esr_psi_vic_tile_rate', - 'DB_PERF_SEL_esr_sqq_zi_busy', 'DB_PERF_SEL_esr_sqq_zi_stall', - 'DB_PERF_SEL_esr_vic_footprint_match_1x2', - 'DB_PERF_SEL_esr_vic_footprint_match_2x1', - 'DB_PERF_SEL_esr_vic_footprint_match_2x2', - 'DB_PERF_SEL_esr_vic_sqq_busy', 'DB_PERF_SEL_esr_vic_sqq_stall', - 'DB_PERF_SEL_etr_out_busy', 'DB_PERF_SEL_etr_out_cb_tile_stall', - 'DB_PERF_SEL_etr_out_esr_stall', - 'DB_PERF_SEL_etr_out_ltile_probe_fifo_full_stall', - 'DB_PERF_SEL_etr_out_send', 'DB_PERF_SEL_flush_10plane', - 'DB_PERF_SEL_flush_11plane', 'DB_PERF_SEL_flush_12plane', - 'DB_PERF_SEL_flush_13plane', 'DB_PERF_SEL_flush_14plane', - 'DB_PERF_SEL_flush_15plane', 'DB_PERF_SEL_flush_16plane', - 'DB_PERF_SEL_flush_1plane', 'DB_PERF_SEL_flush_2plane', - 'DB_PERF_SEL_flush_3plane', 'DB_PERF_SEL_flush_4plane', - 'DB_PERF_SEL_flush_5plane', 'DB_PERF_SEL_flush_6plane', - 'DB_PERF_SEL_flush_7plane', 'DB_PERF_SEL_flush_8plane', - 'DB_PERF_SEL_flush_9plane', 'DB_PERF_SEL_flush_compressed', - 'DB_PERF_SEL_flush_compressed_stencil', - 'DB_PERF_SEL_flush_expanded_stencil', - 'DB_PERF_SEL_flush_expanded_z', 'DB_PERF_SEL_flush_plane_le4', - 'DB_PERF_SEL_flush_single_stencil', - 'DB_PERF_SEL_hi_z_s_checker_force_coarse_vrs_1x1', - 'DB_PERF_SEL_hi_z_s_checker_force_ssaa_vrs_1x1', - 'DB_PERF_SEL_his_tile_culled', 'DB_PERF_SEL_hiz_tc_read_starved', - 'DB_PERF_SEL_hiz_tc_write_stall', 'DB_PERF_SEL_hiz_tile_culled', - 'DB_PERF_SEL_mi_quad_rd_outstanding_sum', - 'DB_PERF_SEL_mi_quad_wr_outstanding_sum', - 'DB_PERF_SEL_mi_rdreq_busy', 'DB_PERF_SEL_mi_rdreq_stall', - 'DB_PERF_SEL_mi_tile_rd_outstanding_sum', - 'DB_PERF_SEL_mi_tile_wr_outstanding_sum', - 'DB_PERF_SEL_mi_wrreq_busy', 'DB_PERF_SEL_mi_wrreq_stall', - 'DB_PERF_SEL_noz_waiting_for_postz_done', - 'DB_PERF_SEL_planes_flushed', - 'DB_PERF_SEL_postz_ps_invoked_pixel_cnt', - 'DB_PERF_SEL_postzl_full_launch', - 'DB_PERF_SEL_postzl_partial_launch', - 'DB_PERF_SEL_postzl_partial_waiting', - 'DB_PERF_SEL_postzl_se_busy', 'DB_PERF_SEL_postzl_se_stall', - 'DB_PERF_SEL_postzl_sq_pt_busy', 'DB_PERF_SEL_postzl_sq_pt_stall', - 'DB_PERF_SEL_postzl_src_in_sends', - 'DB_PERF_SEL_postzl_src_in_squads', - 'DB_PERF_SEL_postzl_src_in_squads_unrolled', - 'DB_PERF_SEL_postzl_src_in_stall', - 'DB_PERF_SEL_postzl_src_in_tile_rate', - 'DB_PERF_SEL_postzl_src_in_tile_rate_unrolled', - 'DB_PERF_SEL_postzl_src_out_stall', - 'DB_PERF_SEL_postzl_tile_init_stall', - 'DB_PERF_SEL_postzl_tile_mem_stall', - 'DB_PERF_SEL_prez_ps_invoked_pixel_cnt', - 'DB_PERF_SEL_prezl_src_in_sends', - 'DB_PERF_SEL_prezl_src_in_squads', - 'DB_PERF_SEL_prezl_src_in_squads_unrolled', - 'DB_PERF_SEL_prezl_src_in_stall', - 'DB_PERF_SEL_prezl_src_in_tile_rate', - 'DB_PERF_SEL_prezl_src_in_tile_rate_unrolled', - 'DB_PERF_SEL_prezl_src_out_stall', - 'DB_PERF_SEL_prezl_tile_init_stall', - 'DB_PERF_SEL_prezl_tile_mem_stall', - 'DB_PERF_SEL_ps_events_pws_enable', 'DB_PERF_SEL_qc_busy', - 'DB_PERF_SEL_qc_conflicts', 'DB_PERF_SEL_qc_full_stall', - 'DB_PERF_SEL_qc_in_postZ_tile_stalls_preZ', - 'DB_PERF_SEL_qc_in_preZ_tile_stalls_postZ', 'DB_PERF_SEL_qc_xfc', - 'DB_PERF_SEL_quad_rd_32byte_reqs', 'DB_PERF_SEL_quad_rd_busy', - 'DB_PERF_SEL_quad_rd_mi_stall', - 'DB_PERF_SEL_quad_rd_mi_stall_unc', 'DB_PERF_SEL_quad_rd_panic', - 'DB_PERF_SEL_quad_rd_rw_collision', 'DB_PERF_SEL_quad_rd_sends', - 'DB_PERF_SEL_quad_rd_sends_unc', 'DB_PERF_SEL_quad_rd_tag_stall', - 'DB_PERF_SEL_quad_rdret_busy', 'DB_PERF_SEL_quad_rdret_sends', - 'DB_PERF_SEL_quad_wr_acks', 'DB_PERF_SEL_quad_wr_busy', - 'DB_PERF_SEL_quad_wr_coherency_stall', - 'DB_PERF_SEL_quad_wr_mi_stall', 'DB_PERF_SEL_quad_wr_sends', - 'DB_PERF_SEL_reZ_waiting_for_postZ_done', - 'DB_PERF_SEL_recomp_tile_to_1zplane_no_fastop', - 'DB_PERF_SEL_sc_kick_end', 'DB_PERF_SEL_sc_kick_start', - 'DB_PERF_SEL_tcp_dispatcher_flushes', - 'DB_PERF_SEL_tcp_dispatcher_reads', - 'DB_PERF_SEL_tcp_prefetcher_flushes', - 'DB_PERF_SEL_tcp_prefetcher_reads', - 'DB_PERF_SEL_tcp_preloader_flushes', - 'DB_PERF_SEL_tcp_preloader_reads', 'DB_PERF_SEL_tile_rd_sends', - 'DB_PERF_SEL_tile_wr_acks', 'DB_PERF_SEL_tile_wr_sends', - 'DB_PERF_SEL_tiles_compressed_to_decompressed', - 'DB_PERF_SEL_tiles_decomp_on_expclear', - 'DB_PERF_SEL_tiles_s_clear_on_expclear', - 'DB_PERF_SEL_tiles_stencil_fully_summarized', - 'DB_PERF_SEL_tiles_z_clear_on_expclear', - 'DB_PERF_SEL_tiles_z_fully_summarized', 'DB_PERF_SEL_tl_busy', - 'DB_PERF_SEL_tl_dtc_read_starved', 'DB_PERF_SEL_tl_events', - 'DB_PERF_SEL_tl_expand_squads', - 'DB_PERF_SEL_tl_flush_expand_squads', - 'DB_PERF_SEL_tl_in_fast_z_stall', - 'DB_PERF_SEL_tl_in_single_stencil_expand_stall', - 'DB_PERF_SEL_tl_in_xfc', 'DB_PERF_SEL_tl_out_squads', - 'DB_PERF_SEL_tl_out_xfc', 'DB_PERF_SEL_tl_postZ_noop_squads', - 'DB_PERF_SEL_tl_postZ_squads', 'DB_PERF_SEL_tl_preZ_noop_squads', - 'DB_PERF_SEL_tl_preZ_squads', - 'DB_PERF_SEL_tl_stencil_locked_stall', - 'DB_PERF_SEL_tl_stencil_stall', 'DB_PERF_SEL_tl_summarize_squads', - 'DB_PERF_SEL_tl_tile_ops', 'DB_PERF_SEL_tl_z_decompress_stall', - 'DB_PERF_SEL_tl_z_fetch_stall', - 'DB_PERF_SEL_ts_events_pws_enable', - 'DB_PERF_SEL_ts_tc_update_stall', - 'DB_PERF_SEL_tsc_insert_summarize_stall', - 'DB_PERF_SEL_unmapped_z_tile_culled', - 'DB_PERF_SEL_zf_plane_multicycle', 'DB_VPORT_CHANGED_EVENT', - 'DCCG_AUDIO_DTO0_SOURCE_SEL', 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG0', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG1', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG2', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG3', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_RESERVED', - 'DCCG_AUDIO_DTO2_SOURCE_SEL', 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0', - 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0_DIV2', 'DCCG_AUDIO_DTO_SEL', - 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO0', 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO1', - 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO_DTBCLK', - 'DCCG_AUDIO_DTO_SEL_NO_AUDIO_DTO', - 'DCCG_AUDIO_DTO_USE_128FBR_FOR_DP', - 'DCCG_AUDIO_DTO_USE_512FBR_DTO', - 'DCCG_AUDIO_DTO_USE_512FBR_FOR_DP', 'DCCG_DBG_BLOCK_SEL', - 'DCCG_DBG_BLOCK_SEL_DCCG', 'DCCG_DBG_BLOCK_SEL_PMON', - 'DCCG_DBG_BLOCK_SEL_PMON2', 'DCCG_DBG_EN', 'DCCG_DBG_EN_DISABLE', - 'DCCG_DBG_EN_ENABLE', 'DCCG_DEEP_COLOR_CNTL', - 'DCCG_DEEP_COLOR_DTO_2_1_RATIO', 'DCCG_DEEP_COLOR_DTO_3_2_RATIO', - 'DCCG_DEEP_COLOR_DTO_5_4_RATIO', 'DCCG_DEEP_COLOR_DTO_DISABLE', - 'DCCG_FIFO_ERRDET_OVR_DISABLE', 'DCCG_FIFO_ERRDET_OVR_EN', - 'DCCG_FIFO_ERRDET_OVR_ENABLE', 'DCCG_FIFO_ERRDET_RESET', - 'DCCG_FIFO_ERRDET_RESET_FORCE', 'DCCG_FIFO_ERRDET_RESET_NOOP', - 'DCCG_FIFO_ERRDET_STATE', 'DCCG_FIFO_ERRDET_STATE_CALIBRATION', - 'DCCG_FIFO_ERRDET_STATE_DETECTION', 'DCCG_PERF_MODE_HSYNC', - 'DCCG_PERF_MODE_HSYNC_NOOP', 'DCCG_PERF_MODE_HSYNC_START', - 'DCCG_PERF_MODE_VSYNC', 'DCCG_PERF_MODE_VSYNC_NOOP', - 'DCCG_PERF_MODE_VSYNC_START', 'DCCG_PERF_OTG_SELECT', - 'DCCG_PERF_RUN', 'DCCG_PERF_RUN_NOOP', 'DCCG_PERF_RUN_START', - 'DCCG_PERF_SEL_OTG0', 'DCCG_PERF_SEL_OTG1', 'DCCG_PERF_SEL_OTG2', - 'DCCG_PERF_SEL_OTG3', 'DCCG_PERF_SEL_RESERVED', - 'DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_1', - 'DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_2', - 'DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 'DCHUBBUB_DET_MEM_PWR_LIGHT_SLEEP_MODE', - 'DCHUBBUB_MEM_POWER_DIS_MODE_DISABLE', - 'DCHUBBUB_MEM_POWER_DIS_MODE_ENABLE', - 'DCHUBBUB_MEM_POWER_MODE_DEEP_SLEEP', - 'DCHUBBUB_MEM_POWER_MODE_LIGHT_SLEEP', - 'DCHUBBUB_MEM_POWER_MODE_OFF', - 'DCHUBBUB_MEM_POWER_MODE_SHUT_DOWN', 'DCHUBBUB_MEM_PWR_DIS_MODE', - 'DCHUBBUB_MEM_PWR_MODE', 'DCIOCHIP_AUX_ALL_PWR_OK', - 'DCIOCHIP_AUX_ALL_PWR_OK_0', 'DCIOCHIP_AUX_ALL_PWR_OK_1', - 'DCIOCHIP_AUX_CSEL0P9', 'DCIOCHIP_AUX_CSEL1P1', - 'DCIOCHIP_AUX_CSEL_DEC0P9', 'DCIOCHIP_AUX_CSEL_DEC1P0', - 'DCIOCHIP_AUX_CSEL_INC1P0', 'DCIOCHIP_AUX_CSEL_INC1P1', - 'DCIOCHIP_AUX_FALLSLEWSEL', 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH0', - 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH1', 'DCIOCHIP_AUX_FALLSLEWSEL_LOW', - 'DCIOCHIP_AUX_FALLSLEWSEL_ULTRAHIGH', 'DCIOCHIP_AUX_HYS_TUNE', - 'DCIOCHIP_AUX_HYS_TUNE_0', 'DCIOCHIP_AUX_HYS_TUNE_1', - 'DCIOCHIP_AUX_HYS_TUNE_2', 'DCIOCHIP_AUX_HYS_TUNE_3', - 'DCIOCHIP_AUX_RECEIVER_SEL', 'DCIOCHIP_AUX_RECEIVER_SEL_0', - 'DCIOCHIP_AUX_RECEIVER_SEL_1', 'DCIOCHIP_AUX_RECEIVER_SEL_2', - 'DCIOCHIP_AUX_RECEIVER_SEL_3', 'DCIOCHIP_AUX_RSEL0P9', - 'DCIOCHIP_AUX_RSEL1P1', 'DCIOCHIP_AUX_RSEL_DEC0P9', - 'DCIOCHIP_AUX_RSEL_DEC1P0', 'DCIOCHIP_AUX_RSEL_INC1P0', - 'DCIOCHIP_AUX_RSEL_INC1P1', 'DCIOCHIP_AUX_SPIKESEL', - 'DCIOCHIP_AUX_SPIKESEL_10NS', 'DCIOCHIP_AUX_SPIKESEL_50NS', - 'DCIOCHIP_AUX_VOD_TUNE', 'DCIOCHIP_AUX_VOD_TUNE_0', - 'DCIOCHIP_AUX_VOD_TUNE_1', 'DCIOCHIP_AUX_VOD_TUNE_2', - 'DCIOCHIP_AUX_VOD_TUNE_3', 'DCIOCHIP_GPIO_MASK_EN', - 'DCIOCHIP_GPIO_MASK_EN_HARDWARE', - 'DCIOCHIP_GPIO_MASK_EN_SOFTWARE', 'DCIOCHIP_HPD_SEL', - 'DCIOCHIP_HPD_SEL_ASYNC', 'DCIOCHIP_HPD_SEL_CLOCKED', - 'DCIOCHIP_I2C_COMPSEL', 'DCIOCHIP_I2C_FALLSLEWSEL', - 'DCIOCHIP_I2C_FALLSLEWSEL_00', 'DCIOCHIP_I2C_FALLSLEWSEL_01', - 'DCIOCHIP_I2C_FALLSLEWSEL_10', 'DCIOCHIP_I2C_FALLSLEWSEL_11', - 'DCIOCHIP_I2C_RECEIVER_SEL', 'DCIOCHIP_I2C_RECEIVER_SEL_0', - 'DCIOCHIP_I2C_RECEIVER_SEL_1', 'DCIOCHIP_I2C_RECEIVER_SEL_2', - 'DCIOCHIP_I2C_RECEIVER_SEL_3', 'DCIOCHIP_I2C_REC_COMPARATOR', - 'DCIOCHIP_I2C_REC_SCHMIT', 'DCIOCHIP_I2C_VPH_1V2_EN', - 'DCIOCHIP_I2C_VPH_1V2_EN_0', 'DCIOCHIP_I2C_VPH_1V2_EN_1', - 'DCIOCHIP_INVERT', 'DCIOCHIP_MASK', 'DCIOCHIP_MASK_DISABLE', - 'DCIOCHIP_MASK_ENABLE', 'DCIOCHIP_PAD_MODE', - 'DCIOCHIP_PAD_MODE_DDC', 'DCIOCHIP_PAD_MODE_DP', 'DCIOCHIP_PD_EN', - 'DCIOCHIP_PD_EN_ALLOW', 'DCIOCHIP_PD_EN_NOTALLOW', - 'DCIOCHIP_POL_INVERT', 'DCIOCHIP_POL_NON_INVERT', - 'DCIOCHIP_REF_27_SRC_SEL', - 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_BYPASS', - 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_DIVIDER', - 'DCIOCHIP_REF_27_SRC_SEL_XTAL_BYPASS', - 'DCIOCHIP_REF_27_SRC_SEL_XTAL_DIVIDER', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER1', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER2', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER3', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER4', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER5', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER6', - 'DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL', - 'DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS', - 'DCIO_DBG_ASYNC_4BIT_SEL', 'DCIO_DBG_ASYNC_4BIT_SEL_11TO8', - 'DCIO_DBG_ASYNC_4BIT_SEL_15TO12', - 'DCIO_DBG_ASYNC_4BIT_SEL_19TO16', - 'DCIO_DBG_ASYNC_4BIT_SEL_23TO20', - 'DCIO_DBG_ASYNC_4BIT_SEL_27TO24', - 'DCIO_DBG_ASYNC_4BIT_SEL_31TO28', 'DCIO_DBG_ASYNC_4BIT_SEL_3TO0', - 'DCIO_DBG_ASYNC_4BIT_SEL_7TO4', 'DCIO_DBG_ASYNC_BLOCK_SEL', - 'DCIO_DBG_ASYNC_BLOCK_SEL_DCCG', 'DCIO_DBG_ASYNC_BLOCK_SEL_DCIO', - 'DCIO_DBG_ASYNC_BLOCK_SEL_DIO', - 'DCIO_DBG_ASYNC_BLOCK_SEL_OVERRIDE', 'DCIO_DCRXPHY_SOFT_RESET', - 'DCIO_DCRXPHY_SOFT_RESET_ASSERT', - 'DCIO_DCRXPHY_SOFT_RESET_DEASSERT', 'DCIO_DC_GENERICA_SEL', - 'DCIO_DC_GENERICB_SEL', - 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL', - 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL', - 'DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL', - 'DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL', - 'DCIO_DC_GPIO_DEBUG_DPRX_LOOPBACK_ENABLE', - 'DCIO_DC_GPU_TIMER_READ_SELECT', - 'DCIO_DC_GPU_TIMER_START_POSITION', - 'DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL', - 'DCIO_DC_REF_CLK_CNTL_HSYNCA_OUTPUT_SEL', - 'DCIO_DIO_EXT_VSYNC_MASK', 'DCIO_DIO_OTG_EXT_VSYNC_MUX', - 'DCIO_DISPCLK_R_DCIO_GATE_DISABLE', - 'DCIO_DISPCLK_R_DCIO_GATE_ENABLE', 'DCIO_DPCS_INTERRUPT_DISABLE', - 'DCIO_DPCS_INTERRUPT_ENABLE', 'DCIO_DPCS_INTERRUPT_MASK', - 'DCIO_DPCS_INTERRUPT_TYPE', - 'DCIO_DPCS_INTERRUPT_TYPE_LEVEL_BASED', - 'DCIO_DPCS_INTERRUPT_TYPE_PULSE_BASED', - 'DCIO_DPRX_LOOPBACK_ENABLE_LOOP', - 'DCIO_DPRX_LOOPBACK_ENABLE_NORMAL', 'DCIO_DSYNC_SOFT_RESET', - 'DCIO_DSYNC_SOFT_RESET_ASSERT', 'DCIO_DSYNC_SOFT_RESET_DEASSERT', - 'DCIO_EXT_VSYNC_MASK_NONE', 'DCIO_EXT_VSYNC_MASK_NONE_DUPLICATE', - 'DCIO_EXT_VSYNC_MASK_PIPE0', 'DCIO_EXT_VSYNC_MASK_PIPE1', - 'DCIO_EXT_VSYNC_MASK_PIPE2', 'DCIO_EXT_VSYNC_MASK_PIPE3', - 'DCIO_EXT_VSYNC_MASK_PIPE4', 'DCIO_EXT_VSYNC_MASK_PIPE5', - 'DCIO_EXT_VSYNC_MUX_GENERICB', 'DCIO_EXT_VSYNC_MUX_OTG0', - 'DCIO_EXT_VSYNC_MUX_OTG1', 'DCIO_EXT_VSYNC_MUX_OTG2', - 'DCIO_EXT_VSYNC_MUX_OTG3', 'DCIO_EXT_VSYNC_MUX_OTG4', - 'DCIO_EXT_VSYNC_MUX_OTG5', 'DCIO_EXT_VSYNC_MUX_SWAPLOCKB', - 'DCIO_GENERICA_SEL_GENERICA_DCCG', 'DCIO_GENERICA_SEL_STEREOSYNC', - 'DCIO_GENERICA_SEL_SYNCEN', 'DCIO_GENERICB_SEL_GENERICB_DCCG', - 'DCIO_GENERICB_SEL_STEREOSYNC', 'DCIO_GENERICB_SEL_SYNCEN', - 'DCIO_GENLK_CLK_GSL_MASK', 'DCIO_GENLK_CLK_GSL_MASK_NO', - 'DCIO_GENLK_CLK_GSL_MASK_STEREO', - 'DCIO_GENLK_CLK_GSL_MASK_TIMING', - 'DCIO_GENLK_CLK_OUTPUT_SEL_DISABLE', - 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL1', - 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL2', - 'DCIO_GENLK_CLK_OUTPUT_SEL_RESERVED_VALUE3', - 'DCIO_GENLK_VSYNC_GSL_MASK', 'DCIO_GENLK_VSYNC_GSL_MASK_NO', - 'DCIO_GENLK_VSYNC_GSL_MASK_STEREO', - 'DCIO_GENLK_VSYNC_GSL_MASK_TIMING', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE', - 'DCIO_GPU_TIMER_START_0_END_27', 'DCIO_GPU_TIMER_START_10_END_37', - 'DCIO_GPU_TIMER_START_1_END_28', 'DCIO_GPU_TIMER_START_2_END_29', - 'DCIO_GPU_TIMER_START_3_END_30', 'DCIO_GPU_TIMER_START_4_END_31', - 'DCIO_GPU_TIMER_START_6_END_33', 'DCIO_GPU_TIMER_START_8_END_35', - 'DCIO_GSL_SEL', 'DCIO_GSL_SEL_GROUP_0', 'DCIO_GSL_SEL_GROUP_1', - 'DCIO_GSL_SEL_GROUP_2', 'DCIO_HSYNCA_OUTPUT_SEL_DISABLE', - 'DCIO_HSYNCA_OUTPUT_SEL_PPLL1', 'DCIO_HSYNCA_OUTPUT_SEL_PPLL2', - 'DCIO_HSYNCA_OUTPUT_SEL_RESERVED', 'DCIO_PHY_HPO_ENC_SRC_SEL', - 'DCIO_SWAPLOCK_A_GSL_MASK', 'DCIO_SWAPLOCK_A_GSL_MASK_NO', - 'DCIO_SWAPLOCK_A_GSL_MASK_STEREO', - 'DCIO_SWAPLOCK_A_GSL_MASK_TIMING', 'DCIO_SWAPLOCK_B_GSL_MASK', - 'DCIO_SWAPLOCK_B_GSL_MASK_NO', 'DCIO_SWAPLOCK_B_GSL_MASK_STEREO', - 'DCIO_SWAPLOCK_B_GSL_MASK_TIMING', 'DCIO_TEST_CLK_SEL_DISPCLK', - 'DCIO_TEST_CLK_SEL_GATED_DISPCLK', 'DCIO_TEST_CLK_SEL_SOCCLK', - 'DCIO_UNIPHYA_FBDIV_CLK', 'DCIO_UNIPHYA_FBDIV_SSC_CLK', - 'DCIO_UNIPHYA_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYA_TEST_REFDIV_CLK', 'DCIO_UNIPHYB_FBDIV_CLK', - 'DCIO_UNIPHYB_FBDIV_SSC_CLK', 'DCIO_UNIPHYB_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYB_TEST_REFDIV_CLK', 'DCIO_UNIPHYC_FBDIV_CLK', - 'DCIO_UNIPHYC_FBDIV_SSC_CLK', 'DCIO_UNIPHYC_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYC_TEST_REFDIV_CLK', 'DCIO_UNIPHYD_FBDIV_CLK', - 'DCIO_UNIPHYD_FBDIV_SSC_CLK', 'DCIO_UNIPHYD_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYD_TEST_REFDIV_CLK', 'DCIO_UNIPHYE_FBDIV_CLK', - 'DCIO_UNIPHYE_FBDIV_SSC_CLK', 'DCIO_UNIPHYE_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYE_TEST_REFDIV_CLK', 'DCIO_UNIPHYF_FBDIV_CLK', - 'DCIO_UNIPHYF_FBDIV_SSC_CLK', 'DCIO_UNIPHYF_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYF_TEST_REFDIV_CLK', 'DCIO_UNIPHYG_FBDIV_CLK', - 'DCIO_UNIPHYG_FBDIV_SSC_CLK', 'DCIO_UNIPHYG_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYG_TEST_REFDIV_CLK', 'DCIO_UNIPHY_CHANNEL_INVERTED', - 'DCIO_UNIPHY_CHANNEL_NO_INVERSION', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH0', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH1', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH2', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH3', 'DCIO_UNIPHY_IMPCAL_SEL', - 'DCIO_UNIPHY_IMPCAL_SEL_BINARY', - 'DCIO_UNIPHY_IMPCAL_SEL_TEMPERATURE', - 'DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT', - 'DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_DEBOUNCED', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_TOGGLE_FILTERED', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_DISALLOW', 'DC_DMCUB_INT_TYPE', - 'DC_DMCUB_TIMER_WINDOW', 'DC_MEM_GLOBAL_PWR_REQ_DIS', - 'DC_MEM_GLOBAL_PWR_REQ_DISABLE', 'DC_MEM_GLOBAL_PWR_REQ_ENABLE', - 'DC_SMU_INTERRUPT_ENABLE', 'DDID_VMID_CNTL', 'DDID_VMID_PIPE', - 'DEBUG_BUS_SELECT_ABM0', 'DEBUG_BUS_SELECT_ABM1', - 'DEBUG_BUS_SELECT_ABM2', 'DEBUG_BUS_SELECT_ABM3', - 'DEBUG_BUS_SELECT_ABM_RESERVED0', - 'DEBUG_BUS_SELECT_ABM_RESERVED1', 'DEBUG_BUS_SELECT_DPG0', - 'DEBUG_BUS_SELECT_DPG1', 'DEBUG_BUS_SELECT_DPG2', - 'DEBUG_BUS_SELECT_DPG3', 'DEBUG_BUS_SELECT_DPG_RESERVED0', - 'DEBUG_BUS_SELECT_DPG_RESERVED1', 'DEBUG_BUS_SELECT_FMT0', - 'DEBUG_BUS_SELECT_FMT1', 'DEBUG_BUS_SELECT_FMT2', - 'DEBUG_BUS_SELECT_FMT3', 'DEBUG_BUS_SELECT_FMT_RESERVED0', - 'DEBUG_BUS_SELECT_FMT_RESERVED1', 'DEBUG_BUS_SELECT_OPPBUF0', - 'DEBUG_BUS_SELECT_OPPBUF1', 'DEBUG_BUS_SELECT_OPPBUF2', - 'DEBUG_BUS_SELECT_OPPBUF3', 'DEBUG_BUS_SELECT_OPPBUF_RESERVED0', - 'DEBUG_BUS_SELECT_OPPBUF_RESERVED1', 'DEBUG_BUS_SELECT_OPP_PIPE0', - 'DEBUG_BUS_SELECT_OPP_PIPE1', 'DEBUG_BUS_SELECT_OPP_PIPE2', - 'DEBUG_BUS_SELECT_OPP_PIPE3', - 'DEBUG_BUS_SELECT_OPP_PIPE_RESERVED0', - 'DEBUG_BUS_SELECT_OPP_PIPE_RESERVED1', 'DECERR', - 'DENORM_TRUNCATE', 'DETILE_BUFFER_PACKER_ENABLE', - 'DETILE_BUFFER_PACKER_IS_DISABLE', - 'DETILE_BUFFER_PACKER_IS_ENABLE', 'DFQ_MIN_FREE_ENTRIES', - 'DFQ_MIN_FREE_ENTRIES_0', 'DFQ_MIN_FREE_ENTRIES_1', - 'DFQ_MIN_FREE_ENTRIES_2', 'DFQ_MIN_FREE_ENTRIES_3', - 'DFQ_MIN_FREE_ENTRIES_4', 'DFQ_MIN_FREE_ENTRIES_5', - 'DFQ_MIN_FREE_ENTRIES_6', 'DFQ_MIN_FREE_ENTRIES_7', - 'DFQ_NUM_ENTRIES', 'DFQ_NUM_ENTRIES_0', 'DFQ_NUM_ENTRIES_1', - 'DFQ_NUM_ENTRIES_2', 'DFQ_NUM_ENTRIES_3', 'DFQ_NUM_ENTRIES_4', - 'DFQ_NUM_ENTRIES_5', 'DFQ_NUM_ENTRIES_6', 'DFQ_NUM_ENTRIES_7', - 'DFQ_NUM_ENTRIES_8', 'DFQ_SIZE', 'DFQ_SIZE_0', 'DFQ_SIZE_1', - 'DFQ_SIZE_2', 'DFQ_SIZE_3', 'DFQ_SIZE_4', 'DFQ_SIZE_5', - 'DFQ_SIZE_6', 'DFQ_SIZE_7', 'DFSMFlushEvents', 'DIFFERENT_RGB', - 'DIG_10BIT_TEST_PATTERN', 'DIG_ALL_PIXEL', - 'DIG_ALTERNATING_TEST_PATTERN', 'DIG_BE_CNTL_HPD1', - 'DIG_BE_CNTL_HPD2', 'DIG_BE_CNTL_HPD3', 'DIG_BE_CNTL_HPD4', - 'DIG_BE_CNTL_HPD5', 'DIG_BE_CNTL_HPD_SELECT', 'DIG_BE_CNTL_MODE', - 'DIG_BE_CNTL_NO_HPD', 'DIG_BE_DP_MST_MODE', 'DIG_BE_DP_SST_MODE', - 'DIG_BE_RESERVED1', 'DIG_BE_RESERVED2', 'DIG_BE_RESERVED3', - 'DIG_BE_RESERVED4', 'DIG_BE_TMDS_DVI_MODE', - 'DIG_BE_TMDS_HDMI_MODE', 'DIG_DIGITAL_BYPASS_ENABLE', - 'DIG_DIGITAL_BYPASS_OFF', 'DIG_DIGITAL_BYPASS_ON', - 'DIG_DIGITAL_BYPASS_SEL', 'DIG_DIGITAL_BYPASS_SEL_10BPP_LSB', - 'DIG_DIGITAL_BYPASS_SEL_12BPC_LSB', - 'DIG_DIGITAL_BYPASS_SEL_36BPP', - 'DIG_DIGITAL_BYPASS_SEL_48BPP_LSB', - 'DIG_DIGITAL_BYPASS_SEL_48BPP_MSB', - 'DIG_DIGITAL_BYPASS_SEL_ALPHA', 'DIG_DIGITAL_BYPASS_SEL_BYPASS', - 'DIG_EVEN_PIXEL_ONLY', 'DIG_FE_CNTL_SOURCE_SELECT', - 'DIG_FE_CNTL_STEREOSYNC_SELECT', 'DIG_FE_SOURCE_FROM_OTG0', - 'DIG_FE_SOURCE_FROM_OTG1', 'DIG_FE_SOURCE_FROM_OTG2', - 'DIG_FE_SOURCE_FROM_OTG3', 'DIG_FE_SOURCE_RESERVED', - 'DIG_FE_STEREOSYNC_FROM_OTG0', 'DIG_FE_STEREOSYNC_FROM_OTG1', - 'DIG_FE_STEREOSYNC_FROM_OTG2', 'DIG_FE_STEREOSYNC_FROM_OTG3', - 'DIG_FE_STEREOSYNC_RESERVED', 'DIG_FIFO_1_PIX_PER_CYCLE', - 'DIG_FIFO_2_PIX_PER_CYCLE', 'DIG_FIFO_CTRL_FORCE_RECOMP_MINMAX', - 'DIG_FIFO_CTRL_USE_OVERWRITE_LEVEL', - 'DIG_FIFO_FORCE_RECAL_AVERAGE', - 'DIG_FIFO_FORCE_RECAL_AVERAGE_LEVEL', - 'DIG_FIFO_FORCE_RECOMP_MINMAX', - 'DIG_FIFO_NOT_FORCE_RECAL_AVERAGE', - 'DIG_FIFO_NOT_FORCE_RECOMP_MINMAX', 'DIG_FIFO_NO_ERROR_OCCURRED', - 'DIG_FIFO_OUTPUT_PROCESSING_MODE', 'DIG_FIFO_OVERFLOW_OCCURRED', - 'DIG_FIFO_OVERFLOW_UNDERFLOW_ERROR', 'DIG_FIFO_READ_CLOCK_SRC', - 'DIG_FIFO_READ_CLOCK_SRC_FROM_DCCG', - 'DIG_FIFO_READ_CLOCK_SRC_FROM_DISPLAY_PIPE', - 'DIG_FIFO_UNDERFLOW_OCCURRED', 'DIG_FIFO_USE_CAL_AVERAGE_LEVEL', - 'DIG_FIFO_USE_OVERWRITE_LEVEL', 'DIG_INPUT_PIXEL_SEL', - 'DIG_IN_DEBUG_MODE', 'DIG_IN_NORMAL_OPERATION', - 'DIG_ODD_PIXEL_ONLY', 'DIG_OUTPUT_CRC_CNTL_LINK_SEL', - 'DIG_OUTPUT_CRC_DATA_SEL', 'DIG_OUTPUT_CRC_FOR_ACTIVEONLY', - 'DIG_OUTPUT_CRC_FOR_AUDIO', 'DIG_OUTPUT_CRC_FOR_FULLFRAME', - 'DIG_OUTPUT_CRC_FOR_VBI', 'DIG_OUTPUT_CRC_ON_LINK0', - 'DIG_OUTPUT_CRC_ON_LINK1', 'DIG_PAIR_PIXELS', - 'DIG_RANDOM_PATTERN_ENABLED', 'DIG_RANDOM_PATTERN_RESETED', - 'DIG_RANDOM_PATTERN_SEED_RAN_PAT', - 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_ALL_PIXELS', - 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_DE_HIGH', 'DIG_SINGLETON_PIXELS', - 'DIG_SL_PIXEL_GROUPING', - 'DIG_TEST_PATTERN_EXTERNAL_RESET_BY_EXT_SIG', - 'DIG_TEST_PATTERN_EXTERNAL_RESET_EN', - 'DIG_TEST_PATTERN_EXTERNAL_RESET_ENABLE', - 'DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL', - 'DIG_TEST_PATTERN_NORMAL', 'DIG_TEST_PATTERN_RANDOM', - 'DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN', - 'DIG_TEST_PATTERN_RANDOM_PATTERN_RESET', - 'DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN', 'DIG_UPDATE_EYE_SEL_BOTH', - 'DIG_UPDATE_EYE_SEL_LEFT', 'DIG_UPDATE_EYE_SEL_RIGHT', - 'DIG_UPDATE_FIELD_SEL_BOTH', 'DIG_UPDATE_FIELD_SEL_BOTTOM', - 'DIG_UPDATE_FIELD_SEL_RESERVED', 'DIG_UPDATE_FIELD_SEL_TOP', - 'DIOMEM_DISABLE_MEM_PWR_CTRL', 'DIOMEM_DYNAMIC_DEEP_SLEEP_EN', - 'DIOMEM_DYNAMIC_DEEP_SLEEP_ENABLE', - 'DIOMEM_DYNAMIC_LIGHT_SLEEP_EN', - 'DIOMEM_DYNAMIC_LIGHT_SLEEP_ENABLE', - 'DIOMEM_DYNAMIC_SHUT_DOWN_ENABLE', 'DIOMEM_ENABLE_MEM_PWR_CTRL', - 'DIOMEM_FORCE_DEEP_SLEEP_REQUEST', 'DIOMEM_FORCE_LIGHT_SLEEP_REQ', - 'DIOMEM_FORCE_LIGHT_SLEEP_REQUEST', - 'DIOMEM_FORCE_SHUT_DOWN_REQUEST', 'DIOMEM_NO_FORCE_REQ', - 'DIOMEM_NO_FORCE_REQUEST', 'DIOMEM_PWR_DIS_CTRL', - 'DIOMEM_PWR_FORCE_CTRL', 'DIOMEM_PWR_FORCE_CTRL2', - 'DIOMEM_PWR_SEL_CTRL', 'DIOMEM_PWR_SEL_CTRL2', - 'DIO_DBG_BLOCK_SEL', 'DIO_DBG_BLOCK_SEL_AUX0', - 'DIO_DBG_BLOCK_SEL_AUX1', 'DIO_DBG_BLOCK_SEL_AUX2', - 'DIO_DBG_BLOCK_SEL_AUX3', 'DIO_DBG_BLOCK_SEL_AUX4', - 'DIO_DBG_BLOCK_SEL_DIGA', 'DIO_DBG_BLOCK_SEL_DIGB', - 'DIO_DBG_BLOCK_SEL_DIGC', 'DIO_DBG_BLOCK_SEL_DIGD', - 'DIO_DBG_BLOCK_SEL_DIGE', 'DIO_DBG_BLOCK_SEL_DIGFE_A', - 'DIO_DBG_BLOCK_SEL_DIGFE_B', 'DIO_DBG_BLOCK_SEL_DIGFE_C', - 'DIO_DBG_BLOCK_SEL_DIGFE_D', 'DIO_DBG_BLOCK_SEL_DIGFE_E', - 'DIO_DBG_BLOCK_SEL_DIO', 'DIO_DBG_BLOCK_SEL_DPA', - 'DIO_DBG_BLOCK_SEL_DPB', 'DIO_DBG_BLOCK_SEL_DPC', - 'DIO_DBG_BLOCK_SEL_DPD', 'DIO_DBG_BLOCK_SEL_DPE', - 'DIO_DBG_BLOCK_SEL_DPFE_A', 'DIO_DBG_BLOCK_SEL_DPFE_B', - 'DIO_DBG_BLOCK_SEL_DPFE_C', 'DIO_DBG_BLOCK_SEL_DPFE_D', - 'DIO_DBG_BLOCK_SEL_DPFE_E', 'DIO_DBG_BLOCK_SEL_PERFMON_DIO', - 'DIO_DBG_BLOCK_SEL_RESERVED', 'DIO_FIFO_ERROR', - 'DIO_FIFO_ERROR_00', 'DIO_FIFO_ERROR_01', 'DIO_FIFO_ERROR_10', - 'DIO_FIFO_ERROR_11', - 'DIO_HDMI_RXSTATUS_TIMER_CONTROL_DIO_HDMI_RXSTATUS_TIMER_TYPE', - 'DIO_HDMI_RXSTATUS_TIMER_TYPE_LEVEL', - 'DIO_HDMI_RXSTATUS_TIMER_TYPE_PULSE', - 'DISABLE_BINNING_USE_LEGACY_SC', 'DISABLE_BINNING_USE_NEW_SC', - 'DISABLE_CLOCK_GATING', 'DISABLE_CLOCK_GATING_IN_DCO', - 'DISABLE_DEBUG', 'DISABLE_JITTER_REMOVAL', 'DISABLE_MEM_PWR_CTRL', - 'DISABLE_PWL', 'DISABLE_TF0_OPT', 'DISABLE_TF1_OPT', - 'DISABLE_THE_FEATURE', 'DISABLE_THE_INTERRUPT', - 'DISPCLK_CHG_FWD_CORR_DISABLE', - 'DISPCLK_CHG_FWD_CORR_DISABLE_AT_BEGINNING', - 'DISPCLK_CHG_FWD_CORR_ENABLE_AT_BEGINNING', - 'DISPCLK_FREQ_RAMP_COMPLETED', 'DISPCLK_FREQ_RAMP_DONE', - 'DISPCLK_FREQ_RAMP_IN_PROGRESS', 'DIVISOR_BY1', - 'DIVISOR_BY2_RESERVED', 'DIVISOR_BY3', 'DIVISOR_BY4_RESERVED', - 'DIVISOR_BY5_RESERVED', 'DIVISOR_BY6_RESERVED', - 'DIVISOR_BY7_RESERVED', 'DIVISOR_BY8_RESERVED', 'DIV_2', 'DIV_4', - 'DIV_8', 'DI_INDEX_SIZE_16_BIT', 'DI_INDEX_SIZE_32_BIT', - 'DI_INDEX_SIZE_8_BIT', 'DI_MAJOR_MODE_0', 'DI_MAJOR_MODE_1', - 'DI_PT_2D_RECTANGLE', 'DI_PT_LINELIST', 'DI_PT_LINELIST_ADJ', - 'DI_PT_LINELOOP', 'DI_PT_LINESTRIP', 'DI_PT_LINESTRIP_ADJ', - 'DI_PT_NONE', 'DI_PT_PATCH', 'DI_PT_POINTLIST', 'DI_PT_POLYGON', - 'DI_PT_QUADLIST', 'DI_PT_QUADSTRIP', 'DI_PT_RECTLIST', - 'DI_PT_TRIFAN', 'DI_PT_TRILIST', 'DI_PT_TRILIST_ADJ', - 'DI_PT_TRISTRIP', 'DI_PT_TRISTRIP_ADJ', 'DI_PT_UNUSED_1', - 'DI_PT_UNUSED_3', 'DI_PT_UNUSED_4', 'DI_PT_UNUSED_5', - 'DI_SRC_SEL_AUTO_INDEX', 'DI_SRC_SEL_DMA', 'DI_SRC_SEL_IMMEDIATE', - 'DI_SRC_SEL_RESERVED', - 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE', - 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_DISABLE', - 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_ENABLE', - 'DMDATA_CLEAR_UNDERFLOW_STATUS', 'DMDATA_DONE', - 'DMDATA_DONT_CLEAR', 'DMDATA_HARDWARE_UPDATE_MODE', 'DMDATA_MODE', - 'DMDATA_NOT_SENT_TO_DIG', 'DMDATA_NOT_UNDERFLOW', - 'DMDATA_NOT_UPDATED', 'DMDATA_QOS_LEVEL_FROM_SOFTWARE', - 'DMDATA_QOS_LEVEL_FROM_TTU', 'DMDATA_QOS_MODE', 'DMDATA_REPEAT', - 'DMDATA_SENT_TO_DIG', 'DMDATA_SOFTWARE_UPDATE_MODE', - 'DMDATA_UNDERFLOW', 'DMDATA_UNDERFLOWED', - 'DMDATA_UNDERFLOW_CLEAR', 'DMDATA_UPDATED', - 'DMDATA_USE_FOR_CURRENT_AND_FUTURE_FRAMES', - 'DMDATA_USE_FOR_CURRENT_FRAME_ONLY', 'DMDATA_VM_DONE', - 'DMDATA_VM_IS_DONE', 'DMDATA_VM_IS_NOT_DONE', - 'DMDATA_WAS_UPDATED', 'DME_MEM_DISABLE_MEM_PWR_CTRL', - 'DME_MEM_ENABLE_MEM_PWR_CTRL', 'DME_MEM_FORCE_DEEP_SLEEP_REQUEST', - 'DME_MEM_FORCE_LIGHT_SLEEP_REQUEST', - 'DME_MEM_FORCE_SHUT_DOWN_REQUEST', 'DME_MEM_NO_FORCE_REQUEST', - 'DME_MEM_POWER_STATE_ENUM', 'DME_MEM_POWER_STATE_ENUM_DS', - 'DME_MEM_POWER_STATE_ENUM_LS', 'DME_MEM_POWER_STATE_ENUM_ON', - 'DME_MEM_POWER_STATE_ENUM_SD', 'DME_MEM_PWR_DIS_CTRL', - 'DME_MEM_PWR_FORCE_CTRL', 'DMU_CLOCK_ON', 'DMU_CLOCK_STATUS_OFF', - 'DMU_CLOCK_STATUS_ON', 'DMU_DC_GPU_TIMER_READ_SELECT', - 'DMU_DC_GPU_TIMER_START_POSITION', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_48', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_AWAY_76', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VREADY_36', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM_24', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_STARTUP_12', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_0', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_NO_LOCK_64', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_50', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_AWAY_78', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VREADY_38', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VSYNC_NOM_26', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_STARTUP_14', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_2', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_NO_LOCK_66', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_52', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_AWAY_80', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VREADY_40', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VSYNC_NOM_28', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_STARTUP_16', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_4', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_NO_LOCK_68', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_54', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_AWAY_82', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VREADY_42', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VSYNC_NOM_30', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_STARTUP_18', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_6', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_NO_LOCK_70', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_49', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_AWAY_77', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VREADY_37', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM_25', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_STARTUP_13', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_1', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_NO_LOCK_65', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_51', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_AWAY_79', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VREADY_39', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VSYNC_NOM_27', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_STARTUP_15', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_3', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_NO_LOCK_67', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_53', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_AWAY_81', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VREADY_41', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VSYNC_NOM_29', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_STARTUP_17', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_5', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_NO_LOCK_69', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_55', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_AWAY_83', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VREADY_43', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VSYNC_NOM_31', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_STARTUP_19', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_7', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_NO_LOCK_71', - 'DMU_GPU_TIMER_START_0_END_27', 'DMU_GPU_TIMER_START_10_END_37', - 'DMU_GPU_TIMER_START_1_END_28', 'DMU_GPU_TIMER_START_2_END_29', - 'DMU_GPU_TIMER_START_3_END_30', 'DMU_GPU_TIMER_START_4_END_31', - 'DMU_GPU_TIMER_START_6_END_33', 'DMU_GPU_TIMER_START_8_END_35', - 'DOLBY_VISION_DISABLED', 'DOLBY_VISION_ENABLE', - 'DOLBY_VISION_ENABLED', 'DONUTS', 'DOUT_I2C_ACK', - 'DOUT_I2C_ACK_TO_CLEAN', - 'DOUT_I2C_ARBITRATION_ABORT_CURRENT_TRANSFER', - 'DOUT_I2C_ARBITRATION_ABORT_XFER', - 'DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG', - 'DOUT_I2C_ARBITRATION_DONE__NOT_USING_I2C_REG', - 'DOUT_I2C_ARBITRATION_DONE__USING_I2C_REG', - 'DOUT_I2C_ARBITRATION_NOT_ABORT_CURRENT_TRANSFER', - 'DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_0_RESERVED', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_1_RESERVED', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_HIGH', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_NORMAL', - 'DOUT_I2C_ARBITRATION_SW_QUEUE_DISABLED', - 'DOUT_I2C_ARBITRATION_SW_QUEUE_ENABLED', - 'DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ', - 'DOUT_I2C_ARBITRATION__NOT_USE_I2C_REG_REQ', - 'DOUT_I2C_ARBITRATION__USE_I2C_REG_REQ', - 'DOUT_I2C_CONTROL_DBG_REF_SEL', 'DOUT_I2C_CONTROL_DDC_SELECT', - 'DOUT_I2C_CONTROL_FAST_REFERENCE_DEBUG', 'DOUT_I2C_CONTROL_GO', - 'DOUT_I2C_CONTROL_NORMAL_DEBUG', - 'DOUT_I2C_CONTROL_NOT_RESET_I2C_CONTROLLER', - 'DOUT_I2C_CONTROL_NOT_RESET_SW_STATUS', - 'DOUT_I2C_CONTROL_RESET_I2C_CONTROLLER', - 'DOUT_I2C_CONTROL_RESET_SW_STATUS', - 'DOUT_I2C_CONTROL_SELECT_DDC1', 'DOUT_I2C_CONTROL_SELECT_DDC2', - 'DOUT_I2C_CONTROL_SELECT_DDC3', 'DOUT_I2C_CONTROL_SELECT_DDC4', - 'DOUT_I2C_CONTROL_SELECT_DDC5', 'DOUT_I2C_CONTROL_SELECT_DDCVGA', - 'DOUT_I2C_CONTROL_SEND_RESET', - 'DOUT_I2C_CONTROL_SEND_RESET_LENGTH', - 'DOUT_I2C_CONTROL_SOFT_RESET', 'DOUT_I2C_CONTROL_START_TRANSFER', - 'DOUT_I2C_CONTROL_STOP_TRANSFER', - 'DOUT_I2C_CONTROL_SW_STATUS_RESET', 'DOUT_I2C_CONTROL_TRANS0', - 'DOUT_I2C_CONTROL_TRANS0_TRANS1', - 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2', - 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2_TRANS3', - 'DOUT_I2C_CONTROL_TRANSACTION_COUNT', - 'DOUT_I2C_CONTROL__NOT_SEND_RESET', - 'DOUT_I2C_CONTROL__SEND_RESET', - 'DOUT_I2C_CONTROL__SEND_RESET_LENGTH_10', - 'DOUT_I2C_CONTROL__SEND_RESET_LENGTH_9', - 'DOUT_I2C_DATA_INDEX_WRITE', 'DOUT_I2C_DATA__INDEX_WRITE', - 'DOUT_I2C_DATA__NOT_INDEX_WRITE', - 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_BY_EXTERNAL_RESISTOR', - 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_BY_EXTERNAL_RESISTOR', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_10MCLKS', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_20MCLKS', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL', - 'DOUT_I2C_DDC_SETUP_EDID_DETECT_CONNECT', - 'DOUT_I2C_DDC_SETUP_EDID_DETECT_DISCONNECT', - 'DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE', - 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SCL', - 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SDA', - 'DOUT_I2C_DDC_SPEED_THRESHOLD', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_BIG_THAN_ZERO', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_HALF_OF_TOTAL_SAMPLE', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_QUATER_OF_TOTAL_SAMPLE', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_THREE_QUATERS_OF_TOTAL_SAMPLE', - 'DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET', - 'DOUT_I2C_EDID_NOT_SEND_RESET_BEFORE_EDID_READ_TRACTION', - 'DOUT_I2C_EDID_SEND_RESET_BEFORE_EDID_READ_TRACTION', - 'DOUT_I2C_NO_ACK', 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE', - 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__LEVEL', - 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__PULSE', - 'DOUT_I2C_TRANSACTION_STOP_ALL_TRANS', - 'DOUT_I2C_TRANSACTION_STOP_CURRENT_TRANS', - 'DOUT_I2C_TRANSACTION_STOP_ON_NACK', 'DPHY_8B10B_CUR_DISP', - 'DPHY_8B10B_CUR_DISP_ONE', 'DPHY_8B10B_CUR_DISP_ZERO', - 'DPHY_8B10B_NOT_RESET', 'DPHY_8B10B_OUTPUT', 'DPHY_8B10B_RESET', - 'DPHY_8B10B_RESETET', - 'DPHY_ALT_SCRAMBLER_INTERNAL_RESET_SOLUTION', - 'DPHY_ALT_SCRAMBLER_REGULAR_RESET_VALUE', - 'DPHY_ALT_SCRAMBLER_RESET_EN', 'DPHY_ALT_SCRAMBLER_RESET_SEL', - 'DPHY_ALT_SCRAMBLER_RESET_SEL_CUSTOM_RESET_VALUE', - 'DPHY_ALT_SCRAMBLER_RESET_SEL_EDP_RESET_VALUE', - 'DPHY_ATEST_LANE0_PRBS_PATTERN', 'DPHY_ATEST_LANE0_REG_PATTERN', - 'DPHY_ATEST_LANE1_PRBS_PATTERN', 'DPHY_ATEST_LANE1_REG_PATTERN', - 'DPHY_ATEST_LANE2_PRBS_PATTERN', 'DPHY_ATEST_LANE2_REG_PATTERN', - 'DPHY_ATEST_LANE3_PRBS_PATTERN', 'DPHY_ATEST_LANE3_REG_PATTERN', - 'DPHY_ATEST_SEL_LANE0', 'DPHY_ATEST_SEL_LANE1', - 'DPHY_ATEST_SEL_LANE2', 'DPHY_ATEST_SEL_LANE3', 'DPHY_BYPASS', - 'DPHY_CRC_CONTINUOUS', 'DPHY_CRC_CONT_EN', 'DPHY_CRC_DISABLED', - 'DPHY_CRC_EN', 'DPHY_CRC_ENABLED', 'DPHY_CRC_FIELD', - 'DPHY_CRC_LANE0_SELECTED', 'DPHY_CRC_LANE1_SELECTED', - 'DPHY_CRC_LANE2_SELECTED', 'DPHY_CRC_LANE3_SELECTED', - 'DPHY_CRC_MST_PHASE_ERROR_ACK', 'DPHY_CRC_MST_PHASE_ERROR_ACKED', - 'DPHY_CRC_MST_PHASE_ERROR_NO_ACK', 'DPHY_CRC_ONE_SHOT', - 'DPHY_CRC_SEL', 'DPHY_CRC_START_FROM_BOTTOM_FIELD', - 'DPHY_CRC_START_FROM_TOP_FIELD', 'DPHY_DBG_OUTPUT', - 'DPHY_DPHY_SCRAMBLER_ADVANCE_ON_DATA_SYMBOL_ONLY', - 'DPHY_FAST_TRAINING_CAPABLE', 'DPHY_FAST_TRAINING_NOT_CAPABLE_0', - 'DPHY_FEC_ACTIVE', 'DPHY_FEC_DISABLED', 'DPHY_FEC_ENABLE', - 'DPHY_FEC_ENABLED', 'DPHY_FEC_NOT_ACTIVE', 'DPHY_FEC_READY', - 'DPHY_FEC_READY_DIS', 'DPHY_FEC_READY_EN', - 'DPHY_LOAD_BS_COUNT_NOT_STARTED', 'DPHY_LOAD_BS_COUNT_START', - 'DPHY_LOAD_BS_COUNT_STARTED', 'DPHY_NO_SKEW', - 'DPHY_PRBS11_SELECTED', 'DPHY_PRBS23_SELECTED', - 'DPHY_PRBS7_SELECTED', 'DPHY_PRBS_DISABLE', 'DPHY_PRBS_EN', - 'DPHY_PRBS_ENABLE', 'DPHY_PRBS_SEL', - 'DPHY_RX_FAST_TRAINING_CAPABLE', 'DPHY_SCRAMBLER_ADVANCE', - 'DPHY_SCRAMBLER_ADVANCE_ON_BOTH_DATA_AND_CTRL', - 'DPHY_SCRAMBLER_DIS', 'DPHY_SCRAMBLER_KCODE', - 'DPHY_SCRAMBLER_KCODE_DISABLED', 'DPHY_SCRAMBLER_KCODE_ENABLED', - 'DPHY_SCRAMBLER_SEL', 'DPHY_SCRAMBLER_SEL_DBG_DATA', - 'DPHY_SCRAMBLER_SEL_LANE_DATA', 'DPHY_SCR_DISABLED', - 'DPHY_SCR_ENABLED', 'DPHY_SKEW_BYPASS', - 'DPHY_STREAM_RESET_DURING_FAST_TRAINING_ENUM', - 'DPHY_STREAM_RESET_DURING_FAST_TRAINING_NOT_RESET', - 'DPHY_STREAM_RESET_DURING_FAST_TRAINING_RESET', - 'DPHY_SW_FAST_TRAINING_NOT_STARTED', - 'DPHY_SW_FAST_TRAINING_START', 'DPHY_SW_FAST_TRAINING_STARTED', - 'DPHY_TRAINING_PATTERN_1', 'DPHY_TRAINING_PATTERN_2', - 'DPHY_TRAINING_PATTERN_3', 'DPHY_TRAINING_PATTERN_4', - 'DPHY_TRAINING_PATTERN_SEL', 'DPHY_WITH_SKEW', 'DPREFCLK_SRC_SEL', - 'DPREFCLK_SRC_SEL_CK', 'DPREFCLK_SRC_SEL_P0PLL', - 'DPREFCLK_SRC_SEL_P1PLL', 'DPREFCLK_SRC_SEL_P2PLL', - 'DPTE_GROUP_SIZE', 'DPTE_GROUP_SIZE_1024B', - 'DPTE_GROUP_SIZE_128B', 'DPTE_GROUP_SIZE_2048B', - 'DPTE_GROUP_SIZE_256B', 'DPTE_GROUP_SIZE_512B', - 'DPTE_GROUP_SIZE_64B', 'DP_128B132B', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__GTC_LS_SW', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__LS_GTC_SW', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_GTC_LS', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_LS_GTC', - 'DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG', - 'DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ', - 'DP_AUX_ARB_CONTROL__DONE_NOT_USING_AUX_REG', - 'DP_AUX_ARB_CONTROL__DONE_USING_AUX_REG', - 'DP_AUX_ARB_CONTROL__NOT_USE_AUX_REG_REQ', - 'DP_AUX_ARB_CONTROL__USE_AUX_REG_REQ', 'DP_AUX_ARB_STATUS', - 'DP_AUX_CONTROL_HPD1_SELECTED', 'DP_AUX_CONTROL_HPD2_SELECTED', - 'DP_AUX_CONTROL_HPD3_SELECTED', 'DP_AUX_CONTROL_HPD4_SELECTED', - 'DP_AUX_CONTROL_HPD5_SELECTED', 'DP_AUX_CONTROL_HPD_SEL', - 'DP_AUX_CONTROL_NO_HPD_SELECTED', 'DP_AUX_CONTROL_TEST_MODE', - 'DP_AUX_CONTROL_TEST_MODE_DISABLE', - 'DP_AUX_CONTROL_TEST_MODE_ENABLE', - 'DP_AUX_DEFINITE_ERR_REACHED_ACK', - 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START', - 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__10_EDGES', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__18_EDGES', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__6_EDGES', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__RESERVED', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__2_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__4_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__6_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__8_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO128_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO16_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO256_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO2_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO32_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO4_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO64_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO8_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO128_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO16_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO256_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO2_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO32_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO4_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO64_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO8_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_START', - 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_STOP', - 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_START', - 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_STOP', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__127to128', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__15to16', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__1to2', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__255to256', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__31to32', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__3to4', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__63to64', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__7to8', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__0', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__128US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__16US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__256US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__32US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__64US', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__1MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__2MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__4MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__8MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__DIVIDED_SYM_CLK', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__FROM_DCCG_MICROSECOND_REF', - 'DP_AUX_ERR_OCCURRED_ACK', 'DP_AUX_ERR_OCCURRED__ACK', - 'DP_AUX_ERR_OCCURRED__NOT_ACK', - 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_ALLOW_REQ_FROM_OTHER_AUX', - 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ', - 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ_FROM_OTHER_AUX', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__300US', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__400US', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__500US', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__600US', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__16_ATTAMPS', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__4_ATTAMPS', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__8_ATTAMPS', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__RESERVED', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__0', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__128', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__256', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__64', - 'DP_AUX_IDLE', 'DP_AUX_INT_ACK', 'DP_AUX_INT_LS_UPDATE_ACK', - 'DP_AUX_INT_LS_UPDATE_NOT_ACK', 'DP_AUX_INT__ACK', - 'DP_AUX_INT__NOT_ACK', 'DP_AUX_IN_USE_GTC', 'DP_AUX_IN_USE_LS', - 'DP_AUX_IN_USE_PHYWAKE', 'DP_AUX_IN_USE_SW', - 'DP_AUX_LS_UPDATE_ACK', 'DP_AUX_PHY_WAKE_HIGH_PRIORITY', - 'DP_AUX_PHY_WAKE_LOW_PRIORITY', 'DP_AUX_PHY_WAKE_PRIORITY', - 'DP_AUX_POTENTIAL_ERR_REACHED_ACK', - 'DP_AUX_POTENTIAL_ERR_REACHED__ACK', - 'DP_AUX_POTENTIAL_ERR_REACHED__NOT_ACK', 'DP_AUX_RESET', - 'DP_AUX_RESET_ASSERTED', 'DP_AUX_RESET_DEASSERTED', - 'DP_AUX_RESET_DONE', 'DP_AUX_RESET_SEQUENCE_DONE', - 'DP_AUX_RESET_SEQUENCE_NOT_DONE', 'DP_AUX_RX_TIMEOUT_LEN_MUL', - 'DP_AUX_RX_TIMEOUT_LEN_MUL_2', 'DP_AUX_RX_TIMEOUT_LEN_MUL_4', - 'DP_AUX_RX_TIMEOUT_LEN_MUL_8', 'DP_AUX_RX_TIMEOUT_LEN_NO_MUL', - 'DP_AUX_SW_CONTROL_LS_READ_TRIG', - 'DP_AUX_SW_CONTROL_LS_READ__NOT_TRIG', - 'DP_AUX_SW_CONTROL_LS_READ__TRIG', 'DP_AUX_SW_CONTROL_SW_GO', - 'DP_AUX_SW_CONTROL_SW__GO', 'DP_AUX_SW_CONTROL_SW__NOT_GO', - 'DP_AUX_TX_PRECHARGE_LEN_MUL', 'DP_AUX_TX_PRECHARGE_LEN_MUL_2', - 'DP_AUX_TX_PRECHARGE_LEN_MUL_4', 'DP_AUX_TX_PRECHARGE_LEN_MUL_8', - 'DP_AUX_TX_PRECHARGE_LEN_NO_MUL', 'DP_COMPONENT_DEPTH', - 'DP_COMPONENT_DEPTH_10BPC', 'DP_COMPONENT_DEPTH_12BPC', - 'DP_COMPONENT_DEPTH_16BPC', 'DP_COMPONENT_DEPTH_6BPC', - 'DP_COMPONENT_DEPTH_8BPC', 'DP_CP_ENCRYPTION_TYPE', - 'DP_CP_ENCRYPTION_TYPE_0', 'DP_CP_ENCRYPTION_TYPE_1', - 'DP_DPHY_8B10B_EXT_DISP', 'DP_DPHY_8B10B_EXT_DISP_ONE', - 'DP_DPHY_8B10B_EXT_DISP_ZERO', - 'DP_DPHY_FAST_TRAINING_COMPLETE_ACK', - 'DP_DPHY_FAST_TRAINING_COMPLETE_ACKED', - 'DP_DPHY_FAST_TRAINING_COMPLETE_MASK', - 'DP_DPHY_FAST_TRAINING_COMPLETE_MASKED', - 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_ACKED', - 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_MASKED', - 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_DISABLED', - 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN', - 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_ENABLED', - 'DP_DPHY_HBR2_PASS_THROUGH', 'DP_DPHY_HBR2_PATTERN_1', - 'DP_DPHY_HBR2_PATTERN_2_NEG', 'DP_DPHY_HBR2_PATTERN_2_POS', - 'DP_DPHY_HBR2_PATTERN_3', 'DP_DPHY_HBR2_PATTERN_CONTROL_MODE', - 'DP_DPHY_SYM32_1LANE', 'DP_DPHY_SYM32_2LANE', - 'DP_DPHY_SYM32_4LANE', 'DP_DPHY_SYM32_ACTIVE', - 'DP_DPHY_SYM32_CRC_END_LLCP', 'DP_DPHY_SYM32_CRC_END_PS_ANY', - 'DP_DPHY_SYM32_CRC_END_PS_LT_SR', 'DP_DPHY_SYM32_CRC_END_PS_ONLY', - 'DP_DPHY_SYM32_CRC_START_LLCP', - 'DP_DPHY_SYM32_CRC_START_PS_LT_SR', - 'DP_DPHY_SYM32_CRC_START_PS_ONLY', - 'DP_DPHY_SYM32_CRC_START_PS_POST_LT_SR', - 'DP_DPHY_SYM32_CRC_START_TP_START', - 'DP_DPHY_SYM32_CRC_TAP_SOURCE_SCHEDULER', - 'DP_DPHY_SYM32_CRC_TAP_SOURCE_SYMBOL_HANDLER', - 'DP_DPHY_SYM32_CRC_TAP_SOURCE_TP_GEN_MUX', - 'DP_DPHY_SYM32_CRC_USE_END_EVENT', - 'DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS', 'DP_DPHY_SYM32_DISABLE', - 'DP_DPHY_SYM32_ENABLE', 'DP_DPHY_SYM32_ENCRYPT_TYPE0', - 'DP_DPHY_SYM32_ENCRYPT_TYPE1', 'DP_DPHY_SYM32_LT_TPS1', - 'DP_DPHY_SYM32_LT_TPS2', 'DP_DPHY_SYM32_NOT_RESET', - 'DP_DPHY_SYM32_NO_RATE_UPDATE_PENDING', - 'DP_DPHY_SYM32_RATE_UPDATE_PENDING', 'DP_DPHY_SYM32_RESERVED', - 'DP_DPHY_SYM32_RESET', 'DP_DPHY_SYM32_RESET_STATUS_ASSERTED', - 'DP_DPHY_SYM32_RESET_STATUS_DEASSERTED', - 'DP_DPHY_SYM32_SAT_NOTRIGGER_UPDATE', - 'DP_DPHY_SYM32_SAT_NOTRIGGER_UPDATE_PENDING', - 'DP_DPHY_SYM32_SAT_NO_UPDATE', - 'DP_DPHY_SYM32_SAT_NO_UPDATE_PENDING', - 'DP_DPHY_SYM32_SAT_TRIGGER_UPDATE', - 'DP_DPHY_SYM32_SAT_TRIGGER_UPDATE_PENDING', - 'DP_DPHY_SYM32_STATUS_ENABLED', 'DP_DPHY_SYM32_STATUS_IDLE', - 'DP_DPHY_SYM32_STREAM_OVR_ALWAYS', - 'DP_DPHY_SYM32_STREAM_OVR_NONE', - 'DP_DPHY_SYM32_STREAM_OVR_REPLACE', - 'DP_DPHY_SYM32_STREAM_OVR_TYPE_CONTROL', - 'DP_DPHY_SYM32_STREAM_OVR_TYPE_DATA', 'DP_DPHY_SYM32_TEST', - 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS11', - 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS15', - 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS23', - 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS31', - 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS7', - 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS9', - 'DP_DPHY_SYM32_TP_SELECT_CUSTOM', 'DP_DPHY_SYM32_TP_SELECT_PRBS', - 'DP_DPHY_SYM32_TP_SELECT_SQUARE', 'DP_DPHY_SYM32_TP_SELECT_TPS1', - 'DP_DPHY_SYM32_TP_SELECT_TPS2', 'DP_DSC_444_SIMPLE_422', - 'DP_DSC_DISABLE', 'DP_DSC_MODE', 'DP_DSC_NATIVE_422_420', - 'DP_DTO_DESPREAD_DISABLE', 'DP_DTO_DESPREAD_ENABLE', - 'DP_DTO_DS_DISABLE', 'DP_EMBEDDED_PANEL', - 'DP_EMBEDDED_PANEL_MODE', 'DP_EXTERNAL_PANEL', - 'DP_LINK_TRAINING_ALREADY_COMPLETE', 'DP_LINK_TRAINING_COMPLETE', - 'DP_LINK_TRAINING_NOT_COMPLETE', 'DP_LINK_TRAINING_SWITCH_MODE', - 'DP_LINK_TRAINING_SWITCH_TO_IDLE', - 'DP_LINK_TRAINING_SWITCH_TO_VIDEO', 'DP_ML_PHY_SEQ_IMMEDIATE', - 'DP_ML_PHY_SEQ_LINE_NUM', 'DP_ML_PHY_SEQ_MODE', - 'DP_MSA_V_TIMING_OVERRIDE_EN', 'DP_MSE_BLANK_CODE', - 'DP_MSE_BLANK_CODE_SF_FILLED', 'DP_MSE_BLANK_CODE_ZERO_FILLED', - 'DP_MSE_LINK_LINE', 'DP_MSE_LINK_LINE_128_MTP_LONG', - 'DP_MSE_LINK_LINE_256_MTP_LONG', 'DP_MSE_LINK_LINE_32_MTP_LONG', - 'DP_MSE_LINK_LINE_64_MTP_LONG', 'DP_MSE_NOT_ZERO_FE_ENCODER', - 'DP_MSE_SAT_ENCRYPT0', 'DP_MSE_SAT_ENCRYPT0_DISABLED', - 'DP_MSE_SAT_ENCRYPT0_ENABLED', 'DP_MSE_SAT_ENCRYPT1', - 'DP_MSE_SAT_ENCRYPT1_DISABLED', 'DP_MSE_SAT_ENCRYPT1_ENABLED', - 'DP_MSE_SAT_ENCRYPT2', 'DP_MSE_SAT_ENCRYPT2_DISABLED', - 'DP_MSE_SAT_ENCRYPT2_ENABLED', 'DP_MSE_SAT_ENCRYPT3', - 'DP_MSE_SAT_ENCRYPT3_DISABLED', 'DP_MSE_SAT_ENCRYPT3_ENABLED', - 'DP_MSE_SAT_ENCRYPT4', 'DP_MSE_SAT_ENCRYPT4_DISABLED', - 'DP_MSE_SAT_ENCRYPT4_ENABLED', 'DP_MSE_SAT_ENCRYPT5', - 'DP_MSE_SAT_ENCRYPT5_DISABLED', 'DP_MSE_SAT_ENCRYPT5_ENABLED', - 'DP_MSE_SAT_UPDATE_ACT', 'DP_MSE_SAT_UPDATE_NO_ACTION', - 'DP_MSE_SAT_UPDATE_WITHOUT_TRIGGER', - 'DP_MSE_SAT_UPDATE_WITH_TRIGGER', - 'DP_MSE_TIMESTAMP_CALC_BASED_ON_LINK_RATE', - 'DP_MSE_TIMESTAMP_CALC_BASED_ON_VC_RATE', 'DP_MSE_TIMESTAMP_MODE', - 'DP_MSE_ZERO_ENCODER', 'DP_MSE_ZERO_FE_ENCODER', - 'DP_MSO_FOUR_SSTLINK', 'DP_MSO_NUM_OF_SST_LINKS', - 'DP_MSO_ONE_SSTLINK', 'DP_MSO_TWO_SSTLINK', - 'DP_ONE_PIXEL_PER_CYCLE', 'DP_PIXEL_ENCODING', - 'DP_PIXEL_ENCODING_RGB444', 'DP_PIXEL_ENCODING_RGB_WIDE_GAMUT', - 'DP_PIXEL_ENCODING_YCBCR420', 'DP_PIXEL_ENCODING_YCBCR422', - 'DP_PIXEL_ENCODING_YCBCR444', 'DP_PIXEL_ENCODING_Y_ONLY', - 'DP_PIXEL_PER_CYCLE_PROCESSING_NUM', - 'DP_SEC_ASP_CHANNEL_COUNT_FROM_AZ', - 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE', - 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED', - 'DP_SEC_ASP_HIGH_PRIORITY', 'DP_SEC_ASP_LOW_PRIORITY', - 'DP_SEC_ASP_PRIORITY', 'DP_SEC_AUDIO_MUTE', - 'DP_SEC_AUDIO_MUTE_HW_CTRL', 'DP_SEC_AUDIO_MUTE_SW_CTRL', - 'DP_SEC_COLLISION_ACK', 'DP_SEC_COLLISION_ACK_CLR_FLAG', - 'DP_SEC_COLLISION_ACK_NO_EFFECT', 'DP_SEC_GSP0_PRIORITY', - 'DP_SEC_GSP_SEND', 'DP_SEC_GSP_SEND_ANY_LINE', - 'DP_SEC_GSP_SEND_PPS', 'DP_SEC_LINE_REFERENCE', - 'DP_SEC_TIMESTAMP_AUTO_CALC_MODE', 'DP_SEC_TIMESTAMP_MODE', - 'DP_SEC_TIMESTAMP_PROGRAMMABLE_MODE', 'DP_STEER_OVERFLOW_ACK', - 'DP_STEER_OVERFLOW_ACK_CLR_INTERRUPT', - 'DP_STEER_OVERFLOW_ACK_NO_EFFECT', 'DP_STEER_OVERFLOW_MASK', - 'DP_STEER_OVERFLOW_MASKED', 'DP_STEER_OVERFLOW_UNMASK', - 'DP_STREAM_ENC_DCCG', 'DP_STREAM_ENC_DISPLAY_PIPE', - 'DP_STREAM_ENC_HARDWARE', 'DP_STREAM_ENC_NOT_RESET', - 'DP_STREAM_ENC_NO_ERROR_OCCURRED', - 'DP_STREAM_ENC_OVERFLOW_OCCURRED', - 'DP_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR', - 'DP_STREAM_ENC_OVERWRITE_LEVEL_SELECT', - 'DP_STREAM_ENC_PROGRAMMABLE', 'DP_STREAM_ENC_READ_CLOCK_CONTROL', - 'DP_STREAM_ENC_RESET', 'DP_STREAM_ENC_RESET_CONTROL', - 'DP_STREAM_ENC_STREAM_ACTIVE', 'DP_STREAM_ENC_UNDERFLOW_OCCURRED', - 'DP_STREAM_ENC_VIDEO_STREAM_ACTIVE', - 'DP_STREAM_ENC_VIDEO_STREAM_NOT_ACTIVE', - 'DP_STREAM_MAPPER_DP_STREAM_LINK_TARGET', - 'DP_STREAM_MAPPER_LINK0', 'DP_STREAM_MAPPER_LINK1', - 'DP_STREAM_MAPPER_RESERVED', 'DP_SYM32_ENC_COMPONENT_DEPTH_10BPC', - 'DP_SYM32_ENC_COMPONENT_DEPTH_12BPC', - 'DP_SYM32_ENC_COMPONENT_DEPTH_6BPC', - 'DP_SYM32_ENC_COMPONENT_DEPTH_8BPC', - 'DP_SYM32_ENC_COMPRESSED_FORMAT', 'DP_SYM32_ENC_CONTINUOUS_MODE', - 'DP_SYM32_ENC_CRC_NOT_VALID', 'DP_SYM32_ENC_CRC_VALID', - 'DP_SYM32_ENC_DISABLE', 'DP_SYM32_ENC_DP_SOF', - 'DP_SYM32_ENC_ENABLE', 'DP_SYM32_ENC_GSP_DEADLINE_MISSED', - 'DP_SYM32_ENC_GSP_DEADLINE_NOT_MISSED', - 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_128', - 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_32', - 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_RESERVED0', - 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_RESERVED1', - 'DP_SYM32_ENC_GSP_SEND_AT_EARLIEST_TIME', - 'DP_SYM32_ENC_GSP_SEND_AT_LINE_NUMBER', - 'DP_SYM32_ENC_GSP_TRIGGER_NOT_PENDING', - 'DP_SYM32_ENC_GSP_TRIGGER_PENDING', - 'DP_SYM32_ENC_MEM_PWR_FORCE_DEEP_SLEEP_REQUEST', - 'DP_SYM32_ENC_MEM_PWR_FORCE_LIGHT_SLEEP_REQUEST', - 'DP_SYM32_ENC_MEM_PWR_FORCE_SHUT_DOWN_REQUEST', - 'DP_SYM32_ENC_MEM_PWR_NO_FORCE_REQUEST', - 'DP_SYM32_ENC_NOT_PENDING', 'DP_SYM32_ENC_NOT_RESET', - 'DP_SYM32_ENC_NO_OVERFLOW_OCCURRED', 'DP_SYM32_ENC_ONE_SHOT_MODE', - 'DP_SYM32_ENC_OTG_SOF', 'DP_SYM32_ENC_OVERFLOW_OCCURRED', - 'DP_SYM32_ENC_PENDING', - 'DP_SYM32_ENC_PIXEL_ENCODING_RGB_YCBCR444', - 'DP_SYM32_ENC_PIXEL_ENCODING_YCBCR420', - 'DP_SYM32_ENC_PIXEL_ENCODING_YCBCR422', - 'DP_SYM32_ENC_PIXEL_ENCODING_Y_ONLY', - 'DP_SYM32_ENC_POWER_STATE_ENUM_DS', - 'DP_SYM32_ENC_POWER_STATE_ENUM_LS', - 'DP_SYM32_ENC_POWER_STATE_ENUM_ON', - 'DP_SYM32_ENC_POWER_STATE_ENUM_SD', 'DP_SYM32_ENC_RESET', - 'DP_SYM32_ENC_SDP_AUDIO_MUTE_FORCED', - 'DP_SYM32_ENC_SDP_AUDIO_MUTE_NOT_FORCED', - 'DP_SYM32_ENC_SDP_HIGH_PRIORITY', 'DP_SYM32_ENC_SDP_LOW_PRIORITY', - 'DP_SYM32_ENC_UNCOMPRESSED_FORMAT', - 'DP_SYM32_ENC_VID_STREAM_DEFER_TO_HBLANK', - 'DP_SYM32_ENC_VID_STREAM_DEFER_TO_VBLANK', - 'DP_SYM32_ENC_VID_STREAM_NO_DEFER', 'DP_SYNC_POLARITY', - 'DP_SYNC_POLARITY_ACTIVE_HIGH', 'DP_SYNC_POLARITY_ACTIVE_LOW', - 'DP_TU_OVERFLOW_ACK', 'DP_TU_OVERFLOW_ACK_CLR_INTERRUPT', - 'DP_TU_OVERFLOW_ACK_NO_EFFECT', 'DP_TWO_PIXEL_PER_CYCLE', - 'DP_UDI_1_LANE', 'DP_UDI_2_LANES', 'DP_UDI_4_LANES', - 'DP_UDI_LANES', 'DP_UDI_LANES_RESERVED', - 'DP_VID_ENHANCED_FRAME_MODE', 'DP_VID_M_1X_INPUT_PIXEL_RATE', - 'DP_VID_M_2X_INPUT_PIXEL_RATE', 'DP_VID_M_4X_INPUT_PIXEL_RATE', - 'DP_VID_M_8X_INPUT_PIXEL_RATE', 'DP_VID_M_N_CALC_AUTO', - 'DP_VID_M_N_DOUBLE_BUFFER_AFTER_VID_M_UPDATE', - 'DP_VID_M_N_DOUBLE_BUFFER_AT_FRAME_START', - 'DP_VID_M_N_DOUBLE_BUFFER_MODE', 'DP_VID_M_N_GEN_EN', - 'DP_VID_M_N_PROGRAMMED_VIA_REG', 'DP_VID_N_MUL', - 'DP_VID_STREAM_DISABLE_ACK', 'DP_VID_STREAM_DISABLE_MASK', - 'DP_VID_STREAM_DIS_DEFER', 'DP_VID_STREAM_DIS_DEFER_TO_HBLANK', - 'DP_VID_STREAM_DIS_DEFER_TO_VBLANK', 'DP_VID_STREAM_DIS_NO_DEFER', - 'DP_VID_VBID_FIELD_POL', 'DP_VID_VBID_FIELD_POL_INV', - 'DP_VID_VBID_FIELD_POL_NORMAL', 'DRAW_DONE', - 'DSCCIF_BITS_PER_COMPONENT_ENUM', - 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT', - 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT', - 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT', - 'DSCCIF_ENABLE_ENUM', 'DSCCIF_ENABLE_ENUM_DISABLED', - 'DSCCIF_ENABLE_ENUM_ENABLED', 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_420', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_422', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_RGB', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_SIMPLE_YCBCR_422', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_YCBCR_444', - 'DSCC_BITS_PER_COMPONENT_ENUM', - 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT', - 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT', - 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT', - 'DSCC_DSC_VERSION_MAJOR_ENUM', - 'DSCC_DSC_VERSION_MAJOR_ENUM_DSC_1_X_MAJOR_VERSION', - 'DSCC_DSC_VERSION_MINOR_ENUM', - 'DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_1_MINOR_VERSION', - 'DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_2_MINOR_VERSION', - 'DSCC_ENABLE_ENUM', 'DSCC_ENABLE_ENUM_DISABLED', - 'DSCC_ENABLE_ENUM_ENABLED', 'DSCC_ICH_RESET_ENUM', - 'DSCC_ICH_RESET_ENUM_SLICE0_ICH_RESET', - 'DSCC_ICH_RESET_ENUM_SLICE1_ICH_RESET', - 'DSCC_ICH_RESET_ENUM_SLICE2_ICH_RESET', - 'DSCC_ICH_RESET_ENUM_SLICE3_ICH_RESET', 'DSCC_LINEBUF_DEPTH_ENUM', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_10_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_11_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_12_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_13_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_8_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_9_BIT', - 'DSCC_MEM_PWR_DIS_ENUM', 'DSCC_MEM_PWR_DIS_ENUM_REQUEST_DIS', - 'DSCC_MEM_PWR_DIS_ENUM_REQUEST_EN', 'DSCC_MEM_PWR_FORCE_ENUM', - 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_DEEP_SLEEP_REQUEST', - 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_LIGHT_SLEEP_REQUEST', - 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_SHUT_DOWN_REQUEST', - 'DSCC_MEM_PWR_FORCE_ENUM_NO_FORCE_REQUEST', - 'DSCL_MODE_CHROMA_SCALING_BYPASS', 'DSCL_MODE_DSCL_BYPASS', - 'DSCL_MODE_LUMA_SCALING_BYPASS', 'DSCL_MODE_SCALING_444_BYPASS', - 'DSCL_MODE_SCALING_444_RGB_ENABLE', - 'DSCL_MODE_SCALING_444_YCBCR_ENABLE', - 'DSCL_MODE_SCALING_YCBCR_ENABLE', 'DSCL_MODE_SEL', 'DSM_DATA_SEL', - 'DSM_DATA_SEL_0', 'DSM_DATA_SEL_1', 'DSM_DATA_SEL_BOTH', - 'DSM_DATA_SEL_DISABLE', 'DSM_ENABLE_ERROR_INJECT', - 'DSM_ENABLE_ERROR_INJECT_FED_IN', - 'DSM_ENABLE_ERROR_INJECT_SINGLE', - 'DSM_ENABLE_ERROR_INJECT_UNCORRECTABLE', - 'DSM_ENABLE_ERROR_INJECT_UNCORRECTABLE_LIMITED', - 'DSM_SELECT_INJECT_DELAY', 'DSM_SELECT_INJECT_DELAY_DELAY_ERROR', - 'DSM_SELECT_INJECT_DELAY_NO_DELAY', 'DSM_SINGLE_WRITE', - 'DSM_SINGLE_WRITE_DIS', 'DSM_SINGLE_WRITE_EN', 'DS_HW_CAL_DIS', - 'DS_HW_CAL_EN', 'DS_HW_CAL_ENABLE', 'DS_JITTER_COUNT_SRC_SEL', - 'DS_JITTER_COUNT_SRC_SEL0', 'DS_JITTER_COUNT_SRC_SEL1', - 'DS_REF_IS_EXT_GENLOCK', 'DS_REF_IS_PCIE', 'DS_REF_IS_XTALIN', - 'DS_REF_SRC', 'DTO_FORCE_BYPASS', 'DTO_FORCE_NO_BYPASS', - 'DVOACLKC_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', 'DVOACLKC_IN_PHASE', - 'DVOACLKC_IN_PHASE_WITH_PCLK_DVO', - 'DVOACLKC_MVP_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', - 'DVOACLKC_MVP_IN_PHASE', 'DVOACLKC_MVP_IN_PHASE_WITH_PCLK_DVO', - 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE', - 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_DISABLE', - 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_ENABLE', - 'DVOACLKD_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', 'DVOACLKD_IN_PHASE', - 'DVOACLKD_IN_PHASE_WITH_PCLK_DVO', 'DVOACLK_COARSE_SKEW_CNTL', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_10_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_11_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_12_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_13_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_14_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_15_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_1_STEP', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_2_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_3_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_4_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_5_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_6_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_7_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_8_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_9_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_10_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_11_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_12_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_13_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_14_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_15_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_1_STEP', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_2_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_3_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_4_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_5_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_6_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_7_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_8_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_9_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_NO_ADJUSTMENT', - 'DVOACLK_FINE_SKEW_CNTL', 'DVOACLK_FINE_SKEW_CNTL_DELAY_1_STEP', - 'DVOACLK_FINE_SKEW_CNTL_DELAY_2_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_DELAY_3_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_EARLY_1_STEP', - 'DVOACLK_FINE_SKEW_CNTL_EARLY_2_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_EARLY_3_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_EARLY_4_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_NO_ADJUSTMENT', 'DVO_ENABLE_RST', - 'DVO_ENABLE_RST_DISABLE', 'DVO_ENABLE_RST_ENABLE', - 'DWB_CRC_CONT_EN_CONT', 'DWB_CRC_CONT_EN_ENUM', - 'DWB_CRC_CONT_EN_ONE_SHOT', 'DWB_CRC_SRC_SEL_DWB_IN', - 'DWB_CRC_SRC_SEL_DWB_OUT', 'DWB_CRC_SRC_SEL_ENUM', - 'DWB_CRC_SRC_SEL_OGAM_OUT', 'DWB_DATA_OVERFLOW_INT_TYPE_0', - 'DWB_DATA_OVERFLOW_INT_TYPE_1', 'DWB_DATA_OVERFLOW_INT_TYPE_ENUM', - 'DWB_DATA_OVERFLOW_TYPE_BUFFER', 'DWB_DATA_OVERFLOW_TYPE_ENUM', - 'DWB_DATA_OVERFLOW_TYPE_NO_OVERFLOW', - 'DWB_DATA_OVERFLOW_TYPE_VREADY', 'DWB_DATA_OVERFLOW_TYPE_VUPDATE', - 'DWB_DEBUG_SEL_DWBCP', 'DWB_DEBUG_SEL_ENUM', 'DWB_DEBUG_SEL_FC', - 'DWB_DEBUG_SEL_PERFMON', 'DWB_DEBUG_SEL_RESERVED', - 'DWB_GAMUT_REMAP_COEF_FORMAT_ENUM', - 'DWB_GAMUT_REMAP_COEF_FORMAT_S2_13', - 'DWB_GAMUT_REMAP_COEF_FORMAT_S3_12', - 'DWB_GAMUT_REMAP_MODE_BYPASS', 'DWB_GAMUT_REMAP_MODE_COEF_A', - 'DWB_GAMUT_REMAP_MODE_COEF_B', 'DWB_GAMUT_REMAP_MODE_ENUM', - 'DWB_GAMUT_REMAP_MODE_RESERVED', 'DWB_LUT_NUM_SEG', - 'DWB_MEM_PWR_FORCE_DIS', 'DWB_MEM_PWR_FORCE_DS', - 'DWB_MEM_PWR_FORCE_ENUM', 'DWB_MEM_PWR_FORCE_LS', - 'DWB_MEM_PWR_FORCE_SD', 'DWB_MEM_PWR_STATE_DS', - 'DWB_MEM_PWR_STATE_ENUM', 'DWB_MEM_PWR_STATE_LS', - 'DWB_MEM_PWR_STATE_ON', 'DWB_MEM_PWR_STATE_SD', - 'DWB_OGAM_LUT_CONFIG_MODE_DIFF', 'DWB_OGAM_LUT_CONFIG_MODE_ENUM', - 'DWB_OGAM_LUT_CONFIG_MODE_SAME', 'DWB_OGAM_LUT_HOST_SEL_ENUM', - 'DWB_OGAM_LUT_HOST_SEL_RAMA', 'DWB_OGAM_LUT_HOST_SEL_RAMB', - 'DWB_OGAM_LUT_READ_COLOR_SEL_B', - 'DWB_OGAM_LUT_READ_COLOR_SEL_ENUM', - 'DWB_OGAM_LUT_READ_COLOR_SEL_G', 'DWB_OGAM_LUT_READ_COLOR_SEL_R', - 'DWB_OGAM_LUT_READ_COLOR_SEL_RESERVED', - 'DWB_OGAM_LUT_READ_DBG_DISABLE', 'DWB_OGAM_LUT_READ_DBG_ENABLE', - 'DWB_OGAM_LUT_READ_DBG_ENUM', 'DWB_OGAM_MODE_BYPASS', - 'DWB_OGAM_MODE_ENUM', 'DWB_OGAM_MODE_RAM_LUT_ENABLED', - 'DWB_OGAM_MODE_RESERVED', 'DWB_OGAM_PWL_DISABLE_ENUM', - 'DWB_OGAM_PWL_DISABLE_FALSE', 'DWB_OGAM_PWL_DISABLE_TRUE', - 'DWB_OGAM_SELECT_A', 'DWB_OGAM_SELECT_B', 'DWB_OGAM_SELECT_ENUM', - 'DWB_SEGMENTS_1', 'DWB_SEGMENTS_128', 'DWB_SEGMENTS_16', - 'DWB_SEGMENTS_2', 'DWB_SEGMENTS_32', 'DWB_SEGMENTS_4', - 'DWB_SEGMENTS_64', 'DWB_SEGMENTS_8', 'DWB_TEST_CLK_SEL_ENUM', - 'DWB_TEST_CLK_SEL_G', 'DWB_TEST_CLK_SEL_P', 'DWB_TEST_CLK_SEL_R', - 'DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE', - 'DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE_0', - 'DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE_1', - 'DYNAMIC_DEEP_SLEEP_EN', 'DYNAMIC_DEEP_SLEEP_ENABLE', - 'DYNAMIC_LIGHT_SLEEP_EN', 'DYNAMIC_LIGHT_SLEEP_ENABLE', - 'DYNAMIC_SHUT_DOWN_ENABLE', 'DbMemArbWatermarks', - 'DbPRTFaultBehavior', 'DbPSLControl', 'EARLY', - 'EARLY_Z_THEN_LATE_Z', 'EARLY_Z_THEN_RE_Z', - 'EFC_ACrYCb16161616_10LSB', 'EFC_ACrYCb16161616_10MSB', - 'EFC_ACrYCb16161616_12LSB', 'EFC_ACrYCb16161616_12MSB', - 'EFC_ACrYCb2101010', 'EFC_ACrYCb8888', 'EFC_ARGB1555', - 'EFC_ARGB16161616_10LSB', 'EFC_ARGB16161616_10MSB', - 'EFC_ARGB16161616_12LSB', 'EFC_ARGB16161616_12MSB', - 'EFC_ARGB16161616_FLOAT', 'EFC_ARGB16161616_SNORM', - 'EFC_ARGB16161616_UNORM', 'EFC_ARGB2101010', 'EFC_ARGB4444', - 'EFC_ARGB8888', 'EFC_AYCrCb16161616_10LSB', - 'EFC_AYCrCb16161616_10MSB', 'EFC_AYCrCb16161616_12LSB', - 'EFC_AYCrCb16161616_12MSB', 'EFC_AYCrCb8888', 'EFC_BGR101111_FIX', - 'EFC_BGR101111_FLOAT', 'EFC_BGR565', - 'EFC_CbYCrY10101010_422_PACKED', 'EFC_CbYCrY12121212_422_PACKED', - 'EFC_CbYCrY8888_422_PACKED', 'EFC_CrYCbA1010102', - 'EFC_CrYCbA16161616_10LSB', 'EFC_CrYCbA16161616_10MSB', - 'EFC_CrYCbA16161616_12LSB', 'EFC_CrYCbA16161616_12MSB', - 'EFC_CrYCbA8888', 'EFC_CrYCbY10101010_422_PACKED', - 'EFC_CrYCbY12121212_422_PACKED', 'EFC_CrYCbY8888_422_PACKED', - 'EFC_MONO_10LSB', 'EFC_MONO_10MSB', 'EFC_MONO_12LSB', - 'EFC_MONO_12MSB', 'EFC_MONO_16', 'EFC_MONO_8', - 'EFC_RGB111110_FIX', 'EFC_RGB111110_FLOAT', 'EFC_RGB565', - 'EFC_RGBA1010102', 'EFC_RGBA16161616_10LSB', - 'EFC_RGBA16161616_10MSB', 'EFC_RGBA16161616_12LSB', - 'EFC_RGBA16161616_12MSB', 'EFC_RGBA16161616_FLOAT', - 'EFC_RGBA16161616_SNORM', 'EFC_RGBA16161616_UNORM', - 'EFC_RGBA4444', 'EFC_RGBA5551', 'EFC_RGBA8888', - 'EFC_SURFACE_PIXEL_FORMAT', 'EFC_Y10_CbCr1010_420_PLANAR', - 'EFC_Y10_CrCb1010_420_PLANAR', 'EFC_Y12_CbCr1212_420_PLANAR', - 'EFC_Y12_CrCb1212_420_PLANAR', 'EFC_Y8_CbCr88_420_PLANAR', - 'EFC_Y8_CrCb88_420_PLANAR', 'EFC_YCbYCr10101010_422_PACKED', - 'EFC_YCbYCr12121212_422_PACKED', 'EFC_YCbYCr8888_422_PACKED', - 'EFC_YCrCbA16161616_10LSB', 'EFC_YCrCbA16161616_10MSB', - 'EFC_YCrCbA16161616_12LSB', 'EFC_YCrCbA16161616_12MSB', - 'EFC_YCrCbA8888', 'EFC_YCrYCb10101010_422_PACKED', - 'EFC_YCrYCb12121212_422_PACKED', 'EFC_YCrYCb8888_422_PACKED', - 'ENABLE', 'ENABLE_AMCLK0', 'ENABLE_AMCLK1', 'ENABLE_CLOCK', - 'ENABLE_DEBUG', 'ENABLE_ENUM', 'ENABLE_ENUM_DISABLED', - 'ENABLE_ENUM_ENABLED', 'ENABLE_JITTER_REMOVAL', - 'ENABLE_LEGACY_PIPELINE', 'ENABLE_MEM_PWR_CTRL', - 'ENABLE_NGG_PIPELINE', 'ENABLE_PWL', 'ENABLE_TF0_OPT', - 'ENABLE_TF1_OPT', 'ENABLE_THE_FEATURE', 'ENABLE_THE_FUNC_CLOCK', - 'ENABLE_THE_INTERRUPT', 'ENABLE_THE_REFCLK', 'END_OF_PIPE_IB_END', - 'END_OF_PIPE_INCR_DE', 'END_OF_ROW_MODE', 'ENUM_DCN_ACTIVE', - 'ENUM_DCN_NOT_ACTIVE', 'ENUM_DIO_DCN_ACTIVE_STATUS', - 'ENUM_DPG_BIT_DEPTH', 'ENUM_DPG_BIT_DEPTH_10BPC', - 'ENUM_DPG_BIT_DEPTH_12BPC', 'ENUM_DPG_BIT_DEPTH_6BPC', - 'ENUM_DPG_BIT_DEPTH_8BPC', 'ENUM_DPG_DISABLE', - 'ENUM_DPG_DYNAMIC_RANGE', 'ENUM_DPG_DYNAMIC_RANGE_CEA', - 'ENUM_DPG_DYNAMIC_RANGE_VESA', 'ENUM_DPG_EN', 'ENUM_DPG_ENABLE', - 'ENUM_DPG_FIELD_POLARITY', - 'ENUM_DPG_FIELD_POLARITY_TOP_EVEN_BOTTOM_ODD', - 'ENUM_DPG_FIELD_POLARITY_TOP_ODD_BOTTOM_EVEN', 'ENUM_DPG_MODE', - 'ENUM_DPG_MODE_HORIZONTAL_BAR', 'ENUM_DPG_MODE_RGB_COLOUR_BLOCK', - 'ENUM_DPG_MODE_RGB_DUAL_RAMP', 'ENUM_DPG_MODE_RGB_SINGLE_RAMP', - 'ENUM_DPG_MODE_RGB_XR_BIAS', 'ENUM_DPG_MODE_VERTICAL_BAR', - 'ENUM_DPG_MODE_YCBCR_601_COLOUR_BLOCK', - 'ENUM_DPG_MODE_YCBCR_709_COLOUR_BLOCK', - 'ENUM_DP_DPHY_SYM32_CRC_END_EVENT', - 'ENUM_DP_DPHY_SYM32_CRC_START_EVENT', - 'ENUM_DP_DPHY_SYM32_CRC_TAP_SOURCE', - 'ENUM_DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS', - 'ENUM_DP_DPHY_SYM32_ENABLE', 'ENUM_DP_DPHY_SYM32_ENCRYPT_TYPE', - 'ENUM_DP_DPHY_SYM32_MODE', 'ENUM_DP_DPHY_SYM32_NUM_LANES', - 'ENUM_DP_DPHY_SYM32_RATE_UPDATE_PENDING', - 'ENUM_DP_DPHY_SYM32_RESET', 'ENUM_DP_DPHY_SYM32_RESET_STATUS', - 'ENUM_DP_DPHY_SYM32_SAT_UPDATE', - 'ENUM_DP_DPHY_SYM32_SAT_UPDATE_PENDING', - 'ENUM_DP_DPHY_SYM32_STATUS', - 'ENUM_DP_DPHY_SYM32_STREAM_OVR_ENABLE', - 'ENUM_DP_DPHY_SYM32_STREAM_OVR_TYPE', - 'ENUM_DP_DPHY_SYM32_TP_PRBS_SEL', 'ENUM_DP_DPHY_SYM32_TP_SELECT', - 'ENUM_DP_SYM32_ENC_AUDIO_MUTE', - 'ENUM_DP_SYM32_ENC_CONTINUOUS_MODE', - 'ENUM_DP_SYM32_ENC_CRC_VALID', - 'ENUM_DP_SYM32_ENC_DP_COMPONENT_DEPTH', - 'ENUM_DP_SYM32_ENC_ENABLE', - 'ENUM_DP_SYM32_ENC_GSP_DEADLINE_MISSED', - 'ENUM_DP_SYM32_ENC_GSP_ONE_SHOT_TRIGGER_POSITION', - 'ENUM_DP_SYM32_ENC_GSP_PAYLOAD_SIZE', - 'ENUM_DP_SYM32_ENC_GSP_TRIGGER_PENDING', - 'ENUM_DP_SYM32_ENC_MEM_PWR_FORCE_ENUM', - 'ENUM_DP_SYM32_ENC_OVERFLOW_STATUS', 'ENUM_DP_SYM32_ENC_PENDING', - 'ENUM_DP_SYM32_ENC_PIXEL_ENCODING', - 'ENUM_DP_SYM32_ENC_PIXEL_ENCODING_TYPE', - 'ENUM_DP_SYM32_ENC_POWER_STATE_ENUM', 'ENUM_DP_SYM32_ENC_RESET', - 'ENUM_DP_SYM32_ENC_SDP_PRIORITY', - 'ENUM_DP_SYM32_ENC_SOF_REFERENCE', - 'ENUM_DP_SYM32_ENC_VID_STREAM_DEFER', 'ENUM_DSCRM_DISABLE', - 'ENUM_DSCRM_EN', 'ENUM_DSCRM_ENABLE', 'ENUM_NUM_SIMD_PER_CU', - 'ES_STAGE_DS', 'ES_STAGE_OFF', 'ES_STAGE_REAL', 'EXOKAY', - 'EXPANSION_MODE', 'EXPANSION_MODE_CONSERVATIVE', - 'EXPANSION_MODE_OPTIMAL', 'EXPANSION_MODE_ZERO', - 'EXPORT_2C_32BPC_AR', 'EXPORT_2C_32BPC_GR', 'EXPORT_4C_16BPC', - 'EXPORT_4C_32BPC', 'EXPORT_ANY_Z', 'EXPORT_GREATER_THAN_Z', - 'EXPORT_LESS_THAN_Z', 'EXPORT_RESERVED', 'FAULT_FAIL', - 'FAULT_ONE', 'FAULT_PASS', 'FAULT_ZERO', 'FC_EYE_SELECTION_ENUM', - 'FC_EYE_SELECTION_LEFT_EYE', 'FC_EYE_SELECTION_RIGHT_EYE', - 'FC_EYE_SELECTION_STEREO_DIS', 'FC_FRAME_CAPTURE_RATE_ENUM', - 'FC_FRAME_CAPTURE_RATE_FULL', 'FC_FRAME_CAPTURE_RATE_HALF', - 'FC_FRAME_CAPTURE_RATE_QUARTER', 'FC_FRAME_CAPTURE_RATE_THIRD', - 'FC_STEREO_EYE_POLARITY_ENUM', 'FC_STEREO_EYE_POLARITY_LEFT', - 'FC_STEREO_EYE_POLARITY_RIGHT', 'FEC_ACTIVE_STATUS', 'FIX_S2_13', - 'FIX_S3_12', 'FLIP_ANY_FRAME', 'FLIP_LEFT_EYE', 'FLIP_RATE', - 'FLIP_RATE_0', 'FLIP_RATE_1', 'FLIP_RATE_2', 'FLIP_RATE_3', - 'FLIP_RATE_4', 'FLIP_RATE_5', 'FLIP_RATE_6', 'FLIP_RATE_7', - 'FLIP_RIGHT_EYE', 'FLUSH_AND_INV_CB_DATA_TS', - 'FLUSH_AND_INV_CB_META', 'FLUSH_AND_INV_CB_PIXEL_DATA', - 'FLUSH_AND_INV_DB_DATA_TS', 'FLUSH_AND_INV_DB_META', - 'FLUSH_CONTROL_FLUSH_NOT_STARTED', 'FLUSH_CONTROL_FLUSH_STARTED', - 'FLUSH_DFSM', 'FLUSH_ES_OUTPUT', 'FLUSH_HS_OUTPUT', 'FLUSH_SX_TS', - 'FMTMEM_DISABLE_MEM_PWR_CTRL', 'FMTMEM_ENABLE_MEM_PWR_CTRL', - 'FMTMEM_FORCE_DEEP_SLEEP_REQUEST', - 'FMTMEM_FORCE_LIGHT_SLEEP_REQUEST', - 'FMTMEM_FORCE_SHUT_DOWN_REQUEST', 'FMTMEM_NO_FORCE_REQUEST', - 'FMTMEM_PWR_DIS_CTRL', 'FMTMEM_PWR_FORCE_CTRL', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Ei', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Fi', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Gi', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_RESERVED', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_A', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_B', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_C', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_D', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_E', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_F', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_G', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_RESERVED', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_18BPP', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_24BPP', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_30BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_18BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_24BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_30BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL2', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL4', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_18BPP', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_24BPP', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_30BPP', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_ROUNDING', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_TRUNCATION', - 'FMT_CLAMP_CNTL_COLOR_FORMAT', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_10BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_12BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_6BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_8BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_PROGRAMMABLE', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED1', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED2', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED3', - 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS', - 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_DISABLE', - 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_ENABLE', - 'FMT_CONTROL_PIXEL_ENCODING', - 'FMT_CONTROL_PIXEL_ENCODING_RESERVED', - 'FMT_CONTROL_PIXEL_ENCODING_RGB444_OR_YCBCR444', - 'FMT_CONTROL_PIXEL_ENCODING_YCBCR420', - 'FMT_CONTROL_PIXEL_ENCODING_YCBCR422', - 'FMT_CONTROL_SUBSAMPLING_MODE', - 'FMT_CONTROL_SUBSAMPLING_MODE_AVERAGE', - 'FMT_CONTROL_SUBSAMPLING_MODE_DROP', - 'FMT_CONTROL_SUBSAMPLING_MOME_3_TAP', - 'FMT_CONTROL_SUBSAMPLING_MOME_RESERVED', - 'FMT_CONTROL_SUBSAMPLING_ORDER', - 'FMT_CONTROL_SUBSAMPLING_ORDER_CB_BEFORE_CR', - 'FMT_CONTROL_SUBSAMPLING_ORDER_CR_BEFORE_CB', - 'FMT_DEBUG_CNTL_COLOR_SELECT', 'FMT_DEBUG_CNTL_COLOR_SELECT_BLUE', - 'FMT_DEBUG_CNTL_COLOR_SELECT_GREEN', - 'FMT_DEBUG_CNTL_COLOR_SELECT_RED1', - 'FMT_DEBUG_CNTL_COLOR_SELECT_RED2', 'FMT_DYNAMIC_EXP_MODE', - 'FMT_DYNAMIC_EXP_MODE_10to12', 'FMT_DYNAMIC_EXP_MODE_8to12', - 'FMT_FRAME_RANDOM_ENABLE_CONTROL', - 'FMT_FRAME_RANDOM_ENABLE_RESET_EACH_FRAME', - 'FMT_FRAME_RANDOM_ENABLE_RESET_ONCE', 'FMT_POWER_STATE_ENUM', - 'FMT_POWER_STATE_ENUM_DS', 'FMT_POWER_STATE_ENUM_LS', - 'FMT_POWER_STATE_ENUM_ON', 'FMT_POWER_STATE_ENUM_SD', - 'FMT_RGB_RANDOM_ENABLE_CONTROL', - 'FMT_RGB_RANDOM_ENABLE_CONTROL_DISABLE', - 'FMT_RGB_RANDOM_ENABLE_CONTROL_ENABLE', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_1', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_2', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_CONTROL', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_NO_SWAP', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_RESERVED', - 'FMT_SPATIAL_DITHER_MODE', 'FMT_SPATIAL_DITHER_MODE_0', - 'FMT_SPATIAL_DITHER_MODE_1', 'FMT_SPATIAL_DITHER_MODE_2', - 'FMT_SPATIAL_DITHER_MODE_3', 'FMT_STEREOSYNC_OVERRIDE_CONTROL', - 'FMT_STEREOSYNC_OVERRIDE_CONTROL_0', - 'FMT_STEREOSYNC_OVERRIDE_CONTROL_1', - 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0', - 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_BGR', - 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_RGB', 'FORCE_00', - 'FORCE_BINNING_ON', 'FORCE_DEEP_SLEEP_REQUEST', 'FORCE_DISABLE', - 'FORCE_DISABLE_CLOCK', 'FORCE_EARLY_Z', 'FORCE_ENABLE', - 'FORCE_FF', 'FORCE_LATE_Z', 'FORCE_LIGHT_SLEEP_REQ', - 'FORCE_LIGHT_SLEEP_REQUEST', 'FORCE_OFF', - 'FORCE_ONE_ROW_FOR_FRAME', 'FORCE_ONE_ROW_FOR_FRAME_0', - 'FORCE_ONE_ROW_FOR_FRAME_1', 'FORCE_OPT_AUTO', - 'FORCE_OPT_DISABLE', 'FORCE_OPT_ENABLE_IF_SRC_ARGB_0', - 'FORCE_OPT_ENABLE_IF_SRC_ARGB_1', 'FORCE_OPT_ENABLE_IF_SRC_A_0', - 'FORCE_OPT_ENABLE_IF_SRC_A_1', 'FORCE_OPT_ENABLE_IF_SRC_RGB_0', - 'FORCE_OPT_ENABLE_IF_SRC_RGB_1', 'FORCE_RESERVED', 'FORCE_RE_Z', - 'FORCE_SENT', 'FORCE_SHUT_DOWN_REQUEST', 'FORCE_SUMM_BOTH', - 'FORCE_SUMM_MAXZ', 'FORCE_SUMM_MINZ', 'FORCE_SUMM_OFF', - 'FORCE_THE_CLOCK_DISABLED', 'FORMAT_CROSSBAR', - 'FORMAT_CROSSBAR_B', 'FORMAT_CROSSBAR_G', 'FORMAT_CROSSBAR_R', - 'FRAG_ALWAYS', 'FRAG_EQUAL', 'FRAG_GEQUAL', 'FRAG_GREATER', - 'FRAG_LEQUAL', 'FRAG_LESS', 'FRAG_NEVER', 'FRAG_NOTEQUAL', - 'ForceControl', 'GAMUT_COEF', 'GAMUT_COEF_B', 'GATCL1RequestType', - 'GATCL1_TYPE_BYPASS', 'GATCL1_TYPE_NORMAL', - 'GATCL1_TYPE_SHOOTDOWN', 'GB_EDC_DED_MODE', - 'GB_EDC_DED_MODE_HALT', 'GB_EDC_DED_MODE_INT_HALT', - 'GB_EDC_DED_MODE_LOG', 'GB_TILING_CONFIG_MACROTABLE_SIZE', - 'GB_TILING_CONFIG_TABLE_SIZE', 'GCRPerfSel', - 'GCR_PERF_SEL_ALL_REQ', - 'GCR_PERF_SEL_CLK_FOR_ALL_OUTSTANDING_REQ', - 'GCR_PERF_SEL_CLK_FOR_PHY_OUTSTANDING_REQ', - 'GCR_PERF_SEL_CLK_FOR_VIRT_OUTSTANDING_REQ', - 'GCR_PERF_SEL_CPC_ALL_REQ', 'GCR_PERF_SEL_CPC_GL1_ALL_REQ', - 'GCR_PERF_SEL_CPC_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPC_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPC_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPC_GL1_RANGE_REQ', 'GCR_PERF_SEL_CPC_GL2_ALL_REQ', - 'GCR_PERF_SEL_CPC_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPC_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPC_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPC_GL2_RANGE_REQ', 'GCR_PERF_SEL_CPC_METADATA_REQ', - 'GCR_PERF_SEL_CPC_SQC_DATA_REQ', 'GCR_PERF_SEL_CPC_SQC_INST_REQ', - 'GCR_PERF_SEL_CPC_TCP_REQ', - 'GCR_PERF_SEL_CPC_TCP_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_CPF_ALL_REQ', 'GCR_PERF_SEL_CPF_GL1_ALL_REQ', - 'GCR_PERF_SEL_CPF_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPF_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPF_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPF_GL1_RANGE_REQ', 'GCR_PERF_SEL_CPF_GL2_ALL_REQ', - 'GCR_PERF_SEL_CPF_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPF_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPF_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPF_GL2_RANGE_REQ', 'GCR_PERF_SEL_CPF_METADATA_REQ', - 'GCR_PERF_SEL_CPF_SQC_DATA_REQ', 'GCR_PERF_SEL_CPF_SQC_INST_REQ', - 'GCR_PERF_SEL_CPF_TCP_REQ', - 'GCR_PERF_SEL_CPF_TCP_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_CPG_ALL_REQ', 'GCR_PERF_SEL_CPG_GL1_ALL_REQ', - 'GCR_PERF_SEL_CPG_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPG_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPG_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPG_GL1_RANGE_REQ', 'GCR_PERF_SEL_CPG_GL2_ALL_REQ', - 'GCR_PERF_SEL_CPG_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPG_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPG_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPG_GL2_RANGE_REQ', 'GCR_PERF_SEL_CPG_METADATA_REQ', - 'GCR_PERF_SEL_CPG_SQC_DATA_REQ', 'GCR_PERF_SEL_CPG_SQC_INST_REQ', - 'GCR_PERF_SEL_CPG_TCP_REQ', - 'GCR_PERF_SEL_CPG_TCP_TLB_SHOOTDOWN_REQ', 'GCR_PERF_SEL_NONE', - 'GCR_PERF_SEL_PHY_REQ', 'GCR_PERF_SEL_PIO_ALL_REQ', - 'GCR_PERF_SEL_PIO_GL1_ALL_REQ', - 'GCR_PERF_SEL_PIO_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_PIO_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_PIO_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_PIO_GL1_RANGE_REQ', 'GCR_PERF_SEL_PIO_GL2_ALL_REQ', - 'GCR_PERF_SEL_PIO_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_PIO_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_PIO_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_PIO_GL2_RANGE_REQ', 'GCR_PERF_SEL_PIO_METADATA_REQ', - 'GCR_PERF_SEL_PIO_SQC_DATA_REQ', 'GCR_PERF_SEL_PIO_SQC_INST_REQ', - 'GCR_PERF_SEL_PIO_TCP_REQ', - 'GCR_PERF_SEL_PIO_TCP_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_PM_ALL_REQ', 'GCR_PERF_SEL_PM_GL1_ALL_REQ', - 'GCR_PERF_SEL_PM_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_PM_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_PM_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_PM_GL1_RANGE_REQ', 'GCR_PERF_SEL_PM_GL2_ALL_REQ', - 'GCR_PERF_SEL_PM_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_PM_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_PM_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_PM_GL2_RANGE_REQ', 'GCR_PERF_SEL_PM_METADATA_REQ', - 'GCR_PERF_SEL_PM_SQC_DATA_REQ', 'GCR_PERF_SEL_PM_SQC_INST_REQ', - 'GCR_PERF_SEL_PM_TCP_REQ', - 'GCR_PERF_SEL_PM_TCP_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_RLC_ALL_REQ', 'GCR_PERF_SEL_RLC_GL1_ALL_REQ', - 'GCR_PERF_SEL_RLC_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_RLC_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_RLC_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_RLC_GL1_RANGE_REQ', 'GCR_PERF_SEL_RLC_GL2_ALL_REQ', - 'GCR_PERF_SEL_RLC_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_RLC_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_RLC_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_RLC_GL2_RANGE_REQ', 'GCR_PERF_SEL_RLC_METADATA_REQ', - 'GCR_PERF_SEL_RLC_SQC_DATA_REQ', 'GCR_PERF_SEL_RLC_SQC_INST_REQ', - 'GCR_PERF_SEL_RLC_TCP_REQ', - 'GCR_PERF_SEL_RLC_TCP_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_SDMA0_ALL_REQ', 'GCR_PERF_SEL_SDMA0_GL1_ALL_REQ', - 'GCR_PERF_SEL_SDMA0_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL1_RANGE_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_ALL_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_RANGE_REQ', - 'GCR_PERF_SEL_SDMA0_METADATA_REQ', - 'GCR_PERF_SEL_SDMA0_SQC_DATA_REQ', - 'GCR_PERF_SEL_SDMA0_SQC_INST_REQ', 'GCR_PERF_SEL_SDMA0_TCP_REQ', - 'GCR_PERF_SEL_SDMA0_TCP_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_SDMA1_ALL_REQ', 'GCR_PERF_SEL_SDMA1_GL1_ALL_REQ', - 'GCR_PERF_SEL_SDMA1_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL1_RANGE_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_ALL_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_RANGE_REQ', - 'GCR_PERF_SEL_SDMA1_METADATA_REQ', - 'GCR_PERF_SEL_SDMA1_SQC_DATA_REQ', - 'GCR_PERF_SEL_SDMA1_SQC_INST_REQ', 'GCR_PERF_SEL_SDMA1_TCP_REQ', - 'GCR_PERF_SEL_SDMA1_TCP_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_TLB_SHOOTDOWN_HEAVY_REQ', - 'GCR_PERF_SEL_TLB_SHOOTDOWN_LIGHT_REQ', - 'GCR_PERF_SEL_UTCL2_FILTERED_RET', - 'GCR_PERF_SEL_UTCL2_INFLIGHT_REQ', - 'GCR_PERF_SEL_UTCL2_OUT_OF_CREDIT_EVENT', - 'GCR_PERF_SEL_UTCL2_REQ', 'GCR_PERF_SEL_UTCL2_RET', - 'GCR_PERF_SEL_VIRT_REQ', 'GDS_PERFCOUNT_SELECT', - 'GDS_PERF_SEL_GWS_BYPASS', 'GDS_PERF_SEL_GWS_RELEASED', - 'GDS_PERF_SEL_SE0_2COMP_REQ', 'GDS_PERF_SEL_SE0_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE0_GDS_BYTE_OP', 'GDS_PERF_SEL_SE0_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE0_GDS_RD_OP', 'GDS_PERF_SEL_SE0_GDS_REL_OP', - 'GDS_PERF_SEL_SE0_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE0_GDS_STALL_BY_ORD', 'GDS_PERF_SEL_SE0_GDS_WR_OP', - 'GDS_PERF_SEL_SE0_NORET', 'GDS_PERF_SEL_SE0_ORD_CNT', - 'GDS_PERF_SEL_SE0_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE0_RET', - 'GDS_PERF_SEL_SE1_2COMP_REQ', 'GDS_PERF_SEL_SE1_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE1_GDS_BYTE_OP', 'GDS_PERF_SEL_SE1_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE1_GDS_RD_OP', 'GDS_PERF_SEL_SE1_GDS_REL_OP', - 'GDS_PERF_SEL_SE1_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE1_GDS_STALL_BY_ORD', 'GDS_PERF_SEL_SE1_GDS_WR_OP', - 'GDS_PERF_SEL_SE1_NORET', 'GDS_PERF_SEL_SE1_ORD_CNT', - 'GDS_PERF_SEL_SE1_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE1_RET', - 'GDS_PERF_SEL_SE2_2COMP_REQ', 'GDS_PERF_SEL_SE2_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE2_GDS_BYTE_OP', 'GDS_PERF_SEL_SE2_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE2_GDS_RD_OP', 'GDS_PERF_SEL_SE2_GDS_REL_OP', - 'GDS_PERF_SEL_SE2_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE2_GDS_STALL_BY_ORD', 'GDS_PERF_SEL_SE2_GDS_WR_OP', - 'GDS_PERF_SEL_SE2_NORET', 'GDS_PERF_SEL_SE2_ORD_CNT', - 'GDS_PERF_SEL_SE2_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE2_RET', - 'GDS_PERF_SEL_SE3_2COMP_REQ', 'GDS_PERF_SEL_SE3_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE3_GDS_BYTE_OP', 'GDS_PERF_SEL_SE3_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE3_GDS_RD_OP', 'GDS_PERF_SEL_SE3_GDS_REL_OP', - 'GDS_PERF_SEL_SE3_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE3_GDS_STALL_BY_ORD', 'GDS_PERF_SEL_SE3_GDS_WR_OP', - 'GDS_PERF_SEL_SE3_NORET', 'GDS_PERF_SEL_SE3_ORD_CNT', - 'GDS_PERF_SEL_SE3_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE3_RET', - 'GDS_PERF_SEL_SE4_2COMP_REQ', 'GDS_PERF_SEL_SE4_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE4_GDS_BYTE_OP', 'GDS_PERF_SEL_SE4_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE4_GDS_RD_OP', 'GDS_PERF_SEL_SE4_GDS_REL_OP', - 'GDS_PERF_SEL_SE4_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE4_GDS_STALL_BY_ORD', 'GDS_PERF_SEL_SE4_GDS_WR_OP', - 'GDS_PERF_SEL_SE4_NORET', 'GDS_PERF_SEL_SE4_ORD_CNT', - 'GDS_PERF_SEL_SE4_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE4_RET', - 'GDS_PERF_SEL_SE5_2COMP_REQ', 'GDS_PERF_SEL_SE5_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE5_GDS_BYTE_OP', 'GDS_PERF_SEL_SE5_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE5_GDS_RD_OP', 'GDS_PERF_SEL_SE5_GDS_REL_OP', - 'GDS_PERF_SEL_SE5_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE5_GDS_STALL_BY_ORD', 'GDS_PERF_SEL_SE5_GDS_WR_OP', - 'GDS_PERF_SEL_SE5_NORET', 'GDS_PERF_SEL_SE5_ORD_CNT', - 'GDS_PERF_SEL_SE5_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE5_RET', - 'GDS_PERF_SEL_SE6_2COMP_REQ', 'GDS_PERF_SEL_SE6_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE6_GDS_BYTE_OP', 'GDS_PERF_SEL_SE6_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE6_GDS_RD_OP', 'GDS_PERF_SEL_SE6_GDS_REL_OP', - 'GDS_PERF_SEL_SE6_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE6_GDS_STALL_BY_ORD', 'GDS_PERF_SEL_SE6_GDS_WR_OP', - 'GDS_PERF_SEL_SE6_NORET', 'GDS_PERF_SEL_SE6_ORD_CNT', - 'GDS_PERF_SEL_SE6_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE6_RET', - 'GDS_PERF_SEL_SE7_2COMP_REQ', 'GDS_PERF_SEL_SE7_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE7_GDS_BYTE_OP', 'GDS_PERF_SEL_SE7_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE7_GDS_RD_OP', 'GDS_PERF_SEL_SE7_GDS_REL_OP', - 'GDS_PERF_SEL_SE7_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE7_GDS_STALL_BY_ORD', 'GDS_PERF_SEL_SE7_GDS_WR_OP', - 'GDS_PERF_SEL_SE7_NORET', 'GDS_PERF_SEL_SE7_ORD_CNT', - 'GDS_PERF_SEL_SE7_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE7_RET', - 'GDS_PERF_SEL_WBUF_WR', 'GDS_PERF_SEL_WR_COMP', - 'GE1_PERFCOUNT_SELECT', 'GE2_DIST_PERFCOUNT_SELECT', - 'GE2_SE_PERFCOUNT_SELECT', - 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE', - 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET_RESERVED', - 'GENERIC_STEREOSYNC_SEL', 'GENERIC_STEREOSYNC_SEL_D1', - 'GENERIC_STEREOSYNC_SEL_D2', 'GENERIC_STEREOSYNC_SEL_D3', - 'GENERIC_STEREOSYNC_SEL_D4', 'GENERIC_STEREOSYNC_SEL_RESERVED', - 'GEN_ONE', 'GEN_RESERVED', 'GEN_TWO', 'GEN_ZERO', - 'GL0V_CACHE_POLICIES', 'GL0V_CACHE_POLICY_HIT_EVICT', - 'GL0V_CACHE_POLICY_HIT_LRU', 'GL0V_CACHE_POLICY_MISS_EVICT', - 'GL0V_CACHE_POLICY_MISS_LRU', 'GL1A_PERF_SEL', - 'GL1A_PERF_SEL_ARB_REQUESTS', 'GL1A_PERF_SEL_BURST_COUNT_GL1C0', - 'GL1A_PERF_SEL_BURST_COUNT_GL1C1', - 'GL1A_PERF_SEL_BURST_COUNT_GL1C2', - 'GL1A_PERF_SEL_BURST_COUNT_GL1C3', 'GL1A_PERF_SEL_BUSY', - 'GL1A_PERF_SEL_CYCLE', 'GL1A_PERF_SEL_REQUEST_GL1C0', - 'GL1A_PERF_SEL_REQUEST_GL1C1', 'GL1A_PERF_SEL_REQUEST_GL1C2', - 'GL1A_PERF_SEL_REQUEST_GL1C3', 'GL1A_PERF_SEL_REQ_INFLIGHT_LEVEL', - 'GL1A_PERF_SEL_STALL_GL1C0', 'GL1A_PERF_SEL_STALL_GL1C1', - 'GL1A_PERF_SEL_STALL_GL1C2', 'GL1A_PERF_SEL_STALL_GL1C3', - 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C0', - 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C1', - 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C2', - 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C3', - 'GL1A_PERF_SEL_WDS_32B_GL1C0', 'GL1A_PERF_SEL_WDS_32B_GL1C1', - 'GL1A_PERF_SEL_WDS_32B_GL1C2', 'GL1A_PERF_SEL_WDS_32B_GL1C3', - 'GL1C_PERF_SEL', 'GL1C_PERF_SEL_ARB_RET_LEVEL', - 'GL1C_PERF_SEL_BUSY', 'GL1C_PERF_SEL_CLIENT_UTCL0_INFLIGHT', - 'GL1C_PERF_SEL_CYCLE', 'GL1C_PERF_SEL_GL2_REQ_PREFETCH', - 'GL1C_PERF_SEL_GL2_REQ_READ', 'GL1C_PERF_SEL_GL2_REQ_READ_128B', - 'GL1C_PERF_SEL_GL2_REQ_READ_32B', - 'GL1C_PERF_SEL_GL2_REQ_READ_64B', - 'GL1C_PERF_SEL_GL2_REQ_READ_LATENCY', - 'GL1C_PERF_SEL_GL2_REQ_WRITE', 'GL1C_PERF_SEL_GL2_REQ_WRITE_32B', - 'GL1C_PERF_SEL_GL2_REQ_WRITE_64B', - 'GL1C_PERF_SEL_GL2_REQ_WRITE_LATENCY', 'GL1C_PERF_SEL_REQ', - 'GL1C_PERF_SEL_REQ_ATOMIC_WITHOUT_RET', - 'GL1C_PERF_SEL_REQ_ATOMIC_WITH_RET', 'GL1C_PERF_SEL_REQ_CLIENT0', - 'GL1C_PERF_SEL_REQ_CLIENT1', 'GL1C_PERF_SEL_REQ_CLIENT10', - 'GL1C_PERF_SEL_REQ_CLIENT11', 'GL1C_PERF_SEL_REQ_CLIENT12', - 'GL1C_PERF_SEL_REQ_CLIENT13', 'GL1C_PERF_SEL_REQ_CLIENT14', - 'GL1C_PERF_SEL_REQ_CLIENT15', 'GL1C_PERF_SEL_REQ_CLIENT16', - 'GL1C_PERF_SEL_REQ_CLIENT17', 'GL1C_PERF_SEL_REQ_CLIENT18', - 'GL1C_PERF_SEL_REQ_CLIENT19', 'GL1C_PERF_SEL_REQ_CLIENT2', - 'GL1C_PERF_SEL_REQ_CLIENT20', 'GL1C_PERF_SEL_REQ_CLIENT21', - 'GL1C_PERF_SEL_REQ_CLIENT22', 'GL1C_PERF_SEL_REQ_CLIENT23', - 'GL1C_PERF_SEL_REQ_CLIENT24', 'GL1C_PERF_SEL_REQ_CLIENT25', - 'GL1C_PERF_SEL_REQ_CLIENT26', 'GL1C_PERF_SEL_REQ_CLIENT27', - 'GL1C_PERF_SEL_REQ_CLIENT3', 'GL1C_PERF_SEL_REQ_CLIENT4', - 'GL1C_PERF_SEL_REQ_CLIENT5', 'GL1C_PERF_SEL_REQ_CLIENT6', - 'GL1C_PERF_SEL_REQ_CLIENT7', 'GL1C_PERF_SEL_REQ_CLIENT8', - 'GL1C_PERF_SEL_REQ_CLIENT9', 'GL1C_PERF_SEL_REQ_MISS', - 'GL1C_PERF_SEL_REQ_NOP_ACK', 'GL1C_PERF_SEL_REQ_NOP_RTN0', - 'GL1C_PERF_SEL_REQ_READ', 'GL1C_PERF_SEL_REQ_READ_128B', - 'GL1C_PERF_SEL_REQ_READ_32B', 'GL1C_PERF_SEL_REQ_READ_64B', - 'GL1C_PERF_SEL_REQ_READ_POLICY_HIT_EVICT', - 'GL1C_PERF_SEL_REQ_READ_POLICY_HIT_LRU', - 'GL1C_PERF_SEL_REQ_READ_POLICY_MISS_EVICT', - 'GL1C_PERF_SEL_REQ_SHADER_INV', 'GL1C_PERF_SEL_REQ_WRITE', - 'GL1C_PERF_SEL_REQ_WRITE_32B', 'GL1C_PERF_SEL_REQ_WRITE_64B', - 'GL1C_PERF_SEL_STALL_GCR_INV', 'GL1C_PERF_SEL_STALL_GL2_GL1', - 'GL1C_PERF_SEL_STALL_LFIFO_FULL', - 'GL1C_PERF_SEL_STALL_NOTHING_REPLACEABLE', - 'GL1C_PERF_SEL_STALL_NO_AVAILABLE_ACK_ALLOC', - 'GL1C_PERF_SEL_STALL_VM', 'GL1C_PERF_SEL_STARVE', - 'GL1C_PERF_SEL_UTCL0_INTERNAL_RETRY_REQ', - 'GL1C_PERF_SEL_UTCL0_LFIFO_FULL', - 'GL1C_PERF_SEL_UTCL0_MISS_UNDER_MISS', - 'GL1C_PERF_SEL_UTCL0_PERMISSION_MISS', - 'GL1C_PERF_SEL_UTCL0_REQUEST', - 'GL1C_PERF_SEL_UTCL0_STALL_INFLIGHT_MAX', - 'GL1C_PERF_SEL_UTCL0_STALL_LFIFO_NOT_RES', - 'GL1C_PERF_SEL_UTCL0_STALL_LRU_INFLIGHT', - 'GL1C_PERF_SEL_UTCL0_STALL_MISSFIFO_FULL', - 'GL1C_PERF_SEL_UTCL0_STALL_MULTI_MISS', - 'GL1C_PERF_SEL_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS', - 'GL1C_PERF_SEL_UTCL0_TRANSLATION_HIT', - 'GL1C_PERF_SEL_UTCL0_TRANSLATION_MISS', - 'GL1C_PERF_SEL_UTCL0_UTCL1_INFLIGHT', - 'GL1C_PERF_SEL_UTCL0_UTCL1_PERM_FAULT', - 'GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_NO_RETRY_FAULT', - 'GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_PRT_FAULT', - 'GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_RETRY_FAULT', - 'GL1H_REQ_PERF_SEL', 'GL1H_REQ_PERF_SEL_ARB_REQUESTS', - 'GL1H_REQ_PERF_SEL_BURST_COUNT_GL1_0', - 'GL1H_REQ_PERF_SEL_BURST_COUNT_GL1_1', 'GL1H_REQ_PERF_SEL_BUSY', - 'GL1H_REQ_PERF_SEL_CYCLE', 'GL1H_REQ_PERF_SEL_REQUEST_GL1_0', - 'GL1H_REQ_PERF_SEL_REQUEST_GL1_1', - 'GL1H_REQ_PERF_SEL_REQ_INFLIGHT_LEVEL', - 'GL1H_REQ_PERF_SEL_STALL_GL1_0', 'GL1H_REQ_PERF_SEL_STALL_GL1_1', - 'GL1H_REQ_PERF_SEL_WDS_32B_GL1_0', - 'GL1H_REQ_PERF_SEL_WDS_32B_GL1_1', 'GL1_CACHE_POLICIES', - 'GL1_CACHE_POLICY_HIT_EVICT', 'GL1_CACHE_POLICY_HIT_LRU', - 'GL1_CACHE_POLICY_MISS_EVICT', 'GL1_CACHE_POLICY_MISS_LRU', - 'GL1_CACHE_STORE_POLICIES', 'GL1_CACHE_STORE_POLICY_BYPASS', - 'GL2A_PERF_SEL', 'GL2A_PERF_SEL_BUSY', 'GL2A_PERF_SEL_CYCLE', - 'GL2A_PERF_SEL_NONE', 'GL2A_PERF_SEL_REQ_BURST_CLIENT0', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT1', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT10', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT11', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT12', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT13', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT14', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT15', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT2', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT3', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT4', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT5', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT6', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT7', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT8', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT9', - 'GL2A_PERF_SEL_REQ_BURST_GL2C0', 'GL2A_PERF_SEL_REQ_BURST_GL2C1', - 'GL2A_PERF_SEL_REQ_BURST_GL2C2', 'GL2A_PERF_SEL_REQ_BURST_GL2C3', - 'GL2A_PERF_SEL_REQ_BURST_GL2C4', 'GL2A_PERF_SEL_REQ_BURST_GL2C5', - 'GL2A_PERF_SEL_REQ_BURST_GL2C6', 'GL2A_PERF_SEL_REQ_BURST_GL2C7', - 'GL2A_PERF_SEL_REQ_GL2C0', 'GL2A_PERF_SEL_REQ_GL2C1', - 'GL2A_PERF_SEL_REQ_GL2C2', 'GL2A_PERF_SEL_REQ_GL2C3', - 'GL2A_PERF_SEL_REQ_GL2C4', 'GL2A_PERF_SEL_REQ_GL2C5', - 'GL2A_PERF_SEL_REQ_GL2C6', 'GL2A_PERF_SEL_REQ_GL2C7', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C0', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C1', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C2', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C3', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C4', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C5', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C6', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C7', - 'GL2A_PERF_SEL_REQ_STALL_GL2C0', 'GL2A_PERF_SEL_REQ_STALL_GL2C1', - 'GL2A_PERF_SEL_REQ_STALL_GL2C2', 'GL2A_PERF_SEL_REQ_STALL_GL2C3', - 'GL2A_PERF_SEL_REQ_STALL_GL2C4', 'GL2A_PERF_SEL_REQ_STALL_GL2C5', - 'GL2A_PERF_SEL_REQ_STALL_GL2C6', 'GL2A_PERF_SEL_REQ_STALL_GL2C7', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT0', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT1', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT10', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT11', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT12', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT13', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT14', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT15', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT2', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT3', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT4', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT5', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT6', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT7', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT8', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT9', - 'GL2A_PERF_SEL_RTN_CLIENT0', 'GL2A_PERF_SEL_RTN_CLIENT1', - 'GL2A_PERF_SEL_RTN_CLIENT10', 'GL2A_PERF_SEL_RTN_CLIENT11', - 'GL2A_PERF_SEL_RTN_CLIENT12', 'GL2A_PERF_SEL_RTN_CLIENT13', - 'GL2A_PERF_SEL_RTN_CLIENT14', 'GL2A_PERF_SEL_RTN_CLIENT15', - 'GL2A_PERF_SEL_RTN_CLIENT2', 'GL2A_PERF_SEL_RTN_CLIENT3', - 'GL2A_PERF_SEL_RTN_CLIENT4', 'GL2A_PERF_SEL_RTN_CLIENT5', - 'GL2A_PERF_SEL_RTN_CLIENT6', 'GL2A_PERF_SEL_RTN_CLIENT7', - 'GL2A_PERF_SEL_RTN_CLIENT8', 'GL2A_PERF_SEL_RTN_CLIENT9', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT0', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT1', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT10', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT11', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT12', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT13', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT14', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT15', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT2', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT3', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT4', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT5', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT6', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT7', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT8', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT9', - 'GL2A_PERF_SEL_RTN_STALL_GL2C0', 'GL2A_PERF_SEL_RTN_STALL_GL2C1', - 'GL2A_PERF_SEL_RTN_STALL_GL2C2', 'GL2A_PERF_SEL_RTN_STALL_GL2C3', - 'GL2A_PERF_SEL_RTN_STALL_GL2C4', 'GL2A_PERF_SEL_RTN_STALL_GL2C5', - 'GL2A_PERF_SEL_RTN_STALL_GL2C6', 'GL2A_PERF_SEL_RTN_STALL_GL2C7', - 'GL2C_PERF_SEL', 'GL2C_PERF_SEL_ALL_GCR_INV_EVICT', - 'GL2C_PERF_SEL_ALL_GCR_INV_VOL_EVICT', - 'GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_CYCLE', - 'GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_VOL_CYCLE', - 'GL2C_PERF_SEL_ALL_GCR_WB_WRITEBACK', - 'GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_START', - 'GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_VOL_START', - 'GL2C_PERF_SEL_ATOMIC', 'GL2C_PERF_SEL_BUBBLE', - 'GL2C_PERF_SEL_BUSY', 'GL2C_PERF_SEL_BYPASS_REQ', - 'GL2C_PERF_SEL_CLIENT0_REQ', 'GL2C_PERF_SEL_CLIENT10_REQ', - 'GL2C_PERF_SEL_CLIENT11_REQ', 'GL2C_PERF_SEL_CLIENT12_REQ', - 'GL2C_PERF_SEL_CLIENT13_REQ', 'GL2C_PERF_SEL_CLIENT14_REQ', - 'GL2C_PERF_SEL_CLIENT15_REQ', 'GL2C_PERF_SEL_CLIENT1_REQ', - 'GL2C_PERF_SEL_CLIENT2_REQ', 'GL2C_PERF_SEL_CLIENT3_REQ', - 'GL2C_PERF_SEL_CLIENT4_REQ', 'GL2C_PERF_SEL_CLIENT5_REQ', - 'GL2C_PERF_SEL_CLIENT6_REQ', 'GL2C_PERF_SEL_CLIENT7_REQ', - 'GL2C_PERF_SEL_CLIENT8_REQ', 'GL2C_PERF_SEL_CLIENT9_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL0_REQ', 'GL2C_PERF_SEL_CM_CHANNEL10_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL11_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL12_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL13_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL14_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL15_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL16_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL17_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL18_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL19_REQ', 'GL2C_PERF_SEL_CM_CHANNEL1_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL20_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL21_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL22_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL23_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL24_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL25_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL26_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL27_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL28_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL29_REQ', 'GL2C_PERF_SEL_CM_CHANNEL2_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL30_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL31_REQ', 'GL2C_PERF_SEL_CM_CHANNEL3_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL4_REQ', 'GL2C_PERF_SEL_CM_CHANNEL5_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL6_REQ', 'GL2C_PERF_SEL_CM_CHANNEL7_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL8_REQ', 'GL2C_PERF_SEL_CM_CHANNEL9_REQ', - 'GL2C_PERF_SEL_CM_COLOR_32B_WR_REQ', - 'GL2C_PERF_SEL_CM_COLOR_64B_WR_REQ', - 'GL2C_PERF_SEL_CM_COMP_ATOMIC_COLOR_REQ', - 'GL2C_PERF_SEL_CM_COMP_ATOMIC_DEPTH16_REQ', - 'GL2C_PERF_SEL_CM_COMP_ATOMIC_DEPTH32_REQ', - 'GL2C_PERF_SEL_CM_COMP_ATOMIC_STENCIL_REQ', - 'GL2C_PERF_SEL_CM_COMP_COLOR_DIS_REQ', - 'GL2C_PERF_SEL_CM_COMP_COLOR_EN_REQ', - 'GL2C_PERF_SEL_CM_COMP_DEPTH16_REQ', - 'GL2C_PERF_SEL_CM_COMP_DEPTH32_REQ', - 'GL2C_PERF_SEL_CM_COMP_RB_SKIP_REQ', - 'GL2C_PERF_SEL_CM_COMP_READ_REQ', - 'GL2C_PERF_SEL_CM_COMP_STENCIL_REQ', - 'GL2C_PERF_SEL_CM_COMP_WRITE_COLOR_REQ', - 'GL2C_PERF_SEL_CM_COMP_WRITE_DEPTH16_REQ', - 'GL2C_PERF_SEL_CM_COMP_WRITE_DEPTH32_REQ', - 'GL2C_PERF_SEL_CM_COMP_WRITE_STENCIL_REQ', - 'GL2C_PERF_SEL_CM_DCC_IN_XFC', 'GL2C_PERF_SEL_CM_DCC_OUT_1x1', - 'GL2C_PERF_SEL_CM_DCC_OUT_1x2', 'GL2C_PERF_SEL_CM_DCC_OUT_2x1', - 'GL2C_PERF_SEL_CM_DCC_OUT_2x2', 'GL2C_PERF_SEL_CM_DCC_OUT_CONST', - 'GL2C_PERF_SEL_CM_DCC_OUT_UNCOMP', 'GL2C_PERF_SEL_CM_DCC_OUT_XFC', - 'GL2C_PERF_SEL_CM_DCC_STALL', 'GL2C_PERF_SEL_CM_FULL_WRITE_REQ', - 'GL2C_PERF_SEL_CM_MERGE_BUF_FULL', - 'GL2C_PERF_SEL_CM_METADATA_WR_REQ', 'GL2C_PERF_SEL_CM_NOOP_REQ', - 'GL2C_PERF_SEL_CM_NO_ACK_REQ', 'GL2C_PERF_SEL_CM_READ_BACK_REQ', - 'GL2C_PERF_SEL_CM_RVF_FULL', 'GL2C_PERF_SEL_CM_SDR_FULL', - 'GL2C_PERF_SEL_CM_WR_ACK_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_0_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_128_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_32_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_64_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_96_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_REQ', 'GL2C_PERF_SEL_CYCLE', - 'GL2C_PERF_SEL_C_RO_S_REQ', 'GL2C_PERF_SEL_C_RO_US_REQ', - 'GL2C_PERF_SEL_C_RW_S_REQ', 'GL2C_PERF_SEL_C_RW_US_REQ', - 'GL2C_PERF_SEL_DEWRITE_ALLOCATE_HIT', 'GL2C_PERF_SEL_EA_ATOMIC', - 'GL2C_PERF_SEL_EA_ATOMIC_LEVEL', 'GL2C_PERF_SEL_EA_OUTSTANDING', - 'GL2C_PERF_SEL_EA_RDREQ_128B', 'GL2C_PERF_SEL_EA_RDREQ_32B', - 'GL2C_PERF_SEL_EA_RDREQ_64B', 'GL2C_PERF_SEL_EA_RDREQ_96B', - 'GL2C_PERF_SEL_EA_RDREQ_DRAM', 'GL2C_PERF_SEL_EA_RDREQ_DRAM_32B', - 'GL2C_PERF_SEL_EA_RDREQ_DRAM_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_RDREQ_GMI_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_RDREQ_IO_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_RDREQ_SNOOP', 'GL2C_PERF_SEL_EA_RDREQ_SPLIT', - 'GL2C_PERF_SEL_EA_RDRET_NACK', - 'GL2C_PERF_SEL_EA_RD_COMPRESSED_32B', - 'GL2C_PERF_SEL_EA_RD_MDC_32B', 'GL2C_PERF_SEL_EA_RD_UNCACHED_32B', - 'GL2C_PERF_SEL_EA_WRREQ_64B', 'GL2C_PERF_SEL_EA_WRREQ_DRAM', - 'GL2C_PERF_SEL_EA_WRREQ_DRAM_32B', - 'GL2C_PERF_SEL_EA_WRREQ_DRAM_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_WRREQ_GMI_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_WRREQ_IO_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_WRREQ_PROBE_COMMAND', - 'GL2C_PERF_SEL_EA_WRREQ_SNOOP', 'GL2C_PERF_SEL_EA_WRRET_NACK', - 'GL2C_PERF_SEL_EA_WR_UNCACHED_32B', 'GL2C_PERF_SEL_EVICT', - 'GL2C_PERF_SEL_FULLY_WRITTEN_HIT', 'GL2C_PERF_SEL_FULL_HIT', - 'GL2C_PERF_SEL_GARLIC_READ', 'GL2C_PERF_SEL_GARLIC_WRITE', - 'GL2C_PERF_SEL_GCR_ALL', 'GL2C_PERF_SEL_GCR_DISCARD', - 'GL2C_PERF_SEL_GCR_GL2_INV_ALL', - 'GL2C_PERF_SEL_GCR_GL2_INV_RANGE', 'GL2C_PERF_SEL_GCR_GL2_WB_ALL', - 'GL2C_PERF_SEL_GCR_GL2_WB_INV_RANGE', - 'GL2C_PERF_SEL_GCR_GL2_WB_RANGE', 'GL2C_PERF_SEL_GCR_INV', - 'GL2C_PERF_SEL_GCR_INVL2_VOL_CYCLE', - 'GL2C_PERF_SEL_GCR_INVL2_VOL_EVICT', - 'GL2C_PERF_SEL_GCR_INVL2_VOL_START', 'GL2C_PERF_SEL_GCR_MDC_INV', - 'GL2C_PERF_SEL_GCR_MDC_INV_ALL', - 'GL2C_PERF_SEL_GCR_MDC_INV_RANGE', 'GL2C_PERF_SEL_GCR_RANGE', - 'GL2C_PERF_SEL_GCR_UNSHARED', 'GL2C_PERF_SEL_GCR_VOL', - 'GL2C_PERF_SEL_GCR_WB', 'GL2C_PERF_SEL_GCR_WBINVL2_CYCLE', - 'GL2C_PERF_SEL_GCR_WBINVL2_EVICT', - 'GL2C_PERF_SEL_GCR_WBINVL2_START', - 'GL2C_PERF_SEL_GCR_WBL2_VOL_CYCLE', - 'GL2C_PERF_SEL_GCR_WBL2_VOL_START', 'GL2C_PERF_SEL_GL2A_LEVEL', - 'GL2C_PERF_SEL_HIGH_PRIORITY_REQ', 'GL2C_PERF_SEL_HIT', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT0', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT1', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT10', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT11', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT12', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT13', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT14', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT15', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT16', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT17', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT18', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT19', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT2', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT3', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT4', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT5', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT6', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT7', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT8', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT9', - 'GL2C_PERF_SEL_IB_CM_STALL', 'GL2C_PERF_SEL_IB_REQ', - 'GL2C_PERF_SEL_IB_STALL', 'GL2C_PERF_SEL_IB_TAG_STALL', - 'GL2C_PERF_SEL_INTERNAL_PROBE', 'GL2C_PERF_SEL_IO_READ', - 'GL2C_PERF_SEL_IO_WRITE', 'GL2C_PERF_SEL_LATENCY_FIFO_FULL', - 'GL2C_PERF_SEL_LRU_REQ', 'GL2C_PERF_SEL_MC_RDREQ', - 'GL2C_PERF_SEL_MC_RDREQ_LEVEL', 'GL2C_PERF_SEL_MC_WRREQ', - 'GL2C_PERF_SEL_MC_WRREQ_LEVEL', 'GL2C_PERF_SEL_MC_WRREQ_STALL', - 'GL2C_PERF_SEL_MDC_INV_METADATA', 'GL2C_PERF_SEL_MDC_LEVEL', - 'GL2C_PERF_SEL_MDC_REQ', 'GL2C_PERF_SEL_MDC_SECTOR_HIT', - 'GL2C_PERF_SEL_MDC_SECTOR_MISS', - 'GL2C_PERF_SEL_MDC_TAG_DESECTORIZATION_FIFO_FULL_STALL', - 'GL2C_PERF_SEL_MDC_TAG_HIT', - 'GL2C_PERF_SEL_MDC_TAG_REPLACEMENT_LINE_IN_USE_STALL', - 'GL2C_PERF_SEL_MDC_TAG_STALL', - 'GL2C_PERF_SEL_MDC_TAG_WAITING_FOR_INVALIDATE_COMPLETION_STALL', - 'GL2C_PERF_SEL_METADATA_READ_REQ', 'GL2C_PERF_SEL_MISS', - 'GL2C_PERF_SEL_NOA_REQ', 'GL2C_PERF_SEL_NONE', - 'GL2C_PERF_SEL_NOP_ACK', 'GL2C_PERF_SEL_NOP_RTN0', - 'GL2C_PERF_SEL_NORMAL_EVICT', 'GL2C_PERF_SEL_NORMAL_WRITEBACK', - 'GL2C_PERF_SEL_ONION_READ', 'GL2C_PERF_SEL_ONION_WRITE', - 'GL2C_PERF_SEL_PARTIAL_32B_HIT', 'GL2C_PERF_SEL_PARTIAL_64B_HIT', - 'GL2C_PERF_SEL_PARTIAL_96B_HIT', 'GL2C_PERF_SEL_PROBE', - 'GL2C_PERF_SEL_PROBE_ALL', 'GL2C_PERF_SEL_PROBE_EVICT', - 'GL2C_PERF_SEL_PROBE_FILTER_DISABLED', - 'GL2C_PERF_SEL_PROBE_FILTER_DISABLE_TRANSITION', - 'GL2C_PERF_SEL_READ', 'GL2C_PERF_SEL_READ_128_REQ', - 'GL2C_PERF_SEL_READ_32_REQ', 'GL2C_PERF_SEL_READ_64_REQ', - 'GL2C_PERF_SEL_READ_RETURN_FULL_BUBBLE', - 'GL2C_PERF_SEL_READ_RETURN_TIMEOUT', 'GL2C_PERF_SEL_REQ', - 'GL2C_PERF_SEL_REQ_TO_MISS_QUEUE', 'GL2C_PERF_SEL_RETURN_ACK', - 'GL2C_PERF_SEL_RETURN_DATA', 'GL2C_PERF_SEL_SHARED_REQ', - 'GL2C_PERF_SEL_SRC_FIFO_FULL', 'GL2C_PERF_SEL_STREAM_REQ', - 'GL2C_PERF_SEL_TAG_MISS_NOTHING_REPLACEABLE_STALL', - 'GL2C_PERF_SEL_TAG_NO_UNCACHED_WRITE_ATOMIC_ENTRIES_STALL', - 'GL2C_PERF_SEL_TAG_PROBE_FIFO_FULL_STALL', - 'GL2C_PERF_SEL_TAG_PROBE_FILTER_STALL', - 'GL2C_PERF_SEL_TAG_PROBE_STALL', - 'GL2C_PERF_SEL_TAG_READ_DST_STALL', 'GL2C_PERF_SEL_TAG_STALL', - 'GL2C_PERF_SEL_TAG_UNCACHED_WRITE_ATOMIC_FIFO_FULL_STALL', - 'GL2C_PERF_SEL_TAG_WRITEBACK_FIFO_FULL_STALL', - 'GL2C_PERF_SEL_TOO_MANY_EA_WRREQS_STALL', 'GL2C_PERF_SEL_UC_REQ', - 'GL2C_PERF_SEL_UNCACHED_WRITE', 'GL2C_PERF_SEL_VOL_REQ', - 'GL2C_PERF_SEL_WRITE', 'GL2C_PERF_SEL_WRITEBACK', - 'GL2C_PERF_SEL_WRITEBACK_READ_TIMEOUT', - 'GL2C_PERF_SEL_WRITE_32_REQ', 'GL2C_PERF_SEL_WRITE_64_REQ', - 'GL2_CACHE_POLICIES', 'GL2_CACHE_POLICY_BYPASS', - 'GL2_CACHE_POLICY_LRU', 'GL2_CACHE_POLICY_NOA', - 'GL2_CACHE_POLICY_STREAM', 'GL2_EA_CID', 'GL2_EA_CID_CLIENT', - 'GL2_EA_CID_CP', 'GL2_EA_CID_CPDMA', 'GL2_EA_CID_DCC', - 'GL2_EA_CID_FMASK', 'GL2_EA_CID_HTILE', 'GL2_EA_CID_MES', - 'GL2_EA_CID_RLC', 'GL2_EA_CID_RT', 'GL2_EA_CID_SDMA', - 'GL2_EA_CID_SQC', 'GL2_EA_CID_TCPMETA', 'GL2_EA_CID_UTCL2', - 'GL2_EA_CID_ZPCPSD', 'GL2_EA_CID_Z_STENCIL', 'GL2_NACKS', - 'GL2_NACK_DATA_ERROR', 'GL2_NACK_NO_FAULT', 'GL2_NACK_PAGE_FAULT', - 'GL2_NACK_PROTECTION_FAULT', 'GL2_OP', 'GL2_OP_ATOMIC_ADD_32', - 'GL2_OP_ATOMIC_ADD_64', 'GL2_OP_ATOMIC_ADD_RTN_32', - 'GL2_OP_ATOMIC_ADD_RTN_64', 'GL2_OP_ATOMIC_AND_32', - 'GL2_OP_ATOMIC_AND_64', 'GL2_OP_ATOMIC_AND_RTN_32', - 'GL2_OP_ATOMIC_AND_RTN_64', 'GL2_OP_ATOMIC_CLAMP_SUB_RTN_32', - 'GL2_OP_ATOMIC_CMPSWAP_32', 'GL2_OP_ATOMIC_CMPSWAP_64', - 'GL2_OP_ATOMIC_CMPSWAP_RTN_32', 'GL2_OP_ATOMIC_CMPSWAP_RTN_64', - 'GL2_OP_ATOMIC_DEC_32', 'GL2_OP_ATOMIC_DEC_64', - 'GL2_OP_ATOMIC_DEC_RTN_32', 'GL2_OP_ATOMIC_DEC_RTN_64', - 'GL2_OP_ATOMIC_FADD_FLUSH_DENORM_32', - 'GL2_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32', - 'GL2_OP_ATOMIC_FCMPSWAP_32', 'GL2_OP_ATOMIC_FCMPSWAP_64', - 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32', - 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64', - 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32', - 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64', - 'GL2_OP_ATOMIC_FCMPSWAP_RTN_32', 'GL2_OP_ATOMIC_FCMPSWAP_RTN_64', - 'GL2_OP_ATOMIC_FMAX_32', 'GL2_OP_ATOMIC_FMAX_64', - 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_32', - 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_64', - 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32', - 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64', - 'GL2_OP_ATOMIC_FMAX_RTN_32', 'GL2_OP_ATOMIC_FMAX_RTN_64', - 'GL2_OP_ATOMIC_FMIN_32', 'GL2_OP_ATOMIC_FMIN_64', - 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_32', - 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_64', - 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32', - 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64', - 'GL2_OP_ATOMIC_FMIN_RTN_32', 'GL2_OP_ATOMIC_FMIN_RTN_64', - 'GL2_OP_ATOMIC_INC_32', 'GL2_OP_ATOMIC_INC_64', - 'GL2_OP_ATOMIC_INC_RTN_32', 'GL2_OP_ATOMIC_INC_RTN_64', - 'GL2_OP_ATOMIC_OR_32', 'GL2_OP_ATOMIC_OR_64', - 'GL2_OP_ATOMIC_OR_RTN_32', 'GL2_OP_ATOMIC_OR_RTN_64', - 'GL2_OP_ATOMIC_SMAX_32', 'GL2_OP_ATOMIC_SMAX_64', - 'GL2_OP_ATOMIC_SMAX_RTN_32', 'GL2_OP_ATOMIC_SMAX_RTN_64', - 'GL2_OP_ATOMIC_SMIN_32', 'GL2_OP_ATOMIC_SMIN_64', - 'GL2_OP_ATOMIC_SMIN_RTN_32', 'GL2_OP_ATOMIC_SMIN_RTN_64', - 'GL2_OP_ATOMIC_SUB_32', 'GL2_OP_ATOMIC_SUB_64', - 'GL2_OP_ATOMIC_SUB_RTN_32', 'GL2_OP_ATOMIC_SUB_RTN_64', - 'GL2_OP_ATOMIC_SWAP_32', 'GL2_OP_ATOMIC_SWAP_64', - 'GL2_OP_ATOMIC_SWAP_RTN_32', 'GL2_OP_ATOMIC_SWAP_RTN_64', - 'GL2_OP_ATOMIC_UMAX_32', 'GL2_OP_ATOMIC_UMAX_64', - 'GL2_OP_ATOMIC_UMAX_8', 'GL2_OP_ATOMIC_UMAX_RTN_32', - 'GL2_OP_ATOMIC_UMAX_RTN_64', 'GL2_OP_ATOMIC_UMIN_32', - 'GL2_OP_ATOMIC_UMIN_64', 'GL2_OP_ATOMIC_UMIN_8', - 'GL2_OP_ATOMIC_UMIN_RTN_32', 'GL2_OP_ATOMIC_UMIN_RTN_64', - 'GL2_OP_ATOMIC_XOR_32', 'GL2_OP_ATOMIC_XOR_64', - 'GL2_OP_ATOMIC_XOR_RTN_32', 'GL2_OP_ATOMIC_XOR_RTN_64', - 'GL2_OP_GL1_INV', 'GL2_OP_MASKS', 'GL2_OP_MASK_64', - 'GL2_OP_MASK_FLUSH_DENROM', 'GL2_OP_MASK_NO_RTN', - 'GL2_OP_NOP_ACK', 'GL2_OP_NOP_RTN0', 'GL2_OP_PROBE_FILTER', - 'GL2_OP_READ', 'GL2_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2', - 'GL2_OP_WRITE', 'GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE', - 'GLOBAL_CONTROL_CONTROLLER_RESET', 'GLOBAL_CONTROL_FLUSH_CONTROL', - 'GLOBAL_STATUS_FLUSH_STATUS', - 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_ENDED', - 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_NOT_ENDED', - 'GL__CONSTANT_ALPHA', 'GL__CONSTANT_COLOR', 'GL__DST_ALPHA', - 'GL__DST_COLOR', 'GL__ONE', 'GL__ONE_MINUS_CONSTANT_ALPHA', - 'GL__ONE_MINUS_CONSTANT_COLOR', 'GL__ONE_MINUS_DST_ALPHA', - 'GL__ONE_MINUS_DST_COLOR', 'GL__ONE_MINUS_SRC_ALPHA', - 'GL__ONE_MINUS_SRC_COLOR', 'GL__SRC_ALPHA', - 'GL__SRC_ALPHA_SATURATE', 'GL__SRC_COLOR', 'GL__ZERO', - 'GRBM_PERF_SEL', 'GRBM_PERF_SEL_ANY_ACTIVE_F_BUSY', - 'GRBM_PERF_SEL_BCI_BUSY', 'GRBM_PERF_SEL_CB_BUSY', - 'GRBM_PERF_SEL_CB_CLEAN', 'GRBM_PERF_SEL_CH_BUSY', - 'GRBM_PERF_SEL_COUNT', 'GRBM_PERF_SEL_CPAXI_BUSY', - 'GRBM_PERF_SEL_CPC_BUSY', 'GRBM_PERF_SEL_CPF_BUSY', - 'GRBM_PERF_SEL_CPG_BUSY', 'GRBM_PERF_SEL_CP_BUSY', - 'GRBM_PERF_SEL_CP_COHER_BUSY', 'GRBM_PERF_SEL_CP_DMA_BUSY', - 'GRBM_PERF_SEL_DB_BUSY', 'GRBM_PERF_SEL_DB_CLEAN', - 'GRBM_PERF_SEL_EA_BUSY', 'GRBM_PERF_SEL_GDS_BUSY', - 'GRBM_PERF_SEL_GE_BUSY', 'GRBM_PERF_SEL_GE_NO_DMA_BUSY', - 'GRBM_PERF_SEL_GL1CC_BUSY', 'GRBM_PERF_SEL_GL1H_BUSY', - 'GRBM_PERF_SEL_GL2CC_BUSY', 'GRBM_PERF_SEL_GUI_ACTIVE', - 'GRBM_PERF_SEL_GUS_BUSY', 'GRBM_PERF_SEL_PA_BUSY', - 'GRBM_PERF_SEL_PC_BUSY', 'GRBM_PERF_SEL_PH_BUSY', - 'GRBM_PERF_SEL_PMM_BUSY', 'GRBM_PERF_SEL_RLC_BUSY', - 'GRBM_PERF_SEL_RMI_BUSY', 'GRBM_PERF_SEL_SC_BUSY', - 'GRBM_PERF_SEL_SDMA_BUSY', 'GRBM_PERF_SEL_SPI_BUSY', - 'GRBM_PERF_SEL_SX_BUSY', 'GRBM_PERF_SEL_TA_BUSY', - 'GRBM_PERF_SEL_TCP_BUSY', 'GRBM_PERF_SEL_USER_DEFINED', - 'GRBM_PERF_SEL_UTCL1_BUSY', 'GRBM_PERF_SEL_UTCL2_BUSY', - 'GRBM_SE0_PERF_SEL', 'GRBM_SE0_PERF_SEL_BCI_BUSY', - 'GRBM_SE0_PERF_SEL_CB_BUSY', 'GRBM_SE0_PERF_SEL_CB_CLEAN', - 'GRBM_SE0_PERF_SEL_COUNT', 'GRBM_SE0_PERF_SEL_DB_BUSY', - 'GRBM_SE0_PERF_SEL_DB_CLEAN', 'GRBM_SE0_PERF_SEL_GL1CC_BUSY', - 'GRBM_SE0_PERF_SEL_GL1H_BUSY', 'GRBM_SE0_PERF_SEL_PA_BUSY', - 'GRBM_SE0_PERF_SEL_PC_BUSY', 'GRBM_SE0_PERF_SEL_RMI_BUSY', - 'GRBM_SE0_PERF_SEL_SC_BUSY', 'GRBM_SE0_PERF_SEL_SPI_BUSY', - 'GRBM_SE0_PERF_SEL_SX_BUSY', 'GRBM_SE0_PERF_SEL_TA_BUSY', - 'GRBM_SE0_PERF_SEL_TCP_BUSY', 'GRBM_SE0_PERF_SEL_USER_DEFINED', - 'GRBM_SE0_PERF_SEL_UTCL1_BUSY', 'GRBM_SE1_PERF_SEL', - 'GRBM_SE1_PERF_SEL_BCI_BUSY', 'GRBM_SE1_PERF_SEL_CB_BUSY', - 'GRBM_SE1_PERF_SEL_CB_CLEAN', 'GRBM_SE1_PERF_SEL_COUNT', - 'GRBM_SE1_PERF_SEL_DB_BUSY', 'GRBM_SE1_PERF_SEL_DB_CLEAN', - 'GRBM_SE1_PERF_SEL_GL1CC_BUSY', 'GRBM_SE1_PERF_SEL_GL1H_BUSY', - 'GRBM_SE1_PERF_SEL_PA_BUSY', 'GRBM_SE1_PERF_SEL_PC_BUSY', - 'GRBM_SE1_PERF_SEL_RMI_BUSY', 'GRBM_SE1_PERF_SEL_SC_BUSY', - 'GRBM_SE1_PERF_SEL_SPI_BUSY', 'GRBM_SE1_PERF_SEL_SX_BUSY', - 'GRBM_SE1_PERF_SEL_TA_BUSY', 'GRBM_SE1_PERF_SEL_TCP_BUSY', - 'GRBM_SE1_PERF_SEL_USER_DEFINED', 'GRBM_SE1_PERF_SEL_UTCL1_BUSY', - 'GRBM_SE2_PERF_SEL', 'GRBM_SE2_PERF_SEL_BCI_BUSY', - 'GRBM_SE2_PERF_SEL_CB_BUSY', 'GRBM_SE2_PERF_SEL_CB_CLEAN', - 'GRBM_SE2_PERF_SEL_COUNT', 'GRBM_SE2_PERF_SEL_DB_BUSY', - 'GRBM_SE2_PERF_SEL_DB_CLEAN', 'GRBM_SE2_PERF_SEL_GL1CC_BUSY', - 'GRBM_SE2_PERF_SEL_GL1H_BUSY', 'GRBM_SE2_PERF_SEL_PA_BUSY', - 'GRBM_SE2_PERF_SEL_PC_BUSY', 'GRBM_SE2_PERF_SEL_RMI_BUSY', - 'GRBM_SE2_PERF_SEL_SC_BUSY', 'GRBM_SE2_PERF_SEL_SPI_BUSY', - 'GRBM_SE2_PERF_SEL_SX_BUSY', 'GRBM_SE2_PERF_SEL_TA_BUSY', - 'GRBM_SE2_PERF_SEL_TCP_BUSY', 'GRBM_SE2_PERF_SEL_USER_DEFINED', - 'GRBM_SE2_PERF_SEL_UTCL1_BUSY', 'GRBM_SE3_PERF_SEL', - 'GRBM_SE3_PERF_SEL_BCI_BUSY', 'GRBM_SE3_PERF_SEL_CB_BUSY', - 'GRBM_SE3_PERF_SEL_CB_CLEAN', 'GRBM_SE3_PERF_SEL_COUNT', - 'GRBM_SE3_PERF_SEL_DB_BUSY', 'GRBM_SE3_PERF_SEL_DB_CLEAN', - 'GRBM_SE3_PERF_SEL_GL1CC_BUSY', 'GRBM_SE3_PERF_SEL_GL1H_BUSY', - 'GRBM_SE3_PERF_SEL_PA_BUSY', 'GRBM_SE3_PERF_SEL_PC_BUSY', - 'GRBM_SE3_PERF_SEL_RMI_BUSY', 'GRBM_SE3_PERF_SEL_SC_BUSY', - 'GRBM_SE3_PERF_SEL_SPI_BUSY', 'GRBM_SE3_PERF_SEL_SX_BUSY', - 'GRBM_SE3_PERF_SEL_TA_BUSY', 'GRBM_SE3_PERF_SEL_TCP_BUSY', - 'GRBM_SE3_PERF_SEL_USER_DEFINED', 'GRBM_SE3_PERF_SEL_UTCL1_BUSY', - 'GRBM_SE4_PERF_SEL', 'GRBM_SE4_PERF_SEL_BCI_BUSY', - 'GRBM_SE4_PERF_SEL_CB_BUSY', 'GRBM_SE4_PERF_SEL_CB_CLEAN', - 'GRBM_SE4_PERF_SEL_COUNT', 'GRBM_SE4_PERF_SEL_DB_BUSY', - 'GRBM_SE4_PERF_SEL_DB_CLEAN', 'GRBM_SE4_PERF_SEL_GL1CC_BUSY', - 'GRBM_SE4_PERF_SEL_GL1H_BUSY', 'GRBM_SE4_PERF_SEL_PA_BUSY', - 'GRBM_SE4_PERF_SEL_PC_BUSY', 'GRBM_SE4_PERF_SEL_RMI_BUSY', - 'GRBM_SE4_PERF_SEL_SC_BUSY', 'GRBM_SE4_PERF_SEL_SPI_BUSY', - 'GRBM_SE4_PERF_SEL_SX_BUSY', 'GRBM_SE4_PERF_SEL_TA_BUSY', - 'GRBM_SE4_PERF_SEL_TCP_BUSY', 'GRBM_SE4_PERF_SEL_USER_DEFINED', - 'GRBM_SE4_PERF_SEL_UTCL1_BUSY', 'GRBM_SE5_PERF_SEL', - 'GRBM_SE5_PERF_SEL_BCI_BUSY', 'GRBM_SE5_PERF_SEL_CB_BUSY', - 'GRBM_SE5_PERF_SEL_CB_CLEAN', 'GRBM_SE5_PERF_SEL_COUNT', - 'GRBM_SE5_PERF_SEL_DB_BUSY', 'GRBM_SE5_PERF_SEL_DB_CLEAN', - 'GRBM_SE5_PERF_SEL_GL1CC_BUSY', 'GRBM_SE5_PERF_SEL_GL1H_BUSY', - 'GRBM_SE5_PERF_SEL_PA_BUSY', 'GRBM_SE5_PERF_SEL_PC_BUSY', - 'GRBM_SE5_PERF_SEL_RMI_BUSY', 'GRBM_SE5_PERF_SEL_SC_BUSY', - 'GRBM_SE5_PERF_SEL_SPI_BUSY', 'GRBM_SE5_PERF_SEL_SX_BUSY', - 'GRBM_SE5_PERF_SEL_TA_BUSY', 'GRBM_SE5_PERF_SEL_TCP_BUSY', - 'GRBM_SE5_PERF_SEL_USER_DEFINED', 'GRBM_SE5_PERF_SEL_UTCL1_BUSY', - 'GRBM_SE6_PERF_SEL', 'GRBM_SE6_PERF_SEL_BCI_BUSY', - 'GRBM_SE6_PERF_SEL_CB_BUSY', 'GRBM_SE6_PERF_SEL_CB_CLEAN', - 'GRBM_SE6_PERF_SEL_COUNT', 'GRBM_SE6_PERF_SEL_DB_BUSY', - 'GRBM_SE6_PERF_SEL_DB_CLEAN', 'GRBM_SE6_PERF_SEL_GL1CC_BUSY', - 'GRBM_SE6_PERF_SEL_GL1H_BUSY', 'GRBM_SE6_PERF_SEL_PA_BUSY', - 'GRBM_SE6_PERF_SEL_PC_BUSY', 'GRBM_SE6_PERF_SEL_RMI_BUSY', - 'GRBM_SE6_PERF_SEL_SC_BUSY', 'GRBM_SE6_PERF_SEL_SPI_BUSY', - 'GRBM_SE6_PERF_SEL_SX_BUSY', 'GRBM_SE6_PERF_SEL_TA_BUSY', - 'GRBM_SE6_PERF_SEL_TCP_BUSY', 'GRBM_SE6_PERF_SEL_USER_DEFINED', - 'GRBM_SE6_PERF_SEL_UTCL1_BUSY', 'GRBM_SE7_PERF_SEL', - 'GRBM_SE7_PERF_SEL_BCI_BUSY', 'GRBM_SE7_PERF_SEL_CB_BUSY', - 'GRBM_SE7_PERF_SEL_CB_CLEAN', 'GRBM_SE7_PERF_SEL_COUNT', - 'GRBM_SE7_PERF_SEL_DB_BUSY', 'GRBM_SE7_PERF_SEL_DB_CLEAN', - 'GRBM_SE7_PERF_SEL_GL1CC_BUSY', 'GRBM_SE7_PERF_SEL_GL1H_BUSY', - 'GRBM_SE7_PERF_SEL_PA_BUSY', 'GRBM_SE7_PERF_SEL_PC_BUSY', - 'GRBM_SE7_PERF_SEL_RMI_BUSY', 'GRBM_SE7_PERF_SEL_SC_BUSY', - 'GRBM_SE7_PERF_SEL_SPI_BUSY', 'GRBM_SE7_PERF_SEL_SX_BUSY', - 'GRBM_SE7_PERF_SEL_TA_BUSY', 'GRBM_SE7_PERF_SEL_TCP_BUSY', - 'GRBM_SE7_PERF_SEL_USER_DEFINED', 'GRBM_SE7_PERF_SEL_UTCL1_BUSY', - 'GREEN_LUT', 'GSTHREADID_SIZE', 'GS_OFF', 'GS_SCENARIO_A', - 'GS_SCENARIO_B', 'GS_SCENARIO_C', 'GS_SCENARIO_G', 'GS_STAGE_OFF', - 'GS_STAGE_ON', 'HDMICHARCLK_SRC_SEL', - 'HDMICHARCLK_SRC_SEL_SRC_RESERVED', 'HDMICHARCLK_SRC_SEL_UNIPHYA', - 'HDMICHARCLK_SRC_SEL_UNIPHYB', 'HDMICHARCLK_SRC_SEL_UNIPHYC', - 'HDMICHARCLK_SRC_SEL_UNIPHYD', 'HDMICHARCLK_SRC_SEL_UNIPHYE', - 'HDMISTREAMCLK_DTO_FORCE_DIS', 'HDMISTREAMCLK_SRC_SEL', - 'HDMI_ACP_NOT_SEND', 'HDMI_ACP_PKT_SEND', 'HDMI_ACP_SEND', - 'HDMI_ACR_0_MULTIPLE_RESERVED', 'HDMI_ACR_1_MULTIPLE', - 'HDMI_ACR_2_MULTIPLE', 'HDMI_ACR_3_MULTIPLE_RESERVED', - 'HDMI_ACR_4_MULTIPLE', 'HDMI_ACR_5_MULTIPLE_RESERVED', - 'HDMI_ACR_6_MULTIPLE_RESERVED', 'HDMI_ACR_7_MULTIPLE_RESERVED', - 'HDMI_ACR_AUDIO_PRIORITY', 'HDMI_ACR_CONT', - 'HDMI_ACR_CONT_DISABLE', 'HDMI_ACR_CONT_ENABLE', - 'HDMI_ACR_NOT_SEND', 'HDMI_ACR_N_MULTIPLE', - 'HDMI_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE', - 'HDMI_ACR_PKT_SEND', 'HDMI_ACR_SELECT', 'HDMI_ACR_SELECT_32K', - 'HDMI_ACR_SELECT_44K', 'HDMI_ACR_SELECT_48K', - 'HDMI_ACR_SELECT_HW', 'HDMI_ACR_SEND', 'HDMI_ACR_SOURCE', - 'HDMI_ACR_SOURCE_HW', 'HDMI_ACR_SOURCE_SW', - 'HDMI_AUDIO_DELAY_56CLK', 'HDMI_AUDIO_DELAY_58CLK', - 'HDMI_AUDIO_DELAY_DISABLE', 'HDMI_AUDIO_DELAY_EN', - 'HDMI_AUDIO_DELAY_RESERVED', 'HDMI_AUDIO_INFO_CONT', - 'HDMI_AUDIO_INFO_CONT_DISABLE', 'HDMI_AUDIO_INFO_CONT_ENABLE', - 'HDMI_AUDIO_INFO_NOT_SEND', 'HDMI_AUDIO_INFO_PKT_SEND', - 'HDMI_AUDIO_INFO_SEND', - 'HDMI_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT', - 'HDMI_BORROW_MODE', 'HDMI_CLOCK_CHANNEL_FREQ_EQUAL_TO_CHAR_RATE', - 'HDMI_CLOCK_CHANNEL_FREQ_QUARTER_TO_CHAR_RATE', - 'HDMI_CLOCK_CHANNEL_RATE', 'HDMI_DATA_SCRAMBLE_DISABLE', - 'HDMI_DATA_SCRAMBLE_EN', 'HDMI_DATA_SCRAMBLE_ENABLE', - 'HDMI_DEEP_COLOR_DEPTH', 'HDMI_DEEP_COLOR_DEPTH_24BPP', - 'HDMI_DEEP_COLOR_DEPTH_30BPP', 'HDMI_DEEP_COLOR_DEPTH_36BPP', - 'HDMI_DEEP_COLOR_DEPTH_48BPP', 'HDMI_DEFAULT_PAHSE', - 'HDMI_DEFAULT_PHASE_IS_0', 'HDMI_DEFAULT_PHASE_IS_1', - 'HDMI_ERROR_ACK', 'HDMI_ERROR_ACK_INT', 'HDMI_ERROR_MASK', - 'HDMI_ERROR_MASK_INT', 'HDMI_ERROR_NOT_ACK', - 'HDMI_ERROR_NOT_MASK', 'HDMI_EXTRA_NULL_PACKET_FILLED_DISABLE', - 'HDMI_EXTRA_NULL_PACKET_FILLED_ENABLE', 'HDMI_FRL', - 'HDMI_GC_AVMUTE', 'HDMI_GC_AVMUTE_CONT', - 'HDMI_GC_AVMUTE_CONT_DISABLE', 'HDMI_GC_AVMUTE_CONT_ENABLE', - 'HDMI_GC_AVMUTE_SET', 'HDMI_GC_AVMUTE_UNSET', 'HDMI_GC_CONT', - 'HDMI_GC_CONT_DISABLE', 'HDMI_GC_CONT_ENABLE', 'HDMI_GC_NOT_SEND', - 'HDMI_GC_PKT_SEND', 'HDMI_GC_SEND', 'HDMI_GENERIC_CONT', - 'HDMI_GENERIC_CONT_DISABLE', 'HDMI_GENERIC_CONT_ENABLE', - 'HDMI_GENERIC_NOT_SEND', 'HDMI_GENERIC_PKT_SEND', - 'HDMI_GENERIC_SEND', 'HDMI_ISRC_CONT', 'HDMI_ISRC_CONT_DISABLE', - 'HDMI_ISRC_CONT_ENABLE', 'HDMI_ISRC_NOT_SEND', - 'HDMI_ISRC_PKT_SEND', 'HDMI_ISRC_SEND', - 'HDMI_KEEPOUT_0_650PIX_AFTER_VSYNC', - 'HDMI_KEEPOUT_509_650PIX_AFTER_VSYNC', 'HDMI_KEEPOUT_MODE', - 'HDMI_METADATA_ENABLE', 'HDMI_METADATA_NOT_SEND', - 'HDMI_METADATA_PKT_SEND', 'HDMI_MPEG_INFO_CONT', - 'HDMI_MPEG_INFO_CONT_DISABLE', 'HDMI_MPEG_INFO_CONT_ENABLE', - 'HDMI_MPEG_INFO_NOT_SEND', 'HDMI_MPEG_INFO_PKT_SEND', - 'HDMI_MPEG_INFO_SEND', 'HDMI_NOT_SEND_MAX_AUDIO_PACKETS', - 'HDMI_NO_EXTRA_NULL_PACKET_FILLED', 'HDMI_NULL_NOT_SEND', - 'HDMI_NULL_PKT_SEND', 'HDMI_NULL_SEND', 'HDMI_PACKET_GEN_VERSION', - 'HDMI_PACKET_GEN_VERSION_NEW', 'HDMI_PACKET_GEN_VERSION_OLD', - 'HDMI_PACKET_LINE_REFERENCE', 'HDMI_PACKING_PHASE_OVERRIDE', - 'HDMI_PACKING_PHASE_SET_BY_HW', 'HDMI_PACKING_PHASE_SET_BY_SW', - 'HDMI_PKT_LINE_REF_OTGSOF', 'HDMI_PKT_LINE_REF_VSYNC', - 'HDMI_SEND_MAX_AUDIO_PACKETS', 'HDMI_STREAM_ENC_DB_DISABLE', - 'HDMI_STREAM_ENC_DB_DISABLE_CONTROL', 'HDMI_STREAM_ENC_DB_ENABLE', - 'HDMI_STREAM_ENC_DCCG', 'HDMI_STREAM_ENC_DISABLE', - 'HDMI_STREAM_ENC_DISPLAY_PIPE', 'HDMI_STREAM_ENC_DSC_MODE', - 'HDMI_STREAM_ENC_ENABLE', 'HDMI_STREAM_ENC_ENABLE_CONTROL', - 'HDMI_STREAM_ENC_HARDWARE', 'HDMI_STREAM_ENC_NOT_RESET', - 'HDMI_STREAM_ENC_NO_ERROR_OCCURRED', - 'HDMI_STREAM_ENC_ODM_COMBINE_MODE', - 'HDMI_STREAM_ENC_OVERFLOW_OCCURRED', - 'HDMI_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR', - 'HDMI_STREAM_ENC_OVERWRITE_LEVEL_SELECT', - 'HDMI_STREAM_ENC_PIXEL_ENCODING', 'HDMI_STREAM_ENC_PROGRAMMABLE', - 'HDMI_STREAM_ENC_READ_CLOCK_CONTROL', 'HDMI_STREAM_ENC_RESET', - 'HDMI_STREAM_ENC_RESET_CONTROL', 'HDMI_STREAM_ENC_STREAM_ACTIVE', - 'HDMI_STREAM_ENC_UNDERFLOW_OCCURRED', - 'HDMI_STREAM_ENC_VIDEO_STREAM_ACTIVE', - 'HDMI_STREAM_ENC_VIDEO_STREAM_NOT_ACTIVE', 'HDMI_TB_ENC_ACP_SEND', - 'HDMI_TB_ENC_ACR_AUDIO_PRIORITY', 'HDMI_TB_ENC_ACR_CONT', - 'HDMI_TB_ENC_ACR_N_MULTIPLE', 'HDMI_TB_ENC_ACR_SELECT', - 'HDMI_TB_ENC_ACR_SEND', 'HDMI_TB_ENC_ACR_SOURCE', - 'HDMI_TB_ENC_AUDIO_INFO_CONT', 'HDMI_TB_ENC_AUDIO_INFO_SEND', - 'HDMI_TB_ENC_CRC_SRC_SEL', 'HDMI_TB_ENC_CRC_TYPE', - 'HDMI_TB_ENC_DEEP_COLOR_DEPTH', 'HDMI_TB_ENC_DEFAULT_PAHSE', - 'HDMI_TB_ENC_DSC_MODE', 'HDMI_TB_ENC_ENABLE', - 'HDMI_TB_ENC_GC_AVMUTE', 'HDMI_TB_ENC_GC_AVMUTE_CONT', - 'HDMI_TB_ENC_GC_CONT', 'HDMI_TB_ENC_GC_SEND', - 'HDMI_TB_ENC_GENERIC_CONT', 'HDMI_TB_ENC_GENERIC_LOCK_DISABLE', - 'HDMI_TB_ENC_GENERIC_LOCK_EN', 'HDMI_TB_ENC_GENERIC_LOCK_ENABLE', - 'HDMI_TB_ENC_GENERIC_SEND', 'HDMI_TB_ENC_ISRC_CONT', - 'HDMI_TB_ENC_ISRC_SEND', 'HDMI_TB_ENC_METADATA_ENABLE', - 'HDMI_TB_ENC_PACKET_LINE_REFERENCE', 'HDMI_TB_ENC_PIXEL_ENCODING', - 'HDMI_TB_ENC_RESET', 'HDMI_TB_ENC_SYNC_PHASE', - 'HDMI_TMDS_OR_DP_8B10B', 'HDP_ENDIAN_8IN16', 'HDP_ENDIAN_8IN32', - 'HDP_ENDIAN_8IN64', 'HDP_ENDIAN_NONE', 'HPD_INT_CONTROL_ACK', - 'HPD_INT_CONTROL_ACK_0', 'HPD_INT_CONTROL_ACK_1', - 'HPD_INT_CONTROL_GEN_INT_ON_CON', - 'HPD_INT_CONTROL_GEN_INT_ON_DISCON', 'HPD_INT_CONTROL_POLARITY', - 'HPD_INT_CONTROL_RX_INT_ACK', 'HPD_INT_CONTROL_RX_INT_ACK_0', - 'HPD_INT_CONTROL_RX_INT_ACK_1', 'HPO_SRC0', 'HPO_SRC_RESERVED', - 'HPO_TOP_CLOCK_GATING_DIS', 'HPO_TOP_CLOCK_GATING_DISABLE', - 'HPO_TOP_CLOCK_GATING_EN', - 'HPO_TOP_FEATURE_GATED_DISPCLK_IN_HDMISTREAMENC0', - 'HPO_TOP_FEATURE_GATED_HDMICHARCLK0', - 'HPO_TOP_FEATURE_GATED_HDMISTREAMCLK0', - 'HPO_TOP_FEATURE_GATED_SOCCLK_IN_HDMISTREAMENC0', - 'HPO_TOP_PERMANENT_DISPCLK', 'HPO_TOP_PERMANENT_HDMICHARCLK0', - 'HPO_TOP_PERMANENT_HDMISTREAMCLK0', 'HPO_TOP_PERMANENT_SOCCLK', - 'HPO_TOP_REGISTER_GATED_DISPCLK', - 'HPO_TOP_REGISTER_GATED_HDMICHARCLK0', - 'HPO_TOP_REGISTER_GATED_HDMISTREAMCLK0', 'HPO_TOP_TEST_CLK_SEL', - 'HPO_TOP_TEST_CLOCK_RESERVED', 'HS_GS', 'HS_STAGE_OFF', - 'HS_STAGE_ON', 'HUBP_BLANK_EN', 'HUBP_BLANK_SW_ASSERT', - 'HUBP_BLANK_SW_DEASSERT', 'HUBP_IN_ACTIVE', 'HUBP_IN_BLANK', - 'HUBP_IN_VBLANK', 'HUBP_MEASURE_WIN_MODE_DCFCLK', - 'HUBP_MEASURE_WIN_MODE_DCFCLK_0', - 'HUBP_MEASURE_WIN_MODE_DCFCLK_1', - 'HUBP_MEASURE_WIN_MODE_DCFCLK_2', - 'HUBP_MEASURE_WIN_MODE_DCFCLK_3', 'HUBP_NO_OUTSTANDING_REQ', - 'HUBP_SOFT_RESET', 'HUBP_SOFT_RESET_OFF', 'HUBP_SOFT_RESET_ON', - 'HUBP_TTU_DISABLE', 'HUBP_TTU_DISABLED', 'HUBP_TTU_ENABLED', - 'HUBP_VREADY_AT_OR_AFTER_VSYNC', 'HUBP_VTG_SEL', - 'HW_MIRRORING_DISABLE', 'HW_MIRRORING_ENABLE', 'H_MIRROR_EN', - 'Hdp_SurfaceEndian', 'ID_STREAM_DISABLE_ACKED', - 'ID_STREAM_DISABLE_NO_ACK', 'IHC_INTERRUPT_DEST', - 'IHC_INTERRUPT_LINE_STATUS', 'IH_CLIENT_TYPE', - 'IH_CLIENT_TYPE_RESERVED', 'IH_GFX_VMID_CLIENT', - 'IH_INTERFACE_TYPE', 'IH_LEGACY_INTERFACE', 'IH_MM_VMID_CLIENT', - 'IH_MULTI_VMID_CLIENT', 'IH_PERF_SEL', - 'IH_PERF_SEL_BIF_LINE0_FALLING', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF0', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF1', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF10', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF11', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF12', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF13', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF14', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF15', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF2', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF3', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF4', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF5', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF6', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF7', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF8', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF9', - 'IH_PERF_SEL_BIF_LINE0_RISING', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF0', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF1', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF10', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF11', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF12', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF13', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF14', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF15', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF2', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF3', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF4', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF5', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF6', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF7', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF8', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF9', - 'IH_PERF_SEL_BUFFER_FIFO_FULL', 'IH_PERF_SEL_BUFFER_IDLE', - 'IH_PERF_SEL_CLIENT0_INT', 'IH_PERF_SEL_CLIENT10_INT', - 'IH_PERF_SEL_CLIENT11_INT', 'IH_PERF_SEL_CLIENT12_INT', - 'IH_PERF_SEL_CLIENT13_INT', 'IH_PERF_SEL_CLIENT14_INT', - 'IH_PERF_SEL_CLIENT15_INT', 'IH_PERF_SEL_CLIENT16_INT', - 'IH_PERF_SEL_CLIENT17_INT', 'IH_PERF_SEL_CLIENT18_INT', - 'IH_PERF_SEL_CLIENT19_INT', 'IH_PERF_SEL_CLIENT1_INT', - 'IH_PERF_SEL_CLIENT20_INT', 'IH_PERF_SEL_CLIENT21_INT', - 'IH_PERF_SEL_CLIENT22_INT', 'IH_PERF_SEL_CLIENT23_INT', - 'IH_PERF_SEL_CLIENT24_INT', 'IH_PERF_SEL_CLIENT25_INT', - 'IH_PERF_SEL_CLIENT26_INT', 'IH_PERF_SEL_CLIENT27_INT', - 'IH_PERF_SEL_CLIENT28_INT', 'IH_PERF_SEL_CLIENT29_INT', - 'IH_PERF_SEL_CLIENT2_INT', 'IH_PERF_SEL_CLIENT30_INT', - 'IH_PERF_SEL_CLIENT31_INT', 'IH_PERF_SEL_CLIENT3_INT', - 'IH_PERF_SEL_CLIENT4_INT', 'IH_PERF_SEL_CLIENT5_INT', - 'IH_PERF_SEL_CLIENT6_INT', 'IH_PERF_SEL_CLIENT7_INT', - 'IH_PERF_SEL_CLIENT8_INT', 'IH_PERF_SEL_CLIENT9_INT', - 'IH_PERF_SEL_CLIENT_CREDIT_ERROR', 'IH_PERF_SEL_COOKIE_REC_ERROR', - 'IH_PERF_SEL_CYCLE', 'IH_PERF_SEL_IDLE', 'IH_PERF_SEL_INPUT_IDLE', - 'IH_PERF_SEL_MC_WR_CLEAN_PENDING', - 'IH_PERF_SEL_MC_WR_CLEAN_STALL', 'IH_PERF_SEL_MC_WR_COUNT', - 'IH_PERF_SEL_MC_WR_IDLE', 'IH_PERF_SEL_MC_WR_STALL', - 'IH_PERF_SEL_RB0_FULL', 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF0', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF1', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF10', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF11', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF12', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF13', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF14', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF15', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF2', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF3', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF4', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF5', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF6', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF7', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF8', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF9', 'IH_PERF_SEL_RB0_FULL_VF0', - 'IH_PERF_SEL_RB0_FULL_VF1', 'IH_PERF_SEL_RB0_FULL_VF10', - 'IH_PERF_SEL_RB0_FULL_VF11', 'IH_PERF_SEL_RB0_FULL_VF12', - 'IH_PERF_SEL_RB0_FULL_VF13', 'IH_PERF_SEL_RB0_FULL_VF14', - 'IH_PERF_SEL_RB0_FULL_VF15', 'IH_PERF_SEL_RB0_FULL_VF2', - 'IH_PERF_SEL_RB0_FULL_VF3', 'IH_PERF_SEL_RB0_FULL_VF4', - 'IH_PERF_SEL_RB0_FULL_VF5', 'IH_PERF_SEL_RB0_FULL_VF6', - 'IH_PERF_SEL_RB0_FULL_VF7', 'IH_PERF_SEL_RB0_FULL_VF8', - 'IH_PERF_SEL_RB0_FULL_VF9', 'IH_PERF_SEL_RB0_LOAD_RPTR', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF0', 'IH_PERF_SEL_RB0_LOAD_RPTR_VF1', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF10', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF11', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF12', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF13', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF14', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF15', 'IH_PERF_SEL_RB0_LOAD_RPTR_VF2', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF3', 'IH_PERF_SEL_RB0_LOAD_RPTR_VF4', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF5', 'IH_PERF_SEL_RB0_LOAD_RPTR_VF6', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF7', 'IH_PERF_SEL_RB0_LOAD_RPTR_VF8', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF9', 'IH_PERF_SEL_RB0_OVERFLOW', - 'IH_PERF_SEL_RB0_OVERFLOW_VF0', 'IH_PERF_SEL_RB0_OVERFLOW_VF1', - 'IH_PERF_SEL_RB0_OVERFLOW_VF10', 'IH_PERF_SEL_RB0_OVERFLOW_VF11', - 'IH_PERF_SEL_RB0_OVERFLOW_VF12', 'IH_PERF_SEL_RB0_OVERFLOW_VF13', - 'IH_PERF_SEL_RB0_OVERFLOW_VF14', 'IH_PERF_SEL_RB0_OVERFLOW_VF15', - 'IH_PERF_SEL_RB0_OVERFLOW_VF2', 'IH_PERF_SEL_RB0_OVERFLOW_VF3', - 'IH_PERF_SEL_RB0_OVERFLOW_VF4', 'IH_PERF_SEL_RB0_OVERFLOW_VF5', - 'IH_PERF_SEL_RB0_OVERFLOW_VF6', 'IH_PERF_SEL_RB0_OVERFLOW_VF7', - 'IH_PERF_SEL_RB0_OVERFLOW_VF8', 'IH_PERF_SEL_RB0_OVERFLOW_VF9', - 'IH_PERF_SEL_RB0_RPTR_WRAP', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF0', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF1', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF10', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF11', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF12', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF13', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF14', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF15', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF2', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF3', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF4', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF5', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF6', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF7', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF8', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF9', 'IH_PERF_SEL_RB0_WPTR_WRAP', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF0', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF1', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF10', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF11', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF12', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF13', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF14', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF15', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF2', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF3', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF4', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF5', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF6', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF7', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF8', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF9', 'IH_PERF_SEL_RB0_WPTR_WRITEBACK', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF0', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF1', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF10', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF11', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF12', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF13', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF14', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF15', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF2', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF3', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF4', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF5', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF6', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF7', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF8', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF9', 'IH_PERF_SEL_RB1_FULL', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF0', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF1', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF10', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF11', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF12', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF13', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF14', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF15', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF2', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF3', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF4', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF5', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF6', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF7', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF8', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF9', 'IH_PERF_SEL_RB1_FULL_VF0', - 'IH_PERF_SEL_RB1_FULL_VF1', 'IH_PERF_SEL_RB1_FULL_VF10', - 'IH_PERF_SEL_RB1_FULL_VF11', 'IH_PERF_SEL_RB1_FULL_VF12', - 'IH_PERF_SEL_RB1_FULL_VF13', 'IH_PERF_SEL_RB1_FULL_VF14', - 'IH_PERF_SEL_RB1_FULL_VF15', 'IH_PERF_SEL_RB1_FULL_VF2', - 'IH_PERF_SEL_RB1_FULL_VF3', 'IH_PERF_SEL_RB1_FULL_VF4', - 'IH_PERF_SEL_RB1_FULL_VF5', 'IH_PERF_SEL_RB1_FULL_VF6', - 'IH_PERF_SEL_RB1_FULL_VF7', 'IH_PERF_SEL_RB1_FULL_VF8', - 'IH_PERF_SEL_RB1_FULL_VF9', 'IH_PERF_SEL_RB1_LOAD_RPTR', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF0', 'IH_PERF_SEL_RB1_LOAD_RPTR_VF1', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF10', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF11', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF12', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF13', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF14', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF15', 'IH_PERF_SEL_RB1_LOAD_RPTR_VF2', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF3', 'IH_PERF_SEL_RB1_LOAD_RPTR_VF4', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF5', 'IH_PERF_SEL_RB1_LOAD_RPTR_VF6', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF7', 'IH_PERF_SEL_RB1_LOAD_RPTR_VF8', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF9', 'IH_PERF_SEL_RB1_OVERFLOW', - 'IH_PERF_SEL_RB1_OVERFLOW_VF0', 'IH_PERF_SEL_RB1_OVERFLOW_VF1', - 'IH_PERF_SEL_RB1_OVERFLOW_VF10', 'IH_PERF_SEL_RB1_OVERFLOW_VF11', - 'IH_PERF_SEL_RB1_OVERFLOW_VF12', 'IH_PERF_SEL_RB1_OVERFLOW_VF13', - 'IH_PERF_SEL_RB1_OVERFLOW_VF14', 'IH_PERF_SEL_RB1_OVERFLOW_VF15', - 'IH_PERF_SEL_RB1_OVERFLOW_VF2', 'IH_PERF_SEL_RB1_OVERFLOW_VF3', - 'IH_PERF_SEL_RB1_OVERFLOW_VF4', 'IH_PERF_SEL_RB1_OVERFLOW_VF5', - 'IH_PERF_SEL_RB1_OVERFLOW_VF6', 'IH_PERF_SEL_RB1_OVERFLOW_VF7', - 'IH_PERF_SEL_RB1_OVERFLOW_VF8', 'IH_PERF_SEL_RB1_OVERFLOW_VF9', - 'IH_PERF_SEL_RB1_RPTR_WRAP', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF0', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF1', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF10', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF11', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF12', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF13', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF14', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF15', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF2', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF3', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF4', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF5', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF6', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF7', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF8', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF9', 'IH_PERF_SEL_RB1_WPTR_WRAP', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF0', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF1', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF10', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF11', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF12', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF13', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF14', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF15', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF2', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF3', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF4', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF5', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF6', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF7', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF8', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF9', 'IH_PERF_SEL_RB2_FULL', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF0', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF1', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF10', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF11', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF12', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF13', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF14', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF15', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF2', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF3', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF4', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF5', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF6', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF7', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF8', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF9', 'IH_PERF_SEL_RB2_FULL_VF0', - 'IH_PERF_SEL_RB2_FULL_VF1', 'IH_PERF_SEL_RB2_FULL_VF10', - 'IH_PERF_SEL_RB2_FULL_VF11', 'IH_PERF_SEL_RB2_FULL_VF12', - 'IH_PERF_SEL_RB2_FULL_VF13', 'IH_PERF_SEL_RB2_FULL_VF14', - 'IH_PERF_SEL_RB2_FULL_VF15', 'IH_PERF_SEL_RB2_FULL_VF2', - 'IH_PERF_SEL_RB2_FULL_VF3', 'IH_PERF_SEL_RB2_FULL_VF4', - 'IH_PERF_SEL_RB2_FULL_VF5', 'IH_PERF_SEL_RB2_FULL_VF6', - 'IH_PERF_SEL_RB2_FULL_VF7', 'IH_PERF_SEL_RB2_FULL_VF8', - 'IH_PERF_SEL_RB2_FULL_VF9', 'IH_PERF_SEL_RB2_LOAD_RPTR', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF0', 'IH_PERF_SEL_RB2_LOAD_RPTR_VF1', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF10', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF11', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF12', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF13', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF14', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF15', 'IH_PERF_SEL_RB2_LOAD_RPTR_VF2', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF3', 'IH_PERF_SEL_RB2_LOAD_RPTR_VF4', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF5', 'IH_PERF_SEL_RB2_LOAD_RPTR_VF6', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF7', 'IH_PERF_SEL_RB2_LOAD_RPTR_VF8', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF9', 'IH_PERF_SEL_RB2_OVERFLOW', - 'IH_PERF_SEL_RB2_OVERFLOW_VF0', 'IH_PERF_SEL_RB2_OVERFLOW_VF1', - 'IH_PERF_SEL_RB2_OVERFLOW_VF10', 'IH_PERF_SEL_RB2_OVERFLOW_VF11', - 'IH_PERF_SEL_RB2_OVERFLOW_VF12', 'IH_PERF_SEL_RB2_OVERFLOW_VF13', - 'IH_PERF_SEL_RB2_OVERFLOW_VF14', 'IH_PERF_SEL_RB2_OVERFLOW_VF15', - 'IH_PERF_SEL_RB2_OVERFLOW_VF2', 'IH_PERF_SEL_RB2_OVERFLOW_VF3', - 'IH_PERF_SEL_RB2_OVERFLOW_VF4', 'IH_PERF_SEL_RB2_OVERFLOW_VF5', - 'IH_PERF_SEL_RB2_OVERFLOW_VF6', 'IH_PERF_SEL_RB2_OVERFLOW_VF7', - 'IH_PERF_SEL_RB2_OVERFLOW_VF8', 'IH_PERF_SEL_RB2_OVERFLOW_VF9', - 'IH_PERF_SEL_RB2_RPTR_WRAP', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF0', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF1', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF10', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF11', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF12', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF13', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF14', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF15', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF2', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF3', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF4', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF5', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF6', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF7', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF8', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF9', 'IH_PERF_SEL_RB2_WPTR_WRAP', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF0', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF1', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF10', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF11', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF12', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF13', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF14', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF15', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF2', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF3', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF4', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF5', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF6', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF7', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF8', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF9', 'IH_PERF_SEL_SELF_IV_VALID', - 'IH_PERF_SEL_STORM_CLIENT_INT_DROP', - 'IH_REGISTER_WRITE_INTERFACE', 'IH_RING_ID', - 'IH_RING_ID_INTERRUPT', 'IH_RING_ID_REQUEST', - 'IH_RING_ID_RESERVED', 'IH_RING_ID_TRANSLATION', - 'IH_VF_RB_SELECT', 'IH_VF_RB_SELECT_CLIENT_FCN_ID', - 'IH_VF_RB_SELECT_IH_FCN_ID', 'IH_VF_RB_SELECT_PF', - 'IH_VF_RB_SELECT_RESERVED', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_IS_BUSY', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_NOT_BUSY', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_IMMEDIATE_RESPONSE_VALID', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_NO_IMMEDIATE_RESPONSE_VALID', - 'INPUT_COVERAGE', 'INPUT_DEPTH_COVERAGE', 'INPUT_FIFO_ERROR_TYPE', - 'INPUT_INNER_COVERAGE', 'INST_ID_ECC_INTERRUPT_MSG', - 'INST_ID_HOST_REG_TRAP_MSG', 'INST_ID_HW_TRAP', - 'INST_ID_HW_TRAP_GET_TBA', 'INST_ID_KILL_SEQ', - 'INST_ID_PRIV_START', 'INST_ID_SPI_WREXEC', - 'INST_ID_TTRACE_NEW_PC_MSG', 'INTERRUPT_LINE_ASSERTED', - 'INTERRUPT_LINE_NOT_ASSERTED', 'INTERRUPT_SENT_TO_DMCUB', - 'INTERRUPT_SENT_TO_IH', 'INT_DISABLED', 'INT_ENABLED', - 'INT_LEVEL', 'INT_MASK', 'INT_PULSE', 'INVALID_REG_ACCESS_TYPE', - 'IQ_DEQUEUE_RETRY', 'IQ_INTR_TYPE_IB', 'IQ_INTR_TYPE_MQD', - 'IQ_INTR_TYPE_PQ', 'IQ_OFFLOAD_RETRY', 'IQ_QUEUE_SLEEP', - 'IQ_SCH_WAVE_MSG', 'IQ_SEM_REARM', 'JITTER_REMOVE_DISABLE', - 'LATE_Z', 'LB_ALPHA_DISABLE', 'LB_ALPHA_EN', 'LB_ALPHA_ENABLE', - 'LB_INTERLEAVE_DISABLE', 'LB_INTERLEAVE_EN', - 'LB_INTERLEAVE_ENABLE', 'LB_MEMORY_CONFIG', 'LB_MEMORY_CONFIG_0', - 'LB_MEMORY_CONFIG_1', 'LB_MEMORY_CONFIG_2', 'LB_MEMORY_CONFIG_3', - 'LEGACY_PIPE_INTERLEAVE', 'LEGACY_PIPE_INTERLEAVE_256B', - 'LEGACY_PIPE_INTERLEAVE_512B', 'LINESTRIP', 'LOOSE_PACK', - 'LSDMA_PERF_SEL', 'LSDMA_PERF_SEL_ATCL2_FREE', - 'LSDMA_PERF_SEL_ATCL2_INVREQ_FLUSH', - 'LSDMA_PERF_SEL_ATCL2_INVREQ_NFLUSH', - 'LSDMA_PERF_SEL_ATCL2_RET_ACK', 'LSDMA_PERF_SEL_ATCL2_RET_XNACK', - 'LSDMA_PERF_SEL_ATOMIC_MMHUB_WR_REQ', - 'LSDMA_PERF_SEL_ATOMIC_MMHUB_WR_RET', - 'LSDMA_PERF_SEL_CE_AFIFO_FULL', 'LSDMA_PERF_SEL_CE_BUSY', - 'LSDMA_PERF_SEL_CE_BUSY_END', 'LSDMA_PERF_SEL_CE_BUSY_START', - 'LSDMA_PERF_SEL_CE_DST_IDLE', 'LSDMA_PERF_SEL_CE_INFO1_FULL', - 'LSDMA_PERF_SEL_CE_INFO_FULL', 'LSDMA_PERF_SEL_CE_IN_IDLE', - 'LSDMA_PERF_SEL_CE_L1_STALL', 'LSDMA_PERF_SEL_CE_L1_WR_VLD', - 'LSDMA_PERF_SEL_CE_MMHUB_RDREQ_SEND', - 'LSDMA_PERF_SEL_CE_MMHUB_WRREQ_SEND', - 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_RD_REQ', - 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_RD_RET', - 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_WR_REQ', - 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_WR_RET', - 'LSDMA_PERF_SEL_CE_OUT_IDLE', 'LSDMA_PERF_SEL_CE_RD_STALL', - 'LSDMA_PERF_SEL_CE_RREQ_IDLE', 'LSDMA_PERF_SEL_CE_SPLIT_IDLE', - 'LSDMA_PERF_SEL_CE_WREQ_IDLE', 'LSDMA_PERF_SEL_CE_WR_IDLE', - 'LSDMA_PERF_SEL_CE_WR_STALL', 'LSDMA_PERF_SEL_CMD_OP_END', - 'LSDMA_PERF_SEL_CMD_OP_MATCH', 'LSDMA_PERF_SEL_CMD_OP_START', - 'LSDMA_PERF_SEL_CTX_CHANGE', - 'LSDMA_PERF_SEL_CTX_CHANGE_EXCEPTION', - 'LSDMA_PERF_SEL_CTX_CHANGE_EXPIRED', 'LSDMA_PERF_SEL_CYCLE', - 'LSDMA_PERF_SEL_DMA_L1_RD_SEND', 'LSDMA_PERF_SEL_DMA_L1_WR_SEND', - 'LSDMA_PERF_SEL_DMA_MC_RD_SEND', 'LSDMA_PERF_SEL_DMA_MC_WR_SEND', - 'LSDMA_PERF_SEL_DOORBELL', 'LSDMA_PERF_SEL_DRAM_ECC', - 'LSDMA_PERF_SEL_EX_IDLE', - 'LSDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 'LSDMA_PERF_SEL_F32_L1_WR_VLD', - 'LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER', - 'LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER_END', - 'LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER_START', - 'LSDMA_PERF_SEL_GFX_SELECT', 'LSDMA_PERF_SEL_IB_CMD_FULL', - 'LSDMA_PERF_SEL_IB_CMD_IDLE', 'LSDMA_PERF_SEL_IB_MMHUB_RD_REQ', - 'LSDMA_PERF_SEL_IB_MMHUB_RD_RET', 'LSDMA_PERF_SEL_IDLE', - 'LSDMA_PERF_SEL_INT_IDLE', 'LSDMA_PERF_SEL_INT_REQ_COUNT', - 'LSDMA_PERF_SEL_INT_REQ_STALL', - 'LSDMA_PERF_SEL_INT_RESP_ACCEPTED', - 'LSDMA_PERF_SEL_INT_RESP_RETRY', - 'LSDMA_PERF_SEL_IS_INVREQ_ADDR_RD', - 'LSDMA_PERF_SEL_IS_INVREQ_ADDR_WR', - 'LSDMA_PERF_SEL_L1_INV_MIDDLE', 'LSDMA_PERF_SEL_L1_RDL2_IDLE', - 'LSDMA_PERF_SEL_L1_RDMC_IDLE', 'LSDMA_PERF_SEL_L1_RD_FIFO_IDLE', - 'LSDMA_PERF_SEL_L1_RD_INV_EN', 'LSDMA_PERF_SEL_L1_RD_INV_IDLE', - 'LSDMA_PERF_SEL_L1_RD_WAIT_INVADR', - 'LSDMA_PERF_SEL_L1_RD_XNACK_TIMEOUT', - 'LSDMA_PERF_SEL_L1_WRL2_IDLE', 'LSDMA_PERF_SEL_L1_WRMC_IDLE', - 'LSDMA_PERF_SEL_L1_WR_FIFO_IDLE', 'LSDMA_PERF_SEL_L1_WR_INV_EN', - 'LSDMA_PERF_SEL_L1_WR_INV_IDLE', - 'LSDMA_PERF_SEL_L1_WR_WAIT_INVADR', - 'LSDMA_PERF_SEL_L1_WR_XNACK_TIMEOUT', - 'LSDMA_PERF_SEL_MC_RD_COUNT', 'LSDMA_PERF_SEL_MC_RD_IDLE', - 'LSDMA_PERF_SEL_MC_RD_NO_POLL_IDLE', - 'LSDMA_PERF_SEL_MC_RD_RET_STALL', 'LSDMA_PERF_SEL_MC_WR_COUNT', - 'LSDMA_PERF_SEL_MC_WR_IDLE', - 'LSDMA_PERF_SEL_MMHUB_CE_RDRET_VALID', - 'LSDMA_PERF_SEL_MMHUB_CE_WRRET_VALID', - 'LSDMA_PERF_SEL_NACK_GEN_ERR', 'LSDMA_PERF_SEL_NUM_PACKET', - 'LSDMA_PERF_SEL_PAGE_SELECT', 'LSDMA_PERF_SEL_RB_CMD_FULL', - 'LSDMA_PERF_SEL_RB_CMD_IDLE', 'LSDMA_PERF_SEL_RB_EMPTY', - 'LSDMA_PERF_SEL_RB_FULL', 'LSDMA_PERF_SEL_RB_MMHUB_RD_REQ', - 'LSDMA_PERF_SEL_RB_MMHUB_RD_RET', 'LSDMA_PERF_SEL_RB_RPTR_WB', - 'LSDMA_PERF_SEL_RB_RPTR_WRAP', 'LSDMA_PERF_SEL_RB_WPTR_POLL_READ', - 'LSDMA_PERF_SEL_RB_WPTR_WRAP', 'LSDMA_PERF_SEL_RD_BA_RTR', - 'LSDMA_PERF_SEL_REG_IDLE', 'LSDMA_PERF_SEL_RLC0_SELECT', - 'LSDMA_PERF_SEL_RLC1_SELECT', 'LSDMA_PERF_SEL_SDMA_ATCL2_SEND', - 'LSDMA_PERF_SEL_SDMA_INVACK_FLUSH', - 'LSDMA_PERF_SEL_SDMA_INVACK_NFLUSH', 'LSDMA_PERF_SEL_SEM_IDLE', - 'LSDMA_PERF_SEL_SEM_REQ_COUNT', 'LSDMA_PERF_SEL_SEM_REQ_STALL', - 'LSDMA_PERF_SEL_SEM_RESP_FAIL', - 'LSDMA_PERF_SEL_SEM_RESP_INCOMPLETE', - 'LSDMA_PERF_SEL_SEM_RESP_PASS', 'LSDMA_PERF_SEL_SRBM_REG_SEND', - 'LSDMA_PERF_SEL_UTCL1_UTCL2_REQ', - 'LSDMA_PERF_SEL_UTCL1_UTCL2_RET', - 'LSDMA_PERF_SEL_WPTR_MMHUB_RD_REQ', - 'LSDMA_PERF_SEL_WPTR_MMHUB_RD_RET', 'LSDMA_PERF_SEL_WR_BA_RTR', - 'LS_STAGE_OFF', 'LS_STAGE_ON', 'LUT_2CFG_MEMORY_A', - 'LUT_2CFG_MEMORY_B', 'LUT_2CFG_NO_MEMORY', 'LUT_2_MODE_BYPASS', - 'LUT_2_MODE_RAMA_LUT', 'LUT_2_MODE_RAMB_LUT', 'LUT_4CFG_MEMORY_A', - 'LUT_4CFG_MEMORY_B', 'LUT_4CFG_NO_MEMORY', 'LUT_4CFG_ROM_A', - 'LUT_4CFG_ROM_B', 'LUT_4_MODE_BYPASS', 'LUT_4_MODE_RAMA_LUT', - 'LUT_4_MODE_RAMB_LUT', 'LUT_4_MODE_ROMA_LUT', - 'LUT_4_MODE_ROMB_LUT', 'LVTMA_RANDOM_PATTERN_SEED_ALL_PIXELS', - 'LVTMA_RANDOM_PATTERN_SEED_ONLY_DE_HIGH', - 'LVTMA_RANDOM_PATTERN_SEED_RAN_PAT', - 'MASTER_UPDATE_LOCK_DB_FIELD_BOTH', - 'MASTER_UPDATE_LOCK_DB_FIELD_BOTTOM', - 'MASTER_UPDATE_LOCK_DB_FIELD_RESERVED', - 'MASTER_UPDATE_LOCK_DB_FIELD_TOP', - 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_BOTH', - 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_LEFT', - 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_RESERVED', - 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_RIGHT', - 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK', - 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_FALSE', - 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_TRUE', - 'MASTER_UPDATE_LOCK_SEL', 'MASTER_UPDATE_LOCK_SEL_0', - 'MASTER_UPDATE_LOCK_SEL_1', 'MASTER_UPDATE_LOCK_SEL_2', - 'MASTER_UPDATE_LOCK_SEL_3', 'MASTER_UPDATE_LOCK_SEL_RESERVED4', - 'MASTER_UPDATE_LOCK_SEL_RESERVED5', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTH', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTTOM', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_RESERVED', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_TOP', - 'MEM_ARB_MODE_AGE', 'MEM_ARB_MODE_BOTH', 'MEM_ARB_MODE_FIXED', - 'MEM_ARB_MODE_WEIGHT', 'MEM_POWER_DIS_MODE_DISABLE', - 'MEM_POWER_DIS_MODE_ENABLE', 'MEM_POWER_FORCE_MODE_DEEP_SLEEP', - 'MEM_POWER_FORCE_MODE_LIGHT_SLEEP', 'MEM_POWER_FORCE_MODE_OFF', - 'MEM_POWER_FORCE_MODE_SHUT_DOWN', 'MEM_POWER_STATUS_DEEP_SLEEP', - 'MEM_POWER_STATUS_LIGHT_SLEEP', 'MEM_POWER_STATUS_ON', - 'MEM_POWER_STATUS_SHUT_DOWN', 'MEM_PWR_DIS_CTRL', - 'MEM_PWR_DIS_MODE', 'MEM_PWR_FORCE_CTRL', 'MEM_PWR_FORCE_CTRL2', - 'MEM_PWR_FORCE_MODE', 'MEM_PWR_SEL_CTRL', 'MEM_PWR_SEL_CTRL2', - 'MEM_PWR_STATUS', 'METADATA_HUBP_SEL', 'METADATA_HUBP_SEL_0', - 'METADATA_HUBP_SEL_1', 'METADATA_HUBP_SEL_2', - 'METADATA_HUBP_SEL_3', 'METADATA_HUBP_SEL_RESERVED', - 'METADATA_STREAM_DP', 'METADATA_STREAM_DVE', - 'METADATA_STREAM_TYPE_SEL', 'META_CHUNK_SIZE', - 'META_CHUNK_SIZE_1KB', 'META_CHUNK_SIZE_2KB', - 'META_CHUNK_SIZE_4KB', 'META_CHUNK_SIZE_8KB', 'META_LINEAR', - 'META_SURF_LINEAR', 'META_SURF_TILED', 'ME_ID0', 'ME_ID1', - 'ME_ID2', 'ME_ID3', 'MICROSECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK', - 'MICROSECOND_TIME_BASE_CLOCK_IS_XTALIN', - 'MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL', - 'MILLISECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK', - 'MILLISECOND_TIME_BASE_CLOCK_IS_XTALIN', - 'MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL', 'MIN_CHUNK_SIZE', - 'MIN_CHUNK_SIZE_1024B', 'MIN_CHUNK_SIZE_256B', - 'MIN_CHUNK_SIZE_512B', 'MIN_META_CHUNK_SIZE', - 'MIN_META_CHUNK_SIZE_128B', 'MIN_META_CHUNK_SIZE_256B', - 'MIN_META_CHUNK_SIZE_64B', 'MONO_10LSB', 'MONO_10MSB', - 'MONO_12LSB', 'MONO_12MSB', 'MONO_16', 'MONO_2BIT', 'MONO_8', - 'MPCC_BG_COLOR_BPC', 'MPCC_BG_COLOR_BPC_10bit', - 'MPCC_BG_COLOR_BPC_11bit', 'MPCC_BG_COLOR_BPC_12bit', - 'MPCC_BG_COLOR_BPC_8bit', 'MPCC_BG_COLOR_BPC_9bit', - 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY', - 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_FALSE', - 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_TRUE', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_GLOBAL_ALPHA', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_UNUSED', - 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE', - 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_FALSE', - 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_TRUE', - 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE', - 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE_0', - 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE_1', 'MPCC_CONTROL_MPCC_MODE', - 'MPCC_CONTROL_MPCC_MODE_BYPASS', - 'MPCC_CONTROL_MPCC_MODE_TOP_BOT_BLENDING', - 'MPCC_CONTROL_MPCC_MODE_TOP_LAYER_ONLY', - 'MPCC_CONTROL_MPCC_MODE_TOP_LAYER_PASSTHROUGH', - 'MPCC_GAMUT_REMAP_COEF_FORMAT_ENUM', - 'MPCC_GAMUT_REMAP_COEF_FORMAT_S2_13', - 'MPCC_GAMUT_REMAP_COEF_FORMAT_S3_12', 'MPCC_GAMUT_REMAP_MODE_0', - 'MPCC_GAMUT_REMAP_MODE_1', 'MPCC_GAMUT_REMAP_MODE_2', - 'MPCC_GAMUT_REMAP_MODE_ENUM', 'MPCC_GAMUT_REMAP_MODE_RSV', - 'MPCC_MCM_3DLUT_17CUBE', 'MPCC_MCM_3DLUT_30BIT', - 'MPCC_MCM_3DLUT_30BIT_ENUM', 'MPCC_MCM_3DLUT_36BIT', - 'MPCC_MCM_3DLUT_9CUBE', 'MPCC_MCM_3DLUT_RAM_SEL', - 'MPCC_MCM_3DLUT_SIZE_ENUM', 'MPCC_MCM_GAMMA_LUT_BYPASS', - 'MPCC_MCM_GAMMA_LUT_DISABLE_PWL', 'MPCC_MCM_GAMMA_LUT_ENABLE_PWL', - 'MPCC_MCM_GAMMA_LUT_MODE_ENUM', - 'MPCC_MCM_GAMMA_LUT_PWL_DISABLE_ENUM', 'MPCC_MCM_GAMMA_LUT_RAMA', - 'MPCC_MCM_GAMMA_LUT_RAMB', 'MPCC_MCM_GAMMA_LUT_RAM_LUT', - 'MPCC_MCM_GAMMA_LUT_RESERVED_1', 'MPCC_MCM_GAMMA_LUT_RESERVED_3', - 'MPCC_MCM_GAMMA_LUT_SEL_ENUM', 'MPCC_MCM_LUT_2_MODE_BYPASS', - 'MPCC_MCM_LUT_2_MODE_ENUM', 'MPCC_MCM_LUT_2_MODE_RAMA_LUT', - 'MPCC_MCM_LUT_2_MODE_RAMB_LUT', 'MPCC_MCM_LUT_ALL_USE_R', - 'MPCC_MCM_LUT_BLUE_LUT', 'MPCC_MCM_LUT_CONFIG_MODE', - 'MPCC_MCM_LUT_DIFFERENT_RGB', 'MPCC_MCM_LUT_DISABLE_DEBUG', - 'MPCC_MCM_LUT_ENABLE_DEBUG', 'MPCC_MCM_LUT_GREEN_LUT', - 'MPCC_MCM_LUT_NUM_SEG', 'MPCC_MCM_LUT_RAMA_ACCESS', - 'MPCC_MCM_LUT_RAMB_ACCESS', 'MPCC_MCM_LUT_RAM_SEL', - 'MPCC_MCM_LUT_READ_COLOR_SEL', 'MPCC_MCM_LUT_READ_DBG', - 'MPCC_MCM_LUT_RED_LUT', 'MPCC_MCM_LUT_SEGMENTS_1', - 'MPCC_MCM_LUT_SEGMENTS_128', 'MPCC_MCM_LUT_SEGMENTS_16', - 'MPCC_MCM_LUT_SEGMENTS_2', 'MPCC_MCM_LUT_SEGMENTS_32', - 'MPCC_MCM_LUT_SEGMENTS_4', 'MPCC_MCM_LUT_SEGMENTS_64', - 'MPCC_MCM_LUT_SEGMENTS_8', 'MPCC_MCM_MEM_PWR_FORCE_DIS', - 'MPCC_MCM_MEM_PWR_FORCE_DS', 'MPCC_MCM_MEM_PWR_FORCE_ENUM', - 'MPCC_MCM_MEM_PWR_FORCE_LS', 'MPCC_MCM_MEM_PWR_FORCE_SD', - 'MPCC_MCM_MEM_PWR_STATE_DS', 'MPCC_MCM_MEM_PWR_STATE_ENUM', - 'MPCC_MCM_MEM_PWR_STATE_LS', 'MPCC_MCM_MEM_PWR_STATE_ON', - 'MPCC_MCM_MEM_PWR_STATE_SD', 'MPCC_MCM_RAM0_ACCESS', - 'MPCC_MCM_RAM1_ACCESS', 'MPCC_MCM_RAM2_ACCESS', - 'MPCC_MCM_RAM3_ACCESS', 'MPCC_OGAM_ALL_USE_R', - 'MPCC_OGAM_BLUE_LUT', 'MPCC_OGAM_DIFFERENT_RGB', - 'MPCC_OGAM_DISABLE_DEBUG', 'MPCC_OGAM_DISABLE_PWL', - 'MPCC_OGAM_ENABLE_DEBUG', 'MPCC_OGAM_ENABLE_PWL', - 'MPCC_OGAM_GREEN_LUT', 'MPCC_OGAM_LUT_2CFG_MEMORY_A', - 'MPCC_OGAM_LUT_2CFG_MEMORY_B', 'MPCC_OGAM_LUT_2CFG_NO_MEMORY', - 'MPCC_OGAM_LUT_2_CONFIG_ENUM', 'MPCC_OGAM_LUT_CONFIG_MODE', - 'MPCC_OGAM_LUT_PWL_DISABLE_ENUM', - 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL', - 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMA', - 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMB', - 'MPCC_OGAM_LUT_RAM_SEL', 'MPCC_OGAM_LUT_READ_COLOR_SEL', - 'MPCC_OGAM_LUT_READ_DBG', 'MPCC_OGAM_LUT_SEL_ENUM', - 'MPCC_OGAM_MODE_0', 'MPCC_OGAM_MODE_2', - 'MPCC_OGAM_MODE_MPCC_OGAM_MODE_ENUM', 'MPCC_OGAM_MODE_RSV', - 'MPCC_OGAM_MODE_RSV1', 'MPCC_OGAM_NUM_SEG', 'MPCC_OGAM_RAMA', - 'MPCC_OGAM_RAMA_ACCESS', 'MPCC_OGAM_RAMB', - 'MPCC_OGAM_RAMB_ACCESS', 'MPCC_OGAM_RED_LUT', - 'MPCC_OGAM_SEGMENTS_1', 'MPCC_OGAM_SEGMENTS_128', - 'MPCC_OGAM_SEGMENTS_16', 'MPCC_OGAM_SEGMENTS_2', - 'MPCC_OGAM_SEGMENTS_32', 'MPCC_OGAM_SEGMENTS_4', - 'MPCC_OGAM_SEGMENTS_64', 'MPCC_OGAM_SEGMENTS_8', - 'MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN', - 'MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN_FALSE', - 'MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN_TRUE', - 'MPCC_SM_CONTROL_MPCC_SM_EN', 'MPCC_SM_CONTROL_MPCC_SM_EN_FALSE', - 'MPCC_SM_CONTROL_MPCC_SM_EN_TRUE', - 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT', - 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_FALSE', - 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_TRUE', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_HIGH', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_LOW', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_NO_FORCE', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_RESERVED', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_HIGH', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_LOW', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_NO_FORCE', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_RESERVED', - 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT', - 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_FALSE', - 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_TRUE', - 'MPCC_SM_CONTROL_MPCC_SM_MODE', - 'MPCC_SM_CONTROL_MPCC_SM_MODE_CHECKERBOARD_SUBSAMPLING', - 'MPCC_SM_CONTROL_MPCC_SM_MODE_COLUMN_SUBSAMPLING', - 'MPCC_SM_CONTROL_MPCC_SM_MODE_ROW_SUBSAMPLING', - 'MPCC_SM_CONTROL_MPCC_SM_MODE_SINGLE_PLANE', - 'MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN', - 'MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN_FALSE', - 'MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN_TRUE', - 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET', - 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_TRUE', - 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET', - 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_TRUE', - 'MPC_CFG_ADR_VUPDATE_LOCK_SET', - 'MPC_CFG_ADR_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_ADR_VUPDATE_LOCK_SET_TRUE', - 'MPC_CFG_CFG_VUPDATE_LOCK_SET', - 'MPC_CFG_CFG_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_CFG_VUPDATE_LOCK_SET_TRUE', - 'MPC_CFG_CUR_VUPDATE_LOCK_SET', - 'MPC_CFG_CUR_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_CUR_VUPDATE_LOCK_SET_TRUE', 'MPC_CFG_MPC_TEST_CLK_SEL', - 'MPC_CFG_MPC_TEST_CLK_SEL_0', 'MPC_CFG_MPC_TEST_CLK_SEL_1', - 'MPC_CFG_MPC_TEST_CLK_SEL_2', 'MPC_CFG_MPC_TEST_CLK_SEL_3', - 'MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN', - 'MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN_FALSE', - 'MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN_TRUE', - 'MPC_CRC_CALC_INTERLACE_MODE', 'MPC_CRC_CALC_MODE', - 'MPC_CRC_CALC_STEREO_MODE', 'MPC_CRC_CONTINUOUS_MODE', - 'MPC_CRC_INTERLACE_MODE_BOTH_RESET_BOTTOM', - 'MPC_CRC_INTERLACE_MODE_BOTH_RESET_EACH', - 'MPC_CRC_INTERLACE_MODE_BOTTOM', 'MPC_CRC_INTERLACE_MODE_TOP', - 'MPC_CRC_ONE_SHOT_MODE', 'MPC_CRC_SOURCE_SELECT', - 'MPC_CRC_SOURCE_SEL_DPP', 'MPC_CRC_SOURCE_SEL_DWB', - 'MPC_CRC_SOURCE_SEL_OPP', 'MPC_CRC_SOURCE_SEL_OTHER', - 'MPC_CRC_STEREO_MODE_BOTH_RESET_EACH', - 'MPC_CRC_STEREO_MODE_BOTH_RESET_RIGHT', - 'MPC_CRC_STEREO_MODE_LEFT', 'MPC_CRC_STEREO_MODE_RIGHT', - 'MPC_DEBUG_BUS1_DATA_SELECT', - 'MPC_DEBUG_BUS1_DATA_SELECT_MPC_CFG', - 'MPC_DEBUG_BUS1_DATA_SELECT_MPC_CONT', - 'MPC_DEBUG_BUS1_DATA_SELECT_MPC_RSV', - 'MPC_DEBUG_BUS1_DATA_SELECT_MPC_RSV1', - 'MPC_DEBUG_BUS2_DATA_SELECT', 'MPC_DEBUG_BUS2_DATA_SELECT_MPCC', - 'MPC_DEBUG_BUS2_DATA_SELECT_MPCC_CONT', - 'MPC_DEBUG_BUS2_DATA_SELECT_MPCC_MCM', - 'MPC_DEBUG_BUS2_DATA_SELECT_RES', - 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT', - 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPCC_DEBUG_ID', - 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPCC_MCM_DEBUG_ID', - 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPCC_OGAM_DEBUG_ID', - 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPC_DEBUG_ID', - 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPC_OCSC_DEBUG_ID', - 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_RSV1', - 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_SFR_DEBUG_DATA', - 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_SFT_DEBUG_DATA', - 'MPC_DEBUG_BUS_MPCC_BYTE0', 'MPC_DEBUG_BUS_MPCC_BYTE1', - 'MPC_DEBUG_BUS_MPCC_BYTE2', 'MPC_DEBUG_BUS_MPCC_BYTE3', - 'MPC_DEBUG_BUS_MPCC_BYTE_SELECT', 'MPC_OCSC_COEF_FORMAT', - 'MPC_OCSC_COEF_FORMAT_S2_13', 'MPC_OCSC_COEF_FORMAT_S3_12', - 'MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN', - 'MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN_FALSE', - 'MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN_TRUE', - 'MPC_OUT_CSC_MODE', 'MPC_OUT_CSC_MODE_0', 'MPC_OUT_CSC_MODE_1', - 'MPC_OUT_CSC_MODE_2', 'MPC_OUT_CSC_MODE_RSV', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_10BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_11BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_12BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_6BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_8BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_9BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_BYPASS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_MODE', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_PASSTHROUGH', - 'MPC_OUT_RATE_CONTROL_DISABLE_SET', - 'MPC_OUT_RATE_CONTROL_SET_DISABLE', - 'MPC_OUT_RATE_CONTROL_SET_ENABLE', - 'MSA_V_TIMING_OVERRIDE_DISABLED', 'MSA_V_TIMING_OVERRIDE_ENABLED', - 'MTYPE', 'MTYPE_CC', 'MTYPE_C_RO_S', 'MTYPE_C_RO_US', - 'MTYPE_C_RW_S', 'MTYPE_C_RW_US', 'MTYPE_NC', 'MTYPE_RESERVED_1', - 'MTYPE_RESERVED_5', 'MTYPE_RESERVED_7', 'MTYPE_UC', 'MTYPE_WC', - 'MULTIPLE_BY1', 'MULTIPLE_BY2', 'MULTIPLE_BY3_RESERVED', - 'MULTIPLE_BY4', 'MULTIPLE_RESERVED', 'MULT_16', 'MULT_8', - 'MemArbMode', 'NON_BYPASS', 'NOT_FORCE_THE_CLOCK_DISABLED', - 'NOT_SENT', 'NO_DIST', 'NO_DIV', 'NO_FORCE', 'NO_FORCE_REQ', - 'NO_FORCE_REQUEST', 'NO_MIN_CHUNK_SIZE', 'NO_MIN_META_CHUNK_SIZE', - 'NO_OUTSTANDING_REQ', 'NUM_SIMD_PER_CU', 'OBUF_BYPASS_DIS', - 'OBUF_BYPASS_EN', 'OBUF_BYPASS_SEL', 'OBUF_FULL', - 'OBUF_FULL_RECOUT', 'OBUF_HALF_RECOUT', - 'OBUF_IS_HALF_RECOUT_WIDTH_SEL', 'OBUF_RECOUT', - 'OBUF_USE_FULL_BUFFER_SEL', 'OFFCHIP_HS_DEALLOC', 'OFF_SEQ', - 'OKAY', 'OKAY_NODATA', 'OMODE_BLEND', 'OMODE_O_THEN_B', - 'OMODE_P_THEN_O_THEN_B', 'OMODE_RESERVED_3', 'ON_SEQ', - 'OPPBUF_DISPLAY_SEGMENTATION', - 'OPPBUF_DISPLAY_SEGMENTATION_1_SEGMENT', - 'OPPBUF_DISPLAY_SEGMENTATION_2_SEGMENT', - 'OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT', - 'OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT_SPLIT_LEFT', - 'OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT_SPLIT_RIGHT', - 'OPP_ABM_DEBUG_BUS_SELECT_CONTROL', - 'OPP_DPG_DEBUG_BUS_SELECT_CONTROL', - 'OPP_FMT_DEBUG_BUS_SELECT_CONTROL', - 'OPP_OPPBUF_DEBUG_BUS_SELECT_CONTROL', - 'OPP_OPP_PIPE_DEBUG_BUS_SELECT_CONTROL', 'OPP_PIPE_CLOCK_DISABLE', - 'OPP_PIPE_CLOCK_ENABLE', 'OPP_PIPE_CLOCK_ENABLE_CONTROL', - 'OPP_PIPE_CRC_CONT_EN', 'OPP_PIPE_CRC_DISABLE', 'OPP_PIPE_CRC_EN', - 'OPP_PIPE_CRC_ENABLE', 'OPP_PIPE_CRC_INTERLACE_EN', - 'OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_INTERLACED', - 'OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_PROGRESSIVE', - 'OPP_PIPE_CRC_INTERLACE_MODE', - 'OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_BOTTOM_FIELD', - 'OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_EACH_FIELD', - 'OPP_PIPE_CRC_INTERLACE_MODE_BOTTOM', - 'OPP_PIPE_CRC_INTERLACE_MODE_TOP', 'OPP_PIPE_CRC_MODE_CONTINUOUS', - 'OPP_PIPE_CRC_MODE_ONE_SHOT', 'OPP_PIPE_CRC_ONE_SHOT_PENDING', - 'OPP_PIPE_CRC_ONE_SHOT_PENDING_NOT_PENDING', - 'OPP_PIPE_CRC_ONE_SHOT_PENDING_PENDING', - 'OPP_PIPE_CRC_PIXEL_SELECT', - 'OPP_PIPE_CRC_PIXEL_SELECT_ALL_PIXELS', - 'OPP_PIPE_CRC_PIXEL_SELECT_EVEN_PIXELS', - 'OPP_PIPE_CRC_PIXEL_SELECT_ODD_PIXELS', - 'OPP_PIPE_CRC_PIXEL_SELECT_RESERVED', - 'OPP_PIPE_CRC_SOURCE_SELECT', 'OPP_PIPE_CRC_SOURCE_SELECT_FMT', - 'OPP_PIPE_CRC_SOURCE_SELECT_SFT', 'OPP_PIPE_CRC_STEREO_EN', - 'OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_NON_STEREO', - 'OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_STEREO', - 'OPP_PIPE_CRC_STEREO_MODE', - 'OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_EACH_EYE', - 'OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_RIGHT_EYE', - 'OPP_PIPE_CRC_STEREO_MODE_LEFT', 'OPP_PIPE_CRC_STEREO_MODE_RIGHT', - 'OPP_PIPE_DIGTIAL_BYPASS_CONTROL', - 'OPP_PIPE_DIGTIAL_BYPASS_DISABLE', - 'OPP_PIPE_DIGTIAL_BYPASS_ENABLE', 'OPP_TEST_CLK_SEL_CONTROL', - 'OPP_TEST_CLK_SEL_DISPCLK_ABM0', 'OPP_TEST_CLK_SEL_DISPCLK_ABM1', - 'OPP_TEST_CLK_SEL_DISPCLK_ABM2', 'OPP_TEST_CLK_SEL_DISPCLK_ABM3', - 'OPP_TEST_CLK_SEL_DISPCLK_OPP0', 'OPP_TEST_CLK_SEL_DISPCLK_OPP1', - 'OPP_TEST_CLK_SEL_DISPCLK_OPP2', 'OPP_TEST_CLK_SEL_DISPCLK_OPP3', - 'OPP_TEST_CLK_SEL_DISPCLK_P', 'OPP_TEST_CLK_SEL_DISPCLK_R', - 'OPP_TEST_CLK_SEL_RESERVED0', 'OPP_TEST_CLK_SEL_RESERVED1', - 'OPP_TEST_CLK_SEL_RESERVED2', 'OPP_TEST_CLK_SEL_RESERVED3', - 'OPP_TOP_CLOCK_DISABLED_STATUS', 'OPP_TOP_CLOCK_ENABLED_STATUS', - 'OPP_TOP_CLOCK_ENABLE_STATUS', 'OPP_TOP_CLOCK_GATING_CONTROL', - 'OPP_TOP_CLOCK_GATING_DISABLED', 'OPP_TOP_CLOCK_GATING_ENABLED', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG0', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG1', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG2', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG3', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_RESERVED4', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_RESERVED5', - 'OPT_COMB_ADD', 'OPT_COMB_BLEND_DISABLED', 'OPT_COMB_MAX', - 'OPT_COMB_MIN', 'OPT_COMB_NONE', 'OPT_COMB_REVSUBTRACT', - 'OPT_COMB_SAFE_ADD', 'OPT_COMB_SUBTRACT', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_FALSE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_TRUE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_FALSE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_TRUE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_FALSE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_TRUE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_BOTH', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_INTERLACE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_PROGRASSIVE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_RESERVED', - 'OTG_ADD_PIXEL', 'OTG_ADD_PIXEL_FORCE', 'OTG_ADD_PIXEL_NOOP', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_CURRENT', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_FIRST', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_VUPDATE', - 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL', - 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_DP', - 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_NORMAL', - 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY', - 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_FALSE', - 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_TRUE', - 'OTG_CONTROL_OTG_MASTER_EN', 'OTG_CONTROL_OTG_MASTER_EN_FALSE', - 'OTG_CONTROL_OTG_MASTER_EN_TRUE', 'OTG_CONTROL_OTG_OUT_MUX', - 'OTG_CONTROL_OTG_OUT_MUX_0', 'OTG_CONTROL_OTG_OUT_MUX_1', - 'OTG_CONTROL_OTG_OUT_MUX_2', 'OTG_CONTROL_OTG_START_POINT_CNTL', - 'OTG_CONTROL_OTG_START_POINT_CNTL_DP', - 'OTG_CONTROL_OTG_START_POINT_CNTL_NORMAL', - 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN', - 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_FALSE', - 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_TRUE', - 'OTG_CRC_CNTL_OTG_CRC1_EN', 'OTG_CRC_CNTL_OTG_CRC1_EN_FALSE', - 'OTG_CRC_CNTL_OTG_CRC1_EN_TRUE', 'OTG_CRC_CNTL_OTG_CRC_CONT_EN', - 'OTG_CRC_CNTL_OTG_CRC_CONT_EN_FALSE', - 'OTG_CRC_CNTL_OTG_CRC_CONT_EN_TRUE', - 'OTG_CRC_CNTL_OTG_CRC_CONT_MODE', - 'OTG_CRC_CNTL_OTG_CRC_CONT_MODE_NORESET', - 'OTG_CRC_CNTL_OTG_CRC_CONT_MODE_RESET', 'OTG_CRC_CNTL_OTG_CRC_EN', - 'OTG_CRC_CNTL_OTG_CRC_EN_FALSE', 'OTG_CRC_CNTL_OTG_CRC_EN_TRUE', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_BOTTOM', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_FIELD', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTTOM', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_TOP', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_EYES', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_FIELDS', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_LEFT', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_RIGHT', - 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS', - 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_FALSE', - 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_TRUE', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IAB', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IA_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_AB', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_A_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UAB', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UA_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_AB', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_A_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IAB', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IA_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_AB', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_A_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UAB', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UA_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_AB', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_A_B', - 'OTG_DIG_UPDATE_VCOUNT_0', 'OTG_DIG_UPDATE_VCOUNT_1', - 'OTG_DIG_UPDATE_VCOUNT_MODE', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_0', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_1', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_2', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_3', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_FALSE', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_TRUE', - 'OTG_DROP_PIXEL', 'OTG_DROP_PIXEL_FORCE', 'OTG_DROP_PIXEL_NOOP', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_1FRAME', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_2FRAME', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_4FRAME', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_8FRAME', - 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN', - 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_FALSE', - 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_TRUE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_FALSE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_TRUE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_FALSE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_TRUE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1CLK', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1DATA', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2CLK', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2DATA', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICA', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICB', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICC', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICD', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICF', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_CLK', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_VSYNC', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD1', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD2', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC0', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC1', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_RESERVED', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKA', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKB', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_FALSE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_TRUE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_FALSE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_TRUE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_DISABLE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT_VCOUNT', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_RESERVED', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_FALSE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_TRUE', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG0', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG1', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG2', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG3', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_RESERVED4', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_RESERVED5', - 'OTG_GLOBAL_CONTROL3_DIG_UPDATE_EYE_SEL', - 'OTG_GLOBAL_CONTROL3_DIG_UPDATE_FIELD_SEL', - 'OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_FIELD', - 'OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_STEREO_SEL', - 'OTG_GLOBAL_UPDATE_LOCK_DISABLE', 'OTG_GLOBAL_UPDATE_LOCK_EN', - 'OTG_GLOBAL_UPDATE_LOCK_ENABLE', 'OTG_GSL_MASTER_MODE', - 'OTG_GSL_MASTER_MODE_0', 'OTG_GSL_MASTER_MODE_1', - 'OTG_GSL_MASTER_MODE_2', 'OTG_GSL_MASTER_MODE_3', - 'OTG_HORZ_REPETITION_COUNT', 'OTG_HORZ_REPETITION_COUNT_0', - 'OTG_HORZ_REPETITION_COUNT_1', 'OTG_HORZ_REPETITION_COUNT_10', - 'OTG_HORZ_REPETITION_COUNT_11', 'OTG_HORZ_REPETITION_COUNT_12', - 'OTG_HORZ_REPETITION_COUNT_13', 'OTG_HORZ_REPETITION_COUNT_14', - 'OTG_HORZ_REPETITION_COUNT_15', 'OTG_HORZ_REPETITION_COUNT_2', - 'OTG_HORZ_REPETITION_COUNT_3', 'OTG_HORZ_REPETITION_COUNT_4', - 'OTG_HORZ_REPETITION_COUNT_5', 'OTG_HORZ_REPETITION_COUNT_6', - 'OTG_HORZ_REPETITION_COUNT_7', 'OTG_HORZ_REPETITION_COUNT_8', - 'OTG_HORZ_REPETITION_COUNT_9', 'OTG_H_SYNC_A_POL', - 'OTG_H_SYNC_A_POL_HIGH', 'OTG_H_SYNC_A_POL_LOW', - 'OTG_H_TIMING_DIV_MODE', 'OTG_H_TIMING_DIV_MODE_AUTO', - 'OTG_H_TIMING_DIV_MODE_DIV_BY2', 'OTG_H_TIMING_DIV_MODE_DIV_BY4', - 'OTG_H_TIMING_DIV_MODE_MANUAL', 'OTG_H_TIMING_DIV_MODE_NOAUTO', - 'OTG_H_TIMING_DIV_MODE_NO_DIV', 'OTG_H_TIMING_DIV_MODE_RESERVED', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_FALSE', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_TRUE', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_BOTTOM', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT2', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_TOP', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_TRUE', - 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE', - 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_FALSE', - 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_TRUE', - 'OTG_MASTER_UPDATE_LOCK_DB_EN', 'OTG_MASTER_UPDATE_LOCK_DISABLE', - 'OTG_MASTER_UPDATE_LOCK_ENABLE', 'OTG_MASTER_UPDATE_LOCK_GSL_EN', - 'OTG_MASTER_UPDATE_LOCK_GSL_EN_FALSE', - 'OTG_MASTER_UPDATE_LOCK_GSL_EN_TRUE', - 'OTG_MASTER_UPDATE_LOCK_VCOUNT_0', - 'OTG_MASTER_UPDATE_LOCK_VCOUNT_1', - 'OTG_MASTER_UPDATE_LOCK_VCOUNT_MODE', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_DISABLE', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_RESERVED', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERA', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERB', - 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR', - 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_FALSE', - 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_FALSE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_FALSE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_FALSE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_FALSE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_OFF', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_ON', - 'OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL', - 'OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL_FALSE', - 'OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL_TRUE', - 'OTG_STEREO_CONTROL_OTG_STEREO_EN', - 'OTG_STEREO_CONTROL_OTG_STEREO_EN_FALSE', - 'OTG_STEREO_CONTROL_OTG_STEREO_EN_TRUE', - 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY', - 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_FALSE', - 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_TRUE', - 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY', - 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_FALSE', - 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_TRUE', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_LEFT', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_NO', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RESERVED', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RIGHT', - 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR', - 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_FALSE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_TRUE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICA', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICB', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICC', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICD', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_HSYNCA', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_INTERLACE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC0', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC1', - 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_FALSE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_TRUE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG0', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG1', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG2', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG3', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_RESERVED4', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_RESERVED5', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_BLON_Y_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_FLIP_PENDING', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICA_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICB_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICC_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICD_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICE_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICF_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_CLK_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_VSYNC_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GSL_ALLOW_FLIP', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD1', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD2', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HSYNC', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC0', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC1', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_SOF', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_RESERVED14', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKA_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKB_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_LOCK', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_PENDING', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_VSYNC', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_0', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_1', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_2', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_3', - 'OTG_TRIGA_FREQUENCY_SELECT', 'OTG_TRIGA_FREQUENCY_SELECT_0', - 'OTG_TRIGA_FREQUENCY_SELECT_1', 'OTG_TRIGA_FREQUENCY_SELECT_2', - 'OTG_TRIGA_FREQUENCY_SELECT_3', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_0', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_1', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_2', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_3', - 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR', - 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_FALSE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_TRUE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICA', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICB', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICC', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICD', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_HSYNCA', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_INTERLACE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC0', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC1', - 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_FALSE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_TRUE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG0', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG1', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG2', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG3', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_RESERVED4', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_RESERVED5', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_BLON_Y_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_FLIP_PENDING', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICA_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICB_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICC_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICD_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICE_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICF_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_CLK_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_VSYNC_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GSL_ALLOW_FLIP', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD1', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD2', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HSYNC', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC0', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC1', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_SOF', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_RESERVED14', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKA_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKB_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_LOCK', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_PENDING', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_VSYNC', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_0', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_1', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_2', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_3', - 'OTG_TRIGB_FREQUENCY_SELECT', 'OTG_TRIGB_FREQUENCY_SELECT_0', - 'OTG_TRIGB_FREQUENCY_SELECT_1', 'OTG_TRIGB_FREQUENCY_SELECT_2', - 'OTG_TRIGB_FREQUENCY_SELECT_3', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_0', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_1', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_2', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_3', - 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK', - 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_FALSE', - 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_TRUE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_FALSE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_TRUE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_FALSE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_TRUE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_FALSE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_TRUE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_FALSE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_TRUE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_CLEAR_FALSE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_TRUE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_FALSE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_TRUE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_FALSE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_TRUE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_CLEAR_FALSE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_TRUE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_FALSE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_TRUE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_FALSE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_TRUE', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_DISABLE', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_RESERVED', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERA', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERB', - 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR', - 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_FALSE', - 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_TRUE', - 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR', - 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_FALSE', - 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_TRUE', - 'OTG_VUPDATE_BLOCK_DISABLE', 'OTG_VUPDATE_BLOCK_DISABLE_OFF', - 'OTG_VUPDATE_BLOCK_DISABLE_ON', 'OTG_V_SYNC_A_POL', - 'OTG_V_SYNC_A_POL_HIGH', 'OTG_V_SYNC_A_POL_LOW', - 'OTG_V_SYNC_MODE', 'OTG_V_SYNC_MODE_HBLANK', - 'OTG_V_SYNC_MODE_HSYNC', - 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD', - 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_0', - 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_1', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_DISABLE', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_ENABLE', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_DISABLE', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_ENABLE', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_FALSE', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_TRUE', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_FALSE', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_TRUE', - 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK', - 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK_FALSE', - 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK_TRUE', - 'OUTPUT_LINE', 'OUTPUT_POINT', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_NOT_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_DISABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_NOT_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_DISABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_NOT_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_DISABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_ENABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_NO_TRAFFIC_PRIORITY', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_DO_RUN', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_IS_RESET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RESET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RUN', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_YES_TRAFFIC_PRIORITY', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_16', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_20', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_24', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_1', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_10_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_11_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_12_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_13_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_14_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_15_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_16_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_2', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_3', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_4', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_5', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_6', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_7', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_8', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_9_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 'OUTPUT_TRIANGLE_CCW', 'OUTPUT_TRIANGLE_CW', 'OUTSTANDING_REQ', - 'OVERRUN', 'OreoMode', 'PART_FRAC_EVEN', 'PART_FRAC_ODD', - 'PART_INTEGER', 'PART_POW2', 'PATCHES', 'PERFCOUNTER_ACTIVE', - 'PERFCOUNTER_CNT0_STATE', 'PERFCOUNTER_CNT0_STATE_FREEZE', - 'PERFCOUNTER_CNT0_STATE_HW', 'PERFCOUNTER_CNT0_STATE_RESET', - 'PERFCOUNTER_CNT0_STATE_START', 'PERFCOUNTER_CNT1_STATE', - 'PERFCOUNTER_CNT1_STATE_FREEZE', 'PERFCOUNTER_CNT1_STATE_HW', - 'PERFCOUNTER_CNT1_STATE_RESET', 'PERFCOUNTER_CNT1_STATE_START', - 'PERFCOUNTER_CNT2_STATE', 'PERFCOUNTER_CNT2_STATE_FREEZE', - 'PERFCOUNTER_CNT2_STATE_HW', 'PERFCOUNTER_CNT2_STATE_RESET', - 'PERFCOUNTER_CNT2_STATE_START', 'PERFCOUNTER_CNT3_STATE', - 'PERFCOUNTER_CNT3_STATE_FREEZE', 'PERFCOUNTER_CNT3_STATE_HW', - 'PERFCOUNTER_CNT3_STATE_RESET', 'PERFCOUNTER_CNT3_STATE_START', - 'PERFCOUNTER_CNT4_STATE', 'PERFCOUNTER_CNT4_STATE_FREEZE', - 'PERFCOUNTER_CNT4_STATE_HW', 'PERFCOUNTER_CNT4_STATE_RESET', - 'PERFCOUNTER_CNT4_STATE_START', 'PERFCOUNTER_CNT5_STATE', - 'PERFCOUNTER_CNT5_STATE_FREEZE', 'PERFCOUNTER_CNT5_STATE_HW', - 'PERFCOUNTER_CNT5_STATE_RESET', 'PERFCOUNTER_CNT5_STATE_START', - 'PERFCOUNTER_CNT6_STATE', 'PERFCOUNTER_CNT6_STATE_FREEZE', - 'PERFCOUNTER_CNT6_STATE_HW', 'PERFCOUNTER_CNT6_STATE_RESET', - 'PERFCOUNTER_CNT6_STATE_START', 'PERFCOUNTER_CNT7_STATE', - 'PERFCOUNTER_CNT7_STATE_FREEZE', 'PERFCOUNTER_CNT7_STATE_HW', - 'PERFCOUNTER_CNT7_STATE_RESET', 'PERFCOUNTER_CNT7_STATE_START', - 'PERFCOUNTER_CNTL_SEL', 'PERFCOUNTER_CNTL_SEL_0', - 'PERFCOUNTER_CNTL_SEL_1', 'PERFCOUNTER_CNTL_SEL_2', - 'PERFCOUNTER_CNTL_SEL_3', 'PERFCOUNTER_CNTL_SEL_4', - 'PERFCOUNTER_CNTL_SEL_5', 'PERFCOUNTER_CNTL_SEL_6', - 'PERFCOUNTER_CNTL_SEL_7', 'PERFCOUNTER_CNTOFF_START_DIS', - 'PERFCOUNTER_CNTOFF_START_DISABLE', - 'PERFCOUNTER_CNTOFF_START_ENABLE', - 'PERFCOUNTER_COUNTED_VALUE_TYPE', - 'PERFCOUNTER_COUNTED_VALUE_TYPE_ACC', - 'PERFCOUNTER_COUNTED_VALUE_TYPE_MAX', - 'PERFCOUNTER_COUNTED_VALUE_TYPE_MIN', 'PERFCOUNTER_CVALUE_SEL', - 'PERFCOUNTER_CVALUE_SEL_11_0', 'PERFCOUNTER_CVALUE_SEL_15_0', - 'PERFCOUNTER_CVALUE_SEL_23_12', 'PERFCOUNTER_CVALUE_SEL_31_16', - 'PERFCOUNTER_CVALUE_SEL_35_24', 'PERFCOUNTER_CVALUE_SEL_47_0', - 'PERFCOUNTER_CVALUE_SEL_47_32', 'PERFCOUNTER_CVALUE_SEL_47_36', - 'PERFCOUNTER_HW_CNTL_SEL', 'PERFCOUNTER_HW_CNTL_SEL_CNTOFF', - 'PERFCOUNTER_HW_CNTL_SEL_RUNEN', 'PERFCOUNTER_HW_STOP1_0', - 'PERFCOUNTER_HW_STOP1_1', 'PERFCOUNTER_HW_STOP1_SEL', - 'PERFCOUNTER_HW_STOP2_0', 'PERFCOUNTER_HW_STOP2_1', - 'PERFCOUNTER_HW_STOP2_SEL', 'PERFCOUNTER_INC_MODE', - 'PERFCOUNTER_INC_MODE_BOTH_EDGE', 'PERFCOUNTER_INC_MODE_LSB', - 'PERFCOUNTER_INC_MODE_MULTI_BIT', 'PERFCOUNTER_INC_MODE_NEG_EDGE', - 'PERFCOUNTER_INC_MODE_POS_EDGE', 'PERFCOUNTER_INT_DISABLE', - 'PERFCOUNTER_INT_EN', 'PERFCOUNTER_INT_ENABLE', - 'PERFCOUNTER_INT_TYPE', 'PERFCOUNTER_INT_TYPE_LEVEL', - 'PERFCOUNTER_INT_TYPE_PULSE', 'PERFCOUNTER_IS_ACTIVE', - 'PERFCOUNTER_IS_IDLE', 'PERFCOUNTER_OFF_MASK', - 'PERFCOUNTER_OFF_MASK_DISABLE', 'PERFCOUNTER_OFF_MASK_ENABLE', - 'PERFCOUNTER_RESTART_DISABLE', 'PERFCOUNTER_RESTART_EN', - 'PERFCOUNTER_RESTART_ENABLE', 'PERFCOUNTER_RUNEN_MODE', - 'PERFCOUNTER_RUNEN_MODE_EDGE', 'PERFCOUNTER_RUNEN_MODE_LEVEL', - 'PERFCOUNTER_SAMPLE', 'PERFCOUNTER_START', - 'PERFCOUNTER_STATE_SEL0', 'PERFCOUNTER_STATE_SEL0_GLOBAL', - 'PERFCOUNTER_STATE_SEL0_LOCAL', 'PERFCOUNTER_STATE_SEL1', - 'PERFCOUNTER_STATE_SEL1_GLOBAL', 'PERFCOUNTER_STATE_SEL1_LOCAL', - 'PERFCOUNTER_STATE_SEL2', 'PERFCOUNTER_STATE_SEL2_GLOBAL', - 'PERFCOUNTER_STATE_SEL2_LOCAL', 'PERFCOUNTER_STATE_SEL3', - 'PERFCOUNTER_STATE_SEL3_GLOBAL', 'PERFCOUNTER_STATE_SEL3_LOCAL', - 'PERFCOUNTER_STATE_SEL4', 'PERFCOUNTER_STATE_SEL4_GLOBAL', - 'PERFCOUNTER_STATE_SEL4_LOCAL', 'PERFCOUNTER_STATE_SEL5', - 'PERFCOUNTER_STATE_SEL5_GLOBAL', 'PERFCOUNTER_STATE_SEL5_LOCAL', - 'PERFCOUNTER_STATE_SEL6', 'PERFCOUNTER_STATE_SEL6_GLOBAL', - 'PERFCOUNTER_STATE_SEL6_LOCAL', 'PERFCOUNTER_STATE_SEL7', - 'PERFCOUNTER_STATE_SEL7_GLOBAL', 'PERFCOUNTER_STATE_SEL7_LOCAL', - 'PERFCOUNTER_STOP', 'PERFMON_CNTOFF_AND', 'PERFMON_CNTOFF_AND_OR', - 'PERFMON_CNTOFF_INT_DISABLE', 'PERFMON_CNTOFF_INT_EN', - 'PERFMON_CNTOFF_INT_ENABLE', 'PERFMON_CNTOFF_INT_TYPE', - 'PERFMON_CNTOFF_INT_TYPE_LEVEL', 'PERFMON_CNTOFF_INT_TYPE_PULSE', - 'PERFMON_CNTOFF_OR', 'PERFMON_COUNTER_MODE', - 'PERFMON_COUNTER_MODE_ACCUM', - 'PERFMON_COUNTER_MODE_ACTIVE_CYCLES', - 'PERFMON_COUNTER_MODE_CYCLES_EQ_HI', - 'PERFMON_COUNTER_MODE_CYCLES_GE_HI', - 'PERFMON_COUNTER_MODE_CYCLES_SINCE_FIRST_EVENT', - 'PERFMON_COUNTER_MODE_CYCLES_SINCE_LAST_EVENT', - 'PERFMON_COUNTER_MODE_DIRTY', - 'PERFMON_COUNTER_MODE_INACTIVE_CYCLES', - 'PERFMON_COUNTER_MODE_MAX', 'PERFMON_COUNTER_MODE_RESERVED', - 'PERFMON_COUNTER_MODE_SAMPLE', 'PERFMON_SPM_MODE', - 'PERFMON_SPM_MODE_16BIT_CLAMP', 'PERFMON_SPM_MODE_16BIT_NO_CLAMP', - 'PERFMON_SPM_MODE_32BIT_CLAMP', 'PERFMON_SPM_MODE_32BIT_NO_CLAMP', - 'PERFMON_SPM_MODE_OFF', 'PERFMON_SPM_MODE_RESERVED_5', - 'PERFMON_SPM_MODE_RESERVED_6', 'PERFMON_SPM_MODE_RESERVED_7', - 'PERFMON_SPM_MODE_TEST_MODE_0', 'PERFMON_SPM_MODE_TEST_MODE_1', - 'PERFMON_SPM_MODE_TEST_MODE_2', 'PERFMON_STATE', - 'PERFMON_STATE_FREEZE', 'PERFMON_STATE_HW', 'PERFMON_STATE_RESET', - 'PERFMON_STATE_START', 'PERF_CLIPSM_CULL_PRIMS_CNT', - 'PERF_ENGG_BUSY', 'PERF_ENGG_CSB_DELAY_BIN00', - 'PERF_ENGG_CSB_DELAY_BIN01', 'PERF_ENGG_CSB_DELAY_BIN02', - 'PERF_ENGG_CSB_DELAY_BIN03', 'PERF_ENGG_CSB_DELAY_BIN04', - 'PERF_ENGG_CSB_DELAY_BIN05', 'PERF_ENGG_CSB_DELAY_BIN06', - 'PERF_ENGG_CSB_DELAY_BIN07', 'PERF_ENGG_CSB_DELAY_BIN08', - 'PERF_ENGG_CSB_DELAY_BIN09', 'PERF_ENGG_CSB_DELAY_BIN10', - 'PERF_ENGG_CSB_DELAY_BIN11', 'PERF_ENGG_CSB_DELAY_BIN12', - 'PERF_ENGG_CSB_DELAY_BIN13', 'PERF_ENGG_CSB_DELAY_BIN14', - 'PERF_ENGG_CSB_DELAY_BIN15', 'PERF_ENGG_CSB_GE_INPUT_FIFO_FULL', - 'PERF_ENGG_CSB_GE_INPUT_FIFO_POP_BIT', - 'PERF_ENGG_CSB_GE_MEMORY_EMPTY', 'PERF_ENGG_CSB_GE_MEMORY_FULL', - 'PERF_ENGG_CSB_GE_SENDING_SUBGROUP', - 'PERF_ENGG_CSB_MACHINE_IS_STARVED', - 'PERF_ENGG_CSB_MACHINE_STALLED_BY_CSB_MEMORY', - 'PERF_ENGG_CSB_MACHINE_STALLED_BY_SPI', - 'PERF_ENGG_CSB_NULL_SUBGROUP', - 'PERF_ENGG_CSB_PAYLOAD_INPUT_FIFO_FULL', - 'PERF_ENGG_CSB_PRIM_COUNT_EQ0', 'PERF_ENGG_CSB_SPI_DELAY_BIN00', - 'PERF_ENGG_CSB_SPI_DELAY_BIN01', 'PERF_ENGG_CSB_SPI_DELAY_BIN02', - 'PERF_ENGG_CSB_SPI_DELAY_BIN03', 'PERF_ENGG_CSB_SPI_DELAY_BIN04', - 'PERF_ENGG_CSB_SPI_DELAY_BIN05', 'PERF_ENGG_CSB_SPI_DELAY_BIN06', - 'PERF_ENGG_CSB_SPI_DELAY_BIN07', 'PERF_ENGG_CSB_SPI_DELAY_BIN08', - 'PERF_ENGG_CSB_SPI_DELAY_BIN09', 'PERF_ENGG_CSB_SPI_DELAY_BIN10', - 'PERF_ENGG_CSB_SPI_INPUT_FIFO_FULL', - 'PERF_ENGG_CSB_SPI_MEMORY_EMPTY', 'PERF_ENGG_CSB_SPI_MEMORY_FULL', - 'PERF_ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_NO_WRITE', - 'PERF_ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_WRITE', - 'PERF_ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_P_FIFO', - 'PERF_ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_S_FIFO', - 'PERF_ENGG_INDEX_PRIM_IF_STARVED_BY_NO_CSB', - 'PERF_ENGG_INDEX_PRIM_IF_STARVED_BY_NO_PRIM', - 'PERF_ENGG_INDEX_REQ_0_NEW_VERTS_THIS_PRIM', - 'PERF_ENGG_INDEX_REQ_1_NEW_VERTS_THIS_PRIM', - 'PERF_ENGG_INDEX_REQ_2_NEW_VERTS_THIS_PRIM', - 'PERF_ENGG_INDEX_REQ_3_NEW_VERTS_THIS_PRIM', - 'PERF_ENGG_INDEX_REQ_BUSY_AND_STALLED_BY_REQ2RTN_FIFO_FULL', - 'PERF_ENGG_INDEX_REQ_IDLE_AND_STALLED_BY_REQ2RTN_FIFO_FULL', - 'PERF_ENGG_INDEX_REQ_NULL_REQUEST', - 'PERF_ENGG_INDEX_REQ_STALLED_BY_SX_CREDITS', - 'PERF_ENGG_INDEX_REQ_STARVED', - 'PERF_ENGG_INDEX_RET_REQ2RTN_FIFO_EMPTY', - 'PERF_ENGG_INDEX_RET_REQ2RTN_FIFO_FULL', - 'PERF_ENGG_INDEX_RET_SXRX_NULL_DROPPER_STALLED_BY_FULL_PRIM_FIFO', - 'PERF_ENGG_INDEX_RET_SXRX_READING_EVENT', - 'PERF_ENGG_INDEX_RET_SXRX_READING_NULL_SUBGROUP', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_NULL_PRIMS', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_NOPL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_PL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_NULL_PRIMS', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_NOPL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_PL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_NULL_PRIMS', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS_NOPL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS_PL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_NULL_PRIMS', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS_NOPL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS_PL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_NULL_PRIMS', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS_NOPL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS_PL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_SUBGROUP_PRIMCOUNT_EQ0', - 'PERF_ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_CSB_FIFO', - 'PERF_ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_FIFO', - 'PERF_ENGG_INDEX_RET_SXRX_STARVED_BY_CSB', - 'PERF_ENGG_INDEX_RET_SXRX_STARVED_BY_PRIMS', - 'PERF_ENGG_INDEX_RET_SX_RECEIVE_FIFO_FULL', - 'PERF_ENGG_POS_REQ_STARVED', 'PERF_OUTPUT_PRIM_1_SC', - 'PERF_OUTPUT_PRIM_2_SC', 'PERF_OUTPUT_PRIM_3_SC', - 'PERF_OUTPUT_PRIM_4_SC', 'PERF_PAPC_CCGSM_BUSY', - 'PERF_PAPC_CCGSM_IDLE', 'PERF_PAPC_CCGSM_STALLED', - 'PERF_PAPC_CLIPGA_BUSY', 'PERF_PAPC_CLIPGA_IDLE', - 'PERF_PAPC_CLIPGA_STALLED', 'PERF_PAPC_CLIPGA_STARVED_VTE_CLIP', - 'PERF_PAPC_CLIPGA_VTE_KILL_PRIM', 'PERF_PAPC_CLIPSM_BUSY', - 'PERF_PAPC_CLIPSM_IDLE', 'PERF_PAPC_CLIPSM_WAIT_AVAIL_VTE_CLIP', - 'PERF_PAPC_CLIPSM_WAIT_CLIPGA', - 'PERF_PAPC_CLIPSM_WAIT_CLIP_OUTSM', - 'PERF_PAPC_CLIPSM_WAIT_CLIP_VERT_ENGH', - 'PERF_PAPC_CLIPSM_WAIT_HIGH_PRI_SEQ', 'PERF_PAPC_CLIP_BUSY', - 'PERF_PAPC_CLIP_IDLE', 'PERF_PAPC_CLPRIM_BUSY', - 'PERF_PAPC_CLPRIM_IDLE', 'PERF_PAPC_CLPRIM_STALLED', - 'PERF_PAPC_CLPRIM_STARVED_CCGSM', - 'PERF_PAPC_CLPR_CLIP_PLANE_BOTTOM', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_1', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_2', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_3', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_4', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_5_8', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_9_12', - 'PERF_PAPC_CLPR_CLIP_PLANE_FAR', 'PERF_PAPC_CLPR_CLIP_PLANE_LEFT', - 'PERF_PAPC_CLPR_CLIP_PLANE_NEAR', - 'PERF_PAPC_CLPR_CLIP_PLANE_RIGHT', - 'PERF_PAPC_CLPR_CLIP_PLANE_TOP', 'PERF_PAPC_CLPR_CULL_PRIM', - 'PERF_PAPC_CLPR_CULL_TO_NULL_PRIM', - 'PERF_PAPC_CLPR_GSC_KILL_CULL_PRIM', - 'PERF_PAPC_CLPR_POINT_CLIP_CANDIDATE', - 'PERF_PAPC_CLPR_RASTER_KILL_CULL_PRIM', - 'PERF_PAPC_CLPR_UCP_CLIP_PRIM', 'PERF_PAPC_CLPR_UCP_CULL_PRIM', - 'PERF_PAPC_CLPR_VTX_KILL_CULL_PRIM', - 'PERF_PAPC_CLPR_VTX_NAN_CULL_PRIM', - 'PERF_PAPC_CLPR_VVUCP_CLIP_PRIM', - 'PERF_PAPC_CLPR_VVUCP_CULL_PRIM', 'PERF_PAPC_CLPR_VV_CLIP_PRIM', - 'PERF_PAPC_CLPR_VV_CULL_PRIM', 'PERF_PAPC_CLSM_CLIPPING_PRIM', - 'PERF_PAPC_CLSM_CULL_TO_NULL_PRIM', 'PERF_PAPC_CLSM_NULL_PRIM', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_1', 'PERF_PAPC_CLSM_OUT_PRIM_CNT_2', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_3', 'PERF_PAPC_CLSM_OUT_PRIM_CNT_4', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_5_8', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_9_13', - 'PERF_PAPC_CLSM_TOTALLY_VISIBLE_PRIM', - 'PERF_PAPC_CL_DYN_SCLK_VLD', 'PERF_PAPC_PASX_DISABLE_PIPE', - 'PERF_PAPC_PASX_FIRST_DEAD', 'PERF_PAPC_PASX_FIRST_VECTOR', - 'PERF_PAPC_PASX_REC_BUSY', 'PERF_PAPC_PASX_REC_IDLE', - 'PERF_PAPC_PASX_REC_STALLED', - 'PERF_PAPC_PASX_REC_STALLED_CCGSM_IN', - 'PERF_PAPC_PASX_REC_STALLED_POS_MEM', - 'PERF_PAPC_PASX_REC_STARVED_SX', 'PERF_PAPC_PASX_REQ', - 'PERF_PAPC_PASX_REQ_BUSY', 'PERF_PAPC_PASX_REQ_IDLE', - 'PERF_PAPC_PASX_REQ_STALLED', 'PERF_PAPC_PASX_SE0_FIRST_VECTOR', - 'PERF_PAPC_PASX_SE0_REQ', 'PERF_PAPC_PASX_SE0_SECOND_VECTOR', - 'PERF_PAPC_PASX_SE1_FIRST_VECTOR', 'PERF_PAPC_PASX_SE1_REQ', - 'PERF_PAPC_PASX_SE1_SECOND_VECTOR', 'PERF_PAPC_PASX_SECOND_DEAD', - 'PERF_PAPC_PASX_SECOND_VECTOR', 'PERF_PAPC_PASX_VTX_KILL_DISCARD', - 'PERF_PAPC_PASX_VTX_NAN_DISCARD', - 'PERF_PAPC_PA_INPUT_END_OF_PACKET', - 'PERF_PAPC_PA_INPUT_EVENT_FLAG', - 'PERF_PAPC_PA_INPUT_EXTENDED_EVENT', - 'PERF_PAPC_PA_INPUT_FIRST_PRIM_SLOT', - 'PERF_PAPC_PA_INPUT_NULL_PRIM', 'PERF_PAPC_PA_INPUT_PRIM', - 'PERF_PAPC_PA_REG_SCLK_VLD', 'PERF_PAPC_SU_BACK_FACE_CULL_PRIM', - 'PERF_PAPC_SU_BUSY', 'PERF_PAPC_SU_CULLED_PRIM', - 'PERF_PAPC_SU_DYN_SCLK_VLD', 'PERF_PAPC_SU_FRONT_FACE_CULL_PRIM', - 'PERF_PAPC_SU_IDLE', 'PERF_PAPC_SU_INPUT_CLIP_PRIM', - 'PERF_PAPC_SU_INPUT_CLIP_PRIM_DUAL', - 'PERF_PAPC_SU_INPUT_NULL_PRIM', 'PERF_PAPC_SU_INPUT_PRIM', - 'PERF_PAPC_SU_INPUT_PRIM_DUAL', - 'PERF_PAPC_SU_MULTI_GPU_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_OUTPUT_CLIP_POLYMODE_DUAL', - 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM', - 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM_DUAL', - 'PERF_PAPC_SU_OUTPUT_END_OF_PACKET', 'PERF_PAPC_SU_OUTPUT_EOPG', - 'PERF_PAPC_SU_OUTPUT_EVENT_FLAG', - 'PERF_PAPC_SU_OUTPUT_FIRST_PRIM_SLOT', - 'PERF_PAPC_SU_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_BACK', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_DUAL', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_FACE', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_FRONT', 'PERF_PAPC_SU_OUTPUT_PRIM', - 'PERF_PAPC_SU_OUTPUT_PRIM_DUAL', - 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_BACK', - 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FACE', - 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FRONT', - 'PERF_PAPC_SU_POLYMODE_BACK_CULL', - 'PERF_PAPC_SU_POLYMODE_FACE_CULL', - 'PERF_PAPC_SU_POLYMODE_FRONT_CULL', - 'PERF_PAPC_SU_POLYMODE_INVALID_FILL', - 'PERF_PAPC_SU_SE01_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE01_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE01_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE01_STALLED_SC', - 'PERF_PAPC_SU_SE0_OUTPUT_END_OF_PACKET', - 'PERF_PAPC_SU_SE0_OUTPUT_EOPG', - 'PERF_PAPC_SU_SE0_OUTPUT_FIRST_PRIM_SLOT', - 'PERF_PAPC_SU_SE0_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE0_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE0_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE0_STALLED_SC', - 'PERF_PAPC_SU_SE1_OUTPUT_END_OF_PACKET', - 'PERF_PAPC_SU_SE1_OUTPUT_EOPG', - 'PERF_PAPC_SU_SE1_OUTPUT_FIRST_PRIM_SLOT', - 'PERF_PAPC_SU_SE1_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE1_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE1_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE1_STALLED_SC', - 'PERF_PAPC_SU_SE2_OUTPUT_END_OF_PACKET', - 'PERF_PAPC_SU_SE2_OUTPUT_EOPG', - 'PERF_PAPC_SU_SE2_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE2_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE2_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE2_STALLED_SC', - 'PERF_PAPC_SU_SE3_OUTPUT_END_OF_PACKET', - 'PERF_PAPC_SU_SE3_OUTPUT_EOPG', - 'PERF_PAPC_SU_SE3_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE3_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE3_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE3_STALLED_SC', 'PERF_PAPC_SU_STALLED_SC', - 'PERF_PAPC_SU_STARVED_CLIP', 'PERF_PAPC_SU_ZERO_AREA_CULL_PRIM', - 'PERF_PA_FETCH_TO_PRIMIC_P_FIFO_FULL', - 'PERF_PA_FETCH_TO_SXIF_FIFO_FULL', 'PERF_PA_PIPE0_SWITCHED_GEN', - 'PERF_PA_PIPE1_SWITCHED_GEN', - 'PERF_PA_PRIMIC_TO_CLPRIM_FIFO_FULL', 'PERF_PA_VERTEX_FIFO_FULL', - 'PERF_PH_SEND_1_SC', 'PERF_PH_SEND_2_SC', 'PERF_PH_SEND_3_SC', - 'PERF_PH_SEND_4_SC', 'PERF_SC0_QUALIFIED_SEND_BUSY_EVENT', - 'PERF_SC0_QUALIFIED_SEND_NOT_BUSY_EVENT', - 'PERF_SC1_QUALIFIED_SEND_BUSY_EVENT', - 'PERF_SC1_QUALIFIED_SEND_NOT_BUSY_EVENT', - 'PERF_SC2_QUALIFIED_SEND_BUSY_EVENT', - 'PERF_SC2_QUALIFIED_SEND_NOT_BUSY_EVENT', - 'PERF_SC3_QUALIFIED_SEND_BUSY_EVENT', - 'PERF_SC3_QUALIFIED_SEND_NOT_BUSY_EVENT', - 'PERF_SMALL_PRIM_CULL_PRIM_1X1', 'PERF_SMALL_PRIM_CULL_PRIM_1X2', - 'PERF_SMALL_PRIM_CULL_PRIM_1X3', 'PERF_SMALL_PRIM_CULL_PRIM_1XN', - 'PERF_SMALL_PRIM_CULL_PRIM_2X1', 'PERF_SMALL_PRIM_CULL_PRIM_2X2', - 'PERF_SMALL_PRIM_CULL_PRIM_2X3', 'PERF_SMALL_PRIM_CULL_PRIM_2XN', - 'PERF_SMALL_PRIM_CULL_PRIM_3X1', 'PERF_SMALL_PRIM_CULL_PRIM_3X2', - 'PERF_SMALL_PRIM_CULL_PRIM_FULL_RES_EVENT', - 'PERF_SMALL_PRIM_CULL_PRIM_HALF_RES_EVENT', - 'PERF_SMALL_PRIM_CULL_PRIM_NX1', 'PERF_SMALL_PRIM_CULL_PRIM_NX2', - 'PERF_SMALL_PRIM_CULL_PRIM_QUARTER_RES_EVENT', - 'PERF_SU_SMALL_PRIM_FILTER_CULL_CNT', 'PERSISTENT_SPACE_END', - 'PERSISTENT_SPACE_START', 'PHYSYMCLK_FORCE_EN', - 'PHYSYMCLK_FORCE_EN_DISABLE', 'PHYSYMCLK_FORCE_EN_ENABLE', - 'PHYSYMCLK_FORCE_SRC_PHYD18CLK', 'PHYSYMCLK_FORCE_SRC_PHYD32CLK', - 'PHYSYMCLK_FORCE_SRC_SEL', 'PHYSYMCLK_FORCE_SRC_SYMCLK', - 'PHY_CUSTOM_RATE', 'PHY_DP_RATE_10P', 'PHY_DP_RATE_13P5', - 'PHY_DP_RATE_1P62', 'PHY_DP_RATE_20P', 'PHY_DP_RATE_2P16', - 'PHY_DP_RATE_2P43', 'PHY_DP_RATE_2P7', 'PHY_DP_RATE_3P24', - 'PHY_DP_RATE_4P32', 'PHY_DP_RATE_5P4', 'PHY_DP_RATE_8P1', - 'PHY_IF_WIDTH_10BIT', 'PHY_IF_WIDTH_20BIT', 'PHY_IF_WIDTH_40BIT', - 'PHY_IF_WIDTH_80BIT', 'PH_PERFCNT_SEL', - 'PH_PERF_SC0_FIFO_STATUS_0', 'PH_PERF_SC0_FIFO_STATUS_1', - 'PH_PERF_SC0_FIFO_STATUS_2', 'PH_PERF_SC0_FIFO_STATUS_3', - 'PH_PERF_SC1_FIFO_STATUS_0', 'PH_PERF_SC1_FIFO_STATUS_1', - 'PH_PERF_SC1_FIFO_STATUS_2', 'PH_PERF_SC1_FIFO_STATUS_3', - 'PH_PERF_SC2_FIFO_STATUS_0', 'PH_PERF_SC2_FIFO_STATUS_1', - 'PH_PERF_SC2_FIFO_STATUS_2', 'PH_PERF_SC2_FIFO_STATUS_3', - 'PH_PERF_SC3_FIFO_STATUS_0', 'PH_PERF_SC3_FIFO_STATUS_1', - 'PH_PERF_SC3_FIFO_STATUS_2', 'PH_PERF_SC3_FIFO_STATUS_3', - 'PH_PERF_SC4_FIFO_STATUS_0', 'PH_PERF_SC4_FIFO_STATUS_1', - 'PH_PERF_SC4_FIFO_STATUS_2', 'PH_PERF_SC4_FIFO_STATUS_3', - 'PH_PERF_SC5_FIFO_STATUS_0', 'PH_PERF_SC5_FIFO_STATUS_1', - 'PH_PERF_SC5_FIFO_STATUS_2', 'PH_PERF_SC5_FIFO_STATUS_3', - 'PH_PERF_SC6_FIFO_STATUS_0', 'PH_PERF_SC6_FIFO_STATUS_1', - 'PH_PERF_SC6_FIFO_STATUS_2', 'PH_PERF_SC6_FIFO_STATUS_3', - 'PH_PERF_SC7_FIFO_STATUS_0', 'PH_PERF_SC7_FIFO_STATUS_1', - 'PH_PERF_SC7_FIFO_STATUS_2', 'PH_PERF_SC7_FIFO_STATUS_3', - 'PH_PERF_SEL_1_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_2_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_3_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_4_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_5_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_6_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_7_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_8_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC0_ARB_BUSY', - 'PH_PERF_SEL_SC0_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC0_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC0_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC0_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC0_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC0_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC0_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC0_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC0_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC0_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC0_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC0_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC0_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC0_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC0_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC0_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC0_GFX_PIPE_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC0_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA0_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC0_PA0_EOPG_WE', 'PH_PERF_SEL_SC0_PA0_EOP_WE', - 'PH_PERF_SEL_SC0_PA0_EVENT_WE', 'PH_PERF_SEL_SC0_PA0_FIFO_EMPTY', - 'PH_PERF_SEL_SC0_PA0_FIFO_FULL', 'PH_PERF_SEL_SC0_PA0_FPOV_WE', - 'PH_PERF_SEL_SC0_PA0_LPOV_WE', 'PH_PERF_SEL_SC0_PA0_NULL_WE', - 'PH_PERF_SEL_SC0_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA1_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC0_PA1_EOPG_WE', 'PH_PERF_SEL_SC0_PA1_EOP_WE', - 'PH_PERF_SEL_SC0_PA1_EVENT_WE', 'PH_PERF_SEL_SC0_PA1_FIFO_EMPTY', - 'PH_PERF_SEL_SC0_PA1_FIFO_FULL', 'PH_PERF_SEL_SC0_PA1_FPOV_WE', - 'PH_PERF_SEL_SC0_PA1_LPOV_WE', 'PH_PERF_SEL_SC0_PA1_NULL_WE', - 'PH_PERF_SEL_SC0_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA2_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC0_PA2_EOPG_WE', 'PH_PERF_SEL_SC0_PA2_EOP_WE', - 'PH_PERF_SEL_SC0_PA2_EVENT_WE', 'PH_PERF_SEL_SC0_PA2_FIFO_EMPTY', - 'PH_PERF_SEL_SC0_PA2_FIFO_FULL', 'PH_PERF_SEL_SC0_PA2_FPOV_WE', - 'PH_PERF_SEL_SC0_PA2_LPOV_WE', 'PH_PERF_SEL_SC0_PA2_NULL_WE', - 'PH_PERF_SEL_SC0_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA3_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC0_PA3_EOPG_WE', 'PH_PERF_SEL_SC0_PA3_EOP_WE', - 'PH_PERF_SEL_SC0_PA3_EVENT_WE', 'PH_PERF_SEL_SC0_PA3_FIFO_EMPTY', - 'PH_PERF_SEL_SC0_PA3_FIFO_FULL', 'PH_PERF_SEL_SC0_PA3_FPOV_WE', - 'PH_PERF_SEL_SC0_PA3_LPOV_WE', 'PH_PERF_SEL_SC0_PA3_NULL_WE', - 'PH_PERF_SEL_SC0_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA4_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC0_PA4_EOPG_WE', 'PH_PERF_SEL_SC0_PA4_EOP_WE', - 'PH_PERF_SEL_SC0_PA4_EVENT_WE', 'PH_PERF_SEL_SC0_PA4_FIFO_EMPTY', - 'PH_PERF_SEL_SC0_PA4_FIFO_FULL', 'PH_PERF_SEL_SC0_PA4_FPOV_WE', - 'PH_PERF_SEL_SC0_PA4_LPOV_WE', 'PH_PERF_SEL_SC0_PA4_NULL_WE', - 'PH_PERF_SEL_SC0_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA5_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC0_PA5_EOPG_WE', 'PH_PERF_SEL_SC0_PA5_EOP_WE', - 'PH_PERF_SEL_SC0_PA5_EVENT_WE', 'PH_PERF_SEL_SC0_PA5_FIFO_EMPTY', - 'PH_PERF_SEL_SC0_PA5_FIFO_FULL', 'PH_PERF_SEL_SC0_PA5_FPOV_WE', - 'PH_PERF_SEL_SC0_PA5_LPOV_WE', 'PH_PERF_SEL_SC0_PA5_NULL_WE', - 'PH_PERF_SEL_SC0_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA6_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC0_PA6_EOPG_WE', 'PH_PERF_SEL_SC0_PA6_EOP_WE', - 'PH_PERF_SEL_SC0_PA6_EVENT_WE', 'PH_PERF_SEL_SC0_PA6_FIFO_EMPTY', - 'PH_PERF_SEL_SC0_PA6_FIFO_FULL', 'PH_PERF_SEL_SC0_PA6_FPOV_WE', - 'PH_PERF_SEL_SC0_PA6_LPOV_WE', 'PH_PERF_SEL_SC0_PA6_NULL_WE', - 'PH_PERF_SEL_SC0_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA7_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC0_PA7_EOPG_WE', 'PH_PERF_SEL_SC0_PA7_EOP_WE', - 'PH_PERF_SEL_SC0_PA7_EVENT_WE', 'PH_PERF_SEL_SC0_PA7_FIFO_EMPTY', - 'PH_PERF_SEL_SC0_PA7_FIFO_FULL', 'PH_PERF_SEL_SC0_PA7_FPOV_WE', - 'PH_PERF_SEL_SC0_PA7_LPOV_WE', 'PH_PERF_SEL_SC0_PA7_NULL_WE', - 'PH_PERF_SEL_SC0_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC0_SEND', 'PH_PERF_SEL_SC0_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC1_ARB_BUSY', - 'PH_PERF_SEL_SC1_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC1_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC1_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC1_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC1_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC1_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC1_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC1_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC1_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC1_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC1_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC1_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC1_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC1_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC1_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC1_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC1_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC1_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA0_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC1_PA0_EOPG_WE', 'PH_PERF_SEL_SC1_PA0_EOP_WE', - 'PH_PERF_SEL_SC1_PA0_EVENT_WE', 'PH_PERF_SEL_SC1_PA0_FIFO_EMPTY', - 'PH_PERF_SEL_SC1_PA0_FIFO_FULL', 'PH_PERF_SEL_SC1_PA0_FPOV_WE', - 'PH_PERF_SEL_SC1_PA0_LPOV_WE', 'PH_PERF_SEL_SC1_PA0_NULL_WE', - 'PH_PERF_SEL_SC1_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA1_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC1_PA1_EOPG_WE', 'PH_PERF_SEL_SC1_PA1_EOP_WE', - 'PH_PERF_SEL_SC1_PA1_EVENT_WE', 'PH_PERF_SEL_SC1_PA1_FIFO_EMPTY', - 'PH_PERF_SEL_SC1_PA1_FIFO_FULL', 'PH_PERF_SEL_SC1_PA1_FPOV_WE', - 'PH_PERF_SEL_SC1_PA1_LPOV_WE', 'PH_PERF_SEL_SC1_PA1_NULL_WE', - 'PH_PERF_SEL_SC1_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA2_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC1_PA2_EOPG_WE', 'PH_PERF_SEL_SC1_PA2_EOP_WE', - 'PH_PERF_SEL_SC1_PA2_EVENT_WE', 'PH_PERF_SEL_SC1_PA2_FIFO_EMPTY', - 'PH_PERF_SEL_SC1_PA2_FIFO_FULL', 'PH_PERF_SEL_SC1_PA2_FPOV_WE', - 'PH_PERF_SEL_SC1_PA2_LPOV_WE', 'PH_PERF_SEL_SC1_PA2_NULL_WE', - 'PH_PERF_SEL_SC1_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA3_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC1_PA3_EOPG_WE', 'PH_PERF_SEL_SC1_PA3_EOP_WE', - 'PH_PERF_SEL_SC1_PA3_EVENT_WE', 'PH_PERF_SEL_SC1_PA3_FIFO_EMPTY', - 'PH_PERF_SEL_SC1_PA3_FIFO_FULL', 'PH_PERF_SEL_SC1_PA3_FPOV_WE', - 'PH_PERF_SEL_SC1_PA3_LPOV_WE', 'PH_PERF_SEL_SC1_PA3_NULL_WE', - 'PH_PERF_SEL_SC1_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA4_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC1_PA4_EOPG_WE', 'PH_PERF_SEL_SC1_PA4_EOP_WE', - 'PH_PERF_SEL_SC1_PA4_EVENT_WE', 'PH_PERF_SEL_SC1_PA4_FIFO_EMPTY', - 'PH_PERF_SEL_SC1_PA4_FIFO_FULL', 'PH_PERF_SEL_SC1_PA4_FPOV_WE', - 'PH_PERF_SEL_SC1_PA4_LPOV_WE', 'PH_PERF_SEL_SC1_PA4_NULL_WE', - 'PH_PERF_SEL_SC1_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA5_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC1_PA5_EOPG_WE', 'PH_PERF_SEL_SC1_PA5_EOP_WE', - 'PH_PERF_SEL_SC1_PA5_EVENT_WE', 'PH_PERF_SEL_SC1_PA5_FIFO_EMPTY', - 'PH_PERF_SEL_SC1_PA5_FIFO_FULL', 'PH_PERF_SEL_SC1_PA5_FPOV_WE', - 'PH_PERF_SEL_SC1_PA5_LPOV_WE', 'PH_PERF_SEL_SC1_PA5_NULL_WE', - 'PH_PERF_SEL_SC1_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA6_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC1_PA6_EOPG_WE', 'PH_PERF_SEL_SC1_PA6_EOP_WE', - 'PH_PERF_SEL_SC1_PA6_EVENT_WE', 'PH_PERF_SEL_SC1_PA6_FIFO_EMPTY', - 'PH_PERF_SEL_SC1_PA6_FIFO_FULL', 'PH_PERF_SEL_SC1_PA6_FPOV_WE', - 'PH_PERF_SEL_SC1_PA6_LPOV_WE', 'PH_PERF_SEL_SC1_PA6_NULL_WE', - 'PH_PERF_SEL_SC1_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA7_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC1_PA7_EOPG_WE', 'PH_PERF_SEL_SC1_PA7_EOP_WE', - 'PH_PERF_SEL_SC1_PA7_EVENT_WE', 'PH_PERF_SEL_SC1_PA7_FIFO_EMPTY', - 'PH_PERF_SEL_SC1_PA7_FIFO_FULL', 'PH_PERF_SEL_SC1_PA7_FPOV_WE', - 'PH_PERF_SEL_SC1_PA7_LPOV_WE', 'PH_PERF_SEL_SC1_PA7_NULL_WE', - 'PH_PERF_SEL_SC1_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC1_SEND', 'PH_PERF_SEL_SC1_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC2_ARB_BUSY', - 'PH_PERF_SEL_SC2_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC2_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC2_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC2_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC2_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC2_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC2_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC2_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC2_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC2_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC2_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC2_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC2_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC2_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC2_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC2_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC2_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC2_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA0_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC2_PA0_EOPG_WE', 'PH_PERF_SEL_SC2_PA0_EOP_WE', - 'PH_PERF_SEL_SC2_PA0_EVENT_WE', 'PH_PERF_SEL_SC2_PA0_FIFO_EMPTY', - 'PH_PERF_SEL_SC2_PA0_FIFO_FULL', 'PH_PERF_SEL_SC2_PA0_FPOV_WE', - 'PH_PERF_SEL_SC2_PA0_LPOV_WE', 'PH_PERF_SEL_SC2_PA0_NULL_WE', - 'PH_PERF_SEL_SC2_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA1_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC2_PA1_EOPG_WE', 'PH_PERF_SEL_SC2_PA1_EOP_WE', - 'PH_PERF_SEL_SC2_PA1_EVENT_WE', 'PH_PERF_SEL_SC2_PA1_FIFO_EMPTY', - 'PH_PERF_SEL_SC2_PA1_FIFO_FULL', 'PH_PERF_SEL_SC2_PA1_FPOV_WE', - 'PH_PERF_SEL_SC2_PA1_LPOV_WE', 'PH_PERF_SEL_SC2_PA1_NULL_WE', - 'PH_PERF_SEL_SC2_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA2_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC2_PA2_EOPG_WE', 'PH_PERF_SEL_SC2_PA2_EOP_WE', - 'PH_PERF_SEL_SC2_PA2_EVENT_WE', 'PH_PERF_SEL_SC2_PA2_FIFO_EMPTY', - 'PH_PERF_SEL_SC2_PA2_FIFO_FULL', 'PH_PERF_SEL_SC2_PA2_FPOV_WE', - 'PH_PERF_SEL_SC2_PA2_LPOV_WE', 'PH_PERF_SEL_SC2_PA2_NULL_WE', - 'PH_PERF_SEL_SC2_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA3_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC2_PA3_EOPG_WE', 'PH_PERF_SEL_SC2_PA3_EOP_WE', - 'PH_PERF_SEL_SC2_PA3_EVENT_WE', 'PH_PERF_SEL_SC2_PA3_FIFO_EMPTY', - 'PH_PERF_SEL_SC2_PA3_FIFO_FULL', 'PH_PERF_SEL_SC2_PA3_FPOV_WE', - 'PH_PERF_SEL_SC2_PA3_LPOV_WE', 'PH_PERF_SEL_SC2_PA3_NULL_WE', - 'PH_PERF_SEL_SC2_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA4_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC2_PA4_EOPG_WE', 'PH_PERF_SEL_SC2_PA4_EOP_WE', - 'PH_PERF_SEL_SC2_PA4_EVENT_WE', 'PH_PERF_SEL_SC2_PA4_FIFO_EMPTY', - 'PH_PERF_SEL_SC2_PA4_FIFO_FULL', 'PH_PERF_SEL_SC2_PA4_FPOV_WE', - 'PH_PERF_SEL_SC2_PA4_LPOV_WE', 'PH_PERF_SEL_SC2_PA4_NULL_WE', - 'PH_PERF_SEL_SC2_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA5_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC2_PA5_EOPG_WE', 'PH_PERF_SEL_SC2_PA5_EOP_WE', - 'PH_PERF_SEL_SC2_PA5_EVENT_WE', 'PH_PERF_SEL_SC2_PA5_FIFO_EMPTY', - 'PH_PERF_SEL_SC2_PA5_FIFO_FULL', 'PH_PERF_SEL_SC2_PA5_FPOV_WE', - 'PH_PERF_SEL_SC2_PA5_LPOV_WE', 'PH_PERF_SEL_SC2_PA5_NULL_WE', - 'PH_PERF_SEL_SC2_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA6_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC2_PA6_EOPG_WE', 'PH_PERF_SEL_SC2_PA6_EOP_WE', - 'PH_PERF_SEL_SC2_PA6_EVENT_WE', 'PH_PERF_SEL_SC2_PA6_FIFO_EMPTY', - 'PH_PERF_SEL_SC2_PA6_FIFO_FULL', 'PH_PERF_SEL_SC2_PA6_FPOV_WE', - 'PH_PERF_SEL_SC2_PA6_LPOV_WE', 'PH_PERF_SEL_SC2_PA6_NULL_WE', - 'PH_PERF_SEL_SC2_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA7_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC2_PA7_EOPG_WE', 'PH_PERF_SEL_SC2_PA7_EOP_WE', - 'PH_PERF_SEL_SC2_PA7_EVENT_WE', 'PH_PERF_SEL_SC2_PA7_FIFO_EMPTY', - 'PH_PERF_SEL_SC2_PA7_FIFO_FULL', 'PH_PERF_SEL_SC2_PA7_FPOV_WE', - 'PH_PERF_SEL_SC2_PA7_LPOV_WE', 'PH_PERF_SEL_SC2_PA7_NULL_WE', - 'PH_PERF_SEL_SC2_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC2_SEND', 'PH_PERF_SEL_SC2_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC3_ARB_BUSY', - 'PH_PERF_SEL_SC3_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC3_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC3_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC3_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC3_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC3_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC3_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC3_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC3_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC3_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC3_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC3_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC3_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC3_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC3_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC3_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC3_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC3_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA0_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC3_PA0_EOPG_WE', 'PH_PERF_SEL_SC3_PA0_EOP_WE', - 'PH_PERF_SEL_SC3_PA0_EVENT_WE', 'PH_PERF_SEL_SC3_PA0_FIFO_EMPTY', - 'PH_PERF_SEL_SC3_PA0_FIFO_FULL', 'PH_PERF_SEL_SC3_PA0_FPOV_WE', - 'PH_PERF_SEL_SC3_PA0_LPOV_WE', 'PH_PERF_SEL_SC3_PA0_NULL_WE', - 'PH_PERF_SEL_SC3_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA1_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC3_PA1_EOPG_WE', 'PH_PERF_SEL_SC3_PA1_EOP_WE', - 'PH_PERF_SEL_SC3_PA1_EVENT_WE', 'PH_PERF_SEL_SC3_PA1_FIFO_EMPTY', - 'PH_PERF_SEL_SC3_PA1_FIFO_FULL', 'PH_PERF_SEL_SC3_PA1_FPOV_WE', - 'PH_PERF_SEL_SC3_PA1_LPOV_WE', 'PH_PERF_SEL_SC3_PA1_NULL_WE', - 'PH_PERF_SEL_SC3_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA2_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC3_PA2_EOPG_WE', 'PH_PERF_SEL_SC3_PA2_EOP_WE', - 'PH_PERF_SEL_SC3_PA2_EVENT_WE', 'PH_PERF_SEL_SC3_PA2_FIFO_EMPTY', - 'PH_PERF_SEL_SC3_PA2_FIFO_FULL', 'PH_PERF_SEL_SC3_PA2_FPOV_WE', - 'PH_PERF_SEL_SC3_PA2_LPOV_WE', 'PH_PERF_SEL_SC3_PA2_NULL_WE', - 'PH_PERF_SEL_SC3_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA3_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC3_PA3_EOPG_WE', 'PH_PERF_SEL_SC3_PA3_EOP_WE', - 'PH_PERF_SEL_SC3_PA3_EVENT_WE', 'PH_PERF_SEL_SC3_PA3_FIFO_EMPTY', - 'PH_PERF_SEL_SC3_PA3_FIFO_FULL', 'PH_PERF_SEL_SC3_PA3_FPOV_WE', - 'PH_PERF_SEL_SC3_PA3_LPOV_WE', 'PH_PERF_SEL_SC3_PA3_NULL_WE', - 'PH_PERF_SEL_SC3_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA4_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC3_PA4_EOPG_WE', 'PH_PERF_SEL_SC3_PA4_EOP_WE', - 'PH_PERF_SEL_SC3_PA4_EVENT_WE', 'PH_PERF_SEL_SC3_PA4_FIFO_EMPTY', - 'PH_PERF_SEL_SC3_PA4_FIFO_FULL', 'PH_PERF_SEL_SC3_PA4_FPOV_WE', - 'PH_PERF_SEL_SC3_PA4_LPOV_WE', 'PH_PERF_SEL_SC3_PA4_NULL_WE', - 'PH_PERF_SEL_SC3_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA5_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC3_PA5_EOPG_WE', 'PH_PERF_SEL_SC3_PA5_EOP_WE', - 'PH_PERF_SEL_SC3_PA5_EVENT_WE', 'PH_PERF_SEL_SC3_PA5_FIFO_EMPTY', - 'PH_PERF_SEL_SC3_PA5_FIFO_FULL', 'PH_PERF_SEL_SC3_PA5_FPOV_WE', - 'PH_PERF_SEL_SC3_PA5_LPOV_WE', 'PH_PERF_SEL_SC3_PA5_NULL_WE', - 'PH_PERF_SEL_SC3_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA6_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC3_PA6_EOPG_WE', 'PH_PERF_SEL_SC3_PA6_EOP_WE', - 'PH_PERF_SEL_SC3_PA6_EVENT_WE', 'PH_PERF_SEL_SC3_PA6_FIFO_EMPTY', - 'PH_PERF_SEL_SC3_PA6_FIFO_FULL', 'PH_PERF_SEL_SC3_PA6_FPOV_WE', - 'PH_PERF_SEL_SC3_PA6_LPOV_WE', 'PH_PERF_SEL_SC3_PA6_NULL_WE', - 'PH_PERF_SEL_SC3_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA7_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC3_PA7_EOPG_WE', 'PH_PERF_SEL_SC3_PA7_EOP_WE', - 'PH_PERF_SEL_SC3_PA7_EVENT_WE', 'PH_PERF_SEL_SC3_PA7_FIFO_EMPTY', - 'PH_PERF_SEL_SC3_PA7_FIFO_FULL', 'PH_PERF_SEL_SC3_PA7_FPOV_WE', - 'PH_PERF_SEL_SC3_PA7_LPOV_WE', 'PH_PERF_SEL_SC3_PA7_NULL_WE', - 'PH_PERF_SEL_SC3_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC3_SEND', 'PH_PERF_SEL_SC3_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC4_ARB_BUSY', - 'PH_PERF_SEL_SC4_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC4_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC4_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC4_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC4_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC4_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC4_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC4_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC4_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC4_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC4_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC4_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC4_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC4_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC4_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC4_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC4_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC4_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA0_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC4_PA0_EOPG_WE', 'PH_PERF_SEL_SC4_PA0_EOP_WE', - 'PH_PERF_SEL_SC4_PA0_EVENT_WE', 'PH_PERF_SEL_SC4_PA0_FIFO_EMPTY', - 'PH_PERF_SEL_SC4_PA0_FIFO_FULL', 'PH_PERF_SEL_SC4_PA0_FPOV_WE', - 'PH_PERF_SEL_SC4_PA0_LPOV_WE', 'PH_PERF_SEL_SC4_PA0_NULL_WE', - 'PH_PERF_SEL_SC4_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA1_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC4_PA1_EOPG_WE', 'PH_PERF_SEL_SC4_PA1_EOP_WE', - 'PH_PERF_SEL_SC4_PA1_EVENT_WE', 'PH_PERF_SEL_SC4_PA1_FIFO_EMPTY', - 'PH_PERF_SEL_SC4_PA1_FIFO_FULL', 'PH_PERF_SEL_SC4_PA1_FPOV_WE', - 'PH_PERF_SEL_SC4_PA1_LPOV_WE', 'PH_PERF_SEL_SC4_PA1_NULL_WE', - 'PH_PERF_SEL_SC4_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA2_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC4_PA2_EOPG_WE', 'PH_PERF_SEL_SC4_PA2_EOP_WE', - 'PH_PERF_SEL_SC4_PA2_EVENT_WE', 'PH_PERF_SEL_SC4_PA2_FIFO_EMPTY', - 'PH_PERF_SEL_SC4_PA2_FIFO_FULL', 'PH_PERF_SEL_SC4_PA2_FPOV_WE', - 'PH_PERF_SEL_SC4_PA2_LPOV_WE', 'PH_PERF_SEL_SC4_PA2_NULL_WE', - 'PH_PERF_SEL_SC4_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA3_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC4_PA3_EOPG_WE', 'PH_PERF_SEL_SC4_PA3_EOP_WE', - 'PH_PERF_SEL_SC4_PA3_EVENT_WE', 'PH_PERF_SEL_SC4_PA3_FIFO_EMPTY', - 'PH_PERF_SEL_SC4_PA3_FIFO_FULL', 'PH_PERF_SEL_SC4_PA3_FPOV_WE', - 'PH_PERF_SEL_SC4_PA3_LPOV_WE', 'PH_PERF_SEL_SC4_PA3_NULL_WE', - 'PH_PERF_SEL_SC4_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA4_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC4_PA4_EOPG_WE', 'PH_PERF_SEL_SC4_PA4_EOP_WE', - 'PH_PERF_SEL_SC4_PA4_EVENT_WE', 'PH_PERF_SEL_SC4_PA4_FIFO_EMPTY', - 'PH_PERF_SEL_SC4_PA4_FIFO_FULL', 'PH_PERF_SEL_SC4_PA4_FPOV_WE', - 'PH_PERF_SEL_SC4_PA4_LPOV_WE', 'PH_PERF_SEL_SC4_PA4_NULL_WE', - 'PH_PERF_SEL_SC4_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA5_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC4_PA5_EOPG_WE', 'PH_PERF_SEL_SC4_PA5_EOP_WE', - 'PH_PERF_SEL_SC4_PA5_EVENT_WE', 'PH_PERF_SEL_SC4_PA5_FIFO_EMPTY', - 'PH_PERF_SEL_SC4_PA5_FIFO_FULL', 'PH_PERF_SEL_SC4_PA5_FPOV_WE', - 'PH_PERF_SEL_SC4_PA5_LPOV_WE', 'PH_PERF_SEL_SC4_PA5_NULL_WE', - 'PH_PERF_SEL_SC4_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA6_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC4_PA6_EOPG_WE', 'PH_PERF_SEL_SC4_PA6_EOP_WE', - 'PH_PERF_SEL_SC4_PA6_EVENT_WE', 'PH_PERF_SEL_SC4_PA6_FIFO_EMPTY', - 'PH_PERF_SEL_SC4_PA6_FIFO_FULL', 'PH_PERF_SEL_SC4_PA6_FPOV_WE', - 'PH_PERF_SEL_SC4_PA6_LPOV_WE', 'PH_PERF_SEL_SC4_PA6_NULL_WE', - 'PH_PERF_SEL_SC4_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA7_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC4_PA7_EOPG_WE', 'PH_PERF_SEL_SC4_PA7_EOP_WE', - 'PH_PERF_SEL_SC4_PA7_EVENT_WE', 'PH_PERF_SEL_SC4_PA7_FIFO_EMPTY', - 'PH_PERF_SEL_SC4_PA7_FIFO_FULL', 'PH_PERF_SEL_SC4_PA7_FPOV_WE', - 'PH_PERF_SEL_SC4_PA7_LPOV_WE', 'PH_PERF_SEL_SC4_PA7_NULL_WE', - 'PH_PERF_SEL_SC4_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC4_SEND', 'PH_PERF_SEL_SC4_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC5_ARB_BUSY', - 'PH_PERF_SEL_SC5_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC5_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC5_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC5_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC5_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC5_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC5_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC5_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC5_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC5_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC5_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC5_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC5_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC5_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC5_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC5_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC5_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC5_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA0_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC5_PA0_EOPG_WE', 'PH_PERF_SEL_SC5_PA0_EOP_WE', - 'PH_PERF_SEL_SC5_PA0_EVENT_WE', 'PH_PERF_SEL_SC5_PA0_FIFO_EMPTY', - 'PH_PERF_SEL_SC5_PA0_FIFO_FULL', 'PH_PERF_SEL_SC5_PA0_FPOV_WE', - 'PH_PERF_SEL_SC5_PA0_LPOV_WE', 'PH_PERF_SEL_SC5_PA0_NULL_WE', - 'PH_PERF_SEL_SC5_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA1_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC5_PA1_EOPG_WE', 'PH_PERF_SEL_SC5_PA1_EOP_WE', - 'PH_PERF_SEL_SC5_PA1_EVENT_WE', 'PH_PERF_SEL_SC5_PA1_FIFO_EMPTY', - 'PH_PERF_SEL_SC5_PA1_FIFO_FULL', 'PH_PERF_SEL_SC5_PA1_FPOV_WE', - 'PH_PERF_SEL_SC5_PA1_LPOV_WE', 'PH_PERF_SEL_SC5_PA1_NULL_WE', - 'PH_PERF_SEL_SC5_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA2_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC5_PA2_EOPG_WE', 'PH_PERF_SEL_SC5_PA2_EOP_WE', - 'PH_PERF_SEL_SC5_PA2_EVENT_WE', 'PH_PERF_SEL_SC5_PA2_FIFO_EMPTY', - 'PH_PERF_SEL_SC5_PA2_FIFO_FULL', 'PH_PERF_SEL_SC5_PA2_FPOV_WE', - 'PH_PERF_SEL_SC5_PA2_LPOV_WE', 'PH_PERF_SEL_SC5_PA2_NULL_WE', - 'PH_PERF_SEL_SC5_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA3_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC5_PA3_EOPG_WE', 'PH_PERF_SEL_SC5_PA3_EOP_WE', - 'PH_PERF_SEL_SC5_PA3_EVENT_WE', 'PH_PERF_SEL_SC5_PA3_FIFO_EMPTY', - 'PH_PERF_SEL_SC5_PA3_FIFO_FULL', 'PH_PERF_SEL_SC5_PA3_FPOV_WE', - 'PH_PERF_SEL_SC5_PA3_LPOV_WE', 'PH_PERF_SEL_SC5_PA3_NULL_WE', - 'PH_PERF_SEL_SC5_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA4_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC5_PA4_EOPG_WE', 'PH_PERF_SEL_SC5_PA4_EOP_WE', - 'PH_PERF_SEL_SC5_PA4_EVENT_WE', 'PH_PERF_SEL_SC5_PA4_FIFO_EMPTY', - 'PH_PERF_SEL_SC5_PA4_FIFO_FULL', 'PH_PERF_SEL_SC5_PA4_FPOV_WE', - 'PH_PERF_SEL_SC5_PA4_LPOV_WE', 'PH_PERF_SEL_SC5_PA4_NULL_WE', - 'PH_PERF_SEL_SC5_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA5_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC5_PA5_EOPG_WE', 'PH_PERF_SEL_SC5_PA5_EOP_WE', - 'PH_PERF_SEL_SC5_PA5_EVENT_WE', 'PH_PERF_SEL_SC5_PA5_FIFO_EMPTY', - 'PH_PERF_SEL_SC5_PA5_FIFO_FULL', 'PH_PERF_SEL_SC5_PA5_FPOV_WE', - 'PH_PERF_SEL_SC5_PA5_LPOV_WE', 'PH_PERF_SEL_SC5_PA5_NULL_WE', - 'PH_PERF_SEL_SC5_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA6_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC5_PA6_EOPG_WE', 'PH_PERF_SEL_SC5_PA6_EOP_WE', - 'PH_PERF_SEL_SC5_PA6_EVENT_WE', 'PH_PERF_SEL_SC5_PA6_FIFO_EMPTY', - 'PH_PERF_SEL_SC5_PA6_FIFO_FULL', 'PH_PERF_SEL_SC5_PA6_FPOV_WE', - 'PH_PERF_SEL_SC5_PA6_LPOV_WE', 'PH_PERF_SEL_SC5_PA6_NULL_WE', - 'PH_PERF_SEL_SC5_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA7_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC5_PA7_EOPG_WE', 'PH_PERF_SEL_SC5_PA7_EOP_WE', - 'PH_PERF_SEL_SC5_PA7_EVENT_WE', 'PH_PERF_SEL_SC5_PA7_FIFO_EMPTY', - 'PH_PERF_SEL_SC5_PA7_FIFO_FULL', 'PH_PERF_SEL_SC5_PA7_FPOV_WE', - 'PH_PERF_SEL_SC5_PA7_LPOV_WE', 'PH_PERF_SEL_SC5_PA7_NULL_WE', - 'PH_PERF_SEL_SC5_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC5_SEND', 'PH_PERF_SEL_SC5_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC6_ARB_BUSY', - 'PH_PERF_SEL_SC6_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC6_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC6_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC6_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC6_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC6_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC6_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC6_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC6_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC6_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC6_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC6_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC6_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC6_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC6_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC6_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC6_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC6_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA0_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC6_PA0_EOPG_WE', 'PH_PERF_SEL_SC6_PA0_EOP_WE', - 'PH_PERF_SEL_SC6_PA0_EVENT_WE', 'PH_PERF_SEL_SC6_PA0_FIFO_EMPTY', - 'PH_PERF_SEL_SC6_PA0_FIFO_FULL', 'PH_PERF_SEL_SC6_PA0_FPOV_WE', - 'PH_PERF_SEL_SC6_PA0_LPOV_WE', 'PH_PERF_SEL_SC6_PA0_NULL_WE', - 'PH_PERF_SEL_SC6_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA1_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC6_PA1_EOPG_WE', 'PH_PERF_SEL_SC6_PA1_EOP_WE', - 'PH_PERF_SEL_SC6_PA1_EVENT_WE', 'PH_PERF_SEL_SC6_PA1_FIFO_EMPTY', - 'PH_PERF_SEL_SC6_PA1_FIFO_FULL', 'PH_PERF_SEL_SC6_PA1_FPOV_WE', - 'PH_PERF_SEL_SC6_PA1_LPOV_WE', 'PH_PERF_SEL_SC6_PA1_NULL_WE', - 'PH_PERF_SEL_SC6_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA2_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC6_PA2_EOPG_WE', 'PH_PERF_SEL_SC6_PA2_EOP_WE', - 'PH_PERF_SEL_SC6_PA2_EVENT_WE', 'PH_PERF_SEL_SC6_PA2_FIFO_EMPTY', - 'PH_PERF_SEL_SC6_PA2_FIFO_FULL', 'PH_PERF_SEL_SC6_PA2_FPOV_WE', - 'PH_PERF_SEL_SC6_PA2_LPOV_WE', 'PH_PERF_SEL_SC6_PA2_NULL_WE', - 'PH_PERF_SEL_SC6_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA3_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC6_PA3_EOPG_WE', 'PH_PERF_SEL_SC6_PA3_EOP_WE', - 'PH_PERF_SEL_SC6_PA3_EVENT_WE', 'PH_PERF_SEL_SC6_PA3_FIFO_EMPTY', - 'PH_PERF_SEL_SC6_PA3_FIFO_FULL', 'PH_PERF_SEL_SC6_PA3_FPOV_WE', - 'PH_PERF_SEL_SC6_PA3_LPOV_WE', 'PH_PERF_SEL_SC6_PA3_NULL_WE', - 'PH_PERF_SEL_SC6_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA4_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC6_PA4_EOPG_WE', 'PH_PERF_SEL_SC6_PA4_EOP_WE', - 'PH_PERF_SEL_SC6_PA4_EVENT_WE', 'PH_PERF_SEL_SC6_PA4_FIFO_EMPTY', - 'PH_PERF_SEL_SC6_PA4_FIFO_FULL', 'PH_PERF_SEL_SC6_PA4_FPOV_WE', - 'PH_PERF_SEL_SC6_PA4_LPOV_WE', 'PH_PERF_SEL_SC6_PA4_NULL_WE', - 'PH_PERF_SEL_SC6_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA5_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC6_PA5_EOPG_WE', 'PH_PERF_SEL_SC6_PA5_EOP_WE', - 'PH_PERF_SEL_SC6_PA5_EVENT_WE', 'PH_PERF_SEL_SC6_PA5_FIFO_EMPTY', - 'PH_PERF_SEL_SC6_PA5_FIFO_FULL', 'PH_PERF_SEL_SC6_PA5_FPOV_WE', - 'PH_PERF_SEL_SC6_PA5_LPOV_WE', 'PH_PERF_SEL_SC6_PA5_NULL_WE', - 'PH_PERF_SEL_SC6_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA6_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC6_PA6_EOPG_WE', 'PH_PERF_SEL_SC6_PA6_EOP_WE', - 'PH_PERF_SEL_SC6_PA6_EVENT_WE', 'PH_PERF_SEL_SC6_PA6_FIFO_EMPTY', - 'PH_PERF_SEL_SC6_PA6_FIFO_FULL', 'PH_PERF_SEL_SC6_PA6_FPOV_WE', - 'PH_PERF_SEL_SC6_PA6_LPOV_WE', 'PH_PERF_SEL_SC6_PA6_NULL_WE', - 'PH_PERF_SEL_SC6_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA7_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC6_PA7_EOPG_WE', 'PH_PERF_SEL_SC6_PA7_EOP_WE', - 'PH_PERF_SEL_SC6_PA7_EVENT_WE', 'PH_PERF_SEL_SC6_PA7_FIFO_EMPTY', - 'PH_PERF_SEL_SC6_PA7_FIFO_FULL', 'PH_PERF_SEL_SC6_PA7_FPOV_WE', - 'PH_PERF_SEL_SC6_PA7_LPOV_WE', 'PH_PERF_SEL_SC6_PA7_NULL_WE', - 'PH_PERF_SEL_SC6_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC6_SEND', 'PH_PERF_SEL_SC6_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC7_ARB_BUSY', - 'PH_PERF_SEL_SC7_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC7_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC7_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC7_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC7_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC7_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC7_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC7_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC7_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC7_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC7_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC7_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC7_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC7_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC7_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC7_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC7_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC7_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA0_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC7_PA0_EOPG_WE', 'PH_PERF_SEL_SC7_PA0_EOP_WE', - 'PH_PERF_SEL_SC7_PA0_EVENT_WE', 'PH_PERF_SEL_SC7_PA0_FIFO_EMPTY', - 'PH_PERF_SEL_SC7_PA0_FIFO_FULL', 'PH_PERF_SEL_SC7_PA0_FPOV_WE', - 'PH_PERF_SEL_SC7_PA0_LPOV_WE', 'PH_PERF_SEL_SC7_PA0_NULL_WE', - 'PH_PERF_SEL_SC7_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA1_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC7_PA1_EOPG_WE', 'PH_PERF_SEL_SC7_PA1_EOP_WE', - 'PH_PERF_SEL_SC7_PA1_EVENT_WE', 'PH_PERF_SEL_SC7_PA1_FIFO_EMPTY', - 'PH_PERF_SEL_SC7_PA1_FIFO_FULL', 'PH_PERF_SEL_SC7_PA1_FPOV_WE', - 'PH_PERF_SEL_SC7_PA1_LPOV_WE', 'PH_PERF_SEL_SC7_PA1_NULL_WE', - 'PH_PERF_SEL_SC7_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA2_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC7_PA2_EOPG_WE', 'PH_PERF_SEL_SC7_PA2_EOP_WE', - 'PH_PERF_SEL_SC7_PA2_EVENT_WE', 'PH_PERF_SEL_SC7_PA2_FIFO_EMPTY', - 'PH_PERF_SEL_SC7_PA2_FIFO_FULL', 'PH_PERF_SEL_SC7_PA2_FPOV_WE', - 'PH_PERF_SEL_SC7_PA2_LPOV_WE', 'PH_PERF_SEL_SC7_PA2_NULL_WE', - 'PH_PERF_SEL_SC7_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA3_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC7_PA3_EOPG_WE', 'PH_PERF_SEL_SC7_PA3_EOP_WE', - 'PH_PERF_SEL_SC7_PA3_EVENT_WE', 'PH_PERF_SEL_SC7_PA3_FIFO_EMPTY', - 'PH_PERF_SEL_SC7_PA3_FIFO_FULL', 'PH_PERF_SEL_SC7_PA3_FPOV_WE', - 'PH_PERF_SEL_SC7_PA3_LPOV_WE', 'PH_PERF_SEL_SC7_PA3_NULL_WE', - 'PH_PERF_SEL_SC7_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA4_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC7_PA4_EOPG_WE', 'PH_PERF_SEL_SC7_PA4_EOP_WE', - 'PH_PERF_SEL_SC7_PA4_EVENT_WE', 'PH_PERF_SEL_SC7_PA4_FIFO_EMPTY', - 'PH_PERF_SEL_SC7_PA4_FIFO_FULL', 'PH_PERF_SEL_SC7_PA4_FPOV_WE', - 'PH_PERF_SEL_SC7_PA4_LPOV_WE', 'PH_PERF_SEL_SC7_PA4_NULL_WE', - 'PH_PERF_SEL_SC7_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA5_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC7_PA5_EOPG_WE', 'PH_PERF_SEL_SC7_PA5_EOP_WE', - 'PH_PERF_SEL_SC7_PA5_EVENT_WE', 'PH_PERF_SEL_SC7_PA5_FIFO_EMPTY', - 'PH_PERF_SEL_SC7_PA5_FIFO_FULL', 'PH_PERF_SEL_SC7_PA5_FPOV_WE', - 'PH_PERF_SEL_SC7_PA5_LPOV_WE', 'PH_PERF_SEL_SC7_PA5_NULL_WE', - 'PH_PERF_SEL_SC7_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA6_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC7_PA6_EOPG_WE', 'PH_PERF_SEL_SC7_PA6_EOP_WE', - 'PH_PERF_SEL_SC7_PA6_EVENT_WE', 'PH_PERF_SEL_SC7_PA6_FIFO_EMPTY', - 'PH_PERF_SEL_SC7_PA6_FIFO_FULL', 'PH_PERF_SEL_SC7_PA6_FPOV_WE', - 'PH_PERF_SEL_SC7_PA6_LPOV_WE', 'PH_PERF_SEL_SC7_PA6_NULL_WE', - 'PH_PERF_SEL_SC7_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA7_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC7_PA7_EOPG_WE', 'PH_PERF_SEL_SC7_PA7_EOP_WE', - 'PH_PERF_SEL_SC7_PA7_EVENT_WE', 'PH_PERF_SEL_SC7_PA7_FIFO_EMPTY', - 'PH_PERF_SEL_SC7_PA7_FIFO_FULL', 'PH_PERF_SEL_SC7_PA7_FPOV_WE', - 'PH_PERF_SEL_SC7_PA7_LPOV_WE', 'PH_PERF_SEL_SC7_PA7_NULL_WE', - 'PH_PERF_SEL_SC7_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC7_SEND', 'PH_PERF_SEL_SC7_SRPS_WINDOW_VALID', - 'PH_SPI_MODE_ARBITER_SELECTED_PA_PH_FIFO_COUNT', - 'PH_SPI_MODE_DISABLED', 'PH_SPI_MODE_LARGEST_PA_PH_FIFO_COUNT', - 'PIPELINESTAT_START', 'PIPELINESTAT_STOP', 'PIPE_ALIGNED', - 'PIPE_ALIGNED_SURF', 'PIPE_COMPAT_LEVEL', 'PIPE_ID0', 'PIPE_ID1', - 'PIPE_ID2', 'PIPE_ID3', 'PIPE_INT_MASK_MODE', - 'PIPE_INT_MASK_MODE_DISABLE', 'PIPE_INT_MASK_MODE_ENABLE', - 'PIPE_INT_TYPE_MODE', 'PIPE_INT_TYPE_MODE_DISABLE', - 'PIPE_INT_TYPE_MODE_ENABLE', 'PIPE_IN_FLUSH_URGENT', - 'PIPE_IN_FLUSH_URGENT_DISABLE', 'PIPE_IN_FLUSH_URGENT_ENABLE', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_RESERVED', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYA', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYB', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYC', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYD', - 'PIPE_PIXEL_RATE_PLL_SOURCE', - 'PIPE_PIXEL_RATE_PLL_SOURCE_DISPPLL', - 'PIPE_PIXEL_RATE_PLL_SOURCE_PHYPLL', 'PIPE_PIXEL_RATE_SOURCE', - 'PIPE_PIXEL_RATE_SOURCE_P0PLL', 'PIPE_PIXEL_RATE_SOURCE_P1PLL', - 'PIPE_PIXEL_RATE_SOURCE_P2PLL', 'PIPE_UNALIGNED_SURF', - 'PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_1', - 'PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 'PIXCDC_MEM_PWR_LIGHT_SLEEP_MODE', 'PIXEL_PIPE_OCCLUSION_COUNT_0', - 'PIXEL_PIPE_OCCLUSION_COUNT_1', 'PIXEL_PIPE_OCCLUSION_COUNT_2', - 'PIXEL_PIPE_OCCLUSION_COUNT_3', 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_0', - 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_1', - 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_0', - 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_1', 'PIXEL_PIPE_STAT_CONTROL', - 'PIXEL_PIPE_STAT_DUMP', 'PIXEL_PIPE_STAT_RESET', - 'PIXEL_PIPE_STRIDE_128_BITS', 'PIXEL_PIPE_STRIDE_256_BITS', - 'PIXEL_PIPE_STRIDE_32_BITS', 'PIXEL_PIPE_STRIDE_64_BITS', - 'PIX_DYNAMIC_EXPANSION', 'PIX_EXPAND_MODE', 'PIX_ZERO_EXPANSION', - 'PLL_CFG_IF_SOFT_RESET', 'PLL_CFG_IF_SOFT_RESET_FORCE', - 'PLL_CFG_IF_SOFT_RESET_NOOP', 'PM_ASSERT_RESET', - 'PM_ASSERT_RESET_0', 'PM_ASSERT_RESET_1', 'POINTLIST', - 'POWER_STATE_ENUM', 'POWER_STATE_ENUM_DS', 'POWER_STATE_ENUM_LS', - 'POWER_STATE_ENUM_ON', 'POWER_STATE_ENUM_SD', 'PRE_CSC_BYPASS', - 'PRE_CSC_MODE_ENUM', 'PRE_CSC_SET_A', 'PRE_CSC_SET_B', - 'PRE_DEGAM_BT2020', 'PRE_DEGAM_BT2100HLG', 'PRE_DEGAM_BT2100PQ', - 'PRE_DEGAM_BYPASS', 'PRE_DEGAM_ENABLE', 'PRE_DEGAM_GAMMA_22', - 'PRE_DEGAM_GAMMA_24', 'PRE_DEGAM_GAMMA_26', 'PRE_DEGAM_MODE', - 'PRE_DEGAM_SELECT', 'PRE_DEGAM_SRGB', 'PROG_SEQ', 'PROTVIOL', - 'PRQ_MRQ_FLUSH_URGENT', 'PRQ_MRQ_FLUSH_URGENT_DISABLE', - 'PRQ_MRQ_FLUSH_URGENT_ENABLE', 'PS', 'PSLC_ASAP', 'PSLC_AUTO', - 'PSLC_COUNTDOWN', 'PSLC_ON_HANG_ONLY', 'PS_DONE', - 'PS_PARTIAL_FLUSH', 'PTE_BUFFER_MODE', 'PTE_BUFFER_MODE_0', - 'PTE_BUFFER_MODE_1', 'PTE_ROW_HEIGHT_LINEAR', - 'PTE_ROW_HEIGHT_LINEAR_1024L', 'PTE_ROW_HEIGHT_LINEAR_128L', - 'PTE_ROW_HEIGHT_LINEAR_16L', 'PTE_ROW_HEIGHT_LINEAR_256L', - 'PTE_ROW_HEIGHT_LINEAR_32L', 'PTE_ROW_HEIGHT_LINEAR_512L', - 'PTE_ROW_HEIGHT_LINEAR_64L', 'PTE_ROW_HEIGHT_LINEAR_8L', - 'PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE', - 'PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN', - 'PWRSEQ_BL_PWM_CNTL2_DBG_BL_PWM_INPUT_REFCLK_SELECT', - 'PWRSEQ_BL_PWM_CNTL_BL_PWM_EN', - 'PWRSEQ_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN', - 'PWRSEQ_BL_PWM_DISABLE', 'PWRSEQ_BL_PWM_ENABLE', - 'PWRSEQ_BL_PWM_FRACTIONAL_DISABLE', - 'PWRSEQ_BL_PWM_FRACTIONAL_ENABLE', - 'PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_DISABLE', - 'PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN', - 'PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_ENABLE', - 'PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN', - 'PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL1_PWM', - 'PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL_PWM', - 'PWRSEQ_BL_PWM_GRP1_REG_LOCK', - 'PWRSEQ_BL_PWM_GRP1_REG_LOCK_DISABLE', - 'PWRSEQ_BL_PWM_GRP1_REG_LOCK_ENABLE', - 'PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START', - 'PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START_DISABLE', - 'PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START_ENABLE', - 'PWRSEQ_BL_PWM_OVERRIDE_BL_OUT_DISABLE', - 'PWRSEQ_BL_PWM_OVERRIDE_BL_OUT_ENABLE', - 'PWRSEQ_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN_NORMAL', - 'PWRSEQ_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN_PWM', - 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG1', - 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG2', - 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG3', - 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_NORMAL', - 'PWRSEQ_GPIO_MASK_EN', 'PWRSEQ_GPIO_MASK_EN_HARDWARE', - 'PWRSEQ_GPIO_MASK_EN_SOFTWARE', 'PWRSEQ_PANEL_BLON_OFF', - 'PWRSEQ_PANEL_BLON_ON', 'PWRSEQ_PANEL_BLON_POL_INVERT', - 'PWRSEQ_PANEL_BLON_POL_NON_INVERT', 'PWRSEQ_PANEL_DIGON_OFF', - 'PWRSEQ_PANEL_DIGON_ON', 'PWRSEQ_PANEL_DIGON_POL_INVERT', - 'PWRSEQ_PANEL_DIGON_POL_NON_INVERT', - 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON', - 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON_POL', - 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON', - 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON_POL', - 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_SYNCEN_POL', - 'PWRSEQ_PANEL_PWRSEQ_CNTL_TARGET_STATE', - 'PWRSEQ_PANEL_PWRSEQ_DELAY2_PANEL_VARY_BL_OVERRIDE_EN', - 'PWRSEQ_PANEL_PWRSEQ_TARGET_STATE_LCD_OFF', - 'PWRSEQ_PANEL_PWRSEQ_TARGET_STATE_LCD_ON', - 'PWRSEQ_PANEL_SYNCEN_POL_INVERT', - 'PWRSEQ_PANEL_SYNCEN_POL_NON_INVERT', - 'PWRSEQ_PANEL_VARY_BL_OVERRIDE_EN_BLON', - 'PWRSEQ_PANEL_VARY_BL_OVERRIDE_EN_SEPARATE', 'PerfCounter_Vals', - 'PhSPIstatusMode', 'PixelPipeCounterId', 'PixelPipeStride', - 'PkrMap', 'PkrXsel', 'PkrXsel2', 'PkrYsel', 'RAMA', 'RAMA_ACCESS', - 'RAMB', 'RAMB_ACCESS', 'RAM_LUT', 'RANGE_00', 'RANGE_FF', - 'RASTER_CONFIG_PKR_MAP_0', 'RASTER_CONFIG_PKR_MAP_1', - 'RASTER_CONFIG_PKR_MAP_2', 'RASTER_CONFIG_PKR_MAP_3', - 'RASTER_CONFIG_PKR_XSEL2_0', 'RASTER_CONFIG_PKR_XSEL2_1', - 'RASTER_CONFIG_PKR_XSEL2_2', 'RASTER_CONFIG_PKR_XSEL2_3', - 'RASTER_CONFIG_PKR_XSEL_0', 'RASTER_CONFIG_PKR_XSEL_1', - 'RASTER_CONFIG_PKR_XSEL_2', 'RASTER_CONFIG_PKR_XSEL_3', - 'RASTER_CONFIG_PKR_YSEL_0', 'RASTER_CONFIG_PKR_YSEL_1', - 'RASTER_CONFIG_PKR_YSEL_2', 'RASTER_CONFIG_PKR_YSEL_3', - 'RASTER_CONFIG_RB_MAP_0', 'RASTER_CONFIG_RB_MAP_1', - 'RASTER_CONFIG_RB_MAP_2', 'RASTER_CONFIG_RB_MAP_3', - 'RASTER_CONFIG_RB_XSEL2_0', 'RASTER_CONFIG_RB_XSEL2_1', - 'RASTER_CONFIG_RB_XSEL2_2', 'RASTER_CONFIG_RB_XSEL2_3', - 'RASTER_CONFIG_RB_XSEL_0', 'RASTER_CONFIG_RB_XSEL_1', - 'RASTER_CONFIG_RB_YSEL_0', 'RASTER_CONFIG_RB_YSEL_1', - 'RASTER_CONFIG_SC_MAP_0', 'RASTER_CONFIG_SC_MAP_1', - 'RASTER_CONFIG_SC_MAP_2', 'RASTER_CONFIG_SC_MAP_3', - 'RASTER_CONFIG_SC_XSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SC_XSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SC_XSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SC_XSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_8_WIDE_TILE', 'RASTER_CONFIG_SE_MAP_0', - 'RASTER_CONFIG_SE_MAP_1', 'RASTER_CONFIG_SE_MAP_2', - 'RASTER_CONFIG_SE_MAP_3', 'RASTER_CONFIG_SE_PAIR_MAP_0', - 'RASTER_CONFIG_SE_PAIR_MAP_1', 'RASTER_CONFIG_SE_PAIR_MAP_2', - 'RASTER_CONFIG_SE_PAIR_MAP_3', - 'RASTER_CONFIG_SE_PAIR_XSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_XSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_XSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_XSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_8_WIDE_TILE', 'RAW', - 'RDPCSPIPE_APBCLK_DISABLE', 'RDPCSPIPE_APBCLK_ENABLE', - 'RDPCSPIPE_APB_PSLVERR_MASK_DISABLE', - 'RDPCSPIPE_APB_PSLVERR_MASK_ENABLE', - 'RDPCSPIPE_CLOCK_CNTL_LANE_CLK_EN', - 'RDPCSPIPE_CLOCK_CNTL_RDPCS_APBCLK_EN', - 'RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_CLOCK_ON', - 'RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_EN', - 'RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_GATE_DIS', - 'RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_PHYD32CLK_CLOCK_ON', - 'RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_CLOCK_ON', - 'RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_EN', - 'RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_GATE_DIS', - 'RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_PASS', - 'RDPCSPIPE_CNTL_RDPCS_PIPE_FIFO_EN', - 'RDPCSPIPE_CNTL_RDPCS_PIPE_FIFO_LANE_EN', - 'RDPCSPIPE_CNTL_RDPCS_PIPE_SOFT_RESET', - 'RDPCSPIPE_CNTL_RDPCS_SRAM_SOFT_RESET', - 'RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK', - 'RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK_DISABLE', - 'RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK_ENABLE', - 'RDPCSPIPE_DBG_OCLA_SEL', 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_15_8', - 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_23_16', - 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_31_24', - 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_39_32', - 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_47_40', - 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_55_48', - 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_63_56', - 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_7_0', - 'RDPCSPIPE_DPALT_4LANE_TOGGLE_2LANE', - 'RDPCSPIPE_DPALT_4LANE_TOGGLE_4LANE', - 'RDPCSPIPE_DPALT_4LANE_TOGGLE_MASK_DISABLE', - 'RDPCSPIPE_DPALT_4LANE_TOGGLE_MASK_ENABLE', - 'RDPCSPIPE_DPALT_DISABLE_TOGGLE_DISABLE', - 'RDPCSPIPE_DPALT_DISABLE_TOGGLE_ENABLE', - 'RDPCSPIPE_DPALT_DISABLE_TOGGLE_MASK_DISABLE', - 'RDPCSPIPE_DPALT_DISABLE_TOGGLE_MASK_ENABLE', - 'RDPCSPIPE_ENC_TYPE', 'RDPCSPIPE_EXT_PCLK_EN_DISABLE', - 'RDPCSPIPE_EXT_PCLK_EN_ENABLE', 'RDPCSPIPE_FIFO_EMPTY', - 'RDPCSPIPE_FIFO_FULL', 'RDPCSPIPE_FIFO_IS_EMPTY', - 'RDPCSPIPE_FIFO_IS_FULL', 'RDPCSPIPE_FIFO_NOT_EMPTY', - 'RDPCSPIPE_FIFO_NOT_FULL', - 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_APB_PSLVERR_MASK', - 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE', - 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE_MASK', - 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE', - 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE_MASK', - 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_PIPE_FIFO_ERROR_MASK', - 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_REG_FIFO_ERROR_MASK', - 'RDPCSPIPE_LANE_BIT_ORDER_REVERSE_DISABLE', - 'RDPCSPIPE_LANE_BIT_ORDER_REVERSE_ENABLE', - 'RDPCSPIPE_LANE_PACK_FROM_MSB_DISABLE', - 'RDPCSPIPE_LANE_PACK_FROM_MSB_ENABLE', - 'RDPCSPIPE_MEM_PWR_DEEP_SLEEP', 'RDPCSPIPE_MEM_PWR_LIGHT_SLEEP', - 'RDPCSPIPE_MEM_PWR_NO_FORCE', - 'RDPCSPIPE_MEM_PWR_PWR_STATE_DEEP_SLEEP', - 'RDPCSPIPE_MEM_PWR_PWR_STATE_LIGHT_SLEEP', - 'RDPCSPIPE_MEM_PWR_PWR_STATE_ON', - 'RDPCSPIPE_MEM_PWR_PWR_STATE_SHUT_DOWN', - 'RDPCSPIPE_MEM_PWR_SHUT_DOWN', - 'RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK', - 'RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK_DISABLE', - 'RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK_ENABLE', - 'RDPCSPIPE_PACK_MODE', 'RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_CR_MUX_SEL', - 'RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_CR_PARA_SEL', - 'RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_REF_RANGE', - 'RDPCSPIPE_PHY_CNTL0_RDPCS_SRAM_EXT_LD_DONE', - 'RDPCSPIPE_PHY_CNTL0_RDPCS_SRAM_INIT_DONE', - 'RDPCSPIPE_PHY_CNTL11_RDPCS_PHY_DP_REF_CLK_MPLLB_DIV', - 'RDPCSPIPE_PHY_CNTL11_RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV', - 'RDPCSPIPE_PHY_CNTL12_RDPCS_PHY_DP_MPLLB_TX_CLK_DIV', - 'RDPCSPIPE_PHY_CNTL4_RDPCS_PHY_DP_TX_TERM_CTRL', - 'RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_DETRX_RESULT', - 'RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_RATE', - 'RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_WIDTH', - 'RDPCSPIPE_PHY_CNTL_RRDPCS_PHY_DP_TX_PSTATE', - 'RDPCSPIPE_PHY_CR_MUX_SEL_FOR_DC', - 'RDPCSPIPE_PHY_CR_MUX_SEL_FOR_USB', - 'RDPCSPIPE_PHY_CR_PARA_SEL_CR', 'RDPCSPIPE_PHY_CR_PARA_SEL_JTAG', - 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV', - 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV10', - 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV2', - 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV3', - 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV4', - 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV5', - 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV6', - 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV8', - 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV1', - 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV16', - 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV2', - 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV3', - 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV8', - 'RDPCSPIPE_PHY_DP_TX_DETRX_RESULT_DETECT', - 'RDPCSPIPE_PHY_DP_TX_DETRX_RESULT_NO_DETECT', - 'RDPCSPIPE_PHY_DP_TX_RATE', 'RDPCSPIPE_PHY_DP_TX_RATE_DIV2', - 'RDPCSPIPE_PHY_DP_TX_RATE_DIV4', - 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_40', - 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_42', - 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_44', - 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_46', - 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_48', - 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_50', - 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_52', - 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_54', - 'RDPCSPIPE_PHY_DP_TX_WIDTH_10', 'RDPCSPIPE_PHY_DP_TX_WIDTH_16', - 'RDPCSPIPE_PHY_DP_TX_WIDTH_20', 'RDPCSPIPE_PHY_DP_TX_WIDTH_8', - 'RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_0', - 'RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_1', - 'RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_2', - 'RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_3', - 'RDPCSPIPE_PHY_IF_WIDTH', 'RDPCSPIPE_PHY_RATE', - 'RDPCSPIPE_PHY_REF_ALT_CLK_DISABLE', - 'RDPCSPIPE_PHY_REF_ALT_CLK_EN', - 'RDPCSPIPE_PHY_REF_ALT_CLK_ENABLE', 'RDPCSPIPE_PHY_REF_RANGE_0', - 'RDPCSPIPE_PHY_REF_RANGE_1', 'RDPCSPIPE_PHY_REF_RANGE_2', - 'RDPCSPIPE_PHY_REF_RANGE_3', 'RDPCSPIPE_PHY_REF_RANGE_4', - 'RDPCSPIPE_PHY_REF_RANGE_5', 'RDPCSPIPE_PHY_REF_RANGE_6', - 'RDPCSPIPE_PHY_REF_RANGE_7', - 'RDPCSPIPE_PIPE_FIFO_ERROR_MASK_DISABLE', - 'RDPCSPIPE_PIPE_FIFO_ERROR_MASK_ENABLE', - 'RDPCSPIPE_REG_FIFO_ERROR_MASK_DISABLE', - 'RDPCSPIPE_REG_FIFO_ERROR_MASK_ENABLE', - 'RDPCSPIPE_SRAMCLK_DISABLE', 'RDPCSPIPE_SRAMCLK_ENABLE', - 'RDPCSPIPE_SRAMCLK_GATE_DISABLE', 'RDPCSPIPE_SRAMCLK_GATE_ENABLE', - 'RDPCSPIPE_SRAMCLK_NOT_PASS', 'RDPCSPIPE_SRAMCLK_PASS', - 'RDPCSPIPE_SRAM_EXT_LD_DONE', 'RDPCSPIPE_SRAM_EXT_LD_NOT_DONE', - 'RDPCSPIPE_SRAM_INIT_DONE', 'RDPCSPIPE_SRAM_INIT_NOT_DONE', - 'RDPCSPIPE_SRAM_SRAM_RESET_DISABLE', - 'RDPCSPIPE_SRAM_SRAM_RESET_ENABLE', - 'RDPCSPIPE_SYMCLK_SRAMCLK_CLOCK_OFF', - 'RDPCSPIPE_SYMCLK_SRAMCLK_CLOCK_ON', 'RDPCSPIPE_TEST_CLK_SEL', - 'RDPCSPIPE_TEST_CLK_SEL_CFGCLK', - 'RDPCSPIPE_TEST_CLK_SEL_DP_MPLLB_DIV_CLK', - 'RDPCSPIPE_TEST_CLK_SEL_DP_TX0_WORD_CLK', - 'RDPCSPIPE_TEST_CLK_SEL_DP_TX1_WORD_CLK', - 'RDPCSPIPE_TEST_CLK_SEL_DP_TX2_WORD_CLK', - 'RDPCSPIPE_TEST_CLK_SEL_DP_TX3_WORD_CLK', - 'RDPCSPIPE_TEST_CLK_SEL_EXT_CR_CLK', - 'RDPCSPIPE_TEST_CLK_SEL_HDMI_MPLLB_HDMI_PIXEL_CLK', - 'RDPCSPIPE_TEST_CLK_SEL_NONE', - 'RDPCSPIPE_TEST_CLK_SEL_PHY_REF_DIG_CLK', - 'RDPCSPIPE_TEST_CLK_SEL_REF_DIG_FR_clk', - 'RDPCSPIPE_TEST_CLK_SEL_SRAMCLK', - 'RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS', - 'RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS_DIV4', - 'RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS', - 'RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS_DIV4', - 'RDPCSPIPE_TEST_CLK_SEL_dtb_out0', - 'RDPCSPIPE_TEST_CLK_SEL_dtb_out1', 'RDPCS_PIPE_CLK_CLOCK_OFF', - 'RDPCS_PIPE_CLK_CLOCK_ON', 'RDPCS_PIPE_CLK_DISABLE', - 'RDPCS_PIPE_CLK_ENABLE', 'RDPCS_PIPE_CLK_GATE_DISABLE', - 'RDPCS_PIPE_CLK_GATE_ENABLE', - 'RDPCS_PIPE_CNTL_TX_LANE_PACK_FROM_MSB', - 'RDPCS_PIPE_FIFO_DISABLE', 'RDPCS_PIPE_FIFO_ENABLE', - 'RDPCS_PIPE_FIFO_LANE_DISABLE', 'RDPCS_PIPE_FIFO_LANE_ENABLE', - 'RDPCS_PIPE_PHYD32CLK_CLOCK_OFF', 'RDPCS_PIPE_PHYD32CLK_CLOCK_ON', - 'RDPCS_PIPE_SOFT_RESET_DISABLE', 'RDPCS_PIPE_SOFT_RESET_ENABLE', - 'RDPCS_PIPE_SRAM_CNTL_RDPCS_MEM_PWR_FORCE', - 'RDPCS_PIPE_SRAM_CNTL_RDPCS_MEM_PWR_PWR_STATE', 'READ_SEQ', - 'RECTLIST', 'RECT_2D', 'RED_LUT', 'REFER_TO_DP_SOF', - 'REFER_TO_OTG_SOF', 'REG_SECURE_VIOLATE_READ', - 'REG_SECURE_VIOLATE_WRITE', 'REG_UNALLOCATED_ADDR_READ', - 'REG_UNALLOCATED_ADDR_WRITE', 'REG_VIRTUAL_READ', - 'REG_VIRTUAL_WRITE', 'RESERVED_1', 'RESERVED_10', 'RESERVED_11', - 'RESERVED_20', 'RESERVED_21', 'RESERVED_22', 'RESERVED_23', - 'RESERVED_3', 'RESERVED_32', 'RESERVED_33', 'RESERVED_34', - 'RESERVED_35', 'RESERVED_44', 'RESERVED_45', 'RESERVED_46', - 'RESERVED_47', 'RESERVED_56', 'RESERVED_57', 'RESERVED_58', - 'RESERVED_59', 'RESERVED_60', 'RESERVED_61', 'RESERVED_62', - 'RESERVED_63', 'RESERVED_72', 'RESERVED_73', 'RESERVED_74', - 'RESERVED_75', 'RESERVED_8', 'RESERVED_84', 'RESERVED_85', - 'RESERVED_86', 'RESERVED_87', 'RESERVED_88', 'RESERVED_89', - 'RESERVED_9', 'RESERVED_90', 'RESERVED_91', 'RESERVED_ES', - 'RESERVED_LS', 'RESERVED_RDPOLICY', 'RESERVED_VS', - 'RESET_TO_LOWEST_VGT', 'RESET_VTX_CNT', 'RESPONSE_STATUS', 'RE_Z', - 'RGB111110_FIX', 'RGB111110_FLOAT', 'RGB565', 'RGBA1010102', - 'RGBA16161616_10LSB', 'RGBA16161616_10MSB', 'RGBA16161616_12LSB', - 'RGBA16161616_12MSB', 'RGBA16161616_FLOAT', 'RGBA16161616_SNORM', - 'RGBA16161616_UNORM', 'RGBA4444', 'RGBA5551', 'RGBA8888', 'RGBE', - 'RINGID0', 'RINGID1', 'RINGID2', 'RINGID3', - 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL', - 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_ENABLED', - 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL', - 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_ENABLED', - 'RLC_DOORBELL_MODE', 'RLC_DOORBELL_MODE_DISABLE', - 'RLC_DOORBELL_MODE_ENABLE', 'RLC_DOORBELL_MODE_ENABLE_PF', - 'RLC_DOORBELL_MODE_ENABLE_PF_VF', 'RLC_PERFCOUNTER_SEL', - 'RLC_PERFMON_STATE', 'RLC_PERFMON_STATE_DISABLE', - 'RLC_PERFMON_STATE_ENABLE', 'RLC_PERFMON_STATE_RESERVED_3', - 'RLC_PERFMON_STATE_RESERVED_4', 'RLC_PERFMON_STATE_RESERVED_5', - 'RLC_PERFMON_STATE_RESERVED_6', 'RLC_PERFMON_STATE_RESET', - 'RLC_PERFMON_STATE_ROLLOVER', 'RLC_PERF_SEL_CP_INTERRUPT', - 'RLC_PERF_SEL_GRBM_INTERRUPT', 'RLC_PERF_SEL_IH_INTERRUPT', - 'RLC_PERF_SEL_POWER_FEATURE_0', 'RLC_PERF_SEL_POWER_FEATURE_1', - 'RLC_PERF_SEL_SERDES_COMMAND_WRITE', 'RLC_PERF_SEL_SPM_INTERRUPT', - 'RMIPerfSel', 'RMI_CID', 'RMI_CID_CC', 'RMI_CID_CM', 'RMI_CID_DC', - 'RMI_CID_FC', 'RMI_CID_S', 'RMI_CID_TILE', 'RMI_CID_Z', - 'RMI_CID_ZPCPSD', 'RMI_PERF_SEL_RB_RMI_RDREQ_ALL_CID', - 'RMI_PERF_SEL_RB_RMI_WRREQ_ALL_CID', 'ROM_SIGNATURE', - 'ROTATE_0_DEGREES', 'ROTATE_180_DEGREES', 'ROTATE_270_DEGREES', - 'ROTATE_90_DEGREES', 'ROTATION_ANGLE', 'ROW_TTU_MODE', - 'RPDCSPIPE_CNTL_TX_LANE_BIT_ORDER_REVERSE_BEFORE_PACK', - 'RRDPCSPIPE_PHY_DP_TX_PSTATE_HOLD', - 'RRDPCSPIPE_PHY_DP_TX_PSTATE_HOLD_OFF', - 'RRDPCSPIPE_PHY_DP_TX_PSTATE_POWER_DOWN', - 'RRDPCSPIPE_PHY_DP_TX_PSTATE_POWER_UP', 'RSPM_CMD', - 'RSPM_CMD_CALIBRATE', 'RSPM_CMD_FORCE_SAMPLE', 'RSPM_CMD_IDLE', - 'RSPM_CMD_INVALID', 'RSPM_CMD_PERF_RESET', 'RSPM_CMD_PERF_SAMPLE', - 'RSPM_CMD_PROF_START', 'RSPM_CMD_PROF_STOP', 'RSPM_CMD_SPM_RESET', - 'RSPM_CMD_SPM_START', 'RSPM_CMD_SPM_STOP', 'RST_PIX_CNT', - 'RSV_TAG_RAM', 'RbMap', 'RbXsel', 'RbXsel2', 'RbYsel', - 'ReadPolicy', 'Reserved_0x00', 'Reserved_0x09', - 'RingCounterControl', 'SAMPLE_PIPELINESTAT', - 'SAMPLE_STREAMOUTSTATS', 'SAMPLE_STREAMOUTSTATS1', - 'SAMPLE_STREAMOUTSTATS2', 'SAMPLE_STREAMOUTSTATS3', - 'SCL_2TAP_HARDCODE', 'SCL_ALPHA_COEF', 'SCL_ALPHA_COEF_FIRST', - 'SCL_ALPHA_COEF_SECOND', 'SCL_AUTOCAL_MODE', 'SCL_BOUNDARY', - 'SCL_BOUNDARY_BLACK', 'SCL_BOUNDARY_EDGE', 'SCL_CHROMA_COEF', - 'SCL_CHROMA_COEF_FIRST', 'SCL_CHROMA_COEF_SECOND', - 'SCL_COEF_2TAP_HARDCODE_OFF', 'SCL_COEF_2TAP_HARDCODE_ON', - 'SCL_COEF_CHROMA_HORZ_FILTER', 'SCL_COEF_CHROMA_VERT_FILTER', - 'SCL_COEF_FILTER_TYPE_SEL', 'SCL_COEF_LUMA_HORZ_FILTER', - 'SCL_COEF_LUMA_VERT_FILTER', 'SCL_COEF_RAM_SEL', - 'SCL_COEF_RAM_SEL_0', 'SCL_COEF_RAM_SEL_1', 'SCL_SHARP_DISABLE', - 'SCL_SHARP_EN', 'SCL_SHARP_ENABLE', 'SC_BACKEND_BUSY', - 'SC_BACKEND_PRIM_FIFO_FULL', 'SC_BB_DISCARD', - 'SC_BCI_CREDIT_AT_MAX', 'SC_BCI_CREDIT_AT_MAX_NO_PENDING_SEND', - 'SC_BCI_CREDIT_AT_ZERO_WITH_PENDING_SEND', 'SC_BCI_SEND', - 'SC_BM_BE0_STALLED', 'SC_BM_BE1_STALLED', 'SC_BM_BE2_STALLED', - 'SC_BM_BE3_STALLED', 'SC_BM_BUSY', - 'SC_BM_MULTI_ACCUM_1_BE_STALLED', - 'SC_BM_MULTI_ACCUM_2_BE_STALLED', - 'SC_BM_MULTI_ACCUM_3_BE_STALLED', - 'SC_BM_MULTI_ACCUM_4_BE_STALLED', 'SC_BUSY_CNT_NOT_ZERO', - 'SC_BUSY_PROCESSING_MULTICYCLE_PRIM', 'SC_DB0_QUAD_INTF_BUSY', - 'SC_DB0_QUAD_INTF_CREDIT_AT_MAX', 'SC_DB0_QUAD_INTF_IDLE', - 'SC_DB0_QUAD_INTF_SEND', 'SC_DB0_QUAD_INTF_STALLED_BY_DB', - 'SC_DB0_TILE_INTERFACE_BUSY', - 'SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX', - 'SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND', - 'SC_DB0_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'SC_DB0_TILE_INTERFACE_SEND', 'SC_DB0_TILE_INTERFACE_SEND_EVENT', - 'SC_DB0_TILE_INTERFACE_SEND_SOP', - 'SC_DB0_TILE_INTERFACE_SEND_SOP_ONLY_EVENT', - 'SC_DB0_TILE_MASK_FIFO_FULL', - 'SC_DB0_WE_STALLED_BY_RSLT_FIFO_FULL', - 'SC_DB0_WE_TILE_MASK_RETURN_FIFO_FULL_WITH_WE_RSLT_FIFO_STALL', - 'SC_DB1_QUAD_INTF_BUSY', 'SC_DB1_QUAD_INTF_CREDIT_AT_MAX', - 'SC_DB1_QUAD_INTF_IDLE', 'SC_DB1_QUAD_INTF_SEND', - 'SC_DB1_QUAD_INTF_STALLED_BY_DB', 'SC_DB1_TILE_INTERFACE_BUSY', - 'SC_DB1_TILE_INTERFACE_CREDIT_AT_MAX', - 'SC_DB1_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND', - 'SC_DB1_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'SC_DB1_TILE_INTERFACE_SEND', 'SC_DB1_TILE_INTERFACE_SEND_EVENT', - 'SC_DB1_TILE_INTERFACE_SEND_SOP', - 'SC_DB1_TILE_INTERFACE_SEND_SOP_ONLY_EVENT', - 'SC_DB1_TILE_MASK_FIFO_FULL', - 'SC_DB1_WE_STALLED_BY_RSLT_FIFO_FULL', - 'SC_DB1_WE_TILE_MASK_RETURN_FIFO_FULL_WITH_WE_RSLT_FIFO_STALL', - 'SC_EARLYZ_QUAD_COUNT', 'SC_EARLYZ_QUAD_WITH_1_PIX', - 'SC_EARLYZ_QUAD_WITH_2_PIX', 'SC_EARLYZ_QUAD_WITH_3_PIX', - 'SC_EARLYZ_QUAD_WITH_4_PIX', 'SC_EOP_SYNC_WINDOW', - 'SC_FSR_WALKED', 'SC_FULL_FULL_QUAD', 'SC_FULL_HALF_QUAD', - 'SC_FULL_QTR_QUAD', 'SC_GRP0_DYN_SCLK_BUSY', - 'SC_GRP1_DYN_SCLK_BUSY', 'SC_GRP2_DYN_SCLK_BUSY', - 'SC_GRP3_DYN_SCLK_BUSY', 'SC_GRP4_DYN_SCLK_BUSY', - 'SC_GRP5_DYN_SCLK_BUSY', 'SC_GRP6_DYN_SCLK_BUSY', - 'SC_GRP7_DYN_SCLK_BUSY', 'SC_GRP8_DYN_SCLK_BUSY', - 'SC_GRP9_DYN_SCLK_BUSY', 'SC_HALF_FULL_QUAD', 'SC_HALF_HALF_QUAD', - 'SC_HALF_LSB', 'SC_HALF_QTR_QUAD', 'SC_LSB_ONE_SIDED', - 'SC_LSB_TWO_SIDED', 'SC_MULTICYCLE_BUBBLE_FREEZE', - 'SC_P0_DETAIL_QUAD_COUNT', 'SC_P0_DETAIL_QUAD_WITH_1_PIX', - 'SC_P0_DETAIL_QUAD_WITH_2_PIX', 'SC_P0_DETAIL_QUAD_WITH_3_PIX', - 'SC_P0_DETAIL_QUAD_WITH_4_PIX', 'SC_P0_HIZ_QUAD_COUNT', - 'SC_P0_HIZ_QUAD_PER_TILE_H0', 'SC_P0_HIZ_QUAD_PER_TILE_H1', - 'SC_P0_HIZ_QUAD_PER_TILE_H10', 'SC_P0_HIZ_QUAD_PER_TILE_H11', - 'SC_P0_HIZ_QUAD_PER_TILE_H12', 'SC_P0_HIZ_QUAD_PER_TILE_H13', - 'SC_P0_HIZ_QUAD_PER_TILE_H14', 'SC_P0_HIZ_QUAD_PER_TILE_H15', - 'SC_P0_HIZ_QUAD_PER_TILE_H16', 'SC_P0_HIZ_QUAD_PER_TILE_H2', - 'SC_P0_HIZ_QUAD_PER_TILE_H3', 'SC_P0_HIZ_QUAD_PER_TILE_H4', - 'SC_P0_HIZ_QUAD_PER_TILE_H5', 'SC_P0_HIZ_QUAD_PER_TILE_H6', - 'SC_P0_HIZ_QUAD_PER_TILE_H7', 'SC_P0_HIZ_QUAD_PER_TILE_H8', - 'SC_P0_HIZ_QUAD_PER_TILE_H9', 'SC_P0_HIZ_TILE_COUNT', - 'SC_P1_DETAIL_QUAD_COUNT', 'SC_P1_DETAIL_QUAD_WITH_1_PIX', - 'SC_P1_DETAIL_QUAD_WITH_2_PIX', 'SC_P1_DETAIL_QUAD_WITH_3_PIX', - 'SC_P1_DETAIL_QUAD_WITH_4_PIX', 'SC_P1_HIZ_QUAD_COUNT', - 'SC_P1_HIZ_QUAD_PER_TILE_H0', 'SC_P1_HIZ_QUAD_PER_TILE_H1', - 'SC_P1_HIZ_QUAD_PER_TILE_H10', 'SC_P1_HIZ_QUAD_PER_TILE_H11', - 'SC_P1_HIZ_QUAD_PER_TILE_H12', 'SC_P1_HIZ_QUAD_PER_TILE_H13', - 'SC_P1_HIZ_QUAD_PER_TILE_H14', 'SC_P1_HIZ_QUAD_PER_TILE_H15', - 'SC_P1_HIZ_QUAD_PER_TILE_H16', 'SC_P1_HIZ_QUAD_PER_TILE_H2', - 'SC_P1_HIZ_QUAD_PER_TILE_H3', 'SC_P1_HIZ_QUAD_PER_TILE_H4', - 'SC_P1_HIZ_QUAD_PER_TILE_H5', 'SC_P1_HIZ_QUAD_PER_TILE_H6', - 'SC_P1_HIZ_QUAD_PER_TILE_H7', 'SC_P1_HIZ_QUAD_PER_TILE_H8', - 'SC_P1_HIZ_QUAD_PER_TILE_H9', 'SC_P1_HIZ_TILE_COUNT', - 'SC_P2_DETAIL_QUAD_COUNT', 'SC_P2_DETAIL_QUAD_WITH_1_PIX', - 'SC_P2_DETAIL_QUAD_WITH_2_PIX', 'SC_P2_DETAIL_QUAD_WITH_3_PIX', - 'SC_P2_DETAIL_QUAD_WITH_4_PIX', 'SC_P2_HIZ_QUAD_COUNT', - 'SC_P2_HIZ_QUAD_PER_TILE_H0', 'SC_P2_HIZ_QUAD_PER_TILE_H1', - 'SC_P2_HIZ_QUAD_PER_TILE_H10', 'SC_P2_HIZ_QUAD_PER_TILE_H11', - 'SC_P2_HIZ_QUAD_PER_TILE_H12', 'SC_P2_HIZ_QUAD_PER_TILE_H13', - 'SC_P2_HIZ_QUAD_PER_TILE_H14', 'SC_P2_HIZ_QUAD_PER_TILE_H15', - 'SC_P2_HIZ_QUAD_PER_TILE_H16', 'SC_P2_HIZ_QUAD_PER_TILE_H2', - 'SC_P2_HIZ_QUAD_PER_TILE_H3', 'SC_P2_HIZ_QUAD_PER_TILE_H4', - 'SC_P2_HIZ_QUAD_PER_TILE_H5', 'SC_P2_HIZ_QUAD_PER_TILE_H6', - 'SC_P2_HIZ_QUAD_PER_TILE_H7', 'SC_P2_HIZ_QUAD_PER_TILE_H8', - 'SC_P2_HIZ_QUAD_PER_TILE_H9', 'SC_P2_HIZ_TILE_COUNT', - 'SC_P3_DETAIL_QUAD_COUNT', 'SC_P3_DETAIL_QUAD_WITH_1_PIX', - 'SC_P3_DETAIL_QUAD_WITH_2_PIX', 'SC_P3_DETAIL_QUAD_WITH_3_PIX', - 'SC_P3_DETAIL_QUAD_WITH_4_PIX', 'SC_P3_HIZ_QUAD_COUNT', - 'SC_P3_HIZ_QUAD_PER_TILE_H0', 'SC_P3_HIZ_QUAD_PER_TILE_H1', - 'SC_P3_HIZ_QUAD_PER_TILE_H10', 'SC_P3_HIZ_QUAD_PER_TILE_H11', - 'SC_P3_HIZ_QUAD_PER_TILE_H12', 'SC_P3_HIZ_QUAD_PER_TILE_H13', - 'SC_P3_HIZ_QUAD_PER_TILE_H14', 'SC_P3_HIZ_QUAD_PER_TILE_H15', - 'SC_P3_HIZ_QUAD_PER_TILE_H16', 'SC_P3_HIZ_QUAD_PER_TILE_H2', - 'SC_P3_HIZ_QUAD_PER_TILE_H3', 'SC_P3_HIZ_QUAD_PER_TILE_H4', - 'SC_P3_HIZ_QUAD_PER_TILE_H5', 'SC_P3_HIZ_QUAD_PER_TILE_H6', - 'SC_P3_HIZ_QUAD_PER_TILE_H7', 'SC_P3_HIZ_QUAD_PER_TILE_H8', - 'SC_P3_HIZ_QUAD_PER_TILE_H9', 'SC_P3_HIZ_TILE_COUNT', - 'SC_PA0_SC_DATA_FIFO_EOPG_RD', 'SC_PA0_SC_DATA_FIFO_EOP_RD', - 'SC_PA0_SC_DATA_FIFO_RD', 'SC_PA0_SC_DATA_FIFO_WE', - 'SC_PA0_SC_DEALLOC_0_RD', 'SC_PA0_SC_DEALLOC_1_RD', - 'SC_PA0_SC_EOPG_WE', 'SC_PA0_SC_EOP_WE', 'SC_PA0_SC_EVENT_WE', - 'SC_PA0_SC_FPOV_WE', 'SC_PA0_SC_LPOV_WE', - 'SC_PA0_SC_NULL_DEALLOC_WE', 'SC_PA0_SC_NULL_WE', - 'SC_PA1_SC_DATA_FIFO_EOPG_RD', 'SC_PA1_SC_DATA_FIFO_EOP_RD', - 'SC_PA1_SC_DATA_FIFO_RD', 'SC_PA1_SC_DATA_FIFO_WE', - 'SC_PA1_SC_DEALLOC_0_RD', 'SC_PA1_SC_DEALLOC_1_RD', - 'SC_PA1_SC_EOPG_WE', 'SC_PA1_SC_EOP_WE', 'SC_PA1_SC_EVENT_WE', - 'SC_PA1_SC_FPOV_WE', 'SC_PA1_SC_LPOV_WE', - 'SC_PA1_SC_NULL_DEALLOC_WE', 'SC_PA1_SC_NULL_WE', - 'SC_PA2_SC_DATA_FIFO_EOPG_RD', 'SC_PA2_SC_DATA_FIFO_EOP_RD', - 'SC_PA2_SC_DATA_FIFO_RD', 'SC_PA2_SC_DATA_FIFO_WE', - 'SC_PA2_SC_DEALLOC_0_RD', 'SC_PA2_SC_DEALLOC_1_RD', - 'SC_PA2_SC_EOPG_WE', 'SC_PA2_SC_EOP_WE', 'SC_PA2_SC_EVENT_WE', - 'SC_PA2_SC_FPOV_WE', 'SC_PA2_SC_LPOV_WE', - 'SC_PA2_SC_NULL_DEALLOC_WE', 'SC_PA2_SC_NULL_WE', - 'SC_PA3_SC_DATA_FIFO_EOPG_RD', 'SC_PA3_SC_DATA_FIFO_EOP_RD', - 'SC_PA3_SC_DATA_FIFO_RD', 'SC_PA3_SC_DATA_FIFO_WE', - 'SC_PA3_SC_DEALLOC_0_RD', 'SC_PA3_SC_DEALLOC_1_RD', - 'SC_PA3_SC_EOPG_WE', 'SC_PA3_SC_EOP_WE', 'SC_PA3_SC_EVENT_WE', - 'SC_PA3_SC_FPOV_WE', 'SC_PA3_SC_LPOV_WE', - 'SC_PA3_SC_NULL_DEALLOC_WE', 'SC_PA3_SC_NULL_WE', - 'SC_PA_SC_DEALLOC_0_0_WE', 'SC_PA_SC_DEALLOC_0_1_WE', - 'SC_PA_SC_DEALLOC_1_0_WE', 'SC_PA_SC_DEALLOC_1_1_WE', - 'SC_PA_SC_DEALLOC_2_0_WE', 'SC_PA_SC_DEALLOC_2_1_WE', - 'SC_PA_SC_DEALLOC_3_0_WE', 'SC_PA_SC_DEALLOC_3_1_WE', - 'SC_PA_TO_PBB_SCLK_GATE_STALL_STALL', - 'SC_PBB_BATCH_BREAK_DUE_TO_BINNING_MODE_CHANGE', - 'SC_PBB_BATCH_BREAK_DUE_TO_CONTEXT_STATE', - 'SC_PBB_BATCH_BREAK_DUE_TO_DEBUG_DATA_PER_DRAW_DISPATCH', - 'SC_PBB_BATCH_BREAK_DUE_TO_EVENT', - 'SC_PBB_BATCH_BREAK_DUE_TO_FPOV_LIMIT', - 'SC_PBB_BATCH_BREAK_DUE_TO_GFX_PIPE_CHANGE', - 'SC_PBB_BATCH_BREAK_DUE_TO_NEW_SC_MODE', - 'SC_PBB_BATCH_BREAK_DUE_TO_NONBINNED_BATCH', - 'SC_PBB_BATCH_BREAK_DUE_TO_NULL_PRIM_BREAK_BATCH_LIMIT', - 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_CONTEXT', - 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_FPOV', - 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_PERSISTENT', - 'SC_PBB_BATCH_BREAK_DUE_TO_PC_STORAGE', - 'SC_PBB_BATCH_BREAK_DUE_TO_PERSISTENT_STATE', - 'SC_PBB_BATCH_BREAK_DUE_TO_PIPELINE_EVENT_COUNT', - 'SC_PBB_BATCH_BREAK_DUE_TO_PIPELINE_MODE_CHANGE', - 'SC_PBB_BATCH_BREAK_DUE_TO_PIPE_RESET', - 'SC_PBB_BATCH_BREAK_DUE_TO_PRIM', - 'SC_PBB_BATCH_BREAK_DUE_TO_TIMEOUT_COUNTER', - 'SC_PBB_BATCH_HIST_NUM_COLUMNS_PER_ROW', - 'SC_PBB_BATCH_HIST_NUM_CONTEXTS', - 'SC_PBB_BATCH_HIST_NUM_PERSISTENT_STATES', - 'SC_PBB_BATCH_HIST_NUM_PRIMS', - 'SC_PBB_BATCH_HIST_NUM_PS_WAVE_BREAKS', - 'SC_PBB_BATCH_HIST_NUM_ROWS_PER_PRIM', - 'SC_PBB_BATCH_HIST_NUM_TRIV_REJECTED_PRIMS', - 'SC_PBB_BIN_HIST_NUM_CONTEXTS', - 'SC_PBB_BIN_HIST_NUM_PERSISTENT_STATES', - 'SC_PBB_BIN_HIST_NUM_PRIMS', 'SC_PBB_BUSY', - 'SC_PBB_BUSY_AND_NO_SENDS', - 'SC_PBB_EMPTY_INPUT_CYCLE_WHEN_BATCH_OPEN', 'SC_PBB_END_OF_BATCH', - 'SC_PBB_END_OF_BIN', - 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_COLUMN', - 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_ROW', - 'SC_PBB_IDLE_CLK_DUE_TO_ROW_TO_COLUMN_TRANSITION', - 'SC_PBB_NONBINNED_PRIM', 'SC_PBB_NUM_BINS', - 'SC_PBB_PRIMBIN_PROCESSED', 'SC_PBB_PRIM_ADDED_TO_BATCH', - 'SC_PBB_RESERVED', 'SC_PBB_STALLS_PA_DUE_TO_NO_TILES', - 'SC_PBB_TOTAL_NULL_PRIMS_OUT_OF_PBB', - 'SC_PBB_TOTAL_REAL_PRIMS_OUT_OF_PBB', 'SC_PERFCNT_SEL', - 'SC_PKR_4X2_FILL_QUAD', 'SC_PKR_4X2_QUAD_SPLIT', - 'SC_PKR_CONTROL_XFER', 'SC_PKR_DBHANG_FORCE_EOV', - 'SC_PKR_END_OF_VECTOR', 'SC_PKR_QUAD_OVLP_FOUND_IN_WAVE_TABLE', - 'SC_PKR_QUAD_OVLP_NOT_FOUND_IN_WAVE_TABLE_AND_NO_CHANGE_TO_WAVES_SINCE_OVLP', - 'SC_PKR_QUAD_OVLP_NOT_FOUND_IN_WAVE_TABLE_AND_WAVES_SINCE_OVLP_SET_TO_MAX', - 'SC_PKR_QUAD_PER_ROW_H1', 'SC_PKR_QUAD_PER_ROW_H2', - 'SC_PKR_WAVE_BREAK_FULL_TILE', 'SC_PKR_WAVE_BREAK_OUTSIDE_REGION', - 'SC_PK_BUSY', 'SC_PK_DEALLOC_WAVE_BREAK', - 'SC_PK_MAX_DEALLOC_FORCE_EOV', 'SC_PK_PM_4X2_SPLIT_WAVE_BRK_1H', - 'SC_PK_PM_AE_CONFLICT_WAVE_BRK_1H', - 'SC_PK_PM_AVOID_DEALLOC_ADD_WAVE_BRK_1H', - 'SC_PK_PM_CTL_ONLY_CMD_WAVE_BRK_1H', - 'SC_PK_PM_END_OF_VECTOR_WAVE_BRK_1H', - 'SC_PK_PM_EOP_OR_LAD_WAVE_BRK_1H', - 'SC_PK_PM_FD_CONFLICT_WAVE_BRK_1H', - 'SC_PK_PM_FORCE_PARTIAL_FOR_DEALLOC_WAVE_BRK_1H', - 'SC_PK_PM_FULL_TILE_WAVE_BRK_1H', - 'SC_PK_PM_LAST_AND_DEALLOC_WAVE_BRK_1H', - 'SC_PK_PM_MAX_CLK_CNT_FORCE_EOV_WAVE_BRK_1H', - 'SC_PK_PM_MAX_DEALLOC_FORCE_EOV_WAVE_BRK_1H', - 'SC_PK_PM_MAX_REZ_CNT_FORCE_EOV_WAVE_BRK_1H', - 'SC_PK_PM_PKR_FILL_4X2_WAVE_BRK_1H', - 'SC_PK_PM_POPS_FORCE_EOV_WAVE_BRK_1H', - 'SC_PK_PM_QD1_AVOID_DEALLOC_ADD_WAVE_BRK_1H', - 'SC_PK_PM_QD1_FD_CONFLICT_WAVE_BRK_1H', - 'SC_PK_PM_QD1_FORCE_PARTIAL_FOR_DEALLOC_WAVE_BRK_1H', - 'SC_PK_PM_SPLIT_OR_FILL_4X2_WAVE_BRK_1H', - 'SC_PK_PM_VRS_RATE_X_00_Y_00_QUAD', - 'SC_PK_PM_VRS_RATE_X_00_Y_01_QUAD', - 'SC_PK_PM_VRS_RATE_X_00_Y_10_QUAD', - 'SC_PK_PM_VRS_RATE_X_00_Y_11_QUAD', - 'SC_PK_PM_VRS_RATE_X_01_Y_00_QUAD', - 'SC_PK_PM_VRS_RATE_X_01_Y_01_QUAD', - 'SC_PK_PM_VRS_RATE_X_01_Y_10_QUAD', - 'SC_PK_PM_VRS_RATE_X_01_Y_11_QUAD', - 'SC_PK_PM_VRS_RATE_X_10_Y_00_QUAD', - 'SC_PK_PM_VRS_RATE_X_10_Y_01_QUAD', - 'SC_PK_PM_VRS_RATE_X_10_Y_10_QUAD', - 'SC_PK_PM_VRS_RATE_X_10_Y_11_QUAD', - 'SC_PK_PM_VRS_RATE_X_11_Y_00_QUAD', - 'SC_PK_PM_VRS_RATE_X_11_Y_01_QUAD', - 'SC_PK_PM_VRS_RATE_X_11_Y_10_QUAD', - 'SC_PK_PM_VRS_RATE_X_11_Y_11_QUAD', - 'SC_PK_PM_WAVE_BREAK_OUTSIDE_REGION_WAVE_BRK_1H', - 'SC_POPS_FORCE_EOV', 'SC_POPS_INTRA_WAVE_OVERLAPS', - 'SC_PSSW_WINDOW_VALID', 'SC_PSSW_WINDOW_VALID_BUSY', - 'SC_PS_ARB_EOP_POP_SYNC_POP', 'SC_PS_ARB_EVENT_SYNC_POP', - 'SC_PS_ARB_NULL_PRIM_BUBBLE_POP', - 'SC_PS_ARB_OOO_FIFO_EMPTY_SWITCH', - 'SC_PS_ARB_OOO_THRESHOLD_SWITCH_TO_DESIRED_FIFO', - 'SC_PS_ARB_PA_SC_BUSY', 'SC_PS_ARB_SC_BUSY', - 'SC_PS_ARB_STALLED_FROM_BELOW', 'SC_PS_ARB_STARVED_FROM_ABOVE', - 'SC_PS_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'SC_PS_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'SC_PS_ARB_XFC_ONLY_PRIM_CYCLES', 'SC_PS_CTX_DONE_FIFO_POP', - 'SC_PS_CTX_DONE_FIFO_PUSH', 'SC_PS_ENG_MULTICYCLE_BUBBLE', - 'SC_PS_PA0_SC_FIFO_EMPTY', 'SC_PS_PA0_SC_FIFO_FULL', - 'SC_PS_PA1_SC_FIFO_EMPTY', 'SC_PS_PA1_SC_FIFO_FULL', - 'SC_PS_PA2_SC_FIFO_EMPTY', 'SC_PS_PA2_SC_FIFO_FULL', - 'SC_PS_PA3_SC_FIFO_EMPTY', 'SC_PS_PA3_SC_FIFO_FULL', - 'SC_PS_PM_PBB_TO_PSE_FIFO_FULL', - 'SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_PBB_TO_PSE_FIFO_FULL', - 'SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_PFF_PW_FULL', - 'SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_ZFF_PW_FULL', - 'SC_PS_PM_PFF_PW_FULL', 'SC_PS_PM_ZFF_PW_FULL', - 'SC_PS_TO_BE_SCLK_GATE_STALL', 'SC_PS_TS_EVENT_FIFO_POP', - 'SC_PS_TS_EVENT_FIFO_PUSH', 'SC_PW_BM_PASS_EMPTY_PRIM', - 'SC_QTR_FULL_QUAD', 'SC_QTR_HALF_QUAD', 'SC_QTR_QTR_QUAD', - 'SC_QZ0_QUAD_COUNT', 'SC_QZ0_QUAD_PER_TILE_H0', - 'SC_QZ0_QUAD_PER_TILE_H1', 'SC_QZ0_QUAD_PER_TILE_H10', - 'SC_QZ0_QUAD_PER_TILE_H11', 'SC_QZ0_QUAD_PER_TILE_H12', - 'SC_QZ0_QUAD_PER_TILE_H13', 'SC_QZ0_QUAD_PER_TILE_H14', - 'SC_QZ0_QUAD_PER_TILE_H15', 'SC_QZ0_QUAD_PER_TILE_H16', - 'SC_QZ0_QUAD_PER_TILE_H2', 'SC_QZ0_QUAD_PER_TILE_H3', - 'SC_QZ0_QUAD_PER_TILE_H4', 'SC_QZ0_QUAD_PER_TILE_H5', - 'SC_QZ0_QUAD_PER_TILE_H6', 'SC_QZ0_QUAD_PER_TILE_H7', - 'SC_QZ0_QUAD_PER_TILE_H8', 'SC_QZ0_QUAD_PER_TILE_H9', - 'SC_QZ0_TILE_COUNT', 'SC_QZ0_TILE_COVERED_COUNT', - 'SC_QZ0_TILE_NOT_COVERED_COUNT', 'SC_QZ1_QUAD_COUNT', - 'SC_QZ1_QUAD_PER_TILE_H0', 'SC_QZ1_QUAD_PER_TILE_H1', - 'SC_QZ1_QUAD_PER_TILE_H10', 'SC_QZ1_QUAD_PER_TILE_H11', - 'SC_QZ1_QUAD_PER_TILE_H12', 'SC_QZ1_QUAD_PER_TILE_H13', - 'SC_QZ1_QUAD_PER_TILE_H14', 'SC_QZ1_QUAD_PER_TILE_H15', - 'SC_QZ1_QUAD_PER_TILE_H16', 'SC_QZ1_QUAD_PER_TILE_H2', - 'SC_QZ1_QUAD_PER_TILE_H3', 'SC_QZ1_QUAD_PER_TILE_H4', - 'SC_QZ1_QUAD_PER_TILE_H5', 'SC_QZ1_QUAD_PER_TILE_H6', - 'SC_QZ1_QUAD_PER_TILE_H7', 'SC_QZ1_QUAD_PER_TILE_H8', - 'SC_QZ1_QUAD_PER_TILE_H9', 'SC_QZ1_TILE_COUNT', - 'SC_QZ1_TILE_COVERED_COUNT', 'SC_QZ1_TILE_NOT_COVERED_COUNT', - 'SC_QZ2_QUAD_COUNT', 'SC_QZ2_QUAD_PER_TILE_H0', - 'SC_QZ2_QUAD_PER_TILE_H1', 'SC_QZ2_QUAD_PER_TILE_H10', - 'SC_QZ2_QUAD_PER_TILE_H11', 'SC_QZ2_QUAD_PER_TILE_H12', - 'SC_QZ2_QUAD_PER_TILE_H13', 'SC_QZ2_QUAD_PER_TILE_H14', - 'SC_QZ2_QUAD_PER_TILE_H15', 'SC_QZ2_QUAD_PER_TILE_H16', - 'SC_QZ2_QUAD_PER_TILE_H2', 'SC_QZ2_QUAD_PER_TILE_H3', - 'SC_QZ2_QUAD_PER_TILE_H4', 'SC_QZ2_QUAD_PER_TILE_H5', - 'SC_QZ2_QUAD_PER_TILE_H6', 'SC_QZ2_QUAD_PER_TILE_H7', - 'SC_QZ2_QUAD_PER_TILE_H8', 'SC_QZ2_QUAD_PER_TILE_H9', - 'SC_QZ2_TILE_COUNT', 'SC_QZ2_TILE_COVERED_COUNT', - 'SC_QZ2_TILE_NOT_COVERED_COUNT', 'SC_QZ3_QUAD_COUNT', - 'SC_QZ3_QUAD_PER_TILE_H0', 'SC_QZ3_QUAD_PER_TILE_H1', - 'SC_QZ3_QUAD_PER_TILE_H10', 'SC_QZ3_QUAD_PER_TILE_H11', - 'SC_QZ3_QUAD_PER_TILE_H12', 'SC_QZ3_QUAD_PER_TILE_H13', - 'SC_QZ3_QUAD_PER_TILE_H14', 'SC_QZ3_QUAD_PER_TILE_H15', - 'SC_QZ3_QUAD_PER_TILE_H16', 'SC_QZ3_QUAD_PER_TILE_H2', - 'SC_QZ3_QUAD_PER_TILE_H3', 'SC_QZ3_QUAD_PER_TILE_H4', - 'SC_QZ3_QUAD_PER_TILE_H5', 'SC_QZ3_QUAD_PER_TILE_H6', - 'SC_QZ3_QUAD_PER_TILE_H7', 'SC_QZ3_QUAD_PER_TILE_H8', - 'SC_QZ3_QUAD_PER_TILE_H9', 'SC_QZ3_TILE_COUNT', - 'SC_QZ3_TILE_COVERED_COUNT', 'SC_QZ3_TILE_NOT_COVERED_COUNT', - 'SC_QZQP_WINDOW_VALID', 'SC_QZQP_WINDOW_VALID_BUSY', - 'SC_REG_SCLK_BUSY', 'SC_RESERVED_0', 'SC_RESERVED_1', - 'SC_RESERVED_2', 'SC_RESERVED_3', 'SC_SCB_BUSY', - 'SC_SCF_SCB_INTERFACE_BUSY', 'SC_SCISSOR_DISCARD', - 'SC_SEND_DB_VPZ', 'SC_SPIBC_FULL_FREEZE', 'SC_SPI_CREDIT_AT_MAX', - 'SC_SPI_CREDIT_AT_MAX_NO_PENDING_SEND', - 'SC_SPI_CREDIT_AT_ZERO_WITH_PENDING_SEND', 'SC_SPI_DEALLOC_0_0', - 'SC_SPI_DEALLOC_0_1', 'SC_SPI_DEALLOC_0_2', 'SC_SPI_DEALLOC_1_0', - 'SC_SPI_DEALLOC_1_1', 'SC_SPI_DEALLOC_1_2', 'SC_SPI_DEALLOC_2_0', - 'SC_SPI_DEALLOC_2_1', 'SC_SPI_DEALLOC_2_2', 'SC_SPI_DEALLOC_3_0', - 'SC_SPI_DEALLOC_3_1', 'SC_SPI_DEALLOC_3_2', 'SC_SPI_EVENT', - 'SC_SPI_FPOV_0', 'SC_SPI_FPOV_1', 'SC_SPI_FPOV_2', - 'SC_SPI_FPOV_3', 'SC_SPI_SEND', 'SC_SRPS_WINDOW_VALID', - 'SC_SRPS_WINDOW_VALID_BUSY', 'SC_STALLED_BY_BCI', - 'SC_STALLED_BY_DB0_TILEFIFO', 'SC_STALLED_BY_DB1_TILEFIFO', - 'SC_STALLED_BY_DB_QUAD', 'SC_STALLED_BY_DB_TILE', - 'SC_STALLED_BY_PRIMFIFO', 'SC_STALLED_BY_QUADFIFO', - 'SC_STALLED_BY_SPI', 'SC_STALLED_BY_TILEFIFO', - 'SC_STALLED_BY_TILEORDERFIFO', 'SC_STARVED_BY_DB_QUAD', - 'SC_STARVED_BY_DB_TILE', 'SC_STARVED_BY_PA', - 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_FULL', - 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_NOT_EMPTY', - 'SC_SUPERTILE_COUNT', - 'SC_SUPERTILE_COUNT_EXCLUDE_PASS_EMPTY_PRIM', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H0', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H1', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H10', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H11', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H12', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H13', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H14', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H15', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H16', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H2', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H3', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H4', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H5', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H6', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H7', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H8', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H9', - 'SC_SUPERTILE_PER_PRIM_H0', 'SC_SUPERTILE_PER_PRIM_H1', - 'SC_SUPERTILE_PER_PRIM_H10', 'SC_SUPERTILE_PER_PRIM_H11', - 'SC_SUPERTILE_PER_PRIM_H12', 'SC_SUPERTILE_PER_PRIM_H13', - 'SC_SUPERTILE_PER_PRIM_H14', 'SC_SUPERTILE_PER_PRIM_H15', - 'SC_SUPERTILE_PER_PRIM_H16', 'SC_SUPERTILE_PER_PRIM_H2', - 'SC_SUPERTILE_PER_PRIM_H3', 'SC_SUPERTILE_PER_PRIM_H4', - 'SC_SUPERTILE_PER_PRIM_H5', 'SC_SUPERTILE_PER_PRIM_H6', - 'SC_SUPERTILE_PER_PRIM_H7', 'SC_SUPERTILE_PER_PRIM_H8', - 'SC_SUPERTILE_PER_PRIM_H9', 'SC_TILE_PER_PRIM_H0', - 'SC_TILE_PER_PRIM_H1', 'SC_TILE_PER_PRIM_H10', - 'SC_TILE_PER_PRIM_H11', 'SC_TILE_PER_PRIM_H12', - 'SC_TILE_PER_PRIM_H13', 'SC_TILE_PER_PRIM_H14', - 'SC_TILE_PER_PRIM_H15', 'SC_TILE_PER_PRIM_H16', - 'SC_TILE_PER_PRIM_H2', 'SC_TILE_PER_PRIM_H3', - 'SC_TILE_PER_PRIM_H4', 'SC_TILE_PER_PRIM_H5', - 'SC_TILE_PER_PRIM_H6', 'SC_TILE_PER_PRIM_H7', - 'SC_TILE_PER_PRIM_H8', 'SC_TILE_PER_PRIM_H9', - 'SC_TILE_PER_SUPERTILE_H0', 'SC_TILE_PER_SUPERTILE_H1', - 'SC_TILE_PER_SUPERTILE_H10', 'SC_TILE_PER_SUPERTILE_H11', - 'SC_TILE_PER_SUPERTILE_H12', 'SC_TILE_PER_SUPERTILE_H13', - 'SC_TILE_PER_SUPERTILE_H14', 'SC_TILE_PER_SUPERTILE_H15', - 'SC_TILE_PER_SUPERTILE_H16', 'SC_TILE_PER_SUPERTILE_H2', - 'SC_TILE_PER_SUPERTILE_H3', 'SC_TILE_PER_SUPERTILE_H4', - 'SC_TILE_PER_SUPERTILE_H5', 'SC_TILE_PER_SUPERTILE_H6', - 'SC_TILE_PER_SUPERTILE_H7', 'SC_TILE_PER_SUPERTILE_H8', - 'SC_TILE_PER_SUPERTILE_H9', 'SC_TILE_PICKED_H1', - 'SC_TILE_PICKED_H2', 'SC_TILE_PICKED_H3', 'SC_TILE_PICKED_H4', - 'SC_TPQZ_WINDOW_VALID', 'SC_TPQZ_WINDOW_VALID_BUSY', - 'SC_TRPK_WINDOW_VALID', 'SC_TRPK_WINDOW_VALID_BUSY', 'SC_UR_1X', - 'SC_UR_2X', 'SC_UR_4X', 'SC_UR_8X', 'SC_VRS_COMB_MODE_MAX', - 'SC_VRS_COMB_MODE_MIN', 'SC_VRS_COMB_MODE_OVERRIDE', - 'SC_VRS_COMB_MODE_PASSTHRU', 'SC_VRS_COMB_MODE_SATURATE', - 'SDMA_PERFMON_SEL', 'SDMA_PERFMON_SEL_CE_AFIFO_FULL', - 'SDMA_PERFMON_SEL_CE_DST_IDLE', 'SDMA_PERFMON_SEL_CE_INFO1_FULL', - 'SDMA_PERFMON_SEL_CE_INFO_FULL', 'SDMA_PERFMON_SEL_CE_IN_IDLE', - 'SDMA_PERFMON_SEL_CE_L1_WR_VLD', 'SDMA_PERFMON_SEL_CE_OUT_IDLE', - 'SDMA_PERFMON_SEL_CE_RD_STALL', 'SDMA_PERFMON_SEL_CE_RREQ_IDLE', - 'SDMA_PERFMON_SEL_CE_SPLIT_IDLE', 'SDMA_PERFMON_SEL_CE_WREQ_IDLE', - 'SDMA_PERFMON_SEL_CE_WR_IDLE', 'SDMA_PERFMON_SEL_CE_WR_STALL', - 'SDMA_PERFMON_SEL_CPF_SDMA_INVREQ', 'SDMA_PERFMON_SEL_CTX_CHANGE', - 'SDMA_PERFMON_SEL_CTX_CHANGE_EXCEPTION', - 'SDMA_PERFMON_SEL_CTX_CHANGE_EXPIRED', 'SDMA_PERFMON_SEL_CYCLE', - 'SDMA_PERFMON_SEL_DMA_L1_RD_SEND', - 'SDMA_PERFMON_SEL_DMA_L1_WR_SEND', - 'SDMA_PERFMON_SEL_DMA_MC_RD_SEND', - 'SDMA_PERFMON_SEL_DMA_MC_WR_SEND', 'SDMA_PERFMON_SEL_DOORBELL', - 'SDMA_PERFMON_SEL_EX_IDLE', - 'SDMA_PERFMON_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 'SDMA_PERFMON_SEL_F32_L1_WR_VLD', 'SDMA_PERFMON_SEL_GCR_RTN', - 'SDMA_PERFMON_SEL_GCR_SEND', 'SDMA_PERFMON_SEL_GFX_SELECT', - 'SDMA_PERFMON_SEL_GPUVM_INV_HIGH', - 'SDMA_PERFMON_SEL_GPUVM_INV_LOW', 'SDMA_PERFMON_SEL_IB_CMD_FULL', - 'SDMA_PERFMON_SEL_IB_CMD_IDLE', 'SDMA_PERFMON_SEL_IDLE', - 'SDMA_PERFMON_SEL_INT_IDLE', 'SDMA_PERFMON_SEL_INT_REQ_COUNT', - 'SDMA_PERFMON_SEL_INT_REQ_STALL', - 'SDMA_PERFMON_SEL_INT_RESP_ACCEPTED', - 'SDMA_PERFMON_SEL_INT_RESP_RETRY', - 'SDMA_PERFMON_SEL_L1_RDL2_IDLE', 'SDMA_PERFMON_SEL_L1_RDMC_IDLE', - 'SDMA_PERFMON_SEL_L1_RD_INV_IDLE', - 'SDMA_PERFMON_SEL_L1_WRL2_IDLE', 'SDMA_PERFMON_SEL_L1_WRMC_IDLE', - 'SDMA_PERFMON_SEL_L1_WR_INV_IDLE', - 'SDMA_PERFMON_SEL_L2_META_RET_VLD', - 'SDMA_PERFMON_SEL_MC_RD_COUNT', 'SDMA_PERFMON_SEL_MC_RD_IDLE', - 'SDMA_PERFMON_SEL_MC_RD_NO_POLL_IDLE', - 'SDMA_PERFMON_SEL_MC_RD_RET_STALL', - 'SDMA_PERFMON_SEL_MC_WR_COUNT', 'SDMA_PERFMON_SEL_MC_WR_IDLE', - 'SDMA_PERFMON_SEL_META_L2_REQ_SEND', - 'SDMA_PERFMON_SEL_META_REQ_SEND', 'SDMA_PERFMON_SEL_META_RTN_VLD', - 'SDMA_PERFMON_SEL_MMHUB_TAG_DELAY_COUNTER', - 'SDMA_PERFMON_SEL_NUM_PACKET', 'SDMA_PERFMON_SEL_PAGE_SELECT', - 'SDMA_PERFMON_SEL_RB_CMD_FULL', 'SDMA_PERFMON_SEL_RB_CMD_IDLE', - 'SDMA_PERFMON_SEL_RB_EMPTY', 'SDMA_PERFMON_SEL_RB_FULL', - 'SDMA_PERFMON_SEL_RB_RPTR_WB', 'SDMA_PERFMON_SEL_RB_RPTR_WRAP', - 'SDMA_PERFMON_SEL_RB_WPTR_POLL_READ', - 'SDMA_PERFMON_SEL_RB_WPTR_WRAP', 'SDMA_PERFMON_SEL_RD_BA_RTR', - 'SDMA_PERFMON_SEL_REG_IDLE', 'SDMA_PERFMON_SEL_RLC0_SELECT', - 'SDMA_PERFMON_SEL_RLC1_SELECT', - 'SDMA_PERFMON_SEL_SDMA_CPF_INVACK', - 'SDMA_PERFMON_SEL_SDMA_UTCL2_INVACK', - 'SDMA_PERFMON_SEL_SDMA_UTCL2_INVACK_ALL', - 'SDMA_PERFMON_SEL_SDMA_UTCL2_RD_SEND', - 'SDMA_PERFMON_SEL_SDMA_UTCL2_SEND', - 'SDMA_PERFMON_SEL_SDMA_UTCL2_WR_SEND', - 'SDMA_PERFMON_SEL_SEM_IDLE', 'SDMA_PERFMON_SEL_SEM_REQ_COUNT', - 'SDMA_PERFMON_SEL_SEM_REQ_STALL', - 'SDMA_PERFMON_SEL_SEM_RESP_FAIL', - 'SDMA_PERFMON_SEL_SEM_RESP_INCOMPLETE', - 'SDMA_PERFMON_SEL_SEM_RESP_PASS', - 'SDMA_PERFMON_SEL_SRBM_REG_SEND', 'SDMA_PERFMON_SEL_TLBI_RTN', - 'SDMA_PERFMON_SEL_TLBI_SEND', - 'SDMA_PERFMON_SEL_UTCL1_TAG_DELAY_COUNTER', - 'SDMA_PERFMON_SEL_UTCL2_FREE', 'SDMA_PERFMON_SEL_UTCL2_RET_ACK', - 'SDMA_PERFMON_SEL_UTCL2_RET_XNACK', - 'SDMA_PERFMON_SEL_UTCL2_SDMA_INVREQ', - 'SDMA_PERFMON_SEL_UTCL2_SDMA_INVREQ_ALL', - 'SDMA_PERFMON_SEL_UTCL2_SDMA_RD_RTN', - 'SDMA_PERFMON_SEL_UTCL2_SDMA_WR_RTN', - 'SDMA_PERFMON_SEL_WR_BA_RTR', 'SDMA_PERF_SEL', - 'SDMA_PERF_SEL_CE_AFIFO_FULL', 'SDMA_PERF_SEL_CE_BUSY', - 'SDMA_PERF_SEL_CE_BUSY_END', 'SDMA_PERF_SEL_CE_BUSY_START', - 'SDMA_PERF_SEL_CE_CH_RDREQ_SEND', - 'SDMA_PERF_SEL_CE_CH_WRREQ_SEND', 'SDMA_PERF_SEL_CE_CH_WR_REQ', - 'SDMA_PERF_SEL_CE_CH_WR_RET', 'SDMA_PERF_SEL_CE_DST_IDLE', - 'SDMA_PERF_SEL_CE_INFO1_FULL', 'SDMA_PERF_SEL_CE_INFO_FULL', - 'SDMA_PERF_SEL_CE_IN_IDLE', 'SDMA_PERF_SEL_CE_L1_WR_VLD', - 'SDMA_PERF_SEL_CE_OR_F32_CH_RD_REQ', - 'SDMA_PERF_SEL_CE_OR_F32_CH_RD_RET', 'SDMA_PERF_SEL_CE_OUT_IDLE', - 'SDMA_PERF_SEL_CE_RD_STALL', 'SDMA_PERF_SEL_CE_RREQ_IDLE', - 'SDMA_PERF_SEL_CE_SPLIT_IDLE', 'SDMA_PERF_SEL_CE_WREQ_IDLE', - 'SDMA_PERF_SEL_CE_WR_IDLE', 'SDMA_PERF_SEL_CE_WR_STALL', - 'SDMA_PERF_SEL_CGCG_FENCE', 'SDMA_PERF_SEL_CH_CE_RDRET_VALID', - 'SDMA_PERF_SEL_CH_CE_WRRET_VALID', 'SDMA_PERF_SEL_CMD_OP_END', - 'SDMA_PERF_SEL_CMD_OP_MATCH', 'SDMA_PERF_SEL_CMD_OP_START', - 'SDMA_PERF_SEL_CPF_SDMA_INVREQ', 'SDMA_PERF_SEL_CTX_CHANGE', - 'SDMA_PERF_SEL_CTX_CHANGE_EXCEPTION', - 'SDMA_PERF_SEL_CTX_CHANGE_EXPIRED', 'SDMA_PERF_SEL_CYCLE', - 'SDMA_PERF_SEL_DMA_L1_RD_SEND', 'SDMA_PERF_SEL_DMA_L1_WR_SEND', - 'SDMA_PERF_SEL_DMA_MC_RD_SEND', 'SDMA_PERF_SEL_DMA_MC_WR_SEND', - 'SDMA_PERF_SEL_DOORBELL', 'SDMA_PERF_SEL_EX_IDLE', - 'SDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 'SDMA_PERF_SEL_F32_CH_WR_REQ', 'SDMA_PERF_SEL_F32_CH_WR_RET', - 'SDMA_PERF_SEL_F32_L1_WR_VLD', - 'SDMA_PERF_SEL_F32_PERFCNT_TRIGGER', - 'SDMA_PERF_SEL_F32_PERFCNT_TRIGGER_END', - 'SDMA_PERF_SEL_F32_PERFCNT_TRIGGER_START', - 'SDMA_PERF_SEL_GCR_RTN', 'SDMA_PERF_SEL_GCR_SEND', - 'SDMA_PERF_SEL_GFX_SELECT', 'SDMA_PERF_SEL_GPUVM_INV_HIGH', - 'SDMA_PERF_SEL_GPUVM_INV_LOW', 'SDMA_PERF_SEL_IB_CH_RD_REQ', - 'SDMA_PERF_SEL_IB_CH_RD_RET', 'SDMA_PERF_SEL_IB_CMD_FULL', - 'SDMA_PERF_SEL_IB_CMD_IDLE', 'SDMA_PERF_SEL_IDLE', - 'SDMA_PERF_SEL_INT_IDLE', 'SDMA_PERF_SEL_INT_REQ_COUNT', - 'SDMA_PERF_SEL_INT_REQ_STALL', 'SDMA_PERF_SEL_INT_RESP_ACCEPTED', - 'SDMA_PERF_SEL_INT_RESP_RETRY', 'SDMA_PERF_SEL_L1_RDL2_IDLE', - 'SDMA_PERF_SEL_L1_RDMC_IDLE', 'SDMA_PERF_SEL_L1_RD_INV_IDLE', - 'SDMA_PERF_SEL_L1_WRL2_IDLE', 'SDMA_PERF_SEL_L1_WRMC_IDLE', - 'SDMA_PERF_SEL_L1_WR_INV_IDLE', 'SDMA_PERF_SEL_L2_META_RET_VLD', - 'SDMA_PERF_SEL_MC_RD_COUNT', 'SDMA_PERF_SEL_MC_RD_IDLE', - 'SDMA_PERF_SEL_MC_RD_NO_POLL_IDLE', - 'SDMA_PERF_SEL_MC_RD_RET_STALL', 'SDMA_PERF_SEL_MC_WR_COUNT', - 'SDMA_PERF_SEL_MC_WR_IDLE', 'SDMA_PERF_SEL_META_L2_REQ_SEND', - 'SDMA_PERF_SEL_META_REQ_SEND', 'SDMA_PERF_SEL_META_RTN_VLD', - 'SDMA_PERF_SEL_NUM_PACKET', 'SDMA_PERF_SEL_PAGE_SELECT', - 'SDMA_PERF_SEL_RB_CH_RD_REQ', 'SDMA_PERF_SEL_RB_CH_RD_RET', - 'SDMA_PERF_SEL_RB_CMD_FULL', 'SDMA_PERF_SEL_RB_CMD_IDLE', - 'SDMA_PERF_SEL_RB_EMPTY', 'SDMA_PERF_SEL_RB_FULL', - 'SDMA_PERF_SEL_RB_RPTR_WB', 'SDMA_PERF_SEL_RB_RPTR_WRAP', - 'SDMA_PERF_SEL_RB_WPTR_POLL_READ', 'SDMA_PERF_SEL_RB_WPTR_WRAP', - 'SDMA_PERF_SEL_RD_BA_RTR', 'SDMA_PERF_SEL_REG_IDLE', - 'SDMA_PERF_SEL_RLC0_SELECT', 'SDMA_PERF_SEL_RLC1_SELECT', - 'SDMA_PERF_SEL_SDMA_CPF_INVACK', - 'SDMA_PERF_SEL_SDMA_UTCL2_INVACK', - 'SDMA_PERF_SEL_SDMA_UTCL2_INVACK_ALL', - 'SDMA_PERF_SEL_SDMA_UTCL2_RD_SEND', - 'SDMA_PERF_SEL_SDMA_UTCL2_SEND', - 'SDMA_PERF_SEL_SDMA_UTCL2_WR_SEND', 'SDMA_PERF_SEL_SEM_IDLE', - 'SDMA_PERF_SEL_SEM_REQ_COUNT', 'SDMA_PERF_SEL_SEM_REQ_STALL', - 'SDMA_PERF_SEL_SEM_RESP_FAIL', - 'SDMA_PERF_SEL_SEM_RESP_INCOMPLETE', - 'SDMA_PERF_SEL_SEM_RESP_PASS', 'SDMA_PERF_SEL_SRBM_REG_SEND', - 'SDMA_PERF_SEL_TLBI_RTN', 'SDMA_PERF_SEL_TLBI_SEND', - 'SDMA_PERF_SEL_UTCL1_UTCL2_REQ', 'SDMA_PERF_SEL_UTCL1_UTCL2_RET', - 'SDMA_PERF_SEL_UTCL2_FREE', 'SDMA_PERF_SEL_UTCL2_RET_ACK', - 'SDMA_PERF_SEL_UTCL2_RET_XNACK', - 'SDMA_PERF_SEL_UTCL2_SDMA_INVREQ', - 'SDMA_PERF_SEL_UTCL2_SDMA_INVREQ_ALL', - 'SDMA_PERF_SEL_UTCL2_SDMA_RD_RTN', - 'SDMA_PERF_SEL_UTCL2_SDMA_WR_RTN', 'SDMA_PERF_SEL_WPTR_CH_RD_REQ', - 'SDMA_PERF_SEL_WPTR_CH_RD_RET', 'SDMA_PERF_SEL_WR_BA_RTR', - 'SEC_GSP0_PRIORITY_HIGH', 'SEC_GSP0_PRIORITY_LOW', 'SEGMENTS_1', - 'SEGMENTS_128', 'SEGMENTS_16', 'SEGMENTS_2', 'SEGMENTS_32', - 'SEGMENTS_4', 'SEGMENTS_64', 'SEGMENTS_8', 'SEL_DTBCLK0', - 'SEL_DTBCLK1', 'SEL_REFCLK0', 'SEM_ECC_ERROR', 'SEM_PERF_SEL', - 'SEM_PERF_SEL_ACP_REQ_SIGNAL', 'SEM_PERF_SEL_ACP_REQ_WAIT', - 'SEM_PERF_SEL_ATC_INVALIDATION', 'SEM_PERF_SEL_ATC_REQ', - 'SEM_PERF_SEL_ATC_RET', 'SEM_PERF_SEL_ATC_VM_INVALIDATION', - 'SEM_PERF_SEL_ATC_XNACK', 'SEM_PERF_SEL_CPC1_IMME_E0_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC1_IMME_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_IMME_E1_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC1_IMME_E1_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_IMME_E2_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC1_IMME_E2_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_IMME_E3_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC1_IMME_E3_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E0_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E10_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E10_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E11_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E11_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E12_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E12_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E13_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E13_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E14_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E14_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E15_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E15_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E16_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E16_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E17_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E17_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E18_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E18_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E19_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E19_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E1_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E1_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E20_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E20_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E21_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E21_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E22_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E22_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E23_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E23_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E24_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E24_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E25_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E25_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E26_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E26_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E27_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E27_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E28_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E28_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E29_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E29_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E2_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E2_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E30_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E30_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E31_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E31_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E3_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E3_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E4_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E4_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E5_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E5_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E6_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E6_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E7_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E7_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E8_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E8_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E9_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E9_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_IMME_E0_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC2_IMME_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_IMME_E1_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC2_IMME_E1_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_IMME_E2_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC2_IMME_E2_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_IMME_E3_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC2_IMME_E3_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E0_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E10_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E10_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E11_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E11_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E12_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E12_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E13_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E13_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E14_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E14_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E15_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E15_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E16_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E16_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E17_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E17_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E18_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E18_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E19_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E19_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E1_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E1_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E20_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E20_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E21_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E21_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E22_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E22_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E23_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E23_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E24_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E24_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E25_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E25_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E26_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E26_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E27_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E27_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E28_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E28_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E29_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E29_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E2_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E2_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E30_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E30_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E31_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E31_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E3_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E3_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E4_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E4_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E5_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E5_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E6_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E6_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E7_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E7_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E8_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E8_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E9_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E9_REQ_WAIT', - 'SEM_PERF_SEL_CPG_E0_REQ_SIGNAL', 'SEM_PERF_SEL_CPG_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPG_E1_REQ_SIGNAL', 'SEM_PERF_SEL_CPG_E1_REQ_WAIT', - 'SEM_PERF_SEL_CYCLE', 'SEM_PERF_SEL_IDLE', - 'SEM_PERF_SEL_ISP_REQ_SIGNAL', 'SEM_PERF_SEL_ISP_REQ_WAIT', - 'SEM_PERF_SEL_MC_RD_REQ', 'SEM_PERF_SEL_MC_RD_RET', - 'SEM_PERF_SEL_MC_WR_REQ', 'SEM_PERF_SEL_MC_WR_RET', - 'SEM_PERF_SEL_SDMA0_REQ_SIGNAL', 'SEM_PERF_SEL_SDMA0_REQ_WAIT', - 'SEM_PERF_SEL_SDMA1_REQ_SIGNAL', 'SEM_PERF_SEL_SDMA1_REQ_WAIT', - 'SEM_PERF_SEL_SDMA2_REQ_SIGNAL', 'SEM_PERF_SEL_SDMA2_REQ_WAIT', - 'SEM_PERF_SEL_SDMA3_REQ_SIGNAL', 'SEM_PERF_SEL_SDMA3_REQ_WAIT', - 'SEM_PERF_SEL_UVD1_REQ_SIGNAL', 'SEM_PERF_SEL_UVD1_REQ_WAIT', - 'SEM_PERF_SEL_UVD_REQ_SIGNAL', 'SEM_PERF_SEL_UVD_REQ_WAIT', - 'SEM_PERF_SEL_VCE0_REQ_SIGNAL', 'SEM_PERF_SEL_VCE0_REQ_WAIT', - 'SEM_PERF_SEL_VCE1_REQ_SIGNAL', 'SEM_PERF_SEL_VCE1_REQ_WAIT', - 'SEM_PERF_SEL_VP8_REQ_SIGNAL', 'SEM_PERF_SEL_VP8_REQ_WAIT', - 'SEM_RESP_FAILED', 'SEM_RESP_PASSED', 'SEM_TRANS_ERROR', - 'SEND_AT_EARLIEST_TIME', 'SEND_AT_LINK_NUMBER', - 'SEND_NORMAL_PACKET', 'SEND_PPS_PACKET', 'SET_SMU_MSG_INTR', - 'SH_MEM_ADDRESS_MODE', 'SH_MEM_ADDRESS_MODE_32', - 'SH_MEM_ADDRESS_MODE_64', 'SH_MEM_ALIGNMENT_MODE', - 'SH_MEM_ALIGNMENT_MODE_DWORD', - 'SH_MEM_ALIGNMENT_MODE_DWORD_STRICT', - 'SH_MEM_ALIGNMENT_MODE_STRICT', 'SH_MEM_ALIGNMENT_MODE_UNALIGNED', - 'SIGNED', 'SIMM16_WAITCNT_DEPCTR_HOLD_CNT_SIZE', - 'SIMM16_WAITCNT_DEPCTR_HOLD_CNT_START', - 'SIMM16_WAITCNT_DEPCTR_SA_SDST_SIZE', - 'SIMM16_WAITCNT_DEPCTR_SA_SDST_START', - 'SIMM16_WAITCNT_DEPCTR_VA_SDST_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VA_SDST_START', - 'SIMM16_WAITCNT_DEPCTR_VA_SSRC_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VA_SSRC_START', - 'SIMM16_WAITCNT_DEPCTR_VA_VCC_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VA_VCC_START', - 'SIMM16_WAITCNT_DEPCTR_VA_VDST_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VA_VDST_START', - 'SIMM16_WAITCNT_DEPCTR_VM_VSRC_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VM_VSRC_START', - 'SIMM16_WAITCNT_EXP_CNT_SIZE', 'SIMM16_WAITCNT_EXP_CNT_START', - 'SIMM16_WAITCNT_LGKM_CNT_SIZE', 'SIMM16_WAITCNT_LGKM_CNT_START', - 'SIMM16_WAITCNT_VM_CNT_SIZE', 'SIMM16_WAITCNT_VM_CNT_START', - 'SIMM16_WAIT_EVENT_EXP_RDY_SIZE', - 'SIMM16_WAIT_EVENT_EXP_RDY_START', 'SIZE_16K', 'SIZE_8K', - 'SLVERR', 'SMU_INTR', 'SMU_INTR_STATUS_CLEAR', - 'SMU_INTR_STATUS_NOOP', 'SMU_MSG_INTR_NOOP', 'SM_MODE_RESERVED', - 'SOFT_RESET', 'SOFT_RESET_0', 'SOFT_RESET_1', - 'SO_VGTSTREAMOUT_FLUSH', 'SPI_FOG_EXP', 'SPI_FOG_EXP2', - 'SPI_FOG_LINEAR', 'SPI_FOG_MODE', 'SPI_FOG_NONE', - 'SPI_LB_WAVES_RSVD', 'SPI_LB_WAVES_SELECT', 'SPI_PERFCNT_SEL', - 'SPI_PERF_BUSY', 'SPI_PERF_CSGN_BUSY', - 'SPI_PERF_CSGN_CRAWLER_STALL', 'SPI_PERF_CSGN_EVENT_WAVE', - 'SPI_PERF_CSGN_NUM_THREADGROUPS', 'SPI_PERF_CSGN_PWS_STALL', - 'SPI_PERF_CSGN_WAVE', 'SPI_PERF_CSGN_WINDOW_VALID', - 'SPI_PERF_CSN_BUSY', 'SPI_PERF_CSN_CRAWLER_STALL', - 'SPI_PERF_CSN_EVENT_WAVE', 'SPI_PERF_CSN_NUM_THREADGROUPS', - 'SPI_PERF_CSN_WAVE', 'SPI_PERF_CSN_WINDOW_VALID', - 'SPI_PERF_EXPORT_DB0_STALL', 'SPI_PERF_EXPORT_DB1_STALL', - 'SPI_PERF_EXPORT_DB2_STALL', 'SPI_PERF_EXPORT_DB3_STALL', - 'SPI_PERF_EXPORT_DB4_STALL', 'SPI_PERF_EXPORT_DB5_STALL', - 'SPI_PERF_EXPORT_DB6_STALL', 'SPI_PERF_EXPORT_DB7_STALL', - 'SPI_PERF_EXPORT_SCB0_STALL', 'SPI_PERF_EXPORT_SCB1_STALL', - 'SPI_PERF_EXPORT_SCB2_STALL', 'SPI_PERF_EXPORT_SCB3_STALL', - 'SPI_PERF_EXP_ARB_COL_CNT', 'SPI_PERF_EXP_ARB_GDS_CNT', - 'SPI_PERF_EXP_ARB_IDX_CNT', 'SPI_PERF_EXP_ARB_POS_CNT', - 'SPI_PERF_EXP_THROT_CAUSALITY_DETECTED', - 'SPI_PERF_EXP_THROT_DOWNSTEP', 'SPI_PERF_EXP_THROT_UPSTEP', - 'SPI_PERF_EXP_WITH_CONFLICT', 'SPI_PERF_EXP_WITH_CONFLICT_CLEAR', - 'SPI_PERF_GS_BUSY', 'SPI_PERF_GS_CRAWLER_STALL', - 'SPI_PERF_GS_EVENT_WAVE', 'SPI_PERF_GS_EXP_DONE', - 'SPI_PERF_GS_FIRST_SUBGRP', 'SPI_PERF_GS_HS_DEALLOC', - 'SPI_PERF_GS_INDX0_STALL', 'SPI_PERF_GS_INDX1_STALL', - 'SPI_PERF_GS_NGG_SE_LATE_ALLOC_LIMIT', - 'SPI_PERF_GS_NGG_SE_SEND_GS_ALLOC', - 'SPI_PERF_GS_NGG_STALL_MSG_VAL', 'SPI_PERF_GS_PERS_UPD_FULL0', - 'SPI_PERF_GS_PERS_UPD_FULL1', 'SPI_PERF_GS_POS0_STALL', - 'SPI_PERF_GS_POS1_STALL', 'SPI_PERF_GS_PWS_STALL', - 'SPI_PERF_GS_WAVE', 'SPI_PERF_GS_WINDOW_VALID', - 'SPI_PERF_HS_BUSY', 'SPI_PERF_HS_CRAWLER_STALL', - 'SPI_PERF_HS_EVENT_WAVE', 'SPI_PERF_HS_FIRST_WAVE', - 'SPI_PERF_HS_OFFCHIP_LDS_STALL', 'SPI_PERF_HS_PERS_UPD_FULL0', - 'SPI_PERF_HS_PERS_UPD_FULL1', 'SPI_PERF_HS_PWS_STALL', - 'SPI_PERF_HS_WAVE', 'SPI_PERF_HS_WINDOW_VALID', - 'SPI_PERF_NUM_EXPGRANT_EXPORTS', - 'SPI_PERF_NUM_GDS_SA0SQ0_EXPORTS', - 'SPI_PERF_NUM_GDS_SA0SQ1_EXPORTS', - 'SPI_PERF_NUM_GDS_SA1SQ0_EXPORTS', - 'SPI_PERF_NUM_GDS_SA1SQ1_EXPORTS', - 'SPI_PERF_NUM_POS_SA0SQ0_EXPORTS', - 'SPI_PERF_NUM_POS_SA0SQ1_EXPORTS', - 'SPI_PERF_NUM_POS_SA1SQ0_EXPORTS', - 'SPI_PERF_NUM_POS_SA1SQ1_EXPORTS', - 'SPI_PERF_NUM_PS_COL_SA0SQ0_EXPORTS', - 'SPI_PERF_NUM_PS_COL_SA0SQ1_EXPORTS', - 'SPI_PERF_NUM_PS_COL_SA1SQ0_EXPORTS', - 'SPI_PERF_NUM_PS_COL_SA1SQ1_EXPORTS', - 'SPI_PERF_PIX_ALLOC_PEND_CNT', 'SPI_PERF_PS0_2_WAVE_GROUPS', - 'SPI_PERF_PS0_ACTIVE', 'SPI_PERF_PS0_BUSY', - 'SPI_PERF_PS0_CRAWLER_STALL', 'SPI_PERF_PS0_DEALLOC', - 'SPI_PERF_PS0_EVENT_WAVE', 'SPI_PERF_PS0_EXP_ALLOC_WITH_CONFLICT', - 'SPI_PERF_PS0_OPT_WAVE', 'SPI_PERF_PS0_PRIM_BIN0', - 'SPI_PERF_PS0_PRIM_BIN1', 'SPI_PERF_PS0_WAVE', - 'SPI_PERF_PS0_WAVEID_STARVED', - 'SPI_PERF_PS0_WAVE_GROUP_CLOCK_DELAY', - 'SPI_PERF_PS0_WAVE_GROUP_TIMEOUTS', 'SPI_PERF_PS0_WINDOW_VALID', - 'SPI_PERF_PS1_2_WAVE_GROUPS', 'SPI_PERF_PS1_ACTIVE', - 'SPI_PERF_PS1_BUSY', 'SPI_PERF_PS1_CRAWLER_STALL', - 'SPI_PERF_PS1_DEALLOC', 'SPI_PERF_PS1_EVENT_WAVE', - 'SPI_PERF_PS1_EXP_ALLOC_WITH_CONFLICT', 'SPI_PERF_PS1_OPT_WAVE', - 'SPI_PERF_PS1_PRIM_BIN0', 'SPI_PERF_PS1_PRIM_BIN1', - 'SPI_PERF_PS1_WAVE', 'SPI_PERF_PS1_WAVEID_STARVED', - 'SPI_PERF_PS1_WAVE_GROUP_CLOCK_DELAY', - 'SPI_PERF_PS1_WAVE_GROUP_TIMEOUTS', 'SPI_PERF_PS1_WINDOW_VALID', - 'SPI_PERF_PS2_2_WAVE_GROUPS', 'SPI_PERF_PS2_ACTIVE', - 'SPI_PERF_PS2_BUSY', 'SPI_PERF_PS2_CRAWLER_STALL', - 'SPI_PERF_PS2_DEALLOC', 'SPI_PERF_PS2_EVENT_WAVE', - 'SPI_PERF_PS2_EXP_ALLOC_WITH_CONFLICT', 'SPI_PERF_PS2_OPT_WAVE', - 'SPI_PERF_PS2_PRIM_BIN0', 'SPI_PERF_PS2_PRIM_BIN1', - 'SPI_PERF_PS2_WAVE', 'SPI_PERF_PS2_WAVEID_STARVED', - 'SPI_PERF_PS2_WAVE_GROUP_CLOCK_DELAY', - 'SPI_PERF_PS2_WAVE_GROUP_TIMEOUTS', 'SPI_PERF_PS2_WINDOW_VALID', - 'SPI_PERF_PS3_2_WAVE_GROUPS', 'SPI_PERF_PS3_ACTIVE', - 'SPI_PERF_PS3_BUSY', 'SPI_PERF_PS3_CRAWLER_STALL', - 'SPI_PERF_PS3_DEALLOC', 'SPI_PERF_PS3_EVENT_WAVE', - 'SPI_PERF_PS3_EXP_ALLOC_WITH_CONFLICT', 'SPI_PERF_PS3_OPT_WAVE', - 'SPI_PERF_PS3_PRIM_BIN0', 'SPI_PERF_PS3_PRIM_BIN1', - 'SPI_PERF_PS3_WAVE', 'SPI_PERF_PS3_WAVEID_STARVED', - 'SPI_PERF_PS3_WAVE_GROUP_CLOCK_DELAY', - 'SPI_PERF_PS3_WAVE_GROUP_TIMEOUTS', 'SPI_PERF_PS3_WINDOW_VALID', - 'SPI_PERF_PS_EXP_ALLOC', 'SPI_PERF_PS_EXP_ARB_CONFLICT', - 'SPI_PERF_PS_EXP_DONE', 'SPI_PERF_PS_PERS_UPD_FULL0', - 'SPI_PERF_PS_PERS_UPD_FULL1', 'SPI_PERF_PS_PWS_STALL', - 'SPI_PERF_RA_ACCUM0_SIMD_FULL_CSG', - 'SPI_PERF_RA_ACCUM0_SIMD_FULL_CSN', - 'SPI_PERF_RA_ACCUM0_SIMD_FULL_GS', - 'SPI_PERF_RA_ACCUM0_SIMD_FULL_HS', - 'SPI_PERF_RA_ACCUM0_SIMD_FULL_PS', - 'SPI_PERF_RA_ACCUM1_SIMD_FULL_CSG', - 'SPI_PERF_RA_ACCUM1_SIMD_FULL_CSN', - 'SPI_PERF_RA_ACCUM1_SIMD_FULL_GS', - 'SPI_PERF_RA_ACCUM1_SIMD_FULL_HS', - 'SPI_PERF_RA_ACCUM1_SIMD_FULL_PS', - 'SPI_PERF_RA_ACCUM2_SIMD_FULL_CSG', - 'SPI_PERF_RA_ACCUM2_SIMD_FULL_CSN', - 'SPI_PERF_RA_ACCUM2_SIMD_FULL_GS', - 'SPI_PERF_RA_ACCUM2_SIMD_FULL_HS', - 'SPI_PERF_RA_ACCUM2_SIMD_FULL_PS', - 'SPI_PERF_RA_ACCUM3_SIMD_FULL_CSG', - 'SPI_PERF_RA_ACCUM3_SIMD_FULL_CSN', - 'SPI_PERF_RA_ACCUM3_SIMD_FULL_GS', - 'SPI_PERF_RA_ACCUM3_SIMD_FULL_HS', - 'SPI_PERF_RA_ACCUM3_SIMD_FULL_PS', 'SPI_PERF_RA_BAR_CU_FULL_CSG', - 'SPI_PERF_RA_BAR_CU_FULL_CSN', 'SPI_PERF_RA_BAR_CU_FULL_HS', - 'SPI_PERF_RA_BULKY_CU_FULL_CSG', 'SPI_PERF_RA_BULKY_CU_FULL_CSN', - 'SPI_PERF_RA_CSC_UNDER_TUNNEL', 'SPI_PERF_RA_CSG_LOCK', - 'SPI_PERF_RA_CSN_LOCK', 'SPI_PERF_RA_GFX_UNDER_TUNNEL', - 'SPI_PERF_RA_GS_LOCK', 'SPI_PERF_RA_HS_LOCK', - 'SPI_PERF_RA_LDS_CU_FULL_CSG', 'SPI_PERF_RA_LDS_CU_FULL_CSN', - 'SPI_PERF_RA_LDS_CU_FULL_GS', 'SPI_PERF_RA_LDS_CU_FULL_HS', - 'SPI_PERF_RA_LDS_CU_FULL_PS', 'SPI_PERF_RA_PIPE_REQ_BIN2', - 'SPI_PERF_RA_PRE_ALLOC_STALL', 'SPI_PERF_RA_REQ_NO_ALLOC', - 'SPI_PERF_RA_REQ_NO_ALLOC_CSG', 'SPI_PERF_RA_REQ_NO_ALLOC_CSN', - 'SPI_PERF_RA_REQ_NO_ALLOC_GS', 'SPI_PERF_RA_REQ_NO_ALLOC_HS', - 'SPI_PERF_RA_REQ_NO_ALLOC_PS', 'SPI_PERF_RA_RES_STALL_CSG', - 'SPI_PERF_RA_RES_STALL_CSN', 'SPI_PERF_RA_RES_STALL_GS', - 'SPI_PERF_RA_RES_STALL_HS', 'SPI_PERF_RA_RES_STALL_PS', - 'SPI_PERF_RA_RSV_UPD', 'SPI_PERF_RA_TASK_REQ_BIN3', - 'SPI_PERF_RA_TGLIM_CU_FULL_CSG', 'SPI_PERF_RA_TGLIM_CU_FULL_CSN', - 'SPI_PERF_RA_TMP_STALL_CSG', 'SPI_PERF_RA_TMP_STALL_CSN', - 'SPI_PERF_RA_TMP_STALL_GS', 'SPI_PERF_RA_TMP_STALL_HS', - 'SPI_PERF_RA_TMP_STALL_PS', 'SPI_PERF_RA_VGPR_SIMD_FULL_CSG', - 'SPI_PERF_RA_VGPR_SIMD_FULL_CSN', 'SPI_PERF_RA_VGPR_SIMD_FULL_GS', - 'SPI_PERF_RA_VGPR_SIMD_FULL_HS', 'SPI_PERF_RA_VGPR_SIMD_FULL_PS', - 'SPI_PERF_RA_WAVE_SIMD_FULL_CSG', - 'SPI_PERF_RA_WAVE_SIMD_FULL_CSN', 'SPI_PERF_RA_WAVE_SIMD_FULL_GS', - 'SPI_PERF_RA_WAVE_SIMD_FULL_HS', 'SPI_PERF_RA_WAVE_SIMD_FULL_PS', - 'SPI_PERF_RA_WR_CTL_FULL', 'SPI_PERF_RA_WVALLOC_STALL', - 'SPI_PERF_RA_WVLIM_STALL_CSG', 'SPI_PERF_RA_WVLIM_STALL_CSN', - 'SPI_PERF_RA_WVLIM_STALL_GS', 'SPI_PERF_RA_WVLIM_STALL_HS', - 'SPI_PERF_RA_WVLIM_STALL_PS', 'SPI_PERF_SWC_CSGN_WR', - 'SPI_PERF_SWC_CSN_WR', 'SPI_PERF_SWC_GS_WR', 'SPI_PERF_SWC_HS_WR', - 'SPI_PERF_SWC_PS_WR', 'SPI_PERF_VWC_CSGN_WR', - 'SPI_PERF_VWC_CSN_WR', 'SPI_PERF_VWC_ES_WR', 'SPI_PERF_VWC_GS_WR', - 'SPI_PERF_VWC_HS_WR', 'SPI_PERF_VWC_LS_WR', 'SPI_PERF_VWC_PS_WR', - 'SPI_PNT_SPRITE_OVERRIDE', 'SPI_PNT_SPRITE_SEL_0', - 'SPI_PNT_SPRITE_SEL_1', 'SPI_PNT_SPRITE_SEL_NONE', - 'SPI_PNT_SPRITE_SEL_S', 'SPI_PNT_SPRITE_SEL_T', - 'SPI_PS_LDS_GROUP_1', 'SPI_PS_LDS_GROUP_2', 'SPI_PS_LDS_GROUP_4', - 'SPI_PS_LDS_GROUP_SIZE', 'SPI_SAMPLE_CNTL', 'SPI_SHADER_1COMP', - 'SPI_SHADER_2COMP', 'SPI_SHADER_32_ABGR', 'SPI_SHADER_32_AR', - 'SPI_SHADER_32_GR', 'SPI_SHADER_32_R', 'SPI_SHADER_4COMP', - 'SPI_SHADER_4COMPRESS', 'SPI_SHADER_EX_FORMAT', - 'SPI_SHADER_FORMAT', 'SPI_SHADER_FP16_ABGR', 'SPI_SHADER_NONE', - 'SPI_SHADER_SINT16_ABGR', 'SPI_SHADER_SNORM16_ABGR', - 'SPI_SHADER_UINT16_ABGR', 'SPI_SHADER_UNORM16_ABGR', - 'SPI_SHADER_ZERO', 'SPM_PERFMON_STATE', 'SPRITE_EN', - 'SP_PERF_SEL_DST_BUF_ALLOC_STALL', - 'SP_PERF_SEL_DST_BUF_EVEN_DIRTY', 'SP_PERF_SEL_DST_BUF_ODD_DIRTY', - 'SP_PERF_SEL_DST_BUF_WB_CONF_W_SPI', - 'SP_PERF_SEL_DST_BUF_WB_CONF_W_TD_LDS', 'SP_PERF_SEL_DUMMY_LAST', - 'SP_PERF_SEL_SRC_CACHE_HIT_B0', 'SP_PERF_SEL_SRC_CACHE_HIT_B1', - 'SP_PERF_SEL_SRC_CACHE_HIT_B2', 'SP_PERF_SEL_SRC_CACHE_HIT_B3', - 'SP_PERF_SEL_SRC_CACHE_PROBE_B0', - 'SP_PERF_SEL_SRC_CACHE_PROBE_B1', - 'SP_PERF_SEL_SRC_CACHE_PROBE_B2', - 'SP_PERF_SEL_SRC_CACHE_PROBE_B3', - 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B0', - 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B1', - 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B2', - 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B3', - 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B0', - 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B1', - 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B2', - 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B3', - 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B0', - 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B1', - 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B2', - 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B3', - 'SP_PERF_SEL_VALU_COEXEC_WITH_TRANS', - 'SP_PERF_SEL_VALU_EXEC_MASK_CHANGE', - 'SP_PERF_SEL_VALU_FAST_OP_STALL_VGPR_NOT_READY', - 'SP_PERF_SEL_VALU_OPERAND', - 'SP_PERF_SEL_VALU_OPERAND_FROM_DST_BUF', - 'SP_PERF_SEL_VALU_PENDING_QUEUE_STALL', - 'SP_PERF_SEL_VALU_SGPR_FWD_BUF_FULL', 'SP_PERF_SEL_VALU_STALL', - 'SP_PERF_SEL_VALU_STALL_DST_STALL', - 'SP_PERF_SEL_VALU_STALL_SDST_FWD', - 'SP_PERF_SEL_VALU_STALL_SGPR_NOT_READY', - 'SP_PERF_SEL_VALU_STALL_VDST_FWD', - 'SP_PERF_SEL_VALU_STALL_VGPR_NOT_READY', - 'SP_PERF_SEL_VALU_VGPR_OPERAND', 'SP_PERF_SEL_VGPR_EXP_RD', - 'SP_PERF_SEL_VGPR_RD', 'SP_PERF_SEL_VGPR_SPI_WR', - 'SP_PERF_SEL_VGPR_TDLDS_DATA_WR', 'SP_PERF_SEL_VGPR_VMEM_RD', - 'SP_PERF_SEL_VGPR_WR', 'SQC_PERF_SEL_DCACHE_BUSY_CYCLES', - 'SQC_PERF_SEL_DCACHE_CACHE_STALLED', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_INFLIGHT_MAX', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT', - 'SQC_PERF_SEL_DCACHE_FLAT_REQ', 'SQC_PERF_SEL_DCACHE_GCR', - 'SQC_PERF_SEL_DCACHE_GCR_HITS', - 'SQC_PERF_SEL_DCACHE_GCR_INVALIDATE', 'SQC_PERF_SEL_DCACHE_HITS', - 'SQC_PERF_SEL_DCACHE_HIT_LRU_READ', - 'SQC_PERF_SEL_DCACHE_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_DCACHE_INPUT_STALL_ARB_NO_GRANT', - 'SQC_PERF_SEL_DCACHE_INPUT_STALL_BANK_READYB', - 'SQC_PERF_SEL_DCACHE_INPUT_VALID_READYB', - 'SQC_PERF_SEL_DCACHE_INVAL_ASYNC', - 'SQC_PERF_SEL_DCACHE_INVAL_INST', 'SQC_PERF_SEL_DCACHE_MISSES', - 'SQC_PERF_SEL_DCACHE_MISSES_DUPLICATE', 'SQC_PERF_SEL_DCACHE_REQ', - 'SQC_PERF_SEL_DCACHE_REQ_ATC_PROBE', - 'SQC_PERF_SEL_DCACHE_REQ_READ_1', - 'SQC_PERF_SEL_DCACHE_REQ_READ_16', - 'SQC_PERF_SEL_DCACHE_REQ_READ_2', - 'SQC_PERF_SEL_DCACHE_REQ_READ_4', - 'SQC_PERF_SEL_DCACHE_REQ_READ_8', - 'SQC_PERF_SEL_DCACHE_SPI_RETURN_STALL', - 'SQC_PERF_SEL_DCACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 'SQC_PERF_SEL_DCACHE_TC_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_DUMMY_LAST', 'SQC_PERF_SEL_ICACHE_BUSY_CYCLES', - 'SQC_PERF_SEL_ICACHE_CACHE_STALLED', - 'SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_MAX', - 'SQC_PERF_SEL_ICACHE_GCR', 'SQC_PERF_SEL_ICACHE_GCR_HITS', - 'SQC_PERF_SEL_ICACHE_GCR_INVALIDATE', 'SQC_PERF_SEL_ICACHE_HITS', - 'SQC_PERF_SEL_ICACHE_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_ICACHE_INPUT_STALL_ARB_NO_GRANT', - 'SQC_PERF_SEL_ICACHE_INPUT_STALL_BANK_READYB', - 'SQC_PERF_SEL_ICACHE_INPUT_VALID_READYB', - 'SQC_PERF_SEL_ICACHE_INVAL_ASYNC', - 'SQC_PERF_SEL_ICACHE_INVAL_INST', 'SQC_PERF_SEL_ICACHE_MISSES', - 'SQC_PERF_SEL_ICACHE_MISSES_DUPLICATE', 'SQC_PERF_SEL_ICACHE_REQ', - 'SQC_PERF_SEL_ICACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 'SQC_PERF_SEL_ICACHE_TC_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_LDS_ADDR_ACTIVE', 'SQC_PERF_SEL_LDS_ADDR_CONFLICT', - 'SQC_PERF_SEL_LDS_ADDR_STALL', 'SQC_PERF_SEL_LDS_ATOMIC_RETURN', - 'SQC_PERF_SEL_LDS_BANK_CONFLICT', - 'SQC_PERF_SEL_LDS_FP_ADD_CYCLES', 'SQC_PERF_SEL_LDS_IDX_ACTIVE', - 'SQC_PERF_SEL_LDS_LDS_VGPR_WRITE_STALL', - 'SQC_PERF_SEL_LDS_MEM_VIOLATIONS', - 'SQC_PERF_SEL_LDS_PC_LDS_WRITE_STALL_TD', - 'SQC_PERF_SEL_LDS_SPI_VGPR_WRITE_STALL_TD', - 'SQC_PERF_SEL_LDS_TD_VGPR_CONF_STALL', - 'SQC_PERF_SEL_LDS_UNALIGNED_STALL', 'SQC_PERF_SEL_LDS_VGPR_BUSY', - 'SQC_PERF_SEL_SQ_DCACHE_REQS', 'SQC_PERF_SEL_TC_DATA_READ_REQ', - 'SQC_PERF_SEL_TC_INFLIGHT_LEVEL', 'SQC_PERF_SEL_TC_INST_REQ', - 'SQC_PERF_SEL_TC_REQ', 'SQC_PERF_SEL_TC_STALL', - 'SQC_PERF_SEL_TC_STARVE', 'SQC_PERF_SEL_TD_VGPR_BUSY', - 'SQDEC_BEGIN', 'SQDEC_END', 'SQGFXUDEC_BEGIN', 'SQGFXUDEC_END', - 'SQG_PERF_SEL', 'SQG_PERF_SEL_ACCUM_PREV', - 'SQG_PERF_SEL_BUSY_CYCLES', 'SQG_PERF_SEL_CYCLES', - 'SQG_PERF_SEL_DUMMY_LAST', 'SQG_PERF_SEL_EVENTS', - 'SQG_PERF_SEL_EXP_BUS0_BUSY', 'SQG_PERF_SEL_EXP_BUS1_BUSY', - 'SQG_PERF_SEL_EXP_REQ0_BUS_BUSY', - 'SQG_PERF_SEL_EXP_REQ1_BUS_BUSY', 'SQG_PERF_SEL_ITEMS', - 'SQG_PERF_SEL_LEVEL_WAVES', 'SQG_PERF_SEL_MSG', - 'SQG_PERF_SEL_MSG_BUS_BUSY', 'SQG_PERF_SEL_MSG_INTERRUPT', - 'SQG_PERF_SEL_NONE', 'SQG_PERF_SEL_PS_QUADS', - 'SQG_PERF_SEL_TTRACE_INFLIGHT_REQS', - 'SQG_PERF_SEL_TTRACE_LOST_PACKETS', 'SQG_PERF_SEL_TTRACE_REQS', - 'SQG_PERF_SEL_TTRACE_STALL', 'SQG_PERF_SEL_WAVE32_ITEMS', - 'SQG_PERF_SEL_WAVE64_ITEMS', 'SQG_PERF_SEL_WAVES', - 'SQG_PERF_SEL_WAVES_32', 'SQG_PERF_SEL_WAVES_64', - 'SQG_PERF_SEL_WAVES_EQ_32', 'SQG_PERF_SEL_WAVES_EQ_64', - 'SQG_PERF_SEL_WAVES_INITIAL_PREFETCH', 'SQG_PERF_SEL_WAVES_LT_16', - 'SQG_PERF_SEL_WAVES_LT_32', 'SQG_PERF_SEL_WAVES_LT_48', - 'SQG_PERF_SEL_WAVES_LT_64', 'SQG_PERF_SEL_WAVES_RESTORED', - 'SQG_PERF_SEL_WAVES_SAVED', 'SQG_PERF_SEL_WAVE_CYCLES', - 'SQIND_GLOBAL_REGS_OFFSET', 'SQIND_GLOBAL_REGS_SIZE', - 'SQIND_LOCAL_REGS_OFFSET', 'SQIND_LOCAL_REGS_SIZE', - 'SQIND_WAVE_HWREGS_OFFSET', 'SQIND_WAVE_HWREGS_SIZE', - 'SQIND_WAVE_SGPRS_OFFSET', 'SQIND_WAVE_SGPRS_SIZE', - 'SQIND_WAVE_VGPRS_OFFSET', 'SQIND_WAVE_VGPRS_SIZE', - 'SQPERFDDEC_BEGIN', 'SQPERFDDEC_END', 'SQPERFSDEC_BEGIN', - 'SQPERFSDEC_END', 'SQPWRDEC_BEGIN', 'SQPWRDEC_END', - 'SQ_CAC_POWER_ALU_BUSY', 'SQ_CAC_POWER_GPR_RD', - 'SQ_CAC_POWER_GPR_WR', 'SQ_CAC_POWER_LDS_BUSY', - 'SQ_CAC_POWER_SEL', 'SQ_CAC_POWER_TEX_BUSY', 'SQ_CAC_POWER_VALU', - 'SQ_CAC_POWER_VALU0', 'SQ_CAC_POWER_VALU1', 'SQ_CAC_POWER_VALU2', - 'SQ_DISPATCHER_GFX_CNT_PER_RING', 'SQ_DISPATCHER_GFX_MIN', - 'SQ_EDC_FUE_CNTL_LDS', 'SQ_EDC_FUE_CNTL_SIMD0', - 'SQ_EDC_FUE_CNTL_SIMD1', 'SQ_EDC_FUE_CNTL_SIMD2', - 'SQ_EDC_FUE_CNTL_SIMD3', 'SQ_EDC_FUE_CNTL_SQ', - 'SQ_EDC_FUE_CNTL_TA', 'SQ_EDC_FUE_CNTL_TCP', 'SQ_EDC_FUE_CNTL_TD', - 'SQ_EDC_INFO_SOURCE', 'SQ_EDC_INFO_SOURCE_GDS', - 'SQ_EDC_INFO_SOURCE_INST', 'SQ_EDC_INFO_SOURCE_INVALID', - 'SQ_EDC_INFO_SOURCE_LDS', 'SQ_EDC_INFO_SOURCE_SGPR', - 'SQ_EDC_INFO_SOURCE_TA', 'SQ_EDC_INFO_SOURCE_VGPR', - 'SQ_EX_MODE_EXCP_ADDR_WATCH0', 'SQ_EX_MODE_EXCP_DIV0', - 'SQ_EX_MODE_EXCP_HI_ADDR_WATCH1', - 'SQ_EX_MODE_EXCP_HI_ADDR_WATCH2', - 'SQ_EX_MODE_EXCP_HI_ADDR_WATCH3', 'SQ_EX_MODE_EXCP_INEXACT', - 'SQ_EX_MODE_EXCP_INPUT_DENORM', 'SQ_EX_MODE_EXCP_INT_DIV0', - 'SQ_EX_MODE_EXCP_INVALID', 'SQ_EX_MODE_EXCP_MEM_VIOL', - 'SQ_EX_MODE_EXCP_OVERFLOW', 'SQ_EX_MODE_EXCP_UNDERFLOW', - 'SQ_EX_MODE_EXCP_VALU_BASE', 'SQ_EX_MODE_EXCP_VALU_SIZE', - 'SQ_GFXDEC_BEGIN', 'SQ_GFXDEC_END', 'SQ_GFXDEC_STATE_ID_SHIFT', - 'SQ_IBUF_IB_DRET', 'SQ_IBUF_IB_EMPTY_WAIT_DRET', - 'SQ_IBUF_IB_EMPTY_WAIT_GNT', 'SQ_IBUF_IB_IDLE', - 'SQ_IBUF_IB_INI_WAIT_DRET', 'SQ_IBUF_IB_INI_WAIT_GNT', - 'SQ_IBUF_IB_LE_4DW', 'SQ_IBUF_IB_WAIT_DRET', 'SQ_IBUF_ST', - 'SQ_IMG_FILTER_MODE_BLEND', 'SQ_IMG_FILTER_MODE_MAX', - 'SQ_IMG_FILTER_MODE_MIN', 'SQ_IMG_FILTER_TYPE', 'SQ_IND_CMD_CMD', - 'SQ_IND_CMD_CMD_KILL', 'SQ_IND_CMD_CMD_NULL', - 'SQ_IND_CMD_CMD_SAVECTX', 'SQ_IND_CMD_CMD_SETFATALHALT', - 'SQ_IND_CMD_CMD_SETHALT', 'SQ_IND_CMD_CMD_SET_SPI_PRIO', - 'SQ_IND_CMD_CMD_SINGLE_STEP', 'SQ_IND_CMD_CMD_TRAP', - 'SQ_IND_CMD_CMD_TRAP_AFTER_INST', 'SQ_IND_CMD_MODE', - 'SQ_IND_CMD_MODE_BROADCAST', 'SQ_IND_CMD_MODE_BROADCAST_ME', - 'SQ_IND_CMD_MODE_BROADCAST_PIPE', - 'SQ_IND_CMD_MODE_BROADCAST_QUEUE', 'SQ_IND_CMD_MODE_SINGLE', - 'SQ_INST_STR_IB_WAVE2ID_NORMAL_INST_AV', - 'SQ_INST_STR_IB_WAVE_INST_SKIP_AV', - 'SQ_INST_STR_IB_WAVE_INTERNAL_INST_AV', - 'SQ_INST_STR_IB_WAVE_NOP_SLEEP_WAIT', 'SQ_INST_STR_IB_WAVE_NORML', - 'SQ_INST_STR_IB_WAVE_PC_FROM_SGPR_MSG_WAIT', 'SQ_INST_STR_ST', - 'SQ_INST_TYPE', 'SQ_INST_TYPE_BARRIER', - 'SQ_INST_TYPE_BRANCH_NOT_TAKEN', 'SQ_INST_TYPE_BRANCH_TAKEN', - 'SQ_INST_TYPE_EXP', 'SQ_INST_TYPE_JUMP', 'SQ_INST_TYPE_LDS', - 'SQ_INST_TYPE_LDS_DIRECT', 'SQ_INST_TYPE_MSG', - 'SQ_INST_TYPE_NONE', 'SQ_INST_TYPE_OTHER', 'SQ_INST_TYPE_SCALAR', - 'SQ_INST_TYPE_TEX', 'SQ_INST_TYPE_VALU', 'SQ_LLC_0', 'SQ_LLC_1', - 'SQ_LLC_BYPASS', 'SQ_LLC_CTL', 'SQ_LLC_RSVD_2', - 'SQ_MAX_PGM_SGPRS', 'SQ_MAX_PGM_VGPRS', 'SQ_NON_EVENT', - 'SQ_NO_INST_ISSUE', 'SQ_NO_INST_ISSUE_ALU_DEP', - 'SQ_NO_INST_ISSUE_BARRIER_WAIT', 'SQ_NO_INST_ISSUE_NO_ARB_WIN', - 'SQ_NO_INST_ISSUE_NO_INSTS', 'SQ_NO_INST_ISSUE_OTHER', - 'SQ_NO_INST_ISSUE_SLEEP_WAIT', 'SQ_NO_INST_ISSUE_S_WAITCNT', - 'SQ_OOB_COMPLETE', 'SQ_OOB_INDEX_AND_OFFSET', 'SQ_OOB_INDEX_ONLY', - 'SQ_OOB_NUM_RECORDS_0', 'SQ_OOB_SELECT', 'SQ_PERF_SEL', - 'SQ_PERF_SEL_ACCUM_PREV', 'SQ_PERF_SEL_BUSY_CYCLES', - 'SQ_PERF_SEL_CYCLES', 'SQ_PERF_SEL_DUMMY_END', - 'SQ_PERF_SEL_DUMMY_LAST', 'SQ_PERF_SEL_EVENTS', - 'SQ_PERF_SEL_EXP_BUS0_BUSY', 'SQ_PERF_SEL_EXP_BUS1_BUSY', - 'SQ_PERF_SEL_EXP_REQ0_BUS_BUSY', 'SQ_PERF_SEL_EXP_REQ1_BUS_BUSY', - 'SQ_PERF_SEL_EXP_REQ_BUS_STALL', 'SQ_PERF_SEL_EXP_REQ_FIFO_FULL', - 'SQ_PERF_SEL_IFETCH_LEVEL', 'SQ_PERF_SEL_IFETCH_REQS', - 'SQ_PERF_SEL_INSTS_ALL', 'SQ_PERF_SEL_INSTS_BRANCH', - 'SQ_PERF_SEL_INSTS_CBRANCH_NOT_TAKEN', - 'SQ_PERF_SEL_INSTS_CBRANCH_TAKEN', - 'SQ_PERF_SEL_INSTS_CBRANCH_TAKEN_HIT_IS', - 'SQ_PERF_SEL_INSTS_DELAY_ALU', - 'SQ_PERF_SEL_INSTS_DUAL_VALU_WAVE32', 'SQ_PERF_SEL_INSTS_EXP', - 'SQ_PERF_SEL_INSTS_EXP_GDS', 'SQ_PERF_SEL_INSTS_FLAT', - 'SQ_PERF_SEL_INSTS_GDS', 'SQ_PERF_SEL_INSTS_INTERNAL', - 'SQ_PERF_SEL_INSTS_LDS', 'SQ_PERF_SEL_INSTS_LDS_DIRECT_LOAD', - 'SQ_PERF_SEL_INSTS_LDS_PARAM_LOAD', 'SQ_PERF_SEL_INSTS_SALU', - 'SQ_PERF_SEL_INSTS_SENDMSG', 'SQ_PERF_SEL_INSTS_SMEM', - 'SQ_PERF_SEL_INSTS_SMEM_NORM', 'SQ_PERF_SEL_INSTS_TEX', - 'SQ_PERF_SEL_INSTS_TEX_LOAD', 'SQ_PERF_SEL_INSTS_TEX_STORE', - 'SQ_PERF_SEL_INSTS_VALU', 'SQ_PERF_SEL_INSTS_VALU_1_PASS', - 'SQ_PERF_SEL_INSTS_VALU_2_PASS', 'SQ_PERF_SEL_INSTS_VALU_4_PASS', - 'SQ_PERF_SEL_INSTS_VALU_DP', - 'SQ_PERF_SEL_INSTS_VALU_EXEC_SKIPPED', - 'SQ_PERF_SEL_INSTS_VALU_NO_COEXEC', - 'SQ_PERF_SEL_INSTS_VALU_ONE_CYCLE_WAVE64', - 'SQ_PERF_SEL_INSTS_VALU_TRANS', 'SQ_PERF_SEL_INSTS_VALU_TRANS32', - 'SQ_PERF_SEL_INSTS_VALU_VINTERP', - 'SQ_PERF_SEL_INSTS_VALU_WAVE32_VINTERP', - 'SQ_PERF_SEL_INSTS_WAVE32', 'SQ_PERF_SEL_INSTS_WAVE32_FLAT', - 'SQ_PERF_SEL_INSTS_WAVE32_LDS', - 'SQ_PERF_SEL_INSTS_WAVE32_LDS_PARAM_LOAD', - 'SQ_PERF_SEL_INSTS_WAVE32_TEX', - 'SQ_PERF_SEL_INSTS_WAVE32_TEX_LOAD', - 'SQ_PERF_SEL_INSTS_WAVE32_TEX_STORE', - 'SQ_PERF_SEL_INSTS_WAVE32_VALU', - 'SQ_PERF_SEL_INSTS_WAVE32_VALU_NO_COEXEC', - 'SQ_PERF_SEL_INSTS_WAVE32_VALU_TRANS32', - 'SQ_PERF_SEL_INST_CACHE_REQ_STALL', 'SQ_PERF_SEL_INST_CYCLES_EXP', - 'SQ_PERF_SEL_INST_CYCLES_EXP_GDS', 'SQ_PERF_SEL_INST_CYCLES_FLAT', - 'SQ_PERF_SEL_INST_CYCLES_GDS', 'SQ_PERF_SEL_INST_CYCLES_LDS', - 'SQ_PERF_SEL_INST_CYCLES_TEX', 'SQ_PERF_SEL_INST_CYCLES_VALU', - 'SQ_PERF_SEL_INST_CYCLES_VALU_NO_COEXEC', - 'SQ_PERF_SEL_INST_CYCLES_VALU_TRANS32', - 'SQ_PERF_SEL_INST_CYCLES_VMEM', - 'SQ_PERF_SEL_INST_CYCLES_VMEM_LOAD', - 'SQ_PERF_SEL_INST_CYCLES_VMEM_STORE', - 'SQ_PERF_SEL_INST_LEVEL_EXP', 'SQ_PERF_SEL_INST_LEVEL_GDS', - 'SQ_PERF_SEL_INST_LEVEL_LDS', 'SQ_PERF_SEL_INST_LEVEL_SMEM', - 'SQ_PERF_SEL_INST_LEVEL_TEX_LOAD', - 'SQ_PERF_SEL_INST_LEVEL_TEX_STORE', 'SQ_PERF_SEL_ITEMS', - 'SQ_PERF_SEL_ITEMS_MAX_VALU', 'SQ_PERF_SEL_ITEMS_VALU', - 'SQ_PERF_SEL_ITEM_CYCLES_VALU', 'SQ_PERF_SEL_ITEM_CYCLES_VMEM', - 'SQ_PERF_SEL_LDS_DIRECT_CMD_FIFO_FULL_STALL', - 'SQ_PERF_SEL_LEVEL_WAVES', 'SQ_PERF_SEL_MSG', - 'SQ_PERF_SEL_MSG_BUS_BUSY', 'SQ_PERF_SEL_MSG_FIFO_FULL_STALL', - 'SQ_PERF_SEL_MSG_INTERRUPT', 'SQ_PERF_SEL_NONE', - 'SQ_PERF_SEL_NONE2', 'SQ_PERF_SEL_OVERFLOW_PREV', - 'SQ_PERF_SEL_PS_QUADS', 'SQ_PERF_SEL_SALU_GATHER_FULL_STALL', - 'SQ_PERF_SEL_SALU_PIPE_STALL', 'SQ_PERF_SEL_SALU_SGATHER_STALL', - 'SQ_PERF_SEL_SALU_SGPR_RD_FIFO_FULL_STALL', - 'SQ_PERF_SEL_SMEM_DCACHE_FIFO_FULL_STALL', - 'SQ_PERF_SEL_SMEM_DCACHE_RETURN_CYCLES', - 'SQ_PERF_SEL_SP_CONST_CYCLES', - 'SQ_PERF_SEL_SP_CONST_STALL_CYCLES', 'SQ_PERF_SEL_USER0', - 'SQ_PERF_SEL_USER1', 'SQ_PERF_SEL_USER10', 'SQ_PERF_SEL_USER11', - 'SQ_PERF_SEL_USER12', 'SQ_PERF_SEL_USER13', 'SQ_PERF_SEL_USER14', - 'SQ_PERF_SEL_USER15', 'SQ_PERF_SEL_USER2', 'SQ_PERF_SEL_USER3', - 'SQ_PERF_SEL_USER4', 'SQ_PERF_SEL_USER5', 'SQ_PERF_SEL_USER6', - 'SQ_PERF_SEL_USER7', 'SQ_PERF_SEL_USER8', 'SQ_PERF_SEL_USER9', - 'SQ_PERF_SEL_USER_LEVEL0', 'SQ_PERF_SEL_USER_LEVEL1', - 'SQ_PERF_SEL_USER_LEVEL10', 'SQ_PERF_SEL_USER_LEVEL11', - 'SQ_PERF_SEL_USER_LEVEL12', 'SQ_PERF_SEL_USER_LEVEL13', - 'SQ_PERF_SEL_USER_LEVEL14', 'SQ_PERF_SEL_USER_LEVEL15', - 'SQ_PERF_SEL_USER_LEVEL2', 'SQ_PERF_SEL_USER_LEVEL3', - 'SQ_PERF_SEL_USER_LEVEL4', 'SQ_PERF_SEL_USER_LEVEL5', - 'SQ_PERF_SEL_USER_LEVEL6', 'SQ_PERF_SEL_USER_LEVEL7', - 'SQ_PERF_SEL_USER_LEVEL8', 'SQ_PERF_SEL_USER_LEVEL9', - 'SQ_PERF_SEL_VALU_FWD_BUFFER_FULL_STALL', - 'SQ_PERF_SEL_VALU_READWRITELANE_CYCLES', - 'SQ_PERF_SEL_VALU_RETURN_SDST', - 'SQ_PERF_SEL_VALU_SGATHER_FULL_STALL', - 'SQ_PERF_SEL_VALU_SGATHER_STALL', - 'SQ_PERF_SEL_VALU_SGPR_RD_FIFO_FULL_STALL', - 'SQ_PERF_SEL_VALU_STARVE', 'SQ_PERF_SEL_VMEM_ARB_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_BUS_ACTIVE', 'SQ_PERF_SEL_VMEM_BUS_STALL', - 'SQ_PERF_SEL_VMEM_BUS_STALL_LDS_ADDR_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_BUS_STALL_LDS_CMD_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_BUS_STALL_TA_ADDR_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_BUS_STALL_TA_CMD_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_STARVE_LDS_ADDR_EMPTY', - 'SQ_PERF_SEL_VMEM_STARVE_TA_ADDR_EMPTY', - 'SQ_PERF_SEL_VMEM_VGPR_READ_STALLED_BY_EXPORT', - 'SQ_PERF_SEL_WAIT_ANY', 'SQ_PERF_SEL_WAIT_BARRIER', - 'SQ_PERF_SEL_WAIT_CNT_ANY', 'SQ_PERF_SEL_WAIT_CNT_EXP', - 'SQ_PERF_SEL_WAIT_CNT_LGKM', 'SQ_PERF_SEL_WAIT_CNT_VMVS', - 'SQ_PERF_SEL_WAIT_DELAY_ALU', 'SQ_PERF_SEL_WAIT_DEPCTR', - 'SQ_PERF_SEL_WAIT_EXP_ALLOC', 'SQ_PERF_SEL_WAIT_IFETCH', - 'SQ_PERF_SEL_WAIT_INST_ANY', 'SQ_PERF_SEL_WAIT_INST_BR_MSG', - 'SQ_PERF_SEL_WAIT_INST_EXP_GDS', 'SQ_PERF_SEL_WAIT_INST_FLAT', - 'SQ_PERF_SEL_WAIT_INST_LDS', 'SQ_PERF_SEL_WAIT_INST_SCA', - 'SQ_PERF_SEL_WAIT_INST_TEX', 'SQ_PERF_SEL_WAIT_INST_VALU', - 'SQ_PERF_SEL_WAIT_INST_VMEM', 'SQ_PERF_SEL_WAIT_OTHER', - 'SQ_PERF_SEL_WAIT_SLEEP', 'SQ_PERF_SEL_WAIT_TTRACE', - 'SQ_PERF_SEL_WAVE32_INSTS', 'SQ_PERF_SEL_WAVE32_INSTS_EXP_GDS', - 'SQ_PERF_SEL_WAVE32_ITEMS', 'SQ_PERF_SEL_WAVE64_HALF_SKIP', - 'SQ_PERF_SEL_WAVE64_INSTS', 'SQ_PERF_SEL_WAVE64_ITEMS', - 'SQ_PERF_SEL_WAVES', 'SQ_PERF_SEL_WAVES_32', - 'SQ_PERF_SEL_WAVES_64', 'SQ_PERF_SEL_WAVES_EQ_32', - 'SQ_PERF_SEL_WAVES_EQ_64', 'SQ_PERF_SEL_WAVES_INITIAL_PREFETCH', - 'SQ_PERF_SEL_WAVES_LT_16', 'SQ_PERF_SEL_WAVES_LT_32', - 'SQ_PERF_SEL_WAVES_LT_48', 'SQ_PERF_SEL_WAVES_LT_64', - 'SQ_PERF_SEL_WAVES_RESTORED', 'SQ_PERF_SEL_WAVES_SAVED', - 'SQ_PERF_SEL_WAVE_CYCLES', 'SQ_PERF_SEL_WAVE_READY', - 'SQ_ROUND_MINUS_INFINITY', 'SQ_ROUND_MODE', - 'SQ_ROUND_NEAREST_EVEN', 'SQ_ROUND_PLUS_INFINITY', - 'SQ_ROUND_TO_ZERO', 'SQ_RSRC_BUF', 'SQ_RSRC_BUF_RSVD_1', - 'SQ_RSRC_BUF_RSVD_2', 'SQ_RSRC_BUF_RSVD_3', 'SQ_RSRC_BUF_TYPE', - 'SQ_RSRC_FLAT', 'SQ_RSRC_FLAT_RSVD_0', 'SQ_RSRC_FLAT_RSVD_2', - 'SQ_RSRC_FLAT_RSVD_3', 'SQ_RSRC_FLAT_TYPE', 'SQ_RSRC_IMG_1D', - 'SQ_RSRC_IMG_1D_ARRAY', 'SQ_RSRC_IMG_2D', 'SQ_RSRC_IMG_2D_ARRAY', - 'SQ_RSRC_IMG_2D_MSAA', 'SQ_RSRC_IMG_2D_MSAA_ARRAY', - 'SQ_RSRC_IMG_3D', 'SQ_RSRC_IMG_CUBE', 'SQ_RSRC_IMG_RSVD_0', - 'SQ_RSRC_IMG_RSVD_1', 'SQ_RSRC_IMG_RSVD_2', 'SQ_RSRC_IMG_RSVD_3', - 'SQ_RSRC_IMG_RSVD_4', 'SQ_RSRC_IMG_RSVD_5', 'SQ_RSRC_IMG_RSVD_6', - 'SQ_RSRC_IMG_RSVD_7', 'SQ_RSRC_IMG_TYPE', 'SQ_SEL_0', 'SQ_SEL_1', - 'SQ_SEL_N_BC_1', 'SQ_SEL_RESERVED_1', 'SQ_SEL_W', 'SQ_SEL_X', - 'SQ_SEL_XYZW01', 'SQ_SEL_Y', 'SQ_SEL_Z', 'SQ_TEX_ANISO_RATIO', - 'SQ_TEX_ANISO_RATIO_1', 'SQ_TEX_ANISO_RATIO_16', - 'SQ_TEX_ANISO_RATIO_2', 'SQ_TEX_ANISO_RATIO_4', - 'SQ_TEX_ANISO_RATIO_8', 'SQ_TEX_BORDER_COLOR', - 'SQ_TEX_BORDER_COLOR_OPAQUE_BLACK', - 'SQ_TEX_BORDER_COLOR_OPAQUE_WHITE', - 'SQ_TEX_BORDER_COLOR_REGISTER', 'SQ_TEX_BORDER_COLOR_TRANS_BLACK', - 'SQ_TEX_CLAMP', 'SQ_TEX_CLAMP_BORDER', 'SQ_TEX_CLAMP_HALF_BORDER', - 'SQ_TEX_CLAMP_LAST_TEXEL', 'SQ_TEX_DEPTH_COMPARE', - 'SQ_TEX_DEPTH_COMPARE_ALWAYS', 'SQ_TEX_DEPTH_COMPARE_EQUAL', - 'SQ_TEX_DEPTH_COMPARE_GREATER', - 'SQ_TEX_DEPTH_COMPARE_GREATEREQUAL', 'SQ_TEX_DEPTH_COMPARE_LESS', - 'SQ_TEX_DEPTH_COMPARE_LESSEQUAL', 'SQ_TEX_DEPTH_COMPARE_NEVER', - 'SQ_TEX_DEPTH_COMPARE_NOTEQUAL', 'SQ_TEX_MIP_FILTER', - 'SQ_TEX_MIP_FILTER_LINEAR', 'SQ_TEX_MIP_FILTER_NONE', - 'SQ_TEX_MIP_FILTER_POINT', 'SQ_TEX_MIP_FILTER_POINT_ANISO_ADJ', - 'SQ_TEX_MIRROR', 'SQ_TEX_MIRROR_ONCE_BORDER', - 'SQ_TEX_MIRROR_ONCE_HALF_BORDER', 'SQ_TEX_MIRROR_ONCE_LAST_TEXEL', - 'SQ_TEX_WRAP', 'SQ_TEX_XY_FILTER', - 'SQ_TEX_XY_FILTER_ANISO_BILINEAR', 'SQ_TEX_XY_FILTER_ANISO_POINT', - 'SQ_TEX_XY_FILTER_BILINEAR', 'SQ_TEX_XY_FILTER_POINT', - 'SQ_TEX_Z_FILTER', 'SQ_TEX_Z_FILTER_LINEAR', - 'SQ_TEX_Z_FILTER_NONE', 'SQ_TEX_Z_FILTER_POINT', - 'SQ_TT_INST_EXCLUDE_EXPGNT234_BIT', - 'SQ_TT_INST_EXCLUDE_EXPGNT234_SHIFT', - 'SQ_TT_INST_EXCLUDE_VMEM_OTHER_SIMD_BIT', - 'SQ_TT_INST_EXCLUDE_VMEM_OTHER_SIMD_SHIFT', 'SQ_TT_MODE', - 'SQ_TT_MODE_DETAIL', 'SQ_TT_MODE_GLOBAL', 'SQ_TT_MODE_OFF', - 'SQ_TT_MODE_ON', 'SQ_TT_REG_EXCLUDE_CP_ME_MC_RADDR_BIT', - 'SQ_TT_REG_EXCLUDE_CP_ME_MC_RADDR_SHIFT', - 'SQ_TT_REG_EXCLUDE_GRBM_COMPUTE_EXCLUDE_BIT', - 'SQ_TT_REG_EXCLUDE_GRBM_COMPUTE_EXCLUDE_SHIFT', - 'SQ_TT_REG_EXCLUDE_USER_DATA_BIT', - 'SQ_TT_REG_EXCLUDE_USER_DATA_SHIFT', 'SQ_TT_RT_FREQ', - 'SQ_TT_RT_FREQ_1024_CLK', 'SQ_TT_RT_FREQ_4096_CLK', - 'SQ_TT_RT_FREQ_NEVER', 'SQ_TT_TOKEN_EXCLUDE_ALUEXEC_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_EVENT_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_IMMEDIATE_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_INST_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_PERF_SHIFT', 'SQ_TT_TOKEN_EXCLUDE_REG_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_UTILCTR_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_VALUINST_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_VMEMEXEC_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_WAVEALLOC_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_WAVERDY_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_WAVESTARTEND_SHIFT', - 'SQ_TT_TOKEN_MASK_ALL_BIT', 'SQ_TT_TOKEN_MASK_ALL_SHIFT', - 'SQ_TT_TOKEN_MASK_COMP_BIT', 'SQ_TT_TOKEN_MASK_COMP_SHIFT', - 'SQ_TT_TOKEN_MASK_CONFIG_BIT', 'SQ_TT_TOKEN_MASK_CONFIG_SHIFT', - 'SQ_TT_TOKEN_MASK_CONTEXT_BIT', 'SQ_TT_TOKEN_MASK_CONTEXT_SHIFT', - 'SQ_TT_TOKEN_MASK_GFXUDEC_BIT', 'SQ_TT_TOKEN_MASK_GFXUDEC_SHIFT', - 'SQ_TT_TOKEN_MASK_INST_EXCLUDE', - 'SQ_TT_TOKEN_MASK_INST_EXCLUDE_SHIFT', - 'SQ_TT_TOKEN_MASK_REG_EXCLUDE', - 'SQ_TT_TOKEN_MASK_REG_EXCLUDE_SHIFT', - 'SQ_TT_TOKEN_MASK_REG_INCLUDE', - 'SQ_TT_TOKEN_MASK_REG_INCLUDE_SHIFT', 'SQ_TT_TOKEN_MASK_RSVD_BIT', - 'SQ_TT_TOKEN_MASK_RSVD_SHIFT', 'SQ_TT_TOKEN_MASK_SHDEC_BIT', - 'SQ_TT_TOKEN_MASK_SHDEC_SHIFT', 'SQ_TT_TOKEN_MASK_SQDEC_BIT', - 'SQ_TT_TOKEN_MASK_SQDEC_SHIFT', - 'SQ_TT_TOKEN_MASK_TOKEN_EXCLUDE_SHIFT', 'SQ_TT_UTIL_TIMER', - 'SQ_TT_UTIL_TIMER_100_CLK', 'SQ_TT_UTIL_TIMER_250_CLK', - 'SQ_TT_WAVESTART_MODE', 'SQ_TT_WAVESTART_MODE_ALLOC', - 'SQ_TT_WAVESTART_MODE_PBB_ID', 'SQ_TT_WAVESTART_MODE_SHORT', - 'SQ_TT_WTYPE_INCLUDE', 'SQ_TT_WTYPE_INCLUDE_CS_BIT', - 'SQ_TT_WTYPE_INCLUDE_CS_SHIFT', 'SQ_TT_WTYPE_INCLUDE_GS_BIT', - 'SQ_TT_WTYPE_INCLUDE_GS_SHIFT', 'SQ_TT_WTYPE_INCLUDE_HS_BIT', - 'SQ_TT_WTYPE_INCLUDE_HS_SHIFT', 'SQ_TT_WTYPE_INCLUDE_PS_BIT', - 'SQ_TT_WTYPE_INCLUDE_PS_SHIFT', 'SQ_TT_WTYPE_INCLUDE_RSVD0_BIT', - 'SQ_TT_WTYPE_INCLUDE_RSVD0_SHIFT', - 'SQ_TT_WTYPE_INCLUDE_RSVD1_BIT', - 'SQ_TT_WTYPE_INCLUDE_RSVD1_SHIFT', - 'SQ_TT_WTYPE_INCLUDE_RSVD2_BIT', - 'SQ_TT_WTYPE_INCLUDE_RSVD2_SHIFT', 'SQ_TT_WTYPE_INCLUDE_SHIFT', - 'SQ_WATCH_MODES', 'SQ_WATCH_MODE_ALL', 'SQ_WATCH_MODE_ATOMIC', - 'SQ_WATCH_MODE_NONREAD', 'SQ_WATCH_MODE_READ', - 'SQ_WAVE_FWD_PROG_INTERVAL', 'SQ_WAVE_FWD_PROG_INTERVAL_1024', - 'SQ_WAVE_FWD_PROG_INTERVAL_256', 'SQ_WAVE_FWD_PROG_INTERVAL_4096', - 'SQ_WAVE_FWD_PROG_INTERVAL_NEVER', 'SQ_WAVE_IB_DEP_HOLD_CNT_SIZE', - 'SQ_WAVE_IB_DEP_LDS_DIR_SIZE', 'SQ_WAVE_IB_DEP_SA_EXEC_SIZE', - 'SQ_WAVE_IB_DEP_SA_M0_SIZE', 'SQ_WAVE_IB_DEP_SA_SDST_SIZE', - 'SQ_WAVE_IB_DEP_VA_EXEC_SIZE', 'SQ_WAVE_IB_DEP_VA_SDST_SIZE', - 'SQ_WAVE_IB_DEP_VA_SSRC_SIZE', 'SQ_WAVE_IB_DEP_VA_VCC_SIZE', - 'SQ_WAVE_IB_DEP_VA_VDST_SIZE', 'SQ_WAVE_IB_DEP_VM_VSRC_SIZE', - 'SQ_WAVE_IB_ECC_CLEAN', 'SQ_WAVE_IB_ECC_ERR_CONTINUE', - 'SQ_WAVE_IB_ECC_ERR_HALT', 'SQ_WAVE_IB_ECC_ST', - 'SQ_WAVE_IB_ECC_WITH_ERR_MSG', 'SQ_WAVE_SCHED_MODES', - 'SQ_WAVE_SCHED_MODE_DISABLE_VA_VDST', 'SQ_WAVE_SCHED_MODE_EXPERT', - 'SQ_WAVE_SCHED_MODE_NORMAL', 'SQ_WAVE_TYPE', 'SQ_WAVE_TYPE_CS', - 'SQ_WAVE_TYPE_GS', 'SQ_WAVE_TYPE_HS', 'SQ_WAVE_TYPE_PS', - 'SQ_WAVE_TYPE_PS0', 'SQ_WAVE_TYPE_PS1', 'SQ_WAVE_TYPE_PS2', - 'SQ_WAVE_TYPE_PS3', 'SQ_WAVE_TYPE_RSVD0', 'SQ_WAVE_TYPE_RSVD1', - 'SQ_WAVE_TYPE_RSVD2', 'SRCID_NONSECURE_CP', - 'SRCID_NONSECURE_CP_RCIU', 'SRCID_RLC', 'SRCID_RLCV', - 'SRCID_SECURE_CP', 'SRCID_SECURE_CP_RCIU', 'STALL', - 'STENCIL_ADD_CLAMP', 'STENCIL_ADD_WRAP', 'STENCIL_AND', - 'STENCIL_INVERT', 'STENCIL_KEEP', 'STENCIL_NAND', 'STENCIL_NOR', - 'STENCIL_ONES', 'STENCIL_OR', 'STENCIL_REPLACE_OP', - 'STENCIL_REPLACE_TEST', 'STENCIL_SUB_CLAMP', 'STENCIL_SUB_WRAP', - 'STENCIL_XNOR', 'STENCIL_XOR', 'STENCIL_ZERO', - 'STREAM_0_SYNCHRONIZATION', - 'STREAM_0_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_0_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_10_SYNCHRONIZATION', - 'STREAM_10_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_10_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_11_SYNCHRONIZATION', - 'STREAM_11_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_11_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_12_SYNCHRONIZATION', - 'STREAM_12_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_12_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_13_SYNCHRONIZATION', - 'STREAM_13_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_13_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_14_SYNCHRONIZATION', - 'STREAM_14_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_14_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_15_SYNCHRONIZATION', - 'STREAM_15_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_15_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_1_SYNCHRONIZATION', - 'STREAM_1_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_1_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_2_SYNCHRONIZATION', - 'STREAM_2_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_2_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_3_SYNCHRONIZATION', - 'STREAM_3_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_3_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_4_SYNCHRONIZATION', - 'STREAM_4_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_4_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_5_SYNCHRONIZATION', - 'STREAM_5_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_5_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_6_SYNCHRONIZATION', - 'STREAM_6_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_6_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_7_SYNCHRONIZATION', - 'STREAM_7_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_7_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_8_SYNCHRONIZATION', - 'STREAM_8_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_8_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_9_SYNCHRONIZATION', - 'STREAM_9_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_9_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_DSC_444_RGB', 'STREAM_DSC_DISABLE', - 'STREAM_DSC_NATIVE_422_420', 'STREAM_ODM_COMBINE_1_SEGMENT', - 'STREAM_ODM_COMBINE_2_SEGMENT', 'STREAM_ODM_COMBINE_4_SEGMENT', - 'STREAM_ODM_COMBINE_RESERVED', 'STREAM_PIXEL_ENCODING_420', - 'STREAM_PIXEL_ENCODING_422', 'STREAM_PIXEL_ENCODING_444_RGB', - 'STRM_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', - 'STRM_PERFMON_STATE_DISABLE_AND_RESET', - 'STRM_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 'STRM_PERFMON_STATE_RESERVED_3', - 'STRM_PERFMON_STATE_START_COUNTING', - 'STRM_PERFMON_STATE_STOP_COUNTING', 'SURFACE_DCC', - 'SURFACE_DCC_BLOCK_IS_IND_128B', 'SURFACE_DCC_BLOCK_IS_IND_64B', - 'SURFACE_DCC_BLOCK_IS_IND_64B_NO_128BCL', - 'SURFACE_DCC_BLOCK_IS_UNCONSTRAINED', 'SURFACE_DCC_IND_128B', - 'SURFACE_DCC_IND_64B', 'SURFACE_DCC_IND_BLK', - 'SURFACE_DCC_IS_IND_128B', 'SURFACE_DCC_IS_IND_64B', - 'SURFACE_DCC_IS_NOT_IND_128B', 'SURFACE_DCC_IS_NOT_IND_64B', - 'SURFACE_FLIP_AWAY_INT_LEVEL', 'SURFACE_FLIP_AWAY_INT_PULSE', - 'SURFACE_FLIP_AWAY_INT_TYPE', 'SURFACE_FLIP_EXEC_DEBUG_MODE', - 'SURFACE_FLIP_EXEC_DEBUG_MODE_ENABLE', - 'SURFACE_FLIP_EXEC_NORMAL_MODE', 'SURFACE_FLIP_INT_LEVEL', - 'SURFACE_FLIP_INT_PULSE', 'SURFACE_FLIP_INT_TYPE', - 'SURFACE_FLIP_IN_STEREOSYNC', 'SURFACE_FLIP_IN_STEREOSYNC_MODE', - 'SURFACE_FLIP_MODE_FOR_STEREOSYNC', - 'SURFACE_FLIP_MODE_FOR_STEREOSYNC_RESERVED', - 'SURFACE_FLIP_NOT_IN_STEREOSYNC_MODE', - 'SURFACE_FLIP_STEREO_SELECT_DISABLE', - 'SURFACE_FLIP_STEREO_SELECT_DISABLED', - 'SURFACE_FLIP_STEREO_SELECT_ENABLED', - 'SURFACE_FLIP_STEREO_SELECT_POLARITY', - 'SURFACE_FLIP_STEREO_SELECT_POLARITY_INVERT', - 'SURFACE_FLIP_STEREO_SELECT_POLARITY_NOT_INVERT', - 'SURFACE_FLIP_TYPE', 'SURFACE_FLIP_VUPDATE_SKIP_NUM', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_0', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_1', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_10', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_11', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_12', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_13', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_14', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_15', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_2', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_3', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_4', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_5', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_6', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_7', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_8', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_9', 'SURFACE_INUSE_IS_LATCHED', - 'SURFACE_INUSE_IS_NOT_LATCHED', 'SURFACE_INUSE_RAED_NO_LATCH', - 'SURFACE_IS_DCC', 'SURFACE_IS_NOT_DCC', 'SURFACE_IS_NOT_TMZ', - 'SURFACE_IS_TMZ', 'SURFACE_I_FLIP', 'SURFACE_PIXEL_FORMAT', - 'SURFACE_TMZ', 'SURFACE_UPDATE_IS_LOCKED', - 'SURFACE_UPDATE_IS_UNLOCKED', 'SURFACE_UPDATE_LOCK', - 'SURFACE_V_FLIP', 'SU_PERFCNT_SEL', 'SWATH_HEIGHT', - 'SWATH_HEIGHT_16L', 'SWATH_HEIGHT_1L', 'SWATH_HEIGHT_2L', - 'SWATH_HEIGHT_4L', 'SWATH_HEIGHT_8L', 'SX_BLEND_OPT', - 'SX_CB_RAT_ACK_REQUEST', 'SX_DOWNCONVERT_FORMAT', - 'SX_OPT_COMB_FCN', 'SX_PERFCOUNTER_VALS', 'SX_PERF_SEL_CLOCK', - 'SX_PERF_SEL_CLOCK_DROP_STALL', 'SX_PERF_SEL_COL_BUSY', - 'SX_PERF_SEL_DB0_4X2_DISCARD', 'SX_PERF_SEL_DB0_END_OF_WAVE', - 'SX_PERF_SEL_DB0_HALF_QUADS', 'SX_PERF_SEL_DB0_MRT_BLEND_BYPASS', - 'SX_PERF_SEL_DB0_MRT_DISCARD_SRC', - 'SX_PERF_SEL_DB0_MRT_DONT_RD_DEST', - 'SX_PERF_SEL_DB0_MRT_DOUBLE_QUADS', - 'SX_PERF_SEL_DB0_MRT_SINGLE_QUADS', 'SX_PERF_SEL_DB0_PIXELS', - 'SX_PERF_SEL_DB0_PIXEL_IDLE', 'SX_PERF_SEL_DB0_PIXEL_STALL', - 'SX_PERF_SEL_DB0_PRED_PIXELS', 'SX_PERF_SEL_DB0_SIZE', - 'SX_PERF_SEL_DB1_4X2_DISCARD', 'SX_PERF_SEL_DB1_END_OF_WAVE', - 'SX_PERF_SEL_DB1_HALF_QUADS', 'SX_PERF_SEL_DB1_MRT_BLEND_BYPASS', - 'SX_PERF_SEL_DB1_MRT_DISCARD_SRC', - 'SX_PERF_SEL_DB1_MRT_DONT_RD_DEST', - 'SX_PERF_SEL_DB1_MRT_DOUBLE_QUADS', - 'SX_PERF_SEL_DB1_MRT_SINGLE_QUADS', 'SX_PERF_SEL_DB1_PIXELS', - 'SX_PERF_SEL_DB1_PIXEL_IDLE', 'SX_PERF_SEL_DB1_PIXEL_STALL', - 'SX_PERF_SEL_DB1_PRED_PIXELS', 'SX_PERF_SEL_DB1_SIZE', - 'SX_PERF_SEL_DB2_4X2_DISCARD', 'SX_PERF_SEL_DB2_END_OF_WAVE', - 'SX_PERF_SEL_DB2_HALF_QUADS', 'SX_PERF_SEL_DB2_MRT_BLEND_BYPASS', - 'SX_PERF_SEL_DB2_MRT_DISCARD_SRC', - 'SX_PERF_SEL_DB2_MRT_DONT_RD_DEST', - 'SX_PERF_SEL_DB2_MRT_DOUBLE_QUADS', - 'SX_PERF_SEL_DB2_MRT_SINGLE_QUADS', 'SX_PERF_SEL_DB2_PIXELS', - 'SX_PERF_SEL_DB2_PIXEL_IDLE', 'SX_PERF_SEL_DB2_PIXEL_STALL', - 'SX_PERF_SEL_DB2_PRED_PIXELS', 'SX_PERF_SEL_DB2_SIZE', - 'SX_PERF_SEL_DB3_4X2_DISCARD', 'SX_PERF_SEL_DB3_END_OF_WAVE', - 'SX_PERF_SEL_DB3_HALF_QUADS', 'SX_PERF_SEL_DB3_MRT_BLEND_BYPASS', - 'SX_PERF_SEL_DB3_MRT_DISCARD_SRC', - 'SX_PERF_SEL_DB3_MRT_DONT_RD_DEST', - 'SX_PERF_SEL_DB3_MRT_DOUBLE_QUADS', - 'SX_PERF_SEL_DB3_MRT_SINGLE_QUADS', 'SX_PERF_SEL_DB3_PIXELS', - 'SX_PERF_SEL_DB3_PIXEL_IDLE', 'SX_PERF_SEL_DB3_PIXEL_STALL', - 'SX_PERF_SEL_DB3_PRED_PIXELS', 'SX_PERF_SEL_DB3_SIZE', - 'SX_PERF_SEL_GATE_EN1', 'SX_PERF_SEL_GATE_EN2', - 'SX_PERF_SEL_GATE_EN3', 'SX_PERF_SEL_GATE_EN4', - 'SX_PERF_SEL_GATE_EN5', 'SX_PERF_SEL_GATE_EN6', - 'SX_PERF_SEL_GATE_EN7', 'SX_PERF_SEL_GATE_EN8', - 'SX_PERF_SEL_IDX_BUSY', 'SX_PERF_SEL_IDX_IDLE_CYCLES', - 'SX_PERF_SEL_IDX_REQ', 'SX_PERF_SEL_IDX_REQ_LATENCY', - 'SX_PERF_SEL_IDX_RET', 'SX_PERF_SEL_IDX_SCBD_STALL', - 'SX_PERF_SEL_IDX_STALL_CYCLES', 'SX_PERF_SEL_PA_IDLE_CYCLES', - 'SX_PERF_SEL_PA_POS', 'SX_PERF_SEL_PA_POS_BANK_CONF', - 'SX_PERF_SEL_PA_REQ', 'SX_PERF_SEL_PA_REQ_LATENCY', - 'SX_PERF_SEL_POS_BUSY', 'SX_PERF_SEL_POS_SCBD_STALL', - 'SX_PERF_SEL_SH_COLOR_STALL', 'SX_PERF_SEL_SH_COLOR_STARVE', - 'SX_PERF_SEL_SH_IDX_STARVE', 'SX_PERF_SEL_SH_POS_STALL', - 'SX_PERF_SEL_SH_POS_STARVE', 'SX_RT_EXPORT_10_11_11', - 'SX_RT_EXPORT_16_16_AR', 'SX_RT_EXPORT_16_16_GR', - 'SX_RT_EXPORT_1_5_5_5', 'SX_RT_EXPORT_2_10_10_10', - 'SX_RT_EXPORT_2_10_10_10_6E4', 'SX_RT_EXPORT_2_10_10_10_7E3', - 'SX_RT_EXPORT_32_A', 'SX_RT_EXPORT_32_R', 'SX_RT_EXPORT_4_4_4_4', - 'SX_RT_EXPORT_5_6_5', 'SX_RT_EXPORT_8_8_8_8', - 'SX_RT_EXPORT_9_9_9_E5', 'SX_RT_EXPORT_NO_CONVERSION', - 'SYMCLK_FE_FORCE_EN', 'SYMCLK_FE_FORCE_EN_DISABLE', - 'SYMCLK_FE_FORCE_EN_ENABLE', 'SYMCLK_FE_FORCE_SRC', - 'SYMCLK_FE_FORCE_SRC_RESERVED', 'SYMCLK_FE_FORCE_SRC_UNIPHYA', - 'SYMCLK_FE_FORCE_SRC_UNIPHYB', 'SYMCLK_FE_FORCE_SRC_UNIPHYC', - 'SYMCLK_FE_FORCE_SRC_UNIPHYD', 'ScMap', 'ScUncertaintyRegionMode', - 'ScUncertaintyRegionMult', 'ScXsel', 'ScYsel', 'SeMap', - 'SePairMap', 'SePairXsel', 'SePairYsel', 'SeXsel', 'SeYsel', - 'SourceFormat', 'Spare_257', 'StencilOp', 'TA_PERFCOUNT_SEL', - 'TA_PERF_SEL_NULL', 'TA_PERF_SEL_addr_stalled_by_tc_cycles', - 'TA_PERF_SEL_addr_stalled_by_td_cycles', - 'TA_PERF_SEL_addresser_busy', 'TA_PERF_SEL_addresser_fifo_busy', - 'TA_PERF_SEL_addresser_stalled_by_aligner_only_cycles', - 'TA_PERF_SEL_addresser_stalled_cycles', - 'TA_PERF_SEL_aligner_busy', - 'TA_PERF_SEL_aligner_clk_valid_cycles', - 'TA_PERF_SEL_aligner_cycles', 'TA_PERF_SEL_aniso_10_cycle_quads', - 'TA_PERF_SEL_aniso_12_cycle_quads', - 'TA_PERF_SEL_aniso_14_cycle_quads', - 'TA_PERF_SEL_aniso_16_cycle_quads', - 'TA_PERF_SEL_aniso_1_cycle_quads', - 'TA_PERF_SEL_aniso_2_cycle_quads', - 'TA_PERF_SEL_aniso_4_cycle_quads', - 'TA_PERF_SEL_aniso_6_cycle_quads', - 'TA_PERF_SEL_aniso_8_cycle_quads', - 'TA_PERF_SEL_aniso_gt1_cycle_quads', - 'TA_PERF_SEL_aniso_stalled_by_addresser_only_cycles', - 'TA_PERF_SEL_aniso_stalled_cycles', - 'TA_PERF_SEL_atomic_2_write_data_vgpr_instructions', - 'TA_PERF_SEL_atomic_4_write_data_vgpr_instructions', - 'TA_PERF_SEL_atomic_write_data_input_cycles', - 'TA_PERF_SEL_atomic_write_data_output_cycles', - 'TA_PERF_SEL_bf_busy', - 'TA_PERF_SEL_boundary_harvestable_clk_enabled_cycles', - 'TA_PERF_SEL_boundary_non_harvestable_clk_enabled_cycles', - 'TA_PERF_SEL_buffer_1_address_input_vgpr_instructions', - 'TA_PERF_SEL_buffer_2_address_input_vgpr_instructions', - 'TA_PERF_SEL_buffer_atomic_wavefronts', - 'TA_PERF_SEL_buffer_flat_1_op_burst', - 'TA_PERF_SEL_buffer_flat_2to3_op_burst', - 'TA_PERF_SEL_buffer_flat_4to31_op_burst', - 'TA_PERF_SEL_buffer_flat_clk_valid_cycles', - 'TA_PERF_SEL_buffer_flat_ge32_op_burst', - 'TA_PERF_SEL_buffer_has_index_instructions', - 'TA_PERF_SEL_buffer_has_offset_instructions', - 'TA_PERF_SEL_buffer_load_wavefronts', - 'TA_PERF_SEL_buffer_store_wavefronts', - 'TA_PERF_SEL_buffer_total_cycles', - 'TA_PERF_SEL_buffer_wavefronts', 'TA_PERF_SEL_bvh_total_cycles', - 'TA_PERF_SEL_color_1_cycle_quads', - 'TA_PERF_SEL_color_2_cycle_quads', - 'TA_PERF_SEL_color_3_cycle_quads', - 'TA_PERF_SEL_deriv_stalled_by_aniso_only_cycles', - 'TA_PERF_SEL_deriv_stalled_cycles', - 'TA_PERF_SEL_flat_1_address_input_vgpr_instructions', - 'TA_PERF_SEL_flat_atomic_wavefronts', - 'TA_PERF_SEL_flat_load_wavefronts', - 'TA_PERF_SEL_flat_store_wavefronts', - 'TA_PERF_SEL_flat_total_cycles', 'TA_PERF_SEL_flat_wavefronts', - 'TA_PERF_SEL_gradient_busy', - 'TA_PERF_SEL_gradient_clk_valid_cycles', - 'TA_PERF_SEL_gradient_cycles', 'TA_PERF_SEL_gradient_fifo_busy', - 'TA_PERF_SEL_harvestable_clk_enabled_cycles', - 'TA_PERF_SEL_harvestable_register_clk_enabled_cycles', - 'TA_PERF_SEL_ibubble_16to31_cycle_burst', - 'TA_PERF_SEL_ibubble_1_cycle_burst', - 'TA_PERF_SEL_ibubble_2to3_cycle_burst', - 'TA_PERF_SEL_ibubble_32to63_cycle_burst', - 'TA_PERF_SEL_ibubble_4to15_cycle_burst', - 'TA_PERF_SEL_ibubble_ge64_cycle_burst', - 'TA_PERF_SEL_image_atomic_wavefronts', - 'TA_PERF_SEL_image_bvh_11_input_vgpr_instructions', - 'TA_PERF_SEL_image_bvh_12_input_vgpr_instructions', - 'TA_PERF_SEL_image_bvh_1_op_burst', - 'TA_PERF_SEL_image_bvh_2to3_op_burst', - 'TA_PERF_SEL_image_bvh_4to7_op_burst', - 'TA_PERF_SEL_image_bvh_8_input_vgpr_instructions', - 'TA_PERF_SEL_image_bvh_9_input_vgpr_instructions', - 'TA_PERF_SEL_image_bvh_ge8_op_burst', - 'TA_PERF_SEL_image_linked_1_op_burst', - 'TA_PERF_SEL_image_linked_2to3_op_burst', - 'TA_PERF_SEL_image_linked_4to7_op_burst', - 'TA_PERF_SEL_image_linked_ge8_op_burst', - 'TA_PERF_SEL_image_nosampler_1_address_input_vgpr_instructions', - 'TA_PERF_SEL_image_nosampler_1_op_burst', - 'TA_PERF_SEL_image_nosampler_2_address_input_vgpr_instructions', - 'TA_PERF_SEL_image_nosampler_2to3_op_burst', - 'TA_PERF_SEL_image_nosampler_3_address_input_vgpr_instructions', - 'TA_PERF_SEL_image_nosampler_4_address_input_vgpr_instructions', - 'TA_PERF_SEL_image_nosampler_4to31_op_burst', - 'TA_PERF_SEL_image_nosampler_ge32_op_burst', - 'TA_PERF_SEL_image_nosampler_has_q_instructions', - 'TA_PERF_SEL_image_nosampler_has_r_instructions', - 'TA_PERF_SEL_image_nosampler_has_t_instructions', - 'TA_PERF_SEL_image_nosampler_total_cycles', - 'TA_PERF_SEL_image_read_wavefronts', - 'TA_PERF_SEL_image_sampler_10_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_11_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_12_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_1_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_1_op_burst', - 'TA_PERF_SEL_image_sampler_2_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_2to3_op_burst', - 'TA_PERF_SEL_image_sampler_3_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_4_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_4to7_op_burst', - 'TA_PERF_SEL_image_sampler_5_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_6_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_7_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_8_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_9_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_ge8_op_burst', - 'TA_PERF_SEL_image_sampler_has_bias_instructions', - 'TA_PERF_SEL_image_sampler_has_dr_instructions', - 'TA_PERF_SEL_image_sampler_has_ds_instructions', - 'TA_PERF_SEL_image_sampler_has_dt_instructions', - 'TA_PERF_SEL_image_sampler_has_offset_instructions', - 'TA_PERF_SEL_image_sampler_has_q_instructions', - 'TA_PERF_SEL_image_sampler_has_r_instructions', - 'TA_PERF_SEL_image_sampler_has_reference_instructions', - 'TA_PERF_SEL_image_sampler_has_t_instructions', - 'TA_PERF_SEL_image_sampler_total_cycles', - 'TA_PERF_SEL_image_sampler_wavefronts', - 'TA_PERF_SEL_image_store_wavefronts', - 'TA_PERF_SEL_image_wavefronts', 'TA_PERF_SEL_in_addr_cycles', - 'TA_PERF_SEL_in_busy', 'TA_PERF_SEL_in_cfifo_busy', - 'TA_PERF_SEL_in_data_cycles', 'TA_PERF_SEL_in_fifos_busy', - 'TA_PERF_SEL_in_qfifo_busy', 'TA_PERF_SEL_in_rfifo_busy', - 'TA_PERF_SEL_in_waiting_on_req_cycles', - 'TA_PERF_SEL_in_wfifo_busy', - 'TA_PERF_SEL_latency_ram_ref_required_instructions', - 'TA_PERF_SEL_latency_ram_weights_written_cycles', - 'TA_PERF_SEL_latency_ram_whv_required_instructions', - 'TA_PERF_SEL_latency_ram_whv_required_quads', - 'TA_PERF_SEL_latency_ram_ws_required_instructions', - 'TA_PERF_SEL_latency_ram_ws_required_quads', - 'TA_PERF_SEL_lod_aniso_clk_valid_cycles', 'TA_PERF_SEL_lod_busy', - 'TA_PERF_SEL_lod_fifo_busy', 'TA_PERF_SEL_mip_1_cycle_quads', - 'TA_PERF_SEL_mip_2_cycle_quads', - 'TA_PERF_SEL_mipmap_invalid_samples', - 'TA_PERF_SEL_mipmap_lod_0_samples', - 'TA_PERF_SEL_mipmap_lod_10_samples', - 'TA_PERF_SEL_mipmap_lod_11_samples', - 'TA_PERF_SEL_mipmap_lod_12_samples', - 'TA_PERF_SEL_mipmap_lod_13_samples', - 'TA_PERF_SEL_mipmap_lod_14_samples', - 'TA_PERF_SEL_mipmap_lod_1_samples', - 'TA_PERF_SEL_mipmap_lod_2_samples', - 'TA_PERF_SEL_mipmap_lod_3_samples', - 'TA_PERF_SEL_mipmap_lod_4_samples', - 'TA_PERF_SEL_mipmap_lod_5_samples', - 'TA_PERF_SEL_mipmap_lod_6_samples', - 'TA_PERF_SEL_mipmap_lod_7_samples', - 'TA_PERF_SEL_mipmap_lod_8_samples', - 'TA_PERF_SEL_mipmap_lod_9_samples', - 'TA_PERF_SEL_non_harvestable_clk_enabled_cycles', - 'TA_PERF_SEL_nonsampler_clk_valid_cycles', 'TA_PERF_SEL_ns_busy', - 'TA_PERF_SEL_num_nodes_invalidated_due_to_bad_input', - 'TA_PERF_SEL_num_nodes_invalidated_due_to_oob', - 'TA_PERF_SEL_num_of_bvh_invalidated_first_tri', - 'TA_PERF_SEL_num_of_bvh_invalidated_fourth_tri', - 'TA_PERF_SEL_num_of_bvh_invalidated_fp16_box', - 'TA_PERF_SEL_num_of_bvh_invalidated_fp32_box', - 'TA_PERF_SEL_num_of_bvh_invalidated_second_tri', - 'TA_PERF_SEL_num_of_bvh_invalidated_third_tri', - 'TA_PERF_SEL_num_of_bvh_valid_first_tri', - 'TA_PERF_SEL_num_of_bvh_valid_fourth_tri', - 'TA_PERF_SEL_num_of_bvh_valid_fp16_box', - 'TA_PERF_SEL_num_of_bvh_valid_fp32_box', - 'TA_PERF_SEL_num_of_bvh_valid_second_tri', - 'TA_PERF_SEL_num_of_bvh_valid_third_tri', - 'TA_PERF_SEL_num_unlit_nodes_ta_opt', - 'TA_PERF_SEL_point_sampled_quads', - 'TA_PERF_SEL_register_clk_valid_cycles', - 'TA_PERF_SEL_sampler_addressing_clk_valid_cycles', - 'TA_PERF_SEL_sampler_clk_valid_cycles', - 'TA_PERF_SEL_sampler_op_quads', 'TA_PERF_SEL_smp_busy_ns_idle', - 'TA_PERF_SEL_smp_idle_ns_busy', - 'TA_PERF_SEL_store_2_write_data_vgpr_instructions', - 'TA_PERF_SEL_store_3_write_data_vgpr_instructions', - 'TA_PERF_SEL_store_4_write_data_vgpr_instructions', - 'TA_PERF_SEL_store_has_w_instructions', - 'TA_PERF_SEL_store_has_x_instructions', - 'TA_PERF_SEL_store_has_y_instructions', - 'TA_PERF_SEL_store_has_z_instructions', - 'TA_PERF_SEL_store_write_data_input_cycles', - 'TA_PERF_SEL_store_write_data_output_cycles', - 'TA_PERF_SEL_sync_nonsampler_fifo_clk_valid_cycles', - 'TA_PERF_SEL_sync_sampler_cstate_fifo_clk_valid_cycles', - 'TA_PERF_SEL_sync_sampler_sstate_fifo_clk_valid_cycles', - 'TA_PERF_SEL_ta_busy', 'TA_PERF_SEL_tcreq_clk_valid_cycles', - 'TA_PERF_SEL_total_wavefronts', 'TA_PERF_SEL_vmemcmd_cycles', - 'TA_PERF_SEL_vmemreq_cycles', 'TA_PERF_SEL_vol_1_cycle_quads', - 'TA_PERF_SEL_vol_2_cycle_quads', 'TA_PERF_SEL_walker_cycles', - 'TA_PERF_SEL_write_1_op_burst', 'TA_PERF_SEL_write_2to3_op_burst', - 'TA_PERF_SEL_write_4to31_op_burst', - 'TA_PERF_SEL_write_data_clk_valid_cycles', - 'TA_PERF_SEL_write_ge32_op_burst', 'TA_PERF_SEL_write_path_busy', - 'TA_TC_ADDR_MODES', 'TA_TC_ADDR_MODE_BORDER_COLOR', - 'TA_TC_ADDR_MODE_COMP0', 'TA_TC_ADDR_MODE_COMP1', - 'TA_TC_ADDR_MODE_COMP2', 'TA_TC_ADDR_MODE_COMP3', - 'TA_TC_ADDR_MODE_DEFAULT', 'TA_TC_ADDR_MODE_UNALIGNED', - 'TA_TC_REQ_MODES', 'TA_TC_REQ_MODE_BORDER', 'TA_TC_REQ_MODE_BYTE', - 'TA_TC_REQ_MODE_BYTE_NV', 'TA_TC_REQ_MODE_DWORD', - 'TA_TC_REQ_MODE_NORMAL', 'TA_TC_REQ_MODE_TEX0', - 'TA_TC_REQ_MODE_TEX1', 'TA_TC_REQ_MODE_TEX2', 'TB_ACP_NOT_SEND', - 'TB_ACP_PKT_SEND', 'TB_ACR_0_MULTIPLE_RESERVED', - 'TB_ACR_1_MULTIPLE', 'TB_ACR_2_MULTIPLE', - 'TB_ACR_3_MULTIPLE_RESERVED', 'TB_ACR_4_MULTIPLE', - 'TB_ACR_5_MULTIPLE_RESERVED', 'TB_ACR_6_MULTIPLE_RESERVED', - 'TB_ACR_7_MULTIPLE_RESERVED', 'TB_ACR_CONT_DISABLE', - 'TB_ACR_CONT_ENABLE', 'TB_ACR_NOT_SEND', - 'TB_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE', 'TB_ACR_PKT_SEND', - 'TB_ACR_SELECT_32K', 'TB_ACR_SELECT_44K', 'TB_ACR_SELECT_48K', - 'TB_ACR_SELECT_HW', 'TB_ACR_SOURCE_HW', 'TB_ACR_SOURCE_SW', - 'TB_AUDIO_INFO_CONT_DISABLE', 'TB_AUDIO_INFO_CONT_ENABLE', - 'TB_AUDIO_INFO_NOT_SEND', 'TB_AUDIO_INFO_PKT_SEND', - 'TB_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT', - 'TB_BORROW_MODE_ACTIVE', 'TB_BORROW_MODE_BLANK', - 'TB_BORROW_MODE_NONE', 'TB_BORROW_MODE_RESERVED', - 'TB_CRC_ACTIVE_AND_DATAISLAND_TRIBYTES', 'TB_CRC_ACTIVE_TRIBYTES', - 'TB_CRC_ALL_TRIBYTES', 'TB_CRC_DATAISLAND_TRIBYTES', - 'TB_CRC_DEEP_COLOR_PACKER', 'TB_CRC_DSC_PACKER', - 'TB_CRC_ENCRYPTOR_INPUT', 'TB_CRC_TB_ENC_INPUT', - 'TB_DEEP_COLOR_DEPTH_24BPP', 'TB_DEEP_COLOR_DEPTH_30BPP', - 'TB_DEEP_COLOR_DEPTH_36BPP', 'TB_DEEP_COLOR_DEPTH_RESERVED', - 'TB_DEFAULT_PHASE_IS_0', 'TB_DEFAULT_PHASE_IS_1', 'TB_DISABLE', - 'TB_DSC_444_RGB', 'TB_DSC_DISABLE', 'TB_DSC_NATIVE_422_420', - 'TB_ENABLE', 'TB_GC_AVMUTE_CONT_DISABLE', - 'TB_GC_AVMUTE_CONT_ENABLE', 'TB_GC_AVMUTE_SET', - 'TB_GC_AVMUTE_UNSET', 'TB_GC_CONT_DISABLE', 'TB_GC_CONT_ENABLE', - 'TB_GC_NOT_SEND', 'TB_GC_PKT_SEND', 'TB_GENERIC_CONT_DISABLE', - 'TB_GENERIC_CONT_ENABLE', 'TB_GENERIC_NOT_SEND', - 'TB_GENERIC_PKT_SEND', 'TB_ISRC_CONT_DISABLE', - 'TB_ISRC_CONT_ENABLE', 'TB_ISRC_NOT_SEND', 'TB_ISRC_PKT_SEND', - 'TB_METADATA_NOT_SEND', 'TB_METADATA_PKT_SEND', 'TB_NOT_RESET', - 'TB_NOT_SYNC_PHASE_ON_FRAME_START', 'TB_NO_ERROR_OCCURRED', - 'TB_OVERFLOW_OCCURRED', 'TB_PIXEL_ENCODING_420', - 'TB_PIXEL_ENCODING_422', 'TB_PIXEL_ENCODING_444_RGB', - 'TB_PKT_LINE_REF_END_OF_ACTIVE', 'TB_PKT_LINE_REF_OTGSOF', - 'TB_RESET', 'TB_SYNC_PHASE_ON_FRAME_START', 'TCC_CACHE_POLICIES', - 'TCC_CACHE_POLICY_LRU', 'TCC_CACHE_POLICY_STREAM', 'TCC_MTYPE', - 'TCP_CACHE_POLICIES', 'TCP_CACHE_POLICY_HIT_EVICT', - 'TCP_CACHE_POLICY_HIT_LRU', 'TCP_CACHE_POLICY_MISS_EVICT', - 'TCP_CACHE_POLICY_MISS_LRU', 'TCP_CACHE_STORE_POLICIES', - 'TCP_CACHE_STORE_POLICY_WT_EVICT', - 'TCP_CACHE_STORE_POLICY_WT_LRU', 'TCP_DSM_DATA_SEL', - 'TCP_DSM_DISABLE', 'TCP_DSM_INJECT_SEL', 'TCP_DSM_INJECT_SEL0', - 'TCP_DSM_INJECT_SEL1', 'TCP_DSM_INJECT_SEL2', - 'TCP_DSM_INJECT_SEL3', 'TCP_DSM_SEL0', 'TCP_DSM_SEL1', - 'TCP_DSM_SEL_BOTH', 'TCP_DSM_SINGLE_WRITE', - 'TCP_DSM_SINGLE_WRITE_DIS', 'TCP_DSM_SINGLE_WRITE_EN', - 'TCP_OPCODE_ATOMIC', 'TCP_OPCODE_ATOMIC_CMPSWAP', - 'TCP_OPCODE_GATHERH', 'TCP_OPCODE_INV', 'TCP_OPCODE_LOAD', - 'TCP_OPCODE_READ', 'TCP_OPCODE_SAMPLER', 'TCP_OPCODE_TYPE', - 'TCP_OPCODE_WRITE', 'TCP_PERFCOUNT_SELECT', - 'TCP_PERF_SEL_ALLOC_STALL', - 'TCP_PERF_SEL_ATOMIC_TAGCONFLICT_STALL', - 'TCP_PERF_SEL_COMP_TEX_LOAD_STALL', - 'TCP_PERF_SEL_DATA_FIFO_STALL', 'TCP_PERF_SEL_GATE_EN1', - 'TCP_PERF_SEL_GATE_EN2', 'TCP_PERF_SEL_GL1_GRANT_READ_STALL', - 'TCP_PERF_SEL_GL1_PENDING_STALL', 'TCP_PERF_SEL_GL1_READ_LATENCY', - 'TCP_PERF_SEL_GL1_REQ_ATOMIC_WITHOUT_RET', - 'TCP_PERF_SEL_GL1_REQ_ATOMIC_WITH_RET', - 'TCP_PERF_SEL_GL1_REQ_READ', 'TCP_PERF_SEL_GL1_REQ_READ_128B', - 'TCP_PERF_SEL_GL1_REQ_READ_64B', 'TCP_PERF_SEL_GL1_REQ_WRITE', - 'TCP_PERF_SEL_GL1_TCP_BACK_PRESSURE', - 'TCP_PERF_SEL_GL1_TCP_RDRET_STALL', - 'TCP_PERF_SEL_GL1_WRITE_LATENCY', 'TCP_PERF_SEL_LFIFO_STALL', - 'TCP_PERF_SEL_LOD_STALL', 'TCP_PERF_SEL_MEM_REQ_FIFO_STALL', - 'TCP_PERF_SEL_OFIFO_AGE_ORDER_STALL', - 'TCP_PERF_SEL_OFIFO_INCOMPLETE_STALL', 'TCP_PERF_SEL_POWER_STALL', - 'TCP_PERF_SEL_READ_DATACONFLICT_STALL', - 'TCP_PERF_SEL_READ_TAGCONFLICT_STALL', 'TCP_PERF_SEL_REQ', - 'TCP_PERF_SEL_REQ_MISS', 'TCP_PERF_SEL_REQ_MISS_TAGBANK0', - 'TCP_PERF_SEL_REQ_MISS_TAGBANK1', - 'TCP_PERF_SEL_REQ_MISS_TAGBANK2', - 'TCP_PERF_SEL_REQ_MISS_TAGBANK3', 'TCP_PERF_SEL_REQ_NON_READ', - 'TCP_PERF_SEL_REQ_READ', 'TCP_PERF_SEL_REQ_READ_HIT_EVICT', - 'TCP_PERF_SEL_REQ_READ_HIT_LRU', - 'TCP_PERF_SEL_REQ_READ_MISS_EVICT', - 'TCP_PERF_SEL_REQ_TAGBANK0_SET0', - 'TCP_PERF_SEL_REQ_TAGBANK0_SET1', - 'TCP_PERF_SEL_REQ_TAGBANK1_SET0', - 'TCP_PERF_SEL_REQ_TAGBANK1_SET1', - 'TCP_PERF_SEL_REQ_TAGBANK2_SET0', - 'TCP_PERF_SEL_REQ_TAGBANK2_SET1', - 'TCP_PERF_SEL_REQ_TAGBANK3_SET0', - 'TCP_PERF_SEL_REQ_TAGBANK3_SET1', 'TCP_PERF_SEL_REQ_WRITE', - 'TCP_PERF_SEL_REQ_WRITE_MISS_EVICT', - 'TCP_PERF_SEL_REQ_WRITE_MISS_LRU', 'TCP_PERF_SEL_TA_REQ', - 'TCP_PERF_SEL_TA_REQ_ATOMIC_WITHOUT_RET', - 'TCP_PERF_SEL_TA_REQ_ATOMIC_WITH_RET', - 'TCP_PERF_SEL_TA_REQ_GL0_INV', 'TCP_PERF_SEL_TA_REQ_READ', - 'TCP_PERF_SEL_TA_REQ_STATE_READ', 'TCP_PERF_SEL_TA_REQ_WRITE', - 'TCP_PERF_SEL_TA_TCP_REQ_STARVE', 'TCP_PERF_SEL_TCP_LATENCY', - 'TCP_PERF_SEL_TCP_TA_REQ_STALL', - 'TCP_PERF_SEL_TD_DATA_CYCLE_STALL', 'TCP_PERF_SEL_TD_TCP_STALL', - 'TCP_PERF_SEL_UNORDERED_MTYPE_STALL', - 'TCP_PERF_SEL_WRITE_DATACONFLICT_STALL', - 'TCP_PERF_SEL_WRITE_TAGCONFLICT_STALL', 'TCP_WATCH_MODES', - 'TCP_WATCH_MODE_ALL', 'TCP_WATCH_MODE_ATOMIC', - 'TCP_WATCH_MODE_NONREAD', 'TCP_WATCH_MODE_READ', 'TC_EA_CID', - 'TC_EA_CID_CPF', 'TC_EA_CID_CPG', 'TC_EA_CID_DCC', - 'TC_EA_CID_FMASK', 'TC_EA_CID_HTILE', 'TC_EA_CID_IA', - 'TC_EA_CID_MISC', 'TC_EA_CID_PA', 'TC_EA_CID_RT', 'TC_EA_CID_SQC', - 'TC_EA_CID_STENCIL', 'TC_EA_CID_TCP', 'TC_EA_CID_TCPMETA', - 'TC_EA_CID_UTCL2_TPI', 'TC_EA_CID_WD', 'TC_EA_CID_Z', 'TC_NACKS', - 'TC_NACK_DATA_ERROR', 'TC_NACK_NO_FAULT', 'TC_NACK_PAGE_FAULT', - 'TC_NACK_PROTECTION_FAULT', 'TC_OP', 'TC_OP_ATOMIC_ADD_32', - 'TC_OP_ATOMIC_ADD_64', 'TC_OP_ATOMIC_ADD_RTN_32', - 'TC_OP_ATOMIC_ADD_RTN_64', 'TC_OP_ATOMIC_AND_32', - 'TC_OP_ATOMIC_AND_64', 'TC_OP_ATOMIC_AND_RTN_32', - 'TC_OP_ATOMIC_AND_RTN_64', 'TC_OP_ATOMIC_CMPSWAP_32', - 'TC_OP_ATOMIC_CMPSWAP_64', 'TC_OP_ATOMIC_CMPSWAP_RTN_32', - 'TC_OP_ATOMIC_CMPSWAP_RTN_64', 'TC_OP_ATOMIC_DEC_32', - 'TC_OP_ATOMIC_DEC_64', 'TC_OP_ATOMIC_DEC_RTN_32', - 'TC_OP_ATOMIC_DEC_RTN_64', 'TC_OP_ATOMIC_FADD_FLUSH_DENORM_32', - 'TC_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32', - 'TC_OP_ATOMIC_FCMPSWAP_32', 'TC_OP_ATOMIC_FCMPSWAP_64', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64', - 'TC_OP_ATOMIC_FCMPSWAP_RTN_32', 'TC_OP_ATOMIC_FCMPSWAP_RTN_64', - 'TC_OP_ATOMIC_FMAX_32', 'TC_OP_ATOMIC_FMAX_64', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_32', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_64', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64', - 'TC_OP_ATOMIC_FMAX_RTN_32', 'TC_OP_ATOMIC_FMAX_RTN_64', - 'TC_OP_ATOMIC_FMIN_32', 'TC_OP_ATOMIC_FMIN_64', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_32', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_64', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64', - 'TC_OP_ATOMIC_FMIN_RTN_32', 'TC_OP_ATOMIC_FMIN_RTN_64', - 'TC_OP_ATOMIC_INC_32', 'TC_OP_ATOMIC_INC_64', - 'TC_OP_ATOMIC_INC_RTN_32', 'TC_OP_ATOMIC_INC_RTN_64', - 'TC_OP_ATOMIC_OR_32', 'TC_OP_ATOMIC_OR_64', - 'TC_OP_ATOMIC_OR_RTN_32', 'TC_OP_ATOMIC_OR_RTN_64', - 'TC_OP_ATOMIC_SMAX_32', 'TC_OP_ATOMIC_SMAX_64', - 'TC_OP_ATOMIC_SMAX_RTN_32', 'TC_OP_ATOMIC_SMAX_RTN_64', - 'TC_OP_ATOMIC_SMIN_32', 'TC_OP_ATOMIC_SMIN_64', - 'TC_OP_ATOMIC_SMIN_RTN_32', 'TC_OP_ATOMIC_SMIN_RTN_64', - 'TC_OP_ATOMIC_SUB_32', 'TC_OP_ATOMIC_SUB_64', - 'TC_OP_ATOMIC_SUB_RTN_32', 'TC_OP_ATOMIC_SUB_RTN_64', - 'TC_OP_ATOMIC_SWAP_32', 'TC_OP_ATOMIC_SWAP_64', - 'TC_OP_ATOMIC_SWAP_RTN_32', 'TC_OP_ATOMIC_SWAP_RTN_64', - 'TC_OP_ATOMIC_UMAX_32', 'TC_OP_ATOMIC_UMAX_64', - 'TC_OP_ATOMIC_UMAX_RTN_32', 'TC_OP_ATOMIC_UMAX_RTN_64', - 'TC_OP_ATOMIC_UMIN_32', 'TC_OP_ATOMIC_UMIN_64', - 'TC_OP_ATOMIC_UMIN_RTN_32', 'TC_OP_ATOMIC_UMIN_RTN_64', - 'TC_OP_ATOMIC_XOR_32', 'TC_OP_ATOMIC_XOR_64', - 'TC_OP_ATOMIC_XOR_RTN_32', 'TC_OP_ATOMIC_XOR_RTN_64', - 'TC_OP_INVL2_NC', 'TC_OP_INV_METADATA', 'TC_OP_MASKS', - 'TC_OP_MASK_64', 'TC_OP_MASK_FLUSH_DENROM', 'TC_OP_MASK_NO_RTN', - 'TC_OP_NOP_ACK', 'TC_OP_NOP_RTN0', 'TC_OP_PROBE_FILTER', - 'TC_OP_READ', 'TC_OP_RESERVED_FADD_32', - 'TC_OP_RESERVED_FADD_RTN_32', 'TC_OP_RESERVED_FOP_32_0', - 'TC_OP_RESERVED_FOP_32_2', 'TC_OP_RESERVED_FOP_64_0', - 'TC_OP_RESERVED_FOP_64_1', 'TC_OP_RESERVED_FOP_64_2', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_32_2', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_0', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_1', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_2', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_0', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_1', - 'TC_OP_RESERVED_FOP_RTN_32_0', 'TC_OP_RESERVED_FOP_RTN_32_2', - 'TC_OP_RESERVED_FOP_RTN_64_0', 'TC_OP_RESERVED_FOP_RTN_64_1', - 'TC_OP_RESERVED_FOP_RTN_64_2', 'TC_OP_RESERVED_NON_FLOAT_32_1', - 'TC_OP_RESERVED_NON_FLOAT_32_2', 'TC_OP_RESERVED_NON_FLOAT_32_3', - 'TC_OP_RESERVED_NON_FLOAT_32_4', 'TC_OP_RESERVED_NON_FLOAT_64_1', - 'TC_OP_RESERVED_NON_FLOAT_64_2', 'TC_OP_RESERVED_NON_FLOAT_64_3', - 'TC_OP_RESERVED_NON_FLOAT_64_4', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_0', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_1', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_2', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_3', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_1', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_2', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_3', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_4', 'TC_OP_WBINVL1', - 'TC_OP_WBINVL1_SD', 'TC_OP_WBINVL1_VOL', 'TC_OP_WBINVL2', - 'TC_OP_WBINVL2_NC', 'TC_OP_WBINVL2_SD', 'TC_OP_WBL2_NC', - 'TC_OP_WBL2_WC', 'TC_OP_WRITE', 'TD_PERFCOUNT_SEL', - 'TD_PERF_SEL_address_cmd_poison', - 'TD_PERF_SEL_all_pipes_sclk_on_at_same_time', - 'TD_PERF_SEL_blend_prt_with_prt_default_0', - 'TD_PERF_SEL_blend_prt_with_prt_default_1', - 'TD_PERF_SEL_bubble_bin_lds_stall_1to3', - 'TD_PERF_SEL_bubble_bin_lds_stall_4to7', - 'TD_PERF_SEL_bubble_bin_lds_stall_8to15', - 'TD_PERF_SEL_bubble_bin_lds_stall_gt15', - 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_0', - 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_1', - 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_128to511', - 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_2to31', - 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_32to127', - 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_gt511', - 'TD_PERF_SEL_burst_bin_bvh4_1', 'TD_PERF_SEL_burst_bin_bvh4_2to8', - 'TD_PERF_SEL_burst_bin_bvh4_9to16', - 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_1', - 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_2to4', - 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_5to7', - 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_8to16', - 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_gt16', - 'TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_1', - 'TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_2to8', - 'TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_9to16', - 'TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_gt16', - 'TD_PERF_SEL_burst_bin_bvh4_gt16', - 'TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_1', - 'TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_2to8', - 'TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_9to16', - 'TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_gt16', - 'TD_PERF_SEL_burst_bin_bvh4_tri_nodes_1', - 'TD_PERF_SEL_burst_bin_bvh4_tri_nodes_2to8', - 'TD_PERF_SEL_burst_bin_bvh4_tri_nodes_9to16', - 'TD_PERF_SEL_burst_bin_bvh4_tri_nodes_gt16', - 'TD_PERF_SEL_burst_bin_gather_1', - 'TD_PERF_SEL_burst_bin_gather_2to8', - 'TD_PERF_SEL_burst_bin_gather_9to16', - 'TD_PERF_SEL_burst_bin_gather_gt16', - 'TD_PERF_SEL_burst_bin_nofilter_1', - 'TD_PERF_SEL_burst_bin_nofilter_2to4', - 'TD_PERF_SEL_burst_bin_nofilter_5to7', - 'TD_PERF_SEL_burst_bin_nofilter_8to16', - 'TD_PERF_SEL_burst_bin_nofilter_gt16', - 'TD_PERF_SEL_burst_bin_preempting_nofilter_1', - 'TD_PERF_SEL_burst_bin_preempting_nofilter_2to4', - 'TD_PERF_SEL_burst_bin_preempting_nofilter_5to7', - 'TD_PERF_SEL_burst_bin_preempting_nofilter_8to16', - 'TD_PERF_SEL_burst_bin_preempting_nofilter_gt16', - 'TD_PERF_SEL_burst_bin_sampler_1', - 'TD_PERF_SEL_burst_bin_sampler_2to8', - 'TD_PERF_SEL_burst_bin_sampler_9to16', - 'TD_PERF_SEL_burst_bin_sampler_gt16', - 'TD_PERF_SEL_bypassLerp_instr', - 'TD_PERF_SEL_core_state_ram_max_cnt', - 'TD_PERF_SEL_core_state_rams_read', 'TD_PERF_SEL_d16_en_instr', - 'TD_PERF_SEL_data_poison', - 'TD_PERF_SEL_done_scoreboard_bp_due_to_lds', - 'TD_PERF_SEL_done_scoreboard_bp_due_to_ooo', - 'TD_PERF_SEL_done_scoreboard_is_full', - 'TD_PERF_SEL_done_scoreboard_max_stored_cnt', - 'TD_PERF_SEL_done_scoreboard_max_waiting_cnt', - 'TD_PERF_SEL_done_scoreboard_not_empty', - 'TD_PERF_SEL_four_comp_return_instr', 'TD_PERF_SEL_gather4_instr', - 'TD_PERF_SEL_gather4h_instr', - 'TD_PERF_SEL_input_bp_due_to_done_scoreboard_full', - 'TD_PERF_SEL_input_busy', 'TD_PERF_SEL_input_state_fifo_full', - 'TD_PERF_SEL_instruction_dest_is_lds', 'TD_PERF_SEL_ldfptr_instr', - 'TD_PERF_SEL_lds_stall', 'TD_PERF_SEL_load_instr', - 'TD_PERF_SEL_lod_warn_from_ta', - 'TD_PERF_SEL_min_max_filter_instr', 'TD_PERF_SEL_mixmode_instr', - 'TD_PERF_SEL_mixmode_resource', 'TD_PERF_SEL_msaa_load_instr', - 'TD_PERF_SEL_nofilter_and_bvh4_sclk_on_sampler_sclk_off', - 'TD_PERF_SEL_nofilter_busy', - 'TD_PERF_SEL_nofilter_byte_cycling_16cycles', - 'TD_PERF_SEL_nofilter_byte_cycling_4cycles', - 'TD_PERF_SEL_nofilter_byte_cycling_8cycles', - 'TD_PERF_SEL_nofilter_d16_sclk_en', - 'TD_PERF_SEL_nofilter_d32_sclk_en', - 'TD_PERF_SEL_nofilter_dword_cycling_2cycles', - 'TD_PERF_SEL_nofilter_dword_cycling_4cycles', - 'TD_PERF_SEL_nofilter_formatters_turned_on', - 'TD_PERF_SEL_nofilter_insert_extra_comps', - 'TD_PERF_SEL_nofilter_pkr_full', - 'TD_PERF_SEL_nofilter_pkr_full_due_to_arb', - 'TD_PERF_SEL_nofilter_popcount_dmask_gt_num_comp_of_fmt', - 'TD_PERF_SEL_nofilter_popcount_dmask_lt_num_comp_of_fmt', - 'TD_PERF_SEL_nofilter_sclk_en', - 'TD_PERF_SEL_nofilter_sclk_on_sampler_sclk_off', - 'TD_PERF_SEL_nofilter_total_num_comps_to_lds', 'TD_PERF_SEL_none', - 'TD_PERF_SEL_one_comp_return_instr', - 'TD_PERF_SEL_opaque_black_border', - 'TD_PERF_SEL_out_of_order_instr', - 'TD_PERF_SEL_preempting_nofilter_max_cnt', - 'TD_PERF_SEL_prt_ack_instr', - 'TD_PERF_SEL_ray_tracing_bvh4_box_grow_val_nonzero', - 'TD_PERF_SEL_ray_tracing_bvh4_box_sclk_en', - 'TD_PERF_SEL_ray_tracing_bvh4_box_sort_en', - 'TD_PERF_SEL_ray_tracing_bvh4_busy', - 'TD_PERF_SEL_ray_tracing_bvh4_dropped_box_node', - 'TD_PERF_SEL_ray_tracing_bvh4_dropped_tri_node', - 'TD_PERF_SEL_ray_tracing_bvh4_fp16_box_node', - 'TD_PERF_SEL_ray_tracing_bvh4_fp32_box_node', - 'TD_PERF_SEL_ray_tracing_bvh4_instr_invld_thread_cnt', - 'TD_PERF_SEL_ray_tracing_bvh4_invalid_box_node', - 'TD_PERF_SEL_ray_tracing_bvh4_invalid_tri_node', - 'TD_PERF_SEL_ray_tracing_bvh4_ip_sclk_en', - 'TD_PERF_SEL_ray_tracing_bvh4_num_box_misses', - 'TD_PERF_SEL_ray_tracing_bvh4_num_box_that_squashed_a_nan', - 'TD_PERF_SEL_ray_tracing_bvh4_num_box_with_inf_or_nan_vtx', - 'TD_PERF_SEL_ray_tracing_bvh4_num_tri_misses', - 'TD_PERF_SEL_ray_tracing_bvh4_num_tri_tie_breakers', - 'TD_PERF_SEL_ray_tracing_bvh4_num_tri_with_inf_or_nan_vtx', - 'TD_PERF_SEL_ray_tracing_bvh4_pkr_full', - 'TD_PERF_SEL_ray_tracing_bvh4_pkr_full_due_to_arb', - 'TD_PERF_SEL_ray_tracing_bvh4_sclk_en', - 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_0', - 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_1', - 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_17to31', - 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_2', - 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_32', - 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_3to4', - 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_5to8', - 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_9to16', - 'TD_PERF_SEL_ray_tracing_bvh4_tri_node', - 'TD_PERF_SEL_ray_tracing_bvh4_tri_sclk_en', - 'TD_PERF_SEL_reference_data_rams_read', - 'TD_PERF_SEL_resmap_instr', - 'TD_PERF_SEL_resmap_with_aniso_filtering', - 'TD_PERF_SEL_resmap_with_cubemap_corner', - 'TD_PERF_SEL_resmap_with_no_more_filtering', - 'TD_PERF_SEL_resmap_with_volume_filtering', - 'TD_PERF_SEL_sample_c_instr', 'TD_PERF_SEL_sample_instr', - 'TD_PERF_SEL_sampler_accum_sclk_en', - 'TD_PERF_SEL_sampler_and_bvh4_sclk_on_nofilter_sclk_off', - 'TD_PERF_SEL_sampler_and_nofilter_sclk_on_bvh4_sclk_off', - 'TD_PERF_SEL_sampler_bilerp_sclk_en', - 'TD_PERF_SEL_sampler_bypass_sclk_en', - 'TD_PERF_SEL_sampler_core_sclk_en', - 'TD_PERF_SEL_sampler_format_flt_sclk_en', - 'TD_PERF_SEL_sampler_format_fxdpt_sclk_en', - 'TD_PERF_SEL_sampler_lerp0_active', - 'TD_PERF_SEL_sampler_lerp1_active', - 'TD_PERF_SEL_sampler_lerp2_active', - 'TD_PERF_SEL_sampler_lerp3_active', - 'TD_PERF_SEL_sampler_lerp_busy', - 'TD_PERF_SEL_sampler_minmax_sclk_en', - 'TD_PERF_SEL_sampler_out_busy', 'TD_PERF_SEL_sampler_out_sclk_en', - 'TD_PERF_SEL_sampler_pkr_full', - 'TD_PERF_SEL_sampler_pkr_full_due_to_arb', - 'TD_PERF_SEL_sampler_preformatter_sclk_en', - 'TD_PERF_SEL_sampler_sclk_on_nofilter_sclk_off', - 'TD_PERF_SEL_status_packet', 'TD_PERF_SEL_ta_data_stall', - 'TD_PERF_SEL_tc_cycling_of_nofilter_instr_2cycles', - 'TD_PERF_SEL_tc_cycling_of_nofilter_instr_4cycles', - 'TD_PERF_SEL_tc_data_stall', 'TD_PERF_SEL_tc_ram_stall', - 'TD_PERF_SEL_tc_td_data_fifo_full', - 'TD_PERF_SEL_tc_td_ram_fifo_full', - 'TD_PERF_SEL_tc_td_ram_fifo_max_cnt', 'TD_PERF_SEL_td_busy', - 'TD_PERF_SEL_td_cycling_of_nofilter_instr_2cycles', - 'TD_PERF_SEL_td_cycling_of_nofilter_instr_4cycles', - 'TD_PERF_SEL_three_comp_return_instr', - 'TD_PERF_SEL_total_num_instr', - 'TD_PERF_SEL_total_num_instr_with_perf_wdw', - 'TD_PERF_SEL_total_num_nofilter_instr', - 'TD_PERF_SEL_total_num_nofilter_instr_with_perf_wdw', - 'TD_PERF_SEL_total_num_ray_tracing_bvh4_instr', - 'TD_PERF_SEL_total_num_ray_tracing_bvh4_instr_with_perf_wdw', - 'TD_PERF_SEL_total_num_sampler_instr', - 'TD_PERF_SEL_total_num_sampler_instr_with_perf_wdw', - 'TD_PERF_SEL_two_comp_return_instr', - 'TD_PERF_SEL_user_defined_border', - 'TD_PERF_SEL_weight_data_rams_read', 'TD_PERF_SEL_white_border', - 'TD_PERF_SEL_write_ack_instr', 'TESS_ISOLINE', 'TESS_QUAD', - 'TESS_TRIANGLE', 'TEST_CLK_DIV_SEL', 'TEST_CLK_SEL', - 'TEST_CLK_SEL_0', 'TEST_CLK_SEL_1', 'TEST_CLK_SEL_2', - 'TEST_CLK_SEL_3', 'TEST_CLK_SEL_4', 'TEST_CLK_SEL_5', - 'TEST_CLK_SEL_6', 'TEST_CLK_SEL_7', - 'TEST_CLOCK_MUX_SELECT_DISPCLK_G', - 'TEST_CLOCK_MUX_SELECT_DISPCLK_P', - 'TEST_CLOCK_MUX_SELECT_DISPCLK_R', - 'TEST_CLOCK_MUX_SELECT_DSCCLK_G', - 'TEST_CLOCK_MUX_SELECT_DSCCLK_P', - 'TEST_CLOCK_MUX_SELECT_DSCCLK_R', 'TEST_CLOCK_MUX_SELECT_ENUM', - 'TEX_BC_SWIZZLE', 'TEX_BC_Swizzle_WXYZ', 'TEX_BC_Swizzle_WZYX', - 'TEX_BC_Swizzle_XWYZ', 'TEX_BC_Swizzle_XYZW', - 'TEX_BC_Swizzle_YXWZ', 'TEX_BC_Swizzle_ZYXW', - 'TEX_BORDER_COLOR_TYPE', 'TEX_BorderColor_OpaqueBlack', - 'TEX_BorderColor_OpaqueWhite', 'TEX_BorderColor_Register', - 'TEX_BorderColor_TransparentBlack', 'TEX_CHROMA_KEY', 'TEX_CLAMP', - 'TEX_COORD_TYPE', 'TEX_ChromaKey_Blend', 'TEX_ChromaKey_Disabled', - 'TEX_ChromaKey_Kill', 'TEX_ChromaKey_RESERVED_3', - 'TEX_Clamp_ClampHalfToBorder', 'TEX_Clamp_ClampToBorder', - 'TEX_Clamp_ClampToLast', 'TEX_Clamp_Mirror', - 'TEX_Clamp_MirrorOnceHalfToBorder', - 'TEX_Clamp_MirrorOnceToBorder', 'TEX_Clamp_MirrorOnceToLast', - 'TEX_Clamp_Repeat', 'TEX_CoordType_Normalized', - 'TEX_CoordType_Unnormalized', 'TEX_DEPTH_COMPARE_FUNCTION', - 'TEX_DepthCompareFunction_Always', - 'TEX_DepthCompareFunction_Equal', - 'TEX_DepthCompareFunction_Greater', - 'TEX_DepthCompareFunction_GreaterEqual', - 'TEX_DepthCompareFunction_Less', - 'TEX_DepthCompareFunction_LessEqual', - 'TEX_DepthCompareFunction_Never', - 'TEX_DepthCompareFunction_NotEqual', 'TEX_FORMAT_COMP', - 'TEX_FormatComp_RESERVED_3', 'TEX_FormatComp_Signed', - 'TEX_FormatComp_Unsigned', 'TEX_FormatComp_UnsignedBiased', - 'TEX_MAX_ANISO_RATIO', 'TEX_MIP_FILTER', - 'TEX_MaxAnisoRatio_16to1', 'TEX_MaxAnisoRatio_1to1', - 'TEX_MaxAnisoRatio_2to1', 'TEX_MaxAnisoRatio_4to1', - 'TEX_MaxAnisoRatio_8to1', 'TEX_MaxAnisoRatio_RESERVED_5', - 'TEX_MaxAnisoRatio_RESERVED_6', 'TEX_MaxAnisoRatio_RESERVED_7', - 'TEX_MipFilter_Linear', 'TEX_MipFilter_None', - 'TEX_MipFilter_Point', 'TEX_MipFilter_Point_Aniso_Adj', - 'TEX_REQUEST_SIZE', 'TEX_RequestSize_128B', - 'TEX_RequestSize_2X64B', 'TEX_RequestSize_32B', - 'TEX_RequestSize_64B', 'TEX_SAMPLER_TYPE', - 'TEX_SamplerType_Invalid', 'TEX_SamplerType_Valid', - 'TEX_XYFilter_AnisoLinear', 'TEX_XYFilter_AnisoPoint', - 'TEX_XYFilter_Linear', 'TEX_XYFilter_Point', 'TEX_XY_FILTER', - 'TEX_ZFilter_Linear', 'TEX_ZFilter_None', 'TEX_ZFilter_Point', - 'TEX_ZFilter_RESERVED_3', 'TEX_Z_FILTER', 'TGID_ROLLOVER', - 'THREAD_TRACE_DRAW', 'THREAD_TRACE_FINISH', 'THREAD_TRACE_MARKER', - 'THREAD_TRACE_START', 'THREAD_TRACE_STOP', 'TIGHT_PACK', - 'TMDS_COLOR_FORMAT', 'TMDS_COLOR_FORMAT_DUAL30BPP', - 'TMDS_COLOR_FORMAT_RESERVED', 'TMDS_COLOR_FORMAT_TWIN30BPP_LSB', - 'TMDS_COLOR_FORMAT__24BPP__TWIN30BPP_MSB__DUAL48BPP', - 'TMDS_CTL0_DATA_INVERT', 'TMDS_CTL0_DATA_INVERT_EN', - 'TMDS_CTL0_DATA_MODULATION', 'TMDS_CTL0_DATA_MODULATION_BIT0', - 'TMDS_CTL0_DATA_MODULATION_BIT1', - 'TMDS_CTL0_DATA_MODULATION_BIT2', - 'TMDS_CTL0_DATA_MODULATION_DISABLE', 'TMDS_CTL0_DATA_NORMAL', - 'TMDS_CTL0_DATA_SEL', 'TMDS_CTL0_DATA_SEL0_RESERVED', - 'TMDS_CTL0_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL0_DATA_SEL2_VSYNC', - 'TMDS_CTL0_DATA_SEL3_RESERVED', 'TMDS_CTL0_DATA_SEL4_HSYNC', - 'TMDS_CTL0_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL0_DATA_SEL8_RANDOM_DATA', - 'TMDS_CTL0_DATA_SEL9_SEL15_RANDOM_DATA', - 'TMDS_CTL0_PATTERN_OUT_DISABLE', 'TMDS_CTL0_PATTERN_OUT_EN', - 'TMDS_CTL0_PATTERN_OUT_ENABLE', 'TMDS_CTL1_DATA_INVERT', - 'TMDS_CTL1_DATA_INVERT_EN', 'TMDS_CTL1_DATA_MODULATION', - 'TMDS_CTL1_DATA_MODULATION_BIT0', - 'TMDS_CTL1_DATA_MODULATION_BIT1', - 'TMDS_CTL1_DATA_MODULATION_BIT2', - 'TMDS_CTL1_DATA_MODULATION_DISABLE', 'TMDS_CTL1_DATA_NORMAL', - 'TMDS_CTL1_DATA_SEL', 'TMDS_CTL1_DATA_SEL0_RESERVED', - 'TMDS_CTL1_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL1_DATA_SEL2_VSYNC', - 'TMDS_CTL1_DATA_SEL3_RESERVED', 'TMDS_CTL1_DATA_SEL4_HSYNC', - 'TMDS_CTL1_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL1_DATA_SEL8_BLANK_TIME', - 'TMDS_CTL1_DATA_SEL9_SEL15_RESERVED', - 'TMDS_CTL1_PATTERN_OUT_DISABLE', 'TMDS_CTL1_PATTERN_OUT_EN', - 'TMDS_CTL1_PATTERN_OUT_ENABLE', 'TMDS_CTL2_DATA_INVERT', - 'TMDS_CTL2_DATA_INVERT_EN', 'TMDS_CTL2_DATA_MODULATION', - 'TMDS_CTL2_DATA_MODULATION_BIT0', - 'TMDS_CTL2_DATA_MODULATION_BIT1', - 'TMDS_CTL2_DATA_MODULATION_BIT2', - 'TMDS_CTL2_DATA_MODULATION_DISABLE', 'TMDS_CTL2_DATA_NORMAL', - 'TMDS_CTL2_DATA_SEL', 'TMDS_CTL2_DATA_SEL0_RESERVED', - 'TMDS_CTL2_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL2_DATA_SEL2_VSYNC', - 'TMDS_CTL2_DATA_SEL3_RESERVED', 'TMDS_CTL2_DATA_SEL4_HSYNC', - 'TMDS_CTL2_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL2_DATA_SEL8_BLANK_TIME', - 'TMDS_CTL2_DATA_SEL9_SEL15_RESERVED', - 'TMDS_CTL2_PATTERN_OUT_DISABLE', 'TMDS_CTL2_PATTERN_OUT_EN', - 'TMDS_CTL2_PATTERN_OUT_ENABLE', 'TMDS_CTL3_DATA_INVERT', - 'TMDS_CTL3_DATA_INVERT_EN', 'TMDS_CTL3_DATA_MODULATION', - 'TMDS_CTL3_DATA_MODULATION_BIT0', - 'TMDS_CTL3_DATA_MODULATION_BIT1', - 'TMDS_CTL3_DATA_MODULATION_BIT2', - 'TMDS_CTL3_DATA_MODULATION_DISABLE', 'TMDS_CTL3_DATA_NORMAL', - 'TMDS_CTL3_DATA_SEL', 'TMDS_CTL3_DATA_SEL0_RESERVED', - 'TMDS_CTL3_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL3_DATA_SEL2_VSYNC', - 'TMDS_CTL3_DATA_SEL3_RESERVED', 'TMDS_CTL3_DATA_SEL4_HSYNC', - 'TMDS_CTL3_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL3_DATA_SEL8_BLANK_TIME', - 'TMDS_CTL3_DATA_SEL9_SEL15_RESERVED', - 'TMDS_CTL3_PATTERN_OUT_DISABLE', 'TMDS_CTL3_PATTERN_OUT_EN', - 'TMDS_CTL3_PATTERN_OUT_ENABLE', - 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL', - 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_PCLK_TMDS', - 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_TMDS_PLL', 'TMDS_MUX_SELECT', - 'TMDS_MUX_SELECT_B', 'TMDS_MUX_SELECT_G', 'TMDS_MUX_SELECT_R', - 'TMDS_MUX_SELECT_RESERVED', 'TMDS_NOT_SYNC_PHASE_ON_FRAME_START', - 'TMDS_PIXEL_ENCODING', 'TMDS_PIXEL_ENCODING_422', - 'TMDS_PIXEL_ENCODING_444_OR_420', 'TMDS_REG_TEST_OUTPUTA_CNTLA', - 'TMDS_REG_TEST_OUTPUTA_CNTLA_NA', - 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA0', - 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA1', - 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA2', - 'TMDS_REG_TEST_OUTPUTB_CNTLB', 'TMDS_REG_TEST_OUTPUTB_CNTLB_NA', - 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB0', - 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB1', - 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB2', 'TMDS_STEREOSYNC_CTL0', - 'TMDS_STEREOSYNC_CTL1', 'TMDS_STEREOSYNC_CTL2', - 'TMDS_STEREOSYNC_CTL3', 'TMDS_STEREOSYNC_CTL_SEL_REG', - 'TMDS_SYNC_PHASE', 'TMDS_SYNC_PHASE_ON_FRAME_START', - 'TMDS_TRANSMITTER_BYPASS_PLLA_COHERENT', - 'TMDS_TRANSMITTER_BYPASS_PLLA_INCOHERENT', - 'TMDS_TRANSMITTER_BYPASS_PLLB_COHERENT', - 'TMDS_TRANSMITTER_BYPASS_PLLB_INCOHERENT', - 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA', - 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB', - 'TMDS_TRANSMITTER_CONTROL_IDSCKSELA', - 'TMDS_TRANSMITTER_CONTROL_IDSCKSELB', - 'TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN', - 'TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK', - 'TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN', - 'TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK', - 'TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS', - 'TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS', - 'TMDS_TRANSMITTER_ENABLE_HPD_MASK', - 'TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK', - 'TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK', - 'TMDS_TRANSMITTER_HPD_MASK_NOT_OVERRIDE', - 'TMDS_TRANSMITTER_HPD_MASK_OVERRIDE', - 'TMDS_TRANSMITTER_HPD_NOT_OVERRIDE_PLL_ENABLE', - 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE', - 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_CON', - 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_DISCON', - 'TMDS_TRANSMITTER_IDSCKSELA_USE_IDCLK', - 'TMDS_TRANSMITTER_IDSCKSELA_USE_IPIXCLK', - 'TMDS_TRANSMITTER_IDSCKSELB_USE_IDCLK', - 'TMDS_TRANSMITTER_IDSCKSELB_USE_IPIXCLK', - 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_NOT_OVERRIDE', - 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_OVERRIDE', - 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_NOT_OVERRIDE', - 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_OVERRIDE', - 'TMDS_TRANSMITTER_PLLSEL_BY_HW', - 'TMDS_TRANSMITTER_PLLSEL_OVERWRITE_BY_SW', - 'TMDS_TRANSMITTER_PLL_NOT_RST_ON_HPD', - 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_DISABLE', - 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_ENABLE', - 'TMDS_TRANSMITTER_PLL_RST_ON_HPD', - 'TMDS_TRANSMITTER_TDCLK_FROM_PADS', - 'TMDS_TRANSMITTER_TDCLK_FROM_TMDS_TDCLK', - 'TMDS_TRANSMITTER_TMCLK_FROM_PADS', - 'TMDS_TRANSMITTER_TMCLK_FROM_TMDS_TMCLK', 'TRANSERR', - 'TRANSFERRED_1024_BYTES', 'TRANSFERRED_128_BYTES', - 'TRANSFERRED_2048_BYTES', 'TRANSFERRED_256_BYTES', - 'TRANSFERRED_4096_BYTES', 'TRANSFERRED_512_BYTES', - 'TRANSFERRED_64_BYTES', 'TRANSFERRED_8192_BYTES', 'TRAPEZOIDS', - 'TRISTRIP', 'TVX_TYPE', 'TVX_Type_InvalidTextureResource', - 'TVX_Type_InvalidVertexBuffer', 'TVX_Type_ValidTextureResource', - 'TVX_Type_ValidVertexBuffer', 'UCONFIG_SPACE_END', - 'UCONFIG_SPACE_START', 'UNDEF', 'UNSIGNED', 'USE_MALL_FOR_CURSOR', - 'USE_MALL_FOR_CURSOR_0', 'USE_MALL_FOR_CURSOR_1', - 'USE_MALL_FOR_PSTATE_CHANGE', 'USE_MALL_FOR_PSTATE_CHANGE_0', - 'USE_MALL_FOR_PSTATE_CHANGE_1', 'USE_MALL_FOR_STATIC_SCREEN', - 'USE_MALL_FOR_STATIC_SCREEN_0', 'USE_MALL_FOR_STATIC_SCREEN_1', - 'UTCL0FaultType', 'UTCL0RequestType', 'UTCL0_TYPE_BYPASS', - 'UTCL0_TYPE_NORMAL', 'UTCL0_TYPE_SHOOTDOWN', - 'UTCL0_XNACK_NO_RETRY', 'UTCL0_XNACK_PRT', 'UTCL0_XNACK_RETRY', - 'UTCL0_XNACK_SUCCESS', 'UTCL1FaultType', 'UTCL1PerfSel', - 'UTCL1RequestType', 'UTCL1_PERF_SEL_BYPASS_REQS', - 'UTCL1_PERF_SEL_CP_INVREQS', 'UTCL1_PERF_SEL_HITS', - 'UTCL1_PERF_SEL_HIT_INV_FILTER_REQS', - 'UTCL1_PERF_SEL_INV_ALL_VMID_INVREQS', - 'UTCL1_PERF_SEL_MH_DUPLICATE_DETECT', - 'UTCL1_PERF_SEL_MH_RECENT_BUF_HIT', 'UTCL1_PERF_SEL_MISSES', - 'UTCL1_PERF_SEL_NONE', 'UTCL1_PERF_SEL_RANGE_INVREQS', - 'UTCL1_PERF_SEL_REQS', 'UTCL1_PERF_SEL_RTNS', - 'UTCL1_PERF_SEL_STALL_MH_FULL', - 'UTCL1_PERF_SEL_STALL_UTCL2_CREDITS', 'UTCL1_PERF_SEL_UTCL2_REQS', - 'UTCL1_PERF_SEL_UTCL2_REQS_OUTSTANDING_ACCUM', - 'UTCL1_PERF_SEL_UTCL2_RET_CNT', 'UTCL1_PERF_SEL_UTCL2_RET_FAULT', - 'UTCL1_PERF_SEL_UTCL2_RET_PERM_FAULT', - 'UTCL1_PERF_SEL_UTCL2_RET_PRT_FAULT', - 'UTCL1_PERF_SEL_UTCL2_RET_XNACK_RETRY', - 'UTCL1_PERF_SEL_UTCL2_UTCL1_INVREQS', - 'UTCL1_PERF_SEL_XLAT_REQ_BUSY', 'UTCL1_TYPE_BYPASS', - 'UTCL1_TYPE_NORMAL', 'UTCL1_TYPE_SHOOTDOWN', - 'UTCL1_XNACK_NO_RETRY', 'UTCL1_XNACK_PRT', 'UTCL1_XNACK_RETRY', - 'UTCL1_XNACK_SUCCESS', 'VGT_DETECT_ONE', 'VGT_DETECT_ZERO', - 'VGT_DIST_MODE', 'VGT_DI_INDEX_SIZE', 'VGT_DI_MAJOR_MODE_SELECT', - 'VGT_DI_PRIM_TYPE', 'VGT_DI_SOURCE_SELECT', 'VGT_DMA_BUF_MEM', - 'VGT_DMA_BUF_RING', 'VGT_DMA_BUF_SETUP', 'VGT_DMA_BUF_TYPE', - 'VGT_DMA_PTR_UPDATE', 'VGT_DMA_SWAP_16_BIT', - 'VGT_DMA_SWAP_32_BIT', 'VGT_DMA_SWAP_MODE', 'VGT_DMA_SWAP_NONE', - 'VGT_DMA_SWAP_WORD', 'VGT_EVENT_TYPE', 'VGT_FLUSH', - 'VGT_GROUP_CONV_SEL', 'VGT_GRP_AUTO_PRIM', - 'VGT_GRP_FIX_1_23_TO_FLOAT', 'VGT_GRP_FLOAT_32', - 'VGT_GRP_INDEX_16', 'VGT_GRP_INDEX_32', 'VGT_GRP_SINT_16', - 'VGT_GRP_SINT_32', 'VGT_GRP_UINT_16', 'VGT_GRP_UINT_32', - 'VGT_GS_MODE_TYPE', 'VGT_GS_OUTPRIM_TYPE', 'VGT_INDEX_16', - 'VGT_INDEX_32', 'VGT_INDEX_8', 'VGT_INDEX_TYPE_MODE', - 'VGT_OUTPATH_GS_BLOCK', 'VGT_OUTPATH_HS_BLOCK', - 'VGT_OUTPATH_PRIM_GEN', 'VGT_OUTPATH_SELECT', - 'VGT_OUTPATH_TE_GS_BLOCK', 'VGT_OUTPATH_TE_OUTPUT', - 'VGT_OUTPATH_TE_PRIM_GEN', 'VGT_OUTPATH_VTX_REUSE', - 'VGT_OUT_2D_RECT', 'VGT_OUT_LINE', 'VGT_OUT_LINE_ADJ', - 'VGT_OUT_PATCH', 'VGT_OUT_POINT', 'VGT_OUT_PRIM_TYPE', - 'VGT_OUT_RECT_V0', 'VGT_OUT_RECT_V1', 'VGT_OUT_RECT_V2', - 'VGT_OUT_RECT_V3', 'VGT_OUT_TRI', 'VGT_OUT_TRI_ADJ', - 'VGT_POLICY_BYPASS', 'VGT_POLICY_LRU', 'VGT_POLICY_STREAM', - 'VGT_RDREQ_POLICY', 'VGT_STAGES_ES_EN', 'VGT_STAGES_GS_EN', - 'VGT_STAGES_HS_EN', 'VGT_STAGES_LS_EN', 'VGT_STAGES_VS_EN', - 'VGT_STREAMOUT_RESET', 'VGT_STREAMOUT_SYNC', 'VGT_TESS_PARTITION', - 'VGT_TESS_TOPOLOGY', 'VGT_TESS_TYPE', 'VGT_TE_PRIM_INDEX_LINE', - 'VGT_TE_PRIM_INDEX_QUAD', 'VGT_TE_PRIM_INDEX_TRI', 'VGT_TE_QUAD', - 'VID_ENHANCED_MODE', 'VID_NORMAL_FRAME_MODE', - 'VID_STREAM_DISABLE_MASKED', 'VID_STREAM_DISABLE_UNMASK', - 'VMEMCMD_RETURN_IN_ORDER', 'VMEMCMD_RETURN_IN_ORDER_READ', - 'VMEMCMD_RETURN_ORDER', 'VMEMCMD_RETURN_OUT_OF_ORDER', 'VMID_SZ', - 'VMPG_SIZE', 'VMPG_SIZE_4KB', 'VMPG_SIZE_64KB', 'VM_GROUP_SIZE', - 'VM_GROUP_SIZE_1024B', 'VM_GROUP_SIZE_128B', - 'VM_GROUP_SIZE_2048B', 'VM_GROUP_SIZE_256B', 'VM_GROUP_SIZE_512B', - 'VM_GROUP_SIZE_64B', 'VM_PG_SIZE_1024KB', 'VM_PG_SIZE_128KB', - 'VM_PG_SIZE_16KB', 'VM_PG_SIZE_2048KB', 'VM_PG_SIZE_256KB', - 'VM_PG_SIZE_32KB', 'VM_PG_SIZE_4KB', 'VM_PG_SIZE_512KB', - 'VM_PG_SIZE_64KB', 'VM_PG_SIZE_8KB', - 'VPG_MEM_DISABLE_MEM_PWR_CTRL', 'VPG_MEM_ENABLE_MEM_PWR_CTRL', - 'VPG_MEM_FORCE_LIGHT_SLEEP_REQ', 'VPG_MEM_NO_FORCE_REQ', - 'VPG_MEM_PWR_DIS_CTRL', 'VPG_MEM_PWR_FORCE_CTRL', - 'VREADY_AT_OR_AFTER_VSYNC', 'VREADY_BEFORE_VSYNC', - 'VRSCombinerModeSC', 'VRS_SHADING_RATE_16X_SSAA', - 'VRS_SHADING_RATE_1X1', 'VRS_SHADING_RATE_1X2', - 'VRS_SHADING_RATE_2X1', 'VRS_SHADING_RATE_2X2', - 'VRS_SHADING_RATE_2X4', 'VRS_SHADING_RATE_2X_SSAA', - 'VRS_SHADING_RATE_4X2', 'VRS_SHADING_RATE_4X4', - 'VRS_SHADING_RATE_4X_SSAA', 'VRS_SHADING_RATE_8X_SSAA', - 'VRS_SHADING_RATE_UNDEFINED0', 'VRS_SHADING_RATE_UNDEFINED1', - 'VRS_SHADING_RATE_UNDEFINED2', 'VRS_SHADING_RATE_UNDEFINED3', - 'VRS_SHADING_RATE_UNDEFINED4', 'VRSrate', 'VSYNC_CNT_LATCH_MASK', - 'VSYNC_CNT_LATCH_MASK_0', 'VSYNC_CNT_LATCH_MASK_1', - 'VSYNC_CNT_RESET_SEL', 'VSYNC_CNT_RESET_SEL_0', - 'VSYNC_CNT_RESET_SEL_1', 'VS_PARTIAL_FLUSH', - 'VS_STAGE_COPY_SHADER', 'VS_STAGE_DS', 'VS_STAGE_REAL', - 'VTG_SEL_0', 'VTG_SEL_1', 'VTG_SEL_2', 'VTG_SEL_3', 'VTG_SEL_4', - 'VTG_SEL_5', 'WAIT_SYNC', 'WATERMARK_MODE', 'WD_IA_DRAW_REG_XFER', - 'WD_IA_DRAW_REG_XFER_FL_MS_EXP_ALLOC', - 'WD_IA_DRAW_REG_XFER_FL_MS_TG_SIZE', - 'WD_IA_DRAW_REG_XFER_FL_MS_WG_DIM', - 'WD_IA_DRAW_REG_XFER_FL_MS_WG_DIM_1', - 'WD_IA_DRAW_REG_XFER_GE_CNTL', - 'WD_IA_DRAW_REG_XFER_GE_USER_VGPR_EN', - 'WD_IA_DRAW_REG_XFER_IA_MULTI_VGT_PARAM', - 'WD_IA_DRAW_REG_XFER_VGT_INSTANCE_BASE_ID', - 'WD_IA_DRAW_REG_XFER_VGT_MULTI_PRIM_IB_RESET_EN', - 'WD_IA_DRAW_SOURCE', 'WD_IA_DRAW_SOURCE_AUTO', - 'WD_IA_DRAW_SOURCE_DMA', 'WD_IA_DRAW_SOURCE_IMMD', - 'WD_IA_DRAW_SOURCE_OPAQ', 'WD_IA_DRAW_TYPE', - 'WD_IA_DRAW_TYPE_DI_MM0', 'WD_IA_DRAW_TYPE_EVENT_ADDR', - 'WD_IA_DRAW_TYPE_EVENT_INIT', 'WD_IA_DRAW_TYPE_IMM_DATA', - 'WD_IA_DRAW_TYPE_INDX_OFF', 'WD_IA_DRAW_TYPE_MAX_INDX', - 'WD_IA_DRAW_TYPE_MIN_INDX', 'WD_IA_DRAW_TYPE_REG_XFER', - 'WRITE_BASE_ONLY', 'WRITE_BOTH', 'WritePolicy', 'XNORM', - 'XNORM_A', 'XNORM_B', 'XTAL_REF_CLOCK_SOURCE_SEL', - 'XTAL_REF_CLOCK_SOURCE_SEL_DCCGREFCLK', - 'XTAL_REF_CLOCK_SOURCE_SEL_XTALIN', 'XTAL_REF_SEL', - 'XTAL_REF_SEL_1X', 'XTAL_REF_SEL_2X', 'Y10_CbCr1010_420_PLANAR', - 'Y10_CrCb1010_420_PLANAR', 'Y12_CbCr1212_420_PLANAR', - 'Y12_CrCb1212_420_PLANAR', 'Y8_CbCr88_420_PLANAR', - 'Y8_CrCb88_420_PLANAR', 'YCbYCr10101010_422_PACKED', - 'YCbYCr12121212_422_PACKED', 'YCbYCr8888_422_PACKED', - 'YCrCbA16161616_10LSB', 'YCrCbA16161616_10MSB', - 'YCrCbA16161616_12LSB', 'YCrCbA16161616_12MSB', 'YCrCbA8888', - 'YCrYCb10101010_422_PACKED', 'YCrYCb12121212_422_PACKED', - 'YCrYCb8888_422_PACKED', 'Y_G_DATA_ONTO_ALPHA_PORT', - 'Y_G_DATA_ONTO_CB_B_PORT', 'Y_G_DATA_ONTO_CR_R_PORT', - 'Y_G_DATA_ONTO_Y_G_PORT', 'ZLimitSumm', 'ZModeForce', 'ZOrder', - 'ZPASS_DISABLE', 'ZPASS_PIXELS', 'ZPASS_SAMPLES', - 'ZSamplePosition', 'Z_SAMPLE_CENTER', 'Z_SAMPLE_CENTROID', - 'ZpassControl', '_soc21_ENUM_HEADER', 'ge1_assembler_busy', - 'ge1_assembler_dma_starved', 'ge1_assembler_stalled', - 'ge1_dma_busy', 'ge1_dma_lat_bin_0', 'ge1_dma_lat_bin_1', - 'ge1_dma_lat_bin_2', 'ge1_dma_lat_bin_3', 'ge1_dma_lat_bin_4', - 'ge1_dma_lat_bin_5', 'ge1_dma_lat_bin_6', 'ge1_dma_lat_bin_7', - 'ge1_dma_return_cl0', 'ge1_dma_return_cl1', - 'ge1_dma_return_size_cl0', 'ge1_dma_return_size_cl1', - 'ge1_dma_utcl1_consecutive_retry_event', - 'ge1_dma_utcl1_request_event', 'ge1_dma_utcl1_retry_event', - 'ge1_dma_utcl1_stall_event', 'ge1_dma_utcl1_stall_utcl2_event', - 'ge1_dma_utcl1_translation_hit_event', - 'ge1_dma_utcl1_translation_miss_event', 'ge1_pipe0_to_pipe1', - 'ge1_pipe1_to_pipe0', 'ge1_prim_group_limit_hit', - 'ge1_rbiu_di_fifo_stalled_p0', 'ge1_rbiu_di_fifo_stalled_p1', - 'ge1_rbiu_di_fifo_starved_p0', 'ge1_rbiu_di_fifo_starved_p1', - 'ge1_rbiu_dr_fifo_stalled_p0', 'ge1_rbiu_dr_fifo_stalled_p1', - 'ge1_rbiu_dr_fifo_starved_p0', 'ge1_rbiu_dr_fifo_starved_p1', - 'ge1_sclk_input_vld', 'ge1_sclk_reg_vld', - 'ge1_small_draws_one_instance', 'ge1_stat_busy', - 'ge1_stat_no_dma_busy', 'ge1_unopt_multi_instance_draws', - 'ge_agm_gcr_crd_stall', 'ge_agm_gcr_latency', 'ge_agm_gcr_req', - 'ge_agm_gcr_stall', 'ge_agm_gcr_tag_stall', 'ge_all_tf2', - 'ge_all_tf3', 'ge_all_tf4', 'ge_all_tf5', 'ge_all_tf6', - 'ge_all_tf_eq', 'ge_csb_spi_bp', 'ge_dist_distributer_busy', - 'ge_dist_hs_done', 'ge_dist_hs_done_latency', - 'ge_dist_hs_done_latency_se0', 'ge_dist_hs_done_latency_se1', - 'ge_dist_hs_done_latency_se2', 'ge_dist_hs_done_latency_se3', - 'ge_dist_hs_done_latency_se4', 'ge_dist_hs_done_latency_se5', - 'ge_dist_hs_done_latency_se6', 'ge_dist_hs_done_latency_se7', - 'ge_dist_hs_done_se0', 'ge_dist_hs_done_se1', - 'ge_dist_hs_done_se2', 'ge_dist_hs_done_se3', - 'ge_dist_hs_done_se4', 'ge_dist_hs_done_se5', - 'ge_dist_hs_done_se6', 'ge_dist_hs_done_se7', - 'ge_dist_inside_tf_bin_0', 'ge_dist_inside_tf_bin_1', - 'ge_dist_inside_tf_bin_2', 'ge_dist_inside_tf_bin_3', - 'ge_dist_inside_tf_bin_4', 'ge_dist_inside_tf_bin_5', - 'ge_dist_inside_tf_bin_6', 'ge_dist_inside_tf_bin_7', - 'ge_dist_inside_tf_bin_8', 'ge_dist_null_patch', - 'ge_dist_op_fifo_full_starve', 'ge_dist_pc_feorder_fifo_full', - 'ge_dist_pc_ge_manager_busy', 'ge_dist_pc_req_stall_se0', - 'ge_dist_pc_req_stall_se1', 'ge_dist_pc_req_stall_se2', - 'ge_dist_pc_req_stall_se3', 'ge_dist_pc_req_stall_se4', - 'ge_dist_pc_req_stall_se5', 'ge_dist_pc_req_stall_se6', - 'ge_dist_pc_req_stall_se7', 'ge_dist_pc_space_zero', - 'ge_dist_reserved', 'ge_dist_sclk_core_vld', - 'ge_dist_sclk_input_vld', 'ge_dist_sclk_wd_te11_vld', - 'ge_dist_switch_mode_stall', 'ge_dist_te11_starved', - 'ge_dist_tfreq_lat_bin_0', 'ge_dist_tfreq_lat_bin_1', - 'ge_dist_tfreq_lat_bin_2', 'ge_dist_tfreq_lat_bin_3', - 'ge_dist_tfreq_lat_bin_4', 'ge_dist_tfreq_lat_bin_5', - 'ge_dist_tfreq_lat_bin_6', 'ge_dist_tfreq_lat_bin_7', - 'ge_dist_tfreq_utcl1_consecutive_retry_event', - 'ge_dist_tfreq_utcl1_request_event', - 'ge_dist_tfreq_utcl1_retry_event', - 'ge_dist_tfreq_utcl1_stall_event', - 'ge_dist_tfreq_utcl1_stall_utcl2_event', - 'ge_dist_tfreq_utcl1_translation_hit_event', - 'ge_dist_tfreq_utcl1_translation_miss_event', - 'ge_dist_vs_pc_stall', 'ge_dist_wd_te11_busy', 'ge_distclk_vld', - 'ge_esvert_send', 'ge_gs_issue_rtr_stalled', 'ge_gsprim_send', - 'ge_gsprim_stalled_esvert', 'ge_gsthread_stalled', - 'ge_hs_stall_tfmm_fifo_full', 'ge_hs_tif_stall', - 'ge_ngg_agm_req_stall', 'ge_ngg_attr_discard_alloc', - 'ge_ngg_attr_grp_alloc', 'ge_ngg_attr_grp_latency', - 'ge_ngg_indx_bus_stall', 'ge_ngg_ord_id_req_stall', - 'ge_ngg_pc_space_not_avail', 'ge_ngg_reuse_prim_limit_hit', - 'ge_ngg_reuse_vert_limit_hit', 'ge_ngg_spi_esvert_partial_eov', - 'ge_ngg_spi_gsprim_partial_eov', 'ge_ngg_stall_tess_off_tess_on', - 'ge_ngg_stall_tess_on_tess_off', 'ge_ngg_starved_after_work', - 'ge_ngg_starved_idle', 'ge_ngg_starving_for_pc_grant', - 'ge_ngg_subgrp_fifo_stall', 'ge_num_of_donut_dist_patches', - 'ge_num_of_hs_alloc_events', 'ge_num_of_no_dist_patches', - 'ge_num_of_patch_dist_patches', - 'ge_num_of_se_switches_due_to_donut', - 'ge_num_of_se_switches_due_to_patch_accum', - 'ge_num_of_se_switches_due_to_trap', 'ge_pa0_csb_eop', - 'ge_pa1_csb_eop', 'ge_se0_te11_starved_on_hs_done', - 'ge_se1_te11_starved_on_hs_done', - 'ge_se2_te11_starved_on_hs_done', - 'ge_se3_te11_starved_on_hs_done', - 'ge_se4_te11_starved_on_hs_done', - 'ge_se5_te11_starved_on_hs_done', - 'ge_se6_te11_starved_on_hs_done', - 'ge_se7_te11_starved_on_hs_done', 'ge_se_ds_prims', - 'ge_se_es_thread_groups', 'ge_se_esvert_stalled_gsprim', - 'ge_se_hs_input_stall', 'ge_se_hs_tfm_stall', - 'ge_se_hs_tgs_active_high_water_mark', 'ge_se_hs_thread_groups', - 'ge_se_reused_es_indices', 'ge_se_sclk_input_vld', - 'ge_se_sclk_ngg_vld', 'ge_se_sclk_te11_vld', - 'ge_se_sending_vert_or_prim', 'ge_se_spi_esvert_eov', - 'ge_se_spi_esvert_stalled', 'ge_se_spi_esvert_starved_busy', - 'ge_se_spi_esvert_valid', 'ge_se_spi_gsprim_cont', - 'ge_se_spi_gsprim_eov', 'ge_se_spi_gsprim_stalled', - 'ge_se_spi_gsprim_starved_busy', 'ge_se_spi_gsprim_valid', - 'ge_se_spi_gssubgrp_event_window_active', - 'ge_se_spi_gssubgrp_is_event', 'ge_se_spi_gssubgrp_send', - 'ge_se_spi_hsvert_eov', 'ge_se_spi_hsvert_fifo_full_stall', - 'ge_se_spi_hsvert_stalled', 'ge_se_spi_hsvert_starved_busy', - 'ge_se_spi_hsvert_valid', 'ge_se_spi_hswave_is_event', - 'ge_se_spi_hswave_send', 'ge_se_spi_lsvert_eov', - 'ge_se_spi_lsvert_stalled', 'ge_se_spi_lsvert_starved_busy', - 'ge_se_spi_lsvert_valid', 'ge_se_spi_tgrp_fifo_stall', - 'ge_spi_gsgrp_valid', 'ge_spi_hsgrp_spi_stall', - 'ge_spi_hswave_fifo_full_stall', 'ge_spi_lswave_fifo_full_stall', - 'ge_te11_compactor_starved', 'ge_te11_con_stall', - 'ge_te11_stall_prim_funnel', 'ge_te11_stall_vert_funnel', - 'ge_tf_ret_data_stalling_hs_done'] diff --git a/tinygrad_repo/tinygrad/runtime/autogen/am/soc24.py b/tinygrad_repo/tinygrad/runtime/autogen/am/soc24.py deleted file mode 100644 index 42e5a6036..000000000 --- a/tinygrad_repo/tinygrad/runtime/autogen/am/soc24.py +++ /dev/null @@ -1,37140 +0,0 @@ -# mypy: ignore-errors -# -*- coding: utf-8 -*- -# -# TARGET arch is: [] -# WORD_SIZE is: 8 -# POINTER_SIZE is: 8 -# LONGDOUBLE_SIZE is: 16 -# -import ctypes - - - - -_soc24_ENUM_HEADER = True # macro -CSDATA_TYPE_WIDTH = 0x00000002 # macro -CSDATA_ADDR_WIDTH = 0x00000007 # macro -CSDATA_DATA_WIDTH = 0x00000020 # macro -CSCNTL_TYPE_WIDTH = 0x00000002 # macro -CSCNTL_ADDR_WIDTH = 0x00000007 # macro -CSCNTL_DATA_WIDTH = 0x00000020 # macro -GSTHREADID_SIZE = 0x00000002 # macro -IQ_QUEUE_SLEEP = 0x00000000 # macro -IQ_OFFLOAD_RETRY = 0x00000001 # macro -IQ_SCH_WAVE_MSG = 0x00000002 # macro -IQ_DEQUEUE_RETRY = 0x00000004 # macro -IQ_INTR_TYPE_PQ = 0x00000000 # macro -IQ_INTR_TYPE_IB = 0x00000001 # macro -IQ_INTR_TYPE_MQD = 0x00000002 # macro -VMID_SZ = 0x00000004 # macro -CONFIG_SPACE_START = 0x00002000 # macro -CONFIG_SPACE_END = 0x00009fff # macro -CONFIG_SPACE1_START = 0x00002000 # macro -CONFIG_SPACE1_END = 0x00002bff # macro -CONFIG_SPACE2_START = 0x00003000 # macro -CONFIG_SPACE2_END = 0x00009fff # macro -UCONFIG_SPACE_START = 0x0000c000 # macro -UCONFIG_SPACE_END = 0x0000ffff # macro -PERSISTENT_SPACE_START = 0x00002c00 # macro -PERSISTENT_SPACE_END = 0x00002fff # macro -CONTEXT_SPACE_START = 0x0000a000 # macro -CONTEXT_SPACE_END = 0x0000a3ff # macro -SQ_WAVE_TYPE_PS0 = 0x00000000 # macro -SQ_FLAT = 0x00000000 # macro -SQ_SCRATCH = 0x00000001 # macro -SQ_GLOBAL = 0x00000002 # macro -SQIND_GLOBAL_REGS_OFFSET = 0x00000000 # macro -SQIND_GLOBAL_REGS_SIZE = 0x00000008 # macro -SQIND_LOCAL_REGS_OFFSET = 0x00000008 # macro -SQIND_LOCAL_REGS_SIZE = 0x00000008 # macro -SQIND_WAVE_HW_REGS_OFFSET = 0x00000100 # macro -SQIND_WAVE_HW_REGS_SIZE = 0x00000040 # macro -SQIND_WAVE_HOST_REGS_OFFSET = 0x00000140 # macro -SQIND_WAVE_HOST_REGS_SIZE = 0x000000c0 # macro -SQIND_WAVE_SGPRS_OFFSET = 0x00000200 # macro -SQIND_WAVE_SGPRS_SIZE = 0x00000200 # macro -SQIND_WAVE_VGPRS_OFFSET = 0x00000400 # macro -SQIND_WAVE_VGPRS_SIZE = 0x00000400 # macro -SQ_GFXDEC_BEGIN = 0x0000a000 # macro -SQ_GFXDEC_END = 0x0000c000 # macro -SQ_GFXDEC_STATE_ID_SHIFT = 0x0000000a # macro -SQDEC_BEGIN = 0x00002300 # macro -SQDEC_END = 0x000023ff # macro -PFVF_SQDEC_BEGIN = 0x0000a9e0 # macro -PFVF_SQDEC_END = 0x0000a9ff # macro -SQPERFSDEC_BEGIN = 0x0000d9c0 # macro -SQPERFSDEC_END = 0x0000da40 # macro -SQPERFDDEC_BEGIN = 0x0000d1c0 # macro -SQPERFDDEC_END = 0x0000d240 # macro -SQGFXUDEC_BEGIN = 0x0000c330 # macro -SQGFXUDEC_END = 0x0000c380 # macro -SQPWRDEC_BEGIN = 0x0000f08c # macro -SQPWRDEC_END = 0x0000f094 # macro -SQ_DISPATCHER_GFX_MIN = 0x00000010 # macro -SQ_DISPATCHER_GFX_CNT_PER_RING = 0x00000008 # macro -SQ_MAX_PGM_SGPRS = 0x00000068 # macro -SQ_MAX_PGM_VGPRS = 0x00000100 # macro -SQ_EX_EXCP_VALU_BASE = 0x00000000 # macro -SQ_EX_EXCP_VALU_SIZE = 0x00000007 # macro -SQ_EX_EXCP_ALU_INVALID = 0x00000000 # macro -SQ_EX_EXCP_ALU_INPUT_DENORM = 0x00000001 # macro -SQ_EX_EXCP_ALU_FLOAT_DIV0 = 0x00000002 # macro -SQ_EX_EXCP_ALU_OVERFLOW = 0x00000003 # macro -SQ_EX_EXCP_ALU_UNDERFLOW = 0x00000004 # macro -SQ_EX_EXCP_ALU_INEXACT = 0x00000005 # macro -SQ_EX_EXCP_ALU_INT_DIV0 = 0x00000006 # macro -SQ_EX_EXCP_ADDR_WATCH = 0x00000007 # macro -INST_ID_PRIV_START = 0x80000000 # macro -INST_ID_ECC_INTERRUPT_MSG = 0xfffffff0 # macro -INST_ID_TTRACE_NEW_PC_MSG = 0xfffffff1 # macro -INST_ID_HW_TRAP = 0xfffffff2 # macro -INST_ID_KILL_SEQ = 0xfffffff3 # macro -INST_ID_SPI_WREXEC = 0xfffffff4 # macro -INST_ID_HW_TRAP_GET_TBA = 0xfffffff5 # macro -INST_ID_HOST_REG_TRAP_MSG = 0xfffffffe # macro -SIMM16_WAITCNT_EXP_CNT_START = 0x00000000 # macro -SIMM16_WAITCNT_EXP_CNT_SIZE = 0x00000003 # macro -SIMM16_WAITCNT_LGKM_CNT_START = 0x00000004 # macro -SIMM16_WAITCNT_LGKM_CNT_SIZE = 0x00000006 # macro -SIMM16_WAITCNT_VM_CNT_START = 0x0000000a # macro -SIMM16_WAITCNT_VM_CNT_SIZE = 0x00000006 # macro -SIMM16_WAITCNT_DEPCTR_SA_SDST_START = 0x00000000 # macro -SIMM16_WAITCNT_DEPCTR_SA_SDST_SIZE = 0x00000001 # macro -SIMM16_WAITCNT_DEPCTR_VA_VCC_START = 0x00000001 # macro -SIMM16_WAITCNT_DEPCTR_VA_VCC_SIZE = 0x00000001 # macro -SIMM16_WAITCNT_DEPCTR_VM_VSRC_START = 0x00000002 # macro -SIMM16_WAITCNT_DEPCTR_VM_VSRC_SIZE = 0x00000003 # macro -SIMM16_WAITCNT_DEPCTR_HOLD_CNT_START = 0x00000007 # macro -SIMM16_WAITCNT_DEPCTR_HOLD_CNT_SIZE = 0x00000001 # macro -SIMM16_WAITCNT_DEPCTR_VA_SSRC_START = 0x00000008 # macro -SIMM16_WAITCNT_DEPCTR_VA_SSRC_SIZE = 0x00000001 # macro -SIMM16_WAITCNT_DEPCTR_VA_SDST_START = 0x00000009 # macro -SIMM16_WAITCNT_DEPCTR_VA_SDST_SIZE = 0x00000003 # macro -SIMM16_WAITCNT_DEPCTR_VA_VDST_START = 0x0000000c # macro -SIMM16_WAITCNT_DEPCTR_VA_VDST_SIZE = 0x00000004 # macro -SIMM16_WAIT_EVENT_EXP_RDY_START = 0x00000000 # macro -SIMM16_WAIT_EVENT_EXP_RDY_SIZE = 0x00000001 # macro -SQ_WAVE_IB_DEP_SA_SDST_SIZE = 0x00000004 # macro -SQ_WAVE_IB_DEP_SA_EXEC_SIZE = 0x00000002 # macro -SQ_WAVE_IB_DEP_SA_M0_SIZE = 0x00000001 # macro -SQ_WAVE_IB_DEP_VM_VSRC_SIZE = 0x00000004 # macro -SQ_WAVE_IB_DEP_HOLD_CNT_SIZE = 0x00000001 # macro -SQ_WAVE_IB_DEP_VA_SSRC_SIZE = 0x00000003 # macro -SQ_WAVE_IB_DEP_VA_SDST_SIZE = 0x00000004 # macro -SQ_WAVE_IB_DEP_VA_VCC_SIZE = 0x00000003 # macro -SQ_WAVE_IB_DEP_VA_EXEC_SIZE = 0x00000002 # macro -SQ_WAVE_IB_DEP_VA_VDST_SIZE = 0x00000005 # macro -SQ_WAVE_IB_DEP_LDS_DIR_SIZE = 0x00000003 # macro -SQ_ARB_STATE_ISSUED_BRMSG = 0x00000000 # macro -SQ_ARB_STATE_ISSUED_EXPORT = 0x00000001 # macro -SQ_ARB_STATE_ISSUED_LDS_DIRECT = 0x00000002 # macro -SQ_ARB_STATE_ISSUED_LDS = 0x00000003 # macro -SQ_ARB_STATE_ISSUED_TEX = 0x00000004 # macro -SQ_ARB_STATE_ISSUED_SCALAR = 0x00000005 # macro -SQ_ARB_STATE_ISSUED_VALU = 0x00000006 # macro -SQ_ARB_STATE_STALLED_BRMSG = 0x00000008 # macro -SQ_ARB_STATE_STALLED_EXPORT = 0x00000009 # macro -SQ_ARB_STATE_STALLED_LDS_DIRECT = 0x0000000a # macro -SQ_ARB_STATE_STALLED_LDS = 0x0000000b # macro -SQ_ARB_STATE_STALLED_TEX = 0x0000000c # macro -SQ_ARB_STATE_STALLED_SCALAR = 0x0000000d # macro -SQ_ARB_STATE_STALLED_VALU = 0x0000000e # macro -ROM_SIGNATURE = 0x0000aa55 # macro - -# values for enumeration 'CP_PERFMON_ENABLE_MODE' -CP_PERFMON_ENABLE_MODE__enumvalues = { - 0: 'CP_PERFMON_ENABLE_MODE_ALWAYS_COUNT', - 1: 'CP_PERFMON_ENABLE_MODE_RESERVED_1', - 2: 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_TRUE', - 3: 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_FALSE', -} -CP_PERFMON_ENABLE_MODE_ALWAYS_COUNT = 0 -CP_PERFMON_ENABLE_MODE_RESERVED_1 = 1 -CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_TRUE = 2 -CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_FALSE = 3 -CP_PERFMON_ENABLE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CP_PERFMON_STATE' -CP_PERFMON_STATE__enumvalues = { - 0: 'CP_PERFMON_STATE_DISABLE_AND_RESET', - 1: 'CP_PERFMON_STATE_START_COUNTING', - 2: 'CP_PERFMON_STATE_STOP_COUNTING', - 3: 'CP_PERFMON_STATE_RESERVED_3', - 4: 'CP_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 5: 'CP_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', -} -CP_PERFMON_STATE_DISABLE_AND_RESET = 0 -CP_PERFMON_STATE_START_COUNTING = 1 -CP_PERFMON_STATE_STOP_COUNTING = 2 -CP_PERFMON_STATE_RESERVED_3 = 3 -CP_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM = 4 -CP_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM = 5 -CP_PERFMON_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_NUM_SIMD_PER_CU' -ENUM_NUM_SIMD_PER_CU__enumvalues = { - 2: 'NUM_SIMD_PER_CU', -} -NUM_SIMD_PER_CU = 2 -ENUM_NUM_SIMD_PER_CU = ctypes.c_uint32 # enum - -# values for enumeration 'GATCL1RequestType' -GATCL1RequestType__enumvalues = { - 0: 'GATCL1_TYPE_NORMAL', - 1: 'GATCL1_TYPE_SHOOTDOWN', - 2: 'GATCL1_TYPE_BYPASS', -} -GATCL1_TYPE_NORMAL = 0 -GATCL1_TYPE_SHOOTDOWN = 1 -GATCL1_TYPE_BYPASS = 2 -GATCL1RequestType = ctypes.c_uint32 # enum - -# values for enumeration 'GL0V_CACHE_POLICIES' -GL0V_CACHE_POLICIES__enumvalues = { - 0: 'GL0V_CACHE_POLICY_MISS_LRU', - 1: 'GL0V_CACHE_POLICY_MISS_EVICT', - 2: 'GL0V_CACHE_POLICY_HIT_LRU', - 3: 'GL0V_CACHE_POLICY_HIT_EVICT', - 4: 'GL0V_CACHE_POLICY_MISS_INVAL', -} -GL0V_CACHE_POLICY_MISS_LRU = 0 -GL0V_CACHE_POLICY_MISS_EVICT = 1 -GL0V_CACHE_POLICY_HIT_LRU = 2 -GL0V_CACHE_POLICY_HIT_EVICT = 3 -GL0V_CACHE_POLICY_MISS_INVAL = 4 -GL0V_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'GL1_CACHE_POLICIES' -GL1_CACHE_POLICIES__enumvalues = { - 0: 'GL1_CACHE_POLICY_MISS_LRU', - 1: 'GL1_CACHE_POLICY_MISS_EVICT', - 2: 'GL1_CACHE_POLICY_HIT_LRU', - 3: 'GL1_CACHE_POLICY_HIT_EVICT', -} -GL1_CACHE_POLICY_MISS_LRU = 0 -GL1_CACHE_POLICY_MISS_EVICT = 1 -GL1_CACHE_POLICY_HIT_LRU = 2 -GL1_CACHE_POLICY_HIT_EVICT = 3 -GL1_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'GL1_CACHE_STORE_POLICIES' -GL1_CACHE_STORE_POLICIES__enumvalues = { - 0: 'GL1_CACHE_STORE_POLICY_BYPASS', -} -GL1_CACHE_STORE_POLICY_BYPASS = 0 -GL1_CACHE_STORE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'GL2_CACHE_POLICIES' -GL2_CACHE_POLICIES__enumvalues = { - 0: 'GL2_CACHE_POLICY_LRU', - 1: 'GL2_CACHE_POLICY_STREAM', - 2: 'GL2_CACHE_POLICY_NOA', - 3: 'GL2_CACHE_POLICY_BYPASS', -} -GL2_CACHE_POLICY_LRU = 0 -GL2_CACHE_POLICY_STREAM = 1 -GL2_CACHE_POLICY_NOA = 2 -GL2_CACHE_POLICY_BYPASS = 3 -GL2_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'GL2_NACKS' -GL2_NACKS__enumvalues = { - 0: 'GL2_NACK_NO_FAULT', - 1: 'GL2_NACK_PAGE_FAULT', - 2: 'GL2_NACK_PROTECTION_FAULT', - 3: 'GL2_NACK_DATA_ERROR', -} -GL2_NACK_NO_FAULT = 0 -GL2_NACK_PAGE_FAULT = 1 -GL2_NACK_PROTECTION_FAULT = 2 -GL2_NACK_DATA_ERROR = 3 -GL2_NACKS = ctypes.c_uint32 # enum - -# values for enumeration 'GL2_OP' -GL2_OP__enumvalues = { - 0: 'GL2_OP_READ', - 1: 'GL2_OP_ATOMIC_FCMPSWAP_RTN_32', - 2: 'GL2_OP_ATOMIC_FMIN_RTN_32', - 3: 'GL2_OP_ATOMIC_FMAX_RTN_32', - 4: 'GL2_OP_ATOMIC_PK_ADD_FP16_RTN', - 5: 'GL2_OP_ATOMIC_FADD_RTN_32', - 6: 'GL2_OP_ATOMIC_PK_ADD_BF16_RTN', - 7: 'GL2_OP_ATOMIC_SWAP_RTN_32', - 8: 'GL2_OP_ATOMIC_CMPSWAP_RTN_32', - 9: 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32', - 10: 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32', - 11: 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32', - 12: 'GL2_OP_PROBE_FILTER', - 13: 'GL2_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32', - 14: 'GL2_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2', - 15: 'GL2_OP_ATOMIC_ADD_RTN_32', - 16: 'GL2_OP_ATOMIC_SUB_RTN_32', - 17: 'GL2_OP_ATOMIC_SMIN_RTN_32', - 18: 'GL2_OP_ATOMIC_UMIN_RTN_32', - 19: 'GL2_OP_ATOMIC_SMAX_RTN_32', - 20: 'GL2_OP_ATOMIC_UMAX_RTN_32', - 21: 'GL2_OP_ATOMIC_AND_RTN_32', - 22: 'GL2_OP_ATOMIC_OR_RTN_32', - 23: 'GL2_OP_ATOMIC_XOR_RTN_32', - 24: 'GL2_OP_ATOMIC_INC_RTN_32', - 25: 'GL2_OP_ATOMIC_DEC_RTN_32', - 26: 'GL2_OP_ATOMIC_CLAMP_SUB_RTN_32', - 27: 'GL2_OP_ATOMIC_COND_SUB_RTN_32', - 29: 'GL2_OP_UTC_PROBE', - 30: 'GL2_OP_LOAD_RESERVE', - 32: 'GL2_OP_WRITE', - 33: 'GL2_OP_ATOMIC_FCMPSWAP_RTN_64', - 34: 'GL2_OP_ATOMIC_FMIN_RTN_64', - 35: 'GL2_OP_ATOMIC_FMAX_RTN_64', - 39: 'GL2_OP_ATOMIC_SWAP_RTN_64', - 40: 'GL2_OP_ATOMIC_CMPSWAP_RTN_64', - 41: 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64', - 42: 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64', - 43: 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64', - 47: 'GL2_OP_ATOMIC_ADD_RTN_64', - 48: 'GL2_OP_ATOMIC_SUB_RTN_64', - 49: 'GL2_OP_ATOMIC_SMIN_RTN_64', - 50: 'GL2_OP_ATOMIC_UMIN_RTN_64', - 51: 'GL2_OP_ATOMIC_SMAX_RTN_64', - 52: 'GL2_OP_ATOMIC_UMAX_RTN_64', - 53: 'GL2_OP_ATOMIC_AND_RTN_64', - 54: 'GL2_OP_ATOMIC_OR_RTN_64', - 55: 'GL2_OP_ATOMIC_XOR_RTN_64', - 56: 'GL2_OP_ATOMIC_INC_RTN_64', - 57: 'GL2_OP_ATOMIC_DEC_RTN_64', - 59: 'GL2_OP_WRITE_ZERO_SIZE', - 61: 'GL2_OP_GL2_INV', - 62: 'GL2_OP_ATOMIC_STORE_COND_RTN', - 64: 'GL2_OP_GL1_INV', - 65: 'GL2_OP_ATOMIC_FCMPSWAP_32', - 66: 'GL2_OP_ATOMIC_FMIN_32', - 67: 'GL2_OP_ATOMIC_FMAX_32', - 68: 'GL2_OP_ATOMIC_PK_ADD_FP16', - 69: 'GL2_OP_ATOMIC_FADD_32', - 70: 'GL2_OP_ATOMIC_PK_ADD_BF16', - 71: 'GL2_OP_ATOMIC_SWAP_32', - 72: 'GL2_OP_ATOMIC_CMPSWAP_32', - 73: 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32', - 74: 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_32', - 75: 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_32', - 76: 'GL2_OP_ATOMIC_UMIN_8', - 77: 'GL2_OP_ATOMIC_FADD_FLUSH_DENORM_32', - 79: 'GL2_OP_ATOMIC_ADD_32', - 80: 'GL2_OP_ATOMIC_SUB_32', - 81: 'GL2_OP_ATOMIC_SMIN_32', - 82: 'GL2_OP_ATOMIC_UMIN_32', - 83: 'GL2_OP_ATOMIC_SMAX_32', - 84: 'GL2_OP_ATOMIC_UMAX_32', - 85: 'GL2_OP_ATOMIC_AND_32', - 86: 'GL2_OP_ATOMIC_OR_32', - 87: 'GL2_OP_ATOMIC_XOR_32', - 88: 'GL2_OP_ATOMIC_INC_32', - 89: 'GL2_OP_ATOMIC_DEC_32', - 91: 'GL2_OP_NOP_RTN0', - 93: 'GL2_OP_GL2_WB', - 94: 'GL2_OP_FORCE_EXISTING_DATA_TO_DECOMPRESS', - 97: 'GL2_OP_ATOMIC_FCMPSWAP_64', - 98: 'GL2_OP_ATOMIC_FMIN_64', - 99: 'GL2_OP_ATOMIC_FMAX_64', - 103: 'GL2_OP_ATOMIC_SWAP_64', - 104: 'GL2_OP_ATOMIC_CMPSWAP_64', - 105: 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64', - 106: 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_64', - 107: 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_64', - 111: 'GL2_OP_ATOMIC_ADD_64', - 112: 'GL2_OP_ATOMIC_SUB_64', - 113: 'GL2_OP_ATOMIC_SMIN_64', - 114: 'GL2_OP_ATOMIC_UMIN_64', - 115: 'GL2_OP_ATOMIC_SMAX_64', - 116: 'GL2_OP_ATOMIC_UMAX_64', - 117: 'GL2_OP_ATOMIC_AND_64', - 118: 'GL2_OP_ATOMIC_OR_64', - 119: 'GL2_OP_ATOMIC_XOR_64', - 120: 'GL2_OP_ATOMIC_INC_64', - 121: 'GL2_OP_ATOMIC_DEC_64', - 122: 'GL2_OP_ATOMIC_UMAX_8', - 123: 'GL2_OP_NOP_ACK', - 125: 'GL2_OP_GL2_WBINV', - 126: 'GL2_OP_READ_COMPRESSION_KEY', -} -GL2_OP_READ = 0 -GL2_OP_ATOMIC_FCMPSWAP_RTN_32 = 1 -GL2_OP_ATOMIC_FMIN_RTN_32 = 2 -GL2_OP_ATOMIC_FMAX_RTN_32 = 3 -GL2_OP_ATOMIC_PK_ADD_FP16_RTN = 4 -GL2_OP_ATOMIC_FADD_RTN_32 = 5 -GL2_OP_ATOMIC_PK_ADD_BF16_RTN = 6 -GL2_OP_ATOMIC_SWAP_RTN_32 = 7 -GL2_OP_ATOMIC_CMPSWAP_RTN_32 = 8 -GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32 = 9 -GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32 = 10 -GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32 = 11 -GL2_OP_PROBE_FILTER = 12 -GL2_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32 = 13 -GL2_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2 = 14 -GL2_OP_ATOMIC_ADD_RTN_32 = 15 -GL2_OP_ATOMIC_SUB_RTN_32 = 16 -GL2_OP_ATOMIC_SMIN_RTN_32 = 17 -GL2_OP_ATOMIC_UMIN_RTN_32 = 18 -GL2_OP_ATOMIC_SMAX_RTN_32 = 19 -GL2_OP_ATOMIC_UMAX_RTN_32 = 20 -GL2_OP_ATOMIC_AND_RTN_32 = 21 -GL2_OP_ATOMIC_OR_RTN_32 = 22 -GL2_OP_ATOMIC_XOR_RTN_32 = 23 -GL2_OP_ATOMIC_INC_RTN_32 = 24 -GL2_OP_ATOMIC_DEC_RTN_32 = 25 -GL2_OP_ATOMIC_CLAMP_SUB_RTN_32 = 26 -GL2_OP_ATOMIC_COND_SUB_RTN_32 = 27 -GL2_OP_UTC_PROBE = 29 -GL2_OP_LOAD_RESERVE = 30 -GL2_OP_WRITE = 32 -GL2_OP_ATOMIC_FCMPSWAP_RTN_64 = 33 -GL2_OP_ATOMIC_FMIN_RTN_64 = 34 -GL2_OP_ATOMIC_FMAX_RTN_64 = 35 -GL2_OP_ATOMIC_SWAP_RTN_64 = 39 -GL2_OP_ATOMIC_CMPSWAP_RTN_64 = 40 -GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64 = 41 -GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64 = 42 -GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64 = 43 -GL2_OP_ATOMIC_ADD_RTN_64 = 47 -GL2_OP_ATOMIC_SUB_RTN_64 = 48 -GL2_OP_ATOMIC_SMIN_RTN_64 = 49 -GL2_OP_ATOMIC_UMIN_RTN_64 = 50 -GL2_OP_ATOMIC_SMAX_RTN_64 = 51 -GL2_OP_ATOMIC_UMAX_RTN_64 = 52 -GL2_OP_ATOMIC_AND_RTN_64 = 53 -GL2_OP_ATOMIC_OR_RTN_64 = 54 -GL2_OP_ATOMIC_XOR_RTN_64 = 55 -GL2_OP_ATOMIC_INC_RTN_64 = 56 -GL2_OP_ATOMIC_DEC_RTN_64 = 57 -GL2_OP_WRITE_ZERO_SIZE = 59 -GL2_OP_GL2_INV = 61 -GL2_OP_ATOMIC_STORE_COND_RTN = 62 -GL2_OP_GL1_INV = 64 -GL2_OP_ATOMIC_FCMPSWAP_32 = 65 -GL2_OP_ATOMIC_FMIN_32 = 66 -GL2_OP_ATOMIC_FMAX_32 = 67 -GL2_OP_ATOMIC_PK_ADD_FP16 = 68 -GL2_OP_ATOMIC_FADD_32 = 69 -GL2_OP_ATOMIC_PK_ADD_BF16 = 70 -GL2_OP_ATOMIC_SWAP_32 = 71 -GL2_OP_ATOMIC_CMPSWAP_32 = 72 -GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32 = 73 -GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_32 = 74 -GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_32 = 75 -GL2_OP_ATOMIC_UMIN_8 = 76 -GL2_OP_ATOMIC_FADD_FLUSH_DENORM_32 = 77 -GL2_OP_ATOMIC_ADD_32 = 79 -GL2_OP_ATOMIC_SUB_32 = 80 -GL2_OP_ATOMIC_SMIN_32 = 81 -GL2_OP_ATOMIC_UMIN_32 = 82 -GL2_OP_ATOMIC_SMAX_32 = 83 -GL2_OP_ATOMIC_UMAX_32 = 84 -GL2_OP_ATOMIC_AND_32 = 85 -GL2_OP_ATOMIC_OR_32 = 86 -GL2_OP_ATOMIC_XOR_32 = 87 -GL2_OP_ATOMIC_INC_32 = 88 -GL2_OP_ATOMIC_DEC_32 = 89 -GL2_OP_NOP_RTN0 = 91 -GL2_OP_GL2_WB = 93 -GL2_OP_FORCE_EXISTING_DATA_TO_DECOMPRESS = 94 -GL2_OP_ATOMIC_FCMPSWAP_64 = 97 -GL2_OP_ATOMIC_FMIN_64 = 98 -GL2_OP_ATOMIC_FMAX_64 = 99 -GL2_OP_ATOMIC_SWAP_64 = 103 -GL2_OP_ATOMIC_CMPSWAP_64 = 104 -GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64 = 105 -GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_64 = 106 -GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_64 = 107 -GL2_OP_ATOMIC_ADD_64 = 111 -GL2_OP_ATOMIC_SUB_64 = 112 -GL2_OP_ATOMIC_SMIN_64 = 113 -GL2_OP_ATOMIC_UMIN_64 = 114 -GL2_OP_ATOMIC_SMAX_64 = 115 -GL2_OP_ATOMIC_UMAX_64 = 116 -GL2_OP_ATOMIC_AND_64 = 117 -GL2_OP_ATOMIC_OR_64 = 118 -GL2_OP_ATOMIC_XOR_64 = 119 -GL2_OP_ATOMIC_INC_64 = 120 -GL2_OP_ATOMIC_DEC_64 = 121 -GL2_OP_ATOMIC_UMAX_8 = 122 -GL2_OP_NOP_ACK = 123 -GL2_OP_GL2_WBINV = 125 -GL2_OP_READ_COMPRESSION_KEY = 126 -GL2_OP = ctypes.c_uint32 # enum - -# values for enumeration 'GL2_OP_MASKS' -GL2_OP_MASKS__enumvalues = { - 8: 'GL2_OP_MASK_FLUSH_DENROM', - 32: 'GL2_OP_MASK_64', - 64: 'GL2_OP_MASK_NO_RTN', -} -GL2_OP_MASK_FLUSH_DENROM = 8 -GL2_OP_MASK_64 = 32 -GL2_OP_MASK_NO_RTN = 64 -GL2_OP_MASKS = ctypes.c_uint32 # enum - -# values for enumeration 'Hdp_SurfaceEndian' -Hdp_SurfaceEndian__enumvalues = { - 0: 'HDP_ENDIAN_NONE', - 1: 'HDP_ENDIAN_8IN16', - 2: 'HDP_ENDIAN_8IN32', - 3: 'HDP_ENDIAN_8IN64', -} -HDP_ENDIAN_NONE = 0 -HDP_ENDIAN_8IN16 = 1 -HDP_ENDIAN_8IN32 = 2 -HDP_ENDIAN_8IN64 = 3 -Hdp_SurfaceEndian = ctypes.c_uint32 # enum - -# values for enumeration 'MTYPE' -MTYPE__enumvalues = { - 0: 'MTYPE_C_RW_US', - 1: 'MTYPE_RESERVED_1', - 2: 'MTYPE_C_RO_S', - 3: 'MTYPE_UC', - 4: 'MTYPE_C_RW_S', - 5: 'MTYPE_RESERVED_5', - 6: 'MTYPE_C_RO_US', - 7: 'MTYPE_RESERVED_7', -} -MTYPE_C_RW_US = 0 -MTYPE_RESERVED_1 = 1 -MTYPE_C_RO_S = 2 -MTYPE_UC = 3 -MTYPE_C_RW_S = 4 -MTYPE_RESERVED_5 = 5 -MTYPE_C_RO_US = 6 -MTYPE_RESERVED_7 = 7 -MTYPE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_COUNTER_MODE' -PERFMON_COUNTER_MODE__enumvalues = { - 0: 'PERFMON_COUNTER_MODE_ACCUM', - 1: 'PERFMON_COUNTER_MODE_ACTIVE_CYCLES', - 2: 'PERFMON_COUNTER_MODE_MAX', - 3: 'PERFMON_COUNTER_MODE_DIRTY', - 4: 'PERFMON_COUNTER_MODE_SAMPLE', - 5: 'PERFMON_COUNTER_MODE_CYCLES_SINCE_FIRST_EVENT', - 6: 'PERFMON_COUNTER_MODE_CYCLES_SINCE_LAST_EVENT', - 7: 'PERFMON_COUNTER_MODE_CYCLES_GE_HI', - 8: 'PERFMON_COUNTER_MODE_CYCLES_EQ_HI', - 9: 'PERFMON_COUNTER_MODE_INACTIVE_CYCLES', - 15: 'PERFMON_COUNTER_MODE_RESERVED', -} -PERFMON_COUNTER_MODE_ACCUM = 0 -PERFMON_COUNTER_MODE_ACTIVE_CYCLES = 1 -PERFMON_COUNTER_MODE_MAX = 2 -PERFMON_COUNTER_MODE_DIRTY = 3 -PERFMON_COUNTER_MODE_SAMPLE = 4 -PERFMON_COUNTER_MODE_CYCLES_SINCE_FIRST_EVENT = 5 -PERFMON_COUNTER_MODE_CYCLES_SINCE_LAST_EVENT = 6 -PERFMON_COUNTER_MODE_CYCLES_GE_HI = 7 -PERFMON_COUNTER_MODE_CYCLES_EQ_HI = 8 -PERFMON_COUNTER_MODE_INACTIVE_CYCLES = 9 -PERFMON_COUNTER_MODE_RESERVED = 15 -PERFMON_COUNTER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_SPM_MODE' -PERFMON_SPM_MODE__enumvalues = { - 0: 'PERFMON_SPM_MODE_OFF', - 1: 'PERFMON_SPM_MODE_16BIT_CLAMP', - 2: 'PERFMON_SPM_MODE_16BIT_NO_CLAMP', - 3: 'PERFMON_SPM_MODE_32BIT_CLAMP', - 4: 'PERFMON_SPM_MODE_32BIT_NO_CLAMP', - 5: 'PERFMON_SPM_MODE_RESERVED_5', - 6: 'PERFMON_SPM_MODE_RESERVED_6', - 7: 'PERFMON_SPM_MODE_RESERVED_7', - 8: 'PERFMON_SPM_MODE_TEST_MODE_0', - 9: 'PERFMON_SPM_MODE_TEST_MODE_1', - 10: 'PERFMON_SPM_MODE_TEST_MODE_2', -} -PERFMON_SPM_MODE_OFF = 0 -PERFMON_SPM_MODE_16BIT_CLAMP = 1 -PERFMON_SPM_MODE_16BIT_NO_CLAMP = 2 -PERFMON_SPM_MODE_32BIT_CLAMP = 3 -PERFMON_SPM_MODE_32BIT_NO_CLAMP = 4 -PERFMON_SPM_MODE_RESERVED_5 = 5 -PERFMON_SPM_MODE_RESERVED_6 = 6 -PERFMON_SPM_MODE_RESERVED_7 = 7 -PERFMON_SPM_MODE_TEST_MODE_0 = 8 -PERFMON_SPM_MODE_TEST_MODE_1 = 9 -PERFMON_SPM_MODE_TEST_MODE_2 = 10 -PERFMON_SPM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'READ_COMPRESSION_MODE' -READ_COMPRESSION_MODE__enumvalues = { - 0: 'COMPRESSION_MODE_BYPASS_COMPRESSION', - 1: 'COMPRESSION_MODE_READ_RAW_COMPRESSED_DATA', - 2: 'COMPRESSION_MODE_READ_DECOMPRESSED', -} -COMPRESSION_MODE_BYPASS_COMPRESSION = 0 -COMPRESSION_MODE_READ_RAW_COMPRESSED_DATA = 1 -COMPRESSION_MODE_READ_DECOMPRESSED = 2 -READ_COMPRESSION_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'ReadPolicy' -ReadPolicy__enumvalues = { - 0: 'CACHE_LRU_RD', - 1: 'CACHE_STREAM_RD', - 2: 'CACHE_NOA', - 3: 'RESERVED_RDPOLICY', -} -CACHE_LRU_RD = 0 -CACHE_STREAM_RD = 1 -CACHE_NOA = 2 -RESERVED_RDPOLICY = 3 -ReadPolicy = ctypes.c_uint32 # enum - -# values for enumeration 'SCOPE' -SCOPE__enumvalues = { - 0: 'SCOPE_CU', - 1: 'SCOPE_SE', - 2: 'SCOPE_DEV', - 3: 'SCOPE_SYS', -} -SCOPE_CU = 0 -SCOPE_SE = 1 -SCOPE_DEV = 2 -SCOPE_SYS = 3 -SCOPE = ctypes.c_uint32 # enum - -# values for enumeration 'SDMA_PERFMON_SEL' -SDMA_PERFMON_SEL__enumvalues = { - 0: 'SDMA_PERFMON_SEL_CYCLE', - 1: 'SDMA_PERFMON_SEL_IDLE', - 2: 'SDMA_PERFMON_SEL_REG_IDLE', - 3: 'SDMA_PERFMON_SEL_RB_EMPTY', - 4: 'SDMA_PERFMON_SEL_RB_FULL', - 5: 'SDMA_PERFMON_SEL_RB_WPTR_WRAP', - 6: 'SDMA_PERFMON_SEL_RB_RPTR_WRAP', - 7: 'SDMA_PERFMON_SEL_RB_WPTR_POLL_READ', - 8: 'SDMA_PERFMON_SEL_RB_RPTR_WB', - 9: 'SDMA_PERFMON_SEL_RB_CMD_IDLE', - 10: 'SDMA_PERFMON_SEL_RB_CMD_FULL', - 11: 'SDMA_PERFMON_SEL_IB_CMD_IDLE', - 12: 'SDMA_PERFMON_SEL_IB_CMD_FULL', - 13: 'SDMA_PERFMON_SEL_EX_IDLE', - 14: 'SDMA_PERFMON_SEL_SRBM_REG_SEND', - 15: 'SDMA_PERFMON_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 16: 'SDMA_PERFMON_SEL_WR_BA_RTR', - 17: 'SDMA_PERFMON_SEL_MC_WR_IDLE', - 18: 'SDMA_PERFMON_SEL_MC_WR_COUNT', - 19: 'SDMA_PERFMON_SEL_RD_BA_RTR', - 20: 'SDMA_PERFMON_SEL_MC_RD_IDLE', - 21: 'SDMA_PERFMON_SEL_MC_RD_COUNT', - 22: 'SDMA_PERFMON_SEL_MC_RD_RET_STALL', - 23: 'SDMA_PERFMON_SEL_MC_RD_NO_POLL_IDLE', - 26: 'SDMA_PERFMON_SEL_SEM_IDLE', - 27: 'SDMA_PERFMON_SEL_SEM_REQ_STALL', - 28: 'SDMA_PERFMON_SEL_SEM_REQ_COUNT', - 29: 'SDMA_PERFMON_SEL_SEM_RESP_INCOMPLETE', - 30: 'SDMA_PERFMON_SEL_SEM_RESP_FAIL', - 31: 'SDMA_PERFMON_SEL_SEM_RESP_PASS', - 32: 'SDMA_PERFMON_SEL_INT_IDLE', - 33: 'SDMA_PERFMON_SEL_INT_REQ_STALL', - 34: 'SDMA_PERFMON_SEL_INT_REQ_COUNT', - 35: 'SDMA_PERFMON_SEL_INT_RESP_ACCEPTED', - 36: 'SDMA_PERFMON_SEL_INT_RESP_RETRY', - 37: 'SDMA_PERFMON_SEL_NUM_PACKET', - 39: 'SDMA_PERFMON_SEL_CE_WREQ_IDLE', - 40: 'SDMA_PERFMON_SEL_CE_WR_IDLE', - 41: 'SDMA_PERFMON_SEL_CE_SPLIT_IDLE', - 42: 'SDMA_PERFMON_SEL_CE_RREQ_IDLE', - 43: 'SDMA_PERFMON_SEL_CE_OUT_IDLE', - 44: 'SDMA_PERFMON_SEL_CE_IN_IDLE', - 45: 'SDMA_PERFMON_SEL_CE_DST_IDLE', - 48: 'SDMA_PERFMON_SEL_CE_AFIFO_FULL', - 49: 'SDMA_PERFMON_SEL_DUMMY_0', - 50: 'SDMA_PERFMON_SEL_DUMMY_1', - 51: 'SDMA_PERFMON_SEL_CE_INFO_FULL', - 52: 'SDMA_PERFMON_SEL_CE_INFO1_FULL', - 53: 'SDMA_PERFMON_SEL_CE_RD_STALL', - 54: 'SDMA_PERFMON_SEL_CE_WR_STALL', - 55: 'SDMA_PERFMON_SEL_QUEUE0_SELECT', - 56: 'SDMA_PERFMON_SEL_QUEUE1_SELECT', - 57: 'SDMA_PERFMON_SEL_QUEUE2_SELECT', - 58: 'SDMA_PERFMON_SEL_QUEUE3_SELECT', - 59: 'SDMA_PERFMON_SEL_CTX_CHANGE', - 60: 'SDMA_PERFMON_SEL_CTX_CHANGE_EXPIRED', - 61: 'SDMA_PERFMON_SEL_CTX_CHANGE_EXCEPTION', - 62: 'SDMA_PERFMON_SEL_DOORBELL', - 63: 'SDMA_PERFMON_SEL_MCU_L1_WR_VLD', - 64: 'SDMA_PERFMON_SEL_CE_L1_WR_VLD', - 65: 'SDMA_PERFMON_SEL_CPF_SDMA_INVREQ', - 66: 'SDMA_PERFMON_SEL_SDMA_CPF_INVACK', - 67: 'SDMA_PERFMON_SEL_UTCL2_SDMA_INVREQ', - 68: 'SDMA_PERFMON_SEL_SDMA_UTCL2_INVACK', - 69: 'SDMA_PERFMON_SEL_UTCL2_SDMA_INVREQ_ALL', - 70: 'SDMA_PERFMON_SEL_SDMA_UTCL2_INVACK_ALL', - 71: 'SDMA_PERFMON_SEL_UTCL2_RET_XNACK', - 72: 'SDMA_PERFMON_SEL_UTCL2_RET_ACK', - 73: 'SDMA_PERFMON_SEL_UTCL2_FREE', - 74: 'SDMA_PERFMON_SEL_SDMA_UTCL2_SEND', - 75: 'SDMA_PERFMON_SEL_DMA_L1_WR_SEND', - 76: 'SDMA_PERFMON_SEL_DMA_L1_RD_SEND', - 77: 'SDMA_PERFMON_SEL_DMA_MC_WR_SEND', - 78: 'SDMA_PERFMON_SEL_DMA_MC_RD_SEND', - 79: 'SDMA_PERFMON_SEL_GPUVM_INV_HIGH', - 80: 'SDMA_PERFMON_SEL_GPUVM_INV_LOW', - 81: 'SDMA_PERFMON_SEL_L1_WRL2_IDLE', - 82: 'SDMA_PERFMON_SEL_L1_RDL2_IDLE', - 83: 'SDMA_PERFMON_SEL_L1_WRMC_IDLE', - 84: 'SDMA_PERFMON_SEL_L1_RDMC_IDLE', - 85: 'SDMA_PERFMON_SEL_L1_WR_INV_IDLE', - 86: 'SDMA_PERFMON_SEL_L1_RD_INV_IDLE', - 87: 'SDMA_PERFMON_SEL_META_L2_REQ_SEND', - 88: 'SDMA_PERFMON_SEL_L2_META_RET_VLD', - 89: 'SDMA_PERFMON_SEL_SDMA_UTCL2_RD_SEND', - 90: 'SDMA_PERFMON_SEL_UTCL2_SDMA_RD_RTN', - 91: 'SDMA_PERFMON_SEL_SDMA_UTCL2_WR_SEND', - 92: 'SDMA_PERFMON_SEL_UTCL2_SDMA_WR_RTN', - 93: 'SDMA_PERFMON_SEL_META_REQ_SEND', - 94: 'SDMA_PERFMON_SEL_META_RTN_VLD', - 95: 'SDMA_PERFMON_SEL_TLBI_SEND', - 96: 'SDMA_PERFMON_SEL_TLBI_RTN', - 97: 'SDMA_PERFMON_SEL_GCR_SEND', - 98: 'SDMA_PERFMON_SEL_GCR_RTN', - 99: 'SDMA_PERFMON_SEL_UTCL1_TAG_DELAY_COUNTER', - 100: 'SDMA_PERFMON_SEL_MMHUB_TAG_DELAY_COUNTER', -} -SDMA_PERFMON_SEL_CYCLE = 0 -SDMA_PERFMON_SEL_IDLE = 1 -SDMA_PERFMON_SEL_REG_IDLE = 2 -SDMA_PERFMON_SEL_RB_EMPTY = 3 -SDMA_PERFMON_SEL_RB_FULL = 4 -SDMA_PERFMON_SEL_RB_WPTR_WRAP = 5 -SDMA_PERFMON_SEL_RB_RPTR_WRAP = 6 -SDMA_PERFMON_SEL_RB_WPTR_POLL_READ = 7 -SDMA_PERFMON_SEL_RB_RPTR_WB = 8 -SDMA_PERFMON_SEL_RB_CMD_IDLE = 9 -SDMA_PERFMON_SEL_RB_CMD_FULL = 10 -SDMA_PERFMON_SEL_IB_CMD_IDLE = 11 -SDMA_PERFMON_SEL_IB_CMD_FULL = 12 -SDMA_PERFMON_SEL_EX_IDLE = 13 -SDMA_PERFMON_SEL_SRBM_REG_SEND = 14 -SDMA_PERFMON_SEL_EX_IDLE_POLL_TIMER_EXPIRE = 15 -SDMA_PERFMON_SEL_WR_BA_RTR = 16 -SDMA_PERFMON_SEL_MC_WR_IDLE = 17 -SDMA_PERFMON_SEL_MC_WR_COUNT = 18 -SDMA_PERFMON_SEL_RD_BA_RTR = 19 -SDMA_PERFMON_SEL_MC_RD_IDLE = 20 -SDMA_PERFMON_SEL_MC_RD_COUNT = 21 -SDMA_PERFMON_SEL_MC_RD_RET_STALL = 22 -SDMA_PERFMON_SEL_MC_RD_NO_POLL_IDLE = 23 -SDMA_PERFMON_SEL_SEM_IDLE = 26 -SDMA_PERFMON_SEL_SEM_REQ_STALL = 27 -SDMA_PERFMON_SEL_SEM_REQ_COUNT = 28 -SDMA_PERFMON_SEL_SEM_RESP_INCOMPLETE = 29 -SDMA_PERFMON_SEL_SEM_RESP_FAIL = 30 -SDMA_PERFMON_SEL_SEM_RESP_PASS = 31 -SDMA_PERFMON_SEL_INT_IDLE = 32 -SDMA_PERFMON_SEL_INT_REQ_STALL = 33 -SDMA_PERFMON_SEL_INT_REQ_COUNT = 34 -SDMA_PERFMON_SEL_INT_RESP_ACCEPTED = 35 -SDMA_PERFMON_SEL_INT_RESP_RETRY = 36 -SDMA_PERFMON_SEL_NUM_PACKET = 37 -SDMA_PERFMON_SEL_CE_WREQ_IDLE = 39 -SDMA_PERFMON_SEL_CE_WR_IDLE = 40 -SDMA_PERFMON_SEL_CE_SPLIT_IDLE = 41 -SDMA_PERFMON_SEL_CE_RREQ_IDLE = 42 -SDMA_PERFMON_SEL_CE_OUT_IDLE = 43 -SDMA_PERFMON_SEL_CE_IN_IDLE = 44 -SDMA_PERFMON_SEL_CE_DST_IDLE = 45 -SDMA_PERFMON_SEL_CE_AFIFO_FULL = 48 -SDMA_PERFMON_SEL_DUMMY_0 = 49 -SDMA_PERFMON_SEL_DUMMY_1 = 50 -SDMA_PERFMON_SEL_CE_INFO_FULL = 51 -SDMA_PERFMON_SEL_CE_INFO1_FULL = 52 -SDMA_PERFMON_SEL_CE_RD_STALL = 53 -SDMA_PERFMON_SEL_CE_WR_STALL = 54 -SDMA_PERFMON_SEL_QUEUE0_SELECT = 55 -SDMA_PERFMON_SEL_QUEUE1_SELECT = 56 -SDMA_PERFMON_SEL_QUEUE2_SELECT = 57 -SDMA_PERFMON_SEL_QUEUE3_SELECT = 58 -SDMA_PERFMON_SEL_CTX_CHANGE = 59 -SDMA_PERFMON_SEL_CTX_CHANGE_EXPIRED = 60 -SDMA_PERFMON_SEL_CTX_CHANGE_EXCEPTION = 61 -SDMA_PERFMON_SEL_DOORBELL = 62 -SDMA_PERFMON_SEL_MCU_L1_WR_VLD = 63 -SDMA_PERFMON_SEL_CE_L1_WR_VLD = 64 -SDMA_PERFMON_SEL_CPF_SDMA_INVREQ = 65 -SDMA_PERFMON_SEL_SDMA_CPF_INVACK = 66 -SDMA_PERFMON_SEL_UTCL2_SDMA_INVREQ = 67 -SDMA_PERFMON_SEL_SDMA_UTCL2_INVACK = 68 -SDMA_PERFMON_SEL_UTCL2_SDMA_INVREQ_ALL = 69 -SDMA_PERFMON_SEL_SDMA_UTCL2_INVACK_ALL = 70 -SDMA_PERFMON_SEL_UTCL2_RET_XNACK = 71 -SDMA_PERFMON_SEL_UTCL2_RET_ACK = 72 -SDMA_PERFMON_SEL_UTCL2_FREE = 73 -SDMA_PERFMON_SEL_SDMA_UTCL2_SEND = 74 -SDMA_PERFMON_SEL_DMA_L1_WR_SEND = 75 -SDMA_PERFMON_SEL_DMA_L1_RD_SEND = 76 -SDMA_PERFMON_SEL_DMA_MC_WR_SEND = 77 -SDMA_PERFMON_SEL_DMA_MC_RD_SEND = 78 -SDMA_PERFMON_SEL_GPUVM_INV_HIGH = 79 -SDMA_PERFMON_SEL_GPUVM_INV_LOW = 80 -SDMA_PERFMON_SEL_L1_WRL2_IDLE = 81 -SDMA_PERFMON_SEL_L1_RDL2_IDLE = 82 -SDMA_PERFMON_SEL_L1_WRMC_IDLE = 83 -SDMA_PERFMON_SEL_L1_RDMC_IDLE = 84 -SDMA_PERFMON_SEL_L1_WR_INV_IDLE = 85 -SDMA_PERFMON_SEL_L1_RD_INV_IDLE = 86 -SDMA_PERFMON_SEL_META_L2_REQ_SEND = 87 -SDMA_PERFMON_SEL_L2_META_RET_VLD = 88 -SDMA_PERFMON_SEL_SDMA_UTCL2_RD_SEND = 89 -SDMA_PERFMON_SEL_UTCL2_SDMA_RD_RTN = 90 -SDMA_PERFMON_SEL_SDMA_UTCL2_WR_SEND = 91 -SDMA_PERFMON_SEL_UTCL2_SDMA_WR_RTN = 92 -SDMA_PERFMON_SEL_META_REQ_SEND = 93 -SDMA_PERFMON_SEL_META_RTN_VLD = 94 -SDMA_PERFMON_SEL_TLBI_SEND = 95 -SDMA_PERFMON_SEL_TLBI_RTN = 96 -SDMA_PERFMON_SEL_GCR_SEND = 97 -SDMA_PERFMON_SEL_GCR_RTN = 98 -SDMA_PERFMON_SEL_UTCL1_TAG_DELAY_COUNTER = 99 -SDMA_PERFMON_SEL_MMHUB_TAG_DELAY_COUNTER = 100 -SDMA_PERFMON_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SDMA_PERF_SEL' -SDMA_PERF_SEL__enumvalues = { - 0: 'SDMA_PERF_SEL_CYCLE', - 1: 'SDMA_PERF_SEL_IDLE', - 2: 'SDMA_PERF_SEL_REG_IDLE', - 3: 'SDMA_PERF_SEL_RB_EMPTY', - 4: 'SDMA_PERF_SEL_RB_FULL', - 5: 'SDMA_PERF_SEL_RB_WPTR_WRAP', - 6: 'SDMA_PERF_SEL_RB_RPTR_WRAP', - 7: 'SDMA_PERF_SEL_RB_WPTR_POLL_READ', - 8: 'SDMA_PERF_SEL_RB_RPTR_WB', - 9: 'SDMA_PERF_SEL_RB_CMD_IDLE', - 10: 'SDMA_PERF_SEL_RB_CMD_FULL', - 11: 'SDMA_PERF_SEL_IB_CMD_IDLE', - 12: 'SDMA_PERF_SEL_IB_CMD_FULL', - 13: 'SDMA_PERF_SEL_EX_IDLE', - 14: 'SDMA_PERF_SEL_SRBM_REG_SEND', - 15: 'SDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 16: 'SDMA_PERF_SEL_MC_WR_IDLE', - 17: 'SDMA_PERF_SEL_MC_WR_COUNT', - 18: 'SDMA_PERF_SEL_MC_RD_IDLE', - 19: 'SDMA_PERF_SEL_MC_RD_COUNT', - 20: 'SDMA_PERF_SEL_MC_RD_RET_STALL', - 21: 'SDMA_PERF_SEL_MC_RD_NO_POLL_IDLE', - 24: 'SDMA_PERF_SEL_SEM_IDLE', - 25: 'SDMA_PERF_SEL_SEM_REQ_STALL', - 26: 'SDMA_PERF_SEL_SEM_REQ_COUNT', - 27: 'SDMA_PERF_SEL_SEM_RESP_INCOMPLETE', - 28: 'SDMA_PERF_SEL_SEM_RESP_FAIL', - 29: 'SDMA_PERF_SEL_SEM_RESP_PASS', - 30: 'SDMA_PERF_SEL_INT_IDLE', - 31: 'SDMA_PERF_SEL_INT_REQ_STALL', - 32: 'SDMA_PERF_SEL_INT_REQ_COUNT', - 33: 'SDMA_PERF_SEL_INT_RESP_ACCEPTED', - 34: 'SDMA_PERF_SEL_INT_RESP_RETRY', - 35: 'SDMA_PERF_SEL_NUM_PACKET', - 37: 'SDMA_PERF_SEL_CE_WREQ_IDLE', - 38: 'SDMA_PERF_SEL_CE_WR_IDLE', - 39: 'SDMA_PERF_SEL_CE_SPLIT_IDLE', - 40: 'SDMA_PERF_SEL_CE_RREQ_IDLE', - 41: 'SDMA_PERF_SEL_CE_OUT_IDLE', - 42: 'SDMA_PERF_SEL_CE_IN_IDLE', - 43: 'SDMA_PERF_SEL_CE_DST_IDLE', - 46: 'SDMA_PERF_SEL_CE_AFIFO_FULL', - 47: 'SDMA_PERF_SEL_DUMMY_0', - 48: 'SDMA_PERF_SEL_DUMMY_1', - 49: 'SDMA_PERF_SEL_CE_INFO_FULL', - 50: 'SDMA_PERF_SEL_CE_INFO1_FULL', - 51: 'SDMA_PERF_SEL_CE_RD_STALL', - 52: 'SDMA_PERF_SEL_CE_WR_STALL', - 53: 'SDMA_PERF_SEL_QUEUE0_SELECT', - 54: 'SDMA_PERF_SEL_QUEUE1_SELECT', - 55: 'SDMA_PERF_SEL_QUEUE2_SELECT', - 56: 'SDMA_PERF_SEL_QUEUE3_SELECT', - 57: 'SDMA_PERF_SEL_CTX_CHANGE', - 58: 'SDMA_PERF_SEL_CTX_CHANGE_EXPIRED', - 59: 'SDMA_PERF_SEL_CTX_CHANGE_EXCEPTION', - 60: 'SDMA_PERF_SEL_DOORBELL', - 61: 'SDMA_PERF_SEL_RD_BA_RTR', - 62: 'SDMA_PERF_SEL_WR_BA_RTR', - 63: 'SDMA_PERF_SEL_MCU_L1_WR_VLD', - 64: 'SDMA_PERF_SEL_CE_L1_WR_VLD', - 65: 'SDMA_PERF_SEL_CPF_SDMA_INVREQ', - 66: 'SDMA_PERF_SEL_SDMA_CPF_INVACK', - 67: 'SDMA_PERF_SEL_UTCL2_SDMA_INVREQ', - 68: 'SDMA_PERF_SEL_SDMA_UTCL2_INVACK', - 69: 'SDMA_PERF_SEL_UTCL2_SDMA_INVREQ_ALL', - 70: 'SDMA_PERF_SEL_SDMA_UTCL2_INVACK_ALL', - 71: 'SDMA_PERF_SEL_UTCL2_RET_XNACK', - 72: 'SDMA_PERF_SEL_UTCL2_RET_ACK', - 73: 'SDMA_PERF_SEL_UTCL2_FREE', - 74: 'SDMA_PERF_SEL_SDMA_UTCL2_SEND', - 75: 'SDMA_PERF_SEL_DMA_L1_WR_SEND', - 76: 'SDMA_PERF_SEL_DMA_L1_RD_SEND', - 77: 'SDMA_PERF_SEL_DMA_MC_WR_SEND', - 78: 'SDMA_PERF_SEL_DMA_MC_RD_SEND', - 79: 'SDMA_PERF_SEL_GPUVM_INV_HIGH', - 80: 'SDMA_PERF_SEL_GPUVM_INV_LOW', - 81: 'SDMA_PERF_SEL_L1_WRL2_IDLE', - 82: 'SDMA_PERF_SEL_L1_RDL2_IDLE', - 83: 'SDMA_PERF_SEL_L1_WRMC_IDLE', - 84: 'SDMA_PERF_SEL_L1_RDMC_IDLE', - 85: 'SDMA_PERF_SEL_L1_WR_INV_IDLE', - 86: 'SDMA_PERF_SEL_L1_RD_INV_IDLE', - 87: 'SDMA_PERF_SEL_META_L2_REQ_SEND', - 88: 'SDMA_PERF_SEL_L2_META_RET_VLD', - 89: 'SDMA_PERF_SEL_SDMA_UTCL2_RD_SEND', - 90: 'SDMA_PERF_SEL_UTCL2_SDMA_RD_RTN', - 91: 'SDMA_PERF_SEL_SDMA_UTCL2_WR_SEND', - 92: 'SDMA_PERF_SEL_UTCL2_SDMA_WR_RTN', - 93: 'SDMA_PERF_SEL_META_REQ_SEND', - 94: 'SDMA_PERF_SEL_META_RTN_VLD', - 95: 'SDMA_PERF_SEL_TLBI_SEND', - 96: 'SDMA_PERF_SEL_TLBI_RTN', - 97: 'SDMA_PERF_SEL_GCR_SEND', - 98: 'SDMA_PERF_SEL_GCR_RTN', - 99: 'SDMA_PERF_SEL_CGCG_FENCE', - 100: 'SDMA_PERF_SEL_CE_CH_WR_REQ', - 101: 'SDMA_PERF_SEL_CE_CH_WR_RET', - 102: 'SDMA_PERF_SEL_MCU_CH_WR_REQ', - 103: 'SDMA_PERF_SEL_MCU_CH_WR_RET', - 104: 'SDMA_PERF_SEL_CE_OR_MCU_CH_RD_REQ', - 105: 'SDMA_PERF_SEL_CE_OR_MCU_CH_RD_RET', - 106: 'SDMA_PERF_SEL_RB_CH_RD_REQ', - 107: 'SDMA_PERF_SEL_RB_CH_RD_RET', - 108: 'SDMA_PERF_SEL_IB_CH_RD_REQ', - 109: 'SDMA_PERF_SEL_IB_CH_RD_RET', - 110: 'SDMA_PERF_SEL_WPTR_CH_RD_REQ', - 111: 'SDMA_PERF_SEL_WPTR_CH_RD_RET', - 112: 'SDMA_PERF_SEL_UTCL1_UTCL2_REQ', - 113: 'SDMA_PERF_SEL_UTCL1_UTCL2_RET', - 114: 'SDMA_PERF_SEL_CMD_OP_MATCH', - 115: 'SDMA_PERF_SEL_CMD_OP_START', - 116: 'SDMA_PERF_SEL_CMD_OP_END', - 117: 'SDMA_PERF_SEL_CE_BUSY', - 118: 'SDMA_PERF_SEL_CE_BUSY_START', - 119: 'SDMA_PERF_SEL_CE_BUSY_END', - 120: 'SDMA_PERF_SEL_MCU_PERFCNT_TRIGGER', - 121: 'SDMA_PERF_SEL_MCU_PERFCNT_TRIGGER_START', - 122: 'SDMA_PERF_SEL_MCU_PERFCNT_TRIGGER_END', - 123: 'SDMA_PERF_SEL_CE_CH_WRREQ_SEND', - 124: 'SDMA_PERF_SEL_CH_CE_WRRET_VALID', - 125: 'SDMA_PERF_SEL_CE_CH_RDREQ_SEND', - 126: 'SDMA_PERF_SEL_CH_CE_RDRET_VALID', - 127: 'SDMA_PERF_SEL_QUEUE4_SELECT', - 128: 'SDMA_PERF_SEL_QUEUE5_SELECT', - 129: 'SDMA_PERF_SEL_QUEUE6_SELECT', - 130: 'SDMA_PERF_SEL_QUEUE7_SELECT', -} -SDMA_PERF_SEL_CYCLE = 0 -SDMA_PERF_SEL_IDLE = 1 -SDMA_PERF_SEL_REG_IDLE = 2 -SDMA_PERF_SEL_RB_EMPTY = 3 -SDMA_PERF_SEL_RB_FULL = 4 -SDMA_PERF_SEL_RB_WPTR_WRAP = 5 -SDMA_PERF_SEL_RB_RPTR_WRAP = 6 -SDMA_PERF_SEL_RB_WPTR_POLL_READ = 7 -SDMA_PERF_SEL_RB_RPTR_WB = 8 -SDMA_PERF_SEL_RB_CMD_IDLE = 9 -SDMA_PERF_SEL_RB_CMD_FULL = 10 -SDMA_PERF_SEL_IB_CMD_IDLE = 11 -SDMA_PERF_SEL_IB_CMD_FULL = 12 -SDMA_PERF_SEL_EX_IDLE = 13 -SDMA_PERF_SEL_SRBM_REG_SEND = 14 -SDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE = 15 -SDMA_PERF_SEL_MC_WR_IDLE = 16 -SDMA_PERF_SEL_MC_WR_COUNT = 17 -SDMA_PERF_SEL_MC_RD_IDLE = 18 -SDMA_PERF_SEL_MC_RD_COUNT = 19 -SDMA_PERF_SEL_MC_RD_RET_STALL = 20 -SDMA_PERF_SEL_MC_RD_NO_POLL_IDLE = 21 -SDMA_PERF_SEL_SEM_IDLE = 24 -SDMA_PERF_SEL_SEM_REQ_STALL = 25 -SDMA_PERF_SEL_SEM_REQ_COUNT = 26 -SDMA_PERF_SEL_SEM_RESP_INCOMPLETE = 27 -SDMA_PERF_SEL_SEM_RESP_FAIL = 28 -SDMA_PERF_SEL_SEM_RESP_PASS = 29 -SDMA_PERF_SEL_INT_IDLE = 30 -SDMA_PERF_SEL_INT_REQ_STALL = 31 -SDMA_PERF_SEL_INT_REQ_COUNT = 32 -SDMA_PERF_SEL_INT_RESP_ACCEPTED = 33 -SDMA_PERF_SEL_INT_RESP_RETRY = 34 -SDMA_PERF_SEL_NUM_PACKET = 35 -SDMA_PERF_SEL_CE_WREQ_IDLE = 37 -SDMA_PERF_SEL_CE_WR_IDLE = 38 -SDMA_PERF_SEL_CE_SPLIT_IDLE = 39 -SDMA_PERF_SEL_CE_RREQ_IDLE = 40 -SDMA_PERF_SEL_CE_OUT_IDLE = 41 -SDMA_PERF_SEL_CE_IN_IDLE = 42 -SDMA_PERF_SEL_CE_DST_IDLE = 43 -SDMA_PERF_SEL_CE_AFIFO_FULL = 46 -SDMA_PERF_SEL_DUMMY_0 = 47 -SDMA_PERF_SEL_DUMMY_1 = 48 -SDMA_PERF_SEL_CE_INFO_FULL = 49 -SDMA_PERF_SEL_CE_INFO1_FULL = 50 -SDMA_PERF_SEL_CE_RD_STALL = 51 -SDMA_PERF_SEL_CE_WR_STALL = 52 -SDMA_PERF_SEL_QUEUE0_SELECT = 53 -SDMA_PERF_SEL_QUEUE1_SELECT = 54 -SDMA_PERF_SEL_QUEUE2_SELECT = 55 -SDMA_PERF_SEL_QUEUE3_SELECT = 56 -SDMA_PERF_SEL_CTX_CHANGE = 57 -SDMA_PERF_SEL_CTX_CHANGE_EXPIRED = 58 -SDMA_PERF_SEL_CTX_CHANGE_EXCEPTION = 59 -SDMA_PERF_SEL_DOORBELL = 60 -SDMA_PERF_SEL_RD_BA_RTR = 61 -SDMA_PERF_SEL_WR_BA_RTR = 62 -SDMA_PERF_SEL_MCU_L1_WR_VLD = 63 -SDMA_PERF_SEL_CE_L1_WR_VLD = 64 -SDMA_PERF_SEL_CPF_SDMA_INVREQ = 65 -SDMA_PERF_SEL_SDMA_CPF_INVACK = 66 -SDMA_PERF_SEL_UTCL2_SDMA_INVREQ = 67 -SDMA_PERF_SEL_SDMA_UTCL2_INVACK = 68 -SDMA_PERF_SEL_UTCL2_SDMA_INVREQ_ALL = 69 -SDMA_PERF_SEL_SDMA_UTCL2_INVACK_ALL = 70 -SDMA_PERF_SEL_UTCL2_RET_XNACK = 71 -SDMA_PERF_SEL_UTCL2_RET_ACK = 72 -SDMA_PERF_SEL_UTCL2_FREE = 73 -SDMA_PERF_SEL_SDMA_UTCL2_SEND = 74 -SDMA_PERF_SEL_DMA_L1_WR_SEND = 75 -SDMA_PERF_SEL_DMA_L1_RD_SEND = 76 -SDMA_PERF_SEL_DMA_MC_WR_SEND = 77 -SDMA_PERF_SEL_DMA_MC_RD_SEND = 78 -SDMA_PERF_SEL_GPUVM_INV_HIGH = 79 -SDMA_PERF_SEL_GPUVM_INV_LOW = 80 -SDMA_PERF_SEL_L1_WRL2_IDLE = 81 -SDMA_PERF_SEL_L1_RDL2_IDLE = 82 -SDMA_PERF_SEL_L1_WRMC_IDLE = 83 -SDMA_PERF_SEL_L1_RDMC_IDLE = 84 -SDMA_PERF_SEL_L1_WR_INV_IDLE = 85 -SDMA_PERF_SEL_L1_RD_INV_IDLE = 86 -SDMA_PERF_SEL_META_L2_REQ_SEND = 87 -SDMA_PERF_SEL_L2_META_RET_VLD = 88 -SDMA_PERF_SEL_SDMA_UTCL2_RD_SEND = 89 -SDMA_PERF_SEL_UTCL2_SDMA_RD_RTN = 90 -SDMA_PERF_SEL_SDMA_UTCL2_WR_SEND = 91 -SDMA_PERF_SEL_UTCL2_SDMA_WR_RTN = 92 -SDMA_PERF_SEL_META_REQ_SEND = 93 -SDMA_PERF_SEL_META_RTN_VLD = 94 -SDMA_PERF_SEL_TLBI_SEND = 95 -SDMA_PERF_SEL_TLBI_RTN = 96 -SDMA_PERF_SEL_GCR_SEND = 97 -SDMA_PERF_SEL_GCR_RTN = 98 -SDMA_PERF_SEL_CGCG_FENCE = 99 -SDMA_PERF_SEL_CE_CH_WR_REQ = 100 -SDMA_PERF_SEL_CE_CH_WR_RET = 101 -SDMA_PERF_SEL_MCU_CH_WR_REQ = 102 -SDMA_PERF_SEL_MCU_CH_WR_RET = 103 -SDMA_PERF_SEL_CE_OR_MCU_CH_RD_REQ = 104 -SDMA_PERF_SEL_CE_OR_MCU_CH_RD_RET = 105 -SDMA_PERF_SEL_RB_CH_RD_REQ = 106 -SDMA_PERF_SEL_RB_CH_RD_RET = 107 -SDMA_PERF_SEL_IB_CH_RD_REQ = 108 -SDMA_PERF_SEL_IB_CH_RD_RET = 109 -SDMA_PERF_SEL_WPTR_CH_RD_REQ = 110 -SDMA_PERF_SEL_WPTR_CH_RD_RET = 111 -SDMA_PERF_SEL_UTCL1_UTCL2_REQ = 112 -SDMA_PERF_SEL_UTCL1_UTCL2_RET = 113 -SDMA_PERF_SEL_CMD_OP_MATCH = 114 -SDMA_PERF_SEL_CMD_OP_START = 115 -SDMA_PERF_SEL_CMD_OP_END = 116 -SDMA_PERF_SEL_CE_BUSY = 117 -SDMA_PERF_SEL_CE_BUSY_START = 118 -SDMA_PERF_SEL_CE_BUSY_END = 119 -SDMA_PERF_SEL_MCU_PERFCNT_TRIGGER = 120 -SDMA_PERF_SEL_MCU_PERFCNT_TRIGGER_START = 121 -SDMA_PERF_SEL_MCU_PERFCNT_TRIGGER_END = 122 -SDMA_PERF_SEL_CE_CH_WRREQ_SEND = 123 -SDMA_PERF_SEL_CH_CE_WRRET_VALID = 124 -SDMA_PERF_SEL_CE_CH_RDREQ_SEND = 125 -SDMA_PERF_SEL_CH_CE_RDRET_VALID = 126 -SDMA_PERF_SEL_QUEUE4_SELECT = 127 -SDMA_PERF_SEL_QUEUE5_SELECT = 128 -SDMA_PERF_SEL_QUEUE6_SELECT = 129 -SDMA_PERF_SEL_QUEUE7_SELECT = 130 -SDMA_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SPM_PERFMON_STATE' -SPM_PERFMON_STATE__enumvalues = { - 0: 'STRM_PERFMON_STATE_DISABLE_AND_RESET', - 1: 'STRM_PERFMON_STATE_START_COUNTING', - 2: 'STRM_PERFMON_STATE_STOP_COUNTING', - 3: 'STRM_PERFMON_STATE_RESERVED_3', - 4: 'STRM_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 5: 'STRM_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', -} -STRM_PERFMON_STATE_DISABLE_AND_RESET = 0 -STRM_PERFMON_STATE_START_COUNTING = 1 -STRM_PERFMON_STATE_STOP_COUNTING = 2 -STRM_PERFMON_STATE_RESERVED_3 = 3 -STRM_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM = 4 -STRM_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM = 5 -SPM_PERFMON_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'TCC_MTYPE' -TCC_MTYPE__enumvalues = { - 0: 'MTYPE_NC', - 1: 'MTYPE_WC', - 2: 'MTYPE_CC', -} -MTYPE_NC = 0 -MTYPE_WC = 1 -MTYPE_CC = 2 -TCC_MTYPE = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL0FaultType' -UTCL0FaultType__enumvalues = { - 0: 'UTCL0_XNACK_SUCCESS', - 1: 'UTCL0_XNACK_RETRY', - 2: 'UTCL0_XNACK_PRT', - 3: 'UTCL0_XNACK_NO_RETRY', -} -UTCL0_XNACK_SUCCESS = 0 -UTCL0_XNACK_RETRY = 1 -UTCL0_XNACK_PRT = 2 -UTCL0_XNACK_NO_RETRY = 3 -UTCL0FaultType = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL0RequestType' -UTCL0RequestType__enumvalues = { - 0: 'UTCL0_TYPE_NORMAL', - 1: 'UTCL0_TYPE_SHOOTDOWN', - 2: 'UTCL0_TYPE_BYPASS', -} -UTCL0_TYPE_NORMAL = 0 -UTCL0_TYPE_SHOOTDOWN = 1 -UTCL0_TYPE_BYPASS = 2 -UTCL0RequestType = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL1FaultType' -UTCL1FaultType__enumvalues = { - 0: 'UTCL1_XNACK_SUCCESS', - 1: 'UTCL1_XNACK_RETRY', - 2: 'UTCL1_XNACK_PRT', - 3: 'UTCL1_XNACK_NO_RETRY', -} -UTCL1_XNACK_SUCCESS = 0 -UTCL1_XNACK_RETRY = 1 -UTCL1_XNACK_PRT = 2 -UTCL1_XNACK_NO_RETRY = 3 -UTCL1FaultType = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL1RequestType' -UTCL1RequestType__enumvalues = { - 0: 'UTCL1_TYPE_NORMAL', - 1: 'UTCL1_TYPE_SHOOTDOWN', - 2: 'UTCL1_TYPE_BYPASS', -} -UTCL1_TYPE_NORMAL = 0 -UTCL1_TYPE_SHOOTDOWN = 1 -UTCL1_TYPE_BYPASS = 2 -UTCL1RequestType = ctypes.c_uint32 # enum - -# values for enumeration 'WRITE_COMPRESSION_MODE' -WRITE_COMPRESSION_MODE__enumvalues = { - 0: 'COMPRESSION_MODE_BYPASS_METADATA_CACHE', - 1: 'COMPRESSION_MODE_COMPRESSION_ENABLED', - 2: 'COMPRESSION_MODE_WRITE_COMPRESSION_DISABLED', -} -COMPRESSION_MODE_BYPASS_METADATA_CACHE = 0 -COMPRESSION_MODE_COMPRESSION_ENABLED = 1 -COMPRESSION_MODE_WRITE_COMPRESSION_DISABLED = 2 -WRITE_COMPRESSION_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'WritePolicy' -WritePolicy__enumvalues = { - 0: 'CACHE_LRU_WR', - 1: 'CACHE_STREAM', - 2: 'CACHE_NOA_WR', - 3: 'CACHE_BYPASS', -} -CACHE_LRU_WR = 0 -CACHE_STREAM = 1 -CACHE_NOA_WR = 2 -CACHE_BYPASS = 3 -WritePolicy = ctypes.c_uint32 # enum - -# values for enumeration 'COLOR_KEYER_ENABLE' -COLOR_KEYER_ENABLE__enumvalues = { - 0: 'COLOR_KEY_EN', - 1: 'COLOR_KEY_DIS', -} -COLOR_KEY_EN = 0 -COLOR_KEY_DIS = 1 -COLOR_KEYER_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'COLOR_KEYER_MODE' -COLOR_KEYER_MODE__enumvalues = { - 0: 'FORCE_00', - 1: 'FORCE_FF', - 2: 'RANGE_00', - 3: 'RANGE_FF', -} -FORCE_00 = 0 -FORCE_FF = 1 -RANGE_00 = 2 -RANGE_FF = 3 -COLOR_KEYER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DENORM_TRUNCATE' -DENORM_TRUNCATE__enumvalues = { - 0: 'CNVC_ROUND', - 1: 'CNVC_TRUNCATE', -} -CNVC_ROUND = 0 -CNVC_TRUNCATE = 1 -DENORM_TRUNCATE = ctypes.c_uint32 # enum - -# values for enumeration 'FORMAT_CROSSBAR' -FORMAT_CROSSBAR__enumvalues = { - 0: 'FORMAT_CROSSBAR_R', - 1: 'FORMAT_CROSSBAR_G', - 2: 'FORMAT_CROSSBAR_B', -} -FORMAT_CROSSBAR_R = 0 -FORMAT_CROSSBAR_G = 1 -FORMAT_CROSSBAR_B = 2 -FORMAT_CROSSBAR = ctypes.c_uint32 # enum - -# values for enumeration 'LUMA_KEYER_ENABLE' -LUMA_KEYER_ENABLE__enumvalues = { - 0: 'LUMA_KEY_EN', - 1: 'LUMA_KEY_DIS', -} -LUMA_KEY_EN = 0 -LUMA_KEY_DIS = 1 -LUMA_KEYER_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'PIX_EXPAND_MODE' -PIX_EXPAND_MODE__enumvalues = { - 0: 'PIX_DYNAMIC_EXPANSION', - 1: 'PIX_ZERO_EXPANSION', -} -PIX_DYNAMIC_EXPANSION = 0 -PIX_ZERO_EXPANSION = 1 -PIX_EXPAND_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PRE_CSC_MODE_ENUM' -PRE_CSC_MODE_ENUM__enumvalues = { - 0: 'PRE_CSC_BYPASS', - 1: 'PRE_CSC_SET_A', - 2: 'PRE_CSC_SET_B', -} -PRE_CSC_BYPASS = 0 -PRE_CSC_SET_A = 1 -PRE_CSC_SET_B = 2 -PRE_CSC_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'PRE_DEGAM_MODE' -PRE_DEGAM_MODE__enumvalues = { - 0: 'PRE_DEGAM_BYPASS', - 1: 'PRE_DEGAM_ENABLE', -} -PRE_DEGAM_BYPASS = 0 -PRE_DEGAM_ENABLE = 1 -PRE_DEGAM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PRE_DEGAM_SELECT' -PRE_DEGAM_SELECT__enumvalues = { - 0: 'PRE_DEGAM_SRGB', - 1: 'PRE_DEGAM_GAMMA_22', - 2: 'PRE_DEGAM_GAMMA_24', - 3: 'PRE_DEGAM_GAMMA_26', - 4: 'PRE_DEGAM_BT2020', - 5: 'PRE_DEGAM_BT2100PQ', - 6: 'PRE_DEGAM_BT2100HLG', -} -PRE_DEGAM_SRGB = 0 -PRE_DEGAM_GAMMA_22 = 1 -PRE_DEGAM_GAMMA_24 = 2 -PRE_DEGAM_GAMMA_26 = 3 -PRE_DEGAM_BT2020 = 4 -PRE_DEGAM_BT2100PQ = 5 -PRE_DEGAM_BT2100HLG = 6 -PRE_DEGAM_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_PIXEL_FORMAT' -SURFACE_PIXEL_FORMAT__enumvalues = { - 1: 'ARGB1555', - 2: 'RGBA5551', - 3: 'RGB565', - 4: 'BGR565', - 5: 'ARGB4444', - 6: 'RGBA4444', - 8: 'ARGB8888', - 9: 'RGBA8888', - 10: 'ARGB2101010', - 11: 'RGBA1010102', - 12: 'AYCrCb8888', - 13: 'YCrCbA8888', - 14: 'ACrYCb8888', - 15: 'CrYCbA8888', - 16: 'ARGB16161616_10MSB', - 17: 'RGBA16161616_10MSB', - 18: 'ARGB16161616_10LSB', - 19: 'RGBA16161616_10LSB', - 20: 'ARGB16161616_12MSB', - 21: 'RGBA16161616_12MSB', - 22: 'ARGB16161616_12LSB', - 23: 'RGBA16161616_12LSB', - 24: 'ARGB16161616_FLOAT', - 25: 'RGBA16161616_FLOAT', - 26: 'ARGB16161616_UNORM', - 27: 'RGBA16161616_UNORM', - 28: 'ARGB16161616_SNORM', - 29: 'RGBA16161616_SNORM', - 32: 'AYCrCb16161616_10MSB', - 33: 'AYCrCb16161616_10LSB', - 34: 'YCrCbA16161616_10MSB', - 35: 'YCrCbA16161616_10LSB', - 36: 'ACrYCb16161616_10MSB', - 37: 'ACrYCb16161616_10LSB', - 38: 'CrYCbA16161616_10MSB', - 39: 'CrYCbA16161616_10LSB', - 40: 'AYCrCb16161616_12MSB', - 41: 'AYCrCb16161616_12LSB', - 42: 'YCrCbA16161616_12MSB', - 43: 'YCrCbA16161616_12LSB', - 44: 'ACrYCb16161616_12MSB', - 45: 'ACrYCb16161616_12LSB', - 46: 'CrYCbA16161616_12MSB', - 47: 'CrYCbA16161616_12LSB', - 64: 'Y8_CrCb88_420_PLANAR', - 65: 'Y8_CbCr88_420_PLANAR', - 66: 'Y10_CrCb1010_420_PLANAR', - 67: 'Y10_CbCr1010_420_PLANAR', - 68: 'Y12_CrCb1212_420_PLANAR', - 69: 'Y12_CbCr1212_420_PLANAR', - 72: 'YCrYCb8888_422_PACKED', - 73: 'YCbYCr8888_422_PACKED', - 74: 'CrYCbY8888_422_PACKED', - 75: 'CbYCrY8888_422_PACKED', - 76: 'YCrYCb10101010_422_PACKED', - 77: 'YCbYCr10101010_422_PACKED', - 78: 'CrYCbY10101010_422_PACKED', - 79: 'CbYCrY10101010_422_PACKED', - 80: 'YCrYCb12121212_422_PACKED', - 81: 'YCbYCr12121212_422_PACKED', - 82: 'CrYCbY12121212_422_PACKED', - 83: 'CbYCrY12121212_422_PACKED', - 112: 'RGB111110_FIX', - 113: 'BGR101111_FIX', - 114: 'ACrYCb2101010', - 115: 'CrYCbA1010102', - 116: 'RGBE', - 118: 'RGB111110_FLOAT', - 119: 'BGR101111_FLOAT', - 120: 'MONO_8', - 121: 'MONO_10MSB', - 122: 'MONO_10LSB', - 123: 'MONO_12MSB', - 124: 'MONO_12LSB', - 125: 'MONO_16', -} -ARGB1555 = 1 -RGBA5551 = 2 -RGB565 = 3 -BGR565 = 4 -ARGB4444 = 5 -RGBA4444 = 6 -ARGB8888 = 8 -RGBA8888 = 9 -ARGB2101010 = 10 -RGBA1010102 = 11 -AYCrCb8888 = 12 -YCrCbA8888 = 13 -ACrYCb8888 = 14 -CrYCbA8888 = 15 -ARGB16161616_10MSB = 16 -RGBA16161616_10MSB = 17 -ARGB16161616_10LSB = 18 -RGBA16161616_10LSB = 19 -ARGB16161616_12MSB = 20 -RGBA16161616_12MSB = 21 -ARGB16161616_12LSB = 22 -RGBA16161616_12LSB = 23 -ARGB16161616_FLOAT = 24 -RGBA16161616_FLOAT = 25 -ARGB16161616_UNORM = 26 -RGBA16161616_UNORM = 27 -ARGB16161616_SNORM = 28 -RGBA16161616_SNORM = 29 -AYCrCb16161616_10MSB = 32 -AYCrCb16161616_10LSB = 33 -YCrCbA16161616_10MSB = 34 -YCrCbA16161616_10LSB = 35 -ACrYCb16161616_10MSB = 36 -ACrYCb16161616_10LSB = 37 -CrYCbA16161616_10MSB = 38 -CrYCbA16161616_10LSB = 39 -AYCrCb16161616_12MSB = 40 -AYCrCb16161616_12LSB = 41 -YCrCbA16161616_12MSB = 42 -YCrCbA16161616_12LSB = 43 -ACrYCb16161616_12MSB = 44 -ACrYCb16161616_12LSB = 45 -CrYCbA16161616_12MSB = 46 -CrYCbA16161616_12LSB = 47 -Y8_CrCb88_420_PLANAR = 64 -Y8_CbCr88_420_PLANAR = 65 -Y10_CrCb1010_420_PLANAR = 66 -Y10_CbCr1010_420_PLANAR = 67 -Y12_CrCb1212_420_PLANAR = 68 -Y12_CbCr1212_420_PLANAR = 69 -YCrYCb8888_422_PACKED = 72 -YCbYCr8888_422_PACKED = 73 -CrYCbY8888_422_PACKED = 74 -CbYCrY8888_422_PACKED = 75 -YCrYCb10101010_422_PACKED = 76 -YCbYCr10101010_422_PACKED = 77 -CrYCbY10101010_422_PACKED = 78 -CbYCrY10101010_422_PACKED = 79 -YCrYCb12121212_422_PACKED = 80 -YCbYCr12121212_422_PACKED = 81 -CrYCbY12121212_422_PACKED = 82 -CbYCrY12121212_422_PACKED = 83 -RGB111110_FIX = 112 -BGR101111_FIX = 113 -ACrYCb2101010 = 114 -CrYCbA1010102 = 115 -RGBE = 116 -RGB111110_FLOAT = 118 -BGR101111_FLOAT = 119 -MONO_8 = 120 -MONO_10MSB = 121 -MONO_10LSB = 122 -MONO_12MSB = 123 -MONO_12LSB = 124 -MONO_16 = 125 -SURFACE_PIXEL_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'XNORM' -XNORM__enumvalues = { - 0: 'XNORM_A', - 1: 'XNORM_B', -} -XNORM_A = 0 -XNORM_B = 1 -XNORM = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_ENABLE' -CUR_ENABLE__enumvalues = { - 0: 'CUR_DIS', - 1: 'CUR_EN', -} -CUR_DIS = 0 -CUR_EN = 1 -CUR_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_EXPAND_MODE' -CUR_EXPAND_MODE__enumvalues = { - 0: 'CUR_DYNAMIC_EXPANSION', - 1: 'CUR_ZERO_EXPANSION', -} -CUR_DYNAMIC_EXPANSION = 0 -CUR_ZERO_EXPANSION = 1 -CUR_EXPAND_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_INV_CLAMP' -CUR_INV_CLAMP__enumvalues = { - 0: 'CUR_CLAMP_DIS', - 1: 'CUR_CLAMP_EN', -} -CUR_CLAMP_DIS = 0 -CUR_CLAMP_EN = 1 -CUR_INV_CLAMP = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_MATRIX_COEF_FORMAT_ENUM' -CUR_MATRIX_COEF_FORMAT_ENUM__enumvalues = { - 0: 'CUR_MATRIX_FIX_S2_13', - 1: 'CUR_MATRIX_FIX_S3_12', -} -CUR_MATRIX_FIX_S2_13 = 0 -CUR_MATRIX_FIX_S3_12 = 1 -CUR_MATRIX_COEF_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_MODE' -CUR_MODE__enumvalues = { - 0: 'MONO_2BIT', - 1: 'COLOR_24BIT_1BIT_AND', - 2: 'COLOR_24BIT_8BIT_ALPHA_PREMULT', - 3: 'COLOR_24BIT_8BIT_ALPHA_UNPREMULT', - 4: 'COLOR_64BIT_FP_PREMULT', - 5: 'COLOR_64BIT_FP_UNPREMULT', -} -MONO_2BIT = 0 -COLOR_24BIT_1BIT_AND = 1 -COLOR_24BIT_8BIT_ALPHA_PREMULT = 2 -COLOR_24BIT_8BIT_ALPHA_UNPREMULT = 3 -COLOR_64BIT_FP_PREMULT = 4 -COLOR_64BIT_FP_UNPREMULT = 5 -CUR_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_PENDING' -CUR_PENDING__enumvalues = { - 0: 'CUR_NOT_PENDING', - 1: 'CUR_YES_PENDING', -} -CUR_NOT_PENDING = 0 -CUR_YES_PENDING = 1 -CUR_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_ROM_EN' -CUR_ROM_EN__enumvalues = { - 0: 'CUR_FP_NO_ROM', - 1: 'CUR_FP_USE_ROM', -} -CUR_FP_NO_ROM = 0 -CUR_FP_USE_ROM = 1 -CUR_ROM_EN = ctypes.c_uint32 # enum - -# values for enumeration 'COEF_RAM_SELECT_RD' -COEF_RAM_SELECT_RD__enumvalues = { - 0: 'COEF_RAM_SELECT_BACK', - 1: 'COEF_RAM_SELECT_CURRENT', -} -COEF_RAM_SELECT_BACK = 0 -COEF_RAM_SELECT_CURRENT = 1 -COEF_RAM_SELECT_RD = ctypes.c_uint32 # enum - -# values for enumeration 'DSCL_MODE_SEL' -DSCL_MODE_SEL__enumvalues = { - 0: 'DSCL_MODE_SCALING_444_BYPASS', - 1: 'DSCL_MODE_SCALING_444_RGB_ENABLE', - 2: 'DSCL_MODE_SCALING_444_YCBCR_ENABLE', - 3: 'DSCL_MODE_SCALING_YCBCR_ENABLE', - 4: 'DSCL_MODE_LUMA_SCALING_BYPASS', - 5: 'DSCL_MODE_CHROMA_SCALING_BYPASS', - 6: 'DSCL_MODE_DSCL_BYPASS', -} -DSCL_MODE_SCALING_444_BYPASS = 0 -DSCL_MODE_SCALING_444_RGB_ENABLE = 1 -DSCL_MODE_SCALING_444_YCBCR_ENABLE = 2 -DSCL_MODE_SCALING_YCBCR_ENABLE = 3 -DSCL_MODE_LUMA_SCALING_BYPASS = 4 -DSCL_MODE_CHROMA_SCALING_BYPASS = 5 -DSCL_MODE_DSCL_BYPASS = 6 -DSCL_MODE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'ISHARP_FMT_MODE_ENUM' -ISHARP_FMT_MODE_ENUM__enumvalues = { - 0: 'ISHARP_FMT_MODE_0', - 1: 'ISHARP_FMT_MODE_1', -} -ISHARP_FMT_MODE_0 = 0 -ISHARP_FMT_MODE_1 = 1 -ISHARP_FMT_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'ISHARP_LBA_MODE_ENUM' -ISHARP_LBA_MODE_ENUM__enumvalues = { - 0: 'ISHARP_LBA_MODE_0', - 1: 'ISHARP_LBA_MODE_1', -} -ISHARP_LBA_MODE_0 = 0 -ISHARP_LBA_MODE_1 = 1 -ISHARP_LBA_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'ISHARP_NOISEDET_MODE_ENUM' -ISHARP_NOISEDET_MODE_ENUM__enumvalues = { - 0: 'ISHARP_NOISEDET_MODE_0', - 1: 'ISHARP_NOISEDET_MODE_1', - 2: 'ISHARP_NOISEDET_MODE_2', - 3: 'ISHARP_NOISEDET_MODE_3', -} -ISHARP_NOISEDET_MODE_0 = 0 -ISHARP_NOISEDET_MODE_1 = 1 -ISHARP_NOISEDET_MODE_2 = 2 -ISHARP_NOISEDET_MODE_3 = 3 -ISHARP_NOISEDET_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'LB_ALPHA_EN' -LB_ALPHA_EN__enumvalues = { - 0: 'LB_ALPHA_DISABLE', - 1: 'LB_ALPHA_ENABLE', -} -LB_ALPHA_DISABLE = 0 -LB_ALPHA_ENABLE = 1 -LB_ALPHA_EN = ctypes.c_uint32 # enum - -# values for enumeration 'LB_INTERLEAVE_EN' -LB_INTERLEAVE_EN__enumvalues = { - 0: 'LB_INTERLEAVE_DISABLE', - 1: 'LB_INTERLEAVE_ENABLE', -} -LB_INTERLEAVE_DISABLE = 0 -LB_INTERLEAVE_ENABLE = 1 -LB_INTERLEAVE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'LB_MEMORY_CONFIG' -LB_MEMORY_CONFIG__enumvalues = { - 0: 'LB_MEMORY_CONFIG_0', - 1: 'LB_MEMORY_CONFIG_1', - 2: 'LB_MEMORY_CONFIG_2', - 3: 'LB_MEMORY_CONFIG_3', -} -LB_MEMORY_CONFIG_0 = 0 -LB_MEMORY_CONFIG_1 = 1 -LB_MEMORY_CONFIG_2 = 2 -LB_MEMORY_CONFIG_3 = 3 -LB_MEMORY_CONFIG = ctypes.c_uint32 # enum - -# values for enumeration 'MATRIX_MODE_ENUM' -MATRIX_MODE_ENUM__enumvalues = { - 0: 'MATRIX_MODE_0', - 1: 'MATRIX_MODE_1', -} -MATRIX_MODE_0 = 0 -MATRIX_MODE_1 = 1 -MATRIX_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'OBUF_BYPASS_SEL' -OBUF_BYPASS_SEL__enumvalues = { - 0: 'OBUF_BYPASS_DIS', - 1: 'OBUF_BYPASS_EN', -} -OBUF_BYPASS_DIS = 0 -OBUF_BYPASS_EN = 1 -OBUF_BYPASS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OBUF_IS_HALF_RECOUT_WIDTH_SEL' -OBUF_IS_HALF_RECOUT_WIDTH_SEL__enumvalues = { - 0: 'OBUF_FULL_RECOUT', - 1: 'OBUF_HALF_RECOUT', -} -OBUF_FULL_RECOUT = 0 -OBUF_HALF_RECOUT = 1 -OBUF_IS_HALF_RECOUT_WIDTH_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OBUF_USE_FULL_BUFFER_SEL' -OBUF_USE_FULL_BUFFER_SEL__enumvalues = { - 0: 'OBUF_RECOUT', - 1: 'OBUF_FULL', -} -OBUF_RECOUT = 0 -OBUF_FULL = 1 -OBUF_USE_FULL_BUFFER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_2TAP_HARDCODE' -SCL_2TAP_HARDCODE__enumvalues = { - 0: 'SCL_COEF_2TAP_HARDCODE_OFF', - 1: 'SCL_COEF_2TAP_HARDCODE_ON', -} -SCL_COEF_2TAP_HARDCODE_OFF = 0 -SCL_COEF_2TAP_HARDCODE_ON = 1 -SCL_2TAP_HARDCODE = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_ALPHA_COEF' -SCL_ALPHA_COEF__enumvalues = { - 0: 'SCL_ALPHA_COEF_FIRST', - 1: 'SCL_ALPHA_COEF_SECOND', -} -SCL_ALPHA_COEF_FIRST = 0 -SCL_ALPHA_COEF_SECOND = 1 -SCL_ALPHA_COEF = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_AUTOCAL_MODE' -SCL_AUTOCAL_MODE__enumvalues = { - 0: 'AUTOCAL_MODE_OFF', - 1: 'AUTOCAL_MODE_AUTOSCALE', - 2: 'AUTOCAL_MODE_AUTOCENTER', - 3: 'AUTOCAL_MODE_AUTOREPLICATE', -} -AUTOCAL_MODE_OFF = 0 -AUTOCAL_MODE_AUTOSCALE = 1 -AUTOCAL_MODE_AUTOCENTER = 2 -AUTOCAL_MODE_AUTOREPLICATE = 3 -SCL_AUTOCAL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_BOUNDARY' -SCL_BOUNDARY__enumvalues = { - 0: 'SCL_BOUNDARY_EDGE', - 1: 'SCL_BOUNDARY_BLACK', -} -SCL_BOUNDARY_EDGE = 0 -SCL_BOUNDARY_BLACK = 1 -SCL_BOUNDARY = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_CHROMA_COEF' -SCL_CHROMA_COEF__enumvalues = { - 0: 'SCL_CHROMA_COEF_FIRST', - 1: 'SCL_CHROMA_COEF_SECOND', -} -SCL_CHROMA_COEF_FIRST = 0 -SCL_CHROMA_COEF_SECOND = 1 -SCL_CHROMA_COEF = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_COEF_FILTER_TYPE_SEL' -SCL_COEF_FILTER_TYPE_SEL__enumvalues = { - 0: 'SCL_COEF_LUMA_VERT_FILTER', - 1: 'SCL_COEF_LUMA_HORZ_FILTER', - 2: 'SCL_COEF_CHROMA_VERT_FILTER', - 3: 'SCL_COEF_CHROMA_HORZ_FILTER', - 4: 'SCL_COEF_SC_VERT_FILTER', - 5: 'SCL_COEF_SC_HORZ_FILTER', -} -SCL_COEF_LUMA_VERT_FILTER = 0 -SCL_COEF_LUMA_HORZ_FILTER = 1 -SCL_COEF_CHROMA_VERT_FILTER = 2 -SCL_COEF_CHROMA_HORZ_FILTER = 3 -SCL_COEF_SC_VERT_FILTER = 4 -SCL_COEF_SC_HORZ_FILTER = 5 -SCL_COEF_FILTER_TYPE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_COEF_RAM_SEL' -SCL_COEF_RAM_SEL__enumvalues = { - 0: 'SCL_COEF_RAM_SEL_0', - 1: 'SCL_COEF_RAM_SEL_1', -} -SCL_COEF_RAM_SEL_0 = 0 -SCL_COEF_RAM_SEL_1 = 1 -SCL_COEF_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_SHARP_EN' -SCL_SHARP_EN__enumvalues = { - 0: 'SCL_SHARP_DISABLE', - 1: 'SCL_SHARP_ENABLE', -} -SCL_SHARP_DISABLE = 0 -SCL_SHARP_ENABLE = 1 -SCL_SHARP_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_3DLUT_30BIT_ENUM' -CMC_3DLUT_30BIT_ENUM__enumvalues = { - 0: 'CMC_3DLUT_36BIT', - 1: 'CMC_3DLUT_30BIT', -} -CMC_3DLUT_36BIT = 0 -CMC_3DLUT_30BIT = 1 -CMC_3DLUT_30BIT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_3DLUT_RAM_SEL' -CMC_3DLUT_RAM_SEL__enumvalues = { - 0: 'CMC_RAM0_ACCESS', - 1: 'CMC_RAM1_ACCESS', - 2: 'CMC_RAM2_ACCESS', - 3: 'CMC_RAM3_ACCESS', -} -CMC_RAM0_ACCESS = 0 -CMC_RAM1_ACCESS = 1 -CMC_RAM2_ACCESS = 2 -CMC_RAM3_ACCESS = 3 -CMC_3DLUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_3DLUT_SIZE_ENUM' -CMC_3DLUT_SIZE_ENUM__enumvalues = { - 0: 'CMC_3DLUT_17CUBE', - 1: 'CMC_3DLUT_9CUBE', -} -CMC_3DLUT_17CUBE = 0 -CMC_3DLUT_9CUBE = 1 -CMC_3DLUT_SIZE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_LUT_2_CONFIG_ENUM' -CMC_LUT_2_CONFIG_ENUM__enumvalues = { - 0: 'CMC_LUT_2CFG_NO_MEMORY', - 1: 'CMC_LUT_2CFG_MEMORY_A', - 2: 'CMC_LUT_2CFG_MEMORY_B', -} -CMC_LUT_2CFG_NO_MEMORY = 0 -CMC_LUT_2CFG_MEMORY_A = 1 -CMC_LUT_2CFG_MEMORY_B = 2 -CMC_LUT_2_CONFIG_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_LUT_2_MODE_ENUM' -CMC_LUT_2_MODE_ENUM__enumvalues = { - 0: 'CMC_LUT_2_MODE_BYPASS', - 1: 'CMC_LUT_2_MODE_RAMA_LUT', - 2: 'CMC_LUT_2_MODE_RAMB_LUT', -} -CMC_LUT_2_MODE_BYPASS = 0 -CMC_LUT_2_MODE_RAMA_LUT = 1 -CMC_LUT_2_MODE_RAMB_LUT = 2 -CMC_LUT_2_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_LUT_NUM_SEG' -CMC_LUT_NUM_SEG__enumvalues = { - 0: 'CMC_SEGMENTS_1', - 1: 'CMC_SEGMENTS_2', - 2: 'CMC_SEGMENTS_4', - 3: 'CMC_SEGMENTS_8', - 4: 'CMC_SEGMENTS_16', - 5: 'CMC_SEGMENTS_32', - 6: 'CMC_SEGMENTS_64', - 7: 'CMC_SEGMENTS_128', -} -CMC_SEGMENTS_1 = 0 -CMC_SEGMENTS_2 = 1 -CMC_SEGMENTS_4 = 2 -CMC_SEGMENTS_8 = 3 -CMC_SEGMENTS_16 = 4 -CMC_SEGMENTS_32 = 5 -CMC_SEGMENTS_64 = 6 -CMC_SEGMENTS_128 = 7 -CMC_LUT_NUM_SEG = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_LUT_RAM_SEL' -CMC_LUT_RAM_SEL__enumvalues = { - 0: 'CMC_RAMA_ACCESS', - 1: 'CMC_RAMB_ACCESS', -} -CMC_RAMA_ACCESS = 0 -CMC_RAMB_ACCESS = 1 -CMC_LUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CM_BYPASS' -CM_BYPASS__enumvalues = { - 0: 'NON_BYPASS', - 1: 'BYPASS_EN', -} -NON_BYPASS = 0 -BYPASS_EN = 1 -CM_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'CM_COEF_FORMAT_ENUM' -CM_COEF_FORMAT_ENUM__enumvalues = { - 0: 'FIX_S2_13', - 1: 'FIX_S3_12', -} -FIX_S2_13 = 0 -FIX_S3_12 = 1 -CM_COEF_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_DATA_SIGNED' -CM_DATA_SIGNED__enumvalues = { - 0: 'UNSIGNED', - 1: 'SIGNED', -} -UNSIGNED = 0 -SIGNED = 1 -CM_DATA_SIGNED = ctypes.c_uint32 # enum - -# values for enumeration 'CM_EN' -CM_EN__enumvalues = { - 0: 'CM_DISABLE', - 1: 'CM_ENABLE', -} -CM_DISABLE = 0 -CM_ENABLE = 1 -CM_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CM_GAMMA_LUT_MODE_ENUM' -CM_GAMMA_LUT_MODE_ENUM__enumvalues = { - 0: 'BYPASS', - 1: 'RESERVED_1', - 2: 'RAM_LUT', - 3: 'RESERVED_3', -} -BYPASS = 0 -RESERVED_1 = 1 -RAM_LUT = 2 -RESERVED_3 = 3 -CM_GAMMA_LUT_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_GAMMA_LUT_PWL_DISABLE_ENUM' -CM_GAMMA_LUT_PWL_DISABLE_ENUM__enumvalues = { - 0: 'ENABLE_PWL', - 1: 'DISABLE_PWL', -} -ENABLE_PWL = 0 -DISABLE_PWL = 1 -CM_GAMMA_LUT_PWL_DISABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_GAMMA_LUT_SEL_ENUM' -CM_GAMMA_LUT_SEL_ENUM__enumvalues = { - 0: 'RAMA', - 1: 'RAMB', -} -RAMA = 0 -RAMB = 1 -CM_GAMMA_LUT_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_2_CONFIG_ENUM' -CM_LUT_2_CONFIG_ENUM__enumvalues = { - 0: 'LUT_2CFG_NO_MEMORY', - 1: 'LUT_2CFG_MEMORY_A', - 2: 'LUT_2CFG_MEMORY_B', -} -LUT_2CFG_NO_MEMORY = 0 -LUT_2CFG_MEMORY_A = 1 -LUT_2CFG_MEMORY_B = 2 -CM_LUT_2_CONFIG_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_2_MODE_ENUM' -CM_LUT_2_MODE_ENUM__enumvalues = { - 0: 'LUT_2_MODE_BYPASS', - 1: 'LUT_2_MODE_RAMA_LUT', - 2: 'LUT_2_MODE_RAMB_LUT', -} -LUT_2_MODE_BYPASS = 0 -LUT_2_MODE_RAMA_LUT = 1 -LUT_2_MODE_RAMB_LUT = 2 -CM_LUT_2_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_4_CONFIG_ENUM' -CM_LUT_4_CONFIG_ENUM__enumvalues = { - 0: 'LUT_4CFG_NO_MEMORY', - 1: 'LUT_4CFG_ROM_A', - 2: 'LUT_4CFG_ROM_B', - 3: 'LUT_4CFG_MEMORY_A', - 4: 'LUT_4CFG_MEMORY_B', -} -LUT_4CFG_NO_MEMORY = 0 -LUT_4CFG_ROM_A = 1 -LUT_4CFG_ROM_B = 2 -LUT_4CFG_MEMORY_A = 3 -LUT_4CFG_MEMORY_B = 4 -CM_LUT_4_CONFIG_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_4_MODE_ENUM' -CM_LUT_4_MODE_ENUM__enumvalues = { - 0: 'LUT_4_MODE_BYPASS', - 1: 'LUT_4_MODE_ROMA_LUT', - 2: 'LUT_4_MODE_ROMB_LUT', - 3: 'LUT_4_MODE_RAMA_LUT', - 4: 'LUT_4_MODE_RAMB_LUT', -} -LUT_4_MODE_BYPASS = 0 -LUT_4_MODE_ROMA_LUT = 1 -LUT_4_MODE_ROMB_LUT = 2 -LUT_4_MODE_RAMA_LUT = 3 -LUT_4_MODE_RAMB_LUT = 4 -CM_LUT_4_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_CONFIG_MODE' -CM_LUT_CONFIG_MODE__enumvalues = { - 0: 'DIFFERENT_RGB', - 1: 'ALL_USE_R', -} -DIFFERENT_RGB = 0 -ALL_USE_R = 1 -CM_LUT_CONFIG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_NUM_SEG' -CM_LUT_NUM_SEG__enumvalues = { - 0: 'SEGMENTS_1', - 1: 'SEGMENTS_2', - 2: 'SEGMENTS_4', - 3: 'SEGMENTS_8', - 4: 'SEGMENTS_16', - 5: 'SEGMENTS_32', - 6: 'SEGMENTS_64', - 7: 'SEGMENTS_128', -} -SEGMENTS_1 = 0 -SEGMENTS_2 = 1 -SEGMENTS_4 = 2 -SEGMENTS_8 = 3 -SEGMENTS_16 = 4 -SEGMENTS_32 = 5 -SEGMENTS_64 = 6 -SEGMENTS_128 = 7 -CM_LUT_NUM_SEG = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_RAM_SEL' -CM_LUT_RAM_SEL__enumvalues = { - 0: 'RAMA_ACCESS', - 1: 'RAMB_ACCESS', -} -RAMA_ACCESS = 0 -RAMB_ACCESS = 1 -CM_LUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_READ_COLOR_SEL' -CM_LUT_READ_COLOR_SEL__enumvalues = { - 0: 'BLUE_LUT', - 1: 'GREEN_LUT', - 2: 'RED_LUT', -} -BLUE_LUT = 0 -GREEN_LUT = 1 -RED_LUT = 2 -CM_LUT_READ_COLOR_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_READ_DBG' -CM_LUT_READ_DBG__enumvalues = { - 0: 'DISABLE_DEBUG', - 1: 'ENABLE_DEBUG', -} -DISABLE_DEBUG = 0 -ENABLE_DEBUG = 1 -CM_LUT_READ_DBG = ctypes.c_uint32 # enum - -# values for enumeration 'CM_PENDING' -CM_PENDING__enumvalues = { - 0: 'CM_NOT_PENDING', - 1: 'CM_YES_PENDING', -} -CM_NOT_PENDING = 0 -CM_YES_PENDING = 1 -CM_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'CM_POST_CSC_MODE_ENUM' -CM_POST_CSC_MODE_ENUM__enumvalues = { - 0: 'BYPASS_POST_CSC', - 1: 'COEF_POST_CSC', - 2: 'COEF_POST_CSC_B', -} -BYPASS_POST_CSC = 0 -COEF_POST_CSC = 1 -COEF_POST_CSC_B = 2 -CM_POST_CSC_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_WRITE_BASE_ONLY' -CM_WRITE_BASE_ONLY__enumvalues = { - 0: 'WRITE_BOTH', - 1: 'WRITE_BASE_ONLY', -} -WRITE_BOTH = 0 -WRITE_BASE_ONLY = 1 -CM_WRITE_BASE_ONLY = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_CUR_SEL' -CRC_CUR_SEL__enumvalues = { - 0: 'CRC_CUR_0', - 1: 'CRC_CUR_1', -} -CRC_CUR_0 = 0 -CRC_CUR_1 = 1 -CRC_CUR_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_INTERLACE_SEL' -CRC_INTERLACE_SEL__enumvalues = { - 0: 'CRC_INTERLACE_0', - 1: 'CRC_INTERLACE_1', - 2: 'CRC_INTERLACE_2', - 3: 'CRC_INTERLACE_3', -} -CRC_INTERLACE_0 = 0 -CRC_INTERLACE_1 = 1 -CRC_INTERLACE_2 = 2 -CRC_INTERLACE_3 = 3 -CRC_INTERLACE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_IN_PIX_SEL' -CRC_IN_PIX_SEL__enumvalues = { - 0: 'CRC_IN_PIX_0', - 1: 'CRC_IN_PIX_1', - 2: 'CRC_IN_PIX_2', - 3: 'CRC_IN_PIX_3', - 4: 'CRC_IN_PIX_4', - 5: 'CRC_IN_PIX_5', - 6: 'CRC_IN_PIX_6', - 7: 'CRC_IN_PIX_7', -} -CRC_IN_PIX_0 = 0 -CRC_IN_PIX_1 = 1 -CRC_IN_PIX_2 = 2 -CRC_IN_PIX_3 = 3 -CRC_IN_PIX_4 = 4 -CRC_IN_PIX_5 = 5 -CRC_IN_PIX_6 = 6 -CRC_IN_PIX_7 = 7 -CRC_IN_PIX_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_SRC_SEL' -CRC_SRC_SEL__enumvalues = { - 0: 'CRC_SRC_0', - 1: 'CRC_SRC_1', - 2: 'CRC_SRC_2', - 3: 'CRC_SRC_3', -} -CRC_SRC_0 = 0 -CRC_SRC_1 = 1 -CRC_SRC_2 = 2 -CRC_SRC_3 = 3 -CRC_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_STEREO_SEL' -CRC_STEREO_SEL__enumvalues = { - 0: 'CRC_STEREO_0', - 1: 'CRC_STEREO_1', - 2: 'CRC_STEREO_2', - 3: 'CRC_STEREO_3', -} -CRC_STEREO_0 = 0 -CRC_STEREO_1 = 1 -CRC_STEREO_2 = 2 -CRC_STEREO_3 = 3 -CRC_STEREO_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TEST_CLK_SEL' -TEST_CLK_SEL__enumvalues = { - 0: 'TEST_CLK_SEL_0', - 1: 'TEST_CLK_SEL_1', - 2: 'TEST_CLK_SEL_2', - 3: 'TEST_CLK_SEL_3', - 4: 'TEST_CLK_SEL_4', - 5: 'TEST_CLK_SEL_5', - 6: 'TEST_CLK_SEL_6', - 7: 'TEST_CLK_SEL_7', -} -TEST_CLK_SEL_0 = 0 -TEST_CLK_SEL_1 = 1 -TEST_CLK_SEL_2 = 2 -TEST_CLK_SEL_3 = 3 -TEST_CLK_SEL_4 = 4 -TEST_CLK_SEL_5 = 5 -TEST_CLK_SEL_6 = 6 -TEST_CLK_SEL_7 = 7 -TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_ACTIVE' -PERFCOUNTER_ACTIVE__enumvalues = { - 0: 'PERFCOUNTER_IS_IDLE', - 1: 'PERFCOUNTER_IS_ACTIVE', -} -PERFCOUNTER_IS_IDLE = 0 -PERFCOUNTER_IS_ACTIVE = 1 -PERFCOUNTER_ACTIVE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT0_STATE' -PERFCOUNTER_CNT0_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT0_STATE_RESET', - 1: 'PERFCOUNTER_CNT0_STATE_START', - 2: 'PERFCOUNTER_CNT0_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT0_STATE_HW', -} -PERFCOUNTER_CNT0_STATE_RESET = 0 -PERFCOUNTER_CNT0_STATE_START = 1 -PERFCOUNTER_CNT0_STATE_FREEZE = 2 -PERFCOUNTER_CNT0_STATE_HW = 3 -PERFCOUNTER_CNT0_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT1_STATE' -PERFCOUNTER_CNT1_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT1_STATE_RESET', - 1: 'PERFCOUNTER_CNT1_STATE_START', - 2: 'PERFCOUNTER_CNT1_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT1_STATE_HW', -} -PERFCOUNTER_CNT1_STATE_RESET = 0 -PERFCOUNTER_CNT1_STATE_START = 1 -PERFCOUNTER_CNT1_STATE_FREEZE = 2 -PERFCOUNTER_CNT1_STATE_HW = 3 -PERFCOUNTER_CNT1_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT2_STATE' -PERFCOUNTER_CNT2_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT2_STATE_RESET', - 1: 'PERFCOUNTER_CNT2_STATE_START', - 2: 'PERFCOUNTER_CNT2_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT2_STATE_HW', -} -PERFCOUNTER_CNT2_STATE_RESET = 0 -PERFCOUNTER_CNT2_STATE_START = 1 -PERFCOUNTER_CNT2_STATE_FREEZE = 2 -PERFCOUNTER_CNT2_STATE_HW = 3 -PERFCOUNTER_CNT2_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT3_STATE' -PERFCOUNTER_CNT3_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT3_STATE_RESET', - 1: 'PERFCOUNTER_CNT3_STATE_START', - 2: 'PERFCOUNTER_CNT3_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT3_STATE_HW', -} -PERFCOUNTER_CNT3_STATE_RESET = 0 -PERFCOUNTER_CNT3_STATE_START = 1 -PERFCOUNTER_CNT3_STATE_FREEZE = 2 -PERFCOUNTER_CNT3_STATE_HW = 3 -PERFCOUNTER_CNT3_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT4_STATE' -PERFCOUNTER_CNT4_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT4_STATE_RESET', - 1: 'PERFCOUNTER_CNT4_STATE_START', - 2: 'PERFCOUNTER_CNT4_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT4_STATE_HW', -} -PERFCOUNTER_CNT4_STATE_RESET = 0 -PERFCOUNTER_CNT4_STATE_START = 1 -PERFCOUNTER_CNT4_STATE_FREEZE = 2 -PERFCOUNTER_CNT4_STATE_HW = 3 -PERFCOUNTER_CNT4_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT5_STATE' -PERFCOUNTER_CNT5_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT5_STATE_RESET', - 1: 'PERFCOUNTER_CNT5_STATE_START', - 2: 'PERFCOUNTER_CNT5_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT5_STATE_HW', -} -PERFCOUNTER_CNT5_STATE_RESET = 0 -PERFCOUNTER_CNT5_STATE_START = 1 -PERFCOUNTER_CNT5_STATE_FREEZE = 2 -PERFCOUNTER_CNT5_STATE_HW = 3 -PERFCOUNTER_CNT5_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT6_STATE' -PERFCOUNTER_CNT6_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT6_STATE_RESET', - 1: 'PERFCOUNTER_CNT6_STATE_START', - 2: 'PERFCOUNTER_CNT6_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT6_STATE_HW', -} -PERFCOUNTER_CNT6_STATE_RESET = 0 -PERFCOUNTER_CNT6_STATE_START = 1 -PERFCOUNTER_CNT6_STATE_FREEZE = 2 -PERFCOUNTER_CNT6_STATE_HW = 3 -PERFCOUNTER_CNT6_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT7_STATE' -PERFCOUNTER_CNT7_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT7_STATE_RESET', - 1: 'PERFCOUNTER_CNT7_STATE_START', - 2: 'PERFCOUNTER_CNT7_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT7_STATE_HW', -} -PERFCOUNTER_CNT7_STATE_RESET = 0 -PERFCOUNTER_CNT7_STATE_START = 1 -PERFCOUNTER_CNT7_STATE_FREEZE = 2 -PERFCOUNTER_CNT7_STATE_HW = 3 -PERFCOUNTER_CNT7_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNTL_SEL' -PERFCOUNTER_CNTL_SEL__enumvalues = { - 0: 'PERFCOUNTER_CNTL_SEL_0', - 1: 'PERFCOUNTER_CNTL_SEL_1', - 2: 'PERFCOUNTER_CNTL_SEL_2', - 3: 'PERFCOUNTER_CNTL_SEL_3', - 4: 'PERFCOUNTER_CNTL_SEL_4', - 5: 'PERFCOUNTER_CNTL_SEL_5', - 6: 'PERFCOUNTER_CNTL_SEL_6', - 7: 'PERFCOUNTER_CNTL_SEL_7', -} -PERFCOUNTER_CNTL_SEL_0 = 0 -PERFCOUNTER_CNTL_SEL_1 = 1 -PERFCOUNTER_CNTL_SEL_2 = 2 -PERFCOUNTER_CNTL_SEL_3 = 3 -PERFCOUNTER_CNTL_SEL_4 = 4 -PERFCOUNTER_CNTL_SEL_5 = 5 -PERFCOUNTER_CNTL_SEL_6 = 6 -PERFCOUNTER_CNTL_SEL_7 = 7 -PERFCOUNTER_CNTL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNTOFF_START_DIS' -PERFCOUNTER_CNTOFF_START_DIS__enumvalues = { - 0: 'PERFCOUNTER_CNTOFF_START_ENABLE', - 1: 'PERFCOUNTER_CNTOFF_START_DISABLE', -} -PERFCOUNTER_CNTOFF_START_ENABLE = 0 -PERFCOUNTER_CNTOFF_START_DISABLE = 1 -PERFCOUNTER_CNTOFF_START_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_COUNTED_VALUE_TYPE' -PERFCOUNTER_COUNTED_VALUE_TYPE__enumvalues = { - 0: 'PERFCOUNTER_COUNTED_VALUE_TYPE_ACC', - 1: 'PERFCOUNTER_COUNTED_VALUE_TYPE_MAX', - 2: 'PERFCOUNTER_COUNTED_VALUE_TYPE_MIN', -} -PERFCOUNTER_COUNTED_VALUE_TYPE_ACC = 0 -PERFCOUNTER_COUNTED_VALUE_TYPE_MAX = 1 -PERFCOUNTER_COUNTED_VALUE_TYPE_MIN = 2 -PERFCOUNTER_COUNTED_VALUE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CVALUE_SEL' -PERFCOUNTER_CVALUE_SEL__enumvalues = { - 0: 'PERFCOUNTER_CVALUE_SEL_47_0', - 1: 'PERFCOUNTER_CVALUE_SEL_15_0', - 2: 'PERFCOUNTER_CVALUE_SEL_31_16', - 3: 'PERFCOUNTER_CVALUE_SEL_47_32', - 4: 'PERFCOUNTER_CVALUE_SEL_11_0', - 5: 'PERFCOUNTER_CVALUE_SEL_23_12', - 6: 'PERFCOUNTER_CVALUE_SEL_35_24', - 7: 'PERFCOUNTER_CVALUE_SEL_47_36', -} -PERFCOUNTER_CVALUE_SEL_47_0 = 0 -PERFCOUNTER_CVALUE_SEL_15_0 = 1 -PERFCOUNTER_CVALUE_SEL_31_16 = 2 -PERFCOUNTER_CVALUE_SEL_47_32 = 3 -PERFCOUNTER_CVALUE_SEL_11_0 = 4 -PERFCOUNTER_CVALUE_SEL_23_12 = 5 -PERFCOUNTER_CVALUE_SEL_35_24 = 6 -PERFCOUNTER_CVALUE_SEL_47_36 = 7 -PERFCOUNTER_CVALUE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_HW_CNTL_SEL' -PERFCOUNTER_HW_CNTL_SEL__enumvalues = { - 0: 'PERFCOUNTER_HW_CNTL_SEL_RUNEN', - 1: 'PERFCOUNTER_HW_CNTL_SEL_CNTOFF', -} -PERFCOUNTER_HW_CNTL_SEL_RUNEN = 0 -PERFCOUNTER_HW_CNTL_SEL_CNTOFF = 1 -PERFCOUNTER_HW_CNTL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_HW_STOP1_SEL' -PERFCOUNTER_HW_STOP1_SEL__enumvalues = { - 0: 'PERFCOUNTER_HW_STOP1_0', - 1: 'PERFCOUNTER_HW_STOP1_1', -} -PERFCOUNTER_HW_STOP1_0 = 0 -PERFCOUNTER_HW_STOP1_1 = 1 -PERFCOUNTER_HW_STOP1_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_HW_STOP2_SEL' -PERFCOUNTER_HW_STOP2_SEL__enumvalues = { - 0: 'PERFCOUNTER_HW_STOP2_0', - 1: 'PERFCOUNTER_HW_STOP2_1', -} -PERFCOUNTER_HW_STOP2_0 = 0 -PERFCOUNTER_HW_STOP2_1 = 1 -PERFCOUNTER_HW_STOP2_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_INC_MODE' -PERFCOUNTER_INC_MODE__enumvalues = { - 0: 'PERFCOUNTER_INC_MODE_MULTI_BIT', - 1: 'PERFCOUNTER_INC_MODE_BOTH_EDGE', - 2: 'PERFCOUNTER_INC_MODE_LSB', - 3: 'PERFCOUNTER_INC_MODE_POS_EDGE', - 4: 'PERFCOUNTER_INC_MODE_NEG_EDGE', -} -PERFCOUNTER_INC_MODE_MULTI_BIT = 0 -PERFCOUNTER_INC_MODE_BOTH_EDGE = 1 -PERFCOUNTER_INC_MODE_LSB = 2 -PERFCOUNTER_INC_MODE_POS_EDGE = 3 -PERFCOUNTER_INC_MODE_NEG_EDGE = 4 -PERFCOUNTER_INC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_INT_EN' -PERFCOUNTER_INT_EN__enumvalues = { - 0: 'PERFCOUNTER_INT_DISABLE', - 1: 'PERFCOUNTER_INT_ENABLE', -} -PERFCOUNTER_INT_DISABLE = 0 -PERFCOUNTER_INT_ENABLE = 1 -PERFCOUNTER_INT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_INT_TYPE' -PERFCOUNTER_INT_TYPE__enumvalues = { - 0: 'PERFCOUNTER_INT_TYPE_LEVEL', - 1: 'PERFCOUNTER_INT_TYPE_PULSE', -} -PERFCOUNTER_INT_TYPE_LEVEL = 0 -PERFCOUNTER_INT_TYPE_PULSE = 1 -PERFCOUNTER_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_OFF_MASK' -PERFCOUNTER_OFF_MASK__enumvalues = { - 0: 'PERFCOUNTER_OFF_MASK_DISABLE', - 1: 'PERFCOUNTER_OFF_MASK_ENABLE', -} -PERFCOUNTER_OFF_MASK_DISABLE = 0 -PERFCOUNTER_OFF_MASK_ENABLE = 1 -PERFCOUNTER_OFF_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_RESTART_EN' -PERFCOUNTER_RESTART_EN__enumvalues = { - 0: 'PERFCOUNTER_RESTART_DISABLE', - 1: 'PERFCOUNTER_RESTART_ENABLE', -} -PERFCOUNTER_RESTART_DISABLE = 0 -PERFCOUNTER_RESTART_ENABLE = 1 -PERFCOUNTER_RESTART_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_RUNEN_MODE' -PERFCOUNTER_RUNEN_MODE__enumvalues = { - 0: 'PERFCOUNTER_RUNEN_MODE_LEVEL', - 1: 'PERFCOUNTER_RUNEN_MODE_EDGE', -} -PERFCOUNTER_RUNEN_MODE_LEVEL = 0 -PERFCOUNTER_RUNEN_MODE_EDGE = 1 -PERFCOUNTER_RUNEN_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL0' -PERFCOUNTER_STATE_SEL0__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL0_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL0_LOCAL', -} -PERFCOUNTER_STATE_SEL0_GLOBAL = 0 -PERFCOUNTER_STATE_SEL0_LOCAL = 1 -PERFCOUNTER_STATE_SEL0 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL1' -PERFCOUNTER_STATE_SEL1__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL1_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL1_LOCAL', -} -PERFCOUNTER_STATE_SEL1_GLOBAL = 0 -PERFCOUNTER_STATE_SEL1_LOCAL = 1 -PERFCOUNTER_STATE_SEL1 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL2' -PERFCOUNTER_STATE_SEL2__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL2_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL2_LOCAL', -} -PERFCOUNTER_STATE_SEL2_GLOBAL = 0 -PERFCOUNTER_STATE_SEL2_LOCAL = 1 -PERFCOUNTER_STATE_SEL2 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL3' -PERFCOUNTER_STATE_SEL3__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL3_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL3_LOCAL', -} -PERFCOUNTER_STATE_SEL3_GLOBAL = 0 -PERFCOUNTER_STATE_SEL3_LOCAL = 1 -PERFCOUNTER_STATE_SEL3 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL4' -PERFCOUNTER_STATE_SEL4__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL4_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL4_LOCAL', -} -PERFCOUNTER_STATE_SEL4_GLOBAL = 0 -PERFCOUNTER_STATE_SEL4_LOCAL = 1 -PERFCOUNTER_STATE_SEL4 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL5' -PERFCOUNTER_STATE_SEL5__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL5_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL5_LOCAL', -} -PERFCOUNTER_STATE_SEL5_GLOBAL = 0 -PERFCOUNTER_STATE_SEL5_LOCAL = 1 -PERFCOUNTER_STATE_SEL5 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL6' -PERFCOUNTER_STATE_SEL6__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL6_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL6_LOCAL', -} -PERFCOUNTER_STATE_SEL6_GLOBAL = 0 -PERFCOUNTER_STATE_SEL6_LOCAL = 1 -PERFCOUNTER_STATE_SEL6 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL7' -PERFCOUNTER_STATE_SEL7__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL7_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL7_LOCAL', -} -PERFCOUNTER_STATE_SEL7_GLOBAL = 0 -PERFCOUNTER_STATE_SEL7_LOCAL = 1 -PERFCOUNTER_STATE_SEL7 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_CNTOFF_AND_OR' -PERFMON_CNTOFF_AND_OR__enumvalues = { - 0: 'PERFMON_CNTOFF_OR', - 1: 'PERFMON_CNTOFF_AND', -} -PERFMON_CNTOFF_OR = 0 -PERFMON_CNTOFF_AND = 1 -PERFMON_CNTOFF_AND_OR = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_CNTOFF_INT_EN' -PERFMON_CNTOFF_INT_EN__enumvalues = { - 0: 'PERFMON_CNTOFF_INT_DISABLE', - 1: 'PERFMON_CNTOFF_INT_ENABLE', -} -PERFMON_CNTOFF_INT_DISABLE = 0 -PERFMON_CNTOFF_INT_ENABLE = 1 -PERFMON_CNTOFF_INT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_CNTOFF_INT_TYPE' -PERFMON_CNTOFF_INT_TYPE__enumvalues = { - 0: 'PERFMON_CNTOFF_INT_TYPE_LEVEL', - 1: 'PERFMON_CNTOFF_INT_TYPE_PULSE', -} -PERFMON_CNTOFF_INT_TYPE_LEVEL = 0 -PERFMON_CNTOFF_INT_TYPE_PULSE = 1 -PERFMON_CNTOFF_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_STATE' -PERFMON_STATE__enumvalues = { - 0: 'PERFMON_STATE_RESET', - 1: 'PERFMON_STATE_START', - 2: 'PERFMON_STATE_FREEZE', - 3: 'PERFMON_STATE_HW', -} -PERFMON_STATE_RESET = 0 -PERFMON_STATE_START = 1 -PERFMON_STATE_FREEZE = 2 -PERFMON_STATE_HW = 3 -PERFMON_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'BIGK_FRAGMENT_SIZE' -BIGK_FRAGMENT_SIZE__enumvalues = { - 0: 'VM_PG_SIZE_4KB', - 1: 'VM_PG_SIZE_8KB', - 2: 'VM_PG_SIZE_16KB', - 3: 'VM_PG_SIZE_32KB', - 4: 'VM_PG_SIZE_64KB', - 5: 'VM_PG_SIZE_128KB', - 6: 'VM_PG_SIZE_256KB', - 7: 'VM_PG_SIZE_512KB', - 8: 'VM_PG_SIZE_1MB', - 9: 'VM_PG_SIZE_2MB', - 10: 'VM_PG_SIZE_4MB', - 11: 'VM_PG_SIZE_8MB', - 12: 'VM_PG_SIZE_16MB', - 13: 'VM_PG_SIZE_32MB', - 14: 'VM_PG_SIZE_64MB', - 15: 'VM_PG_SIZE_128MB', -} -VM_PG_SIZE_4KB = 0 -VM_PG_SIZE_8KB = 1 -VM_PG_SIZE_16KB = 2 -VM_PG_SIZE_32KB = 3 -VM_PG_SIZE_64KB = 4 -VM_PG_SIZE_128KB = 5 -VM_PG_SIZE_256KB = 6 -VM_PG_SIZE_512KB = 7 -VM_PG_SIZE_1MB = 8 -VM_PG_SIZE_2MB = 9 -VM_PG_SIZE_4MB = 10 -VM_PG_SIZE_8MB = 11 -VM_PG_SIZE_16MB = 12 -VM_PG_SIZE_32MB = 13 -VM_PG_SIZE_64MB = 14 -VM_PG_SIZE_128MB = 15 -BIGK_FRAGMENT_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'CHUNK_SIZE' -CHUNK_SIZE__enumvalues = { - 0: 'CHUNK_SIZE_1KB', - 1: 'CHUNK_SIZE_2KB', - 2: 'CHUNK_SIZE_4KB', - 3: 'CHUNK_SIZE_8KB', - 4: 'CHUNK_SIZE_16KB', - 5: 'CHUNK_SIZE_32KB', - 6: 'CHUNK_SIZE_64KB', -} -CHUNK_SIZE_1KB = 0 -CHUNK_SIZE_2KB = 1 -CHUNK_SIZE_4KB = 2 -CHUNK_SIZE_8KB = 3 -CHUNK_SIZE_16KB = 4 -CHUNK_SIZE_32KB = 5 -CHUNK_SIZE_64KB = 6 -CHUNK_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'DPTE_GROUP_SIZE' -DPTE_GROUP_SIZE__enumvalues = { - 0: 'DPTE_GROUP_SIZE_64B', - 1: 'DPTE_GROUP_SIZE_128B', - 2: 'DPTE_GROUP_SIZE_256B', - 3: 'DPTE_GROUP_SIZE_512B', - 4: 'DPTE_GROUP_SIZE_1024B', - 5: 'DPTE_GROUP_SIZE_2048B', -} -DPTE_GROUP_SIZE_64B = 0 -DPTE_GROUP_SIZE_128B = 1 -DPTE_GROUP_SIZE_256B = 2 -DPTE_GROUP_SIZE_512B = 3 -DPTE_GROUP_SIZE_1024B = 4 -DPTE_GROUP_SIZE_2048B = 5 -DPTE_GROUP_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'FORCE_ONE_ROW_FOR_FRAME' -FORCE_ONE_ROW_FOR_FRAME__enumvalues = { - 0: 'FORCE_ONE_ROW_FOR_FRAME_0', - 1: 'FORCE_ONE_ROW_FOR_FRAME_1', -} -FORCE_ONE_ROW_FOR_FRAME_0 = 0 -FORCE_ONE_ROW_FOR_FRAME_1 = 1 -FORCE_ONE_ROW_FOR_FRAME = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_BLANK_EN' -HUBP_BLANK_EN__enumvalues = { - 0: 'HUBP_BLANK_SW_DEASSERT', - 1: 'HUBP_BLANK_SW_ASSERT', -} -HUBP_BLANK_SW_DEASSERT = 0 -HUBP_BLANK_SW_ASSERT = 1 -HUBP_BLANK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_IN_BLANK' -HUBP_IN_BLANK__enumvalues = { - 0: 'HUBP_IN_ACTIVE', - 1: 'HUBP_IN_VBLANK', -} -HUBP_IN_ACTIVE = 0 -HUBP_IN_VBLANK = 1 -HUBP_IN_BLANK = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_MEASURE_WIN_MODE_DCFCLK' -HUBP_MEASURE_WIN_MODE_DCFCLK__enumvalues = { - 0: 'HUBP_MEASURE_WIN_MODE_DCFCLK_0', - 1: 'HUBP_MEASURE_WIN_MODE_DCFCLK_1', - 2: 'HUBP_MEASURE_WIN_MODE_DCFCLK_2', - 3: 'HUBP_MEASURE_WIN_MODE_DCFCLK_3', -} -HUBP_MEASURE_WIN_MODE_DCFCLK_0 = 0 -HUBP_MEASURE_WIN_MODE_DCFCLK_1 = 1 -HUBP_MEASURE_WIN_MODE_DCFCLK_2 = 2 -HUBP_MEASURE_WIN_MODE_DCFCLK_3 = 3 -HUBP_MEASURE_WIN_MODE_DCFCLK = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_NO_OUTSTANDING_REQ' -HUBP_NO_OUTSTANDING_REQ__enumvalues = { - 0: 'OUTSTANDING_REQ', - 1: 'NO_OUTSTANDING_REQ', -} -OUTSTANDING_REQ = 0 -NO_OUTSTANDING_REQ = 1 -HUBP_NO_OUTSTANDING_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_SOFT_RESET' -HUBP_SOFT_RESET__enumvalues = { - 0: 'HUBP_SOFT_RESET_ON', - 1: 'HUBP_SOFT_RESET_OFF', -} -HUBP_SOFT_RESET_ON = 0 -HUBP_SOFT_RESET_OFF = 1 -HUBP_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_TTU_DISABLE' -HUBP_TTU_DISABLE__enumvalues = { - 0: 'HUBP_TTU_ENABLED', - 1: 'HUBP_TTU_DISABLED', -} -HUBP_TTU_ENABLED = 0 -HUBP_TTU_DISABLED = 1 -HUBP_TTU_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_VREADY_AT_OR_AFTER_VSYNC' -HUBP_VREADY_AT_OR_AFTER_VSYNC__enumvalues = { - 0: 'VREADY_BEFORE_VSYNC', - 1: 'VREADY_AT_OR_AFTER_VSYNC', -} -VREADY_BEFORE_VSYNC = 0 -VREADY_AT_OR_AFTER_VSYNC = 1 -HUBP_VREADY_AT_OR_AFTER_VSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_VTG_SEL' -HUBP_VTG_SEL__enumvalues = { - 0: 'VTG_SEL_0', - 1: 'VTG_SEL_1', - 2: 'VTG_SEL_2', - 3: 'VTG_SEL_3', - 4: 'VTG_SEL_4', - 5: 'VTG_SEL_5', -} -VTG_SEL_0 = 0 -VTG_SEL_1 = 1 -VTG_SEL_2 = 2 -VTG_SEL_3 = 3 -VTG_SEL_4 = 4 -VTG_SEL_5 = 5 -HUBP_VTG_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'H_MIRROR_EN' -H_MIRROR_EN__enumvalues = { - 0: 'HW_MIRRORING_DISABLE', - 1: 'HW_MIRRORING_ENABLE', -} -HW_MIRRORING_DISABLE = 0 -HW_MIRRORING_ENABLE = 1 -H_MIRROR_EN = ctypes.c_uint32 # enum - -# values for enumeration 'LEGACY_PIPE_INTERLEAVE' -LEGACY_PIPE_INTERLEAVE__enumvalues = { - 0: 'LEGACY_PIPE_INTERLEAVE_256B', - 1: 'LEGACY_PIPE_INTERLEAVE_512B', -} -LEGACY_PIPE_INTERLEAVE_256B = 0 -LEGACY_PIPE_INTERLEAVE_512B = 1 -LEGACY_PIPE_INTERLEAVE = ctypes.c_uint32 # enum - -# values for enumeration 'META_CHUNK_SIZE' -META_CHUNK_SIZE__enumvalues = { - 0: 'META_CHUNK_SIZE_1KB', - 1: 'META_CHUNK_SIZE_2KB', - 2: 'META_CHUNK_SIZE_4KB', - 3: 'META_CHUNK_SIZE_8KB', -} -META_CHUNK_SIZE_1KB = 0 -META_CHUNK_SIZE_2KB = 1 -META_CHUNK_SIZE_4KB = 2 -META_CHUNK_SIZE_8KB = 3 -META_CHUNK_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'META_LINEAR' -META_LINEAR__enumvalues = { - 0: 'META_SURF_TILED', - 1: 'META_SURF_LINEAR', -} -META_SURF_TILED = 0 -META_SURF_LINEAR = 1 -META_LINEAR = ctypes.c_uint32 # enum - -# values for enumeration 'MIN_CHUNK_SIZE' -MIN_CHUNK_SIZE__enumvalues = { - 0: 'NO_MIN_CHUNK_SIZE', - 1: 'MIN_CHUNK_SIZE_256B', - 2: 'MIN_CHUNK_SIZE_512B', - 3: 'MIN_CHUNK_SIZE_1024B', -} -NO_MIN_CHUNK_SIZE = 0 -MIN_CHUNK_SIZE_256B = 1 -MIN_CHUNK_SIZE_512B = 2 -MIN_CHUNK_SIZE_1024B = 3 -MIN_CHUNK_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'MIN_META_CHUNK_SIZE' -MIN_META_CHUNK_SIZE__enumvalues = { - 0: 'NO_MIN_META_CHUNK_SIZE', - 1: 'MIN_META_CHUNK_SIZE_64B', - 2: 'MIN_META_CHUNK_SIZE_128B', - 3: 'MIN_META_CHUNK_SIZE_256B', -} -NO_MIN_META_CHUNK_SIZE = 0 -MIN_META_CHUNK_SIZE_64B = 1 -MIN_META_CHUNK_SIZE_128B = 2 -MIN_META_CHUNK_SIZE_256B = 3 -MIN_META_CHUNK_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_ALIGNED' -PIPE_ALIGNED__enumvalues = { - 0: 'PIPE_UNALIGNED_SURF', - 1: 'PIPE_ALIGNED_SURF', -} -PIPE_UNALIGNED_SURF = 0 -PIPE_ALIGNED_SURF = 1 -PIPE_ALIGNED = ctypes.c_uint32 # enum - -# values for enumeration 'PTE_BUFFER_MODE' -PTE_BUFFER_MODE__enumvalues = { - 0: 'PTE_BUFFER_MODE_0', - 1: 'PTE_BUFFER_MODE_1', -} -PTE_BUFFER_MODE_0 = 0 -PTE_BUFFER_MODE_1 = 1 -PTE_BUFFER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PTE_ROW_HEIGHT_LINEAR' -PTE_ROW_HEIGHT_LINEAR__enumvalues = { - 0: 'PTE_ROW_HEIGHT_LINEAR_8L', - 1: 'PTE_ROW_HEIGHT_LINEAR_16L', - 2: 'PTE_ROW_HEIGHT_LINEAR_32L', - 3: 'PTE_ROW_HEIGHT_LINEAR_64L', - 4: 'PTE_ROW_HEIGHT_LINEAR_128L', - 5: 'PTE_ROW_HEIGHT_LINEAR_256L', - 6: 'PTE_ROW_HEIGHT_LINEAR_512L', - 7: 'PTE_ROW_HEIGHT_LINEAR_1024L', -} -PTE_ROW_HEIGHT_LINEAR_8L = 0 -PTE_ROW_HEIGHT_LINEAR_16L = 1 -PTE_ROW_HEIGHT_LINEAR_32L = 2 -PTE_ROW_HEIGHT_LINEAR_64L = 3 -PTE_ROW_HEIGHT_LINEAR_128L = 4 -PTE_ROW_HEIGHT_LINEAR_256L = 5 -PTE_ROW_HEIGHT_LINEAR_512L = 6 -PTE_ROW_HEIGHT_LINEAR_1024L = 7 -PTE_ROW_HEIGHT_LINEAR = ctypes.c_uint32 # enum - -# values for enumeration 'ROTATION_ANGLE' -ROTATION_ANGLE__enumvalues = { - 0: 'ROTATE_0_DEGREES', - 1: 'ROTATE_90_DEGREES', - 2: 'ROTATE_180_DEGREES', - 3: 'ROTATE_270_DEGREES', -} -ROTATE_0_DEGREES = 0 -ROTATE_90_DEGREES = 1 -ROTATE_180_DEGREES = 2 -ROTATE_270_DEGREES = 3 -ROTATION_ANGLE = ctypes.c_uint32 # enum - -# values for enumeration 'SWATH_HEIGHT' -SWATH_HEIGHT__enumvalues = { - 0: 'SWATH_HEIGHT_1L', - 1: 'SWATH_HEIGHT_2L', - 2: 'SWATH_HEIGHT_4L', - 3: 'SWATH_HEIGHT_8L', - 4: 'SWATH_HEIGHT_16L', -} -SWATH_HEIGHT_1L = 0 -SWATH_HEIGHT_2L = 1 -SWATH_HEIGHT_4L = 2 -SWATH_HEIGHT_8L = 3 -SWATH_HEIGHT_16L = 4 -SWATH_HEIGHT = ctypes.c_uint32 # enum - -# values for enumeration 'VMPG_SIZE' -VMPG_SIZE__enumvalues = { - 0: 'VMPG_SIZE_4KB', - 1: 'VMPG_SIZE_64KB', -} -VMPG_SIZE_4KB = 0 -VMPG_SIZE_64KB = 1 -VMPG_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'VM_GROUP_SIZE' -VM_GROUP_SIZE__enumvalues = { - 0: 'VM_GROUP_SIZE_64B', - 1: 'VM_GROUP_SIZE_128B', - 2: 'VM_GROUP_SIZE_256B', - 3: 'VM_GROUP_SIZE_512B', - 4: 'VM_GROUP_SIZE_1024B', - 5: 'VM_GROUP_SIZE_2048B', -} -VM_GROUP_SIZE_64B = 0 -VM_GROUP_SIZE_128B = 1 -VM_GROUP_SIZE_256B = 2 -VM_GROUP_SIZE_512B = 3 -VM_GROUP_SIZE_1024B = 4 -VM_GROUP_SIZE_2048B = 5 -VM_GROUP_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'DFQ_MIN_FREE_ENTRIES' -DFQ_MIN_FREE_ENTRIES__enumvalues = { - 0: 'DFQ_MIN_FREE_ENTRIES_0', - 1: 'DFQ_MIN_FREE_ENTRIES_1', - 2: 'DFQ_MIN_FREE_ENTRIES_2', - 3: 'DFQ_MIN_FREE_ENTRIES_3', - 4: 'DFQ_MIN_FREE_ENTRIES_4', - 5: 'DFQ_MIN_FREE_ENTRIES_5', - 6: 'DFQ_MIN_FREE_ENTRIES_6', - 7: 'DFQ_MIN_FREE_ENTRIES_7', -} -DFQ_MIN_FREE_ENTRIES_0 = 0 -DFQ_MIN_FREE_ENTRIES_1 = 1 -DFQ_MIN_FREE_ENTRIES_2 = 2 -DFQ_MIN_FREE_ENTRIES_3 = 3 -DFQ_MIN_FREE_ENTRIES_4 = 4 -DFQ_MIN_FREE_ENTRIES_5 = 5 -DFQ_MIN_FREE_ENTRIES_6 = 6 -DFQ_MIN_FREE_ENTRIES_7 = 7 -DFQ_MIN_FREE_ENTRIES = ctypes.c_uint32 # enum - -# values for enumeration 'DFQ_NUM_ENTRIES' -DFQ_NUM_ENTRIES__enumvalues = { - 0: 'DFQ_NUM_ENTRIES_0', - 1: 'DFQ_NUM_ENTRIES_1', - 2: 'DFQ_NUM_ENTRIES_2', - 3: 'DFQ_NUM_ENTRIES_3', - 4: 'DFQ_NUM_ENTRIES_4', - 5: 'DFQ_NUM_ENTRIES_5', - 6: 'DFQ_NUM_ENTRIES_6', - 7: 'DFQ_NUM_ENTRIES_7', - 8: 'DFQ_NUM_ENTRIES_8', -} -DFQ_NUM_ENTRIES_0 = 0 -DFQ_NUM_ENTRIES_1 = 1 -DFQ_NUM_ENTRIES_2 = 2 -DFQ_NUM_ENTRIES_3 = 3 -DFQ_NUM_ENTRIES_4 = 4 -DFQ_NUM_ENTRIES_5 = 5 -DFQ_NUM_ENTRIES_6 = 6 -DFQ_NUM_ENTRIES_7 = 7 -DFQ_NUM_ENTRIES_8 = 8 -DFQ_NUM_ENTRIES = ctypes.c_uint32 # enum - -# values for enumeration 'DFQ_SIZE' -DFQ_SIZE__enumvalues = { - 0: 'DFQ_SIZE_0', - 1: 'DFQ_SIZE_1', - 2: 'DFQ_SIZE_2', - 3: 'DFQ_SIZE_3', - 4: 'DFQ_SIZE_4', - 5: 'DFQ_SIZE_5', - 6: 'DFQ_SIZE_6', - 7: 'DFQ_SIZE_7', -} -DFQ_SIZE_0 = 0 -DFQ_SIZE_1 = 1 -DFQ_SIZE_2 = 2 -DFQ_SIZE_3 = 3 -DFQ_SIZE_4 = 4 -DFQ_SIZE_5 = 5 -DFQ_SIZE_6 = 6 -DFQ_SIZE_7 = 7 -DFQ_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_VM_DONE' -DMDATA_VM_DONE__enumvalues = { - 0: 'DMDATA_VM_IS_NOT_DONE', - 1: 'DMDATA_VM_IS_DONE', -} -DMDATA_VM_IS_NOT_DONE = 0 -DMDATA_VM_IS_DONE = 1 -DMDATA_VM_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'EXPANSION_MODE' -EXPANSION_MODE__enumvalues = { - 0: 'EXPANSION_MODE_ZERO', - 1: 'EXPANSION_MODE_CONSERVATIVE', - 2: 'EXPANSION_MODE_OPTIMAL', -} -EXPANSION_MODE_ZERO = 0 -EXPANSION_MODE_CONSERVATIVE = 1 -EXPANSION_MODE_OPTIMAL = 2 -EXPANSION_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FLIP_RATE' -FLIP_RATE__enumvalues = { - 0: 'FLIP_RATE_0', - 1: 'FLIP_RATE_1', - 2: 'FLIP_RATE_2', - 3: 'FLIP_RATE_3', - 4: 'FLIP_RATE_4', - 5: 'FLIP_RATE_5', - 6: 'FLIP_RATE_6', - 7: 'FLIP_RATE_7', -} -FLIP_RATE_0 = 0 -FLIP_RATE_1 = 1 -FLIP_RATE_2 = 2 -FLIP_RATE_3 = 3 -FLIP_RATE_4 = 4 -FLIP_RATE_5 = 5 -FLIP_RATE_6 = 6 -FLIP_RATE_7 = 7 -FLIP_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'INT_MASK' -INT_MASK__enumvalues = { - 0: 'INT_DISABLED', - 1: 'INT_ENABLED', -} -INT_DISABLED = 0 -INT_ENABLED = 1 -INT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_IN_FLUSH_URGENT' -PIPE_IN_FLUSH_URGENT__enumvalues = { - 0: 'PIPE_IN_FLUSH_URGENT_ENABLE', - 1: 'PIPE_IN_FLUSH_URGENT_DISABLE', -} -PIPE_IN_FLUSH_URGENT_ENABLE = 0 -PIPE_IN_FLUSH_URGENT_DISABLE = 1 -PIPE_IN_FLUSH_URGENT = ctypes.c_uint32 # enum - -# values for enumeration 'PRQ_MRQ_FLUSH_URGENT' -PRQ_MRQ_FLUSH_URGENT__enumvalues = { - 0: 'PRQ_MRQ_FLUSH_URGENT_ENABLE', - 1: 'PRQ_MRQ_FLUSH_URGENT_DISABLE', -} -PRQ_MRQ_FLUSH_URGENT_ENABLE = 0 -PRQ_MRQ_FLUSH_URGENT_DISABLE = 1 -PRQ_MRQ_FLUSH_URGENT = ctypes.c_uint32 # enum - -# values for enumeration 'ROW_TTU_MODE' -ROW_TTU_MODE__enumvalues = { - 0: 'END_OF_ROW_MODE', - 1: 'WATERMARK_MODE', -} -END_OF_ROW_MODE = 0 -WATERMARK_MODE = 1 -ROW_TTU_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_DCC' -SURFACE_DCC__enumvalues = { - 0: 'SURFACE_IS_NOT_DCC', - 1: 'SURFACE_IS_DCC', -} -SURFACE_IS_NOT_DCC = 0 -SURFACE_IS_DCC = 1 -SURFACE_DCC = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_DCC_IND_128B' -SURFACE_DCC_IND_128B__enumvalues = { - 0: 'SURFACE_DCC_IS_NOT_IND_128B', - 1: 'SURFACE_DCC_IS_IND_128B', -} -SURFACE_DCC_IS_NOT_IND_128B = 0 -SURFACE_DCC_IS_IND_128B = 1 -SURFACE_DCC_IND_128B = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_DCC_IND_64B' -SURFACE_DCC_IND_64B__enumvalues = { - 0: 'SURFACE_DCC_IS_NOT_IND_64B', - 1: 'SURFACE_DCC_IS_IND_64B', -} -SURFACE_DCC_IS_NOT_IND_64B = 0 -SURFACE_DCC_IS_IND_64B = 1 -SURFACE_DCC_IND_64B = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_DCC_IND_BLK' -SURFACE_DCC_IND_BLK__enumvalues = { - 0: 'SURFACE_DCC_BLOCK_IS_UNCONSTRAINED', - 1: 'SURFACE_DCC_BLOCK_IS_IND_64B', - 2: 'SURFACE_DCC_BLOCK_IS_IND_128B', - 3: 'SURFACE_DCC_BLOCK_IS_IND_64B_NO_128BCL', -} -SURFACE_DCC_BLOCK_IS_UNCONSTRAINED = 0 -SURFACE_DCC_BLOCK_IS_IND_64B = 1 -SURFACE_DCC_BLOCK_IS_IND_128B = 2 -SURFACE_DCC_BLOCK_IS_IND_64B_NO_128BCL = 3 -SURFACE_DCC_IND_BLK = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_AWAY_INT_TYPE' -SURFACE_FLIP_AWAY_INT_TYPE__enumvalues = { - 0: 'SURFACE_FLIP_AWAY_INT_LEVEL', - 1: 'SURFACE_FLIP_AWAY_INT_PULSE', -} -SURFACE_FLIP_AWAY_INT_LEVEL = 0 -SURFACE_FLIP_AWAY_INT_PULSE = 1 -SURFACE_FLIP_AWAY_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_EXEC_DEBUG_MODE' -SURFACE_FLIP_EXEC_DEBUG_MODE__enumvalues = { - 0: 'SURFACE_FLIP_EXEC_NORMAL_MODE', - 1: 'SURFACE_FLIP_EXEC_DEBUG_MODE_ENABLE', -} -SURFACE_FLIP_EXEC_NORMAL_MODE = 0 -SURFACE_FLIP_EXEC_DEBUG_MODE_ENABLE = 1 -SURFACE_FLIP_EXEC_DEBUG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_INT_TYPE' -SURFACE_FLIP_INT_TYPE__enumvalues = { - 0: 'SURFACE_FLIP_INT_LEVEL', - 1: 'SURFACE_FLIP_INT_PULSE', -} -SURFACE_FLIP_INT_LEVEL = 0 -SURFACE_FLIP_INT_PULSE = 1 -SURFACE_FLIP_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_IN_STEREOSYNC' -SURFACE_FLIP_IN_STEREOSYNC__enumvalues = { - 0: 'SURFACE_FLIP_NOT_IN_STEREOSYNC_MODE', - 1: 'SURFACE_FLIP_IN_STEREOSYNC_MODE', -} -SURFACE_FLIP_NOT_IN_STEREOSYNC_MODE = 0 -SURFACE_FLIP_IN_STEREOSYNC_MODE = 1 -SURFACE_FLIP_IN_STEREOSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_MODE_FOR_STEREOSYNC' -SURFACE_FLIP_MODE_FOR_STEREOSYNC__enumvalues = { - 0: 'FLIP_ANY_FRAME', - 1: 'FLIP_LEFT_EYE', - 2: 'FLIP_RIGHT_EYE', - 3: 'SURFACE_FLIP_MODE_FOR_STEREOSYNC_RESERVED', -} -FLIP_ANY_FRAME = 0 -FLIP_LEFT_EYE = 1 -FLIP_RIGHT_EYE = 2 -SURFACE_FLIP_MODE_FOR_STEREOSYNC_RESERVED = 3 -SURFACE_FLIP_MODE_FOR_STEREOSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_STEREO_SELECT_DISABLE' -SURFACE_FLIP_STEREO_SELECT_DISABLE__enumvalues = { - 0: 'SURFACE_FLIP_STEREO_SELECT_ENABLED', - 1: 'SURFACE_FLIP_STEREO_SELECT_DISABLED', -} -SURFACE_FLIP_STEREO_SELECT_ENABLED = 0 -SURFACE_FLIP_STEREO_SELECT_DISABLED = 1 -SURFACE_FLIP_STEREO_SELECT_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_STEREO_SELECT_POLARITY' -SURFACE_FLIP_STEREO_SELECT_POLARITY__enumvalues = { - 0: 'SURFACE_FLIP_STEREO_SELECT_POLARITY_NOT_INVERT', - 1: 'SURFACE_FLIP_STEREO_SELECT_POLARITY_INVERT', -} -SURFACE_FLIP_STEREO_SELECT_POLARITY_NOT_INVERT = 0 -SURFACE_FLIP_STEREO_SELECT_POLARITY_INVERT = 1 -SURFACE_FLIP_STEREO_SELECT_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_TYPE' -SURFACE_FLIP_TYPE__enumvalues = { - 0: 'SURFACE_V_FLIP', - 1: 'SURFACE_I_FLIP', -} -SURFACE_V_FLIP = 0 -SURFACE_I_FLIP = 1 -SURFACE_FLIP_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_VUPDATE_SKIP_NUM' -SURFACE_FLIP_VUPDATE_SKIP_NUM__enumvalues = { - 0: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_0', - 1: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_1', - 2: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_2', - 3: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_3', - 4: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_4', - 5: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_5', - 6: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_6', - 7: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_7', - 8: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_8', - 9: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_9', - 10: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_10', - 11: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_11', - 12: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_12', - 13: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_13', - 14: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_14', - 15: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_15', -} -SURFACE_FLIP_VUPDATE_SKIP_NUM_0 = 0 -SURFACE_FLIP_VUPDATE_SKIP_NUM_1 = 1 -SURFACE_FLIP_VUPDATE_SKIP_NUM_2 = 2 -SURFACE_FLIP_VUPDATE_SKIP_NUM_3 = 3 -SURFACE_FLIP_VUPDATE_SKIP_NUM_4 = 4 -SURFACE_FLIP_VUPDATE_SKIP_NUM_5 = 5 -SURFACE_FLIP_VUPDATE_SKIP_NUM_6 = 6 -SURFACE_FLIP_VUPDATE_SKIP_NUM_7 = 7 -SURFACE_FLIP_VUPDATE_SKIP_NUM_8 = 8 -SURFACE_FLIP_VUPDATE_SKIP_NUM_9 = 9 -SURFACE_FLIP_VUPDATE_SKIP_NUM_10 = 10 -SURFACE_FLIP_VUPDATE_SKIP_NUM_11 = 11 -SURFACE_FLIP_VUPDATE_SKIP_NUM_12 = 12 -SURFACE_FLIP_VUPDATE_SKIP_NUM_13 = 13 -SURFACE_FLIP_VUPDATE_SKIP_NUM_14 = 14 -SURFACE_FLIP_VUPDATE_SKIP_NUM_15 = 15 -SURFACE_FLIP_VUPDATE_SKIP_NUM = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_INUSE_RAED_NO_LATCH' -SURFACE_INUSE_RAED_NO_LATCH__enumvalues = { - 0: 'SURFACE_INUSE_IS_LATCHED', - 1: 'SURFACE_INUSE_IS_NOT_LATCHED', -} -SURFACE_INUSE_IS_LATCHED = 0 -SURFACE_INUSE_IS_NOT_LATCHED = 1 -SURFACE_INUSE_RAED_NO_LATCH = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_TMZ' -SURFACE_TMZ__enumvalues = { - 0: 'SURFACE_IS_NOT_TMZ', - 1: 'SURFACE_IS_TMZ', -} -SURFACE_IS_NOT_TMZ = 0 -SURFACE_IS_TMZ = 1 -SURFACE_TMZ = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_UPDATE_LOCK' -SURFACE_UPDATE_LOCK__enumvalues = { - 0: 'SURFACE_UPDATE_IS_UNLOCKED', - 1: 'SURFACE_UPDATE_IS_LOCKED', -} -SURFACE_UPDATE_IS_UNLOCKED = 0 -SURFACE_UPDATE_IS_LOCKED = 1 -SURFACE_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'CROSSBAR_FOR_ALPHA' -CROSSBAR_FOR_ALPHA__enumvalues = { - 0: 'ALPHA_DATA_ONTO_ALPHA_PORT', - 1: 'Y_G_DATA_ONTO_ALPHA_PORT', - 2: 'CB_B_DATA_ONTO_ALPHA_PORT', - 3: 'CR_R_DATA_ONTO_ALPHA_PORT', -} -ALPHA_DATA_ONTO_ALPHA_PORT = 0 -Y_G_DATA_ONTO_ALPHA_PORT = 1 -CB_B_DATA_ONTO_ALPHA_PORT = 2 -CR_R_DATA_ONTO_ALPHA_PORT = 3 -CROSSBAR_FOR_ALPHA = ctypes.c_uint32 # enum - -# values for enumeration 'CROSSBAR_FOR_CB_B' -CROSSBAR_FOR_CB_B__enumvalues = { - 0: 'ALPHA_DATA_ONTO_CB_B_PORT', - 1: 'Y_G_DATA_ONTO_CB_B_PORT', - 2: 'CB_B_DATA_ONTO_CB_B_PORT', - 3: 'CR_R_DATA_ONTO_CB_B_PORT', -} -ALPHA_DATA_ONTO_CB_B_PORT = 0 -Y_G_DATA_ONTO_CB_B_PORT = 1 -CB_B_DATA_ONTO_CB_B_PORT = 2 -CR_R_DATA_ONTO_CB_B_PORT = 3 -CROSSBAR_FOR_CB_B = ctypes.c_uint32 # enum - -# values for enumeration 'CROSSBAR_FOR_CR_R' -CROSSBAR_FOR_CR_R__enumvalues = { - 0: 'ALPHA_DATA_ONTO_CR_R_PORT', - 1: 'Y_G_DATA_ONTO_CR_R_PORT', - 2: 'CB_B_DATA_ONTO_CR_R_PORT', - 3: 'CR_R_DATA_ONTO_CR_R_PORT', -} -ALPHA_DATA_ONTO_CR_R_PORT = 0 -Y_G_DATA_ONTO_CR_R_PORT = 1 -CB_B_DATA_ONTO_CR_R_PORT = 2 -CR_R_DATA_ONTO_CR_R_PORT = 3 -CROSSBAR_FOR_CR_R = ctypes.c_uint32 # enum - -# values for enumeration 'CROSSBAR_FOR_Y_G' -CROSSBAR_FOR_Y_G__enumvalues = { - 0: 'ALPHA_DATA_ONTO_Y_G_PORT', - 1: 'Y_G_DATA_ONTO_Y_G_PORT', - 2: 'CB_B_DATA_ONTO_Y_G_PORT', - 3: 'CR_R_DATA_ONTO_Y_G_PORT', -} -ALPHA_DATA_ONTO_Y_G_PORT = 0 -Y_G_DATA_ONTO_Y_G_PORT = 1 -CB_B_DATA_ONTO_Y_G_PORT = 2 -CR_R_DATA_ONTO_Y_G_PORT = 3 -CROSSBAR_FOR_Y_G = ctypes.c_uint32 # enum - -# values for enumeration 'DETILE_BUFFER_PACKER_ENABLE' -DETILE_BUFFER_PACKER_ENABLE__enumvalues = { - 0: 'DETILE_BUFFER_PACKER_IS_DISABLE', - 1: 'DETILE_BUFFER_PACKER_IS_ENABLE', -} -DETILE_BUFFER_PACKER_IS_DISABLE = 0 -DETILE_BUFFER_PACKER_IS_ENABLE = 1 -DETILE_BUFFER_PACKER_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_DIS_MODE' -MEM_PWR_DIS_MODE__enumvalues = { - 0: 'MEM_POWER_DIS_MODE_ENABLE', - 1: 'MEM_POWER_DIS_MODE_DISABLE', -} -MEM_POWER_DIS_MODE_ENABLE = 0 -MEM_POWER_DIS_MODE_DISABLE = 1 -MEM_PWR_DIS_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_FORCE_MODE' -MEM_PWR_FORCE_MODE__enumvalues = { - 0: 'MEM_POWER_FORCE_MODE_OFF', - 1: 'MEM_POWER_FORCE_MODE_LIGHT_SLEEP', - 2: 'MEM_POWER_FORCE_MODE_DEEP_SLEEP', - 3: 'MEM_POWER_FORCE_MODE_SHUT_DOWN', -} -MEM_POWER_FORCE_MODE_OFF = 0 -MEM_POWER_FORCE_MODE_LIGHT_SLEEP = 1 -MEM_POWER_FORCE_MODE_DEEP_SLEEP = 2 -MEM_POWER_FORCE_MODE_SHUT_DOWN = 3 -MEM_PWR_FORCE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_STATUS' -MEM_PWR_STATUS__enumvalues = { - 0: 'MEM_POWER_STATUS_ON', - 1: 'MEM_POWER_STATUS_LIGHT_SLEEP', - 2: 'MEM_POWER_STATUS_DEEP_SLEEP', - 3: 'MEM_POWER_STATUS_SHUT_DOWN', -} -MEM_POWER_STATUS_ON = 0 -MEM_POWER_STATUS_LIGHT_SLEEP = 1 -MEM_POWER_STATUS_DEEP_SLEEP = 2 -MEM_POWER_STATUS_SHUT_DOWN = 3 -MEM_PWR_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_INT_MASK_MODE' -PIPE_INT_MASK_MODE__enumvalues = { - 0: 'PIPE_INT_MASK_MODE_DISABLE', - 1: 'PIPE_INT_MASK_MODE_ENABLE', -} -PIPE_INT_MASK_MODE_DISABLE = 0 -PIPE_INT_MASK_MODE_ENABLE = 1 -PIPE_INT_MASK_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_INT_TYPE_MODE' -PIPE_INT_TYPE_MODE__enumvalues = { - 0: 'PIPE_INT_TYPE_MODE_DISABLE', - 1: 'PIPE_INT_TYPE_MODE_ENABLE', -} -PIPE_INT_TYPE_MODE_DISABLE = 0 -PIPE_INT_TYPE_MODE_ENABLE = 1 -PIPE_INT_TYPE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PIXCDC_MEM_PWR_LIGHT_SLEEP_MODE' -PIXCDC_MEM_PWR_LIGHT_SLEEP_MODE__enumvalues = { - 0: 'PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 1: 'PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_1', -} -PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_OFF = 0 -PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_1 = 1 -PIXCDC_MEM_PWR_LIGHT_SLEEP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CROB_MEM_PWR_LIGHT_SLEEP_MODE' -CROB_MEM_PWR_LIGHT_SLEEP_MODE__enumvalues = { - 0: 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 1: 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_1', - 2: 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_2', -} -CROB_MEM_POWER_LIGHT_SLEEP_MODE_OFF = 0 -CROB_MEM_POWER_LIGHT_SLEEP_MODE_1 = 1 -CROB_MEM_POWER_LIGHT_SLEEP_MODE_2 = 2 -CROB_MEM_PWR_LIGHT_SLEEP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_2X_MAGNIFY' -CURSOR_2X_MAGNIFY__enumvalues = { - 0: 'CURSOR_2X_MAGNIFY_IS_DISABLE', - 1: 'CURSOR_2X_MAGNIFY_IS_ENABLE', -} -CURSOR_2X_MAGNIFY_IS_DISABLE = 0 -CURSOR_2X_MAGNIFY_IS_ENABLE = 1 -CURSOR_2X_MAGNIFY = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_ENABLE' -CURSOR_ENABLE__enumvalues = { - 0: 'CURSOR_IS_DISABLE', - 1: 'CURSOR_IS_ENABLE', -} -CURSOR_IS_DISABLE = 0 -CURSOR_IS_ENABLE = 1 -CURSOR_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_LINES_PER_CHUNK' -CURSOR_LINES_PER_CHUNK__enumvalues = { - 0: 'CURSOR_LINE_PER_CHUNK_1', - 1: 'CURSOR_LINE_PER_CHUNK_2', - 2: 'CURSOR_LINE_PER_CHUNK_4', - 3: 'CURSOR_LINE_PER_CHUNK_8', - 4: 'CURSOR_LINE_PER_CHUNK_16', -} -CURSOR_LINE_PER_CHUNK_1 = 0 -CURSOR_LINE_PER_CHUNK_2 = 1 -CURSOR_LINE_PER_CHUNK_4 = 2 -CURSOR_LINE_PER_CHUNK_8 = 3 -CURSOR_LINE_PER_CHUNK_16 = 4 -CURSOR_LINES_PER_CHUNK = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_MODE' -CURSOR_MODE__enumvalues = { - 0: 'CURSOR_MONO_2BIT', - 1: 'CURSOR_COLOR_24BIT_1BIT_AND', - 2: 'CURSOR_COLOR_24BIT_8BIT_ALPHA_PREMULT', - 3: 'CURSOR_COLOR_24BIT_8BIT_ALPHA_UNPREMULT', - 4: 'CURSOR_COLOR_64BIT_FP_PREMULT', - 5: 'CURSOR_COLOR_64BIT_FP_UNPREMULT', -} -CURSOR_MONO_2BIT = 0 -CURSOR_COLOR_24BIT_1BIT_AND = 1 -CURSOR_COLOR_24BIT_8BIT_ALPHA_PREMULT = 2 -CURSOR_COLOR_24BIT_8BIT_ALPHA_UNPREMULT = 3 -CURSOR_COLOR_64BIT_FP_PREMULT = 4 -CURSOR_COLOR_64BIT_FP_UNPREMULT = 5 -CURSOR_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_PERFMON_LATENCY_MEASURE_EN' -CURSOR_PERFMON_LATENCY_MEASURE_EN__enumvalues = { - 0: 'CURSOR_PERFMON_LATENCY_MEASURE_IS_DISABLED', - 1: 'CURSOR_PERFMON_LATENCY_MEASURE_IS_ENABLED', -} -CURSOR_PERFMON_LATENCY_MEASURE_IS_DISABLED = 0 -CURSOR_PERFMON_LATENCY_MEASURE_IS_ENABLED = 1 -CURSOR_PERFMON_LATENCY_MEASURE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_PERFMON_LATENCY_MEASURE_SEL' -CURSOR_PERFMON_LATENCY_MEASURE_SEL__enumvalues = { - 0: 'CURSOR_PERFMON_LATENCY_MEASURE_MC_LATENCY', - 1: 'CURSOR_PERFMON_LATENCY_MEASURE_CROB_LATENCY', -} -CURSOR_PERFMON_LATENCY_MEASURE_MC_LATENCY = 0 -CURSOR_PERFMON_LATENCY_MEASURE_CROB_LATENCY = 1 -CURSOR_PERFMON_LATENCY_MEASURE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_PITCH' -CURSOR_PITCH__enumvalues = { - 0: 'CURSOR_PITCH_64_PIXELS', - 1: 'CURSOR_PITCH_128_PIXELS', - 2: 'CURSOR_PITCH_256_PIXELS', -} -CURSOR_PITCH_64_PIXELS = 0 -CURSOR_PITCH_128_PIXELS = 1 -CURSOR_PITCH_256_PIXELS = 2 -CURSOR_PITCH = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_REQ_MODE' -CURSOR_REQ_MODE__enumvalues = { - 0: 'CURSOR_REQUEST_NORMALLY', - 1: 'CURSOR_REQUEST_EARLY', -} -CURSOR_REQUEST_NORMALLY = 0 -CURSOR_REQUEST_EARLY = 1 -CURSOR_REQ_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_SNOOP' -CURSOR_SNOOP__enumvalues = { - 0: 'CURSOR_IS_NOT_SNOOP', - 1: 'CURSOR_IS_SNOOP', -} -CURSOR_IS_NOT_SNOOP = 0 -CURSOR_IS_SNOOP = 1 -CURSOR_SNOOP = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_STEREO_EN' -CURSOR_STEREO_EN__enumvalues = { - 0: 'CURSOR_STEREO_IS_DISABLED', - 1: 'CURSOR_STEREO_IS_ENABLED', -} -CURSOR_STEREO_IS_DISABLED = 0 -CURSOR_STEREO_IS_ENABLED = 1 -CURSOR_STEREO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_SURFACE_TMZ' -CURSOR_SURFACE_TMZ__enumvalues = { - 0: 'CURSOR_SURFACE_IS_NOT_TMZ', - 1: 'CURSOR_SURFACE_IS_TMZ', -} -CURSOR_SURFACE_IS_NOT_TMZ = 0 -CURSOR_SURFACE_IS_TMZ = 1 -CURSOR_SURFACE_TMZ = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_SYSTEM' -CURSOR_SYSTEM__enumvalues = { - 0: 'CURSOR_IN_SYSTEM_PHYSICAL_ADDRESS', - 1: 'CURSOR_IN_GUEST_PHYSICAL_ADDRESS', -} -CURSOR_IN_SYSTEM_PHYSICAL_ADDRESS = 0 -CURSOR_IN_GUEST_PHYSICAL_ADDRESS = 1 -CURSOR_SYSTEM = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS' -CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS__enumvalues = { - 0: 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_0', - 1: 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_1', -} -CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_0 = 0 -CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_1 = 1 -CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_DONE' -DMDATA_DONE__enumvalues = { - 0: 'DMDATA_NOT_SENT_TO_DIG', - 1: 'DMDATA_SENT_TO_DIG', -} -DMDATA_NOT_SENT_TO_DIG = 0 -DMDATA_SENT_TO_DIG = 1 -DMDATA_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_MODE' -DMDATA_MODE__enumvalues = { - 0: 'DMDATA_SOFTWARE_UPDATE_MODE', - 1: 'DMDATA_HARDWARE_UPDATE_MODE', -} -DMDATA_SOFTWARE_UPDATE_MODE = 0 -DMDATA_HARDWARE_UPDATE_MODE = 1 -DMDATA_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_QOS_MODE' -DMDATA_QOS_MODE__enumvalues = { - 0: 'DMDATA_QOS_LEVEL_FROM_TTU', - 1: 'DMDATA_QOS_LEVEL_FROM_SOFTWARE', -} -DMDATA_QOS_LEVEL_FROM_TTU = 0 -DMDATA_QOS_LEVEL_FROM_SOFTWARE = 1 -DMDATA_QOS_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_REPEAT' -DMDATA_REPEAT__enumvalues = { - 0: 'DMDATA_USE_FOR_CURRENT_FRAME_ONLY', - 1: 'DMDATA_USE_FOR_CURRENT_AND_FUTURE_FRAMES', -} -DMDATA_USE_FOR_CURRENT_FRAME_ONLY = 0 -DMDATA_USE_FOR_CURRENT_AND_FUTURE_FRAMES = 1 -DMDATA_REPEAT = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_UNDERFLOW' -DMDATA_UNDERFLOW__enumvalues = { - 0: 'DMDATA_NOT_UNDERFLOW', - 1: 'DMDATA_UNDERFLOWED', -} -DMDATA_NOT_UNDERFLOW = 0 -DMDATA_UNDERFLOWED = 1 -DMDATA_UNDERFLOW = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_UNDERFLOW_CLEAR' -DMDATA_UNDERFLOW_CLEAR__enumvalues = { - 0: 'DMDATA_DONT_CLEAR', - 1: 'DMDATA_CLEAR_UNDERFLOW_STATUS', -} -DMDATA_DONT_CLEAR = 0 -DMDATA_CLEAR_UNDERFLOW_STATUS = 1 -DMDATA_UNDERFLOW_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_UPDATED' -DMDATA_UPDATED__enumvalues = { - 0: 'DMDATA_NOT_UPDATED', - 1: 'DMDATA_WAS_UPDATED', -} -DMDATA_NOT_UPDATED = 0 -DMDATA_WAS_UPDATED = 1 -DMDATA_UPDATED = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_3DLUT_ADDRESSING_MODE' -HUBP_3DLUT_ADDRESSING_MODE__enumvalues = { - 0: 'HUBP_3DLUT_SW_LINEAR', - 1: 'HUBP_3DLUT_SIMPLE_LINEAR', -} -HUBP_3DLUT_SW_LINEAR = 0 -HUBP_3DLUT_SIMPLE_LINEAR = 1 -HUBP_3DLUT_ADDRESSING_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'RESPONSE_STATUS' -RESPONSE_STATUS__enumvalues = { - 0: 'OKAY', - 1: 'EXOKAY', - 2: 'SLVERR', - 3: 'DECERR', - 4: 'EARLY', - 5: 'OKAY_NODATA', - 6: 'PROTVIOL', - 7: 'TRANSERR', - 8: 'CMPTO', - 12: 'CRS', -} -OKAY = 0 -EXOKAY = 1 -SLVERR = 2 -DECERR = 3 -EARLY = 4 -OKAY_NODATA = 5 -PROTVIOL = 6 -TRANSERR = 7 -CMPTO = 8 -CRS = 12 -RESPONSE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'DCHUBBUB_DET_MEM_PWR_LIGHT_SLEEP_MODE' -DCHUBBUB_DET_MEM_PWR_LIGHT_SLEEP_MODE__enumvalues = { - 0: 'DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 1: 'DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_1', - 2: 'DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_2', -} -DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_OFF = 0 -DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_1 = 1 -DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_2 = 2 -DCHUBBUB_DET_MEM_PWR_LIGHT_SLEEP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCHUBBUB_MEM_PWR_DIS_MODE' -DCHUBBUB_MEM_PWR_DIS_MODE__enumvalues = { - 0: 'DCHUBBUB_MEM_POWER_DIS_MODE_ENABLE', - 1: 'DCHUBBUB_MEM_POWER_DIS_MODE_DISABLE', -} -DCHUBBUB_MEM_POWER_DIS_MODE_ENABLE = 0 -DCHUBBUB_MEM_POWER_DIS_MODE_DISABLE = 1 -DCHUBBUB_MEM_PWR_DIS_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCHUBBUB_MEM_PWR_MODE' -DCHUBBUB_MEM_PWR_MODE__enumvalues = { - 0: 'DCHUBBUB_MEM_POWER_MODE_OFF', - 1: 'DCHUBBUB_MEM_POWER_MODE_LIGHT_SLEEP', - 2: 'DCHUBBUB_MEM_POWER_MODE_DEEP_SLEEP', - 3: 'DCHUBBUB_MEM_POWER_MODE_SHUT_DOWN', -} -DCHUBBUB_MEM_POWER_MODE_OFF = 0 -DCHUBBUB_MEM_POWER_MODE_LIGHT_SLEEP = 1 -DCHUBBUB_MEM_POWER_MODE_DEEP_SLEEP = 2 -DCHUBBUB_MEM_POWER_MODE_SHUT_DOWN = 3 -DCHUBBUB_MEM_PWR_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_3DLUT_FL_FORMAT' -MPC_CFG_3DLUT_FL_FORMAT__enumvalues = { - 0: 'MPC_CFG_3DLUT_FL_FORMAT_0', - 1: 'MPC_CFG_3DLUT_FL_FORMAT_1', - 2: 'MPC_CFG_3DLUT_FL_FORMAT_2', -} -MPC_CFG_3DLUT_FL_FORMAT_0 = 0 -MPC_CFG_3DLUT_FL_FORMAT_1 = 1 -MPC_CFG_3DLUT_FL_FORMAT_2 = 2 -MPC_CFG_3DLUT_FL_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_3DLUT_FL_MODE' -MPC_CFG_3DLUT_FL_MODE__enumvalues = { - 0: 'MPC_CFG_3DLUT_FL_MODE_0', - 1: 'MPC_CFG_3DLUT_FL_MODE_1', - 2: 'MPC_CFG_3DLUT_FL_MODE_2', - 3: 'MPC_CFG_3DLUT_FL_MODE_3', -} -MPC_CFG_3DLUT_FL_MODE_0 = 0 -MPC_CFG_3DLUT_FL_MODE_1 = 1 -MPC_CFG_3DLUT_FL_MODE_2 = 2 -MPC_CFG_3DLUT_FL_MODE_3 = 3 -MPC_CFG_3DLUT_FL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET' -MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET' -MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_ADR_VUPDATE_LOCK_SET' -MPC_CFG_ADR_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_ADR_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_ADR_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_ADR_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_ADR_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_ADR_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_CFG_VUPDATE_LOCK_SET' -MPC_CFG_CFG_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_CFG_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_CFG_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_CFG_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_CFG_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_CFG_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_CUR_VUPDATE_LOCK_SET' -MPC_CFG_CUR_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_CUR_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_CUR_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_CUR_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_CUR_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_CUR_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_MPC_TEST_CLK_SEL' -MPC_CFG_MPC_TEST_CLK_SEL__enumvalues = { - 0: 'MPC_CFG_MPC_TEST_CLK_SEL_0', - 1: 'MPC_CFG_MPC_TEST_CLK_SEL_1', - 2: 'MPC_CFG_MPC_TEST_CLK_SEL_2', - 3: 'MPC_CFG_MPC_TEST_CLK_SEL_3', -} -MPC_CFG_MPC_TEST_CLK_SEL_0 = 0 -MPC_CFG_MPC_TEST_CLK_SEL_1 = 1 -MPC_CFG_MPC_TEST_CLK_SEL_2 = 2 -MPC_CFG_MPC_TEST_CLK_SEL_3 = 3 -MPC_CFG_MPC_TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN' -MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN__enumvalues = { - 0: 'MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN_FALSE', - 1: 'MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN_TRUE', -} -MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN_FALSE = 0 -MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN_TRUE = 1 -MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CRC_CALC_INTERLACE_MODE' -MPC_CRC_CALC_INTERLACE_MODE__enumvalues = { - 0: 'MPC_CRC_INTERLACE_MODE_TOP', - 1: 'MPC_CRC_INTERLACE_MODE_BOTTOM', - 2: 'MPC_CRC_INTERLACE_MODE_BOTH_RESET_BOTTOM', - 3: 'MPC_CRC_INTERLACE_MODE_BOTH_RESET_EACH', -} -MPC_CRC_INTERLACE_MODE_TOP = 0 -MPC_CRC_INTERLACE_MODE_BOTTOM = 1 -MPC_CRC_INTERLACE_MODE_BOTH_RESET_BOTTOM = 2 -MPC_CRC_INTERLACE_MODE_BOTH_RESET_EACH = 3 -MPC_CRC_CALC_INTERLACE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CRC_CALC_MODE' -MPC_CRC_CALC_MODE__enumvalues = { - 0: 'MPC_CRC_ONE_SHOT_MODE', - 1: 'MPC_CRC_CONTINUOUS_MODE', -} -MPC_CRC_ONE_SHOT_MODE = 0 -MPC_CRC_CONTINUOUS_MODE = 1 -MPC_CRC_CALC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CRC_CALC_STEREO_MODE' -MPC_CRC_CALC_STEREO_MODE__enumvalues = { - 0: 'MPC_CRC_STEREO_MODE_LEFT', - 1: 'MPC_CRC_STEREO_MODE_RIGHT', - 2: 'MPC_CRC_STEREO_MODE_BOTH_RESET_RIGHT', - 3: 'MPC_CRC_STEREO_MODE_BOTH_RESET_EACH', -} -MPC_CRC_STEREO_MODE_LEFT = 0 -MPC_CRC_STEREO_MODE_RIGHT = 1 -MPC_CRC_STEREO_MODE_BOTH_RESET_RIGHT = 2 -MPC_CRC_STEREO_MODE_BOTH_RESET_EACH = 3 -MPC_CRC_CALC_STEREO_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CRC_SOURCE_SELECT' -MPC_CRC_SOURCE_SELECT__enumvalues = { - 0: 'MPC_CRC_SOURCE_SEL_DPP', - 1: 'MPC_CRC_SOURCE_SEL_OPP', - 2: 'MPC_CRC_SOURCE_SEL_DWB', - 3: 'MPC_CRC_SOURCE_SEL_OTHER', -} -MPC_CRC_SOURCE_SEL_DPP = 0 -MPC_CRC_SOURCE_SEL_OPP = 1 -MPC_CRC_SOURCE_SEL_DWB = 2 -MPC_CRC_SOURCE_SEL_OTHER = 3 -MPC_CRC_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_OCSC_COEF_FORMAT' -MPC_OCSC_COEF_FORMAT__enumvalues = { - 0: 'MPC_OCSC_COEF_FORMAT_S2_13', - 1: 'MPC_OCSC_COEF_FORMAT_S3_12', -} -MPC_OCSC_COEF_FORMAT_S2_13 = 0 -MPC_OCSC_COEF_FORMAT_S3_12 = 1 -MPC_OCSC_COEF_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN' -MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN__enumvalues = { - 0: 'MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN_FALSE', - 1: 'MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN_TRUE', -} -MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN_FALSE = 0 -MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN_TRUE = 1 -MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_OUT_CSC_MODE' -MPC_OUT_CSC_MODE__enumvalues = { - 0: 'MPC_OUT_CSC_MODE_0', - 1: 'MPC_OUT_CSC_MODE_1', - 2: 'MPC_OUT_CSC_MODE_2', - 3: 'MPC_OUT_CSC_MODE_RSV', -} -MPC_OUT_CSC_MODE_0 = 0 -MPC_OUT_CSC_MODE_1 = 1 -MPC_OUT_CSC_MODE_2 = 2 -MPC_OUT_CSC_MODE_RSV = 3 -MPC_OUT_CSC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_MODE' -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_MODE__enumvalues = { - 0: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_BYPASS', - 1: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_6BITS', - 2: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_8BITS', - 3: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_9BITS', - 4: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_10BITS', - 5: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_11BITS', - 6: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_12BITS', - 7: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_PASSTHROUGH', -} -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_BYPASS = 0 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_6BITS = 1 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_8BITS = 2 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_9BITS = 3 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_10BITS = 4 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_11BITS = 5 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_12BITS = 6 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_PASSTHROUGH = 7 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_OUT_RATE_CONTROL_DISABLE_SET' -MPC_OUT_RATE_CONTROL_DISABLE_SET__enumvalues = { - 0: 'MPC_OUT_RATE_CONTROL_SET_ENABLE', - 1: 'MPC_OUT_RATE_CONTROL_SET_DISABLE', -} -MPC_OUT_RATE_CONTROL_SET_ENABLE = 0 -MPC_OUT_RATE_CONTROL_SET_DISABLE = 1 -MPC_OUT_RATE_CONTROL_DISABLE_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_BG_COLOR_BPC' -MPCC_BG_COLOR_BPC__enumvalues = { - 0: 'MPCC_BG_COLOR_BPC_8bit', - 1: 'MPCC_BG_COLOR_BPC_9bit', - 2: 'MPCC_BG_COLOR_BPC_10bit', - 3: 'MPCC_BG_COLOR_BPC_11bit', - 4: 'MPCC_BG_COLOR_BPC_12bit', -} -MPCC_BG_COLOR_BPC_8bit = 0 -MPCC_BG_COLOR_BPC_9bit = 1 -MPCC_BG_COLOR_BPC_10bit = 2 -MPCC_BG_COLOR_BPC_11bit = 3 -MPCC_BG_COLOR_BPC_12bit = 4 -MPCC_BG_COLOR_BPC = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY' -MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_FALSE', - 1: 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_TRUE', -} -MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_FALSE = 0 -MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_TRUE = 1 -MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE' -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA', - 1: 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN', - 2: 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_GLOBAL_ALPHA', - 3: 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_UNUSED', -} -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA = 0 -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN = 1 -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_GLOBAL_ALPHA = 2 -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_UNUSED = 3 -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE' -MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_FALSE', - 1: 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_TRUE', -} -MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_FALSE = 0 -MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_TRUE = 1 -MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE' -MPCC_CONTROL_MPCC_BOT_GAIN_MODE__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE_0', - 1: 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE_1', -} -MPCC_CONTROL_MPCC_BOT_GAIN_MODE_0 = 0 -MPCC_CONTROL_MPCC_BOT_GAIN_MODE_1 = 1 -MPCC_CONTROL_MPCC_BOT_GAIN_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_MODE' -MPCC_CONTROL_MPCC_MODE__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_MODE_BYPASS', - 1: 'MPCC_CONTROL_MPCC_MODE_TOP_LAYER_PASSTHROUGH', - 2: 'MPCC_CONTROL_MPCC_MODE_TOP_LAYER_ONLY', - 3: 'MPCC_CONTROL_MPCC_MODE_TOP_BOT_BLENDING', -} -MPCC_CONTROL_MPCC_MODE_BYPASS = 0 -MPCC_CONTROL_MPCC_MODE_TOP_LAYER_PASSTHROUGH = 1 -MPCC_CONTROL_MPCC_MODE_TOP_LAYER_ONLY = 2 -MPCC_CONTROL_MPCC_MODE_TOP_BOT_BLENDING = 3 -MPCC_CONTROL_MPCC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_EN' -MPCC_SM_CONTROL_MPCC_SM_EN__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_EN_FALSE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_EN_TRUE', -} -MPCC_SM_CONTROL_MPCC_SM_EN_FALSE = 0 -MPCC_SM_CONTROL_MPCC_SM_EN_TRUE = 1 -MPCC_SM_CONTROL_MPCC_SM_EN = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT' -MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_FALSE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_TRUE', -} -MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_FALSE = 0 -MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_TRUE = 1 -MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL' -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_NO_FORCE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_RESERVED', - 2: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_LOW', - 3: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_HIGH', -} -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_NO_FORCE = 0 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_RESERVED = 1 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_LOW = 2 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_HIGH = 3 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL' -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_NO_FORCE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_RESERVED', - 2: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_LOW', - 3: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_HIGH', -} -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_NO_FORCE = 0 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_RESERVED = 1 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_LOW = 2 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_HIGH = 3 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT' -MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_FALSE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_TRUE', -} -MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_FALSE = 0 -MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_TRUE = 1 -MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_MODE' -MPCC_SM_CONTROL_MPCC_SM_MODE__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_MODE_SINGLE_PLANE', - 2: 'MPCC_SM_CONTROL_MPCC_SM_MODE_ROW_SUBSAMPLING', - 4: 'MPCC_SM_CONTROL_MPCC_SM_MODE_COLUMN_SUBSAMPLING', - 6: 'MPCC_SM_CONTROL_MPCC_SM_MODE_CHECKERBOARD_SUBSAMPLING', -} -MPCC_SM_CONTROL_MPCC_SM_MODE_SINGLE_PLANE = 0 -MPCC_SM_CONTROL_MPCC_SM_MODE_ROW_SUBSAMPLING = 2 -MPCC_SM_CONTROL_MPCC_SM_MODE_COLUMN_SUBSAMPLING = 4 -MPCC_SM_CONTROL_MPCC_SM_MODE_CHECKERBOARD_SUBSAMPLING = 6 -MPCC_SM_CONTROL_MPCC_SM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_GAMUT_REMAP_COEF_FORMAT_ENUM' -MPCC_GAMUT_REMAP_COEF_FORMAT_ENUM__enumvalues = { - 0: 'MPCC_GAMUT_REMAP_COEF_FORMAT_S2_13', - 1: 'MPCC_GAMUT_REMAP_COEF_FORMAT_S3_12', -} -MPCC_GAMUT_REMAP_COEF_FORMAT_S2_13 = 0 -MPCC_GAMUT_REMAP_COEF_FORMAT_S3_12 = 1 -MPCC_GAMUT_REMAP_COEF_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_GAMUT_REMAP_MODE_ENUM' -MPCC_GAMUT_REMAP_MODE_ENUM__enumvalues = { - 0: 'MPCC_GAMUT_REMAP_MODE_0', - 1: 'MPCC_GAMUT_REMAP_MODE_1', - 2: 'MPCC_GAMUT_REMAP_MODE_2', - 3: 'MPCC_GAMUT_REMAP_MODE_RSV', -} -MPCC_GAMUT_REMAP_MODE_0 = 0 -MPCC_GAMUT_REMAP_MODE_1 = 1 -MPCC_GAMUT_REMAP_MODE_2 = 2 -MPCC_GAMUT_REMAP_MODE_RSV = 3 -MPCC_GAMUT_REMAP_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_2_CONFIG_ENUM' -MPCC_OGAM_LUT_2_CONFIG_ENUM__enumvalues = { - 0: 'MPCC_OGAM_LUT_2CFG_NO_MEMORY', - 1: 'MPCC_OGAM_LUT_2CFG_MEMORY_A', - 2: 'MPCC_OGAM_LUT_2CFG_MEMORY_B', -} -MPCC_OGAM_LUT_2CFG_NO_MEMORY = 0 -MPCC_OGAM_LUT_2CFG_MEMORY_A = 1 -MPCC_OGAM_LUT_2CFG_MEMORY_B = 2 -MPCC_OGAM_LUT_2_CONFIG_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_CONFIG_MODE' -MPCC_OGAM_LUT_CONFIG_MODE__enumvalues = { - 0: 'MPCC_OGAM_DIFFERENT_RGB', - 1: 'MPCC_OGAM_ALL_USE_R', -} -MPCC_OGAM_DIFFERENT_RGB = 0 -MPCC_OGAM_ALL_USE_R = 1 -MPCC_OGAM_LUT_CONFIG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_PWL_DISABLE_ENUM' -MPCC_OGAM_LUT_PWL_DISABLE_ENUM__enumvalues = { - 0: 'MPCC_OGAM_ENABLE_PWL', - 1: 'MPCC_OGAM_DISABLE_PWL', -} -MPCC_OGAM_ENABLE_PWL = 0 -MPCC_OGAM_DISABLE_PWL = 1 -MPCC_OGAM_LUT_PWL_DISABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL' -MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL__enumvalues = { - 0: 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMA', - 1: 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMB', -} -MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMA = 0 -MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMB = 1 -MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_RAM_SEL' -MPCC_OGAM_LUT_RAM_SEL__enumvalues = { - 0: 'MPCC_OGAM_RAMA_ACCESS', - 1: 'MPCC_OGAM_RAMB_ACCESS', -} -MPCC_OGAM_RAMA_ACCESS = 0 -MPCC_OGAM_RAMB_ACCESS = 1 -MPCC_OGAM_LUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_READ_COLOR_SEL' -MPCC_OGAM_LUT_READ_COLOR_SEL__enumvalues = { - 0: 'MPCC_OGAM_BLUE_LUT', - 1: 'MPCC_OGAM_GREEN_LUT', - 2: 'MPCC_OGAM_RED_LUT', -} -MPCC_OGAM_BLUE_LUT = 0 -MPCC_OGAM_GREEN_LUT = 1 -MPCC_OGAM_RED_LUT = 2 -MPCC_OGAM_LUT_READ_COLOR_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_READ_DBG' -MPCC_OGAM_LUT_READ_DBG__enumvalues = { - 0: 'MPCC_OGAM_DISABLE_DEBUG', - 1: 'MPCC_OGAM_ENABLE_DEBUG', -} -MPCC_OGAM_DISABLE_DEBUG = 0 -MPCC_OGAM_ENABLE_DEBUG = 1 -MPCC_OGAM_LUT_READ_DBG = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_SEL_ENUM' -MPCC_OGAM_LUT_SEL_ENUM__enumvalues = { - 0: 'MPCC_OGAM_RAMA', - 1: 'MPCC_OGAM_RAMB', -} -MPCC_OGAM_RAMA = 0 -MPCC_OGAM_RAMB = 1 -MPCC_OGAM_LUT_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_MODE_MPCC_OGAM_MODE_ENUM' -MPCC_OGAM_MODE_MPCC_OGAM_MODE_ENUM__enumvalues = { - 0: 'MPCC_OGAM_MODE_0', - 1: 'MPCC_OGAM_MODE_RSV1', - 2: 'MPCC_OGAM_MODE_2', - 3: 'MPCC_OGAM_MODE_RSV', -} -MPCC_OGAM_MODE_0 = 0 -MPCC_OGAM_MODE_RSV1 = 1 -MPCC_OGAM_MODE_2 = 2 -MPCC_OGAM_MODE_RSV = 3 -MPCC_OGAM_MODE_MPCC_OGAM_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_NUM_SEG' -MPCC_OGAM_NUM_SEG__enumvalues = { - 0: 'MPCC_OGAM_SEGMENTS_1', - 1: 'MPCC_OGAM_SEGMENTS_2', - 2: 'MPCC_OGAM_SEGMENTS_4', - 3: 'MPCC_OGAM_SEGMENTS_8', - 4: 'MPCC_OGAM_SEGMENTS_16', - 5: 'MPCC_OGAM_SEGMENTS_32', - 6: 'MPCC_OGAM_SEGMENTS_64', - 7: 'MPCC_OGAM_SEGMENTS_128', -} -MPCC_OGAM_SEGMENTS_1 = 0 -MPCC_OGAM_SEGMENTS_2 = 1 -MPCC_OGAM_SEGMENTS_4 = 2 -MPCC_OGAM_SEGMENTS_8 = 3 -MPCC_OGAM_SEGMENTS_16 = 4 -MPCC_OGAM_SEGMENTS_32 = 5 -MPCC_OGAM_SEGMENTS_64 = 6 -MPCC_OGAM_SEGMENTS_128 = 7 -MPCC_OGAM_NUM_SEG = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN' -MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN__enumvalues = { - 0: 'MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN_FALSE', - 1: 'MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN_TRUE', -} -MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN_FALSE = 0 -MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN_TRUE = 1 -MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_3DLUT_30BIT_ENUM' -MPCC_MCM_3DLUT_30BIT_ENUM__enumvalues = { - 0: 'MPCC_MCM_3DLUT_36BIT', - 1: 'MPCC_MCM_3DLUT_30BIT', -} -MPCC_MCM_3DLUT_36BIT = 0 -MPCC_MCM_3DLUT_30BIT = 1 -MPCC_MCM_3DLUT_30BIT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_3DLUT_RAM_SEL' -MPCC_MCM_3DLUT_RAM_SEL__enumvalues = { - 0: 'MPCC_MCM_RAM0_ACCESS', - 1: 'MPCC_MCM_RAM1_ACCESS', - 2: 'MPCC_MCM_RAM2_ACCESS', - 3: 'MPCC_MCM_RAM3_ACCESS', -} -MPCC_MCM_RAM0_ACCESS = 0 -MPCC_MCM_RAM1_ACCESS = 1 -MPCC_MCM_RAM2_ACCESS = 2 -MPCC_MCM_RAM3_ACCESS = 3 -MPCC_MCM_3DLUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_3DLUT_SIZE_ENUM' -MPCC_MCM_3DLUT_SIZE_ENUM__enumvalues = { - 0: 'MPCC_MCM_3DLUT_17CUBE', - 1: 'MPCC_MCM_3DLUT_9CUBE', -} -MPCC_MCM_3DLUT_17CUBE = 0 -MPCC_MCM_3DLUT_9CUBE = 1 -MPCC_MCM_3DLUT_SIZE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_GAMMA_LUT_MODE_ENUM' -MPCC_MCM_GAMMA_LUT_MODE_ENUM__enumvalues = { - 0: 'MPCC_MCM_GAMMA_LUT_BYPASS', - 1: 'MPCC_MCM_GAMMA_LUT_RESERVED_1', - 2: 'MPCC_MCM_GAMMA_LUT_RAM_LUT', - 3: 'MPCC_MCM_GAMMA_LUT_RESERVED_3', -} -MPCC_MCM_GAMMA_LUT_BYPASS = 0 -MPCC_MCM_GAMMA_LUT_RESERVED_1 = 1 -MPCC_MCM_GAMMA_LUT_RAM_LUT = 2 -MPCC_MCM_GAMMA_LUT_RESERVED_3 = 3 -MPCC_MCM_GAMMA_LUT_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_GAMMA_LUT_PWL_DISABLE_ENUM' -MPCC_MCM_GAMMA_LUT_PWL_DISABLE_ENUM__enumvalues = { - 0: 'MPCC_MCM_GAMMA_LUT_ENABLE_PWL', - 1: 'MPCC_MCM_GAMMA_LUT_DISABLE_PWL', -} -MPCC_MCM_GAMMA_LUT_ENABLE_PWL = 0 -MPCC_MCM_GAMMA_LUT_DISABLE_PWL = 1 -MPCC_MCM_GAMMA_LUT_PWL_DISABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_GAMMA_LUT_SEL_ENUM' -MPCC_MCM_GAMMA_LUT_SEL_ENUM__enumvalues = { - 0: 'MPCC_MCM_GAMMA_LUT_RAMA', - 1: 'MPCC_MCM_GAMMA_LUT_RAMB', -} -MPCC_MCM_GAMMA_LUT_RAMA = 0 -MPCC_MCM_GAMMA_LUT_RAMB = 1 -MPCC_MCM_GAMMA_LUT_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_GAMUT_REMAP_COEF_FORMAT_ENUM' -MPCC_MCM_GAMUT_REMAP_COEF_FORMAT_ENUM__enumvalues = { - 0: 'MPCC_MCM_GAMUT_REMAP_COEF_FORMAT_S2_13', - 1: 'MPCC_MCM_GAMUT_REMAP_COEF_FORMAT_S3_12', -} -MPCC_MCM_GAMUT_REMAP_COEF_FORMAT_S2_13 = 0 -MPCC_MCM_GAMUT_REMAP_COEF_FORMAT_S3_12 = 1 -MPCC_MCM_GAMUT_REMAP_COEF_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_GAMUT_REMAP_MODE_ENUM' -MPCC_MCM_GAMUT_REMAP_MODE_ENUM__enumvalues = { - 0: 'MPCC_MCM_GAMUT_REMAP_MODE_0', - 1: 'MPCC_MCM_GAMUT_REMAP_MODE_1', - 2: 'MPCC_MCM_GAMUT_REMAP_MODE_2', - 3: 'MPCC_MCM_GAMUT_REMAP_MODE_RSV', -} -MPCC_MCM_GAMUT_REMAP_MODE_0 = 0 -MPCC_MCM_GAMUT_REMAP_MODE_1 = 1 -MPCC_MCM_GAMUT_REMAP_MODE_2 = 2 -MPCC_MCM_GAMUT_REMAP_MODE_RSV = 3 -MPCC_MCM_GAMUT_REMAP_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_LUT_2_MODE_ENUM' -MPCC_MCM_LUT_2_MODE_ENUM__enumvalues = { - 0: 'MPCC_MCM_LUT_2_MODE_BYPASS', - 1: 'MPCC_MCM_LUT_2_MODE_RAMA_LUT', - 2: 'MPCC_MCM_LUT_2_MODE_RAMB_LUT', -} -MPCC_MCM_LUT_2_MODE_BYPASS = 0 -MPCC_MCM_LUT_2_MODE_RAMA_LUT = 1 -MPCC_MCM_LUT_2_MODE_RAMB_LUT = 2 -MPCC_MCM_LUT_2_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_LUT_CONFIG_MODE' -MPCC_MCM_LUT_CONFIG_MODE__enumvalues = { - 0: 'MPCC_MCM_LUT_DIFFERENT_RGB', - 1: 'MPCC_MCM_LUT_ALL_USE_R', -} -MPCC_MCM_LUT_DIFFERENT_RGB = 0 -MPCC_MCM_LUT_ALL_USE_R = 1 -MPCC_MCM_LUT_CONFIG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_LUT_NUM_SEG' -MPCC_MCM_LUT_NUM_SEG__enumvalues = { - 0: 'MPCC_MCM_LUT_SEGMENTS_1', - 1: 'MPCC_MCM_LUT_SEGMENTS_2', - 2: 'MPCC_MCM_LUT_SEGMENTS_4', - 3: 'MPCC_MCM_LUT_SEGMENTS_8', - 4: 'MPCC_MCM_LUT_SEGMENTS_16', - 5: 'MPCC_MCM_LUT_SEGMENTS_32', - 6: 'MPCC_MCM_LUT_SEGMENTS_64', - 7: 'MPCC_MCM_LUT_SEGMENTS_128', -} -MPCC_MCM_LUT_SEGMENTS_1 = 0 -MPCC_MCM_LUT_SEGMENTS_2 = 1 -MPCC_MCM_LUT_SEGMENTS_4 = 2 -MPCC_MCM_LUT_SEGMENTS_8 = 3 -MPCC_MCM_LUT_SEGMENTS_16 = 4 -MPCC_MCM_LUT_SEGMENTS_32 = 5 -MPCC_MCM_LUT_SEGMENTS_64 = 6 -MPCC_MCM_LUT_SEGMENTS_128 = 7 -MPCC_MCM_LUT_NUM_SEG = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_LUT_RAM_SEL' -MPCC_MCM_LUT_RAM_SEL__enumvalues = { - 0: 'MPCC_MCM_LUT_RAMA_ACCESS', - 1: 'MPCC_MCM_LUT_RAMB_ACCESS', -} -MPCC_MCM_LUT_RAMA_ACCESS = 0 -MPCC_MCM_LUT_RAMB_ACCESS = 1 -MPCC_MCM_LUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_LUT_READ_COLOR_SEL' -MPCC_MCM_LUT_READ_COLOR_SEL__enumvalues = { - 0: 'MPCC_MCM_LUT_BLUE_LUT', - 1: 'MPCC_MCM_LUT_GREEN_LUT', - 2: 'MPCC_MCM_LUT_RED_LUT', -} -MPCC_MCM_LUT_BLUE_LUT = 0 -MPCC_MCM_LUT_GREEN_LUT = 1 -MPCC_MCM_LUT_RED_LUT = 2 -MPCC_MCM_LUT_READ_COLOR_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_LUT_READ_DBG' -MPCC_MCM_LUT_READ_DBG__enumvalues = { - 0: 'MPCC_MCM_LUT_DISABLE_DEBUG', - 1: 'MPCC_MCM_LUT_ENABLE_DEBUG', -} -MPCC_MCM_LUT_DISABLE_DEBUG = 0 -MPCC_MCM_LUT_ENABLE_DEBUG = 1 -MPCC_MCM_LUT_READ_DBG = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_MEM_PWR_FORCE_ENUM' -MPCC_MCM_MEM_PWR_FORCE_ENUM__enumvalues = { - 0: 'MPCC_MCM_MEM_PWR_FORCE_DIS', - 1: 'MPCC_MCM_MEM_PWR_FORCE_LS', - 2: 'MPCC_MCM_MEM_PWR_FORCE_DS', - 3: 'MPCC_MCM_MEM_PWR_FORCE_SD', -} -MPCC_MCM_MEM_PWR_FORCE_DIS = 0 -MPCC_MCM_MEM_PWR_FORCE_LS = 1 -MPCC_MCM_MEM_PWR_FORCE_DS = 2 -MPCC_MCM_MEM_PWR_FORCE_SD = 3 -MPCC_MCM_MEM_PWR_FORCE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_MEM_PWR_STATE_ENUM' -MPCC_MCM_MEM_PWR_STATE_ENUM__enumvalues = { - 0: 'MPCC_MCM_MEM_PWR_STATE_ON', - 1: 'MPCC_MCM_MEM_PWR_STATE_LS', - 2: 'MPCC_MCM_MEM_PWR_STATE_DS', - 3: 'MPCC_MCM_MEM_PWR_STATE_SD', -} -MPCC_MCM_MEM_PWR_STATE_ON = 0 -MPCC_MCM_MEM_PWR_STATE_LS = 1 -MPCC_MCM_MEM_PWR_STATE_DS = 2 -MPCC_MCM_MEM_PWR_STATE_SD = 3 -MPCC_MCM_MEM_PWR_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_BIT_DEPTH' -ENUM_DPG_BIT_DEPTH__enumvalues = { - 0: 'ENUM_DPG_BIT_DEPTH_6BPC', - 1: 'ENUM_DPG_BIT_DEPTH_8BPC', - 2: 'ENUM_DPG_BIT_DEPTH_10BPC', - 3: 'ENUM_DPG_BIT_DEPTH_12BPC', -} -ENUM_DPG_BIT_DEPTH_6BPC = 0 -ENUM_DPG_BIT_DEPTH_8BPC = 1 -ENUM_DPG_BIT_DEPTH_10BPC = 2 -ENUM_DPG_BIT_DEPTH_12BPC = 3 -ENUM_DPG_BIT_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_DYNAMIC_RANGE' -ENUM_DPG_DYNAMIC_RANGE__enumvalues = { - 0: 'ENUM_DPG_DYNAMIC_RANGE_VESA', - 1: 'ENUM_DPG_DYNAMIC_RANGE_CEA', -} -ENUM_DPG_DYNAMIC_RANGE_VESA = 0 -ENUM_DPG_DYNAMIC_RANGE_CEA = 1 -ENUM_DPG_DYNAMIC_RANGE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_EN' -ENUM_DPG_EN__enumvalues = { - 0: 'ENUM_DPG_DISABLE', - 1: 'ENUM_DPG_ENABLE', -} -ENUM_DPG_DISABLE = 0 -ENUM_DPG_ENABLE = 1 -ENUM_DPG_EN = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_FIELD_POLARITY' -ENUM_DPG_FIELD_POLARITY__enumvalues = { - 0: 'ENUM_DPG_FIELD_POLARITY_TOP_EVEN_BOTTOM_ODD', - 1: 'ENUM_DPG_FIELD_POLARITY_TOP_ODD_BOTTOM_EVEN', -} -ENUM_DPG_FIELD_POLARITY_TOP_EVEN_BOTTOM_ODD = 0 -ENUM_DPG_FIELD_POLARITY_TOP_ODD_BOTTOM_EVEN = 1 -ENUM_DPG_FIELD_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_MODE' -ENUM_DPG_MODE__enumvalues = { - 0: 'ENUM_DPG_MODE_RGB_COLOUR_BLOCK', - 1: 'ENUM_DPG_MODE_YCBCR_601_COLOUR_BLOCK', - 2: 'ENUM_DPG_MODE_YCBCR_709_COLOUR_BLOCK', - 3: 'ENUM_DPG_MODE_VERTICAL_BAR', - 4: 'ENUM_DPG_MODE_HORIZONTAL_BAR', - 5: 'ENUM_DPG_MODE_RGB_SINGLE_RAMP', - 6: 'ENUM_DPG_MODE_RGB_DUAL_RAMP', - 7: 'ENUM_DPG_MODE_RGB_XR_BIAS', -} -ENUM_DPG_MODE_RGB_COLOUR_BLOCK = 0 -ENUM_DPG_MODE_YCBCR_601_COLOUR_BLOCK = 1 -ENUM_DPG_MODE_YCBCR_709_COLOUR_BLOCK = 2 -ENUM_DPG_MODE_VERTICAL_BAR = 3 -ENUM_DPG_MODE_HORIZONTAL_BAR = 4 -ENUM_DPG_MODE_RGB_SINGLE_RAMP = 5 -ENUM_DPG_MODE_RGB_DUAL_RAMP = 6 -ENUM_DPG_MODE_RGB_XR_BIAS = 7 -ENUM_DPG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMTMEM_PWR_DIS_CTRL' -FMTMEM_PWR_DIS_CTRL__enumvalues = { - 0: 'FMTMEM_ENABLE_MEM_PWR_CTRL', - 1: 'FMTMEM_DISABLE_MEM_PWR_CTRL', -} -FMTMEM_ENABLE_MEM_PWR_CTRL = 0 -FMTMEM_DISABLE_MEM_PWR_CTRL = 1 -FMTMEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'FMTMEM_PWR_FORCE_CTRL' -FMTMEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'FMTMEM_NO_FORCE_REQUEST', - 1: 'FMTMEM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'FMTMEM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'FMTMEM_FORCE_SHUT_DOWN_REQUEST', -} -FMTMEM_NO_FORCE_REQUEST = 0 -FMTMEM_FORCE_LIGHT_SLEEP_REQUEST = 1 -FMTMEM_FORCE_DEEP_SLEEP_REQUEST = 2 -FMTMEM_FORCE_SHUT_DOWN_REQUEST = 3 -FMTMEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL' -FMT_BIT_DEPTH_CONTROL_25FRC_SEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Ei', - 1: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Fi', - 2: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Gi', - 3: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_RESERVED', -} -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Ei = 0 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Fi = 1 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Gi = 2 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_RESERVED = 3 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL' -FMT_BIT_DEPTH_CONTROL_50FRC_SEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_A', - 1: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_B', - 2: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_C', - 3: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_D', -} -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_A = 0 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_B = 1 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_C = 2 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_D = 3 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL' -FMT_BIT_DEPTH_CONTROL_75FRC_SEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_E', - 1: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_F', - 2: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_G', - 3: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_RESERVED', -} -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_E = 0 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_F = 1 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_G = 2 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_RESERVED = 3 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH' -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_18BPP', - 1: 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_24BPP', - 2: 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_30BPP', -} -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_18BPP = 0 -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_24BPP = 1 -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_30BPP = 2 -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH' -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_18BPP', - 1: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_24BPP', - 2: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_30BPP', -} -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_18BPP = 0 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_24BPP = 1 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_30BPP = 2 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL' -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL2', - 1: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL4', -} -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL2 = 0 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL4 = 1 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH' -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_18BPP', - 1: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_24BPP', - 2: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_30BPP', -} -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_18BPP = 0 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_24BPP = 1 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_30BPP = 2 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE' -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_TRUNCATION', - 1: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_ROUNDING', -} -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_TRUNCATION = 0 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_ROUNDING = 1 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CLAMP_CNTL_COLOR_FORMAT' -FMT_CLAMP_CNTL_COLOR_FORMAT__enumvalues = { - 0: 'FMT_CLAMP_CNTL_COLOR_FORMAT_6BPC', - 1: 'FMT_CLAMP_CNTL_COLOR_FORMAT_8BPC', - 2: 'FMT_CLAMP_CNTL_COLOR_FORMAT_10BPC', - 3: 'FMT_CLAMP_CNTL_COLOR_FORMAT_12BPC', - 4: 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED1', - 5: 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED2', - 6: 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED3', - 7: 'FMT_CLAMP_CNTL_COLOR_FORMAT_PROGRAMMABLE', -} -FMT_CLAMP_CNTL_COLOR_FORMAT_6BPC = 0 -FMT_CLAMP_CNTL_COLOR_FORMAT_8BPC = 1 -FMT_CLAMP_CNTL_COLOR_FORMAT_10BPC = 2 -FMT_CLAMP_CNTL_COLOR_FORMAT_12BPC = 3 -FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED1 = 4 -FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED2 = 5 -FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED3 = 6 -FMT_CLAMP_CNTL_COLOR_FORMAT_PROGRAMMABLE = 7 -FMT_CLAMP_CNTL_COLOR_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS' -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS__enumvalues = { - 0: 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_DISABLE', - 1: 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_ENABLE', -} -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_DISABLE = 0 -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_ENABLE = 1 -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_PIXEL_ENCODING' -FMT_CONTROL_PIXEL_ENCODING__enumvalues = { - 0: 'FMT_CONTROL_PIXEL_ENCODING_RGB444_OR_YCBCR444', - 1: 'FMT_CONTROL_PIXEL_ENCODING_YCBCR422', - 2: 'FMT_CONTROL_PIXEL_ENCODING_YCBCR420', - 3: 'FMT_CONTROL_PIXEL_ENCODING_RESERVED', -} -FMT_CONTROL_PIXEL_ENCODING_RGB444_OR_YCBCR444 = 0 -FMT_CONTROL_PIXEL_ENCODING_YCBCR422 = 1 -FMT_CONTROL_PIXEL_ENCODING_YCBCR420 = 2 -FMT_CONTROL_PIXEL_ENCODING_RESERVED = 3 -FMT_CONTROL_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_SUBSAMPLING_MODE' -FMT_CONTROL_SUBSAMPLING_MODE__enumvalues = { - 0: 'FMT_CONTROL_SUBSAMPLING_MODE_DROP', - 1: 'FMT_CONTROL_SUBSAMPLING_MODE_AVERAGE', - 2: 'FMT_CONTROL_SUBSAMPLING_MOME_3_TAP', - 3: 'FMT_CONTROL_SUBSAMPLING_MOME_RESERVED', -} -FMT_CONTROL_SUBSAMPLING_MODE_DROP = 0 -FMT_CONTROL_SUBSAMPLING_MODE_AVERAGE = 1 -FMT_CONTROL_SUBSAMPLING_MOME_3_TAP = 2 -FMT_CONTROL_SUBSAMPLING_MOME_RESERVED = 3 -FMT_CONTROL_SUBSAMPLING_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_SUBSAMPLING_ORDER' -FMT_CONTROL_SUBSAMPLING_ORDER__enumvalues = { - 0: 'FMT_CONTROL_SUBSAMPLING_ORDER_CB_BEFORE_CR', - 1: 'FMT_CONTROL_SUBSAMPLING_ORDER_CR_BEFORE_CB', -} -FMT_CONTROL_SUBSAMPLING_ORDER_CB_BEFORE_CR = 0 -FMT_CONTROL_SUBSAMPLING_ORDER_CR_BEFORE_CB = 1 -FMT_CONTROL_SUBSAMPLING_ORDER = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_DEBUG_CNTL_COLOR_SELECT' -FMT_DEBUG_CNTL_COLOR_SELECT__enumvalues = { - 0: 'FMT_DEBUG_CNTL_COLOR_SELECT_BLUE', - 1: 'FMT_DEBUG_CNTL_COLOR_SELECT_GREEN', - 2: 'FMT_DEBUG_CNTL_COLOR_SELECT_RED1', - 3: 'FMT_DEBUG_CNTL_COLOR_SELECT_RED2', -} -FMT_DEBUG_CNTL_COLOR_SELECT_BLUE = 0 -FMT_DEBUG_CNTL_COLOR_SELECT_GREEN = 1 -FMT_DEBUG_CNTL_COLOR_SELECT_RED1 = 2 -FMT_DEBUG_CNTL_COLOR_SELECT_RED2 = 3 -FMT_DEBUG_CNTL_COLOR_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_DYNAMIC_EXP_MODE' -FMT_DYNAMIC_EXP_MODE__enumvalues = { - 0: 'FMT_DYNAMIC_EXP_MODE_10to12', - 1: 'FMT_DYNAMIC_EXP_MODE_8to12', -} -FMT_DYNAMIC_EXP_MODE_10to12 = 0 -FMT_DYNAMIC_EXP_MODE_8to12 = 1 -FMT_DYNAMIC_EXP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_FRAME_RANDOM_ENABLE_CONTROL' -FMT_FRAME_RANDOM_ENABLE_CONTROL__enumvalues = { - 0: 'FMT_FRAME_RANDOM_ENABLE_RESET_EACH_FRAME', - 1: 'FMT_FRAME_RANDOM_ENABLE_RESET_ONCE', -} -FMT_FRAME_RANDOM_ENABLE_RESET_EACH_FRAME = 0 -FMT_FRAME_RANDOM_ENABLE_RESET_ONCE = 1 -FMT_FRAME_RANDOM_ENABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_POWER_STATE_ENUM' -FMT_POWER_STATE_ENUM__enumvalues = { - 0: 'FMT_POWER_STATE_ENUM_ON', - 1: 'FMT_POWER_STATE_ENUM_LS', - 2: 'FMT_POWER_STATE_ENUM_DS', - 3: 'FMT_POWER_STATE_ENUM_SD', -} -FMT_POWER_STATE_ENUM_ON = 0 -FMT_POWER_STATE_ENUM_LS = 1 -FMT_POWER_STATE_ENUM_DS = 2 -FMT_POWER_STATE_ENUM_SD = 3 -FMT_POWER_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_RGB_RANDOM_ENABLE_CONTROL' -FMT_RGB_RANDOM_ENABLE_CONTROL__enumvalues = { - 0: 'FMT_RGB_RANDOM_ENABLE_CONTROL_DISABLE', - 1: 'FMT_RGB_RANDOM_ENABLE_CONTROL_ENABLE', -} -FMT_RGB_RANDOM_ENABLE_CONTROL_DISABLE = 0 -FMT_RGB_RANDOM_ENABLE_CONTROL_ENABLE = 1 -FMT_RGB_RANDOM_ENABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_CONTROL' -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_CONTROL__enumvalues = { - 0: 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_NO_SWAP', - 1: 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_1', - 2: 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_2', - 3: 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_RESERVED', -} -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_NO_SWAP = 0 -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_1 = 1 -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_2 = 2 -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_RESERVED = 3 -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_SPATIAL_DITHER_MODE' -FMT_SPATIAL_DITHER_MODE__enumvalues = { - 0: 'FMT_SPATIAL_DITHER_MODE_0', - 1: 'FMT_SPATIAL_DITHER_MODE_1', - 2: 'FMT_SPATIAL_DITHER_MODE_2', - 3: 'FMT_SPATIAL_DITHER_MODE_3', -} -FMT_SPATIAL_DITHER_MODE_0 = 0 -FMT_SPATIAL_DITHER_MODE_1 = 1 -FMT_SPATIAL_DITHER_MODE_2 = 2 -FMT_SPATIAL_DITHER_MODE_3 = 3 -FMT_SPATIAL_DITHER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_STEREOSYNC_OVERRIDE_CONTROL' -FMT_STEREOSYNC_OVERRIDE_CONTROL__enumvalues = { - 0: 'FMT_STEREOSYNC_OVERRIDE_CONTROL_0', - 1: 'FMT_STEREOSYNC_OVERRIDE_CONTROL_1', -} -FMT_STEREOSYNC_OVERRIDE_CONTROL_0 = 0 -FMT_STEREOSYNC_OVERRIDE_CONTROL_1 = 1 -FMT_STEREOSYNC_OVERRIDE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0' -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0__enumvalues = { - 0: 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_BGR', - 1: 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_RGB', -} -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_BGR = 0 -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_RGB = 1 -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0 = ctypes.c_uint32 # enum - -# values for enumeration 'OPPBUF_DISPLAY_SEGMENTATION' -OPPBUF_DISPLAY_SEGMENTATION__enumvalues = { - 0: 'OPPBUF_DISPLAY_SEGMENTATION_1_SEGMENT', - 1: 'OPPBUF_DISPLAY_SEGMENTATION_2_SEGMENT', - 2: 'OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT', - 3: 'OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT_SPLIT_LEFT', - 4: 'OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT_SPLIT_RIGHT', -} -OPPBUF_DISPLAY_SEGMENTATION_1_SEGMENT = 0 -OPPBUF_DISPLAY_SEGMENTATION_2_SEGMENT = 1 -OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT = 2 -OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT_SPLIT_LEFT = 3 -OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT_SPLIT_RIGHT = 4 -OPPBUF_DISPLAY_SEGMENTATION = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CLOCK_ENABLE_CONTROL' -OPP_PIPE_CLOCK_ENABLE_CONTROL__enumvalues = { - 0: 'OPP_PIPE_CLOCK_DISABLE', - 1: 'OPP_PIPE_CLOCK_ENABLE', -} -OPP_PIPE_CLOCK_DISABLE = 0 -OPP_PIPE_CLOCK_ENABLE = 1 -OPP_PIPE_CLOCK_ENABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_DIGTIAL_BYPASS_CONTROL' -OPP_PIPE_DIGTIAL_BYPASS_CONTROL__enumvalues = { - 0: 'OPP_PIPE_DIGTIAL_BYPASS_DISABLE', - 1: 'OPP_PIPE_DIGTIAL_BYPASS_ENABLE', -} -OPP_PIPE_DIGTIAL_BYPASS_DISABLE = 0 -OPP_PIPE_DIGTIAL_BYPASS_ENABLE = 1 -OPP_PIPE_DIGTIAL_BYPASS_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_CONT_EN' -OPP_PIPE_CRC_CONT_EN__enumvalues = { - 0: 'OPP_PIPE_CRC_MODE_ONE_SHOT', - 1: 'OPP_PIPE_CRC_MODE_CONTINUOUS', -} -OPP_PIPE_CRC_MODE_ONE_SHOT = 0 -OPP_PIPE_CRC_MODE_CONTINUOUS = 1 -OPP_PIPE_CRC_CONT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_EN' -OPP_PIPE_CRC_EN__enumvalues = { - 0: 'OPP_PIPE_CRC_DISABLE', - 1: 'OPP_PIPE_CRC_ENABLE', -} -OPP_PIPE_CRC_DISABLE = 0 -OPP_PIPE_CRC_ENABLE = 1 -OPP_PIPE_CRC_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_INTERLACE_EN' -OPP_PIPE_CRC_INTERLACE_EN__enumvalues = { - 0: 'OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_PROGRESSIVE', - 1: 'OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_INTERLACED', -} -OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_PROGRESSIVE = 0 -OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_INTERLACED = 1 -OPP_PIPE_CRC_INTERLACE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_INTERLACE_MODE' -OPP_PIPE_CRC_INTERLACE_MODE__enumvalues = { - 0: 'OPP_PIPE_CRC_INTERLACE_MODE_TOP', - 1: 'OPP_PIPE_CRC_INTERLACE_MODE_BOTTOM', - 2: 'OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_BOTTOM_FIELD', - 3: 'OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_EACH_FIELD', -} -OPP_PIPE_CRC_INTERLACE_MODE_TOP = 0 -OPP_PIPE_CRC_INTERLACE_MODE_BOTTOM = 1 -OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_BOTTOM_FIELD = 2 -OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_EACH_FIELD = 3 -OPP_PIPE_CRC_INTERLACE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_ONE_SHOT_PENDING' -OPP_PIPE_CRC_ONE_SHOT_PENDING__enumvalues = { - 0: 'OPP_PIPE_CRC_ONE_SHOT_PENDING_NOT_PENDING', - 1: 'OPP_PIPE_CRC_ONE_SHOT_PENDING_PENDING', -} -OPP_PIPE_CRC_ONE_SHOT_PENDING_NOT_PENDING = 0 -OPP_PIPE_CRC_ONE_SHOT_PENDING_PENDING = 1 -OPP_PIPE_CRC_ONE_SHOT_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_PIXEL_SELECT' -OPP_PIPE_CRC_PIXEL_SELECT__enumvalues = { - 0: 'OPP_PIPE_CRC_PIXEL_SELECT_ALL_PIXELS', - 1: 'OPP_PIPE_CRC_PIXEL_SELECT_RESERVED', - 2: 'OPP_PIPE_CRC_PIXEL_SELECT_EVEN_PIXELS', - 3: 'OPP_PIPE_CRC_PIXEL_SELECT_ODD_PIXELS', -} -OPP_PIPE_CRC_PIXEL_SELECT_ALL_PIXELS = 0 -OPP_PIPE_CRC_PIXEL_SELECT_RESERVED = 1 -OPP_PIPE_CRC_PIXEL_SELECT_EVEN_PIXELS = 2 -OPP_PIPE_CRC_PIXEL_SELECT_ODD_PIXELS = 3 -OPP_PIPE_CRC_PIXEL_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_SOURCE_SELECT' -OPP_PIPE_CRC_SOURCE_SELECT__enumvalues = { - 0: 'OPP_PIPE_CRC_SOURCE_SELECT_FMT', - 1: 'OPP_PIPE_CRC_SOURCE_SELECT_SFT', -} -OPP_PIPE_CRC_SOURCE_SELECT_FMT = 0 -OPP_PIPE_CRC_SOURCE_SELECT_SFT = 1 -OPP_PIPE_CRC_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_STEREO_EN' -OPP_PIPE_CRC_STEREO_EN__enumvalues = { - 0: 'OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_NON_STEREO', - 1: 'OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_STEREO', -} -OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_NON_STEREO = 0 -OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_STEREO = 1 -OPP_PIPE_CRC_STEREO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_STEREO_MODE' -OPP_PIPE_CRC_STEREO_MODE__enumvalues = { - 0: 'OPP_PIPE_CRC_STEREO_MODE_LEFT', - 1: 'OPP_PIPE_CRC_STEREO_MODE_RIGHT', - 2: 'OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_RIGHT_EYE', - 3: 'OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_EACH_EYE', -} -OPP_PIPE_CRC_STEREO_MODE_LEFT = 0 -OPP_PIPE_CRC_STEREO_MODE_RIGHT = 1 -OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_RIGHT_EYE = 2 -OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_EACH_EYE = 3 -OPP_PIPE_CRC_STEREO_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_TEST_CLK_SEL_CONTROL' -OPP_TEST_CLK_SEL_CONTROL__enumvalues = { - 0: 'OPP_TEST_CLK_SEL_DISPCLK_P', - 1: 'OPP_TEST_CLK_SEL_DISPCLK_R', - 2: 'OPP_TEST_CLK_SEL_DISPCLK_ABM0', - 3: 'OPP_TEST_CLK_SEL_DISPCLK_ABM1', - 4: 'OPP_TEST_CLK_SEL_DISPCLK_ABM2', - 5: 'OPP_TEST_CLK_SEL_DISPCLK_ABM3', - 6: 'OPP_TEST_CLK_SEL_RESERVED0', - 7: 'OPP_TEST_CLK_SEL_RESERVED1', - 8: 'OPP_TEST_CLK_SEL_DISPCLK_OPP0', - 9: 'OPP_TEST_CLK_SEL_DISPCLK_OPP1', - 10: 'OPP_TEST_CLK_SEL_DISPCLK_OPP2', - 11: 'OPP_TEST_CLK_SEL_DISPCLK_OPP3', - 12: 'OPP_TEST_CLK_SEL_RESERVED2', - 13: 'OPP_TEST_CLK_SEL_RESERVED3', -} -OPP_TEST_CLK_SEL_DISPCLK_P = 0 -OPP_TEST_CLK_SEL_DISPCLK_R = 1 -OPP_TEST_CLK_SEL_DISPCLK_ABM0 = 2 -OPP_TEST_CLK_SEL_DISPCLK_ABM1 = 3 -OPP_TEST_CLK_SEL_DISPCLK_ABM2 = 4 -OPP_TEST_CLK_SEL_DISPCLK_ABM3 = 5 -OPP_TEST_CLK_SEL_RESERVED0 = 6 -OPP_TEST_CLK_SEL_RESERVED1 = 7 -OPP_TEST_CLK_SEL_DISPCLK_OPP0 = 8 -OPP_TEST_CLK_SEL_DISPCLK_OPP1 = 9 -OPP_TEST_CLK_SEL_DISPCLK_OPP2 = 10 -OPP_TEST_CLK_SEL_DISPCLK_OPP3 = 11 -OPP_TEST_CLK_SEL_RESERVED2 = 12 -OPP_TEST_CLK_SEL_RESERVED3 = 13 -OPP_TEST_CLK_SEL_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_TOP_CLOCK_ENABLE_STATUS' -OPP_TOP_CLOCK_ENABLE_STATUS__enumvalues = { - 0: 'OPP_TOP_CLOCK_DISABLED_STATUS', - 1: 'OPP_TOP_CLOCK_ENABLED_STATUS', -} -OPP_TOP_CLOCK_DISABLED_STATUS = 0 -OPP_TOP_CLOCK_ENABLED_STATUS = 1 -OPP_TOP_CLOCK_ENABLE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_TOP_CLOCK_GATING_CONTROL' -OPP_TOP_CLOCK_GATING_CONTROL__enumvalues = { - 0: 'OPP_TOP_CLOCK_GATING_ENABLED', - 1: 'OPP_TOP_CLOCK_GATING_DISABLED', -} -OPP_TOP_CLOCK_GATING_ENABLED = 0 -OPP_TOP_CLOCK_GATING_DISABLED = 1 -OPP_TOP_CLOCK_GATING_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK' -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_FALSE', - 1: 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_TRUE', -} -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_FALSE = 0 -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_TRUE = 1 -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'MASTER_UPDATE_LOCK_SEL' -MASTER_UPDATE_LOCK_SEL__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_SEL_0', - 1: 'MASTER_UPDATE_LOCK_SEL_1', - 2: 'MASTER_UPDATE_LOCK_SEL_2', - 3: 'MASTER_UPDATE_LOCK_SEL_3', - 4: 'MASTER_UPDATE_LOCK_SEL_RESERVED4', - 5: 'MASTER_UPDATE_LOCK_SEL_RESERVED5', -} -MASTER_UPDATE_LOCK_SEL_0 = 0 -MASTER_UPDATE_LOCK_SEL_1 = 1 -MASTER_UPDATE_LOCK_SEL_2 = 2 -MASTER_UPDATE_LOCK_SEL_3 = 3 -MASTER_UPDATE_LOCK_SEL_RESERVED4 = 4 -MASTER_UPDATE_LOCK_SEL_RESERVED5 = 5 -MASTER_UPDATE_LOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE' -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE__enumvalues = { - 0: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTH', - 1: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_TOP', - 2: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTTOM', - 3: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_RESERVED', -} -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTH = 0 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_TOP = 1 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTTOM = 2 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_RESERVED = 3 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN' -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN__enumvalues = { - 0: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_FALSE', - 1: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_TRUE', -} -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_FALSE = 0 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_TRUE = 1 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB' -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB__enumvalues = { - 0: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_FALSE', - 1: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_TRUE', -} -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_FALSE = 0 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_TRUE = 1 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR' -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR__enumvalues = { - 0: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_FALSE', - 1: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_TRUE', -} -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_FALSE = 0 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_TRUE = 1 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE' -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE__enumvalues = { - 0: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_BOTH', - 1: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_INTERLACE', - 2: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_PROGRASSIVE', - 3: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_RESERVED', -} -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_BOTH = 0 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_INTERLACE = 1 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_PROGRASSIVE = 2 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_RESERVED = 3 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL' -OTG_CONTROL_OTG_DISABLE_POINT_CNTL__enumvalues = { - 0: 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE', - 1: 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_CURRENT', - 2: 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_VUPDATE', - 3: 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_FIRST', -} -OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE = 0 -OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_CURRENT = 1 -OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_VUPDATE = 2 -OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_FIRST = 3 -OTG_CONTROL_OTG_DISABLE_POINT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL' -OTG_CONTROL_OTG_FIELD_NUMBER_CNTL__enumvalues = { - 0: 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_NORMAL', - 1: 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_DP', -} -OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_NORMAL = 0 -OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_DP = 1 -OTG_CONTROL_OTG_FIELD_NUMBER_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY' -OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY__enumvalues = { - 0: 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_FALSE', - 1: 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_TRUE', -} -OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_FALSE = 0 -OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_TRUE = 1 -OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_MASTER_EN' -OTG_CONTROL_OTG_MASTER_EN__enumvalues = { - 0: 'OTG_CONTROL_OTG_MASTER_EN_FALSE', - 1: 'OTG_CONTROL_OTG_MASTER_EN_TRUE', -} -OTG_CONTROL_OTG_MASTER_EN_FALSE = 0 -OTG_CONTROL_OTG_MASTER_EN_TRUE = 1 -OTG_CONTROL_OTG_MASTER_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_OUT_MUX' -OTG_CONTROL_OTG_OUT_MUX__enumvalues = { - 0: 'OTG_CONTROL_OTG_OUT_MUX_0', - 1: 'OTG_CONTROL_OTG_OUT_MUX_1', - 2: 'OTG_CONTROL_OTG_OUT_MUX_2', -} -OTG_CONTROL_OTG_OUT_MUX_0 = 0 -OTG_CONTROL_OTG_OUT_MUX_1 = 1 -OTG_CONTROL_OTG_OUT_MUX_2 = 2 -OTG_CONTROL_OTG_OUT_MUX = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_START_POINT_CNTL' -OTG_CONTROL_OTG_START_POINT_CNTL__enumvalues = { - 0: 'OTG_CONTROL_OTG_START_POINT_CNTL_NORMAL', - 1: 'OTG_CONTROL_OTG_START_POINT_CNTL_DP', -} -OTG_CONTROL_OTG_START_POINT_CNTL_NORMAL = 0 -OTG_CONTROL_OTG_START_POINT_CNTL_DP = 1 -OTG_CONTROL_OTG_START_POINT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN' -OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN__enumvalues = { - 0: 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_FALSE', - 1: 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_TRUE', -} -OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_FALSE = 0 -OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_TRUE = 1 -OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC1_EN' -OTG_CRC_CNTL_OTG_CRC1_EN__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC1_EN_FALSE', - 1: 'OTG_CRC_CNTL_OTG_CRC1_EN_TRUE', -} -OTG_CRC_CNTL_OTG_CRC1_EN_FALSE = 0 -OTG_CRC_CNTL_OTG_CRC1_EN_TRUE = 1 -OTG_CRC_CNTL_OTG_CRC1_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_CONT_EN' -OTG_CRC_CNTL_OTG_CRC_CONT_EN__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_CONT_EN_FALSE', - 1: 'OTG_CRC_CNTL_OTG_CRC_CONT_EN_TRUE', -} -OTG_CRC_CNTL_OTG_CRC_CONT_EN_FALSE = 0 -OTG_CRC_CNTL_OTG_CRC_CONT_EN_TRUE = 1 -OTG_CRC_CNTL_OTG_CRC_CONT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_CONT_MODE' -OTG_CRC_CNTL_OTG_CRC_CONT_MODE__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_CONT_MODE_RESET', - 1: 'OTG_CRC_CNTL_OTG_CRC_CONT_MODE_NORESET', -} -OTG_CRC_CNTL_OTG_CRC_CONT_MODE_RESET = 0 -OTG_CRC_CNTL_OTG_CRC_CONT_MODE_NORESET = 1 -OTG_CRC_CNTL_OTG_CRC_CONT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_EN' -OTG_CRC_CNTL_OTG_CRC_EN__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_EN_FALSE', - 1: 'OTG_CRC_CNTL_OTG_CRC_EN_TRUE', -} -OTG_CRC_CNTL_OTG_CRC_EN_FALSE = 0 -OTG_CRC_CNTL_OTG_CRC_EN_TRUE = 1 -OTG_CRC_CNTL_OTG_CRC_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE' -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_TOP', - 1: 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTTOM', - 2: 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_BOTTOM', - 3: 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_FIELD', -} -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_TOP = 0 -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTTOM = 1 -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_BOTTOM = 2 -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_FIELD = 3 -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE' -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_LEFT', - 1: 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_RIGHT', - 2: 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_EYES', - 3: 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_FIELDS', -} -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_LEFT = 0 -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_RIGHT = 1 -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_EYES = 2 -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_FIELDS = 3 -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS' -OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_FALSE', - 1: 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_TRUE', -} -OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_FALSE = 0 -OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_TRUE = 1 -OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT' -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UAB', - 1: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UA_B', - 2: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_AB', - 3: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_A_B', - 4: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IAB', - 5: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IA_B', - 6: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_AB', - 7: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_A_B', -} -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UAB = 0 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UA_B = 1 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_AB = 2 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_A_B = 3 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IAB = 4 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IA_B = 5 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_AB = 6 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_A_B = 7 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT' -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UAB', - 1: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UA_B', - 2: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_AB', - 3: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_A_B', - 4: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IAB', - 5: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IA_B', - 6: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_AB', - 7: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_A_B', -} -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UAB = 0 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UA_B = 1 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_AB = 2 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_A_B = 3 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IAB = 4 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IA_B = 5 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_AB = 6 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_A_B = 7 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DIG_UPDATE_VCOUNT_MODE' -OTG_DIG_UPDATE_VCOUNT_MODE__enumvalues = { - 0: 'OTG_DIG_UPDATE_VCOUNT_0', - 1: 'OTG_DIG_UPDATE_VCOUNT_1', -} -OTG_DIG_UPDATE_VCOUNT_0 = 0 -OTG_DIG_UPDATE_VCOUNT_1 = 1 -OTG_DIG_UPDATE_VCOUNT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DLPC_CONTROL_OTG_RESYNC_MODE' -OTG_DLPC_CONTROL_OTG_RESYNC_MODE__enumvalues = { - 0: 'OTG_DLPC_CONTROL_OTG_RESYNC_MODE_0', - 1: 'OTG_DLPC_CONTROL_OTG_RESYNC_MODE_1', -} -OTG_DLPC_CONTROL_OTG_RESYNC_MODE_0 = 0 -OTG_DLPC_CONTROL_OTG_RESYNC_MODE_1 = 1 -OTG_DLPC_CONTROL_OTG_RESYNC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE' -OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE__enumvalues = { - 0: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_0', - 1: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_1', - 2: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_2', - 3: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_3', -} -OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_0 = 0 -OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_1 = 1 -OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_2 = 2 -OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_3 = 3 -OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY' -OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY__enumvalues = { - 0: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_FALSE', - 1: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_TRUE', -} -OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_FALSE = 0 -OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_TRUE = 1 -OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME' -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME__enumvalues = { - 0: 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_1FRAME', - 1: 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_2FRAME', - 2: 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_4FRAME', - 3: 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_8FRAME', -} -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_1FRAME = 0 -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_2FRAME = 1 -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_4FRAME = 2 -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_8FRAME = 3 -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN' -OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN__enumvalues = { - 0: 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_FALSE', - 1: 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_TRUE', -} -OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_FALSE = 0 -OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_TRUE = 1 -OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY' -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY__enumvalues = { - 0: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_FALSE', - 1: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_TRUE', -} -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_FALSE = 0 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_TRUE = 1 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY' -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY__enumvalues = { - 0: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_FALSE', - 1: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_TRUE', -} -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_FALSE = 0 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_TRUE = 1 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT' -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT__enumvalues = { - 0: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC0', - 1: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC1', - 2: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICA', - 3: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICB', - 4: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICC', - 5: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICD', - 6: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICE', - 7: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICF', - 8: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD1', - 9: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD2', - 10: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1DATA', - 11: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1CLK', - 12: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2DATA', - 13: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2CLK', - 14: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 15: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_RESERVED', - 16: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_CLK', - 17: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_VSYNC', - 18: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKA', - 19: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKB', -} -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC0 = 0 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC1 = 1 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICA = 2 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICB = 3 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICC = 4 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICD = 5 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICE = 6 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICF = 7 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD1 = 8 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD2 = 9 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1DATA = 10 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1CLK = 11 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2DATA = 12 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2CLK = 13 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_MANUAL_FLOW_CONTROL = 14 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_RESERVED = 15 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_CLK = 16 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_VSYNC = 17 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKA = 18 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKB = 19 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK' -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK__enumvalues = { - 0: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_FALSE', - 1: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_TRUE', -} -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_FALSE = 0 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_TRUE = 1 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR' -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR__enumvalues = { - 0: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_FALSE', - 1: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_TRUE', -} -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_FALSE = 0 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_TRUE = 1 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE' -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE__enumvalues = { - 0: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_DISABLE', - 1: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT', - 2: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT_VCOUNT', - 3: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_RESERVED', -} -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_DISABLE = 0 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT = 1 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT_VCOUNT = 2 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_RESERVED = 3 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL' -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL__enumvalues = { - 0: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_FALSE', - 1: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_TRUE', -} -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_FALSE = 0 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_TRUE = 1 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL' -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL__enumvalues = { - 0: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG0', - 1: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG1', - 2: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG2', - 3: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG3', - 4: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_RESERVED4', - 5: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_RESERVED5', -} -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG0 = 0 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG1 = 1 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG2 = 2 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG3 = 3 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_RESERVED4 = 4 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_RESERVED5 = 5 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_CONTROL3_DIG_UPDATE_EYE_SEL' -OTG_GLOBAL_CONTROL3_DIG_UPDATE_EYE_SEL__enumvalues = { - 0: 'DIG_UPDATE_EYE_SEL_BOTH', - 1: 'DIG_UPDATE_EYE_SEL_LEFT', - 2: 'DIG_UPDATE_EYE_SEL_RIGHT', -} -DIG_UPDATE_EYE_SEL_BOTH = 0 -DIG_UPDATE_EYE_SEL_LEFT = 1 -DIG_UPDATE_EYE_SEL_RIGHT = 2 -OTG_GLOBAL_CONTROL3_DIG_UPDATE_EYE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_CONTROL3_DIG_UPDATE_FIELD_SEL' -OTG_GLOBAL_CONTROL3_DIG_UPDATE_FIELD_SEL__enumvalues = { - 0: 'DIG_UPDATE_FIELD_SEL_BOTH', - 1: 'DIG_UPDATE_FIELD_SEL_TOP', - 2: 'DIG_UPDATE_FIELD_SEL_BOTTOM', - 3: 'DIG_UPDATE_FIELD_SEL_RESERVED', -} -DIG_UPDATE_FIELD_SEL_BOTH = 0 -DIG_UPDATE_FIELD_SEL_TOP = 1 -DIG_UPDATE_FIELD_SEL_BOTTOM = 2 -DIG_UPDATE_FIELD_SEL_RESERVED = 3 -OTG_GLOBAL_CONTROL3_DIG_UPDATE_FIELD_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_FIELD' -OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_FIELD__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_DB_FIELD_BOTH', - 1: 'MASTER_UPDATE_LOCK_DB_FIELD_TOP', - 2: 'MASTER_UPDATE_LOCK_DB_FIELD_BOTTOM', - 3: 'MASTER_UPDATE_LOCK_DB_FIELD_RESERVED', -} -MASTER_UPDATE_LOCK_DB_FIELD_BOTH = 0 -MASTER_UPDATE_LOCK_DB_FIELD_TOP = 1 -MASTER_UPDATE_LOCK_DB_FIELD_BOTTOM = 2 -MASTER_UPDATE_LOCK_DB_FIELD_RESERVED = 3 -OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_FIELD = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_STEREO_SEL' -OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_STEREO_SEL__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_BOTH', - 1: 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_LEFT', - 2: 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_RIGHT', - 3: 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_RESERVED', -} -MASTER_UPDATE_LOCK_DB_STEREO_SEL_BOTH = 0 -MASTER_UPDATE_LOCK_DB_STEREO_SEL_LEFT = 1 -MASTER_UPDATE_LOCK_DB_STEREO_SEL_RIGHT = 2 -MASTER_UPDATE_LOCK_DB_STEREO_SEL_RESERVED = 3 -OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_STEREO_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_UPDATE_LOCK_EN' -OTG_GLOBAL_UPDATE_LOCK_EN__enumvalues = { - 0: 'OTG_GLOBAL_UPDATE_LOCK_DISABLE', - 1: 'OTG_GLOBAL_UPDATE_LOCK_ENABLE', -} -OTG_GLOBAL_UPDATE_LOCK_DISABLE = 0 -OTG_GLOBAL_UPDATE_LOCK_ENABLE = 1 -OTG_GLOBAL_UPDATE_LOCK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GSL_MASTER_MODE' -OTG_GSL_MASTER_MODE__enumvalues = { - 0: 'OTG_GSL_MASTER_MODE_0', - 1: 'OTG_GSL_MASTER_MODE_1', - 2: 'OTG_GSL_MASTER_MODE_2', - 3: 'OTG_GSL_MASTER_MODE_3', -} -OTG_GSL_MASTER_MODE_0 = 0 -OTG_GSL_MASTER_MODE_1 = 1 -OTG_GSL_MASTER_MODE_2 = 2 -OTG_GSL_MASTER_MODE_3 = 3 -OTG_GSL_MASTER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_HORZ_REPETITION_COUNT' -OTG_HORZ_REPETITION_COUNT__enumvalues = { - 0: 'OTG_HORZ_REPETITION_COUNT_0', - 1: 'OTG_HORZ_REPETITION_COUNT_1', - 2: 'OTG_HORZ_REPETITION_COUNT_2', - 3: 'OTG_HORZ_REPETITION_COUNT_3', - 4: 'OTG_HORZ_REPETITION_COUNT_4', - 5: 'OTG_HORZ_REPETITION_COUNT_5', - 6: 'OTG_HORZ_REPETITION_COUNT_6', - 7: 'OTG_HORZ_REPETITION_COUNT_7', - 8: 'OTG_HORZ_REPETITION_COUNT_8', - 9: 'OTG_HORZ_REPETITION_COUNT_9', - 10: 'OTG_HORZ_REPETITION_COUNT_10', - 11: 'OTG_HORZ_REPETITION_COUNT_11', - 12: 'OTG_HORZ_REPETITION_COUNT_12', - 13: 'OTG_HORZ_REPETITION_COUNT_13', - 14: 'OTG_HORZ_REPETITION_COUNT_14', - 15: 'OTG_HORZ_REPETITION_COUNT_15', -} -OTG_HORZ_REPETITION_COUNT_0 = 0 -OTG_HORZ_REPETITION_COUNT_1 = 1 -OTG_HORZ_REPETITION_COUNT_2 = 2 -OTG_HORZ_REPETITION_COUNT_3 = 3 -OTG_HORZ_REPETITION_COUNT_4 = 4 -OTG_HORZ_REPETITION_COUNT_5 = 5 -OTG_HORZ_REPETITION_COUNT_6 = 6 -OTG_HORZ_REPETITION_COUNT_7 = 7 -OTG_HORZ_REPETITION_COUNT_8 = 8 -OTG_HORZ_REPETITION_COUNT_9 = 9 -OTG_HORZ_REPETITION_COUNT_10 = 10 -OTG_HORZ_REPETITION_COUNT_11 = 11 -OTG_HORZ_REPETITION_COUNT_12 = 12 -OTG_HORZ_REPETITION_COUNT_13 = 13 -OTG_HORZ_REPETITION_COUNT_14 = 14 -OTG_HORZ_REPETITION_COUNT_15 = 15 -OTG_HORZ_REPETITION_COUNT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_H_SYNC_A_POL' -OTG_H_SYNC_A_POL__enumvalues = { - 0: 'OTG_H_SYNC_A_POL_HIGH', - 1: 'OTG_H_SYNC_A_POL_LOW', -} -OTG_H_SYNC_A_POL_HIGH = 0 -OTG_H_SYNC_A_POL_LOW = 1 -OTG_H_SYNC_A_POL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_H_TIMING_DIV_MODE' -OTG_H_TIMING_DIV_MODE__enumvalues = { - 0: 'OTG_H_TIMING_DIV_MODE_NO_DIV', - 1: 'OTG_H_TIMING_DIV_MODE_DIV_BY2', - 2: 'OTG_H_TIMING_DIV_MODE_RESERVED', - 3: 'OTG_H_TIMING_DIV_MODE_DIV_BY4', -} -OTG_H_TIMING_DIV_MODE_NO_DIV = 0 -OTG_H_TIMING_DIV_MODE_DIV_BY2 = 1 -OTG_H_TIMING_DIV_MODE_RESERVED = 2 -OTG_H_TIMING_DIV_MODE_DIV_BY4 = 3 -OTG_H_TIMING_DIV_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_H_TIMING_DIV_MODE_MANUAL' -OTG_H_TIMING_DIV_MODE_MANUAL__enumvalues = { - 0: 'OTG_H_TIMING_DIV_MODE_AUTO', - 1: 'OTG_H_TIMING_DIV_MODE_NOAUTO', -} -OTG_H_TIMING_DIV_MODE_AUTO = 0 -OTG_H_TIMING_DIV_MODE_NOAUTO = 1 -OTG_H_TIMING_DIV_MODE_MANUAL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE' -OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE__enumvalues = { - 0: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_FALSE', - 1: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_TRUE', -} -OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_FALSE = 0 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_TRUE = 1 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD' -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD__enumvalues = { - 0: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT', - 1: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_BOTTOM', - 2: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_TOP', - 3: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT2', -} -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT = 0 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_BOTTOM = 1 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_TOP = 2 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT2 = 3 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE' -OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE__enumvalues = { - 0: 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_FALSE', - 1: 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_TRUE', -} -OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_FALSE = 0 -OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_TRUE = 1 -OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_MASTER_UPDATE_LOCK_DB_EN' -OTG_MASTER_UPDATE_LOCK_DB_EN__enumvalues = { - 0: 'OTG_MASTER_UPDATE_LOCK_DISABLE', - 1: 'OTG_MASTER_UPDATE_LOCK_ENABLE', -} -OTG_MASTER_UPDATE_LOCK_DISABLE = 0 -OTG_MASTER_UPDATE_LOCK_ENABLE = 1 -OTG_MASTER_UPDATE_LOCK_DB_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_MASTER_UPDATE_LOCK_GSL_EN' -OTG_MASTER_UPDATE_LOCK_GSL_EN__enumvalues = { - 0: 'OTG_MASTER_UPDATE_LOCK_GSL_EN_FALSE', - 1: 'OTG_MASTER_UPDATE_LOCK_GSL_EN_TRUE', -} -OTG_MASTER_UPDATE_LOCK_GSL_EN_FALSE = 0 -OTG_MASTER_UPDATE_LOCK_GSL_EN_TRUE = 1 -OTG_MASTER_UPDATE_LOCK_GSL_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_MASTER_UPDATE_LOCK_VCOUNT_MODE' -OTG_MASTER_UPDATE_LOCK_VCOUNT_MODE__enumvalues = { - 0: 'OTG_MASTER_UPDATE_LOCK_VCOUNT_0', - 1: 'OTG_MASTER_UPDATE_LOCK_VCOUNT_1', -} -OTG_MASTER_UPDATE_LOCK_VCOUNT_0 = 0 -OTG_MASTER_UPDATE_LOCK_VCOUNT_1 = 1 -OTG_MASTER_UPDATE_LOCK_VCOUNT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL' -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL__enumvalues = { - 0: 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_DISABLE', - 1: 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERA', - 2: 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERB', - 3: 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_RESERVED', -} -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_DISABLE = 0 -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERA = 1 -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERB = 2 -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_RESERVED = 3 -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR' -OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR__enumvalues = { - 0: 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_FALSE', - 1: 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_TRUE', -} -OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_FALSE = 0 -OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_TRUE = 1 -OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR' -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_FALSE', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_TRUE', -} -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_FALSE = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_TRUE = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE' -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_FALSE', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_TRUE', -} -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_FALSE = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_TRUE = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE' -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_FALSE', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_TRUE', -} -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_FALSE = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_TRUE = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE' -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_FALSE', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_TRUE', -} -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_FALSE = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_TRUE = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE' -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_OFF', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_ON', -} -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_OFF = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_ON = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL' -OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL__enumvalues = { - 0: 'OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL_FALSE', - 1: 'OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL_TRUE', -} -OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL_FALSE = 0 -OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL_TRUE = 1 -OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STEREO_CONTROL_OTG_STEREO_EN' -OTG_STEREO_CONTROL_OTG_STEREO_EN__enumvalues = { - 0: 'OTG_STEREO_CONTROL_OTG_STEREO_EN_FALSE', - 1: 'OTG_STEREO_CONTROL_OTG_STEREO_EN_TRUE', -} -OTG_STEREO_CONTROL_OTG_STEREO_EN_FALSE = 0 -OTG_STEREO_CONTROL_OTG_STEREO_EN_TRUE = 1 -OTG_STEREO_CONTROL_OTG_STEREO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY' -OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY__enumvalues = { - 0: 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_FALSE', - 1: 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_TRUE', -} -OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_FALSE = 0 -OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_TRUE = 1 -OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY' -OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY__enumvalues = { - 0: 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_FALSE', - 1: 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_TRUE', -} -OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_FALSE = 0 -OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_TRUE = 1 -OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE' -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE__enumvalues = { - 0: 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_NO', - 1: 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RIGHT', - 2: 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_LEFT', - 3: 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RESERVED', -} -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_NO = 0 -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RIGHT = 1 -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_LEFT = 2 -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RESERVED = 3 -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR' -OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_FALSE', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_TRUE', -} -OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_FALSE = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_TRUE = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT' -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC0', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_INTERLACE', - 2: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICA', - 3: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICB', - 4: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_HSYNCA', - 5: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC1', - 6: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICC', - 7: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICD', -} -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC0 = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_INTERLACE = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICA = 2 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICB = 3 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_HSYNCA = 4 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC1 = 5 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICC = 6 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICD = 7 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN' -OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_FALSE', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_TRUE', -} -OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_FALSE = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_TRUE = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT' -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG0', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG1', - 2: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG2', - 3: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG3', - 4: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_RESERVED4', - 5: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_RESERVED5', -} -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG0 = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG1 = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG2 = 2 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG3 = 3 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_RESERVED4 = 4 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_RESERVED5 = 5 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT' -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC0', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICA_PIN', - 2: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICB_PIN', - 3: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICC_PIN', - 4: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICD_PIN', - 5: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICE_PIN', - 6: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICF_PIN', - 7: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKA_PIN', - 8: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKB_PIN', - 9: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_CLK_PIN', - 10: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_VSYNC_PIN', - 11: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD1', - 12: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD2', - 13: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_BLON_Y_PIN', - 14: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_RESERVED14', - 15: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_LOCK', - 16: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GSL_ALLOW_FLIP', - 17: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_PENDING', - 18: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_SOF', - 19: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HSYNC', - 20: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_VSYNC', - 21: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL', - 22: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 23: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC1', - 24: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_FLIP_PENDING', -} -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC0 = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICA_PIN = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICB_PIN = 2 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICC_PIN = 3 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICD_PIN = 4 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICE_PIN = 5 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICF_PIN = 6 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKA_PIN = 7 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKB_PIN = 8 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_CLK_PIN = 9 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_VSYNC_PIN = 10 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD1 = 11 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD2 = 12 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_BLON_Y_PIN = 13 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_RESERVED14 = 14 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_LOCK = 15 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GSL_ALLOW_FLIP = 16 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_PENDING = 17 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_SOF = 18 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HSYNC = 19 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_VSYNC = 20 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL = 21 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_MANUAL_FLOW_CONTROL = 22 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC1 = 23 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_FLIP_PENDING = 24 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL' -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL__enumvalues = { - 0: 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_0', - 1: 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_1', - 2: 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_2', - 3: 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_3', -} -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_0 = 0 -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_1 = 1 -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_2 = 2 -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_3 = 3 -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_FREQUENCY_SELECT' -OTG_TRIGA_FREQUENCY_SELECT__enumvalues = { - 0: 'OTG_TRIGA_FREQUENCY_SELECT_0', - 1: 'OTG_TRIGA_FREQUENCY_SELECT_1', - 2: 'OTG_TRIGA_FREQUENCY_SELECT_2', - 3: 'OTG_TRIGA_FREQUENCY_SELECT_3', -} -OTG_TRIGA_FREQUENCY_SELECT_0 = 0 -OTG_TRIGA_FREQUENCY_SELECT_1 = 1 -OTG_TRIGA_FREQUENCY_SELECT_2 = 2 -OTG_TRIGA_FREQUENCY_SELECT_3 = 3 -OTG_TRIGA_FREQUENCY_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL' -OTG_TRIGA_RISING_EDGE_DETECT_CNTL__enumvalues = { - 0: 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_0', - 1: 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_1', - 2: 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_2', - 3: 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_3', -} -OTG_TRIGA_RISING_EDGE_DETECT_CNTL_0 = 0 -OTG_TRIGA_RISING_EDGE_DETECT_CNTL_1 = 1 -OTG_TRIGA_RISING_EDGE_DETECT_CNTL_2 = 2 -OTG_TRIGA_RISING_EDGE_DETECT_CNTL_3 = 3 -OTG_TRIGA_RISING_EDGE_DETECT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR' -OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_FALSE', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_TRUE', -} -OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_FALSE = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_TRUE = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT' -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC0', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_INTERLACE', - 2: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICA', - 3: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICB', - 4: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_HSYNCA', - 5: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC1', - 6: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICC', - 7: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICD', -} -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC0 = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_INTERLACE = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICA = 2 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICB = 3 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_HSYNCA = 4 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC1 = 5 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICC = 6 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICD = 7 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN' -OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_FALSE', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_TRUE', -} -OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_FALSE = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_TRUE = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT' -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG0', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG1', - 2: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG2', - 3: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG3', - 4: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_RESERVED4', - 5: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_RESERVED5', -} -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG0 = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG1 = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG2 = 2 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG3 = 3 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_RESERVED4 = 4 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_RESERVED5 = 5 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT' -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC0', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICA_PIN', - 2: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICB_PIN', - 3: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICC_PIN', - 4: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICD_PIN', - 5: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICE_PIN', - 6: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICF_PIN', - 7: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKA_PIN', - 8: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKB_PIN', - 9: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_CLK_PIN', - 10: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_VSYNC_PIN', - 11: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD1', - 12: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD2', - 13: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_BLON_Y_PIN', - 14: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_RESERVED14', - 15: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_LOCK', - 16: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GSL_ALLOW_FLIP', - 17: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_PENDING', - 18: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_SOF', - 19: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HSYNC', - 20: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_VSYNC', - 21: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL', - 22: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 23: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC1', - 24: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_FLIP_PENDING', -} -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC0 = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICA_PIN = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICB_PIN = 2 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICC_PIN = 3 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICD_PIN = 4 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICE_PIN = 5 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICF_PIN = 6 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKA_PIN = 7 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKB_PIN = 8 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_CLK_PIN = 9 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_VSYNC_PIN = 10 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD1 = 11 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD2 = 12 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_BLON_Y_PIN = 13 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_RESERVED14 = 14 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_LOCK = 15 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GSL_ALLOW_FLIP = 16 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_PENDING = 17 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_SOF = 18 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HSYNC = 19 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_VSYNC = 20 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL = 21 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_MANUAL_FLOW_CONTROL = 22 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC1 = 23 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_FLIP_PENDING = 24 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL' -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL__enumvalues = { - 0: 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_0', - 1: 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_1', - 2: 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_2', - 3: 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_3', -} -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_0 = 0 -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_1 = 1 -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_2 = 2 -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_3 = 3 -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_FREQUENCY_SELECT' -OTG_TRIGB_FREQUENCY_SELECT__enumvalues = { - 0: 'OTG_TRIGB_FREQUENCY_SELECT_0', - 1: 'OTG_TRIGB_FREQUENCY_SELECT_1', - 2: 'OTG_TRIGB_FREQUENCY_SELECT_2', - 3: 'OTG_TRIGB_FREQUENCY_SELECT_3', -} -OTG_TRIGB_FREQUENCY_SELECT_0 = 0 -OTG_TRIGB_FREQUENCY_SELECT_1 = 1 -OTG_TRIGB_FREQUENCY_SELECT_2 = 2 -OTG_TRIGB_FREQUENCY_SELECT_3 = 3 -OTG_TRIGB_FREQUENCY_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL' -OTG_TRIGB_RISING_EDGE_DETECT_CNTL__enumvalues = { - 0: 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_0', - 1: 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_1', - 2: 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_2', - 3: 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_3', -} -OTG_TRIGB_RISING_EDGE_DETECT_CNTL_0 = 0 -OTG_TRIGB_RISING_EDGE_DETECT_CNTL_1 = 1 -OTG_TRIGB_RISING_EDGE_DETECT_CNTL_2 = 2 -OTG_TRIGB_RISING_EDGE_DETECT_CNTL_3 = 3 -OTG_TRIGB_RISING_EDGE_DETECT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK' -OTG_UPDATE_LOCK_OTG_UPDATE_LOCK__enumvalues = { - 0: 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_FALSE', - 1: 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_TRUE', -} -OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_FALSE = 0 -OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_TRUE = 1 -OTG_UPDATE_LOCK_OTG_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR' -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_TRUE', -} -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_FALSE = 0 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_TRUE = 1 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE' -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_TRUE', -} -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_FALSE = 0 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_TRUE = 1 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE' -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_TRUE', -} -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_FALSE = 0 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_TRUE = 1 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY' -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_TRUE', -} -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_FALSE = 0 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_TRUE = 1 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR' -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_CLEAR_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_TRUE', -} -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_CLEAR_FALSE = 0 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_TRUE = 1 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE' -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_TRUE', -} -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_FALSE = 0 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_TRUE = 1 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE' -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_TRUE', -} -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_FALSE = 0 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_TRUE = 1 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR' -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_CLEAR_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_TRUE', -} -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_CLEAR_FALSE = 0 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_TRUE = 1 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE' -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_TRUE', -} -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_FALSE = 0 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_TRUE = 1 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE' -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_TRUE', -} -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_FALSE = 0 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_TRUE = 1 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE' -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE__enumvalues = { - 0: 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_DISABLE', - 1: 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERA', - 2: 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERB', - 3: 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_RESERVED', -} -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_DISABLE = 0 -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERA = 1 -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERB = 2 -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_RESERVED = 3 -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR' -OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR__enumvalues = { - 0: 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_FALSE', - 1: 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_TRUE', -} -OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_FALSE = 0 -OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_TRUE = 1 -OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR' -OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR__enumvalues = { - 0: 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_FALSE', - 1: 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_TRUE', -} -OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_FALSE = 0 -OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_TRUE = 1 -OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VUPDATE_BLOCK_DISABLE' -OTG_VUPDATE_BLOCK_DISABLE__enumvalues = { - 0: 'OTG_VUPDATE_BLOCK_DISABLE_OFF', - 1: 'OTG_VUPDATE_BLOCK_DISABLE_ON', -} -OTG_VUPDATE_BLOCK_DISABLE_OFF = 0 -OTG_VUPDATE_BLOCK_DISABLE_ON = 1 -OTG_VUPDATE_BLOCK_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_SYNC_A_POL' -OTG_V_SYNC_A_POL__enumvalues = { - 0: 'OTG_V_SYNC_A_POL_HIGH', - 1: 'OTG_V_SYNC_A_POL_LOW', -} -OTG_V_SYNC_A_POL_HIGH = 0 -OTG_V_SYNC_A_POL_LOW = 1 -OTG_V_SYNC_A_POL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_SYNC_MODE' -OTG_V_SYNC_MODE__enumvalues = { - 0: 'OTG_V_SYNC_MODE_HSYNC', - 1: 'OTG_V_SYNC_MODE_HBLANK', -} -OTG_V_SYNC_MODE_HSYNC = 0 -OTG_V_SYNC_MODE_HBLANK = 1 -OTG_V_SYNC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD' -OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_0', - 1: 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_1', -} -OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_0 = 0 -OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_1 = 1 -OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT' -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_DISABLE', - 1: 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_ENABLE', -} -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_DISABLE = 0 -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_ENABLE = 1 -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC' -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_DISABLE', - 1: 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_ENABLE', -} -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_DISABLE = 0 -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_ENABLE = 1 -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL' -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_FALSE', - 1: 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_TRUE', -} -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_FALSE = 0 -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_TRUE = 1 -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL' -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_FALSE', - 1: 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_TRUE', -} -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_FALSE = 0 -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_TRUE = 1 -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK' -OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK__enumvalues = { - 0: 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK_FALSE', - 1: 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK_TRUE', -} -OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK_FALSE = 0 -OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK_TRUE = 1 -OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL' -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL__enumvalues = { - 0: 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG0', - 1: 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG1', - 2: 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG2', - 3: 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG3', - 4: 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_RESERVED4', - 5: 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_RESERVED5', -} -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG0 = 0 -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG1 = 1 -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG2 = 2 -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG3 = 3 -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_RESERVED4 = 4 -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_RESERVED5 = 5 -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DC_DMCUB_INT_TYPE' -DC_DMCUB_INT_TYPE__enumvalues = { - 0: 'INT_LEVEL', - 1: 'INT_PULSE', -} -INT_LEVEL = 0 -INT_PULSE = 1 -DC_DMCUB_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DC_DMCUB_TIMER_WINDOW' -DC_DMCUB_TIMER_WINDOW__enumvalues = { - 0: 'BITS_31_0', - 1: 'BITS_32_1', - 2: 'BITS_33_2', - 3: 'BITS_34_3', - 4: 'BITS_35_4', - 5: 'BITS_36_5', - 6: 'BITS_37_6', - 7: 'BITS_38_7', -} -BITS_31_0 = 0 -BITS_32_1 = 1 -BITS_33_2 = 2 -BITS_34_3 = 3 -BITS_35_4 = 4 -BITS_36_5 = 5 -BITS_37_6 = 6 -BITS_38_7 = 7 -DC_DMCUB_TIMER_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'INVALID_REG_ACCESS_TYPE' -INVALID_REG_ACCESS_TYPE__enumvalues = { - 0: 'REG_UNALLOCATED_ADDR_WRITE', - 1: 'REG_UNALLOCATED_ADDR_READ', - 2: 'REG_VIRTUAL_WRITE', - 3: 'REG_VIRTUAL_READ', - 4: 'REG_SECURE_VIOLATE_WRITE', - 5: 'REG_SECURE_VIOLATE_READ', -} -REG_UNALLOCATED_ADDR_WRITE = 0 -REG_UNALLOCATED_ADDR_READ = 1 -REG_VIRTUAL_WRITE = 2 -REG_VIRTUAL_READ = 3 -REG_SECURE_VIOLATE_WRITE = 4 -REG_SECURE_VIOLATE_READ = 5 -INVALID_REG_ACCESS_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DMU_DC_GPU_TIMER_READ_SELECT' -DMU_DC_GPU_TIMER_READ_SELECT__enumvalues = { - 0: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_0', - 1: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_1', - 2: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_2', - 3: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_3', - 4: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_4', - 5: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_5', - 6: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_6', - 7: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_7', - 8: 'RESERVED_8', - 9: 'RESERVED_9', - 10: 'RESERVED_10', - 11: 'RESERVED_11', - 12: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_STARTUP_12', - 13: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_STARTUP_13', - 14: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_STARTUP_14', - 15: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_STARTUP_15', - 16: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_STARTUP_16', - 17: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_STARTUP_17', - 18: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_STARTUP_18', - 19: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_STARTUP_19', - 20: 'RESERVED_20', - 21: 'RESERVED_21', - 22: 'RESERVED_22', - 23: 'RESERVED_23', - 24: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM_24', - 25: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM_25', - 26: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VSYNC_NOM_26', - 27: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VSYNC_NOM_27', - 28: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VSYNC_NOM_28', - 29: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VSYNC_NOM_29', - 30: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VSYNC_NOM_30', - 31: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VSYNC_NOM_31', - 32: 'RESERVED_32', - 33: 'RESERVED_33', - 34: 'RESERVED_34', - 35: 'RESERVED_35', - 36: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VREADY_36', - 37: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VREADY_37', - 38: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VREADY_38', - 39: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VREADY_39', - 40: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VREADY_40', - 41: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VREADY_41', - 42: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VREADY_42', - 43: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VREADY_43', - 44: 'RESERVED_44', - 45: 'RESERVED_45', - 46: 'RESERVED_46', - 47: 'RESERVED_47', - 48: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_48', - 49: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_49', - 50: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_50', - 51: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_51', - 52: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_52', - 53: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_53', - 54: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_54', - 55: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_55', - 56: 'RESERVED_56', - 57: 'RESERVED_57', - 58: 'RESERVED_58', - 59: 'RESERVED_59', - 60: 'RESERVED_60', - 61: 'RESERVED_61', - 62: 'RESERVED_62', - 63: 'RESERVED_63', - 64: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_NO_LOCK_64', - 65: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_NO_LOCK_65', - 66: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_NO_LOCK_66', - 67: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_NO_LOCK_67', - 68: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_NO_LOCK_68', - 69: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_NO_LOCK_69', - 70: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_NO_LOCK_70', - 71: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_NO_LOCK_71', - 72: 'RESERVED_72', - 73: 'RESERVED_73', - 74: 'RESERVED_74', - 75: 'RESERVED_75', - 76: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_AWAY_76', - 77: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_AWAY_77', - 78: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_AWAY_78', - 79: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_AWAY_79', - 80: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_AWAY_80', - 81: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_AWAY_81', - 82: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_AWAY_82', - 83: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_AWAY_83', - 84: 'RESERVED_84', - 85: 'RESERVED_85', - 86: 'RESERVED_86', - 87: 'RESERVED_87', - 88: 'RESERVED_88', - 89: 'RESERVED_89', - 90: 'RESERVED_90', - 91: 'RESERVED_91', -} -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_0 = 0 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_1 = 1 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_2 = 2 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_3 = 3 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_4 = 4 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_5 = 5 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_6 = 6 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_7 = 7 -RESERVED_8 = 8 -RESERVED_9 = 9 -RESERVED_10 = 10 -RESERVED_11 = 11 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_STARTUP_12 = 12 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_STARTUP_13 = 13 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_STARTUP_14 = 14 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_STARTUP_15 = 15 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_STARTUP_16 = 16 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_STARTUP_17 = 17 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_STARTUP_18 = 18 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_STARTUP_19 = 19 -RESERVED_20 = 20 -RESERVED_21 = 21 -RESERVED_22 = 22 -RESERVED_23 = 23 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM_24 = 24 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM_25 = 25 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VSYNC_NOM_26 = 26 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VSYNC_NOM_27 = 27 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VSYNC_NOM_28 = 28 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VSYNC_NOM_29 = 29 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VSYNC_NOM_30 = 30 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VSYNC_NOM_31 = 31 -RESERVED_32 = 32 -RESERVED_33 = 33 -RESERVED_34 = 34 -RESERVED_35 = 35 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VREADY_36 = 36 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VREADY_37 = 37 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VREADY_38 = 38 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VREADY_39 = 39 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VREADY_40 = 40 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VREADY_41 = 41 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VREADY_42 = 42 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VREADY_43 = 43 -RESERVED_44 = 44 -RESERVED_45 = 45 -RESERVED_46 = 46 -RESERVED_47 = 47 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_48 = 48 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_49 = 49 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_50 = 50 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_51 = 51 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_52 = 52 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_53 = 53 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_54 = 54 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_55 = 55 -RESERVED_56 = 56 -RESERVED_57 = 57 -RESERVED_58 = 58 -RESERVED_59 = 59 -RESERVED_60 = 60 -RESERVED_61 = 61 -RESERVED_62 = 62 -RESERVED_63 = 63 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_NO_LOCK_64 = 64 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_NO_LOCK_65 = 65 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_NO_LOCK_66 = 66 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_NO_LOCK_67 = 67 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_NO_LOCK_68 = 68 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_NO_LOCK_69 = 69 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_NO_LOCK_70 = 70 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_NO_LOCK_71 = 71 -RESERVED_72 = 72 -RESERVED_73 = 73 -RESERVED_74 = 74 -RESERVED_75 = 75 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_AWAY_76 = 76 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_AWAY_77 = 77 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_AWAY_78 = 78 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_AWAY_79 = 79 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_AWAY_80 = 80 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_AWAY_81 = 81 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_AWAY_82 = 82 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_AWAY_83 = 83 -RESERVED_84 = 84 -RESERVED_85 = 85 -RESERVED_86 = 86 -RESERVED_87 = 87 -RESERVED_88 = 88 -RESERVED_89 = 89 -RESERVED_90 = 90 -RESERVED_91 = 91 -DMU_DC_GPU_TIMER_READ_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DMU_DC_GPU_TIMER_START_POSITION' -DMU_DC_GPU_TIMER_START_POSITION__enumvalues = { - 0: 'DMU_GPU_TIMER_START_0_END_27', - 1: 'DMU_GPU_TIMER_START_1_END_28', - 2: 'DMU_GPU_TIMER_START_2_END_29', - 3: 'DMU_GPU_TIMER_START_3_END_30', - 4: 'DMU_GPU_TIMER_START_4_END_31', - 5: 'DMU_GPU_TIMER_START_6_END_33', - 6: 'DMU_GPU_TIMER_START_8_END_35', - 7: 'DMU_GPU_TIMER_START_10_END_37', -} -DMU_GPU_TIMER_START_0_END_27 = 0 -DMU_GPU_TIMER_START_1_END_28 = 1 -DMU_GPU_TIMER_START_2_END_29 = 2 -DMU_GPU_TIMER_START_3_END_30 = 3 -DMU_GPU_TIMER_START_4_END_31 = 4 -DMU_GPU_TIMER_START_6_END_33 = 5 -DMU_GPU_TIMER_START_8_END_35 = 6 -DMU_GPU_TIMER_START_10_END_37 = 7 -DMU_DC_GPU_TIMER_START_POSITION = ctypes.c_uint32 # enum - -# values for enumeration 'IHC_INTERRUPT_DEST' -IHC_INTERRUPT_DEST__enumvalues = { - 0: 'INTERRUPT_SENT_TO_IH', - 1: 'INTERRUPT_SENT_TO_DMCUB', -} -INTERRUPT_SENT_TO_IH = 0 -INTERRUPT_SENT_TO_DMCUB = 1 -IHC_INTERRUPT_DEST = ctypes.c_uint32 # enum - -# values for enumeration 'IHC_INTERRUPT_LINE_STATUS' -IHC_INTERRUPT_LINE_STATUS__enumvalues = { - 0: 'INTERRUPT_LINE_NOT_ASSERTED', - 1: 'INTERRUPT_LINE_ASSERTED', -} -INTERRUPT_LINE_NOT_ASSERTED = 0 -INTERRUPT_LINE_ASSERTED = 1 -IHC_INTERRUPT_LINE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'DC_SMU_INTERRUPT_ENABLE' -DC_SMU_INTERRUPT_ENABLE__enumvalues = { - 0: 'DISABLE_THE_INTERRUPT', - 1: 'ENABLE_THE_INTERRUPT', -} -DISABLE_THE_INTERRUPT = 0 -ENABLE_THE_INTERRUPT = 1 -DC_SMU_INTERRUPT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DMU_CLOCK_ON' -DMU_CLOCK_ON__enumvalues = { - 0: 'DMU_CLOCK_STATUS_ON', - 1: 'DMU_CLOCK_STATUS_OFF', -} -DMU_CLOCK_STATUS_ON = 0 -DMU_CLOCK_STATUS_OFF = 1 -DMU_CLOCK_ON = ctypes.c_uint32 # enum - -# values for enumeration 'SMU_INTR' -SMU_INTR__enumvalues = { - 0: 'SMU_MSG_INTR_NOOP', - 1: 'SET_SMU_MSG_INTR', -} -SMU_MSG_INTR_NOOP = 0 -SET_SMU_MSG_INTR = 1 -SMU_INTR = ctypes.c_uint32 # enum - -# values for enumeration 'ALLOW_SR_ON_TRANS_REQ' -ALLOW_SR_ON_TRANS_REQ__enumvalues = { - 0: 'ALLOW_SR_ON_TRANS_REQ_ENABLE', - 1: 'ALLOW_SR_ON_TRANS_REQ_DISABLE', -} -ALLOW_SR_ON_TRANS_REQ_ENABLE = 0 -ALLOW_SR_ON_TRANS_REQ_DISABLE = 1 -ALLOW_SR_ON_TRANS_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'AMCLOCK_ENABLE' -AMCLOCK_ENABLE__enumvalues = { - 0: 'ENABLE_AMCLK0', - 1: 'ENABLE_AMCLK1', -} -ENABLE_AMCLK0 = 0 -ENABLE_AMCLK1 = 1 -AMCLOCK_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CLEAR_SMU_INTR' -CLEAR_SMU_INTR__enumvalues = { - 0: 'SMU_INTR_STATUS_NOOP', - 1: 'SMU_INTR_STATUS_CLEAR', -} -SMU_INTR_STATUS_NOOP = 0 -SMU_INTR_STATUS_CLEAR = 1 -CLEAR_SMU_INTR = ctypes.c_uint32 # enum - -# values for enumeration 'CLOCK_BRANCH_SOFT_RESET' -CLOCK_BRANCH_SOFT_RESET__enumvalues = { - 0: 'CLOCK_BRANCH_SOFT_RESET_NOOP', - 1: 'CLOCK_BRANCH_SOFT_RESET_FORCE', -} -CLOCK_BRANCH_SOFT_RESET_NOOP = 0 -CLOCK_BRANCH_SOFT_RESET_FORCE = 1 -CLOCK_BRANCH_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO0_SOURCE_SEL' -DCCG_AUDIO_DTO0_SOURCE_SEL__enumvalues = { - 0: 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG0', - 1: 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG1', - 2: 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG2', - 3: 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG3', - 4: 'DCCG_AUDIO_DTO0_SOURCE_SEL_RESERVED', -} -DCCG_AUDIO_DTO0_SOURCE_SEL_OTG0 = 0 -DCCG_AUDIO_DTO0_SOURCE_SEL_OTG1 = 1 -DCCG_AUDIO_DTO0_SOURCE_SEL_OTG2 = 2 -DCCG_AUDIO_DTO0_SOURCE_SEL_OTG3 = 3 -DCCG_AUDIO_DTO0_SOURCE_SEL_RESERVED = 4 -DCCG_AUDIO_DTO0_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO2_SOURCE_SEL' -DCCG_AUDIO_DTO2_SOURCE_SEL__enumvalues = { - 0: 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0', - 1: 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0_DIV2', -} -DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0 = 0 -DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0_DIV2 = 1 -DCCG_AUDIO_DTO2_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO_SEL' -DCCG_AUDIO_DTO_SEL__enumvalues = { - 0: 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO0', - 1: 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO1', - 2: 'DCCG_AUDIO_DTO_SEL_NO_AUDIO_DTO', -} -DCCG_AUDIO_DTO_SEL_AUDIO_DTO0 = 0 -DCCG_AUDIO_DTO_SEL_AUDIO_DTO1 = 1 -DCCG_AUDIO_DTO_SEL_NO_AUDIO_DTO = 2 -DCCG_AUDIO_DTO_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO_USE_512FBR_DTO' -DCCG_AUDIO_DTO_USE_512FBR_DTO__enumvalues = { - 0: 'DCCG_AUDIO_DTO_USE_128FBR_FOR_DP', - 1: 'DCCG_AUDIO_DTO_USE_512FBR_FOR_DP', -} -DCCG_AUDIO_DTO_USE_128FBR_FOR_DP = 0 -DCCG_AUDIO_DTO_USE_512FBR_FOR_DP = 1 -DCCG_AUDIO_DTO_USE_512FBR_DTO = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_DBG_BLOCK_SEL' -DCCG_DBG_BLOCK_SEL__enumvalues = { - 0: 'DCCG_DBG_BLOCK_SEL_DCCG', - 1: 'DCCG_DBG_BLOCK_SEL_PMON', - 2: 'DCCG_DBG_BLOCK_SEL_PMON2', -} -DCCG_DBG_BLOCK_SEL_DCCG = 0 -DCCG_DBG_BLOCK_SEL_PMON = 1 -DCCG_DBG_BLOCK_SEL_PMON2 = 2 -DCCG_DBG_BLOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_DBG_EN' -DCCG_DBG_EN__enumvalues = { - 0: 'DCCG_DBG_EN_DISABLE', - 1: 'DCCG_DBG_EN_ENABLE', -} -DCCG_DBG_EN_DISABLE = 0 -DCCG_DBG_EN_ENABLE = 1 -DCCG_DBG_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_DEEP_COLOR_CNTL' -DCCG_DEEP_COLOR_CNTL__enumvalues = { - 0: 'DCCG_DEEP_COLOR_DTO_DISABLE', - 1: 'DCCG_DEEP_COLOR_DTO_5_4_RATIO', - 2: 'DCCG_DEEP_COLOR_DTO_3_2_RATIO', - 3: 'DCCG_DEEP_COLOR_DTO_2_1_RATIO', -} -DCCG_DEEP_COLOR_DTO_DISABLE = 0 -DCCG_DEEP_COLOR_DTO_5_4_RATIO = 1 -DCCG_DEEP_COLOR_DTO_3_2_RATIO = 2 -DCCG_DEEP_COLOR_DTO_2_1_RATIO = 3 -DCCG_DEEP_COLOR_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_FIFO_ERRDET_OVR_EN' -DCCG_FIFO_ERRDET_OVR_EN__enumvalues = { - 0: 'DCCG_FIFO_ERRDET_OVR_DISABLE', - 1: 'DCCG_FIFO_ERRDET_OVR_ENABLE', -} -DCCG_FIFO_ERRDET_OVR_DISABLE = 0 -DCCG_FIFO_ERRDET_OVR_ENABLE = 1 -DCCG_FIFO_ERRDET_OVR_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_FIFO_ERRDET_RESET' -DCCG_FIFO_ERRDET_RESET__enumvalues = { - 0: 'DCCG_FIFO_ERRDET_RESET_NOOP', - 1: 'DCCG_FIFO_ERRDET_RESET_FORCE', -} -DCCG_FIFO_ERRDET_RESET_NOOP = 0 -DCCG_FIFO_ERRDET_RESET_FORCE = 1 -DCCG_FIFO_ERRDET_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_FIFO_ERRDET_STATE' -DCCG_FIFO_ERRDET_STATE__enumvalues = { - 0: 'DCCG_FIFO_ERRDET_STATE_CALIBRATION', - 1: 'DCCG_FIFO_ERRDET_STATE_DETECTION', -} -DCCG_FIFO_ERRDET_STATE_CALIBRATION = 0 -DCCG_FIFO_ERRDET_STATE_DETECTION = 1 -DCCG_FIFO_ERRDET_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_MODE_HSYNC' -DCCG_PERF_MODE_HSYNC__enumvalues = { - 0: 'DCCG_PERF_MODE_HSYNC_NOOP', - 1: 'DCCG_PERF_MODE_HSYNC_START', -} -DCCG_PERF_MODE_HSYNC_NOOP = 0 -DCCG_PERF_MODE_HSYNC_START = 1 -DCCG_PERF_MODE_HSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_MODE_VSYNC' -DCCG_PERF_MODE_VSYNC__enumvalues = { - 0: 'DCCG_PERF_MODE_VSYNC_NOOP', - 1: 'DCCG_PERF_MODE_VSYNC_START', -} -DCCG_PERF_MODE_VSYNC_NOOP = 0 -DCCG_PERF_MODE_VSYNC_START = 1 -DCCG_PERF_MODE_VSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_OTG_SELECT' -DCCG_PERF_OTG_SELECT__enumvalues = { - 0: 'DCCG_PERF_SEL_OTG0', - 1: 'DCCG_PERF_SEL_OTG1', - 2: 'DCCG_PERF_SEL_OTG2', - 3: 'DCCG_PERF_SEL_OTG3', - 4: 'DCCG_PERF_SEL_RESERVED', -} -DCCG_PERF_SEL_OTG0 = 0 -DCCG_PERF_SEL_OTG1 = 1 -DCCG_PERF_SEL_OTG2 = 2 -DCCG_PERF_SEL_OTG3 = 3 -DCCG_PERF_SEL_RESERVED = 4 -DCCG_PERF_OTG_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_RUN' -DCCG_PERF_RUN__enumvalues = { - 0: 'DCCG_PERF_RUN_NOOP', - 1: 'DCCG_PERF_RUN_START', -} -DCCG_PERF_RUN_NOOP = 0 -DCCG_PERF_RUN_START = 1 -DCCG_PERF_RUN = ctypes.c_uint32 # enum - -# values for enumeration 'DC_MEM_GLOBAL_PWR_REQ_DIS' -DC_MEM_GLOBAL_PWR_REQ_DIS__enumvalues = { - 0: 'DC_MEM_GLOBAL_PWR_REQ_ENABLE', - 1: 'DC_MEM_GLOBAL_PWR_REQ_DISABLE', -} -DC_MEM_GLOBAL_PWR_REQ_ENABLE = 0 -DC_MEM_GLOBAL_PWR_REQ_DISABLE = 1 -DC_MEM_GLOBAL_PWR_REQ_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'DIO_FIFO_ERROR' -DIO_FIFO_ERROR__enumvalues = { - 0: 'DIO_FIFO_ERROR_00', - 1: 'DIO_FIFO_ERROR_01', - 2: 'DIO_FIFO_ERROR_10', - 3: 'DIO_FIFO_ERROR_11', -} -DIO_FIFO_ERROR_00 = 0 -DIO_FIFO_ERROR_01 = 1 -DIO_FIFO_ERROR_10 = 2 -DIO_FIFO_ERROR_11 = 3 -DIO_FIFO_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'DISABLE_CLOCK_GATING' -DISABLE_CLOCK_GATING__enumvalues = { - 0: 'CLOCK_GATING_ENABLED', - 1: 'CLOCK_GATING_DISABLED', -} -CLOCK_GATING_ENABLED = 0 -CLOCK_GATING_DISABLED = 1 -DISABLE_CLOCK_GATING = ctypes.c_uint32 # enum - -# values for enumeration 'DISABLE_CLOCK_GATING_IN_DCO' -DISABLE_CLOCK_GATING_IN_DCO__enumvalues = { - 0: 'CLOCK_GATING_ENABLED_IN_DCO', - 1: 'CLOCK_GATING_DISABLED_IN_DCO', -} -CLOCK_GATING_ENABLED_IN_DCO = 0 -CLOCK_GATING_DISABLED_IN_DCO = 1 -DISABLE_CLOCK_GATING_IN_DCO = ctypes.c_uint32 # enum - -# values for enumeration 'DISPCLK_CHG_FWD_CORR_DISABLE' -DISPCLK_CHG_FWD_CORR_DISABLE__enumvalues = { - 0: 'DISPCLK_CHG_FWD_CORR_ENABLE_AT_BEGINNING', - 1: 'DISPCLK_CHG_FWD_CORR_DISABLE_AT_BEGINNING', -} -DISPCLK_CHG_FWD_CORR_ENABLE_AT_BEGINNING = 0 -DISPCLK_CHG_FWD_CORR_DISABLE_AT_BEGINNING = 1 -DISPCLK_CHG_FWD_CORR_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DISPCLK_FREQ_RAMP_DONE' -DISPCLK_FREQ_RAMP_DONE__enumvalues = { - 0: 'DISPCLK_FREQ_RAMP_IN_PROGRESS', - 1: 'DISPCLK_FREQ_RAMP_COMPLETED', -} -DISPCLK_FREQ_RAMP_IN_PROGRESS = 0 -DISPCLK_FREQ_RAMP_COMPLETED = 1 -DISPCLK_FREQ_RAMP_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'DPREFCLK_SRC_SEL' -DPREFCLK_SRC_SEL__enumvalues = { - 0: 'DPREFCLK_SRC_SEL_CK', - 1: 'DPREFCLK_SRC_SEL_P0PLL', - 2: 'DPREFCLK_SRC_SEL_P1PLL', - 3: 'DPREFCLK_SRC_SEL_P2PLL', -} -DPREFCLK_SRC_SEL_CK = 0 -DPREFCLK_SRC_SEL_P0PLL = 1 -DPREFCLK_SRC_SEL_P1PLL = 2 -DPREFCLK_SRC_SEL_P2PLL = 3 -DPREFCLK_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DTO_DS_DISABLE' -DP_DTO_DS_DISABLE__enumvalues = { - 0: 'DP_DTO_DESPREAD_DISABLE', - 1: 'DP_DTO_DESPREAD_ENABLE', -} -DP_DTO_DESPREAD_DISABLE = 0 -DP_DTO_DESPREAD_ENABLE = 1 -DP_DTO_DS_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DS_HW_CAL_ENABLE' -DS_HW_CAL_ENABLE__enumvalues = { - 0: 'DS_HW_CAL_DIS', - 1: 'DS_HW_CAL_EN', -} -DS_HW_CAL_DIS = 0 -DS_HW_CAL_EN = 1 -DS_HW_CAL_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DS_REF_SRC' -DS_REF_SRC__enumvalues = { - 0: 'DS_REF_IS_XTALIN', - 1: 'DS_REF_IS_EXT_GENLOCK', - 2: 'DS_REF_IS_PCIE', -} -DS_REF_IS_XTALIN = 0 -DS_REF_IS_EXT_GENLOCK = 1 -DS_REF_IS_PCIE = 2 -DS_REF_SRC = ctypes.c_uint32 # enum - -# values for enumeration 'DVO_ENABLE_RST' -DVO_ENABLE_RST__enumvalues = { - 0: 'DVO_ENABLE_RST_DISABLE', - 1: 'DVO_ENABLE_RST_ENABLE', -} -DVO_ENABLE_RST_DISABLE = 0 -DVO_ENABLE_RST_ENABLE = 1 -DVO_ENABLE_RST = ctypes.c_uint32 # enum - -# values for enumeration 'ENABLE' -ENABLE__enumvalues = { - 0: 'DISABLE_THE_FEATURE', - 1: 'ENABLE_THE_FEATURE', -} -DISABLE_THE_FEATURE = 0 -ENABLE_THE_FEATURE = 1 -ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'ENABLE_CLOCK' -ENABLE_CLOCK__enumvalues = { - 0: 'ENABLE_THE_REFCLK', - 1: 'ENABLE_THE_FUNC_CLOCK', -} -ENABLE_THE_REFCLK = 0 -ENABLE_THE_FUNC_CLOCK = 1 -ENABLE_CLOCK = ctypes.c_uint32 # enum - -# values for enumeration 'FORCE_DISABLE_CLOCK' -FORCE_DISABLE_CLOCK__enumvalues = { - 0: 'NOT_FORCE_THE_CLOCK_DISABLED', - 1: 'FORCE_THE_CLOCK_DISABLED', -} -NOT_FORCE_THE_CLOCK_DISABLED = 0 -FORCE_THE_CLOCK_DISABLED = 1 -FORCE_DISABLE_CLOCK = ctypes.c_uint32 # enum - -# values for enumeration 'HDMICHARCLK_SRC_SEL' -HDMICHARCLK_SRC_SEL__enumvalues = { - 0: 'HDMICHARCLK_SRC_SEL_UNIPHYA', - 1: 'HDMICHARCLK_SRC_SEL_UNIPHYB', - 2: 'HDMICHARCLK_SRC_SEL_UNIPHYC', - 3: 'HDMICHARCLK_SRC_SEL_UNIPHYD', - 4: 'HDMICHARCLK_SRC_SEL_SRC_RESERVED', -} -HDMICHARCLK_SRC_SEL_UNIPHYA = 0 -HDMICHARCLK_SRC_SEL_UNIPHYB = 1 -HDMICHARCLK_SRC_SEL_UNIPHYC = 2 -HDMICHARCLK_SRC_SEL_UNIPHYD = 3 -HDMICHARCLK_SRC_SEL_SRC_RESERVED = 4 -HDMICHARCLK_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'HDMISTREAMCLK_SRC_SEL' -HDMISTREAMCLK_SRC_SEL__enumvalues = { - 0: 'SEL_DTBCLK_P0', - 1: 'SEL_DTBCLK_P1', - 2: 'SEL_DTBCLK_P2', - 3: 'SEL_DTBCLK_P3', -} -SEL_DTBCLK_P0 = 0 -SEL_DTBCLK_P1 = 1 -SEL_DTBCLK_P2 = 2 -SEL_DTBCLK_P3 = 3 -HDMISTREAMCLK_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'JITTER_REMOVE_DISABLE' -JITTER_REMOVE_DISABLE__enumvalues = { - 0: 'ENABLE_JITTER_REMOVAL', - 1: 'DISABLE_JITTER_REMOVAL', -} -ENABLE_JITTER_REMOVAL = 0 -DISABLE_JITTER_REMOVAL = 1 -JITTER_REMOVE_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL' -MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL__enumvalues = { - 0: 'MICROSECOND_TIME_BASE_CLOCK_IS_XTALIN', - 1: 'MICROSECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK', -} -MICROSECOND_TIME_BASE_CLOCK_IS_XTALIN = 0 -MICROSECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK = 1 -MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL' -MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL__enumvalues = { - 0: 'MILLISECOND_TIME_BASE_CLOCK_IS_XTALIN', - 1: 'MILLISECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK', -} -MILLISECOND_TIME_BASE_CLOCK_IS_XTALIN = 0 -MILLISECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK = 1 -MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_ADD_PIXEL' -OTG_ADD_PIXEL__enumvalues = { - 0: 'OTG_ADD_PIXEL_NOOP', - 1: 'OTG_ADD_PIXEL_FORCE', -} -OTG_ADD_PIXEL_NOOP = 0 -OTG_ADD_PIXEL_FORCE = 1 -OTG_ADD_PIXEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DROP_PIXEL' -OTG_DROP_PIXEL__enumvalues = { - 0: 'OTG_DROP_PIXEL_NOOP', - 1: 'OTG_DROP_PIXEL_FORCE', -} -OTG_DROP_PIXEL_NOOP = 0 -OTG_DROP_PIXEL_FORCE = 1 -OTG_DROP_PIXEL = ctypes.c_uint32 # enum - -# values for enumeration 'PHYSYMCLK_FORCE_EN' -PHYSYMCLK_FORCE_EN__enumvalues = { - 0: 'PHYSYMCLK_FORCE_EN_DISABLE', - 1: 'PHYSYMCLK_FORCE_EN_ENABLE', -} -PHYSYMCLK_FORCE_EN_DISABLE = 0 -PHYSYMCLK_FORCE_EN_ENABLE = 1 -PHYSYMCLK_FORCE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PHYSYMCLK_FORCE_SRC_SEL' -PHYSYMCLK_FORCE_SRC_SEL__enumvalues = { - 0: 'PHYSYMCLK_FORCE_SRC_SYMCLK', - 1: 'PHYSYMCLK_FORCE_SRC_PHYD18CLK', - 2: 'PHYSYMCLK_FORCE_SRC_PHYD32CLK', -} -PHYSYMCLK_FORCE_SRC_SYMCLK = 0 -PHYSYMCLK_FORCE_SRC_PHYD18CLK = 1 -PHYSYMCLK_FORCE_SRC_PHYD32CLK = 2 -PHYSYMCLK_FORCE_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_PHYPLL_PIXEL_RATE_SOURCE' -PIPE_PHYPLL_PIXEL_RATE_SOURCE__enumvalues = { - 0: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYA', - 1: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYB', - 2: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYC', - 3: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYD', - 4: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_RESERVED', -} -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYA = 0 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYB = 1 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYC = 2 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYD = 3 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_RESERVED = 4 -PIPE_PHYPLL_PIXEL_RATE_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_PIXEL_RATE_PLL_SOURCE' -PIPE_PIXEL_RATE_PLL_SOURCE__enumvalues = { - 0: 'PIPE_PIXEL_RATE_PLL_SOURCE_PHYPLL', - 1: 'PIPE_PIXEL_RATE_PLL_SOURCE_DISPPLL', -} -PIPE_PIXEL_RATE_PLL_SOURCE_PHYPLL = 0 -PIPE_PIXEL_RATE_PLL_SOURCE_DISPPLL = 1 -PIPE_PIXEL_RATE_PLL_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_PIXEL_RATE_SOURCE' -PIPE_PIXEL_RATE_SOURCE__enumvalues = { - 0: 'PIPE_PIXEL_RATE_SOURCE_P0PLL', - 1: 'PIPE_PIXEL_RATE_SOURCE_P1PLL', - 2: 'PIPE_PIXEL_RATE_SOURCE_P2PLL', -} -PIPE_PIXEL_RATE_SOURCE_P0PLL = 0 -PIPE_PIXEL_RATE_SOURCE_P1PLL = 1 -PIPE_PIXEL_RATE_SOURCE_P2PLL = 2 -PIPE_PIXEL_RATE_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'PLL_CFG_IF_SOFT_RESET' -PLL_CFG_IF_SOFT_RESET__enumvalues = { - 0: 'PLL_CFG_IF_SOFT_RESET_NOOP', - 1: 'PLL_CFG_IF_SOFT_RESET_FORCE', -} -PLL_CFG_IF_SOFT_RESET_NOOP = 0 -PLL_CFG_IF_SOFT_RESET_FORCE = 1 -PLL_CFG_IF_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'SYMCLK_FE_SRC' -SYMCLK_FE_SRC__enumvalues = { - 0: 'SYMCLK_FE_SRC_UNIPHYA', - 1: 'SYMCLK_FE_SRC_UNIPHYB', - 2: 'SYMCLK_FE_SRC_UNIPHYC', - 3: 'SYMCLK_FE_SRC_UNIPHYD', - 4: 'SYMCLK_FE_SRC_RESERVED', -} -SYMCLK_FE_SRC_UNIPHYA = 0 -SYMCLK_FE_SRC_UNIPHYB = 1 -SYMCLK_FE_SRC_UNIPHYC = 2 -SYMCLK_FE_SRC_UNIPHYD = 3 -SYMCLK_FE_SRC_RESERVED = 4 -SYMCLK_FE_SRC = ctypes.c_uint32 # enum - -# values for enumeration 'TEST_CLK_DIV_SEL' -TEST_CLK_DIV_SEL__enumvalues = { - 0: 'NO_DIV', - 1: 'DIV_2', - 2: 'DIV_4', - 3: 'DIV_8', -} -NO_DIV = 0 -DIV_2 = 1 -DIV_4 = 2 -DIV_8 = 3 -TEST_CLK_DIV_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'VSYNC_CNT_LATCH_MASK' -VSYNC_CNT_LATCH_MASK__enumvalues = { - 0: 'VSYNC_CNT_LATCH_MASK_0', - 1: 'VSYNC_CNT_LATCH_MASK_1', -} -VSYNC_CNT_LATCH_MASK_0 = 0 -VSYNC_CNT_LATCH_MASK_1 = 1 -VSYNC_CNT_LATCH_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'VSYNC_CNT_RESET_SEL' -VSYNC_CNT_RESET_SEL__enumvalues = { - 0: 'VSYNC_CNT_RESET_SEL_0', - 1: 'VSYNC_CNT_RESET_SEL_1', -} -VSYNC_CNT_RESET_SEL_0 = 0 -VSYNC_CNT_RESET_SEL_1 = 1 -VSYNC_CNT_RESET_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'XTAL_REF_CLOCK_SOURCE_SEL' -XTAL_REF_CLOCK_SOURCE_SEL__enumvalues = { - 0: 'XTAL_REF_CLOCK_SOURCE_SEL_XTALIN', - 1: 'XTAL_REF_CLOCK_SOURCE_SEL_DCCGREFCLK', -} -XTAL_REF_CLOCK_SOURCE_SEL_XTALIN = 0 -XTAL_REF_CLOCK_SOURCE_SEL_DCCGREFCLK = 1 -XTAL_REF_CLOCK_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'XTAL_REF_SEL' -XTAL_REF_SEL__enumvalues = { - 0: 'XTAL_REF_SEL_1X', - 1: 'XTAL_REF_SEL_2X', -} -XTAL_REF_SEL_1X = 0 -XTAL_REF_SEL_2X = 1 -XTAL_REF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_8B10B_CUR_DISP' -DPHY_8B10B_CUR_DISP__enumvalues = { - 0: 'DPHY_8B10B_CUR_DISP_ZERO', - 1: 'DPHY_8B10B_CUR_DISP_ONE', -} -DPHY_8B10B_CUR_DISP_ZERO = 0 -DPHY_8B10B_CUR_DISP_ONE = 1 -DPHY_8B10B_CUR_DISP = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_8B10B_RESET' -DPHY_8B10B_RESET__enumvalues = { - 0: 'DPHY_8B10B_NOT_RESET', - 1: 'DPHY_8B10B_RESETET', -} -DPHY_8B10B_NOT_RESET = 0 -DPHY_8B10B_RESETET = 1 -DPHY_8B10B_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE0' -DPHY_ATEST_SEL_LANE0__enumvalues = { - 0: 'DPHY_ATEST_LANE0_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE0_REG_PATTERN', -} -DPHY_ATEST_LANE0_PRBS_PATTERN = 0 -DPHY_ATEST_LANE0_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE0 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE1' -DPHY_ATEST_SEL_LANE1__enumvalues = { - 0: 'DPHY_ATEST_LANE1_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE1_REG_PATTERN', -} -DPHY_ATEST_LANE1_PRBS_PATTERN = 0 -DPHY_ATEST_LANE1_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE1 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE2' -DPHY_ATEST_SEL_LANE2__enumvalues = { - 0: 'DPHY_ATEST_LANE2_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE2_REG_PATTERN', -} -DPHY_ATEST_LANE2_PRBS_PATTERN = 0 -DPHY_ATEST_LANE2_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE2 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE3' -DPHY_ATEST_SEL_LANE3__enumvalues = { - 0: 'DPHY_ATEST_LANE3_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE3_REG_PATTERN', -} -DPHY_ATEST_LANE3_PRBS_PATTERN = 0 -DPHY_ATEST_LANE3_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE3 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_BYPASS' -DPHY_BYPASS__enumvalues = { - 0: 'DPHY_8B10B_OUTPUT', - 1: 'DPHY_DBG_OUTPUT', -} -DPHY_8B10B_OUTPUT = 0 -DPHY_DBG_OUTPUT = 1 -DPHY_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_CONT_EN' -DPHY_CRC_CONT_EN__enumvalues = { - 0: 'DPHY_CRC_ONE_SHOT', - 1: 'DPHY_CRC_CONTINUOUS', -} -DPHY_CRC_ONE_SHOT = 0 -DPHY_CRC_CONTINUOUS = 1 -DPHY_CRC_CONT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_EN' -DPHY_CRC_EN__enumvalues = { - 0: 'DPHY_CRC_DISABLED', - 1: 'DPHY_CRC_ENABLED', -} -DPHY_CRC_DISABLED = 0 -DPHY_CRC_ENABLED = 1 -DPHY_CRC_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_FIELD' -DPHY_CRC_FIELD__enumvalues = { - 0: 'DPHY_CRC_START_FROM_TOP_FIELD', - 1: 'DPHY_CRC_START_FROM_BOTTOM_FIELD', -} -DPHY_CRC_START_FROM_TOP_FIELD = 0 -DPHY_CRC_START_FROM_BOTTOM_FIELD = 1 -DPHY_CRC_FIELD = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_MST_PHASE_ERROR_ACK' -DPHY_CRC_MST_PHASE_ERROR_ACK__enumvalues = { - 0: 'DPHY_CRC_MST_PHASE_ERROR_NO_ACK', - 1: 'DPHY_CRC_MST_PHASE_ERROR_ACKED', -} -DPHY_CRC_MST_PHASE_ERROR_NO_ACK = 0 -DPHY_CRC_MST_PHASE_ERROR_ACKED = 1 -DPHY_CRC_MST_PHASE_ERROR_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_SEL' -DPHY_CRC_SEL__enumvalues = { - 0: 'DPHY_CRC_LANE0_SELECTED', - 1: 'DPHY_CRC_LANE1_SELECTED', - 2: 'DPHY_CRC_LANE2_SELECTED', - 3: 'DPHY_CRC_LANE3_SELECTED', -} -DPHY_CRC_LANE0_SELECTED = 0 -DPHY_CRC_LANE1_SELECTED = 1 -DPHY_CRC_LANE2_SELECTED = 2 -DPHY_CRC_LANE3_SELECTED = 3 -DPHY_CRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_FEC_ENABLE' -DPHY_FEC_ENABLE__enumvalues = { - 0: 'DPHY_FEC_DISABLED', - 1: 'DPHY_FEC_ENABLED', -} -DPHY_FEC_DISABLED = 0 -DPHY_FEC_ENABLED = 1 -DPHY_FEC_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_FEC_READY' -DPHY_FEC_READY__enumvalues = { - 0: 'DPHY_FEC_READY_EN', - 1: 'DPHY_FEC_READY_DIS', -} -DPHY_FEC_READY_EN = 0 -DPHY_FEC_READY_DIS = 1 -DPHY_FEC_READY = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_LOAD_BS_COUNT_START' -DPHY_LOAD_BS_COUNT_START__enumvalues = { - 0: 'DPHY_LOAD_BS_COUNT_STARTED', - 1: 'DPHY_LOAD_BS_COUNT_NOT_STARTED', -} -DPHY_LOAD_BS_COUNT_STARTED = 0 -DPHY_LOAD_BS_COUNT_NOT_STARTED = 1 -DPHY_LOAD_BS_COUNT_START = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_PRBS_EN' -DPHY_PRBS_EN__enumvalues = { - 0: 'DPHY_PRBS_DISABLE', - 1: 'DPHY_PRBS_ENABLE', -} -DPHY_PRBS_DISABLE = 0 -DPHY_PRBS_ENABLE = 1 -DPHY_PRBS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_PRBS_SEL' -DPHY_PRBS_SEL__enumvalues = { - 0: 'DPHY_PRBS7_SELECTED', - 1: 'DPHY_PRBS23_SELECTED', - 2: 'DPHY_PRBS11_SELECTED', -} -DPHY_PRBS7_SELECTED = 0 -DPHY_PRBS23_SELECTED = 1 -DPHY_PRBS11_SELECTED = 2 -DPHY_PRBS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_RX_FAST_TRAINING_CAPABLE' -DPHY_RX_FAST_TRAINING_CAPABLE__enumvalues = { - 0: 'DPHY_FAST_TRAINING_NOT_CAPABLE_0', - 1: 'DPHY_FAST_TRAINING_CAPABLE', -} -DPHY_FAST_TRAINING_NOT_CAPABLE_0 = 0 -DPHY_FAST_TRAINING_CAPABLE = 1 -DPHY_RX_FAST_TRAINING_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SKEW_BYPASS' -DPHY_SKEW_BYPASS__enumvalues = { - 0: 'DPHY_WITH_SKEW', - 1: 'DPHY_NO_SKEW', -} -DPHY_WITH_SKEW = 0 -DPHY_NO_SKEW = 1 -DPHY_SKEW_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_STREAM_RESET_DURING_FAST_TRAINING_ENUM' -DPHY_STREAM_RESET_DURING_FAST_TRAINING_ENUM__enumvalues = { - 0: 'DPHY_STREAM_RESET_DURING_FAST_TRAINING_RESET', - 1: 'DPHY_STREAM_RESET_DURING_FAST_TRAINING_NOT_RESET', -} -DPHY_STREAM_RESET_DURING_FAST_TRAINING_RESET = 0 -DPHY_STREAM_RESET_DURING_FAST_TRAINING_NOT_RESET = 1 -DPHY_STREAM_RESET_DURING_FAST_TRAINING_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SW_FAST_TRAINING_START' -DPHY_SW_FAST_TRAINING_START__enumvalues = { - 0: 'DPHY_SW_FAST_TRAINING_NOT_STARTED', - 1: 'DPHY_SW_FAST_TRAINING_STARTED', -} -DPHY_SW_FAST_TRAINING_NOT_STARTED = 0 -DPHY_SW_FAST_TRAINING_STARTED = 1 -DPHY_SW_FAST_TRAINING_START = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_TRAINING_PATTERN_SEL' -DPHY_TRAINING_PATTERN_SEL__enumvalues = { - 0: 'DPHY_TRAINING_PATTERN_1', - 1: 'DPHY_TRAINING_PATTERN_2', - 2: 'DPHY_TRAINING_PATTERN_3', - 3: 'DPHY_TRAINING_PATTERN_4', -} -DPHY_TRAINING_PATTERN_1 = 0 -DPHY_TRAINING_PATTERN_2 = 1 -DPHY_TRAINING_PATTERN_3 = 2 -DPHY_TRAINING_PATTERN_4 = 3 -DPHY_TRAINING_PATTERN_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_COMPONENT_DEPTH' -DP_COMPONENT_DEPTH__enumvalues = { - 0: 'DP_COMPONENT_DEPTH_6BPC', - 1: 'DP_COMPONENT_DEPTH_8BPC', - 2: 'DP_COMPONENT_DEPTH_10BPC', - 3: 'DP_COMPONENT_DEPTH_12BPC', - 4: 'DP_COMPONENT_DEPTH_16BPC', -} -DP_COMPONENT_DEPTH_6BPC = 0 -DP_COMPONENT_DEPTH_8BPC = 1 -DP_COMPONENT_DEPTH_10BPC = 2 -DP_COMPONENT_DEPTH_12BPC = 3 -DP_COMPONENT_DEPTH_16BPC = 4 -DP_COMPONENT_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'DP_COMPRESSED_PIXEL_FORMAT' -DP_COMPRESSED_PIXEL_FORMAT__enumvalues = { - 0: 'DP_DSC_444_S422', - 1: 'DP_DSC_N422_N420', -} -DP_DSC_444_S422 = 0 -DP_DSC_N422_N420 = 1 -DP_COMPRESSED_PIXEL_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_8B10B_EXT_DISP' -DP_DPHY_8B10B_EXT_DISP__enumvalues = { - 0: 'DP_DPHY_8B10B_EXT_DISP_ZERO', - 1: 'DP_DPHY_8B10B_EXT_DISP_ONE', -} -DP_DPHY_8B10B_EXT_DISP_ZERO = 0 -DP_DPHY_8B10B_EXT_DISP_ONE = 1 -DP_DPHY_8B10B_EXT_DISP = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_FAST_TRAINING_COMPLETE_ACK' -DP_DPHY_FAST_TRAINING_COMPLETE_ACK__enumvalues = { - 0: 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_ACKED', - 1: 'DP_DPHY_FAST_TRAINING_COMPLETE_ACKED', -} -DP_DPHY_FAST_TRAINING_COMPLETE_NOT_ACKED = 0 -DP_DPHY_FAST_TRAINING_COMPLETE_ACKED = 1 -DP_DPHY_FAST_TRAINING_COMPLETE_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_FAST_TRAINING_COMPLETE_MASK' -DP_DPHY_FAST_TRAINING_COMPLETE_MASK__enumvalues = { - 0: 'DP_DPHY_FAST_TRAINING_COMPLETE_MASKED', - 1: 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_MASKED', -} -DP_DPHY_FAST_TRAINING_COMPLETE_MASKED = 0 -DP_DPHY_FAST_TRAINING_COMPLETE_NOT_MASKED = 1 -DP_DPHY_FAST_TRAINING_COMPLETE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN' -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN__enumvalues = { - 0: 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_DISABLED', - 1: 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_ENABLED', -} -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_DISABLED = 0 -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_ENABLED = 1 -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_HBR2_PATTERN_CONTROL_MODE' -DP_DPHY_HBR2_PATTERN_CONTROL_MODE__enumvalues = { - 0: 'DP_DPHY_HBR2_PASS_THROUGH', - 1: 'DP_DPHY_HBR2_PATTERN_1', - 2: 'DP_DPHY_HBR2_PATTERN_2_NEG', - 3: 'DP_DPHY_HBR2_PATTERN_3', - 6: 'DP_DPHY_HBR2_PATTERN_2_POS', -} -DP_DPHY_HBR2_PASS_THROUGH = 0 -DP_DPHY_HBR2_PATTERN_1 = 1 -DP_DPHY_HBR2_PATTERN_2_NEG = 2 -DP_DPHY_HBR2_PATTERN_3 = 3 -DP_DPHY_HBR2_PATTERN_2_POS = 6 -DP_DPHY_HBR2_PATTERN_CONTROL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_LINK_TRAINING_COMPLETE' -DP_LINK_TRAINING_COMPLETE__enumvalues = { - 0: 'DP_LINK_TRAINING_NOT_COMPLETE', - 1: 'DP_LINK_TRAINING_ALREADY_COMPLETE', -} -DP_LINK_TRAINING_NOT_COMPLETE = 0 -DP_LINK_TRAINING_ALREADY_COMPLETE = 1 -DP_LINK_TRAINING_COMPLETE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_LINK_TRAINING_SWITCH_MODE' -DP_LINK_TRAINING_SWITCH_MODE__enumvalues = { - 0: 'DP_LINK_TRAINING_SWITCH_TO_IDLE', - 1: 'DP_LINK_TRAINING_SWITCH_TO_VIDEO', -} -DP_LINK_TRAINING_SWITCH_TO_IDLE = 0 -DP_LINK_TRAINING_SWITCH_TO_VIDEO = 1 -DP_LINK_TRAINING_SWITCH_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_ML_PHY_SEQ_MODE' -DP_ML_PHY_SEQ_MODE__enumvalues = { - 0: 'DP_ML_PHY_SEQ_LINE_NUM', - 1: 'DP_ML_PHY_SEQ_IMMEDIATE', -} -DP_ML_PHY_SEQ_LINE_NUM = 0 -DP_ML_PHY_SEQ_IMMEDIATE = 1 -DP_ML_PHY_SEQ_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSA_V_TIMING_OVERRIDE_EN' -DP_MSA_V_TIMING_OVERRIDE_EN__enumvalues = { - 0: 'MSA_V_TIMING_OVERRIDE_DISABLED', - 1: 'MSA_V_TIMING_OVERRIDE_ENABLED', -} -MSA_V_TIMING_OVERRIDE_DISABLED = 0 -MSA_V_TIMING_OVERRIDE_ENABLED = 1 -DP_MSA_V_TIMING_OVERRIDE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_BLANK_CODE' -DP_MSE_BLANK_CODE__enumvalues = { - 0: 'DP_MSE_BLANK_CODE_SF_FILLED', - 1: 'DP_MSE_BLANK_CODE_ZERO_FILLED', -} -DP_MSE_BLANK_CODE_SF_FILLED = 0 -DP_MSE_BLANK_CODE_ZERO_FILLED = 1 -DP_MSE_BLANK_CODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_LINK_LINE' -DP_MSE_LINK_LINE__enumvalues = { - 0: 'DP_MSE_LINK_LINE_32_MTP_LONG', - 1: 'DP_MSE_LINK_LINE_64_MTP_LONG', - 2: 'DP_MSE_LINK_LINE_128_MTP_LONG', - 3: 'DP_MSE_LINK_LINE_256_MTP_LONG', -} -DP_MSE_LINK_LINE_32_MTP_LONG = 0 -DP_MSE_LINK_LINE_64_MTP_LONG = 1 -DP_MSE_LINK_LINE_128_MTP_LONG = 2 -DP_MSE_LINK_LINE_256_MTP_LONG = 3 -DP_MSE_LINK_LINE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_TIMESTAMP_MODE' -DP_MSE_TIMESTAMP_MODE__enumvalues = { - 0: 'DP_MSE_TIMESTAMP_CALC_BASED_ON_LINK_RATE', - 1: 'DP_MSE_TIMESTAMP_CALC_BASED_ON_VC_RATE', -} -DP_MSE_TIMESTAMP_CALC_BASED_ON_LINK_RATE = 0 -DP_MSE_TIMESTAMP_CALC_BASED_ON_VC_RATE = 1 -DP_MSE_TIMESTAMP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_ZERO_ENCODER' -DP_MSE_ZERO_ENCODER__enumvalues = { - 0: 'DP_MSE_NOT_ZERO_FE_ENCODER', - 1: 'DP_MSE_ZERO_FE_ENCODER', -} -DP_MSE_NOT_ZERO_FE_ENCODER = 0 -DP_MSE_ZERO_FE_ENCODER = 1 -DP_MSE_ZERO_ENCODER = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSO_NUM_OF_SST_LINKS' -DP_MSO_NUM_OF_SST_LINKS__enumvalues = { - 0: 'DP_MSO_ONE_SSTLINK', - 1: 'DP_MSO_TWO_SSTLINK', - 2: 'DP_MSO_FOUR_SSTLINK', -} -DP_MSO_ONE_SSTLINK = 0 -DP_MSO_TWO_SSTLINK = 1 -DP_MSO_FOUR_SSTLINK = 2 -DP_MSO_NUM_OF_SST_LINKS = ctypes.c_uint32 # enum - -# values for enumeration 'DP_PIXEL_ENCODING' -DP_PIXEL_ENCODING__enumvalues = { - 0: 'DP_PIXEL_ENCODING_RGB_YCBCR444', - 1: 'DP_PIXEL_ENCODING_YCBCR422', - 2: 'DP_PIXEL_ENCODING_YCBCR420', - 3: 'DP_PIXEL_ENCODING_Y_ONLY', -} -DP_PIXEL_ENCODING_RGB_YCBCR444 = 0 -DP_PIXEL_ENCODING_YCBCR422 = 1 -DP_PIXEL_ENCODING_YCBCR420 = 2 -DP_PIXEL_ENCODING_Y_ONLY = 3 -DP_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'DP_PIXEL_ENCODING_TYPE' -DP_PIXEL_ENCODING_TYPE__enumvalues = { - 0: 'DP_PIXEL_ENCODING_UNCOMPRESSED', - 1: 'DP_PIXEL_ENCODING_COMPRESSED', -} -DP_PIXEL_ENCODING_UNCOMPRESSED = 0 -DP_PIXEL_ENCODING_COMPRESSED = 1 -DP_PIXEL_ENCODING_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE' -DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE__enumvalues = { - 0: 'DP_SEC_ASP_CHANNEL_COUNT_FROM_AZ', - 1: 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED', -} -DP_SEC_ASP_CHANNEL_COUNT_FROM_AZ = 0 -DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED = 1 -DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_ASP_PRIORITY' -DP_SEC_ASP_PRIORITY__enumvalues = { - 0: 'DP_SEC_ASP_LOW_PRIORITY', - 1: 'DP_SEC_ASP_HIGH_PRIORITY', -} -DP_SEC_ASP_LOW_PRIORITY = 0 -DP_SEC_ASP_HIGH_PRIORITY = 1 -DP_SEC_ASP_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_AUDIO_MUTE' -DP_SEC_AUDIO_MUTE__enumvalues = { - 0: 'DP_SEC_AUDIO_MUTE_HW_CTRL', - 1: 'DP_SEC_AUDIO_MUTE_SW_CTRL', -} -DP_SEC_AUDIO_MUTE_HW_CTRL = 0 -DP_SEC_AUDIO_MUTE_SW_CTRL = 1 -DP_SEC_AUDIO_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_COLLISION_ACK' -DP_SEC_COLLISION_ACK__enumvalues = { - 0: 'DP_SEC_COLLISION_ACK_NO_EFFECT', - 1: 'DP_SEC_COLLISION_ACK_CLR_FLAG', -} -DP_SEC_COLLISION_ACK_NO_EFFECT = 0 -DP_SEC_COLLISION_ACK_CLR_FLAG = 1 -DP_SEC_COLLISION_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_GSP0_PRIORITY' -DP_SEC_GSP0_PRIORITY__enumvalues = { - 0: 'SEC_GSP0_PRIORITY_LOW', - 1: 'SEC_GSP0_PRIORITY_HIGH', -} -SEC_GSP0_PRIORITY_LOW = 0 -SEC_GSP0_PRIORITY_HIGH = 1 -DP_SEC_GSP0_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_GSP_SEND' -DP_SEC_GSP_SEND__enumvalues = { - 0: 'NOT_SENT', - 1: 'FORCE_SENT', -} -NOT_SENT = 0 -FORCE_SENT = 1 -DP_SEC_GSP_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_GSP_SEND_ANY_LINE' -DP_SEC_GSP_SEND_ANY_LINE__enumvalues = { - 0: 'SEND_AT_LINK_NUMBER', - 1: 'SEND_AT_EARLIEST_TIME', -} -SEND_AT_LINK_NUMBER = 0 -SEND_AT_EARLIEST_TIME = 1 -DP_SEC_GSP_SEND_ANY_LINE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_GSP_SEND_PPS' -DP_SEC_GSP_SEND_PPS__enumvalues = { - 0: 'SEND_NORMAL_PACKET', - 1: 'SEND_PPS_PACKET', -} -SEND_NORMAL_PACKET = 0 -SEND_PPS_PACKET = 1 -DP_SEC_GSP_SEND_PPS = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_LINE_REFERENCE' -DP_SEC_LINE_REFERENCE__enumvalues = { - 0: 'REFER_TO_DP_SOF', - 1: 'REFER_TO_OTG_SOF', -} -REFER_TO_DP_SOF = 0 -REFER_TO_OTG_SOF = 1 -DP_SEC_LINE_REFERENCE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_TIMESTAMP_MODE' -DP_SEC_TIMESTAMP_MODE__enumvalues = { - 0: 'DP_SEC_TIMESTAMP_PROGRAMMABLE_MODE', - 1: 'DP_SEC_TIMESTAMP_AUTO_CALC_MODE', -} -DP_SEC_TIMESTAMP_PROGRAMMABLE_MODE = 0 -DP_SEC_TIMESTAMP_AUTO_CALC_MODE = 1 -DP_SEC_TIMESTAMP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STEER_OUTPUT_PIXEL_PER_CYCLE' -DP_STEER_OUTPUT_PIXEL_PER_CYCLE__enumvalues = { - 0: 'DP_STEER_1_PIX_PER_CYCLE', - 1: 'DP_STEER_2_PIX_PER_CYCLE', - 2: 'DP_STEER_4_PIX_PER_CYCLE', - 3: 'DP_STEER_8_PIX_PER_CYCLE', -} -DP_STEER_1_PIX_PER_CYCLE = 0 -DP_STEER_2_PIX_PER_CYCLE = 1 -DP_STEER_4_PIX_PER_CYCLE = 2 -DP_STEER_8_PIX_PER_CYCLE = 3 -DP_STEER_OUTPUT_PIXEL_PER_CYCLE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STEER_OVERFLOW_ACK' -DP_STEER_OVERFLOW_ACK__enumvalues = { - 0: 'DP_STEER_OVERFLOW_ACK_NO_EFFECT', - 1: 'DP_STEER_OVERFLOW_ACK_CLR_INTERRUPT', -} -DP_STEER_OVERFLOW_ACK_NO_EFFECT = 0 -DP_STEER_OVERFLOW_ACK_CLR_INTERRUPT = 1 -DP_STEER_OVERFLOW_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STEER_OVERFLOW_MASK' -DP_STEER_OVERFLOW_MASK__enumvalues = { - 0: 'DP_STEER_OVERFLOW_MASKED', - 1: 'DP_STEER_OVERFLOW_UNMASK', -} -DP_STEER_OVERFLOW_MASKED = 0 -DP_STEER_OVERFLOW_UNMASK = 1 -DP_STEER_OVERFLOW_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SYNC_POLARITY' -DP_SYNC_POLARITY__enumvalues = { - 0: 'DP_SYNC_POLARITY_ACTIVE_HIGH', - 1: 'DP_SYNC_POLARITY_ACTIVE_LOW', -} -DP_SYNC_POLARITY_ACTIVE_HIGH = 0 -DP_SYNC_POLARITY_ACTIVE_LOW = 1 -DP_SYNC_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_TU_OVERFLOW_ACK' -DP_TU_OVERFLOW_ACK__enumvalues = { - 0: 'DP_TU_OVERFLOW_ACK_NO_EFFECT', - 1: 'DP_TU_OVERFLOW_ACK_CLR_INTERRUPT', -} -DP_TU_OVERFLOW_ACK_NO_EFFECT = 0 -DP_TU_OVERFLOW_ACK_CLR_INTERRUPT = 1 -DP_TU_OVERFLOW_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_UDI_LANES' -DP_UDI_LANES__enumvalues = { - 0: 'DP_UDI_1_LANE', - 1: 'DP_UDI_2_LANES', - 2: 'DP_UDI_LANES_RESERVED', - 3: 'DP_UDI_4_LANES', -} -DP_UDI_1_LANE = 0 -DP_UDI_2_LANES = 1 -DP_UDI_LANES_RESERVED = 2 -DP_UDI_4_LANES = 3 -DP_UDI_LANES = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_ENHANCED_FRAME_MODE' -DP_VID_ENHANCED_FRAME_MODE__enumvalues = { - 0: 'VID_NORMAL_FRAME_MODE', - 1: 'VID_ENHANCED_MODE', -} -VID_NORMAL_FRAME_MODE = 0 -VID_ENHANCED_MODE = 1 -DP_VID_ENHANCED_FRAME_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_M_N_DOUBLE_BUFFER_MODE' -DP_VID_M_N_DOUBLE_BUFFER_MODE__enumvalues = { - 0: 'DP_VID_M_N_DOUBLE_BUFFER_AFTER_VID_M_UPDATE', - 1: 'DP_VID_M_N_DOUBLE_BUFFER_AT_FRAME_START', -} -DP_VID_M_N_DOUBLE_BUFFER_AFTER_VID_M_UPDATE = 0 -DP_VID_M_N_DOUBLE_BUFFER_AT_FRAME_START = 1 -DP_VID_M_N_DOUBLE_BUFFER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_M_N_GEN_EN' -DP_VID_M_N_GEN_EN__enumvalues = { - 0: 'DP_VID_M_N_PROGRAMMED_VIA_REG', - 1: 'DP_VID_M_N_CALC_AUTO', -} -DP_VID_M_N_PROGRAMMED_VIA_REG = 0 -DP_VID_M_N_CALC_AUTO = 1 -DP_VID_M_N_GEN_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_N_INTERVAL' -DP_VID_N_INTERVAL__enumvalues = { - 0: 'DP_VID_1X_Nvid', - 1: 'DP_VID_2X_Nvid', - 2: 'DP_VID_4X_Nvid', - 3: 'DP_VID_8X_Nvid', -} -DP_VID_1X_Nvid = 0 -DP_VID_2X_Nvid = 1 -DP_VID_4X_Nvid = 2 -DP_VID_8X_Nvid = 3 -DP_VID_N_INTERVAL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_STREAM_DISABLE_ACK' -DP_VID_STREAM_DISABLE_ACK__enumvalues = { - 0: 'ID_STREAM_DISABLE_NO_ACK', - 1: 'ID_STREAM_DISABLE_ACKED', -} -ID_STREAM_DISABLE_NO_ACK = 0 -ID_STREAM_DISABLE_ACKED = 1 -DP_VID_STREAM_DISABLE_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_STREAM_DISABLE_MASK' -DP_VID_STREAM_DISABLE_MASK__enumvalues = { - 0: 'VID_STREAM_DISABLE_MASKED', - 1: 'VID_STREAM_DISABLE_UNMASK', -} -VID_STREAM_DISABLE_MASKED = 0 -VID_STREAM_DISABLE_UNMASK = 1 -DP_VID_STREAM_DISABLE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_STREAM_DIS_DEFER' -DP_VID_STREAM_DIS_DEFER__enumvalues = { - 0: 'DP_VID_STREAM_DIS_NO_DEFER', - 1: 'DP_VID_STREAM_DIS_DEFER_TO_HBLANK', - 2: 'DP_VID_STREAM_DIS_DEFER_TO_VBLANK', -} -DP_VID_STREAM_DIS_NO_DEFER = 0 -DP_VID_STREAM_DIS_DEFER_TO_HBLANK = 1 -DP_VID_STREAM_DIS_DEFER_TO_VBLANK = 2 -DP_VID_STREAM_DIS_DEFER = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_VBID_FIELD_POL' -DP_VID_VBID_FIELD_POL__enumvalues = { - 0: 'DP_VID_VBID_FIELD_POL_NORMAL', - 1: 'DP_VID_VBID_FIELD_POL_INV', -} -DP_VID_VBID_FIELD_POL_NORMAL = 0 -DP_VID_VBID_FIELD_POL_INV = 1 -DP_VID_VBID_FIELD_POL = ctypes.c_uint32 # enum - -# values for enumeration 'FEC_ACTIVE_STATUS' -FEC_ACTIVE_STATUS__enumvalues = { - 0: 'DPHY_FEC_NOT_ACTIVE', - 1: 'DPHY_FEC_ACTIVE', -} -DPHY_FEC_NOT_ACTIVE = 0 -DPHY_FEC_ACTIVE = 1 -FEC_ACTIVE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_BE_CNTL_HPD_SELECT' -DIG_BE_CNTL_HPD_SELECT__enumvalues = { - 0: 'DIG_BE_CNTL_HPD1', - 1: 'DIG_BE_CNTL_HPD2', - 2: 'DIG_BE_CNTL_HPD3', - 3: 'DIG_BE_CNTL_HPD4', - 4: 'DIG_BE_CNTL_NO_HPD', -} -DIG_BE_CNTL_HPD1 = 0 -DIG_BE_CNTL_HPD2 = 1 -DIG_BE_CNTL_HPD3 = 2 -DIG_BE_CNTL_HPD4 = 3 -DIG_BE_CNTL_NO_HPD = 4 -DIG_BE_CNTL_HPD_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_BE_CNTL_MODE' -DIG_BE_CNTL_MODE__enumvalues = { - 0: 'DIG_BE_DP_SST_MODE', - 1: 'DIG_BE_RESERVED1', - 2: 'DIG_BE_TMDS_DVI_MODE', - 3: 'DIG_BE_TMDS_HDMI_MODE', - 4: 'DIG_BE_RESERVED4', - 5: 'DIG_BE_DP_MST_MODE', - 6: 'DIG_BE_RESERVED2', - 7: 'DIG_BE_RESERVED3', -} -DIG_BE_DP_SST_MODE = 0 -DIG_BE_RESERVED1 = 1 -DIG_BE_TMDS_DVI_MODE = 2 -DIG_BE_TMDS_HDMI_MODE = 3 -DIG_BE_RESERVED4 = 4 -DIG_BE_DP_MST_MODE = 5 -DIG_BE_RESERVED2 = 6 -DIG_BE_RESERVED3 = 7 -DIG_BE_CNTL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_DIGITAL_BYPASS_ENABLE' -DIG_DIGITAL_BYPASS_ENABLE__enumvalues = { - 0: 'DIG_DIGITAL_BYPASS_OFF', - 1: 'DIG_DIGITAL_BYPASS_ON', -} -DIG_DIGITAL_BYPASS_OFF = 0 -DIG_DIGITAL_BYPASS_ON = 1 -DIG_DIGITAL_BYPASS_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_DIGITAL_BYPASS_SEL' -DIG_DIGITAL_BYPASS_SEL__enumvalues = { - 0: 'DIG_DIGITAL_BYPASS_SEL_BYPASS', - 1: 'DIG_DIGITAL_BYPASS_SEL_36BPP', - 2: 'DIG_DIGITAL_BYPASS_SEL_48BPP_LSB', - 3: 'DIG_DIGITAL_BYPASS_SEL_48BPP_MSB', - 4: 'DIG_DIGITAL_BYPASS_SEL_10BPP_LSB', - 5: 'DIG_DIGITAL_BYPASS_SEL_12BPC_LSB', - 6: 'DIG_DIGITAL_BYPASS_SEL_ALPHA', -} -DIG_DIGITAL_BYPASS_SEL_BYPASS = 0 -DIG_DIGITAL_BYPASS_SEL_36BPP = 1 -DIG_DIGITAL_BYPASS_SEL_48BPP_LSB = 2 -DIG_DIGITAL_BYPASS_SEL_48BPP_MSB = 3 -DIG_DIGITAL_BYPASS_SEL_10BPP_LSB = 4 -DIG_DIGITAL_BYPASS_SEL_12BPC_LSB = 5 -DIG_DIGITAL_BYPASS_SEL_ALPHA = 6 -DIG_DIGITAL_BYPASS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FE_CNTL_SOURCE_SELECT' -DIG_FE_CNTL_SOURCE_SELECT__enumvalues = { - 0: 'DIG_FE_SOURCE_FROM_OTG0', - 1: 'DIG_FE_SOURCE_FROM_OTG1', - 2: 'DIG_FE_SOURCE_FROM_OTG2', - 3: 'DIG_FE_SOURCE_FROM_OTG3', - 4: 'DIG_FE_SOURCE_RESERVED', -} -DIG_FE_SOURCE_FROM_OTG0 = 0 -DIG_FE_SOURCE_FROM_OTG1 = 1 -DIG_FE_SOURCE_FROM_OTG2 = 2 -DIG_FE_SOURCE_FROM_OTG3 = 3 -DIG_FE_SOURCE_RESERVED = 4 -DIG_FE_CNTL_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FE_CNTL_STEREOSYNC_SELECT' -DIG_FE_CNTL_STEREOSYNC_SELECT__enumvalues = { - 0: 'DIG_FE_STEREOSYNC_FROM_OTG0', - 1: 'DIG_FE_STEREOSYNC_FROM_OTG1', - 2: 'DIG_FE_STEREOSYNC_FROM_OTG2', - 3: 'DIG_FE_STEREOSYNC_FROM_OTG3', - 4: 'DIG_FE_STEREOSYNC_RESERVED', -} -DIG_FE_STEREOSYNC_FROM_OTG0 = 0 -DIG_FE_STEREOSYNC_FROM_OTG1 = 1 -DIG_FE_STEREOSYNC_FROM_OTG2 = 2 -DIG_FE_STEREOSYNC_FROM_OTG3 = 3 -DIG_FE_STEREOSYNC_RESERVED = 4 -DIG_FE_CNTL_STEREOSYNC_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_CTRL_FORCE_RECOMP_MINMAX' -DIG_FIFO_CTRL_FORCE_RECOMP_MINMAX__enumvalues = { - 0: 'DIG_FIFO_NOT_FORCE_RECOMP_MINMAX', - 1: 'DIG_FIFO_FORCE_RECOMP_MINMAX', -} -DIG_FIFO_NOT_FORCE_RECOMP_MINMAX = 0 -DIG_FIFO_FORCE_RECOMP_MINMAX = 1 -DIG_FIFO_CTRL_FORCE_RECOMP_MINMAX = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_CTRL_USE_OVERWRITE_LEVEL' -DIG_FIFO_CTRL_USE_OVERWRITE_LEVEL__enumvalues = { - 0: 'DIG_FIFO_USE_OVERWRITE_LEVEL', - 1: 'DIG_FIFO_USE_CAL_AVERAGE_LEVEL', -} -DIG_FIFO_USE_OVERWRITE_LEVEL = 0 -DIG_FIFO_USE_CAL_AVERAGE_LEVEL = 1 -DIG_FIFO_CTRL_USE_OVERWRITE_LEVEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_FORCE_RECAL_AVERAGE' -DIG_FIFO_FORCE_RECAL_AVERAGE__enumvalues = { - 0: 'DIG_FIFO_NOT_FORCE_RECAL_AVERAGE', - 1: 'DIG_FIFO_FORCE_RECAL_AVERAGE_LEVEL', -} -DIG_FIFO_NOT_FORCE_RECAL_AVERAGE = 0 -DIG_FIFO_FORCE_RECAL_AVERAGE_LEVEL = 1 -DIG_FIFO_FORCE_RECAL_AVERAGE = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_OUTPUT_PIXEL_PER_CYCLE' -DIG_FIFO_OUTPUT_PIXEL_PER_CYCLE__enumvalues = { - 0: 'DIG_FIFO_1_PIX_PER_CYCLE', - 1: 'DIG_FIFO_2_PIX_PER_CYCLE', - 2: 'DIG_FIFO_4_PIX_PER_CYCLE', - 3: 'DIG_FIFO_8_PIX_PER_CYCLE', -} -DIG_FIFO_1_PIX_PER_CYCLE = 0 -DIG_FIFO_2_PIX_PER_CYCLE = 1 -DIG_FIFO_4_PIX_PER_CYCLE = 2 -DIG_FIFO_8_PIX_PER_CYCLE = 3 -DIG_FIFO_OUTPUT_PIXEL_PER_CYCLE = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_OVERFLOW_UNDERFLOW_ERROR' -DIG_FIFO_OVERFLOW_UNDERFLOW_ERROR__enumvalues = { - 0: 'DIG_FIFO_NO_ERROR_OCCURRED', - 1: 'DIG_FIFO_UNDERFLOW_OCCURRED', - 2: 'DIG_FIFO_OVERFLOW_OCCURRED', -} -DIG_FIFO_NO_ERROR_OCCURRED = 0 -DIG_FIFO_UNDERFLOW_OCCURRED = 1 -DIG_FIFO_OVERFLOW_OCCURRED = 2 -DIG_FIFO_OVERFLOW_UNDERFLOW_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_READ_CLOCK_SRC' -DIG_FIFO_READ_CLOCK_SRC__enumvalues = { - 0: 'DIG_FIFO_READ_CLOCK_SRC_FROM_DCCG', - 1: 'DIG_FIFO_READ_CLOCK_SRC_FROM_DISPLAY_PIPE', -} -DIG_FIFO_READ_CLOCK_SRC_FROM_DCCG = 0 -DIG_FIFO_READ_CLOCK_SRC_FROM_DISPLAY_PIPE = 1 -DIG_FIFO_READ_CLOCK_SRC = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_MODE' -DIG_MODE__enumvalues = { - 0: 'DP_SST_MODE', - 1: 'RESERVED1', - 2: 'TMDS_DVI_MODE', - 3: 'TMDS_HDMI_MODE', - 4: 'RESERVED4', - 5: 'DP_MST_MODE', - 6: 'RESERVED2', - 7: 'RESERVED3', -} -DP_SST_MODE = 0 -RESERVED1 = 1 -TMDS_DVI_MODE = 2 -TMDS_HDMI_MODE = 3 -RESERVED4 = 4 -DP_MST_MODE = 5 -RESERVED2 = 6 -RESERVED3 = 7 -DIG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_OUTPUT_CRC_CNTL_LINK_SEL' -DIG_OUTPUT_CRC_CNTL_LINK_SEL__enumvalues = { - 0: 'DIG_OUTPUT_CRC_ON_LINK0', - 1: 'DIG_OUTPUT_CRC_ON_LINK1', -} -DIG_OUTPUT_CRC_ON_LINK0 = 0 -DIG_OUTPUT_CRC_ON_LINK1 = 1 -DIG_OUTPUT_CRC_CNTL_LINK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_OUTPUT_CRC_DATA_SEL' -DIG_OUTPUT_CRC_DATA_SEL__enumvalues = { - 0: 'DIG_OUTPUT_CRC_FOR_FULLFRAME', - 1: 'DIG_OUTPUT_CRC_FOR_ACTIVEONLY', - 2: 'DIG_OUTPUT_CRC_FOR_VBI', - 3: 'DIG_OUTPUT_CRC_FOR_AUDIO', -} -DIG_OUTPUT_CRC_FOR_FULLFRAME = 0 -DIG_OUTPUT_CRC_FOR_ACTIVEONLY = 1 -DIG_OUTPUT_CRC_FOR_VBI = 2 -DIG_OUTPUT_CRC_FOR_AUDIO = 3 -DIG_OUTPUT_CRC_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_RANDOM_PATTERN_SEED_RAN_PAT' -DIG_RANDOM_PATTERN_SEED_RAN_PAT__enumvalues = { - 0: 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_ALL_PIXELS', - 1: 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_DE_HIGH', -} -DIG_RANDOM_PATTERN_SEED_RAN_PAT_ALL_PIXELS = 0 -DIG_RANDOM_PATTERN_SEED_RAN_PAT_DE_HIGH = 1 -DIG_RANDOM_PATTERN_SEED_RAN_PAT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_EXTERNAL_RESET_EN' -DIG_TEST_PATTERN_EXTERNAL_RESET_EN__enumvalues = { - 0: 'DIG_TEST_PATTERN_EXTERNAL_RESET_ENABLE', - 1: 'DIG_TEST_PATTERN_EXTERNAL_RESET_BY_EXT_SIG', -} -DIG_TEST_PATTERN_EXTERNAL_RESET_ENABLE = 0 -DIG_TEST_PATTERN_EXTERNAL_RESET_BY_EXT_SIG = 1 -DIG_TEST_PATTERN_EXTERNAL_RESET_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL' -DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL__enumvalues = { - 0: 'DIG_10BIT_TEST_PATTERN', - 1: 'DIG_ALTERNATING_TEST_PATTERN', -} -DIG_10BIT_TEST_PATTERN = 0 -DIG_ALTERNATING_TEST_PATTERN = 1 -DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN' -DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN__enumvalues = { - 0: 'DIG_TEST_PATTERN_NORMAL', - 1: 'DIG_TEST_PATTERN_RANDOM', -} -DIG_TEST_PATTERN_NORMAL = 0 -DIG_TEST_PATTERN_RANDOM = 1 -DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_RANDOM_PATTERN_RESET' -DIG_TEST_PATTERN_RANDOM_PATTERN_RESET__enumvalues = { - 0: 'DIG_RANDOM_PATTERN_ENABLED', - 1: 'DIG_RANDOM_PATTERN_RESETED', -} -DIG_RANDOM_PATTERN_ENABLED = 0 -DIG_RANDOM_PATTERN_RESETED = 1 -DIG_TEST_PATTERN_RANDOM_PATTERN_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN' -DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN__enumvalues = { - 0: 'DIG_IN_NORMAL_OPERATION', - 1: 'DIG_IN_DEBUG_MODE', -} -DIG_IN_NORMAL_OPERATION = 0 -DIG_IN_DEBUG_MODE = 1 -DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACP_SEND' -HDMI_ACP_SEND__enumvalues = { - 0: 'HDMI_ACP_NOT_SEND', - 1: 'HDMI_ACP_PKT_SEND', -} -HDMI_ACP_NOT_SEND = 0 -HDMI_ACP_PKT_SEND = 1 -HDMI_ACP_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_AUDIO_PRIORITY' -HDMI_ACR_AUDIO_PRIORITY__enumvalues = { - 0: 'HDMI_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE', - 1: 'HDMI_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT', -} -HDMI_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE = 0 -HDMI_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT = 1 -HDMI_ACR_AUDIO_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_CONT' -HDMI_ACR_CONT__enumvalues = { - 0: 'HDMI_ACR_CONT_DISABLE', - 1: 'HDMI_ACR_CONT_ENABLE', -} -HDMI_ACR_CONT_DISABLE = 0 -HDMI_ACR_CONT_ENABLE = 1 -HDMI_ACR_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_N_MULTIPLE' -HDMI_ACR_N_MULTIPLE__enumvalues = { - 0: 'HDMI_ACR_0_MULTIPLE_RESERVED', - 1: 'HDMI_ACR_1_MULTIPLE', - 2: 'HDMI_ACR_2_MULTIPLE', - 3: 'HDMI_ACR_3_MULTIPLE_RESERVED', - 4: 'HDMI_ACR_4_MULTIPLE', - 5: 'HDMI_ACR_5_MULTIPLE_RESERVED', - 6: 'HDMI_ACR_6_MULTIPLE_RESERVED', - 7: 'HDMI_ACR_7_MULTIPLE_RESERVED', -} -HDMI_ACR_0_MULTIPLE_RESERVED = 0 -HDMI_ACR_1_MULTIPLE = 1 -HDMI_ACR_2_MULTIPLE = 2 -HDMI_ACR_3_MULTIPLE_RESERVED = 3 -HDMI_ACR_4_MULTIPLE = 4 -HDMI_ACR_5_MULTIPLE_RESERVED = 5 -HDMI_ACR_6_MULTIPLE_RESERVED = 6 -HDMI_ACR_7_MULTIPLE_RESERVED = 7 -HDMI_ACR_N_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_SELECT' -HDMI_ACR_SELECT__enumvalues = { - 0: 'HDMI_ACR_SELECT_HW', - 1: 'HDMI_ACR_SELECT_32K', - 2: 'HDMI_ACR_SELECT_44K', - 3: 'HDMI_ACR_SELECT_48K', -} -HDMI_ACR_SELECT_HW = 0 -HDMI_ACR_SELECT_32K = 1 -HDMI_ACR_SELECT_44K = 2 -HDMI_ACR_SELECT_48K = 3 -HDMI_ACR_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_SEND' -HDMI_ACR_SEND__enumvalues = { - 0: 'HDMI_ACR_NOT_SEND', - 1: 'HDMI_ACR_PKT_SEND', -} -HDMI_ACR_NOT_SEND = 0 -HDMI_ACR_PKT_SEND = 1 -HDMI_ACR_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_SOURCE' -HDMI_ACR_SOURCE__enumvalues = { - 0: 'HDMI_ACR_SOURCE_HW', - 1: 'HDMI_ACR_SOURCE_SW', -} -HDMI_ACR_SOURCE_HW = 0 -HDMI_ACR_SOURCE_SW = 1 -HDMI_ACR_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_AUDIO_DELAY_EN' -HDMI_AUDIO_DELAY_EN__enumvalues = { - 0: 'HDMI_AUDIO_DELAY_DISABLE', - 1: 'HDMI_AUDIO_DELAY_58CLK', - 2: 'HDMI_AUDIO_DELAY_56CLK', - 3: 'HDMI_AUDIO_DELAY_RESERVED', -} -HDMI_AUDIO_DELAY_DISABLE = 0 -HDMI_AUDIO_DELAY_58CLK = 1 -HDMI_AUDIO_DELAY_56CLK = 2 -HDMI_AUDIO_DELAY_RESERVED = 3 -HDMI_AUDIO_DELAY_EN = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_AUDIO_INFO_CONT' -HDMI_AUDIO_INFO_CONT__enumvalues = { - 0: 'HDMI_AUDIO_INFO_CONT_DISABLE', - 1: 'HDMI_AUDIO_INFO_CONT_ENABLE', -} -HDMI_AUDIO_INFO_CONT_DISABLE = 0 -HDMI_AUDIO_INFO_CONT_ENABLE = 1 -HDMI_AUDIO_INFO_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_AUDIO_INFO_SEND' -HDMI_AUDIO_INFO_SEND__enumvalues = { - 0: 'HDMI_AUDIO_INFO_NOT_SEND', - 1: 'HDMI_AUDIO_INFO_PKT_SEND', -} -HDMI_AUDIO_INFO_NOT_SEND = 0 -HDMI_AUDIO_INFO_PKT_SEND = 1 -HDMI_AUDIO_INFO_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_CLOCK_CHANNEL_RATE' -HDMI_CLOCK_CHANNEL_RATE__enumvalues = { - 0: 'HDMI_CLOCK_CHANNEL_FREQ_EQUAL_TO_CHAR_RATE', - 1: 'HDMI_CLOCK_CHANNEL_FREQ_QUARTER_TO_CHAR_RATE', -} -HDMI_CLOCK_CHANNEL_FREQ_EQUAL_TO_CHAR_RATE = 0 -HDMI_CLOCK_CHANNEL_FREQ_QUARTER_TO_CHAR_RATE = 1 -HDMI_CLOCK_CHANNEL_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_DATA_SCRAMBLE_EN' -HDMI_DATA_SCRAMBLE_EN__enumvalues = { - 0: 'HDMI_DATA_SCRAMBLE_DISABLE', - 1: 'HDMI_DATA_SCRAMBLE_ENABLE', -} -HDMI_DATA_SCRAMBLE_DISABLE = 0 -HDMI_DATA_SCRAMBLE_ENABLE = 1 -HDMI_DATA_SCRAMBLE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_DEEP_COLOR_DEPTH' -HDMI_DEEP_COLOR_DEPTH__enumvalues = { - 0: 'HDMI_DEEP_COLOR_DEPTH_24BPP', - 1: 'HDMI_DEEP_COLOR_DEPTH_30BPP', - 2: 'HDMI_DEEP_COLOR_DEPTH_36BPP', - 3: 'HDMI_DEEP_COLOR_DEPTH_48BPP', -} -HDMI_DEEP_COLOR_DEPTH_24BPP = 0 -HDMI_DEEP_COLOR_DEPTH_30BPP = 1 -HDMI_DEEP_COLOR_DEPTH_36BPP = 2 -HDMI_DEEP_COLOR_DEPTH_48BPP = 3 -HDMI_DEEP_COLOR_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_DEFAULT_PAHSE' -HDMI_DEFAULT_PAHSE__enumvalues = { - 0: 'HDMI_DEFAULT_PHASE_IS_0', - 1: 'HDMI_DEFAULT_PHASE_IS_1', -} -HDMI_DEFAULT_PHASE_IS_0 = 0 -HDMI_DEFAULT_PHASE_IS_1 = 1 -HDMI_DEFAULT_PAHSE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ERROR_ACK' -HDMI_ERROR_ACK__enumvalues = { - 0: 'HDMI_ERROR_ACK_INT', - 1: 'HDMI_ERROR_NOT_ACK', -} -HDMI_ERROR_ACK_INT = 0 -HDMI_ERROR_NOT_ACK = 1 -HDMI_ERROR_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ERROR_MASK' -HDMI_ERROR_MASK__enumvalues = { - 0: 'HDMI_ERROR_MASK_INT', - 1: 'HDMI_ERROR_NOT_MASK', -} -HDMI_ERROR_MASK_INT = 0 -HDMI_ERROR_NOT_MASK = 1 -HDMI_ERROR_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_AVMUTE' -HDMI_GC_AVMUTE__enumvalues = { - 0: 'HDMI_GC_AVMUTE_SET', - 1: 'HDMI_GC_AVMUTE_UNSET', -} -HDMI_GC_AVMUTE_SET = 0 -HDMI_GC_AVMUTE_UNSET = 1 -HDMI_GC_AVMUTE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_AVMUTE_CONT' -HDMI_GC_AVMUTE_CONT__enumvalues = { - 0: 'HDMI_GC_AVMUTE_CONT_DISABLE', - 1: 'HDMI_GC_AVMUTE_CONT_ENABLE', -} -HDMI_GC_AVMUTE_CONT_DISABLE = 0 -HDMI_GC_AVMUTE_CONT_ENABLE = 1 -HDMI_GC_AVMUTE_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_CONT' -HDMI_GC_CONT__enumvalues = { - 0: 'HDMI_GC_CONT_DISABLE', - 1: 'HDMI_GC_CONT_ENABLE', -} -HDMI_GC_CONT_DISABLE = 0 -HDMI_GC_CONT_ENABLE = 1 -HDMI_GC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_SEND' -HDMI_GC_SEND__enumvalues = { - 0: 'HDMI_GC_NOT_SEND', - 1: 'HDMI_GC_PKT_SEND', -} -HDMI_GC_NOT_SEND = 0 -HDMI_GC_PKT_SEND = 1 -HDMI_GC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GENERIC_CONT' -HDMI_GENERIC_CONT__enumvalues = { - 0: 'HDMI_GENERIC_CONT_DISABLE', - 1: 'HDMI_GENERIC_CONT_ENABLE', -} -HDMI_GENERIC_CONT_DISABLE = 0 -HDMI_GENERIC_CONT_ENABLE = 1 -HDMI_GENERIC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GENERIC_SEND' -HDMI_GENERIC_SEND__enumvalues = { - 0: 'HDMI_GENERIC_NOT_SEND', - 1: 'HDMI_GENERIC_PKT_SEND', -} -HDMI_GENERIC_NOT_SEND = 0 -HDMI_GENERIC_PKT_SEND = 1 -HDMI_GENERIC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ISRC_CONT' -HDMI_ISRC_CONT__enumvalues = { - 0: 'HDMI_ISRC_CONT_DISABLE', - 1: 'HDMI_ISRC_CONT_ENABLE', -} -HDMI_ISRC_CONT_DISABLE = 0 -HDMI_ISRC_CONT_ENABLE = 1 -HDMI_ISRC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ISRC_SEND' -HDMI_ISRC_SEND__enumvalues = { - 0: 'HDMI_ISRC_NOT_SEND', - 1: 'HDMI_ISRC_PKT_SEND', -} -HDMI_ISRC_NOT_SEND = 0 -HDMI_ISRC_PKT_SEND = 1 -HDMI_ISRC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_KEEPOUT_MODE' -HDMI_KEEPOUT_MODE__enumvalues = { - 0: 'HDMI_KEEPOUT_0_650PIX_AFTER_VSYNC', - 1: 'HDMI_KEEPOUT_509_650PIX_AFTER_VSYNC', -} -HDMI_KEEPOUT_0_650PIX_AFTER_VSYNC = 0 -HDMI_KEEPOUT_509_650PIX_AFTER_VSYNC = 1 -HDMI_KEEPOUT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_METADATA_ENABLE' -HDMI_METADATA_ENABLE__enumvalues = { - 0: 'HDMI_METADATA_NOT_SEND', - 1: 'HDMI_METADATA_PKT_SEND', -} -HDMI_METADATA_NOT_SEND = 0 -HDMI_METADATA_PKT_SEND = 1 -HDMI_METADATA_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_MPEG_INFO_CONT' -HDMI_MPEG_INFO_CONT__enumvalues = { - 0: 'HDMI_MPEG_INFO_CONT_DISABLE', - 1: 'HDMI_MPEG_INFO_CONT_ENABLE', -} -HDMI_MPEG_INFO_CONT_DISABLE = 0 -HDMI_MPEG_INFO_CONT_ENABLE = 1 -HDMI_MPEG_INFO_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_MPEG_INFO_SEND' -HDMI_MPEG_INFO_SEND__enumvalues = { - 0: 'HDMI_MPEG_INFO_NOT_SEND', - 1: 'HDMI_MPEG_INFO_PKT_SEND', -} -HDMI_MPEG_INFO_NOT_SEND = 0 -HDMI_MPEG_INFO_PKT_SEND = 1 -HDMI_MPEG_INFO_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_NO_EXTRA_NULL_PACKET_FILLED' -HDMI_NO_EXTRA_NULL_PACKET_FILLED__enumvalues = { - 0: 'HDMI_EXTRA_NULL_PACKET_FILLED_ENABLE', - 1: 'HDMI_EXTRA_NULL_PACKET_FILLED_DISABLE', -} -HDMI_EXTRA_NULL_PACKET_FILLED_ENABLE = 0 -HDMI_EXTRA_NULL_PACKET_FILLED_DISABLE = 1 -HDMI_NO_EXTRA_NULL_PACKET_FILLED = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_NULL_SEND' -HDMI_NULL_SEND__enumvalues = { - 0: 'HDMI_NULL_NOT_SEND', - 1: 'HDMI_NULL_PKT_SEND', -} -HDMI_NULL_NOT_SEND = 0 -HDMI_NULL_PKT_SEND = 1 -HDMI_NULL_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_PACKET_GEN_VERSION' -HDMI_PACKET_GEN_VERSION__enumvalues = { - 0: 'HDMI_PACKET_GEN_VERSION_OLD', - 1: 'HDMI_PACKET_GEN_VERSION_NEW', -} -HDMI_PACKET_GEN_VERSION_OLD = 0 -HDMI_PACKET_GEN_VERSION_NEW = 1 -HDMI_PACKET_GEN_VERSION = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_PACKET_LINE_REFERENCE' -HDMI_PACKET_LINE_REFERENCE__enumvalues = { - 0: 'HDMI_PKT_LINE_REF_VSYNC', - 1: 'HDMI_PKT_LINE_REF_OTGSOF', -} -HDMI_PKT_LINE_REF_VSYNC = 0 -HDMI_PKT_LINE_REF_OTGSOF = 1 -HDMI_PACKET_LINE_REFERENCE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_PACKING_PHASE_OVERRIDE' -HDMI_PACKING_PHASE_OVERRIDE__enumvalues = { - 0: 'HDMI_PACKING_PHASE_SET_BY_HW', - 1: 'HDMI_PACKING_PHASE_SET_BY_SW', -} -HDMI_PACKING_PHASE_SET_BY_HW = 0 -HDMI_PACKING_PHASE_SET_BY_SW = 1 -HDMI_PACKING_PHASE_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'LVTMA_RANDOM_PATTERN_SEED_RAN_PAT' -LVTMA_RANDOM_PATTERN_SEED_RAN_PAT__enumvalues = { - 0: 'LVTMA_RANDOM_PATTERN_SEED_ALL_PIXELS', - 1: 'LVTMA_RANDOM_PATTERN_SEED_ONLY_DE_HIGH', -} -LVTMA_RANDOM_PATTERN_SEED_ALL_PIXELS = 0 -LVTMA_RANDOM_PATTERN_SEED_ONLY_DE_HIGH = 1 -LVTMA_RANDOM_PATTERN_SEED_RAN_PAT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_COLOR_FORMAT' -TMDS_COLOR_FORMAT__enumvalues = { - 0: 'TMDS_COLOR_FORMAT__24BPP__TWIN30BPP_MSB__DUAL48BPP', - 1: 'TMDS_COLOR_FORMAT_TWIN30BPP_LSB', - 2: 'TMDS_COLOR_FORMAT_DUAL30BPP', - 3: 'TMDS_COLOR_FORMAT_RESERVED', -} -TMDS_COLOR_FORMAT__24BPP__TWIN30BPP_MSB__DUAL48BPP = 0 -TMDS_COLOR_FORMAT_TWIN30BPP_LSB = 1 -TMDS_COLOR_FORMAT_DUAL30BPP = 2 -TMDS_COLOR_FORMAT_RESERVED = 3 -TMDS_COLOR_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_DATA_INVERT' -TMDS_CTL0_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL0_DATA_NORMAL', - 1: 'TMDS_CTL0_DATA_INVERT_EN', -} -TMDS_CTL0_DATA_NORMAL = 0 -TMDS_CTL0_DATA_INVERT_EN = 1 -TMDS_CTL0_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_DATA_MODULATION' -TMDS_CTL0_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL0_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL0_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL0_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL0_DATA_MODULATION_BIT2', -} -TMDS_CTL0_DATA_MODULATION_DISABLE = 0 -TMDS_CTL0_DATA_MODULATION_BIT0 = 1 -TMDS_CTL0_DATA_MODULATION_BIT1 = 2 -TMDS_CTL0_DATA_MODULATION_BIT2 = 3 -TMDS_CTL0_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_DATA_SEL' -TMDS_CTL0_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL0_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL0_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL0_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL0_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL0_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL0_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL0_DATA_SEL8_RANDOM_DATA', - 7: 'TMDS_CTL0_DATA_SEL9_SEL15_RANDOM_DATA', -} -TMDS_CTL0_DATA_SEL0_RESERVED = 0 -TMDS_CTL0_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL0_DATA_SEL2_VSYNC = 2 -TMDS_CTL0_DATA_SEL3_RESERVED = 3 -TMDS_CTL0_DATA_SEL4_HSYNC = 4 -TMDS_CTL0_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL0_DATA_SEL8_RANDOM_DATA = 6 -TMDS_CTL0_DATA_SEL9_SEL15_RANDOM_DATA = 7 -TMDS_CTL0_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_PATTERN_OUT_EN' -TMDS_CTL0_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL0_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL0_PATTERN_OUT_ENABLE', -} -TMDS_CTL0_PATTERN_OUT_DISABLE = 0 -TMDS_CTL0_PATTERN_OUT_ENABLE = 1 -TMDS_CTL0_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_DATA_INVERT' -TMDS_CTL1_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL1_DATA_NORMAL', - 1: 'TMDS_CTL1_DATA_INVERT_EN', -} -TMDS_CTL1_DATA_NORMAL = 0 -TMDS_CTL1_DATA_INVERT_EN = 1 -TMDS_CTL1_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_DATA_MODULATION' -TMDS_CTL1_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL1_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL1_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL1_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL1_DATA_MODULATION_BIT2', -} -TMDS_CTL1_DATA_MODULATION_DISABLE = 0 -TMDS_CTL1_DATA_MODULATION_BIT0 = 1 -TMDS_CTL1_DATA_MODULATION_BIT1 = 2 -TMDS_CTL1_DATA_MODULATION_BIT2 = 3 -TMDS_CTL1_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_DATA_SEL' -TMDS_CTL1_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL1_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL1_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL1_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL1_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL1_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL1_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL1_DATA_SEL8_BLANK_TIME', - 7: 'TMDS_CTL1_DATA_SEL9_SEL15_RESERVED', -} -TMDS_CTL1_DATA_SEL0_RESERVED = 0 -TMDS_CTL1_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL1_DATA_SEL2_VSYNC = 2 -TMDS_CTL1_DATA_SEL3_RESERVED = 3 -TMDS_CTL1_DATA_SEL4_HSYNC = 4 -TMDS_CTL1_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL1_DATA_SEL8_BLANK_TIME = 6 -TMDS_CTL1_DATA_SEL9_SEL15_RESERVED = 7 -TMDS_CTL1_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_PATTERN_OUT_EN' -TMDS_CTL1_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL1_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL1_PATTERN_OUT_ENABLE', -} -TMDS_CTL1_PATTERN_OUT_DISABLE = 0 -TMDS_CTL1_PATTERN_OUT_ENABLE = 1 -TMDS_CTL1_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_DATA_INVERT' -TMDS_CTL2_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL2_DATA_NORMAL', - 1: 'TMDS_CTL2_DATA_INVERT_EN', -} -TMDS_CTL2_DATA_NORMAL = 0 -TMDS_CTL2_DATA_INVERT_EN = 1 -TMDS_CTL2_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_DATA_MODULATION' -TMDS_CTL2_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL2_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL2_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL2_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL2_DATA_MODULATION_BIT2', -} -TMDS_CTL2_DATA_MODULATION_DISABLE = 0 -TMDS_CTL2_DATA_MODULATION_BIT0 = 1 -TMDS_CTL2_DATA_MODULATION_BIT1 = 2 -TMDS_CTL2_DATA_MODULATION_BIT2 = 3 -TMDS_CTL2_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_DATA_SEL' -TMDS_CTL2_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL2_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL2_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL2_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL2_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL2_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL2_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL2_DATA_SEL8_BLANK_TIME', - 7: 'TMDS_CTL2_DATA_SEL9_SEL15_RESERVED', -} -TMDS_CTL2_DATA_SEL0_RESERVED = 0 -TMDS_CTL2_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL2_DATA_SEL2_VSYNC = 2 -TMDS_CTL2_DATA_SEL3_RESERVED = 3 -TMDS_CTL2_DATA_SEL4_HSYNC = 4 -TMDS_CTL2_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL2_DATA_SEL8_BLANK_TIME = 6 -TMDS_CTL2_DATA_SEL9_SEL15_RESERVED = 7 -TMDS_CTL2_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_PATTERN_OUT_EN' -TMDS_CTL2_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL2_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL2_PATTERN_OUT_ENABLE', -} -TMDS_CTL2_PATTERN_OUT_DISABLE = 0 -TMDS_CTL2_PATTERN_OUT_ENABLE = 1 -TMDS_CTL2_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_DATA_INVERT' -TMDS_CTL3_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL3_DATA_NORMAL', - 1: 'TMDS_CTL3_DATA_INVERT_EN', -} -TMDS_CTL3_DATA_NORMAL = 0 -TMDS_CTL3_DATA_INVERT_EN = 1 -TMDS_CTL3_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_DATA_MODULATION' -TMDS_CTL3_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL3_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL3_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL3_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL3_DATA_MODULATION_BIT2', -} -TMDS_CTL3_DATA_MODULATION_DISABLE = 0 -TMDS_CTL3_DATA_MODULATION_BIT0 = 1 -TMDS_CTL3_DATA_MODULATION_BIT1 = 2 -TMDS_CTL3_DATA_MODULATION_BIT2 = 3 -TMDS_CTL3_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_DATA_SEL' -TMDS_CTL3_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL3_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL3_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL3_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL3_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL3_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL3_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL3_DATA_SEL8_BLANK_TIME', - 7: 'TMDS_CTL3_DATA_SEL9_SEL15_RESERVED', -} -TMDS_CTL3_DATA_SEL0_RESERVED = 0 -TMDS_CTL3_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL3_DATA_SEL2_VSYNC = 2 -TMDS_CTL3_DATA_SEL3_RESERVED = 3 -TMDS_CTL3_DATA_SEL4_HSYNC = 4 -TMDS_CTL3_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL3_DATA_SEL8_BLANK_TIME = 6 -TMDS_CTL3_DATA_SEL9_SEL15_RESERVED = 7 -TMDS_CTL3_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_PATTERN_OUT_EN' -TMDS_CTL3_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL3_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL3_PATTERN_OUT_ENABLE', -} -TMDS_CTL3_PATTERN_OUT_DISABLE = 0 -TMDS_CTL3_PATTERN_OUT_ENABLE = 1 -TMDS_CTL3_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL' -TMDS_DATA_SYNCHRONIZATION_DSINTSEL__enumvalues = { - 0: 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_PCLK_TMDS', - 1: 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_TMDS_PLL', -} -TMDS_DATA_SYNCHRONIZATION_DSINTSEL_PCLK_TMDS = 0 -TMDS_DATA_SYNCHRONIZATION_DSINTSEL_TMDS_PLL = 1 -TMDS_DATA_SYNCHRONIZATION_DSINTSEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_PIXEL_ENCODING' -TMDS_PIXEL_ENCODING__enumvalues = { - 0: 'TMDS_PIXEL_ENCODING_444_OR_420', - 1: 'TMDS_PIXEL_ENCODING_422', -} -TMDS_PIXEL_ENCODING_444_OR_420 = 0 -TMDS_PIXEL_ENCODING_422 = 1 -TMDS_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_REG_TEST_OUTPUTA_CNTLA' -TMDS_REG_TEST_OUTPUTA_CNTLA__enumvalues = { - 0: 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA0', - 1: 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA1', - 2: 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA2', - 3: 'TMDS_REG_TEST_OUTPUTA_CNTLA_NA', -} -TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA0 = 0 -TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA1 = 1 -TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA2 = 2 -TMDS_REG_TEST_OUTPUTA_CNTLA_NA = 3 -TMDS_REG_TEST_OUTPUTA_CNTLA = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_REG_TEST_OUTPUTB_CNTLB' -TMDS_REG_TEST_OUTPUTB_CNTLB__enumvalues = { - 0: 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB0', - 1: 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB1', - 2: 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB2', - 3: 'TMDS_REG_TEST_OUTPUTB_CNTLB_NA', -} -TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB0 = 0 -TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB1 = 1 -TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB2 = 2 -TMDS_REG_TEST_OUTPUTB_CNTLB_NA = 3 -TMDS_REG_TEST_OUTPUTB_CNTLB = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_STEREOSYNC_CTL_SEL_REG' -TMDS_STEREOSYNC_CTL_SEL_REG__enumvalues = { - 0: 'TMDS_STEREOSYNC_CTL0', - 1: 'TMDS_STEREOSYNC_CTL1', - 2: 'TMDS_STEREOSYNC_CTL2', - 3: 'TMDS_STEREOSYNC_CTL3', -} -TMDS_STEREOSYNC_CTL0 = 0 -TMDS_STEREOSYNC_CTL1 = 1 -TMDS_STEREOSYNC_CTL2 = 2 -TMDS_STEREOSYNC_CTL3 = 3 -TMDS_STEREOSYNC_CTL_SEL_REG = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_SYNC_PHASE' -TMDS_SYNC_PHASE__enumvalues = { - 0: 'TMDS_NOT_SYNC_PHASE_ON_FRAME_START', - 1: 'TMDS_SYNC_PHASE_ON_FRAME_START', -} -TMDS_NOT_SYNC_PHASE_ON_FRAME_START = 0 -TMDS_SYNC_PHASE_ON_FRAME_START = 1 -TMDS_SYNC_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA' -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA__enumvalues = { - 0: 'TMDS_TRANSMITTER_BYPASS_PLLA_COHERENT', - 1: 'TMDS_TRANSMITTER_BYPASS_PLLA_INCOHERENT', -} -TMDS_TRANSMITTER_BYPASS_PLLA_COHERENT = 0 -TMDS_TRANSMITTER_BYPASS_PLLA_INCOHERENT = 1 -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB' -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB__enumvalues = { - 0: 'TMDS_TRANSMITTER_BYPASS_PLLB_COHERENT', - 1: 'TMDS_TRANSMITTER_BYPASS_PLLB_INCOHERENT', -} -TMDS_TRANSMITTER_BYPASS_PLLB_COHERENT = 0 -TMDS_TRANSMITTER_BYPASS_PLLB_INCOHERENT = 1 -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_IDSCKSELA' -TMDS_TRANSMITTER_CONTROL_IDSCKSELA__enumvalues = { - 0: 'TMDS_TRANSMITTER_IDSCKSELA_USE_IPIXCLK', - 1: 'TMDS_TRANSMITTER_IDSCKSELA_USE_IDCLK', -} -TMDS_TRANSMITTER_IDSCKSELA_USE_IPIXCLK = 0 -TMDS_TRANSMITTER_IDSCKSELA_USE_IDCLK = 1 -TMDS_TRANSMITTER_CONTROL_IDSCKSELA = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_IDSCKSELB' -TMDS_TRANSMITTER_CONTROL_IDSCKSELB__enumvalues = { - 0: 'TMDS_TRANSMITTER_IDSCKSELB_USE_IPIXCLK', - 1: 'TMDS_TRANSMITTER_IDSCKSELB_USE_IDCLK', -} -TMDS_TRANSMITTER_IDSCKSELB_USE_IPIXCLK = 0 -TMDS_TRANSMITTER_IDSCKSELB_USE_IDCLK = 1 -TMDS_TRANSMITTER_CONTROL_IDSCKSELB = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN' -TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN__enumvalues = { - 0: 'TMDS_TRANSMITTER_PLLSEL_BY_HW', - 1: 'TMDS_TRANSMITTER_PLLSEL_OVERWRITE_BY_SW', -} -TMDS_TRANSMITTER_PLLSEL_BY_HW = 0 -TMDS_TRANSMITTER_PLLSEL_OVERWRITE_BY_SW = 1 -TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK' -TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_HPD_NOT_OVERRIDE_PLL_ENABLE', - 1: 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_DISCON', - 2: 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_CON', - 3: 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE', -} -TMDS_TRANSMITTER_HPD_NOT_OVERRIDE_PLL_ENABLE = 0 -TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_DISCON = 1 -TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_CON = 2 -TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE = 3 -TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN' -TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN__enumvalues = { - 0: 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_DISABLE', - 1: 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_ENABLE', -} -TMDS_TRANSMITTER_PLL_PWRUP_SEQ_DISABLE = 0 -TMDS_TRANSMITTER_PLL_PWRUP_SEQ_ENABLE = 1 -TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK' -TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_PLL_NOT_RST_ON_HPD', - 1: 'TMDS_TRANSMITTER_PLL_RST_ON_HPD', -} -TMDS_TRANSMITTER_PLL_NOT_RST_ON_HPD = 0 -TMDS_TRANSMITTER_PLL_RST_ON_HPD = 1 -TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS' -TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS__enumvalues = { - 0: 'TMDS_TRANSMITTER_TDCLK_FROM_TMDS_TDCLK', - 1: 'TMDS_TRANSMITTER_TDCLK_FROM_PADS', -} -TMDS_TRANSMITTER_TDCLK_FROM_TMDS_TDCLK = 0 -TMDS_TRANSMITTER_TDCLK_FROM_PADS = 1 -TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS' -TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS__enumvalues = { - 0: 'TMDS_TRANSMITTER_TMCLK_FROM_TMDS_TMCLK', - 1: 'TMDS_TRANSMITTER_TMCLK_FROM_PADS', -} -TMDS_TRANSMITTER_TMCLK_FROM_TMDS_TMCLK = 0 -TMDS_TRANSMITTER_TMCLK_FROM_PADS = 1 -TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_ENABLE_HPD_MASK' -TMDS_TRANSMITTER_ENABLE_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_HPD_MASK_NOT_OVERRIDE', - 1: 'TMDS_TRANSMITTER_HPD_MASK_OVERRIDE', -} -TMDS_TRANSMITTER_HPD_MASK_NOT_OVERRIDE = 0 -TMDS_TRANSMITTER_HPD_MASK_OVERRIDE = 1 -TMDS_TRANSMITTER_ENABLE_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK' -TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_NOT_OVERRIDE', - 1: 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_OVERRIDE', -} -TMDS_TRANSMITTER_LNKCEN_HPD_MASK_NOT_OVERRIDE = 0 -TMDS_TRANSMITTER_LNKCEN_HPD_MASK_OVERRIDE = 1 -TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK' -TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_NOT_OVERRIDE', - 1: 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_OVERRIDE', -} -TMDS_TRANSMITTER_LNKDEN_HPD_MASK_NOT_OVERRIDE = 0 -TMDS_TRANSMITTER_LNKDEN_HPD_MASK_OVERRIDE = 1 -TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ACK' -DOUT_I2C_ACK__enumvalues = { - 0: 'DOUT_I2C_NO_ACK', - 1: 'DOUT_I2C_ACK_TO_CLEAN', -} -DOUT_I2C_NO_ACK = 0 -DOUT_I2C_ACK_TO_CLEAN = 1 -DOUT_I2C_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_ABORT_XFER' -DOUT_I2C_ARBITRATION_ABORT_XFER__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_NOT_ABORT_CURRENT_TRANSFER', - 1: 'DOUT_I2C_ARBITRATION_ABORT_CURRENT_TRANSFER', -} -DOUT_I2C_ARBITRATION_NOT_ABORT_CURRENT_TRANSFER = 0 -DOUT_I2C_ARBITRATION_ABORT_CURRENT_TRANSFER = 1 -DOUT_I2C_ARBITRATION_ABORT_XFER = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG' -DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_DONE__NOT_USING_I2C_REG', - 1: 'DOUT_I2C_ARBITRATION_DONE__USING_I2C_REG', -} -DOUT_I2C_ARBITRATION_DONE__NOT_USING_I2C_REG = 0 -DOUT_I2C_ARBITRATION_DONE__USING_I2C_REG = 1 -DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO' -DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_SW_QUEUE_ENABLED', - 1: 'DOUT_I2C_ARBITRATION_SW_QUEUE_DISABLED', -} -DOUT_I2C_ARBITRATION_SW_QUEUE_ENABLED = 0 -DOUT_I2C_ARBITRATION_SW_QUEUE_DISABLED = 1 -DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_SW_PRIORITY' -DOUT_I2C_ARBITRATION_SW_PRIORITY__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_NORMAL', - 1: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_HIGH', - 2: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_0_RESERVED', - 3: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_1_RESERVED', -} -DOUT_I2C_ARBITRATION_SW_PRIORITY_NORMAL = 0 -DOUT_I2C_ARBITRATION_SW_PRIORITY_HIGH = 1 -DOUT_I2C_ARBITRATION_SW_PRIORITY_0_RESERVED = 2 -DOUT_I2C_ARBITRATION_SW_PRIORITY_1_RESERVED = 3 -DOUT_I2C_ARBITRATION_SW_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ' -DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION__NOT_USE_I2C_REG_REQ', - 1: 'DOUT_I2C_ARBITRATION__USE_I2C_REG_REQ', -} -DOUT_I2C_ARBITRATION__NOT_USE_I2C_REG_REQ = 0 -DOUT_I2C_ARBITRATION__USE_I2C_REG_REQ = 1 -DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_DBG_REF_SEL' -DOUT_I2C_CONTROL_DBG_REF_SEL__enumvalues = { - 0: 'DOUT_I2C_CONTROL_NORMAL_DEBUG', - 1: 'DOUT_I2C_CONTROL_FAST_REFERENCE_DEBUG', -} -DOUT_I2C_CONTROL_NORMAL_DEBUG = 0 -DOUT_I2C_CONTROL_FAST_REFERENCE_DEBUG = 1 -DOUT_I2C_CONTROL_DBG_REF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_DDC_SELECT' -DOUT_I2C_CONTROL_DDC_SELECT__enumvalues = { - 0: 'DOUT_I2C_CONTROL_SELECT_DDC1', - 1: 'DOUT_I2C_CONTROL_SELECT_DDC2', - 2: 'DOUT_I2C_CONTROL_SELECT_DDC3', - 3: 'DOUT_I2C_CONTROL_SELECT_DDC4', - 4: 'DOUT_I2C_CONTROL_SELECT_DDCVGA', -} -DOUT_I2C_CONTROL_SELECT_DDC1 = 0 -DOUT_I2C_CONTROL_SELECT_DDC2 = 1 -DOUT_I2C_CONTROL_SELECT_DDC3 = 2 -DOUT_I2C_CONTROL_SELECT_DDC4 = 3 -DOUT_I2C_CONTROL_SELECT_DDCVGA = 4 -DOUT_I2C_CONTROL_DDC_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_GO' -DOUT_I2C_CONTROL_GO__enumvalues = { - 0: 'DOUT_I2C_CONTROL_STOP_TRANSFER', - 1: 'DOUT_I2C_CONTROL_START_TRANSFER', -} -DOUT_I2C_CONTROL_STOP_TRANSFER = 0 -DOUT_I2C_CONTROL_START_TRANSFER = 1 -DOUT_I2C_CONTROL_GO = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_SEND_RESET' -DOUT_I2C_CONTROL_SEND_RESET__enumvalues = { - 0: 'DOUT_I2C_CONTROL__NOT_SEND_RESET', - 1: 'DOUT_I2C_CONTROL__SEND_RESET', -} -DOUT_I2C_CONTROL__NOT_SEND_RESET = 0 -DOUT_I2C_CONTROL__SEND_RESET = 1 -DOUT_I2C_CONTROL_SEND_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_SEND_RESET_LENGTH' -DOUT_I2C_CONTROL_SEND_RESET_LENGTH__enumvalues = { - 0: 'DOUT_I2C_CONTROL__SEND_RESET_LENGTH_9', - 1: 'DOUT_I2C_CONTROL__SEND_RESET_LENGTH_10', -} -DOUT_I2C_CONTROL__SEND_RESET_LENGTH_9 = 0 -DOUT_I2C_CONTROL__SEND_RESET_LENGTH_10 = 1 -DOUT_I2C_CONTROL_SEND_RESET_LENGTH = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_SOFT_RESET' -DOUT_I2C_CONTROL_SOFT_RESET__enumvalues = { - 0: 'DOUT_I2C_CONTROL_NOT_RESET_I2C_CONTROLLER', - 1: 'DOUT_I2C_CONTROL_RESET_I2C_CONTROLLER', -} -DOUT_I2C_CONTROL_NOT_RESET_I2C_CONTROLLER = 0 -DOUT_I2C_CONTROL_RESET_I2C_CONTROLLER = 1 -DOUT_I2C_CONTROL_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_SW_STATUS_RESET' -DOUT_I2C_CONTROL_SW_STATUS_RESET__enumvalues = { - 0: 'DOUT_I2C_CONTROL_NOT_RESET_SW_STATUS', - 1: 'DOUT_I2C_CONTROL_RESET_SW_STATUS', -} -DOUT_I2C_CONTROL_NOT_RESET_SW_STATUS = 0 -DOUT_I2C_CONTROL_RESET_SW_STATUS = 1 -DOUT_I2C_CONTROL_SW_STATUS_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_TRANSACTION_COUNT' -DOUT_I2C_CONTROL_TRANSACTION_COUNT__enumvalues = { - 0: 'DOUT_I2C_CONTROL_TRANS0', - 1: 'DOUT_I2C_CONTROL_TRANS0_TRANS1', - 2: 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2', - 3: 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2_TRANS3', -} -DOUT_I2C_CONTROL_TRANS0 = 0 -DOUT_I2C_CONTROL_TRANS0_TRANS1 = 1 -DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2 = 2 -DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2_TRANS3 = 3 -DOUT_I2C_CONTROL_TRANSACTION_COUNT = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DATA_INDEX_WRITE' -DOUT_I2C_DATA_INDEX_WRITE__enumvalues = { - 0: 'DOUT_I2C_DATA__NOT_INDEX_WRITE', - 1: 'DOUT_I2C_DATA__INDEX_WRITE', -} -DOUT_I2C_DATA__NOT_INDEX_WRITE = 0 -DOUT_I2C_DATA__INDEX_WRITE = 1 -DOUT_I2C_DATA_INDEX_WRITE = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN' -DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_BY_EXTERNAL_RESISTOR', - 1: 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SCL', -} -DOUT_I2C_DDC_SETUP_CLK_DRIVE_BY_EXTERNAL_RESISTOR = 0 -DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SCL = 1 -DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN' -DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_BY_EXTERNAL_RESISTOR', - 1: 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SDA', -} -DOUT_I2C_DDC_SETUP_DATA_DRIVE_BY_EXTERNAL_RESISTOR = 0 -DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SDA = 1 -DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL' -DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_10MCLKS', - 1: 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_20MCLKS', -} -DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_10MCLKS = 0 -DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_20MCLKS = 1 -DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE' -DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_EDID_DETECT_CONNECT', - 1: 'DOUT_I2C_DDC_SETUP_EDID_DETECT_DISCONNECT', -} -DOUT_I2C_DDC_SETUP_EDID_DETECT_CONNECT = 0 -DOUT_I2C_DDC_SETUP_EDID_DETECT_DISCONNECT = 1 -DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SPEED_THRESHOLD' -DOUT_I2C_DDC_SPEED_THRESHOLD__enumvalues = { - 0: 'DOUT_I2C_DDC_SPEED_THRESHOLD_BIG_THAN_ZERO', - 1: 'DOUT_I2C_DDC_SPEED_THRESHOLD_QUATER_OF_TOTAL_SAMPLE', - 2: 'DOUT_I2C_DDC_SPEED_THRESHOLD_HALF_OF_TOTAL_SAMPLE', - 3: 'DOUT_I2C_DDC_SPEED_THRESHOLD_THREE_QUATERS_OF_TOTAL_SAMPLE', -} -DOUT_I2C_DDC_SPEED_THRESHOLD_BIG_THAN_ZERO = 0 -DOUT_I2C_DDC_SPEED_THRESHOLD_QUATER_OF_TOTAL_SAMPLE = 1 -DOUT_I2C_DDC_SPEED_THRESHOLD_HALF_OF_TOTAL_SAMPLE = 2 -DOUT_I2C_DDC_SPEED_THRESHOLD_THREE_QUATERS_OF_TOTAL_SAMPLE = 3 -DOUT_I2C_DDC_SPEED_THRESHOLD = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET' -DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET__enumvalues = { - 0: 'DOUT_I2C_EDID_NOT_SEND_RESET_BEFORE_EDID_READ_TRACTION', - 1: 'DOUT_I2C_EDID_SEND_RESET_BEFORE_EDID_READ_TRACTION', -} -DOUT_I2C_EDID_NOT_SEND_RESET_BEFORE_EDID_READ_TRACTION = 0 -DOUT_I2C_EDID_SEND_RESET_BEFORE_EDID_READ_TRACTION = 1 -DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE' -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__enumvalues = { - 0: 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__LEVEL', - 1: 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__PULSE', -} -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__LEVEL = 0 -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__PULSE = 1 -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_TRANSACTION_STOP_ON_NACK' -DOUT_I2C_TRANSACTION_STOP_ON_NACK__enumvalues = { - 0: 'DOUT_I2C_TRANSACTION_STOP_CURRENT_TRANS', - 1: 'DOUT_I2C_TRANSACTION_STOP_ALL_TRANS', -} -DOUT_I2C_TRANSACTION_STOP_CURRENT_TRANS = 0 -DOUT_I2C_TRANSACTION_STOP_ALL_TRANS = 1 -DOUT_I2C_TRANSACTION_STOP_ON_NACK = ctypes.c_uint32 # enum - -# values for enumeration 'CLOCK_GATING_EN' -CLOCK_GATING_EN__enumvalues = { - 0: 'CLOCK_GATING_ENABLE', - 1: 'CLOCK_GATING_DISABLE', -} -CLOCK_GATING_ENABLE = 0 -CLOCK_GATING_DISABLE = 1 -CLOCK_GATING_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DAC_MUX_SELECT' -DAC_MUX_SELECT__enumvalues = { - 0: 'DAC_MUX_SELECT_DACA', - 1: 'DAC_MUX_SELECT_DACB', -} -DAC_MUX_SELECT_DACA = 0 -DAC_MUX_SELECT_DACB = 1 -DAC_MUX_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_DIS_CTRL' -DIOMEM_PWR_DIS_CTRL__enumvalues = { - 0: 'DIOMEM_ENABLE_MEM_PWR_CTRL', - 1: 'DIOMEM_DISABLE_MEM_PWR_CTRL', -} -DIOMEM_ENABLE_MEM_PWR_CTRL = 0 -DIOMEM_DISABLE_MEM_PWR_CTRL = 1 -DIOMEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_FORCE_CTRL' -DIOMEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'DIOMEM_NO_FORCE_REQUEST', - 1: 'DIOMEM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'DIOMEM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'DIOMEM_FORCE_SHUT_DOWN_REQUEST', -} -DIOMEM_NO_FORCE_REQUEST = 0 -DIOMEM_FORCE_LIGHT_SLEEP_REQUEST = 1 -DIOMEM_FORCE_DEEP_SLEEP_REQUEST = 2 -DIOMEM_FORCE_SHUT_DOWN_REQUEST = 3 -DIOMEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_FORCE_CTRL2' -DIOMEM_PWR_FORCE_CTRL2__enumvalues = { - 0: 'DIOMEM_NO_FORCE_REQ', - 1: 'DIOMEM_FORCE_LIGHT_SLEEP_REQ', -} -DIOMEM_NO_FORCE_REQ = 0 -DIOMEM_FORCE_LIGHT_SLEEP_REQ = 1 -DIOMEM_PWR_FORCE_CTRL2 = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_SEL_CTRL' -DIOMEM_PWR_SEL_CTRL__enumvalues = { - 0: 'DIOMEM_DYNAMIC_SHUT_DOWN_ENABLE', - 1: 'DIOMEM_DYNAMIC_DEEP_SLEEP_ENABLE', - 2: 'DIOMEM_DYNAMIC_LIGHT_SLEEP_ENABLE', -} -DIOMEM_DYNAMIC_SHUT_DOWN_ENABLE = 0 -DIOMEM_DYNAMIC_DEEP_SLEEP_ENABLE = 1 -DIOMEM_DYNAMIC_LIGHT_SLEEP_ENABLE = 2 -DIOMEM_PWR_SEL_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_SEL_CTRL2' -DIOMEM_PWR_SEL_CTRL2__enumvalues = { - 0: 'DIOMEM_DYNAMIC_DEEP_SLEEP_EN', - 1: 'DIOMEM_DYNAMIC_LIGHT_SLEEP_EN', -} -DIOMEM_DYNAMIC_DEEP_SLEEP_EN = 0 -DIOMEM_DYNAMIC_LIGHT_SLEEP_EN = 1 -DIOMEM_PWR_SEL_CTRL2 = ctypes.c_uint32 # enum - -# values for enumeration 'DIO_CLOCK_GATING_DISABLE' -DIO_CLOCK_GATING_DISABLE__enumvalues = { - 0: 'DIO_CLOCK_GATING_EN', - 1: 'DIO_CLOCK_GATING_DIS', -} -DIO_CLOCK_GATING_EN = 0 -DIO_CLOCK_GATING_DIS = 1 -DIO_CLOCK_GATING_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DIO_DBG_BLOCK_SEL' -DIO_DBG_BLOCK_SEL__enumvalues = { - 0: 'DIO_DBG_BLOCK_SEL_DIO', - 11: 'DIO_DBG_BLOCK_SEL_DIGFE_A', - 12: 'DIO_DBG_BLOCK_SEL_DIGFE_B', - 13: 'DIO_DBG_BLOCK_SEL_DIGFE_C', - 14: 'DIO_DBG_BLOCK_SEL_DIGFE_D', - 18: 'DIO_DBG_BLOCK_SEL_DIGA', - 19: 'DIO_DBG_BLOCK_SEL_DIGB', - 20: 'DIO_DBG_BLOCK_SEL_DIGC', - 21: 'DIO_DBG_BLOCK_SEL_DIGD', - 25: 'DIO_DBG_BLOCK_SEL_DPFE_A', - 26: 'DIO_DBG_BLOCK_SEL_DPFE_B', - 27: 'DIO_DBG_BLOCK_SEL_DPFE_C', - 28: 'DIO_DBG_BLOCK_SEL_DPFE_D', - 32: 'DIO_DBG_BLOCK_SEL_DPA', - 33: 'DIO_DBG_BLOCK_SEL_DPB', - 34: 'DIO_DBG_BLOCK_SEL_DPC', - 35: 'DIO_DBG_BLOCK_SEL_DPD', - 39: 'DIO_DBG_BLOCK_SEL_AUX0', - 40: 'DIO_DBG_BLOCK_SEL_AUX1', - 41: 'DIO_DBG_BLOCK_SEL_AUX2', - 42: 'DIO_DBG_BLOCK_SEL_AUX3', - 45: 'DIO_DBG_BLOCK_SEL_PERFMON_DIO', - 46: 'DIO_DBG_BLOCK_SEL_RESERVED', -} -DIO_DBG_BLOCK_SEL_DIO = 0 -DIO_DBG_BLOCK_SEL_DIGFE_A = 11 -DIO_DBG_BLOCK_SEL_DIGFE_B = 12 -DIO_DBG_BLOCK_SEL_DIGFE_C = 13 -DIO_DBG_BLOCK_SEL_DIGFE_D = 14 -DIO_DBG_BLOCK_SEL_DIGA = 18 -DIO_DBG_BLOCK_SEL_DIGB = 19 -DIO_DBG_BLOCK_SEL_DIGC = 20 -DIO_DBG_BLOCK_SEL_DIGD = 21 -DIO_DBG_BLOCK_SEL_DPFE_A = 25 -DIO_DBG_BLOCK_SEL_DPFE_B = 26 -DIO_DBG_BLOCK_SEL_DPFE_C = 27 -DIO_DBG_BLOCK_SEL_DPFE_D = 28 -DIO_DBG_BLOCK_SEL_DPA = 32 -DIO_DBG_BLOCK_SEL_DPB = 33 -DIO_DBG_BLOCK_SEL_DPC = 34 -DIO_DBG_BLOCK_SEL_DPD = 35 -DIO_DBG_BLOCK_SEL_AUX0 = 39 -DIO_DBG_BLOCK_SEL_AUX1 = 40 -DIO_DBG_BLOCK_SEL_AUX2 = 41 -DIO_DBG_BLOCK_SEL_AUX3 = 42 -DIO_DBG_BLOCK_SEL_PERFMON_DIO = 45 -DIO_DBG_BLOCK_SEL_RESERVED = 46 -DIO_DBG_BLOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIO_HDMI_RXSTATUS_TIMER_CONTROL_DIO_HDMI_RXSTATUS_TIMER_TYPE' -DIO_HDMI_RXSTATUS_TIMER_CONTROL_DIO_HDMI_RXSTATUS_TIMER_TYPE__enumvalues = { - 0: 'DIO_HDMI_RXSTATUS_TIMER_TYPE_LEVEL', - 1: 'DIO_HDMI_RXSTATUS_TIMER_TYPE_PULSE', -} -DIO_HDMI_RXSTATUS_TIMER_TYPE_LEVEL = 0 -DIO_HDMI_RXSTATUS_TIMER_TYPE_PULSE = 1 -DIO_HDMI_RXSTATUS_TIMER_CONTROL_DIO_HDMI_RXSTATUS_TIMER_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DIO_DCN_ACTIVE_STATUS' -ENUM_DIO_DCN_ACTIVE_STATUS__enumvalues = { - 0: 'ENUM_DCN_NOT_ACTIVE', - 1: 'ENUM_DCN_ACTIVE', -} -ENUM_DCN_NOT_ACTIVE = 0 -ENUM_DCN_ACTIVE = 1 -ENUM_DIO_DCN_ACTIVE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_STEREOSYNC_SEL' -GENERIC_STEREOSYNC_SEL__enumvalues = { - 0: 'GENERIC_STEREOSYNC_SEL_D1', - 1: 'GENERIC_STEREOSYNC_SEL_D2', - 2: 'GENERIC_STEREOSYNC_SEL_D3', - 3: 'GENERIC_STEREOSYNC_SEL_D4', - 4: 'GENERIC_STEREOSYNC_SEL_RESERVED', -} -GENERIC_STEREOSYNC_SEL_D1 = 0 -GENERIC_STEREOSYNC_SEL_D2 = 1 -GENERIC_STEREOSYNC_SEL_D3 = 2 -GENERIC_STEREOSYNC_SEL_D4 = 3 -GENERIC_STEREOSYNC_SEL_RESERVED = 4 -GENERIC_STEREOSYNC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PM_ASSERT_RESET' -PM_ASSERT_RESET__enumvalues = { - 0: 'PM_ASSERT_RESET_0', - 1: 'PM_ASSERT_RESET_1', -} -PM_ASSERT_RESET_0 = 0 -PM_ASSERT_RESET_1 = 1 -PM_ASSERT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'SOFT_RESET' -SOFT_RESET__enumvalues = { - 0: 'SOFT_RESET_0', - 1: 'SOFT_RESET_1', -} -SOFT_RESET_0 = 0 -SOFT_RESET_1 = 1 -SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_MUX_SELECT' -TMDS_MUX_SELECT__enumvalues = { - 0: 'TMDS_MUX_SELECT_B', - 1: 'TMDS_MUX_SELECT_G', - 2: 'TMDS_MUX_SELECT_R', - 3: 'TMDS_MUX_SELECT_RESERVED', -} -TMDS_MUX_SELECT_B = 0 -TMDS_MUX_SELECT_G = 1 -TMDS_MUX_SELECT_R = 2 -TMDS_MUX_SELECT_RESERVED = 3 -TMDS_MUX_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_STREAM_MAPPER_DIG_STREAM_LINK_TARGET' -DIG_STREAM_MAPPER_DIG_STREAM_LINK_TARGET__enumvalues = { - 0: 'DIG_STREAM_MAPPER_LINK0', - 1: 'DIG_STREAM_MAPPER_LINK1', - 2: 'DIG_STREAM_MAPPER_LINK2', - 3: 'DIG_STREAM_MAPPER_LINK3', - 4: 'DIG_STREAM_MAPPER_LINK6', -} -DIG_STREAM_MAPPER_LINK0 = 0 -DIG_STREAM_MAPPER_LINK1 = 1 -DIG_STREAM_MAPPER_LINK2 = 2 -DIG_STREAM_MAPPER_LINK3 = 3 -DIG_STREAM_MAPPER_LINK6 = 4 -DIG_STREAM_MAPPER_DIG_STREAM_LINK_TARGET = ctypes.c_uint32 # enum - -# values for enumeration 'DME_MEM_POWER_STATE_ENUM' -DME_MEM_POWER_STATE_ENUM__enumvalues = { - 0: 'DME_MEM_POWER_STATE_ENUM_ON', - 1: 'DME_MEM_POWER_STATE_ENUM_LS', - 2: 'DME_MEM_POWER_STATE_ENUM_DS', - 3: 'DME_MEM_POWER_STATE_ENUM_SD', -} -DME_MEM_POWER_STATE_ENUM_ON = 0 -DME_MEM_POWER_STATE_ENUM_LS = 1 -DME_MEM_POWER_STATE_ENUM_DS = 2 -DME_MEM_POWER_STATE_ENUM_SD = 3 -DME_MEM_POWER_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DME_MEM_PWR_DIS_CTRL' -DME_MEM_PWR_DIS_CTRL__enumvalues = { - 0: 'DME_MEM_ENABLE_MEM_PWR_CTRL', - 1: 'DME_MEM_DISABLE_MEM_PWR_CTRL', -} -DME_MEM_ENABLE_MEM_PWR_CTRL = 0 -DME_MEM_DISABLE_MEM_PWR_CTRL = 1 -DME_MEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'DME_MEM_PWR_FORCE_CTRL' -DME_MEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'DME_MEM_NO_FORCE_REQUEST', - 1: 'DME_MEM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'DME_MEM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'DME_MEM_FORCE_SHUT_DOWN_REQUEST', -} -DME_MEM_NO_FORCE_REQUEST = 0 -DME_MEM_FORCE_LIGHT_SLEEP_REQUEST = 1 -DME_MEM_FORCE_DEEP_SLEEP_REQUEST = 2 -DME_MEM_FORCE_SHUT_DOWN_REQUEST = 3 -DME_MEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'METADATA_HUBP_SEL' -METADATA_HUBP_SEL__enumvalues = { - 0: 'METADATA_HUBP_SEL_0', - 1: 'METADATA_HUBP_SEL_1', - 2: 'METADATA_HUBP_SEL_2', - 3: 'METADATA_HUBP_SEL_3', - 4: 'METADATA_HUBP_SEL_RESERVED', -} -METADATA_HUBP_SEL_0 = 0 -METADATA_HUBP_SEL_1 = 1 -METADATA_HUBP_SEL_2 = 2 -METADATA_HUBP_SEL_3 = 3 -METADATA_HUBP_SEL_RESERVED = 4 -METADATA_HUBP_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'METADATA_STREAM_TYPE_SEL' -METADATA_STREAM_TYPE_SEL__enumvalues = { - 0: 'METADATA_STREAM_DP', - 1: 'METADATA_STREAM_DVE', -} -METADATA_STREAM_DP = 0 -METADATA_STREAM_DVE = 1 -METADATA_STREAM_TYPE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'VPG_MEM_PWR_DIS_CTRL' -VPG_MEM_PWR_DIS_CTRL__enumvalues = { - 0: 'VPG_MEM_ENABLE_MEM_PWR_CTRL', - 1: 'VPG_MEM_DISABLE_MEM_PWR_CTRL', -} -VPG_MEM_ENABLE_MEM_PWR_CTRL = 0 -VPG_MEM_DISABLE_MEM_PWR_CTRL = 1 -VPG_MEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'VPG_MEM_PWR_FORCE_CTRL' -VPG_MEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'VPG_MEM_NO_FORCE_REQ', - 1: 'VPG_MEM_FORCE_LIGHT_SLEEP_REQ', -} -VPG_MEM_NO_FORCE_REQ = 0 -VPG_MEM_FORCE_LIGHT_SLEEP_REQ = 1 -VPG_MEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_ACP_TYPE' -AFMT_ACP_TYPE__enumvalues = { - 0: 'ACP_TYPE_GENERIC_AUDIO', - 1: 'ACP_TYPE_ICE60958_AUDIO', - 2: 'ACP_TYPE_DVD_AUDIO', - 3: 'ACP_TYPE_SUPER_AUDIO_CD', -} -ACP_TYPE_GENERIC_AUDIO = 0 -ACP_TYPE_ICE60958_AUDIO = 1 -ACP_TYPE_DVD_AUDIO = 2 -ACP_TYPE_SUPER_AUDIO_CD = 3 -AFMT_ACP_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_CRC_CONTROL_CH_SEL' -AFMT_AUDIO_CRC_CONTROL_CH_SEL__enumvalues = { - 0: 'AFMT_AUDIO_CRC_CH0_SIG', - 1: 'AFMT_AUDIO_CRC_CH1_SIG', - 2: 'AFMT_AUDIO_CRC_CH2_SIG', - 3: 'AFMT_AUDIO_CRC_CH3_SIG', - 4: 'AFMT_AUDIO_CRC_CH4_SIG', - 5: 'AFMT_AUDIO_CRC_CH5_SIG', - 6: 'AFMT_AUDIO_CRC_CH6_SIG', - 7: 'AFMT_AUDIO_CRC_CH7_SIG', - 8: 'AFMT_AUDIO_CRC_RESERVED_8', - 9: 'AFMT_AUDIO_CRC_RESERVED_9', - 10: 'AFMT_AUDIO_CRC_RESERVED_10', - 11: 'AFMT_AUDIO_CRC_RESERVED_11', - 12: 'AFMT_AUDIO_CRC_RESERVED_12', - 13: 'AFMT_AUDIO_CRC_RESERVED_13', - 14: 'AFMT_AUDIO_CRC_RESERVED_14', - 15: 'AFMT_AUDIO_CRC_AUDIO_SAMPLE_COUNT', -} -AFMT_AUDIO_CRC_CH0_SIG = 0 -AFMT_AUDIO_CRC_CH1_SIG = 1 -AFMT_AUDIO_CRC_CH2_SIG = 2 -AFMT_AUDIO_CRC_CH3_SIG = 3 -AFMT_AUDIO_CRC_CH4_SIG = 4 -AFMT_AUDIO_CRC_CH5_SIG = 5 -AFMT_AUDIO_CRC_CH6_SIG = 6 -AFMT_AUDIO_CRC_CH7_SIG = 7 -AFMT_AUDIO_CRC_RESERVED_8 = 8 -AFMT_AUDIO_CRC_RESERVED_9 = 9 -AFMT_AUDIO_CRC_RESERVED_10 = 10 -AFMT_AUDIO_CRC_RESERVED_11 = 11 -AFMT_AUDIO_CRC_RESERVED_12 = 12 -AFMT_AUDIO_CRC_RESERVED_13 = 13 -AFMT_AUDIO_CRC_RESERVED_14 = 14 -AFMT_AUDIO_CRC_AUDIO_SAMPLE_COUNT = 15 -AFMT_AUDIO_CRC_CONTROL_CH_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_CRC_CONTROL_CONT' -AFMT_AUDIO_CRC_CONTROL_CONT__enumvalues = { - 0: 'AFMT_AUDIO_CRC_ONESHOT', - 1: 'AFMT_AUDIO_CRC_AUTO_RESTART', -} -AFMT_AUDIO_CRC_ONESHOT = 0 -AFMT_AUDIO_CRC_AUTO_RESTART = 1 -AFMT_AUDIO_CRC_CONTROL_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_CRC_CONTROL_SOURCE' -AFMT_AUDIO_CRC_CONTROL_SOURCE__enumvalues = { - 0: 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_INPUT', - 1: 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_OUTPUT', -} -AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_INPUT = 0 -AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_OUTPUT = 1 -AFMT_AUDIO_CRC_CONTROL_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD' -AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD__enumvalues = { - 0: 'AFMT_AUDIO_LAYOUT_DETERMINED_BY_AZ_AUDIO_CHANNEL_STATUS', - 1: 'AFMT_AUDIO_LAYOUT_OVRD_BY_REGISTER', -} -AFMT_AUDIO_LAYOUT_DETERMINED_BY_AZ_AUDIO_CHANNEL_STATUS = 0 -AFMT_AUDIO_LAYOUT_OVRD_BY_REGISTER = 1 -AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND' -AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND__enumvalues = { - 0: 'AFMT_AUDIO_PACKET_SENT_DISABLED', - 1: 'AFMT_AUDIO_PACKET_SENT_ENABLED', -} -AFMT_AUDIO_PACKET_SENT_DISABLED = 0 -AFMT_AUDIO_PACKET_SENT_ENABLED = 1 -AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS' -AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS__enumvalues = { - 0: 'AFMT_NOT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED_RESERVED', - 1: 'AFMT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED', -} -AFMT_NOT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED_RESERVED = 0 -AFMT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED = 1 -AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_SRC_CONTROL_SELECT' -AFMT_AUDIO_SRC_CONTROL_SELECT__enumvalues = { - 0: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM0', - 1: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM1', - 2: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM2', - 3: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM3', - 4: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM4', - 5: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM5', -} -AFMT_AUDIO_SRC_FROM_AZ_STREAM0 = 0 -AFMT_AUDIO_SRC_FROM_AZ_STREAM1 = 1 -AFMT_AUDIO_SRC_FROM_AZ_STREAM2 = 2 -AFMT_AUDIO_SRC_FROM_AZ_STREAM3 = 3 -AFMT_AUDIO_SRC_FROM_AZ_STREAM4 = 4 -AFMT_AUDIO_SRC_FROM_AZ_STREAM5 = 5 -AFMT_AUDIO_SRC_CONTROL_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_HDMI_AUDIO_SEND_MAX_PACKETS' -AFMT_HDMI_AUDIO_SEND_MAX_PACKETS__enumvalues = { - 0: 'HDMI_NOT_SEND_MAX_AUDIO_PACKETS', - 1: 'HDMI_SEND_MAX_AUDIO_PACKETS', -} -HDMI_NOT_SEND_MAX_AUDIO_PACKETS = 0 -HDMI_SEND_MAX_AUDIO_PACKETS = 1 -AFMT_HDMI_AUDIO_SEND_MAX_PACKETS = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE' -AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE__enumvalues = { - 0: 'AFMT_INFOFRAME_SOURCE_FROM_AZALIA_BLOCK', - 1: 'AFMT_INFOFRAME_SOURCE_FROM_AFMT_REGISTERS', -} -AFMT_INFOFRAME_SOURCE_FROM_AZALIA_BLOCK = 0 -AFMT_INFOFRAME_SOURCE_FROM_AFMT_REGISTERS = 1 -AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_INTERRUPT_STATUS_CHG_MASK' -AFMT_INTERRUPT_STATUS_CHG_MASK__enumvalues = { - 0: 'AFMT_INTERRUPT_DISABLE', - 1: 'AFMT_INTERRUPT_ENABLE', -} -AFMT_INTERRUPT_DISABLE = 0 -AFMT_INTERRUPT_ENABLE = 1 -AFMT_INTERRUPT_STATUS_CHG_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_MEM_PWR_DIS_CTRL' -AFMT_MEM_PWR_DIS_CTRL__enumvalues = { - 0: 'AFMT_MEM_ENABLE_MEM_PWR_CTRL', - 1: 'AFMT_MEM_DISABLE_MEM_PWR_CTRL', -} -AFMT_MEM_ENABLE_MEM_PWR_CTRL = 0 -AFMT_MEM_DISABLE_MEM_PWR_CTRL = 1 -AFMT_MEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_MEM_PWR_FORCE_CTRL' -AFMT_MEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'AFMT_MEM_NO_FORCE_REQUEST', - 1: 'AFMT_MEM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'AFMT_MEM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'AFMT_MEM_FORCE_SHUT_DOWN_REQUEST', -} -AFMT_MEM_NO_FORCE_REQUEST = 0 -AFMT_MEM_FORCE_LIGHT_SLEEP_REQUEST = 1 -AFMT_MEM_FORCE_DEEP_SLEEP_REQUEST = 2 -AFMT_MEM_FORCE_SHUT_DOWN_REQUEST = 3 -AFMT_MEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_RAMP_CONTROL0_SIGN' -AFMT_RAMP_CONTROL0_SIGN__enumvalues = { - 0: 'AFMT_RAMP_SIGNED', - 1: 'AFMT_RAMP_UNSIGNED', -} -AFMT_RAMP_SIGNED = 0 -AFMT_RAMP_UNSIGNED = 1 -AFMT_RAMP_CONTROL0_SIGN = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_VBI_PACKET_CONTROL_ACP_SOURCE' -AFMT_VBI_PACKET_CONTROL_ACP_SOURCE__enumvalues = { - 0: 'AFMT_ACP_SOURCE_FROM_AZALIA', - 1: 'AFMT_ACP_SOURCE_FROM_AFMT_REGISTERS', -} -AFMT_ACP_SOURCE_FROM_AZALIA = 0 -AFMT_ACP_SOURCE_FROM_AFMT_REGISTERS = 1 -AFMT_VBI_PACKET_CONTROL_ACP_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'AUDIO_LAYOUT_SELECT' -AUDIO_LAYOUT_SELECT__enumvalues = { - 0: 'AUDIO_LAYOUT_0', - 1: 'AUDIO_LAYOUT_1', -} -AUDIO_LAYOUT_0 = 0 -AUDIO_LAYOUT_1 = 1 -AUDIO_LAYOUT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DCOH_TEST_CLOCK_MUX_SELECT_ENUM' -DCOH_TEST_CLOCK_MUX_SELECT_ENUM__enumvalues = { - 0: 'DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_P', - 1: 'DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_R', - 2: 'DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_G_AUX1', - 3: 'DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_G_AUX2', - 4: 'DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_G_AUX3', - 5: 'DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_G_AUX4', - 6: 'DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_G_AUX5', - 7: 'DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_G_AUX6', - 8: 'DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_P', - 9: 'DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_R', - 10: 'DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_G_AUX1', - 11: 'DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_G_AUX2', - 12: 'DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_G_AUX3', - 13: 'DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_G_AUX4', - 14: 'DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_G_AUX5', - 15: 'DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_G_AUX6', - 16: 'DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK0', - 17: 'DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK1', - 18: 'DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK2', - 19: 'DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK3', - 20: 'DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK4', - 21: 'DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK5', - 22: 'DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK6', - 23: 'DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK7', - 24: 'DCOH_TEST_CLOCK_MUX_SELECT_PHYASYMCLK', - 25: 'DCOH_TEST_CLOCK_MUX_SELECT_PHYBSYMCLK', - 26: 'DCOH_TEST_CLOCK_MUX_SELECT_PHYCSYMCLK', - 27: 'DCOH_TEST_CLOCK_MUX_SELECT_PHYDSYMCLK', - 28: 'DCOH_TEST_CLOCK_MUX_SELECT_PHYESYMCLK', - 29: 'DCOH_TEST_CLOCK_MUX_SELECT_PHYFSYMCLK', - 30: 'DCOH_TEST_CLOCK_MUX_SELECT_PHYGSYMCLK', -} -DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_P = 0 -DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_R = 1 -DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_G_AUX1 = 2 -DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_G_AUX2 = 3 -DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_G_AUX3 = 4 -DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_G_AUX4 = 5 -DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_G_AUX5 = 6 -DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_G_AUX6 = 7 -DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_P = 8 -DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_R = 9 -DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_G_AUX1 = 10 -DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_G_AUX2 = 11 -DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_G_AUX3 = 12 -DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_G_AUX4 = 13 -DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_G_AUX5 = 14 -DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_G_AUX6 = 15 -DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK0 = 16 -DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK1 = 17 -DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK2 = 18 -DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK3 = 19 -DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK4 = 20 -DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK5 = 21 -DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK6 = 22 -DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK7 = 23 -DCOH_TEST_CLOCK_MUX_SELECT_PHYASYMCLK = 24 -DCOH_TEST_CLOCK_MUX_SELECT_PHYBSYMCLK = 25 -DCOH_TEST_CLOCK_MUX_SELECT_PHYCSYMCLK = 26 -DCOH_TEST_CLOCK_MUX_SELECT_PHYDSYMCLK = 27 -DCOH_TEST_CLOCK_MUX_SELECT_PHYESYMCLK = 28 -DCOH_TEST_CLOCK_MUX_SELECT_PHYFSYMCLK = 29 -DCOH_TEST_CLOCK_MUX_SELECT_PHYGSYMCLK = 30 -DCOH_TEST_CLOCK_MUX_SELECT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DCOH_TOP_CLOCK_GATING_DISABLE_ENUM' -DCOH_TOP_CLOCK_GATING_DISABLE_ENUM__enumvalues = { - 0: 'DCOH_TOP_CLOCK_GATING_DISABLE_ENUM_ENABLED', - 1: 'DCOH_TOP_CLOCK_GATING_DISABLE_ENUM_DISABLED', -} -DCOH_TOP_CLOCK_GATING_DISABLE_ENUM_ENABLED = 0 -DCOH_TOP_CLOCK_GATING_DISABLE_ENUM_DISABLED = 1 -DCOH_TOP_CLOCK_GATING_DISABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DCOH_TOP_ENABLE_ENUM' -DCOH_TOP_ENABLE_ENUM__enumvalues = { - 0: 'DCOH_TOP_ENABLE_ENUM_DISABLED', - 1: 'DCOH_TOP_ENABLE_ENUM_ENABLED', -} -DCOH_TOP_ENABLE_ENUM_DISABLED = 0 -DCOH_TOP_ENABLE_ENUM_ENABLED = 1 -DCOH_TOP_ENABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'PHY_MUX_ENABLE_ENUM' -PHY_MUX_ENABLE_ENUM__enumvalues = { - 0: 'PHY_MUX_ENABLE_ENUM_DISABLED', - 1: 'PHY_MUX_ENABLE_ENUM_ENABLED', -} -PHY_MUX_ENABLE_ENUM_DISABLED = 0 -PHY_MUX_ENABLE_ENUM_ENABLED = 1 -PHY_MUX_ENABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ARB_CONTROL_ARB_PRIORITY' -DP_AUX_ARB_CONTROL_ARB_PRIORITY__enumvalues = { - 0: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__GTC_LS_SW', - 1: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__LS_GTC_SW', - 2: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_LS_GTC', - 3: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_GTC_LS', -} -DP_AUX_ARB_CONTROL_ARB_PRIORITY__GTC_LS_SW = 0 -DP_AUX_ARB_CONTROL_ARB_PRIORITY__LS_GTC_SW = 1 -DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_LS_GTC = 2 -DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_GTC_LS = 3 -DP_AUX_ARB_CONTROL_ARB_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG' -DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG__enumvalues = { - 0: 'DP_AUX_ARB_CONTROL__DONE_NOT_USING_AUX_REG', - 1: 'DP_AUX_ARB_CONTROL__DONE_USING_AUX_REG', -} -DP_AUX_ARB_CONTROL__DONE_NOT_USING_AUX_REG = 0 -DP_AUX_ARB_CONTROL__DONE_USING_AUX_REG = 1 -DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ' -DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ__enumvalues = { - 0: 'DP_AUX_ARB_CONTROL__NOT_USE_AUX_REG_REQ', - 1: 'DP_AUX_ARB_CONTROL__USE_AUX_REG_REQ', -} -DP_AUX_ARB_CONTROL__NOT_USE_AUX_REG_REQ = 0 -DP_AUX_ARB_CONTROL__USE_AUX_REG_REQ = 1 -DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ARB_STATUS' -DP_AUX_ARB_STATUS__enumvalues = { - 0: 'DP_AUX_IDLE', - 1: 'DP_AUX_IN_USE_LS', - 2: 'DP_AUX_IN_USE_GTC', - 3: 'DP_AUX_IN_USE_SW', - 4: 'DP_AUX_IN_USE_PHYWAKE', -} -DP_AUX_IDLE = 0 -DP_AUX_IN_USE_LS = 1 -DP_AUX_IN_USE_GTC = 2 -DP_AUX_IN_USE_SW = 3 -DP_AUX_IN_USE_PHYWAKE = 4 -DP_AUX_ARB_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_CONTROL_HPD_SEL' -DP_AUX_CONTROL_HPD_SEL__enumvalues = { - 0: 'DP_AUX_CONTROL_HPD1_SELECTED', - 1: 'DP_AUX_CONTROL_HPD2_SELECTED', - 2: 'DP_AUX_CONTROL_HPD3_SELECTED', - 3: 'DP_AUX_CONTROL_HPD4_SELECTED', - 4: 'DP_AUX_CONTROL_NO_HPD_SELECTED', -} -DP_AUX_CONTROL_HPD1_SELECTED = 0 -DP_AUX_CONTROL_HPD2_SELECTED = 1 -DP_AUX_CONTROL_HPD3_SELECTED = 2 -DP_AUX_CONTROL_HPD4_SELECTED = 3 -DP_AUX_CONTROL_NO_HPD_SELECTED = 4 -DP_AUX_CONTROL_HPD_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_CONTROL_TEST_MODE' -DP_AUX_CONTROL_TEST_MODE__enumvalues = { - 0: 'DP_AUX_CONTROL_TEST_MODE_DISABLE', - 1: 'DP_AUX_CONTROL_TEST_MODE_ENABLE', -} -DP_AUX_CONTROL_TEST_MODE_DISABLE = 0 -DP_AUX_CONTROL_TEST_MODE_ENABLE = 1 -DP_AUX_CONTROL_TEST_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DEFINITE_ERR_REACHED_ACK' -DP_AUX_DEFINITE_ERR_REACHED_ACK__enumvalues = { - 0: 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_NOT_ACK', - 1: 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_ACK', -} -ALPHA_DP_AUX_DEFINITE_ERR_REACHED_NOT_ACK = 0 -ALPHA_DP_AUX_DEFINITE_ERR_REACHED_ACK = 1 -DP_AUX_DEFINITE_ERR_REACHED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT' -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 1: 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_PHASE_DETECT', -} -DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_PHASE_DETECT = 0 -DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_PHASE_DETECT = 1 -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START' -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_START', - 1: 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_START', -} -DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_START = 0 -DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_START = 1 -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP' -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_STOP', - 1: 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_STOP', -} -DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_STOP = 0 -DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_STOP = 1 -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN' -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__6_EDGES', - 1: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__10_EDGES', - 2: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__18_EDGES', - 3: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__RESERVED', -} -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__6_EDGES = 0 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__10_EDGES = 1 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__18_EDGES = 2 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__RESERVED = 3 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN' -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__2_HALF_SYMBOLS', - 1: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__4_HALF_SYMBOLS', - 2: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__6_HALF_SYMBOLS', - 3: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__8_HALF_SYMBOLS', -} -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__2_HALF_SYMBOLS = 0 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__4_HALF_SYMBOLS = 1 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__6_HALF_SYMBOLS = 2 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__8_HALF_SYMBOLS = 3 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW' -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO2_PERIOD', - 1: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO4_PERIOD', - 2: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO8_PERIOD', - 3: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO16_PERIOD', - 4: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO32_PERIOD', - 5: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO64_PERIOD', - 6: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO128_PERIOD', - 7: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO256_PERIOD', -} -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO2_PERIOD = 0 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO4_PERIOD = 1 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO8_PERIOD = 2 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO16_PERIOD = 3 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO32_PERIOD = 4 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO64_PERIOD = 5 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO128_PERIOD = 6 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO256_PERIOD = 7 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW' -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO2_PERIOD', - 1: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO4_PERIOD', - 2: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO8_PERIOD', - 3: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO16_PERIOD', - 4: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO32_PERIOD', - 5: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO64_PERIOD', - 6: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO128_PERIOD', - 7: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO256_PERIOD', -} -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO2_PERIOD = 0 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO4_PERIOD = 1 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO8_PERIOD = 2 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO16_PERIOD = 3 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO32_PERIOD = 4 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO64_PERIOD = 5 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO128_PERIOD = 6 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO256_PERIOD = 7 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD' -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__enumvalues = { - 0: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__1to2', - 1: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__3to4', - 2: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__7to8', - 3: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__15to16', - 4: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__31to32', - 5: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__63to64', - 6: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__127to128', - 7: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__255to256', -} -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__1to2 = 0 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__3to4 = 1 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__7to8 = 2 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__15to16 = 3 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__31to32 = 4 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__63to64 = 5 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__127to128 = 6 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__255to256 = 7 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY' -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__enumvalues = { - 0: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__0', - 1: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__16US', - 2: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__32US', - 3: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__64US', - 4: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__128US', - 5: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__256US', -} -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__0 = 0 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__16US = 1 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__32US = 2 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__64US = 3 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__128US = 4 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__256US = 5 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE' -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__enumvalues = { - 0: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__1MHZ', - 1: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__2MHZ', - 2: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__4MHZ', - 3: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__8MHZ', -} -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__1MHZ = 0 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__2MHZ = 1 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__4MHZ = 2 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__8MHZ = 3 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL' -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__enumvalues = { - 0: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__DIVIDED_SYM_CLK', - 1: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__FROM_DCCG_MICROSECOND_REF', -} -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__DIVIDED_SYM_CLK = 0 -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__FROM_DCCG_MICROSECOND_REF = 1 -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ERR_OCCURRED_ACK' -DP_AUX_ERR_OCCURRED_ACK__enumvalues = { - 0: 'DP_AUX_ERR_OCCURRED__NOT_ACK', - 1: 'DP_AUX_ERR_OCCURRED__ACK', -} -DP_AUX_ERR_OCCURRED__NOT_ACK = 0 -DP_AUX_ERR_OCCURRED__ACK = 1 -DP_AUX_ERR_OCCURRED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ' -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_ALLOW_REQ_FROM_OTHER_AUX', - 1: 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ_FROM_OTHER_AUX', -} -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_ALLOW_REQ_FROM_OTHER_AUX = 0 -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ_FROM_OTHER_AUX = 1 -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW' -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__300US', - 1: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__400US', - 2: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__500US', - 3: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__600US', -} -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__300US = 0 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__400US = 1 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__500US = 2 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__600US = 3 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT' -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__4_ATTAMPS', - 1: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__8_ATTAMPS', - 2: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__16_ATTAMPS', - 3: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__RESERVED', -} -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__4_ATTAMPS = 0 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__8_ATTAMPS = 1 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__16_ATTAMPS = 2 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__RESERVED = 3 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN' -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__0', - 1: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__64', - 2: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__128', - 3: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__256', -} -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__0 = 0 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__64 = 1 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__128 = 2 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__256 = 3 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_INT_ACK' -DP_AUX_INT_ACK__enumvalues = { - 0: 'DP_AUX_INT__NOT_ACK', - 1: 'DP_AUX_INT__ACK', -} -DP_AUX_INT__NOT_ACK = 0 -DP_AUX_INT__ACK = 1 -DP_AUX_INT_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_LS_UPDATE_ACK' -DP_AUX_LS_UPDATE_ACK__enumvalues = { - 0: 'DP_AUX_INT_LS_UPDATE_NOT_ACK', - 1: 'DP_AUX_INT_LS_UPDATE_ACK', -} -DP_AUX_INT_LS_UPDATE_NOT_ACK = 0 -DP_AUX_INT_LS_UPDATE_ACK = 1 -DP_AUX_LS_UPDATE_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_PHY_WAKE_PRIORITY' -DP_AUX_PHY_WAKE_PRIORITY__enumvalues = { - 0: 'DP_AUX_PHY_WAKE_HIGH_PRIORITY', - 1: 'DP_AUX_PHY_WAKE_LOW_PRIORITY', -} -DP_AUX_PHY_WAKE_HIGH_PRIORITY = 0 -DP_AUX_PHY_WAKE_LOW_PRIORITY = 1 -DP_AUX_PHY_WAKE_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_POTENTIAL_ERR_REACHED_ACK' -DP_AUX_POTENTIAL_ERR_REACHED_ACK__enumvalues = { - 0: 'DP_AUX_POTENTIAL_ERR_REACHED__NOT_ACK', - 1: 'DP_AUX_POTENTIAL_ERR_REACHED__ACK', -} -DP_AUX_POTENTIAL_ERR_REACHED__NOT_ACK = 0 -DP_AUX_POTENTIAL_ERR_REACHED__ACK = 1 -DP_AUX_POTENTIAL_ERR_REACHED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_RESET' -DP_AUX_RESET__enumvalues = { - 0: 'DP_AUX_RESET_DEASSERTED', - 1: 'DP_AUX_RESET_ASSERTED', -} -DP_AUX_RESET_DEASSERTED = 0 -DP_AUX_RESET_ASSERTED = 1 -DP_AUX_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_RESET_DONE' -DP_AUX_RESET_DONE__enumvalues = { - 0: 'DP_AUX_RESET_SEQUENCE_NOT_DONE', - 1: 'DP_AUX_RESET_SEQUENCE_DONE', -} -DP_AUX_RESET_SEQUENCE_NOT_DONE = 0 -DP_AUX_RESET_SEQUENCE_DONE = 1 -DP_AUX_RESET_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_RX_TIMEOUT_LEN_MUL' -DP_AUX_RX_TIMEOUT_LEN_MUL__enumvalues = { - 0: 'DP_AUX_RX_TIMEOUT_LEN_NO_MUL', - 1: 'DP_AUX_RX_TIMEOUT_LEN_MUL_2', - 2: 'DP_AUX_RX_TIMEOUT_LEN_MUL_4', - 3: 'DP_AUX_RX_TIMEOUT_LEN_MUL_8', -} -DP_AUX_RX_TIMEOUT_LEN_NO_MUL = 0 -DP_AUX_RX_TIMEOUT_LEN_MUL_2 = 1 -DP_AUX_RX_TIMEOUT_LEN_MUL_4 = 2 -DP_AUX_RX_TIMEOUT_LEN_MUL_8 = 3 -DP_AUX_RX_TIMEOUT_LEN_MUL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_SW_CONTROL_LS_READ_TRIG' -DP_AUX_SW_CONTROL_LS_READ_TRIG__enumvalues = { - 0: 'DP_AUX_SW_CONTROL_LS_READ__NOT_TRIG', - 1: 'DP_AUX_SW_CONTROL_LS_READ__TRIG', -} -DP_AUX_SW_CONTROL_LS_READ__NOT_TRIG = 0 -DP_AUX_SW_CONTROL_LS_READ__TRIG = 1 -DP_AUX_SW_CONTROL_LS_READ_TRIG = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_SW_CONTROL_SW_GO' -DP_AUX_SW_CONTROL_SW_GO__enumvalues = { - 0: 'DP_AUX_SW_CONTROL_SW__NOT_GO', - 1: 'DP_AUX_SW_CONTROL_SW__GO', -} -DP_AUX_SW_CONTROL_SW__NOT_GO = 0 -DP_AUX_SW_CONTROL_SW__GO = 1 -DP_AUX_SW_CONTROL_SW_GO = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_TX_PRECHARGE_LEN_MUL' -DP_AUX_TX_PRECHARGE_LEN_MUL__enumvalues = { - 0: 'DP_AUX_TX_PRECHARGE_LEN_NO_MUL', - 1: 'DP_AUX_TX_PRECHARGE_LEN_MUL_2', - 2: 'DP_AUX_TX_PRECHARGE_LEN_MUL_4', - 3: 'DP_AUX_TX_PRECHARGE_LEN_MUL_8', -} -DP_AUX_TX_PRECHARGE_LEN_NO_MUL = 0 -DP_AUX_TX_PRECHARGE_LEN_MUL_2 = 1 -DP_AUX_TX_PRECHARGE_LEN_MUL_4 = 2 -DP_AUX_TX_PRECHARGE_LEN_MUL_8 = 3 -DP_AUX_TX_PRECHARGE_LEN_MUL = ctypes.c_uint32 # enum - -# values for enumeration 'HPD_INT_CONTROL_ACK' -HPD_INT_CONTROL_ACK__enumvalues = { - 0: 'HPD_INT_CONTROL_ACK_0', - 1: 'HPD_INT_CONTROL_ACK_1', -} -HPD_INT_CONTROL_ACK_0 = 0 -HPD_INT_CONTROL_ACK_1 = 1 -HPD_INT_CONTROL_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'HPD_INT_CONTROL_POLARITY' -HPD_INT_CONTROL_POLARITY__enumvalues = { - 0: 'HPD_INT_CONTROL_GEN_INT_ON_DISCON', - 1: 'HPD_INT_CONTROL_GEN_INT_ON_CON', -} -HPD_INT_CONTROL_GEN_INT_ON_DISCON = 0 -HPD_INT_CONTROL_GEN_INT_ON_CON = 1 -HPD_INT_CONTROL_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'HPD_INT_CONTROL_RX_INT_ACK' -HPD_INT_CONTROL_RX_INT_ACK__enumvalues = { - 0: 'HPD_INT_CONTROL_RX_INT_ACK_0', - 1: 'HPD_INT_CONTROL_RX_INT_ACK_1', -} -HPD_INT_CONTROL_RX_INT_ACK_0 = 0 -HPD_INT_CONTROL_RX_INT_ACK_1 = 1 -HPD_INT_CONTROL_RX_INT_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'HPO_TOP_CLOCK_GATING_DISABLE' -HPO_TOP_CLOCK_GATING_DISABLE__enumvalues = { - 0: 'HPO_TOP_CLOCK_GATING_EN', - 1: 'HPO_TOP_CLOCK_GATING_DIS', -} -HPO_TOP_CLOCK_GATING_EN = 0 -HPO_TOP_CLOCK_GATING_DIS = 1 -HPO_TOP_CLOCK_GATING_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'HPO_TOP_TEST_CLK_SEL' -HPO_TOP_TEST_CLK_SEL__enumvalues = { - 0: 'HPO_TOP_PERMANENT_DISPCLK', - 1: 'HPO_TOP_REGISTER_GATED_DISPCLK', - 2: 'HPO_TOP_PERMANENT_SOCCLK', - 3: 'HPO_TOP_TEST_CLOCK_RESERVED', - 4: 'HPO_TOP_PERMANENT_HDMISTREAMCLK0', - 5: 'HPO_TOP_FEATURE_GATED_HDMISTREAMCLK0', - 6: 'HPO_TOP_REGISTER_GATED_HDMISTREAMCLK0', - 7: 'HPO_TOP_FEATURE_GATED_DISPCLK_IN_HDMISTREAMENC0', - 8: 'HPO_TOP_FEATURE_GATED_SOCCLK_IN_HDMISTREAMENC0', - 9: 'HPO_TOP_PERMANENT_HDMICHARCLK0', - 10: 'HPO_TOP_FEATURE_GATED_HDMICHARCLK0', - 11: 'HPO_TOP_REGISTER_GATED_HDMICHARCLK0', -} -HPO_TOP_PERMANENT_DISPCLK = 0 -HPO_TOP_REGISTER_GATED_DISPCLK = 1 -HPO_TOP_PERMANENT_SOCCLK = 2 -HPO_TOP_TEST_CLOCK_RESERVED = 3 -HPO_TOP_PERMANENT_HDMISTREAMCLK0 = 4 -HPO_TOP_FEATURE_GATED_HDMISTREAMCLK0 = 5 -HPO_TOP_REGISTER_GATED_HDMISTREAMCLK0 = 6 -HPO_TOP_FEATURE_GATED_DISPCLK_IN_HDMISTREAMENC0 = 7 -HPO_TOP_FEATURE_GATED_SOCCLK_IN_HDMISTREAMENC0 = 8 -HPO_TOP_PERMANENT_HDMICHARCLK0 = 9 -HPO_TOP_FEATURE_GATED_HDMICHARCLK0 = 10 -HPO_TOP_REGISTER_GATED_HDMICHARCLK0 = 11 -HPO_TOP_TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STREAM_MAPPER_DP_STREAM_LINK_TARGET' -DP_STREAM_MAPPER_DP_STREAM_LINK_TARGET__enumvalues = { - 0: 'DP_STREAM_MAPPER_LINK0', - 1: 'DP_STREAM_MAPPER_LINK1', - 2: 'DP_STREAM_MAPPER_LINK2', - 3: 'DP_STREAM_MAPPER_LINK3', - 4: 'DP_STREAM_MAPPER_RESERVED', -} -DP_STREAM_MAPPER_LINK0 = 0 -DP_STREAM_MAPPER_LINK1 = 1 -DP_STREAM_MAPPER_LINK2 = 2 -DP_STREAM_MAPPER_LINK3 = 3 -DP_STREAM_MAPPER_RESERVED = 4 -DP_STREAM_MAPPER_DP_STREAM_LINK_TARGET = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR' -DP_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR__enumvalues = { - 0: 'DP_STREAM_ENC_NO_ERROR_OCCURRED', - 1: 'DP_STREAM_ENC_UNDERFLOW_OCCURRED', - 2: 'DP_STREAM_ENC_OVERFLOW_OCCURRED', -} -DP_STREAM_ENC_NO_ERROR_OCCURRED = 0 -DP_STREAM_ENC_UNDERFLOW_OCCURRED = 1 -DP_STREAM_ENC_OVERFLOW_OCCURRED = 2 -DP_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STREAM_ENC_OVERWRITE_LEVEL_SELECT' -DP_STREAM_ENC_OVERWRITE_LEVEL_SELECT__enumvalues = { - 0: 'DP_STREAM_ENC_HARDWARE', - 1: 'DP_STREAM_ENC_PROGRAMMABLE', -} -DP_STREAM_ENC_HARDWARE = 0 -DP_STREAM_ENC_PROGRAMMABLE = 1 -DP_STREAM_ENC_OVERWRITE_LEVEL_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STREAM_ENC_READ_CLOCK_CONTROL' -DP_STREAM_ENC_READ_CLOCK_CONTROL__enumvalues = { - 0: 'DP_STREAM_ENC_DCCG', - 1: 'DP_STREAM_ENC_DISPLAY_PIPE', -} -DP_STREAM_ENC_DCCG = 0 -DP_STREAM_ENC_DISPLAY_PIPE = 1 -DP_STREAM_ENC_READ_CLOCK_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STREAM_ENC_RESET_CONTROL' -DP_STREAM_ENC_RESET_CONTROL__enumvalues = { - 0: 'DP_STREAM_ENC_NOT_RESET', - 1: 'DP_STREAM_ENC_RESET', -} -DP_STREAM_ENC_NOT_RESET = 0 -DP_STREAM_ENC_RESET = 1 -DP_STREAM_ENC_RESET_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STREAM_ENC_STREAM_ACTIVE' -DP_STREAM_ENC_STREAM_ACTIVE__enumvalues = { - 0: 'DP_STREAM_ENC_VIDEO_STREAM_NOT_ACTIVE', - 1: 'DP_STREAM_ENC_VIDEO_STREAM_ACTIVE', -} -DP_STREAM_ENC_VIDEO_STREAM_NOT_ACTIVE = 0 -DP_STREAM_ENC_VIDEO_STREAM_ACTIVE = 1 -DP_STREAM_ENC_STREAM_ACTIVE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_AUDIO_MUTE' -ENUM_DP_SYM32_ENC_AUDIO_MUTE__enumvalues = { - 0: 'DP_SYM32_ENC_SDP_AUDIO_MUTE_NOT_FORCED', - 1: 'DP_SYM32_ENC_SDP_AUDIO_MUTE_FORCED', -} -DP_SYM32_ENC_SDP_AUDIO_MUTE_NOT_FORCED = 0 -DP_SYM32_ENC_SDP_AUDIO_MUTE_FORCED = 1 -ENUM_DP_SYM32_ENC_AUDIO_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_CONTINUOUS_MODE' -ENUM_DP_SYM32_ENC_CONTINUOUS_MODE__enumvalues = { - 0: 'DP_SYM32_ENC_ONE_SHOT_MODE', - 1: 'DP_SYM32_ENC_CONTINUOUS_MODE', -} -DP_SYM32_ENC_ONE_SHOT_MODE = 0 -DP_SYM32_ENC_CONTINUOUS_MODE = 1 -ENUM_DP_SYM32_ENC_CONTINUOUS_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_CRC_VALID' -ENUM_DP_SYM32_ENC_CRC_VALID__enumvalues = { - 0: 'DP_SYM32_ENC_CRC_NOT_VALID', - 1: 'DP_SYM32_ENC_CRC_VALID', -} -DP_SYM32_ENC_CRC_NOT_VALID = 0 -DP_SYM32_ENC_CRC_VALID = 1 -ENUM_DP_SYM32_ENC_CRC_VALID = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_DP_COMPONENT_DEPTH' -ENUM_DP_SYM32_ENC_DP_COMPONENT_DEPTH__enumvalues = { - 0: 'DP_SYM32_ENC_COMPONENT_DEPTH_6BPC', - 1: 'DP_SYM32_ENC_COMPONENT_DEPTH_8BPC', - 2: 'DP_SYM32_ENC_COMPONENT_DEPTH_10BPC', - 3: 'DP_SYM32_ENC_COMPONENT_DEPTH_12BPC', -} -DP_SYM32_ENC_COMPONENT_DEPTH_6BPC = 0 -DP_SYM32_ENC_COMPONENT_DEPTH_8BPC = 1 -DP_SYM32_ENC_COMPONENT_DEPTH_10BPC = 2 -DP_SYM32_ENC_COMPONENT_DEPTH_12BPC = 3 -ENUM_DP_SYM32_ENC_DP_COMPONENT_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_ENABLE' -ENUM_DP_SYM32_ENC_ENABLE__enumvalues = { - 0: 'DP_SYM32_ENC_DISABLE', - 1: 'DP_SYM32_ENC_ENABLE', -} -DP_SYM32_ENC_DISABLE = 0 -DP_SYM32_ENC_ENABLE = 1 -ENUM_DP_SYM32_ENC_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_GSP_DEADLINE_MISSED' -ENUM_DP_SYM32_ENC_GSP_DEADLINE_MISSED__enumvalues = { - 0: 'DP_SYM32_ENC_GSP_DEADLINE_NOT_MISSED', - 1: 'DP_SYM32_ENC_GSP_DEADLINE_MISSED', -} -DP_SYM32_ENC_GSP_DEADLINE_NOT_MISSED = 0 -DP_SYM32_ENC_GSP_DEADLINE_MISSED = 1 -ENUM_DP_SYM32_ENC_GSP_DEADLINE_MISSED = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_GSP_ONE_SHOT_TRIGGER_POSITION' -ENUM_DP_SYM32_ENC_GSP_ONE_SHOT_TRIGGER_POSITION__enumvalues = { - 0: 'DP_SYM32_ENC_GSP_SEND_AT_LINE_NUMBER', - 1: 'DP_SYM32_ENC_GSP_SEND_AT_EARLIEST_TIME', -} -DP_SYM32_ENC_GSP_SEND_AT_LINE_NUMBER = 0 -DP_SYM32_ENC_GSP_SEND_AT_EARLIEST_TIME = 1 -ENUM_DP_SYM32_ENC_GSP_ONE_SHOT_TRIGGER_POSITION = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_GSP_PAYLOAD_SIZE' -ENUM_DP_SYM32_ENC_GSP_PAYLOAD_SIZE__enumvalues = { - 0: 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_32', - 1: 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_RESERVED0', - 2: 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_RESERVED1', - 3: 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_128', -} -DP_SYM32_ENC_GSP_PAYLOAD_SIZE_32 = 0 -DP_SYM32_ENC_GSP_PAYLOAD_SIZE_RESERVED0 = 1 -DP_SYM32_ENC_GSP_PAYLOAD_SIZE_RESERVED1 = 2 -DP_SYM32_ENC_GSP_PAYLOAD_SIZE_128 = 3 -ENUM_DP_SYM32_ENC_GSP_PAYLOAD_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_GSP_TRIGGER_PENDING' -ENUM_DP_SYM32_ENC_GSP_TRIGGER_PENDING__enumvalues = { - 0: 'DP_SYM32_ENC_GSP_TRIGGER_NOT_PENDING', - 1: 'DP_SYM32_ENC_GSP_TRIGGER_PENDING', -} -DP_SYM32_ENC_GSP_TRIGGER_NOT_PENDING = 0 -DP_SYM32_ENC_GSP_TRIGGER_PENDING = 1 -ENUM_DP_SYM32_ENC_GSP_TRIGGER_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_MEM_PWR_FORCE_ENUM' -ENUM_DP_SYM32_ENC_MEM_PWR_FORCE_ENUM__enumvalues = { - 0: 'DP_SYM32_ENC_MEM_PWR_NO_FORCE_REQUEST', - 1: 'DP_SYM32_ENC_MEM_PWR_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'DP_SYM32_ENC_MEM_PWR_FORCE_DEEP_SLEEP_REQUEST', - 3: 'DP_SYM32_ENC_MEM_PWR_FORCE_SHUT_DOWN_REQUEST', -} -DP_SYM32_ENC_MEM_PWR_NO_FORCE_REQUEST = 0 -DP_SYM32_ENC_MEM_PWR_FORCE_LIGHT_SLEEP_REQUEST = 1 -DP_SYM32_ENC_MEM_PWR_FORCE_DEEP_SLEEP_REQUEST = 2 -DP_SYM32_ENC_MEM_PWR_FORCE_SHUT_DOWN_REQUEST = 3 -ENUM_DP_SYM32_ENC_MEM_PWR_FORCE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_OVERFLOW_STATUS' -ENUM_DP_SYM32_ENC_OVERFLOW_STATUS__enumvalues = { - 0: 'DP_SYM32_ENC_NO_OVERFLOW_OCCURRED', - 1: 'DP_SYM32_ENC_OVERFLOW_OCCURRED', -} -DP_SYM32_ENC_NO_OVERFLOW_OCCURRED = 0 -DP_SYM32_ENC_OVERFLOW_OCCURRED = 1 -ENUM_DP_SYM32_ENC_OVERFLOW_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_PENDING' -ENUM_DP_SYM32_ENC_PENDING__enumvalues = { - 0: 'DP_SYM32_ENC_NOT_PENDING', - 1: 'DP_SYM32_ENC_PENDING', -} -DP_SYM32_ENC_NOT_PENDING = 0 -DP_SYM32_ENC_PENDING = 1 -ENUM_DP_SYM32_ENC_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_PIXEL_ENCODING' -ENUM_DP_SYM32_ENC_PIXEL_ENCODING__enumvalues = { - 0: 'DP_SYM32_ENC_PIXEL_ENCODING_RGB_YCBCR444', - 1: 'DP_SYM32_ENC_PIXEL_ENCODING_YCBCR422', - 2: 'DP_SYM32_ENC_PIXEL_ENCODING_YCBCR420', - 3: 'DP_SYM32_ENC_PIXEL_ENCODING_Y_ONLY', -} -DP_SYM32_ENC_PIXEL_ENCODING_RGB_YCBCR444 = 0 -DP_SYM32_ENC_PIXEL_ENCODING_YCBCR422 = 1 -DP_SYM32_ENC_PIXEL_ENCODING_YCBCR420 = 2 -DP_SYM32_ENC_PIXEL_ENCODING_Y_ONLY = 3 -ENUM_DP_SYM32_ENC_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_PIXEL_ENCODING_TYPE' -ENUM_DP_SYM32_ENC_PIXEL_ENCODING_TYPE__enumvalues = { - 0: 'DP_SYM32_ENC_UNCOMPRESSED_FORMAT', - 1: 'DP_SYM32_ENC_COMPRESSED_FORMAT', -} -DP_SYM32_ENC_UNCOMPRESSED_FORMAT = 0 -DP_SYM32_ENC_COMPRESSED_FORMAT = 1 -ENUM_DP_SYM32_ENC_PIXEL_ENCODING_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_POWER_STATE_ENUM' -ENUM_DP_SYM32_ENC_POWER_STATE_ENUM__enumvalues = { - 0: 'DP_SYM32_ENC_POWER_STATE_ENUM_ON', - 1: 'DP_SYM32_ENC_POWER_STATE_ENUM_LS', - 2: 'DP_SYM32_ENC_POWER_STATE_ENUM_DS', - 3: 'DP_SYM32_ENC_POWER_STATE_ENUM_SD', -} -DP_SYM32_ENC_POWER_STATE_ENUM_ON = 0 -DP_SYM32_ENC_POWER_STATE_ENUM_LS = 1 -DP_SYM32_ENC_POWER_STATE_ENUM_DS = 2 -DP_SYM32_ENC_POWER_STATE_ENUM_SD = 3 -ENUM_DP_SYM32_ENC_POWER_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_RESET' -ENUM_DP_SYM32_ENC_RESET__enumvalues = { - 0: 'DP_SYM32_ENC_NOT_RESET', - 1: 'DP_SYM32_ENC_RESET', -} -DP_SYM32_ENC_NOT_RESET = 0 -DP_SYM32_ENC_RESET = 1 -ENUM_DP_SYM32_ENC_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_SDP_PRIORITY' -ENUM_DP_SYM32_ENC_SDP_PRIORITY__enumvalues = { - 0: 'DP_SYM32_ENC_SDP_LOW_PRIORITY', - 1: 'DP_SYM32_ENC_SDP_HIGH_PRIORITY', -} -DP_SYM32_ENC_SDP_LOW_PRIORITY = 0 -DP_SYM32_ENC_SDP_HIGH_PRIORITY = 1 -ENUM_DP_SYM32_ENC_SDP_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_SOF_REFERENCE' -ENUM_DP_SYM32_ENC_SOF_REFERENCE__enumvalues = { - 0: 'DP_SYM32_ENC_DP_SOF', - 1: 'DP_SYM32_ENC_OTG_SOF', -} -DP_SYM32_ENC_DP_SOF = 0 -DP_SYM32_ENC_OTG_SOF = 1 -ENUM_DP_SYM32_ENC_SOF_REFERENCE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_VID_STREAM_DEFER' -ENUM_DP_SYM32_ENC_VID_STREAM_DEFER__enumvalues = { - 0: 'DP_SYM32_ENC_VID_STREAM_NO_DEFER', - 1: 'DP_SYM32_ENC_VID_STREAM_DEFER_TO_HBLANK', - 2: 'DP_SYM32_ENC_VID_STREAM_DEFER_TO_VBLANK', -} -DP_SYM32_ENC_VID_STREAM_NO_DEFER = 0 -DP_SYM32_ENC_VID_STREAM_DEFER_TO_HBLANK = 1 -DP_SYM32_ENC_VID_STREAM_DEFER_TO_VBLANK = 2 -ENUM_DP_SYM32_ENC_VID_STREAM_DEFER = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_CRC_END_EVENT' -ENUM_DP_DPHY_SYM32_CRC_END_EVENT__enumvalues = { - 0: 'DP_DPHY_SYM32_CRC_END_LLCP', - 1: 'DP_DPHY_SYM32_CRC_END_PS_ONLY', - 2: 'DP_DPHY_SYM32_CRC_END_PS_LT_SR', - 3: 'DP_DPHY_SYM32_CRC_END_PS_ANY', -} -DP_DPHY_SYM32_CRC_END_LLCP = 0 -DP_DPHY_SYM32_CRC_END_PS_ONLY = 1 -DP_DPHY_SYM32_CRC_END_PS_LT_SR = 2 -DP_DPHY_SYM32_CRC_END_PS_ANY = 3 -ENUM_DP_DPHY_SYM32_CRC_END_EVENT = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_CRC_START_EVENT' -ENUM_DP_DPHY_SYM32_CRC_START_EVENT__enumvalues = { - 0: 'DP_DPHY_SYM32_CRC_START_LLCP', - 1: 'DP_DPHY_SYM32_CRC_START_PS_ONLY', - 2: 'DP_DPHY_SYM32_CRC_START_PS_LT_SR', - 3: 'DP_DPHY_SYM32_CRC_START_PS_POST_LT_SR', - 4: 'DP_DPHY_SYM32_CRC_START_TP_START', -} -DP_DPHY_SYM32_CRC_START_LLCP = 0 -DP_DPHY_SYM32_CRC_START_PS_ONLY = 1 -DP_DPHY_SYM32_CRC_START_PS_LT_SR = 2 -DP_DPHY_SYM32_CRC_START_PS_POST_LT_SR = 3 -DP_DPHY_SYM32_CRC_START_TP_START = 4 -ENUM_DP_DPHY_SYM32_CRC_START_EVENT = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_CRC_TAP_SOURCE' -ENUM_DP_DPHY_SYM32_CRC_TAP_SOURCE__enumvalues = { - 0: 'DP_DPHY_SYM32_CRC_TAP_SOURCE_SCHEDULER', - 1: 'DP_DPHY_SYM32_CRC_TAP_SOURCE_SYMBOL_HANDLER', - 2: 'DP_DPHY_SYM32_CRC_TAP_SOURCE_TP_GEN_MUX', -} -DP_DPHY_SYM32_CRC_TAP_SOURCE_SCHEDULER = 0 -DP_DPHY_SYM32_CRC_TAP_SOURCE_SYMBOL_HANDLER = 1 -DP_DPHY_SYM32_CRC_TAP_SOURCE_TP_GEN_MUX = 2 -ENUM_DP_DPHY_SYM32_CRC_TAP_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS' -ENUM_DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS__enumvalues = { - 0: 'DP_DPHY_SYM32_CRC_USE_END_EVENT', - 1: 'DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS', -} -DP_DPHY_SYM32_CRC_USE_END_EVENT = 0 -DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS = 1 -ENUM_DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_ENABLE' -ENUM_DP_DPHY_SYM32_ENABLE__enumvalues = { - 0: 'DP_DPHY_SYM32_DISABLE', - 1: 'DP_DPHY_SYM32_ENABLE', -} -DP_DPHY_SYM32_DISABLE = 0 -DP_DPHY_SYM32_ENABLE = 1 -ENUM_DP_DPHY_SYM32_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_MODE' -ENUM_DP_DPHY_SYM32_MODE__enumvalues = { - 0: 'DP_DPHY_SYM32_LT_TPS1', - 1: 'DP_DPHY_SYM32_LT_TPS2', - 2: 'DP_DPHY_SYM32_ACTIVE', - 3: 'DP_DPHY_SYM32_TEST', -} -DP_DPHY_SYM32_LT_TPS1 = 0 -DP_DPHY_SYM32_LT_TPS2 = 1 -DP_DPHY_SYM32_ACTIVE = 2 -DP_DPHY_SYM32_TEST = 3 -ENUM_DP_DPHY_SYM32_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_NUM_LANES' -ENUM_DP_DPHY_SYM32_NUM_LANES__enumvalues = { - 0: 'DP_DPHY_SYM32_1LANE', - 1: 'DP_DPHY_SYM32_2LANE', - 2: 'DP_DPHY_SYM32_RESERVED', - 3: 'DP_DPHY_SYM32_4LANE', -} -DP_DPHY_SYM32_1LANE = 0 -DP_DPHY_SYM32_2LANE = 1 -DP_DPHY_SYM32_RESERVED = 2 -DP_DPHY_SYM32_4LANE = 3 -ENUM_DP_DPHY_SYM32_NUM_LANES = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_OUTPUT_MODE' -ENUM_DP_DPHY_SYM32_OUTPUT_MODE__enumvalues = { - 0: 'DP_DPHY_SYM32_OUTPUT_PHY', - 1: 'DP_DPHY_SYM32_OUTPUT_DPIA', -} -DP_DPHY_SYM32_OUTPUT_PHY = 0 -DP_DPHY_SYM32_OUTPUT_DPIA = 1 -ENUM_DP_DPHY_SYM32_OUTPUT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_RATE_UPDATE_PENDING' -ENUM_DP_DPHY_SYM32_RATE_UPDATE_PENDING__enumvalues = { - 0: 'DP_DPHY_SYM32_NO_RATE_UPDATE_PENDING', - 1: 'DP_DPHY_SYM32_RATE_UPDATE_PENDING', -} -DP_DPHY_SYM32_NO_RATE_UPDATE_PENDING = 0 -DP_DPHY_SYM32_RATE_UPDATE_PENDING = 1 -ENUM_DP_DPHY_SYM32_RATE_UPDATE_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_RESET' -ENUM_DP_DPHY_SYM32_RESET__enumvalues = { - 0: 'DP_DPHY_SYM32_NOT_RESET', - 1: 'DP_DPHY_SYM32_RESET', -} -DP_DPHY_SYM32_NOT_RESET = 0 -DP_DPHY_SYM32_RESET = 1 -ENUM_DP_DPHY_SYM32_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_RESET_STATUS' -ENUM_DP_DPHY_SYM32_RESET_STATUS__enumvalues = { - 0: 'DP_DPHY_SYM32_RESET_STATUS_DEASSERTED', - 1: 'DP_DPHY_SYM32_RESET_STATUS_ASSERTED', -} -DP_DPHY_SYM32_RESET_STATUS_DEASSERTED = 0 -DP_DPHY_SYM32_RESET_STATUS_ASSERTED = 1 -ENUM_DP_DPHY_SYM32_RESET_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_SAT_UPDATE' -ENUM_DP_DPHY_SYM32_SAT_UPDATE__enumvalues = { - 0: 'DP_DPHY_SYM32_SAT_NO_UPDATE', - 1: 'DP_DPHY_SYM32_SAT_TRIGGER_UPDATE', - 2: 'DP_DPHY_SYM32_SAT_NOTRIGGER_UPDATE', -} -DP_DPHY_SYM32_SAT_NO_UPDATE = 0 -DP_DPHY_SYM32_SAT_TRIGGER_UPDATE = 1 -DP_DPHY_SYM32_SAT_NOTRIGGER_UPDATE = 2 -ENUM_DP_DPHY_SYM32_SAT_UPDATE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_SAT_UPDATE_PENDING' -ENUM_DP_DPHY_SYM32_SAT_UPDATE_PENDING__enumvalues = { - 0: 'DP_DPHY_SYM32_SAT_NO_UPDATE_PENDING', - 1: 'DP_DPHY_SYM32_SAT_TRIGGER_UPDATE_PENDING', - 2: 'DP_DPHY_SYM32_SAT_NOTRIGGER_UPDATE_PENDING', -} -DP_DPHY_SYM32_SAT_NO_UPDATE_PENDING = 0 -DP_DPHY_SYM32_SAT_TRIGGER_UPDATE_PENDING = 1 -DP_DPHY_SYM32_SAT_NOTRIGGER_UPDATE_PENDING = 2 -ENUM_DP_DPHY_SYM32_SAT_UPDATE_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_SCHEDULER_STATUS' -ENUM_DP_DPHY_SYM32_SCHEDULER_STATUS__enumvalues = { - 0: 'DP_DPHY_SYM32_SCHEDULER_OFF', - 1: 'DP_DPHY_SYM32_SCHEDULER_ASLEEP', - 2: 'DP_DPHY_SYM32_SCHEDULER_AWAKE', -} -DP_DPHY_SYM32_SCHEDULER_OFF = 0 -DP_DPHY_SYM32_SCHEDULER_ASLEEP = 1 -DP_DPHY_SYM32_SCHEDULER_AWAKE = 2 -ENUM_DP_DPHY_SYM32_SCHEDULER_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_STATUS' -ENUM_DP_DPHY_SYM32_STATUS__enumvalues = { - 0: 'DP_DPHY_SYM32_STATUS_IDLE', - 1: 'DP_DPHY_SYM32_STATUS_ENABLED', -} -DP_DPHY_SYM32_STATUS_IDLE = 0 -DP_DPHY_SYM32_STATUS_ENABLED = 1 -ENUM_DP_DPHY_SYM32_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_STREAM_OVR_ENABLE' -ENUM_DP_DPHY_SYM32_STREAM_OVR_ENABLE__enumvalues = { - 0: 'DP_DPHY_SYM32_STREAM_OVR_NONE', - 1: 'DP_DPHY_SYM32_STREAM_OVR_REPLACE', - 2: 'DP_DPHY_SYM32_STREAM_OVR_ALWAYS', -} -DP_DPHY_SYM32_STREAM_OVR_NONE = 0 -DP_DPHY_SYM32_STREAM_OVR_REPLACE = 1 -DP_DPHY_SYM32_STREAM_OVR_ALWAYS = 2 -ENUM_DP_DPHY_SYM32_STREAM_OVR_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_STREAM_OVR_TYPE' -ENUM_DP_DPHY_SYM32_STREAM_OVR_TYPE__enumvalues = { - 0: 'DP_DPHY_SYM32_STREAM_OVR_TYPE_DATA', - 1: 'DP_DPHY_SYM32_STREAM_OVR_TYPE_CONTROL', -} -DP_DPHY_SYM32_STREAM_OVR_TYPE_DATA = 0 -DP_DPHY_SYM32_STREAM_OVR_TYPE_CONTROL = 1 -ENUM_DP_DPHY_SYM32_STREAM_OVR_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_TP_PRBS_SEL' -ENUM_DP_DPHY_SYM32_TP_PRBS_SEL__enumvalues = { - 0: 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS7', - 1: 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS9', - 2: 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS11', - 3: 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS15', - 4: 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS23', - 5: 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS31', -} -DP_DPHY_SYM32_TP_PRBS_SEL_PRBS7 = 0 -DP_DPHY_SYM32_TP_PRBS_SEL_PRBS9 = 1 -DP_DPHY_SYM32_TP_PRBS_SEL_PRBS11 = 2 -DP_DPHY_SYM32_TP_PRBS_SEL_PRBS15 = 3 -DP_DPHY_SYM32_TP_PRBS_SEL_PRBS23 = 4 -DP_DPHY_SYM32_TP_PRBS_SEL_PRBS31 = 5 -ENUM_DP_DPHY_SYM32_TP_PRBS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_TP_SELECT' -ENUM_DP_DPHY_SYM32_TP_SELECT__enumvalues = { - 0: 'DP_DPHY_SYM32_TP_SELECT_TPS1', - 1: 'DP_DPHY_SYM32_TP_SELECT_TPS2', - 2: 'DP_DPHY_SYM32_TP_SELECT_PRBS', - 3: 'DP_DPHY_SYM32_TP_SELECT_CUSTOM', - 4: 'DP_DPHY_SYM32_TP_SELECT_SQUARE', -} -DP_DPHY_SYM32_TP_SELECT_TPS1 = 0 -DP_DPHY_SYM32_TP_SELECT_TPS2 = 1 -DP_DPHY_SYM32_TP_SELECT_PRBS = 2 -DP_DPHY_SYM32_TP_SELECT_CUSTOM = 3 -DP_DPHY_SYM32_TP_SELECT_SQUARE = 4 -ENUM_DP_DPHY_SYM32_TP_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'APG_AUDIO_CRC_CONTROL_CH_SEL' -APG_AUDIO_CRC_CONTROL_CH_SEL__enumvalues = { - 0: 'APG_AUDIO_CRC_CH0_SIG', - 1: 'APG_AUDIO_CRC_CH1_SIG', - 2: 'APG_AUDIO_CRC_CH2_SIG', - 3: 'APG_AUDIO_CRC_CH3_SIG', - 4: 'APG_AUDIO_CRC_CH4_SIG', - 5: 'APG_AUDIO_CRC_CH5_SIG', - 6: 'APG_AUDIO_CRC_CH6_SIG', - 7: 'APG_AUDIO_CRC_CH7_SIG', - 8: 'APG_AUDIO_CRC_RESERVED_8', - 9: 'APG_AUDIO_CRC_RESERVED_9', - 10: 'APG_AUDIO_CRC_RESERVED_10', - 11: 'APG_AUDIO_CRC_RESERVED_11', - 12: 'APG_AUDIO_CRC_RESERVED_12', - 13: 'APG_AUDIO_CRC_RESERVED_13', - 14: 'APG_AUDIO_CRC_RESERVED_14', - 15: 'APG_AUDIO_CRC_RESERVED_15', -} -APG_AUDIO_CRC_CH0_SIG = 0 -APG_AUDIO_CRC_CH1_SIG = 1 -APG_AUDIO_CRC_CH2_SIG = 2 -APG_AUDIO_CRC_CH3_SIG = 3 -APG_AUDIO_CRC_CH4_SIG = 4 -APG_AUDIO_CRC_CH5_SIG = 5 -APG_AUDIO_CRC_CH6_SIG = 6 -APG_AUDIO_CRC_CH7_SIG = 7 -APG_AUDIO_CRC_RESERVED_8 = 8 -APG_AUDIO_CRC_RESERVED_9 = 9 -APG_AUDIO_CRC_RESERVED_10 = 10 -APG_AUDIO_CRC_RESERVED_11 = 11 -APG_AUDIO_CRC_RESERVED_12 = 12 -APG_AUDIO_CRC_RESERVED_13 = 13 -APG_AUDIO_CRC_RESERVED_14 = 14 -APG_AUDIO_CRC_RESERVED_15 = 15 -APG_AUDIO_CRC_CONTROL_CH_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'APG_AUDIO_CRC_CONTROL_CONT' -APG_AUDIO_CRC_CONTROL_CONT__enumvalues = { - 0: 'APG_AUDIO_CRC_ONESHOT', - 1: 'APG_AUDIO_CRC_CONTINUOUS', -} -APG_AUDIO_CRC_ONESHOT = 0 -APG_AUDIO_CRC_CONTINUOUS = 1 -APG_AUDIO_CRC_CONTROL_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'APG_DBG_ACP_TYPE' -APG_DBG_ACP_TYPE__enumvalues = { - 0: 'APG_ACP_TYPE_GENERIC_AUDIO', - 1: 'APG_ACP_TYPE_ICE60958_AUDIO', - 2: 'APG_ACP_TYPE_DVD_AUDIO', - 3: 'APG_ACP_TYPE_SUPER_AUDIO_CD', -} -APG_ACP_TYPE_GENERIC_AUDIO = 0 -APG_ACP_TYPE_ICE60958_AUDIO = 1 -APG_ACP_TYPE_DVD_AUDIO = 2 -APG_ACP_TYPE_SUPER_AUDIO_CD = 3 -APG_DBG_ACP_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'APG_DBG_AUDIO_DTO_BASE' -APG_DBG_AUDIO_DTO_BASE__enumvalues = { - 0: 'BASE_RATE_48KHZ', - 1: 'BASE_RATE_44P1KHZ', -} -BASE_RATE_48KHZ = 0 -BASE_RATE_44P1KHZ = 1 -APG_DBG_AUDIO_DTO_BASE = ctypes.c_uint32 # enum - -# values for enumeration 'APG_DBG_AUDIO_DTO_DIV' -APG_DBG_AUDIO_DTO_DIV__enumvalues = { - 0: 'DIVISOR_BY1', - 1: 'DIVISOR_BY2_RESERVED', - 2: 'DIVISOR_BY3', - 3: 'DIVISOR_BY4_RESERVED', - 4: 'DIVISOR_BY5_RESERVED', - 5: 'DIVISOR_BY6_RESERVED', - 6: 'DIVISOR_BY7_RESERVED', - 7: 'DIVISOR_BY8_RESERVED', -} -DIVISOR_BY1 = 0 -DIVISOR_BY2_RESERVED = 1 -DIVISOR_BY3 = 2 -DIVISOR_BY4_RESERVED = 3 -DIVISOR_BY5_RESERVED = 4 -DIVISOR_BY6_RESERVED = 5 -DIVISOR_BY7_RESERVED = 6 -DIVISOR_BY8_RESERVED = 7 -APG_DBG_AUDIO_DTO_DIV = ctypes.c_uint32 # enum - -# values for enumeration 'APG_DBG_AUDIO_DTO_MULTI' -APG_DBG_AUDIO_DTO_MULTI__enumvalues = { - 0: 'MULTIPLE_BY1', - 1: 'MULTIPLE_BY2', - 2: 'MULTIPLE_BY3_RESERVED', - 3: 'MULTIPLE_BY4', - 4: 'MULTIPLE_RESERVED', -} -MULTIPLE_BY1 = 0 -MULTIPLE_BY2 = 1 -MULTIPLE_BY3_RESERVED = 2 -MULTIPLE_BY4 = 3 -MULTIPLE_RESERVED = 4 -APG_DBG_AUDIO_DTO_MULTI = ctypes.c_uint32 # enum - -# values for enumeration 'APG_DBG_MUX_SEL' -APG_DBG_MUX_SEL__enumvalues = { - 0: 'APG_FUNCTIONAL_MODE', - 1: 'APG_DEBUG_AUDIO_MODE', -} -APG_FUNCTIONAL_MODE = 0 -APG_DEBUG_AUDIO_MODE = 1 -APG_DBG_MUX_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'APG_DP_ASP_CHANNEL_COUNT_OVERRIDE' -APG_DP_ASP_CHANNEL_COUNT_OVERRIDE__enumvalues = { - 0: 'APG_DP_ASP_CHANNEL_COUNT_FROM_AZ', - 1: 'APG_DP_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED', -} -APG_DP_ASP_CHANNEL_COUNT_FROM_AZ = 0 -APG_DP_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED = 1 -APG_DP_ASP_CHANNEL_COUNT_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'APG_MEM_POWER_STATE' -APG_MEM_POWER_STATE__enumvalues = { - 0: 'APG_MEM_POWER_STATE_ON', - 1: 'APG_MEM_POWER_STATE_LS', - 2: 'APG_MEM_POWER_STATE_DS', - 3: 'APG_MEM_POWER_STATE_SD', -} -APG_MEM_POWER_STATE_ON = 0 -APG_MEM_POWER_STATE_LS = 1 -APG_MEM_POWER_STATE_DS = 2 -APG_MEM_POWER_STATE_SD = 3 -APG_MEM_POWER_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'APG_MEM_PWR_DIS_CTRL' -APG_MEM_PWR_DIS_CTRL__enumvalues = { - 0: 'APG_MEM_ENABLE_MEM_PWR_CTRL', - 1: 'APG_MEM_DISABLE_MEM_PWR_CTRL', -} -APG_MEM_ENABLE_MEM_PWR_CTRL = 0 -APG_MEM_DISABLE_MEM_PWR_CTRL = 1 -APG_MEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'APG_MEM_PWR_FORCE_CTRL' -APG_MEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'APG_MEM_NO_FORCE_REQUEST', - 1: 'APG_MEM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'APG_MEM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'APG_MEM_FORCE_SHUT_DOWN_REQUEST', -} -APG_MEM_NO_FORCE_REQUEST = 0 -APG_MEM_FORCE_LIGHT_SLEEP_REQUEST = 1 -APG_MEM_FORCE_DEEP_SLEEP_REQUEST = 2 -APG_MEM_FORCE_SHUT_DOWN_REQUEST = 3 -APG_MEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'APG_PACKET_CONTROL_ACP_SOURCE' -APG_PACKET_CONTROL_ACP_SOURCE__enumvalues = { - 0: 'APG_ACP_SOURCE_NO_OVERRIDE', - 1: 'APG_ACP_OVERRIDE', -} -APG_ACP_SOURCE_NO_OVERRIDE = 0 -APG_ACP_OVERRIDE = 1 -APG_PACKET_CONTROL_ACP_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'APG_PACKET_CONTROL_AUDIO_INFO_SOURCE' -APG_PACKET_CONTROL_AUDIO_INFO_SOURCE__enumvalues = { - 0: 'APG_INFOFRAME_SOURCE_NO_OVERRIDE', - 1: 'APG_INFOFRAME_SOURCE_FROM_APG_REGISTERS', -} -APG_INFOFRAME_SOURCE_NO_OVERRIDE = 0 -APG_INFOFRAME_SOURCE_FROM_APG_REGISTERS = 1 -APG_PACKET_CONTROL_AUDIO_INFO_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'APG_RAMP_CONTROL_SIGN' -APG_RAMP_CONTROL_SIGN__enumvalues = { - 0: 'APG_RAMP_SIGNED', - 1: 'APG_RAMP_UNSIGNED', -} -APG_RAMP_SIGNED = 0 -APG_RAMP_UNSIGNED = 1 -APG_RAMP_CONTROL_SIGN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL' -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL__enumvalues = { - 0: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER1', - 1: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER2', - 2: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER3', - 3: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER4', - 4: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER5', - 5: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER6', -} -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER1 = 0 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER2 = 1 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER3 = 2 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER4 = 3 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER5 = 4 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER6 = 5 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL' -DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL__enumvalues = { - 0: 'DCIO_TEST_CLK_SEL_DISPCLK', - 1: 'DCIO_TEST_CLK_SEL_GATED_DISPCLK', - 2: 'DCIO_TEST_CLK_SEL_SOCCLK', -} -DCIO_TEST_CLK_SEL_DISPCLK = 0 -DCIO_TEST_CLK_SEL_GATED_DISPCLK = 1 -DCIO_TEST_CLK_SEL_SOCCLK = 2 -DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS' -DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS__enumvalues = { - 0: 'DCIO_DISPCLK_R_DCIO_GATE_DISABLE', - 1: 'DCIO_DISPCLK_R_DCIO_GATE_ENABLE', -} -DCIO_DISPCLK_R_DCIO_GATE_DISABLE = 0 -DCIO_DISPCLK_R_DCIO_GATE_ENABLE = 1 -DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DBG_ASYNC_4BIT_SEL' -DCIO_DBG_ASYNC_4BIT_SEL__enumvalues = { - 0: 'DCIO_DBG_ASYNC_4BIT_SEL_3TO0', - 1: 'DCIO_DBG_ASYNC_4BIT_SEL_7TO4', - 2: 'DCIO_DBG_ASYNC_4BIT_SEL_11TO8', - 3: 'DCIO_DBG_ASYNC_4BIT_SEL_15TO12', - 4: 'DCIO_DBG_ASYNC_4BIT_SEL_19TO16', - 5: 'DCIO_DBG_ASYNC_4BIT_SEL_23TO20', - 6: 'DCIO_DBG_ASYNC_4BIT_SEL_27TO24', - 7: 'DCIO_DBG_ASYNC_4BIT_SEL_31TO28', -} -DCIO_DBG_ASYNC_4BIT_SEL_3TO0 = 0 -DCIO_DBG_ASYNC_4BIT_SEL_7TO4 = 1 -DCIO_DBG_ASYNC_4BIT_SEL_11TO8 = 2 -DCIO_DBG_ASYNC_4BIT_SEL_15TO12 = 3 -DCIO_DBG_ASYNC_4BIT_SEL_19TO16 = 4 -DCIO_DBG_ASYNC_4BIT_SEL_23TO20 = 5 -DCIO_DBG_ASYNC_4BIT_SEL_27TO24 = 6 -DCIO_DBG_ASYNC_4BIT_SEL_31TO28 = 7 -DCIO_DBG_ASYNC_4BIT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DBG_ASYNC_BLOCK_SEL' -DCIO_DBG_ASYNC_BLOCK_SEL__enumvalues = { - 0: 'DCIO_DBG_ASYNC_BLOCK_SEL_OVERRIDE', - 1: 'DCIO_DBG_ASYNC_BLOCK_SEL_DCCG', - 2: 'DCIO_DBG_ASYNC_BLOCK_SEL_DCIO', - 3: 'DCIO_DBG_ASYNC_BLOCK_SEL_DIO', -} -DCIO_DBG_ASYNC_BLOCK_SEL_OVERRIDE = 0 -DCIO_DBG_ASYNC_BLOCK_SEL_DCCG = 1 -DCIO_DBG_ASYNC_BLOCK_SEL_DCIO = 2 -DCIO_DBG_ASYNC_BLOCK_SEL_DIO = 3 -DCIO_DBG_ASYNC_BLOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DCRXPHY_SOFT_RESET' -DCIO_DCRXPHY_SOFT_RESET__enumvalues = { - 0: 'DCIO_DCRXPHY_SOFT_RESET_DEASSERT', - 1: 'DCIO_DCRXPHY_SOFT_RESET_ASSERT', -} -DCIO_DCRXPHY_SOFT_RESET_DEASSERT = 0 -DCIO_DCRXPHY_SOFT_RESET_ASSERT = 1 -DCIO_DCRXPHY_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERICA_SEL' -DCIO_DC_GENERICA_SEL__enumvalues = { - 1: 'DCIO_GENERICA_SEL_STEREOSYNC', - 10: 'DCIO_GENERICA_SEL_GENERICA_DCCG', - 11: 'DCIO_GENERICA_SEL_SYNCEN', -} -DCIO_GENERICA_SEL_STEREOSYNC = 1 -DCIO_GENERICA_SEL_GENERICA_DCCG = 10 -DCIO_GENERICA_SEL_SYNCEN = 11 -DCIO_DC_GENERICA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERICB_SEL' -DCIO_DC_GENERICB_SEL__enumvalues = { - 1: 'DCIO_GENERICB_SEL_STEREOSYNC', - 10: 'DCIO_GENERICB_SEL_GENERICB_DCCG', - 11: 'DCIO_GENERICB_SEL_SYNCEN', -} -DCIO_GENERICB_SEL_STEREOSYNC = 1 -DCIO_GENERICB_SEL_GENERICB_DCCG = 10 -DCIO_GENERICB_SEL_SYNCEN = 11 -DCIO_DC_GENERICB_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL' -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_TEST_FBDIV_CLK_DIV2', - 1: 'DCIO_UNIPHYB_TEST_FBDIV_CLK_DIV2', - 2: 'DCIO_UNIPHYC_TEST_FBDIV_CLK_DIV2', - 3: 'DCIO_UNIPHYD_TEST_FBDIV_CLK_DIV2', - 4: 'DCIO_UNIPHYE_TEST_FBDIV_CLK_DIV2', - 5: 'DCIO_UNIPHYF_TEST_FBDIV_CLK_DIV2', - 6: 'DCIO_UNIPHYG_TEST_FBDIV_CLK_DIV2', -} -DCIO_UNIPHYA_TEST_FBDIV_CLK_DIV2 = 0 -DCIO_UNIPHYB_TEST_FBDIV_CLK_DIV2 = 1 -DCIO_UNIPHYC_TEST_FBDIV_CLK_DIV2 = 2 -DCIO_UNIPHYD_TEST_FBDIV_CLK_DIV2 = 3 -DCIO_UNIPHYE_TEST_FBDIV_CLK_DIV2 = 4 -DCIO_UNIPHYF_TEST_FBDIV_CLK_DIV2 = 5 -DCIO_UNIPHYG_TEST_FBDIV_CLK_DIV2 = 6 -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL' -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_FBDIV_CLK', - 1: 'DCIO_UNIPHYB_FBDIV_CLK', - 2: 'DCIO_UNIPHYC_FBDIV_CLK', - 3: 'DCIO_UNIPHYD_FBDIV_CLK', - 4: 'DCIO_UNIPHYE_FBDIV_CLK', - 5: 'DCIO_UNIPHYF_FBDIV_CLK', - 6: 'DCIO_UNIPHYG_FBDIV_CLK', -} -DCIO_UNIPHYA_FBDIV_CLK = 0 -DCIO_UNIPHYB_FBDIV_CLK = 1 -DCIO_UNIPHYC_FBDIV_CLK = 2 -DCIO_UNIPHYD_FBDIV_CLK = 3 -DCIO_UNIPHYE_FBDIV_CLK = 4 -DCIO_UNIPHYF_FBDIV_CLK = 5 -DCIO_UNIPHYG_FBDIV_CLK = 6 -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL' -DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_FBDIV_SSC_CLK', - 1: 'DCIO_UNIPHYB_FBDIV_SSC_CLK', - 2: 'DCIO_UNIPHYC_FBDIV_SSC_CLK', - 3: 'DCIO_UNIPHYD_FBDIV_SSC_CLK', - 4: 'DCIO_UNIPHYE_FBDIV_SSC_CLK', - 5: 'DCIO_UNIPHYF_FBDIV_SSC_CLK', - 6: 'DCIO_UNIPHYG_FBDIV_SSC_CLK', -} -DCIO_UNIPHYA_FBDIV_SSC_CLK = 0 -DCIO_UNIPHYB_FBDIV_SSC_CLK = 1 -DCIO_UNIPHYC_FBDIV_SSC_CLK = 2 -DCIO_UNIPHYD_FBDIV_SSC_CLK = 3 -DCIO_UNIPHYE_FBDIV_SSC_CLK = 4 -DCIO_UNIPHYF_FBDIV_SSC_CLK = 5 -DCIO_UNIPHYG_FBDIV_SSC_CLK = 6 -DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL' -DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_TEST_REFDIV_CLK', - 1: 'DCIO_UNIPHYB_TEST_REFDIV_CLK', - 2: 'DCIO_UNIPHYC_TEST_REFDIV_CLK', - 3: 'DCIO_UNIPHYD_TEST_REFDIV_CLK', - 4: 'DCIO_UNIPHYE_TEST_REFDIV_CLK', - 5: 'DCIO_UNIPHYF_TEST_REFDIV_CLK', - 6: 'DCIO_UNIPHYG_TEST_REFDIV_CLK', -} -DCIO_UNIPHYA_TEST_REFDIV_CLK = 0 -DCIO_UNIPHYB_TEST_REFDIV_CLK = 1 -DCIO_UNIPHYC_TEST_REFDIV_CLK = 2 -DCIO_UNIPHYD_TEST_REFDIV_CLK = 3 -DCIO_UNIPHYE_TEST_REFDIV_CLK = 4 -DCIO_UNIPHYF_TEST_REFDIV_CLK = 5 -DCIO_UNIPHYG_TEST_REFDIV_CLK = 6 -DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GPIO_DEBUG_DPRX_LOOPBACK_ENABLE' -DCIO_DC_GPIO_DEBUG_DPRX_LOOPBACK_ENABLE__enumvalues = { - 0: 'DCIO_DPRX_LOOPBACK_ENABLE_NORMAL', - 1: 'DCIO_DPRX_LOOPBACK_ENABLE_LOOP', -} -DCIO_DPRX_LOOPBACK_ENABLE_NORMAL = 0 -DCIO_DPRX_LOOPBACK_ENABLE_LOOP = 1 -DCIO_DC_GPIO_DEBUG_DPRX_LOOPBACK_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GPU_TIMER_READ_SELECT' -DCIO_DC_GPU_TIMER_READ_SELECT__enumvalues = { - 0: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE', - 1: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE', - 2: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_P_FLIP', - 3: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_P_FLIP', - 4: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM', - 5: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM', -} -DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE = 0 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE = 1 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_P_FLIP = 2 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_P_FLIP = 3 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM = 4 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM = 5 -DCIO_DC_GPU_TIMER_READ_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GPU_TIMER_START_POSITION' -DCIO_DC_GPU_TIMER_START_POSITION__enumvalues = { - 0: 'DCIO_GPU_TIMER_START_0_END_27', - 1: 'DCIO_GPU_TIMER_START_1_END_28', - 2: 'DCIO_GPU_TIMER_START_2_END_29', - 3: 'DCIO_GPU_TIMER_START_3_END_30', - 4: 'DCIO_GPU_TIMER_START_4_END_31', - 5: 'DCIO_GPU_TIMER_START_6_END_33', - 6: 'DCIO_GPU_TIMER_START_8_END_35', - 7: 'DCIO_GPU_TIMER_START_10_END_37', -} -DCIO_GPU_TIMER_START_0_END_27 = 0 -DCIO_GPU_TIMER_START_1_END_28 = 1 -DCIO_GPU_TIMER_START_2_END_29 = 2 -DCIO_GPU_TIMER_START_3_END_30 = 3 -DCIO_GPU_TIMER_START_4_END_31 = 4 -DCIO_GPU_TIMER_START_6_END_33 = 5 -DCIO_GPU_TIMER_START_8_END_35 = 6 -DCIO_GPU_TIMER_START_10_END_37 = 7 -DCIO_DC_GPU_TIMER_START_POSITION = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL' -DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL__enumvalues = { - 0: 'DCIO_GENLK_CLK_OUTPUT_SEL_DISABLE', - 1: 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL1', - 2: 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL2', - 3: 'DCIO_GENLK_CLK_OUTPUT_SEL_RESERVED_VALUE3', -} -DCIO_GENLK_CLK_OUTPUT_SEL_DISABLE = 0 -DCIO_GENLK_CLK_OUTPUT_SEL_PPLL1 = 1 -DCIO_GENLK_CLK_OUTPUT_SEL_PPLL2 = 2 -DCIO_GENLK_CLK_OUTPUT_SEL_RESERVED_VALUE3 = 3 -DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DIO_EXT_VSYNC_MASK' -DCIO_DIO_EXT_VSYNC_MASK__enumvalues = { - 0: 'DCIO_EXT_VSYNC_MASK_NONE', - 1: 'DCIO_EXT_VSYNC_MASK_PIPE0', - 2: 'DCIO_EXT_VSYNC_MASK_PIPE1', - 3: 'DCIO_EXT_VSYNC_MASK_PIPE2', - 4: 'DCIO_EXT_VSYNC_MASK_PIPE3', - 5: 'DCIO_EXT_VSYNC_MASK_PIPE4', - 6: 'DCIO_EXT_VSYNC_MASK_PIPE5', - 7: 'DCIO_EXT_VSYNC_MASK_NONE_DUPLICATE', -} -DCIO_EXT_VSYNC_MASK_NONE = 0 -DCIO_EXT_VSYNC_MASK_PIPE0 = 1 -DCIO_EXT_VSYNC_MASK_PIPE1 = 2 -DCIO_EXT_VSYNC_MASK_PIPE2 = 3 -DCIO_EXT_VSYNC_MASK_PIPE3 = 4 -DCIO_EXT_VSYNC_MASK_PIPE4 = 5 -DCIO_EXT_VSYNC_MASK_PIPE5 = 6 -DCIO_EXT_VSYNC_MASK_NONE_DUPLICATE = 7 -DCIO_DIO_EXT_VSYNC_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DIO_OTG_EXT_VSYNC_MUX' -DCIO_DIO_OTG_EXT_VSYNC_MUX__enumvalues = { - 0: 'DCIO_EXT_VSYNC_MUX_SWAPLOCKB', - 1: 'DCIO_EXT_VSYNC_MUX_OTG0', - 2: 'DCIO_EXT_VSYNC_MUX_OTG1', - 3: 'DCIO_EXT_VSYNC_MUX_OTG2', - 4: 'DCIO_EXT_VSYNC_MUX_OTG3', - 5: 'DCIO_EXT_VSYNC_MUX_OTG4', - 6: 'DCIO_EXT_VSYNC_MUX_OTG5', - 7: 'DCIO_EXT_VSYNC_MUX_GENERICB', -} -DCIO_EXT_VSYNC_MUX_SWAPLOCKB = 0 -DCIO_EXT_VSYNC_MUX_OTG0 = 1 -DCIO_EXT_VSYNC_MUX_OTG1 = 2 -DCIO_EXT_VSYNC_MUX_OTG2 = 3 -DCIO_EXT_VSYNC_MUX_OTG3 = 4 -DCIO_EXT_VSYNC_MUX_OTG4 = 5 -DCIO_EXT_VSYNC_MUX_OTG5 = 6 -DCIO_EXT_VSYNC_MUX_GENERICB = 7 -DCIO_DIO_OTG_EXT_VSYNC_MUX = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DPCS_INTERRUPT_MASK' -DCIO_DPCS_INTERRUPT_MASK__enumvalues = { - 0: 'DCIO_DPCS_INTERRUPT_DISABLE', - 1: 'DCIO_DPCS_INTERRUPT_ENABLE', -} -DCIO_DPCS_INTERRUPT_DISABLE = 0 -DCIO_DPCS_INTERRUPT_ENABLE = 1 -DCIO_DPCS_INTERRUPT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DPCS_INTERRUPT_TYPE' -DCIO_DPCS_INTERRUPT_TYPE__enumvalues = { - 0: 'DCIO_DPCS_INTERRUPT_TYPE_LEVEL_BASED', - 1: 'DCIO_DPCS_INTERRUPT_TYPE_PULSE_BASED', -} -DCIO_DPCS_INTERRUPT_TYPE_LEVEL_BASED = 0 -DCIO_DPCS_INTERRUPT_TYPE_PULSE_BASED = 1 -DCIO_DPCS_INTERRUPT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GENLK_CLK_GSL_MASK' -DCIO_GENLK_CLK_GSL_MASK__enumvalues = { - 0: 'DCIO_GENLK_CLK_GSL_MASK_NO', - 1: 'DCIO_GENLK_CLK_GSL_MASK_TIMING', - 2: 'DCIO_GENLK_CLK_GSL_MASK_STEREO', -} -DCIO_GENLK_CLK_GSL_MASK_NO = 0 -DCIO_GENLK_CLK_GSL_MASK_TIMING = 1 -DCIO_GENLK_CLK_GSL_MASK_STEREO = 2 -DCIO_GENLK_CLK_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GENLK_VSYNC_GSL_MASK' -DCIO_GENLK_VSYNC_GSL_MASK__enumvalues = { - 0: 'DCIO_GENLK_VSYNC_GSL_MASK_NO', - 1: 'DCIO_GENLK_VSYNC_GSL_MASK_TIMING', - 2: 'DCIO_GENLK_VSYNC_GSL_MASK_STEREO', -} -DCIO_GENLK_VSYNC_GSL_MASK_NO = 0 -DCIO_GENLK_VSYNC_GSL_MASK_TIMING = 1 -DCIO_GENLK_VSYNC_GSL_MASK_STEREO = 2 -DCIO_GENLK_VSYNC_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GSL_SEL' -DCIO_GSL_SEL__enumvalues = { - 0: 'DCIO_GSL_SEL_GROUP_0', - 1: 'DCIO_GSL_SEL_GROUP_1', - 2: 'DCIO_GSL_SEL_GROUP_2', -} -DCIO_GSL_SEL_GROUP_0 = 0 -DCIO_GSL_SEL_GROUP_1 = 1 -DCIO_GSL_SEL_GROUP_2 = 2 -DCIO_GSL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_PHY_HPO_ENC_SRC_SEL' -DCIO_PHY_HPO_ENC_SRC_SEL__enumvalues = { - 0: 'HPO_SRC0', - 1: 'HPO_SRC_RESERVED', -} -HPO_SRC0 = 0 -HPO_SRC_RESERVED = 1 -DCIO_PHY_HPO_ENC_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_SWAPLOCK_A_GSL_MASK' -DCIO_SWAPLOCK_A_GSL_MASK__enumvalues = { - 0: 'DCIO_SWAPLOCK_A_GSL_MASK_NO', - 1: 'DCIO_SWAPLOCK_A_GSL_MASK_TIMING', - 2: 'DCIO_SWAPLOCK_A_GSL_MASK_STEREO', -} -DCIO_SWAPLOCK_A_GSL_MASK_NO = 0 -DCIO_SWAPLOCK_A_GSL_MASK_TIMING = 1 -DCIO_SWAPLOCK_A_GSL_MASK_STEREO = 2 -DCIO_SWAPLOCK_A_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_SWAPLOCK_B_GSL_MASK' -DCIO_SWAPLOCK_B_GSL_MASK__enumvalues = { - 0: 'DCIO_SWAPLOCK_B_GSL_MASK_NO', - 1: 'DCIO_SWAPLOCK_B_GSL_MASK_TIMING', - 2: 'DCIO_SWAPLOCK_B_GSL_MASK_STEREO', -} -DCIO_SWAPLOCK_B_GSL_MASK_NO = 0 -DCIO_SWAPLOCK_B_GSL_MASK_TIMING = 1 -DCIO_SWAPLOCK_B_GSL_MASK_STEREO = 2 -DCIO_SWAPLOCK_B_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE' -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE__enumvalues = { - 0: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH0', - 1: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH1', - 2: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH2', - 3: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH3', -} -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH0 = 0 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH1 = 1 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH2 = 2 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH3 = 3 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_IMPCAL_SEL' -DCIO_UNIPHY_IMPCAL_SEL__enumvalues = { - 0: 'DCIO_UNIPHY_IMPCAL_SEL_TEMPERATURE', - 1: 'DCIO_UNIPHY_IMPCAL_SEL_BINARY', -} -DCIO_UNIPHY_IMPCAL_SEL_TEMPERATURE = 0 -DCIO_UNIPHY_IMPCAL_SEL_BINARY = 1 -DCIO_UNIPHY_IMPCAL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT' -DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT__enumvalues = { - 0: 'DCIO_UNIPHY_CHANNEL_NO_INVERSION', - 1: 'DCIO_UNIPHY_CHANNEL_INVERTED', -} -DCIO_UNIPHY_CHANNEL_NO_INVERSION = 0 -DCIO_UNIPHY_CHANNEL_INVERTED = 1 -DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK' -DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK__enumvalues = { - 0: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_DISALLOW', - 1: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW', - 2: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_DEBOUNCED', - 3: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_TOGGLE_FILTERED', -} -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_DISALLOW = 0 -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW = 1 -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_DEBOUNCED = 2 -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_TOGGLE_FILTERED = 3 -DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_ALL_PWR_OK' -DCIOCHIP_AUX_ALL_PWR_OK__enumvalues = { - 0: 'DCIOCHIP_AUX_ALL_PWR_OK_0', - 1: 'DCIOCHIP_AUX_ALL_PWR_OK_1', -} -DCIOCHIP_AUX_ALL_PWR_OK_0 = 0 -DCIOCHIP_AUX_ALL_PWR_OK_1 = 1 -DCIOCHIP_AUX_ALL_PWR_OK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_CSEL0P9' -DCIOCHIP_AUX_CSEL0P9__enumvalues = { - 0: 'DCIOCHIP_AUX_CSEL_DEC1P0', - 1: 'DCIOCHIP_AUX_CSEL_DEC0P9', -} -DCIOCHIP_AUX_CSEL_DEC1P0 = 0 -DCIOCHIP_AUX_CSEL_DEC0P9 = 1 -DCIOCHIP_AUX_CSEL0P9 = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_CSEL1P1' -DCIOCHIP_AUX_CSEL1P1__enumvalues = { - 0: 'DCIOCHIP_AUX_CSEL_INC1P0', - 1: 'DCIOCHIP_AUX_CSEL_INC1P1', -} -DCIOCHIP_AUX_CSEL_INC1P0 = 0 -DCIOCHIP_AUX_CSEL_INC1P1 = 1 -DCIOCHIP_AUX_CSEL1P1 = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_FALLSLEWSEL' -DCIOCHIP_AUX_FALLSLEWSEL__enumvalues = { - 0: 'DCIOCHIP_AUX_FALLSLEWSEL_LOW', - 1: 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH0', - 2: 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH1', - 3: 'DCIOCHIP_AUX_FALLSLEWSEL_ULTRAHIGH', -} -DCIOCHIP_AUX_FALLSLEWSEL_LOW = 0 -DCIOCHIP_AUX_FALLSLEWSEL_HIGH0 = 1 -DCIOCHIP_AUX_FALLSLEWSEL_HIGH1 = 2 -DCIOCHIP_AUX_FALLSLEWSEL_ULTRAHIGH = 3 -DCIOCHIP_AUX_FALLSLEWSEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_HYS_TUNE' -DCIOCHIP_AUX_HYS_TUNE__enumvalues = { - 0: 'DCIOCHIP_AUX_HYS_TUNE_0', - 1: 'DCIOCHIP_AUX_HYS_TUNE_1', - 2: 'DCIOCHIP_AUX_HYS_TUNE_2', - 3: 'DCIOCHIP_AUX_HYS_TUNE_3', -} -DCIOCHIP_AUX_HYS_TUNE_0 = 0 -DCIOCHIP_AUX_HYS_TUNE_1 = 1 -DCIOCHIP_AUX_HYS_TUNE_2 = 2 -DCIOCHIP_AUX_HYS_TUNE_3 = 3 -DCIOCHIP_AUX_HYS_TUNE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_RECEIVER_SEL' -DCIOCHIP_AUX_RECEIVER_SEL__enumvalues = { - 0: 'DCIOCHIP_AUX_RECEIVER_SEL_0', - 1: 'DCIOCHIP_AUX_RECEIVER_SEL_1', - 2: 'DCIOCHIP_AUX_RECEIVER_SEL_2', - 3: 'DCIOCHIP_AUX_RECEIVER_SEL_3', -} -DCIOCHIP_AUX_RECEIVER_SEL_0 = 0 -DCIOCHIP_AUX_RECEIVER_SEL_1 = 1 -DCIOCHIP_AUX_RECEIVER_SEL_2 = 2 -DCIOCHIP_AUX_RECEIVER_SEL_3 = 3 -DCIOCHIP_AUX_RECEIVER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_RSEL0P9' -DCIOCHIP_AUX_RSEL0P9__enumvalues = { - 0: 'DCIOCHIP_AUX_RSEL_DEC1P0', - 1: 'DCIOCHIP_AUX_RSEL_DEC0P9', -} -DCIOCHIP_AUX_RSEL_DEC1P0 = 0 -DCIOCHIP_AUX_RSEL_DEC0P9 = 1 -DCIOCHIP_AUX_RSEL0P9 = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_RSEL1P1' -DCIOCHIP_AUX_RSEL1P1__enumvalues = { - 0: 'DCIOCHIP_AUX_RSEL_INC1P0', - 1: 'DCIOCHIP_AUX_RSEL_INC1P1', -} -DCIOCHIP_AUX_RSEL_INC1P0 = 0 -DCIOCHIP_AUX_RSEL_INC1P1 = 1 -DCIOCHIP_AUX_RSEL1P1 = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_SPIKESEL' -DCIOCHIP_AUX_SPIKESEL__enumvalues = { - 0: 'DCIOCHIP_AUX_SPIKESEL_50NS', - 1: 'DCIOCHIP_AUX_SPIKESEL_10NS', -} -DCIOCHIP_AUX_SPIKESEL_50NS = 0 -DCIOCHIP_AUX_SPIKESEL_10NS = 1 -DCIOCHIP_AUX_SPIKESEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_VOD_TUNE' -DCIOCHIP_AUX_VOD_TUNE__enumvalues = { - 0: 'DCIOCHIP_AUX_VOD_TUNE_0', - 1: 'DCIOCHIP_AUX_VOD_TUNE_1', - 2: 'DCIOCHIP_AUX_VOD_TUNE_2', - 3: 'DCIOCHIP_AUX_VOD_TUNE_3', -} -DCIOCHIP_AUX_VOD_TUNE_0 = 0 -DCIOCHIP_AUX_VOD_TUNE_1 = 1 -DCIOCHIP_AUX_VOD_TUNE_2 = 2 -DCIOCHIP_AUX_VOD_TUNE_3 = 3 -DCIOCHIP_AUX_VOD_TUNE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_GPIO_MASK_EN' -DCIOCHIP_GPIO_MASK_EN__enumvalues = { - 0: 'DCIOCHIP_GPIO_MASK_EN_HARDWARE', - 1: 'DCIOCHIP_GPIO_MASK_EN_SOFTWARE', -} -DCIOCHIP_GPIO_MASK_EN_HARDWARE = 0 -DCIOCHIP_GPIO_MASK_EN_SOFTWARE = 1 -DCIOCHIP_GPIO_MASK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_HPD_SEL' -DCIOCHIP_HPD_SEL__enumvalues = { - 0: 'DCIOCHIP_HPD_SEL_ASYNC', - 1: 'DCIOCHIP_HPD_SEL_CLOCKED', -} -DCIOCHIP_HPD_SEL_ASYNC = 0 -DCIOCHIP_HPD_SEL_CLOCKED = 1 -DCIOCHIP_HPD_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_I2C_COMPSEL' -DCIOCHIP_I2C_COMPSEL__enumvalues = { - 0: 'DCIOCHIP_I2C_REC_SCHMIT', - 1: 'DCIOCHIP_I2C_REC_COMPARATOR', -} -DCIOCHIP_I2C_REC_SCHMIT = 0 -DCIOCHIP_I2C_REC_COMPARATOR = 1 -DCIOCHIP_I2C_COMPSEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_I2C_FALLSLEWSEL' -DCIOCHIP_I2C_FALLSLEWSEL__enumvalues = { - 0: 'DCIOCHIP_I2C_FALLSLEWSEL_00', - 1: 'DCIOCHIP_I2C_FALLSLEWSEL_01', - 2: 'DCIOCHIP_I2C_FALLSLEWSEL_10', - 3: 'DCIOCHIP_I2C_FALLSLEWSEL_11', -} -DCIOCHIP_I2C_FALLSLEWSEL_00 = 0 -DCIOCHIP_I2C_FALLSLEWSEL_01 = 1 -DCIOCHIP_I2C_FALLSLEWSEL_10 = 2 -DCIOCHIP_I2C_FALLSLEWSEL_11 = 3 -DCIOCHIP_I2C_FALLSLEWSEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_I2C_RECEIVER_SEL' -DCIOCHIP_I2C_RECEIVER_SEL__enumvalues = { - 0: 'DCIOCHIP_I2C_RECEIVER_SEL_0', - 1: 'DCIOCHIP_I2C_RECEIVER_SEL_1', - 2: 'DCIOCHIP_I2C_RECEIVER_SEL_2', - 3: 'DCIOCHIP_I2C_RECEIVER_SEL_3', -} -DCIOCHIP_I2C_RECEIVER_SEL_0 = 0 -DCIOCHIP_I2C_RECEIVER_SEL_1 = 1 -DCIOCHIP_I2C_RECEIVER_SEL_2 = 2 -DCIOCHIP_I2C_RECEIVER_SEL_3 = 3 -DCIOCHIP_I2C_RECEIVER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_I2C_VPH_1V2_EN' -DCIOCHIP_I2C_VPH_1V2_EN__enumvalues = { - 0: 'DCIOCHIP_I2C_VPH_1V2_EN_0', - 1: 'DCIOCHIP_I2C_VPH_1V2_EN_1', -} -DCIOCHIP_I2C_VPH_1V2_EN_0 = 0 -DCIOCHIP_I2C_VPH_1V2_EN_1 = 1 -DCIOCHIP_I2C_VPH_1V2_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_INVERT' -DCIOCHIP_INVERT__enumvalues = { - 0: 'DCIOCHIP_POL_NON_INVERT', - 1: 'DCIOCHIP_POL_INVERT', -} -DCIOCHIP_POL_NON_INVERT = 0 -DCIOCHIP_POL_INVERT = 1 -DCIOCHIP_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_MASK' -DCIOCHIP_MASK__enumvalues = { - 0: 'DCIOCHIP_MASK_DISABLE', - 1: 'DCIOCHIP_MASK_ENABLE', -} -DCIOCHIP_MASK_DISABLE = 0 -DCIOCHIP_MASK_ENABLE = 1 -DCIOCHIP_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_PAD_MODE' -DCIOCHIP_PAD_MODE__enumvalues = { - 0: 'DCIOCHIP_PAD_MODE_DDC', - 1: 'DCIOCHIP_PAD_MODE_DP', -} -DCIOCHIP_PAD_MODE_DDC = 0 -DCIOCHIP_PAD_MODE_DP = 1 -DCIOCHIP_PAD_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_PD_EN' -DCIOCHIP_PD_EN__enumvalues = { - 0: 'DCIOCHIP_PD_EN_NOTALLOW', - 1: 'DCIOCHIP_PD_EN_ALLOW', -} -DCIOCHIP_PD_EN_NOTALLOW = 0 -DCIOCHIP_PD_EN_ALLOW = 1 -DCIOCHIP_PD_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_REF_27_SRC_SEL' -DCIOCHIP_REF_27_SRC_SEL__enumvalues = { - 0: 'DCIOCHIP_REF_27_SRC_SEL_XTAL_DIVIDER', - 1: 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_DIVIDER', - 2: 'DCIOCHIP_REF_27_SRC_SEL_XTAL_BYPASS', - 3: 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_BYPASS', -} -DCIOCHIP_REF_27_SRC_SEL_XTAL_DIVIDER = 0 -DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_DIVIDER = 1 -DCIOCHIP_REF_27_SRC_SEL_XTAL_BYPASS = 2 -DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_BYPASS = 3 -DCIOCHIP_REF_27_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE' -PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE__enumvalues = { - 0: 'PWRSEQ_BL_PWM_OVERRIDE_BL_OUT_DISABLE', - 1: 'PWRSEQ_BL_PWM_OVERRIDE_BL_OUT_ENABLE', -} -PWRSEQ_BL_PWM_OVERRIDE_BL_OUT_DISABLE = 0 -PWRSEQ_BL_PWM_OVERRIDE_BL_OUT_ENABLE = 1 -PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN' -PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN__enumvalues = { - 0: 'PWRSEQ_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN_NORMAL', - 1: 'PWRSEQ_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN_PWM', -} -PWRSEQ_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN_NORMAL = 0 -PWRSEQ_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN_PWM = 1 -PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_CNTL2_DBG_BL_PWM_INPUT_REFCLK_SELECT' -PWRSEQ_BL_PWM_CNTL2_DBG_BL_PWM_INPUT_REFCLK_SELECT__enumvalues = { - 0: 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_NORMAL', - 1: 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG1', - 2: 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG2', - 3: 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG3', -} -PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_NORMAL = 0 -PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG1 = 1 -PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG2 = 2 -PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG3 = 3 -PWRSEQ_BL_PWM_CNTL2_DBG_BL_PWM_INPUT_REFCLK_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_CNTL_BL_PWM_EN' -PWRSEQ_BL_PWM_CNTL_BL_PWM_EN__enumvalues = { - 0: 'PWRSEQ_BL_PWM_DISABLE', - 1: 'PWRSEQ_BL_PWM_ENABLE', -} -PWRSEQ_BL_PWM_DISABLE = 0 -PWRSEQ_BL_PWM_ENABLE = 1 -PWRSEQ_BL_PWM_CNTL_BL_PWM_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN' -PWRSEQ_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN__enumvalues = { - 0: 'PWRSEQ_BL_PWM_FRACTIONAL_DISABLE', - 1: 'PWRSEQ_BL_PWM_FRACTIONAL_ENABLE', -} -PWRSEQ_BL_PWM_FRACTIONAL_DISABLE = 0 -PWRSEQ_BL_PWM_FRACTIONAL_ENABLE = 1 -PWRSEQ_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN' -PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN__enumvalues = { - 0: 'PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_ENABLE', - 1: 'PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_DISABLE', -} -PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_ENABLE = 0 -PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_DISABLE = 1 -PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN' -PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN__enumvalues = { - 0: 'PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL_PWM', - 1: 'PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL1_PWM', -} -PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL_PWM = 0 -PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL1_PWM = 1 -PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_GRP1_REG_LOCK' -PWRSEQ_BL_PWM_GRP1_REG_LOCK__enumvalues = { - 0: 'PWRSEQ_BL_PWM_GRP1_REG_LOCK_DISABLE', - 1: 'PWRSEQ_BL_PWM_GRP1_REG_LOCK_ENABLE', -} -PWRSEQ_BL_PWM_GRP1_REG_LOCK_DISABLE = 0 -PWRSEQ_BL_PWM_GRP1_REG_LOCK_ENABLE = 1 -PWRSEQ_BL_PWM_GRP1_REG_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START' -PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START__enumvalues = { - 0: 'PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START_DISABLE', - 1: 'PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START_ENABLE', -} -PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START_DISABLE = 0 -PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START_ENABLE = 1 -PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_GPIO_MASK_EN' -PWRSEQ_GPIO_MASK_EN__enumvalues = { - 0: 'PWRSEQ_GPIO_MASK_EN_HARDWARE', - 1: 'PWRSEQ_GPIO_MASK_EN_SOFTWARE', -} -PWRSEQ_GPIO_MASK_EN_HARDWARE = 0 -PWRSEQ_GPIO_MASK_EN_SOFTWARE = 1 -PWRSEQ_GPIO_MASK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON' -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON__enumvalues = { - 0: 'PWRSEQ_PANEL_BLON_OFF', - 1: 'PWRSEQ_PANEL_BLON_ON', -} -PWRSEQ_PANEL_BLON_OFF = 0 -PWRSEQ_PANEL_BLON_ON = 1 -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON_POL' -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON_POL__enumvalues = { - 0: 'PWRSEQ_PANEL_BLON_POL_NON_INVERT', - 1: 'PWRSEQ_PANEL_BLON_POL_INVERT', -} -PWRSEQ_PANEL_BLON_POL_NON_INVERT = 0 -PWRSEQ_PANEL_BLON_POL_INVERT = 1 -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON_POL = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON' -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON__enumvalues = { - 0: 'PWRSEQ_PANEL_DIGON_OFF', - 1: 'PWRSEQ_PANEL_DIGON_ON', -} -PWRSEQ_PANEL_DIGON_OFF = 0 -PWRSEQ_PANEL_DIGON_ON = 1 -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON_POL' -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON_POL__enumvalues = { - 0: 'PWRSEQ_PANEL_DIGON_POL_NON_INVERT', - 1: 'PWRSEQ_PANEL_DIGON_POL_INVERT', -} -PWRSEQ_PANEL_DIGON_POL_NON_INVERT = 0 -PWRSEQ_PANEL_DIGON_POL_INVERT = 1 -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON_POL = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_SYNCEN_POL' -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_SYNCEN_POL__enumvalues = { - 0: 'PWRSEQ_PANEL_SYNCEN_POL_NON_INVERT', - 1: 'PWRSEQ_PANEL_SYNCEN_POL_INVERT', -} -PWRSEQ_PANEL_SYNCEN_POL_NON_INVERT = 0 -PWRSEQ_PANEL_SYNCEN_POL_INVERT = 1 -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_SYNCEN_POL = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_CNTL_TARGET_STATE' -PWRSEQ_PANEL_PWRSEQ_CNTL_TARGET_STATE__enumvalues = { - 0: 'PWRSEQ_PANEL_PWRSEQ_TARGET_STATE_LCD_OFF', - 1: 'PWRSEQ_PANEL_PWRSEQ_TARGET_STATE_LCD_ON', -} -PWRSEQ_PANEL_PWRSEQ_TARGET_STATE_LCD_OFF = 0 -PWRSEQ_PANEL_PWRSEQ_TARGET_STATE_LCD_ON = 1 -PWRSEQ_PANEL_PWRSEQ_CNTL_TARGET_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_DELAY2_PANEL_VARY_BL_OVERRIDE_EN' -PWRSEQ_PANEL_PWRSEQ_DELAY2_PANEL_VARY_BL_OVERRIDE_EN__enumvalues = { - 0: 'PWRSEQ_PANEL_VARY_BL_OVERRIDE_EN_BLON', - 1: 'PWRSEQ_PANEL_VARY_BL_OVERRIDE_EN_SEPARATE', -} -PWRSEQ_PANEL_VARY_BL_OVERRIDE_EN_BLON = 0 -PWRSEQ_PANEL_VARY_BL_OVERRIDE_EN_SEPARATE = 1 -PWRSEQ_PANEL_PWRSEQ_DELAY2_PANEL_VARY_BL_OVERRIDE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_CORB_SIZE' -AZ_CORB_SIZE__enumvalues = { - 0: 'AZ_CORB_SIZE_2ENTRIES_RESERVED', - 1: 'AZ_CORB_SIZE_16ENTRIES_RESERVED', - 2: 'AZ_CORB_SIZE_256ENTRIES', - 3: 'AZ_CORB_SIZE_RESERVED', -} -AZ_CORB_SIZE_2ENTRIES_RESERVED = 0 -AZ_CORB_SIZE_16ENTRIES_RESERVED = 1 -AZ_CORB_SIZE_256ENTRIES = 2 -AZ_CORB_SIZE_RESERVED = 3 -AZ_CORB_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_GLOBAL_CAPABILITIES' -AZ_GLOBAL_CAPABILITIES__enumvalues = { - 0: 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_NOT_SUPPORTED', - 1: 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_SUPPORTED', -} -AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_NOT_SUPPORTED = 0 -AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_SUPPORTED = 1 -AZ_GLOBAL_CAPABILITIES = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_RIRB_SIZE' -AZ_RIRB_SIZE__enumvalues = { - 0: 'AZ_RIRB_SIZE_2ENTRIES_RESERVED', - 1: 'AZ_RIRB_SIZE_16ENTRIES_RESERVED', - 2: 'AZ_RIRB_SIZE_256ENTRIES', - 3: 'AZ_RIRB_SIZE_UNDEFINED', -} -AZ_RIRB_SIZE_2ENTRIES_RESERVED = 0 -AZ_RIRB_SIZE_16ENTRIES_RESERVED = 1 -AZ_RIRB_SIZE_256ENTRIES = 2 -AZ_RIRB_SIZE_UNDEFINED = 3 -AZ_RIRB_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_RIRB_WRITE_POINTER_RESET' -AZ_RIRB_WRITE_POINTER_RESET__enumvalues = { - 0: 'AZ_RIRB_WRITE_POINTER_NOT_RESET', - 1: 'AZ_RIRB_WRITE_POINTER_DO_RESET', -} -AZ_RIRB_WRITE_POINTER_NOT_RESET = 0 -AZ_RIRB_WRITE_POINTER_DO_RESET = 1 -AZ_RIRB_WRITE_POINTER_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_STATE_CHANGE_STATUS' -AZ_STATE_CHANGE_STATUS__enumvalues = { - 0: 'AZ_STATE_CHANGE_STATUS_CODEC_NOT_PRESENT', - 1: 'AZ_STATE_CHANGE_STATUS_CODEC_PRESENT', -} -AZ_STATE_CHANGE_STATUS_CODEC_NOT_PRESENT = 0 -AZ_STATE_CHANGE_STATUS_CODEC_PRESENT = 1 -AZ_STATE_CHANGE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'CORB_READ_POINTER_RESET' -CORB_READ_POINTER_RESET__enumvalues = { - 0: 'CORB_READ_POINTER_RESET_CORB_DMA_IS_NOT_RESET', - 1: 'CORB_READ_POINTER_RESET_CORB_DMA_IS_RESET', -} -CORB_READ_POINTER_RESET_CORB_DMA_IS_NOT_RESET = 0 -CORB_READ_POINTER_RESET_CORB_DMA_IS_RESET = 1 -CORB_READ_POINTER_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE' -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE__enumvalues = { - 0: 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_DISABLE', - 1: 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_ENABLE', -} -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_DISABLE = 0 -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_ENABLE = 1 -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL' -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE', -} -GENERIC_AZ_CONTROLLER_REGISTER_DISABLE = 0 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE = 1 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED' -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE_RESERVED', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_RESERVED', -} -GENERIC_AZ_CONTROLLER_REGISTER_DISABLE_RESERVED = 0 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_RESERVED = 1 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS' -GENERIC_AZ_CONTROLLER_REGISTER_STATUS__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET', -} -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET = 0 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET = 1 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED' -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET_RESERVED', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET_RESERVED', -} -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET_RESERVED = 0 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET_RESERVED = 1 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE' -GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE__enumvalues = { - 0: 'ACCEPT_UNSOLICITED_RESPONSE_NOT_ENABLE', - 1: 'ACCEPT_UNSOLICITED_RESPONSE_ENABLE', -} -ACCEPT_UNSOLICITED_RESPONSE_NOT_ENABLE = 0 -ACCEPT_UNSOLICITED_RESPONSE_ENABLE = 1 -GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_CONTROL_CONTROLLER_RESET' -GLOBAL_CONTROL_CONTROLLER_RESET__enumvalues = { - 0: 'CONTROLLER_RESET_AZ_CONTROLLER_IN_RESET', - 1: 'CONTROLLER_RESET_AZ_CONTROLLER_NOT_IN_RESET', -} -CONTROLLER_RESET_AZ_CONTROLLER_IN_RESET = 0 -CONTROLLER_RESET_AZ_CONTROLLER_NOT_IN_RESET = 1 -GLOBAL_CONTROL_CONTROLLER_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_CONTROL_FLUSH_CONTROL' -GLOBAL_CONTROL_FLUSH_CONTROL__enumvalues = { - 0: 'FLUSH_CONTROL_FLUSH_NOT_STARTED', - 1: 'FLUSH_CONTROL_FLUSH_STARTED', -} -FLUSH_CONTROL_FLUSH_NOT_STARTED = 0 -FLUSH_CONTROL_FLUSH_STARTED = 1 -GLOBAL_CONTROL_FLUSH_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_STATUS_FLUSH_STATUS' -GLOBAL_STATUS_FLUSH_STATUS__enumvalues = { - 0: 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_NOT_ENDED', - 1: 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_ENDED', -} -GLOBAL_STATUS_FLUSH_STATUS_FLUSH_NOT_ENDED = 0 -GLOBAL_STATUS_FLUSH_STATUS_FLUSH_ENDED = 1 -GLOBAL_STATUS_FLUSH_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY' -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY__enumvalues = { - 0: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_NOT_BUSY', - 1: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_IS_BUSY', -} -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_NOT_BUSY = 0 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_IS_BUSY = 1 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY = ctypes.c_uint32 # enum - -# values for enumeration 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID' -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID__enumvalues = { - 0: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_NO_IMMEDIATE_RESPONSE_VALID', - 1: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_IMMEDIATE_RESPONSE_VALID', -} -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_NO_IMMEDIATE_RESPONSE_VALID = 0 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_IMMEDIATE_RESPONSE_VALID = 1 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID = ctypes.c_uint32 # enum - -# values for enumeration 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL' -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL__enumvalues = { - 0: 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 1: 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_ENABLED', -} -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_DISABLED = 0 -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_ENABLED = 1 -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL' -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL__enumvalues = { - 0: 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 1: 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_ENABLED', -} -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_DISABLED = 0 -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_ENABLED = 1 -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_0_SYNCHRONIZATION' -STREAM_0_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_0_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_0_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_0_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_0_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_0_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_10_SYNCHRONIZATION' -STREAM_10_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_10_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_10_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_10_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_10_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_10_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_11_SYNCHRONIZATION' -STREAM_11_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_11_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_11_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_11_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_11_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_11_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_12_SYNCHRONIZATION' -STREAM_12_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_12_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_12_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_12_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_12_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_12_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_13_SYNCHRONIZATION' -STREAM_13_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_13_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_13_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_13_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_13_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_13_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_14_SYNCHRONIZATION' -STREAM_14_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_14_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_14_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_14_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_14_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_14_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_15_SYNCHRONIZATION' -STREAM_15_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_15_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_15_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_15_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_15_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_15_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_1_SYNCHRONIZATION' -STREAM_1_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_1_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_1_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_1_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_1_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_1_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_2_SYNCHRONIZATION' -STREAM_2_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_2_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_2_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_2_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_2_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_2_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_3_SYNCHRONIZATION' -STREAM_3_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_3_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_3_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_3_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_3_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_3_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_4_SYNCHRONIZATION' -STREAM_4_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_4_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_4_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_4_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_4_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_4_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_5_SYNCHRONIZATION' -STREAM_5_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_5_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_5_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_5_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_5_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_5_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_6_SYNCHRONIZATION' -STREAM_6_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_6_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_6_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_6_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_6_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_6_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_7_SYNCHRONIZATION' -STREAM_7_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_7_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_7_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_7_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_7_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_7_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_8_SYNCHRONIZATION' -STREAM_8_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_8_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_8_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_8_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_8_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_8_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_9_SYNCHRONIZATION' -STREAM_9_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_9_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_9_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_9_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_9_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_9_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 5: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16 = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20 = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24 = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED = 5 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 5: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 6: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 7: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 8: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1 = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2 = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3 = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4 = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5 = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6 = 5 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7 = 6 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8 = 7 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED = 8 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 5: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 6: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 7: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1 = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3 = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED = 5 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED = 6 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED = 7 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1 = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2 = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4 = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_NOT_ENABLE', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_ENABLE', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_NOT_ENABLE = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_ENABLE = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_IS_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_NOT_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_IS_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_NOT_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ZERO', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ONE', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ZERO = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ONE = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_NOT_ON', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_ON', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_NOT_ON = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_ON = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE' -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_0', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_1', - 2: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_2', - 3: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_3', - 4: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_4', - 5: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_5', - 6: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_6', - 7: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_7', - 8: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_8', - 9: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_9', - 10: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_10', - 11: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_11', - 12: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_12', - 13: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_13', - 14: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_14', - 15: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_15', -} -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_0 = 0 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_1 = 1 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_2 = 2 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_3 = 3 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_4 = 4 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_5 = 5 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_6 = 6 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_7 = 7 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_8 = 8 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_9 = 9 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_10 = 10 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_11 = 11 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_12 = 12 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_13 = 13 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_14 = 14 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_15 = 15 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT' -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_NO_INFO_OR_PERMITTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_FORBIDDEN', -} -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_NO_INFO_OR_PERMITTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_FORBIDDEN = 1 -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE' -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', -} -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE' -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_SHUT_OFF', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_DRIVEN', -} -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_SHUT_OFF = 0 -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_DRIVEN = 1 -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET' -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET__enumvalues = { - 0: 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_NOT_RESET', - 1: 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_RESET_REFCLK_LOGIC', -} -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_NOT_RESET = 0 -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_RESET_REFCLK_LOGIC = 1 -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_DIS_CTRL' -MEM_PWR_DIS_CTRL__enumvalues = { - 0: 'ENABLE_MEM_PWR_CTRL', - 1: 'DISABLE_MEM_PWR_CTRL', -} -ENABLE_MEM_PWR_CTRL = 0 -DISABLE_MEM_PWR_CTRL = 1 -MEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_FORCE_CTRL' -MEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'NO_FORCE_REQUEST', - 1: 'FORCE_LIGHT_SLEEP_REQUEST', - 2: 'FORCE_DEEP_SLEEP_REQUEST', - 3: 'FORCE_SHUT_DOWN_REQUEST', -} -NO_FORCE_REQUEST = 0 -FORCE_LIGHT_SLEEP_REQUEST = 1 -FORCE_DEEP_SLEEP_REQUEST = 2 -FORCE_SHUT_DOWN_REQUEST = 3 -MEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_FORCE_CTRL2' -MEM_PWR_FORCE_CTRL2__enumvalues = { - 0: 'NO_FORCE_REQ', - 1: 'FORCE_LIGHT_SLEEP_REQ', -} -NO_FORCE_REQ = 0 -FORCE_LIGHT_SLEEP_REQ = 1 -MEM_PWR_FORCE_CTRL2 = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_SEL_CTRL' -MEM_PWR_SEL_CTRL__enumvalues = { - 0: 'DYNAMIC_SHUT_DOWN_ENABLE', - 1: 'DYNAMIC_DEEP_SLEEP_ENABLE', - 2: 'DYNAMIC_LIGHT_SLEEP_ENABLE', -} -DYNAMIC_SHUT_DOWN_ENABLE = 0 -DYNAMIC_DEEP_SLEEP_ENABLE = 1 -DYNAMIC_LIGHT_SLEEP_ENABLE = 2 -MEM_PWR_SEL_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_SEL_CTRL2' -MEM_PWR_SEL_CTRL2__enumvalues = { - 0: 'DYNAMIC_DEEP_SLEEP_EN', - 1: 'DYNAMIC_LIGHT_SLEEP_EN', -} -DYNAMIC_DEEP_SLEEP_EN = 0 -DYNAMIC_LIGHT_SLEEP_EN = 1 -MEM_PWR_SEL_CTRL2 = ctypes.c_uint32 # enum - -# values for enumeration 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY' -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY__enumvalues = { - 0: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_ALL', - 1: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_6', - 2: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_5', - 3: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_4', - 4: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_3', - 5: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_2', - 6: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_1', - 7: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_0', -} -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_ALL = 0 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_6 = 1 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_5 = 2 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_4 = 3 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_3 = 4 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_2 = 5 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_1 = 6 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_0 = 7 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY = ctypes.c_uint32 # enum - -# values for enumeration 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY' -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY__enumvalues = { - 0: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_ALL', - 1: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_6', - 2: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_5', - 3: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_4', - 4: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_3', - 5: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_2', - 6: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_1', - 7: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_0', -} -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_ALL = 0 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_6 = 1 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_5 = 2 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_4 = 3 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_3 = 4 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_2 = 5 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_1 = 6 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_0 = 7 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 5: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16 = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20 = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24 = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED = 5 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 5: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 6: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 7: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 8: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1 = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2 = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3 = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4 = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5 = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6 = 5 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7 = 6 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8 = 7 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED = 8 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 5: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 6: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 7: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1 = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3 = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED = 5 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED = 6 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED = 7 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1 = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2 = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4 = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_SHUT_OFF', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_DRIVEN', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_SHUT_OFF = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_DRIVEN = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET' -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET__enumvalues = { - 0: 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_NOT_RESET', - 1: 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_DO_RESET', -} -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_NOT_RESET = 0 -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_DO_RESET = 1 -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_LATENCY_COUNTER_CONTROL' -AZ_LATENCY_COUNTER_CONTROL__enumvalues = { - 0: 'AZ_LATENCY_COUNTER_NO_RESET', - 1: 'AZ_LATENCY_COUNTER_RESET_DONE', -} -AZ_LATENCY_COUNTER_NO_RESET = 0 -AZ_LATENCY_COUNTER_RESET_DONE = 1 -AZ_LATENCY_COUNTER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_NOT_SET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_SET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_NOT_SET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_SET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_NOT_SET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_SET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_NOT_SET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_SET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_DISABLED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLED', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_DISABLED = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLED = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_NOT_SET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_SET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_NOT_SET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_SET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_DISABLED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLED', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_DISABLED = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLED = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_DISABLED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_ENABLED', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_DISABLED = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_ENABLED = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RESET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_IS_RESET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RESET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_IS_RESET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RUN', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_DO_RUN', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RUN = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_DO_RUN = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_NO_TRAFFIC_PRIORITY', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_YES_TRAFFIC_PRIORITY', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_NO_TRAFFIC_PRIORITY = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_YES_TRAFFIC_PRIORITY = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_16', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_20', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_24', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 5: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_8_RESERVED = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_16 = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_20 = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_24 = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_32_RESERVED = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_RESERVED = 5 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_1', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_2', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_3', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_4', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_5', - 5: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_6', - 6: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_7', - 7: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_8', - 8: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_9_RESERVED', - 9: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_10_RESERVED', - 10: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_11_RESERVED', - 11: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_12_RESERVED', - 12: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_13_RESERVED', - 13: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_14_RESERVED', - 14: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_15_RESERVED', - 15: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_16_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_1 = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_2 = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_3 = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_4 = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_5 = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_6 = 5 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_7 = 6 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_8 = 7 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_9_RESERVED = 8 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_10_RESERVED = 9 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_11_RESERVED = 10 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_12_RESERVED = 11 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_13_RESERVED = 12 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_14_RESERVED = 13 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_15_RESERVED = 14 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_16_RESERVED = 15 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 5: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 6: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 7: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY1 = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY3 = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED = 5 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED = 6 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED = 7 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY1 = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY2 = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY4 = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_48KHZ = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_44P1KHZ = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_FORMAT_OVERRIDE', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_FORMAT_OVERRIDE = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 9: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED = 8 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE' -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 1: 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', -} -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE = 0 -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE = 1 -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE' -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABLILITY', - 1: 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABLILITY', -} -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABLILITY = 0 -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABLILITY = 1 -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER_PRESENT', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER_PRESENT = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 9: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED = 8 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_NOT_BALANCED', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_NOT_BALANCED = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_EAPD_PIN', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_EAPD_PIN', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_EAPD_PIN = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_EAPD_PIN = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_JACK_DETECTION_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_DETECTION_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_JACK_DETECTION_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_DETECTION_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_DIGITAL', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_ANALOG = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_DIGITAL = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_FORMAT_OVERRIDE', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_FORMAT_OVERRIDE = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_NO_PROCESSING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_PROCESSING_CAPABILITIES', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_NO_PROCESSING_CAPABILITIES = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_PROCESSING_CAPABILITIES = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NOT_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NOT_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 9: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED = 8 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESING_CAPABILITIES', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESING_CAPABILITIES = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESING_CAPABILITIES = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 9: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED = 8 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_NOT_BALANCED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_NOT_BALANCED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_NOT_ENABLED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_ENABLED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_NOT_ENABLED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_ENABLED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_NO_EAPD_PIN', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_HAVE_EAPD_PIN', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_NO_EAPD_PIN = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_HAVE_EAPD_PIN = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_NOT_ENABLED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_ENABLED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_NOT_ENABLED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_ENABLED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_JACK_PRESENCE_DETECTION_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_PRESENCE_DETECTION_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_JACK_PRESENCE_DETECTION_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_PRESENCE_DETECTION_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_BITS_PER_COMPONENT_ENUM' -DSCC_BITS_PER_COMPONENT_ENUM__enumvalues = { - 8: 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT', - 10: 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT', - 12: 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT', -} -DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT = 8 -DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT = 10 -DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT = 12 -DSCC_BITS_PER_COMPONENT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_DSC_VERSION_MAJOR_ENUM' -DSCC_DSC_VERSION_MAJOR_ENUM__enumvalues = { - 1: 'DSCC_DSC_VERSION_MAJOR_ENUM_DSC_1_X_MAJOR_VERSION', -} -DSCC_DSC_VERSION_MAJOR_ENUM_DSC_1_X_MAJOR_VERSION = 1 -DSCC_DSC_VERSION_MAJOR_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_DSC_VERSION_MINOR_ENUM' -DSCC_DSC_VERSION_MINOR_ENUM__enumvalues = { - 1: 'DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_1_MINOR_VERSION', - 2: 'DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_2_MINOR_VERSION', -} -DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_1_MINOR_VERSION = 1 -DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_2_MINOR_VERSION = 2 -DSCC_DSC_VERSION_MINOR_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_ENABLE_ENUM' -DSCC_ENABLE_ENUM__enumvalues = { - 0: 'DSCC_ENABLE_ENUM_DISABLED', - 1: 'DSCC_ENABLE_ENUM_ENABLED', -} -DSCC_ENABLE_ENUM_DISABLED = 0 -DSCC_ENABLE_ENUM_ENABLED = 1 -DSCC_ENABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_ICH_RESET_ENUM' -DSCC_ICH_RESET_ENUM__enumvalues = { - 1: 'DSCC_ICH_RESET_ENUM_SLICE0_ICH_RESET', - 2: 'DSCC_ICH_RESET_ENUM_SLICE1_ICH_RESET', - 4: 'DSCC_ICH_RESET_ENUM_SLICE2_ICH_RESET', - 8: 'DSCC_ICH_RESET_ENUM_SLICE3_ICH_RESET', -} -DSCC_ICH_RESET_ENUM_SLICE0_ICH_RESET = 1 -DSCC_ICH_RESET_ENUM_SLICE1_ICH_RESET = 2 -DSCC_ICH_RESET_ENUM_SLICE2_ICH_RESET = 4 -DSCC_ICH_RESET_ENUM_SLICE3_ICH_RESET = 8 -DSCC_ICH_RESET_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_LINEBUF_DEPTH_ENUM' -DSCC_LINEBUF_DEPTH_ENUM__enumvalues = { - 8: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_8_BIT', - 9: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_9_BIT', - 10: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_10_BIT', - 11: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_11_BIT', - 12: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_12_BIT', - 13: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_13_BIT', -} -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_8_BIT = 8 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_9_BIT = 9 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_10_BIT = 10 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_11_BIT = 11 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_12_BIT = 12 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_13_BIT = 13 -DSCC_LINEBUF_DEPTH_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_MEM_PWR_DIS_ENUM' -DSCC_MEM_PWR_DIS_ENUM__enumvalues = { - 0: 'DSCC_MEM_PWR_DIS_ENUM_REQUEST_EN', - 1: 'DSCC_MEM_PWR_DIS_ENUM_REQUEST_DIS', -} -DSCC_MEM_PWR_DIS_ENUM_REQUEST_EN = 0 -DSCC_MEM_PWR_DIS_ENUM_REQUEST_DIS = 1 -DSCC_MEM_PWR_DIS_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_MEM_PWR_FORCE_ENUM' -DSCC_MEM_PWR_FORCE_ENUM__enumvalues = { - 0: 'DSCC_MEM_PWR_FORCE_ENUM_NO_FORCE_REQUEST', - 1: 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_SHUT_DOWN_REQUEST', -} -DSCC_MEM_PWR_FORCE_ENUM_NO_FORCE_REQUEST = 0 -DSCC_MEM_PWR_FORCE_ENUM_FORCE_LIGHT_SLEEP_REQUEST = 1 -DSCC_MEM_PWR_FORCE_ENUM_FORCE_DEEP_SLEEP_REQUEST = 2 -DSCC_MEM_PWR_FORCE_ENUM_FORCE_SHUT_DOWN_REQUEST = 3 -DSCC_MEM_PWR_FORCE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'POWER_STATE_ENUM' -POWER_STATE_ENUM__enumvalues = { - 0: 'POWER_STATE_ENUM_ON', - 1: 'POWER_STATE_ENUM_LS', - 2: 'POWER_STATE_ENUM_DS', - 3: 'POWER_STATE_ENUM_SD', -} -POWER_STATE_ENUM_ON = 0 -POWER_STATE_ENUM_LS = 1 -POWER_STATE_ENUM_DS = 2 -POWER_STATE_ENUM_SD = 3 -POWER_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCCIF_BITS_PER_COMPONENT_ENUM' -DSCCIF_BITS_PER_COMPONENT_ENUM__enumvalues = { - 8: 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT', - 10: 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT', - 12: 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT', -} -DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT = 8 -DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT = 10 -DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT = 12 -DSCCIF_BITS_PER_COMPONENT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCCIF_ENABLE_ENUM' -DSCCIF_ENABLE_ENUM__enumvalues = { - 0: 'DSCCIF_ENABLE_ENUM_DISABLED', - 1: 'DSCCIF_ENABLE_ENUM_ENABLED', -} -DSCCIF_ENABLE_ENUM_DISABLED = 0 -DSCCIF_ENABLE_ENUM_ENABLED = 1 -DSCCIF_ENABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM' -DSCCIF_INPUT_PIXEL_FORMAT_ENUM__enumvalues = { - 0: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_RGB', - 1: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_YCBCR_444', - 2: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_SIMPLE_YCBCR_422', - 3: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_422', - 4: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_420', -} -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_RGB = 0 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_YCBCR_444 = 1 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_SIMPLE_YCBCR_422 = 2 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_422 = 3 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_420 = 4 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CLOCK_GATING_DISABLE_ENUM' -CLOCK_GATING_DISABLE_ENUM__enumvalues = { - 0: 'CLOCK_GATING_DISABLE_ENUM_ENABLED', - 1: 'CLOCK_GATING_DISABLE_ENUM_DISABLED', -} -CLOCK_GATING_DISABLE_ENUM_ENABLED = 0 -CLOCK_GATING_DISABLE_ENUM_DISABLED = 1 -CLOCK_GATING_DISABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'ENABLE_ENUM' -ENABLE_ENUM__enumvalues = { - 0: 'ENABLE_ENUM_DISABLED', - 1: 'ENABLE_ENUM_ENABLED', -} -ENABLE_ENUM_DISABLED = 0 -ENABLE_ENUM_ENABLED = 1 -ENABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'TEST_CLOCK_MUX_SELECT_ENUM' -TEST_CLOCK_MUX_SELECT_ENUM__enumvalues = { - 0: 'TEST_CLOCK_MUX_SELECT_DISPCLK_P', - 1: 'TEST_CLOCK_MUX_SELECT_DISPCLK_G', - 2: 'TEST_CLOCK_MUX_SELECT_DISPCLK_R', - 3: 'TEST_CLOCK_MUX_SELECT_DSCCLK_P', - 4: 'TEST_CLOCK_MUX_SELECT_DSCCLK_G', - 5: 'TEST_CLOCK_MUX_SELECT_DSCCLK_R', - 6: 'TEST_CLOCK_MUX_SELECT_DSCCLK_D', -} -TEST_CLOCK_MUX_SELECT_DISPCLK_P = 0 -TEST_CLOCK_MUX_SELECT_DISPCLK_G = 1 -TEST_CLOCK_MUX_SELECT_DISPCLK_R = 2 -TEST_CLOCK_MUX_SELECT_DSCCLK_P = 3 -TEST_CLOCK_MUX_SELECT_DSCCLK_G = 4 -TEST_CLOCK_MUX_SELECT_DSCCLK_R = 5 -TEST_CLOCK_MUX_SELECT_DSCCLK_D = 6 -TEST_CLOCK_MUX_SELECT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_CRC_CONT_EN_ENUM' -DWB_CRC_CONT_EN_ENUM__enumvalues = { - 0: 'DWB_CRC_CONT_EN_ONE_SHOT', - 1: 'DWB_CRC_CONT_EN_CONT', -} -DWB_CRC_CONT_EN_ONE_SHOT = 0 -DWB_CRC_CONT_EN_CONT = 1 -DWB_CRC_CONT_EN_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_CRC_SRC_SEL_ENUM' -DWB_CRC_SRC_SEL_ENUM__enumvalues = { - 0: 'DWB_CRC_SRC_SEL_DWB_IN', - 1: 'DWB_CRC_SRC_SEL_OGAM_OUT', - 2: 'DWB_CRC_SRC_SEL_DWB_OUT', -} -DWB_CRC_SRC_SEL_DWB_IN = 0 -DWB_CRC_SRC_SEL_OGAM_OUT = 1 -DWB_CRC_SRC_SEL_DWB_OUT = 2 -DWB_CRC_SRC_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_DATA_OVERFLOW_INT_TYPE_ENUM' -DWB_DATA_OVERFLOW_INT_TYPE_ENUM__enumvalues = { - 0: 'DWB_DATA_OVERFLOW_INT_TYPE_0', - 1: 'DWB_DATA_OVERFLOW_INT_TYPE_1', -} -DWB_DATA_OVERFLOW_INT_TYPE_0 = 0 -DWB_DATA_OVERFLOW_INT_TYPE_1 = 1 -DWB_DATA_OVERFLOW_INT_TYPE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_DATA_OVERFLOW_TYPE_ENUM' -DWB_DATA_OVERFLOW_TYPE_ENUM__enumvalues = { - 0: 'DWB_DATA_OVERFLOW_TYPE_NO_OVERFLOW', - 1: 'DWB_DATA_OVERFLOW_TYPE_BUFFER', - 2: 'DWB_DATA_OVERFLOW_TYPE_VUPDATE', - 3: 'DWB_DATA_OVERFLOW_TYPE_VREADY', -} -DWB_DATA_OVERFLOW_TYPE_NO_OVERFLOW = 0 -DWB_DATA_OVERFLOW_TYPE_BUFFER = 1 -DWB_DATA_OVERFLOW_TYPE_VUPDATE = 2 -DWB_DATA_OVERFLOW_TYPE_VREADY = 3 -DWB_DATA_OVERFLOW_TYPE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_DEBUG_SEL_ENUM' -DWB_DEBUG_SEL_ENUM__enumvalues = { - 0: 'DWB_DEBUG_SEL_FC', - 1: 'DWB_DEBUG_SEL_RESERVED', - 2: 'DWB_DEBUG_SEL_DWBCP', - 3: 'DWB_DEBUG_SEL_PERFMON', -} -DWB_DEBUG_SEL_FC = 0 -DWB_DEBUG_SEL_RESERVED = 1 -DWB_DEBUG_SEL_DWBCP = 2 -DWB_DEBUG_SEL_PERFMON = 3 -DWB_DEBUG_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_MEM_PWR_FORCE_ENUM' -DWB_MEM_PWR_FORCE_ENUM__enumvalues = { - 0: 'DWB_MEM_PWR_FORCE_DIS', - 1: 'DWB_MEM_PWR_FORCE_LS', - 2: 'DWB_MEM_PWR_FORCE_DS', - 3: 'DWB_MEM_PWR_FORCE_SD', -} -DWB_MEM_PWR_FORCE_DIS = 0 -DWB_MEM_PWR_FORCE_LS = 1 -DWB_MEM_PWR_FORCE_DS = 2 -DWB_MEM_PWR_FORCE_SD = 3 -DWB_MEM_PWR_FORCE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_MEM_PWR_STATE_ENUM' -DWB_MEM_PWR_STATE_ENUM__enumvalues = { - 0: 'DWB_MEM_PWR_STATE_ON', - 1: 'DWB_MEM_PWR_STATE_LS', - 2: 'DWB_MEM_PWR_STATE_DS', - 3: 'DWB_MEM_PWR_STATE_SD', -} -DWB_MEM_PWR_STATE_ON = 0 -DWB_MEM_PWR_STATE_LS = 1 -DWB_MEM_PWR_STATE_DS = 2 -DWB_MEM_PWR_STATE_SD = 3 -DWB_MEM_PWR_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_TEST_CLK_SEL_ENUM' -DWB_TEST_CLK_SEL_ENUM__enumvalues = { - 0: 'DWB_TEST_CLK_SEL_R', - 1: 'DWB_TEST_CLK_SEL_G', - 2: 'DWB_TEST_CLK_SEL_P', -} -DWB_TEST_CLK_SEL_R = 0 -DWB_TEST_CLK_SEL_G = 1 -DWB_TEST_CLK_SEL_P = 2 -DWB_TEST_CLK_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'FC_EYE_SELECTION_ENUM' -FC_EYE_SELECTION_ENUM__enumvalues = { - 0: 'FC_EYE_SELECTION_STEREO_DIS', - 1: 'FC_EYE_SELECTION_LEFT_EYE', - 2: 'FC_EYE_SELECTION_RIGHT_EYE', -} -FC_EYE_SELECTION_STEREO_DIS = 0 -FC_EYE_SELECTION_LEFT_EYE = 1 -FC_EYE_SELECTION_RIGHT_EYE = 2 -FC_EYE_SELECTION_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'FC_FRAME_CAPTURE_RATE_ENUM' -FC_FRAME_CAPTURE_RATE_ENUM__enumvalues = { - 0: 'FC_FRAME_CAPTURE_RATE_FULL', - 1: 'FC_FRAME_CAPTURE_RATE_HALF', - 2: 'FC_FRAME_CAPTURE_RATE_THIRD', - 3: 'FC_FRAME_CAPTURE_RATE_QUARTER', -} -FC_FRAME_CAPTURE_RATE_FULL = 0 -FC_FRAME_CAPTURE_RATE_HALF = 1 -FC_FRAME_CAPTURE_RATE_THIRD = 2 -FC_FRAME_CAPTURE_RATE_QUARTER = 3 -FC_FRAME_CAPTURE_RATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'FC_STEREO_EYE_POLARITY_ENUM' -FC_STEREO_EYE_POLARITY_ENUM__enumvalues = { - 0: 'FC_STEREO_EYE_POLARITY_LEFT', - 1: 'FC_STEREO_EYE_POLARITY_RIGHT', -} -FC_STEREO_EYE_POLARITY_LEFT = 0 -FC_STEREO_EYE_POLARITY_RIGHT = 1 -FC_STEREO_EYE_POLARITY_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_GAMUT_REMAP_COEF_FORMAT_ENUM' -DWB_GAMUT_REMAP_COEF_FORMAT_ENUM__enumvalues = { - 0: 'DWB_GAMUT_REMAP_COEF_FORMAT_S2_13', - 1: 'DWB_GAMUT_REMAP_COEF_FORMAT_S3_12', -} -DWB_GAMUT_REMAP_COEF_FORMAT_S2_13 = 0 -DWB_GAMUT_REMAP_COEF_FORMAT_S3_12 = 1 -DWB_GAMUT_REMAP_COEF_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_GAMUT_REMAP_MODE_ENUM' -DWB_GAMUT_REMAP_MODE_ENUM__enumvalues = { - 0: 'DWB_GAMUT_REMAP_MODE_BYPASS', - 1: 'DWB_GAMUT_REMAP_MODE_COEF_A', - 2: 'DWB_GAMUT_REMAP_MODE_COEF_B', - 3: 'DWB_GAMUT_REMAP_MODE_RESERVED', -} -DWB_GAMUT_REMAP_MODE_BYPASS = 0 -DWB_GAMUT_REMAP_MODE_COEF_A = 1 -DWB_GAMUT_REMAP_MODE_COEF_B = 2 -DWB_GAMUT_REMAP_MODE_RESERVED = 3 -DWB_GAMUT_REMAP_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_LUT_NUM_SEG' -DWB_LUT_NUM_SEG__enumvalues = { - 0: 'DWB_SEGMENTS_1', - 1: 'DWB_SEGMENTS_2', - 2: 'DWB_SEGMENTS_4', - 3: 'DWB_SEGMENTS_8', - 4: 'DWB_SEGMENTS_16', - 5: 'DWB_SEGMENTS_32', - 6: 'DWB_SEGMENTS_64', - 7: 'DWB_SEGMENTS_128', -} -DWB_SEGMENTS_1 = 0 -DWB_SEGMENTS_2 = 1 -DWB_SEGMENTS_4 = 2 -DWB_SEGMENTS_8 = 3 -DWB_SEGMENTS_16 = 4 -DWB_SEGMENTS_32 = 5 -DWB_SEGMENTS_64 = 6 -DWB_SEGMENTS_128 = 7 -DWB_LUT_NUM_SEG = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_LUT_CONFIG_MODE_ENUM' -DWB_OGAM_LUT_CONFIG_MODE_ENUM__enumvalues = { - 0: 'DWB_OGAM_LUT_CONFIG_MODE_DIFF', - 1: 'DWB_OGAM_LUT_CONFIG_MODE_SAME', -} -DWB_OGAM_LUT_CONFIG_MODE_DIFF = 0 -DWB_OGAM_LUT_CONFIG_MODE_SAME = 1 -DWB_OGAM_LUT_CONFIG_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_LUT_HOST_SEL_ENUM' -DWB_OGAM_LUT_HOST_SEL_ENUM__enumvalues = { - 0: 'DWB_OGAM_LUT_HOST_SEL_RAMA', - 1: 'DWB_OGAM_LUT_HOST_SEL_RAMB', -} -DWB_OGAM_LUT_HOST_SEL_RAMA = 0 -DWB_OGAM_LUT_HOST_SEL_RAMB = 1 -DWB_OGAM_LUT_HOST_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_LUT_READ_COLOR_SEL_ENUM' -DWB_OGAM_LUT_READ_COLOR_SEL_ENUM__enumvalues = { - 0: 'DWB_OGAM_LUT_READ_COLOR_SEL_B', - 1: 'DWB_OGAM_LUT_READ_COLOR_SEL_G', - 2: 'DWB_OGAM_LUT_READ_COLOR_SEL_R', - 3: 'DWB_OGAM_LUT_READ_COLOR_SEL_RESERVED', -} -DWB_OGAM_LUT_READ_COLOR_SEL_B = 0 -DWB_OGAM_LUT_READ_COLOR_SEL_G = 1 -DWB_OGAM_LUT_READ_COLOR_SEL_R = 2 -DWB_OGAM_LUT_READ_COLOR_SEL_RESERVED = 3 -DWB_OGAM_LUT_READ_COLOR_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_LUT_READ_DBG_ENUM' -DWB_OGAM_LUT_READ_DBG_ENUM__enumvalues = { - 0: 'DWB_OGAM_LUT_READ_DBG_DISABLE', - 1: 'DWB_OGAM_LUT_READ_DBG_ENABLE', -} -DWB_OGAM_LUT_READ_DBG_DISABLE = 0 -DWB_OGAM_LUT_READ_DBG_ENABLE = 1 -DWB_OGAM_LUT_READ_DBG_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_MODE_ENUM' -DWB_OGAM_MODE_ENUM__enumvalues = { - 0: 'DWB_OGAM_MODE_BYPASS', - 1: 'DWB_OGAM_MODE_RESERVED', - 2: 'DWB_OGAM_MODE_RAM_LUT_ENABLED', -} -DWB_OGAM_MODE_BYPASS = 0 -DWB_OGAM_MODE_RESERVED = 1 -DWB_OGAM_MODE_RAM_LUT_ENABLED = 2 -DWB_OGAM_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_PWL_DISABLE_ENUM' -DWB_OGAM_PWL_DISABLE_ENUM__enumvalues = { - 0: 'DWB_OGAM_PWL_DISABLE_FALSE', - 1: 'DWB_OGAM_PWL_DISABLE_TRUE', -} -DWB_OGAM_PWL_DISABLE_FALSE = 0 -DWB_OGAM_PWL_DISABLE_TRUE = 1 -DWB_OGAM_PWL_DISABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_SELECT_ENUM' -DWB_OGAM_SELECT_ENUM__enumvalues = { - 0: 'DWB_OGAM_SELECT_A', - 1: 'DWB_OGAM_SELECT_B', -} -DWB_OGAM_SELECT_A = 0 -DWB_OGAM_SELECT_B = 1 -DWB_OGAM_SELECT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_EXT_REFCLK_EN' -RDPCSTX_CLOCK_CNTL_RDPCS_EXT_REFCLK_EN__enumvalues = { - 0: 'RDPCS_EXT_REFCLK_DISABLE', - 1: 'RDPCS_EXT_REFCLK_ENABLE', -} -RDPCS_EXT_REFCLK_DISABLE = 0 -RDPCS_EXT_REFCLK_ENABLE = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_EXT_REFCLK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_OCLACLK_CLOCK_ON' -RDPCSTX_CLOCK_CNTL_RDPCS_OCLACLK_CLOCK_ON__enumvalues = { - 0: 'RDPCS_OCLACLK_CLOCK_OFF', - 1: 'RDPCS_OCLACLK_CLOCK_ON', -} -RDPCS_OCLACLK_CLOCK_OFF = 0 -RDPCS_OCLACLK_CLOCK_ON = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_OCLACLK_CLOCK_ON = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_OCLACLK_EN' -RDPCSTX_CLOCK_CNTL_RDPCS_OCLACLK_EN__enumvalues = { - 0: 'RDPCS_OCLACLK_DISABLE', - 1: 'RDPCS_OCLACLK_ENABLE', -} -RDPCS_OCLACLK_DISABLE = 0 -RDPCS_OCLACLK_ENABLE = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_OCLACLK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_OCLACLK_GATE_DIS' -RDPCSTX_CLOCK_CNTL_RDPCS_OCLACLK_GATE_DIS__enumvalues = { - 0: 'RDPCS_OCLACLK_GATE_ENABLE', - 1: 'RDPCS_OCLACLK_GATE_DISABLE', -} -RDPCS_OCLACLK_GATE_ENABLE = 0 -RDPCS_OCLACLK_GATE_DISABLE = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_OCLACLK_GATE_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_CLOCK_ON' -RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_CLOCK_ON__enumvalues = { - 0: 'RDPCS_SYMCLK_SRAMCLK_CLOCK_OFF', - 1: 'RDPCS_SYMCLK_SRAMCLK_CLOCK_ON', -} -RDPCS_SYMCLK_SRAMCLK_CLOCK_OFF = 0 -RDPCS_SYMCLK_SRAMCLK_CLOCK_ON = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_CLOCK_ON = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_EN' -RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_EN__enumvalues = { - 0: 'RDPCS_SRAMCLK_DISABLE', - 1: 'RDPCS_SRAMCLK_ENABLE', -} -RDPCS_SRAMCLK_DISABLE = 0 -RDPCS_SRAMCLK_ENABLE = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_GATE_DIS' -RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_GATE_DIS__enumvalues = { - 0: 'RDPCS_SRAMCLK_GATE_ENABLE', - 1: 'RDPCS_SRAMCLK_GATE_DISABLE', -} -RDPCS_SRAMCLK_GATE_ENABLE = 0 -RDPCS_SRAMCLK_GATE_DISABLE = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_GATE_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_PASS' -RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_PASS__enumvalues = { - 0: 'RDPCS_SRAMCLK_NOT_PASS', - 1: 'RDPCS_SRAMCLK_PASS', -} -RDPCS_SRAMCLK_NOT_PASS = 0 -RDPCS_SRAMCLK_PASS = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_PASS = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_TX_CLK_CLOCK_ON' -RDPCSTX_CLOCK_CNTL_RDPCS_TX_CLK_CLOCK_ON__enumvalues = { - 0: 'RDPCS_TX_CLK_CLOCK_OFF', - 1: 'RDPCS_TX_CLK_CLOCK_ON', -} -RDPCS_TX_CLK_CLOCK_OFF = 0 -RDPCS_TX_CLK_CLOCK_ON = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_TX_CLK_CLOCK_ON = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_TX_CLK_EN' -RDPCSTX_CLOCK_CNTL_RDPCS_TX_CLK_EN__enumvalues = { - 0: 'RDPCS_TX_CLK_DISABLE', - 1: 'RDPCS_TX_CLK_ENABLE', -} -RDPCS_TX_CLK_DISABLE = 0 -RDPCS_TX_CLK_ENABLE = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_TX_CLK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_RDPCS_TX_CLK_GATE_DIS' -RDPCSTX_CLOCK_CNTL_RDPCS_TX_CLK_GATE_DIS__enumvalues = { - 0: 'RDPCS_TX_CLK_GATE_ENABLE', - 1: 'RDPCS_TX_CLK_GATE_DISABLE', -} -RDPCS_TX_CLK_GATE_ENABLE = 0 -RDPCS_TX_CLK_GATE_DISABLE = 1 -RDPCSTX_CLOCK_CNTL_RDPCS_TX_CLK_GATE_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CLOCK_CNTL_TX_CLK_EN' -RDPCSTX_CLOCK_CNTL_TX_CLK_EN__enumvalues = { - 0: 'RDPCS_EXT_REFCLK_EN_DISABLE', - 1: 'RDPCS_EXT_REFCLK_EN_ENABLE', -} -RDPCS_EXT_REFCLK_EN_DISABLE = 0 -RDPCS_EXT_REFCLK_EN_ENABLE = 1 -RDPCSTX_CLOCK_CNTL_TX_CLK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CNTL_RDPCS_CBUS_SOFT_RESET' -RDPCSTX_CNTL_RDPCS_CBUS_SOFT_RESET__enumvalues = { - 0: 'RDPCS_CBUS_SOFT_RESET_DISABLE', - 1: 'RDPCS_CBUS_SOFT_RESET_ENABLE', -} -RDPCS_CBUS_SOFT_RESET_DISABLE = 0 -RDPCS_CBUS_SOFT_RESET_ENABLE = 1 -RDPCSTX_CNTL_RDPCS_CBUS_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CNTL_RDPCS_SRAM_SOFT_RESET' -RDPCSTX_CNTL_RDPCS_SRAM_SOFT_RESET__enumvalues = { - 0: 'RDPCS_SRAM_SRAM_RESET_DISABLE', - 1: 'RDPCS_SRAM_SRAM_RESET_ENABLE', -} -RDPCS_SRAM_SRAM_RESET_DISABLE = 0 -RDPCS_SRAM_SRAM_RESET_ENABLE = 1 -RDPCSTX_CNTL_RDPCS_SRAM_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CNTL_RDPCS_TX_FIFO_EN' -RDPCSTX_CNTL_RDPCS_TX_FIFO_EN__enumvalues = { - 0: 'RDPCS_TX_FIFO_DISABLE', - 1: 'RDPCS_TX_FIFO_ENABLE', -} -RDPCS_TX_FIFO_DISABLE = 0 -RDPCS_TX_FIFO_ENABLE = 1 -RDPCSTX_CNTL_RDPCS_TX_FIFO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CNTL_RDPCS_TX_FIFO_LANE_EN' -RDPCSTX_CNTL_RDPCS_TX_FIFO_LANE_EN__enumvalues = { - 0: 'RDPCS_TX_FIFO_LANE_DISABLE', - 1: 'RDPCS_TX_FIFO_LANE_ENABLE', -} -RDPCS_TX_FIFO_LANE_DISABLE = 0 -RDPCS_TX_FIFO_LANE_ENABLE = 1 -RDPCSTX_CNTL_RDPCS_TX_FIFO_LANE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_CNTL_RDPCS_TX_SOFT_RESET' -RDPCSTX_CNTL_RDPCS_TX_SOFT_RESET__enumvalues = { - 0: 'RDPCS_TX_SOFT_RESET_DISABLE', - 1: 'RDPCS_TX_SOFT_RESET_ENABLE', -} -RDPCS_TX_SOFT_RESET_DISABLE = 0 -RDPCS_TX_SOFT_RESET_ENABLE = 1 -RDPCSTX_CNTL_RDPCS_TX_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_FIFO_EMPTY' -RDPCSTX_FIFO_EMPTY__enumvalues = { - 0: 'RDPCSTX_FIFO_NOT_EMPTY', - 1: 'RDPCSTX_FIFO_IS_EMPTY', -} -RDPCSTX_FIFO_NOT_EMPTY = 0 -RDPCSTX_FIFO_IS_EMPTY = 1 -RDPCSTX_FIFO_EMPTY = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_FIFO_FULL' -RDPCSTX_FIFO_FULL__enumvalues = { - 0: 'RDPCSTX_FIFO_NOT_FULL', - 1: 'RDPCSTX_FIFO_IS_FULL', -} -RDPCSTX_FIFO_NOT_FULL = 0 -RDPCSTX_FIFO_IS_FULL = 1 -RDPCSTX_FIFO_FULL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE' -RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE__enumvalues = { - 0: 'RDPCS_DPALT_4LANE_TOGGLE_2LANE', - 1: 'RDPCS_DPALT_4LANE_TOGGLE_4LANE', -} -RDPCS_DPALT_4LANE_TOGGLE_2LANE = 0 -RDPCS_DPALT_4LANE_TOGGLE_4LANE = 1 -RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE_MASK' -RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE_MASK__enumvalues = { - 0: 'RDPCS_DPALT_4LANE_TOGGLE_MASK_DISABLE', - 1: 'RDPCS_DPALT_4LANE_TOGGLE_MASK_ENABLE', -} -RDPCS_DPALT_4LANE_TOGGLE_MASK_DISABLE = 0 -RDPCS_DPALT_4LANE_TOGGLE_MASK_ENABLE = 1 -RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE' -RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE__enumvalues = { - 0: 'RDPCS_DPALT_DISABLE_TOGGLE_ENABLE', - 1: 'RDPCS_DPALT_DISABLE_TOGGLE_DISABLE', -} -RDPCS_DPALT_DISABLE_TOGGLE_ENABLE = 0 -RDPCS_DPALT_DISABLE_TOGGLE_DISABLE = 1 -RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE_MASK' -RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE_MASK__enumvalues = { - 0: 'RDPCS_DPALT_DISABLE_TOGGLE_MASK_DISABLE', - 1: 'RDPCS_DPALT_DISABLE_TOGGLE_MASK_ENABLE', -} -RDPCS_DPALT_DISABLE_TOGGLE_MASK_DISABLE = 0 -RDPCS_DPALT_DISABLE_TOGGLE_MASK_ENABLE = 1 -RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_REG_FIFO_ERROR_MASK' -RDPCSTX_INTERRUPT_CONTROL_RDPCS_REG_FIFO_ERROR_MASK__enumvalues = { - 0: 'RDPCS_REG_FIFO_ERROR_MASK_DISABLE', - 1: 'RDPCS_REG_FIFO_ERROR_MASK_ENABLE', -} -RDPCS_REG_FIFO_ERROR_MASK_DISABLE = 0 -RDPCS_REG_FIFO_ERROR_MASK_ENABLE = 1 -RDPCSTX_INTERRUPT_CONTROL_RDPCS_REG_FIFO_ERROR_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_TX_FIFO_ERROR_MASK' -RDPCSTX_INTERRUPT_CONTROL_RDPCS_TX_FIFO_ERROR_MASK__enumvalues = { - 0: 'RDPCS_TX_FIFO_ERROR_MASK_DISABLE', - 1: 'RDPCS_TX_FIFO_ERROR_MASK_ENABLE', -} -RDPCS_TX_FIFO_ERROR_MASK_DISABLE = 0 -RDPCS_TX_FIFO_ERROR_MASK_ENABLE = 1 -RDPCSTX_INTERRUPT_CONTROL_RDPCS_TX_FIFO_ERROR_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL0_RDPCS_PHY_CR_MUX_SEL' -RDPCSTX_PHY_CNTL0_RDPCS_PHY_CR_MUX_SEL__enumvalues = { - 0: 'RDPCS_PHY_CR_MUX_SEL_FOR_USB', - 1: 'RDPCS_PHY_CR_MUX_SEL_FOR_DC', -} -RDPCS_PHY_CR_MUX_SEL_FOR_USB = 0 -RDPCS_PHY_CR_MUX_SEL_FOR_DC = 1 -RDPCSTX_PHY_CNTL0_RDPCS_PHY_CR_MUX_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL0_RDPCS_PHY_CR_PARA_SEL' -RDPCSTX_PHY_CNTL0_RDPCS_PHY_CR_PARA_SEL__enumvalues = { - 0: 'RDPCS_PHY_CR_PARA_SEL_JTAG', - 1: 'RDPCS_PHY_CR_PARA_SEL_CR', -} -RDPCS_PHY_CR_PARA_SEL_JTAG = 0 -RDPCS_PHY_CR_PARA_SEL_CR = 1 -RDPCSTX_PHY_CNTL0_RDPCS_PHY_CR_PARA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL0_RDPCS_PHY_REF_RANGE' -RDPCSTX_PHY_CNTL0_RDPCS_PHY_REF_RANGE__enumvalues = { - 0: 'RDPCS_PHY_REF_RANGE_0', - 1: 'RDPCS_PHY_REF_RANGE_1', - 2: 'RDPCS_PHY_REF_RANGE_2', - 3: 'RDPCS_PHY_REF_RANGE_3', - 4: 'RDPCS_PHY_REF_RANGE_4', - 5: 'RDPCS_PHY_REF_RANGE_5', - 6: 'RDPCS_PHY_REF_RANGE_6', - 7: 'RDPCS_PHY_REF_RANGE_7', -} -RDPCS_PHY_REF_RANGE_0 = 0 -RDPCS_PHY_REF_RANGE_1 = 1 -RDPCS_PHY_REF_RANGE_2 = 2 -RDPCS_PHY_REF_RANGE_3 = 3 -RDPCS_PHY_REF_RANGE_4 = 4 -RDPCS_PHY_REF_RANGE_5 = 5 -RDPCS_PHY_REF_RANGE_6 = 6 -RDPCS_PHY_REF_RANGE_7 = 7 -RDPCSTX_PHY_CNTL0_RDPCS_PHY_REF_RANGE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL0_RDPCS_SRAM_EXT_LD_DONE' -RDPCSTX_PHY_CNTL0_RDPCS_SRAM_EXT_LD_DONE__enumvalues = { - 0: 'RDPCS_SRAM_EXT_LD_NOT_DONE', - 1: 'RDPCS_SRAM_EXT_LD_DONE', -} -RDPCS_SRAM_EXT_LD_NOT_DONE = 0 -RDPCS_SRAM_EXT_LD_DONE = 1 -RDPCSTX_PHY_CNTL0_RDPCS_SRAM_EXT_LD_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL0_RDPCS_SRAM_INIT_DONE' -RDPCSTX_PHY_CNTL0_RDPCS_SRAM_INIT_DONE__enumvalues = { - 0: 'RDPCS_SRAM_INIT_NOT_DONE', - 1: 'RDPCS_SRAM_INIT_DONE', -} -RDPCS_SRAM_INIT_NOT_DONE = 0 -RDPCS_SRAM_INIT_DONE = 1 -RDPCSTX_PHY_CNTL0_RDPCS_SRAM_INIT_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL11_RDPCS_PHY_DP_REF_CLK_MPLLB_DIV' -RDPCSTX_PHY_CNTL11_RDPCS_PHY_DP_REF_CLK_MPLLB_DIV__enumvalues = { - 0: 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV1', - 1: 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV2', - 2: 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV3', - 3: 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV8', - 4: 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV16', -} -RDPCS_PHY_DP_REF_CLK_MPLLB_DIV1 = 0 -RDPCS_PHY_DP_REF_CLK_MPLLB_DIV2 = 1 -RDPCS_PHY_DP_REF_CLK_MPLLB_DIV3 = 2 -RDPCS_PHY_DP_REF_CLK_MPLLB_DIV8 = 3 -RDPCS_PHY_DP_REF_CLK_MPLLB_DIV16 = 4 -RDPCSTX_PHY_CNTL11_RDPCS_PHY_DP_REF_CLK_MPLLB_DIV = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL11_RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV' -RDPCSTX_PHY_CNTL11_RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV__enumvalues = { - 0: 'RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_0', - 1: 'RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_1', - 2: 'RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_2', - 3: 'RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_3', -} -RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_0 = 0 -RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_1 = 1 -RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_2 = 2 -RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_3 = 3 -RDPCSTX_PHY_CNTL11_RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL12_RDPCS_PHY_DP_MPLLB_TX_CLK_DIV' -RDPCSTX_PHY_CNTL12_RDPCS_PHY_DP_MPLLB_TX_CLK_DIV__enumvalues = { - 0: 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV', - 1: 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV2', - 2: 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV4', - 3: 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV8', - 4: 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV3', - 5: 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV5', - 6: 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV6', - 7: 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV10', -} -RDPCS_PHY_DP_MPLLB_TX_CLK_DIV = 0 -RDPCS_PHY_DP_MPLLB_TX_CLK_DIV2 = 1 -RDPCS_PHY_DP_MPLLB_TX_CLK_DIV4 = 2 -RDPCS_PHY_DP_MPLLB_TX_CLK_DIV8 = 3 -RDPCS_PHY_DP_MPLLB_TX_CLK_DIV3 = 4 -RDPCS_PHY_DP_MPLLB_TX_CLK_DIV5 = 5 -RDPCS_PHY_DP_MPLLB_TX_CLK_DIV6 = 6 -RDPCS_PHY_DP_MPLLB_TX_CLK_DIV10 = 7 -RDPCSTX_PHY_CNTL12_RDPCS_PHY_DP_MPLLB_TX_CLK_DIV = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL4_RDPCS_PHY_DP_TX_TERM_CTRL' -RDPCSTX_PHY_CNTL4_RDPCS_PHY_DP_TX_TERM_CTRL__enumvalues = { - 0: 'RDPCS_PHY_DP_TX_TERM_CTRL_54', - 1: 'RDPCS_PHY_DP_TX_TERM_CTRL_52', - 2: 'RDPCS_PHY_DP_TX_TERM_CTRL_50', - 3: 'RDPCS_PHY_DP_TX_TERM_CTRL_48', - 4: 'RDPCS_PHY_DP_TX_TERM_CTRL_46', - 5: 'RDPCS_PHY_DP_TX_TERM_CTRL_44', - 6: 'RDPCS_PHY_DP_TX_TERM_CTRL_42', - 7: 'RDPCS_PHY_DP_TX_TERM_CTRL_40', -} -RDPCS_PHY_DP_TX_TERM_CTRL_54 = 0 -RDPCS_PHY_DP_TX_TERM_CTRL_52 = 1 -RDPCS_PHY_DP_TX_TERM_CTRL_50 = 2 -RDPCS_PHY_DP_TX_TERM_CTRL_48 = 3 -RDPCS_PHY_DP_TX_TERM_CTRL_46 = 4 -RDPCS_PHY_DP_TX_TERM_CTRL_44 = 5 -RDPCS_PHY_DP_TX_TERM_CTRL_42 = 6 -RDPCS_PHY_DP_TX_TERM_CTRL_40 = 7 -RDPCSTX_PHY_CNTL4_RDPCS_PHY_DP_TX_TERM_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_DETRX_RESULT' -RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_DETRX_RESULT__enumvalues = { - 0: 'RDPCS_PHY_DP_TX_DETRX_RESULT_NO_DETECT', - 1: 'RDPCS_PHY_DP_TX_DETRX_RESULT_DETECT', -} -RDPCS_PHY_DP_TX_DETRX_RESULT_NO_DETECT = 0 -RDPCS_PHY_DP_TX_DETRX_RESULT_DETECT = 1 -RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_DETRX_RESULT = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_RATE' -RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_RATE__enumvalues = { - 0: 'RDPCS_PHY_DP_TX_RATE', - 1: 'RDPCS_PHY_DP_TX_RATE_DIV2', - 2: 'RDPCS_PHY_DP_TX_RATE_DIV4', -} -RDPCS_PHY_DP_TX_RATE = 0 -RDPCS_PHY_DP_TX_RATE_DIV2 = 1 -RDPCS_PHY_DP_TX_RATE_DIV4 = 2 -RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_WIDTH' -RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_WIDTH__enumvalues = { - 0: 'RDPCS_PHY_DP_TX_WIDTH_8', - 1: 'RDPCS_PHY_DP_TX_WIDTH_10', - 2: 'RDPCS_PHY_DP_TX_WIDTH_16', - 3: 'RDPCS_PHY_DP_TX_WIDTH_20', -} -RDPCS_PHY_DP_TX_WIDTH_8 = 0 -RDPCS_PHY_DP_TX_WIDTH_10 = 1 -RDPCS_PHY_DP_TX_WIDTH_16 = 2 -RDPCS_PHY_DP_TX_WIDTH_20 = 3 -RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_WIDTH = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_CNTL_RRDPCS_PHY_DP_TX_PSTATE' -RDPCSTX_PHY_CNTL_RRDPCS_PHY_DP_TX_PSTATE__enumvalues = { - 0: 'RRDPCS_PHY_DP_TX_PSTATE_POWER_UP', - 1: 'RRDPCS_PHY_DP_TX_PSTATE_HOLD', - 2: 'RRDPCS_PHY_DP_TX_PSTATE_HOLD_OFF', - 3: 'RRDPCS_PHY_DP_TX_PSTATE_POWER_DOWN', -} -RRDPCS_PHY_DP_TX_PSTATE_POWER_UP = 0 -RRDPCS_PHY_DP_TX_PSTATE_HOLD = 1 -RRDPCS_PHY_DP_TX_PSTATE_HOLD_OFF = 2 -RRDPCS_PHY_DP_TX_PSTATE_POWER_DOWN = 3 -RDPCSTX_PHY_CNTL_RRDPCS_PHY_DP_TX_PSTATE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_PHY_REF_ALT_CLK_EN' -RDPCSTX_PHY_REF_ALT_CLK_EN__enumvalues = { - 0: 'RDPCS_PHY_REF_ALT_CLK_DISABLE', - 1: 'RDPCS_PHY_REF_ALT_CLK_ENABLE', -} -RDPCS_PHY_REF_ALT_CLK_DISABLE = 0 -RDPCS_PHY_REF_ALT_CLK_ENABLE = 1 -RDPCSTX_PHY_REF_ALT_CLK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSTX_TX_FIFO_DISABLED_MASK' -RDPCSTX_TX_FIFO_DISABLED_MASK__enumvalues = { - 0: 'RDPCSTX_TX_FIFO_DISABLED_MASK_DISABLE', - 1: 'RDPCSTX_TX_FIFO_DISABLED_MASK_ENABLE', -} -RDPCSTX_TX_FIFO_DISABLED_MASK_DISABLE = 0 -RDPCSTX_TX_FIFO_DISABLED_MASK_ENABLE = 1 -RDPCSTX_TX_FIFO_DISABLED_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCS_DBG_OCLA_SEL' -RDPCS_DBG_OCLA_SEL__enumvalues = { - 0: 'RDPCS_DBG_OCLA_SEL_MON_OUT_7_0', - 1: 'RDPCS_DBG_OCLA_SEL_MON_OUT_15_8', - 2: 'RDPCS_DBG_OCLA_SEL_MON_OUT_23_16', - 3: 'RDPCS_DBG_OCLA_SEL_MON_OUT_31_24', - 4: 'RDPCS_DBG_OCLA_SEL_MON_OUT_39_32', - 5: 'RDPCS_DBG_OCLA_SEL_MON_OUT_47_40', - 6: 'RDPCS_DBG_OCLA_SEL_MON_OUT_55_48', - 7: 'RDPCS_DBG_OCLA_SEL_MON_OUT_63_56', -} -RDPCS_DBG_OCLA_SEL_MON_OUT_7_0 = 0 -RDPCS_DBG_OCLA_SEL_MON_OUT_15_8 = 1 -RDPCS_DBG_OCLA_SEL_MON_OUT_23_16 = 2 -RDPCS_DBG_OCLA_SEL_MON_OUT_31_24 = 3 -RDPCS_DBG_OCLA_SEL_MON_OUT_39_32 = 4 -RDPCS_DBG_OCLA_SEL_MON_OUT_47_40 = 5 -RDPCS_DBG_OCLA_SEL_MON_OUT_55_48 = 6 -RDPCS_DBG_OCLA_SEL_MON_OUT_63_56 = 7 -RDPCS_DBG_OCLA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCS_TEST_CLK_SEL' -RDPCS_TEST_CLK_SEL__enumvalues = { - 0: 'RDPCS_TEST_CLK_SEL_NONE', - 1: 'RDPCS_TEST_CLK_SEL_CFGCLK', - 2: 'RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS', - 3: 'RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS', - 4: 'RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS_DIV4', - 5: 'RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS_DIV4', - 6: 'RDPCS_TEST_CLK_SEL_SRAMCLK', - 7: 'RDPCS_TEST_CLK_SEL_EXT_CR_CLK', - 8: 'RDPCS_TEST_CLK_SEL_DP_TX0_WORD_CLK', - 9: 'RDPCS_TEST_CLK_SEL_DP_TX1_WORD_CLK', - 10: 'RDPCS_TEST_CLK_SEL_DP_TX2_WORD_CLK', - 11: 'RDPCS_TEST_CLK_SEL_DP_TX3_WORD_CLK', - 12: 'RDPCS_TEST_CLK_SEL_DP_MPLLB_DIV_CLK', - 13: 'RDPCS_TEST_CLK_SEL_HDMI_MPLLB_HDMI_PIXEL_CLK', - 14: 'RDPCS_TEST_CLK_SEL_PHY_REF_DIG_CLK', - 15: 'RDPCS_TEST_CLK_SEL_REF_DIG_FR_clk', - 16: 'RDPCS_TEST_CLK_SEL_dtb_out0', - 17: 'RDPCS_TEST_CLK_SEL_dtb_out1', -} -RDPCS_TEST_CLK_SEL_NONE = 0 -RDPCS_TEST_CLK_SEL_CFGCLK = 1 -RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS = 2 -RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS = 3 -RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS_DIV4 = 4 -RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS_DIV4 = 5 -RDPCS_TEST_CLK_SEL_SRAMCLK = 6 -RDPCS_TEST_CLK_SEL_EXT_CR_CLK = 7 -RDPCS_TEST_CLK_SEL_DP_TX0_WORD_CLK = 8 -RDPCS_TEST_CLK_SEL_DP_TX1_WORD_CLK = 9 -RDPCS_TEST_CLK_SEL_DP_TX2_WORD_CLK = 10 -RDPCS_TEST_CLK_SEL_DP_TX3_WORD_CLK = 11 -RDPCS_TEST_CLK_SEL_DP_MPLLB_DIV_CLK = 12 -RDPCS_TEST_CLK_SEL_HDMI_MPLLB_HDMI_PIXEL_CLK = 13 -RDPCS_TEST_CLK_SEL_PHY_REF_DIG_CLK = 14 -RDPCS_TEST_CLK_SEL_REF_DIG_FR_clk = 15 -RDPCS_TEST_CLK_SEL_dtb_out0 = 16 -RDPCS_TEST_CLK_SEL_dtb_out1 = 17 -RDPCS_TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCS_TX_CNTL_TX_LANE_PACK_FROM_MSB' -RDPCS_TX_CNTL_TX_LANE_PACK_FROM_MSB__enumvalues = { - 0: 'RDPCS_LANE_PACK_FROM_MSB_DISABLE', - 1: 'RDPCS_LANE_PACK_FROM_MSB_ENABLE', -} -RDPCS_LANE_PACK_FROM_MSB_DISABLE = 0 -RDPCS_LANE_PACK_FROM_MSB_ENABLE = 1 -RDPCS_TX_CNTL_TX_LANE_PACK_FROM_MSB = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCS_TX_SRAM_CNTL_RDPCS_MEM_PWR_FORCE' -RDPCS_TX_SRAM_CNTL_RDPCS_MEM_PWR_FORCE__enumvalues = { - 0: 'RDPCS_MEM_PWR_NO_FORCE', - 1: 'RDPCS_MEM_PWR_LIGHT_SLEEP', - 2: 'RDPCS_MEM_PWR_DEEP_SLEEP', - 3: 'RDPCS_MEM_PWR_SHUT_DOWN', -} -RDPCS_MEM_PWR_NO_FORCE = 0 -RDPCS_MEM_PWR_LIGHT_SLEEP = 1 -RDPCS_MEM_PWR_DEEP_SLEEP = 2 -RDPCS_MEM_PWR_SHUT_DOWN = 3 -RDPCS_TX_SRAM_CNTL_RDPCS_MEM_PWR_FORCE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCS_TX_SRAM_CNTL_RDPCS_MEM_PWR_PWR_STATE' -RDPCS_TX_SRAM_CNTL_RDPCS_MEM_PWR_PWR_STATE__enumvalues = { - 0: 'RDPCS_MEM_PWR_PWR_STATE_ON', - 1: 'RDPCS_MEM_PWR_PWR_STATE_LIGHT_SLEEP', - 2: 'RDPCS_MEM_PWR_PWR_STATE_DEEP_SLEEP', - 3: 'RDPCS_MEM_PWR_PWR_STATE_SHUT_DOWN', -} -RDPCS_MEM_PWR_PWR_STATE_ON = 0 -RDPCS_MEM_PWR_PWR_STATE_LIGHT_SLEEP = 1 -RDPCS_MEM_PWR_PWR_STATE_DEEP_SLEEP = 2 -RDPCS_MEM_PWR_PWR_STATE_SHUT_DOWN = 3 -RDPCS_TX_SRAM_CNTL_RDPCS_MEM_PWR_PWR_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'RPDCSTX_CNTL_TX_LANE_BIT_ORDER_REVERSE_BEFORE_PACK' -RPDCSTX_CNTL_TX_LANE_BIT_ORDER_REVERSE_BEFORE_PACK__enumvalues = { - 0: 'RDPCS_LANE_BIT_ORDER_REVERSE_DISABLE', - 1: 'RDPCS_LANE_BIT_ORDER_REVERSE_ENABLE', -} -RDPCS_LANE_BIT_ORDER_REVERSE_DISABLE = 0 -RDPCS_LANE_BIT_ORDER_REVERSE_ENABLE = 1 -RPDCSTX_CNTL_TX_LANE_BIT_ORDER_REVERSE_BEFORE_PACK = ctypes.c_uint32 # enum - -# values for enumeration 'RLC_DOORBELL_MODE' -RLC_DOORBELL_MODE__enumvalues = { - 0: 'RLC_DOORBELL_MODE_DISABLE', - 1: 'RLC_DOORBELL_MODE_ENABLE', - 2: 'RLC_DOORBELL_MODE_ENABLE_PF', - 3: 'RLC_DOORBELL_MODE_ENABLE_PF_VF', -} -RLC_DOORBELL_MODE_DISABLE = 0 -RLC_DOORBELL_MODE_ENABLE = 1 -RLC_DOORBELL_MODE_ENABLE_PF = 2 -RLC_DOORBELL_MODE_ENABLE_PF_VF = 3 -RLC_DOORBELL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'RLC_PERFCOUNTER_SEL' -RLC_PERFCOUNTER_SEL__enumvalues = { - 0: 'RLC_PERF_SEL_POWER_FEATURE_0', - 1: 'RLC_PERF_SEL_POWER_FEATURE_1', - 2: 'RLC_PERF_SEL_CP_INTERRUPT', - 3: 'RLC_PERF_SEL_GRBM_INTERRUPT', - 4: 'RLC_PERF_SEL_SPM_INTERRUPT', - 5: 'RLC_PERF_SEL_IH_INTERRUPT', - 6: 'RLC_PERF_SEL_SERDES_COMMAND_WRITE', -} -RLC_PERF_SEL_POWER_FEATURE_0 = 0 -RLC_PERF_SEL_POWER_FEATURE_1 = 1 -RLC_PERF_SEL_CP_INTERRUPT = 2 -RLC_PERF_SEL_GRBM_INTERRUPT = 3 -RLC_PERF_SEL_SPM_INTERRUPT = 4 -RLC_PERF_SEL_IH_INTERRUPT = 5 -RLC_PERF_SEL_SERDES_COMMAND_WRITE = 6 -RLC_PERFCOUNTER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'RLC_PERFMON_STATE' -RLC_PERFMON_STATE__enumvalues = { - 0: 'RLC_PERFMON_STATE_RESET', - 1: 'RLC_PERFMON_STATE_ENABLE', - 2: 'RLC_PERFMON_STATE_DISABLE', - 3: 'RLC_PERFMON_STATE_RESERVED_3', - 4: 'RLC_PERFMON_STATE_RESERVED_4', - 5: 'RLC_PERFMON_STATE_RESERVED_5', - 6: 'RLC_PERFMON_STATE_RESERVED_6', - 7: 'RLC_PERFMON_STATE_ROLLOVER', -} -RLC_PERFMON_STATE_RESET = 0 -RLC_PERFMON_STATE_ENABLE = 1 -RLC_PERFMON_STATE_DISABLE = 2 -RLC_PERFMON_STATE_RESERVED_3 = 3 -RLC_PERFMON_STATE_RESERVED_4 = 4 -RLC_PERFMON_STATE_RESERVED_5 = 5 -RLC_PERFMON_STATE_RESERVED_6 = 6 -RLC_PERFMON_STATE_ROLLOVER = 7 -RLC_PERFMON_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'RSPM_CMD' -RSPM_CMD__enumvalues = { - 0: 'RSPM_CMD_INVALID', - 1: 'RSPM_CMD_IDLE', - 2: 'RSPM_CMD_CALIBRATE', - 3: 'RSPM_CMD_SPM_RESET', - 4: 'RSPM_CMD_SPM_START', - 5: 'RSPM_CMD_SPM_STOP', - 6: 'RSPM_CMD_PERF_RESET', - 7: 'RSPM_CMD_PERF_SAMPLE', - 8: 'RSPM_CMD_PROF_START', - 9: 'RSPM_CMD_PROF_STOP', - 10: 'RSPM_CMD_FORCE_SAMPLE', -} -RSPM_CMD_INVALID = 0 -RSPM_CMD_IDLE = 1 -RSPM_CMD_CALIBRATE = 2 -RSPM_CMD_SPM_RESET = 3 -RSPM_CMD_SPM_START = 4 -RSPM_CMD_SPM_STOP = 5 -RSPM_CMD_PERF_RESET = 6 -RSPM_CMD_PERF_SAMPLE = 7 -RSPM_CMD_PROF_START = 8 -RSPM_CMD_PROF_STOP = 9 -RSPM_CMD_FORCE_SAMPLE = 10 -RSPM_CMD = ctypes.c_uint32 # enum - -# values for enumeration 'CSCNTL_TYPE' -CSCNTL_TYPE__enumvalues = { - 0: 'CSCNTL_TYPE_TG', - 1: 'CSCNTL_TYPE_STATE', - 2: 'CSCNTL_TYPE_EVENT', - 3: 'CSCNTL_TYPE_PRIVATE', -} -CSCNTL_TYPE_TG = 0 -CSCNTL_TYPE_STATE = 1 -CSCNTL_TYPE_EVENT = 2 -CSCNTL_TYPE_PRIVATE = 3 -CSCNTL_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CSDATA_TYPE' -CSDATA_TYPE__enumvalues = { - 0: 'CSDATA_TYPE_TG', - 1: 'CSDATA_TYPE_STATE', - 2: 'CSDATA_TYPE_EVENT', - 3: 'CSDATA_TYPE_PRIVATE', -} -CSDATA_TYPE_TG = 0 -CSDATA_TYPE_STATE = 1 -CSDATA_TYPE_EVENT = 2 -CSDATA_TYPE_PRIVATE = 3 -CSDATA_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'GE1_PERFCOUNT_SELECT' -GE1_PERFCOUNT_SELECT__enumvalues = { - 0: 'ge1_assembler_busy', - 1: 'ge1_assembler_stalled', - 2: 'ge1_dma_busy', - 3: 'ge1_dma_lat_bin_0', - 4: 'ge1_dma_lat_bin_1', - 5: 'ge1_dma_lat_bin_2', - 6: 'ge1_dma_lat_bin_3', - 7: 'ge1_dma_lat_bin_4', - 8: 'ge1_dma_lat_bin_5', - 9: 'ge1_dma_lat_bin_6', - 10: 'ge1_dma_lat_bin_7', - 11: 'ge1_dma_return_cl0', - 12: 'ge1_dma_return_cl1', - 13: 'ge1_dma_utcl1_consecutive_retry_event', - 14: 'ge1_dma_utcl1_request_event', - 15: 'ge1_dma_utcl1_retry_event', - 16: 'ge1_dma_utcl1_stall_event', - 17: 'ge1_dma_utcl1_stall_utcl2_event', - 18: 'ge1_dma_utcl1_translation_hit_event', - 19: 'ge1_dma_utcl1_translation_miss_event', - 20: 'ge1_assembler_dma_starved', - 21: 'ge1_rbiu_di_fifo_stalled_p0', - 22: 'ge1_rbiu_di_fifo_starved_p0', - 23: 'ge1_rbiu_dr_fifo_stalled_p0', - 24: 'ge1_rbiu_dr_fifo_starved_p0', - 25: 'ge1_sclk_reg_vld', - 26: 'ge1_stat_busy', - 27: 'ge1_stat_no_dma_busy', - 28: 'ge1_pipe0_to_pipe1', - 29: 'ge1_pipe1_to_pipe0', - 30: 'ge1_dma_return_size_cl0', - 31: 'ge1_dma_return_size_cl1', - 32: 'ge1_small_draws_one_instance', - 33: 'ge1_sclk_input_vld', - 34: 'ge1_prim_group_limit_hit', - 35: 'ge1_unopt_multi_instance_draws', - 36: 'ge1_rbiu_di_fifo_stalled_p1', - 37: 'ge1_rbiu_di_fifo_starved_p1', - 38: 'ge1_rbiu_dr_fifo_stalled_p1', - 39: 'ge1_rbiu_dr_fifo_starved_p1', -} -ge1_assembler_busy = 0 -ge1_assembler_stalled = 1 -ge1_dma_busy = 2 -ge1_dma_lat_bin_0 = 3 -ge1_dma_lat_bin_1 = 4 -ge1_dma_lat_bin_2 = 5 -ge1_dma_lat_bin_3 = 6 -ge1_dma_lat_bin_4 = 7 -ge1_dma_lat_bin_5 = 8 -ge1_dma_lat_bin_6 = 9 -ge1_dma_lat_bin_7 = 10 -ge1_dma_return_cl0 = 11 -ge1_dma_return_cl1 = 12 -ge1_dma_utcl1_consecutive_retry_event = 13 -ge1_dma_utcl1_request_event = 14 -ge1_dma_utcl1_retry_event = 15 -ge1_dma_utcl1_stall_event = 16 -ge1_dma_utcl1_stall_utcl2_event = 17 -ge1_dma_utcl1_translation_hit_event = 18 -ge1_dma_utcl1_translation_miss_event = 19 -ge1_assembler_dma_starved = 20 -ge1_rbiu_di_fifo_stalled_p0 = 21 -ge1_rbiu_di_fifo_starved_p0 = 22 -ge1_rbiu_dr_fifo_stalled_p0 = 23 -ge1_rbiu_dr_fifo_starved_p0 = 24 -ge1_sclk_reg_vld = 25 -ge1_stat_busy = 26 -ge1_stat_no_dma_busy = 27 -ge1_pipe0_to_pipe1 = 28 -ge1_pipe1_to_pipe0 = 29 -ge1_dma_return_size_cl0 = 30 -ge1_dma_return_size_cl1 = 31 -ge1_small_draws_one_instance = 32 -ge1_sclk_input_vld = 33 -ge1_prim_group_limit_hit = 34 -ge1_unopt_multi_instance_draws = 35 -ge1_rbiu_di_fifo_stalled_p1 = 36 -ge1_rbiu_di_fifo_starved_p1 = 37 -ge1_rbiu_dr_fifo_stalled_p1 = 38 -ge1_rbiu_dr_fifo_starved_p1 = 39 -GE1_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'GE2_DIST_PERFCOUNT_SELECT' -GE2_DIST_PERFCOUNT_SELECT__enumvalues = { - 0: 'ge_dist_hs_done', - 1: 'ge_dist_hs_done_latency_se0', - 2: 'ge_dist_hs_done_latency_se1', - 3: 'ge_dist_hs_done_latency_se2', - 4: 'ge_dist_hs_done_latency_se3', - 5: 'ge_dist_hs_done_latency_se4', - 6: 'ge_dist_hs_done_latency_se5', - 7: 'ge_dist_hs_done_latency_se6', - 8: 'ge_dist_hs_done_latency_se7', - 9: 'ge_dist_inside_tf_bin_0', - 10: 'ge_dist_inside_tf_bin_1', - 11: 'ge_dist_inside_tf_bin_2', - 12: 'ge_dist_inside_tf_bin_3', - 13: 'ge_dist_inside_tf_bin_4', - 14: 'ge_dist_inside_tf_bin_5', - 15: 'ge_dist_inside_tf_bin_6', - 16: 'ge_dist_inside_tf_bin_7', - 17: 'ge_dist_inside_tf_bin_8', - 18: 'ge_dist_null_patch', - 19: 'ge_dist_sclk_core_vld', - 20: 'ge_dist_sclk_wd_te11_vld', - 21: 'ge_dist_tfreq_lat_bin_0', - 22: 'ge_dist_tfreq_lat_bin_1', - 23: 'ge_dist_tfreq_lat_bin_2', - 24: 'ge_dist_tfreq_lat_bin_3', - 25: 'ge_dist_tfreq_lat_bin_4', - 26: 'ge_dist_tfreq_lat_bin_5', - 27: 'ge_dist_tfreq_lat_bin_6', - 28: 'ge_dist_tfreq_lat_bin_7', - 29: 'ge_dist_tfreq_utcl1_consecutive_retry_event', - 30: 'ge_dist_tfreq_utcl1_request_event', - 31: 'ge_dist_tfreq_utcl1_retry_event', - 32: 'ge_dist_tfreq_utcl1_stall_event', - 33: 'ge_dist_tfreq_utcl1_stall_utcl2_event', - 34: 'ge_dist_tfreq_utcl1_translation_hit_event', - 35: 'ge_dist_tfreq_utcl1_translation_miss_event', - 36: 'ge_dist_pc_feorder_fifo_full', - 37: 'ge_dist_pc_ge_manager_busy', - 38: 'ge_dist_sclk_input_vld', - 39: 'ge_dist_wd_te11_busy', - 40: 'ge_dist_te11_starved', - 41: 'ge_dist_switch_mode_stall', - 42: 'ge_all_tf_eq', - 43: 'ge_all_tf2', - 44: 'ge_all_tf3', - 45: 'ge_all_tf4', - 46: 'ge_all_tf5', - 47: 'ge_all_tf6', - 48: 'ge_se0_te11_starved_on_hs_done', - 49: 'ge_se1_te11_starved_on_hs_done', - 50: 'ge_se2_te11_starved_on_hs_done', - 51: 'ge_se3_te11_starved_on_hs_done', - 52: 'ge_se4_te11_starved_on_hs_done', - 53: 'ge_se5_te11_starved_on_hs_done', - 54: 'ge_se6_te11_starved_on_hs_done', - 55: 'ge_se7_te11_starved_on_hs_done', - 56: 'ge_dist_op_fifo_full_starve', - 57: 'ge_dist_hs_done_se0', - 58: 'ge_dist_hs_done_se1', - 59: 'ge_dist_hs_done_se2', - 60: 'ge_dist_hs_done_se3', - 61: 'ge_dist_hs_done_se4', - 62: 'ge_dist_hs_done_se5', - 63: 'ge_dist_hs_done_se6', - 64: 'ge_dist_hs_done_se7', - 65: 'ge_dist_hs_done_latency', - 66: 'ge_dist_distributer_busy', - 67: 'ge_tf_ret_data_stalling_hs_done', - 68: 'ge_num_of_no_dist_patches', - 69: 'ge_num_of_donut_dist_patches', - 70: 'ge_num_of_patch_dist_patches', - 71: 'ge_num_of_se_switches_due_to_patch_accum', - 72: 'ge_num_of_se_switches_due_to_donut', - 73: 'ge_num_of_se_switches_due_to_trap', - 74: 'ge_num_of_hs_dealloc_events', - 75: 'ge_agm_gcr_req', - 76: 'ge_agm_gcr_tag_stall', - 77: 'ge_agm_gcr_crd_stall', - 78: 'ge_agm_gcr_stall', - 79: 'ge_agm_gcr_latency', - 80: 'ge_distclk_vld', - 81: 'ge_dist_indx_fifos_full_and_empty', - 82: 'ge_hs_done_all_tf0_se0', - 83: 'ge_hs_done_all_tf0_se1', - 84: 'ge_hs_done_all_tf0_se2', - 85: 'ge_hs_done_all_tf0_se3', - 86: 'ge_hs_done_all_tf0_se4', - 87: 'ge_hs_done_all_tf0_se5', - 88: 'ge_hs_done_all_tf0_se6', - 89: 'ge_hs_done_all_tf0_se7', - 90: 'ge_hs_done_all_tf1_se0', - 91: 'ge_hs_done_all_tf1_se1', - 92: 'ge_hs_done_all_tf1_se2', - 93: 'ge_hs_done_all_tf1_se3', - 94: 'ge_hs_done_all_tf1_se4', - 95: 'ge_hs_done_all_tf1_se5', - 96: 'ge_hs_done_all_tf1_se6', - 97: 'ge_hs_done_all_tf1_se7', - 98: 'ge_agm_gcr_req_outstanding', - 99: 'ge_agm_gcr_req_amount', - 100: 'ge_agm_gcr_combine', -} -ge_dist_hs_done = 0 -ge_dist_hs_done_latency_se0 = 1 -ge_dist_hs_done_latency_se1 = 2 -ge_dist_hs_done_latency_se2 = 3 -ge_dist_hs_done_latency_se3 = 4 -ge_dist_hs_done_latency_se4 = 5 -ge_dist_hs_done_latency_se5 = 6 -ge_dist_hs_done_latency_se6 = 7 -ge_dist_hs_done_latency_se7 = 8 -ge_dist_inside_tf_bin_0 = 9 -ge_dist_inside_tf_bin_1 = 10 -ge_dist_inside_tf_bin_2 = 11 -ge_dist_inside_tf_bin_3 = 12 -ge_dist_inside_tf_bin_4 = 13 -ge_dist_inside_tf_bin_5 = 14 -ge_dist_inside_tf_bin_6 = 15 -ge_dist_inside_tf_bin_7 = 16 -ge_dist_inside_tf_bin_8 = 17 -ge_dist_null_patch = 18 -ge_dist_sclk_core_vld = 19 -ge_dist_sclk_wd_te11_vld = 20 -ge_dist_tfreq_lat_bin_0 = 21 -ge_dist_tfreq_lat_bin_1 = 22 -ge_dist_tfreq_lat_bin_2 = 23 -ge_dist_tfreq_lat_bin_3 = 24 -ge_dist_tfreq_lat_bin_4 = 25 -ge_dist_tfreq_lat_bin_5 = 26 -ge_dist_tfreq_lat_bin_6 = 27 -ge_dist_tfreq_lat_bin_7 = 28 -ge_dist_tfreq_utcl1_consecutive_retry_event = 29 -ge_dist_tfreq_utcl1_request_event = 30 -ge_dist_tfreq_utcl1_retry_event = 31 -ge_dist_tfreq_utcl1_stall_event = 32 -ge_dist_tfreq_utcl1_stall_utcl2_event = 33 -ge_dist_tfreq_utcl1_translation_hit_event = 34 -ge_dist_tfreq_utcl1_translation_miss_event = 35 -ge_dist_pc_feorder_fifo_full = 36 -ge_dist_pc_ge_manager_busy = 37 -ge_dist_sclk_input_vld = 38 -ge_dist_wd_te11_busy = 39 -ge_dist_te11_starved = 40 -ge_dist_switch_mode_stall = 41 -ge_all_tf_eq = 42 -ge_all_tf2 = 43 -ge_all_tf3 = 44 -ge_all_tf4 = 45 -ge_all_tf5 = 46 -ge_all_tf6 = 47 -ge_se0_te11_starved_on_hs_done = 48 -ge_se1_te11_starved_on_hs_done = 49 -ge_se2_te11_starved_on_hs_done = 50 -ge_se3_te11_starved_on_hs_done = 51 -ge_se4_te11_starved_on_hs_done = 52 -ge_se5_te11_starved_on_hs_done = 53 -ge_se6_te11_starved_on_hs_done = 54 -ge_se7_te11_starved_on_hs_done = 55 -ge_dist_op_fifo_full_starve = 56 -ge_dist_hs_done_se0 = 57 -ge_dist_hs_done_se1 = 58 -ge_dist_hs_done_se2 = 59 -ge_dist_hs_done_se3 = 60 -ge_dist_hs_done_se4 = 61 -ge_dist_hs_done_se5 = 62 -ge_dist_hs_done_se6 = 63 -ge_dist_hs_done_se7 = 64 -ge_dist_hs_done_latency = 65 -ge_dist_distributer_busy = 66 -ge_tf_ret_data_stalling_hs_done = 67 -ge_num_of_no_dist_patches = 68 -ge_num_of_donut_dist_patches = 69 -ge_num_of_patch_dist_patches = 70 -ge_num_of_se_switches_due_to_patch_accum = 71 -ge_num_of_se_switches_due_to_donut = 72 -ge_num_of_se_switches_due_to_trap = 73 -ge_num_of_hs_dealloc_events = 74 -ge_agm_gcr_req = 75 -ge_agm_gcr_tag_stall = 76 -ge_agm_gcr_crd_stall = 77 -ge_agm_gcr_stall = 78 -ge_agm_gcr_latency = 79 -ge_distclk_vld = 80 -ge_dist_indx_fifos_full_and_empty = 81 -ge_hs_done_all_tf0_se0 = 82 -ge_hs_done_all_tf0_se1 = 83 -ge_hs_done_all_tf0_se2 = 84 -ge_hs_done_all_tf0_se3 = 85 -ge_hs_done_all_tf0_se4 = 86 -ge_hs_done_all_tf0_se5 = 87 -ge_hs_done_all_tf0_se6 = 88 -ge_hs_done_all_tf0_se7 = 89 -ge_hs_done_all_tf1_se0 = 90 -ge_hs_done_all_tf1_se1 = 91 -ge_hs_done_all_tf1_se2 = 92 -ge_hs_done_all_tf1_se3 = 93 -ge_hs_done_all_tf1_se4 = 94 -ge_hs_done_all_tf1_se5 = 95 -ge_hs_done_all_tf1_se6 = 96 -ge_hs_done_all_tf1_se7 = 97 -ge_agm_gcr_req_outstanding = 98 -ge_agm_gcr_req_amount = 99 -ge_agm_gcr_combine = 100 -GE2_DIST_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'GE2_SE_PERFCOUNT_SELECT' -GE2_SE_PERFCOUNT_SELECT__enumvalues = { - 0: 'ge_se_ds_prims', - 1: 'ge_se_es_thread_groups', - 2: 'ge_se_esvert_stalled_gsprim', - 3: 'ge_se_hs_tfm_stall', - 4: 'ge_se_hs_tgs_active_high_water_mark', - 5: 'ge_se_hs_thread_groups', - 6: 'ge_se_reused_es_indices', - 7: 'ge_se_sclk_ngg_vld', - 8: 'ge_se_sclk_te11_vld', - 9: 'ge_se_spi_esvert_eov', - 10: 'ge_se_spi_esvert_stalled', - 11: 'ge_se_spi_esvert_starved_busy', - 12: 'ge_se_spi_esvert_valid', - 13: 'ge_se_spi_gsprim_cont', - 14: 'ge_se_spi_gsprim_eov', - 15: 'ge_se_spi_gsprim_stalled', - 16: 'ge_se_spi_gsprim_starved_busy', - 17: 'ge_se_spi_gsprim_valid', - 18: 'ge_se_spi_gssubgrp_is_event', - 19: 'ge_se_spi_gssubgrp_send', - 20: 'ge_se_spi_hsvert_eov', - 21: 'ge_se_spi_hsvert_stalled', - 22: 'ge_se_spi_hsvert_starved_busy', - 23: 'ge_se_spi_hsvert_valid', - 24: 'ge_se_spi_hsgrp_is_event', - 25: 'ge_se_spi_hsgrp_send', - 26: 'ge_se_spi_lsvert_eov', - 27: 'ge_se_spi_lsvert_stalled', - 28: 'ge_se_spi_lsvert_starved_busy', - 29: 'ge_se_spi_lsvert_valid', - 30: 'ge_se_spi_hsvert_fifo_full_stall', - 31: 'ge_se_spi_tgrp_fifo_stall', - 32: 'ge_spi_hsgrp_spi_stall', - 33: 'ge_se_spi_gssubgrp_event_window_active', - 34: 'ge_se_hs_input_stall', - 35: 'ge_se_sending_vert_or_prim', - 36: 'ge_se_sclk_input_vld', - 37: 'ge_spi_lswave_fifo_full_stall', - 38: 'ge_spi_hswave_fifo_full_stall', - 39: 'ge_hs_tif_stall', - 40: 'ge_csb_spi_bp', - 41: 'ge_ngg_starving_for_wave_id', - 42: 'ge_pa0_csb_eop', - 43: 'ge_ngg_starved_idle', - 44: 'ge_gsprim_send', - 45: 'ge_esvert_send', - 46: 'ge_ngg_starved_after_work', - 47: 'ge_ngg_subgrp_fifo_stall', - 48: 'ge_ngg_ord_id_req_stall', - 49: 'ge_ngg_indx_bus_stall', - 50: 'ge_hs_stall_tfmm_fifo_full', - 51: 'ge_gs_issue_rtr_stalled', - 52: 'ge_gsprim_stalled_esvert', - 53: 'ge_gsthread_stalled', - 54: 'ge_ngg_attr_grp_alloc', - 55: 'ge_ngg_attr_discard_alloc', - 56: 'ge_ngg_pc_space_not_avail', - 57: 'ge_ngg_agm_req_stall', - 58: 'ge_ngg_spi_esvert_partial_eov', - 59: 'ge_ngg_spi_gsprim_partial_eov', - 60: 'ge_spi_gsgrp_valid', - 61: 'ge_ngg_attr_grp_latency', - 62: 'ge_ngg_reuse_prim_limit_hit', - 63: 'ge_ngg_reuse_vert_limit_hit', - 64: 'ge_te11_con_stall', - 65: 'ge_te11_compactor_starved', - 66: 'ge_ngg_stall_tess_off_tess_on', - 67: 'ge_ngg_stall_tess_on_tess_off', - 68: 'ge_merged_lses_vert_stalled', - 69: 'ge_merged_hsgs_vert_stalled', - 70: 'ge_merged_hsgs_grp_stalled', - 71: 'ge_merge_lses_fifo_blocked', - 72: 'ge_merge_hsgs_fifo_blocked', - 73: 'ge_merge_lses_vert_switch', - 74: 'ge_merge_hsgs_vert_switch', - 75: 'ge_merge_hsgs_grp_switch', - 76: 'ge_merge_gsgrp_rdy_pending_verts', - 77: 'ge_merge_hsgrp_rdy_pending_verts', - 78: 'ge_se_ds_cache_hits', - 79: 'ge_se_api_vs_verts', - 80: 'ge_se_api_ds_verts', - 81: 'ge_se_combined_busy', - 82: 'ge_spi_lsvert_send', - 83: 'ge_spi_hsvert_send', - 84: 'ge_ngg_attr_grp_wasted', - 85: 'ge_spi_gssubgrp_stalled', - 86: 'ge_ngg_attr_null_dealloc', - 87: 'ge_ngg_busy_base', -} -ge_se_ds_prims = 0 -ge_se_es_thread_groups = 1 -ge_se_esvert_stalled_gsprim = 2 -ge_se_hs_tfm_stall = 3 -ge_se_hs_tgs_active_high_water_mark = 4 -ge_se_hs_thread_groups = 5 -ge_se_reused_es_indices = 6 -ge_se_sclk_ngg_vld = 7 -ge_se_sclk_te11_vld = 8 -ge_se_spi_esvert_eov = 9 -ge_se_spi_esvert_stalled = 10 -ge_se_spi_esvert_starved_busy = 11 -ge_se_spi_esvert_valid = 12 -ge_se_spi_gsprim_cont = 13 -ge_se_spi_gsprim_eov = 14 -ge_se_spi_gsprim_stalled = 15 -ge_se_spi_gsprim_starved_busy = 16 -ge_se_spi_gsprim_valid = 17 -ge_se_spi_gssubgrp_is_event = 18 -ge_se_spi_gssubgrp_send = 19 -ge_se_spi_hsvert_eov = 20 -ge_se_spi_hsvert_stalled = 21 -ge_se_spi_hsvert_starved_busy = 22 -ge_se_spi_hsvert_valid = 23 -ge_se_spi_hsgrp_is_event = 24 -ge_se_spi_hsgrp_send = 25 -ge_se_spi_lsvert_eov = 26 -ge_se_spi_lsvert_stalled = 27 -ge_se_spi_lsvert_starved_busy = 28 -ge_se_spi_lsvert_valid = 29 -ge_se_spi_hsvert_fifo_full_stall = 30 -ge_se_spi_tgrp_fifo_stall = 31 -ge_spi_hsgrp_spi_stall = 32 -ge_se_spi_gssubgrp_event_window_active = 33 -ge_se_hs_input_stall = 34 -ge_se_sending_vert_or_prim = 35 -ge_se_sclk_input_vld = 36 -ge_spi_lswave_fifo_full_stall = 37 -ge_spi_hswave_fifo_full_stall = 38 -ge_hs_tif_stall = 39 -ge_csb_spi_bp = 40 -ge_ngg_starving_for_wave_id = 41 -ge_pa0_csb_eop = 42 -ge_ngg_starved_idle = 43 -ge_gsprim_send = 44 -ge_esvert_send = 45 -ge_ngg_starved_after_work = 46 -ge_ngg_subgrp_fifo_stall = 47 -ge_ngg_ord_id_req_stall = 48 -ge_ngg_indx_bus_stall = 49 -ge_hs_stall_tfmm_fifo_full = 50 -ge_gs_issue_rtr_stalled = 51 -ge_gsprim_stalled_esvert = 52 -ge_gsthread_stalled = 53 -ge_ngg_attr_grp_alloc = 54 -ge_ngg_attr_discard_alloc = 55 -ge_ngg_pc_space_not_avail = 56 -ge_ngg_agm_req_stall = 57 -ge_ngg_spi_esvert_partial_eov = 58 -ge_ngg_spi_gsprim_partial_eov = 59 -ge_spi_gsgrp_valid = 60 -ge_ngg_attr_grp_latency = 61 -ge_ngg_reuse_prim_limit_hit = 62 -ge_ngg_reuse_vert_limit_hit = 63 -ge_te11_con_stall = 64 -ge_te11_compactor_starved = 65 -ge_ngg_stall_tess_off_tess_on = 66 -ge_ngg_stall_tess_on_tess_off = 67 -ge_merged_lses_vert_stalled = 68 -ge_merged_hsgs_vert_stalled = 69 -ge_merged_hsgs_grp_stalled = 70 -ge_merge_lses_fifo_blocked = 71 -ge_merge_hsgs_fifo_blocked = 72 -ge_merge_lses_vert_switch = 73 -ge_merge_hsgs_vert_switch = 74 -ge_merge_hsgs_grp_switch = 75 -ge_merge_gsgrp_rdy_pending_verts = 76 -ge_merge_hsgrp_rdy_pending_verts = 77 -ge_se_ds_cache_hits = 78 -ge_se_api_vs_verts = 79 -ge_se_api_ds_verts = 80 -ge_se_combined_busy = 81 -ge_spi_lsvert_send = 82 -ge_spi_hsvert_send = 83 -ge_ngg_attr_grp_wasted = 84 -ge_spi_gssubgrp_stalled = 85 -ge_ngg_attr_null_dealloc = 86 -ge_ngg_busy_base = 87 -GE2_SE_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DETECT_ONE' -VGT_DETECT_ONE__enumvalues = { - 0: 'ENABLE_TF1_OPT', - 1: 'DISABLE_TF1_OPT', -} -ENABLE_TF1_OPT = 0 -DISABLE_TF1_OPT = 1 -VGT_DETECT_ONE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DETECT_ZERO' -VGT_DETECT_ZERO__enumvalues = { - 0: 'ENABLE_TF0_OPT', - 1: 'DISABLE_TF0_OPT', -} -ENABLE_TF0_OPT = 0 -DISABLE_TF0_OPT = 1 -VGT_DETECT_ZERO = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DIST_MODE' -VGT_DIST_MODE__enumvalues = { - 0: 'NO_DIST', - 1: 'PATCHES', - 2: 'DONUTS', - 3: 'TRAPEZOIDS', -} -NO_DIST = 0 -PATCHES = 1 -DONUTS = 2 -TRAPEZOIDS = 3 -VGT_DIST_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DI_INDEX_SIZE' -VGT_DI_INDEX_SIZE__enumvalues = { - 0: 'DI_INDEX_SIZE_16_BIT', - 1: 'DI_INDEX_SIZE_32_BIT', - 2: 'DI_INDEX_SIZE_8_BIT', -} -DI_INDEX_SIZE_16_BIT = 0 -DI_INDEX_SIZE_32_BIT = 1 -DI_INDEX_SIZE_8_BIT = 2 -VGT_DI_INDEX_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DI_PRIM_TYPE' -VGT_DI_PRIM_TYPE__enumvalues = { - 0: 'DI_PT_NONE', - 1: 'DI_PT_POINTLIST', - 2: 'DI_PT_LINELIST', - 3: 'DI_PT_LINESTRIP', - 4: 'DI_PT_TRILIST', - 5: 'DI_PT_TRIFAN', - 6: 'DI_PT_TRISTRIP', - 7: 'DI_PT_2D_RECTANGLE', - 8: 'DI_PT_UNUSED_1', - 9: 'DI_PT_PATCH', - 10: 'DI_PT_LINELIST_ADJ', - 11: 'DI_PT_LINESTRIP_ADJ', - 12: 'DI_PT_TRILIST_ADJ', - 13: 'DI_PT_TRISTRIP_ADJ', - 14: 'DI_PT_UNUSED_3', - 15: 'DI_PT_UNUSED_4', - 16: 'DI_PT_UNUSED_5', - 17: 'DI_PT_RECTLIST', - 18: 'DI_PT_LINELOOP', - 19: 'DI_PT_QUADLIST', - 20: 'DI_PT_QUADSTRIP', - 21: 'DI_PT_POLYGON', -} -DI_PT_NONE = 0 -DI_PT_POINTLIST = 1 -DI_PT_LINELIST = 2 -DI_PT_LINESTRIP = 3 -DI_PT_TRILIST = 4 -DI_PT_TRIFAN = 5 -DI_PT_TRISTRIP = 6 -DI_PT_2D_RECTANGLE = 7 -DI_PT_UNUSED_1 = 8 -DI_PT_PATCH = 9 -DI_PT_LINELIST_ADJ = 10 -DI_PT_LINESTRIP_ADJ = 11 -DI_PT_TRILIST_ADJ = 12 -DI_PT_TRISTRIP_ADJ = 13 -DI_PT_UNUSED_3 = 14 -DI_PT_UNUSED_4 = 15 -DI_PT_UNUSED_5 = 16 -DI_PT_RECTLIST = 17 -DI_PT_LINELOOP = 18 -DI_PT_QUADLIST = 19 -DI_PT_QUADSTRIP = 20 -DI_PT_POLYGON = 21 -VGT_DI_PRIM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DI_SOURCE_SELECT' -VGT_DI_SOURCE_SELECT__enumvalues = { - 0: 'DI_SRC_SEL_DMA', - 1: 'DI_SRC_SEL_IMMEDIATE', - 2: 'DI_SRC_SEL_AUTO_INDEX', - 3: 'DI_SRC_SEL_RESERVED', -} -DI_SRC_SEL_DMA = 0 -DI_SRC_SEL_IMMEDIATE = 1 -DI_SRC_SEL_AUTO_INDEX = 2 -DI_SRC_SEL_RESERVED = 3 -VGT_DI_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DMA_BUF_TYPE' -VGT_DMA_BUF_TYPE__enumvalues = { - 0: 'VGT_DMA_BUF_MEM', - 1: 'VGT_DMA_BUF_RING', - 2: 'VGT_DMA_BUF_SETUP', - 3: 'VGT_DMA_PTR_UPDATE', -} -VGT_DMA_BUF_MEM = 0 -VGT_DMA_BUF_RING = 1 -VGT_DMA_BUF_SETUP = 2 -VGT_DMA_PTR_UPDATE = 3 -VGT_DMA_BUF_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DMA_SWAP_MODE' -VGT_DMA_SWAP_MODE__enumvalues = { - 0: 'VGT_DMA_SWAP_NONE', - 1: 'VGT_DMA_SWAP_16_BIT', - 2: 'VGT_DMA_SWAP_32_BIT', - 3: 'VGT_DMA_SWAP_WORD', -} -VGT_DMA_SWAP_NONE = 0 -VGT_DMA_SWAP_16_BIT = 1 -VGT_DMA_SWAP_32_BIT = 2 -VGT_DMA_SWAP_WORD = 3 -VGT_DMA_SWAP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_EVENT_TYPE' -VGT_EVENT_TYPE__enumvalues = { - 0: 'Reserved_0x00', - 1: 'SAMPLE_STREAMOUTSTATS1', - 2: 'SAMPLE_STREAMOUTSTATS2', - 3: 'SAMPLE_STREAMOUTSTATS3', - 4: 'CACHE_FLUSH_TS', - 5: 'CONTEXT_DONE', - 6: 'CACHE_FLUSH', - 7: 'CS_PARTIAL_FLUSH', - 8: 'VGT_STREAMOUT_SYNC', - 9: 'EVENT_STATE_CHANGE', - 10: 'VGT_STREAMOUT_RESET', - 11: 'END_OF_PIPE_INCR_DE', - 12: 'END_OF_PIPE_IB_END', - 13: 'RST_PIX_CNT', - 14: 'BREAK_BATCH', - 15: 'VS_PARTIAL_FLUSH', - 16: 'PS_PARTIAL_FLUSH', - 17: 'FLUSH_HS_OUTPUT', - 18: 'FLUSH_DFSM', - 19: 'RESET_TO_LOWEST_VGT', - 20: 'CACHE_FLUSH_AND_INV_TS_EVENT', - 21: 'WAIT_SYNC', - 22: 'CACHE_FLUSH_AND_INV_EVENT', - 23: 'PERFCOUNTER_START', - 24: 'PERFCOUNTER_STOP', - 25: 'PIPELINESTAT_START', - 26: 'PIPELINESTAT_STOP', - 27: 'PERFCOUNTER_SAMPLE', - 28: 'FLUSH_ES_OUTPUT', - 29: 'BIN_CONF_OVERRIDE_CHECK', - 30: 'SAMPLE_PIPELINESTAT', - 31: 'SO_VGTSTREAMOUT_FLUSH', - 32: 'SAMPLE_STREAMOUTSTATS', - 33: 'RESET_VTX_CNT', - 34: 'BLOCK_CONTEXT_DONE', - 35: 'CS_CONTEXT_DONE', - 36: 'VGT_FLUSH', - 37: 'TGID_ROLLOVER', - 38: 'SQ_NON_EVENT', - 39: 'SC_SEND_DB_VPZ', - 40: 'BOTTOM_OF_PIPE_TS', - 41: 'FLUSH_SX_TS', - 42: 'DB_CACHE_FLUSH_AND_INV', - 43: 'FLUSH_AND_INV_DB_DATA_TS', - 44: 'FLUSH_AND_INV_DB_META', - 45: 'FLUSH_AND_INV_CB_DATA_TS', - 46: 'FLUSH_AND_INV_CB_META', - 47: 'CS_DONE', - 48: 'PS_DONE', - 49: 'FLUSH_AND_INV_CB_PIXEL_DATA', - 50: 'SX_CB_RAT_ACK_REQUEST', - 51: 'THREAD_TRACE_START', - 52: 'THREAD_TRACE_STOP', - 53: 'THREAD_TRACE_MARKER', - 54: 'THREAD_TRACE_DRAW', - 55: 'THREAD_TRACE_FINISH', - 56: 'PIXEL_PIPE_STAT_CONTROL', - 57: 'PIXEL_PIPE_STAT_DUMP', - 58: 'PIXEL_PIPE_STAT_RESET', - 59: 'CONTEXT_SUSPEND', - 60: 'OFFCHIP_HS_DEALLOC', - 61: 'ENABLE_NGG_PIPELINE', - 62: 'ENABLE_PIPELINE_NOT_USED', - 63: 'DRAW_DONE', -} -Reserved_0x00 = 0 -SAMPLE_STREAMOUTSTATS1 = 1 -SAMPLE_STREAMOUTSTATS2 = 2 -SAMPLE_STREAMOUTSTATS3 = 3 -CACHE_FLUSH_TS = 4 -CONTEXT_DONE = 5 -CACHE_FLUSH = 6 -CS_PARTIAL_FLUSH = 7 -VGT_STREAMOUT_SYNC = 8 -EVENT_STATE_CHANGE = 9 -VGT_STREAMOUT_RESET = 10 -END_OF_PIPE_INCR_DE = 11 -END_OF_PIPE_IB_END = 12 -RST_PIX_CNT = 13 -BREAK_BATCH = 14 -VS_PARTIAL_FLUSH = 15 -PS_PARTIAL_FLUSH = 16 -FLUSH_HS_OUTPUT = 17 -FLUSH_DFSM = 18 -RESET_TO_LOWEST_VGT = 19 -CACHE_FLUSH_AND_INV_TS_EVENT = 20 -WAIT_SYNC = 21 -CACHE_FLUSH_AND_INV_EVENT = 22 -PERFCOUNTER_START = 23 -PERFCOUNTER_STOP = 24 -PIPELINESTAT_START = 25 -PIPELINESTAT_STOP = 26 -PERFCOUNTER_SAMPLE = 27 -FLUSH_ES_OUTPUT = 28 -BIN_CONF_OVERRIDE_CHECK = 29 -SAMPLE_PIPELINESTAT = 30 -SO_VGTSTREAMOUT_FLUSH = 31 -SAMPLE_STREAMOUTSTATS = 32 -RESET_VTX_CNT = 33 -BLOCK_CONTEXT_DONE = 34 -CS_CONTEXT_DONE = 35 -VGT_FLUSH = 36 -TGID_ROLLOVER = 37 -SQ_NON_EVENT = 38 -SC_SEND_DB_VPZ = 39 -BOTTOM_OF_PIPE_TS = 40 -FLUSH_SX_TS = 41 -DB_CACHE_FLUSH_AND_INV = 42 -FLUSH_AND_INV_DB_DATA_TS = 43 -FLUSH_AND_INV_DB_META = 44 -FLUSH_AND_INV_CB_DATA_TS = 45 -FLUSH_AND_INV_CB_META = 46 -CS_DONE = 47 -PS_DONE = 48 -FLUSH_AND_INV_CB_PIXEL_DATA = 49 -SX_CB_RAT_ACK_REQUEST = 50 -THREAD_TRACE_START = 51 -THREAD_TRACE_STOP = 52 -THREAD_TRACE_MARKER = 53 -THREAD_TRACE_DRAW = 54 -THREAD_TRACE_FINISH = 55 -PIXEL_PIPE_STAT_CONTROL = 56 -PIXEL_PIPE_STAT_DUMP = 57 -PIXEL_PIPE_STAT_RESET = 58 -CONTEXT_SUSPEND = 59 -OFFCHIP_HS_DEALLOC = 60 -ENABLE_NGG_PIPELINE = 61 -ENABLE_PIPELINE_NOT_USED = 62 -DRAW_DONE = 63 -VGT_EVENT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GROUP_CONV_SEL' -VGT_GROUP_CONV_SEL__enumvalues = { - 0: 'VGT_GRP_INDEX_16', - 1: 'VGT_GRP_INDEX_32', - 2: 'VGT_GRP_UINT_16', - 3: 'VGT_GRP_UINT_32', - 4: 'VGT_GRP_SINT_16', - 5: 'VGT_GRP_SINT_32', - 6: 'VGT_GRP_FLOAT_32', - 7: 'VGT_GRP_AUTO_PRIM', - 8: 'VGT_GRP_FIX_1_23_TO_FLOAT', -} -VGT_GRP_INDEX_16 = 0 -VGT_GRP_INDEX_32 = 1 -VGT_GRP_UINT_16 = 2 -VGT_GRP_UINT_32 = 3 -VGT_GRP_SINT_16 = 4 -VGT_GRP_SINT_32 = 5 -VGT_GRP_FLOAT_32 = 6 -VGT_GRP_AUTO_PRIM = 7 -VGT_GRP_FIX_1_23_TO_FLOAT = 8 -VGT_GROUP_CONV_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GS_MODE_TYPE' -VGT_GS_MODE_TYPE__enumvalues = { - 0: 'GS_OFF', - 1: 'GS_SCENARIO_A', - 2: 'GS_SCENARIO_B', - 3: 'GS_SCENARIO_G', - 4: 'GS_SCENARIO_C', - 5: 'SPRITE_EN', -} -GS_OFF = 0 -GS_SCENARIO_A = 1 -GS_SCENARIO_B = 2 -GS_SCENARIO_G = 3 -GS_SCENARIO_C = 4 -SPRITE_EN = 5 -VGT_GS_MODE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GS_OUTPRIM_TYPE' -VGT_GS_OUTPRIM_TYPE__enumvalues = { - 0: 'POINTLIST', - 1: 'LINESTRIP', - 2: 'TRISTRIP', - 3: 'RECT_2D', - 4: 'RECTLIST', -} -POINTLIST = 0 -LINESTRIP = 1 -TRISTRIP = 2 -RECT_2D = 3 -RECTLIST = 4 -VGT_GS_OUTPRIM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_INDEX_TYPE_MODE' -VGT_INDEX_TYPE_MODE__enumvalues = { - 0: 'VGT_INDEX_16', - 1: 'VGT_INDEX_32', - 2: 'VGT_INDEX_8', -} -VGT_INDEX_16 = 0 -VGT_INDEX_32 = 1 -VGT_INDEX_8 = 2 -VGT_INDEX_TYPE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_OUTPATH_SELECT' -VGT_OUTPATH_SELECT__enumvalues = { - 0: 'VGT_OUTPATH_VTX_REUSE', - 1: 'VGT_OUTPATH_GS_BLOCK', - 2: 'VGT_OUTPATH_HS_BLOCK', - 3: 'VGT_OUTPATH_PRIM_GEN', - 4: 'VGT_OUTPATH_TE_PRIM_GEN', - 5: 'VGT_OUTPATH_TE_GS_BLOCK', - 6: 'VGT_OUTPATH_TE_OUTPUT', -} -VGT_OUTPATH_VTX_REUSE = 0 -VGT_OUTPATH_GS_BLOCK = 1 -VGT_OUTPATH_HS_BLOCK = 2 -VGT_OUTPATH_PRIM_GEN = 3 -VGT_OUTPATH_TE_PRIM_GEN = 4 -VGT_OUTPATH_TE_GS_BLOCK = 5 -VGT_OUTPATH_TE_OUTPUT = 6 -VGT_OUTPATH_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_OUT_PRIM_TYPE' -VGT_OUT_PRIM_TYPE__enumvalues = { - 0: 'VGT_OUT_POINT', - 1: 'VGT_OUT_LINE', - 2: 'VGT_OUT_TRI', - 3: 'VGT_OUT_2D_RECT', - 4: 'VGT_OUT_RECT_V0', - 5: 'VGT_OUT_DUMMY_1', - 6: 'VGT_OUT_DUMMY_2', - 7: 'VGT_OUT_DUMMY_3', - 8: 'VGT_OUT_PATCH', - 9: 'VGT_OUT_LINE_ADJ', - 10: 'VGT_OUT_TRI_ADJ', -} -VGT_OUT_POINT = 0 -VGT_OUT_LINE = 1 -VGT_OUT_TRI = 2 -VGT_OUT_2D_RECT = 3 -VGT_OUT_RECT_V0 = 4 -VGT_OUT_DUMMY_1 = 5 -VGT_OUT_DUMMY_2 = 6 -VGT_OUT_DUMMY_3 = 7 -VGT_OUT_PATCH = 8 -VGT_OUT_LINE_ADJ = 9 -VGT_OUT_TRI_ADJ = 10 -VGT_OUT_PRIM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_RDREQ_POLICY' -VGT_RDREQ_POLICY__enumvalues = { - 0: 'VGT_POLICY_LRU', - 1: 'VGT_POLICY_STREAM', - 2: 'VGT_POLICY_BYPASS', -} -VGT_POLICY_LRU = 0 -VGT_POLICY_STREAM = 1 -VGT_POLICY_BYPASS = 2 -VGT_RDREQ_POLICY = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_SPEC_DATA_READ' -VGT_SPEC_DATA_READ__enumvalues = { - 0: 'VGT_SPEC_DATA_READ_AUTO', - 1: 'VGT_SPEC_DATA_READ_FORCE_ON', - 2: 'VGT_SPEC_DATA_READ_FORCE_OFF', -} -VGT_SPEC_DATA_READ_AUTO = 0 -VGT_SPEC_DATA_READ_FORCE_ON = 1 -VGT_SPEC_DATA_READ_FORCE_OFF = 2 -VGT_SPEC_DATA_READ = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_GS_EN' -VGT_STAGES_GS_EN__enumvalues = { - 0: 'GS_STAGE_OFF', - 1: 'GS_STAGE_ON', -} -GS_STAGE_OFF = 0 -GS_STAGE_ON = 1 -VGT_STAGES_GS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_HS_EN' -VGT_STAGES_HS_EN__enumvalues = { - 0: 'HS_STAGE_OFF', - 1: 'HS_STAGE_ON', -} -HS_STAGE_OFF = 0 -HS_STAGE_ON = 1 -VGT_STAGES_HS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_TEMPORAL' -VGT_TEMPORAL__enumvalues = { - 0: 'VGT_TEMPORAL_NORMAL', - 1: 'VGT_TEMPORAL_HIGH_PRIORITY', - 2: 'VGT_TEMPORAL_STREAM', - 3: 'VGT_TEMPORAL_DISCARD', -} -VGT_TEMPORAL_NORMAL = 0 -VGT_TEMPORAL_HIGH_PRIORITY = 1 -VGT_TEMPORAL_STREAM = 2 -VGT_TEMPORAL_DISCARD = 3 -VGT_TEMPORAL = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_TESS_PARTITION' -VGT_TESS_PARTITION__enumvalues = { - 0: 'PART_INTEGER', - 1: 'PART_POW2', - 2: 'PART_FRAC_ODD', - 3: 'PART_FRAC_EVEN', -} -PART_INTEGER = 0 -PART_POW2 = 1 -PART_FRAC_ODD = 2 -PART_FRAC_EVEN = 3 -VGT_TESS_PARTITION = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_TESS_TOPOLOGY' -VGT_TESS_TOPOLOGY__enumvalues = { - 0: 'OUTPUT_POINT', - 1: 'OUTPUT_LINE', - 2: 'OUTPUT_TRIANGLE_CW', - 3: 'OUTPUT_TRIANGLE_CCW', -} -OUTPUT_POINT = 0 -OUTPUT_LINE = 1 -OUTPUT_TRIANGLE_CW = 2 -OUTPUT_TRIANGLE_CCW = 3 -VGT_TESS_TOPOLOGY = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_TESS_TYPE' -VGT_TESS_TYPE__enumvalues = { - 0: 'TESS_ISOLINE', - 1: 'TESS_TRIANGLE', - 2: 'TESS_QUAD', -} -TESS_ISOLINE = 0 -TESS_TRIANGLE = 1 -TESS_QUAD = 2 -VGT_TESS_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'WD_IA_DRAW_REG_XFER' -WD_IA_DRAW_REG_XFER__enumvalues = { - 0: 'WD_IA_DRAW_REG_XFER_VGT_INSTANCE_BASE_ID', - 1: 'WD_IA_DRAW_REG_XFER_VGT_MULTI_PRIM_IB_RESET_EN', - 2: 'WD_IA_DRAW_REG_XFER_VGT_GS_OUT_PRIM_TYPE', - 3: 'WD_IA_DRAW_REG_XFER_GE_CNTL', - 4: 'WD_IA_DRAW_REG_XFER_VGT_PRIMITIVE_TYPE', - 5: 'WD_IA_DRAW_REG_XFER_GFX_PIPE_CONTROL', - 6: 'WD_IA_DRAW_REG_XFER_GE_USER_VGPR_EN', - 7: 'WD_IA_DRAW_REG_XFER_FL_MS_WG_DIM', - 8: 'WD_IA_DRAW_REG_XFER_FL_MS_WG_DIM_1', - 9: 'WD_IA_DRAW_REG_XFER_FL_MS_EXP_ALLOC', - 10: 'WD_IA_DRAW_REG_XFER_FL_MS_TG_SIZE', - 11: 'WD_IA_DRAW_REG_XFER_VGT_DRAW_PAYLOAD_CNTL', - 12: 'WD_IA_DRAW_REG_XFER_GE_STEREO_CNTL', - 13: 'WD_IA_DRAW_REG_XFER_VGT_PRIMITIVEID_RESET', - 14: 'WD_IA_DRAW_REG_XFER_VGT_PRIMITIVEID_EN', - 15: 'WD_IA_DRAW_REG_XFER_GE_USER_VGPR1', - 16: 'WD_IA_DRAW_REG_XFER_GE_USER_VGPR2', - 17: 'WD_IA_DRAW_REG_XFER_GE_USER_VGPR3', - 18: 'WD_IA_DRAW_REG_XFER_GE_VRS_RATE', - 19: 'WD_IA_DRAW_REG_XFER_GE_PC_ALLOC', - 20: 'WD_IA_DRAW_REG_XFER_SPI_SHADER_GS_OUT_CONFIG_PS', - 21: 'WD_IA_DRAW_REG_XFER_GE_GS_THROTTLE', -} -WD_IA_DRAW_REG_XFER_VGT_INSTANCE_BASE_ID = 0 -WD_IA_DRAW_REG_XFER_VGT_MULTI_PRIM_IB_RESET_EN = 1 -WD_IA_DRAW_REG_XFER_VGT_GS_OUT_PRIM_TYPE = 2 -WD_IA_DRAW_REG_XFER_GE_CNTL = 3 -WD_IA_DRAW_REG_XFER_VGT_PRIMITIVE_TYPE = 4 -WD_IA_DRAW_REG_XFER_GFX_PIPE_CONTROL = 5 -WD_IA_DRAW_REG_XFER_GE_USER_VGPR_EN = 6 -WD_IA_DRAW_REG_XFER_FL_MS_WG_DIM = 7 -WD_IA_DRAW_REG_XFER_FL_MS_WG_DIM_1 = 8 -WD_IA_DRAW_REG_XFER_FL_MS_EXP_ALLOC = 9 -WD_IA_DRAW_REG_XFER_FL_MS_TG_SIZE = 10 -WD_IA_DRAW_REG_XFER_VGT_DRAW_PAYLOAD_CNTL = 11 -WD_IA_DRAW_REG_XFER_GE_STEREO_CNTL = 12 -WD_IA_DRAW_REG_XFER_VGT_PRIMITIVEID_RESET = 13 -WD_IA_DRAW_REG_XFER_VGT_PRIMITIVEID_EN = 14 -WD_IA_DRAW_REG_XFER_GE_USER_VGPR1 = 15 -WD_IA_DRAW_REG_XFER_GE_USER_VGPR2 = 16 -WD_IA_DRAW_REG_XFER_GE_USER_VGPR3 = 17 -WD_IA_DRAW_REG_XFER_GE_VRS_RATE = 18 -WD_IA_DRAW_REG_XFER_GE_PC_ALLOC = 19 -WD_IA_DRAW_REG_XFER_SPI_SHADER_GS_OUT_CONFIG_PS = 20 -WD_IA_DRAW_REG_XFER_GE_GS_THROTTLE = 21 -WD_IA_DRAW_REG_XFER = ctypes.c_uint32 # enum - -# values for enumeration 'WD_IA_DRAW_SOURCE' -WD_IA_DRAW_SOURCE__enumvalues = { - 0: 'WD_IA_DRAW_SOURCE_DMA', - 1: 'WD_IA_DRAW_SOURCE_IMMD', - 2: 'WD_IA_DRAW_SOURCE_AUTO', - 3: 'WD_IA_DRAW_SOURCE_OPAQ', -} -WD_IA_DRAW_SOURCE_DMA = 0 -WD_IA_DRAW_SOURCE_IMMD = 1 -WD_IA_DRAW_SOURCE_AUTO = 2 -WD_IA_DRAW_SOURCE_OPAQ = 3 -WD_IA_DRAW_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'WD_IA_DRAW_TYPE' -WD_IA_DRAW_TYPE__enumvalues = { - 0: 'WD_IA_DRAW_TYPE_DI_MM0', - 1: 'WD_IA_DRAW_TYPE_INDX_OFF', - 2: 'WD_IA_DRAW_TYPE_EVENT_INIT', - 3: 'WD_IA_DRAW_TYPE_EVENT_ADDR', - 4: 'WD_IA_DRAW_TYPE_REG_XFER', - 5: 'WD_IA_DRAW_TYPE_MIN_INDX', - 6: 'WD_IA_DRAW_TYPE_MAX_INDX', - 7: 'WD_IA_DRAW_TYPE_IMM_DATA', -} -WD_IA_DRAW_TYPE_DI_MM0 = 0 -WD_IA_DRAW_TYPE_INDX_OFF = 1 -WD_IA_DRAW_TYPE_EVENT_INIT = 2 -WD_IA_DRAW_TYPE_EVENT_ADDR = 3 -WD_IA_DRAW_TYPE_REG_XFER = 4 -WD_IA_DRAW_TYPE_MIN_INDX = 5 -WD_IA_DRAW_TYPE_MAX_INDX = 6 -WD_IA_DRAW_TYPE_IMM_DATA = 7 -WD_IA_DRAW_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CHA_PERF_SEL' -CHA_PERF_SEL__enumvalues = { - 0: 'CHA_PERF_SEL_BUSY', - 1: 'CHA_PERF_SEL_STALL_CHC0', - 2: 'CHA_PERF_SEL_STALL_CHC1', - 3: 'CHA_PERF_SEL_STALL_CHC2', - 4: 'CHA_PERF_SEL_STALL_CHC3', - 5: 'CHA_PERF_SEL_REQUEST_CHC0', - 6: 'CHA_PERF_SEL_REQUEST_CHC1', - 7: 'CHA_PERF_SEL_REQUEST_CHC2', - 8: 'CHA_PERF_SEL_REQUEST_CHC3', - 9: 'CHA_PERF_SEL_MEM_32B_WDS_CHC0', - 10: 'CHA_PERF_SEL_MEM_32B_WDS_CHC1', - 11: 'CHA_PERF_SEL_MEM_32B_WDS_CHC2', - 12: 'CHA_PERF_SEL_MEM_32B_WDS_CHC3', - 13: 'CHA_PERF_SEL_IO_32B_WDS_CHC0', - 14: 'CHA_PERF_SEL_IO_32B_WDS_CHC1', - 15: 'CHA_PERF_SEL_IO_32B_WDS_CHC2', - 16: 'CHA_PERF_SEL_IO_32B_WDS_CHC3', - 17: 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC0', - 18: 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC1', - 19: 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC2', - 20: 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC3', - 21: 'CHA_PERF_SEL_IO_BURST_COUNT_CHC0', - 22: 'CHA_PERF_SEL_IO_BURST_COUNT_CHC1', - 23: 'CHA_PERF_SEL_IO_BURST_COUNT_CHC2', - 24: 'CHA_PERF_SEL_IO_BURST_COUNT_CHC3', - 25: 'CHA_PERF_SEL_ARB_REQUESTS', - 26: 'CHA_PERF_SEL_REQ_INFLIGHT_LEVEL', - 27: 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC0', - 28: 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC1', - 29: 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC2', - 30: 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC3', - 31: 'CHA_PERF_SEL_CYCLE', -} -CHA_PERF_SEL_BUSY = 0 -CHA_PERF_SEL_STALL_CHC0 = 1 -CHA_PERF_SEL_STALL_CHC1 = 2 -CHA_PERF_SEL_STALL_CHC2 = 3 -CHA_PERF_SEL_STALL_CHC3 = 4 -CHA_PERF_SEL_REQUEST_CHC0 = 5 -CHA_PERF_SEL_REQUEST_CHC1 = 6 -CHA_PERF_SEL_REQUEST_CHC2 = 7 -CHA_PERF_SEL_REQUEST_CHC3 = 8 -CHA_PERF_SEL_MEM_32B_WDS_CHC0 = 9 -CHA_PERF_SEL_MEM_32B_WDS_CHC1 = 10 -CHA_PERF_SEL_MEM_32B_WDS_CHC2 = 11 -CHA_PERF_SEL_MEM_32B_WDS_CHC3 = 12 -CHA_PERF_SEL_IO_32B_WDS_CHC0 = 13 -CHA_PERF_SEL_IO_32B_WDS_CHC1 = 14 -CHA_PERF_SEL_IO_32B_WDS_CHC2 = 15 -CHA_PERF_SEL_IO_32B_WDS_CHC3 = 16 -CHA_PERF_SEL_MEM_BURST_COUNT_CHC0 = 17 -CHA_PERF_SEL_MEM_BURST_COUNT_CHC1 = 18 -CHA_PERF_SEL_MEM_BURST_COUNT_CHC2 = 19 -CHA_PERF_SEL_MEM_BURST_COUNT_CHC3 = 20 -CHA_PERF_SEL_IO_BURST_COUNT_CHC0 = 21 -CHA_PERF_SEL_IO_BURST_COUNT_CHC1 = 22 -CHA_PERF_SEL_IO_BURST_COUNT_CHC2 = 23 -CHA_PERF_SEL_IO_BURST_COUNT_CHC3 = 24 -CHA_PERF_SEL_ARB_REQUESTS = 25 -CHA_PERF_SEL_REQ_INFLIGHT_LEVEL = 26 -CHA_PERF_SEL_STALL_RET_CONFLICT_CHC0 = 27 -CHA_PERF_SEL_STALL_RET_CONFLICT_CHC1 = 28 -CHA_PERF_SEL_STALL_RET_CONFLICT_CHC2 = 29 -CHA_PERF_SEL_STALL_RET_CONFLICT_CHC3 = 30 -CHA_PERF_SEL_CYCLE = 31 -CHA_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CHC_PERF_SEL' -CHC_PERF_SEL__enumvalues = { - 0: 'CHC_PERF_SEL_CYCLE', - 1: 'CHC_PERF_SEL_BUSY', - 2: 'CHC_PERF_SEL_STARVE', - 3: 'CHC_PERF_SEL_ARB_RET_LEVEL', - 4: 'CHC_PERF_SEL_GL2_REQ_READ_LATENCY', - 5: 'CHC_PERF_SEL_GL2_REQ_WRITE_LATENCY', - 6: 'CHC_PERF_SEL_REQ', - 7: 'CHC_PERF_SEL_REQ_ATOMIC_WITH_RET', - 8: 'CHC_PERF_SEL_REQ_ATOMIC_WITHOUT_RET', - 9: 'CHC_PERF_SEL_REQ_NOP_ACK', - 10: 'CHC_PERF_SEL_REQ_NOP_RTN0', - 11: 'CHC_PERF_SEL_REQ_READ', - 12: 'CHC_PERF_SEL_REQ_READ_128B', - 13: 'CHC_PERF_SEL_REQ_READ_32B', - 14: 'CHC_PERF_SEL_REQ_READ_64B', - 15: 'CHC_PERF_SEL_REQ_WRITE', - 16: 'CHC_PERF_SEL_REQ_WRITE_32B', - 17: 'CHC_PERF_SEL_REQ_WRITE_64B', - 18: 'CHC_PERF_SEL_STALL_GL2_GL1', - 19: 'CHC_PERF_SEL_STALL_BUFFER_FULL', - 20: 'CHC_PERF_SEL_REQ_CLIENT0', - 21: 'CHC_PERF_SEL_REQ_CLIENT1', - 22: 'CHC_PERF_SEL_REQ_CLIENT2', - 23: 'CHC_PERF_SEL_REQ_CLIENT3', - 24: 'CHC_PERF_SEL_REQ_CLIENT4', - 25: 'CHC_PERF_SEL_REQ_CLIENT5', - 26: 'CHC_PERF_SEL_REQ_CLIENT6', - 27: 'CHC_PERF_SEL_REQ_CLIENT7', - 28: 'CHC_PERF_SEL_REQ_CLIENT8', - 29: 'CHC_PERF_SEL_REQ_CLIENT9', - 30: 'CHC_PERF_SEL_REQ_CLIENT10', - 31: 'CHC_PERF_SEL_REQ_CLIENT11', - 32: 'CHC_PERF_SEL_REQ_CLIENT12', - 33: 'CHC_PERF_SEL_REQ_CLIENT13', - 34: 'CHC_PERF_SEL_REQ_CLIENT14', - 35: 'CHC_PERF_SEL_REQ_CLIENT15', - 36: 'CHC_PERF_SEL_REQ_CLIENT16', - 37: 'CHC_PERF_SEL_REQ_CLIENT17', - 38: 'CHC_PERF_SEL_REQ_CLIENT18', - 39: 'CHC_PERF_SEL_REQ_CLIENT19', - 40: 'CHC_PERF_SEL_REQ_CLIENT20', - 41: 'CHC_PERF_SEL_REQ_CLIENT21', - 42: 'CHC_PERF_SEL_REQ_CLIENT22', - 43: 'CHC_PERF_SEL_REQ_CLIENT23', -} -CHC_PERF_SEL_CYCLE = 0 -CHC_PERF_SEL_BUSY = 1 -CHC_PERF_SEL_STARVE = 2 -CHC_PERF_SEL_ARB_RET_LEVEL = 3 -CHC_PERF_SEL_GL2_REQ_READ_LATENCY = 4 -CHC_PERF_SEL_GL2_REQ_WRITE_LATENCY = 5 -CHC_PERF_SEL_REQ = 6 -CHC_PERF_SEL_REQ_ATOMIC_WITH_RET = 7 -CHC_PERF_SEL_REQ_ATOMIC_WITHOUT_RET = 8 -CHC_PERF_SEL_REQ_NOP_ACK = 9 -CHC_PERF_SEL_REQ_NOP_RTN0 = 10 -CHC_PERF_SEL_REQ_READ = 11 -CHC_PERF_SEL_REQ_READ_128B = 12 -CHC_PERF_SEL_REQ_READ_32B = 13 -CHC_PERF_SEL_REQ_READ_64B = 14 -CHC_PERF_SEL_REQ_WRITE = 15 -CHC_PERF_SEL_REQ_WRITE_32B = 16 -CHC_PERF_SEL_REQ_WRITE_64B = 17 -CHC_PERF_SEL_STALL_GL2_GL1 = 18 -CHC_PERF_SEL_STALL_BUFFER_FULL = 19 -CHC_PERF_SEL_REQ_CLIENT0 = 20 -CHC_PERF_SEL_REQ_CLIENT1 = 21 -CHC_PERF_SEL_REQ_CLIENT2 = 22 -CHC_PERF_SEL_REQ_CLIENT3 = 23 -CHC_PERF_SEL_REQ_CLIENT4 = 24 -CHC_PERF_SEL_REQ_CLIENT5 = 25 -CHC_PERF_SEL_REQ_CLIENT6 = 26 -CHC_PERF_SEL_REQ_CLIENT7 = 27 -CHC_PERF_SEL_REQ_CLIENT8 = 28 -CHC_PERF_SEL_REQ_CLIENT9 = 29 -CHC_PERF_SEL_REQ_CLIENT10 = 30 -CHC_PERF_SEL_REQ_CLIENT11 = 31 -CHC_PERF_SEL_REQ_CLIENT12 = 32 -CHC_PERF_SEL_REQ_CLIENT13 = 33 -CHC_PERF_SEL_REQ_CLIENT14 = 34 -CHC_PERF_SEL_REQ_CLIENT15 = 35 -CHC_PERF_SEL_REQ_CLIENT16 = 36 -CHC_PERF_SEL_REQ_CLIENT17 = 37 -CHC_PERF_SEL_REQ_CLIENT18 = 38 -CHC_PERF_SEL_REQ_CLIENT19 = 39 -CHC_PERF_SEL_REQ_CLIENT20 = 40 -CHC_PERF_SEL_REQ_CLIENT21 = 41 -CHC_PERF_SEL_REQ_CLIENT22 = 42 -CHC_PERF_SEL_REQ_CLIENT23 = 43 -CHC_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_PERF_SEL' -GRBM_PERF_SEL__enumvalues = { - 0: 'GRBM_PERF_SEL_COUNT', - 1: 'GRBM_PERF_SEL_USER_DEFINED', - 2: 'GRBM_PERF_SEL_GUI_ACTIVE', - 3: 'GRBM_PERF_SEL_CP_BUSY', - 4: 'GRBM_PERF_SEL_CP_COHER_BUSY', - 5: 'GRBM_PERF_SEL_CP_DMA_BUSY', - 6: 'GRBM_PERF_SEL_CB_BUSY', - 7: 'GRBM_PERF_SEL_DB_BUSY', - 8: 'GRBM_PERF_SEL_PA_BUSY', - 9: 'GRBM_PERF_SEL_SC_BUSY', - 11: 'GRBM_PERF_SEL_SPI_BUSY', - 12: 'GRBM_PERF_SEL_SX_BUSY', - 13: 'GRBM_PERF_SEL_TA_BUSY', - 14: 'GRBM_PERF_SEL_CB_CLEAN', - 15: 'GRBM_PERF_SEL_DB_CLEAN', - 26: 'GRBM_PERF_SEL_BCI_BUSY', - 27: 'GRBM_PERF_SEL_RLC_BUSY', - 28: 'GRBM_PERF_SEL_TCP_BUSY', - 29: 'GRBM_PERF_SEL_CPG_BUSY', - 30: 'GRBM_PERF_SEL_CPC_BUSY', - 31: 'GRBM_PERF_SEL_CPF_BUSY', - 32: 'GRBM_PERF_SEL_GE_BUSY', - 33: 'GRBM_PERF_SEL_GE_NO_DMA_BUSY', - 34: 'GRBM_PERF_SEL_UTCL2_BUSY', - 35: 'GRBM_PERF_SEL_EA_BUSY', - 39: 'GRBM_PERF_SEL_UTCL1_BUSY', - 40: 'GRBM_PERF_SEL_GL2CC_BUSY', - 41: 'GRBM_PERF_SEL_SDMA_BUSY', - 42: 'GRBM_PERF_SEL_CH_BUSY', - 44: 'GRBM_PERF_SEL_PMM_BUSY', - 45: 'GRBM_PERF_SEL_GUS_BUSY', - 46: 'GRBM_PERF_SEL_GL1CC_BUSY', - 47: 'GRBM_PERF_SEL_ANY_ACTIVE_F_BUSY', - 48: 'GRBM_PERF_SEL_GL1XCC_BUSY', - 49: 'GRBM_PERF_SEL_PC_BUSY', -} -GRBM_PERF_SEL_COUNT = 0 -GRBM_PERF_SEL_USER_DEFINED = 1 -GRBM_PERF_SEL_GUI_ACTIVE = 2 -GRBM_PERF_SEL_CP_BUSY = 3 -GRBM_PERF_SEL_CP_COHER_BUSY = 4 -GRBM_PERF_SEL_CP_DMA_BUSY = 5 -GRBM_PERF_SEL_CB_BUSY = 6 -GRBM_PERF_SEL_DB_BUSY = 7 -GRBM_PERF_SEL_PA_BUSY = 8 -GRBM_PERF_SEL_SC_BUSY = 9 -GRBM_PERF_SEL_SPI_BUSY = 11 -GRBM_PERF_SEL_SX_BUSY = 12 -GRBM_PERF_SEL_TA_BUSY = 13 -GRBM_PERF_SEL_CB_CLEAN = 14 -GRBM_PERF_SEL_DB_CLEAN = 15 -GRBM_PERF_SEL_BCI_BUSY = 26 -GRBM_PERF_SEL_RLC_BUSY = 27 -GRBM_PERF_SEL_TCP_BUSY = 28 -GRBM_PERF_SEL_CPG_BUSY = 29 -GRBM_PERF_SEL_CPC_BUSY = 30 -GRBM_PERF_SEL_CPF_BUSY = 31 -GRBM_PERF_SEL_GE_BUSY = 32 -GRBM_PERF_SEL_GE_NO_DMA_BUSY = 33 -GRBM_PERF_SEL_UTCL2_BUSY = 34 -GRBM_PERF_SEL_EA_BUSY = 35 -GRBM_PERF_SEL_UTCL1_BUSY = 39 -GRBM_PERF_SEL_GL2CC_BUSY = 40 -GRBM_PERF_SEL_SDMA_BUSY = 41 -GRBM_PERF_SEL_CH_BUSY = 42 -GRBM_PERF_SEL_PMM_BUSY = 44 -GRBM_PERF_SEL_GUS_BUSY = 45 -GRBM_PERF_SEL_GL1CC_BUSY = 46 -GRBM_PERF_SEL_ANY_ACTIVE_F_BUSY = 47 -GRBM_PERF_SEL_GL1XCC_BUSY = 48 -GRBM_PERF_SEL_PC_BUSY = 49 -GRBM_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPC_LATENCY_STATS_SEL' -CPC_LATENCY_STATS_SEL__enumvalues = { - 0: 'CPC_LATENCY_STATS_SEL_XACK_MAX', - 1: 'CPC_LATENCY_STATS_SEL_XACK_MIN', - 2: 'CPC_LATENCY_STATS_SEL_XACK_LAST', - 3: 'CPC_LATENCY_STATS_SEL_XNACK_MAX', - 4: 'CPC_LATENCY_STATS_SEL_XNACK_MIN', - 5: 'CPC_LATENCY_STATS_SEL_XNACK_LAST', - 6: 'CPC_LATENCY_STATS_SEL_INVAL_MAX', - 7: 'CPC_LATENCY_STATS_SEL_INVAL_MIN', - 8: 'CPC_LATENCY_STATS_SEL_INVAL_LAST', -} -CPC_LATENCY_STATS_SEL_XACK_MAX = 0 -CPC_LATENCY_STATS_SEL_XACK_MIN = 1 -CPC_LATENCY_STATS_SEL_XACK_LAST = 2 -CPC_LATENCY_STATS_SEL_XNACK_MAX = 3 -CPC_LATENCY_STATS_SEL_XNACK_MIN = 4 -CPC_LATENCY_STATS_SEL_XNACK_LAST = 5 -CPC_LATENCY_STATS_SEL_INVAL_MAX = 6 -CPC_LATENCY_STATS_SEL_INVAL_MIN = 7 -CPC_LATENCY_STATS_SEL_INVAL_LAST = 8 -CPC_LATENCY_STATS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPC_PERFCOUNT_SEL' -CPC_PERFCOUNT_SEL__enumvalues = { - 0: 'CPC_PERF_SEL_ALWAYS_COUNT', - 1: 'CPC_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', - 2: 'CPC_PERF_SEL_RCIU_STALL_PRIV_VIOLATION', - 5: 'CPC_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 6: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY', - 7: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY_PERF', - 8: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READ', - 9: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_MEM_READ', - 10: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_MEM_WRITE', - 11: 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ', - 12: 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ_PERF', - 13: 'CPC_PERF_SEL_ME1_BUSY_FOR_PACKET_DECODE', - 14: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY', - 15: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY_PERF', - 16: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READ', - 17: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_MEM_READ', - 18: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_MEM_WRITE', - 19: 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ', - 20: 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ_PERF', - 21: 'CPC_PERF_SEL_ME2_BUSY_FOR_PACKET_DECODE', - 22: 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 23: 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', - 24: 'CPC_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 25: 'CPC_PERF_SEL_CPC_STAT_BUSY', - 26: 'CPC_PERF_SEL_CPC_STAT_IDLE', - 27: 'CPC_PERF_SEL_CPC_STAT_STALL', - 28: 'CPC_PERF_SEL_CPC_TCIU_BUSY', - 29: 'CPC_PERF_SEL_CPC_TCIU_IDLE', - 30: 'CPC_PERF_SEL_CPC_UTCL2IU_BUSY', - 31: 'CPC_PERF_SEL_CPC_UTCL2IU_IDLE', - 32: 'CPC_PERF_SEL_CPC_UTCL2IU_STALL', - 33: 'CPC_PERF_SEL_ME1_DC0_SPI_BUSY', - 34: 'CPC_PERF_SEL_ME2_DC1_SPI_BUSY', - 35: 'CPC_PERF_SEL_CPC_GCRIU_BUSY', - 36: 'CPC_PERF_SEL_CPC_GCRIU_IDLE', - 37: 'CPC_PERF_SEL_CPC_GCRIU_STALL', - 38: 'CPC_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 39: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_TCIU_READ', - 40: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_TCIU_READ', - 41: 'CPC_PERF_SEL_CPC_UTCL2IU_XACK', - 42: 'CPC_PERF_SEL_CPC_UTCL2IU_XNACK', - 43: 'CPC_PERF_SEL_MEC_INSTR_CACHE_HIT', - 44: 'CPC_PERF_SEL_MEC_INSTR_CACHE_MISS', - 45: 'CPC_PERF_SEL_MES_THREAD0', - 46: 'CPC_PERF_SEL_MES_THREAD1', - 47: 'CPC_PERF_SEL_TCIU_STALL_WAIT_ON_TAGS', - 48: 'CPC_PERF_SEL_TCIU_WRITE_REQUEST_SENT', - 49: 'CPC_PERF_SEL_TCIU_READ_REQUEST_SENT', - 50: 'CPC_PERF_SEL_GUS_WRITE_REQUEST_SENT', - 51: 'CPC_PERF_SEL_GUS_READ_REQUEST_SENT', - 52: 'CPC_PERF_SEL_MEC_THREAD0', - 53: 'CPC_PERF_SEL_MEC_THREAD1', - 54: 'CPC_PERF_SEL_MEC_THREAD2', - 55: 'CPC_PERF_SEL_MEC_THREAD3', -} -CPC_PERF_SEL_ALWAYS_COUNT = 0 -CPC_PERF_SEL_RCIU_STALL_WAIT_ON_FREE = 1 -CPC_PERF_SEL_RCIU_STALL_PRIV_VIOLATION = 2 -CPC_PERF_SEL_TCIU_STALL_WAIT_ON_FREE = 5 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY = 6 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY_PERF = 7 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READ = 8 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_MEM_READ = 9 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_MEM_WRITE = 10 -CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ = 11 -CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ_PERF = 12 -CPC_PERF_SEL_ME1_BUSY_FOR_PACKET_DECODE = 13 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY = 14 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY_PERF = 15 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READ = 16 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_MEM_READ = 17 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_MEM_WRITE = 18 -CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ = 19 -CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ_PERF = 20 -CPC_PERF_SEL_ME2_BUSY_FOR_PACKET_DECODE = 21 -CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE = 22 -CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS = 23 -CPC_PERF_SEL_UTCL1_STALL_ON_TRANSLATION = 24 -CPC_PERF_SEL_CPC_STAT_BUSY = 25 -CPC_PERF_SEL_CPC_STAT_IDLE = 26 -CPC_PERF_SEL_CPC_STAT_STALL = 27 -CPC_PERF_SEL_CPC_TCIU_BUSY = 28 -CPC_PERF_SEL_CPC_TCIU_IDLE = 29 -CPC_PERF_SEL_CPC_UTCL2IU_BUSY = 30 -CPC_PERF_SEL_CPC_UTCL2IU_IDLE = 31 -CPC_PERF_SEL_CPC_UTCL2IU_STALL = 32 -CPC_PERF_SEL_ME1_DC0_SPI_BUSY = 33 -CPC_PERF_SEL_ME2_DC1_SPI_BUSY = 34 -CPC_PERF_SEL_CPC_GCRIU_BUSY = 35 -CPC_PERF_SEL_CPC_GCRIU_IDLE = 36 -CPC_PERF_SEL_CPC_GCRIU_STALL = 37 -CPC_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE = 38 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_TCIU_READ = 39 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_TCIU_READ = 40 -CPC_PERF_SEL_CPC_UTCL2IU_XACK = 41 -CPC_PERF_SEL_CPC_UTCL2IU_XNACK = 42 -CPC_PERF_SEL_MEC_INSTR_CACHE_HIT = 43 -CPC_PERF_SEL_MEC_INSTR_CACHE_MISS = 44 -CPC_PERF_SEL_MES_THREAD0 = 45 -CPC_PERF_SEL_MES_THREAD1 = 46 -CPC_PERF_SEL_TCIU_STALL_WAIT_ON_TAGS = 47 -CPC_PERF_SEL_TCIU_WRITE_REQUEST_SENT = 48 -CPC_PERF_SEL_TCIU_READ_REQUEST_SENT = 49 -CPC_PERF_SEL_GUS_WRITE_REQUEST_SENT = 50 -CPC_PERF_SEL_GUS_READ_REQUEST_SENT = 51 -CPC_PERF_SEL_MEC_THREAD0 = 52 -CPC_PERF_SEL_MEC_THREAD1 = 53 -CPC_PERF_SEL_MEC_THREAD2 = 54 -CPC_PERF_SEL_MEC_THREAD3 = 55 -CPC_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPF_LATENCY_STATS_SEL' -CPF_LATENCY_STATS_SEL__enumvalues = { - 0: 'CPF_LATENCY_STATS_SEL_XACK_MAX', - 1: 'CPF_LATENCY_STATS_SEL_XACK_MIN', - 2: 'CPF_LATENCY_STATS_SEL_XACK_LAST', - 3: 'CPF_LATENCY_STATS_SEL_XNACK_MAX', - 4: 'CPF_LATENCY_STATS_SEL_XNACK_MIN', - 5: 'CPF_LATENCY_STATS_SEL_XNACK_LAST', - 6: 'CPF_LATENCY_STATS_SEL_READ_MAX', - 7: 'CPF_LATENCY_STATS_SEL_READ_MIN', - 8: 'CPF_LATENCY_STATS_SEL_READ_LAST', - 9: 'CPF_LATENCY_STATS_SEL_INVAL_MAX', - 10: 'CPF_LATENCY_STATS_SEL_INVAL_MIN', - 11: 'CPF_LATENCY_STATS_SEL_INVAL_LAST', -} -CPF_LATENCY_STATS_SEL_XACK_MAX = 0 -CPF_LATENCY_STATS_SEL_XACK_MIN = 1 -CPF_LATENCY_STATS_SEL_XACK_LAST = 2 -CPF_LATENCY_STATS_SEL_XNACK_MAX = 3 -CPF_LATENCY_STATS_SEL_XNACK_MIN = 4 -CPF_LATENCY_STATS_SEL_XNACK_LAST = 5 -CPF_LATENCY_STATS_SEL_READ_MAX = 6 -CPF_LATENCY_STATS_SEL_READ_MIN = 7 -CPF_LATENCY_STATS_SEL_READ_LAST = 8 -CPF_LATENCY_STATS_SEL_INVAL_MAX = 9 -CPF_LATENCY_STATS_SEL_INVAL_MIN = 10 -CPF_LATENCY_STATS_SEL_INVAL_LAST = 11 -CPF_LATENCY_STATS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPF_PERFCOUNTWINDOW_SEL' -CPF_PERFCOUNTWINDOW_SEL__enumvalues = { - 0: 'CPF_PERFWINDOW_SEL_CSF', - 1: 'CPF_PERFWINDOW_SEL_HQD1', - 2: 'CPF_PERFWINDOW_SEL_HQD2', - 3: 'CPF_PERFWINDOW_SEL_RDMA', - 4: 'CPF_PERFWINDOW_SEL_RWPP', -} -CPF_PERFWINDOW_SEL_CSF = 0 -CPF_PERFWINDOW_SEL_HQD1 = 1 -CPF_PERFWINDOW_SEL_HQD2 = 2 -CPF_PERFWINDOW_SEL_RDMA = 3 -CPF_PERFWINDOW_SEL_RWPP = 4 -CPF_PERFCOUNTWINDOW_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPF_PERFCOUNT_SEL' -CPF_PERFCOUNT_SEL__enumvalues = { - 0: 'CPF_PERF_SEL_ALWAYS_COUNT', - 2: 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_FREE', - 3: 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_TAGS', - 4: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_RING', - 5: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB1', - 6: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB2', - 7: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_STATE', - 10: 'CPF_PERF_SEL_CSF_STATE_FIFO_NOT_RTR', - 11: 'CPF_PERF_SEL_CSF_FETCHING_CMD_BUFFERS', - 12: 'CPF_PERF_SEL_GRBM_DWORDS_SENT', - 13: 'CPF_PERF_SEL_DYNAMIC_CLOCK_VALID', - 14: 'CPF_PERF_SEL_REGISTER_CLOCK_VALID', - 15: 'CPF_PERF_SEL_GUS_WRITE_REQUEST_SENT', - 16: 'CPF_PERF_SEL_GUS_READ_REQUEST_SENT', - 17: 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 18: 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', - 19: 'CPF_PERF_SEL_GFX_UTCL1_STALL_ON_TRANSLATION', - 20: 'CPF_PERF_SEL_CMP_UTCL1_STALL_ON_TRANSLATION', - 21: 'CPF_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', - 22: 'CPF_PERF_SEL_TCIU_WRITE_REQUEST_SENT', - 23: 'CPF_PERF_SEL_TCIU_READ_REQUEST_SENT', - 24: 'CPF_PERF_SEL_CPF_STAT_BUSY', - 25: 'CPF_PERF_SEL_CPF_STAT_IDLE', - 26: 'CPF_PERF_SEL_CPF_STAT_STALL', - 27: 'CPF_PERF_SEL_CPF_TCIU_BUSY', - 28: 'CPF_PERF_SEL_CPF_TCIU_IDLE', - 29: 'CPF_PERF_SEL_CPF_TCIU_STALL', - 30: 'CPF_PERF_SEL_CPF_UTCL2IU_BUSY', - 31: 'CPF_PERF_SEL_CPF_UTCL2IU_IDLE', - 32: 'CPF_PERF_SEL_CPF_UTCL2IU_STALL', - 33: 'CPF_PERF_SEL_CPF_GCRIU_BUSY', - 34: 'CPF_PERF_SEL_CPF_GCRIU_IDLE', - 35: 'CPF_PERF_SEL_CPF_GCRIU_STALL', - 36: 'CPF_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 37: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_DB', - 38: 'CPF_PERF_SEL_CPF_UTCL2IU_XACK', - 39: 'CPF_PERF_SEL_CPF_UTCL2IU_XNACK', - 40: 'CPF_PERF_SEL_CP_SDMA_MNGR_DMA_REQ', - 41: 'CPF_PERF_SEL_CP_SDMA_MNGR_DMA_DONE', - 42: 'CPF_PERF_SEL_CP_SDMA_MNGR_LATENCY', - 43: 'CPF_PERF_SEL_CP_SDMA_MNGR_SDMABUSY', -} -CPF_PERF_SEL_ALWAYS_COUNT = 0 -CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_FREE = 2 -CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_TAGS = 3 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_RING = 4 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB1 = 5 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB2 = 6 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_STATE = 7 -CPF_PERF_SEL_CSF_STATE_FIFO_NOT_RTR = 10 -CPF_PERF_SEL_CSF_FETCHING_CMD_BUFFERS = 11 -CPF_PERF_SEL_GRBM_DWORDS_SENT = 12 -CPF_PERF_SEL_DYNAMIC_CLOCK_VALID = 13 -CPF_PERF_SEL_REGISTER_CLOCK_VALID = 14 -CPF_PERF_SEL_GUS_WRITE_REQUEST_SENT = 15 -CPF_PERF_SEL_GUS_READ_REQUEST_SENT = 16 -CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE = 17 -CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS = 18 -CPF_PERF_SEL_GFX_UTCL1_STALL_ON_TRANSLATION = 19 -CPF_PERF_SEL_CMP_UTCL1_STALL_ON_TRANSLATION = 20 -CPF_PERF_SEL_RCIU_STALL_WAIT_ON_FREE = 21 -CPF_PERF_SEL_TCIU_WRITE_REQUEST_SENT = 22 -CPF_PERF_SEL_TCIU_READ_REQUEST_SENT = 23 -CPF_PERF_SEL_CPF_STAT_BUSY = 24 -CPF_PERF_SEL_CPF_STAT_IDLE = 25 -CPF_PERF_SEL_CPF_STAT_STALL = 26 -CPF_PERF_SEL_CPF_TCIU_BUSY = 27 -CPF_PERF_SEL_CPF_TCIU_IDLE = 28 -CPF_PERF_SEL_CPF_TCIU_STALL = 29 -CPF_PERF_SEL_CPF_UTCL2IU_BUSY = 30 -CPF_PERF_SEL_CPF_UTCL2IU_IDLE = 31 -CPF_PERF_SEL_CPF_UTCL2IU_STALL = 32 -CPF_PERF_SEL_CPF_GCRIU_BUSY = 33 -CPF_PERF_SEL_CPF_GCRIU_IDLE = 34 -CPF_PERF_SEL_CPF_GCRIU_STALL = 35 -CPF_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE = 36 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_DB = 37 -CPF_PERF_SEL_CPF_UTCL2IU_XACK = 38 -CPF_PERF_SEL_CPF_UTCL2IU_XNACK = 39 -CPF_PERF_SEL_CP_SDMA_MNGR_DMA_REQ = 40 -CPF_PERF_SEL_CP_SDMA_MNGR_DMA_DONE = 41 -CPF_PERF_SEL_CP_SDMA_MNGR_LATENCY = 42 -CPF_PERF_SEL_CP_SDMA_MNGR_SDMABUSY = 43 -CPF_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPF_SCRATCH_REG_ATOMIC_OP' -CPF_SCRATCH_REG_ATOMIC_OP__enumvalues = { - 0: 'CPF_SCRATCH_REG_ATOMIC_ADD', - 1: 'CPF_SCRATCH_REG_ATOMIC_SUB', - 2: 'CPF_SCRATCH_REG_ATOMIC_OR', - 3: 'CPF_SCRATCH_REG_ATOMIC_AND', - 4: 'CPF_SCRATCH_REG_ATOMIC_NOT', - 5: 'CPF_SCRATCH_REG_ATOMIC_MIN', - 6: 'CPF_SCRATCH_REG_ATOMIC_MAX', - 7: 'CPF_SCRATCH_REG_ATOMIC_CMPSWAP', -} -CPF_SCRATCH_REG_ATOMIC_ADD = 0 -CPF_SCRATCH_REG_ATOMIC_SUB = 1 -CPF_SCRATCH_REG_ATOMIC_OR = 2 -CPF_SCRATCH_REG_ATOMIC_AND = 3 -CPF_SCRATCH_REG_ATOMIC_NOT = 4 -CPF_SCRATCH_REG_ATOMIC_MIN = 5 -CPF_SCRATCH_REG_ATOMIC_MAX = 6 -CPF_SCRATCH_REG_ATOMIC_CMPSWAP = 7 -CPF_SCRATCH_REG_ATOMIC_OP = ctypes.c_uint32 # enum - -# values for enumeration 'CPG_LATENCY_STATS_SEL' -CPG_LATENCY_STATS_SEL__enumvalues = { - 0: 'CPG_LATENCY_STATS_SEL_XACK_MAX', - 1: 'CPG_LATENCY_STATS_SEL_XACK_MIN', - 2: 'CPG_LATENCY_STATS_SEL_XACK_LAST', - 3: 'CPG_LATENCY_STATS_SEL_XNACK_MAX', - 4: 'CPG_LATENCY_STATS_SEL_XNACK_MIN', - 5: 'CPG_LATENCY_STATS_SEL_XNACK_LAST', - 6: 'CPG_LATENCY_STATS_SEL_WRITE_MAX', - 7: 'CPG_LATENCY_STATS_SEL_WRITE_MIN', - 8: 'CPG_LATENCY_STATS_SEL_WRITE_LAST', - 9: 'CPG_LATENCY_STATS_SEL_READ_MAX', - 10: 'CPG_LATENCY_STATS_SEL_READ_MIN', - 11: 'CPG_LATENCY_STATS_SEL_READ_LAST', - 12: 'CPG_LATENCY_STATS_SEL_ATOMIC_MAX', - 13: 'CPG_LATENCY_STATS_SEL_ATOMIC_MIN', - 14: 'CPG_LATENCY_STATS_SEL_ATOMIC_LAST', - 15: 'CPG_LATENCY_STATS_SEL_INVAL_MAX', - 16: 'CPG_LATENCY_STATS_SEL_INVAL_MIN', - 17: 'CPG_LATENCY_STATS_SEL_INVAL_LAST', -} -CPG_LATENCY_STATS_SEL_XACK_MAX = 0 -CPG_LATENCY_STATS_SEL_XACK_MIN = 1 -CPG_LATENCY_STATS_SEL_XACK_LAST = 2 -CPG_LATENCY_STATS_SEL_XNACK_MAX = 3 -CPG_LATENCY_STATS_SEL_XNACK_MIN = 4 -CPG_LATENCY_STATS_SEL_XNACK_LAST = 5 -CPG_LATENCY_STATS_SEL_WRITE_MAX = 6 -CPG_LATENCY_STATS_SEL_WRITE_MIN = 7 -CPG_LATENCY_STATS_SEL_WRITE_LAST = 8 -CPG_LATENCY_STATS_SEL_READ_MAX = 9 -CPG_LATENCY_STATS_SEL_READ_MIN = 10 -CPG_LATENCY_STATS_SEL_READ_LAST = 11 -CPG_LATENCY_STATS_SEL_ATOMIC_MAX = 12 -CPG_LATENCY_STATS_SEL_ATOMIC_MIN = 13 -CPG_LATENCY_STATS_SEL_ATOMIC_LAST = 14 -CPG_LATENCY_STATS_SEL_INVAL_MAX = 15 -CPG_LATENCY_STATS_SEL_INVAL_MIN = 16 -CPG_LATENCY_STATS_SEL_INVAL_LAST = 17 -CPG_LATENCY_STATS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPG_PERFCOUNTWINDOW_SEL' -CPG_PERFCOUNTWINDOW_SEL__enumvalues = { - 0: 'CPG_PERFWINDOW_SEL_PFP', - 1: 'CPG_PERFWINDOW_SEL_ME', - 2: 'CPG_PERFWINDOW_SEL_CE', - 3: 'CPG_PERFWINDOW_SEL_MES', - 4: 'CPG_PERFWINDOW_SEL_MEC1', - 5: 'CPG_PERFWINDOW_SEL_MEC2', - 6: 'CPG_PERFWINDOW_SEL_DFY', - 7: 'CPG_PERFWINDOW_SEL_DMA', - 8: 'CPG_PERFWINDOW_SEL_SHADOW', - 9: 'CPG_PERFWINDOW_SEL_RB', - 10: 'CPG_PERFWINDOW_SEL_CEDMA', - 11: 'CPG_PERFWINDOW_SEL_PRT_HDR_RPTR', - 12: 'CPG_PERFWINDOW_SEL_PRT_SMP_RPTR', - 13: 'CPG_PERFWINDOW_SEL_PQ1', - 14: 'CPG_PERFWINDOW_SEL_PQ2', - 15: 'CPG_PERFWINDOW_SEL_PQ3', - 16: 'CPG_PERFWINDOW_SEL_MEMWR', - 17: 'CPG_PERFWINDOW_SEL_MEMRD', - 18: 'CPG_PERFWINDOW_SEL_VGT0', - 19: 'CPG_PERFWINDOW_SEL_VGT1', - 20: 'CPG_PERFWINDOW_SEL_APPEND', - 21: 'CPG_PERFWINDOW_SEL_QURD', - 22: 'CPG_PERFWINDOW_SEL_DDID', - 23: 'CPG_PERFWINDOW_SEL_SR', - 24: 'CPG_PERFWINDOW_SEL_QU_EOP', - 25: 'CPG_PERFWINDOW_SEL_QU_STRM', - 26: 'CPG_PERFWINDOW_SEL_QU_PIPE', - 27: 'CPG_PERFWINDOW_SEL_RESERVED1', - 28: 'CPG_PERFWINDOW_SEL_CPC_IC', - 29: 'CPG_PERFWINDOW_SEL_RESERVED2', - 30: 'CPG_PERFWINDOW_SEL_CPG_IC', -} -CPG_PERFWINDOW_SEL_PFP = 0 -CPG_PERFWINDOW_SEL_ME = 1 -CPG_PERFWINDOW_SEL_CE = 2 -CPG_PERFWINDOW_SEL_MES = 3 -CPG_PERFWINDOW_SEL_MEC1 = 4 -CPG_PERFWINDOW_SEL_MEC2 = 5 -CPG_PERFWINDOW_SEL_DFY = 6 -CPG_PERFWINDOW_SEL_DMA = 7 -CPG_PERFWINDOW_SEL_SHADOW = 8 -CPG_PERFWINDOW_SEL_RB = 9 -CPG_PERFWINDOW_SEL_CEDMA = 10 -CPG_PERFWINDOW_SEL_PRT_HDR_RPTR = 11 -CPG_PERFWINDOW_SEL_PRT_SMP_RPTR = 12 -CPG_PERFWINDOW_SEL_PQ1 = 13 -CPG_PERFWINDOW_SEL_PQ2 = 14 -CPG_PERFWINDOW_SEL_PQ3 = 15 -CPG_PERFWINDOW_SEL_MEMWR = 16 -CPG_PERFWINDOW_SEL_MEMRD = 17 -CPG_PERFWINDOW_SEL_VGT0 = 18 -CPG_PERFWINDOW_SEL_VGT1 = 19 -CPG_PERFWINDOW_SEL_APPEND = 20 -CPG_PERFWINDOW_SEL_QURD = 21 -CPG_PERFWINDOW_SEL_DDID = 22 -CPG_PERFWINDOW_SEL_SR = 23 -CPG_PERFWINDOW_SEL_QU_EOP = 24 -CPG_PERFWINDOW_SEL_QU_STRM = 25 -CPG_PERFWINDOW_SEL_QU_PIPE = 26 -CPG_PERFWINDOW_SEL_RESERVED1 = 27 -CPG_PERFWINDOW_SEL_CPC_IC = 28 -CPG_PERFWINDOW_SEL_RESERVED2 = 29 -CPG_PERFWINDOW_SEL_CPG_IC = 30 -CPG_PERFCOUNTWINDOW_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPG_PERFCOUNT_SEL' -CPG_PERFCOUNT_SEL__enumvalues = { - 0: 'CPG_PERF_SEL_ALWAYS_COUNT', - 1: 'CPG_PERF_SEL_RBIU_FIFO_FULL', - 4: 'CPG_PERF_SEL_CP_GRBM_DWORDS_SENT', - 5: 'CPG_PERF_SEL_ME_PARSER_BUSY', - 6: 'CPG_PERF_SEL_COUNT_TYPE0_PACKETS', - 7: 'CPG_PERF_SEL_COUNT_TYPE3_PACKETS', - 9: 'CPG_PERF_SEL_CP_GRBM_OUT_OF_CREDITS', - 10: 'CPG_PERF_SEL_CP_PFP_GRBM_OUT_OF_CREDITS', - 11: 'CPG_PERF_SEL_CP_GDS_GRBM_OUT_OF_CREDITS', - 12: 'CPG_PERF_SEL_RCIU_STALLED_ON_ME_READ', - 13: 'CPG_PERF_SEL_RCIU_STALLED_ON_DMA_READ', - 14: 'CPG_PERF_SEL_SSU_STALLED_ON_ACTIVE_CNTX', - 15: 'CPG_PERF_SEL_SSU_STALLED_ON_CLEAN_SIGNALS', - 16: 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_PULSE', - 17: 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_WR_CONFIRM', - 18: 'CPG_PERF_SEL_PFP_STALLED_ON_CSF_READY', - 19: 'CPG_PERF_SEL_PFP_STALLED_ON_MEQ_READY', - 20: 'CPG_PERF_SEL_PFP_STALLED_ON_RCIU_READY', - 21: 'CPG_PERF_SEL_PFP_STALLED_FOR_DATA_FROM_ROQ', - 22: 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_PFP', - 23: 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_STQ', - 24: 'CPG_PERF_SEL_ME_STALLED_ON_NO_AVAIL_GFX_CNTX', - 25: 'CPG_PERF_SEL_ME_STALLED_WRITING_TO_RCIU', - 26: 'CPG_PERF_SEL_ME_STALLED_WRITING_CONSTANTS', - 27: 'CPG_PERF_SEL_ME_STALLED_ON_PARTIAL_FLUSH', - 28: 'CPG_PERF_SEL_ME_WAIT_ON_CE_COUNTER', - 29: 'CPG_PERF_SEL_ME_WAIT_ON_AVAIL_BUFFER', - 31: 'CPG_PERF_SEL_LOAD_STALLED_ON_SET_COHERENCY', - 32: 'CPG_PERF_SEL_DYNAMIC_CLK_VALID', - 33: 'CPG_PERF_SEL_REGISTER_CLK_VALID', - 34: 'CPG_PERF_SEL_GUS_WRITE_REQUEST_SENT', - 35: 'CPG_PERF_SEL_GUS_READ_REQUEST_SENT', - 36: 'CPG_PERF_SEL_CE_STALL_RAM_DUMP', - 37: 'CPG_PERF_SEL_CE_STALL_RAM_WRITE', - 38: 'CPG_PERF_SEL_CE_STALL_ON_INC_FIFO', - 39: 'CPG_PERF_SEL_CE_STALL_ON_WR_RAM_FIFO', - 41: 'CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_ROQ', - 42: 'CPG_PERF_SEL_CE_STALL_ON_CE_BUFFER_FLAG', - 43: 'CPG_PERF_SEL_CE_STALL_ON_DE_COUNTER', - 44: 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 45: 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_TAGS', - 46: 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 47: 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', - 48: 'CPG_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 49: 'CPG_PERF_SEL_TCIU_WRITE_REQUEST_SENT', - 50: 'CPG_PERF_SEL_TCIU_READ_REQUEST_SENT', - 51: 'CPG_PERF_SEL_CPG_STAT_BUSY', - 52: 'CPG_PERF_SEL_CPG_STAT_IDLE', - 53: 'CPG_PERF_SEL_CPG_STAT_STALL', - 54: 'CPG_PERF_SEL_CPG_TCIU_BUSY', - 55: 'CPG_PERF_SEL_CPG_TCIU_IDLE', - 56: 'CPG_PERF_SEL_CPG_TCIU_STALL', - 57: 'CPG_PERF_SEL_CPG_UTCL2IU_BUSY', - 58: 'CPG_PERF_SEL_CPG_UTCL2IU_IDLE', - 59: 'CPG_PERF_SEL_CPG_UTCL2IU_STALL', - 60: 'CPG_PERF_SEL_CPG_GCRIU_BUSY', - 61: 'CPG_PERF_SEL_CPG_GCRIU_IDLE', - 62: 'CPG_PERF_SEL_CPG_GCRIU_STALL', - 63: 'CPG_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 64: 'CPG_PERF_SEL_ALL_GFX_PIPES_BUSY', - 65: 'CPG_PERF_SEL_CPG_UTCL2IU_XACK', - 66: 'CPG_PERF_SEL_CPG_UTCL2IU_XNACK', - 67: 'CPG_PERF_SEL_PFP_STALLED_ON_MEQ_DDID_READY', - 68: 'CPG_PERF_SEL_PFP_INSTR_CACHE_HIT', - 69: 'CPG_PERF_SEL_PFP_INSTR_CACHE_MISS', - 70: 'CPG_PERF_SEL_CE_INSTR_CACHE_HIT', - 71: 'CPG_PERF_SEL_CE_INSTR_CACHE_MISS', - 72: 'CPG_PERF_SEL_ME_INSTR_CACHE_HIT', - 73: 'CPG_PERF_SEL_ME_INSTR_CACHE_MISS', - 74: 'CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB1', - 75: 'CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB1', - 76: 'CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB2', - 77: 'CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB2', - 78: 'CPG_PERF_SEL_DMA_BUSY', - 79: 'CPG_PERF_SEL_DMA_STARVED', - 80: 'CPG_PERF_SEL_DMA_STALLED', - 81: 'CPG_PERF_SEL_DMA_FETCHER_STALLED_ON_ROQ_FULL', - 82: 'CPG_PERF_SEL_PFP_PWS_STALLED0', - 83: 'CPG_PERF_SEL_ME_PWS_STALLED0', - 84: 'CPG_PERF_SEL_PFP_VGTDMA_INDR_STRUCT_BYPASS0', - 85: 'CPG_PERF_SEL_PFP_VGTDMA_INDR_STRUCT_NOT_BYPASS0', - 86: 'CPG_PERF_SEL_PFP_VGTDMA_DB_ROQ_DATA_STALL0', - 87: 'CPG_PERF_SEL_PFP_PWS_STALLED1', - 88: 'CPG_PERF_SEL_ME_PWS_STALLED1', - 89: 'CPG_PERF_SEL_PFP_VGTDMA_INDR_STRUCT_BYPASS1', - 90: 'CPG_PERF_SEL_PFP_VGTDMA_INDR_STRUCT_NOT_BYPASS1', - 91: 'CPG_PERF_SEL_PFP_VGTDMA_DB_ROQ_DATA_STALL1', -} -CPG_PERF_SEL_ALWAYS_COUNT = 0 -CPG_PERF_SEL_RBIU_FIFO_FULL = 1 -CPG_PERF_SEL_CP_GRBM_DWORDS_SENT = 4 -CPG_PERF_SEL_ME_PARSER_BUSY = 5 -CPG_PERF_SEL_COUNT_TYPE0_PACKETS = 6 -CPG_PERF_SEL_COUNT_TYPE3_PACKETS = 7 -CPG_PERF_SEL_CP_GRBM_OUT_OF_CREDITS = 9 -CPG_PERF_SEL_CP_PFP_GRBM_OUT_OF_CREDITS = 10 -CPG_PERF_SEL_CP_GDS_GRBM_OUT_OF_CREDITS = 11 -CPG_PERF_SEL_RCIU_STALLED_ON_ME_READ = 12 -CPG_PERF_SEL_RCIU_STALLED_ON_DMA_READ = 13 -CPG_PERF_SEL_SSU_STALLED_ON_ACTIVE_CNTX = 14 -CPG_PERF_SEL_SSU_STALLED_ON_CLEAN_SIGNALS = 15 -CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_PULSE = 16 -CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_WR_CONFIRM = 17 -CPG_PERF_SEL_PFP_STALLED_ON_CSF_READY = 18 -CPG_PERF_SEL_PFP_STALLED_ON_MEQ_READY = 19 -CPG_PERF_SEL_PFP_STALLED_ON_RCIU_READY = 20 -CPG_PERF_SEL_PFP_STALLED_FOR_DATA_FROM_ROQ = 21 -CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_PFP = 22 -CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_STQ = 23 -CPG_PERF_SEL_ME_STALLED_ON_NO_AVAIL_GFX_CNTX = 24 -CPG_PERF_SEL_ME_STALLED_WRITING_TO_RCIU = 25 -CPG_PERF_SEL_ME_STALLED_WRITING_CONSTANTS = 26 -CPG_PERF_SEL_ME_STALLED_ON_PARTIAL_FLUSH = 27 -CPG_PERF_SEL_ME_WAIT_ON_CE_COUNTER = 28 -CPG_PERF_SEL_ME_WAIT_ON_AVAIL_BUFFER = 29 -CPG_PERF_SEL_LOAD_STALLED_ON_SET_COHERENCY = 31 -CPG_PERF_SEL_DYNAMIC_CLK_VALID = 32 -CPG_PERF_SEL_REGISTER_CLK_VALID = 33 -CPG_PERF_SEL_GUS_WRITE_REQUEST_SENT = 34 -CPG_PERF_SEL_GUS_READ_REQUEST_SENT = 35 -CPG_PERF_SEL_CE_STALL_RAM_DUMP = 36 -CPG_PERF_SEL_CE_STALL_RAM_WRITE = 37 -CPG_PERF_SEL_CE_STALL_ON_INC_FIFO = 38 -CPG_PERF_SEL_CE_STALL_ON_WR_RAM_FIFO = 39 -CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_ROQ = 41 -CPG_PERF_SEL_CE_STALL_ON_CE_BUFFER_FLAG = 42 -CPG_PERF_SEL_CE_STALL_ON_DE_COUNTER = 43 -CPG_PERF_SEL_TCIU_STALL_WAIT_ON_FREE = 44 -CPG_PERF_SEL_TCIU_STALL_WAIT_ON_TAGS = 45 -CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE = 46 -CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS = 47 -CPG_PERF_SEL_UTCL1_STALL_ON_TRANSLATION = 48 -CPG_PERF_SEL_TCIU_WRITE_REQUEST_SENT = 49 -CPG_PERF_SEL_TCIU_READ_REQUEST_SENT = 50 -CPG_PERF_SEL_CPG_STAT_BUSY = 51 -CPG_PERF_SEL_CPG_STAT_IDLE = 52 -CPG_PERF_SEL_CPG_STAT_STALL = 53 -CPG_PERF_SEL_CPG_TCIU_BUSY = 54 -CPG_PERF_SEL_CPG_TCIU_IDLE = 55 -CPG_PERF_SEL_CPG_TCIU_STALL = 56 -CPG_PERF_SEL_CPG_UTCL2IU_BUSY = 57 -CPG_PERF_SEL_CPG_UTCL2IU_IDLE = 58 -CPG_PERF_SEL_CPG_UTCL2IU_STALL = 59 -CPG_PERF_SEL_CPG_GCRIU_BUSY = 60 -CPG_PERF_SEL_CPG_GCRIU_IDLE = 61 -CPG_PERF_SEL_CPG_GCRIU_STALL = 62 -CPG_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE = 63 -CPG_PERF_SEL_ALL_GFX_PIPES_BUSY = 64 -CPG_PERF_SEL_CPG_UTCL2IU_XACK = 65 -CPG_PERF_SEL_CPG_UTCL2IU_XNACK = 66 -CPG_PERF_SEL_PFP_STALLED_ON_MEQ_DDID_READY = 67 -CPG_PERF_SEL_PFP_INSTR_CACHE_HIT = 68 -CPG_PERF_SEL_PFP_INSTR_CACHE_MISS = 69 -CPG_PERF_SEL_CE_INSTR_CACHE_HIT = 70 -CPG_PERF_SEL_CE_INSTR_CACHE_MISS = 71 -CPG_PERF_SEL_ME_INSTR_CACHE_HIT = 72 -CPG_PERF_SEL_ME_INSTR_CACHE_MISS = 73 -CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB1 = 74 -CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB1 = 75 -CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB2 = 76 -CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB2 = 77 -CPG_PERF_SEL_DMA_BUSY = 78 -CPG_PERF_SEL_DMA_STARVED = 79 -CPG_PERF_SEL_DMA_STALLED = 80 -CPG_PERF_SEL_DMA_FETCHER_STALLED_ON_ROQ_FULL = 81 -CPG_PERF_SEL_PFP_PWS_STALLED0 = 82 -CPG_PERF_SEL_ME_PWS_STALLED0 = 83 -CPG_PERF_SEL_PFP_VGTDMA_INDR_STRUCT_BYPASS0 = 84 -CPG_PERF_SEL_PFP_VGTDMA_INDR_STRUCT_NOT_BYPASS0 = 85 -CPG_PERF_SEL_PFP_VGTDMA_DB_ROQ_DATA_STALL0 = 86 -CPG_PERF_SEL_PFP_PWS_STALLED1 = 87 -CPG_PERF_SEL_ME_PWS_STALLED1 = 88 -CPG_PERF_SEL_PFP_VGTDMA_INDR_STRUCT_BYPASS1 = 89 -CPG_PERF_SEL_PFP_VGTDMA_INDR_STRUCT_NOT_BYPASS1 = 90 -CPG_PERF_SEL_PFP_VGTDMA_DB_ROQ_DATA_STALL1 = 91 -CPG_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CP_ALPHA_TAG_RAM_SEL' -CP_ALPHA_TAG_RAM_SEL__enumvalues = { - 0: 'CPG_TAG_RAM', - 1: 'CPC_TAG_RAM', - 2: 'CPF_TAG_RAM', - 3: 'RSV_TAG_RAM', -} -CPG_TAG_RAM = 0 -CPC_TAG_RAM = 1 -CPF_TAG_RAM = 2 -RSV_TAG_RAM = 3 -CP_ALPHA_TAG_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CP_DDID_CNTL_MODE' -CP_DDID_CNTL_MODE__enumvalues = { - 0: 'STALL', - 1: 'OVERRUN', -} -STALL = 0 -OVERRUN = 1 -CP_DDID_CNTL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CP_DDID_CNTL_SIZE' -CP_DDID_CNTL_SIZE__enumvalues = { - 0: 'SIZE_8K', - 1: 'SIZE_16K', -} -SIZE_8K = 0 -SIZE_16K = 1 -CP_DDID_CNTL_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'CP_DDID_CNTL_VMID_SEL' -CP_DDID_CNTL_VMID_SEL__enumvalues = { - 0: 'DDID_VMID_PIPE', - 1: 'DDID_VMID_CNTL', -} -DDID_VMID_PIPE = 0 -DDID_VMID_CNTL = 1 -CP_DDID_CNTL_VMID_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CP_ME_ID' -CP_ME_ID__enumvalues = { - 0: 'ME_ID0', - 1: 'ME_ID1', - 2: 'ME_ID2', - 3: 'ME_ID3', -} -ME_ID0 = 0 -ME_ID1 = 1 -ME_ID2 = 2 -ME_ID3 = 3 -CP_ME_ID = ctypes.c_uint32 # enum - -# values for enumeration 'CP_PIPE_ID' -CP_PIPE_ID__enumvalues = { - 0: 'PIPE_ID0', - 1: 'PIPE_ID1', - 2: 'PIPE_ID2', - 3: 'PIPE_ID3', -} -PIPE_ID0 = 0 -PIPE_ID1 = 1 -PIPE_ID2 = 2 -PIPE_ID3 = 3 -CP_PIPE_ID = ctypes.c_uint32 # enum - -# values for enumeration 'CP_RING_ID' -CP_RING_ID__enumvalues = { - 0: 'RINGID0', - 1: 'RINGID1', - 2: 'RINGID2', - 3: 'RINGID3', -} -RINGID0 = 0 -RINGID1 = 1 -RINGID2 = 2 -RINGID3 = 3 -CP_RING_ID = ctypes.c_uint32 # enum - -# values for enumeration 'GCRPerfSel' -GCRPerfSel__enumvalues = { - 0: 'GCR_PERF_SEL_NONE', - 1: 'GCR_PERF_SEL_SDMA0_ALL_REQ', - 2: 'GCR_PERF_SEL_SDMA0_GL2_RANGE_REQ', - 3: 'GCR_PERF_SEL_SDMA0_GL2_RANGE_LT16K_REQ', - 4: 'GCR_PERF_SEL_SDMA0_GL2_RANGE_16K_REQ', - 5: 'GCR_PERF_SEL_SDMA0_GL2_RANGE_GT16K_REQ', - 6: 'GCR_PERF_SEL_SDMA0_GL2_ALL_REQ', - 7: 'GCR_PERF_SEL_SDMA0_GL1_RANGE_REQ', - 8: 'GCR_PERF_SEL_SDMA0_GL1_RANGE_LT16K_REQ', - 9: 'GCR_PERF_SEL_SDMA0_GL1_RANGE_16K_REQ', - 10: 'GCR_PERF_SEL_SDMA0_GL1_RANGE_GT16K_REQ', - 11: 'GCR_PERF_SEL_SDMA0_GL1_ALL_REQ', - 12: 'GCR_PERF_SEL_SDMA0_METADATA_REQ', - 13: 'GCR_PERF_SEL_SDMA0_SQC_DATA_REQ', - 14: 'GCR_PERF_SEL_SDMA0_SQC_INST_REQ', - 15: 'GCR_PERF_SEL_SDMA0_TCP_REQ', - 16: 'GCR_PERF_SEL_SDMA0_GL1_TLB_SHOOTDOWN_REQ', - 17: 'GCR_PERF_SEL_SDMA1_ALL_REQ', - 18: 'GCR_PERF_SEL_SDMA1_GL2_RANGE_REQ', - 19: 'GCR_PERF_SEL_SDMA1_GL2_RANGE_LT16K_REQ', - 20: 'GCR_PERF_SEL_SDMA1_GL2_RANGE_16K_REQ', - 21: 'GCR_PERF_SEL_SDMA1_GL2_RANGE_GT16K_REQ', - 22: 'GCR_PERF_SEL_SDMA1_GL2_ALL_REQ', - 23: 'GCR_PERF_SEL_SDMA1_GL1_RANGE_REQ', - 24: 'GCR_PERF_SEL_SDMA1_GL1_RANGE_LT16K_REQ', - 25: 'GCR_PERF_SEL_SDMA1_GL1_RANGE_16K_REQ', - 26: 'GCR_PERF_SEL_SDMA1_GL1_RANGE_GT16K_REQ', - 27: 'GCR_PERF_SEL_SDMA1_GL1_ALL_REQ', - 28: 'GCR_PERF_SEL_SDMA1_METADATA_REQ', - 29: 'GCR_PERF_SEL_SDMA1_SQC_DATA_REQ', - 30: 'GCR_PERF_SEL_SDMA1_SQC_INST_REQ', - 31: 'GCR_PERF_SEL_SDMA1_TCP_REQ', - 32: 'GCR_PERF_SEL_SDMA1_GL1_TLB_SHOOTDOWN_REQ', - 33: 'GCR_PERF_SEL_CPC_ALL_REQ', - 34: 'GCR_PERF_SEL_CPC_GL2_RANGE_REQ', - 35: 'GCR_PERF_SEL_CPC_GL2_RANGE_LT16K_REQ', - 36: 'GCR_PERF_SEL_CPC_GL2_RANGE_16K_REQ', - 37: 'GCR_PERF_SEL_CPC_GL2_RANGE_GT16K_REQ', - 38: 'GCR_PERF_SEL_CPC_GL2_ALL_REQ', - 39: 'GCR_PERF_SEL_CPC_GL1_RANGE_REQ', - 40: 'GCR_PERF_SEL_CPC_GL1_RANGE_LT16K_REQ', - 41: 'GCR_PERF_SEL_CPC_GL1_RANGE_16K_REQ', - 42: 'GCR_PERF_SEL_CPC_GL1_RANGE_GT16K_REQ', - 43: 'GCR_PERF_SEL_CPC_GL1_ALL_REQ', - 44: 'GCR_PERF_SEL_CPC_METADATA_REQ', - 45: 'GCR_PERF_SEL_CPC_SQC_DATA_REQ', - 46: 'GCR_PERF_SEL_CPC_SQC_INST_REQ', - 47: 'GCR_PERF_SEL_CPC_TCP_REQ', - 48: 'GCR_PERF_SEL_CPC_GL1_TLB_SHOOTDOWN_REQ', - 49: 'GCR_PERF_SEL_CPG_ALL_REQ', - 50: 'GCR_PERF_SEL_CPG_GL2_RANGE_REQ', - 51: 'GCR_PERF_SEL_CPG_GL2_RANGE_LT16K_REQ', - 52: 'GCR_PERF_SEL_CPG_GL2_RANGE_16K_REQ', - 53: 'GCR_PERF_SEL_CPG_GL2_RANGE_GT16K_REQ', - 54: 'GCR_PERF_SEL_CPG_GL2_ALL_REQ', - 55: 'GCR_PERF_SEL_CPG_GL1_RANGE_REQ', - 56: 'GCR_PERF_SEL_CPG_GL1_RANGE_LT16K_REQ', - 57: 'GCR_PERF_SEL_CPG_GL1_RANGE_16K_REQ', - 58: 'GCR_PERF_SEL_CPG_GL1_RANGE_GT16K_REQ', - 59: 'GCR_PERF_SEL_CPG_GL1_ALL_REQ', - 60: 'GCR_PERF_SEL_CPG_METADATA_REQ', - 61: 'GCR_PERF_SEL_CPG_SQC_DATA_REQ', - 62: 'GCR_PERF_SEL_CPG_SQC_INST_REQ', - 63: 'GCR_PERF_SEL_CPG_TCP_REQ', - 64: 'GCR_PERF_SEL_CPG_GL1_TLB_SHOOTDOWN_REQ', - 65: 'GCR_PERF_SEL_CPF_ALL_REQ', - 66: 'GCR_PERF_SEL_CPF_GL2_RANGE_REQ', - 67: 'GCR_PERF_SEL_CPF_GL2_RANGE_LT16K_REQ', - 68: 'GCR_PERF_SEL_CPF_GL2_RANGE_16K_REQ', - 69: 'GCR_PERF_SEL_CPF_GL2_RANGE_GT16K_REQ', - 70: 'GCR_PERF_SEL_CPF_GL2_ALL_REQ', - 71: 'GCR_PERF_SEL_CPF_GL1_RANGE_REQ', - 72: 'GCR_PERF_SEL_CPF_GL1_RANGE_LT16K_REQ', - 73: 'GCR_PERF_SEL_CPF_GL1_RANGE_16K_REQ', - 74: 'GCR_PERF_SEL_CPF_GL1_RANGE_GT16K_REQ', - 75: 'GCR_PERF_SEL_CPF_GL1_ALL_REQ', - 76: 'GCR_PERF_SEL_CPF_METADATA_REQ', - 77: 'GCR_PERF_SEL_CPF_SQC_DATA_REQ', - 78: 'GCR_PERF_SEL_CPF_SQC_INST_REQ', - 79: 'GCR_PERF_SEL_CPF_TCP_REQ', - 80: 'GCR_PERF_SEL_CPF_GL1_TLB_SHOOTDOWN_REQ', - 81: 'GCR_PERF_SEL_VIRT_REQ', - 82: 'GCR_PERF_SEL_PHY_REQ', - 83: 'GCR_PERF_SEL_TLB_SHOOTDOWN_HEAVY_REQ', - 84: 'GCR_PERF_SEL_TLB_SHOOTDOWN_LIGHT_REQ', - 85: 'GCR_PERF_SEL_ALL_REQ', - 86: 'GCR_PERF_SEL_CLK_FOR_PHY_OUTSTANDING_REQ', - 87: 'GCR_PERF_SEL_CLK_FOR_VIRT_OUTSTANDING_REQ', - 88: 'GCR_PERF_SEL_CLK_FOR_ALL_OUTSTANDING_REQ', - 89: 'GCR_PERF_SEL_UTCL2_REQ', - 90: 'GCR_PERF_SEL_UTCL2_RET', - 91: 'GCR_PERF_SEL_UTCL2_OUT_OF_CREDIT_EVENT', - 92: 'GCR_PERF_SEL_UTCL2_INFLIGHT_REQ', - 93: 'GCR_PERF_SEL_UTCL2_FILTERED_RET', - 94: 'GCR_PERF_SEL_PMM_ABIT_NUM_FLUSH', - 95: 'GCR_PERF_SEL_PMM_ABIT_FLUSH_ONGOING', - 96: 'GCR_PERF_SEL_PMM_NUM_INTERRUPT', - 97: 'GCR_PERF_SEL_PMM_STALL_PMM_IH_CREDITS', - 98: 'GCR_PERF_SEL_PMM_INTERRUPT_READY_TO_SEND', - 99: 'GCR_PERF_SEL_PMM_ABIT_TIMER_FLUSH', - 100: 'GCR_PERF_SEL_PMM_ABIT_FORCE_FLUSH', - 101: 'GCR_PERF_SEL_PMM_ABIT_FLUSH_INTERRUPT', - 102: 'GCR_PERF_SEL_PMM_ALOG_INTERRUPT', - 103: 'GCR_PERF_SEL_PMM_MAM_FLUSH_REQ', - 104: 'GCR_PERF_SEL_PMM_MAM_FLUSH_RESP', - 105: 'GCR_PERF_SEL_PMM_RLC_CGCG_REQ', - 106: 'GCR_PERF_SEL_PMM_RLC_CGCG_RESP', - 107: 'GCR_PERF_SEL_RLC_ALL_REQ', - 108: 'GCR_PERF_SEL_RLC_GL2_RANGE_REQ', - 109: 'GCR_PERF_SEL_RLC_GL2_RANGE_LT16K_REQ', - 110: 'GCR_PERF_SEL_RLC_GL2_RANGE_16K_REQ', - 111: 'GCR_PERF_SEL_RLC_GL2_RANGE_GT16K_REQ', - 112: 'GCR_PERF_SEL_RLC_GL2_ALL_REQ', - 113: 'GCR_PERF_SEL_RLC_GL1_RANGE_REQ', - 114: 'GCR_PERF_SEL_RLC_GL1_RANGE_LT16K_REQ', - 115: 'GCR_PERF_SEL_RLC_GL1_RANGE_16K_REQ', - 116: 'GCR_PERF_SEL_RLC_GL1_RANGE_GT16K_REQ', - 117: 'GCR_PERF_SEL_RLC_GL1_ALL_REQ', - 118: 'GCR_PERF_SEL_RLC_METADATA_REQ', - 119: 'GCR_PERF_SEL_RLC_SQC_DATA_REQ', - 120: 'GCR_PERF_SEL_RLC_SQC_INST_REQ', - 121: 'GCR_PERF_SEL_RLC_TCP_REQ', - 122: 'GCR_PERF_SEL_RLC_GL1_TLB_SHOOTDOWN_REQ', - 123: 'GCR_PERF_SEL_PM_ALL_REQ', - 124: 'GCR_PERF_SEL_PM_GL2_RANGE_REQ', - 125: 'GCR_PERF_SEL_PM_GL2_RANGE_LT16K_REQ', - 126: 'GCR_PERF_SEL_PM_GL2_RANGE_16K_REQ', - 127: 'GCR_PERF_SEL_PM_GL2_RANGE_GT16K_REQ', - 128: 'GCR_PERF_SEL_PM_GL2_ALL_REQ', - 129: 'GCR_PERF_SEL_PM_GL1_RANGE_REQ', - 130: 'GCR_PERF_SEL_PM_GL1_RANGE_LT16K_REQ', - 131: 'GCR_PERF_SEL_PM_GL1_RANGE_16K_REQ', - 132: 'GCR_PERF_SEL_PM_GL1_RANGE_GT16K_REQ', - 133: 'GCR_PERF_SEL_PM_GL1_ALL_REQ', - 134: 'GCR_PERF_SEL_PM_METADATA_REQ', - 135: 'GCR_PERF_SEL_PM_SQC_DATA_REQ', - 136: 'GCR_PERF_SEL_PM_SQC_INST_REQ', - 137: 'GCR_PERF_SEL_PM_TCP_REQ', - 138: 'GCR_PERF_SEL_PM_GL1_TLB_SHOOTDOWN_REQ', - 139: 'GCR_PERF_SEL_PIO_ALL_REQ', - 140: 'GCR_PERF_SEL_PIO_GL2_RANGE_REQ', - 141: 'GCR_PERF_SEL_PIO_GL2_RANGE_LT16K_REQ', - 142: 'GCR_PERF_SEL_PIO_GL2_RANGE_16K_REQ', - 143: 'GCR_PERF_SEL_PIO_GL2_RANGE_GT16K_REQ', - 144: 'GCR_PERF_SEL_PIO_GL2_ALL_REQ', - 145: 'GCR_PERF_SEL_PIO_GL1_RANGE_REQ', - 146: 'GCR_PERF_SEL_PIO_GL1_RANGE_LT16K_REQ', - 147: 'GCR_PERF_SEL_PIO_GL1_RANGE_16K_REQ', - 148: 'GCR_PERF_SEL_PIO_GL1_RANGE_GT16K_REQ', - 149: 'GCR_PERF_SEL_PIO_GL1_ALL_REQ', - 150: 'GCR_PERF_SEL_PIO_METADATA_REQ', - 151: 'GCR_PERF_SEL_PIO_SQC_DATA_REQ', - 152: 'GCR_PERF_SEL_PIO_SQC_INST_REQ', - 153: 'GCR_PERF_SEL_PIO_TCP_REQ', - 154: 'GCR_PERF_SEL_PIO_GL1_TLB_SHOOTDOWN_REQ', -} -GCR_PERF_SEL_NONE = 0 -GCR_PERF_SEL_SDMA0_ALL_REQ = 1 -GCR_PERF_SEL_SDMA0_GL2_RANGE_REQ = 2 -GCR_PERF_SEL_SDMA0_GL2_RANGE_LT16K_REQ = 3 -GCR_PERF_SEL_SDMA0_GL2_RANGE_16K_REQ = 4 -GCR_PERF_SEL_SDMA0_GL2_RANGE_GT16K_REQ = 5 -GCR_PERF_SEL_SDMA0_GL2_ALL_REQ = 6 -GCR_PERF_SEL_SDMA0_GL1_RANGE_REQ = 7 -GCR_PERF_SEL_SDMA0_GL1_RANGE_LT16K_REQ = 8 -GCR_PERF_SEL_SDMA0_GL1_RANGE_16K_REQ = 9 -GCR_PERF_SEL_SDMA0_GL1_RANGE_GT16K_REQ = 10 -GCR_PERF_SEL_SDMA0_GL1_ALL_REQ = 11 -GCR_PERF_SEL_SDMA0_METADATA_REQ = 12 -GCR_PERF_SEL_SDMA0_SQC_DATA_REQ = 13 -GCR_PERF_SEL_SDMA0_SQC_INST_REQ = 14 -GCR_PERF_SEL_SDMA0_TCP_REQ = 15 -GCR_PERF_SEL_SDMA0_GL1_TLB_SHOOTDOWN_REQ = 16 -GCR_PERF_SEL_SDMA1_ALL_REQ = 17 -GCR_PERF_SEL_SDMA1_GL2_RANGE_REQ = 18 -GCR_PERF_SEL_SDMA1_GL2_RANGE_LT16K_REQ = 19 -GCR_PERF_SEL_SDMA1_GL2_RANGE_16K_REQ = 20 -GCR_PERF_SEL_SDMA1_GL2_RANGE_GT16K_REQ = 21 -GCR_PERF_SEL_SDMA1_GL2_ALL_REQ = 22 -GCR_PERF_SEL_SDMA1_GL1_RANGE_REQ = 23 -GCR_PERF_SEL_SDMA1_GL1_RANGE_LT16K_REQ = 24 -GCR_PERF_SEL_SDMA1_GL1_RANGE_16K_REQ = 25 -GCR_PERF_SEL_SDMA1_GL1_RANGE_GT16K_REQ = 26 -GCR_PERF_SEL_SDMA1_GL1_ALL_REQ = 27 -GCR_PERF_SEL_SDMA1_METADATA_REQ = 28 -GCR_PERF_SEL_SDMA1_SQC_DATA_REQ = 29 -GCR_PERF_SEL_SDMA1_SQC_INST_REQ = 30 -GCR_PERF_SEL_SDMA1_TCP_REQ = 31 -GCR_PERF_SEL_SDMA1_GL1_TLB_SHOOTDOWN_REQ = 32 -GCR_PERF_SEL_CPC_ALL_REQ = 33 -GCR_PERF_SEL_CPC_GL2_RANGE_REQ = 34 -GCR_PERF_SEL_CPC_GL2_RANGE_LT16K_REQ = 35 -GCR_PERF_SEL_CPC_GL2_RANGE_16K_REQ = 36 -GCR_PERF_SEL_CPC_GL2_RANGE_GT16K_REQ = 37 -GCR_PERF_SEL_CPC_GL2_ALL_REQ = 38 -GCR_PERF_SEL_CPC_GL1_RANGE_REQ = 39 -GCR_PERF_SEL_CPC_GL1_RANGE_LT16K_REQ = 40 -GCR_PERF_SEL_CPC_GL1_RANGE_16K_REQ = 41 -GCR_PERF_SEL_CPC_GL1_RANGE_GT16K_REQ = 42 -GCR_PERF_SEL_CPC_GL1_ALL_REQ = 43 -GCR_PERF_SEL_CPC_METADATA_REQ = 44 -GCR_PERF_SEL_CPC_SQC_DATA_REQ = 45 -GCR_PERF_SEL_CPC_SQC_INST_REQ = 46 -GCR_PERF_SEL_CPC_TCP_REQ = 47 -GCR_PERF_SEL_CPC_GL1_TLB_SHOOTDOWN_REQ = 48 -GCR_PERF_SEL_CPG_ALL_REQ = 49 -GCR_PERF_SEL_CPG_GL2_RANGE_REQ = 50 -GCR_PERF_SEL_CPG_GL2_RANGE_LT16K_REQ = 51 -GCR_PERF_SEL_CPG_GL2_RANGE_16K_REQ = 52 -GCR_PERF_SEL_CPG_GL2_RANGE_GT16K_REQ = 53 -GCR_PERF_SEL_CPG_GL2_ALL_REQ = 54 -GCR_PERF_SEL_CPG_GL1_RANGE_REQ = 55 -GCR_PERF_SEL_CPG_GL1_RANGE_LT16K_REQ = 56 -GCR_PERF_SEL_CPG_GL1_RANGE_16K_REQ = 57 -GCR_PERF_SEL_CPG_GL1_RANGE_GT16K_REQ = 58 -GCR_PERF_SEL_CPG_GL1_ALL_REQ = 59 -GCR_PERF_SEL_CPG_METADATA_REQ = 60 -GCR_PERF_SEL_CPG_SQC_DATA_REQ = 61 -GCR_PERF_SEL_CPG_SQC_INST_REQ = 62 -GCR_PERF_SEL_CPG_TCP_REQ = 63 -GCR_PERF_SEL_CPG_GL1_TLB_SHOOTDOWN_REQ = 64 -GCR_PERF_SEL_CPF_ALL_REQ = 65 -GCR_PERF_SEL_CPF_GL2_RANGE_REQ = 66 -GCR_PERF_SEL_CPF_GL2_RANGE_LT16K_REQ = 67 -GCR_PERF_SEL_CPF_GL2_RANGE_16K_REQ = 68 -GCR_PERF_SEL_CPF_GL2_RANGE_GT16K_REQ = 69 -GCR_PERF_SEL_CPF_GL2_ALL_REQ = 70 -GCR_PERF_SEL_CPF_GL1_RANGE_REQ = 71 -GCR_PERF_SEL_CPF_GL1_RANGE_LT16K_REQ = 72 -GCR_PERF_SEL_CPF_GL1_RANGE_16K_REQ = 73 -GCR_PERF_SEL_CPF_GL1_RANGE_GT16K_REQ = 74 -GCR_PERF_SEL_CPF_GL1_ALL_REQ = 75 -GCR_PERF_SEL_CPF_METADATA_REQ = 76 -GCR_PERF_SEL_CPF_SQC_DATA_REQ = 77 -GCR_PERF_SEL_CPF_SQC_INST_REQ = 78 -GCR_PERF_SEL_CPF_TCP_REQ = 79 -GCR_PERF_SEL_CPF_GL1_TLB_SHOOTDOWN_REQ = 80 -GCR_PERF_SEL_VIRT_REQ = 81 -GCR_PERF_SEL_PHY_REQ = 82 -GCR_PERF_SEL_TLB_SHOOTDOWN_HEAVY_REQ = 83 -GCR_PERF_SEL_TLB_SHOOTDOWN_LIGHT_REQ = 84 -GCR_PERF_SEL_ALL_REQ = 85 -GCR_PERF_SEL_CLK_FOR_PHY_OUTSTANDING_REQ = 86 -GCR_PERF_SEL_CLK_FOR_VIRT_OUTSTANDING_REQ = 87 -GCR_PERF_SEL_CLK_FOR_ALL_OUTSTANDING_REQ = 88 -GCR_PERF_SEL_UTCL2_REQ = 89 -GCR_PERF_SEL_UTCL2_RET = 90 -GCR_PERF_SEL_UTCL2_OUT_OF_CREDIT_EVENT = 91 -GCR_PERF_SEL_UTCL2_INFLIGHT_REQ = 92 -GCR_PERF_SEL_UTCL2_FILTERED_RET = 93 -GCR_PERF_SEL_PMM_ABIT_NUM_FLUSH = 94 -GCR_PERF_SEL_PMM_ABIT_FLUSH_ONGOING = 95 -GCR_PERF_SEL_PMM_NUM_INTERRUPT = 96 -GCR_PERF_SEL_PMM_STALL_PMM_IH_CREDITS = 97 -GCR_PERF_SEL_PMM_INTERRUPT_READY_TO_SEND = 98 -GCR_PERF_SEL_PMM_ABIT_TIMER_FLUSH = 99 -GCR_PERF_SEL_PMM_ABIT_FORCE_FLUSH = 100 -GCR_PERF_SEL_PMM_ABIT_FLUSH_INTERRUPT = 101 -GCR_PERF_SEL_PMM_ALOG_INTERRUPT = 102 -GCR_PERF_SEL_PMM_MAM_FLUSH_REQ = 103 -GCR_PERF_SEL_PMM_MAM_FLUSH_RESP = 104 -GCR_PERF_SEL_PMM_RLC_CGCG_REQ = 105 -GCR_PERF_SEL_PMM_RLC_CGCG_RESP = 106 -GCR_PERF_SEL_RLC_ALL_REQ = 107 -GCR_PERF_SEL_RLC_GL2_RANGE_REQ = 108 -GCR_PERF_SEL_RLC_GL2_RANGE_LT16K_REQ = 109 -GCR_PERF_SEL_RLC_GL2_RANGE_16K_REQ = 110 -GCR_PERF_SEL_RLC_GL2_RANGE_GT16K_REQ = 111 -GCR_PERF_SEL_RLC_GL2_ALL_REQ = 112 -GCR_PERF_SEL_RLC_GL1_RANGE_REQ = 113 -GCR_PERF_SEL_RLC_GL1_RANGE_LT16K_REQ = 114 -GCR_PERF_SEL_RLC_GL1_RANGE_16K_REQ = 115 -GCR_PERF_SEL_RLC_GL1_RANGE_GT16K_REQ = 116 -GCR_PERF_SEL_RLC_GL1_ALL_REQ = 117 -GCR_PERF_SEL_RLC_METADATA_REQ = 118 -GCR_PERF_SEL_RLC_SQC_DATA_REQ = 119 -GCR_PERF_SEL_RLC_SQC_INST_REQ = 120 -GCR_PERF_SEL_RLC_TCP_REQ = 121 -GCR_PERF_SEL_RLC_GL1_TLB_SHOOTDOWN_REQ = 122 -GCR_PERF_SEL_PM_ALL_REQ = 123 -GCR_PERF_SEL_PM_GL2_RANGE_REQ = 124 -GCR_PERF_SEL_PM_GL2_RANGE_LT16K_REQ = 125 -GCR_PERF_SEL_PM_GL2_RANGE_16K_REQ = 126 -GCR_PERF_SEL_PM_GL2_RANGE_GT16K_REQ = 127 -GCR_PERF_SEL_PM_GL2_ALL_REQ = 128 -GCR_PERF_SEL_PM_GL1_RANGE_REQ = 129 -GCR_PERF_SEL_PM_GL1_RANGE_LT16K_REQ = 130 -GCR_PERF_SEL_PM_GL1_RANGE_16K_REQ = 131 -GCR_PERF_SEL_PM_GL1_RANGE_GT16K_REQ = 132 -GCR_PERF_SEL_PM_GL1_ALL_REQ = 133 -GCR_PERF_SEL_PM_METADATA_REQ = 134 -GCR_PERF_SEL_PM_SQC_DATA_REQ = 135 -GCR_PERF_SEL_PM_SQC_INST_REQ = 136 -GCR_PERF_SEL_PM_TCP_REQ = 137 -GCR_PERF_SEL_PM_GL1_TLB_SHOOTDOWN_REQ = 138 -GCR_PERF_SEL_PIO_ALL_REQ = 139 -GCR_PERF_SEL_PIO_GL2_RANGE_REQ = 140 -GCR_PERF_SEL_PIO_GL2_RANGE_LT16K_REQ = 141 -GCR_PERF_SEL_PIO_GL2_RANGE_16K_REQ = 142 -GCR_PERF_SEL_PIO_GL2_RANGE_GT16K_REQ = 143 -GCR_PERF_SEL_PIO_GL2_ALL_REQ = 144 -GCR_PERF_SEL_PIO_GL1_RANGE_REQ = 145 -GCR_PERF_SEL_PIO_GL1_RANGE_LT16K_REQ = 146 -GCR_PERF_SEL_PIO_GL1_RANGE_16K_REQ = 147 -GCR_PERF_SEL_PIO_GL1_RANGE_GT16K_REQ = 148 -GCR_PERF_SEL_PIO_GL1_ALL_REQ = 149 -GCR_PERF_SEL_PIO_METADATA_REQ = 150 -GCR_PERF_SEL_PIO_SQC_DATA_REQ = 151 -GCR_PERF_SEL_PIO_SQC_INST_REQ = 152 -GCR_PERF_SEL_PIO_TCP_REQ = 153 -GCR_PERF_SEL_PIO_GL1_TLB_SHOOTDOWN_REQ = 154 -GCRPerfSel = ctypes.c_uint32 # enum - -# values for enumeration 'GC_EA_CPWD_PERFCOUNT_SEL' -GC_EA_CPWD_PERFCOUNT_SEL__enumvalues = { - 0: 'GC_EA_CPWD_PERF_SEL_ALWAYS_COUNT', - 1: 'GC_EA_CPWD_PERF_SEL_RDRAM_NUM_BANKS_VLD', - 2: 'GC_EA_CPWD_PERF_SEL_RDRAM_REQ_PER_CLIGRP', - 3: 'GC_EA_CPWD_PERF_SEL_RDRAM_CHAINED_REQ_PER_CLIGRP', - 4: 'GC_EA_CPWD_PERF_SEL_RDRAM_LATENCY_START0', - 5: 'GC_EA_CPWD_PERF_SEL_RDRAM_LATENCY_END0', - 6: 'GC_EA_CPWD_PERF_SEL_RDRAM_LATENCY_START1', - 7: 'GC_EA_CPWD_PERF_SEL_RDRAM_LATENCY_END1', - 8: 'GC_EA_CPWD_PERF_SEL_WDRAM_NUM_BANKS_VLD', - 9: 'GC_EA_CPWD_PERF_SEL_WDRAM_REQ_PER_CLIGRP', - 10: 'GC_EA_CPWD_PERF_SEL_WDRAM_CHAINED_REQ_PER_CLIGRP', - 11: 'GC_EA_CPWD_PERF_SEL_WDRAM_LATENCY_START0', - 12: 'GC_EA_CPWD_PERF_SEL_WDRAM_LATENCY_END0', - 13: 'GC_EA_CPWD_PERF_SEL_WDRAM_LATENCY_START1', - 14: 'GC_EA_CPWD_PERF_SEL_WDRAM_LATENCY_END1', - 15: 'GC_EA_CPWD_PERF_SEL_RGMI_NUM_BANKS_VLD', - 16: 'GC_EA_CPWD_PERF_SEL_RGMI_REQ_PER_CLIGRP', - 17: 'GC_EA_CPWD_PERF_SEL_RGMI_CHAINED_REQ_PER_CLIGR', - 18: 'GC_EA_CPWD_PERF_SEL_RGMI_LATENCY_START0', - 19: 'GC_EA_CPWD_PERF_SEL_RGMI_LATENCY_END0', - 20: 'GC_EA_CPWD_PERF_SEL_RGMI_LATENCY_START1', - 21: 'GC_EA_CPWD_PERF_SEL_RGMI_LATENCY_END1', - 22: 'GC_EA_CPWD_PERF_SEL_WGMI_NUM_BANKS_VLD', - 23: 'GC_EA_CPWD_PERF_SEL_WGMI_REQ_PER_CLIGRP', - 24: 'GC_EA_CPWD_PERF_SEL_WGMI_CHAINED_REQ_PER_CLIGRP', - 25: 'GC_EA_CPWD_PERF_SEL_WGMI_LATENCY_START0', - 26: 'GC_EA_CPWD_PERF_SEL_WGMI_LATENCY_END0', - 27: 'GC_EA_CPWD_PERF_SEL_WGMI_LATENCY_START1', - 28: 'GC_EA_CPWD_PERF_SEL_WGMI_LATENCY_END1', - 29: 'GC_EA_CPWD_PERF_SEL_RIO_REQ_PER_CLIGRP', - 30: 'GC_EA_CPWD_PERF_SEL_RIO_SIZE_REQ', - 31: 'GC_EA_CPWD_PERF_SEL_RIO_GRP0_SIZE_REQ', - 32: 'GC_EA_CPWD_PERF_SEL_RIO_GRP1_SIZE_REQ', - 33: 'GC_EA_CPWD_PERF_SEL_RIO_GRP2_SIZE_REQ', - 34: 'GC_EA_CPWD_PERF_SEL_RIO_GRP3_SIZE_REQ', - 35: 'GC_EA_CPWD_PERF_SEL_RIO_LATENCY_START0', - 36: 'GC_EA_CPWD_PERF_SEL_RIO_LATENCY_END0', - 37: 'GC_EA_CPWD_PERF_SEL_RIO_LATENCY_START1', - 38: 'GC_EA_CPWD_PERF_SEL_RIO_LATENCY_END1', - 39: 'GC_EA_CPWD_PERF_SEL_WIO_REQ_PER_CLIGRP', - 40: 'GC_EA_CPWD_PERF_SEL_WIO_CHAINED_REQ_PER_CLIGRP', - 41: 'GC_EA_CPWD_PERF_SEL_WIO_SIZE_REQ', - 42: 'GC_EA_CPWD_PERF_SEL_WIO_GRP0_SIZE_REQ', - 43: 'GC_EA_CPWD_PERF_SEL_WIO_GRP1_SIZE_REQ', - 44: 'GC_EA_CPWD_PERF_SEL_WIO_GRP2_SIZE_REQ', - 45: 'GC_EA_CPWD_PERF_SEL_WIO_GRP3_SIZE_REQ', - 46: 'GC_EA_CPWD_PERF_SEL_WIO_LATENCY_START0', - 47: 'GC_EA_CPWD_PERF_SEL_WIO_LATENCY_END0', - 48: 'GC_EA_CPWD_PERF_SEL_WIO_LATENCY_START1', - 49: 'GC_EA_CPWD_PERF_SEL_WIO_LATENCY_END1', - 50: 'GC_EA_CPWD_PERF_SEL_SARB_REQ_PER_VC', - 51: 'GC_EA_CPWD_PERF_SEL_SARB_DRAM_REQ_PER_VC', - 52: 'GC_EA_CPWD_PERF_SEL_SARB_GMI_REQ_PER_VC', - 53: 'GC_EA_CPWD_PERF_SEL_SARB_IO_REQ_PER_VC', - 54: 'GC_EA_CPWD_PERF_SEL_SARB_SIZE_REQ', - 55: 'GC_EA_CPWD_PERF_SEL_SARB_DRAM_SIZE_REQ', - 56: 'GC_EA_CPWD_PERF_SEL_SARB_GMI_SIZE_REQ', - 57: 'GC_EA_CPWD_PERF_SEL_SARB_IO_SIZE_REQ', - 58: 'GC_EA_CPWD_PERF_SEL_SARB_LATENCY_START0', - 59: 'GC_EA_CPWD_PERF_SEL_SARB_LATENCY_END0', - 60: 'GC_EA_CPWD_PERF_SEL_SARB_LATENCY_START1', - 61: 'GC_EA_CPWD_PERF_SEL_SARB_LATENCY_END1', - 62: 'GC_EA_CPWD_PERF_SEL_SARB_BUSY', - 63: 'GC_EA_CPWD_PERF_SEL_SARB_STALLED', - 64: 'GC_EA_CPWD_PERF_SEL_SARB_STARVING', - 65: 'GC_EA_CPWD_PERF_SEL_SARB_IDLE', - 66: 'GC_EA_CPWD_PERF_SEL_RRET_VLD', - 67: 'GC_EA_CPWD_PERF_SEL_WRET_VLD', - 68: 'GC_EA_CPWD_PERF_SEL_PRB_REQ', - 69: 'GC_EA_CPWD_PERF_SEL_MAM_ARAM_FA_EVICT', - 70: 'GC_EA_CPWD_PERF_SEL_MAM_ARAM_REQ_VLD', - 71: 'GC_EA_CPWD_PERF_SEL_MAM_DBIT_FA_HIT', - 72: 'GC_EA_CPWD_PERF_SEL_MAM_NUM_DQRY', - 73: 'GC_EA_CPWD_PERF_SEL_MAM_AFLUSH_INTERRUPT', - 74: 'GC_EA_CPWD_PERF_SEL_MAM_AFLUSH_INTERRUPT_STALLED', - 75: 'GC_EA_CPWD_PERF_SEL_MAM_AFLUSH_COMPLETED', - 76: 'GC_EA_CPWD_PERF_SEL_MAM_AFLUSH_ONGOING', - 77: 'GC_EA_CPWD_PERF_SEL_RDRAM_SIZE_REQ', - 78: 'GC_EA_CPWD_PERF_SEL_WDRAM_SIZE_REQ', - 79: 'GC_EA_CPWD_PERF_SEL_RGMI_SIZE_REQ', - 80: 'GC_EA_CPWD_PERF_SEL_WGMI_SIZE_REQ', - 81: 'GC_EA_CPWD_PERF_SEL_SARB_DRAM_RW_TURN_AROUND', - 82: 'GC_EA_CPWD_PERF_SEL_SARB_GMI_RW_TURN_AROUND', - 83: 'GC_EA_CPWD_PERF_SEL_RDRAM_CHAINED_REQ_PER_BURSTS_LENGTH', - 84: 'GC_EA_CPWD_PERF_SEL_WDRAM_CHAINED_REQ_PER_BURSTS_LENGTH', - 85: 'GC_EA_CPWD_PERF_SEL_RGMI_CHAINED_REQ_PER_BURSTS_LENGTH', - 86: 'GC_EA_CPWD_PERF_SEL_WGMI_CHAINED_REQ_PER_BURSTS_LENGTH', - 87: 'GC_EA_CPWD_PERF_SEL_MAM_DBIT_FA_EVICT', - 88: 'GC_EA_CPWD_PERF_SEL_MAM_DBIT_REQ_VLD', - 89: 'GC_EA_CPWD_PERF_SEL_SARB_COHERENT_SIZE_REQ', - 90: 'GC_EA_CPWD_PERF_SEL_MAM_ARAM_FA_HIT_EVICT', - 91: 'GC_EA_CPWD_PERF_SEL_MAM_ARAM_FA_LRU_EVICT', - 92: 'GC_EA_CPWD_PERF_SEL_MAM_FLUSH_REQ', - 93: 'GC_EA_CPWD_PERF_SEL_MAM_FLUSH_RESP', - 94: 'GC_EA_CPWD_PERF_SEL_MAM_DBIT_FA_HIT_EVICT', - 95: 'GC_EA_CPWD_PERF_SEL_MAM_DBIT_FA_LRU_EVICT', - 96: 'GC_EA_CPWD_PERF_SEL_MAM_DQRY_ONGOING', - 97: 'GC_EA_CPWD_PERF_SEL_MAM_ARAM_FA_HIT', -} -GC_EA_CPWD_PERF_SEL_ALWAYS_COUNT = 0 -GC_EA_CPWD_PERF_SEL_RDRAM_NUM_BANKS_VLD = 1 -GC_EA_CPWD_PERF_SEL_RDRAM_REQ_PER_CLIGRP = 2 -GC_EA_CPWD_PERF_SEL_RDRAM_CHAINED_REQ_PER_CLIGRP = 3 -GC_EA_CPWD_PERF_SEL_RDRAM_LATENCY_START0 = 4 -GC_EA_CPWD_PERF_SEL_RDRAM_LATENCY_END0 = 5 -GC_EA_CPWD_PERF_SEL_RDRAM_LATENCY_START1 = 6 -GC_EA_CPWD_PERF_SEL_RDRAM_LATENCY_END1 = 7 -GC_EA_CPWD_PERF_SEL_WDRAM_NUM_BANKS_VLD = 8 -GC_EA_CPWD_PERF_SEL_WDRAM_REQ_PER_CLIGRP = 9 -GC_EA_CPWD_PERF_SEL_WDRAM_CHAINED_REQ_PER_CLIGRP = 10 -GC_EA_CPWD_PERF_SEL_WDRAM_LATENCY_START0 = 11 -GC_EA_CPWD_PERF_SEL_WDRAM_LATENCY_END0 = 12 -GC_EA_CPWD_PERF_SEL_WDRAM_LATENCY_START1 = 13 -GC_EA_CPWD_PERF_SEL_WDRAM_LATENCY_END1 = 14 -GC_EA_CPWD_PERF_SEL_RGMI_NUM_BANKS_VLD = 15 -GC_EA_CPWD_PERF_SEL_RGMI_REQ_PER_CLIGRP = 16 -GC_EA_CPWD_PERF_SEL_RGMI_CHAINED_REQ_PER_CLIGR = 17 -GC_EA_CPWD_PERF_SEL_RGMI_LATENCY_START0 = 18 -GC_EA_CPWD_PERF_SEL_RGMI_LATENCY_END0 = 19 -GC_EA_CPWD_PERF_SEL_RGMI_LATENCY_START1 = 20 -GC_EA_CPWD_PERF_SEL_RGMI_LATENCY_END1 = 21 -GC_EA_CPWD_PERF_SEL_WGMI_NUM_BANKS_VLD = 22 -GC_EA_CPWD_PERF_SEL_WGMI_REQ_PER_CLIGRP = 23 -GC_EA_CPWD_PERF_SEL_WGMI_CHAINED_REQ_PER_CLIGRP = 24 -GC_EA_CPWD_PERF_SEL_WGMI_LATENCY_START0 = 25 -GC_EA_CPWD_PERF_SEL_WGMI_LATENCY_END0 = 26 -GC_EA_CPWD_PERF_SEL_WGMI_LATENCY_START1 = 27 -GC_EA_CPWD_PERF_SEL_WGMI_LATENCY_END1 = 28 -GC_EA_CPWD_PERF_SEL_RIO_REQ_PER_CLIGRP = 29 -GC_EA_CPWD_PERF_SEL_RIO_SIZE_REQ = 30 -GC_EA_CPWD_PERF_SEL_RIO_GRP0_SIZE_REQ = 31 -GC_EA_CPWD_PERF_SEL_RIO_GRP1_SIZE_REQ = 32 -GC_EA_CPWD_PERF_SEL_RIO_GRP2_SIZE_REQ = 33 -GC_EA_CPWD_PERF_SEL_RIO_GRP3_SIZE_REQ = 34 -GC_EA_CPWD_PERF_SEL_RIO_LATENCY_START0 = 35 -GC_EA_CPWD_PERF_SEL_RIO_LATENCY_END0 = 36 -GC_EA_CPWD_PERF_SEL_RIO_LATENCY_START1 = 37 -GC_EA_CPWD_PERF_SEL_RIO_LATENCY_END1 = 38 -GC_EA_CPWD_PERF_SEL_WIO_REQ_PER_CLIGRP = 39 -GC_EA_CPWD_PERF_SEL_WIO_CHAINED_REQ_PER_CLIGRP = 40 -GC_EA_CPWD_PERF_SEL_WIO_SIZE_REQ = 41 -GC_EA_CPWD_PERF_SEL_WIO_GRP0_SIZE_REQ = 42 -GC_EA_CPWD_PERF_SEL_WIO_GRP1_SIZE_REQ = 43 -GC_EA_CPWD_PERF_SEL_WIO_GRP2_SIZE_REQ = 44 -GC_EA_CPWD_PERF_SEL_WIO_GRP3_SIZE_REQ = 45 -GC_EA_CPWD_PERF_SEL_WIO_LATENCY_START0 = 46 -GC_EA_CPWD_PERF_SEL_WIO_LATENCY_END0 = 47 -GC_EA_CPWD_PERF_SEL_WIO_LATENCY_START1 = 48 -GC_EA_CPWD_PERF_SEL_WIO_LATENCY_END1 = 49 -GC_EA_CPWD_PERF_SEL_SARB_REQ_PER_VC = 50 -GC_EA_CPWD_PERF_SEL_SARB_DRAM_REQ_PER_VC = 51 -GC_EA_CPWD_PERF_SEL_SARB_GMI_REQ_PER_VC = 52 -GC_EA_CPWD_PERF_SEL_SARB_IO_REQ_PER_VC = 53 -GC_EA_CPWD_PERF_SEL_SARB_SIZE_REQ = 54 -GC_EA_CPWD_PERF_SEL_SARB_DRAM_SIZE_REQ = 55 -GC_EA_CPWD_PERF_SEL_SARB_GMI_SIZE_REQ = 56 -GC_EA_CPWD_PERF_SEL_SARB_IO_SIZE_REQ = 57 -GC_EA_CPWD_PERF_SEL_SARB_LATENCY_START0 = 58 -GC_EA_CPWD_PERF_SEL_SARB_LATENCY_END0 = 59 -GC_EA_CPWD_PERF_SEL_SARB_LATENCY_START1 = 60 -GC_EA_CPWD_PERF_SEL_SARB_LATENCY_END1 = 61 -GC_EA_CPWD_PERF_SEL_SARB_BUSY = 62 -GC_EA_CPWD_PERF_SEL_SARB_STALLED = 63 -GC_EA_CPWD_PERF_SEL_SARB_STARVING = 64 -GC_EA_CPWD_PERF_SEL_SARB_IDLE = 65 -GC_EA_CPWD_PERF_SEL_RRET_VLD = 66 -GC_EA_CPWD_PERF_SEL_WRET_VLD = 67 -GC_EA_CPWD_PERF_SEL_PRB_REQ = 68 -GC_EA_CPWD_PERF_SEL_MAM_ARAM_FA_EVICT = 69 -GC_EA_CPWD_PERF_SEL_MAM_ARAM_REQ_VLD = 70 -GC_EA_CPWD_PERF_SEL_MAM_DBIT_FA_HIT = 71 -GC_EA_CPWD_PERF_SEL_MAM_NUM_DQRY = 72 -GC_EA_CPWD_PERF_SEL_MAM_AFLUSH_INTERRUPT = 73 -GC_EA_CPWD_PERF_SEL_MAM_AFLUSH_INTERRUPT_STALLED = 74 -GC_EA_CPWD_PERF_SEL_MAM_AFLUSH_COMPLETED = 75 -GC_EA_CPWD_PERF_SEL_MAM_AFLUSH_ONGOING = 76 -GC_EA_CPWD_PERF_SEL_RDRAM_SIZE_REQ = 77 -GC_EA_CPWD_PERF_SEL_WDRAM_SIZE_REQ = 78 -GC_EA_CPWD_PERF_SEL_RGMI_SIZE_REQ = 79 -GC_EA_CPWD_PERF_SEL_WGMI_SIZE_REQ = 80 -GC_EA_CPWD_PERF_SEL_SARB_DRAM_RW_TURN_AROUND = 81 -GC_EA_CPWD_PERF_SEL_SARB_GMI_RW_TURN_AROUND = 82 -GC_EA_CPWD_PERF_SEL_RDRAM_CHAINED_REQ_PER_BURSTS_LENGTH = 83 -GC_EA_CPWD_PERF_SEL_WDRAM_CHAINED_REQ_PER_BURSTS_LENGTH = 84 -GC_EA_CPWD_PERF_SEL_RGMI_CHAINED_REQ_PER_BURSTS_LENGTH = 85 -GC_EA_CPWD_PERF_SEL_WGMI_CHAINED_REQ_PER_BURSTS_LENGTH = 86 -GC_EA_CPWD_PERF_SEL_MAM_DBIT_FA_EVICT = 87 -GC_EA_CPWD_PERF_SEL_MAM_DBIT_REQ_VLD = 88 -GC_EA_CPWD_PERF_SEL_SARB_COHERENT_SIZE_REQ = 89 -GC_EA_CPWD_PERF_SEL_MAM_ARAM_FA_HIT_EVICT = 90 -GC_EA_CPWD_PERF_SEL_MAM_ARAM_FA_LRU_EVICT = 91 -GC_EA_CPWD_PERF_SEL_MAM_FLUSH_REQ = 92 -GC_EA_CPWD_PERF_SEL_MAM_FLUSH_RESP = 93 -GC_EA_CPWD_PERF_SEL_MAM_DBIT_FA_HIT_EVICT = 94 -GC_EA_CPWD_PERF_SEL_MAM_DBIT_FA_LRU_EVICT = 95 -GC_EA_CPWD_PERF_SEL_MAM_DQRY_ONGOING = 96 -GC_EA_CPWD_PERF_SEL_MAM_ARAM_FA_HIT = 97 -GC_EA_CPWD_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GCVML2_SPM_PERF_SEL' -GCVML2_SPM_PERF_SEL__enumvalues = { - 0: 'GCVML2_SPM_PERF_SEL_EVENT_0', - 1: 'GCVML2_SPM_PERF_SEL_EVENT_1', - 2: 'GCVML2_SPM_PERF_SEL_EVENT_2', - 3: 'GCVML2_SPM_PERF_SEL_EVENT_3', - 4: 'GCVML2_SPM_PERF_SEL_EVENT_4', - 5: 'GCVML2_SPM_PERF_SEL_EVENT_5', - 6: 'GCVML2_SPM_PERF_SEL_EVENT_6', - 7: 'GCVML2_SPM_PERF_SEL_EVENT_7', - 8: 'GCVML2_SPM_PERF_SEL_EVENT_8', - 9: 'GCVML2_SPM_PERF_SEL_EVENT_9', - 10: 'GCVML2_SPM_PERF_SEL_EVENT_10', - 11: 'GCVML2_SPM_PERF_SEL_EVENT_11', - 12: 'GCVML2_SPM_PERF_SEL_EVENT_12', - 13: 'GCVML2_SPM_PERF_SEL_EVENT_13', - 14: 'GCVML2_SPM_PERF_SEL_EVENT_14', - 15: 'GCVML2_SPM_PERF_SEL_EVENT_15', - 16: 'GCVML2_SPM_PERF_SEL_EVENT_16', - 17: 'GCVML2_SPM_PERF_SEL_EVENT_17', - 18: 'GCVML2_SPM_PERF_SEL_EVENT_18', - 19: 'GCVML2_SPM_PERF_SEL_EVENT_19', - 20: 'GCVML2_SPM_PERF_SEL_EVENT_20', - 21: 'GCVML2_SPM_PERF_SEL_EVENT_21', - 22: 'GCVML2_SPM_PERF_SEL_EVENT_22', - 23: 'GCVML2_SPM_PERF_SEL_EVENT_23', - 24: 'GCVML2_SPM_PERF_SEL_EVENT_24', - 25: 'GCVML2_SPM_PERF_SEL_EVENT_25', - 26: 'GCVML2_SPM_PERF_SEL_EVENT_26', - 27: 'GCVML2_SPM_PERF_SEL_EVENT_27', - 28: 'GCVML2_SPM_PERF_SEL_EVENT_28', - 29: 'GCVML2_SPM_PERF_SEL_EVENT_29', - 30: 'GCVML2_SPM_PERF_SEL_EVENT_30', - 31: 'GCVML2_SPM_PERF_SEL_EVENT_31', - 32: 'GCVML2_SPM_PERF_SEL_EVENT_32', - 33: 'GCVML2_SPM_PERF_SEL_EVENT_33', - 34: 'GCVML2_SPM_PERF_SEL_EVENT_34', - 35: 'GCVML2_SPM_PERF_SEL_EVENT_35', - 36: 'GCVML2_SPM_PERF_SEL_EVENT_36', - 37: 'GCVML2_SPM_PERF_SEL_EVENT_37', - 38: 'GCVML2_SPM_PERF_SEL_EVENT_38', - 39: 'GCVML2_SPM_PERF_SEL_EVENT_39', - 40: 'GCVML2_SPM_PERF_SEL_EVENT_40', - 41: 'GCVML2_SPM_PERF_SEL_EVENT_41', - 42: 'GCVML2_SPM_PERF_SEL_EVENT_42', - 43: 'GCVML2_SPM_PERF_SEL_EVENT_43', - 44: 'GCVML2_SPM_PERF_SEL_EVENT_44', - 45: 'GCVML2_SPM_PERF_SEL_EVENT_45', - 46: 'GCVML2_SPM_PERF_SEL_EVENT_46', - 47: 'GCVML2_SPM_PERF_SEL_EVENT_47', - 48: 'GCVML2_SPM_PERF_SEL_EVENT_48', - 49: 'GCVML2_SPM_PERF_SEL_EVENT_49', - 50: 'GCVML2_SPM_PERF_SEL_EVENT_50', - 51: 'GCVML2_SPM_PERF_SEL_EVENT_51', - 52: 'GCVML2_SPM_PERF_SEL_EVENT_52', - 53: 'GCVML2_SPM_PERF_SEL_EVENT_53', - 54: 'GCVML2_SPM_PERF_SEL_EVENT_54', - 55: 'GCVML2_SPM_PERF_SEL_EVENT_55', - 56: 'GCVML2_SPM_PERF_SEL_EVENT_56', - 57: 'GCVML2_SPM_PERF_SEL_EVENT_57', - 58: 'GCVML2_SPM_PERF_SEL_EVENT_58', - 59: 'GCVML2_SPM_PERF_SEL_EVENT_59', - 60: 'GCVML2_SPM_PERF_SEL_EVENT_60', - 61: 'GCVML2_SPM_PERF_SEL_EVENT_61', - 62: 'GCVML2_SPM_PERF_SEL_EVENT_62', - 63: 'GCVML2_SPM_PERF_SEL_EVENT_63', - 64: 'GCVML2_SPM_PERF_SEL_EVENT_64', - 65: 'GCVML2_SPM_PERF_SEL_EVENT_65', - 66: 'GCVML2_SPM_PERF_SEL_EVENT_66', - 67: 'GCVML2_SPM_PERF_SEL_EVENT_67', - 68: 'GCVML2_SPM_PERF_SEL_EVENT_68', - 69: 'GCVML2_SPM_PERF_SEL_EVENT_69', - 70: 'GCVML2_SPM_PERF_SEL_EVENT_70', - 71: 'GCVML2_SPM_PERF_SEL_EVENT_71', - 72: 'GCVML2_SPM_PERF_SEL_EVENT_72', - 73: 'GCVML2_SPM_PERF_SEL_EVENT_73', - 74: 'GCVML2_SPM_PERF_SEL_EVENT_74', - 75: 'GCVML2_SPM_PERF_SEL_EVENT_75', - 76: 'GCVML2_SPM_PERF_SEL_EVENT_76', - 77: 'GCVML2_SPM_PERF_SEL_EVENT_77', - 78: 'GCVML2_SPM_PERF_SEL_EVENT_78', - 79: 'GCVML2_SPM_PERF_SEL_EVENT_79', - 80: 'GCVML2_SPM_PERF_SEL_EVENT_80', - 81: 'GCVML2_SPM_PERF_SEL_EVENT_81', - 82: 'GCVML2_SPM_PERF_SEL_EVENT_82', - 83: 'GCVML2_SPM_PERF_SEL_EVENT_83', - 84: 'GCVML2_SPM_PERF_SEL_EVENT_84', - 85: 'GCVML2_SPM_PERF_SEL_EVENT_85', - 86: 'GCVML2_SPM_PERF_SEL_EVENT_86', - 87: 'GCVML2_SPM_PERF_SEL_EVENT_87', - 88: 'GCVML2_SPM_PERF_SEL_EVENT_88', - 89: 'GCVML2_SPM_PERF_SEL_EVENT_89', - 90: 'GCVML2_SPM_PERF_SEL_EVENT_90', -} -GCVML2_SPM_PERF_SEL_EVENT_0 = 0 -GCVML2_SPM_PERF_SEL_EVENT_1 = 1 -GCVML2_SPM_PERF_SEL_EVENT_2 = 2 -GCVML2_SPM_PERF_SEL_EVENT_3 = 3 -GCVML2_SPM_PERF_SEL_EVENT_4 = 4 -GCVML2_SPM_PERF_SEL_EVENT_5 = 5 -GCVML2_SPM_PERF_SEL_EVENT_6 = 6 -GCVML2_SPM_PERF_SEL_EVENT_7 = 7 -GCVML2_SPM_PERF_SEL_EVENT_8 = 8 -GCVML2_SPM_PERF_SEL_EVENT_9 = 9 -GCVML2_SPM_PERF_SEL_EVENT_10 = 10 -GCVML2_SPM_PERF_SEL_EVENT_11 = 11 -GCVML2_SPM_PERF_SEL_EVENT_12 = 12 -GCVML2_SPM_PERF_SEL_EVENT_13 = 13 -GCVML2_SPM_PERF_SEL_EVENT_14 = 14 -GCVML2_SPM_PERF_SEL_EVENT_15 = 15 -GCVML2_SPM_PERF_SEL_EVENT_16 = 16 -GCVML2_SPM_PERF_SEL_EVENT_17 = 17 -GCVML2_SPM_PERF_SEL_EVENT_18 = 18 -GCVML2_SPM_PERF_SEL_EVENT_19 = 19 -GCVML2_SPM_PERF_SEL_EVENT_20 = 20 -GCVML2_SPM_PERF_SEL_EVENT_21 = 21 -GCVML2_SPM_PERF_SEL_EVENT_22 = 22 -GCVML2_SPM_PERF_SEL_EVENT_23 = 23 -GCVML2_SPM_PERF_SEL_EVENT_24 = 24 -GCVML2_SPM_PERF_SEL_EVENT_25 = 25 -GCVML2_SPM_PERF_SEL_EVENT_26 = 26 -GCVML2_SPM_PERF_SEL_EVENT_27 = 27 -GCVML2_SPM_PERF_SEL_EVENT_28 = 28 -GCVML2_SPM_PERF_SEL_EVENT_29 = 29 -GCVML2_SPM_PERF_SEL_EVENT_30 = 30 -GCVML2_SPM_PERF_SEL_EVENT_31 = 31 -GCVML2_SPM_PERF_SEL_EVENT_32 = 32 -GCVML2_SPM_PERF_SEL_EVENT_33 = 33 -GCVML2_SPM_PERF_SEL_EVENT_34 = 34 -GCVML2_SPM_PERF_SEL_EVENT_35 = 35 -GCVML2_SPM_PERF_SEL_EVENT_36 = 36 -GCVML2_SPM_PERF_SEL_EVENT_37 = 37 -GCVML2_SPM_PERF_SEL_EVENT_38 = 38 -GCVML2_SPM_PERF_SEL_EVENT_39 = 39 -GCVML2_SPM_PERF_SEL_EVENT_40 = 40 -GCVML2_SPM_PERF_SEL_EVENT_41 = 41 -GCVML2_SPM_PERF_SEL_EVENT_42 = 42 -GCVML2_SPM_PERF_SEL_EVENT_43 = 43 -GCVML2_SPM_PERF_SEL_EVENT_44 = 44 -GCVML2_SPM_PERF_SEL_EVENT_45 = 45 -GCVML2_SPM_PERF_SEL_EVENT_46 = 46 -GCVML2_SPM_PERF_SEL_EVENT_47 = 47 -GCVML2_SPM_PERF_SEL_EVENT_48 = 48 -GCVML2_SPM_PERF_SEL_EVENT_49 = 49 -GCVML2_SPM_PERF_SEL_EVENT_50 = 50 -GCVML2_SPM_PERF_SEL_EVENT_51 = 51 -GCVML2_SPM_PERF_SEL_EVENT_52 = 52 -GCVML2_SPM_PERF_SEL_EVENT_53 = 53 -GCVML2_SPM_PERF_SEL_EVENT_54 = 54 -GCVML2_SPM_PERF_SEL_EVENT_55 = 55 -GCVML2_SPM_PERF_SEL_EVENT_56 = 56 -GCVML2_SPM_PERF_SEL_EVENT_57 = 57 -GCVML2_SPM_PERF_SEL_EVENT_58 = 58 -GCVML2_SPM_PERF_SEL_EVENT_59 = 59 -GCVML2_SPM_PERF_SEL_EVENT_60 = 60 -GCVML2_SPM_PERF_SEL_EVENT_61 = 61 -GCVML2_SPM_PERF_SEL_EVENT_62 = 62 -GCVML2_SPM_PERF_SEL_EVENT_63 = 63 -GCVML2_SPM_PERF_SEL_EVENT_64 = 64 -GCVML2_SPM_PERF_SEL_EVENT_65 = 65 -GCVML2_SPM_PERF_SEL_EVENT_66 = 66 -GCVML2_SPM_PERF_SEL_EVENT_67 = 67 -GCVML2_SPM_PERF_SEL_EVENT_68 = 68 -GCVML2_SPM_PERF_SEL_EVENT_69 = 69 -GCVML2_SPM_PERF_SEL_EVENT_70 = 70 -GCVML2_SPM_PERF_SEL_EVENT_71 = 71 -GCVML2_SPM_PERF_SEL_EVENT_72 = 72 -GCVML2_SPM_PERF_SEL_EVENT_73 = 73 -GCVML2_SPM_PERF_SEL_EVENT_74 = 74 -GCVML2_SPM_PERF_SEL_EVENT_75 = 75 -GCVML2_SPM_PERF_SEL_EVENT_76 = 76 -GCVML2_SPM_PERF_SEL_EVENT_77 = 77 -GCVML2_SPM_PERF_SEL_EVENT_78 = 78 -GCVML2_SPM_PERF_SEL_EVENT_79 = 79 -GCVML2_SPM_PERF_SEL_EVENT_80 = 80 -GCVML2_SPM_PERF_SEL_EVENT_81 = 81 -GCVML2_SPM_PERF_SEL_EVENT_82 = 82 -GCVML2_SPM_PERF_SEL_EVENT_83 = 83 -GCVML2_SPM_PERF_SEL_EVENT_84 = 84 -GCVML2_SPM_PERF_SEL_EVENT_85 = 85 -GCVML2_SPM_PERF_SEL_EVENT_86 = 86 -GCVML2_SPM_PERF_SEL_EVENT_87 = 87 -GCVML2_SPM_PERF_SEL_EVENT_88 = 88 -GCVML2_SPM_PERF_SEL_EVENT_89 = 89 -GCVML2_SPM_PERF_SEL_EVENT_90 = 90 -GCVML2_SPM_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GCUTCL2_PERF_SEL' -GCUTCL2_PERF_SEL__enumvalues = { - 0: 'GCUTCL2_PERF_SEL_EVENT_0', - 1: 'GCUTCL2_PERF_SEL_EVENT_1', - 2: 'GCUTCL2_PERF_SEL_EVENT_2', - 3: 'GCUTCL2_PERF_SEL_EVENT_3', - 4: 'GCUTCL2_PERF_SEL_EVENT_4', - 5: 'GCUTCL2_PERF_SEL_EVENT_5', - 6: 'GCUTCL2_PERF_SEL_EVENT_6', - 7: 'GCUTCL2_PERF_SEL_EVENT_7', - 8: 'GCUTCL2_PERF_SEL_EVENT_8', - 9: 'GCUTCL2_PERF_SEL_EVENT_9', - 10: 'GCUTCL2_PERF_SEL_EVENT_10', - 11: 'GCUTCL2_PERF_SEL_EVENT_11', - 12: 'GCUTCL2_PERF_SEL_EVENT_12', - 13: 'GCUTCL2_PERF_SEL_EVENT_13', - 14: 'GCUTCL2_PERF_SEL_EVENT_14', - 15: 'GCUTCL2_PERF_SEL_EVENT_15', - 16: 'GCUTCL2_PERF_SEL_EVENT_16', - 17: 'GCUTCL2_PERF_SEL_EVENT_17', - 18: 'GCUTCL2_PERF_SEL_EVENT_18', - 19: 'GCUTCL2_PERF_SEL_EVENT_19', - 20: 'GCUTCL2_PERF_SEL_EVENT_20', - 21: 'GCUTCL2_PERF_SEL_EVENT_21', - 22: 'GCUTCL2_PERF_SEL_EVENT_22', - 23: 'GCUTCL2_PERF_SEL_EVENT_23', - 24: 'GCUTCL2_PERF_SEL_EVENT_24', - 25: 'GCUTCL2_PERF_SEL_EVENT_25', - 26: 'GCUTCL2_PERF_SEL_EVENT_26', - 27: 'GCUTCL2_PERF_SEL_EVENT_27', - 28: 'GCUTCL2_PERF_SEL_EVENT_28', - 29: 'GCUTCL2_PERF_SEL_EVENT_29', - 30: 'GCUTCL2_PERF_SEL_EVENT_30', - 31: 'GCUTCL2_PERF_SEL_EVENT_31', - 32: 'GCUTCL2_PERF_SEL_EVENT_32', - 33: 'GCUTCL2_PERF_SEL_EVENT_33', - 34: 'GCUTCL2_PERF_SEL_EVENT_34', - 35: 'GCUTCL2_PERF_SEL_EVENT_35', - 36: 'GCUTCL2_PERF_SEL_EVENT_36', -} -GCUTCL2_PERF_SEL_EVENT_0 = 0 -GCUTCL2_PERF_SEL_EVENT_1 = 1 -GCUTCL2_PERF_SEL_EVENT_2 = 2 -GCUTCL2_PERF_SEL_EVENT_3 = 3 -GCUTCL2_PERF_SEL_EVENT_4 = 4 -GCUTCL2_PERF_SEL_EVENT_5 = 5 -GCUTCL2_PERF_SEL_EVENT_6 = 6 -GCUTCL2_PERF_SEL_EVENT_7 = 7 -GCUTCL2_PERF_SEL_EVENT_8 = 8 -GCUTCL2_PERF_SEL_EVENT_9 = 9 -GCUTCL2_PERF_SEL_EVENT_10 = 10 -GCUTCL2_PERF_SEL_EVENT_11 = 11 -GCUTCL2_PERF_SEL_EVENT_12 = 12 -GCUTCL2_PERF_SEL_EVENT_13 = 13 -GCUTCL2_PERF_SEL_EVENT_14 = 14 -GCUTCL2_PERF_SEL_EVENT_15 = 15 -GCUTCL2_PERF_SEL_EVENT_16 = 16 -GCUTCL2_PERF_SEL_EVENT_17 = 17 -GCUTCL2_PERF_SEL_EVENT_18 = 18 -GCUTCL2_PERF_SEL_EVENT_19 = 19 -GCUTCL2_PERF_SEL_EVENT_20 = 20 -GCUTCL2_PERF_SEL_EVENT_21 = 21 -GCUTCL2_PERF_SEL_EVENT_22 = 22 -GCUTCL2_PERF_SEL_EVENT_23 = 23 -GCUTCL2_PERF_SEL_EVENT_24 = 24 -GCUTCL2_PERF_SEL_EVENT_25 = 25 -GCUTCL2_PERF_SEL_EVENT_26 = 26 -GCUTCL2_PERF_SEL_EVENT_27 = 27 -GCUTCL2_PERF_SEL_EVENT_28 = 28 -GCUTCL2_PERF_SEL_EVENT_29 = 29 -GCUTCL2_PERF_SEL_EVENT_30 = 30 -GCUTCL2_PERF_SEL_EVENT_31 = 31 -GCUTCL2_PERF_SEL_EVENT_32 = 32 -GCUTCL2_PERF_SEL_EVENT_33 = 33 -GCUTCL2_PERF_SEL_EVENT_34 = 34 -GCUTCL2_PERF_SEL_EVENT_35 = 35 -GCUTCL2_PERF_SEL_EVENT_36 = 36 -GCUTCL2_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GCVML2_PERF_SEL' -GCVML2_PERF_SEL__enumvalues = { - 0: 'GCVML2_PERF_SEL_EVENT_0', - 1: 'GCVML2_PERF_SEL_EVENT_1', - 2: 'GCVML2_PERF_SEL_EVENT_2', - 3: 'GCVML2_PERF_SEL_EVENT_3', - 4: 'GCVML2_PERF_SEL_EVENT_4', - 5: 'GCVML2_PERF_SEL_EVENT_5', - 6: 'GCVML2_PERF_SEL_EVENT_6', - 7: 'GCVML2_PERF_SEL_EVENT_7', - 8: 'GCVML2_PERF_SEL_EVENT_8', - 9: 'GCVML2_PERF_SEL_EVENT_9', - 10: 'GCVML2_PERF_SEL_EVENT_10', - 11: 'GCVML2_PERF_SEL_EVENT_11', - 12: 'GCVML2_PERF_SEL_EVENT_12', - 13: 'GCVML2_PERF_SEL_EVENT_13', - 14: 'GCVML2_PERF_SEL_EVENT_14', - 15: 'GCVML2_PERF_SEL_EVENT_15', - 16: 'GCVML2_PERF_SEL_EVENT_16', - 17: 'GCVML2_PERF_SEL_EVENT_17', - 18: 'GCVML2_PERF_SEL_EVENT_18', - 19: 'GCVML2_PERF_SEL_EVENT_19', - 20: 'GCVML2_PERF_SEL_EVENT_20', - 21: 'GCVML2_PERF_SEL_EVENT_21', - 22: 'GCVML2_PERF_SEL_EVENT_22', - 23: 'GCVML2_PERF_SEL_EVENT_23', - 24: 'GCVML2_PERF_SEL_EVENT_24', - 25: 'GCVML2_PERF_SEL_EVENT_25', - 26: 'GCVML2_PERF_SEL_EVENT_26', - 27: 'GCVML2_PERF_SEL_EVENT_27', - 28: 'GCVML2_PERF_SEL_EVENT_28', - 29: 'GCVML2_PERF_SEL_EVENT_29', - 30: 'GCVML2_PERF_SEL_EVENT_30', - 31: 'GCVML2_PERF_SEL_EVENT_31', - 32: 'GCVML2_PERF_SEL_EVENT_32', - 33: 'GCVML2_PERF_SEL_EVENT_33', - 34: 'GCVML2_PERF_SEL_EVENT_34', - 35: 'GCVML2_PERF_SEL_EVENT_35', - 36: 'GCVML2_PERF_SEL_EVENT_36', - 37: 'GCVML2_PERF_SEL_EVENT_37', - 38: 'GCVML2_PERF_SEL_EVENT_38', - 39: 'GCVML2_PERF_SEL_EVENT_39', - 40: 'GCVML2_PERF_SEL_EVENT_40', - 41: 'GCVML2_PERF_SEL_EVENT_41', - 42: 'GCVML2_PERF_SEL_EVENT_42', - 43: 'GCVML2_PERF_SEL_EVENT_43', - 44: 'GCVML2_PERF_SEL_EVENT_44', - 45: 'GCVML2_PERF_SEL_EVENT_45', - 46: 'GCVML2_PERF_SEL_EVENT_46', - 47: 'GCVML2_PERF_SEL_EVENT_47', - 48: 'GCVML2_PERF_SEL_EVENT_48', - 49: 'GCVML2_PERF_SEL_EVENT_49', - 50: 'GCVML2_PERF_SEL_EVENT_50', - 51: 'GCVML2_PERF_SEL_EVENT_51', - 52: 'GCVML2_PERF_SEL_EVENT_52', - 53: 'GCVML2_PERF_SEL_EVENT_53', - 54: 'GCVML2_PERF_SEL_EVENT_54', - 55: 'GCVML2_PERF_SEL_EVENT_55', - 56: 'GCVML2_PERF_SEL_EVENT_56', - 57: 'GCVML2_PERF_SEL_EVENT_57', - 58: 'GCVML2_PERF_SEL_EVENT_58', - 59: 'GCVML2_PERF_SEL_EVENT_59', - 60: 'GCVML2_PERF_SEL_EVENT_60', - 61: 'GCVML2_PERF_SEL_EVENT_61', - 62: 'GCVML2_PERF_SEL_EVENT_62', - 63: 'GCVML2_PERF_SEL_EVENT_63', - 64: 'GCVML2_PERF_SEL_EVENT_64', - 65: 'GCVML2_PERF_SEL_EVENT_65', - 66: 'GCVML2_PERF_SEL_EVENT_66', - 67: 'GCVML2_PERF_SEL_EVENT_67', - 68: 'GCVML2_PERF_SEL_EVENT_68', - 69: 'GCVML2_PERF_SEL_EVENT_69', - 70: 'GCVML2_PERF_SEL_EVENT_70', - 71: 'GCVML2_PERF_SEL_EVENT_71', - 72: 'GCVML2_PERF_SEL_EVENT_72', - 73: 'GCVML2_PERF_SEL_EVENT_73', - 74: 'GCVML2_PERF_SEL_EVENT_74', - 75: 'GCVML2_PERF_SEL_EVENT_75', - 76: 'GCVML2_PERF_SEL_EVENT_76', - 77: 'GCVML2_PERF_SEL_EVENT_77', - 78: 'GCVML2_PERF_SEL_EVENT_78', - 79: 'GCVML2_PERF_SEL_EVENT_79', - 80: 'GCVML2_PERF_SEL_EVENT_80', - 81: 'GCVML2_PERF_SEL_EVENT_81', - 82: 'GCVML2_PERF_SEL_EVENT_82', - 83: 'GCVML2_PERF_SEL_EVENT_83', - 84: 'GCVML2_PERF_SEL_EVENT_84', - 85: 'GCVML2_PERF_SEL_EVENT_85', - 86: 'GCVML2_PERF_SEL_EVENT_86', - 87: 'GCVML2_PERF_SEL_EVENT_87', - 88: 'GCVML2_PERF_SEL_EVENT_88', - 89: 'GCVML2_PERF_SEL_EVENT_89', - 90: 'GCVML2_PERF_SEL_EVENT_90', -} -GCVML2_PERF_SEL_EVENT_0 = 0 -GCVML2_PERF_SEL_EVENT_1 = 1 -GCVML2_PERF_SEL_EVENT_2 = 2 -GCVML2_PERF_SEL_EVENT_3 = 3 -GCVML2_PERF_SEL_EVENT_4 = 4 -GCVML2_PERF_SEL_EVENT_5 = 5 -GCVML2_PERF_SEL_EVENT_6 = 6 -GCVML2_PERF_SEL_EVENT_7 = 7 -GCVML2_PERF_SEL_EVENT_8 = 8 -GCVML2_PERF_SEL_EVENT_9 = 9 -GCVML2_PERF_SEL_EVENT_10 = 10 -GCVML2_PERF_SEL_EVENT_11 = 11 -GCVML2_PERF_SEL_EVENT_12 = 12 -GCVML2_PERF_SEL_EVENT_13 = 13 -GCVML2_PERF_SEL_EVENT_14 = 14 -GCVML2_PERF_SEL_EVENT_15 = 15 -GCVML2_PERF_SEL_EVENT_16 = 16 -GCVML2_PERF_SEL_EVENT_17 = 17 -GCVML2_PERF_SEL_EVENT_18 = 18 -GCVML2_PERF_SEL_EVENT_19 = 19 -GCVML2_PERF_SEL_EVENT_20 = 20 -GCVML2_PERF_SEL_EVENT_21 = 21 -GCVML2_PERF_SEL_EVENT_22 = 22 -GCVML2_PERF_SEL_EVENT_23 = 23 -GCVML2_PERF_SEL_EVENT_24 = 24 -GCVML2_PERF_SEL_EVENT_25 = 25 -GCVML2_PERF_SEL_EVENT_26 = 26 -GCVML2_PERF_SEL_EVENT_27 = 27 -GCVML2_PERF_SEL_EVENT_28 = 28 -GCVML2_PERF_SEL_EVENT_29 = 29 -GCVML2_PERF_SEL_EVENT_30 = 30 -GCVML2_PERF_SEL_EVENT_31 = 31 -GCVML2_PERF_SEL_EVENT_32 = 32 -GCVML2_PERF_SEL_EVENT_33 = 33 -GCVML2_PERF_SEL_EVENT_34 = 34 -GCVML2_PERF_SEL_EVENT_35 = 35 -GCVML2_PERF_SEL_EVENT_36 = 36 -GCVML2_PERF_SEL_EVENT_37 = 37 -GCVML2_PERF_SEL_EVENT_38 = 38 -GCVML2_PERF_SEL_EVENT_39 = 39 -GCVML2_PERF_SEL_EVENT_40 = 40 -GCVML2_PERF_SEL_EVENT_41 = 41 -GCVML2_PERF_SEL_EVENT_42 = 42 -GCVML2_PERF_SEL_EVENT_43 = 43 -GCVML2_PERF_SEL_EVENT_44 = 44 -GCVML2_PERF_SEL_EVENT_45 = 45 -GCVML2_PERF_SEL_EVENT_46 = 46 -GCVML2_PERF_SEL_EVENT_47 = 47 -GCVML2_PERF_SEL_EVENT_48 = 48 -GCVML2_PERF_SEL_EVENT_49 = 49 -GCVML2_PERF_SEL_EVENT_50 = 50 -GCVML2_PERF_SEL_EVENT_51 = 51 -GCVML2_PERF_SEL_EVENT_52 = 52 -GCVML2_PERF_SEL_EVENT_53 = 53 -GCVML2_PERF_SEL_EVENT_54 = 54 -GCVML2_PERF_SEL_EVENT_55 = 55 -GCVML2_PERF_SEL_EVENT_56 = 56 -GCVML2_PERF_SEL_EVENT_57 = 57 -GCVML2_PERF_SEL_EVENT_58 = 58 -GCVML2_PERF_SEL_EVENT_59 = 59 -GCVML2_PERF_SEL_EVENT_60 = 60 -GCVML2_PERF_SEL_EVENT_61 = 61 -GCVML2_PERF_SEL_EVENT_62 = 62 -GCVML2_PERF_SEL_EVENT_63 = 63 -GCVML2_PERF_SEL_EVENT_64 = 64 -GCVML2_PERF_SEL_EVENT_65 = 65 -GCVML2_PERF_SEL_EVENT_66 = 66 -GCVML2_PERF_SEL_EVENT_67 = 67 -GCVML2_PERF_SEL_EVENT_68 = 68 -GCVML2_PERF_SEL_EVENT_69 = 69 -GCVML2_PERF_SEL_EVENT_70 = 70 -GCVML2_PERF_SEL_EVENT_71 = 71 -GCVML2_PERF_SEL_EVENT_72 = 72 -GCVML2_PERF_SEL_EVENT_73 = 73 -GCVML2_PERF_SEL_EVENT_74 = 74 -GCVML2_PERF_SEL_EVENT_75 = 75 -GCVML2_PERF_SEL_EVENT_76 = 76 -GCVML2_PERF_SEL_EVENT_77 = 77 -GCVML2_PERF_SEL_EVENT_78 = 78 -GCVML2_PERF_SEL_EVENT_79 = 79 -GCVML2_PERF_SEL_EVENT_80 = 80 -GCVML2_PERF_SEL_EVENT_81 = 81 -GCVML2_PERF_SEL_EVENT_82 = 82 -GCVML2_PERF_SEL_EVENT_83 = 83 -GCVML2_PERF_SEL_EVENT_84 = 84 -GCVML2_PERF_SEL_EVENT_85 = 85 -GCVML2_PERF_SEL_EVENT_86 = 86 -GCVML2_PERF_SEL_EVENT_87 = 87 -GCVML2_PERF_SEL_EVENT_88 = 88 -GCVML2_PERF_SEL_EVENT_89 = 89 -GCVML2_PERF_SEL_EVENT_90 = 90 -GCVML2_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'BlendOp' -BlendOp__enumvalues = { - 0: 'BLEND_ZERO', - 1: 'BLEND_ONE', - 2: 'BLEND_SRC_COLOR', - 3: 'BLEND_ONE_MINUS_SRC_COLOR', - 4: 'BLEND_SRC_ALPHA', - 5: 'BLEND_ONE_MINUS_SRC_ALPHA', - 6: 'BLEND_DST_ALPHA', - 7: 'BLEND_ONE_MINUS_DST_ALPHA', - 8: 'BLEND_DST_COLOR', - 9: 'BLEND_ONE_MINUS_DST_COLOR', - 10: 'BLEND_SRC_ALPHA_SATURATE', - 11: 'BLEND_CONSTANT_COLOR', - 12: 'BLEND_ONE_MINUS_CONSTANT_COLOR', - 13: 'BLEND_SRC1_COLOR', - 14: 'BLEND_INV_SRC1_COLOR', - 15: 'BLEND_SRC1_ALPHA', - 16: 'BLEND_INV_SRC1_ALPHA', - 17: 'BLEND_CONSTANT_ALPHA', - 18: 'BLEND_ONE_MINUS_CONSTANT_ALPHA', -} -BLEND_ZERO = 0 -BLEND_ONE = 1 -BLEND_SRC_COLOR = 2 -BLEND_ONE_MINUS_SRC_COLOR = 3 -BLEND_SRC_ALPHA = 4 -BLEND_ONE_MINUS_SRC_ALPHA = 5 -BLEND_DST_ALPHA = 6 -BLEND_ONE_MINUS_DST_ALPHA = 7 -BLEND_DST_COLOR = 8 -BLEND_ONE_MINUS_DST_COLOR = 9 -BLEND_SRC_ALPHA_SATURATE = 10 -BLEND_CONSTANT_COLOR = 11 -BLEND_ONE_MINUS_CONSTANT_COLOR = 12 -BLEND_SRC1_COLOR = 13 -BLEND_INV_SRC1_COLOR = 14 -BLEND_SRC1_ALPHA = 15 -BLEND_INV_SRC1_ALPHA = 16 -BLEND_CONSTANT_ALPHA = 17 -BLEND_ONE_MINUS_CONSTANT_ALPHA = 18 -BlendOp = ctypes.c_uint32 # enum -GL__ZERO = BLEND_ZERO # macro -GL__ONE = BLEND_ONE # macro -GL__SRC_COLOR = BLEND_SRC_COLOR # macro -GL__ONE_MINUS_SRC_COLOR = BLEND_ONE_MINUS_SRC_COLOR # macro -GL__DST_COLOR = BLEND_DST_COLOR # macro -GL__ONE_MINUS_DST_COLOR = BLEND_ONE_MINUS_DST_COLOR # macro -GL__SRC_ALPHA = BLEND_SRC_ALPHA # macro -GL__ONE_MINUS_SRC_ALPHA = BLEND_ONE_MINUS_SRC_ALPHA # macro -GL__DST_ALPHA = BLEND_DST_ALPHA # macro -GL__ONE_MINUS_DST_ALPHA = BLEND_ONE_MINUS_DST_ALPHA # macro -GL__SRC_ALPHA_SATURATE = BLEND_SRC_ALPHA_SATURATE # macro -GL__CONSTANT_COLOR = BLEND_CONSTANT_COLOR # macro -GL__ONE_MINUS_CONSTANT_COLOR = BLEND_ONE_MINUS_CONSTANT_COLOR # macro -GL__CONSTANT_ALPHA = BLEND_CONSTANT_ALPHA # macro -GL__ONE_MINUS_CONSTANT_ALPHA = BLEND_ONE_MINUS_CONSTANT_ALPHA # macro - -# values for enumeration 'BlendOpt' -BlendOpt__enumvalues = { - 0: 'FORCE_OPT_AUTO', - 1: 'FORCE_OPT_DISABLE', - 2: 'FORCE_OPT_ENABLE_IF_SRC_A_0', - 3: 'FORCE_OPT_ENABLE_IF_SRC_RGB_0', - 4: 'FORCE_OPT_ENABLE_IF_SRC_ARGB_0', - 5: 'FORCE_OPT_ENABLE_IF_SRC_A_1', - 6: 'FORCE_OPT_ENABLE_IF_SRC_RGB_1', - 7: 'FORCE_OPT_ENABLE_IF_SRC_ARGB_1', -} -FORCE_OPT_AUTO = 0 -FORCE_OPT_DISABLE = 1 -FORCE_OPT_ENABLE_IF_SRC_A_0 = 2 -FORCE_OPT_ENABLE_IF_SRC_RGB_0 = 3 -FORCE_OPT_ENABLE_IF_SRC_ARGB_0 = 4 -FORCE_OPT_ENABLE_IF_SRC_A_1 = 5 -FORCE_OPT_ENABLE_IF_SRC_RGB_1 = 6 -FORCE_OPT_ENABLE_IF_SRC_ARGB_1 = 7 -BlendOpt = ctypes.c_uint32 # enum - -# values for enumeration 'CBMode' -CBMode__enumvalues = { - 0: 'CB_DISABLE', - 1: 'CB_NORMAL', - 2: 'CB_ELIMINATE_FAST_CLEAR', - 3: 'CB_DCC_DECOMPRESS', - 4: 'CB_RESERVED', -} -CB_DISABLE = 0 -CB_NORMAL = 1 -CB_ELIMINATE_FAST_CLEAR = 2 -CB_DCC_DECOMPRESS = 3 -CB_RESERVED = 4 -CBMode = ctypes.c_uint32 # enum - -# values for enumeration 'CBPerfClearFilterSel' -CBPerfClearFilterSel__enumvalues = { - 0: 'CB_PERF_CLEAR_FILTER_SEL_NONCLEAR', - 1: 'CB_PERF_CLEAR_FILTER_SEL_CLEAR', -} -CB_PERF_CLEAR_FILTER_SEL_NONCLEAR = 0 -CB_PERF_CLEAR_FILTER_SEL_CLEAR = 1 -CBPerfClearFilterSel = ctypes.c_uint32 # enum - -# values for enumeration 'CBPerfOpFilterSel' -CBPerfOpFilterSel__enumvalues = { - 0: 'CB_PERF_OP_FILTER_SEL_WRITE_ONLY', - 1: 'CB_PERF_OP_FILTER_SEL_NEEDS_DESTINATION', - 2: 'CB_PERF_OP_FILTER_SEL_RESOLVE', - 3: 'CB_PERF_OP_FILTER_SEL_DECOMPRESS', - 4: 'CB_PERF_OP_FILTER_SEL_FMASK_DECOMPRESS', - 5: 'CB_PERF_OP_FILTER_SEL_ELIMINATE_FAST_CLEAR', -} -CB_PERF_OP_FILTER_SEL_WRITE_ONLY = 0 -CB_PERF_OP_FILTER_SEL_NEEDS_DESTINATION = 1 -CB_PERF_OP_FILTER_SEL_RESOLVE = 2 -CB_PERF_OP_FILTER_SEL_DECOMPRESS = 3 -CB_PERF_OP_FILTER_SEL_FMASK_DECOMPRESS = 4 -CB_PERF_OP_FILTER_SEL_ELIMINATE_FAST_CLEAR = 5 -CBPerfOpFilterSel = ctypes.c_uint32 # enum - -# values for enumeration 'CBPerfSel' -CBPerfSel__enumvalues = { - 1: 'CB_PERF_SEL_BUSY', - 2: 'CB_PERF_SEL_DRAWN_BUSY', - 3: 'CB_PERF_SEL_DRAWN_PIXEL', - 4: 'CB_PERF_SEL_DRAWN_QUAD', - 5: 'CB_PERF_SEL_DRAWN_QUAD_FRAGMENT', - 15: 'CB_PERF_SEL_DB_CB_EXPORT_VALID_READY', - 16: 'CB_PERF_SEL_DB_CB_EXPORT_VALID_READYB', - 17: 'CB_PERF_SEL_DB_CB_EXPORT_VALIDB_READY', - 18: 'CB_PERF_SEL_DB_CB_EXPORT_VALIDB_READYB', - 21: 'CB_PERF_SEL_CC_CRW_GLX_REQ_READ_REQUEST', - 22: 'CB_PERF_SEL_CC_CRW_GLX_REQ_READ_REQUEST_IN_FLIGHT', - 23: 'CB_PERF_SEL_CC_CRW_GLX_REQ_WRITE_REQUEST', - 24: 'CB_PERF_SEL_CC_CRW_GLX_SRC_WRITE_CYCLES', - 25: 'CB_PERF_SEL_CC_FDCC_COMPRESS_FRAG_TIDS_IN', - 26: 'CB_PERF_SEL_CC_FDCC_DECOMPRESS_FRAG_TIDS_OUT', - 50: 'CB_PERF_SEL_EVENT', - 51: 'CB_PERF_SEL_EVENT_CACHE_FLUSH_TS', - 52: 'CB_PERF_SEL_EVENT_CONTEXT_DONE', - 53: 'CB_PERF_SEL_EVENT_CACHE_FLUSH', - 54: 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_TS_EVENT', - 55: 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_EVENT', - 56: 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_DATA_TS', - 57: 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_META', - 58: 'CB_PERF_SEL_EVENT_BOTTOM_OF_PIPE_TS', - 60: 'CB_PERF_SEL_STATIC_CLOCK_EN', - 61: 'CB_PERF_SEL_PERFMON_CLOCK_EN', - 62: 'CB_PERF_SEL_BLEND_CLOCK_EN', - 63: 'CB_PERF_SEL_COLOR_STORE_CLOCK_EN', - 64: 'CB_PERF_SEL_BACKEND_READ_CLOCK_EN', - 65: 'CB_PERF_SEL_GRBM_CLOCK_EN', - 66: 'CB_PERF_SEL_MEMARB_CLOCK_EN', - 67: 'CB_PERF_SEL_BACKEND_EVICT_PIPE_CLOCK_EN', - 68: 'CB_PERF_SEL_BACKEND_FRAGOP_CLOCK_EN', - 69: 'CB_PERF_SEL_BACKEND_SRC_FIFO_CLOCK_EN', - 70: 'CB_PERF_SEL_BACKEND_CACHE_CTL_CLOCK_EN', - 71: 'CB_PERF_SEL_FRONTEND_INPUT_CLOCK_EN', - 72: 'CB_PERF_SEL_FRONTEND_ADDR_CLOCK_EN', - 73: 'CB_PERF_SEL_FRONTEND_FDCC_CLOCK_EN', - 74: 'CB_PERF_SEL_FRONTEND_SAMPLE_MASK_TRACKER_CLOCK_EN', - 75: 'CB_PERF_SEL_EVENTS_CLK_EN', - 80: 'CB_PERF_SEL_CC_TAG_HIT', - 81: 'CB_PERF_SEL_CC_CACHE_TAG_MISS', - 82: 'CB_PERF_SEL_CC_CACHE_SECTOR_MISS', - 83: 'CB_PERF_SEL_CC_CACHE_SECTOR_HIT', - 88: 'CB_PERF_SEL_CC_CACHE_READ_OUTPUT_STALL', - 89: 'CB_PERF_SEL_CC_CACHE_WRITE_OUTPUT_STALL', - 90: 'CB_PERF_SEL_CC_CACHE_ACK_OUTPUT_STALL', - 91: 'CB_PERF_SEL_CC_CACHE_STALL', - 92: 'CB_PERF_SEL_CC_CACHE_FLUSH', - 93: 'CB_PERF_SEL_CC_CACHE_SECTORS_FLUSHED', - 94: 'CB_PERF_SEL_CC_CACHE_WA_TO_RMW_CONVERSION', - 95: 'CB_PERF_SEL_CC_CACHE_QBLOCKS_FLUSHED', - 96: 'CB_PERF_SEL_CC_CACHE_DIRTY_QBLOCKS_FLUSHED', - 97: 'CB_PERF_SEL_CC_CACHE_READS_SAVED_DUE_TO_DCC', - 98: 'CB_PERF_SEL_CCC_IN_EVICT_HAZARD_STALL', - 99: 'CB_PERF_SEL_CCC_COLOR_RESOURCE_PANIC', - 100: 'CB_PERF_SEL_CCC_FMASK_RESOURCE_PANIC', - 101: 'CB_PERF_SEL_CCC_FREE_WAYS_PANIC', - 102: 'CB_PERF_SEL_CCC_SKID_FIFO_FULL', - 103: 'CB_PERF_SEL_CCC_SKID_FIFO_STALL', - 104: 'CB_PERF_SEL_CCC_COLOR_RESOURCE_STALL', - 105: 'CB_PERF_SEL_CCC_FMASK_RESOURCE_STALL', - 106: 'CB_PERF_SEL_CCC_FREE_WAYS_STALL', - 110: 'CB_PERF_SEL_BE_SRCFIFO_FULL', - 111: 'CB_PERF_SEL_BE_RDLATFIFO_FULL', - 112: 'CB_PERF_SEL_RDLAT_FIFO_QUAD_RESIDENCY_STALL', - 113: 'CB_PERF_SEL_CC_QUADFRAG_VALID_READY', - 114: 'CB_PERF_SEL_CC_QUADFRAG_VALID_READYB', - 115: 'CB_PERF_SEL_CC_QUADFRAG_VALIDB_READY', - 116: 'CB_PERF_SEL_CC_QUADFRAG_VALIDB_READYB', - 118: 'CB_PERF_SEL_CC_BB_BLEND_PIXEL_VALID_READY', - 119: 'CB_PERF_SEL_CC_BB_BLEND_PIXEL_VALID_READYB', - 120: 'CB_PERF_SEL_CC_BB_BLEND_PIXEL_VALIDB_READY', - 121: 'CB_PERF_SEL_CC_BB_BLEND_PIXEL_VALIDB_READYB', - 150: 'CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_BOTH', - 151: 'CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_LEFT', - 152: 'CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_RIGHT', - 180: 'CB_PERF_SEL_BLEND_QUAD_DST_READ_COULD_HAVE_BEEN_OPTIMIZED', - 181: 'CB_PERF_SEL_BLEND_QUAD_BLENDING_COULD_HAVE_BEEN_BYPASSED', - 182: 'CB_PERF_SEL_BLEND_QUAD_COULD_HAVE_BEEN_DISCARDED', - 183: 'CB_PERF_SEL_BLEND_OPT_PIXELS_RESULT_EQ_DEST', - 184: 'CB_PERF_SEL_BLEND_STALL_AT_OUTPUT', - 185: 'CB_PERF_SEL_BLEND_STALL_ON_CACHE_ACCESS', - 186: 'CB_PERF_SEL_BLEND_COLLISION_DUE_TO_CACHE_WRITE', - 187: 'CB_PERF_SEL_BLEND_RAW_HAZARD_STALL', - 190: 'CB_PERF_SEL_BE_CS_FILLRATE_1X2', - 191: 'CB_PERF_SEL_BE_CS_FILLRATE_2X1', - 192: 'CB_PERF_SEL_BE_CS_FILLRATE_2X2', - 250: 'CB_PERF_SEL_FORMAT_IS_32_R', - 251: 'CB_PERF_SEL_FORMAT_IS_32_AR', - 252: 'CB_PERF_SEL_FORMAT_IS_32_GR', - 253: 'CB_PERF_SEL_FORMAT_IS_32_ABGR', - 254: 'CB_PERF_SEL_FORMAT_IS_FP16_ABGR', - 255: 'CB_PERF_SEL_FORMAT_IS_SIGNED16_ABGR', - 256: 'CB_PERF_SEL_FORMAT_IS_UNSIGNED16_ABGR', - 257: 'CB_PERF_SEL_FORMAT_IS_32BPP_8PIX', - 258: 'CB_PERF_SEL_FORMAT_IS_16_16_UNSIGNED_8PIX', - 259: 'CB_PERF_SEL_FORMAT_IS_16_16_SIGNED_8PIX', - 260: 'CB_PERF_SEL_FORMAT_IS_16_16_FLOAT_8PIX', - 261: 'CB_PERF_SEL_EXPORT_ADDED_1_FRAGMENT', - 262: 'CB_PERF_SEL_EXPORT_ADDED_2_FRAGMENTS', - 263: 'CB_PERF_SEL_EXPORT_ADDED_3_FRAGMENTS', - 264: 'CB_PERF_SEL_EXPORT_ADDED_4_FRAGMENTS', - 265: 'CB_PERF_SEL_EXPORT_ADDED_5_FRAGMENTS', - 266: 'CB_PERF_SEL_EXPORT_ADDED_6_FRAGMENTS', - 267: 'CB_PERF_SEL_EXPORT_ADDED_7_FRAGMENTS', - 268: 'CB_PERF_SEL_EXPORT_BLEND_OPT_DONT_READ_DST', - 269: 'CB_PERF_SEL_EXPORT_BLEND_OPT_BLEND_BYPASS', - 270: 'CB_PERF_SEL_EXPORT_BLEND_OPT_DISCARD_PIXELS', - 271: 'CB_PERF_SEL_EXPORT_HAS_1_FRAGMENT_BEFORE_UPDATE', - 272: 'CB_PERF_SEL_EXPORT_HAS_1_FRAGMENT_AFTER_UPDATE', - 273: 'CB_PERF_SEL_EXPORT_HAS_2_FRAGMENTS_BEFORE_UPDATE', - 274: 'CB_PERF_SEL_EXPORT_HAS_2_FRAGMENTS_AFTER_UPDATE', - 275: 'CB_PERF_SEL_EXPORT_HAS_3_FRAGMENTS_BEFORE_UPDATE', - 276: 'CB_PERF_SEL_EXPORT_HAS_3_FRAGMENTS_AFTER_UPDATE', - 277: 'CB_PERF_SEL_EXPORT_HAS_4_FRAGMENTS_BEFORE_UPDATE', - 278: 'CB_PERF_SEL_EXPORT_HAS_4_FRAGMENTS_AFTER_UPDATE', - 279: 'CB_PERF_SEL_EXPORT_HAS_5_FRAGMENTS_BEFORE_UPDATE', - 280: 'CB_PERF_SEL_EXPORT_HAS_5_FRAGMENTS_AFTER_UPDATE', - 281: 'CB_PERF_SEL_EXPORT_HAS_6_FRAGMENTS_BEFORE_UPDATE', - 282: 'CB_PERF_SEL_EXPORT_HAS_6_FRAGMENTS_AFTER_UPDATE', - 283: 'CB_PERF_SEL_EXPORT_HAS_7_FRAGMENTS_BEFORE_UPDATE', - 284: 'CB_PERF_SEL_EXPORT_HAS_7_FRAGMENTS_AFTER_UPDATE', - 285: 'CB_PERF_SEL_EXPORT_HAS_8_FRAGMENTS_BEFORE_UPDATE', - 286: 'CB_PERF_SEL_EXPORT_HAS_8_FRAGMENTS_AFTER_UPDATE', - 287: 'CB_PERF_SEL_EXPORT_READS_FRAGMENT_0', - 288: 'CB_PERF_SEL_EXPORT_READS_FRAGMENT_1', - 289: 'CB_PERF_SEL_EXPORT_READS_FRAGMENT_2', - 290: 'CB_PERF_SEL_EXPORT_READS_FRAGMENT_3', - 291: 'CB_PERF_SEL_EXPORT_READS_FRAGMENT_4', - 292: 'CB_PERF_SEL_EXPORT_READS_FRAGMENT_5', - 293: 'CB_PERF_SEL_EXPORT_READS_FRAGMENT_6', - 294: 'CB_PERF_SEL_EXPORT_READS_FRAGMENT_7', - 295: 'CB_PERF_SEL_EXPORT_REMOVED_1_FRAGMENT', - 296: 'CB_PERF_SEL_EXPORT_REMOVED_2_FRAGMENTS', - 297: 'CB_PERF_SEL_EXPORT_REMOVED_3_FRAGMENTS', - 298: 'CB_PERF_SEL_EXPORT_REMOVED_4_FRAGMENTS', - 299: 'CB_PERF_SEL_EXPORT_REMOVED_5_FRAGMENTS', - 300: 'CB_PERF_SEL_EXPORT_REMOVED_6_FRAGMENTS', - 301: 'CB_PERF_SEL_EXPORT_REMOVED_7_FRAGMENTS', - 302: 'CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_0', - 303: 'CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_1', - 304: 'CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_2', - 305: 'CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_3', - 306: 'CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_4', - 307: 'CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_5', - 308: 'CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_6', - 309: 'CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_7', - 310: 'CB_PERF_SEL_EXPORT_KILLED_BY_COLOR_INVALID', - 311: 'CB_PERF_SEL_EXPORT_KILLED_BY_DISCARD_PIXEL', - 312: 'CB_PERF_SEL_EXPORT_KILLED_BY_NULL_SAMPLE_MASK', - 313: 'CB_PERF_SEL_EXPORT_KILLED_BY_NULL_TARGET_SHADER_MASK', -} -CB_PERF_SEL_BUSY = 1 -CB_PERF_SEL_DRAWN_BUSY = 2 -CB_PERF_SEL_DRAWN_PIXEL = 3 -CB_PERF_SEL_DRAWN_QUAD = 4 -CB_PERF_SEL_DRAWN_QUAD_FRAGMENT = 5 -CB_PERF_SEL_DB_CB_EXPORT_VALID_READY = 15 -CB_PERF_SEL_DB_CB_EXPORT_VALID_READYB = 16 -CB_PERF_SEL_DB_CB_EXPORT_VALIDB_READY = 17 -CB_PERF_SEL_DB_CB_EXPORT_VALIDB_READYB = 18 -CB_PERF_SEL_CC_CRW_GLX_REQ_READ_REQUEST = 21 -CB_PERF_SEL_CC_CRW_GLX_REQ_READ_REQUEST_IN_FLIGHT = 22 -CB_PERF_SEL_CC_CRW_GLX_REQ_WRITE_REQUEST = 23 -CB_PERF_SEL_CC_CRW_GLX_SRC_WRITE_CYCLES = 24 -CB_PERF_SEL_CC_FDCC_COMPRESS_FRAG_TIDS_IN = 25 -CB_PERF_SEL_CC_FDCC_DECOMPRESS_FRAG_TIDS_OUT = 26 -CB_PERF_SEL_EVENT = 50 -CB_PERF_SEL_EVENT_CACHE_FLUSH_TS = 51 -CB_PERF_SEL_EVENT_CONTEXT_DONE = 52 -CB_PERF_SEL_EVENT_CACHE_FLUSH = 53 -CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_TS_EVENT = 54 -CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_EVENT = 55 -CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_DATA_TS = 56 -CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_META = 57 -CB_PERF_SEL_EVENT_BOTTOM_OF_PIPE_TS = 58 -CB_PERF_SEL_STATIC_CLOCK_EN = 60 -CB_PERF_SEL_PERFMON_CLOCK_EN = 61 -CB_PERF_SEL_BLEND_CLOCK_EN = 62 -CB_PERF_SEL_COLOR_STORE_CLOCK_EN = 63 -CB_PERF_SEL_BACKEND_READ_CLOCK_EN = 64 -CB_PERF_SEL_GRBM_CLOCK_EN = 65 -CB_PERF_SEL_MEMARB_CLOCK_EN = 66 -CB_PERF_SEL_BACKEND_EVICT_PIPE_CLOCK_EN = 67 -CB_PERF_SEL_BACKEND_FRAGOP_CLOCK_EN = 68 -CB_PERF_SEL_BACKEND_SRC_FIFO_CLOCK_EN = 69 -CB_PERF_SEL_BACKEND_CACHE_CTL_CLOCK_EN = 70 -CB_PERF_SEL_FRONTEND_INPUT_CLOCK_EN = 71 -CB_PERF_SEL_FRONTEND_ADDR_CLOCK_EN = 72 -CB_PERF_SEL_FRONTEND_FDCC_CLOCK_EN = 73 -CB_PERF_SEL_FRONTEND_SAMPLE_MASK_TRACKER_CLOCK_EN = 74 -CB_PERF_SEL_EVENTS_CLK_EN = 75 -CB_PERF_SEL_CC_TAG_HIT = 80 -CB_PERF_SEL_CC_CACHE_TAG_MISS = 81 -CB_PERF_SEL_CC_CACHE_SECTOR_MISS = 82 -CB_PERF_SEL_CC_CACHE_SECTOR_HIT = 83 -CB_PERF_SEL_CC_CACHE_READ_OUTPUT_STALL = 88 -CB_PERF_SEL_CC_CACHE_WRITE_OUTPUT_STALL = 89 -CB_PERF_SEL_CC_CACHE_ACK_OUTPUT_STALL = 90 -CB_PERF_SEL_CC_CACHE_STALL = 91 -CB_PERF_SEL_CC_CACHE_FLUSH = 92 -CB_PERF_SEL_CC_CACHE_SECTORS_FLUSHED = 93 -CB_PERF_SEL_CC_CACHE_WA_TO_RMW_CONVERSION = 94 -CB_PERF_SEL_CC_CACHE_QBLOCKS_FLUSHED = 95 -CB_PERF_SEL_CC_CACHE_DIRTY_QBLOCKS_FLUSHED = 96 -CB_PERF_SEL_CC_CACHE_READS_SAVED_DUE_TO_DCC = 97 -CB_PERF_SEL_CCC_IN_EVICT_HAZARD_STALL = 98 -CB_PERF_SEL_CCC_COLOR_RESOURCE_PANIC = 99 -CB_PERF_SEL_CCC_FMASK_RESOURCE_PANIC = 100 -CB_PERF_SEL_CCC_FREE_WAYS_PANIC = 101 -CB_PERF_SEL_CCC_SKID_FIFO_FULL = 102 -CB_PERF_SEL_CCC_SKID_FIFO_STALL = 103 -CB_PERF_SEL_CCC_COLOR_RESOURCE_STALL = 104 -CB_PERF_SEL_CCC_FMASK_RESOURCE_STALL = 105 -CB_PERF_SEL_CCC_FREE_WAYS_STALL = 106 -CB_PERF_SEL_BE_SRCFIFO_FULL = 110 -CB_PERF_SEL_BE_RDLATFIFO_FULL = 111 -CB_PERF_SEL_RDLAT_FIFO_QUAD_RESIDENCY_STALL = 112 -CB_PERF_SEL_CC_QUADFRAG_VALID_READY = 113 -CB_PERF_SEL_CC_QUADFRAG_VALID_READYB = 114 -CB_PERF_SEL_CC_QUADFRAG_VALIDB_READY = 115 -CB_PERF_SEL_CC_QUADFRAG_VALIDB_READYB = 116 -CB_PERF_SEL_CC_BB_BLEND_PIXEL_VALID_READY = 118 -CB_PERF_SEL_CC_BB_BLEND_PIXEL_VALID_READYB = 119 -CB_PERF_SEL_CC_BB_BLEND_PIXEL_VALIDB_READY = 120 -CB_PERF_SEL_CC_BB_BLEND_PIXEL_VALIDB_READYB = 121 -CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_BOTH = 150 -CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_LEFT = 151 -CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_RIGHT = 152 -CB_PERF_SEL_BLEND_QUAD_DST_READ_COULD_HAVE_BEEN_OPTIMIZED = 180 -CB_PERF_SEL_BLEND_QUAD_BLENDING_COULD_HAVE_BEEN_BYPASSED = 181 -CB_PERF_SEL_BLEND_QUAD_COULD_HAVE_BEEN_DISCARDED = 182 -CB_PERF_SEL_BLEND_OPT_PIXELS_RESULT_EQ_DEST = 183 -CB_PERF_SEL_BLEND_STALL_AT_OUTPUT = 184 -CB_PERF_SEL_BLEND_STALL_ON_CACHE_ACCESS = 185 -CB_PERF_SEL_BLEND_COLLISION_DUE_TO_CACHE_WRITE = 186 -CB_PERF_SEL_BLEND_RAW_HAZARD_STALL = 187 -CB_PERF_SEL_BE_CS_FILLRATE_1X2 = 190 -CB_PERF_SEL_BE_CS_FILLRATE_2X1 = 191 -CB_PERF_SEL_BE_CS_FILLRATE_2X2 = 192 -CB_PERF_SEL_FORMAT_IS_32_R = 250 -CB_PERF_SEL_FORMAT_IS_32_AR = 251 -CB_PERF_SEL_FORMAT_IS_32_GR = 252 -CB_PERF_SEL_FORMAT_IS_32_ABGR = 253 -CB_PERF_SEL_FORMAT_IS_FP16_ABGR = 254 -CB_PERF_SEL_FORMAT_IS_SIGNED16_ABGR = 255 -CB_PERF_SEL_FORMAT_IS_UNSIGNED16_ABGR = 256 -CB_PERF_SEL_FORMAT_IS_32BPP_8PIX = 257 -CB_PERF_SEL_FORMAT_IS_16_16_UNSIGNED_8PIX = 258 -CB_PERF_SEL_FORMAT_IS_16_16_SIGNED_8PIX = 259 -CB_PERF_SEL_FORMAT_IS_16_16_FLOAT_8PIX = 260 -CB_PERF_SEL_EXPORT_ADDED_1_FRAGMENT = 261 -CB_PERF_SEL_EXPORT_ADDED_2_FRAGMENTS = 262 -CB_PERF_SEL_EXPORT_ADDED_3_FRAGMENTS = 263 -CB_PERF_SEL_EXPORT_ADDED_4_FRAGMENTS = 264 -CB_PERF_SEL_EXPORT_ADDED_5_FRAGMENTS = 265 -CB_PERF_SEL_EXPORT_ADDED_6_FRAGMENTS = 266 -CB_PERF_SEL_EXPORT_ADDED_7_FRAGMENTS = 267 -CB_PERF_SEL_EXPORT_BLEND_OPT_DONT_READ_DST = 268 -CB_PERF_SEL_EXPORT_BLEND_OPT_BLEND_BYPASS = 269 -CB_PERF_SEL_EXPORT_BLEND_OPT_DISCARD_PIXELS = 270 -CB_PERF_SEL_EXPORT_HAS_1_FRAGMENT_BEFORE_UPDATE = 271 -CB_PERF_SEL_EXPORT_HAS_1_FRAGMENT_AFTER_UPDATE = 272 -CB_PERF_SEL_EXPORT_HAS_2_FRAGMENTS_BEFORE_UPDATE = 273 -CB_PERF_SEL_EXPORT_HAS_2_FRAGMENTS_AFTER_UPDATE = 274 -CB_PERF_SEL_EXPORT_HAS_3_FRAGMENTS_BEFORE_UPDATE = 275 -CB_PERF_SEL_EXPORT_HAS_3_FRAGMENTS_AFTER_UPDATE = 276 -CB_PERF_SEL_EXPORT_HAS_4_FRAGMENTS_BEFORE_UPDATE = 277 -CB_PERF_SEL_EXPORT_HAS_4_FRAGMENTS_AFTER_UPDATE = 278 -CB_PERF_SEL_EXPORT_HAS_5_FRAGMENTS_BEFORE_UPDATE = 279 -CB_PERF_SEL_EXPORT_HAS_5_FRAGMENTS_AFTER_UPDATE = 280 -CB_PERF_SEL_EXPORT_HAS_6_FRAGMENTS_BEFORE_UPDATE = 281 -CB_PERF_SEL_EXPORT_HAS_6_FRAGMENTS_AFTER_UPDATE = 282 -CB_PERF_SEL_EXPORT_HAS_7_FRAGMENTS_BEFORE_UPDATE = 283 -CB_PERF_SEL_EXPORT_HAS_7_FRAGMENTS_AFTER_UPDATE = 284 -CB_PERF_SEL_EXPORT_HAS_8_FRAGMENTS_BEFORE_UPDATE = 285 -CB_PERF_SEL_EXPORT_HAS_8_FRAGMENTS_AFTER_UPDATE = 286 -CB_PERF_SEL_EXPORT_READS_FRAGMENT_0 = 287 -CB_PERF_SEL_EXPORT_READS_FRAGMENT_1 = 288 -CB_PERF_SEL_EXPORT_READS_FRAGMENT_2 = 289 -CB_PERF_SEL_EXPORT_READS_FRAGMENT_3 = 290 -CB_PERF_SEL_EXPORT_READS_FRAGMENT_4 = 291 -CB_PERF_SEL_EXPORT_READS_FRAGMENT_5 = 292 -CB_PERF_SEL_EXPORT_READS_FRAGMENT_6 = 293 -CB_PERF_SEL_EXPORT_READS_FRAGMENT_7 = 294 -CB_PERF_SEL_EXPORT_REMOVED_1_FRAGMENT = 295 -CB_PERF_SEL_EXPORT_REMOVED_2_FRAGMENTS = 296 -CB_PERF_SEL_EXPORT_REMOVED_3_FRAGMENTS = 297 -CB_PERF_SEL_EXPORT_REMOVED_4_FRAGMENTS = 298 -CB_PERF_SEL_EXPORT_REMOVED_5_FRAGMENTS = 299 -CB_PERF_SEL_EXPORT_REMOVED_6_FRAGMENTS = 300 -CB_PERF_SEL_EXPORT_REMOVED_7_FRAGMENTS = 301 -CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_0 = 302 -CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_1 = 303 -CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_2 = 304 -CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_3 = 305 -CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_4 = 306 -CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_5 = 307 -CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_6 = 308 -CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_7 = 309 -CB_PERF_SEL_EXPORT_KILLED_BY_COLOR_INVALID = 310 -CB_PERF_SEL_EXPORT_KILLED_BY_DISCARD_PIXEL = 311 -CB_PERF_SEL_EXPORT_KILLED_BY_NULL_SAMPLE_MASK = 312 -CB_PERF_SEL_EXPORT_KILLED_BY_NULL_TARGET_SHADER_MASK = 313 -CBPerfSel = ctypes.c_uint32 # enum - -# values for enumeration 'CombFunc' -CombFunc__enumvalues = { - 0: 'COMB_DST_PLUS_SRC', - 1: 'COMB_SRC_MINUS_DST', - 2: 'COMB_MIN_DST_SRC', - 3: 'COMB_MAX_DST_SRC', - 4: 'COMB_DST_MINUS_SRC', -} -COMB_DST_PLUS_SRC = 0 -COMB_SRC_MINUS_DST = 1 -COMB_MIN_DST_SRC = 2 -COMB_MAX_DST_SRC = 3 -COMB_DST_MINUS_SRC = 4 -CombFunc = ctypes.c_uint32 # enum - -# values for enumeration 'MemArbMode' -MemArbMode__enumvalues = { - 0: 'MEM_ARB_MODE_FIXED', - 1: 'MEM_ARB_MODE_AGE', - 2: 'MEM_ARB_MODE_WEIGHT', - 3: 'MEM_ARB_MODE_BOTH', -} -MEM_ARB_MODE_FIXED = 0 -MEM_ARB_MODE_AGE = 1 -MEM_ARB_MODE_WEIGHT = 2 -MEM_ARB_MODE_BOTH = 3 -MemArbMode = ctypes.c_uint32 # enum - -# values for enumeration 'PH_PERFCNT_SEL' -PH_PERFCNT_SEL__enumvalues = { - 0: 'PH_PERF_SEL_SC0_SRPS_WINDOW_VALID', - 1: 'PH_PERF_SEL_SC0_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 2: 'PH_PERF_SEL_SC0_ARB_XFC_ONLY_PRIM_CYCLES', - 3: 'PH_PERF_SEL_SC0_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 4: 'PH_PERF_SEL_SC0_ARB_STALLED_FROM_BELOW', - 5: 'PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE', - 6: 'PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 7: 'PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 8: 'PH_PERF_SEL_SC0_ARB_BUSY', - 9: 'PH_PERF_SEL_SC0_ARB_PA_BUSY_SOP', - 10: 'PH_PERF_SEL_SC0_ARB_EOP_POP_SYNC_POP', - 11: 'PH_PERF_SEL_SC0_ARB_EVENT_SYNC_POP', - 12: 'PH_PERF_SEL_SC0_PS_ENG_MULTICYCLE_BUBBLE', - 13: 'PH_PERF_SEL_SC0_EOP_SYNC_WINDOW', - 14: 'PH_PERF_SEL_SC0_BUSY_PROCESSING_MULTICYCLE_PRIM', - 15: 'PH_PERF_SEL_SC0_BUSY_CNT_NOT_ZERO', - 16: 'PH_PERF_SEL_SC0_SEND', - 17: 'PH_PERF_SEL_SC0_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 18: 'PH_PERF_SEL_SC0_CREDIT_AT_MAX', - 19: 'PH_PERF_SEL_SC0_CREDIT_AT_MAX_NO_PENDING_SEND', - 20: 'PH_PERF_SEL_SC0_GFX_PIPE0_TO_1_TRANSITION', - 21: 'PH_PERF_SEL_SC0_GFX_PIPE1_TO_0_TRANSITION', - 22: 'PH_PERF_SEL_SC0_GFX_PIPE_PRIM_PROVOKED_TRANSITION', - 23: 'PH_PERF_SEL_SC0_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 24: 'PH_PERF_SEL_SC0_PA0_DATA_FIFO_RD', - 25: 'PH_PERF_SEL_SC0_PA0_DATA_FIFO_WE', - 26: 'PH_PERF_SEL_SC0_PA0_FIFO_EMPTY', - 27: 'PH_PERF_SEL_SC0_PA0_FIFO_FULL', - 28: 'PH_PERF_SEL_SC0_PA0_NULL_WE', - 29: 'PH_PERF_SEL_SC0_PA0_EVENT_WE', - 30: 'PH_PERF_SEL_SC0_PA0_FPOV_WE', - 31: 'PH_PERF_SEL_SC0_PA0_FPOP_WE', - 32: 'PH_PERF_SEL_SC0_PA0_EOP_WE', - 33: 'PH_PERF_SEL_SC0_PA0_DATA_FIFO_EOP_RD', - 34: 'PH_PERF_SEL_SC0_PA0_EOPG_WE', - 35: 'PH_PERF_SEL_SC0_PA0_DEALLOC_WE', - 36: 'PH_PERF_SEL_SC0_PA1_DATA_FIFO_RD', - 37: 'PH_PERF_SEL_SC0_PA1_DATA_FIFO_WE', - 38: 'PH_PERF_SEL_SC0_PA1_FIFO_EMPTY', - 39: 'PH_PERF_SEL_SC0_PA1_FIFO_FULL', - 40: 'PH_PERF_SEL_SC0_PA1_NULL_WE', - 41: 'PH_PERF_SEL_SC0_PA1_EVENT_WE', - 42: 'PH_PERF_SEL_SC0_PA1_FPOV_WE', - 43: 'PH_PERF_SEL_SC0_PA1_FPOP_WE', - 44: 'PH_PERF_SEL_SC0_PA1_EOP_WE', - 45: 'PH_PERF_SEL_SC0_PA1_DATA_FIFO_EOP_RD', - 46: 'PH_PERF_SEL_SC0_PA1_EOPG_WE', - 47: 'PH_PERF_SEL_SC0_PA1_DEALLOC_WE', - 48: 'PH_PERF_SEL_SC0_PA2_DATA_FIFO_RD', - 49: 'PH_PERF_SEL_SC0_PA2_DATA_FIFO_WE', - 50: 'PH_PERF_SEL_SC0_PA2_FIFO_EMPTY', - 51: 'PH_PERF_SEL_SC0_PA2_FIFO_FULL', - 52: 'PH_PERF_SEL_SC0_PA2_NULL_WE', - 53: 'PH_PERF_SEL_SC0_PA2_EVENT_WE', - 54: 'PH_PERF_SEL_SC0_PA2_FPOV_WE', - 55: 'PH_PERF_SEL_SC0_PA2_FPOP_WE', - 56: 'PH_PERF_SEL_SC0_PA2_EOP_WE', - 57: 'PH_PERF_SEL_SC0_PA2_DATA_FIFO_EOP_RD', - 58: 'PH_PERF_SEL_SC0_PA2_EOPG_WE', - 59: 'PH_PERF_SEL_SC0_PA2_DEALLOC_WE', - 60: 'PH_PERF_SEL_SC0_PA3_DATA_FIFO_RD', - 61: 'PH_PERF_SEL_SC0_PA3_DATA_FIFO_WE', - 62: 'PH_PERF_SEL_SC0_PA3_FIFO_EMPTY', - 63: 'PH_PERF_SEL_SC0_PA3_FIFO_FULL', - 64: 'PH_PERF_SEL_SC0_PA3_NULL_WE', - 65: 'PH_PERF_SEL_SC0_PA3_EVENT_WE', - 66: 'PH_PERF_SEL_SC0_PA3_FPOV_WE', - 67: 'PH_PERF_SEL_SC0_PA3_FPOP_WE', - 68: 'PH_PERF_SEL_SC0_PA3_EOP_WE', - 69: 'PH_PERF_SEL_SC0_PA3_DATA_FIFO_EOP_RD', - 70: 'PH_PERF_SEL_SC0_PA3_EOPG_WE', - 71: 'PH_PERF_SEL_SC0_PA3_DEALLOC_WE', - 72: 'PH_PERF_SEL_SC0_PA4_DATA_FIFO_RD', - 73: 'PH_PERF_SEL_SC0_PA4_DATA_FIFO_WE', - 74: 'PH_PERF_SEL_SC0_PA4_FIFO_EMPTY', - 75: 'PH_PERF_SEL_SC0_PA4_FIFO_FULL', - 76: 'PH_PERF_SEL_SC0_PA4_NULL_WE', - 77: 'PH_PERF_SEL_SC0_PA4_EVENT_WE', - 78: 'PH_PERF_SEL_SC0_PA4_FPOV_WE', - 79: 'PH_PERF_SEL_SC0_PA4_FPOP_WE', - 80: 'PH_PERF_SEL_SC0_PA4_EOP_WE', - 81: 'PH_PERF_SEL_SC0_PA4_DATA_FIFO_EOP_RD', - 82: 'PH_PERF_SEL_SC0_PA4_EOPG_WE', - 83: 'PH_PERF_SEL_SC0_PA4_DEALLOC_WE', - 84: 'PH_PERF_SEL_SC0_PA5_DATA_FIFO_RD', - 85: 'PH_PERF_SEL_SC0_PA5_DATA_FIFO_WE', - 86: 'PH_PERF_SEL_SC0_PA5_FIFO_EMPTY', - 87: 'PH_PERF_SEL_SC0_PA5_FIFO_FULL', - 88: 'PH_PERF_SEL_SC0_PA5_NULL_WE', - 89: 'PH_PERF_SEL_SC0_PA5_EVENT_WE', - 90: 'PH_PERF_SEL_SC0_PA5_FPOV_WE', - 91: 'PH_PERF_SEL_SC0_PA5_FPOP_WE', - 92: 'PH_PERF_SEL_SC0_PA5_EOP_WE', - 93: 'PH_PERF_SEL_SC0_PA5_DATA_FIFO_EOP_RD', - 94: 'PH_PERF_SEL_SC0_PA5_EOPG_WE', - 95: 'PH_PERF_SEL_SC0_PA5_DEALLOC_WE', - 96: 'PH_PERF_SEL_SC0_PA6_DATA_FIFO_RD', - 97: 'PH_PERF_SEL_SC0_PA6_DATA_FIFO_WE', - 98: 'PH_PERF_SEL_SC0_PA6_FIFO_EMPTY', - 99: 'PH_PERF_SEL_SC0_PA6_FIFO_FULL', - 100: 'PH_PERF_SEL_SC0_PA6_NULL_WE', - 101: 'PH_PERF_SEL_SC0_PA6_EVENT_WE', - 102: 'PH_PERF_SEL_SC0_PA6_FPOV_WE', - 103: 'PH_PERF_SEL_SC0_PA6_FPOP_WE', - 104: 'PH_PERF_SEL_SC0_PA6_EOP_WE', - 105: 'PH_PERF_SEL_SC0_PA6_DATA_FIFO_EOP_RD', - 106: 'PH_PERF_SEL_SC0_PA6_EOPG_WE', - 107: 'PH_PERF_SEL_SC0_PA6_DEALLOC_WE', - 108: 'PH_PERF_SEL_SC0_PA7_DATA_FIFO_RD', - 109: 'PH_PERF_SEL_SC0_PA7_DATA_FIFO_WE', - 110: 'PH_PERF_SEL_SC0_PA7_FIFO_EMPTY', - 111: 'PH_PERF_SEL_SC0_PA7_FIFO_FULL', - 112: 'PH_PERF_SEL_SC0_PA7_NULL_WE', - 113: 'PH_PERF_SEL_SC0_PA7_EVENT_WE', - 114: 'PH_PERF_SEL_SC0_PA7_FPOV_WE', - 115: 'PH_PERF_SEL_SC0_PA7_FPOP_WE', - 116: 'PH_PERF_SEL_SC0_PA7_EOP_WE', - 117: 'PH_PERF_SEL_SC0_PA7_DATA_FIFO_EOP_RD', - 118: 'PH_PERF_SEL_SC0_PA7_EOPG_WE', - 119: 'PH_PERF_SEL_SC0_PA7_DEALLOC_WE', - 120: 'PH_PERF_SEL_SC1_SRPS_WINDOW_VALID', - 121: 'PH_PERF_SEL_SC1_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 122: 'PH_PERF_SEL_SC1_ARB_XFC_ONLY_PRIM_CYCLES', - 123: 'PH_PERF_SEL_SC1_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 124: 'PH_PERF_SEL_SC1_ARB_STALLED_FROM_BELOW', - 125: 'PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE', - 126: 'PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 127: 'PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 128: 'PH_PERF_SEL_SC1_ARB_BUSY', - 129: 'PH_PERF_SEL_SC1_ARB_PA_BUSY_SOP', - 130: 'PH_PERF_SEL_SC1_ARB_EOP_POP_SYNC_POP', - 131: 'PH_PERF_SEL_SC1_ARB_EVENT_SYNC_POP', - 132: 'PH_PERF_SEL_SC1_PS_ENG_MULTICYCLE_BUBBLE', - 133: 'PH_PERF_SEL_SC1_EOP_SYNC_WINDOW', - 134: 'PH_PERF_SEL_SC1_BUSY_PROCESSING_MULTICYCLE_PRIM', - 135: 'PH_PERF_SEL_SC1_BUSY_CNT_NOT_ZERO', - 136: 'PH_PERF_SEL_SC1_SEND', - 137: 'PH_PERF_SEL_SC1_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 138: 'PH_PERF_SEL_SC1_CREDIT_AT_MAX', - 139: 'PH_PERF_SEL_SC1_CREDIT_AT_MAX_NO_PENDING_SEND', - 140: 'PH_PERF_SEL_SC1_GFX_PIPE0_TO_1_TRANSITION', - 141: 'PH_PERF_SEL_SC1_GFX_PIPE1_TO_0_TRANSITION', - 142: 'PH_PERF_SEL_SC1_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 143: 'PH_PERF_SEL_SC1_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 144: 'PH_PERF_SEL_SC1_PA0_DATA_FIFO_RD', - 145: 'PH_PERF_SEL_SC1_PA0_DATA_FIFO_WE', - 146: 'PH_PERF_SEL_SC1_PA0_FIFO_EMPTY', - 147: 'PH_PERF_SEL_SC1_PA0_FIFO_FULL', - 148: 'PH_PERF_SEL_SC1_PA0_NULL_WE', - 149: 'PH_PERF_SEL_SC1_PA0_EVENT_WE', - 150: 'PH_PERF_SEL_SC1_PA0_FPOV_WE', - 151: 'PH_PERF_SEL_SC1_PA0_FPOP_WE', - 152: 'PH_PERF_SEL_SC1_PA0_EOP_WE', - 153: 'PH_PERF_SEL_SC1_PA0_DATA_FIFO_EOP_RD', - 154: 'PH_PERF_SEL_SC1_PA0_EOPG_WE', - 155: 'PH_PERF_SEL_SC1_PA0_DEALLOC_WE', - 156: 'PH_PERF_SEL_SC1_PA1_DATA_FIFO_RD', - 157: 'PH_PERF_SEL_SC1_PA1_DATA_FIFO_WE', - 158: 'PH_PERF_SEL_SC1_PA1_FIFO_EMPTY', - 159: 'PH_PERF_SEL_SC1_PA1_FIFO_FULL', - 160: 'PH_PERF_SEL_SC1_PA1_NULL_WE', - 161: 'PH_PERF_SEL_SC1_PA1_EVENT_WE', - 162: 'PH_PERF_SEL_SC1_PA1_FPOV_WE', - 163: 'PH_PERF_SEL_SC1_PA1_FPOP_WE', - 164: 'PH_PERF_SEL_SC1_PA1_EOP_WE', - 165: 'PH_PERF_SEL_SC1_PA1_DATA_FIFO_EOP_RD', - 166: 'PH_PERF_SEL_SC1_PA1_EOPG_WE', - 167: 'PH_PERF_SEL_SC1_PA1_DEALLOC_WE', - 168: 'PH_PERF_SEL_SC1_PA2_DATA_FIFO_RD', - 169: 'PH_PERF_SEL_SC1_PA2_DATA_FIFO_WE', - 170: 'PH_PERF_SEL_SC1_PA2_FIFO_EMPTY', - 171: 'PH_PERF_SEL_SC1_PA2_FIFO_FULL', - 172: 'PH_PERF_SEL_SC1_PA2_NULL_WE', - 173: 'PH_PERF_SEL_SC1_PA2_EVENT_WE', - 174: 'PH_PERF_SEL_SC1_PA2_FPOV_WE', - 175: 'PH_PERF_SEL_SC1_PA2_FPOP_WE', - 176: 'PH_PERF_SEL_SC1_PA2_EOP_WE', - 177: 'PH_PERF_SEL_SC1_PA2_DATA_FIFO_EOP_RD', - 178: 'PH_PERF_SEL_SC1_PA2_EOPG_WE', - 179: 'PH_PERF_SEL_SC1_PA2_DEALLOC_WE', - 180: 'PH_PERF_SEL_SC1_PA3_DATA_FIFO_RD', - 181: 'PH_PERF_SEL_SC1_PA3_DATA_FIFO_WE', - 182: 'PH_PERF_SEL_SC1_PA3_FIFO_EMPTY', - 183: 'PH_PERF_SEL_SC1_PA3_FIFO_FULL', - 184: 'PH_PERF_SEL_SC1_PA3_NULL_WE', - 185: 'PH_PERF_SEL_SC1_PA3_EVENT_WE', - 186: 'PH_PERF_SEL_SC1_PA3_FPOV_WE', - 187: 'PH_PERF_SEL_SC1_PA3_FPOP_WE', - 188: 'PH_PERF_SEL_SC1_PA3_EOP_WE', - 189: 'PH_PERF_SEL_SC1_PA3_DATA_FIFO_EOP_RD', - 190: 'PH_PERF_SEL_SC1_PA3_EOPG_WE', - 191: 'PH_PERF_SEL_SC1_PA3_DEALLOC_WE', - 192: 'PH_PERF_SEL_SC1_PA4_DATA_FIFO_RD', - 193: 'PH_PERF_SEL_SC1_PA4_DATA_FIFO_WE', - 194: 'PH_PERF_SEL_SC1_PA4_FIFO_EMPTY', - 195: 'PH_PERF_SEL_SC1_PA4_FIFO_FULL', - 196: 'PH_PERF_SEL_SC1_PA4_NULL_WE', - 197: 'PH_PERF_SEL_SC1_PA4_EVENT_WE', - 198: 'PH_PERF_SEL_SC1_PA4_FPOV_WE', - 199: 'PH_PERF_SEL_SC1_PA4_FPOP_WE', - 200: 'PH_PERF_SEL_SC1_PA4_EOP_WE', - 201: 'PH_PERF_SEL_SC1_PA4_DATA_FIFO_EOP_RD', - 202: 'PH_PERF_SEL_SC1_PA4_EOPG_WE', - 203: 'PH_PERF_SEL_SC1_PA4_DEALLOC_WE', - 204: 'PH_PERF_SEL_SC1_PA5_DATA_FIFO_RD', - 205: 'PH_PERF_SEL_SC1_PA5_DATA_FIFO_WE', - 206: 'PH_PERF_SEL_SC1_PA5_FIFO_EMPTY', - 207: 'PH_PERF_SEL_SC1_PA5_FIFO_FULL', - 208: 'PH_PERF_SEL_SC1_PA5_NULL_WE', - 209: 'PH_PERF_SEL_SC1_PA5_EVENT_WE', - 210: 'PH_PERF_SEL_SC1_PA5_FPOV_WE', - 211: 'PH_PERF_SEL_SC1_PA5_FPOP_WE', - 212: 'PH_PERF_SEL_SC1_PA5_EOP_WE', - 213: 'PH_PERF_SEL_SC1_PA5_DATA_FIFO_EOP_RD', - 214: 'PH_PERF_SEL_SC1_PA5_EOPG_WE', - 215: 'PH_PERF_SEL_SC1_PA5_DEALLOC_WE', - 216: 'PH_PERF_SEL_SC1_PA6_DATA_FIFO_RD', - 217: 'PH_PERF_SEL_SC1_PA6_DATA_FIFO_WE', - 218: 'PH_PERF_SEL_SC1_PA6_FIFO_EMPTY', - 219: 'PH_PERF_SEL_SC1_PA6_FIFO_FULL', - 220: 'PH_PERF_SEL_SC1_PA6_NULL_WE', - 221: 'PH_PERF_SEL_SC1_PA6_EVENT_WE', - 222: 'PH_PERF_SEL_SC1_PA6_FPOV_WE', - 223: 'PH_PERF_SEL_SC1_PA6_FPOP_WE', - 224: 'PH_PERF_SEL_SC1_PA6_EOP_WE', - 225: 'PH_PERF_SEL_SC1_PA6_DATA_FIFO_EOP_RD', - 226: 'PH_PERF_SEL_SC1_PA6_EOPG_WE', - 227: 'PH_PERF_SEL_SC1_PA6_DEALLOC_WE', - 228: 'PH_PERF_SEL_SC1_PA7_DATA_FIFO_RD', - 229: 'PH_PERF_SEL_SC1_PA7_DATA_FIFO_WE', - 230: 'PH_PERF_SEL_SC1_PA7_FIFO_EMPTY', - 231: 'PH_PERF_SEL_SC1_PA7_FIFO_FULL', - 232: 'PH_PERF_SEL_SC1_PA7_NULL_WE', - 233: 'PH_PERF_SEL_SC1_PA7_EVENT_WE', - 234: 'PH_PERF_SEL_SC1_PA7_FPOV_WE', - 235: 'PH_PERF_SEL_SC1_PA7_FPOP_WE', - 236: 'PH_PERF_SEL_SC1_PA7_EOP_WE', - 237: 'PH_PERF_SEL_SC1_PA7_DATA_FIFO_EOP_RD', - 238: 'PH_PERF_SEL_SC1_PA7_EOPG_WE', - 239: 'PH_PERF_SEL_SC1_PA7_DEALLOC_WE', - 240: 'PH_PERF_SEL_SC2_SRPS_WINDOW_VALID', - 241: 'PH_PERF_SEL_SC2_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 242: 'PH_PERF_SEL_SC2_ARB_XFC_ONLY_PRIM_CYCLES', - 243: 'PH_PERF_SEL_SC2_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 244: 'PH_PERF_SEL_SC2_ARB_STALLED_FROM_BELOW', - 245: 'PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE', - 246: 'PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 247: 'PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 248: 'PH_PERF_SEL_SC2_ARB_BUSY', - 249: 'PH_PERF_SEL_SC2_ARB_PA_BUSY_SOP', - 250: 'PH_PERF_SEL_SC2_ARB_EOP_POP_SYNC_POP', - 251: 'PH_PERF_SEL_SC2_ARB_EVENT_SYNC_POP', - 252: 'PH_PERF_SEL_SC2_PS_ENG_MULTICYCLE_BUBBLE', - 253: 'PH_PERF_SEL_SC2_EOP_SYNC_WINDOW', - 254: 'PH_PERF_SEL_SC2_BUSY_PROCESSING_MULTICYCLE_PRIM', - 255: 'PH_PERF_SEL_SC2_BUSY_CNT_NOT_ZERO', - 256: 'PH_PERF_SEL_SC2_SEND', - 257: 'PH_PERF_SEL_SC2_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 258: 'PH_PERF_SEL_SC2_CREDIT_AT_MAX', - 259: 'PH_PERF_SEL_SC2_CREDIT_AT_MAX_NO_PENDING_SEND', - 260: 'PH_PERF_SEL_SC2_GFX_PIPE0_TO_1_TRANSITION', - 261: 'PH_PERF_SEL_SC2_GFX_PIPE1_TO_0_TRANSITION', - 262: 'PH_PERF_SEL_SC2_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 263: 'PH_PERF_SEL_SC2_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 264: 'PH_PERF_SEL_SC2_PA0_DATA_FIFO_RD', - 265: 'PH_PERF_SEL_SC2_PA0_DATA_FIFO_WE', - 266: 'PH_PERF_SEL_SC2_PA0_FIFO_EMPTY', - 267: 'PH_PERF_SEL_SC2_PA0_FIFO_FULL', - 268: 'PH_PERF_SEL_SC2_PA0_NULL_WE', - 269: 'PH_PERF_SEL_SC2_PA0_EVENT_WE', - 270: 'PH_PERF_SEL_SC2_PA0_FPOV_WE', - 271: 'PH_PERF_SEL_SC2_PA0_FPOP_WE', - 272: 'PH_PERF_SEL_SC2_PA0_EOP_WE', - 273: 'PH_PERF_SEL_SC2_PA0_DATA_FIFO_EOP_RD', - 274: 'PH_PERF_SEL_SC2_PA0_EOPG_WE', - 275: 'PH_PERF_SEL_SC2_PA0_DEALLOC_WE', - 276: 'PH_PERF_SEL_SC2_PA1_DATA_FIFO_RD', - 277: 'PH_PERF_SEL_SC2_PA1_DATA_FIFO_WE', - 278: 'PH_PERF_SEL_SC2_PA1_FIFO_EMPTY', - 279: 'PH_PERF_SEL_SC2_PA1_FIFO_FULL', - 280: 'PH_PERF_SEL_SC2_PA1_NULL_WE', - 281: 'PH_PERF_SEL_SC2_PA1_EVENT_WE', - 282: 'PH_PERF_SEL_SC2_PA1_FPOV_WE', - 283: 'PH_PERF_SEL_SC2_PA1_FPOP_WE', - 284: 'PH_PERF_SEL_SC2_PA1_EOP_WE', - 285: 'PH_PERF_SEL_SC2_PA1_DATA_FIFO_EOP_RD', - 286: 'PH_PERF_SEL_SC2_PA1_EOPG_WE', - 287: 'PH_PERF_SEL_SC2_PA1_DEALLOC_WE', - 288: 'PH_PERF_SEL_SC2_PA2_DATA_FIFO_RD', - 289: 'PH_PERF_SEL_SC2_PA2_DATA_FIFO_WE', - 290: 'PH_PERF_SEL_SC2_PA2_FIFO_EMPTY', - 291: 'PH_PERF_SEL_SC2_PA2_FIFO_FULL', - 292: 'PH_PERF_SEL_SC2_PA2_NULL_WE', - 293: 'PH_PERF_SEL_SC2_PA2_EVENT_WE', - 294: 'PH_PERF_SEL_SC2_PA2_FPOV_WE', - 295: 'PH_PERF_SEL_SC2_PA2_FPOP_WE', - 296: 'PH_PERF_SEL_SC2_PA2_EOP_WE', - 297: 'PH_PERF_SEL_SC2_PA2_DATA_FIFO_EOP_RD', - 298: 'PH_PERF_SEL_SC2_PA2_EOPG_WE', - 299: 'PH_PERF_SEL_SC2_PA2_DEALLOC_WE', - 300: 'PH_PERF_SEL_SC2_PA3_DATA_FIFO_RD', - 301: 'PH_PERF_SEL_SC2_PA3_DATA_FIFO_WE', - 302: 'PH_PERF_SEL_SC2_PA3_FIFO_EMPTY', - 303: 'PH_PERF_SEL_SC2_PA3_FIFO_FULL', - 304: 'PH_PERF_SEL_SC2_PA3_NULL_WE', - 305: 'PH_PERF_SEL_SC2_PA3_EVENT_WE', - 306: 'PH_PERF_SEL_SC2_PA3_FPOV_WE', - 307: 'PH_PERF_SEL_SC2_PA3_FPOP_WE', - 308: 'PH_PERF_SEL_SC2_PA3_EOP_WE', - 309: 'PH_PERF_SEL_SC2_PA3_DATA_FIFO_EOP_RD', - 310: 'PH_PERF_SEL_SC2_PA3_EOPG_WE', - 311: 'PH_PERF_SEL_SC2_PA3_DEALLOC_WE', - 312: 'PH_PERF_SEL_SC2_PA4_DATA_FIFO_RD', - 313: 'PH_PERF_SEL_SC2_PA4_DATA_FIFO_WE', - 314: 'PH_PERF_SEL_SC2_PA4_FIFO_EMPTY', - 315: 'PH_PERF_SEL_SC2_PA4_FIFO_FULL', - 316: 'PH_PERF_SEL_SC2_PA4_NULL_WE', - 317: 'PH_PERF_SEL_SC2_PA4_EVENT_WE', - 318: 'PH_PERF_SEL_SC2_PA4_FPOV_WE', - 319: 'PH_PERF_SEL_SC2_PA4_FPOP_WE', - 320: 'PH_PERF_SEL_SC2_PA4_EOP_WE', - 321: 'PH_PERF_SEL_SC2_PA4_DATA_FIFO_EOP_RD', - 322: 'PH_PERF_SEL_SC2_PA4_EOPG_WE', - 323: 'PH_PERF_SEL_SC2_PA4_DEALLOC_WE', - 324: 'PH_PERF_SEL_SC2_PA5_DATA_FIFO_RD', - 325: 'PH_PERF_SEL_SC2_PA5_DATA_FIFO_WE', - 326: 'PH_PERF_SEL_SC2_PA5_FIFO_EMPTY', - 327: 'PH_PERF_SEL_SC2_PA5_FIFO_FULL', - 328: 'PH_PERF_SEL_SC2_PA5_NULL_WE', - 329: 'PH_PERF_SEL_SC2_PA5_EVENT_WE', - 330: 'PH_PERF_SEL_SC2_PA5_FPOV_WE', - 331: 'PH_PERF_SEL_SC2_PA5_FPOP_WE', - 332: 'PH_PERF_SEL_SC2_PA5_EOP_WE', - 333: 'PH_PERF_SEL_SC2_PA5_DATA_FIFO_EOP_RD', - 334: 'PH_PERF_SEL_SC2_PA5_EOPG_WE', - 335: 'PH_PERF_SEL_SC2_PA5_DEALLOC_WE', - 336: 'PH_PERF_SEL_SC2_PA6_DATA_FIFO_RD', - 337: 'PH_PERF_SEL_SC2_PA6_DATA_FIFO_WE', - 338: 'PH_PERF_SEL_SC2_PA6_FIFO_EMPTY', - 339: 'PH_PERF_SEL_SC2_PA6_FIFO_FULL', - 340: 'PH_PERF_SEL_SC2_PA6_NULL_WE', - 341: 'PH_PERF_SEL_SC2_PA6_EVENT_WE', - 342: 'PH_PERF_SEL_SC2_PA6_FPOV_WE', - 343: 'PH_PERF_SEL_SC2_PA6_FPOP_WE', - 344: 'PH_PERF_SEL_SC2_PA6_EOP_WE', - 345: 'PH_PERF_SEL_SC2_PA6_DATA_FIFO_EOP_RD', - 346: 'PH_PERF_SEL_SC2_PA6_EOPG_WE', - 347: 'PH_PERF_SEL_SC2_PA6_DEALLOC_WE', - 348: 'PH_PERF_SEL_SC2_PA7_DATA_FIFO_RD', - 349: 'PH_PERF_SEL_SC2_PA7_DATA_FIFO_WE', - 350: 'PH_PERF_SEL_SC2_PA7_FIFO_EMPTY', - 351: 'PH_PERF_SEL_SC2_PA7_FIFO_FULL', - 352: 'PH_PERF_SEL_SC2_PA7_NULL_WE', - 353: 'PH_PERF_SEL_SC2_PA7_EVENT_WE', - 354: 'PH_PERF_SEL_SC2_PA7_FPOV_WE', - 355: 'PH_PERF_SEL_SC2_PA7_FPOP_WE', - 356: 'PH_PERF_SEL_SC2_PA7_EOP_WE', - 357: 'PH_PERF_SEL_SC2_PA7_DATA_FIFO_EOP_RD', - 358: 'PH_PERF_SEL_SC2_PA7_EOPG_WE', - 359: 'PH_PERF_SEL_SC2_PA7_DEALLOC_WE', - 360: 'PH_PERF_SEL_SC3_SRPS_WINDOW_VALID', - 361: 'PH_PERF_SEL_SC3_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 362: 'PH_PERF_SEL_SC3_ARB_XFC_ONLY_PRIM_CYCLES', - 363: 'PH_PERF_SEL_SC3_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 364: 'PH_PERF_SEL_SC3_ARB_STALLED_FROM_BELOW', - 365: 'PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE', - 366: 'PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 367: 'PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 368: 'PH_PERF_SEL_SC3_ARB_BUSY', - 369: 'PH_PERF_SEL_SC3_ARB_PA_BUSY_SOP', - 370: 'PH_PERF_SEL_SC3_ARB_EOP_POP_SYNC_POP', - 371: 'PH_PERF_SEL_SC3_ARB_EVENT_SYNC_POP', - 372: 'PH_PERF_SEL_SC3_PS_ENG_MULTICYCLE_BUBBLE', - 373: 'PH_PERF_SEL_SC3_EOP_SYNC_WINDOW', - 374: 'PH_PERF_SEL_SC3_BUSY_PROCESSING_MULTICYCLE_PRIM', - 375: 'PH_PERF_SEL_SC3_BUSY_CNT_NOT_ZERO', - 376: 'PH_PERF_SEL_SC3_SEND', - 377: 'PH_PERF_SEL_SC3_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 378: 'PH_PERF_SEL_SC3_CREDIT_AT_MAX', - 379: 'PH_PERF_SEL_SC3_CREDIT_AT_MAX_NO_PENDING_SEND', - 380: 'PH_PERF_SEL_SC3_GFX_PIPE0_TO_1_TRANSITION', - 381: 'PH_PERF_SEL_SC3_GFX_PIPE1_TO_0_TRANSITION', - 382: 'PH_PERF_SEL_SC3_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 383: 'PH_PERF_SEL_SC3_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 384: 'PH_PERF_SEL_SC3_PA0_DATA_FIFO_RD', - 385: 'PH_PERF_SEL_SC3_PA0_DATA_FIFO_WE', - 386: 'PH_PERF_SEL_SC3_PA0_FIFO_EMPTY', - 387: 'PH_PERF_SEL_SC3_PA0_FIFO_FULL', - 388: 'PH_PERF_SEL_SC3_PA0_NULL_WE', - 389: 'PH_PERF_SEL_SC3_PA0_EVENT_WE', - 390: 'PH_PERF_SEL_SC3_PA0_FPOV_WE', - 391: 'PH_PERF_SEL_SC3_PA0_FPOP_WE', - 392: 'PH_PERF_SEL_SC3_PA0_EOP_WE', - 393: 'PH_PERF_SEL_SC3_PA0_DATA_FIFO_EOP_RD', - 394: 'PH_PERF_SEL_SC3_PA0_EOPG_WE', - 395: 'PH_PERF_SEL_SC3_PA0_DEALLOC_WE', - 396: 'PH_PERF_SEL_SC3_PA1_DATA_FIFO_RD', - 397: 'PH_PERF_SEL_SC3_PA1_DATA_FIFO_WE', - 398: 'PH_PERF_SEL_SC3_PA1_FIFO_EMPTY', - 399: 'PH_PERF_SEL_SC3_PA1_FIFO_FULL', - 400: 'PH_PERF_SEL_SC3_PA1_NULL_WE', - 401: 'PH_PERF_SEL_SC3_PA1_EVENT_WE', - 402: 'PH_PERF_SEL_SC3_PA1_FPOV_WE', - 403: 'PH_PERF_SEL_SC3_PA1_FPOP_WE', - 404: 'PH_PERF_SEL_SC3_PA1_EOP_WE', - 405: 'PH_PERF_SEL_SC3_PA1_DATA_FIFO_EOP_RD', - 406: 'PH_PERF_SEL_SC3_PA1_EOPG_WE', - 407: 'PH_PERF_SEL_SC3_PA1_DEALLOC_WE', - 408: 'PH_PERF_SEL_SC3_PA2_DATA_FIFO_RD', - 409: 'PH_PERF_SEL_SC3_PA2_DATA_FIFO_WE', - 410: 'PH_PERF_SEL_SC3_PA2_FIFO_EMPTY', - 411: 'PH_PERF_SEL_SC3_PA2_FIFO_FULL', - 412: 'PH_PERF_SEL_SC3_PA2_NULL_WE', - 413: 'PH_PERF_SEL_SC3_PA2_EVENT_WE', - 414: 'PH_PERF_SEL_SC3_PA2_FPOV_WE', - 415: 'PH_PERF_SEL_SC3_PA2_FPOP_WE', - 416: 'PH_PERF_SEL_SC3_PA2_EOP_WE', - 417: 'PH_PERF_SEL_SC3_PA2_DATA_FIFO_EOP_RD', - 418: 'PH_PERF_SEL_SC3_PA2_EOPG_WE', - 419: 'PH_PERF_SEL_SC3_PA2_DEALLOC_WE', - 420: 'PH_PERF_SEL_SC3_PA3_DATA_FIFO_RD', - 421: 'PH_PERF_SEL_SC3_PA3_DATA_FIFO_WE', - 422: 'PH_PERF_SEL_SC3_PA3_FIFO_EMPTY', - 423: 'PH_PERF_SEL_SC3_PA3_FIFO_FULL', - 424: 'PH_PERF_SEL_SC3_PA3_NULL_WE', - 425: 'PH_PERF_SEL_SC3_PA3_EVENT_WE', - 426: 'PH_PERF_SEL_SC3_PA3_FPOV_WE', - 427: 'PH_PERF_SEL_SC3_PA3_FPOP_WE', - 428: 'PH_PERF_SEL_SC3_PA3_EOP_WE', - 429: 'PH_PERF_SEL_SC3_PA3_DATA_FIFO_EOP_RD', - 430: 'PH_PERF_SEL_SC3_PA3_EOPG_WE', - 431: 'PH_PERF_SEL_SC3_PA3_DEALLOC_WE', - 432: 'PH_PERF_SEL_SC3_PA4_DATA_FIFO_RD', - 433: 'PH_PERF_SEL_SC3_PA4_DATA_FIFO_WE', - 434: 'PH_PERF_SEL_SC3_PA4_FIFO_EMPTY', - 435: 'PH_PERF_SEL_SC3_PA4_FIFO_FULL', - 436: 'PH_PERF_SEL_SC3_PA4_NULL_WE', - 437: 'PH_PERF_SEL_SC3_PA4_EVENT_WE', - 438: 'PH_PERF_SEL_SC3_PA4_FPOV_WE', - 439: 'PH_PERF_SEL_SC3_PA4_FPOP_WE', - 440: 'PH_PERF_SEL_SC3_PA4_EOP_WE', - 441: 'PH_PERF_SEL_SC3_PA4_DATA_FIFO_EOP_RD', - 442: 'PH_PERF_SEL_SC3_PA4_EOPG_WE', - 443: 'PH_PERF_SEL_SC3_PA4_DEALLOC_WE', - 444: 'PH_PERF_SEL_SC3_PA5_DATA_FIFO_RD', - 445: 'PH_PERF_SEL_SC3_PA5_DATA_FIFO_WE', - 446: 'PH_PERF_SEL_SC3_PA5_FIFO_EMPTY', - 447: 'PH_PERF_SEL_SC3_PA5_FIFO_FULL', - 448: 'PH_PERF_SEL_SC3_PA5_NULL_WE', - 449: 'PH_PERF_SEL_SC3_PA5_EVENT_WE', - 450: 'PH_PERF_SEL_SC3_PA5_FPOV_WE', - 451: 'PH_PERF_SEL_SC3_PA5_FPOP_WE', - 452: 'PH_PERF_SEL_SC3_PA5_EOP_WE', - 453: 'PH_PERF_SEL_SC3_PA5_DATA_FIFO_EOP_RD', - 454: 'PH_PERF_SEL_SC3_PA5_EOPG_WE', - 455: 'PH_PERF_SEL_SC3_PA5_DEALLOC_WE', - 456: 'PH_PERF_SEL_SC3_PA6_DATA_FIFO_RD', - 457: 'PH_PERF_SEL_SC3_PA6_DATA_FIFO_WE', - 458: 'PH_PERF_SEL_SC3_PA6_FIFO_EMPTY', - 459: 'PH_PERF_SEL_SC3_PA6_FIFO_FULL', - 460: 'PH_PERF_SEL_SC3_PA6_NULL_WE', - 461: 'PH_PERF_SEL_SC3_PA6_EVENT_WE', - 462: 'PH_PERF_SEL_SC3_PA6_FPOV_WE', - 463: 'PH_PERF_SEL_SC3_PA6_FPOP_WE', - 464: 'PH_PERF_SEL_SC3_PA6_EOP_WE', - 465: 'PH_PERF_SEL_SC3_PA6_DATA_FIFO_EOP_RD', - 466: 'PH_PERF_SEL_SC3_PA6_EOPG_WE', - 467: 'PH_PERF_SEL_SC3_PA6_DEALLOC_WE', - 468: 'PH_PERF_SEL_SC3_PA7_DATA_FIFO_RD', - 469: 'PH_PERF_SEL_SC3_PA7_DATA_FIFO_WE', - 470: 'PH_PERF_SEL_SC3_PA7_FIFO_EMPTY', - 471: 'PH_PERF_SEL_SC3_PA7_FIFO_FULL', - 472: 'PH_PERF_SEL_SC3_PA7_NULL_WE', - 473: 'PH_PERF_SEL_SC3_PA7_EVENT_WE', - 474: 'PH_PERF_SEL_SC3_PA7_FPOV_WE', - 475: 'PH_PERF_SEL_SC3_PA7_FPOP_WE', - 476: 'PH_PERF_SEL_SC3_PA7_EOP_WE', - 477: 'PH_PERF_SEL_SC3_PA7_DATA_FIFO_EOP_RD', - 478: 'PH_PERF_SEL_SC3_PA7_EOPG_WE', - 479: 'PH_PERF_SEL_SC3_PA7_DEALLOC_WE', - 480: 'PH_PERF_SEL_SC4_SRPS_WINDOW_VALID', - 481: 'PH_PERF_SEL_SC4_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 482: 'PH_PERF_SEL_SC4_ARB_XFC_ONLY_PRIM_CYCLES', - 483: 'PH_PERF_SEL_SC4_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 484: 'PH_PERF_SEL_SC4_ARB_STALLED_FROM_BELOW', - 485: 'PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE', - 486: 'PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 487: 'PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 488: 'PH_PERF_SEL_SC4_ARB_BUSY', - 489: 'PH_PERF_SEL_SC4_ARB_PA_BUSY_SOP', - 490: 'PH_PERF_SEL_SC4_ARB_EOP_POP_SYNC_POP', - 491: 'PH_PERF_SEL_SC4_ARB_EVENT_SYNC_POP', - 492: 'PH_PERF_SEL_SC4_PS_ENG_MULTICYCLE_BUBBLE', - 493: 'PH_PERF_SEL_SC4_EOP_SYNC_WINDOW', - 494: 'PH_PERF_SEL_SC4_BUSY_PROCESSING_MULTICYCLE_PRIM', - 495: 'PH_PERF_SEL_SC4_BUSY_CNT_NOT_ZERO', - 496: 'PH_PERF_SEL_SC4_SEND', - 497: 'PH_PERF_SEL_SC4_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 498: 'PH_PERF_SEL_SC4_CREDIT_AT_MAX', - 499: 'PH_PERF_SEL_SC4_CREDIT_AT_MAX_NO_PENDING_SEND', - 500: 'PH_PERF_SEL_SC4_GFX_PIPE0_TO_1_TRANSITION', - 501: 'PH_PERF_SEL_SC4_GFX_PIPE1_TO_0_TRANSITION', - 502: 'PH_PERF_SEL_SC4_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 503: 'PH_PERF_SEL_SC4_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 504: 'PH_PERF_SEL_SC4_PA0_DATA_FIFO_RD', - 505: 'PH_PERF_SEL_SC4_PA0_DATA_FIFO_WE', - 506: 'PH_PERF_SEL_SC4_PA0_FIFO_EMPTY', - 507: 'PH_PERF_SEL_SC4_PA0_FIFO_FULL', - 508: 'PH_PERF_SEL_SC4_PA0_NULL_WE', - 509: 'PH_PERF_SEL_SC4_PA0_EVENT_WE', - 510: 'PH_PERF_SEL_SC4_PA0_FPOV_WE', - 511: 'PH_PERF_SEL_SC4_PA0_FPOP_WE', - 512: 'PH_PERF_SEL_SC4_PA0_EOP_WE', - 513: 'PH_PERF_SEL_SC4_PA0_DATA_FIFO_EOP_RD', - 514: 'PH_PERF_SEL_SC4_PA0_EOPG_WE', - 515: 'PH_PERF_SEL_SC4_PA0_DEALLOC_WE', - 516: 'PH_PERF_SEL_SC4_PA1_DATA_FIFO_RD', - 517: 'PH_PERF_SEL_SC4_PA1_DATA_FIFO_WE', - 518: 'PH_PERF_SEL_SC4_PA1_FIFO_EMPTY', - 519: 'PH_PERF_SEL_SC4_PA1_FIFO_FULL', - 520: 'PH_PERF_SEL_SC4_PA1_NULL_WE', - 521: 'PH_PERF_SEL_SC4_PA1_EVENT_WE', - 522: 'PH_PERF_SEL_SC4_PA1_FPOV_WE', - 523: 'PH_PERF_SEL_SC4_PA1_FPOP_WE', - 524: 'PH_PERF_SEL_SC4_PA1_EOP_WE', - 525: 'PH_PERF_SEL_SC4_PA1_DATA_FIFO_EOP_RD', - 526: 'PH_PERF_SEL_SC4_PA1_EOPG_WE', - 527: 'PH_PERF_SEL_SC4_PA1_DEALLOC_WE', - 528: 'PH_PERF_SEL_SC4_PA2_DATA_FIFO_RD', - 529: 'PH_PERF_SEL_SC4_PA2_DATA_FIFO_WE', - 530: 'PH_PERF_SEL_SC4_PA2_FIFO_EMPTY', - 531: 'PH_PERF_SEL_SC4_PA2_FIFO_FULL', - 532: 'PH_PERF_SEL_SC4_PA2_NULL_WE', - 533: 'PH_PERF_SEL_SC4_PA2_EVENT_WE', - 534: 'PH_PERF_SEL_SC4_PA2_FPOV_WE', - 535: 'PH_PERF_SEL_SC4_PA2_FPOP_WE', - 536: 'PH_PERF_SEL_SC4_PA2_EOP_WE', - 537: 'PH_PERF_SEL_SC4_PA2_DATA_FIFO_EOP_RD', - 538: 'PH_PERF_SEL_SC4_PA2_EOPG_WE', - 539: 'PH_PERF_SEL_SC4_PA2_DEALLOC_WE', - 540: 'PH_PERF_SEL_SC4_PA3_DATA_FIFO_RD', - 541: 'PH_PERF_SEL_SC4_PA3_DATA_FIFO_WE', - 542: 'PH_PERF_SEL_SC4_PA3_FIFO_EMPTY', - 543: 'PH_PERF_SEL_SC4_PA3_FIFO_FULL', - 544: 'PH_PERF_SEL_SC4_PA3_NULL_WE', - 545: 'PH_PERF_SEL_SC4_PA3_EVENT_WE', - 546: 'PH_PERF_SEL_SC4_PA3_FPOV_WE', - 547: 'PH_PERF_SEL_SC4_PA3_FPOP_WE', - 548: 'PH_PERF_SEL_SC4_PA3_EOP_WE', - 549: 'PH_PERF_SEL_SC4_PA3_DATA_FIFO_EOP_RD', - 550: 'PH_PERF_SEL_SC4_PA3_EOPG_WE', - 551: 'PH_PERF_SEL_SC4_PA3_DEALLOC_WE', - 552: 'PH_PERF_SEL_SC4_PA4_DATA_FIFO_RD', - 553: 'PH_PERF_SEL_SC4_PA4_DATA_FIFO_WE', - 554: 'PH_PERF_SEL_SC4_PA4_FIFO_EMPTY', - 555: 'PH_PERF_SEL_SC4_PA4_FIFO_FULL', - 556: 'PH_PERF_SEL_SC4_PA4_NULL_WE', - 557: 'PH_PERF_SEL_SC4_PA4_EVENT_WE', - 558: 'PH_PERF_SEL_SC4_PA4_FPOV_WE', - 559: 'PH_PERF_SEL_SC4_PA4_FPOP_WE', - 560: 'PH_PERF_SEL_SC4_PA4_EOP_WE', - 561: 'PH_PERF_SEL_SC4_PA4_DATA_FIFO_EOP_RD', - 562: 'PH_PERF_SEL_SC4_PA4_EOPG_WE', - 563: 'PH_PERF_SEL_SC4_PA4_DEALLOC_WE', - 564: 'PH_PERF_SEL_SC4_PA5_DATA_FIFO_RD', - 565: 'PH_PERF_SEL_SC4_PA5_DATA_FIFO_WE', - 566: 'PH_PERF_SEL_SC4_PA5_FIFO_EMPTY', - 567: 'PH_PERF_SEL_SC4_PA5_FIFO_FULL', - 568: 'PH_PERF_SEL_SC4_PA5_NULL_WE', - 569: 'PH_PERF_SEL_SC4_PA5_EVENT_WE', - 570: 'PH_PERF_SEL_SC4_PA5_FPOV_WE', - 571: 'PH_PERF_SEL_SC4_PA5_FPOP_WE', - 572: 'PH_PERF_SEL_SC4_PA5_EOP_WE', - 573: 'PH_PERF_SEL_SC4_PA5_DATA_FIFO_EOP_RD', - 574: 'PH_PERF_SEL_SC4_PA5_EOPG_WE', - 575: 'PH_PERF_SEL_SC4_PA5_DEALLOC_WE', - 576: 'PH_PERF_SEL_SC4_PA6_DATA_FIFO_RD', - 577: 'PH_PERF_SEL_SC4_PA6_DATA_FIFO_WE', - 578: 'PH_PERF_SEL_SC4_PA6_FIFO_EMPTY', - 579: 'PH_PERF_SEL_SC4_PA6_FIFO_FULL', - 580: 'PH_PERF_SEL_SC4_PA6_NULL_WE', - 581: 'PH_PERF_SEL_SC4_PA6_EVENT_WE', - 582: 'PH_PERF_SEL_SC4_PA6_FPOV_WE', - 583: 'PH_PERF_SEL_SC4_PA6_FPOP_WE', - 584: 'PH_PERF_SEL_SC4_PA6_EOP_WE', - 585: 'PH_PERF_SEL_SC4_PA6_DATA_FIFO_EOP_RD', - 586: 'PH_PERF_SEL_SC4_PA6_EOPG_WE', - 587: 'PH_PERF_SEL_SC4_PA6_DEALLOC_WE', - 588: 'PH_PERF_SEL_SC4_PA7_DATA_FIFO_RD', - 589: 'PH_PERF_SEL_SC4_PA7_DATA_FIFO_WE', - 590: 'PH_PERF_SEL_SC4_PA7_FIFO_EMPTY', - 591: 'PH_PERF_SEL_SC4_PA7_FIFO_FULL', - 592: 'PH_PERF_SEL_SC4_PA7_NULL_WE', - 593: 'PH_PERF_SEL_SC4_PA7_EVENT_WE', - 594: 'PH_PERF_SEL_SC4_PA7_FPOV_WE', - 595: 'PH_PERF_SEL_SC4_PA7_FPOP_WE', - 596: 'PH_PERF_SEL_SC4_PA7_EOP_WE', - 597: 'PH_PERF_SEL_SC4_PA7_DATA_FIFO_EOP_RD', - 598: 'PH_PERF_SEL_SC4_PA7_EOPG_WE', - 599: 'PH_PERF_SEL_SC4_PA7_DEALLOC_WE', - 600: 'PH_PERF_SEL_SC5_SRPS_WINDOW_VALID', - 601: 'PH_PERF_SEL_SC5_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 602: 'PH_PERF_SEL_SC5_ARB_XFC_ONLY_PRIM_CYCLES', - 603: 'PH_PERF_SEL_SC5_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 604: 'PH_PERF_SEL_SC5_ARB_STALLED_FROM_BELOW', - 605: 'PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE', - 606: 'PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 607: 'PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 608: 'PH_PERF_SEL_SC5_ARB_BUSY', - 609: 'PH_PERF_SEL_SC5_ARB_PA_BUSY_SOP', - 610: 'PH_PERF_SEL_SC5_ARB_EOP_POP_SYNC_POP', - 611: 'PH_PERF_SEL_SC5_ARB_EVENT_SYNC_POP', - 612: 'PH_PERF_SEL_SC5_PS_ENG_MULTICYCLE_BUBBLE', - 613: 'PH_PERF_SEL_SC5_EOP_SYNC_WINDOW', - 614: 'PH_PERF_SEL_SC5_BUSY_PROCESSING_MULTICYCLE_PRIM', - 615: 'PH_PERF_SEL_SC5_BUSY_CNT_NOT_ZERO', - 616: 'PH_PERF_SEL_SC5_SEND', - 617: 'PH_PERF_SEL_SC5_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 618: 'PH_PERF_SEL_SC5_CREDIT_AT_MAX', - 619: 'PH_PERF_SEL_SC5_CREDIT_AT_MAX_NO_PENDING_SEND', - 620: 'PH_PERF_SEL_SC5_GFX_PIPE0_TO_1_TRANSITION', - 621: 'PH_PERF_SEL_SC5_GFX_PIPE1_TO_0_TRANSITION', - 622: 'PH_PERF_SEL_SC5_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 623: 'PH_PERF_SEL_SC5_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 624: 'PH_PERF_SEL_SC5_PA0_DATA_FIFO_RD', - 625: 'PH_PERF_SEL_SC5_PA0_DATA_FIFO_WE', - 626: 'PH_PERF_SEL_SC5_PA0_FIFO_EMPTY', - 627: 'PH_PERF_SEL_SC5_PA0_FIFO_FULL', - 628: 'PH_PERF_SEL_SC5_PA0_NULL_WE', - 629: 'PH_PERF_SEL_SC5_PA0_EVENT_WE', - 630: 'PH_PERF_SEL_SC5_PA0_FPOV_WE', - 631: 'PH_PERF_SEL_SC5_PA0_FPOP_WE', - 632: 'PH_PERF_SEL_SC5_PA0_EOP_WE', - 633: 'PH_PERF_SEL_SC5_PA0_DATA_FIFO_EOP_RD', - 634: 'PH_PERF_SEL_SC5_PA0_EOPG_WE', - 635: 'PH_PERF_SEL_SC5_PA0_DEALLOC_WE', - 636: 'PH_PERF_SEL_SC5_PA1_DATA_FIFO_RD', - 637: 'PH_PERF_SEL_SC5_PA1_DATA_FIFO_WE', - 638: 'PH_PERF_SEL_SC5_PA1_FIFO_EMPTY', - 639: 'PH_PERF_SEL_SC5_PA1_FIFO_FULL', - 640: 'PH_PERF_SEL_SC5_PA1_NULL_WE', - 641: 'PH_PERF_SEL_SC5_PA1_EVENT_WE', - 642: 'PH_PERF_SEL_SC5_PA1_FPOV_WE', - 643: 'PH_PERF_SEL_SC5_PA1_FPOP_WE', - 644: 'PH_PERF_SEL_SC5_PA1_EOP_WE', - 645: 'PH_PERF_SEL_SC5_PA1_DATA_FIFO_EOP_RD', - 646: 'PH_PERF_SEL_SC5_PA1_EOPG_WE', - 647: 'PH_PERF_SEL_SC5_PA1_DEALLOC_WE', - 648: 'PH_PERF_SEL_SC5_PA2_DATA_FIFO_RD', - 649: 'PH_PERF_SEL_SC5_PA2_DATA_FIFO_WE', - 650: 'PH_PERF_SEL_SC5_PA2_FIFO_EMPTY', - 651: 'PH_PERF_SEL_SC5_PA2_FIFO_FULL', - 652: 'PH_PERF_SEL_SC5_PA2_NULL_WE', - 653: 'PH_PERF_SEL_SC5_PA2_EVENT_WE', - 654: 'PH_PERF_SEL_SC5_PA2_FPOV_WE', - 655: 'PH_PERF_SEL_SC5_PA2_FPOP_WE', - 656: 'PH_PERF_SEL_SC5_PA2_EOP_WE', - 657: 'PH_PERF_SEL_SC5_PA2_DATA_FIFO_EOP_RD', - 658: 'PH_PERF_SEL_SC5_PA2_EOPG_WE', - 659: 'PH_PERF_SEL_SC5_PA2_DEALLOC_WE', - 660: 'PH_PERF_SEL_SC5_PA3_DATA_FIFO_RD', - 661: 'PH_PERF_SEL_SC5_PA3_DATA_FIFO_WE', - 662: 'PH_PERF_SEL_SC5_PA3_FIFO_EMPTY', - 663: 'PH_PERF_SEL_SC5_PA3_FIFO_FULL', - 664: 'PH_PERF_SEL_SC5_PA3_NULL_WE', - 665: 'PH_PERF_SEL_SC5_PA3_EVENT_WE', - 666: 'PH_PERF_SEL_SC5_PA3_FPOV_WE', - 667: 'PH_PERF_SEL_SC5_PA3_FPOP_WE', - 668: 'PH_PERF_SEL_SC5_PA3_EOP_WE', - 669: 'PH_PERF_SEL_SC5_PA3_DATA_FIFO_EOP_RD', - 670: 'PH_PERF_SEL_SC5_PA3_EOPG_WE', - 671: 'PH_PERF_SEL_SC5_PA3_DEALLOC_WE', - 672: 'PH_PERF_SEL_SC5_PA4_DATA_FIFO_RD', - 673: 'PH_PERF_SEL_SC5_PA4_DATA_FIFO_WE', - 674: 'PH_PERF_SEL_SC5_PA4_FIFO_EMPTY', - 675: 'PH_PERF_SEL_SC5_PA4_FIFO_FULL', - 676: 'PH_PERF_SEL_SC5_PA4_NULL_WE', - 677: 'PH_PERF_SEL_SC5_PA4_EVENT_WE', - 678: 'PH_PERF_SEL_SC5_PA4_FPOV_WE', - 679: 'PH_PERF_SEL_SC5_PA4_FPOP_WE', - 680: 'PH_PERF_SEL_SC5_PA4_EOP_WE', - 681: 'PH_PERF_SEL_SC5_PA4_DATA_FIFO_EOP_RD', - 682: 'PH_PERF_SEL_SC5_PA4_EOPG_WE', - 683: 'PH_PERF_SEL_SC5_PA4_DEALLOC_WE', - 684: 'PH_PERF_SEL_SC5_PA5_DATA_FIFO_RD', - 685: 'PH_PERF_SEL_SC5_PA5_DATA_FIFO_WE', - 686: 'PH_PERF_SEL_SC5_PA5_FIFO_EMPTY', - 687: 'PH_PERF_SEL_SC5_PA5_FIFO_FULL', - 688: 'PH_PERF_SEL_SC5_PA5_NULL_WE', - 689: 'PH_PERF_SEL_SC5_PA5_EVENT_WE', - 690: 'PH_PERF_SEL_SC5_PA5_FPOV_WE', - 691: 'PH_PERF_SEL_SC5_PA5_FPOP_WE', - 692: 'PH_PERF_SEL_SC5_PA5_EOP_WE', - 693: 'PH_PERF_SEL_SC5_PA5_DATA_FIFO_EOP_RD', - 694: 'PH_PERF_SEL_SC5_PA5_EOPG_WE', - 695: 'PH_PERF_SEL_SC5_PA5_DEALLOC_WE', - 696: 'PH_PERF_SEL_SC5_PA6_DATA_FIFO_RD', - 697: 'PH_PERF_SEL_SC5_PA6_DATA_FIFO_WE', - 698: 'PH_PERF_SEL_SC5_PA6_FIFO_EMPTY', - 699: 'PH_PERF_SEL_SC5_PA6_FIFO_FULL', - 700: 'PH_PERF_SEL_SC5_PA6_NULL_WE', - 701: 'PH_PERF_SEL_SC5_PA6_EVENT_WE', - 702: 'PH_PERF_SEL_SC5_PA6_FPOV_WE', - 703: 'PH_PERF_SEL_SC5_PA6_FPOP_WE', - 704: 'PH_PERF_SEL_SC5_PA6_EOP_WE', - 705: 'PH_PERF_SEL_SC5_PA6_DATA_FIFO_EOP_RD', - 706: 'PH_PERF_SEL_SC5_PA6_EOPG_WE', - 707: 'PH_PERF_SEL_SC5_PA6_DEALLOC_WE', - 708: 'PH_PERF_SEL_SC5_PA7_DATA_FIFO_RD', - 709: 'PH_PERF_SEL_SC5_PA7_DATA_FIFO_WE', - 710: 'PH_PERF_SEL_SC5_PA7_FIFO_EMPTY', - 711: 'PH_PERF_SEL_SC5_PA7_FIFO_FULL', - 712: 'PH_PERF_SEL_SC5_PA7_NULL_WE', - 713: 'PH_PERF_SEL_SC5_PA7_EVENT_WE', - 714: 'PH_PERF_SEL_SC5_PA7_FPOV_WE', - 715: 'PH_PERF_SEL_SC5_PA7_FPOP_WE', - 716: 'PH_PERF_SEL_SC5_PA7_EOP_WE', - 717: 'PH_PERF_SEL_SC5_PA7_DATA_FIFO_EOP_RD', - 718: 'PH_PERF_SEL_SC5_PA7_EOPG_WE', - 719: 'PH_PERF_SEL_SC5_PA7_DEALLOC_WE', - 720: 'PH_PERF_SEL_SC6_SRPS_WINDOW_VALID', - 721: 'PH_PERF_SEL_SC6_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 722: 'PH_PERF_SEL_SC6_ARB_XFC_ONLY_PRIM_CYCLES', - 723: 'PH_PERF_SEL_SC6_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 724: 'PH_PERF_SEL_SC6_ARB_STALLED_FROM_BELOW', - 725: 'PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE', - 726: 'PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 727: 'PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 728: 'PH_PERF_SEL_SC6_ARB_BUSY', - 729: 'PH_PERF_SEL_SC6_ARB_PA_BUSY_SOP', - 730: 'PH_PERF_SEL_SC6_ARB_EOP_POP_SYNC_POP', - 731: 'PH_PERF_SEL_SC6_ARB_EVENT_SYNC_POP', - 732: 'PH_PERF_SEL_SC6_PS_ENG_MULTICYCLE_BUBBLE', - 733: 'PH_PERF_SEL_SC6_EOP_SYNC_WINDOW', - 734: 'PH_PERF_SEL_SC6_BUSY_PROCESSING_MULTICYCLE_PRIM', - 735: 'PH_PERF_SEL_SC6_BUSY_CNT_NOT_ZERO', - 736: 'PH_PERF_SEL_SC6_SEND', - 737: 'PH_PERF_SEL_SC6_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 738: 'PH_PERF_SEL_SC6_CREDIT_AT_MAX', - 739: 'PH_PERF_SEL_SC6_CREDIT_AT_MAX_NO_PENDING_SEND', - 740: 'PH_PERF_SEL_SC6_GFX_PIPE0_TO_1_TRANSITION', - 741: 'PH_PERF_SEL_SC6_GFX_PIPE1_TO_0_TRANSITION', - 742: 'PH_PERF_SEL_SC6_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 743: 'PH_PERF_SEL_SC6_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 744: 'PH_PERF_SEL_SC6_PA0_DATA_FIFO_RD', - 745: 'PH_PERF_SEL_SC6_PA0_DATA_FIFO_WE', - 746: 'PH_PERF_SEL_SC6_PA0_FIFO_EMPTY', - 747: 'PH_PERF_SEL_SC6_PA0_FIFO_FULL', - 748: 'PH_PERF_SEL_SC6_PA0_NULL_WE', - 749: 'PH_PERF_SEL_SC6_PA0_EVENT_WE', - 750: 'PH_PERF_SEL_SC6_PA0_FPOV_WE', - 751: 'PH_PERF_SEL_SC6_PA0_FPOP_WE', - 752: 'PH_PERF_SEL_SC6_PA0_EOP_WE', - 753: 'PH_PERF_SEL_SC6_PA0_DATA_FIFO_EOP_RD', - 754: 'PH_PERF_SEL_SC6_PA0_EOPG_WE', - 755: 'PH_PERF_SEL_SC6_PA0_DEALLOC_WE', - 756: 'PH_PERF_SEL_SC6_PA1_DATA_FIFO_RD', - 757: 'PH_PERF_SEL_SC6_PA1_DATA_FIFO_WE', - 758: 'PH_PERF_SEL_SC6_PA1_FIFO_EMPTY', - 759: 'PH_PERF_SEL_SC6_PA1_FIFO_FULL', - 760: 'PH_PERF_SEL_SC6_PA1_NULL_WE', - 761: 'PH_PERF_SEL_SC6_PA1_EVENT_WE', - 762: 'PH_PERF_SEL_SC6_PA1_FPOV_WE', - 763: 'PH_PERF_SEL_SC6_PA1_FPOP_WE', - 764: 'PH_PERF_SEL_SC6_PA1_EOP_WE', - 765: 'PH_PERF_SEL_SC6_PA1_DATA_FIFO_EOP_RD', - 766: 'PH_PERF_SEL_SC6_PA1_EOPG_WE', - 767: 'PH_PERF_SEL_SC6_PA1_DEALLOC_WE', - 768: 'PH_PERF_SEL_SC6_PA2_DATA_FIFO_RD', - 769: 'PH_PERF_SEL_SC6_PA2_DATA_FIFO_WE', - 770: 'PH_PERF_SEL_SC6_PA2_FIFO_EMPTY', - 771: 'PH_PERF_SEL_SC6_PA2_FIFO_FULL', - 772: 'PH_PERF_SEL_SC6_PA2_NULL_WE', - 773: 'PH_PERF_SEL_SC6_PA2_EVENT_WE', - 774: 'PH_PERF_SEL_SC6_PA2_FPOV_WE', - 775: 'PH_PERF_SEL_SC6_PA2_FPOP_WE', - 776: 'PH_PERF_SEL_SC6_PA2_EOP_WE', - 777: 'PH_PERF_SEL_SC6_PA2_DATA_FIFO_EOP_RD', - 778: 'PH_PERF_SEL_SC6_PA2_EOPG_WE', - 779: 'PH_PERF_SEL_SC6_PA2_DEALLOC_WE', - 780: 'PH_PERF_SEL_SC6_PA3_DATA_FIFO_RD', - 781: 'PH_PERF_SEL_SC6_PA3_DATA_FIFO_WE', - 782: 'PH_PERF_SEL_SC6_PA3_FIFO_EMPTY', - 783: 'PH_PERF_SEL_SC6_PA3_FIFO_FULL', - 784: 'PH_PERF_SEL_SC6_PA3_NULL_WE', - 785: 'PH_PERF_SEL_SC6_PA3_EVENT_WE', - 786: 'PH_PERF_SEL_SC6_PA3_FPOV_WE', - 787: 'PH_PERF_SEL_SC6_PA3_FPOP_WE', - 788: 'PH_PERF_SEL_SC6_PA3_EOP_WE', - 789: 'PH_PERF_SEL_SC6_PA3_DATA_FIFO_EOP_RD', - 790: 'PH_PERF_SEL_SC6_PA3_EOPG_WE', - 791: 'PH_PERF_SEL_SC6_PA3_DEALLOC_WE', - 792: 'PH_PERF_SEL_SC6_PA4_DATA_FIFO_RD', - 793: 'PH_PERF_SEL_SC6_PA4_DATA_FIFO_WE', - 794: 'PH_PERF_SEL_SC6_PA4_FIFO_EMPTY', - 795: 'PH_PERF_SEL_SC6_PA4_FIFO_FULL', - 796: 'PH_PERF_SEL_SC6_PA4_NULL_WE', - 797: 'PH_PERF_SEL_SC6_PA4_EVENT_WE', - 798: 'PH_PERF_SEL_SC6_PA4_FPOV_WE', - 799: 'PH_PERF_SEL_SC6_PA4_FPOP_WE', - 800: 'PH_PERF_SEL_SC6_PA4_EOP_WE', - 801: 'PH_PERF_SEL_SC6_PA4_DATA_FIFO_EOP_RD', - 802: 'PH_PERF_SEL_SC6_PA4_EOPG_WE', - 803: 'PH_PERF_SEL_SC6_PA4_DEALLOC_WE', - 804: 'PH_PERF_SEL_SC6_PA5_DATA_FIFO_RD', - 805: 'PH_PERF_SEL_SC6_PA5_DATA_FIFO_WE', - 806: 'PH_PERF_SEL_SC6_PA5_FIFO_EMPTY', - 807: 'PH_PERF_SEL_SC6_PA5_FIFO_FULL', - 808: 'PH_PERF_SEL_SC6_PA5_NULL_WE', - 809: 'PH_PERF_SEL_SC6_PA5_EVENT_WE', - 810: 'PH_PERF_SEL_SC6_PA5_FPOV_WE', - 811: 'PH_PERF_SEL_SC6_PA5_FPOP_WE', - 812: 'PH_PERF_SEL_SC6_PA5_EOP_WE', - 813: 'PH_PERF_SEL_SC6_PA5_DATA_FIFO_EOP_RD', - 814: 'PH_PERF_SEL_SC6_PA5_EOPG_WE', - 815: 'PH_PERF_SEL_SC6_PA5_DEALLOC_WE', - 816: 'PH_PERF_SEL_SC6_PA6_DATA_FIFO_RD', - 817: 'PH_PERF_SEL_SC6_PA6_DATA_FIFO_WE', - 818: 'PH_PERF_SEL_SC6_PA6_FIFO_EMPTY', - 819: 'PH_PERF_SEL_SC6_PA6_FIFO_FULL', - 820: 'PH_PERF_SEL_SC6_PA6_NULL_WE', - 821: 'PH_PERF_SEL_SC6_PA6_EVENT_WE', - 822: 'PH_PERF_SEL_SC6_PA6_FPOV_WE', - 823: 'PH_PERF_SEL_SC6_PA6_FPOP_WE', - 824: 'PH_PERF_SEL_SC6_PA6_EOP_WE', - 825: 'PH_PERF_SEL_SC6_PA6_DATA_FIFO_EOP_RD', - 826: 'PH_PERF_SEL_SC6_PA6_EOPG_WE', - 827: 'PH_PERF_SEL_SC6_PA6_DEALLOC_WE', - 828: 'PH_PERF_SEL_SC6_PA7_DATA_FIFO_RD', - 829: 'PH_PERF_SEL_SC6_PA7_DATA_FIFO_WE', - 830: 'PH_PERF_SEL_SC6_PA7_FIFO_EMPTY', - 831: 'PH_PERF_SEL_SC6_PA7_FIFO_FULL', - 832: 'PH_PERF_SEL_SC6_PA7_NULL_WE', - 833: 'PH_PERF_SEL_SC6_PA7_EVENT_WE', - 834: 'PH_PERF_SEL_SC6_PA7_FPOV_WE', - 835: 'PH_PERF_SEL_SC6_PA7_FPOP_WE', - 836: 'PH_PERF_SEL_SC6_PA7_EOP_WE', - 837: 'PH_PERF_SEL_SC6_PA7_DATA_FIFO_EOP_RD', - 838: 'PH_PERF_SEL_SC6_PA7_EOPG_WE', - 839: 'PH_PERF_SEL_SC6_PA7_DEALLOC_WE', - 840: 'PH_PERF_SEL_SC7_SRPS_WINDOW_VALID', - 841: 'PH_PERF_SEL_SC7_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 842: 'PH_PERF_SEL_SC7_ARB_XFC_ONLY_PRIM_CYCLES', - 843: 'PH_PERF_SEL_SC7_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 844: 'PH_PERF_SEL_SC7_ARB_STALLED_FROM_BELOW', - 845: 'PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE', - 846: 'PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 847: 'PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 848: 'PH_PERF_SEL_SC7_ARB_BUSY', - 849: 'PH_PERF_SEL_SC7_ARB_PA_BUSY_SOP', - 850: 'PH_PERF_SEL_SC7_ARB_EOP_POP_SYNC_POP', - 851: 'PH_PERF_SEL_SC7_ARB_EVENT_SYNC_POP', - 852: 'PH_PERF_SEL_SC7_PS_ENG_MULTICYCLE_BUBBLE', - 853: 'PH_PERF_SEL_SC7_EOP_SYNC_WINDOW', - 854: 'PH_PERF_SEL_SC7_BUSY_PROCESSING_MULTICYCLE_PRIM', - 855: 'PH_PERF_SEL_SC7_BUSY_CNT_NOT_ZERO', - 856: 'PH_PERF_SEL_SC7_SEND', - 857: 'PH_PERF_SEL_SC7_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 858: 'PH_PERF_SEL_SC7_CREDIT_AT_MAX', - 859: 'PH_PERF_SEL_SC7_CREDIT_AT_MAX_NO_PENDING_SEND', - 860: 'PH_PERF_SEL_SC7_GFX_PIPE0_TO_1_TRANSITION', - 861: 'PH_PERF_SEL_SC7_GFX_PIPE1_TO_0_TRANSITION', - 862: 'PH_PERF_SEL_SC7_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 863: 'PH_PERF_SEL_SC7_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 864: 'PH_PERF_SEL_SC7_PA0_DATA_FIFO_RD', - 865: 'PH_PERF_SEL_SC7_PA0_DATA_FIFO_WE', - 866: 'PH_PERF_SEL_SC7_PA0_FIFO_EMPTY', - 867: 'PH_PERF_SEL_SC7_PA0_FIFO_FULL', - 868: 'PH_PERF_SEL_SC7_PA0_NULL_WE', - 869: 'PH_PERF_SEL_SC7_PA0_EVENT_WE', - 870: 'PH_PERF_SEL_SC7_PA0_FPOV_WE', - 871: 'PH_PERF_SEL_SC7_PA0_FPOP_WE', - 872: 'PH_PERF_SEL_SC7_PA0_EOP_WE', - 873: 'PH_PERF_SEL_SC7_PA0_DATA_FIFO_EOP_RD', - 874: 'PH_PERF_SEL_SC7_PA0_EOPG_WE', - 875: 'PH_PERF_SEL_SC7_PA0_DEALLOC_WE', - 876: 'PH_PERF_SEL_SC7_PA1_DATA_FIFO_RD', - 877: 'PH_PERF_SEL_SC7_PA1_DATA_FIFO_WE', - 878: 'PH_PERF_SEL_SC7_PA1_FIFO_EMPTY', - 879: 'PH_PERF_SEL_SC7_PA1_FIFO_FULL', - 880: 'PH_PERF_SEL_SC7_PA1_NULL_WE', - 881: 'PH_PERF_SEL_SC7_PA1_EVENT_WE', - 882: 'PH_PERF_SEL_SC7_PA1_FPOV_WE', - 883: 'PH_PERF_SEL_SC7_PA1_FPOP_WE', - 884: 'PH_PERF_SEL_SC7_PA1_EOP_WE', - 885: 'PH_PERF_SEL_SC7_PA1_DATA_FIFO_EOP_RD', - 886: 'PH_PERF_SEL_SC7_PA1_EOPG_WE', - 887: 'PH_PERF_SEL_SC7_PA1_DEALLOC_WE', - 888: 'PH_PERF_SEL_SC7_PA2_DATA_FIFO_RD', - 889: 'PH_PERF_SEL_SC7_PA2_DATA_FIFO_WE', - 890: 'PH_PERF_SEL_SC7_PA2_FIFO_EMPTY', - 891: 'PH_PERF_SEL_SC7_PA2_FIFO_FULL', - 892: 'PH_PERF_SEL_SC7_PA2_NULL_WE', - 893: 'PH_PERF_SEL_SC7_PA2_EVENT_WE', - 894: 'PH_PERF_SEL_SC7_PA2_FPOV_WE', - 895: 'PH_PERF_SEL_SC7_PA2_FPOP_WE', - 896: 'PH_PERF_SEL_SC7_PA2_EOP_WE', - 897: 'PH_PERF_SEL_SC7_PA2_DATA_FIFO_EOP_RD', - 898: 'PH_PERF_SEL_SC7_PA2_EOPG_WE', - 899: 'PH_PERF_SEL_SC7_PA2_DEALLOC_WE', - 900: 'PH_PERF_SEL_SC7_PA3_DATA_FIFO_RD', - 901: 'PH_PERF_SEL_SC7_PA3_DATA_FIFO_WE', - 902: 'PH_PERF_SEL_SC7_PA3_FIFO_EMPTY', - 903: 'PH_PERF_SEL_SC7_PA3_FIFO_FULL', - 904: 'PH_PERF_SEL_SC7_PA3_NULL_WE', - 905: 'PH_PERF_SEL_SC7_PA3_EVENT_WE', - 906: 'PH_PERF_SEL_SC7_PA3_FPOV_WE', - 907: 'PH_PERF_SEL_SC7_PA3_FPOP_WE', - 908: 'PH_PERF_SEL_SC7_PA3_EOP_WE', - 909: 'PH_PERF_SEL_SC7_PA3_DATA_FIFO_EOP_RD', - 910: 'PH_PERF_SEL_SC7_PA3_EOPG_WE', - 911: 'PH_PERF_SEL_SC7_PA3_DEALLOC_WE', - 912: 'PH_PERF_SEL_SC7_PA4_DATA_FIFO_RD', - 913: 'PH_PERF_SEL_SC7_PA4_DATA_FIFO_WE', - 914: 'PH_PERF_SEL_SC7_PA4_FIFO_EMPTY', - 915: 'PH_PERF_SEL_SC7_PA4_FIFO_FULL', - 916: 'PH_PERF_SEL_SC7_PA4_NULL_WE', - 917: 'PH_PERF_SEL_SC7_PA4_EVENT_WE', - 918: 'PH_PERF_SEL_SC7_PA4_FPOV_WE', - 919: 'PH_PERF_SEL_SC7_PA4_FPOP_WE', - 920: 'PH_PERF_SEL_SC7_PA4_EOP_WE', - 921: 'PH_PERF_SEL_SC7_PA4_DATA_FIFO_EOP_RD', - 922: 'PH_PERF_SEL_SC7_PA4_EOPG_WE', - 923: 'PH_PERF_SEL_SC7_PA4_DEALLOC_WE', - 924: 'PH_PERF_SEL_SC7_PA5_DATA_FIFO_RD', - 925: 'PH_PERF_SEL_SC7_PA5_DATA_FIFO_WE', - 926: 'PH_PERF_SEL_SC7_PA5_FIFO_EMPTY', - 927: 'PH_PERF_SEL_SC7_PA5_FIFO_FULL', - 928: 'PH_PERF_SEL_SC7_PA5_NULL_WE', - 929: 'PH_PERF_SEL_SC7_PA5_EVENT_WE', - 930: 'PH_PERF_SEL_SC7_PA5_FPOV_WE', - 931: 'PH_PERF_SEL_SC7_PA5_FPOP_WE', - 932: 'PH_PERF_SEL_SC7_PA5_EOP_WE', - 933: 'PH_PERF_SEL_SC7_PA5_DATA_FIFO_EOP_RD', - 934: 'PH_PERF_SEL_SC7_PA5_EOPG_WE', - 935: 'PH_PERF_SEL_SC7_PA5_DEALLOC_WE', - 936: 'PH_PERF_SEL_SC7_PA6_DATA_FIFO_RD', - 937: 'PH_PERF_SEL_SC7_PA6_DATA_FIFO_WE', - 938: 'PH_PERF_SEL_SC7_PA6_FIFO_EMPTY', - 939: 'PH_PERF_SEL_SC7_PA6_FIFO_FULL', - 940: 'PH_PERF_SEL_SC7_PA6_NULL_WE', - 941: 'PH_PERF_SEL_SC7_PA6_EVENT_WE', - 942: 'PH_PERF_SEL_SC7_PA6_FPOV_WE', - 943: 'PH_PERF_SEL_SC7_PA6_FPOP_WE', - 944: 'PH_PERF_SEL_SC7_PA6_EOP_WE', - 945: 'PH_PERF_SEL_SC7_PA6_DATA_FIFO_EOP_RD', - 946: 'PH_PERF_SEL_SC7_PA6_EOPG_WE', - 947: 'PH_PERF_SEL_SC7_PA6_DEALLOC_WE', - 948: 'PH_PERF_SEL_SC7_PA7_DATA_FIFO_RD', - 949: 'PH_PERF_SEL_SC7_PA7_DATA_FIFO_WE', - 950: 'PH_PERF_SEL_SC7_PA7_FIFO_EMPTY', - 951: 'PH_PERF_SEL_SC7_PA7_FIFO_FULL', - 952: 'PH_PERF_SEL_SC7_PA7_NULL_WE', - 953: 'PH_PERF_SEL_SC7_PA7_EVENT_WE', - 954: 'PH_PERF_SEL_SC7_PA7_FPOV_WE', - 955: 'PH_PERF_SEL_SC7_PA7_FPOP_WE', - 956: 'PH_PERF_SEL_SC7_PA7_EOP_WE', - 957: 'PH_PERF_SEL_SC7_PA7_DATA_FIFO_EOP_RD', - 958: 'PH_PERF_SEL_SC7_PA7_EOPG_WE', - 959: 'PH_PERF_SEL_SC7_PA7_DEALLOC_WE', - 960: 'PH_PERF_SEL_1_SC_ARB_STALLED_FROM_BELOW', - 961: 'PH_PERF_SEL_2_SC_ARB_STALLED_FROM_BELOW', - 962: 'PH_PERF_SEL_3_SC_ARB_STALLED_FROM_BELOW', - 963: 'PH_PERF_SEL_4_SC_ARB_STALLED_FROM_BELOW', - 964: 'PH_PERF_SEL_5_SC_ARB_STALLED_FROM_BELOW', - 965: 'PH_PERF_SEL_6_SC_ARB_STALLED_FROM_BELOW', - 966: 'PH_PERF_SEL_7_SC_ARB_STALLED_FROM_BELOW', - 967: 'PH_PERF_SEL_8_SC_ARB_STALLED_FROM_BELOW', - 968: 'PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE', - 969: 'PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE', - 970: 'PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE', - 971: 'PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE', - 972: 'PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE', - 973: 'PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE', - 974: 'PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE', - 975: 'PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE', - 976: 'PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 977: 'PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 978: 'PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 979: 'PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 980: 'PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 981: 'PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 982: 'PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 983: 'PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 984: 'PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 985: 'PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 986: 'PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 987: 'PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 988: 'PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 989: 'PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 990: 'PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 991: 'PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 992: 'PH_PERF_SC0_FIFO_STATUS_0', - 993: 'PH_PERF_SC0_FIFO_STATUS_1', - 994: 'PH_PERF_SC0_FIFO_STATUS_2', - 995: 'PH_PERF_SC0_FIFO_STATUS_3', - 996: 'PH_PERF_SC1_FIFO_STATUS_0', - 997: 'PH_PERF_SC1_FIFO_STATUS_1', - 998: 'PH_PERF_SC1_FIFO_STATUS_2', - 999: 'PH_PERF_SC1_FIFO_STATUS_3', - 1000: 'PH_PERF_SC2_FIFO_STATUS_0', - 1001: 'PH_PERF_SC2_FIFO_STATUS_1', - 1002: 'PH_PERF_SC2_FIFO_STATUS_2', - 1003: 'PH_PERF_SC2_FIFO_STATUS_3', - 1004: 'PH_PERF_SC3_FIFO_STATUS_0', - 1005: 'PH_PERF_SC3_FIFO_STATUS_1', - 1006: 'PH_PERF_SC3_FIFO_STATUS_2', - 1007: 'PH_PERF_SC3_FIFO_STATUS_3', - 1008: 'PH_PERF_SC4_FIFO_STATUS_0', - 1009: 'PH_PERF_SC4_FIFO_STATUS_1', - 1010: 'PH_PERF_SC4_FIFO_STATUS_2', - 1011: 'PH_PERF_SC4_FIFO_STATUS_3', - 1012: 'PH_PERF_SC5_FIFO_STATUS_0', - 1013: 'PH_PERF_SC5_FIFO_STATUS_1', - 1014: 'PH_PERF_SC5_FIFO_STATUS_2', - 1015: 'PH_PERF_SC5_FIFO_STATUS_3', - 1016: 'PH_PERF_SC6_FIFO_STATUS_0', - 1017: 'PH_PERF_SC6_FIFO_STATUS_1', - 1018: 'PH_PERF_SC6_FIFO_STATUS_2', - 1019: 'PH_PERF_SC6_FIFO_STATUS_3', - 1020: 'PH_PERF_SC7_FIFO_STATUS_0', - 1021: 'PH_PERF_SC7_FIFO_STATUS_1', - 1022: 'PH_PERF_SC7_FIFO_STATUS_2', - 1023: 'PH_PERF_SC7_FIFO_STATUS_3', -} -PH_PERF_SEL_SC0_SRPS_WINDOW_VALID = 0 -PH_PERF_SEL_SC0_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 1 -PH_PERF_SEL_SC0_ARB_XFC_ONLY_PRIM_CYCLES = 2 -PH_PERF_SEL_SC0_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 3 -PH_PERF_SEL_SC0_ARB_STALLED_FROM_BELOW = 4 -PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE = 5 -PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 6 -PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 7 -PH_PERF_SEL_SC0_ARB_BUSY = 8 -PH_PERF_SEL_SC0_ARB_PA_BUSY_SOP = 9 -PH_PERF_SEL_SC0_ARB_EOP_POP_SYNC_POP = 10 -PH_PERF_SEL_SC0_ARB_EVENT_SYNC_POP = 11 -PH_PERF_SEL_SC0_PS_ENG_MULTICYCLE_BUBBLE = 12 -PH_PERF_SEL_SC0_EOP_SYNC_WINDOW = 13 -PH_PERF_SEL_SC0_BUSY_PROCESSING_MULTICYCLE_PRIM = 14 -PH_PERF_SEL_SC0_BUSY_CNT_NOT_ZERO = 15 -PH_PERF_SEL_SC0_SEND = 16 -PH_PERF_SEL_SC0_CREDIT_AT_ZERO_WITH_PENDING_SEND = 17 -PH_PERF_SEL_SC0_CREDIT_AT_MAX = 18 -PH_PERF_SEL_SC0_CREDIT_AT_MAX_NO_PENDING_SEND = 19 -PH_PERF_SEL_SC0_GFX_PIPE0_TO_1_TRANSITION = 20 -PH_PERF_SEL_SC0_GFX_PIPE1_TO_0_TRANSITION = 21 -PH_PERF_SEL_SC0_GFX_PIPE_PRIM_PROVOKED_TRANSITION = 22 -PH_PERF_SEL_SC0_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 23 -PH_PERF_SEL_SC0_PA0_DATA_FIFO_RD = 24 -PH_PERF_SEL_SC0_PA0_DATA_FIFO_WE = 25 -PH_PERF_SEL_SC0_PA0_FIFO_EMPTY = 26 -PH_PERF_SEL_SC0_PA0_FIFO_FULL = 27 -PH_PERF_SEL_SC0_PA0_NULL_WE = 28 -PH_PERF_SEL_SC0_PA0_EVENT_WE = 29 -PH_PERF_SEL_SC0_PA0_FPOV_WE = 30 -PH_PERF_SEL_SC0_PA0_FPOP_WE = 31 -PH_PERF_SEL_SC0_PA0_EOP_WE = 32 -PH_PERF_SEL_SC0_PA0_DATA_FIFO_EOP_RD = 33 -PH_PERF_SEL_SC0_PA0_EOPG_WE = 34 -PH_PERF_SEL_SC0_PA0_DEALLOC_WE = 35 -PH_PERF_SEL_SC0_PA1_DATA_FIFO_RD = 36 -PH_PERF_SEL_SC0_PA1_DATA_FIFO_WE = 37 -PH_PERF_SEL_SC0_PA1_FIFO_EMPTY = 38 -PH_PERF_SEL_SC0_PA1_FIFO_FULL = 39 -PH_PERF_SEL_SC0_PA1_NULL_WE = 40 -PH_PERF_SEL_SC0_PA1_EVENT_WE = 41 -PH_PERF_SEL_SC0_PA1_FPOV_WE = 42 -PH_PERF_SEL_SC0_PA1_FPOP_WE = 43 -PH_PERF_SEL_SC0_PA1_EOP_WE = 44 -PH_PERF_SEL_SC0_PA1_DATA_FIFO_EOP_RD = 45 -PH_PERF_SEL_SC0_PA1_EOPG_WE = 46 -PH_PERF_SEL_SC0_PA1_DEALLOC_WE = 47 -PH_PERF_SEL_SC0_PA2_DATA_FIFO_RD = 48 -PH_PERF_SEL_SC0_PA2_DATA_FIFO_WE = 49 -PH_PERF_SEL_SC0_PA2_FIFO_EMPTY = 50 -PH_PERF_SEL_SC0_PA2_FIFO_FULL = 51 -PH_PERF_SEL_SC0_PA2_NULL_WE = 52 -PH_PERF_SEL_SC0_PA2_EVENT_WE = 53 -PH_PERF_SEL_SC0_PA2_FPOV_WE = 54 -PH_PERF_SEL_SC0_PA2_FPOP_WE = 55 -PH_PERF_SEL_SC0_PA2_EOP_WE = 56 -PH_PERF_SEL_SC0_PA2_DATA_FIFO_EOP_RD = 57 -PH_PERF_SEL_SC0_PA2_EOPG_WE = 58 -PH_PERF_SEL_SC0_PA2_DEALLOC_WE = 59 -PH_PERF_SEL_SC0_PA3_DATA_FIFO_RD = 60 -PH_PERF_SEL_SC0_PA3_DATA_FIFO_WE = 61 -PH_PERF_SEL_SC0_PA3_FIFO_EMPTY = 62 -PH_PERF_SEL_SC0_PA3_FIFO_FULL = 63 -PH_PERF_SEL_SC0_PA3_NULL_WE = 64 -PH_PERF_SEL_SC0_PA3_EVENT_WE = 65 -PH_PERF_SEL_SC0_PA3_FPOV_WE = 66 -PH_PERF_SEL_SC0_PA3_FPOP_WE = 67 -PH_PERF_SEL_SC0_PA3_EOP_WE = 68 -PH_PERF_SEL_SC0_PA3_DATA_FIFO_EOP_RD = 69 -PH_PERF_SEL_SC0_PA3_EOPG_WE = 70 -PH_PERF_SEL_SC0_PA3_DEALLOC_WE = 71 -PH_PERF_SEL_SC0_PA4_DATA_FIFO_RD = 72 -PH_PERF_SEL_SC0_PA4_DATA_FIFO_WE = 73 -PH_PERF_SEL_SC0_PA4_FIFO_EMPTY = 74 -PH_PERF_SEL_SC0_PA4_FIFO_FULL = 75 -PH_PERF_SEL_SC0_PA4_NULL_WE = 76 -PH_PERF_SEL_SC0_PA4_EVENT_WE = 77 -PH_PERF_SEL_SC0_PA4_FPOV_WE = 78 -PH_PERF_SEL_SC0_PA4_FPOP_WE = 79 -PH_PERF_SEL_SC0_PA4_EOP_WE = 80 -PH_PERF_SEL_SC0_PA4_DATA_FIFO_EOP_RD = 81 -PH_PERF_SEL_SC0_PA4_EOPG_WE = 82 -PH_PERF_SEL_SC0_PA4_DEALLOC_WE = 83 -PH_PERF_SEL_SC0_PA5_DATA_FIFO_RD = 84 -PH_PERF_SEL_SC0_PA5_DATA_FIFO_WE = 85 -PH_PERF_SEL_SC0_PA5_FIFO_EMPTY = 86 -PH_PERF_SEL_SC0_PA5_FIFO_FULL = 87 -PH_PERF_SEL_SC0_PA5_NULL_WE = 88 -PH_PERF_SEL_SC0_PA5_EVENT_WE = 89 -PH_PERF_SEL_SC0_PA5_FPOV_WE = 90 -PH_PERF_SEL_SC0_PA5_FPOP_WE = 91 -PH_PERF_SEL_SC0_PA5_EOP_WE = 92 -PH_PERF_SEL_SC0_PA5_DATA_FIFO_EOP_RD = 93 -PH_PERF_SEL_SC0_PA5_EOPG_WE = 94 -PH_PERF_SEL_SC0_PA5_DEALLOC_WE = 95 -PH_PERF_SEL_SC0_PA6_DATA_FIFO_RD = 96 -PH_PERF_SEL_SC0_PA6_DATA_FIFO_WE = 97 -PH_PERF_SEL_SC0_PA6_FIFO_EMPTY = 98 -PH_PERF_SEL_SC0_PA6_FIFO_FULL = 99 -PH_PERF_SEL_SC0_PA6_NULL_WE = 100 -PH_PERF_SEL_SC0_PA6_EVENT_WE = 101 -PH_PERF_SEL_SC0_PA6_FPOV_WE = 102 -PH_PERF_SEL_SC0_PA6_FPOP_WE = 103 -PH_PERF_SEL_SC0_PA6_EOP_WE = 104 -PH_PERF_SEL_SC0_PA6_DATA_FIFO_EOP_RD = 105 -PH_PERF_SEL_SC0_PA6_EOPG_WE = 106 -PH_PERF_SEL_SC0_PA6_DEALLOC_WE = 107 -PH_PERF_SEL_SC0_PA7_DATA_FIFO_RD = 108 -PH_PERF_SEL_SC0_PA7_DATA_FIFO_WE = 109 -PH_PERF_SEL_SC0_PA7_FIFO_EMPTY = 110 -PH_PERF_SEL_SC0_PA7_FIFO_FULL = 111 -PH_PERF_SEL_SC0_PA7_NULL_WE = 112 -PH_PERF_SEL_SC0_PA7_EVENT_WE = 113 -PH_PERF_SEL_SC0_PA7_FPOV_WE = 114 -PH_PERF_SEL_SC0_PA7_FPOP_WE = 115 -PH_PERF_SEL_SC0_PA7_EOP_WE = 116 -PH_PERF_SEL_SC0_PA7_DATA_FIFO_EOP_RD = 117 -PH_PERF_SEL_SC0_PA7_EOPG_WE = 118 -PH_PERF_SEL_SC0_PA7_DEALLOC_WE = 119 -PH_PERF_SEL_SC1_SRPS_WINDOW_VALID = 120 -PH_PERF_SEL_SC1_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 121 -PH_PERF_SEL_SC1_ARB_XFC_ONLY_PRIM_CYCLES = 122 -PH_PERF_SEL_SC1_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 123 -PH_PERF_SEL_SC1_ARB_STALLED_FROM_BELOW = 124 -PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE = 125 -PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 126 -PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 127 -PH_PERF_SEL_SC1_ARB_BUSY = 128 -PH_PERF_SEL_SC1_ARB_PA_BUSY_SOP = 129 -PH_PERF_SEL_SC1_ARB_EOP_POP_SYNC_POP = 130 -PH_PERF_SEL_SC1_ARB_EVENT_SYNC_POP = 131 -PH_PERF_SEL_SC1_PS_ENG_MULTICYCLE_BUBBLE = 132 -PH_PERF_SEL_SC1_EOP_SYNC_WINDOW = 133 -PH_PERF_SEL_SC1_BUSY_PROCESSING_MULTICYCLE_PRIM = 134 -PH_PERF_SEL_SC1_BUSY_CNT_NOT_ZERO = 135 -PH_PERF_SEL_SC1_SEND = 136 -PH_PERF_SEL_SC1_CREDIT_AT_ZERO_WITH_PENDING_SEND = 137 -PH_PERF_SEL_SC1_CREDIT_AT_MAX = 138 -PH_PERF_SEL_SC1_CREDIT_AT_MAX_NO_PENDING_SEND = 139 -PH_PERF_SEL_SC1_GFX_PIPE0_TO_1_TRANSITION = 140 -PH_PERF_SEL_SC1_GFX_PIPE1_TO_0_TRANSITION = 141 -PH_PERF_SEL_SC1_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 142 -PH_PERF_SEL_SC1_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 143 -PH_PERF_SEL_SC1_PA0_DATA_FIFO_RD = 144 -PH_PERF_SEL_SC1_PA0_DATA_FIFO_WE = 145 -PH_PERF_SEL_SC1_PA0_FIFO_EMPTY = 146 -PH_PERF_SEL_SC1_PA0_FIFO_FULL = 147 -PH_PERF_SEL_SC1_PA0_NULL_WE = 148 -PH_PERF_SEL_SC1_PA0_EVENT_WE = 149 -PH_PERF_SEL_SC1_PA0_FPOV_WE = 150 -PH_PERF_SEL_SC1_PA0_FPOP_WE = 151 -PH_PERF_SEL_SC1_PA0_EOP_WE = 152 -PH_PERF_SEL_SC1_PA0_DATA_FIFO_EOP_RD = 153 -PH_PERF_SEL_SC1_PA0_EOPG_WE = 154 -PH_PERF_SEL_SC1_PA0_DEALLOC_WE = 155 -PH_PERF_SEL_SC1_PA1_DATA_FIFO_RD = 156 -PH_PERF_SEL_SC1_PA1_DATA_FIFO_WE = 157 -PH_PERF_SEL_SC1_PA1_FIFO_EMPTY = 158 -PH_PERF_SEL_SC1_PA1_FIFO_FULL = 159 -PH_PERF_SEL_SC1_PA1_NULL_WE = 160 -PH_PERF_SEL_SC1_PA1_EVENT_WE = 161 -PH_PERF_SEL_SC1_PA1_FPOV_WE = 162 -PH_PERF_SEL_SC1_PA1_FPOP_WE = 163 -PH_PERF_SEL_SC1_PA1_EOP_WE = 164 -PH_PERF_SEL_SC1_PA1_DATA_FIFO_EOP_RD = 165 -PH_PERF_SEL_SC1_PA1_EOPG_WE = 166 -PH_PERF_SEL_SC1_PA1_DEALLOC_WE = 167 -PH_PERF_SEL_SC1_PA2_DATA_FIFO_RD = 168 -PH_PERF_SEL_SC1_PA2_DATA_FIFO_WE = 169 -PH_PERF_SEL_SC1_PA2_FIFO_EMPTY = 170 -PH_PERF_SEL_SC1_PA2_FIFO_FULL = 171 -PH_PERF_SEL_SC1_PA2_NULL_WE = 172 -PH_PERF_SEL_SC1_PA2_EVENT_WE = 173 -PH_PERF_SEL_SC1_PA2_FPOV_WE = 174 -PH_PERF_SEL_SC1_PA2_FPOP_WE = 175 -PH_PERF_SEL_SC1_PA2_EOP_WE = 176 -PH_PERF_SEL_SC1_PA2_DATA_FIFO_EOP_RD = 177 -PH_PERF_SEL_SC1_PA2_EOPG_WE = 178 -PH_PERF_SEL_SC1_PA2_DEALLOC_WE = 179 -PH_PERF_SEL_SC1_PA3_DATA_FIFO_RD = 180 -PH_PERF_SEL_SC1_PA3_DATA_FIFO_WE = 181 -PH_PERF_SEL_SC1_PA3_FIFO_EMPTY = 182 -PH_PERF_SEL_SC1_PA3_FIFO_FULL = 183 -PH_PERF_SEL_SC1_PA3_NULL_WE = 184 -PH_PERF_SEL_SC1_PA3_EVENT_WE = 185 -PH_PERF_SEL_SC1_PA3_FPOV_WE = 186 -PH_PERF_SEL_SC1_PA3_FPOP_WE = 187 -PH_PERF_SEL_SC1_PA3_EOP_WE = 188 -PH_PERF_SEL_SC1_PA3_DATA_FIFO_EOP_RD = 189 -PH_PERF_SEL_SC1_PA3_EOPG_WE = 190 -PH_PERF_SEL_SC1_PA3_DEALLOC_WE = 191 -PH_PERF_SEL_SC1_PA4_DATA_FIFO_RD = 192 -PH_PERF_SEL_SC1_PA4_DATA_FIFO_WE = 193 -PH_PERF_SEL_SC1_PA4_FIFO_EMPTY = 194 -PH_PERF_SEL_SC1_PA4_FIFO_FULL = 195 -PH_PERF_SEL_SC1_PA4_NULL_WE = 196 -PH_PERF_SEL_SC1_PA4_EVENT_WE = 197 -PH_PERF_SEL_SC1_PA4_FPOV_WE = 198 -PH_PERF_SEL_SC1_PA4_FPOP_WE = 199 -PH_PERF_SEL_SC1_PA4_EOP_WE = 200 -PH_PERF_SEL_SC1_PA4_DATA_FIFO_EOP_RD = 201 -PH_PERF_SEL_SC1_PA4_EOPG_WE = 202 -PH_PERF_SEL_SC1_PA4_DEALLOC_WE = 203 -PH_PERF_SEL_SC1_PA5_DATA_FIFO_RD = 204 -PH_PERF_SEL_SC1_PA5_DATA_FIFO_WE = 205 -PH_PERF_SEL_SC1_PA5_FIFO_EMPTY = 206 -PH_PERF_SEL_SC1_PA5_FIFO_FULL = 207 -PH_PERF_SEL_SC1_PA5_NULL_WE = 208 -PH_PERF_SEL_SC1_PA5_EVENT_WE = 209 -PH_PERF_SEL_SC1_PA5_FPOV_WE = 210 -PH_PERF_SEL_SC1_PA5_FPOP_WE = 211 -PH_PERF_SEL_SC1_PA5_EOP_WE = 212 -PH_PERF_SEL_SC1_PA5_DATA_FIFO_EOP_RD = 213 -PH_PERF_SEL_SC1_PA5_EOPG_WE = 214 -PH_PERF_SEL_SC1_PA5_DEALLOC_WE = 215 -PH_PERF_SEL_SC1_PA6_DATA_FIFO_RD = 216 -PH_PERF_SEL_SC1_PA6_DATA_FIFO_WE = 217 -PH_PERF_SEL_SC1_PA6_FIFO_EMPTY = 218 -PH_PERF_SEL_SC1_PA6_FIFO_FULL = 219 -PH_PERF_SEL_SC1_PA6_NULL_WE = 220 -PH_PERF_SEL_SC1_PA6_EVENT_WE = 221 -PH_PERF_SEL_SC1_PA6_FPOV_WE = 222 -PH_PERF_SEL_SC1_PA6_FPOP_WE = 223 -PH_PERF_SEL_SC1_PA6_EOP_WE = 224 -PH_PERF_SEL_SC1_PA6_DATA_FIFO_EOP_RD = 225 -PH_PERF_SEL_SC1_PA6_EOPG_WE = 226 -PH_PERF_SEL_SC1_PA6_DEALLOC_WE = 227 -PH_PERF_SEL_SC1_PA7_DATA_FIFO_RD = 228 -PH_PERF_SEL_SC1_PA7_DATA_FIFO_WE = 229 -PH_PERF_SEL_SC1_PA7_FIFO_EMPTY = 230 -PH_PERF_SEL_SC1_PA7_FIFO_FULL = 231 -PH_PERF_SEL_SC1_PA7_NULL_WE = 232 -PH_PERF_SEL_SC1_PA7_EVENT_WE = 233 -PH_PERF_SEL_SC1_PA7_FPOV_WE = 234 -PH_PERF_SEL_SC1_PA7_FPOP_WE = 235 -PH_PERF_SEL_SC1_PA7_EOP_WE = 236 -PH_PERF_SEL_SC1_PA7_DATA_FIFO_EOP_RD = 237 -PH_PERF_SEL_SC1_PA7_EOPG_WE = 238 -PH_PERF_SEL_SC1_PA7_DEALLOC_WE = 239 -PH_PERF_SEL_SC2_SRPS_WINDOW_VALID = 240 -PH_PERF_SEL_SC2_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 241 -PH_PERF_SEL_SC2_ARB_XFC_ONLY_PRIM_CYCLES = 242 -PH_PERF_SEL_SC2_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 243 -PH_PERF_SEL_SC2_ARB_STALLED_FROM_BELOW = 244 -PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE = 245 -PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 246 -PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 247 -PH_PERF_SEL_SC2_ARB_BUSY = 248 -PH_PERF_SEL_SC2_ARB_PA_BUSY_SOP = 249 -PH_PERF_SEL_SC2_ARB_EOP_POP_SYNC_POP = 250 -PH_PERF_SEL_SC2_ARB_EVENT_SYNC_POP = 251 -PH_PERF_SEL_SC2_PS_ENG_MULTICYCLE_BUBBLE = 252 -PH_PERF_SEL_SC2_EOP_SYNC_WINDOW = 253 -PH_PERF_SEL_SC2_BUSY_PROCESSING_MULTICYCLE_PRIM = 254 -PH_PERF_SEL_SC2_BUSY_CNT_NOT_ZERO = 255 -PH_PERF_SEL_SC2_SEND = 256 -PH_PERF_SEL_SC2_CREDIT_AT_ZERO_WITH_PENDING_SEND = 257 -PH_PERF_SEL_SC2_CREDIT_AT_MAX = 258 -PH_PERF_SEL_SC2_CREDIT_AT_MAX_NO_PENDING_SEND = 259 -PH_PERF_SEL_SC2_GFX_PIPE0_TO_1_TRANSITION = 260 -PH_PERF_SEL_SC2_GFX_PIPE1_TO_0_TRANSITION = 261 -PH_PERF_SEL_SC2_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 262 -PH_PERF_SEL_SC2_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 263 -PH_PERF_SEL_SC2_PA0_DATA_FIFO_RD = 264 -PH_PERF_SEL_SC2_PA0_DATA_FIFO_WE = 265 -PH_PERF_SEL_SC2_PA0_FIFO_EMPTY = 266 -PH_PERF_SEL_SC2_PA0_FIFO_FULL = 267 -PH_PERF_SEL_SC2_PA0_NULL_WE = 268 -PH_PERF_SEL_SC2_PA0_EVENT_WE = 269 -PH_PERF_SEL_SC2_PA0_FPOV_WE = 270 -PH_PERF_SEL_SC2_PA0_FPOP_WE = 271 -PH_PERF_SEL_SC2_PA0_EOP_WE = 272 -PH_PERF_SEL_SC2_PA0_DATA_FIFO_EOP_RD = 273 -PH_PERF_SEL_SC2_PA0_EOPG_WE = 274 -PH_PERF_SEL_SC2_PA0_DEALLOC_WE = 275 -PH_PERF_SEL_SC2_PA1_DATA_FIFO_RD = 276 -PH_PERF_SEL_SC2_PA1_DATA_FIFO_WE = 277 -PH_PERF_SEL_SC2_PA1_FIFO_EMPTY = 278 -PH_PERF_SEL_SC2_PA1_FIFO_FULL = 279 -PH_PERF_SEL_SC2_PA1_NULL_WE = 280 -PH_PERF_SEL_SC2_PA1_EVENT_WE = 281 -PH_PERF_SEL_SC2_PA1_FPOV_WE = 282 -PH_PERF_SEL_SC2_PA1_FPOP_WE = 283 -PH_PERF_SEL_SC2_PA1_EOP_WE = 284 -PH_PERF_SEL_SC2_PA1_DATA_FIFO_EOP_RD = 285 -PH_PERF_SEL_SC2_PA1_EOPG_WE = 286 -PH_PERF_SEL_SC2_PA1_DEALLOC_WE = 287 -PH_PERF_SEL_SC2_PA2_DATA_FIFO_RD = 288 -PH_PERF_SEL_SC2_PA2_DATA_FIFO_WE = 289 -PH_PERF_SEL_SC2_PA2_FIFO_EMPTY = 290 -PH_PERF_SEL_SC2_PA2_FIFO_FULL = 291 -PH_PERF_SEL_SC2_PA2_NULL_WE = 292 -PH_PERF_SEL_SC2_PA2_EVENT_WE = 293 -PH_PERF_SEL_SC2_PA2_FPOV_WE = 294 -PH_PERF_SEL_SC2_PA2_FPOP_WE = 295 -PH_PERF_SEL_SC2_PA2_EOP_WE = 296 -PH_PERF_SEL_SC2_PA2_DATA_FIFO_EOP_RD = 297 -PH_PERF_SEL_SC2_PA2_EOPG_WE = 298 -PH_PERF_SEL_SC2_PA2_DEALLOC_WE = 299 -PH_PERF_SEL_SC2_PA3_DATA_FIFO_RD = 300 -PH_PERF_SEL_SC2_PA3_DATA_FIFO_WE = 301 -PH_PERF_SEL_SC2_PA3_FIFO_EMPTY = 302 -PH_PERF_SEL_SC2_PA3_FIFO_FULL = 303 -PH_PERF_SEL_SC2_PA3_NULL_WE = 304 -PH_PERF_SEL_SC2_PA3_EVENT_WE = 305 -PH_PERF_SEL_SC2_PA3_FPOV_WE = 306 -PH_PERF_SEL_SC2_PA3_FPOP_WE = 307 -PH_PERF_SEL_SC2_PA3_EOP_WE = 308 -PH_PERF_SEL_SC2_PA3_DATA_FIFO_EOP_RD = 309 -PH_PERF_SEL_SC2_PA3_EOPG_WE = 310 -PH_PERF_SEL_SC2_PA3_DEALLOC_WE = 311 -PH_PERF_SEL_SC2_PA4_DATA_FIFO_RD = 312 -PH_PERF_SEL_SC2_PA4_DATA_FIFO_WE = 313 -PH_PERF_SEL_SC2_PA4_FIFO_EMPTY = 314 -PH_PERF_SEL_SC2_PA4_FIFO_FULL = 315 -PH_PERF_SEL_SC2_PA4_NULL_WE = 316 -PH_PERF_SEL_SC2_PA4_EVENT_WE = 317 -PH_PERF_SEL_SC2_PA4_FPOV_WE = 318 -PH_PERF_SEL_SC2_PA4_FPOP_WE = 319 -PH_PERF_SEL_SC2_PA4_EOP_WE = 320 -PH_PERF_SEL_SC2_PA4_DATA_FIFO_EOP_RD = 321 -PH_PERF_SEL_SC2_PA4_EOPG_WE = 322 -PH_PERF_SEL_SC2_PA4_DEALLOC_WE = 323 -PH_PERF_SEL_SC2_PA5_DATA_FIFO_RD = 324 -PH_PERF_SEL_SC2_PA5_DATA_FIFO_WE = 325 -PH_PERF_SEL_SC2_PA5_FIFO_EMPTY = 326 -PH_PERF_SEL_SC2_PA5_FIFO_FULL = 327 -PH_PERF_SEL_SC2_PA5_NULL_WE = 328 -PH_PERF_SEL_SC2_PA5_EVENT_WE = 329 -PH_PERF_SEL_SC2_PA5_FPOV_WE = 330 -PH_PERF_SEL_SC2_PA5_FPOP_WE = 331 -PH_PERF_SEL_SC2_PA5_EOP_WE = 332 -PH_PERF_SEL_SC2_PA5_DATA_FIFO_EOP_RD = 333 -PH_PERF_SEL_SC2_PA5_EOPG_WE = 334 -PH_PERF_SEL_SC2_PA5_DEALLOC_WE = 335 -PH_PERF_SEL_SC2_PA6_DATA_FIFO_RD = 336 -PH_PERF_SEL_SC2_PA6_DATA_FIFO_WE = 337 -PH_PERF_SEL_SC2_PA6_FIFO_EMPTY = 338 -PH_PERF_SEL_SC2_PA6_FIFO_FULL = 339 -PH_PERF_SEL_SC2_PA6_NULL_WE = 340 -PH_PERF_SEL_SC2_PA6_EVENT_WE = 341 -PH_PERF_SEL_SC2_PA6_FPOV_WE = 342 -PH_PERF_SEL_SC2_PA6_FPOP_WE = 343 -PH_PERF_SEL_SC2_PA6_EOP_WE = 344 -PH_PERF_SEL_SC2_PA6_DATA_FIFO_EOP_RD = 345 -PH_PERF_SEL_SC2_PA6_EOPG_WE = 346 -PH_PERF_SEL_SC2_PA6_DEALLOC_WE = 347 -PH_PERF_SEL_SC2_PA7_DATA_FIFO_RD = 348 -PH_PERF_SEL_SC2_PA7_DATA_FIFO_WE = 349 -PH_PERF_SEL_SC2_PA7_FIFO_EMPTY = 350 -PH_PERF_SEL_SC2_PA7_FIFO_FULL = 351 -PH_PERF_SEL_SC2_PA7_NULL_WE = 352 -PH_PERF_SEL_SC2_PA7_EVENT_WE = 353 -PH_PERF_SEL_SC2_PA7_FPOV_WE = 354 -PH_PERF_SEL_SC2_PA7_FPOP_WE = 355 -PH_PERF_SEL_SC2_PA7_EOP_WE = 356 -PH_PERF_SEL_SC2_PA7_DATA_FIFO_EOP_RD = 357 -PH_PERF_SEL_SC2_PA7_EOPG_WE = 358 -PH_PERF_SEL_SC2_PA7_DEALLOC_WE = 359 -PH_PERF_SEL_SC3_SRPS_WINDOW_VALID = 360 -PH_PERF_SEL_SC3_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 361 -PH_PERF_SEL_SC3_ARB_XFC_ONLY_PRIM_CYCLES = 362 -PH_PERF_SEL_SC3_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 363 -PH_PERF_SEL_SC3_ARB_STALLED_FROM_BELOW = 364 -PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE = 365 -PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 366 -PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 367 -PH_PERF_SEL_SC3_ARB_BUSY = 368 -PH_PERF_SEL_SC3_ARB_PA_BUSY_SOP = 369 -PH_PERF_SEL_SC3_ARB_EOP_POP_SYNC_POP = 370 -PH_PERF_SEL_SC3_ARB_EVENT_SYNC_POP = 371 -PH_PERF_SEL_SC3_PS_ENG_MULTICYCLE_BUBBLE = 372 -PH_PERF_SEL_SC3_EOP_SYNC_WINDOW = 373 -PH_PERF_SEL_SC3_BUSY_PROCESSING_MULTICYCLE_PRIM = 374 -PH_PERF_SEL_SC3_BUSY_CNT_NOT_ZERO = 375 -PH_PERF_SEL_SC3_SEND = 376 -PH_PERF_SEL_SC3_CREDIT_AT_ZERO_WITH_PENDING_SEND = 377 -PH_PERF_SEL_SC3_CREDIT_AT_MAX = 378 -PH_PERF_SEL_SC3_CREDIT_AT_MAX_NO_PENDING_SEND = 379 -PH_PERF_SEL_SC3_GFX_PIPE0_TO_1_TRANSITION = 380 -PH_PERF_SEL_SC3_GFX_PIPE1_TO_0_TRANSITION = 381 -PH_PERF_SEL_SC3_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 382 -PH_PERF_SEL_SC3_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 383 -PH_PERF_SEL_SC3_PA0_DATA_FIFO_RD = 384 -PH_PERF_SEL_SC3_PA0_DATA_FIFO_WE = 385 -PH_PERF_SEL_SC3_PA0_FIFO_EMPTY = 386 -PH_PERF_SEL_SC3_PA0_FIFO_FULL = 387 -PH_PERF_SEL_SC3_PA0_NULL_WE = 388 -PH_PERF_SEL_SC3_PA0_EVENT_WE = 389 -PH_PERF_SEL_SC3_PA0_FPOV_WE = 390 -PH_PERF_SEL_SC3_PA0_FPOP_WE = 391 -PH_PERF_SEL_SC3_PA0_EOP_WE = 392 -PH_PERF_SEL_SC3_PA0_DATA_FIFO_EOP_RD = 393 -PH_PERF_SEL_SC3_PA0_EOPG_WE = 394 -PH_PERF_SEL_SC3_PA0_DEALLOC_WE = 395 -PH_PERF_SEL_SC3_PA1_DATA_FIFO_RD = 396 -PH_PERF_SEL_SC3_PA1_DATA_FIFO_WE = 397 -PH_PERF_SEL_SC3_PA1_FIFO_EMPTY = 398 -PH_PERF_SEL_SC3_PA1_FIFO_FULL = 399 -PH_PERF_SEL_SC3_PA1_NULL_WE = 400 -PH_PERF_SEL_SC3_PA1_EVENT_WE = 401 -PH_PERF_SEL_SC3_PA1_FPOV_WE = 402 -PH_PERF_SEL_SC3_PA1_FPOP_WE = 403 -PH_PERF_SEL_SC3_PA1_EOP_WE = 404 -PH_PERF_SEL_SC3_PA1_DATA_FIFO_EOP_RD = 405 -PH_PERF_SEL_SC3_PA1_EOPG_WE = 406 -PH_PERF_SEL_SC3_PA1_DEALLOC_WE = 407 -PH_PERF_SEL_SC3_PA2_DATA_FIFO_RD = 408 -PH_PERF_SEL_SC3_PA2_DATA_FIFO_WE = 409 -PH_PERF_SEL_SC3_PA2_FIFO_EMPTY = 410 -PH_PERF_SEL_SC3_PA2_FIFO_FULL = 411 -PH_PERF_SEL_SC3_PA2_NULL_WE = 412 -PH_PERF_SEL_SC3_PA2_EVENT_WE = 413 -PH_PERF_SEL_SC3_PA2_FPOV_WE = 414 -PH_PERF_SEL_SC3_PA2_FPOP_WE = 415 -PH_PERF_SEL_SC3_PA2_EOP_WE = 416 -PH_PERF_SEL_SC3_PA2_DATA_FIFO_EOP_RD = 417 -PH_PERF_SEL_SC3_PA2_EOPG_WE = 418 -PH_PERF_SEL_SC3_PA2_DEALLOC_WE = 419 -PH_PERF_SEL_SC3_PA3_DATA_FIFO_RD = 420 -PH_PERF_SEL_SC3_PA3_DATA_FIFO_WE = 421 -PH_PERF_SEL_SC3_PA3_FIFO_EMPTY = 422 -PH_PERF_SEL_SC3_PA3_FIFO_FULL = 423 -PH_PERF_SEL_SC3_PA3_NULL_WE = 424 -PH_PERF_SEL_SC3_PA3_EVENT_WE = 425 -PH_PERF_SEL_SC3_PA3_FPOV_WE = 426 -PH_PERF_SEL_SC3_PA3_FPOP_WE = 427 -PH_PERF_SEL_SC3_PA3_EOP_WE = 428 -PH_PERF_SEL_SC3_PA3_DATA_FIFO_EOP_RD = 429 -PH_PERF_SEL_SC3_PA3_EOPG_WE = 430 -PH_PERF_SEL_SC3_PA3_DEALLOC_WE = 431 -PH_PERF_SEL_SC3_PA4_DATA_FIFO_RD = 432 -PH_PERF_SEL_SC3_PA4_DATA_FIFO_WE = 433 -PH_PERF_SEL_SC3_PA4_FIFO_EMPTY = 434 -PH_PERF_SEL_SC3_PA4_FIFO_FULL = 435 -PH_PERF_SEL_SC3_PA4_NULL_WE = 436 -PH_PERF_SEL_SC3_PA4_EVENT_WE = 437 -PH_PERF_SEL_SC3_PA4_FPOV_WE = 438 -PH_PERF_SEL_SC3_PA4_FPOP_WE = 439 -PH_PERF_SEL_SC3_PA4_EOP_WE = 440 -PH_PERF_SEL_SC3_PA4_DATA_FIFO_EOP_RD = 441 -PH_PERF_SEL_SC3_PA4_EOPG_WE = 442 -PH_PERF_SEL_SC3_PA4_DEALLOC_WE = 443 -PH_PERF_SEL_SC3_PA5_DATA_FIFO_RD = 444 -PH_PERF_SEL_SC3_PA5_DATA_FIFO_WE = 445 -PH_PERF_SEL_SC3_PA5_FIFO_EMPTY = 446 -PH_PERF_SEL_SC3_PA5_FIFO_FULL = 447 -PH_PERF_SEL_SC3_PA5_NULL_WE = 448 -PH_PERF_SEL_SC3_PA5_EVENT_WE = 449 -PH_PERF_SEL_SC3_PA5_FPOV_WE = 450 -PH_PERF_SEL_SC3_PA5_FPOP_WE = 451 -PH_PERF_SEL_SC3_PA5_EOP_WE = 452 -PH_PERF_SEL_SC3_PA5_DATA_FIFO_EOP_RD = 453 -PH_PERF_SEL_SC3_PA5_EOPG_WE = 454 -PH_PERF_SEL_SC3_PA5_DEALLOC_WE = 455 -PH_PERF_SEL_SC3_PA6_DATA_FIFO_RD = 456 -PH_PERF_SEL_SC3_PA6_DATA_FIFO_WE = 457 -PH_PERF_SEL_SC3_PA6_FIFO_EMPTY = 458 -PH_PERF_SEL_SC3_PA6_FIFO_FULL = 459 -PH_PERF_SEL_SC3_PA6_NULL_WE = 460 -PH_PERF_SEL_SC3_PA6_EVENT_WE = 461 -PH_PERF_SEL_SC3_PA6_FPOV_WE = 462 -PH_PERF_SEL_SC3_PA6_FPOP_WE = 463 -PH_PERF_SEL_SC3_PA6_EOP_WE = 464 -PH_PERF_SEL_SC3_PA6_DATA_FIFO_EOP_RD = 465 -PH_PERF_SEL_SC3_PA6_EOPG_WE = 466 -PH_PERF_SEL_SC3_PA6_DEALLOC_WE = 467 -PH_PERF_SEL_SC3_PA7_DATA_FIFO_RD = 468 -PH_PERF_SEL_SC3_PA7_DATA_FIFO_WE = 469 -PH_PERF_SEL_SC3_PA7_FIFO_EMPTY = 470 -PH_PERF_SEL_SC3_PA7_FIFO_FULL = 471 -PH_PERF_SEL_SC3_PA7_NULL_WE = 472 -PH_PERF_SEL_SC3_PA7_EVENT_WE = 473 -PH_PERF_SEL_SC3_PA7_FPOV_WE = 474 -PH_PERF_SEL_SC3_PA7_FPOP_WE = 475 -PH_PERF_SEL_SC3_PA7_EOP_WE = 476 -PH_PERF_SEL_SC3_PA7_DATA_FIFO_EOP_RD = 477 -PH_PERF_SEL_SC3_PA7_EOPG_WE = 478 -PH_PERF_SEL_SC3_PA7_DEALLOC_WE = 479 -PH_PERF_SEL_SC4_SRPS_WINDOW_VALID = 480 -PH_PERF_SEL_SC4_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 481 -PH_PERF_SEL_SC4_ARB_XFC_ONLY_PRIM_CYCLES = 482 -PH_PERF_SEL_SC4_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 483 -PH_PERF_SEL_SC4_ARB_STALLED_FROM_BELOW = 484 -PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE = 485 -PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 486 -PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 487 -PH_PERF_SEL_SC4_ARB_BUSY = 488 -PH_PERF_SEL_SC4_ARB_PA_BUSY_SOP = 489 -PH_PERF_SEL_SC4_ARB_EOP_POP_SYNC_POP = 490 -PH_PERF_SEL_SC4_ARB_EVENT_SYNC_POP = 491 -PH_PERF_SEL_SC4_PS_ENG_MULTICYCLE_BUBBLE = 492 -PH_PERF_SEL_SC4_EOP_SYNC_WINDOW = 493 -PH_PERF_SEL_SC4_BUSY_PROCESSING_MULTICYCLE_PRIM = 494 -PH_PERF_SEL_SC4_BUSY_CNT_NOT_ZERO = 495 -PH_PERF_SEL_SC4_SEND = 496 -PH_PERF_SEL_SC4_CREDIT_AT_ZERO_WITH_PENDING_SEND = 497 -PH_PERF_SEL_SC4_CREDIT_AT_MAX = 498 -PH_PERF_SEL_SC4_CREDIT_AT_MAX_NO_PENDING_SEND = 499 -PH_PERF_SEL_SC4_GFX_PIPE0_TO_1_TRANSITION = 500 -PH_PERF_SEL_SC4_GFX_PIPE1_TO_0_TRANSITION = 501 -PH_PERF_SEL_SC4_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 502 -PH_PERF_SEL_SC4_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 503 -PH_PERF_SEL_SC4_PA0_DATA_FIFO_RD = 504 -PH_PERF_SEL_SC4_PA0_DATA_FIFO_WE = 505 -PH_PERF_SEL_SC4_PA0_FIFO_EMPTY = 506 -PH_PERF_SEL_SC4_PA0_FIFO_FULL = 507 -PH_PERF_SEL_SC4_PA0_NULL_WE = 508 -PH_PERF_SEL_SC4_PA0_EVENT_WE = 509 -PH_PERF_SEL_SC4_PA0_FPOV_WE = 510 -PH_PERF_SEL_SC4_PA0_FPOP_WE = 511 -PH_PERF_SEL_SC4_PA0_EOP_WE = 512 -PH_PERF_SEL_SC4_PA0_DATA_FIFO_EOP_RD = 513 -PH_PERF_SEL_SC4_PA0_EOPG_WE = 514 -PH_PERF_SEL_SC4_PA0_DEALLOC_WE = 515 -PH_PERF_SEL_SC4_PA1_DATA_FIFO_RD = 516 -PH_PERF_SEL_SC4_PA1_DATA_FIFO_WE = 517 -PH_PERF_SEL_SC4_PA1_FIFO_EMPTY = 518 -PH_PERF_SEL_SC4_PA1_FIFO_FULL = 519 -PH_PERF_SEL_SC4_PA1_NULL_WE = 520 -PH_PERF_SEL_SC4_PA1_EVENT_WE = 521 -PH_PERF_SEL_SC4_PA1_FPOV_WE = 522 -PH_PERF_SEL_SC4_PA1_FPOP_WE = 523 -PH_PERF_SEL_SC4_PA1_EOP_WE = 524 -PH_PERF_SEL_SC4_PA1_DATA_FIFO_EOP_RD = 525 -PH_PERF_SEL_SC4_PA1_EOPG_WE = 526 -PH_PERF_SEL_SC4_PA1_DEALLOC_WE = 527 -PH_PERF_SEL_SC4_PA2_DATA_FIFO_RD = 528 -PH_PERF_SEL_SC4_PA2_DATA_FIFO_WE = 529 -PH_PERF_SEL_SC4_PA2_FIFO_EMPTY = 530 -PH_PERF_SEL_SC4_PA2_FIFO_FULL = 531 -PH_PERF_SEL_SC4_PA2_NULL_WE = 532 -PH_PERF_SEL_SC4_PA2_EVENT_WE = 533 -PH_PERF_SEL_SC4_PA2_FPOV_WE = 534 -PH_PERF_SEL_SC4_PA2_FPOP_WE = 535 -PH_PERF_SEL_SC4_PA2_EOP_WE = 536 -PH_PERF_SEL_SC4_PA2_DATA_FIFO_EOP_RD = 537 -PH_PERF_SEL_SC4_PA2_EOPG_WE = 538 -PH_PERF_SEL_SC4_PA2_DEALLOC_WE = 539 -PH_PERF_SEL_SC4_PA3_DATA_FIFO_RD = 540 -PH_PERF_SEL_SC4_PA3_DATA_FIFO_WE = 541 -PH_PERF_SEL_SC4_PA3_FIFO_EMPTY = 542 -PH_PERF_SEL_SC4_PA3_FIFO_FULL = 543 -PH_PERF_SEL_SC4_PA3_NULL_WE = 544 -PH_PERF_SEL_SC4_PA3_EVENT_WE = 545 -PH_PERF_SEL_SC4_PA3_FPOV_WE = 546 -PH_PERF_SEL_SC4_PA3_FPOP_WE = 547 -PH_PERF_SEL_SC4_PA3_EOP_WE = 548 -PH_PERF_SEL_SC4_PA3_DATA_FIFO_EOP_RD = 549 -PH_PERF_SEL_SC4_PA3_EOPG_WE = 550 -PH_PERF_SEL_SC4_PA3_DEALLOC_WE = 551 -PH_PERF_SEL_SC4_PA4_DATA_FIFO_RD = 552 -PH_PERF_SEL_SC4_PA4_DATA_FIFO_WE = 553 -PH_PERF_SEL_SC4_PA4_FIFO_EMPTY = 554 -PH_PERF_SEL_SC4_PA4_FIFO_FULL = 555 -PH_PERF_SEL_SC4_PA4_NULL_WE = 556 -PH_PERF_SEL_SC4_PA4_EVENT_WE = 557 -PH_PERF_SEL_SC4_PA4_FPOV_WE = 558 -PH_PERF_SEL_SC4_PA4_FPOP_WE = 559 -PH_PERF_SEL_SC4_PA4_EOP_WE = 560 -PH_PERF_SEL_SC4_PA4_DATA_FIFO_EOP_RD = 561 -PH_PERF_SEL_SC4_PA4_EOPG_WE = 562 -PH_PERF_SEL_SC4_PA4_DEALLOC_WE = 563 -PH_PERF_SEL_SC4_PA5_DATA_FIFO_RD = 564 -PH_PERF_SEL_SC4_PA5_DATA_FIFO_WE = 565 -PH_PERF_SEL_SC4_PA5_FIFO_EMPTY = 566 -PH_PERF_SEL_SC4_PA5_FIFO_FULL = 567 -PH_PERF_SEL_SC4_PA5_NULL_WE = 568 -PH_PERF_SEL_SC4_PA5_EVENT_WE = 569 -PH_PERF_SEL_SC4_PA5_FPOV_WE = 570 -PH_PERF_SEL_SC4_PA5_FPOP_WE = 571 -PH_PERF_SEL_SC4_PA5_EOP_WE = 572 -PH_PERF_SEL_SC4_PA5_DATA_FIFO_EOP_RD = 573 -PH_PERF_SEL_SC4_PA5_EOPG_WE = 574 -PH_PERF_SEL_SC4_PA5_DEALLOC_WE = 575 -PH_PERF_SEL_SC4_PA6_DATA_FIFO_RD = 576 -PH_PERF_SEL_SC4_PA6_DATA_FIFO_WE = 577 -PH_PERF_SEL_SC4_PA6_FIFO_EMPTY = 578 -PH_PERF_SEL_SC4_PA6_FIFO_FULL = 579 -PH_PERF_SEL_SC4_PA6_NULL_WE = 580 -PH_PERF_SEL_SC4_PA6_EVENT_WE = 581 -PH_PERF_SEL_SC4_PA6_FPOV_WE = 582 -PH_PERF_SEL_SC4_PA6_FPOP_WE = 583 -PH_PERF_SEL_SC4_PA6_EOP_WE = 584 -PH_PERF_SEL_SC4_PA6_DATA_FIFO_EOP_RD = 585 -PH_PERF_SEL_SC4_PA6_EOPG_WE = 586 -PH_PERF_SEL_SC4_PA6_DEALLOC_WE = 587 -PH_PERF_SEL_SC4_PA7_DATA_FIFO_RD = 588 -PH_PERF_SEL_SC4_PA7_DATA_FIFO_WE = 589 -PH_PERF_SEL_SC4_PA7_FIFO_EMPTY = 590 -PH_PERF_SEL_SC4_PA7_FIFO_FULL = 591 -PH_PERF_SEL_SC4_PA7_NULL_WE = 592 -PH_PERF_SEL_SC4_PA7_EVENT_WE = 593 -PH_PERF_SEL_SC4_PA7_FPOV_WE = 594 -PH_PERF_SEL_SC4_PA7_FPOP_WE = 595 -PH_PERF_SEL_SC4_PA7_EOP_WE = 596 -PH_PERF_SEL_SC4_PA7_DATA_FIFO_EOP_RD = 597 -PH_PERF_SEL_SC4_PA7_EOPG_WE = 598 -PH_PERF_SEL_SC4_PA7_DEALLOC_WE = 599 -PH_PERF_SEL_SC5_SRPS_WINDOW_VALID = 600 -PH_PERF_SEL_SC5_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 601 -PH_PERF_SEL_SC5_ARB_XFC_ONLY_PRIM_CYCLES = 602 -PH_PERF_SEL_SC5_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 603 -PH_PERF_SEL_SC5_ARB_STALLED_FROM_BELOW = 604 -PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE = 605 -PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 606 -PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 607 -PH_PERF_SEL_SC5_ARB_BUSY = 608 -PH_PERF_SEL_SC5_ARB_PA_BUSY_SOP = 609 -PH_PERF_SEL_SC5_ARB_EOP_POP_SYNC_POP = 610 -PH_PERF_SEL_SC5_ARB_EVENT_SYNC_POP = 611 -PH_PERF_SEL_SC5_PS_ENG_MULTICYCLE_BUBBLE = 612 -PH_PERF_SEL_SC5_EOP_SYNC_WINDOW = 613 -PH_PERF_SEL_SC5_BUSY_PROCESSING_MULTICYCLE_PRIM = 614 -PH_PERF_SEL_SC5_BUSY_CNT_NOT_ZERO = 615 -PH_PERF_SEL_SC5_SEND = 616 -PH_PERF_SEL_SC5_CREDIT_AT_ZERO_WITH_PENDING_SEND = 617 -PH_PERF_SEL_SC5_CREDIT_AT_MAX = 618 -PH_PERF_SEL_SC5_CREDIT_AT_MAX_NO_PENDING_SEND = 619 -PH_PERF_SEL_SC5_GFX_PIPE0_TO_1_TRANSITION = 620 -PH_PERF_SEL_SC5_GFX_PIPE1_TO_0_TRANSITION = 621 -PH_PERF_SEL_SC5_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 622 -PH_PERF_SEL_SC5_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 623 -PH_PERF_SEL_SC5_PA0_DATA_FIFO_RD = 624 -PH_PERF_SEL_SC5_PA0_DATA_FIFO_WE = 625 -PH_PERF_SEL_SC5_PA0_FIFO_EMPTY = 626 -PH_PERF_SEL_SC5_PA0_FIFO_FULL = 627 -PH_PERF_SEL_SC5_PA0_NULL_WE = 628 -PH_PERF_SEL_SC5_PA0_EVENT_WE = 629 -PH_PERF_SEL_SC5_PA0_FPOV_WE = 630 -PH_PERF_SEL_SC5_PA0_FPOP_WE = 631 -PH_PERF_SEL_SC5_PA0_EOP_WE = 632 -PH_PERF_SEL_SC5_PA0_DATA_FIFO_EOP_RD = 633 -PH_PERF_SEL_SC5_PA0_EOPG_WE = 634 -PH_PERF_SEL_SC5_PA0_DEALLOC_WE = 635 -PH_PERF_SEL_SC5_PA1_DATA_FIFO_RD = 636 -PH_PERF_SEL_SC5_PA1_DATA_FIFO_WE = 637 -PH_PERF_SEL_SC5_PA1_FIFO_EMPTY = 638 -PH_PERF_SEL_SC5_PA1_FIFO_FULL = 639 -PH_PERF_SEL_SC5_PA1_NULL_WE = 640 -PH_PERF_SEL_SC5_PA1_EVENT_WE = 641 -PH_PERF_SEL_SC5_PA1_FPOV_WE = 642 -PH_PERF_SEL_SC5_PA1_FPOP_WE = 643 -PH_PERF_SEL_SC5_PA1_EOP_WE = 644 -PH_PERF_SEL_SC5_PA1_DATA_FIFO_EOP_RD = 645 -PH_PERF_SEL_SC5_PA1_EOPG_WE = 646 -PH_PERF_SEL_SC5_PA1_DEALLOC_WE = 647 -PH_PERF_SEL_SC5_PA2_DATA_FIFO_RD = 648 -PH_PERF_SEL_SC5_PA2_DATA_FIFO_WE = 649 -PH_PERF_SEL_SC5_PA2_FIFO_EMPTY = 650 -PH_PERF_SEL_SC5_PA2_FIFO_FULL = 651 -PH_PERF_SEL_SC5_PA2_NULL_WE = 652 -PH_PERF_SEL_SC5_PA2_EVENT_WE = 653 -PH_PERF_SEL_SC5_PA2_FPOV_WE = 654 -PH_PERF_SEL_SC5_PA2_FPOP_WE = 655 -PH_PERF_SEL_SC5_PA2_EOP_WE = 656 -PH_PERF_SEL_SC5_PA2_DATA_FIFO_EOP_RD = 657 -PH_PERF_SEL_SC5_PA2_EOPG_WE = 658 -PH_PERF_SEL_SC5_PA2_DEALLOC_WE = 659 -PH_PERF_SEL_SC5_PA3_DATA_FIFO_RD = 660 -PH_PERF_SEL_SC5_PA3_DATA_FIFO_WE = 661 -PH_PERF_SEL_SC5_PA3_FIFO_EMPTY = 662 -PH_PERF_SEL_SC5_PA3_FIFO_FULL = 663 -PH_PERF_SEL_SC5_PA3_NULL_WE = 664 -PH_PERF_SEL_SC5_PA3_EVENT_WE = 665 -PH_PERF_SEL_SC5_PA3_FPOV_WE = 666 -PH_PERF_SEL_SC5_PA3_FPOP_WE = 667 -PH_PERF_SEL_SC5_PA3_EOP_WE = 668 -PH_PERF_SEL_SC5_PA3_DATA_FIFO_EOP_RD = 669 -PH_PERF_SEL_SC5_PA3_EOPG_WE = 670 -PH_PERF_SEL_SC5_PA3_DEALLOC_WE = 671 -PH_PERF_SEL_SC5_PA4_DATA_FIFO_RD = 672 -PH_PERF_SEL_SC5_PA4_DATA_FIFO_WE = 673 -PH_PERF_SEL_SC5_PA4_FIFO_EMPTY = 674 -PH_PERF_SEL_SC5_PA4_FIFO_FULL = 675 -PH_PERF_SEL_SC5_PA4_NULL_WE = 676 -PH_PERF_SEL_SC5_PA4_EVENT_WE = 677 -PH_PERF_SEL_SC5_PA4_FPOV_WE = 678 -PH_PERF_SEL_SC5_PA4_FPOP_WE = 679 -PH_PERF_SEL_SC5_PA4_EOP_WE = 680 -PH_PERF_SEL_SC5_PA4_DATA_FIFO_EOP_RD = 681 -PH_PERF_SEL_SC5_PA4_EOPG_WE = 682 -PH_PERF_SEL_SC5_PA4_DEALLOC_WE = 683 -PH_PERF_SEL_SC5_PA5_DATA_FIFO_RD = 684 -PH_PERF_SEL_SC5_PA5_DATA_FIFO_WE = 685 -PH_PERF_SEL_SC5_PA5_FIFO_EMPTY = 686 -PH_PERF_SEL_SC5_PA5_FIFO_FULL = 687 -PH_PERF_SEL_SC5_PA5_NULL_WE = 688 -PH_PERF_SEL_SC5_PA5_EVENT_WE = 689 -PH_PERF_SEL_SC5_PA5_FPOV_WE = 690 -PH_PERF_SEL_SC5_PA5_FPOP_WE = 691 -PH_PERF_SEL_SC5_PA5_EOP_WE = 692 -PH_PERF_SEL_SC5_PA5_DATA_FIFO_EOP_RD = 693 -PH_PERF_SEL_SC5_PA5_EOPG_WE = 694 -PH_PERF_SEL_SC5_PA5_DEALLOC_WE = 695 -PH_PERF_SEL_SC5_PA6_DATA_FIFO_RD = 696 -PH_PERF_SEL_SC5_PA6_DATA_FIFO_WE = 697 -PH_PERF_SEL_SC5_PA6_FIFO_EMPTY = 698 -PH_PERF_SEL_SC5_PA6_FIFO_FULL = 699 -PH_PERF_SEL_SC5_PA6_NULL_WE = 700 -PH_PERF_SEL_SC5_PA6_EVENT_WE = 701 -PH_PERF_SEL_SC5_PA6_FPOV_WE = 702 -PH_PERF_SEL_SC5_PA6_FPOP_WE = 703 -PH_PERF_SEL_SC5_PA6_EOP_WE = 704 -PH_PERF_SEL_SC5_PA6_DATA_FIFO_EOP_RD = 705 -PH_PERF_SEL_SC5_PA6_EOPG_WE = 706 -PH_PERF_SEL_SC5_PA6_DEALLOC_WE = 707 -PH_PERF_SEL_SC5_PA7_DATA_FIFO_RD = 708 -PH_PERF_SEL_SC5_PA7_DATA_FIFO_WE = 709 -PH_PERF_SEL_SC5_PA7_FIFO_EMPTY = 710 -PH_PERF_SEL_SC5_PA7_FIFO_FULL = 711 -PH_PERF_SEL_SC5_PA7_NULL_WE = 712 -PH_PERF_SEL_SC5_PA7_EVENT_WE = 713 -PH_PERF_SEL_SC5_PA7_FPOV_WE = 714 -PH_PERF_SEL_SC5_PA7_FPOP_WE = 715 -PH_PERF_SEL_SC5_PA7_EOP_WE = 716 -PH_PERF_SEL_SC5_PA7_DATA_FIFO_EOP_RD = 717 -PH_PERF_SEL_SC5_PA7_EOPG_WE = 718 -PH_PERF_SEL_SC5_PA7_DEALLOC_WE = 719 -PH_PERF_SEL_SC6_SRPS_WINDOW_VALID = 720 -PH_PERF_SEL_SC6_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 721 -PH_PERF_SEL_SC6_ARB_XFC_ONLY_PRIM_CYCLES = 722 -PH_PERF_SEL_SC6_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 723 -PH_PERF_SEL_SC6_ARB_STALLED_FROM_BELOW = 724 -PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE = 725 -PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 726 -PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 727 -PH_PERF_SEL_SC6_ARB_BUSY = 728 -PH_PERF_SEL_SC6_ARB_PA_BUSY_SOP = 729 -PH_PERF_SEL_SC6_ARB_EOP_POP_SYNC_POP = 730 -PH_PERF_SEL_SC6_ARB_EVENT_SYNC_POP = 731 -PH_PERF_SEL_SC6_PS_ENG_MULTICYCLE_BUBBLE = 732 -PH_PERF_SEL_SC6_EOP_SYNC_WINDOW = 733 -PH_PERF_SEL_SC6_BUSY_PROCESSING_MULTICYCLE_PRIM = 734 -PH_PERF_SEL_SC6_BUSY_CNT_NOT_ZERO = 735 -PH_PERF_SEL_SC6_SEND = 736 -PH_PERF_SEL_SC6_CREDIT_AT_ZERO_WITH_PENDING_SEND = 737 -PH_PERF_SEL_SC6_CREDIT_AT_MAX = 738 -PH_PERF_SEL_SC6_CREDIT_AT_MAX_NO_PENDING_SEND = 739 -PH_PERF_SEL_SC6_GFX_PIPE0_TO_1_TRANSITION = 740 -PH_PERF_SEL_SC6_GFX_PIPE1_TO_0_TRANSITION = 741 -PH_PERF_SEL_SC6_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 742 -PH_PERF_SEL_SC6_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 743 -PH_PERF_SEL_SC6_PA0_DATA_FIFO_RD = 744 -PH_PERF_SEL_SC6_PA0_DATA_FIFO_WE = 745 -PH_PERF_SEL_SC6_PA0_FIFO_EMPTY = 746 -PH_PERF_SEL_SC6_PA0_FIFO_FULL = 747 -PH_PERF_SEL_SC6_PA0_NULL_WE = 748 -PH_PERF_SEL_SC6_PA0_EVENT_WE = 749 -PH_PERF_SEL_SC6_PA0_FPOV_WE = 750 -PH_PERF_SEL_SC6_PA0_FPOP_WE = 751 -PH_PERF_SEL_SC6_PA0_EOP_WE = 752 -PH_PERF_SEL_SC6_PA0_DATA_FIFO_EOP_RD = 753 -PH_PERF_SEL_SC6_PA0_EOPG_WE = 754 -PH_PERF_SEL_SC6_PA0_DEALLOC_WE = 755 -PH_PERF_SEL_SC6_PA1_DATA_FIFO_RD = 756 -PH_PERF_SEL_SC6_PA1_DATA_FIFO_WE = 757 -PH_PERF_SEL_SC6_PA1_FIFO_EMPTY = 758 -PH_PERF_SEL_SC6_PA1_FIFO_FULL = 759 -PH_PERF_SEL_SC6_PA1_NULL_WE = 760 -PH_PERF_SEL_SC6_PA1_EVENT_WE = 761 -PH_PERF_SEL_SC6_PA1_FPOV_WE = 762 -PH_PERF_SEL_SC6_PA1_FPOP_WE = 763 -PH_PERF_SEL_SC6_PA1_EOP_WE = 764 -PH_PERF_SEL_SC6_PA1_DATA_FIFO_EOP_RD = 765 -PH_PERF_SEL_SC6_PA1_EOPG_WE = 766 -PH_PERF_SEL_SC6_PA1_DEALLOC_WE = 767 -PH_PERF_SEL_SC6_PA2_DATA_FIFO_RD = 768 -PH_PERF_SEL_SC6_PA2_DATA_FIFO_WE = 769 -PH_PERF_SEL_SC6_PA2_FIFO_EMPTY = 770 -PH_PERF_SEL_SC6_PA2_FIFO_FULL = 771 -PH_PERF_SEL_SC6_PA2_NULL_WE = 772 -PH_PERF_SEL_SC6_PA2_EVENT_WE = 773 -PH_PERF_SEL_SC6_PA2_FPOV_WE = 774 -PH_PERF_SEL_SC6_PA2_FPOP_WE = 775 -PH_PERF_SEL_SC6_PA2_EOP_WE = 776 -PH_PERF_SEL_SC6_PA2_DATA_FIFO_EOP_RD = 777 -PH_PERF_SEL_SC6_PA2_EOPG_WE = 778 -PH_PERF_SEL_SC6_PA2_DEALLOC_WE = 779 -PH_PERF_SEL_SC6_PA3_DATA_FIFO_RD = 780 -PH_PERF_SEL_SC6_PA3_DATA_FIFO_WE = 781 -PH_PERF_SEL_SC6_PA3_FIFO_EMPTY = 782 -PH_PERF_SEL_SC6_PA3_FIFO_FULL = 783 -PH_PERF_SEL_SC6_PA3_NULL_WE = 784 -PH_PERF_SEL_SC6_PA3_EVENT_WE = 785 -PH_PERF_SEL_SC6_PA3_FPOV_WE = 786 -PH_PERF_SEL_SC6_PA3_FPOP_WE = 787 -PH_PERF_SEL_SC6_PA3_EOP_WE = 788 -PH_PERF_SEL_SC6_PA3_DATA_FIFO_EOP_RD = 789 -PH_PERF_SEL_SC6_PA3_EOPG_WE = 790 -PH_PERF_SEL_SC6_PA3_DEALLOC_WE = 791 -PH_PERF_SEL_SC6_PA4_DATA_FIFO_RD = 792 -PH_PERF_SEL_SC6_PA4_DATA_FIFO_WE = 793 -PH_PERF_SEL_SC6_PA4_FIFO_EMPTY = 794 -PH_PERF_SEL_SC6_PA4_FIFO_FULL = 795 -PH_PERF_SEL_SC6_PA4_NULL_WE = 796 -PH_PERF_SEL_SC6_PA4_EVENT_WE = 797 -PH_PERF_SEL_SC6_PA4_FPOV_WE = 798 -PH_PERF_SEL_SC6_PA4_FPOP_WE = 799 -PH_PERF_SEL_SC6_PA4_EOP_WE = 800 -PH_PERF_SEL_SC6_PA4_DATA_FIFO_EOP_RD = 801 -PH_PERF_SEL_SC6_PA4_EOPG_WE = 802 -PH_PERF_SEL_SC6_PA4_DEALLOC_WE = 803 -PH_PERF_SEL_SC6_PA5_DATA_FIFO_RD = 804 -PH_PERF_SEL_SC6_PA5_DATA_FIFO_WE = 805 -PH_PERF_SEL_SC6_PA5_FIFO_EMPTY = 806 -PH_PERF_SEL_SC6_PA5_FIFO_FULL = 807 -PH_PERF_SEL_SC6_PA5_NULL_WE = 808 -PH_PERF_SEL_SC6_PA5_EVENT_WE = 809 -PH_PERF_SEL_SC6_PA5_FPOV_WE = 810 -PH_PERF_SEL_SC6_PA5_FPOP_WE = 811 -PH_PERF_SEL_SC6_PA5_EOP_WE = 812 -PH_PERF_SEL_SC6_PA5_DATA_FIFO_EOP_RD = 813 -PH_PERF_SEL_SC6_PA5_EOPG_WE = 814 -PH_PERF_SEL_SC6_PA5_DEALLOC_WE = 815 -PH_PERF_SEL_SC6_PA6_DATA_FIFO_RD = 816 -PH_PERF_SEL_SC6_PA6_DATA_FIFO_WE = 817 -PH_PERF_SEL_SC6_PA6_FIFO_EMPTY = 818 -PH_PERF_SEL_SC6_PA6_FIFO_FULL = 819 -PH_PERF_SEL_SC6_PA6_NULL_WE = 820 -PH_PERF_SEL_SC6_PA6_EVENT_WE = 821 -PH_PERF_SEL_SC6_PA6_FPOV_WE = 822 -PH_PERF_SEL_SC6_PA6_FPOP_WE = 823 -PH_PERF_SEL_SC6_PA6_EOP_WE = 824 -PH_PERF_SEL_SC6_PA6_DATA_FIFO_EOP_RD = 825 -PH_PERF_SEL_SC6_PA6_EOPG_WE = 826 -PH_PERF_SEL_SC6_PA6_DEALLOC_WE = 827 -PH_PERF_SEL_SC6_PA7_DATA_FIFO_RD = 828 -PH_PERF_SEL_SC6_PA7_DATA_FIFO_WE = 829 -PH_PERF_SEL_SC6_PA7_FIFO_EMPTY = 830 -PH_PERF_SEL_SC6_PA7_FIFO_FULL = 831 -PH_PERF_SEL_SC6_PA7_NULL_WE = 832 -PH_PERF_SEL_SC6_PA7_EVENT_WE = 833 -PH_PERF_SEL_SC6_PA7_FPOV_WE = 834 -PH_PERF_SEL_SC6_PA7_FPOP_WE = 835 -PH_PERF_SEL_SC6_PA7_EOP_WE = 836 -PH_PERF_SEL_SC6_PA7_DATA_FIFO_EOP_RD = 837 -PH_PERF_SEL_SC6_PA7_EOPG_WE = 838 -PH_PERF_SEL_SC6_PA7_DEALLOC_WE = 839 -PH_PERF_SEL_SC7_SRPS_WINDOW_VALID = 840 -PH_PERF_SEL_SC7_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 841 -PH_PERF_SEL_SC7_ARB_XFC_ONLY_PRIM_CYCLES = 842 -PH_PERF_SEL_SC7_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 843 -PH_PERF_SEL_SC7_ARB_STALLED_FROM_BELOW = 844 -PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE = 845 -PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 846 -PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 847 -PH_PERF_SEL_SC7_ARB_BUSY = 848 -PH_PERF_SEL_SC7_ARB_PA_BUSY_SOP = 849 -PH_PERF_SEL_SC7_ARB_EOP_POP_SYNC_POP = 850 -PH_PERF_SEL_SC7_ARB_EVENT_SYNC_POP = 851 -PH_PERF_SEL_SC7_PS_ENG_MULTICYCLE_BUBBLE = 852 -PH_PERF_SEL_SC7_EOP_SYNC_WINDOW = 853 -PH_PERF_SEL_SC7_BUSY_PROCESSING_MULTICYCLE_PRIM = 854 -PH_PERF_SEL_SC7_BUSY_CNT_NOT_ZERO = 855 -PH_PERF_SEL_SC7_SEND = 856 -PH_PERF_SEL_SC7_CREDIT_AT_ZERO_WITH_PENDING_SEND = 857 -PH_PERF_SEL_SC7_CREDIT_AT_MAX = 858 -PH_PERF_SEL_SC7_CREDIT_AT_MAX_NO_PENDING_SEND = 859 -PH_PERF_SEL_SC7_GFX_PIPE0_TO_1_TRANSITION = 860 -PH_PERF_SEL_SC7_GFX_PIPE1_TO_0_TRANSITION = 861 -PH_PERF_SEL_SC7_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 862 -PH_PERF_SEL_SC7_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 863 -PH_PERF_SEL_SC7_PA0_DATA_FIFO_RD = 864 -PH_PERF_SEL_SC7_PA0_DATA_FIFO_WE = 865 -PH_PERF_SEL_SC7_PA0_FIFO_EMPTY = 866 -PH_PERF_SEL_SC7_PA0_FIFO_FULL = 867 -PH_PERF_SEL_SC7_PA0_NULL_WE = 868 -PH_PERF_SEL_SC7_PA0_EVENT_WE = 869 -PH_PERF_SEL_SC7_PA0_FPOV_WE = 870 -PH_PERF_SEL_SC7_PA0_FPOP_WE = 871 -PH_PERF_SEL_SC7_PA0_EOP_WE = 872 -PH_PERF_SEL_SC7_PA0_DATA_FIFO_EOP_RD = 873 -PH_PERF_SEL_SC7_PA0_EOPG_WE = 874 -PH_PERF_SEL_SC7_PA0_DEALLOC_WE = 875 -PH_PERF_SEL_SC7_PA1_DATA_FIFO_RD = 876 -PH_PERF_SEL_SC7_PA1_DATA_FIFO_WE = 877 -PH_PERF_SEL_SC7_PA1_FIFO_EMPTY = 878 -PH_PERF_SEL_SC7_PA1_FIFO_FULL = 879 -PH_PERF_SEL_SC7_PA1_NULL_WE = 880 -PH_PERF_SEL_SC7_PA1_EVENT_WE = 881 -PH_PERF_SEL_SC7_PA1_FPOV_WE = 882 -PH_PERF_SEL_SC7_PA1_FPOP_WE = 883 -PH_PERF_SEL_SC7_PA1_EOP_WE = 884 -PH_PERF_SEL_SC7_PA1_DATA_FIFO_EOP_RD = 885 -PH_PERF_SEL_SC7_PA1_EOPG_WE = 886 -PH_PERF_SEL_SC7_PA1_DEALLOC_WE = 887 -PH_PERF_SEL_SC7_PA2_DATA_FIFO_RD = 888 -PH_PERF_SEL_SC7_PA2_DATA_FIFO_WE = 889 -PH_PERF_SEL_SC7_PA2_FIFO_EMPTY = 890 -PH_PERF_SEL_SC7_PA2_FIFO_FULL = 891 -PH_PERF_SEL_SC7_PA2_NULL_WE = 892 -PH_PERF_SEL_SC7_PA2_EVENT_WE = 893 -PH_PERF_SEL_SC7_PA2_FPOV_WE = 894 -PH_PERF_SEL_SC7_PA2_FPOP_WE = 895 -PH_PERF_SEL_SC7_PA2_EOP_WE = 896 -PH_PERF_SEL_SC7_PA2_DATA_FIFO_EOP_RD = 897 -PH_PERF_SEL_SC7_PA2_EOPG_WE = 898 -PH_PERF_SEL_SC7_PA2_DEALLOC_WE = 899 -PH_PERF_SEL_SC7_PA3_DATA_FIFO_RD = 900 -PH_PERF_SEL_SC7_PA3_DATA_FIFO_WE = 901 -PH_PERF_SEL_SC7_PA3_FIFO_EMPTY = 902 -PH_PERF_SEL_SC7_PA3_FIFO_FULL = 903 -PH_PERF_SEL_SC7_PA3_NULL_WE = 904 -PH_PERF_SEL_SC7_PA3_EVENT_WE = 905 -PH_PERF_SEL_SC7_PA3_FPOV_WE = 906 -PH_PERF_SEL_SC7_PA3_FPOP_WE = 907 -PH_PERF_SEL_SC7_PA3_EOP_WE = 908 -PH_PERF_SEL_SC7_PA3_DATA_FIFO_EOP_RD = 909 -PH_PERF_SEL_SC7_PA3_EOPG_WE = 910 -PH_PERF_SEL_SC7_PA3_DEALLOC_WE = 911 -PH_PERF_SEL_SC7_PA4_DATA_FIFO_RD = 912 -PH_PERF_SEL_SC7_PA4_DATA_FIFO_WE = 913 -PH_PERF_SEL_SC7_PA4_FIFO_EMPTY = 914 -PH_PERF_SEL_SC7_PA4_FIFO_FULL = 915 -PH_PERF_SEL_SC7_PA4_NULL_WE = 916 -PH_PERF_SEL_SC7_PA4_EVENT_WE = 917 -PH_PERF_SEL_SC7_PA4_FPOV_WE = 918 -PH_PERF_SEL_SC7_PA4_FPOP_WE = 919 -PH_PERF_SEL_SC7_PA4_EOP_WE = 920 -PH_PERF_SEL_SC7_PA4_DATA_FIFO_EOP_RD = 921 -PH_PERF_SEL_SC7_PA4_EOPG_WE = 922 -PH_PERF_SEL_SC7_PA4_DEALLOC_WE = 923 -PH_PERF_SEL_SC7_PA5_DATA_FIFO_RD = 924 -PH_PERF_SEL_SC7_PA5_DATA_FIFO_WE = 925 -PH_PERF_SEL_SC7_PA5_FIFO_EMPTY = 926 -PH_PERF_SEL_SC7_PA5_FIFO_FULL = 927 -PH_PERF_SEL_SC7_PA5_NULL_WE = 928 -PH_PERF_SEL_SC7_PA5_EVENT_WE = 929 -PH_PERF_SEL_SC7_PA5_FPOV_WE = 930 -PH_PERF_SEL_SC7_PA5_FPOP_WE = 931 -PH_PERF_SEL_SC7_PA5_EOP_WE = 932 -PH_PERF_SEL_SC7_PA5_DATA_FIFO_EOP_RD = 933 -PH_PERF_SEL_SC7_PA5_EOPG_WE = 934 -PH_PERF_SEL_SC7_PA5_DEALLOC_WE = 935 -PH_PERF_SEL_SC7_PA6_DATA_FIFO_RD = 936 -PH_PERF_SEL_SC7_PA6_DATA_FIFO_WE = 937 -PH_PERF_SEL_SC7_PA6_FIFO_EMPTY = 938 -PH_PERF_SEL_SC7_PA6_FIFO_FULL = 939 -PH_PERF_SEL_SC7_PA6_NULL_WE = 940 -PH_PERF_SEL_SC7_PA6_EVENT_WE = 941 -PH_PERF_SEL_SC7_PA6_FPOV_WE = 942 -PH_PERF_SEL_SC7_PA6_FPOP_WE = 943 -PH_PERF_SEL_SC7_PA6_EOP_WE = 944 -PH_PERF_SEL_SC7_PA6_DATA_FIFO_EOP_RD = 945 -PH_PERF_SEL_SC7_PA6_EOPG_WE = 946 -PH_PERF_SEL_SC7_PA6_DEALLOC_WE = 947 -PH_PERF_SEL_SC7_PA7_DATA_FIFO_RD = 948 -PH_PERF_SEL_SC7_PA7_DATA_FIFO_WE = 949 -PH_PERF_SEL_SC7_PA7_FIFO_EMPTY = 950 -PH_PERF_SEL_SC7_PA7_FIFO_FULL = 951 -PH_PERF_SEL_SC7_PA7_NULL_WE = 952 -PH_PERF_SEL_SC7_PA7_EVENT_WE = 953 -PH_PERF_SEL_SC7_PA7_FPOV_WE = 954 -PH_PERF_SEL_SC7_PA7_FPOP_WE = 955 -PH_PERF_SEL_SC7_PA7_EOP_WE = 956 -PH_PERF_SEL_SC7_PA7_DATA_FIFO_EOP_RD = 957 -PH_PERF_SEL_SC7_PA7_EOPG_WE = 958 -PH_PERF_SEL_SC7_PA7_DEALLOC_WE = 959 -PH_PERF_SEL_1_SC_ARB_STALLED_FROM_BELOW = 960 -PH_PERF_SEL_2_SC_ARB_STALLED_FROM_BELOW = 961 -PH_PERF_SEL_3_SC_ARB_STALLED_FROM_BELOW = 962 -PH_PERF_SEL_4_SC_ARB_STALLED_FROM_BELOW = 963 -PH_PERF_SEL_5_SC_ARB_STALLED_FROM_BELOW = 964 -PH_PERF_SEL_6_SC_ARB_STALLED_FROM_BELOW = 965 -PH_PERF_SEL_7_SC_ARB_STALLED_FROM_BELOW = 966 -PH_PERF_SEL_8_SC_ARB_STALLED_FROM_BELOW = 967 -PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE = 968 -PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE = 969 -PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE = 970 -PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE = 971 -PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE = 972 -PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE = 973 -PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE = 974 -PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE = 975 -PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 976 -PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 977 -PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 978 -PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 979 -PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 980 -PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 981 -PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 982 -PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 983 -PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 984 -PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 985 -PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 986 -PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 987 -PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 988 -PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 989 -PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 990 -PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 991 -PH_PERF_SC0_FIFO_STATUS_0 = 992 -PH_PERF_SC0_FIFO_STATUS_1 = 993 -PH_PERF_SC0_FIFO_STATUS_2 = 994 -PH_PERF_SC0_FIFO_STATUS_3 = 995 -PH_PERF_SC1_FIFO_STATUS_0 = 996 -PH_PERF_SC1_FIFO_STATUS_1 = 997 -PH_PERF_SC1_FIFO_STATUS_2 = 998 -PH_PERF_SC1_FIFO_STATUS_3 = 999 -PH_PERF_SC2_FIFO_STATUS_0 = 1000 -PH_PERF_SC2_FIFO_STATUS_1 = 1001 -PH_PERF_SC2_FIFO_STATUS_2 = 1002 -PH_PERF_SC2_FIFO_STATUS_3 = 1003 -PH_PERF_SC3_FIFO_STATUS_0 = 1004 -PH_PERF_SC3_FIFO_STATUS_1 = 1005 -PH_PERF_SC3_FIFO_STATUS_2 = 1006 -PH_PERF_SC3_FIFO_STATUS_3 = 1007 -PH_PERF_SC4_FIFO_STATUS_0 = 1008 -PH_PERF_SC4_FIFO_STATUS_1 = 1009 -PH_PERF_SC4_FIFO_STATUS_2 = 1010 -PH_PERF_SC4_FIFO_STATUS_3 = 1011 -PH_PERF_SC5_FIFO_STATUS_0 = 1012 -PH_PERF_SC5_FIFO_STATUS_1 = 1013 -PH_PERF_SC5_FIFO_STATUS_2 = 1014 -PH_PERF_SC5_FIFO_STATUS_3 = 1015 -PH_PERF_SC6_FIFO_STATUS_0 = 1016 -PH_PERF_SC6_FIFO_STATUS_1 = 1017 -PH_PERF_SC6_FIFO_STATUS_2 = 1018 -PH_PERF_SC6_FIFO_STATUS_3 = 1019 -PH_PERF_SC7_FIFO_STATUS_0 = 1020 -PH_PERF_SC7_FIFO_STATUS_1 = 1021 -PH_PERF_SC7_FIFO_STATUS_2 = 1022 -PH_PERF_SC7_FIFO_STATUS_3 = 1023 -PH_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PhSPIstatusMode' -PhSPIstatusMode__enumvalues = { - 0: 'PH_SPI_MODE_LARGEST_PA_PH_FIFO_COUNT', - 1: 'PH_SPI_MODE_ARBITER_SELECTED_PA_PH_FIFO_COUNT', - 2: 'PH_SPI_MODE_DISABLED', -} -PH_SPI_MODE_LARGEST_PA_PH_FIFO_COUNT = 0 -PH_SPI_MODE_ARBITER_SELECTED_PA_PH_FIFO_COUNT = 1 -PH_SPI_MODE_DISABLED = 2 -PhSPIstatusMode = ctypes.c_uint32 # enum - -# values for enumeration 'BinEventCntl' -BinEventCntl__enumvalues = { - 0: 'BINNER_BREAK_BATCH', - 1: 'BINNER_PIPELINE', - 2: 'BINNER_DROP', - 3: 'BINNER_PIPELINE_BREAK', -} -BINNER_BREAK_BATCH = 0 -BINNER_PIPELINE = 1 -BINNER_DROP = 2 -BINNER_PIPELINE_BREAK = 3 -BinEventCntl = ctypes.c_uint32 # enum - -# values for enumeration 'BinMapMode' -BinMapMode__enumvalues = { - 0: 'BIN_MAP_MODE_NONE', - 1: 'BIN_MAP_MODE_RTA_INDEX', - 2: 'BIN_MAP_MODE_POPS', -} -BIN_MAP_MODE_NONE = 0 -BIN_MAP_MODE_RTA_INDEX = 1 -BIN_MAP_MODE_POPS = 2 -BinMapMode = ctypes.c_uint32 # enum - -# values for enumeration 'BinSizeExtend' -BinSizeExtend__enumvalues = { - 0: 'BIN_SIZE_32_PIXELS', - 1: 'BIN_SIZE_64_PIXELS', - 2: 'BIN_SIZE_128_PIXELS', - 3: 'BIN_SIZE_256_PIXELS', - 4: 'BIN_SIZE_512_PIXELS', -} -BIN_SIZE_32_PIXELS = 0 -BIN_SIZE_64_PIXELS = 1 -BIN_SIZE_128_PIXELS = 2 -BIN_SIZE_256_PIXELS = 3 -BIN_SIZE_512_PIXELS = 4 -BinSizeExtend = ctypes.c_uint32 # enum - -# values for enumeration 'BinningMode' -BinningMode__enumvalues = { - 0: 'BINNING_ALLOWED', - 1: 'FORCE_BINNING_ON', - 2: 'BINNING_ONE_PRIM_PER_BATCH', - 3: 'BINNING_DISABLED', -} -BINNING_ALLOWED = 0 -FORCE_BINNING_ON = 1 -BINNING_ONE_PRIM_PER_BATCH = 2 -BINNING_DISABLED = 3 -BinningMode = ctypes.c_uint32 # enum - -# values for enumeration 'PkrMap' -PkrMap__enumvalues = { - 0: 'RASTER_CONFIG_PKR_MAP_0', - 1: 'RASTER_CONFIG_PKR_MAP_1', - 2: 'RASTER_CONFIG_PKR_MAP_2', - 3: 'RASTER_CONFIG_PKR_MAP_3', -} -RASTER_CONFIG_PKR_MAP_0 = 0 -RASTER_CONFIG_PKR_MAP_1 = 1 -RASTER_CONFIG_PKR_MAP_2 = 2 -RASTER_CONFIG_PKR_MAP_3 = 3 -PkrMap = ctypes.c_uint32 # enum - -# values for enumeration 'PkrXsel' -PkrXsel__enumvalues = { - 0: 'RASTER_CONFIG_PKR_XSEL_0', - 1: 'RASTER_CONFIG_PKR_XSEL_1', - 2: 'RASTER_CONFIG_PKR_XSEL_2', - 3: 'RASTER_CONFIG_PKR_XSEL_3', -} -RASTER_CONFIG_PKR_XSEL_0 = 0 -RASTER_CONFIG_PKR_XSEL_1 = 1 -RASTER_CONFIG_PKR_XSEL_2 = 2 -RASTER_CONFIG_PKR_XSEL_3 = 3 -PkrXsel = ctypes.c_uint32 # enum - -# values for enumeration 'PkrXsel2' -PkrXsel2__enumvalues = { - 0: 'RASTER_CONFIG_PKR_XSEL2_0', - 1: 'RASTER_CONFIG_PKR_XSEL2_1', - 2: 'RASTER_CONFIG_PKR_XSEL2_2', - 3: 'RASTER_CONFIG_PKR_XSEL2_3', -} -RASTER_CONFIG_PKR_XSEL2_0 = 0 -RASTER_CONFIG_PKR_XSEL2_1 = 1 -RASTER_CONFIG_PKR_XSEL2_2 = 2 -RASTER_CONFIG_PKR_XSEL2_3 = 3 -PkrXsel2 = ctypes.c_uint32 # enum - -# values for enumeration 'PkrYsel' -PkrYsel__enumvalues = { - 0: 'RASTER_CONFIG_PKR_YSEL_0', - 1: 'RASTER_CONFIG_PKR_YSEL_1', - 2: 'RASTER_CONFIG_PKR_YSEL_2', - 3: 'RASTER_CONFIG_PKR_YSEL_3', -} -RASTER_CONFIG_PKR_YSEL_0 = 0 -RASTER_CONFIG_PKR_YSEL_1 = 1 -RASTER_CONFIG_PKR_YSEL_2 = 2 -RASTER_CONFIG_PKR_YSEL_3 = 3 -PkrYsel = ctypes.c_uint32 # enum - -# values for enumeration 'RbMap' -RbMap__enumvalues = { - 0: 'RASTER_CONFIG_RB_MAP_0', - 1: 'RASTER_CONFIG_RB_MAP_1', - 2: 'RASTER_CONFIG_RB_MAP_2', - 3: 'RASTER_CONFIG_RB_MAP_3', -} -RASTER_CONFIG_RB_MAP_0 = 0 -RASTER_CONFIG_RB_MAP_1 = 1 -RASTER_CONFIG_RB_MAP_2 = 2 -RASTER_CONFIG_RB_MAP_3 = 3 -RbMap = ctypes.c_uint32 # enum - -# values for enumeration 'RbXsel' -RbXsel__enumvalues = { - 0: 'RASTER_CONFIG_RB_XSEL_0', - 1: 'RASTER_CONFIG_RB_XSEL_1', -} -RASTER_CONFIG_RB_XSEL_0 = 0 -RASTER_CONFIG_RB_XSEL_1 = 1 -RbXsel = ctypes.c_uint32 # enum - -# values for enumeration 'RbXsel2' -RbXsel2__enumvalues = { - 0: 'RASTER_CONFIG_RB_XSEL2_0', - 1: 'RASTER_CONFIG_RB_XSEL2_1', - 2: 'RASTER_CONFIG_RB_XSEL2_2', - 3: 'RASTER_CONFIG_RB_XSEL2_3', -} -RASTER_CONFIG_RB_XSEL2_0 = 0 -RASTER_CONFIG_RB_XSEL2_1 = 1 -RASTER_CONFIG_RB_XSEL2_2 = 2 -RASTER_CONFIG_RB_XSEL2_3 = 3 -RbXsel2 = ctypes.c_uint32 # enum - -# values for enumeration 'RbYsel' -RbYsel__enumvalues = { - 0: 'RASTER_CONFIG_RB_YSEL_0', - 1: 'RASTER_CONFIG_RB_YSEL_1', -} -RASTER_CONFIG_RB_YSEL_0 = 0 -RASTER_CONFIG_RB_YSEL_1 = 1 -RbYsel = ctypes.c_uint32 # enum - -# values for enumeration 'SC_PERFCNT_SEL' -SC_PERFCNT_SEL__enumvalues = { - 0: 'SC_SRPS_WINDOW_VALID', - 1: 'SC_PSSW_WINDOW_VALID', - 2: 'SC_TPQZ_WINDOW_VALID', - 3: 'SC_QZQP_WINDOW_VALID', - 4: 'SC_TRPK_WINDOW_VALID', - 5: 'SC_SRPS_WINDOW_VALID_BUSY', - 6: 'SC_PSSW_WINDOW_VALID_BUSY', - 7: 'SC_TPQZ_WINDOW_VALID_BUSY', - 8: 'SC_QZQP_WINDOW_VALID_BUSY', - 9: 'SC_TRPK_WINDOW_VALID_BUSY', - 10: 'SC_STARVED_BY_PA', - 11: 'SC_STALLED_BY_PRIMFIFO', - 12: 'SC_STALLED_BY_DB_TILE', - 13: 'SC_STARVED_BY_DB_TILE', - 14: 'SC_STALLED_BY_TILEORDERFIFO', - 15: 'SC_STALLED_BY_TILEFIFO', - 16: 'SC_STALLED_BY_DB_QUAD', - 17: 'SC_STARVED_BY_DB_QUAD', - 18: 'SC_STALLED_BY_QUADFIFO', - 19: 'SC_STALLED_BY_BCI', - 20: 'SC_STALLED_BY_SPI', - 21: 'SC_SCISSOR_DISCARD', - 22: 'SC_BB_DISCARD', - 23: 'SC_SUPERTILE_COUNT', - 24: 'SC_SUPERTILE_PER_PRIM_H0', - 25: 'SC_SUPERTILE_PER_PRIM_H1', - 26: 'SC_SUPERTILE_PER_PRIM_H2', - 27: 'SC_SUPERTILE_PER_PRIM_H3', - 28: 'SC_SUPERTILE_PER_PRIM_H4', - 29: 'SC_SUPERTILE_PER_PRIM_H5', - 30: 'SC_SUPERTILE_PER_PRIM_H6', - 31: 'SC_SUPERTILE_PER_PRIM_H7', - 32: 'SC_SUPERTILE_PER_PRIM_H8', - 33: 'SC_SUPERTILE_PER_PRIM_H9', - 34: 'SC_SUPERTILE_PER_PRIM_H10', - 35: 'SC_SUPERTILE_PER_PRIM_H11', - 36: 'SC_SUPERTILE_PER_PRIM_H12', - 37: 'SC_SUPERTILE_PER_PRIM_H13', - 38: 'SC_SUPERTILE_PER_PRIM_H14', - 39: 'SC_SUPERTILE_PER_PRIM_H15', - 40: 'SC_SUPERTILE_PER_PRIM_H16', - 41: 'SC_TILE_PER_PRIM_H0', - 42: 'SC_TILE_PER_PRIM_H1', - 43: 'SC_TILE_PER_PRIM_H2', - 44: 'SC_TILE_PER_PRIM_H3', - 45: 'SC_TILE_PER_PRIM_H4', - 46: 'SC_TILE_PER_PRIM_H5', - 47: 'SC_TILE_PER_PRIM_H6', - 48: 'SC_TILE_PER_PRIM_H7', - 49: 'SC_TILE_PER_PRIM_H8', - 50: 'SC_TILE_PER_PRIM_H9', - 51: 'SC_TILE_PER_PRIM_H10', - 52: 'SC_TILE_PER_PRIM_H11', - 53: 'SC_TILE_PER_PRIM_H12', - 54: 'SC_TILE_PER_PRIM_H13', - 55: 'SC_TILE_PER_PRIM_H14', - 56: 'SC_TILE_PER_PRIM_H15', - 57: 'SC_TILE_PER_PRIM_H16', - 58: 'SC_TILE_PER_SUPERTILE_H0', - 59: 'SC_TILE_PER_SUPERTILE_H1', - 60: 'SC_TILE_PER_SUPERTILE_H2', - 61: 'SC_TILE_PER_SUPERTILE_H3', - 62: 'SC_TILE_PER_SUPERTILE_H4', - 63: 'SC_TILE_PER_SUPERTILE_H5', - 64: 'SC_TILE_PER_SUPERTILE_H6', - 65: 'SC_TILE_PER_SUPERTILE_H7', - 66: 'SC_TILE_PER_SUPERTILE_H8', - 67: 'SC_TILE_PER_SUPERTILE_H9', - 68: 'SC_TILE_PER_SUPERTILE_H10', - 69: 'SC_TILE_PER_SUPERTILE_H11', - 70: 'SC_TILE_PER_SUPERTILE_H12', - 71: 'SC_TILE_PER_SUPERTILE_H13', - 72: 'SC_TILE_PER_SUPERTILE_H14', - 73: 'SC_TILE_PER_SUPERTILE_H15', - 74: 'SC_TILE_PER_SUPERTILE_H16', - 75: 'SC_TILE_PICKED_H1', - 76: 'SC_PERF_SEL_RESERVED_76', - 77: 'SC_PERF_SEL_RESERVED_77', - 78: 'SC_PERF_SEL_RESERVED_78', - 79: 'SC_QZ0_TILE_COUNT', - 80: 'SC_PERF_SEL_RESERVED_80', - 81: 'SC_PERF_SEL_RESERVED_81', - 82: 'SC_PERF_SEL_RESERVED_82', - 83: 'SC_QZ0_TILE_COVERED_COUNT', - 84: 'SC_PERF_SEL_RESERVED_84', - 85: 'SC_PERF_SEL_RESERVED_85', - 86: 'SC_PERF_SEL_RESERVED_86', - 87: 'SC_QZ0_TILE_NOT_COVERED_COUNT', - 88: 'SC_PERF_SEL_RESERVED_88', - 89: 'SC_PERF_SEL_RESERVED_89', - 90: 'SC_PERF_SEL_RESERVED_90', - 91: 'SC_QZ0_QUAD_PER_TILE_H0', - 92: 'SC_QZ0_QUAD_PER_TILE_H1', - 93: 'SC_QZ0_QUAD_PER_TILE_H2', - 94: 'SC_QZ0_QUAD_PER_TILE_H3', - 95: 'SC_QZ0_QUAD_PER_TILE_H4', - 96: 'SC_QZ0_QUAD_PER_TILE_H5', - 97: 'SC_QZ0_QUAD_PER_TILE_H6', - 98: 'SC_QZ0_QUAD_PER_TILE_H7', - 99: 'SC_QZ0_QUAD_PER_TILE_H8', - 100: 'SC_QZ0_QUAD_PER_TILE_H9', - 101: 'SC_QZ0_QUAD_PER_TILE_H10', - 102: 'SC_QZ0_QUAD_PER_TILE_H11', - 103: 'SC_QZ0_QUAD_PER_TILE_H12', - 104: 'SC_QZ0_QUAD_PER_TILE_H13', - 105: 'SC_QZ0_QUAD_PER_TILE_H14', - 106: 'SC_QZ0_QUAD_PER_TILE_H15', - 107: 'SC_QZ0_QUAD_PER_TILE_H16', - 108: 'SC_PERF_SEL_RESERVED_108', - 109: 'SC_PERF_SEL_RESERVED_109', - 110: 'SC_PERF_SEL_RESERVED_110', - 111: 'SC_PERF_SEL_RESERVED_111', - 112: 'SC_PERF_SEL_RESERVED_112', - 113: 'SC_PERF_SEL_RESERVED_113', - 114: 'SC_PERF_SEL_RESERVED_114', - 115: 'SC_PERF_SEL_RESERVED_115', - 116: 'SC_PERF_SEL_RESERVED_116', - 117: 'SC_PERF_SEL_RESERVED_117', - 118: 'SC_PERF_SEL_RESERVED_118', - 119: 'SC_PERF_SEL_RESERVED_119', - 120: 'SC_PERF_SEL_RESERVED_120', - 121: 'SC_PERF_SEL_RESERVED_121', - 122: 'SC_PERF_SEL_RESERVED_122', - 123: 'SC_PERF_SEL_RESERVED_123', - 124: 'SC_PERF_SEL_RESERVED_124', - 125: 'SC_PERF_SEL_RESERVED_125', - 126: 'SC_PERF_SEL_RESERVED_126', - 127: 'SC_PERF_SEL_RESERVED_127', - 128: 'SC_PERF_SEL_RESERVED_128', - 129: 'SC_PERF_SEL_RESERVED_129', - 130: 'SC_PERF_SEL_RESERVED_130', - 131: 'SC_PERF_SEL_RESERVED_131', - 132: 'SC_PERF_SEL_RESERVED_132', - 133: 'SC_PERF_SEL_RESERVED_133', - 134: 'SC_PERF_SEL_RESERVED_134', - 135: 'SC_PERF_SEL_RESERVED_135', - 136: 'SC_PERF_SEL_RESERVED_136', - 137: 'SC_PERF_SEL_RESERVED_137', - 138: 'SC_PERF_SEL_RESERVED_138', - 139: 'SC_PERF_SEL_RESERVED_139', - 140: 'SC_PERF_SEL_RESERVED_140', - 141: 'SC_PERF_SEL_RESERVED_141', - 142: 'SC_PERF_SEL_RESERVED_142', - 143: 'SC_PERF_SEL_RESERVED_143', - 144: 'SC_PERF_SEL_RESERVED_144', - 145: 'SC_PERF_SEL_RESERVED_145', - 146: 'SC_PERF_SEL_RESERVED_146', - 147: 'SC_PERF_SEL_RESERVED_147', - 148: 'SC_PERF_SEL_RESERVED_148', - 149: 'SC_PERF_SEL_RESERVED_149', - 150: 'SC_PERF_SEL_RESERVED_150', - 151: 'SC_PERF_SEL_RESERVED_151', - 152: 'SC_PERF_SEL_RESERVED_152', - 153: 'SC_PERF_SEL_RESERVED_153', - 154: 'SC_PERF_SEL_RESERVED_154', - 155: 'SC_PERF_SEL_RESERVED_155', - 156: 'SC_PERF_SEL_RESERVED_156', - 157: 'SC_PERF_SEL_RESERVED_157', - 158: 'SC_PERF_SEL_RESERVED_158', - 159: 'SC_QZ0_QUAD_COUNT', - 160: 'SC_PERF_SEL_RESERVED_160', - 161: 'SC_PERF_SEL_RESERVED_161', - 162: 'SC_PERF_SEL_RESERVED_162', - 163: 'SC_P0_HIZ_TILE_COUNT', - 164: 'SC_PERF_SEL_RESERVED_164', - 165: 'SC_PERF_SEL_RESERVED_165', - 166: 'SC_PERF_SEL_RESERVED_166', - 167: 'SC_P0_HIZ_QUAD_PER_TILE_H0', - 168: 'SC_P0_HIZ_QUAD_PER_TILE_H1', - 169: 'SC_P0_HIZ_QUAD_PER_TILE_H2', - 170: 'SC_P0_HIZ_QUAD_PER_TILE_H3', - 171: 'SC_P0_HIZ_QUAD_PER_TILE_H4', - 172: 'SC_P0_HIZ_QUAD_PER_TILE_H5', - 173: 'SC_P0_HIZ_QUAD_PER_TILE_H6', - 174: 'SC_P0_HIZ_QUAD_PER_TILE_H7', - 175: 'SC_P0_HIZ_QUAD_PER_TILE_H8', - 176: 'SC_P0_HIZ_QUAD_PER_TILE_H9', - 177: 'SC_P0_HIZ_QUAD_PER_TILE_H10', - 178: 'SC_P0_HIZ_QUAD_PER_TILE_H11', - 179: 'SC_P0_HIZ_QUAD_PER_TILE_H12', - 180: 'SC_P0_HIZ_QUAD_PER_TILE_H13', - 181: 'SC_P0_HIZ_QUAD_PER_TILE_H14', - 182: 'SC_P0_HIZ_QUAD_PER_TILE_H15', - 183: 'SC_P0_HIZ_QUAD_PER_TILE_H16', - 184: 'SC_PERF_SEL_RESERVED_184', - 185: 'SC_PERF_SEL_RESERVED_185', - 186: 'SC_PERF_SEL_RESERVED_186', - 187: 'SC_PERF_SEL_RESERVED_187', - 188: 'SC_PERF_SEL_RESERVED_188', - 189: 'SC_PERF_SEL_RESERVED_189', - 190: 'SC_PERF_SEL_RESERVED_190', - 191: 'SC_PERF_SEL_RESERVED_191', - 192: 'SC_PERF_SEL_RESERVED_192', - 193: 'SC_PERF_SEL_RESERVED_193', - 194: 'SC_PERF_SEL_RESERVED_194', - 195: 'SC_PERF_SEL_RESERVED_195', - 196: 'SC_PERF_SEL_RESERVED_196', - 197: 'SC_PERF_SEL_RESERVED_197', - 198: 'SC_PERF_SEL_RESERVED_198', - 199: 'SC_PERF_SEL_RESERVED_199', - 200: 'SC_PERF_SEL_RESERVED_200', - 201: 'SC_PERF_SEL_RESERVED_201', - 202: 'SC_PERF_SEL_RESERVED_202', - 203: 'SC_PERF_SEL_RESERVED_203', - 204: 'SC_PERF_SEL_RESERVED_204', - 205: 'SC_PERF_SEL_RESERVED_205', - 206: 'SC_PERF_SEL_RESERVED_206', - 207: 'SC_PERF_SEL_RESERVED_207', - 208: 'SC_PERF_SEL_RESERVED_208', - 209: 'SC_PERF_SEL_RESERVED_209', - 210: 'SC_PERF_SEL_RESERVED_210', - 211: 'SC_PERF_SEL_RESERVED_211', - 212: 'SC_PERF_SEL_RESERVED_212', - 213: 'SC_PERF_SEL_RESERVED_213', - 214: 'SC_PERF_SEL_RESERVED_214', - 215: 'SC_PERF_SEL_RESERVED_215', - 216: 'SC_PERF_SEL_RESERVED_216', - 217: 'SC_PERF_SEL_RESERVED_217', - 218: 'SC_PERF_SEL_RESERVED_218', - 219: 'SC_PERF_SEL_RESERVED_219', - 220: 'SC_PERF_SEL_RESERVED_220', - 221: 'SC_PERF_SEL_RESERVED_221', - 222: 'SC_PERF_SEL_RESERVED_222', - 223: 'SC_PERF_SEL_RESERVED_223', - 224: 'SC_PERF_SEL_RESERVED_224', - 225: 'SC_PERF_SEL_RESERVED_225', - 226: 'SC_PERF_SEL_RESERVED_226', - 227: 'SC_PERF_SEL_RESERVED_227', - 228: 'SC_PERF_SEL_RESERVED_228', - 229: 'SC_PERF_SEL_RESERVED_229', - 230: 'SC_PERF_SEL_RESERVED_230', - 231: 'SC_PERF_SEL_RESERVED_231', - 232: 'SC_PERF_SEL_RESERVED_232', - 233: 'SC_PERF_SEL_RESERVED_233', - 234: 'SC_PERF_SEL_RESERVED_234', - 235: 'SC_P0_HIZ_QUAD_COUNT', - 236: 'SC_PERF_SEL_RESERVED_236', - 237: 'SC_PERF_SEL_RESERVED_237', - 238: 'SC_PERF_SEL_RESERVED_238', - 239: 'SC_P0_DETAIL_QUAD_COUNT', - 240: 'SC_PERF_SEL_RESERVED_240', - 241: 'SC_PERF_SEL_RESERVED_241', - 242: 'SC_PERF_SEL_RESERVED_242', - 243: 'SC_P0_DETAIL_QUAD_WITH_1_PIX', - 244: 'SC_P0_DETAIL_QUAD_WITH_2_PIX', - 245: 'SC_P0_DETAIL_QUAD_WITH_3_PIX', - 246: 'SC_P0_DETAIL_QUAD_WITH_4_PIX', - 247: 'SC_PERF_SEL_RESERVED_247', - 248: 'SC_PERF_SEL_RESERVED_248', - 249: 'SC_PERF_SEL_RESERVED_249', - 250: 'SC_PERF_SEL_RESERVED_250', - 251: 'SC_PERF_SEL_RESERVED_251', - 252: 'SC_PERF_SEL_RESERVED_252', - 253: 'SC_PERF_SEL_RESERVED_253', - 254: 'SC_PERF_SEL_RESERVED_254', - 255: 'SC_PERF_SEL_RESERVED_255', - 256: 'SC_PERF_SEL_RESERVED_256', - 257: 'SC_PERF_SEL_RESERVED_257', - 258: 'SC_PERF_SEL_RESERVED_258', - 259: 'SC_EARLYZ_QUAD_COUNT', - 260: 'SC_EARLYZ_QUAD_WITH_1_PIX', - 261: 'SC_EARLYZ_QUAD_WITH_2_PIX', - 262: 'SC_EARLYZ_QUAD_WITH_3_PIX', - 263: 'SC_EARLYZ_QUAD_WITH_4_PIX', - 264: 'SC_PKR_QUAD_PER_ROW_H1', - 265: 'SC_PKR_QUAD_PER_ROW_H2', - 266: 'SC_PKR_4X2_QUAD_SPLIT', - 267: 'SC_PKR_4X2_FILL_QUAD', - 268: 'SC_PKR_END_OF_VECTOR', - 269: 'SC_PKR_CONTROL_XFER', - 270: 'SC_PKR_DBHANG_FORCE_EOV', - 271: 'SC_REG_SCLK_BUSY', - 272: 'SC_GRP0_DYN_SCLK_BUSY', - 273: 'SC_GRP1_DYN_SCLK_BUSY', - 274: 'SC_GRP2_DYN_SCLK_BUSY', - 275: 'SC_GRP3_DYN_SCLK_BUSY', - 276: 'SC_GRP4_DYN_SCLK_BUSY', - 277: 'SC_PA0_SC_DATA_FIFO_RD', - 278: 'SC_PA0_SC_DATA_FIFO_WE', - 279: 'SC_PERF_SEL_RESERVED_279', - 280: 'SC_PERF_SEL_RESERVED_280', - 281: 'SC_PS_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 282: 'SC_PS_ARB_XFC_ONLY_PRIM_CYCLES', - 283: 'SC_PS_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 284: 'SC_PS_ARB_STALLED_FROM_BELOW', - 285: 'SC_PS_ARB_STARVED_FROM_ABOVE', - 286: 'SC_PS_ARB_SC_BUSY', - 287: 'SC_PS_ARB_PA_SC_BUSY', - 288: 'SC_PERF_SEL_RESERVED_288', - 289: 'SC_PERF_SEL_RESERVED_289', - 290: 'SC_PERF_SEL_RESERVED_290', - 291: 'SC_PERF_SEL_RESERVED_291', - 292: 'SC_PA_SC_DEALLOC_2_0_WE', - 293: 'SC_PERF_SEL_RESERVED_293', - 294: 'SC_PERF_SEL_RESERVED_294', - 295: 'SC_PERF_SEL_RESERVED_295', - 296: 'SC_PERF_SEL_RESERVED_296', - 297: 'SC_PERF_SEL_RESERVED_297', - 298: 'SC_PERF_SEL_RESERVED_298', - 299: 'SC_PERF_SEL_RESERVED_299', - 300: 'SC_PA0_SC_EOP_WE', - 301: 'SC_PERF_SEL_RESERVED_301', - 302: 'SC_PA0_SC_EVENT_WE', - 303: 'SC_PERF_SEL_RESERVED_303', - 304: 'SC_PERF_SEL_RESERVED_304', - 305: 'SC_PERF_SEL_RESERVED_305', - 306: 'SC_PERF_SEL_RESERVED_306', - 307: 'SC_PERF_SEL_RESERVED_307', - 308: 'SC_PERF_SEL_RESERVED_308', - 309: 'SC_PERF_SEL_RESERVED_309', - 310: 'SC_PERF_SEL_RESERVED_310', - 311: 'SC_PERF_SEL_RESERVED_311', - 312: 'SC_PERF_SEL_RESERVED_312', - 313: 'SC_PERF_SEL_RESERVED_313', - 314: 'SC_PERF_SEL_RESERVED_314', - 315: 'SC_PERF_SEL_RESERVED_315', - 316: 'SC_PERF_SEL_RESERVED_316', - 317: 'SC_PERF_SEL_RESERVED_317', - 318: 'SC_PA_SC_FPOV_WE', - 319: 'SC_PERF_SEL_RESERVED_319', - 320: 'SC_PERF_SEL_RESERVED_320', - 321: 'SC_PERF_SEL_RESERVED_321', - 322: 'SC_PERF_SEL_RESERVED_322', - 323: 'SC_PERF_SEL_RESERVED_323', - 324: 'SC_PERF_SEL_RESERVED_324', - 325: 'SC_PERF_SEL_RESERVED_325', - 326: 'SC_SPI_DEALLOC_4_0', - 327: 'SC_SPI_DEALLOC_7_5', - 328: 'SC_PERF_SEL_RESERVED_328', - 329: 'SC_PERF_SEL_RESERVED_329', - 330: 'SC_PERF_SEL_RESERVED_330', - 331: 'SC_PERF_SEL_RESERVED_331', - 332: 'SC_PERF_SEL_RESERVED_332', - 333: 'SC_PERF_SEL_RESERVED_333', - 334: 'SC_PERF_SEL_RESERVED_334', - 335: 'SC_PERF_SEL_RESERVED_335', - 336: 'SC_PERF_SEL_RESERVED_336', - 337: 'SC_PERF_SEL_RESERVED_337', - 338: 'SC_SPI_FPOV_4_0', - 339: 'SC_SPI_FPOV_7_5', - 340: 'SC_PERF_SEL_RESERVED_340', - 341: 'SC_PERF_SEL_RESERVED_341', - 342: 'SC_SPI_EVENT', - 343: 'SC_PS_TS_EVENT_FIFO_PUSH', - 344: 'SC_PS_TS_EVENT_FIFO_POP', - 345: 'SC_PS_CTX_DONE_FIFO_PUSH', - 346: 'SC_PS_CTX_DONE_FIFO_POP', - 347: 'SC_PERF_SEL_RESERVED_347', - 348: 'SC_PERF_SEL_RESERVED_348', - 349: 'SC_PA0_SC_NULL_WE', - 350: 'SC_PA0_SC_NULL_DEALLOC_WE', - 351: 'SC_PERF_SEL_RESERVED_351', - 352: 'SC_PA0_SC_DATA_FIFO_EOP_RD', - 353: 'SC_PA0_SC_DEALLOC_2_0_RD', - 354: 'SC_PERF_SEL_RESERVED_354', - 355: 'SC_PERF_SEL_RESERVED_355', - 356: 'SC_PERF_SEL_RESERVED_356', - 357: 'SC_PERF_SEL_RESERVED_357', - 358: 'SC_PERF_SEL_RESERVED_358', - 359: 'SC_PERF_SEL_RESERVED_359', - 360: 'SC_PERF_SEL_RESERVED_360', - 361: 'SC_PERF_SEL_RESERVED_361', - 362: 'SC_PERF_SEL_RESERVED_362', - 363: 'SC_PERF_SEL_RESERVED_363', - 364: 'SC_PERF_SEL_RESERVED_364', - 365: 'SC_PERF_SEL_RESERVED_365', - 366: 'SC_PERF_SEL_RESERVED_366', - 367: 'SC_PERF_SEL_RESERVED_367', - 368: 'SC_PERF_SEL_RESERVED_368', - 369: 'SC_PERF_SEL_RESERVED_369', - 370: 'SC_PERF_SEL_RESERVED_370', - 371: 'SC_PERF_SEL_RESERVED_371', - 372: 'SC_PERF_SEL_RESERVED_372', - 373: 'SC_PS_PA0_SC_FIFO_EMPTY', - 374: 'SC_PS_PA0_SC_FIFO_FULL', - 375: 'SC_PERF_SEL_RESERVED_375', - 376: 'SC_PERF_SEL_RESERVED_376', - 377: 'SC_PERF_SEL_RESERVED_377', - 378: 'SC_PERF_SEL_RESERVED_378', - 379: 'SC_PERF_SEL_RESERVED_379', - 380: 'SC_PERF_SEL_RESERVED_380', - 381: 'SC_PERF_SEL_RESERVED_381', - 382: 'SC_PERF_SEL_RESERVED_382', - 383: 'SC_PERF_SEL_RESERVED_383', - 384: 'SC_PERF_SEL_RESERVED_384', - 385: 'SC_PERF_SEL_RESERVED_385', - 386: 'SC_BUSY_CNT_NOT_ZERO', - 387: 'SC_BM_BUSY', - 388: 'SC_BACKEND_BUSY', - 389: 'SC_SCF_SCB_INTERFACE_BUSY', - 390: 'SC_SCB_BUSY', - 391: 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_NOT_EMPTY', - 392: 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_FULL', - 393: 'SC_PBB_BIN_HIST_NUM_PRIMS', - 394: 'SC_PBB_BATCH_HIST_NUM_PRIMS', - 395: 'SC_PBB_BIN_HIST_NUM_CONTEXTS', - 396: 'SC_PBB_BATCH_HIST_NUM_CONTEXTS', - 397: 'SC_PBB_BIN_HIST_NUM_PERSISTENT_STATES', - 398: 'SC_PBB_BATCH_HIST_NUM_PERSISTENT_STATES', - 399: 'SC_PBB_BATCH_HIST_NUM_PS_WAVE_BREAKS', - 400: 'SC_PBB_BATCH_HIST_NUM_TRIV_REJECTED_PRIMS', - 401: 'SC_PBB_BATCH_HIST_NUM_ROWS_PER_PRIM', - 402: 'SC_PBB_BATCH_HIST_NUM_COLUMNS_PER_ROW', - 403: 'SC_PBB_BUSY', - 404: 'SC_PBB_BUSY_AND_NO_SENDS', - 405: 'SC_PBB_STALLS_PA_DUE_TO_NO_TILES', - 406: 'SC_PBB_NUM_BINS', - 407: 'SC_PBB_END_OF_BIN', - 408: 'SC_PBB_END_OF_BATCH', - 409: 'SC_PBB_PRIMBIN_PROCESSED', - 410: 'SC_PBB_PRIM_ADDED_TO_BATCH', - 411: 'SC_PBB_NONBINNED_PRIM', - 412: 'SC_PBB_TOTAL_REAL_PRIMS_OUT_OF_PBB', - 413: 'SC_PBB_TOTAL_NULL_PRIMS_OUT_OF_PBB', - 414: 'SC_PBB_IDLE_CLK_DUE_TO_ROW_TO_COLUMN_TRANSITION', - 415: 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_ROW', - 416: 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_COLUMN', - 417: 'SC_PBB_BATCH_BREAK_DUE_TO_PERSISTENT_STATE', - 418: 'SC_PBB_BATCH_BREAK_DUE_TO_CONTEXT_STATE', - 419: 'SC_PBB_BATCH_BREAK_DUE_TO_PRIM', - 420: 'SC_PBB_BATCH_BREAK_DUE_TO_PC_STORAGE', - 421: 'SC_PBB_BATCH_BREAK_DUE_TO_EVENT', - 422: 'SC_PBB_BATCH_BREAK_DUE_TO_FPOV_LIMIT', - 423: 'SC_PERF_SEL_RESERVED_423', - 424: 'SC_PERF_SEL_RESERVED_424', - 425: 'SC_PERF_SEL_RESERVED_425', - 426: 'SC_PERF_SEL_RESERVED_426', - 427: 'SC_PERF_SEL_RESERVED_427', - 428: 'SC_PERF_SEL_RESERVED_428', - 429: 'SC_PERF_SEL_RESERVED_429', - 430: 'SC_PERF_SEL_RESERVED_430', - 431: 'SC_PERF_SEL_RESERVED_431', - 432: 'SC_PERF_SEL_RESERVED_432', - 433: 'SC_PERF_SEL_RESERVED_433', - 434: 'SC_PERF_SEL_RESERVED_434', - 435: 'SC_PERF_SEL_RESERVED_435', - 436: 'SC_PERF_SEL_RESERVED_436', - 437: 'SC_GRP5_DYN_SCLK_BUSY', - 438: 'SC_GRP6_DYN_SCLK_BUSY', - 439: 'SC_GRP7_DYN_SCLK_BUSY', - 440: 'SC_GRP8_DYN_SCLK_BUSY', - 441: 'SC_GRP9_DYN_SCLK_BUSY', - 442: 'SC_PS_TO_BE_SCLK_GATE_STALL', - 443: 'SC_PA_TO_PBB_SCLK_GATE_STALL_STALL', - 444: 'SC_PK_BUSY', - 445: 'SC_PK_MAX_DEALLOC_FORCE_EOV', - 446: 'SC_PK_DEALLOC_WAVE_BREAK', - 447: 'SC_SPI_SEND', - 448: 'SC_SPI_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 449: 'SC_SPI_CREDIT_AT_MAX', - 450: 'SC_SPI_CREDIT_AT_MAX_NO_PENDING_SEND', - 451: 'SC_BCI_SEND', - 452: 'SC_BCI_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 453: 'SC_BCI_CREDIT_AT_MAX', - 454: 'SC_BCI_CREDIT_AT_MAX_NO_PENDING_SEND', - 455: 'SC_SPIBC_FULL_FREEZE', - 456: 'SC_PW_BM_PASS_EMPTY_PRIM', - 457: 'SC_SUPERTILE_COUNT_EXCLUDE_PASS_EMPTY_PRIM', - 458: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H0', - 459: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H1', - 460: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H2', - 461: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H3', - 462: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H4', - 463: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H5', - 464: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H6', - 465: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H7', - 466: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H8', - 467: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H9', - 468: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H10', - 469: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H11', - 470: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H12', - 471: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H13', - 472: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H14', - 473: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H15', - 474: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H16', - 475: 'SC_DB0_TILE_INTERFACE_BUSY', - 476: 'SC_DB0_TILE_INTERFACE_SEND', - 477: 'SC_DB0_TILE_INTERFACE_SEND_EVENT', - 478: 'SC_PERF_SEL_RESERVED_478', - 479: 'SC_PERF_SEL_RESERVED_479', - 480: 'SC_DB0_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 481: 'SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX', - 482: 'SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND', - 483: 'SC_PERF_SEL_RESERVED_483', - 484: 'SC_PERF_SEL_RESERVED_484', - 485: 'SC_PERF_SEL_RESERVED_485', - 486: 'SC_PERF_SEL_RESERVED_486', - 487: 'SC_PERF_SEL_RESERVED_487', - 488: 'SC_PERF_SEL_RESERVED_488', - 489: 'SC_PERF_SEL_RESERVED_489', - 490: 'SC_PERF_SEL_RESERVED_490', - 491: 'SC_BACKEND_PRIM_FIFO_FULL', - 492: 'SC_PBB_BATCH_BREAK_DUE_TO_TIMEOUT_COUNTER', - 493: 'SC_PBB_BATCH_BREAK_DUE_TO_NONBINNED_BATCH', - 494: 'SC_PBB_BATCH_BREAK_DUE_TO_DEBUG_DATA_PER_DRAW_DISPATCH', - 495: 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_PERSISTENT', - 496: 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_CONTEXT', - 497: 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_FPOV', - 498: 'SC_PBB_BATCH_BREAK_DUE_TO_NEW_SC_MODE', - 499: 'SC_PBB_BATCH_BREAK_DUE_TO_BINNING_MODE_CHANGE', - 500: 'SC_PBB_BATCH_BREAK_DUE_TO_PIPELINE_EVENT_COUNT', - 501: 'SC_PBB_BATCH_BREAK_DUE_TO_PIPE_RESET', - 502: 'SC_PBB_BATCH_BREAK_DUE_TO_GFX_PIPE_CHANGE', - 503: 'SC_STALLED_BY_DB0_TILEFIFO', - 504: 'SC_DB0_QUAD_INTF_SEND', - 505: 'SC_DB0_QUAD_INTF_BUSY', - 506: 'SC_DB0_QUAD_INTF_STALLED_BY_DB', - 507: 'SC_DB0_QUAD_INTF_CREDIT_AT_MAX', - 508: 'SC_DB0_QUAD_INTF_IDLE', - 509: 'SC_PERF_SEL_RESERVED_509', - 510: 'SC_PERF_SEL_RESERVED_510', - 511: 'SC_PERF_SEL_RESERVED_511', - 512: 'SC_PERF_SEL_RESERVED_512', - 513: 'SC_PERF_SEL_RESERVED_513', - 514: 'SC_PERF_SEL_RESERVED_514', - 515: 'SC_PKR_WAVE_BREAK_OUTSIDE_REGION', - 516: 'SC_PKR_WAVE_BREAK_FULL_TILE', - 517: 'SC_RESERVED_60', - 518: 'SC_PBB_EMPTY_INPUT_CYCLE_WHEN_BATCH_OPEN', - 519: 'SC_PBB_BATCH_BREAK_DUE_TO_NULL_PRIM_BREAK_BATCH_LIMIT', - 520: 'SC_DB0_WE_STALLED_BY_RSLT_FIFO_FULL', - 521: 'SC_DB0_WE_TILE_MASK_RETURN_FIFO_FULL_WITH_WE_RSLT_FIFO_STALL', - 522: 'SC_DB0_TILE_MASK_FIFO_FULL', - 523: 'SC_PERF_SEL_RESERVED_523', - 524: 'SC_PERF_SEL_RESERVED_524', - 525: 'SC_PERF_SEL_RESERVED_525', - 526: 'SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_PFF_PW_FULL', - 527: 'SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_ZFF_PW_FULL', - 528: 'SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_PBB_TO_PSE_FIFO_FULL', - 529: 'SC_PS_PM_PFF_PW_FULL', - 530: 'SC_PS_PM_ZFF_PW_FULL', - 531: 'SC_PS_PM_PBB_TO_PSE_FIFO_FULL', - 532: 'SC_PERF_SEL_RESERVED_532', - 533: 'SC_PERF_SEL_RESERVED_533', - 534: 'SC_PERF_SEL_RESERVED_534', - 535: 'SC_PK_PM_4X2_SPLIT_WAVE_BRK_1H', - 536: 'SC_PK_PM_PKR_FILL_4X2_WAVE_BRK_1H', - 537: 'SC_PK_PM_SPLIT_OR_FILL_4X2_WAVE_BRK_1H', - 538: 'SC_PK_PM_END_OF_VECTOR_WAVE_BRK_1H', - 539: 'SC_PERF_SEL_RESERVED_539', - 540: 'SC_PK_PM_CTL_ONLY_CMD_WAVE_BRK_1H', - 541: 'SC_PK_PM_AVOID_DEALLOC_ADD_WAVE_BRK_1H', - 542: 'SC_PK_PM_FD_CONFLICT_WAVE_BRK_1H', - 543: 'SC_PK_PM_FORCE_PARTIAL_FOR_DEALLOC_WAVE_BRK_1H', - 544: 'SC_PK_PM_AE_CONFLICT_WAVE_BRK_1H', - 545: 'SC_PK_PM_EOP_OR_LAD_WAVE_BRK_1H', - 546: 'SC_PK_PM_FULL_TILE_WAVE_BRK_1H', - 547: 'SC_PK_PM_OREO_CONFLICT_QUAD_FORCE_EOV_WAVE_BRK_1H', - 548: 'SC_PK_PM_MAX_DEALLOC_FORCE_EOV_WAVE_BRK_1H', - 549: 'SC_PK_PM_WAVE_BREAK_OUTSIDE_REGION_WAVE_BRK_1H', - 550: 'SC_PK_PM_MAX_CLK_CNT_FORCE_EOV_WAVE_BRK_1H', - 551: 'SC_PK_PM_MAX_REZ_CNT_FORCE_EOV_WAVE_BRK_1H', - 552: 'SC_PK_PM_VRS_RATE_X_00_Y_00_QUAD', - 553: 'SC_PK_PM_VRS_RATE_X_00_Y_01_QUAD', - 554: 'SC_PK_PM_VRS_RATE_X_00_Y_10_QUAD', - 555: 'SC_PK_PM_VRS_RATE_X_00_Y_11_QUAD', - 556: 'SC_PK_PM_VRS_RATE_X_01_Y_00_QUAD', - 557: 'SC_PK_PM_VRS_RATE_X_01_Y_01_QUAD', - 558: 'SC_PK_PM_VRS_RATE_X_01_Y_10_QUAD', - 559: 'SC_PK_PM_VRS_RATE_X_01_Y_11_QUAD', - 560: 'SC_PK_PM_VRS_RATE_X_10_Y_00_QUAD', - 561: 'SC_PK_PM_VRS_RATE_X_10_Y_01_QUAD', - 562: 'SC_PK_PM_VRS_RATE_X_10_Y_10_QUAD', - 563: 'SC_PK_PM_VRS_RATE_X_10_Y_11_QUAD', - 564: 'SC_PK_PM_VRS_RATE_X_11_Y_00_QUAD', - 565: 'SC_PK_PM_VRS_RATE_X_11_Y_01_QUAD', - 566: 'SC_PK_PM_VRS_RATE_X_11_Y_10_QUAD', - 567: 'SC_PK_PM_VRS_RATE_X_11_Y_11_QUAD', - 568: 'SC_PERF_SEL_RESERVED_568', - 569: 'SC_PBB_RESERVED', - 570: 'SC_BM_BE0_STALLED', - 571: 'SC_BM_BE1_STALLED', - 572: 'SC_BM_BE2_STALLED', - 573: 'SC_BM_BE3_STALLED', - 574: 'SC_BM_MULTI_ACCUM_1_BE_STALLED', - 575: 'SC_BM_MULTI_ACCUM_2_BE_STALLED', - 576: 'SC_BM_MULTI_ACCUM_3_BE_STALLED', - 577: 'SC_BM_MULTI_ACCUM_4_BE_STALLED', - 578: 'SC_PBB_READ_PH0', - 579: 'SC_PBB_READ_DEALLOC_4_0', - 580: 'SC_PBB_READ_DEALLOC_7_5', - 581: 'SC_PBB_READ_FPOG_4_0', - 582: 'SC_PBB_READ_FPOG_7_5', - 583: 'SC_VRC_SECTOR_HIT', - 584: 'SC_VRC_TAG_MISS', - 585: 'SC_VRC_SECTOR_MISS', - 586: 'SC_VRC_LRU_EVICT_STALL', - 587: 'SC_VRC_LRU_EVICT_SCHEDULED_EVICT_STALL', - 588: 'SC_VRC_LRU_EVICT_PENDING_EVICT_STALL', - 589: 'SC_VRC_REEVICTION_STALL', - 590: 'SC_VRC_EVICT_NONZERO_INFLIGHT_STALL', - 591: 'SC_VRC_REPLACE_SCHEDULED_EVICT_STALL', - 592: 'SC_VRC_REPLACE_PENDING_EVICT_STALL', - 593: 'SC_VRC_REPLACE_FLUSH_IN_PROGRESS_STALL', - 594: 'SC_VRC_INFLIGHT_COUNTER_MAXIMUM_STALL', - 595: 'SC_VRC_READ_OUTPUT_STALL', - 596: 'SC_VRC_WRITE_OUTPUT_STALL', - 597: 'SC_VRC_ACK_OUTPUT_STALL', - 598: 'SC_VRC_FLUSH_EVICT_STALL', - 599: 'SC_VRC_FLUSH_REFLUSH_STALL', - 600: 'SC_VRC_FLUSH_FIP_HIT_STALL', - 601: 'SC_VRC_FLUSH_WRREQ_DRAIN_STALL', - 602: 'SC_VRC_FLUSH_DONE_STALL', - 603: 'SC_VRC_FLUSH_STALL', - 604: 'SC_VRC_STALL', - 605: 'SC_VRC_FLUSH', - 606: 'SC_VRC_SECTORS_FLUSHED', - 607: 'SC_VRC_DIRTY_SECTORS_FLUSHED', - 608: 'SC_VRC_TAGS_FLUSHED', - 609: 'SC_VRC_HPF_REQ', - 610: 'SC_VRC_HPF_EVENT', - 611: 'SC_VRC_HPF_STALLED', - 612: 'SC_VRC_PROBE_ACK_TILES', - 613: 'SC_VRC_GL1X_RD_REQ', - 614: 'SC_VRC_GL1X_WR_REQ', - 615: 'SC_VRC_GL1X_SRC_XFR', - 616: 'SC_VRC_GL1X_RD_RET', - 617: 'SC_VRC_GL1X_WR_ACK', - 618: 'SC_VRC_GL1X_RD_XNACK', - 619: 'SC_VRC_GL1X_WR_XNACK', - 620: 'SC_VRC_GL1X_REQ_STALLED', - 621: 'SC_VRC_GL1X_SRC_STALLED', - 622: 'SC_VRC_RATEMEM_WE_CNT', - 623: 'SC_VRC_RATEMEM_RE_CNT', - 624: 'SC_VRC_HINTMEM_WE_CNT', - 625: 'SC_VRC_HINTMEM_RE_CNT', - 626: 'SC_VRC_BUSY', - 627: 'SC_GL1X_BUSY', - 628: 'SC_BE_VRS_RD_REQ', - 629: 'SC_BE_VRS_RD_REQ_STALLED', - 630: 'SC_BE_VRS_RD_REQ_HIT', - 631: 'SC_BE_VRS_RD_RET', - 632: 'SC_BE_VRS_RD_RET_STALLED', - 633: 'SC_BE_VRS_FB_RET', - 634: 'SC_BE_VRS_FB_RET_STALLED', - 635: 'SC_BE_VRS_FB_RET_HIT', - 636: 'SC_VRS_BE_BUSY', - 637: 'SC_PWS_CS_EVENTS_PWS_ENABLE', - 638: 'SC_PWS_PS_EVENTS_PWS_ENABLE', - 639: 'SC_PWS_TS_EVENTS_PWS_ENABLE', - 640: 'SC_PWS_STALLED', - 641: 'SC_PWS_P0_CS_SYNC_COMPLETE', - 642: 'SC_PWS_P0_PS_SYNC_COMPLETE', - 643: 'SC_PWS_P0_TS_SYNC_COMPLETE', - 644: 'SC_PWS_P1_CS_SYNC_COMPLETE', - 645: 'SC_PWS_P1_PS_SYNC_COMPLETE', - 646: 'SC_PWS_P1_TS_SYNC_COMPLETE', - 647: 'SC_PKR_PC_NO_CREDITS', - 648: 'SC_PKR_PC_STALLED', - 649: 'SC_PKR_PC_SEND', - 650: 'SC_PKR_PC_SEND_PRIM_VALID_1', - 651: 'SC_PKR_PC_SEND_PRIM_VALID_0', - 652: 'SC_PKR_PC_SEND_TRUE_PRIM', - 653: 'SC_PKR_PC_SEND_EOV', - 654: 'SC_PKR_PC_SEND_EVENT', - 655: 'SC_PKR_DB_WAVE_STALL', - 656: 'SC_PKR_PSINVOC_SEDC_FIFO_FULL', - 657: 'SC_PKR_OREO_STALLED_BY_NO_VALID_WAIVE_ID', - 658: 'SC_PKR_SPI_QUAD_COUNT', - 659: 'SC_PKR_DB_OREO_WAVE_QUAD_COUNT', - 660: 'SC_PKR_BCI_QUAD_NEW_PRIM', - 661: 'SC_SPI_WAVE_STALLED_BY_SPI', -} -SC_SRPS_WINDOW_VALID = 0 -SC_PSSW_WINDOW_VALID = 1 -SC_TPQZ_WINDOW_VALID = 2 -SC_QZQP_WINDOW_VALID = 3 -SC_TRPK_WINDOW_VALID = 4 -SC_SRPS_WINDOW_VALID_BUSY = 5 -SC_PSSW_WINDOW_VALID_BUSY = 6 -SC_TPQZ_WINDOW_VALID_BUSY = 7 -SC_QZQP_WINDOW_VALID_BUSY = 8 -SC_TRPK_WINDOW_VALID_BUSY = 9 -SC_STARVED_BY_PA = 10 -SC_STALLED_BY_PRIMFIFO = 11 -SC_STALLED_BY_DB_TILE = 12 -SC_STARVED_BY_DB_TILE = 13 -SC_STALLED_BY_TILEORDERFIFO = 14 -SC_STALLED_BY_TILEFIFO = 15 -SC_STALLED_BY_DB_QUAD = 16 -SC_STARVED_BY_DB_QUAD = 17 -SC_STALLED_BY_QUADFIFO = 18 -SC_STALLED_BY_BCI = 19 -SC_STALLED_BY_SPI = 20 -SC_SCISSOR_DISCARD = 21 -SC_BB_DISCARD = 22 -SC_SUPERTILE_COUNT = 23 -SC_SUPERTILE_PER_PRIM_H0 = 24 -SC_SUPERTILE_PER_PRIM_H1 = 25 -SC_SUPERTILE_PER_PRIM_H2 = 26 -SC_SUPERTILE_PER_PRIM_H3 = 27 -SC_SUPERTILE_PER_PRIM_H4 = 28 -SC_SUPERTILE_PER_PRIM_H5 = 29 -SC_SUPERTILE_PER_PRIM_H6 = 30 -SC_SUPERTILE_PER_PRIM_H7 = 31 -SC_SUPERTILE_PER_PRIM_H8 = 32 -SC_SUPERTILE_PER_PRIM_H9 = 33 -SC_SUPERTILE_PER_PRIM_H10 = 34 -SC_SUPERTILE_PER_PRIM_H11 = 35 -SC_SUPERTILE_PER_PRIM_H12 = 36 -SC_SUPERTILE_PER_PRIM_H13 = 37 -SC_SUPERTILE_PER_PRIM_H14 = 38 -SC_SUPERTILE_PER_PRIM_H15 = 39 -SC_SUPERTILE_PER_PRIM_H16 = 40 -SC_TILE_PER_PRIM_H0 = 41 -SC_TILE_PER_PRIM_H1 = 42 -SC_TILE_PER_PRIM_H2 = 43 -SC_TILE_PER_PRIM_H3 = 44 -SC_TILE_PER_PRIM_H4 = 45 -SC_TILE_PER_PRIM_H5 = 46 -SC_TILE_PER_PRIM_H6 = 47 -SC_TILE_PER_PRIM_H7 = 48 -SC_TILE_PER_PRIM_H8 = 49 -SC_TILE_PER_PRIM_H9 = 50 -SC_TILE_PER_PRIM_H10 = 51 -SC_TILE_PER_PRIM_H11 = 52 -SC_TILE_PER_PRIM_H12 = 53 -SC_TILE_PER_PRIM_H13 = 54 -SC_TILE_PER_PRIM_H14 = 55 -SC_TILE_PER_PRIM_H15 = 56 -SC_TILE_PER_PRIM_H16 = 57 -SC_TILE_PER_SUPERTILE_H0 = 58 -SC_TILE_PER_SUPERTILE_H1 = 59 -SC_TILE_PER_SUPERTILE_H2 = 60 -SC_TILE_PER_SUPERTILE_H3 = 61 -SC_TILE_PER_SUPERTILE_H4 = 62 -SC_TILE_PER_SUPERTILE_H5 = 63 -SC_TILE_PER_SUPERTILE_H6 = 64 -SC_TILE_PER_SUPERTILE_H7 = 65 -SC_TILE_PER_SUPERTILE_H8 = 66 -SC_TILE_PER_SUPERTILE_H9 = 67 -SC_TILE_PER_SUPERTILE_H10 = 68 -SC_TILE_PER_SUPERTILE_H11 = 69 -SC_TILE_PER_SUPERTILE_H12 = 70 -SC_TILE_PER_SUPERTILE_H13 = 71 -SC_TILE_PER_SUPERTILE_H14 = 72 -SC_TILE_PER_SUPERTILE_H15 = 73 -SC_TILE_PER_SUPERTILE_H16 = 74 -SC_TILE_PICKED_H1 = 75 -SC_PERF_SEL_RESERVED_76 = 76 -SC_PERF_SEL_RESERVED_77 = 77 -SC_PERF_SEL_RESERVED_78 = 78 -SC_QZ0_TILE_COUNT = 79 -SC_PERF_SEL_RESERVED_80 = 80 -SC_PERF_SEL_RESERVED_81 = 81 -SC_PERF_SEL_RESERVED_82 = 82 -SC_QZ0_TILE_COVERED_COUNT = 83 -SC_PERF_SEL_RESERVED_84 = 84 -SC_PERF_SEL_RESERVED_85 = 85 -SC_PERF_SEL_RESERVED_86 = 86 -SC_QZ0_TILE_NOT_COVERED_COUNT = 87 -SC_PERF_SEL_RESERVED_88 = 88 -SC_PERF_SEL_RESERVED_89 = 89 -SC_PERF_SEL_RESERVED_90 = 90 -SC_QZ0_QUAD_PER_TILE_H0 = 91 -SC_QZ0_QUAD_PER_TILE_H1 = 92 -SC_QZ0_QUAD_PER_TILE_H2 = 93 -SC_QZ0_QUAD_PER_TILE_H3 = 94 -SC_QZ0_QUAD_PER_TILE_H4 = 95 -SC_QZ0_QUAD_PER_TILE_H5 = 96 -SC_QZ0_QUAD_PER_TILE_H6 = 97 -SC_QZ0_QUAD_PER_TILE_H7 = 98 -SC_QZ0_QUAD_PER_TILE_H8 = 99 -SC_QZ0_QUAD_PER_TILE_H9 = 100 -SC_QZ0_QUAD_PER_TILE_H10 = 101 -SC_QZ0_QUAD_PER_TILE_H11 = 102 -SC_QZ0_QUAD_PER_TILE_H12 = 103 -SC_QZ0_QUAD_PER_TILE_H13 = 104 -SC_QZ0_QUAD_PER_TILE_H14 = 105 -SC_QZ0_QUAD_PER_TILE_H15 = 106 -SC_QZ0_QUAD_PER_TILE_H16 = 107 -SC_PERF_SEL_RESERVED_108 = 108 -SC_PERF_SEL_RESERVED_109 = 109 -SC_PERF_SEL_RESERVED_110 = 110 -SC_PERF_SEL_RESERVED_111 = 111 -SC_PERF_SEL_RESERVED_112 = 112 -SC_PERF_SEL_RESERVED_113 = 113 -SC_PERF_SEL_RESERVED_114 = 114 -SC_PERF_SEL_RESERVED_115 = 115 -SC_PERF_SEL_RESERVED_116 = 116 -SC_PERF_SEL_RESERVED_117 = 117 -SC_PERF_SEL_RESERVED_118 = 118 -SC_PERF_SEL_RESERVED_119 = 119 -SC_PERF_SEL_RESERVED_120 = 120 -SC_PERF_SEL_RESERVED_121 = 121 -SC_PERF_SEL_RESERVED_122 = 122 -SC_PERF_SEL_RESERVED_123 = 123 -SC_PERF_SEL_RESERVED_124 = 124 -SC_PERF_SEL_RESERVED_125 = 125 -SC_PERF_SEL_RESERVED_126 = 126 -SC_PERF_SEL_RESERVED_127 = 127 -SC_PERF_SEL_RESERVED_128 = 128 -SC_PERF_SEL_RESERVED_129 = 129 -SC_PERF_SEL_RESERVED_130 = 130 -SC_PERF_SEL_RESERVED_131 = 131 -SC_PERF_SEL_RESERVED_132 = 132 -SC_PERF_SEL_RESERVED_133 = 133 -SC_PERF_SEL_RESERVED_134 = 134 -SC_PERF_SEL_RESERVED_135 = 135 -SC_PERF_SEL_RESERVED_136 = 136 -SC_PERF_SEL_RESERVED_137 = 137 -SC_PERF_SEL_RESERVED_138 = 138 -SC_PERF_SEL_RESERVED_139 = 139 -SC_PERF_SEL_RESERVED_140 = 140 -SC_PERF_SEL_RESERVED_141 = 141 -SC_PERF_SEL_RESERVED_142 = 142 -SC_PERF_SEL_RESERVED_143 = 143 -SC_PERF_SEL_RESERVED_144 = 144 -SC_PERF_SEL_RESERVED_145 = 145 -SC_PERF_SEL_RESERVED_146 = 146 -SC_PERF_SEL_RESERVED_147 = 147 -SC_PERF_SEL_RESERVED_148 = 148 -SC_PERF_SEL_RESERVED_149 = 149 -SC_PERF_SEL_RESERVED_150 = 150 -SC_PERF_SEL_RESERVED_151 = 151 -SC_PERF_SEL_RESERVED_152 = 152 -SC_PERF_SEL_RESERVED_153 = 153 -SC_PERF_SEL_RESERVED_154 = 154 -SC_PERF_SEL_RESERVED_155 = 155 -SC_PERF_SEL_RESERVED_156 = 156 -SC_PERF_SEL_RESERVED_157 = 157 -SC_PERF_SEL_RESERVED_158 = 158 -SC_QZ0_QUAD_COUNT = 159 -SC_PERF_SEL_RESERVED_160 = 160 -SC_PERF_SEL_RESERVED_161 = 161 -SC_PERF_SEL_RESERVED_162 = 162 -SC_P0_HIZ_TILE_COUNT = 163 -SC_PERF_SEL_RESERVED_164 = 164 -SC_PERF_SEL_RESERVED_165 = 165 -SC_PERF_SEL_RESERVED_166 = 166 -SC_P0_HIZ_QUAD_PER_TILE_H0 = 167 -SC_P0_HIZ_QUAD_PER_TILE_H1 = 168 -SC_P0_HIZ_QUAD_PER_TILE_H2 = 169 -SC_P0_HIZ_QUAD_PER_TILE_H3 = 170 -SC_P0_HIZ_QUAD_PER_TILE_H4 = 171 -SC_P0_HIZ_QUAD_PER_TILE_H5 = 172 -SC_P0_HIZ_QUAD_PER_TILE_H6 = 173 -SC_P0_HIZ_QUAD_PER_TILE_H7 = 174 -SC_P0_HIZ_QUAD_PER_TILE_H8 = 175 -SC_P0_HIZ_QUAD_PER_TILE_H9 = 176 -SC_P0_HIZ_QUAD_PER_TILE_H10 = 177 -SC_P0_HIZ_QUAD_PER_TILE_H11 = 178 -SC_P0_HIZ_QUAD_PER_TILE_H12 = 179 -SC_P0_HIZ_QUAD_PER_TILE_H13 = 180 -SC_P0_HIZ_QUAD_PER_TILE_H14 = 181 -SC_P0_HIZ_QUAD_PER_TILE_H15 = 182 -SC_P0_HIZ_QUAD_PER_TILE_H16 = 183 -SC_PERF_SEL_RESERVED_184 = 184 -SC_PERF_SEL_RESERVED_185 = 185 -SC_PERF_SEL_RESERVED_186 = 186 -SC_PERF_SEL_RESERVED_187 = 187 -SC_PERF_SEL_RESERVED_188 = 188 -SC_PERF_SEL_RESERVED_189 = 189 -SC_PERF_SEL_RESERVED_190 = 190 -SC_PERF_SEL_RESERVED_191 = 191 -SC_PERF_SEL_RESERVED_192 = 192 -SC_PERF_SEL_RESERVED_193 = 193 -SC_PERF_SEL_RESERVED_194 = 194 -SC_PERF_SEL_RESERVED_195 = 195 -SC_PERF_SEL_RESERVED_196 = 196 -SC_PERF_SEL_RESERVED_197 = 197 -SC_PERF_SEL_RESERVED_198 = 198 -SC_PERF_SEL_RESERVED_199 = 199 -SC_PERF_SEL_RESERVED_200 = 200 -SC_PERF_SEL_RESERVED_201 = 201 -SC_PERF_SEL_RESERVED_202 = 202 -SC_PERF_SEL_RESERVED_203 = 203 -SC_PERF_SEL_RESERVED_204 = 204 -SC_PERF_SEL_RESERVED_205 = 205 -SC_PERF_SEL_RESERVED_206 = 206 -SC_PERF_SEL_RESERVED_207 = 207 -SC_PERF_SEL_RESERVED_208 = 208 -SC_PERF_SEL_RESERVED_209 = 209 -SC_PERF_SEL_RESERVED_210 = 210 -SC_PERF_SEL_RESERVED_211 = 211 -SC_PERF_SEL_RESERVED_212 = 212 -SC_PERF_SEL_RESERVED_213 = 213 -SC_PERF_SEL_RESERVED_214 = 214 -SC_PERF_SEL_RESERVED_215 = 215 -SC_PERF_SEL_RESERVED_216 = 216 -SC_PERF_SEL_RESERVED_217 = 217 -SC_PERF_SEL_RESERVED_218 = 218 -SC_PERF_SEL_RESERVED_219 = 219 -SC_PERF_SEL_RESERVED_220 = 220 -SC_PERF_SEL_RESERVED_221 = 221 -SC_PERF_SEL_RESERVED_222 = 222 -SC_PERF_SEL_RESERVED_223 = 223 -SC_PERF_SEL_RESERVED_224 = 224 -SC_PERF_SEL_RESERVED_225 = 225 -SC_PERF_SEL_RESERVED_226 = 226 -SC_PERF_SEL_RESERVED_227 = 227 -SC_PERF_SEL_RESERVED_228 = 228 -SC_PERF_SEL_RESERVED_229 = 229 -SC_PERF_SEL_RESERVED_230 = 230 -SC_PERF_SEL_RESERVED_231 = 231 -SC_PERF_SEL_RESERVED_232 = 232 -SC_PERF_SEL_RESERVED_233 = 233 -SC_PERF_SEL_RESERVED_234 = 234 -SC_P0_HIZ_QUAD_COUNT = 235 -SC_PERF_SEL_RESERVED_236 = 236 -SC_PERF_SEL_RESERVED_237 = 237 -SC_PERF_SEL_RESERVED_238 = 238 -SC_P0_DETAIL_QUAD_COUNT = 239 -SC_PERF_SEL_RESERVED_240 = 240 -SC_PERF_SEL_RESERVED_241 = 241 -SC_PERF_SEL_RESERVED_242 = 242 -SC_P0_DETAIL_QUAD_WITH_1_PIX = 243 -SC_P0_DETAIL_QUAD_WITH_2_PIX = 244 -SC_P0_DETAIL_QUAD_WITH_3_PIX = 245 -SC_P0_DETAIL_QUAD_WITH_4_PIX = 246 -SC_PERF_SEL_RESERVED_247 = 247 -SC_PERF_SEL_RESERVED_248 = 248 -SC_PERF_SEL_RESERVED_249 = 249 -SC_PERF_SEL_RESERVED_250 = 250 -SC_PERF_SEL_RESERVED_251 = 251 -SC_PERF_SEL_RESERVED_252 = 252 -SC_PERF_SEL_RESERVED_253 = 253 -SC_PERF_SEL_RESERVED_254 = 254 -SC_PERF_SEL_RESERVED_255 = 255 -SC_PERF_SEL_RESERVED_256 = 256 -SC_PERF_SEL_RESERVED_257 = 257 -SC_PERF_SEL_RESERVED_258 = 258 -SC_EARLYZ_QUAD_COUNT = 259 -SC_EARLYZ_QUAD_WITH_1_PIX = 260 -SC_EARLYZ_QUAD_WITH_2_PIX = 261 -SC_EARLYZ_QUAD_WITH_3_PIX = 262 -SC_EARLYZ_QUAD_WITH_4_PIX = 263 -SC_PKR_QUAD_PER_ROW_H1 = 264 -SC_PKR_QUAD_PER_ROW_H2 = 265 -SC_PKR_4X2_QUAD_SPLIT = 266 -SC_PKR_4X2_FILL_QUAD = 267 -SC_PKR_END_OF_VECTOR = 268 -SC_PKR_CONTROL_XFER = 269 -SC_PKR_DBHANG_FORCE_EOV = 270 -SC_REG_SCLK_BUSY = 271 -SC_GRP0_DYN_SCLK_BUSY = 272 -SC_GRP1_DYN_SCLK_BUSY = 273 -SC_GRP2_DYN_SCLK_BUSY = 274 -SC_GRP3_DYN_SCLK_BUSY = 275 -SC_GRP4_DYN_SCLK_BUSY = 276 -SC_PA0_SC_DATA_FIFO_RD = 277 -SC_PA0_SC_DATA_FIFO_WE = 278 -SC_PERF_SEL_RESERVED_279 = 279 -SC_PERF_SEL_RESERVED_280 = 280 -SC_PS_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 281 -SC_PS_ARB_XFC_ONLY_PRIM_CYCLES = 282 -SC_PS_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 283 -SC_PS_ARB_STALLED_FROM_BELOW = 284 -SC_PS_ARB_STARVED_FROM_ABOVE = 285 -SC_PS_ARB_SC_BUSY = 286 -SC_PS_ARB_PA_SC_BUSY = 287 -SC_PERF_SEL_RESERVED_288 = 288 -SC_PERF_SEL_RESERVED_289 = 289 -SC_PERF_SEL_RESERVED_290 = 290 -SC_PERF_SEL_RESERVED_291 = 291 -SC_PA_SC_DEALLOC_2_0_WE = 292 -SC_PERF_SEL_RESERVED_293 = 293 -SC_PERF_SEL_RESERVED_294 = 294 -SC_PERF_SEL_RESERVED_295 = 295 -SC_PERF_SEL_RESERVED_296 = 296 -SC_PERF_SEL_RESERVED_297 = 297 -SC_PERF_SEL_RESERVED_298 = 298 -SC_PERF_SEL_RESERVED_299 = 299 -SC_PA0_SC_EOP_WE = 300 -SC_PERF_SEL_RESERVED_301 = 301 -SC_PA0_SC_EVENT_WE = 302 -SC_PERF_SEL_RESERVED_303 = 303 -SC_PERF_SEL_RESERVED_304 = 304 -SC_PERF_SEL_RESERVED_305 = 305 -SC_PERF_SEL_RESERVED_306 = 306 -SC_PERF_SEL_RESERVED_307 = 307 -SC_PERF_SEL_RESERVED_308 = 308 -SC_PERF_SEL_RESERVED_309 = 309 -SC_PERF_SEL_RESERVED_310 = 310 -SC_PERF_SEL_RESERVED_311 = 311 -SC_PERF_SEL_RESERVED_312 = 312 -SC_PERF_SEL_RESERVED_313 = 313 -SC_PERF_SEL_RESERVED_314 = 314 -SC_PERF_SEL_RESERVED_315 = 315 -SC_PERF_SEL_RESERVED_316 = 316 -SC_PERF_SEL_RESERVED_317 = 317 -SC_PA_SC_FPOV_WE = 318 -SC_PERF_SEL_RESERVED_319 = 319 -SC_PERF_SEL_RESERVED_320 = 320 -SC_PERF_SEL_RESERVED_321 = 321 -SC_PERF_SEL_RESERVED_322 = 322 -SC_PERF_SEL_RESERVED_323 = 323 -SC_PERF_SEL_RESERVED_324 = 324 -SC_PERF_SEL_RESERVED_325 = 325 -SC_SPI_DEALLOC_4_0 = 326 -SC_SPI_DEALLOC_7_5 = 327 -SC_PERF_SEL_RESERVED_328 = 328 -SC_PERF_SEL_RESERVED_329 = 329 -SC_PERF_SEL_RESERVED_330 = 330 -SC_PERF_SEL_RESERVED_331 = 331 -SC_PERF_SEL_RESERVED_332 = 332 -SC_PERF_SEL_RESERVED_333 = 333 -SC_PERF_SEL_RESERVED_334 = 334 -SC_PERF_SEL_RESERVED_335 = 335 -SC_PERF_SEL_RESERVED_336 = 336 -SC_PERF_SEL_RESERVED_337 = 337 -SC_SPI_FPOV_4_0 = 338 -SC_SPI_FPOV_7_5 = 339 -SC_PERF_SEL_RESERVED_340 = 340 -SC_PERF_SEL_RESERVED_341 = 341 -SC_SPI_EVENT = 342 -SC_PS_TS_EVENT_FIFO_PUSH = 343 -SC_PS_TS_EVENT_FIFO_POP = 344 -SC_PS_CTX_DONE_FIFO_PUSH = 345 -SC_PS_CTX_DONE_FIFO_POP = 346 -SC_PERF_SEL_RESERVED_347 = 347 -SC_PERF_SEL_RESERVED_348 = 348 -SC_PA0_SC_NULL_WE = 349 -SC_PA0_SC_NULL_DEALLOC_WE = 350 -SC_PERF_SEL_RESERVED_351 = 351 -SC_PA0_SC_DATA_FIFO_EOP_RD = 352 -SC_PA0_SC_DEALLOC_2_0_RD = 353 -SC_PERF_SEL_RESERVED_354 = 354 -SC_PERF_SEL_RESERVED_355 = 355 -SC_PERF_SEL_RESERVED_356 = 356 -SC_PERF_SEL_RESERVED_357 = 357 -SC_PERF_SEL_RESERVED_358 = 358 -SC_PERF_SEL_RESERVED_359 = 359 -SC_PERF_SEL_RESERVED_360 = 360 -SC_PERF_SEL_RESERVED_361 = 361 -SC_PERF_SEL_RESERVED_362 = 362 -SC_PERF_SEL_RESERVED_363 = 363 -SC_PERF_SEL_RESERVED_364 = 364 -SC_PERF_SEL_RESERVED_365 = 365 -SC_PERF_SEL_RESERVED_366 = 366 -SC_PERF_SEL_RESERVED_367 = 367 -SC_PERF_SEL_RESERVED_368 = 368 -SC_PERF_SEL_RESERVED_369 = 369 -SC_PERF_SEL_RESERVED_370 = 370 -SC_PERF_SEL_RESERVED_371 = 371 -SC_PERF_SEL_RESERVED_372 = 372 -SC_PS_PA0_SC_FIFO_EMPTY = 373 -SC_PS_PA0_SC_FIFO_FULL = 374 -SC_PERF_SEL_RESERVED_375 = 375 -SC_PERF_SEL_RESERVED_376 = 376 -SC_PERF_SEL_RESERVED_377 = 377 -SC_PERF_SEL_RESERVED_378 = 378 -SC_PERF_SEL_RESERVED_379 = 379 -SC_PERF_SEL_RESERVED_380 = 380 -SC_PERF_SEL_RESERVED_381 = 381 -SC_PERF_SEL_RESERVED_382 = 382 -SC_PERF_SEL_RESERVED_383 = 383 -SC_PERF_SEL_RESERVED_384 = 384 -SC_PERF_SEL_RESERVED_385 = 385 -SC_BUSY_CNT_NOT_ZERO = 386 -SC_BM_BUSY = 387 -SC_BACKEND_BUSY = 388 -SC_SCF_SCB_INTERFACE_BUSY = 389 -SC_SCB_BUSY = 390 -SC_STARVED_BY_PA_WITH_UNSELECTED_PA_NOT_EMPTY = 391 -SC_STARVED_BY_PA_WITH_UNSELECTED_PA_FULL = 392 -SC_PBB_BIN_HIST_NUM_PRIMS = 393 -SC_PBB_BATCH_HIST_NUM_PRIMS = 394 -SC_PBB_BIN_HIST_NUM_CONTEXTS = 395 -SC_PBB_BATCH_HIST_NUM_CONTEXTS = 396 -SC_PBB_BIN_HIST_NUM_PERSISTENT_STATES = 397 -SC_PBB_BATCH_HIST_NUM_PERSISTENT_STATES = 398 -SC_PBB_BATCH_HIST_NUM_PS_WAVE_BREAKS = 399 -SC_PBB_BATCH_HIST_NUM_TRIV_REJECTED_PRIMS = 400 -SC_PBB_BATCH_HIST_NUM_ROWS_PER_PRIM = 401 -SC_PBB_BATCH_HIST_NUM_COLUMNS_PER_ROW = 402 -SC_PBB_BUSY = 403 -SC_PBB_BUSY_AND_NO_SENDS = 404 -SC_PBB_STALLS_PA_DUE_TO_NO_TILES = 405 -SC_PBB_NUM_BINS = 406 -SC_PBB_END_OF_BIN = 407 -SC_PBB_END_OF_BATCH = 408 -SC_PBB_PRIMBIN_PROCESSED = 409 -SC_PBB_PRIM_ADDED_TO_BATCH = 410 -SC_PBB_NONBINNED_PRIM = 411 -SC_PBB_TOTAL_REAL_PRIMS_OUT_OF_PBB = 412 -SC_PBB_TOTAL_NULL_PRIMS_OUT_OF_PBB = 413 -SC_PBB_IDLE_CLK_DUE_TO_ROW_TO_COLUMN_TRANSITION = 414 -SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_ROW = 415 -SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_COLUMN = 416 -SC_PBB_BATCH_BREAK_DUE_TO_PERSISTENT_STATE = 417 -SC_PBB_BATCH_BREAK_DUE_TO_CONTEXT_STATE = 418 -SC_PBB_BATCH_BREAK_DUE_TO_PRIM = 419 -SC_PBB_BATCH_BREAK_DUE_TO_PC_STORAGE = 420 -SC_PBB_BATCH_BREAK_DUE_TO_EVENT = 421 -SC_PBB_BATCH_BREAK_DUE_TO_FPOV_LIMIT = 422 -SC_PERF_SEL_RESERVED_423 = 423 -SC_PERF_SEL_RESERVED_424 = 424 -SC_PERF_SEL_RESERVED_425 = 425 -SC_PERF_SEL_RESERVED_426 = 426 -SC_PERF_SEL_RESERVED_427 = 427 -SC_PERF_SEL_RESERVED_428 = 428 -SC_PERF_SEL_RESERVED_429 = 429 -SC_PERF_SEL_RESERVED_430 = 430 -SC_PERF_SEL_RESERVED_431 = 431 -SC_PERF_SEL_RESERVED_432 = 432 -SC_PERF_SEL_RESERVED_433 = 433 -SC_PERF_SEL_RESERVED_434 = 434 -SC_PERF_SEL_RESERVED_435 = 435 -SC_PERF_SEL_RESERVED_436 = 436 -SC_GRP5_DYN_SCLK_BUSY = 437 -SC_GRP6_DYN_SCLK_BUSY = 438 -SC_GRP7_DYN_SCLK_BUSY = 439 -SC_GRP8_DYN_SCLK_BUSY = 440 -SC_GRP9_DYN_SCLK_BUSY = 441 -SC_PS_TO_BE_SCLK_GATE_STALL = 442 -SC_PA_TO_PBB_SCLK_GATE_STALL_STALL = 443 -SC_PK_BUSY = 444 -SC_PK_MAX_DEALLOC_FORCE_EOV = 445 -SC_PK_DEALLOC_WAVE_BREAK = 446 -SC_SPI_SEND = 447 -SC_SPI_CREDIT_AT_ZERO_WITH_PENDING_SEND = 448 -SC_SPI_CREDIT_AT_MAX = 449 -SC_SPI_CREDIT_AT_MAX_NO_PENDING_SEND = 450 -SC_BCI_SEND = 451 -SC_BCI_CREDIT_AT_ZERO_WITH_PENDING_SEND = 452 -SC_BCI_CREDIT_AT_MAX = 453 -SC_BCI_CREDIT_AT_MAX_NO_PENDING_SEND = 454 -SC_SPIBC_FULL_FREEZE = 455 -SC_PW_BM_PASS_EMPTY_PRIM = 456 -SC_SUPERTILE_COUNT_EXCLUDE_PASS_EMPTY_PRIM = 457 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H0 = 458 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H1 = 459 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H2 = 460 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H3 = 461 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H4 = 462 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H5 = 463 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H6 = 464 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H7 = 465 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H8 = 466 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H9 = 467 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H10 = 468 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H11 = 469 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H12 = 470 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H13 = 471 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H14 = 472 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H15 = 473 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H16 = 474 -SC_DB0_TILE_INTERFACE_BUSY = 475 -SC_DB0_TILE_INTERFACE_SEND = 476 -SC_DB0_TILE_INTERFACE_SEND_EVENT = 477 -SC_PERF_SEL_RESERVED_478 = 478 -SC_PERF_SEL_RESERVED_479 = 479 -SC_DB0_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND = 480 -SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX = 481 -SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND = 482 -SC_PERF_SEL_RESERVED_483 = 483 -SC_PERF_SEL_RESERVED_484 = 484 -SC_PERF_SEL_RESERVED_485 = 485 -SC_PERF_SEL_RESERVED_486 = 486 -SC_PERF_SEL_RESERVED_487 = 487 -SC_PERF_SEL_RESERVED_488 = 488 -SC_PERF_SEL_RESERVED_489 = 489 -SC_PERF_SEL_RESERVED_490 = 490 -SC_BACKEND_PRIM_FIFO_FULL = 491 -SC_PBB_BATCH_BREAK_DUE_TO_TIMEOUT_COUNTER = 492 -SC_PBB_BATCH_BREAK_DUE_TO_NONBINNED_BATCH = 493 -SC_PBB_BATCH_BREAK_DUE_TO_DEBUG_DATA_PER_DRAW_DISPATCH = 494 -SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_PERSISTENT = 495 -SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_CONTEXT = 496 -SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_FPOV = 497 -SC_PBB_BATCH_BREAK_DUE_TO_NEW_SC_MODE = 498 -SC_PBB_BATCH_BREAK_DUE_TO_BINNING_MODE_CHANGE = 499 -SC_PBB_BATCH_BREAK_DUE_TO_PIPELINE_EVENT_COUNT = 500 -SC_PBB_BATCH_BREAK_DUE_TO_PIPE_RESET = 501 -SC_PBB_BATCH_BREAK_DUE_TO_GFX_PIPE_CHANGE = 502 -SC_STALLED_BY_DB0_TILEFIFO = 503 -SC_DB0_QUAD_INTF_SEND = 504 -SC_DB0_QUAD_INTF_BUSY = 505 -SC_DB0_QUAD_INTF_STALLED_BY_DB = 506 -SC_DB0_QUAD_INTF_CREDIT_AT_MAX = 507 -SC_DB0_QUAD_INTF_IDLE = 508 -SC_PERF_SEL_RESERVED_509 = 509 -SC_PERF_SEL_RESERVED_510 = 510 -SC_PERF_SEL_RESERVED_511 = 511 -SC_PERF_SEL_RESERVED_512 = 512 -SC_PERF_SEL_RESERVED_513 = 513 -SC_PERF_SEL_RESERVED_514 = 514 -SC_PKR_WAVE_BREAK_OUTSIDE_REGION = 515 -SC_PKR_WAVE_BREAK_FULL_TILE = 516 -SC_RESERVED_60 = 517 -SC_PBB_EMPTY_INPUT_CYCLE_WHEN_BATCH_OPEN = 518 -SC_PBB_BATCH_BREAK_DUE_TO_NULL_PRIM_BREAK_BATCH_LIMIT = 519 -SC_DB0_WE_STALLED_BY_RSLT_FIFO_FULL = 520 -SC_DB0_WE_TILE_MASK_RETURN_FIFO_FULL_WITH_WE_RSLT_FIFO_STALL = 521 -SC_DB0_TILE_MASK_FIFO_FULL = 522 -SC_PERF_SEL_RESERVED_523 = 523 -SC_PERF_SEL_RESERVED_524 = 524 -SC_PERF_SEL_RESERVED_525 = 525 -SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_PFF_PW_FULL = 526 -SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_ZFF_PW_FULL = 527 -SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_PBB_TO_PSE_FIFO_FULL = 528 -SC_PS_PM_PFF_PW_FULL = 529 -SC_PS_PM_ZFF_PW_FULL = 530 -SC_PS_PM_PBB_TO_PSE_FIFO_FULL = 531 -SC_PERF_SEL_RESERVED_532 = 532 -SC_PERF_SEL_RESERVED_533 = 533 -SC_PERF_SEL_RESERVED_534 = 534 -SC_PK_PM_4X2_SPLIT_WAVE_BRK_1H = 535 -SC_PK_PM_PKR_FILL_4X2_WAVE_BRK_1H = 536 -SC_PK_PM_SPLIT_OR_FILL_4X2_WAVE_BRK_1H = 537 -SC_PK_PM_END_OF_VECTOR_WAVE_BRK_1H = 538 -SC_PERF_SEL_RESERVED_539 = 539 -SC_PK_PM_CTL_ONLY_CMD_WAVE_BRK_1H = 540 -SC_PK_PM_AVOID_DEALLOC_ADD_WAVE_BRK_1H = 541 -SC_PK_PM_FD_CONFLICT_WAVE_BRK_1H = 542 -SC_PK_PM_FORCE_PARTIAL_FOR_DEALLOC_WAVE_BRK_1H = 543 -SC_PK_PM_AE_CONFLICT_WAVE_BRK_1H = 544 -SC_PK_PM_EOP_OR_LAD_WAVE_BRK_1H = 545 -SC_PK_PM_FULL_TILE_WAVE_BRK_1H = 546 -SC_PK_PM_OREO_CONFLICT_QUAD_FORCE_EOV_WAVE_BRK_1H = 547 -SC_PK_PM_MAX_DEALLOC_FORCE_EOV_WAVE_BRK_1H = 548 -SC_PK_PM_WAVE_BREAK_OUTSIDE_REGION_WAVE_BRK_1H = 549 -SC_PK_PM_MAX_CLK_CNT_FORCE_EOV_WAVE_BRK_1H = 550 -SC_PK_PM_MAX_REZ_CNT_FORCE_EOV_WAVE_BRK_1H = 551 -SC_PK_PM_VRS_RATE_X_00_Y_00_QUAD = 552 -SC_PK_PM_VRS_RATE_X_00_Y_01_QUAD = 553 -SC_PK_PM_VRS_RATE_X_00_Y_10_QUAD = 554 -SC_PK_PM_VRS_RATE_X_00_Y_11_QUAD = 555 -SC_PK_PM_VRS_RATE_X_01_Y_00_QUAD = 556 -SC_PK_PM_VRS_RATE_X_01_Y_01_QUAD = 557 -SC_PK_PM_VRS_RATE_X_01_Y_10_QUAD = 558 -SC_PK_PM_VRS_RATE_X_01_Y_11_QUAD = 559 -SC_PK_PM_VRS_RATE_X_10_Y_00_QUAD = 560 -SC_PK_PM_VRS_RATE_X_10_Y_01_QUAD = 561 -SC_PK_PM_VRS_RATE_X_10_Y_10_QUAD = 562 -SC_PK_PM_VRS_RATE_X_10_Y_11_QUAD = 563 -SC_PK_PM_VRS_RATE_X_11_Y_00_QUAD = 564 -SC_PK_PM_VRS_RATE_X_11_Y_01_QUAD = 565 -SC_PK_PM_VRS_RATE_X_11_Y_10_QUAD = 566 -SC_PK_PM_VRS_RATE_X_11_Y_11_QUAD = 567 -SC_PERF_SEL_RESERVED_568 = 568 -SC_PBB_RESERVED = 569 -SC_BM_BE0_STALLED = 570 -SC_BM_BE1_STALLED = 571 -SC_BM_BE2_STALLED = 572 -SC_BM_BE3_STALLED = 573 -SC_BM_MULTI_ACCUM_1_BE_STALLED = 574 -SC_BM_MULTI_ACCUM_2_BE_STALLED = 575 -SC_BM_MULTI_ACCUM_3_BE_STALLED = 576 -SC_BM_MULTI_ACCUM_4_BE_STALLED = 577 -SC_PBB_READ_PH0 = 578 -SC_PBB_READ_DEALLOC_4_0 = 579 -SC_PBB_READ_DEALLOC_7_5 = 580 -SC_PBB_READ_FPOG_4_0 = 581 -SC_PBB_READ_FPOG_7_5 = 582 -SC_VRC_SECTOR_HIT = 583 -SC_VRC_TAG_MISS = 584 -SC_VRC_SECTOR_MISS = 585 -SC_VRC_LRU_EVICT_STALL = 586 -SC_VRC_LRU_EVICT_SCHEDULED_EVICT_STALL = 587 -SC_VRC_LRU_EVICT_PENDING_EVICT_STALL = 588 -SC_VRC_REEVICTION_STALL = 589 -SC_VRC_EVICT_NONZERO_INFLIGHT_STALL = 590 -SC_VRC_REPLACE_SCHEDULED_EVICT_STALL = 591 -SC_VRC_REPLACE_PENDING_EVICT_STALL = 592 -SC_VRC_REPLACE_FLUSH_IN_PROGRESS_STALL = 593 -SC_VRC_INFLIGHT_COUNTER_MAXIMUM_STALL = 594 -SC_VRC_READ_OUTPUT_STALL = 595 -SC_VRC_WRITE_OUTPUT_STALL = 596 -SC_VRC_ACK_OUTPUT_STALL = 597 -SC_VRC_FLUSH_EVICT_STALL = 598 -SC_VRC_FLUSH_REFLUSH_STALL = 599 -SC_VRC_FLUSH_FIP_HIT_STALL = 600 -SC_VRC_FLUSH_WRREQ_DRAIN_STALL = 601 -SC_VRC_FLUSH_DONE_STALL = 602 -SC_VRC_FLUSH_STALL = 603 -SC_VRC_STALL = 604 -SC_VRC_FLUSH = 605 -SC_VRC_SECTORS_FLUSHED = 606 -SC_VRC_DIRTY_SECTORS_FLUSHED = 607 -SC_VRC_TAGS_FLUSHED = 608 -SC_VRC_HPF_REQ = 609 -SC_VRC_HPF_EVENT = 610 -SC_VRC_HPF_STALLED = 611 -SC_VRC_PROBE_ACK_TILES = 612 -SC_VRC_GL1X_RD_REQ = 613 -SC_VRC_GL1X_WR_REQ = 614 -SC_VRC_GL1X_SRC_XFR = 615 -SC_VRC_GL1X_RD_RET = 616 -SC_VRC_GL1X_WR_ACK = 617 -SC_VRC_GL1X_RD_XNACK = 618 -SC_VRC_GL1X_WR_XNACK = 619 -SC_VRC_GL1X_REQ_STALLED = 620 -SC_VRC_GL1X_SRC_STALLED = 621 -SC_VRC_RATEMEM_WE_CNT = 622 -SC_VRC_RATEMEM_RE_CNT = 623 -SC_VRC_HINTMEM_WE_CNT = 624 -SC_VRC_HINTMEM_RE_CNT = 625 -SC_VRC_BUSY = 626 -SC_GL1X_BUSY = 627 -SC_BE_VRS_RD_REQ = 628 -SC_BE_VRS_RD_REQ_STALLED = 629 -SC_BE_VRS_RD_REQ_HIT = 630 -SC_BE_VRS_RD_RET = 631 -SC_BE_VRS_RD_RET_STALLED = 632 -SC_BE_VRS_FB_RET = 633 -SC_BE_VRS_FB_RET_STALLED = 634 -SC_BE_VRS_FB_RET_HIT = 635 -SC_VRS_BE_BUSY = 636 -SC_PWS_CS_EVENTS_PWS_ENABLE = 637 -SC_PWS_PS_EVENTS_PWS_ENABLE = 638 -SC_PWS_TS_EVENTS_PWS_ENABLE = 639 -SC_PWS_STALLED = 640 -SC_PWS_P0_CS_SYNC_COMPLETE = 641 -SC_PWS_P0_PS_SYNC_COMPLETE = 642 -SC_PWS_P0_TS_SYNC_COMPLETE = 643 -SC_PWS_P1_CS_SYNC_COMPLETE = 644 -SC_PWS_P1_PS_SYNC_COMPLETE = 645 -SC_PWS_P1_TS_SYNC_COMPLETE = 646 -SC_PKR_PC_NO_CREDITS = 647 -SC_PKR_PC_STALLED = 648 -SC_PKR_PC_SEND = 649 -SC_PKR_PC_SEND_PRIM_VALID_1 = 650 -SC_PKR_PC_SEND_PRIM_VALID_0 = 651 -SC_PKR_PC_SEND_TRUE_PRIM = 652 -SC_PKR_PC_SEND_EOV = 653 -SC_PKR_PC_SEND_EVENT = 654 -SC_PKR_DB_WAVE_STALL = 655 -SC_PKR_PSINVOC_SEDC_FIFO_FULL = 656 -SC_PKR_OREO_STALLED_BY_NO_VALID_WAIVE_ID = 657 -SC_PKR_SPI_QUAD_COUNT = 658 -SC_PKR_DB_OREO_WAVE_QUAD_COUNT = 659 -SC_PKR_BCI_QUAD_NEW_PRIM = 660 -SC_SPI_WAVE_STALLED_BY_SPI = 661 -SC_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'ScMap' -ScMap__enumvalues = { - 0: 'RASTER_CONFIG_SC_MAP_0', - 1: 'RASTER_CONFIG_SC_MAP_1', - 2: 'RASTER_CONFIG_SC_MAP_2', - 3: 'RASTER_CONFIG_SC_MAP_3', -} -RASTER_CONFIG_SC_MAP_0 = 0 -RASTER_CONFIG_SC_MAP_1 = 1 -RASTER_CONFIG_SC_MAP_2 = 2 -RASTER_CONFIG_SC_MAP_3 = 3 -ScMap = ctypes.c_uint32 # enum - -# values for enumeration 'ScUncertaintyRegionMode' -ScUncertaintyRegionMode__enumvalues = { - 0: 'SC_HALF_LSB', - 1: 'SC_LSB_ONE_SIDED', - 2: 'SC_LSB_TWO_SIDED', -} -SC_HALF_LSB = 0 -SC_LSB_ONE_SIDED = 1 -SC_LSB_TWO_SIDED = 2 -ScUncertaintyRegionMode = ctypes.c_uint32 # enum - -# values for enumeration 'ScUncertaintyRegionMult' -ScUncertaintyRegionMult__enumvalues = { - 0: 'SC_UR_1X', - 1: 'SC_UR_2X', - 2: 'SC_UR_4X', - 3: 'SC_UR_8X', -} -SC_UR_1X = 0 -SC_UR_2X = 1 -SC_UR_4X = 2 -SC_UR_8X = 3 -ScUncertaintyRegionMult = ctypes.c_uint32 # enum - -# values for enumeration 'ScXsel' -ScXsel__enumvalues = { - 0: 'RASTER_CONFIG_SC_XSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SC_XSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SC_XSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SC_XSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SC_XSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SC_XSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SC_XSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SC_XSEL_64_WIDE_TILE = 3 -ScXsel = ctypes.c_uint32 # enum - -# values for enumeration 'ScYsel' -ScYsel__enumvalues = { - 0: 'RASTER_CONFIG_SC_YSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SC_YSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SC_YSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SC_YSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SC_YSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SC_YSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SC_YSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SC_YSEL_64_WIDE_TILE = 3 -ScYsel = ctypes.c_uint32 # enum - -# values for enumeration 'SeMap' -SeMap__enumvalues = { - 0: 'RASTER_CONFIG_SE_MAP_0', - 1: 'RASTER_CONFIG_SE_MAP_1', - 2: 'RASTER_CONFIG_SE_MAP_2', - 3: 'RASTER_CONFIG_SE_MAP_3', -} -RASTER_CONFIG_SE_MAP_0 = 0 -RASTER_CONFIG_SE_MAP_1 = 1 -RASTER_CONFIG_SE_MAP_2 = 2 -RASTER_CONFIG_SE_MAP_3 = 3 -SeMap = ctypes.c_uint32 # enum - -# values for enumeration 'SePairMap' -SePairMap__enumvalues = { - 0: 'RASTER_CONFIG_SE_PAIR_MAP_0', - 1: 'RASTER_CONFIG_SE_PAIR_MAP_1', - 2: 'RASTER_CONFIG_SE_PAIR_MAP_2', - 3: 'RASTER_CONFIG_SE_PAIR_MAP_3', -} -RASTER_CONFIG_SE_PAIR_MAP_0 = 0 -RASTER_CONFIG_SE_PAIR_MAP_1 = 1 -RASTER_CONFIG_SE_PAIR_MAP_2 = 2 -RASTER_CONFIG_SE_PAIR_MAP_3 = 3 -SePairMap = ctypes.c_uint32 # enum - -# values for enumeration 'SePairXsel' -SePairXsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_PAIR_XSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_PAIR_XSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_PAIR_XSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_PAIR_XSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SE_PAIR_XSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_PAIR_XSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_PAIR_XSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_PAIR_XSEL_64_WIDE_TILE = 3 -SePairXsel = ctypes.c_uint32 # enum - -# values for enumeration 'SePairYsel' -SePairYsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_PAIR_YSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_PAIR_YSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_PAIR_YSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_PAIR_YSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SE_PAIR_YSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_PAIR_YSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_PAIR_YSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_PAIR_YSEL_64_WIDE_TILE = 3 -SePairYsel = ctypes.c_uint32 # enum - -# values for enumeration 'SeXsel' -SeXsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_XSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_XSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_XSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_XSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SE_XSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_XSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_XSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_XSEL_64_WIDE_TILE = 3 -SeXsel = ctypes.c_uint32 # enum - -# values for enumeration 'SeYsel' -SeYsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_YSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_YSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_YSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_YSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SE_YSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_YSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_YSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_YSEL_64_WIDE_TILE = 3 -SeYsel = ctypes.c_uint32 # enum - -# values for enumeration 'VRSCombinerModeSC' -VRSCombinerModeSC__enumvalues = { - 0: 'SC_VRS_COMB_MODE_PASSTHRU', - 1: 'SC_VRS_COMB_MODE_OVERRIDE', - 2: 'SC_VRS_COMB_MODE_MIN', - 3: 'SC_VRS_COMB_MODE_MAX', - 4: 'SC_VRS_COMB_MODE_SATURATE', -} -SC_VRS_COMB_MODE_PASSTHRU = 0 -SC_VRS_COMB_MODE_OVERRIDE = 1 -SC_VRS_COMB_MODE_MIN = 2 -SC_VRS_COMB_MODE_MAX = 3 -SC_VRS_COMB_MODE_SATURATE = 4 -VRSCombinerModeSC = ctypes.c_uint32 # enum - -# values for enumeration 'VRSrate' -VRSrate__enumvalues = { - 0: 'VRS_SHADING_RATE_1X1', - 1: 'VRS_SHADING_RATE_1X2', - 2: 'VRS_SHADING_RATE_UNDEFINED0', - 3: 'VRS_SHADING_RATE_UNDEFINED1', - 4: 'VRS_SHADING_RATE_2X1', - 5: 'VRS_SHADING_RATE_2X2', - 6: 'VRS_SHADING_RATE_2X4', - 7: 'VRS_SHADING_RATE_UNDEFINED2', - 8: 'VRS_SHADING_RATE_UNDEFINED3', - 9: 'VRS_SHADING_RATE_4X2', - 10: 'VRS_SHADING_RATE_4X4', - 11: 'VRS_SHADING_RATE_UNDEFINED4', - 12: 'VRS_SHADING_RATE_16X_SSAA', - 13: 'VRS_SHADING_RATE_8X_SSAA', - 14: 'VRS_SHADING_RATE_4X_SSAA', - 15: 'VRS_SHADING_RATE_2X_SSAA', -} -VRS_SHADING_RATE_1X1 = 0 -VRS_SHADING_RATE_1X2 = 1 -VRS_SHADING_RATE_UNDEFINED0 = 2 -VRS_SHADING_RATE_UNDEFINED1 = 3 -VRS_SHADING_RATE_2X1 = 4 -VRS_SHADING_RATE_2X2 = 5 -VRS_SHADING_RATE_2X4 = 6 -VRS_SHADING_RATE_UNDEFINED2 = 7 -VRS_SHADING_RATE_UNDEFINED3 = 8 -VRS_SHADING_RATE_4X2 = 9 -VRS_SHADING_RATE_4X4 = 10 -VRS_SHADING_RATE_UNDEFINED4 = 11 -VRS_SHADING_RATE_16X_SSAA = 12 -VRS_SHADING_RATE_8X_SSAA = 13 -VRS_SHADING_RATE_4X_SSAA = 14 -VRS_SHADING_RATE_2X_SSAA = 15 -VRSrate = ctypes.c_uint32 # enum - -# values for enumeration 'TC_EA_CID' -TC_EA_CID__enumvalues = { - 0: 'TC_EA_CID_RT', - 1: 'TC_EA_CID_FMASK', - 2: 'TC_EA_CID_DCC', - 3: 'TC_EA_CID_TCPMETA', - 4: 'TC_EA_CID_Z', - 5: 'TC_EA_CID_STENCIL', - 6: 'TC_EA_CID_HTILE', - 7: 'TC_EA_CID_MISC', - 8: 'TC_EA_CID_TCP', - 9: 'TC_EA_CID_SQC', - 10: 'TC_EA_CID_CPF', - 11: 'TC_EA_CID_CPG', - 12: 'TC_EA_CID_IA', - 13: 'TC_EA_CID_WD', - 14: 'TC_EA_CID_PA', - 15: 'TC_EA_CID_UTCL2_TPI', -} -TC_EA_CID_RT = 0 -TC_EA_CID_FMASK = 1 -TC_EA_CID_DCC = 2 -TC_EA_CID_TCPMETA = 3 -TC_EA_CID_Z = 4 -TC_EA_CID_STENCIL = 5 -TC_EA_CID_HTILE = 6 -TC_EA_CID_MISC = 7 -TC_EA_CID_TCP = 8 -TC_EA_CID_SQC = 9 -TC_EA_CID_CPF = 10 -TC_EA_CID_CPG = 11 -TC_EA_CID_IA = 12 -TC_EA_CID_WD = 13 -TC_EA_CID_PA = 14 -TC_EA_CID_UTCL2_TPI = 15 -TC_EA_CID = ctypes.c_uint32 # enum - -# values for enumeration 'TC_NACKS' -TC_NACKS__enumvalues = { - 0: 'TC_NACK_NO_FAULT', - 1: 'TC_NACK_PAGE_FAULT', - 2: 'TC_NACK_PROTECTION_FAULT', - 3: 'TC_NACK_DATA_ERROR', -} -TC_NACK_NO_FAULT = 0 -TC_NACK_PAGE_FAULT = 1 -TC_NACK_PROTECTION_FAULT = 2 -TC_NACK_DATA_ERROR = 3 -TC_NACKS = ctypes.c_uint32 # enum - -# values for enumeration 'TC_OP' -TC_OP__enumvalues = { - 0: 'TC_OP_READ', - 1: 'TC_OP_ATOMIC_FCMPSWAP_RTN_32', - 2: 'TC_OP_ATOMIC_FMIN_RTN_32', - 3: 'TC_OP_ATOMIC_FMAX_RTN_32', - 4: 'TC_OP_RESERVED_FOP_RTN_32_0', - 5: 'TC_OP_RESERVED_FADD_RTN_32', - 6: 'TC_OP_RESERVED_FOP_RTN_32_2', - 7: 'TC_OP_ATOMIC_SWAP_RTN_32', - 8: 'TC_OP_ATOMIC_CMPSWAP_RTN_32', - 9: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32', - 10: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32', - 11: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32', - 12: 'TC_OP_PROBE_FILTER', - 13: 'TC_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32', - 14: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2', - 15: 'TC_OP_ATOMIC_ADD_RTN_32', - 16: 'TC_OP_ATOMIC_SUB_RTN_32', - 17: 'TC_OP_ATOMIC_SMIN_RTN_32', - 18: 'TC_OP_ATOMIC_UMIN_RTN_32', - 19: 'TC_OP_ATOMIC_SMAX_RTN_32', - 20: 'TC_OP_ATOMIC_UMAX_RTN_32', - 21: 'TC_OP_ATOMIC_AND_RTN_32', - 22: 'TC_OP_ATOMIC_OR_RTN_32', - 23: 'TC_OP_ATOMIC_XOR_RTN_32', - 24: 'TC_OP_ATOMIC_INC_RTN_32', - 25: 'TC_OP_ATOMIC_DEC_RTN_32', - 26: 'TC_OP_WBINVL1_VOL', - 27: 'TC_OP_WBINVL1_SD', - 28: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_0', - 29: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_1', - 30: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_2', - 31: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_3', - 32: 'TC_OP_WRITE', - 33: 'TC_OP_ATOMIC_FCMPSWAP_RTN_64', - 34: 'TC_OP_ATOMIC_FMIN_RTN_64', - 35: 'TC_OP_ATOMIC_FMAX_RTN_64', - 36: 'TC_OP_RESERVED_FOP_RTN_64_0', - 37: 'TC_OP_RESERVED_FOP_RTN_64_1', - 38: 'TC_OP_RESERVED_FOP_RTN_64_2', - 39: 'TC_OP_ATOMIC_SWAP_RTN_64', - 40: 'TC_OP_ATOMIC_CMPSWAP_RTN_64', - 41: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64', - 42: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64', - 43: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64', - 44: 'TC_OP_WBINVL2_SD', - 45: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_0', - 46: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_1', - 47: 'TC_OP_ATOMIC_ADD_RTN_64', - 48: 'TC_OP_ATOMIC_SUB_RTN_64', - 49: 'TC_OP_ATOMIC_SMIN_RTN_64', - 50: 'TC_OP_ATOMIC_UMIN_RTN_64', - 51: 'TC_OP_ATOMIC_SMAX_RTN_64', - 52: 'TC_OP_ATOMIC_UMAX_RTN_64', - 53: 'TC_OP_ATOMIC_AND_RTN_64', - 54: 'TC_OP_ATOMIC_OR_RTN_64', - 55: 'TC_OP_ATOMIC_XOR_RTN_64', - 56: 'TC_OP_ATOMIC_INC_RTN_64', - 57: 'TC_OP_ATOMIC_DEC_RTN_64', - 58: 'TC_OP_WBL2_NC', - 59: 'TC_OP_WBL2_WC', - 60: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_1', - 61: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_2', - 62: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_3', - 63: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_4', - 64: 'TC_OP_WBINVL1', - 65: 'TC_OP_ATOMIC_FCMPSWAP_32', - 66: 'TC_OP_ATOMIC_FMIN_32', - 67: 'TC_OP_ATOMIC_FMAX_32', - 68: 'TC_OP_RESERVED_FOP_32_0', - 69: 'TC_OP_RESERVED_FADD_32', - 70: 'TC_OP_RESERVED_FOP_32_2', - 71: 'TC_OP_ATOMIC_SWAP_32', - 72: 'TC_OP_ATOMIC_CMPSWAP_32', - 73: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32', - 74: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_32', - 75: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_32', - 76: 'TC_OP_INV_METADATA', - 77: 'TC_OP_ATOMIC_FADD_FLUSH_DENORM_32', - 78: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_32_2', - 79: 'TC_OP_ATOMIC_ADD_32', - 80: 'TC_OP_ATOMIC_SUB_32', - 81: 'TC_OP_ATOMIC_SMIN_32', - 82: 'TC_OP_ATOMIC_UMIN_32', - 83: 'TC_OP_ATOMIC_SMAX_32', - 84: 'TC_OP_ATOMIC_UMAX_32', - 85: 'TC_OP_ATOMIC_AND_32', - 86: 'TC_OP_ATOMIC_OR_32', - 87: 'TC_OP_ATOMIC_XOR_32', - 88: 'TC_OP_ATOMIC_INC_32', - 89: 'TC_OP_ATOMIC_DEC_32', - 90: 'TC_OP_INVL2_NC', - 91: 'TC_OP_NOP_RTN0', - 92: 'TC_OP_RESERVED_NON_FLOAT_32_1', - 93: 'TC_OP_RESERVED_NON_FLOAT_32_2', - 94: 'TC_OP_RESERVED_NON_FLOAT_32_3', - 95: 'TC_OP_RESERVED_NON_FLOAT_32_4', - 96: 'TC_OP_WBINVL2', - 97: 'TC_OP_ATOMIC_FCMPSWAP_64', - 98: 'TC_OP_ATOMIC_FMIN_64', - 99: 'TC_OP_ATOMIC_FMAX_64', - 100: 'TC_OP_RESERVED_FOP_64_0', - 101: 'TC_OP_RESERVED_FOP_64_1', - 102: 'TC_OP_RESERVED_FOP_64_2', - 103: 'TC_OP_ATOMIC_SWAP_64', - 104: 'TC_OP_ATOMIC_CMPSWAP_64', - 105: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64', - 106: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_64', - 107: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_64', - 108: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_0', - 109: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_1', - 110: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_2', - 111: 'TC_OP_ATOMIC_ADD_64', - 112: 'TC_OP_ATOMIC_SUB_64', - 113: 'TC_OP_ATOMIC_SMIN_64', - 114: 'TC_OP_ATOMIC_UMIN_64', - 115: 'TC_OP_ATOMIC_SMAX_64', - 116: 'TC_OP_ATOMIC_UMAX_64', - 117: 'TC_OP_ATOMIC_AND_64', - 118: 'TC_OP_ATOMIC_OR_64', - 119: 'TC_OP_ATOMIC_XOR_64', - 120: 'TC_OP_ATOMIC_INC_64', - 121: 'TC_OP_ATOMIC_DEC_64', - 122: 'TC_OP_WBINVL2_NC', - 123: 'TC_OP_NOP_ACK', - 124: 'TC_OP_RESERVED_NON_FLOAT_64_1', - 125: 'TC_OP_RESERVED_NON_FLOAT_64_2', - 126: 'TC_OP_RESERVED_NON_FLOAT_64_3', - 127: 'TC_OP_RESERVED_NON_FLOAT_64_4', -} -TC_OP_READ = 0 -TC_OP_ATOMIC_FCMPSWAP_RTN_32 = 1 -TC_OP_ATOMIC_FMIN_RTN_32 = 2 -TC_OP_ATOMIC_FMAX_RTN_32 = 3 -TC_OP_RESERVED_FOP_RTN_32_0 = 4 -TC_OP_RESERVED_FADD_RTN_32 = 5 -TC_OP_RESERVED_FOP_RTN_32_2 = 6 -TC_OP_ATOMIC_SWAP_RTN_32 = 7 -TC_OP_ATOMIC_CMPSWAP_RTN_32 = 8 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32 = 9 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32 = 10 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32 = 11 -TC_OP_PROBE_FILTER = 12 -TC_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32 = 13 -TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2 = 14 -TC_OP_ATOMIC_ADD_RTN_32 = 15 -TC_OP_ATOMIC_SUB_RTN_32 = 16 -TC_OP_ATOMIC_SMIN_RTN_32 = 17 -TC_OP_ATOMIC_UMIN_RTN_32 = 18 -TC_OP_ATOMIC_SMAX_RTN_32 = 19 -TC_OP_ATOMIC_UMAX_RTN_32 = 20 -TC_OP_ATOMIC_AND_RTN_32 = 21 -TC_OP_ATOMIC_OR_RTN_32 = 22 -TC_OP_ATOMIC_XOR_RTN_32 = 23 -TC_OP_ATOMIC_INC_RTN_32 = 24 -TC_OP_ATOMIC_DEC_RTN_32 = 25 -TC_OP_WBINVL1_VOL = 26 -TC_OP_WBINVL1_SD = 27 -TC_OP_RESERVED_NON_FLOAT_RTN_32_0 = 28 -TC_OP_RESERVED_NON_FLOAT_RTN_32_1 = 29 -TC_OP_RESERVED_NON_FLOAT_RTN_32_2 = 30 -TC_OP_RESERVED_NON_FLOAT_RTN_32_3 = 31 -TC_OP_WRITE = 32 -TC_OP_ATOMIC_FCMPSWAP_RTN_64 = 33 -TC_OP_ATOMIC_FMIN_RTN_64 = 34 -TC_OP_ATOMIC_FMAX_RTN_64 = 35 -TC_OP_RESERVED_FOP_RTN_64_0 = 36 -TC_OP_RESERVED_FOP_RTN_64_1 = 37 -TC_OP_RESERVED_FOP_RTN_64_2 = 38 -TC_OP_ATOMIC_SWAP_RTN_64 = 39 -TC_OP_ATOMIC_CMPSWAP_RTN_64 = 40 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64 = 41 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64 = 42 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64 = 43 -TC_OP_WBINVL2_SD = 44 -TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_0 = 45 -TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_1 = 46 -TC_OP_ATOMIC_ADD_RTN_64 = 47 -TC_OP_ATOMIC_SUB_RTN_64 = 48 -TC_OP_ATOMIC_SMIN_RTN_64 = 49 -TC_OP_ATOMIC_UMIN_RTN_64 = 50 -TC_OP_ATOMIC_SMAX_RTN_64 = 51 -TC_OP_ATOMIC_UMAX_RTN_64 = 52 -TC_OP_ATOMIC_AND_RTN_64 = 53 -TC_OP_ATOMIC_OR_RTN_64 = 54 -TC_OP_ATOMIC_XOR_RTN_64 = 55 -TC_OP_ATOMIC_INC_RTN_64 = 56 -TC_OP_ATOMIC_DEC_RTN_64 = 57 -TC_OP_WBL2_NC = 58 -TC_OP_WBL2_WC = 59 -TC_OP_RESERVED_NON_FLOAT_RTN_64_1 = 60 -TC_OP_RESERVED_NON_FLOAT_RTN_64_2 = 61 -TC_OP_RESERVED_NON_FLOAT_RTN_64_3 = 62 -TC_OP_RESERVED_NON_FLOAT_RTN_64_4 = 63 -TC_OP_WBINVL1 = 64 -TC_OP_ATOMIC_FCMPSWAP_32 = 65 -TC_OP_ATOMIC_FMIN_32 = 66 -TC_OP_ATOMIC_FMAX_32 = 67 -TC_OP_RESERVED_FOP_32_0 = 68 -TC_OP_RESERVED_FADD_32 = 69 -TC_OP_RESERVED_FOP_32_2 = 70 -TC_OP_ATOMIC_SWAP_32 = 71 -TC_OP_ATOMIC_CMPSWAP_32 = 72 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32 = 73 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_32 = 74 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_32 = 75 -TC_OP_INV_METADATA = 76 -TC_OP_ATOMIC_FADD_FLUSH_DENORM_32 = 77 -TC_OP_RESERVED_FOP_FLUSH_DENORM_32_2 = 78 -TC_OP_ATOMIC_ADD_32 = 79 -TC_OP_ATOMIC_SUB_32 = 80 -TC_OP_ATOMIC_SMIN_32 = 81 -TC_OP_ATOMIC_UMIN_32 = 82 -TC_OP_ATOMIC_SMAX_32 = 83 -TC_OP_ATOMIC_UMAX_32 = 84 -TC_OP_ATOMIC_AND_32 = 85 -TC_OP_ATOMIC_OR_32 = 86 -TC_OP_ATOMIC_XOR_32 = 87 -TC_OP_ATOMIC_INC_32 = 88 -TC_OP_ATOMIC_DEC_32 = 89 -TC_OP_INVL2_NC = 90 -TC_OP_NOP_RTN0 = 91 -TC_OP_RESERVED_NON_FLOAT_32_1 = 92 -TC_OP_RESERVED_NON_FLOAT_32_2 = 93 -TC_OP_RESERVED_NON_FLOAT_32_3 = 94 -TC_OP_RESERVED_NON_FLOAT_32_4 = 95 -TC_OP_WBINVL2 = 96 -TC_OP_ATOMIC_FCMPSWAP_64 = 97 -TC_OP_ATOMIC_FMIN_64 = 98 -TC_OP_ATOMIC_FMAX_64 = 99 -TC_OP_RESERVED_FOP_64_0 = 100 -TC_OP_RESERVED_FOP_64_1 = 101 -TC_OP_RESERVED_FOP_64_2 = 102 -TC_OP_ATOMIC_SWAP_64 = 103 -TC_OP_ATOMIC_CMPSWAP_64 = 104 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64 = 105 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_64 = 106 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_64 = 107 -TC_OP_RESERVED_FOP_FLUSH_DENORM_64_0 = 108 -TC_OP_RESERVED_FOP_FLUSH_DENORM_64_1 = 109 -TC_OP_RESERVED_FOP_FLUSH_DENORM_64_2 = 110 -TC_OP_ATOMIC_ADD_64 = 111 -TC_OP_ATOMIC_SUB_64 = 112 -TC_OP_ATOMIC_SMIN_64 = 113 -TC_OP_ATOMIC_UMIN_64 = 114 -TC_OP_ATOMIC_SMAX_64 = 115 -TC_OP_ATOMIC_UMAX_64 = 116 -TC_OP_ATOMIC_AND_64 = 117 -TC_OP_ATOMIC_OR_64 = 118 -TC_OP_ATOMIC_XOR_64 = 119 -TC_OP_ATOMIC_INC_64 = 120 -TC_OP_ATOMIC_DEC_64 = 121 -TC_OP_WBINVL2_NC = 122 -TC_OP_NOP_ACK = 123 -TC_OP_RESERVED_NON_FLOAT_64_1 = 124 -TC_OP_RESERVED_NON_FLOAT_64_2 = 125 -TC_OP_RESERVED_NON_FLOAT_64_3 = 126 -TC_OP_RESERVED_NON_FLOAT_64_4 = 127 -TC_OP = ctypes.c_uint32 # enum - -# values for enumeration 'TC_OP_MASKS' -TC_OP_MASKS__enumvalues = { - 8: 'TC_OP_MASK_FLUSH_DENROM', - 32: 'TC_OP_MASK_64', - 64: 'TC_OP_MASK_NO_RTN', -} -TC_OP_MASK_FLUSH_DENROM = 8 -TC_OP_MASK_64 = 32 -TC_OP_MASK_NO_RTN = 64 -TC_OP_MASKS = ctypes.c_uint32 # enum - -# values for enumeration 'CLKGATE_BASE_MODE' -CLKGATE_BASE_MODE__enumvalues = { - 0: 'MULT_8', - 1: 'MULT_16', -} -MULT_8 = 0 -MULT_16 = 1 -CLKGATE_BASE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CLKGATE_SM_MODE' -CLKGATE_SM_MODE__enumvalues = { - 0: 'ON_SEQ', - 1: 'OFF_SEQ', - 2: 'PROG_SEQ', - 3: 'READ_SEQ', - 4: 'SM_MODE_RESERVED', -} -ON_SEQ = 0 -OFF_SEQ = 1 -PROG_SEQ = 2 -READ_SEQ = 3 -SM_MODE_RESERVED = 4 -CLKGATE_SM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CovToShaderSel' -CovToShaderSel__enumvalues = { - 0: 'INPUT_COVERAGE', - 1: 'INPUT_INNER_COVERAGE', - 2: 'INPUT_DEPTH_COVERAGE', - 3: 'RAW', -} -INPUT_COVERAGE = 0 -INPUT_INNER_COVERAGE = 1 -INPUT_DEPTH_COVERAGE = 2 -RAW = 3 -CovToShaderSel = ctypes.c_uint32 # enum - -# values for enumeration 'PC_PERFCNT_SEL' -PC_PERFCNT_SEL__enumvalues = { - 0: 'PC_PERF_SC_PC_PTR_SEND0', - 1: 'PC_PERF_SC_PC_PTR_VALID0', - 2: 'PC_PERF_SC_FPOSG0', - 3: 'PC_PERF_SC_FPOSG_WAIT0', - 4: 'PC_PERF_SC_WAIT_SYNC0', - 5: 'PC_PERF_SC_PQ_FREEZE0', - 6: 'PC_PERF_PKR0_FPOSG_EQ1', - 7: 'PC_PERF_PKR0_FPOSG_GT1', - 8: 'PC_PERF_PKR0_FPOSG_GT16', - 9: 'PC_PERF_PKR0_FPOSG_GT64', - 10: 'PC_PERF_PKR0_FPOSG_GT128', - 11: 'PC_PERF_PKR0_FPOSG_OUT_OF_WAVE', - 12: 'PC_PERF_PKR0_NUM_PROBES', - 13: 'PC_PERF_PKR0_PRIMS_PER_PROBE_EQ1', - 14: 'PC_PERF_PKR0_PRIMS_PER_PROBE_GT1', - 15: 'PC_PERF_PKR0_PRIMS_PER_PROBE_GT2', - 16: 'PC_PERF_PKR0_PRIMS_PER_PROBE_GT4', - 17: 'PC_PERF_PKR0_PRIMS_PER_PROBE_GT8', - 18: 'PC_PERF_PKR0_NUM_WAVES', - 19: 'PC_PERF_PKR0_PRIMS_PER_WAVE_EQ1', - 20: 'PC_PERF_PKR0_PRIMS_PER_WAVE_GT1', - 21: 'PC_PERF_PKR0_PRIMS_PER_WAVE_GT2', - 22: 'PC_PERF_PKR0_PRIMS_PER_WAVE_GT4', - 23: 'PC_PERF_PKR0_PRIMS_PER_WAVE_GT8', - 24: 'PC_PERF_PKR0_PROBES_PER_WAVE_EQ1', - 25: 'PC_PERF_PKR0_PROBES_PER_WAVE_GT1', - 26: 'PC_PERF_PKR0_PROBES_PER_WAVE_GT2', - 27: 'PC_PERF_PKR0_PROBES_PER_WAVE_GT4', - 28: 'PC_PERF_PKR0_PROBES_PER_WAVE_GT8', - 29: 'PC_PERF_PKR0_PRIMS_REUSE', - 30: 'PC_PERF_SC_PC_PTR_SEND1', - 31: 'PC_PERF_SC_PC_PTR_VALID1', - 32: 'PC_PERF_SC_FPOSG1', - 33: 'PC_PERF_SC_FPOSG_WAIT1', - 34: 'PC_PERF_SC_WAIT_SYNC1', - 35: 'PC_PERF_SC_PQ_FREEZE1', - 36: 'PC_PERF_PKR1_FPOSG_EQ1', - 37: 'PC_PERF_PKR1_FPOSG_GT1', - 38: 'PC_PERF_PKR1_FPOSG_GT16', - 39: 'PC_PERF_PKR1_FPOSG_GT64', - 40: 'PC_PERF_PKR1_FPOSG_GT128', - 41: 'PC_PERF_PKR1_FPOSG_OUT_OF_WAVE', - 42: 'PC_PERF_PKR1_NUM_PROBES', - 43: 'PC_PERF_PKR1_PRIMS_PER_PROBE_EQ1', - 44: 'PC_PERF_PKR1_PRIMS_PER_PROBE_GT1', - 45: 'PC_PERF_PKR1_PRIMS_PER_PROBE_GT2', - 46: 'PC_PERF_PKR1_PRIMS_PER_PROBE_GT4', - 47: 'PC_PERF_PKR1_PRIMS_PER_PROBE_GT8', - 48: 'PC_PERF_PKR1_NUM_WAVES', - 49: 'PC_PERF_PKR1_PRIMS_PER_WAVE_EQ1', - 50: 'PC_PERF_PKR1_PRIMS_PER_WAVE_GT1', - 51: 'PC_PERF_PKR1_PRIMS_PER_WAVE_GT2', - 52: 'PC_PERF_PKR1_PRIMS_PER_WAVE_GT4', - 53: 'PC_PERF_PKR1_PRIMS_PER_WAVE_GT8', - 54: 'PC_PERF_PKR1_PROBES_PER_WAVE_EQ1', - 55: 'PC_PERF_PKR1_PROBES_PER_WAVE_GT1', - 56: 'PC_PERF_PKR1_PROBES_PER_WAVE_GT2', - 57: 'PC_PERF_PKR1_PROBES_PER_WAVE_GT4', - 58: 'PC_PERF_PKR1_PROBES_PER_WAVE_GT8', - 59: 'PC_PERF_PKR1_PRIMS_REUSE', - 60: 'PC_PERF_SC_PC_PTR_SEND2', - 61: 'PC_PERF_SC_PC_PTR_VALID2', - 62: 'PC_PERF_SC_FPOSG2', - 63: 'PC_PERF_SC_FPOSG_WAIT2', - 64: 'PC_PERF_SC_WAIT_SYNC2', - 65: 'PC_PERF_SC_PQ_FREEZE2', - 66: 'PC_PERF_PKR2_FPOSG_EQ1', - 67: 'PC_PERF_PKR2_FPOSG_GT1', - 68: 'PC_PERF_PKR2_FPOSG_GT16', - 69: 'PC_PERF_PKR2_FPOSG_GT64', - 70: 'PC_PERF_PKR2_FPOSG_GT128', - 71: 'PC_PERF_PKR2_FPOSG_OUT_OF_WAVE', - 72: 'PC_PERF_PKR2_NUM_PROBES', - 73: 'PC_PERF_PKR2_PRIMS_PER_PROBE_EQ1', - 74: 'PC_PERF_PKR2_PRIMS_PER_PROBE_GT1', - 75: 'PC_PERF_PKR2_PRIMS_PER_PROBE_GT2', - 76: 'PC_PERF_PKR2_PRIMS_PER_PROBE_GT4', - 77: 'PC_PERF_PKR2_PRIMS_PER_PROBE_GT8', - 78: 'PC_PERF_PKR2_NUM_WAVES', - 79: 'PC_PERF_PKR2_PRIMS_PER_WAVE_EQ1', - 80: 'PC_PERF_PKR2_PRIMS_PER_WAVE_GT1', - 81: 'PC_PERF_PKR2_PRIMS_PER_WAVE_GT2', - 82: 'PC_PERF_PKR2_PRIMS_PER_WAVE_GT4', - 83: 'PC_PERF_PKR2_PRIMS_PER_WAVE_GT8', - 84: 'PC_PERF_PKR2_PROBES_PER_WAVE_EQ1', - 85: 'PC_PERF_PKR2_PROBES_PER_WAVE_GT1', - 86: 'PC_PERF_PKR2_PROBES_PER_WAVE_GT2', - 87: 'PC_PERF_PKR2_PROBES_PER_WAVE_GT4', - 88: 'PC_PERF_PKR2_PROBES_PER_WAVE_GT8', - 89: 'PC_PERF_PKR2_PRIMS_REUSE', - 90: 'PC_PERF_SC_PC_PTR_SEND3', - 91: 'PC_PERF_SC_PC_PTR_VALID3', - 92: 'PC_PERF_SC_FPOSG3', - 93: 'PC_PERF_SC_FPOSG_WAIT3', - 94: 'PC_PERF_SC_WAIT_SYNC3', - 95: 'PC_PERF_SC_PQ_FREEZE3', - 96: 'PC_PERF_PKR3_FPOSG_EQ1', - 97: 'PC_PERF_PKR3_FPOSG_GT1', - 98: 'PC_PERF_PKR3_FPOSG_GT16', - 99: 'PC_PERF_PKR3_FPOSG_GT64', - 100: 'PC_PERF_PKR3_FPOSG_GT128', - 101: 'PC_PERF_PKR3_FPOSG_OUT_OF_WAVE', - 102: 'PC_PERF_PKR3_NUM_PROBES', - 103: 'PC_PERF_PKR3_PRIMS_PER_PROBE_EQ1', - 104: 'PC_PERF_PKR3_PRIMS_PER_PROBE_GT1', - 105: 'PC_PERF_PKR3_PRIMS_PER_PROBE_GT2', - 106: 'PC_PERF_PKR3_PRIMS_PER_PROBE_GT4', - 107: 'PC_PERF_PKR3_PRIMS_PER_PROBE_GT8', - 108: 'PC_PERF_PKR3_NUM_WAVES', - 109: 'PC_PERF_PKR3_PRIMS_PER_WAVE_EQ1', - 110: 'PC_PERF_PKR3_PRIMS_PER_WAVE_GT1', - 111: 'PC_PERF_PKR3_PRIMS_PER_WAVE_GT2', - 112: 'PC_PERF_PKR3_PRIMS_PER_WAVE_GT4', - 113: 'PC_PERF_PKR3_PRIMS_PER_WAVE_GT8', - 114: 'PC_PERF_PKR3_PROBES_PER_WAVE_EQ1', - 115: 'PC_PERF_PKR3_PROBES_PER_WAVE_GT1', - 116: 'PC_PERF_PKR3_PROBES_PER_WAVE_GT2', - 117: 'PC_PERF_PKR3_PROBES_PER_WAVE_GT4', - 118: 'PC_PERF_PKR3_PROBES_PER_WAVE_GT8', - 119: 'PC_PERF_PKR3_PRIMS_REUSE', - 120: 'PC_PERF_SC_MW_FREEZE', - 121: 'PC_PERF_SC_NUM_PROBES', - 122: 'PC_PERF_SC_NUM_WAVES', - 123: 'PC_PERF_SC_NUM_SPLIT_WAVES', - 124: 'PC_PERF_GE_GSDONE', - 125: 'PC_PERF_PKR0_GSDONE_WHILE_IDLE', - 126: 'PC_PERF_PKR1_GSDONE_WHILE_IDLE', - 127: 'PC_PERF_PKR2_GSDONE_WHILE_IDLE', - 128: 'PC_PERF_PKR3_GSDONE_WHILE_IDLE', - 129: 'PC_PERF_PC_SPI_PROBE_FREEZE', - 130: 'PC_PERF_PC_SPI_PROBE_OUT_OF_CREDIT', - 131: 'PC_PERF_MW_RTN_ADDR_FREEZE', - 132: 'PC_PERF_MW_PROBE_CNT_FREEZE', - 133: 'PC_PERF_MW_GL1H_REQ_FREEZE', - 134: 'PC_PERF_MW_GL1H_NUM_REQS', - 135: 'PC_PERF_MW_DLINE_ALLOC', - 136: 'PC_PERF_MW_DLINE_DEALLOC', - 137: 'PC_PERF_MW_TAGLINE_ALLOC', - 138: 'PC_PERF_MW_TAGLINE_DEALLOC', - 139: 'PC_PERF_MW_PHY_DLINE_FULL_STALL', - 140: 'PC_PERF_MW_CACHE_CNTL_FULL_STALL', - 141: 'PC_PERF_MW_STAMP_LIMIT_STALL', - 142: 'PC_PERF_MW_CACHE_MISS', - 143: 'PC_PERF_MW_CACHE_HIT', - 144: 'PC_PERF_MW_CACHE_REUSE', - 145: 'PC_PERF_MW_DEALLOC_HIT', - 146: 'PC_PERF_PC_MEM_BANK_CONF0', - 147: 'PC_PERF_PC_MEM_BANK_CONF1', - 148: 'PC_PERF_PC_LDS_VERTEX_REUSE0', - 149: 'PC_PERF_PC_LDS_CNTL_VALID0', - 150: 'PC_PERF_PC_LDS_VERTEX_REUSE1', - 151: 'PC_PERF_PC_LDS_CNTL_VALID1', - 152: 'PC_PERF_GRBM_BUSY', - 153: 'PC_PERF_GL1_RTN_CNT_GTE1', - 154: 'PC_PERF_GL1_RTN_CNT_GT512', - 155: 'PC_PERF_GL1_RTN_CNT_GT768', - 156: 'PC_PERF_LWC0_PROBE_ORDER_STALL', - 157: 'PC_PERF_LWC0_PC_MEM_READ_STALL', - 158: 'PC_PERF_LWC0_PKR2_SA_BDRY_CROSSING', - 159: 'PC_PERF_LWC0_PKR3_SA_BDRY_CROSSING', - 160: 'PC_PERF_LWC1_PROBE_ORDER_STALL', - 161: 'PC_PERF_LWC1_PC_MEM_READ_STALL', - 162: 'PC_PERF_LWC1_PKR0_SA_BDRY_CROSSING', - 163: 'PC_PERF_LWC1_PKR1_SA_BDRY_CROSSING', - 164: 'PC_PERF_NUM_PSWAVE', -} -PC_PERF_SC_PC_PTR_SEND0 = 0 -PC_PERF_SC_PC_PTR_VALID0 = 1 -PC_PERF_SC_FPOSG0 = 2 -PC_PERF_SC_FPOSG_WAIT0 = 3 -PC_PERF_SC_WAIT_SYNC0 = 4 -PC_PERF_SC_PQ_FREEZE0 = 5 -PC_PERF_PKR0_FPOSG_EQ1 = 6 -PC_PERF_PKR0_FPOSG_GT1 = 7 -PC_PERF_PKR0_FPOSG_GT16 = 8 -PC_PERF_PKR0_FPOSG_GT64 = 9 -PC_PERF_PKR0_FPOSG_GT128 = 10 -PC_PERF_PKR0_FPOSG_OUT_OF_WAVE = 11 -PC_PERF_PKR0_NUM_PROBES = 12 -PC_PERF_PKR0_PRIMS_PER_PROBE_EQ1 = 13 -PC_PERF_PKR0_PRIMS_PER_PROBE_GT1 = 14 -PC_PERF_PKR0_PRIMS_PER_PROBE_GT2 = 15 -PC_PERF_PKR0_PRIMS_PER_PROBE_GT4 = 16 -PC_PERF_PKR0_PRIMS_PER_PROBE_GT8 = 17 -PC_PERF_PKR0_NUM_WAVES = 18 -PC_PERF_PKR0_PRIMS_PER_WAVE_EQ1 = 19 -PC_PERF_PKR0_PRIMS_PER_WAVE_GT1 = 20 -PC_PERF_PKR0_PRIMS_PER_WAVE_GT2 = 21 -PC_PERF_PKR0_PRIMS_PER_WAVE_GT4 = 22 -PC_PERF_PKR0_PRIMS_PER_WAVE_GT8 = 23 -PC_PERF_PKR0_PROBES_PER_WAVE_EQ1 = 24 -PC_PERF_PKR0_PROBES_PER_WAVE_GT1 = 25 -PC_PERF_PKR0_PROBES_PER_WAVE_GT2 = 26 -PC_PERF_PKR0_PROBES_PER_WAVE_GT4 = 27 -PC_PERF_PKR0_PROBES_PER_WAVE_GT8 = 28 -PC_PERF_PKR0_PRIMS_REUSE = 29 -PC_PERF_SC_PC_PTR_SEND1 = 30 -PC_PERF_SC_PC_PTR_VALID1 = 31 -PC_PERF_SC_FPOSG1 = 32 -PC_PERF_SC_FPOSG_WAIT1 = 33 -PC_PERF_SC_WAIT_SYNC1 = 34 -PC_PERF_SC_PQ_FREEZE1 = 35 -PC_PERF_PKR1_FPOSG_EQ1 = 36 -PC_PERF_PKR1_FPOSG_GT1 = 37 -PC_PERF_PKR1_FPOSG_GT16 = 38 -PC_PERF_PKR1_FPOSG_GT64 = 39 -PC_PERF_PKR1_FPOSG_GT128 = 40 -PC_PERF_PKR1_FPOSG_OUT_OF_WAVE = 41 -PC_PERF_PKR1_NUM_PROBES = 42 -PC_PERF_PKR1_PRIMS_PER_PROBE_EQ1 = 43 -PC_PERF_PKR1_PRIMS_PER_PROBE_GT1 = 44 -PC_PERF_PKR1_PRIMS_PER_PROBE_GT2 = 45 -PC_PERF_PKR1_PRIMS_PER_PROBE_GT4 = 46 -PC_PERF_PKR1_PRIMS_PER_PROBE_GT8 = 47 -PC_PERF_PKR1_NUM_WAVES = 48 -PC_PERF_PKR1_PRIMS_PER_WAVE_EQ1 = 49 -PC_PERF_PKR1_PRIMS_PER_WAVE_GT1 = 50 -PC_PERF_PKR1_PRIMS_PER_WAVE_GT2 = 51 -PC_PERF_PKR1_PRIMS_PER_WAVE_GT4 = 52 -PC_PERF_PKR1_PRIMS_PER_WAVE_GT8 = 53 -PC_PERF_PKR1_PROBES_PER_WAVE_EQ1 = 54 -PC_PERF_PKR1_PROBES_PER_WAVE_GT1 = 55 -PC_PERF_PKR1_PROBES_PER_WAVE_GT2 = 56 -PC_PERF_PKR1_PROBES_PER_WAVE_GT4 = 57 -PC_PERF_PKR1_PROBES_PER_WAVE_GT8 = 58 -PC_PERF_PKR1_PRIMS_REUSE = 59 -PC_PERF_SC_PC_PTR_SEND2 = 60 -PC_PERF_SC_PC_PTR_VALID2 = 61 -PC_PERF_SC_FPOSG2 = 62 -PC_PERF_SC_FPOSG_WAIT2 = 63 -PC_PERF_SC_WAIT_SYNC2 = 64 -PC_PERF_SC_PQ_FREEZE2 = 65 -PC_PERF_PKR2_FPOSG_EQ1 = 66 -PC_PERF_PKR2_FPOSG_GT1 = 67 -PC_PERF_PKR2_FPOSG_GT16 = 68 -PC_PERF_PKR2_FPOSG_GT64 = 69 -PC_PERF_PKR2_FPOSG_GT128 = 70 -PC_PERF_PKR2_FPOSG_OUT_OF_WAVE = 71 -PC_PERF_PKR2_NUM_PROBES = 72 -PC_PERF_PKR2_PRIMS_PER_PROBE_EQ1 = 73 -PC_PERF_PKR2_PRIMS_PER_PROBE_GT1 = 74 -PC_PERF_PKR2_PRIMS_PER_PROBE_GT2 = 75 -PC_PERF_PKR2_PRIMS_PER_PROBE_GT4 = 76 -PC_PERF_PKR2_PRIMS_PER_PROBE_GT8 = 77 -PC_PERF_PKR2_NUM_WAVES = 78 -PC_PERF_PKR2_PRIMS_PER_WAVE_EQ1 = 79 -PC_PERF_PKR2_PRIMS_PER_WAVE_GT1 = 80 -PC_PERF_PKR2_PRIMS_PER_WAVE_GT2 = 81 -PC_PERF_PKR2_PRIMS_PER_WAVE_GT4 = 82 -PC_PERF_PKR2_PRIMS_PER_WAVE_GT8 = 83 -PC_PERF_PKR2_PROBES_PER_WAVE_EQ1 = 84 -PC_PERF_PKR2_PROBES_PER_WAVE_GT1 = 85 -PC_PERF_PKR2_PROBES_PER_WAVE_GT2 = 86 -PC_PERF_PKR2_PROBES_PER_WAVE_GT4 = 87 -PC_PERF_PKR2_PROBES_PER_WAVE_GT8 = 88 -PC_PERF_PKR2_PRIMS_REUSE = 89 -PC_PERF_SC_PC_PTR_SEND3 = 90 -PC_PERF_SC_PC_PTR_VALID3 = 91 -PC_PERF_SC_FPOSG3 = 92 -PC_PERF_SC_FPOSG_WAIT3 = 93 -PC_PERF_SC_WAIT_SYNC3 = 94 -PC_PERF_SC_PQ_FREEZE3 = 95 -PC_PERF_PKR3_FPOSG_EQ1 = 96 -PC_PERF_PKR3_FPOSG_GT1 = 97 -PC_PERF_PKR3_FPOSG_GT16 = 98 -PC_PERF_PKR3_FPOSG_GT64 = 99 -PC_PERF_PKR3_FPOSG_GT128 = 100 -PC_PERF_PKR3_FPOSG_OUT_OF_WAVE = 101 -PC_PERF_PKR3_NUM_PROBES = 102 -PC_PERF_PKR3_PRIMS_PER_PROBE_EQ1 = 103 -PC_PERF_PKR3_PRIMS_PER_PROBE_GT1 = 104 -PC_PERF_PKR3_PRIMS_PER_PROBE_GT2 = 105 -PC_PERF_PKR3_PRIMS_PER_PROBE_GT4 = 106 -PC_PERF_PKR3_PRIMS_PER_PROBE_GT8 = 107 -PC_PERF_PKR3_NUM_WAVES = 108 -PC_PERF_PKR3_PRIMS_PER_WAVE_EQ1 = 109 -PC_PERF_PKR3_PRIMS_PER_WAVE_GT1 = 110 -PC_PERF_PKR3_PRIMS_PER_WAVE_GT2 = 111 -PC_PERF_PKR3_PRIMS_PER_WAVE_GT4 = 112 -PC_PERF_PKR3_PRIMS_PER_WAVE_GT8 = 113 -PC_PERF_PKR3_PROBES_PER_WAVE_EQ1 = 114 -PC_PERF_PKR3_PROBES_PER_WAVE_GT1 = 115 -PC_PERF_PKR3_PROBES_PER_WAVE_GT2 = 116 -PC_PERF_PKR3_PROBES_PER_WAVE_GT4 = 117 -PC_PERF_PKR3_PROBES_PER_WAVE_GT8 = 118 -PC_PERF_PKR3_PRIMS_REUSE = 119 -PC_PERF_SC_MW_FREEZE = 120 -PC_PERF_SC_NUM_PROBES = 121 -PC_PERF_SC_NUM_WAVES = 122 -PC_PERF_SC_NUM_SPLIT_WAVES = 123 -PC_PERF_GE_GSDONE = 124 -PC_PERF_PKR0_GSDONE_WHILE_IDLE = 125 -PC_PERF_PKR1_GSDONE_WHILE_IDLE = 126 -PC_PERF_PKR2_GSDONE_WHILE_IDLE = 127 -PC_PERF_PKR3_GSDONE_WHILE_IDLE = 128 -PC_PERF_PC_SPI_PROBE_FREEZE = 129 -PC_PERF_PC_SPI_PROBE_OUT_OF_CREDIT = 130 -PC_PERF_MW_RTN_ADDR_FREEZE = 131 -PC_PERF_MW_PROBE_CNT_FREEZE = 132 -PC_PERF_MW_GL1H_REQ_FREEZE = 133 -PC_PERF_MW_GL1H_NUM_REQS = 134 -PC_PERF_MW_DLINE_ALLOC = 135 -PC_PERF_MW_DLINE_DEALLOC = 136 -PC_PERF_MW_TAGLINE_ALLOC = 137 -PC_PERF_MW_TAGLINE_DEALLOC = 138 -PC_PERF_MW_PHY_DLINE_FULL_STALL = 139 -PC_PERF_MW_CACHE_CNTL_FULL_STALL = 140 -PC_PERF_MW_STAMP_LIMIT_STALL = 141 -PC_PERF_MW_CACHE_MISS = 142 -PC_PERF_MW_CACHE_HIT = 143 -PC_PERF_MW_CACHE_REUSE = 144 -PC_PERF_MW_DEALLOC_HIT = 145 -PC_PERF_PC_MEM_BANK_CONF0 = 146 -PC_PERF_PC_MEM_BANK_CONF1 = 147 -PC_PERF_PC_LDS_VERTEX_REUSE0 = 148 -PC_PERF_PC_LDS_CNTL_VALID0 = 149 -PC_PERF_PC_LDS_VERTEX_REUSE1 = 150 -PC_PERF_PC_LDS_CNTL_VALID1 = 151 -PC_PERF_GRBM_BUSY = 152 -PC_PERF_GL1_RTN_CNT_GTE1 = 153 -PC_PERF_GL1_RTN_CNT_GT512 = 154 -PC_PERF_GL1_RTN_CNT_GT768 = 155 -PC_PERF_LWC0_PROBE_ORDER_STALL = 156 -PC_PERF_LWC0_PC_MEM_READ_STALL = 157 -PC_PERF_LWC0_PKR2_SA_BDRY_CROSSING = 158 -PC_PERF_LWC0_PKR3_SA_BDRY_CROSSING = 159 -PC_PERF_LWC1_PROBE_ORDER_STALL = 160 -PC_PERF_LWC1_PC_MEM_READ_STALL = 161 -PC_PERF_LWC1_PKR0_SA_BDRY_CROSSING = 162 -PC_PERF_LWC1_PKR1_SA_BDRY_CROSSING = 163 -PC_PERF_NUM_PSWAVE = 164 -PC_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_FOG_MODE' -SPI_FOG_MODE__enumvalues = { - 0: 'SPI_FOG_NONE', - 1: 'SPI_FOG_EXP', - 2: 'SPI_FOG_EXP2', - 3: 'SPI_FOG_LINEAR', -} -SPI_FOG_NONE = 0 -SPI_FOG_EXP = 1 -SPI_FOG_EXP2 = 2 -SPI_FOG_LINEAR = 3 -SPI_FOG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_LB_WAVES_SELECT' -SPI_LB_WAVES_SELECT__enumvalues = { - 0: 'HS_GS', - 1: 'PS', - 2: 'CS_NA', - 3: 'SPI_LB_WAVES_RSVD', -} -HS_GS = 0 -PS = 1 -CS_NA = 2 -SPI_LB_WAVES_RSVD = 3 -SPI_LB_WAVES_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_PERFCNT_SEL' -SPI_PERFCNT_SEL__enumvalues = { - 1: 'SPI_PERF_GS_WINDOW_VALID', - 2: 'SPI_PERF_GS_BUSY', - 3: 'SPI_PERF_GS_CRAWLER_STALL', - 4: 'SPI_PERF_GS_EVENT_WAVE', - 5: 'SPI_PERF_GS_WAVE', - 6: 'SPI_PERF_GS_PERS_UPD_FULL0', - 7: 'SPI_PERF_GS_PERS_UPD_FULL1', - 8: 'SPI_PERF_GS_FIRST_SUBGRP', - 9: 'SPI_PERF_GS_HS_DEALLOC', - 10: 'SPI_PERF_GS_NGG_SE_LATE_ALLOC_LIMIT', - 11: 'SPI_PERF_GS_POS0_STALL', - 12: 'SPI_PERF_GS_POS1_STALL', - 13: 'SPI_PERF_GS_INDX0_STALL', - 14: 'SPI_PERF_GS_INDX1_STALL', - 15: 'SPI_PERF_GS_PWS_STALL', - 16: 'SPI_PERF_GS_GRP_LIFETIME', - 17: 'SPI_PERF_GS_WAVE_IN_FLIGHT', - 18: 'SPI_PERF_GS_GRP_LIFETIME_SAMPLE', - 21: 'SPI_PERF_HS_WINDOW_VALID', - 22: 'SPI_PERF_HS_BUSY', - 23: 'SPI_PERF_HS_CRAWLER_STALL', - 24: 'SPI_PERF_HS_FIRST_WAVE', - 26: 'SPI_PERF_HS_EVENT_WAVE', - 27: 'SPI_PERF_HS_WAVE', - 28: 'SPI_PERF_HS_PERS_UPD_FULL0', - 29: 'SPI_PERF_HS_PERS_UPD_FULL1', - 30: 'SPI_PERF_HS_PWS_STALL', - 31: 'SPI_PERF_HS_WAVE_IN_FLIGHT', - 37: 'SPI_PERF_CSGN_WINDOW_VALID', - 38: 'SPI_PERF_CSGN_BUSY', - 39: 'SPI_PERF_CSGN_NUM_THREADGROUPS', - 40: 'SPI_PERF_CSGN_CRAWLER_STALL', - 41: 'SPI_PERF_CSGN_EVENT_WAVE', - 42: 'SPI_PERF_CSGN_WAVE', - 43: 'SPI_PERF_CSGN_PWS_STALL', - 44: 'SPI_PERF_CSGN_WAVE_IN_FLIGHT', - 45: 'SPI_PERF_CSN_WINDOW_VALID', - 46: 'SPI_PERF_CSN_BUSY', - 47: 'SPI_PERF_CSN_NUM_THREADGROUPS', - 48: 'SPI_PERF_CSN_CRAWLER_STALL', - 49: 'SPI_PERF_CSN_EVENT_WAVE', - 50: 'SPI_PERF_CSN_WAVE', - 51: 'SPI_PERF_CSN_WAVE_IN_FLIGHT', - 53: 'SPI_PERF_PS0_WINDOW_VALID', - 54: 'SPI_PERF_PS1_WINDOW_VALID', - 55: 'SPI_PERF_PS2_WINDOW_VALID', - 56: 'SPI_PERF_PS3_WINDOW_VALID', - 57: 'SPI_PERF_PS0_BUSY', - 58: 'SPI_PERF_PS1_BUSY', - 59: 'SPI_PERF_PS2_BUSY', - 60: 'SPI_PERF_PS3_BUSY', - 61: 'SPI_PERF_PS0_ACTIVE', - 62: 'SPI_PERF_PS1_ACTIVE', - 63: 'SPI_PERF_PS2_ACTIVE', - 64: 'SPI_PERF_PS3_ACTIVE', - 65: 'SPI_PERF_PS0_DEALLOC', - 66: 'SPI_PERF_PS1_DEALLOC', - 67: 'SPI_PERF_PS2_DEALLOC', - 68: 'SPI_PERF_PS3_DEALLOC', - 69: 'SPI_PERF_PS0_EVENT_WAVE', - 70: 'SPI_PERF_PS1_EVENT_WAVE', - 71: 'SPI_PERF_PS2_EVENT_WAVE', - 72: 'SPI_PERF_PS3_EVENT_WAVE', - 73: 'SPI_PERF_PS0_WAVE', - 74: 'SPI_PERF_PS1_WAVE', - 75: 'SPI_PERF_PS2_WAVE', - 76: 'SPI_PERF_PS3_WAVE', - 77: 'SPI_PERF_PS0_OPT_WAVE', - 78: 'SPI_PERF_PS1_OPT_WAVE', - 79: 'SPI_PERF_PS2_OPT_WAVE', - 80: 'SPI_PERF_PS3_OPT_WAVE', - 81: 'SPI_PERF_PS0_PRIM_BIN0', - 82: 'SPI_PERF_PS1_PRIM_BIN0', - 83: 'SPI_PERF_PS2_PRIM_BIN0', - 84: 'SPI_PERF_PS3_PRIM_BIN0', - 85: 'SPI_PERF_PS0_PRIM_BIN1', - 86: 'SPI_PERF_PS1_PRIM_BIN1', - 87: 'SPI_PERF_PS2_PRIM_BIN1', - 88: 'SPI_PERF_PS3_PRIM_BIN1', - 89: 'SPI_PERF_PS0_CRAWLER_STALL', - 90: 'SPI_PERF_PS1_CRAWLER_STALL', - 91: 'SPI_PERF_PS2_CRAWLER_STALL', - 92: 'SPI_PERF_PS3_CRAWLER_STALL', - 93: 'SPI_PERF_PS_PERS_UPD_FULL0', - 94: 'SPI_PERF_PS_PERS_UPD_FULL1', - 95: 'SPI_PERF_PS0_2_WAVE_GROUPS', - 96: 'SPI_PERF_PS1_2_WAVE_GROUPS', - 97: 'SPI_PERF_PS2_2_WAVE_GROUPS', - 98: 'SPI_PERF_PS3_2_WAVE_GROUPS', - 99: 'SPI_PERF_PS0_WAVE_GROUP_CLOCK_DELAY', - 100: 'SPI_PERF_PS1_WAVE_GROUP_CLOCK_DELAY', - 101: 'SPI_PERF_PS2_WAVE_GROUP_CLOCK_DELAY', - 102: 'SPI_PERF_PS3_WAVE_GROUP_CLOCK_DELAY', - 103: 'SPI_PERF_PS0_WAVE_GROUP_TIMEOUTS', - 104: 'SPI_PERF_PS1_WAVE_GROUP_TIMEOUTS', - 105: 'SPI_PERF_PS2_WAVE_GROUP_TIMEOUTS', - 106: 'SPI_PERF_PS3_WAVE_GROUP_TIMEOUTS', - 107: 'SPI_PERF_PS_PWS_STALL', - 108: 'SPI_PERF_PS0_LDS_DONE_FULL', - 109: 'SPI_PERF_PS1_LDS_DONE_FULL', - 110: 'SPI_PERF_PS2_LDS_DONE_FULL', - 111: 'SPI_PERF_PS3_LDS_DONE_FULL', - 112: 'SPI_PERF_PS0_DEALLOC_FULL', - 113: 'SPI_PERF_PS1_DEALLOC_FULL', - 114: 'SPI_PERF_PS2_DEALLOC_FULL', - 115: 'SPI_PERF_PS3_DEALLOC_FULL', - 116: 'SPI_PERF_PS0_WAVE_IN_FLIGHT', - 117: 'SPI_PERF_PS1_WAVE_IN_FLIGHT', - 118: 'SPI_PERF_PS2_WAVE_IN_FLIGHT', - 119: 'SPI_PERF_PS3_WAVE_IN_FLIGHT', - 133: 'SPI_PERF_RA_GS_LDS_OCCUPANCY', - 134: 'SPI_PERF_RA_GS_VGPR_OCCUPANCY', - 135: 'SPI_PERF_RA_PS_LDS_OCCUPANCY', - 136: 'SPI_PERF_RA_PS_VGPR_OCCUPANCY', - 137: 'SPI_PERF_RA_SPI_THROTTLE', - 138: 'SPI_PERF_RA_PH_THROTTLE', - 139: 'SPI_PERF_RA_PC_PROBE_STALL_PS', - 140: 'SPI_PERF_RA_PC_PSWAVE_STALL_PS', - 141: 'SPI_PERF_RA_PIPE_REQ_BIN2', - 142: 'SPI_PERF_RA_TASK_REQ_BIN3', - 143: 'SPI_PERF_RA_WR_CTL_FULL', - 144: 'SPI_PERF_RA_REQ_NO_ALLOC', - 145: 'SPI_PERF_RA_REQ_NO_ALLOC_PS', - 146: 'SPI_PERF_RA_REQ_NO_ALLOC_GS', - 147: 'SPI_PERF_RA_REQ_NO_ALLOC_HS', - 148: 'SPI_PERF_RA_REQ_NO_ALLOC_CSG', - 149: 'SPI_PERF_RA_REQ_NO_ALLOC_CSN', - 150: 'SPI_PERF_RA_RES_STALL_PS', - 151: 'SPI_PERF_RA_RES_STALL_GS', - 152: 'SPI_PERF_RA_RES_STALL_HS', - 153: 'SPI_PERF_RA_RES_STALL_CSG', - 154: 'SPI_PERF_RA_RES_STALL_CSN', - 155: 'SPI_PERF_RA_TMP_STALL_PS', - 156: 'SPI_PERF_RA_TMP_STALL_GS', - 157: 'SPI_PERF_RA_TMP_STALL_HS', - 158: 'SPI_PERF_RA_TMP_STALL_CSG', - 159: 'SPI_PERF_RA_TMP_STALL_CSN', - 160: 'SPI_PERF_RA_WAVE_SIMD_FULL_PS', - 161: 'SPI_PERF_RA_WAVE_SIMD_FULL_GS', - 162: 'SPI_PERF_RA_WAVE_SIMD_FULL_HS', - 163: 'SPI_PERF_RA_WAVE_SIMD_FULL_CSG', - 164: 'SPI_PERF_RA_WAVE_SIMD_FULL_CSN', - 165: 'SPI_PERF_RA_VGPR_SIMD_FULL_PS', - 166: 'SPI_PERF_RA_VGPR_SIMD_FULL_GS', - 167: 'SPI_PERF_RA_VGPR_SIMD_FULL_HS', - 168: 'SPI_PERF_RA_VGPR_SIMD_FULL_CSG', - 169: 'SPI_PERF_RA_VGPR_SIMD_FULL_CSN', - 170: 'SPI_PERF_RA_LDS_CU_FULL_PS', - 171: 'SPI_PERF_RA_LDS_CU_FULL_HS', - 172: 'SPI_PERF_RA_LDS_CU_FULL_GS', - 173: 'SPI_PERF_RA_LDS_CU_FULL_CSG', - 174: 'SPI_PERF_RA_LDS_CU_FULL_CSN', - 175: 'SPI_PERF_RA_BAR_CU_FULL_PS', - 176: 'SPI_PERF_RA_BAR_CU_FULL_GS', - 177: 'SPI_PERF_RA_BAR_CU_FULL_HS', - 178: 'SPI_PERF_RA_BAR_CU_FULL_CSG', - 179: 'SPI_PERF_RA_BAR_CU_FULL_CSN', - 180: 'SPI_PERF_RA_BULKY_CU_FULL_CSG', - 181: 'SPI_PERF_RA_BULKY_CU_FULL_CSN', - 182: 'SPI_PERF_RA_TGLIM_CU_FULL_CSG', - 183: 'SPI_PERF_RA_TGLIM_CU_FULL_CSN', - 184: 'SPI_PERF_RA_WVLIM_STALL_PS', - 185: 'SPI_PERF_RA_WVLIM_STALL_GS', - 186: 'SPI_PERF_RA_WVLIM_STALL_HS', - 187: 'SPI_PERF_RA_WVLIM_STALL_CSG', - 188: 'SPI_PERF_RA_WVLIM_STALL_CSN', - 189: 'SPI_PERF_RA_GS_LOCK', - 190: 'SPI_PERF_RA_HS_LOCK', - 191: 'SPI_PERF_RA_CSG_LOCK', - 192: 'SPI_PERF_RA_CSN_LOCK', - 193: 'SPI_PERF_RA_RSV_UPD', - 194: 'SPI_PERF_RA_PRE_ALLOC_STALL', - 195: 'SPI_PERF_RA_GFX_UNDER_TUNNEL', - 196: 'SPI_PERF_RA_CSC_UNDER_TUNNEL', - 197: 'SPI_PERF_RA_WVALLOC_STALL', - 198: 'SPI_PERF_RA_ACCUM0_SIMD_FULL_PS', - 199: 'SPI_PERF_RA_ACCUM1_SIMD_FULL_PS', - 200: 'SPI_PERF_RA_ACCUM2_SIMD_FULL_PS', - 201: 'SPI_PERF_RA_ACCUM3_SIMD_FULL_PS', - 202: 'SPI_PERF_RA_ACCUM0_SIMD_FULL_GS', - 203: 'SPI_PERF_RA_ACCUM1_SIMD_FULL_GS', - 204: 'SPI_PERF_RA_ACCUM2_SIMD_FULL_GS', - 205: 'SPI_PERF_RA_ACCUM3_SIMD_FULL_GS', - 206: 'SPI_PERF_RA_ACCUM0_SIMD_FULL_HS', - 207: 'SPI_PERF_RA_ACCUM1_SIMD_FULL_HS', - 208: 'SPI_PERF_RA_ACCUM2_SIMD_FULL_HS', - 209: 'SPI_PERF_RA_ACCUM3_SIMD_FULL_HS', - 210: 'SPI_PERF_RA_ACCUM0_SIMD_FULL_CSG', - 211: 'SPI_PERF_RA_ACCUM1_SIMD_FULL_CSG', - 212: 'SPI_PERF_RA_ACCUM2_SIMD_FULL_CSG', - 213: 'SPI_PERF_RA_ACCUM3_SIMD_FULL_CSG', - 214: 'SPI_PERF_RA_ACCUM0_SIMD_FULL_CSN', - 215: 'SPI_PERF_RA_ACCUM1_SIMD_FULL_CSN', - 216: 'SPI_PERF_RA_ACCUM2_SIMD_FULL_CSN', - 217: 'SPI_PERF_RA_ACCUM3_SIMD_FULL_CSN', - 218: 'SPI_PERF_EXP_ARB_COL_CNT', - 219: 'SPI_PERF_EXP_ARB_POS_CNT', - 220: 'SPI_PERF_EXP_ARB_GDS_CNT', - 221: 'SPI_PERF_EXP_ARB_IDX_CNT', - 222: 'SPI_PERF_EXP_WITH_CONFLICT', - 223: 'SPI_PERF_EXP_WITH_CONFLICT_CLEAR', - 224: 'SPI_PERF_GS_EXP_DONE', - 225: 'SPI_PERF_PS_EXP_DONE', - 226: 'SPI_PERF_PS_EXP_ARB_CONFLICT', - 227: 'SPI_PERF_GS_SCBD_IDX_CLEANUP', - 228: 'SPI_PERF_GS_SCBD_POS_CLEANUP', - 229: 'SPI_PERF_PS_EXP_ALLOC', - 230: 'SPI_PERF_PS0_WAVEID_STARVED', - 231: 'SPI_PERF_PS1_WAVEID_STARVED', - 232: 'SPI_PERF_PS2_WAVEID_STARVED', - 233: 'SPI_PERF_PS3_WAVEID_STARVED', - 234: 'SPI_PERF_PS0_EXP_ALLOC_WITH_CONFLICT', - 235: 'SPI_PERF_PS1_EXP_ALLOC_WITH_CONFLICT', - 236: 'SPI_PERF_PS2_EXP_ALLOC_WITH_CONFLICT', - 237: 'SPI_PERF_PS3_EXP_ALLOC_WITH_CONFLICT', - 238: 'SPI_PERF_NUM_PS_COL_SA0SQ0_EXPORTS', - 239: 'SPI_PERF_NUM_PS_COL_SA0SQ1_EXPORTS', - 240: 'SPI_PERF_NUM_PS_COL_SA1SQ0_EXPORTS', - 241: 'SPI_PERF_NUM_PS_COL_SA1SQ1_EXPORTS', - 242: 'SPI_PERF_NUM_POS_SA0SQ0_EXPORTS', - 243: 'SPI_PERF_NUM_POS_SA0SQ1_EXPORTS', - 244: 'SPI_PERF_NUM_POS_SA1SQ0_EXPORTS', - 245: 'SPI_PERF_NUM_POS_SA1SQ1_EXPORTS', - 246: 'SPI_PERF_NUM_GDS_SA0SQ0_EXPORTS', - 247: 'SPI_PERF_NUM_GDS_SA0SQ1_EXPORTS', - 248: 'SPI_PERF_NUM_GDS_SA1SQ0_EXPORTS', - 249: 'SPI_PERF_NUM_GDS_SA1SQ1_EXPORTS', - 250: 'SPI_PERF_NUM_EXPGRANT_EXPORTS', - 251: 'SPI_PERF_GS_ALLOC_IDX', - 252: 'SPI_PERF_GS_ALLOC_POS', - 253: 'SPI_PERF_PIX_ALLOC_PEND_CNT', - 254: 'SPI_PERF_EXPORT_SCB0_STALL', - 255: 'SPI_PERF_EXPORT_SCB1_STALL', - 256: 'SPI_PERF_EXPORT_SCB2_STALL', - 257: 'SPI_PERF_EXPORT_SCB3_STALL', - 258: 'SPI_PERF_EXPORT_DB0_STALL', - 259: 'SPI_PERF_EXPORT_DB1_STALL', - 260: 'SPI_PERF_EXPORT_DB2_STALL', - 261: 'SPI_PERF_EXPORT_DB3_STALL', - 262: 'SPI_PERF_EXPORT_DB4_STALL', - 263: 'SPI_PERF_EXPORT_DB5_STALL', - 264: 'SPI_PERF_EXPORT_DB6_STALL', - 265: 'SPI_PERF_EXPORT_DB7_STALL', - 266: 'SPI_PERF_GS_NGG_SE_SEND_GS_ALLOC', - 267: 'SPI_PERF_GS_NGG_STALL_MSG_VAL', - 268: 'SPI_PERF_SWC_PS_WR', - 269: 'SPI_PERF_SWC_GS_WR', - 270: 'SPI_PERF_SWC_HS_WR', - 271: 'SPI_PERF_SWC_CSGN_WR', - 272: 'SPI_PERF_SWC_CSN_WR', - 273: 'SPI_PERF_VWC_PS_WR', - 274: 'SPI_PERF_VWC_ES_WR', - 275: 'SPI_PERF_VWC_GS_WR', - 276: 'SPI_PERF_VWC_LS_WR', - 277: 'SPI_PERF_VWC_HS_WR', - 278: 'SPI_PERF_VWC_CSGN_WR', - 279: 'SPI_PERF_VWC_CSN_WR', - 280: 'SPI_PERF_EXP_THROT_UPSTEP', - 281: 'SPI_PERF_EXP_THROT_DOWNSTEP', - 282: 'SPI_PERF_EXP_THROT_CAUSALITY_DETECTED', - 283: 'SPI_PERF_BUSY', - 284: 'SPI_PERF_ALL_PS_WAVE', - 285: 'SPI_PERF_ALL_PS_WAVE_IN_FLIGHT', - 286: 'SPI_PERF_ALL_WAVE', - 287: 'SPI_PERF_ALL_WAVE_IN_FLIGHT', - 288: 'SPI_PERF_RA_REQ_ALLOC', - 289: 'SPI_PERF_VGPR_INIT', - 290: 'SPI_PERF_SGPR_INIT', - 291: 'SPI_PERF_VGPR_ALLOC_LEVEL', - 292: 'SPI_PERF_LDS_ALLOC_LEVEL', - 293: 'SPI_PERF_GFX_TEMP_ALLOC_LEVEL', - 294: 'SPI_PERF_CSG_TEMP_ALLOC_LEVEL', - 295: 'SPI_PERF_CSN_TEMP_ALLOC_LEVEL', - 296: 'SPI_PERF_ALL_WAVE_RESTORED', - 297: 'SPI_PERF_ALL_WAVE_SAVED', - 298: 'SPI_PERF_ALL_WAVE_W32', - 299: 'SPI_PERF_ALL_WAVE_W64', - 300: 'SPI_PERF_ALL_WAVE_ITEMS', - 301: 'SPI_PERF_ALL_WAVE_ITEMS_W32', - 302: 'SPI_PERF_ALL_WAVE_ITEMS_W64', - 303: 'SPI_PERF_RA_REQ_ALLOC_WGP_TAKEOVER_STALL', - 304: 'SPI_PERF_RA_REQ_ALLOC_WGP_TAKEOVER_LEVEL', - 305: 'SPI_PERF_RA_REQ_ALLOC_DYN_VGPR_STALL', - 306: 'SPI_PERF_RA_REQ_ALLOC_DYN_VGPR_CU_LEVEL', -} -SPI_PERF_GS_WINDOW_VALID = 1 -SPI_PERF_GS_BUSY = 2 -SPI_PERF_GS_CRAWLER_STALL = 3 -SPI_PERF_GS_EVENT_WAVE = 4 -SPI_PERF_GS_WAVE = 5 -SPI_PERF_GS_PERS_UPD_FULL0 = 6 -SPI_PERF_GS_PERS_UPD_FULL1 = 7 -SPI_PERF_GS_FIRST_SUBGRP = 8 -SPI_PERF_GS_HS_DEALLOC = 9 -SPI_PERF_GS_NGG_SE_LATE_ALLOC_LIMIT = 10 -SPI_PERF_GS_POS0_STALL = 11 -SPI_PERF_GS_POS1_STALL = 12 -SPI_PERF_GS_INDX0_STALL = 13 -SPI_PERF_GS_INDX1_STALL = 14 -SPI_PERF_GS_PWS_STALL = 15 -SPI_PERF_GS_GRP_LIFETIME = 16 -SPI_PERF_GS_WAVE_IN_FLIGHT = 17 -SPI_PERF_GS_GRP_LIFETIME_SAMPLE = 18 -SPI_PERF_HS_WINDOW_VALID = 21 -SPI_PERF_HS_BUSY = 22 -SPI_PERF_HS_CRAWLER_STALL = 23 -SPI_PERF_HS_FIRST_WAVE = 24 -SPI_PERF_HS_EVENT_WAVE = 26 -SPI_PERF_HS_WAVE = 27 -SPI_PERF_HS_PERS_UPD_FULL0 = 28 -SPI_PERF_HS_PERS_UPD_FULL1 = 29 -SPI_PERF_HS_PWS_STALL = 30 -SPI_PERF_HS_WAVE_IN_FLIGHT = 31 -SPI_PERF_CSGN_WINDOW_VALID = 37 -SPI_PERF_CSGN_BUSY = 38 -SPI_PERF_CSGN_NUM_THREADGROUPS = 39 -SPI_PERF_CSGN_CRAWLER_STALL = 40 -SPI_PERF_CSGN_EVENT_WAVE = 41 -SPI_PERF_CSGN_WAVE = 42 -SPI_PERF_CSGN_PWS_STALL = 43 -SPI_PERF_CSGN_WAVE_IN_FLIGHT = 44 -SPI_PERF_CSN_WINDOW_VALID = 45 -SPI_PERF_CSN_BUSY = 46 -SPI_PERF_CSN_NUM_THREADGROUPS = 47 -SPI_PERF_CSN_CRAWLER_STALL = 48 -SPI_PERF_CSN_EVENT_WAVE = 49 -SPI_PERF_CSN_WAVE = 50 -SPI_PERF_CSN_WAVE_IN_FLIGHT = 51 -SPI_PERF_PS0_WINDOW_VALID = 53 -SPI_PERF_PS1_WINDOW_VALID = 54 -SPI_PERF_PS2_WINDOW_VALID = 55 -SPI_PERF_PS3_WINDOW_VALID = 56 -SPI_PERF_PS0_BUSY = 57 -SPI_PERF_PS1_BUSY = 58 -SPI_PERF_PS2_BUSY = 59 -SPI_PERF_PS3_BUSY = 60 -SPI_PERF_PS0_ACTIVE = 61 -SPI_PERF_PS1_ACTIVE = 62 -SPI_PERF_PS2_ACTIVE = 63 -SPI_PERF_PS3_ACTIVE = 64 -SPI_PERF_PS0_DEALLOC = 65 -SPI_PERF_PS1_DEALLOC = 66 -SPI_PERF_PS2_DEALLOC = 67 -SPI_PERF_PS3_DEALLOC = 68 -SPI_PERF_PS0_EVENT_WAVE = 69 -SPI_PERF_PS1_EVENT_WAVE = 70 -SPI_PERF_PS2_EVENT_WAVE = 71 -SPI_PERF_PS3_EVENT_WAVE = 72 -SPI_PERF_PS0_WAVE = 73 -SPI_PERF_PS1_WAVE = 74 -SPI_PERF_PS2_WAVE = 75 -SPI_PERF_PS3_WAVE = 76 -SPI_PERF_PS0_OPT_WAVE = 77 -SPI_PERF_PS1_OPT_WAVE = 78 -SPI_PERF_PS2_OPT_WAVE = 79 -SPI_PERF_PS3_OPT_WAVE = 80 -SPI_PERF_PS0_PRIM_BIN0 = 81 -SPI_PERF_PS1_PRIM_BIN0 = 82 -SPI_PERF_PS2_PRIM_BIN0 = 83 -SPI_PERF_PS3_PRIM_BIN0 = 84 -SPI_PERF_PS0_PRIM_BIN1 = 85 -SPI_PERF_PS1_PRIM_BIN1 = 86 -SPI_PERF_PS2_PRIM_BIN1 = 87 -SPI_PERF_PS3_PRIM_BIN1 = 88 -SPI_PERF_PS0_CRAWLER_STALL = 89 -SPI_PERF_PS1_CRAWLER_STALL = 90 -SPI_PERF_PS2_CRAWLER_STALL = 91 -SPI_PERF_PS3_CRAWLER_STALL = 92 -SPI_PERF_PS_PERS_UPD_FULL0 = 93 -SPI_PERF_PS_PERS_UPD_FULL1 = 94 -SPI_PERF_PS0_2_WAVE_GROUPS = 95 -SPI_PERF_PS1_2_WAVE_GROUPS = 96 -SPI_PERF_PS2_2_WAVE_GROUPS = 97 -SPI_PERF_PS3_2_WAVE_GROUPS = 98 -SPI_PERF_PS0_WAVE_GROUP_CLOCK_DELAY = 99 -SPI_PERF_PS1_WAVE_GROUP_CLOCK_DELAY = 100 -SPI_PERF_PS2_WAVE_GROUP_CLOCK_DELAY = 101 -SPI_PERF_PS3_WAVE_GROUP_CLOCK_DELAY = 102 -SPI_PERF_PS0_WAVE_GROUP_TIMEOUTS = 103 -SPI_PERF_PS1_WAVE_GROUP_TIMEOUTS = 104 -SPI_PERF_PS2_WAVE_GROUP_TIMEOUTS = 105 -SPI_PERF_PS3_WAVE_GROUP_TIMEOUTS = 106 -SPI_PERF_PS_PWS_STALL = 107 -SPI_PERF_PS0_LDS_DONE_FULL = 108 -SPI_PERF_PS1_LDS_DONE_FULL = 109 -SPI_PERF_PS2_LDS_DONE_FULL = 110 -SPI_PERF_PS3_LDS_DONE_FULL = 111 -SPI_PERF_PS0_DEALLOC_FULL = 112 -SPI_PERF_PS1_DEALLOC_FULL = 113 -SPI_PERF_PS2_DEALLOC_FULL = 114 -SPI_PERF_PS3_DEALLOC_FULL = 115 -SPI_PERF_PS0_WAVE_IN_FLIGHT = 116 -SPI_PERF_PS1_WAVE_IN_FLIGHT = 117 -SPI_PERF_PS2_WAVE_IN_FLIGHT = 118 -SPI_PERF_PS3_WAVE_IN_FLIGHT = 119 -SPI_PERF_RA_GS_LDS_OCCUPANCY = 133 -SPI_PERF_RA_GS_VGPR_OCCUPANCY = 134 -SPI_PERF_RA_PS_LDS_OCCUPANCY = 135 -SPI_PERF_RA_PS_VGPR_OCCUPANCY = 136 -SPI_PERF_RA_SPI_THROTTLE = 137 -SPI_PERF_RA_PH_THROTTLE = 138 -SPI_PERF_RA_PC_PROBE_STALL_PS = 139 -SPI_PERF_RA_PC_PSWAVE_STALL_PS = 140 -SPI_PERF_RA_PIPE_REQ_BIN2 = 141 -SPI_PERF_RA_TASK_REQ_BIN3 = 142 -SPI_PERF_RA_WR_CTL_FULL = 143 -SPI_PERF_RA_REQ_NO_ALLOC = 144 -SPI_PERF_RA_REQ_NO_ALLOC_PS = 145 -SPI_PERF_RA_REQ_NO_ALLOC_GS = 146 -SPI_PERF_RA_REQ_NO_ALLOC_HS = 147 -SPI_PERF_RA_REQ_NO_ALLOC_CSG = 148 -SPI_PERF_RA_REQ_NO_ALLOC_CSN = 149 -SPI_PERF_RA_RES_STALL_PS = 150 -SPI_PERF_RA_RES_STALL_GS = 151 -SPI_PERF_RA_RES_STALL_HS = 152 -SPI_PERF_RA_RES_STALL_CSG = 153 -SPI_PERF_RA_RES_STALL_CSN = 154 -SPI_PERF_RA_TMP_STALL_PS = 155 -SPI_PERF_RA_TMP_STALL_GS = 156 -SPI_PERF_RA_TMP_STALL_HS = 157 -SPI_PERF_RA_TMP_STALL_CSG = 158 -SPI_PERF_RA_TMP_STALL_CSN = 159 -SPI_PERF_RA_WAVE_SIMD_FULL_PS = 160 -SPI_PERF_RA_WAVE_SIMD_FULL_GS = 161 -SPI_PERF_RA_WAVE_SIMD_FULL_HS = 162 -SPI_PERF_RA_WAVE_SIMD_FULL_CSG = 163 -SPI_PERF_RA_WAVE_SIMD_FULL_CSN = 164 -SPI_PERF_RA_VGPR_SIMD_FULL_PS = 165 -SPI_PERF_RA_VGPR_SIMD_FULL_GS = 166 -SPI_PERF_RA_VGPR_SIMD_FULL_HS = 167 -SPI_PERF_RA_VGPR_SIMD_FULL_CSG = 168 -SPI_PERF_RA_VGPR_SIMD_FULL_CSN = 169 -SPI_PERF_RA_LDS_CU_FULL_PS = 170 -SPI_PERF_RA_LDS_CU_FULL_HS = 171 -SPI_PERF_RA_LDS_CU_FULL_GS = 172 -SPI_PERF_RA_LDS_CU_FULL_CSG = 173 -SPI_PERF_RA_LDS_CU_FULL_CSN = 174 -SPI_PERF_RA_BAR_CU_FULL_PS = 175 -SPI_PERF_RA_BAR_CU_FULL_GS = 176 -SPI_PERF_RA_BAR_CU_FULL_HS = 177 -SPI_PERF_RA_BAR_CU_FULL_CSG = 178 -SPI_PERF_RA_BAR_CU_FULL_CSN = 179 -SPI_PERF_RA_BULKY_CU_FULL_CSG = 180 -SPI_PERF_RA_BULKY_CU_FULL_CSN = 181 -SPI_PERF_RA_TGLIM_CU_FULL_CSG = 182 -SPI_PERF_RA_TGLIM_CU_FULL_CSN = 183 -SPI_PERF_RA_WVLIM_STALL_PS = 184 -SPI_PERF_RA_WVLIM_STALL_GS = 185 -SPI_PERF_RA_WVLIM_STALL_HS = 186 -SPI_PERF_RA_WVLIM_STALL_CSG = 187 -SPI_PERF_RA_WVLIM_STALL_CSN = 188 -SPI_PERF_RA_GS_LOCK = 189 -SPI_PERF_RA_HS_LOCK = 190 -SPI_PERF_RA_CSG_LOCK = 191 -SPI_PERF_RA_CSN_LOCK = 192 -SPI_PERF_RA_RSV_UPD = 193 -SPI_PERF_RA_PRE_ALLOC_STALL = 194 -SPI_PERF_RA_GFX_UNDER_TUNNEL = 195 -SPI_PERF_RA_CSC_UNDER_TUNNEL = 196 -SPI_PERF_RA_WVALLOC_STALL = 197 -SPI_PERF_RA_ACCUM0_SIMD_FULL_PS = 198 -SPI_PERF_RA_ACCUM1_SIMD_FULL_PS = 199 -SPI_PERF_RA_ACCUM2_SIMD_FULL_PS = 200 -SPI_PERF_RA_ACCUM3_SIMD_FULL_PS = 201 -SPI_PERF_RA_ACCUM0_SIMD_FULL_GS = 202 -SPI_PERF_RA_ACCUM1_SIMD_FULL_GS = 203 -SPI_PERF_RA_ACCUM2_SIMD_FULL_GS = 204 -SPI_PERF_RA_ACCUM3_SIMD_FULL_GS = 205 -SPI_PERF_RA_ACCUM0_SIMD_FULL_HS = 206 -SPI_PERF_RA_ACCUM1_SIMD_FULL_HS = 207 -SPI_PERF_RA_ACCUM2_SIMD_FULL_HS = 208 -SPI_PERF_RA_ACCUM3_SIMD_FULL_HS = 209 -SPI_PERF_RA_ACCUM0_SIMD_FULL_CSG = 210 -SPI_PERF_RA_ACCUM1_SIMD_FULL_CSG = 211 -SPI_PERF_RA_ACCUM2_SIMD_FULL_CSG = 212 -SPI_PERF_RA_ACCUM3_SIMD_FULL_CSG = 213 -SPI_PERF_RA_ACCUM0_SIMD_FULL_CSN = 214 -SPI_PERF_RA_ACCUM1_SIMD_FULL_CSN = 215 -SPI_PERF_RA_ACCUM2_SIMD_FULL_CSN = 216 -SPI_PERF_RA_ACCUM3_SIMD_FULL_CSN = 217 -SPI_PERF_EXP_ARB_COL_CNT = 218 -SPI_PERF_EXP_ARB_POS_CNT = 219 -SPI_PERF_EXP_ARB_GDS_CNT = 220 -SPI_PERF_EXP_ARB_IDX_CNT = 221 -SPI_PERF_EXP_WITH_CONFLICT = 222 -SPI_PERF_EXP_WITH_CONFLICT_CLEAR = 223 -SPI_PERF_GS_EXP_DONE = 224 -SPI_PERF_PS_EXP_DONE = 225 -SPI_PERF_PS_EXP_ARB_CONFLICT = 226 -SPI_PERF_GS_SCBD_IDX_CLEANUP = 227 -SPI_PERF_GS_SCBD_POS_CLEANUP = 228 -SPI_PERF_PS_EXP_ALLOC = 229 -SPI_PERF_PS0_WAVEID_STARVED = 230 -SPI_PERF_PS1_WAVEID_STARVED = 231 -SPI_PERF_PS2_WAVEID_STARVED = 232 -SPI_PERF_PS3_WAVEID_STARVED = 233 -SPI_PERF_PS0_EXP_ALLOC_WITH_CONFLICT = 234 -SPI_PERF_PS1_EXP_ALLOC_WITH_CONFLICT = 235 -SPI_PERF_PS2_EXP_ALLOC_WITH_CONFLICT = 236 -SPI_PERF_PS3_EXP_ALLOC_WITH_CONFLICT = 237 -SPI_PERF_NUM_PS_COL_SA0SQ0_EXPORTS = 238 -SPI_PERF_NUM_PS_COL_SA0SQ1_EXPORTS = 239 -SPI_PERF_NUM_PS_COL_SA1SQ0_EXPORTS = 240 -SPI_PERF_NUM_PS_COL_SA1SQ1_EXPORTS = 241 -SPI_PERF_NUM_POS_SA0SQ0_EXPORTS = 242 -SPI_PERF_NUM_POS_SA0SQ1_EXPORTS = 243 -SPI_PERF_NUM_POS_SA1SQ0_EXPORTS = 244 -SPI_PERF_NUM_POS_SA1SQ1_EXPORTS = 245 -SPI_PERF_NUM_GDS_SA0SQ0_EXPORTS = 246 -SPI_PERF_NUM_GDS_SA0SQ1_EXPORTS = 247 -SPI_PERF_NUM_GDS_SA1SQ0_EXPORTS = 248 -SPI_PERF_NUM_GDS_SA1SQ1_EXPORTS = 249 -SPI_PERF_NUM_EXPGRANT_EXPORTS = 250 -SPI_PERF_GS_ALLOC_IDX = 251 -SPI_PERF_GS_ALLOC_POS = 252 -SPI_PERF_PIX_ALLOC_PEND_CNT = 253 -SPI_PERF_EXPORT_SCB0_STALL = 254 -SPI_PERF_EXPORT_SCB1_STALL = 255 -SPI_PERF_EXPORT_SCB2_STALL = 256 -SPI_PERF_EXPORT_SCB3_STALL = 257 -SPI_PERF_EXPORT_DB0_STALL = 258 -SPI_PERF_EXPORT_DB1_STALL = 259 -SPI_PERF_EXPORT_DB2_STALL = 260 -SPI_PERF_EXPORT_DB3_STALL = 261 -SPI_PERF_EXPORT_DB4_STALL = 262 -SPI_PERF_EXPORT_DB5_STALL = 263 -SPI_PERF_EXPORT_DB6_STALL = 264 -SPI_PERF_EXPORT_DB7_STALL = 265 -SPI_PERF_GS_NGG_SE_SEND_GS_ALLOC = 266 -SPI_PERF_GS_NGG_STALL_MSG_VAL = 267 -SPI_PERF_SWC_PS_WR = 268 -SPI_PERF_SWC_GS_WR = 269 -SPI_PERF_SWC_HS_WR = 270 -SPI_PERF_SWC_CSGN_WR = 271 -SPI_PERF_SWC_CSN_WR = 272 -SPI_PERF_VWC_PS_WR = 273 -SPI_PERF_VWC_ES_WR = 274 -SPI_PERF_VWC_GS_WR = 275 -SPI_PERF_VWC_LS_WR = 276 -SPI_PERF_VWC_HS_WR = 277 -SPI_PERF_VWC_CSGN_WR = 278 -SPI_PERF_VWC_CSN_WR = 279 -SPI_PERF_EXP_THROT_UPSTEP = 280 -SPI_PERF_EXP_THROT_DOWNSTEP = 281 -SPI_PERF_EXP_THROT_CAUSALITY_DETECTED = 282 -SPI_PERF_BUSY = 283 -SPI_PERF_ALL_PS_WAVE = 284 -SPI_PERF_ALL_PS_WAVE_IN_FLIGHT = 285 -SPI_PERF_ALL_WAVE = 286 -SPI_PERF_ALL_WAVE_IN_FLIGHT = 287 -SPI_PERF_RA_REQ_ALLOC = 288 -SPI_PERF_VGPR_INIT = 289 -SPI_PERF_SGPR_INIT = 290 -SPI_PERF_VGPR_ALLOC_LEVEL = 291 -SPI_PERF_LDS_ALLOC_LEVEL = 292 -SPI_PERF_GFX_TEMP_ALLOC_LEVEL = 293 -SPI_PERF_CSG_TEMP_ALLOC_LEVEL = 294 -SPI_PERF_CSN_TEMP_ALLOC_LEVEL = 295 -SPI_PERF_ALL_WAVE_RESTORED = 296 -SPI_PERF_ALL_WAVE_SAVED = 297 -SPI_PERF_ALL_WAVE_W32 = 298 -SPI_PERF_ALL_WAVE_W64 = 299 -SPI_PERF_ALL_WAVE_ITEMS = 300 -SPI_PERF_ALL_WAVE_ITEMS_W32 = 301 -SPI_PERF_ALL_WAVE_ITEMS_W64 = 302 -SPI_PERF_RA_REQ_ALLOC_WGP_TAKEOVER_STALL = 303 -SPI_PERF_RA_REQ_ALLOC_WGP_TAKEOVER_LEVEL = 304 -SPI_PERF_RA_REQ_ALLOC_DYN_VGPR_STALL = 305 -SPI_PERF_RA_REQ_ALLOC_DYN_VGPR_CU_LEVEL = 306 -SPI_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_PNT_SPRITE_OVERRIDE' -SPI_PNT_SPRITE_OVERRIDE__enumvalues = { - 0: 'SPI_PNT_SPRITE_SEL_0', - 1: 'SPI_PNT_SPRITE_SEL_1', - 2: 'SPI_PNT_SPRITE_SEL_S', - 3: 'SPI_PNT_SPRITE_SEL_T', - 4: 'SPI_PNT_SPRITE_SEL_NONE', -} -SPI_PNT_SPRITE_SEL_0 = 0 -SPI_PNT_SPRITE_SEL_1 = 1 -SPI_PNT_SPRITE_SEL_S = 2 -SPI_PNT_SPRITE_SEL_T = 3 -SPI_PNT_SPRITE_SEL_NONE = 4 -SPI_PNT_SPRITE_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_PS_LDS_GROUP_SIZE' -SPI_PS_LDS_GROUP_SIZE__enumvalues = { - 0: 'SPI_PS_LDS_GROUP_1', - 1: 'SPI_PS_LDS_GROUP_2', - 2: 'SPI_PS_LDS_GROUP_4', -} -SPI_PS_LDS_GROUP_1 = 0 -SPI_PS_LDS_GROUP_2 = 1 -SPI_PS_LDS_GROUP_4 = 2 -SPI_PS_LDS_GROUP_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_SAMPLE_CNTL' -SPI_SAMPLE_CNTL__enumvalues = { - 0: 'CENTROIDS_ONLY', - 1: 'CENTERS_ONLY', - 2: 'CENTROIDS_AND_CENTERS', - 3: 'UNDEF', -} -CENTROIDS_ONLY = 0 -CENTERS_ONLY = 1 -CENTROIDS_AND_CENTERS = 2 -UNDEF = 3 -SPI_SAMPLE_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_SHADER_EX_FORMAT' -SPI_SHADER_EX_FORMAT__enumvalues = { - 0: 'SPI_SHADER_ZERO', - 1: 'SPI_SHADER_32_R', - 2: 'SPI_SHADER_32_GR', - 3: 'SPI_SHADER_32_AR', - 4: 'SPI_SHADER_FP16_ABGR', - 5: 'SPI_SHADER_UNORM16_ABGR', - 6: 'SPI_SHADER_SNORM16_ABGR', - 7: 'SPI_SHADER_UINT16_ABGR', - 8: 'SPI_SHADER_SINT16_ABGR', - 9: 'SPI_SHADER_32_ABGR', -} -SPI_SHADER_ZERO = 0 -SPI_SHADER_32_R = 1 -SPI_SHADER_32_GR = 2 -SPI_SHADER_32_AR = 3 -SPI_SHADER_FP16_ABGR = 4 -SPI_SHADER_UNORM16_ABGR = 5 -SPI_SHADER_SNORM16_ABGR = 6 -SPI_SHADER_UINT16_ABGR = 7 -SPI_SHADER_SINT16_ABGR = 8 -SPI_SHADER_32_ABGR = 9 -SPI_SHADER_EX_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_SHADER_FORMAT' -SPI_SHADER_FORMAT__enumvalues = { - 0: 'SPI_SHADER_NONE', - 1: 'SPI_SHADER_1COMP', - 2: 'SPI_SHADER_2COMP', - 3: 'SPI_SHADER_4COMPRESS', - 4: 'SPI_SHADER_4COMP', -} -SPI_SHADER_NONE = 0 -SPI_SHADER_1COMP = 1 -SPI_SHADER_2COMP = 2 -SPI_SHADER_4COMPRESS = 3 -SPI_SHADER_4COMP = 4 -SPI_SHADER_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'SH_MEM_ADDRESS_MODE' -SH_MEM_ADDRESS_MODE__enumvalues = { - 0: 'SH_MEM_ADDRESS_MODE_64', - 1: 'SH_MEM_ADDRESS_MODE_32', -} -SH_MEM_ADDRESS_MODE_64 = 0 -SH_MEM_ADDRESS_MODE_32 = 1 -SH_MEM_ADDRESS_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SH_MEM_ALIGNMENT_MODE' -SH_MEM_ALIGNMENT_MODE__enumvalues = { - 0: 'SH_MEM_ALIGNMENT_MODE_DWORD', - 1: 'SH_MEM_ALIGNMENT_MODE_DWORD_STRICT', - 2: 'SH_MEM_ALIGNMENT_MODE_STRICT', - 3: 'SH_MEM_ALIGNMENT_MODE_UNALIGNED', -} -SH_MEM_ALIGNMENT_MODE_DWORD = 0 -SH_MEM_ALIGNMENT_MODE_DWORD_STRICT = 1 -SH_MEM_ALIGNMENT_MODE_STRICT = 2 -SH_MEM_ALIGNMENT_MODE_UNALIGNED = 3 -SH_MEM_ALIGNMENT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQG_PERF_SEL' -SQG_PERF_SEL__enumvalues = { - 0: 'SQG_PERF_SEL_NONE', - 1: 'SQG_PERF_SEL_MSG_BUS_BUSY', - 2: 'SQG_PERF_SEL_EXP_REQ0_BUS_BUSY', - 3: 'SQG_PERF_SEL_EXP_REQ1_BUS_BUSY', - 4: 'SQG_PERF_SEL_EXP_BUS0_BUSY', - 5: 'SQG_PERF_SEL_EXP_BUS1_BUSY', - 6: 'SQG_PERF_SEL_TTRACE_WRITE_DATA', - 7: 'SQG_PERF_SEL_TTRACE_STALL', - 8: 'SQG_PERF_SEL_TTRACE_LOST_PACKETS', - 9: 'SQG_PERF_SEL_WAVES_INITIAL_PREFETCH', - 10: 'SQG_PERF_SEL_EVENTS', - 11: 'SQG_PERF_SEL_WAVES_RESTORED', - 12: 'SQG_PERF_SEL_WAVES_SAVED', - 13: 'SQG_PERF_SEL_ACCUM_PREV', - 14: 'SQG_PERF_SEL_CYCLES', - 15: 'SQG_PERF_SEL_BUSY_CYCLES', - 16: 'SQG_PERF_SEL_WAVE_CYCLES', - 17: 'SQG_PERF_SEL_MSG', - 18: 'SQG_PERF_SEL_MSG_INTERRUPT', - 19: 'SQG_PERF_SEL_WAVES', - 20: 'SQG_PERF_SEL_WAVES_32', - 21: 'SQG_PERF_SEL_WAVES_64', - 22: 'SQG_PERF_SEL_LEVEL_WAVES', - 23: 'SQG_PERF_SEL_ITEMS', - 24: 'SQG_PERF_SEL_WAVE32_ITEMS', - 25: 'SQG_PERF_SEL_WAVE64_ITEMS', - 26: 'SQG_PERF_SEL_PS_QUADS', - 27: 'SQG_PERF_SEL_WAVES_EQ_64', - 28: 'SQG_PERF_SEL_WAVES_EQ_32', - 29: 'SQG_PERF_SEL_WAVES_LT_64', - 30: 'SQG_PERF_SEL_WAVES_LT_48', - 31: 'SQG_PERF_SEL_WAVES_LT_32', - 32: 'SQG_PERF_SEL_WAVES_LT_16', - 33: 'SQG_PERF_SEL_REFCLKS', - 34: 'SQG_PERF_SEL_WAVES_WGP_TAKEOVER', - 35: 'SQG_PERF_SEL_WAVES_DYN_VGPR', - 36: 'SQG_PERF_SEL_ITEMS_PS', - 37: 'SQG_PERF_SEL_ITEMS_GS', - 38: 'SQG_PERF_SEL_ITEMS_HS', - 39: 'SQG_PERF_SEL_ITEMS_CS', - 40: 'SQG_PERF_SEL_WAVES_VEC32', - 41: 'SQG_PERF_SEL_WAVES_PS_VEC32', - 42: 'SQG_PERF_SEL_WAVES_GS_VEC32', - 43: 'SQG_PERF_SEL_WAVES_HS_VEC32', - 44: 'SQG_PERF_SEL_WAVES_CS_VEC32', - 45: 'SQG_PERF_SEL_LEVEL_WGP_ACTIVE', - 46: 'SQG_PERF_SEL_DUMMY_LAST', -} -SQG_PERF_SEL_NONE = 0 -SQG_PERF_SEL_MSG_BUS_BUSY = 1 -SQG_PERF_SEL_EXP_REQ0_BUS_BUSY = 2 -SQG_PERF_SEL_EXP_REQ1_BUS_BUSY = 3 -SQG_PERF_SEL_EXP_BUS0_BUSY = 4 -SQG_PERF_SEL_EXP_BUS1_BUSY = 5 -SQG_PERF_SEL_TTRACE_WRITE_DATA = 6 -SQG_PERF_SEL_TTRACE_STALL = 7 -SQG_PERF_SEL_TTRACE_LOST_PACKETS = 8 -SQG_PERF_SEL_WAVES_INITIAL_PREFETCH = 9 -SQG_PERF_SEL_EVENTS = 10 -SQG_PERF_SEL_WAVES_RESTORED = 11 -SQG_PERF_SEL_WAVES_SAVED = 12 -SQG_PERF_SEL_ACCUM_PREV = 13 -SQG_PERF_SEL_CYCLES = 14 -SQG_PERF_SEL_BUSY_CYCLES = 15 -SQG_PERF_SEL_WAVE_CYCLES = 16 -SQG_PERF_SEL_MSG = 17 -SQG_PERF_SEL_MSG_INTERRUPT = 18 -SQG_PERF_SEL_WAVES = 19 -SQG_PERF_SEL_WAVES_32 = 20 -SQG_PERF_SEL_WAVES_64 = 21 -SQG_PERF_SEL_LEVEL_WAVES = 22 -SQG_PERF_SEL_ITEMS = 23 -SQG_PERF_SEL_WAVE32_ITEMS = 24 -SQG_PERF_SEL_WAVE64_ITEMS = 25 -SQG_PERF_SEL_PS_QUADS = 26 -SQG_PERF_SEL_WAVES_EQ_64 = 27 -SQG_PERF_SEL_WAVES_EQ_32 = 28 -SQG_PERF_SEL_WAVES_LT_64 = 29 -SQG_PERF_SEL_WAVES_LT_48 = 30 -SQG_PERF_SEL_WAVES_LT_32 = 31 -SQG_PERF_SEL_WAVES_LT_16 = 32 -SQG_PERF_SEL_REFCLKS = 33 -SQG_PERF_SEL_WAVES_WGP_TAKEOVER = 34 -SQG_PERF_SEL_WAVES_DYN_VGPR = 35 -SQG_PERF_SEL_ITEMS_PS = 36 -SQG_PERF_SEL_ITEMS_GS = 37 -SQG_PERF_SEL_ITEMS_HS = 38 -SQG_PERF_SEL_ITEMS_CS = 39 -SQG_PERF_SEL_WAVES_VEC32 = 40 -SQG_PERF_SEL_WAVES_PS_VEC32 = 41 -SQG_PERF_SEL_WAVES_GS_VEC32 = 42 -SQG_PERF_SEL_WAVES_HS_VEC32 = 43 -SQG_PERF_SEL_WAVES_CS_VEC32 = 44 -SQG_PERF_SEL_LEVEL_WGP_ACTIVE = 45 -SQG_PERF_SEL_DUMMY_LAST = 46 -SQG_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_CAC_POWER_SEL' -SQ_CAC_POWER_SEL__enumvalues = { - 0: 'SQ_CAC_POWER_VALU', - 1: 'SQ_CAC_POWER_VALU0', - 2: 'SQ_CAC_POWER_VALU1', - 3: 'SQ_CAC_POWER_VALU2', - 4: 'SQ_CAC_POWER_GPR_RD', - 5: 'SQ_CAC_POWER_GPR_WR', - 6: 'SQ_CAC_POWER_LDS_BUSY', - 7: 'SQ_CAC_POWER_ALU_BUSY', - 8: 'SQ_CAC_POWER_TEX_BUSY', -} -SQ_CAC_POWER_VALU = 0 -SQ_CAC_POWER_VALU0 = 1 -SQ_CAC_POWER_VALU1 = 2 -SQ_CAC_POWER_VALU2 = 3 -SQ_CAC_POWER_GPR_RD = 4 -SQ_CAC_POWER_GPR_WR = 5 -SQ_CAC_POWER_LDS_BUSY = 6 -SQ_CAC_POWER_ALU_BUSY = 7 -SQ_CAC_POWER_TEX_BUSY = 8 -SQ_CAC_POWER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_EDC_INFO_SOURCE' -SQ_EDC_INFO_SOURCE__enumvalues = { - 0: 'SQ_EDC_INFO_SOURCE_INVALID', - 1: 'SQ_EDC_INFO_SOURCE_INST', - 2: 'SQ_EDC_INFO_SOURCE_SGPR', - 3: 'SQ_EDC_INFO_SOURCE_VGPR', - 4: 'SQ_EDC_INFO_SOURCE_LDS', - 5: 'SQ_EDC_INFO_SOURCE_GDS', - 6: 'SQ_EDC_INFO_SOURCE_TA', -} -SQ_EDC_INFO_SOURCE_INVALID = 0 -SQ_EDC_INFO_SOURCE_INST = 1 -SQ_EDC_INFO_SOURCE_SGPR = 2 -SQ_EDC_INFO_SOURCE_VGPR = 3 -SQ_EDC_INFO_SOURCE_LDS = 4 -SQ_EDC_INFO_SOURCE_GDS = 5 -SQ_EDC_INFO_SOURCE_TA = 6 -SQ_EDC_INFO_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IBUF_ST' -SQ_IBUF_ST__enumvalues = { - 0: 'SQ_IBUF_IB_IDLE', - 1: 'SQ_IBUF_IB_INI_WAIT_GNT', - 2: 'SQ_IBUF_IB_INI_WAIT_DRET', - 3: 'SQ_IBUF_IB_LE_4DW', - 4: 'SQ_IBUF_IB_WAIT_DRET', - 5: 'SQ_IBUF_IB_EMPTY_WAIT_DRET', - 6: 'SQ_IBUF_IB_DRET', - 7: 'SQ_IBUF_IB_EMPTY_WAIT_GNT', -} -SQ_IBUF_IB_IDLE = 0 -SQ_IBUF_IB_INI_WAIT_GNT = 1 -SQ_IBUF_IB_INI_WAIT_DRET = 2 -SQ_IBUF_IB_LE_4DW = 3 -SQ_IBUF_IB_WAIT_DRET = 4 -SQ_IBUF_IB_EMPTY_WAIT_DRET = 5 -SQ_IBUF_IB_DRET = 6 -SQ_IBUF_IB_EMPTY_WAIT_GNT = 7 -SQ_IBUF_ST = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IMG_FILTER_TYPE' -SQ_IMG_FILTER_TYPE__enumvalues = { - 0: 'SQ_IMG_FILTER_MODE_BLEND', - 1: 'SQ_IMG_FILTER_MODE_MIN', - 2: 'SQ_IMG_FILTER_MODE_MAX', -} -SQ_IMG_FILTER_MODE_BLEND = 0 -SQ_IMG_FILTER_MODE_MIN = 1 -SQ_IMG_FILTER_MODE_MAX = 2 -SQ_IMG_FILTER_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IND_CMD_CMD' -SQ_IND_CMD_CMD__enumvalues = { - 0: 'SQ_IND_CMD_CMD_NULL', - 1: 'SQ_IND_CMD_CMD_SETHALT', - 2: 'SQ_IND_CMD_CMD_SAVECTX', - 3: 'SQ_IND_CMD_CMD_KILL', - 4: 'SQ_IND_CMD_CMD_TRAP_AFTER_INST', - 5: 'SQ_IND_CMD_CMD_TRAP', - 6: 'SQ_IND_CMD_CMD_SET_SYS_PRIO', - 7: 'SQ_IND_CMD_CMD_SETFATALHALT', - 8: 'SQ_IND_CMD_CMD_SINGLE_STEP', -} -SQ_IND_CMD_CMD_NULL = 0 -SQ_IND_CMD_CMD_SETHALT = 1 -SQ_IND_CMD_CMD_SAVECTX = 2 -SQ_IND_CMD_CMD_KILL = 3 -SQ_IND_CMD_CMD_TRAP_AFTER_INST = 4 -SQ_IND_CMD_CMD_TRAP = 5 -SQ_IND_CMD_CMD_SET_SYS_PRIO = 6 -SQ_IND_CMD_CMD_SETFATALHALT = 7 -SQ_IND_CMD_CMD_SINGLE_STEP = 8 -SQ_IND_CMD_CMD = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IND_CMD_MODE' -SQ_IND_CMD_MODE__enumvalues = { - 0: 'SQ_IND_CMD_MODE_SINGLE', - 1: 'SQ_IND_CMD_MODE_BROADCAST', - 2: 'SQ_IND_CMD_MODE_BROADCAST_QUEUE', - 3: 'SQ_IND_CMD_MODE_BROADCAST_PIPE', - 4: 'SQ_IND_CMD_MODE_BROADCAST_ME', -} -SQ_IND_CMD_MODE_SINGLE = 0 -SQ_IND_CMD_MODE_BROADCAST = 1 -SQ_IND_CMD_MODE_BROADCAST_QUEUE = 2 -SQ_IND_CMD_MODE_BROADCAST_PIPE = 3 -SQ_IND_CMD_MODE_BROADCAST_ME = 4 -SQ_IND_CMD_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_INST_STR_ST' -SQ_INST_STR_ST__enumvalues = { - 0: 'SQ_INST_STR_IB_WAVE_NORML', - 1: 'SQ_INST_STR_IB_WAVE2ID_NORMAL_INST_AV', - 2: 'SQ_INST_STR_IB_WAVE_INTERNAL_INST_AV', - 3: 'SQ_INST_STR_IB_WAVE_INST_SKIP_AV', - 4: 'SQ_INST_STR_IB_WAVE_NOP_SLEEP_WAIT', - 5: 'SQ_INST_STR_IB_WAVE_PC_FROM_SGPR_MSG_WAIT', -} -SQ_INST_STR_IB_WAVE_NORML = 0 -SQ_INST_STR_IB_WAVE2ID_NORMAL_INST_AV = 1 -SQ_INST_STR_IB_WAVE_INTERNAL_INST_AV = 2 -SQ_INST_STR_IB_WAVE_INST_SKIP_AV = 3 -SQ_INST_STR_IB_WAVE_NOP_SLEEP_WAIT = 4 -SQ_INST_STR_IB_WAVE_PC_FROM_SGPR_MSG_WAIT = 5 -SQ_INST_STR_ST = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_INST_TYPE' -SQ_INST_TYPE__enumvalues = { - 0: 'SQ_INST_TYPE_VALU', - 1: 'SQ_INST_TYPE_SCALAR', - 2: 'SQ_INST_TYPE_TEX', - 3: 'SQ_INST_TYPE_LDS', - 4: 'SQ_INST_TYPE_LDS_DIRECT', - 5: 'SQ_INST_TYPE_EXP', - 6: 'SQ_INST_TYPE_MSG', - 7: 'SQ_INST_TYPE_BARRIER', - 8: 'SQ_INST_TYPE_BRANCH_NOT_TAKEN', - 9: 'SQ_INST_TYPE_BRANCH_TAKEN', - 10: 'SQ_INST_TYPE_JUMP', - 11: 'SQ_INST_TYPE_OTHER', - 12: 'SQ_INST_TYPE_NONE', - 13: 'SQ_INST_TYPE_DUAL_VALU', - 14: 'SQ_INST_TYPE_FLAT', - 15: 'SQ_INST_TYPE_VALU_MATRIX', -} -SQ_INST_TYPE_VALU = 0 -SQ_INST_TYPE_SCALAR = 1 -SQ_INST_TYPE_TEX = 2 -SQ_INST_TYPE_LDS = 3 -SQ_INST_TYPE_LDS_DIRECT = 4 -SQ_INST_TYPE_EXP = 5 -SQ_INST_TYPE_MSG = 6 -SQ_INST_TYPE_BARRIER = 7 -SQ_INST_TYPE_BRANCH_NOT_TAKEN = 8 -SQ_INST_TYPE_BRANCH_TAKEN = 9 -SQ_INST_TYPE_JUMP = 10 -SQ_INST_TYPE_OTHER = 11 -SQ_INST_TYPE_NONE = 12 -SQ_INST_TYPE_DUAL_VALU = 13 -SQ_INST_TYPE_FLAT = 14 -SQ_INST_TYPE_VALU_MATRIX = 15 -SQ_INST_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_LLC_CTL' -SQ_LLC_CTL__enumvalues = { - 0: 'SQ_LLC_0', - 1: 'SQ_LLC_1', - 2: 'SQ_LLC_RSVD_2', - 3: 'SQ_LLC_BYPASS', -} -SQ_LLC_0 = 0 -SQ_LLC_1 = 1 -SQ_LLC_RSVD_2 = 2 -SQ_LLC_BYPASS = 3 -SQ_LLC_CTL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_NO_INST_ISSUE' -SQ_NO_INST_ISSUE__enumvalues = { - 0: 'SQ_NO_INST_ISSUE_NO_INSTS', - 1: 'SQ_NO_INST_ISSUE_ALU_DEP', - 2: 'SQ_NO_INST_ISSUE_S_WAITCNT', - 3: 'SQ_NO_INST_ISSUE_NO_ARB_WIN', - 4: 'SQ_NO_INST_ISSUE_SLEEP_WAIT', - 5: 'SQ_NO_INST_ISSUE_BARRIER_WAIT', - 6: 'SQ_NO_INST_ISSUE_OTHER', - 7: 'SQ_NO_INST_ISSUE_INTERNAL', -} -SQ_NO_INST_ISSUE_NO_INSTS = 0 -SQ_NO_INST_ISSUE_ALU_DEP = 1 -SQ_NO_INST_ISSUE_S_WAITCNT = 2 -SQ_NO_INST_ISSUE_NO_ARB_WIN = 3 -SQ_NO_INST_ISSUE_SLEEP_WAIT = 4 -SQ_NO_INST_ISSUE_BARRIER_WAIT = 5 -SQ_NO_INST_ISSUE_OTHER = 6 -SQ_NO_INST_ISSUE_INTERNAL = 7 -SQ_NO_INST_ISSUE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_OOB_SELECT' -SQ_OOB_SELECT__enumvalues = { - 0: 'SQ_OOB_INDEX_AND_OFFSET', - 1: 'SQ_OOB_INDEX_ONLY', - 2: 'SQ_OOB_NUM_RECORDS_0', - 3: 'SQ_OOB_COMPLETE', -} -SQ_OOB_INDEX_AND_OFFSET = 0 -SQ_OOB_INDEX_ONLY = 1 -SQ_OOB_NUM_RECORDS_0 = 2 -SQ_OOB_COMPLETE = 3 -SQ_OOB_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_PERF_SEL' -SQ_PERF_SEL__enumvalues = { - 0: 'SQ_PERF_SEL_NONE', - 1: 'SQ_PERF_SEL_ACCUM_PREV', - 2: 'SQ_PERF_SEL_CYCLES', - 3: 'SQ_PERF_SEL_BUSY_CYCLES', - 4: 'SQ_PERF_SEL_WAVES', - 5: 'SQ_PERF_SEL_WAVES_32', - 6: 'SQ_PERF_SEL_WAVES_64', - 7: 'SQ_PERF_SEL_LEVEL_WAVES', - 8: 'SQ_PERF_SEL_ITEMS', - 9: 'SQ_PERF_SEL_WAVE32_ITEMS', - 10: 'SQ_PERF_SEL_WAVE64_ITEMS', - 11: 'SQ_PERF_SEL_PS_QUADS', - 12: 'SQ_PERF_SEL_EVENTS', - 13: 'SQ_PERF_SEL_WAVES_EQ_32', - 14: 'SQ_PERF_SEL_WAVES_EQ_64', - 15: 'SQ_PERF_SEL_WAVES_LT_64', - 16: 'SQ_PERF_SEL_WAVES_LT_48', - 17: 'SQ_PERF_SEL_WAVES_LT_32', - 18: 'SQ_PERF_SEL_WAVES_LT_16', - 19: 'SQ_PERF_SEL_WAVES_RESTORED', - 20: 'SQ_PERF_SEL_WAVES_SAVED', - 21: 'SQ_PERF_SEL_MSG', - 22: 'SQ_PERF_SEL_MSG_INTERRUPT', - 23: 'SQ_PERF_SEL_WAVES_INITIAL_PREFETCH', - 24: 'SQ_PERF_SEL_WAVE_CYCLES', - 25: 'SQ_PERF_SEL_WAVE_READY', - 26: 'SQ_PERF_SEL_WAIT_INST_ANY', - 27: 'SQ_PERF_SEL_WAIT_ANY', - 28: 'SQ_PERF_SEL_WAIT_CNT_ANY', - 29: 'SQ_PERF_SEL_WAIT_CNT_LOAD', - 30: 'SQ_PERF_SEL_WAIT_CNT_STORE', - 31: 'SQ_PERF_SEL_WAIT_TTRACE', - 32: 'SQ_PERF_SEL_WAIT_IFETCH', - 33: 'SQ_PERF_SEL_WAIT_BARRIER', - 34: 'SQ_PERF_SEL_WAIT_EXP_ALLOC', - 35: 'SQ_PERF_SEL_WAIT_SLEEP', - 36: 'SQ_PERF_SEL_WAIT_DELAY_ALU', - 37: 'SQ_PERF_SEL_WAIT_DEPCTR', - 38: 'SQ_PERF_SEL_WAIT_OTHER', - 39: 'SQ_PERF_SEL_INSTS_ALL', - 40: 'SQ_PERF_SEL_INSTS_BRANCH', - 41: 'SQ_PERF_SEL_INSTS_CBRANCH_NOT_TAKEN', - 42: 'SQ_PERF_SEL_INSTS_CBRANCH_TAKEN', - 43: 'SQ_PERF_SEL_INSTS_EXP', - 44: 'SQ_PERF_SEL_INSTS_FLAT', - 45: 'SQ_PERF_SEL_INSTS_LDS', - 46: 'SQ_PERF_SEL_INSTS_SALU', - 47: 'SQ_PERF_SEL_INSTS_SMEM', - 48: 'SQ_PERF_SEL_INSTS_SMEM_NORM', - 49: 'SQ_PERF_SEL_INSTS_SENDMSG', - 50: 'SQ_PERF_SEL_INSTS_VALU', - 51: 'SQ_PERF_SEL_INSTS_VALU_TRANS32', - 52: 'SQ_PERF_SEL_INSTS_VALU_NO_COEXEC', - 53: 'SQ_PERF_SEL_INSTS_TEX', - 54: 'SQ_PERF_SEL_INSTS_TEX_LOAD', - 55: 'SQ_PERF_SEL_INSTS_TEX_STORE', - 56: 'SQ_PERF_SEL_INSTS_DELAY_ALU', - 57: 'SQ_PERF_SEL_INSTS_INTERNAL', - 58: 'SQ_PERF_SEL_INSTS_VEC32', - 59: 'SQ_PERF_SEL_INSTS_VEC32_FLAT', - 60: 'SQ_PERF_SEL_INSTS_VEC32_LDS', - 61: 'SQ_PERF_SEL_INSTS_VEC32_VALU', - 62: 'SQ_PERF_SEL_VEC32_INSTS_EXP', - 63: 'SQ_PERF_SEL_INSTS_VEC32_VALU_TRANS32', - 64: 'SQ_PERF_SEL_INSTS_VEC32_VALU_NO_COEXEC', - 65: 'SQ_PERF_SEL_INSTS_VEC32_TEX', - 66: 'SQ_PERF_SEL_INSTS_VEC32_TEX_LOAD', - 67: 'SQ_PERF_SEL_INSTS_VEC32_TEX_STORE', - 68: 'SQ_PERF_SEL_ITEM_CYCLES_VALU', - 69: 'SQ_PERF_SEL_VALU_READWRITELANE_CYCLES', - 70: 'SQ_PERF_SEL_WAVE32_INSTS', - 71: 'SQ_PERF_SEL_WAVE64_INSTS', - 72: 'SQ_PERF_SEL_INSTS_VALU_EXEC_SKIPPED', - 73: 'SQ_PERF_SEL_WAVE64_HALF_SKIP', - 74: 'SQ_PERF_SEL_INST_LEVEL_EXP', - 75: 'SQ_PERF_SEL_INST_LEVEL_LDS', - 76: 'SQ_PERF_SEL_INST_LEVEL_SMEM', - 77: 'SQ_PERF_SEL_INST_LEVEL_TEX_LOAD', - 78: 'SQ_PERF_SEL_INST_LEVEL_TEX_STORE', - 79: 'SQ_PERF_SEL_IFETCH_REQS', - 80: 'SQ_PERF_SEL_IFETCH_LEVEL', - 81: 'SQ_PERF_SEL_LDS_DIRECT_CMD_FIFO_FULL_STALL', - 82: 'SQ_PERF_SEL_VALU_SGATHER_STALL', - 83: 'SQ_PERF_SEL_VALU_FWD_BUFFER_FULL_STALL', - 84: 'SQ_PERF_SEL_VALU_SGPR_RD_FIFO_FULL_STALL', - 85: 'SQ_PERF_SEL_VALU_SGATHER_FULL_STALL', - 86: 'SQ_PERF_SEL_SALU_SGATHER_STALL', - 87: 'SQ_PERF_SEL_SALU_SGPR_RD_FIFO_FULL_STALL', - 88: 'SQ_PERF_SEL_SALU_GATHER_FULL_STALL', - 89: 'SQ_PERF_SEL_INST_ISSUE_SMEM_STALL', - 90: 'SQ_PERF_SEL_INST_ISSUE_ALL_STALL', - 91: 'SQ_PERF_SEL_INST_ISSUE_VALU_STALL', - 92: 'SQ_PERF_SEL_INST_ISSUE_SALU_STALL', - 93: 'SQ_PERF_SEL_INST_ISSUE_TEX_STALL', - 94: 'SQ_PERF_SEL_INST_ISSUE_LDS_STALL', - 96: 'SQ_PERF_SEL_INST_ISSUE_EXP_STALL', - 97: 'SQ_PERF_SEL_INST_WAITCNT_STALL', - 98: 'SQ_PERF_SEL_INST_BARRIER_STALL', - 99: 'SQ_PERF_SEL_INST_CYCLES_VALU', - 100: 'SQ_PERF_SEL_INST_CYCLES_VALU_TRANS32', - 101: 'SQ_PERF_SEL_INST_CYCLES_VALU_NO_COEXEC', - 102: 'SQ_PERF_SEL_INST_CYCLES_VMEM', - 103: 'SQ_PERF_SEL_INST_CYCLES_VMEM_LOAD', - 104: 'SQ_PERF_SEL_INST_CYCLES_VMEM_STORE', - 105: 'SQ_PERF_SEL_INST_CYCLES_LDS', - 106: 'SQ_PERF_SEL_INST_CYCLES_TEX', - 107: 'SQ_PERF_SEL_INST_CYCLES_FLAT', - 108: 'SQ_PERF_SEL_INST_CYCLES_EXP', - 109: 'SQ_PERF_SEL_VALU_STARVE', - 110: 'SQ_PERF_SEL_VMEM_ARB_FIFO_FULL', - 111: 'SQ_PERF_SEL_MSG_FIFO_FULL_STALL', - 112: 'SQ_PERF_SEL_EXP_REQ_FIFO_FULL', - 113: 'SQ_PERF_SEL_VMEM_BUS_ACTIVE', - 114: 'SQ_PERF_SEL_VMEM_BUS_STALL', - 115: 'SQ_PERF_SEL_VMEM_BUS_STALL_TA_ADDR_FIFO_FULL', - 116: 'SQ_PERF_SEL_VMEM_BUS_STALL_TA_CMD_FIFO_FULL', - 117: 'SQ_PERF_SEL_VMEM_BUS_STALL_LDS_ADDR_FIFO_FULL', - 118: 'SQ_PERF_SEL_VMEM_BUS_STALL_LDS_CMD_FIFO_FULL', - 119: 'SQ_PERF_SEL_VMEM_STARVE_TA_ADDR_EMPTY', - 120: 'SQ_PERF_SEL_VMEM_STARVE_LDS_ADDR_EMPTY', - 121: 'SQ_PERF_SEL_SALU_PIPE_STALL', - 122: 'SQ_PERF_SEL_SMEM_DCACHE_RETURN_CYCLES', - 123: 'SQ_PERF_SEL_MSG_BUS_BUSY', - 124: 'SQ_PERF_SEL_EXP_REQ_BUS_STALL', - 125: 'SQ_PERF_SEL_EXP_REQ0_BUS_BUSY', - 126: 'SQ_PERF_SEL_EXP_REQ1_BUS_BUSY', - 127: 'SQ_PERF_SEL_EXP_BUS0_BUSY', - 128: 'SQ_PERF_SEL_EXP_BUS1_BUSY', - 129: 'SQ_PERF_SEL_INST_CACHE_REQ_STALL', - 130: 'SQ_PERF_SEL_USER0', - 131: 'SQ_PERF_SEL_USER1', - 132: 'SQ_PERF_SEL_USER2', - 133: 'SQ_PERF_SEL_USER3', - 134: 'SQ_PERF_SEL_USER4', - 135: 'SQ_PERF_SEL_USER5', - 136: 'SQ_PERF_SEL_USER6', - 137: 'SQ_PERF_SEL_USER7', - 138: 'SQ_PERF_SEL_USER8', - 139: 'SQ_PERF_SEL_USER9', - 140: 'SQ_PERF_SEL_USER10', - 141: 'SQ_PERF_SEL_USER11', - 142: 'SQ_PERF_SEL_USER12', - 143: 'SQ_PERF_SEL_USER13', - 144: 'SQ_PERF_SEL_USER14', - 145: 'SQ_PERF_SEL_USER15', - 146: 'SQ_PERF_SEL_USER_LEVEL0', - 147: 'SQ_PERF_SEL_USER_LEVEL1', - 148: 'SQ_PERF_SEL_USER_LEVEL2', - 149: 'SQ_PERF_SEL_USER_LEVEL3', - 150: 'SQ_PERF_SEL_USER_LEVEL4', - 151: 'SQ_PERF_SEL_USER_LEVEL5', - 152: 'SQ_PERF_SEL_USER_LEVEL6', - 153: 'SQ_PERF_SEL_USER_LEVEL7', - 154: 'SQ_PERF_SEL_USER_LEVEL8', - 155: 'SQ_PERF_SEL_USER_LEVEL9', - 156: 'SQ_PERF_SEL_USER_LEVEL10', - 157: 'SQ_PERF_SEL_USER_LEVEL11', - 158: 'SQ_PERF_SEL_USER_LEVEL12', - 159: 'SQ_PERF_SEL_USER_LEVEL13', - 160: 'SQ_PERF_SEL_USER_LEVEL14', - 161: 'SQ_PERF_SEL_USER_LEVEL15', - 162: 'SQ_PERF_SEL_VALU_RETURN_SDST', - 163: 'SQ_PERF_SEL_VMEM_VGPR_READ_STALLED_BY_EXPORT', - 164: 'SQ_PERF_SEL_INSTS_VALU_TRANS', - 165: 'SQ_PERF_SEL_INSTS_LDS_DIRECT_LOAD', - 166: 'SQ_PERF_SEL_INSTS_LDS_PARAM_LOAD', - 167: 'SQ_PERF_SEL_INSTS_VEC32_LDS_PARAM_LOAD', - 168: 'SQ_PERF_SEL_INSTS_VALU_ONE_CYCLE_WAVE64', - 169: 'SQ_PERF_SEL_INSTS_VALU_VINTERP', - 170: 'SQ_PERF_SEL_INSTS_VEC32_VALU_VINTERP', - 171: 'SQ_PERF_SEL_OVERFLOW_PREV', - 172: 'SQ_PERF_SEL_INSTS_DUAL_VALU_WAVE32', - 173: 'SQ_PERF_SEL_INSTS_VALU_1_PASS', - 174: 'SQ_PERF_SEL_INSTS_VALU_2_PASS', - 175: 'SQ_PERF_SEL_INSTS_VALU_4_PASS', - 176: 'SQ_PERF_SEL_INSTS_VALU_DP', - 177: 'SQ_PERF_SEL_SP_CONST_CYCLES', - 178: 'SQ_PERF_SEL_SP_CONST_STALL_CYCLES', - 179: 'SQ_PERF_SEL_ITEMS_VALU', - 180: 'SQ_PERF_SEL_ITEMS_MAX_VALU', - 181: 'SQ_PERF_SEL_ITEM_CYCLES_VMEM', - 182: 'SQ_PERF_SEL_INSTS_DELAY_ALU_COISSUE', - 183: 'SQ_PERF_SEL_INSTS_FLAT_LOAD', - 184: 'SQ_PERF_SEL_INSTS_FLAT_STORE', - 185: 'SQ_PERF_SEL_INSTS_VALU_ONE_CYCLE_WAVE64_16BIT', - 186: 'SQ_PERF_SEL_INSTS_VALU_ONE_CYCLE_WAVE64_32BIT', - 187: 'SQ_PERF_SEL_INSTS_NON_VALU_EXEC_SKIPPED', - 188: 'SQ_PERF_SEL_INSTS_BARRIER_LOCK', - 189: 'SQ_PERF_SEL_INSTS_WAKEUP', - 190: 'SQ_PERF_SEL_IS_CACHE_REQ', - 191: 'SQ_PERF_SEL_INSTS_SALU_PS', - 192: 'SQ_PERF_SEL_INSTS_SALU_GS', - 193: 'SQ_PERF_SEL_INSTS_SALU_HS', - 194: 'SQ_PERF_SEL_INSTS_SALU_CS', - 195: 'SQ_PERF_SEL_INSTS_SMEM_PS', - 196: 'SQ_PERF_SEL_INSTS_SMEM_GS', - 197: 'SQ_PERF_SEL_INSTS_SMEM_HS', - 198: 'SQ_PERF_SEL_INSTS_SMEM_CS', - 199: 'SQ_PERF_SEL_INSTS_VEC32_TEX_PS', - 200: 'SQ_PERF_SEL_INSTS_VEC32_TEX_GS', - 201: 'SQ_PERF_SEL_INSTS_VEC32_TEX_HS', - 202: 'SQ_PERF_SEL_INSTS_VEC32_TEX_CS', - 203: 'SQ_PERF_SEL_INSTS_VEC32_VALU_PS', - 204: 'SQ_PERF_SEL_INSTS_VEC32_VALU_GS', - 205: 'SQ_PERF_SEL_INSTS_VEC32_VALU_HS', - 206: 'SQ_PERF_SEL_INSTS_VEC32_VALU_CS', - 207: 'SQ_PERF_SEL_WAIT_CNT_SAMPLE', - 209: 'SQ_PERF_SEL_WAIT_CNT_KM', - 210: 'SQ_PERF_SEL_WAIT_CNT_DS', - 211: 'SQ_PERF_SEL_WAIT_CNT_EXP', - 212: 'SQ_PERF_SEL_INSTS_SALU_FLOAT', - 213: 'SQ_PERF_SEL_INSTS_VGPR_ALLOC', - 214: 'SQ_PERF_SEL_INSTS_VGPR_ALLOC_FAIL', - 215: 'SQ_PERF_SEL_INSTS_LOCK', - 216: 'SQ_PERF_SEL_INSTS_VALU_COISSUE', - 217: 'SQ_PERF_SEL_INSTS_VEC32_LEVEL_LDS_LOAD', - 218: 'SQ_PERF_SEL_INSTS_VEC32_LEVEL_LDS_STORE', - 219: 'SQ_PERF_SEL_IS_CACHE_MISS', - 220: 'SQ_PERF_SEL_IS_CACHE_DUP_MISS', - 221: 'SQ_PERF_SEL_INST_CYCLES_VMEM_ATOMIC', - 222: 'SQ_PERF_SEL_INSTS_TEX_BLOCK_LOAD', - 224: 'SQ_PERF_SEL_INSTS_TEX_SAMPLE', - 225: 'SQ_PERF_SEL_INSTS_TEX_ATOMIC_RTN', - 226: 'SQ_PERF_SEL_INSTS_TEX_BLOCK_STORE', - 227: 'SQ_PERF_SEL_INSTS_TEX_ATOMIC_NORTN', - 228: 'SQ_PERF_SEL_INSTS_GLOBAL_SCRATCH', - 229: 'SQ_PERF_SEL_INSTS_WMMA_LOAD', - 230: 'SQ_PERF_SEL_INSTS_FLAT_ATOMIC', - 231: 'SQ_PERF_SEL_INSTS_EXP_MRT', - 232: 'SQ_PERF_SEL_INSTS_EXP_Z', - 233: 'SQ_PERF_SEL_INSTS_VEC32_VALU_WMMA', - 234: 'SQ_PERF_SEL_INSTS_VEC32_LDS_LOAD', - 235: 'SQ_PERF_SEL_INSTS_VEC32_LDS_ATOMIC_RTN', - 236: 'SQ_PERF_SEL_INSTS_VEC32_LDS_STORE', - 237: 'SQ_PERF_SEL_INSTS_VEC32_LDS_ATOMIC_NORTN', - 239: 'SQ_PERF_SEL_INSTS_VEC32_LDS_OTHER', - 241: 'SQ_PERF_SEL_INSTS_VEC32_TEX_SAMPLE', - 242: 'SQ_PERF_SEL_INSTS_VEC32_TEX_ATOMIC', - 243: 'SQ_PERF_SEL_INSTS_VEC32_FLAT_LOAD', - 244: 'SQ_PERF_SEL_INSTS_VEC32_FLAT_STORE', - 245: 'SQ_PERF_SEL_INSTS_VEC32_FLAT_ATOMIC', - 246: 'SQ_PERF_SEL_INSTS_VEC32_GLOBAL_SCRATCH', - 247: 'SQ_PERF_SEL_INSTS_VEC32_GLOBAL_SCRATCH_LOAD', - 248: 'SQ_PERF_SEL_INSTS_VEC32_GLOBAL_SCRATCH_STORE', - 249: 'SQ_PERF_SEL_INSTS_VEC32_GLOBAL_SCRATCH_ATOMIC', - 250: 'SQ_PERF_SEL_INSTS_VEC32_LEVEL_LDS', - 251: 'SQ_PERF_SEL_DUMMY_END', - 287: 'SQ_PERF_SEL_DUMMY_LAST', - 288: 'SQC_PERF_SEL_LDS_BANK_CONFLICT', - 289: 'SQC_PERF_SEL_LDS_ADDR_CONFLICT', - 290: 'SQC_PERF_SEL_LDS_UNALIGNED_STALL', - 291: 'SQC_PERF_SEL_LDS_MEM_VIOLATIONS', - 292: 'SQC_PERF_SEL_LDS_ATOMIC_RETURN', - 293: 'SQC_PERF_SEL_LDS_IDX_ACTIVE', - 294: 'SQC_PERF_SEL_LDS_ADDR_STALL', - 295: 'SQC_PERF_SEL_LDS_ADDR_ACTIVE', - 296: 'SQC_PERF_SEL_LDS_PC_LDS_WRITE_STALL_TD', - 297: 'SQC_PERF_SEL_LDS_SPI_VGPR_WRITE_STALL_TD', - 298: 'SQC_PERF_SEL_LDS_LDS_VGPR_WRITE_STALL', - 299: 'SQC_PERF_SEL_LDS_FP_ADD_CYCLES', - 300: 'SQC_PERF_SEL_ICACHE_BUSY_CYCLES', - 301: 'SQC_PERF_SEL_ICACHE_REQ', - 302: 'SQC_PERF_SEL_ICACHE_HITS', - 303: 'SQC_PERF_SEL_ICACHE_MISSES', - 304: 'SQC_PERF_SEL_ICACHE_MISSES_DUPLICATE', - 305: 'SQC_PERF_SEL_ICACHE_INVAL_INST', - 306: 'SQC_PERF_SEL_ICACHE_INVAL_ASYNC', - 307: 'SQC_PERF_SEL_ICACHE_INFLIGHT_LEVEL', - 308: 'SQC_PERF_SEL_DCACHE_INFLIGHT_LEVEL', - 309: 'SQC_PERF_SEL_TC_INFLIGHT_LEVEL', - 310: 'SQC_PERF_SEL_ICACHE_TC_INFLIGHT_LEVEL', - 311: 'SQC_PERF_SEL_DCACHE_TC_INFLIGHT_LEVEL', - 312: 'SQC_PERF_SEL_ICACHE_INPUT_VALID_READYB', - 313: 'SQC_PERF_SEL_DCACHE_INPUT_VALID_READYB', - 314: 'SQC_PERF_SEL_TC_REQ', - 315: 'SQC_PERF_SEL_TC_INST_REQ', - 316: 'SQC_PERF_SEL_TC_DATA_READ_REQ', - 317: 'SQC_PERF_SEL_TC_STALL', - 318: 'SQC_PERF_SEL_TC_STARVE', - 319: 'SQC_PERF_SEL_ICACHE_INPUT_STALL_ARB_NO_GRANT', - 320: 'SQC_PERF_SEL_ICACHE_INPUT_STALL_BANK_READYB', - 321: 'SQC_PERF_SEL_ICACHE_CACHE_STALLED', - 322: 'SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_MAX', - 323: 'SQC_PERF_SEL_ICACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 324: 'SQC_PERF_SEL_DCACHE_BUSY_CYCLES', - 325: 'SQC_PERF_SEL_DCACHE_REQ', - 326: 'SQC_PERF_SEL_DCACHE_HITS', - 327: 'SQC_PERF_SEL_DCACHE_MISSES', - 328: 'SQC_PERF_SEL_DCACHE_MISSES_DUPLICATE', - 329: 'SQC_PERF_SEL_DCACHE_INVAL_INST', - 330: 'SQC_PERF_SEL_DCACHE_INVAL_ASYNC', - 331: 'SQC_PERF_SEL_DCACHE_HIT_LRU_READ', - 332: 'SQC_PERF_SEL_DCACHE_INPUT_STALL_ARB_NO_GRANT', - 333: 'SQC_PERF_SEL_DCACHE_INPUT_STALL_BANK_READYB', - 334: 'SQC_PERF_SEL_DCACHE_CACHE_STALLED', - 335: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_INFLIGHT_MAX', - 336: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT', - 337: 'SQC_PERF_SEL_DCACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 338: 'SQC_PERF_SEL_DCACHE_REQ_READ_1', - 339: 'SQC_PERF_SEL_DCACHE_REQ_READ_2', - 340: 'SQC_PERF_SEL_DCACHE_REQ_READ_4', - 341: 'SQC_PERF_SEL_DCACHE_REQ_READ_8', - 342: 'SQC_PERF_SEL_DCACHE_REQ_READ_16', - 343: 'SQC_PERF_SEL_DCACHE_REQ_ATC_PROBE', - 344: 'SQC_PERF_SEL_SQ_DCACHE_REQS', - 345: 'SQC_PERF_SEL_DCACHE_FLAT_REQ', - 346: 'SQC_PERF_SEL_TD_VGPR_BUSY', - 347: 'SQC_PERF_SEL_LDS_VGPR_BUSY', - 348: 'SQC_PERF_SEL_LDS_TD_VGPR_CONF_STALL', - 349: 'SQC_PERF_SEL_ICACHE_GCR', - 350: 'SQC_PERF_SEL_ICACHE_GCR_HITS', - 351: 'SQC_PERF_SEL_DCACHE_GCR', - 352: 'SQC_PERF_SEL_DCACHE_GCR_HITS', - 353: 'SQC_PERF_SEL_ICACHE_GCR_INVALIDATE', - 354: 'SQC_PERF_SEL_DCACHE_GCR_INVALIDATE', - 355: 'SQC_PERF_SEL_DCACHE_SPI_RETURN_STALL', - 356: 'SQC_PERF_SEL_ICACHE_PREFETCH_REQ_CACHELINES', - 357: 'SQC_PERF_SEL_DCACHE_PREFETCH_REQ_CACHELINES', - 358: 'SQC_PERF_SEL_ICACHE_PREFETCH_MISSES', - 359: 'SQC_PERF_SEL_DCACHE_PREFETCH_MISSES', - 360: 'SQC_PERF_SEL_LDS_BANKCONF_LOAD_CNT', - 361: 'SQC_PERF_SEL_LDS_BANKCONF_STORE_CNT', - 362: 'SQC_PERF_SEL_LDS_BANKCONF_ATOMIC_CNT', - 363: 'SQC_PERF_SEL_LDS_ACTIVE_LOAD_CNT', - 364: 'SQC_PERF_SEL_LDS_ACTIVE_STORE_CNT', - 365: 'SQC_PERF_SEL_LDS_ACTIVE_ATOMIC_CNT', - 366: 'SQC_PERF_SEL_LDS_STORE_DWORDS', - 367: 'SQC_PERF_SEL_LDS_LOAD_DWORDS', - 368: 'SQC_PERF_SEL_LDS_ATOMIC_DWORDS', - 369: 'SQC_PERF_SEL_LDS_LDS_EXECUTION_STALL', - 370: 'SQC_PERF_SEL_DUMMY_LAST', - 448: 'SP_PERF_SEL_DST_BUF_ALLOC_STALL', - 449: 'SP_PERF_SEL_DST_BUF_WB_CONF_W_TD_LDS', - 450: 'SP_PERF_SEL_DST_BUF_WB_CONF_W_SPI', - 451: 'SP_PERF_SEL_DST_BUF_EVEN_DIRTY', - 452: 'SP_PERF_SEL_DST_BUF_ODD_DIRTY', - 453: 'SP_PERF_SEL_SRC_CACHE_HIT_B0', - 454: 'SP_PERF_SEL_SRC_CACHE_HIT_B1', - 455: 'SP_PERF_SEL_SRC_CACHE_HIT_B2', - 456: 'SP_PERF_SEL_SRC_CACHE_HIT_B3', - 457: 'SP_PERF_SEL_SRC_CACHE_PROBE_B0', - 458: 'SP_PERF_SEL_SRC_CACHE_PROBE_B1', - 459: 'SP_PERF_SEL_SRC_CACHE_PROBE_B2', - 460: 'SP_PERF_SEL_SRC_CACHE_PROBE_B3', - 461: 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B0', - 462: 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B1', - 463: 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B2', - 464: 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B3', - 465: 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B0', - 466: 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B1', - 467: 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B2', - 468: 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B3', - 469: 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B0', - 470: 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B1', - 471: 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B2', - 472: 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B3', - 473: 'SP_PERF_SEL_VALU_PENDING_QUEUE_STALL', - 474: 'SP_PERF_SEL_VALU_OPERAND', - 475: 'SP_PERF_SEL_VALU_VGPR_OPERAND', - 476: 'SP_PERF_SEL_VALU_OPERAND_FROM_DST_BUF', - 477: 'SP_PERF_SEL_VALU_EXEC_MASK_CHANGE', - 478: 'SP_PERF_SEL_VALU_COEXEC_WITH_TRANS', - 479: 'SP_PERF_SEL_VALU_SGPR_FWD_BUF_FULL', - 480: 'SP_PERF_SEL_VALU_STALL', - 481: 'SP_PERF_SEL_VALU_STALL_VGPR_NOT_READY', - 482: 'SP_PERF_SEL_VALU_STALL_SGPR_NOT_READY', - 483: 'SP_PERF_SEL_VALU_STALL_VDST_FWD', - 484: 'SP_PERF_SEL_VALU_STALL_SDST_FWD', - 485: 'SP_PERF_SEL_VALU_STALL_DST_STALL', - 486: 'SP_PERF_SEL_VALU_FAST_OP_STALL_VGPR_NOT_READY', - 487: 'SP_PERF_SEL_VGPR_VMEM_RD', - 488: 'SP_PERF_SEL_VGPR_EXP_RD', - 489: 'SP_PERF_SEL_VGPR_SPI_WR', - 490: 'SP_PERF_SEL_VGPR_TDLDS_DATA_WR', - 491: 'SP_PERF_SEL_VGPR_WR', - 492: 'SP_PERF_SEL_VGPR_RD', - 493: 'SP_PERF_SEL_VGPR_WR_KILL', - 494: 'SP_PERF_SEL_VALU_VGPR_RD_CONFLICT_EXP', - 495: 'SP_PERF_SEL_VALU_VGPR_RD_CONFLICT_LDS', - 496: 'SP_PERF_SEL_VALU_VGPR_RD_CONFLICT_TEX', - 497: 'SP_PERF_SEL_DUMMY_LAST', - 511: 'SQ_PERF_SEL_NONE2', -} -SQ_PERF_SEL_NONE = 0 -SQ_PERF_SEL_ACCUM_PREV = 1 -SQ_PERF_SEL_CYCLES = 2 -SQ_PERF_SEL_BUSY_CYCLES = 3 -SQ_PERF_SEL_WAVES = 4 -SQ_PERF_SEL_WAVES_32 = 5 -SQ_PERF_SEL_WAVES_64 = 6 -SQ_PERF_SEL_LEVEL_WAVES = 7 -SQ_PERF_SEL_ITEMS = 8 -SQ_PERF_SEL_WAVE32_ITEMS = 9 -SQ_PERF_SEL_WAVE64_ITEMS = 10 -SQ_PERF_SEL_PS_QUADS = 11 -SQ_PERF_SEL_EVENTS = 12 -SQ_PERF_SEL_WAVES_EQ_32 = 13 -SQ_PERF_SEL_WAVES_EQ_64 = 14 -SQ_PERF_SEL_WAVES_LT_64 = 15 -SQ_PERF_SEL_WAVES_LT_48 = 16 -SQ_PERF_SEL_WAVES_LT_32 = 17 -SQ_PERF_SEL_WAVES_LT_16 = 18 -SQ_PERF_SEL_WAVES_RESTORED = 19 -SQ_PERF_SEL_WAVES_SAVED = 20 -SQ_PERF_SEL_MSG = 21 -SQ_PERF_SEL_MSG_INTERRUPT = 22 -SQ_PERF_SEL_WAVES_INITIAL_PREFETCH = 23 -SQ_PERF_SEL_WAVE_CYCLES = 24 -SQ_PERF_SEL_WAVE_READY = 25 -SQ_PERF_SEL_WAIT_INST_ANY = 26 -SQ_PERF_SEL_WAIT_ANY = 27 -SQ_PERF_SEL_WAIT_CNT_ANY = 28 -SQ_PERF_SEL_WAIT_CNT_LOAD = 29 -SQ_PERF_SEL_WAIT_CNT_STORE = 30 -SQ_PERF_SEL_WAIT_TTRACE = 31 -SQ_PERF_SEL_WAIT_IFETCH = 32 -SQ_PERF_SEL_WAIT_BARRIER = 33 -SQ_PERF_SEL_WAIT_EXP_ALLOC = 34 -SQ_PERF_SEL_WAIT_SLEEP = 35 -SQ_PERF_SEL_WAIT_DELAY_ALU = 36 -SQ_PERF_SEL_WAIT_DEPCTR = 37 -SQ_PERF_SEL_WAIT_OTHER = 38 -SQ_PERF_SEL_INSTS_ALL = 39 -SQ_PERF_SEL_INSTS_BRANCH = 40 -SQ_PERF_SEL_INSTS_CBRANCH_NOT_TAKEN = 41 -SQ_PERF_SEL_INSTS_CBRANCH_TAKEN = 42 -SQ_PERF_SEL_INSTS_EXP = 43 -SQ_PERF_SEL_INSTS_FLAT = 44 -SQ_PERF_SEL_INSTS_LDS = 45 -SQ_PERF_SEL_INSTS_SALU = 46 -SQ_PERF_SEL_INSTS_SMEM = 47 -SQ_PERF_SEL_INSTS_SMEM_NORM = 48 -SQ_PERF_SEL_INSTS_SENDMSG = 49 -SQ_PERF_SEL_INSTS_VALU = 50 -SQ_PERF_SEL_INSTS_VALU_TRANS32 = 51 -SQ_PERF_SEL_INSTS_VALU_NO_COEXEC = 52 -SQ_PERF_SEL_INSTS_TEX = 53 -SQ_PERF_SEL_INSTS_TEX_LOAD = 54 -SQ_PERF_SEL_INSTS_TEX_STORE = 55 -SQ_PERF_SEL_INSTS_DELAY_ALU = 56 -SQ_PERF_SEL_INSTS_INTERNAL = 57 -SQ_PERF_SEL_INSTS_VEC32 = 58 -SQ_PERF_SEL_INSTS_VEC32_FLAT = 59 -SQ_PERF_SEL_INSTS_VEC32_LDS = 60 -SQ_PERF_SEL_INSTS_VEC32_VALU = 61 -SQ_PERF_SEL_VEC32_INSTS_EXP = 62 -SQ_PERF_SEL_INSTS_VEC32_VALU_TRANS32 = 63 -SQ_PERF_SEL_INSTS_VEC32_VALU_NO_COEXEC = 64 -SQ_PERF_SEL_INSTS_VEC32_TEX = 65 -SQ_PERF_SEL_INSTS_VEC32_TEX_LOAD = 66 -SQ_PERF_SEL_INSTS_VEC32_TEX_STORE = 67 -SQ_PERF_SEL_ITEM_CYCLES_VALU = 68 -SQ_PERF_SEL_VALU_READWRITELANE_CYCLES = 69 -SQ_PERF_SEL_WAVE32_INSTS = 70 -SQ_PERF_SEL_WAVE64_INSTS = 71 -SQ_PERF_SEL_INSTS_VALU_EXEC_SKIPPED = 72 -SQ_PERF_SEL_WAVE64_HALF_SKIP = 73 -SQ_PERF_SEL_INST_LEVEL_EXP = 74 -SQ_PERF_SEL_INST_LEVEL_LDS = 75 -SQ_PERF_SEL_INST_LEVEL_SMEM = 76 -SQ_PERF_SEL_INST_LEVEL_TEX_LOAD = 77 -SQ_PERF_SEL_INST_LEVEL_TEX_STORE = 78 -SQ_PERF_SEL_IFETCH_REQS = 79 -SQ_PERF_SEL_IFETCH_LEVEL = 80 -SQ_PERF_SEL_LDS_DIRECT_CMD_FIFO_FULL_STALL = 81 -SQ_PERF_SEL_VALU_SGATHER_STALL = 82 -SQ_PERF_SEL_VALU_FWD_BUFFER_FULL_STALL = 83 -SQ_PERF_SEL_VALU_SGPR_RD_FIFO_FULL_STALL = 84 -SQ_PERF_SEL_VALU_SGATHER_FULL_STALL = 85 -SQ_PERF_SEL_SALU_SGATHER_STALL = 86 -SQ_PERF_SEL_SALU_SGPR_RD_FIFO_FULL_STALL = 87 -SQ_PERF_SEL_SALU_GATHER_FULL_STALL = 88 -SQ_PERF_SEL_INST_ISSUE_SMEM_STALL = 89 -SQ_PERF_SEL_INST_ISSUE_ALL_STALL = 90 -SQ_PERF_SEL_INST_ISSUE_VALU_STALL = 91 -SQ_PERF_SEL_INST_ISSUE_SALU_STALL = 92 -SQ_PERF_SEL_INST_ISSUE_TEX_STALL = 93 -SQ_PERF_SEL_INST_ISSUE_LDS_STALL = 94 -SQ_PERF_SEL_INST_ISSUE_EXP_STALL = 96 -SQ_PERF_SEL_INST_WAITCNT_STALL = 97 -SQ_PERF_SEL_INST_BARRIER_STALL = 98 -SQ_PERF_SEL_INST_CYCLES_VALU = 99 -SQ_PERF_SEL_INST_CYCLES_VALU_TRANS32 = 100 -SQ_PERF_SEL_INST_CYCLES_VALU_NO_COEXEC = 101 -SQ_PERF_SEL_INST_CYCLES_VMEM = 102 -SQ_PERF_SEL_INST_CYCLES_VMEM_LOAD = 103 -SQ_PERF_SEL_INST_CYCLES_VMEM_STORE = 104 -SQ_PERF_SEL_INST_CYCLES_LDS = 105 -SQ_PERF_SEL_INST_CYCLES_TEX = 106 -SQ_PERF_SEL_INST_CYCLES_FLAT = 107 -SQ_PERF_SEL_INST_CYCLES_EXP = 108 -SQ_PERF_SEL_VALU_STARVE = 109 -SQ_PERF_SEL_VMEM_ARB_FIFO_FULL = 110 -SQ_PERF_SEL_MSG_FIFO_FULL_STALL = 111 -SQ_PERF_SEL_EXP_REQ_FIFO_FULL = 112 -SQ_PERF_SEL_VMEM_BUS_ACTIVE = 113 -SQ_PERF_SEL_VMEM_BUS_STALL = 114 -SQ_PERF_SEL_VMEM_BUS_STALL_TA_ADDR_FIFO_FULL = 115 -SQ_PERF_SEL_VMEM_BUS_STALL_TA_CMD_FIFO_FULL = 116 -SQ_PERF_SEL_VMEM_BUS_STALL_LDS_ADDR_FIFO_FULL = 117 -SQ_PERF_SEL_VMEM_BUS_STALL_LDS_CMD_FIFO_FULL = 118 -SQ_PERF_SEL_VMEM_STARVE_TA_ADDR_EMPTY = 119 -SQ_PERF_SEL_VMEM_STARVE_LDS_ADDR_EMPTY = 120 -SQ_PERF_SEL_SALU_PIPE_STALL = 121 -SQ_PERF_SEL_SMEM_DCACHE_RETURN_CYCLES = 122 -SQ_PERF_SEL_MSG_BUS_BUSY = 123 -SQ_PERF_SEL_EXP_REQ_BUS_STALL = 124 -SQ_PERF_SEL_EXP_REQ0_BUS_BUSY = 125 -SQ_PERF_SEL_EXP_REQ1_BUS_BUSY = 126 -SQ_PERF_SEL_EXP_BUS0_BUSY = 127 -SQ_PERF_SEL_EXP_BUS1_BUSY = 128 -SQ_PERF_SEL_INST_CACHE_REQ_STALL = 129 -SQ_PERF_SEL_USER0 = 130 -SQ_PERF_SEL_USER1 = 131 -SQ_PERF_SEL_USER2 = 132 -SQ_PERF_SEL_USER3 = 133 -SQ_PERF_SEL_USER4 = 134 -SQ_PERF_SEL_USER5 = 135 -SQ_PERF_SEL_USER6 = 136 -SQ_PERF_SEL_USER7 = 137 -SQ_PERF_SEL_USER8 = 138 -SQ_PERF_SEL_USER9 = 139 -SQ_PERF_SEL_USER10 = 140 -SQ_PERF_SEL_USER11 = 141 -SQ_PERF_SEL_USER12 = 142 -SQ_PERF_SEL_USER13 = 143 -SQ_PERF_SEL_USER14 = 144 -SQ_PERF_SEL_USER15 = 145 -SQ_PERF_SEL_USER_LEVEL0 = 146 -SQ_PERF_SEL_USER_LEVEL1 = 147 -SQ_PERF_SEL_USER_LEVEL2 = 148 -SQ_PERF_SEL_USER_LEVEL3 = 149 -SQ_PERF_SEL_USER_LEVEL4 = 150 -SQ_PERF_SEL_USER_LEVEL5 = 151 -SQ_PERF_SEL_USER_LEVEL6 = 152 -SQ_PERF_SEL_USER_LEVEL7 = 153 -SQ_PERF_SEL_USER_LEVEL8 = 154 -SQ_PERF_SEL_USER_LEVEL9 = 155 -SQ_PERF_SEL_USER_LEVEL10 = 156 -SQ_PERF_SEL_USER_LEVEL11 = 157 -SQ_PERF_SEL_USER_LEVEL12 = 158 -SQ_PERF_SEL_USER_LEVEL13 = 159 -SQ_PERF_SEL_USER_LEVEL14 = 160 -SQ_PERF_SEL_USER_LEVEL15 = 161 -SQ_PERF_SEL_VALU_RETURN_SDST = 162 -SQ_PERF_SEL_VMEM_VGPR_READ_STALLED_BY_EXPORT = 163 -SQ_PERF_SEL_INSTS_VALU_TRANS = 164 -SQ_PERF_SEL_INSTS_LDS_DIRECT_LOAD = 165 -SQ_PERF_SEL_INSTS_LDS_PARAM_LOAD = 166 -SQ_PERF_SEL_INSTS_VEC32_LDS_PARAM_LOAD = 167 -SQ_PERF_SEL_INSTS_VALU_ONE_CYCLE_WAVE64 = 168 -SQ_PERF_SEL_INSTS_VALU_VINTERP = 169 -SQ_PERF_SEL_INSTS_VEC32_VALU_VINTERP = 170 -SQ_PERF_SEL_OVERFLOW_PREV = 171 -SQ_PERF_SEL_INSTS_DUAL_VALU_WAVE32 = 172 -SQ_PERF_SEL_INSTS_VALU_1_PASS = 173 -SQ_PERF_SEL_INSTS_VALU_2_PASS = 174 -SQ_PERF_SEL_INSTS_VALU_4_PASS = 175 -SQ_PERF_SEL_INSTS_VALU_DP = 176 -SQ_PERF_SEL_SP_CONST_CYCLES = 177 -SQ_PERF_SEL_SP_CONST_STALL_CYCLES = 178 -SQ_PERF_SEL_ITEMS_VALU = 179 -SQ_PERF_SEL_ITEMS_MAX_VALU = 180 -SQ_PERF_SEL_ITEM_CYCLES_VMEM = 181 -SQ_PERF_SEL_INSTS_DELAY_ALU_COISSUE = 182 -SQ_PERF_SEL_INSTS_FLAT_LOAD = 183 -SQ_PERF_SEL_INSTS_FLAT_STORE = 184 -SQ_PERF_SEL_INSTS_VALU_ONE_CYCLE_WAVE64_16BIT = 185 -SQ_PERF_SEL_INSTS_VALU_ONE_CYCLE_WAVE64_32BIT = 186 -SQ_PERF_SEL_INSTS_NON_VALU_EXEC_SKIPPED = 187 -SQ_PERF_SEL_INSTS_BARRIER_LOCK = 188 -SQ_PERF_SEL_INSTS_WAKEUP = 189 -SQ_PERF_SEL_IS_CACHE_REQ = 190 -SQ_PERF_SEL_INSTS_SALU_PS = 191 -SQ_PERF_SEL_INSTS_SALU_GS = 192 -SQ_PERF_SEL_INSTS_SALU_HS = 193 -SQ_PERF_SEL_INSTS_SALU_CS = 194 -SQ_PERF_SEL_INSTS_SMEM_PS = 195 -SQ_PERF_SEL_INSTS_SMEM_GS = 196 -SQ_PERF_SEL_INSTS_SMEM_HS = 197 -SQ_PERF_SEL_INSTS_SMEM_CS = 198 -SQ_PERF_SEL_INSTS_VEC32_TEX_PS = 199 -SQ_PERF_SEL_INSTS_VEC32_TEX_GS = 200 -SQ_PERF_SEL_INSTS_VEC32_TEX_HS = 201 -SQ_PERF_SEL_INSTS_VEC32_TEX_CS = 202 -SQ_PERF_SEL_INSTS_VEC32_VALU_PS = 203 -SQ_PERF_SEL_INSTS_VEC32_VALU_GS = 204 -SQ_PERF_SEL_INSTS_VEC32_VALU_HS = 205 -SQ_PERF_SEL_INSTS_VEC32_VALU_CS = 206 -SQ_PERF_SEL_WAIT_CNT_SAMPLE = 207 -SQ_PERF_SEL_WAIT_CNT_KM = 209 -SQ_PERF_SEL_WAIT_CNT_DS = 210 -SQ_PERF_SEL_WAIT_CNT_EXP = 211 -SQ_PERF_SEL_INSTS_SALU_FLOAT = 212 -SQ_PERF_SEL_INSTS_VGPR_ALLOC = 213 -SQ_PERF_SEL_INSTS_VGPR_ALLOC_FAIL = 214 -SQ_PERF_SEL_INSTS_LOCK = 215 -SQ_PERF_SEL_INSTS_VALU_COISSUE = 216 -SQ_PERF_SEL_INSTS_VEC32_LEVEL_LDS_LOAD = 217 -SQ_PERF_SEL_INSTS_VEC32_LEVEL_LDS_STORE = 218 -SQ_PERF_SEL_IS_CACHE_MISS = 219 -SQ_PERF_SEL_IS_CACHE_DUP_MISS = 220 -SQ_PERF_SEL_INST_CYCLES_VMEM_ATOMIC = 221 -SQ_PERF_SEL_INSTS_TEX_BLOCK_LOAD = 222 -SQ_PERF_SEL_INSTS_TEX_SAMPLE = 224 -SQ_PERF_SEL_INSTS_TEX_ATOMIC_RTN = 225 -SQ_PERF_SEL_INSTS_TEX_BLOCK_STORE = 226 -SQ_PERF_SEL_INSTS_TEX_ATOMIC_NORTN = 227 -SQ_PERF_SEL_INSTS_GLOBAL_SCRATCH = 228 -SQ_PERF_SEL_INSTS_WMMA_LOAD = 229 -SQ_PERF_SEL_INSTS_FLAT_ATOMIC = 230 -SQ_PERF_SEL_INSTS_EXP_MRT = 231 -SQ_PERF_SEL_INSTS_EXP_Z = 232 -SQ_PERF_SEL_INSTS_VEC32_VALU_WMMA = 233 -SQ_PERF_SEL_INSTS_VEC32_LDS_LOAD = 234 -SQ_PERF_SEL_INSTS_VEC32_LDS_ATOMIC_RTN = 235 -SQ_PERF_SEL_INSTS_VEC32_LDS_STORE = 236 -SQ_PERF_SEL_INSTS_VEC32_LDS_ATOMIC_NORTN = 237 -SQ_PERF_SEL_INSTS_VEC32_LDS_OTHER = 239 -SQ_PERF_SEL_INSTS_VEC32_TEX_SAMPLE = 241 -SQ_PERF_SEL_INSTS_VEC32_TEX_ATOMIC = 242 -SQ_PERF_SEL_INSTS_VEC32_FLAT_LOAD = 243 -SQ_PERF_SEL_INSTS_VEC32_FLAT_STORE = 244 -SQ_PERF_SEL_INSTS_VEC32_FLAT_ATOMIC = 245 -SQ_PERF_SEL_INSTS_VEC32_GLOBAL_SCRATCH = 246 -SQ_PERF_SEL_INSTS_VEC32_GLOBAL_SCRATCH_LOAD = 247 -SQ_PERF_SEL_INSTS_VEC32_GLOBAL_SCRATCH_STORE = 248 -SQ_PERF_SEL_INSTS_VEC32_GLOBAL_SCRATCH_ATOMIC = 249 -SQ_PERF_SEL_INSTS_VEC32_LEVEL_LDS = 250 -SQ_PERF_SEL_DUMMY_END = 251 -SQ_PERF_SEL_DUMMY_LAST = 287 -SQC_PERF_SEL_LDS_BANK_CONFLICT = 288 -SQC_PERF_SEL_LDS_ADDR_CONFLICT = 289 -SQC_PERF_SEL_LDS_UNALIGNED_STALL = 290 -SQC_PERF_SEL_LDS_MEM_VIOLATIONS = 291 -SQC_PERF_SEL_LDS_ATOMIC_RETURN = 292 -SQC_PERF_SEL_LDS_IDX_ACTIVE = 293 -SQC_PERF_SEL_LDS_ADDR_STALL = 294 -SQC_PERF_SEL_LDS_ADDR_ACTIVE = 295 -SQC_PERF_SEL_LDS_PC_LDS_WRITE_STALL_TD = 296 -SQC_PERF_SEL_LDS_SPI_VGPR_WRITE_STALL_TD = 297 -SQC_PERF_SEL_LDS_LDS_VGPR_WRITE_STALL = 298 -SQC_PERF_SEL_LDS_FP_ADD_CYCLES = 299 -SQC_PERF_SEL_ICACHE_BUSY_CYCLES = 300 -SQC_PERF_SEL_ICACHE_REQ = 301 -SQC_PERF_SEL_ICACHE_HITS = 302 -SQC_PERF_SEL_ICACHE_MISSES = 303 -SQC_PERF_SEL_ICACHE_MISSES_DUPLICATE = 304 -SQC_PERF_SEL_ICACHE_INVAL_INST = 305 -SQC_PERF_SEL_ICACHE_INVAL_ASYNC = 306 -SQC_PERF_SEL_ICACHE_INFLIGHT_LEVEL = 307 -SQC_PERF_SEL_DCACHE_INFLIGHT_LEVEL = 308 -SQC_PERF_SEL_TC_INFLIGHT_LEVEL = 309 -SQC_PERF_SEL_ICACHE_TC_INFLIGHT_LEVEL = 310 -SQC_PERF_SEL_DCACHE_TC_INFLIGHT_LEVEL = 311 -SQC_PERF_SEL_ICACHE_INPUT_VALID_READYB = 312 -SQC_PERF_SEL_DCACHE_INPUT_VALID_READYB = 313 -SQC_PERF_SEL_TC_REQ = 314 -SQC_PERF_SEL_TC_INST_REQ = 315 -SQC_PERF_SEL_TC_DATA_READ_REQ = 316 -SQC_PERF_SEL_TC_STALL = 317 -SQC_PERF_SEL_TC_STARVE = 318 -SQC_PERF_SEL_ICACHE_INPUT_STALL_ARB_NO_GRANT = 319 -SQC_PERF_SEL_ICACHE_INPUT_STALL_BANK_READYB = 320 -SQC_PERF_SEL_ICACHE_CACHE_STALLED = 321 -SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_MAX = 322 -SQC_PERF_SEL_ICACHE_STALL_OUTXBAR_ARB_NO_GRANT = 323 -SQC_PERF_SEL_DCACHE_BUSY_CYCLES = 324 -SQC_PERF_SEL_DCACHE_REQ = 325 -SQC_PERF_SEL_DCACHE_HITS = 326 -SQC_PERF_SEL_DCACHE_MISSES = 327 -SQC_PERF_SEL_DCACHE_MISSES_DUPLICATE = 328 -SQC_PERF_SEL_DCACHE_INVAL_INST = 329 -SQC_PERF_SEL_DCACHE_INVAL_ASYNC = 330 -SQC_PERF_SEL_DCACHE_HIT_LRU_READ = 331 -SQC_PERF_SEL_DCACHE_INPUT_STALL_ARB_NO_GRANT = 332 -SQC_PERF_SEL_DCACHE_INPUT_STALL_BANK_READYB = 333 -SQC_PERF_SEL_DCACHE_CACHE_STALLED = 334 -SQC_PERF_SEL_DCACHE_CACHE_STALL_INFLIGHT_MAX = 335 -SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT = 336 -SQC_PERF_SEL_DCACHE_STALL_OUTXBAR_ARB_NO_GRANT = 337 -SQC_PERF_SEL_DCACHE_REQ_READ_1 = 338 -SQC_PERF_SEL_DCACHE_REQ_READ_2 = 339 -SQC_PERF_SEL_DCACHE_REQ_READ_4 = 340 -SQC_PERF_SEL_DCACHE_REQ_READ_8 = 341 -SQC_PERF_SEL_DCACHE_REQ_READ_16 = 342 -SQC_PERF_SEL_DCACHE_REQ_ATC_PROBE = 343 -SQC_PERF_SEL_SQ_DCACHE_REQS = 344 -SQC_PERF_SEL_DCACHE_FLAT_REQ = 345 -SQC_PERF_SEL_TD_VGPR_BUSY = 346 -SQC_PERF_SEL_LDS_VGPR_BUSY = 347 -SQC_PERF_SEL_LDS_TD_VGPR_CONF_STALL = 348 -SQC_PERF_SEL_ICACHE_GCR = 349 -SQC_PERF_SEL_ICACHE_GCR_HITS = 350 -SQC_PERF_SEL_DCACHE_GCR = 351 -SQC_PERF_SEL_DCACHE_GCR_HITS = 352 -SQC_PERF_SEL_ICACHE_GCR_INVALIDATE = 353 -SQC_PERF_SEL_DCACHE_GCR_INVALIDATE = 354 -SQC_PERF_SEL_DCACHE_SPI_RETURN_STALL = 355 -SQC_PERF_SEL_ICACHE_PREFETCH_REQ_CACHELINES = 356 -SQC_PERF_SEL_DCACHE_PREFETCH_REQ_CACHELINES = 357 -SQC_PERF_SEL_ICACHE_PREFETCH_MISSES = 358 -SQC_PERF_SEL_DCACHE_PREFETCH_MISSES = 359 -SQC_PERF_SEL_LDS_BANKCONF_LOAD_CNT = 360 -SQC_PERF_SEL_LDS_BANKCONF_STORE_CNT = 361 -SQC_PERF_SEL_LDS_BANKCONF_ATOMIC_CNT = 362 -SQC_PERF_SEL_LDS_ACTIVE_LOAD_CNT = 363 -SQC_PERF_SEL_LDS_ACTIVE_STORE_CNT = 364 -SQC_PERF_SEL_LDS_ACTIVE_ATOMIC_CNT = 365 -SQC_PERF_SEL_LDS_STORE_DWORDS = 366 -SQC_PERF_SEL_LDS_LOAD_DWORDS = 367 -SQC_PERF_SEL_LDS_ATOMIC_DWORDS = 368 -SQC_PERF_SEL_LDS_LDS_EXECUTION_STALL = 369 -SQC_PERF_SEL_DUMMY_LAST = 370 -SP_PERF_SEL_DST_BUF_ALLOC_STALL = 448 -SP_PERF_SEL_DST_BUF_WB_CONF_W_TD_LDS = 449 -SP_PERF_SEL_DST_BUF_WB_CONF_W_SPI = 450 -SP_PERF_SEL_DST_BUF_EVEN_DIRTY = 451 -SP_PERF_SEL_DST_BUF_ODD_DIRTY = 452 -SP_PERF_SEL_SRC_CACHE_HIT_B0 = 453 -SP_PERF_SEL_SRC_CACHE_HIT_B1 = 454 -SP_PERF_SEL_SRC_CACHE_HIT_B2 = 455 -SP_PERF_SEL_SRC_CACHE_HIT_B3 = 456 -SP_PERF_SEL_SRC_CACHE_PROBE_B0 = 457 -SP_PERF_SEL_SRC_CACHE_PROBE_B1 = 458 -SP_PERF_SEL_SRC_CACHE_PROBE_B2 = 459 -SP_PERF_SEL_SRC_CACHE_PROBE_B3 = 460 -SP_PERF_SEL_SRC_CACHE_VGPR_RD_B0 = 461 -SP_PERF_SEL_SRC_CACHE_VGPR_RD_B1 = 462 -SP_PERF_SEL_SRC_CACHE_VGPR_RD_B2 = 463 -SP_PERF_SEL_SRC_CACHE_VGPR_RD_B3 = 464 -SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B0 = 465 -SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B1 = 466 -SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B2 = 467 -SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B3 = 468 -SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B0 = 469 -SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B1 = 470 -SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B2 = 471 -SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B3 = 472 -SP_PERF_SEL_VALU_PENDING_QUEUE_STALL = 473 -SP_PERF_SEL_VALU_OPERAND = 474 -SP_PERF_SEL_VALU_VGPR_OPERAND = 475 -SP_PERF_SEL_VALU_OPERAND_FROM_DST_BUF = 476 -SP_PERF_SEL_VALU_EXEC_MASK_CHANGE = 477 -SP_PERF_SEL_VALU_COEXEC_WITH_TRANS = 478 -SP_PERF_SEL_VALU_SGPR_FWD_BUF_FULL = 479 -SP_PERF_SEL_VALU_STALL = 480 -SP_PERF_SEL_VALU_STALL_VGPR_NOT_READY = 481 -SP_PERF_SEL_VALU_STALL_SGPR_NOT_READY = 482 -SP_PERF_SEL_VALU_STALL_VDST_FWD = 483 -SP_PERF_SEL_VALU_STALL_SDST_FWD = 484 -SP_PERF_SEL_VALU_STALL_DST_STALL = 485 -SP_PERF_SEL_VALU_FAST_OP_STALL_VGPR_NOT_READY = 486 -SP_PERF_SEL_VGPR_VMEM_RD = 487 -SP_PERF_SEL_VGPR_EXP_RD = 488 -SP_PERF_SEL_VGPR_SPI_WR = 489 -SP_PERF_SEL_VGPR_TDLDS_DATA_WR = 490 -SP_PERF_SEL_VGPR_WR = 491 -SP_PERF_SEL_VGPR_RD = 492 -SP_PERF_SEL_VGPR_WR_KILL = 493 -SP_PERF_SEL_VALU_VGPR_RD_CONFLICT_EXP = 494 -SP_PERF_SEL_VALU_VGPR_RD_CONFLICT_LDS = 495 -SP_PERF_SEL_VALU_VGPR_RD_CONFLICT_TEX = 496 -SP_PERF_SEL_DUMMY_LAST = 497 -SQ_PERF_SEL_NONE2 = 511 -SQ_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_ROUND_MODE' -SQ_ROUND_MODE__enumvalues = { - 0: 'SQ_ROUND_NEAREST_EVEN', - 1: 'SQ_ROUND_PLUS_INFINITY', - 2: 'SQ_ROUND_MINUS_INFINITY', - 3: 'SQ_ROUND_TO_ZERO', -} -SQ_ROUND_NEAREST_EVEN = 0 -SQ_ROUND_PLUS_INFINITY = 1 -SQ_ROUND_MINUS_INFINITY = 2 -SQ_ROUND_TO_ZERO = 3 -SQ_ROUND_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_RSRC_BUF_TYPE' -SQ_RSRC_BUF_TYPE__enumvalues = { - 0: 'SQ_RSRC_BUF', - 1: 'SQ_RSRC_BUF_RSVD_1', - 2: 'SQ_RSRC_BUF_RSVD_2', - 3: 'SQ_RSRC_BUF_RSVD_3', -} -SQ_RSRC_BUF = 0 -SQ_RSRC_BUF_RSVD_1 = 1 -SQ_RSRC_BUF_RSVD_2 = 2 -SQ_RSRC_BUF_RSVD_3 = 3 -SQ_RSRC_BUF_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_RSRC_FLAT_TYPE' -SQ_RSRC_FLAT_TYPE__enumvalues = { - 0: 'SQ_RSRC_FLAT_RSVD_0', - 1: 'SQ_RSRC_FLAT', - 2: 'SQ_RSRC_FLAT_RSVD_2', - 3: 'SQ_RSRC_FLAT_RSVD_3', -} -SQ_RSRC_FLAT_RSVD_0 = 0 -SQ_RSRC_FLAT = 1 -SQ_RSRC_FLAT_RSVD_2 = 2 -SQ_RSRC_FLAT_RSVD_3 = 3 -SQ_RSRC_FLAT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_RSRC_IMG_TYPE' -SQ_RSRC_IMG_TYPE__enumvalues = { - 0: 'SQ_RSRC_IMG_RSVD_0', - 1: 'SQ_RSRC_IMG_RSVD_1', - 2: 'SQ_RSRC_IMG_RSVD_2', - 3: 'SQ_RSRC_IMG_RSVD_3', - 4: 'SQ_RSRC_IMG_RSVD_4', - 5: 'SQ_RSRC_IMG_RSVD_5', - 6: 'SQ_RSRC_IMG_RSVD_6', - 7: 'SQ_RSRC_IMG_RSVD_7', - 8: 'SQ_RSRC_IMG_1D', - 9: 'SQ_RSRC_IMG_2D', - 10: 'SQ_RSRC_IMG_3D', - 11: 'SQ_RSRC_IMG_CUBE', - 12: 'SQ_RSRC_IMG_1D_ARRAY', - 13: 'SQ_RSRC_IMG_2D_ARRAY', - 14: 'SQ_RSRC_IMG_2D_MSAA', - 15: 'SQ_RSRC_IMG_2D_MSAA_ARRAY', -} -SQ_RSRC_IMG_RSVD_0 = 0 -SQ_RSRC_IMG_RSVD_1 = 1 -SQ_RSRC_IMG_RSVD_2 = 2 -SQ_RSRC_IMG_RSVD_3 = 3 -SQ_RSRC_IMG_RSVD_4 = 4 -SQ_RSRC_IMG_RSVD_5 = 5 -SQ_RSRC_IMG_RSVD_6 = 6 -SQ_RSRC_IMG_RSVD_7 = 7 -SQ_RSRC_IMG_1D = 8 -SQ_RSRC_IMG_2D = 9 -SQ_RSRC_IMG_3D = 10 -SQ_RSRC_IMG_CUBE = 11 -SQ_RSRC_IMG_1D_ARRAY = 12 -SQ_RSRC_IMG_2D_ARRAY = 13 -SQ_RSRC_IMG_2D_MSAA = 14 -SQ_RSRC_IMG_2D_MSAA_ARRAY = 15 -SQ_RSRC_IMG_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_SEL_XYZW01' -SQ_SEL_XYZW01__enumvalues = { - 0: 'SQ_SEL_0', - 1: 'SQ_SEL_1', - 2: 'SQ_SEL_N_BC_1', - 3: 'SQ_SEL_RESERVED_1', - 4: 'SQ_SEL_X', - 5: 'SQ_SEL_Y', - 6: 'SQ_SEL_Z', - 7: 'SQ_SEL_W', -} -SQ_SEL_0 = 0 -SQ_SEL_1 = 1 -SQ_SEL_N_BC_1 = 2 -SQ_SEL_RESERVED_1 = 3 -SQ_SEL_X = 4 -SQ_SEL_Y = 5 -SQ_SEL_Z = 6 -SQ_SEL_W = 7 -SQ_SEL_XYZW01 = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_ANISO_RATIO' -SQ_TEX_ANISO_RATIO__enumvalues = { - 0: 'SQ_TEX_ANISO_RATIO_1', - 1: 'SQ_TEX_ANISO_RATIO_2', - 2: 'SQ_TEX_ANISO_RATIO_4', - 3: 'SQ_TEX_ANISO_RATIO_8', - 4: 'SQ_TEX_ANISO_RATIO_16', -} -SQ_TEX_ANISO_RATIO_1 = 0 -SQ_TEX_ANISO_RATIO_2 = 1 -SQ_TEX_ANISO_RATIO_4 = 2 -SQ_TEX_ANISO_RATIO_8 = 3 -SQ_TEX_ANISO_RATIO_16 = 4 -SQ_TEX_ANISO_RATIO = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_BORDER_COLOR' -SQ_TEX_BORDER_COLOR__enumvalues = { - 0: 'SQ_TEX_BORDER_COLOR_TRANS_BLACK', - 1: 'SQ_TEX_BORDER_COLOR_OPAQUE_BLACK', - 2: 'SQ_TEX_BORDER_COLOR_OPAQUE_WHITE', - 3: 'SQ_TEX_BORDER_COLOR_REGISTER', -} -SQ_TEX_BORDER_COLOR_TRANS_BLACK = 0 -SQ_TEX_BORDER_COLOR_OPAQUE_BLACK = 1 -SQ_TEX_BORDER_COLOR_OPAQUE_WHITE = 2 -SQ_TEX_BORDER_COLOR_REGISTER = 3 -SQ_TEX_BORDER_COLOR = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_CLAMP' -SQ_TEX_CLAMP__enumvalues = { - 0: 'SQ_TEX_WRAP', - 1: 'SQ_TEX_MIRROR', - 2: 'SQ_TEX_CLAMP_LAST_TEXEL', - 3: 'SQ_TEX_MIRROR_ONCE_LAST_TEXEL', - 4: 'SQ_TEX_CLAMP_HALF_BORDER', - 5: 'SQ_TEX_MIRROR_ONCE_HALF_BORDER', - 6: 'SQ_TEX_CLAMP_BORDER', - 7: 'SQ_TEX_MIRROR_ONCE_BORDER', -} -SQ_TEX_WRAP = 0 -SQ_TEX_MIRROR = 1 -SQ_TEX_CLAMP_LAST_TEXEL = 2 -SQ_TEX_MIRROR_ONCE_LAST_TEXEL = 3 -SQ_TEX_CLAMP_HALF_BORDER = 4 -SQ_TEX_MIRROR_ONCE_HALF_BORDER = 5 -SQ_TEX_CLAMP_BORDER = 6 -SQ_TEX_MIRROR_ONCE_BORDER = 7 -SQ_TEX_CLAMP = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_DEPTH_COMPARE' -SQ_TEX_DEPTH_COMPARE__enumvalues = { - 0: 'SQ_TEX_DEPTH_COMPARE_NEVER', - 1: 'SQ_TEX_DEPTH_COMPARE_LESS', - 2: 'SQ_TEX_DEPTH_COMPARE_EQUAL', - 3: 'SQ_TEX_DEPTH_COMPARE_LESSEQUAL', - 4: 'SQ_TEX_DEPTH_COMPARE_GREATER', - 5: 'SQ_TEX_DEPTH_COMPARE_NOTEQUAL', - 6: 'SQ_TEX_DEPTH_COMPARE_GREATEREQUAL', - 7: 'SQ_TEX_DEPTH_COMPARE_ALWAYS', -} -SQ_TEX_DEPTH_COMPARE_NEVER = 0 -SQ_TEX_DEPTH_COMPARE_LESS = 1 -SQ_TEX_DEPTH_COMPARE_EQUAL = 2 -SQ_TEX_DEPTH_COMPARE_LESSEQUAL = 3 -SQ_TEX_DEPTH_COMPARE_GREATER = 4 -SQ_TEX_DEPTH_COMPARE_NOTEQUAL = 5 -SQ_TEX_DEPTH_COMPARE_GREATEREQUAL = 6 -SQ_TEX_DEPTH_COMPARE_ALWAYS = 7 -SQ_TEX_DEPTH_COMPARE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_MIP_FILTER' -SQ_TEX_MIP_FILTER__enumvalues = { - 0: 'SQ_TEX_MIP_FILTER_NONE', - 1: 'SQ_TEX_MIP_FILTER_POINT', - 2: 'SQ_TEX_MIP_FILTER_LINEAR', - 3: 'SQ_TEX_MIP_FILTER_POINT_ANISO_ADJ', -} -SQ_TEX_MIP_FILTER_NONE = 0 -SQ_TEX_MIP_FILTER_POINT = 1 -SQ_TEX_MIP_FILTER_LINEAR = 2 -SQ_TEX_MIP_FILTER_POINT_ANISO_ADJ = 3 -SQ_TEX_MIP_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_XY_FILTER' -SQ_TEX_XY_FILTER__enumvalues = { - 0: 'SQ_TEX_XY_FILTER_POINT', - 1: 'SQ_TEX_XY_FILTER_BILINEAR', - 2: 'SQ_TEX_XY_FILTER_ANISO_POINT', - 3: 'SQ_TEX_XY_FILTER_ANISO_BILINEAR', -} -SQ_TEX_XY_FILTER_POINT = 0 -SQ_TEX_XY_FILTER_BILINEAR = 1 -SQ_TEX_XY_FILTER_ANISO_POINT = 2 -SQ_TEX_XY_FILTER_ANISO_BILINEAR = 3 -SQ_TEX_XY_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_Z_FILTER' -SQ_TEX_Z_FILTER__enumvalues = { - 0: 'SQ_TEX_Z_FILTER_NONE', - 1: 'SQ_TEX_Z_FILTER_POINT', - 2: 'SQ_TEX_Z_FILTER_LINEAR', -} -SQ_TEX_Z_FILTER_NONE = 0 -SQ_TEX_Z_FILTER_POINT = 1 -SQ_TEX_Z_FILTER_LINEAR = 2 -SQ_TEX_Z_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WATCH_MODES' -SQ_WATCH_MODES__enumvalues = { - 0: 'SQ_WATCH_MODE_READ', - 1: 'SQ_WATCH_MODE_NONREAD', - 2: 'SQ_WATCH_MODE_ATOMIC', - 3: 'SQ_WATCH_MODE_ALL', -} -SQ_WATCH_MODE_READ = 0 -SQ_WATCH_MODE_NONREAD = 1 -SQ_WATCH_MODE_ATOMIC = 2 -SQ_WATCH_MODE_ALL = 3 -SQ_WATCH_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WAVE_FWD_PROG_INTERVAL' -SQ_WAVE_FWD_PROG_INTERVAL__enumvalues = { - 0: 'SQ_WAVE_FWD_PROG_INTERVAL_NEVER', - 1: 'SQ_WAVE_FWD_PROG_INTERVAL_256', - 2: 'SQ_WAVE_FWD_PROG_INTERVAL_1024', - 3: 'SQ_WAVE_FWD_PROG_INTERVAL_4096', -} -SQ_WAVE_FWD_PROG_INTERVAL_NEVER = 0 -SQ_WAVE_FWD_PROG_INTERVAL_256 = 1 -SQ_WAVE_FWD_PROG_INTERVAL_1024 = 2 -SQ_WAVE_FWD_PROG_INTERVAL_4096 = 3 -SQ_WAVE_FWD_PROG_INTERVAL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WAVE_SCHED_MODES' -SQ_WAVE_SCHED_MODES__enumvalues = { - 0: 'SQ_WAVE_SCHED_MODE_NORMAL', - 1: 'SQ_WAVE_SCHED_MODE_EXPERT', - 2: 'SQ_WAVE_SCHED_MODE_DISABLE_VA_VDST_VM_VSRC', -} -SQ_WAVE_SCHED_MODE_NORMAL = 0 -SQ_WAVE_SCHED_MODE_EXPERT = 1 -SQ_WAVE_SCHED_MODE_DISABLE_VA_VDST_VM_VSRC = 2 -SQ_WAVE_SCHED_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WAVE_TYPE' -SQ_WAVE_TYPE__enumvalues = { - 0: 'SQ_WAVE_TYPE_PS', - 1: 'SQ_WAVE_TYPE_RSVD0', - 2: 'SQ_WAVE_TYPE_GS', - 3: 'SQ_WAVE_TYPE_RSVD1', - 4: 'SQ_WAVE_TYPE_HS', - 5: 'SQ_WAVE_TYPE_RSVD2', - 6: 'SQ_WAVE_TYPE_CS', - 7: 'SQ_WAVE_TYPE_PS1', - 8: 'SQ_WAVE_TYPE_PS2', - 9: 'SQ_WAVE_TYPE_PS3', -} -SQ_WAVE_TYPE_PS = 0 -SQ_WAVE_TYPE_RSVD0 = 1 -SQ_WAVE_TYPE_GS = 2 -SQ_WAVE_TYPE_RSVD1 = 3 -SQ_WAVE_TYPE_HS = 4 -SQ_WAVE_TYPE_RSVD2 = 5 -SQ_WAVE_TYPE_CS = 6 -SQ_WAVE_TYPE_PS1 = 7 -SQ_WAVE_TYPE_PS2 = 8 -SQ_WAVE_TYPE_PS3 = 9 -SQ_WAVE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'GL1A_PERF_SEL' -GL1A_PERF_SEL__enumvalues = { - 0: 'GL1A_PERF_SEL_BUSY', - 1: 'GL1A_PERF_SEL_STALL_GL1C0', - 2: 'GL1A_PERF_SEL_STALL_GL1C1', - 3: 'GL1A_PERF_SEL_STALL_GL1C2', - 4: 'GL1A_PERF_SEL_STALL_GL1C3', - 5: 'GL1A_PERF_SEL_REQUEST_GL1C0', - 6: 'GL1A_PERF_SEL_REQUEST_GL1C1', - 7: 'GL1A_PERF_SEL_REQUEST_GL1C2', - 8: 'GL1A_PERF_SEL_REQUEST_GL1C3', - 9: 'GL1A_PERF_SEL_WDS_32B_GL1C0', - 10: 'GL1A_PERF_SEL_WDS_32B_GL1C1', - 11: 'GL1A_PERF_SEL_WDS_32B_GL1C2', - 12: 'GL1A_PERF_SEL_WDS_32B_GL1C3', - 13: 'GL1A_PERF_SEL_BURST_COUNT_GL1C0', - 14: 'GL1A_PERF_SEL_BURST_COUNT_GL1C1', - 15: 'GL1A_PERF_SEL_BURST_COUNT_GL1C2', - 16: 'GL1A_PERF_SEL_BURST_COUNT_GL1C3', - 17: 'GL1A_PERF_SEL_ARB_REQUESTS', - 18: 'GL1A_PERF_SEL_REQ_INFLIGHT_LEVEL', - 19: 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C0', - 20: 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C1', - 21: 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C2', - 22: 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C3', - 23: 'GL1A_PERF_SEL_CYCLE', -} -GL1A_PERF_SEL_BUSY = 0 -GL1A_PERF_SEL_STALL_GL1C0 = 1 -GL1A_PERF_SEL_STALL_GL1C1 = 2 -GL1A_PERF_SEL_STALL_GL1C2 = 3 -GL1A_PERF_SEL_STALL_GL1C3 = 4 -GL1A_PERF_SEL_REQUEST_GL1C0 = 5 -GL1A_PERF_SEL_REQUEST_GL1C1 = 6 -GL1A_PERF_SEL_REQUEST_GL1C2 = 7 -GL1A_PERF_SEL_REQUEST_GL1C3 = 8 -GL1A_PERF_SEL_WDS_32B_GL1C0 = 9 -GL1A_PERF_SEL_WDS_32B_GL1C1 = 10 -GL1A_PERF_SEL_WDS_32B_GL1C2 = 11 -GL1A_PERF_SEL_WDS_32B_GL1C3 = 12 -GL1A_PERF_SEL_BURST_COUNT_GL1C0 = 13 -GL1A_PERF_SEL_BURST_COUNT_GL1C1 = 14 -GL1A_PERF_SEL_BURST_COUNT_GL1C2 = 15 -GL1A_PERF_SEL_BURST_COUNT_GL1C3 = 16 -GL1A_PERF_SEL_ARB_REQUESTS = 17 -GL1A_PERF_SEL_REQ_INFLIGHT_LEVEL = 18 -GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C0 = 19 -GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C1 = 20 -GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C2 = 21 -GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C3 = 22 -GL1A_PERF_SEL_CYCLE = 23 -GL1A_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GL1C_PERF_SEL' -GL1C_PERF_SEL__enumvalues = { - 0: 'GL1C_PERF_SEL_CYCLE', - 1: 'GL1C_PERF_SEL_BUSY', - 2: 'GL1C_PERF_SEL_STARVE', - 3: 'GL1C_PERF_SEL_ARB_RET_LEVEL', - 4: 'GL1C_PERF_SEL_GL2_REQ_READ_LATENCY', - 5: 'GL1C_PERF_SEL_GL2_REQ_WRITE_LATENCY', - 6: 'GL1C_PERF_SEL_REQ', - 7: 'GL1C_PERF_SEL_REQ_ATOMIC_WITH_RET', - 8: 'GL1C_PERF_SEL_REQ_ATOMIC_WITHOUT_RET', - 9: 'GL1C_PERF_SEL_REQ_NOP_ACK', - 10: 'GL1C_PERF_SEL_REQ_NOP_RTN0', - 11: 'GL1C_PERF_SEL_REQ_READ', - 12: 'GL1C_PERF_SEL_REQ_READ_128B', - 13: 'GL1C_PERF_SEL_REQ_READ_32B', - 14: 'GL1C_PERF_SEL_REQ_READ_64B', - 15: 'GL1C_PERF_SEL_REQ_WRITE', - 16: 'GL1C_PERF_SEL_REQ_WRITE_32B', - 17: 'GL1C_PERF_SEL_REQ_WRITE_64B', - 18: 'GL1C_PERF_SEL_STALL_GL2_GL1', - 19: 'GL1C_PERF_SEL_STALL_BUFFER_FULL', - 20: 'GL1C_PERF_SEL_STALL_VM', - 21: 'GL1C_PERF_SEL_REQ_CLIENT0', - 22: 'GL1C_PERF_SEL_REQ_CLIENT1', - 23: 'GL1C_PERF_SEL_REQ_CLIENT2', - 24: 'GL1C_PERF_SEL_REQ_CLIENT3', - 25: 'GL1C_PERF_SEL_REQ_CLIENT4', - 26: 'GL1C_PERF_SEL_REQ_CLIENT5', - 27: 'GL1C_PERF_SEL_REQ_CLIENT6', - 28: 'GL1C_PERF_SEL_REQ_CLIENT7', - 29: 'GL1C_PERF_SEL_REQ_CLIENT8', - 30: 'GL1C_PERF_SEL_REQ_CLIENT9', - 31: 'GL1C_PERF_SEL_REQ_CLIENT10', - 32: 'GL1C_PERF_SEL_REQ_CLIENT11', - 33: 'GL1C_PERF_SEL_REQ_CLIENT12', - 34: 'GL1C_PERF_SEL_REQ_CLIENT13', - 35: 'GL1C_PERF_SEL_REQ_CLIENT14', - 36: 'GL1C_PERF_SEL_REQ_CLIENT15', - 37: 'GL1C_PERF_SEL_REQ_CLIENT16', - 38: 'GL1C_PERF_SEL_REQ_CLIENT17', - 39: 'GL1C_PERF_SEL_REQ_CLIENT18', - 40: 'GL1C_PERF_SEL_REQ_CLIENT19', - 41: 'GL1C_PERF_SEL_REQ_CLIENT20', - 42: 'GL1C_PERF_SEL_REQ_CLIENT21', - 43: 'GL1C_PERF_SEL_REQ_CLIENT22', - 44: 'GL1C_PERF_SEL_REQ_CLIENT23', - 45: 'GL1C_PERF_SEL_REQ_CLIENT24', - 46: 'GL1C_PERF_SEL_REQ_CLIENT25', - 47: 'GL1C_PERF_SEL_REQ_CLIENT26', - 48: 'GL1C_PERF_SEL_REQ_CLIENT27', - 49: 'GL1C_PERF_SEL_UTCL0_REQUEST', - 50: 'GL1C_PERF_SEL_UTCL0_TRANSLATION_HIT', - 51: 'GL1C_PERF_SEL_UTCL0_TRANSLATION_MISS', - 52: 'GL1C_PERF_SEL_UTCL0_PERMISSION_MISS', - 53: 'GL1C_PERF_SEL_UTCL0_MISS_UNDER_MISS', - 54: 'GL1C_PERF_SEL_UTCL0_LFIFO_FULL', - 55: 'GL1C_PERF_SEL_UTCL0_STALL_INFLIGHT_MAX', - 56: 'GL1C_PERF_SEL_UTCL0_STALL_LFIFO_NOT_RES', - 57: 'GL1C_PERF_SEL_UTCL0_STALL_LRU_INFLIGHT', - 58: 'GL1C_PERF_SEL_UTCL0_STALL_MISSFIFO_FULL', - 59: 'GL1C_PERF_SEL_UTCL0_STALL_MULTI_MISS', - 60: 'GL1C_PERF_SEL_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS', - 61: 'GL1C_PERF_SEL_UTCL0_UTCL1_PERM_FAULT', - 62: 'GL1C_PERF_SEL_CLIENT_UTCL0_INFLIGHT', - 63: 'GL1C_PERF_SEL_UTCL0_UTCL1_INFLIGHT', - 64: 'GL1C_PERF_SEL_UTCL0_INTERNAL_RETRY_REQ', - 65: 'GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_RETRY_FAULT', - 66: 'GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_PRT_FAULT', - 67: 'GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_NO_RETRY_FAULT', - 68: 'GL1C_PERF_SEL_UTCL0_GPA3_REQUEST', -} -GL1C_PERF_SEL_CYCLE = 0 -GL1C_PERF_SEL_BUSY = 1 -GL1C_PERF_SEL_STARVE = 2 -GL1C_PERF_SEL_ARB_RET_LEVEL = 3 -GL1C_PERF_SEL_GL2_REQ_READ_LATENCY = 4 -GL1C_PERF_SEL_GL2_REQ_WRITE_LATENCY = 5 -GL1C_PERF_SEL_REQ = 6 -GL1C_PERF_SEL_REQ_ATOMIC_WITH_RET = 7 -GL1C_PERF_SEL_REQ_ATOMIC_WITHOUT_RET = 8 -GL1C_PERF_SEL_REQ_NOP_ACK = 9 -GL1C_PERF_SEL_REQ_NOP_RTN0 = 10 -GL1C_PERF_SEL_REQ_READ = 11 -GL1C_PERF_SEL_REQ_READ_128B = 12 -GL1C_PERF_SEL_REQ_READ_32B = 13 -GL1C_PERF_SEL_REQ_READ_64B = 14 -GL1C_PERF_SEL_REQ_WRITE = 15 -GL1C_PERF_SEL_REQ_WRITE_32B = 16 -GL1C_PERF_SEL_REQ_WRITE_64B = 17 -GL1C_PERF_SEL_STALL_GL2_GL1 = 18 -GL1C_PERF_SEL_STALL_BUFFER_FULL = 19 -GL1C_PERF_SEL_STALL_VM = 20 -GL1C_PERF_SEL_REQ_CLIENT0 = 21 -GL1C_PERF_SEL_REQ_CLIENT1 = 22 -GL1C_PERF_SEL_REQ_CLIENT2 = 23 -GL1C_PERF_SEL_REQ_CLIENT3 = 24 -GL1C_PERF_SEL_REQ_CLIENT4 = 25 -GL1C_PERF_SEL_REQ_CLIENT5 = 26 -GL1C_PERF_SEL_REQ_CLIENT6 = 27 -GL1C_PERF_SEL_REQ_CLIENT7 = 28 -GL1C_PERF_SEL_REQ_CLIENT8 = 29 -GL1C_PERF_SEL_REQ_CLIENT9 = 30 -GL1C_PERF_SEL_REQ_CLIENT10 = 31 -GL1C_PERF_SEL_REQ_CLIENT11 = 32 -GL1C_PERF_SEL_REQ_CLIENT12 = 33 -GL1C_PERF_SEL_REQ_CLIENT13 = 34 -GL1C_PERF_SEL_REQ_CLIENT14 = 35 -GL1C_PERF_SEL_REQ_CLIENT15 = 36 -GL1C_PERF_SEL_REQ_CLIENT16 = 37 -GL1C_PERF_SEL_REQ_CLIENT17 = 38 -GL1C_PERF_SEL_REQ_CLIENT18 = 39 -GL1C_PERF_SEL_REQ_CLIENT19 = 40 -GL1C_PERF_SEL_REQ_CLIENT20 = 41 -GL1C_PERF_SEL_REQ_CLIENT21 = 42 -GL1C_PERF_SEL_REQ_CLIENT22 = 43 -GL1C_PERF_SEL_REQ_CLIENT23 = 44 -GL1C_PERF_SEL_REQ_CLIENT24 = 45 -GL1C_PERF_SEL_REQ_CLIENT25 = 46 -GL1C_PERF_SEL_REQ_CLIENT26 = 47 -GL1C_PERF_SEL_REQ_CLIENT27 = 48 -GL1C_PERF_SEL_UTCL0_REQUEST = 49 -GL1C_PERF_SEL_UTCL0_TRANSLATION_HIT = 50 -GL1C_PERF_SEL_UTCL0_TRANSLATION_MISS = 51 -GL1C_PERF_SEL_UTCL0_PERMISSION_MISS = 52 -GL1C_PERF_SEL_UTCL0_MISS_UNDER_MISS = 53 -GL1C_PERF_SEL_UTCL0_LFIFO_FULL = 54 -GL1C_PERF_SEL_UTCL0_STALL_INFLIGHT_MAX = 55 -GL1C_PERF_SEL_UTCL0_STALL_LFIFO_NOT_RES = 56 -GL1C_PERF_SEL_UTCL0_STALL_LRU_INFLIGHT = 57 -GL1C_PERF_SEL_UTCL0_STALL_MISSFIFO_FULL = 58 -GL1C_PERF_SEL_UTCL0_STALL_MULTI_MISS = 59 -GL1C_PERF_SEL_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS = 60 -GL1C_PERF_SEL_UTCL0_UTCL1_PERM_FAULT = 61 -GL1C_PERF_SEL_CLIENT_UTCL0_INFLIGHT = 62 -GL1C_PERF_SEL_UTCL0_UTCL1_INFLIGHT = 63 -GL1C_PERF_SEL_UTCL0_INTERNAL_RETRY_REQ = 64 -GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_RETRY_FAULT = 65 -GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_PRT_FAULT = 66 -GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_NO_RETRY_FAULT = 67 -GL1C_PERF_SEL_UTCL0_GPA3_REQUEST = 68 -GL1C_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GL1XA_PERF_SEL' -GL1XA_PERF_SEL__enumvalues = { - 0: 'GL1XA_PERF_SEL_BUSY', - 1: 'GL1XA_PERF_SEL_STALL_GL1XC0', - 2: 'GL1XA_PERF_SEL_STALL_GL1XC1', - 3: 'GL1XA_PERF_SEL_STALL_GL1XC2', - 4: 'GL1XA_PERF_SEL_STALL_GL1XC3', - 5: 'GL1XA_PERF_SEL_REQUEST_GL1XC0', - 6: 'GL1XA_PERF_SEL_REQUEST_GL1XC1', - 7: 'GL1XA_PERF_SEL_REQUEST_GL1XC2', - 8: 'GL1XA_PERF_SEL_REQUEST_GL1XC3', - 9: 'GL1XA_PERF_SEL_WDS_32B_GL1XC0', - 10: 'GL1XA_PERF_SEL_WDS_32B_GL1XC1', - 11: 'GL1XA_PERF_SEL_WDS_32B_GL1XC2', - 12: 'GL1XA_PERF_SEL_WDS_32B_GL1XC3', - 13: 'GL1XA_PERF_SEL_BURST_COUNT_GL1XC0', - 14: 'GL1XA_PERF_SEL_BURST_COUNT_GL1XC1', - 15: 'GL1XA_PERF_SEL_BURST_COUNT_GL1XC2', - 16: 'GL1XA_PERF_SEL_BURST_COUNT_GL1XC3', - 17: 'GL1XA_PERF_SEL_ARB_REQUESTS', - 18: 'GL1XA_PERF_SEL_REQ_INFLIGHT_LEVEL', - 19: 'GL1XA_PERF_SEL_STALL_RET_CONFLICT_GL1XC0', - 20: 'GL1XA_PERF_SEL_STALL_RET_CONFLICT_GL1XC1', - 21: 'GL1XA_PERF_SEL_STALL_RET_CONFLICT_GL1XC2', - 22: 'GL1XA_PERF_SEL_STALL_RET_CONFLICT_GL1XC3', - 23: 'GL1XA_PERF_SEL_CYCLE', -} -GL1XA_PERF_SEL_BUSY = 0 -GL1XA_PERF_SEL_STALL_GL1XC0 = 1 -GL1XA_PERF_SEL_STALL_GL1XC1 = 2 -GL1XA_PERF_SEL_STALL_GL1XC2 = 3 -GL1XA_PERF_SEL_STALL_GL1XC3 = 4 -GL1XA_PERF_SEL_REQUEST_GL1XC0 = 5 -GL1XA_PERF_SEL_REQUEST_GL1XC1 = 6 -GL1XA_PERF_SEL_REQUEST_GL1XC2 = 7 -GL1XA_PERF_SEL_REQUEST_GL1XC3 = 8 -GL1XA_PERF_SEL_WDS_32B_GL1XC0 = 9 -GL1XA_PERF_SEL_WDS_32B_GL1XC1 = 10 -GL1XA_PERF_SEL_WDS_32B_GL1XC2 = 11 -GL1XA_PERF_SEL_WDS_32B_GL1XC3 = 12 -GL1XA_PERF_SEL_BURST_COUNT_GL1XC0 = 13 -GL1XA_PERF_SEL_BURST_COUNT_GL1XC1 = 14 -GL1XA_PERF_SEL_BURST_COUNT_GL1XC2 = 15 -GL1XA_PERF_SEL_BURST_COUNT_GL1XC3 = 16 -GL1XA_PERF_SEL_ARB_REQUESTS = 17 -GL1XA_PERF_SEL_REQ_INFLIGHT_LEVEL = 18 -GL1XA_PERF_SEL_STALL_RET_CONFLICT_GL1XC0 = 19 -GL1XA_PERF_SEL_STALL_RET_CONFLICT_GL1XC1 = 20 -GL1XA_PERF_SEL_STALL_RET_CONFLICT_GL1XC2 = 21 -GL1XA_PERF_SEL_STALL_RET_CONFLICT_GL1XC3 = 22 -GL1XA_PERF_SEL_CYCLE = 23 -GL1XA_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GL1XC_PERF_SEL' -GL1XC_PERF_SEL__enumvalues = { - 0: 'GL1XC_PERF_SEL_CYCLE', - 1: 'GL1XC_PERF_SEL_BUSY', - 2: 'GL1XC_PERF_SEL_STARVE', - 3: 'GL1XC_PERF_SEL_ARB_RET_LEVEL', - 4: 'GL1XC_PERF_SEL_GL2_REQ_READ_LATENCY', - 5: 'GL1XC_PERF_SEL_GL2_REQ_WRITE_LATENCY', - 6: 'GL1XC_PERF_SEL_REQ', - 7: 'GL1XC_PERF_SEL_REQ_ATOMIC_WITH_RET', - 8: 'GL1XC_PERF_SEL_REQ_ATOMIC_WITHOUT_RET', - 9: 'GL1XC_PERF_SEL_REQ_NOP_ACK', - 10: 'GL1XC_PERF_SEL_REQ_NOP_RTN0', - 11: 'GL1XC_PERF_SEL_REQ_READ', - 12: 'GL1XC_PERF_SEL_REQ_READ_128B', - 13: 'GL1XC_PERF_SEL_REQ_READ_32B', - 14: 'GL1XC_PERF_SEL_REQ_READ_64B', - 15: 'GL1XC_PERF_SEL_REQ_WRITE', - 16: 'GL1XC_PERF_SEL_REQ_WRITE_32B', - 17: 'GL1XC_PERF_SEL_REQ_WRITE_64B', - 18: 'GL1XC_PERF_SEL_STALL_GL2_GL1', - 19: 'GL1XC_PERF_SEL_STALL_BUFFER_FULL', - 20: 'GL1XC_PERF_SEL_STALL_VM', - 21: 'GL1XC_PERF_SEL_REQ_CLIENT0', - 22: 'GL1XC_PERF_SEL_REQ_CLIENT1', - 23: 'GL1XC_PERF_SEL_REQ_CLIENT2', - 24: 'GL1XC_PERF_SEL_REQ_CLIENT3', - 25: 'GL1XC_PERF_SEL_REQ_CLIENT4', - 26: 'GL1XC_PERF_SEL_REQ_CLIENT5', - 27: 'GL1XC_PERF_SEL_REQ_CLIENT6', - 28: 'GL1XC_PERF_SEL_REQ_CLIENT7', - 29: 'GL1XC_PERF_SEL_REQ_CLIENT8', - 30: 'GL1XC_PERF_SEL_REQ_CLIENT9', - 31: 'GL1XC_PERF_SEL_REQ_CLIENT10', - 32: 'GL1XC_PERF_SEL_REQ_CLIENT11', - 33: 'GL1XC_PERF_SEL_REQ_CLIENT12', - 34: 'GL1XC_PERF_SEL_REQ_CLIENT13', - 35: 'GL1XC_PERF_SEL_REQ_CLIENT14', - 36: 'GL1XC_PERF_SEL_REQ_CLIENT15', - 37: 'GL1XC_PERF_SEL_REQ_CLIENT16', - 38: 'GL1XC_PERF_SEL_REQ_CLIENT17', - 39: 'GL1XC_PERF_SEL_REQ_CLIENT18', - 40: 'GL1XC_PERF_SEL_REQ_CLIENT19', - 41: 'GL1XC_PERF_SEL_REQ_CLIENT20', - 42: 'GL1XC_PERF_SEL_REQ_CLIENT21', - 43: 'GL1XC_PERF_SEL_REQ_CLIENT22', - 44: 'GL1XC_PERF_SEL_REQ_CLIENT23', - 45: 'GL1XC_PERF_SEL_REQ_CLIENT24', - 46: 'GL1XC_PERF_SEL_REQ_CLIENT25', - 47: 'GL1XC_PERF_SEL_REQ_CLIENT26', - 48: 'GL1XC_PERF_SEL_REQ_CLIENT27', - 49: 'GL1XC_PERF_SEL_UTCL0_REQUEST', - 50: 'GL1XC_PERF_SEL_UTCL0_TRANSLATION_HIT', - 51: 'GL1XC_PERF_SEL_UTCL0_TRANSLATION_MISS', - 52: 'GL1XC_PERF_SEL_UTCL0_PERMISSION_MISS', - 53: 'GL1XC_PERF_SEL_UTCL0_MISS_UNDER_MISS', - 54: 'GL1XC_PERF_SEL_UTCL0_LFIFO_FULL', - 55: 'GL1XC_PERF_SEL_UTCL0_STALL_INFLIGHT_MAX', - 56: 'GL1XC_PERF_SEL_UTCL0_STALL_LFIFO_NOT_RES', - 57: 'GL1XC_PERF_SEL_UTCL0_STALL_LRU_INFLIGHT', - 58: 'GL1XC_PERF_SEL_UTCL0_STALL_MISSFIFO_FULL', - 59: 'GL1XC_PERF_SEL_UTCL0_STALL_MULTI_MISS', - 60: 'GL1XC_PERF_SEL_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS', - 61: 'GL1XC_PERF_SEL_UTCL0_UTCL1_PERM_FAULT', - 62: 'GL1XC_PERF_SEL_CLIENT_UTCL0_INFLIGHT', - 63: 'GL1XC_PERF_SEL_UTCL0_UTCL1_INFLIGHT', - 64: 'GL1XC_PERF_SEL_UTCL0_INTERNAL_RETRY_REQ', - 65: 'GL1XC_PERF_SEL_UTCL0_UTCL1_XNACK_RETRY_FAULT', - 66: 'GL1XC_PERF_SEL_UTCL0_UTCL1_XNACK_PRT_FAULT', - 67: 'GL1XC_PERF_SEL_UTCL0_UTCL1_XNACK_NO_RETRY_FAULT', - 68: 'GL1XC_PERF_SEL_UTCL0_GPA3_REQUEST', -} -GL1XC_PERF_SEL_CYCLE = 0 -GL1XC_PERF_SEL_BUSY = 1 -GL1XC_PERF_SEL_STARVE = 2 -GL1XC_PERF_SEL_ARB_RET_LEVEL = 3 -GL1XC_PERF_SEL_GL2_REQ_READ_LATENCY = 4 -GL1XC_PERF_SEL_GL2_REQ_WRITE_LATENCY = 5 -GL1XC_PERF_SEL_REQ = 6 -GL1XC_PERF_SEL_REQ_ATOMIC_WITH_RET = 7 -GL1XC_PERF_SEL_REQ_ATOMIC_WITHOUT_RET = 8 -GL1XC_PERF_SEL_REQ_NOP_ACK = 9 -GL1XC_PERF_SEL_REQ_NOP_RTN0 = 10 -GL1XC_PERF_SEL_REQ_READ = 11 -GL1XC_PERF_SEL_REQ_READ_128B = 12 -GL1XC_PERF_SEL_REQ_READ_32B = 13 -GL1XC_PERF_SEL_REQ_READ_64B = 14 -GL1XC_PERF_SEL_REQ_WRITE = 15 -GL1XC_PERF_SEL_REQ_WRITE_32B = 16 -GL1XC_PERF_SEL_REQ_WRITE_64B = 17 -GL1XC_PERF_SEL_STALL_GL2_GL1 = 18 -GL1XC_PERF_SEL_STALL_BUFFER_FULL = 19 -GL1XC_PERF_SEL_STALL_VM = 20 -GL1XC_PERF_SEL_REQ_CLIENT0 = 21 -GL1XC_PERF_SEL_REQ_CLIENT1 = 22 -GL1XC_PERF_SEL_REQ_CLIENT2 = 23 -GL1XC_PERF_SEL_REQ_CLIENT3 = 24 -GL1XC_PERF_SEL_REQ_CLIENT4 = 25 -GL1XC_PERF_SEL_REQ_CLIENT5 = 26 -GL1XC_PERF_SEL_REQ_CLIENT6 = 27 -GL1XC_PERF_SEL_REQ_CLIENT7 = 28 -GL1XC_PERF_SEL_REQ_CLIENT8 = 29 -GL1XC_PERF_SEL_REQ_CLIENT9 = 30 -GL1XC_PERF_SEL_REQ_CLIENT10 = 31 -GL1XC_PERF_SEL_REQ_CLIENT11 = 32 -GL1XC_PERF_SEL_REQ_CLIENT12 = 33 -GL1XC_PERF_SEL_REQ_CLIENT13 = 34 -GL1XC_PERF_SEL_REQ_CLIENT14 = 35 -GL1XC_PERF_SEL_REQ_CLIENT15 = 36 -GL1XC_PERF_SEL_REQ_CLIENT16 = 37 -GL1XC_PERF_SEL_REQ_CLIENT17 = 38 -GL1XC_PERF_SEL_REQ_CLIENT18 = 39 -GL1XC_PERF_SEL_REQ_CLIENT19 = 40 -GL1XC_PERF_SEL_REQ_CLIENT20 = 41 -GL1XC_PERF_SEL_REQ_CLIENT21 = 42 -GL1XC_PERF_SEL_REQ_CLIENT22 = 43 -GL1XC_PERF_SEL_REQ_CLIENT23 = 44 -GL1XC_PERF_SEL_REQ_CLIENT24 = 45 -GL1XC_PERF_SEL_REQ_CLIENT25 = 46 -GL1XC_PERF_SEL_REQ_CLIENT26 = 47 -GL1XC_PERF_SEL_REQ_CLIENT27 = 48 -GL1XC_PERF_SEL_UTCL0_REQUEST = 49 -GL1XC_PERF_SEL_UTCL0_TRANSLATION_HIT = 50 -GL1XC_PERF_SEL_UTCL0_TRANSLATION_MISS = 51 -GL1XC_PERF_SEL_UTCL0_PERMISSION_MISS = 52 -GL1XC_PERF_SEL_UTCL0_MISS_UNDER_MISS = 53 -GL1XC_PERF_SEL_UTCL0_LFIFO_FULL = 54 -GL1XC_PERF_SEL_UTCL0_STALL_INFLIGHT_MAX = 55 -GL1XC_PERF_SEL_UTCL0_STALL_LFIFO_NOT_RES = 56 -GL1XC_PERF_SEL_UTCL0_STALL_LRU_INFLIGHT = 57 -GL1XC_PERF_SEL_UTCL0_STALL_MISSFIFO_FULL = 58 -GL1XC_PERF_SEL_UTCL0_STALL_MULTI_MISS = 59 -GL1XC_PERF_SEL_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS = 60 -GL1XC_PERF_SEL_UTCL0_UTCL1_PERM_FAULT = 61 -GL1XC_PERF_SEL_CLIENT_UTCL0_INFLIGHT = 62 -GL1XC_PERF_SEL_UTCL0_UTCL1_INFLIGHT = 63 -GL1XC_PERF_SEL_UTCL0_INTERNAL_RETRY_REQ = 64 -GL1XC_PERF_SEL_UTCL0_UTCL1_XNACK_RETRY_FAULT = 65 -GL1XC_PERF_SEL_UTCL0_UTCL1_XNACK_PRT_FAULT = 66 -GL1XC_PERF_SEL_UTCL0_UTCL1_XNACK_NO_RETRY_FAULT = 67 -GL1XC_PERF_SEL_UTCL0_GPA3_REQUEST = 68 -GL1XC_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBMH_PERF_SEL' -GRBMH_PERF_SEL__enumvalues = { - 0: 'GRBMH_PERF_SEL_COUNT', - 1: 'GRBMH_PERF_SEL_USER_DEFINED', - 2: 'GRBMH_PERF_SEL_CB_BUSY', - 3: 'GRBMH_PERF_SEL_CB_CLEAN', - 4: 'GRBMH_PERF_SEL_DB_BUSY', - 5: 'GRBMH_PERF_SEL_DB_CLEAN', - 6: 'GRBMH_PERF_SEL_SC_BUSY', - 7: 'GRBMH_PERF_SEL_SC_CLEAN', - 9: 'GRBMH_PERF_SEL_SPI_BUSY', - 10: 'GRBMH_PERF_SEL_SX_BUSY', - 11: 'GRBMH_PERF_SEL_TA_BUSY', - 12: 'GRBMH_PERF_SEL_EA_BUSY', - 13: 'GRBMH_PERF_SEL_EA_LINK_BUSY', - 14: 'GRBMH_PERF_SEL_PA_BUSY', - 15: 'GRBMH_PERF_SEL_BCI_BUSY', - 16: 'GRBMH_PERF_SEL_GL2A_BUSY', - 17: 'GRBMH_PERF_SEL_GL2C_BUSY', - 18: 'GRBMH_PERF_SEL_UTCL1_BUSY', - 19: 'GRBMH_PERF_SEL_TCP_BUSY', - 20: 'GRBMH_PERF_SEL_GL1A_BUSY', - 21: 'GRBMH_PERF_SEL_GL1CC_BUSY', - 22: 'GRBMH_PERF_SEL_GL1XCC_BUSY', - 23: 'GRBMH_PERF_SEL_PC_BUSY', - 24: 'GRBMH_PERF_SEL_GE_BUSY', - 25: 'GRBMH_PERF_SEL_RLC_BUSY', -} -GRBMH_PERF_SEL_COUNT = 0 -GRBMH_PERF_SEL_USER_DEFINED = 1 -GRBMH_PERF_SEL_CB_BUSY = 2 -GRBMH_PERF_SEL_CB_CLEAN = 3 -GRBMH_PERF_SEL_DB_BUSY = 4 -GRBMH_PERF_SEL_DB_CLEAN = 5 -GRBMH_PERF_SEL_SC_BUSY = 6 -GRBMH_PERF_SEL_SC_CLEAN = 7 -GRBMH_PERF_SEL_SPI_BUSY = 9 -GRBMH_PERF_SEL_SX_BUSY = 10 -GRBMH_PERF_SEL_TA_BUSY = 11 -GRBMH_PERF_SEL_EA_BUSY = 12 -GRBMH_PERF_SEL_EA_LINK_BUSY = 13 -GRBMH_PERF_SEL_PA_BUSY = 14 -GRBMH_PERF_SEL_BCI_BUSY = 15 -GRBMH_PERF_SEL_GL2A_BUSY = 16 -GRBMH_PERF_SEL_GL2C_BUSY = 17 -GRBMH_PERF_SEL_UTCL1_BUSY = 18 -GRBMH_PERF_SEL_TCP_BUSY = 19 -GRBMH_PERF_SEL_GL1A_BUSY = 20 -GRBMH_PERF_SEL_GL1CC_BUSY = 21 -GRBMH_PERF_SEL_GL1XCC_BUSY = 22 -GRBMH_PERF_SEL_PC_BUSY = 23 -GRBMH_PERF_SEL_GE_BUSY = 24 -GRBMH_PERF_SEL_RLC_BUSY = 25 -GRBMH_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TA_PERFCOUNT_SEL' -TA_PERFCOUNT_SEL__enumvalues = { - 0: 'TA_PERF_SEL_NULL', - 1: 'TA_PERF_SEL_image_sampler_has_offset_instructions', - 2: 'TA_PERF_SEL_image_sampler_has_bias_instructions', - 3: 'TA_PERF_SEL_image_sampler_has_reference_instructions', - 4: 'TA_PERF_SEL_image_sampler_has_ds_instructions', - 5: 'TA_PERF_SEL_image_sampler_has_dt_instructions', - 6: 'TA_PERF_SEL_image_sampler_has_dr_instructions', - 7: 'TA_PERF_SEL_gradient_busy', - 8: 'TA_PERF_SEL_gradient_fifo_busy', - 9: 'TA_PERF_SEL_lod_busy', - 10: 'TA_PERF_SEL_lod_fifo_busy', - 11: 'TA_PERF_SEL_addresser_busy', - 12: 'TA_PERF_SEL_addresser_fifo_busy', - 13: 'TA_PERF_SEL_aligner_busy', - 14: 'TA_PERF_SEL_write_path_busy', - 15: 'TA_PERF_SEL_ta_busy', - 16: 'TA_PERF_SEL_image_sampler_1_input_vgpr_instructions', - 17: 'TA_PERF_SEL_image_sampler_2_input_vgpr_instructions', - 18: 'TA_PERF_SEL_image_sampler_3_input_vgpr_instructions', - 19: 'TA_PERF_SEL_image_sampler_4_input_vgpr_instructions', - 20: 'TA_PERF_SEL_image_sampler_5_input_vgpr_instructions', - 21: 'TA_PERF_SEL_image_sampler_6_input_vgpr_instructions', - 22: 'TA_PERF_SEL_image_sampler_7_input_vgpr_instructions', - 23: 'TA_PERF_SEL_image_sampler_8_input_vgpr_instructions', - 24: 'TA_PERF_SEL_image_sampler_9_input_vgpr_instructions', - 25: 'TA_PERF_SEL_image_sampler_10_input_vgpr_instructions', - 26: 'TA_PERF_SEL_image_sampler_11_input_vgpr_instructions', - 27: 'TA_PERF_SEL_image_sampler_12_input_vgpr_instructions', - 28: 'TA_PERF_SEL_image_sampler_has_t_instructions', - 29: 'TA_PERF_SEL_image_sampler_has_r_instructions', - 30: 'TA_PERF_SEL_image_sampler_has_q_instructions', - 32: 'TA_PERF_SEL_total_wavefronts', - 33: 'TA_PERF_SEL_gradient_cycles', - 34: 'TA_PERF_SEL_walker_cycles', - 35: 'TA_PERF_SEL_aligner_cycles', - 36: 'TA_PERF_SEL_image_wavefronts', - 37: 'TA_PERF_SEL_image_read_wavefronts', - 38: 'TA_PERF_SEL_image_store_wavefronts', - 39: 'TA_PERF_SEL_image_atomic_wavefronts', - 40: 'TA_PERF_SEL_image_sampler_total_cycles', - 41: 'TA_PERF_SEL_image_nosampler_total_cycles', - 42: 'TA_PERF_SEL_flat_total_cycles', - 44: 'TA_PERF_SEL_buffer_wavefronts', - 45: 'TA_PERF_SEL_buffer_load_wavefronts', - 46: 'TA_PERF_SEL_buffer_store_wavefronts', - 47: 'TA_PERF_SEL_buffer_atomic_wavefronts', - 49: 'TA_PERF_SEL_buffer_total_cycles', - 50: 'TA_PERF_SEL_buffer_1_address_input_vgpr_instructions', - 51: 'TA_PERF_SEL_buffer_2_address_input_vgpr_instructions', - 52: 'TA_PERF_SEL_buffer_has_index_instructions', - 53: 'TA_PERF_SEL_buffer_has_offset_instructions', - 54: 'TA_PERF_SEL_addr_stalled_by_tc_cycles', - 55: 'TA_PERF_SEL_addr_stalled_by_td_cycles', - 56: 'TA_PERF_SEL_image_sampler_wavefronts', - 57: 'TA_PERF_SEL_addresser_stalled_by_aligner_only_cycles', - 58: 'TA_PERF_SEL_addresser_stalled_cycles', - 59: 'TA_PERF_SEL_aniso_stalled_by_addresser_only_cycles', - 60: 'TA_PERF_SEL_aniso_stalled_cycles', - 61: 'TA_PERF_SEL_deriv_stalled_by_aniso_only_cycles', - 62: 'TA_PERF_SEL_deriv_stalled_cycles', - 63: 'TA_PERF_SEL_aniso_gt1_cycle_quads', - 64: 'TA_PERF_SEL_color_1_cycle_quads', - 65: 'TA_PERF_SEL_color_2_cycle_quads', - 66: 'TA_PERF_SEL_color_3_cycle_quads', - 68: 'TA_PERF_SEL_mip_1_cycle_quads', - 69: 'TA_PERF_SEL_mip_2_cycle_quads', - 70: 'TA_PERF_SEL_vol_1_cycle_quads', - 71: 'TA_PERF_SEL_vol_2_cycle_quads', - 72: 'TA_PERF_SEL_sampler_op_quads', - 73: 'TA_PERF_SEL_mipmap_lod_0_samples', - 74: 'TA_PERF_SEL_mipmap_lod_1_samples', - 75: 'TA_PERF_SEL_mipmap_lod_2_samples', - 76: 'TA_PERF_SEL_mipmap_lod_3_samples', - 77: 'TA_PERF_SEL_mipmap_lod_4_samples', - 78: 'TA_PERF_SEL_mipmap_lod_5_samples', - 79: 'TA_PERF_SEL_mipmap_lod_6_samples', - 80: 'TA_PERF_SEL_mipmap_lod_7_samples', - 81: 'TA_PERF_SEL_mipmap_lod_8_samples', - 82: 'TA_PERF_SEL_mipmap_lod_9_samples', - 83: 'TA_PERF_SEL_mipmap_lod_10_samples', - 84: 'TA_PERF_SEL_mipmap_lod_11_samples', - 85: 'TA_PERF_SEL_mipmap_lod_12_samples', - 86: 'TA_PERF_SEL_mipmap_lod_13_samples', - 87: 'TA_PERF_SEL_mipmap_lod_14_samples', - 88: 'TA_PERF_SEL_mipmap_invalid_samples', - 89: 'TA_PERF_SEL_aniso_1_cycle_quads', - 90: 'TA_PERF_SEL_aniso_2_cycle_quads', - 91: 'TA_PERF_SEL_aniso_4_cycle_quads', - 92: 'TA_PERF_SEL_aniso_6_cycle_quads', - 93: 'TA_PERF_SEL_aniso_8_cycle_quads', - 94: 'TA_PERF_SEL_aniso_10_cycle_quads', - 95: 'TA_PERF_SEL_aniso_12_cycle_quads', - 96: 'TA_PERF_SEL_aniso_14_cycle_quads', - 97: 'TA_PERF_SEL_aniso_16_cycle_quads', - 98: 'TA_PERF_SEL_store_write_data_input_cycles', - 99: 'TA_PERF_SEL_store_write_data_output_cycles', - 100: 'TA_PERF_SEL_flat_wavefronts', - 101: 'TA_PERF_SEL_flat_load_wavefronts', - 102: 'TA_PERF_SEL_flat_store_wavefronts', - 103: 'TA_PERF_SEL_flat_atomic_wavefronts', - 104: 'TA_PERF_SEL_flat_1_address_input_vgpr_instructions', - 105: 'TA_PERF_SEL_register_clk_valid_cycles', - 106: 'TA_PERF_SEL_non_harvestable_clk_enabled_cycles', - 107: 'TA_PERF_SEL_harvestable_clk_enabled_cycles', - 108: 'TA_PERF_SEL_flat_2_address_input_vgpr_instructions', - 109: 'TA_PERF_SEL_boundary_non_harvestable_clk_enabled_cycles', - 110: 'TA_PERF_SEL_boundary_harvestable_clk_enabled_cycles', - 112: 'TA_PERF_SEL_mipmap_lod_15_samples', - 113: 'TA_PERF_SEL_mipmap_lod_16_samples', - 114: 'TA_PERF_SEL_store_2_write_data_vgpr_instructions', - 115: 'TA_PERF_SEL_store_3_write_data_vgpr_instructions', - 116: 'TA_PERF_SEL_store_4_write_data_vgpr_instructions', - 117: 'TA_PERF_SEL_store_has_x_instructions', - 118: 'TA_PERF_SEL_store_has_y_instructions', - 119: 'TA_PERF_SEL_store_has_z_instructions', - 120: 'TA_PERF_SEL_store_has_w_instructions', - 121: 'TA_PERF_SEL_image_nosampler_has_t_instructions', - 122: 'TA_PERF_SEL_image_nosampler_has_r_instructions', - 123: 'TA_PERF_SEL_image_nosampler_has_q_instructions', - 124: 'TA_PERF_SEL_image_nosampler_1_address_input_vgpr_instructions', - 125: 'TA_PERF_SEL_image_nosampler_2_address_input_vgpr_instructions', - 126: 'TA_PERF_SEL_image_nosampler_3_address_input_vgpr_instructions', - 127: 'TA_PERF_SEL_image_nosampler_4_address_input_vgpr_instructions', - 128: 'TA_PERF_SEL_in_busy', - 129: 'TA_PERF_SEL_in_fifos_busy', - 130: 'TA_PERF_SEL_in_cfifo_busy', - 131: 'TA_PERF_SEL_in_qfifo_busy', - 132: 'TA_PERF_SEL_in_wfifo_busy', - 133: 'TA_PERF_SEL_in_rfifo_busy', - 134: 'TA_PERF_SEL_bf_busy', - 135: 'TA_PERF_SEL_ns_busy', - 136: 'TA_PERF_SEL_smp_busy_ns_idle', - 137: 'TA_PERF_SEL_smp_idle_ns_busy', - 144: 'TA_PERF_SEL_vmemcmd_cycles', - 145: 'TA_PERF_SEL_vmemreq_cycles', - 146: 'TA_PERF_SEL_in_waiting_on_req_cycles', - 150: 'TA_PERF_SEL_in_addr_cycles', - 151: 'TA_PERF_SEL_in_data_cycles', - 160: 'TA_PERF_SEL_point_sampled_quads', - 162: 'TA_PERF_SEL_atomic_2_write_data_vgpr_instructions', - 163: 'TA_PERF_SEL_atomic_4_write_data_vgpr_instructions', - 164: 'TA_PERF_SEL_atomic_write_data_input_cycles', - 165: 'TA_PERF_SEL_atomic_write_data_output_cycles', - 173: 'TA_PERF_SEL_num_unlit_nodes_ta_opt', - 174: 'TA_PERF_SEL_num_nodes_invalidated_due_to_bad_input', - 175: 'TA_PERF_SEL_num_nodes_invalidated_due_to_oob', - 192: 'TA_PERF_SEL_image_sampler_1_op_burst', - 193: 'TA_PERF_SEL_image_sampler_2to3_op_burst', - 194: 'TA_PERF_SEL_image_sampler_4to7_op_burst', - 195: 'TA_PERF_SEL_image_sampler_ge8_op_burst', - 196: 'TA_PERF_SEL_image_linked_1_op_burst', - 197: 'TA_PERF_SEL_image_linked_2to3_op_burst', - 198: 'TA_PERF_SEL_image_linked_4to7_op_burst', - 199: 'TA_PERF_SEL_image_linked_ge8_op_burst', - 204: 'TA_PERF_SEL_image_nosampler_1_op_burst', - 205: 'TA_PERF_SEL_image_nosampler_2to3_op_burst', - 206: 'TA_PERF_SEL_image_nosampler_4to31_op_burst', - 207: 'TA_PERF_SEL_image_nosampler_ge32_op_burst', - 208: 'TA_PERF_SEL_buffer_flat_1_op_burst', - 209: 'TA_PERF_SEL_buffer_flat_2to3_op_burst', - 210: 'TA_PERF_SEL_buffer_flat_4to31_op_burst', - 211: 'TA_PERF_SEL_buffer_flat_ge32_op_burst', - 212: 'TA_PERF_SEL_write_1_op_burst', - 213: 'TA_PERF_SEL_write_2to3_op_burst', - 214: 'TA_PERF_SEL_write_4to31_op_burst', - 215: 'TA_PERF_SEL_write_ge32_op_burst', - 216: 'TA_PERF_SEL_ibubble_1_cycle_burst', - 217: 'TA_PERF_SEL_ibubble_2to3_cycle_burst', - 218: 'TA_PERF_SEL_ibubble_4to15_cycle_burst', - 219: 'TA_PERF_SEL_ibubble_16to31_cycle_burst', - 220: 'TA_PERF_SEL_ibubble_32to63_cycle_burst', - 221: 'TA_PERF_SEL_ibubble_ge64_cycle_burst', - 224: 'TA_PERF_SEL_sampler_clk_valid_cycles', - 225: 'TA_PERF_SEL_nonsampler_clk_valid_cycles', - 226: 'TA_PERF_SEL_buffer_flat_clk_valid_cycles', - 227: 'TA_PERF_SEL_write_data_clk_valid_cycles', - 228: 'TA_PERF_SEL_gradient_clk_valid_cycles', - 229: 'TA_PERF_SEL_lod_aniso_clk_valid_cycles', - 230: 'TA_PERF_SEL_sampler_addressing_clk_valid_cycles', - 231: 'TA_PERF_SEL_sync_sampler_sstate_fifo_clk_valid_cycles', - 232: 'TA_PERF_SEL_sync_sampler_cstate_fifo_clk_valid_cycles', - 233: 'TA_PERF_SEL_sync_nonsampler_fifo_clk_valid_cycles', - 234: 'TA_PERF_SEL_aligner_clk_valid_cycles', - 235: 'TA_PERF_SEL_tcreq_clk_valid_cycles', -} -TA_PERF_SEL_NULL = 0 -TA_PERF_SEL_image_sampler_has_offset_instructions = 1 -TA_PERF_SEL_image_sampler_has_bias_instructions = 2 -TA_PERF_SEL_image_sampler_has_reference_instructions = 3 -TA_PERF_SEL_image_sampler_has_ds_instructions = 4 -TA_PERF_SEL_image_sampler_has_dt_instructions = 5 -TA_PERF_SEL_image_sampler_has_dr_instructions = 6 -TA_PERF_SEL_gradient_busy = 7 -TA_PERF_SEL_gradient_fifo_busy = 8 -TA_PERF_SEL_lod_busy = 9 -TA_PERF_SEL_lod_fifo_busy = 10 -TA_PERF_SEL_addresser_busy = 11 -TA_PERF_SEL_addresser_fifo_busy = 12 -TA_PERF_SEL_aligner_busy = 13 -TA_PERF_SEL_write_path_busy = 14 -TA_PERF_SEL_ta_busy = 15 -TA_PERF_SEL_image_sampler_1_input_vgpr_instructions = 16 -TA_PERF_SEL_image_sampler_2_input_vgpr_instructions = 17 -TA_PERF_SEL_image_sampler_3_input_vgpr_instructions = 18 -TA_PERF_SEL_image_sampler_4_input_vgpr_instructions = 19 -TA_PERF_SEL_image_sampler_5_input_vgpr_instructions = 20 -TA_PERF_SEL_image_sampler_6_input_vgpr_instructions = 21 -TA_PERF_SEL_image_sampler_7_input_vgpr_instructions = 22 -TA_PERF_SEL_image_sampler_8_input_vgpr_instructions = 23 -TA_PERF_SEL_image_sampler_9_input_vgpr_instructions = 24 -TA_PERF_SEL_image_sampler_10_input_vgpr_instructions = 25 -TA_PERF_SEL_image_sampler_11_input_vgpr_instructions = 26 -TA_PERF_SEL_image_sampler_12_input_vgpr_instructions = 27 -TA_PERF_SEL_image_sampler_has_t_instructions = 28 -TA_PERF_SEL_image_sampler_has_r_instructions = 29 -TA_PERF_SEL_image_sampler_has_q_instructions = 30 -TA_PERF_SEL_total_wavefronts = 32 -TA_PERF_SEL_gradient_cycles = 33 -TA_PERF_SEL_walker_cycles = 34 -TA_PERF_SEL_aligner_cycles = 35 -TA_PERF_SEL_image_wavefronts = 36 -TA_PERF_SEL_image_read_wavefronts = 37 -TA_PERF_SEL_image_store_wavefronts = 38 -TA_PERF_SEL_image_atomic_wavefronts = 39 -TA_PERF_SEL_image_sampler_total_cycles = 40 -TA_PERF_SEL_image_nosampler_total_cycles = 41 -TA_PERF_SEL_flat_total_cycles = 42 -TA_PERF_SEL_buffer_wavefronts = 44 -TA_PERF_SEL_buffer_load_wavefronts = 45 -TA_PERF_SEL_buffer_store_wavefronts = 46 -TA_PERF_SEL_buffer_atomic_wavefronts = 47 -TA_PERF_SEL_buffer_total_cycles = 49 -TA_PERF_SEL_buffer_1_address_input_vgpr_instructions = 50 -TA_PERF_SEL_buffer_2_address_input_vgpr_instructions = 51 -TA_PERF_SEL_buffer_has_index_instructions = 52 -TA_PERF_SEL_buffer_has_offset_instructions = 53 -TA_PERF_SEL_addr_stalled_by_tc_cycles = 54 -TA_PERF_SEL_addr_stalled_by_td_cycles = 55 -TA_PERF_SEL_image_sampler_wavefronts = 56 -TA_PERF_SEL_addresser_stalled_by_aligner_only_cycles = 57 -TA_PERF_SEL_addresser_stalled_cycles = 58 -TA_PERF_SEL_aniso_stalled_by_addresser_only_cycles = 59 -TA_PERF_SEL_aniso_stalled_cycles = 60 -TA_PERF_SEL_deriv_stalled_by_aniso_only_cycles = 61 -TA_PERF_SEL_deriv_stalled_cycles = 62 -TA_PERF_SEL_aniso_gt1_cycle_quads = 63 -TA_PERF_SEL_color_1_cycle_quads = 64 -TA_PERF_SEL_color_2_cycle_quads = 65 -TA_PERF_SEL_color_3_cycle_quads = 66 -TA_PERF_SEL_mip_1_cycle_quads = 68 -TA_PERF_SEL_mip_2_cycle_quads = 69 -TA_PERF_SEL_vol_1_cycle_quads = 70 -TA_PERF_SEL_vol_2_cycle_quads = 71 -TA_PERF_SEL_sampler_op_quads = 72 -TA_PERF_SEL_mipmap_lod_0_samples = 73 -TA_PERF_SEL_mipmap_lod_1_samples = 74 -TA_PERF_SEL_mipmap_lod_2_samples = 75 -TA_PERF_SEL_mipmap_lod_3_samples = 76 -TA_PERF_SEL_mipmap_lod_4_samples = 77 -TA_PERF_SEL_mipmap_lod_5_samples = 78 -TA_PERF_SEL_mipmap_lod_6_samples = 79 -TA_PERF_SEL_mipmap_lod_7_samples = 80 -TA_PERF_SEL_mipmap_lod_8_samples = 81 -TA_PERF_SEL_mipmap_lod_9_samples = 82 -TA_PERF_SEL_mipmap_lod_10_samples = 83 -TA_PERF_SEL_mipmap_lod_11_samples = 84 -TA_PERF_SEL_mipmap_lod_12_samples = 85 -TA_PERF_SEL_mipmap_lod_13_samples = 86 -TA_PERF_SEL_mipmap_lod_14_samples = 87 -TA_PERF_SEL_mipmap_invalid_samples = 88 -TA_PERF_SEL_aniso_1_cycle_quads = 89 -TA_PERF_SEL_aniso_2_cycle_quads = 90 -TA_PERF_SEL_aniso_4_cycle_quads = 91 -TA_PERF_SEL_aniso_6_cycle_quads = 92 -TA_PERF_SEL_aniso_8_cycle_quads = 93 -TA_PERF_SEL_aniso_10_cycle_quads = 94 -TA_PERF_SEL_aniso_12_cycle_quads = 95 -TA_PERF_SEL_aniso_14_cycle_quads = 96 -TA_PERF_SEL_aniso_16_cycle_quads = 97 -TA_PERF_SEL_store_write_data_input_cycles = 98 -TA_PERF_SEL_store_write_data_output_cycles = 99 -TA_PERF_SEL_flat_wavefronts = 100 -TA_PERF_SEL_flat_load_wavefronts = 101 -TA_PERF_SEL_flat_store_wavefronts = 102 -TA_PERF_SEL_flat_atomic_wavefronts = 103 -TA_PERF_SEL_flat_1_address_input_vgpr_instructions = 104 -TA_PERF_SEL_register_clk_valid_cycles = 105 -TA_PERF_SEL_non_harvestable_clk_enabled_cycles = 106 -TA_PERF_SEL_harvestable_clk_enabled_cycles = 107 -TA_PERF_SEL_flat_2_address_input_vgpr_instructions = 108 -TA_PERF_SEL_boundary_non_harvestable_clk_enabled_cycles = 109 -TA_PERF_SEL_boundary_harvestable_clk_enabled_cycles = 110 -TA_PERF_SEL_mipmap_lod_15_samples = 112 -TA_PERF_SEL_mipmap_lod_16_samples = 113 -TA_PERF_SEL_store_2_write_data_vgpr_instructions = 114 -TA_PERF_SEL_store_3_write_data_vgpr_instructions = 115 -TA_PERF_SEL_store_4_write_data_vgpr_instructions = 116 -TA_PERF_SEL_store_has_x_instructions = 117 -TA_PERF_SEL_store_has_y_instructions = 118 -TA_PERF_SEL_store_has_z_instructions = 119 -TA_PERF_SEL_store_has_w_instructions = 120 -TA_PERF_SEL_image_nosampler_has_t_instructions = 121 -TA_PERF_SEL_image_nosampler_has_r_instructions = 122 -TA_PERF_SEL_image_nosampler_has_q_instructions = 123 -TA_PERF_SEL_image_nosampler_1_address_input_vgpr_instructions = 124 -TA_PERF_SEL_image_nosampler_2_address_input_vgpr_instructions = 125 -TA_PERF_SEL_image_nosampler_3_address_input_vgpr_instructions = 126 -TA_PERF_SEL_image_nosampler_4_address_input_vgpr_instructions = 127 -TA_PERF_SEL_in_busy = 128 -TA_PERF_SEL_in_fifos_busy = 129 -TA_PERF_SEL_in_cfifo_busy = 130 -TA_PERF_SEL_in_qfifo_busy = 131 -TA_PERF_SEL_in_wfifo_busy = 132 -TA_PERF_SEL_in_rfifo_busy = 133 -TA_PERF_SEL_bf_busy = 134 -TA_PERF_SEL_ns_busy = 135 -TA_PERF_SEL_smp_busy_ns_idle = 136 -TA_PERF_SEL_smp_idle_ns_busy = 137 -TA_PERF_SEL_vmemcmd_cycles = 144 -TA_PERF_SEL_vmemreq_cycles = 145 -TA_PERF_SEL_in_waiting_on_req_cycles = 146 -TA_PERF_SEL_in_addr_cycles = 150 -TA_PERF_SEL_in_data_cycles = 151 -TA_PERF_SEL_point_sampled_quads = 160 -TA_PERF_SEL_atomic_2_write_data_vgpr_instructions = 162 -TA_PERF_SEL_atomic_4_write_data_vgpr_instructions = 163 -TA_PERF_SEL_atomic_write_data_input_cycles = 164 -TA_PERF_SEL_atomic_write_data_output_cycles = 165 -TA_PERF_SEL_num_unlit_nodes_ta_opt = 173 -TA_PERF_SEL_num_nodes_invalidated_due_to_bad_input = 174 -TA_PERF_SEL_num_nodes_invalidated_due_to_oob = 175 -TA_PERF_SEL_image_sampler_1_op_burst = 192 -TA_PERF_SEL_image_sampler_2to3_op_burst = 193 -TA_PERF_SEL_image_sampler_4to7_op_burst = 194 -TA_PERF_SEL_image_sampler_ge8_op_burst = 195 -TA_PERF_SEL_image_linked_1_op_burst = 196 -TA_PERF_SEL_image_linked_2to3_op_burst = 197 -TA_PERF_SEL_image_linked_4to7_op_burst = 198 -TA_PERF_SEL_image_linked_ge8_op_burst = 199 -TA_PERF_SEL_image_nosampler_1_op_burst = 204 -TA_PERF_SEL_image_nosampler_2to3_op_burst = 205 -TA_PERF_SEL_image_nosampler_4to31_op_burst = 206 -TA_PERF_SEL_image_nosampler_ge32_op_burst = 207 -TA_PERF_SEL_buffer_flat_1_op_burst = 208 -TA_PERF_SEL_buffer_flat_2to3_op_burst = 209 -TA_PERF_SEL_buffer_flat_4to31_op_burst = 210 -TA_PERF_SEL_buffer_flat_ge32_op_burst = 211 -TA_PERF_SEL_write_1_op_burst = 212 -TA_PERF_SEL_write_2to3_op_burst = 213 -TA_PERF_SEL_write_4to31_op_burst = 214 -TA_PERF_SEL_write_ge32_op_burst = 215 -TA_PERF_SEL_ibubble_1_cycle_burst = 216 -TA_PERF_SEL_ibubble_2to3_cycle_burst = 217 -TA_PERF_SEL_ibubble_4to15_cycle_burst = 218 -TA_PERF_SEL_ibubble_16to31_cycle_burst = 219 -TA_PERF_SEL_ibubble_32to63_cycle_burst = 220 -TA_PERF_SEL_ibubble_ge64_cycle_burst = 221 -TA_PERF_SEL_sampler_clk_valid_cycles = 224 -TA_PERF_SEL_nonsampler_clk_valid_cycles = 225 -TA_PERF_SEL_buffer_flat_clk_valid_cycles = 226 -TA_PERF_SEL_write_data_clk_valid_cycles = 227 -TA_PERF_SEL_gradient_clk_valid_cycles = 228 -TA_PERF_SEL_lod_aniso_clk_valid_cycles = 229 -TA_PERF_SEL_sampler_addressing_clk_valid_cycles = 230 -TA_PERF_SEL_sync_sampler_sstate_fifo_clk_valid_cycles = 231 -TA_PERF_SEL_sync_sampler_cstate_fifo_clk_valid_cycles = 232 -TA_PERF_SEL_sync_nonsampler_fifo_clk_valid_cycles = 233 -TA_PERF_SEL_aligner_clk_valid_cycles = 234 -TA_PERF_SEL_tcreq_clk_valid_cycles = 235 -TA_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_BC_SWIZZLE' -TEX_BC_SWIZZLE__enumvalues = { - 0: 'TEX_BC_Swizzle_XYZW', - 1: 'TEX_BC_Swizzle_XWYZ', - 2: 'TEX_BC_Swizzle_WZYX', - 3: 'TEX_BC_Swizzle_WXYZ', - 4: 'TEX_BC_Swizzle_ZYXW', - 5: 'TEX_BC_Swizzle_YXWZ', -} -TEX_BC_Swizzle_XYZW = 0 -TEX_BC_Swizzle_XWYZ = 1 -TEX_BC_Swizzle_WZYX = 2 -TEX_BC_Swizzle_WXYZ = 3 -TEX_BC_Swizzle_ZYXW = 4 -TEX_BC_Swizzle_YXWZ = 5 -TEX_BC_SWIZZLE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_BORDER_COLOR_TYPE' -TEX_BORDER_COLOR_TYPE__enumvalues = { - 0: 'TEX_BorderColor_TransparentBlack', - 1: 'TEX_BorderColor_OpaqueBlack', - 2: 'TEX_BorderColor_OpaqueWhite', - 3: 'TEX_BorderColor_Register', -} -TEX_BorderColor_TransparentBlack = 0 -TEX_BorderColor_OpaqueBlack = 1 -TEX_BorderColor_OpaqueWhite = 2 -TEX_BorderColor_Register = 3 -TEX_BORDER_COLOR_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_CHROMA_KEY' -TEX_CHROMA_KEY__enumvalues = { - 0: 'TEX_ChromaKey_Disabled', - 1: 'TEX_ChromaKey_Kill', - 2: 'TEX_ChromaKey_Blend', - 3: 'TEX_ChromaKey_RESERVED_3', -} -TEX_ChromaKey_Disabled = 0 -TEX_ChromaKey_Kill = 1 -TEX_ChromaKey_Blend = 2 -TEX_ChromaKey_RESERVED_3 = 3 -TEX_CHROMA_KEY = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_CLAMP' -TEX_CLAMP__enumvalues = { - 0: 'TEX_Clamp_Repeat', - 1: 'TEX_Clamp_Mirror', - 2: 'TEX_Clamp_ClampToLast', - 3: 'TEX_Clamp_MirrorOnceToLast', - 4: 'TEX_Clamp_ClampHalfToBorder', - 5: 'TEX_Clamp_MirrorOnceHalfToBorder', - 6: 'TEX_Clamp_ClampToBorder', - 7: 'TEX_Clamp_MirrorOnceToBorder', -} -TEX_Clamp_Repeat = 0 -TEX_Clamp_Mirror = 1 -TEX_Clamp_ClampToLast = 2 -TEX_Clamp_MirrorOnceToLast = 3 -TEX_Clamp_ClampHalfToBorder = 4 -TEX_Clamp_MirrorOnceHalfToBorder = 5 -TEX_Clamp_ClampToBorder = 6 -TEX_Clamp_MirrorOnceToBorder = 7 -TEX_CLAMP = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_COORD_TYPE' -TEX_COORD_TYPE__enumvalues = { - 0: 'TEX_CoordType_Unnormalized', - 1: 'TEX_CoordType_Normalized', -} -TEX_CoordType_Unnormalized = 0 -TEX_CoordType_Normalized = 1 -TEX_COORD_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_DEPTH_COMPARE_FUNCTION' -TEX_DEPTH_COMPARE_FUNCTION__enumvalues = { - 0: 'TEX_DepthCompareFunction_Never', - 1: 'TEX_DepthCompareFunction_Less', - 2: 'TEX_DepthCompareFunction_Equal', - 3: 'TEX_DepthCompareFunction_LessEqual', - 4: 'TEX_DepthCompareFunction_Greater', - 5: 'TEX_DepthCompareFunction_NotEqual', - 6: 'TEX_DepthCompareFunction_GreaterEqual', - 7: 'TEX_DepthCompareFunction_Always', -} -TEX_DepthCompareFunction_Never = 0 -TEX_DepthCompareFunction_Less = 1 -TEX_DepthCompareFunction_Equal = 2 -TEX_DepthCompareFunction_LessEqual = 3 -TEX_DepthCompareFunction_Greater = 4 -TEX_DepthCompareFunction_NotEqual = 5 -TEX_DepthCompareFunction_GreaterEqual = 6 -TEX_DepthCompareFunction_Always = 7 -TEX_DEPTH_COMPARE_FUNCTION = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_FORMAT_COMP' -TEX_FORMAT_COMP__enumvalues = { - 0: 'TEX_FormatComp_Unsigned', - 1: 'TEX_FormatComp_Signed', - 2: 'TEX_FormatComp_UnsignedBiased', - 3: 'TEX_FormatComp_RESERVED_3', -} -TEX_FormatComp_Unsigned = 0 -TEX_FormatComp_Signed = 1 -TEX_FormatComp_UnsignedBiased = 2 -TEX_FormatComp_RESERVED_3 = 3 -TEX_FORMAT_COMP = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_MAX_ANISO_RATIO' -TEX_MAX_ANISO_RATIO__enumvalues = { - 0: 'TEX_MaxAnisoRatio_1to1', - 1: 'TEX_MaxAnisoRatio_2to1', - 2: 'TEX_MaxAnisoRatio_4to1', - 3: 'TEX_MaxAnisoRatio_8to1', - 4: 'TEX_MaxAnisoRatio_16to1', - 5: 'TEX_MaxAnisoRatio_RESERVED_5', - 6: 'TEX_MaxAnisoRatio_RESERVED_6', - 7: 'TEX_MaxAnisoRatio_RESERVED_7', -} -TEX_MaxAnisoRatio_1to1 = 0 -TEX_MaxAnisoRatio_2to1 = 1 -TEX_MaxAnisoRatio_4to1 = 2 -TEX_MaxAnisoRatio_8to1 = 3 -TEX_MaxAnisoRatio_16to1 = 4 -TEX_MaxAnisoRatio_RESERVED_5 = 5 -TEX_MaxAnisoRatio_RESERVED_6 = 6 -TEX_MaxAnisoRatio_RESERVED_7 = 7 -TEX_MAX_ANISO_RATIO = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_MIP_FILTER' -TEX_MIP_FILTER__enumvalues = { - 0: 'TEX_MipFilter_None', - 1: 'TEX_MipFilter_Point', - 2: 'TEX_MipFilter_Linear', - 3: 'TEX_MipFilter_Point_Aniso_Adj', -} -TEX_MipFilter_None = 0 -TEX_MipFilter_Point = 1 -TEX_MipFilter_Linear = 2 -TEX_MipFilter_Point_Aniso_Adj = 3 -TEX_MIP_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_REQUEST_SIZE' -TEX_REQUEST_SIZE__enumvalues = { - 0: 'TEX_RequestSize_32B', - 1: 'TEX_RequestSize_64B', - 2: 'TEX_RequestSize_128B', - 3: 'TEX_RequestSize_2X64B', -} -TEX_RequestSize_32B = 0 -TEX_RequestSize_64B = 1 -TEX_RequestSize_128B = 2 -TEX_RequestSize_2X64B = 3 -TEX_REQUEST_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_SAMPLER_TYPE' -TEX_SAMPLER_TYPE__enumvalues = { - 0: 'TEX_SamplerType_Invalid', - 1: 'TEX_SamplerType_Valid', -} -TEX_SamplerType_Invalid = 0 -TEX_SamplerType_Valid = 1 -TEX_SAMPLER_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_XY_FILTER' -TEX_XY_FILTER__enumvalues = { - 0: 'TEX_XYFilter_Point', - 1: 'TEX_XYFilter_Linear', - 2: 'TEX_XYFilter_AnisoPoint', - 3: 'TEX_XYFilter_AnisoLinear', -} -TEX_XYFilter_Point = 0 -TEX_XYFilter_Linear = 1 -TEX_XYFilter_AnisoPoint = 2 -TEX_XYFilter_AnisoLinear = 3 -TEX_XY_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_Z_FILTER' -TEX_Z_FILTER__enumvalues = { - 0: 'TEX_ZFilter_None', - 1: 'TEX_ZFilter_Point', - 2: 'TEX_ZFilter_Linear', - 3: 'TEX_ZFilter_RESERVED_3', -} -TEX_ZFilter_None = 0 -TEX_ZFilter_Point = 1 -TEX_ZFilter_Linear = 2 -TEX_ZFilter_RESERVED_3 = 3 -TEX_Z_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'TVX_TYPE' -TVX_TYPE__enumvalues = { - 0: 'TVX_Type_InvalidTextureResource', - 1: 'TVX_Type_InvalidVertexBuffer', - 2: 'TVX_Type_ValidTextureResource', - 3: 'TVX_Type_ValidVertexBuffer', -} -TVX_Type_InvalidTextureResource = 0 -TVX_Type_InvalidVertexBuffer = 1 -TVX_Type_ValidTextureResource = 2 -TVX_Type_ValidVertexBuffer = 3 -TVX_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TA_TC_ADDR_MODES' -TA_TC_ADDR_MODES__enumvalues = { - 0: 'TA_TC_ADDR_MODE_DEFAULT', - 1: 'TA_TC_ADDR_MODE_COMP0', - 2: 'TA_TC_ADDR_MODE_COMP1', - 3: 'TA_TC_ADDR_MODE_COMP2', - 4: 'TA_TC_ADDR_MODE_COMP3', - 5: 'TA_TC_ADDR_MODE_UNALIGNED', - 6: 'TA_TC_ADDR_MODE_BORDER_COLOR', -} -TA_TC_ADDR_MODE_DEFAULT = 0 -TA_TC_ADDR_MODE_COMP0 = 1 -TA_TC_ADDR_MODE_COMP1 = 2 -TA_TC_ADDR_MODE_COMP2 = 3 -TA_TC_ADDR_MODE_COMP3 = 4 -TA_TC_ADDR_MODE_UNALIGNED = 5 -TA_TC_ADDR_MODE_BORDER_COLOR = 6 -TA_TC_ADDR_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'TA_TC_REQ_MODES' -TA_TC_REQ_MODES__enumvalues = { - 0: 'TA_TC_REQ_MODE_BORDER', - 1: 'TA_TC_REQ_MODE_TEX2', - 2: 'TA_TC_REQ_MODE_TEX1', - 3: 'TA_TC_REQ_MODE_TEX0', - 4: 'TA_TC_REQ_MODE_NORMAL', - 5: 'TA_TC_REQ_MODE_DWORD', - 6: 'TA_TC_REQ_MODE_BYTE', - 7: 'TA_TC_REQ_MODE_BYTE_NV', -} -TA_TC_REQ_MODE_BORDER = 0 -TA_TC_REQ_MODE_TEX2 = 1 -TA_TC_REQ_MODE_TEX1 = 2 -TA_TC_REQ_MODE_TEX0 = 3 -TA_TC_REQ_MODE_NORMAL = 4 -TA_TC_REQ_MODE_DWORD = 5 -TA_TC_REQ_MODE_BYTE = 6 -TA_TC_REQ_MODE_BYTE_NV = 7 -TA_TC_REQ_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_CACHE_POLICIES' -TCP_CACHE_POLICIES__enumvalues = { - 0: 'TCP_CACHE_POLICY_MISS_LRU', - 1: 'TCP_CACHE_POLICY_MISS_EVICT', - 2: 'TCP_CACHE_POLICY_HIT_LRU', - 3: 'TCP_CACHE_POLICY_HIT_EVICT', -} -TCP_CACHE_POLICY_MISS_LRU = 0 -TCP_CACHE_POLICY_MISS_EVICT = 1 -TCP_CACHE_POLICY_HIT_LRU = 2 -TCP_CACHE_POLICY_HIT_EVICT = 3 -TCP_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_CACHE_STORE_POLICIES' -TCP_CACHE_STORE_POLICIES__enumvalues = { - 0: 'TCP_CACHE_STORE_POLICY_WT_LRU', - 1: 'TCP_CACHE_STORE_POLICY_WT_EVICT', -} -TCP_CACHE_STORE_POLICY_WT_LRU = 0 -TCP_CACHE_STORE_POLICY_WT_EVICT = 1 -TCP_CACHE_STORE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_COMPRESSION_BYPASS' -TCP_COMPRESSION_BYPASS__enumvalues = { - 0: 'TCP_COMPRESSION_BYPASS_DIS', - 1: 'TCP_COMPRESSION_BYPASS_EN', -} -TCP_COMPRESSION_BYPASS_DIS = 0 -TCP_COMPRESSION_BYPASS_EN = 1 -TCP_COMPRESSION_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_COMPRESSION_OVERRIDE' -TCP_COMPRESSION_OVERRIDE__enumvalues = { - 0: 'TCP_COMPRESSION_OVERRIDE_DIS', - 1: 'TCP_COMPRESSION_OVERRIDE_EN', -} -TCP_COMPRESSION_OVERRIDE_DIS = 0 -TCP_COMPRESSION_OVERRIDE_EN = 1 -TCP_COMPRESSION_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_OPCODE_TYPE' -TCP_OPCODE_TYPE__enumvalues = { - 0: 'TCP_OPCODE_READ', - 1: 'TCP_OPCODE_WRITE', - 2: 'TCP_OPCODE_ATOMIC', - 3: 'TCP_OPCODE_INV', - 4: 'TCP_OPCODE_ATOMIC_CMPSWAP', - 5: 'TCP_OPCODE_SAMPLER', - 6: 'TCP_OPCODE_LOAD', - 7: 'TCP_OPCODE_GATHERH', -} -TCP_OPCODE_READ = 0 -TCP_OPCODE_WRITE = 1 -TCP_OPCODE_ATOMIC = 2 -TCP_OPCODE_INV = 3 -TCP_OPCODE_ATOMIC_CMPSWAP = 4 -TCP_OPCODE_SAMPLER = 5 -TCP_OPCODE_LOAD = 6 -TCP_OPCODE_GATHERH = 7 -TCP_OPCODE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_PERFCOUNT_SELECT' -TCP_PERFCOUNT_SELECT__enumvalues = { - 0: 'TCP_PERF_SEL_GATE_EN1', - 1: 'TCP_PERF_SEL_GATE_EN2', - 2: 'TCP_PERF_SEL_TA_REQ', - 3: 'TCP_PERF_SEL_TA_REQ_STATE_READ', - 4: 'TCP_PERF_SEL_TA_REQ_READ', - 5: 'TCP_PERF_SEL_TA_REQ_WRITE', - 6: 'TCP_PERF_SEL_TA_REQ_ATOMIC_WITH_RET', - 7: 'TCP_PERF_SEL_TA_REQ_ATOMIC_WITHOUT_RET', - 8: 'TCP_PERF_SEL_TA_REQ_GL0_INV', - 9: 'TCP_PERF_SEL_REQ', - 10: 'TCP_PERF_SEL_REQ_READ', - 12: 'TCP_PERF_SEL_REQ_READ_HIT_LRU', - 13: 'TCP_PERF_SEL_REQ_READ_MISS_EVICT', - 14: 'TCP_PERF_SEL_REQ_WRITE', - 15: 'TCP_PERF_SEL_REQ_WRITE_MISS_EVICT', - 16: 'TCP_PERF_SEL_REQ_NON_READ', - 17: 'TCP_PERF_SEL_REQ_MISS', - 18: 'TCP_PERF_SEL_REQ_TAGBANK0_SET0', - 19: 'TCP_PERF_SEL_REQ_TAGBANK0_SET1', - 20: 'TCP_PERF_SEL_REQ_TAGBANK1_SET0', - 21: 'TCP_PERF_SEL_REQ_TAGBANK1_SET1', - 22: 'TCP_PERF_SEL_REQ_TAGBANK2_SET0', - 23: 'TCP_PERF_SEL_REQ_TAGBANK2_SET1', - 24: 'TCP_PERF_SEL_REQ_TAGBANK3_SET0', - 25: 'TCP_PERF_SEL_REQ_TAGBANK3_SET1', - 26: 'TCP_PERF_SEL_REQ_MISS_TAGBANK0', - 27: 'TCP_PERF_SEL_REQ_MISS_TAGBANK1', - 28: 'TCP_PERF_SEL_REQ_MISS_TAGBANK2', - 29: 'TCP_PERF_SEL_REQ_MISS_TAGBANK3', - 30: 'TCP_PERF_SEL_GL1_REQ_READ', - 31: 'TCP_PERF_SEL_GL1_REQ_READ_128B', - 32: 'TCP_PERF_SEL_GL1_REQ_READ_64B', - 33: 'TCP_PERF_SEL_GL1_REQ_WRITE', - 34: 'TCP_PERF_SEL_GL1_REQ_ATOMIC_WITH_RET', - 35: 'TCP_PERF_SEL_GL1_REQ_ATOMIC_WITHOUT_RET', - 36: 'TCP_PERF_SEL_GL1_READ_LATENCY', - 37: 'TCP_PERF_SEL_GL1_WRITE_LATENCY', - 38: 'TCP_PERF_SEL_TCP_LATENCY', - 39: 'TCP_PERF_SEL_TCP_TA_REQ_STALL', - 40: 'TCP_PERF_SEL_TA_TCP_REQ_STARVE', - 41: 'TCP_PERF_SEL_DATA_FIFO_STALL', - 42: 'TCP_PERF_SEL_LOD_STALL', - 43: 'TCP_PERF_SEL_POWER_STALL', - 44: 'TCP_PERF_SEL_ALLOC_STALL', - 46: 'TCP_PERF_SEL_READ_TAGCONFLICT_STALL', - 47: 'TCP_PERF_SEL_WRITE_TAGCONFLICT_STALL', - 48: 'TCP_PERF_SEL_ATOMIC_TAGCONFLICT_STALL', - 49: 'TCP_PERF_SEL_LFIFO_STALL', - 50: 'TCP_PERF_SEL_MEM_REQ_FIFO_STALL', - 51: 'TCP_PERF_SEL_GL1_TCP_BACK_PRESSURE', - 52: 'TCP_PERF_SEL_GL1_TCP_RDRET_STALL', - 53: 'TCP_PERF_SEL_GL1_GRANT_READ_STALL', - 54: 'TCP_PERF_SEL_GL1_PENDING_STALL', - 55: 'TCP_PERF_SEL_TD_DATA_CYCLE_STALL', - 56: 'TCP_PERF_SEL_COMP_TEX_LOAD_STALL', - 57: 'TCP_PERF_SEL_READ_DATACONFLICT_STALL', - 58: 'TCP_PERF_SEL_WRITE_DATACONFLICT_STALL', - 59: 'TCP_PERF_SEL_TD_TCP_STALL', - 60: 'TCP_PERF_SEL_TA_REQ_BUFFERNOP', - 61: 'TCP_PERF_SEL_WRITECOMBINE_ENDCLAUSE', - 62: 'TCP_PERF_SEL_TAGFAKE_EOW', - 63: 'TCP_PERF_SEL_REQ_TAG_MATCH_AND_NOT_VALID', - 64: 'TCP_PERF_SEL_BURST_BIN_WRITECOMBINE_0', - 65: 'TCP_PERF_SEL_BURST_BIN_WRITECOMBINE_1to2', - 66: 'TCP_PERF_SEL_BURST_BIN_WRITECOMBINE_3to4', - 67: 'TCP_PERF_SEL_BURST_BIN_WRITECOMBINE_5to8', - 68: 'TCP_PERF_SEL_BURST_BIN_WRITECOMBINE_9to16', - 70: 'TCP_PERF_SEL_BURST_BIN_READHIT_0', - 71: 'TCP_PERF_SEL_BURST_BIN_READHIT_1', - 72: 'TCP_PERF_SEL_BURST_BIN_READHIT_2to4', - 73: 'TCP_PERF_SEL_BURST_BIN_READHIT_5to8', - 74: 'TCP_PERF_SEL_BURST_BIN_READHIT_9to16', - 75: 'TCP_PERF_SEL_BURST_BIN_READHIT_gt16', - 76: 'TCP_PERF_SEL_TA_TC_REQ_EN_SUM', - 77: 'TCP_PERF_SEL_GL1_REQ_LU', - 78: 'TCP_PERF_SEL_REQ_TAG_MATCH_AND_LU_INVALIDATE', -} -TCP_PERF_SEL_GATE_EN1 = 0 -TCP_PERF_SEL_GATE_EN2 = 1 -TCP_PERF_SEL_TA_REQ = 2 -TCP_PERF_SEL_TA_REQ_STATE_READ = 3 -TCP_PERF_SEL_TA_REQ_READ = 4 -TCP_PERF_SEL_TA_REQ_WRITE = 5 -TCP_PERF_SEL_TA_REQ_ATOMIC_WITH_RET = 6 -TCP_PERF_SEL_TA_REQ_ATOMIC_WITHOUT_RET = 7 -TCP_PERF_SEL_TA_REQ_GL0_INV = 8 -TCP_PERF_SEL_REQ = 9 -TCP_PERF_SEL_REQ_READ = 10 -TCP_PERF_SEL_REQ_READ_HIT_LRU = 12 -TCP_PERF_SEL_REQ_READ_MISS_EVICT = 13 -TCP_PERF_SEL_REQ_WRITE = 14 -TCP_PERF_SEL_REQ_WRITE_MISS_EVICT = 15 -TCP_PERF_SEL_REQ_NON_READ = 16 -TCP_PERF_SEL_REQ_MISS = 17 -TCP_PERF_SEL_REQ_TAGBANK0_SET0 = 18 -TCP_PERF_SEL_REQ_TAGBANK0_SET1 = 19 -TCP_PERF_SEL_REQ_TAGBANK1_SET0 = 20 -TCP_PERF_SEL_REQ_TAGBANK1_SET1 = 21 -TCP_PERF_SEL_REQ_TAGBANK2_SET0 = 22 -TCP_PERF_SEL_REQ_TAGBANK2_SET1 = 23 -TCP_PERF_SEL_REQ_TAGBANK3_SET0 = 24 -TCP_PERF_SEL_REQ_TAGBANK3_SET1 = 25 -TCP_PERF_SEL_REQ_MISS_TAGBANK0 = 26 -TCP_PERF_SEL_REQ_MISS_TAGBANK1 = 27 -TCP_PERF_SEL_REQ_MISS_TAGBANK2 = 28 -TCP_PERF_SEL_REQ_MISS_TAGBANK3 = 29 -TCP_PERF_SEL_GL1_REQ_READ = 30 -TCP_PERF_SEL_GL1_REQ_READ_128B = 31 -TCP_PERF_SEL_GL1_REQ_READ_64B = 32 -TCP_PERF_SEL_GL1_REQ_WRITE = 33 -TCP_PERF_SEL_GL1_REQ_ATOMIC_WITH_RET = 34 -TCP_PERF_SEL_GL1_REQ_ATOMIC_WITHOUT_RET = 35 -TCP_PERF_SEL_GL1_READ_LATENCY = 36 -TCP_PERF_SEL_GL1_WRITE_LATENCY = 37 -TCP_PERF_SEL_TCP_LATENCY = 38 -TCP_PERF_SEL_TCP_TA_REQ_STALL = 39 -TCP_PERF_SEL_TA_TCP_REQ_STARVE = 40 -TCP_PERF_SEL_DATA_FIFO_STALL = 41 -TCP_PERF_SEL_LOD_STALL = 42 -TCP_PERF_SEL_POWER_STALL = 43 -TCP_PERF_SEL_ALLOC_STALL = 44 -TCP_PERF_SEL_READ_TAGCONFLICT_STALL = 46 -TCP_PERF_SEL_WRITE_TAGCONFLICT_STALL = 47 -TCP_PERF_SEL_ATOMIC_TAGCONFLICT_STALL = 48 -TCP_PERF_SEL_LFIFO_STALL = 49 -TCP_PERF_SEL_MEM_REQ_FIFO_STALL = 50 -TCP_PERF_SEL_GL1_TCP_BACK_PRESSURE = 51 -TCP_PERF_SEL_GL1_TCP_RDRET_STALL = 52 -TCP_PERF_SEL_GL1_GRANT_READ_STALL = 53 -TCP_PERF_SEL_GL1_PENDING_STALL = 54 -TCP_PERF_SEL_TD_DATA_CYCLE_STALL = 55 -TCP_PERF_SEL_COMP_TEX_LOAD_STALL = 56 -TCP_PERF_SEL_READ_DATACONFLICT_STALL = 57 -TCP_PERF_SEL_WRITE_DATACONFLICT_STALL = 58 -TCP_PERF_SEL_TD_TCP_STALL = 59 -TCP_PERF_SEL_TA_REQ_BUFFERNOP = 60 -TCP_PERF_SEL_WRITECOMBINE_ENDCLAUSE = 61 -TCP_PERF_SEL_TAGFAKE_EOW = 62 -TCP_PERF_SEL_REQ_TAG_MATCH_AND_NOT_VALID = 63 -TCP_PERF_SEL_BURST_BIN_WRITECOMBINE_0 = 64 -TCP_PERF_SEL_BURST_BIN_WRITECOMBINE_1to2 = 65 -TCP_PERF_SEL_BURST_BIN_WRITECOMBINE_3to4 = 66 -TCP_PERF_SEL_BURST_BIN_WRITECOMBINE_5to8 = 67 -TCP_PERF_SEL_BURST_BIN_WRITECOMBINE_9to16 = 68 -TCP_PERF_SEL_BURST_BIN_READHIT_0 = 70 -TCP_PERF_SEL_BURST_BIN_READHIT_1 = 71 -TCP_PERF_SEL_BURST_BIN_READHIT_2to4 = 72 -TCP_PERF_SEL_BURST_BIN_READHIT_5to8 = 73 -TCP_PERF_SEL_BURST_BIN_READHIT_9to16 = 74 -TCP_PERF_SEL_BURST_BIN_READHIT_gt16 = 75 -TCP_PERF_SEL_TA_TC_REQ_EN_SUM = 76 -TCP_PERF_SEL_GL1_REQ_LU = 77 -TCP_PERF_SEL_REQ_TAG_MATCH_AND_LU_INVALIDATE = 78 -TCP_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_WATCH_MODES' -TCP_WATCH_MODES__enumvalues = { - 0: 'TCP_WATCH_MODE_READ', - 1: 'TCP_WATCH_MODE_NONREAD', - 2: 'TCP_WATCH_MODE_ATOMIC', - 3: 'TCP_WATCH_MODE_ALL', -} -TCP_WATCH_MODE_READ = 0 -TCP_WATCH_MODE_NONREAD = 1 -TCP_WATCH_MODE_ATOMIC = 2 -TCP_WATCH_MODE_ALL = 3 -TCP_WATCH_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_WRITE_COMPRESSION_DISABLE' -TCP_WRITE_COMPRESSION_DISABLE__enumvalues = { - 0: 'TCP_WRITE_COMPRESSION_DISABLE_DIS', - 1: 'TCP_WRITE_COMPRESSION_DISABLE_EN', -} -TCP_WRITE_COMPRESSION_DISABLE_DIS = 0 -TCP_WRITE_COMPRESSION_DISABLE_EN = 1 -TCP_WRITE_COMPRESSION_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'TD_PERFCOUNT_SEL' -TD_PERFCOUNT_SEL__enumvalues = { - 0: 'TD_PERF_SEL_none', - 1: 'TD_PERF_SEL_td_busy', - 2: 'TD_PERF_SEL_input_busy', - 3: 'TD_PERF_SEL_sampler_lerp_busy', - 4: 'TD_PERF_SEL_sampler_out_busy', - 5: 'TD_PERF_SEL_nofilter_busy', - 7: 'TD_PERF_SEL_sampler_core_sclk_en', - 8: 'TD_PERF_SEL_sampler_preformatter_sclk_en', - 9: 'TD_PERF_SEL_sampler_bilerp_sclk_en', - 10: 'TD_PERF_SEL_sampler_bypass_sclk_en', - 11: 'TD_PERF_SEL_sampler_minmax_sclk_en', - 12: 'TD_PERF_SEL_sampler_accum_sclk_en', - 13: 'TD_PERF_SEL_sampler_format_flt_sclk_en', - 14: 'TD_PERF_SEL_sampler_format_fxdpt_sclk_en', - 15: 'TD_PERF_SEL_sampler_out_sclk_en', - 16: 'TD_PERF_SEL_nofilter_sclk_en', - 17: 'TD_PERF_SEL_nofilter_d32_sclk_en', - 18: 'TD_PERF_SEL_nofilter_d16_sclk_en', - 26: 'TD_PERF_SEL_sampler_sclk_on_nofilter_sclk_off', - 27: 'TD_PERF_SEL_nofilter_sclk_on_sampler_sclk_off', - 28: 'TD_PERF_SEL_all_pipes_sclk_on_at_same_time', - 32: 'TD_PERF_SEL_core_state_ram_max_cnt', - 33: 'TD_PERF_SEL_core_state_rams_read', - 34: 'TD_PERF_SEL_weight_data_rams_read', - 35: 'TD_PERF_SEL_reference_data_rams_read', - 36: 'TD_PERF_SEL_tc_td_ram_fifo_full', - 37: 'TD_PERF_SEL_tc_td_ram_fifo_max_cnt', - 38: 'TD_PERF_SEL_tc_td_data_fifo_full', - 39: 'TD_PERF_SEL_input_state_fifo_full', - 40: 'TD_PERF_SEL_ta_data_stall', - 41: 'TD_PERF_SEL_tc_data_stall', - 42: 'TD_PERF_SEL_tc_ram_stall', - 43: 'TD_PERF_SEL_lds_stall', - 44: 'TD_PERF_SEL_sampler_pkr_full', - 45: 'TD_PERF_SEL_sampler_pkr_full_due_to_arb', - 46: 'TD_PERF_SEL_nofilter_pkr_full', - 47: 'TD_PERF_SEL_nofilter_pkr_full_due_to_arb', - 50: 'TD_PERF_SEL_gather4_instr', - 51: 'TD_PERF_SEL_gather4h_instr', - 52: 'TD_PERF_SEL_getlod_instr', - 54: 'TD_PERF_SEL_sample_instr', - 55: 'TD_PERF_SEL_sample_c_instr', - 56: 'TD_PERF_SEL_load_instr', - 57: 'TD_PERF_SEL_ps_load_instr', - 58: 'TD_PERF_SEL_write_ack_instr', - 59: 'TD_PERF_SEL_d16_en_instr', - 60: 'TD_PERF_SEL_bypassLerp_instr', - 61: 'TD_PERF_SEL_min_max_filter_instr', - 62: 'TD_PERF_SEL_one_comp_return_instr', - 63: 'TD_PERF_SEL_two_comp_return_instr', - 64: 'TD_PERF_SEL_three_comp_return_instr', - 65: 'TD_PERF_SEL_four_comp_return_instr', - 66: 'TD_PERF_SEL_user_defined_border', - 67: 'TD_PERF_SEL_white_border', - 68: 'TD_PERF_SEL_opaque_black_border', - 69: 'TD_PERF_SEL_lod_warn_from_ta', - 70: 'TD_PERF_SEL_instruction_dest_is_lds', - 71: 'TD_PERF_SEL_td_cycling_of_nofilter_instr_2cycles', - 72: 'TD_PERF_SEL_td_cycling_of_nofilter_instr_4cycles', - 73: 'TD_PERF_SEL_tc_cycling_of_nofilter_instr_2cycles', - 74: 'TD_PERF_SEL_tc_cycling_of_nofilter_instr_4cycles', - 75: 'TD_PERF_SEL_out_of_order_instr', - 76: 'TD_PERF_SEL_total_num_instr', - 77: 'TD_PERF_SEL_total_num_instr_with_perf_wdw', - 78: 'TD_PERF_SEL_total_num_sampler_instr', - 79: 'TD_PERF_SEL_total_num_sampler_instr_with_perf_wdw', - 80: 'TD_PERF_SEL_total_num_nofilter_instr', - 81: 'TD_PERF_SEL_total_num_nofilter_instr_with_perf_wdw', - 84: 'TD_PERF_SEL_mixmode_instr', - 85: 'TD_PERF_SEL_mixmode_resource', - 86: 'TD_PERF_SEL_status_packet', - 89: 'TD_PERF_SEL_done_scoreboard_max_stored_cnt', - 90: 'TD_PERF_SEL_done_scoreboard_max_waiting_cnt', - 91: 'TD_PERF_SEL_done_scoreboard_not_empty', - 92: 'TD_PERF_SEL_done_scoreboard_is_full', - 93: 'TD_PERF_SEL_done_scoreboard_bp_due_to_ooo', - 94: 'TD_PERF_SEL_done_scoreboard_bp_due_to_lds', - 95: 'TD_PERF_SEL_nofilter_formatters_turned_on', - 96: 'TD_PERF_SEL_nofilter_insert_extra_comps', - 97: 'TD_PERF_SEL_nofilter_popcount_dmask_gt_num_comp_of_fmt', - 98: 'TD_PERF_SEL_nofilter_popcount_dmask_lt_num_comp_of_fmt', - 99: 'TD_PERF_SEL_msaa_load_instr', - 100: 'TD_PERF_SEL_blend_prt_with_prt_default_0', - 102: 'TD_PERF_SEL_resmap_instr', - 103: 'TD_PERF_SEL_prt_ack_instr', - 104: 'TD_PERF_SEL_resmap_with_volume_filtering', - 105: 'TD_PERF_SEL_resmap_with_aniso_filtering', - 106: 'TD_PERF_SEL_resmap_with_no_more_filtering', - 107: 'TD_PERF_SEL_resmap_with_cubemap_corner', - 131: 'TD_PERF_SEL_burst_bin_preempting_nofilter_1', - 132: 'TD_PERF_SEL_burst_bin_preempting_nofilter_2to4', - 133: 'TD_PERF_SEL_burst_bin_preempting_nofilter_5to7', - 134: 'TD_PERF_SEL_burst_bin_preempting_nofilter_8to16', - 135: 'TD_PERF_SEL_burst_bin_preempting_nofilter_gt16', - 136: 'TD_PERF_SEL_burst_bin_sampler_1', - 137: 'TD_PERF_SEL_burst_bin_sampler_2to8', - 138: 'TD_PERF_SEL_burst_bin_sampler_9to16', - 139: 'TD_PERF_SEL_burst_bin_sampler_gt16', - 140: 'TD_PERF_SEL_burst_bin_gather_1', - 141: 'TD_PERF_SEL_burst_bin_gather_2to8', - 142: 'TD_PERF_SEL_burst_bin_gather_9to16', - 143: 'TD_PERF_SEL_burst_bin_gather_gt16', - 144: 'TD_PERF_SEL_burst_bin_nofilter_1', - 145: 'TD_PERF_SEL_burst_bin_nofilter_2to4', - 146: 'TD_PERF_SEL_burst_bin_nofilter_5to7', - 147: 'TD_PERF_SEL_burst_bin_nofilter_8to16', - 148: 'TD_PERF_SEL_burst_bin_nofilter_gt16', - 170: 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_0', - 171: 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_1', - 172: 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_2to31', - 173: 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_32to127', - 174: 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_128to511', - 175: 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_gt511', - 176: 'TD_PERF_SEL_bubble_bin_lds_stall_1to3', - 177: 'TD_PERF_SEL_bubble_bin_lds_stall_4to7', - 178: 'TD_PERF_SEL_bubble_bin_lds_stall_8to15', - 179: 'TD_PERF_SEL_bubble_bin_lds_stall_gt15', - 180: 'TD_PERF_SEL_preempting_nofilter_max_cnt', - 181: 'TD_PERF_SEL_sampler_lerp0_active', - 182: 'TD_PERF_SEL_sampler_lerp1_active', - 183: 'TD_PERF_SEL_sampler_lerp2_active', - 184: 'TD_PERF_SEL_sampler_lerp3_active', - 185: 'TD_PERF_SEL_sampler_lerp4_active', - 186: 'TD_PERF_SEL_sampler_lerp5_active', - 187: 'TD_PERF_SEL_sampler_lerp6_active', - 188: 'TD_PERF_SEL_sampler_lerp7_active', - 189: 'TD_PERF_SEL_nofilter_total_num_comps_to_lds', - 190: 'TD_PERF_SEL_nofilter_byte_cycling_4cycles', - 191: 'TD_PERF_SEL_nofilter_byte_cycling_8cycles', - 192: 'TD_PERF_SEL_nofilter_byte_cycling_16cycles', - 193: 'TD_PERF_SEL_nofilter_dword_cycling_2cycles', - 194: 'TD_PERF_SEL_nofilter_dword_cycling_4cycles', - 195: 'TD_PERF_SEL_input_bp_due_to_done_scoreboard_full', - 200: 'TD_PERF_SEL_store_preempts_a_load', - 201: 'TD_PERF_SEL_sample_2x_instr', - 202: 'TD_PERF_SEL_gather4_2x_instr', - 203: 'TD_PERF_SEL_gather4h_2x_instr', - 204: 'TD_PERF_SEL_getlod_2x_instr', - 205: 'TD_PERF_SEL_resmap_2x_instr', - 206: 'TD_PERF_SEL_2x_sampler_op_with_1_unlit_quad', - 207: 'TD_PERF_SEL_2x_sampler_op_with_both_quads_unlit', - 208: 'TD_PERF_SEL_tri_proc_node_override_slot0', - 209: 'TD_PERF_SEL_tri_run_intersect_ahs_slot0', - 210: 'TD_PERF_SEL_tri_run_ahs_slot0', - 231: 'TD_PERF_SEL_tri_proc_node_override_slot1', - 232: 'TD_PERF_SEL_tri_run_intersect_ahs_slot1', - 233: 'TD_PERF_SEL_tri_run_ahs_slot1', - 241: 'TD_PERF_SEL_instance_mask_culled', - 242: 'TD_PERF_SEL_box_opaque_culled', - 243: 'TD_PERF_SEL_box_non_opaque_culled', - 244: 'TD_PERF_SEL_box_with_triangle_children_only_culled', - 245: 'TD_PERF_SEL_box_with_procedural_children_only_culled', - 246: 'TD_PERF_SEL_triangle_opaque_culled', - 247: 'TD_PERF_SEL_triangle_non_opaque_culled', - 248: 'TD_PERF_SEL_triangle_front_facing_culled', - 249: 'TD_PERF_SEL_triangle_back_facing_culled', -} -TD_PERF_SEL_none = 0 -TD_PERF_SEL_td_busy = 1 -TD_PERF_SEL_input_busy = 2 -TD_PERF_SEL_sampler_lerp_busy = 3 -TD_PERF_SEL_sampler_out_busy = 4 -TD_PERF_SEL_nofilter_busy = 5 -TD_PERF_SEL_sampler_core_sclk_en = 7 -TD_PERF_SEL_sampler_preformatter_sclk_en = 8 -TD_PERF_SEL_sampler_bilerp_sclk_en = 9 -TD_PERF_SEL_sampler_bypass_sclk_en = 10 -TD_PERF_SEL_sampler_minmax_sclk_en = 11 -TD_PERF_SEL_sampler_accum_sclk_en = 12 -TD_PERF_SEL_sampler_format_flt_sclk_en = 13 -TD_PERF_SEL_sampler_format_fxdpt_sclk_en = 14 -TD_PERF_SEL_sampler_out_sclk_en = 15 -TD_PERF_SEL_nofilter_sclk_en = 16 -TD_PERF_SEL_nofilter_d32_sclk_en = 17 -TD_PERF_SEL_nofilter_d16_sclk_en = 18 -TD_PERF_SEL_sampler_sclk_on_nofilter_sclk_off = 26 -TD_PERF_SEL_nofilter_sclk_on_sampler_sclk_off = 27 -TD_PERF_SEL_all_pipes_sclk_on_at_same_time = 28 -TD_PERF_SEL_core_state_ram_max_cnt = 32 -TD_PERF_SEL_core_state_rams_read = 33 -TD_PERF_SEL_weight_data_rams_read = 34 -TD_PERF_SEL_reference_data_rams_read = 35 -TD_PERF_SEL_tc_td_ram_fifo_full = 36 -TD_PERF_SEL_tc_td_ram_fifo_max_cnt = 37 -TD_PERF_SEL_tc_td_data_fifo_full = 38 -TD_PERF_SEL_input_state_fifo_full = 39 -TD_PERF_SEL_ta_data_stall = 40 -TD_PERF_SEL_tc_data_stall = 41 -TD_PERF_SEL_tc_ram_stall = 42 -TD_PERF_SEL_lds_stall = 43 -TD_PERF_SEL_sampler_pkr_full = 44 -TD_PERF_SEL_sampler_pkr_full_due_to_arb = 45 -TD_PERF_SEL_nofilter_pkr_full = 46 -TD_PERF_SEL_nofilter_pkr_full_due_to_arb = 47 -TD_PERF_SEL_gather4_instr = 50 -TD_PERF_SEL_gather4h_instr = 51 -TD_PERF_SEL_getlod_instr = 52 -TD_PERF_SEL_sample_instr = 54 -TD_PERF_SEL_sample_c_instr = 55 -TD_PERF_SEL_load_instr = 56 -TD_PERF_SEL_ps_load_instr = 57 -TD_PERF_SEL_write_ack_instr = 58 -TD_PERF_SEL_d16_en_instr = 59 -TD_PERF_SEL_bypassLerp_instr = 60 -TD_PERF_SEL_min_max_filter_instr = 61 -TD_PERF_SEL_one_comp_return_instr = 62 -TD_PERF_SEL_two_comp_return_instr = 63 -TD_PERF_SEL_three_comp_return_instr = 64 -TD_PERF_SEL_four_comp_return_instr = 65 -TD_PERF_SEL_user_defined_border = 66 -TD_PERF_SEL_white_border = 67 -TD_PERF_SEL_opaque_black_border = 68 -TD_PERF_SEL_lod_warn_from_ta = 69 -TD_PERF_SEL_instruction_dest_is_lds = 70 -TD_PERF_SEL_td_cycling_of_nofilter_instr_2cycles = 71 -TD_PERF_SEL_td_cycling_of_nofilter_instr_4cycles = 72 -TD_PERF_SEL_tc_cycling_of_nofilter_instr_2cycles = 73 -TD_PERF_SEL_tc_cycling_of_nofilter_instr_4cycles = 74 -TD_PERF_SEL_out_of_order_instr = 75 -TD_PERF_SEL_total_num_instr = 76 -TD_PERF_SEL_total_num_instr_with_perf_wdw = 77 -TD_PERF_SEL_total_num_sampler_instr = 78 -TD_PERF_SEL_total_num_sampler_instr_with_perf_wdw = 79 -TD_PERF_SEL_total_num_nofilter_instr = 80 -TD_PERF_SEL_total_num_nofilter_instr_with_perf_wdw = 81 -TD_PERF_SEL_mixmode_instr = 84 -TD_PERF_SEL_mixmode_resource = 85 -TD_PERF_SEL_status_packet = 86 -TD_PERF_SEL_done_scoreboard_max_stored_cnt = 89 -TD_PERF_SEL_done_scoreboard_max_waiting_cnt = 90 -TD_PERF_SEL_done_scoreboard_not_empty = 91 -TD_PERF_SEL_done_scoreboard_is_full = 92 -TD_PERF_SEL_done_scoreboard_bp_due_to_ooo = 93 -TD_PERF_SEL_done_scoreboard_bp_due_to_lds = 94 -TD_PERF_SEL_nofilter_formatters_turned_on = 95 -TD_PERF_SEL_nofilter_insert_extra_comps = 96 -TD_PERF_SEL_nofilter_popcount_dmask_gt_num_comp_of_fmt = 97 -TD_PERF_SEL_nofilter_popcount_dmask_lt_num_comp_of_fmt = 98 -TD_PERF_SEL_msaa_load_instr = 99 -TD_PERF_SEL_blend_prt_with_prt_default_0 = 100 -TD_PERF_SEL_resmap_instr = 102 -TD_PERF_SEL_prt_ack_instr = 103 -TD_PERF_SEL_resmap_with_volume_filtering = 104 -TD_PERF_SEL_resmap_with_aniso_filtering = 105 -TD_PERF_SEL_resmap_with_no_more_filtering = 106 -TD_PERF_SEL_resmap_with_cubemap_corner = 107 -TD_PERF_SEL_burst_bin_preempting_nofilter_1 = 131 -TD_PERF_SEL_burst_bin_preempting_nofilter_2to4 = 132 -TD_PERF_SEL_burst_bin_preempting_nofilter_5to7 = 133 -TD_PERF_SEL_burst_bin_preempting_nofilter_8to16 = 134 -TD_PERF_SEL_burst_bin_preempting_nofilter_gt16 = 135 -TD_PERF_SEL_burst_bin_sampler_1 = 136 -TD_PERF_SEL_burst_bin_sampler_2to8 = 137 -TD_PERF_SEL_burst_bin_sampler_9to16 = 138 -TD_PERF_SEL_burst_bin_sampler_gt16 = 139 -TD_PERF_SEL_burst_bin_gather_1 = 140 -TD_PERF_SEL_burst_bin_gather_2to8 = 141 -TD_PERF_SEL_burst_bin_gather_9to16 = 142 -TD_PERF_SEL_burst_bin_gather_gt16 = 143 -TD_PERF_SEL_burst_bin_nofilter_1 = 144 -TD_PERF_SEL_burst_bin_nofilter_2to4 = 145 -TD_PERF_SEL_burst_bin_nofilter_5to7 = 146 -TD_PERF_SEL_burst_bin_nofilter_8to16 = 147 -TD_PERF_SEL_burst_bin_nofilter_gt16 = 148 -TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_0 = 170 -TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_1 = 171 -TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_2to31 = 172 -TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_32to127 = 173 -TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_128to511 = 174 -TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_gt511 = 175 -TD_PERF_SEL_bubble_bin_lds_stall_1to3 = 176 -TD_PERF_SEL_bubble_bin_lds_stall_4to7 = 177 -TD_PERF_SEL_bubble_bin_lds_stall_8to15 = 178 -TD_PERF_SEL_bubble_bin_lds_stall_gt15 = 179 -TD_PERF_SEL_preempting_nofilter_max_cnt = 180 -TD_PERF_SEL_sampler_lerp0_active = 181 -TD_PERF_SEL_sampler_lerp1_active = 182 -TD_PERF_SEL_sampler_lerp2_active = 183 -TD_PERF_SEL_sampler_lerp3_active = 184 -TD_PERF_SEL_sampler_lerp4_active = 185 -TD_PERF_SEL_sampler_lerp5_active = 186 -TD_PERF_SEL_sampler_lerp6_active = 187 -TD_PERF_SEL_sampler_lerp7_active = 188 -TD_PERF_SEL_nofilter_total_num_comps_to_lds = 189 -TD_PERF_SEL_nofilter_byte_cycling_4cycles = 190 -TD_PERF_SEL_nofilter_byte_cycling_8cycles = 191 -TD_PERF_SEL_nofilter_byte_cycling_16cycles = 192 -TD_PERF_SEL_nofilter_dword_cycling_2cycles = 193 -TD_PERF_SEL_nofilter_dword_cycling_4cycles = 194 -TD_PERF_SEL_input_bp_due_to_done_scoreboard_full = 195 -TD_PERF_SEL_store_preempts_a_load = 200 -TD_PERF_SEL_sample_2x_instr = 201 -TD_PERF_SEL_gather4_2x_instr = 202 -TD_PERF_SEL_gather4h_2x_instr = 203 -TD_PERF_SEL_getlod_2x_instr = 204 -TD_PERF_SEL_resmap_2x_instr = 205 -TD_PERF_SEL_2x_sampler_op_with_1_unlit_quad = 206 -TD_PERF_SEL_2x_sampler_op_with_both_quads_unlit = 207 -TD_PERF_SEL_tri_proc_node_override_slot0 = 208 -TD_PERF_SEL_tri_run_intersect_ahs_slot0 = 209 -TD_PERF_SEL_tri_run_ahs_slot0 = 210 -TD_PERF_SEL_tri_proc_node_override_slot1 = 231 -TD_PERF_SEL_tri_run_intersect_ahs_slot1 = 232 -TD_PERF_SEL_tri_run_ahs_slot1 = 233 -TD_PERF_SEL_instance_mask_culled = 241 -TD_PERF_SEL_box_opaque_culled = 242 -TD_PERF_SEL_box_non_opaque_culled = 243 -TD_PERF_SEL_box_with_triangle_children_only_culled = 244 -TD_PERF_SEL_box_with_procedural_children_only_culled = 245 -TD_PERF_SEL_triangle_opaque_culled = 246 -TD_PERF_SEL_triangle_non_opaque_culled = 247 -TD_PERF_SEL_triangle_front_facing_culled = 248 -TD_PERF_SEL_triangle_back_facing_culled = 249 -TD_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GL2A_PERF_SEL' -GL2A_PERF_SEL__enumvalues = { - 0: 'GL2A_PERF_SEL_NONE', - 1: 'GL2A_PERF_SEL_CYCLE', - 2: 'GL2A_PERF_SEL_BUSY', - 3: 'GL2A_PERF_SEL_REQ_GL2C0', - 4: 'GL2A_PERF_SEL_REQ_GL2C1', - 5: 'GL2A_PERF_SEL_REQ_GL2C2', - 6: 'GL2A_PERF_SEL_REQ_GL2C3', - 7: 'GL2A_PERF_SEL_REQ_GL2C4', - 8: 'GL2A_PERF_SEL_REQ_GL2C5', - 9: 'GL2A_PERF_SEL_REQ_GL2C6', - 10: 'GL2A_PERF_SEL_REQ_GL2C7', - 19: 'GL2A_PERF_SEL_REQ_BURST_GL2C0', - 20: 'GL2A_PERF_SEL_REQ_BURST_GL2C1', - 21: 'GL2A_PERF_SEL_REQ_BURST_GL2C2', - 22: 'GL2A_PERF_SEL_REQ_BURST_GL2C3', - 23: 'GL2A_PERF_SEL_REQ_BURST_GL2C4', - 24: 'GL2A_PERF_SEL_REQ_BURST_GL2C5', - 25: 'GL2A_PERF_SEL_REQ_BURST_GL2C6', - 26: 'GL2A_PERF_SEL_REQ_BURST_GL2C7', - 27: 'GL2A_PERF_SEL_REQ_STALL_GL2C0', - 28: 'GL2A_PERF_SEL_REQ_STALL_GL2C1', - 29: 'GL2A_PERF_SEL_REQ_STALL_GL2C2', - 30: 'GL2A_PERF_SEL_REQ_STALL_GL2C3', - 31: 'GL2A_PERF_SEL_REQ_STALL_GL2C4', - 32: 'GL2A_PERF_SEL_REQ_STALL_GL2C5', - 33: 'GL2A_PERF_SEL_REQ_STALL_GL2C6', - 34: 'GL2A_PERF_SEL_REQ_STALL_GL2C7', - 35: 'GL2A_PERF_SEL_RTN_STALL_GL2C0', - 36: 'GL2A_PERF_SEL_RTN_STALL_GL2C1', - 37: 'GL2A_PERF_SEL_RTN_STALL_GL2C2', - 38: 'GL2A_PERF_SEL_RTN_STALL_GL2C3', - 39: 'GL2A_PERF_SEL_RTN_STALL_GL2C4', - 40: 'GL2A_PERF_SEL_RTN_STALL_GL2C5', - 41: 'GL2A_PERF_SEL_RTN_STALL_GL2C6', - 42: 'GL2A_PERF_SEL_RTN_STALL_GL2C7', - 43: 'GL2A_PERF_SEL_RTN_CLIENT0', - 44: 'GL2A_PERF_SEL_RTN_CLIENT1', - 45: 'GL2A_PERF_SEL_RTN_CLIENT2', - 46: 'GL2A_PERF_SEL_RTN_CLIENT3', - 47: 'GL2A_PERF_SEL_RTN_CLIENT4', - 48: 'GL2A_PERF_SEL_RTN_CLIENT5', - 49: 'GL2A_PERF_SEL_RTN_CLIENT6', - 50: 'GL2A_PERF_SEL_RTN_CLIENT7', - 51: 'GL2A_PERF_SEL_RTN_CLIENT8', - 52: 'GL2A_PERF_SEL_RTN_CLIENT9', - 53: 'GL2A_PERF_SEL_RTN_CLIENT10', - 54: 'GL2A_PERF_SEL_RTN_CLIENT11', - 55: 'GL2A_PERF_SEL_RTN_CLIENT12', - 56: 'GL2A_PERF_SEL_RTN_CLIENT13', - 57: 'GL2A_PERF_SEL_RTN_CLIENT14', - 58: 'GL2A_PERF_SEL_RTN_CLIENT15', - 59: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT0', - 60: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT1', - 61: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT2', - 62: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT3', - 63: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT4', - 64: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT5', - 65: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT6', - 66: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT7', - 67: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT8', - 68: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT9', - 69: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT10', - 70: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT11', - 71: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT12', - 72: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT13', - 73: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT14', - 74: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT15', - 75: 'GL2A_PERF_SEL_REQ_BURST_CLIENT0', - 76: 'GL2A_PERF_SEL_REQ_BURST_CLIENT1', - 77: 'GL2A_PERF_SEL_REQ_BURST_CLIENT2', - 78: 'GL2A_PERF_SEL_REQ_BURST_CLIENT3', - 79: 'GL2A_PERF_SEL_REQ_BURST_CLIENT4', - 80: 'GL2A_PERF_SEL_REQ_BURST_CLIENT5', - 81: 'GL2A_PERF_SEL_REQ_BURST_CLIENT6', - 82: 'GL2A_PERF_SEL_REQ_BURST_CLIENT7', - 83: 'GL2A_PERF_SEL_REQ_BURST_CLIENT8', - 84: 'GL2A_PERF_SEL_REQ_BURST_CLIENT9', - 85: 'GL2A_PERF_SEL_REQ_BURST_CLIENT10', - 86: 'GL2A_PERF_SEL_REQ_BURST_CLIENT11', - 87: 'GL2A_PERF_SEL_REQ_BURST_CLIENT12', - 88: 'GL2A_PERF_SEL_REQ_BURST_CLIENT13', - 89: 'GL2A_PERF_SEL_REQ_BURST_CLIENT14', - 90: 'GL2A_PERF_SEL_REQ_BURST_CLIENT15', - 91: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT0', - 92: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT1', - 93: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT2', - 94: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT3', - 95: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT4', - 96: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT5', - 97: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT6', - 98: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT7', - 99: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT8', - 100: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT9', - 101: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT10', - 103: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT11', - 104: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT12', - 105: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT13', - 106: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT14', - 107: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT15', -} -GL2A_PERF_SEL_NONE = 0 -GL2A_PERF_SEL_CYCLE = 1 -GL2A_PERF_SEL_BUSY = 2 -GL2A_PERF_SEL_REQ_GL2C0 = 3 -GL2A_PERF_SEL_REQ_GL2C1 = 4 -GL2A_PERF_SEL_REQ_GL2C2 = 5 -GL2A_PERF_SEL_REQ_GL2C3 = 6 -GL2A_PERF_SEL_REQ_GL2C4 = 7 -GL2A_PERF_SEL_REQ_GL2C5 = 8 -GL2A_PERF_SEL_REQ_GL2C6 = 9 -GL2A_PERF_SEL_REQ_GL2C7 = 10 -GL2A_PERF_SEL_REQ_BURST_GL2C0 = 19 -GL2A_PERF_SEL_REQ_BURST_GL2C1 = 20 -GL2A_PERF_SEL_REQ_BURST_GL2C2 = 21 -GL2A_PERF_SEL_REQ_BURST_GL2C3 = 22 -GL2A_PERF_SEL_REQ_BURST_GL2C4 = 23 -GL2A_PERF_SEL_REQ_BURST_GL2C5 = 24 -GL2A_PERF_SEL_REQ_BURST_GL2C6 = 25 -GL2A_PERF_SEL_REQ_BURST_GL2C7 = 26 -GL2A_PERF_SEL_REQ_STALL_GL2C0 = 27 -GL2A_PERF_SEL_REQ_STALL_GL2C1 = 28 -GL2A_PERF_SEL_REQ_STALL_GL2C2 = 29 -GL2A_PERF_SEL_REQ_STALL_GL2C3 = 30 -GL2A_PERF_SEL_REQ_STALL_GL2C4 = 31 -GL2A_PERF_SEL_REQ_STALL_GL2C5 = 32 -GL2A_PERF_SEL_REQ_STALL_GL2C6 = 33 -GL2A_PERF_SEL_REQ_STALL_GL2C7 = 34 -GL2A_PERF_SEL_RTN_STALL_GL2C0 = 35 -GL2A_PERF_SEL_RTN_STALL_GL2C1 = 36 -GL2A_PERF_SEL_RTN_STALL_GL2C2 = 37 -GL2A_PERF_SEL_RTN_STALL_GL2C3 = 38 -GL2A_PERF_SEL_RTN_STALL_GL2C4 = 39 -GL2A_PERF_SEL_RTN_STALL_GL2C5 = 40 -GL2A_PERF_SEL_RTN_STALL_GL2C6 = 41 -GL2A_PERF_SEL_RTN_STALL_GL2C7 = 42 -GL2A_PERF_SEL_RTN_CLIENT0 = 43 -GL2A_PERF_SEL_RTN_CLIENT1 = 44 -GL2A_PERF_SEL_RTN_CLIENT2 = 45 -GL2A_PERF_SEL_RTN_CLIENT3 = 46 -GL2A_PERF_SEL_RTN_CLIENT4 = 47 -GL2A_PERF_SEL_RTN_CLIENT5 = 48 -GL2A_PERF_SEL_RTN_CLIENT6 = 49 -GL2A_PERF_SEL_RTN_CLIENT7 = 50 -GL2A_PERF_SEL_RTN_CLIENT8 = 51 -GL2A_PERF_SEL_RTN_CLIENT9 = 52 -GL2A_PERF_SEL_RTN_CLIENT10 = 53 -GL2A_PERF_SEL_RTN_CLIENT11 = 54 -GL2A_PERF_SEL_RTN_CLIENT12 = 55 -GL2A_PERF_SEL_RTN_CLIENT13 = 56 -GL2A_PERF_SEL_RTN_CLIENT14 = 57 -GL2A_PERF_SEL_RTN_CLIENT15 = 58 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT0 = 59 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT1 = 60 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT2 = 61 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT3 = 62 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT4 = 63 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT5 = 64 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT6 = 65 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT7 = 66 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT8 = 67 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT9 = 68 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT10 = 69 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT11 = 70 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT12 = 71 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT13 = 72 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT14 = 73 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT15 = 74 -GL2A_PERF_SEL_REQ_BURST_CLIENT0 = 75 -GL2A_PERF_SEL_REQ_BURST_CLIENT1 = 76 -GL2A_PERF_SEL_REQ_BURST_CLIENT2 = 77 -GL2A_PERF_SEL_REQ_BURST_CLIENT3 = 78 -GL2A_PERF_SEL_REQ_BURST_CLIENT4 = 79 -GL2A_PERF_SEL_REQ_BURST_CLIENT5 = 80 -GL2A_PERF_SEL_REQ_BURST_CLIENT6 = 81 -GL2A_PERF_SEL_REQ_BURST_CLIENT7 = 82 -GL2A_PERF_SEL_REQ_BURST_CLIENT8 = 83 -GL2A_PERF_SEL_REQ_BURST_CLIENT9 = 84 -GL2A_PERF_SEL_REQ_BURST_CLIENT10 = 85 -GL2A_PERF_SEL_REQ_BURST_CLIENT11 = 86 -GL2A_PERF_SEL_REQ_BURST_CLIENT12 = 87 -GL2A_PERF_SEL_REQ_BURST_CLIENT13 = 88 -GL2A_PERF_SEL_REQ_BURST_CLIENT14 = 89 -GL2A_PERF_SEL_REQ_BURST_CLIENT15 = 90 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT0 = 91 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT1 = 92 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT2 = 93 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT3 = 94 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT4 = 95 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT5 = 96 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT6 = 97 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT7 = 98 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT8 = 99 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT9 = 100 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT10 = 101 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT11 = 103 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT12 = 104 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT13 = 105 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT14 = 106 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT15 = 107 -GL2A_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GL2C_PERF_SEL' -GL2C_PERF_SEL__enumvalues = { - 0: 'GL2C_PERF_SEL_NONE', - 1: 'GL2C_PERF_SEL_CYCLE', - 2: 'GL2C_PERF_SEL_BUSY', - 3: 'GL2C_PERF_SEL_REQ', - 4: 'GL2C_PERF_SEL_VOL_REQ', - 5: 'GL2C_PERF_SEL_HIGH_PRIORITY_REQ', - 6: 'GL2C_PERF_SEL_READ', - 7: 'GL2C_PERF_SEL_WRITE', - 8: 'GL2C_PERF_SEL_ATOMIC', - 9: 'GL2C_PERF_SEL_NOP_ACK', - 10: 'GL2C_PERF_SEL_NOP_RTN0', - 11: 'GL2C_PERF_SEL_COMPRESSED_READ_REQ', - 12: 'GL2C_PERF_SEL_METADATA_READ_REQ', - 13: 'GL2C_PERF_SEL_CLIENT0_REQ', - 14: 'GL2C_PERF_SEL_CLIENT1_REQ', - 15: 'GL2C_PERF_SEL_CLIENT2_REQ', - 16: 'GL2C_PERF_SEL_CLIENT3_REQ', - 17: 'GL2C_PERF_SEL_CLIENT4_REQ', - 18: 'GL2C_PERF_SEL_CLIENT5_REQ', - 19: 'GL2C_PERF_SEL_CLIENT6_REQ', - 20: 'GL2C_PERF_SEL_CLIENT7_REQ', - 21: 'GL2C_PERF_SEL_CLIENT8_REQ', - 22: 'GL2C_PERF_SEL_CLIENT9_REQ', - 23: 'GL2C_PERF_SEL_CLIENT10_REQ', - 24: 'GL2C_PERF_SEL_CLIENT11_REQ', - 25: 'GL2C_PERF_SEL_CLIENT12_REQ', - 26: 'GL2C_PERF_SEL_CLIENT13_REQ', - 27: 'GL2C_PERF_SEL_CLIENT14_REQ', - 28: 'GL2C_PERF_SEL_CLIENT15_REQ', - 29: 'GL2C_PERF_SEL_C_RW_S_REQ', - 30: 'GL2C_PERF_SEL_C_RW_US_REQ', - 31: 'GL2C_PERF_SEL_C_RO_S_REQ', - 32: 'GL2C_PERF_SEL_C_RO_US_REQ', - 33: 'GL2C_PERF_SEL_UC_REQ', - 34: 'GL2C_PERF_SEL_LRU_REQ', - 35: 'GL2C_PERF_SEL_STREAM_REQ', - 36: 'GL2C_PERF_SEL_BYPASS_REQ', - 37: 'GL2C_PERF_SEL_NOA_REQ', - 38: 'GL2C_PERF_SEL_SHARED_REQ', - 39: 'GL2C_PERF_SEL_HIT', - 40: 'GL2C_PERF_SEL_MISS', - 41: 'GL2C_PERF_SEL_FULL_HIT', - 42: 'GL2C_PERF_SEL_PARTIAL_32B_HIT', - 43: 'GL2C_PERF_SEL_PARTIAL_64B_HIT', - 44: 'GL2C_PERF_SEL_PARTIAL_96B_HIT', - 45: 'GL2C_PERF_SEL_DEWRITE_ALLOCATE_HIT', - 46: 'GL2C_PERF_SEL_FULLY_WRITTEN_HIT', - 47: 'GL2C_PERF_SEL_UNCACHED_WRITE', - 48: 'GL2C_PERF_SEL_WRITEBACK', - 49: 'GL2C_PERF_SEL_NORMAL_WRITEBACK', - 50: 'GL2C_PERF_SEL_EVICT', - 51: 'GL2C_PERF_SEL_NORMAL_EVICT', - 52: 'GL2C_PERF_SEL_REQ_TO_MISS_QUEUE', - 53: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT0', - 54: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT1', - 55: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT2', - 56: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT3', - 57: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT4', - 58: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT5', - 59: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT6', - 60: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT7', - 61: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT8', - 62: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT9', - 63: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT10', - 64: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT11', - 65: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT12', - 66: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT13', - 67: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT14', - 68: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT15', - 69: 'GL2C_PERF_SEL_READ_32_REQ', - 70: 'GL2C_PERF_SEL_READ_64_REQ', - 71: 'GL2C_PERF_SEL_READ_128_REQ', - 72: 'GL2C_PERF_SEL_WRITE_32_REQ', - 73: 'GL2C_PERF_SEL_WRITE_64_REQ', - 74: 'GL2C_PERF_SEL_COMPRESSED_READ_0_REQ', - 75: 'GL2C_PERF_SEL_COMPRESSED_READ_32_REQ', - 76: 'GL2C_PERF_SEL_COMPRESSED_READ_64_REQ', - 77: 'GL2C_PERF_SEL_COMPRESSED_READ_96_REQ', - 78: 'GL2C_PERF_SEL_COMPRESSED_READ_128_REQ', - 79: 'GL2C_PERF_SEL_MC_WRREQ', - 80: 'GL2C_PERF_SEL_EA_WRREQ_SNOOP', - 81: 'GL2C_PERF_SEL_EA_WRREQ_64B', - 82: 'GL2C_PERF_SEL_EA_WR_UNCACHED_32B', - 83: 'GL2C_PERF_SEL_MC_WRREQ_STALL', - 84: 'GL2C_PERF_SEL_EA_WRREQ_IO_CREDIT_STALL', - 85: 'GL2C_PERF_SEL_EA_WRREQ_GMI_CREDIT_STALL', - 86: 'GL2C_PERF_SEL_EA_WRREQ_DRAM_CREDIT_STALL', - 87: 'GL2C_PERF_SEL_TOO_MANY_EA_WRREQS_STALL', - 88: 'GL2C_PERF_SEL_MC_WRREQ_LEVEL', - 89: 'GL2C_PERF_SEL_EA_ATOMIC', - 90: 'GL2C_PERF_SEL_EA_ATOMIC_LEVEL', - 91: 'GL2C_PERF_SEL_MC_RDREQ', - 92: 'GL2C_PERF_SEL_EA_RDREQ_SNOOP', - 93: 'GL2C_PERF_SEL_EA_RDREQ_SPLIT', - 94: 'GL2C_PERF_SEL_EA_RDREQ_32B', - 95: 'GL2C_PERF_SEL_EA_RDREQ_64B', - 96: 'GL2C_PERF_SEL_EA_RDREQ_96B', - 97: 'GL2C_PERF_SEL_EA_RDREQ_128B', - 98: 'GL2C_PERF_SEL_EA_RD_UNCACHED_32B', - 99: 'GL2C_PERF_SEL_EA_RD_COMPRESSED_32B', - 100: 'GL2C_PERF_SEL_EA_RDREQ_IO_CREDIT_STALL', - 101: 'GL2C_PERF_SEL_EA_RDREQ_GMI_CREDIT_STALL', - 102: 'GL2C_PERF_SEL_EA_RDREQ_DRAM_CREDIT_STALL', - 103: 'GL2C_PERF_SEL_MC_RDREQ_LEVEL', - 104: 'GL2C_PERF_SEL_EA_RDREQ_DRAM', - 105: 'GL2C_PERF_SEL_EA_WRREQ_DRAM', - 106: 'GL2C_PERF_SEL_EA_RDREQ_DRAM_32B', - 107: 'GL2C_PERF_SEL_EA_WRREQ_DRAM_32B', - 108: 'GL2C_PERF_SEL_ONION_READ', - 109: 'GL2C_PERF_SEL_ONION_WRITE', - 110: 'GL2C_PERF_SEL_IO_READ', - 111: 'GL2C_PERF_SEL_IO_WRITE', - 112: 'GL2C_PERF_SEL_GARLIC_READ', - 113: 'GL2C_PERF_SEL_GARLIC_WRITE', - 114: 'GL2C_PERF_SEL_EA_OUTSTANDING', - 115: 'GL2C_PERF_SEL_LATENCY_FIFO_FULL', - 116: 'GL2C_PERF_SEL_SRC_FIFO_FULL', - 117: 'GL2C_PERF_SEL_TAG_STALL', - 118: 'GL2C_PERF_SEL_TAG_WRITEBACK_FIFO_FULL_STALL', - 119: 'GL2C_PERF_SEL_TAG_MISS_NOTHING_REPLACEABLE_STALL', - 120: 'GL2C_PERF_SEL_TAG_UNCACHED_WRITE_ATOMIC_FIFO_FULL_STALL', - 121: 'GL2C_PERF_SEL_TAG_NO_UNCACHED_WRITE_ATOMIC_ENTRIES_STALL', - 122: 'GL2C_PERF_SEL_TAG_READ_DST_STALL', - 123: 'GL2C_PERF_SEL_READ_RETURN_TIMEOUT', - 124: 'GL2C_PERF_SEL_WRITEBACK_READ_TIMEOUT', - 125: 'GL2C_PERF_SEL_READ_RETURN_FULL_BUBBLE', - 126: 'GL2C_PERF_SEL_BUBBLE', - 127: 'GL2C_PERF_SEL_IB_REQ', - 128: 'GL2C_PERF_SEL_IB_STALL', - 129: 'GL2C_PERF_SEL_IB_TAG_STALL', - 130: 'GL2C_PERF_SEL_RETURN_ACK', - 131: 'GL2C_PERF_SEL_RETURN_DATA', - 132: 'GL2C_PERF_SEL_EA_RDRET_NACK', - 133: 'GL2C_PERF_SEL_EA_WRRET_NACK', - 134: 'GL2C_PERF_SEL_GL2A_LEVEL', - 135: 'GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_START', - 136: 'GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_VOL_START', - 137: 'GL2C_PERF_SEL_GCR_INV', - 138: 'GL2C_PERF_SEL_GCR_WB', - 139: 'GL2C_PERF_SEL_GCR_DISCARD', - 140: 'GL2C_PERF_SEL_GCR_RANGE', - 141: 'GL2C_PERF_SEL_GCR_ALL', - 142: 'GL2C_PERF_SEL_GCR_VOL', - 143: 'GL2C_PERF_SEL_GCR_UNSHARED', - 144: 'GL2C_PERF_SEL_GCR_GL2_INV_ALL', - 145: 'GL2C_PERF_SEL_GCR_GL2_WB_ALL', - 146: 'GL2C_PERF_SEL_GCR_GL2_INV_RANGE', - 147: 'GL2C_PERF_SEL_GCR_GL2_WB_RANGE', - 148: 'GL2C_PERF_SEL_GCR_GL2_WB_INV_RANGE', - 149: 'GL2C_PERF_SEL_ALL_GCR_INV_EVICT', - 150: 'GL2C_PERF_SEL_ALL_GCR_INV_VOL_EVICT', - 151: 'GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_CYCLE', - 152: 'GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_VOL_CYCLE', - 153: 'GL2C_PERF_SEL_ALL_GCR_WB_WRITEBACK', - 154: 'GL2C_PERF_SEL_GCR_INVL2_VOL_CYCLE', - 155: 'GL2C_PERF_SEL_GCR_INVL2_VOL_EVICT', - 156: 'GL2C_PERF_SEL_GCR_INVL2_VOL_START', - 157: 'GL2C_PERF_SEL_GCR_WBL2_VOL_CYCLE', - 158: 'GL2C_PERF_SEL_GCR_WBL2_VOL_START', - 159: 'GL2C_PERF_SEL_GCR_WBINVL2_CYCLE', - 160: 'GL2C_PERF_SEL_GCR_WBINVL2_EVICT', - 161: 'GL2C_PERF_SEL_GCR_WBINVL2_START', - 162: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT16', - 163: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT17', - 164: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT18', - 165: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT19', -} -GL2C_PERF_SEL_NONE = 0 -GL2C_PERF_SEL_CYCLE = 1 -GL2C_PERF_SEL_BUSY = 2 -GL2C_PERF_SEL_REQ = 3 -GL2C_PERF_SEL_VOL_REQ = 4 -GL2C_PERF_SEL_HIGH_PRIORITY_REQ = 5 -GL2C_PERF_SEL_READ = 6 -GL2C_PERF_SEL_WRITE = 7 -GL2C_PERF_SEL_ATOMIC = 8 -GL2C_PERF_SEL_NOP_ACK = 9 -GL2C_PERF_SEL_NOP_RTN0 = 10 -GL2C_PERF_SEL_COMPRESSED_READ_REQ = 11 -GL2C_PERF_SEL_METADATA_READ_REQ = 12 -GL2C_PERF_SEL_CLIENT0_REQ = 13 -GL2C_PERF_SEL_CLIENT1_REQ = 14 -GL2C_PERF_SEL_CLIENT2_REQ = 15 -GL2C_PERF_SEL_CLIENT3_REQ = 16 -GL2C_PERF_SEL_CLIENT4_REQ = 17 -GL2C_PERF_SEL_CLIENT5_REQ = 18 -GL2C_PERF_SEL_CLIENT6_REQ = 19 -GL2C_PERF_SEL_CLIENT7_REQ = 20 -GL2C_PERF_SEL_CLIENT8_REQ = 21 -GL2C_PERF_SEL_CLIENT9_REQ = 22 -GL2C_PERF_SEL_CLIENT10_REQ = 23 -GL2C_PERF_SEL_CLIENT11_REQ = 24 -GL2C_PERF_SEL_CLIENT12_REQ = 25 -GL2C_PERF_SEL_CLIENT13_REQ = 26 -GL2C_PERF_SEL_CLIENT14_REQ = 27 -GL2C_PERF_SEL_CLIENT15_REQ = 28 -GL2C_PERF_SEL_C_RW_S_REQ = 29 -GL2C_PERF_SEL_C_RW_US_REQ = 30 -GL2C_PERF_SEL_C_RO_S_REQ = 31 -GL2C_PERF_SEL_C_RO_US_REQ = 32 -GL2C_PERF_SEL_UC_REQ = 33 -GL2C_PERF_SEL_LRU_REQ = 34 -GL2C_PERF_SEL_STREAM_REQ = 35 -GL2C_PERF_SEL_BYPASS_REQ = 36 -GL2C_PERF_SEL_NOA_REQ = 37 -GL2C_PERF_SEL_SHARED_REQ = 38 -GL2C_PERF_SEL_HIT = 39 -GL2C_PERF_SEL_MISS = 40 -GL2C_PERF_SEL_FULL_HIT = 41 -GL2C_PERF_SEL_PARTIAL_32B_HIT = 42 -GL2C_PERF_SEL_PARTIAL_64B_HIT = 43 -GL2C_PERF_SEL_PARTIAL_96B_HIT = 44 -GL2C_PERF_SEL_DEWRITE_ALLOCATE_HIT = 45 -GL2C_PERF_SEL_FULLY_WRITTEN_HIT = 46 -GL2C_PERF_SEL_UNCACHED_WRITE = 47 -GL2C_PERF_SEL_WRITEBACK = 48 -GL2C_PERF_SEL_NORMAL_WRITEBACK = 49 -GL2C_PERF_SEL_EVICT = 50 -GL2C_PERF_SEL_NORMAL_EVICT = 51 -GL2C_PERF_SEL_REQ_TO_MISS_QUEUE = 52 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT0 = 53 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT1 = 54 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT2 = 55 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT3 = 56 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT4 = 57 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT5 = 58 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT6 = 59 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT7 = 60 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT8 = 61 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT9 = 62 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT10 = 63 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT11 = 64 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT12 = 65 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT13 = 66 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT14 = 67 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT15 = 68 -GL2C_PERF_SEL_READ_32_REQ = 69 -GL2C_PERF_SEL_READ_64_REQ = 70 -GL2C_PERF_SEL_READ_128_REQ = 71 -GL2C_PERF_SEL_WRITE_32_REQ = 72 -GL2C_PERF_SEL_WRITE_64_REQ = 73 -GL2C_PERF_SEL_COMPRESSED_READ_0_REQ = 74 -GL2C_PERF_SEL_COMPRESSED_READ_32_REQ = 75 -GL2C_PERF_SEL_COMPRESSED_READ_64_REQ = 76 -GL2C_PERF_SEL_COMPRESSED_READ_96_REQ = 77 -GL2C_PERF_SEL_COMPRESSED_READ_128_REQ = 78 -GL2C_PERF_SEL_MC_WRREQ = 79 -GL2C_PERF_SEL_EA_WRREQ_SNOOP = 80 -GL2C_PERF_SEL_EA_WRREQ_64B = 81 -GL2C_PERF_SEL_EA_WR_UNCACHED_32B = 82 -GL2C_PERF_SEL_MC_WRREQ_STALL = 83 -GL2C_PERF_SEL_EA_WRREQ_IO_CREDIT_STALL = 84 -GL2C_PERF_SEL_EA_WRREQ_GMI_CREDIT_STALL = 85 -GL2C_PERF_SEL_EA_WRREQ_DRAM_CREDIT_STALL = 86 -GL2C_PERF_SEL_TOO_MANY_EA_WRREQS_STALL = 87 -GL2C_PERF_SEL_MC_WRREQ_LEVEL = 88 -GL2C_PERF_SEL_EA_ATOMIC = 89 -GL2C_PERF_SEL_EA_ATOMIC_LEVEL = 90 -GL2C_PERF_SEL_MC_RDREQ = 91 -GL2C_PERF_SEL_EA_RDREQ_SNOOP = 92 -GL2C_PERF_SEL_EA_RDREQ_SPLIT = 93 -GL2C_PERF_SEL_EA_RDREQ_32B = 94 -GL2C_PERF_SEL_EA_RDREQ_64B = 95 -GL2C_PERF_SEL_EA_RDREQ_96B = 96 -GL2C_PERF_SEL_EA_RDREQ_128B = 97 -GL2C_PERF_SEL_EA_RD_UNCACHED_32B = 98 -GL2C_PERF_SEL_EA_RD_COMPRESSED_32B = 99 -GL2C_PERF_SEL_EA_RDREQ_IO_CREDIT_STALL = 100 -GL2C_PERF_SEL_EA_RDREQ_GMI_CREDIT_STALL = 101 -GL2C_PERF_SEL_EA_RDREQ_DRAM_CREDIT_STALL = 102 -GL2C_PERF_SEL_MC_RDREQ_LEVEL = 103 -GL2C_PERF_SEL_EA_RDREQ_DRAM = 104 -GL2C_PERF_SEL_EA_WRREQ_DRAM = 105 -GL2C_PERF_SEL_EA_RDREQ_DRAM_32B = 106 -GL2C_PERF_SEL_EA_WRREQ_DRAM_32B = 107 -GL2C_PERF_SEL_ONION_READ = 108 -GL2C_PERF_SEL_ONION_WRITE = 109 -GL2C_PERF_SEL_IO_READ = 110 -GL2C_PERF_SEL_IO_WRITE = 111 -GL2C_PERF_SEL_GARLIC_READ = 112 -GL2C_PERF_SEL_GARLIC_WRITE = 113 -GL2C_PERF_SEL_EA_OUTSTANDING = 114 -GL2C_PERF_SEL_LATENCY_FIFO_FULL = 115 -GL2C_PERF_SEL_SRC_FIFO_FULL = 116 -GL2C_PERF_SEL_TAG_STALL = 117 -GL2C_PERF_SEL_TAG_WRITEBACK_FIFO_FULL_STALL = 118 -GL2C_PERF_SEL_TAG_MISS_NOTHING_REPLACEABLE_STALL = 119 -GL2C_PERF_SEL_TAG_UNCACHED_WRITE_ATOMIC_FIFO_FULL_STALL = 120 -GL2C_PERF_SEL_TAG_NO_UNCACHED_WRITE_ATOMIC_ENTRIES_STALL = 121 -GL2C_PERF_SEL_TAG_READ_DST_STALL = 122 -GL2C_PERF_SEL_READ_RETURN_TIMEOUT = 123 -GL2C_PERF_SEL_WRITEBACK_READ_TIMEOUT = 124 -GL2C_PERF_SEL_READ_RETURN_FULL_BUBBLE = 125 -GL2C_PERF_SEL_BUBBLE = 126 -GL2C_PERF_SEL_IB_REQ = 127 -GL2C_PERF_SEL_IB_STALL = 128 -GL2C_PERF_SEL_IB_TAG_STALL = 129 -GL2C_PERF_SEL_RETURN_ACK = 130 -GL2C_PERF_SEL_RETURN_DATA = 131 -GL2C_PERF_SEL_EA_RDRET_NACK = 132 -GL2C_PERF_SEL_EA_WRRET_NACK = 133 -GL2C_PERF_SEL_GL2A_LEVEL = 134 -GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_START = 135 -GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_VOL_START = 136 -GL2C_PERF_SEL_GCR_INV = 137 -GL2C_PERF_SEL_GCR_WB = 138 -GL2C_PERF_SEL_GCR_DISCARD = 139 -GL2C_PERF_SEL_GCR_RANGE = 140 -GL2C_PERF_SEL_GCR_ALL = 141 -GL2C_PERF_SEL_GCR_VOL = 142 -GL2C_PERF_SEL_GCR_UNSHARED = 143 -GL2C_PERF_SEL_GCR_GL2_INV_ALL = 144 -GL2C_PERF_SEL_GCR_GL2_WB_ALL = 145 -GL2C_PERF_SEL_GCR_GL2_INV_RANGE = 146 -GL2C_PERF_SEL_GCR_GL2_WB_RANGE = 147 -GL2C_PERF_SEL_GCR_GL2_WB_INV_RANGE = 148 -GL2C_PERF_SEL_ALL_GCR_INV_EVICT = 149 -GL2C_PERF_SEL_ALL_GCR_INV_VOL_EVICT = 150 -GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_CYCLE = 151 -GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_VOL_CYCLE = 152 -GL2C_PERF_SEL_ALL_GCR_WB_WRITEBACK = 153 -GL2C_PERF_SEL_GCR_INVL2_VOL_CYCLE = 154 -GL2C_PERF_SEL_GCR_INVL2_VOL_EVICT = 155 -GL2C_PERF_SEL_GCR_INVL2_VOL_START = 156 -GL2C_PERF_SEL_GCR_WBL2_VOL_CYCLE = 157 -GL2C_PERF_SEL_GCR_WBL2_VOL_START = 158 -GL2C_PERF_SEL_GCR_WBINVL2_CYCLE = 159 -GL2C_PERF_SEL_GCR_WBINVL2_EVICT = 160 -GL2C_PERF_SEL_GCR_WBINVL2_START = 161 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT16 = 162 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT17 = 163 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT18 = 164 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT19 = 165 -GL2C_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SX_BLEND_OPT' -SX_BLEND_OPT__enumvalues = { - 0: 'BLEND_OPT_PRESERVE_NONE_IGNORE_ALL', - 1: 'BLEND_OPT_PRESERVE_ALL_IGNORE_NONE', - 2: 'BLEND_OPT_PRESERVE_C1_IGNORE_C0', - 3: 'BLEND_OPT_PRESERVE_C0_IGNORE_C1', - 4: 'BLEND_OPT_PRESERVE_A1_IGNORE_A0', - 5: 'BLEND_OPT_PRESERVE_A0_IGNORE_A1', - 6: 'BLEND_OPT_PRESERVE_NONE_IGNORE_A0', - 7: 'BLEND_OPT_PRESERVE_NONE_IGNORE_NONE', -} -BLEND_OPT_PRESERVE_NONE_IGNORE_ALL = 0 -BLEND_OPT_PRESERVE_ALL_IGNORE_NONE = 1 -BLEND_OPT_PRESERVE_C1_IGNORE_C0 = 2 -BLEND_OPT_PRESERVE_C0_IGNORE_C1 = 3 -BLEND_OPT_PRESERVE_A1_IGNORE_A0 = 4 -BLEND_OPT_PRESERVE_A0_IGNORE_A1 = 5 -BLEND_OPT_PRESERVE_NONE_IGNORE_A0 = 6 -BLEND_OPT_PRESERVE_NONE_IGNORE_NONE = 7 -SX_BLEND_OPT = ctypes.c_uint32 # enum - -# values for enumeration 'SX_DOWNCONVERT_FORMAT' -SX_DOWNCONVERT_FORMAT__enumvalues = { - 0: 'SX_RT_EXPORT_NO_CONVERSION', - 1: 'SX_RT_EXPORT_32_R', - 2: 'SX_RT_EXPORT_32_A', - 3: 'SX_RT_EXPORT_10_11_11', - 4: 'SX_RT_EXPORT_2_10_10_10', - 5: 'SX_RT_EXPORT_8_8_8_8', - 6: 'SX_RT_EXPORT_5_6_5', - 7: 'SX_RT_EXPORT_1_5_5_5', - 8: 'SX_RT_EXPORT_4_4_4_4', - 9: 'SX_RT_EXPORT_16_16_GR', - 10: 'SX_RT_EXPORT_16_16_AR', - 11: 'SX_RT_EXPORT_9_9_9_E5', - 12: 'SX_RT_EXPORT_2_10_10_10_7E3', - 13: 'SX_RT_EXPORT_2_10_10_10_6E4', -} -SX_RT_EXPORT_NO_CONVERSION = 0 -SX_RT_EXPORT_32_R = 1 -SX_RT_EXPORT_32_A = 2 -SX_RT_EXPORT_10_11_11 = 3 -SX_RT_EXPORT_2_10_10_10 = 4 -SX_RT_EXPORT_8_8_8_8 = 5 -SX_RT_EXPORT_5_6_5 = 6 -SX_RT_EXPORT_1_5_5_5 = 7 -SX_RT_EXPORT_4_4_4_4 = 8 -SX_RT_EXPORT_16_16_GR = 9 -SX_RT_EXPORT_16_16_AR = 10 -SX_RT_EXPORT_9_9_9_E5 = 11 -SX_RT_EXPORT_2_10_10_10_7E3 = 12 -SX_RT_EXPORT_2_10_10_10_6E4 = 13 -SX_DOWNCONVERT_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'SX_OPT_COMB_FCN' -SX_OPT_COMB_FCN__enumvalues = { - 0: 'OPT_COMB_NONE', - 1: 'OPT_COMB_ADD', - 2: 'OPT_COMB_SUBTRACT', - 3: 'OPT_COMB_MIN', - 4: 'OPT_COMB_MAX', - 5: 'OPT_COMB_REVSUBTRACT', - 6: 'OPT_COMB_BLEND_DISABLED', - 7: 'OPT_COMB_SAFE_ADD', -} -OPT_COMB_NONE = 0 -OPT_COMB_ADD = 1 -OPT_COMB_SUBTRACT = 2 -OPT_COMB_MIN = 3 -OPT_COMB_MAX = 4 -OPT_COMB_REVSUBTRACT = 5 -OPT_COMB_BLEND_DISABLED = 6 -OPT_COMB_SAFE_ADD = 7 -SX_OPT_COMB_FCN = ctypes.c_uint32 # enum - -# values for enumeration 'SX_PERFCOUNTER_VALS' -SX_PERFCOUNTER_VALS__enumvalues = { - 0: 'SX_PERF_SEL_PA_IDLE_CYCLES', - 1: 'SX_PERF_SEL_PA_REQ', - 2: 'SX_PERF_SEL_PA_POS', - 3: 'SX_PERF_SEL_CLOCK', - 4: 'SX_PERF_SEL_GATE_EN1', - 5: 'SX_PERF_SEL_GATE_EN2', - 6: 'SX_PERF_SEL_GATE_EN3', - 7: 'SX_PERF_SEL_GATE_EN4', - 8: 'SX_PERF_SEL_SH_POS_STARVE', - 9: 'SX_PERF_SEL_SH_COLOR_STARVE', - 10: 'SX_PERF_SEL_SH_POS_STALL', - 11: 'SX_PERF_SEL_SH_COLOR_STALL', - 12: 'SX_PERF_SEL_DB0_PIXELS', - 13: 'SX_PERF_SEL_DB0_HALF_QUADS', - 14: 'SX_PERF_SEL_DB0_PIXEL_STALL', - 15: 'SX_PERF_SEL_DB0_PIXEL_IDLE', - 16: 'SX_PERF_SEL_DB0_PRED_PIXELS', - 17: 'SX_PERF_SEL_DB1_PIXELS', - 18: 'SX_PERF_SEL_DB1_HALF_QUADS', - 19: 'SX_PERF_SEL_DB1_PIXEL_STALL', - 20: 'SX_PERF_SEL_DB1_PIXEL_IDLE', - 21: 'SX_PERF_SEL_DB1_PRED_PIXELS', - 22: 'SX_PERF_SEL_DB2_PIXELS', - 23: 'SX_PERF_SEL_DB2_HALF_QUADS', - 24: 'SX_PERF_SEL_DB2_PIXEL_STALL', - 25: 'SX_PERF_SEL_DB2_PIXEL_IDLE', - 26: 'SX_PERF_SEL_DB2_PRED_PIXELS', - 27: 'SX_PERF_SEL_DB3_PIXELS', - 28: 'SX_PERF_SEL_DB3_HALF_QUADS', - 29: 'SX_PERF_SEL_DB3_PIXEL_STALL', - 30: 'SX_PERF_SEL_DB3_PIXEL_IDLE', - 31: 'SX_PERF_SEL_DB3_PRED_PIXELS', - 32: 'SX_PERF_SEL_COL_BUSY', - 33: 'SX_PERF_SEL_POS_BUSY', - 34: 'SX_PERF_SEL_DB0_MRT_BLEND_BYPASS', - 35: 'SX_PERF_SEL_DB0_MRT_DONT_RD_DEST', - 36: 'SX_PERF_SEL_DB0_MRT_DISCARD_SRC', - 37: 'SX_PERF_SEL_DB0_MRT_SINGLE_QUADS', - 38: 'SX_PERF_SEL_DB0_MRT_DOUBLE_QUADS', - 39: 'SX_PERF_SEL_DB1_MRT_BLEND_BYPASS', - 40: 'SX_PERF_SEL_DB1_MRT_DONT_RD_DEST', - 41: 'SX_PERF_SEL_DB1_MRT_DISCARD_SRC', - 42: 'SX_PERF_SEL_DB1_MRT_SINGLE_QUADS', - 43: 'SX_PERF_SEL_DB1_MRT_DOUBLE_QUADS', - 44: 'SX_PERF_SEL_DB2_MRT_BLEND_BYPASS', - 45: 'SX_PERF_SEL_DB2_MRT_DONT_RD_DEST', - 46: 'SX_PERF_SEL_DB2_MRT_DISCARD_SRC', - 47: 'SX_PERF_SEL_DB2_MRT_SINGLE_QUADS', - 48: 'SX_PERF_SEL_DB2_MRT_DOUBLE_QUADS', - 49: 'SX_PERF_SEL_DB3_MRT_BLEND_BYPASS', - 50: 'SX_PERF_SEL_DB3_MRT_DONT_RD_DEST', - 51: 'SX_PERF_SEL_DB3_MRT_DISCARD_SRC', - 52: 'SX_PERF_SEL_DB3_MRT_SINGLE_QUADS', - 53: 'SX_PERF_SEL_DB3_MRT_DOUBLE_QUADS', - 54: 'SX_PERF_SEL_PA_REQ_LATENCY', - 55: 'SX_PERF_SEL_POS_SCBD_STALL', - 56: 'SX_PERF_SEL_CLOCK_DROP_STALL', - 57: 'SX_PERF_SEL_GATE_EN5', - 58: 'SX_PERF_SEL_GATE_EN6', - 59: 'SX_PERF_SEL_DB0_SIZE', - 60: 'SX_PERF_SEL_DB1_SIZE', - 61: 'SX_PERF_SEL_DB2_SIZE', - 62: 'SX_PERF_SEL_DB3_SIZE', - 63: 'SX_PERF_SEL_IDX_STALL_CYCLES', - 64: 'SX_PERF_SEL_IDX_IDLE_CYCLES', - 65: 'SX_PERF_SEL_IDX_REQ', - 66: 'SX_PERF_SEL_IDX_RET', - 67: 'SX_PERF_SEL_IDX_REQ_LATENCY', - 68: 'SX_PERF_SEL_IDX_SCBD_STALL', - 69: 'SX_PERF_SEL_GATE_EN7', - 70: 'SX_PERF_SEL_GATE_EN8', - 71: 'SX_PERF_SEL_SH_IDX_STARVE', - 72: 'SX_PERF_SEL_IDX_BUSY', - 73: 'SX_PERF_SEL_PA_POS_BANK_CONF', - 74: 'SX_PERF_SEL_DB0_END_OF_WAVE', - 75: 'SX_PERF_SEL_DB0_4X2_DISCARD', - 76: 'SX_PERF_SEL_DB1_END_OF_WAVE', - 77: 'SX_PERF_SEL_DB1_4X2_DISCARD', - 78: 'SX_PERF_SEL_DB2_END_OF_WAVE', - 79: 'SX_PERF_SEL_DB2_4X2_DISCARD', - 80: 'SX_PERF_SEL_DB3_END_OF_WAVE', - 81: 'SX_PERF_SEL_DB3_4X2_DISCARD', -} -SX_PERF_SEL_PA_IDLE_CYCLES = 0 -SX_PERF_SEL_PA_REQ = 1 -SX_PERF_SEL_PA_POS = 2 -SX_PERF_SEL_CLOCK = 3 -SX_PERF_SEL_GATE_EN1 = 4 -SX_PERF_SEL_GATE_EN2 = 5 -SX_PERF_SEL_GATE_EN3 = 6 -SX_PERF_SEL_GATE_EN4 = 7 -SX_PERF_SEL_SH_POS_STARVE = 8 -SX_PERF_SEL_SH_COLOR_STARVE = 9 -SX_PERF_SEL_SH_POS_STALL = 10 -SX_PERF_SEL_SH_COLOR_STALL = 11 -SX_PERF_SEL_DB0_PIXELS = 12 -SX_PERF_SEL_DB0_HALF_QUADS = 13 -SX_PERF_SEL_DB0_PIXEL_STALL = 14 -SX_PERF_SEL_DB0_PIXEL_IDLE = 15 -SX_PERF_SEL_DB0_PRED_PIXELS = 16 -SX_PERF_SEL_DB1_PIXELS = 17 -SX_PERF_SEL_DB1_HALF_QUADS = 18 -SX_PERF_SEL_DB1_PIXEL_STALL = 19 -SX_PERF_SEL_DB1_PIXEL_IDLE = 20 -SX_PERF_SEL_DB1_PRED_PIXELS = 21 -SX_PERF_SEL_DB2_PIXELS = 22 -SX_PERF_SEL_DB2_HALF_QUADS = 23 -SX_PERF_SEL_DB2_PIXEL_STALL = 24 -SX_PERF_SEL_DB2_PIXEL_IDLE = 25 -SX_PERF_SEL_DB2_PRED_PIXELS = 26 -SX_PERF_SEL_DB3_PIXELS = 27 -SX_PERF_SEL_DB3_HALF_QUADS = 28 -SX_PERF_SEL_DB3_PIXEL_STALL = 29 -SX_PERF_SEL_DB3_PIXEL_IDLE = 30 -SX_PERF_SEL_DB3_PRED_PIXELS = 31 -SX_PERF_SEL_COL_BUSY = 32 -SX_PERF_SEL_POS_BUSY = 33 -SX_PERF_SEL_DB0_MRT_BLEND_BYPASS = 34 -SX_PERF_SEL_DB0_MRT_DONT_RD_DEST = 35 -SX_PERF_SEL_DB0_MRT_DISCARD_SRC = 36 -SX_PERF_SEL_DB0_MRT_SINGLE_QUADS = 37 -SX_PERF_SEL_DB0_MRT_DOUBLE_QUADS = 38 -SX_PERF_SEL_DB1_MRT_BLEND_BYPASS = 39 -SX_PERF_SEL_DB1_MRT_DONT_RD_DEST = 40 -SX_PERF_SEL_DB1_MRT_DISCARD_SRC = 41 -SX_PERF_SEL_DB1_MRT_SINGLE_QUADS = 42 -SX_PERF_SEL_DB1_MRT_DOUBLE_QUADS = 43 -SX_PERF_SEL_DB2_MRT_BLEND_BYPASS = 44 -SX_PERF_SEL_DB2_MRT_DONT_RD_DEST = 45 -SX_PERF_SEL_DB2_MRT_DISCARD_SRC = 46 -SX_PERF_SEL_DB2_MRT_SINGLE_QUADS = 47 -SX_PERF_SEL_DB2_MRT_DOUBLE_QUADS = 48 -SX_PERF_SEL_DB3_MRT_BLEND_BYPASS = 49 -SX_PERF_SEL_DB3_MRT_DONT_RD_DEST = 50 -SX_PERF_SEL_DB3_MRT_DISCARD_SRC = 51 -SX_PERF_SEL_DB3_MRT_SINGLE_QUADS = 52 -SX_PERF_SEL_DB3_MRT_DOUBLE_QUADS = 53 -SX_PERF_SEL_PA_REQ_LATENCY = 54 -SX_PERF_SEL_POS_SCBD_STALL = 55 -SX_PERF_SEL_CLOCK_DROP_STALL = 56 -SX_PERF_SEL_GATE_EN5 = 57 -SX_PERF_SEL_GATE_EN6 = 58 -SX_PERF_SEL_DB0_SIZE = 59 -SX_PERF_SEL_DB1_SIZE = 60 -SX_PERF_SEL_DB2_SIZE = 61 -SX_PERF_SEL_DB3_SIZE = 62 -SX_PERF_SEL_IDX_STALL_CYCLES = 63 -SX_PERF_SEL_IDX_IDLE_CYCLES = 64 -SX_PERF_SEL_IDX_REQ = 65 -SX_PERF_SEL_IDX_RET = 66 -SX_PERF_SEL_IDX_REQ_LATENCY = 67 -SX_PERF_SEL_IDX_SCBD_STALL = 68 -SX_PERF_SEL_GATE_EN7 = 69 -SX_PERF_SEL_GATE_EN8 = 70 -SX_PERF_SEL_SH_IDX_STARVE = 71 -SX_PERF_SEL_IDX_BUSY = 72 -SX_PERF_SEL_PA_POS_BANK_CONF = 73 -SX_PERF_SEL_DB0_END_OF_WAVE = 74 -SX_PERF_SEL_DB0_4X2_DISCARD = 75 -SX_PERF_SEL_DB1_END_OF_WAVE = 76 -SX_PERF_SEL_DB1_4X2_DISCARD = 77 -SX_PERF_SEL_DB2_END_OF_WAVE = 78 -SX_PERF_SEL_DB2_4X2_DISCARD = 79 -SX_PERF_SEL_DB3_END_OF_WAVE = 80 -SX_PERF_SEL_DB3_4X2_DISCARD = 81 -SX_PERFCOUNTER_VALS = ctypes.c_uint32 # enum - -# values for enumeration 'CompareFrag' -CompareFrag__enumvalues = { - 0: 'FRAG_NEVER', - 1: 'FRAG_LESS', - 2: 'FRAG_EQUAL', - 3: 'FRAG_LEQUAL', - 4: 'FRAG_GREATER', - 5: 'FRAG_NOTEQUAL', - 6: 'FRAG_GEQUAL', - 7: 'FRAG_ALWAYS', -} -FRAG_NEVER = 0 -FRAG_LESS = 1 -FRAG_EQUAL = 2 -FRAG_LEQUAL = 3 -FRAG_GREATER = 4 -FRAG_NOTEQUAL = 5 -FRAG_GEQUAL = 6 -FRAG_ALWAYS = 7 -CompareFrag = ctypes.c_uint32 # enum - -# values for enumeration 'ConservativeZExport' -ConservativeZExport__enumvalues = { - 0: 'EXPORT_ANY_Z', - 1: 'EXPORT_LESS_THAN_Z', - 2: 'EXPORT_GREATER_THAN_Z', - 3: 'EXPORT_RESERVED', -} -EXPORT_ANY_Z = 0 -EXPORT_LESS_THAN_Z = 1 -EXPORT_GREATER_THAN_Z = 2 -EXPORT_RESERVED = 3 -ConservativeZExport = ctypes.c_uint32 # enum - -# values for enumeration 'DbMemArbWatermarks' -DbMemArbWatermarks__enumvalues = { - 0: 'TRANSFERRED_64_BYTES', - 1: 'TRANSFERRED_128_BYTES', - 2: 'TRANSFERRED_256_BYTES', - 3: 'TRANSFERRED_512_BYTES', - 4: 'TRANSFERRED_1024_BYTES', - 5: 'TRANSFERRED_2048_BYTES', - 6: 'TRANSFERRED_4096_BYTES', - 7: 'TRANSFERRED_8192_BYTES', -} -TRANSFERRED_64_BYTES = 0 -TRANSFERRED_128_BYTES = 1 -TRANSFERRED_256_BYTES = 2 -TRANSFERRED_512_BYTES = 3 -TRANSFERRED_1024_BYTES = 4 -TRANSFERRED_2048_BYTES = 5 -TRANSFERRED_4096_BYTES = 6 -TRANSFERRED_8192_BYTES = 7 -DbMemArbWatermarks = ctypes.c_uint32 # enum - -# values for enumeration 'DbPRTFaultBehavior' -DbPRTFaultBehavior__enumvalues = { - 0: 'FAULT_ZERO', - 1: 'FAULT_ONE', - 2: 'FAULT_FAIL', - 3: 'FAULT_PASS', -} -FAULT_ZERO = 0 -FAULT_ONE = 1 -FAULT_FAIL = 2 -FAULT_PASS = 3 -DbPRTFaultBehavior = ctypes.c_uint32 # enum - -# values for enumeration 'DbPSLControl' -DbPSLControl__enumvalues = { - 0: 'PSLC_AUTO', - 1: 'PSLC_ON_HANG_ONLY', - 2: 'PSLC_ASAP', - 3: 'PSLC_COUNTDOWN', -} -PSLC_AUTO = 0 -PSLC_ON_HANG_ONLY = 1 -PSLC_ASAP = 2 -PSLC_COUNTDOWN = 3 -DbPSLControl = ctypes.c_uint32 # enum - -# values for enumeration 'ForceControl' -ForceControl__enumvalues = { - 0: 'FORCE_OFF', - 1: 'FORCE_ENABLE', - 2: 'FORCE_DISABLE', - 3: 'FORCE_RESERVED', -} -FORCE_OFF = 0 -FORCE_ENABLE = 1 -FORCE_DISABLE = 2 -FORCE_RESERVED = 3 -ForceControl = ctypes.c_uint32 # enum - -# values for enumeration 'GLCompressionMode' -GLCompressionMode__enumvalues = { - 0: 'DB_DEFAULT', - 1: 'DB_BYPASS', - 2: 'DB_COMP_WR_DISABLE', - 3: 'DB_BYPASS_WR_DISABLE', -} -DB_DEFAULT = 0 -DB_BYPASS = 1 -DB_COMP_WR_DISABLE = 2 -DB_BYPASS_WR_DISABLE = 3 -GLCompressionMode = ctypes.c_uint32 # enum - -# values for enumeration 'OreoMode' -OreoMode__enumvalues = { - 0: 'OMODE_BLEND', - 1: 'OMODE_O_THEN_B', - 2: 'OMODE_P_THEN_O_THEN_B', - 3: 'OMODE_RESERVED_3', -} -OMODE_BLEND = 0 -OMODE_O_THEN_B = 1 -OMODE_P_THEN_O_THEN_B = 2 -OMODE_RESERVED_3 = 3 -OreoMode = ctypes.c_uint32 # enum - -# values for enumeration 'PerfCounter_Vals' -PerfCounter_Vals__enumvalues = { - 0: 'DB_PERF_SEL_SC_DB_tile_sends', - 1: 'DB_PERF_SEL_SC_DB_tile_busy', - 2: 'DB_PERF_SEL_SC_DB_tile_stalls', - 3: 'DB_PERF_SEL_SC_DB_tile_events', - 4: 'DB_PERF_SEL_SC_DB_tile_tiles', - 5: 'DB_PERF_SEL_SC_DB_tile_covered', - 6: 'DB_PERF_SEL_hiz_tc_read_starved', - 7: 'DB_PERF_SEL_hiz_tc_write_stall', - 8: 'DB_PERF_SEL_hiz_tile_culled', - 9: 'DB_PERF_SEL_his_tile_culled', - 10: 'DB_PERF_SEL_DB_SC_tile_sends', - 11: 'DB_PERF_SEL_DB_SC_tile_busy', - 12: 'DB_PERF_SEL_DB_SC_tile_stalls', - 13: 'DB_PERF_SEL_DB_SC_tile_df_stalls', - 14: 'DB_PERF_SEL_DB_SC_tile_tiles', - 15: 'DB_PERF_SEL_DB_SC_tile_culled', - 16: 'DB_PERF_SEL_DB_SC_tile_hier_kill', - 17: 'DB_PERF_SEL_DB_SC_tile_fast_ops', - 18: 'DB_PERF_SEL_DB_SC_tile_no_ops', - 19: 'DB_PERF_SEL_DB_SC_tile_tile_rate', - 20: 'DB_PERF_SEL_DB_SC_tile_ssaa_kill', - 21: 'DB_PERF_SEL_DB_SC_tile_fast_z_ops', - 22: 'DB_PERF_SEL_DB_SC_tile_fast_stencil_ops', - 23: 'DB_PERF_SEL_SC_DB_quad_sends', - 24: 'DB_PERF_SEL_SC_DB_quad_busy', - 25: 'DB_PERF_SEL_SC_DB_quad_squads', - 26: 'DB_PERF_SEL_SC_DB_quad_tiles', - 27: 'DB_PERF_SEL_SC_DB_quad_pixels', - 28: 'DB_PERF_SEL_SC_DB_quad_killed_tiles', - 29: 'DB_PERF_SEL_DB_SC_quad_sends', - 30: 'DB_PERF_SEL_DB_SC_quad_busy', - 31: 'DB_PERF_SEL_DB_SC_quad_stalls', - 32: 'DB_PERF_SEL_DB_SC_quad_tiles', - 33: 'DB_PERF_SEL_DB_SC_quad_lit_quad', - 34: 'DB_PERF_SEL_DB_CB_export_events', - 37: 'DB_PERF_SEL_SX_DB_quad_sends', - 38: 'DB_PERF_SEL_SX_DB_quad_busy', - 39: 'DB_PERF_SEL_SX_DB_quad_stalls', - 40: 'DB_PERF_SEL_SX_DB_quad_quads', - 41: 'DB_PERF_SEL_SX_DB_quad_pixels', - 42: 'DB_PERF_SEL_SX_DB_quad_exports', - 43: 'DB_PERF_SEL_SH_quads_outstanding_sum', - 44: 'DB_PERF_SEL_DB_CB_export_sends', - 45: 'DB_PERF_SEL_DB_CB_export_busy', - 46: 'DB_PERF_SEL_DB_CB_export_stalls', - 47: 'DB_PERF_SEL_DB_CB_export_quads', - 48: 'DB_PERF_SEL_tile_rd_sends', - 49: 'DB_PERF_SEL_mi_tile_rd_outstanding_sum', - 50: 'DB_PERF_SEL_quad_rd_sends', - 51: 'DB_PERF_SEL_quad_rd_busy', - 52: 'DB_PERF_SEL_quad_rd_mi_stall', - 53: 'DB_PERF_SEL_quad_rd_rw_collision', - 54: 'DB_PERF_SEL_quad_rd_tag_stall', - 55: 'DB_PERF_SEL_quad_rd_32byte_reqs', - 56: 'DB_PERF_SEL_quad_rd_panic', - 57: 'DB_PERF_SEL_mi_quad_rd_outstanding_sum', - 58: 'DB_PERF_SEL_quad_rdret_sends', - 59: 'DB_PERF_SEL_quad_rdret_busy', - 60: 'DB_PERF_SEL_tile_wr_sends', - 61: 'DB_PERF_SEL_tile_wr_acks', - 62: 'DB_PERF_SEL_mi_tile_wr_outstanding_sum', - 63: 'DB_PERF_SEL_quad_wr_sends', - 64: 'DB_PERF_SEL_quad_wr_busy', - 65: 'DB_PERF_SEL_quad_wr_mi_stall', - 66: 'DB_PERF_SEL_quad_wr_coherency_stall', - 67: 'DB_PERF_SEL_quad_wr_acks', - 68: 'DB_PERF_SEL_mi_quad_wr_outstanding_sum', - 69: 'DB_PERF_SEL_Tile_Cache_misses', - 70: 'DB_PERF_SEL_Tile_Cache_hits', - 71: 'DB_PERF_SEL_Tile_Cache_flushes', - 72: 'DB_PERF_SEL_Tile_Cache_surface_stall', - 73: 'DB_PERF_SEL_Tile_Cache_starves', - 74: 'DB_PERF_SEL_Tile_Cache_mem_return_starve', - 75: 'DB_PERF_SEL_tcp_dispatcher_reads', - 76: 'DB_PERF_SEL_tcp_prefetcher_reads', - 77: 'DB_PERF_SEL_tcp_preloader_reads', - 78: 'DB_PERF_SEL_tcp_dispatcher_flushes', - 79: 'DB_PERF_SEL_tcp_prefetcher_flushes', - 80: 'DB_PERF_SEL_tcp_preloader_flushes', - 81: 'DB_PERF_SEL_Depth_Tile_Cache_sends', - 82: 'DB_PERF_SEL_Depth_Tile_Cache_busy', - 83: 'DB_PERF_SEL_Depth_Tile_Cache_starves', - 84: 'DB_PERF_SEL_Depth_Tile_Cache_dtile_locked', - 85: 'DB_PERF_SEL_Depth_Tile_Cache_alloc_stall', - 86: 'DB_PERF_SEL_Depth_Tile_Cache_misses', - 87: 'DB_PERF_SEL_Depth_Tile_Cache_hits', - 88: 'DB_PERF_SEL_Depth_Tile_Cache_flushes', - 89: 'DB_PERF_SEL_Depth_Tile_Cache_noop_tile', - 90: 'DB_PERF_SEL_Depth_Tile_Cache_detailed_noop', - 91: 'DB_PERF_SEL_Depth_Tile_Cache_event', - 92: 'DB_PERF_SEL_Depth_Tile_Cache_tile_frees', - 93: 'DB_PERF_SEL_Depth_Tile_Cache_data_frees', - 94: 'DB_PERF_SEL_Depth_Tile_Cache_mem_return_starve', - 95: 'DB_PERF_SEL_Stencil_Cache_misses', - 96: 'DB_PERF_SEL_Stencil_Cache_hits', - 97: 'DB_PERF_SEL_Stencil_Cache_flushes', - 98: 'DB_PERF_SEL_Stencil_Cache_starves', - 99: 'DB_PERF_SEL_Stencil_Cache_frees', - 100: 'DB_PERF_SEL_Z_Cache_separate_Z_misses', - 101: 'DB_PERF_SEL_Z_Cache_separate_Z_hits', - 102: 'DB_PERF_SEL_Z_Cache_separate_Z_flushes', - 103: 'DB_PERF_SEL_Z_Cache_separate_Z_starves', - 104: 'DB_PERF_SEL_Z_Cache_pmask_misses', - 105: 'DB_PERF_SEL_Z_Cache_pmask_hits', - 106: 'DB_PERF_SEL_Z_Cache_pmask_flushes', - 107: 'DB_PERF_SEL_Z_Cache_pmask_starves', - 108: 'DB_PERF_SEL_Z_Cache_frees', - 109: 'DB_PERF_SEL_Plane_Cache_misses', - 110: 'DB_PERF_SEL_Plane_Cache_hits', - 111: 'DB_PERF_SEL_Plane_Cache_flushes', - 112: 'DB_PERF_SEL_Plane_Cache_starves', - 113: 'DB_PERF_SEL_Plane_Cache_frees', - 114: 'DB_PERF_SEL_flush_expanded_stencil', - 115: 'DB_PERF_SEL_flush_compressed_stencil', - 116: 'DB_PERF_SEL_flush_single_stencil', - 117: 'DB_PERF_SEL_planes_flushed', - 118: 'DB_PERF_SEL_flush_1plane', - 119: 'DB_PERF_SEL_flush_2plane', - 120: 'DB_PERF_SEL_flush_3plane', - 121: 'DB_PERF_SEL_flush_4plane', - 122: 'DB_PERF_SEL_flush_5plane', - 123: 'DB_PERF_SEL_flush_6plane', - 124: 'DB_PERF_SEL_flush_7plane', - 125: 'DB_PERF_SEL_flush_8plane', - 126: 'DB_PERF_SEL_flush_9plane', - 127: 'DB_PERF_SEL_flush_10plane', - 128: 'DB_PERF_SEL_flush_11plane', - 129: 'DB_PERF_SEL_flush_12plane', - 130: 'DB_PERF_SEL_flush_13plane', - 131: 'DB_PERF_SEL_flush_14plane', - 132: 'DB_PERF_SEL_flush_15plane', - 133: 'DB_PERF_SEL_flush_16plane', - 134: 'DB_PERF_SEL_flush_expanded_z', - 135: 'DB_PERF_SEL_earlyZ_waiting_for_postZ_done', - 136: 'DB_PERF_SEL_reZ_waiting_for_postZ_done', - 137: 'DB_PERF_SEL_dk_tile_sends', - 138: 'DB_PERF_SEL_dk_tile_busy', - 139: 'DB_PERF_SEL_dk_tile_quad_starves', - 140: 'DB_PERF_SEL_dk_tile_stalls', - 141: 'DB_PERF_SEL_dk_squad_sends', - 142: 'DB_PERF_SEL_dk_squad_busy', - 143: 'DB_PERF_SEL_dk_squad_stalls', - 144: 'DB_PERF_SEL_Op_Pipe_Busy', - 145: 'DB_PERF_SEL_Op_Pipe_MC_Read_stall', - 146: 'DB_PERF_SEL_qc_busy', - 147: 'DB_PERF_SEL_qc_xfc', - 148: 'DB_PERF_SEL_qc_conflicts', - 149: 'DB_PERF_SEL_qc_full_stall', - 150: 'DB_PERF_SEL_qc_in_preZ_tile_stalls_postZ', - 151: 'DB_PERF_SEL_qc_in_postZ_tile_stalls_preZ', - 152: 'DB_PERF_SEL_tsc_insert_summarize_stall', - 153: 'DB_PERF_SEL_tl_busy', - 154: 'DB_PERF_SEL_tl_dtc_read_starved', - 155: 'DB_PERF_SEL_tl_z_fetch_stall', - 156: 'DB_PERF_SEL_tl_stencil_stall', - 157: 'DB_PERF_SEL_tl_z_decompress_stall', - 158: 'DB_PERF_SEL_tl_stencil_locked_stall', - 159: 'DB_PERF_SEL_tl_events', - 160: 'DB_PERF_SEL_tl_summarize_squads', - 161: 'DB_PERF_SEL_tl_flush_expand_squads', - 162: 'DB_PERF_SEL_tl_expand_squads', - 163: 'DB_PERF_SEL_tl_preZ_squads', - 164: 'DB_PERF_SEL_tl_postZ_squads', - 165: 'DB_PERF_SEL_tl_preZ_noop_squads', - 166: 'DB_PERF_SEL_tl_postZ_noop_squads', - 167: 'DB_PERF_SEL_tl_tile_ops', - 168: 'DB_PERF_SEL_tl_in_xfc', - 169: 'DB_PERF_SEL_tl_in_single_stencil_expand_stall', - 170: 'DB_PERF_SEL_tl_in_fast_z_stall', - 171: 'DB_PERF_SEL_tl_out_xfc', - 172: 'DB_PERF_SEL_tl_out_squads', - 173: 'DB_PERF_SEL_zf_plane_multicycle', - 174: 'DB_PERF_SEL_PostZ_Samples_passing_Z', - 175: 'DB_PERF_SEL_PostZ_Samples_failing_Z', - 176: 'DB_PERF_SEL_PostZ_Samples_failing_S', - 177: 'DB_PERF_SEL_PreZ_Samples_passing_Z', - 178: 'DB_PERF_SEL_PreZ_Samples_failing_Z', - 179: 'DB_PERF_SEL_PreZ_Samples_failing_S', - 180: 'DB_PERF_SEL_ts_tc_update_stall', - 181: 'DB_PERF_SEL_sc_kick_start', - 182: 'DB_PERF_SEL_sc_kick_end', - 183: 'DB_PERF_SEL_clock_reg_active', - 184: 'DB_PERF_SEL_clock_main_active', - 185: 'DB_PERF_SEL_clock_mem_export_active', - 186: 'DB_PERF_SEL_esr_ps_out_busy', - 187: 'DB_PERF_SEL_esr_ps_lqf_busy', - 188: 'DB_PERF_SEL_esr_ps_lqf_stall', - 189: 'DB_PERF_SEL_etr_out_send', - 190: 'DB_PERF_SEL_etr_out_busy', - 191: 'DB_PERF_SEL_etr_out_ltile_probe_fifo_full_stall', - 193: 'DB_PERF_SEL_etr_out_esr_stall', - 194: 'DB_PERF_SEL_esr_ps_vic_busy', - 195: 'DB_PERF_SEL_esr_ps_vic_stall', - 196: 'DB_PERF_SEL_esr_eot_fwd_busy', - 197: 'DB_PERF_SEL_esr_eot_fwd_holding_squad', - 198: 'DB_PERF_SEL_esr_eot_fwd_forward', - 199: 'DB_PERF_SEL_esr_sqq_zi_busy', - 200: 'DB_PERF_SEL_esr_sqq_zi_stall', - 201: 'DB_PERF_SEL_postzl_sq_pt_busy', - 202: 'DB_PERF_SEL_postzl_sq_pt_stall', - 203: 'DB_PERF_SEL_postzl_se_busy', - 204: 'DB_PERF_SEL_postzl_se_stall', - 205: 'DB_PERF_SEL_postzl_partial_launch', - 206: 'DB_PERF_SEL_postzl_full_launch', - 207: 'DB_PERF_SEL_postzl_partial_waiting', - 208: 'DB_PERF_SEL_postzl_tile_mem_stall', - 209: 'DB_PERF_SEL_postzl_tile_init_stall', - 210: 'DB_PERF_SEL_prezl_tile_mem_stall', - 211: 'DB_PERF_SEL_prezl_tile_init_stall', - 212: 'DB_PERF_SEL_dtt_sm_clash_stall', - 213: 'DB_PERF_SEL_dtt_sm_slot_stall', - 214: 'DB_PERF_SEL_dtt_sm_miss_stall', - 215: 'DB_PERF_SEL_mi_rdreq_busy', - 216: 'DB_PERF_SEL_mi_rdreq_stall', - 217: 'DB_PERF_SEL_mi_wrreq_busy', - 218: 'DB_PERF_SEL_mi_wrreq_stall', - 219: 'DB_PERF_SEL_recomp_tile_to_1zplane_no_fastop', - 220: 'DB_PERF_SEL_dkg_tile_rate_tile', - 221: 'DB_PERF_SEL_prezl_src_in_sends', - 222: 'DB_PERF_SEL_prezl_src_in_stall', - 223: 'DB_PERF_SEL_prezl_src_in_squads', - 224: 'DB_PERF_SEL_prezl_src_in_squads_unrolled', - 225: 'DB_PERF_SEL_prezl_src_in_tile_rate', - 226: 'DB_PERF_SEL_prezl_src_in_tile_rate_unrolled', - 227: 'DB_PERF_SEL_prezl_src_out_stall', - 228: 'DB_PERF_SEL_postzl_src_in_sends', - 229: 'DB_PERF_SEL_postzl_src_in_stall', - 230: 'DB_PERF_SEL_postzl_src_in_squads', - 231: 'DB_PERF_SEL_postzl_src_in_squads_unrolled', - 232: 'DB_PERF_SEL_postzl_src_in_tile_rate', - 233: 'DB_PERF_SEL_postzl_src_in_tile_rate_unrolled', - 234: 'DB_PERF_SEL_postzl_src_out_stall', - 235: 'DB_PERF_SEL_esr_ps_src_in_sends', - 236: 'DB_PERF_SEL_esr_ps_src_in_stall', - 237: 'DB_PERF_SEL_esr_ps_src_in_squads', - 238: 'DB_PERF_SEL_esr_ps_src_in_squads_unrolled', - 239: 'DB_PERF_SEL_esr_ps_src_in_tile_rate', - 240: 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled', - 241: 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled_to_pixel_rate', - 242: 'DB_PERF_SEL_esr_ps_src_out_stall', - 243: 'DB_PERF_SEL_depth_bounds_tile_culled', - 244: 'DB_PERF_SEL_PreZ_Samples_failing_DB', - 245: 'DB_PERF_SEL_PostZ_Samples_failing_DB', - 246: 'DB_PERF_SEL_flush_compressed', - 247: 'DB_PERF_SEL_flush_plane_le4', - 248: 'DB_PERF_SEL_tiles_z_fully_summarized', - 249: 'DB_PERF_SEL_tiles_stencil_fully_summarized', - 250: 'DB_PERF_SEL_tiles_z_clear_on_expclear', - 251: 'DB_PERF_SEL_tiles_s_clear_on_expclear', - 252: 'DB_PERF_SEL_tiles_decomp_on_expclear', - 253: 'DB_PERF_SEL_tiles_compressed_to_decompressed', - 254: 'DB_PERF_SEL_Op_Pipe_Prez_Busy', - 255: 'DB_PERF_SEL_Op_Pipe_Postz_Busy', - 256: 'DB_PERF_SEL_di_dt_stall', - 258: 'DB_PERF_SEL_DB_SC_s_tile_rate', - 259: 'DB_PERF_SEL_DB_SC_c_tile_rate', - 260: 'DB_PERF_SEL_DB_SC_z_tile_rate', - 261: 'DB_PERF_SEL_DB_CB_export_export_quads', - 262: 'DB_PERF_SEL_DB_CB_export_double_format', - 263: 'DB_PERF_SEL_DB_CB_export_fast_format', - 264: 'DB_PERF_SEL_DB_CB_export_slow_format', - 265: 'DB_PERF_SEL_CB_DB_rdreq_sends', - 266: 'DB_PERF_SEL_CB_DB_rdreq_prt_sends', - 267: 'DB_PERF_SEL_CB_DB_wrreq_sends', - 268: 'DB_PERF_SEL_CB_DB_wrreq_prt_sends', - 269: 'DB_PERF_SEL_DB_CB_rdret_ack', - 270: 'DB_PERF_SEL_DB_CB_rdret_nack', - 271: 'DB_PERF_SEL_DB_CB_wrret_ack', - 272: 'DB_PERF_SEL_DB_CB_wrret_nack', - 273: 'DB_PERF_SEL_MI_tile_req_wrack_counter_stall', - 274: 'DB_PERF_SEL_MI_quad_req_wrack_counter_stall', - 275: 'DB_PERF_SEL_MI_zpc_req_wrack_counter_stall', - 276: 'DB_PERF_SEL_MI_psd_req_wrack_counter_stall', - 277: 'DB_PERF_SEL_unmapped_z_tile_culled', - 278: 'DB_PERF_SEL_DB_CB_export_is_event_FLUSH_AND_INV_DB_DATA_TS', - 279: 'DB_PERF_SEL_DB_CB_export_is_event_FLUSH_AND_INV_CB_PIXEL_DATA', - 280: 'DB_PERF_SEL_DB_CB_export_is_event_BOTTOM_OF_PIPE_TS', - 281: 'DB_PERF_SEL_DB_CB_export_waiting_for_perfcounter_stop_event', - 282: 'DB_PERF_SEL_DB_CB_export_fmt_32bpp_8pix', - 283: 'DB_PERF_SEL_DB_CB_export_fmt_16_16_unsigned_8pix', - 284: 'DB_PERF_SEL_DB_CB_export_fmt_16_16_signed_8pix', - 285: 'DB_PERF_SEL_DB_CB_export_fmt_16_16_float_8pix', - 286: 'DB_PERF_SEL_DB_CB_export_num_pixels_need_blending', - 287: 'DB_PERF_SEL_DB_CB_context_dones', - 288: 'DB_PERF_SEL_DB_CB_eop_dones', - 289: 'DB_PERF_SEL_SX_DB_quad_all_pixels_killed', - 290: 'DB_PERF_SEL_SX_DB_quad_all_pixels_enabled', - 291: 'DB_PERF_SEL_SX_DB_quad_need_blending_and_dst_read', - 292: 'DB_PERF_SEL_SC_DB_tile_backface', - 293: 'DB_PERF_SEL_SC_DB_quad_quads', - 294: 'DB_PERF_SEL_DB_SC_quad_quads_with_1_pixel', - 295: 'DB_PERF_SEL_DB_SC_quad_quads_with_2_pixels', - 296: 'DB_PERF_SEL_DB_SC_quad_quads_with_3_pixels', - 297: 'DB_PERF_SEL_DB_SC_quad_quads_with_4_pixels', - 298: 'DB_PERF_SEL_DB_SC_quad_double_quad', - 299: 'DB_PERF_SEL_SX_DB_quad_export_quads', - 300: 'DB_PERF_SEL_SX_DB_quad_double_format', - 301: 'DB_PERF_SEL_SX_DB_quad_fast_format', - 302: 'DB_PERF_SEL_SX_DB_quad_slow_format', - 303: 'DB_PERF_SEL_quad_rd_sends_unc', - 304: 'DB_PERF_SEL_quad_rd_mi_stall_unc', - 305: 'DB_PERF_SEL_SC_DB_tile_tiles_pipe0', - 306: 'DB_PERF_SEL_SC_DB_tile_tiles_pipe1', - 307: 'DB_PERF_SEL_SC_DB_quad_quads_pipe0', - 308: 'DB_PERF_SEL_SC_DB_quad_quads_pipe1', - 309: 'DB_PERF_SEL_PERF_fg_lob_fwdr_timeout_hits', - 310: 'DB_PERF_SEL_noz_waiting_for_postz_done', - 311: 'DB_PERF_SEL_DB_CB_export_quads_vrs_rate_1x1', - 312: 'DB_PERF_SEL_DB_CB_export_quads_vrs_rate_2x1', - 313: 'DB_PERF_SEL_DB_CB_export_quads_vrs_rate_1x2', - 314: 'DB_PERF_SEL_DB_CB_export_quads_vrs_rate_2x2', - 315: 'DB_PERF_SEL_RMI_rd_tile_32byte_req', - 316: 'DB_PERF_SEL_RMI_rd_z_32byte_req', - 317: 'DB_PERF_SEL_RMI_rd_s_32byte_req', - 318: 'DB_PERF_SEL_RMI_wr_tile_32byte_req', - 319: 'DB_PERF_SEL_RMI_wr_z_32byte_req', - 320: 'DB_PERF_SEL_RMI_wr_s_32byte_req', - 321: 'DB_PERF_SEL_RMI_wr_psdzpc_32byte_req', - 322: 'DB_PERF_SEL_RMI_rd_tile_32byte_ret', - 323: 'DB_PERF_SEL_RMI_rd_z_32byte_ret', - 324: 'DB_PERF_SEL_RMI_rd_s_32byte_ret', - 325: 'DB_PERF_SEL_RMI_wr_tile_32byte_ack', - 326: 'DB_PERF_SEL_RMI_wr_z_32byte_ack', - 327: 'DB_PERF_SEL_RMI_wr_s_32byte_ack', - 328: 'DB_PERF_SEL_RMI_wr_psdzpc_32byte_ack', - 329: 'DB_PERF_SEL_esr_vic_sqq_busy', - 330: 'DB_PERF_SEL_esr_vic_sqq_stall', - 331: 'DB_PERF_SEL_esr_psi_vic_tile_rate', - 332: 'DB_PERF_SEL_esr_vic_footprint_match_2x2', - 333: 'DB_PERF_SEL_esr_vic_footprint_match_2x1', - 334: 'DB_PERF_SEL_esr_vic_footprint_match_1x2', - 335: 'DB_PERF_SEL_DB_SC_quad_num_null_2x2_coarse_pixels', - 336: 'DB_PERF_SEL_DB_SC_quad_num_null_2x1_coarse_pixels', - 337: 'DB_PERF_SEL_DB_SC_quad_num_null_1x2_coarse_pixels', - 338: 'DB_PERF_SEL_hi_z_s_checker_force_coarse_vrs_1x1', - 339: 'DB_PERF_SEL_hi_z_s_checker_force_ssaa_vrs_1x1', - 340: 'DB_PERF_SEL_esr_ps_woc_1squadIn_2squadOut', - 341: 'DB_PERF_SEL_esr_ps_woc_2squadIn_1squadOut', - 342: 'DB_PERF_SEL_prez_ps_invoked_pixel_cnt', - 343: 'DB_PERF_SEL_postz_ps_invoked_pixel_cnt', - 344: 'DB_PERF_SEL_ts_events_pws_enable', - 345: 'DB_PERF_SEL_ps_events_pws_enable', - 346: 'DB_PERF_SEL_cs_events_pws_enable', - 347: 'DB_PERF_SEL_DB_SC_quad_noz_tiles', - 348: 'DB_PERF_SEL_DB_SC_quad_lit_noz_quad', - 349: 'DB_PERF_SEL_DB_SC_quad_conflicts', - 350: 'DB_PERF_SEL_SC_DB_quad_vrs_1x1', - 351: 'DB_PERF_SEL_SC_DB_quad_vrs_1x2', - 352: 'DB_PERF_SEL_SC_DB_quad_vrs_2x1', - 353: 'DB_PERF_SEL_SC_DB_quad_vrs_2x2', - 354: 'DB_PERF_SEL_SC_DB_quad_vrs_2x_ssaa', - 355: 'DB_PERF_SEL_SC_DB_quad_vrs_4x_ssaa', - 356: 'DB_PERF_SEL_SC_DB_quad_vrs_8x_ssaa', - 357: 'DB_PERF_SEL_SC_DB_wave_sends', - 358: 'DB_PERF_SEL_SC_DB_wave_busy', - 359: 'DB_PERF_SEL_SC_DB_wave_quads', - 360: 'DB_PERF_SEL_SC_DB_wave_id_wrapped', - 361: 'DB_PERF_SEL_DB_SC_wave_sends', - 362: 'DB_PERF_SEL_DB_SC_wave_busy', - 363: 'DB_PERF_SEL_DB_SC_wave_stalls', - 364: 'DB_PERF_SEL_DB_SC_wave_conflict', - 365: 'DB_PERF_SEL_DB_SC_wave_hard_conflict', - 366: 'DB_PERF_SEL_DB_SC_wave_id_wrapped', - 367: 'DB_PERF_SEL_SX_DB_quad_waves', - 368: 'DB_PERF_SEL_pws_stall', - 369: 'DB_PERF_SEL_pws_liveness_stall_dtt_tag', - 370: 'DB_PERF_SEL_pws_liveness_stall_tcp_cache_mgr', - 371: 'DB_PERF_SEL_OREO_TT_load', - 372: 'DB_PERF_SEL_OREO_TT_read', - 373: 'DB_PERF_SEL_OREO_TT_stalls', - 374: 'DB_PERF_SEL_OREO_ST_load', - 375: 'DB_PERF_SEL_OREO_ST_read', - 376: 'DB_PERF_SEL_OREO_ST_stalls', - 377: 'DB_PERF_SEL_OREO_WT_load', - 378: 'DB_PERF_SEL_OREO_WT_read', - 379: 'DB_PERF_SEL_OREO_SB_misses', - 380: 'DB_PERF_SEL_OREO_SB_hits', - 381: 'DB_PERF_SEL_OREO_SB_evicts', - 382: 'DB_PERF_SEL_OREO_SB_stalls', - 383: 'DB_PERF_SEL_OREO_Events_load', - 384: 'DB_PERF_SEL_OREO_Events_transition', - 385: 'DB_PERF_SEL_OREO_Events_non_transition', - 386: 'DB_PERF_SEL_OREO_Events_delayed', - 387: 'DB_PERF_SEL_OREO_Events_stalls', -} -DB_PERF_SEL_SC_DB_tile_sends = 0 -DB_PERF_SEL_SC_DB_tile_busy = 1 -DB_PERF_SEL_SC_DB_tile_stalls = 2 -DB_PERF_SEL_SC_DB_tile_events = 3 -DB_PERF_SEL_SC_DB_tile_tiles = 4 -DB_PERF_SEL_SC_DB_tile_covered = 5 -DB_PERF_SEL_hiz_tc_read_starved = 6 -DB_PERF_SEL_hiz_tc_write_stall = 7 -DB_PERF_SEL_hiz_tile_culled = 8 -DB_PERF_SEL_his_tile_culled = 9 -DB_PERF_SEL_DB_SC_tile_sends = 10 -DB_PERF_SEL_DB_SC_tile_busy = 11 -DB_PERF_SEL_DB_SC_tile_stalls = 12 -DB_PERF_SEL_DB_SC_tile_df_stalls = 13 -DB_PERF_SEL_DB_SC_tile_tiles = 14 -DB_PERF_SEL_DB_SC_tile_culled = 15 -DB_PERF_SEL_DB_SC_tile_hier_kill = 16 -DB_PERF_SEL_DB_SC_tile_fast_ops = 17 -DB_PERF_SEL_DB_SC_tile_no_ops = 18 -DB_PERF_SEL_DB_SC_tile_tile_rate = 19 -DB_PERF_SEL_DB_SC_tile_ssaa_kill = 20 -DB_PERF_SEL_DB_SC_tile_fast_z_ops = 21 -DB_PERF_SEL_DB_SC_tile_fast_stencil_ops = 22 -DB_PERF_SEL_SC_DB_quad_sends = 23 -DB_PERF_SEL_SC_DB_quad_busy = 24 -DB_PERF_SEL_SC_DB_quad_squads = 25 -DB_PERF_SEL_SC_DB_quad_tiles = 26 -DB_PERF_SEL_SC_DB_quad_pixels = 27 -DB_PERF_SEL_SC_DB_quad_killed_tiles = 28 -DB_PERF_SEL_DB_SC_quad_sends = 29 -DB_PERF_SEL_DB_SC_quad_busy = 30 -DB_PERF_SEL_DB_SC_quad_stalls = 31 -DB_PERF_SEL_DB_SC_quad_tiles = 32 -DB_PERF_SEL_DB_SC_quad_lit_quad = 33 -DB_PERF_SEL_DB_CB_export_events = 34 -DB_PERF_SEL_SX_DB_quad_sends = 37 -DB_PERF_SEL_SX_DB_quad_busy = 38 -DB_PERF_SEL_SX_DB_quad_stalls = 39 -DB_PERF_SEL_SX_DB_quad_quads = 40 -DB_PERF_SEL_SX_DB_quad_pixels = 41 -DB_PERF_SEL_SX_DB_quad_exports = 42 -DB_PERF_SEL_SH_quads_outstanding_sum = 43 -DB_PERF_SEL_DB_CB_export_sends = 44 -DB_PERF_SEL_DB_CB_export_busy = 45 -DB_PERF_SEL_DB_CB_export_stalls = 46 -DB_PERF_SEL_DB_CB_export_quads = 47 -DB_PERF_SEL_tile_rd_sends = 48 -DB_PERF_SEL_mi_tile_rd_outstanding_sum = 49 -DB_PERF_SEL_quad_rd_sends = 50 -DB_PERF_SEL_quad_rd_busy = 51 -DB_PERF_SEL_quad_rd_mi_stall = 52 -DB_PERF_SEL_quad_rd_rw_collision = 53 -DB_PERF_SEL_quad_rd_tag_stall = 54 -DB_PERF_SEL_quad_rd_32byte_reqs = 55 -DB_PERF_SEL_quad_rd_panic = 56 -DB_PERF_SEL_mi_quad_rd_outstanding_sum = 57 -DB_PERF_SEL_quad_rdret_sends = 58 -DB_PERF_SEL_quad_rdret_busy = 59 -DB_PERF_SEL_tile_wr_sends = 60 -DB_PERF_SEL_tile_wr_acks = 61 -DB_PERF_SEL_mi_tile_wr_outstanding_sum = 62 -DB_PERF_SEL_quad_wr_sends = 63 -DB_PERF_SEL_quad_wr_busy = 64 -DB_PERF_SEL_quad_wr_mi_stall = 65 -DB_PERF_SEL_quad_wr_coherency_stall = 66 -DB_PERF_SEL_quad_wr_acks = 67 -DB_PERF_SEL_mi_quad_wr_outstanding_sum = 68 -DB_PERF_SEL_Tile_Cache_misses = 69 -DB_PERF_SEL_Tile_Cache_hits = 70 -DB_PERF_SEL_Tile_Cache_flushes = 71 -DB_PERF_SEL_Tile_Cache_surface_stall = 72 -DB_PERF_SEL_Tile_Cache_starves = 73 -DB_PERF_SEL_Tile_Cache_mem_return_starve = 74 -DB_PERF_SEL_tcp_dispatcher_reads = 75 -DB_PERF_SEL_tcp_prefetcher_reads = 76 -DB_PERF_SEL_tcp_preloader_reads = 77 -DB_PERF_SEL_tcp_dispatcher_flushes = 78 -DB_PERF_SEL_tcp_prefetcher_flushes = 79 -DB_PERF_SEL_tcp_preloader_flushes = 80 -DB_PERF_SEL_Depth_Tile_Cache_sends = 81 -DB_PERF_SEL_Depth_Tile_Cache_busy = 82 -DB_PERF_SEL_Depth_Tile_Cache_starves = 83 -DB_PERF_SEL_Depth_Tile_Cache_dtile_locked = 84 -DB_PERF_SEL_Depth_Tile_Cache_alloc_stall = 85 -DB_PERF_SEL_Depth_Tile_Cache_misses = 86 -DB_PERF_SEL_Depth_Tile_Cache_hits = 87 -DB_PERF_SEL_Depth_Tile_Cache_flushes = 88 -DB_PERF_SEL_Depth_Tile_Cache_noop_tile = 89 -DB_PERF_SEL_Depth_Tile_Cache_detailed_noop = 90 -DB_PERF_SEL_Depth_Tile_Cache_event = 91 -DB_PERF_SEL_Depth_Tile_Cache_tile_frees = 92 -DB_PERF_SEL_Depth_Tile_Cache_data_frees = 93 -DB_PERF_SEL_Depth_Tile_Cache_mem_return_starve = 94 -DB_PERF_SEL_Stencil_Cache_misses = 95 -DB_PERF_SEL_Stencil_Cache_hits = 96 -DB_PERF_SEL_Stencil_Cache_flushes = 97 -DB_PERF_SEL_Stencil_Cache_starves = 98 -DB_PERF_SEL_Stencil_Cache_frees = 99 -DB_PERF_SEL_Z_Cache_separate_Z_misses = 100 -DB_PERF_SEL_Z_Cache_separate_Z_hits = 101 -DB_PERF_SEL_Z_Cache_separate_Z_flushes = 102 -DB_PERF_SEL_Z_Cache_separate_Z_starves = 103 -DB_PERF_SEL_Z_Cache_pmask_misses = 104 -DB_PERF_SEL_Z_Cache_pmask_hits = 105 -DB_PERF_SEL_Z_Cache_pmask_flushes = 106 -DB_PERF_SEL_Z_Cache_pmask_starves = 107 -DB_PERF_SEL_Z_Cache_frees = 108 -DB_PERF_SEL_Plane_Cache_misses = 109 -DB_PERF_SEL_Plane_Cache_hits = 110 -DB_PERF_SEL_Plane_Cache_flushes = 111 -DB_PERF_SEL_Plane_Cache_starves = 112 -DB_PERF_SEL_Plane_Cache_frees = 113 -DB_PERF_SEL_flush_expanded_stencil = 114 -DB_PERF_SEL_flush_compressed_stencil = 115 -DB_PERF_SEL_flush_single_stencil = 116 -DB_PERF_SEL_planes_flushed = 117 -DB_PERF_SEL_flush_1plane = 118 -DB_PERF_SEL_flush_2plane = 119 -DB_PERF_SEL_flush_3plane = 120 -DB_PERF_SEL_flush_4plane = 121 -DB_PERF_SEL_flush_5plane = 122 -DB_PERF_SEL_flush_6plane = 123 -DB_PERF_SEL_flush_7plane = 124 -DB_PERF_SEL_flush_8plane = 125 -DB_PERF_SEL_flush_9plane = 126 -DB_PERF_SEL_flush_10plane = 127 -DB_PERF_SEL_flush_11plane = 128 -DB_PERF_SEL_flush_12plane = 129 -DB_PERF_SEL_flush_13plane = 130 -DB_PERF_SEL_flush_14plane = 131 -DB_PERF_SEL_flush_15plane = 132 -DB_PERF_SEL_flush_16plane = 133 -DB_PERF_SEL_flush_expanded_z = 134 -DB_PERF_SEL_earlyZ_waiting_for_postZ_done = 135 -DB_PERF_SEL_reZ_waiting_for_postZ_done = 136 -DB_PERF_SEL_dk_tile_sends = 137 -DB_PERF_SEL_dk_tile_busy = 138 -DB_PERF_SEL_dk_tile_quad_starves = 139 -DB_PERF_SEL_dk_tile_stalls = 140 -DB_PERF_SEL_dk_squad_sends = 141 -DB_PERF_SEL_dk_squad_busy = 142 -DB_PERF_SEL_dk_squad_stalls = 143 -DB_PERF_SEL_Op_Pipe_Busy = 144 -DB_PERF_SEL_Op_Pipe_MC_Read_stall = 145 -DB_PERF_SEL_qc_busy = 146 -DB_PERF_SEL_qc_xfc = 147 -DB_PERF_SEL_qc_conflicts = 148 -DB_PERF_SEL_qc_full_stall = 149 -DB_PERF_SEL_qc_in_preZ_tile_stalls_postZ = 150 -DB_PERF_SEL_qc_in_postZ_tile_stalls_preZ = 151 -DB_PERF_SEL_tsc_insert_summarize_stall = 152 -DB_PERF_SEL_tl_busy = 153 -DB_PERF_SEL_tl_dtc_read_starved = 154 -DB_PERF_SEL_tl_z_fetch_stall = 155 -DB_PERF_SEL_tl_stencil_stall = 156 -DB_PERF_SEL_tl_z_decompress_stall = 157 -DB_PERF_SEL_tl_stencil_locked_stall = 158 -DB_PERF_SEL_tl_events = 159 -DB_PERF_SEL_tl_summarize_squads = 160 -DB_PERF_SEL_tl_flush_expand_squads = 161 -DB_PERF_SEL_tl_expand_squads = 162 -DB_PERF_SEL_tl_preZ_squads = 163 -DB_PERF_SEL_tl_postZ_squads = 164 -DB_PERF_SEL_tl_preZ_noop_squads = 165 -DB_PERF_SEL_tl_postZ_noop_squads = 166 -DB_PERF_SEL_tl_tile_ops = 167 -DB_PERF_SEL_tl_in_xfc = 168 -DB_PERF_SEL_tl_in_single_stencil_expand_stall = 169 -DB_PERF_SEL_tl_in_fast_z_stall = 170 -DB_PERF_SEL_tl_out_xfc = 171 -DB_PERF_SEL_tl_out_squads = 172 -DB_PERF_SEL_zf_plane_multicycle = 173 -DB_PERF_SEL_PostZ_Samples_passing_Z = 174 -DB_PERF_SEL_PostZ_Samples_failing_Z = 175 -DB_PERF_SEL_PostZ_Samples_failing_S = 176 -DB_PERF_SEL_PreZ_Samples_passing_Z = 177 -DB_PERF_SEL_PreZ_Samples_failing_Z = 178 -DB_PERF_SEL_PreZ_Samples_failing_S = 179 -DB_PERF_SEL_ts_tc_update_stall = 180 -DB_PERF_SEL_sc_kick_start = 181 -DB_PERF_SEL_sc_kick_end = 182 -DB_PERF_SEL_clock_reg_active = 183 -DB_PERF_SEL_clock_main_active = 184 -DB_PERF_SEL_clock_mem_export_active = 185 -DB_PERF_SEL_esr_ps_out_busy = 186 -DB_PERF_SEL_esr_ps_lqf_busy = 187 -DB_PERF_SEL_esr_ps_lqf_stall = 188 -DB_PERF_SEL_etr_out_send = 189 -DB_PERF_SEL_etr_out_busy = 190 -DB_PERF_SEL_etr_out_ltile_probe_fifo_full_stall = 191 -DB_PERF_SEL_etr_out_esr_stall = 193 -DB_PERF_SEL_esr_ps_vic_busy = 194 -DB_PERF_SEL_esr_ps_vic_stall = 195 -DB_PERF_SEL_esr_eot_fwd_busy = 196 -DB_PERF_SEL_esr_eot_fwd_holding_squad = 197 -DB_PERF_SEL_esr_eot_fwd_forward = 198 -DB_PERF_SEL_esr_sqq_zi_busy = 199 -DB_PERF_SEL_esr_sqq_zi_stall = 200 -DB_PERF_SEL_postzl_sq_pt_busy = 201 -DB_PERF_SEL_postzl_sq_pt_stall = 202 -DB_PERF_SEL_postzl_se_busy = 203 -DB_PERF_SEL_postzl_se_stall = 204 -DB_PERF_SEL_postzl_partial_launch = 205 -DB_PERF_SEL_postzl_full_launch = 206 -DB_PERF_SEL_postzl_partial_waiting = 207 -DB_PERF_SEL_postzl_tile_mem_stall = 208 -DB_PERF_SEL_postzl_tile_init_stall = 209 -DB_PERF_SEL_prezl_tile_mem_stall = 210 -DB_PERF_SEL_prezl_tile_init_stall = 211 -DB_PERF_SEL_dtt_sm_clash_stall = 212 -DB_PERF_SEL_dtt_sm_slot_stall = 213 -DB_PERF_SEL_dtt_sm_miss_stall = 214 -DB_PERF_SEL_mi_rdreq_busy = 215 -DB_PERF_SEL_mi_rdreq_stall = 216 -DB_PERF_SEL_mi_wrreq_busy = 217 -DB_PERF_SEL_mi_wrreq_stall = 218 -DB_PERF_SEL_recomp_tile_to_1zplane_no_fastop = 219 -DB_PERF_SEL_dkg_tile_rate_tile = 220 -DB_PERF_SEL_prezl_src_in_sends = 221 -DB_PERF_SEL_prezl_src_in_stall = 222 -DB_PERF_SEL_prezl_src_in_squads = 223 -DB_PERF_SEL_prezl_src_in_squads_unrolled = 224 -DB_PERF_SEL_prezl_src_in_tile_rate = 225 -DB_PERF_SEL_prezl_src_in_tile_rate_unrolled = 226 -DB_PERF_SEL_prezl_src_out_stall = 227 -DB_PERF_SEL_postzl_src_in_sends = 228 -DB_PERF_SEL_postzl_src_in_stall = 229 -DB_PERF_SEL_postzl_src_in_squads = 230 -DB_PERF_SEL_postzl_src_in_squads_unrolled = 231 -DB_PERF_SEL_postzl_src_in_tile_rate = 232 -DB_PERF_SEL_postzl_src_in_tile_rate_unrolled = 233 -DB_PERF_SEL_postzl_src_out_stall = 234 -DB_PERF_SEL_esr_ps_src_in_sends = 235 -DB_PERF_SEL_esr_ps_src_in_stall = 236 -DB_PERF_SEL_esr_ps_src_in_squads = 237 -DB_PERF_SEL_esr_ps_src_in_squads_unrolled = 238 -DB_PERF_SEL_esr_ps_src_in_tile_rate = 239 -DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled = 240 -DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled_to_pixel_rate = 241 -DB_PERF_SEL_esr_ps_src_out_stall = 242 -DB_PERF_SEL_depth_bounds_tile_culled = 243 -DB_PERF_SEL_PreZ_Samples_failing_DB = 244 -DB_PERF_SEL_PostZ_Samples_failing_DB = 245 -DB_PERF_SEL_flush_compressed = 246 -DB_PERF_SEL_flush_plane_le4 = 247 -DB_PERF_SEL_tiles_z_fully_summarized = 248 -DB_PERF_SEL_tiles_stencil_fully_summarized = 249 -DB_PERF_SEL_tiles_z_clear_on_expclear = 250 -DB_PERF_SEL_tiles_s_clear_on_expclear = 251 -DB_PERF_SEL_tiles_decomp_on_expclear = 252 -DB_PERF_SEL_tiles_compressed_to_decompressed = 253 -DB_PERF_SEL_Op_Pipe_Prez_Busy = 254 -DB_PERF_SEL_Op_Pipe_Postz_Busy = 255 -DB_PERF_SEL_di_dt_stall = 256 -DB_PERF_SEL_DB_SC_s_tile_rate = 258 -DB_PERF_SEL_DB_SC_c_tile_rate = 259 -DB_PERF_SEL_DB_SC_z_tile_rate = 260 -DB_PERF_SEL_DB_CB_export_export_quads = 261 -DB_PERF_SEL_DB_CB_export_double_format = 262 -DB_PERF_SEL_DB_CB_export_fast_format = 263 -DB_PERF_SEL_DB_CB_export_slow_format = 264 -DB_PERF_SEL_CB_DB_rdreq_sends = 265 -DB_PERF_SEL_CB_DB_rdreq_prt_sends = 266 -DB_PERF_SEL_CB_DB_wrreq_sends = 267 -DB_PERF_SEL_CB_DB_wrreq_prt_sends = 268 -DB_PERF_SEL_DB_CB_rdret_ack = 269 -DB_PERF_SEL_DB_CB_rdret_nack = 270 -DB_PERF_SEL_DB_CB_wrret_ack = 271 -DB_PERF_SEL_DB_CB_wrret_nack = 272 -DB_PERF_SEL_MI_tile_req_wrack_counter_stall = 273 -DB_PERF_SEL_MI_quad_req_wrack_counter_stall = 274 -DB_PERF_SEL_MI_zpc_req_wrack_counter_stall = 275 -DB_PERF_SEL_MI_psd_req_wrack_counter_stall = 276 -DB_PERF_SEL_unmapped_z_tile_culled = 277 -DB_PERF_SEL_DB_CB_export_is_event_FLUSH_AND_INV_DB_DATA_TS = 278 -DB_PERF_SEL_DB_CB_export_is_event_FLUSH_AND_INV_CB_PIXEL_DATA = 279 -DB_PERF_SEL_DB_CB_export_is_event_BOTTOM_OF_PIPE_TS = 280 -DB_PERF_SEL_DB_CB_export_waiting_for_perfcounter_stop_event = 281 -DB_PERF_SEL_DB_CB_export_fmt_32bpp_8pix = 282 -DB_PERF_SEL_DB_CB_export_fmt_16_16_unsigned_8pix = 283 -DB_PERF_SEL_DB_CB_export_fmt_16_16_signed_8pix = 284 -DB_PERF_SEL_DB_CB_export_fmt_16_16_float_8pix = 285 -DB_PERF_SEL_DB_CB_export_num_pixels_need_blending = 286 -DB_PERF_SEL_DB_CB_context_dones = 287 -DB_PERF_SEL_DB_CB_eop_dones = 288 -DB_PERF_SEL_SX_DB_quad_all_pixels_killed = 289 -DB_PERF_SEL_SX_DB_quad_all_pixels_enabled = 290 -DB_PERF_SEL_SX_DB_quad_need_blending_and_dst_read = 291 -DB_PERF_SEL_SC_DB_tile_backface = 292 -DB_PERF_SEL_SC_DB_quad_quads = 293 -DB_PERF_SEL_DB_SC_quad_quads_with_1_pixel = 294 -DB_PERF_SEL_DB_SC_quad_quads_with_2_pixels = 295 -DB_PERF_SEL_DB_SC_quad_quads_with_3_pixels = 296 -DB_PERF_SEL_DB_SC_quad_quads_with_4_pixels = 297 -DB_PERF_SEL_DB_SC_quad_double_quad = 298 -DB_PERF_SEL_SX_DB_quad_export_quads = 299 -DB_PERF_SEL_SX_DB_quad_double_format = 300 -DB_PERF_SEL_SX_DB_quad_fast_format = 301 -DB_PERF_SEL_SX_DB_quad_slow_format = 302 -DB_PERF_SEL_quad_rd_sends_unc = 303 -DB_PERF_SEL_quad_rd_mi_stall_unc = 304 -DB_PERF_SEL_SC_DB_tile_tiles_pipe0 = 305 -DB_PERF_SEL_SC_DB_tile_tiles_pipe1 = 306 -DB_PERF_SEL_SC_DB_quad_quads_pipe0 = 307 -DB_PERF_SEL_SC_DB_quad_quads_pipe1 = 308 -DB_PERF_SEL_PERF_fg_lob_fwdr_timeout_hits = 309 -DB_PERF_SEL_noz_waiting_for_postz_done = 310 -DB_PERF_SEL_DB_CB_export_quads_vrs_rate_1x1 = 311 -DB_PERF_SEL_DB_CB_export_quads_vrs_rate_2x1 = 312 -DB_PERF_SEL_DB_CB_export_quads_vrs_rate_1x2 = 313 -DB_PERF_SEL_DB_CB_export_quads_vrs_rate_2x2 = 314 -DB_PERF_SEL_RMI_rd_tile_32byte_req = 315 -DB_PERF_SEL_RMI_rd_z_32byte_req = 316 -DB_PERF_SEL_RMI_rd_s_32byte_req = 317 -DB_PERF_SEL_RMI_wr_tile_32byte_req = 318 -DB_PERF_SEL_RMI_wr_z_32byte_req = 319 -DB_PERF_SEL_RMI_wr_s_32byte_req = 320 -DB_PERF_SEL_RMI_wr_psdzpc_32byte_req = 321 -DB_PERF_SEL_RMI_rd_tile_32byte_ret = 322 -DB_PERF_SEL_RMI_rd_z_32byte_ret = 323 -DB_PERF_SEL_RMI_rd_s_32byte_ret = 324 -DB_PERF_SEL_RMI_wr_tile_32byte_ack = 325 -DB_PERF_SEL_RMI_wr_z_32byte_ack = 326 -DB_PERF_SEL_RMI_wr_s_32byte_ack = 327 -DB_PERF_SEL_RMI_wr_psdzpc_32byte_ack = 328 -DB_PERF_SEL_esr_vic_sqq_busy = 329 -DB_PERF_SEL_esr_vic_sqq_stall = 330 -DB_PERF_SEL_esr_psi_vic_tile_rate = 331 -DB_PERF_SEL_esr_vic_footprint_match_2x2 = 332 -DB_PERF_SEL_esr_vic_footprint_match_2x1 = 333 -DB_PERF_SEL_esr_vic_footprint_match_1x2 = 334 -DB_PERF_SEL_DB_SC_quad_num_null_2x2_coarse_pixels = 335 -DB_PERF_SEL_DB_SC_quad_num_null_2x1_coarse_pixels = 336 -DB_PERF_SEL_DB_SC_quad_num_null_1x2_coarse_pixels = 337 -DB_PERF_SEL_hi_z_s_checker_force_coarse_vrs_1x1 = 338 -DB_PERF_SEL_hi_z_s_checker_force_ssaa_vrs_1x1 = 339 -DB_PERF_SEL_esr_ps_woc_1squadIn_2squadOut = 340 -DB_PERF_SEL_esr_ps_woc_2squadIn_1squadOut = 341 -DB_PERF_SEL_prez_ps_invoked_pixel_cnt = 342 -DB_PERF_SEL_postz_ps_invoked_pixel_cnt = 343 -DB_PERF_SEL_ts_events_pws_enable = 344 -DB_PERF_SEL_ps_events_pws_enable = 345 -DB_PERF_SEL_cs_events_pws_enable = 346 -DB_PERF_SEL_DB_SC_quad_noz_tiles = 347 -DB_PERF_SEL_DB_SC_quad_lit_noz_quad = 348 -DB_PERF_SEL_DB_SC_quad_conflicts = 349 -DB_PERF_SEL_SC_DB_quad_vrs_1x1 = 350 -DB_PERF_SEL_SC_DB_quad_vrs_1x2 = 351 -DB_PERF_SEL_SC_DB_quad_vrs_2x1 = 352 -DB_PERF_SEL_SC_DB_quad_vrs_2x2 = 353 -DB_PERF_SEL_SC_DB_quad_vrs_2x_ssaa = 354 -DB_PERF_SEL_SC_DB_quad_vrs_4x_ssaa = 355 -DB_PERF_SEL_SC_DB_quad_vrs_8x_ssaa = 356 -DB_PERF_SEL_SC_DB_wave_sends = 357 -DB_PERF_SEL_SC_DB_wave_busy = 358 -DB_PERF_SEL_SC_DB_wave_quads = 359 -DB_PERF_SEL_SC_DB_wave_id_wrapped = 360 -DB_PERF_SEL_DB_SC_wave_sends = 361 -DB_PERF_SEL_DB_SC_wave_busy = 362 -DB_PERF_SEL_DB_SC_wave_stalls = 363 -DB_PERF_SEL_DB_SC_wave_conflict = 364 -DB_PERF_SEL_DB_SC_wave_hard_conflict = 365 -DB_PERF_SEL_DB_SC_wave_id_wrapped = 366 -DB_PERF_SEL_SX_DB_quad_waves = 367 -DB_PERF_SEL_pws_stall = 368 -DB_PERF_SEL_pws_liveness_stall_dtt_tag = 369 -DB_PERF_SEL_pws_liveness_stall_tcp_cache_mgr = 370 -DB_PERF_SEL_OREO_TT_load = 371 -DB_PERF_SEL_OREO_TT_read = 372 -DB_PERF_SEL_OREO_TT_stalls = 373 -DB_PERF_SEL_OREO_ST_load = 374 -DB_PERF_SEL_OREO_ST_read = 375 -DB_PERF_SEL_OREO_ST_stalls = 376 -DB_PERF_SEL_OREO_WT_load = 377 -DB_PERF_SEL_OREO_WT_read = 378 -DB_PERF_SEL_OREO_SB_misses = 379 -DB_PERF_SEL_OREO_SB_hits = 380 -DB_PERF_SEL_OREO_SB_evicts = 381 -DB_PERF_SEL_OREO_SB_stalls = 382 -DB_PERF_SEL_OREO_Events_load = 383 -DB_PERF_SEL_OREO_Events_transition = 384 -DB_PERF_SEL_OREO_Events_non_transition = 385 -DB_PERF_SEL_OREO_Events_delayed = 386 -DB_PERF_SEL_OREO_Events_stalls = 387 -PerfCounter_Vals = ctypes.c_uint32 # enum - -# values for enumeration 'PixelPipeCounterId' -PixelPipeCounterId__enumvalues = { - 0: 'PIXEL_PIPE_OCCLUSION_COUNT_0', - 1: 'PIXEL_PIPE_OCCLUSION_COUNT_1', - 2: 'PIXEL_PIPE_OCCLUSION_COUNT_2', - 3: 'PIXEL_PIPE_OCCLUSION_COUNT_3', - 4: 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_0', - 5: 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_0', - 6: 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_1', - 7: 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_1', -} -PIXEL_PIPE_OCCLUSION_COUNT_0 = 0 -PIXEL_PIPE_OCCLUSION_COUNT_1 = 1 -PIXEL_PIPE_OCCLUSION_COUNT_2 = 2 -PIXEL_PIPE_OCCLUSION_COUNT_3 = 3 -PIXEL_PIPE_SCREEN_MIN_EXTENTS_0 = 4 -PIXEL_PIPE_SCREEN_MAX_EXTENTS_0 = 5 -PIXEL_PIPE_SCREEN_MIN_EXTENTS_1 = 6 -PIXEL_PIPE_SCREEN_MAX_EXTENTS_1 = 7 -PixelPipeCounterId = ctypes.c_uint32 # enum - -# values for enumeration 'PixelPipeStride' -PixelPipeStride__enumvalues = { - 0: 'PIXEL_PIPE_STRIDE_32_BITS', - 1: 'PIXEL_PIPE_STRIDE_64_BITS', - 2: 'PIXEL_PIPE_STRIDE_128_BITS', - 3: 'PIXEL_PIPE_STRIDE_256_BITS', -} -PIXEL_PIPE_STRIDE_32_BITS = 0 -PIXEL_PIPE_STRIDE_64_BITS = 1 -PIXEL_PIPE_STRIDE_128_BITS = 2 -PIXEL_PIPE_STRIDE_256_BITS = 3 -PixelPipeStride = ctypes.c_uint32 # enum - -# values for enumeration 'RingCounterControl' -RingCounterControl__enumvalues = { - 0: 'COUNTER_RING_SPLIT', - 1: 'COUNTER_RING_0', - 2: 'COUNTER_RING_1', -} -COUNTER_RING_SPLIT = 0 -COUNTER_RING_0 = 1 -COUNTER_RING_1 = 2 -RingCounterControl = ctypes.c_uint32 # enum - -# values for enumeration 'StencilOp' -StencilOp__enumvalues = { - 0: 'STENCIL_KEEP', - 1: 'STENCIL_ZERO', - 2: 'STENCIL_ONES', - 3: 'STENCIL_REPLACE_TEST', - 4: 'STENCIL_REPLACE_OP', - 5: 'STENCIL_ADD_CLAMP', - 6: 'STENCIL_SUB_CLAMP', - 7: 'STENCIL_INVERT', - 8: 'STENCIL_ADD_WRAP', - 9: 'STENCIL_SUB_WRAP', - 10: 'STENCIL_AND', - 11: 'STENCIL_OR', - 12: 'STENCIL_XOR', - 13: 'STENCIL_NAND', - 14: 'STENCIL_NOR', - 15: 'STENCIL_XNOR', -} -STENCIL_KEEP = 0 -STENCIL_ZERO = 1 -STENCIL_ONES = 2 -STENCIL_REPLACE_TEST = 3 -STENCIL_REPLACE_OP = 4 -STENCIL_ADD_CLAMP = 5 -STENCIL_SUB_CLAMP = 6 -STENCIL_INVERT = 7 -STENCIL_ADD_WRAP = 8 -STENCIL_SUB_WRAP = 9 -STENCIL_AND = 10 -STENCIL_OR = 11 -STENCIL_XOR = 12 -STENCIL_NAND = 13 -STENCIL_NOR = 14 -STENCIL_XNOR = 15 -StencilOp = ctypes.c_uint32 # enum - -# values for enumeration 'ZLimitSumm' -ZLimitSumm__enumvalues = { - 0: 'FORCE_SUMM_OFF', - 1: 'FORCE_SUMM_MINZ', - 2: 'FORCE_SUMM_MAXZ', - 3: 'FORCE_SUMM_BOTH', -} -FORCE_SUMM_OFF = 0 -FORCE_SUMM_MINZ = 1 -FORCE_SUMM_MAXZ = 2 -FORCE_SUMM_BOTH = 3 -ZLimitSumm = ctypes.c_uint32 # enum - -# values for enumeration 'ZModeForce' -ZModeForce__enumvalues = { - 0: 'NO_FORCE', - 1: 'FORCE_EARLY_Z', - 2: 'FORCE_LATE_Z', - 3: 'FORCE_RE_Z', -} -NO_FORCE = 0 -FORCE_EARLY_Z = 1 -FORCE_LATE_Z = 2 -FORCE_RE_Z = 3 -ZModeForce = ctypes.c_uint32 # enum - -# values for enumeration 'ZOrder' -ZOrder__enumvalues = { - 0: 'LATE_Z', - 1: 'EARLY_Z_THEN_LATE_Z', - 2: 'RE_Z', - 3: 'EARLY_Z_THEN_RE_Z', -} -LATE_Z = 0 -EARLY_Z_THEN_LATE_Z = 1 -RE_Z = 2 -EARLY_Z_THEN_RE_Z = 3 -ZOrder = ctypes.c_uint32 # enum - -# values for enumeration 'ZSamplePosition' -ZSamplePosition__enumvalues = { - 0: 'Z_SAMPLE_CENTER', - 1: 'Z_SAMPLE_CENTROID', -} -Z_SAMPLE_CENTER = 0 -Z_SAMPLE_CENTROID = 1 -ZSamplePosition = ctypes.c_uint32 # enum - -# values for enumeration 'SU_PERFCNT_SEL' -SU_PERFCNT_SEL__enumvalues = { - 0: 'PERF_PAPC_PASX_REQ', - 6: 'PERF_PAPC_PASX_VTX_KILL_DISCARD', - 7: 'PERF_PAPC_PASX_VTX_NAN_DISCARD', - 8: 'PERF_CLPR_INPUT_PRIM', - 9: 'PERF_CLPR_INPUT_NULL_PRIM', - 10: 'PERF_CLPR_INPUT_EVENT', - 11: 'PERF_CLPR_INPUT_FIRST_OF_SUBGROUP', - 12: 'PERF_CLPR_INPUT_END_OF_PACKET', - 13: 'PERF_CLPR_INPUT_EXTENDED_EVENT', - 14: 'PERF_PAPC_CLPR_CULL_PRIM', - 15: 'PERF_PAPC_CLPR_VVUCP_CULL_PRIM', - 16: 'PERF_PAPC_CLPR_VV_CULL_PRIM', - 17: 'PERF_PAPC_CLPR_UCP_CULL_PRIM', - 18: 'PERF_PAPC_CLPR_VTX_KILL_CULL_PRIM', - 19: 'PERF_PAPC_CLPR_VTX_NAN_CULL_PRIM', - 20: 'PERF_PAPC_CLPR_CULL_TO_NULL_PRIM', - 21: 'PERF_PAPC_CLPR_VVUCP_CLIP_PRIM', - 22: 'PERF_PAPC_CLPR_VV_CLIP_PRIM', - 23: 'PERF_PAPC_CLPR_UCP_CLIP_PRIM', - 24: 'PERF_PAPC_CLPR_POINT_CLIP_CANDIDATE', - 25: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_1', - 26: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_2', - 27: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_3', - 28: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_4', - 29: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_5_8', - 30: 'PERF_CLPR_CLIP_PLANE_CNT_9_PLUS', - 31: 'PERF_PAPC_CLPR_CLIP_PLANE_NEAR', - 32: 'PERF_PAPC_CLPR_CLIP_PLANE_FAR', - 33: 'PERF_PAPC_CLPR_CLIP_PLANE_LEFT', - 34: 'PERF_PAPC_CLPR_CLIP_PLANE_RIGHT', - 35: 'PERF_PAPC_CLPR_CLIP_PLANE_TOP', - 36: 'PERF_PAPC_CLPR_CLIP_PLANE_BOTTOM', - 38: 'PERF_PAPC_CLPR_RASTER_KILL_CULL_PRIM', - 39: 'PERF_PAPC_CLSM_NULL_PRIM', - 40: 'PERF_PAPC_CLSM_TOTALLY_VISIBLE_PRIM', - 41: 'PERF_PAPC_CLSM_CULL_TO_NULL_PRIM', - 42: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_1', - 43: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_2', - 44: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_3', - 45: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_4', - 46: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_5_8', - 47: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_9_PLUS', - 48: 'PERF_PAPC_CLIPGA_VTE_KILL_PRIM', - 49: 'PERF_PAPC_SU_INPUT_PRIM', - 50: 'PERF_PAPC_SU_INPUT_CLIP_PRIM', - 51: 'PERF_PAPC_SU_INPUT_NULL_PRIM', - 52: 'PERF_PAPC_SU_INPUT_PRIM_DUAL', - 53: 'PERF_PAPC_SU_INPUT_CLIP_PRIM_DUAL', - 54: 'PERF_PAPC_SU_ZERO_AREA_CULL_PRIM', - 55: 'PERF_PAPC_SU_BACK_FACE_CULL_PRIM', - 56: 'PERF_PAPC_SU_FRONT_FACE_CULL_PRIM', - 57: 'PERF_PAPC_SU_POLYMODE_FACE_CULL', - 58: 'PERF_PAPC_SU_POLYMODE_BACK_CULL', - 59: 'PERF_PAPC_SU_POLYMODE_FRONT_CULL', - 60: 'PERF_PAPC_SU_POLYMODE_INVALID_FILL', - 61: 'PERF_PAPC_SU_OUTPUT_PRIM', - 62: 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM', - 63: 'PERF_PAPC_SU_OUTPUT_NULL_PRIM', - 64: 'PERF_PAPC_SU_OUTPUT_EVENT_FLAG', - 65: 'PERF_PAPC_SU_OUTPUT_FIRST_PRIM_SLOT', - 66: 'PERF_PAPC_SU_OUTPUT_END_OF_PACKET', - 67: 'PERF_PAPC_SU_OUTPUT_POLYMODE_FACE', - 68: 'PERF_PAPC_SU_OUTPUT_POLYMODE_BACK', - 69: 'PERF_PAPC_SU_OUTPUT_POLYMODE_FRONT', - 70: 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FACE', - 71: 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_BACK', - 72: 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FRONT', - 73: 'PERF_PAPC_SU_OUTPUT_PRIM_DUAL', - 74: 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM_DUAL', - 75: 'PERF_PAPC_SU_OUTPUT_POLYMODE_DUAL', - 76: 'PERF_PAPC_SU_OUTPUT_CLIP_POLYMODE_DUAL', - 77: 'PERF_PAPC_PASX_REQ_IDLE', - 78: 'PERF_PAPC_PASX_REQ_BUSY', - 79: 'PERF_PAPC_PASX_REQ_STALLED', - 80: 'PERF_PAPC_PASX_REC_IDLE', - 81: 'PERF_PAPC_PASX_REC_BUSY', - 82: 'PERF_PAPC_PASX_REC_STARVED_SX', - 83: 'PERF_PAPC_PASX_REC_STALLED', - 84: 'PERF_PAPC_PASX_REC_STALLED_POS_MEM', - 85: 'PERF_PAPC_PASX_REC_STALLED_CCGSM_IN', - 86: 'PERF_PAPC_CCGSM_IDLE', - 87: 'PERF_PAPC_CCGSM_BUSY', - 88: 'PERF_PAPC_CCGSM_STALLED', - 89: 'PERF_PAPC_CLPRIM_IDLE', - 90: 'PERF_PAPC_CLPRIM_BUSY', - 91: 'PERF_PAPC_CLPRIM_STALLED', - 92: 'PERF_PAPC_CLPRIM_STARVED_CCGSM', - 93: 'PERF_PAPC_CLIPSM_IDLE', - 94: 'PERF_PAPC_CLIPSM_BUSY', - 95: 'PERF_PAPC_CLIPSM_WAIT_CLIP_VERT_ENGH', - 96: 'PERF_PAPC_CLIPSM_WAIT_HIGH_PRI_SEQ', - 97: 'PERF_PAPC_CLIPSM_WAIT_CLIPGA', - 98: 'PERF_PAPC_CLIPSM_WAIT_AVAIL_VTE_CLIP', - 99: 'PERF_PAPC_CLIPSM_WAIT_CLIP_OUTSM', - 100: 'PERF_PAPC_CLIPGA_IDLE', - 101: 'PERF_PAPC_CLIPGA_BUSY', - 102: 'PERF_PAPC_CLIPGA_STARVED_VTE_CLIP', - 103: 'PERF_PAPC_CLIPGA_STALLED', - 104: 'PERF_PAPC_CLIP_IDLE', - 105: 'PERF_PAPC_CLIP_BUSY', - 106: 'PERF_PAPC_SU_IDLE', - 107: 'PERF_PAPC_SU_BUSY', - 108: 'PERF_PAPC_SU_STARVED_CLIP', - 109: 'PERF_PAPC_SU_STALLED_SC', - 110: 'PERF_PAPC_CL_DYN_SCLK_VLD', - 111: 'PERF_PAPC_SU_DYN_SCLK_VLD', - 112: 'PERF_PAPC_PA_REG_SCLK_VLD', - 120: 'PERF_PAPC_SU_SE0_PRIM_FILTER_CULL', - 121: 'PERF_PAPC_SU_SE1_PRIM_FILTER_CULL', - 123: 'PERF_PAPC_SU_SE0_OUTPUT_PRIM', - 124: 'PERF_PAPC_SU_SE1_OUTPUT_PRIM', - 125: 'PERF_PAPC_SU_ALL_OUTPUT_PRIM', - 126: 'PERF_PAPC_SU_SE0_OUTPUT_NULL_PRIM', - 127: 'PERF_PAPC_SU_SE1_OUTPUT_NULL_PRIM', - 128: 'PERF_PAPC_SU_ALL_OUTPUT_NULL_PRIM', - 131: 'PERF_PAPC_SU_SE0_STALLED_SC', - 132: 'PERF_PAPC_SU_SE1_STALLED_SC', - 133: 'PERF_PAPC_SU_ALL_STALLED_SC', - 134: 'PERF_PAPC_CLSM_CLIPPING_PRIM', - 135: 'PERF_PAPC_SU_CULLED_PRIM', - 136: 'PERF_PAPC_SU_OUTPUT_EOPG', - 137: 'PERF_PAPC_SU_SE2_PRIM_FILTER_CULL', - 138: 'PERF_PAPC_SU_SE3_PRIM_FILTER_CULL', - 139: 'PERF_PAPC_SU_SE2_OUTPUT_PRIM', - 140: 'PERF_PAPC_SU_SE3_OUTPUT_PRIM', - 141: 'PERF_PAPC_SU_SE2_OUTPUT_NULL_PRIM', - 142: 'PERF_PAPC_SU_SE3_OUTPUT_NULL_PRIM', - 151: 'PERF_PAPC_SU_SE2_STALLED_SC', - 152: 'PERF_PAPC_SU_SE3_STALLED_SC', - 153: 'PERF_SU_SMALL_PRIM_FILTER_CULL_CNT', - 154: 'PERF_SMALL_PRIM_CULL_PRIM_1X1', - 155: 'PERF_SMALL_PRIM_CULL_PRIM_2X1', - 156: 'PERF_SMALL_PRIM_CULL_PRIM_1X2', - 157: 'PERF_SMALL_PRIM_CULL_PRIM_2X2', - 158: 'PERF_SMALL_PRIM_CULL_PRIM_3X1', - 159: 'PERF_SMALL_PRIM_CULL_PRIM_1X3', - 160: 'PERF_SMALL_PRIM_CULL_PRIM_3X2', - 161: 'PERF_SMALL_PRIM_CULL_PRIM_2X3', - 162: 'PERF_SMALL_PRIM_CULL_PRIM_NX1', - 163: 'PERF_SMALL_PRIM_CULL_PRIM_1XN', - 164: 'PERF_SMALL_PRIM_CULL_PRIM_NX2', - 165: 'PERF_SMALL_PRIM_CULL_PRIM_2XN', - 169: 'PERF_SC0_QUALIFIED_SEND_BUSY_EVENT', - 170: 'PERF_SC0_QUALIFIED_SEND_NOT_BUSY_EVENT', - 171: 'PERF_SC1_QUALIFIED_SEND_BUSY_EVENT', - 172: 'PERF_SC1_QUALIFIED_SEND_NOT_BUSY_EVENT', - 173: 'PERF_SC2_QUALIFIED_SEND_BUSY_EVENT', - 174: 'PERF_SC2_QUALIFIED_SEND_NOT_BUSY_EVENT', - 175: 'PERF_SC3_QUALIFIED_SEND_BUSY_EVENT', - 176: 'PERF_SC3_QUALIFIED_SEND_NOT_BUSY_EVENT', - 177: 'PERF_PA_VERTEX_FIFO_FULL', - 178: 'PERF_PA_PRIMIC_TO_CLPRIM_FIFO_FULL', - 179: 'PERF_PA_FETCH_TO_PRIMIC_P_FIFO_FULL', - 183: 'PERF_ENGG_CSB_MACHINE_IS_STARVED', - 184: 'PERF_ENGG_CSB_MACHINE_STALLED_BY_CSB_MEMORY', - 185: 'PERF_ENGG_CSB_MACHINE_STALLED_BY_SPI', - 186: 'PERF_ENGG_CSB_GE_INPUT_FIFO_FULL', - 188: 'PERF_ENGG_CSB_PAYLOAD_INPUT_FIFO_FULL', - 189: 'PERF_ENGG_CSB_GE_INPUT_FIFO_POP_BIT', - 190: 'PERF_ENGG_CSB_PRIM_COUNT_EQ0', - 191: 'PERF_ENGG_CSB_NULL_SUBGROUP', - 192: 'PERF_ENGG_CSB_GE_SENDING_SUBGROUP', - 193: 'PERF_ENGG_CSB_GE_MEMORY_FULL', - 194: 'PERF_ENGG_CSB_GE_MEMORY_EMPTY', - 195: 'PERF_ENGG_CSB_SPI_MEMORY_FULL', - 196: 'PERF_ENGG_CSB_SPI_MEMORY_EMPTY', - 224: 'PERF_ENGG_INDEX_REQ_NULL_REQUEST', - 225: 'PERF_ENGG_INDEX_RET_0_NEW_VERTS_THIS_PRIM', - 226: 'PERF_ENGG_INDEX_RET_1_NEW_VERTS_THIS_PRIM', - 227: 'PERF_ENGG_INDEX_RET_2_NEW_VERTS_THIS_PRIM', - 228: 'PERF_ENGG_INDEX_RET_3_NEW_VERTS_THIS_PRIM', - 229: 'PERF_ENGG_INDEX_REQ_STARVED', - 230: 'PERF_ENGG_INDEX_REQ_IDLE_AND_STALLED_BY_REQ2RTN_FIFO_FULL', - 231: 'PERF_ENGG_INDEX_REQ_BUSY_AND_STALLED_BY_REQ2RTN_FIFO_FULL', - 232: 'PERF_ENGG_INDEX_REQ_STALLED_BY_SX_CREDITS', - 233: 'PERF_ENGG_INDEX_RET_REQ2RTN_FIFO_FULL', - 234: 'PERF_ENGG_INDEX_RET_REQ2RTN_FIFO_EMPTY', - 235: 'PERF_ENGG_INDEX_RET_SX_RECEIVE_FIFO_FULL', - 236: 'PERF_ENGG_INDEX_RET_SXRX_STARVED_BY_CSB', - 237: 'PERF_ENGG_INDEX_RET_SXRX_STARVED_BY_PRIMS', - 238: 'PERF_ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_CSB_FIFO', - 239: 'PERF_ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_FIFO', - 240: 'PERF_ENGG_INDEX_RET_SXRX_READING_EVENT', - 241: 'PERF_ENGG_INDEX_RET_SXRX_READING_NULL_SUBGROUP', - 242: 'PERF_ENGG_INDEX_RET_SXRX_READING_SUBGROUP_PRIMCOUNT_EQ0', - 243: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_NOPL', - 244: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_NOPL', - 245: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS_NOPL', - 246: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS_NOPL', - 247: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS_NOPL', - 248: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_PL', - 249: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_PL', - 250: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS_PL', - 251: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS_PL', - 252: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS_PL', - 258: 'PERF_ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_P_FIFO', - 259: 'PERF_ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_S_FIFO', - 260: 'PERF_ENGG_INDEX_PRIM_IF_STARVED_BY_NO_CSB', - 261: 'PERF_ENGG_INDEX_PRIM_IF_STARVED_BY_NO_PRIM', - 262: 'PERF_ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_WRITE', - 263: 'PERF_ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_NO_WRITE', - 264: 'PERF_ENGG_POS_REQ_STARVED', - 265: 'PERF_ENGG_INDEX_RET_SXRX_NULL_DROPPER_STALLED_BY_FULL_PRIM_FIFO', - 266: 'PERF_ENGG_BUSY', - 267: 'PERF_CLIPSM_CULL_PRIMS_CNT', - 268: 'PERF_PH_SEND_1_SC', - 269: 'PERF_PH_SEND_2_SC', - 270: 'PERF_PH_SEND_3_SC', - 271: 'PERF_PH_SEND_4_SC', - 272: 'PERF_OUTPUT_PRIM_1_SC', - 273: 'PERF_OUTPUT_PRIM_2_SC', - 274: 'PERF_OUTPUT_PRIM_3_SC', - 275: 'PERF_OUTPUT_PRIM_4_SC', - 276: 'PERF_PASX_POS_VECTOR', - 277: 'PERF_PASX_MISC_VECTOR', - 278: 'PERF_PASX_CCDIST0_VECTOR', - 279: 'PERF_PASX_CCDIST1_VECTOR', - 280: 'PERF_PASX_STEREO_POS_VECTOR', - 281: 'PERF_CLPR_INPUT_SEND', - 282: 'PERF_SU_INPUT_SEND', - 283: 'PERF_SU_OUTPUT_SEND', - 284: 'PERF_PAPC_SU_SE4_PRIM_FILTER_CULL', - 285: 'PERF_PAPC_SU_SE5_PRIM_FILTER_CULL', - 286: 'PERF_PAPC_SU_SE4_OUTPUT_PRIM', - 287: 'PERF_PAPC_SU_SE5_OUTPUT_PRIM', - 288: 'PERF_PAPC_SU_SE4_OUTPUT_NULL_PRIM', - 289: 'PERF_PAPC_SU_SE5_OUTPUT_NULL_PRIM', - 290: 'PERF_PAPC_SU_SE4_STALLED_SC', - 291: 'PERF_PAPC_SU_SE5_STALLED_SC', - 292: 'PERF_ENGG_INDEX_RET0_NEW_VERTS', - 293: 'PERF_ENGG_INDEX_RET1_NEW_VERTS', - 294: 'PERF_ENGG_INDEX_RET2_NEW_VERTS', - 295: 'PERF_ENGG_INDEX_RET3_NEW_VERTS', - 296: 'PERF_ENGG_INDEX_RET4_NEW_VERTS', - 297: 'PERF_ENGG_INDEX_RET5_NEW_VERTS', - 298: 'PERF_ENGG_INDEX_RET6_NEW_VERTS', - 299: 'PERF_ENGG_INDEX_RET7_NEW_VERTS', - 300: 'PERF_ENGG_INDEX_RET8_NEW_VERTS', - 301: 'PERF_ENGG_INDEX_RET9_NEW_VERTS', - 302: 'PERF_ENGG_INDEX_RET10_NEW_VERTS', - 303: 'PERF_ENGG_INDEX_RET11_NEW_VERTS', - 304: 'PERF_ENGG_INDEX_RET12_NEW_VERTS', - 305: 'PERF_PH_SEND_5_SC', - 306: 'PERF_PH_SEND_6_SC', - 307: 'PERF_OUTPUT_PRIM_5_SC', - 308: 'PERF_OUTPUT_PRIM_6_SC', - 309: 'PERF_CLPR_BACK_PRIM', - 310: 'PERF_PA_BUSY', -} -PERF_PAPC_PASX_REQ = 0 -PERF_PAPC_PASX_VTX_KILL_DISCARD = 6 -PERF_PAPC_PASX_VTX_NAN_DISCARD = 7 -PERF_CLPR_INPUT_PRIM = 8 -PERF_CLPR_INPUT_NULL_PRIM = 9 -PERF_CLPR_INPUT_EVENT = 10 -PERF_CLPR_INPUT_FIRST_OF_SUBGROUP = 11 -PERF_CLPR_INPUT_END_OF_PACKET = 12 -PERF_CLPR_INPUT_EXTENDED_EVENT = 13 -PERF_PAPC_CLPR_CULL_PRIM = 14 -PERF_PAPC_CLPR_VVUCP_CULL_PRIM = 15 -PERF_PAPC_CLPR_VV_CULL_PRIM = 16 -PERF_PAPC_CLPR_UCP_CULL_PRIM = 17 -PERF_PAPC_CLPR_VTX_KILL_CULL_PRIM = 18 -PERF_PAPC_CLPR_VTX_NAN_CULL_PRIM = 19 -PERF_PAPC_CLPR_CULL_TO_NULL_PRIM = 20 -PERF_PAPC_CLPR_VVUCP_CLIP_PRIM = 21 -PERF_PAPC_CLPR_VV_CLIP_PRIM = 22 -PERF_PAPC_CLPR_UCP_CLIP_PRIM = 23 -PERF_PAPC_CLPR_POINT_CLIP_CANDIDATE = 24 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_1 = 25 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_2 = 26 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_3 = 27 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_4 = 28 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_5_8 = 29 -PERF_CLPR_CLIP_PLANE_CNT_9_PLUS = 30 -PERF_PAPC_CLPR_CLIP_PLANE_NEAR = 31 -PERF_PAPC_CLPR_CLIP_PLANE_FAR = 32 -PERF_PAPC_CLPR_CLIP_PLANE_LEFT = 33 -PERF_PAPC_CLPR_CLIP_PLANE_RIGHT = 34 -PERF_PAPC_CLPR_CLIP_PLANE_TOP = 35 -PERF_PAPC_CLPR_CLIP_PLANE_BOTTOM = 36 -PERF_PAPC_CLPR_RASTER_KILL_CULL_PRIM = 38 -PERF_PAPC_CLSM_NULL_PRIM = 39 -PERF_PAPC_CLSM_TOTALLY_VISIBLE_PRIM = 40 -PERF_PAPC_CLSM_CULL_TO_NULL_PRIM = 41 -PERF_PAPC_CLSM_OUT_PRIM_CNT_1 = 42 -PERF_PAPC_CLSM_OUT_PRIM_CNT_2 = 43 -PERF_PAPC_CLSM_OUT_PRIM_CNT_3 = 44 -PERF_PAPC_CLSM_OUT_PRIM_CNT_4 = 45 -PERF_PAPC_CLSM_OUT_PRIM_CNT_5_8 = 46 -PERF_PAPC_CLSM_OUT_PRIM_CNT_9_PLUS = 47 -PERF_PAPC_CLIPGA_VTE_KILL_PRIM = 48 -PERF_PAPC_SU_INPUT_PRIM = 49 -PERF_PAPC_SU_INPUT_CLIP_PRIM = 50 -PERF_PAPC_SU_INPUT_NULL_PRIM = 51 -PERF_PAPC_SU_INPUT_PRIM_DUAL = 52 -PERF_PAPC_SU_INPUT_CLIP_PRIM_DUAL = 53 -PERF_PAPC_SU_ZERO_AREA_CULL_PRIM = 54 -PERF_PAPC_SU_BACK_FACE_CULL_PRIM = 55 -PERF_PAPC_SU_FRONT_FACE_CULL_PRIM = 56 -PERF_PAPC_SU_POLYMODE_FACE_CULL = 57 -PERF_PAPC_SU_POLYMODE_BACK_CULL = 58 -PERF_PAPC_SU_POLYMODE_FRONT_CULL = 59 -PERF_PAPC_SU_POLYMODE_INVALID_FILL = 60 -PERF_PAPC_SU_OUTPUT_PRIM = 61 -PERF_PAPC_SU_OUTPUT_CLIP_PRIM = 62 -PERF_PAPC_SU_OUTPUT_NULL_PRIM = 63 -PERF_PAPC_SU_OUTPUT_EVENT_FLAG = 64 -PERF_PAPC_SU_OUTPUT_FIRST_PRIM_SLOT = 65 -PERF_PAPC_SU_OUTPUT_END_OF_PACKET = 66 -PERF_PAPC_SU_OUTPUT_POLYMODE_FACE = 67 -PERF_PAPC_SU_OUTPUT_POLYMODE_BACK = 68 -PERF_PAPC_SU_OUTPUT_POLYMODE_FRONT = 69 -PERF_PAPC_SU_OUT_CLIP_POLYMODE_FACE = 70 -PERF_PAPC_SU_OUT_CLIP_POLYMODE_BACK = 71 -PERF_PAPC_SU_OUT_CLIP_POLYMODE_FRONT = 72 -PERF_PAPC_SU_OUTPUT_PRIM_DUAL = 73 -PERF_PAPC_SU_OUTPUT_CLIP_PRIM_DUAL = 74 -PERF_PAPC_SU_OUTPUT_POLYMODE_DUAL = 75 -PERF_PAPC_SU_OUTPUT_CLIP_POLYMODE_DUAL = 76 -PERF_PAPC_PASX_REQ_IDLE = 77 -PERF_PAPC_PASX_REQ_BUSY = 78 -PERF_PAPC_PASX_REQ_STALLED = 79 -PERF_PAPC_PASX_REC_IDLE = 80 -PERF_PAPC_PASX_REC_BUSY = 81 -PERF_PAPC_PASX_REC_STARVED_SX = 82 -PERF_PAPC_PASX_REC_STALLED = 83 -PERF_PAPC_PASX_REC_STALLED_POS_MEM = 84 -PERF_PAPC_PASX_REC_STALLED_CCGSM_IN = 85 -PERF_PAPC_CCGSM_IDLE = 86 -PERF_PAPC_CCGSM_BUSY = 87 -PERF_PAPC_CCGSM_STALLED = 88 -PERF_PAPC_CLPRIM_IDLE = 89 -PERF_PAPC_CLPRIM_BUSY = 90 -PERF_PAPC_CLPRIM_STALLED = 91 -PERF_PAPC_CLPRIM_STARVED_CCGSM = 92 -PERF_PAPC_CLIPSM_IDLE = 93 -PERF_PAPC_CLIPSM_BUSY = 94 -PERF_PAPC_CLIPSM_WAIT_CLIP_VERT_ENGH = 95 -PERF_PAPC_CLIPSM_WAIT_HIGH_PRI_SEQ = 96 -PERF_PAPC_CLIPSM_WAIT_CLIPGA = 97 -PERF_PAPC_CLIPSM_WAIT_AVAIL_VTE_CLIP = 98 -PERF_PAPC_CLIPSM_WAIT_CLIP_OUTSM = 99 -PERF_PAPC_CLIPGA_IDLE = 100 -PERF_PAPC_CLIPGA_BUSY = 101 -PERF_PAPC_CLIPGA_STARVED_VTE_CLIP = 102 -PERF_PAPC_CLIPGA_STALLED = 103 -PERF_PAPC_CLIP_IDLE = 104 -PERF_PAPC_CLIP_BUSY = 105 -PERF_PAPC_SU_IDLE = 106 -PERF_PAPC_SU_BUSY = 107 -PERF_PAPC_SU_STARVED_CLIP = 108 -PERF_PAPC_SU_STALLED_SC = 109 -PERF_PAPC_CL_DYN_SCLK_VLD = 110 -PERF_PAPC_SU_DYN_SCLK_VLD = 111 -PERF_PAPC_PA_REG_SCLK_VLD = 112 -PERF_PAPC_SU_SE0_PRIM_FILTER_CULL = 120 -PERF_PAPC_SU_SE1_PRIM_FILTER_CULL = 121 -PERF_PAPC_SU_SE0_OUTPUT_PRIM = 123 -PERF_PAPC_SU_SE1_OUTPUT_PRIM = 124 -PERF_PAPC_SU_ALL_OUTPUT_PRIM = 125 -PERF_PAPC_SU_SE0_OUTPUT_NULL_PRIM = 126 -PERF_PAPC_SU_SE1_OUTPUT_NULL_PRIM = 127 -PERF_PAPC_SU_ALL_OUTPUT_NULL_PRIM = 128 -PERF_PAPC_SU_SE0_STALLED_SC = 131 -PERF_PAPC_SU_SE1_STALLED_SC = 132 -PERF_PAPC_SU_ALL_STALLED_SC = 133 -PERF_PAPC_CLSM_CLIPPING_PRIM = 134 -PERF_PAPC_SU_CULLED_PRIM = 135 -PERF_PAPC_SU_OUTPUT_EOPG = 136 -PERF_PAPC_SU_SE2_PRIM_FILTER_CULL = 137 -PERF_PAPC_SU_SE3_PRIM_FILTER_CULL = 138 -PERF_PAPC_SU_SE2_OUTPUT_PRIM = 139 -PERF_PAPC_SU_SE3_OUTPUT_PRIM = 140 -PERF_PAPC_SU_SE2_OUTPUT_NULL_PRIM = 141 -PERF_PAPC_SU_SE3_OUTPUT_NULL_PRIM = 142 -PERF_PAPC_SU_SE2_STALLED_SC = 151 -PERF_PAPC_SU_SE3_STALLED_SC = 152 -PERF_SU_SMALL_PRIM_FILTER_CULL_CNT = 153 -PERF_SMALL_PRIM_CULL_PRIM_1X1 = 154 -PERF_SMALL_PRIM_CULL_PRIM_2X1 = 155 -PERF_SMALL_PRIM_CULL_PRIM_1X2 = 156 -PERF_SMALL_PRIM_CULL_PRIM_2X2 = 157 -PERF_SMALL_PRIM_CULL_PRIM_3X1 = 158 -PERF_SMALL_PRIM_CULL_PRIM_1X3 = 159 -PERF_SMALL_PRIM_CULL_PRIM_3X2 = 160 -PERF_SMALL_PRIM_CULL_PRIM_2X3 = 161 -PERF_SMALL_PRIM_CULL_PRIM_NX1 = 162 -PERF_SMALL_PRIM_CULL_PRIM_1XN = 163 -PERF_SMALL_PRIM_CULL_PRIM_NX2 = 164 -PERF_SMALL_PRIM_CULL_PRIM_2XN = 165 -PERF_SC0_QUALIFIED_SEND_BUSY_EVENT = 169 -PERF_SC0_QUALIFIED_SEND_NOT_BUSY_EVENT = 170 -PERF_SC1_QUALIFIED_SEND_BUSY_EVENT = 171 -PERF_SC1_QUALIFIED_SEND_NOT_BUSY_EVENT = 172 -PERF_SC2_QUALIFIED_SEND_BUSY_EVENT = 173 -PERF_SC2_QUALIFIED_SEND_NOT_BUSY_EVENT = 174 -PERF_SC3_QUALIFIED_SEND_BUSY_EVENT = 175 -PERF_SC3_QUALIFIED_SEND_NOT_BUSY_EVENT = 176 -PERF_PA_VERTEX_FIFO_FULL = 177 -PERF_PA_PRIMIC_TO_CLPRIM_FIFO_FULL = 178 -PERF_PA_FETCH_TO_PRIMIC_P_FIFO_FULL = 179 -PERF_ENGG_CSB_MACHINE_IS_STARVED = 183 -PERF_ENGG_CSB_MACHINE_STALLED_BY_CSB_MEMORY = 184 -PERF_ENGG_CSB_MACHINE_STALLED_BY_SPI = 185 -PERF_ENGG_CSB_GE_INPUT_FIFO_FULL = 186 -PERF_ENGG_CSB_PAYLOAD_INPUT_FIFO_FULL = 188 -PERF_ENGG_CSB_GE_INPUT_FIFO_POP_BIT = 189 -PERF_ENGG_CSB_PRIM_COUNT_EQ0 = 190 -PERF_ENGG_CSB_NULL_SUBGROUP = 191 -PERF_ENGG_CSB_GE_SENDING_SUBGROUP = 192 -PERF_ENGG_CSB_GE_MEMORY_FULL = 193 -PERF_ENGG_CSB_GE_MEMORY_EMPTY = 194 -PERF_ENGG_CSB_SPI_MEMORY_FULL = 195 -PERF_ENGG_CSB_SPI_MEMORY_EMPTY = 196 -PERF_ENGG_INDEX_REQ_NULL_REQUEST = 224 -PERF_ENGG_INDEX_RET_0_NEW_VERTS_THIS_PRIM = 225 -PERF_ENGG_INDEX_RET_1_NEW_VERTS_THIS_PRIM = 226 -PERF_ENGG_INDEX_RET_2_NEW_VERTS_THIS_PRIM = 227 -PERF_ENGG_INDEX_RET_3_NEW_VERTS_THIS_PRIM = 228 -PERF_ENGG_INDEX_REQ_STARVED = 229 -PERF_ENGG_INDEX_REQ_IDLE_AND_STALLED_BY_REQ2RTN_FIFO_FULL = 230 -PERF_ENGG_INDEX_REQ_BUSY_AND_STALLED_BY_REQ2RTN_FIFO_FULL = 231 -PERF_ENGG_INDEX_REQ_STALLED_BY_SX_CREDITS = 232 -PERF_ENGG_INDEX_RET_REQ2RTN_FIFO_FULL = 233 -PERF_ENGG_INDEX_RET_REQ2RTN_FIFO_EMPTY = 234 -PERF_ENGG_INDEX_RET_SX_RECEIVE_FIFO_FULL = 235 -PERF_ENGG_INDEX_RET_SXRX_STARVED_BY_CSB = 236 -PERF_ENGG_INDEX_RET_SXRX_STARVED_BY_PRIMS = 237 -PERF_ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_CSB_FIFO = 238 -PERF_ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_FIFO = 239 -PERF_ENGG_INDEX_RET_SXRX_READING_EVENT = 240 -PERF_ENGG_INDEX_RET_SXRX_READING_NULL_SUBGROUP = 241 -PERF_ENGG_INDEX_RET_SXRX_READING_SUBGROUP_PRIMCOUNT_EQ0 = 242 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_NOPL = 243 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_NOPL = 244 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS_NOPL = 245 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS_NOPL = 246 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS_NOPL = 247 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_PL = 248 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_PL = 249 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS_PL = 250 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS_PL = 251 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS_PL = 252 -PERF_ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_P_FIFO = 258 -PERF_ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_S_FIFO = 259 -PERF_ENGG_INDEX_PRIM_IF_STARVED_BY_NO_CSB = 260 -PERF_ENGG_INDEX_PRIM_IF_STARVED_BY_NO_PRIM = 261 -PERF_ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_WRITE = 262 -PERF_ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_NO_WRITE = 263 -PERF_ENGG_POS_REQ_STARVED = 264 -PERF_ENGG_INDEX_RET_SXRX_NULL_DROPPER_STALLED_BY_FULL_PRIM_FIFO = 265 -PERF_ENGG_BUSY = 266 -PERF_CLIPSM_CULL_PRIMS_CNT = 267 -PERF_PH_SEND_1_SC = 268 -PERF_PH_SEND_2_SC = 269 -PERF_PH_SEND_3_SC = 270 -PERF_PH_SEND_4_SC = 271 -PERF_OUTPUT_PRIM_1_SC = 272 -PERF_OUTPUT_PRIM_2_SC = 273 -PERF_OUTPUT_PRIM_3_SC = 274 -PERF_OUTPUT_PRIM_4_SC = 275 -PERF_PASX_POS_VECTOR = 276 -PERF_PASX_MISC_VECTOR = 277 -PERF_PASX_CCDIST0_VECTOR = 278 -PERF_PASX_CCDIST1_VECTOR = 279 -PERF_PASX_STEREO_POS_VECTOR = 280 -PERF_CLPR_INPUT_SEND = 281 -PERF_SU_INPUT_SEND = 282 -PERF_SU_OUTPUT_SEND = 283 -PERF_PAPC_SU_SE4_PRIM_FILTER_CULL = 284 -PERF_PAPC_SU_SE5_PRIM_FILTER_CULL = 285 -PERF_PAPC_SU_SE4_OUTPUT_PRIM = 286 -PERF_PAPC_SU_SE5_OUTPUT_PRIM = 287 -PERF_PAPC_SU_SE4_OUTPUT_NULL_PRIM = 288 -PERF_PAPC_SU_SE5_OUTPUT_NULL_PRIM = 289 -PERF_PAPC_SU_SE4_STALLED_SC = 290 -PERF_PAPC_SU_SE5_STALLED_SC = 291 -PERF_ENGG_INDEX_RET0_NEW_VERTS = 292 -PERF_ENGG_INDEX_RET1_NEW_VERTS = 293 -PERF_ENGG_INDEX_RET2_NEW_VERTS = 294 -PERF_ENGG_INDEX_RET3_NEW_VERTS = 295 -PERF_ENGG_INDEX_RET4_NEW_VERTS = 296 -PERF_ENGG_INDEX_RET5_NEW_VERTS = 297 -PERF_ENGG_INDEX_RET6_NEW_VERTS = 298 -PERF_ENGG_INDEX_RET7_NEW_VERTS = 299 -PERF_ENGG_INDEX_RET8_NEW_VERTS = 300 -PERF_ENGG_INDEX_RET9_NEW_VERTS = 301 -PERF_ENGG_INDEX_RET10_NEW_VERTS = 302 -PERF_ENGG_INDEX_RET11_NEW_VERTS = 303 -PERF_ENGG_INDEX_RET12_NEW_VERTS = 304 -PERF_PH_SEND_5_SC = 305 -PERF_PH_SEND_6_SC = 306 -PERF_OUTPUT_PRIM_5_SC = 307 -PERF_OUTPUT_PRIM_6_SC = 308 -PERF_CLPR_BACK_PRIM = 309 -PERF_PA_BUSY = 310 -SU_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'RMIPerfSel' -RMIPerfSel__enumvalues = { - 0: 'RMI_PERF_SEL_NONE', - 1: 'RMI_PERF_SEL_BUSY', - 2: 'RMI_PERF_SEL_REG_CLK_VLD', - 3: 'RMI_PERF_SEL_DYN_CLK_CMN_VLD', - 4: 'RMI_PERF_SEL_DYN_CLK_RB_VLD', - 5: 'RMI_PERF_SEL_DYN_CLK_PERF_VLD', - 6: 'RMI_PERF_SEL_PERF_WINDOW', - 7: 'RMI_PERF_SEL_EVENT_SEND', - 8: 'RMI_PERF_SEL_RB_RMI_WRREQ_ALL_CID', - 9: 'RMI_PERF_SEL_RB_RMI_WRREQ_TO_WRRET_BUSY', - 10: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID0', - 11: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID1', - 12: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID2', - 13: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID3', - 14: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID4', - 15: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID5', - 16: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID6', - 17: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID7', - 18: 'RMI_PERF_SEL_RB_RMI_32BWRREQ_INFLIGHT_ALL_ORONE_CID', - 19: 'RMI_PERF_SEL_RB_RMI_WRREQ_BURST_LENGTH_ALL_ORONE_CID', - 20: 'RMI_PERF_SEL_RB_RMI_WRREQ_BURST_ALL_ORONE_CID', - 21: 'RMI_PERF_SEL_RB_RMI_WRREQ_RESIDENCY', - 22: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_ALL_CID', - 23: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID0', - 24: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID1', - 25: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID2', - 26: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID3', - 27: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID4', - 28: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID5', - 29: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID6', - 30: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID7', - 31: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK0', - 32: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK1', - 33: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK2', - 34: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK3', - 35: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_ALL_CID', - 36: 'RMI_PERF_SEL_RB_RMI_RDREQ_ALL_CID', - 37: 'RMI_PERF_SEL_RB_RMI_RDREQ_TO_RDRET_BUSY', - 38: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID0', - 39: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID1', - 40: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID2', - 41: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID3', - 42: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID4', - 43: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID5', - 44: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID6', - 45: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID7', - 46: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID0', - 47: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID1', - 48: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID2', - 49: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID3', - 50: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID4', - 51: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID5', - 52: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID6', - 53: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID7', - 54: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_INFLIGHT_ALL_ORONE_CID', - 55: 'RMI_PERF_SEL_RB_RMI_RDREQ_BURST_LENGTH_ALL_ORONE_CID', - 56: 'RMI_PERF_SEL_RB_RMI_RDREQ_BURST_ALL_ORONE_CID', - 57: 'RMI_PERF_SEL_RB_RMI_RDREQ_RESIDENCY', - 58: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_ALL_CID', - 59: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID0', - 60: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID1', - 61: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID2', - 62: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID3', - 63: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID4', - 64: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID5', - 65: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID6', - 66: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID7', - 67: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK0', - 68: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK1', - 69: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK2', - 70: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK3', - 71: 'RMI_PERF_SEL_RB_RMI_WR_FIFO_MAX', - 72: 'RMI_PERF_SEL_RB_RMI_WR_FIFO_EMPTY', - 73: 'RMI_PERF_SEL_RB_RMI_WR_IDLE', - 74: 'RMI_PERF_SEL_RB_RMI_WR_STARVE', - 75: 'RMI_PERF_SEL_RB_RMI_WR_STALL', - 76: 'RMI_PERF_SEL_RB_RMI_WR_BUSY', - 77: 'RMI_PERF_SEL_RB_RMI_WR_INTF_BUSY', - 78: 'RMI_PERF_SEL_RB_RMI_RD_FIFO_MAX', - 79: 'RMI_PERF_SEL_RB_RMI_RD_FIFO_EMPTY', - 80: 'RMI_PERF_SEL_RB_RMI_RD_IDLE', - 81: 'RMI_PERF_SEL_RB_RMI_RD_STARVE', - 82: 'RMI_PERF_SEL_RB_RMI_RD_STALL', - 83: 'RMI_PERF_SEL_RB_RMI_RD_BUSY', - 84: 'RMI_PERF_SEL_RB_RMI_RD_INTF_BUSY', - 85: 'RMI_PERF_SEL_RMI_TC_64BWRREQ_ALL_ORONE_CID', - 86: 'RMI_PERF_SEL_RMI_TC_64BRDREQ_ALL_ORONE_CID', - 87: 'RMI_PERF_SEL_RMI_TC_WRREQ_ALL_CID', - 88: 'RMI_PERF_SEL_RMI_TC_REQ_BUSY', - 89: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID0', - 90: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID1', - 91: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID2', - 92: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID3', - 93: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID4', - 94: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID5', - 95: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID6', - 96: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID7', - 97: 'RMI_PERF_SEL_RMI_TC_WRREQ_INFLIGHT_ALL_CID', - 98: 'RMI_PERF_SEL_TC_RMI_WRRET_VALID_ALL_CID', - 99: 'RMI_PERF_SEL_RMI_TC_RDREQ_ALL_CID', - 100: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID0', - 101: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID1', - 102: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID2', - 103: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID3', - 104: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID4', - 105: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID5', - 106: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID6', - 107: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID7', - 108: 'RMI_PERF_SEL_RMI_TC_STALL_RDREQ', - 109: 'RMI_PERF_SEL_RMI_TC_STALL_WRREQ', - 110: 'RMI_PERF_SEL_RMI_TC_STALL_ALLREQ', - 111: 'RMI_PERF_SEL_RMI_TC_CREDIT_FULL_NO_PENDING_SEND', - 112: 'RMI_PERF_SEL_RMI_TC_CREDIT_ZERO_PENDING_SEND', - 113: 'RMI_PERF_SEL_RMI_TC_RDREQ_INFLIGHT_ALL_CID', - 114: 'RMI_PERF_SEL_TC_RMI_RDRET_VALID_ALL_CID', - 115: 'RMI_PERF_SEL_TCIW_INFLIGHT_COUNT', - 116: 'RMI_PERF_SEL_TCIW_REQ', - 117: 'RMI_PERF_SEL_TCIW_BUSY', - 118: 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTS_RTR', - 119: 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTSB_RTR', - 120: 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTS_RTRB', - 121: 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTSB_RTRB', - 122: 'RMI_PERF_SEL_REORDER_FIFO_REQ', - 123: 'RMI_PERF_SEL_REORDER_FIFO_BUSY', - 124: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_ALL_CID', - 125: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID0', - 126: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID1', - 127: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID2', - 128: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID3', - 129: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID4', - 130: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID5', - 131: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID6', - 132: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID7', - 133: 'RMI_PERF_SEL_CONSUMER_PROBEGEN_READ_RTS_RTR', - 134: 'RMI_PERF_SEL_CONSUMER_PROBEGEN_WRITE_RTS_RTR', - 135: 'RMI_PERF_SEL_CONSUMER_PROBEGEN_IN0_RTS_RTR', - 136: 'RMI_PERF_SEL_CONSUMER_PROBEGEN_IN1_RTS_RTR', - 137: 'RMI_PERF_SEL_CONSUMER_PROBEGEN_CB_RTS_RTR', - 138: 'RMI_PERF_SEL_CONSUMER_PROBEGEN_DB_RTS_RTR', -} -RMI_PERF_SEL_NONE = 0 -RMI_PERF_SEL_BUSY = 1 -RMI_PERF_SEL_REG_CLK_VLD = 2 -RMI_PERF_SEL_DYN_CLK_CMN_VLD = 3 -RMI_PERF_SEL_DYN_CLK_RB_VLD = 4 -RMI_PERF_SEL_DYN_CLK_PERF_VLD = 5 -RMI_PERF_SEL_PERF_WINDOW = 6 -RMI_PERF_SEL_EVENT_SEND = 7 -RMI_PERF_SEL_RB_RMI_WRREQ_ALL_CID = 8 -RMI_PERF_SEL_RB_RMI_WRREQ_TO_WRRET_BUSY = 9 -RMI_PERF_SEL_RB_RMI_WRREQ_CID0 = 10 -RMI_PERF_SEL_RB_RMI_WRREQ_CID1 = 11 -RMI_PERF_SEL_RB_RMI_WRREQ_CID2 = 12 -RMI_PERF_SEL_RB_RMI_WRREQ_CID3 = 13 -RMI_PERF_SEL_RB_RMI_WRREQ_CID4 = 14 -RMI_PERF_SEL_RB_RMI_WRREQ_CID5 = 15 -RMI_PERF_SEL_RB_RMI_WRREQ_CID6 = 16 -RMI_PERF_SEL_RB_RMI_WRREQ_CID7 = 17 -RMI_PERF_SEL_RB_RMI_32BWRREQ_INFLIGHT_ALL_ORONE_CID = 18 -RMI_PERF_SEL_RB_RMI_WRREQ_BURST_LENGTH_ALL_ORONE_CID = 19 -RMI_PERF_SEL_RB_RMI_WRREQ_BURST_ALL_ORONE_CID = 20 -RMI_PERF_SEL_RB_RMI_WRREQ_RESIDENCY = 21 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_ALL_CID = 22 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID0 = 23 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID1 = 24 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID2 = 25 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID3 = 26 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID4 = 27 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID5 = 28 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID6 = 29 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID7 = 30 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK0 = 31 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK1 = 32 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK2 = 33 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK3 = 34 -RMI_PERF_SEL_RB_RMI_32BRDREQ_ALL_CID = 35 -RMI_PERF_SEL_RB_RMI_RDREQ_ALL_CID = 36 -RMI_PERF_SEL_RB_RMI_RDREQ_TO_RDRET_BUSY = 37 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID0 = 38 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID1 = 39 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID2 = 40 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID3 = 41 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID4 = 42 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID5 = 43 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID6 = 44 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID7 = 45 -RMI_PERF_SEL_RB_RMI_RDREQ_CID0 = 46 -RMI_PERF_SEL_RB_RMI_RDREQ_CID1 = 47 -RMI_PERF_SEL_RB_RMI_RDREQ_CID2 = 48 -RMI_PERF_SEL_RB_RMI_RDREQ_CID3 = 49 -RMI_PERF_SEL_RB_RMI_RDREQ_CID4 = 50 -RMI_PERF_SEL_RB_RMI_RDREQ_CID5 = 51 -RMI_PERF_SEL_RB_RMI_RDREQ_CID6 = 52 -RMI_PERF_SEL_RB_RMI_RDREQ_CID7 = 53 -RMI_PERF_SEL_RB_RMI_32BRDREQ_INFLIGHT_ALL_ORONE_CID = 54 -RMI_PERF_SEL_RB_RMI_RDREQ_BURST_LENGTH_ALL_ORONE_CID = 55 -RMI_PERF_SEL_RB_RMI_RDREQ_BURST_ALL_ORONE_CID = 56 -RMI_PERF_SEL_RB_RMI_RDREQ_RESIDENCY = 57 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_ALL_CID = 58 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID0 = 59 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID1 = 60 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID2 = 61 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID3 = 62 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID4 = 63 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID5 = 64 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID6 = 65 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID7 = 66 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK0 = 67 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK1 = 68 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK2 = 69 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK3 = 70 -RMI_PERF_SEL_RB_RMI_WR_FIFO_MAX = 71 -RMI_PERF_SEL_RB_RMI_WR_FIFO_EMPTY = 72 -RMI_PERF_SEL_RB_RMI_WR_IDLE = 73 -RMI_PERF_SEL_RB_RMI_WR_STARVE = 74 -RMI_PERF_SEL_RB_RMI_WR_STALL = 75 -RMI_PERF_SEL_RB_RMI_WR_BUSY = 76 -RMI_PERF_SEL_RB_RMI_WR_INTF_BUSY = 77 -RMI_PERF_SEL_RB_RMI_RD_FIFO_MAX = 78 -RMI_PERF_SEL_RB_RMI_RD_FIFO_EMPTY = 79 -RMI_PERF_SEL_RB_RMI_RD_IDLE = 80 -RMI_PERF_SEL_RB_RMI_RD_STARVE = 81 -RMI_PERF_SEL_RB_RMI_RD_STALL = 82 -RMI_PERF_SEL_RB_RMI_RD_BUSY = 83 -RMI_PERF_SEL_RB_RMI_RD_INTF_BUSY = 84 -RMI_PERF_SEL_RMI_TC_64BWRREQ_ALL_ORONE_CID = 85 -RMI_PERF_SEL_RMI_TC_64BRDREQ_ALL_ORONE_CID = 86 -RMI_PERF_SEL_RMI_TC_WRREQ_ALL_CID = 87 -RMI_PERF_SEL_RMI_TC_REQ_BUSY = 88 -RMI_PERF_SEL_RMI_TC_WRREQ_CID0 = 89 -RMI_PERF_SEL_RMI_TC_WRREQ_CID1 = 90 -RMI_PERF_SEL_RMI_TC_WRREQ_CID2 = 91 -RMI_PERF_SEL_RMI_TC_WRREQ_CID3 = 92 -RMI_PERF_SEL_RMI_TC_WRREQ_CID4 = 93 -RMI_PERF_SEL_RMI_TC_WRREQ_CID5 = 94 -RMI_PERF_SEL_RMI_TC_WRREQ_CID6 = 95 -RMI_PERF_SEL_RMI_TC_WRREQ_CID7 = 96 -RMI_PERF_SEL_RMI_TC_WRREQ_INFLIGHT_ALL_CID = 97 -RMI_PERF_SEL_TC_RMI_WRRET_VALID_ALL_CID = 98 -RMI_PERF_SEL_RMI_TC_RDREQ_ALL_CID = 99 -RMI_PERF_SEL_RMI_TC_RDREQ_CID0 = 100 -RMI_PERF_SEL_RMI_TC_RDREQ_CID1 = 101 -RMI_PERF_SEL_RMI_TC_RDREQ_CID2 = 102 -RMI_PERF_SEL_RMI_TC_RDREQ_CID3 = 103 -RMI_PERF_SEL_RMI_TC_RDREQ_CID4 = 104 -RMI_PERF_SEL_RMI_TC_RDREQ_CID5 = 105 -RMI_PERF_SEL_RMI_TC_RDREQ_CID6 = 106 -RMI_PERF_SEL_RMI_TC_RDREQ_CID7 = 107 -RMI_PERF_SEL_RMI_TC_STALL_RDREQ = 108 -RMI_PERF_SEL_RMI_TC_STALL_WRREQ = 109 -RMI_PERF_SEL_RMI_TC_STALL_ALLREQ = 110 -RMI_PERF_SEL_RMI_TC_CREDIT_FULL_NO_PENDING_SEND = 111 -RMI_PERF_SEL_RMI_TC_CREDIT_ZERO_PENDING_SEND = 112 -RMI_PERF_SEL_RMI_TC_RDREQ_INFLIGHT_ALL_CID = 113 -RMI_PERF_SEL_TC_RMI_RDRET_VALID_ALL_CID = 114 -RMI_PERF_SEL_TCIW_INFLIGHT_COUNT = 115 -RMI_PERF_SEL_TCIW_REQ = 116 -RMI_PERF_SEL_TCIW_BUSY = 117 -RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTS_RTR = 118 -RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTSB_RTR = 119 -RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTS_RTRB = 120 -RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTSB_RTRB = 121 -RMI_PERF_SEL_REORDER_FIFO_REQ = 122 -RMI_PERF_SEL_REORDER_FIFO_BUSY = 123 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_ALL_CID = 124 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID0 = 125 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID1 = 126 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID2 = 127 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID3 = 128 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID4 = 129 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID5 = 130 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID6 = 131 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID7 = 132 -RMI_PERF_SEL_CONSUMER_PROBEGEN_READ_RTS_RTR = 133 -RMI_PERF_SEL_CONSUMER_PROBEGEN_WRITE_RTS_RTR = 134 -RMI_PERF_SEL_CONSUMER_PROBEGEN_IN0_RTS_RTR = 135 -RMI_PERF_SEL_CONSUMER_PROBEGEN_IN1_RTS_RTR = 136 -RMI_PERF_SEL_CONSUMER_PROBEGEN_CB_RTS_RTR = 137 -RMI_PERF_SEL_CONSUMER_PROBEGEN_DB_RTS_RTR = 138 -RMIPerfSel = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL1PerfSel' -UTCL1PerfSel__enumvalues = { - 0: 'UTCL1_PERF_SEL_NONE', - 1: 'UTCL1_PERF_SEL_REQS', - 2: 'UTCL1_PERF_SEL_HITS', - 3: 'UTCL1_PERF_SEL_MISSES', - 4: 'UTCL1_PERF_SEL_MH_RECENT_BUF_HIT', - 5: 'UTCL1_PERF_SEL_MH_DUPLICATE_DETECT', - 6: 'UTCL1_PERF_SEL_UTCL2_REQS', - 7: 'UTCL1_PERF_SEL_UTCL2_RET_XNACK_RETRY', - 8: 'UTCL1_PERF_SEL_UTCL2_RET_FAULT', - 9: 'UTCL1_PERF_SEL_STALL_UTCL2_CREDITS', - 10: 'UTCL1_PERF_SEL_STALL_MH_FULL', - 11: 'UTCL1_PERF_SEL_UTCL2_REQS_OUTSTANDING_ACCUM', - 12: 'UTCL1_PERF_SEL_UTCL2_RET_CNT', - 13: 'UTCL1_PERF_SEL_RTNS', - 14: 'UTCL1_PERF_SEL_XLAT_REQ_BUSY', - 15: 'UTCL1_PERF_SEL_RANGE_INVREQS', - 16: 'UTCL1_PERF_SEL_INV_ALL_VMID_INVREQS', - 17: 'UTCL1_PERF_SEL_BYPASS_REQS', - 18: 'UTCL1_PERF_SEL_HIT_INV_FILTER_REQS', - 19: 'UTCL1_PERF_SEL_UTCL2_RET_PERM_FAULT', - 20: 'UTCL1_PERF_SEL_UTCL2_RET_PRT_FAULT', - 21: 'UTCL1_PERF_SEL_CP_INVREQS', - 22: 'UTCL1_PERF_SEL_UTCL2_UTCL1_INVREQS', - 23: 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_4K_64K', - 24: 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_64K_256K', - 25: 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_256K_512K', - 26: 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_512K_1M', - 27: 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_1M_2M', - 28: 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_2M_4M', - 29: 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_4M_8M', - 30: 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_8M_16M', - 31: 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_16M_32M', - 32: 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_32M_INF', - 33: 'UTCL1_PERF_SEL_UTCL2_REQ_SQUASHED_NUM', - 34: 'UTCL1_PERF_SEL_REQ_NUM_CACHE_CORE_0', - 35: 'UTCL1_PERF_SEL_REQ_NUM_CACHE_CORE_1', - 36: 'UTCL1_PERF_SEL_REQ_NUM_CACHE_CORE_2', - 37: 'UTCL1_PERF_SEL_REQ_NUM_CACHE_CORE_3', - 38: 'UTCL1_PERF_SEL_STALL_CYCLES_CACHE_CORE_0', - 39: 'UTCL1_PERF_SEL_STALL_CYCLES_CACHE_CORE_1', - 40: 'UTCL1_PERF_SEL_STALL_CYCLES_CACHE_CORE_2', - 41: 'UTCL1_PERF_SEL_STALL_CYCLES_CACHE_CORE_3', - 42: 'UTCL1_PERF_SEL_UTCL1_UTCL2_INVACKS', - 43: 'UTCL1_PERF_SEL_UTCL0_UTCL1_INVACKS', - 44: 'UTCL1_PERF_SEL_HITS_PG_SIZE_1', - 45: 'UTCL1_PERF_SEL_HITS_PG_SIZE_2', - 46: 'UTCL1_PERF_SEL_HITS_PG_SIZE_3', - 47: 'UTCL1_PERF_SEL_HITS_PG_SIZE_4', - 48: 'UTCL1_PERF_SEL_REQ_TO_MISS_HNDLR_0', - 49: 'UTCL1_PERF_SEL_REQ_TO_MISS_HNDLR_1', - 50: 'UTCL1_PERF_SEL_REQ_TO_MISS_HNDLR_2', - 51: 'UTCL1_PERF_SEL_REQ_TO_MISS_HNDLR_3', - 52: 'UTCL1_PERF_SEL_AVG_INV_LATENCY', - 53: 'UTCL1_PERF_SEL_NUM_OF_CYCLES_RQ_EXISTS_TO_CC0', - 54: 'UTCL1_PERF_SEL_NUM_OF_CYCLES_RQ_EXISTS_TO_CC1', - 55: 'UTCL1_PERF_SEL_NUM_OF_CYCLES_RQ_EXISTS_TO_CC2', - 56: 'UTCL1_PERF_SEL_NUM_OF_CYCLES_RQ_EXISTS_TO_CC3', - 57: 'UTCL1_PERF_SEL_NUM_OF_CYCLES_W_COLLISION_CC0', - 58: 'UTCL1_PERF_SEL_NUM_OF_CYCLES_W_COLLISION_CC1', - 59: 'UTCL1_PERF_SEL_NUM_OF_CYCLES_W_COLLISION_CC2', - 60: 'UTCL1_PERF_SEL_NUM_OF_CYCLES_W_COLLISION_CC3', - 61: 'UTCL1_PERF_SEL_EVICTIONS_NUM_CC0', - 62: 'UTCL1_PERF_SEL_EVICTIONS_NUM_CC1', - 63: 'UTCL1_PERF_SEL_EVICTIONS_NUM_CC2', - 64: 'UTCL1_PERF_SEL_EVICTIONS_NUM_CC3', - 65: 'UTCL1_PERF_SEL_ALOG_INTERRUPT', - 66: 'UTCL1_PERF_SEL_ALOG_INTERRUPT_DROPPED', - 67: 'UTCL1_PERF_SEL_ALOG_CACHE_REQ', - 68: 'UTCL1_PERF_SEL_ALOG_CACHE_HIT', - 69: 'UTCL1_PERF_SEL_ALOG_STALL_PMM_CREDITS', -} -UTCL1_PERF_SEL_NONE = 0 -UTCL1_PERF_SEL_REQS = 1 -UTCL1_PERF_SEL_HITS = 2 -UTCL1_PERF_SEL_MISSES = 3 -UTCL1_PERF_SEL_MH_RECENT_BUF_HIT = 4 -UTCL1_PERF_SEL_MH_DUPLICATE_DETECT = 5 -UTCL1_PERF_SEL_UTCL2_REQS = 6 -UTCL1_PERF_SEL_UTCL2_RET_XNACK_RETRY = 7 -UTCL1_PERF_SEL_UTCL2_RET_FAULT = 8 -UTCL1_PERF_SEL_STALL_UTCL2_CREDITS = 9 -UTCL1_PERF_SEL_STALL_MH_FULL = 10 -UTCL1_PERF_SEL_UTCL2_REQS_OUTSTANDING_ACCUM = 11 -UTCL1_PERF_SEL_UTCL2_RET_CNT = 12 -UTCL1_PERF_SEL_RTNS = 13 -UTCL1_PERF_SEL_XLAT_REQ_BUSY = 14 -UTCL1_PERF_SEL_RANGE_INVREQS = 15 -UTCL1_PERF_SEL_INV_ALL_VMID_INVREQS = 16 -UTCL1_PERF_SEL_BYPASS_REQS = 17 -UTCL1_PERF_SEL_HIT_INV_FILTER_REQS = 18 -UTCL1_PERF_SEL_UTCL2_RET_PERM_FAULT = 19 -UTCL1_PERF_SEL_UTCL2_RET_PRT_FAULT = 20 -UTCL1_PERF_SEL_CP_INVREQS = 21 -UTCL1_PERF_SEL_UTCL2_UTCL1_INVREQS = 22 -UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_4K_64K = 23 -UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_64K_256K = 24 -UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_256K_512K = 25 -UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_512K_1M = 26 -UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_1M_2M = 27 -UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_2M_4M = 28 -UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_4M_8M = 29 -UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_8M_16M = 30 -UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_16M_32M = 31 -UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_32M_INF = 32 -UTCL1_PERF_SEL_UTCL2_REQ_SQUASHED_NUM = 33 -UTCL1_PERF_SEL_REQ_NUM_CACHE_CORE_0 = 34 -UTCL1_PERF_SEL_REQ_NUM_CACHE_CORE_1 = 35 -UTCL1_PERF_SEL_REQ_NUM_CACHE_CORE_2 = 36 -UTCL1_PERF_SEL_REQ_NUM_CACHE_CORE_3 = 37 -UTCL1_PERF_SEL_STALL_CYCLES_CACHE_CORE_0 = 38 -UTCL1_PERF_SEL_STALL_CYCLES_CACHE_CORE_1 = 39 -UTCL1_PERF_SEL_STALL_CYCLES_CACHE_CORE_2 = 40 -UTCL1_PERF_SEL_STALL_CYCLES_CACHE_CORE_3 = 41 -UTCL1_PERF_SEL_UTCL1_UTCL2_INVACKS = 42 -UTCL1_PERF_SEL_UTCL0_UTCL1_INVACKS = 43 -UTCL1_PERF_SEL_HITS_PG_SIZE_1 = 44 -UTCL1_PERF_SEL_HITS_PG_SIZE_2 = 45 -UTCL1_PERF_SEL_HITS_PG_SIZE_3 = 46 -UTCL1_PERF_SEL_HITS_PG_SIZE_4 = 47 -UTCL1_PERF_SEL_REQ_TO_MISS_HNDLR_0 = 48 -UTCL1_PERF_SEL_REQ_TO_MISS_HNDLR_1 = 49 -UTCL1_PERF_SEL_REQ_TO_MISS_HNDLR_2 = 50 -UTCL1_PERF_SEL_REQ_TO_MISS_HNDLR_3 = 51 -UTCL1_PERF_SEL_AVG_INV_LATENCY = 52 -UTCL1_PERF_SEL_NUM_OF_CYCLES_RQ_EXISTS_TO_CC0 = 53 -UTCL1_PERF_SEL_NUM_OF_CYCLES_RQ_EXISTS_TO_CC1 = 54 -UTCL1_PERF_SEL_NUM_OF_CYCLES_RQ_EXISTS_TO_CC2 = 55 -UTCL1_PERF_SEL_NUM_OF_CYCLES_RQ_EXISTS_TO_CC3 = 56 -UTCL1_PERF_SEL_NUM_OF_CYCLES_W_COLLISION_CC0 = 57 -UTCL1_PERF_SEL_NUM_OF_CYCLES_W_COLLISION_CC1 = 58 -UTCL1_PERF_SEL_NUM_OF_CYCLES_W_COLLISION_CC2 = 59 -UTCL1_PERF_SEL_NUM_OF_CYCLES_W_COLLISION_CC3 = 60 -UTCL1_PERF_SEL_EVICTIONS_NUM_CC0 = 61 -UTCL1_PERF_SEL_EVICTIONS_NUM_CC1 = 62 -UTCL1_PERF_SEL_EVICTIONS_NUM_CC2 = 63 -UTCL1_PERF_SEL_EVICTIONS_NUM_CC3 = 64 -UTCL1_PERF_SEL_ALOG_INTERRUPT = 65 -UTCL1_PERF_SEL_ALOG_INTERRUPT_DROPPED = 66 -UTCL1_PERF_SEL_ALOG_CACHE_REQ = 67 -UTCL1_PERF_SEL_ALOG_CACHE_HIT = 68 -UTCL1_PERF_SEL_ALOG_STALL_PMM_CREDITS = 69 -UTCL1PerfSel = ctypes.c_uint32 # enum - -# values for enumeration 'GC_EA_SE_PERFCOUNT_SEL' -GC_EA_SE_PERFCOUNT_SEL__enumvalues = { - 0: 'GC_EA_SE_PERF_SEL_ALWAYS_COUNT', - 1: 'GC_EA_SE_PERF_SEL_RDRAM_NUM_BANKS_VLD', - 2: 'GC_EA_SE_PERF_SEL_RDRAM_REQ_PER_CLIGRP', - 3: 'GC_EA_SE_PERF_SEL_RDRAM_CHAINED_REQ_PER_CLIGRP', - 4: 'GC_EA_SE_PERF_SEL_RDRAM_LATENCY_START0', - 5: 'GC_EA_SE_PERF_SEL_RDRAM_LATENCY_END0', - 6: 'GC_EA_SE_PERF_SEL_RDRAM_LATENCY_START1', - 7: 'GC_EA_SE_PERF_SEL_RDRAM_LATENCY_END1', - 8: 'GC_EA_SE_PERF_SEL_WDRAM_NUM_BANKS_VLD', - 9: 'GC_EA_SE_PERF_SEL_WDRAM_REQ_PER_CLIGRP', - 10: 'GC_EA_SE_PERF_SEL_WDRAM_CHAINED_REQ_PER_CLIGRP', - 11: 'GC_EA_SE_PERF_SEL_WDRAM_LATENCY_START0', - 12: 'GC_EA_SE_PERF_SEL_WDRAM_LATENCY_END0', - 13: 'GC_EA_SE_PERF_SEL_WDRAM_LATENCY_START1', - 14: 'GC_EA_SE_PERF_SEL_WDRAM_LATENCY_END1', - 15: 'GC_EA_SE_PERF_SEL_RGMI_NUM_BANKS_VLD', - 16: 'GC_EA_SE_PERF_SEL_RGMI_REQ_PER_CLIGRP', - 17: 'GC_EA_SE_PERF_SEL_RGMI_CHAINED_REQ_PER_CLIGR', - 18: 'GC_EA_SE_PERF_SEL_RGMI_LATENCY_START0', - 19: 'GC_EA_SE_PERF_SEL_RGMI_LATENCY_END0', - 20: 'GC_EA_SE_PERF_SEL_RGMI_LATENCY_START1', - 21: 'GC_EA_SE_PERF_SEL_RGMI_LATENCY_END1', - 22: 'GC_EA_SE_PERF_SEL_WGMI_NUM_BANKS_VLD', - 23: 'GC_EA_SE_PERF_SEL_WGMI_REQ_PER_CLIGRP', - 24: 'GC_EA_SE_PERF_SEL_WGMI_CHAINED_REQ_PER_CLIGRP', - 25: 'GC_EA_SE_PERF_SEL_WGMI_LATENCY_START0', - 26: 'GC_EA_SE_PERF_SEL_WGMI_LATENCY_END0', - 27: 'GC_EA_SE_PERF_SEL_WGMI_LATENCY_START1', - 28: 'GC_EA_SE_PERF_SEL_WGMI_LATENCY_END1', - 29: 'GC_EA_SE_PERF_SEL_RIO_REQ_PER_CLIGRP', - 30: 'GC_EA_SE_PERF_SEL_RIO_SIZE_REQ', - 31: 'GC_EA_SE_PERF_SEL_RIO_GRP0_SIZE_REQ', - 32: 'GC_EA_SE_PERF_SEL_RIO_GRP1_SIZE_REQ', - 33: 'GC_EA_SE_PERF_SEL_RIO_GRP2_SIZE_REQ', - 34: 'GC_EA_SE_PERF_SEL_RIO_GRP3_SIZE_REQ', - 35: 'GC_EA_SE_PERF_SEL_RIO_LATENCY_START0', - 36: 'GC_EA_SE_PERF_SEL_RIO_LATENCY_END0', - 37: 'GC_EA_SE_PERF_SEL_RIO_LATENCY_START1', - 38: 'GC_EA_SE_PERF_SEL_RIO_LATENCY_END1', - 39: 'GC_EA_SE_PERF_SEL_WIO_REQ_PER_CLIGRP', - 40: 'GC_EA_SE_PERF_SEL_WIO_CHAINED_REQ_PER_CLIGRP', - 41: 'GC_EA_SE_PERF_SEL_WIO_SIZE_REQ', - 42: 'GC_EA_SE_PERF_SEL_WIO_GRP0_SIZE_REQ', - 43: 'GC_EA_SE_PERF_SEL_WIO_GRP1_SIZE_REQ', - 44: 'GC_EA_SE_PERF_SEL_WIO_GRP2_SIZE_REQ', - 45: 'GC_EA_SE_PERF_SEL_WIO_GRP3_SIZE_REQ', - 46: 'GC_EA_SE_PERF_SEL_WIO_LATENCY_START0', - 47: 'GC_EA_SE_PERF_SEL_WIO_LATENCY_END0', - 48: 'GC_EA_SE_PERF_SEL_WIO_LATENCY_START1', - 49: 'GC_EA_SE_PERF_SEL_WIO_LATENCY_END1', - 50: 'GC_EA_SE_PERF_SEL_SARB_REQ_PER_VC', - 51: 'GC_EA_SE_PERF_SEL_SARB_DRAM_REQ_PER_VC', - 52: 'GC_EA_SE_PERF_SEL_SARB_GMI_REQ_PER_VC', - 53: 'GC_EA_SE_PERF_SEL_SARB_IO_REQ_PER_VC', - 54: 'GC_EA_SE_PERF_SEL_SARB_SIZE_REQ', - 55: 'GC_EA_SE_PERF_SEL_SARB_DRAM_SIZE_REQ', - 56: 'GC_EA_SE_PERF_SEL_SARB_GMI_SIZE_REQ', - 57: 'GC_EA_SE_PERF_SEL_SARB_IO_SIZE_REQ', - 58: 'GC_EA_SE_PERF_SEL_SARB_LATENCY_START0', - 59: 'GC_EA_SE_PERF_SEL_SARB_LATENCY_END0', - 60: 'GC_EA_SE_PERF_SEL_SARB_LATENCY_START1', - 61: 'GC_EA_SE_PERF_SEL_SARB_LATENCY_END1', - 62: 'GC_EA_SE_PERF_SEL_SARB_BUSY', - 63: 'GC_EA_SE_PERF_SEL_SARB_STALLED', - 64: 'GC_EA_SE_PERF_SEL_SARB_STARVING', - 65: 'GC_EA_SE_PERF_SEL_SARB_IDLE', - 66: 'GC_EA_SE_PERF_SEL_RRET_VLD', - 67: 'GC_EA_SE_PERF_SEL_WRET_VLD', - 68: 'GC_EA_SE_PERF_SEL_PRB_REQ', - 69: 'GC_EA_SE_PERF_SEL_MAM_ARAM_FA_EVICT', - 70: 'GC_EA_SE_PERF_SEL_MAM_ARAM_REQ_VLD', - 71: 'GC_EA_SE_PERF_SEL_MAM_DBIT_FA_HIT', - 72: 'GC_EA_SE_PERF_SEL_MAM_NUM_DQRY', - 73: 'GC_EA_SE_PERF_SEL_MAM_AFLUSH_INTERRUPT', - 74: 'GC_EA_SE_PERF_SEL_MAM_AFLUSH_INTERRUPT_STALLED', - 75: 'GC_EA_SE_PERF_SEL_MAM_AFLUSH_COMPLETED', - 76: 'GC_EA_SE_PERF_SEL_MAM_AFLUSH_ONGOING', - 77: 'GC_EA_SE_PERF_SEL_RDRAM_SIZE_REQ', - 78: 'GC_EA_SE_PERF_SEL_WDRAM_SIZE_REQ', - 79: 'GC_EA_SE_PERF_SEL_RGMI_SIZE_REQ', - 80: 'GC_EA_SE_PERF_SEL_WGMI_SIZE_REQ', - 81: 'GC_EA_SE_PERF_SEL_SARB_DRAM_RW_TURN_AROUND', - 82: 'GC_EA_SE_PERF_SEL_SARB_GMI_RW_TURN_AROUND', - 83: 'GC_EA_SE_PERF_SEL_RDRAM_CHAINED_REQ_PER_BURSTS_LENGTH', - 84: 'GC_EA_SE_PERF_SEL_WDRAM_CHAINED_REQ_PER_BURSTS_LENGTH', - 85: 'GC_EA_SE_PERF_SEL_RGMI_CHAINED_REQ_PER_BURSTS_LENGTH', - 86: 'GC_EA_SE_PERF_SEL_WGMI_CHAINED_REQ_PER_BURSTS_LENGTH', - 87: 'GC_EA_SE_PERF_SEL_MAM_DBIT_FA_EVICT', - 88: 'GC_EA_SE_PERF_SEL_MAM_DBIT_REQ_VLD', - 89: 'GC_EA_SE_PERF_SEL_SARB_COHERENT_SIZE_REQ', - 90: 'GC_EA_SE_PERF_SEL_MAM_ARAM_FA_HIT_EVICT', - 91: 'GC_EA_SE_PERF_SEL_MAM_ARAM_FA_LRU_EVICT', - 92: 'GC_EA_SE_PERF_SEL_MAM_FLUSH_REQ', - 93: 'GC_EA_SE_PERF_SEL_MAM_FLUSH_RESP', - 94: 'GC_EA_SE_PERF_SEL_MAM_DBIT_FA_HIT_EVICT', - 95: 'GC_EA_SE_PERF_SEL_MAM_DBIT_FA_LRU_EVICT', - 96: 'GC_EA_SE_PERF_SEL_MAM_DQRY_ONGOING', - 97: 'GC_EA_SE_PERF_SEL_MAM_ARAM_FA_HIT', -} -GC_EA_SE_PERF_SEL_ALWAYS_COUNT = 0 -GC_EA_SE_PERF_SEL_RDRAM_NUM_BANKS_VLD = 1 -GC_EA_SE_PERF_SEL_RDRAM_REQ_PER_CLIGRP = 2 -GC_EA_SE_PERF_SEL_RDRAM_CHAINED_REQ_PER_CLIGRP = 3 -GC_EA_SE_PERF_SEL_RDRAM_LATENCY_START0 = 4 -GC_EA_SE_PERF_SEL_RDRAM_LATENCY_END0 = 5 -GC_EA_SE_PERF_SEL_RDRAM_LATENCY_START1 = 6 -GC_EA_SE_PERF_SEL_RDRAM_LATENCY_END1 = 7 -GC_EA_SE_PERF_SEL_WDRAM_NUM_BANKS_VLD = 8 -GC_EA_SE_PERF_SEL_WDRAM_REQ_PER_CLIGRP = 9 -GC_EA_SE_PERF_SEL_WDRAM_CHAINED_REQ_PER_CLIGRP = 10 -GC_EA_SE_PERF_SEL_WDRAM_LATENCY_START0 = 11 -GC_EA_SE_PERF_SEL_WDRAM_LATENCY_END0 = 12 -GC_EA_SE_PERF_SEL_WDRAM_LATENCY_START1 = 13 -GC_EA_SE_PERF_SEL_WDRAM_LATENCY_END1 = 14 -GC_EA_SE_PERF_SEL_RGMI_NUM_BANKS_VLD = 15 -GC_EA_SE_PERF_SEL_RGMI_REQ_PER_CLIGRP = 16 -GC_EA_SE_PERF_SEL_RGMI_CHAINED_REQ_PER_CLIGR = 17 -GC_EA_SE_PERF_SEL_RGMI_LATENCY_START0 = 18 -GC_EA_SE_PERF_SEL_RGMI_LATENCY_END0 = 19 -GC_EA_SE_PERF_SEL_RGMI_LATENCY_START1 = 20 -GC_EA_SE_PERF_SEL_RGMI_LATENCY_END1 = 21 -GC_EA_SE_PERF_SEL_WGMI_NUM_BANKS_VLD = 22 -GC_EA_SE_PERF_SEL_WGMI_REQ_PER_CLIGRP = 23 -GC_EA_SE_PERF_SEL_WGMI_CHAINED_REQ_PER_CLIGRP = 24 -GC_EA_SE_PERF_SEL_WGMI_LATENCY_START0 = 25 -GC_EA_SE_PERF_SEL_WGMI_LATENCY_END0 = 26 -GC_EA_SE_PERF_SEL_WGMI_LATENCY_START1 = 27 -GC_EA_SE_PERF_SEL_WGMI_LATENCY_END1 = 28 -GC_EA_SE_PERF_SEL_RIO_REQ_PER_CLIGRP = 29 -GC_EA_SE_PERF_SEL_RIO_SIZE_REQ = 30 -GC_EA_SE_PERF_SEL_RIO_GRP0_SIZE_REQ = 31 -GC_EA_SE_PERF_SEL_RIO_GRP1_SIZE_REQ = 32 -GC_EA_SE_PERF_SEL_RIO_GRP2_SIZE_REQ = 33 -GC_EA_SE_PERF_SEL_RIO_GRP3_SIZE_REQ = 34 -GC_EA_SE_PERF_SEL_RIO_LATENCY_START0 = 35 -GC_EA_SE_PERF_SEL_RIO_LATENCY_END0 = 36 -GC_EA_SE_PERF_SEL_RIO_LATENCY_START1 = 37 -GC_EA_SE_PERF_SEL_RIO_LATENCY_END1 = 38 -GC_EA_SE_PERF_SEL_WIO_REQ_PER_CLIGRP = 39 -GC_EA_SE_PERF_SEL_WIO_CHAINED_REQ_PER_CLIGRP = 40 -GC_EA_SE_PERF_SEL_WIO_SIZE_REQ = 41 -GC_EA_SE_PERF_SEL_WIO_GRP0_SIZE_REQ = 42 -GC_EA_SE_PERF_SEL_WIO_GRP1_SIZE_REQ = 43 -GC_EA_SE_PERF_SEL_WIO_GRP2_SIZE_REQ = 44 -GC_EA_SE_PERF_SEL_WIO_GRP3_SIZE_REQ = 45 -GC_EA_SE_PERF_SEL_WIO_LATENCY_START0 = 46 -GC_EA_SE_PERF_SEL_WIO_LATENCY_END0 = 47 -GC_EA_SE_PERF_SEL_WIO_LATENCY_START1 = 48 -GC_EA_SE_PERF_SEL_WIO_LATENCY_END1 = 49 -GC_EA_SE_PERF_SEL_SARB_REQ_PER_VC = 50 -GC_EA_SE_PERF_SEL_SARB_DRAM_REQ_PER_VC = 51 -GC_EA_SE_PERF_SEL_SARB_GMI_REQ_PER_VC = 52 -GC_EA_SE_PERF_SEL_SARB_IO_REQ_PER_VC = 53 -GC_EA_SE_PERF_SEL_SARB_SIZE_REQ = 54 -GC_EA_SE_PERF_SEL_SARB_DRAM_SIZE_REQ = 55 -GC_EA_SE_PERF_SEL_SARB_GMI_SIZE_REQ = 56 -GC_EA_SE_PERF_SEL_SARB_IO_SIZE_REQ = 57 -GC_EA_SE_PERF_SEL_SARB_LATENCY_START0 = 58 -GC_EA_SE_PERF_SEL_SARB_LATENCY_END0 = 59 -GC_EA_SE_PERF_SEL_SARB_LATENCY_START1 = 60 -GC_EA_SE_PERF_SEL_SARB_LATENCY_END1 = 61 -GC_EA_SE_PERF_SEL_SARB_BUSY = 62 -GC_EA_SE_PERF_SEL_SARB_STALLED = 63 -GC_EA_SE_PERF_SEL_SARB_STARVING = 64 -GC_EA_SE_PERF_SEL_SARB_IDLE = 65 -GC_EA_SE_PERF_SEL_RRET_VLD = 66 -GC_EA_SE_PERF_SEL_WRET_VLD = 67 -GC_EA_SE_PERF_SEL_PRB_REQ = 68 -GC_EA_SE_PERF_SEL_MAM_ARAM_FA_EVICT = 69 -GC_EA_SE_PERF_SEL_MAM_ARAM_REQ_VLD = 70 -GC_EA_SE_PERF_SEL_MAM_DBIT_FA_HIT = 71 -GC_EA_SE_PERF_SEL_MAM_NUM_DQRY = 72 -GC_EA_SE_PERF_SEL_MAM_AFLUSH_INTERRUPT = 73 -GC_EA_SE_PERF_SEL_MAM_AFLUSH_INTERRUPT_STALLED = 74 -GC_EA_SE_PERF_SEL_MAM_AFLUSH_COMPLETED = 75 -GC_EA_SE_PERF_SEL_MAM_AFLUSH_ONGOING = 76 -GC_EA_SE_PERF_SEL_RDRAM_SIZE_REQ = 77 -GC_EA_SE_PERF_SEL_WDRAM_SIZE_REQ = 78 -GC_EA_SE_PERF_SEL_RGMI_SIZE_REQ = 79 -GC_EA_SE_PERF_SEL_WGMI_SIZE_REQ = 80 -GC_EA_SE_PERF_SEL_SARB_DRAM_RW_TURN_AROUND = 81 -GC_EA_SE_PERF_SEL_SARB_GMI_RW_TURN_AROUND = 82 -GC_EA_SE_PERF_SEL_RDRAM_CHAINED_REQ_PER_BURSTS_LENGTH = 83 -GC_EA_SE_PERF_SEL_WDRAM_CHAINED_REQ_PER_BURSTS_LENGTH = 84 -GC_EA_SE_PERF_SEL_RGMI_CHAINED_REQ_PER_BURSTS_LENGTH = 85 -GC_EA_SE_PERF_SEL_WGMI_CHAINED_REQ_PER_BURSTS_LENGTH = 86 -GC_EA_SE_PERF_SEL_MAM_DBIT_FA_EVICT = 87 -GC_EA_SE_PERF_SEL_MAM_DBIT_REQ_VLD = 88 -GC_EA_SE_PERF_SEL_SARB_COHERENT_SIZE_REQ = 89 -GC_EA_SE_PERF_SEL_MAM_ARAM_FA_HIT_EVICT = 90 -GC_EA_SE_PERF_SEL_MAM_ARAM_FA_LRU_EVICT = 91 -GC_EA_SE_PERF_SEL_MAM_FLUSH_REQ = 92 -GC_EA_SE_PERF_SEL_MAM_FLUSH_RESP = 93 -GC_EA_SE_PERF_SEL_MAM_DBIT_FA_HIT_EVICT = 94 -GC_EA_SE_PERF_SEL_MAM_DBIT_FA_LRU_EVICT = 95 -GC_EA_SE_PERF_SEL_MAM_DQRY_ONGOING = 96 -GC_EA_SE_PERF_SEL_MAM_ARAM_FA_HIT = 97 -GC_EA_SE_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'LSDMA_PERF_SEL' -LSDMA_PERF_SEL__enumvalues = { - 0: 'LSDMA_PERF_SEL_CYCLE', - 1: 'LSDMA_PERF_SEL_IDLE', - 2: 'LSDMA_PERF_SEL_REG_IDLE', - 3: 'LSDMA_PERF_SEL_RB_EMPTY', - 4: 'LSDMA_PERF_SEL_RB_FULL', - 5: 'LSDMA_PERF_SEL_RB_WPTR_WRAP', - 6: 'LSDMA_PERF_SEL_RB_RPTR_WRAP', - 7: 'LSDMA_PERF_SEL_RB_WPTR_POLL_READ', - 8: 'LSDMA_PERF_SEL_RB_RPTR_WB', - 9: 'LSDMA_PERF_SEL_RB_CMD_IDLE', - 10: 'LSDMA_PERF_SEL_RB_CMD_FULL', - 11: 'LSDMA_PERF_SEL_IB_CMD_IDLE', - 12: 'LSDMA_PERF_SEL_IB_CMD_FULL', - 13: 'LSDMA_PERF_SEL_EX_IDLE', - 14: 'LSDMA_PERF_SEL_SRBM_REG_SEND', - 15: 'LSDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 16: 'LSDMA_PERF_SEL_MC_WR_IDLE', - 17: 'LSDMA_PERF_SEL_MC_WR_COUNT', - 18: 'LSDMA_PERF_SEL_MC_RD_IDLE', - 19: 'LSDMA_PERF_SEL_MC_RD_COUNT', - 20: 'LSDMA_PERF_SEL_MC_RD_RET_STALL', - 21: 'LSDMA_PERF_SEL_MC_RD_NO_POLL_IDLE', - 24: 'LSDMA_PERF_SEL_SEM_IDLE', - 25: 'LSDMA_PERF_SEL_SEM_REQ_STALL', - 26: 'LSDMA_PERF_SEL_SEM_REQ_COUNT', - 27: 'LSDMA_PERF_SEL_SEM_RESP_INCOMPLETE', - 28: 'LSDMA_PERF_SEL_SEM_RESP_FAIL', - 29: 'LSDMA_PERF_SEL_SEM_RESP_PASS', - 30: 'LSDMA_PERF_SEL_INT_IDLE', - 31: 'LSDMA_PERF_SEL_INT_REQ_STALL', - 32: 'LSDMA_PERF_SEL_INT_REQ_COUNT', - 33: 'LSDMA_PERF_SEL_INT_RESP_ACCEPTED', - 34: 'LSDMA_PERF_SEL_INT_RESP_RETRY', - 35: 'LSDMA_PERF_SEL_NUM_PACKET', - 37: 'LSDMA_PERF_SEL_CE_WREQ_IDLE', - 38: 'LSDMA_PERF_SEL_CE_WR_IDLE', - 39: 'LSDMA_PERF_SEL_CE_SPLIT_IDLE', - 40: 'LSDMA_PERF_SEL_CE_RREQ_IDLE', - 41: 'LSDMA_PERF_SEL_CE_OUT_IDLE', - 42: 'LSDMA_PERF_SEL_CE_IN_IDLE', - 43: 'LSDMA_PERF_SEL_CE_DST_IDLE', - 46: 'LSDMA_PERF_SEL_CE_AFIFO_FULL', - 47: 'LSDMA_PERF_SEL_DUMMY_0', - 48: 'LSDMA_PERF_SEL_DUMMY_1', - 49: 'LSDMA_PERF_SEL_CE_INFO_FULL', - 50: 'LSDMA_PERF_SEL_CE_INFO1_FULL', - 51: 'LSDMA_PERF_SEL_CE_RD_STALL', - 52: 'LSDMA_PERF_SEL_CE_WR_STALL', - 53: 'LSDMA_PERF_SEL_GFX_SELECT', - 54: 'LSDMA_PERF_SEL_RLC0_SELECT', - 55: 'LSDMA_PERF_SEL_RLC1_SELECT', - 56: 'LSDMA_PERF_SEL_PAGE_SELECT', - 57: 'LSDMA_PERF_SEL_CTX_CHANGE', - 58: 'LSDMA_PERF_SEL_CTX_CHANGE_EXPIRED', - 59: 'LSDMA_PERF_SEL_CTX_CHANGE_EXCEPTION', - 60: 'LSDMA_PERF_SEL_DOORBELL', - 61: 'LSDMA_PERF_SEL_RD_BA_RTR', - 62: 'LSDMA_PERF_SEL_WR_BA_RTR', - 63: 'LSDMA_PERF_SEL_F32_L1_WR_VLD', - 64: 'LSDMA_PERF_SEL_CE_L1_WR_VLD', - 65: 'LSDMA_PERF_SEL_CE_L1_STALL', - 66: 'LSDMA_PERF_SEL_SDMA_INVACK_NFLUSH', - 67: 'LSDMA_PERF_SEL_SDMA_INVACK_FLUSH', - 68: 'LSDMA_PERF_SEL_ATCL2_INVREQ_NFLUSH', - 69: 'LSDMA_PERF_SEL_ATCL2_INVREQ_FLUSH', - 70: 'LSDMA_PERF_SEL_ATCL2_RET_XNACK', - 71: 'LSDMA_PERF_SEL_ATCL2_RET_ACK', - 72: 'LSDMA_PERF_SEL_ATCL2_FREE', - 73: 'LSDMA_PERF_SEL_SDMA_ATCL2_SEND', - 74: 'LSDMA_PERF_SEL_DMA_L1_WR_SEND', - 75: 'LSDMA_PERF_SEL_DMA_L1_RD_SEND', - 76: 'LSDMA_PERF_SEL_DMA_MC_WR_SEND', - 77: 'LSDMA_PERF_SEL_DMA_MC_RD_SEND', - 78: 'LSDMA_PERF_SEL_L1_WR_FIFO_IDLE', - 79: 'LSDMA_PERF_SEL_L1_RD_FIFO_IDLE', - 80: 'LSDMA_PERF_SEL_L1_WRL2_IDLE', - 81: 'LSDMA_PERF_SEL_L1_RDL2_IDLE', - 82: 'LSDMA_PERF_SEL_L1_WRMC_IDLE', - 83: 'LSDMA_PERF_SEL_L1_RDMC_IDLE', - 84: 'LSDMA_PERF_SEL_L1_WR_INV_IDLE', - 85: 'LSDMA_PERF_SEL_L1_RD_INV_IDLE', - 86: 'LSDMA_PERF_SEL_L1_WR_INV_EN', - 87: 'LSDMA_PERF_SEL_L1_RD_INV_EN', - 88: 'LSDMA_PERF_SEL_L1_WR_WAIT_INVADR', - 89: 'LSDMA_PERF_SEL_L1_RD_WAIT_INVADR', - 90: 'LSDMA_PERF_SEL_IS_INVREQ_ADDR_WR', - 91: 'LSDMA_PERF_SEL_IS_INVREQ_ADDR_RD', - 92: 'LSDMA_PERF_SEL_L1_WR_XNACK_TIMEOUT', - 93: 'LSDMA_PERF_SEL_L1_RD_XNACK_TIMEOUT', - 94: 'LSDMA_PERF_SEL_L1_INV_MIDDLE', - 95: 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_WR_REQ', - 96: 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_WR_RET', - 97: 'LSDMA_PERF_SEL_ATOMIC_MMHUB_WR_REQ', - 98: 'LSDMA_PERF_SEL_ATOMIC_MMHUB_WR_RET', - 99: 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_RD_REQ', - 100: 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_RD_RET', - 101: 'LSDMA_PERF_SEL_RB_MMHUB_RD_REQ', - 102: 'LSDMA_PERF_SEL_RB_MMHUB_RD_RET', - 103: 'LSDMA_PERF_SEL_IB_MMHUB_RD_REQ', - 104: 'LSDMA_PERF_SEL_IB_MMHUB_RD_RET', - 105: 'LSDMA_PERF_SEL_WPTR_MMHUB_RD_REQ', - 106: 'LSDMA_PERF_SEL_WPTR_MMHUB_RD_RET', - 107: 'LSDMA_PERF_SEL_UTCL1_UTCL2_REQ', - 108: 'LSDMA_PERF_SEL_UTCL1_UTCL2_RET', - 109: 'LSDMA_PERF_SEL_CMD_OP_MATCH', - 110: 'LSDMA_PERF_SEL_CMD_OP_START', - 111: 'LSDMA_PERF_SEL_CMD_OP_END', - 112: 'LSDMA_PERF_SEL_CE_BUSY', - 113: 'LSDMA_PERF_SEL_CE_BUSY_START', - 114: 'LSDMA_PERF_SEL_CE_BUSY_END', - 115: 'LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER', - 116: 'LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER_START', - 117: 'LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER_END', - 118: 'LSDMA_PERF_SEL_CE_MMHUB_WRREQ_SEND', - 119: 'LSDMA_PERF_SEL_MMHUB_CE_WRRET_VALID', - 120: 'LSDMA_PERF_SEL_CE_MMHUB_RDREQ_SEND', - 121: 'LSDMA_PERF_SEL_MMHUB_CE_RDRET_VALID', - 122: 'LSDMA_PERF_SEL_DRAM_ECC', - 123: 'LSDMA_PERF_SEL_NACK_GEN_ERR', -} -LSDMA_PERF_SEL_CYCLE = 0 -LSDMA_PERF_SEL_IDLE = 1 -LSDMA_PERF_SEL_REG_IDLE = 2 -LSDMA_PERF_SEL_RB_EMPTY = 3 -LSDMA_PERF_SEL_RB_FULL = 4 -LSDMA_PERF_SEL_RB_WPTR_WRAP = 5 -LSDMA_PERF_SEL_RB_RPTR_WRAP = 6 -LSDMA_PERF_SEL_RB_WPTR_POLL_READ = 7 -LSDMA_PERF_SEL_RB_RPTR_WB = 8 -LSDMA_PERF_SEL_RB_CMD_IDLE = 9 -LSDMA_PERF_SEL_RB_CMD_FULL = 10 -LSDMA_PERF_SEL_IB_CMD_IDLE = 11 -LSDMA_PERF_SEL_IB_CMD_FULL = 12 -LSDMA_PERF_SEL_EX_IDLE = 13 -LSDMA_PERF_SEL_SRBM_REG_SEND = 14 -LSDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE = 15 -LSDMA_PERF_SEL_MC_WR_IDLE = 16 -LSDMA_PERF_SEL_MC_WR_COUNT = 17 -LSDMA_PERF_SEL_MC_RD_IDLE = 18 -LSDMA_PERF_SEL_MC_RD_COUNT = 19 -LSDMA_PERF_SEL_MC_RD_RET_STALL = 20 -LSDMA_PERF_SEL_MC_RD_NO_POLL_IDLE = 21 -LSDMA_PERF_SEL_SEM_IDLE = 24 -LSDMA_PERF_SEL_SEM_REQ_STALL = 25 -LSDMA_PERF_SEL_SEM_REQ_COUNT = 26 -LSDMA_PERF_SEL_SEM_RESP_INCOMPLETE = 27 -LSDMA_PERF_SEL_SEM_RESP_FAIL = 28 -LSDMA_PERF_SEL_SEM_RESP_PASS = 29 -LSDMA_PERF_SEL_INT_IDLE = 30 -LSDMA_PERF_SEL_INT_REQ_STALL = 31 -LSDMA_PERF_SEL_INT_REQ_COUNT = 32 -LSDMA_PERF_SEL_INT_RESP_ACCEPTED = 33 -LSDMA_PERF_SEL_INT_RESP_RETRY = 34 -LSDMA_PERF_SEL_NUM_PACKET = 35 -LSDMA_PERF_SEL_CE_WREQ_IDLE = 37 -LSDMA_PERF_SEL_CE_WR_IDLE = 38 -LSDMA_PERF_SEL_CE_SPLIT_IDLE = 39 -LSDMA_PERF_SEL_CE_RREQ_IDLE = 40 -LSDMA_PERF_SEL_CE_OUT_IDLE = 41 -LSDMA_PERF_SEL_CE_IN_IDLE = 42 -LSDMA_PERF_SEL_CE_DST_IDLE = 43 -LSDMA_PERF_SEL_CE_AFIFO_FULL = 46 -LSDMA_PERF_SEL_DUMMY_0 = 47 -LSDMA_PERF_SEL_DUMMY_1 = 48 -LSDMA_PERF_SEL_CE_INFO_FULL = 49 -LSDMA_PERF_SEL_CE_INFO1_FULL = 50 -LSDMA_PERF_SEL_CE_RD_STALL = 51 -LSDMA_PERF_SEL_CE_WR_STALL = 52 -LSDMA_PERF_SEL_GFX_SELECT = 53 -LSDMA_PERF_SEL_RLC0_SELECT = 54 -LSDMA_PERF_SEL_RLC1_SELECT = 55 -LSDMA_PERF_SEL_PAGE_SELECT = 56 -LSDMA_PERF_SEL_CTX_CHANGE = 57 -LSDMA_PERF_SEL_CTX_CHANGE_EXPIRED = 58 -LSDMA_PERF_SEL_CTX_CHANGE_EXCEPTION = 59 -LSDMA_PERF_SEL_DOORBELL = 60 -LSDMA_PERF_SEL_RD_BA_RTR = 61 -LSDMA_PERF_SEL_WR_BA_RTR = 62 -LSDMA_PERF_SEL_F32_L1_WR_VLD = 63 -LSDMA_PERF_SEL_CE_L1_WR_VLD = 64 -LSDMA_PERF_SEL_CE_L1_STALL = 65 -LSDMA_PERF_SEL_SDMA_INVACK_NFLUSH = 66 -LSDMA_PERF_SEL_SDMA_INVACK_FLUSH = 67 -LSDMA_PERF_SEL_ATCL2_INVREQ_NFLUSH = 68 -LSDMA_PERF_SEL_ATCL2_INVREQ_FLUSH = 69 -LSDMA_PERF_SEL_ATCL2_RET_XNACK = 70 -LSDMA_PERF_SEL_ATCL2_RET_ACK = 71 -LSDMA_PERF_SEL_ATCL2_FREE = 72 -LSDMA_PERF_SEL_SDMA_ATCL2_SEND = 73 -LSDMA_PERF_SEL_DMA_L1_WR_SEND = 74 -LSDMA_PERF_SEL_DMA_L1_RD_SEND = 75 -LSDMA_PERF_SEL_DMA_MC_WR_SEND = 76 -LSDMA_PERF_SEL_DMA_MC_RD_SEND = 77 -LSDMA_PERF_SEL_L1_WR_FIFO_IDLE = 78 -LSDMA_PERF_SEL_L1_RD_FIFO_IDLE = 79 -LSDMA_PERF_SEL_L1_WRL2_IDLE = 80 -LSDMA_PERF_SEL_L1_RDL2_IDLE = 81 -LSDMA_PERF_SEL_L1_WRMC_IDLE = 82 -LSDMA_PERF_SEL_L1_RDMC_IDLE = 83 -LSDMA_PERF_SEL_L1_WR_INV_IDLE = 84 -LSDMA_PERF_SEL_L1_RD_INV_IDLE = 85 -LSDMA_PERF_SEL_L1_WR_INV_EN = 86 -LSDMA_PERF_SEL_L1_RD_INV_EN = 87 -LSDMA_PERF_SEL_L1_WR_WAIT_INVADR = 88 -LSDMA_PERF_SEL_L1_RD_WAIT_INVADR = 89 -LSDMA_PERF_SEL_IS_INVREQ_ADDR_WR = 90 -LSDMA_PERF_SEL_IS_INVREQ_ADDR_RD = 91 -LSDMA_PERF_SEL_L1_WR_XNACK_TIMEOUT = 92 -LSDMA_PERF_SEL_L1_RD_XNACK_TIMEOUT = 93 -LSDMA_PERF_SEL_L1_INV_MIDDLE = 94 -LSDMA_PERF_SEL_CE_OR_F32_MMHUB_WR_REQ = 95 -LSDMA_PERF_SEL_CE_OR_F32_MMHUB_WR_RET = 96 -LSDMA_PERF_SEL_ATOMIC_MMHUB_WR_REQ = 97 -LSDMA_PERF_SEL_ATOMIC_MMHUB_WR_RET = 98 -LSDMA_PERF_SEL_CE_OR_F32_MMHUB_RD_REQ = 99 -LSDMA_PERF_SEL_CE_OR_F32_MMHUB_RD_RET = 100 -LSDMA_PERF_SEL_RB_MMHUB_RD_REQ = 101 -LSDMA_PERF_SEL_RB_MMHUB_RD_RET = 102 -LSDMA_PERF_SEL_IB_MMHUB_RD_REQ = 103 -LSDMA_PERF_SEL_IB_MMHUB_RD_RET = 104 -LSDMA_PERF_SEL_WPTR_MMHUB_RD_REQ = 105 -LSDMA_PERF_SEL_WPTR_MMHUB_RD_RET = 106 -LSDMA_PERF_SEL_UTCL1_UTCL2_REQ = 107 -LSDMA_PERF_SEL_UTCL1_UTCL2_RET = 108 -LSDMA_PERF_SEL_CMD_OP_MATCH = 109 -LSDMA_PERF_SEL_CMD_OP_START = 110 -LSDMA_PERF_SEL_CMD_OP_END = 111 -LSDMA_PERF_SEL_CE_BUSY = 112 -LSDMA_PERF_SEL_CE_BUSY_START = 113 -LSDMA_PERF_SEL_CE_BUSY_END = 114 -LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER = 115 -LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER_START = 116 -LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER_END = 117 -LSDMA_PERF_SEL_CE_MMHUB_WRREQ_SEND = 118 -LSDMA_PERF_SEL_MMHUB_CE_WRRET_VALID = 119 -LSDMA_PERF_SEL_CE_MMHUB_RDREQ_SEND = 120 -LSDMA_PERF_SEL_MMHUB_CE_RDRET_VALID = 121 -LSDMA_PERF_SEL_DRAM_ECC = 122 -LSDMA_PERF_SEL_NACK_GEN_ERR = 123 -LSDMA_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'EFC_SURFACE_PIXEL_FORMAT' -EFC_SURFACE_PIXEL_FORMAT__enumvalues = { - 1: 'EFC_ARGB1555', - 2: 'EFC_RGBA5551', - 3: 'EFC_RGB565', - 4: 'EFC_BGR565', - 5: 'EFC_ARGB4444', - 6: 'EFC_RGBA4444', - 8: 'EFC_ARGB8888', - 9: 'EFC_RGBA8888', - 10: 'EFC_ARGB2101010', - 11: 'EFC_RGBA1010102', - 12: 'EFC_AYCrCb8888', - 13: 'EFC_YCrCbA8888', - 14: 'EFC_ACrYCb8888', - 15: 'EFC_CrYCbA8888', - 16: 'EFC_ARGB16161616_10MSB', - 17: 'EFC_RGBA16161616_10MSB', - 18: 'EFC_ARGB16161616_10LSB', - 19: 'EFC_RGBA16161616_10LSB', - 20: 'EFC_ARGB16161616_12MSB', - 21: 'EFC_RGBA16161616_12MSB', - 22: 'EFC_ARGB16161616_12LSB', - 23: 'EFC_RGBA16161616_12LSB', - 24: 'EFC_ARGB16161616_FLOAT', - 25: 'EFC_RGBA16161616_FLOAT', - 26: 'EFC_ARGB16161616_UNORM', - 27: 'EFC_RGBA16161616_UNORM', - 28: 'EFC_ARGB16161616_SNORM', - 29: 'EFC_RGBA16161616_SNORM', - 32: 'EFC_AYCrCb16161616_10MSB', - 33: 'EFC_AYCrCb16161616_10LSB', - 34: 'EFC_YCrCbA16161616_10MSB', - 35: 'EFC_YCrCbA16161616_10LSB', - 36: 'EFC_ACrYCb16161616_10MSB', - 37: 'EFC_ACrYCb16161616_10LSB', - 38: 'EFC_CrYCbA16161616_10MSB', - 39: 'EFC_CrYCbA16161616_10LSB', - 40: 'EFC_AYCrCb16161616_12MSB', - 41: 'EFC_AYCrCb16161616_12LSB', - 42: 'EFC_YCrCbA16161616_12MSB', - 43: 'EFC_YCrCbA16161616_12LSB', - 44: 'EFC_ACrYCb16161616_12MSB', - 45: 'EFC_ACrYCb16161616_12LSB', - 46: 'EFC_CrYCbA16161616_12MSB', - 47: 'EFC_CrYCbA16161616_12LSB', - 64: 'EFC_Y8_CrCb88_420_PLANAR', - 65: 'EFC_Y8_CbCr88_420_PLANAR', - 66: 'EFC_Y10_CrCb1010_420_PLANAR', - 67: 'EFC_Y10_CbCr1010_420_PLANAR', - 68: 'EFC_Y12_CrCb1212_420_PLANAR', - 69: 'EFC_Y12_CbCr1212_420_PLANAR', - 72: 'EFC_YCrYCb8888_422_PACKED', - 73: 'EFC_YCbYCr8888_422_PACKED', - 74: 'EFC_CrYCbY8888_422_PACKED', - 75: 'EFC_CbYCrY8888_422_PACKED', - 76: 'EFC_YCrYCb10101010_422_PACKED', - 77: 'EFC_YCbYCr10101010_422_PACKED', - 78: 'EFC_CrYCbY10101010_422_PACKED', - 79: 'EFC_CbYCrY10101010_422_PACKED', - 80: 'EFC_YCrYCb12121212_422_PACKED', - 81: 'EFC_YCbYCr12121212_422_PACKED', - 82: 'EFC_CrYCbY12121212_422_PACKED', - 83: 'EFC_CbYCrY12121212_422_PACKED', - 112: 'EFC_RGB111110_FIX', - 113: 'EFC_BGR101111_FIX', - 114: 'EFC_ACrYCb2101010', - 115: 'EFC_CrYCbA1010102', - 118: 'EFC_RGB111110_FLOAT', - 119: 'EFC_BGR101111_FLOAT', - 120: 'EFC_MONO_8', - 121: 'EFC_MONO_10MSB', - 122: 'EFC_MONO_10LSB', - 123: 'EFC_MONO_12MSB', - 124: 'EFC_MONO_12LSB', - 125: 'EFC_MONO_16', -} -EFC_ARGB1555 = 1 -EFC_RGBA5551 = 2 -EFC_RGB565 = 3 -EFC_BGR565 = 4 -EFC_ARGB4444 = 5 -EFC_RGBA4444 = 6 -EFC_ARGB8888 = 8 -EFC_RGBA8888 = 9 -EFC_ARGB2101010 = 10 -EFC_RGBA1010102 = 11 -EFC_AYCrCb8888 = 12 -EFC_YCrCbA8888 = 13 -EFC_ACrYCb8888 = 14 -EFC_CrYCbA8888 = 15 -EFC_ARGB16161616_10MSB = 16 -EFC_RGBA16161616_10MSB = 17 -EFC_ARGB16161616_10LSB = 18 -EFC_RGBA16161616_10LSB = 19 -EFC_ARGB16161616_12MSB = 20 -EFC_RGBA16161616_12MSB = 21 -EFC_ARGB16161616_12LSB = 22 -EFC_RGBA16161616_12LSB = 23 -EFC_ARGB16161616_FLOAT = 24 -EFC_RGBA16161616_FLOAT = 25 -EFC_ARGB16161616_UNORM = 26 -EFC_RGBA16161616_UNORM = 27 -EFC_ARGB16161616_SNORM = 28 -EFC_RGBA16161616_SNORM = 29 -EFC_AYCrCb16161616_10MSB = 32 -EFC_AYCrCb16161616_10LSB = 33 -EFC_YCrCbA16161616_10MSB = 34 -EFC_YCrCbA16161616_10LSB = 35 -EFC_ACrYCb16161616_10MSB = 36 -EFC_ACrYCb16161616_10LSB = 37 -EFC_CrYCbA16161616_10MSB = 38 -EFC_CrYCbA16161616_10LSB = 39 -EFC_AYCrCb16161616_12MSB = 40 -EFC_AYCrCb16161616_12LSB = 41 -EFC_YCrCbA16161616_12MSB = 42 -EFC_YCrCbA16161616_12LSB = 43 -EFC_ACrYCb16161616_12MSB = 44 -EFC_ACrYCb16161616_12LSB = 45 -EFC_CrYCbA16161616_12MSB = 46 -EFC_CrYCbA16161616_12LSB = 47 -EFC_Y8_CrCb88_420_PLANAR = 64 -EFC_Y8_CbCr88_420_PLANAR = 65 -EFC_Y10_CrCb1010_420_PLANAR = 66 -EFC_Y10_CbCr1010_420_PLANAR = 67 -EFC_Y12_CrCb1212_420_PLANAR = 68 -EFC_Y12_CbCr1212_420_PLANAR = 69 -EFC_YCrYCb8888_422_PACKED = 72 -EFC_YCbYCr8888_422_PACKED = 73 -EFC_CrYCbY8888_422_PACKED = 74 -EFC_CbYCrY8888_422_PACKED = 75 -EFC_YCrYCb10101010_422_PACKED = 76 -EFC_YCbYCr10101010_422_PACKED = 77 -EFC_CrYCbY10101010_422_PACKED = 78 -EFC_CbYCrY10101010_422_PACKED = 79 -EFC_YCrYCb12121212_422_PACKED = 80 -EFC_YCbYCr12121212_422_PACKED = 81 -EFC_CrYCbY12121212_422_PACKED = 82 -EFC_CbYCrY12121212_422_PACKED = 83 -EFC_RGB111110_FIX = 112 -EFC_BGR101111_FIX = 113 -EFC_ACrYCb2101010 = 114 -EFC_CrYCbA1010102 = 115 -EFC_RGB111110_FLOAT = 118 -EFC_BGR101111_FLOAT = 119 -EFC_MONO_8 = 120 -EFC_MONO_10MSB = 121 -EFC_MONO_10LSB = 122 -EFC_MONO_12MSB = 123 -EFC_MONO_12LSB = 124 -EFC_MONO_16 = 125 -EFC_SURFACE_PIXEL_FORMAT = ctypes.c_uint32 # enum -__all__ = \ - ['ACCEPT_UNSOLICITED_RESPONSE_ENABLE', - 'ACCEPT_UNSOLICITED_RESPONSE_NOT_ENABLE', 'ACP_TYPE_DVD_AUDIO', - 'ACP_TYPE_GENERIC_AUDIO', 'ACP_TYPE_ICE60958_AUDIO', - 'ACP_TYPE_SUPER_AUDIO_CD', 'ACrYCb16161616_10LSB', - 'ACrYCb16161616_10MSB', 'ACrYCb16161616_12LSB', - 'ACrYCb16161616_12MSB', 'ACrYCb2101010', 'ACrYCb8888', - 'AFMT_ACP_SOURCE_FROM_AFMT_REGISTERS', - 'AFMT_ACP_SOURCE_FROM_AZALIA', 'AFMT_ACP_TYPE', - 'AFMT_AUDIO_CRC_AUDIO_SAMPLE_COUNT', - 'AFMT_AUDIO_CRC_AUTO_RESTART', 'AFMT_AUDIO_CRC_CH0_SIG', - 'AFMT_AUDIO_CRC_CH1_SIG', 'AFMT_AUDIO_CRC_CH2_SIG', - 'AFMT_AUDIO_CRC_CH3_SIG', 'AFMT_AUDIO_CRC_CH4_SIG', - 'AFMT_AUDIO_CRC_CH5_SIG', 'AFMT_AUDIO_CRC_CH6_SIG', - 'AFMT_AUDIO_CRC_CH7_SIG', 'AFMT_AUDIO_CRC_CONTROL_CH_SEL', - 'AFMT_AUDIO_CRC_CONTROL_CONT', 'AFMT_AUDIO_CRC_CONTROL_SOURCE', - 'AFMT_AUDIO_CRC_ONESHOT', 'AFMT_AUDIO_CRC_RESERVED_10', - 'AFMT_AUDIO_CRC_RESERVED_11', 'AFMT_AUDIO_CRC_RESERVED_12', - 'AFMT_AUDIO_CRC_RESERVED_13', 'AFMT_AUDIO_CRC_RESERVED_14', - 'AFMT_AUDIO_CRC_RESERVED_8', 'AFMT_AUDIO_CRC_RESERVED_9', - 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_INPUT', - 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_OUTPUT', - 'AFMT_AUDIO_LAYOUT_DETERMINED_BY_AZ_AUDIO_CHANNEL_STATUS', - 'AFMT_AUDIO_LAYOUT_OVRD_BY_REGISTER', - 'AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD', - 'AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND', - 'AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS', - 'AFMT_AUDIO_PACKET_SENT_DISABLED', - 'AFMT_AUDIO_PACKET_SENT_ENABLED', 'AFMT_AUDIO_SRC_CONTROL_SELECT', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM0', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM1', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM2', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM3', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM4', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM5', - 'AFMT_HDMI_AUDIO_SEND_MAX_PACKETS', - 'AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE', - 'AFMT_INFOFRAME_SOURCE_FROM_AFMT_REGISTERS', - 'AFMT_INFOFRAME_SOURCE_FROM_AZALIA_BLOCK', - 'AFMT_INTERRUPT_DISABLE', 'AFMT_INTERRUPT_ENABLE', - 'AFMT_INTERRUPT_STATUS_CHG_MASK', 'AFMT_MEM_DISABLE_MEM_PWR_CTRL', - 'AFMT_MEM_ENABLE_MEM_PWR_CTRL', - 'AFMT_MEM_FORCE_DEEP_SLEEP_REQUEST', - 'AFMT_MEM_FORCE_LIGHT_SLEEP_REQUEST', - 'AFMT_MEM_FORCE_SHUT_DOWN_REQUEST', 'AFMT_MEM_NO_FORCE_REQUEST', - 'AFMT_MEM_PWR_DIS_CTRL', 'AFMT_MEM_PWR_FORCE_CTRL', - 'AFMT_NOT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED_RESERVED', - 'AFMT_RAMP_CONTROL0_SIGN', 'AFMT_RAMP_SIGNED', - 'AFMT_RAMP_UNSIGNED', 'AFMT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED', - 'AFMT_VBI_PACKET_CONTROL_ACP_SOURCE', 'ALLOW_SR_ON_TRANS_REQ', - 'ALLOW_SR_ON_TRANS_REQ_DISABLE', 'ALLOW_SR_ON_TRANS_REQ_ENABLE', - 'ALL_USE_R', 'ALPHA_DATA_ONTO_ALPHA_PORT', - 'ALPHA_DATA_ONTO_CB_B_PORT', 'ALPHA_DATA_ONTO_CR_R_PORT', - 'ALPHA_DATA_ONTO_Y_G_PORT', - 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_ACK', - 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_NOT_ACK', 'AMCLOCK_ENABLE', - 'APG_ACP_OVERRIDE', 'APG_ACP_SOURCE_NO_OVERRIDE', - 'APG_ACP_TYPE_DVD_AUDIO', 'APG_ACP_TYPE_GENERIC_AUDIO', - 'APG_ACP_TYPE_ICE60958_AUDIO', 'APG_ACP_TYPE_SUPER_AUDIO_CD', - 'APG_AUDIO_CRC_CH0_SIG', 'APG_AUDIO_CRC_CH1_SIG', - 'APG_AUDIO_CRC_CH2_SIG', 'APG_AUDIO_CRC_CH3_SIG', - 'APG_AUDIO_CRC_CH4_SIG', 'APG_AUDIO_CRC_CH5_SIG', - 'APG_AUDIO_CRC_CH6_SIG', 'APG_AUDIO_CRC_CH7_SIG', - 'APG_AUDIO_CRC_CONTINUOUS', 'APG_AUDIO_CRC_CONTROL_CH_SEL', - 'APG_AUDIO_CRC_CONTROL_CONT', 'APG_AUDIO_CRC_ONESHOT', - 'APG_AUDIO_CRC_RESERVED_10', 'APG_AUDIO_CRC_RESERVED_11', - 'APG_AUDIO_CRC_RESERVED_12', 'APG_AUDIO_CRC_RESERVED_13', - 'APG_AUDIO_CRC_RESERVED_14', 'APG_AUDIO_CRC_RESERVED_15', - 'APG_AUDIO_CRC_RESERVED_8', 'APG_AUDIO_CRC_RESERVED_9', - 'APG_DBG_ACP_TYPE', 'APG_DBG_AUDIO_DTO_BASE', - 'APG_DBG_AUDIO_DTO_DIV', 'APG_DBG_AUDIO_DTO_MULTI', - 'APG_DBG_MUX_SEL', 'APG_DEBUG_AUDIO_MODE', - 'APG_DP_ASP_CHANNEL_COUNT_FROM_AZ', - 'APG_DP_ASP_CHANNEL_COUNT_OVERRIDE', - 'APG_DP_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED', - 'APG_FUNCTIONAL_MODE', 'APG_INFOFRAME_SOURCE_FROM_APG_REGISTERS', - 'APG_INFOFRAME_SOURCE_NO_OVERRIDE', - 'APG_MEM_DISABLE_MEM_PWR_CTRL', 'APG_MEM_ENABLE_MEM_PWR_CTRL', - 'APG_MEM_FORCE_DEEP_SLEEP_REQUEST', - 'APG_MEM_FORCE_LIGHT_SLEEP_REQUEST', - 'APG_MEM_FORCE_SHUT_DOWN_REQUEST', 'APG_MEM_NO_FORCE_REQUEST', - 'APG_MEM_POWER_STATE', 'APG_MEM_POWER_STATE_DS', - 'APG_MEM_POWER_STATE_LS', 'APG_MEM_POWER_STATE_ON', - 'APG_MEM_POWER_STATE_SD', 'APG_MEM_PWR_DIS_CTRL', - 'APG_MEM_PWR_FORCE_CTRL', 'APG_PACKET_CONTROL_ACP_SOURCE', - 'APG_PACKET_CONTROL_AUDIO_INFO_SOURCE', 'APG_RAMP_CONTROL_SIGN', - 'APG_RAMP_SIGNED', 'APG_RAMP_UNSIGNED', 'ARGB1555', - 'ARGB16161616_10LSB', 'ARGB16161616_10MSB', 'ARGB16161616_12LSB', - 'ARGB16161616_12MSB', 'ARGB16161616_FLOAT', 'ARGB16161616_SNORM', - 'ARGB16161616_UNORM', 'ARGB2101010', 'ARGB4444', 'ARGB8888', - 'AUDIO_LAYOUT_0', 'AUDIO_LAYOUT_1', 'AUDIO_LAYOUT_SELECT', - 'AUTOCAL_MODE_AUTOCENTER', 'AUTOCAL_MODE_AUTOREPLICATE', - 'AUTOCAL_MODE_AUTOSCALE', 'AUTOCAL_MODE_OFF', - 'AYCrCb16161616_10LSB', 'AYCrCb16161616_10MSB', - 'AYCrCb16161616_12LSB', 'AYCrCb16161616_12MSB', 'AYCrCb8888', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_ANALOG', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NOT_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_NO_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_NOT_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_HAVE_EAPD_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_NO_EAPD_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_PRESENCE_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_NOT_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_NOT_BALANCED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_JACK_PRESENCE_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE', - 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', - 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABLILITY', - 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE', - 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABLILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_EAPD_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_NOT_BALANCED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_EAPD_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_ENABLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_NOT_ENABLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_NOT_ON', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_ON', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ONE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ZERO', - 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_DO_RESET', - 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_NOT_RESET', - 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_DRIVEN', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_SHUT_OFF', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_0', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_1', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_10', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_11', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_12', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_13', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_14', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_15', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_2', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_3', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_4', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_5', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_6', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_7', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_8', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_9', - 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_FORBIDDEN', - 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT', - 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_NO_INFO_OR_PERMITTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', - 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE', - 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', - 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE', - 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_DRIVEN', - 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_SHUT_OFF', - 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET', - 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_NOT_RESET', - 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_RESET_REFCLK_LOGIC', - 'AZ_CORB_SIZE', 'AZ_CORB_SIZE_16ENTRIES_RESERVED', - 'AZ_CORB_SIZE_256ENTRIES', 'AZ_CORB_SIZE_2ENTRIES_RESERVED', - 'AZ_CORB_SIZE_RESERVED', 'AZ_GLOBAL_CAPABILITIES', - 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_NOT_SUPPORTED', - 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_SUPPORTED', - 'AZ_LATENCY_COUNTER_CONTROL', 'AZ_LATENCY_COUNTER_NO_RESET', - 'AZ_LATENCY_COUNTER_RESET_DONE', 'AZ_RIRB_SIZE', - 'AZ_RIRB_SIZE_16ENTRIES_RESERVED', 'AZ_RIRB_SIZE_256ENTRIES', - 'AZ_RIRB_SIZE_2ENTRIES_RESERVED', 'AZ_RIRB_SIZE_UNDEFINED', - 'AZ_RIRB_WRITE_POINTER_DO_RESET', - 'AZ_RIRB_WRITE_POINTER_NOT_RESET', 'AZ_RIRB_WRITE_POINTER_RESET', - 'AZ_STATE_CHANGE_STATUS', - 'AZ_STATE_CHANGE_STATUS_CODEC_NOT_PRESENT', - 'AZ_STATE_CHANGE_STATUS_CODEC_PRESENT', 'BASE_RATE_44P1KHZ', - 'BASE_RATE_48KHZ', 'BGR101111_FIX', 'BGR101111_FLOAT', 'BGR565', - 'BIGK_FRAGMENT_SIZE', 'BINNER_BREAK_BATCH', 'BINNER_DROP', - 'BINNER_PIPELINE', 'BINNER_PIPELINE_BREAK', 'BINNING_ALLOWED', - 'BINNING_DISABLED', 'BINNING_ONE_PRIM_PER_BATCH', - 'BIN_CONF_OVERRIDE_CHECK', 'BIN_MAP_MODE_NONE', - 'BIN_MAP_MODE_POPS', 'BIN_MAP_MODE_RTA_INDEX', - 'BIN_SIZE_128_PIXELS', 'BIN_SIZE_256_PIXELS', - 'BIN_SIZE_32_PIXELS', 'BIN_SIZE_512_PIXELS', 'BIN_SIZE_64_PIXELS', - 'BITS_31_0', 'BITS_32_1', 'BITS_33_2', 'BITS_34_3', 'BITS_35_4', - 'BITS_36_5', 'BITS_37_6', 'BITS_38_7', 'BLEND_CONSTANT_ALPHA', - 'BLEND_CONSTANT_COLOR', 'BLEND_DST_ALPHA', 'BLEND_DST_COLOR', - 'BLEND_INV_SRC1_ALPHA', 'BLEND_INV_SRC1_COLOR', 'BLEND_ONE', - 'BLEND_ONE_MINUS_CONSTANT_ALPHA', - 'BLEND_ONE_MINUS_CONSTANT_COLOR', 'BLEND_ONE_MINUS_DST_ALPHA', - 'BLEND_ONE_MINUS_DST_COLOR', 'BLEND_ONE_MINUS_SRC_ALPHA', - 'BLEND_ONE_MINUS_SRC_COLOR', 'BLEND_OPT_PRESERVE_A0_IGNORE_A1', - 'BLEND_OPT_PRESERVE_A1_IGNORE_A0', - 'BLEND_OPT_PRESERVE_ALL_IGNORE_NONE', - 'BLEND_OPT_PRESERVE_C0_IGNORE_C1', - 'BLEND_OPT_PRESERVE_C1_IGNORE_C0', - 'BLEND_OPT_PRESERVE_NONE_IGNORE_A0', - 'BLEND_OPT_PRESERVE_NONE_IGNORE_ALL', - 'BLEND_OPT_PRESERVE_NONE_IGNORE_NONE', 'BLEND_SRC1_ALPHA', - 'BLEND_SRC1_COLOR', 'BLEND_SRC_ALPHA', 'BLEND_SRC_ALPHA_SATURATE', - 'BLEND_SRC_COLOR', 'BLEND_ZERO', 'BLOCK_CONTEXT_DONE', 'BLUE_LUT', - 'BOTTOM_OF_PIPE_TS', 'BREAK_BATCH', 'BYPASS', 'BYPASS_EN', - 'BYPASS_POST_CSC', 'BinEventCntl', 'BinMapMode', 'BinSizeExtend', - 'BinningMode', 'BlendOp', 'BlendOpt', 'CACHE_BYPASS', - 'CACHE_FLUSH', 'CACHE_FLUSH_AND_INV_EVENT', - 'CACHE_FLUSH_AND_INV_TS_EVENT', 'CACHE_FLUSH_TS', 'CACHE_LRU_RD', - 'CACHE_LRU_WR', 'CACHE_NOA', 'CACHE_NOA_WR', 'CACHE_STREAM', - 'CACHE_STREAM_RD', 'CBMode', 'CBPerfClearFilterSel', - 'CBPerfOpFilterSel', 'CBPerfSel', 'CB_B_DATA_ONTO_ALPHA_PORT', - 'CB_B_DATA_ONTO_CB_B_PORT', 'CB_B_DATA_ONTO_CR_R_PORT', - 'CB_B_DATA_ONTO_Y_G_PORT', 'CB_DCC_DECOMPRESS', 'CB_DISABLE', - 'CB_ELIMINATE_FAST_CLEAR', 'CB_NORMAL', - 'CB_PERF_CLEAR_FILTER_SEL_CLEAR', - 'CB_PERF_CLEAR_FILTER_SEL_NONCLEAR', - 'CB_PERF_OP_FILTER_SEL_DECOMPRESS', - 'CB_PERF_OP_FILTER_SEL_ELIMINATE_FAST_CLEAR', - 'CB_PERF_OP_FILTER_SEL_FMASK_DECOMPRESS', - 'CB_PERF_OP_FILTER_SEL_NEEDS_DESTINATION', - 'CB_PERF_OP_FILTER_SEL_RESOLVE', - 'CB_PERF_OP_FILTER_SEL_WRITE_ONLY', - 'CB_PERF_SEL_BACKEND_CACHE_CTL_CLOCK_EN', - 'CB_PERF_SEL_BACKEND_EVICT_PIPE_CLOCK_EN', - 'CB_PERF_SEL_BACKEND_FRAGOP_CLOCK_EN', - 'CB_PERF_SEL_BACKEND_READ_CLOCK_EN', - 'CB_PERF_SEL_BACKEND_SRC_FIFO_CLOCK_EN', - 'CB_PERF_SEL_BE_CS_FILLRATE_1X2', - 'CB_PERF_SEL_BE_CS_FILLRATE_2X1', - 'CB_PERF_SEL_BE_CS_FILLRATE_2X2', 'CB_PERF_SEL_BE_RDLATFIFO_FULL', - 'CB_PERF_SEL_BE_SRCFIFO_FULL', 'CB_PERF_SEL_BLEND_CLOCK_EN', - 'CB_PERF_SEL_BLEND_COLLISION_DUE_TO_CACHE_WRITE', - 'CB_PERF_SEL_BLEND_OPT_PIXELS_RESULT_EQ_DEST', - 'CB_PERF_SEL_BLEND_QUAD_BLENDING_COULD_HAVE_BEEN_BYPASSED', - 'CB_PERF_SEL_BLEND_QUAD_COULD_HAVE_BEEN_DISCARDED', - 'CB_PERF_SEL_BLEND_QUAD_DST_READ_COULD_HAVE_BEEN_OPTIMIZED', - 'CB_PERF_SEL_BLEND_RAW_HAZARD_STALL', - 'CB_PERF_SEL_BLEND_STALL_AT_OUTPUT', - 'CB_PERF_SEL_BLEND_STALL_ON_CACHE_ACCESS', 'CB_PERF_SEL_BUSY', - 'CB_PERF_SEL_CCC_COLOR_RESOURCE_PANIC', - 'CB_PERF_SEL_CCC_COLOR_RESOURCE_STALL', - 'CB_PERF_SEL_CCC_FMASK_RESOURCE_PANIC', - 'CB_PERF_SEL_CCC_FMASK_RESOURCE_STALL', - 'CB_PERF_SEL_CCC_FREE_WAYS_PANIC', - 'CB_PERF_SEL_CCC_FREE_WAYS_STALL', - 'CB_PERF_SEL_CCC_IN_EVICT_HAZARD_STALL', - 'CB_PERF_SEL_CCC_SKID_FIFO_FULL', - 'CB_PERF_SEL_CCC_SKID_FIFO_STALL', - 'CB_PERF_SEL_CC_BB_BLEND_PIXEL_VALIDB_READY', - 'CB_PERF_SEL_CC_BB_BLEND_PIXEL_VALIDB_READYB', - 'CB_PERF_SEL_CC_BB_BLEND_PIXEL_VALID_READY', - 'CB_PERF_SEL_CC_BB_BLEND_PIXEL_VALID_READYB', - 'CB_PERF_SEL_CC_CACHE_ACK_OUTPUT_STALL', - 'CB_PERF_SEL_CC_CACHE_DIRTY_QBLOCKS_FLUSHED', - 'CB_PERF_SEL_CC_CACHE_FLUSH', - 'CB_PERF_SEL_CC_CACHE_QBLOCKS_FLUSHED', - 'CB_PERF_SEL_CC_CACHE_READS_SAVED_DUE_TO_DCC', - 'CB_PERF_SEL_CC_CACHE_READ_OUTPUT_STALL', - 'CB_PERF_SEL_CC_CACHE_SECTORS_FLUSHED', - 'CB_PERF_SEL_CC_CACHE_SECTOR_HIT', - 'CB_PERF_SEL_CC_CACHE_SECTOR_MISS', 'CB_PERF_SEL_CC_CACHE_STALL', - 'CB_PERF_SEL_CC_CACHE_TAG_MISS', - 'CB_PERF_SEL_CC_CACHE_WA_TO_RMW_CONVERSION', - 'CB_PERF_SEL_CC_CACHE_WRITE_OUTPUT_STALL', - 'CB_PERF_SEL_CC_CRW_GLX_REQ_READ_REQUEST', - 'CB_PERF_SEL_CC_CRW_GLX_REQ_READ_REQUEST_IN_FLIGHT', - 'CB_PERF_SEL_CC_CRW_GLX_REQ_WRITE_REQUEST', - 'CB_PERF_SEL_CC_CRW_GLX_SRC_WRITE_CYCLES', - 'CB_PERF_SEL_CC_FDCC_COMPRESS_FRAG_TIDS_IN', - 'CB_PERF_SEL_CC_FDCC_DECOMPRESS_FRAG_TIDS_OUT', - 'CB_PERF_SEL_CC_QUADFRAG_VALIDB_READY', - 'CB_PERF_SEL_CC_QUADFRAG_VALIDB_READYB', - 'CB_PERF_SEL_CC_QUADFRAG_VALID_READY', - 'CB_PERF_SEL_CC_QUADFRAG_VALID_READYB', 'CB_PERF_SEL_CC_TAG_HIT', - 'CB_PERF_SEL_COLOR_STORE_CLOCK_EN', - 'CB_PERF_SEL_DB_CB_EXPORT_VALIDB_READY', - 'CB_PERF_SEL_DB_CB_EXPORT_VALIDB_READYB', - 'CB_PERF_SEL_DB_CB_EXPORT_VALID_READY', - 'CB_PERF_SEL_DB_CB_EXPORT_VALID_READYB', 'CB_PERF_SEL_DRAWN_BUSY', - 'CB_PERF_SEL_DRAWN_PIXEL', 'CB_PERF_SEL_DRAWN_QUAD', - 'CB_PERF_SEL_DRAWN_QUAD_FRAGMENT', 'CB_PERF_SEL_EVENT', - 'CB_PERF_SEL_EVENTS_CLK_EN', - 'CB_PERF_SEL_EVENT_BOTTOM_OF_PIPE_TS', - 'CB_PERF_SEL_EVENT_CACHE_FLUSH', - 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_EVENT', - 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_TS_EVENT', - 'CB_PERF_SEL_EVENT_CACHE_FLUSH_TS', - 'CB_PERF_SEL_EVENT_CONTEXT_DONE', - 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_DATA_TS', - 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_META', - 'CB_PERF_SEL_EXPORT_ADDED_1_FRAGMENT', - 'CB_PERF_SEL_EXPORT_ADDED_2_FRAGMENTS', - 'CB_PERF_SEL_EXPORT_ADDED_3_FRAGMENTS', - 'CB_PERF_SEL_EXPORT_ADDED_4_FRAGMENTS', - 'CB_PERF_SEL_EXPORT_ADDED_5_FRAGMENTS', - 'CB_PERF_SEL_EXPORT_ADDED_6_FRAGMENTS', - 'CB_PERF_SEL_EXPORT_ADDED_7_FRAGMENTS', - 'CB_PERF_SEL_EXPORT_BLEND_OPT_BLEND_BYPASS', - 'CB_PERF_SEL_EXPORT_BLEND_OPT_DISCARD_PIXELS', - 'CB_PERF_SEL_EXPORT_BLEND_OPT_DONT_READ_DST', - 'CB_PERF_SEL_EXPORT_HAS_1_FRAGMENT_AFTER_UPDATE', - 'CB_PERF_SEL_EXPORT_HAS_1_FRAGMENT_BEFORE_UPDATE', - 'CB_PERF_SEL_EXPORT_HAS_2_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_EXPORT_HAS_2_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_EXPORT_HAS_3_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_EXPORT_HAS_3_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_EXPORT_HAS_4_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_EXPORT_HAS_4_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_EXPORT_HAS_5_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_EXPORT_HAS_5_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_EXPORT_HAS_6_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_EXPORT_HAS_6_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_EXPORT_HAS_7_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_EXPORT_HAS_7_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_EXPORT_HAS_8_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_EXPORT_HAS_8_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_EXPORT_KILLED_BY_COLOR_INVALID', - 'CB_PERF_SEL_EXPORT_KILLED_BY_DISCARD_PIXEL', - 'CB_PERF_SEL_EXPORT_KILLED_BY_NULL_SAMPLE_MASK', - 'CB_PERF_SEL_EXPORT_KILLED_BY_NULL_TARGET_SHADER_MASK', - 'CB_PERF_SEL_EXPORT_READS_FRAGMENT_0', - 'CB_PERF_SEL_EXPORT_READS_FRAGMENT_1', - 'CB_PERF_SEL_EXPORT_READS_FRAGMENT_2', - 'CB_PERF_SEL_EXPORT_READS_FRAGMENT_3', - 'CB_PERF_SEL_EXPORT_READS_FRAGMENT_4', - 'CB_PERF_SEL_EXPORT_READS_FRAGMENT_5', - 'CB_PERF_SEL_EXPORT_READS_FRAGMENT_6', - 'CB_PERF_SEL_EXPORT_READS_FRAGMENT_7', - 'CB_PERF_SEL_EXPORT_REMOVED_1_FRAGMENT', - 'CB_PERF_SEL_EXPORT_REMOVED_2_FRAGMENTS', - 'CB_PERF_SEL_EXPORT_REMOVED_3_FRAGMENTS', - 'CB_PERF_SEL_EXPORT_REMOVED_4_FRAGMENTS', - 'CB_PERF_SEL_EXPORT_REMOVED_5_FRAGMENTS', - 'CB_PERF_SEL_EXPORT_REMOVED_6_FRAGMENTS', - 'CB_PERF_SEL_EXPORT_REMOVED_7_FRAGMENTS', - 'CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_0', - 'CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_1', - 'CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_2', - 'CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_3', - 'CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_4', - 'CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_5', - 'CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_6', - 'CB_PERF_SEL_EXPORT_WRITES_FRAGMENT_7', - 'CB_PERF_SEL_FORMAT_IS_16_16_FLOAT_8PIX', - 'CB_PERF_SEL_FORMAT_IS_16_16_SIGNED_8PIX', - 'CB_PERF_SEL_FORMAT_IS_16_16_UNSIGNED_8PIX', - 'CB_PERF_SEL_FORMAT_IS_32BPP_8PIX', - 'CB_PERF_SEL_FORMAT_IS_32_ABGR', 'CB_PERF_SEL_FORMAT_IS_32_AR', - 'CB_PERF_SEL_FORMAT_IS_32_GR', 'CB_PERF_SEL_FORMAT_IS_32_R', - 'CB_PERF_SEL_FORMAT_IS_FP16_ABGR', - 'CB_PERF_SEL_FORMAT_IS_SIGNED16_ABGR', - 'CB_PERF_SEL_FORMAT_IS_UNSIGNED16_ABGR', - 'CB_PERF_SEL_FRONTEND_ADDR_CLOCK_EN', - 'CB_PERF_SEL_FRONTEND_FDCC_CLOCK_EN', - 'CB_PERF_SEL_FRONTEND_INPUT_CLOCK_EN', - 'CB_PERF_SEL_FRONTEND_SAMPLE_MASK_TRACKER_CLOCK_EN', - 'CB_PERF_SEL_GRBM_CLOCK_EN', 'CB_PERF_SEL_MEMARB_CLOCK_EN', - 'CB_PERF_SEL_PERFMON_CLOCK_EN', - 'CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_BOTH', - 'CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_LEFT', - 'CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_RIGHT', - 'CB_PERF_SEL_RDLAT_FIFO_QUAD_RESIDENCY_STALL', - 'CB_PERF_SEL_STATIC_CLOCK_EN', 'CB_RESERVED', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_0', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_1', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_2', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_3', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_4', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_5', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_6', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_ALL', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_0', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_1', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_2', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_3', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_4', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_5', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_6', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_ALL', - 'CENTERS_ONLY', 'CENTROIDS_AND_CENTERS', 'CENTROIDS_ONLY', - 'CHA_PERF_SEL', 'CHA_PERF_SEL_ARB_REQUESTS', 'CHA_PERF_SEL_BUSY', - 'CHA_PERF_SEL_CYCLE', 'CHA_PERF_SEL_IO_32B_WDS_CHC0', - 'CHA_PERF_SEL_IO_32B_WDS_CHC1', 'CHA_PERF_SEL_IO_32B_WDS_CHC2', - 'CHA_PERF_SEL_IO_32B_WDS_CHC3', - 'CHA_PERF_SEL_IO_BURST_COUNT_CHC0', - 'CHA_PERF_SEL_IO_BURST_COUNT_CHC1', - 'CHA_PERF_SEL_IO_BURST_COUNT_CHC2', - 'CHA_PERF_SEL_IO_BURST_COUNT_CHC3', - 'CHA_PERF_SEL_MEM_32B_WDS_CHC0', 'CHA_PERF_SEL_MEM_32B_WDS_CHC1', - 'CHA_PERF_SEL_MEM_32B_WDS_CHC2', 'CHA_PERF_SEL_MEM_32B_WDS_CHC3', - 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC0', - 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC1', - 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC2', - 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC3', 'CHA_PERF_SEL_REQUEST_CHC0', - 'CHA_PERF_SEL_REQUEST_CHC1', 'CHA_PERF_SEL_REQUEST_CHC2', - 'CHA_PERF_SEL_REQUEST_CHC3', 'CHA_PERF_SEL_REQ_INFLIGHT_LEVEL', - 'CHA_PERF_SEL_STALL_CHC0', 'CHA_PERF_SEL_STALL_CHC1', - 'CHA_PERF_SEL_STALL_CHC2', 'CHA_PERF_SEL_STALL_CHC3', - 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC0', - 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC1', - 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC2', - 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC3', 'CHC_PERF_SEL', - 'CHC_PERF_SEL_ARB_RET_LEVEL', 'CHC_PERF_SEL_BUSY', - 'CHC_PERF_SEL_CYCLE', 'CHC_PERF_SEL_GL2_REQ_READ_LATENCY', - 'CHC_PERF_SEL_GL2_REQ_WRITE_LATENCY', 'CHC_PERF_SEL_REQ', - 'CHC_PERF_SEL_REQ_ATOMIC_WITHOUT_RET', - 'CHC_PERF_SEL_REQ_ATOMIC_WITH_RET', 'CHC_PERF_SEL_REQ_CLIENT0', - 'CHC_PERF_SEL_REQ_CLIENT1', 'CHC_PERF_SEL_REQ_CLIENT10', - 'CHC_PERF_SEL_REQ_CLIENT11', 'CHC_PERF_SEL_REQ_CLIENT12', - 'CHC_PERF_SEL_REQ_CLIENT13', 'CHC_PERF_SEL_REQ_CLIENT14', - 'CHC_PERF_SEL_REQ_CLIENT15', 'CHC_PERF_SEL_REQ_CLIENT16', - 'CHC_PERF_SEL_REQ_CLIENT17', 'CHC_PERF_SEL_REQ_CLIENT18', - 'CHC_PERF_SEL_REQ_CLIENT19', 'CHC_PERF_SEL_REQ_CLIENT2', - 'CHC_PERF_SEL_REQ_CLIENT20', 'CHC_PERF_SEL_REQ_CLIENT21', - 'CHC_PERF_SEL_REQ_CLIENT22', 'CHC_PERF_SEL_REQ_CLIENT23', - 'CHC_PERF_SEL_REQ_CLIENT3', 'CHC_PERF_SEL_REQ_CLIENT4', - 'CHC_PERF_SEL_REQ_CLIENT5', 'CHC_PERF_SEL_REQ_CLIENT6', - 'CHC_PERF_SEL_REQ_CLIENT7', 'CHC_PERF_SEL_REQ_CLIENT8', - 'CHC_PERF_SEL_REQ_CLIENT9', 'CHC_PERF_SEL_REQ_NOP_ACK', - 'CHC_PERF_SEL_REQ_NOP_RTN0', 'CHC_PERF_SEL_REQ_READ', - 'CHC_PERF_SEL_REQ_READ_128B', 'CHC_PERF_SEL_REQ_READ_32B', - 'CHC_PERF_SEL_REQ_READ_64B', 'CHC_PERF_SEL_REQ_WRITE', - 'CHC_PERF_SEL_REQ_WRITE_32B', 'CHC_PERF_SEL_REQ_WRITE_64B', - 'CHC_PERF_SEL_STALL_BUFFER_FULL', 'CHC_PERF_SEL_STALL_GL2_GL1', - 'CHC_PERF_SEL_STARVE', 'CHUNK_SIZE', 'CHUNK_SIZE_16KB', - 'CHUNK_SIZE_1KB', 'CHUNK_SIZE_2KB', 'CHUNK_SIZE_32KB', - 'CHUNK_SIZE_4KB', 'CHUNK_SIZE_64KB', 'CHUNK_SIZE_8KB', - 'CLEAR_SMU_INTR', 'CLKGATE_BASE_MODE', 'CLKGATE_SM_MODE', - 'CLOCK_BRANCH_SOFT_RESET', 'CLOCK_BRANCH_SOFT_RESET_FORCE', - 'CLOCK_BRANCH_SOFT_RESET_NOOP', 'CLOCK_GATING_DISABLE', - 'CLOCK_GATING_DISABLED', 'CLOCK_GATING_DISABLED_IN_DCO', - 'CLOCK_GATING_DISABLE_ENUM', 'CLOCK_GATING_DISABLE_ENUM_DISABLED', - 'CLOCK_GATING_DISABLE_ENUM_ENABLED', 'CLOCK_GATING_EN', - 'CLOCK_GATING_ENABLE', 'CLOCK_GATING_ENABLED', - 'CLOCK_GATING_ENABLED_IN_DCO', 'CMC_3DLUT_17CUBE', - 'CMC_3DLUT_30BIT', 'CMC_3DLUT_30BIT_ENUM', 'CMC_3DLUT_36BIT', - 'CMC_3DLUT_9CUBE', 'CMC_3DLUT_RAM_SEL', 'CMC_3DLUT_SIZE_ENUM', - 'CMC_LUT_2CFG_MEMORY_A', 'CMC_LUT_2CFG_MEMORY_B', - 'CMC_LUT_2CFG_NO_MEMORY', 'CMC_LUT_2_CONFIG_ENUM', - 'CMC_LUT_2_MODE_BYPASS', 'CMC_LUT_2_MODE_ENUM', - 'CMC_LUT_2_MODE_RAMA_LUT', 'CMC_LUT_2_MODE_RAMB_LUT', - 'CMC_LUT_NUM_SEG', 'CMC_LUT_RAM_SEL', 'CMC_RAM0_ACCESS', - 'CMC_RAM1_ACCESS', 'CMC_RAM2_ACCESS', 'CMC_RAM3_ACCESS', - 'CMC_RAMA_ACCESS', 'CMC_RAMB_ACCESS', 'CMC_SEGMENTS_1', - 'CMC_SEGMENTS_128', 'CMC_SEGMENTS_16', 'CMC_SEGMENTS_2', - 'CMC_SEGMENTS_32', 'CMC_SEGMENTS_4', 'CMC_SEGMENTS_64', - 'CMC_SEGMENTS_8', 'CMPTO', 'CM_BYPASS', 'CM_COEF_FORMAT_ENUM', - 'CM_DATA_SIGNED', 'CM_DISABLE', 'CM_EN', 'CM_ENABLE', - 'CM_GAMMA_LUT_MODE_ENUM', 'CM_GAMMA_LUT_PWL_DISABLE_ENUM', - 'CM_GAMMA_LUT_SEL_ENUM', 'CM_LUT_2_CONFIG_ENUM', - 'CM_LUT_2_MODE_ENUM', 'CM_LUT_4_CONFIG_ENUM', - 'CM_LUT_4_MODE_ENUM', 'CM_LUT_CONFIG_MODE', 'CM_LUT_NUM_SEG', - 'CM_LUT_RAM_SEL', 'CM_LUT_READ_COLOR_SEL', 'CM_LUT_READ_DBG', - 'CM_NOT_PENDING', 'CM_PENDING', 'CM_POST_CSC_MODE_ENUM', - 'CM_WRITE_BASE_ONLY', 'CM_YES_PENDING', 'CNVC_ROUND', - 'CNVC_TRUNCATE', 'COEF_POST_CSC', 'COEF_POST_CSC_B', - 'COEF_RAM_SELECT_BACK', 'COEF_RAM_SELECT_CURRENT', - 'COEF_RAM_SELECT_RD', 'COLOR_24BIT_1BIT_AND', - 'COLOR_24BIT_8BIT_ALPHA_PREMULT', - 'COLOR_24BIT_8BIT_ALPHA_UNPREMULT', 'COLOR_64BIT_FP_PREMULT', - 'COLOR_64BIT_FP_UNPREMULT', 'COLOR_KEYER_ENABLE', - 'COLOR_KEYER_MODE', 'COLOR_KEY_DIS', 'COLOR_KEY_EN', - 'COMB_DST_MINUS_SRC', 'COMB_DST_PLUS_SRC', 'COMB_MAX_DST_SRC', - 'COMB_MIN_DST_SRC', 'COMB_SRC_MINUS_DST', - 'COMPRESSION_MODE_BYPASS_COMPRESSION', - 'COMPRESSION_MODE_BYPASS_METADATA_CACHE', - 'COMPRESSION_MODE_COMPRESSION_ENABLED', - 'COMPRESSION_MODE_READ_DECOMPRESSED', - 'COMPRESSION_MODE_READ_RAW_COMPRESSED_DATA', - 'COMPRESSION_MODE_WRITE_COMPRESSION_DISABLED', - 'CONFIG_SPACE1_END', 'CONFIG_SPACE1_START', 'CONFIG_SPACE2_END', - 'CONFIG_SPACE2_START', 'CONFIG_SPACE_END', 'CONFIG_SPACE_START', - 'CONTEXT_DONE', 'CONTEXT_SPACE_END', 'CONTEXT_SPACE_START', - 'CONTEXT_SUSPEND', 'CONTROLLER_RESET_AZ_CONTROLLER_IN_RESET', - 'CONTROLLER_RESET_AZ_CONTROLLER_NOT_IN_RESET', - 'CORB_READ_POINTER_RESET', - 'CORB_READ_POINTER_RESET_CORB_DMA_IS_NOT_RESET', - 'CORB_READ_POINTER_RESET_CORB_DMA_IS_RESET', 'COUNTER_RING_0', - 'COUNTER_RING_1', 'COUNTER_RING_SPLIT', 'CPC_LATENCY_STATS_SEL', - 'CPC_LATENCY_STATS_SEL_INVAL_LAST', - 'CPC_LATENCY_STATS_SEL_INVAL_MAX', - 'CPC_LATENCY_STATS_SEL_INVAL_MIN', - 'CPC_LATENCY_STATS_SEL_XACK_LAST', - 'CPC_LATENCY_STATS_SEL_XACK_MAX', - 'CPC_LATENCY_STATS_SEL_XACK_MIN', - 'CPC_LATENCY_STATS_SEL_XNACK_LAST', - 'CPC_LATENCY_STATS_SEL_XNACK_MAX', - 'CPC_LATENCY_STATS_SEL_XNACK_MIN', 'CPC_PERFCOUNT_SEL', - 'CPC_PERF_SEL_ALWAYS_COUNT', 'CPC_PERF_SEL_CPC_GCRIU_BUSY', - 'CPC_PERF_SEL_CPC_GCRIU_IDLE', 'CPC_PERF_SEL_CPC_GCRIU_STALL', - 'CPC_PERF_SEL_CPC_STAT_BUSY', 'CPC_PERF_SEL_CPC_STAT_IDLE', - 'CPC_PERF_SEL_CPC_STAT_STALL', 'CPC_PERF_SEL_CPC_TCIU_BUSY', - 'CPC_PERF_SEL_CPC_TCIU_IDLE', 'CPC_PERF_SEL_CPC_UTCL2IU_BUSY', - 'CPC_PERF_SEL_CPC_UTCL2IU_IDLE', 'CPC_PERF_SEL_CPC_UTCL2IU_STALL', - 'CPC_PERF_SEL_CPC_UTCL2IU_XACK', 'CPC_PERF_SEL_CPC_UTCL2IU_XNACK', - 'CPC_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 'CPC_PERF_SEL_GUS_READ_REQUEST_SENT', - 'CPC_PERF_SEL_GUS_WRITE_REQUEST_SENT', - 'CPC_PERF_SEL_ME1_BUSY_FOR_PACKET_DECODE', - 'CPC_PERF_SEL_ME1_DC0_SPI_BUSY', - 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ', - 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ_PERF', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_MEM_READ', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_MEM_WRITE', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READ', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY_PERF', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_TCIU_READ', - 'CPC_PERF_SEL_ME2_BUSY_FOR_PACKET_DECODE', - 'CPC_PERF_SEL_ME2_DC1_SPI_BUSY', - 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ', - 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ_PERF', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_MEM_READ', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_MEM_WRITE', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READ', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY_PERF', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_TCIU_READ', - 'CPC_PERF_SEL_MEC_INSTR_CACHE_HIT', - 'CPC_PERF_SEL_MEC_INSTR_CACHE_MISS', 'CPC_PERF_SEL_MEC_THREAD0', - 'CPC_PERF_SEL_MEC_THREAD1', 'CPC_PERF_SEL_MEC_THREAD2', - 'CPC_PERF_SEL_MEC_THREAD3', 'CPC_PERF_SEL_MES_THREAD0', - 'CPC_PERF_SEL_MES_THREAD1', - 'CPC_PERF_SEL_RCIU_STALL_PRIV_VIOLATION', - 'CPC_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', - 'CPC_PERF_SEL_TCIU_READ_REQUEST_SENT', - 'CPC_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 'CPC_PERF_SEL_TCIU_STALL_WAIT_ON_TAGS', - 'CPC_PERF_SEL_TCIU_WRITE_REQUEST_SENT', - 'CPC_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', 'CPC_TAG_RAM', - 'CPF_LATENCY_STATS_SEL', 'CPF_LATENCY_STATS_SEL_INVAL_LAST', - 'CPF_LATENCY_STATS_SEL_INVAL_MAX', - 'CPF_LATENCY_STATS_SEL_INVAL_MIN', - 'CPF_LATENCY_STATS_SEL_READ_LAST', - 'CPF_LATENCY_STATS_SEL_READ_MAX', - 'CPF_LATENCY_STATS_SEL_READ_MIN', - 'CPF_LATENCY_STATS_SEL_XACK_LAST', - 'CPF_LATENCY_STATS_SEL_XACK_MAX', - 'CPF_LATENCY_STATS_SEL_XACK_MIN', - 'CPF_LATENCY_STATS_SEL_XNACK_LAST', - 'CPF_LATENCY_STATS_SEL_XNACK_MAX', - 'CPF_LATENCY_STATS_SEL_XNACK_MIN', 'CPF_PERFCOUNTWINDOW_SEL', - 'CPF_PERFCOUNT_SEL', 'CPF_PERFWINDOW_SEL_CSF', - 'CPF_PERFWINDOW_SEL_HQD1', 'CPF_PERFWINDOW_SEL_HQD2', - 'CPF_PERFWINDOW_SEL_RDMA', 'CPF_PERFWINDOW_SEL_RWPP', - 'CPF_PERF_SEL_ALWAYS_COUNT', - 'CPF_PERF_SEL_CMP_UTCL1_STALL_ON_TRANSLATION', - 'CPF_PERF_SEL_CPF_GCRIU_BUSY', 'CPF_PERF_SEL_CPF_GCRIU_IDLE', - 'CPF_PERF_SEL_CPF_GCRIU_STALL', 'CPF_PERF_SEL_CPF_STAT_BUSY', - 'CPF_PERF_SEL_CPF_STAT_IDLE', 'CPF_PERF_SEL_CPF_STAT_STALL', - 'CPF_PERF_SEL_CPF_TCIU_BUSY', 'CPF_PERF_SEL_CPF_TCIU_IDLE', - 'CPF_PERF_SEL_CPF_TCIU_STALL', 'CPF_PERF_SEL_CPF_UTCL2IU_BUSY', - 'CPF_PERF_SEL_CPF_UTCL2IU_IDLE', 'CPF_PERF_SEL_CPF_UTCL2IU_STALL', - 'CPF_PERF_SEL_CPF_UTCL2IU_XACK', 'CPF_PERF_SEL_CPF_UTCL2IU_XNACK', - 'CPF_PERF_SEL_CP_SDMA_MNGR_DMA_DONE', - 'CPF_PERF_SEL_CP_SDMA_MNGR_DMA_REQ', - 'CPF_PERF_SEL_CP_SDMA_MNGR_LATENCY', - 'CPF_PERF_SEL_CP_SDMA_MNGR_SDMABUSY', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_DB', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB1', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB2', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_RING', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_STATE', - 'CPF_PERF_SEL_CSF_FETCHING_CMD_BUFFERS', - 'CPF_PERF_SEL_CSF_STATE_FIFO_NOT_RTR', - 'CPF_PERF_SEL_DYNAMIC_CLOCK_VALID', - 'CPF_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 'CPF_PERF_SEL_GFX_UTCL1_STALL_ON_TRANSLATION', - 'CPF_PERF_SEL_GRBM_DWORDS_SENT', - 'CPF_PERF_SEL_GUS_READ_REQUEST_SENT', - 'CPF_PERF_SEL_GUS_WRITE_REQUEST_SENT', - 'CPF_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', - 'CPF_PERF_SEL_REGISTER_CLOCK_VALID', - 'CPF_PERF_SEL_TCIU_READ_REQUEST_SENT', - 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_FREE', - 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_TAGS', - 'CPF_PERF_SEL_TCIU_WRITE_REQUEST_SENT', - 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', - 'CPF_SCRATCH_REG_ATOMIC_ADD', 'CPF_SCRATCH_REG_ATOMIC_AND', - 'CPF_SCRATCH_REG_ATOMIC_CMPSWAP', 'CPF_SCRATCH_REG_ATOMIC_MAX', - 'CPF_SCRATCH_REG_ATOMIC_MIN', 'CPF_SCRATCH_REG_ATOMIC_NOT', - 'CPF_SCRATCH_REG_ATOMIC_OP', 'CPF_SCRATCH_REG_ATOMIC_OR', - 'CPF_SCRATCH_REG_ATOMIC_SUB', 'CPF_TAG_RAM', - 'CPG_LATENCY_STATS_SEL', 'CPG_LATENCY_STATS_SEL_ATOMIC_LAST', - 'CPG_LATENCY_STATS_SEL_ATOMIC_MAX', - 'CPG_LATENCY_STATS_SEL_ATOMIC_MIN', - 'CPG_LATENCY_STATS_SEL_INVAL_LAST', - 'CPG_LATENCY_STATS_SEL_INVAL_MAX', - 'CPG_LATENCY_STATS_SEL_INVAL_MIN', - 'CPG_LATENCY_STATS_SEL_READ_LAST', - 'CPG_LATENCY_STATS_SEL_READ_MAX', - 'CPG_LATENCY_STATS_SEL_READ_MIN', - 'CPG_LATENCY_STATS_SEL_WRITE_LAST', - 'CPG_LATENCY_STATS_SEL_WRITE_MAX', - 'CPG_LATENCY_STATS_SEL_WRITE_MIN', - 'CPG_LATENCY_STATS_SEL_XACK_LAST', - 'CPG_LATENCY_STATS_SEL_XACK_MAX', - 'CPG_LATENCY_STATS_SEL_XACK_MIN', - 'CPG_LATENCY_STATS_SEL_XNACK_LAST', - 'CPG_LATENCY_STATS_SEL_XNACK_MAX', - 'CPG_LATENCY_STATS_SEL_XNACK_MIN', 'CPG_PERFCOUNTWINDOW_SEL', - 'CPG_PERFCOUNT_SEL', 'CPG_PERFWINDOW_SEL_APPEND', - 'CPG_PERFWINDOW_SEL_CE', 'CPG_PERFWINDOW_SEL_CEDMA', - 'CPG_PERFWINDOW_SEL_CPC_IC', 'CPG_PERFWINDOW_SEL_CPG_IC', - 'CPG_PERFWINDOW_SEL_DDID', 'CPG_PERFWINDOW_SEL_DFY', - 'CPG_PERFWINDOW_SEL_DMA', 'CPG_PERFWINDOW_SEL_ME', - 'CPG_PERFWINDOW_SEL_MEC1', 'CPG_PERFWINDOW_SEL_MEC2', - 'CPG_PERFWINDOW_SEL_MEMRD', 'CPG_PERFWINDOW_SEL_MEMWR', - 'CPG_PERFWINDOW_SEL_MES', 'CPG_PERFWINDOW_SEL_PFP', - 'CPG_PERFWINDOW_SEL_PQ1', 'CPG_PERFWINDOW_SEL_PQ2', - 'CPG_PERFWINDOW_SEL_PQ3', 'CPG_PERFWINDOW_SEL_PRT_HDR_RPTR', - 'CPG_PERFWINDOW_SEL_PRT_SMP_RPTR', 'CPG_PERFWINDOW_SEL_QURD', - 'CPG_PERFWINDOW_SEL_QU_EOP', 'CPG_PERFWINDOW_SEL_QU_PIPE', - 'CPG_PERFWINDOW_SEL_QU_STRM', 'CPG_PERFWINDOW_SEL_RB', - 'CPG_PERFWINDOW_SEL_RESERVED1', 'CPG_PERFWINDOW_SEL_RESERVED2', - 'CPG_PERFWINDOW_SEL_SHADOW', 'CPG_PERFWINDOW_SEL_SR', - 'CPG_PERFWINDOW_SEL_VGT0', 'CPG_PERFWINDOW_SEL_VGT1', - 'CPG_PERF_SEL_ALL_GFX_PIPES_BUSY', 'CPG_PERF_SEL_ALWAYS_COUNT', - 'CPG_PERF_SEL_CE_INSTR_CACHE_HIT', - 'CPG_PERF_SEL_CE_INSTR_CACHE_MISS', - 'CPG_PERF_SEL_CE_STALL_ON_CE_BUFFER_FLAG', - 'CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_ROQ', - 'CPG_PERF_SEL_CE_STALL_ON_DE_COUNTER', - 'CPG_PERF_SEL_CE_STALL_ON_INC_FIFO', - 'CPG_PERF_SEL_CE_STALL_ON_WR_RAM_FIFO', - 'CPG_PERF_SEL_CE_STALL_RAM_DUMP', - 'CPG_PERF_SEL_CE_STALL_RAM_WRITE', - 'CPG_PERF_SEL_COUNT_TYPE0_PACKETS', - 'CPG_PERF_SEL_COUNT_TYPE3_PACKETS', 'CPG_PERF_SEL_CPG_GCRIU_BUSY', - 'CPG_PERF_SEL_CPG_GCRIU_IDLE', 'CPG_PERF_SEL_CPG_GCRIU_STALL', - 'CPG_PERF_SEL_CPG_STAT_BUSY', 'CPG_PERF_SEL_CPG_STAT_IDLE', - 'CPG_PERF_SEL_CPG_STAT_STALL', 'CPG_PERF_SEL_CPG_TCIU_BUSY', - 'CPG_PERF_SEL_CPG_TCIU_IDLE', 'CPG_PERF_SEL_CPG_TCIU_STALL', - 'CPG_PERF_SEL_CPG_UTCL2IU_BUSY', 'CPG_PERF_SEL_CPG_UTCL2IU_IDLE', - 'CPG_PERF_SEL_CPG_UTCL2IU_STALL', 'CPG_PERF_SEL_CPG_UTCL2IU_XACK', - 'CPG_PERF_SEL_CPG_UTCL2IU_XNACK', - 'CPG_PERF_SEL_CP_GDS_GRBM_OUT_OF_CREDITS', - 'CPG_PERF_SEL_CP_GRBM_DWORDS_SENT', - 'CPG_PERF_SEL_CP_GRBM_OUT_OF_CREDITS', - 'CPG_PERF_SEL_CP_PFP_GRBM_OUT_OF_CREDITS', - 'CPG_PERF_SEL_DMA_BUSY', - 'CPG_PERF_SEL_DMA_FETCHER_STALLED_ON_ROQ_FULL', - 'CPG_PERF_SEL_DMA_STALLED', 'CPG_PERF_SEL_DMA_STARVED', - 'CPG_PERF_SEL_DYNAMIC_CLK_VALID', - 'CPG_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 'CPG_PERF_SEL_GUS_READ_REQUEST_SENT', - 'CPG_PERF_SEL_GUS_WRITE_REQUEST_SENT', - 'CPG_PERF_SEL_LOAD_STALLED_ON_SET_COHERENCY', - 'CPG_PERF_SEL_ME_INSTR_CACHE_HIT', - 'CPG_PERF_SEL_ME_INSTR_CACHE_MISS', 'CPG_PERF_SEL_ME_PARSER_BUSY', - 'CPG_PERF_SEL_ME_PWS_STALLED0', 'CPG_PERF_SEL_ME_PWS_STALLED1', - 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_PFP', - 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_STQ', - 'CPG_PERF_SEL_ME_STALLED_ON_NO_AVAIL_GFX_CNTX', - 'CPG_PERF_SEL_ME_STALLED_ON_PARTIAL_FLUSH', - 'CPG_PERF_SEL_ME_STALLED_WRITING_CONSTANTS', - 'CPG_PERF_SEL_ME_STALLED_WRITING_TO_RCIU', - 'CPG_PERF_SEL_ME_WAIT_ON_AVAIL_BUFFER', - 'CPG_PERF_SEL_ME_WAIT_ON_CE_COUNTER', - 'CPG_PERF_SEL_PFP_INSTR_CACHE_HIT', - 'CPG_PERF_SEL_PFP_INSTR_CACHE_MISS', - 'CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB1', - 'CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB2', - 'CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB1', - 'CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB2', - 'CPG_PERF_SEL_PFP_PWS_STALLED0', 'CPG_PERF_SEL_PFP_PWS_STALLED1', - 'CPG_PERF_SEL_PFP_STALLED_FOR_DATA_FROM_ROQ', - 'CPG_PERF_SEL_PFP_STALLED_ON_CSF_READY', - 'CPG_PERF_SEL_PFP_STALLED_ON_MEQ_DDID_READY', - 'CPG_PERF_SEL_PFP_STALLED_ON_MEQ_READY', - 'CPG_PERF_SEL_PFP_STALLED_ON_RCIU_READY', - 'CPG_PERF_SEL_PFP_VGTDMA_DB_ROQ_DATA_STALL0', - 'CPG_PERF_SEL_PFP_VGTDMA_DB_ROQ_DATA_STALL1', - 'CPG_PERF_SEL_PFP_VGTDMA_INDR_STRUCT_BYPASS0', - 'CPG_PERF_SEL_PFP_VGTDMA_INDR_STRUCT_BYPASS1', - 'CPG_PERF_SEL_PFP_VGTDMA_INDR_STRUCT_NOT_BYPASS0', - 'CPG_PERF_SEL_PFP_VGTDMA_INDR_STRUCT_NOT_BYPASS1', - 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_PULSE', - 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_WR_CONFIRM', - 'CPG_PERF_SEL_RBIU_FIFO_FULL', - 'CPG_PERF_SEL_RCIU_STALLED_ON_DMA_READ', - 'CPG_PERF_SEL_RCIU_STALLED_ON_ME_READ', - 'CPG_PERF_SEL_REGISTER_CLK_VALID', - 'CPG_PERF_SEL_SSU_STALLED_ON_ACTIVE_CNTX', - 'CPG_PERF_SEL_SSU_STALLED_ON_CLEAN_SIGNALS', - 'CPG_PERF_SEL_TCIU_READ_REQUEST_SENT', - 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_TAGS', - 'CPG_PERF_SEL_TCIU_WRITE_REQUEST_SENT', - 'CPG_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', 'CPG_TAG_RAM', - 'CP_ALPHA_TAG_RAM_SEL', 'CP_DDID_CNTL_MODE', 'CP_DDID_CNTL_SIZE', - 'CP_DDID_CNTL_VMID_SEL', 'CP_ME_ID', 'CP_PERFMON_ENABLE_MODE', - 'CP_PERFMON_ENABLE_MODE_ALWAYS_COUNT', - 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_FALSE', - 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_TRUE', - 'CP_PERFMON_ENABLE_MODE_RESERVED_1', 'CP_PERFMON_STATE', - 'CP_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', - 'CP_PERFMON_STATE_DISABLE_AND_RESET', - 'CP_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 'CP_PERFMON_STATE_RESERVED_3', 'CP_PERFMON_STATE_START_COUNTING', - 'CP_PERFMON_STATE_STOP_COUNTING', 'CP_PIPE_ID', 'CP_RING_ID', - 'CRC_CUR_0', 'CRC_CUR_1', 'CRC_CUR_SEL', 'CRC_INTERLACE_0', - 'CRC_INTERLACE_1', 'CRC_INTERLACE_2', 'CRC_INTERLACE_3', - 'CRC_INTERLACE_SEL', 'CRC_IN_PIX_0', 'CRC_IN_PIX_1', - 'CRC_IN_PIX_2', 'CRC_IN_PIX_3', 'CRC_IN_PIX_4', 'CRC_IN_PIX_5', - 'CRC_IN_PIX_6', 'CRC_IN_PIX_7', 'CRC_IN_PIX_SEL', 'CRC_SRC_0', - 'CRC_SRC_1', 'CRC_SRC_2', 'CRC_SRC_3', 'CRC_SRC_SEL', - 'CRC_STEREO_0', 'CRC_STEREO_1', 'CRC_STEREO_2', 'CRC_STEREO_3', - 'CRC_STEREO_SEL', 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_1', - 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_2', - 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 'CROB_MEM_PWR_LIGHT_SLEEP_MODE', 'CROSSBAR_FOR_ALPHA', - 'CROSSBAR_FOR_CB_B', 'CROSSBAR_FOR_CR_R', 'CROSSBAR_FOR_Y_G', - 'CRS', 'CR_R_DATA_ONTO_ALPHA_PORT', 'CR_R_DATA_ONTO_CB_B_PORT', - 'CR_R_DATA_ONTO_CR_R_PORT', 'CR_R_DATA_ONTO_Y_G_PORT', - 'CSCNTL_ADDR_WIDTH', 'CSCNTL_DATA_WIDTH', 'CSCNTL_TYPE', - 'CSCNTL_TYPE_EVENT', 'CSCNTL_TYPE_PRIVATE', 'CSCNTL_TYPE_STATE', - 'CSCNTL_TYPE_TG', 'CSCNTL_TYPE_WIDTH', 'CSDATA_ADDR_WIDTH', - 'CSDATA_DATA_WIDTH', 'CSDATA_TYPE', 'CSDATA_TYPE_EVENT', - 'CSDATA_TYPE_PRIVATE', 'CSDATA_TYPE_STATE', 'CSDATA_TYPE_TG', - 'CSDATA_TYPE_WIDTH', 'CS_CONTEXT_DONE', 'CS_DONE', 'CS_NA', - 'CS_PARTIAL_FLUSH', 'CURSOR_2X_MAGNIFY', - 'CURSOR_2X_MAGNIFY_IS_DISABLE', 'CURSOR_2X_MAGNIFY_IS_ENABLE', - 'CURSOR_COLOR_24BIT_1BIT_AND', - 'CURSOR_COLOR_24BIT_8BIT_ALPHA_PREMULT', - 'CURSOR_COLOR_24BIT_8BIT_ALPHA_UNPREMULT', - 'CURSOR_COLOR_64BIT_FP_PREMULT', - 'CURSOR_COLOR_64BIT_FP_UNPREMULT', 'CURSOR_ENABLE', - 'CURSOR_IN_GUEST_PHYSICAL_ADDRESS', - 'CURSOR_IN_SYSTEM_PHYSICAL_ADDRESS', 'CURSOR_IS_DISABLE', - 'CURSOR_IS_ENABLE', 'CURSOR_IS_NOT_SNOOP', 'CURSOR_IS_SNOOP', - 'CURSOR_LINES_PER_CHUNK', 'CURSOR_LINE_PER_CHUNK_1', - 'CURSOR_LINE_PER_CHUNK_16', 'CURSOR_LINE_PER_CHUNK_2', - 'CURSOR_LINE_PER_CHUNK_4', 'CURSOR_LINE_PER_CHUNK_8', - 'CURSOR_MODE', 'CURSOR_MONO_2BIT', - 'CURSOR_PERFMON_LATENCY_MEASURE_CROB_LATENCY', - 'CURSOR_PERFMON_LATENCY_MEASURE_EN', - 'CURSOR_PERFMON_LATENCY_MEASURE_IS_DISABLED', - 'CURSOR_PERFMON_LATENCY_MEASURE_IS_ENABLED', - 'CURSOR_PERFMON_LATENCY_MEASURE_MC_LATENCY', - 'CURSOR_PERFMON_LATENCY_MEASURE_SEL', 'CURSOR_PITCH', - 'CURSOR_PITCH_128_PIXELS', 'CURSOR_PITCH_256_PIXELS', - 'CURSOR_PITCH_64_PIXELS', 'CURSOR_REQUEST_EARLY', - 'CURSOR_REQUEST_NORMALLY', 'CURSOR_REQ_MODE', 'CURSOR_SNOOP', - 'CURSOR_STEREO_EN', 'CURSOR_STEREO_IS_DISABLED', - 'CURSOR_STEREO_IS_ENABLED', 'CURSOR_SURFACE_IS_NOT_TMZ', - 'CURSOR_SURFACE_IS_TMZ', 'CURSOR_SURFACE_TMZ', 'CURSOR_SYSTEM', - 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS', - 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_0', - 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_1', - 'CUR_CLAMP_DIS', 'CUR_CLAMP_EN', 'CUR_DIS', - 'CUR_DYNAMIC_EXPANSION', 'CUR_EN', 'CUR_ENABLE', - 'CUR_EXPAND_MODE', 'CUR_FP_NO_ROM', 'CUR_FP_USE_ROM', - 'CUR_INV_CLAMP', 'CUR_MATRIX_COEF_FORMAT_ENUM', - 'CUR_MATRIX_FIX_S2_13', 'CUR_MATRIX_FIX_S3_12', 'CUR_MODE', - 'CUR_NOT_PENDING', 'CUR_PENDING', 'CUR_ROM_EN', 'CUR_YES_PENDING', - 'CUR_ZERO_EXPANSION', 'CbYCrY10101010_422_PACKED', - 'CbYCrY12121212_422_PACKED', 'CbYCrY8888_422_PACKED', 'CombFunc', - 'CompareFrag', 'ConservativeZExport', 'CovToShaderSel', - 'CrYCbA1010102', 'CrYCbA16161616_10LSB', 'CrYCbA16161616_10MSB', - 'CrYCbA16161616_12LSB', 'CrYCbA16161616_12MSB', 'CrYCbA8888', - 'CrYCbY10101010_422_PACKED', 'CrYCbY12121212_422_PACKED', - 'CrYCbY8888_422_PACKED', 'DAC_MUX_SELECT', 'DAC_MUX_SELECT_DACA', - 'DAC_MUX_SELECT_DACB', 'DB_BYPASS', 'DB_BYPASS_WR_DISABLE', - 'DB_CACHE_FLUSH_AND_INV', 'DB_COMP_WR_DISABLE', 'DB_DEFAULT', - 'DB_PERF_SEL_CB_DB_rdreq_prt_sends', - 'DB_PERF_SEL_CB_DB_rdreq_sends', - 'DB_PERF_SEL_CB_DB_wrreq_prt_sends', - 'DB_PERF_SEL_CB_DB_wrreq_sends', - 'DB_PERF_SEL_DB_CB_context_dones', 'DB_PERF_SEL_DB_CB_eop_dones', - 'DB_PERF_SEL_DB_CB_export_busy', - 'DB_PERF_SEL_DB_CB_export_double_format', - 'DB_PERF_SEL_DB_CB_export_events', - 'DB_PERF_SEL_DB_CB_export_export_quads', - 'DB_PERF_SEL_DB_CB_export_fast_format', - 'DB_PERF_SEL_DB_CB_export_fmt_16_16_float_8pix', - 'DB_PERF_SEL_DB_CB_export_fmt_16_16_signed_8pix', - 'DB_PERF_SEL_DB_CB_export_fmt_16_16_unsigned_8pix', - 'DB_PERF_SEL_DB_CB_export_fmt_32bpp_8pix', - 'DB_PERF_SEL_DB_CB_export_is_event_BOTTOM_OF_PIPE_TS', - 'DB_PERF_SEL_DB_CB_export_is_event_FLUSH_AND_INV_CB_PIXEL_DATA', - 'DB_PERF_SEL_DB_CB_export_is_event_FLUSH_AND_INV_DB_DATA_TS', - 'DB_PERF_SEL_DB_CB_export_num_pixels_need_blending', - 'DB_PERF_SEL_DB_CB_export_quads', - 'DB_PERF_SEL_DB_CB_export_quads_vrs_rate_1x1', - 'DB_PERF_SEL_DB_CB_export_quads_vrs_rate_1x2', - 'DB_PERF_SEL_DB_CB_export_quads_vrs_rate_2x1', - 'DB_PERF_SEL_DB_CB_export_quads_vrs_rate_2x2', - 'DB_PERF_SEL_DB_CB_export_sends', - 'DB_PERF_SEL_DB_CB_export_slow_format', - 'DB_PERF_SEL_DB_CB_export_stalls', - 'DB_PERF_SEL_DB_CB_export_waiting_for_perfcounter_stop_event', - 'DB_PERF_SEL_DB_CB_rdret_ack', 'DB_PERF_SEL_DB_CB_rdret_nack', - 'DB_PERF_SEL_DB_CB_wrret_ack', 'DB_PERF_SEL_DB_CB_wrret_nack', - 'DB_PERF_SEL_DB_SC_c_tile_rate', 'DB_PERF_SEL_DB_SC_quad_busy', - 'DB_PERF_SEL_DB_SC_quad_conflicts', - 'DB_PERF_SEL_DB_SC_quad_double_quad', - 'DB_PERF_SEL_DB_SC_quad_lit_noz_quad', - 'DB_PERF_SEL_DB_SC_quad_lit_quad', - 'DB_PERF_SEL_DB_SC_quad_noz_tiles', - 'DB_PERF_SEL_DB_SC_quad_num_null_1x2_coarse_pixels', - 'DB_PERF_SEL_DB_SC_quad_num_null_2x1_coarse_pixels', - 'DB_PERF_SEL_DB_SC_quad_num_null_2x2_coarse_pixels', - 'DB_PERF_SEL_DB_SC_quad_quads_with_1_pixel', - 'DB_PERF_SEL_DB_SC_quad_quads_with_2_pixels', - 'DB_PERF_SEL_DB_SC_quad_quads_with_3_pixels', - 'DB_PERF_SEL_DB_SC_quad_quads_with_4_pixels', - 'DB_PERF_SEL_DB_SC_quad_sends', 'DB_PERF_SEL_DB_SC_quad_stalls', - 'DB_PERF_SEL_DB_SC_quad_tiles', 'DB_PERF_SEL_DB_SC_s_tile_rate', - 'DB_PERF_SEL_DB_SC_tile_busy', 'DB_PERF_SEL_DB_SC_tile_culled', - 'DB_PERF_SEL_DB_SC_tile_df_stalls', - 'DB_PERF_SEL_DB_SC_tile_fast_ops', - 'DB_PERF_SEL_DB_SC_tile_fast_stencil_ops', - 'DB_PERF_SEL_DB_SC_tile_fast_z_ops', - 'DB_PERF_SEL_DB_SC_tile_hier_kill', - 'DB_PERF_SEL_DB_SC_tile_no_ops', 'DB_PERF_SEL_DB_SC_tile_sends', - 'DB_PERF_SEL_DB_SC_tile_ssaa_kill', - 'DB_PERF_SEL_DB_SC_tile_stalls', - 'DB_PERF_SEL_DB_SC_tile_tile_rate', - 'DB_PERF_SEL_DB_SC_tile_tiles', 'DB_PERF_SEL_DB_SC_wave_busy', - 'DB_PERF_SEL_DB_SC_wave_conflict', - 'DB_PERF_SEL_DB_SC_wave_hard_conflict', - 'DB_PERF_SEL_DB_SC_wave_id_wrapped', - 'DB_PERF_SEL_DB_SC_wave_sends', 'DB_PERF_SEL_DB_SC_wave_stalls', - 'DB_PERF_SEL_DB_SC_z_tile_rate', - 'DB_PERF_SEL_Depth_Tile_Cache_alloc_stall', - 'DB_PERF_SEL_Depth_Tile_Cache_busy', - 'DB_PERF_SEL_Depth_Tile_Cache_data_frees', - 'DB_PERF_SEL_Depth_Tile_Cache_detailed_noop', - 'DB_PERF_SEL_Depth_Tile_Cache_dtile_locked', - 'DB_PERF_SEL_Depth_Tile_Cache_event', - 'DB_PERF_SEL_Depth_Tile_Cache_flushes', - 'DB_PERF_SEL_Depth_Tile_Cache_hits', - 'DB_PERF_SEL_Depth_Tile_Cache_mem_return_starve', - 'DB_PERF_SEL_Depth_Tile_Cache_misses', - 'DB_PERF_SEL_Depth_Tile_Cache_noop_tile', - 'DB_PERF_SEL_Depth_Tile_Cache_sends', - 'DB_PERF_SEL_Depth_Tile_Cache_starves', - 'DB_PERF_SEL_Depth_Tile_Cache_tile_frees', - 'DB_PERF_SEL_MI_psd_req_wrack_counter_stall', - 'DB_PERF_SEL_MI_quad_req_wrack_counter_stall', - 'DB_PERF_SEL_MI_tile_req_wrack_counter_stall', - 'DB_PERF_SEL_MI_zpc_req_wrack_counter_stall', - 'DB_PERF_SEL_OREO_Events_delayed', 'DB_PERF_SEL_OREO_Events_load', - 'DB_PERF_SEL_OREO_Events_non_transition', - 'DB_PERF_SEL_OREO_Events_stalls', - 'DB_PERF_SEL_OREO_Events_transition', - 'DB_PERF_SEL_OREO_SB_evicts', 'DB_PERF_SEL_OREO_SB_hits', - 'DB_PERF_SEL_OREO_SB_misses', 'DB_PERF_SEL_OREO_SB_stalls', - 'DB_PERF_SEL_OREO_ST_load', 'DB_PERF_SEL_OREO_ST_read', - 'DB_PERF_SEL_OREO_ST_stalls', 'DB_PERF_SEL_OREO_TT_load', - 'DB_PERF_SEL_OREO_TT_read', 'DB_PERF_SEL_OREO_TT_stalls', - 'DB_PERF_SEL_OREO_WT_load', 'DB_PERF_SEL_OREO_WT_read', - 'DB_PERF_SEL_Op_Pipe_Busy', 'DB_PERF_SEL_Op_Pipe_MC_Read_stall', - 'DB_PERF_SEL_Op_Pipe_Postz_Busy', 'DB_PERF_SEL_Op_Pipe_Prez_Busy', - 'DB_PERF_SEL_PERF_fg_lob_fwdr_timeout_hits', - 'DB_PERF_SEL_Plane_Cache_flushes', - 'DB_PERF_SEL_Plane_Cache_frees', 'DB_PERF_SEL_Plane_Cache_hits', - 'DB_PERF_SEL_Plane_Cache_misses', - 'DB_PERF_SEL_Plane_Cache_starves', - 'DB_PERF_SEL_PostZ_Samples_failing_DB', - 'DB_PERF_SEL_PostZ_Samples_failing_S', - 'DB_PERF_SEL_PostZ_Samples_failing_Z', - 'DB_PERF_SEL_PostZ_Samples_passing_Z', - 'DB_PERF_SEL_PreZ_Samples_failing_DB', - 'DB_PERF_SEL_PreZ_Samples_failing_S', - 'DB_PERF_SEL_PreZ_Samples_failing_Z', - 'DB_PERF_SEL_PreZ_Samples_passing_Z', - 'DB_PERF_SEL_RMI_rd_s_32byte_req', - 'DB_PERF_SEL_RMI_rd_s_32byte_ret', - 'DB_PERF_SEL_RMI_rd_tile_32byte_req', - 'DB_PERF_SEL_RMI_rd_tile_32byte_ret', - 'DB_PERF_SEL_RMI_rd_z_32byte_req', - 'DB_PERF_SEL_RMI_rd_z_32byte_ret', - 'DB_PERF_SEL_RMI_wr_psdzpc_32byte_ack', - 'DB_PERF_SEL_RMI_wr_psdzpc_32byte_req', - 'DB_PERF_SEL_RMI_wr_s_32byte_ack', - 'DB_PERF_SEL_RMI_wr_s_32byte_req', - 'DB_PERF_SEL_RMI_wr_tile_32byte_ack', - 'DB_PERF_SEL_RMI_wr_tile_32byte_req', - 'DB_PERF_SEL_RMI_wr_z_32byte_ack', - 'DB_PERF_SEL_RMI_wr_z_32byte_req', 'DB_PERF_SEL_SC_DB_quad_busy', - 'DB_PERF_SEL_SC_DB_quad_killed_tiles', - 'DB_PERF_SEL_SC_DB_quad_pixels', 'DB_PERF_SEL_SC_DB_quad_quads', - 'DB_PERF_SEL_SC_DB_quad_quads_pipe0', - 'DB_PERF_SEL_SC_DB_quad_quads_pipe1', - 'DB_PERF_SEL_SC_DB_quad_sends', 'DB_PERF_SEL_SC_DB_quad_squads', - 'DB_PERF_SEL_SC_DB_quad_tiles', 'DB_PERF_SEL_SC_DB_quad_vrs_1x1', - 'DB_PERF_SEL_SC_DB_quad_vrs_1x2', - 'DB_PERF_SEL_SC_DB_quad_vrs_2x1', - 'DB_PERF_SEL_SC_DB_quad_vrs_2x2', - 'DB_PERF_SEL_SC_DB_quad_vrs_2x_ssaa', - 'DB_PERF_SEL_SC_DB_quad_vrs_4x_ssaa', - 'DB_PERF_SEL_SC_DB_quad_vrs_8x_ssaa', - 'DB_PERF_SEL_SC_DB_tile_backface', 'DB_PERF_SEL_SC_DB_tile_busy', - 'DB_PERF_SEL_SC_DB_tile_covered', 'DB_PERF_SEL_SC_DB_tile_events', - 'DB_PERF_SEL_SC_DB_tile_sends', 'DB_PERF_SEL_SC_DB_tile_stalls', - 'DB_PERF_SEL_SC_DB_tile_tiles', - 'DB_PERF_SEL_SC_DB_tile_tiles_pipe0', - 'DB_PERF_SEL_SC_DB_tile_tiles_pipe1', - 'DB_PERF_SEL_SC_DB_wave_busy', - 'DB_PERF_SEL_SC_DB_wave_id_wrapped', - 'DB_PERF_SEL_SC_DB_wave_quads', 'DB_PERF_SEL_SC_DB_wave_sends', - 'DB_PERF_SEL_SH_quads_outstanding_sum', - 'DB_PERF_SEL_SX_DB_quad_all_pixels_enabled', - 'DB_PERF_SEL_SX_DB_quad_all_pixels_killed', - 'DB_PERF_SEL_SX_DB_quad_busy', - 'DB_PERF_SEL_SX_DB_quad_double_format', - 'DB_PERF_SEL_SX_DB_quad_export_quads', - 'DB_PERF_SEL_SX_DB_quad_exports', - 'DB_PERF_SEL_SX_DB_quad_fast_format', - 'DB_PERF_SEL_SX_DB_quad_need_blending_and_dst_read', - 'DB_PERF_SEL_SX_DB_quad_pixels', 'DB_PERF_SEL_SX_DB_quad_quads', - 'DB_PERF_SEL_SX_DB_quad_sends', - 'DB_PERF_SEL_SX_DB_quad_slow_format', - 'DB_PERF_SEL_SX_DB_quad_stalls', 'DB_PERF_SEL_SX_DB_quad_waves', - 'DB_PERF_SEL_Stencil_Cache_flushes', - 'DB_PERF_SEL_Stencil_Cache_frees', - 'DB_PERF_SEL_Stencil_Cache_hits', - 'DB_PERF_SEL_Stencil_Cache_misses', - 'DB_PERF_SEL_Stencil_Cache_starves', - 'DB_PERF_SEL_Tile_Cache_flushes', 'DB_PERF_SEL_Tile_Cache_hits', - 'DB_PERF_SEL_Tile_Cache_mem_return_starve', - 'DB_PERF_SEL_Tile_Cache_misses', 'DB_PERF_SEL_Tile_Cache_starves', - 'DB_PERF_SEL_Tile_Cache_surface_stall', - 'DB_PERF_SEL_Z_Cache_frees', 'DB_PERF_SEL_Z_Cache_pmask_flushes', - 'DB_PERF_SEL_Z_Cache_pmask_hits', - 'DB_PERF_SEL_Z_Cache_pmask_misses', - 'DB_PERF_SEL_Z_Cache_pmask_starves', - 'DB_PERF_SEL_Z_Cache_separate_Z_flushes', - 'DB_PERF_SEL_Z_Cache_separate_Z_hits', - 'DB_PERF_SEL_Z_Cache_separate_Z_misses', - 'DB_PERF_SEL_Z_Cache_separate_Z_starves', - 'DB_PERF_SEL_clock_main_active', - 'DB_PERF_SEL_clock_mem_export_active', - 'DB_PERF_SEL_clock_reg_active', - 'DB_PERF_SEL_cs_events_pws_enable', - 'DB_PERF_SEL_depth_bounds_tile_culled', 'DB_PERF_SEL_di_dt_stall', - 'DB_PERF_SEL_dk_squad_busy', 'DB_PERF_SEL_dk_squad_sends', - 'DB_PERF_SEL_dk_squad_stalls', 'DB_PERF_SEL_dk_tile_busy', - 'DB_PERF_SEL_dk_tile_quad_starves', 'DB_PERF_SEL_dk_tile_sends', - 'DB_PERF_SEL_dk_tile_stalls', 'DB_PERF_SEL_dkg_tile_rate_tile', - 'DB_PERF_SEL_dtt_sm_clash_stall', 'DB_PERF_SEL_dtt_sm_miss_stall', - 'DB_PERF_SEL_dtt_sm_slot_stall', - 'DB_PERF_SEL_earlyZ_waiting_for_postZ_done', - 'DB_PERF_SEL_esr_eot_fwd_busy', 'DB_PERF_SEL_esr_eot_fwd_forward', - 'DB_PERF_SEL_esr_eot_fwd_holding_squad', - 'DB_PERF_SEL_esr_ps_lqf_busy', 'DB_PERF_SEL_esr_ps_lqf_stall', - 'DB_PERF_SEL_esr_ps_out_busy', 'DB_PERF_SEL_esr_ps_src_in_sends', - 'DB_PERF_SEL_esr_ps_src_in_squads', - 'DB_PERF_SEL_esr_ps_src_in_squads_unrolled', - 'DB_PERF_SEL_esr_ps_src_in_stall', - 'DB_PERF_SEL_esr_ps_src_in_tile_rate', - 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled', - 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled_to_pixel_rate', - 'DB_PERF_SEL_esr_ps_src_out_stall', 'DB_PERF_SEL_esr_ps_vic_busy', - 'DB_PERF_SEL_esr_ps_vic_stall', - 'DB_PERF_SEL_esr_ps_woc_1squadIn_2squadOut', - 'DB_PERF_SEL_esr_ps_woc_2squadIn_1squadOut', - 'DB_PERF_SEL_esr_psi_vic_tile_rate', - 'DB_PERF_SEL_esr_sqq_zi_busy', 'DB_PERF_SEL_esr_sqq_zi_stall', - 'DB_PERF_SEL_esr_vic_footprint_match_1x2', - 'DB_PERF_SEL_esr_vic_footprint_match_2x1', - 'DB_PERF_SEL_esr_vic_footprint_match_2x2', - 'DB_PERF_SEL_esr_vic_sqq_busy', 'DB_PERF_SEL_esr_vic_sqq_stall', - 'DB_PERF_SEL_etr_out_busy', 'DB_PERF_SEL_etr_out_esr_stall', - 'DB_PERF_SEL_etr_out_ltile_probe_fifo_full_stall', - 'DB_PERF_SEL_etr_out_send', 'DB_PERF_SEL_flush_10plane', - 'DB_PERF_SEL_flush_11plane', 'DB_PERF_SEL_flush_12plane', - 'DB_PERF_SEL_flush_13plane', 'DB_PERF_SEL_flush_14plane', - 'DB_PERF_SEL_flush_15plane', 'DB_PERF_SEL_flush_16plane', - 'DB_PERF_SEL_flush_1plane', 'DB_PERF_SEL_flush_2plane', - 'DB_PERF_SEL_flush_3plane', 'DB_PERF_SEL_flush_4plane', - 'DB_PERF_SEL_flush_5plane', 'DB_PERF_SEL_flush_6plane', - 'DB_PERF_SEL_flush_7plane', 'DB_PERF_SEL_flush_8plane', - 'DB_PERF_SEL_flush_9plane', 'DB_PERF_SEL_flush_compressed', - 'DB_PERF_SEL_flush_compressed_stencil', - 'DB_PERF_SEL_flush_expanded_stencil', - 'DB_PERF_SEL_flush_expanded_z', 'DB_PERF_SEL_flush_plane_le4', - 'DB_PERF_SEL_flush_single_stencil', - 'DB_PERF_SEL_hi_z_s_checker_force_coarse_vrs_1x1', - 'DB_PERF_SEL_hi_z_s_checker_force_ssaa_vrs_1x1', - 'DB_PERF_SEL_his_tile_culled', 'DB_PERF_SEL_hiz_tc_read_starved', - 'DB_PERF_SEL_hiz_tc_write_stall', 'DB_PERF_SEL_hiz_tile_culled', - 'DB_PERF_SEL_mi_quad_rd_outstanding_sum', - 'DB_PERF_SEL_mi_quad_wr_outstanding_sum', - 'DB_PERF_SEL_mi_rdreq_busy', 'DB_PERF_SEL_mi_rdreq_stall', - 'DB_PERF_SEL_mi_tile_rd_outstanding_sum', - 'DB_PERF_SEL_mi_tile_wr_outstanding_sum', - 'DB_PERF_SEL_mi_wrreq_busy', 'DB_PERF_SEL_mi_wrreq_stall', - 'DB_PERF_SEL_noz_waiting_for_postz_done', - 'DB_PERF_SEL_planes_flushed', - 'DB_PERF_SEL_postz_ps_invoked_pixel_cnt', - 'DB_PERF_SEL_postzl_full_launch', - 'DB_PERF_SEL_postzl_partial_launch', - 'DB_PERF_SEL_postzl_partial_waiting', - 'DB_PERF_SEL_postzl_se_busy', 'DB_PERF_SEL_postzl_se_stall', - 'DB_PERF_SEL_postzl_sq_pt_busy', 'DB_PERF_SEL_postzl_sq_pt_stall', - 'DB_PERF_SEL_postzl_src_in_sends', - 'DB_PERF_SEL_postzl_src_in_squads', - 'DB_PERF_SEL_postzl_src_in_squads_unrolled', - 'DB_PERF_SEL_postzl_src_in_stall', - 'DB_PERF_SEL_postzl_src_in_tile_rate', - 'DB_PERF_SEL_postzl_src_in_tile_rate_unrolled', - 'DB_PERF_SEL_postzl_src_out_stall', - 'DB_PERF_SEL_postzl_tile_init_stall', - 'DB_PERF_SEL_postzl_tile_mem_stall', - 'DB_PERF_SEL_prez_ps_invoked_pixel_cnt', - 'DB_PERF_SEL_prezl_src_in_sends', - 'DB_PERF_SEL_prezl_src_in_squads', - 'DB_PERF_SEL_prezl_src_in_squads_unrolled', - 'DB_PERF_SEL_prezl_src_in_stall', - 'DB_PERF_SEL_prezl_src_in_tile_rate', - 'DB_PERF_SEL_prezl_src_in_tile_rate_unrolled', - 'DB_PERF_SEL_prezl_src_out_stall', - 'DB_PERF_SEL_prezl_tile_init_stall', - 'DB_PERF_SEL_prezl_tile_mem_stall', - 'DB_PERF_SEL_ps_events_pws_enable', - 'DB_PERF_SEL_pws_liveness_stall_dtt_tag', - 'DB_PERF_SEL_pws_liveness_stall_tcp_cache_mgr', - 'DB_PERF_SEL_pws_stall', 'DB_PERF_SEL_qc_busy', - 'DB_PERF_SEL_qc_conflicts', 'DB_PERF_SEL_qc_full_stall', - 'DB_PERF_SEL_qc_in_postZ_tile_stalls_preZ', - 'DB_PERF_SEL_qc_in_preZ_tile_stalls_postZ', 'DB_PERF_SEL_qc_xfc', - 'DB_PERF_SEL_quad_rd_32byte_reqs', 'DB_PERF_SEL_quad_rd_busy', - 'DB_PERF_SEL_quad_rd_mi_stall', - 'DB_PERF_SEL_quad_rd_mi_stall_unc', 'DB_PERF_SEL_quad_rd_panic', - 'DB_PERF_SEL_quad_rd_rw_collision', 'DB_PERF_SEL_quad_rd_sends', - 'DB_PERF_SEL_quad_rd_sends_unc', 'DB_PERF_SEL_quad_rd_tag_stall', - 'DB_PERF_SEL_quad_rdret_busy', 'DB_PERF_SEL_quad_rdret_sends', - 'DB_PERF_SEL_quad_wr_acks', 'DB_PERF_SEL_quad_wr_busy', - 'DB_PERF_SEL_quad_wr_coherency_stall', - 'DB_PERF_SEL_quad_wr_mi_stall', 'DB_PERF_SEL_quad_wr_sends', - 'DB_PERF_SEL_reZ_waiting_for_postZ_done', - 'DB_PERF_SEL_recomp_tile_to_1zplane_no_fastop', - 'DB_PERF_SEL_sc_kick_end', 'DB_PERF_SEL_sc_kick_start', - 'DB_PERF_SEL_tcp_dispatcher_flushes', - 'DB_PERF_SEL_tcp_dispatcher_reads', - 'DB_PERF_SEL_tcp_prefetcher_flushes', - 'DB_PERF_SEL_tcp_prefetcher_reads', - 'DB_PERF_SEL_tcp_preloader_flushes', - 'DB_PERF_SEL_tcp_preloader_reads', 'DB_PERF_SEL_tile_rd_sends', - 'DB_PERF_SEL_tile_wr_acks', 'DB_PERF_SEL_tile_wr_sends', - 'DB_PERF_SEL_tiles_compressed_to_decompressed', - 'DB_PERF_SEL_tiles_decomp_on_expclear', - 'DB_PERF_SEL_tiles_s_clear_on_expclear', - 'DB_PERF_SEL_tiles_stencil_fully_summarized', - 'DB_PERF_SEL_tiles_z_clear_on_expclear', - 'DB_PERF_SEL_tiles_z_fully_summarized', 'DB_PERF_SEL_tl_busy', - 'DB_PERF_SEL_tl_dtc_read_starved', 'DB_PERF_SEL_tl_events', - 'DB_PERF_SEL_tl_expand_squads', - 'DB_PERF_SEL_tl_flush_expand_squads', - 'DB_PERF_SEL_tl_in_fast_z_stall', - 'DB_PERF_SEL_tl_in_single_stencil_expand_stall', - 'DB_PERF_SEL_tl_in_xfc', 'DB_PERF_SEL_tl_out_squads', - 'DB_PERF_SEL_tl_out_xfc', 'DB_PERF_SEL_tl_postZ_noop_squads', - 'DB_PERF_SEL_tl_postZ_squads', 'DB_PERF_SEL_tl_preZ_noop_squads', - 'DB_PERF_SEL_tl_preZ_squads', - 'DB_PERF_SEL_tl_stencil_locked_stall', - 'DB_PERF_SEL_tl_stencil_stall', 'DB_PERF_SEL_tl_summarize_squads', - 'DB_PERF_SEL_tl_tile_ops', 'DB_PERF_SEL_tl_z_decompress_stall', - 'DB_PERF_SEL_tl_z_fetch_stall', - 'DB_PERF_SEL_ts_events_pws_enable', - 'DB_PERF_SEL_ts_tc_update_stall', - 'DB_PERF_SEL_tsc_insert_summarize_stall', - 'DB_PERF_SEL_unmapped_z_tile_culled', - 'DB_PERF_SEL_zf_plane_multicycle', 'DCCG_AUDIO_DTO0_SOURCE_SEL', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG0', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG1', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG2', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG3', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_RESERVED', - 'DCCG_AUDIO_DTO2_SOURCE_SEL', 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0', - 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0_DIV2', 'DCCG_AUDIO_DTO_SEL', - 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO0', 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO1', - 'DCCG_AUDIO_DTO_SEL_NO_AUDIO_DTO', - 'DCCG_AUDIO_DTO_USE_128FBR_FOR_DP', - 'DCCG_AUDIO_DTO_USE_512FBR_DTO', - 'DCCG_AUDIO_DTO_USE_512FBR_FOR_DP', 'DCCG_DBG_BLOCK_SEL', - 'DCCG_DBG_BLOCK_SEL_DCCG', 'DCCG_DBG_BLOCK_SEL_PMON', - 'DCCG_DBG_BLOCK_SEL_PMON2', 'DCCG_DBG_EN', 'DCCG_DBG_EN_DISABLE', - 'DCCG_DBG_EN_ENABLE', 'DCCG_DEEP_COLOR_CNTL', - 'DCCG_DEEP_COLOR_DTO_2_1_RATIO', 'DCCG_DEEP_COLOR_DTO_3_2_RATIO', - 'DCCG_DEEP_COLOR_DTO_5_4_RATIO', 'DCCG_DEEP_COLOR_DTO_DISABLE', - 'DCCG_FIFO_ERRDET_OVR_DISABLE', 'DCCG_FIFO_ERRDET_OVR_EN', - 'DCCG_FIFO_ERRDET_OVR_ENABLE', 'DCCG_FIFO_ERRDET_RESET', - 'DCCG_FIFO_ERRDET_RESET_FORCE', 'DCCG_FIFO_ERRDET_RESET_NOOP', - 'DCCG_FIFO_ERRDET_STATE', 'DCCG_FIFO_ERRDET_STATE_CALIBRATION', - 'DCCG_FIFO_ERRDET_STATE_DETECTION', 'DCCG_PERF_MODE_HSYNC', - 'DCCG_PERF_MODE_HSYNC_NOOP', 'DCCG_PERF_MODE_HSYNC_START', - 'DCCG_PERF_MODE_VSYNC', 'DCCG_PERF_MODE_VSYNC_NOOP', - 'DCCG_PERF_MODE_VSYNC_START', 'DCCG_PERF_OTG_SELECT', - 'DCCG_PERF_RUN', 'DCCG_PERF_RUN_NOOP', 'DCCG_PERF_RUN_START', - 'DCCG_PERF_SEL_OTG0', 'DCCG_PERF_SEL_OTG1', 'DCCG_PERF_SEL_OTG2', - 'DCCG_PERF_SEL_OTG3', 'DCCG_PERF_SEL_RESERVED', - 'DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_1', - 'DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_2', - 'DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 'DCHUBBUB_DET_MEM_PWR_LIGHT_SLEEP_MODE', - 'DCHUBBUB_MEM_POWER_DIS_MODE_DISABLE', - 'DCHUBBUB_MEM_POWER_DIS_MODE_ENABLE', - 'DCHUBBUB_MEM_POWER_MODE_DEEP_SLEEP', - 'DCHUBBUB_MEM_POWER_MODE_LIGHT_SLEEP', - 'DCHUBBUB_MEM_POWER_MODE_OFF', - 'DCHUBBUB_MEM_POWER_MODE_SHUT_DOWN', 'DCHUBBUB_MEM_PWR_DIS_MODE', - 'DCHUBBUB_MEM_PWR_MODE', 'DCIOCHIP_AUX_ALL_PWR_OK', - 'DCIOCHIP_AUX_ALL_PWR_OK_0', 'DCIOCHIP_AUX_ALL_PWR_OK_1', - 'DCIOCHIP_AUX_CSEL0P9', 'DCIOCHIP_AUX_CSEL1P1', - 'DCIOCHIP_AUX_CSEL_DEC0P9', 'DCIOCHIP_AUX_CSEL_DEC1P0', - 'DCIOCHIP_AUX_CSEL_INC1P0', 'DCIOCHIP_AUX_CSEL_INC1P1', - 'DCIOCHIP_AUX_FALLSLEWSEL', 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH0', - 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH1', 'DCIOCHIP_AUX_FALLSLEWSEL_LOW', - 'DCIOCHIP_AUX_FALLSLEWSEL_ULTRAHIGH', 'DCIOCHIP_AUX_HYS_TUNE', - 'DCIOCHIP_AUX_HYS_TUNE_0', 'DCIOCHIP_AUX_HYS_TUNE_1', - 'DCIOCHIP_AUX_HYS_TUNE_2', 'DCIOCHIP_AUX_HYS_TUNE_3', - 'DCIOCHIP_AUX_RECEIVER_SEL', 'DCIOCHIP_AUX_RECEIVER_SEL_0', - 'DCIOCHIP_AUX_RECEIVER_SEL_1', 'DCIOCHIP_AUX_RECEIVER_SEL_2', - 'DCIOCHIP_AUX_RECEIVER_SEL_3', 'DCIOCHIP_AUX_RSEL0P9', - 'DCIOCHIP_AUX_RSEL1P1', 'DCIOCHIP_AUX_RSEL_DEC0P9', - 'DCIOCHIP_AUX_RSEL_DEC1P0', 'DCIOCHIP_AUX_RSEL_INC1P0', - 'DCIOCHIP_AUX_RSEL_INC1P1', 'DCIOCHIP_AUX_SPIKESEL', - 'DCIOCHIP_AUX_SPIKESEL_10NS', 'DCIOCHIP_AUX_SPIKESEL_50NS', - 'DCIOCHIP_AUX_VOD_TUNE', 'DCIOCHIP_AUX_VOD_TUNE_0', - 'DCIOCHIP_AUX_VOD_TUNE_1', 'DCIOCHIP_AUX_VOD_TUNE_2', - 'DCIOCHIP_AUX_VOD_TUNE_3', 'DCIOCHIP_GPIO_MASK_EN', - 'DCIOCHIP_GPIO_MASK_EN_HARDWARE', - 'DCIOCHIP_GPIO_MASK_EN_SOFTWARE', 'DCIOCHIP_HPD_SEL', - 'DCIOCHIP_HPD_SEL_ASYNC', 'DCIOCHIP_HPD_SEL_CLOCKED', - 'DCIOCHIP_I2C_COMPSEL', 'DCIOCHIP_I2C_FALLSLEWSEL', - 'DCIOCHIP_I2C_FALLSLEWSEL_00', 'DCIOCHIP_I2C_FALLSLEWSEL_01', - 'DCIOCHIP_I2C_FALLSLEWSEL_10', 'DCIOCHIP_I2C_FALLSLEWSEL_11', - 'DCIOCHIP_I2C_RECEIVER_SEL', 'DCIOCHIP_I2C_RECEIVER_SEL_0', - 'DCIOCHIP_I2C_RECEIVER_SEL_1', 'DCIOCHIP_I2C_RECEIVER_SEL_2', - 'DCIOCHIP_I2C_RECEIVER_SEL_3', 'DCIOCHIP_I2C_REC_COMPARATOR', - 'DCIOCHIP_I2C_REC_SCHMIT', 'DCIOCHIP_I2C_VPH_1V2_EN', - 'DCIOCHIP_I2C_VPH_1V2_EN_0', 'DCIOCHIP_I2C_VPH_1V2_EN_1', - 'DCIOCHIP_INVERT', 'DCIOCHIP_MASK', 'DCIOCHIP_MASK_DISABLE', - 'DCIOCHIP_MASK_ENABLE', 'DCIOCHIP_PAD_MODE', - 'DCIOCHIP_PAD_MODE_DDC', 'DCIOCHIP_PAD_MODE_DP', 'DCIOCHIP_PD_EN', - 'DCIOCHIP_PD_EN_ALLOW', 'DCIOCHIP_PD_EN_NOTALLOW', - 'DCIOCHIP_POL_INVERT', 'DCIOCHIP_POL_NON_INVERT', - 'DCIOCHIP_REF_27_SRC_SEL', - 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_BYPASS', - 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_DIVIDER', - 'DCIOCHIP_REF_27_SRC_SEL_XTAL_BYPASS', - 'DCIOCHIP_REF_27_SRC_SEL_XTAL_DIVIDER', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER1', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER2', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER3', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER4', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER5', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER6', - 'DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL', - 'DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS', - 'DCIO_DBG_ASYNC_4BIT_SEL', 'DCIO_DBG_ASYNC_4BIT_SEL_11TO8', - 'DCIO_DBG_ASYNC_4BIT_SEL_15TO12', - 'DCIO_DBG_ASYNC_4BIT_SEL_19TO16', - 'DCIO_DBG_ASYNC_4BIT_SEL_23TO20', - 'DCIO_DBG_ASYNC_4BIT_SEL_27TO24', - 'DCIO_DBG_ASYNC_4BIT_SEL_31TO28', 'DCIO_DBG_ASYNC_4BIT_SEL_3TO0', - 'DCIO_DBG_ASYNC_4BIT_SEL_7TO4', 'DCIO_DBG_ASYNC_BLOCK_SEL', - 'DCIO_DBG_ASYNC_BLOCK_SEL_DCCG', 'DCIO_DBG_ASYNC_BLOCK_SEL_DCIO', - 'DCIO_DBG_ASYNC_BLOCK_SEL_DIO', - 'DCIO_DBG_ASYNC_BLOCK_SEL_OVERRIDE', 'DCIO_DCRXPHY_SOFT_RESET', - 'DCIO_DCRXPHY_SOFT_RESET_ASSERT', - 'DCIO_DCRXPHY_SOFT_RESET_DEASSERT', 'DCIO_DC_GENERICA_SEL', - 'DCIO_DC_GENERICB_SEL', - 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL', - 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL', - 'DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL', - 'DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL', - 'DCIO_DC_GPIO_DEBUG_DPRX_LOOPBACK_ENABLE', - 'DCIO_DC_GPU_TIMER_READ_SELECT', - 'DCIO_DC_GPU_TIMER_START_POSITION', - 'DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL', - 'DCIO_DIO_EXT_VSYNC_MASK', 'DCIO_DIO_OTG_EXT_VSYNC_MUX', - 'DCIO_DISPCLK_R_DCIO_GATE_DISABLE', - 'DCIO_DISPCLK_R_DCIO_GATE_ENABLE', 'DCIO_DPCS_INTERRUPT_DISABLE', - 'DCIO_DPCS_INTERRUPT_ENABLE', 'DCIO_DPCS_INTERRUPT_MASK', - 'DCIO_DPCS_INTERRUPT_TYPE', - 'DCIO_DPCS_INTERRUPT_TYPE_LEVEL_BASED', - 'DCIO_DPCS_INTERRUPT_TYPE_PULSE_BASED', - 'DCIO_DPRX_LOOPBACK_ENABLE_LOOP', - 'DCIO_DPRX_LOOPBACK_ENABLE_NORMAL', 'DCIO_EXT_VSYNC_MASK_NONE', - 'DCIO_EXT_VSYNC_MASK_NONE_DUPLICATE', 'DCIO_EXT_VSYNC_MASK_PIPE0', - 'DCIO_EXT_VSYNC_MASK_PIPE1', 'DCIO_EXT_VSYNC_MASK_PIPE2', - 'DCIO_EXT_VSYNC_MASK_PIPE3', 'DCIO_EXT_VSYNC_MASK_PIPE4', - 'DCIO_EXT_VSYNC_MASK_PIPE5', 'DCIO_EXT_VSYNC_MUX_GENERICB', - 'DCIO_EXT_VSYNC_MUX_OTG0', 'DCIO_EXT_VSYNC_MUX_OTG1', - 'DCIO_EXT_VSYNC_MUX_OTG2', 'DCIO_EXT_VSYNC_MUX_OTG3', - 'DCIO_EXT_VSYNC_MUX_OTG4', 'DCIO_EXT_VSYNC_MUX_OTG5', - 'DCIO_EXT_VSYNC_MUX_SWAPLOCKB', 'DCIO_GENERICA_SEL_GENERICA_DCCG', - 'DCIO_GENERICA_SEL_STEREOSYNC', 'DCIO_GENERICA_SEL_SYNCEN', - 'DCIO_GENERICB_SEL_GENERICB_DCCG', 'DCIO_GENERICB_SEL_STEREOSYNC', - 'DCIO_GENERICB_SEL_SYNCEN', 'DCIO_GENLK_CLK_GSL_MASK', - 'DCIO_GENLK_CLK_GSL_MASK_NO', 'DCIO_GENLK_CLK_GSL_MASK_STEREO', - 'DCIO_GENLK_CLK_GSL_MASK_TIMING', - 'DCIO_GENLK_CLK_OUTPUT_SEL_DISABLE', - 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL1', - 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL2', - 'DCIO_GENLK_CLK_OUTPUT_SEL_RESERVED_VALUE3', - 'DCIO_GENLK_VSYNC_GSL_MASK', 'DCIO_GENLK_VSYNC_GSL_MASK_NO', - 'DCIO_GENLK_VSYNC_GSL_MASK_STEREO', - 'DCIO_GENLK_VSYNC_GSL_MASK_TIMING', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE', - 'DCIO_GPU_TIMER_START_0_END_27', 'DCIO_GPU_TIMER_START_10_END_37', - 'DCIO_GPU_TIMER_START_1_END_28', 'DCIO_GPU_TIMER_START_2_END_29', - 'DCIO_GPU_TIMER_START_3_END_30', 'DCIO_GPU_TIMER_START_4_END_31', - 'DCIO_GPU_TIMER_START_6_END_33', 'DCIO_GPU_TIMER_START_8_END_35', - 'DCIO_GSL_SEL', 'DCIO_GSL_SEL_GROUP_0', 'DCIO_GSL_SEL_GROUP_1', - 'DCIO_GSL_SEL_GROUP_2', 'DCIO_PHY_HPO_ENC_SRC_SEL', - 'DCIO_SWAPLOCK_A_GSL_MASK', 'DCIO_SWAPLOCK_A_GSL_MASK_NO', - 'DCIO_SWAPLOCK_A_GSL_MASK_STEREO', - 'DCIO_SWAPLOCK_A_GSL_MASK_TIMING', 'DCIO_SWAPLOCK_B_GSL_MASK', - 'DCIO_SWAPLOCK_B_GSL_MASK_NO', 'DCIO_SWAPLOCK_B_GSL_MASK_STEREO', - 'DCIO_SWAPLOCK_B_GSL_MASK_TIMING', 'DCIO_TEST_CLK_SEL_DISPCLK', - 'DCIO_TEST_CLK_SEL_GATED_DISPCLK', 'DCIO_TEST_CLK_SEL_SOCCLK', - 'DCIO_UNIPHYA_FBDIV_CLK', 'DCIO_UNIPHYA_FBDIV_SSC_CLK', - 'DCIO_UNIPHYA_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYA_TEST_REFDIV_CLK', 'DCIO_UNIPHYB_FBDIV_CLK', - 'DCIO_UNIPHYB_FBDIV_SSC_CLK', 'DCIO_UNIPHYB_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYB_TEST_REFDIV_CLK', 'DCIO_UNIPHYC_FBDIV_CLK', - 'DCIO_UNIPHYC_FBDIV_SSC_CLK', 'DCIO_UNIPHYC_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYC_TEST_REFDIV_CLK', 'DCIO_UNIPHYD_FBDIV_CLK', - 'DCIO_UNIPHYD_FBDIV_SSC_CLK', 'DCIO_UNIPHYD_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYD_TEST_REFDIV_CLK', 'DCIO_UNIPHYE_FBDIV_CLK', - 'DCIO_UNIPHYE_FBDIV_SSC_CLK', 'DCIO_UNIPHYE_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYE_TEST_REFDIV_CLK', 'DCIO_UNIPHYF_FBDIV_CLK', - 'DCIO_UNIPHYF_FBDIV_SSC_CLK', 'DCIO_UNIPHYF_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYF_TEST_REFDIV_CLK', 'DCIO_UNIPHYG_FBDIV_CLK', - 'DCIO_UNIPHYG_FBDIV_SSC_CLK', 'DCIO_UNIPHYG_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYG_TEST_REFDIV_CLK', 'DCIO_UNIPHY_CHANNEL_INVERTED', - 'DCIO_UNIPHY_CHANNEL_NO_INVERSION', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH0', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH1', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH2', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH3', 'DCIO_UNIPHY_IMPCAL_SEL', - 'DCIO_UNIPHY_IMPCAL_SEL_BINARY', - 'DCIO_UNIPHY_IMPCAL_SEL_TEMPERATURE', - 'DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT', - 'DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_DEBOUNCED', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_TOGGLE_FILTERED', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_DISALLOW', - 'DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_G_AUX1', - 'DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_G_AUX2', - 'DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_G_AUX3', - 'DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_G_AUX4', - 'DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_G_AUX5', - 'DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_G_AUX6', - 'DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_P', - 'DCOH_TEST_CLOCK_MUX_SELECT_DISPCLK_R', - 'DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK0', - 'DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK1', - 'DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK2', - 'DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK3', - 'DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK4', - 'DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK5', - 'DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK6', - 'DCOH_TEST_CLOCK_MUX_SELECT_DPIASYMCLK7', - 'DCOH_TEST_CLOCK_MUX_SELECT_ENUM', - 'DCOH_TEST_CLOCK_MUX_SELECT_PHYASYMCLK', - 'DCOH_TEST_CLOCK_MUX_SELECT_PHYBSYMCLK', - 'DCOH_TEST_CLOCK_MUX_SELECT_PHYCSYMCLK', - 'DCOH_TEST_CLOCK_MUX_SELECT_PHYDSYMCLK', - 'DCOH_TEST_CLOCK_MUX_SELECT_PHYESYMCLK', - 'DCOH_TEST_CLOCK_MUX_SELECT_PHYFSYMCLK', - 'DCOH_TEST_CLOCK_MUX_SELECT_PHYGSYMCLK', - 'DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_G_AUX1', - 'DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_G_AUX2', - 'DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_G_AUX3', - 'DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_G_AUX4', - 'DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_G_AUX5', - 'DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_G_AUX6', - 'DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_P', - 'DCOH_TEST_CLOCK_MUX_SELECT_REFCLK_R', - 'DCOH_TOP_CLOCK_GATING_DISABLE_ENUM', - 'DCOH_TOP_CLOCK_GATING_DISABLE_ENUM_DISABLED', - 'DCOH_TOP_CLOCK_GATING_DISABLE_ENUM_ENABLED', - 'DCOH_TOP_ENABLE_ENUM', 'DCOH_TOP_ENABLE_ENUM_DISABLED', - 'DCOH_TOP_ENABLE_ENUM_ENABLED', 'DC_DMCUB_INT_TYPE', - 'DC_DMCUB_TIMER_WINDOW', 'DC_MEM_GLOBAL_PWR_REQ_DIS', - 'DC_MEM_GLOBAL_PWR_REQ_DISABLE', 'DC_MEM_GLOBAL_PWR_REQ_ENABLE', - 'DC_SMU_INTERRUPT_ENABLE', 'DDID_VMID_CNTL', 'DDID_VMID_PIPE', - 'DECERR', 'DENORM_TRUNCATE', 'DETILE_BUFFER_PACKER_ENABLE', - 'DETILE_BUFFER_PACKER_IS_DISABLE', - 'DETILE_BUFFER_PACKER_IS_ENABLE', 'DFQ_MIN_FREE_ENTRIES', - 'DFQ_MIN_FREE_ENTRIES_0', 'DFQ_MIN_FREE_ENTRIES_1', - 'DFQ_MIN_FREE_ENTRIES_2', 'DFQ_MIN_FREE_ENTRIES_3', - 'DFQ_MIN_FREE_ENTRIES_4', 'DFQ_MIN_FREE_ENTRIES_5', - 'DFQ_MIN_FREE_ENTRIES_6', 'DFQ_MIN_FREE_ENTRIES_7', - 'DFQ_NUM_ENTRIES', 'DFQ_NUM_ENTRIES_0', 'DFQ_NUM_ENTRIES_1', - 'DFQ_NUM_ENTRIES_2', 'DFQ_NUM_ENTRIES_3', 'DFQ_NUM_ENTRIES_4', - 'DFQ_NUM_ENTRIES_5', 'DFQ_NUM_ENTRIES_6', 'DFQ_NUM_ENTRIES_7', - 'DFQ_NUM_ENTRIES_8', 'DFQ_SIZE', 'DFQ_SIZE_0', 'DFQ_SIZE_1', - 'DFQ_SIZE_2', 'DFQ_SIZE_3', 'DFQ_SIZE_4', 'DFQ_SIZE_5', - 'DFQ_SIZE_6', 'DFQ_SIZE_7', 'DIFFERENT_RGB', - 'DIG_10BIT_TEST_PATTERN', 'DIG_ALTERNATING_TEST_PATTERN', - 'DIG_BE_CNTL_HPD1', 'DIG_BE_CNTL_HPD2', 'DIG_BE_CNTL_HPD3', - 'DIG_BE_CNTL_HPD4', 'DIG_BE_CNTL_HPD_SELECT', 'DIG_BE_CNTL_MODE', - 'DIG_BE_CNTL_NO_HPD', 'DIG_BE_DP_MST_MODE', 'DIG_BE_DP_SST_MODE', - 'DIG_BE_RESERVED1', 'DIG_BE_RESERVED2', 'DIG_BE_RESERVED3', - 'DIG_BE_RESERVED4', 'DIG_BE_TMDS_DVI_MODE', - 'DIG_BE_TMDS_HDMI_MODE', 'DIG_DIGITAL_BYPASS_ENABLE', - 'DIG_DIGITAL_BYPASS_OFF', 'DIG_DIGITAL_BYPASS_ON', - 'DIG_DIGITAL_BYPASS_SEL', 'DIG_DIGITAL_BYPASS_SEL_10BPP_LSB', - 'DIG_DIGITAL_BYPASS_SEL_12BPC_LSB', - 'DIG_DIGITAL_BYPASS_SEL_36BPP', - 'DIG_DIGITAL_BYPASS_SEL_48BPP_LSB', - 'DIG_DIGITAL_BYPASS_SEL_48BPP_MSB', - 'DIG_DIGITAL_BYPASS_SEL_ALPHA', 'DIG_DIGITAL_BYPASS_SEL_BYPASS', - 'DIG_FE_CNTL_SOURCE_SELECT', 'DIG_FE_CNTL_STEREOSYNC_SELECT', - 'DIG_FE_SOURCE_FROM_OTG0', 'DIG_FE_SOURCE_FROM_OTG1', - 'DIG_FE_SOURCE_FROM_OTG2', 'DIG_FE_SOURCE_FROM_OTG3', - 'DIG_FE_SOURCE_RESERVED', 'DIG_FE_STEREOSYNC_FROM_OTG0', - 'DIG_FE_STEREOSYNC_FROM_OTG1', 'DIG_FE_STEREOSYNC_FROM_OTG2', - 'DIG_FE_STEREOSYNC_FROM_OTG3', 'DIG_FE_STEREOSYNC_RESERVED', - 'DIG_FIFO_1_PIX_PER_CYCLE', 'DIG_FIFO_2_PIX_PER_CYCLE', - 'DIG_FIFO_4_PIX_PER_CYCLE', 'DIG_FIFO_8_PIX_PER_CYCLE', - 'DIG_FIFO_CTRL_FORCE_RECOMP_MINMAX', - 'DIG_FIFO_CTRL_USE_OVERWRITE_LEVEL', - 'DIG_FIFO_FORCE_RECAL_AVERAGE', - 'DIG_FIFO_FORCE_RECAL_AVERAGE_LEVEL', - 'DIG_FIFO_FORCE_RECOMP_MINMAX', - 'DIG_FIFO_NOT_FORCE_RECAL_AVERAGE', - 'DIG_FIFO_NOT_FORCE_RECOMP_MINMAX', 'DIG_FIFO_NO_ERROR_OCCURRED', - 'DIG_FIFO_OUTPUT_PIXEL_PER_CYCLE', 'DIG_FIFO_OVERFLOW_OCCURRED', - 'DIG_FIFO_OVERFLOW_UNDERFLOW_ERROR', 'DIG_FIFO_READ_CLOCK_SRC', - 'DIG_FIFO_READ_CLOCK_SRC_FROM_DCCG', - 'DIG_FIFO_READ_CLOCK_SRC_FROM_DISPLAY_PIPE', - 'DIG_FIFO_UNDERFLOW_OCCURRED', 'DIG_FIFO_USE_CAL_AVERAGE_LEVEL', - 'DIG_FIFO_USE_OVERWRITE_LEVEL', 'DIG_IN_DEBUG_MODE', - 'DIG_IN_NORMAL_OPERATION', 'DIG_MODE', - 'DIG_OUTPUT_CRC_CNTL_LINK_SEL', 'DIG_OUTPUT_CRC_DATA_SEL', - 'DIG_OUTPUT_CRC_FOR_ACTIVEONLY', 'DIG_OUTPUT_CRC_FOR_AUDIO', - 'DIG_OUTPUT_CRC_FOR_FULLFRAME', 'DIG_OUTPUT_CRC_FOR_VBI', - 'DIG_OUTPUT_CRC_ON_LINK0', 'DIG_OUTPUT_CRC_ON_LINK1', - 'DIG_RANDOM_PATTERN_ENABLED', 'DIG_RANDOM_PATTERN_RESETED', - 'DIG_RANDOM_PATTERN_SEED_RAN_PAT', - 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_ALL_PIXELS', - 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_DE_HIGH', - 'DIG_STREAM_MAPPER_DIG_STREAM_LINK_TARGET', - 'DIG_STREAM_MAPPER_LINK0', 'DIG_STREAM_MAPPER_LINK1', - 'DIG_STREAM_MAPPER_LINK2', 'DIG_STREAM_MAPPER_LINK3', - 'DIG_STREAM_MAPPER_LINK6', - 'DIG_TEST_PATTERN_EXTERNAL_RESET_BY_EXT_SIG', - 'DIG_TEST_PATTERN_EXTERNAL_RESET_EN', - 'DIG_TEST_PATTERN_EXTERNAL_RESET_ENABLE', - 'DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL', - 'DIG_TEST_PATTERN_NORMAL', 'DIG_TEST_PATTERN_RANDOM', - 'DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN', - 'DIG_TEST_PATTERN_RANDOM_PATTERN_RESET', - 'DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN', 'DIG_UPDATE_EYE_SEL_BOTH', - 'DIG_UPDATE_EYE_SEL_LEFT', 'DIG_UPDATE_EYE_SEL_RIGHT', - 'DIG_UPDATE_FIELD_SEL_BOTH', 'DIG_UPDATE_FIELD_SEL_BOTTOM', - 'DIG_UPDATE_FIELD_SEL_RESERVED', 'DIG_UPDATE_FIELD_SEL_TOP', - 'DIOMEM_DISABLE_MEM_PWR_CTRL', 'DIOMEM_DYNAMIC_DEEP_SLEEP_EN', - 'DIOMEM_DYNAMIC_DEEP_SLEEP_ENABLE', - 'DIOMEM_DYNAMIC_LIGHT_SLEEP_EN', - 'DIOMEM_DYNAMIC_LIGHT_SLEEP_ENABLE', - 'DIOMEM_DYNAMIC_SHUT_DOWN_ENABLE', 'DIOMEM_ENABLE_MEM_PWR_CTRL', - 'DIOMEM_FORCE_DEEP_SLEEP_REQUEST', 'DIOMEM_FORCE_LIGHT_SLEEP_REQ', - 'DIOMEM_FORCE_LIGHT_SLEEP_REQUEST', - 'DIOMEM_FORCE_SHUT_DOWN_REQUEST', 'DIOMEM_NO_FORCE_REQ', - 'DIOMEM_NO_FORCE_REQUEST', 'DIOMEM_PWR_DIS_CTRL', - 'DIOMEM_PWR_FORCE_CTRL', 'DIOMEM_PWR_FORCE_CTRL2', - 'DIOMEM_PWR_SEL_CTRL', 'DIOMEM_PWR_SEL_CTRL2', - 'DIO_CLOCK_GATING_DIS', 'DIO_CLOCK_GATING_DISABLE', - 'DIO_CLOCK_GATING_EN', 'DIO_DBG_BLOCK_SEL', - 'DIO_DBG_BLOCK_SEL_AUX0', 'DIO_DBG_BLOCK_SEL_AUX1', - 'DIO_DBG_BLOCK_SEL_AUX2', 'DIO_DBG_BLOCK_SEL_AUX3', - 'DIO_DBG_BLOCK_SEL_DIGA', 'DIO_DBG_BLOCK_SEL_DIGB', - 'DIO_DBG_BLOCK_SEL_DIGC', 'DIO_DBG_BLOCK_SEL_DIGD', - 'DIO_DBG_BLOCK_SEL_DIGFE_A', 'DIO_DBG_BLOCK_SEL_DIGFE_B', - 'DIO_DBG_BLOCK_SEL_DIGFE_C', 'DIO_DBG_BLOCK_SEL_DIGFE_D', - 'DIO_DBG_BLOCK_SEL_DIO', 'DIO_DBG_BLOCK_SEL_DPA', - 'DIO_DBG_BLOCK_SEL_DPB', 'DIO_DBG_BLOCK_SEL_DPC', - 'DIO_DBG_BLOCK_SEL_DPD', 'DIO_DBG_BLOCK_SEL_DPFE_A', - 'DIO_DBG_BLOCK_SEL_DPFE_B', 'DIO_DBG_BLOCK_SEL_DPFE_C', - 'DIO_DBG_BLOCK_SEL_DPFE_D', 'DIO_DBG_BLOCK_SEL_PERFMON_DIO', - 'DIO_DBG_BLOCK_SEL_RESERVED', 'DIO_FIFO_ERROR', - 'DIO_FIFO_ERROR_00', 'DIO_FIFO_ERROR_01', 'DIO_FIFO_ERROR_10', - 'DIO_FIFO_ERROR_11', - 'DIO_HDMI_RXSTATUS_TIMER_CONTROL_DIO_HDMI_RXSTATUS_TIMER_TYPE', - 'DIO_HDMI_RXSTATUS_TIMER_TYPE_LEVEL', - 'DIO_HDMI_RXSTATUS_TIMER_TYPE_PULSE', 'DISABLE_CLOCK_GATING', - 'DISABLE_CLOCK_GATING_IN_DCO', 'DISABLE_DEBUG', - 'DISABLE_JITTER_REMOVAL', 'DISABLE_MEM_PWR_CTRL', 'DISABLE_PWL', - 'DISABLE_TF0_OPT', 'DISABLE_TF1_OPT', 'DISABLE_THE_FEATURE', - 'DISABLE_THE_INTERRUPT', 'DISPCLK_CHG_FWD_CORR_DISABLE', - 'DISPCLK_CHG_FWD_CORR_DISABLE_AT_BEGINNING', - 'DISPCLK_CHG_FWD_CORR_ENABLE_AT_BEGINNING', - 'DISPCLK_FREQ_RAMP_COMPLETED', 'DISPCLK_FREQ_RAMP_DONE', - 'DISPCLK_FREQ_RAMP_IN_PROGRESS', 'DIVISOR_BY1', - 'DIVISOR_BY2_RESERVED', 'DIVISOR_BY3', 'DIVISOR_BY4_RESERVED', - 'DIVISOR_BY5_RESERVED', 'DIVISOR_BY6_RESERVED', - 'DIVISOR_BY7_RESERVED', 'DIVISOR_BY8_RESERVED', 'DIV_2', 'DIV_4', - 'DIV_8', 'DI_INDEX_SIZE_16_BIT', 'DI_INDEX_SIZE_32_BIT', - 'DI_INDEX_SIZE_8_BIT', 'DI_PT_2D_RECTANGLE', 'DI_PT_LINELIST', - 'DI_PT_LINELIST_ADJ', 'DI_PT_LINELOOP', 'DI_PT_LINESTRIP', - 'DI_PT_LINESTRIP_ADJ', 'DI_PT_NONE', 'DI_PT_PATCH', - 'DI_PT_POINTLIST', 'DI_PT_POLYGON', 'DI_PT_QUADLIST', - 'DI_PT_QUADSTRIP', 'DI_PT_RECTLIST', 'DI_PT_TRIFAN', - 'DI_PT_TRILIST', 'DI_PT_TRILIST_ADJ', 'DI_PT_TRISTRIP', - 'DI_PT_TRISTRIP_ADJ', 'DI_PT_UNUSED_1', 'DI_PT_UNUSED_3', - 'DI_PT_UNUSED_4', 'DI_PT_UNUSED_5', 'DI_SRC_SEL_AUTO_INDEX', - 'DI_SRC_SEL_DMA', 'DI_SRC_SEL_IMMEDIATE', 'DI_SRC_SEL_RESERVED', - 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE', - 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_DISABLE', - 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_ENABLE', - 'DMDATA_CLEAR_UNDERFLOW_STATUS', 'DMDATA_DONE', - 'DMDATA_DONT_CLEAR', 'DMDATA_HARDWARE_UPDATE_MODE', 'DMDATA_MODE', - 'DMDATA_NOT_SENT_TO_DIG', 'DMDATA_NOT_UNDERFLOW', - 'DMDATA_NOT_UPDATED', 'DMDATA_QOS_LEVEL_FROM_SOFTWARE', - 'DMDATA_QOS_LEVEL_FROM_TTU', 'DMDATA_QOS_MODE', 'DMDATA_REPEAT', - 'DMDATA_SENT_TO_DIG', 'DMDATA_SOFTWARE_UPDATE_MODE', - 'DMDATA_UNDERFLOW', 'DMDATA_UNDERFLOWED', - 'DMDATA_UNDERFLOW_CLEAR', 'DMDATA_UPDATED', - 'DMDATA_USE_FOR_CURRENT_AND_FUTURE_FRAMES', - 'DMDATA_USE_FOR_CURRENT_FRAME_ONLY', 'DMDATA_VM_DONE', - 'DMDATA_VM_IS_DONE', 'DMDATA_VM_IS_NOT_DONE', - 'DMDATA_WAS_UPDATED', 'DME_MEM_DISABLE_MEM_PWR_CTRL', - 'DME_MEM_ENABLE_MEM_PWR_CTRL', 'DME_MEM_FORCE_DEEP_SLEEP_REQUEST', - 'DME_MEM_FORCE_LIGHT_SLEEP_REQUEST', - 'DME_MEM_FORCE_SHUT_DOWN_REQUEST', 'DME_MEM_NO_FORCE_REQUEST', - 'DME_MEM_POWER_STATE_ENUM', 'DME_MEM_POWER_STATE_ENUM_DS', - 'DME_MEM_POWER_STATE_ENUM_LS', 'DME_MEM_POWER_STATE_ENUM_ON', - 'DME_MEM_POWER_STATE_ENUM_SD', 'DME_MEM_PWR_DIS_CTRL', - 'DME_MEM_PWR_FORCE_CTRL', 'DMU_CLOCK_ON', 'DMU_CLOCK_STATUS_OFF', - 'DMU_CLOCK_STATUS_ON', 'DMU_DC_GPU_TIMER_READ_SELECT', - 'DMU_DC_GPU_TIMER_START_POSITION', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_48', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_AWAY_76', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VREADY_36', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM_24', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_STARTUP_12', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_0', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_NO_LOCK_64', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_50', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_AWAY_78', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VREADY_38', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VSYNC_NOM_26', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_STARTUP_14', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_2', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_NO_LOCK_66', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_52', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_AWAY_80', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VREADY_40', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VSYNC_NOM_28', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_STARTUP_16', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_4', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_NO_LOCK_68', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_54', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_AWAY_82', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VREADY_42', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VSYNC_NOM_30', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_STARTUP_18', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_6', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_NO_LOCK_70', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_49', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_AWAY_77', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VREADY_37', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM_25', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_STARTUP_13', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_1', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_NO_LOCK_65', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_51', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_AWAY_79', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VREADY_39', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VSYNC_NOM_27', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_STARTUP_15', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_3', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_NO_LOCK_67', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_53', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_AWAY_81', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VREADY_41', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VSYNC_NOM_29', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_STARTUP_17', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_5', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_NO_LOCK_69', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_55', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_AWAY_83', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VREADY_43', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VSYNC_NOM_31', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_STARTUP_19', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_7', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_NO_LOCK_71', - 'DMU_GPU_TIMER_START_0_END_27', 'DMU_GPU_TIMER_START_10_END_37', - 'DMU_GPU_TIMER_START_1_END_28', 'DMU_GPU_TIMER_START_2_END_29', - 'DMU_GPU_TIMER_START_3_END_30', 'DMU_GPU_TIMER_START_4_END_31', - 'DMU_GPU_TIMER_START_6_END_33', 'DMU_GPU_TIMER_START_8_END_35', - 'DONUTS', 'DOUT_I2C_ACK', 'DOUT_I2C_ACK_TO_CLEAN', - 'DOUT_I2C_ARBITRATION_ABORT_CURRENT_TRANSFER', - 'DOUT_I2C_ARBITRATION_ABORT_XFER', - 'DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG', - 'DOUT_I2C_ARBITRATION_DONE__NOT_USING_I2C_REG', - 'DOUT_I2C_ARBITRATION_DONE__USING_I2C_REG', - 'DOUT_I2C_ARBITRATION_NOT_ABORT_CURRENT_TRANSFER', - 'DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_0_RESERVED', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_1_RESERVED', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_HIGH', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_NORMAL', - 'DOUT_I2C_ARBITRATION_SW_QUEUE_DISABLED', - 'DOUT_I2C_ARBITRATION_SW_QUEUE_ENABLED', - 'DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ', - 'DOUT_I2C_ARBITRATION__NOT_USE_I2C_REG_REQ', - 'DOUT_I2C_ARBITRATION__USE_I2C_REG_REQ', - 'DOUT_I2C_CONTROL_DBG_REF_SEL', 'DOUT_I2C_CONTROL_DDC_SELECT', - 'DOUT_I2C_CONTROL_FAST_REFERENCE_DEBUG', 'DOUT_I2C_CONTROL_GO', - 'DOUT_I2C_CONTROL_NORMAL_DEBUG', - 'DOUT_I2C_CONTROL_NOT_RESET_I2C_CONTROLLER', - 'DOUT_I2C_CONTROL_NOT_RESET_SW_STATUS', - 'DOUT_I2C_CONTROL_RESET_I2C_CONTROLLER', - 'DOUT_I2C_CONTROL_RESET_SW_STATUS', - 'DOUT_I2C_CONTROL_SELECT_DDC1', 'DOUT_I2C_CONTROL_SELECT_DDC2', - 'DOUT_I2C_CONTROL_SELECT_DDC3', 'DOUT_I2C_CONTROL_SELECT_DDC4', - 'DOUT_I2C_CONTROL_SELECT_DDCVGA', 'DOUT_I2C_CONTROL_SEND_RESET', - 'DOUT_I2C_CONTROL_SEND_RESET_LENGTH', - 'DOUT_I2C_CONTROL_SOFT_RESET', 'DOUT_I2C_CONTROL_START_TRANSFER', - 'DOUT_I2C_CONTROL_STOP_TRANSFER', - 'DOUT_I2C_CONTROL_SW_STATUS_RESET', 'DOUT_I2C_CONTROL_TRANS0', - 'DOUT_I2C_CONTROL_TRANS0_TRANS1', - 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2', - 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2_TRANS3', - 'DOUT_I2C_CONTROL_TRANSACTION_COUNT', - 'DOUT_I2C_CONTROL__NOT_SEND_RESET', - 'DOUT_I2C_CONTROL__SEND_RESET', - 'DOUT_I2C_CONTROL__SEND_RESET_LENGTH_10', - 'DOUT_I2C_CONTROL__SEND_RESET_LENGTH_9', - 'DOUT_I2C_DATA_INDEX_WRITE', 'DOUT_I2C_DATA__INDEX_WRITE', - 'DOUT_I2C_DATA__NOT_INDEX_WRITE', - 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_BY_EXTERNAL_RESISTOR', - 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_BY_EXTERNAL_RESISTOR', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_10MCLKS', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_20MCLKS', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL', - 'DOUT_I2C_DDC_SETUP_EDID_DETECT_CONNECT', - 'DOUT_I2C_DDC_SETUP_EDID_DETECT_DISCONNECT', - 'DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE', - 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SCL', - 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SDA', - 'DOUT_I2C_DDC_SPEED_THRESHOLD', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_BIG_THAN_ZERO', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_HALF_OF_TOTAL_SAMPLE', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_QUATER_OF_TOTAL_SAMPLE', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_THREE_QUATERS_OF_TOTAL_SAMPLE', - 'DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET', - 'DOUT_I2C_EDID_NOT_SEND_RESET_BEFORE_EDID_READ_TRACTION', - 'DOUT_I2C_EDID_SEND_RESET_BEFORE_EDID_READ_TRACTION', - 'DOUT_I2C_NO_ACK', 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE', - 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__LEVEL', - 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__PULSE', - 'DOUT_I2C_TRANSACTION_STOP_ALL_TRANS', - 'DOUT_I2C_TRANSACTION_STOP_CURRENT_TRANS', - 'DOUT_I2C_TRANSACTION_STOP_ON_NACK', 'DPHY_8B10B_CUR_DISP', - 'DPHY_8B10B_CUR_DISP_ONE', 'DPHY_8B10B_CUR_DISP_ZERO', - 'DPHY_8B10B_NOT_RESET', 'DPHY_8B10B_OUTPUT', 'DPHY_8B10B_RESET', - 'DPHY_8B10B_RESETET', 'DPHY_ATEST_LANE0_PRBS_PATTERN', - 'DPHY_ATEST_LANE0_REG_PATTERN', 'DPHY_ATEST_LANE1_PRBS_PATTERN', - 'DPHY_ATEST_LANE1_REG_PATTERN', 'DPHY_ATEST_LANE2_PRBS_PATTERN', - 'DPHY_ATEST_LANE2_REG_PATTERN', 'DPHY_ATEST_LANE3_PRBS_PATTERN', - 'DPHY_ATEST_LANE3_REG_PATTERN', 'DPHY_ATEST_SEL_LANE0', - 'DPHY_ATEST_SEL_LANE1', 'DPHY_ATEST_SEL_LANE2', - 'DPHY_ATEST_SEL_LANE3', 'DPHY_BYPASS', 'DPHY_CRC_CONTINUOUS', - 'DPHY_CRC_CONT_EN', 'DPHY_CRC_DISABLED', 'DPHY_CRC_EN', - 'DPHY_CRC_ENABLED', 'DPHY_CRC_FIELD', 'DPHY_CRC_LANE0_SELECTED', - 'DPHY_CRC_LANE1_SELECTED', 'DPHY_CRC_LANE2_SELECTED', - 'DPHY_CRC_LANE3_SELECTED', 'DPHY_CRC_MST_PHASE_ERROR_ACK', - 'DPHY_CRC_MST_PHASE_ERROR_ACKED', - 'DPHY_CRC_MST_PHASE_ERROR_NO_ACK', 'DPHY_CRC_ONE_SHOT', - 'DPHY_CRC_SEL', 'DPHY_CRC_START_FROM_BOTTOM_FIELD', - 'DPHY_CRC_START_FROM_TOP_FIELD', 'DPHY_DBG_OUTPUT', - 'DPHY_FAST_TRAINING_CAPABLE', 'DPHY_FAST_TRAINING_NOT_CAPABLE_0', - 'DPHY_FEC_ACTIVE', 'DPHY_FEC_DISABLED', 'DPHY_FEC_ENABLE', - 'DPHY_FEC_ENABLED', 'DPHY_FEC_NOT_ACTIVE', 'DPHY_FEC_READY', - 'DPHY_FEC_READY_DIS', 'DPHY_FEC_READY_EN', - 'DPHY_LOAD_BS_COUNT_NOT_STARTED', 'DPHY_LOAD_BS_COUNT_START', - 'DPHY_LOAD_BS_COUNT_STARTED', 'DPHY_NO_SKEW', - 'DPHY_PRBS11_SELECTED', 'DPHY_PRBS23_SELECTED', - 'DPHY_PRBS7_SELECTED', 'DPHY_PRBS_DISABLE', 'DPHY_PRBS_EN', - 'DPHY_PRBS_ENABLE', 'DPHY_PRBS_SEL', - 'DPHY_RX_FAST_TRAINING_CAPABLE', 'DPHY_SKEW_BYPASS', - 'DPHY_STREAM_RESET_DURING_FAST_TRAINING_ENUM', - 'DPHY_STREAM_RESET_DURING_FAST_TRAINING_NOT_RESET', - 'DPHY_STREAM_RESET_DURING_FAST_TRAINING_RESET', - 'DPHY_SW_FAST_TRAINING_NOT_STARTED', - 'DPHY_SW_FAST_TRAINING_START', 'DPHY_SW_FAST_TRAINING_STARTED', - 'DPHY_TRAINING_PATTERN_1', 'DPHY_TRAINING_PATTERN_2', - 'DPHY_TRAINING_PATTERN_3', 'DPHY_TRAINING_PATTERN_4', - 'DPHY_TRAINING_PATTERN_SEL', 'DPHY_WITH_SKEW', 'DPREFCLK_SRC_SEL', - 'DPREFCLK_SRC_SEL_CK', 'DPREFCLK_SRC_SEL_P0PLL', - 'DPREFCLK_SRC_SEL_P1PLL', 'DPREFCLK_SRC_SEL_P2PLL', - 'DPTE_GROUP_SIZE', 'DPTE_GROUP_SIZE_1024B', - 'DPTE_GROUP_SIZE_128B', 'DPTE_GROUP_SIZE_2048B', - 'DPTE_GROUP_SIZE_256B', 'DPTE_GROUP_SIZE_512B', - 'DPTE_GROUP_SIZE_64B', 'DP_AUX_ARB_CONTROL_ARB_PRIORITY', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__GTC_LS_SW', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__LS_GTC_SW', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_GTC_LS', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_LS_GTC', - 'DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG', - 'DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ', - 'DP_AUX_ARB_CONTROL__DONE_NOT_USING_AUX_REG', - 'DP_AUX_ARB_CONTROL__DONE_USING_AUX_REG', - 'DP_AUX_ARB_CONTROL__NOT_USE_AUX_REG_REQ', - 'DP_AUX_ARB_CONTROL__USE_AUX_REG_REQ', 'DP_AUX_ARB_STATUS', - 'DP_AUX_CONTROL_HPD1_SELECTED', 'DP_AUX_CONTROL_HPD2_SELECTED', - 'DP_AUX_CONTROL_HPD3_SELECTED', 'DP_AUX_CONTROL_HPD4_SELECTED', - 'DP_AUX_CONTROL_HPD_SEL', 'DP_AUX_CONTROL_NO_HPD_SELECTED', - 'DP_AUX_CONTROL_TEST_MODE', 'DP_AUX_CONTROL_TEST_MODE_DISABLE', - 'DP_AUX_CONTROL_TEST_MODE_ENABLE', - 'DP_AUX_DEFINITE_ERR_REACHED_ACK', - 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START', - 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__10_EDGES', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__18_EDGES', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__6_EDGES', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__RESERVED', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__2_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__4_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__6_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__8_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO128_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO16_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO256_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO2_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO32_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO4_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO64_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO8_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO128_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO16_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO256_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO2_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO32_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO4_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO64_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO8_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_START', - 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_STOP', - 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_START', - 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_STOP', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__127to128', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__15to16', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__1to2', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__255to256', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__31to32', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__3to4', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__63to64', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__7to8', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__0', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__128US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__16US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__256US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__32US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__64US', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__1MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__2MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__4MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__8MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__DIVIDED_SYM_CLK', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__FROM_DCCG_MICROSECOND_REF', - 'DP_AUX_ERR_OCCURRED_ACK', 'DP_AUX_ERR_OCCURRED__ACK', - 'DP_AUX_ERR_OCCURRED__NOT_ACK', - 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_ALLOW_REQ_FROM_OTHER_AUX', - 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ', - 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ_FROM_OTHER_AUX', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__300US', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__400US', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__500US', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__600US', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__16_ATTAMPS', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__4_ATTAMPS', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__8_ATTAMPS', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__RESERVED', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__0', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__128', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__256', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__64', - 'DP_AUX_IDLE', 'DP_AUX_INT_ACK', 'DP_AUX_INT_LS_UPDATE_ACK', - 'DP_AUX_INT_LS_UPDATE_NOT_ACK', 'DP_AUX_INT__ACK', - 'DP_AUX_INT__NOT_ACK', 'DP_AUX_IN_USE_GTC', 'DP_AUX_IN_USE_LS', - 'DP_AUX_IN_USE_PHYWAKE', 'DP_AUX_IN_USE_SW', - 'DP_AUX_LS_UPDATE_ACK', 'DP_AUX_PHY_WAKE_HIGH_PRIORITY', - 'DP_AUX_PHY_WAKE_LOW_PRIORITY', 'DP_AUX_PHY_WAKE_PRIORITY', - 'DP_AUX_POTENTIAL_ERR_REACHED_ACK', - 'DP_AUX_POTENTIAL_ERR_REACHED__ACK', - 'DP_AUX_POTENTIAL_ERR_REACHED__NOT_ACK', 'DP_AUX_RESET', - 'DP_AUX_RESET_ASSERTED', 'DP_AUX_RESET_DEASSERTED', - 'DP_AUX_RESET_DONE', 'DP_AUX_RESET_SEQUENCE_DONE', - 'DP_AUX_RESET_SEQUENCE_NOT_DONE', 'DP_AUX_RX_TIMEOUT_LEN_MUL', - 'DP_AUX_RX_TIMEOUT_LEN_MUL_2', 'DP_AUX_RX_TIMEOUT_LEN_MUL_4', - 'DP_AUX_RX_TIMEOUT_LEN_MUL_8', 'DP_AUX_RX_TIMEOUT_LEN_NO_MUL', - 'DP_AUX_SW_CONTROL_LS_READ_TRIG', - 'DP_AUX_SW_CONTROL_LS_READ__NOT_TRIG', - 'DP_AUX_SW_CONTROL_LS_READ__TRIG', 'DP_AUX_SW_CONTROL_SW_GO', - 'DP_AUX_SW_CONTROL_SW__GO', 'DP_AUX_SW_CONTROL_SW__NOT_GO', - 'DP_AUX_TX_PRECHARGE_LEN_MUL', 'DP_AUX_TX_PRECHARGE_LEN_MUL_2', - 'DP_AUX_TX_PRECHARGE_LEN_MUL_4', 'DP_AUX_TX_PRECHARGE_LEN_MUL_8', - 'DP_AUX_TX_PRECHARGE_LEN_NO_MUL', 'DP_COMPONENT_DEPTH', - 'DP_COMPONENT_DEPTH_10BPC', 'DP_COMPONENT_DEPTH_12BPC', - 'DP_COMPONENT_DEPTH_16BPC', 'DP_COMPONENT_DEPTH_6BPC', - 'DP_COMPONENT_DEPTH_8BPC', 'DP_COMPRESSED_PIXEL_FORMAT', - 'DP_DPHY_8B10B_EXT_DISP', 'DP_DPHY_8B10B_EXT_DISP_ONE', - 'DP_DPHY_8B10B_EXT_DISP_ZERO', - 'DP_DPHY_FAST_TRAINING_COMPLETE_ACK', - 'DP_DPHY_FAST_TRAINING_COMPLETE_ACKED', - 'DP_DPHY_FAST_TRAINING_COMPLETE_MASK', - 'DP_DPHY_FAST_TRAINING_COMPLETE_MASKED', - 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_ACKED', - 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_MASKED', - 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_DISABLED', - 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN', - 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_ENABLED', - 'DP_DPHY_HBR2_PASS_THROUGH', 'DP_DPHY_HBR2_PATTERN_1', - 'DP_DPHY_HBR2_PATTERN_2_NEG', 'DP_DPHY_HBR2_PATTERN_2_POS', - 'DP_DPHY_HBR2_PATTERN_3', 'DP_DPHY_HBR2_PATTERN_CONTROL_MODE', - 'DP_DPHY_SYM32_1LANE', 'DP_DPHY_SYM32_2LANE', - 'DP_DPHY_SYM32_4LANE', 'DP_DPHY_SYM32_ACTIVE', - 'DP_DPHY_SYM32_CRC_END_LLCP', 'DP_DPHY_SYM32_CRC_END_PS_ANY', - 'DP_DPHY_SYM32_CRC_END_PS_LT_SR', 'DP_DPHY_SYM32_CRC_END_PS_ONLY', - 'DP_DPHY_SYM32_CRC_START_LLCP', - 'DP_DPHY_SYM32_CRC_START_PS_LT_SR', - 'DP_DPHY_SYM32_CRC_START_PS_ONLY', - 'DP_DPHY_SYM32_CRC_START_PS_POST_LT_SR', - 'DP_DPHY_SYM32_CRC_START_TP_START', - 'DP_DPHY_SYM32_CRC_TAP_SOURCE_SCHEDULER', - 'DP_DPHY_SYM32_CRC_TAP_SOURCE_SYMBOL_HANDLER', - 'DP_DPHY_SYM32_CRC_TAP_SOURCE_TP_GEN_MUX', - 'DP_DPHY_SYM32_CRC_USE_END_EVENT', - 'DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS', 'DP_DPHY_SYM32_DISABLE', - 'DP_DPHY_SYM32_ENABLE', 'DP_DPHY_SYM32_LT_TPS1', - 'DP_DPHY_SYM32_LT_TPS2', 'DP_DPHY_SYM32_NOT_RESET', - 'DP_DPHY_SYM32_NO_RATE_UPDATE_PENDING', - 'DP_DPHY_SYM32_OUTPUT_DPIA', 'DP_DPHY_SYM32_OUTPUT_PHY', - 'DP_DPHY_SYM32_RATE_UPDATE_PENDING', 'DP_DPHY_SYM32_RESERVED', - 'DP_DPHY_SYM32_RESET', 'DP_DPHY_SYM32_RESET_STATUS_ASSERTED', - 'DP_DPHY_SYM32_RESET_STATUS_DEASSERTED', - 'DP_DPHY_SYM32_SAT_NOTRIGGER_UPDATE', - 'DP_DPHY_SYM32_SAT_NOTRIGGER_UPDATE_PENDING', - 'DP_DPHY_SYM32_SAT_NO_UPDATE', - 'DP_DPHY_SYM32_SAT_NO_UPDATE_PENDING', - 'DP_DPHY_SYM32_SAT_TRIGGER_UPDATE', - 'DP_DPHY_SYM32_SAT_TRIGGER_UPDATE_PENDING', - 'DP_DPHY_SYM32_SCHEDULER_ASLEEP', 'DP_DPHY_SYM32_SCHEDULER_AWAKE', - 'DP_DPHY_SYM32_SCHEDULER_OFF', 'DP_DPHY_SYM32_STATUS_ENABLED', - 'DP_DPHY_SYM32_STATUS_IDLE', 'DP_DPHY_SYM32_STREAM_OVR_ALWAYS', - 'DP_DPHY_SYM32_STREAM_OVR_NONE', - 'DP_DPHY_SYM32_STREAM_OVR_REPLACE', - 'DP_DPHY_SYM32_STREAM_OVR_TYPE_CONTROL', - 'DP_DPHY_SYM32_STREAM_OVR_TYPE_DATA', 'DP_DPHY_SYM32_TEST', - 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS11', - 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS15', - 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS23', - 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS31', - 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS7', - 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS9', - 'DP_DPHY_SYM32_TP_SELECT_CUSTOM', 'DP_DPHY_SYM32_TP_SELECT_PRBS', - 'DP_DPHY_SYM32_TP_SELECT_SQUARE', 'DP_DPHY_SYM32_TP_SELECT_TPS1', - 'DP_DPHY_SYM32_TP_SELECT_TPS2', 'DP_DSC_444_S422', - 'DP_DSC_N422_N420', 'DP_DTO_DESPREAD_DISABLE', - 'DP_DTO_DESPREAD_ENABLE', 'DP_DTO_DS_DISABLE', - 'DP_LINK_TRAINING_ALREADY_COMPLETE', 'DP_LINK_TRAINING_COMPLETE', - 'DP_LINK_TRAINING_NOT_COMPLETE', 'DP_LINK_TRAINING_SWITCH_MODE', - 'DP_LINK_TRAINING_SWITCH_TO_IDLE', - 'DP_LINK_TRAINING_SWITCH_TO_VIDEO', 'DP_ML_PHY_SEQ_IMMEDIATE', - 'DP_ML_PHY_SEQ_LINE_NUM', 'DP_ML_PHY_SEQ_MODE', - 'DP_MSA_V_TIMING_OVERRIDE_EN', 'DP_MSE_BLANK_CODE', - 'DP_MSE_BLANK_CODE_SF_FILLED', 'DP_MSE_BLANK_CODE_ZERO_FILLED', - 'DP_MSE_LINK_LINE', 'DP_MSE_LINK_LINE_128_MTP_LONG', - 'DP_MSE_LINK_LINE_256_MTP_LONG', 'DP_MSE_LINK_LINE_32_MTP_LONG', - 'DP_MSE_LINK_LINE_64_MTP_LONG', 'DP_MSE_NOT_ZERO_FE_ENCODER', - 'DP_MSE_TIMESTAMP_CALC_BASED_ON_LINK_RATE', - 'DP_MSE_TIMESTAMP_CALC_BASED_ON_VC_RATE', 'DP_MSE_TIMESTAMP_MODE', - 'DP_MSE_ZERO_ENCODER', 'DP_MSE_ZERO_FE_ENCODER', - 'DP_MSO_FOUR_SSTLINK', 'DP_MSO_NUM_OF_SST_LINKS', - 'DP_MSO_ONE_SSTLINK', 'DP_MSO_TWO_SSTLINK', 'DP_MST_MODE', - 'DP_PIXEL_ENCODING', 'DP_PIXEL_ENCODING_COMPRESSED', - 'DP_PIXEL_ENCODING_RGB_YCBCR444', 'DP_PIXEL_ENCODING_TYPE', - 'DP_PIXEL_ENCODING_UNCOMPRESSED', 'DP_PIXEL_ENCODING_YCBCR420', - 'DP_PIXEL_ENCODING_YCBCR422', 'DP_PIXEL_ENCODING_Y_ONLY', - 'DP_SEC_ASP_CHANNEL_COUNT_FROM_AZ', - 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE', - 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED', - 'DP_SEC_ASP_HIGH_PRIORITY', 'DP_SEC_ASP_LOW_PRIORITY', - 'DP_SEC_ASP_PRIORITY', 'DP_SEC_AUDIO_MUTE', - 'DP_SEC_AUDIO_MUTE_HW_CTRL', 'DP_SEC_AUDIO_MUTE_SW_CTRL', - 'DP_SEC_COLLISION_ACK', 'DP_SEC_COLLISION_ACK_CLR_FLAG', - 'DP_SEC_COLLISION_ACK_NO_EFFECT', 'DP_SEC_GSP0_PRIORITY', - 'DP_SEC_GSP_SEND', 'DP_SEC_GSP_SEND_ANY_LINE', - 'DP_SEC_GSP_SEND_PPS', 'DP_SEC_LINE_REFERENCE', - 'DP_SEC_TIMESTAMP_AUTO_CALC_MODE', 'DP_SEC_TIMESTAMP_MODE', - 'DP_SEC_TIMESTAMP_PROGRAMMABLE_MODE', 'DP_SST_MODE', - 'DP_STEER_1_PIX_PER_CYCLE', 'DP_STEER_2_PIX_PER_CYCLE', - 'DP_STEER_4_PIX_PER_CYCLE', 'DP_STEER_8_PIX_PER_CYCLE', - 'DP_STEER_OUTPUT_PIXEL_PER_CYCLE', 'DP_STEER_OVERFLOW_ACK', - 'DP_STEER_OVERFLOW_ACK_CLR_INTERRUPT', - 'DP_STEER_OVERFLOW_ACK_NO_EFFECT', 'DP_STEER_OVERFLOW_MASK', - 'DP_STEER_OVERFLOW_MASKED', 'DP_STEER_OVERFLOW_UNMASK', - 'DP_STREAM_ENC_DCCG', 'DP_STREAM_ENC_DISPLAY_PIPE', - 'DP_STREAM_ENC_HARDWARE', 'DP_STREAM_ENC_NOT_RESET', - 'DP_STREAM_ENC_NO_ERROR_OCCURRED', - 'DP_STREAM_ENC_OVERFLOW_OCCURRED', - 'DP_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR', - 'DP_STREAM_ENC_OVERWRITE_LEVEL_SELECT', - 'DP_STREAM_ENC_PROGRAMMABLE', 'DP_STREAM_ENC_READ_CLOCK_CONTROL', - 'DP_STREAM_ENC_RESET', 'DP_STREAM_ENC_RESET_CONTROL', - 'DP_STREAM_ENC_STREAM_ACTIVE', 'DP_STREAM_ENC_UNDERFLOW_OCCURRED', - 'DP_STREAM_ENC_VIDEO_STREAM_ACTIVE', - 'DP_STREAM_ENC_VIDEO_STREAM_NOT_ACTIVE', - 'DP_STREAM_MAPPER_DP_STREAM_LINK_TARGET', - 'DP_STREAM_MAPPER_LINK0', 'DP_STREAM_MAPPER_LINK1', - 'DP_STREAM_MAPPER_LINK2', 'DP_STREAM_MAPPER_LINK3', - 'DP_STREAM_MAPPER_RESERVED', 'DP_SYM32_ENC_COMPONENT_DEPTH_10BPC', - 'DP_SYM32_ENC_COMPONENT_DEPTH_12BPC', - 'DP_SYM32_ENC_COMPONENT_DEPTH_6BPC', - 'DP_SYM32_ENC_COMPONENT_DEPTH_8BPC', - 'DP_SYM32_ENC_COMPRESSED_FORMAT', 'DP_SYM32_ENC_CONTINUOUS_MODE', - 'DP_SYM32_ENC_CRC_NOT_VALID', 'DP_SYM32_ENC_CRC_VALID', - 'DP_SYM32_ENC_DISABLE', 'DP_SYM32_ENC_DP_SOF', - 'DP_SYM32_ENC_ENABLE', 'DP_SYM32_ENC_GSP_DEADLINE_MISSED', - 'DP_SYM32_ENC_GSP_DEADLINE_NOT_MISSED', - 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_128', - 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_32', - 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_RESERVED0', - 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_RESERVED1', - 'DP_SYM32_ENC_GSP_SEND_AT_EARLIEST_TIME', - 'DP_SYM32_ENC_GSP_SEND_AT_LINE_NUMBER', - 'DP_SYM32_ENC_GSP_TRIGGER_NOT_PENDING', - 'DP_SYM32_ENC_GSP_TRIGGER_PENDING', - 'DP_SYM32_ENC_MEM_PWR_FORCE_DEEP_SLEEP_REQUEST', - 'DP_SYM32_ENC_MEM_PWR_FORCE_LIGHT_SLEEP_REQUEST', - 'DP_SYM32_ENC_MEM_PWR_FORCE_SHUT_DOWN_REQUEST', - 'DP_SYM32_ENC_MEM_PWR_NO_FORCE_REQUEST', - 'DP_SYM32_ENC_NOT_PENDING', 'DP_SYM32_ENC_NOT_RESET', - 'DP_SYM32_ENC_NO_OVERFLOW_OCCURRED', 'DP_SYM32_ENC_ONE_SHOT_MODE', - 'DP_SYM32_ENC_OTG_SOF', 'DP_SYM32_ENC_OVERFLOW_OCCURRED', - 'DP_SYM32_ENC_PENDING', - 'DP_SYM32_ENC_PIXEL_ENCODING_RGB_YCBCR444', - 'DP_SYM32_ENC_PIXEL_ENCODING_YCBCR420', - 'DP_SYM32_ENC_PIXEL_ENCODING_YCBCR422', - 'DP_SYM32_ENC_PIXEL_ENCODING_Y_ONLY', - 'DP_SYM32_ENC_POWER_STATE_ENUM_DS', - 'DP_SYM32_ENC_POWER_STATE_ENUM_LS', - 'DP_SYM32_ENC_POWER_STATE_ENUM_ON', - 'DP_SYM32_ENC_POWER_STATE_ENUM_SD', 'DP_SYM32_ENC_RESET', - 'DP_SYM32_ENC_SDP_AUDIO_MUTE_FORCED', - 'DP_SYM32_ENC_SDP_AUDIO_MUTE_NOT_FORCED', - 'DP_SYM32_ENC_SDP_HIGH_PRIORITY', 'DP_SYM32_ENC_SDP_LOW_PRIORITY', - 'DP_SYM32_ENC_UNCOMPRESSED_FORMAT', - 'DP_SYM32_ENC_VID_STREAM_DEFER_TO_HBLANK', - 'DP_SYM32_ENC_VID_STREAM_DEFER_TO_VBLANK', - 'DP_SYM32_ENC_VID_STREAM_NO_DEFER', 'DP_SYNC_POLARITY', - 'DP_SYNC_POLARITY_ACTIVE_HIGH', 'DP_SYNC_POLARITY_ACTIVE_LOW', - 'DP_TU_OVERFLOW_ACK', 'DP_TU_OVERFLOW_ACK_CLR_INTERRUPT', - 'DP_TU_OVERFLOW_ACK_NO_EFFECT', 'DP_UDI_1_LANE', 'DP_UDI_2_LANES', - 'DP_UDI_4_LANES', 'DP_UDI_LANES', 'DP_UDI_LANES_RESERVED', - 'DP_VID_1X_Nvid', 'DP_VID_2X_Nvid', 'DP_VID_4X_Nvid', - 'DP_VID_8X_Nvid', 'DP_VID_ENHANCED_FRAME_MODE', - 'DP_VID_M_N_CALC_AUTO', - 'DP_VID_M_N_DOUBLE_BUFFER_AFTER_VID_M_UPDATE', - 'DP_VID_M_N_DOUBLE_BUFFER_AT_FRAME_START', - 'DP_VID_M_N_DOUBLE_BUFFER_MODE', 'DP_VID_M_N_GEN_EN', - 'DP_VID_M_N_PROGRAMMED_VIA_REG', 'DP_VID_N_INTERVAL', - 'DP_VID_STREAM_DISABLE_ACK', 'DP_VID_STREAM_DISABLE_MASK', - 'DP_VID_STREAM_DIS_DEFER', 'DP_VID_STREAM_DIS_DEFER_TO_HBLANK', - 'DP_VID_STREAM_DIS_DEFER_TO_VBLANK', 'DP_VID_STREAM_DIS_NO_DEFER', - 'DP_VID_VBID_FIELD_POL', 'DP_VID_VBID_FIELD_POL_INV', - 'DP_VID_VBID_FIELD_POL_NORMAL', 'DRAW_DONE', - 'DSCCIF_BITS_PER_COMPONENT_ENUM', - 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT', - 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT', - 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT', - 'DSCCIF_ENABLE_ENUM', 'DSCCIF_ENABLE_ENUM_DISABLED', - 'DSCCIF_ENABLE_ENUM_ENABLED', 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_420', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_422', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_RGB', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_SIMPLE_YCBCR_422', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_YCBCR_444', - 'DSCC_BITS_PER_COMPONENT_ENUM', - 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT', - 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT', - 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT', - 'DSCC_DSC_VERSION_MAJOR_ENUM', - 'DSCC_DSC_VERSION_MAJOR_ENUM_DSC_1_X_MAJOR_VERSION', - 'DSCC_DSC_VERSION_MINOR_ENUM', - 'DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_1_MINOR_VERSION', - 'DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_2_MINOR_VERSION', - 'DSCC_ENABLE_ENUM', 'DSCC_ENABLE_ENUM_DISABLED', - 'DSCC_ENABLE_ENUM_ENABLED', 'DSCC_ICH_RESET_ENUM', - 'DSCC_ICH_RESET_ENUM_SLICE0_ICH_RESET', - 'DSCC_ICH_RESET_ENUM_SLICE1_ICH_RESET', - 'DSCC_ICH_RESET_ENUM_SLICE2_ICH_RESET', - 'DSCC_ICH_RESET_ENUM_SLICE3_ICH_RESET', 'DSCC_LINEBUF_DEPTH_ENUM', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_10_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_11_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_12_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_13_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_8_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_9_BIT', - 'DSCC_MEM_PWR_DIS_ENUM', 'DSCC_MEM_PWR_DIS_ENUM_REQUEST_DIS', - 'DSCC_MEM_PWR_DIS_ENUM_REQUEST_EN', 'DSCC_MEM_PWR_FORCE_ENUM', - 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_DEEP_SLEEP_REQUEST', - 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_LIGHT_SLEEP_REQUEST', - 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_SHUT_DOWN_REQUEST', - 'DSCC_MEM_PWR_FORCE_ENUM_NO_FORCE_REQUEST', - 'DSCL_MODE_CHROMA_SCALING_BYPASS', 'DSCL_MODE_DSCL_BYPASS', - 'DSCL_MODE_LUMA_SCALING_BYPASS', 'DSCL_MODE_SCALING_444_BYPASS', - 'DSCL_MODE_SCALING_444_RGB_ENABLE', - 'DSCL_MODE_SCALING_444_YCBCR_ENABLE', - 'DSCL_MODE_SCALING_YCBCR_ENABLE', 'DSCL_MODE_SEL', - 'DS_HW_CAL_DIS', 'DS_HW_CAL_EN', 'DS_HW_CAL_ENABLE', - 'DS_REF_IS_EXT_GENLOCK', 'DS_REF_IS_PCIE', 'DS_REF_IS_XTALIN', - 'DS_REF_SRC', 'DVO_ENABLE_RST', 'DVO_ENABLE_RST_DISABLE', - 'DVO_ENABLE_RST_ENABLE', 'DWB_CRC_CONT_EN_CONT', - 'DWB_CRC_CONT_EN_ENUM', 'DWB_CRC_CONT_EN_ONE_SHOT', - 'DWB_CRC_SRC_SEL_DWB_IN', 'DWB_CRC_SRC_SEL_DWB_OUT', - 'DWB_CRC_SRC_SEL_ENUM', 'DWB_CRC_SRC_SEL_OGAM_OUT', - 'DWB_DATA_OVERFLOW_INT_TYPE_0', 'DWB_DATA_OVERFLOW_INT_TYPE_1', - 'DWB_DATA_OVERFLOW_INT_TYPE_ENUM', - 'DWB_DATA_OVERFLOW_TYPE_BUFFER', 'DWB_DATA_OVERFLOW_TYPE_ENUM', - 'DWB_DATA_OVERFLOW_TYPE_NO_OVERFLOW', - 'DWB_DATA_OVERFLOW_TYPE_VREADY', 'DWB_DATA_OVERFLOW_TYPE_VUPDATE', - 'DWB_DEBUG_SEL_DWBCP', 'DWB_DEBUG_SEL_ENUM', 'DWB_DEBUG_SEL_FC', - 'DWB_DEBUG_SEL_PERFMON', 'DWB_DEBUG_SEL_RESERVED', - 'DWB_GAMUT_REMAP_COEF_FORMAT_ENUM', - 'DWB_GAMUT_REMAP_COEF_FORMAT_S2_13', - 'DWB_GAMUT_REMAP_COEF_FORMAT_S3_12', - 'DWB_GAMUT_REMAP_MODE_BYPASS', 'DWB_GAMUT_REMAP_MODE_COEF_A', - 'DWB_GAMUT_REMAP_MODE_COEF_B', 'DWB_GAMUT_REMAP_MODE_ENUM', - 'DWB_GAMUT_REMAP_MODE_RESERVED', 'DWB_LUT_NUM_SEG', - 'DWB_MEM_PWR_FORCE_DIS', 'DWB_MEM_PWR_FORCE_DS', - 'DWB_MEM_PWR_FORCE_ENUM', 'DWB_MEM_PWR_FORCE_LS', - 'DWB_MEM_PWR_FORCE_SD', 'DWB_MEM_PWR_STATE_DS', - 'DWB_MEM_PWR_STATE_ENUM', 'DWB_MEM_PWR_STATE_LS', - 'DWB_MEM_PWR_STATE_ON', 'DWB_MEM_PWR_STATE_SD', - 'DWB_OGAM_LUT_CONFIG_MODE_DIFF', 'DWB_OGAM_LUT_CONFIG_MODE_ENUM', - 'DWB_OGAM_LUT_CONFIG_MODE_SAME', 'DWB_OGAM_LUT_HOST_SEL_ENUM', - 'DWB_OGAM_LUT_HOST_SEL_RAMA', 'DWB_OGAM_LUT_HOST_SEL_RAMB', - 'DWB_OGAM_LUT_READ_COLOR_SEL_B', - 'DWB_OGAM_LUT_READ_COLOR_SEL_ENUM', - 'DWB_OGAM_LUT_READ_COLOR_SEL_G', 'DWB_OGAM_LUT_READ_COLOR_SEL_R', - 'DWB_OGAM_LUT_READ_COLOR_SEL_RESERVED', - 'DWB_OGAM_LUT_READ_DBG_DISABLE', 'DWB_OGAM_LUT_READ_DBG_ENABLE', - 'DWB_OGAM_LUT_READ_DBG_ENUM', 'DWB_OGAM_MODE_BYPASS', - 'DWB_OGAM_MODE_ENUM', 'DWB_OGAM_MODE_RAM_LUT_ENABLED', - 'DWB_OGAM_MODE_RESERVED', 'DWB_OGAM_PWL_DISABLE_ENUM', - 'DWB_OGAM_PWL_DISABLE_FALSE', 'DWB_OGAM_PWL_DISABLE_TRUE', - 'DWB_OGAM_SELECT_A', 'DWB_OGAM_SELECT_B', 'DWB_OGAM_SELECT_ENUM', - 'DWB_SEGMENTS_1', 'DWB_SEGMENTS_128', 'DWB_SEGMENTS_16', - 'DWB_SEGMENTS_2', 'DWB_SEGMENTS_32', 'DWB_SEGMENTS_4', - 'DWB_SEGMENTS_64', 'DWB_SEGMENTS_8', 'DWB_TEST_CLK_SEL_ENUM', - 'DWB_TEST_CLK_SEL_G', 'DWB_TEST_CLK_SEL_P', 'DWB_TEST_CLK_SEL_R', - 'DYNAMIC_DEEP_SLEEP_EN', 'DYNAMIC_DEEP_SLEEP_ENABLE', - 'DYNAMIC_LIGHT_SLEEP_EN', 'DYNAMIC_LIGHT_SLEEP_ENABLE', - 'DYNAMIC_SHUT_DOWN_ENABLE', 'DbMemArbWatermarks', - 'DbPRTFaultBehavior', 'DbPSLControl', 'EARLY', - 'EARLY_Z_THEN_LATE_Z', 'EARLY_Z_THEN_RE_Z', - 'EFC_ACrYCb16161616_10LSB', 'EFC_ACrYCb16161616_10MSB', - 'EFC_ACrYCb16161616_12LSB', 'EFC_ACrYCb16161616_12MSB', - 'EFC_ACrYCb2101010', 'EFC_ACrYCb8888', 'EFC_ARGB1555', - 'EFC_ARGB16161616_10LSB', 'EFC_ARGB16161616_10MSB', - 'EFC_ARGB16161616_12LSB', 'EFC_ARGB16161616_12MSB', - 'EFC_ARGB16161616_FLOAT', 'EFC_ARGB16161616_SNORM', - 'EFC_ARGB16161616_UNORM', 'EFC_ARGB2101010', 'EFC_ARGB4444', - 'EFC_ARGB8888', 'EFC_AYCrCb16161616_10LSB', - 'EFC_AYCrCb16161616_10MSB', 'EFC_AYCrCb16161616_12LSB', - 'EFC_AYCrCb16161616_12MSB', 'EFC_AYCrCb8888', 'EFC_BGR101111_FIX', - 'EFC_BGR101111_FLOAT', 'EFC_BGR565', - 'EFC_CbYCrY10101010_422_PACKED', 'EFC_CbYCrY12121212_422_PACKED', - 'EFC_CbYCrY8888_422_PACKED', 'EFC_CrYCbA1010102', - 'EFC_CrYCbA16161616_10LSB', 'EFC_CrYCbA16161616_10MSB', - 'EFC_CrYCbA16161616_12LSB', 'EFC_CrYCbA16161616_12MSB', - 'EFC_CrYCbA8888', 'EFC_CrYCbY10101010_422_PACKED', - 'EFC_CrYCbY12121212_422_PACKED', 'EFC_CrYCbY8888_422_PACKED', - 'EFC_MONO_10LSB', 'EFC_MONO_10MSB', 'EFC_MONO_12LSB', - 'EFC_MONO_12MSB', 'EFC_MONO_16', 'EFC_MONO_8', - 'EFC_RGB111110_FIX', 'EFC_RGB111110_FLOAT', 'EFC_RGB565', - 'EFC_RGBA1010102', 'EFC_RGBA16161616_10LSB', - 'EFC_RGBA16161616_10MSB', 'EFC_RGBA16161616_12LSB', - 'EFC_RGBA16161616_12MSB', 'EFC_RGBA16161616_FLOAT', - 'EFC_RGBA16161616_SNORM', 'EFC_RGBA16161616_UNORM', - 'EFC_RGBA4444', 'EFC_RGBA5551', 'EFC_RGBA8888', - 'EFC_SURFACE_PIXEL_FORMAT', 'EFC_Y10_CbCr1010_420_PLANAR', - 'EFC_Y10_CrCb1010_420_PLANAR', 'EFC_Y12_CbCr1212_420_PLANAR', - 'EFC_Y12_CrCb1212_420_PLANAR', 'EFC_Y8_CbCr88_420_PLANAR', - 'EFC_Y8_CrCb88_420_PLANAR', 'EFC_YCbYCr10101010_422_PACKED', - 'EFC_YCbYCr12121212_422_PACKED', 'EFC_YCbYCr8888_422_PACKED', - 'EFC_YCrCbA16161616_10LSB', 'EFC_YCrCbA16161616_10MSB', - 'EFC_YCrCbA16161616_12LSB', 'EFC_YCrCbA16161616_12MSB', - 'EFC_YCrCbA8888', 'EFC_YCrYCb10101010_422_PACKED', - 'EFC_YCrYCb12121212_422_PACKED', 'EFC_YCrYCb8888_422_PACKED', - 'ENABLE', 'ENABLE_AMCLK0', 'ENABLE_AMCLK1', 'ENABLE_CLOCK', - 'ENABLE_DEBUG', 'ENABLE_ENUM', 'ENABLE_ENUM_DISABLED', - 'ENABLE_ENUM_ENABLED', 'ENABLE_JITTER_REMOVAL', - 'ENABLE_MEM_PWR_CTRL', 'ENABLE_NGG_PIPELINE', - 'ENABLE_PIPELINE_NOT_USED', 'ENABLE_PWL', 'ENABLE_TF0_OPT', - 'ENABLE_TF1_OPT', 'ENABLE_THE_FEATURE', 'ENABLE_THE_FUNC_CLOCK', - 'ENABLE_THE_INTERRUPT', 'ENABLE_THE_REFCLK', 'END_OF_PIPE_IB_END', - 'END_OF_PIPE_INCR_DE', 'END_OF_ROW_MODE', 'ENUM_DCN_ACTIVE', - 'ENUM_DCN_NOT_ACTIVE', 'ENUM_DIO_DCN_ACTIVE_STATUS', - 'ENUM_DPG_BIT_DEPTH', 'ENUM_DPG_BIT_DEPTH_10BPC', - 'ENUM_DPG_BIT_DEPTH_12BPC', 'ENUM_DPG_BIT_DEPTH_6BPC', - 'ENUM_DPG_BIT_DEPTH_8BPC', 'ENUM_DPG_DISABLE', - 'ENUM_DPG_DYNAMIC_RANGE', 'ENUM_DPG_DYNAMIC_RANGE_CEA', - 'ENUM_DPG_DYNAMIC_RANGE_VESA', 'ENUM_DPG_EN', 'ENUM_DPG_ENABLE', - 'ENUM_DPG_FIELD_POLARITY', - 'ENUM_DPG_FIELD_POLARITY_TOP_EVEN_BOTTOM_ODD', - 'ENUM_DPG_FIELD_POLARITY_TOP_ODD_BOTTOM_EVEN', 'ENUM_DPG_MODE', - 'ENUM_DPG_MODE_HORIZONTAL_BAR', 'ENUM_DPG_MODE_RGB_COLOUR_BLOCK', - 'ENUM_DPG_MODE_RGB_DUAL_RAMP', 'ENUM_DPG_MODE_RGB_SINGLE_RAMP', - 'ENUM_DPG_MODE_RGB_XR_BIAS', 'ENUM_DPG_MODE_VERTICAL_BAR', - 'ENUM_DPG_MODE_YCBCR_601_COLOUR_BLOCK', - 'ENUM_DPG_MODE_YCBCR_709_COLOUR_BLOCK', - 'ENUM_DP_DPHY_SYM32_CRC_END_EVENT', - 'ENUM_DP_DPHY_SYM32_CRC_START_EVENT', - 'ENUM_DP_DPHY_SYM32_CRC_TAP_SOURCE', - 'ENUM_DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS', - 'ENUM_DP_DPHY_SYM32_ENABLE', 'ENUM_DP_DPHY_SYM32_MODE', - 'ENUM_DP_DPHY_SYM32_NUM_LANES', 'ENUM_DP_DPHY_SYM32_OUTPUT_MODE', - 'ENUM_DP_DPHY_SYM32_RATE_UPDATE_PENDING', - 'ENUM_DP_DPHY_SYM32_RESET', 'ENUM_DP_DPHY_SYM32_RESET_STATUS', - 'ENUM_DP_DPHY_SYM32_SAT_UPDATE', - 'ENUM_DP_DPHY_SYM32_SAT_UPDATE_PENDING', - 'ENUM_DP_DPHY_SYM32_SCHEDULER_STATUS', - 'ENUM_DP_DPHY_SYM32_STATUS', - 'ENUM_DP_DPHY_SYM32_STREAM_OVR_ENABLE', - 'ENUM_DP_DPHY_SYM32_STREAM_OVR_TYPE', - 'ENUM_DP_DPHY_SYM32_TP_PRBS_SEL', 'ENUM_DP_DPHY_SYM32_TP_SELECT', - 'ENUM_DP_SYM32_ENC_AUDIO_MUTE', - 'ENUM_DP_SYM32_ENC_CONTINUOUS_MODE', - 'ENUM_DP_SYM32_ENC_CRC_VALID', - 'ENUM_DP_SYM32_ENC_DP_COMPONENT_DEPTH', - 'ENUM_DP_SYM32_ENC_ENABLE', - 'ENUM_DP_SYM32_ENC_GSP_DEADLINE_MISSED', - 'ENUM_DP_SYM32_ENC_GSP_ONE_SHOT_TRIGGER_POSITION', - 'ENUM_DP_SYM32_ENC_GSP_PAYLOAD_SIZE', - 'ENUM_DP_SYM32_ENC_GSP_TRIGGER_PENDING', - 'ENUM_DP_SYM32_ENC_MEM_PWR_FORCE_ENUM', - 'ENUM_DP_SYM32_ENC_OVERFLOW_STATUS', 'ENUM_DP_SYM32_ENC_PENDING', - 'ENUM_DP_SYM32_ENC_PIXEL_ENCODING', - 'ENUM_DP_SYM32_ENC_PIXEL_ENCODING_TYPE', - 'ENUM_DP_SYM32_ENC_POWER_STATE_ENUM', 'ENUM_DP_SYM32_ENC_RESET', - 'ENUM_DP_SYM32_ENC_SDP_PRIORITY', - 'ENUM_DP_SYM32_ENC_SOF_REFERENCE', - 'ENUM_DP_SYM32_ENC_VID_STREAM_DEFER', 'ENUM_NUM_SIMD_PER_CU', - 'EVENT_STATE_CHANGE', 'EXOKAY', 'EXPANSION_MODE', - 'EXPANSION_MODE_CONSERVATIVE', 'EXPANSION_MODE_OPTIMAL', - 'EXPANSION_MODE_ZERO', 'EXPORT_ANY_Z', 'EXPORT_GREATER_THAN_Z', - 'EXPORT_LESS_THAN_Z', 'EXPORT_RESERVED', 'FAULT_FAIL', - 'FAULT_ONE', 'FAULT_PASS', 'FAULT_ZERO', 'FC_EYE_SELECTION_ENUM', - 'FC_EYE_SELECTION_LEFT_EYE', 'FC_EYE_SELECTION_RIGHT_EYE', - 'FC_EYE_SELECTION_STEREO_DIS', 'FC_FRAME_CAPTURE_RATE_ENUM', - 'FC_FRAME_CAPTURE_RATE_FULL', 'FC_FRAME_CAPTURE_RATE_HALF', - 'FC_FRAME_CAPTURE_RATE_QUARTER', 'FC_FRAME_CAPTURE_RATE_THIRD', - 'FC_STEREO_EYE_POLARITY_ENUM', 'FC_STEREO_EYE_POLARITY_LEFT', - 'FC_STEREO_EYE_POLARITY_RIGHT', 'FEC_ACTIVE_STATUS', 'FIX_S2_13', - 'FIX_S3_12', 'FLIP_ANY_FRAME', 'FLIP_LEFT_EYE', 'FLIP_RATE', - 'FLIP_RATE_0', 'FLIP_RATE_1', 'FLIP_RATE_2', 'FLIP_RATE_3', - 'FLIP_RATE_4', 'FLIP_RATE_5', 'FLIP_RATE_6', 'FLIP_RATE_7', - 'FLIP_RIGHT_EYE', 'FLUSH_AND_INV_CB_DATA_TS', - 'FLUSH_AND_INV_CB_META', 'FLUSH_AND_INV_CB_PIXEL_DATA', - 'FLUSH_AND_INV_DB_DATA_TS', 'FLUSH_AND_INV_DB_META', - 'FLUSH_CONTROL_FLUSH_NOT_STARTED', 'FLUSH_CONTROL_FLUSH_STARTED', - 'FLUSH_DFSM', 'FLUSH_ES_OUTPUT', 'FLUSH_HS_OUTPUT', 'FLUSH_SX_TS', - 'FMTMEM_DISABLE_MEM_PWR_CTRL', 'FMTMEM_ENABLE_MEM_PWR_CTRL', - 'FMTMEM_FORCE_DEEP_SLEEP_REQUEST', - 'FMTMEM_FORCE_LIGHT_SLEEP_REQUEST', - 'FMTMEM_FORCE_SHUT_DOWN_REQUEST', 'FMTMEM_NO_FORCE_REQUEST', - 'FMTMEM_PWR_DIS_CTRL', 'FMTMEM_PWR_FORCE_CTRL', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Ei', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Fi', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Gi', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_RESERVED', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_A', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_B', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_C', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_D', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_E', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_F', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_G', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_RESERVED', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_18BPP', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_24BPP', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_30BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_18BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_24BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_30BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL2', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL4', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_18BPP', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_24BPP', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_30BPP', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_ROUNDING', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_TRUNCATION', - 'FMT_CLAMP_CNTL_COLOR_FORMAT', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_10BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_12BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_6BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_8BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_PROGRAMMABLE', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED1', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED2', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED3', - 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS', - 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_DISABLE', - 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_ENABLE', - 'FMT_CONTROL_PIXEL_ENCODING', - 'FMT_CONTROL_PIXEL_ENCODING_RESERVED', - 'FMT_CONTROL_PIXEL_ENCODING_RGB444_OR_YCBCR444', - 'FMT_CONTROL_PIXEL_ENCODING_YCBCR420', - 'FMT_CONTROL_PIXEL_ENCODING_YCBCR422', - 'FMT_CONTROL_SUBSAMPLING_MODE', - 'FMT_CONTROL_SUBSAMPLING_MODE_AVERAGE', - 'FMT_CONTROL_SUBSAMPLING_MODE_DROP', - 'FMT_CONTROL_SUBSAMPLING_MOME_3_TAP', - 'FMT_CONTROL_SUBSAMPLING_MOME_RESERVED', - 'FMT_CONTROL_SUBSAMPLING_ORDER', - 'FMT_CONTROL_SUBSAMPLING_ORDER_CB_BEFORE_CR', - 'FMT_CONTROL_SUBSAMPLING_ORDER_CR_BEFORE_CB', - 'FMT_DEBUG_CNTL_COLOR_SELECT', 'FMT_DEBUG_CNTL_COLOR_SELECT_BLUE', - 'FMT_DEBUG_CNTL_COLOR_SELECT_GREEN', - 'FMT_DEBUG_CNTL_COLOR_SELECT_RED1', - 'FMT_DEBUG_CNTL_COLOR_SELECT_RED2', 'FMT_DYNAMIC_EXP_MODE', - 'FMT_DYNAMIC_EXP_MODE_10to12', 'FMT_DYNAMIC_EXP_MODE_8to12', - 'FMT_FRAME_RANDOM_ENABLE_CONTROL', - 'FMT_FRAME_RANDOM_ENABLE_RESET_EACH_FRAME', - 'FMT_FRAME_RANDOM_ENABLE_RESET_ONCE', 'FMT_POWER_STATE_ENUM', - 'FMT_POWER_STATE_ENUM_DS', 'FMT_POWER_STATE_ENUM_LS', - 'FMT_POWER_STATE_ENUM_ON', 'FMT_POWER_STATE_ENUM_SD', - 'FMT_RGB_RANDOM_ENABLE_CONTROL', - 'FMT_RGB_RANDOM_ENABLE_CONTROL_DISABLE', - 'FMT_RGB_RANDOM_ENABLE_CONTROL_ENABLE', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_1', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_2', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_CONTROL', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_NO_SWAP', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_RESERVED', - 'FMT_SPATIAL_DITHER_MODE', 'FMT_SPATIAL_DITHER_MODE_0', - 'FMT_SPATIAL_DITHER_MODE_1', 'FMT_SPATIAL_DITHER_MODE_2', - 'FMT_SPATIAL_DITHER_MODE_3', 'FMT_STEREOSYNC_OVERRIDE_CONTROL', - 'FMT_STEREOSYNC_OVERRIDE_CONTROL_0', - 'FMT_STEREOSYNC_OVERRIDE_CONTROL_1', - 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0', - 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_BGR', - 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_RGB', 'FORCE_00', - 'FORCE_BINNING_ON', 'FORCE_DEEP_SLEEP_REQUEST', 'FORCE_DISABLE', - 'FORCE_DISABLE_CLOCK', 'FORCE_EARLY_Z', 'FORCE_ENABLE', - 'FORCE_FF', 'FORCE_LATE_Z', 'FORCE_LIGHT_SLEEP_REQ', - 'FORCE_LIGHT_SLEEP_REQUEST', 'FORCE_OFF', - 'FORCE_ONE_ROW_FOR_FRAME', 'FORCE_ONE_ROW_FOR_FRAME_0', - 'FORCE_ONE_ROW_FOR_FRAME_1', 'FORCE_OPT_AUTO', - 'FORCE_OPT_DISABLE', 'FORCE_OPT_ENABLE_IF_SRC_ARGB_0', - 'FORCE_OPT_ENABLE_IF_SRC_ARGB_1', 'FORCE_OPT_ENABLE_IF_SRC_A_0', - 'FORCE_OPT_ENABLE_IF_SRC_A_1', 'FORCE_OPT_ENABLE_IF_SRC_RGB_0', - 'FORCE_OPT_ENABLE_IF_SRC_RGB_1', 'FORCE_RESERVED', 'FORCE_RE_Z', - 'FORCE_SENT', 'FORCE_SHUT_DOWN_REQUEST', 'FORCE_SUMM_BOTH', - 'FORCE_SUMM_MAXZ', 'FORCE_SUMM_MINZ', 'FORCE_SUMM_OFF', - 'FORCE_THE_CLOCK_DISABLED', 'FORMAT_CROSSBAR', - 'FORMAT_CROSSBAR_B', 'FORMAT_CROSSBAR_G', 'FORMAT_CROSSBAR_R', - 'FRAG_ALWAYS', 'FRAG_EQUAL', 'FRAG_GEQUAL', 'FRAG_GREATER', - 'FRAG_LEQUAL', 'FRAG_LESS', 'FRAG_NEVER', 'FRAG_NOTEQUAL', - 'ForceControl', 'GATCL1RequestType', 'GATCL1_TYPE_BYPASS', - 'GATCL1_TYPE_NORMAL', 'GATCL1_TYPE_SHOOTDOWN', 'GCRPerfSel', - 'GCR_PERF_SEL_ALL_REQ', - 'GCR_PERF_SEL_CLK_FOR_ALL_OUTSTANDING_REQ', - 'GCR_PERF_SEL_CLK_FOR_PHY_OUTSTANDING_REQ', - 'GCR_PERF_SEL_CLK_FOR_VIRT_OUTSTANDING_REQ', - 'GCR_PERF_SEL_CPC_ALL_REQ', 'GCR_PERF_SEL_CPC_GL1_ALL_REQ', - 'GCR_PERF_SEL_CPC_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPC_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPC_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPC_GL1_RANGE_REQ', - 'GCR_PERF_SEL_CPC_GL1_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_CPC_GL2_ALL_REQ', - 'GCR_PERF_SEL_CPC_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPC_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPC_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPC_GL2_RANGE_REQ', 'GCR_PERF_SEL_CPC_METADATA_REQ', - 'GCR_PERF_SEL_CPC_SQC_DATA_REQ', 'GCR_PERF_SEL_CPC_SQC_INST_REQ', - 'GCR_PERF_SEL_CPC_TCP_REQ', 'GCR_PERF_SEL_CPF_ALL_REQ', - 'GCR_PERF_SEL_CPF_GL1_ALL_REQ', - 'GCR_PERF_SEL_CPF_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPF_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPF_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPF_GL1_RANGE_REQ', - 'GCR_PERF_SEL_CPF_GL1_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_CPF_GL2_ALL_REQ', - 'GCR_PERF_SEL_CPF_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPF_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPF_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPF_GL2_RANGE_REQ', 'GCR_PERF_SEL_CPF_METADATA_REQ', - 'GCR_PERF_SEL_CPF_SQC_DATA_REQ', 'GCR_PERF_SEL_CPF_SQC_INST_REQ', - 'GCR_PERF_SEL_CPF_TCP_REQ', 'GCR_PERF_SEL_CPG_ALL_REQ', - 'GCR_PERF_SEL_CPG_GL1_ALL_REQ', - 'GCR_PERF_SEL_CPG_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPG_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPG_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPG_GL1_RANGE_REQ', - 'GCR_PERF_SEL_CPG_GL1_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_CPG_GL2_ALL_REQ', - 'GCR_PERF_SEL_CPG_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPG_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPG_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPG_GL2_RANGE_REQ', 'GCR_PERF_SEL_CPG_METADATA_REQ', - 'GCR_PERF_SEL_CPG_SQC_DATA_REQ', 'GCR_PERF_SEL_CPG_SQC_INST_REQ', - 'GCR_PERF_SEL_CPG_TCP_REQ', 'GCR_PERF_SEL_NONE', - 'GCR_PERF_SEL_PHY_REQ', 'GCR_PERF_SEL_PIO_ALL_REQ', - 'GCR_PERF_SEL_PIO_GL1_ALL_REQ', - 'GCR_PERF_SEL_PIO_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_PIO_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_PIO_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_PIO_GL1_RANGE_REQ', - 'GCR_PERF_SEL_PIO_GL1_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_PIO_GL2_ALL_REQ', - 'GCR_PERF_SEL_PIO_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_PIO_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_PIO_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_PIO_GL2_RANGE_REQ', 'GCR_PERF_SEL_PIO_METADATA_REQ', - 'GCR_PERF_SEL_PIO_SQC_DATA_REQ', 'GCR_PERF_SEL_PIO_SQC_INST_REQ', - 'GCR_PERF_SEL_PIO_TCP_REQ', - 'GCR_PERF_SEL_PMM_ABIT_FLUSH_INTERRUPT', - 'GCR_PERF_SEL_PMM_ABIT_FLUSH_ONGOING', - 'GCR_PERF_SEL_PMM_ABIT_FORCE_FLUSH', - 'GCR_PERF_SEL_PMM_ABIT_NUM_FLUSH', - 'GCR_PERF_SEL_PMM_ABIT_TIMER_FLUSH', - 'GCR_PERF_SEL_PMM_ALOG_INTERRUPT', - 'GCR_PERF_SEL_PMM_INTERRUPT_READY_TO_SEND', - 'GCR_PERF_SEL_PMM_MAM_FLUSH_REQ', - 'GCR_PERF_SEL_PMM_MAM_FLUSH_RESP', - 'GCR_PERF_SEL_PMM_NUM_INTERRUPT', 'GCR_PERF_SEL_PMM_RLC_CGCG_REQ', - 'GCR_PERF_SEL_PMM_RLC_CGCG_RESP', - 'GCR_PERF_SEL_PMM_STALL_PMM_IH_CREDITS', - 'GCR_PERF_SEL_PM_ALL_REQ', 'GCR_PERF_SEL_PM_GL1_ALL_REQ', - 'GCR_PERF_SEL_PM_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_PM_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_PM_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_PM_GL1_RANGE_REQ', - 'GCR_PERF_SEL_PM_GL1_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_PM_GL2_ALL_REQ', - 'GCR_PERF_SEL_PM_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_PM_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_PM_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_PM_GL2_RANGE_REQ', 'GCR_PERF_SEL_PM_METADATA_REQ', - 'GCR_PERF_SEL_PM_SQC_DATA_REQ', 'GCR_PERF_SEL_PM_SQC_INST_REQ', - 'GCR_PERF_SEL_PM_TCP_REQ', 'GCR_PERF_SEL_RLC_ALL_REQ', - 'GCR_PERF_SEL_RLC_GL1_ALL_REQ', - 'GCR_PERF_SEL_RLC_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_RLC_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_RLC_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_RLC_GL1_RANGE_REQ', - 'GCR_PERF_SEL_RLC_GL1_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_RLC_GL2_ALL_REQ', - 'GCR_PERF_SEL_RLC_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_RLC_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_RLC_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_RLC_GL2_RANGE_REQ', 'GCR_PERF_SEL_RLC_METADATA_REQ', - 'GCR_PERF_SEL_RLC_SQC_DATA_REQ', 'GCR_PERF_SEL_RLC_SQC_INST_REQ', - 'GCR_PERF_SEL_RLC_TCP_REQ', 'GCR_PERF_SEL_SDMA0_ALL_REQ', - 'GCR_PERF_SEL_SDMA0_GL1_ALL_REQ', - 'GCR_PERF_SEL_SDMA0_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL1_RANGE_REQ', - 'GCR_PERF_SEL_SDMA0_GL1_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_ALL_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_RANGE_REQ', - 'GCR_PERF_SEL_SDMA0_METADATA_REQ', - 'GCR_PERF_SEL_SDMA0_SQC_DATA_REQ', - 'GCR_PERF_SEL_SDMA0_SQC_INST_REQ', 'GCR_PERF_SEL_SDMA0_TCP_REQ', - 'GCR_PERF_SEL_SDMA1_ALL_REQ', 'GCR_PERF_SEL_SDMA1_GL1_ALL_REQ', - 'GCR_PERF_SEL_SDMA1_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL1_RANGE_REQ', - 'GCR_PERF_SEL_SDMA1_GL1_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_ALL_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_RANGE_REQ', - 'GCR_PERF_SEL_SDMA1_METADATA_REQ', - 'GCR_PERF_SEL_SDMA1_SQC_DATA_REQ', - 'GCR_PERF_SEL_SDMA1_SQC_INST_REQ', 'GCR_PERF_SEL_SDMA1_TCP_REQ', - 'GCR_PERF_SEL_TLB_SHOOTDOWN_HEAVY_REQ', - 'GCR_PERF_SEL_TLB_SHOOTDOWN_LIGHT_REQ', - 'GCR_PERF_SEL_UTCL2_FILTERED_RET', - 'GCR_PERF_SEL_UTCL2_INFLIGHT_REQ', - 'GCR_PERF_SEL_UTCL2_OUT_OF_CREDIT_EVENT', - 'GCR_PERF_SEL_UTCL2_REQ', 'GCR_PERF_SEL_UTCL2_RET', - 'GCR_PERF_SEL_VIRT_REQ', 'GCUTCL2_PERF_SEL', - 'GCUTCL2_PERF_SEL_EVENT_0', 'GCUTCL2_PERF_SEL_EVENT_1', - 'GCUTCL2_PERF_SEL_EVENT_10', 'GCUTCL2_PERF_SEL_EVENT_11', - 'GCUTCL2_PERF_SEL_EVENT_12', 'GCUTCL2_PERF_SEL_EVENT_13', - 'GCUTCL2_PERF_SEL_EVENT_14', 'GCUTCL2_PERF_SEL_EVENT_15', - 'GCUTCL2_PERF_SEL_EVENT_16', 'GCUTCL2_PERF_SEL_EVENT_17', - 'GCUTCL2_PERF_SEL_EVENT_18', 'GCUTCL2_PERF_SEL_EVENT_19', - 'GCUTCL2_PERF_SEL_EVENT_2', 'GCUTCL2_PERF_SEL_EVENT_20', - 'GCUTCL2_PERF_SEL_EVENT_21', 'GCUTCL2_PERF_SEL_EVENT_22', - 'GCUTCL2_PERF_SEL_EVENT_23', 'GCUTCL2_PERF_SEL_EVENT_24', - 'GCUTCL2_PERF_SEL_EVENT_25', 'GCUTCL2_PERF_SEL_EVENT_26', - 'GCUTCL2_PERF_SEL_EVENT_27', 'GCUTCL2_PERF_SEL_EVENT_28', - 'GCUTCL2_PERF_SEL_EVENT_29', 'GCUTCL2_PERF_SEL_EVENT_3', - 'GCUTCL2_PERF_SEL_EVENT_30', 'GCUTCL2_PERF_SEL_EVENT_31', - 'GCUTCL2_PERF_SEL_EVENT_32', 'GCUTCL2_PERF_SEL_EVENT_33', - 'GCUTCL2_PERF_SEL_EVENT_34', 'GCUTCL2_PERF_SEL_EVENT_35', - 'GCUTCL2_PERF_SEL_EVENT_36', 'GCUTCL2_PERF_SEL_EVENT_4', - 'GCUTCL2_PERF_SEL_EVENT_5', 'GCUTCL2_PERF_SEL_EVENT_6', - 'GCUTCL2_PERF_SEL_EVENT_7', 'GCUTCL2_PERF_SEL_EVENT_8', - 'GCUTCL2_PERF_SEL_EVENT_9', 'GCVML2_PERF_SEL', - 'GCVML2_PERF_SEL_EVENT_0', 'GCVML2_PERF_SEL_EVENT_1', - 'GCVML2_PERF_SEL_EVENT_10', 'GCVML2_PERF_SEL_EVENT_11', - 'GCVML2_PERF_SEL_EVENT_12', 'GCVML2_PERF_SEL_EVENT_13', - 'GCVML2_PERF_SEL_EVENT_14', 'GCVML2_PERF_SEL_EVENT_15', - 'GCVML2_PERF_SEL_EVENT_16', 'GCVML2_PERF_SEL_EVENT_17', - 'GCVML2_PERF_SEL_EVENT_18', 'GCVML2_PERF_SEL_EVENT_19', - 'GCVML2_PERF_SEL_EVENT_2', 'GCVML2_PERF_SEL_EVENT_20', - 'GCVML2_PERF_SEL_EVENT_21', 'GCVML2_PERF_SEL_EVENT_22', - 'GCVML2_PERF_SEL_EVENT_23', 'GCVML2_PERF_SEL_EVENT_24', - 'GCVML2_PERF_SEL_EVENT_25', 'GCVML2_PERF_SEL_EVENT_26', - 'GCVML2_PERF_SEL_EVENT_27', 'GCVML2_PERF_SEL_EVENT_28', - 'GCVML2_PERF_SEL_EVENT_29', 'GCVML2_PERF_SEL_EVENT_3', - 'GCVML2_PERF_SEL_EVENT_30', 'GCVML2_PERF_SEL_EVENT_31', - 'GCVML2_PERF_SEL_EVENT_32', 'GCVML2_PERF_SEL_EVENT_33', - 'GCVML2_PERF_SEL_EVENT_34', 'GCVML2_PERF_SEL_EVENT_35', - 'GCVML2_PERF_SEL_EVENT_36', 'GCVML2_PERF_SEL_EVENT_37', - 'GCVML2_PERF_SEL_EVENT_38', 'GCVML2_PERF_SEL_EVENT_39', - 'GCVML2_PERF_SEL_EVENT_4', 'GCVML2_PERF_SEL_EVENT_40', - 'GCVML2_PERF_SEL_EVENT_41', 'GCVML2_PERF_SEL_EVENT_42', - 'GCVML2_PERF_SEL_EVENT_43', 'GCVML2_PERF_SEL_EVENT_44', - 'GCVML2_PERF_SEL_EVENT_45', 'GCVML2_PERF_SEL_EVENT_46', - 'GCVML2_PERF_SEL_EVENT_47', 'GCVML2_PERF_SEL_EVENT_48', - 'GCVML2_PERF_SEL_EVENT_49', 'GCVML2_PERF_SEL_EVENT_5', - 'GCVML2_PERF_SEL_EVENT_50', 'GCVML2_PERF_SEL_EVENT_51', - 'GCVML2_PERF_SEL_EVENT_52', 'GCVML2_PERF_SEL_EVENT_53', - 'GCVML2_PERF_SEL_EVENT_54', 'GCVML2_PERF_SEL_EVENT_55', - 'GCVML2_PERF_SEL_EVENT_56', 'GCVML2_PERF_SEL_EVENT_57', - 'GCVML2_PERF_SEL_EVENT_58', 'GCVML2_PERF_SEL_EVENT_59', - 'GCVML2_PERF_SEL_EVENT_6', 'GCVML2_PERF_SEL_EVENT_60', - 'GCVML2_PERF_SEL_EVENT_61', 'GCVML2_PERF_SEL_EVENT_62', - 'GCVML2_PERF_SEL_EVENT_63', 'GCVML2_PERF_SEL_EVENT_64', - 'GCVML2_PERF_SEL_EVENT_65', 'GCVML2_PERF_SEL_EVENT_66', - 'GCVML2_PERF_SEL_EVENT_67', 'GCVML2_PERF_SEL_EVENT_68', - 'GCVML2_PERF_SEL_EVENT_69', 'GCVML2_PERF_SEL_EVENT_7', - 'GCVML2_PERF_SEL_EVENT_70', 'GCVML2_PERF_SEL_EVENT_71', - 'GCVML2_PERF_SEL_EVENT_72', 'GCVML2_PERF_SEL_EVENT_73', - 'GCVML2_PERF_SEL_EVENT_74', 'GCVML2_PERF_SEL_EVENT_75', - 'GCVML2_PERF_SEL_EVENT_76', 'GCVML2_PERF_SEL_EVENT_77', - 'GCVML2_PERF_SEL_EVENT_78', 'GCVML2_PERF_SEL_EVENT_79', - 'GCVML2_PERF_SEL_EVENT_8', 'GCVML2_PERF_SEL_EVENT_80', - 'GCVML2_PERF_SEL_EVENT_81', 'GCVML2_PERF_SEL_EVENT_82', - 'GCVML2_PERF_SEL_EVENT_83', 'GCVML2_PERF_SEL_EVENT_84', - 'GCVML2_PERF_SEL_EVENT_85', 'GCVML2_PERF_SEL_EVENT_86', - 'GCVML2_PERF_SEL_EVENT_87', 'GCVML2_PERF_SEL_EVENT_88', - 'GCVML2_PERF_SEL_EVENT_89', 'GCVML2_PERF_SEL_EVENT_9', - 'GCVML2_PERF_SEL_EVENT_90', 'GCVML2_SPM_PERF_SEL', - 'GCVML2_SPM_PERF_SEL_EVENT_0', 'GCVML2_SPM_PERF_SEL_EVENT_1', - 'GCVML2_SPM_PERF_SEL_EVENT_10', 'GCVML2_SPM_PERF_SEL_EVENT_11', - 'GCVML2_SPM_PERF_SEL_EVENT_12', 'GCVML2_SPM_PERF_SEL_EVENT_13', - 'GCVML2_SPM_PERF_SEL_EVENT_14', 'GCVML2_SPM_PERF_SEL_EVENT_15', - 'GCVML2_SPM_PERF_SEL_EVENT_16', 'GCVML2_SPM_PERF_SEL_EVENT_17', - 'GCVML2_SPM_PERF_SEL_EVENT_18', 'GCVML2_SPM_PERF_SEL_EVENT_19', - 'GCVML2_SPM_PERF_SEL_EVENT_2', 'GCVML2_SPM_PERF_SEL_EVENT_20', - 'GCVML2_SPM_PERF_SEL_EVENT_21', 'GCVML2_SPM_PERF_SEL_EVENT_22', - 'GCVML2_SPM_PERF_SEL_EVENT_23', 'GCVML2_SPM_PERF_SEL_EVENT_24', - 'GCVML2_SPM_PERF_SEL_EVENT_25', 'GCVML2_SPM_PERF_SEL_EVENT_26', - 'GCVML2_SPM_PERF_SEL_EVENT_27', 'GCVML2_SPM_PERF_SEL_EVENT_28', - 'GCVML2_SPM_PERF_SEL_EVENT_29', 'GCVML2_SPM_PERF_SEL_EVENT_3', - 'GCVML2_SPM_PERF_SEL_EVENT_30', 'GCVML2_SPM_PERF_SEL_EVENT_31', - 'GCVML2_SPM_PERF_SEL_EVENT_32', 'GCVML2_SPM_PERF_SEL_EVENT_33', - 'GCVML2_SPM_PERF_SEL_EVENT_34', 'GCVML2_SPM_PERF_SEL_EVENT_35', - 'GCVML2_SPM_PERF_SEL_EVENT_36', 'GCVML2_SPM_PERF_SEL_EVENT_37', - 'GCVML2_SPM_PERF_SEL_EVENT_38', 'GCVML2_SPM_PERF_SEL_EVENT_39', - 'GCVML2_SPM_PERF_SEL_EVENT_4', 'GCVML2_SPM_PERF_SEL_EVENT_40', - 'GCVML2_SPM_PERF_SEL_EVENT_41', 'GCVML2_SPM_PERF_SEL_EVENT_42', - 'GCVML2_SPM_PERF_SEL_EVENT_43', 'GCVML2_SPM_PERF_SEL_EVENT_44', - 'GCVML2_SPM_PERF_SEL_EVENT_45', 'GCVML2_SPM_PERF_SEL_EVENT_46', - 'GCVML2_SPM_PERF_SEL_EVENT_47', 'GCVML2_SPM_PERF_SEL_EVENT_48', - 'GCVML2_SPM_PERF_SEL_EVENT_49', 'GCVML2_SPM_PERF_SEL_EVENT_5', - 'GCVML2_SPM_PERF_SEL_EVENT_50', 'GCVML2_SPM_PERF_SEL_EVENT_51', - 'GCVML2_SPM_PERF_SEL_EVENT_52', 'GCVML2_SPM_PERF_SEL_EVENT_53', - 'GCVML2_SPM_PERF_SEL_EVENT_54', 'GCVML2_SPM_PERF_SEL_EVENT_55', - 'GCVML2_SPM_PERF_SEL_EVENT_56', 'GCVML2_SPM_PERF_SEL_EVENT_57', - 'GCVML2_SPM_PERF_SEL_EVENT_58', 'GCVML2_SPM_PERF_SEL_EVENT_59', - 'GCVML2_SPM_PERF_SEL_EVENT_6', 'GCVML2_SPM_PERF_SEL_EVENT_60', - 'GCVML2_SPM_PERF_SEL_EVENT_61', 'GCVML2_SPM_PERF_SEL_EVENT_62', - 'GCVML2_SPM_PERF_SEL_EVENT_63', 'GCVML2_SPM_PERF_SEL_EVENT_64', - 'GCVML2_SPM_PERF_SEL_EVENT_65', 'GCVML2_SPM_PERF_SEL_EVENT_66', - 'GCVML2_SPM_PERF_SEL_EVENT_67', 'GCVML2_SPM_PERF_SEL_EVENT_68', - 'GCVML2_SPM_PERF_SEL_EVENT_69', 'GCVML2_SPM_PERF_SEL_EVENT_7', - 'GCVML2_SPM_PERF_SEL_EVENT_70', 'GCVML2_SPM_PERF_SEL_EVENT_71', - 'GCVML2_SPM_PERF_SEL_EVENT_72', 'GCVML2_SPM_PERF_SEL_EVENT_73', - 'GCVML2_SPM_PERF_SEL_EVENT_74', 'GCVML2_SPM_PERF_SEL_EVENT_75', - 'GCVML2_SPM_PERF_SEL_EVENT_76', 'GCVML2_SPM_PERF_SEL_EVENT_77', - 'GCVML2_SPM_PERF_SEL_EVENT_78', 'GCVML2_SPM_PERF_SEL_EVENT_79', - 'GCVML2_SPM_PERF_SEL_EVENT_8', 'GCVML2_SPM_PERF_SEL_EVENT_80', - 'GCVML2_SPM_PERF_SEL_EVENT_81', 'GCVML2_SPM_PERF_SEL_EVENT_82', - 'GCVML2_SPM_PERF_SEL_EVENT_83', 'GCVML2_SPM_PERF_SEL_EVENT_84', - 'GCVML2_SPM_PERF_SEL_EVENT_85', 'GCVML2_SPM_PERF_SEL_EVENT_86', - 'GCVML2_SPM_PERF_SEL_EVENT_87', 'GCVML2_SPM_PERF_SEL_EVENT_88', - 'GCVML2_SPM_PERF_SEL_EVENT_89', 'GCVML2_SPM_PERF_SEL_EVENT_9', - 'GCVML2_SPM_PERF_SEL_EVENT_90', 'GC_EA_CPWD_PERFCOUNT_SEL', - 'GC_EA_CPWD_PERF_SEL_ALWAYS_COUNT', - 'GC_EA_CPWD_PERF_SEL_MAM_AFLUSH_COMPLETED', - 'GC_EA_CPWD_PERF_SEL_MAM_AFLUSH_INTERRUPT', - 'GC_EA_CPWD_PERF_SEL_MAM_AFLUSH_INTERRUPT_STALLED', - 'GC_EA_CPWD_PERF_SEL_MAM_AFLUSH_ONGOING', - 'GC_EA_CPWD_PERF_SEL_MAM_ARAM_FA_EVICT', - 'GC_EA_CPWD_PERF_SEL_MAM_ARAM_FA_HIT', - 'GC_EA_CPWD_PERF_SEL_MAM_ARAM_FA_HIT_EVICT', - 'GC_EA_CPWD_PERF_SEL_MAM_ARAM_FA_LRU_EVICT', - 'GC_EA_CPWD_PERF_SEL_MAM_ARAM_REQ_VLD', - 'GC_EA_CPWD_PERF_SEL_MAM_DBIT_FA_EVICT', - 'GC_EA_CPWD_PERF_SEL_MAM_DBIT_FA_HIT', - 'GC_EA_CPWD_PERF_SEL_MAM_DBIT_FA_HIT_EVICT', - 'GC_EA_CPWD_PERF_SEL_MAM_DBIT_FA_LRU_EVICT', - 'GC_EA_CPWD_PERF_SEL_MAM_DBIT_REQ_VLD', - 'GC_EA_CPWD_PERF_SEL_MAM_DQRY_ONGOING', - 'GC_EA_CPWD_PERF_SEL_MAM_FLUSH_REQ', - 'GC_EA_CPWD_PERF_SEL_MAM_FLUSH_RESP', - 'GC_EA_CPWD_PERF_SEL_MAM_NUM_DQRY', 'GC_EA_CPWD_PERF_SEL_PRB_REQ', - 'GC_EA_CPWD_PERF_SEL_RDRAM_CHAINED_REQ_PER_BURSTS_LENGTH', - 'GC_EA_CPWD_PERF_SEL_RDRAM_CHAINED_REQ_PER_CLIGRP', - 'GC_EA_CPWD_PERF_SEL_RDRAM_LATENCY_END0', - 'GC_EA_CPWD_PERF_SEL_RDRAM_LATENCY_END1', - 'GC_EA_CPWD_PERF_SEL_RDRAM_LATENCY_START0', - 'GC_EA_CPWD_PERF_SEL_RDRAM_LATENCY_START1', - 'GC_EA_CPWD_PERF_SEL_RDRAM_NUM_BANKS_VLD', - 'GC_EA_CPWD_PERF_SEL_RDRAM_REQ_PER_CLIGRP', - 'GC_EA_CPWD_PERF_SEL_RDRAM_SIZE_REQ', - 'GC_EA_CPWD_PERF_SEL_RGMI_CHAINED_REQ_PER_BURSTS_LENGTH', - 'GC_EA_CPWD_PERF_SEL_RGMI_CHAINED_REQ_PER_CLIGR', - 'GC_EA_CPWD_PERF_SEL_RGMI_LATENCY_END0', - 'GC_EA_CPWD_PERF_SEL_RGMI_LATENCY_END1', - 'GC_EA_CPWD_PERF_SEL_RGMI_LATENCY_START0', - 'GC_EA_CPWD_PERF_SEL_RGMI_LATENCY_START1', - 'GC_EA_CPWD_PERF_SEL_RGMI_NUM_BANKS_VLD', - 'GC_EA_CPWD_PERF_SEL_RGMI_REQ_PER_CLIGRP', - 'GC_EA_CPWD_PERF_SEL_RGMI_SIZE_REQ', - 'GC_EA_CPWD_PERF_SEL_RIO_GRP0_SIZE_REQ', - 'GC_EA_CPWD_PERF_SEL_RIO_GRP1_SIZE_REQ', - 'GC_EA_CPWD_PERF_SEL_RIO_GRP2_SIZE_REQ', - 'GC_EA_CPWD_PERF_SEL_RIO_GRP3_SIZE_REQ', - 'GC_EA_CPWD_PERF_SEL_RIO_LATENCY_END0', - 'GC_EA_CPWD_PERF_SEL_RIO_LATENCY_END1', - 'GC_EA_CPWD_PERF_SEL_RIO_LATENCY_START0', - 'GC_EA_CPWD_PERF_SEL_RIO_LATENCY_START1', - 'GC_EA_CPWD_PERF_SEL_RIO_REQ_PER_CLIGRP', - 'GC_EA_CPWD_PERF_SEL_RIO_SIZE_REQ', - 'GC_EA_CPWD_PERF_SEL_RRET_VLD', 'GC_EA_CPWD_PERF_SEL_SARB_BUSY', - 'GC_EA_CPWD_PERF_SEL_SARB_COHERENT_SIZE_REQ', - 'GC_EA_CPWD_PERF_SEL_SARB_DRAM_REQ_PER_VC', - 'GC_EA_CPWD_PERF_SEL_SARB_DRAM_RW_TURN_AROUND', - 'GC_EA_CPWD_PERF_SEL_SARB_DRAM_SIZE_REQ', - 'GC_EA_CPWD_PERF_SEL_SARB_GMI_REQ_PER_VC', - 'GC_EA_CPWD_PERF_SEL_SARB_GMI_RW_TURN_AROUND', - 'GC_EA_CPWD_PERF_SEL_SARB_GMI_SIZE_REQ', - 'GC_EA_CPWD_PERF_SEL_SARB_IDLE', - 'GC_EA_CPWD_PERF_SEL_SARB_IO_REQ_PER_VC', - 'GC_EA_CPWD_PERF_SEL_SARB_IO_SIZE_REQ', - 'GC_EA_CPWD_PERF_SEL_SARB_LATENCY_END0', - 'GC_EA_CPWD_PERF_SEL_SARB_LATENCY_END1', - 'GC_EA_CPWD_PERF_SEL_SARB_LATENCY_START0', - 'GC_EA_CPWD_PERF_SEL_SARB_LATENCY_START1', - 'GC_EA_CPWD_PERF_SEL_SARB_REQ_PER_VC', - 'GC_EA_CPWD_PERF_SEL_SARB_SIZE_REQ', - 'GC_EA_CPWD_PERF_SEL_SARB_STALLED', - 'GC_EA_CPWD_PERF_SEL_SARB_STARVING', - 'GC_EA_CPWD_PERF_SEL_WDRAM_CHAINED_REQ_PER_BURSTS_LENGTH', - 'GC_EA_CPWD_PERF_SEL_WDRAM_CHAINED_REQ_PER_CLIGRP', - 'GC_EA_CPWD_PERF_SEL_WDRAM_LATENCY_END0', - 'GC_EA_CPWD_PERF_SEL_WDRAM_LATENCY_END1', - 'GC_EA_CPWD_PERF_SEL_WDRAM_LATENCY_START0', - 'GC_EA_CPWD_PERF_SEL_WDRAM_LATENCY_START1', - 'GC_EA_CPWD_PERF_SEL_WDRAM_NUM_BANKS_VLD', - 'GC_EA_CPWD_PERF_SEL_WDRAM_REQ_PER_CLIGRP', - 'GC_EA_CPWD_PERF_SEL_WDRAM_SIZE_REQ', - 'GC_EA_CPWD_PERF_SEL_WGMI_CHAINED_REQ_PER_BURSTS_LENGTH', - 'GC_EA_CPWD_PERF_SEL_WGMI_CHAINED_REQ_PER_CLIGRP', - 'GC_EA_CPWD_PERF_SEL_WGMI_LATENCY_END0', - 'GC_EA_CPWD_PERF_SEL_WGMI_LATENCY_END1', - 'GC_EA_CPWD_PERF_SEL_WGMI_LATENCY_START0', - 'GC_EA_CPWD_PERF_SEL_WGMI_LATENCY_START1', - 'GC_EA_CPWD_PERF_SEL_WGMI_NUM_BANKS_VLD', - 'GC_EA_CPWD_PERF_SEL_WGMI_REQ_PER_CLIGRP', - 'GC_EA_CPWD_PERF_SEL_WGMI_SIZE_REQ', - 'GC_EA_CPWD_PERF_SEL_WIO_CHAINED_REQ_PER_CLIGRP', - 'GC_EA_CPWD_PERF_SEL_WIO_GRP0_SIZE_REQ', - 'GC_EA_CPWD_PERF_SEL_WIO_GRP1_SIZE_REQ', - 'GC_EA_CPWD_PERF_SEL_WIO_GRP2_SIZE_REQ', - 'GC_EA_CPWD_PERF_SEL_WIO_GRP3_SIZE_REQ', - 'GC_EA_CPWD_PERF_SEL_WIO_LATENCY_END0', - 'GC_EA_CPWD_PERF_SEL_WIO_LATENCY_END1', - 'GC_EA_CPWD_PERF_SEL_WIO_LATENCY_START0', - 'GC_EA_CPWD_PERF_SEL_WIO_LATENCY_START1', - 'GC_EA_CPWD_PERF_SEL_WIO_REQ_PER_CLIGRP', - 'GC_EA_CPWD_PERF_SEL_WIO_SIZE_REQ', - 'GC_EA_CPWD_PERF_SEL_WRET_VLD', 'GC_EA_SE_PERFCOUNT_SEL', - 'GC_EA_SE_PERF_SEL_ALWAYS_COUNT', - 'GC_EA_SE_PERF_SEL_MAM_AFLUSH_COMPLETED', - 'GC_EA_SE_PERF_SEL_MAM_AFLUSH_INTERRUPT', - 'GC_EA_SE_PERF_SEL_MAM_AFLUSH_INTERRUPT_STALLED', - 'GC_EA_SE_PERF_SEL_MAM_AFLUSH_ONGOING', - 'GC_EA_SE_PERF_SEL_MAM_ARAM_FA_EVICT', - 'GC_EA_SE_PERF_SEL_MAM_ARAM_FA_HIT', - 'GC_EA_SE_PERF_SEL_MAM_ARAM_FA_HIT_EVICT', - 'GC_EA_SE_PERF_SEL_MAM_ARAM_FA_LRU_EVICT', - 'GC_EA_SE_PERF_SEL_MAM_ARAM_REQ_VLD', - 'GC_EA_SE_PERF_SEL_MAM_DBIT_FA_EVICT', - 'GC_EA_SE_PERF_SEL_MAM_DBIT_FA_HIT', - 'GC_EA_SE_PERF_SEL_MAM_DBIT_FA_HIT_EVICT', - 'GC_EA_SE_PERF_SEL_MAM_DBIT_FA_LRU_EVICT', - 'GC_EA_SE_PERF_SEL_MAM_DBIT_REQ_VLD', - 'GC_EA_SE_PERF_SEL_MAM_DQRY_ONGOING', - 'GC_EA_SE_PERF_SEL_MAM_FLUSH_REQ', - 'GC_EA_SE_PERF_SEL_MAM_FLUSH_RESP', - 'GC_EA_SE_PERF_SEL_MAM_NUM_DQRY', 'GC_EA_SE_PERF_SEL_PRB_REQ', - 'GC_EA_SE_PERF_SEL_RDRAM_CHAINED_REQ_PER_BURSTS_LENGTH', - 'GC_EA_SE_PERF_SEL_RDRAM_CHAINED_REQ_PER_CLIGRP', - 'GC_EA_SE_PERF_SEL_RDRAM_LATENCY_END0', - 'GC_EA_SE_PERF_SEL_RDRAM_LATENCY_END1', - 'GC_EA_SE_PERF_SEL_RDRAM_LATENCY_START0', - 'GC_EA_SE_PERF_SEL_RDRAM_LATENCY_START1', - 'GC_EA_SE_PERF_SEL_RDRAM_NUM_BANKS_VLD', - 'GC_EA_SE_PERF_SEL_RDRAM_REQ_PER_CLIGRP', - 'GC_EA_SE_PERF_SEL_RDRAM_SIZE_REQ', - 'GC_EA_SE_PERF_SEL_RGMI_CHAINED_REQ_PER_BURSTS_LENGTH', - 'GC_EA_SE_PERF_SEL_RGMI_CHAINED_REQ_PER_CLIGR', - 'GC_EA_SE_PERF_SEL_RGMI_LATENCY_END0', - 'GC_EA_SE_PERF_SEL_RGMI_LATENCY_END1', - 'GC_EA_SE_PERF_SEL_RGMI_LATENCY_START0', - 'GC_EA_SE_PERF_SEL_RGMI_LATENCY_START1', - 'GC_EA_SE_PERF_SEL_RGMI_NUM_BANKS_VLD', - 'GC_EA_SE_PERF_SEL_RGMI_REQ_PER_CLIGRP', - 'GC_EA_SE_PERF_SEL_RGMI_SIZE_REQ', - 'GC_EA_SE_PERF_SEL_RIO_GRP0_SIZE_REQ', - 'GC_EA_SE_PERF_SEL_RIO_GRP1_SIZE_REQ', - 'GC_EA_SE_PERF_SEL_RIO_GRP2_SIZE_REQ', - 'GC_EA_SE_PERF_SEL_RIO_GRP3_SIZE_REQ', - 'GC_EA_SE_PERF_SEL_RIO_LATENCY_END0', - 'GC_EA_SE_PERF_SEL_RIO_LATENCY_END1', - 'GC_EA_SE_PERF_SEL_RIO_LATENCY_START0', - 'GC_EA_SE_PERF_SEL_RIO_LATENCY_START1', - 'GC_EA_SE_PERF_SEL_RIO_REQ_PER_CLIGRP', - 'GC_EA_SE_PERF_SEL_RIO_SIZE_REQ', 'GC_EA_SE_PERF_SEL_RRET_VLD', - 'GC_EA_SE_PERF_SEL_SARB_BUSY', - 'GC_EA_SE_PERF_SEL_SARB_COHERENT_SIZE_REQ', - 'GC_EA_SE_PERF_SEL_SARB_DRAM_REQ_PER_VC', - 'GC_EA_SE_PERF_SEL_SARB_DRAM_RW_TURN_AROUND', - 'GC_EA_SE_PERF_SEL_SARB_DRAM_SIZE_REQ', - 'GC_EA_SE_PERF_SEL_SARB_GMI_REQ_PER_VC', - 'GC_EA_SE_PERF_SEL_SARB_GMI_RW_TURN_AROUND', - 'GC_EA_SE_PERF_SEL_SARB_GMI_SIZE_REQ', - 'GC_EA_SE_PERF_SEL_SARB_IDLE', - 'GC_EA_SE_PERF_SEL_SARB_IO_REQ_PER_VC', - 'GC_EA_SE_PERF_SEL_SARB_IO_SIZE_REQ', - 'GC_EA_SE_PERF_SEL_SARB_LATENCY_END0', - 'GC_EA_SE_PERF_SEL_SARB_LATENCY_END1', - 'GC_EA_SE_PERF_SEL_SARB_LATENCY_START0', - 'GC_EA_SE_PERF_SEL_SARB_LATENCY_START1', - 'GC_EA_SE_PERF_SEL_SARB_REQ_PER_VC', - 'GC_EA_SE_PERF_SEL_SARB_SIZE_REQ', - 'GC_EA_SE_PERF_SEL_SARB_STALLED', - 'GC_EA_SE_PERF_SEL_SARB_STARVING', - 'GC_EA_SE_PERF_SEL_WDRAM_CHAINED_REQ_PER_BURSTS_LENGTH', - 'GC_EA_SE_PERF_SEL_WDRAM_CHAINED_REQ_PER_CLIGRP', - 'GC_EA_SE_PERF_SEL_WDRAM_LATENCY_END0', - 'GC_EA_SE_PERF_SEL_WDRAM_LATENCY_END1', - 'GC_EA_SE_PERF_SEL_WDRAM_LATENCY_START0', - 'GC_EA_SE_PERF_SEL_WDRAM_LATENCY_START1', - 'GC_EA_SE_PERF_SEL_WDRAM_NUM_BANKS_VLD', - 'GC_EA_SE_PERF_SEL_WDRAM_REQ_PER_CLIGRP', - 'GC_EA_SE_PERF_SEL_WDRAM_SIZE_REQ', - 'GC_EA_SE_PERF_SEL_WGMI_CHAINED_REQ_PER_BURSTS_LENGTH', - 'GC_EA_SE_PERF_SEL_WGMI_CHAINED_REQ_PER_CLIGRP', - 'GC_EA_SE_PERF_SEL_WGMI_LATENCY_END0', - 'GC_EA_SE_PERF_SEL_WGMI_LATENCY_END1', - 'GC_EA_SE_PERF_SEL_WGMI_LATENCY_START0', - 'GC_EA_SE_PERF_SEL_WGMI_LATENCY_START1', - 'GC_EA_SE_PERF_SEL_WGMI_NUM_BANKS_VLD', - 'GC_EA_SE_PERF_SEL_WGMI_REQ_PER_CLIGRP', - 'GC_EA_SE_PERF_SEL_WGMI_SIZE_REQ', - 'GC_EA_SE_PERF_SEL_WIO_CHAINED_REQ_PER_CLIGRP', - 'GC_EA_SE_PERF_SEL_WIO_GRP0_SIZE_REQ', - 'GC_EA_SE_PERF_SEL_WIO_GRP1_SIZE_REQ', - 'GC_EA_SE_PERF_SEL_WIO_GRP2_SIZE_REQ', - 'GC_EA_SE_PERF_SEL_WIO_GRP3_SIZE_REQ', - 'GC_EA_SE_PERF_SEL_WIO_LATENCY_END0', - 'GC_EA_SE_PERF_SEL_WIO_LATENCY_END1', - 'GC_EA_SE_PERF_SEL_WIO_LATENCY_START0', - 'GC_EA_SE_PERF_SEL_WIO_LATENCY_START1', - 'GC_EA_SE_PERF_SEL_WIO_REQ_PER_CLIGRP', - 'GC_EA_SE_PERF_SEL_WIO_SIZE_REQ', 'GC_EA_SE_PERF_SEL_WRET_VLD', - 'GE1_PERFCOUNT_SELECT', 'GE2_DIST_PERFCOUNT_SELECT', - 'GE2_SE_PERFCOUNT_SELECT', - 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE', - 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET_RESERVED', - 'GENERIC_STEREOSYNC_SEL', 'GENERIC_STEREOSYNC_SEL_D1', - 'GENERIC_STEREOSYNC_SEL_D2', 'GENERIC_STEREOSYNC_SEL_D3', - 'GENERIC_STEREOSYNC_SEL_D4', 'GENERIC_STEREOSYNC_SEL_RESERVED', - 'GL0V_CACHE_POLICIES', 'GL0V_CACHE_POLICY_HIT_EVICT', - 'GL0V_CACHE_POLICY_HIT_LRU', 'GL0V_CACHE_POLICY_MISS_EVICT', - 'GL0V_CACHE_POLICY_MISS_INVAL', 'GL0V_CACHE_POLICY_MISS_LRU', - 'GL1A_PERF_SEL', 'GL1A_PERF_SEL_ARB_REQUESTS', - 'GL1A_PERF_SEL_BURST_COUNT_GL1C0', - 'GL1A_PERF_SEL_BURST_COUNT_GL1C1', - 'GL1A_PERF_SEL_BURST_COUNT_GL1C2', - 'GL1A_PERF_SEL_BURST_COUNT_GL1C3', 'GL1A_PERF_SEL_BUSY', - 'GL1A_PERF_SEL_CYCLE', 'GL1A_PERF_SEL_REQUEST_GL1C0', - 'GL1A_PERF_SEL_REQUEST_GL1C1', 'GL1A_PERF_SEL_REQUEST_GL1C2', - 'GL1A_PERF_SEL_REQUEST_GL1C3', 'GL1A_PERF_SEL_REQ_INFLIGHT_LEVEL', - 'GL1A_PERF_SEL_STALL_GL1C0', 'GL1A_PERF_SEL_STALL_GL1C1', - 'GL1A_PERF_SEL_STALL_GL1C2', 'GL1A_PERF_SEL_STALL_GL1C3', - 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C0', - 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C1', - 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C2', - 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C3', - 'GL1A_PERF_SEL_WDS_32B_GL1C0', 'GL1A_PERF_SEL_WDS_32B_GL1C1', - 'GL1A_PERF_SEL_WDS_32B_GL1C2', 'GL1A_PERF_SEL_WDS_32B_GL1C3', - 'GL1C_PERF_SEL', 'GL1C_PERF_SEL_ARB_RET_LEVEL', - 'GL1C_PERF_SEL_BUSY', 'GL1C_PERF_SEL_CLIENT_UTCL0_INFLIGHT', - 'GL1C_PERF_SEL_CYCLE', 'GL1C_PERF_SEL_GL2_REQ_READ_LATENCY', - 'GL1C_PERF_SEL_GL2_REQ_WRITE_LATENCY', 'GL1C_PERF_SEL_REQ', - 'GL1C_PERF_SEL_REQ_ATOMIC_WITHOUT_RET', - 'GL1C_PERF_SEL_REQ_ATOMIC_WITH_RET', 'GL1C_PERF_SEL_REQ_CLIENT0', - 'GL1C_PERF_SEL_REQ_CLIENT1', 'GL1C_PERF_SEL_REQ_CLIENT10', - 'GL1C_PERF_SEL_REQ_CLIENT11', 'GL1C_PERF_SEL_REQ_CLIENT12', - 'GL1C_PERF_SEL_REQ_CLIENT13', 'GL1C_PERF_SEL_REQ_CLIENT14', - 'GL1C_PERF_SEL_REQ_CLIENT15', 'GL1C_PERF_SEL_REQ_CLIENT16', - 'GL1C_PERF_SEL_REQ_CLIENT17', 'GL1C_PERF_SEL_REQ_CLIENT18', - 'GL1C_PERF_SEL_REQ_CLIENT19', 'GL1C_PERF_SEL_REQ_CLIENT2', - 'GL1C_PERF_SEL_REQ_CLIENT20', 'GL1C_PERF_SEL_REQ_CLIENT21', - 'GL1C_PERF_SEL_REQ_CLIENT22', 'GL1C_PERF_SEL_REQ_CLIENT23', - 'GL1C_PERF_SEL_REQ_CLIENT24', 'GL1C_PERF_SEL_REQ_CLIENT25', - 'GL1C_PERF_SEL_REQ_CLIENT26', 'GL1C_PERF_SEL_REQ_CLIENT27', - 'GL1C_PERF_SEL_REQ_CLIENT3', 'GL1C_PERF_SEL_REQ_CLIENT4', - 'GL1C_PERF_SEL_REQ_CLIENT5', 'GL1C_PERF_SEL_REQ_CLIENT6', - 'GL1C_PERF_SEL_REQ_CLIENT7', 'GL1C_PERF_SEL_REQ_CLIENT8', - 'GL1C_PERF_SEL_REQ_CLIENT9', 'GL1C_PERF_SEL_REQ_NOP_ACK', - 'GL1C_PERF_SEL_REQ_NOP_RTN0', 'GL1C_PERF_SEL_REQ_READ', - 'GL1C_PERF_SEL_REQ_READ_128B', 'GL1C_PERF_SEL_REQ_READ_32B', - 'GL1C_PERF_SEL_REQ_READ_64B', 'GL1C_PERF_SEL_REQ_WRITE', - 'GL1C_PERF_SEL_REQ_WRITE_32B', 'GL1C_PERF_SEL_REQ_WRITE_64B', - 'GL1C_PERF_SEL_STALL_BUFFER_FULL', 'GL1C_PERF_SEL_STALL_GL2_GL1', - 'GL1C_PERF_SEL_STALL_VM', 'GL1C_PERF_SEL_STARVE', - 'GL1C_PERF_SEL_UTCL0_GPA3_REQUEST', - 'GL1C_PERF_SEL_UTCL0_INTERNAL_RETRY_REQ', - 'GL1C_PERF_SEL_UTCL0_LFIFO_FULL', - 'GL1C_PERF_SEL_UTCL0_MISS_UNDER_MISS', - 'GL1C_PERF_SEL_UTCL0_PERMISSION_MISS', - 'GL1C_PERF_SEL_UTCL0_REQUEST', - 'GL1C_PERF_SEL_UTCL0_STALL_INFLIGHT_MAX', - 'GL1C_PERF_SEL_UTCL0_STALL_LFIFO_NOT_RES', - 'GL1C_PERF_SEL_UTCL0_STALL_LRU_INFLIGHT', - 'GL1C_PERF_SEL_UTCL0_STALL_MISSFIFO_FULL', - 'GL1C_PERF_SEL_UTCL0_STALL_MULTI_MISS', - 'GL1C_PERF_SEL_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS', - 'GL1C_PERF_SEL_UTCL0_TRANSLATION_HIT', - 'GL1C_PERF_SEL_UTCL0_TRANSLATION_MISS', - 'GL1C_PERF_SEL_UTCL0_UTCL1_INFLIGHT', - 'GL1C_PERF_SEL_UTCL0_UTCL1_PERM_FAULT', - 'GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_NO_RETRY_FAULT', - 'GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_PRT_FAULT', - 'GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_RETRY_FAULT', 'GL1XA_PERF_SEL', - 'GL1XA_PERF_SEL_ARB_REQUESTS', - 'GL1XA_PERF_SEL_BURST_COUNT_GL1XC0', - 'GL1XA_PERF_SEL_BURST_COUNT_GL1XC1', - 'GL1XA_PERF_SEL_BURST_COUNT_GL1XC2', - 'GL1XA_PERF_SEL_BURST_COUNT_GL1XC3', 'GL1XA_PERF_SEL_BUSY', - 'GL1XA_PERF_SEL_CYCLE', 'GL1XA_PERF_SEL_REQUEST_GL1XC0', - 'GL1XA_PERF_SEL_REQUEST_GL1XC1', 'GL1XA_PERF_SEL_REQUEST_GL1XC2', - 'GL1XA_PERF_SEL_REQUEST_GL1XC3', - 'GL1XA_PERF_SEL_REQ_INFLIGHT_LEVEL', - 'GL1XA_PERF_SEL_STALL_GL1XC0', 'GL1XA_PERF_SEL_STALL_GL1XC1', - 'GL1XA_PERF_SEL_STALL_GL1XC2', 'GL1XA_PERF_SEL_STALL_GL1XC3', - 'GL1XA_PERF_SEL_STALL_RET_CONFLICT_GL1XC0', - 'GL1XA_PERF_SEL_STALL_RET_CONFLICT_GL1XC1', - 'GL1XA_PERF_SEL_STALL_RET_CONFLICT_GL1XC2', - 'GL1XA_PERF_SEL_STALL_RET_CONFLICT_GL1XC3', - 'GL1XA_PERF_SEL_WDS_32B_GL1XC0', 'GL1XA_PERF_SEL_WDS_32B_GL1XC1', - 'GL1XA_PERF_SEL_WDS_32B_GL1XC2', 'GL1XA_PERF_SEL_WDS_32B_GL1XC3', - 'GL1XC_PERF_SEL', 'GL1XC_PERF_SEL_ARB_RET_LEVEL', - 'GL1XC_PERF_SEL_BUSY', 'GL1XC_PERF_SEL_CLIENT_UTCL0_INFLIGHT', - 'GL1XC_PERF_SEL_CYCLE', 'GL1XC_PERF_SEL_GL2_REQ_READ_LATENCY', - 'GL1XC_PERF_SEL_GL2_REQ_WRITE_LATENCY', 'GL1XC_PERF_SEL_REQ', - 'GL1XC_PERF_SEL_REQ_ATOMIC_WITHOUT_RET', - 'GL1XC_PERF_SEL_REQ_ATOMIC_WITH_RET', - 'GL1XC_PERF_SEL_REQ_CLIENT0', 'GL1XC_PERF_SEL_REQ_CLIENT1', - 'GL1XC_PERF_SEL_REQ_CLIENT10', 'GL1XC_PERF_SEL_REQ_CLIENT11', - 'GL1XC_PERF_SEL_REQ_CLIENT12', 'GL1XC_PERF_SEL_REQ_CLIENT13', - 'GL1XC_PERF_SEL_REQ_CLIENT14', 'GL1XC_PERF_SEL_REQ_CLIENT15', - 'GL1XC_PERF_SEL_REQ_CLIENT16', 'GL1XC_PERF_SEL_REQ_CLIENT17', - 'GL1XC_PERF_SEL_REQ_CLIENT18', 'GL1XC_PERF_SEL_REQ_CLIENT19', - 'GL1XC_PERF_SEL_REQ_CLIENT2', 'GL1XC_PERF_SEL_REQ_CLIENT20', - 'GL1XC_PERF_SEL_REQ_CLIENT21', 'GL1XC_PERF_SEL_REQ_CLIENT22', - 'GL1XC_PERF_SEL_REQ_CLIENT23', 'GL1XC_PERF_SEL_REQ_CLIENT24', - 'GL1XC_PERF_SEL_REQ_CLIENT25', 'GL1XC_PERF_SEL_REQ_CLIENT26', - 'GL1XC_PERF_SEL_REQ_CLIENT27', 'GL1XC_PERF_SEL_REQ_CLIENT3', - 'GL1XC_PERF_SEL_REQ_CLIENT4', 'GL1XC_PERF_SEL_REQ_CLIENT5', - 'GL1XC_PERF_SEL_REQ_CLIENT6', 'GL1XC_PERF_SEL_REQ_CLIENT7', - 'GL1XC_PERF_SEL_REQ_CLIENT8', 'GL1XC_PERF_SEL_REQ_CLIENT9', - 'GL1XC_PERF_SEL_REQ_NOP_ACK', 'GL1XC_PERF_SEL_REQ_NOP_RTN0', - 'GL1XC_PERF_SEL_REQ_READ', 'GL1XC_PERF_SEL_REQ_READ_128B', - 'GL1XC_PERF_SEL_REQ_READ_32B', 'GL1XC_PERF_SEL_REQ_READ_64B', - 'GL1XC_PERF_SEL_REQ_WRITE', 'GL1XC_PERF_SEL_REQ_WRITE_32B', - 'GL1XC_PERF_SEL_REQ_WRITE_64B', - 'GL1XC_PERF_SEL_STALL_BUFFER_FULL', - 'GL1XC_PERF_SEL_STALL_GL2_GL1', 'GL1XC_PERF_SEL_STALL_VM', - 'GL1XC_PERF_SEL_STARVE', 'GL1XC_PERF_SEL_UTCL0_GPA3_REQUEST', - 'GL1XC_PERF_SEL_UTCL0_INTERNAL_RETRY_REQ', - 'GL1XC_PERF_SEL_UTCL0_LFIFO_FULL', - 'GL1XC_PERF_SEL_UTCL0_MISS_UNDER_MISS', - 'GL1XC_PERF_SEL_UTCL0_PERMISSION_MISS', - 'GL1XC_PERF_SEL_UTCL0_REQUEST', - 'GL1XC_PERF_SEL_UTCL0_STALL_INFLIGHT_MAX', - 'GL1XC_PERF_SEL_UTCL0_STALL_LFIFO_NOT_RES', - 'GL1XC_PERF_SEL_UTCL0_STALL_LRU_INFLIGHT', - 'GL1XC_PERF_SEL_UTCL0_STALL_MISSFIFO_FULL', - 'GL1XC_PERF_SEL_UTCL0_STALL_MULTI_MISS', - 'GL1XC_PERF_SEL_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS', - 'GL1XC_PERF_SEL_UTCL0_TRANSLATION_HIT', - 'GL1XC_PERF_SEL_UTCL0_TRANSLATION_MISS', - 'GL1XC_PERF_SEL_UTCL0_UTCL1_INFLIGHT', - 'GL1XC_PERF_SEL_UTCL0_UTCL1_PERM_FAULT', - 'GL1XC_PERF_SEL_UTCL0_UTCL1_XNACK_NO_RETRY_FAULT', - 'GL1XC_PERF_SEL_UTCL0_UTCL1_XNACK_PRT_FAULT', - 'GL1XC_PERF_SEL_UTCL0_UTCL1_XNACK_RETRY_FAULT', - 'GL1_CACHE_POLICIES', 'GL1_CACHE_POLICY_HIT_EVICT', - 'GL1_CACHE_POLICY_HIT_LRU', 'GL1_CACHE_POLICY_MISS_EVICT', - 'GL1_CACHE_POLICY_MISS_LRU', 'GL1_CACHE_STORE_POLICIES', - 'GL1_CACHE_STORE_POLICY_BYPASS', 'GL2A_PERF_SEL', - 'GL2A_PERF_SEL_BUSY', 'GL2A_PERF_SEL_CYCLE', 'GL2A_PERF_SEL_NONE', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT0', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT1', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT10', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT11', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT12', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT13', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT14', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT15', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT2', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT3', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT4', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT5', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT6', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT7', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT8', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT9', - 'GL2A_PERF_SEL_REQ_BURST_GL2C0', 'GL2A_PERF_SEL_REQ_BURST_GL2C1', - 'GL2A_PERF_SEL_REQ_BURST_GL2C2', 'GL2A_PERF_SEL_REQ_BURST_GL2C3', - 'GL2A_PERF_SEL_REQ_BURST_GL2C4', 'GL2A_PERF_SEL_REQ_BURST_GL2C5', - 'GL2A_PERF_SEL_REQ_BURST_GL2C6', 'GL2A_PERF_SEL_REQ_BURST_GL2C7', - 'GL2A_PERF_SEL_REQ_GL2C0', 'GL2A_PERF_SEL_REQ_GL2C1', - 'GL2A_PERF_SEL_REQ_GL2C2', 'GL2A_PERF_SEL_REQ_GL2C3', - 'GL2A_PERF_SEL_REQ_GL2C4', 'GL2A_PERF_SEL_REQ_GL2C5', - 'GL2A_PERF_SEL_REQ_GL2C6', 'GL2A_PERF_SEL_REQ_GL2C7', - 'GL2A_PERF_SEL_REQ_STALL_GL2C0', 'GL2A_PERF_SEL_REQ_STALL_GL2C1', - 'GL2A_PERF_SEL_REQ_STALL_GL2C2', 'GL2A_PERF_SEL_REQ_STALL_GL2C3', - 'GL2A_PERF_SEL_REQ_STALL_GL2C4', 'GL2A_PERF_SEL_REQ_STALL_GL2C5', - 'GL2A_PERF_SEL_REQ_STALL_GL2C6', 'GL2A_PERF_SEL_REQ_STALL_GL2C7', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT0', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT1', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT10', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT11', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT12', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT13', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT14', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT15', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT2', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT3', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT4', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT5', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT6', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT7', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT8', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT9', - 'GL2A_PERF_SEL_RTN_CLIENT0', 'GL2A_PERF_SEL_RTN_CLIENT1', - 'GL2A_PERF_SEL_RTN_CLIENT10', 'GL2A_PERF_SEL_RTN_CLIENT11', - 'GL2A_PERF_SEL_RTN_CLIENT12', 'GL2A_PERF_SEL_RTN_CLIENT13', - 'GL2A_PERF_SEL_RTN_CLIENT14', 'GL2A_PERF_SEL_RTN_CLIENT15', - 'GL2A_PERF_SEL_RTN_CLIENT2', 'GL2A_PERF_SEL_RTN_CLIENT3', - 'GL2A_PERF_SEL_RTN_CLIENT4', 'GL2A_PERF_SEL_RTN_CLIENT5', - 'GL2A_PERF_SEL_RTN_CLIENT6', 'GL2A_PERF_SEL_RTN_CLIENT7', - 'GL2A_PERF_SEL_RTN_CLIENT8', 'GL2A_PERF_SEL_RTN_CLIENT9', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT0', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT1', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT10', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT11', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT12', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT13', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT14', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT15', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT2', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT3', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT4', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT5', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT6', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT7', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT8', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT9', - 'GL2A_PERF_SEL_RTN_STALL_GL2C0', 'GL2A_PERF_SEL_RTN_STALL_GL2C1', - 'GL2A_PERF_SEL_RTN_STALL_GL2C2', 'GL2A_PERF_SEL_RTN_STALL_GL2C3', - 'GL2A_PERF_SEL_RTN_STALL_GL2C4', 'GL2A_PERF_SEL_RTN_STALL_GL2C5', - 'GL2A_PERF_SEL_RTN_STALL_GL2C6', 'GL2A_PERF_SEL_RTN_STALL_GL2C7', - 'GL2C_PERF_SEL', 'GL2C_PERF_SEL_ALL_GCR_INV_EVICT', - 'GL2C_PERF_SEL_ALL_GCR_INV_VOL_EVICT', - 'GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_CYCLE', - 'GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_VOL_CYCLE', - 'GL2C_PERF_SEL_ALL_GCR_WB_WRITEBACK', - 'GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_START', - 'GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_VOL_START', - 'GL2C_PERF_SEL_ATOMIC', 'GL2C_PERF_SEL_BUBBLE', - 'GL2C_PERF_SEL_BUSY', 'GL2C_PERF_SEL_BYPASS_REQ', - 'GL2C_PERF_SEL_CLIENT0_REQ', 'GL2C_PERF_SEL_CLIENT10_REQ', - 'GL2C_PERF_SEL_CLIENT11_REQ', 'GL2C_PERF_SEL_CLIENT12_REQ', - 'GL2C_PERF_SEL_CLIENT13_REQ', 'GL2C_PERF_SEL_CLIENT14_REQ', - 'GL2C_PERF_SEL_CLIENT15_REQ', 'GL2C_PERF_SEL_CLIENT1_REQ', - 'GL2C_PERF_SEL_CLIENT2_REQ', 'GL2C_PERF_SEL_CLIENT3_REQ', - 'GL2C_PERF_SEL_CLIENT4_REQ', 'GL2C_PERF_SEL_CLIENT5_REQ', - 'GL2C_PERF_SEL_CLIENT6_REQ', 'GL2C_PERF_SEL_CLIENT7_REQ', - 'GL2C_PERF_SEL_CLIENT8_REQ', 'GL2C_PERF_SEL_CLIENT9_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_0_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_128_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_32_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_64_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_96_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_REQ', 'GL2C_PERF_SEL_CYCLE', - 'GL2C_PERF_SEL_C_RO_S_REQ', 'GL2C_PERF_SEL_C_RO_US_REQ', - 'GL2C_PERF_SEL_C_RW_S_REQ', 'GL2C_PERF_SEL_C_RW_US_REQ', - 'GL2C_PERF_SEL_DEWRITE_ALLOCATE_HIT', 'GL2C_PERF_SEL_EA_ATOMIC', - 'GL2C_PERF_SEL_EA_ATOMIC_LEVEL', 'GL2C_PERF_SEL_EA_OUTSTANDING', - 'GL2C_PERF_SEL_EA_RDREQ_128B', 'GL2C_PERF_SEL_EA_RDREQ_32B', - 'GL2C_PERF_SEL_EA_RDREQ_64B', 'GL2C_PERF_SEL_EA_RDREQ_96B', - 'GL2C_PERF_SEL_EA_RDREQ_DRAM', 'GL2C_PERF_SEL_EA_RDREQ_DRAM_32B', - 'GL2C_PERF_SEL_EA_RDREQ_DRAM_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_RDREQ_GMI_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_RDREQ_IO_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_RDREQ_SNOOP', 'GL2C_PERF_SEL_EA_RDREQ_SPLIT', - 'GL2C_PERF_SEL_EA_RDRET_NACK', - 'GL2C_PERF_SEL_EA_RD_COMPRESSED_32B', - 'GL2C_PERF_SEL_EA_RD_UNCACHED_32B', 'GL2C_PERF_SEL_EA_WRREQ_64B', - 'GL2C_PERF_SEL_EA_WRREQ_DRAM', 'GL2C_PERF_SEL_EA_WRREQ_DRAM_32B', - 'GL2C_PERF_SEL_EA_WRREQ_DRAM_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_WRREQ_GMI_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_WRREQ_IO_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_WRREQ_SNOOP', 'GL2C_PERF_SEL_EA_WRRET_NACK', - 'GL2C_PERF_SEL_EA_WR_UNCACHED_32B', 'GL2C_PERF_SEL_EVICT', - 'GL2C_PERF_SEL_FULLY_WRITTEN_HIT', 'GL2C_PERF_SEL_FULL_HIT', - 'GL2C_PERF_SEL_GARLIC_READ', 'GL2C_PERF_SEL_GARLIC_WRITE', - 'GL2C_PERF_SEL_GCR_ALL', 'GL2C_PERF_SEL_GCR_DISCARD', - 'GL2C_PERF_SEL_GCR_GL2_INV_ALL', - 'GL2C_PERF_SEL_GCR_GL2_INV_RANGE', 'GL2C_PERF_SEL_GCR_GL2_WB_ALL', - 'GL2C_PERF_SEL_GCR_GL2_WB_INV_RANGE', - 'GL2C_PERF_SEL_GCR_GL2_WB_RANGE', 'GL2C_PERF_SEL_GCR_INV', - 'GL2C_PERF_SEL_GCR_INVL2_VOL_CYCLE', - 'GL2C_PERF_SEL_GCR_INVL2_VOL_EVICT', - 'GL2C_PERF_SEL_GCR_INVL2_VOL_START', 'GL2C_PERF_SEL_GCR_RANGE', - 'GL2C_PERF_SEL_GCR_UNSHARED', 'GL2C_PERF_SEL_GCR_VOL', - 'GL2C_PERF_SEL_GCR_WB', 'GL2C_PERF_SEL_GCR_WBINVL2_CYCLE', - 'GL2C_PERF_SEL_GCR_WBINVL2_EVICT', - 'GL2C_PERF_SEL_GCR_WBINVL2_START', - 'GL2C_PERF_SEL_GCR_WBL2_VOL_CYCLE', - 'GL2C_PERF_SEL_GCR_WBL2_VOL_START', 'GL2C_PERF_SEL_GL2A_LEVEL', - 'GL2C_PERF_SEL_HIGH_PRIORITY_REQ', 'GL2C_PERF_SEL_HIT', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT0', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT1', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT10', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT11', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT12', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT13', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT14', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT15', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT16', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT17', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT18', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT19', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT2', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT3', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT4', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT5', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT6', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT7', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT8', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT9', 'GL2C_PERF_SEL_IB_REQ', - 'GL2C_PERF_SEL_IB_STALL', 'GL2C_PERF_SEL_IB_TAG_STALL', - 'GL2C_PERF_SEL_IO_READ', 'GL2C_PERF_SEL_IO_WRITE', - 'GL2C_PERF_SEL_LATENCY_FIFO_FULL', 'GL2C_PERF_SEL_LRU_REQ', - 'GL2C_PERF_SEL_MC_RDREQ', 'GL2C_PERF_SEL_MC_RDREQ_LEVEL', - 'GL2C_PERF_SEL_MC_WRREQ', 'GL2C_PERF_SEL_MC_WRREQ_LEVEL', - 'GL2C_PERF_SEL_MC_WRREQ_STALL', 'GL2C_PERF_SEL_METADATA_READ_REQ', - 'GL2C_PERF_SEL_MISS', 'GL2C_PERF_SEL_NOA_REQ', - 'GL2C_PERF_SEL_NONE', 'GL2C_PERF_SEL_NOP_ACK', - 'GL2C_PERF_SEL_NOP_RTN0', 'GL2C_PERF_SEL_NORMAL_EVICT', - 'GL2C_PERF_SEL_NORMAL_WRITEBACK', 'GL2C_PERF_SEL_ONION_READ', - 'GL2C_PERF_SEL_ONION_WRITE', 'GL2C_PERF_SEL_PARTIAL_32B_HIT', - 'GL2C_PERF_SEL_PARTIAL_64B_HIT', 'GL2C_PERF_SEL_PARTIAL_96B_HIT', - 'GL2C_PERF_SEL_READ', 'GL2C_PERF_SEL_READ_128_REQ', - 'GL2C_PERF_SEL_READ_32_REQ', 'GL2C_PERF_SEL_READ_64_REQ', - 'GL2C_PERF_SEL_READ_RETURN_FULL_BUBBLE', - 'GL2C_PERF_SEL_READ_RETURN_TIMEOUT', 'GL2C_PERF_SEL_REQ', - 'GL2C_PERF_SEL_REQ_TO_MISS_QUEUE', 'GL2C_PERF_SEL_RETURN_ACK', - 'GL2C_PERF_SEL_RETURN_DATA', 'GL2C_PERF_SEL_SHARED_REQ', - 'GL2C_PERF_SEL_SRC_FIFO_FULL', 'GL2C_PERF_SEL_STREAM_REQ', - 'GL2C_PERF_SEL_TAG_MISS_NOTHING_REPLACEABLE_STALL', - 'GL2C_PERF_SEL_TAG_NO_UNCACHED_WRITE_ATOMIC_ENTRIES_STALL', - 'GL2C_PERF_SEL_TAG_READ_DST_STALL', 'GL2C_PERF_SEL_TAG_STALL', - 'GL2C_PERF_SEL_TAG_UNCACHED_WRITE_ATOMIC_FIFO_FULL_STALL', - 'GL2C_PERF_SEL_TAG_WRITEBACK_FIFO_FULL_STALL', - 'GL2C_PERF_SEL_TOO_MANY_EA_WRREQS_STALL', 'GL2C_PERF_SEL_UC_REQ', - 'GL2C_PERF_SEL_UNCACHED_WRITE', 'GL2C_PERF_SEL_VOL_REQ', - 'GL2C_PERF_SEL_WRITE', 'GL2C_PERF_SEL_WRITEBACK', - 'GL2C_PERF_SEL_WRITEBACK_READ_TIMEOUT', - 'GL2C_PERF_SEL_WRITE_32_REQ', 'GL2C_PERF_SEL_WRITE_64_REQ', - 'GL2_CACHE_POLICIES', 'GL2_CACHE_POLICY_BYPASS', - 'GL2_CACHE_POLICY_LRU', 'GL2_CACHE_POLICY_NOA', - 'GL2_CACHE_POLICY_STREAM', 'GL2_NACKS', 'GL2_NACK_DATA_ERROR', - 'GL2_NACK_NO_FAULT', 'GL2_NACK_PAGE_FAULT', - 'GL2_NACK_PROTECTION_FAULT', 'GL2_OP', 'GL2_OP_ATOMIC_ADD_32', - 'GL2_OP_ATOMIC_ADD_64', 'GL2_OP_ATOMIC_ADD_RTN_32', - 'GL2_OP_ATOMIC_ADD_RTN_64', 'GL2_OP_ATOMIC_AND_32', - 'GL2_OP_ATOMIC_AND_64', 'GL2_OP_ATOMIC_AND_RTN_32', - 'GL2_OP_ATOMIC_AND_RTN_64', 'GL2_OP_ATOMIC_CLAMP_SUB_RTN_32', - 'GL2_OP_ATOMIC_CMPSWAP_32', 'GL2_OP_ATOMIC_CMPSWAP_64', - 'GL2_OP_ATOMIC_CMPSWAP_RTN_32', 'GL2_OP_ATOMIC_CMPSWAP_RTN_64', - 'GL2_OP_ATOMIC_COND_SUB_RTN_32', 'GL2_OP_ATOMIC_DEC_32', - 'GL2_OP_ATOMIC_DEC_64', 'GL2_OP_ATOMIC_DEC_RTN_32', - 'GL2_OP_ATOMIC_DEC_RTN_64', 'GL2_OP_ATOMIC_FADD_32', - 'GL2_OP_ATOMIC_FADD_FLUSH_DENORM_32', - 'GL2_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32', - 'GL2_OP_ATOMIC_FADD_RTN_32', 'GL2_OP_ATOMIC_FCMPSWAP_32', - 'GL2_OP_ATOMIC_FCMPSWAP_64', - 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32', - 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64', - 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32', - 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64', - 'GL2_OP_ATOMIC_FCMPSWAP_RTN_32', 'GL2_OP_ATOMIC_FCMPSWAP_RTN_64', - 'GL2_OP_ATOMIC_FMAX_32', 'GL2_OP_ATOMIC_FMAX_64', - 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_32', - 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_64', - 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32', - 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64', - 'GL2_OP_ATOMIC_FMAX_RTN_32', 'GL2_OP_ATOMIC_FMAX_RTN_64', - 'GL2_OP_ATOMIC_FMIN_32', 'GL2_OP_ATOMIC_FMIN_64', - 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_32', - 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_64', - 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32', - 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64', - 'GL2_OP_ATOMIC_FMIN_RTN_32', 'GL2_OP_ATOMIC_FMIN_RTN_64', - 'GL2_OP_ATOMIC_INC_32', 'GL2_OP_ATOMIC_INC_64', - 'GL2_OP_ATOMIC_INC_RTN_32', 'GL2_OP_ATOMIC_INC_RTN_64', - 'GL2_OP_ATOMIC_OR_32', 'GL2_OP_ATOMIC_OR_64', - 'GL2_OP_ATOMIC_OR_RTN_32', 'GL2_OP_ATOMIC_OR_RTN_64', - 'GL2_OP_ATOMIC_PK_ADD_BF16', 'GL2_OP_ATOMIC_PK_ADD_BF16_RTN', - 'GL2_OP_ATOMIC_PK_ADD_FP16', 'GL2_OP_ATOMIC_PK_ADD_FP16_RTN', - 'GL2_OP_ATOMIC_SMAX_32', 'GL2_OP_ATOMIC_SMAX_64', - 'GL2_OP_ATOMIC_SMAX_RTN_32', 'GL2_OP_ATOMIC_SMAX_RTN_64', - 'GL2_OP_ATOMIC_SMIN_32', 'GL2_OP_ATOMIC_SMIN_64', - 'GL2_OP_ATOMIC_SMIN_RTN_32', 'GL2_OP_ATOMIC_SMIN_RTN_64', - 'GL2_OP_ATOMIC_STORE_COND_RTN', 'GL2_OP_ATOMIC_SUB_32', - 'GL2_OP_ATOMIC_SUB_64', 'GL2_OP_ATOMIC_SUB_RTN_32', - 'GL2_OP_ATOMIC_SUB_RTN_64', 'GL2_OP_ATOMIC_SWAP_32', - 'GL2_OP_ATOMIC_SWAP_64', 'GL2_OP_ATOMIC_SWAP_RTN_32', - 'GL2_OP_ATOMIC_SWAP_RTN_64', 'GL2_OP_ATOMIC_UMAX_32', - 'GL2_OP_ATOMIC_UMAX_64', 'GL2_OP_ATOMIC_UMAX_8', - 'GL2_OP_ATOMIC_UMAX_RTN_32', 'GL2_OP_ATOMIC_UMAX_RTN_64', - 'GL2_OP_ATOMIC_UMIN_32', 'GL2_OP_ATOMIC_UMIN_64', - 'GL2_OP_ATOMIC_UMIN_8', 'GL2_OP_ATOMIC_UMIN_RTN_32', - 'GL2_OP_ATOMIC_UMIN_RTN_64', 'GL2_OP_ATOMIC_XOR_32', - 'GL2_OP_ATOMIC_XOR_64', 'GL2_OP_ATOMIC_XOR_RTN_32', - 'GL2_OP_ATOMIC_XOR_RTN_64', - 'GL2_OP_FORCE_EXISTING_DATA_TO_DECOMPRESS', 'GL2_OP_GL1_INV', - 'GL2_OP_GL2_INV', 'GL2_OP_GL2_WB', 'GL2_OP_GL2_WBINV', - 'GL2_OP_LOAD_RESERVE', 'GL2_OP_MASKS', 'GL2_OP_MASK_64', - 'GL2_OP_MASK_FLUSH_DENROM', 'GL2_OP_MASK_NO_RTN', - 'GL2_OP_NOP_ACK', 'GL2_OP_NOP_RTN0', 'GL2_OP_PROBE_FILTER', - 'GL2_OP_READ', 'GL2_OP_READ_COMPRESSION_KEY', - 'GL2_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2', 'GL2_OP_UTC_PROBE', - 'GL2_OP_WRITE', 'GL2_OP_WRITE_ZERO_SIZE', 'GLCompressionMode', - 'GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE', - 'GLOBAL_CONTROL_CONTROLLER_RESET', 'GLOBAL_CONTROL_FLUSH_CONTROL', - 'GLOBAL_STATUS_FLUSH_STATUS', - 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_ENDED', - 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_NOT_ENDED', - 'GL__CONSTANT_ALPHA', 'GL__CONSTANT_COLOR', 'GL__DST_ALPHA', - 'GL__DST_COLOR', 'GL__ONE', 'GL__ONE_MINUS_CONSTANT_ALPHA', - 'GL__ONE_MINUS_CONSTANT_COLOR', 'GL__ONE_MINUS_DST_ALPHA', - 'GL__ONE_MINUS_DST_COLOR', 'GL__ONE_MINUS_SRC_ALPHA', - 'GL__ONE_MINUS_SRC_COLOR', 'GL__SRC_ALPHA', - 'GL__SRC_ALPHA_SATURATE', 'GL__SRC_COLOR', 'GL__ZERO', - 'GRBMH_PERF_SEL', 'GRBMH_PERF_SEL_BCI_BUSY', - 'GRBMH_PERF_SEL_CB_BUSY', 'GRBMH_PERF_SEL_CB_CLEAN', - 'GRBMH_PERF_SEL_COUNT', 'GRBMH_PERF_SEL_DB_BUSY', - 'GRBMH_PERF_SEL_DB_CLEAN', 'GRBMH_PERF_SEL_EA_BUSY', - 'GRBMH_PERF_SEL_EA_LINK_BUSY', 'GRBMH_PERF_SEL_GE_BUSY', - 'GRBMH_PERF_SEL_GL1A_BUSY', 'GRBMH_PERF_SEL_GL1CC_BUSY', - 'GRBMH_PERF_SEL_GL1XCC_BUSY', 'GRBMH_PERF_SEL_GL2A_BUSY', - 'GRBMH_PERF_SEL_GL2C_BUSY', 'GRBMH_PERF_SEL_PA_BUSY', - 'GRBMH_PERF_SEL_PC_BUSY', 'GRBMH_PERF_SEL_RLC_BUSY', - 'GRBMH_PERF_SEL_SC_BUSY', 'GRBMH_PERF_SEL_SC_CLEAN', - 'GRBMH_PERF_SEL_SPI_BUSY', 'GRBMH_PERF_SEL_SX_BUSY', - 'GRBMH_PERF_SEL_TA_BUSY', 'GRBMH_PERF_SEL_TCP_BUSY', - 'GRBMH_PERF_SEL_USER_DEFINED', 'GRBMH_PERF_SEL_UTCL1_BUSY', - 'GRBM_PERF_SEL', 'GRBM_PERF_SEL_ANY_ACTIVE_F_BUSY', - 'GRBM_PERF_SEL_BCI_BUSY', 'GRBM_PERF_SEL_CB_BUSY', - 'GRBM_PERF_SEL_CB_CLEAN', 'GRBM_PERF_SEL_CH_BUSY', - 'GRBM_PERF_SEL_COUNT', 'GRBM_PERF_SEL_CPC_BUSY', - 'GRBM_PERF_SEL_CPF_BUSY', 'GRBM_PERF_SEL_CPG_BUSY', - 'GRBM_PERF_SEL_CP_BUSY', 'GRBM_PERF_SEL_CP_COHER_BUSY', - 'GRBM_PERF_SEL_CP_DMA_BUSY', 'GRBM_PERF_SEL_DB_BUSY', - 'GRBM_PERF_SEL_DB_CLEAN', 'GRBM_PERF_SEL_EA_BUSY', - 'GRBM_PERF_SEL_GE_BUSY', 'GRBM_PERF_SEL_GE_NO_DMA_BUSY', - 'GRBM_PERF_SEL_GL1CC_BUSY', 'GRBM_PERF_SEL_GL1XCC_BUSY', - 'GRBM_PERF_SEL_GL2CC_BUSY', 'GRBM_PERF_SEL_GUI_ACTIVE', - 'GRBM_PERF_SEL_GUS_BUSY', 'GRBM_PERF_SEL_PA_BUSY', - 'GRBM_PERF_SEL_PC_BUSY', 'GRBM_PERF_SEL_PMM_BUSY', - 'GRBM_PERF_SEL_RLC_BUSY', 'GRBM_PERF_SEL_SC_BUSY', - 'GRBM_PERF_SEL_SDMA_BUSY', 'GRBM_PERF_SEL_SPI_BUSY', - 'GRBM_PERF_SEL_SX_BUSY', 'GRBM_PERF_SEL_TA_BUSY', - 'GRBM_PERF_SEL_TCP_BUSY', 'GRBM_PERF_SEL_USER_DEFINED', - 'GRBM_PERF_SEL_UTCL1_BUSY', 'GRBM_PERF_SEL_UTCL2_BUSY', - 'GREEN_LUT', 'GSTHREADID_SIZE', 'GS_OFF', 'GS_SCENARIO_A', - 'GS_SCENARIO_B', 'GS_SCENARIO_C', 'GS_SCENARIO_G', 'GS_STAGE_OFF', - 'GS_STAGE_ON', 'HDMICHARCLK_SRC_SEL', - 'HDMICHARCLK_SRC_SEL_SRC_RESERVED', 'HDMICHARCLK_SRC_SEL_UNIPHYA', - 'HDMICHARCLK_SRC_SEL_UNIPHYB', 'HDMICHARCLK_SRC_SEL_UNIPHYC', - 'HDMICHARCLK_SRC_SEL_UNIPHYD', 'HDMISTREAMCLK_SRC_SEL', - 'HDMI_ACP_NOT_SEND', 'HDMI_ACP_PKT_SEND', 'HDMI_ACP_SEND', - 'HDMI_ACR_0_MULTIPLE_RESERVED', 'HDMI_ACR_1_MULTIPLE', - 'HDMI_ACR_2_MULTIPLE', 'HDMI_ACR_3_MULTIPLE_RESERVED', - 'HDMI_ACR_4_MULTIPLE', 'HDMI_ACR_5_MULTIPLE_RESERVED', - 'HDMI_ACR_6_MULTIPLE_RESERVED', 'HDMI_ACR_7_MULTIPLE_RESERVED', - 'HDMI_ACR_AUDIO_PRIORITY', 'HDMI_ACR_CONT', - 'HDMI_ACR_CONT_DISABLE', 'HDMI_ACR_CONT_ENABLE', - 'HDMI_ACR_NOT_SEND', 'HDMI_ACR_N_MULTIPLE', - 'HDMI_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE', - 'HDMI_ACR_PKT_SEND', 'HDMI_ACR_SELECT', 'HDMI_ACR_SELECT_32K', - 'HDMI_ACR_SELECT_44K', 'HDMI_ACR_SELECT_48K', - 'HDMI_ACR_SELECT_HW', 'HDMI_ACR_SEND', 'HDMI_ACR_SOURCE', - 'HDMI_ACR_SOURCE_HW', 'HDMI_ACR_SOURCE_SW', - 'HDMI_AUDIO_DELAY_56CLK', 'HDMI_AUDIO_DELAY_58CLK', - 'HDMI_AUDIO_DELAY_DISABLE', 'HDMI_AUDIO_DELAY_EN', - 'HDMI_AUDIO_DELAY_RESERVED', 'HDMI_AUDIO_INFO_CONT', - 'HDMI_AUDIO_INFO_CONT_DISABLE', 'HDMI_AUDIO_INFO_CONT_ENABLE', - 'HDMI_AUDIO_INFO_NOT_SEND', 'HDMI_AUDIO_INFO_PKT_SEND', - 'HDMI_AUDIO_INFO_SEND', - 'HDMI_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT', - 'HDMI_CLOCK_CHANNEL_FREQ_EQUAL_TO_CHAR_RATE', - 'HDMI_CLOCK_CHANNEL_FREQ_QUARTER_TO_CHAR_RATE', - 'HDMI_CLOCK_CHANNEL_RATE', 'HDMI_DATA_SCRAMBLE_DISABLE', - 'HDMI_DATA_SCRAMBLE_EN', 'HDMI_DATA_SCRAMBLE_ENABLE', - 'HDMI_DEEP_COLOR_DEPTH', 'HDMI_DEEP_COLOR_DEPTH_24BPP', - 'HDMI_DEEP_COLOR_DEPTH_30BPP', 'HDMI_DEEP_COLOR_DEPTH_36BPP', - 'HDMI_DEEP_COLOR_DEPTH_48BPP', 'HDMI_DEFAULT_PAHSE', - 'HDMI_DEFAULT_PHASE_IS_0', 'HDMI_DEFAULT_PHASE_IS_1', - 'HDMI_ERROR_ACK', 'HDMI_ERROR_ACK_INT', 'HDMI_ERROR_MASK', - 'HDMI_ERROR_MASK_INT', 'HDMI_ERROR_NOT_ACK', - 'HDMI_ERROR_NOT_MASK', 'HDMI_EXTRA_NULL_PACKET_FILLED_DISABLE', - 'HDMI_EXTRA_NULL_PACKET_FILLED_ENABLE', 'HDMI_GC_AVMUTE', - 'HDMI_GC_AVMUTE_CONT', 'HDMI_GC_AVMUTE_CONT_DISABLE', - 'HDMI_GC_AVMUTE_CONT_ENABLE', 'HDMI_GC_AVMUTE_SET', - 'HDMI_GC_AVMUTE_UNSET', 'HDMI_GC_CONT', 'HDMI_GC_CONT_DISABLE', - 'HDMI_GC_CONT_ENABLE', 'HDMI_GC_NOT_SEND', 'HDMI_GC_PKT_SEND', - 'HDMI_GC_SEND', 'HDMI_GENERIC_CONT', 'HDMI_GENERIC_CONT_DISABLE', - 'HDMI_GENERIC_CONT_ENABLE', 'HDMI_GENERIC_NOT_SEND', - 'HDMI_GENERIC_PKT_SEND', 'HDMI_GENERIC_SEND', 'HDMI_ISRC_CONT', - 'HDMI_ISRC_CONT_DISABLE', 'HDMI_ISRC_CONT_ENABLE', - 'HDMI_ISRC_NOT_SEND', 'HDMI_ISRC_PKT_SEND', 'HDMI_ISRC_SEND', - 'HDMI_KEEPOUT_0_650PIX_AFTER_VSYNC', - 'HDMI_KEEPOUT_509_650PIX_AFTER_VSYNC', 'HDMI_KEEPOUT_MODE', - 'HDMI_METADATA_ENABLE', 'HDMI_METADATA_NOT_SEND', - 'HDMI_METADATA_PKT_SEND', 'HDMI_MPEG_INFO_CONT', - 'HDMI_MPEG_INFO_CONT_DISABLE', 'HDMI_MPEG_INFO_CONT_ENABLE', - 'HDMI_MPEG_INFO_NOT_SEND', 'HDMI_MPEG_INFO_PKT_SEND', - 'HDMI_MPEG_INFO_SEND', 'HDMI_NOT_SEND_MAX_AUDIO_PACKETS', - 'HDMI_NO_EXTRA_NULL_PACKET_FILLED', 'HDMI_NULL_NOT_SEND', - 'HDMI_NULL_PKT_SEND', 'HDMI_NULL_SEND', 'HDMI_PACKET_GEN_VERSION', - 'HDMI_PACKET_GEN_VERSION_NEW', 'HDMI_PACKET_GEN_VERSION_OLD', - 'HDMI_PACKET_LINE_REFERENCE', 'HDMI_PACKING_PHASE_OVERRIDE', - 'HDMI_PACKING_PHASE_SET_BY_HW', 'HDMI_PACKING_PHASE_SET_BY_SW', - 'HDMI_PKT_LINE_REF_OTGSOF', 'HDMI_PKT_LINE_REF_VSYNC', - 'HDMI_SEND_MAX_AUDIO_PACKETS', 'HDP_ENDIAN_8IN16', - 'HDP_ENDIAN_8IN32', 'HDP_ENDIAN_8IN64', 'HDP_ENDIAN_NONE', - 'HPD_INT_CONTROL_ACK', 'HPD_INT_CONTROL_ACK_0', - 'HPD_INT_CONTROL_ACK_1', 'HPD_INT_CONTROL_GEN_INT_ON_CON', - 'HPD_INT_CONTROL_GEN_INT_ON_DISCON', 'HPD_INT_CONTROL_POLARITY', - 'HPD_INT_CONTROL_RX_INT_ACK', 'HPD_INT_CONTROL_RX_INT_ACK_0', - 'HPD_INT_CONTROL_RX_INT_ACK_1', 'HPO_SRC0', 'HPO_SRC_RESERVED', - 'HPO_TOP_CLOCK_GATING_DIS', 'HPO_TOP_CLOCK_GATING_DISABLE', - 'HPO_TOP_CLOCK_GATING_EN', - 'HPO_TOP_FEATURE_GATED_DISPCLK_IN_HDMISTREAMENC0', - 'HPO_TOP_FEATURE_GATED_HDMICHARCLK0', - 'HPO_TOP_FEATURE_GATED_HDMISTREAMCLK0', - 'HPO_TOP_FEATURE_GATED_SOCCLK_IN_HDMISTREAMENC0', - 'HPO_TOP_PERMANENT_DISPCLK', 'HPO_TOP_PERMANENT_HDMICHARCLK0', - 'HPO_TOP_PERMANENT_HDMISTREAMCLK0', 'HPO_TOP_PERMANENT_SOCCLK', - 'HPO_TOP_REGISTER_GATED_DISPCLK', - 'HPO_TOP_REGISTER_GATED_HDMICHARCLK0', - 'HPO_TOP_REGISTER_GATED_HDMISTREAMCLK0', 'HPO_TOP_TEST_CLK_SEL', - 'HPO_TOP_TEST_CLOCK_RESERVED', 'HS_GS', 'HS_STAGE_OFF', - 'HS_STAGE_ON', 'HUBP_3DLUT_ADDRESSING_MODE', - 'HUBP_3DLUT_SIMPLE_LINEAR', 'HUBP_3DLUT_SW_LINEAR', - 'HUBP_BLANK_EN', 'HUBP_BLANK_SW_ASSERT', 'HUBP_BLANK_SW_DEASSERT', - 'HUBP_IN_ACTIVE', 'HUBP_IN_BLANK', 'HUBP_IN_VBLANK', - 'HUBP_MEASURE_WIN_MODE_DCFCLK', 'HUBP_MEASURE_WIN_MODE_DCFCLK_0', - 'HUBP_MEASURE_WIN_MODE_DCFCLK_1', - 'HUBP_MEASURE_WIN_MODE_DCFCLK_2', - 'HUBP_MEASURE_WIN_MODE_DCFCLK_3', 'HUBP_NO_OUTSTANDING_REQ', - 'HUBP_SOFT_RESET', 'HUBP_SOFT_RESET_OFF', 'HUBP_SOFT_RESET_ON', - 'HUBP_TTU_DISABLE', 'HUBP_TTU_DISABLED', 'HUBP_TTU_ENABLED', - 'HUBP_VREADY_AT_OR_AFTER_VSYNC', 'HUBP_VTG_SEL', - 'HW_MIRRORING_DISABLE', 'HW_MIRRORING_ENABLE', 'H_MIRROR_EN', - 'Hdp_SurfaceEndian', 'ID_STREAM_DISABLE_ACKED', - 'ID_STREAM_DISABLE_NO_ACK', 'IHC_INTERRUPT_DEST', - 'IHC_INTERRUPT_LINE_STATUS', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_IS_BUSY', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_NOT_BUSY', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_IMMEDIATE_RESPONSE_VALID', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_NO_IMMEDIATE_RESPONSE_VALID', - 'INPUT_COVERAGE', 'INPUT_DEPTH_COVERAGE', 'INPUT_INNER_COVERAGE', - 'INST_ID_ECC_INTERRUPT_MSG', 'INST_ID_HOST_REG_TRAP_MSG', - 'INST_ID_HW_TRAP', 'INST_ID_HW_TRAP_GET_TBA', 'INST_ID_KILL_SEQ', - 'INST_ID_PRIV_START', 'INST_ID_SPI_WREXEC', - 'INST_ID_TTRACE_NEW_PC_MSG', 'INTERRUPT_LINE_ASSERTED', - 'INTERRUPT_LINE_NOT_ASSERTED', 'INTERRUPT_SENT_TO_DMCUB', - 'INTERRUPT_SENT_TO_IH', 'INT_DISABLED', 'INT_ENABLED', - 'INT_LEVEL', 'INT_MASK', 'INT_PULSE', 'INVALID_REG_ACCESS_TYPE', - 'IQ_DEQUEUE_RETRY', 'IQ_INTR_TYPE_IB', 'IQ_INTR_TYPE_MQD', - 'IQ_INTR_TYPE_PQ', 'IQ_OFFLOAD_RETRY', 'IQ_QUEUE_SLEEP', - 'IQ_SCH_WAVE_MSG', 'ISHARP_FMT_MODE_0', 'ISHARP_FMT_MODE_1', - 'ISHARP_FMT_MODE_ENUM', 'ISHARP_LBA_MODE_0', 'ISHARP_LBA_MODE_1', - 'ISHARP_LBA_MODE_ENUM', 'ISHARP_NOISEDET_MODE_0', - 'ISHARP_NOISEDET_MODE_1', 'ISHARP_NOISEDET_MODE_2', - 'ISHARP_NOISEDET_MODE_3', 'ISHARP_NOISEDET_MODE_ENUM', - 'JITTER_REMOVE_DISABLE', 'LATE_Z', 'LB_ALPHA_DISABLE', - 'LB_ALPHA_EN', 'LB_ALPHA_ENABLE', 'LB_INTERLEAVE_DISABLE', - 'LB_INTERLEAVE_EN', 'LB_INTERLEAVE_ENABLE', 'LB_MEMORY_CONFIG', - 'LB_MEMORY_CONFIG_0', 'LB_MEMORY_CONFIG_1', 'LB_MEMORY_CONFIG_2', - 'LB_MEMORY_CONFIG_3', 'LEGACY_PIPE_INTERLEAVE', - 'LEGACY_PIPE_INTERLEAVE_256B', 'LEGACY_PIPE_INTERLEAVE_512B', - 'LINESTRIP', 'LSDMA_PERF_SEL', 'LSDMA_PERF_SEL_ATCL2_FREE', - 'LSDMA_PERF_SEL_ATCL2_INVREQ_FLUSH', - 'LSDMA_PERF_SEL_ATCL2_INVREQ_NFLUSH', - 'LSDMA_PERF_SEL_ATCL2_RET_ACK', 'LSDMA_PERF_SEL_ATCL2_RET_XNACK', - 'LSDMA_PERF_SEL_ATOMIC_MMHUB_WR_REQ', - 'LSDMA_PERF_SEL_ATOMIC_MMHUB_WR_RET', - 'LSDMA_PERF_SEL_CE_AFIFO_FULL', 'LSDMA_PERF_SEL_CE_BUSY', - 'LSDMA_PERF_SEL_CE_BUSY_END', 'LSDMA_PERF_SEL_CE_BUSY_START', - 'LSDMA_PERF_SEL_CE_DST_IDLE', 'LSDMA_PERF_SEL_CE_INFO1_FULL', - 'LSDMA_PERF_SEL_CE_INFO_FULL', 'LSDMA_PERF_SEL_CE_IN_IDLE', - 'LSDMA_PERF_SEL_CE_L1_STALL', 'LSDMA_PERF_SEL_CE_L1_WR_VLD', - 'LSDMA_PERF_SEL_CE_MMHUB_RDREQ_SEND', - 'LSDMA_PERF_SEL_CE_MMHUB_WRREQ_SEND', - 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_RD_REQ', - 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_RD_RET', - 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_WR_REQ', - 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_WR_RET', - 'LSDMA_PERF_SEL_CE_OUT_IDLE', 'LSDMA_PERF_SEL_CE_RD_STALL', - 'LSDMA_PERF_SEL_CE_RREQ_IDLE', 'LSDMA_PERF_SEL_CE_SPLIT_IDLE', - 'LSDMA_PERF_SEL_CE_WREQ_IDLE', 'LSDMA_PERF_SEL_CE_WR_IDLE', - 'LSDMA_PERF_SEL_CE_WR_STALL', 'LSDMA_PERF_SEL_CMD_OP_END', - 'LSDMA_PERF_SEL_CMD_OP_MATCH', 'LSDMA_PERF_SEL_CMD_OP_START', - 'LSDMA_PERF_SEL_CTX_CHANGE', - 'LSDMA_PERF_SEL_CTX_CHANGE_EXCEPTION', - 'LSDMA_PERF_SEL_CTX_CHANGE_EXPIRED', 'LSDMA_PERF_SEL_CYCLE', - 'LSDMA_PERF_SEL_DMA_L1_RD_SEND', 'LSDMA_PERF_SEL_DMA_L1_WR_SEND', - 'LSDMA_PERF_SEL_DMA_MC_RD_SEND', 'LSDMA_PERF_SEL_DMA_MC_WR_SEND', - 'LSDMA_PERF_SEL_DOORBELL', 'LSDMA_PERF_SEL_DRAM_ECC', - 'LSDMA_PERF_SEL_DUMMY_0', 'LSDMA_PERF_SEL_DUMMY_1', - 'LSDMA_PERF_SEL_EX_IDLE', - 'LSDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 'LSDMA_PERF_SEL_F32_L1_WR_VLD', - 'LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER', - 'LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER_END', - 'LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER_START', - 'LSDMA_PERF_SEL_GFX_SELECT', 'LSDMA_PERF_SEL_IB_CMD_FULL', - 'LSDMA_PERF_SEL_IB_CMD_IDLE', 'LSDMA_PERF_SEL_IB_MMHUB_RD_REQ', - 'LSDMA_PERF_SEL_IB_MMHUB_RD_RET', 'LSDMA_PERF_SEL_IDLE', - 'LSDMA_PERF_SEL_INT_IDLE', 'LSDMA_PERF_SEL_INT_REQ_COUNT', - 'LSDMA_PERF_SEL_INT_REQ_STALL', - 'LSDMA_PERF_SEL_INT_RESP_ACCEPTED', - 'LSDMA_PERF_SEL_INT_RESP_RETRY', - 'LSDMA_PERF_SEL_IS_INVREQ_ADDR_RD', - 'LSDMA_PERF_SEL_IS_INVREQ_ADDR_WR', - 'LSDMA_PERF_SEL_L1_INV_MIDDLE', 'LSDMA_PERF_SEL_L1_RDL2_IDLE', - 'LSDMA_PERF_SEL_L1_RDMC_IDLE', 'LSDMA_PERF_SEL_L1_RD_FIFO_IDLE', - 'LSDMA_PERF_SEL_L1_RD_INV_EN', 'LSDMA_PERF_SEL_L1_RD_INV_IDLE', - 'LSDMA_PERF_SEL_L1_RD_WAIT_INVADR', - 'LSDMA_PERF_SEL_L1_RD_XNACK_TIMEOUT', - 'LSDMA_PERF_SEL_L1_WRL2_IDLE', 'LSDMA_PERF_SEL_L1_WRMC_IDLE', - 'LSDMA_PERF_SEL_L1_WR_FIFO_IDLE', 'LSDMA_PERF_SEL_L1_WR_INV_EN', - 'LSDMA_PERF_SEL_L1_WR_INV_IDLE', - 'LSDMA_PERF_SEL_L1_WR_WAIT_INVADR', - 'LSDMA_PERF_SEL_L1_WR_XNACK_TIMEOUT', - 'LSDMA_PERF_SEL_MC_RD_COUNT', 'LSDMA_PERF_SEL_MC_RD_IDLE', - 'LSDMA_PERF_SEL_MC_RD_NO_POLL_IDLE', - 'LSDMA_PERF_SEL_MC_RD_RET_STALL', 'LSDMA_PERF_SEL_MC_WR_COUNT', - 'LSDMA_PERF_SEL_MC_WR_IDLE', - 'LSDMA_PERF_SEL_MMHUB_CE_RDRET_VALID', - 'LSDMA_PERF_SEL_MMHUB_CE_WRRET_VALID', - 'LSDMA_PERF_SEL_NACK_GEN_ERR', 'LSDMA_PERF_SEL_NUM_PACKET', - 'LSDMA_PERF_SEL_PAGE_SELECT', 'LSDMA_PERF_SEL_RB_CMD_FULL', - 'LSDMA_PERF_SEL_RB_CMD_IDLE', 'LSDMA_PERF_SEL_RB_EMPTY', - 'LSDMA_PERF_SEL_RB_FULL', 'LSDMA_PERF_SEL_RB_MMHUB_RD_REQ', - 'LSDMA_PERF_SEL_RB_MMHUB_RD_RET', 'LSDMA_PERF_SEL_RB_RPTR_WB', - 'LSDMA_PERF_SEL_RB_RPTR_WRAP', 'LSDMA_PERF_SEL_RB_WPTR_POLL_READ', - 'LSDMA_PERF_SEL_RB_WPTR_WRAP', 'LSDMA_PERF_SEL_RD_BA_RTR', - 'LSDMA_PERF_SEL_REG_IDLE', 'LSDMA_PERF_SEL_RLC0_SELECT', - 'LSDMA_PERF_SEL_RLC1_SELECT', 'LSDMA_PERF_SEL_SDMA_ATCL2_SEND', - 'LSDMA_PERF_SEL_SDMA_INVACK_FLUSH', - 'LSDMA_PERF_SEL_SDMA_INVACK_NFLUSH', 'LSDMA_PERF_SEL_SEM_IDLE', - 'LSDMA_PERF_SEL_SEM_REQ_COUNT', 'LSDMA_PERF_SEL_SEM_REQ_STALL', - 'LSDMA_PERF_SEL_SEM_RESP_FAIL', - 'LSDMA_PERF_SEL_SEM_RESP_INCOMPLETE', - 'LSDMA_PERF_SEL_SEM_RESP_PASS', 'LSDMA_PERF_SEL_SRBM_REG_SEND', - 'LSDMA_PERF_SEL_UTCL1_UTCL2_REQ', - 'LSDMA_PERF_SEL_UTCL1_UTCL2_RET', - 'LSDMA_PERF_SEL_WPTR_MMHUB_RD_REQ', - 'LSDMA_PERF_SEL_WPTR_MMHUB_RD_RET', 'LSDMA_PERF_SEL_WR_BA_RTR', - 'LUMA_KEYER_ENABLE', 'LUMA_KEY_DIS', 'LUMA_KEY_EN', - 'LUT_2CFG_MEMORY_A', 'LUT_2CFG_MEMORY_B', 'LUT_2CFG_NO_MEMORY', - 'LUT_2_MODE_BYPASS', 'LUT_2_MODE_RAMA_LUT', 'LUT_2_MODE_RAMB_LUT', - 'LUT_4CFG_MEMORY_A', 'LUT_4CFG_MEMORY_B', 'LUT_4CFG_NO_MEMORY', - 'LUT_4CFG_ROM_A', 'LUT_4CFG_ROM_B', 'LUT_4_MODE_BYPASS', - 'LUT_4_MODE_RAMA_LUT', 'LUT_4_MODE_RAMB_LUT', - 'LUT_4_MODE_ROMA_LUT', 'LUT_4_MODE_ROMB_LUT', - 'LVTMA_RANDOM_PATTERN_SEED_ALL_PIXELS', - 'LVTMA_RANDOM_PATTERN_SEED_ONLY_DE_HIGH', - 'LVTMA_RANDOM_PATTERN_SEED_RAN_PAT', - 'MASTER_UPDATE_LOCK_DB_FIELD_BOTH', - 'MASTER_UPDATE_LOCK_DB_FIELD_BOTTOM', - 'MASTER_UPDATE_LOCK_DB_FIELD_RESERVED', - 'MASTER_UPDATE_LOCK_DB_FIELD_TOP', - 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_BOTH', - 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_LEFT', - 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_RESERVED', - 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_RIGHT', - 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK', - 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_FALSE', - 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_TRUE', - 'MASTER_UPDATE_LOCK_SEL', 'MASTER_UPDATE_LOCK_SEL_0', - 'MASTER_UPDATE_LOCK_SEL_1', 'MASTER_UPDATE_LOCK_SEL_2', - 'MASTER_UPDATE_LOCK_SEL_3', 'MASTER_UPDATE_LOCK_SEL_RESERVED4', - 'MASTER_UPDATE_LOCK_SEL_RESERVED5', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTH', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTTOM', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_RESERVED', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_TOP', - 'MATRIX_MODE_0', 'MATRIX_MODE_1', 'MATRIX_MODE_ENUM', - 'MEM_ARB_MODE_AGE', 'MEM_ARB_MODE_BOTH', 'MEM_ARB_MODE_FIXED', - 'MEM_ARB_MODE_WEIGHT', 'MEM_POWER_DIS_MODE_DISABLE', - 'MEM_POWER_DIS_MODE_ENABLE', 'MEM_POWER_FORCE_MODE_DEEP_SLEEP', - 'MEM_POWER_FORCE_MODE_LIGHT_SLEEP', 'MEM_POWER_FORCE_MODE_OFF', - 'MEM_POWER_FORCE_MODE_SHUT_DOWN', 'MEM_POWER_STATUS_DEEP_SLEEP', - 'MEM_POWER_STATUS_LIGHT_SLEEP', 'MEM_POWER_STATUS_ON', - 'MEM_POWER_STATUS_SHUT_DOWN', 'MEM_PWR_DIS_CTRL', - 'MEM_PWR_DIS_MODE', 'MEM_PWR_FORCE_CTRL', 'MEM_PWR_FORCE_CTRL2', - 'MEM_PWR_FORCE_MODE', 'MEM_PWR_SEL_CTRL', 'MEM_PWR_SEL_CTRL2', - 'MEM_PWR_STATUS', 'METADATA_HUBP_SEL', 'METADATA_HUBP_SEL_0', - 'METADATA_HUBP_SEL_1', 'METADATA_HUBP_SEL_2', - 'METADATA_HUBP_SEL_3', 'METADATA_HUBP_SEL_RESERVED', - 'METADATA_STREAM_DP', 'METADATA_STREAM_DVE', - 'METADATA_STREAM_TYPE_SEL', 'META_CHUNK_SIZE', - 'META_CHUNK_SIZE_1KB', 'META_CHUNK_SIZE_2KB', - 'META_CHUNK_SIZE_4KB', 'META_CHUNK_SIZE_8KB', 'META_LINEAR', - 'META_SURF_LINEAR', 'META_SURF_TILED', 'ME_ID0', 'ME_ID1', - 'ME_ID2', 'ME_ID3', 'MICROSECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK', - 'MICROSECOND_TIME_BASE_CLOCK_IS_XTALIN', - 'MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL', - 'MILLISECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK', - 'MILLISECOND_TIME_BASE_CLOCK_IS_XTALIN', - 'MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL', 'MIN_CHUNK_SIZE', - 'MIN_CHUNK_SIZE_1024B', 'MIN_CHUNK_SIZE_256B', - 'MIN_CHUNK_SIZE_512B', 'MIN_META_CHUNK_SIZE', - 'MIN_META_CHUNK_SIZE_128B', 'MIN_META_CHUNK_SIZE_256B', - 'MIN_META_CHUNK_SIZE_64B', 'MONO_10LSB', 'MONO_10MSB', - 'MONO_12LSB', 'MONO_12MSB', 'MONO_16', 'MONO_2BIT', 'MONO_8', - 'MPCC_BG_COLOR_BPC', 'MPCC_BG_COLOR_BPC_10bit', - 'MPCC_BG_COLOR_BPC_11bit', 'MPCC_BG_COLOR_BPC_12bit', - 'MPCC_BG_COLOR_BPC_8bit', 'MPCC_BG_COLOR_BPC_9bit', - 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY', - 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_FALSE', - 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_TRUE', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_GLOBAL_ALPHA', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_UNUSED', - 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE', - 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_FALSE', - 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_TRUE', - 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE', - 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE_0', - 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE_1', 'MPCC_CONTROL_MPCC_MODE', - 'MPCC_CONTROL_MPCC_MODE_BYPASS', - 'MPCC_CONTROL_MPCC_MODE_TOP_BOT_BLENDING', - 'MPCC_CONTROL_MPCC_MODE_TOP_LAYER_ONLY', - 'MPCC_CONTROL_MPCC_MODE_TOP_LAYER_PASSTHROUGH', - 'MPCC_GAMUT_REMAP_COEF_FORMAT_ENUM', - 'MPCC_GAMUT_REMAP_COEF_FORMAT_S2_13', - 'MPCC_GAMUT_REMAP_COEF_FORMAT_S3_12', 'MPCC_GAMUT_REMAP_MODE_0', - 'MPCC_GAMUT_REMAP_MODE_1', 'MPCC_GAMUT_REMAP_MODE_2', - 'MPCC_GAMUT_REMAP_MODE_ENUM', 'MPCC_GAMUT_REMAP_MODE_RSV', - 'MPCC_MCM_3DLUT_17CUBE', 'MPCC_MCM_3DLUT_30BIT', - 'MPCC_MCM_3DLUT_30BIT_ENUM', 'MPCC_MCM_3DLUT_36BIT', - 'MPCC_MCM_3DLUT_9CUBE', 'MPCC_MCM_3DLUT_RAM_SEL', - 'MPCC_MCM_3DLUT_SIZE_ENUM', 'MPCC_MCM_GAMMA_LUT_BYPASS', - 'MPCC_MCM_GAMMA_LUT_DISABLE_PWL', 'MPCC_MCM_GAMMA_LUT_ENABLE_PWL', - 'MPCC_MCM_GAMMA_LUT_MODE_ENUM', - 'MPCC_MCM_GAMMA_LUT_PWL_DISABLE_ENUM', 'MPCC_MCM_GAMMA_LUT_RAMA', - 'MPCC_MCM_GAMMA_LUT_RAMB', 'MPCC_MCM_GAMMA_LUT_RAM_LUT', - 'MPCC_MCM_GAMMA_LUT_RESERVED_1', 'MPCC_MCM_GAMMA_LUT_RESERVED_3', - 'MPCC_MCM_GAMMA_LUT_SEL_ENUM', - 'MPCC_MCM_GAMUT_REMAP_COEF_FORMAT_ENUM', - 'MPCC_MCM_GAMUT_REMAP_COEF_FORMAT_S2_13', - 'MPCC_MCM_GAMUT_REMAP_COEF_FORMAT_S3_12', - 'MPCC_MCM_GAMUT_REMAP_MODE_0', 'MPCC_MCM_GAMUT_REMAP_MODE_1', - 'MPCC_MCM_GAMUT_REMAP_MODE_2', 'MPCC_MCM_GAMUT_REMAP_MODE_ENUM', - 'MPCC_MCM_GAMUT_REMAP_MODE_RSV', 'MPCC_MCM_LUT_2_MODE_BYPASS', - 'MPCC_MCM_LUT_2_MODE_ENUM', 'MPCC_MCM_LUT_2_MODE_RAMA_LUT', - 'MPCC_MCM_LUT_2_MODE_RAMB_LUT', 'MPCC_MCM_LUT_ALL_USE_R', - 'MPCC_MCM_LUT_BLUE_LUT', 'MPCC_MCM_LUT_CONFIG_MODE', - 'MPCC_MCM_LUT_DIFFERENT_RGB', 'MPCC_MCM_LUT_DISABLE_DEBUG', - 'MPCC_MCM_LUT_ENABLE_DEBUG', 'MPCC_MCM_LUT_GREEN_LUT', - 'MPCC_MCM_LUT_NUM_SEG', 'MPCC_MCM_LUT_RAMA_ACCESS', - 'MPCC_MCM_LUT_RAMB_ACCESS', 'MPCC_MCM_LUT_RAM_SEL', - 'MPCC_MCM_LUT_READ_COLOR_SEL', 'MPCC_MCM_LUT_READ_DBG', - 'MPCC_MCM_LUT_RED_LUT', 'MPCC_MCM_LUT_SEGMENTS_1', - 'MPCC_MCM_LUT_SEGMENTS_128', 'MPCC_MCM_LUT_SEGMENTS_16', - 'MPCC_MCM_LUT_SEGMENTS_2', 'MPCC_MCM_LUT_SEGMENTS_32', - 'MPCC_MCM_LUT_SEGMENTS_4', 'MPCC_MCM_LUT_SEGMENTS_64', - 'MPCC_MCM_LUT_SEGMENTS_8', 'MPCC_MCM_MEM_PWR_FORCE_DIS', - 'MPCC_MCM_MEM_PWR_FORCE_DS', 'MPCC_MCM_MEM_PWR_FORCE_ENUM', - 'MPCC_MCM_MEM_PWR_FORCE_LS', 'MPCC_MCM_MEM_PWR_FORCE_SD', - 'MPCC_MCM_MEM_PWR_STATE_DS', 'MPCC_MCM_MEM_PWR_STATE_ENUM', - 'MPCC_MCM_MEM_PWR_STATE_LS', 'MPCC_MCM_MEM_PWR_STATE_ON', - 'MPCC_MCM_MEM_PWR_STATE_SD', 'MPCC_MCM_RAM0_ACCESS', - 'MPCC_MCM_RAM1_ACCESS', 'MPCC_MCM_RAM2_ACCESS', - 'MPCC_MCM_RAM3_ACCESS', 'MPCC_OGAM_ALL_USE_R', - 'MPCC_OGAM_BLUE_LUT', 'MPCC_OGAM_DIFFERENT_RGB', - 'MPCC_OGAM_DISABLE_DEBUG', 'MPCC_OGAM_DISABLE_PWL', - 'MPCC_OGAM_ENABLE_DEBUG', 'MPCC_OGAM_ENABLE_PWL', - 'MPCC_OGAM_GREEN_LUT', 'MPCC_OGAM_LUT_2CFG_MEMORY_A', - 'MPCC_OGAM_LUT_2CFG_MEMORY_B', 'MPCC_OGAM_LUT_2CFG_NO_MEMORY', - 'MPCC_OGAM_LUT_2_CONFIG_ENUM', 'MPCC_OGAM_LUT_CONFIG_MODE', - 'MPCC_OGAM_LUT_PWL_DISABLE_ENUM', - 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL', - 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMA', - 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMB', - 'MPCC_OGAM_LUT_RAM_SEL', 'MPCC_OGAM_LUT_READ_COLOR_SEL', - 'MPCC_OGAM_LUT_READ_DBG', 'MPCC_OGAM_LUT_SEL_ENUM', - 'MPCC_OGAM_MODE_0', 'MPCC_OGAM_MODE_2', - 'MPCC_OGAM_MODE_MPCC_OGAM_MODE_ENUM', 'MPCC_OGAM_MODE_RSV', - 'MPCC_OGAM_MODE_RSV1', 'MPCC_OGAM_NUM_SEG', 'MPCC_OGAM_RAMA', - 'MPCC_OGAM_RAMA_ACCESS', 'MPCC_OGAM_RAMB', - 'MPCC_OGAM_RAMB_ACCESS', 'MPCC_OGAM_RED_LUT', - 'MPCC_OGAM_SEGMENTS_1', 'MPCC_OGAM_SEGMENTS_128', - 'MPCC_OGAM_SEGMENTS_16', 'MPCC_OGAM_SEGMENTS_2', - 'MPCC_OGAM_SEGMENTS_32', 'MPCC_OGAM_SEGMENTS_4', - 'MPCC_OGAM_SEGMENTS_64', 'MPCC_OGAM_SEGMENTS_8', - 'MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN', - 'MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN_FALSE', - 'MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN_TRUE', - 'MPCC_SM_CONTROL_MPCC_SM_EN', 'MPCC_SM_CONTROL_MPCC_SM_EN_FALSE', - 'MPCC_SM_CONTROL_MPCC_SM_EN_TRUE', - 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT', - 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_FALSE', - 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_TRUE', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_HIGH', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_LOW', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_NO_FORCE', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_RESERVED', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_HIGH', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_LOW', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_NO_FORCE', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_RESERVED', - 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT', - 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_FALSE', - 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_TRUE', - 'MPCC_SM_CONTROL_MPCC_SM_MODE', - 'MPCC_SM_CONTROL_MPCC_SM_MODE_CHECKERBOARD_SUBSAMPLING', - 'MPCC_SM_CONTROL_MPCC_SM_MODE_COLUMN_SUBSAMPLING', - 'MPCC_SM_CONTROL_MPCC_SM_MODE_ROW_SUBSAMPLING', - 'MPCC_SM_CONTROL_MPCC_SM_MODE_SINGLE_PLANE', - 'MPC_CFG_3DLUT_FL_FORMAT', 'MPC_CFG_3DLUT_FL_FORMAT_0', - 'MPC_CFG_3DLUT_FL_FORMAT_1', 'MPC_CFG_3DLUT_FL_FORMAT_2', - 'MPC_CFG_3DLUT_FL_MODE', 'MPC_CFG_3DLUT_FL_MODE_0', - 'MPC_CFG_3DLUT_FL_MODE_1', 'MPC_CFG_3DLUT_FL_MODE_2', - 'MPC_CFG_3DLUT_FL_MODE_3', 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET', - 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_TRUE', - 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET', - 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_TRUE', - 'MPC_CFG_ADR_VUPDATE_LOCK_SET', - 'MPC_CFG_ADR_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_ADR_VUPDATE_LOCK_SET_TRUE', - 'MPC_CFG_CFG_VUPDATE_LOCK_SET', - 'MPC_CFG_CFG_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_CFG_VUPDATE_LOCK_SET_TRUE', - 'MPC_CFG_CUR_VUPDATE_LOCK_SET', - 'MPC_CFG_CUR_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_CUR_VUPDATE_LOCK_SET_TRUE', 'MPC_CFG_MPC_TEST_CLK_SEL', - 'MPC_CFG_MPC_TEST_CLK_SEL_0', 'MPC_CFG_MPC_TEST_CLK_SEL_1', - 'MPC_CFG_MPC_TEST_CLK_SEL_2', 'MPC_CFG_MPC_TEST_CLK_SEL_3', - 'MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN', - 'MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN_FALSE', - 'MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN_TRUE', - 'MPC_CRC_CALC_INTERLACE_MODE', 'MPC_CRC_CALC_MODE', - 'MPC_CRC_CALC_STEREO_MODE', 'MPC_CRC_CONTINUOUS_MODE', - 'MPC_CRC_INTERLACE_MODE_BOTH_RESET_BOTTOM', - 'MPC_CRC_INTERLACE_MODE_BOTH_RESET_EACH', - 'MPC_CRC_INTERLACE_MODE_BOTTOM', 'MPC_CRC_INTERLACE_MODE_TOP', - 'MPC_CRC_ONE_SHOT_MODE', 'MPC_CRC_SOURCE_SELECT', - 'MPC_CRC_SOURCE_SEL_DPP', 'MPC_CRC_SOURCE_SEL_DWB', - 'MPC_CRC_SOURCE_SEL_OPP', 'MPC_CRC_SOURCE_SEL_OTHER', - 'MPC_CRC_STEREO_MODE_BOTH_RESET_EACH', - 'MPC_CRC_STEREO_MODE_BOTH_RESET_RIGHT', - 'MPC_CRC_STEREO_MODE_LEFT', 'MPC_CRC_STEREO_MODE_RIGHT', - 'MPC_OCSC_COEF_FORMAT', 'MPC_OCSC_COEF_FORMAT_S2_13', - 'MPC_OCSC_COEF_FORMAT_S3_12', - 'MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN', - 'MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN_FALSE', - 'MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN_TRUE', - 'MPC_OUT_CSC_MODE', 'MPC_OUT_CSC_MODE_0', 'MPC_OUT_CSC_MODE_1', - 'MPC_OUT_CSC_MODE_2', 'MPC_OUT_CSC_MODE_RSV', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_10BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_11BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_12BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_6BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_8BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_9BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_BYPASS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_MODE', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_PASSTHROUGH', - 'MPC_OUT_RATE_CONTROL_DISABLE_SET', - 'MPC_OUT_RATE_CONTROL_SET_DISABLE', - 'MPC_OUT_RATE_CONTROL_SET_ENABLE', - 'MSA_V_TIMING_OVERRIDE_DISABLED', 'MSA_V_TIMING_OVERRIDE_ENABLED', - 'MTYPE', 'MTYPE_CC', 'MTYPE_C_RO_S', 'MTYPE_C_RO_US', - 'MTYPE_C_RW_S', 'MTYPE_C_RW_US', 'MTYPE_NC', 'MTYPE_RESERVED_1', - 'MTYPE_RESERVED_5', 'MTYPE_RESERVED_7', 'MTYPE_UC', 'MTYPE_WC', - 'MULTIPLE_BY1', 'MULTIPLE_BY2', 'MULTIPLE_BY3_RESERVED', - 'MULTIPLE_BY4', 'MULTIPLE_RESERVED', 'MULT_16', 'MULT_8', - 'MemArbMode', 'NON_BYPASS', 'NOT_FORCE_THE_CLOCK_DISABLED', - 'NOT_SENT', 'NO_DIST', 'NO_DIV', 'NO_FORCE', 'NO_FORCE_REQ', - 'NO_FORCE_REQUEST', 'NO_MIN_CHUNK_SIZE', 'NO_MIN_META_CHUNK_SIZE', - 'NO_OUTSTANDING_REQ', 'NUM_SIMD_PER_CU', 'OBUF_BYPASS_DIS', - 'OBUF_BYPASS_EN', 'OBUF_BYPASS_SEL', 'OBUF_FULL', - 'OBUF_FULL_RECOUT', 'OBUF_HALF_RECOUT', - 'OBUF_IS_HALF_RECOUT_WIDTH_SEL', 'OBUF_RECOUT', - 'OBUF_USE_FULL_BUFFER_SEL', 'OFFCHIP_HS_DEALLOC', 'OFF_SEQ', - 'OKAY', 'OKAY_NODATA', 'OMODE_BLEND', 'OMODE_O_THEN_B', - 'OMODE_P_THEN_O_THEN_B', 'OMODE_RESERVED_3', 'ON_SEQ', - 'OPPBUF_DISPLAY_SEGMENTATION', - 'OPPBUF_DISPLAY_SEGMENTATION_1_SEGMENT', - 'OPPBUF_DISPLAY_SEGMENTATION_2_SEGMENT', - 'OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT', - 'OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT_SPLIT_LEFT', - 'OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT_SPLIT_RIGHT', - 'OPP_PIPE_CLOCK_DISABLE', 'OPP_PIPE_CLOCK_ENABLE', - 'OPP_PIPE_CLOCK_ENABLE_CONTROL', 'OPP_PIPE_CRC_CONT_EN', - 'OPP_PIPE_CRC_DISABLE', 'OPP_PIPE_CRC_EN', 'OPP_PIPE_CRC_ENABLE', - 'OPP_PIPE_CRC_INTERLACE_EN', - 'OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_INTERLACED', - 'OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_PROGRESSIVE', - 'OPP_PIPE_CRC_INTERLACE_MODE', - 'OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_BOTTOM_FIELD', - 'OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_EACH_FIELD', - 'OPP_PIPE_CRC_INTERLACE_MODE_BOTTOM', - 'OPP_PIPE_CRC_INTERLACE_MODE_TOP', 'OPP_PIPE_CRC_MODE_CONTINUOUS', - 'OPP_PIPE_CRC_MODE_ONE_SHOT', 'OPP_PIPE_CRC_ONE_SHOT_PENDING', - 'OPP_PIPE_CRC_ONE_SHOT_PENDING_NOT_PENDING', - 'OPP_PIPE_CRC_ONE_SHOT_PENDING_PENDING', - 'OPP_PIPE_CRC_PIXEL_SELECT', - 'OPP_PIPE_CRC_PIXEL_SELECT_ALL_PIXELS', - 'OPP_PIPE_CRC_PIXEL_SELECT_EVEN_PIXELS', - 'OPP_PIPE_CRC_PIXEL_SELECT_ODD_PIXELS', - 'OPP_PIPE_CRC_PIXEL_SELECT_RESERVED', - 'OPP_PIPE_CRC_SOURCE_SELECT', 'OPP_PIPE_CRC_SOURCE_SELECT_FMT', - 'OPP_PIPE_CRC_SOURCE_SELECT_SFT', 'OPP_PIPE_CRC_STEREO_EN', - 'OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_NON_STEREO', - 'OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_STEREO', - 'OPP_PIPE_CRC_STEREO_MODE', - 'OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_EACH_EYE', - 'OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_RIGHT_EYE', - 'OPP_PIPE_CRC_STEREO_MODE_LEFT', 'OPP_PIPE_CRC_STEREO_MODE_RIGHT', - 'OPP_PIPE_DIGTIAL_BYPASS_CONTROL', - 'OPP_PIPE_DIGTIAL_BYPASS_DISABLE', - 'OPP_PIPE_DIGTIAL_BYPASS_ENABLE', 'OPP_TEST_CLK_SEL_CONTROL', - 'OPP_TEST_CLK_SEL_DISPCLK_ABM0', 'OPP_TEST_CLK_SEL_DISPCLK_ABM1', - 'OPP_TEST_CLK_SEL_DISPCLK_ABM2', 'OPP_TEST_CLK_SEL_DISPCLK_ABM3', - 'OPP_TEST_CLK_SEL_DISPCLK_OPP0', 'OPP_TEST_CLK_SEL_DISPCLK_OPP1', - 'OPP_TEST_CLK_SEL_DISPCLK_OPP2', 'OPP_TEST_CLK_SEL_DISPCLK_OPP3', - 'OPP_TEST_CLK_SEL_DISPCLK_P', 'OPP_TEST_CLK_SEL_DISPCLK_R', - 'OPP_TEST_CLK_SEL_RESERVED0', 'OPP_TEST_CLK_SEL_RESERVED1', - 'OPP_TEST_CLK_SEL_RESERVED2', 'OPP_TEST_CLK_SEL_RESERVED3', - 'OPP_TOP_CLOCK_DISABLED_STATUS', 'OPP_TOP_CLOCK_ENABLED_STATUS', - 'OPP_TOP_CLOCK_ENABLE_STATUS', 'OPP_TOP_CLOCK_GATING_CONTROL', - 'OPP_TOP_CLOCK_GATING_DISABLED', 'OPP_TOP_CLOCK_GATING_ENABLED', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG0', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG1', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG2', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG3', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_RESERVED4', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_RESERVED5', - 'OPT_COMB_ADD', 'OPT_COMB_BLEND_DISABLED', 'OPT_COMB_MAX', - 'OPT_COMB_MIN', 'OPT_COMB_NONE', 'OPT_COMB_REVSUBTRACT', - 'OPT_COMB_SAFE_ADD', 'OPT_COMB_SUBTRACT', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_FALSE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_TRUE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_FALSE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_TRUE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_FALSE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_TRUE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_BOTH', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_INTERLACE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_PROGRASSIVE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_RESERVED', - 'OTG_ADD_PIXEL', 'OTG_ADD_PIXEL_FORCE', 'OTG_ADD_PIXEL_NOOP', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_CURRENT', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_FIRST', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_VUPDATE', - 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL', - 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_DP', - 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_NORMAL', - 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY', - 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_FALSE', - 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_TRUE', - 'OTG_CONTROL_OTG_MASTER_EN', 'OTG_CONTROL_OTG_MASTER_EN_FALSE', - 'OTG_CONTROL_OTG_MASTER_EN_TRUE', 'OTG_CONTROL_OTG_OUT_MUX', - 'OTG_CONTROL_OTG_OUT_MUX_0', 'OTG_CONTROL_OTG_OUT_MUX_1', - 'OTG_CONTROL_OTG_OUT_MUX_2', 'OTG_CONTROL_OTG_START_POINT_CNTL', - 'OTG_CONTROL_OTG_START_POINT_CNTL_DP', - 'OTG_CONTROL_OTG_START_POINT_CNTL_NORMAL', - 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN', - 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_FALSE', - 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_TRUE', - 'OTG_CRC_CNTL_OTG_CRC1_EN', 'OTG_CRC_CNTL_OTG_CRC1_EN_FALSE', - 'OTG_CRC_CNTL_OTG_CRC1_EN_TRUE', 'OTG_CRC_CNTL_OTG_CRC_CONT_EN', - 'OTG_CRC_CNTL_OTG_CRC_CONT_EN_FALSE', - 'OTG_CRC_CNTL_OTG_CRC_CONT_EN_TRUE', - 'OTG_CRC_CNTL_OTG_CRC_CONT_MODE', - 'OTG_CRC_CNTL_OTG_CRC_CONT_MODE_NORESET', - 'OTG_CRC_CNTL_OTG_CRC_CONT_MODE_RESET', 'OTG_CRC_CNTL_OTG_CRC_EN', - 'OTG_CRC_CNTL_OTG_CRC_EN_FALSE', 'OTG_CRC_CNTL_OTG_CRC_EN_TRUE', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_BOTTOM', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_FIELD', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTTOM', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_TOP', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_EYES', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_FIELDS', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_LEFT', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_RIGHT', - 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS', - 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_FALSE', - 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_TRUE', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IAB', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IA_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_AB', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_A_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UAB', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UA_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_AB', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_A_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IAB', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IA_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_AB', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_A_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UAB', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UA_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_AB', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_A_B', - 'OTG_DIG_UPDATE_VCOUNT_0', 'OTG_DIG_UPDATE_VCOUNT_1', - 'OTG_DIG_UPDATE_VCOUNT_MODE', 'OTG_DLPC_CONTROL_OTG_RESYNC_MODE', - 'OTG_DLPC_CONTROL_OTG_RESYNC_MODE_0', - 'OTG_DLPC_CONTROL_OTG_RESYNC_MODE_1', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_0', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_1', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_2', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_3', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_FALSE', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_TRUE', - 'OTG_DROP_PIXEL', 'OTG_DROP_PIXEL_FORCE', 'OTG_DROP_PIXEL_NOOP', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_1FRAME', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_2FRAME', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_4FRAME', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_8FRAME', - 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN', - 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_FALSE', - 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_TRUE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_FALSE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_TRUE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_FALSE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_TRUE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1CLK', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1DATA', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2CLK', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2DATA', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICA', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICB', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICC', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICD', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICF', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_CLK', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_VSYNC', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD1', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD2', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC0', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC1', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_RESERVED', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKA', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKB', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_FALSE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_TRUE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_FALSE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_TRUE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_DISABLE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT_VCOUNT', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_RESERVED', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_FALSE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_TRUE', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG0', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG1', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG2', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG3', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_RESERVED4', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_RESERVED5', - 'OTG_GLOBAL_CONTROL3_DIG_UPDATE_EYE_SEL', - 'OTG_GLOBAL_CONTROL3_DIG_UPDATE_FIELD_SEL', - 'OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_FIELD', - 'OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_STEREO_SEL', - 'OTG_GLOBAL_UPDATE_LOCK_DISABLE', 'OTG_GLOBAL_UPDATE_LOCK_EN', - 'OTG_GLOBAL_UPDATE_LOCK_ENABLE', 'OTG_GSL_MASTER_MODE', - 'OTG_GSL_MASTER_MODE_0', 'OTG_GSL_MASTER_MODE_1', - 'OTG_GSL_MASTER_MODE_2', 'OTG_GSL_MASTER_MODE_3', - 'OTG_HORZ_REPETITION_COUNT', 'OTG_HORZ_REPETITION_COUNT_0', - 'OTG_HORZ_REPETITION_COUNT_1', 'OTG_HORZ_REPETITION_COUNT_10', - 'OTG_HORZ_REPETITION_COUNT_11', 'OTG_HORZ_REPETITION_COUNT_12', - 'OTG_HORZ_REPETITION_COUNT_13', 'OTG_HORZ_REPETITION_COUNT_14', - 'OTG_HORZ_REPETITION_COUNT_15', 'OTG_HORZ_REPETITION_COUNT_2', - 'OTG_HORZ_REPETITION_COUNT_3', 'OTG_HORZ_REPETITION_COUNT_4', - 'OTG_HORZ_REPETITION_COUNT_5', 'OTG_HORZ_REPETITION_COUNT_6', - 'OTG_HORZ_REPETITION_COUNT_7', 'OTG_HORZ_REPETITION_COUNT_8', - 'OTG_HORZ_REPETITION_COUNT_9', 'OTG_H_SYNC_A_POL', - 'OTG_H_SYNC_A_POL_HIGH', 'OTG_H_SYNC_A_POL_LOW', - 'OTG_H_TIMING_DIV_MODE', 'OTG_H_TIMING_DIV_MODE_AUTO', - 'OTG_H_TIMING_DIV_MODE_DIV_BY2', 'OTG_H_TIMING_DIV_MODE_DIV_BY4', - 'OTG_H_TIMING_DIV_MODE_MANUAL', 'OTG_H_TIMING_DIV_MODE_NOAUTO', - 'OTG_H_TIMING_DIV_MODE_NO_DIV', 'OTG_H_TIMING_DIV_MODE_RESERVED', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_FALSE', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_TRUE', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_BOTTOM', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT2', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_TOP', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_TRUE', - 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE', - 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_FALSE', - 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_TRUE', - 'OTG_MASTER_UPDATE_LOCK_DB_EN', 'OTG_MASTER_UPDATE_LOCK_DISABLE', - 'OTG_MASTER_UPDATE_LOCK_ENABLE', 'OTG_MASTER_UPDATE_LOCK_GSL_EN', - 'OTG_MASTER_UPDATE_LOCK_GSL_EN_FALSE', - 'OTG_MASTER_UPDATE_LOCK_GSL_EN_TRUE', - 'OTG_MASTER_UPDATE_LOCK_VCOUNT_0', - 'OTG_MASTER_UPDATE_LOCK_VCOUNT_1', - 'OTG_MASTER_UPDATE_LOCK_VCOUNT_MODE', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_DISABLE', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_RESERVED', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERA', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERB', - 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR', - 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_FALSE', - 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_FALSE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_FALSE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_FALSE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_FALSE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_OFF', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_ON', - 'OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL', - 'OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL_FALSE', - 'OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL_TRUE', - 'OTG_STEREO_CONTROL_OTG_STEREO_EN', - 'OTG_STEREO_CONTROL_OTG_STEREO_EN_FALSE', - 'OTG_STEREO_CONTROL_OTG_STEREO_EN_TRUE', - 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY', - 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_FALSE', - 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_TRUE', - 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY', - 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_FALSE', - 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_TRUE', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_LEFT', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_NO', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RESERVED', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RIGHT', - 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR', - 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_FALSE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_TRUE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICA', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICB', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICC', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICD', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_HSYNCA', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_INTERLACE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC0', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC1', - 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_FALSE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_TRUE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG0', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG1', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG2', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG3', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_RESERVED4', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_RESERVED5', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_BLON_Y_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_FLIP_PENDING', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICA_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICB_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICC_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICD_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICE_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICF_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_CLK_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_VSYNC_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GSL_ALLOW_FLIP', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD1', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD2', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HSYNC', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC0', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC1', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_SOF', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_RESERVED14', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKA_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKB_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_LOCK', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_PENDING', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_VSYNC', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_0', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_1', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_2', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_3', - 'OTG_TRIGA_FREQUENCY_SELECT', 'OTG_TRIGA_FREQUENCY_SELECT_0', - 'OTG_TRIGA_FREQUENCY_SELECT_1', 'OTG_TRIGA_FREQUENCY_SELECT_2', - 'OTG_TRIGA_FREQUENCY_SELECT_3', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_0', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_1', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_2', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_3', - 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR', - 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_FALSE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_TRUE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICA', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICB', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICC', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICD', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_HSYNCA', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_INTERLACE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC0', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC1', - 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_FALSE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_TRUE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG0', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG1', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG2', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG3', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_RESERVED4', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_RESERVED5', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_BLON_Y_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_FLIP_PENDING', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICA_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICB_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICC_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICD_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICE_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICF_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_CLK_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_VSYNC_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GSL_ALLOW_FLIP', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD1', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD2', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HSYNC', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC0', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC1', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_SOF', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_RESERVED14', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKA_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKB_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_LOCK', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_PENDING', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_VSYNC', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_0', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_1', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_2', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_3', - 'OTG_TRIGB_FREQUENCY_SELECT', 'OTG_TRIGB_FREQUENCY_SELECT_0', - 'OTG_TRIGB_FREQUENCY_SELECT_1', 'OTG_TRIGB_FREQUENCY_SELECT_2', - 'OTG_TRIGB_FREQUENCY_SELECT_3', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_0', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_1', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_2', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_3', - 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK', - 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_FALSE', - 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_TRUE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_FALSE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_TRUE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_FALSE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_TRUE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_FALSE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_TRUE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_FALSE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_TRUE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_CLEAR_FALSE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_TRUE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_FALSE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_TRUE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_FALSE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_TRUE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_CLEAR_FALSE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_TRUE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_FALSE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_TRUE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_FALSE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_TRUE', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_DISABLE', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_RESERVED', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERA', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERB', - 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR', - 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_FALSE', - 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_TRUE', - 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR', - 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_FALSE', - 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_TRUE', - 'OTG_VUPDATE_BLOCK_DISABLE', 'OTG_VUPDATE_BLOCK_DISABLE_OFF', - 'OTG_VUPDATE_BLOCK_DISABLE_ON', 'OTG_V_SYNC_A_POL', - 'OTG_V_SYNC_A_POL_HIGH', 'OTG_V_SYNC_A_POL_LOW', - 'OTG_V_SYNC_MODE', 'OTG_V_SYNC_MODE_HBLANK', - 'OTG_V_SYNC_MODE_HSYNC', - 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD', - 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_0', - 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_1', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_DISABLE', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_ENABLE', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_DISABLE', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_ENABLE', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_FALSE', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_TRUE', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_FALSE', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_TRUE', - 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK', - 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK_FALSE', - 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK_TRUE', - 'OUTPUT_LINE', 'OUTPUT_POINT', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_NOT_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_DISABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_NOT_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_DISABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_NOT_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_DISABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_ENABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_NO_TRAFFIC_PRIORITY', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_DO_RUN', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_IS_RESET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RESET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RUN', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_YES_TRAFFIC_PRIORITY', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_16', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_20', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_24', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_1', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_10_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_11_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_12_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_13_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_14_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_15_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_16_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_2', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_3', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_4', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_5', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_6', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_7', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_8', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_9_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 'OUTPUT_TRIANGLE_CCW', 'OUTPUT_TRIANGLE_CW', 'OUTSTANDING_REQ', - 'OVERRUN', 'OreoMode', 'PART_FRAC_EVEN', 'PART_FRAC_ODD', - 'PART_INTEGER', 'PART_POW2', 'PATCHES', 'PC_PERFCNT_SEL', - 'PC_PERF_GE_GSDONE', 'PC_PERF_GL1_RTN_CNT_GT512', - 'PC_PERF_GL1_RTN_CNT_GT768', 'PC_PERF_GL1_RTN_CNT_GTE1', - 'PC_PERF_GRBM_BUSY', 'PC_PERF_LWC0_PC_MEM_READ_STALL', - 'PC_PERF_LWC0_PKR2_SA_BDRY_CROSSING', - 'PC_PERF_LWC0_PKR3_SA_BDRY_CROSSING', - 'PC_PERF_LWC0_PROBE_ORDER_STALL', - 'PC_PERF_LWC1_PC_MEM_READ_STALL', - 'PC_PERF_LWC1_PKR0_SA_BDRY_CROSSING', - 'PC_PERF_LWC1_PKR1_SA_BDRY_CROSSING', - 'PC_PERF_LWC1_PROBE_ORDER_STALL', - 'PC_PERF_MW_CACHE_CNTL_FULL_STALL', 'PC_PERF_MW_CACHE_HIT', - 'PC_PERF_MW_CACHE_MISS', 'PC_PERF_MW_CACHE_REUSE', - 'PC_PERF_MW_DEALLOC_HIT', 'PC_PERF_MW_DLINE_ALLOC', - 'PC_PERF_MW_DLINE_DEALLOC', 'PC_PERF_MW_GL1H_NUM_REQS', - 'PC_PERF_MW_GL1H_REQ_FREEZE', 'PC_PERF_MW_PHY_DLINE_FULL_STALL', - 'PC_PERF_MW_PROBE_CNT_FREEZE', 'PC_PERF_MW_RTN_ADDR_FREEZE', - 'PC_PERF_MW_STAMP_LIMIT_STALL', 'PC_PERF_MW_TAGLINE_ALLOC', - 'PC_PERF_MW_TAGLINE_DEALLOC', 'PC_PERF_NUM_PSWAVE', - 'PC_PERF_PC_LDS_CNTL_VALID0', 'PC_PERF_PC_LDS_CNTL_VALID1', - 'PC_PERF_PC_LDS_VERTEX_REUSE0', 'PC_PERF_PC_LDS_VERTEX_REUSE1', - 'PC_PERF_PC_MEM_BANK_CONF0', 'PC_PERF_PC_MEM_BANK_CONF1', - 'PC_PERF_PC_SPI_PROBE_FREEZE', - 'PC_PERF_PC_SPI_PROBE_OUT_OF_CREDIT', 'PC_PERF_PKR0_FPOSG_EQ1', - 'PC_PERF_PKR0_FPOSG_GT1', 'PC_PERF_PKR0_FPOSG_GT128', - 'PC_PERF_PKR0_FPOSG_GT16', 'PC_PERF_PKR0_FPOSG_GT64', - 'PC_PERF_PKR0_FPOSG_OUT_OF_WAVE', - 'PC_PERF_PKR0_GSDONE_WHILE_IDLE', 'PC_PERF_PKR0_NUM_PROBES', - 'PC_PERF_PKR0_NUM_WAVES', 'PC_PERF_PKR0_PRIMS_PER_PROBE_EQ1', - 'PC_PERF_PKR0_PRIMS_PER_PROBE_GT1', - 'PC_PERF_PKR0_PRIMS_PER_PROBE_GT2', - 'PC_PERF_PKR0_PRIMS_PER_PROBE_GT4', - 'PC_PERF_PKR0_PRIMS_PER_PROBE_GT8', - 'PC_PERF_PKR0_PRIMS_PER_WAVE_EQ1', - 'PC_PERF_PKR0_PRIMS_PER_WAVE_GT1', - 'PC_PERF_PKR0_PRIMS_PER_WAVE_GT2', - 'PC_PERF_PKR0_PRIMS_PER_WAVE_GT4', - 'PC_PERF_PKR0_PRIMS_PER_WAVE_GT8', 'PC_PERF_PKR0_PRIMS_REUSE', - 'PC_PERF_PKR0_PROBES_PER_WAVE_EQ1', - 'PC_PERF_PKR0_PROBES_PER_WAVE_GT1', - 'PC_PERF_PKR0_PROBES_PER_WAVE_GT2', - 'PC_PERF_PKR0_PROBES_PER_WAVE_GT4', - 'PC_PERF_PKR0_PROBES_PER_WAVE_GT8', 'PC_PERF_PKR1_FPOSG_EQ1', - 'PC_PERF_PKR1_FPOSG_GT1', 'PC_PERF_PKR1_FPOSG_GT128', - 'PC_PERF_PKR1_FPOSG_GT16', 'PC_PERF_PKR1_FPOSG_GT64', - 'PC_PERF_PKR1_FPOSG_OUT_OF_WAVE', - 'PC_PERF_PKR1_GSDONE_WHILE_IDLE', 'PC_PERF_PKR1_NUM_PROBES', - 'PC_PERF_PKR1_NUM_WAVES', 'PC_PERF_PKR1_PRIMS_PER_PROBE_EQ1', - 'PC_PERF_PKR1_PRIMS_PER_PROBE_GT1', - 'PC_PERF_PKR1_PRIMS_PER_PROBE_GT2', - 'PC_PERF_PKR1_PRIMS_PER_PROBE_GT4', - 'PC_PERF_PKR1_PRIMS_PER_PROBE_GT8', - 'PC_PERF_PKR1_PRIMS_PER_WAVE_EQ1', - 'PC_PERF_PKR1_PRIMS_PER_WAVE_GT1', - 'PC_PERF_PKR1_PRIMS_PER_WAVE_GT2', - 'PC_PERF_PKR1_PRIMS_PER_WAVE_GT4', - 'PC_PERF_PKR1_PRIMS_PER_WAVE_GT8', 'PC_PERF_PKR1_PRIMS_REUSE', - 'PC_PERF_PKR1_PROBES_PER_WAVE_EQ1', - 'PC_PERF_PKR1_PROBES_PER_WAVE_GT1', - 'PC_PERF_PKR1_PROBES_PER_WAVE_GT2', - 'PC_PERF_PKR1_PROBES_PER_WAVE_GT4', - 'PC_PERF_PKR1_PROBES_PER_WAVE_GT8', 'PC_PERF_PKR2_FPOSG_EQ1', - 'PC_PERF_PKR2_FPOSG_GT1', 'PC_PERF_PKR2_FPOSG_GT128', - 'PC_PERF_PKR2_FPOSG_GT16', 'PC_PERF_PKR2_FPOSG_GT64', - 'PC_PERF_PKR2_FPOSG_OUT_OF_WAVE', - 'PC_PERF_PKR2_GSDONE_WHILE_IDLE', 'PC_PERF_PKR2_NUM_PROBES', - 'PC_PERF_PKR2_NUM_WAVES', 'PC_PERF_PKR2_PRIMS_PER_PROBE_EQ1', - 'PC_PERF_PKR2_PRIMS_PER_PROBE_GT1', - 'PC_PERF_PKR2_PRIMS_PER_PROBE_GT2', - 'PC_PERF_PKR2_PRIMS_PER_PROBE_GT4', - 'PC_PERF_PKR2_PRIMS_PER_PROBE_GT8', - 'PC_PERF_PKR2_PRIMS_PER_WAVE_EQ1', - 'PC_PERF_PKR2_PRIMS_PER_WAVE_GT1', - 'PC_PERF_PKR2_PRIMS_PER_WAVE_GT2', - 'PC_PERF_PKR2_PRIMS_PER_WAVE_GT4', - 'PC_PERF_PKR2_PRIMS_PER_WAVE_GT8', 'PC_PERF_PKR2_PRIMS_REUSE', - 'PC_PERF_PKR2_PROBES_PER_WAVE_EQ1', - 'PC_PERF_PKR2_PROBES_PER_WAVE_GT1', - 'PC_PERF_PKR2_PROBES_PER_WAVE_GT2', - 'PC_PERF_PKR2_PROBES_PER_WAVE_GT4', - 'PC_PERF_PKR2_PROBES_PER_WAVE_GT8', 'PC_PERF_PKR3_FPOSG_EQ1', - 'PC_PERF_PKR3_FPOSG_GT1', 'PC_PERF_PKR3_FPOSG_GT128', - 'PC_PERF_PKR3_FPOSG_GT16', 'PC_PERF_PKR3_FPOSG_GT64', - 'PC_PERF_PKR3_FPOSG_OUT_OF_WAVE', - 'PC_PERF_PKR3_GSDONE_WHILE_IDLE', 'PC_PERF_PKR3_NUM_PROBES', - 'PC_PERF_PKR3_NUM_WAVES', 'PC_PERF_PKR3_PRIMS_PER_PROBE_EQ1', - 'PC_PERF_PKR3_PRIMS_PER_PROBE_GT1', - 'PC_PERF_PKR3_PRIMS_PER_PROBE_GT2', - 'PC_PERF_PKR3_PRIMS_PER_PROBE_GT4', - 'PC_PERF_PKR3_PRIMS_PER_PROBE_GT8', - 'PC_PERF_PKR3_PRIMS_PER_WAVE_EQ1', - 'PC_PERF_PKR3_PRIMS_PER_WAVE_GT1', - 'PC_PERF_PKR3_PRIMS_PER_WAVE_GT2', - 'PC_PERF_PKR3_PRIMS_PER_WAVE_GT4', - 'PC_PERF_PKR3_PRIMS_PER_WAVE_GT8', 'PC_PERF_PKR3_PRIMS_REUSE', - 'PC_PERF_PKR3_PROBES_PER_WAVE_EQ1', - 'PC_PERF_PKR3_PROBES_PER_WAVE_GT1', - 'PC_PERF_PKR3_PROBES_PER_WAVE_GT2', - 'PC_PERF_PKR3_PROBES_PER_WAVE_GT4', - 'PC_PERF_PKR3_PROBES_PER_WAVE_GT8', 'PC_PERF_SC_FPOSG0', - 'PC_PERF_SC_FPOSG1', 'PC_PERF_SC_FPOSG2', 'PC_PERF_SC_FPOSG3', - 'PC_PERF_SC_FPOSG_WAIT0', 'PC_PERF_SC_FPOSG_WAIT1', - 'PC_PERF_SC_FPOSG_WAIT2', 'PC_PERF_SC_FPOSG_WAIT3', - 'PC_PERF_SC_MW_FREEZE', 'PC_PERF_SC_NUM_PROBES', - 'PC_PERF_SC_NUM_SPLIT_WAVES', 'PC_PERF_SC_NUM_WAVES', - 'PC_PERF_SC_PC_PTR_SEND0', 'PC_PERF_SC_PC_PTR_SEND1', - 'PC_PERF_SC_PC_PTR_SEND2', 'PC_PERF_SC_PC_PTR_SEND3', - 'PC_PERF_SC_PC_PTR_VALID0', 'PC_PERF_SC_PC_PTR_VALID1', - 'PC_PERF_SC_PC_PTR_VALID2', 'PC_PERF_SC_PC_PTR_VALID3', - 'PC_PERF_SC_PQ_FREEZE0', 'PC_PERF_SC_PQ_FREEZE1', - 'PC_PERF_SC_PQ_FREEZE2', 'PC_PERF_SC_PQ_FREEZE3', - 'PC_PERF_SC_WAIT_SYNC0', 'PC_PERF_SC_WAIT_SYNC1', - 'PC_PERF_SC_WAIT_SYNC2', 'PC_PERF_SC_WAIT_SYNC3', - 'PERFCOUNTER_ACTIVE', 'PERFCOUNTER_CNT0_STATE', - 'PERFCOUNTER_CNT0_STATE_FREEZE', 'PERFCOUNTER_CNT0_STATE_HW', - 'PERFCOUNTER_CNT0_STATE_RESET', 'PERFCOUNTER_CNT0_STATE_START', - 'PERFCOUNTER_CNT1_STATE', 'PERFCOUNTER_CNT1_STATE_FREEZE', - 'PERFCOUNTER_CNT1_STATE_HW', 'PERFCOUNTER_CNT1_STATE_RESET', - 'PERFCOUNTER_CNT1_STATE_START', 'PERFCOUNTER_CNT2_STATE', - 'PERFCOUNTER_CNT2_STATE_FREEZE', 'PERFCOUNTER_CNT2_STATE_HW', - 'PERFCOUNTER_CNT2_STATE_RESET', 'PERFCOUNTER_CNT2_STATE_START', - 'PERFCOUNTER_CNT3_STATE', 'PERFCOUNTER_CNT3_STATE_FREEZE', - 'PERFCOUNTER_CNT3_STATE_HW', 'PERFCOUNTER_CNT3_STATE_RESET', - 'PERFCOUNTER_CNT3_STATE_START', 'PERFCOUNTER_CNT4_STATE', - 'PERFCOUNTER_CNT4_STATE_FREEZE', 'PERFCOUNTER_CNT4_STATE_HW', - 'PERFCOUNTER_CNT4_STATE_RESET', 'PERFCOUNTER_CNT4_STATE_START', - 'PERFCOUNTER_CNT5_STATE', 'PERFCOUNTER_CNT5_STATE_FREEZE', - 'PERFCOUNTER_CNT5_STATE_HW', 'PERFCOUNTER_CNT5_STATE_RESET', - 'PERFCOUNTER_CNT5_STATE_START', 'PERFCOUNTER_CNT6_STATE', - 'PERFCOUNTER_CNT6_STATE_FREEZE', 'PERFCOUNTER_CNT6_STATE_HW', - 'PERFCOUNTER_CNT6_STATE_RESET', 'PERFCOUNTER_CNT6_STATE_START', - 'PERFCOUNTER_CNT7_STATE', 'PERFCOUNTER_CNT7_STATE_FREEZE', - 'PERFCOUNTER_CNT7_STATE_HW', 'PERFCOUNTER_CNT7_STATE_RESET', - 'PERFCOUNTER_CNT7_STATE_START', 'PERFCOUNTER_CNTL_SEL', - 'PERFCOUNTER_CNTL_SEL_0', 'PERFCOUNTER_CNTL_SEL_1', - 'PERFCOUNTER_CNTL_SEL_2', 'PERFCOUNTER_CNTL_SEL_3', - 'PERFCOUNTER_CNTL_SEL_4', 'PERFCOUNTER_CNTL_SEL_5', - 'PERFCOUNTER_CNTL_SEL_6', 'PERFCOUNTER_CNTL_SEL_7', - 'PERFCOUNTER_CNTOFF_START_DIS', - 'PERFCOUNTER_CNTOFF_START_DISABLE', - 'PERFCOUNTER_CNTOFF_START_ENABLE', - 'PERFCOUNTER_COUNTED_VALUE_TYPE', - 'PERFCOUNTER_COUNTED_VALUE_TYPE_ACC', - 'PERFCOUNTER_COUNTED_VALUE_TYPE_MAX', - 'PERFCOUNTER_COUNTED_VALUE_TYPE_MIN', 'PERFCOUNTER_CVALUE_SEL', - 'PERFCOUNTER_CVALUE_SEL_11_0', 'PERFCOUNTER_CVALUE_SEL_15_0', - 'PERFCOUNTER_CVALUE_SEL_23_12', 'PERFCOUNTER_CVALUE_SEL_31_16', - 'PERFCOUNTER_CVALUE_SEL_35_24', 'PERFCOUNTER_CVALUE_SEL_47_0', - 'PERFCOUNTER_CVALUE_SEL_47_32', 'PERFCOUNTER_CVALUE_SEL_47_36', - 'PERFCOUNTER_HW_CNTL_SEL', 'PERFCOUNTER_HW_CNTL_SEL_CNTOFF', - 'PERFCOUNTER_HW_CNTL_SEL_RUNEN', 'PERFCOUNTER_HW_STOP1_0', - 'PERFCOUNTER_HW_STOP1_1', 'PERFCOUNTER_HW_STOP1_SEL', - 'PERFCOUNTER_HW_STOP2_0', 'PERFCOUNTER_HW_STOP2_1', - 'PERFCOUNTER_HW_STOP2_SEL', 'PERFCOUNTER_INC_MODE', - 'PERFCOUNTER_INC_MODE_BOTH_EDGE', 'PERFCOUNTER_INC_MODE_LSB', - 'PERFCOUNTER_INC_MODE_MULTI_BIT', 'PERFCOUNTER_INC_MODE_NEG_EDGE', - 'PERFCOUNTER_INC_MODE_POS_EDGE', 'PERFCOUNTER_INT_DISABLE', - 'PERFCOUNTER_INT_EN', 'PERFCOUNTER_INT_ENABLE', - 'PERFCOUNTER_INT_TYPE', 'PERFCOUNTER_INT_TYPE_LEVEL', - 'PERFCOUNTER_INT_TYPE_PULSE', 'PERFCOUNTER_IS_ACTIVE', - 'PERFCOUNTER_IS_IDLE', 'PERFCOUNTER_OFF_MASK', - 'PERFCOUNTER_OFF_MASK_DISABLE', 'PERFCOUNTER_OFF_MASK_ENABLE', - 'PERFCOUNTER_RESTART_DISABLE', 'PERFCOUNTER_RESTART_EN', - 'PERFCOUNTER_RESTART_ENABLE', 'PERFCOUNTER_RUNEN_MODE', - 'PERFCOUNTER_RUNEN_MODE_EDGE', 'PERFCOUNTER_RUNEN_MODE_LEVEL', - 'PERFCOUNTER_SAMPLE', 'PERFCOUNTER_START', - 'PERFCOUNTER_STATE_SEL0', 'PERFCOUNTER_STATE_SEL0_GLOBAL', - 'PERFCOUNTER_STATE_SEL0_LOCAL', 'PERFCOUNTER_STATE_SEL1', - 'PERFCOUNTER_STATE_SEL1_GLOBAL', 'PERFCOUNTER_STATE_SEL1_LOCAL', - 'PERFCOUNTER_STATE_SEL2', 'PERFCOUNTER_STATE_SEL2_GLOBAL', - 'PERFCOUNTER_STATE_SEL2_LOCAL', 'PERFCOUNTER_STATE_SEL3', - 'PERFCOUNTER_STATE_SEL3_GLOBAL', 'PERFCOUNTER_STATE_SEL3_LOCAL', - 'PERFCOUNTER_STATE_SEL4', 'PERFCOUNTER_STATE_SEL4_GLOBAL', - 'PERFCOUNTER_STATE_SEL4_LOCAL', 'PERFCOUNTER_STATE_SEL5', - 'PERFCOUNTER_STATE_SEL5_GLOBAL', 'PERFCOUNTER_STATE_SEL5_LOCAL', - 'PERFCOUNTER_STATE_SEL6', 'PERFCOUNTER_STATE_SEL6_GLOBAL', - 'PERFCOUNTER_STATE_SEL6_LOCAL', 'PERFCOUNTER_STATE_SEL7', - 'PERFCOUNTER_STATE_SEL7_GLOBAL', 'PERFCOUNTER_STATE_SEL7_LOCAL', - 'PERFCOUNTER_STOP', 'PERFMON_CNTOFF_AND', 'PERFMON_CNTOFF_AND_OR', - 'PERFMON_CNTOFF_INT_DISABLE', 'PERFMON_CNTOFF_INT_EN', - 'PERFMON_CNTOFF_INT_ENABLE', 'PERFMON_CNTOFF_INT_TYPE', - 'PERFMON_CNTOFF_INT_TYPE_LEVEL', 'PERFMON_CNTOFF_INT_TYPE_PULSE', - 'PERFMON_CNTOFF_OR', 'PERFMON_COUNTER_MODE', - 'PERFMON_COUNTER_MODE_ACCUM', - 'PERFMON_COUNTER_MODE_ACTIVE_CYCLES', - 'PERFMON_COUNTER_MODE_CYCLES_EQ_HI', - 'PERFMON_COUNTER_MODE_CYCLES_GE_HI', - 'PERFMON_COUNTER_MODE_CYCLES_SINCE_FIRST_EVENT', - 'PERFMON_COUNTER_MODE_CYCLES_SINCE_LAST_EVENT', - 'PERFMON_COUNTER_MODE_DIRTY', - 'PERFMON_COUNTER_MODE_INACTIVE_CYCLES', - 'PERFMON_COUNTER_MODE_MAX', 'PERFMON_COUNTER_MODE_RESERVED', - 'PERFMON_COUNTER_MODE_SAMPLE', 'PERFMON_SPM_MODE', - 'PERFMON_SPM_MODE_16BIT_CLAMP', 'PERFMON_SPM_MODE_16BIT_NO_CLAMP', - 'PERFMON_SPM_MODE_32BIT_CLAMP', 'PERFMON_SPM_MODE_32BIT_NO_CLAMP', - 'PERFMON_SPM_MODE_OFF', 'PERFMON_SPM_MODE_RESERVED_5', - 'PERFMON_SPM_MODE_RESERVED_6', 'PERFMON_SPM_MODE_RESERVED_7', - 'PERFMON_SPM_MODE_TEST_MODE_0', 'PERFMON_SPM_MODE_TEST_MODE_1', - 'PERFMON_SPM_MODE_TEST_MODE_2', 'PERFMON_STATE', - 'PERFMON_STATE_FREEZE', 'PERFMON_STATE_HW', 'PERFMON_STATE_RESET', - 'PERFMON_STATE_START', 'PERF_CLIPSM_CULL_PRIMS_CNT', - 'PERF_CLPR_BACK_PRIM', 'PERF_CLPR_CLIP_PLANE_CNT_9_PLUS', - 'PERF_CLPR_INPUT_END_OF_PACKET', 'PERF_CLPR_INPUT_EVENT', - 'PERF_CLPR_INPUT_EXTENDED_EVENT', - 'PERF_CLPR_INPUT_FIRST_OF_SUBGROUP', 'PERF_CLPR_INPUT_NULL_PRIM', - 'PERF_CLPR_INPUT_PRIM', 'PERF_CLPR_INPUT_SEND', 'PERF_ENGG_BUSY', - 'PERF_ENGG_CSB_GE_INPUT_FIFO_FULL', - 'PERF_ENGG_CSB_GE_INPUT_FIFO_POP_BIT', - 'PERF_ENGG_CSB_GE_MEMORY_EMPTY', 'PERF_ENGG_CSB_GE_MEMORY_FULL', - 'PERF_ENGG_CSB_GE_SENDING_SUBGROUP', - 'PERF_ENGG_CSB_MACHINE_IS_STARVED', - 'PERF_ENGG_CSB_MACHINE_STALLED_BY_CSB_MEMORY', - 'PERF_ENGG_CSB_MACHINE_STALLED_BY_SPI', - 'PERF_ENGG_CSB_NULL_SUBGROUP', - 'PERF_ENGG_CSB_PAYLOAD_INPUT_FIFO_FULL', - 'PERF_ENGG_CSB_PRIM_COUNT_EQ0', 'PERF_ENGG_CSB_SPI_MEMORY_EMPTY', - 'PERF_ENGG_CSB_SPI_MEMORY_FULL', - 'PERF_ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_NO_WRITE', - 'PERF_ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_WRITE', - 'PERF_ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_P_FIFO', - 'PERF_ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_S_FIFO', - 'PERF_ENGG_INDEX_PRIM_IF_STARVED_BY_NO_CSB', - 'PERF_ENGG_INDEX_PRIM_IF_STARVED_BY_NO_PRIM', - 'PERF_ENGG_INDEX_REQ_BUSY_AND_STALLED_BY_REQ2RTN_FIFO_FULL', - 'PERF_ENGG_INDEX_REQ_IDLE_AND_STALLED_BY_REQ2RTN_FIFO_FULL', - 'PERF_ENGG_INDEX_REQ_NULL_REQUEST', - 'PERF_ENGG_INDEX_REQ_STALLED_BY_SX_CREDITS', - 'PERF_ENGG_INDEX_REQ_STARVED', 'PERF_ENGG_INDEX_RET0_NEW_VERTS', - 'PERF_ENGG_INDEX_RET10_NEW_VERTS', - 'PERF_ENGG_INDEX_RET11_NEW_VERTS', - 'PERF_ENGG_INDEX_RET12_NEW_VERTS', - 'PERF_ENGG_INDEX_RET1_NEW_VERTS', - 'PERF_ENGG_INDEX_RET2_NEW_VERTS', - 'PERF_ENGG_INDEX_RET3_NEW_VERTS', - 'PERF_ENGG_INDEX_RET4_NEW_VERTS', - 'PERF_ENGG_INDEX_RET5_NEW_VERTS', - 'PERF_ENGG_INDEX_RET6_NEW_VERTS', - 'PERF_ENGG_INDEX_RET7_NEW_VERTS', - 'PERF_ENGG_INDEX_RET8_NEW_VERTS', - 'PERF_ENGG_INDEX_RET9_NEW_VERTS', - 'PERF_ENGG_INDEX_RET_0_NEW_VERTS_THIS_PRIM', - 'PERF_ENGG_INDEX_RET_1_NEW_VERTS_THIS_PRIM', - 'PERF_ENGG_INDEX_RET_2_NEW_VERTS_THIS_PRIM', - 'PERF_ENGG_INDEX_RET_3_NEW_VERTS_THIS_PRIM', - 'PERF_ENGG_INDEX_RET_REQ2RTN_FIFO_EMPTY', - 'PERF_ENGG_INDEX_RET_REQ2RTN_FIFO_FULL', - 'PERF_ENGG_INDEX_RET_SXRX_NULL_DROPPER_STALLED_BY_FULL_PRIM_FIFO', - 'PERF_ENGG_INDEX_RET_SXRX_READING_EVENT', - 'PERF_ENGG_INDEX_RET_SXRX_READING_NULL_SUBGROUP', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_NOPL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_PL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_NOPL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_PL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS_NOPL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS_PL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS_NOPL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS_PL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS_NOPL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS_PL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_SUBGROUP_PRIMCOUNT_EQ0', - 'PERF_ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_CSB_FIFO', - 'PERF_ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_FIFO', - 'PERF_ENGG_INDEX_RET_SXRX_STARVED_BY_CSB', - 'PERF_ENGG_INDEX_RET_SXRX_STARVED_BY_PRIMS', - 'PERF_ENGG_INDEX_RET_SX_RECEIVE_FIFO_FULL', - 'PERF_ENGG_POS_REQ_STARVED', 'PERF_OUTPUT_PRIM_1_SC', - 'PERF_OUTPUT_PRIM_2_SC', 'PERF_OUTPUT_PRIM_3_SC', - 'PERF_OUTPUT_PRIM_4_SC', 'PERF_OUTPUT_PRIM_5_SC', - 'PERF_OUTPUT_PRIM_6_SC', 'PERF_PAPC_CCGSM_BUSY', - 'PERF_PAPC_CCGSM_IDLE', 'PERF_PAPC_CCGSM_STALLED', - 'PERF_PAPC_CLIPGA_BUSY', 'PERF_PAPC_CLIPGA_IDLE', - 'PERF_PAPC_CLIPGA_STALLED', 'PERF_PAPC_CLIPGA_STARVED_VTE_CLIP', - 'PERF_PAPC_CLIPGA_VTE_KILL_PRIM', 'PERF_PAPC_CLIPSM_BUSY', - 'PERF_PAPC_CLIPSM_IDLE', 'PERF_PAPC_CLIPSM_WAIT_AVAIL_VTE_CLIP', - 'PERF_PAPC_CLIPSM_WAIT_CLIPGA', - 'PERF_PAPC_CLIPSM_WAIT_CLIP_OUTSM', - 'PERF_PAPC_CLIPSM_WAIT_CLIP_VERT_ENGH', - 'PERF_PAPC_CLIPSM_WAIT_HIGH_PRI_SEQ', 'PERF_PAPC_CLIP_BUSY', - 'PERF_PAPC_CLIP_IDLE', 'PERF_PAPC_CLPRIM_BUSY', - 'PERF_PAPC_CLPRIM_IDLE', 'PERF_PAPC_CLPRIM_STALLED', - 'PERF_PAPC_CLPRIM_STARVED_CCGSM', - 'PERF_PAPC_CLPR_CLIP_PLANE_BOTTOM', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_1', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_2', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_3', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_4', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_5_8', - 'PERF_PAPC_CLPR_CLIP_PLANE_FAR', 'PERF_PAPC_CLPR_CLIP_PLANE_LEFT', - 'PERF_PAPC_CLPR_CLIP_PLANE_NEAR', - 'PERF_PAPC_CLPR_CLIP_PLANE_RIGHT', - 'PERF_PAPC_CLPR_CLIP_PLANE_TOP', 'PERF_PAPC_CLPR_CULL_PRIM', - 'PERF_PAPC_CLPR_CULL_TO_NULL_PRIM', - 'PERF_PAPC_CLPR_POINT_CLIP_CANDIDATE', - 'PERF_PAPC_CLPR_RASTER_KILL_CULL_PRIM', - 'PERF_PAPC_CLPR_UCP_CLIP_PRIM', 'PERF_PAPC_CLPR_UCP_CULL_PRIM', - 'PERF_PAPC_CLPR_VTX_KILL_CULL_PRIM', - 'PERF_PAPC_CLPR_VTX_NAN_CULL_PRIM', - 'PERF_PAPC_CLPR_VVUCP_CLIP_PRIM', - 'PERF_PAPC_CLPR_VVUCP_CULL_PRIM', 'PERF_PAPC_CLPR_VV_CLIP_PRIM', - 'PERF_PAPC_CLPR_VV_CULL_PRIM', 'PERF_PAPC_CLSM_CLIPPING_PRIM', - 'PERF_PAPC_CLSM_CULL_TO_NULL_PRIM', 'PERF_PAPC_CLSM_NULL_PRIM', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_1', 'PERF_PAPC_CLSM_OUT_PRIM_CNT_2', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_3', 'PERF_PAPC_CLSM_OUT_PRIM_CNT_4', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_5_8', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_9_PLUS', - 'PERF_PAPC_CLSM_TOTALLY_VISIBLE_PRIM', - 'PERF_PAPC_CL_DYN_SCLK_VLD', 'PERF_PAPC_PASX_REC_BUSY', - 'PERF_PAPC_PASX_REC_IDLE', 'PERF_PAPC_PASX_REC_STALLED', - 'PERF_PAPC_PASX_REC_STALLED_CCGSM_IN', - 'PERF_PAPC_PASX_REC_STALLED_POS_MEM', - 'PERF_PAPC_PASX_REC_STARVED_SX', 'PERF_PAPC_PASX_REQ', - 'PERF_PAPC_PASX_REQ_BUSY', 'PERF_PAPC_PASX_REQ_IDLE', - 'PERF_PAPC_PASX_REQ_STALLED', 'PERF_PAPC_PASX_VTX_KILL_DISCARD', - 'PERF_PAPC_PASX_VTX_NAN_DISCARD', 'PERF_PAPC_PA_REG_SCLK_VLD', - 'PERF_PAPC_SU_ALL_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_ALL_OUTPUT_PRIM', 'PERF_PAPC_SU_ALL_STALLED_SC', - 'PERF_PAPC_SU_BACK_FACE_CULL_PRIM', 'PERF_PAPC_SU_BUSY', - 'PERF_PAPC_SU_CULLED_PRIM', 'PERF_PAPC_SU_DYN_SCLK_VLD', - 'PERF_PAPC_SU_FRONT_FACE_CULL_PRIM', 'PERF_PAPC_SU_IDLE', - 'PERF_PAPC_SU_INPUT_CLIP_PRIM', - 'PERF_PAPC_SU_INPUT_CLIP_PRIM_DUAL', - 'PERF_PAPC_SU_INPUT_NULL_PRIM', 'PERF_PAPC_SU_INPUT_PRIM', - 'PERF_PAPC_SU_INPUT_PRIM_DUAL', - 'PERF_PAPC_SU_OUTPUT_CLIP_POLYMODE_DUAL', - 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM', - 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM_DUAL', - 'PERF_PAPC_SU_OUTPUT_END_OF_PACKET', 'PERF_PAPC_SU_OUTPUT_EOPG', - 'PERF_PAPC_SU_OUTPUT_EVENT_FLAG', - 'PERF_PAPC_SU_OUTPUT_FIRST_PRIM_SLOT', - 'PERF_PAPC_SU_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_BACK', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_DUAL', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_FACE', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_FRONT', 'PERF_PAPC_SU_OUTPUT_PRIM', - 'PERF_PAPC_SU_OUTPUT_PRIM_DUAL', - 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_BACK', - 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FACE', - 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FRONT', - 'PERF_PAPC_SU_POLYMODE_BACK_CULL', - 'PERF_PAPC_SU_POLYMODE_FACE_CULL', - 'PERF_PAPC_SU_POLYMODE_FRONT_CULL', - 'PERF_PAPC_SU_POLYMODE_INVALID_FILL', - 'PERF_PAPC_SU_SE0_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE0_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE0_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE0_STALLED_SC', - 'PERF_PAPC_SU_SE1_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE1_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE1_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE1_STALLED_SC', - 'PERF_PAPC_SU_SE2_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE2_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE2_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE2_STALLED_SC', - 'PERF_PAPC_SU_SE3_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE3_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE3_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE3_STALLED_SC', - 'PERF_PAPC_SU_SE4_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE4_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE4_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE4_STALLED_SC', - 'PERF_PAPC_SU_SE5_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE5_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE5_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE5_STALLED_SC', 'PERF_PAPC_SU_STALLED_SC', - 'PERF_PAPC_SU_STARVED_CLIP', 'PERF_PAPC_SU_ZERO_AREA_CULL_PRIM', - 'PERF_PASX_CCDIST0_VECTOR', 'PERF_PASX_CCDIST1_VECTOR', - 'PERF_PASX_MISC_VECTOR', 'PERF_PASX_POS_VECTOR', - 'PERF_PASX_STEREO_POS_VECTOR', 'PERF_PA_BUSY', - 'PERF_PA_FETCH_TO_PRIMIC_P_FIFO_FULL', - 'PERF_PA_PRIMIC_TO_CLPRIM_FIFO_FULL', 'PERF_PA_VERTEX_FIFO_FULL', - 'PERF_PH_SEND_1_SC', 'PERF_PH_SEND_2_SC', 'PERF_PH_SEND_3_SC', - 'PERF_PH_SEND_4_SC', 'PERF_PH_SEND_5_SC', 'PERF_PH_SEND_6_SC', - 'PERF_SC0_QUALIFIED_SEND_BUSY_EVENT', - 'PERF_SC0_QUALIFIED_SEND_NOT_BUSY_EVENT', - 'PERF_SC1_QUALIFIED_SEND_BUSY_EVENT', - 'PERF_SC1_QUALIFIED_SEND_NOT_BUSY_EVENT', - 'PERF_SC2_QUALIFIED_SEND_BUSY_EVENT', - 'PERF_SC2_QUALIFIED_SEND_NOT_BUSY_EVENT', - 'PERF_SC3_QUALIFIED_SEND_BUSY_EVENT', - 'PERF_SC3_QUALIFIED_SEND_NOT_BUSY_EVENT', - 'PERF_SMALL_PRIM_CULL_PRIM_1X1', 'PERF_SMALL_PRIM_CULL_PRIM_1X2', - 'PERF_SMALL_PRIM_CULL_PRIM_1X3', 'PERF_SMALL_PRIM_CULL_PRIM_1XN', - 'PERF_SMALL_PRIM_CULL_PRIM_2X1', 'PERF_SMALL_PRIM_CULL_PRIM_2X2', - 'PERF_SMALL_PRIM_CULL_PRIM_2X3', 'PERF_SMALL_PRIM_CULL_PRIM_2XN', - 'PERF_SMALL_PRIM_CULL_PRIM_3X1', 'PERF_SMALL_PRIM_CULL_PRIM_3X2', - 'PERF_SMALL_PRIM_CULL_PRIM_NX1', 'PERF_SMALL_PRIM_CULL_PRIM_NX2', - 'PERF_SU_INPUT_SEND', 'PERF_SU_OUTPUT_SEND', - 'PERF_SU_SMALL_PRIM_FILTER_CULL_CNT', 'PERSISTENT_SPACE_END', - 'PERSISTENT_SPACE_START', 'PFVF_SQDEC_BEGIN', 'PFVF_SQDEC_END', - 'PHYSYMCLK_FORCE_EN', 'PHYSYMCLK_FORCE_EN_DISABLE', - 'PHYSYMCLK_FORCE_EN_ENABLE', 'PHYSYMCLK_FORCE_SRC_PHYD18CLK', - 'PHYSYMCLK_FORCE_SRC_PHYD32CLK', 'PHYSYMCLK_FORCE_SRC_SEL', - 'PHYSYMCLK_FORCE_SRC_SYMCLK', 'PHY_MUX_ENABLE_ENUM', - 'PHY_MUX_ENABLE_ENUM_DISABLED', 'PHY_MUX_ENABLE_ENUM_ENABLED', - 'PH_PERFCNT_SEL', 'PH_PERF_SC0_FIFO_STATUS_0', - 'PH_PERF_SC0_FIFO_STATUS_1', 'PH_PERF_SC0_FIFO_STATUS_2', - 'PH_PERF_SC0_FIFO_STATUS_3', 'PH_PERF_SC1_FIFO_STATUS_0', - 'PH_PERF_SC1_FIFO_STATUS_1', 'PH_PERF_SC1_FIFO_STATUS_2', - 'PH_PERF_SC1_FIFO_STATUS_3', 'PH_PERF_SC2_FIFO_STATUS_0', - 'PH_PERF_SC2_FIFO_STATUS_1', 'PH_PERF_SC2_FIFO_STATUS_2', - 'PH_PERF_SC2_FIFO_STATUS_3', 'PH_PERF_SC3_FIFO_STATUS_0', - 'PH_PERF_SC3_FIFO_STATUS_1', 'PH_PERF_SC3_FIFO_STATUS_2', - 'PH_PERF_SC3_FIFO_STATUS_3', 'PH_PERF_SC4_FIFO_STATUS_0', - 'PH_PERF_SC4_FIFO_STATUS_1', 'PH_PERF_SC4_FIFO_STATUS_2', - 'PH_PERF_SC4_FIFO_STATUS_3', 'PH_PERF_SC5_FIFO_STATUS_0', - 'PH_PERF_SC5_FIFO_STATUS_1', 'PH_PERF_SC5_FIFO_STATUS_2', - 'PH_PERF_SC5_FIFO_STATUS_3', 'PH_PERF_SC6_FIFO_STATUS_0', - 'PH_PERF_SC6_FIFO_STATUS_1', 'PH_PERF_SC6_FIFO_STATUS_2', - 'PH_PERF_SC6_FIFO_STATUS_3', 'PH_PERF_SC7_FIFO_STATUS_0', - 'PH_PERF_SC7_FIFO_STATUS_1', 'PH_PERF_SC7_FIFO_STATUS_2', - 'PH_PERF_SC7_FIFO_STATUS_3', - 'PH_PERF_SEL_1_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_2_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_3_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_4_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_5_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_6_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_7_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_8_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC0_ARB_BUSY', - 'PH_PERF_SEL_SC0_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC0_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC0_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC0_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC0_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC0_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC0_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC0_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC0_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC0_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC0_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC0_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC0_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC0_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC0_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC0_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC0_GFX_PIPE_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC0_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA0_DEALLOC_WE', 'PH_PERF_SEL_SC0_PA0_EOPG_WE', - 'PH_PERF_SEL_SC0_PA0_EOP_WE', 'PH_PERF_SEL_SC0_PA0_EVENT_WE', - 'PH_PERF_SEL_SC0_PA0_FIFO_EMPTY', 'PH_PERF_SEL_SC0_PA0_FIFO_FULL', - 'PH_PERF_SEL_SC0_PA0_FPOP_WE', 'PH_PERF_SEL_SC0_PA0_FPOV_WE', - 'PH_PERF_SEL_SC0_PA0_NULL_WE', - 'PH_PERF_SEL_SC0_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA1_DEALLOC_WE', 'PH_PERF_SEL_SC0_PA1_EOPG_WE', - 'PH_PERF_SEL_SC0_PA1_EOP_WE', 'PH_PERF_SEL_SC0_PA1_EVENT_WE', - 'PH_PERF_SEL_SC0_PA1_FIFO_EMPTY', 'PH_PERF_SEL_SC0_PA1_FIFO_FULL', - 'PH_PERF_SEL_SC0_PA1_FPOP_WE', 'PH_PERF_SEL_SC0_PA1_FPOV_WE', - 'PH_PERF_SEL_SC0_PA1_NULL_WE', - 'PH_PERF_SEL_SC0_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA2_DEALLOC_WE', 'PH_PERF_SEL_SC0_PA2_EOPG_WE', - 'PH_PERF_SEL_SC0_PA2_EOP_WE', 'PH_PERF_SEL_SC0_PA2_EVENT_WE', - 'PH_PERF_SEL_SC0_PA2_FIFO_EMPTY', 'PH_PERF_SEL_SC0_PA2_FIFO_FULL', - 'PH_PERF_SEL_SC0_PA2_FPOP_WE', 'PH_PERF_SEL_SC0_PA2_FPOV_WE', - 'PH_PERF_SEL_SC0_PA2_NULL_WE', - 'PH_PERF_SEL_SC0_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA3_DEALLOC_WE', 'PH_PERF_SEL_SC0_PA3_EOPG_WE', - 'PH_PERF_SEL_SC0_PA3_EOP_WE', 'PH_PERF_SEL_SC0_PA3_EVENT_WE', - 'PH_PERF_SEL_SC0_PA3_FIFO_EMPTY', 'PH_PERF_SEL_SC0_PA3_FIFO_FULL', - 'PH_PERF_SEL_SC0_PA3_FPOP_WE', 'PH_PERF_SEL_SC0_PA3_FPOV_WE', - 'PH_PERF_SEL_SC0_PA3_NULL_WE', - 'PH_PERF_SEL_SC0_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA4_DEALLOC_WE', 'PH_PERF_SEL_SC0_PA4_EOPG_WE', - 'PH_PERF_SEL_SC0_PA4_EOP_WE', 'PH_PERF_SEL_SC0_PA4_EVENT_WE', - 'PH_PERF_SEL_SC0_PA4_FIFO_EMPTY', 'PH_PERF_SEL_SC0_PA4_FIFO_FULL', - 'PH_PERF_SEL_SC0_PA4_FPOP_WE', 'PH_PERF_SEL_SC0_PA4_FPOV_WE', - 'PH_PERF_SEL_SC0_PA4_NULL_WE', - 'PH_PERF_SEL_SC0_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA5_DEALLOC_WE', 'PH_PERF_SEL_SC0_PA5_EOPG_WE', - 'PH_PERF_SEL_SC0_PA5_EOP_WE', 'PH_PERF_SEL_SC0_PA5_EVENT_WE', - 'PH_PERF_SEL_SC0_PA5_FIFO_EMPTY', 'PH_PERF_SEL_SC0_PA5_FIFO_FULL', - 'PH_PERF_SEL_SC0_PA5_FPOP_WE', 'PH_PERF_SEL_SC0_PA5_FPOV_WE', - 'PH_PERF_SEL_SC0_PA5_NULL_WE', - 'PH_PERF_SEL_SC0_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA6_DEALLOC_WE', 'PH_PERF_SEL_SC0_PA6_EOPG_WE', - 'PH_PERF_SEL_SC0_PA6_EOP_WE', 'PH_PERF_SEL_SC0_PA6_EVENT_WE', - 'PH_PERF_SEL_SC0_PA6_FIFO_EMPTY', 'PH_PERF_SEL_SC0_PA6_FIFO_FULL', - 'PH_PERF_SEL_SC0_PA6_FPOP_WE', 'PH_PERF_SEL_SC0_PA6_FPOV_WE', - 'PH_PERF_SEL_SC0_PA6_NULL_WE', - 'PH_PERF_SEL_SC0_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA7_DEALLOC_WE', 'PH_PERF_SEL_SC0_PA7_EOPG_WE', - 'PH_PERF_SEL_SC0_PA7_EOP_WE', 'PH_PERF_SEL_SC0_PA7_EVENT_WE', - 'PH_PERF_SEL_SC0_PA7_FIFO_EMPTY', 'PH_PERF_SEL_SC0_PA7_FIFO_FULL', - 'PH_PERF_SEL_SC0_PA7_FPOP_WE', 'PH_PERF_SEL_SC0_PA7_FPOV_WE', - 'PH_PERF_SEL_SC0_PA7_NULL_WE', - 'PH_PERF_SEL_SC0_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC0_SEND', 'PH_PERF_SEL_SC0_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC1_ARB_BUSY', - 'PH_PERF_SEL_SC1_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC1_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC1_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC1_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC1_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC1_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC1_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC1_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC1_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC1_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC1_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC1_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC1_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC1_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC1_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC1_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC1_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC1_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA0_DEALLOC_WE', 'PH_PERF_SEL_SC1_PA0_EOPG_WE', - 'PH_PERF_SEL_SC1_PA0_EOP_WE', 'PH_PERF_SEL_SC1_PA0_EVENT_WE', - 'PH_PERF_SEL_SC1_PA0_FIFO_EMPTY', 'PH_PERF_SEL_SC1_PA0_FIFO_FULL', - 'PH_PERF_SEL_SC1_PA0_FPOP_WE', 'PH_PERF_SEL_SC1_PA0_FPOV_WE', - 'PH_PERF_SEL_SC1_PA0_NULL_WE', - 'PH_PERF_SEL_SC1_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA1_DEALLOC_WE', 'PH_PERF_SEL_SC1_PA1_EOPG_WE', - 'PH_PERF_SEL_SC1_PA1_EOP_WE', 'PH_PERF_SEL_SC1_PA1_EVENT_WE', - 'PH_PERF_SEL_SC1_PA1_FIFO_EMPTY', 'PH_PERF_SEL_SC1_PA1_FIFO_FULL', - 'PH_PERF_SEL_SC1_PA1_FPOP_WE', 'PH_PERF_SEL_SC1_PA1_FPOV_WE', - 'PH_PERF_SEL_SC1_PA1_NULL_WE', - 'PH_PERF_SEL_SC1_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA2_DEALLOC_WE', 'PH_PERF_SEL_SC1_PA2_EOPG_WE', - 'PH_PERF_SEL_SC1_PA2_EOP_WE', 'PH_PERF_SEL_SC1_PA2_EVENT_WE', - 'PH_PERF_SEL_SC1_PA2_FIFO_EMPTY', 'PH_PERF_SEL_SC1_PA2_FIFO_FULL', - 'PH_PERF_SEL_SC1_PA2_FPOP_WE', 'PH_PERF_SEL_SC1_PA2_FPOV_WE', - 'PH_PERF_SEL_SC1_PA2_NULL_WE', - 'PH_PERF_SEL_SC1_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA3_DEALLOC_WE', 'PH_PERF_SEL_SC1_PA3_EOPG_WE', - 'PH_PERF_SEL_SC1_PA3_EOP_WE', 'PH_PERF_SEL_SC1_PA3_EVENT_WE', - 'PH_PERF_SEL_SC1_PA3_FIFO_EMPTY', 'PH_PERF_SEL_SC1_PA3_FIFO_FULL', - 'PH_PERF_SEL_SC1_PA3_FPOP_WE', 'PH_PERF_SEL_SC1_PA3_FPOV_WE', - 'PH_PERF_SEL_SC1_PA3_NULL_WE', - 'PH_PERF_SEL_SC1_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA4_DEALLOC_WE', 'PH_PERF_SEL_SC1_PA4_EOPG_WE', - 'PH_PERF_SEL_SC1_PA4_EOP_WE', 'PH_PERF_SEL_SC1_PA4_EVENT_WE', - 'PH_PERF_SEL_SC1_PA4_FIFO_EMPTY', 'PH_PERF_SEL_SC1_PA4_FIFO_FULL', - 'PH_PERF_SEL_SC1_PA4_FPOP_WE', 'PH_PERF_SEL_SC1_PA4_FPOV_WE', - 'PH_PERF_SEL_SC1_PA4_NULL_WE', - 'PH_PERF_SEL_SC1_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA5_DEALLOC_WE', 'PH_PERF_SEL_SC1_PA5_EOPG_WE', - 'PH_PERF_SEL_SC1_PA5_EOP_WE', 'PH_PERF_SEL_SC1_PA5_EVENT_WE', - 'PH_PERF_SEL_SC1_PA5_FIFO_EMPTY', 'PH_PERF_SEL_SC1_PA5_FIFO_FULL', - 'PH_PERF_SEL_SC1_PA5_FPOP_WE', 'PH_PERF_SEL_SC1_PA5_FPOV_WE', - 'PH_PERF_SEL_SC1_PA5_NULL_WE', - 'PH_PERF_SEL_SC1_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA6_DEALLOC_WE', 'PH_PERF_SEL_SC1_PA6_EOPG_WE', - 'PH_PERF_SEL_SC1_PA6_EOP_WE', 'PH_PERF_SEL_SC1_PA6_EVENT_WE', - 'PH_PERF_SEL_SC1_PA6_FIFO_EMPTY', 'PH_PERF_SEL_SC1_PA6_FIFO_FULL', - 'PH_PERF_SEL_SC1_PA6_FPOP_WE', 'PH_PERF_SEL_SC1_PA6_FPOV_WE', - 'PH_PERF_SEL_SC1_PA6_NULL_WE', - 'PH_PERF_SEL_SC1_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA7_DEALLOC_WE', 'PH_PERF_SEL_SC1_PA7_EOPG_WE', - 'PH_PERF_SEL_SC1_PA7_EOP_WE', 'PH_PERF_SEL_SC1_PA7_EVENT_WE', - 'PH_PERF_SEL_SC1_PA7_FIFO_EMPTY', 'PH_PERF_SEL_SC1_PA7_FIFO_FULL', - 'PH_PERF_SEL_SC1_PA7_FPOP_WE', 'PH_PERF_SEL_SC1_PA7_FPOV_WE', - 'PH_PERF_SEL_SC1_PA7_NULL_WE', - 'PH_PERF_SEL_SC1_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC1_SEND', 'PH_PERF_SEL_SC1_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC2_ARB_BUSY', - 'PH_PERF_SEL_SC2_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC2_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC2_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC2_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC2_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC2_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC2_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC2_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC2_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC2_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC2_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC2_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC2_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC2_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC2_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC2_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC2_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC2_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA0_DEALLOC_WE', 'PH_PERF_SEL_SC2_PA0_EOPG_WE', - 'PH_PERF_SEL_SC2_PA0_EOP_WE', 'PH_PERF_SEL_SC2_PA0_EVENT_WE', - 'PH_PERF_SEL_SC2_PA0_FIFO_EMPTY', 'PH_PERF_SEL_SC2_PA0_FIFO_FULL', - 'PH_PERF_SEL_SC2_PA0_FPOP_WE', 'PH_PERF_SEL_SC2_PA0_FPOV_WE', - 'PH_PERF_SEL_SC2_PA0_NULL_WE', - 'PH_PERF_SEL_SC2_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA1_DEALLOC_WE', 'PH_PERF_SEL_SC2_PA1_EOPG_WE', - 'PH_PERF_SEL_SC2_PA1_EOP_WE', 'PH_PERF_SEL_SC2_PA1_EVENT_WE', - 'PH_PERF_SEL_SC2_PA1_FIFO_EMPTY', 'PH_PERF_SEL_SC2_PA1_FIFO_FULL', - 'PH_PERF_SEL_SC2_PA1_FPOP_WE', 'PH_PERF_SEL_SC2_PA1_FPOV_WE', - 'PH_PERF_SEL_SC2_PA1_NULL_WE', - 'PH_PERF_SEL_SC2_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA2_DEALLOC_WE', 'PH_PERF_SEL_SC2_PA2_EOPG_WE', - 'PH_PERF_SEL_SC2_PA2_EOP_WE', 'PH_PERF_SEL_SC2_PA2_EVENT_WE', - 'PH_PERF_SEL_SC2_PA2_FIFO_EMPTY', 'PH_PERF_SEL_SC2_PA2_FIFO_FULL', - 'PH_PERF_SEL_SC2_PA2_FPOP_WE', 'PH_PERF_SEL_SC2_PA2_FPOV_WE', - 'PH_PERF_SEL_SC2_PA2_NULL_WE', - 'PH_PERF_SEL_SC2_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA3_DEALLOC_WE', 'PH_PERF_SEL_SC2_PA3_EOPG_WE', - 'PH_PERF_SEL_SC2_PA3_EOP_WE', 'PH_PERF_SEL_SC2_PA3_EVENT_WE', - 'PH_PERF_SEL_SC2_PA3_FIFO_EMPTY', 'PH_PERF_SEL_SC2_PA3_FIFO_FULL', - 'PH_PERF_SEL_SC2_PA3_FPOP_WE', 'PH_PERF_SEL_SC2_PA3_FPOV_WE', - 'PH_PERF_SEL_SC2_PA3_NULL_WE', - 'PH_PERF_SEL_SC2_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA4_DEALLOC_WE', 'PH_PERF_SEL_SC2_PA4_EOPG_WE', - 'PH_PERF_SEL_SC2_PA4_EOP_WE', 'PH_PERF_SEL_SC2_PA4_EVENT_WE', - 'PH_PERF_SEL_SC2_PA4_FIFO_EMPTY', 'PH_PERF_SEL_SC2_PA4_FIFO_FULL', - 'PH_PERF_SEL_SC2_PA4_FPOP_WE', 'PH_PERF_SEL_SC2_PA4_FPOV_WE', - 'PH_PERF_SEL_SC2_PA4_NULL_WE', - 'PH_PERF_SEL_SC2_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA5_DEALLOC_WE', 'PH_PERF_SEL_SC2_PA5_EOPG_WE', - 'PH_PERF_SEL_SC2_PA5_EOP_WE', 'PH_PERF_SEL_SC2_PA5_EVENT_WE', - 'PH_PERF_SEL_SC2_PA5_FIFO_EMPTY', 'PH_PERF_SEL_SC2_PA5_FIFO_FULL', - 'PH_PERF_SEL_SC2_PA5_FPOP_WE', 'PH_PERF_SEL_SC2_PA5_FPOV_WE', - 'PH_PERF_SEL_SC2_PA5_NULL_WE', - 'PH_PERF_SEL_SC2_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA6_DEALLOC_WE', 'PH_PERF_SEL_SC2_PA6_EOPG_WE', - 'PH_PERF_SEL_SC2_PA6_EOP_WE', 'PH_PERF_SEL_SC2_PA6_EVENT_WE', - 'PH_PERF_SEL_SC2_PA6_FIFO_EMPTY', 'PH_PERF_SEL_SC2_PA6_FIFO_FULL', - 'PH_PERF_SEL_SC2_PA6_FPOP_WE', 'PH_PERF_SEL_SC2_PA6_FPOV_WE', - 'PH_PERF_SEL_SC2_PA6_NULL_WE', - 'PH_PERF_SEL_SC2_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA7_DEALLOC_WE', 'PH_PERF_SEL_SC2_PA7_EOPG_WE', - 'PH_PERF_SEL_SC2_PA7_EOP_WE', 'PH_PERF_SEL_SC2_PA7_EVENT_WE', - 'PH_PERF_SEL_SC2_PA7_FIFO_EMPTY', 'PH_PERF_SEL_SC2_PA7_FIFO_FULL', - 'PH_PERF_SEL_SC2_PA7_FPOP_WE', 'PH_PERF_SEL_SC2_PA7_FPOV_WE', - 'PH_PERF_SEL_SC2_PA7_NULL_WE', - 'PH_PERF_SEL_SC2_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC2_SEND', 'PH_PERF_SEL_SC2_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC3_ARB_BUSY', - 'PH_PERF_SEL_SC3_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC3_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC3_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC3_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC3_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC3_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC3_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC3_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC3_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC3_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC3_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC3_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC3_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC3_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC3_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC3_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC3_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC3_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA0_DEALLOC_WE', 'PH_PERF_SEL_SC3_PA0_EOPG_WE', - 'PH_PERF_SEL_SC3_PA0_EOP_WE', 'PH_PERF_SEL_SC3_PA0_EVENT_WE', - 'PH_PERF_SEL_SC3_PA0_FIFO_EMPTY', 'PH_PERF_SEL_SC3_PA0_FIFO_FULL', - 'PH_PERF_SEL_SC3_PA0_FPOP_WE', 'PH_PERF_SEL_SC3_PA0_FPOV_WE', - 'PH_PERF_SEL_SC3_PA0_NULL_WE', - 'PH_PERF_SEL_SC3_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA1_DEALLOC_WE', 'PH_PERF_SEL_SC3_PA1_EOPG_WE', - 'PH_PERF_SEL_SC3_PA1_EOP_WE', 'PH_PERF_SEL_SC3_PA1_EVENT_WE', - 'PH_PERF_SEL_SC3_PA1_FIFO_EMPTY', 'PH_PERF_SEL_SC3_PA1_FIFO_FULL', - 'PH_PERF_SEL_SC3_PA1_FPOP_WE', 'PH_PERF_SEL_SC3_PA1_FPOV_WE', - 'PH_PERF_SEL_SC3_PA1_NULL_WE', - 'PH_PERF_SEL_SC3_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA2_DEALLOC_WE', 'PH_PERF_SEL_SC3_PA2_EOPG_WE', - 'PH_PERF_SEL_SC3_PA2_EOP_WE', 'PH_PERF_SEL_SC3_PA2_EVENT_WE', - 'PH_PERF_SEL_SC3_PA2_FIFO_EMPTY', 'PH_PERF_SEL_SC3_PA2_FIFO_FULL', - 'PH_PERF_SEL_SC3_PA2_FPOP_WE', 'PH_PERF_SEL_SC3_PA2_FPOV_WE', - 'PH_PERF_SEL_SC3_PA2_NULL_WE', - 'PH_PERF_SEL_SC3_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA3_DEALLOC_WE', 'PH_PERF_SEL_SC3_PA3_EOPG_WE', - 'PH_PERF_SEL_SC3_PA3_EOP_WE', 'PH_PERF_SEL_SC3_PA3_EVENT_WE', - 'PH_PERF_SEL_SC3_PA3_FIFO_EMPTY', 'PH_PERF_SEL_SC3_PA3_FIFO_FULL', - 'PH_PERF_SEL_SC3_PA3_FPOP_WE', 'PH_PERF_SEL_SC3_PA3_FPOV_WE', - 'PH_PERF_SEL_SC3_PA3_NULL_WE', - 'PH_PERF_SEL_SC3_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA4_DEALLOC_WE', 'PH_PERF_SEL_SC3_PA4_EOPG_WE', - 'PH_PERF_SEL_SC3_PA4_EOP_WE', 'PH_PERF_SEL_SC3_PA4_EVENT_WE', - 'PH_PERF_SEL_SC3_PA4_FIFO_EMPTY', 'PH_PERF_SEL_SC3_PA4_FIFO_FULL', - 'PH_PERF_SEL_SC3_PA4_FPOP_WE', 'PH_PERF_SEL_SC3_PA4_FPOV_WE', - 'PH_PERF_SEL_SC3_PA4_NULL_WE', - 'PH_PERF_SEL_SC3_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA5_DEALLOC_WE', 'PH_PERF_SEL_SC3_PA5_EOPG_WE', - 'PH_PERF_SEL_SC3_PA5_EOP_WE', 'PH_PERF_SEL_SC3_PA5_EVENT_WE', - 'PH_PERF_SEL_SC3_PA5_FIFO_EMPTY', 'PH_PERF_SEL_SC3_PA5_FIFO_FULL', - 'PH_PERF_SEL_SC3_PA5_FPOP_WE', 'PH_PERF_SEL_SC3_PA5_FPOV_WE', - 'PH_PERF_SEL_SC3_PA5_NULL_WE', - 'PH_PERF_SEL_SC3_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA6_DEALLOC_WE', 'PH_PERF_SEL_SC3_PA6_EOPG_WE', - 'PH_PERF_SEL_SC3_PA6_EOP_WE', 'PH_PERF_SEL_SC3_PA6_EVENT_WE', - 'PH_PERF_SEL_SC3_PA6_FIFO_EMPTY', 'PH_PERF_SEL_SC3_PA6_FIFO_FULL', - 'PH_PERF_SEL_SC3_PA6_FPOP_WE', 'PH_PERF_SEL_SC3_PA6_FPOV_WE', - 'PH_PERF_SEL_SC3_PA6_NULL_WE', - 'PH_PERF_SEL_SC3_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA7_DEALLOC_WE', 'PH_PERF_SEL_SC3_PA7_EOPG_WE', - 'PH_PERF_SEL_SC3_PA7_EOP_WE', 'PH_PERF_SEL_SC3_PA7_EVENT_WE', - 'PH_PERF_SEL_SC3_PA7_FIFO_EMPTY', 'PH_PERF_SEL_SC3_PA7_FIFO_FULL', - 'PH_PERF_SEL_SC3_PA7_FPOP_WE', 'PH_PERF_SEL_SC3_PA7_FPOV_WE', - 'PH_PERF_SEL_SC3_PA7_NULL_WE', - 'PH_PERF_SEL_SC3_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC3_SEND', 'PH_PERF_SEL_SC3_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC4_ARB_BUSY', - 'PH_PERF_SEL_SC4_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC4_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC4_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC4_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC4_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC4_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC4_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC4_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC4_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC4_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC4_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC4_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC4_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC4_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC4_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC4_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC4_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC4_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA0_DEALLOC_WE', 'PH_PERF_SEL_SC4_PA0_EOPG_WE', - 'PH_PERF_SEL_SC4_PA0_EOP_WE', 'PH_PERF_SEL_SC4_PA0_EVENT_WE', - 'PH_PERF_SEL_SC4_PA0_FIFO_EMPTY', 'PH_PERF_SEL_SC4_PA0_FIFO_FULL', - 'PH_PERF_SEL_SC4_PA0_FPOP_WE', 'PH_PERF_SEL_SC4_PA0_FPOV_WE', - 'PH_PERF_SEL_SC4_PA0_NULL_WE', - 'PH_PERF_SEL_SC4_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA1_DEALLOC_WE', 'PH_PERF_SEL_SC4_PA1_EOPG_WE', - 'PH_PERF_SEL_SC4_PA1_EOP_WE', 'PH_PERF_SEL_SC4_PA1_EVENT_WE', - 'PH_PERF_SEL_SC4_PA1_FIFO_EMPTY', 'PH_PERF_SEL_SC4_PA1_FIFO_FULL', - 'PH_PERF_SEL_SC4_PA1_FPOP_WE', 'PH_PERF_SEL_SC4_PA1_FPOV_WE', - 'PH_PERF_SEL_SC4_PA1_NULL_WE', - 'PH_PERF_SEL_SC4_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA2_DEALLOC_WE', 'PH_PERF_SEL_SC4_PA2_EOPG_WE', - 'PH_PERF_SEL_SC4_PA2_EOP_WE', 'PH_PERF_SEL_SC4_PA2_EVENT_WE', - 'PH_PERF_SEL_SC4_PA2_FIFO_EMPTY', 'PH_PERF_SEL_SC4_PA2_FIFO_FULL', - 'PH_PERF_SEL_SC4_PA2_FPOP_WE', 'PH_PERF_SEL_SC4_PA2_FPOV_WE', - 'PH_PERF_SEL_SC4_PA2_NULL_WE', - 'PH_PERF_SEL_SC4_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA3_DEALLOC_WE', 'PH_PERF_SEL_SC4_PA3_EOPG_WE', - 'PH_PERF_SEL_SC4_PA3_EOP_WE', 'PH_PERF_SEL_SC4_PA3_EVENT_WE', - 'PH_PERF_SEL_SC4_PA3_FIFO_EMPTY', 'PH_PERF_SEL_SC4_PA3_FIFO_FULL', - 'PH_PERF_SEL_SC4_PA3_FPOP_WE', 'PH_PERF_SEL_SC4_PA3_FPOV_WE', - 'PH_PERF_SEL_SC4_PA3_NULL_WE', - 'PH_PERF_SEL_SC4_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA4_DEALLOC_WE', 'PH_PERF_SEL_SC4_PA4_EOPG_WE', - 'PH_PERF_SEL_SC4_PA4_EOP_WE', 'PH_PERF_SEL_SC4_PA4_EVENT_WE', - 'PH_PERF_SEL_SC4_PA4_FIFO_EMPTY', 'PH_PERF_SEL_SC4_PA4_FIFO_FULL', - 'PH_PERF_SEL_SC4_PA4_FPOP_WE', 'PH_PERF_SEL_SC4_PA4_FPOV_WE', - 'PH_PERF_SEL_SC4_PA4_NULL_WE', - 'PH_PERF_SEL_SC4_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA5_DEALLOC_WE', 'PH_PERF_SEL_SC4_PA5_EOPG_WE', - 'PH_PERF_SEL_SC4_PA5_EOP_WE', 'PH_PERF_SEL_SC4_PA5_EVENT_WE', - 'PH_PERF_SEL_SC4_PA5_FIFO_EMPTY', 'PH_PERF_SEL_SC4_PA5_FIFO_FULL', - 'PH_PERF_SEL_SC4_PA5_FPOP_WE', 'PH_PERF_SEL_SC4_PA5_FPOV_WE', - 'PH_PERF_SEL_SC4_PA5_NULL_WE', - 'PH_PERF_SEL_SC4_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA6_DEALLOC_WE', 'PH_PERF_SEL_SC4_PA6_EOPG_WE', - 'PH_PERF_SEL_SC4_PA6_EOP_WE', 'PH_PERF_SEL_SC4_PA6_EVENT_WE', - 'PH_PERF_SEL_SC4_PA6_FIFO_EMPTY', 'PH_PERF_SEL_SC4_PA6_FIFO_FULL', - 'PH_PERF_SEL_SC4_PA6_FPOP_WE', 'PH_PERF_SEL_SC4_PA6_FPOV_WE', - 'PH_PERF_SEL_SC4_PA6_NULL_WE', - 'PH_PERF_SEL_SC4_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA7_DEALLOC_WE', 'PH_PERF_SEL_SC4_PA7_EOPG_WE', - 'PH_PERF_SEL_SC4_PA7_EOP_WE', 'PH_PERF_SEL_SC4_PA7_EVENT_WE', - 'PH_PERF_SEL_SC4_PA7_FIFO_EMPTY', 'PH_PERF_SEL_SC4_PA7_FIFO_FULL', - 'PH_PERF_SEL_SC4_PA7_FPOP_WE', 'PH_PERF_SEL_SC4_PA7_FPOV_WE', - 'PH_PERF_SEL_SC4_PA7_NULL_WE', - 'PH_PERF_SEL_SC4_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC4_SEND', 'PH_PERF_SEL_SC4_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC5_ARB_BUSY', - 'PH_PERF_SEL_SC5_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC5_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC5_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC5_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC5_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC5_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC5_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC5_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC5_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC5_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC5_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC5_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC5_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC5_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC5_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC5_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC5_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC5_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA0_DEALLOC_WE', 'PH_PERF_SEL_SC5_PA0_EOPG_WE', - 'PH_PERF_SEL_SC5_PA0_EOP_WE', 'PH_PERF_SEL_SC5_PA0_EVENT_WE', - 'PH_PERF_SEL_SC5_PA0_FIFO_EMPTY', 'PH_PERF_SEL_SC5_PA0_FIFO_FULL', - 'PH_PERF_SEL_SC5_PA0_FPOP_WE', 'PH_PERF_SEL_SC5_PA0_FPOV_WE', - 'PH_PERF_SEL_SC5_PA0_NULL_WE', - 'PH_PERF_SEL_SC5_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA1_DEALLOC_WE', 'PH_PERF_SEL_SC5_PA1_EOPG_WE', - 'PH_PERF_SEL_SC5_PA1_EOP_WE', 'PH_PERF_SEL_SC5_PA1_EVENT_WE', - 'PH_PERF_SEL_SC5_PA1_FIFO_EMPTY', 'PH_PERF_SEL_SC5_PA1_FIFO_FULL', - 'PH_PERF_SEL_SC5_PA1_FPOP_WE', 'PH_PERF_SEL_SC5_PA1_FPOV_WE', - 'PH_PERF_SEL_SC5_PA1_NULL_WE', - 'PH_PERF_SEL_SC5_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA2_DEALLOC_WE', 'PH_PERF_SEL_SC5_PA2_EOPG_WE', - 'PH_PERF_SEL_SC5_PA2_EOP_WE', 'PH_PERF_SEL_SC5_PA2_EVENT_WE', - 'PH_PERF_SEL_SC5_PA2_FIFO_EMPTY', 'PH_PERF_SEL_SC5_PA2_FIFO_FULL', - 'PH_PERF_SEL_SC5_PA2_FPOP_WE', 'PH_PERF_SEL_SC5_PA2_FPOV_WE', - 'PH_PERF_SEL_SC5_PA2_NULL_WE', - 'PH_PERF_SEL_SC5_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA3_DEALLOC_WE', 'PH_PERF_SEL_SC5_PA3_EOPG_WE', - 'PH_PERF_SEL_SC5_PA3_EOP_WE', 'PH_PERF_SEL_SC5_PA3_EVENT_WE', - 'PH_PERF_SEL_SC5_PA3_FIFO_EMPTY', 'PH_PERF_SEL_SC5_PA3_FIFO_FULL', - 'PH_PERF_SEL_SC5_PA3_FPOP_WE', 'PH_PERF_SEL_SC5_PA3_FPOV_WE', - 'PH_PERF_SEL_SC5_PA3_NULL_WE', - 'PH_PERF_SEL_SC5_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA4_DEALLOC_WE', 'PH_PERF_SEL_SC5_PA4_EOPG_WE', - 'PH_PERF_SEL_SC5_PA4_EOP_WE', 'PH_PERF_SEL_SC5_PA4_EVENT_WE', - 'PH_PERF_SEL_SC5_PA4_FIFO_EMPTY', 'PH_PERF_SEL_SC5_PA4_FIFO_FULL', - 'PH_PERF_SEL_SC5_PA4_FPOP_WE', 'PH_PERF_SEL_SC5_PA4_FPOV_WE', - 'PH_PERF_SEL_SC5_PA4_NULL_WE', - 'PH_PERF_SEL_SC5_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA5_DEALLOC_WE', 'PH_PERF_SEL_SC5_PA5_EOPG_WE', - 'PH_PERF_SEL_SC5_PA5_EOP_WE', 'PH_PERF_SEL_SC5_PA5_EVENT_WE', - 'PH_PERF_SEL_SC5_PA5_FIFO_EMPTY', 'PH_PERF_SEL_SC5_PA5_FIFO_FULL', - 'PH_PERF_SEL_SC5_PA5_FPOP_WE', 'PH_PERF_SEL_SC5_PA5_FPOV_WE', - 'PH_PERF_SEL_SC5_PA5_NULL_WE', - 'PH_PERF_SEL_SC5_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA6_DEALLOC_WE', 'PH_PERF_SEL_SC5_PA6_EOPG_WE', - 'PH_PERF_SEL_SC5_PA6_EOP_WE', 'PH_PERF_SEL_SC5_PA6_EVENT_WE', - 'PH_PERF_SEL_SC5_PA6_FIFO_EMPTY', 'PH_PERF_SEL_SC5_PA6_FIFO_FULL', - 'PH_PERF_SEL_SC5_PA6_FPOP_WE', 'PH_PERF_SEL_SC5_PA6_FPOV_WE', - 'PH_PERF_SEL_SC5_PA6_NULL_WE', - 'PH_PERF_SEL_SC5_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA7_DEALLOC_WE', 'PH_PERF_SEL_SC5_PA7_EOPG_WE', - 'PH_PERF_SEL_SC5_PA7_EOP_WE', 'PH_PERF_SEL_SC5_PA7_EVENT_WE', - 'PH_PERF_SEL_SC5_PA7_FIFO_EMPTY', 'PH_PERF_SEL_SC5_PA7_FIFO_FULL', - 'PH_PERF_SEL_SC5_PA7_FPOP_WE', 'PH_PERF_SEL_SC5_PA7_FPOV_WE', - 'PH_PERF_SEL_SC5_PA7_NULL_WE', - 'PH_PERF_SEL_SC5_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC5_SEND', 'PH_PERF_SEL_SC5_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC6_ARB_BUSY', - 'PH_PERF_SEL_SC6_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC6_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC6_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC6_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC6_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC6_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC6_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC6_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC6_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC6_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC6_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC6_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC6_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC6_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC6_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC6_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC6_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC6_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA0_DEALLOC_WE', 'PH_PERF_SEL_SC6_PA0_EOPG_WE', - 'PH_PERF_SEL_SC6_PA0_EOP_WE', 'PH_PERF_SEL_SC6_PA0_EVENT_WE', - 'PH_PERF_SEL_SC6_PA0_FIFO_EMPTY', 'PH_PERF_SEL_SC6_PA0_FIFO_FULL', - 'PH_PERF_SEL_SC6_PA0_FPOP_WE', 'PH_PERF_SEL_SC6_PA0_FPOV_WE', - 'PH_PERF_SEL_SC6_PA0_NULL_WE', - 'PH_PERF_SEL_SC6_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA1_DEALLOC_WE', 'PH_PERF_SEL_SC6_PA1_EOPG_WE', - 'PH_PERF_SEL_SC6_PA1_EOP_WE', 'PH_PERF_SEL_SC6_PA1_EVENT_WE', - 'PH_PERF_SEL_SC6_PA1_FIFO_EMPTY', 'PH_PERF_SEL_SC6_PA1_FIFO_FULL', - 'PH_PERF_SEL_SC6_PA1_FPOP_WE', 'PH_PERF_SEL_SC6_PA1_FPOV_WE', - 'PH_PERF_SEL_SC6_PA1_NULL_WE', - 'PH_PERF_SEL_SC6_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA2_DEALLOC_WE', 'PH_PERF_SEL_SC6_PA2_EOPG_WE', - 'PH_PERF_SEL_SC6_PA2_EOP_WE', 'PH_PERF_SEL_SC6_PA2_EVENT_WE', - 'PH_PERF_SEL_SC6_PA2_FIFO_EMPTY', 'PH_PERF_SEL_SC6_PA2_FIFO_FULL', - 'PH_PERF_SEL_SC6_PA2_FPOP_WE', 'PH_PERF_SEL_SC6_PA2_FPOV_WE', - 'PH_PERF_SEL_SC6_PA2_NULL_WE', - 'PH_PERF_SEL_SC6_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA3_DEALLOC_WE', 'PH_PERF_SEL_SC6_PA3_EOPG_WE', - 'PH_PERF_SEL_SC6_PA3_EOP_WE', 'PH_PERF_SEL_SC6_PA3_EVENT_WE', - 'PH_PERF_SEL_SC6_PA3_FIFO_EMPTY', 'PH_PERF_SEL_SC6_PA3_FIFO_FULL', - 'PH_PERF_SEL_SC6_PA3_FPOP_WE', 'PH_PERF_SEL_SC6_PA3_FPOV_WE', - 'PH_PERF_SEL_SC6_PA3_NULL_WE', - 'PH_PERF_SEL_SC6_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA4_DEALLOC_WE', 'PH_PERF_SEL_SC6_PA4_EOPG_WE', - 'PH_PERF_SEL_SC6_PA4_EOP_WE', 'PH_PERF_SEL_SC6_PA4_EVENT_WE', - 'PH_PERF_SEL_SC6_PA4_FIFO_EMPTY', 'PH_PERF_SEL_SC6_PA4_FIFO_FULL', - 'PH_PERF_SEL_SC6_PA4_FPOP_WE', 'PH_PERF_SEL_SC6_PA4_FPOV_WE', - 'PH_PERF_SEL_SC6_PA4_NULL_WE', - 'PH_PERF_SEL_SC6_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA5_DEALLOC_WE', 'PH_PERF_SEL_SC6_PA5_EOPG_WE', - 'PH_PERF_SEL_SC6_PA5_EOP_WE', 'PH_PERF_SEL_SC6_PA5_EVENT_WE', - 'PH_PERF_SEL_SC6_PA5_FIFO_EMPTY', 'PH_PERF_SEL_SC6_PA5_FIFO_FULL', - 'PH_PERF_SEL_SC6_PA5_FPOP_WE', 'PH_PERF_SEL_SC6_PA5_FPOV_WE', - 'PH_PERF_SEL_SC6_PA5_NULL_WE', - 'PH_PERF_SEL_SC6_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA6_DEALLOC_WE', 'PH_PERF_SEL_SC6_PA6_EOPG_WE', - 'PH_PERF_SEL_SC6_PA6_EOP_WE', 'PH_PERF_SEL_SC6_PA6_EVENT_WE', - 'PH_PERF_SEL_SC6_PA6_FIFO_EMPTY', 'PH_PERF_SEL_SC6_PA6_FIFO_FULL', - 'PH_PERF_SEL_SC6_PA6_FPOP_WE', 'PH_PERF_SEL_SC6_PA6_FPOV_WE', - 'PH_PERF_SEL_SC6_PA6_NULL_WE', - 'PH_PERF_SEL_SC6_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA7_DEALLOC_WE', 'PH_PERF_SEL_SC6_PA7_EOPG_WE', - 'PH_PERF_SEL_SC6_PA7_EOP_WE', 'PH_PERF_SEL_SC6_PA7_EVENT_WE', - 'PH_PERF_SEL_SC6_PA7_FIFO_EMPTY', 'PH_PERF_SEL_SC6_PA7_FIFO_FULL', - 'PH_PERF_SEL_SC6_PA7_FPOP_WE', 'PH_PERF_SEL_SC6_PA7_FPOV_WE', - 'PH_PERF_SEL_SC6_PA7_NULL_WE', - 'PH_PERF_SEL_SC6_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC6_SEND', 'PH_PERF_SEL_SC6_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC7_ARB_BUSY', - 'PH_PERF_SEL_SC7_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC7_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC7_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC7_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC7_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC7_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC7_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC7_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC7_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC7_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC7_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC7_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC7_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC7_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC7_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC7_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC7_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC7_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA0_DEALLOC_WE', 'PH_PERF_SEL_SC7_PA0_EOPG_WE', - 'PH_PERF_SEL_SC7_PA0_EOP_WE', 'PH_PERF_SEL_SC7_PA0_EVENT_WE', - 'PH_PERF_SEL_SC7_PA0_FIFO_EMPTY', 'PH_PERF_SEL_SC7_PA0_FIFO_FULL', - 'PH_PERF_SEL_SC7_PA0_FPOP_WE', 'PH_PERF_SEL_SC7_PA0_FPOV_WE', - 'PH_PERF_SEL_SC7_PA0_NULL_WE', - 'PH_PERF_SEL_SC7_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA1_DEALLOC_WE', 'PH_PERF_SEL_SC7_PA1_EOPG_WE', - 'PH_PERF_SEL_SC7_PA1_EOP_WE', 'PH_PERF_SEL_SC7_PA1_EVENT_WE', - 'PH_PERF_SEL_SC7_PA1_FIFO_EMPTY', 'PH_PERF_SEL_SC7_PA1_FIFO_FULL', - 'PH_PERF_SEL_SC7_PA1_FPOP_WE', 'PH_PERF_SEL_SC7_PA1_FPOV_WE', - 'PH_PERF_SEL_SC7_PA1_NULL_WE', - 'PH_PERF_SEL_SC7_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA2_DEALLOC_WE', 'PH_PERF_SEL_SC7_PA2_EOPG_WE', - 'PH_PERF_SEL_SC7_PA2_EOP_WE', 'PH_PERF_SEL_SC7_PA2_EVENT_WE', - 'PH_PERF_SEL_SC7_PA2_FIFO_EMPTY', 'PH_PERF_SEL_SC7_PA2_FIFO_FULL', - 'PH_PERF_SEL_SC7_PA2_FPOP_WE', 'PH_PERF_SEL_SC7_PA2_FPOV_WE', - 'PH_PERF_SEL_SC7_PA2_NULL_WE', - 'PH_PERF_SEL_SC7_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA3_DEALLOC_WE', 'PH_PERF_SEL_SC7_PA3_EOPG_WE', - 'PH_PERF_SEL_SC7_PA3_EOP_WE', 'PH_PERF_SEL_SC7_PA3_EVENT_WE', - 'PH_PERF_SEL_SC7_PA3_FIFO_EMPTY', 'PH_PERF_SEL_SC7_PA3_FIFO_FULL', - 'PH_PERF_SEL_SC7_PA3_FPOP_WE', 'PH_PERF_SEL_SC7_PA3_FPOV_WE', - 'PH_PERF_SEL_SC7_PA3_NULL_WE', - 'PH_PERF_SEL_SC7_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA4_DEALLOC_WE', 'PH_PERF_SEL_SC7_PA4_EOPG_WE', - 'PH_PERF_SEL_SC7_PA4_EOP_WE', 'PH_PERF_SEL_SC7_PA4_EVENT_WE', - 'PH_PERF_SEL_SC7_PA4_FIFO_EMPTY', 'PH_PERF_SEL_SC7_PA4_FIFO_FULL', - 'PH_PERF_SEL_SC7_PA4_FPOP_WE', 'PH_PERF_SEL_SC7_PA4_FPOV_WE', - 'PH_PERF_SEL_SC7_PA4_NULL_WE', - 'PH_PERF_SEL_SC7_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA5_DEALLOC_WE', 'PH_PERF_SEL_SC7_PA5_EOPG_WE', - 'PH_PERF_SEL_SC7_PA5_EOP_WE', 'PH_PERF_SEL_SC7_PA5_EVENT_WE', - 'PH_PERF_SEL_SC7_PA5_FIFO_EMPTY', 'PH_PERF_SEL_SC7_PA5_FIFO_FULL', - 'PH_PERF_SEL_SC7_PA5_FPOP_WE', 'PH_PERF_SEL_SC7_PA5_FPOV_WE', - 'PH_PERF_SEL_SC7_PA5_NULL_WE', - 'PH_PERF_SEL_SC7_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA6_DEALLOC_WE', 'PH_PERF_SEL_SC7_PA6_EOPG_WE', - 'PH_PERF_SEL_SC7_PA6_EOP_WE', 'PH_PERF_SEL_SC7_PA6_EVENT_WE', - 'PH_PERF_SEL_SC7_PA6_FIFO_EMPTY', 'PH_PERF_SEL_SC7_PA6_FIFO_FULL', - 'PH_PERF_SEL_SC7_PA6_FPOP_WE', 'PH_PERF_SEL_SC7_PA6_FPOV_WE', - 'PH_PERF_SEL_SC7_PA6_NULL_WE', - 'PH_PERF_SEL_SC7_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA7_DEALLOC_WE', 'PH_PERF_SEL_SC7_PA7_EOPG_WE', - 'PH_PERF_SEL_SC7_PA7_EOP_WE', 'PH_PERF_SEL_SC7_PA7_EVENT_WE', - 'PH_PERF_SEL_SC7_PA7_FIFO_EMPTY', 'PH_PERF_SEL_SC7_PA7_FIFO_FULL', - 'PH_PERF_SEL_SC7_PA7_FPOP_WE', 'PH_PERF_SEL_SC7_PA7_FPOV_WE', - 'PH_PERF_SEL_SC7_PA7_NULL_WE', - 'PH_PERF_SEL_SC7_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC7_SEND', 'PH_PERF_SEL_SC7_SRPS_WINDOW_VALID', - 'PH_SPI_MODE_ARBITER_SELECTED_PA_PH_FIFO_COUNT', - 'PH_SPI_MODE_DISABLED', 'PH_SPI_MODE_LARGEST_PA_PH_FIFO_COUNT', - 'PIPELINESTAT_START', 'PIPELINESTAT_STOP', 'PIPE_ALIGNED', - 'PIPE_ALIGNED_SURF', 'PIPE_ID0', 'PIPE_ID1', 'PIPE_ID2', - 'PIPE_ID3', 'PIPE_INT_MASK_MODE', 'PIPE_INT_MASK_MODE_DISABLE', - 'PIPE_INT_MASK_MODE_ENABLE', 'PIPE_INT_TYPE_MODE', - 'PIPE_INT_TYPE_MODE_DISABLE', 'PIPE_INT_TYPE_MODE_ENABLE', - 'PIPE_IN_FLUSH_URGENT', 'PIPE_IN_FLUSH_URGENT_DISABLE', - 'PIPE_IN_FLUSH_URGENT_ENABLE', 'PIPE_PHYPLL_PIXEL_RATE_SOURCE', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_RESERVED', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYA', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYB', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYC', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYD', - 'PIPE_PIXEL_RATE_PLL_SOURCE', - 'PIPE_PIXEL_RATE_PLL_SOURCE_DISPPLL', - 'PIPE_PIXEL_RATE_PLL_SOURCE_PHYPLL', 'PIPE_PIXEL_RATE_SOURCE', - 'PIPE_PIXEL_RATE_SOURCE_P0PLL', 'PIPE_PIXEL_RATE_SOURCE_P1PLL', - 'PIPE_PIXEL_RATE_SOURCE_P2PLL', 'PIPE_UNALIGNED_SURF', - 'PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_1', - 'PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 'PIXCDC_MEM_PWR_LIGHT_SLEEP_MODE', 'PIXEL_PIPE_OCCLUSION_COUNT_0', - 'PIXEL_PIPE_OCCLUSION_COUNT_1', 'PIXEL_PIPE_OCCLUSION_COUNT_2', - 'PIXEL_PIPE_OCCLUSION_COUNT_3', 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_0', - 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_1', - 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_0', - 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_1', 'PIXEL_PIPE_STAT_CONTROL', - 'PIXEL_PIPE_STAT_DUMP', 'PIXEL_PIPE_STAT_RESET', - 'PIXEL_PIPE_STRIDE_128_BITS', 'PIXEL_PIPE_STRIDE_256_BITS', - 'PIXEL_PIPE_STRIDE_32_BITS', 'PIXEL_PIPE_STRIDE_64_BITS', - 'PIX_DYNAMIC_EXPANSION', 'PIX_EXPAND_MODE', 'PIX_ZERO_EXPANSION', - 'PLL_CFG_IF_SOFT_RESET', 'PLL_CFG_IF_SOFT_RESET_FORCE', - 'PLL_CFG_IF_SOFT_RESET_NOOP', 'PM_ASSERT_RESET', - 'PM_ASSERT_RESET_0', 'PM_ASSERT_RESET_1', 'POINTLIST', - 'POWER_STATE_ENUM', 'POWER_STATE_ENUM_DS', 'POWER_STATE_ENUM_LS', - 'POWER_STATE_ENUM_ON', 'POWER_STATE_ENUM_SD', 'PRE_CSC_BYPASS', - 'PRE_CSC_MODE_ENUM', 'PRE_CSC_SET_A', 'PRE_CSC_SET_B', - 'PRE_DEGAM_BT2020', 'PRE_DEGAM_BT2100HLG', 'PRE_DEGAM_BT2100PQ', - 'PRE_DEGAM_BYPASS', 'PRE_DEGAM_ENABLE', 'PRE_DEGAM_GAMMA_22', - 'PRE_DEGAM_GAMMA_24', 'PRE_DEGAM_GAMMA_26', 'PRE_DEGAM_MODE', - 'PRE_DEGAM_SELECT', 'PRE_DEGAM_SRGB', 'PROG_SEQ', 'PROTVIOL', - 'PRQ_MRQ_FLUSH_URGENT', 'PRQ_MRQ_FLUSH_URGENT_DISABLE', - 'PRQ_MRQ_FLUSH_URGENT_ENABLE', 'PS', 'PSLC_ASAP', 'PSLC_AUTO', - 'PSLC_COUNTDOWN', 'PSLC_ON_HANG_ONLY', 'PS_DONE', - 'PS_PARTIAL_FLUSH', 'PTE_BUFFER_MODE', 'PTE_BUFFER_MODE_0', - 'PTE_BUFFER_MODE_1', 'PTE_ROW_HEIGHT_LINEAR', - 'PTE_ROW_HEIGHT_LINEAR_1024L', 'PTE_ROW_HEIGHT_LINEAR_128L', - 'PTE_ROW_HEIGHT_LINEAR_16L', 'PTE_ROW_HEIGHT_LINEAR_256L', - 'PTE_ROW_HEIGHT_LINEAR_32L', 'PTE_ROW_HEIGHT_LINEAR_512L', - 'PTE_ROW_HEIGHT_LINEAR_64L', 'PTE_ROW_HEIGHT_LINEAR_8L', - 'PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE', - 'PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN', - 'PWRSEQ_BL_PWM_CNTL2_DBG_BL_PWM_INPUT_REFCLK_SELECT', - 'PWRSEQ_BL_PWM_CNTL_BL_PWM_EN', - 'PWRSEQ_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN', - 'PWRSEQ_BL_PWM_DISABLE', 'PWRSEQ_BL_PWM_ENABLE', - 'PWRSEQ_BL_PWM_FRACTIONAL_DISABLE', - 'PWRSEQ_BL_PWM_FRACTIONAL_ENABLE', - 'PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_DISABLE', - 'PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN', - 'PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_ENABLE', - 'PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN', - 'PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL1_PWM', - 'PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL_PWM', - 'PWRSEQ_BL_PWM_GRP1_REG_LOCK', - 'PWRSEQ_BL_PWM_GRP1_REG_LOCK_DISABLE', - 'PWRSEQ_BL_PWM_GRP1_REG_LOCK_ENABLE', - 'PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START', - 'PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START_DISABLE', - 'PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START_ENABLE', - 'PWRSEQ_BL_PWM_OVERRIDE_BL_OUT_DISABLE', - 'PWRSEQ_BL_PWM_OVERRIDE_BL_OUT_ENABLE', - 'PWRSEQ_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN_NORMAL', - 'PWRSEQ_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN_PWM', - 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG1', - 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG2', - 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG3', - 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_NORMAL', - 'PWRSEQ_GPIO_MASK_EN', 'PWRSEQ_GPIO_MASK_EN_HARDWARE', - 'PWRSEQ_GPIO_MASK_EN_SOFTWARE', 'PWRSEQ_PANEL_BLON_OFF', - 'PWRSEQ_PANEL_BLON_ON', 'PWRSEQ_PANEL_BLON_POL_INVERT', - 'PWRSEQ_PANEL_BLON_POL_NON_INVERT', 'PWRSEQ_PANEL_DIGON_OFF', - 'PWRSEQ_PANEL_DIGON_ON', 'PWRSEQ_PANEL_DIGON_POL_INVERT', - 'PWRSEQ_PANEL_DIGON_POL_NON_INVERT', - 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON', - 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON_POL', - 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON', - 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON_POL', - 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_SYNCEN_POL', - 'PWRSEQ_PANEL_PWRSEQ_CNTL_TARGET_STATE', - 'PWRSEQ_PANEL_PWRSEQ_DELAY2_PANEL_VARY_BL_OVERRIDE_EN', - 'PWRSEQ_PANEL_PWRSEQ_TARGET_STATE_LCD_OFF', - 'PWRSEQ_PANEL_PWRSEQ_TARGET_STATE_LCD_ON', - 'PWRSEQ_PANEL_SYNCEN_POL_INVERT', - 'PWRSEQ_PANEL_SYNCEN_POL_NON_INVERT', - 'PWRSEQ_PANEL_VARY_BL_OVERRIDE_EN_BLON', - 'PWRSEQ_PANEL_VARY_BL_OVERRIDE_EN_SEPARATE', 'PerfCounter_Vals', - 'PhSPIstatusMode', 'PixelPipeCounterId', 'PixelPipeStride', - 'PkrMap', 'PkrXsel', 'PkrXsel2', 'PkrYsel', 'RAMA', 'RAMA_ACCESS', - 'RAMB', 'RAMB_ACCESS', 'RAM_LUT', 'RANGE_00', 'RANGE_FF', - 'RASTER_CONFIG_PKR_MAP_0', 'RASTER_CONFIG_PKR_MAP_1', - 'RASTER_CONFIG_PKR_MAP_2', 'RASTER_CONFIG_PKR_MAP_3', - 'RASTER_CONFIG_PKR_XSEL2_0', 'RASTER_CONFIG_PKR_XSEL2_1', - 'RASTER_CONFIG_PKR_XSEL2_2', 'RASTER_CONFIG_PKR_XSEL2_3', - 'RASTER_CONFIG_PKR_XSEL_0', 'RASTER_CONFIG_PKR_XSEL_1', - 'RASTER_CONFIG_PKR_XSEL_2', 'RASTER_CONFIG_PKR_XSEL_3', - 'RASTER_CONFIG_PKR_YSEL_0', 'RASTER_CONFIG_PKR_YSEL_1', - 'RASTER_CONFIG_PKR_YSEL_2', 'RASTER_CONFIG_PKR_YSEL_3', - 'RASTER_CONFIG_RB_MAP_0', 'RASTER_CONFIG_RB_MAP_1', - 'RASTER_CONFIG_RB_MAP_2', 'RASTER_CONFIG_RB_MAP_3', - 'RASTER_CONFIG_RB_XSEL2_0', 'RASTER_CONFIG_RB_XSEL2_1', - 'RASTER_CONFIG_RB_XSEL2_2', 'RASTER_CONFIG_RB_XSEL2_3', - 'RASTER_CONFIG_RB_XSEL_0', 'RASTER_CONFIG_RB_XSEL_1', - 'RASTER_CONFIG_RB_YSEL_0', 'RASTER_CONFIG_RB_YSEL_1', - 'RASTER_CONFIG_SC_MAP_0', 'RASTER_CONFIG_SC_MAP_1', - 'RASTER_CONFIG_SC_MAP_2', 'RASTER_CONFIG_SC_MAP_3', - 'RASTER_CONFIG_SC_XSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SC_XSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SC_XSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SC_XSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_8_WIDE_TILE', 'RASTER_CONFIG_SE_MAP_0', - 'RASTER_CONFIG_SE_MAP_1', 'RASTER_CONFIG_SE_MAP_2', - 'RASTER_CONFIG_SE_MAP_3', 'RASTER_CONFIG_SE_PAIR_MAP_0', - 'RASTER_CONFIG_SE_PAIR_MAP_1', 'RASTER_CONFIG_SE_PAIR_MAP_2', - 'RASTER_CONFIG_SE_PAIR_MAP_3', - 'RASTER_CONFIG_SE_PAIR_XSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_XSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_XSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_XSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_8_WIDE_TILE', 'RAW', - 'RDPCSTX_CLOCK_CNTL_RDPCS_EXT_REFCLK_EN', - 'RDPCSTX_CLOCK_CNTL_RDPCS_OCLACLK_CLOCK_ON', - 'RDPCSTX_CLOCK_CNTL_RDPCS_OCLACLK_EN', - 'RDPCSTX_CLOCK_CNTL_RDPCS_OCLACLK_GATE_DIS', - 'RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_CLOCK_ON', - 'RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_EN', - 'RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_GATE_DIS', - 'RDPCSTX_CLOCK_CNTL_RDPCS_SRAMCLK_PASS', - 'RDPCSTX_CLOCK_CNTL_RDPCS_TX_CLK_CLOCK_ON', - 'RDPCSTX_CLOCK_CNTL_RDPCS_TX_CLK_EN', - 'RDPCSTX_CLOCK_CNTL_RDPCS_TX_CLK_GATE_DIS', - 'RDPCSTX_CLOCK_CNTL_TX_CLK_EN', - 'RDPCSTX_CNTL_RDPCS_CBUS_SOFT_RESET', - 'RDPCSTX_CNTL_RDPCS_SRAM_SOFT_RESET', - 'RDPCSTX_CNTL_RDPCS_TX_FIFO_EN', - 'RDPCSTX_CNTL_RDPCS_TX_FIFO_LANE_EN', - 'RDPCSTX_CNTL_RDPCS_TX_SOFT_RESET', 'RDPCSTX_FIFO_EMPTY', - 'RDPCSTX_FIFO_FULL', 'RDPCSTX_FIFO_IS_EMPTY', - 'RDPCSTX_FIFO_IS_FULL', 'RDPCSTX_FIFO_NOT_EMPTY', - 'RDPCSTX_FIFO_NOT_FULL', - 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE', - 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE_MASK', - 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE', - 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE_MASK', - 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_REG_FIFO_ERROR_MASK', - 'RDPCSTX_INTERRUPT_CONTROL_RDPCS_TX_FIFO_ERROR_MASK', - 'RDPCSTX_PHY_CNTL0_RDPCS_PHY_CR_MUX_SEL', - 'RDPCSTX_PHY_CNTL0_RDPCS_PHY_CR_PARA_SEL', - 'RDPCSTX_PHY_CNTL0_RDPCS_PHY_REF_RANGE', - 'RDPCSTX_PHY_CNTL0_RDPCS_SRAM_EXT_LD_DONE', - 'RDPCSTX_PHY_CNTL0_RDPCS_SRAM_INIT_DONE', - 'RDPCSTX_PHY_CNTL11_RDPCS_PHY_DP_REF_CLK_MPLLB_DIV', - 'RDPCSTX_PHY_CNTL11_RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV', - 'RDPCSTX_PHY_CNTL12_RDPCS_PHY_DP_MPLLB_TX_CLK_DIV', - 'RDPCSTX_PHY_CNTL4_RDPCS_PHY_DP_TX_TERM_CTRL', - 'RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_DETRX_RESULT', - 'RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_RATE', - 'RDPCSTX_PHY_CNTL_RDPCS_PHY_DP_TX_WIDTH', - 'RDPCSTX_PHY_CNTL_RRDPCS_PHY_DP_TX_PSTATE', - 'RDPCSTX_PHY_REF_ALT_CLK_EN', 'RDPCSTX_TX_FIFO_DISABLED_MASK', - 'RDPCSTX_TX_FIFO_DISABLED_MASK_DISABLE', - 'RDPCSTX_TX_FIFO_DISABLED_MASK_ENABLE', - 'RDPCS_CBUS_SOFT_RESET_DISABLE', 'RDPCS_CBUS_SOFT_RESET_ENABLE', - 'RDPCS_DBG_OCLA_SEL', 'RDPCS_DBG_OCLA_SEL_MON_OUT_15_8', - 'RDPCS_DBG_OCLA_SEL_MON_OUT_23_16', - 'RDPCS_DBG_OCLA_SEL_MON_OUT_31_24', - 'RDPCS_DBG_OCLA_SEL_MON_OUT_39_32', - 'RDPCS_DBG_OCLA_SEL_MON_OUT_47_40', - 'RDPCS_DBG_OCLA_SEL_MON_OUT_55_48', - 'RDPCS_DBG_OCLA_SEL_MON_OUT_63_56', - 'RDPCS_DBG_OCLA_SEL_MON_OUT_7_0', - 'RDPCS_DPALT_4LANE_TOGGLE_2LANE', - 'RDPCS_DPALT_4LANE_TOGGLE_4LANE', - 'RDPCS_DPALT_4LANE_TOGGLE_MASK_DISABLE', - 'RDPCS_DPALT_4LANE_TOGGLE_MASK_ENABLE', - 'RDPCS_DPALT_DISABLE_TOGGLE_DISABLE', - 'RDPCS_DPALT_DISABLE_TOGGLE_ENABLE', - 'RDPCS_DPALT_DISABLE_TOGGLE_MASK_DISABLE', - 'RDPCS_DPALT_DISABLE_TOGGLE_MASK_ENABLE', - 'RDPCS_EXT_REFCLK_DISABLE', 'RDPCS_EXT_REFCLK_ENABLE', - 'RDPCS_EXT_REFCLK_EN_DISABLE', 'RDPCS_EXT_REFCLK_EN_ENABLE', - 'RDPCS_LANE_BIT_ORDER_REVERSE_DISABLE', - 'RDPCS_LANE_BIT_ORDER_REVERSE_ENABLE', - 'RDPCS_LANE_PACK_FROM_MSB_DISABLE', - 'RDPCS_LANE_PACK_FROM_MSB_ENABLE', 'RDPCS_MEM_PWR_DEEP_SLEEP', - 'RDPCS_MEM_PWR_LIGHT_SLEEP', 'RDPCS_MEM_PWR_NO_FORCE', - 'RDPCS_MEM_PWR_PWR_STATE_DEEP_SLEEP', - 'RDPCS_MEM_PWR_PWR_STATE_LIGHT_SLEEP', - 'RDPCS_MEM_PWR_PWR_STATE_ON', 'RDPCS_MEM_PWR_PWR_STATE_SHUT_DOWN', - 'RDPCS_MEM_PWR_SHUT_DOWN', 'RDPCS_OCLACLK_CLOCK_OFF', - 'RDPCS_OCLACLK_CLOCK_ON', 'RDPCS_OCLACLK_DISABLE', - 'RDPCS_OCLACLK_ENABLE', 'RDPCS_OCLACLK_GATE_DISABLE', - 'RDPCS_OCLACLK_GATE_ENABLE', 'RDPCS_PHY_CR_MUX_SEL_FOR_DC', - 'RDPCS_PHY_CR_MUX_SEL_FOR_USB', 'RDPCS_PHY_CR_PARA_SEL_CR', - 'RDPCS_PHY_CR_PARA_SEL_JTAG', 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV', - 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV10', - 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV2', - 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV3', - 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV4', - 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV5', - 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV6', - 'RDPCS_PHY_DP_MPLLB_TX_CLK_DIV8', - 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV1', - 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV16', - 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV2', - 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV3', - 'RDPCS_PHY_DP_REF_CLK_MPLLB_DIV8', - 'RDPCS_PHY_DP_TX_DETRX_RESULT_DETECT', - 'RDPCS_PHY_DP_TX_DETRX_RESULT_NO_DETECT', 'RDPCS_PHY_DP_TX_RATE', - 'RDPCS_PHY_DP_TX_RATE_DIV2', 'RDPCS_PHY_DP_TX_RATE_DIV4', - 'RDPCS_PHY_DP_TX_TERM_CTRL_40', 'RDPCS_PHY_DP_TX_TERM_CTRL_42', - 'RDPCS_PHY_DP_TX_TERM_CTRL_44', 'RDPCS_PHY_DP_TX_TERM_CTRL_46', - 'RDPCS_PHY_DP_TX_TERM_CTRL_48', 'RDPCS_PHY_DP_TX_TERM_CTRL_50', - 'RDPCS_PHY_DP_TX_TERM_CTRL_52', 'RDPCS_PHY_DP_TX_TERM_CTRL_54', - 'RDPCS_PHY_DP_TX_WIDTH_10', 'RDPCS_PHY_DP_TX_WIDTH_16', - 'RDPCS_PHY_DP_TX_WIDTH_20', 'RDPCS_PHY_DP_TX_WIDTH_8', - 'RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_0', - 'RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_1', - 'RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_2', - 'RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_3', - 'RDPCS_PHY_REF_ALT_CLK_DISABLE', 'RDPCS_PHY_REF_ALT_CLK_ENABLE', - 'RDPCS_PHY_REF_RANGE_0', 'RDPCS_PHY_REF_RANGE_1', - 'RDPCS_PHY_REF_RANGE_2', 'RDPCS_PHY_REF_RANGE_3', - 'RDPCS_PHY_REF_RANGE_4', 'RDPCS_PHY_REF_RANGE_5', - 'RDPCS_PHY_REF_RANGE_6', 'RDPCS_PHY_REF_RANGE_7', - 'RDPCS_REG_FIFO_ERROR_MASK_DISABLE', - 'RDPCS_REG_FIFO_ERROR_MASK_ENABLE', 'RDPCS_SRAMCLK_DISABLE', - 'RDPCS_SRAMCLK_ENABLE', 'RDPCS_SRAMCLK_GATE_DISABLE', - 'RDPCS_SRAMCLK_GATE_ENABLE', 'RDPCS_SRAMCLK_NOT_PASS', - 'RDPCS_SRAMCLK_PASS', 'RDPCS_SRAM_EXT_LD_DONE', - 'RDPCS_SRAM_EXT_LD_NOT_DONE', 'RDPCS_SRAM_INIT_DONE', - 'RDPCS_SRAM_INIT_NOT_DONE', 'RDPCS_SRAM_SRAM_RESET_DISABLE', - 'RDPCS_SRAM_SRAM_RESET_ENABLE', 'RDPCS_SYMCLK_SRAMCLK_CLOCK_OFF', - 'RDPCS_SYMCLK_SRAMCLK_CLOCK_ON', 'RDPCS_TEST_CLK_SEL', - 'RDPCS_TEST_CLK_SEL_CFGCLK', - 'RDPCS_TEST_CLK_SEL_DP_MPLLB_DIV_CLK', - 'RDPCS_TEST_CLK_SEL_DP_TX0_WORD_CLK', - 'RDPCS_TEST_CLK_SEL_DP_TX1_WORD_CLK', - 'RDPCS_TEST_CLK_SEL_DP_TX2_WORD_CLK', - 'RDPCS_TEST_CLK_SEL_DP_TX3_WORD_CLK', - 'RDPCS_TEST_CLK_SEL_EXT_CR_CLK', - 'RDPCS_TEST_CLK_SEL_HDMI_MPLLB_HDMI_PIXEL_CLK', - 'RDPCS_TEST_CLK_SEL_NONE', 'RDPCS_TEST_CLK_SEL_PHY_REF_DIG_CLK', - 'RDPCS_TEST_CLK_SEL_REF_DIG_FR_clk', 'RDPCS_TEST_CLK_SEL_SRAMCLK', - 'RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS', - 'RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS_DIV4', - 'RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS', - 'RDPCS_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS_DIV4', - 'RDPCS_TEST_CLK_SEL_dtb_out0', 'RDPCS_TEST_CLK_SEL_dtb_out1', - 'RDPCS_TX_CLK_CLOCK_OFF', 'RDPCS_TX_CLK_CLOCK_ON', - 'RDPCS_TX_CLK_DISABLE', 'RDPCS_TX_CLK_ENABLE', - 'RDPCS_TX_CLK_GATE_DISABLE', 'RDPCS_TX_CLK_GATE_ENABLE', - 'RDPCS_TX_CNTL_TX_LANE_PACK_FROM_MSB', 'RDPCS_TX_FIFO_DISABLE', - 'RDPCS_TX_FIFO_ENABLE', 'RDPCS_TX_FIFO_ERROR_MASK_DISABLE', - 'RDPCS_TX_FIFO_ERROR_MASK_ENABLE', 'RDPCS_TX_FIFO_LANE_DISABLE', - 'RDPCS_TX_FIFO_LANE_ENABLE', 'RDPCS_TX_SOFT_RESET_DISABLE', - 'RDPCS_TX_SOFT_RESET_ENABLE', - 'RDPCS_TX_SRAM_CNTL_RDPCS_MEM_PWR_FORCE', - 'RDPCS_TX_SRAM_CNTL_RDPCS_MEM_PWR_PWR_STATE', - 'READ_COMPRESSION_MODE', 'READ_SEQ', 'RECTLIST', 'RECT_2D', - 'RED_LUT', 'REFER_TO_DP_SOF', 'REFER_TO_OTG_SOF', - 'REG_SECURE_VIOLATE_READ', 'REG_SECURE_VIOLATE_WRITE', - 'REG_UNALLOCATED_ADDR_READ', 'REG_UNALLOCATED_ADDR_WRITE', - 'REG_VIRTUAL_READ', 'REG_VIRTUAL_WRITE', 'RESERVED1', 'RESERVED2', - 'RESERVED3', 'RESERVED4', 'RESERVED_1', 'RESERVED_10', - 'RESERVED_11', 'RESERVED_20', 'RESERVED_21', 'RESERVED_22', - 'RESERVED_23', 'RESERVED_3', 'RESERVED_32', 'RESERVED_33', - 'RESERVED_34', 'RESERVED_35', 'RESERVED_44', 'RESERVED_45', - 'RESERVED_46', 'RESERVED_47', 'RESERVED_56', 'RESERVED_57', - 'RESERVED_58', 'RESERVED_59', 'RESERVED_60', 'RESERVED_61', - 'RESERVED_62', 'RESERVED_63', 'RESERVED_72', 'RESERVED_73', - 'RESERVED_74', 'RESERVED_75', 'RESERVED_8', 'RESERVED_84', - 'RESERVED_85', 'RESERVED_86', 'RESERVED_87', 'RESERVED_88', - 'RESERVED_89', 'RESERVED_9', 'RESERVED_90', 'RESERVED_91', - 'RESERVED_RDPOLICY', 'RESET_TO_LOWEST_VGT', 'RESET_VTX_CNT', - 'RESPONSE_STATUS', 'RE_Z', 'RGB111110_FIX', 'RGB111110_FLOAT', - 'RGB565', 'RGBA1010102', 'RGBA16161616_10LSB', - 'RGBA16161616_10MSB', 'RGBA16161616_12LSB', 'RGBA16161616_12MSB', - 'RGBA16161616_FLOAT', 'RGBA16161616_SNORM', 'RGBA16161616_UNORM', - 'RGBA4444', 'RGBA5551', 'RGBA8888', 'RGBE', 'RINGID0', 'RINGID1', - 'RINGID2', 'RINGID3', 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL', - 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_ENABLED', - 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL', - 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_ENABLED', - 'RLC_DOORBELL_MODE', 'RLC_DOORBELL_MODE_DISABLE', - 'RLC_DOORBELL_MODE_ENABLE', 'RLC_DOORBELL_MODE_ENABLE_PF', - 'RLC_DOORBELL_MODE_ENABLE_PF_VF', 'RLC_PERFCOUNTER_SEL', - 'RLC_PERFMON_STATE', 'RLC_PERFMON_STATE_DISABLE', - 'RLC_PERFMON_STATE_ENABLE', 'RLC_PERFMON_STATE_RESERVED_3', - 'RLC_PERFMON_STATE_RESERVED_4', 'RLC_PERFMON_STATE_RESERVED_5', - 'RLC_PERFMON_STATE_RESERVED_6', 'RLC_PERFMON_STATE_RESET', - 'RLC_PERFMON_STATE_ROLLOVER', 'RLC_PERF_SEL_CP_INTERRUPT', - 'RLC_PERF_SEL_GRBM_INTERRUPT', 'RLC_PERF_SEL_IH_INTERRUPT', - 'RLC_PERF_SEL_POWER_FEATURE_0', 'RLC_PERF_SEL_POWER_FEATURE_1', - 'RLC_PERF_SEL_SERDES_COMMAND_WRITE', 'RLC_PERF_SEL_SPM_INTERRUPT', - 'RMIPerfSel', 'RMI_PERF_SEL_BUSY', - 'RMI_PERF_SEL_CONSUMER_PROBEGEN_CB_RTS_RTR', - 'RMI_PERF_SEL_CONSUMER_PROBEGEN_DB_RTS_RTR', - 'RMI_PERF_SEL_CONSUMER_PROBEGEN_IN0_RTS_RTR', - 'RMI_PERF_SEL_CONSUMER_PROBEGEN_IN1_RTS_RTR', - 'RMI_PERF_SEL_CONSUMER_PROBEGEN_READ_RTS_RTR', - 'RMI_PERF_SEL_CONSUMER_PROBEGEN_WRITE_RTS_RTR', - 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTSB_RTR', - 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTSB_RTRB', - 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTS_RTR', - 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTS_RTRB', - 'RMI_PERF_SEL_DYN_CLK_CMN_VLD', 'RMI_PERF_SEL_DYN_CLK_PERF_VLD', - 'RMI_PERF_SEL_DYN_CLK_RB_VLD', 'RMI_PERF_SEL_EVENT_SEND', - 'RMI_PERF_SEL_NONE', 'RMI_PERF_SEL_PERF_WINDOW', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_ALL_CID', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID0', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID1', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID2', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID3', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID4', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID5', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID6', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID7', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_INFLIGHT_ALL_ORONE_CID', - 'RMI_PERF_SEL_RB_RMI_32BWRREQ_INFLIGHT_ALL_ORONE_CID', - 'RMI_PERF_SEL_RB_RMI_RDREQ_ALL_CID', - 'RMI_PERF_SEL_RB_RMI_RDREQ_BURST_ALL_ORONE_CID', - 'RMI_PERF_SEL_RB_RMI_RDREQ_BURST_LENGTH_ALL_ORONE_CID', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID0', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID1', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID2', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID3', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID4', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID5', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID6', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID7', - 'RMI_PERF_SEL_RB_RMI_RDREQ_RESIDENCY', - 'RMI_PERF_SEL_RB_RMI_RDREQ_TO_RDRET_BUSY', - 'RMI_PERF_SEL_RB_RMI_RD_BUSY', - 'RMI_PERF_SEL_RB_RMI_RD_FIFO_EMPTY', - 'RMI_PERF_SEL_RB_RMI_RD_FIFO_MAX', 'RMI_PERF_SEL_RB_RMI_RD_IDLE', - 'RMI_PERF_SEL_RB_RMI_RD_INTF_BUSY', - 'RMI_PERF_SEL_RB_RMI_RD_STALL', 'RMI_PERF_SEL_RB_RMI_RD_STARVE', - 'RMI_PERF_SEL_RB_RMI_WRREQ_ALL_CID', - 'RMI_PERF_SEL_RB_RMI_WRREQ_BURST_ALL_ORONE_CID', - 'RMI_PERF_SEL_RB_RMI_WRREQ_BURST_LENGTH_ALL_ORONE_CID', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID0', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID1', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID2', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID3', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID4', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID5', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID6', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID7', - 'RMI_PERF_SEL_RB_RMI_WRREQ_RESIDENCY', - 'RMI_PERF_SEL_RB_RMI_WRREQ_TO_WRRET_BUSY', - 'RMI_PERF_SEL_RB_RMI_WR_BUSY', - 'RMI_PERF_SEL_RB_RMI_WR_FIFO_EMPTY', - 'RMI_PERF_SEL_RB_RMI_WR_FIFO_MAX', 'RMI_PERF_SEL_RB_RMI_WR_IDLE', - 'RMI_PERF_SEL_RB_RMI_WR_INTF_BUSY', - 'RMI_PERF_SEL_RB_RMI_WR_STALL', 'RMI_PERF_SEL_RB_RMI_WR_STARVE', - 'RMI_PERF_SEL_REG_CLK_VLD', 'RMI_PERF_SEL_REORDER_FIFO_BUSY', - 'RMI_PERF_SEL_REORDER_FIFO_REQ', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_ALL_CID', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID0', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID1', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID2', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID3', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID4', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID5', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID6', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID7', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK0', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK1', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK2', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK3', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_ALL_CID', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID0', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID1', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID2', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID3', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID4', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID5', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID6', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID7', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_ALL_CID', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID0', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID1', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID2', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID3', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID4', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID5', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID6', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID7', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK0', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK1', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK2', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK3', - 'RMI_PERF_SEL_RMI_TC_64BRDREQ_ALL_ORONE_CID', - 'RMI_PERF_SEL_RMI_TC_64BWRREQ_ALL_ORONE_CID', - 'RMI_PERF_SEL_RMI_TC_CREDIT_FULL_NO_PENDING_SEND', - 'RMI_PERF_SEL_RMI_TC_CREDIT_ZERO_PENDING_SEND', - 'RMI_PERF_SEL_RMI_TC_RDREQ_ALL_CID', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID0', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID1', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID2', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID3', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID4', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID5', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID6', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID7', - 'RMI_PERF_SEL_RMI_TC_RDREQ_INFLIGHT_ALL_CID', - 'RMI_PERF_SEL_RMI_TC_REQ_BUSY', - 'RMI_PERF_SEL_RMI_TC_STALL_ALLREQ', - 'RMI_PERF_SEL_RMI_TC_STALL_RDREQ', - 'RMI_PERF_SEL_RMI_TC_STALL_WRREQ', - 'RMI_PERF_SEL_RMI_TC_WRREQ_ALL_CID', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID0', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID1', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID2', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID3', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID4', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID5', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID6', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID7', - 'RMI_PERF_SEL_RMI_TC_WRREQ_INFLIGHT_ALL_CID', - 'RMI_PERF_SEL_TCIW_BUSY', 'RMI_PERF_SEL_TCIW_INFLIGHT_COUNT', - 'RMI_PERF_SEL_TCIW_REQ', - 'RMI_PERF_SEL_TC_RMI_RDRET_VALID_ALL_CID', - 'RMI_PERF_SEL_TC_RMI_WRRET_VALID_ALL_CID', 'ROM_SIGNATURE', - 'ROTATE_0_DEGREES', 'ROTATE_180_DEGREES', 'ROTATE_270_DEGREES', - 'ROTATE_90_DEGREES', 'ROTATION_ANGLE', 'ROW_TTU_MODE', - 'RPDCSTX_CNTL_TX_LANE_BIT_ORDER_REVERSE_BEFORE_PACK', - 'RRDPCS_PHY_DP_TX_PSTATE_HOLD', - 'RRDPCS_PHY_DP_TX_PSTATE_HOLD_OFF', - 'RRDPCS_PHY_DP_TX_PSTATE_POWER_DOWN', - 'RRDPCS_PHY_DP_TX_PSTATE_POWER_UP', 'RSPM_CMD', - 'RSPM_CMD_CALIBRATE', 'RSPM_CMD_FORCE_SAMPLE', 'RSPM_CMD_IDLE', - 'RSPM_CMD_INVALID', 'RSPM_CMD_PERF_RESET', 'RSPM_CMD_PERF_SAMPLE', - 'RSPM_CMD_PROF_START', 'RSPM_CMD_PROF_STOP', 'RSPM_CMD_SPM_RESET', - 'RSPM_CMD_SPM_START', 'RSPM_CMD_SPM_STOP', 'RST_PIX_CNT', - 'RSV_TAG_RAM', 'RbMap', 'RbXsel', 'RbXsel2', 'RbYsel', - 'ReadPolicy', 'Reserved_0x00', 'RingCounterControl', - 'SAMPLE_PIPELINESTAT', 'SAMPLE_STREAMOUTSTATS', - 'SAMPLE_STREAMOUTSTATS1', 'SAMPLE_STREAMOUTSTATS2', - 'SAMPLE_STREAMOUTSTATS3', 'SCL_2TAP_HARDCODE', 'SCL_ALPHA_COEF', - 'SCL_ALPHA_COEF_FIRST', 'SCL_ALPHA_COEF_SECOND', - 'SCL_AUTOCAL_MODE', 'SCL_BOUNDARY', 'SCL_BOUNDARY_BLACK', - 'SCL_BOUNDARY_EDGE', 'SCL_CHROMA_COEF', 'SCL_CHROMA_COEF_FIRST', - 'SCL_CHROMA_COEF_SECOND', 'SCL_COEF_2TAP_HARDCODE_OFF', - 'SCL_COEF_2TAP_HARDCODE_ON', 'SCL_COEF_CHROMA_HORZ_FILTER', - 'SCL_COEF_CHROMA_VERT_FILTER', 'SCL_COEF_FILTER_TYPE_SEL', - 'SCL_COEF_LUMA_HORZ_FILTER', 'SCL_COEF_LUMA_VERT_FILTER', - 'SCL_COEF_RAM_SEL', 'SCL_COEF_RAM_SEL_0', 'SCL_COEF_RAM_SEL_1', - 'SCL_COEF_SC_HORZ_FILTER', 'SCL_COEF_SC_VERT_FILTER', - 'SCL_SHARP_DISABLE', 'SCL_SHARP_EN', 'SCL_SHARP_ENABLE', 'SCOPE', - 'SCOPE_CU', 'SCOPE_DEV', 'SCOPE_SE', 'SCOPE_SYS', - 'SC_BACKEND_BUSY', 'SC_BACKEND_PRIM_FIFO_FULL', 'SC_BB_DISCARD', - 'SC_BCI_CREDIT_AT_MAX', 'SC_BCI_CREDIT_AT_MAX_NO_PENDING_SEND', - 'SC_BCI_CREDIT_AT_ZERO_WITH_PENDING_SEND', 'SC_BCI_SEND', - 'SC_BE_VRS_FB_RET', 'SC_BE_VRS_FB_RET_HIT', - 'SC_BE_VRS_FB_RET_STALLED', 'SC_BE_VRS_RD_REQ', - 'SC_BE_VRS_RD_REQ_HIT', 'SC_BE_VRS_RD_REQ_STALLED', - 'SC_BE_VRS_RD_RET', 'SC_BE_VRS_RD_RET_STALLED', - 'SC_BM_BE0_STALLED', 'SC_BM_BE1_STALLED', 'SC_BM_BE2_STALLED', - 'SC_BM_BE3_STALLED', 'SC_BM_BUSY', - 'SC_BM_MULTI_ACCUM_1_BE_STALLED', - 'SC_BM_MULTI_ACCUM_2_BE_STALLED', - 'SC_BM_MULTI_ACCUM_3_BE_STALLED', - 'SC_BM_MULTI_ACCUM_4_BE_STALLED', 'SC_BUSY_CNT_NOT_ZERO', - 'SC_DB0_QUAD_INTF_BUSY', 'SC_DB0_QUAD_INTF_CREDIT_AT_MAX', - 'SC_DB0_QUAD_INTF_IDLE', 'SC_DB0_QUAD_INTF_SEND', - 'SC_DB0_QUAD_INTF_STALLED_BY_DB', 'SC_DB0_TILE_INTERFACE_BUSY', - 'SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX', - 'SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND', - 'SC_DB0_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'SC_DB0_TILE_INTERFACE_SEND', 'SC_DB0_TILE_INTERFACE_SEND_EVENT', - 'SC_DB0_TILE_MASK_FIFO_FULL', - 'SC_DB0_WE_STALLED_BY_RSLT_FIFO_FULL', - 'SC_DB0_WE_TILE_MASK_RETURN_FIFO_FULL_WITH_WE_RSLT_FIFO_STALL', - 'SC_EARLYZ_QUAD_COUNT', 'SC_EARLYZ_QUAD_WITH_1_PIX', - 'SC_EARLYZ_QUAD_WITH_2_PIX', 'SC_EARLYZ_QUAD_WITH_3_PIX', - 'SC_EARLYZ_QUAD_WITH_4_PIX', 'SC_GL1X_BUSY', - 'SC_GRP0_DYN_SCLK_BUSY', 'SC_GRP1_DYN_SCLK_BUSY', - 'SC_GRP2_DYN_SCLK_BUSY', 'SC_GRP3_DYN_SCLK_BUSY', - 'SC_GRP4_DYN_SCLK_BUSY', 'SC_GRP5_DYN_SCLK_BUSY', - 'SC_GRP6_DYN_SCLK_BUSY', 'SC_GRP7_DYN_SCLK_BUSY', - 'SC_GRP8_DYN_SCLK_BUSY', 'SC_GRP9_DYN_SCLK_BUSY', 'SC_HALF_LSB', - 'SC_LSB_ONE_SIDED', 'SC_LSB_TWO_SIDED', 'SC_P0_DETAIL_QUAD_COUNT', - 'SC_P0_DETAIL_QUAD_WITH_1_PIX', 'SC_P0_DETAIL_QUAD_WITH_2_PIX', - 'SC_P0_DETAIL_QUAD_WITH_3_PIX', 'SC_P0_DETAIL_QUAD_WITH_4_PIX', - 'SC_P0_HIZ_QUAD_COUNT', 'SC_P0_HIZ_QUAD_PER_TILE_H0', - 'SC_P0_HIZ_QUAD_PER_TILE_H1', 'SC_P0_HIZ_QUAD_PER_TILE_H10', - 'SC_P0_HIZ_QUAD_PER_TILE_H11', 'SC_P0_HIZ_QUAD_PER_TILE_H12', - 'SC_P0_HIZ_QUAD_PER_TILE_H13', 'SC_P0_HIZ_QUAD_PER_TILE_H14', - 'SC_P0_HIZ_QUAD_PER_TILE_H15', 'SC_P0_HIZ_QUAD_PER_TILE_H16', - 'SC_P0_HIZ_QUAD_PER_TILE_H2', 'SC_P0_HIZ_QUAD_PER_TILE_H3', - 'SC_P0_HIZ_QUAD_PER_TILE_H4', 'SC_P0_HIZ_QUAD_PER_TILE_H5', - 'SC_P0_HIZ_QUAD_PER_TILE_H6', 'SC_P0_HIZ_QUAD_PER_TILE_H7', - 'SC_P0_HIZ_QUAD_PER_TILE_H8', 'SC_P0_HIZ_QUAD_PER_TILE_H9', - 'SC_P0_HIZ_TILE_COUNT', 'SC_PA0_SC_DATA_FIFO_EOP_RD', - 'SC_PA0_SC_DATA_FIFO_RD', 'SC_PA0_SC_DATA_FIFO_WE', - 'SC_PA0_SC_DEALLOC_2_0_RD', 'SC_PA0_SC_EOP_WE', - 'SC_PA0_SC_EVENT_WE', 'SC_PA0_SC_NULL_DEALLOC_WE', - 'SC_PA0_SC_NULL_WE', 'SC_PA_SC_DEALLOC_2_0_WE', - 'SC_PA_SC_FPOV_WE', 'SC_PA_TO_PBB_SCLK_GATE_STALL_STALL', - 'SC_PBB_BATCH_BREAK_DUE_TO_BINNING_MODE_CHANGE', - 'SC_PBB_BATCH_BREAK_DUE_TO_CONTEXT_STATE', - 'SC_PBB_BATCH_BREAK_DUE_TO_DEBUG_DATA_PER_DRAW_DISPATCH', - 'SC_PBB_BATCH_BREAK_DUE_TO_EVENT', - 'SC_PBB_BATCH_BREAK_DUE_TO_FPOV_LIMIT', - 'SC_PBB_BATCH_BREAK_DUE_TO_GFX_PIPE_CHANGE', - 'SC_PBB_BATCH_BREAK_DUE_TO_NEW_SC_MODE', - 'SC_PBB_BATCH_BREAK_DUE_TO_NONBINNED_BATCH', - 'SC_PBB_BATCH_BREAK_DUE_TO_NULL_PRIM_BREAK_BATCH_LIMIT', - 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_CONTEXT', - 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_FPOV', - 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_PERSISTENT', - 'SC_PBB_BATCH_BREAK_DUE_TO_PC_STORAGE', - 'SC_PBB_BATCH_BREAK_DUE_TO_PERSISTENT_STATE', - 'SC_PBB_BATCH_BREAK_DUE_TO_PIPELINE_EVENT_COUNT', - 'SC_PBB_BATCH_BREAK_DUE_TO_PIPE_RESET', - 'SC_PBB_BATCH_BREAK_DUE_TO_PRIM', - 'SC_PBB_BATCH_BREAK_DUE_TO_TIMEOUT_COUNTER', - 'SC_PBB_BATCH_HIST_NUM_COLUMNS_PER_ROW', - 'SC_PBB_BATCH_HIST_NUM_CONTEXTS', - 'SC_PBB_BATCH_HIST_NUM_PERSISTENT_STATES', - 'SC_PBB_BATCH_HIST_NUM_PRIMS', - 'SC_PBB_BATCH_HIST_NUM_PS_WAVE_BREAKS', - 'SC_PBB_BATCH_HIST_NUM_ROWS_PER_PRIM', - 'SC_PBB_BATCH_HIST_NUM_TRIV_REJECTED_PRIMS', - 'SC_PBB_BIN_HIST_NUM_CONTEXTS', - 'SC_PBB_BIN_HIST_NUM_PERSISTENT_STATES', - 'SC_PBB_BIN_HIST_NUM_PRIMS', 'SC_PBB_BUSY', - 'SC_PBB_BUSY_AND_NO_SENDS', - 'SC_PBB_EMPTY_INPUT_CYCLE_WHEN_BATCH_OPEN', 'SC_PBB_END_OF_BATCH', - 'SC_PBB_END_OF_BIN', - 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_COLUMN', - 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_ROW', - 'SC_PBB_IDLE_CLK_DUE_TO_ROW_TO_COLUMN_TRANSITION', - 'SC_PBB_NONBINNED_PRIM', 'SC_PBB_NUM_BINS', - 'SC_PBB_PRIMBIN_PROCESSED', 'SC_PBB_PRIM_ADDED_TO_BATCH', - 'SC_PBB_READ_DEALLOC_4_0', 'SC_PBB_READ_DEALLOC_7_5', - 'SC_PBB_READ_FPOG_4_0', 'SC_PBB_READ_FPOG_7_5', 'SC_PBB_READ_PH0', - 'SC_PBB_RESERVED', 'SC_PBB_STALLS_PA_DUE_TO_NO_TILES', - 'SC_PBB_TOTAL_NULL_PRIMS_OUT_OF_PBB', - 'SC_PBB_TOTAL_REAL_PRIMS_OUT_OF_PBB', 'SC_PERFCNT_SEL', - 'SC_PERF_SEL_RESERVED_108', 'SC_PERF_SEL_RESERVED_109', - 'SC_PERF_SEL_RESERVED_110', 'SC_PERF_SEL_RESERVED_111', - 'SC_PERF_SEL_RESERVED_112', 'SC_PERF_SEL_RESERVED_113', - 'SC_PERF_SEL_RESERVED_114', 'SC_PERF_SEL_RESERVED_115', - 'SC_PERF_SEL_RESERVED_116', 'SC_PERF_SEL_RESERVED_117', - 'SC_PERF_SEL_RESERVED_118', 'SC_PERF_SEL_RESERVED_119', - 'SC_PERF_SEL_RESERVED_120', 'SC_PERF_SEL_RESERVED_121', - 'SC_PERF_SEL_RESERVED_122', 'SC_PERF_SEL_RESERVED_123', - 'SC_PERF_SEL_RESERVED_124', 'SC_PERF_SEL_RESERVED_125', - 'SC_PERF_SEL_RESERVED_126', 'SC_PERF_SEL_RESERVED_127', - 'SC_PERF_SEL_RESERVED_128', 'SC_PERF_SEL_RESERVED_129', - 'SC_PERF_SEL_RESERVED_130', 'SC_PERF_SEL_RESERVED_131', - 'SC_PERF_SEL_RESERVED_132', 'SC_PERF_SEL_RESERVED_133', - 'SC_PERF_SEL_RESERVED_134', 'SC_PERF_SEL_RESERVED_135', - 'SC_PERF_SEL_RESERVED_136', 'SC_PERF_SEL_RESERVED_137', - 'SC_PERF_SEL_RESERVED_138', 'SC_PERF_SEL_RESERVED_139', - 'SC_PERF_SEL_RESERVED_140', 'SC_PERF_SEL_RESERVED_141', - 'SC_PERF_SEL_RESERVED_142', 'SC_PERF_SEL_RESERVED_143', - 'SC_PERF_SEL_RESERVED_144', 'SC_PERF_SEL_RESERVED_145', - 'SC_PERF_SEL_RESERVED_146', 'SC_PERF_SEL_RESERVED_147', - 'SC_PERF_SEL_RESERVED_148', 'SC_PERF_SEL_RESERVED_149', - 'SC_PERF_SEL_RESERVED_150', 'SC_PERF_SEL_RESERVED_151', - 'SC_PERF_SEL_RESERVED_152', 'SC_PERF_SEL_RESERVED_153', - 'SC_PERF_SEL_RESERVED_154', 'SC_PERF_SEL_RESERVED_155', - 'SC_PERF_SEL_RESERVED_156', 'SC_PERF_SEL_RESERVED_157', - 'SC_PERF_SEL_RESERVED_158', 'SC_PERF_SEL_RESERVED_160', - 'SC_PERF_SEL_RESERVED_161', 'SC_PERF_SEL_RESERVED_162', - 'SC_PERF_SEL_RESERVED_164', 'SC_PERF_SEL_RESERVED_165', - 'SC_PERF_SEL_RESERVED_166', 'SC_PERF_SEL_RESERVED_184', - 'SC_PERF_SEL_RESERVED_185', 'SC_PERF_SEL_RESERVED_186', - 'SC_PERF_SEL_RESERVED_187', 'SC_PERF_SEL_RESERVED_188', - 'SC_PERF_SEL_RESERVED_189', 'SC_PERF_SEL_RESERVED_190', - 'SC_PERF_SEL_RESERVED_191', 'SC_PERF_SEL_RESERVED_192', - 'SC_PERF_SEL_RESERVED_193', 'SC_PERF_SEL_RESERVED_194', - 'SC_PERF_SEL_RESERVED_195', 'SC_PERF_SEL_RESERVED_196', - 'SC_PERF_SEL_RESERVED_197', 'SC_PERF_SEL_RESERVED_198', - 'SC_PERF_SEL_RESERVED_199', 'SC_PERF_SEL_RESERVED_200', - 'SC_PERF_SEL_RESERVED_201', 'SC_PERF_SEL_RESERVED_202', - 'SC_PERF_SEL_RESERVED_203', 'SC_PERF_SEL_RESERVED_204', - 'SC_PERF_SEL_RESERVED_205', 'SC_PERF_SEL_RESERVED_206', - 'SC_PERF_SEL_RESERVED_207', 'SC_PERF_SEL_RESERVED_208', - 'SC_PERF_SEL_RESERVED_209', 'SC_PERF_SEL_RESERVED_210', - 'SC_PERF_SEL_RESERVED_211', 'SC_PERF_SEL_RESERVED_212', - 'SC_PERF_SEL_RESERVED_213', 'SC_PERF_SEL_RESERVED_214', - 'SC_PERF_SEL_RESERVED_215', 'SC_PERF_SEL_RESERVED_216', - 'SC_PERF_SEL_RESERVED_217', 'SC_PERF_SEL_RESERVED_218', - 'SC_PERF_SEL_RESERVED_219', 'SC_PERF_SEL_RESERVED_220', - 'SC_PERF_SEL_RESERVED_221', 'SC_PERF_SEL_RESERVED_222', - 'SC_PERF_SEL_RESERVED_223', 'SC_PERF_SEL_RESERVED_224', - 'SC_PERF_SEL_RESERVED_225', 'SC_PERF_SEL_RESERVED_226', - 'SC_PERF_SEL_RESERVED_227', 'SC_PERF_SEL_RESERVED_228', - 'SC_PERF_SEL_RESERVED_229', 'SC_PERF_SEL_RESERVED_230', - 'SC_PERF_SEL_RESERVED_231', 'SC_PERF_SEL_RESERVED_232', - 'SC_PERF_SEL_RESERVED_233', 'SC_PERF_SEL_RESERVED_234', - 'SC_PERF_SEL_RESERVED_236', 'SC_PERF_SEL_RESERVED_237', - 'SC_PERF_SEL_RESERVED_238', 'SC_PERF_SEL_RESERVED_240', - 'SC_PERF_SEL_RESERVED_241', 'SC_PERF_SEL_RESERVED_242', - 'SC_PERF_SEL_RESERVED_247', 'SC_PERF_SEL_RESERVED_248', - 'SC_PERF_SEL_RESERVED_249', 'SC_PERF_SEL_RESERVED_250', - 'SC_PERF_SEL_RESERVED_251', 'SC_PERF_SEL_RESERVED_252', - 'SC_PERF_SEL_RESERVED_253', 'SC_PERF_SEL_RESERVED_254', - 'SC_PERF_SEL_RESERVED_255', 'SC_PERF_SEL_RESERVED_256', - 'SC_PERF_SEL_RESERVED_257', 'SC_PERF_SEL_RESERVED_258', - 'SC_PERF_SEL_RESERVED_279', 'SC_PERF_SEL_RESERVED_280', - 'SC_PERF_SEL_RESERVED_288', 'SC_PERF_SEL_RESERVED_289', - 'SC_PERF_SEL_RESERVED_290', 'SC_PERF_SEL_RESERVED_291', - 'SC_PERF_SEL_RESERVED_293', 'SC_PERF_SEL_RESERVED_294', - 'SC_PERF_SEL_RESERVED_295', 'SC_PERF_SEL_RESERVED_296', - 'SC_PERF_SEL_RESERVED_297', 'SC_PERF_SEL_RESERVED_298', - 'SC_PERF_SEL_RESERVED_299', 'SC_PERF_SEL_RESERVED_301', - 'SC_PERF_SEL_RESERVED_303', 'SC_PERF_SEL_RESERVED_304', - 'SC_PERF_SEL_RESERVED_305', 'SC_PERF_SEL_RESERVED_306', - 'SC_PERF_SEL_RESERVED_307', 'SC_PERF_SEL_RESERVED_308', - 'SC_PERF_SEL_RESERVED_309', 'SC_PERF_SEL_RESERVED_310', - 'SC_PERF_SEL_RESERVED_311', 'SC_PERF_SEL_RESERVED_312', - 'SC_PERF_SEL_RESERVED_313', 'SC_PERF_SEL_RESERVED_314', - 'SC_PERF_SEL_RESERVED_315', 'SC_PERF_SEL_RESERVED_316', - 'SC_PERF_SEL_RESERVED_317', 'SC_PERF_SEL_RESERVED_319', - 'SC_PERF_SEL_RESERVED_320', 'SC_PERF_SEL_RESERVED_321', - 'SC_PERF_SEL_RESERVED_322', 'SC_PERF_SEL_RESERVED_323', - 'SC_PERF_SEL_RESERVED_324', 'SC_PERF_SEL_RESERVED_325', - 'SC_PERF_SEL_RESERVED_328', 'SC_PERF_SEL_RESERVED_329', - 'SC_PERF_SEL_RESERVED_330', 'SC_PERF_SEL_RESERVED_331', - 'SC_PERF_SEL_RESERVED_332', 'SC_PERF_SEL_RESERVED_333', - 'SC_PERF_SEL_RESERVED_334', 'SC_PERF_SEL_RESERVED_335', - 'SC_PERF_SEL_RESERVED_336', 'SC_PERF_SEL_RESERVED_337', - 'SC_PERF_SEL_RESERVED_340', 'SC_PERF_SEL_RESERVED_341', - 'SC_PERF_SEL_RESERVED_347', 'SC_PERF_SEL_RESERVED_348', - 'SC_PERF_SEL_RESERVED_351', 'SC_PERF_SEL_RESERVED_354', - 'SC_PERF_SEL_RESERVED_355', 'SC_PERF_SEL_RESERVED_356', - 'SC_PERF_SEL_RESERVED_357', 'SC_PERF_SEL_RESERVED_358', - 'SC_PERF_SEL_RESERVED_359', 'SC_PERF_SEL_RESERVED_360', - 'SC_PERF_SEL_RESERVED_361', 'SC_PERF_SEL_RESERVED_362', - 'SC_PERF_SEL_RESERVED_363', 'SC_PERF_SEL_RESERVED_364', - 'SC_PERF_SEL_RESERVED_365', 'SC_PERF_SEL_RESERVED_366', - 'SC_PERF_SEL_RESERVED_367', 'SC_PERF_SEL_RESERVED_368', - 'SC_PERF_SEL_RESERVED_369', 'SC_PERF_SEL_RESERVED_370', - 'SC_PERF_SEL_RESERVED_371', 'SC_PERF_SEL_RESERVED_372', - 'SC_PERF_SEL_RESERVED_375', 'SC_PERF_SEL_RESERVED_376', - 'SC_PERF_SEL_RESERVED_377', 'SC_PERF_SEL_RESERVED_378', - 'SC_PERF_SEL_RESERVED_379', 'SC_PERF_SEL_RESERVED_380', - 'SC_PERF_SEL_RESERVED_381', 'SC_PERF_SEL_RESERVED_382', - 'SC_PERF_SEL_RESERVED_383', 'SC_PERF_SEL_RESERVED_384', - 'SC_PERF_SEL_RESERVED_385', 'SC_PERF_SEL_RESERVED_423', - 'SC_PERF_SEL_RESERVED_424', 'SC_PERF_SEL_RESERVED_425', - 'SC_PERF_SEL_RESERVED_426', 'SC_PERF_SEL_RESERVED_427', - 'SC_PERF_SEL_RESERVED_428', 'SC_PERF_SEL_RESERVED_429', - 'SC_PERF_SEL_RESERVED_430', 'SC_PERF_SEL_RESERVED_431', - 'SC_PERF_SEL_RESERVED_432', 'SC_PERF_SEL_RESERVED_433', - 'SC_PERF_SEL_RESERVED_434', 'SC_PERF_SEL_RESERVED_435', - 'SC_PERF_SEL_RESERVED_436', 'SC_PERF_SEL_RESERVED_478', - 'SC_PERF_SEL_RESERVED_479', 'SC_PERF_SEL_RESERVED_483', - 'SC_PERF_SEL_RESERVED_484', 'SC_PERF_SEL_RESERVED_485', - 'SC_PERF_SEL_RESERVED_486', 'SC_PERF_SEL_RESERVED_487', - 'SC_PERF_SEL_RESERVED_488', 'SC_PERF_SEL_RESERVED_489', - 'SC_PERF_SEL_RESERVED_490', 'SC_PERF_SEL_RESERVED_509', - 'SC_PERF_SEL_RESERVED_510', 'SC_PERF_SEL_RESERVED_511', - 'SC_PERF_SEL_RESERVED_512', 'SC_PERF_SEL_RESERVED_513', - 'SC_PERF_SEL_RESERVED_514', 'SC_PERF_SEL_RESERVED_523', - 'SC_PERF_SEL_RESERVED_524', 'SC_PERF_SEL_RESERVED_525', - 'SC_PERF_SEL_RESERVED_532', 'SC_PERF_SEL_RESERVED_533', - 'SC_PERF_SEL_RESERVED_534', 'SC_PERF_SEL_RESERVED_539', - 'SC_PERF_SEL_RESERVED_568', 'SC_PERF_SEL_RESERVED_76', - 'SC_PERF_SEL_RESERVED_77', 'SC_PERF_SEL_RESERVED_78', - 'SC_PERF_SEL_RESERVED_80', 'SC_PERF_SEL_RESERVED_81', - 'SC_PERF_SEL_RESERVED_82', 'SC_PERF_SEL_RESERVED_84', - 'SC_PERF_SEL_RESERVED_85', 'SC_PERF_SEL_RESERVED_86', - 'SC_PERF_SEL_RESERVED_88', 'SC_PERF_SEL_RESERVED_89', - 'SC_PERF_SEL_RESERVED_90', 'SC_PKR_4X2_FILL_QUAD', - 'SC_PKR_4X2_QUAD_SPLIT', 'SC_PKR_BCI_QUAD_NEW_PRIM', - 'SC_PKR_CONTROL_XFER', 'SC_PKR_DBHANG_FORCE_EOV', - 'SC_PKR_DB_OREO_WAVE_QUAD_COUNT', 'SC_PKR_DB_WAVE_STALL', - 'SC_PKR_END_OF_VECTOR', - 'SC_PKR_OREO_STALLED_BY_NO_VALID_WAIVE_ID', - 'SC_PKR_PC_NO_CREDITS', 'SC_PKR_PC_SEND', 'SC_PKR_PC_SEND_EOV', - 'SC_PKR_PC_SEND_EVENT', 'SC_PKR_PC_SEND_PRIM_VALID_0', - 'SC_PKR_PC_SEND_PRIM_VALID_1', 'SC_PKR_PC_SEND_TRUE_PRIM', - 'SC_PKR_PC_STALLED', 'SC_PKR_PSINVOC_SEDC_FIFO_FULL', - 'SC_PKR_QUAD_PER_ROW_H1', 'SC_PKR_QUAD_PER_ROW_H2', - 'SC_PKR_SPI_QUAD_COUNT', 'SC_PKR_WAVE_BREAK_FULL_TILE', - 'SC_PKR_WAVE_BREAK_OUTSIDE_REGION', 'SC_PK_BUSY', - 'SC_PK_DEALLOC_WAVE_BREAK', 'SC_PK_MAX_DEALLOC_FORCE_EOV', - 'SC_PK_PM_4X2_SPLIT_WAVE_BRK_1H', - 'SC_PK_PM_AE_CONFLICT_WAVE_BRK_1H', - 'SC_PK_PM_AVOID_DEALLOC_ADD_WAVE_BRK_1H', - 'SC_PK_PM_CTL_ONLY_CMD_WAVE_BRK_1H', - 'SC_PK_PM_END_OF_VECTOR_WAVE_BRK_1H', - 'SC_PK_PM_EOP_OR_LAD_WAVE_BRK_1H', - 'SC_PK_PM_FD_CONFLICT_WAVE_BRK_1H', - 'SC_PK_PM_FORCE_PARTIAL_FOR_DEALLOC_WAVE_BRK_1H', - 'SC_PK_PM_FULL_TILE_WAVE_BRK_1H', - 'SC_PK_PM_MAX_CLK_CNT_FORCE_EOV_WAVE_BRK_1H', - 'SC_PK_PM_MAX_DEALLOC_FORCE_EOV_WAVE_BRK_1H', - 'SC_PK_PM_MAX_REZ_CNT_FORCE_EOV_WAVE_BRK_1H', - 'SC_PK_PM_OREO_CONFLICT_QUAD_FORCE_EOV_WAVE_BRK_1H', - 'SC_PK_PM_PKR_FILL_4X2_WAVE_BRK_1H', - 'SC_PK_PM_SPLIT_OR_FILL_4X2_WAVE_BRK_1H', - 'SC_PK_PM_VRS_RATE_X_00_Y_00_QUAD', - 'SC_PK_PM_VRS_RATE_X_00_Y_01_QUAD', - 'SC_PK_PM_VRS_RATE_X_00_Y_10_QUAD', - 'SC_PK_PM_VRS_RATE_X_00_Y_11_QUAD', - 'SC_PK_PM_VRS_RATE_X_01_Y_00_QUAD', - 'SC_PK_PM_VRS_RATE_X_01_Y_01_QUAD', - 'SC_PK_PM_VRS_RATE_X_01_Y_10_QUAD', - 'SC_PK_PM_VRS_RATE_X_01_Y_11_QUAD', - 'SC_PK_PM_VRS_RATE_X_10_Y_00_QUAD', - 'SC_PK_PM_VRS_RATE_X_10_Y_01_QUAD', - 'SC_PK_PM_VRS_RATE_X_10_Y_10_QUAD', - 'SC_PK_PM_VRS_RATE_X_10_Y_11_QUAD', - 'SC_PK_PM_VRS_RATE_X_11_Y_00_QUAD', - 'SC_PK_PM_VRS_RATE_X_11_Y_01_QUAD', - 'SC_PK_PM_VRS_RATE_X_11_Y_10_QUAD', - 'SC_PK_PM_VRS_RATE_X_11_Y_11_QUAD', - 'SC_PK_PM_WAVE_BREAK_OUTSIDE_REGION_WAVE_BRK_1H', - 'SC_PSSW_WINDOW_VALID', 'SC_PSSW_WINDOW_VALID_BUSY', - 'SC_PS_ARB_PA_SC_BUSY', 'SC_PS_ARB_SC_BUSY', - 'SC_PS_ARB_STALLED_FROM_BELOW', 'SC_PS_ARB_STARVED_FROM_ABOVE', - 'SC_PS_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'SC_PS_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'SC_PS_ARB_XFC_ONLY_PRIM_CYCLES', 'SC_PS_CTX_DONE_FIFO_POP', - 'SC_PS_CTX_DONE_FIFO_PUSH', 'SC_PS_PA0_SC_FIFO_EMPTY', - 'SC_PS_PA0_SC_FIFO_FULL', 'SC_PS_PM_PBB_TO_PSE_FIFO_FULL', - 'SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_PBB_TO_PSE_FIFO_FULL', - 'SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_PFF_PW_FULL', - 'SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_ZFF_PW_FULL', - 'SC_PS_PM_PFF_PW_FULL', 'SC_PS_PM_ZFF_PW_FULL', - 'SC_PS_TO_BE_SCLK_GATE_STALL', 'SC_PS_TS_EVENT_FIFO_POP', - 'SC_PS_TS_EVENT_FIFO_PUSH', 'SC_PWS_CS_EVENTS_PWS_ENABLE', - 'SC_PWS_P0_CS_SYNC_COMPLETE', 'SC_PWS_P0_PS_SYNC_COMPLETE', - 'SC_PWS_P0_TS_SYNC_COMPLETE', 'SC_PWS_P1_CS_SYNC_COMPLETE', - 'SC_PWS_P1_PS_SYNC_COMPLETE', 'SC_PWS_P1_TS_SYNC_COMPLETE', - 'SC_PWS_PS_EVENTS_PWS_ENABLE', 'SC_PWS_STALLED', - 'SC_PWS_TS_EVENTS_PWS_ENABLE', 'SC_PW_BM_PASS_EMPTY_PRIM', - 'SC_QZ0_QUAD_COUNT', 'SC_QZ0_QUAD_PER_TILE_H0', - 'SC_QZ0_QUAD_PER_TILE_H1', 'SC_QZ0_QUAD_PER_TILE_H10', - 'SC_QZ0_QUAD_PER_TILE_H11', 'SC_QZ0_QUAD_PER_TILE_H12', - 'SC_QZ0_QUAD_PER_TILE_H13', 'SC_QZ0_QUAD_PER_TILE_H14', - 'SC_QZ0_QUAD_PER_TILE_H15', 'SC_QZ0_QUAD_PER_TILE_H16', - 'SC_QZ0_QUAD_PER_TILE_H2', 'SC_QZ0_QUAD_PER_TILE_H3', - 'SC_QZ0_QUAD_PER_TILE_H4', 'SC_QZ0_QUAD_PER_TILE_H5', - 'SC_QZ0_QUAD_PER_TILE_H6', 'SC_QZ0_QUAD_PER_TILE_H7', - 'SC_QZ0_QUAD_PER_TILE_H8', 'SC_QZ0_QUAD_PER_TILE_H9', - 'SC_QZ0_TILE_COUNT', 'SC_QZ0_TILE_COVERED_COUNT', - 'SC_QZ0_TILE_NOT_COVERED_COUNT', 'SC_QZQP_WINDOW_VALID', - 'SC_QZQP_WINDOW_VALID_BUSY', 'SC_REG_SCLK_BUSY', 'SC_RESERVED_60', - 'SC_SCB_BUSY', 'SC_SCF_SCB_INTERFACE_BUSY', 'SC_SCISSOR_DISCARD', - 'SC_SEND_DB_VPZ', 'SC_SPIBC_FULL_FREEZE', 'SC_SPI_CREDIT_AT_MAX', - 'SC_SPI_CREDIT_AT_MAX_NO_PENDING_SEND', - 'SC_SPI_CREDIT_AT_ZERO_WITH_PENDING_SEND', 'SC_SPI_DEALLOC_4_0', - 'SC_SPI_DEALLOC_7_5', 'SC_SPI_EVENT', 'SC_SPI_FPOV_4_0', - 'SC_SPI_FPOV_7_5', 'SC_SPI_SEND', 'SC_SPI_WAVE_STALLED_BY_SPI', - 'SC_SRPS_WINDOW_VALID', 'SC_SRPS_WINDOW_VALID_BUSY', - 'SC_STALLED_BY_BCI', 'SC_STALLED_BY_DB0_TILEFIFO', - 'SC_STALLED_BY_DB_QUAD', 'SC_STALLED_BY_DB_TILE', - 'SC_STALLED_BY_PRIMFIFO', 'SC_STALLED_BY_QUADFIFO', - 'SC_STALLED_BY_SPI', 'SC_STALLED_BY_TILEFIFO', - 'SC_STALLED_BY_TILEORDERFIFO', 'SC_STARVED_BY_DB_QUAD', - 'SC_STARVED_BY_DB_TILE', 'SC_STARVED_BY_PA', - 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_FULL', - 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_NOT_EMPTY', - 'SC_SUPERTILE_COUNT', - 'SC_SUPERTILE_COUNT_EXCLUDE_PASS_EMPTY_PRIM', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H0', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H1', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H10', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H11', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H12', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H13', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H14', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H15', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H16', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H2', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H3', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H4', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H5', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H6', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H7', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H8', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H9', - 'SC_SUPERTILE_PER_PRIM_H0', 'SC_SUPERTILE_PER_PRIM_H1', - 'SC_SUPERTILE_PER_PRIM_H10', 'SC_SUPERTILE_PER_PRIM_H11', - 'SC_SUPERTILE_PER_PRIM_H12', 'SC_SUPERTILE_PER_PRIM_H13', - 'SC_SUPERTILE_PER_PRIM_H14', 'SC_SUPERTILE_PER_PRIM_H15', - 'SC_SUPERTILE_PER_PRIM_H16', 'SC_SUPERTILE_PER_PRIM_H2', - 'SC_SUPERTILE_PER_PRIM_H3', 'SC_SUPERTILE_PER_PRIM_H4', - 'SC_SUPERTILE_PER_PRIM_H5', 'SC_SUPERTILE_PER_PRIM_H6', - 'SC_SUPERTILE_PER_PRIM_H7', 'SC_SUPERTILE_PER_PRIM_H8', - 'SC_SUPERTILE_PER_PRIM_H9', 'SC_TILE_PER_PRIM_H0', - 'SC_TILE_PER_PRIM_H1', 'SC_TILE_PER_PRIM_H10', - 'SC_TILE_PER_PRIM_H11', 'SC_TILE_PER_PRIM_H12', - 'SC_TILE_PER_PRIM_H13', 'SC_TILE_PER_PRIM_H14', - 'SC_TILE_PER_PRIM_H15', 'SC_TILE_PER_PRIM_H16', - 'SC_TILE_PER_PRIM_H2', 'SC_TILE_PER_PRIM_H3', - 'SC_TILE_PER_PRIM_H4', 'SC_TILE_PER_PRIM_H5', - 'SC_TILE_PER_PRIM_H6', 'SC_TILE_PER_PRIM_H7', - 'SC_TILE_PER_PRIM_H8', 'SC_TILE_PER_PRIM_H9', - 'SC_TILE_PER_SUPERTILE_H0', 'SC_TILE_PER_SUPERTILE_H1', - 'SC_TILE_PER_SUPERTILE_H10', 'SC_TILE_PER_SUPERTILE_H11', - 'SC_TILE_PER_SUPERTILE_H12', 'SC_TILE_PER_SUPERTILE_H13', - 'SC_TILE_PER_SUPERTILE_H14', 'SC_TILE_PER_SUPERTILE_H15', - 'SC_TILE_PER_SUPERTILE_H16', 'SC_TILE_PER_SUPERTILE_H2', - 'SC_TILE_PER_SUPERTILE_H3', 'SC_TILE_PER_SUPERTILE_H4', - 'SC_TILE_PER_SUPERTILE_H5', 'SC_TILE_PER_SUPERTILE_H6', - 'SC_TILE_PER_SUPERTILE_H7', 'SC_TILE_PER_SUPERTILE_H8', - 'SC_TILE_PER_SUPERTILE_H9', 'SC_TILE_PICKED_H1', - 'SC_TPQZ_WINDOW_VALID', 'SC_TPQZ_WINDOW_VALID_BUSY', - 'SC_TRPK_WINDOW_VALID', 'SC_TRPK_WINDOW_VALID_BUSY', 'SC_UR_1X', - 'SC_UR_2X', 'SC_UR_4X', 'SC_UR_8X', 'SC_VRC_ACK_OUTPUT_STALL', - 'SC_VRC_BUSY', 'SC_VRC_DIRTY_SECTORS_FLUSHED', - 'SC_VRC_EVICT_NONZERO_INFLIGHT_STALL', 'SC_VRC_FLUSH', - 'SC_VRC_FLUSH_DONE_STALL', 'SC_VRC_FLUSH_EVICT_STALL', - 'SC_VRC_FLUSH_FIP_HIT_STALL', 'SC_VRC_FLUSH_REFLUSH_STALL', - 'SC_VRC_FLUSH_STALL', 'SC_VRC_FLUSH_WRREQ_DRAIN_STALL', - 'SC_VRC_GL1X_RD_REQ', 'SC_VRC_GL1X_RD_RET', - 'SC_VRC_GL1X_RD_XNACK', 'SC_VRC_GL1X_REQ_STALLED', - 'SC_VRC_GL1X_SRC_STALLED', 'SC_VRC_GL1X_SRC_XFR', - 'SC_VRC_GL1X_WR_ACK', 'SC_VRC_GL1X_WR_REQ', - 'SC_VRC_GL1X_WR_XNACK', 'SC_VRC_HINTMEM_RE_CNT', - 'SC_VRC_HINTMEM_WE_CNT', 'SC_VRC_HPF_EVENT', 'SC_VRC_HPF_REQ', - 'SC_VRC_HPF_STALLED', 'SC_VRC_INFLIGHT_COUNTER_MAXIMUM_STALL', - 'SC_VRC_LRU_EVICT_PENDING_EVICT_STALL', - 'SC_VRC_LRU_EVICT_SCHEDULED_EVICT_STALL', - 'SC_VRC_LRU_EVICT_STALL', 'SC_VRC_PROBE_ACK_TILES', - 'SC_VRC_RATEMEM_RE_CNT', 'SC_VRC_RATEMEM_WE_CNT', - 'SC_VRC_READ_OUTPUT_STALL', 'SC_VRC_REEVICTION_STALL', - 'SC_VRC_REPLACE_FLUSH_IN_PROGRESS_STALL', - 'SC_VRC_REPLACE_PENDING_EVICT_STALL', - 'SC_VRC_REPLACE_SCHEDULED_EVICT_STALL', 'SC_VRC_SECTORS_FLUSHED', - 'SC_VRC_SECTOR_HIT', 'SC_VRC_SECTOR_MISS', 'SC_VRC_STALL', - 'SC_VRC_TAGS_FLUSHED', 'SC_VRC_TAG_MISS', - 'SC_VRC_WRITE_OUTPUT_STALL', 'SC_VRS_BE_BUSY', - 'SC_VRS_COMB_MODE_MAX', 'SC_VRS_COMB_MODE_MIN', - 'SC_VRS_COMB_MODE_OVERRIDE', 'SC_VRS_COMB_MODE_PASSTHRU', - 'SC_VRS_COMB_MODE_SATURATE', 'SDMA_PERFMON_SEL', - 'SDMA_PERFMON_SEL_CE_AFIFO_FULL', 'SDMA_PERFMON_SEL_CE_DST_IDLE', - 'SDMA_PERFMON_SEL_CE_INFO1_FULL', 'SDMA_PERFMON_SEL_CE_INFO_FULL', - 'SDMA_PERFMON_SEL_CE_IN_IDLE', 'SDMA_PERFMON_SEL_CE_L1_WR_VLD', - 'SDMA_PERFMON_SEL_CE_OUT_IDLE', 'SDMA_PERFMON_SEL_CE_RD_STALL', - 'SDMA_PERFMON_SEL_CE_RREQ_IDLE', 'SDMA_PERFMON_SEL_CE_SPLIT_IDLE', - 'SDMA_PERFMON_SEL_CE_WREQ_IDLE', 'SDMA_PERFMON_SEL_CE_WR_IDLE', - 'SDMA_PERFMON_SEL_CE_WR_STALL', - 'SDMA_PERFMON_SEL_CPF_SDMA_INVREQ', 'SDMA_PERFMON_SEL_CTX_CHANGE', - 'SDMA_PERFMON_SEL_CTX_CHANGE_EXCEPTION', - 'SDMA_PERFMON_SEL_CTX_CHANGE_EXPIRED', 'SDMA_PERFMON_SEL_CYCLE', - 'SDMA_PERFMON_SEL_DMA_L1_RD_SEND', - 'SDMA_PERFMON_SEL_DMA_L1_WR_SEND', - 'SDMA_PERFMON_SEL_DMA_MC_RD_SEND', - 'SDMA_PERFMON_SEL_DMA_MC_WR_SEND', 'SDMA_PERFMON_SEL_DOORBELL', - 'SDMA_PERFMON_SEL_DUMMY_0', 'SDMA_PERFMON_SEL_DUMMY_1', - 'SDMA_PERFMON_SEL_EX_IDLE', - 'SDMA_PERFMON_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 'SDMA_PERFMON_SEL_GCR_RTN', 'SDMA_PERFMON_SEL_GCR_SEND', - 'SDMA_PERFMON_SEL_GPUVM_INV_HIGH', - 'SDMA_PERFMON_SEL_GPUVM_INV_LOW', 'SDMA_PERFMON_SEL_IB_CMD_FULL', - 'SDMA_PERFMON_SEL_IB_CMD_IDLE', 'SDMA_PERFMON_SEL_IDLE', - 'SDMA_PERFMON_SEL_INT_IDLE', 'SDMA_PERFMON_SEL_INT_REQ_COUNT', - 'SDMA_PERFMON_SEL_INT_REQ_STALL', - 'SDMA_PERFMON_SEL_INT_RESP_ACCEPTED', - 'SDMA_PERFMON_SEL_INT_RESP_RETRY', - 'SDMA_PERFMON_SEL_L1_RDL2_IDLE', 'SDMA_PERFMON_SEL_L1_RDMC_IDLE', - 'SDMA_PERFMON_SEL_L1_RD_INV_IDLE', - 'SDMA_PERFMON_SEL_L1_WRL2_IDLE', 'SDMA_PERFMON_SEL_L1_WRMC_IDLE', - 'SDMA_PERFMON_SEL_L1_WR_INV_IDLE', - 'SDMA_PERFMON_SEL_L2_META_RET_VLD', - 'SDMA_PERFMON_SEL_MCU_L1_WR_VLD', 'SDMA_PERFMON_SEL_MC_RD_COUNT', - 'SDMA_PERFMON_SEL_MC_RD_IDLE', - 'SDMA_PERFMON_SEL_MC_RD_NO_POLL_IDLE', - 'SDMA_PERFMON_SEL_MC_RD_RET_STALL', - 'SDMA_PERFMON_SEL_MC_WR_COUNT', 'SDMA_PERFMON_SEL_MC_WR_IDLE', - 'SDMA_PERFMON_SEL_META_L2_REQ_SEND', - 'SDMA_PERFMON_SEL_META_REQ_SEND', 'SDMA_PERFMON_SEL_META_RTN_VLD', - 'SDMA_PERFMON_SEL_MMHUB_TAG_DELAY_COUNTER', - 'SDMA_PERFMON_SEL_NUM_PACKET', 'SDMA_PERFMON_SEL_QUEUE0_SELECT', - 'SDMA_PERFMON_SEL_QUEUE1_SELECT', - 'SDMA_PERFMON_SEL_QUEUE2_SELECT', - 'SDMA_PERFMON_SEL_QUEUE3_SELECT', 'SDMA_PERFMON_SEL_RB_CMD_FULL', - 'SDMA_PERFMON_SEL_RB_CMD_IDLE', 'SDMA_PERFMON_SEL_RB_EMPTY', - 'SDMA_PERFMON_SEL_RB_FULL', 'SDMA_PERFMON_SEL_RB_RPTR_WB', - 'SDMA_PERFMON_SEL_RB_RPTR_WRAP', - 'SDMA_PERFMON_SEL_RB_WPTR_POLL_READ', - 'SDMA_PERFMON_SEL_RB_WPTR_WRAP', 'SDMA_PERFMON_SEL_RD_BA_RTR', - 'SDMA_PERFMON_SEL_REG_IDLE', 'SDMA_PERFMON_SEL_SDMA_CPF_INVACK', - 'SDMA_PERFMON_SEL_SDMA_UTCL2_INVACK', - 'SDMA_PERFMON_SEL_SDMA_UTCL2_INVACK_ALL', - 'SDMA_PERFMON_SEL_SDMA_UTCL2_RD_SEND', - 'SDMA_PERFMON_SEL_SDMA_UTCL2_SEND', - 'SDMA_PERFMON_SEL_SDMA_UTCL2_WR_SEND', - 'SDMA_PERFMON_SEL_SEM_IDLE', 'SDMA_PERFMON_SEL_SEM_REQ_COUNT', - 'SDMA_PERFMON_SEL_SEM_REQ_STALL', - 'SDMA_PERFMON_SEL_SEM_RESP_FAIL', - 'SDMA_PERFMON_SEL_SEM_RESP_INCOMPLETE', - 'SDMA_PERFMON_SEL_SEM_RESP_PASS', - 'SDMA_PERFMON_SEL_SRBM_REG_SEND', 'SDMA_PERFMON_SEL_TLBI_RTN', - 'SDMA_PERFMON_SEL_TLBI_SEND', - 'SDMA_PERFMON_SEL_UTCL1_TAG_DELAY_COUNTER', - 'SDMA_PERFMON_SEL_UTCL2_FREE', 'SDMA_PERFMON_SEL_UTCL2_RET_ACK', - 'SDMA_PERFMON_SEL_UTCL2_RET_XNACK', - 'SDMA_PERFMON_SEL_UTCL2_SDMA_INVREQ', - 'SDMA_PERFMON_SEL_UTCL2_SDMA_INVREQ_ALL', - 'SDMA_PERFMON_SEL_UTCL2_SDMA_RD_RTN', - 'SDMA_PERFMON_SEL_UTCL2_SDMA_WR_RTN', - 'SDMA_PERFMON_SEL_WR_BA_RTR', 'SDMA_PERF_SEL', - 'SDMA_PERF_SEL_CE_AFIFO_FULL', 'SDMA_PERF_SEL_CE_BUSY', - 'SDMA_PERF_SEL_CE_BUSY_END', 'SDMA_PERF_SEL_CE_BUSY_START', - 'SDMA_PERF_SEL_CE_CH_RDREQ_SEND', - 'SDMA_PERF_SEL_CE_CH_WRREQ_SEND', 'SDMA_PERF_SEL_CE_CH_WR_REQ', - 'SDMA_PERF_SEL_CE_CH_WR_RET', 'SDMA_PERF_SEL_CE_DST_IDLE', - 'SDMA_PERF_SEL_CE_INFO1_FULL', 'SDMA_PERF_SEL_CE_INFO_FULL', - 'SDMA_PERF_SEL_CE_IN_IDLE', 'SDMA_PERF_SEL_CE_L1_WR_VLD', - 'SDMA_PERF_SEL_CE_OR_MCU_CH_RD_REQ', - 'SDMA_PERF_SEL_CE_OR_MCU_CH_RD_RET', 'SDMA_PERF_SEL_CE_OUT_IDLE', - 'SDMA_PERF_SEL_CE_RD_STALL', 'SDMA_PERF_SEL_CE_RREQ_IDLE', - 'SDMA_PERF_SEL_CE_SPLIT_IDLE', 'SDMA_PERF_SEL_CE_WREQ_IDLE', - 'SDMA_PERF_SEL_CE_WR_IDLE', 'SDMA_PERF_SEL_CE_WR_STALL', - 'SDMA_PERF_SEL_CGCG_FENCE', 'SDMA_PERF_SEL_CH_CE_RDRET_VALID', - 'SDMA_PERF_SEL_CH_CE_WRRET_VALID', 'SDMA_PERF_SEL_CMD_OP_END', - 'SDMA_PERF_SEL_CMD_OP_MATCH', 'SDMA_PERF_SEL_CMD_OP_START', - 'SDMA_PERF_SEL_CPF_SDMA_INVREQ', 'SDMA_PERF_SEL_CTX_CHANGE', - 'SDMA_PERF_SEL_CTX_CHANGE_EXCEPTION', - 'SDMA_PERF_SEL_CTX_CHANGE_EXPIRED', 'SDMA_PERF_SEL_CYCLE', - 'SDMA_PERF_SEL_DMA_L1_RD_SEND', 'SDMA_PERF_SEL_DMA_L1_WR_SEND', - 'SDMA_PERF_SEL_DMA_MC_RD_SEND', 'SDMA_PERF_SEL_DMA_MC_WR_SEND', - 'SDMA_PERF_SEL_DOORBELL', 'SDMA_PERF_SEL_DUMMY_0', - 'SDMA_PERF_SEL_DUMMY_1', 'SDMA_PERF_SEL_EX_IDLE', - 'SDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 'SDMA_PERF_SEL_GCR_RTN', 'SDMA_PERF_SEL_GCR_SEND', - 'SDMA_PERF_SEL_GPUVM_INV_HIGH', 'SDMA_PERF_SEL_GPUVM_INV_LOW', - 'SDMA_PERF_SEL_IB_CH_RD_REQ', 'SDMA_PERF_SEL_IB_CH_RD_RET', - 'SDMA_PERF_SEL_IB_CMD_FULL', 'SDMA_PERF_SEL_IB_CMD_IDLE', - 'SDMA_PERF_SEL_IDLE', 'SDMA_PERF_SEL_INT_IDLE', - 'SDMA_PERF_SEL_INT_REQ_COUNT', 'SDMA_PERF_SEL_INT_REQ_STALL', - 'SDMA_PERF_SEL_INT_RESP_ACCEPTED', 'SDMA_PERF_SEL_INT_RESP_RETRY', - 'SDMA_PERF_SEL_L1_RDL2_IDLE', 'SDMA_PERF_SEL_L1_RDMC_IDLE', - 'SDMA_PERF_SEL_L1_RD_INV_IDLE', 'SDMA_PERF_SEL_L1_WRL2_IDLE', - 'SDMA_PERF_SEL_L1_WRMC_IDLE', 'SDMA_PERF_SEL_L1_WR_INV_IDLE', - 'SDMA_PERF_SEL_L2_META_RET_VLD', 'SDMA_PERF_SEL_MCU_CH_WR_REQ', - 'SDMA_PERF_SEL_MCU_CH_WR_RET', 'SDMA_PERF_SEL_MCU_L1_WR_VLD', - 'SDMA_PERF_SEL_MCU_PERFCNT_TRIGGER', - 'SDMA_PERF_SEL_MCU_PERFCNT_TRIGGER_END', - 'SDMA_PERF_SEL_MCU_PERFCNT_TRIGGER_START', - 'SDMA_PERF_SEL_MC_RD_COUNT', 'SDMA_PERF_SEL_MC_RD_IDLE', - 'SDMA_PERF_SEL_MC_RD_NO_POLL_IDLE', - 'SDMA_PERF_SEL_MC_RD_RET_STALL', 'SDMA_PERF_SEL_MC_WR_COUNT', - 'SDMA_PERF_SEL_MC_WR_IDLE', 'SDMA_PERF_SEL_META_L2_REQ_SEND', - 'SDMA_PERF_SEL_META_REQ_SEND', 'SDMA_PERF_SEL_META_RTN_VLD', - 'SDMA_PERF_SEL_NUM_PACKET', 'SDMA_PERF_SEL_QUEUE0_SELECT', - 'SDMA_PERF_SEL_QUEUE1_SELECT', 'SDMA_PERF_SEL_QUEUE2_SELECT', - 'SDMA_PERF_SEL_QUEUE3_SELECT', 'SDMA_PERF_SEL_QUEUE4_SELECT', - 'SDMA_PERF_SEL_QUEUE5_SELECT', 'SDMA_PERF_SEL_QUEUE6_SELECT', - 'SDMA_PERF_SEL_QUEUE7_SELECT', 'SDMA_PERF_SEL_RB_CH_RD_REQ', - 'SDMA_PERF_SEL_RB_CH_RD_RET', 'SDMA_PERF_SEL_RB_CMD_FULL', - 'SDMA_PERF_SEL_RB_CMD_IDLE', 'SDMA_PERF_SEL_RB_EMPTY', - 'SDMA_PERF_SEL_RB_FULL', 'SDMA_PERF_SEL_RB_RPTR_WB', - 'SDMA_PERF_SEL_RB_RPTR_WRAP', 'SDMA_PERF_SEL_RB_WPTR_POLL_READ', - 'SDMA_PERF_SEL_RB_WPTR_WRAP', 'SDMA_PERF_SEL_RD_BA_RTR', - 'SDMA_PERF_SEL_REG_IDLE', 'SDMA_PERF_SEL_SDMA_CPF_INVACK', - 'SDMA_PERF_SEL_SDMA_UTCL2_INVACK', - 'SDMA_PERF_SEL_SDMA_UTCL2_INVACK_ALL', - 'SDMA_PERF_SEL_SDMA_UTCL2_RD_SEND', - 'SDMA_PERF_SEL_SDMA_UTCL2_SEND', - 'SDMA_PERF_SEL_SDMA_UTCL2_WR_SEND', 'SDMA_PERF_SEL_SEM_IDLE', - 'SDMA_PERF_SEL_SEM_REQ_COUNT', 'SDMA_PERF_SEL_SEM_REQ_STALL', - 'SDMA_PERF_SEL_SEM_RESP_FAIL', - 'SDMA_PERF_SEL_SEM_RESP_INCOMPLETE', - 'SDMA_PERF_SEL_SEM_RESP_PASS', 'SDMA_PERF_SEL_SRBM_REG_SEND', - 'SDMA_PERF_SEL_TLBI_RTN', 'SDMA_PERF_SEL_TLBI_SEND', - 'SDMA_PERF_SEL_UTCL1_UTCL2_REQ', 'SDMA_PERF_SEL_UTCL1_UTCL2_RET', - 'SDMA_PERF_SEL_UTCL2_FREE', 'SDMA_PERF_SEL_UTCL2_RET_ACK', - 'SDMA_PERF_SEL_UTCL2_RET_XNACK', - 'SDMA_PERF_SEL_UTCL2_SDMA_INVREQ', - 'SDMA_PERF_SEL_UTCL2_SDMA_INVREQ_ALL', - 'SDMA_PERF_SEL_UTCL2_SDMA_RD_RTN', - 'SDMA_PERF_SEL_UTCL2_SDMA_WR_RTN', 'SDMA_PERF_SEL_WPTR_CH_RD_REQ', - 'SDMA_PERF_SEL_WPTR_CH_RD_RET', 'SDMA_PERF_SEL_WR_BA_RTR', - 'SEC_GSP0_PRIORITY_HIGH', 'SEC_GSP0_PRIORITY_LOW', 'SEGMENTS_1', - 'SEGMENTS_128', 'SEGMENTS_16', 'SEGMENTS_2', 'SEGMENTS_32', - 'SEGMENTS_4', 'SEGMENTS_64', 'SEGMENTS_8', 'SEL_DTBCLK_P0', - 'SEL_DTBCLK_P1', 'SEL_DTBCLK_P2', 'SEL_DTBCLK_P3', - 'SEND_AT_EARLIEST_TIME', 'SEND_AT_LINK_NUMBER', - 'SEND_NORMAL_PACKET', 'SEND_PPS_PACKET', 'SET_SMU_MSG_INTR', - 'SH_MEM_ADDRESS_MODE', 'SH_MEM_ADDRESS_MODE_32', - 'SH_MEM_ADDRESS_MODE_64', 'SH_MEM_ALIGNMENT_MODE', - 'SH_MEM_ALIGNMENT_MODE_DWORD', - 'SH_MEM_ALIGNMENT_MODE_DWORD_STRICT', - 'SH_MEM_ALIGNMENT_MODE_STRICT', 'SH_MEM_ALIGNMENT_MODE_UNALIGNED', - 'SIGNED', 'SIMM16_WAITCNT_DEPCTR_HOLD_CNT_SIZE', - 'SIMM16_WAITCNT_DEPCTR_HOLD_CNT_START', - 'SIMM16_WAITCNT_DEPCTR_SA_SDST_SIZE', - 'SIMM16_WAITCNT_DEPCTR_SA_SDST_START', - 'SIMM16_WAITCNT_DEPCTR_VA_SDST_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VA_SDST_START', - 'SIMM16_WAITCNT_DEPCTR_VA_SSRC_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VA_SSRC_START', - 'SIMM16_WAITCNT_DEPCTR_VA_VCC_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VA_VCC_START', - 'SIMM16_WAITCNT_DEPCTR_VA_VDST_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VA_VDST_START', - 'SIMM16_WAITCNT_DEPCTR_VM_VSRC_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VM_VSRC_START', - 'SIMM16_WAITCNT_EXP_CNT_SIZE', 'SIMM16_WAITCNT_EXP_CNT_START', - 'SIMM16_WAITCNT_LGKM_CNT_SIZE', 'SIMM16_WAITCNT_LGKM_CNT_START', - 'SIMM16_WAITCNT_VM_CNT_SIZE', 'SIMM16_WAITCNT_VM_CNT_START', - 'SIMM16_WAIT_EVENT_EXP_RDY_SIZE', - 'SIMM16_WAIT_EVENT_EXP_RDY_START', 'SIZE_16K', 'SIZE_8K', - 'SLVERR', 'SMU_INTR', 'SMU_INTR_STATUS_CLEAR', - 'SMU_INTR_STATUS_NOOP', 'SMU_MSG_INTR_NOOP', 'SM_MODE_RESERVED', - 'SOFT_RESET', 'SOFT_RESET_0', 'SOFT_RESET_1', - 'SO_VGTSTREAMOUT_FLUSH', 'SPI_FOG_EXP', 'SPI_FOG_EXP2', - 'SPI_FOG_LINEAR', 'SPI_FOG_MODE', 'SPI_FOG_NONE', - 'SPI_LB_WAVES_RSVD', 'SPI_LB_WAVES_SELECT', 'SPI_PERFCNT_SEL', - 'SPI_PERF_ALL_PS_WAVE', 'SPI_PERF_ALL_PS_WAVE_IN_FLIGHT', - 'SPI_PERF_ALL_WAVE', 'SPI_PERF_ALL_WAVE_IN_FLIGHT', - 'SPI_PERF_ALL_WAVE_ITEMS', 'SPI_PERF_ALL_WAVE_ITEMS_W32', - 'SPI_PERF_ALL_WAVE_ITEMS_W64', 'SPI_PERF_ALL_WAVE_RESTORED', - 'SPI_PERF_ALL_WAVE_SAVED', 'SPI_PERF_ALL_WAVE_W32', - 'SPI_PERF_ALL_WAVE_W64', 'SPI_PERF_BUSY', 'SPI_PERF_CSGN_BUSY', - 'SPI_PERF_CSGN_CRAWLER_STALL', 'SPI_PERF_CSGN_EVENT_WAVE', - 'SPI_PERF_CSGN_NUM_THREADGROUPS', 'SPI_PERF_CSGN_PWS_STALL', - 'SPI_PERF_CSGN_WAVE', 'SPI_PERF_CSGN_WAVE_IN_FLIGHT', - 'SPI_PERF_CSGN_WINDOW_VALID', 'SPI_PERF_CSG_TEMP_ALLOC_LEVEL', - 'SPI_PERF_CSN_BUSY', 'SPI_PERF_CSN_CRAWLER_STALL', - 'SPI_PERF_CSN_EVENT_WAVE', 'SPI_PERF_CSN_NUM_THREADGROUPS', - 'SPI_PERF_CSN_TEMP_ALLOC_LEVEL', 'SPI_PERF_CSN_WAVE', - 'SPI_PERF_CSN_WAVE_IN_FLIGHT', 'SPI_PERF_CSN_WINDOW_VALID', - 'SPI_PERF_EXPORT_DB0_STALL', 'SPI_PERF_EXPORT_DB1_STALL', - 'SPI_PERF_EXPORT_DB2_STALL', 'SPI_PERF_EXPORT_DB3_STALL', - 'SPI_PERF_EXPORT_DB4_STALL', 'SPI_PERF_EXPORT_DB5_STALL', - 'SPI_PERF_EXPORT_DB6_STALL', 'SPI_PERF_EXPORT_DB7_STALL', - 'SPI_PERF_EXPORT_SCB0_STALL', 'SPI_PERF_EXPORT_SCB1_STALL', - 'SPI_PERF_EXPORT_SCB2_STALL', 'SPI_PERF_EXPORT_SCB3_STALL', - 'SPI_PERF_EXP_ARB_COL_CNT', 'SPI_PERF_EXP_ARB_GDS_CNT', - 'SPI_PERF_EXP_ARB_IDX_CNT', 'SPI_PERF_EXP_ARB_POS_CNT', - 'SPI_PERF_EXP_THROT_CAUSALITY_DETECTED', - 'SPI_PERF_EXP_THROT_DOWNSTEP', 'SPI_PERF_EXP_THROT_UPSTEP', - 'SPI_PERF_EXP_WITH_CONFLICT', 'SPI_PERF_EXP_WITH_CONFLICT_CLEAR', - 'SPI_PERF_GFX_TEMP_ALLOC_LEVEL', 'SPI_PERF_GS_ALLOC_IDX', - 'SPI_PERF_GS_ALLOC_POS', 'SPI_PERF_GS_BUSY', - 'SPI_PERF_GS_CRAWLER_STALL', 'SPI_PERF_GS_EVENT_WAVE', - 'SPI_PERF_GS_EXP_DONE', 'SPI_PERF_GS_FIRST_SUBGRP', - 'SPI_PERF_GS_GRP_LIFETIME', 'SPI_PERF_GS_GRP_LIFETIME_SAMPLE', - 'SPI_PERF_GS_HS_DEALLOC', 'SPI_PERF_GS_INDX0_STALL', - 'SPI_PERF_GS_INDX1_STALL', 'SPI_PERF_GS_NGG_SE_LATE_ALLOC_LIMIT', - 'SPI_PERF_GS_NGG_SE_SEND_GS_ALLOC', - 'SPI_PERF_GS_NGG_STALL_MSG_VAL', 'SPI_PERF_GS_PERS_UPD_FULL0', - 'SPI_PERF_GS_PERS_UPD_FULL1', 'SPI_PERF_GS_POS0_STALL', - 'SPI_PERF_GS_POS1_STALL', 'SPI_PERF_GS_PWS_STALL', - 'SPI_PERF_GS_SCBD_IDX_CLEANUP', 'SPI_PERF_GS_SCBD_POS_CLEANUP', - 'SPI_PERF_GS_WAVE', 'SPI_PERF_GS_WAVE_IN_FLIGHT', - 'SPI_PERF_GS_WINDOW_VALID', 'SPI_PERF_HS_BUSY', - 'SPI_PERF_HS_CRAWLER_STALL', 'SPI_PERF_HS_EVENT_WAVE', - 'SPI_PERF_HS_FIRST_WAVE', 'SPI_PERF_HS_PERS_UPD_FULL0', - 'SPI_PERF_HS_PERS_UPD_FULL1', 'SPI_PERF_HS_PWS_STALL', - 'SPI_PERF_HS_WAVE', 'SPI_PERF_HS_WAVE_IN_FLIGHT', - 'SPI_PERF_HS_WINDOW_VALID', 'SPI_PERF_LDS_ALLOC_LEVEL', - 'SPI_PERF_NUM_EXPGRANT_EXPORTS', - 'SPI_PERF_NUM_GDS_SA0SQ0_EXPORTS', - 'SPI_PERF_NUM_GDS_SA0SQ1_EXPORTS', - 'SPI_PERF_NUM_GDS_SA1SQ0_EXPORTS', - 'SPI_PERF_NUM_GDS_SA1SQ1_EXPORTS', - 'SPI_PERF_NUM_POS_SA0SQ0_EXPORTS', - 'SPI_PERF_NUM_POS_SA0SQ1_EXPORTS', - 'SPI_PERF_NUM_POS_SA1SQ0_EXPORTS', - 'SPI_PERF_NUM_POS_SA1SQ1_EXPORTS', - 'SPI_PERF_NUM_PS_COL_SA0SQ0_EXPORTS', - 'SPI_PERF_NUM_PS_COL_SA0SQ1_EXPORTS', - 'SPI_PERF_NUM_PS_COL_SA1SQ0_EXPORTS', - 'SPI_PERF_NUM_PS_COL_SA1SQ1_EXPORTS', - 'SPI_PERF_PIX_ALLOC_PEND_CNT', 'SPI_PERF_PS0_2_WAVE_GROUPS', - 'SPI_PERF_PS0_ACTIVE', 'SPI_PERF_PS0_BUSY', - 'SPI_PERF_PS0_CRAWLER_STALL', 'SPI_PERF_PS0_DEALLOC', - 'SPI_PERF_PS0_DEALLOC_FULL', 'SPI_PERF_PS0_EVENT_WAVE', - 'SPI_PERF_PS0_EXP_ALLOC_WITH_CONFLICT', - 'SPI_PERF_PS0_LDS_DONE_FULL', 'SPI_PERF_PS0_OPT_WAVE', - 'SPI_PERF_PS0_PRIM_BIN0', 'SPI_PERF_PS0_PRIM_BIN1', - 'SPI_PERF_PS0_WAVE', 'SPI_PERF_PS0_WAVEID_STARVED', - 'SPI_PERF_PS0_WAVE_GROUP_CLOCK_DELAY', - 'SPI_PERF_PS0_WAVE_GROUP_TIMEOUTS', 'SPI_PERF_PS0_WAVE_IN_FLIGHT', - 'SPI_PERF_PS0_WINDOW_VALID', 'SPI_PERF_PS1_2_WAVE_GROUPS', - 'SPI_PERF_PS1_ACTIVE', 'SPI_PERF_PS1_BUSY', - 'SPI_PERF_PS1_CRAWLER_STALL', 'SPI_PERF_PS1_DEALLOC', - 'SPI_PERF_PS1_DEALLOC_FULL', 'SPI_PERF_PS1_EVENT_WAVE', - 'SPI_PERF_PS1_EXP_ALLOC_WITH_CONFLICT', - 'SPI_PERF_PS1_LDS_DONE_FULL', 'SPI_PERF_PS1_OPT_WAVE', - 'SPI_PERF_PS1_PRIM_BIN0', 'SPI_PERF_PS1_PRIM_BIN1', - 'SPI_PERF_PS1_WAVE', 'SPI_PERF_PS1_WAVEID_STARVED', - 'SPI_PERF_PS1_WAVE_GROUP_CLOCK_DELAY', - 'SPI_PERF_PS1_WAVE_GROUP_TIMEOUTS', 'SPI_PERF_PS1_WAVE_IN_FLIGHT', - 'SPI_PERF_PS1_WINDOW_VALID', 'SPI_PERF_PS2_2_WAVE_GROUPS', - 'SPI_PERF_PS2_ACTIVE', 'SPI_PERF_PS2_BUSY', - 'SPI_PERF_PS2_CRAWLER_STALL', 'SPI_PERF_PS2_DEALLOC', - 'SPI_PERF_PS2_DEALLOC_FULL', 'SPI_PERF_PS2_EVENT_WAVE', - 'SPI_PERF_PS2_EXP_ALLOC_WITH_CONFLICT', - 'SPI_PERF_PS2_LDS_DONE_FULL', 'SPI_PERF_PS2_OPT_WAVE', - 'SPI_PERF_PS2_PRIM_BIN0', 'SPI_PERF_PS2_PRIM_BIN1', - 'SPI_PERF_PS2_WAVE', 'SPI_PERF_PS2_WAVEID_STARVED', - 'SPI_PERF_PS2_WAVE_GROUP_CLOCK_DELAY', - 'SPI_PERF_PS2_WAVE_GROUP_TIMEOUTS', 'SPI_PERF_PS2_WAVE_IN_FLIGHT', - 'SPI_PERF_PS2_WINDOW_VALID', 'SPI_PERF_PS3_2_WAVE_GROUPS', - 'SPI_PERF_PS3_ACTIVE', 'SPI_PERF_PS3_BUSY', - 'SPI_PERF_PS3_CRAWLER_STALL', 'SPI_PERF_PS3_DEALLOC', - 'SPI_PERF_PS3_DEALLOC_FULL', 'SPI_PERF_PS3_EVENT_WAVE', - 'SPI_PERF_PS3_EXP_ALLOC_WITH_CONFLICT', - 'SPI_PERF_PS3_LDS_DONE_FULL', 'SPI_PERF_PS3_OPT_WAVE', - 'SPI_PERF_PS3_PRIM_BIN0', 'SPI_PERF_PS3_PRIM_BIN1', - 'SPI_PERF_PS3_WAVE', 'SPI_PERF_PS3_WAVEID_STARVED', - 'SPI_PERF_PS3_WAVE_GROUP_CLOCK_DELAY', - 'SPI_PERF_PS3_WAVE_GROUP_TIMEOUTS', 'SPI_PERF_PS3_WAVE_IN_FLIGHT', - 'SPI_PERF_PS3_WINDOW_VALID', 'SPI_PERF_PS_EXP_ALLOC', - 'SPI_PERF_PS_EXP_ARB_CONFLICT', 'SPI_PERF_PS_EXP_DONE', - 'SPI_PERF_PS_PERS_UPD_FULL0', 'SPI_PERF_PS_PERS_UPD_FULL1', - 'SPI_PERF_PS_PWS_STALL', 'SPI_PERF_RA_ACCUM0_SIMD_FULL_CSG', - 'SPI_PERF_RA_ACCUM0_SIMD_FULL_CSN', - 'SPI_PERF_RA_ACCUM0_SIMD_FULL_GS', - 'SPI_PERF_RA_ACCUM0_SIMD_FULL_HS', - 'SPI_PERF_RA_ACCUM0_SIMD_FULL_PS', - 'SPI_PERF_RA_ACCUM1_SIMD_FULL_CSG', - 'SPI_PERF_RA_ACCUM1_SIMD_FULL_CSN', - 'SPI_PERF_RA_ACCUM1_SIMD_FULL_GS', - 'SPI_PERF_RA_ACCUM1_SIMD_FULL_HS', - 'SPI_PERF_RA_ACCUM1_SIMD_FULL_PS', - 'SPI_PERF_RA_ACCUM2_SIMD_FULL_CSG', - 'SPI_PERF_RA_ACCUM2_SIMD_FULL_CSN', - 'SPI_PERF_RA_ACCUM2_SIMD_FULL_GS', - 'SPI_PERF_RA_ACCUM2_SIMD_FULL_HS', - 'SPI_PERF_RA_ACCUM2_SIMD_FULL_PS', - 'SPI_PERF_RA_ACCUM3_SIMD_FULL_CSG', - 'SPI_PERF_RA_ACCUM3_SIMD_FULL_CSN', - 'SPI_PERF_RA_ACCUM3_SIMD_FULL_GS', - 'SPI_PERF_RA_ACCUM3_SIMD_FULL_HS', - 'SPI_PERF_RA_ACCUM3_SIMD_FULL_PS', 'SPI_PERF_RA_BAR_CU_FULL_CSG', - 'SPI_PERF_RA_BAR_CU_FULL_CSN', 'SPI_PERF_RA_BAR_CU_FULL_GS', - 'SPI_PERF_RA_BAR_CU_FULL_HS', 'SPI_PERF_RA_BAR_CU_FULL_PS', - 'SPI_PERF_RA_BULKY_CU_FULL_CSG', 'SPI_PERF_RA_BULKY_CU_FULL_CSN', - 'SPI_PERF_RA_CSC_UNDER_TUNNEL', 'SPI_PERF_RA_CSG_LOCK', - 'SPI_PERF_RA_CSN_LOCK', 'SPI_PERF_RA_GFX_UNDER_TUNNEL', - 'SPI_PERF_RA_GS_LDS_OCCUPANCY', 'SPI_PERF_RA_GS_LOCK', - 'SPI_PERF_RA_GS_VGPR_OCCUPANCY', 'SPI_PERF_RA_HS_LOCK', - 'SPI_PERF_RA_LDS_CU_FULL_CSG', 'SPI_PERF_RA_LDS_CU_FULL_CSN', - 'SPI_PERF_RA_LDS_CU_FULL_GS', 'SPI_PERF_RA_LDS_CU_FULL_HS', - 'SPI_PERF_RA_LDS_CU_FULL_PS', 'SPI_PERF_RA_PC_PROBE_STALL_PS', - 'SPI_PERF_RA_PC_PSWAVE_STALL_PS', 'SPI_PERF_RA_PH_THROTTLE', - 'SPI_PERF_RA_PIPE_REQ_BIN2', 'SPI_PERF_RA_PRE_ALLOC_STALL', - 'SPI_PERF_RA_PS_LDS_OCCUPANCY', 'SPI_PERF_RA_PS_VGPR_OCCUPANCY', - 'SPI_PERF_RA_REQ_ALLOC', - 'SPI_PERF_RA_REQ_ALLOC_DYN_VGPR_CU_LEVEL', - 'SPI_PERF_RA_REQ_ALLOC_DYN_VGPR_STALL', - 'SPI_PERF_RA_REQ_ALLOC_WGP_TAKEOVER_LEVEL', - 'SPI_PERF_RA_REQ_ALLOC_WGP_TAKEOVER_STALL', - 'SPI_PERF_RA_REQ_NO_ALLOC', 'SPI_PERF_RA_REQ_NO_ALLOC_CSG', - 'SPI_PERF_RA_REQ_NO_ALLOC_CSN', 'SPI_PERF_RA_REQ_NO_ALLOC_GS', - 'SPI_PERF_RA_REQ_NO_ALLOC_HS', 'SPI_PERF_RA_REQ_NO_ALLOC_PS', - 'SPI_PERF_RA_RES_STALL_CSG', 'SPI_PERF_RA_RES_STALL_CSN', - 'SPI_PERF_RA_RES_STALL_GS', 'SPI_PERF_RA_RES_STALL_HS', - 'SPI_PERF_RA_RES_STALL_PS', 'SPI_PERF_RA_RSV_UPD', - 'SPI_PERF_RA_SPI_THROTTLE', 'SPI_PERF_RA_TASK_REQ_BIN3', - 'SPI_PERF_RA_TGLIM_CU_FULL_CSG', 'SPI_PERF_RA_TGLIM_CU_FULL_CSN', - 'SPI_PERF_RA_TMP_STALL_CSG', 'SPI_PERF_RA_TMP_STALL_CSN', - 'SPI_PERF_RA_TMP_STALL_GS', 'SPI_PERF_RA_TMP_STALL_HS', - 'SPI_PERF_RA_TMP_STALL_PS', 'SPI_PERF_RA_VGPR_SIMD_FULL_CSG', - 'SPI_PERF_RA_VGPR_SIMD_FULL_CSN', 'SPI_PERF_RA_VGPR_SIMD_FULL_GS', - 'SPI_PERF_RA_VGPR_SIMD_FULL_HS', 'SPI_PERF_RA_VGPR_SIMD_FULL_PS', - 'SPI_PERF_RA_WAVE_SIMD_FULL_CSG', - 'SPI_PERF_RA_WAVE_SIMD_FULL_CSN', 'SPI_PERF_RA_WAVE_SIMD_FULL_GS', - 'SPI_PERF_RA_WAVE_SIMD_FULL_HS', 'SPI_PERF_RA_WAVE_SIMD_FULL_PS', - 'SPI_PERF_RA_WR_CTL_FULL', 'SPI_PERF_RA_WVALLOC_STALL', - 'SPI_PERF_RA_WVLIM_STALL_CSG', 'SPI_PERF_RA_WVLIM_STALL_CSN', - 'SPI_PERF_RA_WVLIM_STALL_GS', 'SPI_PERF_RA_WVLIM_STALL_HS', - 'SPI_PERF_RA_WVLIM_STALL_PS', 'SPI_PERF_SGPR_INIT', - 'SPI_PERF_SWC_CSGN_WR', 'SPI_PERF_SWC_CSN_WR', - 'SPI_PERF_SWC_GS_WR', 'SPI_PERF_SWC_HS_WR', 'SPI_PERF_SWC_PS_WR', - 'SPI_PERF_VGPR_ALLOC_LEVEL', 'SPI_PERF_VGPR_INIT', - 'SPI_PERF_VWC_CSGN_WR', 'SPI_PERF_VWC_CSN_WR', - 'SPI_PERF_VWC_ES_WR', 'SPI_PERF_VWC_GS_WR', 'SPI_PERF_VWC_HS_WR', - 'SPI_PERF_VWC_LS_WR', 'SPI_PERF_VWC_PS_WR', - 'SPI_PNT_SPRITE_OVERRIDE', 'SPI_PNT_SPRITE_SEL_0', - 'SPI_PNT_SPRITE_SEL_1', 'SPI_PNT_SPRITE_SEL_NONE', - 'SPI_PNT_SPRITE_SEL_S', 'SPI_PNT_SPRITE_SEL_T', - 'SPI_PS_LDS_GROUP_1', 'SPI_PS_LDS_GROUP_2', 'SPI_PS_LDS_GROUP_4', - 'SPI_PS_LDS_GROUP_SIZE', 'SPI_SAMPLE_CNTL', 'SPI_SHADER_1COMP', - 'SPI_SHADER_2COMP', 'SPI_SHADER_32_ABGR', 'SPI_SHADER_32_AR', - 'SPI_SHADER_32_GR', 'SPI_SHADER_32_R', 'SPI_SHADER_4COMP', - 'SPI_SHADER_4COMPRESS', 'SPI_SHADER_EX_FORMAT', - 'SPI_SHADER_FORMAT', 'SPI_SHADER_FP16_ABGR', 'SPI_SHADER_NONE', - 'SPI_SHADER_SINT16_ABGR', 'SPI_SHADER_SNORM16_ABGR', - 'SPI_SHADER_UINT16_ABGR', 'SPI_SHADER_UNORM16_ABGR', - 'SPI_SHADER_ZERO', 'SPM_PERFMON_STATE', 'SPRITE_EN', - 'SP_PERF_SEL_DST_BUF_ALLOC_STALL', - 'SP_PERF_SEL_DST_BUF_EVEN_DIRTY', 'SP_PERF_SEL_DST_BUF_ODD_DIRTY', - 'SP_PERF_SEL_DST_BUF_WB_CONF_W_SPI', - 'SP_PERF_SEL_DST_BUF_WB_CONF_W_TD_LDS', 'SP_PERF_SEL_DUMMY_LAST', - 'SP_PERF_SEL_SRC_CACHE_HIT_B0', 'SP_PERF_SEL_SRC_CACHE_HIT_B1', - 'SP_PERF_SEL_SRC_CACHE_HIT_B2', 'SP_PERF_SEL_SRC_CACHE_HIT_B3', - 'SP_PERF_SEL_SRC_CACHE_PROBE_B0', - 'SP_PERF_SEL_SRC_CACHE_PROBE_B1', - 'SP_PERF_SEL_SRC_CACHE_PROBE_B2', - 'SP_PERF_SEL_SRC_CACHE_PROBE_B3', - 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B0', - 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B1', - 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B2', - 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B3', - 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B0', - 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B1', - 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B2', - 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B3', - 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B0', - 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B1', - 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B2', - 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B3', - 'SP_PERF_SEL_VALU_COEXEC_WITH_TRANS', - 'SP_PERF_SEL_VALU_EXEC_MASK_CHANGE', - 'SP_PERF_SEL_VALU_FAST_OP_STALL_VGPR_NOT_READY', - 'SP_PERF_SEL_VALU_OPERAND', - 'SP_PERF_SEL_VALU_OPERAND_FROM_DST_BUF', - 'SP_PERF_SEL_VALU_PENDING_QUEUE_STALL', - 'SP_PERF_SEL_VALU_SGPR_FWD_BUF_FULL', 'SP_PERF_SEL_VALU_STALL', - 'SP_PERF_SEL_VALU_STALL_DST_STALL', - 'SP_PERF_SEL_VALU_STALL_SDST_FWD', - 'SP_PERF_SEL_VALU_STALL_SGPR_NOT_READY', - 'SP_PERF_SEL_VALU_STALL_VDST_FWD', - 'SP_PERF_SEL_VALU_STALL_VGPR_NOT_READY', - 'SP_PERF_SEL_VALU_VGPR_OPERAND', - 'SP_PERF_SEL_VALU_VGPR_RD_CONFLICT_EXP', - 'SP_PERF_SEL_VALU_VGPR_RD_CONFLICT_LDS', - 'SP_PERF_SEL_VALU_VGPR_RD_CONFLICT_TEX', - 'SP_PERF_SEL_VGPR_EXP_RD', 'SP_PERF_SEL_VGPR_RD', - 'SP_PERF_SEL_VGPR_SPI_WR', 'SP_PERF_SEL_VGPR_TDLDS_DATA_WR', - 'SP_PERF_SEL_VGPR_VMEM_RD', 'SP_PERF_SEL_VGPR_WR', - 'SP_PERF_SEL_VGPR_WR_KILL', 'SQC_PERF_SEL_DCACHE_BUSY_CYCLES', - 'SQC_PERF_SEL_DCACHE_CACHE_STALLED', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_INFLIGHT_MAX', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT', - 'SQC_PERF_SEL_DCACHE_FLAT_REQ', 'SQC_PERF_SEL_DCACHE_GCR', - 'SQC_PERF_SEL_DCACHE_GCR_HITS', - 'SQC_PERF_SEL_DCACHE_GCR_INVALIDATE', 'SQC_PERF_SEL_DCACHE_HITS', - 'SQC_PERF_SEL_DCACHE_HIT_LRU_READ', - 'SQC_PERF_SEL_DCACHE_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_DCACHE_INPUT_STALL_ARB_NO_GRANT', - 'SQC_PERF_SEL_DCACHE_INPUT_STALL_BANK_READYB', - 'SQC_PERF_SEL_DCACHE_INPUT_VALID_READYB', - 'SQC_PERF_SEL_DCACHE_INVAL_ASYNC', - 'SQC_PERF_SEL_DCACHE_INVAL_INST', 'SQC_PERF_SEL_DCACHE_MISSES', - 'SQC_PERF_SEL_DCACHE_MISSES_DUPLICATE', - 'SQC_PERF_SEL_DCACHE_PREFETCH_MISSES', - 'SQC_PERF_SEL_DCACHE_PREFETCH_REQ_CACHELINES', - 'SQC_PERF_SEL_DCACHE_REQ', 'SQC_PERF_SEL_DCACHE_REQ_ATC_PROBE', - 'SQC_PERF_SEL_DCACHE_REQ_READ_1', - 'SQC_PERF_SEL_DCACHE_REQ_READ_16', - 'SQC_PERF_SEL_DCACHE_REQ_READ_2', - 'SQC_PERF_SEL_DCACHE_REQ_READ_4', - 'SQC_PERF_SEL_DCACHE_REQ_READ_8', - 'SQC_PERF_SEL_DCACHE_SPI_RETURN_STALL', - 'SQC_PERF_SEL_DCACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 'SQC_PERF_SEL_DCACHE_TC_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_DUMMY_LAST', 'SQC_PERF_SEL_ICACHE_BUSY_CYCLES', - 'SQC_PERF_SEL_ICACHE_CACHE_STALLED', - 'SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_MAX', - 'SQC_PERF_SEL_ICACHE_GCR', 'SQC_PERF_SEL_ICACHE_GCR_HITS', - 'SQC_PERF_SEL_ICACHE_GCR_INVALIDATE', 'SQC_PERF_SEL_ICACHE_HITS', - 'SQC_PERF_SEL_ICACHE_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_ICACHE_INPUT_STALL_ARB_NO_GRANT', - 'SQC_PERF_SEL_ICACHE_INPUT_STALL_BANK_READYB', - 'SQC_PERF_SEL_ICACHE_INPUT_VALID_READYB', - 'SQC_PERF_SEL_ICACHE_INVAL_ASYNC', - 'SQC_PERF_SEL_ICACHE_INVAL_INST', 'SQC_PERF_SEL_ICACHE_MISSES', - 'SQC_PERF_SEL_ICACHE_MISSES_DUPLICATE', - 'SQC_PERF_SEL_ICACHE_PREFETCH_MISSES', - 'SQC_PERF_SEL_ICACHE_PREFETCH_REQ_CACHELINES', - 'SQC_PERF_SEL_ICACHE_REQ', - 'SQC_PERF_SEL_ICACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 'SQC_PERF_SEL_ICACHE_TC_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_LDS_ACTIVE_ATOMIC_CNT', - 'SQC_PERF_SEL_LDS_ACTIVE_LOAD_CNT', - 'SQC_PERF_SEL_LDS_ACTIVE_STORE_CNT', - 'SQC_PERF_SEL_LDS_ADDR_ACTIVE', 'SQC_PERF_SEL_LDS_ADDR_CONFLICT', - 'SQC_PERF_SEL_LDS_ADDR_STALL', 'SQC_PERF_SEL_LDS_ATOMIC_DWORDS', - 'SQC_PERF_SEL_LDS_ATOMIC_RETURN', - 'SQC_PERF_SEL_LDS_BANKCONF_ATOMIC_CNT', - 'SQC_PERF_SEL_LDS_BANKCONF_LOAD_CNT', - 'SQC_PERF_SEL_LDS_BANKCONF_STORE_CNT', - 'SQC_PERF_SEL_LDS_BANK_CONFLICT', - 'SQC_PERF_SEL_LDS_FP_ADD_CYCLES', 'SQC_PERF_SEL_LDS_IDX_ACTIVE', - 'SQC_PERF_SEL_LDS_LDS_EXECUTION_STALL', - 'SQC_PERF_SEL_LDS_LDS_VGPR_WRITE_STALL', - 'SQC_PERF_SEL_LDS_LOAD_DWORDS', 'SQC_PERF_SEL_LDS_MEM_VIOLATIONS', - 'SQC_PERF_SEL_LDS_PC_LDS_WRITE_STALL_TD', - 'SQC_PERF_SEL_LDS_SPI_VGPR_WRITE_STALL_TD', - 'SQC_PERF_SEL_LDS_STORE_DWORDS', - 'SQC_PERF_SEL_LDS_TD_VGPR_CONF_STALL', - 'SQC_PERF_SEL_LDS_UNALIGNED_STALL', 'SQC_PERF_SEL_LDS_VGPR_BUSY', - 'SQC_PERF_SEL_SQ_DCACHE_REQS', 'SQC_PERF_SEL_TC_DATA_READ_REQ', - 'SQC_PERF_SEL_TC_INFLIGHT_LEVEL', 'SQC_PERF_SEL_TC_INST_REQ', - 'SQC_PERF_SEL_TC_REQ', 'SQC_PERF_SEL_TC_STALL', - 'SQC_PERF_SEL_TC_STARVE', 'SQC_PERF_SEL_TD_VGPR_BUSY', - 'SQDEC_BEGIN', 'SQDEC_END', 'SQGFXUDEC_BEGIN', 'SQGFXUDEC_END', - 'SQG_PERF_SEL', 'SQG_PERF_SEL_ACCUM_PREV', - 'SQG_PERF_SEL_BUSY_CYCLES', 'SQG_PERF_SEL_CYCLES', - 'SQG_PERF_SEL_DUMMY_LAST', 'SQG_PERF_SEL_EVENTS', - 'SQG_PERF_SEL_EXP_BUS0_BUSY', 'SQG_PERF_SEL_EXP_BUS1_BUSY', - 'SQG_PERF_SEL_EXP_REQ0_BUS_BUSY', - 'SQG_PERF_SEL_EXP_REQ1_BUS_BUSY', 'SQG_PERF_SEL_ITEMS', - 'SQG_PERF_SEL_ITEMS_CS', 'SQG_PERF_SEL_ITEMS_GS', - 'SQG_PERF_SEL_ITEMS_HS', 'SQG_PERF_SEL_ITEMS_PS', - 'SQG_PERF_SEL_LEVEL_WAVES', 'SQG_PERF_SEL_LEVEL_WGP_ACTIVE', - 'SQG_PERF_SEL_MSG', 'SQG_PERF_SEL_MSG_BUS_BUSY', - 'SQG_PERF_SEL_MSG_INTERRUPT', 'SQG_PERF_SEL_NONE', - 'SQG_PERF_SEL_PS_QUADS', 'SQG_PERF_SEL_REFCLKS', - 'SQG_PERF_SEL_TTRACE_LOST_PACKETS', 'SQG_PERF_SEL_TTRACE_STALL', - 'SQG_PERF_SEL_TTRACE_WRITE_DATA', 'SQG_PERF_SEL_WAVE32_ITEMS', - 'SQG_PERF_SEL_WAVE64_ITEMS', 'SQG_PERF_SEL_WAVES', - 'SQG_PERF_SEL_WAVES_32', 'SQG_PERF_SEL_WAVES_64', - 'SQG_PERF_SEL_WAVES_CS_VEC32', 'SQG_PERF_SEL_WAVES_DYN_VGPR', - 'SQG_PERF_SEL_WAVES_EQ_32', 'SQG_PERF_SEL_WAVES_EQ_64', - 'SQG_PERF_SEL_WAVES_GS_VEC32', 'SQG_PERF_SEL_WAVES_HS_VEC32', - 'SQG_PERF_SEL_WAVES_INITIAL_PREFETCH', 'SQG_PERF_SEL_WAVES_LT_16', - 'SQG_PERF_SEL_WAVES_LT_32', 'SQG_PERF_SEL_WAVES_LT_48', - 'SQG_PERF_SEL_WAVES_LT_64', 'SQG_PERF_SEL_WAVES_PS_VEC32', - 'SQG_PERF_SEL_WAVES_RESTORED', 'SQG_PERF_SEL_WAVES_SAVED', - 'SQG_PERF_SEL_WAVES_VEC32', 'SQG_PERF_SEL_WAVES_WGP_TAKEOVER', - 'SQG_PERF_SEL_WAVE_CYCLES', 'SQIND_GLOBAL_REGS_OFFSET', - 'SQIND_GLOBAL_REGS_SIZE', 'SQIND_LOCAL_REGS_OFFSET', - 'SQIND_LOCAL_REGS_SIZE', 'SQIND_WAVE_HOST_REGS_OFFSET', - 'SQIND_WAVE_HOST_REGS_SIZE', 'SQIND_WAVE_HW_REGS_OFFSET', - 'SQIND_WAVE_HW_REGS_SIZE', 'SQIND_WAVE_SGPRS_OFFSET', - 'SQIND_WAVE_SGPRS_SIZE', 'SQIND_WAVE_VGPRS_OFFSET', - 'SQIND_WAVE_VGPRS_SIZE', 'SQPERFDDEC_BEGIN', 'SQPERFDDEC_END', - 'SQPERFSDEC_BEGIN', 'SQPERFSDEC_END', 'SQPWRDEC_BEGIN', - 'SQPWRDEC_END', 'SQ_ARB_STATE_ISSUED_BRMSG', - 'SQ_ARB_STATE_ISSUED_EXPORT', 'SQ_ARB_STATE_ISSUED_LDS', - 'SQ_ARB_STATE_ISSUED_LDS_DIRECT', 'SQ_ARB_STATE_ISSUED_SCALAR', - 'SQ_ARB_STATE_ISSUED_TEX', 'SQ_ARB_STATE_ISSUED_VALU', - 'SQ_ARB_STATE_STALLED_BRMSG', 'SQ_ARB_STATE_STALLED_EXPORT', - 'SQ_ARB_STATE_STALLED_LDS', 'SQ_ARB_STATE_STALLED_LDS_DIRECT', - 'SQ_ARB_STATE_STALLED_SCALAR', 'SQ_ARB_STATE_STALLED_TEX', - 'SQ_ARB_STATE_STALLED_VALU', 'SQ_CAC_POWER_ALU_BUSY', - 'SQ_CAC_POWER_GPR_RD', 'SQ_CAC_POWER_GPR_WR', - 'SQ_CAC_POWER_LDS_BUSY', 'SQ_CAC_POWER_SEL', - 'SQ_CAC_POWER_TEX_BUSY', 'SQ_CAC_POWER_VALU', - 'SQ_CAC_POWER_VALU0', 'SQ_CAC_POWER_VALU1', 'SQ_CAC_POWER_VALU2', - 'SQ_DISPATCHER_GFX_CNT_PER_RING', 'SQ_DISPATCHER_GFX_MIN', - 'SQ_EDC_INFO_SOURCE', 'SQ_EDC_INFO_SOURCE_GDS', - 'SQ_EDC_INFO_SOURCE_INST', 'SQ_EDC_INFO_SOURCE_INVALID', - 'SQ_EDC_INFO_SOURCE_LDS', 'SQ_EDC_INFO_SOURCE_SGPR', - 'SQ_EDC_INFO_SOURCE_TA', 'SQ_EDC_INFO_SOURCE_VGPR', - 'SQ_EX_EXCP_ADDR_WATCH', 'SQ_EX_EXCP_ALU_FLOAT_DIV0', - 'SQ_EX_EXCP_ALU_INEXACT', 'SQ_EX_EXCP_ALU_INPUT_DENORM', - 'SQ_EX_EXCP_ALU_INT_DIV0', 'SQ_EX_EXCP_ALU_INVALID', - 'SQ_EX_EXCP_ALU_OVERFLOW', 'SQ_EX_EXCP_ALU_UNDERFLOW', - 'SQ_EX_EXCP_VALU_BASE', 'SQ_EX_EXCP_VALU_SIZE', 'SQ_FLAT', - 'SQ_GFXDEC_BEGIN', 'SQ_GFXDEC_END', 'SQ_GFXDEC_STATE_ID_SHIFT', - 'SQ_GLOBAL', 'SQ_IBUF_IB_DRET', 'SQ_IBUF_IB_EMPTY_WAIT_DRET', - 'SQ_IBUF_IB_EMPTY_WAIT_GNT', 'SQ_IBUF_IB_IDLE', - 'SQ_IBUF_IB_INI_WAIT_DRET', 'SQ_IBUF_IB_INI_WAIT_GNT', - 'SQ_IBUF_IB_LE_4DW', 'SQ_IBUF_IB_WAIT_DRET', 'SQ_IBUF_ST', - 'SQ_IMG_FILTER_MODE_BLEND', 'SQ_IMG_FILTER_MODE_MAX', - 'SQ_IMG_FILTER_MODE_MIN', 'SQ_IMG_FILTER_TYPE', 'SQ_IND_CMD_CMD', - 'SQ_IND_CMD_CMD_KILL', 'SQ_IND_CMD_CMD_NULL', - 'SQ_IND_CMD_CMD_SAVECTX', 'SQ_IND_CMD_CMD_SETFATALHALT', - 'SQ_IND_CMD_CMD_SETHALT', 'SQ_IND_CMD_CMD_SET_SYS_PRIO', - 'SQ_IND_CMD_CMD_SINGLE_STEP', 'SQ_IND_CMD_CMD_TRAP', - 'SQ_IND_CMD_CMD_TRAP_AFTER_INST', 'SQ_IND_CMD_MODE', - 'SQ_IND_CMD_MODE_BROADCAST', 'SQ_IND_CMD_MODE_BROADCAST_ME', - 'SQ_IND_CMD_MODE_BROADCAST_PIPE', - 'SQ_IND_CMD_MODE_BROADCAST_QUEUE', 'SQ_IND_CMD_MODE_SINGLE', - 'SQ_INST_STR_IB_WAVE2ID_NORMAL_INST_AV', - 'SQ_INST_STR_IB_WAVE_INST_SKIP_AV', - 'SQ_INST_STR_IB_WAVE_INTERNAL_INST_AV', - 'SQ_INST_STR_IB_WAVE_NOP_SLEEP_WAIT', 'SQ_INST_STR_IB_WAVE_NORML', - 'SQ_INST_STR_IB_WAVE_PC_FROM_SGPR_MSG_WAIT', 'SQ_INST_STR_ST', - 'SQ_INST_TYPE', 'SQ_INST_TYPE_BARRIER', - 'SQ_INST_TYPE_BRANCH_NOT_TAKEN', 'SQ_INST_TYPE_BRANCH_TAKEN', - 'SQ_INST_TYPE_DUAL_VALU', 'SQ_INST_TYPE_EXP', 'SQ_INST_TYPE_FLAT', - 'SQ_INST_TYPE_JUMP', 'SQ_INST_TYPE_LDS', - 'SQ_INST_TYPE_LDS_DIRECT', 'SQ_INST_TYPE_MSG', - 'SQ_INST_TYPE_NONE', 'SQ_INST_TYPE_OTHER', 'SQ_INST_TYPE_SCALAR', - 'SQ_INST_TYPE_TEX', 'SQ_INST_TYPE_VALU', - 'SQ_INST_TYPE_VALU_MATRIX', 'SQ_LLC_0', 'SQ_LLC_1', - 'SQ_LLC_BYPASS', 'SQ_LLC_CTL', 'SQ_LLC_RSVD_2', - 'SQ_MAX_PGM_SGPRS', 'SQ_MAX_PGM_VGPRS', 'SQ_NON_EVENT', - 'SQ_NO_INST_ISSUE', 'SQ_NO_INST_ISSUE_ALU_DEP', - 'SQ_NO_INST_ISSUE_BARRIER_WAIT', 'SQ_NO_INST_ISSUE_INTERNAL', - 'SQ_NO_INST_ISSUE_NO_ARB_WIN', 'SQ_NO_INST_ISSUE_NO_INSTS', - 'SQ_NO_INST_ISSUE_OTHER', 'SQ_NO_INST_ISSUE_SLEEP_WAIT', - 'SQ_NO_INST_ISSUE_S_WAITCNT', 'SQ_OOB_COMPLETE', - 'SQ_OOB_INDEX_AND_OFFSET', 'SQ_OOB_INDEX_ONLY', - 'SQ_OOB_NUM_RECORDS_0', 'SQ_OOB_SELECT', 'SQ_PERF_SEL', - 'SQ_PERF_SEL_ACCUM_PREV', 'SQ_PERF_SEL_BUSY_CYCLES', - 'SQ_PERF_SEL_CYCLES', 'SQ_PERF_SEL_DUMMY_END', - 'SQ_PERF_SEL_DUMMY_LAST', 'SQ_PERF_SEL_EVENTS', - 'SQ_PERF_SEL_EXP_BUS0_BUSY', 'SQ_PERF_SEL_EXP_BUS1_BUSY', - 'SQ_PERF_SEL_EXP_REQ0_BUS_BUSY', 'SQ_PERF_SEL_EXP_REQ1_BUS_BUSY', - 'SQ_PERF_SEL_EXP_REQ_BUS_STALL', 'SQ_PERF_SEL_EXP_REQ_FIFO_FULL', - 'SQ_PERF_SEL_IFETCH_LEVEL', 'SQ_PERF_SEL_IFETCH_REQS', - 'SQ_PERF_SEL_INSTS_ALL', 'SQ_PERF_SEL_INSTS_BARRIER_LOCK', - 'SQ_PERF_SEL_INSTS_BRANCH', 'SQ_PERF_SEL_INSTS_CBRANCH_NOT_TAKEN', - 'SQ_PERF_SEL_INSTS_CBRANCH_TAKEN', 'SQ_PERF_SEL_INSTS_DELAY_ALU', - 'SQ_PERF_SEL_INSTS_DELAY_ALU_COISSUE', - 'SQ_PERF_SEL_INSTS_DUAL_VALU_WAVE32', 'SQ_PERF_SEL_INSTS_EXP', - 'SQ_PERF_SEL_INSTS_EXP_MRT', 'SQ_PERF_SEL_INSTS_EXP_Z', - 'SQ_PERF_SEL_INSTS_FLAT', 'SQ_PERF_SEL_INSTS_FLAT_ATOMIC', - 'SQ_PERF_SEL_INSTS_FLAT_LOAD', 'SQ_PERF_SEL_INSTS_FLAT_STORE', - 'SQ_PERF_SEL_INSTS_GLOBAL_SCRATCH', 'SQ_PERF_SEL_INSTS_INTERNAL', - 'SQ_PERF_SEL_INSTS_LDS', 'SQ_PERF_SEL_INSTS_LDS_DIRECT_LOAD', - 'SQ_PERF_SEL_INSTS_LDS_PARAM_LOAD', 'SQ_PERF_SEL_INSTS_LOCK', - 'SQ_PERF_SEL_INSTS_NON_VALU_EXEC_SKIPPED', - 'SQ_PERF_SEL_INSTS_SALU', 'SQ_PERF_SEL_INSTS_SALU_CS', - 'SQ_PERF_SEL_INSTS_SALU_FLOAT', 'SQ_PERF_SEL_INSTS_SALU_GS', - 'SQ_PERF_SEL_INSTS_SALU_HS', 'SQ_PERF_SEL_INSTS_SALU_PS', - 'SQ_PERF_SEL_INSTS_SENDMSG', 'SQ_PERF_SEL_INSTS_SMEM', - 'SQ_PERF_SEL_INSTS_SMEM_CS', 'SQ_PERF_SEL_INSTS_SMEM_GS', - 'SQ_PERF_SEL_INSTS_SMEM_HS', 'SQ_PERF_SEL_INSTS_SMEM_NORM', - 'SQ_PERF_SEL_INSTS_SMEM_PS', 'SQ_PERF_SEL_INSTS_TEX', - 'SQ_PERF_SEL_INSTS_TEX_ATOMIC_NORTN', - 'SQ_PERF_SEL_INSTS_TEX_ATOMIC_RTN', - 'SQ_PERF_SEL_INSTS_TEX_BLOCK_LOAD', - 'SQ_PERF_SEL_INSTS_TEX_BLOCK_STORE', 'SQ_PERF_SEL_INSTS_TEX_LOAD', - 'SQ_PERF_SEL_INSTS_TEX_SAMPLE', 'SQ_PERF_SEL_INSTS_TEX_STORE', - 'SQ_PERF_SEL_INSTS_VALU', 'SQ_PERF_SEL_INSTS_VALU_1_PASS', - 'SQ_PERF_SEL_INSTS_VALU_2_PASS', 'SQ_PERF_SEL_INSTS_VALU_4_PASS', - 'SQ_PERF_SEL_INSTS_VALU_COISSUE', 'SQ_PERF_SEL_INSTS_VALU_DP', - 'SQ_PERF_SEL_INSTS_VALU_EXEC_SKIPPED', - 'SQ_PERF_SEL_INSTS_VALU_NO_COEXEC', - 'SQ_PERF_SEL_INSTS_VALU_ONE_CYCLE_WAVE64', - 'SQ_PERF_SEL_INSTS_VALU_ONE_CYCLE_WAVE64_16BIT', - 'SQ_PERF_SEL_INSTS_VALU_ONE_CYCLE_WAVE64_32BIT', - 'SQ_PERF_SEL_INSTS_VALU_TRANS', 'SQ_PERF_SEL_INSTS_VALU_TRANS32', - 'SQ_PERF_SEL_INSTS_VALU_VINTERP', 'SQ_PERF_SEL_INSTS_VEC32', - 'SQ_PERF_SEL_INSTS_VEC32_FLAT', - 'SQ_PERF_SEL_INSTS_VEC32_FLAT_ATOMIC', - 'SQ_PERF_SEL_INSTS_VEC32_FLAT_LOAD', - 'SQ_PERF_SEL_INSTS_VEC32_FLAT_STORE', - 'SQ_PERF_SEL_INSTS_VEC32_GLOBAL_SCRATCH', - 'SQ_PERF_SEL_INSTS_VEC32_GLOBAL_SCRATCH_ATOMIC', - 'SQ_PERF_SEL_INSTS_VEC32_GLOBAL_SCRATCH_LOAD', - 'SQ_PERF_SEL_INSTS_VEC32_GLOBAL_SCRATCH_STORE', - 'SQ_PERF_SEL_INSTS_VEC32_LDS', - 'SQ_PERF_SEL_INSTS_VEC32_LDS_ATOMIC_NORTN', - 'SQ_PERF_SEL_INSTS_VEC32_LDS_ATOMIC_RTN', - 'SQ_PERF_SEL_INSTS_VEC32_LDS_LOAD', - 'SQ_PERF_SEL_INSTS_VEC32_LDS_OTHER', - 'SQ_PERF_SEL_INSTS_VEC32_LDS_PARAM_LOAD', - 'SQ_PERF_SEL_INSTS_VEC32_LDS_STORE', - 'SQ_PERF_SEL_INSTS_VEC32_LEVEL_LDS', - 'SQ_PERF_SEL_INSTS_VEC32_LEVEL_LDS_LOAD', - 'SQ_PERF_SEL_INSTS_VEC32_LEVEL_LDS_STORE', - 'SQ_PERF_SEL_INSTS_VEC32_TEX', - 'SQ_PERF_SEL_INSTS_VEC32_TEX_ATOMIC', - 'SQ_PERF_SEL_INSTS_VEC32_TEX_CS', - 'SQ_PERF_SEL_INSTS_VEC32_TEX_GS', - 'SQ_PERF_SEL_INSTS_VEC32_TEX_HS', - 'SQ_PERF_SEL_INSTS_VEC32_TEX_LOAD', - 'SQ_PERF_SEL_INSTS_VEC32_TEX_PS', - 'SQ_PERF_SEL_INSTS_VEC32_TEX_SAMPLE', - 'SQ_PERF_SEL_INSTS_VEC32_TEX_STORE', - 'SQ_PERF_SEL_INSTS_VEC32_VALU', 'SQ_PERF_SEL_INSTS_VEC32_VALU_CS', - 'SQ_PERF_SEL_INSTS_VEC32_VALU_GS', - 'SQ_PERF_SEL_INSTS_VEC32_VALU_HS', - 'SQ_PERF_SEL_INSTS_VEC32_VALU_NO_COEXEC', - 'SQ_PERF_SEL_INSTS_VEC32_VALU_PS', - 'SQ_PERF_SEL_INSTS_VEC32_VALU_TRANS32', - 'SQ_PERF_SEL_INSTS_VEC32_VALU_VINTERP', - 'SQ_PERF_SEL_INSTS_VEC32_VALU_WMMA', - 'SQ_PERF_SEL_INSTS_VGPR_ALLOC', - 'SQ_PERF_SEL_INSTS_VGPR_ALLOC_FAIL', 'SQ_PERF_SEL_INSTS_WAKEUP', - 'SQ_PERF_SEL_INSTS_WMMA_LOAD', 'SQ_PERF_SEL_INST_BARRIER_STALL', - 'SQ_PERF_SEL_INST_CACHE_REQ_STALL', 'SQ_PERF_SEL_INST_CYCLES_EXP', - 'SQ_PERF_SEL_INST_CYCLES_FLAT', 'SQ_PERF_SEL_INST_CYCLES_LDS', - 'SQ_PERF_SEL_INST_CYCLES_TEX', 'SQ_PERF_SEL_INST_CYCLES_VALU', - 'SQ_PERF_SEL_INST_CYCLES_VALU_NO_COEXEC', - 'SQ_PERF_SEL_INST_CYCLES_VALU_TRANS32', - 'SQ_PERF_SEL_INST_CYCLES_VMEM', - 'SQ_PERF_SEL_INST_CYCLES_VMEM_ATOMIC', - 'SQ_PERF_SEL_INST_CYCLES_VMEM_LOAD', - 'SQ_PERF_SEL_INST_CYCLES_VMEM_STORE', - 'SQ_PERF_SEL_INST_ISSUE_ALL_STALL', - 'SQ_PERF_SEL_INST_ISSUE_EXP_STALL', - 'SQ_PERF_SEL_INST_ISSUE_LDS_STALL', - 'SQ_PERF_SEL_INST_ISSUE_SALU_STALL', - 'SQ_PERF_SEL_INST_ISSUE_SMEM_STALL', - 'SQ_PERF_SEL_INST_ISSUE_TEX_STALL', - 'SQ_PERF_SEL_INST_ISSUE_VALU_STALL', 'SQ_PERF_SEL_INST_LEVEL_EXP', - 'SQ_PERF_SEL_INST_LEVEL_LDS', 'SQ_PERF_SEL_INST_LEVEL_SMEM', - 'SQ_PERF_SEL_INST_LEVEL_TEX_LOAD', - 'SQ_PERF_SEL_INST_LEVEL_TEX_STORE', - 'SQ_PERF_SEL_INST_WAITCNT_STALL', 'SQ_PERF_SEL_IS_CACHE_DUP_MISS', - 'SQ_PERF_SEL_IS_CACHE_MISS', 'SQ_PERF_SEL_IS_CACHE_REQ', - 'SQ_PERF_SEL_ITEMS', 'SQ_PERF_SEL_ITEMS_MAX_VALU', - 'SQ_PERF_SEL_ITEMS_VALU', 'SQ_PERF_SEL_ITEM_CYCLES_VALU', - 'SQ_PERF_SEL_ITEM_CYCLES_VMEM', - 'SQ_PERF_SEL_LDS_DIRECT_CMD_FIFO_FULL_STALL', - 'SQ_PERF_SEL_LEVEL_WAVES', 'SQ_PERF_SEL_MSG', - 'SQ_PERF_SEL_MSG_BUS_BUSY', 'SQ_PERF_SEL_MSG_FIFO_FULL_STALL', - 'SQ_PERF_SEL_MSG_INTERRUPT', 'SQ_PERF_SEL_NONE', - 'SQ_PERF_SEL_NONE2', 'SQ_PERF_SEL_OVERFLOW_PREV', - 'SQ_PERF_SEL_PS_QUADS', 'SQ_PERF_SEL_SALU_GATHER_FULL_STALL', - 'SQ_PERF_SEL_SALU_PIPE_STALL', 'SQ_PERF_SEL_SALU_SGATHER_STALL', - 'SQ_PERF_SEL_SALU_SGPR_RD_FIFO_FULL_STALL', - 'SQ_PERF_SEL_SMEM_DCACHE_RETURN_CYCLES', - 'SQ_PERF_SEL_SP_CONST_CYCLES', - 'SQ_PERF_SEL_SP_CONST_STALL_CYCLES', 'SQ_PERF_SEL_USER0', - 'SQ_PERF_SEL_USER1', 'SQ_PERF_SEL_USER10', 'SQ_PERF_SEL_USER11', - 'SQ_PERF_SEL_USER12', 'SQ_PERF_SEL_USER13', 'SQ_PERF_SEL_USER14', - 'SQ_PERF_SEL_USER15', 'SQ_PERF_SEL_USER2', 'SQ_PERF_SEL_USER3', - 'SQ_PERF_SEL_USER4', 'SQ_PERF_SEL_USER5', 'SQ_PERF_SEL_USER6', - 'SQ_PERF_SEL_USER7', 'SQ_PERF_SEL_USER8', 'SQ_PERF_SEL_USER9', - 'SQ_PERF_SEL_USER_LEVEL0', 'SQ_PERF_SEL_USER_LEVEL1', - 'SQ_PERF_SEL_USER_LEVEL10', 'SQ_PERF_SEL_USER_LEVEL11', - 'SQ_PERF_SEL_USER_LEVEL12', 'SQ_PERF_SEL_USER_LEVEL13', - 'SQ_PERF_SEL_USER_LEVEL14', 'SQ_PERF_SEL_USER_LEVEL15', - 'SQ_PERF_SEL_USER_LEVEL2', 'SQ_PERF_SEL_USER_LEVEL3', - 'SQ_PERF_SEL_USER_LEVEL4', 'SQ_PERF_SEL_USER_LEVEL5', - 'SQ_PERF_SEL_USER_LEVEL6', 'SQ_PERF_SEL_USER_LEVEL7', - 'SQ_PERF_SEL_USER_LEVEL8', 'SQ_PERF_SEL_USER_LEVEL9', - 'SQ_PERF_SEL_VALU_FWD_BUFFER_FULL_STALL', - 'SQ_PERF_SEL_VALU_READWRITELANE_CYCLES', - 'SQ_PERF_SEL_VALU_RETURN_SDST', - 'SQ_PERF_SEL_VALU_SGATHER_FULL_STALL', - 'SQ_PERF_SEL_VALU_SGATHER_STALL', - 'SQ_PERF_SEL_VALU_SGPR_RD_FIFO_FULL_STALL', - 'SQ_PERF_SEL_VALU_STARVE', 'SQ_PERF_SEL_VEC32_INSTS_EXP', - 'SQ_PERF_SEL_VMEM_ARB_FIFO_FULL', 'SQ_PERF_SEL_VMEM_BUS_ACTIVE', - 'SQ_PERF_SEL_VMEM_BUS_STALL', - 'SQ_PERF_SEL_VMEM_BUS_STALL_LDS_ADDR_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_BUS_STALL_LDS_CMD_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_BUS_STALL_TA_ADDR_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_BUS_STALL_TA_CMD_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_STARVE_LDS_ADDR_EMPTY', - 'SQ_PERF_SEL_VMEM_STARVE_TA_ADDR_EMPTY', - 'SQ_PERF_SEL_VMEM_VGPR_READ_STALLED_BY_EXPORT', - 'SQ_PERF_SEL_WAIT_ANY', 'SQ_PERF_SEL_WAIT_BARRIER', - 'SQ_PERF_SEL_WAIT_CNT_ANY', 'SQ_PERF_SEL_WAIT_CNT_DS', - 'SQ_PERF_SEL_WAIT_CNT_EXP', 'SQ_PERF_SEL_WAIT_CNT_KM', - 'SQ_PERF_SEL_WAIT_CNT_LOAD', 'SQ_PERF_SEL_WAIT_CNT_SAMPLE', - 'SQ_PERF_SEL_WAIT_CNT_STORE', 'SQ_PERF_SEL_WAIT_DELAY_ALU', - 'SQ_PERF_SEL_WAIT_DEPCTR', 'SQ_PERF_SEL_WAIT_EXP_ALLOC', - 'SQ_PERF_SEL_WAIT_IFETCH', 'SQ_PERF_SEL_WAIT_INST_ANY', - 'SQ_PERF_SEL_WAIT_OTHER', 'SQ_PERF_SEL_WAIT_SLEEP', - 'SQ_PERF_SEL_WAIT_TTRACE', 'SQ_PERF_SEL_WAVE32_INSTS', - 'SQ_PERF_SEL_WAVE32_ITEMS', 'SQ_PERF_SEL_WAVE64_HALF_SKIP', - 'SQ_PERF_SEL_WAVE64_INSTS', 'SQ_PERF_SEL_WAVE64_ITEMS', - 'SQ_PERF_SEL_WAVES', 'SQ_PERF_SEL_WAVES_32', - 'SQ_PERF_SEL_WAVES_64', 'SQ_PERF_SEL_WAVES_EQ_32', - 'SQ_PERF_SEL_WAVES_EQ_64', 'SQ_PERF_SEL_WAVES_INITIAL_PREFETCH', - 'SQ_PERF_SEL_WAVES_LT_16', 'SQ_PERF_SEL_WAVES_LT_32', - 'SQ_PERF_SEL_WAVES_LT_48', 'SQ_PERF_SEL_WAVES_LT_64', - 'SQ_PERF_SEL_WAVES_RESTORED', 'SQ_PERF_SEL_WAVES_SAVED', - 'SQ_PERF_SEL_WAVE_CYCLES', 'SQ_PERF_SEL_WAVE_READY', - 'SQ_ROUND_MINUS_INFINITY', 'SQ_ROUND_MODE', - 'SQ_ROUND_NEAREST_EVEN', 'SQ_ROUND_PLUS_INFINITY', - 'SQ_ROUND_TO_ZERO', 'SQ_RSRC_BUF', 'SQ_RSRC_BUF_RSVD_1', - 'SQ_RSRC_BUF_RSVD_2', 'SQ_RSRC_BUF_RSVD_3', 'SQ_RSRC_BUF_TYPE', - 'SQ_RSRC_FLAT', 'SQ_RSRC_FLAT_RSVD_0', 'SQ_RSRC_FLAT_RSVD_2', - 'SQ_RSRC_FLAT_RSVD_3', 'SQ_RSRC_FLAT_TYPE', 'SQ_RSRC_IMG_1D', - 'SQ_RSRC_IMG_1D_ARRAY', 'SQ_RSRC_IMG_2D', 'SQ_RSRC_IMG_2D_ARRAY', - 'SQ_RSRC_IMG_2D_MSAA', 'SQ_RSRC_IMG_2D_MSAA_ARRAY', - 'SQ_RSRC_IMG_3D', 'SQ_RSRC_IMG_CUBE', 'SQ_RSRC_IMG_RSVD_0', - 'SQ_RSRC_IMG_RSVD_1', 'SQ_RSRC_IMG_RSVD_2', 'SQ_RSRC_IMG_RSVD_3', - 'SQ_RSRC_IMG_RSVD_4', 'SQ_RSRC_IMG_RSVD_5', 'SQ_RSRC_IMG_RSVD_6', - 'SQ_RSRC_IMG_RSVD_7', 'SQ_RSRC_IMG_TYPE', 'SQ_SCRATCH', - 'SQ_SEL_0', 'SQ_SEL_1', 'SQ_SEL_N_BC_1', 'SQ_SEL_RESERVED_1', - 'SQ_SEL_W', 'SQ_SEL_X', 'SQ_SEL_XYZW01', 'SQ_SEL_Y', 'SQ_SEL_Z', - 'SQ_TEX_ANISO_RATIO', 'SQ_TEX_ANISO_RATIO_1', - 'SQ_TEX_ANISO_RATIO_16', 'SQ_TEX_ANISO_RATIO_2', - 'SQ_TEX_ANISO_RATIO_4', 'SQ_TEX_ANISO_RATIO_8', - 'SQ_TEX_BORDER_COLOR', 'SQ_TEX_BORDER_COLOR_OPAQUE_BLACK', - 'SQ_TEX_BORDER_COLOR_OPAQUE_WHITE', - 'SQ_TEX_BORDER_COLOR_REGISTER', 'SQ_TEX_BORDER_COLOR_TRANS_BLACK', - 'SQ_TEX_CLAMP', 'SQ_TEX_CLAMP_BORDER', 'SQ_TEX_CLAMP_HALF_BORDER', - 'SQ_TEX_CLAMP_LAST_TEXEL', 'SQ_TEX_DEPTH_COMPARE', - 'SQ_TEX_DEPTH_COMPARE_ALWAYS', 'SQ_TEX_DEPTH_COMPARE_EQUAL', - 'SQ_TEX_DEPTH_COMPARE_GREATER', - 'SQ_TEX_DEPTH_COMPARE_GREATEREQUAL', 'SQ_TEX_DEPTH_COMPARE_LESS', - 'SQ_TEX_DEPTH_COMPARE_LESSEQUAL', 'SQ_TEX_DEPTH_COMPARE_NEVER', - 'SQ_TEX_DEPTH_COMPARE_NOTEQUAL', 'SQ_TEX_MIP_FILTER', - 'SQ_TEX_MIP_FILTER_LINEAR', 'SQ_TEX_MIP_FILTER_NONE', - 'SQ_TEX_MIP_FILTER_POINT', 'SQ_TEX_MIP_FILTER_POINT_ANISO_ADJ', - 'SQ_TEX_MIRROR', 'SQ_TEX_MIRROR_ONCE_BORDER', - 'SQ_TEX_MIRROR_ONCE_HALF_BORDER', 'SQ_TEX_MIRROR_ONCE_LAST_TEXEL', - 'SQ_TEX_WRAP', 'SQ_TEX_XY_FILTER', - 'SQ_TEX_XY_FILTER_ANISO_BILINEAR', 'SQ_TEX_XY_FILTER_ANISO_POINT', - 'SQ_TEX_XY_FILTER_BILINEAR', 'SQ_TEX_XY_FILTER_POINT', - 'SQ_TEX_Z_FILTER', 'SQ_TEX_Z_FILTER_LINEAR', - 'SQ_TEX_Z_FILTER_NONE', 'SQ_TEX_Z_FILTER_POINT', 'SQ_WATCH_MODES', - 'SQ_WATCH_MODE_ALL', 'SQ_WATCH_MODE_ATOMIC', - 'SQ_WATCH_MODE_NONREAD', 'SQ_WATCH_MODE_READ', - 'SQ_WAVE_FWD_PROG_INTERVAL', 'SQ_WAVE_FWD_PROG_INTERVAL_1024', - 'SQ_WAVE_FWD_PROG_INTERVAL_256', 'SQ_WAVE_FWD_PROG_INTERVAL_4096', - 'SQ_WAVE_FWD_PROG_INTERVAL_NEVER', 'SQ_WAVE_IB_DEP_HOLD_CNT_SIZE', - 'SQ_WAVE_IB_DEP_LDS_DIR_SIZE', 'SQ_WAVE_IB_DEP_SA_EXEC_SIZE', - 'SQ_WAVE_IB_DEP_SA_M0_SIZE', 'SQ_WAVE_IB_DEP_SA_SDST_SIZE', - 'SQ_WAVE_IB_DEP_VA_EXEC_SIZE', 'SQ_WAVE_IB_DEP_VA_SDST_SIZE', - 'SQ_WAVE_IB_DEP_VA_SSRC_SIZE', 'SQ_WAVE_IB_DEP_VA_VCC_SIZE', - 'SQ_WAVE_IB_DEP_VA_VDST_SIZE', 'SQ_WAVE_IB_DEP_VM_VSRC_SIZE', - 'SQ_WAVE_SCHED_MODES', - 'SQ_WAVE_SCHED_MODE_DISABLE_VA_VDST_VM_VSRC', - 'SQ_WAVE_SCHED_MODE_EXPERT', 'SQ_WAVE_SCHED_MODE_NORMAL', - 'SQ_WAVE_TYPE', 'SQ_WAVE_TYPE_CS', 'SQ_WAVE_TYPE_GS', - 'SQ_WAVE_TYPE_HS', 'SQ_WAVE_TYPE_PS', 'SQ_WAVE_TYPE_PS0', - 'SQ_WAVE_TYPE_PS1', 'SQ_WAVE_TYPE_PS2', 'SQ_WAVE_TYPE_PS3', - 'SQ_WAVE_TYPE_RSVD0', 'SQ_WAVE_TYPE_RSVD1', 'SQ_WAVE_TYPE_RSVD2', - 'STALL', 'STENCIL_ADD_CLAMP', 'STENCIL_ADD_WRAP', 'STENCIL_AND', - 'STENCIL_INVERT', 'STENCIL_KEEP', 'STENCIL_NAND', 'STENCIL_NOR', - 'STENCIL_ONES', 'STENCIL_OR', 'STENCIL_REPLACE_OP', - 'STENCIL_REPLACE_TEST', 'STENCIL_SUB_CLAMP', 'STENCIL_SUB_WRAP', - 'STENCIL_XNOR', 'STENCIL_XOR', 'STENCIL_ZERO', - 'STREAM_0_SYNCHRONIZATION', - 'STREAM_0_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_0_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_10_SYNCHRONIZATION', - 'STREAM_10_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_10_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_11_SYNCHRONIZATION', - 'STREAM_11_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_11_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_12_SYNCHRONIZATION', - 'STREAM_12_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_12_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_13_SYNCHRONIZATION', - 'STREAM_13_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_13_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_14_SYNCHRONIZATION', - 'STREAM_14_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_14_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_15_SYNCHRONIZATION', - 'STREAM_15_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_15_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_1_SYNCHRONIZATION', - 'STREAM_1_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_1_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_2_SYNCHRONIZATION', - 'STREAM_2_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_2_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_3_SYNCHRONIZATION', - 'STREAM_3_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_3_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_4_SYNCHRONIZATION', - 'STREAM_4_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_4_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_5_SYNCHRONIZATION', - 'STREAM_5_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_5_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_6_SYNCHRONIZATION', - 'STREAM_6_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_6_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_7_SYNCHRONIZATION', - 'STREAM_7_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_7_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_8_SYNCHRONIZATION', - 'STREAM_8_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_8_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_9_SYNCHRONIZATION', - 'STREAM_9_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_9_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STRM_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', - 'STRM_PERFMON_STATE_DISABLE_AND_RESET', - 'STRM_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 'STRM_PERFMON_STATE_RESERVED_3', - 'STRM_PERFMON_STATE_START_COUNTING', - 'STRM_PERFMON_STATE_STOP_COUNTING', 'SURFACE_DCC', - 'SURFACE_DCC_BLOCK_IS_IND_128B', 'SURFACE_DCC_BLOCK_IS_IND_64B', - 'SURFACE_DCC_BLOCK_IS_IND_64B_NO_128BCL', - 'SURFACE_DCC_BLOCK_IS_UNCONSTRAINED', 'SURFACE_DCC_IND_128B', - 'SURFACE_DCC_IND_64B', 'SURFACE_DCC_IND_BLK', - 'SURFACE_DCC_IS_IND_128B', 'SURFACE_DCC_IS_IND_64B', - 'SURFACE_DCC_IS_NOT_IND_128B', 'SURFACE_DCC_IS_NOT_IND_64B', - 'SURFACE_FLIP_AWAY_INT_LEVEL', 'SURFACE_FLIP_AWAY_INT_PULSE', - 'SURFACE_FLIP_AWAY_INT_TYPE', 'SURFACE_FLIP_EXEC_DEBUG_MODE', - 'SURFACE_FLIP_EXEC_DEBUG_MODE_ENABLE', - 'SURFACE_FLIP_EXEC_NORMAL_MODE', 'SURFACE_FLIP_INT_LEVEL', - 'SURFACE_FLIP_INT_PULSE', 'SURFACE_FLIP_INT_TYPE', - 'SURFACE_FLIP_IN_STEREOSYNC', 'SURFACE_FLIP_IN_STEREOSYNC_MODE', - 'SURFACE_FLIP_MODE_FOR_STEREOSYNC', - 'SURFACE_FLIP_MODE_FOR_STEREOSYNC_RESERVED', - 'SURFACE_FLIP_NOT_IN_STEREOSYNC_MODE', - 'SURFACE_FLIP_STEREO_SELECT_DISABLE', - 'SURFACE_FLIP_STEREO_SELECT_DISABLED', - 'SURFACE_FLIP_STEREO_SELECT_ENABLED', - 'SURFACE_FLIP_STEREO_SELECT_POLARITY', - 'SURFACE_FLIP_STEREO_SELECT_POLARITY_INVERT', - 'SURFACE_FLIP_STEREO_SELECT_POLARITY_NOT_INVERT', - 'SURFACE_FLIP_TYPE', 'SURFACE_FLIP_VUPDATE_SKIP_NUM', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_0', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_1', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_10', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_11', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_12', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_13', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_14', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_15', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_2', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_3', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_4', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_5', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_6', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_7', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_8', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_9', 'SURFACE_INUSE_IS_LATCHED', - 'SURFACE_INUSE_IS_NOT_LATCHED', 'SURFACE_INUSE_RAED_NO_LATCH', - 'SURFACE_IS_DCC', 'SURFACE_IS_NOT_DCC', 'SURFACE_IS_NOT_TMZ', - 'SURFACE_IS_TMZ', 'SURFACE_I_FLIP', 'SURFACE_PIXEL_FORMAT', - 'SURFACE_TMZ', 'SURFACE_UPDATE_IS_LOCKED', - 'SURFACE_UPDATE_IS_UNLOCKED', 'SURFACE_UPDATE_LOCK', - 'SURFACE_V_FLIP', 'SU_PERFCNT_SEL', 'SWATH_HEIGHT', - 'SWATH_HEIGHT_16L', 'SWATH_HEIGHT_1L', 'SWATH_HEIGHT_2L', - 'SWATH_HEIGHT_4L', 'SWATH_HEIGHT_8L', 'SX_BLEND_OPT', - 'SX_CB_RAT_ACK_REQUEST', 'SX_DOWNCONVERT_FORMAT', - 'SX_OPT_COMB_FCN', 'SX_PERFCOUNTER_VALS', 'SX_PERF_SEL_CLOCK', - 'SX_PERF_SEL_CLOCK_DROP_STALL', 'SX_PERF_SEL_COL_BUSY', - 'SX_PERF_SEL_DB0_4X2_DISCARD', 'SX_PERF_SEL_DB0_END_OF_WAVE', - 'SX_PERF_SEL_DB0_HALF_QUADS', 'SX_PERF_SEL_DB0_MRT_BLEND_BYPASS', - 'SX_PERF_SEL_DB0_MRT_DISCARD_SRC', - 'SX_PERF_SEL_DB0_MRT_DONT_RD_DEST', - 'SX_PERF_SEL_DB0_MRT_DOUBLE_QUADS', - 'SX_PERF_SEL_DB0_MRT_SINGLE_QUADS', 'SX_PERF_SEL_DB0_PIXELS', - 'SX_PERF_SEL_DB0_PIXEL_IDLE', 'SX_PERF_SEL_DB0_PIXEL_STALL', - 'SX_PERF_SEL_DB0_PRED_PIXELS', 'SX_PERF_SEL_DB0_SIZE', - 'SX_PERF_SEL_DB1_4X2_DISCARD', 'SX_PERF_SEL_DB1_END_OF_WAVE', - 'SX_PERF_SEL_DB1_HALF_QUADS', 'SX_PERF_SEL_DB1_MRT_BLEND_BYPASS', - 'SX_PERF_SEL_DB1_MRT_DISCARD_SRC', - 'SX_PERF_SEL_DB1_MRT_DONT_RD_DEST', - 'SX_PERF_SEL_DB1_MRT_DOUBLE_QUADS', - 'SX_PERF_SEL_DB1_MRT_SINGLE_QUADS', 'SX_PERF_SEL_DB1_PIXELS', - 'SX_PERF_SEL_DB1_PIXEL_IDLE', 'SX_PERF_SEL_DB1_PIXEL_STALL', - 'SX_PERF_SEL_DB1_PRED_PIXELS', 'SX_PERF_SEL_DB1_SIZE', - 'SX_PERF_SEL_DB2_4X2_DISCARD', 'SX_PERF_SEL_DB2_END_OF_WAVE', - 'SX_PERF_SEL_DB2_HALF_QUADS', 'SX_PERF_SEL_DB2_MRT_BLEND_BYPASS', - 'SX_PERF_SEL_DB2_MRT_DISCARD_SRC', - 'SX_PERF_SEL_DB2_MRT_DONT_RD_DEST', - 'SX_PERF_SEL_DB2_MRT_DOUBLE_QUADS', - 'SX_PERF_SEL_DB2_MRT_SINGLE_QUADS', 'SX_PERF_SEL_DB2_PIXELS', - 'SX_PERF_SEL_DB2_PIXEL_IDLE', 'SX_PERF_SEL_DB2_PIXEL_STALL', - 'SX_PERF_SEL_DB2_PRED_PIXELS', 'SX_PERF_SEL_DB2_SIZE', - 'SX_PERF_SEL_DB3_4X2_DISCARD', 'SX_PERF_SEL_DB3_END_OF_WAVE', - 'SX_PERF_SEL_DB3_HALF_QUADS', 'SX_PERF_SEL_DB3_MRT_BLEND_BYPASS', - 'SX_PERF_SEL_DB3_MRT_DISCARD_SRC', - 'SX_PERF_SEL_DB3_MRT_DONT_RD_DEST', - 'SX_PERF_SEL_DB3_MRT_DOUBLE_QUADS', - 'SX_PERF_SEL_DB3_MRT_SINGLE_QUADS', 'SX_PERF_SEL_DB3_PIXELS', - 'SX_PERF_SEL_DB3_PIXEL_IDLE', 'SX_PERF_SEL_DB3_PIXEL_STALL', - 'SX_PERF_SEL_DB3_PRED_PIXELS', 'SX_PERF_SEL_DB3_SIZE', - 'SX_PERF_SEL_GATE_EN1', 'SX_PERF_SEL_GATE_EN2', - 'SX_PERF_SEL_GATE_EN3', 'SX_PERF_SEL_GATE_EN4', - 'SX_PERF_SEL_GATE_EN5', 'SX_PERF_SEL_GATE_EN6', - 'SX_PERF_SEL_GATE_EN7', 'SX_PERF_SEL_GATE_EN8', - 'SX_PERF_SEL_IDX_BUSY', 'SX_PERF_SEL_IDX_IDLE_CYCLES', - 'SX_PERF_SEL_IDX_REQ', 'SX_PERF_SEL_IDX_REQ_LATENCY', - 'SX_PERF_SEL_IDX_RET', 'SX_PERF_SEL_IDX_SCBD_STALL', - 'SX_PERF_SEL_IDX_STALL_CYCLES', 'SX_PERF_SEL_PA_IDLE_CYCLES', - 'SX_PERF_SEL_PA_POS', 'SX_PERF_SEL_PA_POS_BANK_CONF', - 'SX_PERF_SEL_PA_REQ', 'SX_PERF_SEL_PA_REQ_LATENCY', - 'SX_PERF_SEL_POS_BUSY', 'SX_PERF_SEL_POS_SCBD_STALL', - 'SX_PERF_SEL_SH_COLOR_STALL', 'SX_PERF_SEL_SH_COLOR_STARVE', - 'SX_PERF_SEL_SH_IDX_STARVE', 'SX_PERF_SEL_SH_POS_STALL', - 'SX_PERF_SEL_SH_POS_STARVE', 'SX_RT_EXPORT_10_11_11', - 'SX_RT_EXPORT_16_16_AR', 'SX_RT_EXPORT_16_16_GR', - 'SX_RT_EXPORT_1_5_5_5', 'SX_RT_EXPORT_2_10_10_10', - 'SX_RT_EXPORT_2_10_10_10_6E4', 'SX_RT_EXPORT_2_10_10_10_7E3', - 'SX_RT_EXPORT_32_A', 'SX_RT_EXPORT_32_R', 'SX_RT_EXPORT_4_4_4_4', - 'SX_RT_EXPORT_5_6_5', 'SX_RT_EXPORT_8_8_8_8', - 'SX_RT_EXPORT_9_9_9_E5', 'SX_RT_EXPORT_NO_CONVERSION', - 'SYMCLK_FE_SRC', 'SYMCLK_FE_SRC_RESERVED', - 'SYMCLK_FE_SRC_UNIPHYA', 'SYMCLK_FE_SRC_UNIPHYB', - 'SYMCLK_FE_SRC_UNIPHYC', 'SYMCLK_FE_SRC_UNIPHYD', 'ScMap', - 'ScUncertaintyRegionMode', 'ScUncertaintyRegionMult', 'ScXsel', - 'ScYsel', 'SeMap', 'SePairMap', 'SePairXsel', 'SePairYsel', - 'SeXsel', 'SeYsel', 'StencilOp', 'TA_PERFCOUNT_SEL', - 'TA_PERF_SEL_NULL', 'TA_PERF_SEL_addr_stalled_by_tc_cycles', - 'TA_PERF_SEL_addr_stalled_by_td_cycles', - 'TA_PERF_SEL_addresser_busy', 'TA_PERF_SEL_addresser_fifo_busy', - 'TA_PERF_SEL_addresser_stalled_by_aligner_only_cycles', - 'TA_PERF_SEL_addresser_stalled_cycles', - 'TA_PERF_SEL_aligner_busy', - 'TA_PERF_SEL_aligner_clk_valid_cycles', - 'TA_PERF_SEL_aligner_cycles', 'TA_PERF_SEL_aniso_10_cycle_quads', - 'TA_PERF_SEL_aniso_12_cycle_quads', - 'TA_PERF_SEL_aniso_14_cycle_quads', - 'TA_PERF_SEL_aniso_16_cycle_quads', - 'TA_PERF_SEL_aniso_1_cycle_quads', - 'TA_PERF_SEL_aniso_2_cycle_quads', - 'TA_PERF_SEL_aniso_4_cycle_quads', - 'TA_PERF_SEL_aniso_6_cycle_quads', - 'TA_PERF_SEL_aniso_8_cycle_quads', - 'TA_PERF_SEL_aniso_gt1_cycle_quads', - 'TA_PERF_SEL_aniso_stalled_by_addresser_only_cycles', - 'TA_PERF_SEL_aniso_stalled_cycles', - 'TA_PERF_SEL_atomic_2_write_data_vgpr_instructions', - 'TA_PERF_SEL_atomic_4_write_data_vgpr_instructions', - 'TA_PERF_SEL_atomic_write_data_input_cycles', - 'TA_PERF_SEL_atomic_write_data_output_cycles', - 'TA_PERF_SEL_bf_busy', - 'TA_PERF_SEL_boundary_harvestable_clk_enabled_cycles', - 'TA_PERF_SEL_boundary_non_harvestable_clk_enabled_cycles', - 'TA_PERF_SEL_buffer_1_address_input_vgpr_instructions', - 'TA_PERF_SEL_buffer_2_address_input_vgpr_instructions', - 'TA_PERF_SEL_buffer_atomic_wavefronts', - 'TA_PERF_SEL_buffer_flat_1_op_burst', - 'TA_PERF_SEL_buffer_flat_2to3_op_burst', - 'TA_PERF_SEL_buffer_flat_4to31_op_burst', - 'TA_PERF_SEL_buffer_flat_clk_valid_cycles', - 'TA_PERF_SEL_buffer_flat_ge32_op_burst', - 'TA_PERF_SEL_buffer_has_index_instructions', - 'TA_PERF_SEL_buffer_has_offset_instructions', - 'TA_PERF_SEL_buffer_load_wavefronts', - 'TA_PERF_SEL_buffer_store_wavefronts', - 'TA_PERF_SEL_buffer_total_cycles', - 'TA_PERF_SEL_buffer_wavefronts', - 'TA_PERF_SEL_color_1_cycle_quads', - 'TA_PERF_SEL_color_2_cycle_quads', - 'TA_PERF_SEL_color_3_cycle_quads', - 'TA_PERF_SEL_deriv_stalled_by_aniso_only_cycles', - 'TA_PERF_SEL_deriv_stalled_cycles', - 'TA_PERF_SEL_flat_1_address_input_vgpr_instructions', - 'TA_PERF_SEL_flat_2_address_input_vgpr_instructions', - 'TA_PERF_SEL_flat_atomic_wavefronts', - 'TA_PERF_SEL_flat_load_wavefronts', - 'TA_PERF_SEL_flat_store_wavefronts', - 'TA_PERF_SEL_flat_total_cycles', 'TA_PERF_SEL_flat_wavefronts', - 'TA_PERF_SEL_gradient_busy', - 'TA_PERF_SEL_gradient_clk_valid_cycles', - 'TA_PERF_SEL_gradient_cycles', 'TA_PERF_SEL_gradient_fifo_busy', - 'TA_PERF_SEL_harvestable_clk_enabled_cycles', - 'TA_PERF_SEL_ibubble_16to31_cycle_burst', - 'TA_PERF_SEL_ibubble_1_cycle_burst', - 'TA_PERF_SEL_ibubble_2to3_cycle_burst', - 'TA_PERF_SEL_ibubble_32to63_cycle_burst', - 'TA_PERF_SEL_ibubble_4to15_cycle_burst', - 'TA_PERF_SEL_ibubble_ge64_cycle_burst', - 'TA_PERF_SEL_image_atomic_wavefronts', - 'TA_PERF_SEL_image_linked_1_op_burst', - 'TA_PERF_SEL_image_linked_2to3_op_burst', - 'TA_PERF_SEL_image_linked_4to7_op_burst', - 'TA_PERF_SEL_image_linked_ge8_op_burst', - 'TA_PERF_SEL_image_nosampler_1_address_input_vgpr_instructions', - 'TA_PERF_SEL_image_nosampler_1_op_burst', - 'TA_PERF_SEL_image_nosampler_2_address_input_vgpr_instructions', - 'TA_PERF_SEL_image_nosampler_2to3_op_burst', - 'TA_PERF_SEL_image_nosampler_3_address_input_vgpr_instructions', - 'TA_PERF_SEL_image_nosampler_4_address_input_vgpr_instructions', - 'TA_PERF_SEL_image_nosampler_4to31_op_burst', - 'TA_PERF_SEL_image_nosampler_ge32_op_burst', - 'TA_PERF_SEL_image_nosampler_has_q_instructions', - 'TA_PERF_SEL_image_nosampler_has_r_instructions', - 'TA_PERF_SEL_image_nosampler_has_t_instructions', - 'TA_PERF_SEL_image_nosampler_total_cycles', - 'TA_PERF_SEL_image_read_wavefronts', - 'TA_PERF_SEL_image_sampler_10_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_11_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_12_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_1_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_1_op_burst', - 'TA_PERF_SEL_image_sampler_2_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_2to3_op_burst', - 'TA_PERF_SEL_image_sampler_3_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_4_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_4to7_op_burst', - 'TA_PERF_SEL_image_sampler_5_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_6_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_7_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_8_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_9_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_ge8_op_burst', - 'TA_PERF_SEL_image_sampler_has_bias_instructions', - 'TA_PERF_SEL_image_sampler_has_dr_instructions', - 'TA_PERF_SEL_image_sampler_has_ds_instructions', - 'TA_PERF_SEL_image_sampler_has_dt_instructions', - 'TA_PERF_SEL_image_sampler_has_offset_instructions', - 'TA_PERF_SEL_image_sampler_has_q_instructions', - 'TA_PERF_SEL_image_sampler_has_r_instructions', - 'TA_PERF_SEL_image_sampler_has_reference_instructions', - 'TA_PERF_SEL_image_sampler_has_t_instructions', - 'TA_PERF_SEL_image_sampler_total_cycles', - 'TA_PERF_SEL_image_sampler_wavefronts', - 'TA_PERF_SEL_image_store_wavefronts', - 'TA_PERF_SEL_image_wavefronts', 'TA_PERF_SEL_in_addr_cycles', - 'TA_PERF_SEL_in_busy', 'TA_PERF_SEL_in_cfifo_busy', - 'TA_PERF_SEL_in_data_cycles', 'TA_PERF_SEL_in_fifos_busy', - 'TA_PERF_SEL_in_qfifo_busy', 'TA_PERF_SEL_in_rfifo_busy', - 'TA_PERF_SEL_in_waiting_on_req_cycles', - 'TA_PERF_SEL_in_wfifo_busy', - 'TA_PERF_SEL_lod_aniso_clk_valid_cycles', 'TA_PERF_SEL_lod_busy', - 'TA_PERF_SEL_lod_fifo_busy', 'TA_PERF_SEL_mip_1_cycle_quads', - 'TA_PERF_SEL_mip_2_cycle_quads', - 'TA_PERF_SEL_mipmap_invalid_samples', - 'TA_PERF_SEL_mipmap_lod_0_samples', - 'TA_PERF_SEL_mipmap_lod_10_samples', - 'TA_PERF_SEL_mipmap_lod_11_samples', - 'TA_PERF_SEL_mipmap_lod_12_samples', - 'TA_PERF_SEL_mipmap_lod_13_samples', - 'TA_PERF_SEL_mipmap_lod_14_samples', - 'TA_PERF_SEL_mipmap_lod_15_samples', - 'TA_PERF_SEL_mipmap_lod_16_samples', - 'TA_PERF_SEL_mipmap_lod_1_samples', - 'TA_PERF_SEL_mipmap_lod_2_samples', - 'TA_PERF_SEL_mipmap_lod_3_samples', - 'TA_PERF_SEL_mipmap_lod_4_samples', - 'TA_PERF_SEL_mipmap_lod_5_samples', - 'TA_PERF_SEL_mipmap_lod_6_samples', - 'TA_PERF_SEL_mipmap_lod_7_samples', - 'TA_PERF_SEL_mipmap_lod_8_samples', - 'TA_PERF_SEL_mipmap_lod_9_samples', - 'TA_PERF_SEL_non_harvestable_clk_enabled_cycles', - 'TA_PERF_SEL_nonsampler_clk_valid_cycles', 'TA_PERF_SEL_ns_busy', - 'TA_PERF_SEL_num_nodes_invalidated_due_to_bad_input', - 'TA_PERF_SEL_num_nodes_invalidated_due_to_oob', - 'TA_PERF_SEL_num_unlit_nodes_ta_opt', - 'TA_PERF_SEL_point_sampled_quads', - 'TA_PERF_SEL_register_clk_valid_cycles', - 'TA_PERF_SEL_sampler_addressing_clk_valid_cycles', - 'TA_PERF_SEL_sampler_clk_valid_cycles', - 'TA_PERF_SEL_sampler_op_quads', 'TA_PERF_SEL_smp_busy_ns_idle', - 'TA_PERF_SEL_smp_idle_ns_busy', - 'TA_PERF_SEL_store_2_write_data_vgpr_instructions', - 'TA_PERF_SEL_store_3_write_data_vgpr_instructions', - 'TA_PERF_SEL_store_4_write_data_vgpr_instructions', - 'TA_PERF_SEL_store_has_w_instructions', - 'TA_PERF_SEL_store_has_x_instructions', - 'TA_PERF_SEL_store_has_y_instructions', - 'TA_PERF_SEL_store_has_z_instructions', - 'TA_PERF_SEL_store_write_data_input_cycles', - 'TA_PERF_SEL_store_write_data_output_cycles', - 'TA_PERF_SEL_sync_nonsampler_fifo_clk_valid_cycles', - 'TA_PERF_SEL_sync_sampler_cstate_fifo_clk_valid_cycles', - 'TA_PERF_SEL_sync_sampler_sstate_fifo_clk_valid_cycles', - 'TA_PERF_SEL_ta_busy', 'TA_PERF_SEL_tcreq_clk_valid_cycles', - 'TA_PERF_SEL_total_wavefronts', 'TA_PERF_SEL_vmemcmd_cycles', - 'TA_PERF_SEL_vmemreq_cycles', 'TA_PERF_SEL_vol_1_cycle_quads', - 'TA_PERF_SEL_vol_2_cycle_quads', 'TA_PERF_SEL_walker_cycles', - 'TA_PERF_SEL_write_1_op_burst', 'TA_PERF_SEL_write_2to3_op_burst', - 'TA_PERF_SEL_write_4to31_op_burst', - 'TA_PERF_SEL_write_data_clk_valid_cycles', - 'TA_PERF_SEL_write_ge32_op_burst', 'TA_PERF_SEL_write_path_busy', - 'TA_TC_ADDR_MODES', 'TA_TC_ADDR_MODE_BORDER_COLOR', - 'TA_TC_ADDR_MODE_COMP0', 'TA_TC_ADDR_MODE_COMP1', - 'TA_TC_ADDR_MODE_COMP2', 'TA_TC_ADDR_MODE_COMP3', - 'TA_TC_ADDR_MODE_DEFAULT', 'TA_TC_ADDR_MODE_UNALIGNED', - 'TA_TC_REQ_MODES', 'TA_TC_REQ_MODE_BORDER', 'TA_TC_REQ_MODE_BYTE', - 'TA_TC_REQ_MODE_BYTE_NV', 'TA_TC_REQ_MODE_DWORD', - 'TA_TC_REQ_MODE_NORMAL', 'TA_TC_REQ_MODE_TEX0', - 'TA_TC_REQ_MODE_TEX1', 'TA_TC_REQ_MODE_TEX2', 'TCC_MTYPE', - 'TCP_CACHE_POLICIES', 'TCP_CACHE_POLICY_HIT_EVICT', - 'TCP_CACHE_POLICY_HIT_LRU', 'TCP_CACHE_POLICY_MISS_EVICT', - 'TCP_CACHE_POLICY_MISS_LRU', 'TCP_CACHE_STORE_POLICIES', - 'TCP_CACHE_STORE_POLICY_WT_EVICT', - 'TCP_CACHE_STORE_POLICY_WT_LRU', 'TCP_COMPRESSION_BYPASS', - 'TCP_COMPRESSION_BYPASS_DIS', 'TCP_COMPRESSION_BYPASS_EN', - 'TCP_COMPRESSION_OVERRIDE', 'TCP_COMPRESSION_OVERRIDE_DIS', - 'TCP_COMPRESSION_OVERRIDE_EN', 'TCP_OPCODE_ATOMIC', - 'TCP_OPCODE_ATOMIC_CMPSWAP', 'TCP_OPCODE_GATHERH', - 'TCP_OPCODE_INV', 'TCP_OPCODE_LOAD', 'TCP_OPCODE_READ', - 'TCP_OPCODE_SAMPLER', 'TCP_OPCODE_TYPE', 'TCP_OPCODE_WRITE', - 'TCP_PERFCOUNT_SELECT', 'TCP_PERF_SEL_ALLOC_STALL', - 'TCP_PERF_SEL_ATOMIC_TAGCONFLICT_STALL', - 'TCP_PERF_SEL_BURST_BIN_READHIT_0', - 'TCP_PERF_SEL_BURST_BIN_READHIT_1', - 'TCP_PERF_SEL_BURST_BIN_READHIT_2to4', - 'TCP_PERF_SEL_BURST_BIN_READHIT_5to8', - 'TCP_PERF_SEL_BURST_BIN_READHIT_9to16', - 'TCP_PERF_SEL_BURST_BIN_READHIT_gt16', - 'TCP_PERF_SEL_BURST_BIN_WRITECOMBINE_0', - 'TCP_PERF_SEL_BURST_BIN_WRITECOMBINE_1to2', - 'TCP_PERF_SEL_BURST_BIN_WRITECOMBINE_3to4', - 'TCP_PERF_SEL_BURST_BIN_WRITECOMBINE_5to8', - 'TCP_PERF_SEL_BURST_BIN_WRITECOMBINE_9to16', - 'TCP_PERF_SEL_COMP_TEX_LOAD_STALL', - 'TCP_PERF_SEL_DATA_FIFO_STALL', 'TCP_PERF_SEL_GATE_EN1', - 'TCP_PERF_SEL_GATE_EN2', 'TCP_PERF_SEL_GL1_GRANT_READ_STALL', - 'TCP_PERF_SEL_GL1_PENDING_STALL', 'TCP_PERF_SEL_GL1_READ_LATENCY', - 'TCP_PERF_SEL_GL1_REQ_ATOMIC_WITHOUT_RET', - 'TCP_PERF_SEL_GL1_REQ_ATOMIC_WITH_RET', 'TCP_PERF_SEL_GL1_REQ_LU', - 'TCP_PERF_SEL_GL1_REQ_READ', 'TCP_PERF_SEL_GL1_REQ_READ_128B', - 'TCP_PERF_SEL_GL1_REQ_READ_64B', 'TCP_PERF_SEL_GL1_REQ_WRITE', - 'TCP_PERF_SEL_GL1_TCP_BACK_PRESSURE', - 'TCP_PERF_SEL_GL1_TCP_RDRET_STALL', - 'TCP_PERF_SEL_GL1_WRITE_LATENCY', 'TCP_PERF_SEL_LFIFO_STALL', - 'TCP_PERF_SEL_LOD_STALL', 'TCP_PERF_SEL_MEM_REQ_FIFO_STALL', - 'TCP_PERF_SEL_POWER_STALL', - 'TCP_PERF_SEL_READ_DATACONFLICT_STALL', - 'TCP_PERF_SEL_READ_TAGCONFLICT_STALL', 'TCP_PERF_SEL_REQ', - 'TCP_PERF_SEL_REQ_MISS', 'TCP_PERF_SEL_REQ_MISS_TAGBANK0', - 'TCP_PERF_SEL_REQ_MISS_TAGBANK1', - 'TCP_PERF_SEL_REQ_MISS_TAGBANK2', - 'TCP_PERF_SEL_REQ_MISS_TAGBANK3', 'TCP_PERF_SEL_REQ_NON_READ', - 'TCP_PERF_SEL_REQ_READ', 'TCP_PERF_SEL_REQ_READ_HIT_LRU', - 'TCP_PERF_SEL_REQ_READ_MISS_EVICT', - 'TCP_PERF_SEL_REQ_TAGBANK0_SET0', - 'TCP_PERF_SEL_REQ_TAGBANK0_SET1', - 'TCP_PERF_SEL_REQ_TAGBANK1_SET0', - 'TCP_PERF_SEL_REQ_TAGBANK1_SET1', - 'TCP_PERF_SEL_REQ_TAGBANK2_SET0', - 'TCP_PERF_SEL_REQ_TAGBANK2_SET1', - 'TCP_PERF_SEL_REQ_TAGBANK3_SET0', - 'TCP_PERF_SEL_REQ_TAGBANK3_SET1', - 'TCP_PERF_SEL_REQ_TAG_MATCH_AND_LU_INVALIDATE', - 'TCP_PERF_SEL_REQ_TAG_MATCH_AND_NOT_VALID', - 'TCP_PERF_SEL_REQ_WRITE', 'TCP_PERF_SEL_REQ_WRITE_MISS_EVICT', - 'TCP_PERF_SEL_TAGFAKE_EOW', 'TCP_PERF_SEL_TA_REQ', - 'TCP_PERF_SEL_TA_REQ_ATOMIC_WITHOUT_RET', - 'TCP_PERF_SEL_TA_REQ_ATOMIC_WITH_RET', - 'TCP_PERF_SEL_TA_REQ_BUFFERNOP', 'TCP_PERF_SEL_TA_REQ_GL0_INV', - 'TCP_PERF_SEL_TA_REQ_READ', 'TCP_PERF_SEL_TA_REQ_STATE_READ', - 'TCP_PERF_SEL_TA_REQ_WRITE', 'TCP_PERF_SEL_TA_TCP_REQ_STARVE', - 'TCP_PERF_SEL_TA_TC_REQ_EN_SUM', 'TCP_PERF_SEL_TCP_LATENCY', - 'TCP_PERF_SEL_TCP_TA_REQ_STALL', - 'TCP_PERF_SEL_TD_DATA_CYCLE_STALL', 'TCP_PERF_SEL_TD_TCP_STALL', - 'TCP_PERF_SEL_WRITECOMBINE_ENDCLAUSE', - 'TCP_PERF_SEL_WRITE_DATACONFLICT_STALL', - 'TCP_PERF_SEL_WRITE_TAGCONFLICT_STALL', 'TCP_WATCH_MODES', - 'TCP_WATCH_MODE_ALL', 'TCP_WATCH_MODE_ATOMIC', - 'TCP_WATCH_MODE_NONREAD', 'TCP_WATCH_MODE_READ', - 'TCP_WRITE_COMPRESSION_DISABLE', - 'TCP_WRITE_COMPRESSION_DISABLE_DIS', - 'TCP_WRITE_COMPRESSION_DISABLE_EN', 'TC_EA_CID', 'TC_EA_CID_CPF', - 'TC_EA_CID_CPG', 'TC_EA_CID_DCC', 'TC_EA_CID_FMASK', - 'TC_EA_CID_HTILE', 'TC_EA_CID_IA', 'TC_EA_CID_MISC', - 'TC_EA_CID_PA', 'TC_EA_CID_RT', 'TC_EA_CID_SQC', - 'TC_EA_CID_STENCIL', 'TC_EA_CID_TCP', 'TC_EA_CID_TCPMETA', - 'TC_EA_CID_UTCL2_TPI', 'TC_EA_CID_WD', 'TC_EA_CID_Z', 'TC_NACKS', - 'TC_NACK_DATA_ERROR', 'TC_NACK_NO_FAULT', 'TC_NACK_PAGE_FAULT', - 'TC_NACK_PROTECTION_FAULT', 'TC_OP', 'TC_OP_ATOMIC_ADD_32', - 'TC_OP_ATOMIC_ADD_64', 'TC_OP_ATOMIC_ADD_RTN_32', - 'TC_OP_ATOMIC_ADD_RTN_64', 'TC_OP_ATOMIC_AND_32', - 'TC_OP_ATOMIC_AND_64', 'TC_OP_ATOMIC_AND_RTN_32', - 'TC_OP_ATOMIC_AND_RTN_64', 'TC_OP_ATOMIC_CMPSWAP_32', - 'TC_OP_ATOMIC_CMPSWAP_64', 'TC_OP_ATOMIC_CMPSWAP_RTN_32', - 'TC_OP_ATOMIC_CMPSWAP_RTN_64', 'TC_OP_ATOMIC_DEC_32', - 'TC_OP_ATOMIC_DEC_64', 'TC_OP_ATOMIC_DEC_RTN_32', - 'TC_OP_ATOMIC_DEC_RTN_64', 'TC_OP_ATOMIC_FADD_FLUSH_DENORM_32', - 'TC_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32', - 'TC_OP_ATOMIC_FCMPSWAP_32', 'TC_OP_ATOMIC_FCMPSWAP_64', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64', - 'TC_OP_ATOMIC_FCMPSWAP_RTN_32', 'TC_OP_ATOMIC_FCMPSWAP_RTN_64', - 'TC_OP_ATOMIC_FMAX_32', 'TC_OP_ATOMIC_FMAX_64', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_32', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_64', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64', - 'TC_OP_ATOMIC_FMAX_RTN_32', 'TC_OP_ATOMIC_FMAX_RTN_64', - 'TC_OP_ATOMIC_FMIN_32', 'TC_OP_ATOMIC_FMIN_64', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_32', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_64', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64', - 'TC_OP_ATOMIC_FMIN_RTN_32', 'TC_OP_ATOMIC_FMIN_RTN_64', - 'TC_OP_ATOMIC_INC_32', 'TC_OP_ATOMIC_INC_64', - 'TC_OP_ATOMIC_INC_RTN_32', 'TC_OP_ATOMIC_INC_RTN_64', - 'TC_OP_ATOMIC_OR_32', 'TC_OP_ATOMIC_OR_64', - 'TC_OP_ATOMIC_OR_RTN_32', 'TC_OP_ATOMIC_OR_RTN_64', - 'TC_OP_ATOMIC_SMAX_32', 'TC_OP_ATOMIC_SMAX_64', - 'TC_OP_ATOMIC_SMAX_RTN_32', 'TC_OP_ATOMIC_SMAX_RTN_64', - 'TC_OP_ATOMIC_SMIN_32', 'TC_OP_ATOMIC_SMIN_64', - 'TC_OP_ATOMIC_SMIN_RTN_32', 'TC_OP_ATOMIC_SMIN_RTN_64', - 'TC_OP_ATOMIC_SUB_32', 'TC_OP_ATOMIC_SUB_64', - 'TC_OP_ATOMIC_SUB_RTN_32', 'TC_OP_ATOMIC_SUB_RTN_64', - 'TC_OP_ATOMIC_SWAP_32', 'TC_OP_ATOMIC_SWAP_64', - 'TC_OP_ATOMIC_SWAP_RTN_32', 'TC_OP_ATOMIC_SWAP_RTN_64', - 'TC_OP_ATOMIC_UMAX_32', 'TC_OP_ATOMIC_UMAX_64', - 'TC_OP_ATOMIC_UMAX_RTN_32', 'TC_OP_ATOMIC_UMAX_RTN_64', - 'TC_OP_ATOMIC_UMIN_32', 'TC_OP_ATOMIC_UMIN_64', - 'TC_OP_ATOMIC_UMIN_RTN_32', 'TC_OP_ATOMIC_UMIN_RTN_64', - 'TC_OP_ATOMIC_XOR_32', 'TC_OP_ATOMIC_XOR_64', - 'TC_OP_ATOMIC_XOR_RTN_32', 'TC_OP_ATOMIC_XOR_RTN_64', - 'TC_OP_INVL2_NC', 'TC_OP_INV_METADATA', 'TC_OP_MASKS', - 'TC_OP_MASK_64', 'TC_OP_MASK_FLUSH_DENROM', 'TC_OP_MASK_NO_RTN', - 'TC_OP_NOP_ACK', 'TC_OP_NOP_RTN0', 'TC_OP_PROBE_FILTER', - 'TC_OP_READ', 'TC_OP_RESERVED_FADD_32', - 'TC_OP_RESERVED_FADD_RTN_32', 'TC_OP_RESERVED_FOP_32_0', - 'TC_OP_RESERVED_FOP_32_2', 'TC_OP_RESERVED_FOP_64_0', - 'TC_OP_RESERVED_FOP_64_1', 'TC_OP_RESERVED_FOP_64_2', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_32_2', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_0', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_1', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_2', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_0', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_1', - 'TC_OP_RESERVED_FOP_RTN_32_0', 'TC_OP_RESERVED_FOP_RTN_32_2', - 'TC_OP_RESERVED_FOP_RTN_64_0', 'TC_OP_RESERVED_FOP_RTN_64_1', - 'TC_OP_RESERVED_FOP_RTN_64_2', 'TC_OP_RESERVED_NON_FLOAT_32_1', - 'TC_OP_RESERVED_NON_FLOAT_32_2', 'TC_OP_RESERVED_NON_FLOAT_32_3', - 'TC_OP_RESERVED_NON_FLOAT_32_4', 'TC_OP_RESERVED_NON_FLOAT_64_1', - 'TC_OP_RESERVED_NON_FLOAT_64_2', 'TC_OP_RESERVED_NON_FLOAT_64_3', - 'TC_OP_RESERVED_NON_FLOAT_64_4', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_0', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_1', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_2', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_3', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_1', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_2', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_3', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_4', 'TC_OP_WBINVL1', - 'TC_OP_WBINVL1_SD', 'TC_OP_WBINVL1_VOL', 'TC_OP_WBINVL2', - 'TC_OP_WBINVL2_NC', 'TC_OP_WBINVL2_SD', 'TC_OP_WBL2_NC', - 'TC_OP_WBL2_WC', 'TC_OP_WRITE', 'TD_PERFCOUNT_SEL', - 'TD_PERF_SEL_2x_sampler_op_with_1_unlit_quad', - 'TD_PERF_SEL_2x_sampler_op_with_both_quads_unlit', - 'TD_PERF_SEL_all_pipes_sclk_on_at_same_time', - 'TD_PERF_SEL_blend_prt_with_prt_default_0', - 'TD_PERF_SEL_box_non_opaque_culled', - 'TD_PERF_SEL_box_opaque_culled', - 'TD_PERF_SEL_box_with_procedural_children_only_culled', - 'TD_PERF_SEL_box_with_triangle_children_only_culled', - 'TD_PERF_SEL_bubble_bin_lds_stall_1to3', - 'TD_PERF_SEL_bubble_bin_lds_stall_4to7', - 'TD_PERF_SEL_bubble_bin_lds_stall_8to15', - 'TD_PERF_SEL_bubble_bin_lds_stall_gt15', - 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_0', - 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_1', - 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_128to511', - 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_2to31', - 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_32to127', - 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_gt511', - 'TD_PERF_SEL_burst_bin_gather_1', - 'TD_PERF_SEL_burst_bin_gather_2to8', - 'TD_PERF_SEL_burst_bin_gather_9to16', - 'TD_PERF_SEL_burst_bin_gather_gt16', - 'TD_PERF_SEL_burst_bin_nofilter_1', - 'TD_PERF_SEL_burst_bin_nofilter_2to4', - 'TD_PERF_SEL_burst_bin_nofilter_5to7', - 'TD_PERF_SEL_burst_bin_nofilter_8to16', - 'TD_PERF_SEL_burst_bin_nofilter_gt16', - 'TD_PERF_SEL_burst_bin_preempting_nofilter_1', - 'TD_PERF_SEL_burst_bin_preempting_nofilter_2to4', - 'TD_PERF_SEL_burst_bin_preempting_nofilter_5to7', - 'TD_PERF_SEL_burst_bin_preempting_nofilter_8to16', - 'TD_PERF_SEL_burst_bin_preempting_nofilter_gt16', - 'TD_PERF_SEL_burst_bin_sampler_1', - 'TD_PERF_SEL_burst_bin_sampler_2to8', - 'TD_PERF_SEL_burst_bin_sampler_9to16', - 'TD_PERF_SEL_burst_bin_sampler_gt16', - 'TD_PERF_SEL_bypassLerp_instr', - 'TD_PERF_SEL_core_state_ram_max_cnt', - 'TD_PERF_SEL_core_state_rams_read', 'TD_PERF_SEL_d16_en_instr', - 'TD_PERF_SEL_done_scoreboard_bp_due_to_lds', - 'TD_PERF_SEL_done_scoreboard_bp_due_to_ooo', - 'TD_PERF_SEL_done_scoreboard_is_full', - 'TD_PERF_SEL_done_scoreboard_max_stored_cnt', - 'TD_PERF_SEL_done_scoreboard_max_waiting_cnt', - 'TD_PERF_SEL_done_scoreboard_not_empty', - 'TD_PERF_SEL_four_comp_return_instr', - 'TD_PERF_SEL_gather4_2x_instr', 'TD_PERF_SEL_gather4_instr', - 'TD_PERF_SEL_gather4h_2x_instr', 'TD_PERF_SEL_gather4h_instr', - 'TD_PERF_SEL_getlod_2x_instr', 'TD_PERF_SEL_getlod_instr', - 'TD_PERF_SEL_input_bp_due_to_done_scoreboard_full', - 'TD_PERF_SEL_input_busy', 'TD_PERF_SEL_input_state_fifo_full', - 'TD_PERF_SEL_instance_mask_culled', - 'TD_PERF_SEL_instruction_dest_is_lds', 'TD_PERF_SEL_lds_stall', - 'TD_PERF_SEL_load_instr', 'TD_PERF_SEL_lod_warn_from_ta', - 'TD_PERF_SEL_min_max_filter_instr', 'TD_PERF_SEL_mixmode_instr', - 'TD_PERF_SEL_mixmode_resource', 'TD_PERF_SEL_msaa_load_instr', - 'TD_PERF_SEL_nofilter_busy', - 'TD_PERF_SEL_nofilter_byte_cycling_16cycles', - 'TD_PERF_SEL_nofilter_byte_cycling_4cycles', - 'TD_PERF_SEL_nofilter_byte_cycling_8cycles', - 'TD_PERF_SEL_nofilter_d16_sclk_en', - 'TD_PERF_SEL_nofilter_d32_sclk_en', - 'TD_PERF_SEL_nofilter_dword_cycling_2cycles', - 'TD_PERF_SEL_nofilter_dword_cycling_4cycles', - 'TD_PERF_SEL_nofilter_formatters_turned_on', - 'TD_PERF_SEL_nofilter_insert_extra_comps', - 'TD_PERF_SEL_nofilter_pkr_full', - 'TD_PERF_SEL_nofilter_pkr_full_due_to_arb', - 'TD_PERF_SEL_nofilter_popcount_dmask_gt_num_comp_of_fmt', - 'TD_PERF_SEL_nofilter_popcount_dmask_lt_num_comp_of_fmt', - 'TD_PERF_SEL_nofilter_sclk_en', - 'TD_PERF_SEL_nofilter_sclk_on_sampler_sclk_off', - 'TD_PERF_SEL_nofilter_total_num_comps_to_lds', 'TD_PERF_SEL_none', - 'TD_PERF_SEL_one_comp_return_instr', - 'TD_PERF_SEL_opaque_black_border', - 'TD_PERF_SEL_out_of_order_instr', - 'TD_PERF_SEL_preempting_nofilter_max_cnt', - 'TD_PERF_SEL_prt_ack_instr', 'TD_PERF_SEL_ps_load_instr', - 'TD_PERF_SEL_reference_data_rams_read', - 'TD_PERF_SEL_resmap_2x_instr', 'TD_PERF_SEL_resmap_instr', - 'TD_PERF_SEL_resmap_with_aniso_filtering', - 'TD_PERF_SEL_resmap_with_cubemap_corner', - 'TD_PERF_SEL_resmap_with_no_more_filtering', - 'TD_PERF_SEL_resmap_with_volume_filtering', - 'TD_PERF_SEL_sample_2x_instr', 'TD_PERF_SEL_sample_c_instr', - 'TD_PERF_SEL_sample_instr', 'TD_PERF_SEL_sampler_accum_sclk_en', - 'TD_PERF_SEL_sampler_bilerp_sclk_en', - 'TD_PERF_SEL_sampler_bypass_sclk_en', - 'TD_PERF_SEL_sampler_core_sclk_en', - 'TD_PERF_SEL_sampler_format_flt_sclk_en', - 'TD_PERF_SEL_sampler_format_fxdpt_sclk_en', - 'TD_PERF_SEL_sampler_lerp0_active', - 'TD_PERF_SEL_sampler_lerp1_active', - 'TD_PERF_SEL_sampler_lerp2_active', - 'TD_PERF_SEL_sampler_lerp3_active', - 'TD_PERF_SEL_sampler_lerp4_active', - 'TD_PERF_SEL_sampler_lerp5_active', - 'TD_PERF_SEL_sampler_lerp6_active', - 'TD_PERF_SEL_sampler_lerp7_active', - 'TD_PERF_SEL_sampler_lerp_busy', - 'TD_PERF_SEL_sampler_minmax_sclk_en', - 'TD_PERF_SEL_sampler_out_busy', 'TD_PERF_SEL_sampler_out_sclk_en', - 'TD_PERF_SEL_sampler_pkr_full', - 'TD_PERF_SEL_sampler_pkr_full_due_to_arb', - 'TD_PERF_SEL_sampler_preformatter_sclk_en', - 'TD_PERF_SEL_sampler_sclk_on_nofilter_sclk_off', - 'TD_PERF_SEL_status_packet', 'TD_PERF_SEL_store_preempts_a_load', - 'TD_PERF_SEL_ta_data_stall', - 'TD_PERF_SEL_tc_cycling_of_nofilter_instr_2cycles', - 'TD_PERF_SEL_tc_cycling_of_nofilter_instr_4cycles', - 'TD_PERF_SEL_tc_data_stall', 'TD_PERF_SEL_tc_ram_stall', - 'TD_PERF_SEL_tc_td_data_fifo_full', - 'TD_PERF_SEL_tc_td_ram_fifo_full', - 'TD_PERF_SEL_tc_td_ram_fifo_max_cnt', 'TD_PERF_SEL_td_busy', - 'TD_PERF_SEL_td_cycling_of_nofilter_instr_2cycles', - 'TD_PERF_SEL_td_cycling_of_nofilter_instr_4cycles', - 'TD_PERF_SEL_three_comp_return_instr', - 'TD_PERF_SEL_total_num_instr', - 'TD_PERF_SEL_total_num_instr_with_perf_wdw', - 'TD_PERF_SEL_total_num_nofilter_instr', - 'TD_PERF_SEL_total_num_nofilter_instr_with_perf_wdw', - 'TD_PERF_SEL_total_num_sampler_instr', - 'TD_PERF_SEL_total_num_sampler_instr_with_perf_wdw', - 'TD_PERF_SEL_tri_proc_node_override_slot0', - 'TD_PERF_SEL_tri_proc_node_override_slot1', - 'TD_PERF_SEL_tri_run_ahs_slot0', 'TD_PERF_SEL_tri_run_ahs_slot1', - 'TD_PERF_SEL_tri_run_intersect_ahs_slot0', - 'TD_PERF_SEL_tri_run_intersect_ahs_slot1', - 'TD_PERF_SEL_triangle_back_facing_culled', - 'TD_PERF_SEL_triangle_front_facing_culled', - 'TD_PERF_SEL_triangle_non_opaque_culled', - 'TD_PERF_SEL_triangle_opaque_culled', - 'TD_PERF_SEL_two_comp_return_instr', - 'TD_PERF_SEL_user_defined_border', - 'TD_PERF_SEL_weight_data_rams_read', 'TD_PERF_SEL_white_border', - 'TD_PERF_SEL_write_ack_instr', 'TESS_ISOLINE', 'TESS_QUAD', - 'TESS_TRIANGLE', 'TEST_CLK_DIV_SEL', 'TEST_CLK_SEL', - 'TEST_CLK_SEL_0', 'TEST_CLK_SEL_1', 'TEST_CLK_SEL_2', - 'TEST_CLK_SEL_3', 'TEST_CLK_SEL_4', 'TEST_CLK_SEL_5', - 'TEST_CLK_SEL_6', 'TEST_CLK_SEL_7', - 'TEST_CLOCK_MUX_SELECT_DISPCLK_G', - 'TEST_CLOCK_MUX_SELECT_DISPCLK_P', - 'TEST_CLOCK_MUX_SELECT_DISPCLK_R', - 'TEST_CLOCK_MUX_SELECT_DSCCLK_D', - 'TEST_CLOCK_MUX_SELECT_DSCCLK_G', - 'TEST_CLOCK_MUX_SELECT_DSCCLK_P', - 'TEST_CLOCK_MUX_SELECT_DSCCLK_R', 'TEST_CLOCK_MUX_SELECT_ENUM', - 'TEX_BC_SWIZZLE', 'TEX_BC_Swizzle_WXYZ', 'TEX_BC_Swizzle_WZYX', - 'TEX_BC_Swizzle_XWYZ', 'TEX_BC_Swizzle_XYZW', - 'TEX_BC_Swizzle_YXWZ', 'TEX_BC_Swizzle_ZYXW', - 'TEX_BORDER_COLOR_TYPE', 'TEX_BorderColor_OpaqueBlack', - 'TEX_BorderColor_OpaqueWhite', 'TEX_BorderColor_Register', - 'TEX_BorderColor_TransparentBlack', 'TEX_CHROMA_KEY', 'TEX_CLAMP', - 'TEX_COORD_TYPE', 'TEX_ChromaKey_Blend', 'TEX_ChromaKey_Disabled', - 'TEX_ChromaKey_Kill', 'TEX_ChromaKey_RESERVED_3', - 'TEX_Clamp_ClampHalfToBorder', 'TEX_Clamp_ClampToBorder', - 'TEX_Clamp_ClampToLast', 'TEX_Clamp_Mirror', - 'TEX_Clamp_MirrorOnceHalfToBorder', - 'TEX_Clamp_MirrorOnceToBorder', 'TEX_Clamp_MirrorOnceToLast', - 'TEX_Clamp_Repeat', 'TEX_CoordType_Normalized', - 'TEX_CoordType_Unnormalized', 'TEX_DEPTH_COMPARE_FUNCTION', - 'TEX_DepthCompareFunction_Always', - 'TEX_DepthCompareFunction_Equal', - 'TEX_DepthCompareFunction_Greater', - 'TEX_DepthCompareFunction_GreaterEqual', - 'TEX_DepthCompareFunction_Less', - 'TEX_DepthCompareFunction_LessEqual', - 'TEX_DepthCompareFunction_Never', - 'TEX_DepthCompareFunction_NotEqual', 'TEX_FORMAT_COMP', - 'TEX_FormatComp_RESERVED_3', 'TEX_FormatComp_Signed', - 'TEX_FormatComp_Unsigned', 'TEX_FormatComp_UnsignedBiased', - 'TEX_MAX_ANISO_RATIO', 'TEX_MIP_FILTER', - 'TEX_MaxAnisoRatio_16to1', 'TEX_MaxAnisoRatio_1to1', - 'TEX_MaxAnisoRatio_2to1', 'TEX_MaxAnisoRatio_4to1', - 'TEX_MaxAnisoRatio_8to1', 'TEX_MaxAnisoRatio_RESERVED_5', - 'TEX_MaxAnisoRatio_RESERVED_6', 'TEX_MaxAnisoRatio_RESERVED_7', - 'TEX_MipFilter_Linear', 'TEX_MipFilter_None', - 'TEX_MipFilter_Point', 'TEX_MipFilter_Point_Aniso_Adj', - 'TEX_REQUEST_SIZE', 'TEX_RequestSize_128B', - 'TEX_RequestSize_2X64B', 'TEX_RequestSize_32B', - 'TEX_RequestSize_64B', 'TEX_SAMPLER_TYPE', - 'TEX_SamplerType_Invalid', 'TEX_SamplerType_Valid', - 'TEX_XYFilter_AnisoLinear', 'TEX_XYFilter_AnisoPoint', - 'TEX_XYFilter_Linear', 'TEX_XYFilter_Point', 'TEX_XY_FILTER', - 'TEX_ZFilter_Linear', 'TEX_ZFilter_None', 'TEX_ZFilter_Point', - 'TEX_ZFilter_RESERVED_3', 'TEX_Z_FILTER', 'TGID_ROLLOVER', - 'THREAD_TRACE_DRAW', 'THREAD_TRACE_FINISH', 'THREAD_TRACE_MARKER', - 'THREAD_TRACE_START', 'THREAD_TRACE_STOP', 'TMDS_COLOR_FORMAT', - 'TMDS_COLOR_FORMAT_DUAL30BPP', 'TMDS_COLOR_FORMAT_RESERVED', - 'TMDS_COLOR_FORMAT_TWIN30BPP_LSB', - 'TMDS_COLOR_FORMAT__24BPP__TWIN30BPP_MSB__DUAL48BPP', - 'TMDS_CTL0_DATA_INVERT', 'TMDS_CTL0_DATA_INVERT_EN', - 'TMDS_CTL0_DATA_MODULATION', 'TMDS_CTL0_DATA_MODULATION_BIT0', - 'TMDS_CTL0_DATA_MODULATION_BIT1', - 'TMDS_CTL0_DATA_MODULATION_BIT2', - 'TMDS_CTL0_DATA_MODULATION_DISABLE', 'TMDS_CTL0_DATA_NORMAL', - 'TMDS_CTL0_DATA_SEL', 'TMDS_CTL0_DATA_SEL0_RESERVED', - 'TMDS_CTL0_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL0_DATA_SEL2_VSYNC', - 'TMDS_CTL0_DATA_SEL3_RESERVED', 'TMDS_CTL0_DATA_SEL4_HSYNC', - 'TMDS_CTL0_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL0_DATA_SEL8_RANDOM_DATA', - 'TMDS_CTL0_DATA_SEL9_SEL15_RANDOM_DATA', - 'TMDS_CTL0_PATTERN_OUT_DISABLE', 'TMDS_CTL0_PATTERN_OUT_EN', - 'TMDS_CTL0_PATTERN_OUT_ENABLE', 'TMDS_CTL1_DATA_INVERT', - 'TMDS_CTL1_DATA_INVERT_EN', 'TMDS_CTL1_DATA_MODULATION', - 'TMDS_CTL1_DATA_MODULATION_BIT0', - 'TMDS_CTL1_DATA_MODULATION_BIT1', - 'TMDS_CTL1_DATA_MODULATION_BIT2', - 'TMDS_CTL1_DATA_MODULATION_DISABLE', 'TMDS_CTL1_DATA_NORMAL', - 'TMDS_CTL1_DATA_SEL', 'TMDS_CTL1_DATA_SEL0_RESERVED', - 'TMDS_CTL1_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL1_DATA_SEL2_VSYNC', - 'TMDS_CTL1_DATA_SEL3_RESERVED', 'TMDS_CTL1_DATA_SEL4_HSYNC', - 'TMDS_CTL1_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL1_DATA_SEL8_BLANK_TIME', - 'TMDS_CTL1_DATA_SEL9_SEL15_RESERVED', - 'TMDS_CTL1_PATTERN_OUT_DISABLE', 'TMDS_CTL1_PATTERN_OUT_EN', - 'TMDS_CTL1_PATTERN_OUT_ENABLE', 'TMDS_CTL2_DATA_INVERT', - 'TMDS_CTL2_DATA_INVERT_EN', 'TMDS_CTL2_DATA_MODULATION', - 'TMDS_CTL2_DATA_MODULATION_BIT0', - 'TMDS_CTL2_DATA_MODULATION_BIT1', - 'TMDS_CTL2_DATA_MODULATION_BIT2', - 'TMDS_CTL2_DATA_MODULATION_DISABLE', 'TMDS_CTL2_DATA_NORMAL', - 'TMDS_CTL2_DATA_SEL', 'TMDS_CTL2_DATA_SEL0_RESERVED', - 'TMDS_CTL2_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL2_DATA_SEL2_VSYNC', - 'TMDS_CTL2_DATA_SEL3_RESERVED', 'TMDS_CTL2_DATA_SEL4_HSYNC', - 'TMDS_CTL2_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL2_DATA_SEL8_BLANK_TIME', - 'TMDS_CTL2_DATA_SEL9_SEL15_RESERVED', - 'TMDS_CTL2_PATTERN_OUT_DISABLE', 'TMDS_CTL2_PATTERN_OUT_EN', - 'TMDS_CTL2_PATTERN_OUT_ENABLE', 'TMDS_CTL3_DATA_INVERT', - 'TMDS_CTL3_DATA_INVERT_EN', 'TMDS_CTL3_DATA_MODULATION', - 'TMDS_CTL3_DATA_MODULATION_BIT0', - 'TMDS_CTL3_DATA_MODULATION_BIT1', - 'TMDS_CTL3_DATA_MODULATION_BIT2', - 'TMDS_CTL3_DATA_MODULATION_DISABLE', 'TMDS_CTL3_DATA_NORMAL', - 'TMDS_CTL3_DATA_SEL', 'TMDS_CTL3_DATA_SEL0_RESERVED', - 'TMDS_CTL3_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL3_DATA_SEL2_VSYNC', - 'TMDS_CTL3_DATA_SEL3_RESERVED', 'TMDS_CTL3_DATA_SEL4_HSYNC', - 'TMDS_CTL3_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL3_DATA_SEL8_BLANK_TIME', - 'TMDS_CTL3_DATA_SEL9_SEL15_RESERVED', - 'TMDS_CTL3_PATTERN_OUT_DISABLE', 'TMDS_CTL3_PATTERN_OUT_EN', - 'TMDS_CTL3_PATTERN_OUT_ENABLE', - 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL', - 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_PCLK_TMDS', - 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_TMDS_PLL', 'TMDS_DVI_MODE', - 'TMDS_HDMI_MODE', 'TMDS_MUX_SELECT', 'TMDS_MUX_SELECT_B', - 'TMDS_MUX_SELECT_G', 'TMDS_MUX_SELECT_R', - 'TMDS_MUX_SELECT_RESERVED', 'TMDS_NOT_SYNC_PHASE_ON_FRAME_START', - 'TMDS_PIXEL_ENCODING', 'TMDS_PIXEL_ENCODING_422', - 'TMDS_PIXEL_ENCODING_444_OR_420', 'TMDS_REG_TEST_OUTPUTA_CNTLA', - 'TMDS_REG_TEST_OUTPUTA_CNTLA_NA', - 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA0', - 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA1', - 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA2', - 'TMDS_REG_TEST_OUTPUTB_CNTLB', 'TMDS_REG_TEST_OUTPUTB_CNTLB_NA', - 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB0', - 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB1', - 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB2', 'TMDS_STEREOSYNC_CTL0', - 'TMDS_STEREOSYNC_CTL1', 'TMDS_STEREOSYNC_CTL2', - 'TMDS_STEREOSYNC_CTL3', 'TMDS_STEREOSYNC_CTL_SEL_REG', - 'TMDS_SYNC_PHASE', 'TMDS_SYNC_PHASE_ON_FRAME_START', - 'TMDS_TRANSMITTER_BYPASS_PLLA_COHERENT', - 'TMDS_TRANSMITTER_BYPASS_PLLA_INCOHERENT', - 'TMDS_TRANSMITTER_BYPASS_PLLB_COHERENT', - 'TMDS_TRANSMITTER_BYPASS_PLLB_INCOHERENT', - 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA', - 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB', - 'TMDS_TRANSMITTER_CONTROL_IDSCKSELA', - 'TMDS_TRANSMITTER_CONTROL_IDSCKSELB', - 'TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN', - 'TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK', - 'TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN', - 'TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK', - 'TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS', - 'TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS', - 'TMDS_TRANSMITTER_ENABLE_HPD_MASK', - 'TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK', - 'TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK', - 'TMDS_TRANSMITTER_HPD_MASK_NOT_OVERRIDE', - 'TMDS_TRANSMITTER_HPD_MASK_OVERRIDE', - 'TMDS_TRANSMITTER_HPD_NOT_OVERRIDE_PLL_ENABLE', - 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE', - 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_CON', - 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_DISCON', - 'TMDS_TRANSMITTER_IDSCKSELA_USE_IDCLK', - 'TMDS_TRANSMITTER_IDSCKSELA_USE_IPIXCLK', - 'TMDS_TRANSMITTER_IDSCKSELB_USE_IDCLK', - 'TMDS_TRANSMITTER_IDSCKSELB_USE_IPIXCLK', - 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_NOT_OVERRIDE', - 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_OVERRIDE', - 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_NOT_OVERRIDE', - 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_OVERRIDE', - 'TMDS_TRANSMITTER_PLLSEL_BY_HW', - 'TMDS_TRANSMITTER_PLLSEL_OVERWRITE_BY_SW', - 'TMDS_TRANSMITTER_PLL_NOT_RST_ON_HPD', - 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_DISABLE', - 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_ENABLE', - 'TMDS_TRANSMITTER_PLL_RST_ON_HPD', - 'TMDS_TRANSMITTER_TDCLK_FROM_PADS', - 'TMDS_TRANSMITTER_TDCLK_FROM_TMDS_TDCLK', - 'TMDS_TRANSMITTER_TMCLK_FROM_PADS', - 'TMDS_TRANSMITTER_TMCLK_FROM_TMDS_TMCLK', 'TRANSERR', - 'TRANSFERRED_1024_BYTES', 'TRANSFERRED_128_BYTES', - 'TRANSFERRED_2048_BYTES', 'TRANSFERRED_256_BYTES', - 'TRANSFERRED_4096_BYTES', 'TRANSFERRED_512_BYTES', - 'TRANSFERRED_64_BYTES', 'TRANSFERRED_8192_BYTES', 'TRAPEZOIDS', - 'TRISTRIP', 'TVX_TYPE', 'TVX_Type_InvalidTextureResource', - 'TVX_Type_InvalidVertexBuffer', 'TVX_Type_ValidTextureResource', - 'TVX_Type_ValidVertexBuffer', 'UCONFIG_SPACE_END', - 'UCONFIG_SPACE_START', 'UNDEF', 'UNSIGNED', 'UTCL0FaultType', - 'UTCL0RequestType', 'UTCL0_TYPE_BYPASS', 'UTCL0_TYPE_NORMAL', - 'UTCL0_TYPE_SHOOTDOWN', 'UTCL0_XNACK_NO_RETRY', 'UTCL0_XNACK_PRT', - 'UTCL0_XNACK_RETRY', 'UTCL0_XNACK_SUCCESS', 'UTCL1FaultType', - 'UTCL1PerfSel', 'UTCL1RequestType', - 'UTCL1_PERF_SEL_ALOG_CACHE_HIT', 'UTCL1_PERF_SEL_ALOG_CACHE_REQ', - 'UTCL1_PERF_SEL_ALOG_INTERRUPT', - 'UTCL1_PERF_SEL_ALOG_INTERRUPT_DROPPED', - 'UTCL1_PERF_SEL_ALOG_STALL_PMM_CREDITS', - 'UTCL1_PERF_SEL_AVG_INV_LATENCY', 'UTCL1_PERF_SEL_BYPASS_REQS', - 'UTCL1_PERF_SEL_CP_INVREQS', 'UTCL1_PERF_SEL_EVICTIONS_NUM_CC0', - 'UTCL1_PERF_SEL_EVICTIONS_NUM_CC1', - 'UTCL1_PERF_SEL_EVICTIONS_NUM_CC2', - 'UTCL1_PERF_SEL_EVICTIONS_NUM_CC3', 'UTCL1_PERF_SEL_HITS', - 'UTCL1_PERF_SEL_HITS_PG_SIZE_1', 'UTCL1_PERF_SEL_HITS_PG_SIZE_2', - 'UTCL1_PERF_SEL_HITS_PG_SIZE_3', 'UTCL1_PERF_SEL_HITS_PG_SIZE_4', - 'UTCL1_PERF_SEL_HIT_INV_FILTER_REQS', - 'UTCL1_PERF_SEL_INV_ALL_VMID_INVREQS', - 'UTCL1_PERF_SEL_MH_DUPLICATE_DETECT', - 'UTCL1_PERF_SEL_MH_RECENT_BUF_HIT', 'UTCL1_PERF_SEL_MISSES', - 'UTCL1_PERF_SEL_NONE', - 'UTCL1_PERF_SEL_NUM_OF_CYCLES_RQ_EXISTS_TO_CC0', - 'UTCL1_PERF_SEL_NUM_OF_CYCLES_RQ_EXISTS_TO_CC1', - 'UTCL1_PERF_SEL_NUM_OF_CYCLES_RQ_EXISTS_TO_CC2', - 'UTCL1_PERF_SEL_NUM_OF_CYCLES_RQ_EXISTS_TO_CC3', - 'UTCL1_PERF_SEL_NUM_OF_CYCLES_W_COLLISION_CC0', - 'UTCL1_PERF_SEL_NUM_OF_CYCLES_W_COLLISION_CC1', - 'UTCL1_PERF_SEL_NUM_OF_CYCLES_W_COLLISION_CC2', - 'UTCL1_PERF_SEL_NUM_OF_CYCLES_W_COLLISION_CC3', - 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_16M_32M', - 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_1M_2M', - 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_256K_512K', - 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_2M_4M', - 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_32M_INF', - 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_4K_64K', - 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_4M_8M', - 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_512K_1M', - 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_64K_256K', - 'UTCL1_PERF_SEL_NUM_UTCL2_RTN_SIZE_8M_16M', - 'UTCL1_PERF_SEL_RANGE_INVREQS', 'UTCL1_PERF_SEL_REQS', - 'UTCL1_PERF_SEL_REQ_NUM_CACHE_CORE_0', - 'UTCL1_PERF_SEL_REQ_NUM_CACHE_CORE_1', - 'UTCL1_PERF_SEL_REQ_NUM_CACHE_CORE_2', - 'UTCL1_PERF_SEL_REQ_NUM_CACHE_CORE_3', - 'UTCL1_PERF_SEL_REQ_TO_MISS_HNDLR_0', - 'UTCL1_PERF_SEL_REQ_TO_MISS_HNDLR_1', - 'UTCL1_PERF_SEL_REQ_TO_MISS_HNDLR_2', - 'UTCL1_PERF_SEL_REQ_TO_MISS_HNDLR_3', 'UTCL1_PERF_SEL_RTNS', - 'UTCL1_PERF_SEL_STALL_CYCLES_CACHE_CORE_0', - 'UTCL1_PERF_SEL_STALL_CYCLES_CACHE_CORE_1', - 'UTCL1_PERF_SEL_STALL_CYCLES_CACHE_CORE_2', - 'UTCL1_PERF_SEL_STALL_CYCLES_CACHE_CORE_3', - 'UTCL1_PERF_SEL_STALL_MH_FULL', - 'UTCL1_PERF_SEL_STALL_UTCL2_CREDITS', - 'UTCL1_PERF_SEL_UTCL0_UTCL1_INVACKS', - 'UTCL1_PERF_SEL_UTCL1_UTCL2_INVACKS', 'UTCL1_PERF_SEL_UTCL2_REQS', - 'UTCL1_PERF_SEL_UTCL2_REQS_OUTSTANDING_ACCUM', - 'UTCL1_PERF_SEL_UTCL2_REQ_SQUASHED_NUM', - 'UTCL1_PERF_SEL_UTCL2_RET_CNT', 'UTCL1_PERF_SEL_UTCL2_RET_FAULT', - 'UTCL1_PERF_SEL_UTCL2_RET_PERM_FAULT', - 'UTCL1_PERF_SEL_UTCL2_RET_PRT_FAULT', - 'UTCL1_PERF_SEL_UTCL2_RET_XNACK_RETRY', - 'UTCL1_PERF_SEL_UTCL2_UTCL1_INVREQS', - 'UTCL1_PERF_SEL_XLAT_REQ_BUSY', 'UTCL1_TYPE_BYPASS', - 'UTCL1_TYPE_NORMAL', 'UTCL1_TYPE_SHOOTDOWN', - 'UTCL1_XNACK_NO_RETRY', 'UTCL1_XNACK_PRT', 'UTCL1_XNACK_RETRY', - 'UTCL1_XNACK_SUCCESS', 'VGT_DETECT_ONE', 'VGT_DETECT_ZERO', - 'VGT_DIST_MODE', 'VGT_DI_INDEX_SIZE', 'VGT_DI_PRIM_TYPE', - 'VGT_DI_SOURCE_SELECT', 'VGT_DMA_BUF_MEM', 'VGT_DMA_BUF_RING', - 'VGT_DMA_BUF_SETUP', 'VGT_DMA_BUF_TYPE', 'VGT_DMA_PTR_UPDATE', - 'VGT_DMA_SWAP_16_BIT', 'VGT_DMA_SWAP_32_BIT', 'VGT_DMA_SWAP_MODE', - 'VGT_DMA_SWAP_NONE', 'VGT_DMA_SWAP_WORD', 'VGT_EVENT_TYPE', - 'VGT_FLUSH', 'VGT_GROUP_CONV_SEL', 'VGT_GRP_AUTO_PRIM', - 'VGT_GRP_FIX_1_23_TO_FLOAT', 'VGT_GRP_FLOAT_32', - 'VGT_GRP_INDEX_16', 'VGT_GRP_INDEX_32', 'VGT_GRP_SINT_16', - 'VGT_GRP_SINT_32', 'VGT_GRP_UINT_16', 'VGT_GRP_UINT_32', - 'VGT_GS_MODE_TYPE', 'VGT_GS_OUTPRIM_TYPE', 'VGT_INDEX_16', - 'VGT_INDEX_32', 'VGT_INDEX_8', 'VGT_INDEX_TYPE_MODE', - 'VGT_OUTPATH_GS_BLOCK', 'VGT_OUTPATH_HS_BLOCK', - 'VGT_OUTPATH_PRIM_GEN', 'VGT_OUTPATH_SELECT', - 'VGT_OUTPATH_TE_GS_BLOCK', 'VGT_OUTPATH_TE_OUTPUT', - 'VGT_OUTPATH_TE_PRIM_GEN', 'VGT_OUTPATH_VTX_REUSE', - 'VGT_OUT_2D_RECT', 'VGT_OUT_DUMMY_1', 'VGT_OUT_DUMMY_2', - 'VGT_OUT_DUMMY_3', 'VGT_OUT_LINE', 'VGT_OUT_LINE_ADJ', - 'VGT_OUT_PATCH', 'VGT_OUT_POINT', 'VGT_OUT_PRIM_TYPE', - 'VGT_OUT_RECT_V0', 'VGT_OUT_TRI', 'VGT_OUT_TRI_ADJ', - 'VGT_POLICY_BYPASS', 'VGT_POLICY_LRU', 'VGT_POLICY_STREAM', - 'VGT_RDREQ_POLICY', 'VGT_SPEC_DATA_READ', - 'VGT_SPEC_DATA_READ_AUTO', 'VGT_SPEC_DATA_READ_FORCE_OFF', - 'VGT_SPEC_DATA_READ_FORCE_ON', 'VGT_STAGES_GS_EN', - 'VGT_STAGES_HS_EN', 'VGT_STREAMOUT_RESET', 'VGT_STREAMOUT_SYNC', - 'VGT_TEMPORAL', 'VGT_TEMPORAL_DISCARD', - 'VGT_TEMPORAL_HIGH_PRIORITY', 'VGT_TEMPORAL_NORMAL', - 'VGT_TEMPORAL_STREAM', 'VGT_TESS_PARTITION', 'VGT_TESS_TOPOLOGY', - 'VGT_TESS_TYPE', 'VID_ENHANCED_MODE', 'VID_NORMAL_FRAME_MODE', - 'VID_STREAM_DISABLE_MASKED', 'VID_STREAM_DISABLE_UNMASK', - 'VMID_SZ', 'VMPG_SIZE', 'VMPG_SIZE_4KB', 'VMPG_SIZE_64KB', - 'VM_GROUP_SIZE', 'VM_GROUP_SIZE_1024B', 'VM_GROUP_SIZE_128B', - 'VM_GROUP_SIZE_2048B', 'VM_GROUP_SIZE_256B', 'VM_GROUP_SIZE_512B', - 'VM_GROUP_SIZE_64B', 'VM_PG_SIZE_128KB', 'VM_PG_SIZE_128MB', - 'VM_PG_SIZE_16KB', 'VM_PG_SIZE_16MB', 'VM_PG_SIZE_1MB', - 'VM_PG_SIZE_256KB', 'VM_PG_SIZE_2MB', 'VM_PG_SIZE_32KB', - 'VM_PG_SIZE_32MB', 'VM_PG_SIZE_4KB', 'VM_PG_SIZE_4MB', - 'VM_PG_SIZE_512KB', 'VM_PG_SIZE_64KB', 'VM_PG_SIZE_64MB', - 'VM_PG_SIZE_8KB', 'VM_PG_SIZE_8MB', - 'VPG_MEM_DISABLE_MEM_PWR_CTRL', 'VPG_MEM_ENABLE_MEM_PWR_CTRL', - 'VPG_MEM_FORCE_LIGHT_SLEEP_REQ', 'VPG_MEM_NO_FORCE_REQ', - 'VPG_MEM_PWR_DIS_CTRL', 'VPG_MEM_PWR_FORCE_CTRL', - 'VREADY_AT_OR_AFTER_VSYNC', 'VREADY_BEFORE_VSYNC', - 'VRSCombinerModeSC', 'VRS_SHADING_RATE_16X_SSAA', - 'VRS_SHADING_RATE_1X1', 'VRS_SHADING_RATE_1X2', - 'VRS_SHADING_RATE_2X1', 'VRS_SHADING_RATE_2X2', - 'VRS_SHADING_RATE_2X4', 'VRS_SHADING_RATE_2X_SSAA', - 'VRS_SHADING_RATE_4X2', 'VRS_SHADING_RATE_4X4', - 'VRS_SHADING_RATE_4X_SSAA', 'VRS_SHADING_RATE_8X_SSAA', - 'VRS_SHADING_RATE_UNDEFINED0', 'VRS_SHADING_RATE_UNDEFINED1', - 'VRS_SHADING_RATE_UNDEFINED2', 'VRS_SHADING_RATE_UNDEFINED3', - 'VRS_SHADING_RATE_UNDEFINED4', 'VRSrate', 'VSYNC_CNT_LATCH_MASK', - 'VSYNC_CNT_LATCH_MASK_0', 'VSYNC_CNT_LATCH_MASK_1', - 'VSYNC_CNT_RESET_SEL', 'VSYNC_CNT_RESET_SEL_0', - 'VSYNC_CNT_RESET_SEL_1', 'VS_PARTIAL_FLUSH', 'VTG_SEL_0', - 'VTG_SEL_1', 'VTG_SEL_2', 'VTG_SEL_3', 'VTG_SEL_4', 'VTG_SEL_5', - 'WAIT_SYNC', 'WATERMARK_MODE', 'WD_IA_DRAW_REG_XFER', - 'WD_IA_DRAW_REG_XFER_FL_MS_EXP_ALLOC', - 'WD_IA_DRAW_REG_XFER_FL_MS_TG_SIZE', - 'WD_IA_DRAW_REG_XFER_FL_MS_WG_DIM', - 'WD_IA_DRAW_REG_XFER_FL_MS_WG_DIM_1', - 'WD_IA_DRAW_REG_XFER_GE_CNTL', - 'WD_IA_DRAW_REG_XFER_GE_GS_THROTTLE', - 'WD_IA_DRAW_REG_XFER_GE_PC_ALLOC', - 'WD_IA_DRAW_REG_XFER_GE_STEREO_CNTL', - 'WD_IA_DRAW_REG_XFER_GE_USER_VGPR1', - 'WD_IA_DRAW_REG_XFER_GE_USER_VGPR2', - 'WD_IA_DRAW_REG_XFER_GE_USER_VGPR3', - 'WD_IA_DRAW_REG_XFER_GE_USER_VGPR_EN', - 'WD_IA_DRAW_REG_XFER_GE_VRS_RATE', - 'WD_IA_DRAW_REG_XFER_GFX_PIPE_CONTROL', - 'WD_IA_DRAW_REG_XFER_SPI_SHADER_GS_OUT_CONFIG_PS', - 'WD_IA_DRAW_REG_XFER_VGT_DRAW_PAYLOAD_CNTL', - 'WD_IA_DRAW_REG_XFER_VGT_GS_OUT_PRIM_TYPE', - 'WD_IA_DRAW_REG_XFER_VGT_INSTANCE_BASE_ID', - 'WD_IA_DRAW_REG_XFER_VGT_MULTI_PRIM_IB_RESET_EN', - 'WD_IA_DRAW_REG_XFER_VGT_PRIMITIVEID_EN', - 'WD_IA_DRAW_REG_XFER_VGT_PRIMITIVEID_RESET', - 'WD_IA_DRAW_REG_XFER_VGT_PRIMITIVE_TYPE', 'WD_IA_DRAW_SOURCE', - 'WD_IA_DRAW_SOURCE_AUTO', 'WD_IA_DRAW_SOURCE_DMA', - 'WD_IA_DRAW_SOURCE_IMMD', 'WD_IA_DRAW_SOURCE_OPAQ', - 'WD_IA_DRAW_TYPE', 'WD_IA_DRAW_TYPE_DI_MM0', - 'WD_IA_DRAW_TYPE_EVENT_ADDR', 'WD_IA_DRAW_TYPE_EVENT_INIT', - 'WD_IA_DRAW_TYPE_IMM_DATA', 'WD_IA_DRAW_TYPE_INDX_OFF', - 'WD_IA_DRAW_TYPE_MAX_INDX', 'WD_IA_DRAW_TYPE_MIN_INDX', - 'WD_IA_DRAW_TYPE_REG_XFER', 'WRITE_BASE_ONLY', 'WRITE_BOTH', - 'WRITE_COMPRESSION_MODE', 'WritePolicy', 'XNORM', 'XNORM_A', - 'XNORM_B', 'XTAL_REF_CLOCK_SOURCE_SEL', - 'XTAL_REF_CLOCK_SOURCE_SEL_DCCGREFCLK', - 'XTAL_REF_CLOCK_SOURCE_SEL_XTALIN', 'XTAL_REF_SEL', - 'XTAL_REF_SEL_1X', 'XTAL_REF_SEL_2X', 'Y10_CbCr1010_420_PLANAR', - 'Y10_CrCb1010_420_PLANAR', 'Y12_CbCr1212_420_PLANAR', - 'Y12_CrCb1212_420_PLANAR', 'Y8_CbCr88_420_PLANAR', - 'Y8_CrCb88_420_PLANAR', 'YCbYCr10101010_422_PACKED', - 'YCbYCr12121212_422_PACKED', 'YCbYCr8888_422_PACKED', - 'YCrCbA16161616_10LSB', 'YCrCbA16161616_10MSB', - 'YCrCbA16161616_12LSB', 'YCrCbA16161616_12MSB', 'YCrCbA8888', - 'YCrYCb10101010_422_PACKED', 'YCrYCb12121212_422_PACKED', - 'YCrYCb8888_422_PACKED', 'Y_G_DATA_ONTO_ALPHA_PORT', - 'Y_G_DATA_ONTO_CB_B_PORT', 'Y_G_DATA_ONTO_CR_R_PORT', - 'Y_G_DATA_ONTO_Y_G_PORT', 'ZLimitSumm', 'ZModeForce', 'ZOrder', - 'ZSamplePosition', 'Z_SAMPLE_CENTER', 'Z_SAMPLE_CENTROID', - '_soc24_ENUM_HEADER', 'ge1_assembler_busy', - 'ge1_assembler_dma_starved', 'ge1_assembler_stalled', - 'ge1_dma_busy', 'ge1_dma_lat_bin_0', 'ge1_dma_lat_bin_1', - 'ge1_dma_lat_bin_2', 'ge1_dma_lat_bin_3', 'ge1_dma_lat_bin_4', - 'ge1_dma_lat_bin_5', 'ge1_dma_lat_bin_6', 'ge1_dma_lat_bin_7', - 'ge1_dma_return_cl0', 'ge1_dma_return_cl1', - 'ge1_dma_return_size_cl0', 'ge1_dma_return_size_cl1', - 'ge1_dma_utcl1_consecutive_retry_event', - 'ge1_dma_utcl1_request_event', 'ge1_dma_utcl1_retry_event', - 'ge1_dma_utcl1_stall_event', 'ge1_dma_utcl1_stall_utcl2_event', - 'ge1_dma_utcl1_translation_hit_event', - 'ge1_dma_utcl1_translation_miss_event', 'ge1_pipe0_to_pipe1', - 'ge1_pipe1_to_pipe0', 'ge1_prim_group_limit_hit', - 'ge1_rbiu_di_fifo_stalled_p0', 'ge1_rbiu_di_fifo_stalled_p1', - 'ge1_rbiu_di_fifo_starved_p0', 'ge1_rbiu_di_fifo_starved_p1', - 'ge1_rbiu_dr_fifo_stalled_p0', 'ge1_rbiu_dr_fifo_stalled_p1', - 'ge1_rbiu_dr_fifo_starved_p0', 'ge1_rbiu_dr_fifo_starved_p1', - 'ge1_sclk_input_vld', 'ge1_sclk_reg_vld', - 'ge1_small_draws_one_instance', 'ge1_stat_busy', - 'ge1_stat_no_dma_busy', 'ge1_unopt_multi_instance_draws', - 'ge_agm_gcr_combine', 'ge_agm_gcr_crd_stall', - 'ge_agm_gcr_latency', 'ge_agm_gcr_req', 'ge_agm_gcr_req_amount', - 'ge_agm_gcr_req_outstanding', 'ge_agm_gcr_stall', - 'ge_agm_gcr_tag_stall', 'ge_all_tf2', 'ge_all_tf3', 'ge_all_tf4', - 'ge_all_tf5', 'ge_all_tf6', 'ge_all_tf_eq', 'ge_csb_spi_bp', - 'ge_dist_distributer_busy', 'ge_dist_hs_done', - 'ge_dist_hs_done_latency', 'ge_dist_hs_done_latency_se0', - 'ge_dist_hs_done_latency_se1', 'ge_dist_hs_done_latency_se2', - 'ge_dist_hs_done_latency_se3', 'ge_dist_hs_done_latency_se4', - 'ge_dist_hs_done_latency_se5', 'ge_dist_hs_done_latency_se6', - 'ge_dist_hs_done_latency_se7', 'ge_dist_hs_done_se0', - 'ge_dist_hs_done_se1', 'ge_dist_hs_done_se2', - 'ge_dist_hs_done_se3', 'ge_dist_hs_done_se4', - 'ge_dist_hs_done_se5', 'ge_dist_hs_done_se6', - 'ge_dist_hs_done_se7', 'ge_dist_indx_fifos_full_and_empty', - 'ge_dist_inside_tf_bin_0', 'ge_dist_inside_tf_bin_1', - 'ge_dist_inside_tf_bin_2', 'ge_dist_inside_tf_bin_3', - 'ge_dist_inside_tf_bin_4', 'ge_dist_inside_tf_bin_5', - 'ge_dist_inside_tf_bin_6', 'ge_dist_inside_tf_bin_7', - 'ge_dist_inside_tf_bin_8', 'ge_dist_null_patch', - 'ge_dist_op_fifo_full_starve', 'ge_dist_pc_feorder_fifo_full', - 'ge_dist_pc_ge_manager_busy', 'ge_dist_sclk_core_vld', - 'ge_dist_sclk_input_vld', 'ge_dist_sclk_wd_te11_vld', - 'ge_dist_switch_mode_stall', 'ge_dist_te11_starved', - 'ge_dist_tfreq_lat_bin_0', 'ge_dist_tfreq_lat_bin_1', - 'ge_dist_tfreq_lat_bin_2', 'ge_dist_tfreq_lat_bin_3', - 'ge_dist_tfreq_lat_bin_4', 'ge_dist_tfreq_lat_bin_5', - 'ge_dist_tfreq_lat_bin_6', 'ge_dist_tfreq_lat_bin_7', - 'ge_dist_tfreq_utcl1_consecutive_retry_event', - 'ge_dist_tfreq_utcl1_request_event', - 'ge_dist_tfreq_utcl1_retry_event', - 'ge_dist_tfreq_utcl1_stall_event', - 'ge_dist_tfreq_utcl1_stall_utcl2_event', - 'ge_dist_tfreq_utcl1_translation_hit_event', - 'ge_dist_tfreq_utcl1_translation_miss_event', - 'ge_dist_wd_te11_busy', 'ge_distclk_vld', 'ge_esvert_send', - 'ge_gs_issue_rtr_stalled', 'ge_gsprim_send', - 'ge_gsprim_stalled_esvert', 'ge_gsthread_stalled', - 'ge_hs_done_all_tf0_se0', 'ge_hs_done_all_tf0_se1', - 'ge_hs_done_all_tf0_se2', 'ge_hs_done_all_tf0_se3', - 'ge_hs_done_all_tf0_se4', 'ge_hs_done_all_tf0_se5', - 'ge_hs_done_all_tf0_se6', 'ge_hs_done_all_tf0_se7', - 'ge_hs_done_all_tf1_se0', 'ge_hs_done_all_tf1_se1', - 'ge_hs_done_all_tf1_se2', 'ge_hs_done_all_tf1_se3', - 'ge_hs_done_all_tf1_se4', 'ge_hs_done_all_tf1_se5', - 'ge_hs_done_all_tf1_se6', 'ge_hs_done_all_tf1_se7', - 'ge_hs_stall_tfmm_fifo_full', 'ge_hs_tif_stall', - 'ge_merge_gsgrp_rdy_pending_verts', - 'ge_merge_hsgrp_rdy_pending_verts', 'ge_merge_hsgs_fifo_blocked', - 'ge_merge_hsgs_grp_switch', 'ge_merge_hsgs_vert_switch', - 'ge_merge_lses_fifo_blocked', 'ge_merge_lses_vert_switch', - 'ge_merged_hsgs_grp_stalled', 'ge_merged_hsgs_vert_stalled', - 'ge_merged_lses_vert_stalled', 'ge_ngg_agm_req_stall', - 'ge_ngg_attr_discard_alloc', 'ge_ngg_attr_grp_alloc', - 'ge_ngg_attr_grp_latency', 'ge_ngg_attr_grp_wasted', - 'ge_ngg_attr_null_dealloc', 'ge_ngg_busy_base', - 'ge_ngg_indx_bus_stall', 'ge_ngg_ord_id_req_stall', - 'ge_ngg_pc_space_not_avail', 'ge_ngg_reuse_prim_limit_hit', - 'ge_ngg_reuse_vert_limit_hit', 'ge_ngg_spi_esvert_partial_eov', - 'ge_ngg_spi_gsprim_partial_eov', 'ge_ngg_stall_tess_off_tess_on', - 'ge_ngg_stall_tess_on_tess_off', 'ge_ngg_starved_after_work', - 'ge_ngg_starved_idle', 'ge_ngg_starving_for_wave_id', - 'ge_ngg_subgrp_fifo_stall', 'ge_num_of_donut_dist_patches', - 'ge_num_of_hs_dealloc_events', 'ge_num_of_no_dist_patches', - 'ge_num_of_patch_dist_patches', - 'ge_num_of_se_switches_due_to_donut', - 'ge_num_of_se_switches_due_to_patch_accum', - 'ge_num_of_se_switches_due_to_trap', 'ge_pa0_csb_eop', - 'ge_se0_te11_starved_on_hs_done', - 'ge_se1_te11_starved_on_hs_done', - 'ge_se2_te11_starved_on_hs_done', - 'ge_se3_te11_starved_on_hs_done', - 'ge_se4_te11_starved_on_hs_done', - 'ge_se5_te11_starved_on_hs_done', - 'ge_se6_te11_starved_on_hs_done', - 'ge_se7_te11_starved_on_hs_done', 'ge_se_api_ds_verts', - 'ge_se_api_vs_verts', 'ge_se_combined_busy', - 'ge_se_ds_cache_hits', 'ge_se_ds_prims', 'ge_se_es_thread_groups', - 'ge_se_esvert_stalled_gsprim', 'ge_se_hs_input_stall', - 'ge_se_hs_tfm_stall', 'ge_se_hs_tgs_active_high_water_mark', - 'ge_se_hs_thread_groups', 'ge_se_reused_es_indices', - 'ge_se_sclk_input_vld', 'ge_se_sclk_ngg_vld', - 'ge_se_sclk_te11_vld', 'ge_se_sending_vert_or_prim', - 'ge_se_spi_esvert_eov', 'ge_se_spi_esvert_stalled', - 'ge_se_spi_esvert_starved_busy', 'ge_se_spi_esvert_valid', - 'ge_se_spi_gsprim_cont', 'ge_se_spi_gsprim_eov', - 'ge_se_spi_gsprim_stalled', 'ge_se_spi_gsprim_starved_busy', - 'ge_se_spi_gsprim_valid', - 'ge_se_spi_gssubgrp_event_window_active', - 'ge_se_spi_gssubgrp_is_event', 'ge_se_spi_gssubgrp_send', - 'ge_se_spi_hsgrp_is_event', 'ge_se_spi_hsgrp_send', - 'ge_se_spi_hsvert_eov', 'ge_se_spi_hsvert_fifo_full_stall', - 'ge_se_spi_hsvert_stalled', 'ge_se_spi_hsvert_starved_busy', - 'ge_se_spi_hsvert_valid', 'ge_se_spi_lsvert_eov', - 'ge_se_spi_lsvert_stalled', 'ge_se_spi_lsvert_starved_busy', - 'ge_se_spi_lsvert_valid', 'ge_se_spi_tgrp_fifo_stall', - 'ge_spi_gsgrp_valid', 'ge_spi_gssubgrp_stalled', - 'ge_spi_hsgrp_spi_stall', 'ge_spi_hsvert_send', - 'ge_spi_hswave_fifo_full_stall', 'ge_spi_lsvert_send', - 'ge_spi_lswave_fifo_full_stall', 'ge_te11_compactor_starved', - 'ge_te11_con_stall', 'ge_tf_ret_data_stalling_hs_done'] diff --git a/tinygrad_repo/tinygrad/runtime/autogen/am/vega10.py b/tinygrad_repo/tinygrad/runtime/autogen/am/vega10.py deleted file mode 100644 index 510fbe6a0..000000000 --- a/tinygrad_repo/tinygrad/runtime/autogen/am/vega10.py +++ /dev/null @@ -1,36196 +0,0 @@ -# mypy: ignore-errors -# -*- coding: utf-8 -*- -# -# TARGET arch is: [] -# WORD_SIZE is: 8 -# POINTER_SIZE is: 8 -# LONGDOUBLE_SIZE is: 16 -# -import ctypes - - - - -_vega10_ENUM_HEADER = True # macro -ENUMS_GDS_PERFCOUNT_SELECT_H = True # macro -SQ_WAVE_TYPE_PS0 = 0x00000000 # macro -SQIND_GLOBAL_REGS_OFFSET = 0x00000000 # macro -SQIND_GLOBAL_REGS_SIZE = 0x00000008 # macro -SQIND_LOCAL_REGS_OFFSET = 0x00000008 # macro -SQIND_LOCAL_REGS_SIZE = 0x00000008 # macro -SQIND_WAVE_HWREGS_OFFSET = 0x00000010 # macro -SQIND_WAVE_HWREGS_SIZE = 0x000001f0 # macro -SQIND_WAVE_SGPRS_OFFSET = 0x00000200 # macro -SQIND_WAVE_SGPRS_SIZE = 0x00000200 # macro -SQIND_WAVE_VGPRS_OFFSET = 0x00000400 # macro -SQIND_WAVE_VGPRS_SIZE = 0x00000100 # macro -SQ_GFXDEC_BEGIN = 0x0000a000 # macro -SQ_GFXDEC_END = 0x0000c000 # macro -SQ_GFXDEC_STATE_ID_SHIFT = 0x0000000a # macro -SQDEC_BEGIN = 0x00002300 # macro -SQDEC_END = 0x000023ff # macro -SQPERFSDEC_BEGIN = 0x0000d9c0 # macro -SQPERFSDEC_END = 0x0000da40 # macro -SQPERFDDEC_BEGIN = 0x0000d1c0 # macro -SQPERFDDEC_END = 0x0000d240 # macro -SQGFXUDEC_BEGIN = 0x0000c330 # macro -SQGFXUDEC_END = 0x0000c380 # macro -SQPWRDEC_BEGIN = 0x0000f08c # macro -SQPWRDEC_END = 0x0000f094 # macro -SQ_DISPATCHER_GFX_MIN = 0x00000010 # macro -SQ_DISPATCHER_GFX_CNT_PER_RING = 0x00000008 # macro -SQ_MAX_PGM_SGPRS = 0x00000068 # macro -SQ_MAX_PGM_VGPRS = 0x00000100 # macro -SQ_THREAD_TRACE_TIME_UNIT = 0x00000004 # macro -SQ_EX_MODE_EXCP_VALU_BASE = 0x00000000 # macro -SQ_EX_MODE_EXCP_VALU_SIZE = 0x00000007 # macro -SQ_EX_MODE_EXCP_INVALID = 0x00000000 # macro -SQ_EX_MODE_EXCP_INPUT_DENORM = 0x00000001 # macro -SQ_EX_MODE_EXCP_DIV0 = 0x00000002 # macro -SQ_EX_MODE_EXCP_OVERFLOW = 0x00000003 # macro -SQ_EX_MODE_EXCP_UNDERFLOW = 0x00000004 # macro -SQ_EX_MODE_EXCP_INEXACT = 0x00000005 # macro -SQ_EX_MODE_EXCP_INT_DIV0 = 0x00000006 # macro -SQ_EX_MODE_EXCP_ADDR_WATCH0 = 0x00000007 # macro -SQ_EX_MODE_EXCP_MEM_VIOL = 0x00000008 # macro -SQ_EX_MODE_EXCP_HI_ADDR_WATCH1 = 0x00000000 # macro -SQ_EX_MODE_EXCP_HI_ADDR_WATCH2 = 0x00000001 # macro -SQ_EX_MODE_EXCP_HI_ADDR_WATCH3 = 0x00000002 # macro -INST_ID_PRIV_START = 0x80000000 # macro -INST_ID_ECC_INTERRUPT_MSG = 0xfffffff0 # macro -INST_ID_TTRACE_NEW_PC_MSG = 0xfffffff1 # macro -INST_ID_HW_TRAP = 0xfffffff2 # macro -INST_ID_KILL_SEQ = 0xfffffff3 # macro -INST_ID_SPI_WREXEC = 0xfffffff4 # macro -INST_ID_HOST_REG_TRAP_MSG = 0xfffffffe # macro -SIMM16_WAITCNT_VM_CNT_START = 0x00000000 # macro -SIMM16_WAITCNT_VM_CNT_SIZE = 0x00000004 # macro -SIMM16_WAITCNT_EXP_CNT_START = 0x00000004 # macro -SIMM16_WAITCNT_EXP_CNT_SIZE = 0x00000003 # macro -SIMM16_WAITCNT_LGKM_CNT_START = 0x00000008 # macro -SIMM16_WAITCNT_LGKM_CNT_SIZE = 0x00000004 # macro -SIMM16_WAITCNT_VM_CNT_HI_START = 0x0000000e # macro -SIMM16_WAITCNT_VM_CNT_HI_SIZE = 0x00000002 # macro -SQ_EDC_FUE_CNTL_SQ = 0x00000000 # macro -SQ_EDC_FUE_CNTL_LDS = 0x00000001 # macro -SQ_EDC_FUE_CNTL_SIMD0 = 0x00000002 # macro -SQ_EDC_FUE_CNTL_SIMD1 = 0x00000003 # macro -SQ_EDC_FUE_CNTL_SIMD2 = 0x00000004 # macro -SQ_EDC_FUE_CNTL_SIMD3 = 0x00000005 # macro -SQ_EDC_FUE_CNTL_TA = 0x00000006 # macro -SQ_EDC_FUE_CNTL_TD = 0x00000007 # macro -SQ_EDC_FUE_CNTL_TCP = 0x00000008 # macro -CSDATA_TYPE_WIDTH = 0x00000002 # macro -CSDATA_ADDR_WIDTH = 0x00000007 # macro -CSDATA_DATA_WIDTH = 0x00000020 # macro -GSTHREADID_SIZE = 0x00000002 # macro -GB_TILING_CONFIG_TABLE_SIZE = 0x00000020 # macro -GB_TILING_CONFIG_MACROTABLE_SIZE = 0x00000010 # macro -SEM_ECC_ERROR = 0x00000000 # macro -SEM_TRANS_ERROR = 0x00000001 # macro -SEM_FAILED = 0x00000002 # macro -SEM_PASSED = 0x00000003 # macro -IQ_QUEUE_SLEEP = 0x00000000 # macro -IQ_OFFLOAD_RETRY = 0x00000001 # macro -IQ_SCH_WAVE_MSG = 0x00000002 # macro -IQ_SEM_REARM = 0x00000003 # macro -IQ_DEQUEUE_RETRY = 0x00000004 # macro -IQ_INTR_TYPE_PQ = 0x00000000 # macro -IQ_INTR_TYPE_IB = 0x00000001 # macro -IQ_INTR_TYPE_MQD = 0x00000002 # macro -VMID_SZ = 0x00000004 # macro -CONFIG_SPACE_START = 0x00002000 # macro -CONFIG_SPACE_END = 0x00009fff # macro -CONFIG_SPACE1_START = 0x00002000 # macro -CONFIG_SPACE1_END = 0x00002bff # macro -CONFIG_SPACE2_START = 0x00003000 # macro -CONFIG_SPACE2_END = 0x00009fff # macro -UCONFIG_SPACE_START = 0x0000c000 # macro -UCONFIG_SPACE_END = 0x0000ffff # macro -PERSISTENT_SPACE_START = 0x00002c00 # macro -PERSISTENT_SPACE_END = 0x00002fff # macro -CONTEXT_SPACE_START = 0x0000a000 # macro -CONTEXT_SPACE_END = 0x0000bfff # macro -SQ_ENC_SOP1_BITS = 0xbe800000 # macro -SQ_ENC_SOP1_MASK = 0xff800000 # macro -SQ_ENC_SOP1_FIELD = 0x0000017d # macro -SQ_ENC_SOPC_BITS = 0xbf000000 # macro -SQ_ENC_SOPC_MASK = 0xff800000 # macro -SQ_ENC_SOPC_FIELD = 0x0000017e # macro -SQ_ENC_SOPP_BITS = 0xbf800000 # macro -SQ_ENC_SOPP_MASK = 0xff800000 # macro -SQ_ENC_SOPP_FIELD = 0x0000017f # macro -SQ_ENC_SOPK_BITS = 0xb0000000 # macro -SQ_ENC_SOPK_MASK = 0xf0000000 # macro -SQ_ENC_SOPK_FIELD = 0x0000000b # macro -SQ_ENC_SOP2_BITS = 0x80000000 # macro -SQ_ENC_SOP2_MASK = 0xc0000000 # macro -SQ_ENC_SOP2_FIELD = 0x00000002 # macro -SQ_ENC_SMEM_BITS = 0xc0000000 # macro -SQ_ENC_SMEM_MASK = 0xfc000000 # macro -SQ_ENC_SMEM_FIELD = 0x00000030 # macro -SQ_ENC_VOP1_BITS = 0x7e000000 # macro -SQ_ENC_VOP1_MASK = 0xfe000000 # macro -SQ_ENC_VOP1_FIELD = 0x0000003f # macro -SQ_ENC_VOPC_BITS = 0x7c000000 # macro -SQ_ENC_VOPC_MASK = 0xfe000000 # macro -SQ_ENC_VOPC_FIELD = 0x0000003e # macro -SQ_ENC_VOP2_BITS = 0x00000000 # macro -SQ_ENC_VOP2_MASK = 0x80000000 # macro -SQ_ENC_VOP2_FIELD = 0x00000000 # macro -SQ_ENC_VINTRP_BITS = 0xd4000000 # macro -SQ_ENC_VINTRP_MASK = 0xfc000000 # macro -SQ_ENC_VINTRP_FIELD = 0x00000035 # macro -SQ_ENC_VOP3P_BITS = 0xd3800000 # macro -SQ_ENC_VOP3P_MASK = 0xff800000 # macro -SQ_ENC_VOP3P_FIELD = 0x000001a7 # macro -SQ_ENC_VOP3_BITS = 0xd0000000 # macro -SQ_ENC_VOP3_MASK = 0xfc000000 # macro -SQ_ENC_VOP3_FIELD = 0x00000034 # macro -SQ_ENC_DS_BITS = 0xd8000000 # macro -SQ_ENC_DS_MASK = 0xfc000000 # macro -SQ_ENC_DS_FIELD = 0x00000036 # macro -SQ_ENC_MUBUF_BITS = 0xe0000000 # macro -SQ_ENC_MUBUF_MASK = 0xfc000000 # macro -SQ_ENC_MUBUF_FIELD = 0x00000038 # macro -SQ_ENC_MTBUF_BITS = 0xe8000000 # macro -SQ_ENC_MTBUF_MASK = 0xfc000000 # macro -SQ_ENC_MTBUF_FIELD = 0x0000003a # macro -SQ_ENC_MIMG_BITS = 0xf0000000 # macro -SQ_ENC_MIMG_MASK = 0xfc000000 # macro -SQ_ENC_MIMG_FIELD = 0x0000003c # macro -SQ_ENC_EXP_BITS = 0xc4000000 # macro -SQ_ENC_EXP_MASK = 0xfc000000 # macro -SQ_ENC_EXP_FIELD = 0x00000031 # macro -SQ_ENC_FLAT_BITS = 0xdc000000 # macro -SQ_ENC_FLAT_MASK = 0xfc000000 # macro -SQ_ENC_FLAT_FIELD = 0x00000037 # macro -SQ_V_OP3_INTRP_COUNT = 0x0000000c # macro -SQ_SENDMSG_SYSTEM_SIZE = 0x00000003 # macro -SQ_HWREG_ID_SIZE = 0x00000006 # macro -SQ_V_OPC_COUNT = 0x00000100 # macro -SQ_NUM_VGPR = 0x00000100 # macro -SQ_WAITCNT_LGKM_SHIFT = 0x00000008 # macro -SQ_HWREG_ID_SHIFT = 0x00000000 # macro -SQ_EXP_NUM_POS = 0x00000004 # macro -SQ_XLATE_VOP3_TO_VOPC_OFFSET = 0x00000000 # macro -SQ_V_OP3_2IN_OFFSET = 0x00000280 # macro -SQ_XLATE_VOP3_TO_VOP2_OFFSET = 0x00000100 # macro -SQ_EXP_NUM_MRT = 0x00000008 # macro -SQ_NUM_TTMP = 0x00000010 # macro -SQ_SENDMSG_STREAMID_SHIFT = 0x00000008 # macro -SQ_V_OP1_COUNT = 0x00000080 # macro -SQ_WAITCNT_LGKM_SIZE = 0x00000004 # macro -SQ_XLATE_VOP3_TO_VOPC_COUNT = 0x00000100 # macro -SQ_SENDMSG_MSG_SHIFT = 0x00000000 # macro -SQ_V_OP3_3IN_OFFSET = 0x000001c0 # macro -SQ_HWREG_OFFSET_SHIFT = 0x00000006 # macro -SQ_HWREG_SIZE_SHIFT = 0x0000000b # macro -SQ_HWREG_OFFSET_SIZE = 0x00000005 # macro -SQ_V_OP3_3IN_COUNT = 0x000000b0 # macro -SQ_SENDMSG_MSG_SIZE = 0x00000004 # macro -SQ_XLATE_VOP3_TO_VOP1_COUNT = 0x00000080 # macro -SQ_EXP_NUM_GDS = 0x00000005 # macro -SQ_V_OP2_COUNT = 0x00000040 # macro -SQ_SENDMSG_GSOP_SIZE = 0x00000002 # macro -SQ_WAITCNT_VM_SHIFT = 0x00000000 # macro -SQ_XLATE_VOP3_TO_VOP3P_COUNT = 0x00000080 # macro -SQ_V_OP3_2IN_COUNT = 0x00000080 # macro -SQ_SENDMSG_SYSTEM_SHIFT = 0x00000004 # macro -SQ_WAITCNT_VM_SIZE = 0x00000004 # macro -SQ_XLATE_VOP3_TO_VOP3P_OFFSET = 0x00000380 # macro -SQ_WAITCNT_EXP_SHIFT = 0x00000004 # macro -SQ_XLATE_VOP3_TO_VOP2_COUNT = 0x00000040 # macro -SQ_EXP_NUM_PARAM = 0x00000020 # macro -SQ_HWREG_SIZE_SIZE = 0x00000005 # macro -SQ_WAITCNT_EXP_SIZE = 0x00000003 # macro -SQ_V_OP3_INTRP_OFFSET = 0x00000274 # macro -SQ_SENDMSG_GSOP_SHIFT = 0x00000004 # macro -SQ_XLATE_VOP3_TO_VINTRP_OFFSET = 0x00000270 # macro -SQ_NUM_ATTR = 0x00000021 # macro -SQ_NUM_SGPR = 0x00000066 # macro -SQ_SRC_VGPR_BIT = 0x00000100 # macro -SQ_V_INTRP_COUNT = 0x00000004 # macro -SQ_SENDMSG_STREAMID_SIZE = 0x00000002 # macro -SQ_V_OP3P_COUNT = 0x00000080 # macro -SQ_XLATE_VOP3_TO_VOP1_OFFSET = 0x00000140 # macro -SQ_XLATE_VOP3_TO_VINTRP_COUNT = 0x00000004 # macro -SQ_SRC_DPP = 0x000000fa # macro -SQ_TBUFFER_LOAD_FORMAT_X = 0x00000000 # macro -SQ_TBUFFER_LOAD_FORMAT_XY = 0x00000001 # macro -SQ_TBUFFER_LOAD_FORMAT_XYZ = 0x00000002 # macro -SQ_TBUFFER_LOAD_FORMAT_XYZW = 0x00000003 # macro -SQ_TBUFFER_STORE_FORMAT_X = 0x00000004 # macro -SQ_TBUFFER_STORE_FORMAT_XY = 0x00000005 # macro -SQ_TBUFFER_STORE_FORMAT_XYZ = 0x00000006 # macro -SQ_TBUFFER_STORE_FORMAT_XYZW = 0x00000007 # macro -SQ_TBUFFER_LOAD_FORMAT_D16_X = 0x00000008 # macro -SQ_TBUFFER_LOAD_FORMAT_D16_XY = 0x00000009 # macro -SQ_TBUFFER_LOAD_FORMAT_D16_XYZ = 0x0000000a # macro -SQ_TBUFFER_LOAD_FORMAT_D16_XYZW = 0x0000000b # macro -SQ_TBUFFER_STORE_FORMAT_D16_X = 0x0000000c # macro -SQ_TBUFFER_STORE_FORMAT_D16_XY = 0x0000000d # macro -SQ_TBUFFER_STORE_FORMAT_D16_XYZ = 0x0000000e # macro -SQ_TBUFFER_STORE_FORMAT_D16_XYZW = 0x0000000f # macro -SQ_GLOBAL_LOAD_UBYTE = 0x00000010 # macro -SQ_GLOBAL_LOAD_SBYTE = 0x00000011 # macro -SQ_GLOBAL_LOAD_USHORT = 0x00000012 # macro -SQ_GLOBAL_LOAD_SSHORT = 0x00000013 # macro -SQ_GLOBAL_LOAD_DWORD = 0x00000014 # macro -SQ_GLOBAL_LOAD_DWORDX2 = 0x00000015 # macro -SQ_GLOBAL_LOAD_DWORDX3 = 0x00000016 # macro -SQ_GLOBAL_LOAD_DWORDX4 = 0x00000017 # macro -SQ_GLOBAL_STORE_BYTE = 0x00000018 # macro -SQ_GLOBAL_STORE_SHORT = 0x0000001a # macro -SQ_GLOBAL_STORE_DWORD = 0x0000001c # macro -SQ_GLOBAL_STORE_DWORDX2 = 0x0000001d # macro -SQ_GLOBAL_STORE_DWORDX3 = 0x0000001e # macro -SQ_GLOBAL_STORE_DWORDX4 = 0x0000001f # macro -SQ_GLOBAL_ATOMIC_SWAP = 0x00000040 # macro -SQ_GLOBAL_ATOMIC_CMPSWAP = 0x00000041 # macro -SQ_GLOBAL_ATOMIC_ADD = 0x00000042 # macro -SQ_GLOBAL_ATOMIC_SUB = 0x00000043 # macro -SQ_GLOBAL_ATOMIC_SMIN = 0x00000044 # macro -SQ_GLOBAL_ATOMIC_UMIN = 0x00000045 # macro -SQ_GLOBAL_ATOMIC_SMAX = 0x00000046 # macro -SQ_GLOBAL_ATOMIC_UMAX = 0x00000047 # macro -SQ_GLOBAL_ATOMIC_AND = 0x00000048 # macro -SQ_GLOBAL_ATOMIC_OR = 0x00000049 # macro -SQ_GLOBAL_ATOMIC_XOR = 0x0000004a # macro -SQ_GLOBAL_ATOMIC_INC = 0x0000004b # macro -SQ_GLOBAL_ATOMIC_DEC = 0x0000004c # macro -SQ_GLOBAL_ATOMIC_SWAP_X2 = 0x00000060 # macro -SQ_GLOBAL_ATOMIC_CMPSWAP_X2 = 0x00000061 # macro -SQ_GLOBAL_ATOMIC_ADD_X2 = 0x00000062 # macro -SQ_GLOBAL_ATOMIC_SUB_X2 = 0x00000063 # macro -SQ_GLOBAL_ATOMIC_SMIN_X2 = 0x00000064 # macro -SQ_GLOBAL_ATOMIC_UMIN_X2 = 0x00000065 # macro -SQ_GLOBAL_ATOMIC_SMAX_X2 = 0x00000066 # macro -SQ_GLOBAL_ATOMIC_UMAX_X2 = 0x00000067 # macro -SQ_GLOBAL_ATOMIC_AND_X2 = 0x00000068 # macro -SQ_GLOBAL_ATOMIC_OR_X2 = 0x00000069 # macro -SQ_GLOBAL_ATOMIC_XOR_X2 = 0x0000006a # macro -SQ_GLOBAL_ATOMIC_INC_X2 = 0x0000006b # macro -SQ_GLOBAL_ATOMIC_DEC_X2 = 0x0000006c # macro -SQ_VGPR0 = 0x00000000 # macro -SQ_SCRATCH_LOAD_UBYTE = 0x00000010 # macro -SQ_SCRATCH_LOAD_SBYTE = 0x00000011 # macro -SQ_SCRATCH_LOAD_USHORT = 0x00000012 # macro -SQ_SCRATCH_LOAD_SSHORT = 0x00000013 # macro -SQ_SCRATCH_LOAD_DWORD = 0x00000014 # macro -SQ_SCRATCH_LOAD_DWORDX2 = 0x00000015 # macro -SQ_SCRATCH_LOAD_DWORDX3 = 0x00000016 # macro -SQ_SCRATCH_LOAD_DWORDX4 = 0x00000017 # macro -SQ_SCRATCH_STORE_BYTE = 0x00000018 # macro -SQ_SCRATCH_STORE_SHORT = 0x0000001a # macro -SQ_SCRATCH_STORE_DWORD = 0x0000001c # macro -SQ_SCRATCH_STORE_DWORDX2 = 0x0000001d # macro -SQ_SCRATCH_STORE_DWORDX3 = 0x0000001e # macro -SQ_SCRATCH_STORE_DWORDX4 = 0x0000001f # macro -SQ_VCC_ALL = 0x00000000 # macro -SQ_SRC_0 = 0x00000080 # macro -SQ_SRC_1_INT = 0x00000081 # macro -SQ_SRC_2_INT = 0x00000082 # macro -SQ_SRC_3_INT = 0x00000083 # macro -SQ_SRC_4_INT = 0x00000084 # macro -SQ_SRC_5_INT = 0x00000085 # macro -SQ_SRC_6_INT = 0x00000086 # macro -SQ_SRC_7_INT = 0x00000087 # macro -SQ_SRC_8_INT = 0x00000088 # macro -SQ_SRC_9_INT = 0x00000089 # macro -SQ_SRC_10_INT = 0x0000008a # macro -SQ_SRC_11_INT = 0x0000008b # macro -SQ_SRC_12_INT = 0x0000008c # macro -SQ_SRC_13_INT = 0x0000008d # macro -SQ_SRC_14_INT = 0x0000008e # macro -SQ_SRC_15_INT = 0x0000008f # macro -SQ_SRC_16_INT = 0x00000090 # macro -SQ_SRC_17_INT = 0x00000091 # macro -SQ_SRC_18_INT = 0x00000092 # macro -SQ_SRC_19_INT = 0x00000093 # macro -SQ_SRC_20_INT = 0x00000094 # macro -SQ_SRC_21_INT = 0x00000095 # macro -SQ_SRC_22_INT = 0x00000096 # macro -SQ_SRC_23_INT = 0x00000097 # macro -SQ_SRC_24_INT = 0x00000098 # macro -SQ_SRC_25_INT = 0x00000099 # macro -SQ_SRC_26_INT = 0x0000009a # macro -SQ_SRC_27_INT = 0x0000009b # macro -SQ_SRC_28_INT = 0x0000009c # macro -SQ_SRC_29_INT = 0x0000009d # macro -SQ_SRC_30_INT = 0x0000009e # macro -SQ_SRC_31_INT = 0x0000009f # macro -SQ_SRC_32_INT = 0x000000a0 # macro -SQ_SRC_33_INT = 0x000000a1 # macro -SQ_SRC_34_INT = 0x000000a2 # macro -SQ_SRC_35_INT = 0x000000a3 # macro -SQ_SRC_36_INT = 0x000000a4 # macro -SQ_SRC_37_INT = 0x000000a5 # macro -SQ_SRC_38_INT = 0x000000a6 # macro -SQ_SRC_39_INT = 0x000000a7 # macro -SQ_SRC_40_INT = 0x000000a8 # macro -SQ_SRC_41_INT = 0x000000a9 # macro -SQ_SRC_42_INT = 0x000000aa # macro -SQ_SRC_43_INT = 0x000000ab # macro -SQ_SRC_44_INT = 0x000000ac # macro -SQ_SRC_45_INT = 0x000000ad # macro -SQ_SRC_46_INT = 0x000000ae # macro -SQ_SRC_47_INT = 0x000000af # macro -SQ_SRC_48_INT = 0x000000b0 # macro -SQ_SRC_49_INT = 0x000000b1 # macro -SQ_SRC_50_INT = 0x000000b2 # macro -SQ_SRC_51_INT = 0x000000b3 # macro -SQ_SRC_52_INT = 0x000000b4 # macro -SQ_SRC_53_INT = 0x000000b5 # macro -SQ_SRC_54_INT = 0x000000b6 # macro -SQ_SRC_55_INT = 0x000000b7 # macro -SQ_SRC_56_INT = 0x000000b8 # macro -SQ_SRC_57_INT = 0x000000b9 # macro -SQ_SRC_58_INT = 0x000000ba # macro -SQ_SRC_59_INT = 0x000000bb # macro -SQ_SRC_60_INT = 0x000000bc # macro -SQ_SRC_61_INT = 0x000000bd # macro -SQ_SRC_62_INT = 0x000000be # macro -SQ_SRC_63_INT = 0x000000bf # macro -SQ_IMAGE_LOAD = 0x00000000 # macro -SQ_IMAGE_LOAD_MIP = 0x00000001 # macro -SQ_IMAGE_LOAD_PCK = 0x00000002 # macro -SQ_IMAGE_LOAD_PCK_SGN = 0x00000003 # macro -SQ_IMAGE_LOAD_MIP_PCK = 0x00000004 # macro -SQ_IMAGE_LOAD_MIP_PCK_SGN = 0x00000005 # macro -SQ_IMAGE_STORE = 0x00000008 # macro -SQ_IMAGE_STORE_MIP = 0x00000009 # macro -SQ_IMAGE_STORE_PCK = 0x0000000a # macro -SQ_IMAGE_STORE_MIP_PCK = 0x0000000b # macro -SQ_IMAGE_GET_RESINFO = 0x0000000e # macro -SQ_IMAGE_ATOMIC_SWAP = 0x00000010 # macro -SQ_IMAGE_ATOMIC_CMPSWAP = 0x00000011 # macro -SQ_IMAGE_ATOMIC_ADD = 0x00000012 # macro -SQ_IMAGE_ATOMIC_SUB = 0x00000013 # macro -SQ_IMAGE_ATOMIC_SMIN = 0x00000014 # macro -SQ_IMAGE_ATOMIC_UMIN = 0x00000015 # macro -SQ_IMAGE_ATOMIC_SMAX = 0x00000016 # macro -SQ_IMAGE_ATOMIC_UMAX = 0x00000017 # macro -SQ_IMAGE_ATOMIC_AND = 0x00000018 # macro -SQ_IMAGE_ATOMIC_OR = 0x00000019 # macro -SQ_IMAGE_ATOMIC_XOR = 0x0000001a # macro -SQ_IMAGE_ATOMIC_INC = 0x0000001b # macro -SQ_IMAGE_ATOMIC_DEC = 0x0000001c # macro -SQ_IMAGE_SAMPLE = 0x00000020 # macro -SQ_IMAGE_SAMPLE_CL = 0x00000021 # macro -SQ_IMAGE_SAMPLE_D = 0x00000022 # macro -SQ_IMAGE_SAMPLE_D_CL = 0x00000023 # macro -SQ_IMAGE_SAMPLE_L = 0x00000024 # macro -SQ_IMAGE_SAMPLE_B = 0x00000025 # macro -SQ_IMAGE_SAMPLE_B_CL = 0x00000026 # macro -SQ_IMAGE_SAMPLE_LZ = 0x00000027 # macro -SQ_IMAGE_SAMPLE_C = 0x00000028 # macro -SQ_IMAGE_SAMPLE_C_CL = 0x00000029 # macro -SQ_IMAGE_SAMPLE_C_D = 0x0000002a # macro -SQ_IMAGE_SAMPLE_C_D_CL = 0x0000002b # macro -SQ_IMAGE_SAMPLE_C_L = 0x0000002c # macro -SQ_IMAGE_SAMPLE_C_B = 0x0000002d # macro -SQ_IMAGE_SAMPLE_C_B_CL = 0x0000002e # macro -SQ_IMAGE_SAMPLE_C_LZ = 0x0000002f # macro -SQ_IMAGE_SAMPLE_O = 0x00000030 # macro -SQ_IMAGE_SAMPLE_CL_O = 0x00000031 # macro -SQ_IMAGE_SAMPLE_D_O = 0x00000032 # macro -SQ_IMAGE_SAMPLE_D_CL_O = 0x00000033 # macro -SQ_IMAGE_SAMPLE_L_O = 0x00000034 # macro -SQ_IMAGE_SAMPLE_B_O = 0x00000035 # macro -SQ_IMAGE_SAMPLE_B_CL_O = 0x00000036 # macro -SQ_IMAGE_SAMPLE_LZ_O = 0x00000037 # macro -SQ_IMAGE_SAMPLE_C_O = 0x00000038 # macro -SQ_IMAGE_SAMPLE_C_CL_O = 0x00000039 # macro -SQ_IMAGE_SAMPLE_C_D_O = 0x0000003a # macro -SQ_IMAGE_SAMPLE_C_D_CL_O = 0x0000003b # macro -SQ_IMAGE_SAMPLE_C_L_O = 0x0000003c # macro -SQ_IMAGE_SAMPLE_C_B_O = 0x0000003d # macro -SQ_IMAGE_SAMPLE_C_B_CL_O = 0x0000003e # macro -SQ_IMAGE_SAMPLE_C_LZ_O = 0x0000003f # macro -SQ_IMAGE_GATHER4 = 0x00000040 # macro -SQ_IMAGE_GATHER4_CL = 0x00000041 # macro -SQ_IMAGE_GATHER4H = 0x00000042 # macro -SQ_IMAGE_GATHER4_L = 0x00000044 # macro -SQ_IMAGE_GATHER4_B = 0x00000045 # macro -SQ_IMAGE_GATHER4_B_CL = 0x00000046 # macro -SQ_IMAGE_GATHER4_LZ = 0x00000047 # macro -SQ_IMAGE_GATHER4_C = 0x00000048 # macro -SQ_IMAGE_GATHER4_C_CL = 0x00000049 # macro -SQ_IMAGE_GATHER4H_PCK = 0x0000004a # macro -SQ_IMAGE_GATHER8H_PCK = 0x0000004b # macro -SQ_IMAGE_GATHER4_C_L = 0x0000004c # macro -SQ_IMAGE_GATHER4_C_B = 0x0000004d # macro -SQ_IMAGE_GATHER4_C_B_CL = 0x0000004e # macro -SQ_IMAGE_GATHER4_C_LZ = 0x0000004f # macro -SQ_IMAGE_GATHER4_O = 0x00000050 # macro -SQ_IMAGE_GATHER4_CL_O = 0x00000051 # macro -SQ_IMAGE_GATHER4_L_O = 0x00000054 # macro -SQ_IMAGE_GATHER4_B_O = 0x00000055 # macro -SQ_IMAGE_GATHER4_B_CL_O = 0x00000056 # macro -SQ_IMAGE_GATHER4_LZ_O = 0x00000057 # macro -SQ_IMAGE_GATHER4_C_O = 0x00000058 # macro -SQ_IMAGE_GATHER4_C_CL_O = 0x00000059 # macro -SQ_IMAGE_GATHER4_C_L_O = 0x0000005c # macro -SQ_IMAGE_GATHER4_C_B_O = 0x0000005d # macro -SQ_IMAGE_GATHER4_C_B_CL_O = 0x0000005e # macro -SQ_IMAGE_GATHER4_C_LZ_O = 0x0000005f # macro -SQ_IMAGE_GET_LOD = 0x00000060 # macro -SQ_IMAGE_SAMPLE_CD = 0x00000068 # macro -SQ_IMAGE_SAMPLE_CD_CL = 0x00000069 # macro -SQ_IMAGE_SAMPLE_C_CD = 0x0000006a # macro -SQ_IMAGE_SAMPLE_C_CD_CL = 0x0000006b # macro -SQ_IMAGE_SAMPLE_CD_O = 0x0000006c # macro -SQ_IMAGE_SAMPLE_CD_CL_O = 0x0000006d # macro -SQ_IMAGE_SAMPLE_C_CD_O = 0x0000006e # macro -SQ_IMAGE_SAMPLE_C_CD_CL_O = 0x0000006f # macro -SQ_IMAGE_RSRC256 = 0x0000007e # macro -SQ_IMAGE_SAMPLER = 0x0000007f # macro -SQ_HW_REG_MODE = 0x00000001 # macro -SQ_HW_REG_STATUS = 0x00000002 # macro -SQ_HW_REG_TRAPSTS = 0x00000003 # macro -SQ_HW_REG_HW_ID = 0x00000004 # macro -SQ_HW_REG_GPR_ALLOC = 0x00000005 # macro -SQ_HW_REG_LDS_ALLOC = 0x00000006 # macro -SQ_HW_REG_IB_STS = 0x00000007 # macro -SQ_HW_REG_PC_LO = 0x00000008 # macro -SQ_HW_REG_PC_HI = 0x00000009 # macro -SQ_HW_REG_INST_DW0 = 0x0000000a # macro -SQ_HW_REG_INST_DW1 = 0x0000000b # macro -SQ_HW_REG_IB_DBG0 = 0x0000000c # macro -SQ_HW_REG_IB_DBG1 = 0x0000000d # macro -SQ_HW_REG_FLUSH_IB = 0x0000000e # macro -SQ_HW_REG_SH_MEM_BASES = 0x0000000f # macro -SQ_HW_REG_SQ_SHADER_TBA_LO = 0x00000010 # macro -SQ_HW_REG_SQ_SHADER_TBA_HI = 0x00000011 # macro -SQ_HW_REG_SQ_SHADER_TMA_LO = 0x00000012 # macro -SQ_HW_REG_SQ_SHADER_TMA_HI = 0x00000013 # macro -SQ_S_MOV_B32 = 0x00000000 # macro -SQ_S_MOV_B64 = 0x00000001 # macro -SQ_S_CMOV_B32 = 0x00000002 # macro -SQ_S_CMOV_B64 = 0x00000003 # macro -SQ_S_NOT_B32 = 0x00000004 # macro -SQ_S_NOT_B64 = 0x00000005 # macro -SQ_S_WQM_B32 = 0x00000006 # macro -SQ_S_WQM_B64 = 0x00000007 # macro -SQ_S_BREV_B32 = 0x00000008 # macro -SQ_S_BREV_B64 = 0x00000009 # macro -SQ_S_BCNT0_I32_B32 = 0x0000000a # macro -SQ_S_BCNT0_I32_B64 = 0x0000000b # macro -SQ_S_BCNT1_I32_B32 = 0x0000000c # macro -SQ_S_BCNT1_I32_B64 = 0x0000000d # macro -SQ_S_FF0_I32_B32 = 0x0000000e # macro -SQ_S_FF0_I32_B64 = 0x0000000f # macro -SQ_S_FF1_I32_B32 = 0x00000010 # macro -SQ_S_FF1_I32_B64 = 0x00000011 # macro -SQ_S_FLBIT_I32_B32 = 0x00000012 # macro -SQ_S_FLBIT_I32_B64 = 0x00000013 # macro -SQ_S_FLBIT_I32 = 0x00000014 # macro -SQ_S_FLBIT_I32_I64 = 0x00000015 # macro -SQ_S_SEXT_I32_I8 = 0x00000016 # macro -SQ_S_SEXT_I32_I16 = 0x00000017 # macro -SQ_S_BITSET0_B32 = 0x00000018 # macro -SQ_S_BITSET0_B64 = 0x00000019 # macro -SQ_S_BITSET1_B32 = 0x0000001a # macro -SQ_S_BITSET1_B64 = 0x0000001b # macro -SQ_S_GETPC_B64 = 0x0000001c # macro -SQ_S_SETPC_B64 = 0x0000001d # macro -SQ_S_SWAPPC_B64 = 0x0000001e # macro -SQ_S_RFE_B64 = 0x0000001f # macro -SQ_S_AND_SAVEEXEC_B64 = 0x00000020 # macro -SQ_S_OR_SAVEEXEC_B64 = 0x00000021 # macro -SQ_S_XOR_SAVEEXEC_B64 = 0x00000022 # macro -SQ_S_ANDN2_SAVEEXEC_B64 = 0x00000023 # macro -SQ_S_ORN2_SAVEEXEC_B64 = 0x00000024 # macro -SQ_S_NAND_SAVEEXEC_B64 = 0x00000025 # macro -SQ_S_NOR_SAVEEXEC_B64 = 0x00000026 # macro -SQ_S_XNOR_SAVEEXEC_B64 = 0x00000027 # macro -SQ_S_QUADMASK_B32 = 0x00000028 # macro -SQ_S_QUADMASK_B64 = 0x00000029 # macro -SQ_S_MOVRELS_B32 = 0x0000002a # macro -SQ_S_MOVRELS_B64 = 0x0000002b # macro -SQ_S_MOVRELD_B32 = 0x0000002c # macro -SQ_S_MOVRELD_B64 = 0x0000002d # macro -SQ_S_CBRANCH_JOIN = 0x0000002e # macro -SQ_S_MOV_REGRD_B32 = 0x0000002f # macro -SQ_S_ABS_I32 = 0x00000030 # macro -SQ_S_MOV_FED_B32 = 0x00000031 # macro -SQ_S_SET_GPR_IDX_IDX = 0x00000032 # macro -SQ_S_ANDN1_SAVEEXEC_B64 = 0x00000033 # macro -SQ_S_ORN1_SAVEEXEC_B64 = 0x00000034 # macro -SQ_S_ANDN1_WREXEC_B64 = 0x00000035 # macro -SQ_S_ANDN2_WREXEC_B64 = 0x00000036 # macro -SQ_S_BITREPLICATE_B64_B32 = 0x00000037 # macro -SQ_CNT1 = 0x00000000 # macro -SQ_CNT2 = 0x00000001 # macro -SQ_CNT3 = 0x00000002 # macro -SQ_CNT4 = 0x00000003 # macro -SQ_V_MAD_LEGACY_F32 = 0x000001c0 # macro -SQ_V_MAD_F32 = 0x000001c1 # macro -SQ_V_MAD_I32_I24 = 0x000001c2 # macro -SQ_V_MAD_U32_U24 = 0x000001c3 # macro -SQ_V_CUBEID_F32 = 0x000001c4 # macro -SQ_V_CUBESC_F32 = 0x000001c5 # macro -SQ_V_CUBETC_F32 = 0x000001c6 # macro -SQ_V_CUBEMA_F32 = 0x000001c7 # macro -SQ_V_BFE_U32 = 0x000001c8 # macro -SQ_V_BFE_I32 = 0x000001c9 # macro -SQ_V_BFI_B32 = 0x000001ca # macro -SQ_V_FMA_F32 = 0x000001cb # macro -SQ_V_FMA_F64 = 0x000001cc # macro -SQ_V_LERP_U8 = 0x000001cd # macro -SQ_V_ALIGNBIT_B32 = 0x000001ce # macro -SQ_V_ALIGNBYTE_B32 = 0x000001cf # macro -SQ_V_MIN3_F32 = 0x000001d0 # macro -SQ_V_MIN3_I32 = 0x000001d1 # macro -SQ_V_MIN3_U32 = 0x000001d2 # macro -SQ_V_MAX3_F32 = 0x000001d3 # macro -SQ_V_MAX3_I32 = 0x000001d4 # macro -SQ_V_MAX3_U32 = 0x000001d5 # macro -SQ_V_MED3_F32 = 0x000001d6 # macro -SQ_V_MED3_I32 = 0x000001d7 # macro -SQ_V_MED3_U32 = 0x000001d8 # macro -SQ_V_SAD_U8 = 0x000001d9 # macro -SQ_V_SAD_HI_U8 = 0x000001da # macro -SQ_V_SAD_U16 = 0x000001db # macro -SQ_V_SAD_U32 = 0x000001dc # macro -SQ_V_CVT_PK_U8_F32 = 0x000001dd # macro -SQ_V_DIV_FIXUP_F32 = 0x000001de # macro -SQ_V_DIV_FIXUP_F64 = 0x000001df # macro -SQ_V_DIV_SCALE_F32 = 0x000001e0 # macro -SQ_V_DIV_SCALE_F64 = 0x000001e1 # macro -SQ_V_DIV_FMAS_F32 = 0x000001e2 # macro -SQ_V_DIV_FMAS_F64 = 0x000001e3 # macro -SQ_V_MSAD_U8 = 0x000001e4 # macro -SQ_V_QSAD_PK_U16_U8 = 0x000001e5 # macro -SQ_V_MQSAD_PK_U16_U8 = 0x000001e6 # macro -SQ_V_MQSAD_U32_U8 = 0x000001e7 # macro -SQ_V_MAD_U64_U32 = 0x000001e8 # macro -SQ_V_MAD_I64_I32 = 0x000001e9 # macro -SQ_V_MAD_LEGACY_F16 = 0x000001ea # macro -SQ_V_MAD_LEGACY_U16 = 0x000001eb # macro -SQ_V_MAD_LEGACY_I16 = 0x000001ec # macro -SQ_V_PERM_B32 = 0x000001ed # macro -SQ_V_FMA_LEGACY_F16 = 0x000001ee # macro -SQ_V_DIV_FIXUP_LEGACY_F16 = 0x000001ef # macro -SQ_V_CVT_PKACCUM_U8_F32 = 0x000001f0 # macro -SQ_V_MAD_U32_U16 = 0x000001f1 # macro -SQ_V_MAD_I32_I16 = 0x000001f2 # macro -SQ_V_XAD_U32 = 0x000001f3 # macro -SQ_V_MIN3_F16 = 0x000001f4 # macro -SQ_V_MIN3_I16 = 0x000001f5 # macro -SQ_V_MIN3_U16 = 0x000001f6 # macro -SQ_V_MAX3_F16 = 0x000001f7 # macro -SQ_V_MAX3_I16 = 0x000001f8 # macro -SQ_V_MAX3_U16 = 0x000001f9 # macro -SQ_V_MED3_F16 = 0x000001fa # macro -SQ_V_MED3_I16 = 0x000001fb # macro -SQ_V_MED3_U16 = 0x000001fc # macro -SQ_V_LSHL_ADD_U32 = 0x000001fd # macro -SQ_V_ADD_LSHL_U32 = 0x000001fe # macro -SQ_V_ADD3_U32 = 0x000001ff # macro -SQ_V_LSHL_OR_B32 = 0x00000200 # macro -SQ_V_AND_OR_B32 = 0x00000201 # macro -SQ_V_OR3_B32 = 0x00000202 # macro -SQ_V_MAD_F16 = 0x00000203 # macro -SQ_V_MAD_U16 = 0x00000204 # macro -SQ_V_MAD_I16 = 0x00000205 # macro -SQ_V_FMA_F16 = 0x00000206 # macro -SQ_V_DIV_FIXUP_F16 = 0x00000207 # macro -SQ_V_INTERP_P1LL_F16 = 0x00000274 # macro -SQ_V_INTERP_P1LV_F16 = 0x00000275 # macro -SQ_V_INTERP_P2_LEGACY_F16 = 0x00000276 # macro -SQ_V_INTERP_P2_F16 = 0x00000277 # macro -SQ_V_ADD_F64 = 0x00000280 # macro -SQ_V_MUL_F64 = 0x00000281 # macro -SQ_V_MIN_F64 = 0x00000282 # macro -SQ_V_MAX_F64 = 0x00000283 # macro -SQ_V_LDEXP_F64 = 0x00000284 # macro -SQ_V_MUL_LO_U32 = 0x00000285 # macro -SQ_V_MUL_HI_U32 = 0x00000286 # macro -SQ_V_MUL_HI_I32 = 0x00000287 # macro -SQ_V_LDEXP_F32 = 0x00000288 # macro -SQ_V_READLANE_B32 = 0x00000289 # macro -SQ_V_WRITELANE_B32 = 0x0000028a # macro -SQ_V_BCNT_U32_B32 = 0x0000028b # macro -SQ_V_MBCNT_LO_U32_B32 = 0x0000028c # macro -SQ_V_MBCNT_HI_U32_B32 = 0x0000028d # macro -SQ_V_MAC_LEGACY_F32 = 0x0000028e # macro -SQ_V_LSHLREV_B64 = 0x0000028f # macro -SQ_V_LSHRREV_B64 = 0x00000290 # macro -SQ_V_ASHRREV_I64 = 0x00000291 # macro -SQ_V_TRIG_PREOP_F64 = 0x00000292 # macro -SQ_V_BFM_B32 = 0x00000293 # macro -SQ_V_CVT_PKNORM_I16_F32 = 0x00000294 # macro -SQ_V_CVT_PKNORM_U16_F32 = 0x00000295 # macro -SQ_V_CVT_PKRTZ_F16_F32 = 0x00000296 # macro -SQ_V_CVT_PK_U16_U32 = 0x00000297 # macro -SQ_V_CVT_PK_I16_I32 = 0x00000298 # macro -SQ_V_CVT_PKNORM_I16_F16 = 0x00000299 # macro -SQ_V_CVT_PKNORM_U16_F16 = 0x0000029a # macro -SQ_V_READLANE_REGRD_B32 = 0x0000029b # macro -SQ_V_ADD_I32 = 0x0000029c # macro -SQ_V_SUB_I32 = 0x0000029d # macro -SQ_V_ADD_I16 = 0x0000029e # macro -SQ_V_SUB_I16 = 0x0000029f # macro -SQ_V_PACK_B32_F16 = 0x000002a0 # macro -SQ_SRC_LITERAL = 0x000000ff # macro -SQ_DPP_QUAD_PERM = 0x00000000 # macro -SQ_DPP_ROW_SL1 = 0x00000101 # macro -SQ_DPP_ROW_SL2 = 0x00000102 # macro -SQ_DPP_ROW_SL3 = 0x00000103 # macro -SQ_DPP_ROW_SL4 = 0x00000104 # macro -SQ_DPP_ROW_SL5 = 0x00000105 # macro -SQ_DPP_ROW_SL6 = 0x00000106 # macro -SQ_DPP_ROW_SL7 = 0x00000107 # macro -SQ_DPP_ROW_SL8 = 0x00000108 # macro -SQ_DPP_ROW_SL9 = 0x00000109 # macro -SQ_DPP_ROW_SL10 = 0x0000010a # macro -SQ_DPP_ROW_SL11 = 0x0000010b # macro -SQ_DPP_ROW_SL12 = 0x0000010c # macro -SQ_DPP_ROW_SL13 = 0x0000010d # macro -SQ_DPP_ROW_SL14 = 0x0000010e # macro -SQ_DPP_ROW_SL15 = 0x0000010f # macro -SQ_DPP_ROW_SR1 = 0x00000111 # macro -SQ_DPP_ROW_SR2 = 0x00000112 # macro -SQ_DPP_ROW_SR3 = 0x00000113 # macro -SQ_DPP_ROW_SR4 = 0x00000114 # macro -SQ_DPP_ROW_SR5 = 0x00000115 # macro -SQ_DPP_ROW_SR6 = 0x00000116 # macro -SQ_DPP_ROW_SR7 = 0x00000117 # macro -SQ_DPP_ROW_SR8 = 0x00000118 # macro -SQ_DPP_ROW_SR9 = 0x00000119 # macro -SQ_DPP_ROW_SR10 = 0x0000011a # macro -SQ_DPP_ROW_SR11 = 0x0000011b # macro -SQ_DPP_ROW_SR12 = 0x0000011c # macro -SQ_DPP_ROW_SR13 = 0x0000011d # macro -SQ_DPP_ROW_SR14 = 0x0000011e # macro -SQ_DPP_ROW_SR15 = 0x0000011f # macro -SQ_DPP_ROW_RR1 = 0x00000121 # macro -SQ_DPP_ROW_RR2 = 0x00000122 # macro -SQ_DPP_ROW_RR3 = 0x00000123 # macro -SQ_DPP_ROW_RR4 = 0x00000124 # macro -SQ_DPP_ROW_RR5 = 0x00000125 # macro -SQ_DPP_ROW_RR6 = 0x00000126 # macro -SQ_DPP_ROW_RR7 = 0x00000127 # macro -SQ_DPP_ROW_RR8 = 0x00000128 # macro -SQ_DPP_ROW_RR9 = 0x00000129 # macro -SQ_DPP_ROW_RR10 = 0x0000012a # macro -SQ_DPP_ROW_RR11 = 0x0000012b # macro -SQ_DPP_ROW_RR12 = 0x0000012c # macro -SQ_DPP_ROW_RR13 = 0x0000012d # macro -SQ_DPP_ROW_RR14 = 0x0000012e # macro -SQ_DPP_ROW_RR15 = 0x0000012f # macro -SQ_DPP_WF_SL1 = 0x00000130 # macro -SQ_DPP_WF_RL1 = 0x00000134 # macro -SQ_DPP_WF_SR1 = 0x00000138 # macro -SQ_DPP_WF_RR1 = 0x0000013c # macro -SQ_DPP_ROW_MIRROR = 0x00000140 # macro -SQ_DPP_ROW_HALF_MIRROR = 0x00000141 # macro -SQ_DPP_ROW_BCAST15 = 0x00000142 # macro -SQ_DPP_ROW_BCAST31 = 0x00000143 # macro -SQ_FLAT_SCRATCH_LO = 0x00000066 # macro -SQ_FLAT_SCRATCH_HI = 0x00000067 # macro -SQ_V_NOP = 0x00000000 # macro -SQ_V_MOV_B32 = 0x00000001 # macro -SQ_V_READFIRSTLANE_B32 = 0x00000002 # macro -SQ_V_CVT_I32_F64 = 0x00000003 # macro -SQ_V_CVT_F64_I32 = 0x00000004 # macro -SQ_V_CVT_F32_I32 = 0x00000005 # macro -SQ_V_CVT_F32_U32 = 0x00000006 # macro -SQ_V_CVT_U32_F32 = 0x00000007 # macro -SQ_V_CVT_I32_F32 = 0x00000008 # macro -SQ_V_MOV_FED_B32 = 0x00000009 # macro -SQ_V_CVT_F16_F32 = 0x0000000a # macro -SQ_V_CVT_F32_F16 = 0x0000000b # macro -SQ_V_CVT_RPI_I32_F32 = 0x0000000c # macro -SQ_V_CVT_FLR_I32_F32 = 0x0000000d # macro -SQ_V_CVT_OFF_F32_I4 = 0x0000000e # macro -SQ_V_CVT_F32_F64 = 0x0000000f # macro -SQ_V_CVT_F64_F32 = 0x00000010 # macro -SQ_V_CVT_F32_UBYTE0 = 0x00000011 # macro -SQ_V_CVT_F32_UBYTE1 = 0x00000012 # macro -SQ_V_CVT_F32_UBYTE2 = 0x00000013 # macro -SQ_V_CVT_F32_UBYTE3 = 0x00000014 # macro -SQ_V_CVT_U32_F64 = 0x00000015 # macro -SQ_V_CVT_F64_U32 = 0x00000016 # macro -SQ_V_TRUNC_F64 = 0x00000017 # macro -SQ_V_CEIL_F64 = 0x00000018 # macro -SQ_V_RNDNE_F64 = 0x00000019 # macro -SQ_V_FLOOR_F64 = 0x0000001a # macro -SQ_V_FRACT_F32 = 0x0000001b # macro -SQ_V_TRUNC_F32 = 0x0000001c # macro -SQ_V_CEIL_F32 = 0x0000001d # macro -SQ_V_RNDNE_F32 = 0x0000001e # macro -SQ_V_FLOOR_F32 = 0x0000001f # macro -SQ_V_EXP_F32 = 0x00000020 # macro -SQ_V_LOG_F32 = 0x00000021 # macro -SQ_V_RCP_F32 = 0x00000022 # macro -SQ_V_RCP_IFLAG_F32 = 0x00000023 # macro -SQ_V_RSQ_F32 = 0x00000024 # macro -SQ_V_RCP_F64 = 0x00000025 # macro -SQ_V_RSQ_F64 = 0x00000026 # macro -SQ_V_SQRT_F32 = 0x00000027 # macro -SQ_V_SQRT_F64 = 0x00000028 # macro -SQ_V_SIN_F32 = 0x00000029 # macro -SQ_V_COS_F32 = 0x0000002a # macro -SQ_V_NOT_B32 = 0x0000002b # macro -SQ_V_BFREV_B32 = 0x0000002c # macro -SQ_V_FFBH_U32 = 0x0000002d # macro -SQ_V_FFBL_B32 = 0x0000002e # macro -SQ_V_FFBH_I32 = 0x0000002f # macro -SQ_V_FREXP_EXP_I32_F64 = 0x00000030 # macro -SQ_V_FREXP_MANT_F64 = 0x00000031 # macro -SQ_V_FRACT_F64 = 0x00000032 # macro -SQ_V_FREXP_EXP_I32_F32 = 0x00000033 # macro -SQ_V_FREXP_MANT_F32 = 0x00000034 # macro -SQ_V_CLREXCP = 0x00000035 # macro -SQ_V_MOV_PRSV_B32 = 0x00000036 # macro -SQ_V_CVT_F16_U16 = 0x00000039 # macro -SQ_V_CVT_F16_I16 = 0x0000003a # macro -SQ_V_CVT_U16_F16 = 0x0000003b # macro -SQ_V_CVT_I16_F16 = 0x0000003c # macro -SQ_V_RCP_F16 = 0x0000003d # macro -SQ_V_SQRT_F16 = 0x0000003e # macro -SQ_V_RSQ_F16 = 0x0000003f # macro -SQ_V_LOG_F16 = 0x00000040 # macro -SQ_V_EXP_F16 = 0x00000041 # macro -SQ_V_FREXP_MANT_F16 = 0x00000042 # macro -SQ_V_FREXP_EXP_I16_F16 = 0x00000043 # macro -SQ_V_FLOOR_F16 = 0x00000044 # macro -SQ_V_CEIL_F16 = 0x00000045 # macro -SQ_V_TRUNC_F16 = 0x00000046 # macro -SQ_V_RNDNE_F16 = 0x00000047 # macro -SQ_V_FRACT_F16 = 0x00000048 # macro -SQ_V_SIN_F16 = 0x00000049 # macro -SQ_V_COS_F16 = 0x0000004a # macro -SQ_V_EXP_LEGACY_F32 = 0x0000004b # macro -SQ_V_LOG_LEGACY_F32 = 0x0000004c # macro -SQ_V_CVT_NORM_I16_F16 = 0x0000004d # macro -SQ_V_CVT_NORM_U16_F16 = 0x0000004e # macro -SQ_V_SAT_PK_U8_I16 = 0x0000004f # macro -SQ_V_WRITELANE_IMM32 = 0x00000050 # macro -SQ_V_SWAP_B32 = 0x00000051 # macro -SQ_FLAT_LOAD_UBYTE = 0x00000010 # macro -SQ_FLAT_LOAD_SBYTE = 0x00000011 # macro -SQ_FLAT_LOAD_USHORT = 0x00000012 # macro -SQ_FLAT_LOAD_SSHORT = 0x00000013 # macro -SQ_FLAT_LOAD_DWORD = 0x00000014 # macro -SQ_FLAT_LOAD_DWORDX2 = 0x00000015 # macro -SQ_FLAT_LOAD_DWORDX3 = 0x00000016 # macro -SQ_FLAT_LOAD_DWORDX4 = 0x00000017 # macro -SQ_FLAT_STORE_BYTE = 0x00000018 # macro -SQ_FLAT_STORE_SHORT = 0x0000001a # macro -SQ_FLAT_STORE_DWORD = 0x0000001c # macro -SQ_FLAT_STORE_DWORDX2 = 0x0000001d # macro -SQ_FLAT_STORE_DWORDX3 = 0x0000001e # macro -SQ_FLAT_STORE_DWORDX4 = 0x0000001f # macro -SQ_FLAT_ATOMIC_SWAP = 0x00000040 # macro -SQ_FLAT_ATOMIC_CMPSWAP = 0x00000041 # macro -SQ_FLAT_ATOMIC_ADD = 0x00000042 # macro -SQ_FLAT_ATOMIC_SUB = 0x00000043 # macro -SQ_FLAT_ATOMIC_SMIN = 0x00000044 # macro -SQ_FLAT_ATOMIC_UMIN = 0x00000045 # macro -SQ_FLAT_ATOMIC_SMAX = 0x00000046 # macro -SQ_FLAT_ATOMIC_UMAX = 0x00000047 # macro -SQ_FLAT_ATOMIC_AND = 0x00000048 # macro -SQ_FLAT_ATOMIC_OR = 0x00000049 # macro -SQ_FLAT_ATOMIC_XOR = 0x0000004a # macro -SQ_FLAT_ATOMIC_INC = 0x0000004b # macro -SQ_FLAT_ATOMIC_DEC = 0x0000004c # macro -SQ_FLAT_ATOMIC_SWAP_X2 = 0x00000060 # macro -SQ_FLAT_ATOMIC_CMPSWAP_X2 = 0x00000061 # macro -SQ_FLAT_ATOMIC_ADD_X2 = 0x00000062 # macro -SQ_FLAT_ATOMIC_SUB_X2 = 0x00000063 # macro -SQ_FLAT_ATOMIC_SMIN_X2 = 0x00000064 # macro -SQ_FLAT_ATOMIC_UMIN_X2 = 0x00000065 # macro -SQ_FLAT_ATOMIC_SMAX_X2 = 0x00000066 # macro -SQ_FLAT_ATOMIC_UMAX_X2 = 0x00000067 # macro -SQ_FLAT_ATOMIC_AND_X2 = 0x00000068 # macro -SQ_FLAT_ATOMIC_OR_X2 = 0x00000069 # macro -SQ_FLAT_ATOMIC_XOR_X2 = 0x0000006a # macro -SQ_FLAT_ATOMIC_INC_X2 = 0x0000006b # macro -SQ_FLAT_ATOMIC_DEC_X2 = 0x0000006c # macro -SQ_DS_ADD_U32 = 0x00000000 # macro -SQ_DS_SUB_U32 = 0x00000001 # macro -SQ_DS_RSUB_U32 = 0x00000002 # macro -SQ_DS_INC_U32 = 0x00000003 # macro -SQ_DS_DEC_U32 = 0x00000004 # macro -SQ_DS_MIN_I32 = 0x00000005 # macro -SQ_DS_MAX_I32 = 0x00000006 # macro -SQ_DS_MIN_U32 = 0x00000007 # macro -SQ_DS_MAX_U32 = 0x00000008 # macro -SQ_DS_AND_B32 = 0x00000009 # macro -SQ_DS_OR_B32 = 0x0000000a # macro -SQ_DS_XOR_B32 = 0x0000000b # macro -SQ_DS_MSKOR_B32 = 0x0000000c # macro -SQ_DS_WRITE_B32 = 0x0000000d # macro -SQ_DS_WRITE2_B32 = 0x0000000e # macro -SQ_DS_WRITE2ST64_B32 = 0x0000000f # macro -SQ_DS_CMPST_B32 = 0x00000010 # macro -SQ_DS_CMPST_F32 = 0x00000011 # macro -SQ_DS_MIN_F32 = 0x00000012 # macro -SQ_DS_MAX_F32 = 0x00000013 # macro -SQ_DS_NOP = 0x00000014 # macro -SQ_DS_ADD_F32 = 0x00000015 # macro -SQ_DS_WRITE_ADDTID_B32 = 0x0000001d # macro -SQ_DS_WRITE_B8 = 0x0000001e # macro -SQ_DS_WRITE_B16 = 0x0000001f # macro -SQ_DS_ADD_RTN_U32 = 0x00000020 # macro -SQ_DS_SUB_RTN_U32 = 0x00000021 # macro -SQ_DS_RSUB_RTN_U32 = 0x00000022 # macro -SQ_DS_INC_RTN_U32 = 0x00000023 # macro -SQ_DS_DEC_RTN_U32 = 0x00000024 # macro -SQ_DS_MIN_RTN_I32 = 0x00000025 # macro -SQ_DS_MAX_RTN_I32 = 0x00000026 # macro -SQ_DS_MIN_RTN_U32 = 0x00000027 # macro -SQ_DS_MAX_RTN_U32 = 0x00000028 # macro -SQ_DS_AND_RTN_B32 = 0x00000029 # macro -SQ_DS_OR_RTN_B32 = 0x0000002a # macro -SQ_DS_XOR_RTN_B32 = 0x0000002b # macro -SQ_DS_MSKOR_RTN_B32 = 0x0000002c # macro -SQ_DS_WRXCHG_RTN_B32 = 0x0000002d # macro -SQ_DS_WRXCHG2_RTN_B32 = 0x0000002e # macro -SQ_DS_WRXCHG2ST64_RTN_B32 = 0x0000002f # macro -SQ_DS_CMPST_RTN_B32 = 0x00000030 # macro -SQ_DS_CMPST_RTN_F32 = 0x00000031 # macro -SQ_DS_MIN_RTN_F32 = 0x00000032 # macro -SQ_DS_MAX_RTN_F32 = 0x00000033 # macro -SQ_DS_WRAP_RTN_B32 = 0x00000034 # macro -SQ_DS_ADD_RTN_F32 = 0x00000035 # macro -SQ_DS_READ_B32 = 0x00000036 # macro -SQ_DS_READ2_B32 = 0x00000037 # macro -SQ_DS_READ2ST64_B32 = 0x00000038 # macro -SQ_DS_READ_I8 = 0x00000039 # macro -SQ_DS_READ_U8 = 0x0000003a # macro -SQ_DS_READ_I16 = 0x0000003b # macro -SQ_DS_READ_U16 = 0x0000003c # macro -SQ_DS_SWIZZLE_B32 = 0x0000003d # macro -SQ_DS_PERMUTE_B32 = 0x0000003e # macro -SQ_DS_BPERMUTE_B32 = 0x0000003f # macro -SQ_DS_ADD_U64 = 0x00000040 # macro -SQ_DS_SUB_U64 = 0x00000041 # macro -SQ_DS_RSUB_U64 = 0x00000042 # macro -SQ_DS_INC_U64 = 0x00000043 # macro -SQ_DS_DEC_U64 = 0x00000044 # macro -SQ_DS_MIN_I64 = 0x00000045 # macro -SQ_DS_MAX_I64 = 0x00000046 # macro -SQ_DS_MIN_U64 = 0x00000047 # macro -SQ_DS_MAX_U64 = 0x00000048 # macro -SQ_DS_AND_B64 = 0x00000049 # macro -SQ_DS_OR_B64 = 0x0000004a # macro -SQ_DS_XOR_B64 = 0x0000004b # macro -SQ_DS_MSKOR_B64 = 0x0000004c # macro -SQ_DS_WRITE_B64 = 0x0000004d # macro -SQ_DS_WRITE2_B64 = 0x0000004e # macro -SQ_DS_WRITE2ST64_B64 = 0x0000004f # macro -SQ_DS_CMPST_B64 = 0x00000050 # macro -SQ_DS_CMPST_F64 = 0x00000051 # macro -SQ_DS_MIN_F64 = 0x00000052 # macro -SQ_DS_MAX_F64 = 0x00000053 # macro -SQ_DS_ADD_RTN_U64 = 0x00000060 # macro -SQ_DS_SUB_RTN_U64 = 0x00000061 # macro -SQ_DS_RSUB_RTN_U64 = 0x00000062 # macro -SQ_DS_INC_RTN_U64 = 0x00000063 # macro -SQ_DS_DEC_RTN_U64 = 0x00000064 # macro -SQ_DS_MIN_RTN_I64 = 0x00000065 # macro -SQ_DS_MAX_RTN_I64 = 0x00000066 # macro -SQ_DS_MIN_RTN_U64 = 0x00000067 # macro -SQ_DS_MAX_RTN_U64 = 0x00000068 # macro -SQ_DS_AND_RTN_B64 = 0x00000069 # macro -SQ_DS_OR_RTN_B64 = 0x0000006a # macro -SQ_DS_XOR_RTN_B64 = 0x0000006b # macro -SQ_DS_MSKOR_RTN_B64 = 0x0000006c # macro -SQ_DS_WRXCHG_RTN_B64 = 0x0000006d # macro -SQ_DS_WRXCHG2_RTN_B64 = 0x0000006e # macro -SQ_DS_WRXCHG2ST64_RTN_B64 = 0x0000006f # macro -SQ_DS_CMPST_RTN_B64 = 0x00000070 # macro -SQ_DS_CMPST_RTN_F64 = 0x00000071 # macro -SQ_DS_MIN_RTN_F64 = 0x00000072 # macro -SQ_DS_MAX_RTN_F64 = 0x00000073 # macro -SQ_DS_READ_B64 = 0x00000076 # macro -SQ_DS_READ2_B64 = 0x00000077 # macro -SQ_DS_READ2ST64_B64 = 0x00000078 # macro -SQ_DS_CONDXCHG32_RTN_B64 = 0x0000007e # macro -SQ_DS_ADD_SRC2_U32 = 0x00000080 # macro -SQ_DS_SUB_SRC2_U32 = 0x00000081 # macro -SQ_DS_RSUB_SRC2_U32 = 0x00000082 # macro -SQ_DS_INC_SRC2_U32 = 0x00000083 # macro -SQ_DS_DEC_SRC2_U32 = 0x00000084 # macro -SQ_DS_MIN_SRC2_I32 = 0x00000085 # macro -SQ_DS_MAX_SRC2_I32 = 0x00000086 # macro -SQ_DS_MIN_SRC2_U32 = 0x00000087 # macro -SQ_DS_MAX_SRC2_U32 = 0x00000088 # macro -SQ_DS_AND_SRC2_B32 = 0x00000089 # macro -SQ_DS_OR_SRC2_B32 = 0x0000008a # macro -SQ_DS_XOR_SRC2_B32 = 0x0000008b # macro -SQ_DS_WRITE_SRC2_B32 = 0x0000008d # macro -SQ_DS_MIN_SRC2_F32 = 0x00000092 # macro -SQ_DS_MAX_SRC2_F32 = 0x00000093 # macro -SQ_DS_ADD_SRC2_F32 = 0x00000095 # macro -SQ_DS_GWS_SEMA_RELEASE_ALL = 0x00000098 # macro -SQ_DS_GWS_INIT = 0x00000099 # macro -SQ_DS_GWS_SEMA_V = 0x0000009a # macro -SQ_DS_GWS_SEMA_BR = 0x0000009b # macro -SQ_DS_GWS_SEMA_P = 0x0000009c # macro -SQ_DS_GWS_BARRIER = 0x0000009d # macro -SQ_DS_READ_ADDTID_B32 = 0x000000b6 # macro -SQ_DS_CONSUME = 0x000000bd # macro -SQ_DS_APPEND = 0x000000be # macro -SQ_DS_ORDERED_COUNT = 0x000000bf # macro -SQ_DS_ADD_SRC2_U64 = 0x000000c0 # macro -SQ_DS_SUB_SRC2_U64 = 0x000000c1 # macro -SQ_DS_RSUB_SRC2_U64 = 0x000000c2 # macro -SQ_DS_INC_SRC2_U64 = 0x000000c3 # macro -SQ_DS_DEC_SRC2_U64 = 0x000000c4 # macro -SQ_DS_MIN_SRC2_I64 = 0x000000c5 # macro -SQ_DS_MAX_SRC2_I64 = 0x000000c6 # macro -SQ_DS_MIN_SRC2_U64 = 0x000000c7 # macro -SQ_DS_MAX_SRC2_U64 = 0x000000c8 # macro -SQ_DS_AND_SRC2_B64 = 0x000000c9 # macro -SQ_DS_OR_SRC2_B64 = 0x000000ca # macro -SQ_DS_XOR_SRC2_B64 = 0x000000cb # macro -SQ_DS_WRITE_SRC2_B64 = 0x000000cd # macro -SQ_DS_MIN_SRC2_F64 = 0x000000d2 # macro -SQ_DS_MAX_SRC2_F64 = 0x000000d3 # macro -SQ_DS_WRITE_B96 = 0x000000de # macro -SQ_DS_WRITE_B128 = 0x000000df # macro -SQ_DS_CONDXCHG32_RTN_B128 = 0x000000fd # macro -SQ_DS_READ_B96 = 0x000000fe # macro -SQ_DS_READ_B128 = 0x000000ff # macro -SQ_S_LOAD_DWORD = 0x00000000 # macro -SQ_S_LOAD_DWORDX2 = 0x00000001 # macro -SQ_S_LOAD_DWORDX4 = 0x00000002 # macro -SQ_S_LOAD_DWORDX8 = 0x00000003 # macro -SQ_S_LOAD_DWORDX16 = 0x00000004 # macro -SQ_S_SCRATCH_LOAD_DWORD = 0x00000005 # macro -SQ_S_SCRATCH_LOAD_DWORDX2 = 0x00000006 # macro -SQ_S_SCRATCH_LOAD_DWORDX4 = 0x00000007 # macro -SQ_S_BUFFER_LOAD_DWORD = 0x00000008 # macro -SQ_S_BUFFER_LOAD_DWORDX2 = 0x00000009 # macro -SQ_S_BUFFER_LOAD_DWORDX4 = 0x0000000a # macro -SQ_S_BUFFER_LOAD_DWORDX8 = 0x0000000b # macro -SQ_S_BUFFER_LOAD_DWORDX16 = 0x0000000c # macro -SQ_S_STORE_DWORD = 0x00000010 # macro -SQ_S_STORE_DWORDX2 = 0x00000011 # macro -SQ_S_STORE_DWORDX4 = 0x00000012 # macro -SQ_S_SCRATCH_STORE_DWORD = 0x00000015 # macro -SQ_S_SCRATCH_STORE_DWORDX2 = 0x00000016 # macro -SQ_S_SCRATCH_STORE_DWORDX4 = 0x00000017 # macro -SQ_S_BUFFER_STORE_DWORD = 0x00000018 # macro -SQ_S_BUFFER_STORE_DWORDX2 = 0x00000019 # macro -SQ_S_BUFFER_STORE_DWORDX4 = 0x0000001a # macro -SQ_S_DCACHE_INV = 0x00000020 # macro -SQ_S_DCACHE_WB = 0x00000021 # macro -SQ_S_DCACHE_INV_VOL = 0x00000022 # macro -SQ_S_DCACHE_WB_VOL = 0x00000023 # macro -SQ_S_MEMTIME = 0x00000024 # macro -SQ_S_MEMREALTIME = 0x00000025 # macro -SQ_S_ATC_PROBE = 0x00000026 # macro -SQ_S_ATC_PROBE_BUFFER = 0x00000027 # macro -SQ_S_BUFFER_ATOMIC_SWAP = 0x00000040 # macro -SQ_S_BUFFER_ATOMIC_CMPSWAP = 0x00000041 # macro -SQ_S_BUFFER_ATOMIC_ADD = 0x00000042 # macro -SQ_S_BUFFER_ATOMIC_SUB = 0x00000043 # macro -SQ_S_BUFFER_ATOMIC_SMIN = 0x00000044 # macro -SQ_S_BUFFER_ATOMIC_UMIN = 0x00000045 # macro -SQ_S_BUFFER_ATOMIC_SMAX = 0x00000046 # macro -SQ_S_BUFFER_ATOMIC_UMAX = 0x00000047 # macro -SQ_S_BUFFER_ATOMIC_AND = 0x00000048 # macro -SQ_S_BUFFER_ATOMIC_OR = 0x00000049 # macro -SQ_S_BUFFER_ATOMIC_XOR = 0x0000004a # macro -SQ_S_BUFFER_ATOMIC_INC = 0x0000004b # macro -SQ_S_BUFFER_ATOMIC_DEC = 0x0000004c # macro -SQ_S_BUFFER_ATOMIC_SWAP_X2 = 0x00000060 # macro -SQ_S_BUFFER_ATOMIC_CMPSWAP_X2 = 0x00000061 # macro -SQ_S_BUFFER_ATOMIC_ADD_X2 = 0x00000062 # macro -SQ_S_BUFFER_ATOMIC_SUB_X2 = 0x00000063 # macro -SQ_S_BUFFER_ATOMIC_SMIN_X2 = 0x00000064 # macro -SQ_S_BUFFER_ATOMIC_UMIN_X2 = 0x00000065 # macro -SQ_S_BUFFER_ATOMIC_SMAX_X2 = 0x00000066 # macro -SQ_S_BUFFER_ATOMIC_UMAX_X2 = 0x00000067 # macro -SQ_S_BUFFER_ATOMIC_AND_X2 = 0x00000068 # macro -SQ_S_BUFFER_ATOMIC_OR_X2 = 0x00000069 # macro -SQ_S_BUFFER_ATOMIC_XOR_X2 = 0x0000006a # macro -SQ_S_BUFFER_ATOMIC_INC_X2 = 0x0000006b # macro -SQ_S_BUFFER_ATOMIC_DEC_X2 = 0x0000006c # macro -SQ_S_ATOMIC_SWAP = 0x00000080 # macro -SQ_S_ATOMIC_CMPSWAP = 0x00000081 # macro -SQ_S_ATOMIC_ADD = 0x00000082 # macro -SQ_S_ATOMIC_SUB = 0x00000083 # macro -SQ_S_ATOMIC_SMIN = 0x00000084 # macro -SQ_S_ATOMIC_UMIN = 0x00000085 # macro -SQ_S_ATOMIC_SMAX = 0x00000086 # macro -SQ_S_ATOMIC_UMAX = 0x00000087 # macro -SQ_S_ATOMIC_AND = 0x00000088 # macro -SQ_S_ATOMIC_OR = 0x00000089 # macro -SQ_S_ATOMIC_XOR = 0x0000008a # macro -SQ_S_ATOMIC_INC = 0x0000008b # macro -SQ_S_ATOMIC_DEC = 0x0000008c # macro -SQ_S_ATOMIC_SWAP_X2 = 0x000000a0 # macro -SQ_S_ATOMIC_CMPSWAP_X2 = 0x000000a1 # macro -SQ_S_ATOMIC_ADD_X2 = 0x000000a2 # macro -SQ_S_ATOMIC_SUB_X2 = 0x000000a3 # macro -SQ_S_ATOMIC_SMIN_X2 = 0x000000a4 # macro -SQ_S_ATOMIC_UMIN_X2 = 0x000000a5 # macro -SQ_S_ATOMIC_SMAX_X2 = 0x000000a6 # macro -SQ_S_ATOMIC_UMAX_X2 = 0x000000a7 # macro -SQ_S_ATOMIC_AND_X2 = 0x000000a8 # macro -SQ_S_ATOMIC_OR_X2 = 0x000000a9 # macro -SQ_S_ATOMIC_XOR_X2 = 0x000000aa # macro -SQ_S_ATOMIC_INC_X2 = 0x000000ab # macro -SQ_S_ATOMIC_DEC_X2 = 0x000000ac # macro -SQ_V_CNDMASK_B32 = 0x00000000 # macro -SQ_V_ADD_F32 = 0x00000001 # macro -SQ_V_SUB_F32 = 0x00000002 # macro -SQ_V_SUBREV_F32 = 0x00000003 # macro -SQ_V_MUL_LEGACY_F32 = 0x00000004 # macro -SQ_V_MUL_F32 = 0x00000005 # macro -SQ_V_MUL_I32_I24 = 0x00000006 # macro -SQ_V_MUL_HI_I32_I24 = 0x00000007 # macro -SQ_V_MUL_U32_U24 = 0x00000008 # macro -SQ_V_MUL_HI_U32_U24 = 0x00000009 # macro -SQ_V_MIN_F32 = 0x0000000a # macro -SQ_V_MAX_F32 = 0x0000000b # macro -SQ_V_MIN_I32 = 0x0000000c # macro -SQ_V_MAX_I32 = 0x0000000d # macro -SQ_V_MIN_U32 = 0x0000000e # macro -SQ_V_MAX_U32 = 0x0000000f # macro -SQ_V_LSHRREV_B32 = 0x00000010 # macro -SQ_V_ASHRREV_I32 = 0x00000011 # macro -SQ_V_LSHLREV_B32 = 0x00000012 # macro -SQ_V_AND_B32 = 0x00000013 # macro -SQ_V_OR_B32 = 0x00000014 # macro -SQ_V_XOR_B32 = 0x00000015 # macro -SQ_V_MAC_F32 = 0x00000016 # macro -SQ_V_MADMK_F32 = 0x00000017 # macro -SQ_V_MADAK_F32 = 0x00000018 # macro -SQ_V_ADD_CO_U32 = 0x00000019 # macro -SQ_V_SUB_CO_U32 = 0x0000001a # macro -SQ_V_SUBREV_CO_U32 = 0x0000001b # macro -SQ_V_ADDC_CO_U32 = 0x0000001c # macro -SQ_V_SUBB_CO_U32 = 0x0000001d # macro -SQ_V_SUBBREV_CO_U32 = 0x0000001e # macro -SQ_V_ADD_F16 = 0x0000001f # macro -SQ_V_SUB_F16 = 0x00000020 # macro -SQ_V_SUBREV_F16 = 0x00000021 # macro -SQ_V_MUL_F16 = 0x00000022 # macro -SQ_V_MAC_F16 = 0x00000023 # macro -SQ_V_MADMK_F16 = 0x00000024 # macro -SQ_V_MADAK_F16 = 0x00000025 # macro -SQ_V_ADD_U16 = 0x00000026 # macro -SQ_V_SUB_U16 = 0x00000027 # macro -SQ_V_SUBREV_U16 = 0x00000028 # macro -SQ_V_MUL_LO_U16 = 0x00000029 # macro -SQ_V_LSHLREV_B16 = 0x0000002a # macro -SQ_V_LSHRREV_B16 = 0x0000002b # macro -SQ_V_ASHRREV_I16 = 0x0000002c # macro -SQ_V_MAX_F16 = 0x0000002d # macro -SQ_V_MIN_F16 = 0x0000002e # macro -SQ_V_MAX_U16 = 0x0000002f # macro -SQ_V_MAX_I16 = 0x00000030 # macro -SQ_V_MIN_U16 = 0x00000031 # macro -SQ_V_MIN_I16 = 0x00000032 # macro -SQ_V_LDEXP_F16 = 0x00000033 # macro -SQ_V_ADD_U32 = 0x00000034 # macro -SQ_V_SUB_U32 = 0x00000035 # macro -SQ_V_SUBREV_U32 = 0x00000036 # macro -SQ_SYSMSG_OP_ECC_ERR_INTERRUPT = 0x00000001 # macro -SQ_SYSMSG_OP_REG_RD = 0x00000002 # macro -SQ_SYSMSG_OP_HOST_TRAP_ACK = 0x00000003 # macro -SQ_SYSMSG_OP_TTRACE_PC = 0x00000004 # macro -SQ_SYSMSG_OP_ILLEGAL_INST_INTERRUPT = 0x00000005 # macro -SQ_SYSMSG_OP_MEMVIOL_INTERRUPT = 0x00000006 # macro -SQ_SRC_VCCZ = 0x000000fb # macro -SQ_CHAN_X = 0x00000000 # macro -SQ_CHAN_Y = 0x00000001 # macro -SQ_CHAN_Z = 0x00000002 # macro -SQ_CHAN_W = 0x00000003 # macro -SQ_S_MOVK_I32 = 0x00000000 # macro -SQ_S_CMOVK_I32 = 0x00000001 # macro -SQ_S_CMPK_EQ_I32 = 0x00000002 # macro -SQ_S_CMPK_LG_I32 = 0x00000003 # macro -SQ_S_CMPK_GT_I32 = 0x00000004 # macro -SQ_S_CMPK_GE_I32 = 0x00000005 # macro -SQ_S_CMPK_LT_I32 = 0x00000006 # macro -SQ_S_CMPK_LE_I32 = 0x00000007 # macro -SQ_S_CMPK_EQ_U32 = 0x00000008 # macro -SQ_S_CMPK_LG_U32 = 0x00000009 # macro -SQ_S_CMPK_GT_U32 = 0x0000000a # macro -SQ_S_CMPK_GE_U32 = 0x0000000b # macro -SQ_S_CMPK_LT_U32 = 0x0000000c # macro -SQ_S_CMPK_LE_U32 = 0x0000000d # macro -SQ_S_ADDK_I32 = 0x0000000e # macro -SQ_S_MULK_I32 = 0x0000000f # macro -SQ_S_CBRANCH_I_FORK = 0x00000010 # macro -SQ_S_GETREG_B32 = 0x00000011 # macro -SQ_S_SETREG_B32 = 0x00000012 # macro -SQ_S_GETREG_REGRD_B32 = 0x00000013 # macro -SQ_S_SETREG_IMM32_B32 = 0x00000014 # macro -SQ_S_CALL_B64 = 0x00000015 # macro -SQ_L1 = 0x00000001 # macro -SQ_L2 = 0x00000002 # macro -SQ_L3 = 0x00000003 # macro -SQ_L4 = 0x00000004 # macro -SQ_L5 = 0x00000005 # macro -SQ_L6 = 0x00000006 # macro -SQ_L7 = 0x00000007 # macro -SQ_L8 = 0x00000008 # macro -SQ_L9 = 0x00000009 # macro -SQ_L10 = 0x0000000a # macro -SQ_L11 = 0x0000000b # macro -SQ_L12 = 0x0000000c # macro -SQ_L13 = 0x0000000d # macro -SQ_L14 = 0x0000000e # macro -SQ_L15 = 0x0000000f # macro -SQ_SGPR0 = 0x00000000 # macro -SQ_V_PK_MAD_I16 = 0x00000000 # macro -SQ_V_PK_MUL_LO_U16 = 0x00000001 # macro -SQ_V_PK_ADD_I16 = 0x00000002 # macro -SQ_V_PK_SUB_I16 = 0x00000003 # macro -SQ_V_PK_LSHLREV_B16 = 0x00000004 # macro -SQ_V_PK_LSHRREV_B16 = 0x00000005 # macro -SQ_V_PK_ASHRREV_I16 = 0x00000006 # macro -SQ_V_PK_MAX_I16 = 0x00000007 # macro -SQ_V_PK_MIN_I16 = 0x00000008 # macro -SQ_V_PK_MAD_U16 = 0x00000009 # macro -SQ_V_PK_ADD_U16 = 0x0000000a # macro -SQ_V_PK_SUB_U16 = 0x0000000b # macro -SQ_V_PK_MAX_U16 = 0x0000000c # macro -SQ_V_PK_MIN_U16 = 0x0000000d # macro -SQ_V_PK_MAD_F16 = 0x0000000e # macro -SQ_V_PK_ADD_F16 = 0x0000000f # macro -SQ_V_PK_MUL_F16 = 0x00000010 # macro -SQ_V_PK_MIN_F16 = 0x00000011 # macro -SQ_V_PK_MAX_F16 = 0x00000012 # macro -SQ_V_MAD_MIX_F32 = 0x00000020 # macro -SQ_V_MAD_MIXLO_F16 = 0x00000021 # macro -SQ_V_MAD_MIXHI_F16 = 0x00000022 # macro -SQ_V_INTERP_P1_F32 = 0x00000000 # macro -SQ_V_INTERP_P2_F32 = 0x00000001 # macro -SQ_V_INTERP_MOV_F32 = 0x00000002 # macro -SQ_R1 = 0x00000001 # macro -SQ_R2 = 0x00000002 # macro -SQ_R3 = 0x00000003 # macro -SQ_R4 = 0x00000004 # macro -SQ_R5 = 0x00000005 # macro -SQ_R6 = 0x00000006 # macro -SQ_R7 = 0x00000007 # macro -SQ_R8 = 0x00000008 # macro -SQ_R9 = 0x00000009 # macro -SQ_R10 = 0x0000000a # macro -SQ_R11 = 0x0000000b # macro -SQ_R12 = 0x0000000c # macro -SQ_R13 = 0x0000000d # macro -SQ_R14 = 0x0000000e # macro -SQ_R15 = 0x0000000f # macro -SQ_S_ADD_U32 = 0x00000000 # macro -SQ_S_SUB_U32 = 0x00000001 # macro -SQ_S_ADD_I32 = 0x00000002 # macro -SQ_S_SUB_I32 = 0x00000003 # macro -SQ_S_ADDC_U32 = 0x00000004 # macro -SQ_S_SUBB_U32 = 0x00000005 # macro -SQ_S_MIN_I32 = 0x00000006 # macro -SQ_S_MIN_U32 = 0x00000007 # macro -SQ_S_MAX_I32 = 0x00000008 # macro -SQ_S_MAX_U32 = 0x00000009 # macro -SQ_S_CSELECT_B32 = 0x0000000a # macro -SQ_S_CSELECT_B64 = 0x0000000b # macro -SQ_S_AND_B32 = 0x0000000c # macro -SQ_S_AND_B64 = 0x0000000d # macro -SQ_S_OR_B32 = 0x0000000e # macro -SQ_S_OR_B64 = 0x0000000f # macro -SQ_S_XOR_B32 = 0x00000010 # macro -SQ_S_XOR_B64 = 0x00000011 # macro -SQ_S_ANDN2_B32 = 0x00000012 # macro -SQ_S_ANDN2_B64 = 0x00000013 # macro -SQ_S_ORN2_B32 = 0x00000014 # macro -SQ_S_ORN2_B64 = 0x00000015 # macro -SQ_S_NAND_B32 = 0x00000016 # macro -SQ_S_NAND_B64 = 0x00000017 # macro -SQ_S_NOR_B32 = 0x00000018 # macro -SQ_S_NOR_B64 = 0x00000019 # macro -SQ_S_XNOR_B32 = 0x0000001a # macro -SQ_S_XNOR_B64 = 0x0000001b # macro -SQ_S_LSHL_B32 = 0x0000001c # macro -SQ_S_LSHL_B64 = 0x0000001d # macro -SQ_S_LSHR_B32 = 0x0000001e # macro -SQ_S_LSHR_B64 = 0x0000001f # macro -SQ_S_ASHR_I32 = 0x00000020 # macro -SQ_S_ASHR_I64 = 0x00000021 # macro -SQ_S_BFM_B32 = 0x00000022 # macro -SQ_S_BFM_B64 = 0x00000023 # macro -SQ_S_MUL_I32 = 0x00000024 # macro -SQ_S_BFE_U32 = 0x00000025 # macro -SQ_S_BFE_I32 = 0x00000026 # macro -SQ_S_BFE_U64 = 0x00000027 # macro -SQ_S_BFE_I64 = 0x00000028 # macro -SQ_S_CBRANCH_G_FORK = 0x00000029 # macro -SQ_S_ABSDIFF_I32 = 0x0000002a # macro -SQ_S_RFE_RESTORE_B64 = 0x0000002b # macro -SQ_S_MUL_HI_U32 = 0x0000002c # macro -SQ_S_MUL_HI_I32 = 0x0000002d # macro -SQ_S_LSHL1_ADD_U32 = 0x0000002e # macro -SQ_S_LSHL2_ADD_U32 = 0x0000002f # macro -SQ_S_LSHL3_ADD_U32 = 0x00000030 # macro -SQ_S_LSHL4_ADD_U32 = 0x00000031 # macro -SQ_S_PACK_LL_B32_B16 = 0x00000032 # macro -SQ_S_PACK_LH_B32_B16 = 0x00000033 # macro -SQ_S_PACK_HH_B32_B16 = 0x00000034 # macro -SQ_FLAT = 0x00000000 # macro -SQ_SCRATCH = 0x00000001 # macro -SQ_GLOBAL = 0x00000002 # macro -SQ_EXEC_LO = 0x0000007e # macro -SQ_EXEC_HI = 0x0000007f # macro -SQ_SRC_64_INT = 0x000000c0 # macro -SQ_SRC_M_1_INT = 0x000000c1 # macro -SQ_SRC_M_2_INT = 0x000000c2 # macro -SQ_SRC_M_3_INT = 0x000000c3 # macro -SQ_SRC_M_4_INT = 0x000000c4 # macro -SQ_SRC_M_5_INT = 0x000000c5 # macro -SQ_SRC_M_6_INT = 0x000000c6 # macro -SQ_SRC_M_7_INT = 0x000000c7 # macro -SQ_SRC_M_8_INT = 0x000000c8 # macro -SQ_SRC_M_9_INT = 0x000000c9 # macro -SQ_SRC_M_10_INT = 0x000000ca # macro -SQ_SRC_M_11_INT = 0x000000cb # macro -SQ_SRC_M_12_INT = 0x000000cc # macro -SQ_SRC_M_13_INT = 0x000000cd # macro -SQ_SRC_M_14_INT = 0x000000ce # macro -SQ_SRC_M_15_INT = 0x000000cf # macro -SQ_SRC_M_16_INT = 0x000000d0 # macro -SQ_SRC_0_5 = 0x000000f0 # macro -SQ_SRC_M_0_5 = 0x000000f1 # macro -SQ_SRC_1 = 0x000000f2 # macro -SQ_SRC_M_1 = 0x000000f3 # macro -SQ_SRC_2 = 0x000000f4 # macro -SQ_SRC_M_2 = 0x000000f5 # macro -SQ_SRC_4 = 0x000000f6 # macro -SQ_SRC_M_4 = 0x000000f7 # macro -SQ_SRC_INV_2PI = 0x000000f8 # macro -SQ_VCC_LO = 0x0000006a # macro -SQ_VCC_HI = 0x0000006b # macro -SQ_EXP_MRT0 = 0x00000000 # macro -SQ_EXP_MRTZ = 0x00000008 # macro -SQ_EXP_NULL = 0x00000009 # macro -SQ_EXP_POS0 = 0x0000000c # macro -SQ_EXP_PARAM0 = 0x00000020 # macro -SQ_S_NOP = 0x00000000 # macro -SQ_S_ENDPGM = 0x00000001 # macro -SQ_S_BRANCH = 0x00000002 # macro -SQ_S_WAKEUP = 0x00000003 # macro -SQ_S_CBRANCH_SCC0 = 0x00000004 # macro -SQ_S_CBRANCH_SCC1 = 0x00000005 # macro -SQ_S_CBRANCH_VCCZ = 0x00000006 # macro -SQ_S_CBRANCH_VCCNZ = 0x00000007 # macro -SQ_S_CBRANCH_EXECZ = 0x00000008 # macro -SQ_S_CBRANCH_EXECNZ = 0x00000009 # macro -SQ_S_BARRIER = 0x0000000a # macro -SQ_S_SETKILL = 0x0000000b # macro -SQ_S_WAITCNT = 0x0000000c # macro -SQ_S_SETHALT = 0x0000000d # macro -SQ_S_SLEEP = 0x0000000e # macro -SQ_S_SETPRIO = 0x0000000f # macro -SQ_S_SENDMSG = 0x00000010 # macro -SQ_S_SENDMSGHALT = 0x00000011 # macro -SQ_S_TRAP = 0x00000012 # macro -SQ_S_ICACHE_INV = 0x00000013 # macro -SQ_S_INCPERFLEVEL = 0x00000014 # macro -SQ_S_DECPERFLEVEL = 0x00000015 # macro -SQ_S_TTRACEDATA = 0x00000016 # macro -SQ_S_CBRANCH_CDBGSYS = 0x00000017 # macro -SQ_S_CBRANCH_CDBGUSER = 0x00000018 # macro -SQ_S_CBRANCH_CDBGSYS_OR_USER = 0x00000019 # macro -SQ_S_CBRANCH_CDBGSYS_AND_USER = 0x0000001a # macro -SQ_S_ENDPGM_SAVED = 0x0000001b # macro -SQ_S_SET_GPR_IDX_OFF = 0x0000001c # macro -SQ_S_SET_GPR_IDX_MODE = 0x0000001d # macro -SQ_S_ENDPGM_ORDERED_PS_DONE = 0x0000001e # macro -SQ_EXP = 0x00000000 # macro -SQ_SRC_POPS_EXITING_WAVE_ID = 0x000000ef # macro -SQ_XNACK_MASK_LO = 0x00000068 # macro -SQ_XNACK_MASK_HI = 0x00000069 # macro -SQ_OMOD_OFF = 0x00000000 # macro -SQ_OMOD_M2 = 0x00000001 # macro -SQ_OMOD_M4 = 0x00000002 # macro -SQ_OMOD_D2 = 0x00000003 # macro -SQ_SRC_EXECZ = 0x000000fc # macro -SQ_F = 0x00000000 # macro -SQ_LT = 0x00000001 # macro -SQ_EQ = 0x00000002 # macro -SQ_LE = 0x00000003 # macro -SQ_GT = 0x00000004 # macro -SQ_NE = 0x00000005 # macro -SQ_GE = 0x00000006 # macro -SQ_T = 0x00000007 # macro -SQ_DPP_BOUND_OFF = 0x00000000 # macro -SQ_DPP_BOUND_ZERO = 0x00000001 # macro -SQ_M0 = 0x0000007c # macro -SQ_MSG_INTERRUPT = 0x00000001 # macro -SQ_MSG_GS = 0x00000002 # macro -SQ_MSG_GS_DONE = 0x00000003 # macro -SQ_MSG_SAVEWAVE = 0x00000004 # macro -SQ_MSG_STALL_WAVE_GEN = 0x00000005 # macro -SQ_MSG_HALT_WAVES = 0x00000006 # macro -SQ_MSG_ORDERED_PS_DONE = 0x00000007 # macro -SQ_MSG_EARLY_PRIM_DEALLOC = 0x00000008 # macro -SQ_MSG_GS_ALLOC_REQ = 0x00000009 # macro -SQ_MSG_SYSMSG = 0x0000000f # macro -SQ_PARAM_P10 = 0x00000000 # macro -SQ_PARAM_P20 = 0x00000001 # macro -SQ_PARAM_P0 = 0x00000002 # macro -SQ_V_OPC_OFFSET = 0x00000000 # macro -SQ_V_OP2_OFFSET = 0x00000100 # macro -SQ_V_OP1_OFFSET = 0x00000140 # macro -SQ_V_INTRP_OFFSET = 0x00000270 # macro -SQ_V_OP3P_OFFSET = 0x00000380 # macro -SQ_SRC_SDWA = 0x000000f9 # macro -SQ_SRC_SHARED_BASE = 0x000000eb # macro -SQ_SRC_SHARED_LIMIT = 0x000000ec # macro -SQ_SRC_PRIVATE_BASE = 0x000000ed # macro -SQ_SRC_PRIVATE_LIMIT = 0x000000ee # macro -SQ_LG = 0x00000005 # macro -SQ_O = 0x00000007 # macro -SQ_U = 0x00000008 # macro -SQ_NGE = 0x00000009 # macro -SQ_NLG = 0x0000000a # macro -SQ_NGT = 0x0000000b # macro -SQ_NLE = 0x0000000c # macro -SQ_NEQ = 0x0000000d # macro -SQ_NLT = 0x0000000e # macro -SQ_TRU = 0x0000000f # macro -SQ_SDWA_UNUSED_PAD = 0x00000000 # macro -SQ_SDWA_UNUSED_SEXT = 0x00000001 # macro -SQ_SDWA_UNUSED_PRESERVE = 0x00000002 # macro -SQ_SRC_SCC = 0x000000fd # macro -SQ_V_CMP_CLASS_F32 = 0x00000010 # macro -SQ_V_CMPX_CLASS_F32 = 0x00000011 # macro -SQ_V_CMP_CLASS_F64 = 0x00000012 # macro -SQ_V_CMPX_CLASS_F64 = 0x00000013 # macro -SQ_V_CMP_CLASS_F16 = 0x00000014 # macro -SQ_V_CMPX_CLASS_F16 = 0x00000015 # macro -SQ_V_CMP_F_F16 = 0x00000020 # macro -SQ_V_CMP_LT_F16 = 0x00000021 # macro -SQ_V_CMP_EQ_F16 = 0x00000022 # macro -SQ_V_CMP_LE_F16 = 0x00000023 # macro -SQ_V_CMP_GT_F16 = 0x00000024 # macro -SQ_V_CMP_LG_F16 = 0x00000025 # macro -SQ_V_CMP_GE_F16 = 0x00000026 # macro -SQ_V_CMP_O_F16 = 0x00000027 # macro -SQ_V_CMP_U_F16 = 0x00000028 # macro -SQ_V_CMP_NGE_F16 = 0x00000029 # macro -SQ_V_CMP_NLG_F16 = 0x0000002a # macro -SQ_V_CMP_NGT_F16 = 0x0000002b # macro -SQ_V_CMP_NLE_F16 = 0x0000002c # macro -SQ_V_CMP_NEQ_F16 = 0x0000002d # macro -SQ_V_CMP_NLT_F16 = 0x0000002e # macro -SQ_V_CMP_TRU_F16 = 0x0000002f # macro -SQ_V_CMPX_F_F16 = 0x00000030 # macro -SQ_V_CMPX_LT_F16 = 0x00000031 # macro -SQ_V_CMPX_EQ_F16 = 0x00000032 # macro -SQ_V_CMPX_LE_F16 = 0x00000033 # macro -SQ_V_CMPX_GT_F16 = 0x00000034 # macro -SQ_V_CMPX_LG_F16 = 0x00000035 # macro -SQ_V_CMPX_GE_F16 = 0x00000036 # macro -SQ_V_CMPX_O_F16 = 0x00000037 # macro -SQ_V_CMPX_U_F16 = 0x00000038 # macro -SQ_V_CMPX_NGE_F16 = 0x00000039 # macro -SQ_V_CMPX_NLG_F16 = 0x0000003a # macro -SQ_V_CMPX_NGT_F16 = 0x0000003b # macro -SQ_V_CMPX_NLE_F16 = 0x0000003c # macro -SQ_V_CMPX_NEQ_F16 = 0x0000003d # macro -SQ_V_CMPX_NLT_F16 = 0x0000003e # macro -SQ_V_CMPX_TRU_F16 = 0x0000003f # macro -SQ_V_CMP_F_F32 = 0x00000040 # macro -SQ_V_CMP_LT_F32 = 0x00000041 # macro -SQ_V_CMP_EQ_F32 = 0x00000042 # macro -SQ_V_CMP_LE_F32 = 0x00000043 # macro -SQ_V_CMP_GT_F32 = 0x00000044 # macro -SQ_V_CMP_LG_F32 = 0x00000045 # macro -SQ_V_CMP_GE_F32 = 0x00000046 # macro -SQ_V_CMP_O_F32 = 0x00000047 # macro -SQ_V_CMP_U_F32 = 0x00000048 # macro -SQ_V_CMP_NGE_F32 = 0x00000049 # macro -SQ_V_CMP_NLG_F32 = 0x0000004a # macro -SQ_V_CMP_NGT_F32 = 0x0000004b # macro -SQ_V_CMP_NLE_F32 = 0x0000004c # macro -SQ_V_CMP_NEQ_F32 = 0x0000004d # macro -SQ_V_CMP_NLT_F32 = 0x0000004e # macro -SQ_V_CMP_TRU_F32 = 0x0000004f # macro -SQ_V_CMPX_F_F32 = 0x00000050 # macro -SQ_V_CMPX_LT_F32 = 0x00000051 # macro -SQ_V_CMPX_EQ_F32 = 0x00000052 # macro -SQ_V_CMPX_LE_F32 = 0x00000053 # macro -SQ_V_CMPX_GT_F32 = 0x00000054 # macro -SQ_V_CMPX_LG_F32 = 0x00000055 # macro -SQ_V_CMPX_GE_F32 = 0x00000056 # macro -SQ_V_CMPX_O_F32 = 0x00000057 # macro -SQ_V_CMPX_U_F32 = 0x00000058 # macro -SQ_V_CMPX_NGE_F32 = 0x00000059 # macro -SQ_V_CMPX_NLG_F32 = 0x0000005a # macro -SQ_V_CMPX_NGT_F32 = 0x0000005b # macro -SQ_V_CMPX_NLE_F32 = 0x0000005c # macro -SQ_V_CMPX_NEQ_F32 = 0x0000005d # macro -SQ_V_CMPX_NLT_F32 = 0x0000005e # macro -SQ_V_CMPX_TRU_F32 = 0x0000005f # macro -SQ_V_CMP_F_F64 = 0x00000060 # macro -SQ_V_CMP_LT_F64 = 0x00000061 # macro -SQ_V_CMP_EQ_F64 = 0x00000062 # macro -SQ_V_CMP_LE_F64 = 0x00000063 # macro -SQ_V_CMP_GT_F64 = 0x00000064 # macro -SQ_V_CMP_LG_F64 = 0x00000065 # macro -SQ_V_CMP_GE_F64 = 0x00000066 # macro -SQ_V_CMP_O_F64 = 0x00000067 # macro -SQ_V_CMP_U_F64 = 0x00000068 # macro -SQ_V_CMP_NGE_F64 = 0x00000069 # macro -SQ_V_CMP_NLG_F64 = 0x0000006a # macro -SQ_V_CMP_NGT_F64 = 0x0000006b # macro -SQ_V_CMP_NLE_F64 = 0x0000006c # macro -SQ_V_CMP_NEQ_F64 = 0x0000006d # macro -SQ_V_CMP_NLT_F64 = 0x0000006e # macro -SQ_V_CMP_TRU_F64 = 0x0000006f # macro -SQ_V_CMPX_F_F64 = 0x00000070 # macro -SQ_V_CMPX_LT_F64 = 0x00000071 # macro -SQ_V_CMPX_EQ_F64 = 0x00000072 # macro -SQ_V_CMPX_LE_F64 = 0x00000073 # macro -SQ_V_CMPX_GT_F64 = 0x00000074 # macro -SQ_V_CMPX_LG_F64 = 0x00000075 # macro -SQ_V_CMPX_GE_F64 = 0x00000076 # macro -SQ_V_CMPX_O_F64 = 0x00000077 # macro -SQ_V_CMPX_U_F64 = 0x00000078 # macro -SQ_V_CMPX_NGE_F64 = 0x00000079 # macro -SQ_V_CMPX_NLG_F64 = 0x0000007a # macro -SQ_V_CMPX_NGT_F64 = 0x0000007b # macro -SQ_V_CMPX_NLE_F64 = 0x0000007c # macro -SQ_V_CMPX_NEQ_F64 = 0x0000007d # macro -SQ_V_CMPX_NLT_F64 = 0x0000007e # macro -SQ_V_CMPX_TRU_F64 = 0x0000007f # macro -SQ_V_CMP_F_I16 = 0x000000a0 # macro -SQ_V_CMP_LT_I16 = 0x000000a1 # macro -SQ_V_CMP_EQ_I16 = 0x000000a2 # macro -SQ_V_CMP_LE_I16 = 0x000000a3 # macro -SQ_V_CMP_GT_I16 = 0x000000a4 # macro -SQ_V_CMP_NE_I16 = 0x000000a5 # macro -SQ_V_CMP_GE_I16 = 0x000000a6 # macro -SQ_V_CMP_T_I16 = 0x000000a7 # macro -SQ_V_CMP_F_U16 = 0x000000a8 # macro -SQ_V_CMP_LT_U16 = 0x000000a9 # macro -SQ_V_CMP_EQ_U16 = 0x000000aa # macro -SQ_V_CMP_LE_U16 = 0x000000ab # macro -SQ_V_CMP_GT_U16 = 0x000000ac # macro -SQ_V_CMP_NE_U16 = 0x000000ad # macro -SQ_V_CMP_GE_U16 = 0x000000ae # macro -SQ_V_CMP_T_U16 = 0x000000af # macro -SQ_V_CMPX_F_I16 = 0x000000b0 # macro -SQ_V_CMPX_LT_I16 = 0x000000b1 # macro -SQ_V_CMPX_EQ_I16 = 0x000000b2 # macro -SQ_V_CMPX_LE_I16 = 0x000000b3 # macro -SQ_V_CMPX_GT_I16 = 0x000000b4 # macro -SQ_V_CMPX_NE_I16 = 0x000000b5 # macro -SQ_V_CMPX_GE_I16 = 0x000000b6 # macro -SQ_V_CMPX_T_I16 = 0x000000b7 # macro -SQ_V_CMPX_F_U16 = 0x000000b8 # macro -SQ_V_CMPX_LT_U16 = 0x000000b9 # macro -SQ_V_CMPX_EQ_U16 = 0x000000ba # macro -SQ_V_CMPX_LE_U16 = 0x000000bb # macro -SQ_V_CMPX_GT_U16 = 0x000000bc # macro -SQ_V_CMPX_NE_U16 = 0x000000bd # macro -SQ_V_CMPX_GE_U16 = 0x000000be # macro -SQ_V_CMPX_T_U16 = 0x000000bf # macro -SQ_V_CMP_F_I32 = 0x000000c0 # macro -SQ_V_CMP_LT_I32 = 0x000000c1 # macro -SQ_V_CMP_EQ_I32 = 0x000000c2 # macro -SQ_V_CMP_LE_I32 = 0x000000c3 # macro -SQ_V_CMP_GT_I32 = 0x000000c4 # macro -SQ_V_CMP_NE_I32 = 0x000000c5 # macro -SQ_V_CMP_GE_I32 = 0x000000c6 # macro -SQ_V_CMP_T_I32 = 0x000000c7 # macro -SQ_V_CMP_F_U32 = 0x000000c8 # macro -SQ_V_CMP_LT_U32 = 0x000000c9 # macro -SQ_V_CMP_EQ_U32 = 0x000000ca # macro -SQ_V_CMP_LE_U32 = 0x000000cb # macro -SQ_V_CMP_GT_U32 = 0x000000cc # macro -SQ_V_CMP_NE_U32 = 0x000000cd # macro -SQ_V_CMP_GE_U32 = 0x000000ce # macro -SQ_V_CMP_T_U32 = 0x000000cf # macro -SQ_V_CMPX_F_I32 = 0x000000d0 # macro -SQ_V_CMPX_LT_I32 = 0x000000d1 # macro -SQ_V_CMPX_EQ_I32 = 0x000000d2 # macro -SQ_V_CMPX_LE_I32 = 0x000000d3 # macro -SQ_V_CMPX_GT_I32 = 0x000000d4 # macro -SQ_V_CMPX_NE_I32 = 0x000000d5 # macro -SQ_V_CMPX_GE_I32 = 0x000000d6 # macro -SQ_V_CMPX_T_I32 = 0x000000d7 # macro -SQ_V_CMPX_F_U32 = 0x000000d8 # macro -SQ_V_CMPX_LT_U32 = 0x000000d9 # macro -SQ_V_CMPX_EQ_U32 = 0x000000da # macro -SQ_V_CMPX_LE_U32 = 0x000000db # macro -SQ_V_CMPX_GT_U32 = 0x000000dc # macro -SQ_V_CMPX_NE_U32 = 0x000000dd # macro -SQ_V_CMPX_GE_U32 = 0x000000de # macro -SQ_V_CMPX_T_U32 = 0x000000df # macro -SQ_V_CMP_F_I64 = 0x000000e0 # macro -SQ_V_CMP_LT_I64 = 0x000000e1 # macro -SQ_V_CMP_EQ_I64 = 0x000000e2 # macro -SQ_V_CMP_LE_I64 = 0x000000e3 # macro -SQ_V_CMP_GT_I64 = 0x000000e4 # macro -SQ_V_CMP_NE_I64 = 0x000000e5 # macro -SQ_V_CMP_GE_I64 = 0x000000e6 # macro -SQ_V_CMP_T_I64 = 0x000000e7 # macro -SQ_V_CMP_F_U64 = 0x000000e8 # macro -SQ_V_CMP_LT_U64 = 0x000000e9 # macro -SQ_V_CMP_EQ_U64 = 0x000000ea # macro -SQ_V_CMP_LE_U64 = 0x000000eb # macro -SQ_V_CMP_GT_U64 = 0x000000ec # macro -SQ_V_CMP_NE_U64 = 0x000000ed # macro -SQ_V_CMP_GE_U64 = 0x000000ee # macro -SQ_V_CMP_T_U64 = 0x000000ef # macro -SQ_V_CMPX_F_I64 = 0x000000f0 # macro -SQ_V_CMPX_LT_I64 = 0x000000f1 # macro -SQ_V_CMPX_EQ_I64 = 0x000000f2 # macro -SQ_V_CMPX_LE_I64 = 0x000000f3 # macro -SQ_V_CMPX_GT_I64 = 0x000000f4 # macro -SQ_V_CMPX_NE_I64 = 0x000000f5 # macro -SQ_V_CMPX_GE_I64 = 0x000000f6 # macro -SQ_V_CMPX_T_I64 = 0x000000f7 # macro -SQ_V_CMPX_F_U64 = 0x000000f8 # macro -SQ_V_CMPX_LT_U64 = 0x000000f9 # macro -SQ_V_CMPX_EQ_U64 = 0x000000fa # macro -SQ_V_CMPX_LE_U64 = 0x000000fb # macro -SQ_V_CMPX_GT_U64 = 0x000000fc # macro -SQ_V_CMPX_NE_U64 = 0x000000fd # macro -SQ_V_CMPX_GE_U64 = 0x000000fe # macro -SQ_V_CMPX_T_U64 = 0x000000ff # macro -SQ_GS_OP_NOP = 0x00000000 # macro -SQ_GS_OP_CUT = 0x00000001 # macro -SQ_GS_OP_EMIT = 0x00000002 # macro -SQ_GS_OP_EMIT_CUT = 0x00000003 # macro -SQ_SRC_LDS_DIRECT = 0x000000fe # macro -SQ_ATTR0 = 0x00000000 # macro -SQ_EXP_GDS0 = 0x00000018 # macro -SQ_S_CMP_EQ_I32 = 0x00000000 # macro -SQ_S_CMP_LG_I32 = 0x00000001 # macro -SQ_S_CMP_GT_I32 = 0x00000002 # macro -SQ_S_CMP_GE_I32 = 0x00000003 # macro -SQ_S_CMP_LT_I32 = 0x00000004 # macro -SQ_S_CMP_LE_I32 = 0x00000005 # macro -SQ_S_CMP_EQ_U32 = 0x00000006 # macro -SQ_S_CMP_LG_U32 = 0x00000007 # macro -SQ_S_CMP_GT_U32 = 0x00000008 # macro -SQ_S_CMP_GE_U32 = 0x00000009 # macro -SQ_S_CMP_LT_U32 = 0x0000000a # macro -SQ_S_CMP_LE_U32 = 0x0000000b # macro -SQ_S_BITCMP0_B32 = 0x0000000c # macro -SQ_S_BITCMP1_B32 = 0x0000000d # macro -SQ_S_BITCMP0_B64 = 0x0000000e # macro -SQ_S_BITCMP1_B64 = 0x0000000f # macro -SQ_S_SETVSKIP = 0x00000010 # macro -SQ_S_SET_GPR_IDX_ON = 0x00000011 # macro -SQ_S_CMP_EQ_U64 = 0x00000012 # macro -SQ_S_CMP_LG_U64 = 0x00000013 # macro -SQ_TTMP0 = 0x0000006c # macro -SQ_TTMP1 = 0x0000006d # macro -SQ_TTMP2 = 0x0000006e # macro -SQ_TTMP3 = 0x0000006f # macro -SQ_TTMP4 = 0x00000070 # macro -SQ_TTMP5 = 0x00000071 # macro -SQ_TTMP6 = 0x00000072 # macro -SQ_TTMP7 = 0x00000073 # macro -SQ_TTMP8 = 0x00000074 # macro -SQ_TTMP9 = 0x00000075 # macro -SQ_TTMP10 = 0x00000076 # macro -SQ_TTMP11 = 0x00000077 # macro -SQ_TTMP12 = 0x00000078 # macro -SQ_TTMP13 = 0x00000079 # macro -SQ_TTMP14 = 0x0000007a # macro -SQ_TTMP15 = 0x0000007b # macro -SQ_SRC_VGPR0 = 0x00000100 # macro -SQ_BUFFER_LOAD_FORMAT_X = 0x00000000 # macro -SQ_BUFFER_LOAD_FORMAT_XY = 0x00000001 # macro -SQ_BUFFER_LOAD_FORMAT_XYZ = 0x00000002 # macro -SQ_BUFFER_LOAD_FORMAT_XYZW = 0x00000003 # macro -SQ_BUFFER_STORE_FORMAT_X = 0x00000004 # macro -SQ_BUFFER_STORE_FORMAT_XY = 0x00000005 # macro -SQ_BUFFER_STORE_FORMAT_XYZ = 0x00000006 # macro -SQ_BUFFER_STORE_FORMAT_XYZW = 0x00000007 # macro -SQ_BUFFER_LOAD_FORMAT_D16_X = 0x00000008 # macro -SQ_BUFFER_LOAD_FORMAT_D16_XY = 0x00000009 # macro -SQ_BUFFER_LOAD_FORMAT_D16_XYZ = 0x0000000a # macro -SQ_BUFFER_LOAD_FORMAT_D16_XYZW = 0x0000000b # macro -SQ_BUFFER_STORE_FORMAT_D16_X = 0x0000000c # macro -SQ_BUFFER_STORE_FORMAT_D16_XY = 0x0000000d # macro -SQ_BUFFER_STORE_FORMAT_D16_XYZ = 0x0000000e # macro -SQ_BUFFER_STORE_FORMAT_D16_XYZW = 0x0000000f # macro -SQ_BUFFER_LOAD_UBYTE = 0x00000010 # macro -SQ_BUFFER_LOAD_SBYTE = 0x00000011 # macro -SQ_BUFFER_LOAD_USHORT = 0x00000012 # macro -SQ_BUFFER_LOAD_SSHORT = 0x00000013 # macro -SQ_BUFFER_LOAD_DWORD = 0x00000014 # macro -SQ_BUFFER_LOAD_DWORDX2 = 0x00000015 # macro -SQ_BUFFER_LOAD_DWORDX3 = 0x00000016 # macro -SQ_BUFFER_LOAD_DWORDX4 = 0x00000017 # macro -SQ_BUFFER_STORE_BYTE = 0x00000018 # macro -SQ_BUFFER_STORE_SHORT = 0x0000001a # macro -SQ_BUFFER_STORE_DWORD = 0x0000001c # macro -SQ_BUFFER_STORE_DWORDX2 = 0x0000001d # macro -SQ_BUFFER_STORE_DWORDX3 = 0x0000001e # macro -SQ_BUFFER_STORE_DWORDX4 = 0x0000001f # macro -SQ_BUFFER_STORE_LDS_DWORD = 0x0000003d # macro -SQ_BUFFER_WBINVL1 = 0x0000003e # macro -SQ_BUFFER_WBINVL1_VOL = 0x0000003f # macro -SQ_BUFFER_ATOMIC_SWAP = 0x00000040 # macro -SQ_BUFFER_ATOMIC_CMPSWAP = 0x00000041 # macro -SQ_BUFFER_ATOMIC_ADD = 0x00000042 # macro -SQ_BUFFER_ATOMIC_SUB = 0x00000043 # macro -SQ_BUFFER_ATOMIC_SMIN = 0x00000044 # macro -SQ_BUFFER_ATOMIC_UMIN = 0x00000045 # macro -SQ_BUFFER_ATOMIC_SMAX = 0x00000046 # macro -SQ_BUFFER_ATOMIC_UMAX = 0x00000047 # macro -SQ_BUFFER_ATOMIC_AND = 0x00000048 # macro -SQ_BUFFER_ATOMIC_OR = 0x00000049 # macro -SQ_BUFFER_ATOMIC_XOR = 0x0000004a # macro -SQ_BUFFER_ATOMIC_INC = 0x0000004b # macro -SQ_BUFFER_ATOMIC_DEC = 0x0000004c # macro -SQ_BUFFER_ATOMIC_SWAP_X2 = 0x00000060 # macro -SQ_BUFFER_ATOMIC_CMPSWAP_X2 = 0x00000061 # macro -SQ_BUFFER_ATOMIC_ADD_X2 = 0x00000062 # macro -SQ_BUFFER_ATOMIC_SUB_X2 = 0x00000063 # macro -SQ_BUFFER_ATOMIC_SMIN_X2 = 0x00000064 # macro -SQ_BUFFER_ATOMIC_UMIN_X2 = 0x00000065 # macro -SQ_BUFFER_ATOMIC_SMAX_X2 = 0x00000066 # macro -SQ_BUFFER_ATOMIC_UMAX_X2 = 0x00000067 # macro -SQ_BUFFER_ATOMIC_AND_X2 = 0x00000068 # macro -SQ_BUFFER_ATOMIC_OR_X2 = 0x00000069 # macro -SQ_BUFFER_ATOMIC_XOR_X2 = 0x0000006a # macro -SQ_BUFFER_ATOMIC_INC_X2 = 0x0000006b # macro -SQ_BUFFER_ATOMIC_DEC_X2 = 0x0000006c # macro -SQ_SDWA_BYTE_0 = 0x00000000 # macro -SQ_SDWA_BYTE_1 = 0x00000001 # macro -SQ_SDWA_BYTE_2 = 0x00000002 # macro -SQ_SDWA_BYTE_3 = 0x00000003 # macro -SQ_SDWA_WORD_0 = 0x00000004 # macro -SQ_SDWA_WORD_1 = 0x00000005 # macro -SQ_SDWA_DWORD = 0x00000006 # macro -ROM_SIGNATURE = 0x0000aa55 # macro - -# values for enumeration 'GDS_PERFCOUNT_SELECT' -GDS_PERFCOUNT_SELECT__enumvalues = { - 0: 'GDS_PERF_SEL_DS_ADDR_CONFL', - 1: 'GDS_PERF_SEL_DS_BANK_CONFL', - 2: 'GDS_PERF_SEL_WBUF_FLUSH', - 3: 'GDS_PERF_SEL_WR_COMP', - 4: 'GDS_PERF_SEL_WBUF_WR', - 5: 'GDS_PERF_SEL_RBUF_HIT', - 6: 'GDS_PERF_SEL_RBUF_MISS', - 7: 'GDS_PERF_SEL_SE0_SH0_NORET', - 8: 'GDS_PERF_SEL_SE0_SH0_RET', - 9: 'GDS_PERF_SEL_SE0_SH0_ORD_CNT', - 10: 'GDS_PERF_SEL_SE0_SH0_2COMP_REQ', - 11: 'GDS_PERF_SEL_SE0_SH0_ORD_WAVE_VALID', - 12: 'GDS_PERF_SEL_SE0_SH0_GDS_DATA_VALID', - 13: 'GDS_PERF_SEL_SE0_SH0_GDS_STALL_BY_ORD', - 14: 'GDS_PERF_SEL_SE0_SH0_GDS_WR_OP', - 15: 'GDS_PERF_SEL_SE0_SH0_GDS_RD_OP', - 16: 'GDS_PERF_SEL_SE0_SH0_GDS_ATOM_OP', - 17: 'GDS_PERF_SEL_SE0_SH0_GDS_REL_OP', - 18: 'GDS_PERF_SEL_SE0_SH0_GDS_CMPXCH_OP', - 19: 'GDS_PERF_SEL_SE0_SH0_GDS_BYTE_OP', - 20: 'GDS_PERF_SEL_SE0_SH0_GDS_SHORT_OP', - 21: 'GDS_PERF_SEL_SE0_SH1_NORET', - 22: 'GDS_PERF_SEL_SE0_SH1_RET', - 23: 'GDS_PERF_SEL_SE0_SH1_ORD_CNT', - 24: 'GDS_PERF_SEL_SE0_SH1_2COMP_REQ', - 25: 'GDS_PERF_SEL_SE0_SH1_ORD_WAVE_VALID', - 26: 'GDS_PERF_SEL_SE0_SH1_GDS_DATA_VALID', - 27: 'GDS_PERF_SEL_SE0_SH1_GDS_STALL_BY_ORD', - 28: 'GDS_PERF_SEL_SE0_SH1_GDS_WR_OP', - 29: 'GDS_PERF_SEL_SE0_SH1_GDS_RD_OP', - 30: 'GDS_PERF_SEL_SE0_SH1_GDS_ATOM_OP', - 31: 'GDS_PERF_SEL_SE0_SH1_GDS_REL_OP', - 32: 'GDS_PERF_SEL_SE0_SH1_GDS_CMPXCH_OP', - 33: 'GDS_PERF_SEL_SE0_SH1_GDS_BYTE_OP', - 34: 'GDS_PERF_SEL_SE0_SH1_GDS_SHORT_OP', - 35: 'GDS_PERF_SEL_SE1_SH0_NORET', - 36: 'GDS_PERF_SEL_SE1_SH0_RET', - 37: 'GDS_PERF_SEL_SE1_SH0_ORD_CNT', - 38: 'GDS_PERF_SEL_SE1_SH0_2COMP_REQ', - 39: 'GDS_PERF_SEL_SE1_SH0_ORD_WAVE_VALID', - 40: 'GDS_PERF_SEL_SE1_SH0_GDS_DATA_VALID', - 41: 'GDS_PERF_SEL_SE1_SH0_GDS_STALL_BY_ORD', - 42: 'GDS_PERF_SEL_SE1_SH0_GDS_WR_OP', - 43: 'GDS_PERF_SEL_SE1_SH0_GDS_RD_OP', - 44: 'GDS_PERF_SEL_SE1_SH0_GDS_ATOM_OP', - 45: 'GDS_PERF_SEL_SE1_SH0_GDS_REL_OP', - 46: 'GDS_PERF_SEL_SE1_SH0_GDS_CMPXCH_OP', - 47: 'GDS_PERF_SEL_SE1_SH0_GDS_BYTE_OP', - 48: 'GDS_PERF_SEL_SE1_SH0_GDS_SHORT_OP', - 49: 'GDS_PERF_SEL_SE1_SH1_NORET', - 50: 'GDS_PERF_SEL_SE1_SH1_RET', - 51: 'GDS_PERF_SEL_SE1_SH1_ORD_CNT', - 52: 'GDS_PERF_SEL_SE1_SH1_2COMP_REQ', - 53: 'GDS_PERF_SEL_SE1_SH1_ORD_WAVE_VALID', - 54: 'GDS_PERF_SEL_SE1_SH1_GDS_DATA_VALID', - 55: 'GDS_PERF_SEL_SE1_SH1_GDS_STALL_BY_ORD', - 56: 'GDS_PERF_SEL_SE1_SH1_GDS_WR_OP', - 57: 'GDS_PERF_SEL_SE1_SH1_GDS_RD_OP', - 58: 'GDS_PERF_SEL_SE1_SH1_GDS_ATOM_OP', - 59: 'GDS_PERF_SEL_SE1_SH1_GDS_REL_OP', - 60: 'GDS_PERF_SEL_SE1_SH1_GDS_CMPXCH_OP', - 61: 'GDS_PERF_SEL_SE1_SH1_GDS_BYTE_OP', - 62: 'GDS_PERF_SEL_SE1_SH1_GDS_SHORT_OP', - 63: 'GDS_PERF_SEL_SE2_SH0_NORET', - 64: 'GDS_PERF_SEL_SE2_SH0_RET', - 65: 'GDS_PERF_SEL_SE2_SH0_ORD_CNT', - 66: 'GDS_PERF_SEL_SE2_SH0_2COMP_REQ', - 67: 'GDS_PERF_SEL_SE2_SH0_ORD_WAVE_VALID', - 68: 'GDS_PERF_SEL_SE2_SH0_GDS_DATA_VALID', - 69: 'GDS_PERF_SEL_SE2_SH0_GDS_STALL_BY_ORD', - 70: 'GDS_PERF_SEL_SE2_SH0_GDS_WR_OP', - 71: 'GDS_PERF_SEL_SE2_SH0_GDS_RD_OP', - 72: 'GDS_PERF_SEL_SE2_SH0_GDS_ATOM_OP', - 73: 'GDS_PERF_SEL_SE2_SH0_GDS_REL_OP', - 74: 'GDS_PERF_SEL_SE2_SH0_GDS_CMPXCH_OP', - 75: 'GDS_PERF_SEL_SE2_SH0_GDS_BYTE_OP', - 76: 'GDS_PERF_SEL_SE2_SH0_GDS_SHORT_OP', - 77: 'GDS_PERF_SEL_SE2_SH1_NORET', - 78: 'GDS_PERF_SEL_SE2_SH1_RET', - 79: 'GDS_PERF_SEL_SE2_SH1_ORD_CNT', - 80: 'GDS_PERF_SEL_SE2_SH1_2COMP_REQ', - 81: 'GDS_PERF_SEL_SE2_SH1_ORD_WAVE_VALID', - 82: 'GDS_PERF_SEL_SE2_SH1_GDS_DATA_VALID', - 83: 'GDS_PERF_SEL_SE2_SH1_GDS_STALL_BY_ORD', - 84: 'GDS_PERF_SEL_SE2_SH1_GDS_WR_OP', - 85: 'GDS_PERF_SEL_SE2_SH1_GDS_RD_OP', - 86: 'GDS_PERF_SEL_SE2_SH1_GDS_ATOM_OP', - 87: 'GDS_PERF_SEL_SE2_SH1_GDS_REL_OP', - 88: 'GDS_PERF_SEL_SE2_SH1_GDS_CMPXCH_OP', - 89: 'GDS_PERF_SEL_SE2_SH1_GDS_BYTE_OP', - 90: 'GDS_PERF_SEL_SE2_SH1_GDS_SHORT_OP', - 91: 'GDS_PERF_SEL_SE3_SH0_NORET', - 92: 'GDS_PERF_SEL_SE3_SH0_RET', - 93: 'GDS_PERF_SEL_SE3_SH0_ORD_CNT', - 94: 'GDS_PERF_SEL_SE3_SH0_2COMP_REQ', - 95: 'GDS_PERF_SEL_SE3_SH0_ORD_WAVE_VALID', - 96: 'GDS_PERF_SEL_SE3_SH0_GDS_DATA_VALID', - 97: 'GDS_PERF_SEL_SE3_SH0_GDS_STALL_BY_ORD', - 98: 'GDS_PERF_SEL_SE3_SH0_GDS_WR_OP', - 99: 'GDS_PERF_SEL_SE3_SH0_GDS_RD_OP', - 100: 'GDS_PERF_SEL_SE3_SH0_GDS_ATOM_OP', - 101: 'GDS_PERF_SEL_SE3_SH0_GDS_REL_OP', - 102: 'GDS_PERF_SEL_SE3_SH0_GDS_CMPXCH_OP', - 103: 'GDS_PERF_SEL_SE3_SH0_GDS_BYTE_OP', - 104: 'GDS_PERF_SEL_SE3_SH0_GDS_SHORT_OP', - 105: 'GDS_PERF_SEL_SE3_SH1_NORET', - 106: 'GDS_PERF_SEL_SE3_SH1_RET', - 107: 'GDS_PERF_SEL_SE3_SH1_ORD_CNT', - 108: 'GDS_PERF_SEL_SE3_SH1_2COMP_REQ', - 109: 'GDS_PERF_SEL_SE3_SH1_ORD_WAVE_VALID', - 110: 'GDS_PERF_SEL_SE3_SH1_GDS_DATA_VALID', - 111: 'GDS_PERF_SEL_SE3_SH1_GDS_STALL_BY_ORD', - 112: 'GDS_PERF_SEL_SE3_SH1_GDS_WR_OP', - 113: 'GDS_PERF_SEL_SE3_SH1_GDS_RD_OP', - 114: 'GDS_PERF_SEL_SE3_SH1_GDS_ATOM_OP', - 115: 'GDS_PERF_SEL_SE3_SH1_GDS_REL_OP', - 116: 'GDS_PERF_SEL_SE3_SH1_GDS_CMPXCH_OP', - 117: 'GDS_PERF_SEL_SE3_SH1_GDS_BYTE_OP', - 118: 'GDS_PERF_SEL_SE3_SH1_GDS_SHORT_OP', - 119: 'GDS_PERF_SEL_GWS_RELEASED', - 120: 'GDS_PERF_SEL_GWS_BYPASS', -} -GDS_PERF_SEL_DS_ADDR_CONFL = 0 -GDS_PERF_SEL_DS_BANK_CONFL = 1 -GDS_PERF_SEL_WBUF_FLUSH = 2 -GDS_PERF_SEL_WR_COMP = 3 -GDS_PERF_SEL_WBUF_WR = 4 -GDS_PERF_SEL_RBUF_HIT = 5 -GDS_PERF_SEL_RBUF_MISS = 6 -GDS_PERF_SEL_SE0_SH0_NORET = 7 -GDS_PERF_SEL_SE0_SH0_RET = 8 -GDS_PERF_SEL_SE0_SH0_ORD_CNT = 9 -GDS_PERF_SEL_SE0_SH0_2COMP_REQ = 10 -GDS_PERF_SEL_SE0_SH0_ORD_WAVE_VALID = 11 -GDS_PERF_SEL_SE0_SH0_GDS_DATA_VALID = 12 -GDS_PERF_SEL_SE0_SH0_GDS_STALL_BY_ORD = 13 -GDS_PERF_SEL_SE0_SH0_GDS_WR_OP = 14 -GDS_PERF_SEL_SE0_SH0_GDS_RD_OP = 15 -GDS_PERF_SEL_SE0_SH0_GDS_ATOM_OP = 16 -GDS_PERF_SEL_SE0_SH0_GDS_REL_OP = 17 -GDS_PERF_SEL_SE0_SH0_GDS_CMPXCH_OP = 18 -GDS_PERF_SEL_SE0_SH0_GDS_BYTE_OP = 19 -GDS_PERF_SEL_SE0_SH0_GDS_SHORT_OP = 20 -GDS_PERF_SEL_SE0_SH1_NORET = 21 -GDS_PERF_SEL_SE0_SH1_RET = 22 -GDS_PERF_SEL_SE0_SH1_ORD_CNT = 23 -GDS_PERF_SEL_SE0_SH1_2COMP_REQ = 24 -GDS_PERF_SEL_SE0_SH1_ORD_WAVE_VALID = 25 -GDS_PERF_SEL_SE0_SH1_GDS_DATA_VALID = 26 -GDS_PERF_SEL_SE0_SH1_GDS_STALL_BY_ORD = 27 -GDS_PERF_SEL_SE0_SH1_GDS_WR_OP = 28 -GDS_PERF_SEL_SE0_SH1_GDS_RD_OP = 29 -GDS_PERF_SEL_SE0_SH1_GDS_ATOM_OP = 30 -GDS_PERF_SEL_SE0_SH1_GDS_REL_OP = 31 -GDS_PERF_SEL_SE0_SH1_GDS_CMPXCH_OP = 32 -GDS_PERF_SEL_SE0_SH1_GDS_BYTE_OP = 33 -GDS_PERF_SEL_SE0_SH1_GDS_SHORT_OP = 34 -GDS_PERF_SEL_SE1_SH0_NORET = 35 -GDS_PERF_SEL_SE1_SH0_RET = 36 -GDS_PERF_SEL_SE1_SH0_ORD_CNT = 37 -GDS_PERF_SEL_SE1_SH0_2COMP_REQ = 38 -GDS_PERF_SEL_SE1_SH0_ORD_WAVE_VALID = 39 -GDS_PERF_SEL_SE1_SH0_GDS_DATA_VALID = 40 -GDS_PERF_SEL_SE1_SH0_GDS_STALL_BY_ORD = 41 -GDS_PERF_SEL_SE1_SH0_GDS_WR_OP = 42 -GDS_PERF_SEL_SE1_SH0_GDS_RD_OP = 43 -GDS_PERF_SEL_SE1_SH0_GDS_ATOM_OP = 44 -GDS_PERF_SEL_SE1_SH0_GDS_REL_OP = 45 -GDS_PERF_SEL_SE1_SH0_GDS_CMPXCH_OP = 46 -GDS_PERF_SEL_SE1_SH0_GDS_BYTE_OP = 47 -GDS_PERF_SEL_SE1_SH0_GDS_SHORT_OP = 48 -GDS_PERF_SEL_SE1_SH1_NORET = 49 -GDS_PERF_SEL_SE1_SH1_RET = 50 -GDS_PERF_SEL_SE1_SH1_ORD_CNT = 51 -GDS_PERF_SEL_SE1_SH1_2COMP_REQ = 52 -GDS_PERF_SEL_SE1_SH1_ORD_WAVE_VALID = 53 -GDS_PERF_SEL_SE1_SH1_GDS_DATA_VALID = 54 -GDS_PERF_SEL_SE1_SH1_GDS_STALL_BY_ORD = 55 -GDS_PERF_SEL_SE1_SH1_GDS_WR_OP = 56 -GDS_PERF_SEL_SE1_SH1_GDS_RD_OP = 57 -GDS_PERF_SEL_SE1_SH1_GDS_ATOM_OP = 58 -GDS_PERF_SEL_SE1_SH1_GDS_REL_OP = 59 -GDS_PERF_SEL_SE1_SH1_GDS_CMPXCH_OP = 60 -GDS_PERF_SEL_SE1_SH1_GDS_BYTE_OP = 61 -GDS_PERF_SEL_SE1_SH1_GDS_SHORT_OP = 62 -GDS_PERF_SEL_SE2_SH0_NORET = 63 -GDS_PERF_SEL_SE2_SH0_RET = 64 -GDS_PERF_SEL_SE2_SH0_ORD_CNT = 65 -GDS_PERF_SEL_SE2_SH0_2COMP_REQ = 66 -GDS_PERF_SEL_SE2_SH0_ORD_WAVE_VALID = 67 -GDS_PERF_SEL_SE2_SH0_GDS_DATA_VALID = 68 -GDS_PERF_SEL_SE2_SH0_GDS_STALL_BY_ORD = 69 -GDS_PERF_SEL_SE2_SH0_GDS_WR_OP = 70 -GDS_PERF_SEL_SE2_SH0_GDS_RD_OP = 71 -GDS_PERF_SEL_SE2_SH0_GDS_ATOM_OP = 72 -GDS_PERF_SEL_SE2_SH0_GDS_REL_OP = 73 -GDS_PERF_SEL_SE2_SH0_GDS_CMPXCH_OP = 74 -GDS_PERF_SEL_SE2_SH0_GDS_BYTE_OP = 75 -GDS_PERF_SEL_SE2_SH0_GDS_SHORT_OP = 76 -GDS_PERF_SEL_SE2_SH1_NORET = 77 -GDS_PERF_SEL_SE2_SH1_RET = 78 -GDS_PERF_SEL_SE2_SH1_ORD_CNT = 79 -GDS_PERF_SEL_SE2_SH1_2COMP_REQ = 80 -GDS_PERF_SEL_SE2_SH1_ORD_WAVE_VALID = 81 -GDS_PERF_SEL_SE2_SH1_GDS_DATA_VALID = 82 -GDS_PERF_SEL_SE2_SH1_GDS_STALL_BY_ORD = 83 -GDS_PERF_SEL_SE2_SH1_GDS_WR_OP = 84 -GDS_PERF_SEL_SE2_SH1_GDS_RD_OP = 85 -GDS_PERF_SEL_SE2_SH1_GDS_ATOM_OP = 86 -GDS_PERF_SEL_SE2_SH1_GDS_REL_OP = 87 -GDS_PERF_SEL_SE2_SH1_GDS_CMPXCH_OP = 88 -GDS_PERF_SEL_SE2_SH1_GDS_BYTE_OP = 89 -GDS_PERF_SEL_SE2_SH1_GDS_SHORT_OP = 90 -GDS_PERF_SEL_SE3_SH0_NORET = 91 -GDS_PERF_SEL_SE3_SH0_RET = 92 -GDS_PERF_SEL_SE3_SH0_ORD_CNT = 93 -GDS_PERF_SEL_SE3_SH0_2COMP_REQ = 94 -GDS_PERF_SEL_SE3_SH0_ORD_WAVE_VALID = 95 -GDS_PERF_SEL_SE3_SH0_GDS_DATA_VALID = 96 -GDS_PERF_SEL_SE3_SH0_GDS_STALL_BY_ORD = 97 -GDS_PERF_SEL_SE3_SH0_GDS_WR_OP = 98 -GDS_PERF_SEL_SE3_SH0_GDS_RD_OP = 99 -GDS_PERF_SEL_SE3_SH0_GDS_ATOM_OP = 100 -GDS_PERF_SEL_SE3_SH0_GDS_REL_OP = 101 -GDS_PERF_SEL_SE3_SH0_GDS_CMPXCH_OP = 102 -GDS_PERF_SEL_SE3_SH0_GDS_BYTE_OP = 103 -GDS_PERF_SEL_SE3_SH0_GDS_SHORT_OP = 104 -GDS_PERF_SEL_SE3_SH1_NORET = 105 -GDS_PERF_SEL_SE3_SH1_RET = 106 -GDS_PERF_SEL_SE3_SH1_ORD_CNT = 107 -GDS_PERF_SEL_SE3_SH1_2COMP_REQ = 108 -GDS_PERF_SEL_SE3_SH1_ORD_WAVE_VALID = 109 -GDS_PERF_SEL_SE3_SH1_GDS_DATA_VALID = 110 -GDS_PERF_SEL_SE3_SH1_GDS_STALL_BY_ORD = 111 -GDS_PERF_SEL_SE3_SH1_GDS_WR_OP = 112 -GDS_PERF_SEL_SE3_SH1_GDS_RD_OP = 113 -GDS_PERF_SEL_SE3_SH1_GDS_ATOM_OP = 114 -GDS_PERF_SEL_SE3_SH1_GDS_REL_OP = 115 -GDS_PERF_SEL_SE3_SH1_GDS_CMPXCH_OP = 116 -GDS_PERF_SEL_SE3_SH1_GDS_BYTE_OP = 117 -GDS_PERF_SEL_SE3_SH1_GDS_SHORT_OP = 118 -GDS_PERF_SEL_GWS_RELEASED = 119 -GDS_PERF_SEL_GWS_BYPASS = 120 -GDS_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_FORCE_CTRL' -MEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'NO_FORCE_REQUEST', - 1: 'FORCE_LIGHT_SLEEP_REQUEST', - 2: 'FORCE_DEEP_SLEEP_REQUEST', - 3: 'FORCE_SHUT_DOWN_REQUEST', -} -NO_FORCE_REQUEST = 0 -FORCE_LIGHT_SLEEP_REQUEST = 1 -FORCE_DEEP_SLEEP_REQUEST = 2 -FORCE_SHUT_DOWN_REQUEST = 3 -MEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_FORCE_CTRL2' -MEM_PWR_FORCE_CTRL2__enumvalues = { - 0: 'NO_FORCE_REQ', - 1: 'FORCE_LIGHT_SLEEP_REQ', -} -NO_FORCE_REQ = 0 -FORCE_LIGHT_SLEEP_REQ = 1 -MEM_PWR_FORCE_CTRL2 = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_DIS_CTRL' -MEM_PWR_DIS_CTRL__enumvalues = { - 0: 'ENABLE_MEM_PWR_CTRL', - 1: 'DISABLE_MEM_PWR_CTRL', -} -ENABLE_MEM_PWR_CTRL = 0 -DISABLE_MEM_PWR_CTRL = 1 -MEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_SEL_CTRL' -MEM_PWR_SEL_CTRL__enumvalues = { - 0: 'DYNAMIC_SHUT_DOWN_ENABLE', - 1: 'DYNAMIC_DEEP_SLEEP_ENABLE', - 2: 'DYNAMIC_LIGHT_SLEEP_ENABLE', -} -DYNAMIC_SHUT_DOWN_ENABLE = 0 -DYNAMIC_DEEP_SLEEP_ENABLE = 1 -DYNAMIC_LIGHT_SLEEP_ENABLE = 2 -MEM_PWR_SEL_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_SEL_CTRL2' -MEM_PWR_SEL_CTRL2__enumvalues = { - 0: 'DYNAMIC_DEEP_SLEEP_EN', - 1: 'DYNAMIC_LIGHT_SLEEP_EN', -} -DYNAMIC_DEEP_SLEEP_EN = 0 -DYNAMIC_LIGHT_SLEEP_EN = 1 -MEM_PWR_SEL_CTRL2 = ctypes.c_uint32 # enum - -# values for enumeration 'RowSize' -RowSize__enumvalues = { - 0: 'ADDR_CONFIG_1KB_ROW', - 1: 'ADDR_CONFIG_2KB_ROW', - 2: 'ADDR_CONFIG_4KB_ROW', -} -ADDR_CONFIG_1KB_ROW = 0 -ADDR_CONFIG_2KB_ROW = 1 -ADDR_CONFIG_4KB_ROW = 2 -RowSize = ctypes.c_uint32 # enum - -# values for enumeration 'SurfaceEndian' -SurfaceEndian__enumvalues = { - 0: 'ENDIAN_NONE', - 1: 'ENDIAN_8IN16', - 2: 'ENDIAN_8IN32', - 3: 'ENDIAN_8IN64', -} -ENDIAN_NONE = 0 -ENDIAN_8IN16 = 1 -ENDIAN_8IN32 = 2 -ENDIAN_8IN64 = 3 -SurfaceEndian = ctypes.c_uint32 # enum - -# values for enumeration 'ArrayMode' -ArrayMode__enumvalues = { - 0: 'ARRAY_LINEAR_GENERAL', - 1: 'ARRAY_LINEAR_ALIGNED', - 2: 'ARRAY_1D_TILED_THIN1', - 3: 'ARRAY_1D_TILED_THICK', - 4: 'ARRAY_2D_TILED_THIN1', - 5: 'ARRAY_PRT_TILED_THIN1', - 6: 'ARRAY_PRT_2D_TILED_THIN1', - 7: 'ARRAY_2D_TILED_THICK', - 8: 'ARRAY_2D_TILED_XTHICK', - 9: 'ARRAY_PRT_TILED_THICK', - 10: 'ARRAY_PRT_2D_TILED_THICK', - 11: 'ARRAY_PRT_3D_TILED_THIN1', - 12: 'ARRAY_3D_TILED_THIN1', - 13: 'ARRAY_3D_TILED_THICK', - 14: 'ARRAY_3D_TILED_XTHICK', - 15: 'ARRAY_PRT_3D_TILED_THICK', -} -ARRAY_LINEAR_GENERAL = 0 -ARRAY_LINEAR_ALIGNED = 1 -ARRAY_1D_TILED_THIN1 = 2 -ARRAY_1D_TILED_THICK = 3 -ARRAY_2D_TILED_THIN1 = 4 -ARRAY_PRT_TILED_THIN1 = 5 -ARRAY_PRT_2D_TILED_THIN1 = 6 -ARRAY_2D_TILED_THICK = 7 -ARRAY_2D_TILED_XTHICK = 8 -ARRAY_PRT_TILED_THICK = 9 -ARRAY_PRT_2D_TILED_THICK = 10 -ARRAY_PRT_3D_TILED_THIN1 = 11 -ARRAY_3D_TILED_THIN1 = 12 -ARRAY_3D_TILED_THICK = 13 -ARRAY_3D_TILED_XTHICK = 14 -ARRAY_PRT_3D_TILED_THICK = 15 -ArrayMode = ctypes.c_uint32 # enum - -# values for enumeration 'NumPipes' -NumPipes__enumvalues = { - 0: 'ADDR_CONFIG_1_PIPE', - 1: 'ADDR_CONFIG_2_PIPE', - 2: 'ADDR_CONFIG_4_PIPE', - 3: 'ADDR_CONFIG_8_PIPE', - 4: 'ADDR_CONFIG_16_PIPE', - 5: 'ADDR_CONFIG_32_PIPE', -} -ADDR_CONFIG_1_PIPE = 0 -ADDR_CONFIG_2_PIPE = 1 -ADDR_CONFIG_4_PIPE = 2 -ADDR_CONFIG_8_PIPE = 3 -ADDR_CONFIG_16_PIPE = 4 -ADDR_CONFIG_32_PIPE = 5 -NumPipes = ctypes.c_uint32 # enum - -# values for enumeration 'NumBanksConfig' -NumBanksConfig__enumvalues = { - 0: 'ADDR_CONFIG_1_BANK', - 1: 'ADDR_CONFIG_2_BANK', - 2: 'ADDR_CONFIG_4_BANK', - 3: 'ADDR_CONFIG_8_BANK', - 4: 'ADDR_CONFIG_16_BANK', -} -ADDR_CONFIG_1_BANK = 0 -ADDR_CONFIG_2_BANK = 1 -ADDR_CONFIG_4_BANK = 2 -ADDR_CONFIG_8_BANK = 3 -ADDR_CONFIG_16_BANK = 4 -NumBanksConfig = ctypes.c_uint32 # enum - -# values for enumeration 'PipeInterleaveSize' -PipeInterleaveSize__enumvalues = { - 0: 'ADDR_CONFIG_PIPE_INTERLEAVE_256B', - 1: 'ADDR_CONFIG_PIPE_INTERLEAVE_512B', - 2: 'ADDR_CONFIG_PIPE_INTERLEAVE_1KB', - 3: 'ADDR_CONFIG_PIPE_INTERLEAVE_2KB', -} -ADDR_CONFIG_PIPE_INTERLEAVE_256B = 0 -ADDR_CONFIG_PIPE_INTERLEAVE_512B = 1 -ADDR_CONFIG_PIPE_INTERLEAVE_1KB = 2 -ADDR_CONFIG_PIPE_INTERLEAVE_2KB = 3 -PipeInterleaveSize = ctypes.c_uint32 # enum - -# values for enumeration 'BankInterleaveSize' -BankInterleaveSize__enumvalues = { - 0: 'ADDR_CONFIG_BANK_INTERLEAVE_1', - 1: 'ADDR_CONFIG_BANK_INTERLEAVE_2', - 2: 'ADDR_CONFIG_BANK_INTERLEAVE_4', - 3: 'ADDR_CONFIG_BANK_INTERLEAVE_8', -} -ADDR_CONFIG_BANK_INTERLEAVE_1 = 0 -ADDR_CONFIG_BANK_INTERLEAVE_2 = 1 -ADDR_CONFIG_BANK_INTERLEAVE_4 = 2 -ADDR_CONFIG_BANK_INTERLEAVE_8 = 3 -BankInterleaveSize = ctypes.c_uint32 # enum - -# values for enumeration 'NumShaderEngines' -NumShaderEngines__enumvalues = { - 0: 'ADDR_CONFIG_1_SHADER_ENGINE', - 1: 'ADDR_CONFIG_2_SHADER_ENGINE', - 2: 'ADDR_CONFIG_4_SHADER_ENGINE', - 3: 'ADDR_CONFIG_8_SHADER_ENGINE', -} -ADDR_CONFIG_1_SHADER_ENGINE = 0 -ADDR_CONFIG_2_SHADER_ENGINE = 1 -ADDR_CONFIG_4_SHADER_ENGINE = 2 -ADDR_CONFIG_8_SHADER_ENGINE = 3 -NumShaderEngines = ctypes.c_uint32 # enum - -# values for enumeration 'NumRbPerShaderEngine' -NumRbPerShaderEngine__enumvalues = { - 0: 'ADDR_CONFIG_1_RB_PER_SHADER_ENGINE', - 1: 'ADDR_CONFIG_2_RB_PER_SHADER_ENGINE', - 2: 'ADDR_CONFIG_4_RB_PER_SHADER_ENGINE', -} -ADDR_CONFIG_1_RB_PER_SHADER_ENGINE = 0 -ADDR_CONFIG_2_RB_PER_SHADER_ENGINE = 1 -ADDR_CONFIG_4_RB_PER_SHADER_ENGINE = 2 -NumRbPerShaderEngine = ctypes.c_uint32 # enum - -# values for enumeration 'NumGPUs' -NumGPUs__enumvalues = { - 0: 'ADDR_CONFIG_1_GPU', - 1: 'ADDR_CONFIG_2_GPU', - 2: 'ADDR_CONFIG_4_GPU', - 3: 'ADDR_CONFIG_8_GPU', -} -ADDR_CONFIG_1_GPU = 0 -ADDR_CONFIG_2_GPU = 1 -ADDR_CONFIG_4_GPU = 2 -ADDR_CONFIG_8_GPU = 3 -NumGPUs = ctypes.c_uint32 # enum - -# values for enumeration 'NumMaxCompressedFragments' -NumMaxCompressedFragments__enumvalues = { - 0: 'ADDR_CONFIG_1_MAX_COMPRESSED_FRAGMENTS', - 1: 'ADDR_CONFIG_2_MAX_COMPRESSED_FRAGMENTS', - 2: 'ADDR_CONFIG_4_MAX_COMPRESSED_FRAGMENTS', - 3: 'ADDR_CONFIG_8_MAX_COMPRESSED_FRAGMENTS', -} -ADDR_CONFIG_1_MAX_COMPRESSED_FRAGMENTS = 0 -ADDR_CONFIG_2_MAX_COMPRESSED_FRAGMENTS = 1 -ADDR_CONFIG_4_MAX_COMPRESSED_FRAGMENTS = 2 -ADDR_CONFIG_8_MAX_COMPRESSED_FRAGMENTS = 3 -NumMaxCompressedFragments = ctypes.c_uint32 # enum - -# values for enumeration 'ShaderEngineTileSize' -ShaderEngineTileSize__enumvalues = { - 0: 'ADDR_CONFIG_SE_TILE_16', - 1: 'ADDR_CONFIG_SE_TILE_32', -} -ADDR_CONFIG_SE_TILE_16 = 0 -ADDR_CONFIG_SE_TILE_32 = 1 -ShaderEngineTileSize = ctypes.c_uint32 # enum - -# values for enumeration 'MultiGPUTileSize' -MultiGPUTileSize__enumvalues = { - 0: 'ADDR_CONFIG_GPU_TILE_16', - 1: 'ADDR_CONFIG_GPU_TILE_32', - 2: 'ADDR_CONFIG_GPU_TILE_64', - 3: 'ADDR_CONFIG_GPU_TILE_128', -} -ADDR_CONFIG_GPU_TILE_16 = 0 -ADDR_CONFIG_GPU_TILE_32 = 1 -ADDR_CONFIG_GPU_TILE_64 = 2 -ADDR_CONFIG_GPU_TILE_128 = 3 -MultiGPUTileSize = ctypes.c_uint32 # enum - -# values for enumeration 'NumLowerPipes' -NumLowerPipes__enumvalues = { - 0: 'ADDR_CONFIG_1_LOWER_PIPES', - 1: 'ADDR_CONFIG_2_LOWER_PIPES', -} -ADDR_CONFIG_1_LOWER_PIPES = 0 -ADDR_CONFIG_2_LOWER_PIPES = 1 -NumLowerPipes = ctypes.c_uint32 # enum - -# values for enumeration 'ColorTransform' -ColorTransform__enumvalues = { - 0: 'DCC_CT_AUTO', - 1: 'DCC_CT_NONE', - 2: 'ABGR_TO_A_BG_G_RB', - 3: 'BGRA_TO_BG_G_RB_A', -} -DCC_CT_AUTO = 0 -DCC_CT_NONE = 1 -ABGR_TO_A_BG_G_RB = 2 -BGRA_TO_BG_G_RB_A = 3 -ColorTransform = ctypes.c_uint32 # enum - -# values for enumeration 'CompareRef' -CompareRef__enumvalues = { - 0: 'REF_NEVER', - 1: 'REF_LESS', - 2: 'REF_EQUAL', - 3: 'REF_LEQUAL', - 4: 'REF_GREATER', - 5: 'REF_NOTEQUAL', - 6: 'REF_GEQUAL', - 7: 'REF_ALWAYS', -} -REF_NEVER = 0 -REF_LESS = 1 -REF_EQUAL = 2 -REF_LEQUAL = 3 -REF_GREATER = 4 -REF_NOTEQUAL = 5 -REF_GEQUAL = 6 -REF_ALWAYS = 7 -CompareRef = ctypes.c_uint32 # enum - -# values for enumeration 'ReadSize' -ReadSize__enumvalues = { - 0: 'READ_256_BITS', - 1: 'READ_512_BITS', -} -READ_256_BITS = 0 -READ_512_BITS = 1 -ReadSize = ctypes.c_uint32 # enum - -# values for enumeration 'DepthFormat' -DepthFormat__enumvalues = { - 0: 'DEPTH_INVALID', - 1: 'DEPTH_16', - 2: 'DEPTH_X8_24', - 3: 'DEPTH_8_24', - 4: 'DEPTH_X8_24_FLOAT', - 5: 'DEPTH_8_24_FLOAT', - 6: 'DEPTH_32_FLOAT', - 7: 'DEPTH_X24_8_32_FLOAT', -} -DEPTH_INVALID = 0 -DEPTH_16 = 1 -DEPTH_X8_24 = 2 -DEPTH_8_24 = 3 -DEPTH_X8_24_FLOAT = 4 -DEPTH_8_24_FLOAT = 5 -DEPTH_32_FLOAT = 6 -DEPTH_X24_8_32_FLOAT = 7 -DepthFormat = ctypes.c_uint32 # enum - -# values for enumeration 'ZFormat' -ZFormat__enumvalues = { - 0: 'Z_INVALID', - 1: 'Z_16', - 2: 'Z_24', - 3: 'Z_32_FLOAT', -} -Z_INVALID = 0 -Z_16 = 1 -Z_24 = 2 -Z_32_FLOAT = 3 -ZFormat = ctypes.c_uint32 # enum - -# values for enumeration 'StencilFormat' -StencilFormat__enumvalues = { - 0: 'STENCIL_INVALID', - 1: 'STENCIL_8', -} -STENCIL_INVALID = 0 -STENCIL_8 = 1 -StencilFormat = ctypes.c_uint32 # enum - -# values for enumeration 'CmaskMode' -CmaskMode__enumvalues = { - 0: 'CMASK_CLEAR_NONE', - 1: 'CMASK_CLEAR_ONE', - 2: 'CMASK_CLEAR_ALL', - 3: 'CMASK_ANY_EXPANDED', - 4: 'CMASK_ALPHA0_FRAG1', - 5: 'CMASK_ALPHA0_FRAG2', - 6: 'CMASK_ALPHA0_FRAG4', - 7: 'CMASK_ALPHA0_FRAGS', - 8: 'CMASK_ALPHA1_FRAG1', - 9: 'CMASK_ALPHA1_FRAG2', - 10: 'CMASK_ALPHA1_FRAG4', - 11: 'CMASK_ALPHA1_FRAGS', - 12: 'CMASK_ALPHAX_FRAG1', - 13: 'CMASK_ALPHAX_FRAG2', - 14: 'CMASK_ALPHAX_FRAG4', - 15: 'CMASK_ALPHAX_FRAGS', -} -CMASK_CLEAR_NONE = 0 -CMASK_CLEAR_ONE = 1 -CMASK_CLEAR_ALL = 2 -CMASK_ANY_EXPANDED = 3 -CMASK_ALPHA0_FRAG1 = 4 -CMASK_ALPHA0_FRAG2 = 5 -CMASK_ALPHA0_FRAG4 = 6 -CMASK_ALPHA0_FRAGS = 7 -CMASK_ALPHA1_FRAG1 = 8 -CMASK_ALPHA1_FRAG2 = 9 -CMASK_ALPHA1_FRAG4 = 10 -CMASK_ALPHA1_FRAGS = 11 -CMASK_ALPHAX_FRAG1 = 12 -CMASK_ALPHAX_FRAG2 = 13 -CMASK_ALPHAX_FRAG4 = 14 -CMASK_ALPHAX_FRAGS = 15 -CmaskMode = ctypes.c_uint32 # enum - -# values for enumeration 'QuadExportFormat' -QuadExportFormat__enumvalues = { - 0: 'EXPORT_UNUSED', - 1: 'EXPORT_32_R', - 2: 'EXPORT_32_GR', - 3: 'EXPORT_32_AR', - 4: 'EXPORT_FP16_ABGR', - 5: 'EXPORT_UNSIGNED16_ABGR', - 6: 'EXPORT_SIGNED16_ABGR', - 7: 'EXPORT_32_ABGR', - 8: 'EXPORT_32BPP_8PIX', - 9: 'EXPORT_16_16_UNSIGNED_8PIX', - 10: 'EXPORT_16_16_SIGNED_8PIX', - 11: 'EXPORT_16_16_FLOAT_8PIX', -} -EXPORT_UNUSED = 0 -EXPORT_32_R = 1 -EXPORT_32_GR = 2 -EXPORT_32_AR = 3 -EXPORT_FP16_ABGR = 4 -EXPORT_UNSIGNED16_ABGR = 5 -EXPORT_SIGNED16_ABGR = 6 -EXPORT_32_ABGR = 7 -EXPORT_32BPP_8PIX = 8 -EXPORT_16_16_UNSIGNED_8PIX = 9 -EXPORT_16_16_SIGNED_8PIX = 10 -EXPORT_16_16_FLOAT_8PIX = 11 -QuadExportFormat = ctypes.c_uint32 # enum - -# values for enumeration 'QuadExportFormatOld' -QuadExportFormatOld__enumvalues = { - 0: 'EXPORT_4P_32BPC_ABGR', - 1: 'EXPORT_4P_16BPC_ABGR', - 2: 'EXPORT_4P_32BPC_GR', - 3: 'EXPORT_4P_32BPC_AR', - 4: 'EXPORT_2P_32BPC_ABGR', - 5: 'EXPORT_8P_32BPC_R', -} -EXPORT_4P_32BPC_ABGR = 0 -EXPORT_4P_16BPC_ABGR = 1 -EXPORT_4P_32BPC_GR = 2 -EXPORT_4P_32BPC_AR = 3 -EXPORT_2P_32BPC_ABGR = 4 -EXPORT_8P_32BPC_R = 5 -QuadExportFormatOld = ctypes.c_uint32 # enum - -# values for enumeration 'ColorFormat' -ColorFormat__enumvalues = { - 0: 'COLOR_INVALID', - 1: 'COLOR_8', - 2: 'COLOR_16', - 3: 'COLOR_8_8', - 4: 'COLOR_32', - 5: 'COLOR_16_16', - 6: 'COLOR_10_11_11', - 7: 'COLOR_11_11_10', - 8: 'COLOR_10_10_10_2', - 9: 'COLOR_2_10_10_10', - 10: 'COLOR_8_8_8_8', - 11: 'COLOR_32_32', - 12: 'COLOR_16_16_16_16', - 13: 'COLOR_RESERVED_13', - 14: 'COLOR_32_32_32_32', - 15: 'COLOR_RESERVED_15', - 16: 'COLOR_5_6_5', - 17: 'COLOR_1_5_5_5', - 18: 'COLOR_5_5_5_1', - 19: 'COLOR_4_4_4_4', - 20: 'COLOR_8_24', - 21: 'COLOR_24_8', - 22: 'COLOR_X24_8_32_FLOAT', - 23: 'COLOR_RESERVED_23', - 24: 'COLOR_RESERVED_24', - 25: 'COLOR_RESERVED_25', - 26: 'COLOR_RESERVED_26', - 27: 'COLOR_RESERVED_27', - 28: 'COLOR_RESERVED_28', - 29: 'COLOR_RESERVED_29', - 30: 'COLOR_RESERVED_30', - 31: 'COLOR_2_10_10_10_6E4', -} -COLOR_INVALID = 0 -COLOR_8 = 1 -COLOR_16 = 2 -COLOR_8_8 = 3 -COLOR_32 = 4 -COLOR_16_16 = 5 -COLOR_10_11_11 = 6 -COLOR_11_11_10 = 7 -COLOR_10_10_10_2 = 8 -COLOR_2_10_10_10 = 9 -COLOR_8_8_8_8 = 10 -COLOR_32_32 = 11 -COLOR_16_16_16_16 = 12 -COLOR_RESERVED_13 = 13 -COLOR_32_32_32_32 = 14 -COLOR_RESERVED_15 = 15 -COLOR_5_6_5 = 16 -COLOR_1_5_5_5 = 17 -COLOR_5_5_5_1 = 18 -COLOR_4_4_4_4 = 19 -COLOR_8_24 = 20 -COLOR_24_8 = 21 -COLOR_X24_8_32_FLOAT = 22 -COLOR_RESERVED_23 = 23 -COLOR_RESERVED_24 = 24 -COLOR_RESERVED_25 = 25 -COLOR_RESERVED_26 = 26 -COLOR_RESERVED_27 = 27 -COLOR_RESERVED_28 = 28 -COLOR_RESERVED_29 = 29 -COLOR_RESERVED_30 = 30 -COLOR_2_10_10_10_6E4 = 31 -ColorFormat = ctypes.c_uint32 # enum - -# values for enumeration 'SurfaceFormat' -SurfaceFormat__enumvalues = { - 0: 'FMT_INVALID', - 1: 'FMT_8', - 2: 'FMT_16', - 3: 'FMT_8_8', - 4: 'FMT_32', - 5: 'FMT_16_16', - 6: 'FMT_10_11_11', - 7: 'FMT_11_11_10', - 8: 'FMT_10_10_10_2', - 9: 'FMT_2_10_10_10', - 10: 'FMT_8_8_8_8', - 11: 'FMT_32_32', - 12: 'FMT_16_16_16_16', - 13: 'FMT_32_32_32', - 14: 'FMT_32_32_32_32', - 15: 'FMT_RESERVED_4', - 16: 'FMT_5_6_5', - 17: 'FMT_1_5_5_5', - 18: 'FMT_5_5_5_1', - 19: 'FMT_4_4_4_4', - 20: 'FMT_8_24', - 21: 'FMT_24_8', - 22: 'FMT_X24_8_32_FLOAT', - 23: 'FMT_RESERVED_33', - 24: 'FMT_11_11_10_FLOAT', - 25: 'FMT_16_FLOAT', - 26: 'FMT_32_FLOAT', - 27: 'FMT_16_16_FLOAT', - 28: 'FMT_8_24_FLOAT', - 29: 'FMT_24_8_FLOAT', - 30: 'FMT_32_32_FLOAT', - 31: 'FMT_10_11_11_FLOAT', - 32: 'FMT_16_16_16_16_FLOAT', - 33: 'FMT_3_3_2', - 34: 'FMT_6_5_5', - 35: 'FMT_32_32_32_32_FLOAT', - 36: 'FMT_RESERVED_36', - 37: 'FMT_1', - 38: 'FMT_1_REVERSED', - 39: 'FMT_GB_GR', - 40: 'FMT_BG_RG', - 41: 'FMT_32_AS_8', - 42: 'FMT_32_AS_8_8', - 43: 'FMT_5_9_9_9_SHAREDEXP', - 44: 'FMT_8_8_8', - 45: 'FMT_16_16_16', - 46: 'FMT_16_16_16_FLOAT', - 47: 'FMT_4_4', - 48: 'FMT_32_32_32_FLOAT', - 49: 'FMT_BC1', - 50: 'FMT_BC2', - 51: 'FMT_BC3', - 52: 'FMT_BC4', - 53: 'FMT_BC5', - 54: 'FMT_BC6', - 55: 'FMT_BC7', - 56: 'FMT_32_AS_32_32_32_32', - 57: 'FMT_APC3', - 58: 'FMT_APC4', - 59: 'FMT_APC5', - 60: 'FMT_APC6', - 61: 'FMT_APC7', - 62: 'FMT_CTX1', - 63: 'FMT_RESERVED_63', -} -FMT_INVALID = 0 -FMT_8 = 1 -FMT_16 = 2 -FMT_8_8 = 3 -FMT_32 = 4 -FMT_16_16 = 5 -FMT_10_11_11 = 6 -FMT_11_11_10 = 7 -FMT_10_10_10_2 = 8 -FMT_2_10_10_10 = 9 -FMT_8_8_8_8 = 10 -FMT_32_32 = 11 -FMT_16_16_16_16 = 12 -FMT_32_32_32 = 13 -FMT_32_32_32_32 = 14 -FMT_RESERVED_4 = 15 -FMT_5_6_5 = 16 -FMT_1_5_5_5 = 17 -FMT_5_5_5_1 = 18 -FMT_4_4_4_4 = 19 -FMT_8_24 = 20 -FMT_24_8 = 21 -FMT_X24_8_32_FLOAT = 22 -FMT_RESERVED_33 = 23 -FMT_11_11_10_FLOAT = 24 -FMT_16_FLOAT = 25 -FMT_32_FLOAT = 26 -FMT_16_16_FLOAT = 27 -FMT_8_24_FLOAT = 28 -FMT_24_8_FLOAT = 29 -FMT_32_32_FLOAT = 30 -FMT_10_11_11_FLOAT = 31 -FMT_16_16_16_16_FLOAT = 32 -FMT_3_3_2 = 33 -FMT_6_5_5 = 34 -FMT_32_32_32_32_FLOAT = 35 -FMT_RESERVED_36 = 36 -FMT_1 = 37 -FMT_1_REVERSED = 38 -FMT_GB_GR = 39 -FMT_BG_RG = 40 -FMT_32_AS_8 = 41 -FMT_32_AS_8_8 = 42 -FMT_5_9_9_9_SHAREDEXP = 43 -FMT_8_8_8 = 44 -FMT_16_16_16 = 45 -FMT_16_16_16_FLOAT = 46 -FMT_4_4 = 47 -FMT_32_32_32_FLOAT = 48 -FMT_BC1 = 49 -FMT_BC2 = 50 -FMT_BC3 = 51 -FMT_BC4 = 52 -FMT_BC5 = 53 -FMT_BC6 = 54 -FMT_BC7 = 55 -FMT_32_AS_32_32_32_32 = 56 -FMT_APC3 = 57 -FMT_APC4 = 58 -FMT_APC5 = 59 -FMT_APC6 = 60 -FMT_APC7 = 61 -FMT_CTX1 = 62 -FMT_RESERVED_63 = 63 -SurfaceFormat = ctypes.c_uint32 # enum - -# values for enumeration 'BUF_DATA_FORMAT' -BUF_DATA_FORMAT__enumvalues = { - 0: 'BUF_DATA_FORMAT_INVALID', - 1: 'BUF_DATA_FORMAT_8', - 2: 'BUF_DATA_FORMAT_16', - 3: 'BUF_DATA_FORMAT_8_8', - 4: 'BUF_DATA_FORMAT_32', - 5: 'BUF_DATA_FORMAT_16_16', - 6: 'BUF_DATA_FORMAT_10_11_11', - 7: 'BUF_DATA_FORMAT_11_11_10', - 8: 'BUF_DATA_FORMAT_10_10_10_2', - 9: 'BUF_DATA_FORMAT_2_10_10_10', - 10: 'BUF_DATA_FORMAT_8_8_8_8', - 11: 'BUF_DATA_FORMAT_32_32', - 12: 'BUF_DATA_FORMAT_16_16_16_16', - 13: 'BUF_DATA_FORMAT_32_32_32', - 14: 'BUF_DATA_FORMAT_32_32_32_32', - 15: 'BUF_DATA_FORMAT_RESERVED_15', -} -BUF_DATA_FORMAT_INVALID = 0 -BUF_DATA_FORMAT_8 = 1 -BUF_DATA_FORMAT_16 = 2 -BUF_DATA_FORMAT_8_8 = 3 -BUF_DATA_FORMAT_32 = 4 -BUF_DATA_FORMAT_16_16 = 5 -BUF_DATA_FORMAT_10_11_11 = 6 -BUF_DATA_FORMAT_11_11_10 = 7 -BUF_DATA_FORMAT_10_10_10_2 = 8 -BUF_DATA_FORMAT_2_10_10_10 = 9 -BUF_DATA_FORMAT_8_8_8_8 = 10 -BUF_DATA_FORMAT_32_32 = 11 -BUF_DATA_FORMAT_16_16_16_16 = 12 -BUF_DATA_FORMAT_32_32_32 = 13 -BUF_DATA_FORMAT_32_32_32_32 = 14 -BUF_DATA_FORMAT_RESERVED_15 = 15 -BUF_DATA_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'IMG_DATA_FORMAT' -IMG_DATA_FORMAT__enumvalues = { - 0: 'IMG_DATA_FORMAT_INVALID', - 1: 'IMG_DATA_FORMAT_8', - 2: 'IMG_DATA_FORMAT_16', - 3: 'IMG_DATA_FORMAT_8_8', - 4: 'IMG_DATA_FORMAT_32', - 5: 'IMG_DATA_FORMAT_16_16', - 6: 'IMG_DATA_FORMAT_10_11_11', - 7: 'IMG_DATA_FORMAT_11_11_10', - 8: 'IMG_DATA_FORMAT_10_10_10_2', - 9: 'IMG_DATA_FORMAT_2_10_10_10', - 10: 'IMG_DATA_FORMAT_8_8_8_8', - 11: 'IMG_DATA_FORMAT_32_32', - 12: 'IMG_DATA_FORMAT_16_16_16_16', - 13: 'IMG_DATA_FORMAT_32_32_32', - 14: 'IMG_DATA_FORMAT_32_32_32_32', - 15: 'IMG_DATA_FORMAT_RESERVED_15', - 16: 'IMG_DATA_FORMAT_5_6_5', - 17: 'IMG_DATA_FORMAT_1_5_5_5', - 18: 'IMG_DATA_FORMAT_5_5_5_1', - 19: 'IMG_DATA_FORMAT_4_4_4_4', - 20: 'IMG_DATA_FORMAT_8_24', - 21: 'IMG_DATA_FORMAT_24_8', - 22: 'IMG_DATA_FORMAT_X24_8_32', - 23: 'IMG_DATA_FORMAT_8_AS_8_8_8_8', - 24: 'IMG_DATA_FORMAT_ETC2_RGB', - 25: 'IMG_DATA_FORMAT_ETC2_RGBA', - 26: 'IMG_DATA_FORMAT_ETC2_R', - 27: 'IMG_DATA_FORMAT_ETC2_RG', - 28: 'IMG_DATA_FORMAT_ETC2_RGBA1', - 29: 'IMG_DATA_FORMAT_RESERVED_29', - 30: 'IMG_DATA_FORMAT_RESERVED_30', - 31: 'IMG_DATA_FORMAT_6E4', - 32: 'IMG_DATA_FORMAT_GB_GR', - 33: 'IMG_DATA_FORMAT_BG_RG', - 34: 'IMG_DATA_FORMAT_5_9_9_9', - 35: 'IMG_DATA_FORMAT_BC1', - 36: 'IMG_DATA_FORMAT_BC2', - 37: 'IMG_DATA_FORMAT_BC3', - 38: 'IMG_DATA_FORMAT_BC4', - 39: 'IMG_DATA_FORMAT_BC5', - 40: 'IMG_DATA_FORMAT_BC6', - 41: 'IMG_DATA_FORMAT_BC7', - 42: 'IMG_DATA_FORMAT_16_AS_32_32', - 43: 'IMG_DATA_FORMAT_16_AS_16_16_16_16', - 44: 'IMG_DATA_FORMAT_16_AS_32_32_32_32', - 45: 'IMG_DATA_FORMAT_FMASK', - 46: 'IMG_DATA_FORMAT_ASTC_2D_LDR', - 47: 'IMG_DATA_FORMAT_ASTC_2D_HDR', - 48: 'IMG_DATA_FORMAT_ASTC_2D_LDR_SRGB', - 49: 'IMG_DATA_FORMAT_ASTC_3D_LDR', - 50: 'IMG_DATA_FORMAT_ASTC_3D_HDR', - 51: 'IMG_DATA_FORMAT_ASTC_3D_LDR_SRGB', - 52: 'IMG_DATA_FORMAT_N_IN_16', - 53: 'IMG_DATA_FORMAT_N_IN_16_16', - 54: 'IMG_DATA_FORMAT_N_IN_16_16_16_16', - 55: 'IMG_DATA_FORMAT_N_IN_16_AS_16_16_16_16', - 56: 'IMG_DATA_FORMAT_RESERVED_56', - 57: 'IMG_DATA_FORMAT_4_4', - 58: 'IMG_DATA_FORMAT_6_5_5', - 59: 'IMG_DATA_FORMAT_RESERVED_59', - 60: 'IMG_DATA_FORMAT_RESERVED_60', - 61: 'IMG_DATA_FORMAT_8_AS_32', - 62: 'IMG_DATA_FORMAT_8_AS_32_32', - 63: 'IMG_DATA_FORMAT_32_AS_32_32_32_32', -} -IMG_DATA_FORMAT_INVALID = 0 -IMG_DATA_FORMAT_8 = 1 -IMG_DATA_FORMAT_16 = 2 -IMG_DATA_FORMAT_8_8 = 3 -IMG_DATA_FORMAT_32 = 4 -IMG_DATA_FORMAT_16_16 = 5 -IMG_DATA_FORMAT_10_11_11 = 6 -IMG_DATA_FORMAT_11_11_10 = 7 -IMG_DATA_FORMAT_10_10_10_2 = 8 -IMG_DATA_FORMAT_2_10_10_10 = 9 -IMG_DATA_FORMAT_8_8_8_8 = 10 -IMG_DATA_FORMAT_32_32 = 11 -IMG_DATA_FORMAT_16_16_16_16 = 12 -IMG_DATA_FORMAT_32_32_32 = 13 -IMG_DATA_FORMAT_32_32_32_32 = 14 -IMG_DATA_FORMAT_RESERVED_15 = 15 -IMG_DATA_FORMAT_5_6_5 = 16 -IMG_DATA_FORMAT_1_5_5_5 = 17 -IMG_DATA_FORMAT_5_5_5_1 = 18 -IMG_DATA_FORMAT_4_4_4_4 = 19 -IMG_DATA_FORMAT_8_24 = 20 -IMG_DATA_FORMAT_24_8 = 21 -IMG_DATA_FORMAT_X24_8_32 = 22 -IMG_DATA_FORMAT_8_AS_8_8_8_8 = 23 -IMG_DATA_FORMAT_ETC2_RGB = 24 -IMG_DATA_FORMAT_ETC2_RGBA = 25 -IMG_DATA_FORMAT_ETC2_R = 26 -IMG_DATA_FORMAT_ETC2_RG = 27 -IMG_DATA_FORMAT_ETC2_RGBA1 = 28 -IMG_DATA_FORMAT_RESERVED_29 = 29 -IMG_DATA_FORMAT_RESERVED_30 = 30 -IMG_DATA_FORMAT_6E4 = 31 -IMG_DATA_FORMAT_GB_GR = 32 -IMG_DATA_FORMAT_BG_RG = 33 -IMG_DATA_FORMAT_5_9_9_9 = 34 -IMG_DATA_FORMAT_BC1 = 35 -IMG_DATA_FORMAT_BC2 = 36 -IMG_DATA_FORMAT_BC3 = 37 -IMG_DATA_FORMAT_BC4 = 38 -IMG_DATA_FORMAT_BC5 = 39 -IMG_DATA_FORMAT_BC6 = 40 -IMG_DATA_FORMAT_BC7 = 41 -IMG_DATA_FORMAT_16_AS_32_32 = 42 -IMG_DATA_FORMAT_16_AS_16_16_16_16 = 43 -IMG_DATA_FORMAT_16_AS_32_32_32_32 = 44 -IMG_DATA_FORMAT_FMASK = 45 -IMG_DATA_FORMAT_ASTC_2D_LDR = 46 -IMG_DATA_FORMAT_ASTC_2D_HDR = 47 -IMG_DATA_FORMAT_ASTC_2D_LDR_SRGB = 48 -IMG_DATA_FORMAT_ASTC_3D_LDR = 49 -IMG_DATA_FORMAT_ASTC_3D_HDR = 50 -IMG_DATA_FORMAT_ASTC_3D_LDR_SRGB = 51 -IMG_DATA_FORMAT_N_IN_16 = 52 -IMG_DATA_FORMAT_N_IN_16_16 = 53 -IMG_DATA_FORMAT_N_IN_16_16_16_16 = 54 -IMG_DATA_FORMAT_N_IN_16_AS_16_16_16_16 = 55 -IMG_DATA_FORMAT_RESERVED_56 = 56 -IMG_DATA_FORMAT_4_4 = 57 -IMG_DATA_FORMAT_6_5_5 = 58 -IMG_DATA_FORMAT_RESERVED_59 = 59 -IMG_DATA_FORMAT_RESERVED_60 = 60 -IMG_DATA_FORMAT_8_AS_32 = 61 -IMG_DATA_FORMAT_8_AS_32_32 = 62 -IMG_DATA_FORMAT_32_AS_32_32_32_32 = 63 -IMG_DATA_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'BUF_NUM_FORMAT' -BUF_NUM_FORMAT__enumvalues = { - 0: 'BUF_NUM_FORMAT_UNORM', - 1: 'BUF_NUM_FORMAT_SNORM', - 2: 'BUF_NUM_FORMAT_USCALED', - 3: 'BUF_NUM_FORMAT_SSCALED', - 4: 'BUF_NUM_FORMAT_UINT', - 5: 'BUF_NUM_FORMAT_SINT', - 6: 'BUF_NUM_FORMAT_UNORM_UINT', - 7: 'BUF_NUM_FORMAT_FLOAT', -} -BUF_NUM_FORMAT_UNORM = 0 -BUF_NUM_FORMAT_SNORM = 1 -BUF_NUM_FORMAT_USCALED = 2 -BUF_NUM_FORMAT_SSCALED = 3 -BUF_NUM_FORMAT_UINT = 4 -BUF_NUM_FORMAT_SINT = 5 -BUF_NUM_FORMAT_UNORM_UINT = 6 -BUF_NUM_FORMAT_FLOAT = 7 -BUF_NUM_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'IMG_NUM_FORMAT' -IMG_NUM_FORMAT__enumvalues = { - 0: 'IMG_NUM_FORMAT_UNORM', - 1: 'IMG_NUM_FORMAT_SNORM', - 2: 'IMG_NUM_FORMAT_USCALED', - 3: 'IMG_NUM_FORMAT_SSCALED', - 4: 'IMG_NUM_FORMAT_UINT', - 5: 'IMG_NUM_FORMAT_SINT', - 6: 'IMG_NUM_FORMAT_UNORM_UINT', - 7: 'IMG_NUM_FORMAT_FLOAT', - 8: 'IMG_NUM_FORMAT_RESERVED_8', - 9: 'IMG_NUM_FORMAT_SRGB', - 10: 'IMG_NUM_FORMAT_RESERVED_10', - 11: 'IMG_NUM_FORMAT_RESERVED_11', - 12: 'IMG_NUM_FORMAT_RESERVED_12', - 13: 'IMG_NUM_FORMAT_RESERVED_13', - 14: 'IMG_NUM_FORMAT_RESERVED_14', - 15: 'IMG_NUM_FORMAT_RESERVED_15', -} -IMG_NUM_FORMAT_UNORM = 0 -IMG_NUM_FORMAT_SNORM = 1 -IMG_NUM_FORMAT_USCALED = 2 -IMG_NUM_FORMAT_SSCALED = 3 -IMG_NUM_FORMAT_UINT = 4 -IMG_NUM_FORMAT_SINT = 5 -IMG_NUM_FORMAT_UNORM_UINT = 6 -IMG_NUM_FORMAT_FLOAT = 7 -IMG_NUM_FORMAT_RESERVED_8 = 8 -IMG_NUM_FORMAT_SRGB = 9 -IMG_NUM_FORMAT_RESERVED_10 = 10 -IMG_NUM_FORMAT_RESERVED_11 = 11 -IMG_NUM_FORMAT_RESERVED_12 = 12 -IMG_NUM_FORMAT_RESERVED_13 = 13 -IMG_NUM_FORMAT_RESERVED_14 = 14 -IMG_NUM_FORMAT_RESERVED_15 = 15 -IMG_NUM_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'IMG_NUM_FORMAT_FMASK' -IMG_NUM_FORMAT_FMASK__enumvalues = { - 0: 'IMG_NUM_FORMAT_FMASK_8_2_1', - 1: 'IMG_NUM_FORMAT_FMASK_8_4_1', - 2: 'IMG_NUM_FORMAT_FMASK_8_8_1', - 3: 'IMG_NUM_FORMAT_FMASK_8_2_2', - 4: 'IMG_NUM_FORMAT_FMASK_8_4_2', - 5: 'IMG_NUM_FORMAT_FMASK_8_4_4', - 6: 'IMG_NUM_FORMAT_FMASK_16_16_1', - 7: 'IMG_NUM_FORMAT_FMASK_16_8_2', - 8: 'IMG_NUM_FORMAT_FMASK_32_16_2', - 9: 'IMG_NUM_FORMAT_FMASK_32_8_4', - 10: 'IMG_NUM_FORMAT_FMASK_32_8_8', - 11: 'IMG_NUM_FORMAT_FMASK_64_16_4', - 12: 'IMG_NUM_FORMAT_FMASK_64_16_8', - 13: 'IMG_NUM_FORMAT_FMASK_RESERVED_13', - 14: 'IMG_NUM_FORMAT_FMASK_RESERVED_14', - 15: 'IMG_NUM_FORMAT_FMASK_RESERVED_15', -} -IMG_NUM_FORMAT_FMASK_8_2_1 = 0 -IMG_NUM_FORMAT_FMASK_8_4_1 = 1 -IMG_NUM_FORMAT_FMASK_8_8_1 = 2 -IMG_NUM_FORMAT_FMASK_8_2_2 = 3 -IMG_NUM_FORMAT_FMASK_8_4_2 = 4 -IMG_NUM_FORMAT_FMASK_8_4_4 = 5 -IMG_NUM_FORMAT_FMASK_16_16_1 = 6 -IMG_NUM_FORMAT_FMASK_16_8_2 = 7 -IMG_NUM_FORMAT_FMASK_32_16_2 = 8 -IMG_NUM_FORMAT_FMASK_32_8_4 = 9 -IMG_NUM_FORMAT_FMASK_32_8_8 = 10 -IMG_NUM_FORMAT_FMASK_64_16_4 = 11 -IMG_NUM_FORMAT_FMASK_64_16_8 = 12 -IMG_NUM_FORMAT_FMASK_RESERVED_13 = 13 -IMG_NUM_FORMAT_FMASK_RESERVED_14 = 14 -IMG_NUM_FORMAT_FMASK_RESERVED_15 = 15 -IMG_NUM_FORMAT_FMASK = ctypes.c_uint32 # enum - -# values for enumeration 'IMG_NUM_FORMAT_N_IN_16' -IMG_NUM_FORMAT_N_IN_16__enumvalues = { - 0: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_0', - 1: 'IMG_NUM_FORMAT_N_IN_16_UNORM_10', - 2: 'IMG_NUM_FORMAT_N_IN_16_UNORM_9', - 3: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_3', - 4: 'IMG_NUM_FORMAT_N_IN_16_UINT_10', - 5: 'IMG_NUM_FORMAT_N_IN_16_UINT_9', - 6: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_6', - 7: 'IMG_NUM_FORMAT_N_IN_16_UNORM_UINT_10', - 8: 'IMG_NUM_FORMAT_N_IN_16_UNORM_UINT_9', - 9: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_9', - 10: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_10', - 11: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_11', - 12: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_12', - 13: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_13', - 14: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_14', - 15: 'IMG_NUM_FORMAT_N_IN_16_RESERVED_15', -} -IMG_NUM_FORMAT_N_IN_16_RESERVED_0 = 0 -IMG_NUM_FORMAT_N_IN_16_UNORM_10 = 1 -IMG_NUM_FORMAT_N_IN_16_UNORM_9 = 2 -IMG_NUM_FORMAT_N_IN_16_RESERVED_3 = 3 -IMG_NUM_FORMAT_N_IN_16_UINT_10 = 4 -IMG_NUM_FORMAT_N_IN_16_UINT_9 = 5 -IMG_NUM_FORMAT_N_IN_16_RESERVED_6 = 6 -IMG_NUM_FORMAT_N_IN_16_UNORM_UINT_10 = 7 -IMG_NUM_FORMAT_N_IN_16_UNORM_UINT_9 = 8 -IMG_NUM_FORMAT_N_IN_16_RESERVED_9 = 9 -IMG_NUM_FORMAT_N_IN_16_RESERVED_10 = 10 -IMG_NUM_FORMAT_N_IN_16_RESERVED_11 = 11 -IMG_NUM_FORMAT_N_IN_16_RESERVED_12 = 12 -IMG_NUM_FORMAT_N_IN_16_RESERVED_13 = 13 -IMG_NUM_FORMAT_N_IN_16_RESERVED_14 = 14 -IMG_NUM_FORMAT_N_IN_16_RESERVED_15 = 15 -IMG_NUM_FORMAT_N_IN_16 = ctypes.c_uint32 # enum - -# values for enumeration 'IMG_NUM_FORMAT_ASTC_2D' -IMG_NUM_FORMAT_ASTC_2D__enumvalues = { - 0: 'IMG_NUM_FORMAT_ASTC_2D_4x4', - 1: 'IMG_NUM_FORMAT_ASTC_2D_5x4', - 2: 'IMG_NUM_FORMAT_ASTC_2D_5x5', - 3: 'IMG_NUM_FORMAT_ASTC_2D_6x5', - 4: 'IMG_NUM_FORMAT_ASTC_2D_6x6', - 5: 'IMG_NUM_FORMAT_ASTC_2D_8x5', - 6: 'IMG_NUM_FORMAT_ASTC_2D_8x6', - 7: 'IMG_NUM_FORMAT_ASTC_2D_8x8', - 8: 'IMG_NUM_FORMAT_ASTC_2D_10x5', - 9: 'IMG_NUM_FORMAT_ASTC_2D_10x6', - 10: 'IMG_NUM_FORMAT_ASTC_2D_10x8', - 11: 'IMG_NUM_FORMAT_ASTC_2D_10x10', - 12: 'IMG_NUM_FORMAT_ASTC_2D_12x10', - 13: 'IMG_NUM_FORMAT_ASTC_2D_12x12', - 14: 'IMG_NUM_FORMAT_ASTC_2D_RESERVED_14', - 15: 'IMG_NUM_FORMAT_ASTC_2D_RESERVED_15', -} -IMG_NUM_FORMAT_ASTC_2D_4x4 = 0 -IMG_NUM_FORMAT_ASTC_2D_5x4 = 1 -IMG_NUM_FORMAT_ASTC_2D_5x5 = 2 -IMG_NUM_FORMAT_ASTC_2D_6x5 = 3 -IMG_NUM_FORMAT_ASTC_2D_6x6 = 4 -IMG_NUM_FORMAT_ASTC_2D_8x5 = 5 -IMG_NUM_FORMAT_ASTC_2D_8x6 = 6 -IMG_NUM_FORMAT_ASTC_2D_8x8 = 7 -IMG_NUM_FORMAT_ASTC_2D_10x5 = 8 -IMG_NUM_FORMAT_ASTC_2D_10x6 = 9 -IMG_NUM_FORMAT_ASTC_2D_10x8 = 10 -IMG_NUM_FORMAT_ASTC_2D_10x10 = 11 -IMG_NUM_FORMAT_ASTC_2D_12x10 = 12 -IMG_NUM_FORMAT_ASTC_2D_12x12 = 13 -IMG_NUM_FORMAT_ASTC_2D_RESERVED_14 = 14 -IMG_NUM_FORMAT_ASTC_2D_RESERVED_15 = 15 -IMG_NUM_FORMAT_ASTC_2D = ctypes.c_uint32 # enum - -# values for enumeration 'IMG_NUM_FORMAT_ASTC_3D' -IMG_NUM_FORMAT_ASTC_3D__enumvalues = { - 0: 'IMG_NUM_FORMAT_ASTC_3D_3x3x3', - 1: 'IMG_NUM_FORMAT_ASTC_3D_4x3x3', - 2: 'IMG_NUM_FORMAT_ASTC_3D_4x4x3', - 3: 'IMG_NUM_FORMAT_ASTC_3D_4x4x4', - 4: 'IMG_NUM_FORMAT_ASTC_3D_5x4x4', - 5: 'IMG_NUM_FORMAT_ASTC_3D_5x5x4', - 6: 'IMG_NUM_FORMAT_ASTC_3D_5x5x5', - 7: 'IMG_NUM_FORMAT_ASTC_3D_6x5x5', - 8: 'IMG_NUM_FORMAT_ASTC_3D_6x6x5', - 9: 'IMG_NUM_FORMAT_ASTC_3D_6x6x6', - 10: 'IMG_NUM_FORMAT_ASTC_3D_RESERVED_10', - 11: 'IMG_NUM_FORMAT_ASTC_3D_RESERVED_11', - 12: 'IMG_NUM_FORMAT_ASTC_3D_RESERVED_12', - 13: 'IMG_NUM_FORMAT_ASTC_3D_RESERVED_13', - 14: 'IMG_NUM_FORMAT_ASTC_3D_RESERVED_14', - 15: 'IMG_NUM_FORMAT_ASTC_3D_RESERVED_15', -} -IMG_NUM_FORMAT_ASTC_3D_3x3x3 = 0 -IMG_NUM_FORMAT_ASTC_3D_4x3x3 = 1 -IMG_NUM_FORMAT_ASTC_3D_4x4x3 = 2 -IMG_NUM_FORMAT_ASTC_3D_4x4x4 = 3 -IMG_NUM_FORMAT_ASTC_3D_5x4x4 = 4 -IMG_NUM_FORMAT_ASTC_3D_5x5x4 = 5 -IMG_NUM_FORMAT_ASTC_3D_5x5x5 = 6 -IMG_NUM_FORMAT_ASTC_3D_6x5x5 = 7 -IMG_NUM_FORMAT_ASTC_3D_6x6x5 = 8 -IMG_NUM_FORMAT_ASTC_3D_6x6x6 = 9 -IMG_NUM_FORMAT_ASTC_3D_RESERVED_10 = 10 -IMG_NUM_FORMAT_ASTC_3D_RESERVED_11 = 11 -IMG_NUM_FORMAT_ASTC_3D_RESERVED_12 = 12 -IMG_NUM_FORMAT_ASTC_3D_RESERVED_13 = 13 -IMG_NUM_FORMAT_ASTC_3D_RESERVED_14 = 14 -IMG_NUM_FORMAT_ASTC_3D_RESERVED_15 = 15 -IMG_NUM_FORMAT_ASTC_3D = ctypes.c_uint32 # enum - -# values for enumeration 'TileType' -TileType__enumvalues = { - 0: 'ARRAY_COLOR_TILE', - 1: 'ARRAY_DEPTH_TILE', -} -ARRAY_COLOR_TILE = 0 -ARRAY_DEPTH_TILE = 1 -TileType = ctypes.c_uint32 # enum - -# values for enumeration 'NonDispTilingOrder' -NonDispTilingOrder__enumvalues = { - 0: 'ADDR_SURF_MICRO_TILING_DISPLAY', - 1: 'ADDR_SURF_MICRO_TILING_NON_DISPLAY', -} -ADDR_SURF_MICRO_TILING_DISPLAY = 0 -ADDR_SURF_MICRO_TILING_NON_DISPLAY = 1 -NonDispTilingOrder = ctypes.c_uint32 # enum - -# values for enumeration 'MicroTileMode' -MicroTileMode__enumvalues = { - 0: 'ADDR_SURF_DISPLAY_MICRO_TILING', - 1: 'ADDR_SURF_THIN_MICRO_TILING', - 2: 'ADDR_SURF_DEPTH_MICRO_TILING', - 3: 'ADDR_SURF_ROTATED_MICRO_TILING', - 4: 'ADDR_SURF_THICK_MICRO_TILING', -} -ADDR_SURF_DISPLAY_MICRO_TILING = 0 -ADDR_SURF_THIN_MICRO_TILING = 1 -ADDR_SURF_DEPTH_MICRO_TILING = 2 -ADDR_SURF_ROTATED_MICRO_TILING = 3 -ADDR_SURF_THICK_MICRO_TILING = 4 -MicroTileMode = ctypes.c_uint32 # enum - -# values for enumeration 'TileSplit' -TileSplit__enumvalues = { - 0: 'ADDR_SURF_TILE_SPLIT_64B', - 1: 'ADDR_SURF_TILE_SPLIT_128B', - 2: 'ADDR_SURF_TILE_SPLIT_256B', - 3: 'ADDR_SURF_TILE_SPLIT_512B', - 4: 'ADDR_SURF_TILE_SPLIT_1KB', - 5: 'ADDR_SURF_TILE_SPLIT_2KB', - 6: 'ADDR_SURF_TILE_SPLIT_4KB', -} -ADDR_SURF_TILE_SPLIT_64B = 0 -ADDR_SURF_TILE_SPLIT_128B = 1 -ADDR_SURF_TILE_SPLIT_256B = 2 -ADDR_SURF_TILE_SPLIT_512B = 3 -ADDR_SURF_TILE_SPLIT_1KB = 4 -ADDR_SURF_TILE_SPLIT_2KB = 5 -ADDR_SURF_TILE_SPLIT_4KB = 6 -TileSplit = ctypes.c_uint32 # enum - -# values for enumeration 'SampleSplit' -SampleSplit__enumvalues = { - 0: 'ADDR_SURF_SAMPLE_SPLIT_1', - 1: 'ADDR_SURF_SAMPLE_SPLIT_2', - 2: 'ADDR_SURF_SAMPLE_SPLIT_4', - 3: 'ADDR_SURF_SAMPLE_SPLIT_8', -} -ADDR_SURF_SAMPLE_SPLIT_1 = 0 -ADDR_SURF_SAMPLE_SPLIT_2 = 1 -ADDR_SURF_SAMPLE_SPLIT_4 = 2 -ADDR_SURF_SAMPLE_SPLIT_8 = 3 -SampleSplit = ctypes.c_uint32 # enum - -# values for enumeration 'PipeConfig' -PipeConfig__enumvalues = { - 0: 'ADDR_SURF_P2', - 1: 'ADDR_SURF_P2_RESERVED0', - 2: 'ADDR_SURF_P2_RESERVED1', - 3: 'ADDR_SURF_P2_RESERVED2', - 4: 'ADDR_SURF_P4_8x16', - 5: 'ADDR_SURF_P4_16x16', - 6: 'ADDR_SURF_P4_16x32', - 7: 'ADDR_SURF_P4_32x32', - 8: 'ADDR_SURF_P8_16x16_8x16', - 9: 'ADDR_SURF_P8_16x32_8x16', - 10: 'ADDR_SURF_P8_32x32_8x16', - 11: 'ADDR_SURF_P8_16x32_16x16', - 12: 'ADDR_SURF_P8_32x32_16x16', - 13: 'ADDR_SURF_P8_32x32_16x32', - 14: 'ADDR_SURF_P8_32x64_32x32', - 15: 'ADDR_SURF_P8_RESERVED0', - 16: 'ADDR_SURF_P16_32x32_8x16', - 17: 'ADDR_SURF_P16_32x32_16x16', -} -ADDR_SURF_P2 = 0 -ADDR_SURF_P2_RESERVED0 = 1 -ADDR_SURF_P2_RESERVED1 = 2 -ADDR_SURF_P2_RESERVED2 = 3 -ADDR_SURF_P4_8x16 = 4 -ADDR_SURF_P4_16x16 = 5 -ADDR_SURF_P4_16x32 = 6 -ADDR_SURF_P4_32x32 = 7 -ADDR_SURF_P8_16x16_8x16 = 8 -ADDR_SURF_P8_16x32_8x16 = 9 -ADDR_SURF_P8_32x32_8x16 = 10 -ADDR_SURF_P8_16x32_16x16 = 11 -ADDR_SURF_P8_32x32_16x16 = 12 -ADDR_SURF_P8_32x32_16x32 = 13 -ADDR_SURF_P8_32x64_32x32 = 14 -ADDR_SURF_P8_RESERVED0 = 15 -ADDR_SURF_P16_32x32_8x16 = 16 -ADDR_SURF_P16_32x32_16x16 = 17 -PipeConfig = ctypes.c_uint32 # enum - -# values for enumeration 'SeEnable' -SeEnable__enumvalues = { - 0: 'ADDR_CONFIG_DISABLE_SE', - 1: 'ADDR_CONFIG_ENABLE_SE', -} -ADDR_CONFIG_DISABLE_SE = 0 -ADDR_CONFIG_ENABLE_SE = 1 -SeEnable = ctypes.c_uint32 # enum - -# values for enumeration 'NumBanks' -NumBanks__enumvalues = { - 0: 'ADDR_SURF_2_BANK', - 1: 'ADDR_SURF_4_BANK', - 2: 'ADDR_SURF_8_BANK', - 3: 'ADDR_SURF_16_BANK', -} -ADDR_SURF_2_BANK = 0 -ADDR_SURF_4_BANK = 1 -ADDR_SURF_8_BANK = 2 -ADDR_SURF_16_BANK = 3 -NumBanks = ctypes.c_uint32 # enum - -# values for enumeration 'BankWidth' -BankWidth__enumvalues = { - 0: 'ADDR_SURF_BANK_WIDTH_1', - 1: 'ADDR_SURF_BANK_WIDTH_2', - 2: 'ADDR_SURF_BANK_WIDTH_4', - 3: 'ADDR_SURF_BANK_WIDTH_8', -} -ADDR_SURF_BANK_WIDTH_1 = 0 -ADDR_SURF_BANK_WIDTH_2 = 1 -ADDR_SURF_BANK_WIDTH_4 = 2 -ADDR_SURF_BANK_WIDTH_8 = 3 -BankWidth = ctypes.c_uint32 # enum - -# values for enumeration 'BankHeight' -BankHeight__enumvalues = { - 0: 'ADDR_SURF_BANK_HEIGHT_1', - 1: 'ADDR_SURF_BANK_HEIGHT_2', - 2: 'ADDR_SURF_BANK_HEIGHT_4', - 3: 'ADDR_SURF_BANK_HEIGHT_8', -} -ADDR_SURF_BANK_HEIGHT_1 = 0 -ADDR_SURF_BANK_HEIGHT_2 = 1 -ADDR_SURF_BANK_HEIGHT_4 = 2 -ADDR_SURF_BANK_HEIGHT_8 = 3 -BankHeight = ctypes.c_uint32 # enum - -# values for enumeration 'BankWidthHeight' -BankWidthHeight__enumvalues = { - 0: 'ADDR_SURF_BANK_WH_1', - 1: 'ADDR_SURF_BANK_WH_2', - 2: 'ADDR_SURF_BANK_WH_4', - 3: 'ADDR_SURF_BANK_WH_8', -} -ADDR_SURF_BANK_WH_1 = 0 -ADDR_SURF_BANK_WH_2 = 1 -ADDR_SURF_BANK_WH_4 = 2 -ADDR_SURF_BANK_WH_8 = 3 -BankWidthHeight = ctypes.c_uint32 # enum - -# values for enumeration 'MacroTileAspect' -MacroTileAspect__enumvalues = { - 0: 'ADDR_SURF_MACRO_ASPECT_1', - 1: 'ADDR_SURF_MACRO_ASPECT_2', - 2: 'ADDR_SURF_MACRO_ASPECT_4', - 3: 'ADDR_SURF_MACRO_ASPECT_8', -} -ADDR_SURF_MACRO_ASPECT_1 = 0 -ADDR_SURF_MACRO_ASPECT_2 = 1 -ADDR_SURF_MACRO_ASPECT_4 = 2 -ADDR_SURF_MACRO_ASPECT_8 = 3 -MacroTileAspect = ctypes.c_uint32 # enum - -# values for enumeration 'GATCL1RequestType' -GATCL1RequestType__enumvalues = { - 0: 'GATCL1_TYPE_NORMAL', - 1: 'GATCL1_TYPE_SHOOTDOWN', - 2: 'GATCL1_TYPE_BYPASS', -} -GATCL1_TYPE_NORMAL = 0 -GATCL1_TYPE_SHOOTDOWN = 1 -GATCL1_TYPE_BYPASS = 2 -GATCL1RequestType = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL1RequestType' -UTCL1RequestType__enumvalues = { - 0: 'UTCL1_TYPE_NORMAL', - 1: 'UTCL1_TYPE_SHOOTDOWN', - 2: 'UTCL1_TYPE_BYPASS', -} -UTCL1_TYPE_NORMAL = 0 -UTCL1_TYPE_SHOOTDOWN = 1 -UTCL1_TYPE_BYPASS = 2 -UTCL1RequestType = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL1FaultType' -UTCL1FaultType__enumvalues = { - 0: 'UTCL1_XNACK_SUCCESS', - 1: 'UTCL1_XNACK_RETRY', - 2: 'UTCL1_XNACK_PRT', - 3: 'UTCL1_XNACK_NO_RETRY', -} -UTCL1_XNACK_SUCCESS = 0 -UTCL1_XNACK_RETRY = 1 -UTCL1_XNACK_PRT = 2 -UTCL1_XNACK_NO_RETRY = 3 -UTCL1FaultType = ctypes.c_uint32 # enum - -# values for enumeration 'TCC_CACHE_POLICIES' -TCC_CACHE_POLICIES__enumvalues = { - 0: 'TCC_CACHE_POLICY_LRU', - 1: 'TCC_CACHE_POLICY_STREAM', -} -TCC_CACHE_POLICY_LRU = 0 -TCC_CACHE_POLICY_STREAM = 1 -TCC_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'MTYPE' -MTYPE__enumvalues = { - 0: 'MTYPE_NC', - 1: 'MTYPE_WC', - 1: 'MTYPE_RW', - 2: 'MTYPE_CC', - 3: 'MTYPE_UC', -} -MTYPE_NC = 0 -MTYPE_WC = 1 -MTYPE_RW = 1 -MTYPE_CC = 2 -MTYPE_UC = 3 -MTYPE = ctypes.c_uint32 # enum - -# values for enumeration 'RMI_CID' -RMI_CID__enumvalues = { - 0: 'RMI_CID_CC', - 1: 'RMI_CID_FC', - 2: 'RMI_CID_CM', - 3: 'RMI_CID_DC', - 4: 'RMI_CID_Z', - 5: 'RMI_CID_S', - 6: 'RMI_CID_TILE', - 7: 'RMI_CID_ZPCPSD', -} -RMI_CID_CC = 0 -RMI_CID_FC = 1 -RMI_CID_CM = 2 -RMI_CID_DC = 3 -RMI_CID_Z = 4 -RMI_CID_S = 5 -RMI_CID_TILE = 6 -RMI_CID_ZPCPSD = 7 -RMI_CID = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_COUNTER_MODE' -PERFMON_COUNTER_MODE__enumvalues = { - 0: 'PERFMON_COUNTER_MODE_ACCUM', - 1: 'PERFMON_COUNTER_MODE_ACTIVE_CYCLES', - 2: 'PERFMON_COUNTER_MODE_MAX', - 3: 'PERFMON_COUNTER_MODE_DIRTY', - 4: 'PERFMON_COUNTER_MODE_SAMPLE', - 5: 'PERFMON_COUNTER_MODE_CYCLES_SINCE_FIRST_EVENT', - 6: 'PERFMON_COUNTER_MODE_CYCLES_SINCE_LAST_EVENT', - 7: 'PERFMON_COUNTER_MODE_CYCLES_GE_HI', - 8: 'PERFMON_COUNTER_MODE_CYCLES_EQ_HI', - 9: 'PERFMON_COUNTER_MODE_INACTIVE_CYCLES', - 15: 'PERFMON_COUNTER_MODE_RESERVED', -} -PERFMON_COUNTER_MODE_ACCUM = 0 -PERFMON_COUNTER_MODE_ACTIVE_CYCLES = 1 -PERFMON_COUNTER_MODE_MAX = 2 -PERFMON_COUNTER_MODE_DIRTY = 3 -PERFMON_COUNTER_MODE_SAMPLE = 4 -PERFMON_COUNTER_MODE_CYCLES_SINCE_FIRST_EVENT = 5 -PERFMON_COUNTER_MODE_CYCLES_SINCE_LAST_EVENT = 6 -PERFMON_COUNTER_MODE_CYCLES_GE_HI = 7 -PERFMON_COUNTER_MODE_CYCLES_EQ_HI = 8 -PERFMON_COUNTER_MODE_INACTIVE_CYCLES = 9 -PERFMON_COUNTER_MODE_RESERVED = 15 -PERFMON_COUNTER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_SPM_MODE' -PERFMON_SPM_MODE__enumvalues = { - 0: 'PERFMON_SPM_MODE_OFF', - 1: 'PERFMON_SPM_MODE_16BIT_CLAMP', - 2: 'PERFMON_SPM_MODE_16BIT_NO_CLAMP', - 3: 'PERFMON_SPM_MODE_32BIT_CLAMP', - 4: 'PERFMON_SPM_MODE_32BIT_NO_CLAMP', - 5: 'PERFMON_SPM_MODE_RESERVED_5', - 6: 'PERFMON_SPM_MODE_RESERVED_6', - 7: 'PERFMON_SPM_MODE_RESERVED_7', - 8: 'PERFMON_SPM_MODE_TEST_MODE_0', - 9: 'PERFMON_SPM_MODE_TEST_MODE_1', - 10: 'PERFMON_SPM_MODE_TEST_MODE_2', -} -PERFMON_SPM_MODE_OFF = 0 -PERFMON_SPM_MODE_16BIT_CLAMP = 1 -PERFMON_SPM_MODE_16BIT_NO_CLAMP = 2 -PERFMON_SPM_MODE_32BIT_CLAMP = 3 -PERFMON_SPM_MODE_32BIT_NO_CLAMP = 4 -PERFMON_SPM_MODE_RESERVED_5 = 5 -PERFMON_SPM_MODE_RESERVED_6 = 6 -PERFMON_SPM_MODE_RESERVED_7 = 7 -PERFMON_SPM_MODE_TEST_MODE_0 = 8 -PERFMON_SPM_MODE_TEST_MODE_1 = 9 -PERFMON_SPM_MODE_TEST_MODE_2 = 10 -PERFMON_SPM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SurfaceTiling' -SurfaceTiling__enumvalues = { - 0: 'ARRAY_LINEAR', - 1: 'ARRAY_TILED', -} -ARRAY_LINEAR = 0 -ARRAY_TILED = 1 -SurfaceTiling = ctypes.c_uint32 # enum - -# values for enumeration 'SurfaceArray' -SurfaceArray__enumvalues = { - 0: 'ARRAY_1D', - 1: 'ARRAY_2D', - 2: 'ARRAY_3D', - 3: 'ARRAY_3D_SLICE', -} -ARRAY_1D = 0 -ARRAY_2D = 1 -ARRAY_3D = 2 -ARRAY_3D_SLICE = 3 -SurfaceArray = ctypes.c_uint32 # enum - -# values for enumeration 'ColorArray' -ColorArray__enumvalues = { - 0: 'ARRAY_2D_ALT_COLOR', - 1: 'ARRAY_2D_COLOR', - 3: 'ARRAY_3D_SLICE_COLOR', -} -ARRAY_2D_ALT_COLOR = 0 -ARRAY_2D_COLOR = 1 -ARRAY_3D_SLICE_COLOR = 3 -ColorArray = ctypes.c_uint32 # enum - -# values for enumeration 'DepthArray' -DepthArray__enumvalues = { - 0: 'ARRAY_2D_ALT_DEPTH', - 1: 'ARRAY_2D_DEPTH', -} -ARRAY_2D_ALT_DEPTH = 0 -ARRAY_2D_DEPTH = 1 -DepthArray = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_NUM_SIMD_PER_CU' -ENUM_NUM_SIMD_PER_CU__enumvalues = { - 4: 'NUM_SIMD_PER_CU', -} -NUM_SIMD_PER_CU = 4 -ENUM_NUM_SIMD_PER_CU = ctypes.c_uint32 # enum - -# values for enumeration 'DSM_ENABLE_ERROR_INJECT' -DSM_ENABLE_ERROR_INJECT__enumvalues = { - 0: 'DSM_ENABLE_ERROR_INJECT_FED_IN', - 1: 'DSM_ENABLE_ERROR_INJECT_SINGLE', - 2: 'DSM_ENABLE_ERROR_INJECT_DOUBLE', - 3: 'DSM_ENABLE_ERROR_INJECT_DOUBLE_LIMITED', -} -DSM_ENABLE_ERROR_INJECT_FED_IN = 0 -DSM_ENABLE_ERROR_INJECT_SINGLE = 1 -DSM_ENABLE_ERROR_INJECT_DOUBLE = 2 -DSM_ENABLE_ERROR_INJECT_DOUBLE_LIMITED = 3 -DSM_ENABLE_ERROR_INJECT = ctypes.c_uint32 # enum - -# values for enumeration 'DSM_SELECT_INJECT_DELAY' -DSM_SELECT_INJECT_DELAY__enumvalues = { - 0: 'DSM_SELECT_INJECT_DELAY_NO_DELAY', - 1: 'DSM_SELECT_INJECT_DELAY_DELAY_ERROR', -} -DSM_SELECT_INJECT_DELAY_NO_DELAY = 0 -DSM_SELECT_INJECT_DELAY_DELAY_ERROR = 1 -DSM_SELECT_INJECT_DELAY = ctypes.c_uint32 # enum - -# values for enumeration 'SWIZZLE_TYPE_ENUM' -SWIZZLE_TYPE_ENUM__enumvalues = { - 0: 'SW_Z', - 1: 'SW_S', - 2: 'SW_D', - 3: 'SW_R', - 4: 'SW_L', -} -SW_Z = 0 -SW_S = 1 -SW_D = 2 -SW_R = 3 -SW_L = 4 -SWIZZLE_TYPE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'TC_MICRO_TILE_MODE' -TC_MICRO_TILE_MODE__enumvalues = { - 0: 'MICRO_TILE_MODE_LINEAR', - 1: 'MICRO_TILE_MODE_ROTATED', - 2: 'MICRO_TILE_MODE_STD_2D', - 3: 'MICRO_TILE_MODE_STD_3D', - 4: 'MICRO_TILE_MODE_DISPLAY_2D', - 5: 'MICRO_TILE_MODE_DISPLAY_3D', - 6: 'MICRO_TILE_MODE_Z_2D', - 7: 'MICRO_TILE_MODE_Z_3D', -} -MICRO_TILE_MODE_LINEAR = 0 -MICRO_TILE_MODE_ROTATED = 1 -MICRO_TILE_MODE_STD_2D = 2 -MICRO_TILE_MODE_STD_3D = 3 -MICRO_TILE_MODE_DISPLAY_2D = 4 -MICRO_TILE_MODE_DISPLAY_3D = 5 -MICRO_TILE_MODE_Z_2D = 6 -MICRO_TILE_MODE_Z_3D = 7 -TC_MICRO_TILE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SWIZZLE_MODE_ENUM' -SWIZZLE_MODE_ENUM__enumvalues = { - 0: 'SW_LINEAR', - 1: 'SW_256B_S', - 2: 'SW_256B_D', - 3: 'SW_256B_R', - 4: 'SW_4KB_Z', - 5: 'SW_4KB_S', - 6: 'SW_4KB_D', - 7: 'SW_4KB_R', - 8: 'SW_64KB_Z', - 9: 'SW_64KB_S', - 10: 'SW_64KB_D', - 11: 'SW_64KB_R', - 12: 'SW_VAR_Z', - 13: 'SW_VAR_S', - 14: 'SW_VAR_D', - 15: 'SW_VAR_R', - 16: 'SW_RESERVED_16', - 17: 'SW_RESERVED_17', - 18: 'SW_RESERVED_18', - 19: 'SW_RESERVED_19', - 20: 'SW_4KB_Z_X', - 21: 'SW_4KB_S_X', - 22: 'SW_4KB_D_X', - 23: 'SW_4KB_R_X', - 24: 'SW_64KB_Z_X', - 25: 'SW_64KB_S_X', - 26: 'SW_64KB_D_X', - 27: 'SW_64KB_R_X', - 28: 'SW_VAR_Z_X', - 29: 'SW_VAR_S_X', - 30: 'SW_VAR_D_X', - 31: 'SW_VAR_R_X', - 32: 'SW_RESERVED_12', - 33: 'SW_RESERVED_13', - 34: 'SW_RESERVED_14', - 35: 'SW_RESERVED_15', -} -SW_LINEAR = 0 -SW_256B_S = 1 -SW_256B_D = 2 -SW_256B_R = 3 -SW_4KB_Z = 4 -SW_4KB_S = 5 -SW_4KB_D = 6 -SW_4KB_R = 7 -SW_64KB_Z = 8 -SW_64KB_S = 9 -SW_64KB_D = 10 -SW_64KB_R = 11 -SW_VAR_Z = 12 -SW_VAR_S = 13 -SW_VAR_D = 14 -SW_VAR_R = 15 -SW_RESERVED_16 = 16 -SW_RESERVED_17 = 17 -SW_RESERVED_18 = 18 -SW_RESERVED_19 = 19 -SW_4KB_Z_X = 20 -SW_4KB_S_X = 21 -SW_4KB_D_X = 22 -SW_4KB_R_X = 23 -SW_64KB_Z_X = 24 -SW_64KB_S_X = 25 -SW_64KB_D_X = 26 -SW_64KB_R_X = 27 -SW_VAR_Z_X = 28 -SW_VAR_S_X = 29 -SW_VAR_D_X = 30 -SW_VAR_R_X = 31 -SW_RESERVED_12 = 32 -SW_RESERVED_13 = 33 -SW_RESERVED_14 = 34 -SW_RESERVED_15 = 35 -SWIZZLE_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'PipeTiling' -PipeTiling__enumvalues = { - 0: 'CONFIG_1_PIPE', - 1: 'CONFIG_2_PIPE', - 2: 'CONFIG_4_PIPE', - 3: 'CONFIG_8_PIPE', -} -CONFIG_1_PIPE = 0 -CONFIG_2_PIPE = 1 -CONFIG_4_PIPE = 2 -CONFIG_8_PIPE = 3 -PipeTiling = ctypes.c_uint32 # enum - -# values for enumeration 'BankTiling' -BankTiling__enumvalues = { - 0: 'CONFIG_4_BANK', - 1: 'CONFIG_8_BANK', -} -CONFIG_4_BANK = 0 -CONFIG_8_BANK = 1 -BankTiling = ctypes.c_uint32 # enum - -# values for enumeration 'GroupInterleave' -GroupInterleave__enumvalues = { - 0: 'CONFIG_256B_GROUP', - 1: 'CONFIG_512B_GROUP', -} -CONFIG_256B_GROUP = 0 -CONFIG_512B_GROUP = 1 -GroupInterleave = ctypes.c_uint32 # enum - -# values for enumeration 'RowTiling' -RowTiling__enumvalues = { - 0: 'CONFIG_1KB_ROW', - 1: 'CONFIG_2KB_ROW', - 2: 'CONFIG_4KB_ROW', - 3: 'CONFIG_8KB_ROW', - 4: 'CONFIG_1KB_ROW_OPT', - 5: 'CONFIG_2KB_ROW_OPT', - 6: 'CONFIG_4KB_ROW_OPT', - 7: 'CONFIG_8KB_ROW_OPT', -} -CONFIG_1KB_ROW = 0 -CONFIG_2KB_ROW = 1 -CONFIG_4KB_ROW = 2 -CONFIG_8KB_ROW = 3 -CONFIG_1KB_ROW_OPT = 4 -CONFIG_2KB_ROW_OPT = 5 -CONFIG_4KB_ROW_OPT = 6 -CONFIG_8KB_ROW_OPT = 7 -RowTiling = ctypes.c_uint32 # enum - -# values for enumeration 'BankSwapBytes' -BankSwapBytes__enumvalues = { - 0: 'CONFIG_128B_SWAPS', - 1: 'CONFIG_256B_SWAPS', - 2: 'CONFIG_512B_SWAPS', - 3: 'CONFIG_1KB_SWAPS', -} -CONFIG_128B_SWAPS = 0 -CONFIG_256B_SWAPS = 1 -CONFIG_512B_SWAPS = 2 -CONFIG_1KB_SWAPS = 3 -BankSwapBytes = ctypes.c_uint32 # enum - -# values for enumeration 'SampleSplitBytes' -SampleSplitBytes__enumvalues = { - 0: 'CONFIG_1KB_SPLIT', - 1: 'CONFIG_2KB_SPLIT', - 2: 'CONFIG_4KB_SPLIT', - 3: 'CONFIG_8KB_SPLIT', -} -CONFIG_1KB_SPLIT = 0 -CONFIG_2KB_SPLIT = 1 -CONFIG_4KB_SPLIT = 2 -CONFIG_8KB_SPLIT = 3 -SampleSplitBytes = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_NOT_SET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_SET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_NOT_SET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_SET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_NOT_SET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_SET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_NOT_SET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_SET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_NOT_SET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_SET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_NOT_SET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_SET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_NO_TRAFFIC_PRIORITY', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_YES_TRAFFIC_PRIORITY', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_NO_TRAFFIC_PRIORITY = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_YES_TRAFFIC_PRIORITY = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_DISABLED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLED', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_DISABLED = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLED = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_DISABLED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLED', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_DISABLED = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLED = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_DISABLED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_ENABLED', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_DISABLED = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_ENABLED = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RUN', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_DO_RUN', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RUN = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_DO_RUN = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RESET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_IS_RESET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RESET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_IS_RESET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_48KHZ = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_44P1KHZ = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY1 = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY2 = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY4 = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 5: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 6: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 7: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY1 = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY3 = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED = 5 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED = 6 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED = 7 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_16', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_20', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_24', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 5: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_8_RESERVED = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_16 = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_20 = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_24 = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_32_RESERVED = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_RESERVED = 5 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_1', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_2', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_3', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_4', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_5', - 5: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_6', - 6: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_7', - 7: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_8', - 8: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_9_RESERVED', - 9: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_10_RESERVED', - 10: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_11_RESERVED', - 11: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_12_RESERVED', - 12: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_13_RESERVED', - 13: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_14_RESERVED', - 14: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_15_RESERVED', - 15: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_16_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_1 = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_2 = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_3 = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_4 = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_5 = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_6 = 5 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_7 = 6 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_8 = 7 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_9_RESERVED = 8 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_10_RESERVED = 9 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_11_RESERVED = 10 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_12_RESERVED = 11 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_13_RESERVED = 12 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_14_RESERVED = 13 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_15_RESERVED = 14 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_16_RESERVED = 15 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_CONTROL_BLND_MODE' -BLNDV_CONTROL_BLND_MODE__enumvalues = { - 0: 'BLNDV_CONTROL_BLND_MODE_CURRENT_PIPE_ONLY', - 1: 'BLNDV_CONTROL_BLND_MODE_OTHER_PIPE_ONLY', - 2: 'BLNDV_CONTROL_BLND_MODE_ALPHA_BLENDING_MODE', - 3: 'BLNDV_CONTROL_BLND_MODE_OTHER_STEREO_TYPE', -} -BLNDV_CONTROL_BLND_MODE_CURRENT_PIPE_ONLY = 0 -BLNDV_CONTROL_BLND_MODE_OTHER_PIPE_ONLY = 1 -BLNDV_CONTROL_BLND_MODE_ALPHA_BLENDING_MODE = 2 -BLNDV_CONTROL_BLND_MODE_OTHER_STEREO_TYPE = 3 -BLNDV_CONTROL_BLND_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_CONTROL_BLND_STEREO_TYPE' -BLNDV_CONTROL_BLND_STEREO_TYPE__enumvalues = { - 0: 'BLNDV_CONTROL_BLND_STEREO_TYPE_NON_SINGLE_PIPE_STEREO', - 1: 'BLNDV_CONTROL_BLND_STEREO_TYPE_SIDE_BY_SIDE_SINGLE_PIPE_STEREO', - 2: 'BLNDV_CONTROL_BLND_STEREO_TYPE_TOP_BOTTOM_SINGLE_PIPE_STEREO', - 3: 'BLNDV_CONTROL_BLND_STEREO_TYPE_UNUSED', -} -BLNDV_CONTROL_BLND_STEREO_TYPE_NON_SINGLE_PIPE_STEREO = 0 -BLNDV_CONTROL_BLND_STEREO_TYPE_SIDE_BY_SIDE_SINGLE_PIPE_STEREO = 1 -BLNDV_CONTROL_BLND_STEREO_TYPE_TOP_BOTTOM_SINGLE_PIPE_STEREO = 2 -BLNDV_CONTROL_BLND_STEREO_TYPE_UNUSED = 3 -BLNDV_CONTROL_BLND_STEREO_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_CONTROL_BLND_STEREO_POLARITY' -BLNDV_CONTROL_BLND_STEREO_POLARITY__enumvalues = { - 0: 'BLNDV_CONTROL_BLND_STEREO_POLARITY_LOW', - 1: 'BLNDV_CONTROL_BLND_STEREO_POLARITY_HIGH', -} -BLNDV_CONTROL_BLND_STEREO_POLARITY_LOW = 0 -BLNDV_CONTROL_BLND_STEREO_POLARITY_HIGH = 1 -BLNDV_CONTROL_BLND_STEREO_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_CONTROL_BLND_FEEDTHROUGH_EN' -BLNDV_CONTROL_BLND_FEEDTHROUGH_EN__enumvalues = { - 0: 'BLNDV_CONTROL_BLND_FEEDTHROUGH_EN_FALSE', - 1: 'BLNDV_CONTROL_BLND_FEEDTHROUGH_EN_TRUE', -} -BLNDV_CONTROL_BLND_FEEDTHROUGH_EN_FALSE = 0 -BLNDV_CONTROL_BLND_FEEDTHROUGH_EN_TRUE = 1 -BLNDV_CONTROL_BLND_FEEDTHROUGH_EN = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_CONTROL_BLND_ALPHA_MODE' -BLNDV_CONTROL_BLND_ALPHA_MODE__enumvalues = { - 0: 'BLNDV_CONTROL_BLND_ALPHA_MODE_CURRENT_PIXEL_ALPHA', - 1: 'BLNDV_CONTROL_BLND_ALPHA_MODE_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN', - 2: 'BLNDV_CONTROL_BLND_ALPHA_MODE_GLOBAL_ALPHA_ONLY', - 3: 'BLNDV_CONTROL_BLND_ALPHA_MODE_UNUSED', -} -BLNDV_CONTROL_BLND_ALPHA_MODE_CURRENT_PIXEL_ALPHA = 0 -BLNDV_CONTROL_BLND_ALPHA_MODE_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN = 1 -BLNDV_CONTROL_BLND_ALPHA_MODE_GLOBAL_ALPHA_ONLY = 2 -BLNDV_CONTROL_BLND_ALPHA_MODE_UNUSED = 3 -BLNDV_CONTROL_BLND_ALPHA_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_CONTROL_BLND_ACTIVE_OVERLAP_ONLY' -BLNDV_CONTROL_BLND_ACTIVE_OVERLAP_ONLY__enumvalues = { - 0: 'BLNDV_CONTROL_BLND_ACTIVE_OVERLAP_ONLY_FALSE', - 1: 'BLNDV_CONTROL_BLND_ACTIVE_OVERLAP_ONLY_TRUE', -} -BLNDV_CONTROL_BLND_ACTIVE_OVERLAP_ONLY_FALSE = 0 -BLNDV_CONTROL_BLND_ACTIVE_OVERLAP_ONLY_TRUE = 1 -BLNDV_CONTROL_BLND_ACTIVE_OVERLAP_ONLY = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_CONTROL_BLND_MULTIPLIED_MODE' -BLNDV_CONTROL_BLND_MULTIPLIED_MODE__enumvalues = { - 0: 'BLNDV_CONTROL_BLND_MULTIPLIED_MODE_FALSE', - 1: 'BLNDV_CONTROL_BLND_MULTIPLIED_MODE_TRUE', -} -BLNDV_CONTROL_BLND_MULTIPLIED_MODE_FALSE = 0 -BLNDV_CONTROL_BLND_MULTIPLIED_MODE_TRUE = 1 -BLNDV_CONTROL_BLND_MULTIPLIED_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_SM_CONTROL2_SM_MODE' -BLNDV_SM_CONTROL2_SM_MODE__enumvalues = { - 0: 'BLNDV_SM_CONTROL2_SM_MODE_SINGLE_PLANE', - 2: 'BLNDV_SM_CONTROL2_SM_MODE_ROW_SUBSAMPLING', - 4: 'BLNDV_SM_CONTROL2_SM_MODE_COLUMN_SUBSAMPLING', - 6: 'BLNDV_SM_CONTROL2_SM_MODE_CHECKERBOARD_SUBSAMPLING', -} -BLNDV_SM_CONTROL2_SM_MODE_SINGLE_PLANE = 0 -BLNDV_SM_CONTROL2_SM_MODE_ROW_SUBSAMPLING = 2 -BLNDV_SM_CONTROL2_SM_MODE_COLUMN_SUBSAMPLING = 4 -BLNDV_SM_CONTROL2_SM_MODE_CHECKERBOARD_SUBSAMPLING = 6 -BLNDV_SM_CONTROL2_SM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_SM_CONTROL2_SM_FRAME_ALTERNATE' -BLNDV_SM_CONTROL2_SM_FRAME_ALTERNATE__enumvalues = { - 0: 'BLNDV_SM_CONTROL2_SM_FRAME_ALTERNATE_FALSE', - 1: 'BLNDV_SM_CONTROL2_SM_FRAME_ALTERNATE_TRUE', -} -BLNDV_SM_CONTROL2_SM_FRAME_ALTERNATE_FALSE = 0 -BLNDV_SM_CONTROL2_SM_FRAME_ALTERNATE_TRUE = 1 -BLNDV_SM_CONTROL2_SM_FRAME_ALTERNATE = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_SM_CONTROL2_SM_FIELD_ALTERNATE' -BLNDV_SM_CONTROL2_SM_FIELD_ALTERNATE__enumvalues = { - 0: 'BLNDV_SM_CONTROL2_SM_FIELD_ALTERNATE_FALSE', - 1: 'BLNDV_SM_CONTROL2_SM_FIELD_ALTERNATE_TRUE', -} -BLNDV_SM_CONTROL2_SM_FIELD_ALTERNATE_FALSE = 0 -BLNDV_SM_CONTROL2_SM_FIELD_ALTERNATE_TRUE = 1 -BLNDV_SM_CONTROL2_SM_FIELD_ALTERNATE = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL' -BLNDV_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL__enumvalues = { - 0: 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_NO_FORCE', - 1: 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_RESERVED', - 2: 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_FORCE_LOW', - 3: 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_FORCE_HIGH', -} -BLNDV_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_NO_FORCE = 0 -BLNDV_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_RESERVED = 1 -BLNDV_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_FORCE_LOW = 2 -BLNDV_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_FORCE_HIGH = 3 -BLNDV_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL' -BLNDV_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL__enumvalues = { - 0: 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_NO_FORCE', - 1: 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_RESERVED', - 2: 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_FORCE_LOW', - 3: 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_FORCE_HIGH', -} -BLNDV_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_NO_FORCE = 0 -BLNDV_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_RESERVED = 1 -BLNDV_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_FORCE_LOW = 2 -BLNDV_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_FORCE_HIGH = 3 -BLNDV_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_CONTROL2_PTI_ENABLE' -BLNDV_CONTROL2_PTI_ENABLE__enumvalues = { - 0: 'BLNDV_CONTROL2_PTI_ENABLE_FALSE', - 1: 'BLNDV_CONTROL2_PTI_ENABLE_TRUE', -} -BLNDV_CONTROL2_PTI_ENABLE_FALSE = 0 -BLNDV_CONTROL2_PTI_ENABLE_TRUE = 1 -BLNDV_CONTROL2_PTI_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_CONTROL2_BLND_SUPERAA_DEGAMMA_EN' -BLNDV_CONTROL2_BLND_SUPERAA_DEGAMMA_EN__enumvalues = { - 0: 'BLNDV_CONTROL2_BLND_SUPERAA_DEGAMMA_EN_FALSE', - 1: 'BLNDV_CONTROL2_BLND_SUPERAA_DEGAMMA_EN_TRUE', -} -BLNDV_CONTROL2_BLND_SUPERAA_DEGAMMA_EN_FALSE = 0 -BLNDV_CONTROL2_BLND_SUPERAA_DEGAMMA_EN_TRUE = 1 -BLNDV_CONTROL2_BLND_SUPERAA_DEGAMMA_EN = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_CONTROL2_BLND_SUPERAA_REGAMMA_EN' -BLNDV_CONTROL2_BLND_SUPERAA_REGAMMA_EN__enumvalues = { - 0: 'BLNDV_CONTROL2_BLND_SUPERAA_REGAMMA_EN_FALSE', - 1: 'BLNDV_CONTROL2_BLND_SUPERAA_REGAMMA_EN_TRUE', -} -BLNDV_CONTROL2_BLND_SUPERAA_REGAMMA_EN_FALSE = 0 -BLNDV_CONTROL2_BLND_SUPERAA_REGAMMA_EN_TRUE = 1 -BLNDV_CONTROL2_BLND_SUPERAA_REGAMMA_EN = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK' -BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK__enumvalues = { - 0: 'BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK_FALSE', - 1: 'BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK_TRUE', -} -BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK_FALSE = 0 -BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK_TRUE = 1 -BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK' -BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK__enumvalues = { - 0: 'BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK_FALSE', - 1: 'BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK_TRUE', -} -BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK_FALSE = 0 -BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK_TRUE = 1 -BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK' -BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK__enumvalues = { - 0: 'BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK_FALSE', - 1: 'BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK_TRUE', -} -BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK_FALSE = 0 -BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK_TRUE = 1 -BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK' -BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK__enumvalues = { - 0: 'BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK_FALSE', - 1: 'BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK_TRUE', -} -BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK_FALSE = 0 -BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK_TRUE = 1 -BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK' -BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK__enumvalues = { - 0: 'BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK_FALSE', - 1: 'BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK_TRUE', -} -BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK_FALSE = 0 -BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK_TRUE = 1 -BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK' -BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK__enumvalues = { - 0: 'BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK_FALSE', - 1: 'BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK_TRUE', -} -BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK_FALSE = 0 -BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK_TRUE = 1 -BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK' -BLNDV_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK__enumvalues = { - 0: 'BLNDV_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK_FALSE', - 1: 'BLNDV_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK_TRUE', -} -BLNDV_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK_FALSE = 0 -BLNDV_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK_TRUE = 1 -BLNDV_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK' -BLNDV_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK__enumvalues = { - 0: 'BLNDV_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK_FALSE', - 1: 'BLNDV_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK_TRUE', -} -BLNDV_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK_FALSE = 0 -BLNDV_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK_TRUE = 1 -BLNDV_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE' -BLNDV_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE__enumvalues = { - 0: 'BLNDV_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE_FALSE', - 1: 'BLNDV_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE_TRUE', -} -BLNDV_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE_FALSE = 0 -BLNDV_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE_TRUE = 1 -BLNDV_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_DEBUG_BLND_CNV_MUX_SELECT' -BLNDV_DEBUG_BLND_CNV_MUX_SELECT__enumvalues = { - 0: 'BLNDV_DEBUG_BLND_CNV_MUX_SELECT_LOW', - 1: 'BLNDV_DEBUG_BLND_CNV_MUX_SELECT_HIGH', -} -BLNDV_DEBUG_BLND_CNV_MUX_SELECT_LOW = 0 -BLNDV_DEBUG_BLND_CNV_MUX_SELECT_HIGH = 1 -BLNDV_DEBUG_BLND_CNV_MUX_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'BLNDV_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN' -BLNDV_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN__enumvalues = { - 0: 'BLNDV_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN_FALSE', - 1: 'BLNDV_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN_TRUE', -} -BLNDV_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN_FALSE = 0 -BLNDV_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN_TRUE = 1 -BLNDV_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'LBV_PIXEL_DEPTH' -LBV_PIXEL_DEPTH__enumvalues = { - 0: 'PIXEL_DEPTH_30BPP', - 1: 'PIXEL_DEPTH_24BPP', - 2: 'PIXEL_DEPTH_18BPP', - 3: 'PIXEL_DEPTH_38BPP', -} -PIXEL_DEPTH_30BPP = 0 -PIXEL_DEPTH_24BPP = 1 -PIXEL_DEPTH_18BPP = 2 -PIXEL_DEPTH_38BPP = 3 -LBV_PIXEL_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'LBV_PIXEL_EXPAN_MODE' -LBV_PIXEL_EXPAN_MODE__enumvalues = { - 0: 'PIXEL_EXPAN_MODE_ZERO_EXP', - 1: 'PIXEL_EXPAN_MODE_DYN_EXP', -} -PIXEL_EXPAN_MODE_ZERO_EXP = 0 -PIXEL_EXPAN_MODE_DYN_EXP = 1 -LBV_PIXEL_EXPAN_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'LBV_INTERLEAVE_EN' -LBV_INTERLEAVE_EN__enumvalues = { - 0: 'INTERLEAVE_DIS', - 1: 'INTERLEAVE_EN', -} -INTERLEAVE_DIS = 0 -INTERLEAVE_EN = 1 -LBV_INTERLEAVE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'LBV_PIXEL_REDUCE_MODE' -LBV_PIXEL_REDUCE_MODE__enumvalues = { - 0: 'PIXEL_REDUCE_MODE_TRUNCATION', - 1: 'PIXEL_REDUCE_MODE_ROUNDING', -} -PIXEL_REDUCE_MODE_TRUNCATION = 0 -PIXEL_REDUCE_MODE_ROUNDING = 1 -LBV_PIXEL_REDUCE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'LBV_DYNAMIC_PIXEL_DEPTH' -LBV_DYNAMIC_PIXEL_DEPTH__enumvalues = { - 0: 'DYNAMIC_PIXEL_DEPTH_36BPP', - 1: 'DYNAMIC_PIXEL_DEPTH_30BPP', -} -DYNAMIC_PIXEL_DEPTH_36BPP = 0 -DYNAMIC_PIXEL_DEPTH_30BPP = 1 -LBV_DYNAMIC_PIXEL_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'LBV_DITHER_EN' -LBV_DITHER_EN__enumvalues = { - 0: 'DITHER_DIS', - 1: 'DITHER_EN', -} -DITHER_DIS = 0 -DITHER_EN = 1 -LBV_DITHER_EN = ctypes.c_uint32 # enum - -# values for enumeration 'LBV_DOWNSCALE_PREFETCH_EN' -LBV_DOWNSCALE_PREFETCH_EN__enumvalues = { - 0: 'DOWNSCALE_PREFETCH_DIS', - 1: 'DOWNSCALE_PREFETCH_EN', -} -DOWNSCALE_PREFETCH_DIS = 0 -DOWNSCALE_PREFETCH_EN = 1 -LBV_DOWNSCALE_PREFETCH_EN = ctypes.c_uint32 # enum - -# values for enumeration 'LBV_MEMORY_CONFIG' -LBV_MEMORY_CONFIG__enumvalues = { - 0: 'MEMORY_CONFIG_0', - 1: 'MEMORY_CONFIG_1', - 2: 'MEMORY_CONFIG_2', - 3: 'MEMORY_CONFIG_3', -} -MEMORY_CONFIG_0 = 0 -MEMORY_CONFIG_1 = 1 -MEMORY_CONFIG_2 = 2 -MEMORY_CONFIG_3 = 3 -LBV_MEMORY_CONFIG = ctypes.c_uint32 # enum - -# values for enumeration 'LBV_SYNC_RESET_SEL2' -LBV_SYNC_RESET_SEL2__enumvalues = { - 0: 'SYNC_RESET_SEL2_VBLANK', - 1: 'SYNC_RESET_SEL2_VSYNC', -} -SYNC_RESET_SEL2_VBLANK = 0 -SYNC_RESET_SEL2_VSYNC = 1 -LBV_SYNC_RESET_SEL2 = ctypes.c_uint32 # enum - -# values for enumeration 'LBV_SYNC_DURATION' -LBV_SYNC_DURATION__enumvalues = { - 0: 'SYNC_DURATION_16', - 1: 'SYNC_DURATION_32', - 2: 'SYNC_DURATION_64', - 3: 'SYNC_DURATION_128', -} -SYNC_DURATION_16 = 0 -SYNC_DURATION_32 = 1 -SYNC_DURATION_64 = 2 -SYNC_DURATION_128 = 3 -LBV_SYNC_DURATION = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_CONTROL_CRTC_START_POINT_CNTL' -CRTC_CONTROL_CRTC_START_POINT_CNTL__enumvalues = { - 0: 'CRTC_CONTROL_CRTC_START_POINT_CNTL_NORMAL', - 1: 'CRTC_CONTROL_CRTC_START_POINT_CNTL_DP', -} -CRTC_CONTROL_CRTC_START_POINT_CNTL_NORMAL = 0 -CRTC_CONTROL_CRTC_START_POINT_CNTL_DP = 1 -CRTC_CONTROL_CRTC_START_POINT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_CONTROL_CRTC_FIELD_NUMBER_CNTL' -CRTC_CONTROL_CRTC_FIELD_NUMBER_CNTL__enumvalues = { - 0: 'CRTC_CONTROL_CRTC_FIELD_NUMBER_CNTL_NORMAL', - 1: 'CRTC_CONTROL_CRTC_FIELD_NUMBER_CNTL_DP', -} -CRTC_CONTROL_CRTC_FIELD_NUMBER_CNTL_NORMAL = 0 -CRTC_CONTROL_CRTC_FIELD_NUMBER_CNTL_DP = 1 -CRTC_CONTROL_CRTC_FIELD_NUMBER_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_CONTROL_CRTC_DISABLE_POINT_CNTL' -CRTC_CONTROL_CRTC_DISABLE_POINT_CNTL__enumvalues = { - 0: 'CRTC_CONTROL_CRTC_DISABLE_POINT_CNTL_DISABLE', - 1: 'CRTC_CONTROL_CRTC_DISABLE_POINT_CNTL_DISABLE_CURRENT', - 2: 'CRTC_CONTROL_CRTC_DISABLE_POINT_CNTL_RESERVED', - 3: 'CRTC_CONTROL_CRTC_DISABLE_POINT_CNTL_DISABLE_FIRST', -} -CRTC_CONTROL_CRTC_DISABLE_POINT_CNTL_DISABLE = 0 -CRTC_CONTROL_CRTC_DISABLE_POINT_CNTL_DISABLE_CURRENT = 1 -CRTC_CONTROL_CRTC_DISABLE_POINT_CNTL_RESERVED = 2 -CRTC_CONTROL_CRTC_DISABLE_POINT_CNTL_DISABLE_FIRST = 3 -CRTC_CONTROL_CRTC_DISABLE_POINT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_CONTROL_CRTC_FIELD_NUMBER_POLARITY' -CRTC_CONTROL_CRTC_FIELD_NUMBER_POLARITY__enumvalues = { - 0: 'CRTC_CONTROL_CRTC_FIELD_NUMBER_POLARITY_FALSE', - 1: 'CRTC_CONTROL_CRTC_FIELD_NUMBER_POLARITY_TRUE', -} -CRTC_CONTROL_CRTC_FIELD_NUMBER_POLARITY_FALSE = 0 -CRTC_CONTROL_CRTC_FIELD_NUMBER_POLARITY_TRUE = 1 -CRTC_CONTROL_CRTC_FIELD_NUMBER_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_CONTROL_CRTC_DISP_READ_REQUEST_DISABLE' -CRTC_CONTROL_CRTC_DISP_READ_REQUEST_DISABLE__enumvalues = { - 0: 'CRTC_CONTROL_CRTC_DISP_READ_REQUEST_DISABLE_FALSE', - 1: 'CRTC_CONTROL_CRTC_DISP_READ_REQUEST_DISABLE_TRUE', -} -CRTC_CONTROL_CRTC_DISP_READ_REQUEST_DISABLE_FALSE = 0 -CRTC_CONTROL_CRTC_DISP_READ_REQUEST_DISABLE_TRUE = 1 -CRTC_CONTROL_CRTC_DISP_READ_REQUEST_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_CONTROL_CRTC_SOF_PULL_EN' -CRTC_CONTROL_CRTC_SOF_PULL_EN__enumvalues = { - 0: 'CRTC_CONTROL_CRTC_SOF_PULL_EN_FALSE', - 1: 'CRTC_CONTROL_CRTC_SOF_PULL_EN_TRUE', -} -CRTC_CONTROL_CRTC_SOF_PULL_EN_FALSE = 0 -CRTC_CONTROL_CRTC_SOF_PULL_EN_TRUE = 1 -CRTC_CONTROL_CRTC_SOF_PULL_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_H_SYNC_B_CNTL_CRTC_H_SYNC_B_POL' -CRTC_H_SYNC_B_CNTL_CRTC_H_SYNC_B_POL__enumvalues = { - 0: 'CRTC_H_SYNC_B_CNTL_CRTC_H_SYNC_B_POL_FALSE', - 1: 'CRTC_H_SYNC_B_CNTL_CRTC_H_SYNC_B_POL_TRUE', -} -CRTC_H_SYNC_B_CNTL_CRTC_H_SYNC_B_POL_FALSE = 0 -CRTC_H_SYNC_B_CNTL_CRTC_H_SYNC_B_POL_TRUE = 1 -CRTC_H_SYNC_B_CNTL_CRTC_H_SYNC_B_POL = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MAX_SEL' -CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MAX_SEL__enumvalues = { - 0: 'CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MAX_SEL_FALSE', - 1: 'CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MAX_SEL_TRUE', -} -CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MAX_SEL_FALSE = 0 -CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MAX_SEL_TRUE = 1 -CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MAX_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MIN_SEL' -CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MIN_SEL__enumvalues = { - 0: 'CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MIN_SEL_FALSE', - 1: 'CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MIN_SEL_TRUE', -} -CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MIN_SEL_FALSE = 0 -CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MIN_SEL_TRUE = 1 -CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MIN_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_V_TOTAL_CONTROL_CRTC_SET_V_TOTAL_MIN_MASK_EN' -CRTC_V_TOTAL_CONTROL_CRTC_SET_V_TOTAL_MIN_MASK_EN__enumvalues = { - 0: 'CRTC_V_TOTAL_CONTROL_CRTC_SET_V_TOTAL_MIN_MASK_EN_FALSE', - 1: 'CRTC_V_TOTAL_CONTROL_CRTC_SET_V_TOTAL_MIN_MASK_EN_TRUE', -} -CRTC_V_TOTAL_CONTROL_CRTC_SET_V_TOTAL_MIN_MASK_EN_FALSE = 0 -CRTC_V_TOTAL_CONTROL_CRTC_SET_V_TOTAL_MIN_MASK_EN_TRUE = 1 -CRTC_V_TOTAL_CONTROL_CRTC_SET_V_TOTAL_MIN_MASK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_TO_MASTER_VSYNC' -CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_TO_MASTER_VSYNC__enumvalues = { - 0: 'CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_TO_MASTER_VSYNC_DISABLE', - 1: 'CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_TO_MASTER_VSYNC_ENABLE', -} -CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_TO_MASTER_VSYNC_DISABLE = 0 -CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_TO_MASTER_VSYNC_ENABLE = 1 -CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_TO_MASTER_VSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_ON_EVENT' -CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_ON_EVENT__enumvalues = { - 0: 'CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_ON_EVENT_DISABLE', - 1: 'CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_ON_EVENT_ENABLE', -} -CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_ON_EVENT_DISABLE = 0 -CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_ON_EVENT_ENABLE = 1 -CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_ON_EVENT = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_V_TOTAL_INT_STATUS_CRTC_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK' -CRTC_V_TOTAL_INT_STATUS_CRTC_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK__enumvalues = { - 0: 'CRTC_V_TOTAL_INT_STATUS_CRTC_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK_FALSE', - 1: 'CRTC_V_TOTAL_INT_STATUS_CRTC_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK_TRUE', -} -CRTC_V_TOTAL_INT_STATUS_CRTC_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK_FALSE = 0 -CRTC_V_TOTAL_INT_STATUS_CRTC_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK_TRUE = 1 -CRTC_V_TOTAL_INT_STATUS_CRTC_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_VSYNC_NOM_INT_STATUS_CRTC_VSYNC_NOM_INT_CLEAR' -CRTC_VSYNC_NOM_INT_STATUS_CRTC_VSYNC_NOM_INT_CLEAR__enumvalues = { - 0: 'CRTC_VSYNC_NOM_INT_STATUS_CRTC_VSYNC_NOM_INT_CLEAR_FALSE', - 1: 'CRTC_VSYNC_NOM_INT_STATUS_CRTC_VSYNC_NOM_INT_CLEAR_TRUE', -} -CRTC_VSYNC_NOM_INT_STATUS_CRTC_VSYNC_NOM_INT_CLEAR_FALSE = 0 -CRTC_VSYNC_NOM_INT_STATUS_CRTC_VSYNC_NOM_INT_CLEAR_TRUE = 1 -CRTC_VSYNC_NOM_INT_STATUS_CRTC_VSYNC_NOM_INT_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_V_SYNC_B_CNTL_CRTC_V_SYNC_B_POL' -CRTC_V_SYNC_B_CNTL_CRTC_V_SYNC_B_POL__enumvalues = { - 0: 'CRTC_V_SYNC_B_CNTL_CRTC_V_SYNC_B_POL_FALSE', - 1: 'CRTC_V_SYNC_B_CNTL_CRTC_V_SYNC_B_POL_TRUE', -} -CRTC_V_SYNC_B_CNTL_CRTC_V_SYNC_B_POL_FALSE = 0 -CRTC_V_SYNC_B_CNTL_CRTC_V_SYNC_B_POL_TRUE = 1 -CRTC_V_SYNC_B_CNTL_CRTC_V_SYNC_B_POL = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_DTMTEST_CNTL_CRTC_DTMTEST_CRTC_EN' -CRTC_DTMTEST_CNTL_CRTC_DTMTEST_CRTC_EN__enumvalues = { - 0: 'CRTC_DTMTEST_CNTL_CRTC_DTMTEST_CRTC_EN_FALSE', - 1: 'CRTC_DTMTEST_CNTL_CRTC_DTMTEST_CRTC_EN_TRUE', -} -CRTC_DTMTEST_CNTL_CRTC_DTMTEST_CRTC_EN_FALSE = 0 -CRTC_DTMTEST_CNTL_CRTC_DTMTEST_CRTC_EN_TRUE = 1 -CRTC_DTMTEST_CNTL_CRTC_DTMTEST_CRTC_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT' -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT__enumvalues = { - 1: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_VSYNCA_OTHER', - 2: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_HSYNCA_OTHER', - 5: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_GENERICF', - 6: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_GENERICE', - 7: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_VSYNCA', - 8: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_HSYNCA', - 9: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_VSYNCB', - 10: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_HSYNCB', - 11: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_HPD1', - 12: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_HPD2', - 13: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_GENERICD', - 14: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_GENERICC', - 16: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_IGSL0', - 17: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_IGSL1', - 18: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_IGSL2', - 19: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_IBLON', - 20: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_GENERICA', - 21: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_GENERICB', - 22: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_IGSL_ALLOW', - 23: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_MANUAL_FLOW', -} -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_VSYNCA_OTHER = 1 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_HSYNCA_OTHER = 2 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_GENERICF = 5 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_GENERICE = 6 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_VSYNCA = 7 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_HSYNCA = 8 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_VSYNCB = 9 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_HSYNCB = 10 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_HPD1 = 11 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_HPD2 = 12 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_GENERICD = 13 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_GENERICC = 14 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_IGSL0 = 16 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_IGSL1 = 17 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_IGSL2 = 18 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_IBLON = 19 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_GENERICA = 20 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_GENERICB = 21 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_IGSL_ALLOW = 22 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_MANUAL_FLOW = 23 -CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT' -CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT__enumvalues = { - 1: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_INTERLACE', - 2: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_GENERICA', - 3: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_GENERICB', - 4: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_HSYNCA', - 5: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_HSYNCB', - 6: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_VIDEO', - 7: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_GENERICC', -} -CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_INTERLACE = 1 -CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_GENERICA = 2 -CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_GENERICB = 3 -CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_HSYNCA = 4 -CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_HSYNCB = 5 -CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_VIDEO = 6 -CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_GENERICC = 7 -CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_TRIGA_CNTL_CRTC_TRIGA_RESYNC_BYPASS_EN' -CRTC_TRIGA_CNTL_CRTC_TRIGA_RESYNC_BYPASS_EN__enumvalues = { - 0: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_RESYNC_BYPASS_EN_FALSE', - 1: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_RESYNC_BYPASS_EN_TRUE', -} -CRTC_TRIGA_CNTL_CRTC_TRIGA_RESYNC_BYPASS_EN_FALSE = 0 -CRTC_TRIGA_CNTL_CRTC_TRIGA_RESYNC_BYPASS_EN_TRUE = 1 -CRTC_TRIGA_CNTL_CRTC_TRIGA_RESYNC_BYPASS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_TRIGA_CNTL_CRTC_TRIGA_CLEAR' -CRTC_TRIGA_CNTL_CRTC_TRIGA_CLEAR__enumvalues = { - 0: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_CLEAR_FALSE', - 1: 'CRTC_TRIGA_CNTL_CRTC_TRIGA_CLEAR_TRUE', -} -CRTC_TRIGA_CNTL_CRTC_TRIGA_CLEAR_FALSE = 0 -CRTC_TRIGA_CNTL_CRTC_TRIGA_CLEAR_TRUE = 1 -CRTC_TRIGA_CNTL_CRTC_TRIGA_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT' -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT__enumvalues = { - 1: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_VSYNCA_OTHER', - 2: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_HSYNCA_OTHER', - 5: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_GENERICF', - 6: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_GENERICE', - 7: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_VSYNCA', - 8: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_HSYNCA', - 9: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_VSYNCB', - 10: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_HSYNCB', - 11: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_HPD1', - 12: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_HPD2', - 13: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_GENERICD', - 14: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_GENERICC', - 16: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_IGSL0', - 17: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_IGSL1', - 18: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_IGSL2', - 19: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_IBLON', - 20: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_GENERICA', - 21: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_GENERICB', - 22: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_IGSL_ALLOW', - 23: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_MANUAL_FLOW', -} -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_VSYNCA_OTHER = 1 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_HSYNCA_OTHER = 2 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_GENERICF = 5 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_GENERICE = 6 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_VSYNCA = 7 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_HSYNCA = 8 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_VSYNCB = 9 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_HSYNCB = 10 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_HPD1 = 11 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_HPD2 = 12 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_GENERICD = 13 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_GENERICC = 14 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_IGSL0 = 16 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_IGSL1 = 17 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_IGSL2 = 18 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_IBLON = 19 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_GENERICA = 20 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_GENERICB = 21 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_IGSL_ALLOW = 22 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_MANUAL_FLOW = 23 -CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT' -CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT__enumvalues = { - 1: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_INTERLACE', - 2: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_GENERICA', - 3: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_GENERICB', - 4: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_HSYNCA', - 5: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_HSYNCB', - 6: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_VIDEO', - 7: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_GENERICC', -} -CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_INTERLACE = 1 -CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_GENERICA = 2 -CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_GENERICB = 3 -CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_HSYNCA = 4 -CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_HSYNCB = 5 -CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_VIDEO = 6 -CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_GENERICC = 7 -CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_TRIGB_CNTL_CRTC_TRIGB_RESYNC_BYPASS_EN' -CRTC_TRIGB_CNTL_CRTC_TRIGB_RESYNC_BYPASS_EN__enumvalues = { - 0: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_RESYNC_BYPASS_EN_FALSE', - 1: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_RESYNC_BYPASS_EN_TRUE', -} -CRTC_TRIGB_CNTL_CRTC_TRIGB_RESYNC_BYPASS_EN_FALSE = 0 -CRTC_TRIGB_CNTL_CRTC_TRIGB_RESYNC_BYPASS_EN_TRUE = 1 -CRTC_TRIGB_CNTL_CRTC_TRIGB_RESYNC_BYPASS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_TRIGB_CNTL_CRTC_TRIGB_CLEAR' -CRTC_TRIGB_CNTL_CRTC_TRIGB_CLEAR__enumvalues = { - 0: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_CLEAR_FALSE', - 1: 'CRTC_TRIGB_CNTL_CRTC_TRIGB_CLEAR_TRUE', -} -CRTC_TRIGB_CNTL_CRTC_TRIGB_CLEAR_FALSE = 0 -CRTC_TRIGB_CNTL_CRTC_TRIGB_CLEAR_TRUE = 1 -CRTC_TRIGB_CNTL_CRTC_TRIGB_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_MODE' -CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_MODE__enumvalues = { - 0: 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_MODE_DISABLE', - 1: 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_MODE_HCOUNT', - 2: 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_MODE_HCOUNT_VCOUNT', - 3: 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_MODE_RESERVED', -} -CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_MODE_DISABLE = 0 -CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_MODE_HCOUNT = 1 -CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_MODE_HCOUNT_VCOUNT = 2 -CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_MODE_RESERVED = 3 -CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CHECK' -CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CHECK__enumvalues = { - 0: 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CHECK_FALSE', - 1: 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CHECK_TRUE', -} -CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CHECK_FALSE = 0 -CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CHECK_TRUE = 1 -CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CHECK = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_TRIG_SEL' -CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_TRIG_SEL__enumvalues = { - 0: 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_TRIG_SEL_FALSE', - 1: 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_TRIG_SEL_TRUE', -} -CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_TRIG_SEL_FALSE = 0 -CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_TRIG_SEL_TRUE = 1 -CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_TRIG_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CLEAR' -CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CLEAR__enumvalues = { - 0: 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CLEAR_FALSE', - 1: 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CLEAR_TRUE', -} -CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CLEAR_FALSE = 0 -CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CLEAR_TRUE = 1 -CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT' -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT__enumvalues = { - 0: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_LOGIC0', - 1: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_GENERICF', - 2: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_GENERICE', - 3: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_HPD1', - 4: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_HPD2', - 5: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_DDC1DATA', - 6: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_DDC1CLK', - 7: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_DDC2DATA', - 8: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_DDC2CLK', - 9: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_DVOCLK', - 10: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_MANUAL', - 11: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_LOGIC1', - 12: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_GENERICB', - 13: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_GENERICA', - 14: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_GENERICD', - 15: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_GENERICC', -} -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_LOGIC0 = 0 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_GENERICF = 1 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_GENERICE = 2 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_HPD1 = 3 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_HPD2 = 4 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_DDC1DATA = 5 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_DDC1CLK = 6 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_DDC2DATA = 7 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_DDC2CLK = 8 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_DVOCLK = 9 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_MANUAL = 10 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_LOGIC1 = 11 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_GENERICB = 12 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_GENERICA = 13 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_GENERICD = 14 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_GENERICC = 15 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_POLARITY' -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_POLARITY__enumvalues = { - 0: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_POLARITY_FALSE', - 1: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_POLARITY_TRUE', -} -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_POLARITY_FALSE = 0 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_POLARITY_TRUE = 1 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_GRANULARITY' -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_GRANULARITY__enumvalues = { - 0: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_GRANULARITY_FALSE', - 1: 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_GRANULARITY_TRUE', -} -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_GRANULARITY_FALSE = 0 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_GRANULARITY_TRUE = 1 -CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_GRANULARITY = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_STEREO_FORCE_NEXT_EYE_CRTC_STEREO_FORCE_NEXT_EYE' -CRTC_STEREO_FORCE_NEXT_EYE_CRTC_STEREO_FORCE_NEXT_EYE__enumvalues = { - 0: 'CRTC_STEREO_FORCE_NEXT_EYE_CRTC_STEREO_FORCE_NEXT_EYE_NO', - 1: 'CRTC_STEREO_FORCE_NEXT_EYE_CRTC_STEREO_FORCE_NEXT_EYE_RIGHT', - 2: 'CRTC_STEREO_FORCE_NEXT_EYE_CRTC_STEREO_FORCE_NEXT_EYE_LEFT', - 3: 'CRTC_STEREO_FORCE_NEXT_EYE_CRTC_STEREO_FORCE_NEXT_EYE_RESERVED', -} -CRTC_STEREO_FORCE_NEXT_EYE_CRTC_STEREO_FORCE_NEXT_EYE_NO = 0 -CRTC_STEREO_FORCE_NEXT_EYE_CRTC_STEREO_FORCE_NEXT_EYE_RIGHT = 1 -CRTC_STEREO_FORCE_NEXT_EYE_CRTC_STEREO_FORCE_NEXT_EYE_LEFT = 2 -CRTC_STEREO_FORCE_NEXT_EYE_CRTC_STEREO_FORCE_NEXT_EYE_RESERVED = 3 -CRTC_STEREO_FORCE_NEXT_EYE_CRTC_STEREO_FORCE_NEXT_EYE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_CONTROL_CRTC_MASTER_EN' -CRTC_CONTROL_CRTC_MASTER_EN__enumvalues = { - 0: 'CRTC_CONTROL_CRTC_MASTER_EN_FALSE', - 1: 'CRTC_CONTROL_CRTC_MASTER_EN_TRUE', -} -CRTC_CONTROL_CRTC_MASTER_EN_FALSE = 0 -CRTC_CONTROL_CRTC_MASTER_EN_TRUE = 1 -CRTC_CONTROL_CRTC_MASTER_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_BLANK_CONTROL_CRTC_BLANK_DATA_EN' -CRTC_BLANK_CONTROL_CRTC_BLANK_DATA_EN__enumvalues = { - 0: 'CRTC_BLANK_CONTROL_CRTC_BLANK_DATA_EN_FALSE', - 1: 'CRTC_BLANK_CONTROL_CRTC_BLANK_DATA_EN_TRUE', -} -CRTC_BLANK_CONTROL_CRTC_BLANK_DATA_EN_FALSE = 0 -CRTC_BLANK_CONTROL_CRTC_BLANK_DATA_EN_TRUE = 1 -CRTC_BLANK_CONTROL_CRTC_BLANK_DATA_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_BLANK_CONTROL_CRTC_BLANK_DE_MODE' -CRTC_BLANK_CONTROL_CRTC_BLANK_DE_MODE__enumvalues = { - 0: 'CRTC_BLANK_CONTROL_CRTC_BLANK_DE_MODE_FALSE', - 1: 'CRTC_BLANK_CONTROL_CRTC_BLANK_DE_MODE_TRUE', -} -CRTC_BLANK_CONTROL_CRTC_BLANK_DE_MODE_FALSE = 0 -CRTC_BLANK_CONTROL_CRTC_BLANK_DE_MODE_TRUE = 1 -CRTC_BLANK_CONTROL_CRTC_BLANK_DE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_ENABLE' -CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_ENABLE__enumvalues = { - 0: 'CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_ENABLE_FALSE', - 1: 'CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_ENABLE_TRUE', -} -CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_ENABLE_FALSE = 0 -CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_ENABLE_TRUE = 1 -CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_FORCE_NEXT_FIELD' -CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_FORCE_NEXT_FIELD__enumvalues = { - 0: 'CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_FORCE_NEXT_FIELD_NOT', - 1: 'CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_FORCE_NEXT_FIELD_ODD', - 2: 'CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_FORCE_NEXT_FIELD_EVEN', - 3: 'CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_FORCE_NEXT_FIELD_NOT2', -} -CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_FORCE_NEXT_FIELD_NOT = 0 -CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_FORCE_NEXT_FIELD_ODD = 1 -CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_FORCE_NEXT_FIELD_EVEN = 2 -CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_FORCE_NEXT_FIELD_NOT2 = 3 -CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_FORCE_NEXT_FIELD = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_INDICATION_OUTPUT_POLARITY' -CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_INDICATION_OUTPUT_POLARITY__enumvalues = { - 0: 'CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_INDICATION_OUTPUT_POLARITY_FALSE', - 1: 'CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_INDICATION_OUTPUT_POLARITY_TRUE', -} -CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_INDICATION_OUTPUT_POLARITY_FALSE = 0 -CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_INDICATION_OUTPUT_POLARITY_TRUE = 1 -CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_INDICATION_OUTPUT_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_ALIGNMENT' -CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_ALIGNMENT__enumvalues = { - 0: 'CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_ALIGNMENT_FALSE', - 1: 'CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_ALIGNMENT_TRUE', -} -CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_ALIGNMENT_FALSE = 0 -CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_ALIGNMENT_TRUE = 1 -CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_ALIGNMENT = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_COUNT_CONTROL_CRTC_HORZ_COUNT_BY2_EN' -CRTC_COUNT_CONTROL_CRTC_HORZ_COUNT_BY2_EN__enumvalues = { - 0: 'CRTC_COUNT_CONTROL_CRTC_HORZ_COUNT_BY2_EN_FALSE', - 1: 'CRTC_COUNT_CONTROL_CRTC_HORZ_COUNT_BY2_EN_TRUE', -} -CRTC_COUNT_CONTROL_CRTC_HORZ_COUNT_BY2_EN_FALSE = 0 -CRTC_COUNT_CONTROL_CRTC_HORZ_COUNT_BY2_EN_TRUE = 1 -CRTC_COUNT_CONTROL_CRTC_HORZ_COUNT_BY2_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE_CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE' -CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE_CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE__enumvalues = { - 0: 'CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE_CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE_FALSE', - 1: 'CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE_CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE_TRUE', -} -CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE_CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE_FALSE = 0 -CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE_CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE_TRUE = 1 -CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE_CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_VERT_SYNC_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_CLEAR' -CRTC_VERT_SYNC_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_CLEAR__enumvalues = { - 0: 'CRTC_VERT_SYNC_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_CLEAR_FALSE', - 1: 'CRTC_VERT_SYNC_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_CLEAR_TRUE', -} -CRTC_VERT_SYNC_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_CLEAR_FALSE = 0 -CRTC_VERT_SYNC_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_CLEAR_TRUE = 1 -CRTC_VERT_SYNC_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_VERT_SYNC_CONTROL_CRTC_AUTO_FORCE_VSYNC_MODE' -CRTC_VERT_SYNC_CONTROL_CRTC_AUTO_FORCE_VSYNC_MODE__enumvalues = { - 0: 'CRTC_VERT_SYNC_CONTROL_CRTC_AUTO_FORCE_VSYNC_MODE_DISABLE', - 1: 'CRTC_VERT_SYNC_CONTROL_CRTC_AUTO_FORCE_VSYNC_MODE_TRIGGERA', - 2: 'CRTC_VERT_SYNC_CONTROL_CRTC_AUTO_FORCE_VSYNC_MODE_TRIGGERB', - 3: 'CRTC_VERT_SYNC_CONTROL_CRTC_AUTO_FORCE_VSYNC_MODE_RESERVED', -} -CRTC_VERT_SYNC_CONTROL_CRTC_AUTO_FORCE_VSYNC_MODE_DISABLE = 0 -CRTC_VERT_SYNC_CONTROL_CRTC_AUTO_FORCE_VSYNC_MODE_TRIGGERA = 1 -CRTC_VERT_SYNC_CONTROL_CRTC_AUTO_FORCE_VSYNC_MODE_TRIGGERB = 2 -CRTC_VERT_SYNC_CONTROL_CRTC_AUTO_FORCE_VSYNC_MODE_RESERVED = 3 -CRTC_VERT_SYNC_CONTROL_CRTC_AUTO_FORCE_VSYNC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_OUTPUT_POLARITY' -CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_OUTPUT_POLARITY__enumvalues = { - 0: 'CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_OUTPUT_POLARITY_FALSE', - 1: 'CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_OUTPUT_POLARITY_TRUE', -} -CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_OUTPUT_POLARITY_FALSE = 0 -CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_OUTPUT_POLARITY_TRUE = 1 -CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_OUTPUT_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_SELECT_POLARITY' -CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_SELECT_POLARITY__enumvalues = { - 0: 'CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_SELECT_POLARITY_FALSE', - 1: 'CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_SELECT_POLARITY_TRUE', -} -CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_SELECT_POLARITY_FALSE = 0 -CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_SELECT_POLARITY_TRUE = 1 -CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_SELECT_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_STEREO_CONTROL_CRTC_STEREO_EYE_FLAG_POLARITY' -CRTC_STEREO_CONTROL_CRTC_STEREO_EYE_FLAG_POLARITY__enumvalues = { - 0: 'CRTC_STEREO_CONTROL_CRTC_STEREO_EYE_FLAG_POLARITY_FALSE', - 1: 'CRTC_STEREO_CONTROL_CRTC_STEREO_EYE_FLAG_POLARITY_TRUE', -} -CRTC_STEREO_CONTROL_CRTC_STEREO_EYE_FLAG_POLARITY_FALSE = 0 -CRTC_STEREO_CONTROL_CRTC_STEREO_EYE_FLAG_POLARITY_TRUE = 1 -CRTC_STEREO_CONTROL_CRTC_STEREO_EYE_FLAG_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_STEREO_CONTROL_CRTC_STEREO_EN' -CRTC_STEREO_CONTROL_CRTC_STEREO_EN__enumvalues = { - 0: 'CRTC_STEREO_CONTROL_CRTC_STEREO_EN_FALSE', - 1: 'CRTC_STEREO_CONTROL_CRTC_STEREO_EN_TRUE', -} -CRTC_STEREO_CONTROL_CRTC_STEREO_EN_FALSE = 0 -CRTC_STEREO_CONTROL_CRTC_STEREO_EN_TRUE = 1 -CRTC_STEREO_CONTROL_CRTC_STEREO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_SNAPSHOT_STATUS_CRTC_SNAPSHOT_CLEAR' -CRTC_SNAPSHOT_STATUS_CRTC_SNAPSHOT_CLEAR__enumvalues = { - 0: 'CRTC_SNAPSHOT_STATUS_CRTC_SNAPSHOT_CLEAR_FALSE', - 1: 'CRTC_SNAPSHOT_STATUS_CRTC_SNAPSHOT_CLEAR_TRUE', -} -CRTC_SNAPSHOT_STATUS_CRTC_SNAPSHOT_CLEAR_FALSE = 0 -CRTC_SNAPSHOT_STATUS_CRTC_SNAPSHOT_CLEAR_TRUE = 1 -CRTC_SNAPSHOT_STATUS_CRTC_SNAPSHOT_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_SNAPSHOT_CONTROL_CRTC_AUTO_SNAPSHOT_TRIG_SEL' -CRTC_SNAPSHOT_CONTROL_CRTC_AUTO_SNAPSHOT_TRIG_SEL__enumvalues = { - 0: 'CRTC_SNAPSHOT_CONTROL_CRTC_AUTO_SNAPSHOT_TRIG_SEL_DISABLE', - 1: 'CRTC_SNAPSHOT_CONTROL_CRTC_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERA', - 2: 'CRTC_SNAPSHOT_CONTROL_CRTC_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERB', - 3: 'CRTC_SNAPSHOT_CONTROL_CRTC_AUTO_SNAPSHOT_TRIG_SEL_RESERVED', -} -CRTC_SNAPSHOT_CONTROL_CRTC_AUTO_SNAPSHOT_TRIG_SEL_DISABLE = 0 -CRTC_SNAPSHOT_CONTROL_CRTC_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERA = 1 -CRTC_SNAPSHOT_CONTROL_CRTC_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERB = 2 -CRTC_SNAPSHOT_CONTROL_CRTC_AUTO_SNAPSHOT_TRIG_SEL_RESERVED = 3 -CRTC_SNAPSHOT_CONTROL_CRTC_AUTO_SNAPSHOT_TRIG_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_START_LINE_CONTROL_CRTC_PROGRESSIVE_START_LINE_EARLY' -CRTC_START_LINE_CONTROL_CRTC_PROGRESSIVE_START_LINE_EARLY__enumvalues = { - 0: 'CRTC_START_LINE_CONTROL_CRTC_PROGRESSIVE_START_LINE_EARLY_FALSE', - 1: 'CRTC_START_LINE_CONTROL_CRTC_PROGRESSIVE_START_LINE_EARLY_TRUE', -} -CRTC_START_LINE_CONTROL_CRTC_PROGRESSIVE_START_LINE_EARLY_FALSE = 0 -CRTC_START_LINE_CONTROL_CRTC_PROGRESSIVE_START_LINE_EARLY_TRUE = 1 -CRTC_START_LINE_CONTROL_CRTC_PROGRESSIVE_START_LINE_EARLY = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_START_LINE_CONTROL_CRTC_INTERLACE_START_LINE_EARLY' -CRTC_START_LINE_CONTROL_CRTC_INTERLACE_START_LINE_EARLY__enumvalues = { - 0: 'CRTC_START_LINE_CONTROL_CRTC_INTERLACE_START_LINE_EARLY_FALSE', - 1: 'CRTC_START_LINE_CONTROL_CRTC_INTERLACE_START_LINE_EARLY_TRUE', -} -CRTC_START_LINE_CONTROL_CRTC_INTERLACE_START_LINE_EARLY_FALSE = 0 -CRTC_START_LINE_CONTROL_CRTC_INTERLACE_START_LINE_EARLY_TRUE = 1 -CRTC_START_LINE_CONTROL_CRTC_INTERLACE_START_LINE_EARLY = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_START_LINE_CONTROL_CRTC_LEGACY_REQUESTOR_EN' -CRTC_START_LINE_CONTROL_CRTC_LEGACY_REQUESTOR_EN__enumvalues = { - 0: 'CRTC_START_LINE_CONTROL_CRTC_LEGACY_REQUESTOR_EN_FALSE', - 1: 'CRTC_START_LINE_CONTROL_CRTC_LEGACY_REQUESTOR_EN_TRUE', -} -CRTC_START_LINE_CONTROL_CRTC_LEGACY_REQUESTOR_EN_FALSE = 0 -CRTC_START_LINE_CONTROL_CRTC_LEGACY_REQUESTOR_EN_TRUE = 1 -CRTC_START_LINE_CONTROL_CRTC_LEGACY_REQUESTOR_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_START_LINE_CONTROL_CRTC_PREFETCH_EN' -CRTC_START_LINE_CONTROL_CRTC_PREFETCH_EN__enumvalues = { - 0: 'CRTC_START_LINE_CONTROL_CRTC_PREFETCH_EN_FALSE', - 1: 'CRTC_START_LINE_CONTROL_CRTC_PREFETCH_EN_TRUE', -} -CRTC_START_LINE_CONTROL_CRTC_PREFETCH_EN_FALSE = 0 -CRTC_START_LINE_CONTROL_CRTC_PREFETCH_EN_TRUE = 1 -CRTC_START_LINE_CONTROL_CRTC_PREFETCH_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_MSK' -CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_MSK__enumvalues = { - 0: 'CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_MSK_FALSE', - 1: 'CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_MSK_TRUE', -} -CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_MSK_FALSE = 0 -CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_MSK_TRUE = 1 -CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_TYPE' -CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_TYPE__enumvalues = { - 0: 'CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_TYPE_FALSE', - 1: 'CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_TYPE_TRUE', -} -CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_TYPE_FALSE = 0 -CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_TYPE_TRUE = 1 -CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_MSK' -CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_MSK__enumvalues = { - 0: 'CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_MSK_FALSE', - 1: 'CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_MSK_TRUE', -} -CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_MSK_FALSE = 0 -CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_MSK_TRUE = 1 -CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_TYPE' -CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_TYPE__enumvalues = { - 0: 'CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_TYPE_FALSE', - 1: 'CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_TYPE_TRUE', -} -CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_TYPE_FALSE = 0 -CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_TYPE_TRUE = 1 -CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_MSK' -CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_MSK__enumvalues = { - 0: 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_MSK_FALSE', - 1: 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_MSK_TRUE', -} -CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_MSK_FALSE = 0 -CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_MSK_TRUE = 1 -CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_TYPE' -CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_TYPE__enumvalues = { - 0: 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_TYPE_FALSE', - 1: 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_TYPE_TRUE', -} -CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_TYPE_FALSE = 0 -CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_TYPE_TRUE = 1 -CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_MSK' -CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_MSK__enumvalues = { - 0: 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_MSK_FALSE', - 1: 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_MSK_TRUE', -} -CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_MSK_FALSE = 0 -CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_MSK_TRUE = 1 -CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_TYPE' -CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_TYPE__enumvalues = { - 0: 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_TYPE_FALSE', - 1: 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_TYPE_TRUE', -} -CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_TYPE_FALSE = 0 -CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_TYPE_TRUE = 1 -CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_MSK' -CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_MSK__enumvalues = { - 0: 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_MSK_FALSE', - 1: 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_MSK_TRUE', -} -CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_MSK_FALSE = 0 -CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_MSK_TRUE = 1 -CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_TYPE' -CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_TYPE__enumvalues = { - 0: 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_TYPE_FALSE', - 1: 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_TYPE_TRUE', -} -CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_TYPE_FALSE = 0 -CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_TYPE_TRUE = 1 -CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_MSK' -CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_MSK__enumvalues = { - 0: 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_MSK_FALSE', - 1: 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_MSK_TRUE', -} -CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_MSK_FALSE = 0 -CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_MSK_TRUE = 1 -CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_TYPE' -CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_TYPE__enumvalues = { - 0: 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_TYPE_FALSE', - 1: 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_TYPE_TRUE', -} -CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_TYPE_FALSE = 0 -CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_TYPE_TRUE = 1 -CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_MSK' -CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_MSK__enumvalues = { - 0: 'CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_MSK_FALSE', - 1: 'CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_MSK_TRUE', -} -CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_MSK_FALSE = 0 -CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_MSK_TRUE = 1 -CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_TYPE' -CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_TYPE__enumvalues = { - 0: 'CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_TYPE_FALSE', - 1: 'CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_TYPE_TRUE', -} -CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_TYPE_FALSE = 0 -CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_TYPE_TRUE = 1 -CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_MSK' -CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_MSK__enumvalues = { - 0: 'CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_MSK_FALSE', - 1: 'CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_MSK_TRUE', -} -CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_MSK_FALSE = 0 -CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_MSK_TRUE = 1 -CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_TYPE' -CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_TYPE__enumvalues = { - 0: 'CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_TYPE_FALSE', - 1: 'CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_TYPE_TRUE', -} -CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_TYPE_FALSE = 0 -CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_TYPE_TRUE = 1 -CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_UPDATE_LOCK_CRTC_UPDATE_LOCK' -CRTC_UPDATE_LOCK_CRTC_UPDATE_LOCK__enumvalues = { - 0: 'CRTC_UPDATE_LOCK_CRTC_UPDATE_LOCK_FALSE', - 1: 'CRTC_UPDATE_LOCK_CRTC_UPDATE_LOCK_TRUE', -} -CRTC_UPDATE_LOCK_CRTC_UPDATE_LOCK_FALSE = 0 -CRTC_UPDATE_LOCK_CRTC_UPDATE_LOCK_TRUE = 1 -CRTC_UPDATE_LOCK_CRTC_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_DOUBLE_BUFFER_CONTROL_CRTC_UPDATE_INSTANTLY' -CRTC_DOUBLE_BUFFER_CONTROL_CRTC_UPDATE_INSTANTLY__enumvalues = { - 0: 'CRTC_DOUBLE_BUFFER_CONTROL_CRTC_UPDATE_INSTANTLY_FALSE', - 1: 'CRTC_DOUBLE_BUFFER_CONTROL_CRTC_UPDATE_INSTANTLY_TRUE', -} -CRTC_DOUBLE_BUFFER_CONTROL_CRTC_UPDATE_INSTANTLY_FALSE = 0 -CRTC_DOUBLE_BUFFER_CONTROL_CRTC_UPDATE_INSTANTLY_TRUE = 1 -CRTC_DOUBLE_BUFFER_CONTROL_CRTC_UPDATE_INSTANTLY = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_DOUBLE_BUFFER_CONTROL_CRTC_BLANK_DATA_DOUBLE_BUFFER_EN' -CRTC_DOUBLE_BUFFER_CONTROL_CRTC_BLANK_DATA_DOUBLE_BUFFER_EN__enumvalues = { - 0: 'CRTC_DOUBLE_BUFFER_CONTROL_CRTC_BLANK_DATA_DOUBLE_BUFFER_EN_FALSE', - 1: 'CRTC_DOUBLE_BUFFER_CONTROL_CRTC_BLANK_DATA_DOUBLE_BUFFER_EN_TRUE', -} -CRTC_DOUBLE_BUFFER_CONTROL_CRTC_BLANK_DATA_DOUBLE_BUFFER_EN_FALSE = 0 -CRTC_DOUBLE_BUFFER_CONTROL_CRTC_BLANK_DATA_DOUBLE_BUFFER_EN_TRUE = 1 -CRTC_DOUBLE_BUFFER_CONTROL_CRTC_BLANK_DATA_DOUBLE_BUFFER_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_DOUBLE_BUFFER_CONTROL_CRTC_RANGE_TIMING_DBUF_UPDATE_MODE' -CRTC_DOUBLE_BUFFER_CONTROL_CRTC_RANGE_TIMING_DBUF_UPDATE_MODE__enumvalues = { - 0: 'CRTC_DOUBLE_BUFFER_CONTROL_CRTC_RANGE_TIMING_DBUF_UPDATE_MODE_0', - 1: 'CRTC_DOUBLE_BUFFER_CONTROL_CRTC_RANGE_TIMING_DBUF_UPDATE_MODE_1', -} -CRTC_DOUBLE_BUFFER_CONTROL_CRTC_RANGE_TIMING_DBUF_UPDATE_MODE_0 = 0 -CRTC_DOUBLE_BUFFER_CONTROL_CRTC_RANGE_TIMING_DBUF_UPDATE_MODE_1 = 1 -CRTC_DOUBLE_BUFFER_CONTROL_CRTC_RANGE_TIMING_DBUF_UPDATE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_VGA_PARAMETER_CAPTURE_MODE_CRTC_VGA_PARAMETER_CAPTURE_MODE' -CRTC_VGA_PARAMETER_CAPTURE_MODE_CRTC_VGA_PARAMETER_CAPTURE_MODE__enumvalues = { - 0: 'CRTC_VGA_PARAMETER_CAPTURE_MODE_CRTC_VGA_PARAMETER_CAPTURE_MODE_FALSE', - 1: 'CRTC_VGA_PARAMETER_CAPTURE_MODE_CRTC_VGA_PARAMETER_CAPTURE_MODE_TRUE', -} -CRTC_VGA_PARAMETER_CAPTURE_MODE_CRTC_VGA_PARAMETER_CAPTURE_MODE_FALSE = 0 -CRTC_VGA_PARAMETER_CAPTURE_MODE_CRTC_VGA_PARAMETER_CAPTURE_MODE_TRUE = 1 -CRTC_VGA_PARAMETER_CAPTURE_MODE_CRTC_VGA_PARAMETER_CAPTURE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_EN' -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_EN__enumvalues = { - 0: 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_EN_FALSE', - 1: 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_EN_TRUE', -} -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_EN_FALSE = 0 -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_EN_TRUE = 1 -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE' -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE__enumvalues = { - 0: 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_RGB', - 1: 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_YCBCR601', - 2: 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_YCBCR709', - 3: 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_VBARS', - 4: 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_HBARS', - 5: 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_SRRGB', - 6: 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_DRRGB', - 7: 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_XRBIAS', -} -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_RGB = 0 -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_YCBCR601 = 1 -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_YCBCR709 = 2 -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_VBARS = 3 -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_HBARS = 4 -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_SRRGB = 5 -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_DRRGB = 6 -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_XRBIAS = 7 -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_DYNAMIC_RANGE' -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_DYNAMIC_RANGE__enumvalues = { - 0: 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_DYNAMIC_RANGE_FALSE', - 1: 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_DYNAMIC_RANGE_TRUE', -} -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_DYNAMIC_RANGE_FALSE = 0 -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_DYNAMIC_RANGE_TRUE = 1 -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_DYNAMIC_RANGE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_COLOR_FORMAT' -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_COLOR_FORMAT__enumvalues = { - 0: 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_COLOR_FORMAT_6BPC', - 1: 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_COLOR_FORMAT_8BPC', - 2: 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_COLOR_FORMAT_10BPC', - 3: 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_COLOR_FORMAT_RESERVED', -} -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_COLOR_FORMAT_6BPC = 0 -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_COLOR_FORMAT_8BPC = 1 -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_COLOR_FORMAT_10BPC = 2 -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_COLOR_FORMAT_RESERVED = 3 -CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_COLOR_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK' -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_FALSE', - 1: 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_TRUE', -} -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_FALSE = 0 -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_TRUE = 1 -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'MASTER_UPDATE_LOCK_GSL_CONTROL_MASTER_UPDATE_LOCK' -MASTER_UPDATE_LOCK_GSL_CONTROL_MASTER_UPDATE_LOCK__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_GSL_CONTROL_MASTER_UPDATE_LOCK_FALSE', - 1: 'MASTER_UPDATE_LOCK_GSL_CONTROL_MASTER_UPDATE_LOCK_TRUE', -} -MASTER_UPDATE_LOCK_GSL_CONTROL_MASTER_UPDATE_LOCK_FALSE = 0 -MASTER_UPDATE_LOCK_GSL_CONTROL_MASTER_UPDATE_LOCK_TRUE = 1 -MASTER_UPDATE_LOCK_GSL_CONTROL_MASTER_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK' -MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK_FALSE', - 1: 'MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK_TRUE', -} -MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK_FALSE = 0 -MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK_TRUE = 1 -MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'MASTER_UPDATE_MODE_MASTER_UPDATE_MODE' -MASTER_UPDATE_MODE_MASTER_UPDATE_MODE__enumvalues = { - 0: 'MASTER_UPDATE_MODE_MASTER_UPDATE_MODE_BETWEEN', - 1: 'MASTER_UPDATE_MODE_MASTER_UPDATE_MODE_HSYNCA', - 2: 'MASTER_UPDATE_MODE_MASTER_UPDATE_MODE_VSYNCA', - 3: 'MASTER_UPDATE_MODE_MASTER_UPDATE_MODE_BEFORE', -} -MASTER_UPDATE_MODE_MASTER_UPDATE_MODE_BETWEEN = 0 -MASTER_UPDATE_MODE_MASTER_UPDATE_MODE_HSYNCA = 1 -MASTER_UPDATE_MODE_MASTER_UPDATE_MODE_VSYNCA = 2 -MASTER_UPDATE_MODE_MASTER_UPDATE_MODE_BEFORE = 3 -MASTER_UPDATE_MODE_MASTER_UPDATE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE' -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE__enumvalues = { - 0: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTH', - 1: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_EVEN', - 2: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_ODD', - 3: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_RESERVED', -} -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTH = 0 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_EVEN = 1 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_ODD = 2 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_RESERVED = 3 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_MVP_INBAND_CNTL_INSERT_CRTC_MVP_INBAND_OUT_MODE' -CRTC_MVP_INBAND_CNTL_INSERT_CRTC_MVP_INBAND_OUT_MODE__enumvalues = { - 0: 'CRTC_MVP_INBAND_CNTL_INSERT_CRTC_MVP_INBAND_OUT_MODE_DISABLE', - 1: 'CRTC_MVP_INBAND_CNTL_INSERT_CRTC_MVP_INBAND_OUT_MODE_DEBUG', - 2: 'CRTC_MVP_INBAND_CNTL_INSERT_CRTC_MVP_INBAND_OUT_MODE_NORMAL', -} -CRTC_MVP_INBAND_CNTL_INSERT_CRTC_MVP_INBAND_OUT_MODE_DISABLE = 0 -CRTC_MVP_INBAND_CNTL_INSERT_CRTC_MVP_INBAND_OUT_MODE_DEBUG = 1 -CRTC_MVP_INBAND_CNTL_INSERT_CRTC_MVP_INBAND_OUT_MODE_NORMAL = 2 -CRTC_MVP_INBAND_CNTL_INSERT_CRTC_MVP_INBAND_OUT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_MVP_STATUS_CRTC_FLIP_NOW_CLEAR' -CRTC_MVP_STATUS_CRTC_FLIP_NOW_CLEAR__enumvalues = { - 0: 'CRTC_MVP_STATUS_CRTC_FLIP_NOW_CLEAR_FALSE', - 1: 'CRTC_MVP_STATUS_CRTC_FLIP_NOW_CLEAR_TRUE', -} -CRTC_MVP_STATUS_CRTC_FLIP_NOW_CLEAR_FALSE = 0 -CRTC_MVP_STATUS_CRTC_FLIP_NOW_CLEAR_TRUE = 1 -CRTC_MVP_STATUS_CRTC_FLIP_NOW_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_MVP_STATUS_CRTC_AFR_HSYNC_SWITCH_DONE_CLEAR' -CRTC_MVP_STATUS_CRTC_AFR_HSYNC_SWITCH_DONE_CLEAR__enumvalues = { - 0: 'CRTC_MVP_STATUS_CRTC_AFR_HSYNC_SWITCH_DONE_CLEAR_FALSE', - 1: 'CRTC_MVP_STATUS_CRTC_AFR_HSYNC_SWITCH_DONE_CLEAR_TRUE', -} -CRTC_MVP_STATUS_CRTC_AFR_HSYNC_SWITCH_DONE_CLEAR_FALSE = 0 -CRTC_MVP_STATUS_CRTC_AFR_HSYNC_SWITCH_DONE_CLEAR_TRUE = 1 -CRTC_MVP_STATUS_CRTC_AFR_HSYNC_SWITCH_DONE_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_V_UPDATE_INT_STATUS_CRTC_V_UPDATE_INT_CLEAR' -CRTC_V_UPDATE_INT_STATUS_CRTC_V_UPDATE_INT_CLEAR__enumvalues = { - 0: 'CRTC_V_UPDATE_INT_STATUS_CRTC_V_UPDATE_INT_CLEAR_FALSE', - 1: 'CRTC_V_UPDATE_INT_STATUS_CRTC_V_UPDATE_INT_CLEAR_TRUE', -} -CRTC_V_UPDATE_INT_STATUS_CRTC_V_UPDATE_INT_CLEAR_FALSE = 0 -CRTC_V_UPDATE_INT_STATUS_CRTC_V_UPDATE_INT_CLEAR_TRUE = 1 -CRTC_V_UPDATE_INT_STATUS_CRTC_V_UPDATE_INT_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_OUTPUT_POLARITY' -CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_OUTPUT_POLARITY__enumvalues = { - 0: 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_FALSE', - 1: 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_TRUE', -} -CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_FALSE = 0 -CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_TRUE = 1 -CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_OUTPUT_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_ENABLE' -CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_ENABLE__enumvalues = { - 0: 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_ENABLE_FALSE', - 1: 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_ENABLE_TRUE', -} -CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_ENABLE_FALSE = 0 -CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_ENABLE_TRUE = 1 -CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_CLEAR' -CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_CLEAR__enumvalues = { - 0: 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_CLEAR_FALSE', - 1: 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_CLEAR_TRUE', -} -CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_CLEAR_FALSE = 0 -CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_CLEAR_TRUE = 1 -CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_TYPE' -CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_TYPE__enumvalues = { - 0: 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_TYPE_FALSE', - 1: 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_TYPE_TRUE', -} -CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_TYPE_FALSE = 0 -CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_TYPE_TRUE = 1 -CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_CLEAR' -CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_CLEAR__enumvalues = { - 0: 'CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_CLEAR_CLEAR_FALSE', - 1: 'CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_CLEAR_TRUE', -} -CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_CLEAR_CLEAR_FALSE = 0 -CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_CLEAR_TRUE = 1 -CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_ENABLE' -CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_ENABLE__enumvalues = { - 0: 'CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_ENABLE_FALSE', - 1: 'CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_ENABLE_TRUE', -} -CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_ENABLE_FALSE = 0 -CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_ENABLE_TRUE = 1 -CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_TYPE' -CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_TYPE__enumvalues = { - 0: 'CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_TYPE_FALSE', - 1: 'CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_TYPE_TRUE', -} -CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_TYPE_FALSE = 0 -CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_TYPE_TRUE = 1 -CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_CLEAR' -CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_CLEAR__enumvalues = { - 0: 'CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_CLEAR_CLEAR_FALSE', - 1: 'CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_CLEAR_TRUE', -} -CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_CLEAR_CLEAR_FALSE = 0 -CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_CLEAR_TRUE = 1 -CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_ENABLE' -CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_ENABLE__enumvalues = { - 0: 'CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_ENABLE_FALSE', - 1: 'CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_ENABLE_TRUE', -} -CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_ENABLE_FALSE = 0 -CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_ENABLE_TRUE = 1 -CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_TYPE' -CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_TYPE__enumvalues = { - 0: 'CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_TYPE_FALSE', - 1: 'CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_TYPE_TRUE', -} -CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_TYPE_FALSE = 0 -CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_TYPE_TRUE = 1 -CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_CRC_CNTL_CRTC_CRC_EN' -CRTC_CRC_CNTL_CRTC_CRC_EN__enumvalues = { - 0: 'CRTC_CRC_CNTL_CRTC_CRC_EN_FALSE', - 1: 'CRTC_CRC_CNTL_CRTC_CRC_EN_TRUE', -} -CRTC_CRC_CNTL_CRTC_CRC_EN_FALSE = 0 -CRTC_CRC_CNTL_CRTC_CRC_EN_TRUE = 1 -CRTC_CRC_CNTL_CRTC_CRC_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_CRC_CNTL_CRTC_CRC_CONT_EN' -CRTC_CRC_CNTL_CRTC_CRC_CONT_EN__enumvalues = { - 0: 'CRTC_CRC_CNTL_CRTC_CRC_CONT_EN_FALSE', - 1: 'CRTC_CRC_CNTL_CRTC_CRC_CONT_EN_TRUE', -} -CRTC_CRC_CNTL_CRTC_CRC_CONT_EN_FALSE = 0 -CRTC_CRC_CNTL_CRTC_CRC_CONT_EN_TRUE = 1 -CRTC_CRC_CNTL_CRTC_CRC_CONT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_CRC_CNTL_CRTC_CRC_STEREO_MODE' -CRTC_CRC_CNTL_CRTC_CRC_STEREO_MODE__enumvalues = { - 0: 'CRTC_CRC_CNTL_CRTC_CRC_STEREO_MODE_LEFT', - 1: 'CRTC_CRC_CNTL_CRTC_CRC_STEREO_MODE_RIGHT', - 2: 'CRTC_CRC_CNTL_CRTC_CRC_STEREO_MODE_BOTH_EYES', - 3: 'CRTC_CRC_CNTL_CRTC_CRC_STEREO_MODE_BOTH_FIELDS', -} -CRTC_CRC_CNTL_CRTC_CRC_STEREO_MODE_LEFT = 0 -CRTC_CRC_CNTL_CRTC_CRC_STEREO_MODE_RIGHT = 1 -CRTC_CRC_CNTL_CRTC_CRC_STEREO_MODE_BOTH_EYES = 2 -CRTC_CRC_CNTL_CRTC_CRC_STEREO_MODE_BOTH_FIELDS = 3 -CRTC_CRC_CNTL_CRTC_CRC_STEREO_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_CRC_CNTL_CRTC_CRC_INTERLACE_MODE' -CRTC_CRC_CNTL_CRTC_CRC_INTERLACE_MODE__enumvalues = { - 0: 'CRTC_CRC_CNTL_CRTC_CRC_INTERLACE_MODE_TOP', - 1: 'CRTC_CRC_CNTL_CRTC_CRC_INTERLACE_MODE_BOTTOM', - 2: 'CRTC_CRC_CNTL_CRTC_CRC_INTERLACE_MODE_BOTH_BOTTOM', - 3: 'CRTC_CRC_CNTL_CRTC_CRC_INTERLACE_MODE_BOTH_FIELD', -} -CRTC_CRC_CNTL_CRTC_CRC_INTERLACE_MODE_TOP = 0 -CRTC_CRC_CNTL_CRTC_CRC_INTERLACE_MODE_BOTTOM = 1 -CRTC_CRC_CNTL_CRTC_CRC_INTERLACE_MODE_BOTH_BOTTOM = 2 -CRTC_CRC_CNTL_CRTC_CRC_INTERLACE_MODE_BOTH_FIELD = 3 -CRTC_CRC_CNTL_CRTC_CRC_INTERLACE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_CRC_CNTL_CRTC_CRC_USE_NEW_AND_REPEATED_PIXELS' -CRTC_CRC_CNTL_CRTC_CRC_USE_NEW_AND_REPEATED_PIXELS__enumvalues = { - 0: 'CRTC_CRC_CNTL_CRTC_CRC_USE_NEW_AND_REPEATED_PIXELS_FALSE', - 1: 'CRTC_CRC_CNTL_CRTC_CRC_USE_NEW_AND_REPEATED_PIXELS_TRUE', -} -CRTC_CRC_CNTL_CRTC_CRC_USE_NEW_AND_REPEATED_PIXELS_FALSE = 0 -CRTC_CRC_CNTL_CRTC_CRC_USE_NEW_AND_REPEATED_PIXELS_TRUE = 1 -CRTC_CRC_CNTL_CRTC_CRC_USE_NEW_AND_REPEATED_PIXELS = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT' -CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT__enumvalues = { - 0: 'CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_UAB', - 1: 'CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_UA_B', - 2: 'CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_U_AB', - 3: 'CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_U_A_B', - 4: 'CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_IAB', - 5: 'CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_IA_B', - 6: 'CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_I_AB', - 7: 'CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_I_A_B', -} -CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_UAB = 0 -CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_UA_B = 1 -CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_U_AB = 2 -CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_U_A_B = 3 -CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_IAB = 4 -CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_IA_B = 5 -CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_I_AB = 6 -CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_I_A_B = 7 -CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT' -CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT__enumvalues = { - 0: 'CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_UAB', - 1: 'CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_UA_B', - 2: 'CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_U_AB', - 3: 'CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_U_A_B', - 4: 'CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_IAB', - 5: 'CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_IA_B', - 6: 'CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_I_AB', - 7: 'CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_I_A_B', -} -CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_UAB = 0 -CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_UA_B = 1 -CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_U_AB = 2 -CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_U_A_B = 3 -CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_IAB = 4 -CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_IA_B = 5 -CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_I_AB = 6 -CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_I_A_B = 7 -CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_ENABLE' -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_ENABLE__enumvalues = { - 0: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_ENABLE_DISABLE', - 1: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_ENABLE_ONESHOT', - 2: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_ENABLE_CONTINUOUS', - 3: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_ENABLE_RESERVED', -} -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_ENABLE_DISABLE = 0 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_ENABLE_ONESHOT = 1 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_ENABLE_CONTINUOUS = 2 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_ENABLE_RESERVED = 3 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE' -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE__enumvalues = { - 0: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE_FALSE', - 1: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE_TRUE', -} -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE_FALSE = 0 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE_TRUE = 1 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE' -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE__enumvalues = { - 0: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE_FALSE', - 1: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE_TRUE', -} -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE_FALSE = 0 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE_TRUE = 1 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW' -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW__enumvalues = { - 0: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_1pixel', - 1: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_2pixel', - 2: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_3pixel', - 3: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_4pixel', -} -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_1pixel = 0 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_2pixel = 1 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_3pixel = 2 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_4pixel = 3 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_ENABLE' -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_ENABLE__enumvalues = { - 0: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_ENABLE_FALSE', - 1: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_ENABLE_TRUE', -} -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_ENABLE_FALSE = 0 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_ENABLE_TRUE = 1 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_UPDATE' -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_UPDATE__enumvalues = { - 0: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_UPDATE_FALSE', - 1: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_UPDATE_TRUE', -} -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_UPDATE_FALSE = 0 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_UPDATE_TRUE = 1 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_UPDATE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_VSYNC_POLARITY' -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_VSYNC_POLARITY__enumvalues = { - 0: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_VSYNC_POLARITY_FALSE', - 1: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_VSYNC_POLARITY_TRUE', -} -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_VSYNC_POLARITY_FALSE = 0 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_VSYNC_POLARITY_TRUE = 1 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_VSYNC_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HSYNC_POLARITY' -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HSYNC_POLARITY__enumvalues = { - 0: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HSYNC_POLARITY_FALSE', - 1: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HSYNC_POLARITY_TRUE', -} -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HSYNC_POLARITY_FALSE = 0 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HSYNC_POLARITY_TRUE = 1 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HSYNC_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_INTERLACE_MODE' -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_INTERLACE_MODE__enumvalues = { - 0: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_INTERLACE_MODE_FALSE', - 1: 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_INTERLACE_MODE_TRUE', -} -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_INTERLACE_MODE_FALSE = 0 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_INTERLACE_MODE_TRUE = 1 -CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_INTERLACE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_ENABLE' -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_ENABLE__enumvalues = { - 0: 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_ENABLE_FALSE', - 1: 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_ENABLE_TRUE', -} -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_ENABLE_FALSE = 0 -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_ENABLE_TRUE = 1 -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_CLEAR' -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_CLEAR__enumvalues = { - 0: 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_CLEAR_FALSE', - 1: 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_CLEAR_TRUE', -} -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_CLEAR_FALSE = 0 -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_CLEAR_TRUE = 1 -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_TYPE' -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_TYPE__enumvalues = { - 0: 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_TYPE_FALSE', - 1: 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_TYPE_TRUE', -} -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_TYPE_FALSE = 0 -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_TYPE_TRUE = 1 -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT' -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT__enumvalues = { - 0: 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_1FRAME', - 1: 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_2FRAME', - 2: 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_4FRAME', - 3: 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_8FRAME', - 4: 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_16FRAME', - 5: 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_32FRAME', - 6: 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_64FRAME', - 7: 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_128FRAME', -} -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_1FRAME = 0 -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_2FRAME = 1 -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_4FRAME = 2 -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_8FRAME = 3 -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_16FRAME = 4 -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_32FRAME = 5 -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_64FRAME = 6 -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_128FRAME = 7 -CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_ENABLE' -CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_ENABLE__enumvalues = { - 0: 'CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_ENABLE_FALSE', - 1: 'CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_ENABLE_TRUE', -} -CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_ENABLE_FALSE = 0 -CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_ENABLE_TRUE = 1 -CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_CLEAR' -CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_CLEAR__enumvalues = { - 0: 'CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_CLEAR_FALSE', - 1: 'CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_CLEAR_TRUE', -} -CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_CLEAR_FALSE = 0 -CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_CLEAR_TRUE = 1 -CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_TYPE' -CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_TYPE__enumvalues = { - 0: 'CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_TYPE_FALSE', - 1: 'CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_TYPE_TRUE', -} -CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_TYPE_FALSE = 0 -CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_TYPE_TRUE = 1 -CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE' -CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE__enumvalues = { - 0: 'CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE_FALSE', - 1: 'CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE_TRUE', -} -CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE_FALSE = 0 -CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE_TRUE = 1 -CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_CLEAR' -CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_CLEAR__enumvalues = { - 0: 'CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_CLEAR_FALSE', - 1: 'CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_CLEAR_TRUE', -} -CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_CLEAR_FALSE = 0 -CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_CLEAR_TRUE = 1 -CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_TYPE' -CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_TYPE__enumvalues = { - 0: 'CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_TYPE_FALSE', - 1: 'CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_TYPE_TRUE', -} -CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_TYPE_FALSE = 0 -CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_TYPE_TRUE = 1 -CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_ENABLE' -CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_ENABLE__enumvalues = { - 0: 'CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_ENABLE_FALSE', - 1: 'CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_ENABLE_TRUE', -} -CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_ENABLE_FALSE = 0 -CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_ENABLE_TRUE = 1 -CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_CLEAR' -CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_CLEAR__enumvalues = { - 0: 'CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_CLEAR_FALSE', - 1: 'CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_CLEAR_TRUE', -} -CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_CLEAR_FALSE = 0 -CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_CLEAR_TRUE = 1 -CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_TYPE' -CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_TYPE__enumvalues = { - 0: 'CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_TYPE_FALSE', - 1: 'CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_TYPE_TRUE', -} -CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_TYPE_FALSE = 0 -CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_TYPE_TRUE = 1 -CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE' -CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE__enumvalues = { - 0: 'CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE_FALSE', - 1: 'CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE_TRUE', -} -CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE_FALSE = 0 -CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE_TRUE = 1 -CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE_VALUE' -CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE_VALUE__enumvalues = { - 0: 'CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE_VALUE_OFF', - 1: 'CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE_VALUE_ON', -} -CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE_VALUE_OFF = 0 -CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE_VALUE_ON = 1 -CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE_VALUE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN' -CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN__enumvalues = { - 0: 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN_FALSE', - 1: 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN_TRUE', -} -CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN_FALSE = 0 -CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN_TRUE = 1 -CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN_DB' -CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN_DB__enumvalues = { - 0: 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN_DB_FALSE', - 1: 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN_DB_TRUE', -} -CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN_DB_FALSE = 0 -CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN_DB_TRUE = 1 -CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN_DB = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_V_UPDATE_MODE' -CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_V_UPDATE_MODE__enumvalues = { - 0: 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_BOTH', - 1: 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_INTERLACE', - 2: 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_PROGRASSIVE', - 3: 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_V_UPDATE_MODE_RESERVED', -} -CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_BOTH = 0 -CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_INTERLACE = 1 -CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_PROGRASSIVE = 2 -CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_V_UPDATE_MODE_RESERVED = 3 -CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_V_UPDATE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_STEREO_SEL_OVR' -CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_STEREO_SEL_OVR__enumvalues = { - 0: 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_STEREO_SEL_OVR_FALSE', - 1: 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_STEREO_SEL_OVR_TRUE', -} -CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_STEREO_SEL_OVR_FALSE = 0 -CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_STEREO_SEL_OVR_TRUE = 1 -CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_STEREO_SEL_OVR = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_V_SYNC_A_POL' -CRTC_V_SYNC_A_POL__enumvalues = { - 0: 'CRTC_V_SYNC_A_POL_HIGH', - 1: 'CRTC_V_SYNC_A_POL_LOW', -} -CRTC_V_SYNC_A_POL_HIGH = 0 -CRTC_V_SYNC_A_POL_LOW = 1 -CRTC_V_SYNC_A_POL = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_H_SYNC_A_POL' -CRTC_H_SYNC_A_POL__enumvalues = { - 0: 'CRTC_H_SYNC_A_POL_HIGH', - 1: 'CRTC_H_SYNC_A_POL_LOW', -} -CRTC_H_SYNC_A_POL_HIGH = 0 -CRTC_H_SYNC_A_POL_LOW = 1 -CRTC_H_SYNC_A_POL = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_HORZ_REPETITION_COUNT' -CRTC_HORZ_REPETITION_COUNT__enumvalues = { - 0: 'CRTC_HORZ_REPETITION_COUNT_0', - 1: 'CRTC_HORZ_REPETITION_COUNT_1', - 2: 'CRTC_HORZ_REPETITION_COUNT_2', - 3: 'CRTC_HORZ_REPETITION_COUNT_3', - 4: 'CRTC_HORZ_REPETITION_COUNT_4', - 5: 'CRTC_HORZ_REPETITION_COUNT_5', - 6: 'CRTC_HORZ_REPETITION_COUNT_6', - 7: 'CRTC_HORZ_REPETITION_COUNT_7', - 8: 'CRTC_HORZ_REPETITION_COUNT_8', - 9: 'CRTC_HORZ_REPETITION_COUNT_9', - 10: 'CRTC_HORZ_REPETITION_COUNT_10', - 11: 'CRTC_HORZ_REPETITION_COUNT_11', - 12: 'CRTC_HORZ_REPETITION_COUNT_12', - 13: 'CRTC_HORZ_REPETITION_COUNT_13', - 14: 'CRTC_HORZ_REPETITION_COUNT_14', - 15: 'CRTC_HORZ_REPETITION_COUNT_15', -} -CRTC_HORZ_REPETITION_COUNT_0 = 0 -CRTC_HORZ_REPETITION_COUNT_1 = 1 -CRTC_HORZ_REPETITION_COUNT_2 = 2 -CRTC_HORZ_REPETITION_COUNT_3 = 3 -CRTC_HORZ_REPETITION_COUNT_4 = 4 -CRTC_HORZ_REPETITION_COUNT_5 = 5 -CRTC_HORZ_REPETITION_COUNT_6 = 6 -CRTC_HORZ_REPETITION_COUNT_7 = 7 -CRTC_HORZ_REPETITION_COUNT_8 = 8 -CRTC_HORZ_REPETITION_COUNT_9 = 9 -CRTC_HORZ_REPETITION_COUNT_10 = 10 -CRTC_HORZ_REPETITION_COUNT_11 = 11 -CRTC_HORZ_REPETITION_COUNT_12 = 12 -CRTC_HORZ_REPETITION_COUNT_13 = 13 -CRTC_HORZ_REPETITION_COUNT_14 = 14 -CRTC_HORZ_REPETITION_COUNT_15 = 15 -CRTC_HORZ_REPETITION_COUNT = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_DRR_MODE_DBUF_UPDATE_MODE' -CRTC_DRR_MODE_DBUF_UPDATE_MODE__enumvalues = { - 0: 'CRTC_DRR_MODE_DBUF_UPDATE_MODE_00_IMMEDIATE', - 1: 'CRTC_DRR_MODE_DBUF_UPDATE_MODE_01_MANUAL', - 2: 'CRTC_DRR_MODE_DBUF_UPDATE_MODE_10_DBUF', - 3: 'CRTC_DRR_MODE_DBUF_UPDATE_MODE_11_SYNCED_DBUF', -} -CRTC_DRR_MODE_DBUF_UPDATE_MODE_00_IMMEDIATE = 0 -CRTC_DRR_MODE_DBUF_UPDATE_MODE_01_MANUAL = 1 -CRTC_DRR_MODE_DBUF_UPDATE_MODE_10_DBUF = 2 -CRTC_DRR_MODE_DBUF_UPDATE_MODE_11_SYNCED_DBUF = 3 -CRTC_DRR_MODE_DBUF_UPDATE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_PIXEL_ENCODING' -FMT_CONTROL_PIXEL_ENCODING__enumvalues = { - 0: 'FMT_CONTROL_PIXEL_ENCODING_RGB444_OR_YCBCR444', - 1: 'FMT_CONTROL_PIXEL_ENCODING_YCBCR422', - 2: 'FMT_CONTROL_PIXEL_ENCODING_YCBCR420', - 3: 'FMT_CONTROL_PIXEL_ENCODING_RESERVED', -} -FMT_CONTROL_PIXEL_ENCODING_RGB444_OR_YCBCR444 = 0 -FMT_CONTROL_PIXEL_ENCODING_YCBCR422 = 1 -FMT_CONTROL_PIXEL_ENCODING_YCBCR420 = 2 -FMT_CONTROL_PIXEL_ENCODING_RESERVED = 3 -FMT_CONTROL_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_SUBSAMPLING_MODE' -FMT_CONTROL_SUBSAMPLING_MODE__enumvalues = { - 0: 'FMT_CONTROL_SUBSAMPLING_MODE_DROP', - 1: 'FMT_CONTROL_SUBSAMPLING_MODE_AVERAGE', - 2: 'FMT_CONTROL_SUBSAMPLING_MOME_3_TAP', - 3: 'FMT_CONTROL_SUBSAMPLING_MOME_RESERVED', -} -FMT_CONTROL_SUBSAMPLING_MODE_DROP = 0 -FMT_CONTROL_SUBSAMPLING_MODE_AVERAGE = 1 -FMT_CONTROL_SUBSAMPLING_MOME_3_TAP = 2 -FMT_CONTROL_SUBSAMPLING_MOME_RESERVED = 3 -FMT_CONTROL_SUBSAMPLING_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_SUBSAMPLING_ORDER' -FMT_CONTROL_SUBSAMPLING_ORDER__enumvalues = { - 0: 'FMT_CONTROL_SUBSAMPLING_ORDER_CB_BEFORE_CR', - 1: 'FMT_CONTROL_SUBSAMPLING_ORDER_CR_BEFORE_CB', -} -FMT_CONTROL_SUBSAMPLING_ORDER_CB_BEFORE_CR = 0 -FMT_CONTROL_SUBSAMPLING_ORDER_CR_BEFORE_CB = 1 -FMT_CONTROL_SUBSAMPLING_ORDER = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS' -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS__enumvalues = { - 0: 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_DISABLE', - 1: 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_ENABLE', -} -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_DISABLE = 0 -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_ENABLE = 1 -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE' -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_TRUNCATION', - 1: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_ROUNDING', -} -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_TRUNCATION = 0 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_ROUNDING = 1 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH' -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_18BPP', - 1: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_24BPP', - 2: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_30BPP', -} -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_18BPP = 0 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_24BPP = 1 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_30BPP = 2 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH' -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_18BPP', - 1: 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_24BPP', - 2: 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_30BPP', -} -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_18BPP = 0 -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_24BPP = 1 -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_30BPP = 2 -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH' -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_18BPP', - 1: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_24BPP', - 2: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_30BPP', -} -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_18BPP = 0 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_24BPP = 1 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_30BPP = 2 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL' -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL2', - 1: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL4', -} -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL2 = 0 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL4 = 1 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL' -FMT_BIT_DEPTH_CONTROL_25FRC_SEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Ei', - 1: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Fi', - 2: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Gi', - 3: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_RESERVED', -} -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Ei = 0 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Fi = 1 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Gi = 2 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_RESERVED = 3 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL' -FMT_BIT_DEPTH_CONTROL_50FRC_SEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_A', - 1: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_B', - 2: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_C', - 3: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_D', -} -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_A = 0 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_B = 1 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_C = 2 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_D = 3 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL' -FMT_BIT_DEPTH_CONTROL_75FRC_SEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_E', - 1: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_F', - 2: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_G', - 3: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_RESERVED', -} -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_E = 0 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_F = 1 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_G = 2 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_RESERVED = 3 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_SELECT' -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_SELECT__enumvalues = { - 0: 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_SELECT_LEGACY_HARDCODED_PATTERN', - 1: 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_SELECT_PROGRAMMABLE_PATTERN', -} -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_SELECT_LEGACY_HARDCODED_PATTERN = 0 -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_SELECT_PROGRAMMABLE_PATTERN = 1 -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0' -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0__enumvalues = { - 0: 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_BGR', - 1: 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_RGB', -} -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_BGR = 0 -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_RGB = 1 -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0 = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CLAMP_CNTL_COLOR_FORMAT' -FMT_CLAMP_CNTL_COLOR_FORMAT__enumvalues = { - 0: 'FMT_CLAMP_CNTL_COLOR_FORMAT_6BPC', - 1: 'FMT_CLAMP_CNTL_COLOR_FORMAT_8BPC', - 2: 'FMT_CLAMP_CNTL_COLOR_FORMAT_10BPC', - 3: 'FMT_CLAMP_CNTL_COLOR_FORMAT_12BPC', - 4: 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED1', - 5: 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED2', - 6: 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED3', - 7: 'FMT_CLAMP_CNTL_COLOR_FORMAT_PROGRAMMABLE', -} -FMT_CLAMP_CNTL_COLOR_FORMAT_6BPC = 0 -FMT_CLAMP_CNTL_COLOR_FORMAT_8BPC = 1 -FMT_CLAMP_CNTL_COLOR_FORMAT_10BPC = 2 -FMT_CLAMP_CNTL_COLOR_FORMAT_12BPC = 3 -FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED1 = 4 -FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED2 = 5 -FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED3 = 6 -FMT_CLAMP_CNTL_COLOR_FORMAT_PROGRAMMABLE = 7 -FMT_CLAMP_CNTL_COLOR_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CRC_CNTL_CONT_EN' -FMT_CRC_CNTL_CONT_EN__enumvalues = { - 0: 'FMT_CRC_CNTL_CONT_EN_ONE_SHOT', - 1: 'FMT_CRC_CNTL_CONT_EN_CONT', -} -FMT_CRC_CNTL_CONT_EN_ONE_SHOT = 0 -FMT_CRC_CNTL_CONT_EN_CONT = 1 -FMT_CRC_CNTL_CONT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CRC_CNTL_INCLUDE_OVERSCAN' -FMT_CRC_CNTL_INCLUDE_OVERSCAN__enumvalues = { - 0: 'FMT_CRC_CNTL_INCLUDE_OVERSCAN_NOT_INCLUDE', - 1: 'FMT_CRC_CNTL_INCLUDE_OVERSCAN_INCLUDE', -} -FMT_CRC_CNTL_INCLUDE_OVERSCAN_NOT_INCLUDE = 0 -FMT_CRC_CNTL_INCLUDE_OVERSCAN_INCLUDE = 1 -FMT_CRC_CNTL_INCLUDE_OVERSCAN = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CRC_CNTL_ONLY_BLANKB' -FMT_CRC_CNTL_ONLY_BLANKB__enumvalues = { - 0: 'FMT_CRC_CNTL_ONLY_BLANKB_ENTIRE_FIELD', - 1: 'FMT_CRC_CNTL_ONLY_BLANKB_NON_BLANK', -} -FMT_CRC_CNTL_ONLY_BLANKB_ENTIRE_FIELD = 0 -FMT_CRC_CNTL_ONLY_BLANKB_NON_BLANK = 1 -FMT_CRC_CNTL_ONLY_BLANKB = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CRC_CNTL_PSR_MODE_ENABLE' -FMT_CRC_CNTL_PSR_MODE_ENABLE__enumvalues = { - 0: 'FMT_CRC_CNTL_PSR_MODE_ENABLE_NORMAL', - 1: 'FMT_CRC_CNTL_PSR_MODE_ENABLE_EDP_PSR_CRC', -} -FMT_CRC_CNTL_PSR_MODE_ENABLE_NORMAL = 0 -FMT_CRC_CNTL_PSR_MODE_ENABLE_EDP_PSR_CRC = 1 -FMT_CRC_CNTL_PSR_MODE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CRC_CNTL_INTERLACE_MODE' -FMT_CRC_CNTL_INTERLACE_MODE__enumvalues = { - 0: 'FMT_CRC_CNTL_INTERLACE_MODE_TOP', - 1: 'FMT_CRC_CNTL_INTERLACE_MODE_BOTTOM', - 2: 'FMT_CRC_CNTL_INTERLACE_MODE_BOTH_BOTTOM', - 3: 'FMT_CRC_CNTL_INTERLACE_MODE_BOTH_EACH', -} -FMT_CRC_CNTL_INTERLACE_MODE_TOP = 0 -FMT_CRC_CNTL_INTERLACE_MODE_BOTTOM = 1 -FMT_CRC_CNTL_INTERLACE_MODE_BOTH_BOTTOM = 2 -FMT_CRC_CNTL_INTERLACE_MODE_BOTH_EACH = 3 -FMT_CRC_CNTL_INTERLACE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CRC_CNTL_EVEN_ODD_PIX_ENABLE' -FMT_CRC_CNTL_EVEN_ODD_PIX_ENABLE__enumvalues = { - 0: 'FMT_CRC_CNTL_EVEN_ODD_PIX_ENABLE_ALL', - 1: 'FMT_CRC_CNTL_EVEN_ODD_PIX_ENABLE_ODD_EVEN', -} -FMT_CRC_CNTL_EVEN_ODD_PIX_ENABLE_ALL = 0 -FMT_CRC_CNTL_EVEN_ODD_PIX_ENABLE_ODD_EVEN = 1 -FMT_CRC_CNTL_EVEN_ODD_PIX_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CRC_CNTL_EVEN_ODD_PIX_SELECT' -FMT_CRC_CNTL_EVEN_ODD_PIX_SELECT__enumvalues = { - 0: 'FMT_CRC_CNTL_EVEN_ODD_PIX_SELECT_EVEN', - 1: 'FMT_CRC_CNTL_EVEN_ODD_PIX_SELECT_ODD', -} -FMT_CRC_CNTL_EVEN_ODD_PIX_SELECT_EVEN = 0 -FMT_CRC_CNTL_EVEN_ODD_PIX_SELECT_ODD = 1 -FMT_CRC_CNTL_EVEN_ODD_PIX_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_DEBUG_CNTL_COLOR_SELECT' -FMT_DEBUG_CNTL_COLOR_SELECT__enumvalues = { - 0: 'FMT_DEBUG_CNTL_COLOR_SELECT_BLUE', - 1: 'FMT_DEBUG_CNTL_COLOR_SELECT_GREEN', - 2: 'FMT_DEBUG_CNTL_COLOR_SELECT_RED1', - 3: 'FMT_DEBUG_CNTL_COLOR_SELECT_RED2', -} -FMT_DEBUG_CNTL_COLOR_SELECT_BLUE = 0 -FMT_DEBUG_CNTL_COLOR_SELECT_GREEN = 1 -FMT_DEBUG_CNTL_COLOR_SELECT_RED1 = 2 -FMT_DEBUG_CNTL_COLOR_SELECT_RED2 = 3 -FMT_DEBUG_CNTL_COLOR_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_SPATIAL_DITHER_MODE' -FMT_SPATIAL_DITHER_MODE__enumvalues = { - 0: 'FMT_SPATIAL_DITHER_MODE_0', - 1: 'FMT_SPATIAL_DITHER_MODE_1', - 2: 'FMT_SPATIAL_DITHER_MODE_2', - 3: 'FMT_SPATIAL_DITHER_MODE_3', -} -FMT_SPATIAL_DITHER_MODE_0 = 0 -FMT_SPATIAL_DITHER_MODE_1 = 1 -FMT_SPATIAL_DITHER_MODE_2 = 2 -FMT_SPATIAL_DITHER_MODE_3 = 3 -FMT_SPATIAL_DITHER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_STEREOSYNC_OVR_POL' -FMT_STEREOSYNC_OVR_POL__enumvalues = { - 0: 'FMT_STEREOSYNC_OVR_POL_INVERTED', - 1: 'FMT_STEREOSYNC_OVR_POL_NOT_INVERTED', -} -FMT_STEREOSYNC_OVR_POL_INVERTED = 0 -FMT_STEREOSYNC_OVR_POL_NOT_INVERTED = 1 -FMT_STEREOSYNC_OVR_POL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_DYNAMIC_EXP_MODE' -FMT_DYNAMIC_EXP_MODE__enumvalues = { - 0: 'FMT_DYNAMIC_EXP_MODE_10to12', - 1: 'FMT_DYNAMIC_EXP_MODE_8to12', -} -FMT_DYNAMIC_EXP_MODE_10to12 = 0 -FMT_DYNAMIC_EXP_MODE_8to12 = 1 -FMT_DYNAMIC_EXP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'HPD_INT_CONTROL_ACK' -HPD_INT_CONTROL_ACK__enumvalues = { - 0: 'HPD_INT_CONTROL_ACK_0', - 1: 'HPD_INT_CONTROL_ACK_1', -} -HPD_INT_CONTROL_ACK_0 = 0 -HPD_INT_CONTROL_ACK_1 = 1 -HPD_INT_CONTROL_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'HPD_INT_CONTROL_POLARITY' -HPD_INT_CONTROL_POLARITY__enumvalues = { - 0: 'HPD_INT_CONTROL_GEN_INT_ON_DISCON', - 1: 'HPD_INT_CONTROL_GEN_INT_ON_CON', -} -HPD_INT_CONTROL_GEN_INT_ON_DISCON = 0 -HPD_INT_CONTROL_GEN_INT_ON_CON = 1 -HPD_INT_CONTROL_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'HPD_INT_CONTROL_RX_INT_ACK' -HPD_INT_CONTROL_RX_INT_ACK__enumvalues = { - 0: 'HPD_INT_CONTROL_RX_INT_ACK_0', - 1: 'HPD_INT_CONTROL_RX_INT_ACK_1', -} -HPD_INT_CONTROL_RX_INT_ACK_0 = 0 -HPD_INT_CONTROL_RX_INT_ACK_1 = 1 -HPD_INT_CONTROL_RX_INT_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'LB_DATA_FORMAT_PIXEL_DEPTH' -LB_DATA_FORMAT_PIXEL_DEPTH__enumvalues = { - 0: 'LB_DATA_FORMAT_PIXEL_DEPTH_30BPP', - 1: 'LB_DATA_FORMAT_PIXEL_DEPTH_24BPP', - 2: 'LB_DATA_FORMAT_PIXEL_DEPTH_18BPP', - 3: 'LB_DATA_FORMAT_PIXEL_DEPTH_36BPP', -} -LB_DATA_FORMAT_PIXEL_DEPTH_30BPP = 0 -LB_DATA_FORMAT_PIXEL_DEPTH_24BPP = 1 -LB_DATA_FORMAT_PIXEL_DEPTH_18BPP = 2 -LB_DATA_FORMAT_PIXEL_DEPTH_36BPP = 3 -LB_DATA_FORMAT_PIXEL_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'LB_DATA_FORMAT_PIXEL_EXPAN_MODE' -LB_DATA_FORMAT_PIXEL_EXPAN_MODE__enumvalues = { - 0: 'LB_DATA_FORMAT_PIXEL_EXPAN_MODE_ZERO_PIXEL_EXPANSION', - 1: 'LB_DATA_FORMAT_PIXEL_EXPAN_MODE_DYNAMIC_PIXEL_EXPANSION', -} -LB_DATA_FORMAT_PIXEL_EXPAN_MODE_ZERO_PIXEL_EXPANSION = 0 -LB_DATA_FORMAT_PIXEL_EXPAN_MODE_DYNAMIC_PIXEL_EXPANSION = 1 -LB_DATA_FORMAT_PIXEL_EXPAN_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'LB_DATA_FORMAT_PIXEL_REDUCE_MODE' -LB_DATA_FORMAT_PIXEL_REDUCE_MODE__enumvalues = { - 0: 'LB_DATA_FORMAT_PIXEL_REDUCE_MODE_TRUNCATION', - 1: 'LB_DATA_FORMAT_PIXEL_REDUCE_MODE_ROUNDING', -} -LB_DATA_FORMAT_PIXEL_REDUCE_MODE_TRUNCATION = 0 -LB_DATA_FORMAT_PIXEL_REDUCE_MODE_ROUNDING = 1 -LB_DATA_FORMAT_PIXEL_REDUCE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'LB_DATA_FORMAT_DYNAMIC_PIXEL_DEPTH' -LB_DATA_FORMAT_DYNAMIC_PIXEL_DEPTH__enumvalues = { - 0: 'LB_DATA_FORMAT_DYNAMIC_PIXEL_DEPTH_36BPP', - 1: 'LB_DATA_FORMAT_DYNAMIC_PIXEL_DEPTH_30BPP', -} -LB_DATA_FORMAT_DYNAMIC_PIXEL_DEPTH_36BPP = 0 -LB_DATA_FORMAT_DYNAMIC_PIXEL_DEPTH_30BPP = 1 -LB_DATA_FORMAT_DYNAMIC_PIXEL_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'LB_DATA_FORMAT_INTERLEAVE_EN' -LB_DATA_FORMAT_INTERLEAVE_EN__enumvalues = { - 0: 'LB_DATA_FORMAT_INTERLEAVE_DISABLE', - 1: 'LB_DATA_FORMAT_INTERLEAVE_ENABLE', -} -LB_DATA_FORMAT_INTERLEAVE_DISABLE = 0 -LB_DATA_FORMAT_INTERLEAVE_ENABLE = 1 -LB_DATA_FORMAT_INTERLEAVE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'LB_DATA_FORMAT_REQUEST_MODE' -LB_DATA_FORMAT_REQUEST_MODE__enumvalues = { - 0: 'LB_DATA_FORMAT_REQUEST_MODE_NORMAL', - 1: 'LB_DATA_FORMAT_REQUEST_MODE_START_OF_LINE', -} -LB_DATA_FORMAT_REQUEST_MODE_NORMAL = 0 -LB_DATA_FORMAT_REQUEST_MODE_START_OF_LINE = 1 -LB_DATA_FORMAT_REQUEST_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'LB_DATA_FORMAT_ALPHA_EN' -LB_DATA_FORMAT_ALPHA_EN__enumvalues = { - 0: 'LB_DATA_FORMAT_ALPHA_DISABLE', - 1: 'LB_DATA_FORMAT_ALPHA_ENABLE', -} -LB_DATA_FORMAT_ALPHA_DISABLE = 0 -LB_DATA_FORMAT_ALPHA_ENABLE = 1 -LB_DATA_FORMAT_ALPHA_EN = ctypes.c_uint32 # enum - -# values for enumeration 'LB_VLINE_START_END_VLINE_INV' -LB_VLINE_START_END_VLINE_INV__enumvalues = { - 0: 'LB_VLINE_START_END_VLINE_NORMAL', - 1: 'LB_VLINE_START_END_VLINE_INVERSE', -} -LB_VLINE_START_END_VLINE_NORMAL = 0 -LB_VLINE_START_END_VLINE_INVERSE = 1 -LB_VLINE_START_END_VLINE_INV = ctypes.c_uint32 # enum - -# values for enumeration 'LB_VLINE2_START_END_VLINE2_INV' -LB_VLINE2_START_END_VLINE2_INV__enumvalues = { - 0: 'LB_VLINE2_START_END_VLINE2_NORMAL', - 1: 'LB_VLINE2_START_END_VLINE2_INVERSE', -} -LB_VLINE2_START_END_VLINE2_NORMAL = 0 -LB_VLINE2_START_END_VLINE2_INVERSE = 1 -LB_VLINE2_START_END_VLINE2_INV = ctypes.c_uint32 # enum - -# values for enumeration 'LB_INTERRUPT_MASK_VBLANK_INTERRUPT_MASK' -LB_INTERRUPT_MASK_VBLANK_INTERRUPT_MASK__enumvalues = { - 0: 'LB_INTERRUPT_MASK_VBLANK_INTERRUPT_DISABLE', - 1: 'LB_INTERRUPT_MASK_VBLANK_INTERRUPT_ENABLE', -} -LB_INTERRUPT_MASK_VBLANK_INTERRUPT_DISABLE = 0 -LB_INTERRUPT_MASK_VBLANK_INTERRUPT_ENABLE = 1 -LB_INTERRUPT_MASK_VBLANK_INTERRUPT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'LB_INTERRUPT_MASK_VLINE_INTERRUPT_MASK' -LB_INTERRUPT_MASK_VLINE_INTERRUPT_MASK__enumvalues = { - 0: 'LB_INTERRUPT_MASK_VLINE_INTERRUPT_DISABLE', - 1: 'LB_INTERRUPT_MASK_VLINE_INTERRUPT_ENABLE', -} -LB_INTERRUPT_MASK_VLINE_INTERRUPT_DISABLE = 0 -LB_INTERRUPT_MASK_VLINE_INTERRUPT_ENABLE = 1 -LB_INTERRUPT_MASK_VLINE_INTERRUPT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'LB_INTERRUPT_MASK_VLINE2_INTERRUPT_MASK' -LB_INTERRUPT_MASK_VLINE2_INTERRUPT_MASK__enumvalues = { - 0: 'LB_INTERRUPT_MASK_VLINE2_INTERRUPT_DISABLE', - 1: 'LB_INTERRUPT_MASK_VLINE2_INTERRUPT_ENABLE', -} -LB_INTERRUPT_MASK_VLINE2_INTERRUPT_DISABLE = 0 -LB_INTERRUPT_MASK_VLINE2_INTERRUPT_ENABLE = 1 -LB_INTERRUPT_MASK_VLINE2_INTERRUPT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'LB_VLINE_STATUS_VLINE_ACK' -LB_VLINE_STATUS_VLINE_ACK__enumvalues = { - 0: 'LB_VLINE_STATUS_VLINE_NORMAL', - 1: 'LB_VLINE_STATUS_VLINE_CLEAR', -} -LB_VLINE_STATUS_VLINE_NORMAL = 0 -LB_VLINE_STATUS_VLINE_CLEAR = 1 -LB_VLINE_STATUS_VLINE_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'LB_VLINE_STATUS_VLINE_INTERRUPT_TYPE' -LB_VLINE_STATUS_VLINE_INTERRUPT_TYPE__enumvalues = { - 0: 'LB_VLINE_STATUS_VLINE_INTERRUPT_TYPE_LEVEL_BASED', - 1: 'LB_VLINE_STATUS_VLINE_INTERRUPT_TYPE_PULSE_BASED', -} -LB_VLINE_STATUS_VLINE_INTERRUPT_TYPE_LEVEL_BASED = 0 -LB_VLINE_STATUS_VLINE_INTERRUPT_TYPE_PULSE_BASED = 1 -LB_VLINE_STATUS_VLINE_INTERRUPT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'LB_VLINE2_STATUS_VLINE2_ACK' -LB_VLINE2_STATUS_VLINE2_ACK__enumvalues = { - 0: 'LB_VLINE2_STATUS_VLINE2_NORMAL', - 1: 'LB_VLINE2_STATUS_VLINE2_CLEAR', -} -LB_VLINE2_STATUS_VLINE2_NORMAL = 0 -LB_VLINE2_STATUS_VLINE2_CLEAR = 1 -LB_VLINE2_STATUS_VLINE2_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'LB_VLINE2_STATUS_VLINE2_INTERRUPT_TYPE' -LB_VLINE2_STATUS_VLINE2_INTERRUPT_TYPE__enumvalues = { - 0: 'LB_VLINE2_STATUS_VLINE2_INTERRUPT_TYPE_LEVEL_BASED', - 1: 'LB_VLINE2_STATUS_VLINE2_INTERRUPT_TYPE_PULSE_BASED', -} -LB_VLINE2_STATUS_VLINE2_INTERRUPT_TYPE_LEVEL_BASED = 0 -LB_VLINE2_STATUS_VLINE2_INTERRUPT_TYPE_PULSE_BASED = 1 -LB_VLINE2_STATUS_VLINE2_INTERRUPT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'LB_VBLANK_STATUS_VBLANK_ACK' -LB_VBLANK_STATUS_VBLANK_ACK__enumvalues = { - 0: 'LB_VBLANK_STATUS_VBLANK_NORMAL', - 1: 'LB_VBLANK_STATUS_VBLANK_CLEAR', -} -LB_VBLANK_STATUS_VBLANK_NORMAL = 0 -LB_VBLANK_STATUS_VBLANK_CLEAR = 1 -LB_VBLANK_STATUS_VBLANK_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'LB_VBLANK_STATUS_VBLANK_INTERRUPT_TYPE' -LB_VBLANK_STATUS_VBLANK_INTERRUPT_TYPE__enumvalues = { - 0: 'LB_VBLANK_STATUS_VBLANK_INTERRUPT_TYPE_LEVEL_BASED', - 1: 'LB_VBLANK_STATUS_VBLANK_INTERRUPT_TYPE_PULSE_BASED', -} -LB_VBLANK_STATUS_VBLANK_INTERRUPT_TYPE_LEVEL_BASED = 0 -LB_VBLANK_STATUS_VBLANK_INTERRUPT_TYPE_PULSE_BASED = 1 -LB_VBLANK_STATUS_VBLANK_INTERRUPT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL' -LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL__enumvalues = { - 0: 'LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL_DISABLE', - 1: 'LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL_FROM_VSYNC_VBLANK', - 2: 'LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL_FROM_POWERDOWN_RESET', - 3: 'LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL_FROM_VSYNC_VBLANK_POWERDOWN_RESET', -} -LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL_DISABLE = 0 -LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL_FROM_VSYNC_VBLANK = 1 -LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL_FROM_POWERDOWN_RESET = 2 -LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL_FROM_VSYNC_VBLANK_POWERDOWN_RESET = 3 -LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL2' -LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL2__enumvalues = { - 0: 'LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL2_USE_VBLANK', - 1: 'LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL2_USE_VSYNC', -} -LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL2_USE_VBLANK = 0 -LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL2_USE_VSYNC = 1 -LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL2 = ctypes.c_uint32 # enum - -# values for enumeration 'LB_SYNC_RESET_SEL_LB_SYNC_DURATION' -LB_SYNC_RESET_SEL_LB_SYNC_DURATION__enumvalues = { - 0: 'LB_SYNC_RESET_SEL_LB_SYNC_DURATION_16_CLOCKS', - 1: 'LB_SYNC_RESET_SEL_LB_SYNC_DURATION_32_CLOCKS', - 2: 'LB_SYNC_RESET_SEL_LB_SYNC_DURATION_64_CLOCKS', - 3: 'LB_SYNC_RESET_SEL_LB_SYNC_DURATION_128_CLOCKS', -} -LB_SYNC_RESET_SEL_LB_SYNC_DURATION_16_CLOCKS = 0 -LB_SYNC_RESET_SEL_LB_SYNC_DURATION_32_CLOCKS = 1 -LB_SYNC_RESET_SEL_LB_SYNC_DURATION_64_CLOCKS = 2 -LB_SYNC_RESET_SEL_LB_SYNC_DURATION_128_CLOCKS = 3 -LB_SYNC_RESET_SEL_LB_SYNC_DURATION = ctypes.c_uint32 # enum - -# values for enumeration 'LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_EN' -LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_EN__enumvalues = { - 0: 'LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_DISABLE', - 1: 'LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_ENABLE', -} -LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_DISABLE = 0 -LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_ENABLE = 1 -LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_EN = ctypes.c_uint32 # enum - -# values for enumeration 'LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_REP_EN' -LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_REP_EN__enumvalues = { - 0: 'LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_REPLACEMENT_DISABLE', - 1: 'LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_REPLACEMENT_ENABLE', -} -LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_REPLACEMENT_DISABLE = 0 -LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_REPLACEMENT_ENABLE = 1 -LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_REP_EN = ctypes.c_uint32 # enum - -# values for enumeration 'LB_BUFFER_STATUS_LB_BUFFER_EMPTY_ACK' -LB_BUFFER_STATUS_LB_BUFFER_EMPTY_ACK__enumvalues = { - 0: 'LB_BUFFER_STATUS_LB_BUFFER_EMPTY_NORMAL', - 1: 'LB_BUFFER_STATUS_LB_BUFFER_EMPTY_RESET', -} -LB_BUFFER_STATUS_LB_BUFFER_EMPTY_NORMAL = 0 -LB_BUFFER_STATUS_LB_BUFFER_EMPTY_RESET = 1 -LB_BUFFER_STATUS_LB_BUFFER_EMPTY_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'LB_BUFFER_STATUS_LB_BUFFER_FULL_ACK' -LB_BUFFER_STATUS_LB_BUFFER_FULL_ACK__enumvalues = { - 0: 'LB_BUFFER_STATUS_LB_BUFFER_FULL_NORMAL', - 1: 'LB_BUFFER_STATUS_LB_BUFFER_FULL_RESET', -} -LB_BUFFER_STATUS_LB_BUFFER_FULL_NORMAL = 0 -LB_BUFFER_STATUS_LB_BUFFER_FULL_RESET = 1 -LB_BUFFER_STATUS_LB_BUFFER_FULL_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'LB_MVP_AFR_FLIP_MODE_MVP_AFR_FLIP_MODE' -LB_MVP_AFR_FLIP_MODE_MVP_AFR_FLIP_MODE__enumvalues = { - 2: 'LB_MVP_AFR_FLIP_MODE_MVP_AFR_FLIP_MODE_REAL_FLIP', - 3: 'LB_MVP_AFR_FLIP_MODE_MVP_AFR_FLIP_MODE_DUMMY_FLIP', -} -LB_MVP_AFR_FLIP_MODE_MVP_AFR_FLIP_MODE_REAL_FLIP = 2 -LB_MVP_AFR_FLIP_MODE_MVP_AFR_FLIP_MODE_DUMMY_FLIP = 3 -LB_MVP_AFR_FLIP_MODE_MVP_AFR_FLIP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_RESET' -LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_RESET__enumvalues = { - 0: 'LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_NORMAL', - 1: 'LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_RESET_ACTIVE', -} -LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_NORMAL = 0 -LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_RESET_ACTIVE = 1 -LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_RESET_ACK' -LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_RESET_ACK__enumvalues = { - 0: 'LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_RESET_ACK_NOT_USED0', - 1: 'LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_RESET_ACK_NOT_USED1', -} -LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_RESET_ACK_NOT_USED0 = 0 -LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_RESET_ACK_NOT_USED1 = 1 -LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_RESET_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_LINE_NUM_INSERT_MODE' -LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_LINE_NUM_INSERT_MODE__enumvalues = { - 0: 'LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_LINE_NUM_INSERT_MODE_NO_INSERT', - 1: 'LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_LINE_NUM_INSERT_MODE_DEBUG', - 2: 'LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_LINE_NUM_INSERT_MODE_HSYNC_MODE', -} -LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_LINE_NUM_INSERT_MODE_NO_INSERT = 0 -LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_LINE_NUM_INSERT_MODE_DEBUG = 1 -LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_LINE_NUM_INSERT_MODE_HSYNC_MODE = 2 -LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_LINE_NUM_INSERT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_AUTO_ENABLE' -LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_AUTO_ENABLE__enumvalues = { - 0: 'LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_AUTO_DISABLE', - 1: 'LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_AUTO_EN', -} -LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_AUTO_DISABLE = 0 -LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_AUTO_EN = 1 -LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_AUTO_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'LB_DC_MVP_LB_CONTROL_MVP_SWAP_LOCK_IN_MODE' -LB_DC_MVP_LB_CONTROL_MVP_SWAP_LOCK_IN_MODE__enumvalues = { - 1: 'ALPHA_LB_DC_MVP_LB_CONTROL_MVP_SWAP_LOCK_IN_MODE_MASTER', - 2: 'ALPHA_LB_DC_MVP_LB_CONTROL_MVP_SWAP_LOCK_IN_MODE_SLAVE', -} -ALPHA_LB_DC_MVP_LB_CONTROL_MVP_SWAP_LOCK_IN_MODE_MASTER = 1 -ALPHA_LB_DC_MVP_LB_CONTROL_MVP_SWAP_LOCK_IN_MODE_SLAVE = 2 -LB_DC_MVP_LB_CONTROL_MVP_SWAP_LOCK_IN_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_SEL' -LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_SEL__enumvalues = { - 0: 'LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_SEL_NOT_USED0', - 1: 'LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_SEL_NOT_USED1', -} -LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_SEL_NOT_USED0 = 0 -LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_SEL_NOT_USED1 = 1 -LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_FORCE_ONE' -LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_FORCE_ONE__enumvalues = { - 0: 'LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_NO_FORCE_ONE', - 1: 'LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_FORCE_TO_ONE', -} -LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_NO_FORCE_ONE = 0 -LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_FORCE_TO_ONE = 1 -LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_FORCE_ONE = ctypes.c_uint32 # enum - -# values for enumeration 'LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_FORCE_ZERO' -LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_FORCE_ZERO__enumvalues = { - 0: 'LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_NO_FORCE_ZERO', - 1: 'LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_FORCE_TO_ZERO', -} -LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_NO_FORCE_ZERO = 0 -LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_FORCE_TO_ZERO = 1 -LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_FORCE_ZERO = ctypes.c_uint32 # enum - -# values for enumeration 'LB_TEST_DEBUG_INDEX_LB_TEST_DEBUG_WRITE_EN' -LB_TEST_DEBUG_INDEX_LB_TEST_DEBUG_WRITE_EN__enumvalues = { - 0: 'LB_TEST_DEBUG_INDEX_LB_TEST_DEBUG_WRITE_EN_NOT_USED0', - 1: 'LB_TEST_DEBUG_INDEX_LB_TEST_DEBUG_WRITE_EN_NOT_USED1', -} -LB_TEST_DEBUG_INDEX_LB_TEST_DEBUG_WRITE_EN_NOT_USED0 = 0 -LB_TEST_DEBUG_INDEX_LB_TEST_DEBUG_WRITE_EN_NOT_USED1 = 1 -LB_TEST_DEBUG_INDEX_LB_TEST_DEBUG_WRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_KEEPOUT_MODE' -HDMI_KEEPOUT_MODE__enumvalues = { - 0: 'HDMI_KEEPOUT_0_650PIX_AFTER_VSYNC', - 1: 'HDMI_KEEPOUT_509_650PIX_AFTER_VSYNC', -} -HDMI_KEEPOUT_0_650PIX_AFTER_VSYNC = 0 -HDMI_KEEPOUT_509_650PIX_AFTER_VSYNC = 1 -HDMI_KEEPOUT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_DATA_SCRAMBLE_EN' -HDMI_DATA_SCRAMBLE_EN__enumvalues = { - 0: 'HDMI_DATA_SCRAMBLE_DISABLE', - 1: 'HDMI_DATA_SCRAMBLE_ENABLE', -} -HDMI_DATA_SCRAMBLE_DISABLE = 0 -HDMI_DATA_SCRAMBLE_ENABLE = 1 -HDMI_DATA_SCRAMBLE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_CLOCK_CHANNEL_RATE' -HDMI_CLOCK_CHANNEL_RATE__enumvalues = { - 0: 'HDMI_CLOCK_CHANNEL_FREQ_EQUAL_TO_CHAR_RATE', - 1: 'HDMI_CLOCK_CHANNEL_FREQ_QUARTER_TO_CHAR_RATE', -} -HDMI_CLOCK_CHANNEL_FREQ_EQUAL_TO_CHAR_RATE = 0 -HDMI_CLOCK_CHANNEL_FREQ_QUARTER_TO_CHAR_RATE = 1 -HDMI_CLOCK_CHANNEL_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_NO_EXTRA_NULL_PACKET_FILLED' -HDMI_NO_EXTRA_NULL_PACKET_FILLED__enumvalues = { - 0: 'HDMI_EXTRA_NULL_PACKET_FILLED_ENABLE', - 1: 'HDMI_EXTRA_NULL_PACKET_FILLED_DISABLE', -} -HDMI_EXTRA_NULL_PACKET_FILLED_ENABLE = 0 -HDMI_EXTRA_NULL_PACKET_FILLED_DISABLE = 1 -HDMI_NO_EXTRA_NULL_PACKET_FILLED = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_PACKET_GEN_VERSION' -HDMI_PACKET_GEN_VERSION__enumvalues = { - 0: 'HDMI_PACKET_GEN_VERSION_OLD', - 1: 'HDMI_PACKET_GEN_VERSION_NEW', -} -HDMI_PACKET_GEN_VERSION_OLD = 0 -HDMI_PACKET_GEN_VERSION_NEW = 1 -HDMI_PACKET_GEN_VERSION = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ERROR_ACK' -HDMI_ERROR_ACK__enumvalues = { - 0: 'HDMI_ERROR_ACK_INT', - 1: 'HDMI_ERROR_NOT_ACK', -} -HDMI_ERROR_ACK_INT = 0 -HDMI_ERROR_NOT_ACK = 1 -HDMI_ERROR_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ERROR_MASK' -HDMI_ERROR_MASK__enumvalues = { - 0: 'HDMI_ERROR_MASK_INT', - 1: 'HDMI_ERROR_NOT_MASK', -} -HDMI_ERROR_MASK_INT = 0 -HDMI_ERROR_NOT_MASK = 1 -HDMI_ERROR_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_DEEP_COLOR_DEPTH' -HDMI_DEEP_COLOR_DEPTH__enumvalues = { - 0: 'HDMI_DEEP_COLOR_DEPTH_24BPP', - 1: 'HDMI_DEEP_COLOR_DEPTH_30BPP', - 2: 'HDMI_DEEP_COLOR_DEPTH_36BPP', - 3: 'HDMI_DEEP_COLOR_DEPTH_RESERVED', -} -HDMI_DEEP_COLOR_DEPTH_24BPP = 0 -HDMI_DEEP_COLOR_DEPTH_30BPP = 1 -HDMI_DEEP_COLOR_DEPTH_36BPP = 2 -HDMI_DEEP_COLOR_DEPTH_RESERVED = 3 -HDMI_DEEP_COLOR_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_AUDIO_DELAY_EN' -HDMI_AUDIO_DELAY_EN__enumvalues = { - 0: 'HDMI_AUDIO_DELAY_DISABLE', - 1: 'HDMI_AUDIO_DELAY_58CLK', - 2: 'HDMI_AUDIO_DELAY_56CLK', - 3: 'HDMI_AUDIO_DELAY_RESERVED', -} -HDMI_AUDIO_DELAY_DISABLE = 0 -HDMI_AUDIO_DELAY_58CLK = 1 -HDMI_AUDIO_DELAY_56CLK = 2 -HDMI_AUDIO_DELAY_RESERVED = 3 -HDMI_AUDIO_DELAY_EN = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_AUDIO_SEND_MAX_PACKETS' -HDMI_AUDIO_SEND_MAX_PACKETS__enumvalues = { - 0: 'HDMI_NOT_SEND_MAX_AUDIO_PACKETS', - 1: 'HDMI_SEND_MAX_AUDIO_PACKETS', -} -HDMI_NOT_SEND_MAX_AUDIO_PACKETS = 0 -HDMI_SEND_MAX_AUDIO_PACKETS = 1 -HDMI_AUDIO_SEND_MAX_PACKETS = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_SEND' -HDMI_ACR_SEND__enumvalues = { - 0: 'HDMI_ACR_NOT_SEND', - 1: 'HDMI_ACR_PKT_SEND', -} -HDMI_ACR_NOT_SEND = 0 -HDMI_ACR_PKT_SEND = 1 -HDMI_ACR_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_CONT' -HDMI_ACR_CONT__enumvalues = { - 0: 'HDMI_ACR_CONT_DISABLE', - 1: 'HDMI_ACR_CONT_ENABLE', -} -HDMI_ACR_CONT_DISABLE = 0 -HDMI_ACR_CONT_ENABLE = 1 -HDMI_ACR_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_SELECT' -HDMI_ACR_SELECT__enumvalues = { - 0: 'HDMI_ACR_SELECT_HW', - 1: 'HDMI_ACR_SELECT_32K', - 2: 'HDMI_ACR_SELECT_44K', - 3: 'HDMI_ACR_SELECT_48K', -} -HDMI_ACR_SELECT_HW = 0 -HDMI_ACR_SELECT_32K = 1 -HDMI_ACR_SELECT_44K = 2 -HDMI_ACR_SELECT_48K = 3 -HDMI_ACR_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_SOURCE' -HDMI_ACR_SOURCE__enumvalues = { - 0: 'HDMI_ACR_SOURCE_HW', - 1: 'HDMI_ACR_SOURCE_SW', -} -HDMI_ACR_SOURCE_HW = 0 -HDMI_ACR_SOURCE_SW = 1 -HDMI_ACR_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_N_MULTIPLE' -HDMI_ACR_N_MULTIPLE__enumvalues = { - 0: 'HDMI_ACR_0_MULTIPLE_RESERVED', - 1: 'HDMI_ACR_1_MULTIPLE', - 2: 'HDMI_ACR_2_MULTIPLE', - 3: 'HDMI_ACR_3_MULTIPLE_RESERVED', - 4: 'HDMI_ACR_4_MULTIPLE', - 5: 'HDMI_ACR_5_MULTIPLE_RESERVED', - 6: 'HDMI_ACR_6_MULTIPLE_RESERVED', - 7: 'HDMI_ACR_7_MULTIPLE_RESERVED', -} -HDMI_ACR_0_MULTIPLE_RESERVED = 0 -HDMI_ACR_1_MULTIPLE = 1 -HDMI_ACR_2_MULTIPLE = 2 -HDMI_ACR_3_MULTIPLE_RESERVED = 3 -HDMI_ACR_4_MULTIPLE = 4 -HDMI_ACR_5_MULTIPLE_RESERVED = 5 -HDMI_ACR_6_MULTIPLE_RESERVED = 6 -HDMI_ACR_7_MULTIPLE_RESERVED = 7 -HDMI_ACR_N_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_AUDIO_PRIORITY' -HDMI_ACR_AUDIO_PRIORITY__enumvalues = { - 0: 'HDMI_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE', - 1: 'HDMI_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT', -} -HDMI_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE = 0 -HDMI_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT = 1 -HDMI_ACR_AUDIO_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_NULL_SEND' -HDMI_NULL_SEND__enumvalues = { - 0: 'HDMI_NULL_NOT_SEND', - 1: 'HDMI_NULL_PKT_SEND', -} -HDMI_NULL_NOT_SEND = 0 -HDMI_NULL_PKT_SEND = 1 -HDMI_NULL_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_SEND' -HDMI_GC_SEND__enumvalues = { - 0: 'HDMI_GC_NOT_SEND', - 1: 'HDMI_GC_PKT_SEND', -} -HDMI_GC_NOT_SEND = 0 -HDMI_GC_PKT_SEND = 1 -HDMI_GC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_CONT' -HDMI_GC_CONT__enumvalues = { - 0: 'HDMI_GC_CONT_DISABLE', - 1: 'HDMI_GC_CONT_ENABLE', -} -HDMI_GC_CONT_DISABLE = 0 -HDMI_GC_CONT_ENABLE = 1 -HDMI_GC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ISRC_SEND' -HDMI_ISRC_SEND__enumvalues = { - 0: 'HDMI_ISRC_NOT_SEND', - 1: 'HDMI_ISRC_PKT_SEND', -} -HDMI_ISRC_NOT_SEND = 0 -HDMI_ISRC_PKT_SEND = 1 -HDMI_ISRC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ISRC_CONT' -HDMI_ISRC_CONT__enumvalues = { - 0: 'HDMI_ISRC_CONT_DISABLE', - 1: 'HDMI_ISRC_CONT_ENABLE', -} -HDMI_ISRC_CONT_DISABLE = 0 -HDMI_ISRC_CONT_ENABLE = 1 -HDMI_ISRC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_AVI_INFO_SEND' -HDMI_AVI_INFO_SEND__enumvalues = { - 0: 'HDMI_AVI_INFO_NOT_SEND', - 1: 'HDMI_AVI_INFO_PKT_SEND', -} -HDMI_AVI_INFO_NOT_SEND = 0 -HDMI_AVI_INFO_PKT_SEND = 1 -HDMI_AVI_INFO_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_AVI_INFO_CONT' -HDMI_AVI_INFO_CONT__enumvalues = { - 0: 'HDMI_AVI_INFO_CONT_DISABLE', - 1: 'HDMI_AVI_INFO_CONT_ENABLE', -} -HDMI_AVI_INFO_CONT_DISABLE = 0 -HDMI_AVI_INFO_CONT_ENABLE = 1 -HDMI_AVI_INFO_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_AUDIO_INFO_SEND' -HDMI_AUDIO_INFO_SEND__enumvalues = { - 0: 'HDMI_AUDIO_INFO_NOT_SEND', - 1: 'HDMI_AUDIO_INFO_PKT_SEND', -} -HDMI_AUDIO_INFO_NOT_SEND = 0 -HDMI_AUDIO_INFO_PKT_SEND = 1 -HDMI_AUDIO_INFO_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_AUDIO_INFO_CONT' -HDMI_AUDIO_INFO_CONT__enumvalues = { - 0: 'HDMI_AUDIO_INFO_CONT_DISABLE', - 1: 'HDMI_AUDIO_INFO_CONT_ENABLE', -} -HDMI_AUDIO_INFO_CONT_DISABLE = 0 -HDMI_AUDIO_INFO_CONT_ENABLE = 1 -HDMI_AUDIO_INFO_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_MPEG_INFO_SEND' -HDMI_MPEG_INFO_SEND__enumvalues = { - 0: 'HDMI_MPEG_INFO_NOT_SEND', - 1: 'HDMI_MPEG_INFO_PKT_SEND', -} -HDMI_MPEG_INFO_NOT_SEND = 0 -HDMI_MPEG_INFO_PKT_SEND = 1 -HDMI_MPEG_INFO_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_MPEG_INFO_CONT' -HDMI_MPEG_INFO_CONT__enumvalues = { - 0: 'HDMI_MPEG_INFO_CONT_DISABLE', - 1: 'HDMI_MPEG_INFO_CONT_ENABLE', -} -HDMI_MPEG_INFO_CONT_DISABLE = 0 -HDMI_MPEG_INFO_CONT_ENABLE = 1 -HDMI_MPEG_INFO_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GENERIC0_SEND' -HDMI_GENERIC0_SEND__enumvalues = { - 0: 'HDMI_GENERIC0_NOT_SEND', - 1: 'HDMI_GENERIC0_PKT_SEND', -} -HDMI_GENERIC0_NOT_SEND = 0 -HDMI_GENERIC0_PKT_SEND = 1 -HDMI_GENERIC0_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GENERIC0_CONT' -HDMI_GENERIC0_CONT__enumvalues = { - 0: 'HDMI_GENERIC0_CONT_DISABLE', - 1: 'HDMI_GENERIC0_CONT_ENABLE', -} -HDMI_GENERIC0_CONT_DISABLE = 0 -HDMI_GENERIC0_CONT_ENABLE = 1 -HDMI_GENERIC0_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GENERIC1_SEND' -HDMI_GENERIC1_SEND__enumvalues = { - 0: 'HDMI_GENERIC1_NOT_SEND', - 1: 'HDMI_GENERIC1_PKT_SEND', -} -HDMI_GENERIC1_NOT_SEND = 0 -HDMI_GENERIC1_PKT_SEND = 1 -HDMI_GENERIC1_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GENERIC1_CONT' -HDMI_GENERIC1_CONT__enumvalues = { - 0: 'HDMI_GENERIC1_CONT_DISABLE', - 1: 'HDMI_GENERIC1_CONT_ENABLE', -} -HDMI_GENERIC1_CONT_DISABLE = 0 -HDMI_GENERIC1_CONT_ENABLE = 1 -HDMI_GENERIC1_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_AVMUTE_CONT' -HDMI_GC_AVMUTE_CONT__enumvalues = { - 0: 'HDMI_GC_AVMUTE_CONT_DISABLE', - 1: 'HDMI_GC_AVMUTE_CONT_ENABLE', -} -HDMI_GC_AVMUTE_CONT_DISABLE = 0 -HDMI_GC_AVMUTE_CONT_ENABLE = 1 -HDMI_GC_AVMUTE_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_PACKING_PHASE_OVERRIDE' -HDMI_PACKING_PHASE_OVERRIDE__enumvalues = { - 0: 'HDMI_PACKING_PHASE_SET_BY_HW', - 1: 'HDMI_PACKING_PHASE_SET_BY_SW', -} -HDMI_PACKING_PHASE_SET_BY_HW = 0 -HDMI_PACKING_PHASE_SET_BY_SW = 1 -HDMI_PACKING_PHASE_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GENERIC2_SEND' -HDMI_GENERIC2_SEND__enumvalues = { - 0: 'HDMI_GENERIC2_NOT_SEND', - 1: 'HDMI_GENERIC2_PKT_SEND', -} -HDMI_GENERIC2_NOT_SEND = 0 -HDMI_GENERIC2_PKT_SEND = 1 -HDMI_GENERIC2_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GENERIC2_CONT' -HDMI_GENERIC2_CONT__enumvalues = { - 0: 'HDMI_GENERIC2_CONT_DISABLE', - 1: 'HDMI_GENERIC2_CONT_ENABLE', -} -HDMI_GENERIC2_CONT_DISABLE = 0 -HDMI_GENERIC2_CONT_ENABLE = 1 -HDMI_GENERIC2_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GENERIC3_SEND' -HDMI_GENERIC3_SEND__enumvalues = { - 0: 'HDMI_GENERIC3_NOT_SEND', - 1: 'HDMI_GENERIC3_PKT_SEND', -} -HDMI_GENERIC3_NOT_SEND = 0 -HDMI_GENERIC3_PKT_SEND = 1 -HDMI_GENERIC3_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GENERIC3_CONT' -HDMI_GENERIC3_CONT__enumvalues = { - 0: 'HDMI_GENERIC3_CONT_DISABLE', - 1: 'HDMI_GENERIC3_CONT_ENABLE', -} -HDMI_GENERIC3_CONT_DISABLE = 0 -HDMI_GENERIC3_CONT_ENABLE = 1 -HDMI_GENERIC3_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_PIXEL_ENCODING' -TMDS_PIXEL_ENCODING__enumvalues = { - 0: 'TMDS_PIXEL_ENCODING_444_OR_420', - 1: 'TMDS_PIXEL_ENCODING_422', -} -TMDS_PIXEL_ENCODING_444_OR_420 = 0 -TMDS_PIXEL_ENCODING_422 = 1 -TMDS_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_COLOR_FORMAT' -TMDS_COLOR_FORMAT__enumvalues = { - 0: 'TMDS_COLOR_FORMAT__24BPP__TWIN30BPP_MSB__DUAL48BPP', - 1: 'TMDS_COLOR_FORMAT_TWIN30BPP_LSB', - 2: 'TMDS_COLOR_FORMAT_DUAL30BPP', - 3: 'TMDS_COLOR_FORMAT_RESERVED', -} -TMDS_COLOR_FORMAT__24BPP__TWIN30BPP_MSB__DUAL48BPP = 0 -TMDS_COLOR_FORMAT_TWIN30BPP_LSB = 1 -TMDS_COLOR_FORMAT_DUAL30BPP = 2 -TMDS_COLOR_FORMAT_RESERVED = 3 -TMDS_COLOR_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_STEREOSYNC_CTL_SEL_REG' -TMDS_STEREOSYNC_CTL_SEL_REG__enumvalues = { - 0: 'TMDS_STEREOSYNC_CTL0', - 1: 'TMDS_STEREOSYNC_CTL1', - 2: 'TMDS_STEREOSYNC_CTL2', - 3: 'TMDS_STEREOSYNC_CTL3', -} -TMDS_STEREOSYNC_CTL0 = 0 -TMDS_STEREOSYNC_CTL1 = 1 -TMDS_STEREOSYNC_CTL2 = 2 -TMDS_STEREOSYNC_CTL3 = 3 -TMDS_STEREOSYNC_CTL_SEL_REG = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_DATA_SEL' -TMDS_CTL0_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL0_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL0_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL0_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL0_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL0_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL0_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL0_DATA_SEL8_RANDOM_DATA', - 7: 'TMDS_CTL0_DATA_SEL9_SEL15_RANDOM_DATA', -} -TMDS_CTL0_DATA_SEL0_RESERVED = 0 -TMDS_CTL0_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL0_DATA_SEL2_VSYNC = 2 -TMDS_CTL0_DATA_SEL3_RESERVED = 3 -TMDS_CTL0_DATA_SEL4_HSYNC = 4 -TMDS_CTL0_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL0_DATA_SEL8_RANDOM_DATA = 6 -TMDS_CTL0_DATA_SEL9_SEL15_RANDOM_DATA = 7 -TMDS_CTL0_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_DATA_INVERT' -TMDS_CTL0_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL0_DATA_NORMAL', - 1: 'TMDS_CTL0_DATA_INVERT_EN', -} -TMDS_CTL0_DATA_NORMAL = 0 -TMDS_CTL0_DATA_INVERT_EN = 1 -TMDS_CTL0_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_DATA_MODULATION' -TMDS_CTL0_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL0_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL0_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL0_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL0_DATA_MODULATION_BIT2', -} -TMDS_CTL0_DATA_MODULATION_DISABLE = 0 -TMDS_CTL0_DATA_MODULATION_BIT0 = 1 -TMDS_CTL0_DATA_MODULATION_BIT1 = 2 -TMDS_CTL0_DATA_MODULATION_BIT2 = 3 -TMDS_CTL0_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_PATTERN_OUT_EN' -TMDS_CTL0_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL0_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL0_PATTERN_OUT_ENABLE', -} -TMDS_CTL0_PATTERN_OUT_DISABLE = 0 -TMDS_CTL0_PATTERN_OUT_ENABLE = 1 -TMDS_CTL0_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_DATA_SEL' -TMDS_CTL1_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL1_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL1_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL1_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL1_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL1_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL1_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL1_DATA_SEL8_BLANK_TIME', - 7: 'TMDS_CTL1_DATA_SEL9_SEL15_RESERVED', -} -TMDS_CTL1_DATA_SEL0_RESERVED = 0 -TMDS_CTL1_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL1_DATA_SEL2_VSYNC = 2 -TMDS_CTL1_DATA_SEL3_RESERVED = 3 -TMDS_CTL1_DATA_SEL4_HSYNC = 4 -TMDS_CTL1_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL1_DATA_SEL8_BLANK_TIME = 6 -TMDS_CTL1_DATA_SEL9_SEL15_RESERVED = 7 -TMDS_CTL1_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_DATA_INVERT' -TMDS_CTL1_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL1_DATA_NORMAL', - 1: 'TMDS_CTL1_DATA_INVERT_EN', -} -TMDS_CTL1_DATA_NORMAL = 0 -TMDS_CTL1_DATA_INVERT_EN = 1 -TMDS_CTL1_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_DATA_MODULATION' -TMDS_CTL1_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL1_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL1_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL1_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL1_DATA_MODULATION_BIT2', -} -TMDS_CTL1_DATA_MODULATION_DISABLE = 0 -TMDS_CTL1_DATA_MODULATION_BIT0 = 1 -TMDS_CTL1_DATA_MODULATION_BIT1 = 2 -TMDS_CTL1_DATA_MODULATION_BIT2 = 3 -TMDS_CTL1_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_PATTERN_OUT_EN' -TMDS_CTL1_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL1_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL1_PATTERN_OUT_ENABLE', -} -TMDS_CTL1_PATTERN_OUT_DISABLE = 0 -TMDS_CTL1_PATTERN_OUT_ENABLE = 1 -TMDS_CTL1_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_DATA_SEL' -TMDS_CTL2_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL2_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL2_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL2_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL2_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL2_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL2_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL2_DATA_SEL8_BLANK_TIME', - 7: 'TMDS_CTL2_DATA_SEL9_SEL15_RESERVED', -} -TMDS_CTL2_DATA_SEL0_RESERVED = 0 -TMDS_CTL2_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL2_DATA_SEL2_VSYNC = 2 -TMDS_CTL2_DATA_SEL3_RESERVED = 3 -TMDS_CTL2_DATA_SEL4_HSYNC = 4 -TMDS_CTL2_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL2_DATA_SEL8_BLANK_TIME = 6 -TMDS_CTL2_DATA_SEL9_SEL15_RESERVED = 7 -TMDS_CTL2_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_DATA_INVERT' -TMDS_CTL2_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL2_DATA_NORMAL', - 1: 'TMDS_CTL2_DATA_INVERT_EN', -} -TMDS_CTL2_DATA_NORMAL = 0 -TMDS_CTL2_DATA_INVERT_EN = 1 -TMDS_CTL2_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_DATA_MODULATION' -TMDS_CTL2_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL2_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL2_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL2_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL2_DATA_MODULATION_BIT2', -} -TMDS_CTL2_DATA_MODULATION_DISABLE = 0 -TMDS_CTL2_DATA_MODULATION_BIT0 = 1 -TMDS_CTL2_DATA_MODULATION_BIT1 = 2 -TMDS_CTL2_DATA_MODULATION_BIT2 = 3 -TMDS_CTL2_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_PATTERN_OUT_EN' -TMDS_CTL2_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL2_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL2_PATTERN_OUT_ENABLE', -} -TMDS_CTL2_PATTERN_OUT_DISABLE = 0 -TMDS_CTL2_PATTERN_OUT_ENABLE = 1 -TMDS_CTL2_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_DATA_INVERT' -TMDS_CTL3_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL3_DATA_NORMAL', - 1: 'TMDS_CTL3_DATA_INVERT_EN', -} -TMDS_CTL3_DATA_NORMAL = 0 -TMDS_CTL3_DATA_INVERT_EN = 1 -TMDS_CTL3_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_DATA_MODULATION' -TMDS_CTL3_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL3_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL3_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL3_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL3_DATA_MODULATION_BIT2', -} -TMDS_CTL3_DATA_MODULATION_DISABLE = 0 -TMDS_CTL3_DATA_MODULATION_BIT0 = 1 -TMDS_CTL3_DATA_MODULATION_BIT1 = 2 -TMDS_CTL3_DATA_MODULATION_BIT2 = 3 -TMDS_CTL3_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_PATTERN_OUT_EN' -TMDS_CTL3_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL3_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL3_PATTERN_OUT_ENABLE', -} -TMDS_CTL3_PATTERN_OUT_DISABLE = 0 -TMDS_CTL3_PATTERN_OUT_ENABLE = 1 -TMDS_CTL3_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_DATA_SEL' -TMDS_CTL3_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL3_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL3_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL3_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL3_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL3_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL3_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL3_DATA_SEL8_BLANK_TIME', - 7: 'TMDS_CTL3_DATA_SEL9_SEL15_RESERVED', -} -TMDS_CTL3_DATA_SEL0_RESERVED = 0 -TMDS_CTL3_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL3_DATA_SEL2_VSYNC = 2 -TMDS_CTL3_DATA_SEL3_RESERVED = 3 -TMDS_CTL3_DATA_SEL4_HSYNC = 4 -TMDS_CTL3_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL3_DATA_SEL8_BLANK_TIME = 6 -TMDS_CTL3_DATA_SEL9_SEL15_RESERVED = 7 -TMDS_CTL3_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FE_CNTL_SOURCE_SELECT' -DIG_FE_CNTL_SOURCE_SELECT__enumvalues = { - 0: 'DIG_FE_SOURCE_FROM_FMT0', - 1: 'DIG_FE_SOURCE_FROM_FMT1', - 2: 'DIG_FE_SOURCE_FROM_FMT2', - 3: 'DIG_FE_SOURCE_FROM_FMT3', - 4: 'DIG_FE_SOURCE_FROM_FMT4', - 5: 'DIG_FE_SOURCE_FROM_FMT5', -} -DIG_FE_SOURCE_FROM_FMT0 = 0 -DIG_FE_SOURCE_FROM_FMT1 = 1 -DIG_FE_SOURCE_FROM_FMT2 = 2 -DIG_FE_SOURCE_FROM_FMT3 = 3 -DIG_FE_SOURCE_FROM_FMT4 = 4 -DIG_FE_SOURCE_FROM_FMT5 = 5 -DIG_FE_CNTL_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FE_CNTL_STEREOSYNC_SELECT' -DIG_FE_CNTL_STEREOSYNC_SELECT__enumvalues = { - 0: 'DIG_FE_STEREOSYNC_FROM_FMT0', - 1: 'DIG_FE_STEREOSYNC_FROM_FMT1', - 2: 'DIG_FE_STEREOSYNC_FROM_FMT2', - 3: 'DIG_FE_STEREOSYNC_FROM_FMT3', - 4: 'DIG_FE_STEREOSYNC_FROM_FMT4', - 5: 'DIG_FE_STEREOSYNC_FROM_FMT5', -} -DIG_FE_STEREOSYNC_FROM_FMT0 = 0 -DIG_FE_STEREOSYNC_FROM_FMT1 = 1 -DIG_FE_STEREOSYNC_FROM_FMT2 = 2 -DIG_FE_STEREOSYNC_FROM_FMT3 = 3 -DIG_FE_STEREOSYNC_FROM_FMT4 = 4 -DIG_FE_STEREOSYNC_FROM_FMT5 = 5 -DIG_FE_CNTL_STEREOSYNC_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_READ_CLOCK_SRC' -DIG_FIFO_READ_CLOCK_SRC__enumvalues = { - 0: 'DIG_FIFO_READ_CLOCK_SRC_FROM_DCCG', - 1: 'DIG_FIFO_READ_CLOCK_SRC_FROM_DISPLAY_PIPE', -} -DIG_FIFO_READ_CLOCK_SRC_FROM_DCCG = 0 -DIG_FIFO_READ_CLOCK_SRC_FROM_DISPLAY_PIPE = 1 -DIG_FIFO_READ_CLOCK_SRC = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_OUTPUT_CRC_CNTL_LINK_SEL' -DIG_OUTPUT_CRC_CNTL_LINK_SEL__enumvalues = { - 0: 'DIG_OUTPUT_CRC_ON_LINK0', - 1: 'DIG_OUTPUT_CRC_ON_LINK1', -} -DIG_OUTPUT_CRC_ON_LINK0 = 0 -DIG_OUTPUT_CRC_ON_LINK1 = 1 -DIG_OUTPUT_CRC_CNTL_LINK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_OUTPUT_CRC_DATA_SEL' -DIG_OUTPUT_CRC_DATA_SEL__enumvalues = { - 0: 'DIG_OUTPUT_CRC_FOR_FULLFRAME', - 1: 'DIG_OUTPUT_CRC_FOR_ACTIVEONLY', - 2: 'DIG_OUTPUT_CRC_FOR_VBI', - 3: 'DIG_OUTPUT_CRC_FOR_AUDIO', -} -DIG_OUTPUT_CRC_FOR_FULLFRAME = 0 -DIG_OUTPUT_CRC_FOR_ACTIVEONLY = 1 -DIG_OUTPUT_CRC_FOR_VBI = 2 -DIG_OUTPUT_CRC_FOR_AUDIO = 3 -DIG_OUTPUT_CRC_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN' -DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN__enumvalues = { - 0: 'DIG_IN_NORMAL_OPERATION', - 1: 'DIG_IN_DEBUG_MODE', -} -DIG_IN_NORMAL_OPERATION = 0 -DIG_IN_DEBUG_MODE = 1 -DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL' -DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL__enumvalues = { - 0: 'DIG_10BIT_TEST_PATTERN', - 1: 'DIG_ALTERNATING_TEST_PATTERN', -} -DIG_10BIT_TEST_PATTERN = 0 -DIG_ALTERNATING_TEST_PATTERN = 1 -DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN' -DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN__enumvalues = { - 0: 'DIG_TEST_PATTERN_NORMAL', - 1: 'DIG_TEST_PATTERN_RANDOM', -} -DIG_TEST_PATTERN_NORMAL = 0 -DIG_TEST_PATTERN_RANDOM = 1 -DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_RANDOM_PATTERN_RESET' -DIG_TEST_PATTERN_RANDOM_PATTERN_RESET__enumvalues = { - 0: 'DIG_RANDOM_PATTERN_ENABLED', - 1: 'DIG_RANDOM_PATTERN_RESETED', -} -DIG_RANDOM_PATTERN_ENABLED = 0 -DIG_RANDOM_PATTERN_RESETED = 1 -DIG_TEST_PATTERN_RANDOM_PATTERN_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_EXTERNAL_RESET_EN' -DIG_TEST_PATTERN_EXTERNAL_RESET_EN__enumvalues = { - 0: 'DIG_TEST_PATTERN_EXTERNAL_RESET_ENABLE', - 1: 'DIG_TEST_PATTERN_EXTERNAL_RESET_BY_EXT_SIG', -} -DIG_TEST_PATTERN_EXTERNAL_RESET_ENABLE = 0 -DIG_TEST_PATTERN_EXTERNAL_RESET_BY_EXT_SIG = 1 -DIG_TEST_PATTERN_EXTERNAL_RESET_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_RANDOM_PATTERN_SEED_RAN_PAT' -DIG_RANDOM_PATTERN_SEED_RAN_PAT__enumvalues = { - 0: 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_ALL_PIXELS', - 1: 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_DE_HIGH', -} -DIG_RANDOM_PATTERN_SEED_RAN_PAT_ALL_PIXELS = 0 -DIG_RANDOM_PATTERN_SEED_RAN_PAT_DE_HIGH = 1 -DIG_RANDOM_PATTERN_SEED_RAN_PAT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_STATUS_USE_OVERWRITE_LEVEL' -DIG_FIFO_STATUS_USE_OVERWRITE_LEVEL__enumvalues = { - 0: 'DIG_FIFO_USE_OVERWRITE_LEVEL', - 1: 'DIG_FIFO_USE_CAL_AVERAGE_LEVEL', -} -DIG_FIFO_USE_OVERWRITE_LEVEL = 0 -DIG_FIFO_USE_CAL_AVERAGE_LEVEL = 1 -DIG_FIFO_STATUS_USE_OVERWRITE_LEVEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_ERROR_ACK' -DIG_FIFO_ERROR_ACK__enumvalues = { - 0: 'DIG_FIFO_ERROR_ACK_INT', - 1: 'DIG_FIFO_ERROR_NOT_ACK', -} -DIG_FIFO_ERROR_ACK_INT = 0 -DIG_FIFO_ERROR_NOT_ACK = 1 -DIG_FIFO_ERROR_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_STATUS_FORCE_RECAL_AVERAGE' -DIG_FIFO_STATUS_FORCE_RECAL_AVERAGE__enumvalues = { - 0: 'DIG_FIFO_NOT_FORCE_RECAL_AVERAGE', - 1: 'DIG_FIFO_FORCE_RECAL_AVERAGE_LEVEL', -} -DIG_FIFO_NOT_FORCE_RECAL_AVERAGE = 0 -DIG_FIFO_FORCE_RECAL_AVERAGE_LEVEL = 1 -DIG_FIFO_STATUS_FORCE_RECAL_AVERAGE = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_STATUS_FORCE_RECOMP_MINMAX' -DIG_FIFO_STATUS_FORCE_RECOMP_MINMAX__enumvalues = { - 0: 'DIG_FIFO_NOT_FORCE_RECOMP_MINMAX', - 1: 'DIG_FIFO_FORCE_RECOMP_MINMAX', -} -DIG_FIFO_NOT_FORCE_RECOMP_MINMAX = 0 -DIG_FIFO_FORCE_RECOMP_MINMAX = 1 -DIG_FIFO_STATUS_FORCE_RECOMP_MINMAX = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_INTERRUPT_STATUS_CHG_MASK' -AFMT_INTERRUPT_STATUS_CHG_MASK__enumvalues = { - 0: 'AFMT_INTERRUPT_DISABLE', - 1: 'AFMT_INTERRUPT_ENABLE', -} -AFMT_INTERRUPT_DISABLE = 0 -AFMT_INTERRUPT_ENABLE = 1 -AFMT_INTERRUPT_STATUS_CHG_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_AVMUTE' -HDMI_GC_AVMUTE__enumvalues = { - 0: 'HDMI_GC_AVMUTE_SET', - 1: 'HDMI_GC_AVMUTE_UNSET', -} -HDMI_GC_AVMUTE_SET = 0 -HDMI_GC_AVMUTE_UNSET = 1 -HDMI_GC_AVMUTE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_DEFAULT_PAHSE' -HDMI_DEFAULT_PAHSE__enumvalues = { - 0: 'HDMI_DEFAULT_PHASE_IS_0', - 1: 'HDMI_DEFAULT_PHASE_IS_1', -} -HDMI_DEFAULT_PHASE_IS_0 = 0 -HDMI_DEFAULT_PHASE_IS_1 = 1 -HDMI_DEFAULT_PAHSE = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD' -AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD__enumvalues = { - 0: 'AFMT_AUDIO_LAYOUT_DETERMINED_BY_AZ_AUDIO_CHANNEL_STATUS', - 1: 'AFMT_AUDIO_LAYOUT_OVRD_BY_REGISTER', -} -AFMT_AUDIO_LAYOUT_DETERMINED_BY_AZ_AUDIO_CHANNEL_STATUS = 0 -AFMT_AUDIO_LAYOUT_OVRD_BY_REGISTER = 1 -AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD = ctypes.c_uint32 # enum - -# values for enumeration 'AUDIO_LAYOUT_SELECT' -AUDIO_LAYOUT_SELECT__enumvalues = { - 0: 'AUDIO_LAYOUT_0', - 1: 'AUDIO_LAYOUT_1', -} -AUDIO_LAYOUT_0 = 0 -AUDIO_LAYOUT_1 = 1 -AUDIO_LAYOUT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_CRC_CONTROL_CONT' -AFMT_AUDIO_CRC_CONTROL_CONT__enumvalues = { - 0: 'AFMT_AUDIO_CRC_ONESHOT', - 1: 'AFMT_AUDIO_CRC_AUTO_RESTART', -} -AFMT_AUDIO_CRC_ONESHOT = 0 -AFMT_AUDIO_CRC_AUTO_RESTART = 1 -AFMT_AUDIO_CRC_CONTROL_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_CRC_CONTROL_SOURCE' -AFMT_AUDIO_CRC_CONTROL_SOURCE__enumvalues = { - 0: 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_INPUT', - 1: 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_OUTPUT', -} -AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_INPUT = 0 -AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_OUTPUT = 1 -AFMT_AUDIO_CRC_CONTROL_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_CRC_CONTROL_CH_SEL' -AFMT_AUDIO_CRC_CONTROL_CH_SEL__enumvalues = { - 0: 'AFMT_AUDIO_CRC_CH0_SIG', - 1: 'AFMT_AUDIO_CRC_CH1_SIG', - 2: 'AFMT_AUDIO_CRC_CH2_SIG', - 3: 'AFMT_AUDIO_CRC_CH3_SIG', - 4: 'AFMT_AUDIO_CRC_CH4_SIG', - 5: 'AFMT_AUDIO_CRC_CH5_SIG', - 6: 'AFMT_AUDIO_CRC_CH6_SIG', - 7: 'AFMT_AUDIO_CRC_CH7_SIG', - 8: 'AFMT_AUDIO_CRC_RESERVED_8', - 9: 'AFMT_AUDIO_CRC_RESERVED_9', - 10: 'AFMT_AUDIO_CRC_RESERVED_10', - 11: 'AFMT_AUDIO_CRC_RESERVED_11', - 12: 'AFMT_AUDIO_CRC_RESERVED_12', - 13: 'AFMT_AUDIO_CRC_RESERVED_13', - 14: 'AFMT_AUDIO_CRC_RESERVED_14', - 15: 'AFMT_AUDIO_CRC_AUDIO_SAMPLE_COUNT', -} -AFMT_AUDIO_CRC_CH0_SIG = 0 -AFMT_AUDIO_CRC_CH1_SIG = 1 -AFMT_AUDIO_CRC_CH2_SIG = 2 -AFMT_AUDIO_CRC_CH3_SIG = 3 -AFMT_AUDIO_CRC_CH4_SIG = 4 -AFMT_AUDIO_CRC_CH5_SIG = 5 -AFMT_AUDIO_CRC_CH6_SIG = 6 -AFMT_AUDIO_CRC_CH7_SIG = 7 -AFMT_AUDIO_CRC_RESERVED_8 = 8 -AFMT_AUDIO_CRC_RESERVED_9 = 9 -AFMT_AUDIO_CRC_RESERVED_10 = 10 -AFMT_AUDIO_CRC_RESERVED_11 = 11 -AFMT_AUDIO_CRC_RESERVED_12 = 12 -AFMT_AUDIO_CRC_RESERVED_13 = 13 -AFMT_AUDIO_CRC_RESERVED_14 = 14 -AFMT_AUDIO_CRC_AUDIO_SAMPLE_COUNT = 15 -AFMT_AUDIO_CRC_CONTROL_CH_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_RAMP_CONTROL0_SIGN' -AFMT_RAMP_CONTROL0_SIGN__enumvalues = { - 0: 'AFMT_RAMP_SIGNED', - 1: 'AFMT_RAMP_UNSIGNED', -} -AFMT_RAMP_SIGNED = 0 -AFMT_RAMP_UNSIGNED = 1 -AFMT_RAMP_CONTROL0_SIGN = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND' -AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND__enumvalues = { - 0: 'AFMT_AUDIO_PACKET_SENT_DISABLED', - 1: 'AFMT_AUDIO_PACKET_SENT_ENABLED', -} -AFMT_AUDIO_PACKET_SENT_DISABLED = 0 -AFMT_AUDIO_PACKET_SENT_ENABLED = 1 -AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS' -AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS__enumvalues = { - 0: 'AFMT_NOT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED_RESERVED', - 1: 'AFMT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED', -} -AFMT_NOT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED_RESERVED = 0 -AFMT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED = 1 -AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE' -AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE__enumvalues = { - 0: 'AFMT_INFOFRAME_SOURCE_FROM_AZALIA_BLOCK', - 1: 'AFMT_INFOFRAME_SOURCE_FROM_AFMT_REGISTERS', -} -AFMT_INFOFRAME_SOURCE_FROM_AZALIA_BLOCK = 0 -AFMT_INFOFRAME_SOURCE_FROM_AFMT_REGISTERS = 1 -AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_SRC_CONTROL_SELECT' -AFMT_AUDIO_SRC_CONTROL_SELECT__enumvalues = { - 0: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM0', - 1: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM1', - 2: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM2', - 3: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM3', - 4: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM4', - 5: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM5', - 6: 'AFMT_AUDIO_SRC_RESERVED', -} -AFMT_AUDIO_SRC_FROM_AZ_STREAM0 = 0 -AFMT_AUDIO_SRC_FROM_AZ_STREAM1 = 1 -AFMT_AUDIO_SRC_FROM_AZ_STREAM2 = 2 -AFMT_AUDIO_SRC_FROM_AZ_STREAM3 = 3 -AFMT_AUDIO_SRC_FROM_AZ_STREAM4 = 4 -AFMT_AUDIO_SRC_FROM_AZ_STREAM5 = 5 -AFMT_AUDIO_SRC_RESERVED = 6 -AFMT_AUDIO_SRC_CONTROL_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_BE_CNTL_MODE' -DIG_BE_CNTL_MODE__enumvalues = { - 0: 'DIG_BE_DP_SST_MODE', - 1: 'DIG_BE_RESERVED1', - 2: 'DIG_BE_TMDS_DVI_MODE', - 3: 'DIG_BE_TMDS_HDMI_MODE', - 4: 'DIG_BE_SDVO_RESERVED', - 5: 'DIG_BE_DP_MST_MODE', - 6: 'DIG_BE_RESERVED2', - 7: 'DIG_BE_RESERVED3', -} -DIG_BE_DP_SST_MODE = 0 -DIG_BE_RESERVED1 = 1 -DIG_BE_TMDS_DVI_MODE = 2 -DIG_BE_TMDS_HDMI_MODE = 3 -DIG_BE_SDVO_RESERVED = 4 -DIG_BE_DP_MST_MODE = 5 -DIG_BE_RESERVED2 = 6 -DIG_BE_RESERVED3 = 7 -DIG_BE_CNTL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_BE_CNTL_HPD_SELECT' -DIG_BE_CNTL_HPD_SELECT__enumvalues = { - 0: 'DIG_BE_CNTL_HPD1', - 1: 'DIG_BE_CNTL_HPD2', - 2: 'DIG_BE_CNTL_HPD3', - 3: 'DIG_BE_CNTL_HPD4', - 4: 'DIG_BE_CNTL_HPD5', - 5: 'DIG_BE_CNTL_HPD6', -} -DIG_BE_CNTL_HPD1 = 0 -DIG_BE_CNTL_HPD2 = 1 -DIG_BE_CNTL_HPD3 = 2 -DIG_BE_CNTL_HPD4 = 3 -DIG_BE_CNTL_HPD5 = 4 -DIG_BE_CNTL_HPD6 = 5 -DIG_BE_CNTL_HPD_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'LVTMA_RANDOM_PATTERN_SEED_RAN_PAT' -LVTMA_RANDOM_PATTERN_SEED_RAN_PAT__enumvalues = { - 0: 'LVTMA_RANDOM_PATTERN_SEED_ALL_PIXELS', - 1: 'LVTMA_RANDOM_PATTERN_SEED_ONLY_DE_HIGH', -} -LVTMA_RANDOM_PATTERN_SEED_ALL_PIXELS = 0 -LVTMA_RANDOM_PATTERN_SEED_ONLY_DE_HIGH = 1 -LVTMA_RANDOM_PATTERN_SEED_RAN_PAT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_SYNC_PHASE' -TMDS_SYNC_PHASE__enumvalues = { - 0: 'TMDS_NOT_SYNC_PHASE_ON_FRAME_START', - 1: 'TMDS_SYNC_PHASE_ON_FRAME_START', -} -TMDS_NOT_SYNC_PHASE_ON_FRAME_START = 0 -TMDS_SYNC_PHASE_ON_FRAME_START = 1 -TMDS_SYNC_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL' -TMDS_DATA_SYNCHRONIZATION_DSINTSEL__enumvalues = { - 0: 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_PCLK_TMDS', - 1: 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_TMDS_PLL', -} -TMDS_DATA_SYNCHRONIZATION_DSINTSEL_PCLK_TMDS = 0 -TMDS_DATA_SYNCHRONIZATION_DSINTSEL_TMDS_PLL = 1 -TMDS_DATA_SYNCHRONIZATION_DSINTSEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_ENABLE_HPD_MASK' -TMDS_TRANSMITTER_ENABLE_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_HPD_MASK_NOT_OVERRIDE', - 1: 'TMDS_TRANSMITTER_HPD_MASK_OVERRIDE', -} -TMDS_TRANSMITTER_HPD_MASK_NOT_OVERRIDE = 0 -TMDS_TRANSMITTER_HPD_MASK_OVERRIDE = 1 -TMDS_TRANSMITTER_ENABLE_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK' -TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_NOT_OVERRIDE', - 1: 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_OVERRIDE', -} -TMDS_TRANSMITTER_LNKCEN_HPD_MASK_NOT_OVERRIDE = 0 -TMDS_TRANSMITTER_LNKCEN_HPD_MASK_OVERRIDE = 1 -TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK' -TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_NOT_OVERRIDE', - 1: 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_OVERRIDE', -} -TMDS_TRANSMITTER_LNKDEN_HPD_MASK_NOT_OVERRIDE = 0 -TMDS_TRANSMITTER_LNKDEN_HPD_MASK_OVERRIDE = 1 -TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK' -TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_HPD_NOT_OVERRIDE_PLL_ENABLE', - 1: 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_DISCON', - 2: 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_CON', - 3: 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE', -} -TMDS_TRANSMITTER_HPD_NOT_OVERRIDE_PLL_ENABLE = 0 -TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_DISCON = 1 -TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_CON = 2 -TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE = 3 -TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_IDSCKSELA' -TMDS_TRANSMITTER_CONTROL_IDSCKSELA__enumvalues = { - 0: 'TMDS_TRANSMITTER_IDSCKSELA_USE_IPIXCLK', - 1: 'TMDS_TRANSMITTER_IDSCKSELA_USE_IDCLK', -} -TMDS_TRANSMITTER_IDSCKSELA_USE_IPIXCLK = 0 -TMDS_TRANSMITTER_IDSCKSELA_USE_IDCLK = 1 -TMDS_TRANSMITTER_CONTROL_IDSCKSELA = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_IDSCKSELB' -TMDS_TRANSMITTER_CONTROL_IDSCKSELB__enumvalues = { - 0: 'TMDS_TRANSMITTER_IDSCKSELB_USE_IPIXCLK', - 1: 'TMDS_TRANSMITTER_IDSCKSELB_USE_IDCLK', -} -TMDS_TRANSMITTER_IDSCKSELB_USE_IPIXCLK = 0 -TMDS_TRANSMITTER_IDSCKSELB_USE_IDCLK = 1 -TMDS_TRANSMITTER_CONTROL_IDSCKSELB = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN' -TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN__enumvalues = { - 0: 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_DISABLE', - 1: 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_ENABLE', -} -TMDS_TRANSMITTER_PLL_PWRUP_SEQ_DISABLE = 0 -TMDS_TRANSMITTER_PLL_PWRUP_SEQ_ENABLE = 1 -TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK' -TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_PLL_NOT_RST_ON_HPD', - 1: 'TMDS_TRANSMITTER_PLL_RST_ON_HPD', -} -TMDS_TRANSMITTER_PLL_NOT_RST_ON_HPD = 0 -TMDS_TRANSMITTER_PLL_RST_ON_HPD = 1 -TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS' -TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS__enumvalues = { - 0: 'TMDS_TRANSMITTER_TMCLK_FROM_TMDS_TMCLK', - 1: 'TMDS_TRANSMITTER_TMCLK_FROM_PADS', -} -TMDS_TRANSMITTER_TMCLK_FROM_TMDS_TMCLK = 0 -TMDS_TRANSMITTER_TMCLK_FROM_PADS = 1 -TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS' -TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS__enumvalues = { - 0: 'TMDS_TRANSMITTER_TDCLK_FROM_TMDS_TDCLK', - 1: 'TMDS_TRANSMITTER_TDCLK_FROM_PADS', -} -TMDS_TRANSMITTER_TDCLK_FROM_TMDS_TDCLK = 0 -TMDS_TRANSMITTER_TDCLK_FROM_PADS = 1 -TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN' -TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN__enumvalues = { - 0: 'TMDS_TRANSMITTER_PLLSEL_BY_HW', - 1: 'TMDS_TRANSMITTER_PLLSEL_OVERWRITE_BY_SW', -} -TMDS_TRANSMITTER_PLLSEL_BY_HW = 0 -TMDS_TRANSMITTER_PLLSEL_OVERWRITE_BY_SW = 1 -TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA' -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA__enumvalues = { - 0: 'TMDS_TRANSMITTER_BYPASS_PLLA_COHERENT', - 1: 'TMDS_TRANSMITTER_BYPASS_PLLA_INCOHERENT', -} -TMDS_TRANSMITTER_BYPASS_PLLA_COHERENT = 0 -TMDS_TRANSMITTER_BYPASS_PLLA_INCOHERENT = 1 -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB' -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB__enumvalues = { - 0: 'TMDS_TRANSMITTER_BYPASS_PLLB_COHERENT', - 1: 'TMDS_TRANSMITTER_BYPASS_PLLB_INCOHERENT', -} -TMDS_TRANSMITTER_BYPASS_PLLB_COHERENT = 0 -TMDS_TRANSMITTER_BYPASS_PLLB_INCOHERENT = 1 -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_REG_TEST_OUTPUTA_CNTLA' -TMDS_REG_TEST_OUTPUTA_CNTLA__enumvalues = { - 0: 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA0', - 1: 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA1', - 2: 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA2', - 3: 'TMDS_REG_TEST_OUTPUTA_CNTLA_NA', -} -TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA0 = 0 -TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA1 = 1 -TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA2 = 2 -TMDS_REG_TEST_OUTPUTA_CNTLA_NA = 3 -TMDS_REG_TEST_OUTPUTA_CNTLA = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_REG_TEST_OUTPUTB_CNTLB' -TMDS_REG_TEST_OUTPUTB_CNTLB__enumvalues = { - 0: 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB0', - 1: 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB1', - 2: 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB2', - 3: 'TMDS_REG_TEST_OUTPUTB_CNTLB_NA', -} -TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB0 = 0 -TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB1 = 1 -TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB2 = 2 -TMDS_REG_TEST_OUTPUTB_CNTLB_NA = 3 -TMDS_REG_TEST_OUTPUTB_CNTLB = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_ENABLE' -DCP_GRPH_ENABLE__enumvalues = { - 0: 'DCP_GRPH_ENABLE_FALSE', - 1: 'DCP_GRPH_ENABLE_TRUE', -} -DCP_GRPH_ENABLE_FALSE = 0 -DCP_GRPH_ENABLE_TRUE = 1 -DCP_GRPH_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_KEYER_ALPHA_SEL' -DCP_GRPH_KEYER_ALPHA_SEL__enumvalues = { - 0: 'DCP_GRPH_KEYER_ALPHA_SEL_FALSE', - 1: 'DCP_GRPH_KEYER_ALPHA_SEL_TRUE', -} -DCP_GRPH_KEYER_ALPHA_SEL_FALSE = 0 -DCP_GRPH_KEYER_ALPHA_SEL_TRUE = 1 -DCP_GRPH_KEYER_ALPHA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_DEPTH' -DCP_GRPH_DEPTH__enumvalues = { - 0: 'DCP_GRPH_DEPTH_8BPP', - 1: 'DCP_GRPH_DEPTH_16BPP', - 2: 'DCP_GRPH_DEPTH_32BPP', - 3: 'DCP_GRPH_DEPTH_64BPP', -} -DCP_GRPH_DEPTH_8BPP = 0 -DCP_GRPH_DEPTH_16BPP = 1 -DCP_GRPH_DEPTH_32BPP = 2 -DCP_GRPH_DEPTH_64BPP = 3 -DCP_GRPH_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_NUM_BANKS' -DCP_GRPH_NUM_BANKS__enumvalues = { - 0: 'DCP_GRPH_NUM_BANKS_1BANK', - 1: 'DCP_GRPH_NUM_BANKS_2BANK', - 2: 'DCP_GRPH_NUM_BANKS_4BANK', - 3: 'DCP_GRPH_NUM_BANKS_8BANK', - 4: 'DCP_GRPH_NUM_BANKS_16BANK', -} -DCP_GRPH_NUM_BANKS_1BANK = 0 -DCP_GRPH_NUM_BANKS_2BANK = 1 -DCP_GRPH_NUM_BANKS_4BANK = 2 -DCP_GRPH_NUM_BANKS_8BANK = 3 -DCP_GRPH_NUM_BANKS_16BANK = 4 -DCP_GRPH_NUM_BANKS = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_NUM_PIPES' -DCP_GRPH_NUM_PIPES__enumvalues = { - 0: 'DCP_GRPH_NUM_PIPES_1PIPE', - 1: 'DCP_GRPH_NUM_PIPES_2PIPE', - 2: 'DCP_GRPH_NUM_PIPES_4PIPE', - 3: 'DCP_GRPH_NUM_PIPES_8PIPE', -} -DCP_GRPH_NUM_PIPES_1PIPE = 0 -DCP_GRPH_NUM_PIPES_2PIPE = 1 -DCP_GRPH_NUM_PIPES_4PIPE = 2 -DCP_GRPH_NUM_PIPES_8PIPE = 3 -DCP_GRPH_NUM_PIPES = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_FORMAT' -DCP_GRPH_FORMAT__enumvalues = { - 0: 'DCP_GRPH_FORMAT_8BPP', - 1: 'DCP_GRPH_FORMAT_16BPP', - 2: 'DCP_GRPH_FORMAT_32BPP', - 3: 'DCP_GRPH_FORMAT_64BPP', -} -DCP_GRPH_FORMAT_8BPP = 0 -DCP_GRPH_FORMAT_16BPP = 1 -DCP_GRPH_FORMAT_32BPP = 2 -DCP_GRPH_FORMAT_64BPP = 3 -DCP_GRPH_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_ADDRESS_TRANSLATION_ENABLE' -DCP_GRPH_ADDRESS_TRANSLATION_ENABLE__enumvalues = { - 0: 'DCP_GRPH_ADDRESS_TRANSLATION_ENABLE_FALSE', - 1: 'DCP_GRPH_ADDRESS_TRANSLATION_ENABLE_TRUE', -} -DCP_GRPH_ADDRESS_TRANSLATION_ENABLE_FALSE = 0 -DCP_GRPH_ADDRESS_TRANSLATION_ENABLE_TRUE = 1 -DCP_GRPH_ADDRESS_TRANSLATION_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_SW_MODE' -DCP_GRPH_SW_MODE__enumvalues = { - 0: 'DCP_GRPH_SW_MODE_0', - 2: 'DCP_GRPH_SW_MODE_2', - 3: 'DCP_GRPH_SW_MODE_3', - 22: 'DCP_GRPH_SW_MODE_22', - 23: 'DCP_GRPH_SW_MODE_23', - 26: 'DCP_GRPH_SW_MODE_26', - 27: 'DCP_GRPH_SW_MODE_27', - 30: 'DCP_GRPH_SW_MODE_30', - 31: 'DCP_GRPH_SW_MODE_31', -} -DCP_GRPH_SW_MODE_0 = 0 -DCP_GRPH_SW_MODE_2 = 2 -DCP_GRPH_SW_MODE_3 = 3 -DCP_GRPH_SW_MODE_22 = 22 -DCP_GRPH_SW_MODE_23 = 23 -DCP_GRPH_SW_MODE_26 = 26 -DCP_GRPH_SW_MODE_27 = 27 -DCP_GRPH_SW_MODE_30 = 30 -DCP_GRPH_SW_MODE_31 = 31 -DCP_GRPH_SW_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_COLOR_EXPANSION_MODE' -DCP_GRPH_COLOR_EXPANSION_MODE__enumvalues = { - 0: 'DCP_GRPH_COLOR_EXPANSION_MODE_DEXP', - 1: 'DCP_GRPH_COLOR_EXPANSION_MODE_ZEXP', -} -DCP_GRPH_COLOR_EXPANSION_MODE_DEXP = 0 -DCP_GRPH_COLOR_EXPANSION_MODE_ZEXP = 1 -DCP_GRPH_COLOR_EXPANSION_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_LUT_10BIT_BYPASS_EN' -DCP_GRPH_LUT_10BIT_BYPASS_EN__enumvalues = { - 0: 'DCP_GRPH_LUT_10BIT_BYPASS_EN_FALSE', - 1: 'DCP_GRPH_LUT_10BIT_BYPASS_EN_TRUE', -} -DCP_GRPH_LUT_10BIT_BYPASS_EN_FALSE = 0 -DCP_GRPH_LUT_10BIT_BYPASS_EN_TRUE = 1 -DCP_GRPH_LUT_10BIT_BYPASS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_LUT_10BIT_BYPASS_DBL_BUF_EN' -DCP_GRPH_LUT_10BIT_BYPASS_DBL_BUF_EN__enumvalues = { - 0: 'DCP_GRPH_LUT_10BIT_BYPASS_DBL_BUF_EN_FALSE', - 1: 'DCP_GRPH_LUT_10BIT_BYPASS_DBL_BUF_EN_TRUE', -} -DCP_GRPH_LUT_10BIT_BYPASS_DBL_BUF_EN_FALSE = 0 -DCP_GRPH_LUT_10BIT_BYPASS_DBL_BUF_EN_TRUE = 1 -DCP_GRPH_LUT_10BIT_BYPASS_DBL_BUF_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_ENDIAN_SWAP' -DCP_GRPH_ENDIAN_SWAP__enumvalues = { - 0: 'DCP_GRPH_ENDIAN_SWAP_NONE', - 1: 'DCP_GRPH_ENDIAN_SWAP_8IN16', - 2: 'DCP_GRPH_ENDIAN_SWAP_8IN32', - 3: 'DCP_GRPH_ENDIAN_SWAP_8IN64', -} -DCP_GRPH_ENDIAN_SWAP_NONE = 0 -DCP_GRPH_ENDIAN_SWAP_8IN16 = 1 -DCP_GRPH_ENDIAN_SWAP_8IN32 = 2 -DCP_GRPH_ENDIAN_SWAP_8IN64 = 3 -DCP_GRPH_ENDIAN_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_RED_CROSSBAR' -DCP_GRPH_RED_CROSSBAR__enumvalues = { - 0: 'DCP_GRPH_RED_CROSSBAR_FROM_R', - 1: 'DCP_GRPH_RED_CROSSBAR_FROM_G', - 2: 'DCP_GRPH_RED_CROSSBAR_FROM_B', - 3: 'DCP_GRPH_RED_CROSSBAR_FROM_A', -} -DCP_GRPH_RED_CROSSBAR_FROM_R = 0 -DCP_GRPH_RED_CROSSBAR_FROM_G = 1 -DCP_GRPH_RED_CROSSBAR_FROM_B = 2 -DCP_GRPH_RED_CROSSBAR_FROM_A = 3 -DCP_GRPH_RED_CROSSBAR = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_GREEN_CROSSBAR' -DCP_GRPH_GREEN_CROSSBAR__enumvalues = { - 0: 'DCP_GRPH_GREEN_CROSSBAR_FROM_G', - 1: 'DCP_GRPH_GREEN_CROSSBAR_FROM_B', - 2: 'DCP_GRPH_GREEN_CROSSBAR_FROM_A', - 3: 'DCP_GRPH_GREEN_CROSSBAR_FROM_R', -} -DCP_GRPH_GREEN_CROSSBAR_FROM_G = 0 -DCP_GRPH_GREEN_CROSSBAR_FROM_B = 1 -DCP_GRPH_GREEN_CROSSBAR_FROM_A = 2 -DCP_GRPH_GREEN_CROSSBAR_FROM_R = 3 -DCP_GRPH_GREEN_CROSSBAR = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_BLUE_CROSSBAR' -DCP_GRPH_BLUE_CROSSBAR__enumvalues = { - 0: 'DCP_GRPH_BLUE_CROSSBAR_FROM_B', - 1: 'DCP_GRPH_BLUE_CROSSBAR_FROM_A', - 2: 'DCP_GRPH_BLUE_CROSSBAR_FROM_R', - 3: 'DCP_GRPH_BLUE_CROSSBAR_FROM_G', -} -DCP_GRPH_BLUE_CROSSBAR_FROM_B = 0 -DCP_GRPH_BLUE_CROSSBAR_FROM_A = 1 -DCP_GRPH_BLUE_CROSSBAR_FROM_R = 2 -DCP_GRPH_BLUE_CROSSBAR_FROM_G = 3 -DCP_GRPH_BLUE_CROSSBAR = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_ALPHA_CROSSBAR' -DCP_GRPH_ALPHA_CROSSBAR__enumvalues = { - 0: 'DCP_GRPH_ALPHA_CROSSBAR_FROM_A', - 1: 'DCP_GRPH_ALPHA_CROSSBAR_FROM_R', - 2: 'DCP_GRPH_ALPHA_CROSSBAR_FROM_G', - 3: 'DCP_GRPH_ALPHA_CROSSBAR_FROM_B', -} -DCP_GRPH_ALPHA_CROSSBAR_FROM_A = 0 -DCP_GRPH_ALPHA_CROSSBAR_FROM_R = 1 -DCP_GRPH_ALPHA_CROSSBAR_FROM_G = 2 -DCP_GRPH_ALPHA_CROSSBAR_FROM_B = 3 -DCP_GRPH_ALPHA_CROSSBAR = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_PRIMARY_DFQ_ENABLE' -DCP_GRPH_PRIMARY_DFQ_ENABLE__enumvalues = { - 0: 'DCP_GRPH_PRIMARY_DFQ_ENABLE_FALSE', - 1: 'DCP_GRPH_PRIMARY_DFQ_ENABLE_TRUE', -} -DCP_GRPH_PRIMARY_DFQ_ENABLE_FALSE = 0 -DCP_GRPH_PRIMARY_DFQ_ENABLE_TRUE = 1 -DCP_GRPH_PRIMARY_DFQ_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_SECONDARY_DFQ_ENABLE' -DCP_GRPH_SECONDARY_DFQ_ENABLE__enumvalues = { - 0: 'DCP_GRPH_SECONDARY_DFQ_ENABLE_FALSE', - 1: 'DCP_GRPH_SECONDARY_DFQ_ENABLE_TRUE', -} -DCP_GRPH_SECONDARY_DFQ_ENABLE_FALSE = 0 -DCP_GRPH_SECONDARY_DFQ_ENABLE_TRUE = 1 -DCP_GRPH_SECONDARY_DFQ_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_INPUT_GAMMA_MODE' -DCP_GRPH_INPUT_GAMMA_MODE__enumvalues = { - 0: 'DCP_GRPH_INPUT_GAMMA_MODE_LUT', - 1: 'DCP_GRPH_INPUT_GAMMA_MODE_BYPASS', -} -DCP_GRPH_INPUT_GAMMA_MODE_LUT = 0 -DCP_GRPH_INPUT_GAMMA_MODE_BYPASS = 1 -DCP_GRPH_INPUT_GAMMA_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_MODE_UPDATE_PENDING' -DCP_GRPH_MODE_UPDATE_PENDING__enumvalues = { - 0: 'DCP_GRPH_MODE_UPDATE_PENDING_FALSE', - 1: 'DCP_GRPH_MODE_UPDATE_PENDING_TRUE', -} -DCP_GRPH_MODE_UPDATE_PENDING_FALSE = 0 -DCP_GRPH_MODE_UPDATE_PENDING_TRUE = 1 -DCP_GRPH_MODE_UPDATE_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_MODE_UPDATE_TAKEN' -DCP_GRPH_MODE_UPDATE_TAKEN__enumvalues = { - 0: 'DCP_GRPH_MODE_UPDATE_TAKEN_FALSE', - 1: 'DCP_GRPH_MODE_UPDATE_TAKEN_TRUE', -} -DCP_GRPH_MODE_UPDATE_TAKEN_FALSE = 0 -DCP_GRPH_MODE_UPDATE_TAKEN_TRUE = 1 -DCP_GRPH_MODE_UPDATE_TAKEN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_SURFACE_UPDATE_PENDING' -DCP_GRPH_SURFACE_UPDATE_PENDING__enumvalues = { - 0: 'DCP_GRPH_SURFACE_UPDATE_PENDING_FALSE', - 1: 'DCP_GRPH_SURFACE_UPDATE_PENDING_TRUE', -} -DCP_GRPH_SURFACE_UPDATE_PENDING_FALSE = 0 -DCP_GRPH_SURFACE_UPDATE_PENDING_TRUE = 1 -DCP_GRPH_SURFACE_UPDATE_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_SURFACE_UPDATE_TAKEN' -DCP_GRPH_SURFACE_UPDATE_TAKEN__enumvalues = { - 0: 'DCP_GRPH_SURFACE_UPDATE_TAKEN_FALSE', - 1: 'DCP_GRPH_SURFACE_UPDATE_TAKEN_TRUE', -} -DCP_GRPH_SURFACE_UPDATE_TAKEN_FALSE = 0 -DCP_GRPH_SURFACE_UPDATE_TAKEN_TRUE = 1 -DCP_GRPH_SURFACE_UPDATE_TAKEN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_SURFACE_XDMA_PENDING_ENABLE' -DCP_GRPH_SURFACE_XDMA_PENDING_ENABLE__enumvalues = { - 0: 'DCP_GRPH_SURFACE_XDMA_PENDING_ENABLE_FALSE', - 1: 'DCP_GRPH_SURFACE_XDMA_PENDING_ENABLE_TRUE', -} -DCP_GRPH_SURFACE_XDMA_PENDING_ENABLE_FALSE = 0 -DCP_GRPH_SURFACE_XDMA_PENDING_ENABLE_TRUE = 1 -DCP_GRPH_SURFACE_XDMA_PENDING_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_UPDATE_LOCK' -DCP_GRPH_UPDATE_LOCK__enumvalues = { - 0: 'DCP_GRPH_UPDATE_LOCK_FALSE', - 1: 'DCP_GRPH_UPDATE_LOCK_TRUE', -} -DCP_GRPH_UPDATE_LOCK_FALSE = 0 -DCP_GRPH_UPDATE_LOCK_TRUE = 1 -DCP_GRPH_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_SURFACE_IGNORE_UPDATE_LOCK' -DCP_GRPH_SURFACE_IGNORE_UPDATE_LOCK__enumvalues = { - 0: 'DCP_GRPH_SURFACE_IGNORE_UPDATE_LOCK_FALSE', - 1: 'DCP_GRPH_SURFACE_IGNORE_UPDATE_LOCK_TRUE', -} -DCP_GRPH_SURFACE_IGNORE_UPDATE_LOCK_FALSE = 0 -DCP_GRPH_SURFACE_IGNORE_UPDATE_LOCK_TRUE = 1 -DCP_GRPH_SURFACE_IGNORE_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE' -DCP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE__enumvalues = { - 0: 'DCP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE_FALSE', - 1: 'DCP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE_TRUE', -} -DCP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE_FALSE = 0 -DCP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE_TRUE = 1 -DCP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE' -DCP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE__enumvalues = { - 0: 'DCP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE_FALSE', - 1: 'DCP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE_TRUE', -} -DCP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE_FALSE = 0 -DCP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE_TRUE = 1 -DCP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_SURFACE_UPDATE_H_RETRACE_EN' -DCP_GRPH_SURFACE_UPDATE_H_RETRACE_EN__enumvalues = { - 0: 'DCP_GRPH_SURFACE_UPDATE_H_RETRACE_EN_FALSE', - 1: 'DCP_GRPH_SURFACE_UPDATE_H_RETRACE_EN_TRUE', -} -DCP_GRPH_SURFACE_UPDATE_H_RETRACE_EN_FALSE = 0 -DCP_GRPH_SURFACE_UPDATE_H_RETRACE_EN_TRUE = 1 -DCP_GRPH_SURFACE_UPDATE_H_RETRACE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_XDMA_SUPER_AA_EN' -DCP_GRPH_XDMA_SUPER_AA_EN__enumvalues = { - 0: 'DCP_GRPH_XDMA_SUPER_AA_EN_FALSE', - 1: 'DCP_GRPH_XDMA_SUPER_AA_EN_TRUE', -} -DCP_GRPH_XDMA_SUPER_AA_EN_FALSE = 0 -DCP_GRPH_XDMA_SUPER_AA_EN_TRUE = 1 -DCP_GRPH_XDMA_SUPER_AA_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_DFQ_RESET' -DCP_GRPH_DFQ_RESET__enumvalues = { - 0: 'DCP_GRPH_DFQ_RESET_FALSE', - 1: 'DCP_GRPH_DFQ_RESET_TRUE', -} -DCP_GRPH_DFQ_RESET_FALSE = 0 -DCP_GRPH_DFQ_RESET_TRUE = 1 -DCP_GRPH_DFQ_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_DFQ_SIZE' -DCP_GRPH_DFQ_SIZE__enumvalues = { - 0: 'DCP_GRPH_DFQ_SIZE_DEEP1', - 1: 'DCP_GRPH_DFQ_SIZE_DEEP2', - 2: 'DCP_GRPH_DFQ_SIZE_DEEP3', - 3: 'DCP_GRPH_DFQ_SIZE_DEEP4', - 4: 'DCP_GRPH_DFQ_SIZE_DEEP5', - 5: 'DCP_GRPH_DFQ_SIZE_DEEP6', - 6: 'DCP_GRPH_DFQ_SIZE_DEEP7', - 7: 'DCP_GRPH_DFQ_SIZE_DEEP8', -} -DCP_GRPH_DFQ_SIZE_DEEP1 = 0 -DCP_GRPH_DFQ_SIZE_DEEP2 = 1 -DCP_GRPH_DFQ_SIZE_DEEP3 = 2 -DCP_GRPH_DFQ_SIZE_DEEP4 = 3 -DCP_GRPH_DFQ_SIZE_DEEP5 = 4 -DCP_GRPH_DFQ_SIZE_DEEP6 = 5 -DCP_GRPH_DFQ_SIZE_DEEP7 = 6 -DCP_GRPH_DFQ_SIZE_DEEP8 = 7 -DCP_GRPH_DFQ_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_DFQ_MIN_FREE_ENTRIES' -DCP_GRPH_DFQ_MIN_FREE_ENTRIES__enumvalues = { - 0: 'DCP_GRPH_DFQ_MIN_FREE_ENTRIES_1', - 1: 'DCP_GRPH_DFQ_MIN_FREE_ENTRIES_2', - 2: 'DCP_GRPH_DFQ_MIN_FREE_ENTRIES_3', - 3: 'DCP_GRPH_DFQ_MIN_FREE_ENTRIES_4', - 4: 'DCP_GRPH_DFQ_MIN_FREE_ENTRIES_5', - 5: 'DCP_GRPH_DFQ_MIN_FREE_ENTRIES_6', - 6: 'DCP_GRPH_DFQ_MIN_FREE_ENTRIES_7', - 7: 'DCP_GRPH_DFQ_MIN_FREE_ENTRIES_8', -} -DCP_GRPH_DFQ_MIN_FREE_ENTRIES_1 = 0 -DCP_GRPH_DFQ_MIN_FREE_ENTRIES_2 = 1 -DCP_GRPH_DFQ_MIN_FREE_ENTRIES_3 = 2 -DCP_GRPH_DFQ_MIN_FREE_ENTRIES_4 = 3 -DCP_GRPH_DFQ_MIN_FREE_ENTRIES_5 = 4 -DCP_GRPH_DFQ_MIN_FREE_ENTRIES_6 = 5 -DCP_GRPH_DFQ_MIN_FREE_ENTRIES_7 = 6 -DCP_GRPH_DFQ_MIN_FREE_ENTRIES_8 = 7 -DCP_GRPH_DFQ_MIN_FREE_ENTRIES = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_DFQ_RESET_ACK' -DCP_GRPH_DFQ_RESET_ACK__enumvalues = { - 0: 'DCP_GRPH_DFQ_RESET_ACK_FALSE', - 1: 'DCP_GRPH_DFQ_RESET_ACK_TRUE', -} -DCP_GRPH_DFQ_RESET_ACK_FALSE = 0 -DCP_GRPH_DFQ_RESET_ACK_TRUE = 1 -DCP_GRPH_DFQ_RESET_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_PFLIP_INT_CLEAR' -DCP_GRPH_PFLIP_INT_CLEAR__enumvalues = { - 0: 'DCP_GRPH_PFLIP_INT_CLEAR_FALSE', - 1: 'DCP_GRPH_PFLIP_INT_CLEAR_TRUE', -} -DCP_GRPH_PFLIP_INT_CLEAR_FALSE = 0 -DCP_GRPH_PFLIP_INT_CLEAR_TRUE = 1 -DCP_GRPH_PFLIP_INT_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_PFLIP_INT_MASK' -DCP_GRPH_PFLIP_INT_MASK__enumvalues = { - 0: 'DCP_GRPH_PFLIP_INT_MASK_FALSE', - 1: 'DCP_GRPH_PFLIP_INT_MASK_TRUE', -} -DCP_GRPH_PFLIP_INT_MASK_FALSE = 0 -DCP_GRPH_PFLIP_INT_MASK_TRUE = 1 -DCP_GRPH_PFLIP_INT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_PFLIP_INT_TYPE' -DCP_GRPH_PFLIP_INT_TYPE__enumvalues = { - 0: 'DCP_GRPH_PFLIP_INT_TYPE_LEGACY_LEVEL', - 1: 'DCP_GRPH_PFLIP_INT_TYPE_PULSE', -} -DCP_GRPH_PFLIP_INT_TYPE_LEGACY_LEVEL = 0 -DCP_GRPH_PFLIP_INT_TYPE_PULSE = 1 -DCP_GRPH_PFLIP_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_PRESCALE_SELECT' -DCP_GRPH_PRESCALE_SELECT__enumvalues = { - 0: 'DCP_GRPH_PRESCALE_SELECT_FIXED', - 1: 'DCP_GRPH_PRESCALE_SELECT_FLOATING', -} -DCP_GRPH_PRESCALE_SELECT_FIXED = 0 -DCP_GRPH_PRESCALE_SELECT_FLOATING = 1 -DCP_GRPH_PRESCALE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_PRESCALE_R_SIGN' -DCP_GRPH_PRESCALE_R_SIGN__enumvalues = { - 0: 'DCP_GRPH_PRESCALE_R_SIGN_UNSIGNED', - 1: 'DCP_GRPH_PRESCALE_R_SIGN_SIGNED', -} -DCP_GRPH_PRESCALE_R_SIGN_UNSIGNED = 0 -DCP_GRPH_PRESCALE_R_SIGN_SIGNED = 1 -DCP_GRPH_PRESCALE_R_SIGN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_PRESCALE_G_SIGN' -DCP_GRPH_PRESCALE_G_SIGN__enumvalues = { - 0: 'DCP_GRPH_PRESCALE_G_SIGN_UNSIGNED', - 1: 'DCP_GRPH_PRESCALE_G_SIGN_SIGNED', -} -DCP_GRPH_PRESCALE_G_SIGN_UNSIGNED = 0 -DCP_GRPH_PRESCALE_G_SIGN_SIGNED = 1 -DCP_GRPH_PRESCALE_G_SIGN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_PRESCALE_B_SIGN' -DCP_GRPH_PRESCALE_B_SIGN__enumvalues = { - 0: 'DCP_GRPH_PRESCALE_B_SIGN_UNSIGNED', - 1: 'DCP_GRPH_PRESCALE_B_SIGN_SIGNED', -} -DCP_GRPH_PRESCALE_B_SIGN_UNSIGNED = 0 -DCP_GRPH_PRESCALE_B_SIGN_SIGNED = 1 -DCP_GRPH_PRESCALE_B_SIGN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_PRESCALE_BYPASS' -DCP_GRPH_PRESCALE_BYPASS__enumvalues = { - 0: 'DCP_GRPH_PRESCALE_BYPASS_FALSE', - 1: 'DCP_GRPH_PRESCALE_BYPASS_TRUE', -} -DCP_GRPH_PRESCALE_BYPASS_FALSE = 0 -DCP_GRPH_PRESCALE_BYPASS_TRUE = 1 -DCP_GRPH_PRESCALE_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_INPUT_CSC_GRPH_MODE' -DCP_INPUT_CSC_GRPH_MODE__enumvalues = { - 0: 'DCP_INPUT_CSC_GRPH_MODE_BYPASS', - 1: 'DCP_INPUT_CSC_GRPH_MODE_INPUT_CSC_COEF', - 2: 'DCP_INPUT_CSC_GRPH_MODE_SHARED_COEF', - 3: 'DCP_INPUT_CSC_GRPH_MODE_RESERVED', -} -DCP_INPUT_CSC_GRPH_MODE_BYPASS = 0 -DCP_INPUT_CSC_GRPH_MODE_INPUT_CSC_COEF = 1 -DCP_INPUT_CSC_GRPH_MODE_SHARED_COEF = 2 -DCP_INPUT_CSC_GRPH_MODE_RESERVED = 3 -DCP_INPUT_CSC_GRPH_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_OUTPUT_CSC_GRPH_MODE' -DCP_OUTPUT_CSC_GRPH_MODE__enumvalues = { - 0: 'DCP_OUTPUT_CSC_GRPH_MODE_BYPASS', - 1: 'DCP_OUTPUT_CSC_GRPH_MODE_RGB', - 2: 'DCP_OUTPUT_CSC_GRPH_MODE_YCBCR601', - 3: 'DCP_OUTPUT_CSC_GRPH_MODE_YCBCR709', - 4: 'DCP_OUTPUT_CSC_GRPH_MODE_OUTPUT_CSC_COEF', - 5: 'DCP_OUTPUT_CSC_GRPH_MODE_SHARED_COEF', - 6: 'DCP_OUTPUT_CSC_GRPH_MODE_RESERVED0', - 7: 'DCP_OUTPUT_CSC_GRPH_MODE_RESERVED1', -} -DCP_OUTPUT_CSC_GRPH_MODE_BYPASS = 0 -DCP_OUTPUT_CSC_GRPH_MODE_RGB = 1 -DCP_OUTPUT_CSC_GRPH_MODE_YCBCR601 = 2 -DCP_OUTPUT_CSC_GRPH_MODE_YCBCR709 = 3 -DCP_OUTPUT_CSC_GRPH_MODE_OUTPUT_CSC_COEF = 4 -DCP_OUTPUT_CSC_GRPH_MODE_SHARED_COEF = 5 -DCP_OUTPUT_CSC_GRPH_MODE_RESERVED0 = 6 -DCP_OUTPUT_CSC_GRPH_MODE_RESERVED1 = 7 -DCP_OUTPUT_CSC_GRPH_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_DENORM_MODE' -DCP_DENORM_MODE__enumvalues = { - 0: 'DCP_DENORM_MODE_UNITY', - 1: 'DCP_DENORM_MODE_6BIT', - 2: 'DCP_DENORM_MODE_8BIT', - 3: 'DCP_DENORM_MODE_10BIT', - 4: 'DCP_DENORM_MODE_11BIT', - 5: 'DCP_DENORM_MODE_12BIT', - 6: 'DCP_DENORM_MODE_RESERVED0', - 7: 'DCP_DENORM_MODE_RESERVED1', -} -DCP_DENORM_MODE_UNITY = 0 -DCP_DENORM_MODE_6BIT = 1 -DCP_DENORM_MODE_8BIT = 2 -DCP_DENORM_MODE_10BIT = 3 -DCP_DENORM_MODE_11BIT = 4 -DCP_DENORM_MODE_12BIT = 5 -DCP_DENORM_MODE_RESERVED0 = 6 -DCP_DENORM_MODE_RESERVED1 = 7 -DCP_DENORM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_DENORM_14BIT_OUT' -DCP_DENORM_14BIT_OUT__enumvalues = { - 0: 'DCP_DENORM_14BIT_OUT_FALSE', - 1: 'DCP_DENORM_14BIT_OUT_TRUE', -} -DCP_DENORM_14BIT_OUT_FALSE = 0 -DCP_DENORM_14BIT_OUT_TRUE = 1 -DCP_DENORM_14BIT_OUT = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_OUT_ROUND_TRUNC_MODE' -DCP_OUT_ROUND_TRUNC_MODE__enumvalues = { - 0: 'DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_12', - 1: 'DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_11', - 2: 'DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_10', - 3: 'DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_9', - 4: 'DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_8', - 5: 'DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_RESERVED', - 6: 'DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_14', - 7: 'DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_13', - 8: 'DCP_OUT_ROUND_TRUNC_MODE_ROUND_12', - 9: 'DCP_OUT_ROUND_TRUNC_MODE_ROUND_11', - 10: 'DCP_OUT_ROUND_TRUNC_MODE_ROUND_10', - 11: 'DCP_OUT_ROUND_TRUNC_MODE_ROUND_9', - 12: 'DCP_OUT_ROUND_TRUNC_MODE_ROUND_8', - 13: 'DCP_OUT_ROUND_TRUNC_MODE_ROUND_RESERVED', - 14: 'DCP_OUT_ROUND_TRUNC_MODE_ROUND_14', - 15: 'DCP_OUT_ROUND_TRUNC_MODE_ROUND_13', -} -DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_12 = 0 -DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_11 = 1 -DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_10 = 2 -DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_9 = 3 -DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_8 = 4 -DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_RESERVED = 5 -DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_14 = 6 -DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_13 = 7 -DCP_OUT_ROUND_TRUNC_MODE_ROUND_12 = 8 -DCP_OUT_ROUND_TRUNC_MODE_ROUND_11 = 9 -DCP_OUT_ROUND_TRUNC_MODE_ROUND_10 = 10 -DCP_OUT_ROUND_TRUNC_MODE_ROUND_9 = 11 -DCP_OUT_ROUND_TRUNC_MODE_ROUND_8 = 12 -DCP_OUT_ROUND_TRUNC_MODE_ROUND_RESERVED = 13 -DCP_OUT_ROUND_TRUNC_MODE_ROUND_14 = 14 -DCP_OUT_ROUND_TRUNC_MODE_ROUND_13 = 15 -DCP_OUT_ROUND_TRUNC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_KEY_MODE' -DCP_KEY_MODE__enumvalues = { - 0: 'DCP_KEY_MODE_ALPHA0', - 1: 'DCP_KEY_MODE_ALPHA1', - 2: 'DCP_KEY_MODE_IN_RANGE_ALPHA1', - 3: 'DCP_KEY_MODE_IN_RANGE_ALPHA0', -} -DCP_KEY_MODE_ALPHA0 = 0 -DCP_KEY_MODE_ALPHA1 = 1 -DCP_KEY_MODE_IN_RANGE_ALPHA1 = 2 -DCP_KEY_MODE_IN_RANGE_ALPHA0 = 3 -DCP_KEY_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_DEGAMMA_MODE' -DCP_GRPH_DEGAMMA_MODE__enumvalues = { - 0: 'DCP_GRPH_DEGAMMA_MODE_BYPASS', - 1: 'DCP_GRPH_DEGAMMA_MODE_ROMA', - 2: 'DCP_GRPH_DEGAMMA_MODE_ROMB', - 3: 'DCP_GRPH_DEGAMMA_MODE_RESERVED', -} -DCP_GRPH_DEGAMMA_MODE_BYPASS = 0 -DCP_GRPH_DEGAMMA_MODE_ROMA = 1 -DCP_GRPH_DEGAMMA_MODE_ROMB = 2 -DCP_GRPH_DEGAMMA_MODE_RESERVED = 3 -DCP_GRPH_DEGAMMA_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CURSOR_DEGAMMA_MODE' -DCP_CURSOR_DEGAMMA_MODE__enumvalues = { - 0: 'DCP_CURSOR_DEGAMMA_MODE_BYPASS', - 1: 'DCP_CURSOR_DEGAMMA_MODE_ROMA', - 2: 'DCP_CURSOR_DEGAMMA_MODE_ROMB', - 3: 'DCP_CURSOR_DEGAMMA_MODE_RESERVED', -} -DCP_CURSOR_DEGAMMA_MODE_BYPASS = 0 -DCP_CURSOR_DEGAMMA_MODE_ROMA = 1 -DCP_CURSOR_DEGAMMA_MODE_ROMB = 2 -DCP_CURSOR_DEGAMMA_MODE_RESERVED = 3 -DCP_CURSOR_DEGAMMA_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_GAMUT_REMAP_MODE' -DCP_GRPH_GAMUT_REMAP_MODE__enumvalues = { - 0: 'DCP_GRPH_GAMUT_REMAP_MODE_BYPASS', - 1: 'DCP_GRPH_GAMUT_REMAP_MODE_ROMA', - 2: 'DCP_GRPH_GAMUT_REMAP_MODE_ROMB', - 3: 'DCP_GRPH_GAMUT_REMAP_MODE_RESERVED', -} -DCP_GRPH_GAMUT_REMAP_MODE_BYPASS = 0 -DCP_GRPH_GAMUT_REMAP_MODE_ROMA = 1 -DCP_GRPH_GAMUT_REMAP_MODE_ROMB = 2 -DCP_GRPH_GAMUT_REMAP_MODE_RESERVED = 3 -DCP_GRPH_GAMUT_REMAP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_SPATIAL_DITHER_EN' -DCP_SPATIAL_DITHER_EN__enumvalues = { - 0: 'DCP_SPATIAL_DITHER_EN_FALSE', - 1: 'DCP_SPATIAL_DITHER_EN_TRUE', -} -DCP_SPATIAL_DITHER_EN_FALSE = 0 -DCP_SPATIAL_DITHER_EN_TRUE = 1 -DCP_SPATIAL_DITHER_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_SPATIAL_DITHER_MODE' -DCP_SPATIAL_DITHER_MODE__enumvalues = { - 0: 'DCP_SPATIAL_DITHER_MODE_BYPASS', - 1: 'DCP_SPATIAL_DITHER_MODE_ROMA', - 2: 'DCP_SPATIAL_DITHER_MODE_ROMB', - 3: 'DCP_SPATIAL_DITHER_MODE_RESERVED', -} -DCP_SPATIAL_DITHER_MODE_BYPASS = 0 -DCP_SPATIAL_DITHER_MODE_ROMA = 1 -DCP_SPATIAL_DITHER_MODE_ROMB = 2 -DCP_SPATIAL_DITHER_MODE_RESERVED = 3 -DCP_SPATIAL_DITHER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_SPATIAL_DITHER_DEPTH' -DCP_SPATIAL_DITHER_DEPTH__enumvalues = { - 0: 'DCP_SPATIAL_DITHER_DEPTH_30BPP', - 1: 'DCP_SPATIAL_DITHER_DEPTH_24BPP', - 2: 'DCP_SPATIAL_DITHER_DEPTH_36BPP', - 3: 'DCP_SPATIAL_DITHER_DEPTH_UNDEFINED', -} -DCP_SPATIAL_DITHER_DEPTH_30BPP = 0 -DCP_SPATIAL_DITHER_DEPTH_24BPP = 1 -DCP_SPATIAL_DITHER_DEPTH_36BPP = 2 -DCP_SPATIAL_DITHER_DEPTH_UNDEFINED = 3 -DCP_SPATIAL_DITHER_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_FRAME_RANDOM_ENABLE' -DCP_FRAME_RANDOM_ENABLE__enumvalues = { - 0: 'DCP_FRAME_RANDOM_ENABLE_FALSE', - 1: 'DCP_FRAME_RANDOM_ENABLE_TRUE', -} -DCP_FRAME_RANDOM_ENABLE_FALSE = 0 -DCP_FRAME_RANDOM_ENABLE_TRUE = 1 -DCP_FRAME_RANDOM_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_RGB_RANDOM_ENABLE' -DCP_RGB_RANDOM_ENABLE__enumvalues = { - 0: 'DCP_RGB_RANDOM_ENABLE_FALSE', - 1: 'DCP_RGB_RANDOM_ENABLE_TRUE', -} -DCP_RGB_RANDOM_ENABLE_FALSE = 0 -DCP_RGB_RANDOM_ENABLE_TRUE = 1 -DCP_RGB_RANDOM_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_HIGHPASS_RANDOM_ENABLE' -DCP_HIGHPASS_RANDOM_ENABLE__enumvalues = { - 0: 'DCP_HIGHPASS_RANDOM_ENABLE_FALSE', - 1: 'DCP_HIGHPASS_RANDOM_ENABLE_TRUE', -} -DCP_HIGHPASS_RANDOM_ENABLE_FALSE = 0 -DCP_HIGHPASS_RANDOM_ENABLE_TRUE = 1 -DCP_HIGHPASS_RANDOM_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CURSOR_EN' -DCP_CURSOR_EN__enumvalues = { - 0: 'DCP_CURSOR_EN_FALSE', - 1: 'DCP_CURSOR_EN_TRUE', -} -DCP_CURSOR_EN_FALSE = 0 -DCP_CURSOR_EN_TRUE = 1 -DCP_CURSOR_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CUR_INV_TRANS_CLAMP' -DCP_CUR_INV_TRANS_CLAMP__enumvalues = { - 0: 'DCP_CUR_INV_TRANS_CLAMP_FALSE', - 1: 'DCP_CUR_INV_TRANS_CLAMP_TRUE', -} -DCP_CUR_INV_TRANS_CLAMP_FALSE = 0 -DCP_CUR_INV_TRANS_CLAMP_TRUE = 1 -DCP_CUR_INV_TRANS_CLAMP = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CURSOR_MODE' -DCP_CURSOR_MODE__enumvalues = { - 0: 'DCP_CURSOR_MODE_MONO_2BPP', - 1: 'DCP_CURSOR_MODE_24BPP_1BIT', - 2: 'DCP_CURSOR_MODE_24BPP_8BIT_PREMULTI', - 3: 'DCP_CURSOR_MODE_24BPP_8BIT_UNPREMULTI', -} -DCP_CURSOR_MODE_MONO_2BPP = 0 -DCP_CURSOR_MODE_24BPP_1BIT = 1 -DCP_CURSOR_MODE_24BPP_8BIT_PREMULTI = 2 -DCP_CURSOR_MODE_24BPP_8BIT_UNPREMULTI = 3 -DCP_CURSOR_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CURSOR_MAX_OUTSTANDING_GROUP_NUM' -DCP_CURSOR_MAX_OUTSTANDING_GROUP_NUM__enumvalues = { - 0: 'DCP_CURSOR_MAX_OUTSTANDING_GROUP_NUM_ONE', - 1: 'DCP_CURSOR_MAX_OUTSTANDING_GROUP_NUM_TWO', -} -DCP_CURSOR_MAX_OUTSTANDING_GROUP_NUM_ONE = 0 -DCP_CURSOR_MAX_OUTSTANDING_GROUP_NUM_TWO = 1 -DCP_CURSOR_MAX_OUTSTANDING_GROUP_NUM = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CURSOR_2X_MAGNIFY' -DCP_CURSOR_2X_MAGNIFY__enumvalues = { - 0: 'DCP_CURSOR_2X_MAGNIFY_FALSE', - 1: 'DCP_CURSOR_2X_MAGNIFY_TRUE', -} -DCP_CURSOR_2X_MAGNIFY_FALSE = 0 -DCP_CURSOR_2X_MAGNIFY_TRUE = 1 -DCP_CURSOR_2X_MAGNIFY = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CURSOR_FORCE_MC_ON' -DCP_CURSOR_FORCE_MC_ON__enumvalues = { - 0: 'DCP_CURSOR_FORCE_MC_ON_FALSE', - 1: 'DCP_CURSOR_FORCE_MC_ON_TRUE', -} -DCP_CURSOR_FORCE_MC_ON_FALSE = 0 -DCP_CURSOR_FORCE_MC_ON_TRUE = 1 -DCP_CURSOR_FORCE_MC_ON = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CURSOR_URGENT_CONTROL' -DCP_CURSOR_URGENT_CONTROL__enumvalues = { - 0: 'DCP_CURSOR_URGENT_CONTROL_MODE_0', - 1: 'DCP_CURSOR_URGENT_CONTROL_MODE_1', - 2: 'DCP_CURSOR_URGENT_CONTROL_MODE_2', - 3: 'DCP_CURSOR_URGENT_CONTROL_MODE_3', - 4: 'DCP_CURSOR_URGENT_CONTROL_MODE_4', -} -DCP_CURSOR_URGENT_CONTROL_MODE_0 = 0 -DCP_CURSOR_URGENT_CONTROL_MODE_1 = 1 -DCP_CURSOR_URGENT_CONTROL_MODE_2 = 2 -DCP_CURSOR_URGENT_CONTROL_MODE_3 = 3 -DCP_CURSOR_URGENT_CONTROL_MODE_4 = 4 -DCP_CURSOR_URGENT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CURSOR_UPDATE_PENDING' -DCP_CURSOR_UPDATE_PENDING__enumvalues = { - 0: 'DCP_CURSOR_UPDATE_PENDING_FALSE', - 1: 'DCP_CURSOR_UPDATE_PENDING_TRUE', -} -DCP_CURSOR_UPDATE_PENDING_FALSE = 0 -DCP_CURSOR_UPDATE_PENDING_TRUE = 1 -DCP_CURSOR_UPDATE_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CURSOR_UPDATE_TAKEN' -DCP_CURSOR_UPDATE_TAKEN__enumvalues = { - 0: 'DCP_CURSOR_UPDATE_TAKEN_FALSE', - 1: 'DCP_CURSOR_UPDATE_TAKEN_TRUE', -} -DCP_CURSOR_UPDATE_TAKEN_FALSE = 0 -DCP_CURSOR_UPDATE_TAKEN_TRUE = 1 -DCP_CURSOR_UPDATE_TAKEN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CURSOR_UPDATE_LOCK' -DCP_CURSOR_UPDATE_LOCK__enumvalues = { - 0: 'DCP_CURSOR_UPDATE_LOCK_FALSE', - 1: 'DCP_CURSOR_UPDATE_LOCK_TRUE', -} -DCP_CURSOR_UPDATE_LOCK_FALSE = 0 -DCP_CURSOR_UPDATE_LOCK_TRUE = 1 -DCP_CURSOR_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CURSOR_DISABLE_MULTIPLE_UPDATE' -DCP_CURSOR_DISABLE_MULTIPLE_UPDATE__enumvalues = { - 0: 'DCP_CURSOR_DISABLE_MULTIPLE_UPDATE_FALSE', - 1: 'DCP_CURSOR_DISABLE_MULTIPLE_UPDATE_TRUE', -} -DCP_CURSOR_DISABLE_MULTIPLE_UPDATE_FALSE = 0 -DCP_CURSOR_DISABLE_MULTIPLE_UPDATE_TRUE = 1 -DCP_CURSOR_DISABLE_MULTIPLE_UPDATE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CURSOR_UPDATE_STEREO_MODE' -DCP_CURSOR_UPDATE_STEREO_MODE__enumvalues = { - 0: 'DCP_CURSOR_UPDATE_STEREO_MODE_BOTH', - 1: 'DCP_CURSOR_UPDATE_STEREO_MODE_SECONDARY_ONLY', - 2: 'DCP_CURSOR_UPDATE_STEREO_MODE_UNDEFINED', - 3: 'DCP_CURSOR_UPDATE_STEREO_MODE_PRIMARY_ONLY', -} -DCP_CURSOR_UPDATE_STEREO_MODE_BOTH = 0 -DCP_CURSOR_UPDATE_STEREO_MODE_SECONDARY_ONLY = 1 -DCP_CURSOR_UPDATE_STEREO_MODE_UNDEFINED = 2 -DCP_CURSOR_UPDATE_STEREO_MODE_PRIMARY_ONLY = 3 -DCP_CURSOR_UPDATE_STEREO_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CUR2_INV_TRANS_CLAMP' -DCP_CUR2_INV_TRANS_CLAMP__enumvalues = { - 0: 'DCP_CUR2_INV_TRANS_CLAMP_FALSE', - 1: 'DCP_CUR2_INV_TRANS_CLAMP_TRUE', -} -DCP_CUR2_INV_TRANS_CLAMP_FALSE = 0 -DCP_CUR2_INV_TRANS_CLAMP_TRUE = 1 -DCP_CUR2_INV_TRANS_CLAMP = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CUR_REQUEST_FILTER_DIS' -DCP_CUR_REQUEST_FILTER_DIS__enumvalues = { - 0: 'DCP_CUR_REQUEST_FILTER_DIS_FALSE', - 1: 'DCP_CUR_REQUEST_FILTER_DIS_TRUE', -} -DCP_CUR_REQUEST_FILTER_DIS_FALSE = 0 -DCP_CUR_REQUEST_FILTER_DIS_TRUE = 1 -DCP_CUR_REQUEST_FILTER_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CURSOR_STEREO_EN' -DCP_CURSOR_STEREO_EN__enumvalues = { - 0: 'DCP_CURSOR_STEREO_EN_FALSE', - 1: 'DCP_CURSOR_STEREO_EN_TRUE', -} -DCP_CURSOR_STEREO_EN_FALSE = 0 -DCP_CURSOR_STEREO_EN_TRUE = 1 -DCP_CURSOR_STEREO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CURSOR_STEREO_OFFSET_YNX' -DCP_CURSOR_STEREO_OFFSET_YNX__enumvalues = { - 0: 'DCP_CURSOR_STEREO_OFFSET_YNX_X_POSITION', - 1: 'DCP_CURSOR_STEREO_OFFSET_YNX_Y_POSITION', -} -DCP_CURSOR_STEREO_OFFSET_YNX_X_POSITION = 0 -DCP_CURSOR_STEREO_OFFSET_YNX_Y_POSITION = 1 -DCP_CURSOR_STEREO_OFFSET_YNX = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_DC_LUT_RW_MODE' -DCP_DC_LUT_RW_MODE__enumvalues = { - 0: 'DCP_DC_LUT_RW_MODE_256_ENTRY', - 1: 'DCP_DC_LUT_RW_MODE_PWL', -} -DCP_DC_LUT_RW_MODE_256_ENTRY = 0 -DCP_DC_LUT_RW_MODE_PWL = 1 -DCP_DC_LUT_RW_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_DC_LUT_VGA_ACCESS_ENABLE' -DCP_DC_LUT_VGA_ACCESS_ENABLE__enumvalues = { - 0: 'DCP_DC_LUT_VGA_ACCESS_ENABLE_FALSE', - 1: 'DCP_DC_LUT_VGA_ACCESS_ENABLE_TRUE', -} -DCP_DC_LUT_VGA_ACCESS_ENABLE_FALSE = 0 -DCP_DC_LUT_VGA_ACCESS_ENABLE_TRUE = 1 -DCP_DC_LUT_VGA_ACCESS_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_DC_LUT_AUTOFILL' -DCP_DC_LUT_AUTOFILL__enumvalues = { - 0: 'DCP_DC_LUT_AUTOFILL_FALSE', - 1: 'DCP_DC_LUT_AUTOFILL_TRUE', -} -DCP_DC_LUT_AUTOFILL_FALSE = 0 -DCP_DC_LUT_AUTOFILL_TRUE = 1 -DCP_DC_LUT_AUTOFILL = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_DC_LUT_AUTOFILL_DONE' -DCP_DC_LUT_AUTOFILL_DONE__enumvalues = { - 0: 'DCP_DC_LUT_AUTOFILL_DONE_FALSE', - 1: 'DCP_DC_LUT_AUTOFILL_DONE_TRUE', -} -DCP_DC_LUT_AUTOFILL_DONE_FALSE = 0 -DCP_DC_LUT_AUTOFILL_DONE_TRUE = 1 -DCP_DC_LUT_AUTOFILL_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_DC_LUT_INC_B' -DCP_DC_LUT_INC_B__enumvalues = { - 0: 'DCP_DC_LUT_INC_B_NA', - 1: 'DCP_DC_LUT_INC_B_2', - 2: 'DCP_DC_LUT_INC_B_4', - 3: 'DCP_DC_LUT_INC_B_8', - 4: 'DCP_DC_LUT_INC_B_16', - 5: 'DCP_DC_LUT_INC_B_32', - 6: 'DCP_DC_LUT_INC_B_64', - 7: 'DCP_DC_LUT_INC_B_128', - 8: 'DCP_DC_LUT_INC_B_256', - 9: 'DCP_DC_LUT_INC_B_512', -} -DCP_DC_LUT_INC_B_NA = 0 -DCP_DC_LUT_INC_B_2 = 1 -DCP_DC_LUT_INC_B_4 = 2 -DCP_DC_LUT_INC_B_8 = 3 -DCP_DC_LUT_INC_B_16 = 4 -DCP_DC_LUT_INC_B_32 = 5 -DCP_DC_LUT_INC_B_64 = 6 -DCP_DC_LUT_INC_B_128 = 7 -DCP_DC_LUT_INC_B_256 = 8 -DCP_DC_LUT_INC_B_512 = 9 -DCP_DC_LUT_INC_B = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_DC_LUT_DATA_B_SIGNED_EN' -DCP_DC_LUT_DATA_B_SIGNED_EN__enumvalues = { - 0: 'DCP_DC_LUT_DATA_B_SIGNED_EN_FALSE', - 1: 'DCP_DC_LUT_DATA_B_SIGNED_EN_TRUE', -} -DCP_DC_LUT_DATA_B_SIGNED_EN_FALSE = 0 -DCP_DC_LUT_DATA_B_SIGNED_EN_TRUE = 1 -DCP_DC_LUT_DATA_B_SIGNED_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_DC_LUT_DATA_B_FLOAT_POINT_EN' -DCP_DC_LUT_DATA_B_FLOAT_POINT_EN__enumvalues = { - 0: 'DCP_DC_LUT_DATA_B_FLOAT_POINT_EN_FALSE', - 1: 'DCP_DC_LUT_DATA_B_FLOAT_POINT_EN_TRUE', -} -DCP_DC_LUT_DATA_B_FLOAT_POINT_EN_FALSE = 0 -DCP_DC_LUT_DATA_B_FLOAT_POINT_EN_TRUE = 1 -DCP_DC_LUT_DATA_B_FLOAT_POINT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_DC_LUT_DATA_B_FORMAT' -DCP_DC_LUT_DATA_B_FORMAT__enumvalues = { - 0: 'DCP_DC_LUT_DATA_B_FORMAT_U0P10', - 1: 'DCP_DC_LUT_DATA_B_FORMAT_S1P10', - 2: 'DCP_DC_LUT_DATA_B_FORMAT_U1P11', - 3: 'DCP_DC_LUT_DATA_B_FORMAT_U0P12', -} -DCP_DC_LUT_DATA_B_FORMAT_U0P10 = 0 -DCP_DC_LUT_DATA_B_FORMAT_S1P10 = 1 -DCP_DC_LUT_DATA_B_FORMAT_U1P11 = 2 -DCP_DC_LUT_DATA_B_FORMAT_U0P12 = 3 -DCP_DC_LUT_DATA_B_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_DC_LUT_INC_G' -DCP_DC_LUT_INC_G__enumvalues = { - 0: 'DCP_DC_LUT_INC_G_NA', - 1: 'DCP_DC_LUT_INC_G_2', - 2: 'DCP_DC_LUT_INC_G_4', - 3: 'DCP_DC_LUT_INC_G_8', - 4: 'DCP_DC_LUT_INC_G_16', - 5: 'DCP_DC_LUT_INC_G_32', - 6: 'DCP_DC_LUT_INC_G_64', - 7: 'DCP_DC_LUT_INC_G_128', - 8: 'DCP_DC_LUT_INC_G_256', - 9: 'DCP_DC_LUT_INC_G_512', -} -DCP_DC_LUT_INC_G_NA = 0 -DCP_DC_LUT_INC_G_2 = 1 -DCP_DC_LUT_INC_G_4 = 2 -DCP_DC_LUT_INC_G_8 = 3 -DCP_DC_LUT_INC_G_16 = 4 -DCP_DC_LUT_INC_G_32 = 5 -DCP_DC_LUT_INC_G_64 = 6 -DCP_DC_LUT_INC_G_128 = 7 -DCP_DC_LUT_INC_G_256 = 8 -DCP_DC_LUT_INC_G_512 = 9 -DCP_DC_LUT_INC_G = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_DC_LUT_DATA_G_SIGNED_EN' -DCP_DC_LUT_DATA_G_SIGNED_EN__enumvalues = { - 0: 'DCP_DC_LUT_DATA_G_SIGNED_EN_FALSE', - 1: 'DCP_DC_LUT_DATA_G_SIGNED_EN_TRUE', -} -DCP_DC_LUT_DATA_G_SIGNED_EN_FALSE = 0 -DCP_DC_LUT_DATA_G_SIGNED_EN_TRUE = 1 -DCP_DC_LUT_DATA_G_SIGNED_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_DC_LUT_DATA_G_FLOAT_POINT_EN' -DCP_DC_LUT_DATA_G_FLOAT_POINT_EN__enumvalues = { - 0: 'DCP_DC_LUT_DATA_G_FLOAT_POINT_EN_FALSE', - 1: 'DCP_DC_LUT_DATA_G_FLOAT_POINT_EN_TRUE', -} -DCP_DC_LUT_DATA_G_FLOAT_POINT_EN_FALSE = 0 -DCP_DC_LUT_DATA_G_FLOAT_POINT_EN_TRUE = 1 -DCP_DC_LUT_DATA_G_FLOAT_POINT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_DC_LUT_DATA_G_FORMAT' -DCP_DC_LUT_DATA_G_FORMAT__enumvalues = { - 0: 'DCP_DC_LUT_DATA_G_FORMAT_U0P10', - 1: 'DCP_DC_LUT_DATA_G_FORMAT_S1P10', - 2: 'DCP_DC_LUT_DATA_G_FORMAT_U1P11', - 3: 'DCP_DC_LUT_DATA_G_FORMAT_U0P12', -} -DCP_DC_LUT_DATA_G_FORMAT_U0P10 = 0 -DCP_DC_LUT_DATA_G_FORMAT_S1P10 = 1 -DCP_DC_LUT_DATA_G_FORMAT_U1P11 = 2 -DCP_DC_LUT_DATA_G_FORMAT_U0P12 = 3 -DCP_DC_LUT_DATA_G_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_DC_LUT_INC_R' -DCP_DC_LUT_INC_R__enumvalues = { - 0: 'DCP_DC_LUT_INC_R_NA', - 1: 'DCP_DC_LUT_INC_R_2', - 2: 'DCP_DC_LUT_INC_R_4', - 3: 'DCP_DC_LUT_INC_R_8', - 4: 'DCP_DC_LUT_INC_R_16', - 5: 'DCP_DC_LUT_INC_R_32', - 6: 'DCP_DC_LUT_INC_R_64', - 7: 'DCP_DC_LUT_INC_R_128', - 8: 'DCP_DC_LUT_INC_R_256', - 9: 'DCP_DC_LUT_INC_R_512', -} -DCP_DC_LUT_INC_R_NA = 0 -DCP_DC_LUT_INC_R_2 = 1 -DCP_DC_LUT_INC_R_4 = 2 -DCP_DC_LUT_INC_R_8 = 3 -DCP_DC_LUT_INC_R_16 = 4 -DCP_DC_LUT_INC_R_32 = 5 -DCP_DC_LUT_INC_R_64 = 6 -DCP_DC_LUT_INC_R_128 = 7 -DCP_DC_LUT_INC_R_256 = 8 -DCP_DC_LUT_INC_R_512 = 9 -DCP_DC_LUT_INC_R = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_DC_LUT_DATA_R_SIGNED_EN' -DCP_DC_LUT_DATA_R_SIGNED_EN__enumvalues = { - 0: 'DCP_DC_LUT_DATA_R_SIGNED_EN_FALSE', - 1: 'DCP_DC_LUT_DATA_R_SIGNED_EN_TRUE', -} -DCP_DC_LUT_DATA_R_SIGNED_EN_FALSE = 0 -DCP_DC_LUT_DATA_R_SIGNED_EN_TRUE = 1 -DCP_DC_LUT_DATA_R_SIGNED_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_DC_LUT_DATA_R_FLOAT_POINT_EN' -DCP_DC_LUT_DATA_R_FLOAT_POINT_EN__enumvalues = { - 0: 'DCP_DC_LUT_DATA_R_FLOAT_POINT_EN_FALSE', - 1: 'DCP_DC_LUT_DATA_R_FLOAT_POINT_EN_TRUE', -} -DCP_DC_LUT_DATA_R_FLOAT_POINT_EN_FALSE = 0 -DCP_DC_LUT_DATA_R_FLOAT_POINT_EN_TRUE = 1 -DCP_DC_LUT_DATA_R_FLOAT_POINT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_DC_LUT_DATA_R_FORMAT' -DCP_DC_LUT_DATA_R_FORMAT__enumvalues = { - 0: 'DCP_DC_LUT_DATA_R_FORMAT_U0P10', - 1: 'DCP_DC_LUT_DATA_R_FORMAT_S1P10', - 2: 'DCP_DC_LUT_DATA_R_FORMAT_U1P11', - 3: 'DCP_DC_LUT_DATA_R_FORMAT_U0P12', -} -DCP_DC_LUT_DATA_R_FORMAT_U0P10 = 0 -DCP_DC_LUT_DATA_R_FORMAT_S1P10 = 1 -DCP_DC_LUT_DATA_R_FORMAT_U1P11 = 2 -DCP_DC_LUT_DATA_R_FORMAT_U0P12 = 3 -DCP_DC_LUT_DATA_R_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CRC_ENABLE' -DCP_CRC_ENABLE__enumvalues = { - 0: 'DCP_CRC_ENABLE_FALSE', - 1: 'DCP_CRC_ENABLE_TRUE', -} -DCP_CRC_ENABLE_FALSE = 0 -DCP_CRC_ENABLE_TRUE = 1 -DCP_CRC_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CRC_SOURCE_SEL' -DCP_CRC_SOURCE_SEL__enumvalues = { - 0: 'DCP_CRC_SOURCE_SEL_OUTPUT_PIX', - 1: 'DCP_CRC_SOURCE_SEL_INPUT_L32', - 2: 'DCP_CRC_SOURCE_SEL_INPUT_H32', - 4: 'DCP_CRC_SOURCE_SEL_OUTPUT_CNTL', -} -DCP_CRC_SOURCE_SEL_OUTPUT_PIX = 0 -DCP_CRC_SOURCE_SEL_INPUT_L32 = 1 -DCP_CRC_SOURCE_SEL_INPUT_H32 = 2 -DCP_CRC_SOURCE_SEL_OUTPUT_CNTL = 4 -DCP_CRC_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CRC_LINE_SEL' -DCP_CRC_LINE_SEL__enumvalues = { - 0: 'DCP_CRC_LINE_SEL_RESERVED', - 1: 'DCP_CRC_LINE_SEL_EVEN', - 2: 'DCP_CRC_LINE_SEL_ODD', - 3: 'DCP_CRC_LINE_SEL_BOTH', -} -DCP_CRC_LINE_SEL_RESERVED = 0 -DCP_CRC_LINE_SEL_EVEN = 1 -DCP_CRC_LINE_SEL_ODD = 2 -DCP_CRC_LINE_SEL_BOTH = 3 -DCP_CRC_LINE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_FLIP_RATE' -DCP_GRPH_FLIP_RATE__enumvalues = { - 0: 'DCP_GRPH_FLIP_RATE_1FRAME', - 1: 'DCP_GRPH_FLIP_RATE_2FRAME', - 2: 'DCP_GRPH_FLIP_RATE_3FRAME', - 3: 'DCP_GRPH_FLIP_RATE_4FRAME', - 4: 'DCP_GRPH_FLIP_RATE_5FRAME', - 5: 'DCP_GRPH_FLIP_RATE_6FRAME', - 6: 'DCP_GRPH_FLIP_RATE_7FRAME', - 7: 'DCP_GRPH_FLIP_RATE_8FRAME', -} -DCP_GRPH_FLIP_RATE_1FRAME = 0 -DCP_GRPH_FLIP_RATE_2FRAME = 1 -DCP_GRPH_FLIP_RATE_3FRAME = 2 -DCP_GRPH_FLIP_RATE_4FRAME = 3 -DCP_GRPH_FLIP_RATE_5FRAME = 4 -DCP_GRPH_FLIP_RATE_6FRAME = 5 -DCP_GRPH_FLIP_RATE_7FRAME = 6 -DCP_GRPH_FLIP_RATE_8FRAME = 7 -DCP_GRPH_FLIP_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_FLIP_RATE_ENABLE' -DCP_GRPH_FLIP_RATE_ENABLE__enumvalues = { - 0: 'DCP_GRPH_FLIP_RATE_ENABLE_FALSE', - 1: 'DCP_GRPH_FLIP_RATE_ENABLE_TRUE', -} -DCP_GRPH_FLIP_RATE_ENABLE_FALSE = 0 -DCP_GRPH_FLIP_RATE_ENABLE_TRUE = 1 -DCP_GRPH_FLIP_RATE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GSL0_EN' -DCP_GSL0_EN__enumvalues = { - 0: 'DCP_GSL0_EN_FALSE', - 1: 'DCP_GSL0_EN_TRUE', -} -DCP_GSL0_EN_FALSE = 0 -DCP_GSL0_EN_TRUE = 1 -DCP_GSL0_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GSL1_EN' -DCP_GSL1_EN__enumvalues = { - 0: 'DCP_GSL1_EN_FALSE', - 1: 'DCP_GSL1_EN_TRUE', -} -DCP_GSL1_EN_FALSE = 0 -DCP_GSL1_EN_TRUE = 1 -DCP_GSL1_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GSL2_EN' -DCP_GSL2_EN__enumvalues = { - 0: 'DCP_GSL2_EN_FALSE', - 1: 'DCP_GSL2_EN_TRUE', -} -DCP_GSL2_EN_FALSE = 0 -DCP_GSL2_EN_TRUE = 1 -DCP_GSL2_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GSL_MASTER_EN' -DCP_GSL_MASTER_EN__enumvalues = { - 0: 'DCP_GSL_MASTER_EN_FALSE', - 1: 'DCP_GSL_MASTER_EN_TRUE', -} -DCP_GSL_MASTER_EN_FALSE = 0 -DCP_GSL_MASTER_EN_TRUE = 1 -DCP_GSL_MASTER_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GSL_XDMA_GROUP' -DCP_GSL_XDMA_GROUP__enumvalues = { - 0: 'DCP_GSL_XDMA_GROUP_VSYNC', - 1: 'DCP_GSL_XDMA_GROUP_HSYNC0', - 2: 'DCP_GSL_XDMA_GROUP_HSYNC1', - 3: 'DCP_GSL_XDMA_GROUP_HSYNC2', -} -DCP_GSL_XDMA_GROUP_VSYNC = 0 -DCP_GSL_XDMA_GROUP_HSYNC0 = 1 -DCP_GSL_XDMA_GROUP_HSYNC1 = 2 -DCP_GSL_XDMA_GROUP_HSYNC2 = 3 -DCP_GSL_XDMA_GROUP = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GSL_XDMA_GROUP_UNDERFLOW_EN' -DCP_GSL_XDMA_GROUP_UNDERFLOW_EN__enumvalues = { - 0: 'DCP_GSL_XDMA_GROUP_UNDERFLOW_EN_FALSE', - 1: 'DCP_GSL_XDMA_GROUP_UNDERFLOW_EN_TRUE', -} -DCP_GSL_XDMA_GROUP_UNDERFLOW_EN_FALSE = 0 -DCP_GSL_XDMA_GROUP_UNDERFLOW_EN_TRUE = 1 -DCP_GSL_XDMA_GROUP_UNDERFLOW_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GSL_SYNC_SOURCE' -DCP_GSL_SYNC_SOURCE__enumvalues = { - 0: 'DCP_GSL_SYNC_SOURCE_FLIP', - 1: 'DCP_GSL_SYNC_SOURCE_PHASE0', - 2: 'DCP_GSL_SYNC_SOURCE_RESET', - 3: 'DCP_GSL_SYNC_SOURCE_PHASE1', -} -DCP_GSL_SYNC_SOURCE_FLIP = 0 -DCP_GSL_SYNC_SOURCE_PHASE0 = 1 -DCP_GSL_SYNC_SOURCE_RESET = 2 -DCP_GSL_SYNC_SOURCE_PHASE1 = 3 -DCP_GSL_SYNC_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GSL_USE_CHECKPOINT_WINDOW_IN_VSYNC' -DCP_GSL_USE_CHECKPOINT_WINDOW_IN_VSYNC__enumvalues = { - 0: 'DCP_GSL_USE_CHECKPOINT_WINDOW_IN_VSYNC_DIS', - 1: 'DCP_GSL_USE_CHECKPOINT_WINDOW_IN_VSYNC_EN', -} -DCP_GSL_USE_CHECKPOINT_WINDOW_IN_VSYNC_DIS = 0 -DCP_GSL_USE_CHECKPOINT_WINDOW_IN_VSYNC_EN = 1 -DCP_GSL_USE_CHECKPOINT_WINDOW_IN_VSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GSL_DELAY_SURFACE_UPDATE_PENDING' -DCP_GSL_DELAY_SURFACE_UPDATE_PENDING__enumvalues = { - 0: 'DCP_GSL_DELAY_SURFACE_UPDATE_PENDING_FALSE', - 1: 'DCP_GSL_DELAY_SURFACE_UPDATE_PENDING_TRUE', -} -DCP_GSL_DELAY_SURFACE_UPDATE_PENDING_FALSE = 0 -DCP_GSL_DELAY_SURFACE_UPDATE_PENDING_TRUE = 1 -DCP_GSL_DELAY_SURFACE_UPDATE_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_TEST_DEBUG_WRITE_EN' -DCP_TEST_DEBUG_WRITE_EN__enumvalues = { - 0: 'DCP_TEST_DEBUG_WRITE_EN_FALSE', - 1: 'DCP_TEST_DEBUG_WRITE_EN_TRUE', -} -DCP_TEST_DEBUG_WRITE_EN_FALSE = 0 -DCP_TEST_DEBUG_WRITE_EN_TRUE = 1 -DCP_TEST_DEBUG_WRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_STEREOSYNC_FLIP_EN' -DCP_GRPH_STEREOSYNC_FLIP_EN__enumvalues = { - 0: 'DCP_GRPH_STEREOSYNC_FLIP_EN_FALSE', - 1: 'DCP_GRPH_STEREOSYNC_FLIP_EN_TRUE', -} -DCP_GRPH_STEREOSYNC_FLIP_EN_FALSE = 0 -DCP_GRPH_STEREOSYNC_FLIP_EN_TRUE = 1 -DCP_GRPH_STEREOSYNC_FLIP_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_STEREOSYNC_FLIP_MODE' -DCP_GRPH_STEREOSYNC_FLIP_MODE__enumvalues = { - 0: 'DCP_GRPH_STEREOSYNC_FLIP_MODE_FLIP', - 1: 'DCP_GRPH_STEREOSYNC_FLIP_MODE_PHASE0', - 2: 'DCP_GRPH_STEREOSYNC_FLIP_MODE_RESET', - 3: 'DCP_GRPH_STEREOSYNC_FLIP_MODE_PHASE1', -} -DCP_GRPH_STEREOSYNC_FLIP_MODE_FLIP = 0 -DCP_GRPH_STEREOSYNC_FLIP_MODE_PHASE0 = 1 -DCP_GRPH_STEREOSYNC_FLIP_MODE_RESET = 2 -DCP_GRPH_STEREOSYNC_FLIP_MODE_PHASE1 = 3 -DCP_GRPH_STEREOSYNC_FLIP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_STEREOSYNC_SELECT_DISABLE' -DCP_GRPH_STEREOSYNC_SELECT_DISABLE__enumvalues = { - 0: 'DCP_GRPH_STEREOSYNC_SELECT_DISABLE_FALSE', - 1: 'DCP_GRPH_STEREOSYNC_SELECT_DISABLE_TRUE', -} -DCP_GRPH_STEREOSYNC_SELECT_DISABLE_FALSE = 0 -DCP_GRPH_STEREOSYNC_SELECT_DISABLE_TRUE = 1 -DCP_GRPH_STEREOSYNC_SELECT_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_ROTATION_ANGLE' -DCP_GRPH_ROTATION_ANGLE__enumvalues = { - 0: 'DCP_GRPH_ROTATION_ANGLE_0', - 1: 'DCP_GRPH_ROTATION_ANGLE_90', - 2: 'DCP_GRPH_ROTATION_ANGLE_180', - 3: 'DCP_GRPH_ROTATION_ANGLE_270', -} -DCP_GRPH_ROTATION_ANGLE_0 = 0 -DCP_GRPH_ROTATION_ANGLE_90 = 1 -DCP_GRPH_ROTATION_ANGLE_180 = 2 -DCP_GRPH_ROTATION_ANGLE_270 = 3 -DCP_GRPH_ROTATION_ANGLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_EN' -DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_EN__enumvalues = { - 0: 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_EN_FALSE', - 1: 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_EN_TRUE', -} -DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_EN_FALSE = 0 -DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_EN_TRUE = 1 -DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_MODE' -DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_MODE__enumvalues = { - 0: 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_MODE_RELY_NUM', - 1: 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_MODE_RELY_ENABLE', -} -DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_MODE_RELY_NUM = 0 -DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_MODE_RELY_ENABLE = 1 -DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_REGAMMA_MODE' -DCP_GRPH_REGAMMA_MODE__enumvalues = { - 0: 'DCP_GRPH_REGAMMA_MODE_BYPASS', - 1: 'DCP_GRPH_REGAMMA_MODE_SRGB', - 2: 'DCP_GRPH_REGAMMA_MODE_XVYCC', - 3: 'DCP_GRPH_REGAMMA_MODE_PROGA', - 4: 'DCP_GRPH_REGAMMA_MODE_PROGB', -} -DCP_GRPH_REGAMMA_MODE_BYPASS = 0 -DCP_GRPH_REGAMMA_MODE_SRGB = 1 -DCP_GRPH_REGAMMA_MODE_XVYCC = 2 -DCP_GRPH_REGAMMA_MODE_PROGA = 3 -DCP_GRPH_REGAMMA_MODE_PROGB = 4 -DCP_GRPH_REGAMMA_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_ALPHA_ROUND_TRUNC_MODE' -DCP_ALPHA_ROUND_TRUNC_MODE__enumvalues = { - 0: 'DCP_ALPHA_ROUND_TRUNC_MODE_ROUND', - 1: 'DCP_ALPHA_ROUND_TRUNC_MODE_TRUNC', -} -DCP_ALPHA_ROUND_TRUNC_MODE_ROUND = 0 -DCP_ALPHA_ROUND_TRUNC_MODE_TRUNC = 1 -DCP_ALPHA_ROUND_TRUNC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_CURSOR_ALPHA_BLND_ENA' -DCP_CURSOR_ALPHA_BLND_ENA__enumvalues = { - 0: 'DCP_CURSOR_ALPHA_BLND_ENA_FALSE', - 1: 'DCP_CURSOR_ALPHA_BLND_ENA_TRUE', -} -DCP_CURSOR_ALPHA_BLND_ENA_FALSE = 0 -DCP_CURSOR_ALPHA_BLND_ENA_TRUE = 1 -DCP_CURSOR_ALPHA_BLND_ENA = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_MASK' -DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_MASK__enumvalues = { - 0: 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_MASK_FALSE', - 1: 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_MASK_TRUE', -} -DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_MASK_FALSE = 0 -DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_MASK_TRUE = 1 -DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_ACK' -DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_ACK__enumvalues = { - 0: 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_ACK_FALSE', - 1: 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_ACK_TRUE', -} -DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_ACK_FALSE = 0 -DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_ACK_TRUE = 1 -DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_MASK' -DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_MASK__enumvalues = { - 0: 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_MASK_FALSE', - 1: 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_MASK_TRUE', -} -DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_MASK_FALSE = 0 -DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_MASK_TRUE = 1 -DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_ACK' -DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_ACK__enumvalues = { - 0: 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_ACK_FALSE', - 1: 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_ACK_TRUE', -} -DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_ACK_FALSE = 0 -DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_ACK_TRUE = 1 -DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_SURFACE_COUNTER_EN' -DCP_GRPH_SURFACE_COUNTER_EN__enumvalues = { - 0: 'DCP_GRPH_SURFACE_COUNTER_EN_DISABLE', - 1: 'DCP_GRPH_SURFACE_COUNTER_EN_ENABLE', -} -DCP_GRPH_SURFACE_COUNTER_EN_DISABLE = 0 -DCP_GRPH_SURFACE_COUNTER_EN_ENABLE = 1 -DCP_GRPH_SURFACE_COUNTER_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT' -DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT__enumvalues = { - 0: 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_0', - 1: 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_1', - 2: 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_2', - 3: 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_3', - 4: 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_4', - 5: 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_5', - 6: 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_6', - 7: 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_7', - 8: 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_8', - 9: 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_9', - 10: 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_10', - 11: 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_11', -} -DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_0 = 0 -DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_1 = 1 -DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_2 = 2 -DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_3 = 3 -DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_4 = 4 -DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_5 = 5 -DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_6 = 6 -DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_7 = 7 -DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_8 = 8 -DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_9 = 9 -DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_10 = 10 -DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_11 = 11 -DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_SURFACE_COUNTER_ERR_WRAP_OCCURED' -DCP_GRPH_SURFACE_COUNTER_ERR_WRAP_OCCURED__enumvalues = { - 0: 'DCP_GRPH_SURFACE_COUNTER_ERR_WRAP_OCCURED_NO', - 1: 'DCP_GRPH_SURFACE_COUNTER_ERR_WRAP_OCCURED_YES', -} -DCP_GRPH_SURFACE_COUNTER_ERR_WRAP_OCCURED_NO = 0 -DCP_GRPH_SURFACE_COUNTER_ERR_WRAP_OCCURED_YES = 1 -DCP_GRPH_SURFACE_COUNTER_ERR_WRAP_OCCURED = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_XDMA_FLIP_TYPE_CLEAR' -DCP_GRPH_XDMA_FLIP_TYPE_CLEAR__enumvalues = { - 0: 'DCP_GRPH_XDMA_FLIP_TYPE_CLEAR_DISABLE', - 1: 'DCP_GRPH_XDMA_FLIP_TYPE_CLEAR_ENABLE', -} -DCP_GRPH_XDMA_FLIP_TYPE_CLEAR_DISABLE = 0 -DCP_GRPH_XDMA_FLIP_TYPE_CLEAR_ENABLE = 1 -DCP_GRPH_XDMA_FLIP_TYPE_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_XDMA_DRR_MODE_ENABLE' -DCP_GRPH_XDMA_DRR_MODE_ENABLE__enumvalues = { - 0: 'DCP_GRPH_XDMA_DRR_MODE_ENABLE_DISABLE', - 1: 'DCP_GRPH_XDMA_DRR_MODE_ENABLE_ENABLE', -} -DCP_GRPH_XDMA_DRR_MODE_ENABLE_DISABLE = 0 -DCP_GRPH_XDMA_DRR_MODE_ENABLE_ENABLE = 1 -DCP_GRPH_XDMA_DRR_MODE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_XDMA_MULTIFLIP_ENABLE' -DCP_GRPH_XDMA_MULTIFLIP_ENABLE__enumvalues = { - 0: 'DCP_GRPH_XDMA_MULTIFLIP_ENABLE_DISABLE', - 1: 'DCP_GRPH_XDMA_MULTIFLIP_ENABLE_ENABLE', -} -DCP_GRPH_XDMA_MULTIFLIP_ENABLE_DISABLE = 0 -DCP_GRPH_XDMA_MULTIFLIP_ENABLE_ENABLE = 1 -DCP_GRPH_XDMA_MULTIFLIP_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_XDMA_FLIP_TIMEOUT_MASK' -DCP_GRPH_XDMA_FLIP_TIMEOUT_MASK__enumvalues = { - 0: 'DCP_GRPH_XDMA_FLIP_TIMEOUT_MASK_FALSE', - 1: 'DCP_GRPH_XDMA_FLIP_TIMEOUT_MASK_TRUE', -} -DCP_GRPH_XDMA_FLIP_TIMEOUT_MASK_FALSE = 0 -DCP_GRPH_XDMA_FLIP_TIMEOUT_MASK_TRUE = 1 -DCP_GRPH_XDMA_FLIP_TIMEOUT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCP_GRPH_XDMA_FLIP_TIMEOUT_ACK' -DCP_GRPH_XDMA_FLIP_TIMEOUT_ACK__enumvalues = { - 0: 'DCP_GRPH_XDMA_FLIP_TIMEOUT_ACK_FALSE', - 1: 'DCP_GRPH_XDMA_FLIP_TIMEOUT_ACK_TRUE', -} -DCP_GRPH_XDMA_FLIP_TIMEOUT_ACK_FALSE = 0 -DCP_GRPH_XDMA_FLIP_TIMEOUT_ACK_TRUE = 1 -DCP_GRPH_XDMA_FLIP_TIMEOUT_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CVALUE_SEL' -PERFCOUNTER_CVALUE_SEL__enumvalues = { - 0: 'PERFCOUNTER_CVALUE_SEL_47_0', - 1: 'PERFCOUNTER_CVALUE_SEL_15_0', - 2: 'PERFCOUNTER_CVALUE_SEL_31_16', - 3: 'PERFCOUNTER_CVALUE_SEL_47_32', - 4: 'PERFCOUNTER_CVALUE_SEL_11_0', - 5: 'PERFCOUNTER_CVALUE_SEL_23_12', - 6: 'PERFCOUNTER_CVALUE_SEL_35_24', - 7: 'PERFCOUNTER_CVALUE_SEL_47_36', -} -PERFCOUNTER_CVALUE_SEL_47_0 = 0 -PERFCOUNTER_CVALUE_SEL_15_0 = 1 -PERFCOUNTER_CVALUE_SEL_31_16 = 2 -PERFCOUNTER_CVALUE_SEL_47_32 = 3 -PERFCOUNTER_CVALUE_SEL_11_0 = 4 -PERFCOUNTER_CVALUE_SEL_23_12 = 5 -PERFCOUNTER_CVALUE_SEL_35_24 = 6 -PERFCOUNTER_CVALUE_SEL_47_36 = 7 -PERFCOUNTER_CVALUE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_INC_MODE' -PERFCOUNTER_INC_MODE__enumvalues = { - 0: 'PERFCOUNTER_INC_MODE_MULTI_BIT', - 1: 'PERFCOUNTER_INC_MODE_BOTH_EDGE', - 2: 'PERFCOUNTER_INC_MODE_LSB', - 3: 'PERFCOUNTER_INC_MODE_POS_EDGE', - 4: 'PERFCOUNTER_INC_MODE_NEG_EDGE', -} -PERFCOUNTER_INC_MODE_MULTI_BIT = 0 -PERFCOUNTER_INC_MODE_BOTH_EDGE = 1 -PERFCOUNTER_INC_MODE_LSB = 2 -PERFCOUNTER_INC_MODE_POS_EDGE = 3 -PERFCOUNTER_INC_MODE_NEG_EDGE = 4 -PERFCOUNTER_INC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_HW_CNTL_SEL' -PERFCOUNTER_HW_CNTL_SEL__enumvalues = { - 0: 'PERFCOUNTER_HW_CNTL_SEL_RUNEN', - 1: 'PERFCOUNTER_HW_CNTL_SEL_CNTOFF', -} -PERFCOUNTER_HW_CNTL_SEL_RUNEN = 0 -PERFCOUNTER_HW_CNTL_SEL_CNTOFF = 1 -PERFCOUNTER_HW_CNTL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_RUNEN_MODE' -PERFCOUNTER_RUNEN_MODE__enumvalues = { - 0: 'PERFCOUNTER_RUNEN_MODE_LEVEL', - 1: 'PERFCOUNTER_RUNEN_MODE_EDGE', -} -PERFCOUNTER_RUNEN_MODE_LEVEL = 0 -PERFCOUNTER_RUNEN_MODE_EDGE = 1 -PERFCOUNTER_RUNEN_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNTOFF_START_DIS' -PERFCOUNTER_CNTOFF_START_DIS__enumvalues = { - 0: 'PERFCOUNTER_CNTOFF_START_ENABLE', - 1: 'PERFCOUNTER_CNTOFF_START_DISABLE', -} -PERFCOUNTER_CNTOFF_START_ENABLE = 0 -PERFCOUNTER_CNTOFF_START_DISABLE = 1 -PERFCOUNTER_CNTOFF_START_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_RESTART_EN' -PERFCOUNTER_RESTART_EN__enumvalues = { - 0: 'PERFCOUNTER_RESTART_DISABLE', - 1: 'PERFCOUNTER_RESTART_ENABLE', -} -PERFCOUNTER_RESTART_DISABLE = 0 -PERFCOUNTER_RESTART_ENABLE = 1 -PERFCOUNTER_RESTART_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_INT_EN' -PERFCOUNTER_INT_EN__enumvalues = { - 0: 'PERFCOUNTER_INT_DISABLE', - 1: 'PERFCOUNTER_INT_ENABLE', -} -PERFCOUNTER_INT_DISABLE = 0 -PERFCOUNTER_INT_ENABLE = 1 -PERFCOUNTER_INT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_OFF_MASK' -PERFCOUNTER_OFF_MASK__enumvalues = { - 0: 'PERFCOUNTER_OFF_MASK_DISABLE', - 1: 'PERFCOUNTER_OFF_MASK_ENABLE', -} -PERFCOUNTER_OFF_MASK_DISABLE = 0 -PERFCOUNTER_OFF_MASK_ENABLE = 1 -PERFCOUNTER_OFF_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_ACTIVE' -PERFCOUNTER_ACTIVE__enumvalues = { - 0: 'PERFCOUNTER_IS_IDLE', - 1: 'PERFCOUNTER_IS_ACTIVE', -} -PERFCOUNTER_IS_IDLE = 0 -PERFCOUNTER_IS_ACTIVE = 1 -PERFCOUNTER_ACTIVE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_INT_TYPE' -PERFCOUNTER_INT_TYPE__enumvalues = { - 0: 'PERFCOUNTER_INT_TYPE_LEVEL', - 1: 'PERFCOUNTER_INT_TYPE_PULSE', -} -PERFCOUNTER_INT_TYPE_LEVEL = 0 -PERFCOUNTER_INT_TYPE_PULSE = 1 -PERFCOUNTER_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_COUNTED_VALUE_TYPE' -PERFCOUNTER_COUNTED_VALUE_TYPE__enumvalues = { - 0: 'PERFCOUNTER_COUNTED_VALUE_TYPE_ACC', - 1: 'PERFCOUNTER_COUNTED_VALUE_TYPE_MAX', - 2: 'PERFCOUNTER_COUNTED_VALUE_TYPE_MIN', -} -PERFCOUNTER_COUNTED_VALUE_TYPE_ACC = 0 -PERFCOUNTER_COUNTED_VALUE_TYPE_MAX = 1 -PERFCOUNTER_COUNTED_VALUE_TYPE_MIN = 2 -PERFCOUNTER_COUNTED_VALUE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNTL_SEL' -PERFCOUNTER_CNTL_SEL__enumvalues = { - 0: 'PERFCOUNTER_CNTL_SEL_0', - 1: 'PERFCOUNTER_CNTL_SEL_1', - 2: 'PERFCOUNTER_CNTL_SEL_2', - 3: 'PERFCOUNTER_CNTL_SEL_3', - 4: 'PERFCOUNTER_CNTL_SEL_4', - 5: 'PERFCOUNTER_CNTL_SEL_5', - 6: 'PERFCOUNTER_CNTL_SEL_6', - 7: 'PERFCOUNTER_CNTL_SEL_7', -} -PERFCOUNTER_CNTL_SEL_0 = 0 -PERFCOUNTER_CNTL_SEL_1 = 1 -PERFCOUNTER_CNTL_SEL_2 = 2 -PERFCOUNTER_CNTL_SEL_3 = 3 -PERFCOUNTER_CNTL_SEL_4 = 4 -PERFCOUNTER_CNTL_SEL_5 = 5 -PERFCOUNTER_CNTL_SEL_6 = 6 -PERFCOUNTER_CNTL_SEL_7 = 7 -PERFCOUNTER_CNTL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT0_STATE' -PERFCOUNTER_CNT0_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT0_STATE_RESET', - 1: 'PERFCOUNTER_CNT0_STATE_START', - 2: 'PERFCOUNTER_CNT0_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT0_STATE_HW', -} -PERFCOUNTER_CNT0_STATE_RESET = 0 -PERFCOUNTER_CNT0_STATE_START = 1 -PERFCOUNTER_CNT0_STATE_FREEZE = 2 -PERFCOUNTER_CNT0_STATE_HW = 3 -PERFCOUNTER_CNT0_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL0' -PERFCOUNTER_STATE_SEL0__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL0_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL0_LOCAL', -} -PERFCOUNTER_STATE_SEL0_GLOBAL = 0 -PERFCOUNTER_STATE_SEL0_LOCAL = 1 -PERFCOUNTER_STATE_SEL0 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT1_STATE' -PERFCOUNTER_CNT1_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT1_STATE_RESET', - 1: 'PERFCOUNTER_CNT1_STATE_START', - 2: 'PERFCOUNTER_CNT1_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT1_STATE_HW', -} -PERFCOUNTER_CNT1_STATE_RESET = 0 -PERFCOUNTER_CNT1_STATE_START = 1 -PERFCOUNTER_CNT1_STATE_FREEZE = 2 -PERFCOUNTER_CNT1_STATE_HW = 3 -PERFCOUNTER_CNT1_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL1' -PERFCOUNTER_STATE_SEL1__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL1_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL1_LOCAL', -} -PERFCOUNTER_STATE_SEL1_GLOBAL = 0 -PERFCOUNTER_STATE_SEL1_LOCAL = 1 -PERFCOUNTER_STATE_SEL1 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT2_STATE' -PERFCOUNTER_CNT2_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT2_STATE_RESET', - 1: 'PERFCOUNTER_CNT2_STATE_START', - 2: 'PERFCOUNTER_CNT2_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT2_STATE_HW', -} -PERFCOUNTER_CNT2_STATE_RESET = 0 -PERFCOUNTER_CNT2_STATE_START = 1 -PERFCOUNTER_CNT2_STATE_FREEZE = 2 -PERFCOUNTER_CNT2_STATE_HW = 3 -PERFCOUNTER_CNT2_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL2' -PERFCOUNTER_STATE_SEL2__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL2_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL2_LOCAL', -} -PERFCOUNTER_STATE_SEL2_GLOBAL = 0 -PERFCOUNTER_STATE_SEL2_LOCAL = 1 -PERFCOUNTER_STATE_SEL2 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT3_STATE' -PERFCOUNTER_CNT3_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT3_STATE_RESET', - 1: 'PERFCOUNTER_CNT3_STATE_START', - 2: 'PERFCOUNTER_CNT3_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT3_STATE_HW', -} -PERFCOUNTER_CNT3_STATE_RESET = 0 -PERFCOUNTER_CNT3_STATE_START = 1 -PERFCOUNTER_CNT3_STATE_FREEZE = 2 -PERFCOUNTER_CNT3_STATE_HW = 3 -PERFCOUNTER_CNT3_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL3' -PERFCOUNTER_STATE_SEL3__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL3_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL3_LOCAL', -} -PERFCOUNTER_STATE_SEL3_GLOBAL = 0 -PERFCOUNTER_STATE_SEL3_LOCAL = 1 -PERFCOUNTER_STATE_SEL3 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT4_STATE' -PERFCOUNTER_CNT4_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT4_STATE_RESET', - 1: 'PERFCOUNTER_CNT4_STATE_START', - 2: 'PERFCOUNTER_CNT4_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT4_STATE_HW', -} -PERFCOUNTER_CNT4_STATE_RESET = 0 -PERFCOUNTER_CNT4_STATE_START = 1 -PERFCOUNTER_CNT4_STATE_FREEZE = 2 -PERFCOUNTER_CNT4_STATE_HW = 3 -PERFCOUNTER_CNT4_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL4' -PERFCOUNTER_STATE_SEL4__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL4_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL4_LOCAL', -} -PERFCOUNTER_STATE_SEL4_GLOBAL = 0 -PERFCOUNTER_STATE_SEL4_LOCAL = 1 -PERFCOUNTER_STATE_SEL4 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT5_STATE' -PERFCOUNTER_CNT5_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT5_STATE_RESET', - 1: 'PERFCOUNTER_CNT5_STATE_START', - 2: 'PERFCOUNTER_CNT5_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT5_STATE_HW', -} -PERFCOUNTER_CNT5_STATE_RESET = 0 -PERFCOUNTER_CNT5_STATE_START = 1 -PERFCOUNTER_CNT5_STATE_FREEZE = 2 -PERFCOUNTER_CNT5_STATE_HW = 3 -PERFCOUNTER_CNT5_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL5' -PERFCOUNTER_STATE_SEL5__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL5_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL5_LOCAL', -} -PERFCOUNTER_STATE_SEL5_GLOBAL = 0 -PERFCOUNTER_STATE_SEL5_LOCAL = 1 -PERFCOUNTER_STATE_SEL5 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT6_STATE' -PERFCOUNTER_CNT6_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT6_STATE_RESET', - 1: 'PERFCOUNTER_CNT6_STATE_START', - 2: 'PERFCOUNTER_CNT6_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT6_STATE_HW', -} -PERFCOUNTER_CNT6_STATE_RESET = 0 -PERFCOUNTER_CNT6_STATE_START = 1 -PERFCOUNTER_CNT6_STATE_FREEZE = 2 -PERFCOUNTER_CNT6_STATE_HW = 3 -PERFCOUNTER_CNT6_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL6' -PERFCOUNTER_STATE_SEL6__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL6_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL6_LOCAL', -} -PERFCOUNTER_STATE_SEL6_GLOBAL = 0 -PERFCOUNTER_STATE_SEL6_LOCAL = 1 -PERFCOUNTER_STATE_SEL6 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT7_STATE' -PERFCOUNTER_CNT7_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT7_STATE_RESET', - 1: 'PERFCOUNTER_CNT7_STATE_START', - 2: 'PERFCOUNTER_CNT7_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT7_STATE_HW', -} -PERFCOUNTER_CNT7_STATE_RESET = 0 -PERFCOUNTER_CNT7_STATE_START = 1 -PERFCOUNTER_CNT7_STATE_FREEZE = 2 -PERFCOUNTER_CNT7_STATE_HW = 3 -PERFCOUNTER_CNT7_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL7' -PERFCOUNTER_STATE_SEL7__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL7_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL7_LOCAL', -} -PERFCOUNTER_STATE_SEL7_GLOBAL = 0 -PERFCOUNTER_STATE_SEL7_LOCAL = 1 -PERFCOUNTER_STATE_SEL7 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_STATE' -PERFMON_STATE__enumvalues = { - 0: 'PERFMON_STATE_RESET', - 1: 'PERFMON_STATE_START', - 2: 'PERFMON_STATE_FREEZE', - 3: 'PERFMON_STATE_HW', -} -PERFMON_STATE_RESET = 0 -PERFMON_STATE_START = 1 -PERFMON_STATE_FREEZE = 2 -PERFMON_STATE_HW = 3 -PERFMON_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_CNTOFF_AND_OR' -PERFMON_CNTOFF_AND_OR__enumvalues = { - 0: 'PERFMON_CNTOFF_OR', - 1: 'PERFMON_CNTOFF_AND', -} -PERFMON_CNTOFF_OR = 0 -PERFMON_CNTOFF_AND = 1 -PERFMON_CNTOFF_AND_OR = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_CNTOFF_INT_EN' -PERFMON_CNTOFF_INT_EN__enumvalues = { - 0: 'PERFMON_CNTOFF_INT_DISABLE', - 1: 'PERFMON_CNTOFF_INT_ENABLE', -} -PERFMON_CNTOFF_INT_DISABLE = 0 -PERFMON_CNTOFF_INT_ENABLE = 1 -PERFMON_CNTOFF_INT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_CNTOFF_INT_TYPE' -PERFMON_CNTOFF_INT_TYPE__enumvalues = { - 0: 'PERFMON_CNTOFF_INT_TYPE_LEVEL', - 1: 'PERFMON_CNTOFF_INT_TYPE_PULSE', -} -PERFMON_CNTOFF_INT_TYPE_LEVEL = 0 -PERFMON_CNTOFF_INT_TYPE_PULSE = 1 -PERFMON_CNTOFF_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_C_RAM_TAP_PAIR_IDX' -SCL_C_RAM_TAP_PAIR_IDX__enumvalues = { - 0: 'SCL_C_RAM_TAP_PAIR_ID0', - 1: 'SCL_C_RAM_TAP_PAIR_ID1', - 2: 'SCL_C_RAM_TAP_PAIR_ID2', - 3: 'SCL_C_RAM_TAP_PAIR_ID3', - 4: 'SCL_C_RAM_TAP_PAIR_ID4', -} -SCL_C_RAM_TAP_PAIR_ID0 = 0 -SCL_C_RAM_TAP_PAIR_ID1 = 1 -SCL_C_RAM_TAP_PAIR_ID2 = 2 -SCL_C_RAM_TAP_PAIR_ID3 = 3 -SCL_C_RAM_TAP_PAIR_ID4 = 4 -SCL_C_RAM_TAP_PAIR_IDX = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_C_RAM_PHASE' -SCL_C_RAM_PHASE__enumvalues = { - 0: 'SCL_C_RAM_PHASE_0', - 1: 'SCL_C_RAM_PHASE_1', - 2: 'SCL_C_RAM_PHASE_2', - 3: 'SCL_C_RAM_PHASE_3', - 4: 'SCL_C_RAM_PHASE_4', - 5: 'SCL_C_RAM_PHASE_5', - 6: 'SCL_C_RAM_PHASE_6', - 7: 'SCL_C_RAM_PHASE_7', - 8: 'SCL_C_RAM_PHASE_8', -} -SCL_C_RAM_PHASE_0 = 0 -SCL_C_RAM_PHASE_1 = 1 -SCL_C_RAM_PHASE_2 = 2 -SCL_C_RAM_PHASE_3 = 3 -SCL_C_RAM_PHASE_4 = 4 -SCL_C_RAM_PHASE_5 = 5 -SCL_C_RAM_PHASE_6 = 6 -SCL_C_RAM_PHASE_7 = 7 -SCL_C_RAM_PHASE_8 = 8 -SCL_C_RAM_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_C_RAM_FILTER_TYPE' -SCL_C_RAM_FILTER_TYPE__enumvalues = { - 0: 'SCL_C_RAM_FILTER_TYPE_VERT_LUMA_RGB_LUT', - 1: 'SCL_C_RAM_FILTER_TYPE_VERT_CHROMA_LUT', - 2: 'SCL_C_RAM_FILTER_TYPE_HORI_LUMA_RGB_LUT', - 3: 'SCL_C_RAM_FILTER_TYPE_HORI_CHROMA_LUT', -} -SCL_C_RAM_FILTER_TYPE_VERT_LUMA_RGB_LUT = 0 -SCL_C_RAM_FILTER_TYPE_VERT_CHROMA_LUT = 1 -SCL_C_RAM_FILTER_TYPE_HORI_LUMA_RGB_LUT = 2 -SCL_C_RAM_FILTER_TYPE_HORI_CHROMA_LUT = 3 -SCL_C_RAM_FILTER_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_MODE_SEL' -SCL_MODE_SEL__enumvalues = { - 0: 'SCL_MODE_RGB_BYPASS', - 1: 'SCL_MODE_RGB_SCALING', - 2: 'SCL_MODE_YCBCR_SCALING', - 3: 'SCL_MODE_YCBCR_BYPASS', -} -SCL_MODE_RGB_BYPASS = 0 -SCL_MODE_RGB_SCALING = 1 -SCL_MODE_YCBCR_SCALING = 2 -SCL_MODE_YCBCR_BYPASS = 3 -SCL_MODE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_PSCL_EN' -SCL_PSCL_EN__enumvalues = { - 0: 'SCL_PSCL_DISABLE', - 1: 'SCL_PSCL_ENANBLE', -} -SCL_PSCL_DISABLE = 0 -SCL_PSCL_ENANBLE = 1 -SCL_PSCL_EN = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_V_NUM_OF_TAPS' -SCL_V_NUM_OF_TAPS__enumvalues = { - 0: 'SCL_V_NUM_OF_TAPS_1', - 1: 'SCL_V_NUM_OF_TAPS_2', - 2: 'SCL_V_NUM_OF_TAPS_3', - 3: 'SCL_V_NUM_OF_TAPS_4', - 4: 'SCL_V_NUM_OF_TAPS_5', - 5: 'SCL_V_NUM_OF_TAPS_6', -} -SCL_V_NUM_OF_TAPS_1 = 0 -SCL_V_NUM_OF_TAPS_2 = 1 -SCL_V_NUM_OF_TAPS_3 = 2 -SCL_V_NUM_OF_TAPS_4 = 3 -SCL_V_NUM_OF_TAPS_5 = 4 -SCL_V_NUM_OF_TAPS_6 = 5 -SCL_V_NUM_OF_TAPS = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_H_NUM_OF_TAPS' -SCL_H_NUM_OF_TAPS__enumvalues = { - 0: 'SCL_H_NUM_OF_TAPS_1', - 1: 'SCL_H_NUM_OF_TAPS_2', - 3: 'SCL_H_NUM_OF_TAPS_4', - 5: 'SCL_H_NUM_OF_TAPS_6', - 7: 'SCL_H_NUM_OF_TAPS_8', - 9: 'SCL_H_NUM_OF_TAPS_10', -} -SCL_H_NUM_OF_TAPS_1 = 0 -SCL_H_NUM_OF_TAPS_2 = 1 -SCL_H_NUM_OF_TAPS_4 = 3 -SCL_H_NUM_OF_TAPS_6 = 5 -SCL_H_NUM_OF_TAPS_8 = 7 -SCL_H_NUM_OF_TAPS_10 = 9 -SCL_H_NUM_OF_TAPS = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_BOUNDARY_MODE' -SCL_BOUNDARY_MODE__enumvalues = { - 0: 'SCL_BOUNDARY_MODE_BLACK', - 1: 'SCL_BOUNDARY_MODE_EDGE', -} -SCL_BOUNDARY_MODE_BLACK = 0 -SCL_BOUNDARY_MODE_EDGE = 1 -SCL_BOUNDARY_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_EARLY_EOL_MOD' -SCL_EARLY_EOL_MOD__enumvalues = { - 0: 'SCL_EARLY_EOL_MODE_CRTC', - 1: 'SCL_EARLY_EOL_MODE_INTERNAL', -} -SCL_EARLY_EOL_MODE_CRTC = 0 -SCL_EARLY_EOL_MODE_INTERNAL = 1 -SCL_EARLY_EOL_MOD = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_BYPASS_MODE' -SCL_BYPASS_MODE__enumvalues = { - 0: 'SCL_BYPASS_MODE_MC_MR', - 1: 'SCL_BYPASS_MODE_AC_NR', - 2: 'SCL_BYPASS_MODE_AC_AR', - 3: 'SCL_BYPASS_MODE_RESERVED', -} -SCL_BYPASS_MODE_MC_MR = 0 -SCL_BYPASS_MODE_AC_NR = 1 -SCL_BYPASS_MODE_AC_AR = 2 -SCL_BYPASS_MODE_RESERVED = 3 -SCL_BYPASS_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_V_MANUAL_REPLICATE_FACTOR' -SCL_V_MANUAL_REPLICATE_FACTOR__enumvalues = { - 0: 'SCL_V_MANUAL_REPLICATE_FACTOR_1', - 1: 'SCL_V_MANUAL_REPLICATE_FACTOR_2', - 2: 'SCL_V_MANUAL_REPLICATE_FACTOR_3', - 3: 'SCL_V_MANUAL_REPLICATE_FACTOR_4', - 4: 'SCL_V_MANUAL_REPLICATE_FACTOR_5', - 5: 'SCL_V_MANUAL_REPLICATE_FACTOR_6', - 6: 'SCL_V_MANUAL_REPLICATE_FACTOR_7', - 7: 'SCL_V_MANUAL_REPLICATE_FACTOR_8', - 8: 'SCL_V_MANUAL_REPLICATE_FACTOR_9', - 9: 'SCL_V_MANUAL_REPLICATE_FACTOR_10', - 10: 'SCL_V_MANUAL_REPLICATE_FACTOR_11', - 11: 'SCL_V_MANUAL_REPLICATE_FACTOR_12', - 12: 'SCL_V_MANUAL_REPLICATE_FACTOR_13', - 13: 'SCL_V_MANUAL_REPLICATE_FACTOR_14', - 14: 'SCL_V_MANUAL_REPLICATE_FACTOR_15', - 15: 'SCL_V_MANUAL_REPLICATE_FACTOR_16', -} -SCL_V_MANUAL_REPLICATE_FACTOR_1 = 0 -SCL_V_MANUAL_REPLICATE_FACTOR_2 = 1 -SCL_V_MANUAL_REPLICATE_FACTOR_3 = 2 -SCL_V_MANUAL_REPLICATE_FACTOR_4 = 3 -SCL_V_MANUAL_REPLICATE_FACTOR_5 = 4 -SCL_V_MANUAL_REPLICATE_FACTOR_6 = 5 -SCL_V_MANUAL_REPLICATE_FACTOR_7 = 6 -SCL_V_MANUAL_REPLICATE_FACTOR_8 = 7 -SCL_V_MANUAL_REPLICATE_FACTOR_9 = 8 -SCL_V_MANUAL_REPLICATE_FACTOR_10 = 9 -SCL_V_MANUAL_REPLICATE_FACTOR_11 = 10 -SCL_V_MANUAL_REPLICATE_FACTOR_12 = 11 -SCL_V_MANUAL_REPLICATE_FACTOR_13 = 12 -SCL_V_MANUAL_REPLICATE_FACTOR_14 = 13 -SCL_V_MANUAL_REPLICATE_FACTOR_15 = 14 -SCL_V_MANUAL_REPLICATE_FACTOR_16 = 15 -SCL_V_MANUAL_REPLICATE_FACTOR = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_H_MANUAL_REPLICATE_FACTOR' -SCL_H_MANUAL_REPLICATE_FACTOR__enumvalues = { - 0: 'SCL_H_MANUAL_REPLICATE_FACTOR_1', - 1: 'SCL_H_MANUAL_REPLICATE_FACTOR_2', - 2: 'SCL_H_MANUAL_REPLICATE_FACTOR_3', - 3: 'SCL_H_MANUAL_REPLICATE_FACTOR_4', - 4: 'SCL_H_MANUAL_REPLICATE_FACTOR_5', - 5: 'SCL_H_MANUAL_REPLICATE_FACTOR_6', - 6: 'SCL_H_MANUAL_REPLICATE_FACTOR_7', - 7: 'SCL_H_MANUAL_REPLICATE_FACTOR_8', - 8: 'SCL_H_MANUAL_REPLICATE_FACTOR_9', - 9: 'SCL_H_MANUAL_REPLICATE_FACTOR_10', - 10: 'SCL_H_MANUAL_REPLICATE_FACTOR_11', - 11: 'SCL_H_MANUAL_REPLICATE_FACTOR_12', - 12: 'SCL_H_MANUAL_REPLICATE_FACTOR_13', - 13: 'SCL_H_MANUAL_REPLICATE_FACTOR_14', - 14: 'SCL_H_MANUAL_REPLICATE_FACTOR_15', - 15: 'SCL_H_MANUAL_REPLICATE_FACTOR_16', -} -SCL_H_MANUAL_REPLICATE_FACTOR_1 = 0 -SCL_H_MANUAL_REPLICATE_FACTOR_2 = 1 -SCL_H_MANUAL_REPLICATE_FACTOR_3 = 2 -SCL_H_MANUAL_REPLICATE_FACTOR_4 = 3 -SCL_H_MANUAL_REPLICATE_FACTOR_5 = 4 -SCL_H_MANUAL_REPLICATE_FACTOR_6 = 5 -SCL_H_MANUAL_REPLICATE_FACTOR_7 = 6 -SCL_H_MANUAL_REPLICATE_FACTOR_8 = 7 -SCL_H_MANUAL_REPLICATE_FACTOR_9 = 8 -SCL_H_MANUAL_REPLICATE_FACTOR_10 = 9 -SCL_H_MANUAL_REPLICATE_FACTOR_11 = 10 -SCL_H_MANUAL_REPLICATE_FACTOR_12 = 11 -SCL_H_MANUAL_REPLICATE_FACTOR_13 = 12 -SCL_H_MANUAL_REPLICATE_FACTOR_14 = 13 -SCL_H_MANUAL_REPLICATE_FACTOR_15 = 14 -SCL_H_MANUAL_REPLICATE_FACTOR_16 = 15 -SCL_H_MANUAL_REPLICATE_FACTOR = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_V_CALC_AUTO_RATIO_EN' -SCL_V_CALC_AUTO_RATIO_EN__enumvalues = { - 0: 'SCL_V_CALC_AUTO_RATIO_DISABLE', - 1: 'SCL_V_CALC_AUTO_RATIO_ENABLE', -} -SCL_V_CALC_AUTO_RATIO_DISABLE = 0 -SCL_V_CALC_AUTO_RATIO_ENABLE = 1 -SCL_V_CALC_AUTO_RATIO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_H_CALC_AUTO_RATIO_EN' -SCL_H_CALC_AUTO_RATIO_EN__enumvalues = { - 0: 'SCL_H_CALC_AUTO_RATIO_DISABLE', - 1: 'SCL_H_CALC_AUTO_RATIO_ENABLE', -} -SCL_H_CALC_AUTO_RATIO_DISABLE = 0 -SCL_H_CALC_AUTO_RATIO_ENABLE = 1 -SCL_H_CALC_AUTO_RATIO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_H_FILTER_PICK_NEAREST' -SCL_H_FILTER_PICK_NEAREST__enumvalues = { - 0: 'SCL_H_FILTER_PICK_NEAREST_DISABLE', - 1: 'SCL_H_FILTER_PICK_NEAREST_ENABLE', -} -SCL_H_FILTER_PICK_NEAREST_DISABLE = 0 -SCL_H_FILTER_PICK_NEAREST_ENABLE = 1 -SCL_H_FILTER_PICK_NEAREST = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_H_2TAP_HARDCODE_COEF_EN' -SCL_H_2TAP_HARDCODE_COEF_EN__enumvalues = { - 0: 'SCL_H_2TAP_HARDCODE_COEF_DISABLE', - 1: 'SCL_H_2TAP_HARDCODE_COEF_ENABLE', -} -SCL_H_2TAP_HARDCODE_COEF_DISABLE = 0 -SCL_H_2TAP_HARDCODE_COEF_ENABLE = 1 -SCL_H_2TAP_HARDCODE_COEF_EN = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_V_FILTER_PICK_NEAREST' -SCL_V_FILTER_PICK_NEAREST__enumvalues = { - 0: 'SCL_V_FILTER_PICK_NEAREST_DISABLE', - 1: 'SCL_V_FILTER_PICK_NEAREST_ENABLE', -} -SCL_V_FILTER_PICK_NEAREST_DISABLE = 0 -SCL_V_FILTER_PICK_NEAREST_ENABLE = 1 -SCL_V_FILTER_PICK_NEAREST = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_V_2TAP_HARDCODE_COEF_EN' -SCL_V_2TAP_HARDCODE_COEF_EN__enumvalues = { - 0: 'SCL_V_2TAP_HARDCODE_COEF_DISABLE', - 1: 'SCL_V_2TAP_HARDCODE_COEF_ENABLE', -} -SCL_V_2TAP_HARDCODE_COEF_DISABLE = 0 -SCL_V_2TAP_HARDCODE_COEF_ENABLE = 1 -SCL_V_2TAP_HARDCODE_COEF_EN = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_UPDATE_TAKEN' -SCL_UPDATE_TAKEN__enumvalues = { - 0: 'SCL_UPDATE_TAKEN_NO', - 1: 'SCL_UPDATE_TAKEN_YES', -} -SCL_UPDATE_TAKEN_NO = 0 -SCL_UPDATE_TAKEN_YES = 1 -SCL_UPDATE_TAKEN = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_UPDATE_LOCK' -SCL_UPDATE_LOCK__enumvalues = { - 0: 'SCL_UPDATE_UNLOCKED', - 1: 'SCL_UPDATE_LOCKED', -} -SCL_UPDATE_UNLOCKED = 0 -SCL_UPDATE_LOCKED = 1 -SCL_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_COEF_UPDATE_COMPLETE' -SCL_COEF_UPDATE_COMPLETE__enumvalues = { - 0: 'SCL_COEF_UPDATE_NOT_COMPLETED', - 1: 'SCL_COEF_UPDATE_COMPLETED', -} -SCL_COEF_UPDATE_NOT_COMPLETED = 0 -SCL_COEF_UPDATE_COMPLETED = 1 -SCL_COEF_UPDATE_COMPLETE = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_HF_SHARP_SCALE_FACTOR' -SCL_HF_SHARP_SCALE_FACTOR__enumvalues = { - 0: 'SCL_HF_SHARP_SCALE_FACTOR_0', - 1: 'SCL_HF_SHARP_SCALE_FACTOR_1', - 2: 'SCL_HF_SHARP_SCALE_FACTOR_2', - 3: 'SCL_HF_SHARP_SCALE_FACTOR_3', - 4: 'SCL_HF_SHARP_SCALE_FACTOR_4', - 5: 'SCL_HF_SHARP_SCALE_FACTOR_5', - 6: 'SCL_HF_SHARP_SCALE_FACTOR_6', - 7: 'SCL_HF_SHARP_SCALE_FACTOR_7', -} -SCL_HF_SHARP_SCALE_FACTOR_0 = 0 -SCL_HF_SHARP_SCALE_FACTOR_1 = 1 -SCL_HF_SHARP_SCALE_FACTOR_2 = 2 -SCL_HF_SHARP_SCALE_FACTOR_3 = 3 -SCL_HF_SHARP_SCALE_FACTOR_4 = 4 -SCL_HF_SHARP_SCALE_FACTOR_5 = 5 -SCL_HF_SHARP_SCALE_FACTOR_6 = 6 -SCL_HF_SHARP_SCALE_FACTOR_7 = 7 -SCL_HF_SHARP_SCALE_FACTOR = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_HF_SHARP_EN' -SCL_HF_SHARP_EN__enumvalues = { - 0: 'SCL_HF_SHARP_DISABLE', - 1: 'SCL_HF_SHARP_ENABLE', -} -SCL_HF_SHARP_DISABLE = 0 -SCL_HF_SHARP_ENABLE = 1 -SCL_HF_SHARP_EN = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_VF_SHARP_SCALE_FACTOR' -SCL_VF_SHARP_SCALE_FACTOR__enumvalues = { - 0: 'SCL_VF_SHARP_SCALE_FACTOR_0', - 1: 'SCL_VF_SHARP_SCALE_FACTOR_1', - 2: 'SCL_VF_SHARP_SCALE_FACTOR_2', - 3: 'SCL_VF_SHARP_SCALE_FACTOR_3', - 4: 'SCL_VF_SHARP_SCALE_FACTOR_4', - 5: 'SCL_VF_SHARP_SCALE_FACTOR_5', - 6: 'SCL_VF_SHARP_SCALE_FACTOR_6', - 7: 'SCL_VF_SHARP_SCALE_FACTOR_7', -} -SCL_VF_SHARP_SCALE_FACTOR_0 = 0 -SCL_VF_SHARP_SCALE_FACTOR_1 = 1 -SCL_VF_SHARP_SCALE_FACTOR_2 = 2 -SCL_VF_SHARP_SCALE_FACTOR_3 = 3 -SCL_VF_SHARP_SCALE_FACTOR_4 = 4 -SCL_VF_SHARP_SCALE_FACTOR_5 = 5 -SCL_VF_SHARP_SCALE_FACTOR_6 = 6 -SCL_VF_SHARP_SCALE_FACTOR_7 = 7 -SCL_VF_SHARP_SCALE_FACTOR = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_VF_SHARP_EN' -SCL_VF_SHARP_EN__enumvalues = { - 0: 'SCL_VF_SHARP_DISABLE', - 1: 'SCL_VF_SHARP_ENABLE', -} -SCL_VF_SHARP_DISABLE = 0 -SCL_VF_SHARP_ENABLE = 1 -SCL_VF_SHARP_EN = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_ALU_DISABLE' -SCL_ALU_DISABLE__enumvalues = { - 0: 'SCL_ALU_ENABLED', - 1: 'SCL_ALU_DISABLED', -} -SCL_ALU_ENABLED = 0 -SCL_ALU_DISABLED = 1 -SCL_ALU_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_HOST_CONFLICT_MASK' -SCL_HOST_CONFLICT_MASK__enumvalues = { - 0: 'SCL_HOST_CONFLICT_DISABLE_INTERRUPT', - 1: 'SCL_HOST_CONFLICT_ENABLE_INTERRUPT', -} -SCL_HOST_CONFLICT_DISABLE_INTERRUPT = 0 -SCL_HOST_CONFLICT_ENABLE_INTERRUPT = 1 -SCL_HOST_CONFLICT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_SCL_MODE_CHANGE_MASK' -SCL_SCL_MODE_CHANGE_MASK__enumvalues = { - 0: 'SCL_MODE_CHANGE_DISABLE_INTERRUPT', - 1: 'SCL_MODE_CHANGE_ENABLE_INTERRUPT', -} -SCL_MODE_CHANGE_DISABLE_INTERRUPT = 0 -SCL_MODE_CHANGE_ENABLE_INTERRUPT = 1 -SCL_SCL_MODE_CHANGE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'SCLV_MODE_SEL' -SCLV_MODE_SEL__enumvalues = { - 0: 'SCLV_MODE_RGB_BYPASS', - 1: 'SCLV_MODE_RGB_SCALING', - 2: 'SCLV_MODE_YCBCR_SCALING', - 3: 'SCLV_MODE_YCBCR_BYPASS', -} -SCLV_MODE_RGB_BYPASS = 0 -SCLV_MODE_RGB_SCALING = 1 -SCLV_MODE_YCBCR_SCALING = 2 -SCLV_MODE_YCBCR_BYPASS = 3 -SCLV_MODE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SCLV_INTERLACE_SOURCE' -SCLV_INTERLACE_SOURCE__enumvalues = { - 0: 'INTERLACE_SOURCE_PROGRESSIVE', - 1: 'INTERLACE_SOURCE_INTERLEAVE', - 2: 'INTERLACE_SOURCE_STACK', -} -INTERLACE_SOURCE_PROGRESSIVE = 0 -INTERLACE_SOURCE_INTERLEAVE = 1 -INTERLACE_SOURCE_STACK = 2 -SCLV_INTERLACE_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'SCLV_UPDATE_LOCK' -SCLV_UPDATE_LOCK__enumvalues = { - 0: 'UPDATE_UNLOCKED', - 1: 'UPDATE_LOCKED', -} -UPDATE_UNLOCKED = 0 -UPDATE_LOCKED = 1 -SCLV_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'SCLV_COEF_UPDATE_COMPLETE' -SCLV_COEF_UPDATE_COMPLETE__enumvalues = { - 0: 'COEF_UPDATE_NOT_COMPLETE', - 1: 'COEF_UPDATE_COMPLETE', -} -COEF_UPDATE_NOT_COMPLETE = 0 -COEF_UPDATE_COMPLETE = 1 -SCLV_COEF_UPDATE_COMPLETE = ctypes.c_uint32 # enum - -# values for enumeration 'DPRX_SD_PIXEL_ENCODING' -DPRX_SD_PIXEL_ENCODING__enumvalues = { - 0: 'PIXEL_FORMAT_RGB_444', - 1: 'PIXEL_FORMAT_YCBCR_444', - 2: 'PIXEL_FORMAT_YCBCR_422', - 3: 'PIXEL_FORMAT_Y_ONLY', -} -PIXEL_FORMAT_RGB_444 = 0 -PIXEL_FORMAT_YCBCR_444 = 1 -PIXEL_FORMAT_YCBCR_422 = 2 -PIXEL_FORMAT_Y_ONLY = 3 -DPRX_SD_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'DPRX_SD_COMPONENT_DEPTH' -DPRX_SD_COMPONENT_DEPTH__enumvalues = { - 0: 'COMPONENT_DEPTH_6BPC', - 1: 'COMPONENT_DEPTH_8BPC', - 2: 'COMPONENT_DEPTH_10BPC', - 3: 'COMPONENT_DEPTH_12BPC', - 4: 'COMPONENT_DEPTH_16BPC', -} -COMPONENT_DEPTH_6BPC = 0 -COMPONENT_DEPTH_8BPC = 1 -COMPONENT_DEPTH_10BPC = 2 -COMPONENT_DEPTH_12BPC = 3 -COMPONENT_DEPTH_16BPC = 4 -DPRX_SD_COMPONENT_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_LATENCY_COUNTER_CONTROL' -AZ_LATENCY_COUNTER_CONTROL__enumvalues = { - 0: 'AZ_LATENCY_COUNTER_NO_RESET', - 1: 'AZ_LATENCY_COUNTER_RESET_DONE', -} -AZ_LATENCY_COUNTER_NO_RESET = 0 -AZ_LATENCY_COUNTER_RESET_DONE = 1 -AZ_LATENCY_COUNTER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_CONTROL_BLND_MODE' -BLND_CONTROL_BLND_MODE__enumvalues = { - 0: 'BLND_CONTROL_BLND_MODE_CURRENT_PIPE_ONLY', - 1: 'BLND_CONTROL_BLND_MODE_OTHER_PIPE_ONLY', - 2: 'BLND_CONTROL_BLND_MODE_ALPHA_BLENDING_MODE', - 3: 'BLND_CONTROL_BLND_MODE_OTHER_STEREO_TYPE', -} -BLND_CONTROL_BLND_MODE_CURRENT_PIPE_ONLY = 0 -BLND_CONTROL_BLND_MODE_OTHER_PIPE_ONLY = 1 -BLND_CONTROL_BLND_MODE_ALPHA_BLENDING_MODE = 2 -BLND_CONTROL_BLND_MODE_OTHER_STEREO_TYPE = 3 -BLND_CONTROL_BLND_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_CONTROL_BLND_STEREO_TYPE' -BLND_CONTROL_BLND_STEREO_TYPE__enumvalues = { - 0: 'BLND_CONTROL_BLND_STEREO_TYPE_NON_SINGLE_PIPE_STEREO', - 1: 'BLND_CONTROL_BLND_STEREO_TYPE_SIDE_BY_SIDE_SINGLE_PIPE_STEREO', - 2: 'BLND_CONTROL_BLND_STEREO_TYPE_TOP_BOTTOM_SINGLE_PIPE_STEREO', - 3: 'BLND_CONTROL_BLND_STEREO_TYPE_UNUSED', -} -BLND_CONTROL_BLND_STEREO_TYPE_NON_SINGLE_PIPE_STEREO = 0 -BLND_CONTROL_BLND_STEREO_TYPE_SIDE_BY_SIDE_SINGLE_PIPE_STEREO = 1 -BLND_CONTROL_BLND_STEREO_TYPE_TOP_BOTTOM_SINGLE_PIPE_STEREO = 2 -BLND_CONTROL_BLND_STEREO_TYPE_UNUSED = 3 -BLND_CONTROL_BLND_STEREO_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_CONTROL_BLND_STEREO_POLARITY' -BLND_CONTROL_BLND_STEREO_POLARITY__enumvalues = { - 0: 'BLND_CONTROL_BLND_STEREO_POLARITY_LOW', - 1: 'BLND_CONTROL_BLND_STEREO_POLARITY_HIGH', -} -BLND_CONTROL_BLND_STEREO_POLARITY_LOW = 0 -BLND_CONTROL_BLND_STEREO_POLARITY_HIGH = 1 -BLND_CONTROL_BLND_STEREO_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_CONTROL_BLND_FEEDTHROUGH_EN' -BLND_CONTROL_BLND_FEEDTHROUGH_EN__enumvalues = { - 0: 'BLND_CONTROL_BLND_FEEDTHROUGH_EN_FALSE', - 1: 'BLND_CONTROL_BLND_FEEDTHROUGH_EN_TRUE', -} -BLND_CONTROL_BLND_FEEDTHROUGH_EN_FALSE = 0 -BLND_CONTROL_BLND_FEEDTHROUGH_EN_TRUE = 1 -BLND_CONTROL_BLND_FEEDTHROUGH_EN = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_CONTROL_BLND_ALPHA_MODE' -BLND_CONTROL_BLND_ALPHA_MODE__enumvalues = { - 0: 'BLND_CONTROL_BLND_ALPHA_MODE_CURRENT_PIXEL_ALPHA', - 1: 'BLND_CONTROL_BLND_ALPHA_MODE_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN', - 2: 'BLND_CONTROL_BLND_ALPHA_MODE_GLOBAL_ALPHA_ONLY', - 3: 'BLND_CONTROL_BLND_ALPHA_MODE_UNUSED', -} -BLND_CONTROL_BLND_ALPHA_MODE_CURRENT_PIXEL_ALPHA = 0 -BLND_CONTROL_BLND_ALPHA_MODE_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN = 1 -BLND_CONTROL_BLND_ALPHA_MODE_GLOBAL_ALPHA_ONLY = 2 -BLND_CONTROL_BLND_ALPHA_MODE_UNUSED = 3 -BLND_CONTROL_BLND_ALPHA_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_CONTROL_BLND_ACTIVE_OVERLAP_ONLY' -BLND_CONTROL_BLND_ACTIVE_OVERLAP_ONLY__enumvalues = { - 0: 'BLND_CONTROL_BLND_ACTIVE_OVERLAY_ONLY_FALSE', - 1: 'BLND_CONTROL_BLND_ACTIVE_OVERLAY_ONLY_TRUE', -} -BLND_CONTROL_BLND_ACTIVE_OVERLAY_ONLY_FALSE = 0 -BLND_CONTROL_BLND_ACTIVE_OVERLAY_ONLY_TRUE = 1 -BLND_CONTROL_BLND_ACTIVE_OVERLAP_ONLY = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_CONTROL_BLND_MULTIPLIED_MODE' -BLND_CONTROL_BLND_MULTIPLIED_MODE__enumvalues = { - 0: 'BLND_CONTROL_BLND_MULTIPLIED_MODE_FALSE', - 1: 'BLND_CONTROL_BLND_MULTIPLIED_MODE_TRUE', -} -BLND_CONTROL_BLND_MULTIPLIED_MODE_FALSE = 0 -BLND_CONTROL_BLND_MULTIPLIED_MODE_TRUE = 1 -BLND_CONTROL_BLND_MULTIPLIED_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_SM_CONTROL2_SM_MODE' -BLND_SM_CONTROL2_SM_MODE__enumvalues = { - 0: 'BLND_SM_CONTROL2_SM_MODE_SINGLE_PLANE', - 2: 'BLND_SM_CONTROL2_SM_MODE_ROW_SUBSAMPLING', - 4: 'BLND_SM_CONTROL2_SM_MODE_COLUMN_SUBSAMPLING', - 6: 'BLND_SM_CONTROL2_SM_MODE_CHECKERBOARD_SUBSAMPLING', -} -BLND_SM_CONTROL2_SM_MODE_SINGLE_PLANE = 0 -BLND_SM_CONTROL2_SM_MODE_ROW_SUBSAMPLING = 2 -BLND_SM_CONTROL2_SM_MODE_COLUMN_SUBSAMPLING = 4 -BLND_SM_CONTROL2_SM_MODE_CHECKERBOARD_SUBSAMPLING = 6 -BLND_SM_CONTROL2_SM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_SM_CONTROL2_SM_FRAME_ALTERNATE' -BLND_SM_CONTROL2_SM_FRAME_ALTERNATE__enumvalues = { - 0: 'BLND_SM_CONTROL2_SM_FRAME_ALTERNATE_FALSE', - 1: 'BLND_SM_CONTROL2_SM_FRAME_ALTERNATE_TRUE', -} -BLND_SM_CONTROL2_SM_FRAME_ALTERNATE_FALSE = 0 -BLND_SM_CONTROL2_SM_FRAME_ALTERNATE_TRUE = 1 -BLND_SM_CONTROL2_SM_FRAME_ALTERNATE = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_SM_CONTROL2_SM_FIELD_ALTERNATE' -BLND_SM_CONTROL2_SM_FIELD_ALTERNATE__enumvalues = { - 0: 'BLND_SM_CONTROL2_SM_FIELD_ALTERNATE_FALSE', - 1: 'BLND_SM_CONTROL2_SM_FIELD_ALTERNATE_TRUE', -} -BLND_SM_CONTROL2_SM_FIELD_ALTERNATE_FALSE = 0 -BLND_SM_CONTROL2_SM_FIELD_ALTERNATE_TRUE = 1 -BLND_SM_CONTROL2_SM_FIELD_ALTERNATE = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL' -BLND_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL__enumvalues = { - 0: 'BLND_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_NO_FORCE', - 1: 'BLND_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_RESERVED', - 2: 'BLND_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_FORCE_LOW', - 3: 'BLND_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_FORCE_HIGH', -} -BLND_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_NO_FORCE = 0 -BLND_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_RESERVED = 1 -BLND_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_FORCE_LOW = 2 -BLND_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_FORCE_HIGH = 3 -BLND_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL' -BLND_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL__enumvalues = { - 0: 'BLND_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_NO_FORCE', - 1: 'BLND_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_RESERVED', - 2: 'BLND_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_FORCE_LOW', - 3: 'BLND_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_FORCE_HIGH', -} -BLND_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_NO_FORCE = 0 -BLND_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_RESERVED = 1 -BLND_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_FORCE_LOW = 2 -BLND_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_FORCE_HIGH = 3 -BLND_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_CONTROL2_PTI_ENABLE' -BLND_CONTROL2_PTI_ENABLE__enumvalues = { - 0: 'BLND_CONTROL2_PTI_ENABLE_FALSE', - 1: 'BLND_CONTROL2_PTI_ENABLE_TRUE', -} -BLND_CONTROL2_PTI_ENABLE_FALSE = 0 -BLND_CONTROL2_PTI_ENABLE_TRUE = 1 -BLND_CONTROL2_PTI_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_CONTROL2_BLND_SUPERAA_DEGAMMA_EN' -BLND_CONTROL2_BLND_SUPERAA_DEGAMMA_EN__enumvalues = { - 0: 'BLND_CONTROL2_BLND_SUPERAA_DEGAMMA_EN_FALSE', - 1: 'BLND_CONTROL2_BLND_SUPERAA_DEGAMMA_EN_TRUE', -} -BLND_CONTROL2_BLND_SUPERAA_DEGAMMA_EN_FALSE = 0 -BLND_CONTROL2_BLND_SUPERAA_DEGAMMA_EN_TRUE = 1 -BLND_CONTROL2_BLND_SUPERAA_DEGAMMA_EN = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_CONTROL2_BLND_SUPERAA_REGAMMA_EN' -BLND_CONTROL2_BLND_SUPERAA_REGAMMA_EN__enumvalues = { - 0: 'BLND_CONTROL2_BLND_SUPERAA_REGAMMA_EN_FALSE', - 1: 'BLND_CONTROL2_BLND_SUPERAA_REGAMMA_EN_TRUE', -} -BLND_CONTROL2_BLND_SUPERAA_REGAMMA_EN_FALSE = 0 -BLND_CONTROL2_BLND_SUPERAA_REGAMMA_EN_TRUE = 1 -BLND_CONTROL2_BLND_SUPERAA_REGAMMA_EN = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK' -BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK__enumvalues = { - 0: 'BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK_FALSE', - 1: 'BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK_TRUE', -} -BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK_FALSE = 0 -BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK_TRUE = 1 -BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK' -BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK__enumvalues = { - 0: 'BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK_FALSE', - 1: 'BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK_TRUE', -} -BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK_FALSE = 0 -BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK_TRUE = 1 -BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK' -BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK__enumvalues = { - 0: 'BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK_FALSE', - 1: 'BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK_TRUE', -} -BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK_FALSE = 0 -BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK_TRUE = 1 -BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK' -BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK__enumvalues = { - 0: 'BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK_FALSE', - 1: 'BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK_TRUE', -} -BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK_FALSE = 0 -BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK_TRUE = 1 -BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK' -BLND_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK__enumvalues = { - 0: 'BLND_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK_FALSE', - 1: 'BLND_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK_TRUE', -} -BLND_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK_FALSE = 0 -BLND_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK_TRUE = 1 -BLND_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK' -BLND_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK__enumvalues = { - 0: 'BLND_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK_FALSE', - 1: 'BLND_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK_TRUE', -} -BLND_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK_FALSE = 0 -BLND_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK_TRUE = 1 -BLND_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK' -BLND_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK__enumvalues = { - 0: 'BLND_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK_FALSE', - 1: 'BLND_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK_TRUE', -} -BLND_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK_FALSE = 0 -BLND_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK_TRUE = 1 -BLND_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK' -BLND_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK__enumvalues = { - 0: 'BLND_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK_FALSE', - 1: 'BLND_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK_TRUE', -} -BLND_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK_FALSE = 0 -BLND_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK_TRUE = 1 -BLND_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE' -BLND_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE__enumvalues = { - 0: 'BLND_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE_FALSE', - 1: 'BLND_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE_TRUE', -} -BLND_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE_FALSE = 0 -BLND_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE_TRUE = 1 -BLND_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_DEBUG_BLND_CNV_MUX_SELECT' -BLND_DEBUG_BLND_CNV_MUX_SELECT__enumvalues = { - 0: 'BLND_DEBUG_BLND_CNV_MUX_SELECT_LOW', - 1: 'BLND_DEBUG_BLND_CNV_MUX_SELECT_HIGH', -} -BLND_DEBUG_BLND_CNV_MUX_SELECT_LOW = 0 -BLND_DEBUG_BLND_CNV_MUX_SELECT_HIGH = 1 -BLND_DEBUG_BLND_CNV_MUX_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'BLND_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN' -BLND_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN__enumvalues = { - 0: 'BLND_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN_FALSE', - 1: 'BLND_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN_TRUE', -} -BLND_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN_FALSE = 0 -BLND_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN_TRUE = 1 -BLND_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 9: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED = 8 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_FORMAT_OVERRIDE', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_FORMAT_OVERRIDE = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 9: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED = 8 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER_PRESENT', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER_PRESENT = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_EAPD_PIN', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_EAPD_PIN', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_EAPD_PIN = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_EAPD_PIN = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_NOT_BALANCED', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_NOT_BALANCED = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_JACK_DETECTION_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_DETECTION_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_JACK_DETECTION_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_DETECTION_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE' -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 1: 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', -} -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE = 0 -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE = 1 -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE' -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABLILITY', - 1: 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABLILITY', -} -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABLILITY = 0 -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABLILITY = 1 -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 9: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED = 8 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_DIGITAL', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_ANALOG = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_DIGITAL = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_NO_PROCESSING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_PROCESSING_CAPABILITIES', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_NO_PROCESSING_CAPABILITIES = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_PROCESSING_CAPABILITIES = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NOT_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NOT_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_FORMAT_OVERRIDE', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_FORMAT_OVERRIDE = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 9: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED = 8 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESING_CAPABILITIES', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESING_CAPABILITIES = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESING_CAPABILITIES = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_NOT_ENABLED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_ENABLED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_NOT_ENABLED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_ENABLED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_NO_EAPD_PIN', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_HAVE_EAPD_PIN', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_NO_EAPD_PIN = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_HAVE_EAPD_PIN = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_NOT_ENABLED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_ENABLED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_NOT_ENABLED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_ENABLED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_NOT_BALANCED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_NOT_BALANCED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_JACK_PRESENCE_DETECTION_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_PRESENCE_DETECTION_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_JACK_PRESENCE_DETECTION_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_PRESENCE_DETECTION_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_EN' -UNP_GRPH_EN__enumvalues = { - 0: 'UNP_GRPH_DISABLED', - 1: 'UNP_GRPH_ENABLED', -} -UNP_GRPH_DISABLED = 0 -UNP_GRPH_ENABLED = 1 -UNP_GRPH_EN = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_DEPTH' -UNP_GRPH_DEPTH__enumvalues = { - 0: 'UNP_GRPH_8BPP', - 1: 'UNP_GRPH_16BPP', - 2: 'UNP_GRPH_32BPP', -} -UNP_GRPH_8BPP = 0 -UNP_GRPH_16BPP = 1 -UNP_GRPH_32BPP = 2 -UNP_GRPH_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_NUM_BANKS' -UNP_GRPH_NUM_BANKS__enumvalues = { - 0: 'UNP_GRPH_ADDR_SURF_2_BANK', - 1: 'UNP_GRPH_ADDR_SURF_4_BANK', - 2: 'UNP_GRPH_ADDR_SURF_8_BANK', - 3: 'UNP_GRPH_ADDR_SURF_16_BANK', -} -UNP_GRPH_ADDR_SURF_2_BANK = 0 -UNP_GRPH_ADDR_SURF_4_BANK = 1 -UNP_GRPH_ADDR_SURF_8_BANK = 2 -UNP_GRPH_ADDR_SURF_16_BANK = 3 -UNP_GRPH_NUM_BANKS = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_BANK_WIDTH' -UNP_GRPH_BANK_WIDTH__enumvalues = { - 0: 'UNP_GRPH_ADDR_SURF_BANK_WIDTH_1', - 1: 'UNP_GRPH_ADDR_SURF_BANK_WIDTH_2', - 2: 'UNP_GRPH_ADDR_SURF_BANK_WIDTH_4', - 3: 'UNP_GRPH_ADDR_SURF_BANK_WIDTH_8', -} -UNP_GRPH_ADDR_SURF_BANK_WIDTH_1 = 0 -UNP_GRPH_ADDR_SURF_BANK_WIDTH_2 = 1 -UNP_GRPH_ADDR_SURF_BANK_WIDTH_4 = 2 -UNP_GRPH_ADDR_SURF_BANK_WIDTH_8 = 3 -UNP_GRPH_BANK_WIDTH = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_BANK_HEIGHT' -UNP_GRPH_BANK_HEIGHT__enumvalues = { - 0: 'UNP_GRPH_ADDR_SURF_BANK_HEIGHT_1', - 1: 'UNP_GRPH_ADDR_SURF_BANK_HEIGHT_2', - 2: 'UNP_GRPH_ADDR_SURF_BANK_HEIGHT_4', - 3: 'UNP_GRPH_ADDR_SURF_BANK_HEIGHT_8', -} -UNP_GRPH_ADDR_SURF_BANK_HEIGHT_1 = 0 -UNP_GRPH_ADDR_SURF_BANK_HEIGHT_2 = 1 -UNP_GRPH_ADDR_SURF_BANK_HEIGHT_4 = 2 -UNP_GRPH_ADDR_SURF_BANK_HEIGHT_8 = 3 -UNP_GRPH_BANK_HEIGHT = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_TILE_SPLIT' -UNP_GRPH_TILE_SPLIT__enumvalues = { - 0: 'UNP_ADDR_SURF_TILE_SPLIT_64B', - 1: 'UNP_ADDR_SURF_TILE_SPLIT_128B', - 2: 'UNP_ADDR_SURF_TILE_SPLIT_256B', - 3: 'UNP_ADDR_SURF_TILE_SPLIT_512B', - 4: 'UNP_ADDR_SURF_TILE_SPLIT_1KB', - 5: 'UNP_ADDR_SURF_TILE_SPLIT_2KB', - 6: 'UNP_ADDR_SURF_TILE_SPLIT_4KB', -} -UNP_ADDR_SURF_TILE_SPLIT_64B = 0 -UNP_ADDR_SURF_TILE_SPLIT_128B = 1 -UNP_ADDR_SURF_TILE_SPLIT_256B = 2 -UNP_ADDR_SURF_TILE_SPLIT_512B = 3 -UNP_ADDR_SURF_TILE_SPLIT_1KB = 4 -UNP_ADDR_SURF_TILE_SPLIT_2KB = 5 -UNP_ADDR_SURF_TILE_SPLIT_4KB = 6 -UNP_GRPH_TILE_SPLIT = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_ADDRESS_TRANSLATION_ENABLE' -UNP_GRPH_ADDRESS_TRANSLATION_ENABLE__enumvalues = { - 0: 'UNP_GRPH_ADDRESS_TRANSLATION_ENABLE0', - 1: 'UNP_GRPH_ADDRESS_TRANSLATION_ENABLE1', -} -UNP_GRPH_ADDRESS_TRANSLATION_ENABLE0 = 0 -UNP_GRPH_ADDRESS_TRANSLATION_ENABLE1 = 1 -UNP_GRPH_ADDRESS_TRANSLATION_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_MACRO_TILE_ASPECT' -UNP_GRPH_MACRO_TILE_ASPECT__enumvalues = { - 0: 'UNP_ADDR_SURF_MACRO_ASPECT_1', - 1: 'UNP_ADDR_SURF_MACRO_ASPECT_2', - 2: 'UNP_ADDR_SURF_MACRO_ASPECT_4', - 3: 'UNP_ADDR_SURF_MACRO_ASPECT_8', -} -UNP_ADDR_SURF_MACRO_ASPECT_1 = 0 -UNP_ADDR_SURF_MACRO_ASPECT_2 = 1 -UNP_ADDR_SURF_MACRO_ASPECT_4 = 2 -UNP_ADDR_SURF_MACRO_ASPECT_8 = 3 -UNP_GRPH_MACRO_TILE_ASPECT = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_COLOR_EXPANSION_MODE' -UNP_GRPH_COLOR_EXPANSION_MODE__enumvalues = { - 0: 'UNP_GRPH_DYNAMIC_EXPANSION', - 1: 'UNP_GRPH_ZERO_EXPANSION', -} -UNP_GRPH_DYNAMIC_EXPANSION = 0 -UNP_GRPH_ZERO_EXPANSION = 1 -UNP_GRPH_COLOR_EXPANSION_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_VIDEO_FORMAT' -UNP_VIDEO_FORMAT__enumvalues = { - 0: 'UNP_VIDEO_FORMAT0', - 1: 'UNP_VIDEO_FORMAT1', - 2: 'UNP_VIDEO_FORMAT_YUV420_YCbCr', - 3: 'UNP_VIDEO_FORMAT_YUV420_YCrCb', - 4: 'UNP_VIDEO_FORMAT_YUV422_YCb', - 5: 'UNP_VIDEO_FORMAT_YUV422_YCr', - 6: 'UNP_VIDEO_FORMAT_YUV422_CbY', - 7: 'UNP_VIDEO_FORMAT_YUV422_CrY', -} -UNP_VIDEO_FORMAT0 = 0 -UNP_VIDEO_FORMAT1 = 1 -UNP_VIDEO_FORMAT_YUV420_YCbCr = 2 -UNP_VIDEO_FORMAT_YUV420_YCrCb = 3 -UNP_VIDEO_FORMAT_YUV422_YCb = 4 -UNP_VIDEO_FORMAT_YUV422_YCr = 5 -UNP_VIDEO_FORMAT_YUV422_CbY = 6 -UNP_VIDEO_FORMAT_YUV422_CrY = 7 -UNP_VIDEO_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_ENDIAN_SWAP' -UNP_GRPH_ENDIAN_SWAP__enumvalues = { - 0: 'UNP_GRPH_ENDIAN_SWAP_NONE', - 1: 'UNP_GRPH_ENDIAN_SWAP_8IN16', - 2: 'UNP_GRPH_ENDIAN_SWAP_8IN32', - 3: 'UNP_GRPH_ENDIAN_SWAP_8IN43', -} -UNP_GRPH_ENDIAN_SWAP_NONE = 0 -UNP_GRPH_ENDIAN_SWAP_8IN16 = 1 -UNP_GRPH_ENDIAN_SWAP_8IN32 = 2 -UNP_GRPH_ENDIAN_SWAP_8IN43 = 3 -UNP_GRPH_ENDIAN_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_RED_CROSSBAR' -UNP_GRPH_RED_CROSSBAR__enumvalues = { - 0: 'UNP_GRPH_RED_CROSSBAR_R_Cr', - 1: 'UNP_GRPH_RED_CROSSBAR_G_Y', - 2: 'UNP_GRPH_RED_CROSSBAR_B_Cb', - 3: 'UNP_GRPH_RED_CROSSBAR_A', -} -UNP_GRPH_RED_CROSSBAR_R_Cr = 0 -UNP_GRPH_RED_CROSSBAR_G_Y = 1 -UNP_GRPH_RED_CROSSBAR_B_Cb = 2 -UNP_GRPH_RED_CROSSBAR_A = 3 -UNP_GRPH_RED_CROSSBAR = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_GREEN_CROSSBAR' -UNP_GRPH_GREEN_CROSSBAR__enumvalues = { - 0: 'UNP_UNP_GRPH_GREEN_CROSSBAR_GY_AND_Y', - 1: 'UNP_UNP_GRPH_GREEN_CROSSBAR_B_Cb_AND_C', - 2: 'UNP_UNP_GRPH_GREEN_CROSSBAR_A', - 3: 'UNP_UNP_GRPH_GREEN_CROSSBAR_R_Cr', -} -UNP_UNP_GRPH_GREEN_CROSSBAR_GY_AND_Y = 0 -UNP_UNP_GRPH_GREEN_CROSSBAR_B_Cb_AND_C = 1 -UNP_UNP_GRPH_GREEN_CROSSBAR_A = 2 -UNP_UNP_GRPH_GREEN_CROSSBAR_R_Cr = 3 -UNP_GRPH_GREEN_CROSSBAR = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_BLUE_CROSSBAR' -UNP_GRPH_BLUE_CROSSBAR__enumvalues = { - 0: 'UNP_GRPH_BLUE_CROSSBAR_B_Cb_AND_C', - 1: 'UNP_GRPH_BLUE_CROSSBAR_A', - 2: 'UNP_GRPH_BLUE_CROSSBAR_R_Cr', - 3: 'UNP_GRPH_BLUE_CROSSBAR_GY_AND_Y', -} -UNP_GRPH_BLUE_CROSSBAR_B_Cb_AND_C = 0 -UNP_GRPH_BLUE_CROSSBAR_A = 1 -UNP_GRPH_BLUE_CROSSBAR_R_Cr = 2 -UNP_GRPH_BLUE_CROSSBAR_GY_AND_Y = 3 -UNP_GRPH_BLUE_CROSSBAR = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_MODE_UPDATE_LOCKG' -UNP_GRPH_MODE_UPDATE_LOCKG__enumvalues = { - 0: 'UNP_GRPH_UPDATE_LOCK_0', - 1: 'UNP_GRPH_UPDATE_LOCK_1', -} -UNP_GRPH_UPDATE_LOCK_0 = 0 -UNP_GRPH_UPDATE_LOCK_1 = 1 -UNP_GRPH_MODE_UPDATE_LOCKG = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_SURFACE_IGNORE_UPDATE_LOCK' -UNP_GRPH_SURFACE_IGNORE_UPDATE_LOCK__enumvalues = { - 0: 'UNP_GRPH_SURFACE_IGNORE_UPDATE_LOCK_0', - 1: 'UNP_GRPH_SURFACE_IGNORE_UPDATE_LOCK_1', -} -UNP_GRPH_SURFACE_IGNORE_UPDATE_LOCK_0 = 0 -UNP_GRPH_SURFACE_IGNORE_UPDATE_LOCK_1 = 1 -UNP_GRPH_SURFACE_IGNORE_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE' -UNP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE__enumvalues = { - 0: 'UNP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE_0', - 1: 'UNP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE_1', -} -UNP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE_0 = 0 -UNP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE_1 = 1 -UNP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE' -UNP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE__enumvalues = { - 0: 'UNP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE_0', - 1: 'UNP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE_1', -} -UNP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE_0 = 0 -UNP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE_1 = 1 -UNP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_STEREOSYNC_FLIP_EN' -UNP_GRPH_STEREOSYNC_FLIP_EN__enumvalues = { - 0: 'UNP_GRPH_STEREOSYNC_FLIP_DISABLE', - 1: 'UNP_GRPH_STEREOSYNC_FLIP_ENABLE', -} -UNP_GRPH_STEREOSYNC_FLIP_DISABLE = 0 -UNP_GRPH_STEREOSYNC_FLIP_ENABLE = 1 -UNP_GRPH_STEREOSYNC_FLIP_EN = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_STEREOSYNC_FLIP_MODE' -UNP_GRPH_STEREOSYNC_FLIP_MODE__enumvalues = { - 0: 'UNP_GRPH_STEREOSYNC_FLIP_MODE_0', - 1: 'UNP_GRPH_STEREOSYNC_FLIP_MODE_1', - 2: 'UNP_GRPH_STEREOSYNC_FLIP_MODE_2', - 3: 'UNP_GRPH_STEREOSYNC_FLIP_MODE_3', -} -UNP_GRPH_STEREOSYNC_FLIP_MODE_0 = 0 -UNP_GRPH_STEREOSYNC_FLIP_MODE_1 = 1 -UNP_GRPH_STEREOSYNC_FLIP_MODE_2 = 2 -UNP_GRPH_STEREOSYNC_FLIP_MODE_3 = 3 -UNP_GRPH_STEREOSYNC_FLIP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_STACK_INTERLACE_FLIP_EN' -UNP_GRPH_STACK_INTERLACE_FLIP_EN__enumvalues = { - 0: 'UNP_GRPH_STACK_INTERLACE_FLIP_DISABLE', - 1: 'UNP_GRPH_STACK_INTERLACE_FLIP_ENABLE', -} -UNP_GRPH_STACK_INTERLACE_FLIP_DISABLE = 0 -UNP_GRPH_STACK_INTERLACE_FLIP_ENABLE = 1 -UNP_GRPH_STACK_INTERLACE_FLIP_EN = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_STACK_INTERLACE_FLIP_MODE' -UNP_GRPH_STACK_INTERLACE_FLIP_MODE__enumvalues = { - 0: 'UNP_GRPH_STACK_INTERLACE_FLIP_MODE_0', - 1: 'UNP_GRPH_STACK_INTERLACE_FLIP_MODE_1', - 2: 'UNP_GRPH_STACK_INTERLACE_FLIP_MODE_2', - 3: 'UNP_GRPH_STACK_INTERLACE_FLIP_MODE_3', -} -UNP_GRPH_STACK_INTERLACE_FLIP_MODE_0 = 0 -UNP_GRPH_STACK_INTERLACE_FLIP_MODE_1 = 1 -UNP_GRPH_STACK_INTERLACE_FLIP_MODE_2 = 2 -UNP_GRPH_STACK_INTERLACE_FLIP_MODE_3 = 3 -UNP_GRPH_STACK_INTERLACE_FLIP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_GRPH_STEREOSYNC_SELECT_DISABLE' -UNP_GRPH_STEREOSYNC_SELECT_DISABLE__enumvalues = { - 0: 'UNP_GRPH_STEREOSYNC_SELECT_EN', - 1: 'UNP_GRPH_STEREOSYNC_SELECT_DIS', -} -UNP_GRPH_STEREOSYNC_SELECT_EN = 0 -UNP_GRPH_STEREOSYNC_SELECT_DIS = 1 -UNP_GRPH_STEREOSYNC_SELECT_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_CRC_SOURCE_SEL' -UNP_CRC_SOURCE_SEL__enumvalues = { - 0: 'UNP_CRC_SOURCE_SEL_NP_TO_LBV', - 1: 'UNP_CRC_SOURCE_SEL_LOWER32', - 2: 'UNP_CRC_SOURCE_SEL_RESERVED', - 3: 'UNP_CRC_SOURCE_SEL_LOWER16', - 4: 'UNP_CRC_SOURCE_SEL_UNP_TO_LBV', -} -UNP_CRC_SOURCE_SEL_NP_TO_LBV = 0 -UNP_CRC_SOURCE_SEL_LOWER32 = 1 -UNP_CRC_SOURCE_SEL_RESERVED = 2 -UNP_CRC_SOURCE_SEL_LOWER16 = 3 -UNP_CRC_SOURCE_SEL_UNP_TO_LBV = 4 -UNP_CRC_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_CRC_LINE_SEL' -UNP_CRC_LINE_SEL__enumvalues = { - 0: 'UNP_CRC_LINE_SEL_RESERVED', - 1: 'UNP_CRC_LINE_SEL_EVEN_ONLY', - 2: 'UNP_CRC_LINE_SEL_ODD_ONLY', - 3: 'UNP_CRC_LINE_SEL_ODD_EVEN', -} -UNP_CRC_LINE_SEL_RESERVED = 0 -UNP_CRC_LINE_SEL_EVEN_ONLY = 1 -UNP_CRC_LINE_SEL_ODD_ONLY = 2 -UNP_CRC_LINE_SEL_ODD_EVEN = 3 -UNP_CRC_LINE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_ROTATION_ANGLE' -UNP_ROTATION_ANGLE__enumvalues = { - 0: 'UNP_ROTATION_ANGLE_0', - 1: 'UNP_ROTATION_ANGLE_90', - 2: 'UNP_ROTATION_ANGLE_180', - 3: 'UNP_ROTATION_ANGLE_270', - 4: 'UNP_ROTATION_ANGLE_0m', - 5: 'UNP_ROTATION_ANGLE_90m', - 6: 'UNP_ROTATION_ANGLE_180m', - 7: 'UNP_ROTATION_ANGLE_270m', -} -UNP_ROTATION_ANGLE_0 = 0 -UNP_ROTATION_ANGLE_90 = 1 -UNP_ROTATION_ANGLE_180 = 2 -UNP_ROTATION_ANGLE_270 = 3 -UNP_ROTATION_ANGLE_0m = 4 -UNP_ROTATION_ANGLE_90m = 5 -UNP_ROTATION_ANGLE_180m = 6 -UNP_ROTATION_ANGLE_270m = 7 -UNP_ROTATION_ANGLE = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_PIXEL_DROP' -UNP_PIXEL_DROP__enumvalues = { - 0: 'UNP_PIXEL_NO_DROP', - 1: 'UNP_PIXEL_DROPPING', -} -UNP_PIXEL_NO_DROP = 0 -UNP_PIXEL_DROPPING = 1 -UNP_PIXEL_DROP = ctypes.c_uint32 # enum - -# values for enumeration 'UNP_BUFFER_MODE' -UNP_BUFFER_MODE__enumvalues = { - 0: 'UNP_BUFFER_MODE_LUMA', - 1: 'UNP_BUFFER_MODE_LUMA_CHROMA', -} -UNP_BUFFER_MODE_LUMA = 0 -UNP_BUFFER_MODE_LUMA_CHROMA = 1 -UNP_BUFFER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_LINK_TRAINING_COMPLETE' -DP_LINK_TRAINING_COMPLETE__enumvalues = { - 0: 'DP_LINK_TRAINING_NOT_COMPLETE', - 1: 'DP_LINK_TRAINING_ALREADY_COMPLETE', -} -DP_LINK_TRAINING_NOT_COMPLETE = 0 -DP_LINK_TRAINING_ALREADY_COMPLETE = 1 -DP_LINK_TRAINING_COMPLETE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_EMBEDDED_PANEL_MODE' -DP_EMBEDDED_PANEL_MODE__enumvalues = { - 0: 'DP_EXTERNAL_PANEL', - 1: 'DP_EMBEDDED_PANEL', -} -DP_EXTERNAL_PANEL = 0 -DP_EMBEDDED_PANEL = 1 -DP_EMBEDDED_PANEL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_PIXEL_ENCODING' -DP_PIXEL_ENCODING__enumvalues = { - 0: 'DP_PIXEL_ENCODING_RGB444', - 1: 'DP_PIXEL_ENCODING_YCBCR422', - 2: 'DP_PIXEL_ENCODING_YCBCR444', - 3: 'DP_PIXEL_ENCODING_RGB_WIDE_GAMUT', - 4: 'DP_PIXEL_ENCODING_Y_ONLY', - 5: 'DP_PIXEL_ENCODING_YCBCR420', - 6: 'DP_PIXEL_ENCODING_RESERVED', -} -DP_PIXEL_ENCODING_RGB444 = 0 -DP_PIXEL_ENCODING_YCBCR422 = 1 -DP_PIXEL_ENCODING_YCBCR444 = 2 -DP_PIXEL_ENCODING_RGB_WIDE_GAMUT = 3 -DP_PIXEL_ENCODING_Y_ONLY = 4 -DP_PIXEL_ENCODING_YCBCR420 = 5 -DP_PIXEL_ENCODING_RESERVED = 6 -DP_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DYN_RANGE' -DP_DYN_RANGE__enumvalues = { - 0: 'DP_DYN_VESA_RANGE', - 1: 'DP_DYN_CEA_RANGE', -} -DP_DYN_VESA_RANGE = 0 -DP_DYN_CEA_RANGE = 1 -DP_DYN_RANGE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_YCBCR_RANGE' -DP_YCBCR_RANGE__enumvalues = { - 0: 'DP_YCBCR_RANGE_BT601_5', - 1: 'DP_YCBCR_RANGE_BT709_5', -} -DP_YCBCR_RANGE_BT601_5 = 0 -DP_YCBCR_RANGE_BT709_5 = 1 -DP_YCBCR_RANGE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_COMPONENT_DEPTH' -DP_COMPONENT_DEPTH__enumvalues = { - 0: 'DP_COMPONENT_DEPTH_6BPC', - 1: 'DP_COMPONENT_DEPTH_8BPC', - 2: 'DP_COMPONENT_DEPTH_10BPC', - 3: 'DP_COMPONENT_DEPTH_12BPC', - 4: 'DP_COMPONENT_DEPTH_16BPC_RESERVED', - 5: 'DP_COMPONENT_DEPTH_RESERVED', -} -DP_COMPONENT_DEPTH_6BPC = 0 -DP_COMPONENT_DEPTH_8BPC = 1 -DP_COMPONENT_DEPTH_10BPC = 2 -DP_COMPONENT_DEPTH_12BPC = 3 -DP_COMPONENT_DEPTH_16BPC_RESERVED = 4 -DP_COMPONENT_DEPTH_RESERVED = 5 -DP_COMPONENT_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSA_MISC0_OVERRIDE_ENABLE' -DP_MSA_MISC0_OVERRIDE_ENABLE__enumvalues = { - 0: 'MSA_MISC0_OVERRIDE_DISABLE', - 1: 'MSA_MISC0_OVERRIDE_ENABLE', -} -MSA_MISC0_OVERRIDE_DISABLE = 0 -MSA_MISC0_OVERRIDE_ENABLE = 1 -DP_MSA_MISC0_OVERRIDE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSA_MISC1_BIT7_OVERRIDE_ENABLE' -DP_MSA_MISC1_BIT7_OVERRIDE_ENABLE__enumvalues = { - 0: 'MSA_MISC1_BIT7_OVERRIDE_DISABLE', - 1: 'MSA_MISC1_BIT7_OVERRIDE_ENABLE', -} -MSA_MISC1_BIT7_OVERRIDE_DISABLE = 0 -MSA_MISC1_BIT7_OVERRIDE_ENABLE = 1 -DP_MSA_MISC1_BIT7_OVERRIDE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_UDI_LANES' -DP_UDI_LANES__enumvalues = { - 0: 'DP_UDI_1_LANE', - 1: 'DP_UDI_2_LANES', - 2: 'DP_UDI_LANES_RESERVED', - 3: 'DP_UDI_4_LANES', -} -DP_UDI_1_LANE = 0 -DP_UDI_2_LANES = 1 -DP_UDI_LANES_RESERVED = 2 -DP_UDI_4_LANES = 3 -DP_UDI_LANES = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_STREAM_DIS_DEFER' -DP_VID_STREAM_DIS_DEFER__enumvalues = { - 0: 'DP_VID_STREAM_DIS_NO_DEFER', - 1: 'DP_VID_STREAM_DIS_DEFER_TO_HBLANK', - 2: 'DP_VID_STREAM_DIS_DEFER_TO_VBLANK', -} -DP_VID_STREAM_DIS_NO_DEFER = 0 -DP_VID_STREAM_DIS_DEFER_TO_HBLANK = 1 -DP_VID_STREAM_DIS_DEFER_TO_VBLANK = 2 -DP_VID_STREAM_DIS_DEFER = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STEER_OVERFLOW_ACK' -DP_STEER_OVERFLOW_ACK__enumvalues = { - 0: 'DP_STEER_OVERFLOW_ACK_NO_EFFECT', - 1: 'DP_STEER_OVERFLOW_ACK_CLR_INTERRUPT', -} -DP_STEER_OVERFLOW_ACK_NO_EFFECT = 0 -DP_STEER_OVERFLOW_ACK_CLR_INTERRUPT = 1 -DP_STEER_OVERFLOW_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STEER_OVERFLOW_MASK' -DP_STEER_OVERFLOW_MASK__enumvalues = { - 0: 'DP_STEER_OVERFLOW_MASKED', - 1: 'DP_STEER_OVERFLOW_UNMASK', -} -DP_STEER_OVERFLOW_MASKED = 0 -DP_STEER_OVERFLOW_UNMASK = 1 -DP_STEER_OVERFLOW_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_TU_OVERFLOW_ACK' -DP_TU_OVERFLOW_ACK__enumvalues = { - 0: 'DP_TU_OVERFLOW_ACK_NO_EFFECT', - 1: 'DP_TU_OVERFLOW_ACK_CLR_INTERRUPT', -} -DP_TU_OVERFLOW_ACK_NO_EFFECT = 0 -DP_TU_OVERFLOW_ACK_CLR_INTERRUPT = 1 -DP_TU_OVERFLOW_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ALT_SCRAMBLER_RESET_EN' -DPHY_ALT_SCRAMBLER_RESET_EN__enumvalues = { - 0: 'DPHY_ALT_SCRAMBLER_REGULAR_RESET_VALUE', - 1: 'DPHY_ALT_SCRAMBLER_INTERNAL_RESET_SOLUTION', -} -DPHY_ALT_SCRAMBLER_REGULAR_RESET_VALUE = 0 -DPHY_ALT_SCRAMBLER_INTERNAL_RESET_SOLUTION = 1 -DPHY_ALT_SCRAMBLER_RESET_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ALT_SCRAMBLER_RESET_SEL' -DPHY_ALT_SCRAMBLER_RESET_SEL__enumvalues = { - 0: 'DPHY_ALT_SCRAMBLER_RESET_SEL_EDP_RESET_VALUE', - 1: 'DPHY_ALT_SCRAMBLER_RESET_SEL_CUSTOM_RESET_VALUE', -} -DPHY_ALT_SCRAMBLER_RESET_SEL_EDP_RESET_VALUE = 0 -DPHY_ALT_SCRAMBLER_RESET_SEL_CUSTOM_RESET_VALUE = 1 -DPHY_ALT_SCRAMBLER_RESET_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_TIMING_MODE' -DP_VID_TIMING_MODE__enumvalues = { - 0: 'DP_VID_TIMING_MODE_ASYNC', - 1: 'DP_VID_TIMING_MODE_SYNC', -} -DP_VID_TIMING_MODE_ASYNC = 0 -DP_VID_TIMING_MODE_SYNC = 1 -DP_VID_TIMING_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_M_N_DOUBLE_BUFFER_MODE' -DP_VID_M_N_DOUBLE_BUFFER_MODE__enumvalues = { - 0: 'DP_VID_M_N_DOUBLE_BUFFER_AFTER_VID_M_UPDATE', - 1: 'DP_VID_M_N_DOUBLE_BUFFER_AT_FRAME_START', -} -DP_VID_M_N_DOUBLE_BUFFER_AFTER_VID_M_UPDATE = 0 -DP_VID_M_N_DOUBLE_BUFFER_AT_FRAME_START = 1 -DP_VID_M_N_DOUBLE_BUFFER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_M_N_GEN_EN' -DP_VID_M_N_GEN_EN__enumvalues = { - 0: 'DP_VID_M_N_PROGRAMMED_VIA_REG', - 1: 'DP_VID_M_N_CALC_AUTO', -} -DP_VID_M_N_PROGRAMMED_VIA_REG = 0 -DP_VID_M_N_CALC_AUTO = 1 -DP_VID_M_N_GEN_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_M_DOUBLE_VALUE_EN' -DP_VID_M_DOUBLE_VALUE_EN__enumvalues = { - 0: 'DP_VID_M_INPUT_PIXEL_RATE', - 1: 'DP_VID_M_DOUBLE_INPUT_PIXEL_RATE', -} -DP_VID_M_INPUT_PIXEL_RATE = 0 -DP_VID_M_DOUBLE_INPUT_PIXEL_RATE = 1 -DP_VID_M_DOUBLE_VALUE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_ENHANCED_FRAME_MODE' -DP_VID_ENHANCED_FRAME_MODE__enumvalues = { - 0: 'VID_NORMAL_FRAME_MODE', - 1: 'VID_ENHANCED_MODE', -} -VID_NORMAL_FRAME_MODE = 0 -VID_ENHANCED_MODE = 1 -DP_VID_ENHANCED_FRAME_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_MSA_TOP_FIELD_MODE' -DP_VID_MSA_TOP_FIELD_MODE__enumvalues = { - 0: 'DP_TOP_FIELD_ONLY', - 1: 'DP_TOP_PLUS_BOTTOM_FIELD', -} -DP_TOP_FIELD_ONLY = 0 -DP_TOP_PLUS_BOTTOM_FIELD = 1 -DP_VID_MSA_TOP_FIELD_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_VBID_FIELD_POL' -DP_VID_VBID_FIELD_POL__enumvalues = { - 0: 'DP_VID_VBID_FIELD_POL_NORMAL', - 1: 'DP_VID_VBID_FIELD_POL_INV', -} -DP_VID_VBID_FIELD_POL_NORMAL = 0 -DP_VID_VBID_FIELD_POL_INV = 1 -DP_VID_VBID_FIELD_POL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_STREAM_DISABLE_ACK' -DP_VID_STREAM_DISABLE_ACK__enumvalues = { - 0: 'ID_STREAM_DISABLE_NO_ACK', - 1: 'ID_STREAM_DISABLE_ACKED', -} -ID_STREAM_DISABLE_NO_ACK = 0 -ID_STREAM_DISABLE_ACKED = 1 -DP_VID_STREAM_DISABLE_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_STREAM_DISABLE_MASK' -DP_VID_STREAM_DISABLE_MASK__enumvalues = { - 0: 'VID_STREAM_DISABLE_MASKED', - 1: 'VID_STREAM_DISABLE_UNMASK', -} -VID_STREAM_DISABLE_MASKED = 0 -VID_STREAM_DISABLE_UNMASK = 1 -DP_VID_STREAM_DISABLE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE0' -DPHY_ATEST_SEL_LANE0__enumvalues = { - 0: 'DPHY_ATEST_LANE0_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE0_REG_PATTERN', -} -DPHY_ATEST_LANE0_PRBS_PATTERN = 0 -DPHY_ATEST_LANE0_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE0 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE1' -DPHY_ATEST_SEL_LANE1__enumvalues = { - 0: 'DPHY_ATEST_LANE1_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE1_REG_PATTERN', -} -DPHY_ATEST_LANE1_PRBS_PATTERN = 0 -DPHY_ATEST_LANE1_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE1 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE2' -DPHY_ATEST_SEL_LANE2__enumvalues = { - 0: 'DPHY_ATEST_LANE2_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE2_REG_PATTERN', -} -DPHY_ATEST_LANE2_PRBS_PATTERN = 0 -DPHY_ATEST_LANE2_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE2 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE3' -DPHY_ATEST_SEL_LANE3__enumvalues = { - 0: 'DPHY_ATEST_LANE3_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE3_REG_PATTERN', -} -DPHY_ATEST_LANE3_PRBS_PATTERN = 0 -DPHY_ATEST_LANE3_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE3 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SCRAMBLER_SEL' -DPHY_SCRAMBLER_SEL__enumvalues = { - 0: 'DPHY_SCRAMBLER_SEL_LANE_DATA', - 1: 'DPHY_SCRAMBLER_SEL_DBG_DATA', -} -DPHY_SCRAMBLER_SEL_LANE_DATA = 0 -DPHY_SCRAMBLER_SEL_DBG_DATA = 1 -DPHY_SCRAMBLER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_BYPASS' -DPHY_BYPASS__enumvalues = { - 0: 'DPHY_8B10B_OUTPUT', - 1: 'DPHY_DBG_OUTPUT', -} -DPHY_8B10B_OUTPUT = 0 -DPHY_DBG_OUTPUT = 1 -DPHY_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SKEW_BYPASS' -DPHY_SKEW_BYPASS__enumvalues = { - 0: 'DPHY_WITH_SKEW', - 1: 'DPHY_NO_SKEW', -} -DPHY_WITH_SKEW = 0 -DPHY_NO_SKEW = 1 -DPHY_SKEW_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_TRAINING_PATTERN_SEL' -DPHY_TRAINING_PATTERN_SEL__enumvalues = { - 0: 'DPHY_TRAINING_PATTERN_1', - 1: 'DPHY_TRAINING_PATTERN_2', - 2: 'DPHY_TRAINING_PATTERN_3', - 3: 'DPHY_TRAINING_PATTERN_4', -} -DPHY_TRAINING_PATTERN_1 = 0 -DPHY_TRAINING_PATTERN_2 = 1 -DPHY_TRAINING_PATTERN_3 = 2 -DPHY_TRAINING_PATTERN_4 = 3 -DPHY_TRAINING_PATTERN_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_8B10B_RESET' -DPHY_8B10B_RESET__enumvalues = { - 0: 'DPHY_8B10B_NOT_RESET', - 1: 'DPHY_8B10B_RESETET', -} -DPHY_8B10B_NOT_RESET = 0 -DPHY_8B10B_RESETET = 1 -DPHY_8B10B_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_8B10B_EXT_DISP' -DP_DPHY_8B10B_EXT_DISP__enumvalues = { - 0: 'DP_DPHY_8B10B_EXT_DISP_ZERO', - 1: 'DP_DPHY_8B10B_EXT_DISP_ONE', -} -DP_DPHY_8B10B_EXT_DISP_ZERO = 0 -DP_DPHY_8B10B_EXT_DISP_ONE = 1 -DP_DPHY_8B10B_EXT_DISP = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_8B10B_CUR_DISP' -DPHY_8B10B_CUR_DISP__enumvalues = { - 0: 'DPHY_8B10B_CUR_DISP_ZERO', - 1: 'DPHY_8B10B_CUR_DISP_ONE', -} -DPHY_8B10B_CUR_DISP_ZERO = 0 -DPHY_8B10B_CUR_DISP_ONE = 1 -DPHY_8B10B_CUR_DISP = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_PRBS_EN' -DPHY_PRBS_EN__enumvalues = { - 0: 'DPHY_PRBS_DISABLE', - 1: 'DPHY_PRBS_ENABLE', -} -DPHY_PRBS_DISABLE = 0 -DPHY_PRBS_ENABLE = 1 -DPHY_PRBS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_PRBS_SEL' -DPHY_PRBS_SEL__enumvalues = { - 0: 'DPHY_PRBS7_SELECTED', - 1: 'DPHY_PRBS23_SELECTED', - 2: 'DPHY_PRBS11_SELECTED', -} -DPHY_PRBS7_SELECTED = 0 -DPHY_PRBS23_SELECTED = 1 -DPHY_PRBS11_SELECTED = 2 -DPHY_PRBS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SCRAMBLER_DIS' -DPHY_SCRAMBLER_DIS__enumvalues = { - 0: 'DPHY_SCR_ENABLED', - 1: 'DPHY_SCR_DISABLED', -} -DPHY_SCR_ENABLED = 0 -DPHY_SCR_DISABLED = 1 -DPHY_SCRAMBLER_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SCRAMBLER_ADVANCE' -DPHY_SCRAMBLER_ADVANCE__enumvalues = { - 0: 'DPHY_DPHY_SCRAMBLER_ADVANCE_ON_DATA_SYMBOL_ONLY', - 1: 'DPHY_SCRAMBLER_ADVANCE_ON_BOTH_DATA_AND_CTRL', -} -DPHY_DPHY_SCRAMBLER_ADVANCE_ON_DATA_SYMBOL_ONLY = 0 -DPHY_SCRAMBLER_ADVANCE_ON_BOTH_DATA_AND_CTRL = 1 -DPHY_SCRAMBLER_ADVANCE = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SCRAMBLER_KCODE' -DPHY_SCRAMBLER_KCODE__enumvalues = { - 0: 'DPHY_SCRAMBLER_KCODE_DISABLED', - 1: 'DPHY_SCRAMBLER_KCODE_ENABLED', -} -DPHY_SCRAMBLER_KCODE_DISABLED = 0 -DPHY_SCRAMBLER_KCODE_ENABLED = 1 -DPHY_SCRAMBLER_KCODE = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_LOAD_BS_COUNT_START' -DPHY_LOAD_BS_COUNT_START__enumvalues = { - 0: 'DPHY_LOAD_BS_COUNT_STARTED', - 1: 'DPHY_LOAD_BS_COUNT_NOT_STARTED', -} -DPHY_LOAD_BS_COUNT_STARTED = 0 -DPHY_LOAD_BS_COUNT_NOT_STARTED = 1 -DPHY_LOAD_BS_COUNT_START = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_EN' -DPHY_CRC_EN__enumvalues = { - 0: 'DPHY_CRC_DISABLED', - 1: 'DPHY_CRC_ENABLED', -} -DPHY_CRC_DISABLED = 0 -DPHY_CRC_ENABLED = 1 -DPHY_CRC_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_CONT_EN' -DPHY_CRC_CONT_EN__enumvalues = { - 0: 'DPHY_CRC_ONE_SHOT', - 1: 'DPHY_CRC_CONTINUOUS', -} -DPHY_CRC_ONE_SHOT = 0 -DPHY_CRC_CONTINUOUS = 1 -DPHY_CRC_CONT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_FIELD' -DPHY_CRC_FIELD__enumvalues = { - 0: 'DPHY_CRC_START_FROM_TOP_FIELD', - 1: 'DPHY_CRC_START_FROM_BOTTOM_FIELD', -} -DPHY_CRC_START_FROM_TOP_FIELD = 0 -DPHY_CRC_START_FROM_BOTTOM_FIELD = 1 -DPHY_CRC_FIELD = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_SEL' -DPHY_CRC_SEL__enumvalues = { - 0: 'DPHY_CRC_LANE0_SELECTED', - 1: 'DPHY_CRC_LANE1_SELECTED', - 2: 'DPHY_CRC_LANE2_SELECTED', - 3: 'DPHY_CRC_LANE3_SELECTED', -} -DPHY_CRC_LANE0_SELECTED = 0 -DPHY_CRC_LANE1_SELECTED = 1 -DPHY_CRC_LANE2_SELECTED = 2 -DPHY_CRC_LANE3_SELECTED = 3 -DPHY_CRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_RX_FAST_TRAINING_CAPABLE' -DPHY_RX_FAST_TRAINING_CAPABLE__enumvalues = { - 0: 'DPHY_FAST_TRAINING_NOT_CAPABLE_0', - 1: 'DPHY_FAST_TRAINING_CAPABLE', -} -DPHY_FAST_TRAINING_NOT_CAPABLE_0 = 0 -DPHY_FAST_TRAINING_CAPABLE = 1 -DPHY_RX_FAST_TRAINING_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_COLLISION_ACK' -DP_SEC_COLLISION_ACK__enumvalues = { - 0: 'DP_SEC_COLLISION_ACK_NO_EFFECT', - 1: 'DP_SEC_COLLISION_ACK_CLR_FLAG', -} -DP_SEC_COLLISION_ACK_NO_EFFECT = 0 -DP_SEC_COLLISION_ACK_CLR_FLAG = 1 -DP_SEC_COLLISION_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_AUDIO_MUTE' -DP_SEC_AUDIO_MUTE__enumvalues = { - 0: 'DP_SEC_AUDIO_MUTE_HW_CTRL', - 1: 'DP_SEC_AUDIO_MUTE_SW_CTRL', -} -DP_SEC_AUDIO_MUTE_HW_CTRL = 0 -DP_SEC_AUDIO_MUTE_SW_CTRL = 1 -DP_SEC_AUDIO_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_TIMESTAMP_MODE' -DP_SEC_TIMESTAMP_MODE__enumvalues = { - 0: 'DP_SEC_TIMESTAMP_PROGRAMMABLE_MODE', - 1: 'DP_SEC_TIMESTAMP_AUTO_CALC_MODE', -} -DP_SEC_TIMESTAMP_PROGRAMMABLE_MODE = 0 -DP_SEC_TIMESTAMP_AUTO_CALC_MODE = 1 -DP_SEC_TIMESTAMP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_ASP_PRIORITY' -DP_SEC_ASP_PRIORITY__enumvalues = { - 0: 'DP_SEC_ASP_LOW_PRIORITY', - 1: 'DP_SEC_ASP_HIGH_PRIORITY', -} -DP_SEC_ASP_LOW_PRIORITY = 0 -DP_SEC_ASP_HIGH_PRIORITY = 1 -DP_SEC_ASP_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE' -DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE__enumvalues = { - 0: 'DP_SEC_ASP_CHANNEL_COUNT_FROM_AZ', - 1: 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED', -} -DP_SEC_ASP_CHANNEL_COUNT_FROM_AZ = 0 -DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED = 1 -DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_SAT_UPDATE_ACT' -DP_MSE_SAT_UPDATE_ACT__enumvalues = { - 0: 'DP_MSE_SAT_UPDATE_NO_ACTION', - 1: 'DP_MSE_SAT_UPDATE_WITH_TRIGGER', - 2: 'DP_MSE_SAT_UPDATE_WITHOUT_TRIGGER', -} -DP_MSE_SAT_UPDATE_NO_ACTION = 0 -DP_MSE_SAT_UPDATE_WITH_TRIGGER = 1 -DP_MSE_SAT_UPDATE_WITHOUT_TRIGGER = 2 -DP_MSE_SAT_UPDATE_ACT = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_LINK_LINE' -DP_MSE_LINK_LINE__enumvalues = { - 0: 'DP_MSE_LINK_LINE_32_MTP_LONG', - 1: 'DP_MSE_LINK_LINE_64_MTP_LONG', - 2: 'DP_MSE_LINK_LINE_128_MTP_LONG', - 3: 'DP_MSE_LINK_LINE_256_MTP_LONG', -} -DP_MSE_LINK_LINE_32_MTP_LONG = 0 -DP_MSE_LINK_LINE_64_MTP_LONG = 1 -DP_MSE_LINK_LINE_128_MTP_LONG = 2 -DP_MSE_LINK_LINE_256_MTP_LONG = 3 -DP_MSE_LINK_LINE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_BLANK_CODE' -DP_MSE_BLANK_CODE__enumvalues = { - 0: 'DP_MSE_BLANK_CODE_SF_FILLED', - 1: 'DP_MSE_BLANK_CODE_ZERO_FILLED', -} -DP_MSE_BLANK_CODE_SF_FILLED = 0 -DP_MSE_BLANK_CODE_ZERO_FILLED = 1 -DP_MSE_BLANK_CODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_TIMESTAMP_MODE' -DP_MSE_TIMESTAMP_MODE__enumvalues = { - 0: 'DP_MSE_TIMESTAMP_CALC_BASED_ON_LINK_RATE', - 1: 'DP_MSE_TIMESTAMP_CALC_BASED_ON_VC_RATE', -} -DP_MSE_TIMESTAMP_CALC_BASED_ON_LINK_RATE = 0 -DP_MSE_TIMESTAMP_CALC_BASED_ON_VC_RATE = 1 -DP_MSE_TIMESTAMP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_ZERO_ENCODER' -DP_MSE_ZERO_ENCODER__enumvalues = { - 0: 'DP_MSE_NOT_ZERO_FE_ENCODER', - 1: 'DP_MSE_ZERO_FE_ENCODER', -} -DP_MSE_NOT_ZERO_FE_ENCODER = 0 -DP_MSE_ZERO_FE_ENCODER = 1 -DP_MSE_ZERO_ENCODER = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_OUTPUT_DPDBG_DATA' -DP_MSE_OUTPUT_DPDBG_DATA__enumvalues = { - 0: 'DP_MSE_OUTPUT_DPDBG_DATA_DIS', - 1: 'DP_MSE_OUTPUT_DPDBG_DATA_EN', -} -DP_MSE_OUTPUT_DPDBG_DATA_DIS = 0 -DP_MSE_OUTPUT_DPDBG_DATA_EN = 1 -DP_MSE_OUTPUT_DPDBG_DATA = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_HBR2_PATTERN_CONTROL_MODE' -DP_DPHY_HBR2_PATTERN_CONTROL_MODE__enumvalues = { - 0: 'DP_DPHY_HBR2_PASS_THROUGH', - 1: 'DP_DPHY_HBR2_PATTERN_1', - 2: 'DP_DPHY_HBR2_PATTERN_2_NEG', - 3: 'DP_DPHY_HBR2_PATTERN_3', - 6: 'DP_DPHY_HBR2_PATTERN_2_POS', -} -DP_DPHY_HBR2_PASS_THROUGH = 0 -DP_DPHY_HBR2_PATTERN_1 = 1 -DP_DPHY_HBR2_PATTERN_2_NEG = 2 -DP_DPHY_HBR2_PATTERN_3 = 3 -DP_DPHY_HBR2_PATTERN_2_POS = 6 -DP_DPHY_HBR2_PATTERN_CONTROL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_MST_PHASE_ERROR_ACK' -DPHY_CRC_MST_PHASE_ERROR_ACK__enumvalues = { - 0: 'DPHY_CRC_MST_PHASE_ERROR_NO_ACK', - 1: 'DPHY_CRC_MST_PHASE_ERROR_ACKED', -} -DPHY_CRC_MST_PHASE_ERROR_NO_ACK = 0 -DPHY_CRC_MST_PHASE_ERROR_ACKED = 1 -DPHY_CRC_MST_PHASE_ERROR_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SW_FAST_TRAINING_START' -DPHY_SW_FAST_TRAINING_START__enumvalues = { - 0: 'DPHY_SW_FAST_TRAINING_NOT_STARTED', - 1: 'DPHY_SW_FAST_TRAINING_STARTED', -} -DPHY_SW_FAST_TRAINING_NOT_STARTED = 0 -DPHY_SW_FAST_TRAINING_STARTED = 1 -DPHY_SW_FAST_TRAINING_START = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN' -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN__enumvalues = { - 0: 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_DISABLED', - 1: 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_ENABLED', -} -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_DISABLED = 0 -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_ENABLED = 1 -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_FAST_TRAINING_COMPLETE_MASK' -DP_DPHY_FAST_TRAINING_COMPLETE_MASK__enumvalues = { - 0: 'DP_DPHY_FAST_TRAINING_COMPLETE_MASKED', - 1: 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_MASKED', -} -DP_DPHY_FAST_TRAINING_COMPLETE_MASKED = 0 -DP_DPHY_FAST_TRAINING_COMPLETE_NOT_MASKED = 1 -DP_DPHY_FAST_TRAINING_COMPLETE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_FAST_TRAINING_COMPLETE_ACK' -DP_DPHY_FAST_TRAINING_COMPLETE_ACK__enumvalues = { - 0: 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_ACKED', - 1: 'DP_DPHY_FAST_TRAINING_COMPLETE_ACKED', -} -DP_DPHY_FAST_TRAINING_COMPLETE_NOT_ACKED = 0 -DP_DPHY_FAST_TRAINING_COMPLETE_ACKED = 1 -DP_DPHY_FAST_TRAINING_COMPLETE_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSA_V_TIMING_OVERRIDE_EN' -DP_MSA_V_TIMING_OVERRIDE_EN__enumvalues = { - 0: 'MSA_V_TIMING_OVERRIDE_DISABLED', - 1: 'MSA_V_TIMING_OVERRIDE_ENABLED', -} -MSA_V_TIMING_OVERRIDE_DISABLED = 0 -MSA_V_TIMING_OVERRIDE_ENABLED = 1 -DP_MSA_V_TIMING_OVERRIDE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_GSP0_PRIORITY' -DP_SEC_GSP0_PRIORITY__enumvalues = { - 0: 'SEC_GSP0_PRIORITY_LOW', - 1: 'SEC_GSP0_PRIORITY_HIGH', -} -SEC_GSP0_PRIORITY_LOW = 0 -SEC_GSP0_PRIORITY_HIGH = 1 -DP_SEC_GSP0_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_GSP0_SEND' -DP_SEC_GSP0_SEND__enumvalues = { - 0: 'NOT_SENT', - 1: 'FORCE_SENT', -} -NOT_SENT = 0 -FORCE_SENT = 1 -DP_SEC_GSP0_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'COL_MAN_UPDATE_LOCK' -COL_MAN_UPDATE_LOCK__enumvalues = { - 0: 'COL_MAN_UPDATE_UNLOCKED', - 1: 'COL_MAN_UPDATE_LOCKED', -} -COL_MAN_UPDATE_UNLOCKED = 0 -COL_MAN_UPDATE_LOCKED = 1 -COL_MAN_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'COL_MAN_DISABLE_MULTIPLE_UPDATE' -COL_MAN_DISABLE_MULTIPLE_UPDATE__enumvalues = { - 0: 'COL_MAN_MULTIPLE_UPDATE', - 1: 'COL_MAN_MULTIPLE_UPDAT_EDISABLE', -} -COL_MAN_MULTIPLE_UPDATE = 0 -COL_MAN_MULTIPLE_UPDAT_EDISABLE = 1 -COL_MAN_DISABLE_MULTIPLE_UPDATE = ctypes.c_uint32 # enum - -# values for enumeration 'COL_MAN_INPUTCSC_MODE' -COL_MAN_INPUTCSC_MODE__enumvalues = { - 0: 'INPUTCSC_MODE_BYPASS', - 1: 'INPUTCSC_MODE_A', - 2: 'INPUTCSC_MODE_B', - 3: 'INPUTCSC_MODE_UNITY', -} -INPUTCSC_MODE_BYPASS = 0 -INPUTCSC_MODE_A = 1 -INPUTCSC_MODE_B = 2 -INPUTCSC_MODE_UNITY = 3 -COL_MAN_INPUTCSC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'COL_MAN_INPUTCSC_TYPE' -COL_MAN_INPUTCSC_TYPE__enumvalues = { - 0: 'INPUTCSC_TYPE_12_0', - 1: 'INPUTCSC_TYPE_10_2', - 2: 'INPUTCSC_TYPE_8_4', -} -INPUTCSC_TYPE_12_0 = 0 -INPUTCSC_TYPE_10_2 = 1 -INPUTCSC_TYPE_8_4 = 2 -COL_MAN_INPUTCSC_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'COL_MAN_INPUTCSC_CONVERT' -COL_MAN_INPUTCSC_CONVERT__enumvalues = { - 0: 'INPUTCSC_ROUND', - 1: 'INPUTCSC_TRUNCATE', -} -INPUTCSC_ROUND = 0 -INPUTCSC_TRUNCATE = 1 -COL_MAN_INPUTCSC_CONVERT = ctypes.c_uint32 # enum - -# values for enumeration 'COL_MAN_PRESCALE_MODE' -COL_MAN_PRESCALE_MODE__enumvalues = { - 0: 'PRESCALE_MODE_BYPASS', - 1: 'PRESCALE_MODE_PROGRAM', - 2: 'PRESCALE_MODE_UNITY', -} -PRESCALE_MODE_BYPASS = 0 -PRESCALE_MODE_PROGRAM = 1 -PRESCALE_MODE_UNITY = 2 -COL_MAN_PRESCALE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'COL_MAN_INPUT_GAMMA_MODE' -COL_MAN_INPUT_GAMMA_MODE__enumvalues = { - 0: 'INGAMMA_MODE_BYPASS', - 1: 'INGAMMA_MODE_FIX', - 2: 'INGAMMA_MODE_FLOAT', -} -INGAMMA_MODE_BYPASS = 0 -INGAMMA_MODE_FIX = 1 -INGAMMA_MODE_FLOAT = 2 -COL_MAN_INPUT_GAMMA_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'COL_MAN_OUTPUT_CSC_MODE' -COL_MAN_OUTPUT_CSC_MODE__enumvalues = { - 0: 'COL_MAN_OUTPUT_CSC_BYPASS', - 1: 'COL_MAN_OUTPUT_CSC_RGB', - 2: 'COL_MAN_OUTPUT_CSC_YCrCb601', - 3: 'COL_MAN_OUTPUT_CSC_YCrCb709', - 4: 'COL_MAN_OUTPUT_CSC_A', - 5: 'COL_MAN_OUTPUT_CSC_B', - 6: 'COL_MAN_OUTPUT_CSC_UNITY', -} -COL_MAN_OUTPUT_CSC_BYPASS = 0 -COL_MAN_OUTPUT_CSC_RGB = 1 -COL_MAN_OUTPUT_CSC_YCrCb601 = 2 -COL_MAN_OUTPUT_CSC_YCrCb709 = 3 -COL_MAN_OUTPUT_CSC_A = 4 -COL_MAN_OUTPUT_CSC_B = 5 -COL_MAN_OUTPUT_CSC_UNITY = 6 -COL_MAN_OUTPUT_CSC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'COL_MAN_DENORM_CLAMP_CONTROL' -COL_MAN_DENORM_CLAMP_CONTROL__enumvalues = { - 0: 'DENORM_CLAMP_MODE_UNITY', - 1: 'DENORM_CLAMP_MODE_8', - 2: 'DENORM_CLAMP_MODE_10', - 3: 'DENORM_CLAMP_MODE_12', -} -DENORM_CLAMP_MODE_UNITY = 0 -DENORM_CLAMP_MODE_8 = 1 -DENORM_CLAMP_MODE_10 = 2 -DENORM_CLAMP_MODE_12 = 3 -COL_MAN_DENORM_CLAMP_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'COL_MAN_REGAMMA_MODE_CONTROL' -COL_MAN_REGAMMA_MODE_CONTROL__enumvalues = { - 0: 'COL_MAN_REGAMMA_MODE_BYPASS', - 1: 'COL_MAN_REGAMMA_MODE_ROM_A', - 2: 'COL_MAN_REGAMMA_MODE_ROM_B', - 3: 'COL_MAN_REGAMMA_MODE_A', - 4: 'COL_MAN_REGAMMA_MODE_B', -} -COL_MAN_REGAMMA_MODE_BYPASS = 0 -COL_MAN_REGAMMA_MODE_ROM_A = 1 -COL_MAN_REGAMMA_MODE_ROM_B = 2 -COL_MAN_REGAMMA_MODE_A = 3 -COL_MAN_REGAMMA_MODE_B = 4 -COL_MAN_REGAMMA_MODE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'COL_MAN_GLOBAL_PASSTHROUGH_ENABLE' -COL_MAN_GLOBAL_PASSTHROUGH_ENABLE__enumvalues = { - 0: 'CM_GLOBAL_PASSTHROUGH_DISBALE', - 1: 'CM_GLOBAL_PASSTHROUGH_ENABLE', -} -CM_GLOBAL_PASSTHROUGH_DISBALE = 0 -CM_GLOBAL_PASSTHROUGH_ENABLE = 1 -COL_MAN_GLOBAL_PASSTHROUGH_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'COL_MAN_DEGAMMA_MODE' -COL_MAN_DEGAMMA_MODE__enumvalues = { - 0: 'DEGAMMA_MODE_BYPASS', - 1: 'DEGAMMA_MODE_A', - 2: 'DEGAMMA_MODE_B', -} -DEGAMMA_MODE_BYPASS = 0 -DEGAMMA_MODE_A = 1 -DEGAMMA_MODE_B = 2 -COL_MAN_DEGAMMA_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'COL_MAN_GAMUT_REMAP_MODE' -COL_MAN_GAMUT_REMAP_MODE__enumvalues = { - 0: 'GAMUT_REMAP_MODE_BYPASS', - 1: 'GAMUT_REMAP_MODE_1', - 2: 'GAMUT_REMAP_MODE_2', - 3: 'GAMUT_REMAP_MODE_3', -} -GAMUT_REMAP_MODE_BYPASS = 0 -GAMUT_REMAP_MODE_1 = 1 -GAMUT_REMAP_MODE_2 = 2 -GAMUT_REMAP_MODE_3 = 3 -COL_MAN_GAMUT_REMAP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_CONTROL_HPD_SEL' -DP_AUX_CONTROL_HPD_SEL__enumvalues = { - 0: 'DP_AUX_CONTROL_HPD1_SELECTED', - 1: 'DP_AUX_CONTROL_HPD2_SELECTED', - 2: 'DP_AUX_CONTROL_HPD3_SELECTED', - 3: 'DP_AUX_CONTROL_HPD4_SELECTED', - 4: 'DP_AUX_CONTROL_HPD5_SELECTED', - 5: 'DP_AUX_CONTROL_HPD6_SELECTED', -} -DP_AUX_CONTROL_HPD1_SELECTED = 0 -DP_AUX_CONTROL_HPD2_SELECTED = 1 -DP_AUX_CONTROL_HPD3_SELECTED = 2 -DP_AUX_CONTROL_HPD4_SELECTED = 3 -DP_AUX_CONTROL_HPD5_SELECTED = 4 -DP_AUX_CONTROL_HPD6_SELECTED = 5 -DP_AUX_CONTROL_HPD_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_CONTROL_TEST_MODE' -DP_AUX_CONTROL_TEST_MODE__enumvalues = { - 0: 'DP_AUX_CONTROL_TEST_MODE_DISABLE', - 1: 'DP_AUX_CONTROL_TEST_MODE_ENABLE', -} -DP_AUX_CONTROL_TEST_MODE_DISABLE = 0 -DP_AUX_CONTROL_TEST_MODE_ENABLE = 1 -DP_AUX_CONTROL_TEST_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_SW_CONTROL_SW_GO' -DP_AUX_SW_CONTROL_SW_GO__enumvalues = { - 0: 'DP_AUX_SW_CONTROL_SW__NOT_GO', - 1: 'DP_AUX_SW_CONTROL_SW__GO', -} -DP_AUX_SW_CONTROL_SW__NOT_GO = 0 -DP_AUX_SW_CONTROL_SW__GO = 1 -DP_AUX_SW_CONTROL_SW_GO = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_SW_CONTROL_LS_READ_TRIG' -DP_AUX_SW_CONTROL_LS_READ_TRIG__enumvalues = { - 0: 'DP_AUX_SW_CONTROL_LS_READ__NOT_TRIG', - 1: 'DP_AUX_SW_CONTROL_LS_READ__TRIG', -} -DP_AUX_SW_CONTROL_LS_READ__NOT_TRIG = 0 -DP_AUX_SW_CONTROL_LS_READ__TRIG = 1 -DP_AUX_SW_CONTROL_LS_READ_TRIG = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ARB_CONTROL_ARB_PRIORITY' -DP_AUX_ARB_CONTROL_ARB_PRIORITY__enumvalues = { - 0: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__GTC_LS_SW', - 1: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__LS_GTC_SW', - 2: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_LS_GTC', - 3: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_GTC_LS', -} -DP_AUX_ARB_CONTROL_ARB_PRIORITY__GTC_LS_SW = 0 -DP_AUX_ARB_CONTROL_ARB_PRIORITY__LS_GTC_SW = 1 -DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_LS_GTC = 2 -DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_GTC_LS = 3 -DP_AUX_ARB_CONTROL_ARB_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ' -DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ__enumvalues = { - 0: 'DP_AUX_ARB_CONTROL__NOT_USE_AUX_REG_REQ', - 1: 'DP_AUX_ARB_CONTROL__USE_AUX_REG_REQ', -} -DP_AUX_ARB_CONTROL__NOT_USE_AUX_REG_REQ = 0 -DP_AUX_ARB_CONTROL__USE_AUX_REG_REQ = 1 -DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG' -DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG__enumvalues = { - 0: 'DP_AUX_ARB_CONTROL__DONE_NOT_USING_AUX_REG', - 1: 'DP_AUX_ARB_CONTROL__DONE_USING_AUX_REG', -} -DP_AUX_ARB_CONTROL__DONE_NOT_USING_AUX_REG = 0 -DP_AUX_ARB_CONTROL__DONE_USING_AUX_REG = 1 -DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_INT_ACK' -DP_AUX_INT_ACK__enumvalues = { - 0: 'DP_AUX_INT__NOT_ACK', - 1: 'DP_AUX_INT__ACK', -} -DP_AUX_INT__NOT_ACK = 0 -DP_AUX_INT__ACK = 1 -DP_AUX_INT_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_LS_UPDATE_ACK' -DP_AUX_LS_UPDATE_ACK__enumvalues = { - 0: 'DP_AUX_INT_LS_UPDATE_NOT_ACK', - 1: 'DP_AUX_INT_LS_UPDATE_ACK', -} -DP_AUX_INT_LS_UPDATE_NOT_ACK = 0 -DP_AUX_INT_LS_UPDATE_ACK = 1 -DP_AUX_LS_UPDATE_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL' -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__enumvalues = { - 0: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__DIVIDED_SYM_CLK', - 1: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__FROM_DCCG_MICROSECOND_REF', -} -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__DIVIDED_SYM_CLK = 0 -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__FROM_DCCG_MICROSECOND_REF = 1 -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE' -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__enumvalues = { - 0: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__1MHZ', - 1: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__2MHZ', - 2: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__4MHZ', - 3: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__8MHZ', -} -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__1MHZ = 0 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__2MHZ = 1 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__4MHZ = 2 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__8MHZ = 3 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN' -DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__enumvalues = { - 0: 'DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__0US', - 1: 'DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__8US', - 2: 'DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__16US', - 3: 'DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__24US', - 4: 'DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__32US', - 5: 'DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__40US', - 6: 'DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__48US', - 7: 'DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__56US', -} -DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__0US = 0 -DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__8US = 1 -DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__16US = 2 -DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__24US = 3 -DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__32US = 4 -DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__40US = 5 -DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__48US = 6 -DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__56US = 7 -DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY' -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__enumvalues = { - 0: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__0', - 1: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__16US', - 2: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__32US', - 3: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__64US', - 4: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__128US', - 5: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__256US', -} -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__0 = 0 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__16US = 1 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__32US = 2 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__64US = 3 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__128US = 4 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__256US = 5 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW' -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO2_PERIOD', - 1: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO4_PERIOD', - 2: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO8_PERIOD', - 3: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO16_PERIOD', - 4: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO32_PERIOD', - 5: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO64_PERIOD', - 6: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO128_PERIOD', - 7: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO256_PERIOD', -} -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO2_PERIOD = 0 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO4_PERIOD = 1 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO8_PERIOD = 2 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO16_PERIOD = 3 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO32_PERIOD = 4 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO64_PERIOD = 5 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO128_PERIOD = 6 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO256_PERIOD = 7 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW' -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO2_PERIOD', - 1: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO4_PERIOD', - 2: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO8_PERIOD', - 3: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO16_PERIOD', - 4: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO32_PERIOD', - 5: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO64_PERIOD', - 6: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO128_PERIOD', - 7: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO256_PERIOD', -} -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO2_PERIOD = 0 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO4_PERIOD = 1 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO8_PERIOD = 2 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO16_PERIOD = 3 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO32_PERIOD = 4 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO64_PERIOD = 5 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO128_PERIOD = 6 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO256_PERIOD = 7 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN' -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__6_EDGES', - 1: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__10_EDGES', - 2: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__18_EDGES', - 3: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__RESERVED', -} -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__6_EDGES = 0 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__10_EDGES = 1 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__18_EDGES = 2 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__RESERVED = 3 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT' -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 1: 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_PHASE_DETECT', -} -DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_PHASE_DETECT = 0 -DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_PHASE_DETECT = 1 -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START' -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_START', - 1: 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_START', -} -DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_START = 0 -DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_START = 1 -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP' -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_STOP', - 1: 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_STOP', -} -DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_STOP = 0 -DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_STOP = 1 -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN' -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__2_HALF_SYMBOLS', - 1: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__4_HALF_SYMBOLS', - 2: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__6_HALF_SYMBOLS', - 3: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__8_HALF_SYMBOLS', -} -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__2_HALF_SYMBOLS = 0 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__4_HALF_SYMBOLS = 1 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__6_HALF_SYMBOLS = 2 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__8_HALF_SYMBOLS = 3 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN' -DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_450US', - 1: 'DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_500US', - 2: 'DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_550US', - 3: 'DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_600US', - 4: 'DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_650US', - 5: 'DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_700US', - 6: 'DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_750US', - 7: 'DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_800US', -} -DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_450US = 0 -DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_500US = 1 -DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_550US = 2 -DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_600US = 3 -DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_650US = 4 -DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_700US = 5 -DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_750US = 6 -DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_800US = 7 -DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD' -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__enumvalues = { - 0: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__1to2', - 1: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__3to4', - 2: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__7to8', - 3: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__15to16', - 4: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__31to32', - 5: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__63to64', - 6: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__127to128', - 7: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__255to256', -} -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__1to2 = 0 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__3to4 = 1 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__7to8 = 2 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__15to16 = 3 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__31to32 = 4 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__63to64 = 5 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__127to128 = 6 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__255to256 = 7 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ' -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_ALLOW_REQ_FROM_OTHER_AUX', - 1: 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ_FROM_OTHER_AUX', -} -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_ALLOW_REQ_FROM_OTHER_AUX = 0 -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ_FROM_OTHER_AUX = 1 -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW' -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__300US', - 1: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__400US', - 2: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__500US', - 3: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__600US', -} -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__300US = 0 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__400US = 1 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__500US = 2 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__600US = 3 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT' -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__4_ATTAMPS', - 1: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__8_ATTAMPS', - 2: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__16_ATTAMPS', - 3: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__RESERVED', -} -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__4_ATTAMPS = 0 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__8_ATTAMPS = 1 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__16_ATTAMPS = 2 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__RESERVED = 3 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN' -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__0', - 1: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__64', - 2: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__128', - 3: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__256', -} -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__0 = 0 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__64 = 1 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__128 = 2 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__256 = 3 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ERR_OCCURRED_ACK' -DP_AUX_ERR_OCCURRED_ACK__enumvalues = { - 0: 'DP_AUX_ERR_OCCURRED__NOT_ACK', - 1: 'DP_AUX_ERR_OCCURRED__ACK', -} -DP_AUX_ERR_OCCURRED__NOT_ACK = 0 -DP_AUX_ERR_OCCURRED__ACK = 1 -DP_AUX_ERR_OCCURRED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_POTENTIAL_ERR_REACHED_ACK' -DP_AUX_POTENTIAL_ERR_REACHED_ACK__enumvalues = { - 0: 'DP_AUX_POTENTIAL_ERR_REACHED__NOT_ACK', - 1: 'DP_AUX_POTENTIAL_ERR_REACHED__ACK', -} -DP_AUX_POTENTIAL_ERR_REACHED__NOT_ACK = 0 -DP_AUX_POTENTIAL_ERR_REACHED__ACK = 1 -DP_AUX_POTENTIAL_ERR_REACHED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DEFINITE_ERR_REACHED_ACK' -DP_AUX_DEFINITE_ERR_REACHED_ACK__enumvalues = { - 0: 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_NOT_ACK', - 1: 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_ACK', -} -ALPHA_DP_AUX_DEFINITE_ERR_REACHED_NOT_ACK = 0 -ALPHA_DP_AUX_DEFINITE_ERR_REACHED_ACK = 1 -DP_AUX_DEFINITE_ERR_REACHED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_RESET' -DP_AUX_RESET__enumvalues = { - 0: 'DP_AUX_RESET_DEASSERTED', - 1: 'DP_AUX_RESET_ASSERTED', -} -DP_AUX_RESET_DEASSERTED = 0 -DP_AUX_RESET_ASSERTED = 1 -DP_AUX_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_RESET_DONE' -DP_AUX_RESET_DONE__enumvalues = { - 0: 'DP_AUX_RESET_SEQUENCE_NOT_DONE', - 1: 'DP_AUX_RESET_SEQUENCE_DONE', -} -DP_AUX_RESET_SEQUENCE_NOT_DONE = 0 -DP_AUX_RESET_SEQUENCE_DONE = 1 -DP_AUX_RESET_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_COMMAND_MODE_SRC_FORMAT' -DSI_COMMAND_MODE_SRC_FORMAT__enumvalues = { - 2: 'DSI_COMMAND_SRC_FORMAT_RGB8BIT', - 3: 'DSI_COMMAND_SRC_FORMAT_RGB332', - 4: 'DSI_COMMAND_SRC_FORMAT_RGB444', - 5: 'DSI_COMMAND_SRC_FORMAT_RGB555', - 6: 'DSI_COMMAND_SRC_FORMAT_RGB565', - 8: 'DSI_COMMAND_SRC_FORMAT_RGB888', -} -DSI_COMMAND_SRC_FORMAT_RGB8BIT = 2 -DSI_COMMAND_SRC_FORMAT_RGB332 = 3 -DSI_COMMAND_SRC_FORMAT_RGB444 = 4 -DSI_COMMAND_SRC_FORMAT_RGB555 = 5 -DSI_COMMAND_SRC_FORMAT_RGB565 = 6 -DSI_COMMAND_SRC_FORMAT_RGB888 = 8 -DSI_COMMAND_MODE_SRC_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_COMMAND_MODE_DST_FORMAT' -DSI_COMMAND_MODE_DST_FORMAT__enumvalues = { - 0: 'DSI_COMMAND_DST_FORMAT_RGB111', - 3: 'DSI_COMMAND_DST_FORMAT_RGB332', - 4: 'DSI_COMMAND_DST_FORMAT_RGB444', - 6: 'DSI_COMMAND_DST_FORMAT_RGB565', - 7: 'DSI_COMMAND_DST_FORMAT_RGB666', - 8: 'DSI_COMMAND_DST_FORMAT_RGB888', -} -DSI_COMMAND_DST_FORMAT_RGB111 = 0 -DSI_COMMAND_DST_FORMAT_RGB332 = 3 -DSI_COMMAND_DST_FORMAT_RGB444 = 4 -DSI_COMMAND_DST_FORMAT_RGB565 = 6 -DSI_COMMAND_DST_FORMAT_RGB666 = 7 -DSI_COMMAND_DST_FORMAT_RGB888 = 8 -DSI_COMMAND_MODE_DST_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_FLAG_CLR' -DSI_FLAG_CLR__enumvalues = { - 0: 'DSI_FLAG_NO_CLEAR', - 1: 'DSI_FLAG_CLEAR', -} -DSI_FLAG_NO_CLEAR = 0 -DSI_FLAG_CLEAR = 1 -DSI_FLAG_CLR = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_BIT_SWAP' -DSI_BIT_SWAP__enumvalues = { - 0: 'DSI_BIT_SWAP_DISABLE', - 1: 'DSI_BIT_SWAP_ENABLE', -} -DSI_BIT_SWAP_DISABLE = 0 -DSI_BIT_SWAP_ENABLE = 1 -DSI_BIT_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_CLK_GATING' -DSI_CLK_GATING__enumvalues = { - 0: 'DSI_CLK_GATING_ENABLE', - 1: 'DSI_CLK_GATING_DISABLE', -} -DSI_CLK_GATING_ENABLE = 0 -DSI_CLK_GATING_DISABLE = 1 -DSI_CLK_GATING = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_LANE_ULPS_REQUEST' -DSI_LANE_ULPS_REQUEST__enumvalues = { - 0: 'DSI_LANE_ULPS_REQUEST_DEASSERT', - 1: 'DSI_LANE_ULPS_REQUEST_ASSERT', -} -DSI_LANE_ULPS_REQUEST_DEASSERT = 0 -DSI_LANE_ULPS_REQUEST_ASSERT = 1 -DSI_LANE_ULPS_REQUEST = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_LANE_ULPS_EXIT' -DSI_LANE_ULPS_EXIT__enumvalues = { - 0: 'DSI_LANE_ULPS_EXIT_DEASSERT', - 1: 'DSI_LANE_ULPS_EXIT_ASSERT', -} -DSI_LANE_ULPS_EXIT_DEASSERT = 0 -DSI_LANE_ULPS_EXIT_ASSERT = 1 -DSI_LANE_ULPS_EXIT = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_LANE_FORCE_TX_STOP' -DSI_LANE_FORCE_TX_STOP__enumvalues = { - 0: 'DSI_LANE_FORCE_TX_STOP_DEASSERT', - 1: 'DSI_LANE_FORCE_TX_STOP_ASSERT', -} -DSI_LANE_FORCE_TX_STOP_DEASSERT = 0 -DSI_LANE_FORCE_TX_STOP_ASSERT = 1 -DSI_LANE_FORCE_TX_STOP = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_CLOCK_LANE_HS_FORCE_REQUEST' -DSI_CLOCK_LANE_HS_FORCE_REQUEST__enumvalues = { - 0: 'DSI_CLOCK_LANE_HS_FORCE_REQUEST_DEASSERT', - 1: 'DSI_CLOCK_LANE_HS_FORCE_REQUEST_ASSERT', -} -DSI_CLOCK_LANE_HS_FORCE_REQUEST_DEASSERT = 0 -DSI_CLOCK_LANE_HS_FORCE_REQUEST_ASSERT = 1 -DSI_CLOCK_LANE_HS_FORCE_REQUEST = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_CONTROLLER_EN' -DSI_CONTROLLER_EN__enumvalues = { - 0: 'DSI_CONTROLLER_DISABLE', - 1: 'DSI_CONTROLLER_ENABLE', -} -DSI_CONTROLLER_DISABLE = 0 -DSI_CONTROLLER_ENABLE = 1 -DSI_CONTROLLER_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_VIDEO_MODE_EN' -DSI_VIDEO_MODE_EN__enumvalues = { - 0: 'DSI_VIDEO_MODE_DISABLE', - 1: 'DSI_VIDEO_MODE_ENABLE', -} -DSI_VIDEO_MODE_DISABLE = 0 -DSI_VIDEO_MODE_ENABLE = 1 -DSI_VIDEO_MODE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_CMD_MODE_EN' -DSI_CMD_MODE_EN__enumvalues = { - 0: 'DSI_CMD_MODE_DISABLE', - 1: 'DSI_CMD_MODE_ENABLE', -} -DSI_CMD_MODE_DISABLE = 0 -DSI_CMD_MODE_ENABLE = 1 -DSI_CMD_MODE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_DATA_LANE0_EN' -DSI_DATA_LANE0_EN__enumvalues = { - 0: 'DSI_DATA_LANE0_DISABLE', - 1: 'DSI_DATA_LANE0_ENABLE', -} -DSI_DATA_LANE0_DISABLE = 0 -DSI_DATA_LANE0_ENABLE = 1 -DSI_DATA_LANE0_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_DATA_LANE1_EN' -DSI_DATA_LANE1_EN__enumvalues = { - 0: 'DSI_DATA_LANE1_DISABLE', - 1: 'DSI_DATA_LANE1_ENABLE', -} -DSI_DATA_LANE1_DISABLE = 0 -DSI_DATA_LANE1_ENABLE = 1 -DSI_DATA_LANE1_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_DATA_LANE2_EN' -DSI_DATA_LANE2_EN__enumvalues = { - 0: 'DSI_DATA_LANE2_DISABLE', - 1: 'DSI_DATA_LANE2_ENABLE', -} -DSI_DATA_LANE2_DISABLE = 0 -DSI_DATA_LANE2_ENABLE = 1 -DSI_DATA_LANE2_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_DATA_LANE3_EN' -DSI_DATA_LANE3_EN__enumvalues = { - 0: 'DSI_DATA_LANE3_DISABLE', - 1: 'DSI_DATA_LANE3_ENABLE', -} -DSI_DATA_LANE3_DISABLE = 0 -DSI_DATA_LANE3_ENABLE = 1 -DSI_DATA_LANE3_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_CLOCK_LANE_EN' -DSI_CLOCK_LANE_EN__enumvalues = { - 0: 'DSI_CLOCK_LANE_DISABLE', - 1: 'DSI_CLOCK_LANE_ENABLE', -} -DSI_CLOCK_LANE_DISABLE = 0 -DSI_CLOCK_LANE_ENABLE = 1 -DSI_CLOCK_LANE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_PHY_DATA_LANE0_EN' -DSI_PHY_DATA_LANE0_EN__enumvalues = { - 0: 'DSI_PHY_DATA_LANE0_DISABLE', - 1: 'DSI_PHY_DATA_LANE0_ENABLE', -} -DSI_PHY_DATA_LANE0_DISABLE = 0 -DSI_PHY_DATA_LANE0_ENABLE = 1 -DSI_PHY_DATA_LANE0_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_PHY_DATA_LANE1_EN' -DSI_PHY_DATA_LANE1_EN__enumvalues = { - 0: 'DSI_PHY_DATA_LANE1_DISABLE', - 1: 'DSI_PHY_DATA_LANE1_ENABLE', -} -DSI_PHY_DATA_LANE1_DISABLE = 0 -DSI_PHY_DATA_LANE1_ENABLE = 1 -DSI_PHY_DATA_LANE1_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_PHY_DATA_LANE2_EN' -DSI_PHY_DATA_LANE2_EN__enumvalues = { - 0: 'DSI_PHY_DATA_LANE2_DISABLE', - 1: 'DSI_PHY_DATA_LANE2_ENABLE', -} -DSI_PHY_DATA_LANE2_DISABLE = 0 -DSI_PHY_DATA_LANE2_ENABLE = 1 -DSI_PHY_DATA_LANE2_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_PHY_DATA_LANE3_EN' -DSI_PHY_DATA_LANE3_EN__enumvalues = { - 0: 'DSI_PHY_DATA_LANE3_DISABLE', - 1: 'DSI_PHY_DATA_LANE3_ENABLE', -} -DSI_PHY_DATA_LANE3_DISABLE = 0 -DSI_PHY_DATA_LANE3_ENABLE = 1 -DSI_PHY_DATA_LANE3_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_RESET_DISPCLK' -DSI_RESET_DISPCLK__enumvalues = { - 0: 'DSI_NO_RESET_ON_DISPCLK_DOMAIN_LOGIC', - 1: 'DSI_RESET_ON_DISPCLK_DOMAIN_LOGIC', -} -DSI_NO_RESET_ON_DISPCLK_DOMAIN_LOGIC = 0 -DSI_RESET_ON_DISPCLK_DOMAIN_LOGIC = 1 -DSI_RESET_DISPCLK = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_RESET_DSICLK' -DSI_RESET_DSICLK__enumvalues = { - 0: 'DSI_NO_RESET_ON_DSICLK_DOMAIN_LOGIC', - 1: 'DSI_RESET_ON_DSICLK_DOMAIN_LOGIC', -} -DSI_NO_RESET_ON_DSICLK_DOMAIN_LOGIC = 0 -DSI_RESET_ON_DSICLK_DOMAIN_LOGIC = 1 -DSI_RESET_DSICLK = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_RESET_BYTECLK' -DSI_RESET_BYTECLK__enumvalues = { - 0: 'DSI_NO_RESET_ON_BYTECLK_DOMAIN_LOGIC', - 1: 'DSI_RESET_ON_BYTECLK_DOMAIN_LOGIC', -} -DSI_NO_RESET_ON_BYTECLK_DOMAIN_LOGIC = 0 -DSI_RESET_ON_BYTECLK_DOMAIN_LOGIC = 1 -DSI_RESET_BYTECLK = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_RESET_ESCCLK' -DSI_RESET_ESCCLK__enumvalues = { - 0: 'DSI_NO_RESET_ON_ESCCLK_DOMAIN_LOGIC', - 1: 'DSI_RESET_ON_ESCCLK_DOMAIN_LOGIC', -} -DSI_NO_RESET_ON_ESCCLK_DOMAIN_LOGIC = 0 -DSI_RESET_ON_ESCCLK_DOMAIN_LOGIC = 1 -DSI_RESET_ESCCLK = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_CRTC_SEL' -DSI_CRTC_SEL__enumvalues = { - 0: 'DSI_GET_PIXEL_STREAM_FROM_FMT0', - 1: 'DSI_GET_PIXEL_STREAM_FROM_FMT1', - 2: 'DSI_GET_PIXEL_STREAM_FROM_FMT2', - 3: 'DSI_GET_PIXEL_STREAM_FROM_FMT3', - 4: 'DSI_GET_PIXEL_STREAM_FROM_FMT4', - 5: 'DSI_GET_PIXEL_STREAM_FROM_FMT5', -} -DSI_GET_PIXEL_STREAM_FROM_FMT0 = 0 -DSI_GET_PIXEL_STREAM_FROM_FMT1 = 1 -DSI_GET_PIXEL_STREAM_FROM_FMT2 = 2 -DSI_GET_PIXEL_STREAM_FROM_FMT3 = 3 -DSI_GET_PIXEL_STREAM_FROM_FMT4 = 4 -DSI_GET_PIXEL_STREAM_FROM_FMT5 = 5 -DSI_CRTC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_PACKET_BYTE_MSB_LSB_FLIP' -DSI_PACKET_BYTE_MSB_LSB_FLIP__enumvalues = { - 0: 'DSI_PACKET_BYTE_MSB_LSB_FLIP_NO_SWAP', - 1: 'DSI_PACKET_BYTE_MSB_LSB_FLIP_SWAP', -} -DSI_PACKET_BYTE_MSB_LSB_FLIP_NO_SWAP = 0 -DSI_PACKET_BYTE_MSB_LSB_FLIP_SWAP = 1 -DSI_PACKET_BYTE_MSB_LSB_FLIP = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_VIDEO_MODE_DST_FORMAT' -DSI_VIDEO_MODE_DST_FORMAT__enumvalues = { - 0: 'DSI_VIDEO_DST_FORMAT_RGB565', - 1: 'DSI_VIDEO_DST_FORMAT_RGB666_PACKED', - 2: 'DSI_VIDEO_DST_FORMAT_RGB666_LOOSELY_PACKED', - 3: 'DSI_VIDEO_DST_FORMAT_RGB888', -} -DSI_VIDEO_DST_FORMAT_RGB565 = 0 -DSI_VIDEO_DST_FORMAT_RGB666_PACKED = 1 -DSI_VIDEO_DST_FORMAT_RGB666_LOOSELY_PACKED = 2 -DSI_VIDEO_DST_FORMAT_RGB888 = 3 -DSI_VIDEO_MODE_DST_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_VIDEO_TRAFFIC_MODE' -DSI_VIDEO_TRAFFIC_MODE__enumvalues = { - 0: 'DSI_TRAFFIC_MODE_SYNC_PULSES', - 1: 'DSI_TRAFFIC_MODE_SYNC_EVENTS', - 2: 'DSI_TRAFFIC_MODE_BURST', - 3: 'DSI_TRAFFIC_MODE_RESERVED', -} -DSI_TRAFFIC_MODE_SYNC_PULSES = 0 -DSI_TRAFFIC_MODE_SYNC_EVENTS = 1 -DSI_TRAFFIC_MODE_BURST = 2 -DSI_TRAFFIC_MODE_RESERVED = 3 -DSI_VIDEO_TRAFFIC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_VIDEO_BLLP_PWR_MODE' -DSI_VIDEO_BLLP_PWR_MODE__enumvalues = { - 0: 'DSI_VIDEO_BLLP_PWR_MODE_HS', - 1: 'DSI_VIDEO_BLLP_PWR_MODE_LP', -} -DSI_VIDEO_BLLP_PWR_MODE_HS = 0 -DSI_VIDEO_BLLP_PWR_MODE_LP = 1 -DSI_VIDEO_BLLP_PWR_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_VIDEO_EOF_BLLP_PWR_MODE' -DSI_VIDEO_EOF_BLLP_PWR_MODE__enumvalues = { - 0: 'DSI_VIDEO_EOF_BLLP_PWR_MODE_HS', - 1: 'DSI_VIDEO_EOF_BLLP_PWR_MODE_LP', -} -DSI_VIDEO_EOF_BLLP_PWR_MODE_HS = 0 -DSI_VIDEO_EOF_BLLP_PWR_MODE_LP = 1 -DSI_VIDEO_EOF_BLLP_PWR_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_VIDEO_PWR_MODE' -DSI_VIDEO_PWR_MODE__enumvalues = { - 0: 'DSI_VIDEO_PWR_MODE_HS', - 1: 'DSI_VIDEO_PWR_MODE_LP', -} -DSI_VIDEO_PWR_MODE_HS = 0 -DSI_VIDEO_PWR_MODE_LP = 1 -DSI_VIDEO_PWR_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_VIDEO_PULSE_MODE_OPT' -DSI_VIDEO_PULSE_MODE_OPT__enumvalues = { - 0: 'PULSE_MODE_OPT_NO_HSA', - 1: 'PULSE_MODE_OPT_SEND', -} -PULSE_MODE_OPT_NO_HSA = 0 -PULSE_MODE_OPT_SEND = 1 -DSI_VIDEO_PULSE_MODE_OPT = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_RGB_SWAP' -DSI_RGB_SWAP__enumvalues = { - 0: 'DSI_SWAP_RGB', - 1: 'DSI_SWAP_RBG', - 2: 'DSI_SWAP_BGR', - 3: 'DSI_SWAP_BRG', - 4: 'DSI_SWAP_GRB', - 5: 'DSI_SWAP_GBR', -} -DSI_SWAP_RGB = 0 -DSI_SWAP_RBG = 1 -DSI_SWAP_BGR = 2 -DSI_SWAP_BRG = 3 -DSI_SWAP_GRB = 4 -DSI_SWAP_GBR = 5 -DSI_RGB_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_CMD_PACKET_TYPE' -DSI_CMD_PACKET_TYPE__enumvalues = { - 0: 'DSI_CMD_PACKET_TYPE_SHORT', - 1: 'DSI_CMD_PACKET_TYPE_LONG', -} -DSI_CMD_PACKET_TYPE_SHORT = 0 -DSI_CMD_PACKET_TYPE_LONG = 1 -DSI_CMD_PACKET_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_CMD_PWR_MODE' -DSI_CMD_PWR_MODE__enumvalues = { - 0: 'DSI_CMD_PWR_MODE_HS', - 1: 'DSI_CMD_PWR_MODE_LP', -} -DSI_CMD_PWR_MODE_HS = 0 -DSI_CMD_PWR_MODE_LP = 1 -DSI_CMD_PWR_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_CMD_EMBEDDED_MODE' -DSI_CMD_EMBEDDED_MODE__enumvalues = { - 0: 'CMD_EMBEDDED_MODE_DISABLE', - 1: 'CMD_EMBEDDED_MODE_ENABLE', -} -CMD_EMBEDDED_MODE_DISABLE = 0 -CMD_EMBEDDED_MODE_ENABLE = 1 -DSI_CMD_EMBEDDED_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_CMD_ORDER' -DSI_CMD_ORDER__enumvalues = { - 0: 'DSI_CMD_ORDER_COMMAND_FIRST', - 1: 'DSI_CMD_ORDER_DATA_FIRST', -} -DSI_CMD_ORDER_COMMAND_FIRST = 0 -DSI_CMD_ORDER_DATA_FIRST = 1 -DSI_CMD_ORDER = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_DATA_BUFFER_ID' -DSI_DATA_BUFFER_ID__enumvalues = { - 0: 'DSI_DATA_BUFFER_OFFSET0', - 1: 'DSI_DATA_BUFFER_OFFSET1', -} -DSI_DATA_BUFFER_OFFSET0 = 0 -DSI_DATA_BUFFER_OFFSET1 = 1 -DSI_DATA_BUFFER_ID = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_DWORD_BYTE_SWAP' -DSI_DWORD_BYTE_SWAP__enumvalues = { - 0: 'DWORD_BYTE_SWAP_NO_SWAP', - 1: 'DWORD_BYTE_SWAP_BYTE_SWAP', - 2: 'DWORD_BYTE_SWAP_WORD_SWAP', - 3: 'DWORD_BYTE_SWAP_BOTH_SWAP', -} -DWORD_BYTE_SWAP_NO_SWAP = 0 -DWORD_BYTE_SWAP_BYTE_SWAP = 1 -DWORD_BYTE_SWAP_WORD_SWAP = 2 -DWORD_BYTE_SWAP_BOTH_SWAP = 3 -DSI_DWORD_BYTE_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_INSERT_DCS_COMMAND' -DSI_INSERT_DCS_COMMAND__enumvalues = { - 0: 'DSI_INSERT_DCS_COMMAND_DISABLE', - 1: 'DSI_INSERT_DCS_COMMAND_ENABLE', -} -DSI_INSERT_DCS_COMMAND_DISABLE = 0 -DSI_INSERT_DCS_COMMAND_ENABLE = 1 -DSI_INSERT_DCS_COMMAND = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_DMAFIFO_WRITE_WATERMARK' -DSI_DMAFIFO_WRITE_WATERMARK__enumvalues = { - 0: 'DSI_DMAFIFO_WRITE_WATERMARK_HALF', - 1: 'DSI_DMAFIFO_WRITE_WATERMARK_FOURTH', - 2: 'DSI_DMAFIFO_WRITE_WATERMARK_EIGHTH', - 3: 'DSI_DMAFIFO_WRITE_WATERMARK_SIXTEENTH', -} -DSI_DMAFIFO_WRITE_WATERMARK_HALF = 0 -DSI_DMAFIFO_WRITE_WATERMARK_FOURTH = 1 -DSI_DMAFIFO_WRITE_WATERMARK_EIGHTH = 2 -DSI_DMAFIFO_WRITE_WATERMARK_SIXTEENTH = 3 -DSI_DMAFIFO_WRITE_WATERMARK = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_DMAFIFO_READ_WATERMARK' -DSI_DMAFIFO_READ_WATERMARK__enumvalues = { - 0: 'DSI_DMAFIFO_READ_WATERMARK_HALF', - 1: 'DSI_DMAFIFO_READ_WATERMARK_FOURTH', - 2: 'DSI_DMAFIFO_READ_WATERMARK_EIGHTH', - 3: 'DSI_DMAFIFO_READ_WATERMARK_SIXTEENTH', -} -DSI_DMAFIFO_READ_WATERMARK_HALF = 0 -DSI_DMAFIFO_READ_WATERMARK_FOURTH = 1 -DSI_DMAFIFO_READ_WATERMARK_EIGHTH = 2 -DSI_DMAFIFO_READ_WATERMARK_SIXTEENTH = 3 -DSI_DMAFIFO_READ_WATERMARK = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_USE_DENG_LENGTH' -DSI_USE_DENG_LENGTH__enumvalues = { - 0: 'DSI_USE_DENG_LENGTH_DISABLE', - 1: 'DSI_USE_DENG_LENGTH_ENABLE', -} -DSI_USE_DENG_LENGTH_DISABLE = 0 -DSI_USE_DENG_LENGTH_ENABLE = 1 -DSI_USE_DENG_LENGTH = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_COMMAND_TRIGGER_MODE' -DSI_COMMAND_TRIGGER_MODE__enumvalues = { - 0: 'DSI_COMMAND_TRIGGER_MODE_AUTO', - 1: 'DSI_COMMAND_TRIGGER_MODE_MANUAL', -} -DSI_COMMAND_TRIGGER_MODE_AUTO = 0 -DSI_COMMAND_TRIGGER_MODE_MANUAL = 1 -DSI_COMMAND_TRIGGER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_COMMAND_TRIGGER_SEL' -DSI_COMMAND_TRIGGER_SEL__enumvalues = { - 0: 'DSI_COMMAND_TRIGGER_SEL_NONE', - 1: 'DSI_COMMAND_TRIGGER_SEL_CRTC', - 2: 'DSI_COMMAND_TRIGGER_SEL_TE', - 3: 'DSI_COMMAND_TRIGGER_SEL_HW', -} -DSI_COMMAND_TRIGGER_SEL_NONE = 0 -DSI_COMMAND_TRIGGER_SEL_CRTC = 1 -DSI_COMMAND_TRIGGER_SEL_TE = 2 -DSI_COMMAND_TRIGGER_SEL_HW = 3 -DSI_COMMAND_TRIGGER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_HW_SOURCE_SEL' -DSI_HW_SOURCE_SEL__enumvalues = { - 0: 'HW_SOURCE_SEL_NONE', - 1: 'HW_SOURCE_SEL_DSC_VUP', - 2: 'HW_SOURCE_SEL_DSC_VLP', - 3: 'HW_SOURCE_SEL_DSC_JPEG', -} -HW_SOURCE_SEL_NONE = 0 -HW_SOURCE_SEL_DSC_VUP = 1 -HW_SOURCE_SEL_DSC_VLP = 2 -HW_SOURCE_SEL_DSC_JPEG = 3 -DSI_HW_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_COMMAND_TRIGGER_ORDER' -DSI_COMMAND_TRIGGER_ORDER__enumvalues = { - 0: 'DSI_COMMAND_TRIGGER_ORDER_DMA', - 1: 'DSI_COMMAND_TRIGGER_ORDER_DENG', -} -DSI_COMMAND_TRIGGER_ORDER_DMA = 0 -DSI_COMMAND_TRIGGER_ORDER_DENG = 1 -DSI_COMMAND_TRIGGER_ORDER = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_TE_SRC_SEL' -DSI_TE_SRC_SEL__enumvalues = { - 0: 'DSI_TE_SEL_LINK', - 1: 'DSI_TE_SEL_PIN', -} -DSI_TE_SEL_LINK = 0 -DSI_TE_SEL_PIN = 1 -DSI_TE_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_EXT_TE_MUX' -DSI_EXT_TE_MUX__enumvalues = { - 0: 'DSI_XT_TE_MUX_LCDD17', - 1: 'DSI_XT_TE_MUX_DCLK', - 2: 'DSI_XT_TE_MUX_SS', - 3: 'DSI_XT_TE_MUX_GCLK', - 4: 'DSI_XT_TE_MUX_GOE', - 5: 'DSI_XT_TE_MUX_DINV', - 6: 'DSI_XT_TE_MUX_FRAME', - 7: 'DSI_XT_TE_MUX_GPIO4', - 8: 'DSI_XT_TE_MUX_GPIO5', -} -DSI_XT_TE_MUX_LCDD17 = 0 -DSI_XT_TE_MUX_DCLK = 1 -DSI_XT_TE_MUX_SS = 2 -DSI_XT_TE_MUX_GCLK = 3 -DSI_XT_TE_MUX_GOE = 4 -DSI_XT_TE_MUX_DINV = 5 -DSI_XT_TE_MUX_FRAME = 6 -DSI_XT_TE_MUX_GPIO4 = 7 -DSI_XT_TE_MUX_GPIO5 = 8 -DSI_EXT_TE_MUX = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_EXT_TE_MODE' -DSI_EXT_TE_MODE__enumvalues = { - 0: 'DSI_EXT_TE_MODE_VSYNC_EDGE', - 1: 'DSI_EXT_TE_MODE_VSYNC_WIDTH', - 2: 'DSI_EXT_TE_MODE_HVSYNC_EDGE', - 3: 'DSI_EXT_TE_MODE_HVSYNC_WIDTH', -} -DSI_EXT_TE_MODE_VSYNC_EDGE = 0 -DSI_EXT_TE_MODE_VSYNC_WIDTH = 1 -DSI_EXT_TE_MODE_HVSYNC_EDGE = 2 -DSI_EXT_TE_MODE_HVSYNC_WIDTH = 3 -DSI_EXT_TE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_EXT_RESET_POL' -DSI_EXT_RESET_POL__enumvalues = { - 0: 'DSI_EXT_RESET_POL_HIGH', - 1: 'DSI_EXT_RESET_POL_LOW', -} -DSI_EXT_RESET_POL_HIGH = 0 -DSI_EXT_RESET_POL_LOW = 1 -DSI_EXT_RESET_POL = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_EXT_TE_POL' -DSI_EXT_TE_POL__enumvalues = { - 0: 'DSI_EXT_TE_POL_RISING', - 1: 'DSI_EXT_TE_POL_FALLING', -} -DSI_EXT_TE_POL_RISING = 0 -DSI_EXT_TE_POL_FALLING = 1 -DSI_EXT_TE_POL = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_RESET_PANEL' -DSI_RESET_PANEL__enumvalues = { - 0: 'DSI_RESET_PANEL_DEASSERT', - 1: 'DSI_RESET_PANEL_ASSERT', -} -DSI_RESET_PANEL_DEASSERT = 0 -DSI_RESET_PANEL_ASSERT = 1 -DSI_RESET_PANEL = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_CRC_ENABLE' -DSI_CRC_ENABLE__enumvalues = { - 0: 'DSI_CRC_CAL_DISABLE', - 1: 'DSI_CRC_CAL_ENABLE', -} -DSI_CRC_CAL_DISABLE = 0 -DSI_CRC_CAL_ENABLE = 1 -DSI_CRC_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_TX_EOT_APPEND' -DSI_TX_EOT_APPEND__enumvalues = { - 0: 'DSI_TX_EOT_APPEND_DISABLE', - 1: 'DSI_TX_EOT_APPEND_ENABLE', -} -DSI_TX_EOT_APPEND_DISABLE = 0 -DSI_TX_EOT_APPEND_ENABLE = 1 -DSI_TX_EOT_APPEND = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_RX_EOT_IGNORE' -DSI_RX_EOT_IGNORE__enumvalues = { - 0: 'DSI_RX_EOT_IGNORE_DISABLE', - 1: 'DSI_RX_EOT_IGNORE_ENABLE', -} -DSI_RX_EOT_IGNORE_DISABLE = 0 -DSI_RX_EOT_IGNORE_ENABLE = 1 -DSI_RX_EOT_IGNORE = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_MIPI_BIST_RESET' -DSI_MIPI_BIST_RESET__enumvalues = { - 0: 'DSI_MIPI_BIST_RESET_DEASSERT', - 1: 'DSI_MIPI_BIST_RESET_ASSERT', -} -DSI_MIPI_BIST_RESET_DEASSERT = 0 -DSI_MIPI_BIST_RESET_ASSERT = 1 -DSI_MIPI_BIST_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_MIPI_BIST_VIDEO_FRMT' -DSI_MIPI_BIST_VIDEO_FRMT__enumvalues = { - 0: 'DSI_MIPI_BIST_VIDEO_FRMT_YUV422', - 1: 'DSI_MIPI_BIST_VIDEO_FRMT_RAW8', -} -DSI_MIPI_BIST_VIDEO_FRMT_YUV422 = 0 -DSI_MIPI_BIST_VIDEO_FRMT_RAW8 = 1 -DSI_MIPI_BIST_VIDEO_FRMT = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_MIPI_BIST_START' -DSI_MIPI_BIST_START__enumvalues = { - 0: 'DSI_MIPI_BIST_START_DEASSERT', - 1: 'DSI_MIPI_BIST_START_ASSERT', -} -DSI_MIPI_BIST_START_DEASSERT = 0 -DSI_MIPI_BIST_START_ASSERT = 1 -DSI_MIPI_BIST_START = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_DBG_CLK_SEL' -DSI_DBG_CLK_SEL__enumvalues = { - 0: 'DSI_TEST_CLK_SEL_DISPCLK_P', - 1: 'DSI_TEST_CLK_SEL_DISPCLK_G', - 2: 'DSI_TEST_CLK_SEL_DISPCLK_R', - 3: 'DSI_TEST_CLK_SEL_ESCCLK_G', - 4: 'DSI_TEST_CLK_SEL_BYTECLK_G', - 5: 'DSI_TEST_CLK_SEL_DSICLK_P', - 6: 'DSI_TEST_CLK_SEL_DSICLK_R', - 7: 'DSI_TEST_CLK_SEL_DSICLK_G', - 8: 'DSI_TEST_CLK_SEL_DSICLK_TRN', -} -DSI_TEST_CLK_SEL_DISPCLK_P = 0 -DSI_TEST_CLK_SEL_DISPCLK_G = 1 -DSI_TEST_CLK_SEL_DISPCLK_R = 2 -DSI_TEST_CLK_SEL_ESCCLK_G = 3 -DSI_TEST_CLK_SEL_BYTECLK_G = 4 -DSI_TEST_CLK_SEL_DSICLK_P = 5 -DSI_TEST_CLK_SEL_DSICLK_R = 6 -DSI_TEST_CLK_SEL_DSICLK_G = 7 -DSI_TEST_CLK_SEL_DSICLK_TRN = 8 -DSI_DBG_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_DENG_FIFO_USE_OVERWRITE_LEVEL' -DSI_DENG_FIFO_USE_OVERWRITE_LEVEL__enumvalues = { - 0: 'DSI_DENG_FIFO_LEVEL_OVERWRITE', - 1: 'DSI_DENG_FIFO_LEVEL_CAL_AVERAGE', -} -DSI_DENG_FIFO_LEVEL_OVERWRITE = 0 -DSI_DENG_FIFO_LEVEL_CAL_AVERAGE = 1 -DSI_DENG_FIFO_USE_OVERWRITE_LEVEL = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_DENG_FIFO_FORCE_RECAL_AVERAGE' -DSI_DENG_FIFO_FORCE_RECAL_AVERAGE__enumvalues = { - 0: 'DSI_DENG_FIFO_FORCE_RECAL_AVERAGE_DEASSERT', - 1: 'DSI_DENG_FIFO_FORCE_RECAL_AVERAGE_ASSERT', -} -DSI_DENG_FIFO_FORCE_RECAL_AVERAGE_DEASSERT = 0 -DSI_DENG_FIFO_FORCE_RECAL_AVERAGE_ASSERT = 1 -DSI_DENG_FIFO_FORCE_RECAL_AVERAGE = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_DENG_FIFO_FORCE_RECOMP_MINMAX' -DSI_DENG_FIFO_FORCE_RECOMP_MINMAX__enumvalues = { - 0: 'DSI_DENG_FIFO_FORCE_RECOMP_MINMAX_DEASSERT', - 1: 'DSI_DENG_FIFO_FORCE_RECOMP_MINMAX_ASSERT', -} -DSI_DENG_FIFO_FORCE_RECOMP_MINMAX_DEASSERT = 0 -DSI_DENG_FIFO_FORCE_RECOMP_MINMAX_ASSERT = 1 -DSI_DENG_FIFO_FORCE_RECOMP_MINMAX = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_DENG_FIFO_START' -DSI_DENG_FIFO_START__enumvalues = { - 0: 'DSI_DENG_FIFO_START_DEASSERT', - 1: 'DSI_DENG_FIFO_START_ASSERT', -} -DSI_DENG_FIFO_START_DEASSERT = 0 -DSI_DENG_FIFO_START_ASSERT = 1 -DSI_DENG_FIFO_START = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_USE_CMDFIFO' -DSI_USE_CMDFIFO__enumvalues = { - 0: 'DSI_CMD_USE_DMAFIFO', - 1: 'DSI_CMD_USE_CMDFIFO', -} -DSI_CMD_USE_DMAFIFO = 0 -DSI_CMD_USE_CMDFIFO = 1 -DSI_USE_CMDFIFO = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_CRTC_FREEZE_TRIG' -DSI_CRTC_FREEZE_TRIG__enumvalues = { - 0: 'DSI_CRTC_FREEZE_TRIG_DEASSERT', - 1: 'DSI_CRTC_FREEZE_TRIG_ASSERT', -} -DSI_CRTC_FREEZE_TRIG_DEASSERT = 0 -DSI_CRTC_FREEZE_TRIG_ASSERT = 1 -DSI_CRTC_FREEZE_TRIG = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_PERF_LATENCY_SEL' -DSI_PERF_LATENCY_SEL__enumvalues = { - 0: 'DSI_PERF_LATENCY_SEL_DATA_LANE0', - 1: 'DSI_PERF_LATENCY_SEL_DATA_LANE1', - 2: 'DSI_PERF_LATENCY_SEL_DATA_LANE2', - 3: 'DSI_PERF_LATENCY_SEL_DATA_LANE3', -} -DSI_PERF_LATENCY_SEL_DATA_LANE0 = 0 -DSI_PERF_LATENCY_SEL_DATA_LANE1 = 1 -DSI_PERF_LATENCY_SEL_DATA_LANE2 = 2 -DSI_PERF_LATENCY_SEL_DATA_LANE3 = 3 -DSI_PERF_LATENCY_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_DEBUG_DSICLK_SEL' -DSI_DEBUG_DSICLK_SEL__enumvalues = { - 0: 'DSI_DEBUG_DSICLK_SEL_VIDEO_ENGINE', - 1: 'DSI_DEBUG_DSICLK_SEL_CMD_ENGINE', - 2: 'DSI_DEBUG_DSICLK_SEL_RESYNC_FIFO', - 3: 'DSI_DEBUG_DSICLK_SEL_CMDFIFO', - 4: 'DSI_DEBUG_DSICLK_SEL_CMDBUFFER', - 5: 'DSI_DEBUG_DSICLK_SEL_AFIFO', - 6: 'DSI_DEBUG_DSICLK_SEL_LANECTRL', -} -DSI_DEBUG_DSICLK_SEL_VIDEO_ENGINE = 0 -DSI_DEBUG_DSICLK_SEL_CMD_ENGINE = 1 -DSI_DEBUG_DSICLK_SEL_RESYNC_FIFO = 2 -DSI_DEBUG_DSICLK_SEL_CMDFIFO = 3 -DSI_DEBUG_DSICLK_SEL_CMDBUFFER = 4 -DSI_DEBUG_DSICLK_SEL_AFIFO = 5 -DSI_DEBUG_DSICLK_SEL_LANECTRL = 6 -DSI_DEBUG_DSICLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DSI_DEBUG_BYTECLK_SEL' -DSI_DEBUG_BYTECLK_SEL__enumvalues = { - 0: 'DSI_DEBUG_BYTECLK_SEL_AFIFO', - 1: 'DSI_DEBUG_BYTECLK_SEL_LANEFIFO0', - 2: 'DSI_DEBUG_BYTECLK_SEL_LANEFIFO1', - 3: 'DSI_DEBUG_BYTECLK_SEL_LANEFIFO2', - 4: 'DSI_DEBUG_BYTECLK_SEL_LANEFIFO3', - 5: 'DSI_DEBUG_BYTECLK_SEL_LANEBUF0', - 6: 'DSI_DEBUG_BYTECLK_SEL_LANEBUF1', - 7: 'DSI_DEBUG_BYTECLK_SEL_LANEBUF2', - 8: 'DSI_DEBUG_BYTECLK_SEL_LANEBUF3', - 9: 'DSI_DEBUG_BYTECLK_SEL_PINGPONG0', - 10: 'DSI_DEBUG_BYTECLK_SEL_PINGPONG1', - 11: 'DSI_DEBUG_BYTECLK_SEL_PINGPING2', - 12: 'DSI_DEBUG_BYTECLK_SEL_PINGPING3', - 13: 'DSI_DEBUG_BYTECLK_SEL_EOT', - 14: 'DSI_DEBUG_BYTECLK_SEL_LANECTRL', -} -DSI_DEBUG_BYTECLK_SEL_AFIFO = 0 -DSI_DEBUG_BYTECLK_SEL_LANEFIFO0 = 1 -DSI_DEBUG_BYTECLK_SEL_LANEFIFO1 = 2 -DSI_DEBUG_BYTECLK_SEL_LANEFIFO2 = 3 -DSI_DEBUG_BYTECLK_SEL_LANEFIFO3 = 4 -DSI_DEBUG_BYTECLK_SEL_LANEBUF0 = 5 -DSI_DEBUG_BYTECLK_SEL_LANEBUF1 = 6 -DSI_DEBUG_BYTECLK_SEL_LANEBUF2 = 7 -DSI_DEBUG_BYTECLK_SEL_LANEBUF3 = 8 -DSI_DEBUG_BYTECLK_SEL_PINGPONG0 = 9 -DSI_DEBUG_BYTECLK_SEL_PINGPONG1 = 10 -DSI_DEBUG_BYTECLK_SEL_PINGPING2 = 11 -DSI_DEBUG_BYTECLK_SEL_PINGPING3 = 12 -DSI_DEBUG_BYTECLK_SEL_EOT = 13 -DSI_DEBUG_BYTECLK_SEL_LANECTRL = 14 -DSI_DEBUG_BYTECLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_HPD_SEL' -DCIOCHIP_HPD_SEL__enumvalues = { - 0: 'DCIOCHIP_HPD_SEL_ASYNC', - 1: 'DCIOCHIP_HPD_SEL_CLOCKED', -} -DCIOCHIP_HPD_SEL_ASYNC = 0 -DCIOCHIP_HPD_SEL_CLOCKED = 1 -DCIOCHIP_HPD_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_PAD_MODE' -DCIOCHIP_PAD_MODE__enumvalues = { - 0: 'DCIOCHIP_PAD_MODE_DDC', - 1: 'DCIOCHIP_PAD_MODE_DP', -} -DCIOCHIP_PAD_MODE_DDC = 0 -DCIOCHIP_PAD_MODE_DP = 1 -DCIOCHIP_PAD_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUXSLAVE_PAD_MODE' -DCIOCHIP_AUXSLAVE_PAD_MODE__enumvalues = { - 0: 'DCIOCHIP_AUXSLAVE_PAD_MODE_I2C', - 1: 'DCIOCHIP_AUXSLAVE_PAD_MODE_AUX', -} -DCIOCHIP_AUXSLAVE_PAD_MODE_I2C = 0 -DCIOCHIP_AUXSLAVE_PAD_MODE_AUX = 1 -DCIOCHIP_AUXSLAVE_PAD_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_INVERT' -DCIOCHIP_INVERT__enumvalues = { - 0: 'DCIOCHIP_POL_NON_INVERT', - 1: 'DCIOCHIP_POL_INVERT', -} -DCIOCHIP_POL_NON_INVERT = 0 -DCIOCHIP_POL_INVERT = 1 -DCIOCHIP_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_PD_EN' -DCIOCHIP_PD_EN__enumvalues = { - 0: 'DCIOCHIP_PD_EN_NOTALLOW', - 1: 'DCIOCHIP_PD_EN_ALLOW', -} -DCIOCHIP_PD_EN_NOTALLOW = 0 -DCIOCHIP_PD_EN_ALLOW = 1 -DCIOCHIP_PD_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_GPIO_MASK_EN' -DCIOCHIP_GPIO_MASK_EN__enumvalues = { - 0: 'DCIOCHIP_GPIO_MASK_EN_HARDWARE', - 1: 'DCIOCHIP_GPIO_MASK_EN_SOFTWARE', -} -DCIOCHIP_GPIO_MASK_EN_HARDWARE = 0 -DCIOCHIP_GPIO_MASK_EN_SOFTWARE = 1 -DCIOCHIP_GPIO_MASK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_MASK' -DCIOCHIP_MASK__enumvalues = { - 0: 'DCIOCHIP_MASK_DISABLE', - 1: 'DCIOCHIP_MASK_ENABLE', -} -DCIOCHIP_MASK_DISABLE = 0 -DCIOCHIP_MASK_ENABLE = 1 -DCIOCHIP_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_GPIO_I2C_MASK' -DCIOCHIP_GPIO_I2C_MASK__enumvalues = { - 0: 'DCIOCHIP_GPIO_I2C_MASK_DISABLE', - 1: 'DCIOCHIP_GPIO_I2C_MASK_ENABLE', -} -DCIOCHIP_GPIO_I2C_MASK_DISABLE = 0 -DCIOCHIP_GPIO_I2C_MASK_ENABLE = 1 -DCIOCHIP_GPIO_I2C_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_GPIO_I2C_DRIVE' -DCIOCHIP_GPIO_I2C_DRIVE__enumvalues = { - 0: 'DCIOCHIP_GPIO_I2C_DRIVE_LOW', - 1: 'DCIOCHIP_GPIO_I2C_DRIVE_HIGH', -} -DCIOCHIP_GPIO_I2C_DRIVE_LOW = 0 -DCIOCHIP_GPIO_I2C_DRIVE_HIGH = 1 -DCIOCHIP_GPIO_I2C_DRIVE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_GPIO_I2C_EN' -DCIOCHIP_GPIO_I2C_EN__enumvalues = { - 0: 'DCIOCHIP_GPIO_I2C_DISABLE', - 1: 'DCIOCHIP_GPIO_I2C_ENABLE', -} -DCIOCHIP_GPIO_I2C_DISABLE = 0 -DCIOCHIP_GPIO_I2C_ENABLE = 1 -DCIOCHIP_GPIO_I2C_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_MASK_4BIT' -DCIOCHIP_MASK_4BIT__enumvalues = { - 0: 'DCIOCHIP_MASK_4BIT_DISABLE', - 15: 'DCIOCHIP_MASK_4BIT_ENABLE', -} -DCIOCHIP_MASK_4BIT_DISABLE = 0 -DCIOCHIP_MASK_4BIT_ENABLE = 15 -DCIOCHIP_MASK_4BIT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_ENABLE_4BIT' -DCIOCHIP_ENABLE_4BIT__enumvalues = { - 0: 'DCIOCHIP_4BIT_DISABLE', - 15: 'DCIOCHIP_4BIT_ENABLE', -} -DCIOCHIP_4BIT_DISABLE = 0 -DCIOCHIP_4BIT_ENABLE = 15 -DCIOCHIP_ENABLE_4BIT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_MASK_5BIT' -DCIOCHIP_MASK_5BIT__enumvalues = { - 0: 'DCIOCHIP_MASIK_5BIT_DISABLE', - 31: 'DCIOCHIP_MASIK_5BIT_ENABLE', -} -DCIOCHIP_MASIK_5BIT_DISABLE = 0 -DCIOCHIP_MASIK_5BIT_ENABLE = 31 -DCIOCHIP_MASK_5BIT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_ENABLE_5BIT' -DCIOCHIP_ENABLE_5BIT__enumvalues = { - 0: 'DCIOCHIP_5BIT_DISABLE', - 31: 'DCIOCHIP_5BIT_ENABLE', -} -DCIOCHIP_5BIT_DISABLE = 0 -DCIOCHIP_5BIT_ENABLE = 31 -DCIOCHIP_ENABLE_5BIT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_MASK_2BIT' -DCIOCHIP_MASK_2BIT__enumvalues = { - 0: 'DCIOCHIP_MASK_2BIT_DISABLE', - 3: 'DCIOCHIP_MASK_2BIT_ENABLE', -} -DCIOCHIP_MASK_2BIT_DISABLE = 0 -DCIOCHIP_MASK_2BIT_ENABLE = 3 -DCIOCHIP_MASK_2BIT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_ENABLE_2BIT' -DCIOCHIP_ENABLE_2BIT__enumvalues = { - 0: 'DCIOCHIP_2BIT_DISABLE', - 3: 'DCIOCHIP_2BIT_ENABLE', -} -DCIOCHIP_2BIT_DISABLE = 0 -DCIOCHIP_2BIT_ENABLE = 3 -DCIOCHIP_ENABLE_2BIT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_REF_27_SRC_SEL' -DCIOCHIP_REF_27_SRC_SEL__enumvalues = { - 0: 'DCIOCHIP_REF_27_SRC_SEL_XTAL_DIVIDER', - 1: 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_DIVIDER', - 2: 'DCIOCHIP_REF_27_SRC_SEL_XTAL_BYPASS', - 3: 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_BYPASS', -} -DCIOCHIP_REF_27_SRC_SEL_XTAL_DIVIDER = 0 -DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_DIVIDER = 1 -DCIOCHIP_REF_27_SRC_SEL_XTAL_BYPASS = 2 -DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_BYPASS = 3 -DCIOCHIP_REF_27_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_DVO_VREFPON' -DCIOCHIP_DVO_VREFPON__enumvalues = { - 0: 'DCIOCHIP_DVO_VREFPON_DISABLE', - 1: 'DCIOCHIP_DVO_VREFPON_ENABLE', -} -DCIOCHIP_DVO_VREFPON_DISABLE = 0 -DCIOCHIP_DVO_VREFPON_ENABLE = 1 -DCIOCHIP_DVO_VREFPON = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_DVO_VREFSEL' -DCIOCHIP_DVO_VREFSEL__enumvalues = { - 0: 'DCIOCHIP_DVO_VREFSEL_ONCHIP', - 1: 'DCIOCHIP_DVO_VREFSEL_EXTERNAL', -} -DCIOCHIP_DVO_VREFSEL_ONCHIP = 0 -DCIOCHIP_DVO_VREFSEL_EXTERNAL = 1 -DCIOCHIP_DVO_VREFSEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_SPDIF1_IMODE' -DCIOCHIP_SPDIF1_IMODE__enumvalues = { - 0: 'DCIOCHIP_SPDIF1_IMODE_OE_A', - 1: 'DCIOCHIP_SPDIF1_IMODE_TSTE_TSTO', -} -DCIOCHIP_SPDIF1_IMODE_OE_A = 0 -DCIOCHIP_SPDIF1_IMODE_TSTE_TSTO = 1 -DCIOCHIP_SPDIF1_IMODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_FALLSLEWSEL' -DCIOCHIP_AUX_FALLSLEWSEL__enumvalues = { - 0: 'DCIOCHIP_AUX_FALLSLEWSEL_LOW', - 1: 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH0', - 2: 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH1', - 3: 'DCIOCHIP_AUX_FALLSLEWSEL_ULTRAHIGH', -} -DCIOCHIP_AUX_FALLSLEWSEL_LOW = 0 -DCIOCHIP_AUX_FALLSLEWSEL_HIGH0 = 1 -DCIOCHIP_AUX_FALLSLEWSEL_HIGH1 = 2 -DCIOCHIP_AUX_FALLSLEWSEL_ULTRAHIGH = 3 -DCIOCHIP_AUX_FALLSLEWSEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_SPIKESEL' -DCIOCHIP_AUX_SPIKESEL__enumvalues = { - 0: 'DCIOCHIP_AUX_SPIKESEL_50NS', - 1: 'DCIOCHIP_AUX_SPIKESEL_10NS', -} -DCIOCHIP_AUX_SPIKESEL_50NS = 0 -DCIOCHIP_AUX_SPIKESEL_10NS = 1 -DCIOCHIP_AUX_SPIKESEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_CSEL0P9' -DCIOCHIP_AUX_CSEL0P9__enumvalues = { - 0: 'DCIOCHIP_AUX_CSEL_DEC1P0', - 1: 'DCIOCHIP_AUX_CSEL_DEC0P9', -} -DCIOCHIP_AUX_CSEL_DEC1P0 = 0 -DCIOCHIP_AUX_CSEL_DEC0P9 = 1 -DCIOCHIP_AUX_CSEL0P9 = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_CSEL1P1' -DCIOCHIP_AUX_CSEL1P1__enumvalues = { - 0: 'DCIOCHIP_AUX_CSEL_INC1P0', - 1: 'DCIOCHIP_AUX_CSEL_INC1P1', -} -DCIOCHIP_AUX_CSEL_INC1P0 = 0 -DCIOCHIP_AUX_CSEL_INC1P1 = 1 -DCIOCHIP_AUX_CSEL1P1 = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_RSEL0P9' -DCIOCHIP_AUX_RSEL0P9__enumvalues = { - 0: 'DCIOCHIP_AUX_RSEL_DEC1P0', - 1: 'DCIOCHIP_AUX_RSEL_DEC0P9', -} -DCIOCHIP_AUX_RSEL_DEC1P0 = 0 -DCIOCHIP_AUX_RSEL_DEC0P9 = 1 -DCIOCHIP_AUX_RSEL0P9 = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_RSEL1P1' -DCIOCHIP_AUX_RSEL1P1__enumvalues = { - 0: 'DCIOCHIP_AUX_RSEL_INC1P0', - 1: 'DCIOCHIP_AUX_RSEL_INC1P1', -} -DCIOCHIP_AUX_RSEL_INC1P0 = 0 -DCIOCHIP_AUX_RSEL_INC1P1 = 1 -DCIOCHIP_AUX_RSEL1P1 = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL' -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE', -} -GENERIC_AZ_CONTROLLER_REGISTER_DISABLE = 0 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE = 1 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED' -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE_RESERVED', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_RESERVED', -} -GENERIC_AZ_CONTROLLER_REGISTER_DISABLE_RESERVED = 0 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_RESERVED = 1 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS' -GENERIC_AZ_CONTROLLER_REGISTER_STATUS__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET', -} -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET = 0 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET = 1 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED' -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET_RESERVED', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET_RESERVED', -} -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET_RESERVED = 0 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET_RESERVED = 1 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_GLOBAL_CAPABILITIES' -AZ_GLOBAL_CAPABILITIES__enumvalues = { - 0: 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_NOT_SUPPORTED', - 1: 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_SUPPORTED', -} -AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_NOT_SUPPORTED = 0 -AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_SUPPORTED = 1 -AZ_GLOBAL_CAPABILITIES = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE' -GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE__enumvalues = { - 0: 'ACCEPT_UNSOLICITED_RESPONSE_NOT_ENABLE', - 1: 'ACCEPT_UNSOLICITED_RESPONSE_ENABLE', -} -ACCEPT_UNSOLICITED_RESPONSE_NOT_ENABLE = 0 -ACCEPT_UNSOLICITED_RESPONSE_ENABLE = 1 -GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_CONTROL_FLUSH_CONTROL' -GLOBAL_CONTROL_FLUSH_CONTROL__enumvalues = { - 0: 'FLUSH_CONTROL_FLUSH_NOT_STARTED', - 1: 'FLUSH_CONTROL_FLUSH_STARTED', -} -FLUSH_CONTROL_FLUSH_NOT_STARTED = 0 -FLUSH_CONTROL_FLUSH_STARTED = 1 -GLOBAL_CONTROL_FLUSH_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_CONTROL_CONTROLLER_RESET' -GLOBAL_CONTROL_CONTROLLER_RESET__enumvalues = { - 0: 'CONTROLLER_RESET_AZ_CONTROLLER_IN_RESET', - 1: 'CONTROLLER_RESET_AZ_CONTROLLER_NOT_IN_RESET', -} -CONTROLLER_RESET_AZ_CONTROLLER_IN_RESET = 0 -CONTROLLER_RESET_AZ_CONTROLLER_NOT_IN_RESET = 1 -GLOBAL_CONTROL_CONTROLLER_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_STATE_CHANGE_STATUS' -AZ_STATE_CHANGE_STATUS__enumvalues = { - 0: 'AZ_STATE_CHANGE_STATUS_CODEC_NOT_PRESENT', - 1: 'AZ_STATE_CHANGE_STATUS_CODEC_PRESENT', -} -AZ_STATE_CHANGE_STATUS_CODEC_NOT_PRESENT = 0 -AZ_STATE_CHANGE_STATUS_CODEC_PRESENT = 1 -AZ_STATE_CHANGE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_STATUS_FLUSH_STATUS' -GLOBAL_STATUS_FLUSH_STATUS__enumvalues = { - 0: 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_NOT_ENDED', - 1: 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_ENDED', -} -GLOBAL_STATUS_FLUSH_STATUS_FLUSH_NOT_ENDED = 0 -GLOBAL_STATUS_FLUSH_STATUS_FLUSH_ENDED = 1 -GLOBAL_STATUS_FLUSH_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_0_SYNCHRONIZATION' -STREAM_0_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_0_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_0_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_0_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_0_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_0_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_1_SYNCHRONIZATION' -STREAM_1_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_1_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_1_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_1_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_1_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_1_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_2_SYNCHRONIZATION' -STREAM_2_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_2_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_2_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_2_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_2_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_2_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_3_SYNCHRONIZATION' -STREAM_3_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_3_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_3_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_3_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_3_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_3_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_4_SYNCHRONIZATION' -STREAM_4_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_4_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_4_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_4_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_4_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_4_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_5_SYNCHRONIZATION' -STREAM_5_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_5_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_5_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_5_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_5_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_5_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_6_SYNCHRONIZATION' -STREAM_6_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_6_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_6_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_6_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_6_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_6_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_7_SYNCHRONIZATION' -STREAM_7_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_7_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_7_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_7_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_7_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_7_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_8_SYNCHRONIZATION' -STREAM_8_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_8_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_8_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_8_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_8_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_8_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_9_SYNCHRONIZATION' -STREAM_9_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_9_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_9_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_9_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_9_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_9_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_10_SYNCHRONIZATION' -STREAM_10_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_10_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_10_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_10_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_10_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_10_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_11_SYNCHRONIZATION' -STREAM_11_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_11_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_11_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_11_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_11_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_11_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_12_SYNCHRONIZATION' -STREAM_12_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_12_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_12_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_12_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_12_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_12_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_13_SYNCHRONIZATION' -STREAM_13_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_13_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_13_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_13_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_13_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_13_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_14_SYNCHRONIZATION' -STREAM_14_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_14_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_14_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_14_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_14_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_14_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_15_SYNCHRONIZATION' -STREAM_15_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_15_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_15_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_15_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_15_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_15_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'CORB_READ_POINTER_RESET' -CORB_READ_POINTER_RESET__enumvalues = { - 0: 'CORB_READ_POINTER_RESET_CORB_DMA_IS_NOT_RESET', - 1: 'CORB_READ_POINTER_RESET_CORB_DMA_IS_RESET', -} -CORB_READ_POINTER_RESET_CORB_DMA_IS_NOT_RESET = 0 -CORB_READ_POINTER_RESET_CORB_DMA_IS_RESET = 1 -CORB_READ_POINTER_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_CORB_SIZE' -AZ_CORB_SIZE__enumvalues = { - 0: 'AZ_CORB_SIZE_2ENTRIES_RESERVED', - 1: 'AZ_CORB_SIZE_16ENTRIES_RESERVED', - 2: 'AZ_CORB_SIZE_256ENTRIES', - 3: 'AZ_CORB_SIZE_RESERVED', -} -AZ_CORB_SIZE_2ENTRIES_RESERVED = 0 -AZ_CORB_SIZE_16ENTRIES_RESERVED = 1 -AZ_CORB_SIZE_256ENTRIES = 2 -AZ_CORB_SIZE_RESERVED = 3 -AZ_CORB_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_RIRB_WRITE_POINTER_RESET' -AZ_RIRB_WRITE_POINTER_RESET__enumvalues = { - 0: 'AZ_RIRB_WRITE_POINTER_NOT_RESET', - 1: 'AZ_RIRB_WRITE_POINTER_DO_RESET', -} -AZ_RIRB_WRITE_POINTER_NOT_RESET = 0 -AZ_RIRB_WRITE_POINTER_DO_RESET = 1 -AZ_RIRB_WRITE_POINTER_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL' -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL__enumvalues = { - 0: 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 1: 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_ENABLED', -} -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_DISABLED = 0 -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_ENABLED = 1 -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL' -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL__enumvalues = { - 0: 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 1: 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_ENABLED', -} -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_DISABLED = 0 -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_ENABLED = 1 -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_RIRB_SIZE' -AZ_RIRB_SIZE__enumvalues = { - 0: 'AZ_RIRB_SIZE_2ENTRIES_RESERVED', - 1: 'AZ_RIRB_SIZE_16ENTRIES_RESERVED', - 2: 'AZ_RIRB_SIZE_256ENTRIES', - 3: 'AZ_RIRB_SIZE_UNDEFINED', -} -AZ_RIRB_SIZE_2ENTRIES_RESERVED = 0 -AZ_RIRB_SIZE_16ENTRIES_RESERVED = 1 -AZ_RIRB_SIZE_256ENTRIES = 2 -AZ_RIRB_SIZE_UNDEFINED = 3 -AZ_RIRB_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID' -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID__enumvalues = { - 0: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_NO_IMMEDIATE_RESPONSE_VALID', - 1: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_IMMEDIATE_RESPONSE_VALID', -} -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_NO_IMMEDIATE_RESPONSE_VALID = 0 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_IMMEDIATE_RESPONSE_VALID = 1 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID = ctypes.c_uint32 # enum - -# values for enumeration 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY' -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY__enumvalues = { - 0: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_NOT_BUSY', - 1: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_IS_BUSY', -} -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_NOT_BUSY = 0 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_IS_BUSY = 1 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY = ctypes.c_uint32 # enum - -# values for enumeration 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE' -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE__enumvalues = { - 0: 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_DISABLE', - 1: 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_ENABLE', -} -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_DISABLE = 0 -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_ENABLE = 1 -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1 = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2 = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4 = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 5: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 6: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 7: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1 = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3 = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED = 5 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED = 6 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED = 7 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 5: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16 = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20 = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24 = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED = 5 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 5: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 6: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 7: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 8: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1 = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2 = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3 = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4 = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5 = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6 = 5 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7 = 6 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8 = 7 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED = 8 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_IS_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_NOT_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_IS_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_NOT_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_NOT_ON', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_ON', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_NOT_ON = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_ON = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ZERO', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ONE', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ZERO = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ONE = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_NOT_ENABLE', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_ENABLE', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_NOT_ENABLE = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_ENABLE = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE' -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_SHUT_OFF', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_DRIVEN', -} -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_SHUT_OFF = 0 -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_DRIVEN = 1 -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE' -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', -} -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT' -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_NO_INFO_OR_PERMITTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_FORBIDDEN', -} -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_NO_INFO_OR_PERMITTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_FORBIDDEN = 1 -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET' -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET__enumvalues = { - 0: 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_NOT_RESET', - 1: 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_RESET_REFCLK_LOGIC', -} -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_NOT_RESET = 0 -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_RESET_REFCLK_LOGIC = 1 -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY' -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY__enumvalues = { - 0: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_ALL', - 1: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_6', - 2: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_5', - 3: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_4', - 4: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_3', - 5: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_2', - 6: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_1', - 7: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_0', -} -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_ALL = 0 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_6 = 1 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_5 = 2 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_4 = 3 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_3 = 4 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_2 = 5 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_1 = 6 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_0 = 7 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY = ctypes.c_uint32 # enum - -# values for enumeration 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY' -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY__enumvalues = { - 0: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_ALL', - 1: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_6', - 2: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_5', - 3: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_4', - 4: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_3', - 5: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_2', - 6: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_1', - 7: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_0', -} -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_ALL = 0 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_6 = 1 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_5 = 2 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_4 = 3 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_3 = 4 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_2 = 5 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_1 = 6 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_0 = 7 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1 = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2 = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4 = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 5: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 6: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 7: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1 = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3 = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED = 5 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED = 6 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED = 7 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 5: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16 = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20 = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24 = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED = 5 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 5: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 6: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 7: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 8: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1 = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2 = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3 = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4 = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5 = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6 = 5 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7 = 6 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8 = 7 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED = 8 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_SHUT_OFF', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_DRIVEN', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_SHUT_OFF = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_DRIVEN = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET' -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET__enumvalues = { - 0: 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_NOT_RESET', - 1: 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_DO_RESET', -} -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_NOT_RESET = 0 -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_DO_RESET = 1 -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'ENABLE' -ENABLE__enumvalues = { - 0: 'DISABLE_THE_FEATURE', - 1: 'ENABLE_THE_FEATURE', -} -DISABLE_THE_FEATURE = 0 -ENABLE_THE_FEATURE = 1 -ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'ENABLE_CLOCK' -ENABLE_CLOCK__enumvalues = { - 0: 'DISABLE_THE_CLOCK', - 1: 'ENABLE_THE_CLOCK', -} -DISABLE_THE_CLOCK = 0 -ENABLE_THE_CLOCK = 1 -ENABLE_CLOCK = ctypes.c_uint32 # enum - -# values for enumeration 'FORCE_VBI' -FORCE_VBI__enumvalues = { - 0: 'FORCE_VBI_LOW', - 1: 'FORCE_VBI_HIGH', -} -FORCE_VBI_LOW = 0 -FORCE_VBI_HIGH = 1 -FORCE_VBI = ctypes.c_uint32 # enum - -# values for enumeration 'OVERRIDE_CGTT_SCLK' -OVERRIDE_CGTT_SCLK__enumvalues = { - 0: 'OVERRIDE_CGTT_SCLK_NOOP', - 1: 'SET_OVERRIDE_CGTT_SCLK', -} -OVERRIDE_CGTT_SCLK_NOOP = 0 -SET_OVERRIDE_CGTT_SCLK = 1 -OVERRIDE_CGTT_SCLK = ctypes.c_uint32 # enum - -# values for enumeration 'CLEAR_SMU_INTR' -CLEAR_SMU_INTR__enumvalues = { - 0: 'SMU_INTR_STATUS_NOOP', - 1: 'SMU_INTR_STATUS_CLEAR', -} -SMU_INTR_STATUS_NOOP = 0 -SMU_INTR_STATUS_CLEAR = 1 -CLEAR_SMU_INTR = ctypes.c_uint32 # enum - -# values for enumeration 'STATIC_SCREEN_SMU_INTR' -STATIC_SCREEN_SMU_INTR__enumvalues = { - 0: 'STATIC_SCREEN_SMU_INTR_NOOP', - 1: 'SET_STATIC_SCREEN_SMU_INTR', -} -STATIC_SCREEN_SMU_INTR_NOOP = 0 -SET_STATIC_SCREEN_SMU_INTR = 1 -STATIC_SCREEN_SMU_INTR = ctypes.c_uint32 # enum - -# values for enumeration 'JITTER_REMOVE_DISABLE' -JITTER_REMOVE_DISABLE__enumvalues = { - 0: 'ENABLE_JITTER_REMOVAL', - 1: 'DISABLE_JITTER_REMOVAL', -} -ENABLE_JITTER_REMOVAL = 0 -DISABLE_JITTER_REMOVAL = 1 -JITTER_REMOVE_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DS_REF_SRC' -DS_REF_SRC__enumvalues = { - 0: 'DS_REF_IS_XTALIN', - 1: 'DS_REF_IS_EXT_GENLOCK', - 2: 'DS_REF_IS_PCIE', -} -DS_REF_IS_XTALIN = 0 -DS_REF_IS_EXT_GENLOCK = 1 -DS_REF_IS_PCIE = 2 -DS_REF_SRC = ctypes.c_uint32 # enum - -# values for enumeration 'DISABLE_CLOCK_GATING' -DISABLE_CLOCK_GATING__enumvalues = { - 0: 'CLOCK_GATING_ENABLED', - 1: 'CLOCK_GATING_DISABLED', -} -CLOCK_GATING_ENABLED = 0 -CLOCK_GATING_DISABLED = 1 -DISABLE_CLOCK_GATING = ctypes.c_uint32 # enum - -# values for enumeration 'DISABLE_CLOCK_GATING_IN_DCO' -DISABLE_CLOCK_GATING_IN_DCO__enumvalues = { - 0: 'CLOCK_GATING_ENABLED_IN_DCO', - 1: 'CLOCK_GATING_DISABLED_IN_DCO', -} -CLOCK_GATING_ENABLED_IN_DCO = 0 -CLOCK_GATING_DISABLED_IN_DCO = 1 -DISABLE_CLOCK_GATING_IN_DCO = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_DEEP_COLOR_CNTL' -DCCG_DEEP_COLOR_CNTL__enumvalues = { - 0: 'DCCG_DEEP_COLOR_DTO_DISABLE', - 1: 'DCCG_DEEP_COLOR_DTO_5_4_RATIO', - 2: 'DCCG_DEEP_COLOR_DTO_3_2_RATIO', - 3: 'DCCG_DEEP_COLOR_DTO_2_1_RATIO', -} -DCCG_DEEP_COLOR_DTO_DISABLE = 0 -DCCG_DEEP_COLOR_DTO_5_4_RATIO = 1 -DCCG_DEEP_COLOR_DTO_3_2_RATIO = 2 -DCCG_DEEP_COLOR_DTO_2_1_RATIO = 3 -DCCG_DEEP_COLOR_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'REFCLK_CLOCK_EN' -REFCLK_CLOCK_EN__enumvalues = { - 0: 'REFCLK_CLOCK_EN_XTALIN_CLK', - 1: 'REFCLK_CLOCK_EN_ALLOW_SRC_SEL', -} -REFCLK_CLOCK_EN_XTALIN_CLK = 0 -REFCLK_CLOCK_EN_ALLOW_SRC_SEL = 1 -REFCLK_CLOCK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'REFCLK_SRC_SEL' -REFCLK_SRC_SEL__enumvalues = { - 0: 'REFCLK_SRC_SEL_PCIE_REFCLK', - 1: 'REFCLK_SRC_SEL_CPL_REFCLK', -} -REFCLK_SRC_SEL_PCIE_REFCLK = 0 -REFCLK_SRC_SEL_CPL_REFCLK = 1 -REFCLK_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPREFCLK_SRC_SEL' -DPREFCLK_SRC_SEL__enumvalues = { - 0: 'DPREFCLK_SRC_SEL_CK', - 1: 'DPREFCLK_SRC_SEL_P0PLL', - 2: 'DPREFCLK_SRC_SEL_P1PLL', - 3: 'DPREFCLK_SRC_SEL_P2PLL', - 4: 'DPREFCLK_SRC_SEL_P3PLL', -} -DPREFCLK_SRC_SEL_CK = 0 -DPREFCLK_SRC_SEL_P0PLL = 1 -DPREFCLK_SRC_SEL_P1PLL = 2 -DPREFCLK_SRC_SEL_P2PLL = 3 -DPREFCLK_SRC_SEL_P3PLL = 4 -DPREFCLK_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'XTAL_REF_SEL' -XTAL_REF_SEL__enumvalues = { - 0: 'XTAL_REF_SEL_1X', - 1: 'XTAL_REF_SEL_2X', -} -XTAL_REF_SEL_1X = 0 -XTAL_REF_SEL_2X = 1 -XTAL_REF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'XTAL_REF_CLOCK_SOURCE_SEL' -XTAL_REF_CLOCK_SOURCE_SEL__enumvalues = { - 0: 'XTAL_REF_CLOCK_SOURCE_SEL_XTALIN', - 1: 'XTAL_REF_CLOCK_SOURCE_SEL_PPLL', -} -XTAL_REF_CLOCK_SOURCE_SEL_XTALIN = 0 -XTAL_REF_CLOCK_SOURCE_SEL_PPLL = 1 -XTAL_REF_CLOCK_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL' -MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL__enumvalues = { - 0: 'MICROSECOND_TIME_BASE_CLOCK_IS_XTALIN', - 1: 'MICROSECOND_TIME_BASE_CLOCK_IS_PPLL_REFCLK', -} -MICROSECOND_TIME_BASE_CLOCK_IS_XTALIN = 0 -MICROSECOND_TIME_BASE_CLOCK_IS_PPLL_REFCLK = 1 -MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'ALLOW_SR_ON_TRANS_REQ' -ALLOW_SR_ON_TRANS_REQ__enumvalues = { - 0: 'ALLOW_SR_ON_TRANS_REQ_ENABLE', - 1: 'ALLOW_SR_ON_TRANS_REQ_DISABLE', -} -ALLOW_SR_ON_TRANS_REQ_ENABLE = 0 -ALLOW_SR_ON_TRANS_REQ_DISABLE = 1 -ALLOW_SR_ON_TRANS_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL' -MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL__enumvalues = { - 0: 'MILLISECOND_TIME_BASE_CLOCK_IS_XTALIN', - 1: 'MILLISECOND_TIME_BASE_CLOCK_IS_PPLL_REFCLK', -} -MILLISECOND_TIME_BASE_CLOCK_IS_XTALIN = 0 -MILLISECOND_TIME_BASE_CLOCK_IS_PPLL_REFCLK = 1 -MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_PIXEL_RATE_SOURCE' -PIPE_PIXEL_RATE_SOURCE__enumvalues = { - 0: 'PIPE_PIXEL_RATE_SOURCE_P0PLL', - 1: 'PIPE_PIXEL_RATE_SOURCE_P1PLL', - 2: 'PIPE_PIXEL_RATE_SOURCE_P2PLL', -} -PIPE_PIXEL_RATE_SOURCE_P0PLL = 0 -PIPE_PIXEL_RATE_SOURCE_P1PLL = 1 -PIPE_PIXEL_RATE_SOURCE_P2PLL = 2 -PIPE_PIXEL_RATE_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_PHYPLL_PIXEL_RATE_SOURCE' -PIPE_PHYPLL_PIXEL_RATE_SOURCE__enumvalues = { - 0: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYA', - 1: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYB', - 2: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYC', - 3: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYD', - 4: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYE', - 5: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYF', - 6: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYG', -} -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYA = 0 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYB = 1 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYC = 2 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYD = 3 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYE = 4 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYF = 5 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYG = 6 -PIPE_PHYPLL_PIXEL_RATE_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_PIXEL_RATE_PLL_SOURCE' -PIPE_PIXEL_RATE_PLL_SOURCE__enumvalues = { - 0: 'PIPE_PIXEL_RATE_PLL_SOURCE_PHYPLL', - 1: 'PIPE_PIXEL_RATE_PLL_SOURCE_DISPPLL', -} -PIPE_PIXEL_RATE_PLL_SOURCE_PHYPLL = 0 -PIPE_PIXEL_RATE_PLL_SOURCE_DISPPLL = 1 -PIPE_PIXEL_RATE_PLL_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DTO_DS_DISABLE' -DP_DTO_DS_DISABLE__enumvalues = { - 0: 'DP_DTO_DESPREAD_DISABLE', - 1: 'DP_DTO_DESPREAD_ENABLE', -} -DP_DTO_DESPREAD_DISABLE = 0 -DP_DTO_DESPREAD_ENABLE = 1 -DP_DTO_DS_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_ADD_PIXEL' -CRTC_ADD_PIXEL__enumvalues = { - 0: 'CRTC_ADD_PIXEL_NOOP', - 1: 'CRTC_ADD_PIXEL_FORCE', -} -CRTC_ADD_PIXEL_NOOP = 0 -CRTC_ADD_PIXEL_FORCE = 1 -CRTC_ADD_PIXEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRTC_DROP_PIXEL' -CRTC_DROP_PIXEL__enumvalues = { - 0: 'CRTC_DROP_PIXEL_NOOP', - 1: 'CRTC_DROP_PIXEL_FORCE', -} -CRTC_DROP_PIXEL_NOOP = 0 -CRTC_DROP_PIXEL_FORCE = 1 -CRTC_DROP_PIXEL = ctypes.c_uint32 # enum - -# values for enumeration 'SYMCLK_FE_FORCE_EN' -SYMCLK_FE_FORCE_EN__enumvalues = { - 0: 'SYMCLK_FE_FORCE_EN_DISABLE', - 1: 'SYMCLK_FE_FORCE_EN_ENABLE', -} -SYMCLK_FE_FORCE_EN_DISABLE = 0 -SYMCLK_FE_FORCE_EN_ENABLE = 1 -SYMCLK_FE_FORCE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'SYMCLK_FE_FORCE_SRC' -SYMCLK_FE_FORCE_SRC__enumvalues = { - 0: 'SYMCLK_FE_FORCE_SRC_UNIPHYA', - 1: 'SYMCLK_FE_FORCE_SRC_UNIPHYB', - 2: 'SYMCLK_FE_FORCE_SRC_UNIPHYC', - 3: 'SYMCLK_FE_FORCE_SRC_UNIPHYD', - 4: 'SYMCLK_FE_FORCE_SRC_UNIPHYE', - 5: 'SYMCLK_FE_FORCE_SRC_UNIPHYF', - 6: 'SYMCLK_FE_FORCE_SRC_UNIPHYG', -} -SYMCLK_FE_FORCE_SRC_UNIPHYA = 0 -SYMCLK_FE_FORCE_SRC_UNIPHYB = 1 -SYMCLK_FE_FORCE_SRC_UNIPHYC = 2 -SYMCLK_FE_FORCE_SRC_UNIPHYD = 3 -SYMCLK_FE_FORCE_SRC_UNIPHYE = 4 -SYMCLK_FE_FORCE_SRC_UNIPHYF = 5 -SYMCLK_FE_FORCE_SRC_UNIPHYG = 6 -SYMCLK_FE_FORCE_SRC = ctypes.c_uint32 # enum - -# values for enumeration 'DPDBG_CLK_FORCE_EN' -DPDBG_CLK_FORCE_EN__enumvalues = { - 0: 'DPDBG_CLK_FORCE_EN_DISABLE', - 1: 'DPDBG_CLK_FORCE_EN_ENABLE', -} -DPDBG_CLK_FORCE_EN_DISABLE = 0 -DPDBG_CLK_FORCE_EN_ENABLE = 1 -DPDBG_CLK_FORCE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLK_COARSE_SKEW_CNTL' -DVOACLK_COARSE_SKEW_CNTL__enumvalues = { - 0: 'DVOACLK_COARSE_SKEW_CNTL_NO_ADJUSTMENT', - 1: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_1_STEP', - 2: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_2_STEPS', - 3: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_3_STEPS', - 4: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_4_STEPS', - 5: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_5_STEPS', - 6: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_6_STEPS', - 7: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_7_STEPS', - 8: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_8_STEPS', - 9: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_9_STEPS', - 10: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_10_STEPS', - 11: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_11_STEPS', - 12: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_12_STEPS', - 13: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_13_STEPS', - 14: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_14_STEPS', - 15: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_15_STEPS', - 16: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_1_STEP', - 17: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_2_STEPS', - 18: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_3_STEPS', - 19: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_4_STEPS', - 20: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_5_STEPS', - 21: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_6_STEPS', - 22: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_7_STEPS', - 23: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_8_STEPS', - 24: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_9_STEPS', - 25: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_10_STEPS', - 26: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_11_STEPS', - 27: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_12_STEPS', - 28: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_13_STEPS', - 29: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_14_STEPS', - 30: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_15_STEPS', -} -DVOACLK_COARSE_SKEW_CNTL_NO_ADJUSTMENT = 0 -DVOACLK_COARSE_SKEW_CNTL_DELAY_1_STEP = 1 -DVOACLK_COARSE_SKEW_CNTL_DELAY_2_STEPS = 2 -DVOACLK_COARSE_SKEW_CNTL_DELAY_3_STEPS = 3 -DVOACLK_COARSE_SKEW_CNTL_DELAY_4_STEPS = 4 -DVOACLK_COARSE_SKEW_CNTL_DELAY_5_STEPS = 5 -DVOACLK_COARSE_SKEW_CNTL_DELAY_6_STEPS = 6 -DVOACLK_COARSE_SKEW_CNTL_DELAY_7_STEPS = 7 -DVOACLK_COARSE_SKEW_CNTL_DELAY_8_STEPS = 8 -DVOACLK_COARSE_SKEW_CNTL_DELAY_9_STEPS = 9 -DVOACLK_COARSE_SKEW_CNTL_DELAY_10_STEPS = 10 -DVOACLK_COARSE_SKEW_CNTL_DELAY_11_STEPS = 11 -DVOACLK_COARSE_SKEW_CNTL_DELAY_12_STEPS = 12 -DVOACLK_COARSE_SKEW_CNTL_DELAY_13_STEPS = 13 -DVOACLK_COARSE_SKEW_CNTL_DELAY_14_STEPS = 14 -DVOACLK_COARSE_SKEW_CNTL_DELAY_15_STEPS = 15 -DVOACLK_COARSE_SKEW_CNTL_EARLY_1_STEP = 16 -DVOACLK_COARSE_SKEW_CNTL_EARLY_2_STEPS = 17 -DVOACLK_COARSE_SKEW_CNTL_EARLY_3_STEPS = 18 -DVOACLK_COARSE_SKEW_CNTL_EARLY_4_STEPS = 19 -DVOACLK_COARSE_SKEW_CNTL_EARLY_5_STEPS = 20 -DVOACLK_COARSE_SKEW_CNTL_EARLY_6_STEPS = 21 -DVOACLK_COARSE_SKEW_CNTL_EARLY_7_STEPS = 22 -DVOACLK_COARSE_SKEW_CNTL_EARLY_8_STEPS = 23 -DVOACLK_COARSE_SKEW_CNTL_EARLY_9_STEPS = 24 -DVOACLK_COARSE_SKEW_CNTL_EARLY_10_STEPS = 25 -DVOACLK_COARSE_SKEW_CNTL_EARLY_11_STEPS = 26 -DVOACLK_COARSE_SKEW_CNTL_EARLY_12_STEPS = 27 -DVOACLK_COARSE_SKEW_CNTL_EARLY_13_STEPS = 28 -DVOACLK_COARSE_SKEW_CNTL_EARLY_14_STEPS = 29 -DVOACLK_COARSE_SKEW_CNTL_EARLY_15_STEPS = 30 -DVOACLK_COARSE_SKEW_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLK_FINE_SKEW_CNTL' -DVOACLK_FINE_SKEW_CNTL__enumvalues = { - 0: 'DVOACLK_FINE_SKEW_CNTL_NO_ADJUSTMENT', - 1: 'DVOACLK_FINE_SKEW_CNTL_DELAY_1_STEP', - 2: 'DVOACLK_FINE_SKEW_CNTL_DELAY_2_STEPS', - 3: 'DVOACLK_FINE_SKEW_CNTL_DELAY_3_STEPS', - 4: 'DVOACLK_FINE_SKEW_CNTL_EARLY_1_STEP', - 5: 'DVOACLK_FINE_SKEW_CNTL_EARLY_2_STEPS', - 6: 'DVOACLK_FINE_SKEW_CNTL_EARLY_3_STEPS', - 7: 'DVOACLK_FINE_SKEW_CNTL_EARLY_4_STEPS', -} -DVOACLK_FINE_SKEW_CNTL_NO_ADJUSTMENT = 0 -DVOACLK_FINE_SKEW_CNTL_DELAY_1_STEP = 1 -DVOACLK_FINE_SKEW_CNTL_DELAY_2_STEPS = 2 -DVOACLK_FINE_SKEW_CNTL_DELAY_3_STEPS = 3 -DVOACLK_FINE_SKEW_CNTL_EARLY_1_STEP = 4 -DVOACLK_FINE_SKEW_CNTL_EARLY_2_STEPS = 5 -DVOACLK_FINE_SKEW_CNTL_EARLY_3_STEPS = 6 -DVOACLK_FINE_SKEW_CNTL_EARLY_4_STEPS = 7 -DVOACLK_FINE_SKEW_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLKD_IN_PHASE' -DVOACLKD_IN_PHASE__enumvalues = { - 0: 'DVOACLKD_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', - 1: 'DVOACLKD_IN_PHASE_WITH_PCLK_DVO', -} -DVOACLKD_IN_OPPOSITE_PHASE_WITH_PCLK_DVO = 0 -DVOACLKD_IN_PHASE_WITH_PCLK_DVO = 1 -DVOACLKD_IN_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLKC_IN_PHASE' -DVOACLKC_IN_PHASE__enumvalues = { - 0: 'DVOACLKC_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', - 1: 'DVOACLKC_IN_PHASE_WITH_PCLK_DVO', -} -DVOACLKC_IN_OPPOSITE_PHASE_WITH_PCLK_DVO = 0 -DVOACLKC_IN_PHASE_WITH_PCLK_DVO = 1 -DVOACLKC_IN_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLKC_MVP_IN_PHASE' -DVOACLKC_MVP_IN_PHASE__enumvalues = { - 0: 'DVOACLKC_MVP_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', - 1: 'DVOACLKC_MVP_IN_PHASE_WITH_PCLK_DVO', -} -DVOACLKC_MVP_IN_OPPOSITE_PHASE_WITH_PCLK_DVO = 0 -DVOACLKC_MVP_IN_PHASE_WITH_PCLK_DVO = 1 -DVOACLKC_MVP_IN_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE' -DVOACLKC_MVP_SKEW_PHASE_OVERRIDE__enumvalues = { - 0: 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_DISABLE', - 1: 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_ENABLE', -} -DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_DISABLE = 0 -DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_ENABLE = 1 -DVOACLKC_MVP_SKEW_PHASE_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'MVP_CLK_SRC_SEL' -MVP_CLK_SRC_SEL__enumvalues = { - 0: 'MVP_CLK_SRC_SEL_RSRV', - 1: 'MVP_CLK_SRC_SEL_IO_1', - 2: 'MVP_CLK_SRC_SEL_IO_2', - 3: 'MVP_CLK_SRC_SEL_REFCLK', -} -MVP_CLK_SRC_SEL_RSRV = 0 -MVP_CLK_SRC_SEL_IO_1 = 1 -MVP_CLK_SRC_SEL_IO_2 = 2 -MVP_CLK_SRC_SEL_REFCLK = 3 -MVP_CLK_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO0_SOURCE_SEL' -DCCG_AUDIO_DTO0_SOURCE_SEL__enumvalues = { - 0: 'DCCG_AUDIO_DTO0_SOURCE_SEL_CRTC0', - 1: 'DCCG_AUDIO_DTO0_SOURCE_SEL_CRTC1', - 2: 'DCCG_AUDIO_DTO0_SOURCE_SEL_CRTC2', - 3: 'DCCG_AUDIO_DTO0_SOURCE_SEL_CRTC3', - 4: 'DCCG_AUDIO_DTO0_SOURCE_SEL_CRTC4', - 5: 'DCCG_AUDIO_DTO0_SOURCE_SEL_CRTC5', - 6: 'DCCG_AUDIO_DTO0_SOURCE_SEL_RESERVED', -} -DCCG_AUDIO_DTO0_SOURCE_SEL_CRTC0 = 0 -DCCG_AUDIO_DTO0_SOURCE_SEL_CRTC1 = 1 -DCCG_AUDIO_DTO0_SOURCE_SEL_CRTC2 = 2 -DCCG_AUDIO_DTO0_SOURCE_SEL_CRTC3 = 3 -DCCG_AUDIO_DTO0_SOURCE_SEL_CRTC4 = 4 -DCCG_AUDIO_DTO0_SOURCE_SEL_CRTC5 = 5 -DCCG_AUDIO_DTO0_SOURCE_SEL_RESERVED = 6 -DCCG_AUDIO_DTO0_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO_SEL' -DCCG_AUDIO_DTO_SEL__enumvalues = { - 0: 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO0', - 1: 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO1', - 2: 'DCCG_AUDIO_DTO_SEL_NO_AUDIO_DTO', -} -DCCG_AUDIO_DTO_SEL_AUDIO_DTO0 = 0 -DCCG_AUDIO_DTO_SEL_AUDIO_DTO1 = 1 -DCCG_AUDIO_DTO_SEL_NO_AUDIO_DTO = 2 -DCCG_AUDIO_DTO_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO2_SOURCE_SEL' -DCCG_AUDIO_DTO2_SOURCE_SEL__enumvalues = { - 0: 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0', - 1: 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK1', -} -DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0 = 0 -DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK1 = 1 -DCCG_AUDIO_DTO2_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO_USE_512FBR_DTO' -DCCG_AUDIO_DTO_USE_512FBR_DTO__enumvalues = { - 0: 'DCCG_AUDIO_DTO_USE_128FBR_FOR_DP', - 1: 'DCCG_AUDIO_DTO_USE_512FBR_FOR_DP', -} -DCCG_AUDIO_DTO_USE_128FBR_FOR_DP = 0 -DCCG_AUDIO_DTO_USE_512FBR_FOR_DP = 1 -DCCG_AUDIO_DTO_USE_512FBR_DTO = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_DBG_EN' -DCCG_DBG_EN__enumvalues = { - 0: 'DCCG_DBG_EN_DISABLE', - 1: 'DCCG_DBG_EN_ENABLE', -} -DCCG_DBG_EN_DISABLE = 0 -DCCG_DBG_EN_ENABLE = 1 -DCCG_DBG_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_DBG_BLOCK_SEL' -DCCG_DBG_BLOCK_SEL__enumvalues = { - 0: 'DCCG_DBG_BLOCK_SEL_DCCG', - 1: 'DCCG_DBG_BLOCK_SEL_PMON', - 2: 'DCCG_DBG_BLOCK_SEL_PMON2', -} -DCCG_DBG_BLOCK_SEL_DCCG = 0 -DCCG_DBG_BLOCK_SEL_PMON = 1 -DCCG_DBG_BLOCK_SEL_PMON2 = 2 -DCCG_DBG_BLOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DISPCLK_FREQ_RAMP_DONE' -DISPCLK_FREQ_RAMP_DONE__enumvalues = { - 0: 'DISPCLK_FREQ_RAMP_IN_PROGRESS', - 1: 'DISPCLK_FREQ_RAMP_COMPLETED', -} -DISPCLK_FREQ_RAMP_IN_PROGRESS = 0 -DISPCLK_FREQ_RAMP_COMPLETED = 1 -DISPCLK_FREQ_RAMP_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_FIFO_ERRDET_RESET' -DCCG_FIFO_ERRDET_RESET__enumvalues = { - 0: 'DCCG_FIFO_ERRDET_RESET_NOOP', - 1: 'DCCG_FIFO_ERRDET_RESET_FORCE', -} -DCCG_FIFO_ERRDET_RESET_NOOP = 0 -DCCG_FIFO_ERRDET_RESET_FORCE = 1 -DCCG_FIFO_ERRDET_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_FIFO_ERRDET_STATE' -DCCG_FIFO_ERRDET_STATE__enumvalues = { - 0: 'DCCG_FIFO_ERRDET_STATE_DETECTION', - 1: 'DCCG_FIFO_ERRDET_STATE_CALIBRATION', -} -DCCG_FIFO_ERRDET_STATE_DETECTION = 0 -DCCG_FIFO_ERRDET_STATE_CALIBRATION = 1 -DCCG_FIFO_ERRDET_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_FIFO_ERRDET_OVR_EN' -DCCG_FIFO_ERRDET_OVR_EN__enumvalues = { - 0: 'DCCG_FIFO_ERRDET_OVR_DISABLE', - 1: 'DCCG_FIFO_ERRDET_OVR_ENABLE', -} -DCCG_FIFO_ERRDET_OVR_DISABLE = 0 -DCCG_FIFO_ERRDET_OVR_ENABLE = 1 -DCCG_FIFO_ERRDET_OVR_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DISPCLK_CHG_FWD_CORR_DISABLE' -DISPCLK_CHG_FWD_CORR_DISABLE__enumvalues = { - 0: 'DISPCLK_CHG_FWD_CORR_ENABLE_AT_BEGINNING', - 1: 'DISPCLK_CHG_FWD_CORR_DISABLE_AT_BEGINNING', -} -DISPCLK_CHG_FWD_CORR_ENABLE_AT_BEGINNING = 0 -DISPCLK_CHG_FWD_CORR_DISABLE_AT_BEGINNING = 1 -DISPCLK_CHG_FWD_CORR_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DC_MEM_GLOBAL_PWR_REQ_DIS' -DC_MEM_GLOBAL_PWR_REQ_DIS__enumvalues = { - 0: 'DC_MEM_GLOBAL_PWR_REQ_ENABLE', - 1: 'DC_MEM_GLOBAL_PWR_REQ_DISABLE', -} -DC_MEM_GLOBAL_PWR_REQ_ENABLE = 0 -DC_MEM_GLOBAL_PWR_REQ_DISABLE = 1 -DC_MEM_GLOBAL_PWR_REQ_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_RUN' -DCCG_PERF_RUN__enumvalues = { - 0: 'DCCG_PERF_RUN_NOOP', - 1: 'DCCG_PERF_RUN_START', -} -DCCG_PERF_RUN_NOOP = 0 -DCCG_PERF_RUN_START = 1 -DCCG_PERF_RUN = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_MODE_VSYNC' -DCCG_PERF_MODE_VSYNC__enumvalues = { - 0: 'DCCG_PERF_MODE_VSYNC_NOOP', - 1: 'DCCG_PERF_MODE_VSYNC_START', -} -DCCG_PERF_MODE_VSYNC_NOOP = 0 -DCCG_PERF_MODE_VSYNC_START = 1 -DCCG_PERF_MODE_VSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_MODE_HSYNC' -DCCG_PERF_MODE_HSYNC__enumvalues = { - 0: 'DCCG_PERF_MODE_HSYNC_NOOP', - 1: 'DCCG_PERF_MODE_HSYNC_START', -} -DCCG_PERF_MODE_HSYNC_NOOP = 0 -DCCG_PERF_MODE_HSYNC_START = 1 -DCCG_PERF_MODE_HSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_CRTC_SELECT' -DCCG_PERF_CRTC_SELECT__enumvalues = { - 0: 'DCCG_PERF_SEL_CRTC0', - 1: 'DCCG_PERF_SEL_CRTC1', - 2: 'DCCG_PERF_SEL_CRTC2', - 3: 'DCCG_PERF_SEL_CRTC3', - 4: 'DCCG_PERF_SEL_CRTC4', - 5: 'DCCG_PERF_SEL_CRTC5', -} -DCCG_PERF_SEL_CRTC0 = 0 -DCCG_PERF_SEL_CRTC1 = 1 -DCCG_PERF_SEL_CRTC2 = 2 -DCCG_PERF_SEL_CRTC3 = 3 -DCCG_PERF_SEL_CRTC4 = 4 -DCCG_PERF_SEL_CRTC5 = 5 -DCCG_PERF_CRTC_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'CLOCK_BRANCH_SOFT_RESET' -CLOCK_BRANCH_SOFT_RESET__enumvalues = { - 0: 'CLOCK_BRANCH_SOFT_RESET_NOOP', - 1: 'CLOCK_BRANCH_SOFT_RESET_FORCE', -} -CLOCK_BRANCH_SOFT_RESET_NOOP = 0 -CLOCK_BRANCH_SOFT_RESET_FORCE = 1 -CLOCK_BRANCH_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'PLL_CFG_IF_SOFT_RESET' -PLL_CFG_IF_SOFT_RESET__enumvalues = { - 0: 'PLL_CFG_IF_SOFT_RESET_NOOP', - 1: 'PLL_CFG_IF_SOFT_RESET_FORCE', -} -PLL_CFG_IF_SOFT_RESET_NOOP = 0 -PLL_CFG_IF_SOFT_RESET_FORCE = 1 -PLL_CFG_IF_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DVO_ENABLE_RST' -DVO_ENABLE_RST__enumvalues = { - 0: 'DVO_ENABLE_RST_DISABLE', - 1: 'DVO_ENABLE_RST_ENABLE', -} -DVO_ENABLE_RST_DISABLE = 0 -DVO_ENABLE_RST_ENABLE = 1 -DVO_ENABLE_RST = ctypes.c_uint32 # enum - -# values for enumeration 'LptNumPipes' -LptNumPipes__enumvalues = { - 0: 'LPT_NUM_PIPES_1CH', - 1: 'LPT_NUM_PIPES_2CH', - 2: 'LPT_NUM_PIPES_4CH', - 3: 'LPT_NUM_PIPES_8CH', -} -LPT_NUM_PIPES_1CH = 0 -LPT_NUM_PIPES_2CH = 1 -LPT_NUM_PIPES_4CH = 2 -LPT_NUM_PIPES_8CH = 3 -LptNumPipes = ctypes.c_uint32 # enum - -# values for enumeration 'LptNumBanks' -LptNumBanks__enumvalues = { - 0: 'LPT_NUM_BANKS_2BANK', - 1: 'LPT_NUM_BANKS_4BANK', - 2: 'LPT_NUM_BANKS_8BANK', - 3: 'LPT_NUM_BANKS_16BANK', - 4: 'LPT_NUM_BANKS_32BANK', -} -LPT_NUM_BANKS_2BANK = 0 -LPT_NUM_BANKS_4BANK = 1 -LPT_NUM_BANKS_8BANK = 2 -LPT_NUM_BANKS_16BANK = 3 -LPT_NUM_BANKS_32BANK = 4 -LptNumBanks = ctypes.c_uint32 # enum - -# values for enumeration 'OVERRIDE_CGTT_DCEFCLK' -OVERRIDE_CGTT_DCEFCLK__enumvalues = { - 0: 'OVERRIDE_CGTT_DCEFCLK_NOOP', - 1: 'SET_OVERRIDE_CGTT_DCEFCLK', -} -OVERRIDE_CGTT_DCEFCLK_NOOP = 0 -SET_OVERRIDE_CGTT_DCEFCLK = 1 -OVERRIDE_CGTT_DCEFCLK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERICA_SEL' -DCIO_DC_GENERICA_SEL__enumvalues = { - 0: 'DCIO_GENERICA_SEL_DACA_STEREOSYNC', - 1: 'DCIO_GENERICA_SEL_STEREOSYNC', - 2: 'DCIO_GENERICA_SEL_DACA_PIXCLK', - 3: 'DCIO_GENERICA_SEL_DACB_PIXCLK', - 4: 'DCIO_GENERICA_SEL_DVOA_CTL3', - 5: 'DCIO_GENERICA_SEL_P1_PLLCLK', - 6: 'DCIO_GENERICA_SEL_P2_PLLCLK', - 7: 'DCIO_GENERICA_SEL_DVOA_STEREOSYNC', - 8: 'DCIO_GENERICA_SEL_DACA_FIELD_NUMBER', - 9: 'DCIO_GENERICA_SEL_DACB_FIELD_NUMBER', - 10: 'DCIO_GENERICA_SEL_GENERICA_DCCG', - 11: 'DCIO_GENERICA_SEL_SYNCEN', - 12: 'DCIO_GENERICA_SEL_UNIPHY_REFDIV_CLK', - 13: 'DCIO_GENERICA_SEL_UNIPHY_FBDIV_CLK', - 14: 'DCIO_GENERICA_SEL_UNIPHY_FBDIV_SSC_CLK', - 15: 'DCIO_GENERICA_SEL_UNIPHY_FBDIV_CLK_DIV2', - 16: 'DCIO_GENERICA_SEL_GENERICA_DPRX', - 17: 'DCIO_GENERICA_SEL_GENERICB_DPRX', -} -DCIO_GENERICA_SEL_DACA_STEREOSYNC = 0 -DCIO_GENERICA_SEL_STEREOSYNC = 1 -DCIO_GENERICA_SEL_DACA_PIXCLK = 2 -DCIO_GENERICA_SEL_DACB_PIXCLK = 3 -DCIO_GENERICA_SEL_DVOA_CTL3 = 4 -DCIO_GENERICA_SEL_P1_PLLCLK = 5 -DCIO_GENERICA_SEL_P2_PLLCLK = 6 -DCIO_GENERICA_SEL_DVOA_STEREOSYNC = 7 -DCIO_GENERICA_SEL_DACA_FIELD_NUMBER = 8 -DCIO_GENERICA_SEL_DACB_FIELD_NUMBER = 9 -DCIO_GENERICA_SEL_GENERICA_DCCG = 10 -DCIO_GENERICA_SEL_SYNCEN = 11 -DCIO_GENERICA_SEL_UNIPHY_REFDIV_CLK = 12 -DCIO_GENERICA_SEL_UNIPHY_FBDIV_CLK = 13 -DCIO_GENERICA_SEL_UNIPHY_FBDIV_SSC_CLK = 14 -DCIO_GENERICA_SEL_UNIPHY_FBDIV_CLK_DIV2 = 15 -DCIO_GENERICA_SEL_GENERICA_DPRX = 16 -DCIO_GENERICA_SEL_GENERICB_DPRX = 17 -DCIO_DC_GENERICA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL' -DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_TEST_REFDIV_CLK', - 1: 'DCIO_UNIPHYB_TEST_REFDIV_CLK', - 2: 'DCIO_UNIPHYC_TEST_REFDIV_CLK', - 3: 'DCIO_UNIPHYD_TEST_REFDIV_CLK', - 4: 'DCIO_UNIPHYE_TEST_REFDIV_CLK', - 5: 'DCIO_UNIPHYF_TEST_REFDIV_CLK', - 6: 'DCIO_UNIPHYG_TEST_REFDIV_CLK', - 7: 'DCIO_UNIPHYLPA_TEST_REFDIV_CLK', - 8: 'DCIO_UNIPHYLPB_TEST_REFDIV_CLK', -} -DCIO_UNIPHYA_TEST_REFDIV_CLK = 0 -DCIO_UNIPHYB_TEST_REFDIV_CLK = 1 -DCIO_UNIPHYC_TEST_REFDIV_CLK = 2 -DCIO_UNIPHYD_TEST_REFDIV_CLK = 3 -DCIO_UNIPHYE_TEST_REFDIV_CLK = 4 -DCIO_UNIPHYF_TEST_REFDIV_CLK = 5 -DCIO_UNIPHYG_TEST_REFDIV_CLK = 6 -DCIO_UNIPHYLPA_TEST_REFDIV_CLK = 7 -DCIO_UNIPHYLPB_TEST_REFDIV_CLK = 8 -DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL' -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_FBDIV_CLK', - 1: 'DCIO_UNIPHYB_FBDIV_CLK', - 2: 'DCIO_UNIPHYC_FBDIV_CLK', - 3: 'DCIO_UNIPHYD_FBDIV_CLK', - 4: 'DCIO_UNIPHYE_FBDIV_CLK', - 5: 'DCIO_UNIPHYF_FBDIV_CLK', - 6: 'DCIO_UNIPHYG_FBDIV_CLK', - 7: 'DCIO_UNIPHYLPA_FBDIV_CLK', - 8: 'DCIO_UNIPHYLPB_FBDIV_CLK', -} -DCIO_UNIPHYA_FBDIV_CLK = 0 -DCIO_UNIPHYB_FBDIV_CLK = 1 -DCIO_UNIPHYC_FBDIV_CLK = 2 -DCIO_UNIPHYD_FBDIV_CLK = 3 -DCIO_UNIPHYE_FBDIV_CLK = 4 -DCIO_UNIPHYF_FBDIV_CLK = 5 -DCIO_UNIPHYG_FBDIV_CLK = 6 -DCIO_UNIPHYLPA_FBDIV_CLK = 7 -DCIO_UNIPHYLPB_FBDIV_CLK = 8 -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL' -DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_FBDIV_SSC_CLK', - 1: 'DCIO_UNIPHYB_FBDIV_SSC_CLK', - 2: 'DCIO_UNIPHYC_FBDIV_SSC_CLK', - 3: 'DCIO_UNIPHYD_FBDIV_SSC_CLK', - 4: 'DCIO_UNIPHYE_FBDIV_SSC_CLK', - 5: 'DCIO_UNIPHYF_FBDIV_SSC_CLK', - 6: 'DCIO_UNIPHYG_FBDIV_SSC_CLK', - 7: 'DCIO_UNIPHYLPA_FBDIV_SSC_CLK', - 8: 'DCIO_UNIPHYLPB_FBDIV_SSC_CLK', -} -DCIO_UNIPHYA_FBDIV_SSC_CLK = 0 -DCIO_UNIPHYB_FBDIV_SSC_CLK = 1 -DCIO_UNIPHYC_FBDIV_SSC_CLK = 2 -DCIO_UNIPHYD_FBDIV_SSC_CLK = 3 -DCIO_UNIPHYE_FBDIV_SSC_CLK = 4 -DCIO_UNIPHYF_FBDIV_SSC_CLK = 5 -DCIO_UNIPHYG_FBDIV_SSC_CLK = 6 -DCIO_UNIPHYLPA_FBDIV_SSC_CLK = 7 -DCIO_UNIPHYLPB_FBDIV_SSC_CLK = 8 -DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL' -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_TEST_FBDIV_CLK_DIV2', - 1: 'DCIO_UNIPHYB_TEST_FBDIV_CLK_DIV2', - 2: 'DCIO_UNIPHYC_TEST_FBDIV_CLK_DIV2', - 3: 'DCIO_UNIPHYD_TEST_FBDIV_CLK_DIV2', - 4: 'DCIO_UNIPHYE_TEST_FBDIV_CLK_DIV2', - 5: 'DCIO_UNIPHYF_TEST_FBDIV_CLK_DIV2', - 6: 'DCIO_UNIPHYG_TEST_FBDIV_CLK_DIV2', - 7: 'DCIO_UNIPHYLPA_TEST_FBDIV_CLK_DIV2', - 8: 'DCIO_UNIPHYLPB_TEST_FBDIV_CLK_DIV2', -} -DCIO_UNIPHYA_TEST_FBDIV_CLK_DIV2 = 0 -DCIO_UNIPHYB_TEST_FBDIV_CLK_DIV2 = 1 -DCIO_UNIPHYC_TEST_FBDIV_CLK_DIV2 = 2 -DCIO_UNIPHYD_TEST_FBDIV_CLK_DIV2 = 3 -DCIO_UNIPHYE_TEST_FBDIV_CLK_DIV2 = 4 -DCIO_UNIPHYF_TEST_FBDIV_CLK_DIV2 = 5 -DCIO_UNIPHYG_TEST_FBDIV_CLK_DIV2 = 6 -DCIO_UNIPHYLPA_TEST_FBDIV_CLK_DIV2 = 7 -DCIO_UNIPHYLPB_TEST_FBDIV_CLK_DIV2 = 8 -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERICB_SEL' -DCIO_DC_GENERICB_SEL__enumvalues = { - 0: 'DCIO_GENERICB_SEL_DACA_STEREOSYNC', - 1: 'DCIO_GENERICB_SEL_STEREOSYNC', - 2: 'DCIO_GENERICB_SEL_DACA_PIXCLK', - 3: 'DCIO_GENERICB_SEL_DACB_PIXCLK', - 4: 'DCIO_GENERICB_SEL_DVOA_CTL3', - 5: 'DCIO_GENERICB_SEL_P1_PLLCLK', - 6: 'DCIO_GENERICB_SEL_P2_PLLCLK', - 7: 'DCIO_GENERICB_SEL_DVOA_STEREOSYNC', - 8: 'DCIO_GENERICB_SEL_DACA_FIELD_NUMBER', - 9: 'DCIO_GENERICB_SEL_DACB_FIELD_NUMBER', - 10: 'DCIO_GENERICB_SEL_GENERICB_DCCG', - 11: 'DCIO_GENERICB_SEL_SYNCEN', - 12: 'DCIO_GENERICB_SEL_UNIPHY_REFDIV_CLK', - 13: 'DCIO_GENERICB_SEL_UNIPHY_FBDIV_CLK', - 14: 'DCIO_GENERICB_SEL_UNIPHY_FBDIV_SSC_CLK', - 15: 'DCIO_GENERICB_SEL_UNIPHY_FBDIV_CLK_DIV2', -} -DCIO_GENERICB_SEL_DACA_STEREOSYNC = 0 -DCIO_GENERICB_SEL_STEREOSYNC = 1 -DCIO_GENERICB_SEL_DACA_PIXCLK = 2 -DCIO_GENERICB_SEL_DACB_PIXCLK = 3 -DCIO_GENERICB_SEL_DVOA_CTL3 = 4 -DCIO_GENERICB_SEL_P1_PLLCLK = 5 -DCIO_GENERICB_SEL_P2_PLLCLK = 6 -DCIO_GENERICB_SEL_DVOA_STEREOSYNC = 7 -DCIO_GENERICB_SEL_DACA_FIELD_NUMBER = 8 -DCIO_GENERICB_SEL_DACB_FIELD_NUMBER = 9 -DCIO_GENERICB_SEL_GENERICB_DCCG = 10 -DCIO_GENERICB_SEL_SYNCEN = 11 -DCIO_GENERICB_SEL_UNIPHY_REFDIV_CLK = 12 -DCIO_GENERICB_SEL_UNIPHY_FBDIV_CLK = 13 -DCIO_GENERICB_SEL_UNIPHY_FBDIV_SSC_CLK = 14 -DCIO_GENERICB_SEL_UNIPHY_FBDIV_CLK_DIV2 = 15 -DCIO_DC_GENERICB_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_PAD_EXTERN_SIG_SEL' -DCIO_DC_PAD_EXTERN_SIG_SEL__enumvalues = { - 0: 'DCIO_DC_PAD_EXTERN_SIG_SEL_MVP', - 1: 'DCIO_DC_PAD_EXTERN_SIG_SEL_VSYNCA', - 2: 'DCIO_DC_PAD_EXTERN_SIG_SEL_GENLK_CLK', - 3: 'DCIO_DC_PAD_EXTERN_SIG_SEL_GENLK_VSYNC', - 4: 'DCIO_DC_PAD_EXTERN_SIG_SEL_GENERICA', - 5: 'DCIO_DC_PAD_EXTERN_SIG_SEL_GENERICB', - 6: 'DCIO_DC_PAD_EXTERN_SIG_SEL_GENERICC', - 7: 'DCIO_DC_PAD_EXTERN_SIG_SEL_HPD1', - 8: 'DCIO_DC_PAD_EXTERN_SIG_SEL_HPD2', - 9: 'DCIO_DC_PAD_EXTERN_SIG_SEL_DDC1CLK', - 10: 'DCIO_DC_PAD_EXTERN_SIG_SEL_DDC1DATA', - 11: 'DCIO_DC_PAD_EXTERN_SIG_SEL_DDC2CLK', - 12: 'DCIO_DC_PAD_EXTERN_SIG_SEL_DDC2DATA', - 13: 'DCIO_DC_PAD_EXTERN_SIG_SEL_VHAD1', - 14: 'DCIO_DC_PAD_EXTERN_SIG_SEL_VHAD0', - 15: 'DCIO_DC_PAD_EXTERN_SIG_SEL_VPHCTL', -} -DCIO_DC_PAD_EXTERN_SIG_SEL_MVP = 0 -DCIO_DC_PAD_EXTERN_SIG_SEL_VSYNCA = 1 -DCIO_DC_PAD_EXTERN_SIG_SEL_GENLK_CLK = 2 -DCIO_DC_PAD_EXTERN_SIG_SEL_GENLK_VSYNC = 3 -DCIO_DC_PAD_EXTERN_SIG_SEL_GENERICA = 4 -DCIO_DC_PAD_EXTERN_SIG_SEL_GENERICB = 5 -DCIO_DC_PAD_EXTERN_SIG_SEL_GENERICC = 6 -DCIO_DC_PAD_EXTERN_SIG_SEL_HPD1 = 7 -DCIO_DC_PAD_EXTERN_SIG_SEL_HPD2 = 8 -DCIO_DC_PAD_EXTERN_SIG_SEL_DDC1CLK = 9 -DCIO_DC_PAD_EXTERN_SIG_SEL_DDC1DATA = 10 -DCIO_DC_PAD_EXTERN_SIG_SEL_DDC2CLK = 11 -DCIO_DC_PAD_EXTERN_SIG_SEL_DDC2DATA = 12 -DCIO_DC_PAD_EXTERN_SIG_SEL_VHAD1 = 13 -DCIO_DC_PAD_EXTERN_SIG_SEL_VHAD0 = 14 -DCIO_DC_PAD_EXTERN_SIG_SEL_VPHCTL = 15 -DCIO_DC_PAD_EXTERN_SIG_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_PAD_EXTERN_SIG_MVP_PIXEL_SRC_STATUS' -DCIO_DC_PAD_EXTERN_SIG_MVP_PIXEL_SRC_STATUS__enumvalues = { - 0: 'DCIO_MVP_PIXEL_SRC_STATUS_HSYNCA', - 1: 'DCIO_MVP_PIXEL_SRC_STATUS_HSYNCA_DUPLICATE', - 2: 'DCIO_MVP_PIXEL_SRC_STATUS_CRTC', - 3: 'DCIO_MVP_PIXEL_SRC_STATUS_LB', -} -DCIO_MVP_PIXEL_SRC_STATUS_HSYNCA = 0 -DCIO_MVP_PIXEL_SRC_STATUS_HSYNCA_DUPLICATE = 1 -DCIO_MVP_PIXEL_SRC_STATUS_CRTC = 2 -DCIO_MVP_PIXEL_SRC_STATUS_LB = 3 -DCIO_DC_PAD_EXTERN_SIG_MVP_PIXEL_SRC_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_REF_CLK_CNTL_HSYNCA_OUTPUT_SEL' -DCIO_DC_REF_CLK_CNTL_HSYNCA_OUTPUT_SEL__enumvalues = { - 0: 'DCIO_HSYNCA_OUTPUT_SEL_DISABLE', - 1: 'DCIO_HSYNCA_OUTPUT_SEL_PPLL1', - 2: 'DCIO_HSYNCA_OUTPUT_SEL_PPLL2', - 3: 'DCIO_HSYNCA_OUTPUT_SEL_RESERVED', -} -DCIO_HSYNCA_OUTPUT_SEL_DISABLE = 0 -DCIO_HSYNCA_OUTPUT_SEL_PPLL1 = 1 -DCIO_HSYNCA_OUTPUT_SEL_PPLL2 = 2 -DCIO_HSYNCA_OUTPUT_SEL_RESERVED = 3 -DCIO_DC_REF_CLK_CNTL_HSYNCA_OUTPUT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL' -DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL__enumvalues = { - 0: 'DCIO_GENLK_CLK_OUTPUT_SEL_DISABLE', - 1: 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL1', - 2: 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL2', - 3: 'DCIO_GENLK_CLK_OUTPUT_SEL_RESERVED_VALUE3', -} -DCIO_GENLK_CLK_OUTPUT_SEL_DISABLE = 0 -DCIO_GENLK_CLK_OUTPUT_SEL_PPLL1 = 1 -DCIO_GENLK_CLK_OUTPUT_SEL_PPLL2 = 2 -DCIO_GENLK_CLK_OUTPUT_SEL_RESERVED_VALUE3 = 3 -DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GPIO_VIP_DEBUG' -DCIO_DC_GPIO_VIP_DEBUG__enumvalues = { - 0: 'DCIO_DC_GPIO_VIP_DEBUG_NORMAL', - 1: 'DCIO_DC_GPIO_VIP_DEBUG_CG_BIG', -} -DCIO_DC_GPIO_VIP_DEBUG_NORMAL = 0 -DCIO_DC_GPIO_VIP_DEBUG_CG_BIG = 1 -DCIO_DC_GPIO_VIP_DEBUG = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GPIO_MACRO_DEBUG' -DCIO_DC_GPIO_MACRO_DEBUG__enumvalues = { - 0: 'DCIO_DC_GPIO_MACRO_DEBUG_NORMAL', - 1: 'DCIO_DC_GPIO_MACRO_DEBUG_CHIP_BIF', - 2: 'DCIO_DC_GPIO_MACRO_DEBUG_RESERVED_VALUE2', - 3: 'DCIO_DC_GPIO_MACRO_DEBUG_RESERVED_VALUE3', -} -DCIO_DC_GPIO_MACRO_DEBUG_NORMAL = 0 -DCIO_DC_GPIO_MACRO_DEBUG_CHIP_BIF = 1 -DCIO_DC_GPIO_MACRO_DEBUG_RESERVED_VALUE2 = 2 -DCIO_DC_GPIO_MACRO_DEBUG_RESERVED_VALUE3 = 3 -DCIO_DC_GPIO_MACRO_DEBUG = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GPIO_CHIP_DEBUG_OUT_PIN_SEL' -DCIO_DC_GPIO_CHIP_DEBUG_OUT_PIN_SEL__enumvalues = { - 0: 'DCIO_DC_GPIO_CHIP_DEBUG_OUT_PIN_SEL_NORMAL', - 1: 'DCIO_DC_GPIO_CHIP_DEBUG_OUT_PIN_SEL_SWAP', -} -DCIO_DC_GPIO_CHIP_DEBUG_OUT_PIN_SEL_NORMAL = 0 -DCIO_DC_GPIO_CHIP_DEBUG_OUT_PIN_SEL_SWAP = 1 -DCIO_DC_GPIO_CHIP_DEBUG_OUT_PIN_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GPIO_DEBUG_BUS_FLOP_EN' -DCIO_DC_GPIO_DEBUG_BUS_FLOP_EN__enumvalues = { - 0: 'DCIO_DC_GPIO_DEBUG_BUS_FLOP_EN_BYPASS', - 1: 'DCIO_DC_GPIO_DEBUG_BUS_FLOP_EN_ENABLE', -} -DCIO_DC_GPIO_DEBUG_BUS_FLOP_EN_BYPASS = 0 -DCIO_DC_GPIO_DEBUG_BUS_FLOP_EN_ENABLE = 1 -DCIO_DC_GPIO_DEBUG_BUS_FLOP_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GPIO_DEBUG_DPRX_LOOPBACK_ENABLE' -DCIO_DC_GPIO_DEBUG_DPRX_LOOPBACK_ENABLE__enumvalues = { - 0: 'DCIO_DPRX_LOOPBACK_ENABLE_NORMAL', - 1: 'DCIO_DPRX_LOOPBACK_ENABLE_LOOP', -} -DCIO_DPRX_LOOPBACK_ENABLE_NORMAL = 0 -DCIO_DPRX_LOOPBACK_ENABLE_LOOP = 1 -DCIO_DC_GPIO_DEBUG_DPRX_LOOPBACK_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_LINK_CNTL_MINIMUM_PIXVLD_LOW_DURATION' -DCIO_UNIPHY_LINK_CNTL_MINIMUM_PIXVLD_LOW_DURATION__enumvalues = { - 0: 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_3_CLOCKS', - 1: 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_7_CLOCKS', - 2: 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_11_CLOCKS', - 3: 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_15_CLOCKS', - 4: 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_19_CLOCKS', - 5: 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_23_CLOCKS', - 6: 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_27_CLOCKS', - 7: 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_31_CLOCKS', -} -DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_3_CLOCKS = 0 -DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_7_CLOCKS = 1 -DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_11_CLOCKS = 2 -DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_15_CLOCKS = 3 -DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_19_CLOCKS = 4 -DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_23_CLOCKS = 5 -DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_27_CLOCKS = 6 -DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_31_CLOCKS = 7 -DCIO_UNIPHY_LINK_CNTL_MINIMUM_PIXVLD_LOW_DURATION = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT' -DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT__enumvalues = { - 0: 'DCIO_UNIPHY_CHANNEL_NO_INVERSION', - 1: 'DCIO_UNIPHY_CHANNEL_INVERTED', -} -DCIO_UNIPHY_CHANNEL_NO_INVERSION = 0 -DCIO_UNIPHY_CHANNEL_INVERTED = 1 -DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK' -DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK__enumvalues = { - 0: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_DISALLOW', - 1: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW', - 2: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_DEBOUNCED', - 3: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_TOGGLE_FILTERED', -} -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_DISALLOW = 0 -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW = 1 -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_DEBOUNCED = 2 -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_TOGGLE_FILTERED = 3 -DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE' -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE__enumvalues = { - 0: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH0', - 1: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH1', - 2: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH2', - 3: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH3', -} -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH0 = 0 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH1 = 1 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH2 = 2 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH3 = 3 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_DVODATA_CONFIG_VIP_MUX_EN' -DCIO_DC_DVODATA_CONFIG_VIP_MUX_EN__enumvalues = { - 0: 'DCIO_VIP_MUX_EN_DVO', - 1: 'DCIO_VIP_MUX_EN_VIP', -} -DCIO_VIP_MUX_EN_DVO = 0 -DCIO_VIP_MUX_EN_VIP = 1 -DCIO_DC_DVODATA_CONFIG_VIP_MUX_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_DVODATA_CONFIG_VIP_ALTER_MAPPING_EN' -DCIO_DC_DVODATA_CONFIG_VIP_ALTER_MAPPING_EN__enumvalues = { - 0: 'DCIO_VIP_ALTER_MAPPING_EN_DEFAULT', - 1: 'DCIO_VIP_ALTER_MAPPING_EN_ALTERNATIVE', -} -DCIO_VIP_ALTER_MAPPING_EN_DEFAULT = 0 -DCIO_VIP_ALTER_MAPPING_EN_ALTERNATIVE = 1 -DCIO_DC_DVODATA_CONFIG_VIP_ALTER_MAPPING_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_DVODATA_CONFIG_DVO_ALTER_MAPPING_EN' -DCIO_DC_DVODATA_CONFIG_DVO_ALTER_MAPPING_EN__enumvalues = { - 0: 'DCIO_DVO_ALTER_MAPPING_EN_DEFAULT', - 1: 'DCIO_DVO_ALTER_MAPPING_EN_ALTERNATIVE', -} -DCIO_DVO_ALTER_MAPPING_EN_DEFAULT = 0 -DCIO_DVO_ALTER_MAPPING_EN_ALTERNATIVE = 1 -DCIO_DC_DVODATA_CONFIG_DVO_ALTER_MAPPING_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_LVTMA_PWRSEQ_CNTL_DISABLE_SYNCEN_CONTROL_OF_TX_EN' -DCIO_LVTMA_PWRSEQ_CNTL_DISABLE_SYNCEN_CONTROL_OF_TX_EN__enumvalues = { - 0: 'DCIO_LVTMA_PWRSEQ_DISABLE_SYNCEN_CONTROL_OF_TX_ENABLE', - 1: 'DCIO_LVTMA_PWRSEQ_DISABLE_SYNCEN_CONTROL_OF_TX_DISABLE', -} -DCIO_LVTMA_PWRSEQ_DISABLE_SYNCEN_CONTROL_OF_TX_ENABLE = 0 -DCIO_LVTMA_PWRSEQ_DISABLE_SYNCEN_CONTROL_OF_TX_DISABLE = 1 -DCIO_LVTMA_PWRSEQ_CNTL_DISABLE_SYNCEN_CONTROL_OF_TX_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_LVTMA_PWRSEQ_CNTL_TARGET_STATE' -DCIO_LVTMA_PWRSEQ_CNTL_TARGET_STATE__enumvalues = { - 0: 'DCIO_LVTMA_PWRSEQ_TARGET_STATE_LCD_OFF', - 1: 'DCIO_LVTMA_PWRSEQ_TARGET_STATE_LCD_ON', -} -DCIO_LVTMA_PWRSEQ_TARGET_STATE_LCD_OFF = 0 -DCIO_LVTMA_PWRSEQ_TARGET_STATE_LCD_ON = 1 -DCIO_LVTMA_PWRSEQ_CNTL_TARGET_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_SYNCEN_POL' -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_SYNCEN_POL__enumvalues = { - 0: 'DCIO_LVTMA_SYNCEN_POL_NON_INVERT', - 1: 'DCIO_LVTMA_SYNCEN_POL_INVERT', -} -DCIO_LVTMA_SYNCEN_POL_NON_INVERT = 0 -DCIO_LVTMA_SYNCEN_POL_INVERT = 1 -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_SYNCEN_POL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_DIGON' -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_DIGON__enumvalues = { - 0: 'DCIO_LVTMA_DIGON_OFF', - 1: 'DCIO_LVTMA_DIGON_ON', -} -DCIO_LVTMA_DIGON_OFF = 0 -DCIO_LVTMA_DIGON_ON = 1 -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_DIGON = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_DIGON_POL' -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_DIGON_POL__enumvalues = { - 0: 'DCIO_LVTMA_DIGON_POL_NON_INVERT', - 1: 'DCIO_LVTMA_DIGON_POL_INVERT', -} -DCIO_LVTMA_DIGON_POL_NON_INVERT = 0 -DCIO_LVTMA_DIGON_POL_INVERT = 1 -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_DIGON_POL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_BLON' -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_BLON__enumvalues = { - 0: 'DCIO_LVTMA_BLON_OFF', - 1: 'DCIO_LVTMA_BLON_ON', -} -DCIO_LVTMA_BLON_OFF = 0 -DCIO_LVTMA_BLON_ON = 1 -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_BLON = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_BLON_POL' -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_BLON_POL__enumvalues = { - 0: 'DCIO_LVTMA_BLON_POL_NON_INVERT', - 1: 'DCIO_LVTMA_BLON_POL_INVERT', -} -DCIO_LVTMA_BLON_POL_NON_INVERT = 0 -DCIO_LVTMA_BLON_POL_INVERT = 1 -DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_BLON_POL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_LVTMA_PWRSEQ_DELAY2_LVTMA_VARY_BL_OVERRIDE_EN' -DCIO_LVTMA_PWRSEQ_DELAY2_LVTMA_VARY_BL_OVERRIDE_EN__enumvalues = { - 0: 'DCIO_LVTMA_VARY_BL_OVERRIDE_EN_BLON', - 1: 'DCIO_LVTMA_VARY_BL_OVERRIDE_EN_SEPARATE', -} -DCIO_LVTMA_VARY_BL_OVERRIDE_EN_BLON = 0 -DCIO_LVTMA_VARY_BL_OVERRIDE_EN_SEPARATE = 1 -DCIO_LVTMA_PWRSEQ_DELAY2_LVTMA_VARY_BL_OVERRIDE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN' -DCIO_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN__enumvalues = { - 0: 'DCIO_BL_PWM_FRACTIONAL_DISABLE', - 1: 'DCIO_BL_PWM_FRACTIONAL_ENABLE', -} -DCIO_BL_PWM_FRACTIONAL_DISABLE = 0 -DCIO_BL_PWM_FRACTIONAL_ENABLE = 1 -DCIO_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_CNTL_BL_PWM_EN' -DCIO_BL_PWM_CNTL_BL_PWM_EN__enumvalues = { - 0: 'DCIO_BL_PWM_DISABLE', - 1: 'DCIO_BL_PWM_ENABLE', -} -DCIO_BL_PWM_DISABLE = 0 -DCIO_BL_PWM_ENABLE = 1 -DCIO_BL_PWM_CNTL_BL_PWM_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_CNTL2_DBG_BL_PWM_INPUT_REFCLK_SELECT' -DCIO_BL_PWM_CNTL2_DBG_BL_PWM_INPUT_REFCLK_SELECT__enumvalues = { - 0: 'DCIO_DBG_BL_PWM_INPUT_REFCLK_SELECT_NORMAL', - 1: 'DCIO_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG1', - 2: 'DCIO_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG2', - 3: 'DCIO_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG3', -} -DCIO_DBG_BL_PWM_INPUT_REFCLK_SELECT_NORMAL = 0 -DCIO_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG1 = 1 -DCIO_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG2 = 2 -DCIO_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG3 = 3 -DCIO_BL_PWM_CNTL2_DBG_BL_PWM_INPUT_REFCLK_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE' -DCIO_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE__enumvalues = { - 0: 'DCIO_BL_PWM_OVERRIDE_BL_OUT_DISABLE', - 1: 'DCIO_BL_PWM_OVERRIDE_BL_OUT_ENABLE', -} -DCIO_BL_PWM_OVERRIDE_BL_OUT_DISABLE = 0 -DCIO_BL_PWM_OVERRIDE_BL_OUT_ENABLE = 1 -DCIO_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_CNTL2_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN' -DCIO_BL_PWM_CNTL2_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN__enumvalues = { - 0: 'DCIO_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN_NORMAL', - 1: 'DCIO_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN_PWM', -} -DCIO_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN_NORMAL = 0 -DCIO_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN_PWM = 1 -DCIO_BL_PWM_CNTL2_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_GRP1_REG_LOCK' -DCIO_BL_PWM_GRP1_REG_LOCK__enumvalues = { - 0: 'DCIO_BL_PWM_GRP1_REG_LOCK_DISABLE', - 1: 'DCIO_BL_PWM_GRP1_REG_LOCK_ENABLE', -} -DCIO_BL_PWM_GRP1_REG_LOCK_DISABLE = 0 -DCIO_BL_PWM_GRP1_REG_LOCK_ENABLE = 1 -DCIO_BL_PWM_GRP1_REG_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START' -DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START__enumvalues = { - 0: 'DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START_DISABLE', - 1: 'DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START_ENABLE', -} -DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START_DISABLE = 0 -DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START_ENABLE = 1 -DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL' -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL__enumvalues = { - 0: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER1', - 1: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER2', - 2: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER3', - 3: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER4', - 4: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER5', - 5: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER6', -} -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER1 = 0 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER2 = 1 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER3 = 2 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER4 = 3 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER5 = 4 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER6 = 5 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN' -DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN__enumvalues = { - 0: 'DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL_PWM', - 1: 'DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL1_PWM', -} -DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL_PWM = 0 -DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL1_PWM = 1 -DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN' -DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN__enumvalues = { - 0: 'DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_ENABLE', - 1: 'DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_DISABLE', -} -DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_ENABLE = 0 -DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_DISABLE = 1 -DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GSL_SEL' -DCIO_GSL_SEL__enumvalues = { - 0: 'DCIO_GSL_SEL_GROUP_0', - 1: 'DCIO_GSL_SEL_GROUP_1', - 2: 'DCIO_GSL_SEL_GROUP_2', -} -DCIO_GSL_SEL_GROUP_0 = 0 -DCIO_GSL_SEL_GROUP_1 = 1 -DCIO_GSL_SEL_GROUP_2 = 2 -DCIO_GSL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GENLK_CLK_GSL_MASK' -DCIO_GENLK_CLK_GSL_MASK__enumvalues = { - 0: 'DCIO_GENLK_CLK_GSL_MASK_NO', - 1: 'DCIO_GENLK_CLK_GSL_MASK_TIMING', - 2: 'DCIO_GENLK_CLK_GSL_MASK_STEREO', -} -DCIO_GENLK_CLK_GSL_MASK_NO = 0 -DCIO_GENLK_CLK_GSL_MASK_TIMING = 1 -DCIO_GENLK_CLK_GSL_MASK_STEREO = 2 -DCIO_GENLK_CLK_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GENLK_VSYNC_GSL_MASK' -DCIO_GENLK_VSYNC_GSL_MASK__enumvalues = { - 0: 'DCIO_GENLK_VSYNC_GSL_MASK_NO', - 1: 'DCIO_GENLK_VSYNC_GSL_MASK_TIMING', - 2: 'DCIO_GENLK_VSYNC_GSL_MASK_STEREO', -} -DCIO_GENLK_VSYNC_GSL_MASK_NO = 0 -DCIO_GENLK_VSYNC_GSL_MASK_TIMING = 1 -DCIO_GENLK_VSYNC_GSL_MASK_STEREO = 2 -DCIO_GENLK_VSYNC_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_SWAPLOCK_A_GSL_MASK' -DCIO_SWAPLOCK_A_GSL_MASK__enumvalues = { - 0: 'DCIO_SWAPLOCK_A_GSL_MASK_NO', - 1: 'DCIO_SWAPLOCK_A_GSL_MASK_TIMING', - 2: 'DCIO_SWAPLOCK_A_GSL_MASK_STEREO', -} -DCIO_SWAPLOCK_A_GSL_MASK_NO = 0 -DCIO_SWAPLOCK_A_GSL_MASK_TIMING = 1 -DCIO_SWAPLOCK_A_GSL_MASK_STEREO = 2 -DCIO_SWAPLOCK_A_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_SWAPLOCK_B_GSL_MASK' -DCIO_SWAPLOCK_B_GSL_MASK__enumvalues = { - 0: 'DCIO_SWAPLOCK_B_GSL_MASK_NO', - 1: 'DCIO_SWAPLOCK_B_GSL_MASK_TIMING', - 2: 'DCIO_SWAPLOCK_B_GSL_MASK_STEREO', -} -DCIO_SWAPLOCK_B_GSL_MASK_NO = 0 -DCIO_SWAPLOCK_B_GSL_MASK_TIMING = 1 -DCIO_SWAPLOCK_B_GSL_MASK_STEREO = 2 -DCIO_SWAPLOCK_B_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GSL_VSYNC_SEL' -DCIO_GSL_VSYNC_SEL__enumvalues = { - 0: 'DCIO_GSL_VSYNC_SEL_PIPE0', - 1: 'DCIO_GSL_VSYNC_SEL_PIPE1', - 2: 'DCIO_GSL_VSYNC_SEL_PIPE2', - 3: 'DCIO_GSL_VSYNC_SEL_PIPE3', - 4: 'DCIO_GSL_VSYNC_SEL_PIPE4', - 5: 'DCIO_GSL_VSYNC_SEL_PIPE5', -} -DCIO_GSL_VSYNC_SEL_PIPE0 = 0 -DCIO_GSL_VSYNC_SEL_PIPE1 = 1 -DCIO_GSL_VSYNC_SEL_PIPE2 = 2 -DCIO_GSL_VSYNC_SEL_PIPE3 = 3 -DCIO_GSL_VSYNC_SEL_PIPE4 = 4 -DCIO_GSL_VSYNC_SEL_PIPE5 = 5 -DCIO_GSL_VSYNC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GSL0_TIMING_SYNC_SEL' -DCIO_GSL0_TIMING_SYNC_SEL__enumvalues = { - 0: 'DCIO_GSL0_TIMING_SYNC_SEL_PIPE', - 1: 'DCIO_GSL0_TIMING_SYNC_SEL_GENCLK_VSYNC', - 2: 'DCIO_GSL0_TIMING_SYNC_SEL_GENCLK_CLK', - 3: 'DCIO_GSL0_TIMING_SYNC_SEL_SWAPLOCK_A', - 4: 'DCIO_GSL0_TIMING_SYNC_SEL_SWAPLOCK_B', -} -DCIO_GSL0_TIMING_SYNC_SEL_PIPE = 0 -DCIO_GSL0_TIMING_SYNC_SEL_GENCLK_VSYNC = 1 -DCIO_GSL0_TIMING_SYNC_SEL_GENCLK_CLK = 2 -DCIO_GSL0_TIMING_SYNC_SEL_SWAPLOCK_A = 3 -DCIO_GSL0_TIMING_SYNC_SEL_SWAPLOCK_B = 4 -DCIO_GSL0_TIMING_SYNC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GSL0_GLOBAL_UNLOCK_SEL' -DCIO_GSL0_GLOBAL_UNLOCK_SEL__enumvalues = { - 0: 'DCIO_GSL0_GLOBAL_UNLOCK_SEL_INVERSION', - 1: 'DCIO_GSL0_GLOBAL_UNLOCK_SEL_GENCLK_VSYNC', - 2: 'DCIO_GSL0_GLOBAL_UNLOCK_SEL_GENLK_CLK', - 3: 'DCIO_GSL0_GLOBAL_UNLOCK_SEL_SWAPLOCK_A', - 4: 'DCIO_GSL0_GLOBAL_UNLOCK_SEL_SWAPLOCK_B', -} -DCIO_GSL0_GLOBAL_UNLOCK_SEL_INVERSION = 0 -DCIO_GSL0_GLOBAL_UNLOCK_SEL_GENCLK_VSYNC = 1 -DCIO_GSL0_GLOBAL_UNLOCK_SEL_GENLK_CLK = 2 -DCIO_GSL0_GLOBAL_UNLOCK_SEL_SWAPLOCK_A = 3 -DCIO_GSL0_GLOBAL_UNLOCK_SEL_SWAPLOCK_B = 4 -DCIO_GSL0_GLOBAL_UNLOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GSL1_TIMING_SYNC_SEL' -DCIO_GSL1_TIMING_SYNC_SEL__enumvalues = { - 0: 'DCIO_GSL1_TIMING_SYNC_SEL_PIPE', - 1: 'DCIO_GSL1_TIMING_SYNC_SEL_GENCLK_VSYNC', - 2: 'DCIO_GSL1_TIMING_SYNC_SEL_GENCLK_CLK', - 3: 'DCIO_GSL1_TIMING_SYNC_SEL_SWAPLOCK_A', - 4: 'DCIO_GSL1_TIMING_SYNC_SEL_SWAPLOCK_B', -} -DCIO_GSL1_TIMING_SYNC_SEL_PIPE = 0 -DCIO_GSL1_TIMING_SYNC_SEL_GENCLK_VSYNC = 1 -DCIO_GSL1_TIMING_SYNC_SEL_GENCLK_CLK = 2 -DCIO_GSL1_TIMING_SYNC_SEL_SWAPLOCK_A = 3 -DCIO_GSL1_TIMING_SYNC_SEL_SWAPLOCK_B = 4 -DCIO_GSL1_TIMING_SYNC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GSL1_GLOBAL_UNLOCK_SEL' -DCIO_GSL1_GLOBAL_UNLOCK_SEL__enumvalues = { - 0: 'DCIO_GSL1_GLOBAL_UNLOCK_SEL_INVERSION', - 1: 'DCIO_GSL1_GLOBAL_UNLOCK_SEL_GENCLK_VSYNC', - 2: 'DCIO_GSL1_GLOBAL_UNLOCK_SEL_GENLK_CLK', - 3: 'DCIO_GSL1_GLOBAL_UNLOCK_SEL_SWAPLOCK_A', - 4: 'DCIO_GSL1_GLOBAL_UNLOCK_SEL_SWAPLOCK_B', -} -DCIO_GSL1_GLOBAL_UNLOCK_SEL_INVERSION = 0 -DCIO_GSL1_GLOBAL_UNLOCK_SEL_GENCLK_VSYNC = 1 -DCIO_GSL1_GLOBAL_UNLOCK_SEL_GENLK_CLK = 2 -DCIO_GSL1_GLOBAL_UNLOCK_SEL_SWAPLOCK_A = 3 -DCIO_GSL1_GLOBAL_UNLOCK_SEL_SWAPLOCK_B = 4 -DCIO_GSL1_GLOBAL_UNLOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GSL2_TIMING_SYNC_SEL' -DCIO_GSL2_TIMING_SYNC_SEL__enumvalues = { - 0: 'DCIO_GSL2_TIMING_SYNC_SEL_PIPE', - 1: 'DCIO_GSL2_TIMING_SYNC_SEL_GENCLK_VSYNC', - 2: 'DCIO_GSL2_TIMING_SYNC_SEL_GENCLK_CLK', - 3: 'DCIO_GSL2_TIMING_SYNC_SEL_SWAPLOCK_A', - 4: 'DCIO_GSL2_TIMING_SYNC_SEL_SWAPLOCK_B', -} -DCIO_GSL2_TIMING_SYNC_SEL_PIPE = 0 -DCIO_GSL2_TIMING_SYNC_SEL_GENCLK_VSYNC = 1 -DCIO_GSL2_TIMING_SYNC_SEL_GENCLK_CLK = 2 -DCIO_GSL2_TIMING_SYNC_SEL_SWAPLOCK_A = 3 -DCIO_GSL2_TIMING_SYNC_SEL_SWAPLOCK_B = 4 -DCIO_GSL2_TIMING_SYNC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GSL2_GLOBAL_UNLOCK_SEL' -DCIO_GSL2_GLOBAL_UNLOCK_SEL__enumvalues = { - 0: 'DCIO_GSL2_GLOBAL_UNLOCK_SEL_INVERSION', - 1: 'DCIO_GSL2_GLOBAL_UNLOCK_SEL_GENCLK_VSYNC', - 2: 'DCIO_GSL2_GLOBAL_UNLOCK_SEL_GENLK_CLK', - 3: 'DCIO_GSL2_GLOBAL_UNLOCK_SEL_SWAPLOCK_A', - 4: 'DCIO_GSL2_GLOBAL_UNLOCK_SEL_SWAPLOCK_B', -} -DCIO_GSL2_GLOBAL_UNLOCK_SEL_INVERSION = 0 -DCIO_GSL2_GLOBAL_UNLOCK_SEL_GENCLK_VSYNC = 1 -DCIO_GSL2_GLOBAL_UNLOCK_SEL_GENLK_CLK = 2 -DCIO_GSL2_GLOBAL_UNLOCK_SEL_SWAPLOCK_A = 3 -DCIO_GSL2_GLOBAL_UNLOCK_SEL_SWAPLOCK_B = 4 -DCIO_GSL2_GLOBAL_UNLOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GPU_TIMER_START_POSITION' -DCIO_DC_GPU_TIMER_START_POSITION__enumvalues = { - 0: 'DCIO_GPU_TIMER_START_0_END_27', - 1: 'DCIO_GPU_TIMER_START_1_END_28', - 2: 'DCIO_GPU_TIMER_START_2_END_29', - 3: 'DCIO_GPU_TIMER_START_3_END_30', - 4: 'DCIO_GPU_TIMER_START_4_END_31', - 5: 'DCIO_GPU_TIMER_START_6_END_33', - 6: 'DCIO_GPU_TIMER_START_8_END_35', - 7: 'DCIO_GPU_TIMER_START_10_END_37', -} -DCIO_GPU_TIMER_START_0_END_27 = 0 -DCIO_GPU_TIMER_START_1_END_28 = 1 -DCIO_GPU_TIMER_START_2_END_29 = 2 -DCIO_GPU_TIMER_START_3_END_30 = 3 -DCIO_GPU_TIMER_START_4_END_31 = 4 -DCIO_GPU_TIMER_START_6_END_33 = 5 -DCIO_GPU_TIMER_START_8_END_35 = 6 -DCIO_GPU_TIMER_START_10_END_37 = 7 -DCIO_DC_GPU_TIMER_START_POSITION = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL' -DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL__enumvalues = { - 0: 'DCIO_TEST_CLK_SEL_DISPCLK', - 1: 'DCIO_TEST_CLK_SEL_GATED_DISPCLK', - 2: 'DCIO_TEST_CLK_SEL_SCLK', -} -DCIO_TEST_CLK_SEL_DISPCLK = 0 -DCIO_TEST_CLK_SEL_GATED_DISPCLK = 1 -DCIO_TEST_CLK_SEL_SCLK = 2 -DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS' -DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS__enumvalues = { - 0: 'DCIO_DISPCLK_R_DCIO_GATE_DISABLE', - 1: 'DCIO_DISPCLK_R_DCIO_GATE_ENABLE', -} -DCIO_DISPCLK_R_DCIO_GATE_DISABLE = 0 -DCIO_DISPCLK_R_DCIO_GATE_ENABLE = 1 -DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DCO_DCFE_EXT_VSYNC_MUX' -DCIO_DCO_DCFE_EXT_VSYNC_MUX__enumvalues = { - 0: 'DCIO_EXT_VSYNC_MUX_SWAPLOCKB', - 1: 'DCIO_EXT_VSYNC_MUX_CRTC0', - 2: 'DCIO_EXT_VSYNC_MUX_CRTC1', - 3: 'DCIO_EXT_VSYNC_MUX_CRTC2', - 4: 'DCIO_EXT_VSYNC_MUX_CRTC3', - 5: 'DCIO_EXT_VSYNC_MUX_CRTC4', - 6: 'DCIO_EXT_VSYNC_MUX_CRTC5', - 7: 'DCIO_EXT_VSYNC_MUX_GENERICB', -} -DCIO_EXT_VSYNC_MUX_SWAPLOCKB = 0 -DCIO_EXT_VSYNC_MUX_CRTC0 = 1 -DCIO_EXT_VSYNC_MUX_CRTC1 = 2 -DCIO_EXT_VSYNC_MUX_CRTC2 = 3 -DCIO_EXT_VSYNC_MUX_CRTC3 = 4 -DCIO_EXT_VSYNC_MUX_CRTC4 = 5 -DCIO_EXT_VSYNC_MUX_CRTC5 = 6 -DCIO_EXT_VSYNC_MUX_GENERICB = 7 -DCIO_DCO_DCFE_EXT_VSYNC_MUX = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DCO_EXT_VSYNC_MASK' -DCIO_DCO_EXT_VSYNC_MASK__enumvalues = { - 0: 'DCIO_EXT_VSYNC_MASK_NONE', - 1: 'DCIO_EXT_VSYNC_MASK_PIPE0', - 2: 'DCIO_EXT_VSYNC_MASK_PIPE1', - 3: 'DCIO_EXT_VSYNC_MASK_PIPE2', - 4: 'DCIO_EXT_VSYNC_MASK_PIPE3', - 5: 'DCIO_EXT_VSYNC_MASK_PIPE4', - 6: 'DCIO_EXT_VSYNC_MASK_PIPE5', - 7: 'DCIO_EXT_VSYNC_MASK_NONE_DUPLICATE', -} -DCIO_EXT_VSYNC_MASK_NONE = 0 -DCIO_EXT_VSYNC_MASK_PIPE0 = 1 -DCIO_EXT_VSYNC_MASK_PIPE1 = 2 -DCIO_EXT_VSYNC_MASK_PIPE2 = 3 -DCIO_EXT_VSYNC_MASK_PIPE3 = 4 -DCIO_EXT_VSYNC_MASK_PIPE4 = 5 -DCIO_EXT_VSYNC_MASK_PIPE5 = 6 -DCIO_EXT_VSYNC_MASK_NONE_DUPLICATE = 7 -DCIO_DCO_EXT_VSYNC_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DSYNC_SOFT_RESET' -DCIO_DSYNC_SOFT_RESET__enumvalues = { - 0: 'DCIO_DSYNC_SOFT_RESET_DEASSERT', - 1: 'DCIO_DSYNC_SOFT_RESET_ASSERT', -} -DCIO_DSYNC_SOFT_RESET_DEASSERT = 0 -DCIO_DSYNC_SOFT_RESET_ASSERT = 1 -DCIO_DSYNC_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DACA_SOFT_RESET' -DCIO_DACA_SOFT_RESET__enumvalues = { - 0: 'DCIO_DACA_SOFT_RESET_DEASSERT', - 1: 'DCIO_DACA_SOFT_RESET_ASSERT', -} -DCIO_DACA_SOFT_RESET_DEASSERT = 0 -DCIO_DACA_SOFT_RESET_ASSERT = 1 -DCIO_DACA_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DCRXPHY_SOFT_RESET' -DCIO_DCRXPHY_SOFT_RESET__enumvalues = { - 0: 'DCIO_DCRXPHY_SOFT_RESET_DEASSERT', - 1: 'DCIO_DCRXPHY_SOFT_RESET_ASSERT', -} -DCIO_DCRXPHY_SOFT_RESET_DEASSERT = 0 -DCIO_DCRXPHY_SOFT_RESET_ASSERT = 1 -DCIO_DCRXPHY_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DPHY_LANE_SEL' -DCIO_DPHY_LANE_SEL__enumvalues = { - 0: 'DCIO_DPHY_LANE_SEL_LANE0', - 1: 'DCIO_DPHY_LANE_SEL_LANE1', - 2: 'DCIO_DPHY_LANE_SEL_LANE2', - 3: 'DCIO_DPHY_LANE_SEL_LANE3', -} -DCIO_DPHY_LANE_SEL_LANE0 = 0 -DCIO_DPHY_LANE_SEL_LANE1 = 1 -DCIO_DPHY_LANE_SEL_LANE2 = 2 -DCIO_DPHY_LANE_SEL_LANE3 = 3 -DCIO_DPHY_LANE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DPCS_INTERRUPT_TYPE' -DCIO_DPCS_INTERRUPT_TYPE__enumvalues = { - 0: 'DCIO_DPCS_INTERRUPT_TYPE_LEVEL_BASED', - 1: 'DCIO_DPCS_INTERRUPT_TYPE_PULSE_BASED', -} -DCIO_DPCS_INTERRUPT_TYPE_LEVEL_BASED = 0 -DCIO_DPCS_INTERRUPT_TYPE_PULSE_BASED = 1 -DCIO_DPCS_INTERRUPT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DPCS_INTERRUPT_MASK' -DCIO_DPCS_INTERRUPT_MASK__enumvalues = { - 0: 'DCIO_DPCS_INTERRUPT_DISABLE', - 1: 'DCIO_DPCS_INTERRUPT_ENABLE', -} -DCIO_DPCS_INTERRUPT_DISABLE = 0 -DCIO_DPCS_INTERRUPT_ENABLE = 1 -DCIO_DPCS_INTERRUPT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GPU_TIMER_READ_SELECT' -DCIO_DC_GPU_TIMER_READ_SELECT__enumvalues = { - 0: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE', - 1: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE', - 2: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE', - 3: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE', - 4: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE', - 5: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE', - 6: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE', - 7: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE', - 8: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D5_V_UPDATE', - 9: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D5_V_UPDATE', - 10: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D6_V_UPDATE', - 11: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D6_V_UPDATE', - 12: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_P_FLIP', - 13: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_P_FLIP', - 14: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D2_P_FLIP', - 15: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D2_P_FLIP', - 16: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D3_P_FLIP', - 17: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D3_P_FLIP', - 18: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D4_P_FLIP', - 19: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D4_P_FLIP', - 20: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D5_P_FLIP', - 21: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D5_P_FLIP', - 22: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D6_P_FLIP', - 23: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D6_P_FLIP', - 24: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM', - 25: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM', - 26: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D2_VSYNC_NOM', - 27: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D2_VSYNC_NOM', - 28: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D3_VSYNC_NOM', - 29: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D3_VSYNC_NOM', - 30: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D4_VSYNC_NOM', - 31: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D4_VSYNC_NOM', - 32: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D5_VSYNC_NOM', - 33: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D5_VSYNC_NOM', - 34: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D6_VSYNC_NOM', - 35: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D6_VSYNC_NOM', -} -DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE = 0 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE = 1 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE = 2 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE = 3 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE = 4 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE = 5 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE = 6 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE = 7 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D5_V_UPDATE = 8 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D5_V_UPDATE = 9 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D6_V_UPDATE = 10 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D6_V_UPDATE = 11 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_P_FLIP = 12 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_P_FLIP = 13 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D2_P_FLIP = 14 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D2_P_FLIP = 15 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D3_P_FLIP = 16 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D3_P_FLIP = 17 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D4_P_FLIP = 18 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D4_P_FLIP = 19 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D5_P_FLIP = 20 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D5_P_FLIP = 21 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D6_P_FLIP = 22 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D6_P_FLIP = 23 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM = 24 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM = 25 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D2_VSYNC_NOM = 26 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D2_VSYNC_NOM = 27 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D3_VSYNC_NOM = 28 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D3_VSYNC_NOM = 29 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D4_VSYNC_NOM = 30 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D4_VSYNC_NOM = 31 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D5_VSYNC_NOM = 32 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D5_VSYNC_NOM = 33 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D6_VSYNC_NOM = 34 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D6_VSYNC_NOM = 35 -DCIO_DC_GPU_TIMER_READ_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_IMPCAL_STEP_DELAY' -DCIO_IMPCAL_STEP_DELAY__enumvalues = { - 0: 'DCIO_IMPCAL_STEP_DELAY_1us', - 1: 'DCIO_IMPCAL_STEP_DELAY_2us', - 2: 'DCIO_IMPCAL_STEP_DELAY_3us', - 3: 'DCIO_IMPCAL_STEP_DELAY_4us', - 4: 'DCIO_IMPCAL_STEP_DELAY_5us', - 5: 'DCIO_IMPCAL_STEP_DELAY_6us', - 6: 'DCIO_IMPCAL_STEP_DELAY_7us', - 7: 'DCIO_IMPCAL_STEP_DELAY_8us', - 8: 'DCIO_IMPCAL_STEP_DELAY_9us', - 9: 'DCIO_IMPCAL_STEP_DELAY_10us', - 10: 'DCIO_IMPCAL_STEP_DELAY_11us', - 11: 'DCIO_IMPCAL_STEP_DELAY_12us', - 12: 'DCIO_IMPCAL_STEP_DELAY_13us', - 13: 'DCIO_IMPCAL_STEP_DELAY_14us', - 14: 'DCIO_IMPCAL_STEP_DELAY_15us', - 15: 'DCIO_IMPCAL_STEP_DELAY_16us', -} -DCIO_IMPCAL_STEP_DELAY_1us = 0 -DCIO_IMPCAL_STEP_DELAY_2us = 1 -DCIO_IMPCAL_STEP_DELAY_3us = 2 -DCIO_IMPCAL_STEP_DELAY_4us = 3 -DCIO_IMPCAL_STEP_DELAY_5us = 4 -DCIO_IMPCAL_STEP_DELAY_6us = 5 -DCIO_IMPCAL_STEP_DELAY_7us = 6 -DCIO_IMPCAL_STEP_DELAY_8us = 7 -DCIO_IMPCAL_STEP_DELAY_9us = 8 -DCIO_IMPCAL_STEP_DELAY_10us = 9 -DCIO_IMPCAL_STEP_DELAY_11us = 10 -DCIO_IMPCAL_STEP_DELAY_12us = 11 -DCIO_IMPCAL_STEP_DELAY_13us = 12 -DCIO_IMPCAL_STEP_DELAY_14us = 13 -DCIO_IMPCAL_STEP_DELAY_15us = 14 -DCIO_IMPCAL_STEP_DELAY_16us = 15 -DCIO_IMPCAL_STEP_DELAY = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_IMPCAL_SEL' -DCIO_UNIPHY_IMPCAL_SEL__enumvalues = { - 0: 'DCIO_UNIPHY_IMPCAL_SEL_TEMPERATURE', - 1: 'DCIO_UNIPHY_IMPCAL_SEL_BINARY', -} -DCIO_UNIPHY_IMPCAL_SEL_TEMPERATURE = 0 -DCIO_UNIPHY_IMPCAL_SEL_BINARY = 1 -DCIO_UNIPHY_IMPCAL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DBG_ASYNC_BLOCK_SEL' -DCIO_DBG_ASYNC_BLOCK_SEL__enumvalues = { - 0: 'DCIO_DBG_ASYNC_BLOCK_SEL_OVERRIDE', - 1: 'DCIO_DBG_ASYNC_BLOCK_SEL_DCCG', - 2: 'DCIO_DBG_ASYNC_BLOCK_SEL_DCIO', - 3: 'DCIO_DBG_ASYNC_BLOCK_SEL_DCO', -} -DCIO_DBG_ASYNC_BLOCK_SEL_OVERRIDE = 0 -DCIO_DBG_ASYNC_BLOCK_SEL_DCCG = 1 -DCIO_DBG_ASYNC_BLOCK_SEL_DCIO = 2 -DCIO_DBG_ASYNC_BLOCK_SEL_DCO = 3 -DCIO_DBG_ASYNC_BLOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DBG_ASYNC_4BIT_SEL' -DCIO_DBG_ASYNC_4BIT_SEL__enumvalues = { - 0: 'DCIO_DBG_ASYNC_4BIT_SEL_3TO0', - 1: 'DCIO_DBG_ASYNC_4BIT_SEL_7TO4', - 2: 'DCIO_DBG_ASYNC_4BIT_SEL_11TO8', - 3: 'DCIO_DBG_ASYNC_4BIT_SEL_15TO12', - 4: 'DCIO_DBG_ASYNC_4BIT_SEL_19TO16', - 5: 'DCIO_DBG_ASYNC_4BIT_SEL_23TO20', - 6: 'DCIO_DBG_ASYNC_4BIT_SEL_27TO24', - 7: 'DCIO_DBG_ASYNC_4BIT_SEL_31TO28', -} -DCIO_DBG_ASYNC_4BIT_SEL_3TO0 = 0 -DCIO_DBG_ASYNC_4BIT_SEL_7TO4 = 1 -DCIO_DBG_ASYNC_4BIT_SEL_11TO8 = 2 -DCIO_DBG_ASYNC_4BIT_SEL_15TO12 = 3 -DCIO_DBG_ASYNC_4BIT_SEL_19TO16 = 4 -DCIO_DBG_ASYNC_4BIT_SEL_23TO20 = 5 -DCIO_DBG_ASYNC_4BIT_SEL_27TO24 = 6 -DCIO_DBG_ASYNC_4BIT_SEL_31TO28 = 7 -DCIO_DBG_ASYNC_4BIT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'AOUT_EN' -AOUT_EN__enumvalues = { - 0: 'AOUT_DISABLE', - 1: 'AOUT_ENABLE', -} -AOUT_DISABLE = 0 -AOUT_ENABLE = 1 -AOUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'AOUT_FIFO_START_ADDR' -AOUT_FIFO_START_ADDR__enumvalues = { - 0: 'AOUT_FIFO_START_ADDR_2', - 1: 'AOUT_FIFO_START_ADDR_3', -} -AOUT_FIFO_START_ADDR_2 = 0 -AOUT_FIFO_START_ADDR_3 = 1 -AOUT_FIFO_START_ADDR = ctypes.c_uint32 # enum - -# values for enumeration 'AOUT_CRC_TEST_EN' -AOUT_CRC_TEST_EN__enumvalues = { - 0: 'AOUT_CRC_DISABLE', - 1: 'AOUT_CRC_ENABLE', -} -AOUT_CRC_DISABLE = 0 -AOUT_CRC_ENABLE = 1 -AOUT_CRC_TEST_EN = ctypes.c_uint32 # enum - -# values for enumeration 'AOUT_CRC_SOFT_RESET' -AOUT_CRC_SOFT_RESET__enumvalues = { - 0: 'AOUT_CRC_NO_RESET', - 1: 'AOUT_CRC_RESET', -} -AOUT_CRC_NO_RESET = 0 -AOUT_CRC_RESET = 1 -AOUT_CRC_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'AOUT_CRC_CONT_EN' -AOUT_CRC_CONT_EN__enumvalues = { - 0: 'AOUT_CRC_ONE_SHOT', - 1: 'AOUT_CRC_CONT', -} -AOUT_CRC_ONE_SHOT = 0 -AOUT_CRC_CONT = 1 -AOUT_CRC_CONT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'I2S_WORD_SIZE' -I2S_WORD_SIZE__enumvalues = { - 0: 'I2S_WORD_SIZE_32', - 1: 'I2S_WORD_SIZE_16', -} -I2S_WORD_SIZE_32 = 0 -I2S_WORD_SIZE_16 = 1 -I2S_WORD_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'I2S_SAMPLE_ALIGNMENT' -I2S_SAMPLE_ALIGNMENT__enumvalues = { - 0: 'I2S_SAMPLE_LEFT_ALIGNED', - 1: 'I2S_SAMPLE_RIGHT_ALIGNED', -} -I2S_SAMPLE_LEFT_ALIGNED = 0 -I2S_SAMPLE_RIGHT_ALIGNED = 1 -I2S_SAMPLE_ALIGNMENT = ctypes.c_uint32 # enum - -# values for enumeration 'I2S_SAMPLE_BIT_ORDER' -I2S_SAMPLE_BIT_ORDER__enumvalues = { - 0: 'I2S_SAMPLE_BIT_ORDER_MSB', - 1: 'I2S_SAMPLE_BIT_ORDER_LSB', -} -I2S_SAMPLE_BIT_ORDER_MSB = 0 -I2S_SAMPLE_BIT_ORDER_LSB = 1 -I2S_SAMPLE_BIT_ORDER = ctypes.c_uint32 # enum - -# values for enumeration 'I2S_LRCLK_POLARITY' -I2S_LRCLK_POLARITY__enumvalues = { - 0: 'I2S_LRCLK_LOW_LEFT', - 1: 'I2S_LRCLK_HIGH_LEFT', -} -I2S_LRCLK_LOW_LEFT = 0 -I2S_LRCLK_HIGH_LEFT = 1 -I2S_LRCLK_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'I2S_WORD_ALIGNMENT' -I2S_WORD_ALIGNMENT__enumvalues = { - 0: 'I2S_WORD_ALTERNATE_ALIGNMENT', - 1: 'I2S_WORD_I2S_ALIGNMENT', -} -I2S_WORD_ALTERNATE_ALIGNMENT = 0 -I2S_WORD_I2S_ALIGNMENT = 1 -I2S_WORD_ALIGNMENT = ctypes.c_uint32 # enum - -# values for enumeration 'SPDIF_INVERT_EN' -SPDIF_INVERT_EN__enumvalues = { - 0: 'SPDIF_INVERT_DISABLE', - 1: 'SPDIF_INVERT_ENABLE', -} -SPDIF_INVERT_DISABLE = 0 -SPDIF_INVERT_ENABLE = 1 -SPDIF_INVERT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPDBG_EN' -DPDBG_EN__enumvalues = { - 0: 'DPDBG_DISABLE', - 1: 'DPDBG_ENABLE', -} -DPDBG_DISABLE = 0 -DPDBG_ENABLE = 1 -DPDBG_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPDBG_INPUT_EN' -DPDBG_INPUT_EN__enumvalues = { - 0: 'DPDBG_INPUT_DISABLE', - 1: 'DPDBG_INPUT_ENABLE', -} -DPDBG_INPUT_DISABLE = 0 -DPDBG_INPUT_ENABLE = 1 -DPDBG_INPUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPDBG_ERROR_DETECTION_MODE' -DPDBG_ERROR_DETECTION_MODE__enumvalues = { - 0: 'DPDBG_ERROR_DETECTION_MODE_CSC', - 1: 'DPDBG_ERROR_DETECTION_MODE_RS_ENCODING', -} -DPDBG_ERROR_DETECTION_MODE_CSC = 0 -DPDBG_ERROR_DETECTION_MODE_RS_ENCODING = 1 -DPDBG_ERROR_DETECTION_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DPDBG_FIFO_OVERFLOW_INTERRUPT_MASK' -DPDBG_FIFO_OVERFLOW_INTERRUPT_MASK__enumvalues = { - 0: 'DPDBG_FIFO_OVERFLOW_INT_DISABLE', - 1: 'DPDBG_FIFO_OVERFLOW_INT_ENABLE', -} -DPDBG_FIFO_OVERFLOW_INT_DISABLE = 0 -DPDBG_FIFO_OVERFLOW_INT_ENABLE = 1 -DPDBG_FIFO_OVERFLOW_INTERRUPT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DPDBG_FIFO_OVERFLOW_INTERRUPT_TYPE' -DPDBG_FIFO_OVERFLOW_INTERRUPT_TYPE__enumvalues = { - 0: 'DPDBG_FIFO_OVERFLOW_INT_LEVEL_BASED', - 1: 'DPDBG_FIFO_OVERFLOW_INT_PULSE_BASED', -} -DPDBG_FIFO_OVERFLOW_INT_LEVEL_BASED = 0 -DPDBG_FIFO_OVERFLOW_INT_PULSE_BASED = 1 -DPDBG_FIFO_OVERFLOW_INTERRUPT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DPDBG_FIFO_OVERFLOW_INTERRUPT_ACK' -DPDBG_FIFO_OVERFLOW_INTERRUPT_ACK__enumvalues = { - 0: 'DPDBG_FIFO_OVERFLOW_INT_NO_ACK', - 1: 'DPDBG_FIFO_OVERFLOW_INT_CLEAR', -} -DPDBG_FIFO_OVERFLOW_INT_NO_ACK = 0 -DPDBG_FIFO_OVERFLOW_INT_CLEAR = 1 -DPDBG_FIFO_OVERFLOW_INTERRUPT_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'PM_ASSERT_RESET' -PM_ASSERT_RESET__enumvalues = { - 0: 'PM_ASSERT_RESET_0', - 1: 'PM_ASSERT_RESET_1', -} -PM_ASSERT_RESET_0 = 0 -PM_ASSERT_RESET_1 = 1 -PM_ASSERT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DAC_MUX_SELECT' -DAC_MUX_SELECT__enumvalues = { - 0: 'DAC_MUX_SELECT_DACA', - 1: 'DAC_MUX_SELECT_DACB', -} -DAC_MUX_SELECT_DACA = 0 -DAC_MUX_SELECT_DACB = 1 -DAC_MUX_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_DVO_MUX_SELECT' -TMDS_DVO_MUX_SELECT__enumvalues = { - 0: 'TMDS_DVO_MUX_SELECT_B', - 1: 'TMDS_DVO_MUX_SELECT_G', - 2: 'TMDS_DVO_MUX_SELECT_R', - 3: 'TMDS_DVO_MUX_SELECT_RESERVED', -} -TMDS_DVO_MUX_SELECT_B = 0 -TMDS_DVO_MUX_SELECT_G = 1 -TMDS_DVO_MUX_SELECT_R = 2 -TMDS_DVO_MUX_SELECT_RESERVED = 3 -TMDS_DVO_MUX_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DACA_SOFT_RESET' -DACA_SOFT_RESET__enumvalues = { - 0: 'DACA_SOFT_RESET_0', - 1: 'DACA_SOFT_RESET_1', -} -DACA_SOFT_RESET_0 = 0 -DACA_SOFT_RESET_1 = 1 -DACA_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'I2S0_SPDIF0_SOFT_RESET' -I2S0_SPDIF0_SOFT_RESET__enumvalues = { - 0: 'I2S0_SPDIF0_SOFT_RESET_0', - 1: 'I2S0_SPDIF0_SOFT_RESET_1', -} -I2S0_SPDIF0_SOFT_RESET_0 = 0 -I2S0_SPDIF0_SOFT_RESET_1 = 1 -I2S0_SPDIF0_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'I2S1_SOFT_RESET' -I2S1_SOFT_RESET__enumvalues = { - 0: 'I2S1_SOFT_RESET_0', - 1: 'I2S1_SOFT_RESET_1', -} -I2S1_SOFT_RESET_0 = 0 -I2S1_SOFT_RESET_1 = 1 -I2S1_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'SPDIF1_SOFT_RESET' -SPDIF1_SOFT_RESET__enumvalues = { - 0: 'SPDIF1_SOFT_RESET_0', - 1: 'SPDIF1_SOFT_RESET_1', -} -SPDIF1_SOFT_RESET_0 = 0 -SPDIF1_SOFT_RESET_1 = 1 -SPDIF1_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DB_CLK_SOFT_RESET' -DB_CLK_SOFT_RESET__enumvalues = { - 0: 'DB_CLK_SOFT_RESET_0', - 1: 'DB_CLK_SOFT_RESET_1', -} -DB_CLK_SOFT_RESET_0 = 0 -DB_CLK_SOFT_RESET_1 = 1 -DB_CLK_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'FMT0_SOFT_RESET' -FMT0_SOFT_RESET__enumvalues = { - 0: 'FMT0_SOFT_RESET_0', - 1: 'FMT0_SOFT_RESET_1', -} -FMT0_SOFT_RESET_0 = 0 -FMT0_SOFT_RESET_1 = 1 -FMT0_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'FMT1_SOFT_RESET' -FMT1_SOFT_RESET__enumvalues = { - 0: 'FMT1_SOFT_RESET_0', - 1: 'FMT1_SOFT_RESET_1', -} -FMT1_SOFT_RESET_0 = 0 -FMT1_SOFT_RESET_1 = 1 -FMT1_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'FMT2_SOFT_RESET' -FMT2_SOFT_RESET__enumvalues = { - 0: 'FMT2_SOFT_RESET_0', - 1: 'FMT2_SOFT_RESET_1', -} -FMT2_SOFT_RESET_0 = 0 -FMT2_SOFT_RESET_1 = 1 -FMT2_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'FMT3_SOFT_RESET' -FMT3_SOFT_RESET__enumvalues = { - 0: 'FMT3_SOFT_RESET_0', - 1: 'FMT3_SOFT_RESET_1', -} -FMT3_SOFT_RESET_0 = 0 -FMT3_SOFT_RESET_1 = 1 -FMT3_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'FMT4_SOFT_RESET' -FMT4_SOFT_RESET__enumvalues = { - 0: 'FMT4_SOFT_RESET_0', - 1: 'FMT4_SOFT_RESET_1', -} -FMT4_SOFT_RESET_0 = 0 -FMT4_SOFT_RESET_1 = 1 -FMT4_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'FMT5_SOFT_RESET' -FMT5_SOFT_RESET__enumvalues = { - 0: 'FMT5_SOFT_RESET_0', - 1: 'FMT5_SOFT_RESET_1', -} -FMT5_SOFT_RESET_0 = 0 -FMT5_SOFT_RESET_1 = 1 -FMT5_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'MVP_SOFT_RESET' -MVP_SOFT_RESET__enumvalues = { - 0: 'MVP_SOFT_RESET_0', - 1: 'MVP_SOFT_RESET_1', -} -MVP_SOFT_RESET_0 = 0 -MVP_SOFT_RESET_1 = 1 -MVP_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'ABM_SOFT_RESET' -ABM_SOFT_RESET__enumvalues = { - 0: 'ABM_SOFT_RESET_0', - 1: 'ABM_SOFT_RESET_1', -} -ABM_SOFT_RESET_0 = 0 -ABM_SOFT_RESET_1 = 1 -ABM_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DVO_SOFT_RESET' -DVO_SOFT_RESET__enumvalues = { - 0: 'DVO_SOFT_RESET_0', - 1: 'DVO_SOFT_RESET_1', -} -DVO_SOFT_RESET_0 = 0 -DVO_SOFT_RESET_1 = 1 -DVO_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIGA_FE_SOFT_RESET' -DIGA_FE_SOFT_RESET__enumvalues = { - 0: 'DIGA_FE_SOFT_RESET_0', - 1: 'DIGA_FE_SOFT_RESET_1', -} -DIGA_FE_SOFT_RESET_0 = 0 -DIGA_FE_SOFT_RESET_1 = 1 -DIGA_FE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIGA_BE_SOFT_RESET' -DIGA_BE_SOFT_RESET__enumvalues = { - 0: 'DIGA_BE_SOFT_RESET_0', - 1: 'DIGA_BE_SOFT_RESET_1', -} -DIGA_BE_SOFT_RESET_0 = 0 -DIGA_BE_SOFT_RESET_1 = 1 -DIGA_BE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIGB_FE_SOFT_RESET' -DIGB_FE_SOFT_RESET__enumvalues = { - 0: 'DIGB_FE_SOFT_RESET_0', - 1: 'DIGB_FE_SOFT_RESET_1', -} -DIGB_FE_SOFT_RESET_0 = 0 -DIGB_FE_SOFT_RESET_1 = 1 -DIGB_FE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIGB_BE_SOFT_RESET' -DIGB_BE_SOFT_RESET__enumvalues = { - 0: 'DIGB_BE_SOFT_RESET_0', - 1: 'DIGB_BE_SOFT_RESET_1', -} -DIGB_BE_SOFT_RESET_0 = 0 -DIGB_BE_SOFT_RESET_1 = 1 -DIGB_BE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIGC_FE_SOFT_RESET' -DIGC_FE_SOFT_RESET__enumvalues = { - 0: 'DIGC_FE_SOFT_RESET_0', - 1: 'DIGC_FE_SOFT_RESET_1', -} -DIGC_FE_SOFT_RESET_0 = 0 -DIGC_FE_SOFT_RESET_1 = 1 -DIGC_FE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIGC_BE_SOFT_RESET' -DIGC_BE_SOFT_RESET__enumvalues = { - 0: 'DIGC_BE_SOFT_RESET_0', - 1: 'DIGC_BE_SOFT_RESET_1', -} -DIGC_BE_SOFT_RESET_0 = 0 -DIGC_BE_SOFT_RESET_1 = 1 -DIGC_BE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIGD_FE_SOFT_RESET' -DIGD_FE_SOFT_RESET__enumvalues = { - 0: 'DIGD_FE_SOFT_RESET_0', - 1: 'DIGD_FE_SOFT_RESET_1', -} -DIGD_FE_SOFT_RESET_0 = 0 -DIGD_FE_SOFT_RESET_1 = 1 -DIGD_FE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIGD_BE_SOFT_RESET' -DIGD_BE_SOFT_RESET__enumvalues = { - 0: 'DIGD_BE_SOFT_RESET_0', - 1: 'DIGD_BE_SOFT_RESET_1', -} -DIGD_BE_SOFT_RESET_0 = 0 -DIGD_BE_SOFT_RESET_1 = 1 -DIGD_BE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIGE_FE_SOFT_RESET' -DIGE_FE_SOFT_RESET__enumvalues = { - 0: 'DIGE_FE_SOFT_RESET_0', - 1: 'DIGE_FE_SOFT_RESET_1', -} -DIGE_FE_SOFT_RESET_0 = 0 -DIGE_FE_SOFT_RESET_1 = 1 -DIGE_FE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIGE_BE_SOFT_RESET' -DIGE_BE_SOFT_RESET__enumvalues = { - 0: 'DIGE_BE_SOFT_RESET_0', - 1: 'DIGE_BE_SOFT_RESET_1', -} -DIGE_BE_SOFT_RESET_0 = 0 -DIGE_BE_SOFT_RESET_1 = 1 -DIGE_BE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIGF_FE_SOFT_RESET' -DIGF_FE_SOFT_RESET__enumvalues = { - 0: 'DIGF_FE_SOFT_RESET_0', - 1: 'DIGF_FE_SOFT_RESET_1', -} -DIGF_FE_SOFT_RESET_0 = 0 -DIGF_FE_SOFT_RESET_1 = 1 -DIGF_FE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIGF_BE_SOFT_RESET' -DIGF_BE_SOFT_RESET__enumvalues = { - 0: 'DIGF_BE_SOFT_RESET_0', - 1: 'DIGF_BE_SOFT_RESET_1', -} -DIGF_BE_SOFT_RESET_0 = 0 -DIGF_BE_SOFT_RESET_1 = 1 -DIGF_BE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIGG_FE_SOFT_RESET' -DIGG_FE_SOFT_RESET__enumvalues = { - 0: 'DIGG_FE_SOFT_RESET_0', - 1: 'DIGG_FE_SOFT_RESET_1', -} -DIGG_FE_SOFT_RESET_0 = 0 -DIGG_FE_SOFT_RESET_1 = 1 -DIGG_FE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIGG_BE_SOFT_RESET' -DIGG_BE_SOFT_RESET__enumvalues = { - 0: 'DIGG_BE_SOFT_RESET_0', - 1: 'DIGG_BE_SOFT_RESET_1', -} -DIGG_BE_SOFT_RESET_0 = 0 -DIGG_BE_SOFT_RESET_1 = 1 -DIGG_BE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DPDBG_SOFT_RESET' -DPDBG_SOFT_RESET__enumvalues = { - 0: 'DPDBG_SOFT_RESET_0', - 1: 'DPDBG_SOFT_RESET_1', -} -DPDBG_SOFT_RESET_0 = 0 -DPDBG_SOFT_RESET_1 = 1 -DPDBG_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIGLPA_FE_SOFT_RESET' -DIGLPA_FE_SOFT_RESET__enumvalues = { - 0: 'DIGLPA_FE_SOFT_RESET_0', - 1: 'DIGLPA_FE_SOFT_RESET_1', -} -DIGLPA_FE_SOFT_RESET_0 = 0 -DIGLPA_FE_SOFT_RESET_1 = 1 -DIGLPA_FE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIGLPA_BE_SOFT_RESET' -DIGLPA_BE_SOFT_RESET__enumvalues = { - 0: 'DIGLPA_BE_SOFT_RESET_0', - 1: 'DIGLPA_BE_SOFT_RESET_1', -} -DIGLPA_BE_SOFT_RESET_0 = 0 -DIGLPA_BE_SOFT_RESET_1 = 1 -DIGLPA_BE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIGLPB_FE_SOFT_RESET' -DIGLPB_FE_SOFT_RESET__enumvalues = { - 0: 'DIGLPB_FE_SOFT_RESET_0', - 1: 'DIGLPB_FE_SOFT_RESET_1', -} -DIGLPB_FE_SOFT_RESET_0 = 0 -DIGLPB_FE_SOFT_RESET_1 = 1 -DIGLPB_FE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIGLPB_BE_SOFT_RESET' -DIGLPB_BE_SOFT_RESET__enumvalues = { - 0: 'DIGLPB_BE_SOFT_RESET_0', - 1: 'DIGLPB_BE_SOFT_RESET_1', -} -DIGLPB_BE_SOFT_RESET_0 = 0 -DIGLPB_BE_SOFT_RESET_1 = 1 -DIGLPB_BE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'GENERICA_STEREOSYNC_SEL' -GENERICA_STEREOSYNC_SEL__enumvalues = { - 0: 'GENERICA_STEREOSYNC_SEL_D1', - 1: 'GENERICA_STEREOSYNC_SEL_D2', - 2: 'GENERICA_STEREOSYNC_SEL_D3', - 3: 'GENERICA_STEREOSYNC_SEL_D4', - 4: 'GENERICA_STEREOSYNC_SEL_D5', - 5: 'GENERICA_STEREOSYNC_SEL_D6', - 6: 'GENERICA_STEREOSYNC_SEL_RESERVED', -} -GENERICA_STEREOSYNC_SEL_D1 = 0 -GENERICA_STEREOSYNC_SEL_D2 = 1 -GENERICA_STEREOSYNC_SEL_D3 = 2 -GENERICA_STEREOSYNC_SEL_D4 = 3 -GENERICA_STEREOSYNC_SEL_D5 = 4 -GENERICA_STEREOSYNC_SEL_D6 = 5 -GENERICA_STEREOSYNC_SEL_RESERVED = 6 -GENERICA_STEREOSYNC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GENERICB_STEREOSYNC_SEL' -GENERICB_STEREOSYNC_SEL__enumvalues = { - 0: 'GENERICB_STEREOSYNC_SEL_D1', - 1: 'GENERICB_STEREOSYNC_SEL_D2', - 2: 'GENERICB_STEREOSYNC_SEL_D3', - 3: 'GENERICB_STEREOSYNC_SEL_D4', - 4: 'GENERICB_STEREOSYNC_SEL_D5', - 5: 'GENERICB_STEREOSYNC_SEL_D6', - 6: 'GENERICB_STEREOSYNC_SEL_RESERVED', -} -GENERICB_STEREOSYNC_SEL_D1 = 0 -GENERICB_STEREOSYNC_SEL_D2 = 1 -GENERICB_STEREOSYNC_SEL_D3 = 2 -GENERICB_STEREOSYNC_SEL_D4 = 3 -GENERICB_STEREOSYNC_SEL_D5 = 4 -GENERICB_STEREOSYNC_SEL_D6 = 5 -GENERICB_STEREOSYNC_SEL_RESERVED = 6 -GENERICB_STEREOSYNC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCO_DBG_BLOCK_SEL' -DCO_DBG_BLOCK_SEL__enumvalues = { - 0: 'DCO_DBG_BLOCK_SEL_DCO', - 1: 'DCO_DBG_BLOCK_SEL_ABM', - 2: 'DCO_DBG_BLOCK_SEL_DVO', - 3: 'DCO_DBG_BLOCK_SEL_DAC', - 4: 'DCO_DBG_BLOCK_SEL_MVP', - 5: 'DCO_DBG_BLOCK_SEL_FMT0', - 6: 'DCO_DBG_BLOCK_SEL_FMT1', - 7: 'DCO_DBG_BLOCK_SEL_FMT2', - 8: 'DCO_DBG_BLOCK_SEL_FMT3', - 9: 'DCO_DBG_BLOCK_SEL_FMT4', - 10: 'DCO_DBG_BLOCK_SEL_FMT5', - 11: 'DCO_DBG_BLOCK_SEL_DIGFE_A', - 12: 'DCO_DBG_BLOCK_SEL_DIGFE_B', - 13: 'DCO_DBG_BLOCK_SEL_DIGFE_C', - 14: 'DCO_DBG_BLOCK_SEL_DIGFE_D', - 15: 'DCO_DBG_BLOCK_SEL_DIGFE_E', - 16: 'DCO_DBG_BLOCK_SEL_DIGFE_F', - 17: 'DCO_DBG_BLOCK_SEL_DIGFE_G', - 18: 'DCO_DBG_BLOCK_SEL_DIGA', - 19: 'DCO_DBG_BLOCK_SEL_DIGB', - 20: 'DCO_DBG_BLOCK_SEL_DIGC', - 21: 'DCO_DBG_BLOCK_SEL_DIGD', - 22: 'DCO_DBG_BLOCK_SEL_DIGE', - 23: 'DCO_DBG_BLOCK_SEL_DIGF', - 24: 'DCO_DBG_BLOCK_SEL_DIGG', - 25: 'DCO_DBG_BLOCK_SEL_DPFE_A', - 26: 'DCO_DBG_BLOCK_SEL_DPFE_B', - 27: 'DCO_DBG_BLOCK_SEL_DPFE_C', - 28: 'DCO_DBG_BLOCK_SEL_DPFE_D', - 29: 'DCO_DBG_BLOCK_SEL_DPFE_E', - 30: 'DCO_DBG_BLOCK_SEL_DPFE_F', - 31: 'DCO_DBG_BLOCK_SEL_DPFE_G', - 32: 'DCO_DBG_BLOCK_SEL_DPA', - 33: 'DCO_DBG_BLOCK_SEL_DPB', - 34: 'DCO_DBG_BLOCK_SEL_DPC', - 35: 'DCO_DBG_BLOCK_SEL_DPD', - 36: 'DCO_DBG_BLOCK_SEL_DPE', - 37: 'DCO_DBG_BLOCK_SEL_DPF', - 38: 'DCO_DBG_BLOCK_SEL_DPG', - 39: 'DCO_DBG_BLOCK_SEL_AUX0', - 40: 'DCO_DBG_BLOCK_SEL_AUX1', - 41: 'DCO_DBG_BLOCK_SEL_AUX2', - 42: 'DCO_DBG_BLOCK_SEL_AUX3', - 43: 'DCO_DBG_BLOCK_SEL_AUX4', - 44: 'DCO_DBG_BLOCK_SEL_AUX5', - 45: 'DCO_DBG_BLOCK_SEL_PERFMON_DCO', - 46: 'DCO_DBG_BLOCK_SEL_AUDIO_OUT', - 47: 'DCO_DBG_BLOCK_SEL_DIGLPFEA', - 48: 'DCO_DBG_BLOCK_SEL_DIGLPFEB', - 49: 'DCO_DBG_BLOCK_SEL_DIGLPA', - 50: 'DCO_DBG_BLOCK_SEL_DIGLPB', - 51: 'DCO_DBG_BLOCK_SEL_DPLPFEA', - 52: 'DCO_DBG_BLOCK_SEL_DPLPFEB', - 53: 'DCO_DBG_BLOCK_SEL_DPLPA', - 54: 'DCO_DBG_BLOCK_SEL_DPLPB', -} -DCO_DBG_BLOCK_SEL_DCO = 0 -DCO_DBG_BLOCK_SEL_ABM = 1 -DCO_DBG_BLOCK_SEL_DVO = 2 -DCO_DBG_BLOCK_SEL_DAC = 3 -DCO_DBG_BLOCK_SEL_MVP = 4 -DCO_DBG_BLOCK_SEL_FMT0 = 5 -DCO_DBG_BLOCK_SEL_FMT1 = 6 -DCO_DBG_BLOCK_SEL_FMT2 = 7 -DCO_DBG_BLOCK_SEL_FMT3 = 8 -DCO_DBG_BLOCK_SEL_FMT4 = 9 -DCO_DBG_BLOCK_SEL_FMT5 = 10 -DCO_DBG_BLOCK_SEL_DIGFE_A = 11 -DCO_DBG_BLOCK_SEL_DIGFE_B = 12 -DCO_DBG_BLOCK_SEL_DIGFE_C = 13 -DCO_DBG_BLOCK_SEL_DIGFE_D = 14 -DCO_DBG_BLOCK_SEL_DIGFE_E = 15 -DCO_DBG_BLOCK_SEL_DIGFE_F = 16 -DCO_DBG_BLOCK_SEL_DIGFE_G = 17 -DCO_DBG_BLOCK_SEL_DIGA = 18 -DCO_DBG_BLOCK_SEL_DIGB = 19 -DCO_DBG_BLOCK_SEL_DIGC = 20 -DCO_DBG_BLOCK_SEL_DIGD = 21 -DCO_DBG_BLOCK_SEL_DIGE = 22 -DCO_DBG_BLOCK_SEL_DIGF = 23 -DCO_DBG_BLOCK_SEL_DIGG = 24 -DCO_DBG_BLOCK_SEL_DPFE_A = 25 -DCO_DBG_BLOCK_SEL_DPFE_B = 26 -DCO_DBG_BLOCK_SEL_DPFE_C = 27 -DCO_DBG_BLOCK_SEL_DPFE_D = 28 -DCO_DBG_BLOCK_SEL_DPFE_E = 29 -DCO_DBG_BLOCK_SEL_DPFE_F = 30 -DCO_DBG_BLOCK_SEL_DPFE_G = 31 -DCO_DBG_BLOCK_SEL_DPA = 32 -DCO_DBG_BLOCK_SEL_DPB = 33 -DCO_DBG_BLOCK_SEL_DPC = 34 -DCO_DBG_BLOCK_SEL_DPD = 35 -DCO_DBG_BLOCK_SEL_DPE = 36 -DCO_DBG_BLOCK_SEL_DPF = 37 -DCO_DBG_BLOCK_SEL_DPG = 38 -DCO_DBG_BLOCK_SEL_AUX0 = 39 -DCO_DBG_BLOCK_SEL_AUX1 = 40 -DCO_DBG_BLOCK_SEL_AUX2 = 41 -DCO_DBG_BLOCK_SEL_AUX3 = 42 -DCO_DBG_BLOCK_SEL_AUX4 = 43 -DCO_DBG_BLOCK_SEL_AUX5 = 44 -DCO_DBG_BLOCK_SEL_PERFMON_DCO = 45 -DCO_DBG_BLOCK_SEL_AUDIO_OUT = 46 -DCO_DBG_BLOCK_SEL_DIGLPFEA = 47 -DCO_DBG_BLOCK_SEL_DIGLPFEB = 48 -DCO_DBG_BLOCK_SEL_DIGLPA = 49 -DCO_DBG_BLOCK_SEL_DIGLPB = 50 -DCO_DBG_BLOCK_SEL_DPLPFEA = 51 -DCO_DBG_BLOCK_SEL_DPLPFEB = 52 -DCO_DBG_BLOCK_SEL_DPLPA = 53 -DCO_DBG_BLOCK_SEL_DPLPB = 54 -DCO_DBG_BLOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCO_HDMI_RXSTATUS_TIMER_CONTROL_DCO_HDMI_RXSTATUS_TIMER_TYPE' -DCO_HDMI_RXSTATUS_TIMER_CONTROL_DCO_HDMI_RXSTATUS_TIMER_TYPE__enumvalues = { - 0: 'DCO_HDMI_RXSTATUS_TIMER_TYPE_LEVEL', - 1: 'DCO_HDMI_RXSTATUS_TIMER_TYPE_PULSE', -} -DCO_HDMI_RXSTATUS_TIMER_TYPE_LEVEL = 0 -DCO_HDMI_RXSTATUS_TIMER_TYPE_PULSE = 1 -DCO_HDMI_RXSTATUS_TIMER_CONTROL_DCO_HDMI_RXSTATUS_TIMER_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT420_MEMORY_SOURCE_SEL' -FMT420_MEMORY_SOURCE_SEL__enumvalues = { - 0: 'FMT420_MEMORY_SOURCE_SEL_FMT0', - 1: 'FMT420_MEMORY_SOURCE_SEL_FMT1', - 2: 'FMT420_MEMORY_SOURCE_SEL_FMT2', - 3: 'FMT420_MEMORY_SOURCE_SEL_FMT3', - 4: 'FMT420_MEMORY_SOURCE_SEL_FMT4', - 5: 'FMT420_MEMORY_SOURCE_SEL_FMT5', - 6: 'FMT420_MEMORY_SOURCE_SEL_FMT_RESERVED', -} -FMT420_MEMORY_SOURCE_SEL_FMT0 = 0 -FMT420_MEMORY_SOURCE_SEL_FMT1 = 1 -FMT420_MEMORY_SOURCE_SEL_FMT2 = 2 -FMT420_MEMORY_SOURCE_SEL_FMT3 = 3 -FMT420_MEMORY_SOURCE_SEL_FMT4 = 4 -FMT420_MEMORY_SOURCE_SEL_FMT5 = 5 -FMT420_MEMORY_SOURCE_SEL_FMT_RESERVED = 6 -FMT420_MEMORY_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_GO' -DOUT_I2C_CONTROL_GO__enumvalues = { - 0: 'DOUT_I2C_CONTROL_STOP_TRANSFER', - 1: 'DOUT_I2C_CONTROL_START_TRANSFER', -} -DOUT_I2C_CONTROL_STOP_TRANSFER = 0 -DOUT_I2C_CONTROL_START_TRANSFER = 1 -DOUT_I2C_CONTROL_GO = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_SOFT_RESET' -DOUT_I2C_CONTROL_SOFT_RESET__enumvalues = { - 0: 'DOUT_I2C_CONTROL_NOT_RESET_I2C_CONTROLLER', - 1: 'DOUT_I2C_CONTROL_RESET_I2C_CONTROLLER', -} -DOUT_I2C_CONTROL_NOT_RESET_I2C_CONTROLLER = 0 -DOUT_I2C_CONTROL_RESET_I2C_CONTROLLER = 1 -DOUT_I2C_CONTROL_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_SEND_RESET' -DOUT_I2C_CONTROL_SEND_RESET__enumvalues = { - 0: 'DOUT_I2C_CONTROL__NOT_SEND_RESET', - 1: 'DOUT_I2C_CONTROL__SEND_RESET', -} -DOUT_I2C_CONTROL__NOT_SEND_RESET = 0 -DOUT_I2C_CONTROL__SEND_RESET = 1 -DOUT_I2C_CONTROL_SEND_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_SW_STATUS_RESET' -DOUT_I2C_CONTROL_SW_STATUS_RESET__enumvalues = { - 0: 'DOUT_I2C_CONTROL_NOT_RESET_SW_STATUS', - 1: 'DOUT_I2C_CONTROL_RESET_SW_STATUS', -} -DOUT_I2C_CONTROL_NOT_RESET_SW_STATUS = 0 -DOUT_I2C_CONTROL_RESET_SW_STATUS = 1 -DOUT_I2C_CONTROL_SW_STATUS_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_DDC_SELECT' -DOUT_I2C_CONTROL_DDC_SELECT__enumvalues = { - 0: 'DOUT_I2C_CONTROL_SELECT_DDC1', - 1: 'DOUT_I2C_CONTROL_SELECT_DDC2', - 2: 'DOUT_I2C_CONTROL_SELECT_DDC3', - 3: 'DOUT_I2C_CONTROL_SELECT_DDC4', - 4: 'DOUT_I2C_CONTROL_SELECT_DDC5', - 5: 'DOUT_I2C_CONTROL_SELECT_DDC6', - 6: 'DOUT_I2C_CONTROL_SELECT_DDCVGA', -} -DOUT_I2C_CONTROL_SELECT_DDC1 = 0 -DOUT_I2C_CONTROL_SELECT_DDC2 = 1 -DOUT_I2C_CONTROL_SELECT_DDC3 = 2 -DOUT_I2C_CONTROL_SELECT_DDC4 = 3 -DOUT_I2C_CONTROL_SELECT_DDC5 = 4 -DOUT_I2C_CONTROL_SELECT_DDC6 = 5 -DOUT_I2C_CONTROL_SELECT_DDCVGA = 6 -DOUT_I2C_CONTROL_DDC_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_TRANSACTION_COUNT' -DOUT_I2C_CONTROL_TRANSACTION_COUNT__enumvalues = { - 0: 'DOUT_I2C_CONTROL_TRANS0', - 1: 'DOUT_I2C_CONTROL_TRANS0_TRANS1', - 2: 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2', - 3: 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2_TRANS3', -} -DOUT_I2C_CONTROL_TRANS0 = 0 -DOUT_I2C_CONTROL_TRANS0_TRANS1 = 1 -DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2 = 2 -DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2_TRANS3 = 3 -DOUT_I2C_CONTROL_TRANSACTION_COUNT = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_DBG_REF_SEL' -DOUT_I2C_CONTROL_DBG_REF_SEL__enumvalues = { - 0: 'DOUT_I2C_CONTROL_NORMAL_DEBUG', - 1: 'DOUT_I2C_CONTROL_FAST_REFERENCE_DEBUG', -} -DOUT_I2C_CONTROL_NORMAL_DEBUG = 0 -DOUT_I2C_CONTROL_FAST_REFERENCE_DEBUG = 1 -DOUT_I2C_CONTROL_DBG_REF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_SW_PRIORITY' -DOUT_I2C_ARBITRATION_SW_PRIORITY__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_NORMAL', - 1: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_HIGH', - 2: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_0_RESERVED', - 3: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_1_RESERVED', -} -DOUT_I2C_ARBITRATION_SW_PRIORITY_NORMAL = 0 -DOUT_I2C_ARBITRATION_SW_PRIORITY_HIGH = 1 -DOUT_I2C_ARBITRATION_SW_PRIORITY_0_RESERVED = 2 -DOUT_I2C_ARBITRATION_SW_PRIORITY_1_RESERVED = 3 -DOUT_I2C_ARBITRATION_SW_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO' -DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_SW_QUEUE_ENABLED', - 1: 'DOUT_I2C_ARBITRATION_SW_QUEUE_DISABLED', -} -DOUT_I2C_ARBITRATION_SW_QUEUE_ENABLED = 0 -DOUT_I2C_ARBITRATION_SW_QUEUE_DISABLED = 1 -DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_ABORT_XFER' -DOUT_I2C_ARBITRATION_ABORT_XFER__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_NOT_ABORT_CURRENT_TRANSFER', - 1: 'DOUT_I2C_ARBITRATION_ABORT_CURRENT_TRANSFER', -} -DOUT_I2C_ARBITRATION_NOT_ABORT_CURRENT_TRANSFER = 0 -DOUT_I2C_ARBITRATION_ABORT_CURRENT_TRANSFER = 1 -DOUT_I2C_ARBITRATION_ABORT_XFER = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ' -DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION__NOT_USE_I2C_REG_REQ', - 1: 'DOUT_I2C_ARBITRATION__USE_I2C_REG_REQ', -} -DOUT_I2C_ARBITRATION__NOT_USE_I2C_REG_REQ = 0 -DOUT_I2C_ARBITRATION__USE_I2C_REG_REQ = 1 -DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG' -DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_DONE__NOT_USING_I2C_REG', - 1: 'DOUT_I2C_ARBITRATION_DONE__USING_I2C_REG', -} -DOUT_I2C_ARBITRATION_DONE__NOT_USING_I2C_REG = 0 -DOUT_I2C_ARBITRATION_DONE__USING_I2C_REG = 1 -DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ACK' -DOUT_I2C_ACK__enumvalues = { - 0: 'DOUT_I2C_NO_ACK', - 1: 'DOUT_I2C_ACK_TO_CLEAN', -} -DOUT_I2C_NO_ACK = 0 -DOUT_I2C_ACK_TO_CLEAN = 1 -DOUT_I2C_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SPEED_THRESHOLD' -DOUT_I2C_DDC_SPEED_THRESHOLD__enumvalues = { - 0: 'DOUT_I2C_DDC_SPEED_THRESHOLD_BIG_THAN_ZERO', - 1: 'DOUT_I2C_DDC_SPEED_THRESHOLD_QUATER_OF_TOTAL_SAMPLE', - 2: 'DOUT_I2C_DDC_SPEED_THRESHOLD_HALF_OF_TOTAL_SAMPLE', - 3: 'DOUT_I2C_DDC_SPEED_THRESHOLD_THREE_QUATERS_OF_TOTAL_SAMPLE', -} -DOUT_I2C_DDC_SPEED_THRESHOLD_BIG_THAN_ZERO = 0 -DOUT_I2C_DDC_SPEED_THRESHOLD_QUATER_OF_TOTAL_SAMPLE = 1 -DOUT_I2C_DDC_SPEED_THRESHOLD_HALF_OF_TOTAL_SAMPLE = 2 -DOUT_I2C_DDC_SPEED_THRESHOLD_THREE_QUATERS_OF_TOTAL_SAMPLE = 3 -DOUT_I2C_DDC_SPEED_THRESHOLD = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN' -DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_BY_EXTERNAL_RESISTOR', - 1: 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SDA', -} -DOUT_I2C_DDC_SETUP_DATA_DRIVE_BY_EXTERNAL_RESISTOR = 0 -DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SDA = 1 -DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL' -DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_10MCLKS', - 1: 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_20MCLKS', -} -DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_10MCLKS = 0 -DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_20MCLKS = 1 -DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE' -DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_EDID_DETECT_CONNECT', - 1: 'DOUT_I2C_DDC_SETUP_EDID_DETECT_DISCONNECT', -} -DOUT_I2C_DDC_SETUP_EDID_DETECT_CONNECT = 0 -DOUT_I2C_DDC_SETUP_EDID_DETECT_DISCONNECT = 1 -DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN' -DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_BY_EXTERNAL_RESISTOR', - 1: 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SCL', -} -DOUT_I2C_DDC_SETUP_CLK_DRIVE_BY_EXTERNAL_RESISTOR = 0 -DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SCL = 1 -DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_TRANSACTION_STOP_ON_NACK' -DOUT_I2C_TRANSACTION_STOP_ON_NACK__enumvalues = { - 0: 'DOUT_I2C_TRANSACTION_STOP_CURRENT_TRANS', - 1: 'DOUT_I2C_TRANSACTION_STOP_ALL_TRANS', -} -DOUT_I2C_TRANSACTION_STOP_CURRENT_TRANS = 0 -DOUT_I2C_TRANSACTION_STOP_ALL_TRANS = 1 -DOUT_I2C_TRANSACTION_STOP_ON_NACK = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DATA_INDEX_WRITE' -DOUT_I2C_DATA_INDEX_WRITE__enumvalues = { - 0: 'DOUT_I2C_DATA__NOT_INDEX_WRITE', - 1: 'DOUT_I2C_DATA__INDEX_WRITE', -} -DOUT_I2C_DATA__NOT_INDEX_WRITE = 0 -DOUT_I2C_DATA__INDEX_WRITE = 1 -DOUT_I2C_DATA_INDEX_WRITE = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET' -DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET__enumvalues = { - 0: 'DOUT_I2C_EDID_NOT_SEND_RESET_BEFORE_EDID_READ_TRACTION', - 1: 'DOUT_I2C_EDID_SEND_RESET_BEFORE_EDID_READ_TRACTION', -} -DOUT_I2C_EDID_NOT_SEND_RESET_BEFORE_EDID_READ_TRACTION = 0 -DOUT_I2C_EDID_SEND_RESET_BEFORE_EDID_READ_TRACTION = 1 -DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE' -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__enumvalues = { - 0: 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__LEVEL', - 1: 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__PULSE', -} -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__LEVEL = 0 -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__PULSE = 1 -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'FBC_IDLE_MASK_MASK_BITS' -FBC_IDLE_MASK_MASK_BITS__enumvalues = { - 0: 'FBC_IDLE_MASK_DISP_REG_UPDATE', - 1: 'FBC_IDLE_MASK_RESERVED1', - 2: 'FBC_IDLE_MASK_FBC_GRPH_COMP_EN', - 3: 'FBC_IDLE_MASK_FBC_MIN_COMPRESSION', - 4: 'FBC_IDLE_MASK_FBC_ALPHA_COMP_EN', - 5: 'FBC_IDLE_MASK_FBC_ZERO_ALPHA_CHUNK_SKIP_EN', - 6: 'FBC_IDLE_MASK_FBC_FORCE_COPY_TO_COMP_BUF', - 7: 'FBC_IDLE_MASK_RESERVED7', - 8: 'FBC_IDLE_MASK_RESERVED8', - 9: 'FBC_IDLE_MASK_RESERVED9', - 10: 'FBC_IDLE_MASK_RESERVED10', - 11: 'FBC_IDLE_MASK_RESERVED11', - 12: 'FBC_IDLE_MASK_RESERVED12', - 13: 'FBC_IDLE_MASK_RESERVED13', - 14: 'FBC_IDLE_MASK_RESERVED14', - 15: 'FBC_IDLE_MASK_RESERVED15', - 16: 'FBC_IDLE_MASK_RESERVED16', - 17: 'FBC_IDLE_MASK_RESERVED17', - 18: 'FBC_IDLE_MASK_RESERVED18', - 19: 'FBC_IDLE_MASK_RESERVED19', - 20: 'FBC_IDLE_MASK_RESERVED20', - 21: 'FBC_IDLE_MASK_RESERVED21', - 22: 'FBC_IDLE_MASK_RESERVED22', - 23: 'FBC_IDLE_MASK_RESERVED23', - 24: 'FBC_IDLE_MASK_MC_HIT_REGION_0', - 25: 'FBC_IDLE_MASK_MC_HIT_REGION_1', - 26: 'FBC_IDLE_MASK_MC_HIT_REGION_2', - 27: 'FBC_IDLE_MASK_MC_HIT_REGION_3', - 28: 'FBC_IDLE_MASK_MC_WRITE', - 29: 'FBC_IDLE_MASK_RESERVED29', - 30: 'FBC_IDLE_MASK_RESERVED30', - 31: 'FBC_IDLE_MASK_RESERVED31', -} -FBC_IDLE_MASK_DISP_REG_UPDATE = 0 -FBC_IDLE_MASK_RESERVED1 = 1 -FBC_IDLE_MASK_FBC_GRPH_COMP_EN = 2 -FBC_IDLE_MASK_FBC_MIN_COMPRESSION = 3 -FBC_IDLE_MASK_FBC_ALPHA_COMP_EN = 4 -FBC_IDLE_MASK_FBC_ZERO_ALPHA_CHUNK_SKIP_EN = 5 -FBC_IDLE_MASK_FBC_FORCE_COPY_TO_COMP_BUF = 6 -FBC_IDLE_MASK_RESERVED7 = 7 -FBC_IDLE_MASK_RESERVED8 = 8 -FBC_IDLE_MASK_RESERVED9 = 9 -FBC_IDLE_MASK_RESERVED10 = 10 -FBC_IDLE_MASK_RESERVED11 = 11 -FBC_IDLE_MASK_RESERVED12 = 12 -FBC_IDLE_MASK_RESERVED13 = 13 -FBC_IDLE_MASK_RESERVED14 = 14 -FBC_IDLE_MASK_RESERVED15 = 15 -FBC_IDLE_MASK_RESERVED16 = 16 -FBC_IDLE_MASK_RESERVED17 = 17 -FBC_IDLE_MASK_RESERVED18 = 18 -FBC_IDLE_MASK_RESERVED19 = 19 -FBC_IDLE_MASK_RESERVED20 = 20 -FBC_IDLE_MASK_RESERVED21 = 21 -FBC_IDLE_MASK_RESERVED22 = 22 -FBC_IDLE_MASK_RESERVED23 = 23 -FBC_IDLE_MASK_MC_HIT_REGION_0 = 24 -FBC_IDLE_MASK_MC_HIT_REGION_1 = 25 -FBC_IDLE_MASK_MC_HIT_REGION_2 = 26 -FBC_IDLE_MASK_MC_HIT_REGION_3 = 27 -FBC_IDLE_MASK_MC_WRITE = 28 -FBC_IDLE_MASK_RESERVED29 = 29 -FBC_IDLE_MASK_RESERVED30 = 30 -FBC_IDLE_MASK_RESERVED31 = 31 -FBC_IDLE_MASK_MASK_BITS = ctypes.c_uint32 # enum - -# values for enumeration 'DPCSRX_RX_CLOCK_CNTL_DPCS_SYMCLK_RX_SEL' -DPCSRX_RX_CLOCK_CNTL_DPCS_SYMCLK_RX_SEL__enumvalues = { - 0: 'DPCSRX_BPHY_PCS_RX0_CLK', - 1: 'DPCSRX_BPHY_PCS_RX1_CLK', - 2: 'DPCSRX_BPHY_PCS_RX2_CLK', - 3: 'DPCSRX_BPHY_PCS_RX3_CLK', -} -DPCSRX_BPHY_PCS_RX0_CLK = 0 -DPCSRX_BPHY_PCS_RX1_CLK = 1 -DPCSRX_BPHY_PCS_RX2_CLK = 2 -DPCSRX_BPHY_PCS_RX3_CLK = 3 -DPCSRX_RX_CLOCK_CNTL_DPCS_SYMCLK_RX_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPCSRX_DBG_CFGCLK_SEL' -DPCSRX_DBG_CFGCLK_SEL__enumvalues = { - 0: 'DPCSRX_DBG_CFGCLK_SEL_DC_DPCS_INF', - 1: 'DPCSRX_DBG_CFGCLK_SEL_DPCS_BPHY_INF', - 2: 'DPCSRX_DBG_CFGCLK_SEL_CBUS_SLAVE', - 3: 'DPCSRX_DBG_CFGCLK_SEL_CBUS_MASTER', -} -DPCSRX_DBG_CFGCLK_SEL_DC_DPCS_INF = 0 -DPCSRX_DBG_CFGCLK_SEL_DPCS_BPHY_INF = 1 -DPCSRX_DBG_CFGCLK_SEL_CBUS_SLAVE = 2 -DPCSRX_DBG_CFGCLK_SEL_CBUS_MASTER = 3 -DPCSRX_DBG_CFGCLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPCSRX_RX_SYMCLK_SEL' -DPCSRX_RX_SYMCLK_SEL__enumvalues = { - 0: 'DPCSRX_DBG_RX_SYMCLK_SEL_OUT0', - 1: 'DPCSRX_DBG_RX_SYMCLK_SEL_OUT1', - 2: 'DPCSRX_DBG_RX_SYMCLK_SEL_INT', -} -DPCSRX_DBG_RX_SYMCLK_SEL_OUT0 = 0 -DPCSRX_DBG_RX_SYMCLK_SEL_OUT1 = 1 -DPCSRX_DBG_RX_SYMCLK_SEL_INT = 2 -DPCSRX_RX_SYMCLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPCSTX_DBG_CFGCLK_SEL' -DPCSTX_DBG_CFGCLK_SEL__enumvalues = { - 0: 'DPCSTX_DBG_CFGCLK_SEL_DC_DPCS_INF', - 1: 'DPCSTX_DBG_CFGCLK_SEL_DPCS_BPHY_INF', - 2: 'DPCSTX_DBG_CFGCLK_SEL_CBUS_SLAVE', - 3: 'DPCSTX_DBG_CFGCLK_SEL_CBUS_MASTER', -} -DPCSTX_DBG_CFGCLK_SEL_DC_DPCS_INF = 0 -DPCSTX_DBG_CFGCLK_SEL_DPCS_BPHY_INF = 1 -DPCSTX_DBG_CFGCLK_SEL_CBUS_SLAVE = 2 -DPCSTX_DBG_CFGCLK_SEL_CBUS_MASTER = 3 -DPCSTX_DBG_CFGCLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPCSTX_TX_SYMCLK_SEL' -DPCSTX_TX_SYMCLK_SEL__enumvalues = { - 0: 'DPCSTX_DBG_TX_SYMCLK_SEL_IN0', - 1: 'DPCSTX_DBG_TX_SYMCLK_SEL_IN1', - 2: 'DPCSTX_DBG_TX_SYMCLK_SEL_FIFO_WR', -} -DPCSTX_DBG_TX_SYMCLK_SEL_IN0 = 0 -DPCSTX_DBG_TX_SYMCLK_SEL_IN1 = 1 -DPCSTX_DBG_TX_SYMCLK_SEL_FIFO_WR = 2 -DPCSTX_TX_SYMCLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPCSTX_TX_SYMCLK_DIV2_SEL' -DPCSTX_TX_SYMCLK_DIV2_SEL__enumvalues = { - 0: 'DPCSTX_DBG_TX_SYMCLK_DIV2_SEL_OUT0', - 1: 'DPCSTX_DBG_TX_SYMCLK_DIV2_SEL_OUT1', - 2: 'DPCSTX_DBG_TX_SYMCLK_DIV2_SEL_OUT2', - 3: 'DPCSTX_DBG_TX_SYMCLK_DIV2_SEL_OUT3', - 4: 'DPCSTX_DBG_TX_SYMCLK_DIV2_SEL_FIFO_RD', - 5: 'DPCSTX_DBG_TX_SYMCLK_DIV2_SEL_INT', -} -DPCSTX_DBG_TX_SYMCLK_DIV2_SEL_OUT0 = 0 -DPCSTX_DBG_TX_SYMCLK_DIV2_SEL_OUT1 = 1 -DPCSTX_DBG_TX_SYMCLK_DIV2_SEL_OUT2 = 2 -DPCSTX_DBG_TX_SYMCLK_DIV2_SEL_OUT3 = 3 -DPCSTX_DBG_TX_SYMCLK_DIV2_SEL_FIFO_RD = 4 -DPCSTX_DBG_TX_SYMCLK_DIV2_SEL_INT = 5 -DPCSTX_TX_SYMCLK_DIV2_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SurfaceNumber' -SurfaceNumber__enumvalues = { - 0: 'NUMBER_UNORM', - 1: 'NUMBER_SNORM', - 2: 'NUMBER_USCALED', - 3: 'NUMBER_SSCALED', - 4: 'NUMBER_UINT', - 5: 'NUMBER_SINT', - 6: 'NUMBER_SRGB', - 7: 'NUMBER_FLOAT', -} -NUMBER_UNORM = 0 -NUMBER_SNORM = 1 -NUMBER_USCALED = 2 -NUMBER_SSCALED = 3 -NUMBER_UINT = 4 -NUMBER_SINT = 5 -NUMBER_SRGB = 6 -NUMBER_FLOAT = 7 -SurfaceNumber = ctypes.c_uint32 # enum - -# values for enumeration 'SurfaceSwap' -SurfaceSwap__enumvalues = { - 0: 'SWAP_STD', - 1: 'SWAP_ALT', - 2: 'SWAP_STD_REV', - 3: 'SWAP_ALT_REV', -} -SWAP_STD = 0 -SWAP_ALT = 1 -SWAP_STD_REV = 2 -SWAP_ALT_REV = 3 -SurfaceSwap = ctypes.c_uint32 # enum - -# values for enumeration 'CBMode' -CBMode__enumvalues = { - 0: 'CB_DISABLE', - 1: 'CB_NORMAL', - 2: 'CB_ELIMINATE_FAST_CLEAR', - 3: 'CB_RESOLVE', - 4: 'CB_DECOMPRESS', - 5: 'CB_FMASK_DECOMPRESS', - 6: 'CB_DCC_DECOMPRESS', -} -CB_DISABLE = 0 -CB_NORMAL = 1 -CB_ELIMINATE_FAST_CLEAR = 2 -CB_RESOLVE = 3 -CB_DECOMPRESS = 4 -CB_FMASK_DECOMPRESS = 5 -CB_DCC_DECOMPRESS = 6 -CBMode = ctypes.c_uint32 # enum - -# values for enumeration 'RoundMode' -RoundMode__enumvalues = { - 0: 'ROUND_BY_HALF', - 1: 'ROUND_TRUNCATE', -} -ROUND_BY_HALF = 0 -ROUND_TRUNCATE = 1 -RoundMode = ctypes.c_uint32 # enum - -# values for enumeration 'SourceFormat' -SourceFormat__enumvalues = { - 0: 'EXPORT_4C_32BPC', - 1: 'EXPORT_4C_16BPC', - 2: 'EXPORT_2C_32BPC_GR', - 3: 'EXPORT_2C_32BPC_AR', -} -EXPORT_4C_32BPC = 0 -EXPORT_4C_16BPC = 1 -EXPORT_2C_32BPC_GR = 2 -EXPORT_2C_32BPC_AR = 3 -SourceFormat = ctypes.c_uint32 # enum - -# values for enumeration 'BlendOp' -BlendOp__enumvalues = { - 0: 'BLEND_ZERO', - 1: 'BLEND_ONE', - 2: 'BLEND_SRC_COLOR', - 3: 'BLEND_ONE_MINUS_SRC_COLOR', - 4: 'BLEND_SRC_ALPHA', - 5: 'BLEND_ONE_MINUS_SRC_ALPHA', - 6: 'BLEND_DST_ALPHA', - 7: 'BLEND_ONE_MINUS_DST_ALPHA', - 8: 'BLEND_DST_COLOR', - 9: 'BLEND_ONE_MINUS_DST_COLOR', - 10: 'BLEND_SRC_ALPHA_SATURATE', - 11: 'BLEND_BOTH_SRC_ALPHA', - 12: 'BLEND_BOTH_INV_SRC_ALPHA', - 13: 'BLEND_CONSTANT_COLOR', - 14: 'BLEND_ONE_MINUS_CONSTANT_COLOR', - 15: 'BLEND_SRC1_COLOR', - 16: 'BLEND_INV_SRC1_COLOR', - 17: 'BLEND_SRC1_ALPHA', - 18: 'BLEND_INV_SRC1_ALPHA', - 19: 'BLEND_CONSTANT_ALPHA', - 20: 'BLEND_ONE_MINUS_CONSTANT_ALPHA', -} -BLEND_ZERO = 0 -BLEND_ONE = 1 -BLEND_SRC_COLOR = 2 -BLEND_ONE_MINUS_SRC_COLOR = 3 -BLEND_SRC_ALPHA = 4 -BLEND_ONE_MINUS_SRC_ALPHA = 5 -BLEND_DST_ALPHA = 6 -BLEND_ONE_MINUS_DST_ALPHA = 7 -BLEND_DST_COLOR = 8 -BLEND_ONE_MINUS_DST_COLOR = 9 -BLEND_SRC_ALPHA_SATURATE = 10 -BLEND_BOTH_SRC_ALPHA = 11 -BLEND_BOTH_INV_SRC_ALPHA = 12 -BLEND_CONSTANT_COLOR = 13 -BLEND_ONE_MINUS_CONSTANT_COLOR = 14 -BLEND_SRC1_COLOR = 15 -BLEND_INV_SRC1_COLOR = 16 -BLEND_SRC1_ALPHA = 17 -BLEND_INV_SRC1_ALPHA = 18 -BLEND_CONSTANT_ALPHA = 19 -BLEND_ONE_MINUS_CONSTANT_ALPHA = 20 -BlendOp = ctypes.c_uint32 # enum -GL__ZERO = BLEND_ZERO # macro -GL__ONE = BLEND_ONE # macro -GL__SRC_COLOR = BLEND_SRC_COLOR # macro -GL__ONE_MINUS_SRC_COLOR = BLEND_ONE_MINUS_SRC_COLOR # macro -GL__DST_COLOR = BLEND_DST_COLOR # macro -GL__ONE_MINUS_DST_COLOR = BLEND_ONE_MINUS_DST_COLOR # macro -GL__SRC_ALPHA = BLEND_SRC_ALPHA # macro -GL__ONE_MINUS_SRC_ALPHA = BLEND_ONE_MINUS_SRC_ALPHA # macro -GL__DST_ALPHA = BLEND_DST_ALPHA # macro -GL__ONE_MINUS_DST_ALPHA = BLEND_ONE_MINUS_DST_ALPHA # macro -GL__SRC_ALPHA_SATURATE = BLEND_SRC_ALPHA_SATURATE # macro -GL__CONSTANT_COLOR = BLEND_CONSTANT_COLOR # macro -GL__ONE_MINUS_CONSTANT_COLOR = BLEND_ONE_MINUS_CONSTANT_COLOR # macro -GL__CONSTANT_ALPHA = BLEND_CONSTANT_ALPHA # macro -GL__ONE_MINUS_CONSTANT_ALPHA = BLEND_ONE_MINUS_CONSTANT_ALPHA # macro - -# values for enumeration 'CombFunc' -CombFunc__enumvalues = { - 0: 'COMB_DST_PLUS_SRC', - 1: 'COMB_SRC_MINUS_DST', - 2: 'COMB_MIN_DST_SRC', - 3: 'COMB_MAX_DST_SRC', - 4: 'COMB_DST_MINUS_SRC', -} -COMB_DST_PLUS_SRC = 0 -COMB_SRC_MINUS_DST = 1 -COMB_MIN_DST_SRC = 2 -COMB_MAX_DST_SRC = 3 -COMB_DST_MINUS_SRC = 4 -CombFunc = ctypes.c_uint32 # enum - -# values for enumeration 'BlendOpt' -BlendOpt__enumvalues = { - 0: 'FORCE_OPT_AUTO', - 1: 'FORCE_OPT_DISABLE', - 2: 'FORCE_OPT_ENABLE_IF_SRC_A_0', - 3: 'FORCE_OPT_ENABLE_IF_SRC_RGB_0', - 4: 'FORCE_OPT_ENABLE_IF_SRC_ARGB_0', - 5: 'FORCE_OPT_ENABLE_IF_SRC_A_1', - 6: 'FORCE_OPT_ENABLE_IF_SRC_RGB_1', - 7: 'FORCE_OPT_ENABLE_IF_SRC_ARGB_1', -} -FORCE_OPT_AUTO = 0 -FORCE_OPT_DISABLE = 1 -FORCE_OPT_ENABLE_IF_SRC_A_0 = 2 -FORCE_OPT_ENABLE_IF_SRC_RGB_0 = 3 -FORCE_OPT_ENABLE_IF_SRC_ARGB_0 = 4 -FORCE_OPT_ENABLE_IF_SRC_A_1 = 5 -FORCE_OPT_ENABLE_IF_SRC_RGB_1 = 6 -FORCE_OPT_ENABLE_IF_SRC_ARGB_1 = 7 -BlendOpt = ctypes.c_uint32 # enum - -# values for enumeration 'CmaskCode' -CmaskCode__enumvalues = { - 0: 'CMASK_CLR00_F0', - 1: 'CMASK_CLR00_F1', - 2: 'CMASK_CLR00_F2', - 3: 'CMASK_CLR00_FX', - 4: 'CMASK_CLR01_F0', - 5: 'CMASK_CLR01_F1', - 6: 'CMASK_CLR01_F2', - 7: 'CMASK_CLR01_FX', - 8: 'CMASK_CLR10_F0', - 9: 'CMASK_CLR10_F1', - 10: 'CMASK_CLR10_F2', - 11: 'CMASK_CLR10_FX', - 12: 'CMASK_CLR11_F0', - 13: 'CMASK_CLR11_F1', - 14: 'CMASK_CLR11_F2', - 15: 'CMASK_CLR11_FX', -} -CMASK_CLR00_F0 = 0 -CMASK_CLR00_F1 = 1 -CMASK_CLR00_F2 = 2 -CMASK_CLR00_FX = 3 -CMASK_CLR01_F0 = 4 -CMASK_CLR01_F1 = 5 -CMASK_CLR01_F2 = 6 -CMASK_CLR01_FX = 7 -CMASK_CLR10_F0 = 8 -CMASK_CLR10_F1 = 9 -CMASK_CLR10_F2 = 10 -CMASK_CLR10_FX = 11 -CMASK_CLR11_F0 = 12 -CMASK_CLR11_F1 = 13 -CMASK_CLR11_F2 = 14 -CMASK_CLR11_FX = 15 -CmaskCode = ctypes.c_uint32 # enum - -# values for enumeration 'CmaskAddr' -CmaskAddr__enumvalues = { - 0: 'CMASK_ADDR_TILED', - 1: 'CMASK_ADDR_LINEAR', - 2: 'CMASK_ADDR_COMPATIBLE', -} -CMASK_ADDR_TILED = 0 -CMASK_ADDR_LINEAR = 1 -CMASK_ADDR_COMPATIBLE = 2 -CmaskAddr = ctypes.c_uint32 # enum - -# values for enumeration 'MemArbMode' -MemArbMode__enumvalues = { - 0: 'MEM_ARB_MODE_FIXED', - 1: 'MEM_ARB_MODE_AGE', - 2: 'MEM_ARB_MODE_WEIGHT', - 3: 'MEM_ARB_MODE_BOTH', -} -MEM_ARB_MODE_FIXED = 0 -MEM_ARB_MODE_AGE = 1 -MEM_ARB_MODE_WEIGHT = 2 -MEM_ARB_MODE_BOTH = 3 -MemArbMode = ctypes.c_uint32 # enum - -# values for enumeration 'CBPerfSel' -CBPerfSel__enumvalues = { - 0: 'CB_PERF_SEL_NONE', - 1: 'CB_PERF_SEL_BUSY', - 2: 'CB_PERF_SEL_CORE_SCLK_VLD', - 3: 'CB_PERF_SEL_REG_SCLK0_VLD', - 4: 'CB_PERF_SEL_REG_SCLK1_VLD', - 5: 'CB_PERF_SEL_DRAWN_QUAD', - 6: 'CB_PERF_SEL_DRAWN_PIXEL', - 7: 'CB_PERF_SEL_DRAWN_QUAD_FRAGMENT', - 8: 'CB_PERF_SEL_DRAWN_TILE', - 9: 'CB_PERF_SEL_DB_CB_TILE_VALID_READY', - 10: 'CB_PERF_SEL_DB_CB_TILE_VALID_READYB', - 11: 'CB_PERF_SEL_DB_CB_TILE_VALIDB_READY', - 12: 'CB_PERF_SEL_DB_CB_TILE_VALIDB_READYB', - 13: 'CB_PERF_SEL_CM_FC_TILE_VALID_READY', - 14: 'CB_PERF_SEL_CM_FC_TILE_VALID_READYB', - 15: 'CB_PERF_SEL_CM_FC_TILE_VALIDB_READY', - 16: 'CB_PERF_SEL_CM_FC_TILE_VALIDB_READYB', - 17: 'CB_PERF_SEL_MERGE_TILE_ONLY_VALID_READY', - 18: 'CB_PERF_SEL_MERGE_TILE_ONLY_VALID_READYB', - 19: 'CB_PERF_SEL_DB_CB_LQUAD_VALID_READY', - 20: 'CB_PERF_SEL_DB_CB_LQUAD_VALID_READYB', - 21: 'CB_PERF_SEL_DB_CB_LQUAD_VALIDB_READY', - 22: 'CB_PERF_SEL_DB_CB_LQUAD_VALIDB_READYB', - 23: 'CB_PERF_SEL_LQUAD_NO_TILE', - 24: 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_R', - 25: 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_AR', - 26: 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_GR', - 27: 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_ABGR', - 28: 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_FP16_ABGR', - 29: 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_SIGNED16_ABGR', - 30: 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_UNSIGNED16_ABGR', - 31: 'CB_PERF_SEL_QUAD_KILLED_BY_EXTRA_PIXEL_EXPORT', - 32: 'CB_PERF_SEL_QUAD_KILLED_BY_COLOR_INVALID', - 33: 'CB_PERF_SEL_QUAD_KILLED_BY_NULL_TARGET_SHADER_MASK', - 34: 'CB_PERF_SEL_QUAD_KILLED_BY_NULL_SAMPLE_MASK', - 35: 'CB_PERF_SEL_QUAD_KILLED_BY_DISCARD_PIXEL', - 36: 'CB_PERF_SEL_FC_CLEAR_QUAD_VALID_READY', - 37: 'CB_PERF_SEL_FC_CLEAR_QUAD_VALID_READYB', - 38: 'CB_PERF_SEL_FC_CLEAR_QUAD_VALIDB_READY', - 39: 'CB_PERF_SEL_FC_CLEAR_QUAD_VALIDB_READYB', - 40: 'CB_PERF_SEL_FOP_IN_VALID_READY', - 41: 'CB_PERF_SEL_FOP_IN_VALID_READYB', - 42: 'CB_PERF_SEL_FOP_IN_VALIDB_READY', - 43: 'CB_PERF_SEL_FOP_IN_VALIDB_READYB', - 44: 'CB_PERF_SEL_FC_CC_QUADFRAG_VALID_READY', - 45: 'CB_PERF_SEL_FC_CC_QUADFRAG_VALID_READYB', - 46: 'CB_PERF_SEL_FC_CC_QUADFRAG_VALIDB_READY', - 47: 'CB_PERF_SEL_FC_CC_QUADFRAG_VALIDB_READYB', - 48: 'CB_PERF_SEL_CC_IB_SR_FRAG_VALID_READY', - 49: 'CB_PERF_SEL_CC_IB_SR_FRAG_VALID_READYB', - 50: 'CB_PERF_SEL_CC_IB_SR_FRAG_VALIDB_READY', - 51: 'CB_PERF_SEL_CC_IB_SR_FRAG_VALIDB_READYB', - 52: 'CB_PERF_SEL_CC_IB_TB_FRAG_VALID_READY', - 53: 'CB_PERF_SEL_CC_IB_TB_FRAG_VALID_READYB', - 54: 'CB_PERF_SEL_CC_IB_TB_FRAG_VALIDB_READY', - 55: 'CB_PERF_SEL_CC_IB_TB_FRAG_VALIDB_READYB', - 56: 'CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALID_READY', - 57: 'CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALID_READYB', - 58: 'CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALIDB_READY', - 59: 'CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALIDB_READYB', - 60: 'CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALID_READY', - 61: 'CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALID_READYB', - 62: 'CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALIDB_READY', - 63: 'CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALIDB_READYB', - 64: 'CB_PERF_SEL_CC_BC_CS_FRAG_VALID', - 65: 'CB_PERF_SEL_CM_CACHE_HIT', - 66: 'CB_PERF_SEL_CM_CACHE_TAG_MISS', - 67: 'CB_PERF_SEL_CM_CACHE_SECTOR_MISS', - 68: 'CB_PERF_SEL_CM_CACHE_REEVICTION_STALL', - 69: 'CB_PERF_SEL_CM_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 70: 'CB_PERF_SEL_CM_CACHE_REPLACE_PENDING_EVICT_STALL', - 71: 'CB_PERF_SEL_CM_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 72: 'CB_PERF_SEL_CM_CACHE_READ_OUTPUT_STALL', - 73: 'CB_PERF_SEL_CM_CACHE_WRITE_OUTPUT_STALL', - 74: 'CB_PERF_SEL_CM_CACHE_ACK_OUTPUT_STALL', - 75: 'CB_PERF_SEL_CM_CACHE_STALL', - 76: 'CB_PERF_SEL_CM_CACHE_FLUSH', - 77: 'CB_PERF_SEL_CM_CACHE_TAGS_FLUSHED', - 78: 'CB_PERF_SEL_CM_CACHE_SECTORS_FLUSHED', - 79: 'CB_PERF_SEL_CM_CACHE_DIRTY_SECTORS_FLUSHED', - 80: 'CB_PERF_SEL_FC_CACHE_HIT', - 81: 'CB_PERF_SEL_FC_CACHE_TAG_MISS', - 82: 'CB_PERF_SEL_FC_CACHE_SECTOR_MISS', - 83: 'CB_PERF_SEL_FC_CACHE_REEVICTION_STALL', - 84: 'CB_PERF_SEL_FC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 85: 'CB_PERF_SEL_FC_CACHE_REPLACE_PENDING_EVICT_STALL', - 86: 'CB_PERF_SEL_FC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 87: 'CB_PERF_SEL_FC_CACHE_READ_OUTPUT_STALL', - 88: 'CB_PERF_SEL_FC_CACHE_WRITE_OUTPUT_STALL', - 89: 'CB_PERF_SEL_FC_CACHE_ACK_OUTPUT_STALL', - 90: 'CB_PERF_SEL_FC_CACHE_STALL', - 91: 'CB_PERF_SEL_FC_CACHE_FLUSH', - 92: 'CB_PERF_SEL_FC_CACHE_TAGS_FLUSHED', - 93: 'CB_PERF_SEL_FC_CACHE_SECTORS_FLUSHED', - 94: 'CB_PERF_SEL_FC_CACHE_DIRTY_SECTORS_FLUSHED', - 95: 'CB_PERF_SEL_CC_CACHE_HIT', - 96: 'CB_PERF_SEL_CC_CACHE_TAG_MISS', - 97: 'CB_PERF_SEL_CC_CACHE_SECTOR_MISS', - 98: 'CB_PERF_SEL_CC_CACHE_REEVICTION_STALL', - 99: 'CB_PERF_SEL_CC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 100: 'CB_PERF_SEL_CC_CACHE_REPLACE_PENDING_EVICT_STALL', - 101: 'CB_PERF_SEL_CC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 102: 'CB_PERF_SEL_CC_CACHE_READ_OUTPUT_STALL', - 103: 'CB_PERF_SEL_CC_CACHE_WRITE_OUTPUT_STALL', - 104: 'CB_PERF_SEL_CC_CACHE_ACK_OUTPUT_STALL', - 105: 'CB_PERF_SEL_CC_CACHE_STALL', - 106: 'CB_PERF_SEL_CC_CACHE_FLUSH', - 107: 'CB_PERF_SEL_CC_CACHE_TAGS_FLUSHED', - 108: 'CB_PERF_SEL_CC_CACHE_SECTORS_FLUSHED', - 109: 'CB_PERF_SEL_CC_CACHE_DIRTY_SECTORS_FLUSHED', - 110: 'CB_PERF_SEL_CC_CACHE_WA_TO_RMW_CONVERSION', - 111: 'CB_PERF_SEL_CC_CACHE_READS_SAVED_DUE_TO_DCC', - 112: 'CB_PERF_SEL_CB_TAP_WRREQ_VALID_READY', - 113: 'CB_PERF_SEL_CB_TAP_WRREQ_VALID_READYB', - 114: 'CB_PERF_SEL_CB_TAP_WRREQ_VALIDB_READY', - 115: 'CB_PERF_SEL_CB_TAP_WRREQ_VALIDB_READYB', - 116: 'CB_PERF_SEL_CM_MC_WRITE_REQUEST', - 117: 'CB_PERF_SEL_FC_MC_WRITE_REQUEST', - 118: 'CB_PERF_SEL_CC_MC_WRITE_REQUEST', - 119: 'CB_PERF_SEL_CM_MC_WRITE_REQUESTS_IN_FLIGHT', - 120: 'CB_PERF_SEL_FC_MC_WRITE_REQUESTS_IN_FLIGHT', - 121: 'CB_PERF_SEL_CC_MC_WRITE_REQUESTS_IN_FLIGHT', - 122: 'CB_PERF_SEL_CB_TAP_RDREQ_VALID_READY', - 123: 'CB_PERF_SEL_CB_TAP_RDREQ_VALID_READYB', - 124: 'CB_PERF_SEL_CB_TAP_RDREQ_VALIDB_READY', - 125: 'CB_PERF_SEL_CB_TAP_RDREQ_VALIDB_READYB', - 126: 'CB_PERF_SEL_CM_MC_READ_REQUEST', - 127: 'CB_PERF_SEL_FC_MC_READ_REQUEST', - 128: 'CB_PERF_SEL_CC_MC_READ_REQUEST', - 129: 'CB_PERF_SEL_CM_MC_READ_REQUESTS_IN_FLIGHT', - 130: 'CB_PERF_SEL_FC_MC_READ_REQUESTS_IN_FLIGHT', - 131: 'CB_PERF_SEL_CC_MC_READ_REQUESTS_IN_FLIGHT', - 132: 'CB_PERF_SEL_CM_TQ_FULL', - 133: 'CB_PERF_SEL_CM_TQ_FIFO_TILE_RESIDENCY_STALL', - 134: 'CB_PERF_SEL_FC_QUAD_RDLAT_FIFO_FULL', - 135: 'CB_PERF_SEL_FC_TILE_RDLAT_FIFO_FULL', - 136: 'CB_PERF_SEL_FC_RDLAT_FIFO_QUAD_RESIDENCY_STALL', - 137: 'CB_PERF_SEL_FOP_FMASK_RAW_STALL', - 138: 'CB_PERF_SEL_FOP_FMASK_BYPASS_STALL', - 139: 'CB_PERF_SEL_CC_SF_FULL', - 140: 'CB_PERF_SEL_CC_RB_FULL', - 141: 'CB_PERF_SEL_CC_EVENFIFO_QUAD_RESIDENCY_STALL', - 142: 'CB_PERF_SEL_CC_ODDFIFO_QUAD_RESIDENCY_STALL', - 143: 'CB_PERF_SEL_BLENDER_RAW_HAZARD_STALL', - 144: 'CB_PERF_SEL_EVENT', - 145: 'CB_PERF_SEL_EVENT_CACHE_FLUSH_TS', - 146: 'CB_PERF_SEL_EVENT_CONTEXT_DONE', - 147: 'CB_PERF_SEL_EVENT_CACHE_FLUSH', - 148: 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_TS_EVENT', - 149: 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_EVENT', - 150: 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_DATA_TS', - 151: 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_META', - 152: 'CB_PERF_SEL_CC_SURFACE_SYNC', - 153: 'CB_PERF_SEL_CMASK_READ_DATA_0xC', - 154: 'CB_PERF_SEL_CMASK_READ_DATA_0xD', - 155: 'CB_PERF_SEL_CMASK_READ_DATA_0xE', - 156: 'CB_PERF_SEL_CMASK_READ_DATA_0xF', - 157: 'CB_PERF_SEL_CMASK_WRITE_DATA_0xC', - 158: 'CB_PERF_SEL_CMASK_WRITE_DATA_0xD', - 159: 'CB_PERF_SEL_CMASK_WRITE_DATA_0xE', - 160: 'CB_PERF_SEL_CMASK_WRITE_DATA_0xF', - 161: 'CB_PERF_SEL_TWO_PROBE_QUAD_FRAGMENT', - 162: 'CB_PERF_SEL_EXPORT_32_ABGR_QUAD_FRAGMENT', - 163: 'CB_PERF_SEL_DUAL_SOURCE_COLOR_QUAD_FRAGMENT', - 164: 'CB_PERF_SEL_QUAD_HAS_1_FRAGMENT_BEFORE_UPDATE', - 165: 'CB_PERF_SEL_QUAD_HAS_2_FRAGMENTS_BEFORE_UPDATE', - 166: 'CB_PERF_SEL_QUAD_HAS_3_FRAGMENTS_BEFORE_UPDATE', - 167: 'CB_PERF_SEL_QUAD_HAS_4_FRAGMENTS_BEFORE_UPDATE', - 168: 'CB_PERF_SEL_QUAD_HAS_5_FRAGMENTS_BEFORE_UPDATE', - 169: 'CB_PERF_SEL_QUAD_HAS_6_FRAGMENTS_BEFORE_UPDATE', - 170: 'CB_PERF_SEL_QUAD_HAS_7_FRAGMENTS_BEFORE_UPDATE', - 171: 'CB_PERF_SEL_QUAD_HAS_8_FRAGMENTS_BEFORE_UPDATE', - 172: 'CB_PERF_SEL_QUAD_HAS_1_FRAGMENT_AFTER_UPDATE', - 173: 'CB_PERF_SEL_QUAD_HAS_2_FRAGMENTS_AFTER_UPDATE', - 174: 'CB_PERF_SEL_QUAD_HAS_3_FRAGMENTS_AFTER_UPDATE', - 175: 'CB_PERF_SEL_QUAD_HAS_4_FRAGMENTS_AFTER_UPDATE', - 176: 'CB_PERF_SEL_QUAD_HAS_5_FRAGMENTS_AFTER_UPDATE', - 177: 'CB_PERF_SEL_QUAD_HAS_6_FRAGMENTS_AFTER_UPDATE', - 178: 'CB_PERF_SEL_QUAD_HAS_7_FRAGMENTS_AFTER_UPDATE', - 179: 'CB_PERF_SEL_QUAD_HAS_8_FRAGMENTS_AFTER_UPDATE', - 180: 'CB_PERF_SEL_QUAD_ADDED_1_FRAGMENT', - 181: 'CB_PERF_SEL_QUAD_ADDED_2_FRAGMENTS', - 182: 'CB_PERF_SEL_QUAD_ADDED_3_FRAGMENTS', - 183: 'CB_PERF_SEL_QUAD_ADDED_4_FRAGMENTS', - 184: 'CB_PERF_SEL_QUAD_ADDED_5_FRAGMENTS', - 185: 'CB_PERF_SEL_QUAD_ADDED_6_FRAGMENTS', - 186: 'CB_PERF_SEL_QUAD_ADDED_7_FRAGMENTS', - 187: 'CB_PERF_SEL_QUAD_REMOVED_1_FRAGMENT', - 188: 'CB_PERF_SEL_QUAD_REMOVED_2_FRAGMENTS', - 189: 'CB_PERF_SEL_QUAD_REMOVED_3_FRAGMENTS', - 190: 'CB_PERF_SEL_QUAD_REMOVED_4_FRAGMENTS', - 191: 'CB_PERF_SEL_QUAD_REMOVED_5_FRAGMENTS', - 192: 'CB_PERF_SEL_QUAD_REMOVED_6_FRAGMENTS', - 193: 'CB_PERF_SEL_QUAD_REMOVED_7_FRAGMENTS', - 194: 'CB_PERF_SEL_QUAD_READS_FRAGMENT_0', - 195: 'CB_PERF_SEL_QUAD_READS_FRAGMENT_1', - 196: 'CB_PERF_SEL_QUAD_READS_FRAGMENT_2', - 197: 'CB_PERF_SEL_QUAD_READS_FRAGMENT_3', - 198: 'CB_PERF_SEL_QUAD_READS_FRAGMENT_4', - 199: 'CB_PERF_SEL_QUAD_READS_FRAGMENT_5', - 200: 'CB_PERF_SEL_QUAD_READS_FRAGMENT_6', - 201: 'CB_PERF_SEL_QUAD_READS_FRAGMENT_7', - 202: 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_0', - 203: 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_1', - 204: 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_2', - 205: 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_3', - 206: 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_4', - 207: 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_5', - 208: 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_6', - 209: 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_7', - 210: 'CB_PERF_SEL_QUAD_BLEND_OPT_DONT_READ_DST', - 211: 'CB_PERF_SEL_QUAD_BLEND_OPT_BLEND_BYPASS', - 212: 'CB_PERF_SEL_QUAD_BLEND_OPT_DISCARD_PIXELS', - 213: 'CB_PERF_SEL_QUAD_DST_READ_COULD_HAVE_BEEN_OPTIMIZED', - 214: 'CB_PERF_SEL_QUAD_BLENDING_COULD_HAVE_BEEN_BYPASSED', - 215: 'CB_PERF_SEL_QUAD_COULD_HAVE_BEEN_DISCARDED', - 216: 'CB_PERF_SEL_BLEND_OPT_PIXELS_RESULT_EQ_DEST', - 217: 'CB_PERF_SEL_DRAWN_BUSY', - 218: 'CB_PERF_SEL_TILE_TO_CMR_REGION_BUSY', - 219: 'CB_PERF_SEL_CMR_TO_FCR_REGION_BUSY', - 220: 'CB_PERF_SEL_FCR_TO_CCR_REGION_BUSY', - 221: 'CB_PERF_SEL_CCR_TO_CCW_REGION_BUSY', - 222: 'CB_PERF_SEL_FC_PF_SLOW_MODE_QUAD_EMPTY_HALF_DROPPED', - 223: 'CB_PERF_SEL_FC_SEQUENCER_CLEAR', - 224: 'CB_PERF_SEL_FC_SEQUENCER_ELIMINATE_FAST_CLEAR', - 225: 'CB_PERF_SEL_FC_SEQUENCER_FMASK_DECOMPRESS', - 226: 'CB_PERF_SEL_FC_SEQUENCER_FMASK_COMPRESSION_DISABLE', - 227: 'CB_PERF_SEL_FC_KEYID_RDLAT_FIFO_FULL', - 228: 'CB_PERF_SEL_FC_DOC_IS_STALLED', - 229: 'CB_PERF_SEL_FC_DOC_MRTS_NOT_COMBINED', - 230: 'CB_PERF_SEL_FC_DOC_MRTS_COMBINED', - 231: 'CB_PERF_SEL_FC_DOC_QTILE_CAM_MISS', - 232: 'CB_PERF_SEL_FC_DOC_QTILE_CAM_HIT', - 233: 'CB_PERF_SEL_FC_DOC_CLINE_CAM_MISS', - 234: 'CB_PERF_SEL_FC_DOC_CLINE_CAM_HIT', - 235: 'CB_PERF_SEL_FC_DOC_QUAD_PTR_FIFO_IS_FULL', - 236: 'CB_PERF_SEL_FC_DOC_OVERWROTE_1_SECTOR', - 237: 'CB_PERF_SEL_FC_DOC_OVERWROTE_2_SECTORS', - 238: 'CB_PERF_SEL_FC_DOC_OVERWROTE_3_SECTORS', - 239: 'CB_PERF_SEL_FC_DOC_OVERWROTE_4_SECTORS', - 240: 'CB_PERF_SEL_FC_DOC_TOTAL_OVERWRITTEN_SECTORS', - 241: 'CB_PERF_SEL_FC_DCC_CACHE_HIT', - 242: 'CB_PERF_SEL_FC_DCC_CACHE_TAG_MISS', - 243: 'CB_PERF_SEL_FC_DCC_CACHE_SECTOR_MISS', - 244: 'CB_PERF_SEL_FC_DCC_CACHE_REEVICTION_STALL', - 245: 'CB_PERF_SEL_FC_DCC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 246: 'CB_PERF_SEL_FC_DCC_CACHE_REPLACE_PENDING_EVICT_STALL', - 247: 'CB_PERF_SEL_FC_DCC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 248: 'CB_PERF_SEL_FC_DCC_CACHE_READ_OUTPUT_STALL', - 249: 'CB_PERF_SEL_FC_DCC_CACHE_WRITE_OUTPUT_STALL', - 250: 'CB_PERF_SEL_FC_DCC_CACHE_ACK_OUTPUT_STALL', - 251: 'CB_PERF_SEL_FC_DCC_CACHE_STALL', - 252: 'CB_PERF_SEL_FC_DCC_CACHE_FLUSH', - 253: 'CB_PERF_SEL_FC_DCC_CACHE_TAGS_FLUSHED', - 254: 'CB_PERF_SEL_FC_DCC_CACHE_SECTORS_FLUSHED', - 255: 'CB_PERF_SEL_FC_DCC_CACHE_DIRTY_SECTORS_FLUSHED', - 256: 'CB_PERF_SEL_CC_DCC_BEYOND_TILE_SPLIT', - 257: 'CB_PERF_SEL_FC_MC_DCC_WRITE_REQUEST', - 258: 'CB_PERF_SEL_FC_MC_DCC_WRITE_REQUESTS_IN_FLIGHT', - 259: 'CB_PERF_SEL_FC_MC_DCC_READ_REQUEST', - 260: 'CB_PERF_SEL_FC_MC_DCC_READ_REQUESTS_IN_FLIGHT', - 261: 'CB_PERF_SEL_CC_DCC_RDREQ_STALL', - 262: 'CB_PERF_SEL_CC_DCC_DECOMPRESS_TIDS_IN', - 263: 'CB_PERF_SEL_CC_DCC_DECOMPRESS_TIDS_OUT', - 264: 'CB_PERF_SEL_CC_DCC_COMPRESS_TIDS_IN', - 265: 'CB_PERF_SEL_CC_DCC_COMPRESS_TIDS_OUT', - 266: 'CB_PERF_SEL_FC_DCC_KEY_VALUE__CLEAR', - 267: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__4_BLOCKS__2TO1', - 268: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__3BLOCKS_2TO1__1BLOCK_2TO2', - 269: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_2TO2__1BLOCK_2TO1', - 270: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__2BLOCKS_2TO1', - 271: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__3BLOCKS_2TO1', - 272: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__2BLOCKS_2TO2', - 273: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__2BLOCKS_2TO2__1BLOCK_2TO1', - 274: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_2TO2', - 275: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_2TO1', - 276: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__2BLOCKS_2TO1', - 277: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__2BLOCKS_2TO1__1BLOCK_2TO2', - 278: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__3BLOCKS_2TO2', - 279: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__2BLOCKS_2TO2', - 280: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_2TO1__1BLOCK_2TO2', - 281: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__3BLOCKS_2TO2__1BLOCK_2TO1', - 282: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_4TO1', - 283: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_4TO2', - 284: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_4TO3', - 285: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_4TO4', - 286: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_4TO1', - 287: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_4TO2', - 288: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_4TO3', - 289: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_4TO4', - 290: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_4TO1', - 291: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_4TO2', - 292: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_4TO3', - 293: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_4TO4', - 294: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_4TO1', - 295: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_4TO2', - 296: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_4TO3', - 297: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO1', - 298: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO2', - 299: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO3', - 300: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO4', - 301: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO1', - 302: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO2', - 303: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO3', - 304: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO4', - 305: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO1', - 306: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO2', - 307: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO3', - 308: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO4', - 309: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_4TO1', - 310: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_4TO2', - 311: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_4TO3', - 312: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO1__1BLOCK_2TO1', - 313: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO2__1BLOCK_2TO1', - 314: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO3__1BLOCK_2TO1', - 315: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO4__1BLOCK_2TO1', - 316: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO1__1BLOCK_2TO1', - 317: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO2__1BLOCK_2TO1', - 318: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO3__1BLOCK_2TO1', - 319: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO4__1BLOCK_2TO1', - 320: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO1__1BLOCK_2TO2', - 321: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO2__1BLOCK_2TO2', - 322: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO3__1BLOCK_2TO2', - 323: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO4__1BLOCK_2TO2', - 324: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO1__1BLOCK_2TO2', - 325: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO2__1BLOCK_2TO2', - 326: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO3__1BLOCK_2TO2', - 327: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__2BLOCKS_2TO1', - 328: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__2BLOCKS_2TO1', - 329: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__2BLOCKS_2TO1', - 330: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__2BLOCKS_2TO1', - 331: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__2BLOCKS_2TO2', - 332: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__2BLOCKS_2TO2', - 333: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__2BLOCKS_2TO2', - 334: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_2TO1__1BLOCK_2TO2', - 335: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_2TO1__1BLOCK_2TO2', - 336: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_2TO1__1BLOCK_2TO2', - 337: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_2TO1__1BLOCK_2TO2', - 338: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_2TO2__1BLOCK_2TO1', - 339: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_2TO2__1BLOCK_2TO1', - 340: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_2TO2__1BLOCK_2TO1', - 341: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_2TO2__1BLOCK_2TO1', - 342: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO1', - 343: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO2', - 344: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO3', - 345: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO4', - 346: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO5', - 347: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO6', - 348: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__INV0', - 349: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__INV1', - 350: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO1', - 351: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO2', - 352: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO3', - 353: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO4', - 354: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO5', - 355: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__INV0', - 356: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__INV1', - 357: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO1__1BLOCK_2TO1', - 358: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO2__1BLOCK_2TO1', - 359: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO3__1BLOCK_2TO1', - 360: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO4__1BLOCK_2TO1', - 361: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO5__1BLOCK_2TO1', - 362: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO6__1BLOCK_2TO1', - 363: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__INV0__1BLOCK_2TO1', - 364: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__INV1__1BLOCK_2TO1', - 365: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO1__1BLOCK_2TO2', - 366: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO2__1BLOCK_2TO2', - 367: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO3__1BLOCK_2TO2', - 368: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO4__1BLOCK_2TO2', - 369: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO5__1BLOCK_2TO2', - 370: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__INV0__1BLOCK_2TO2', - 371: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__INV1__1BLOCK_2TO2', - 372: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO1', - 373: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO2', - 374: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO3', - 375: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO4', - 376: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO5', - 377: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO6', - 378: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO7', - 379: 'CB_PERF_SEL_CC_DCC_KEY_VALUE__UNCOMPRESSED', - 380: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_2TO1', - 381: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_4TO1', - 382: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_4TO2', - 383: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_4TO3', - 384: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO1', - 385: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO2', - 386: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO3', - 387: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO4', - 388: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO5', - 389: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO1', - 390: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO2', - 391: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO3', - 392: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO4', - 393: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO5', - 394: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO6', - 395: 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO7', - 396: 'CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_BOTH', - 397: 'CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_LEFT', - 398: 'CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_RIGHT', - 399: 'CB_PERF_SEL_RBP_SPLIT_MICROTILE', - 400: 'CB_PERF_SEL_RBP_SPLIT_AA_SAMPLE_MASK', - 401: 'CB_PERF_SEL_RBP_SPLIT_PARTIAL_TARGET_MASK', - 402: 'CB_PERF_SEL_RBP_SPLIT_LINEAR_ADDRESSING', - 403: 'CB_PERF_SEL_RBP_SPLIT_AA_NO_FMASK_COMPRESS', - 404: 'CB_PERF_SEL_RBP_INSERT_MISSING_LAST_QUAD', -} -CB_PERF_SEL_NONE = 0 -CB_PERF_SEL_BUSY = 1 -CB_PERF_SEL_CORE_SCLK_VLD = 2 -CB_PERF_SEL_REG_SCLK0_VLD = 3 -CB_PERF_SEL_REG_SCLK1_VLD = 4 -CB_PERF_SEL_DRAWN_QUAD = 5 -CB_PERF_SEL_DRAWN_PIXEL = 6 -CB_PERF_SEL_DRAWN_QUAD_FRAGMENT = 7 -CB_PERF_SEL_DRAWN_TILE = 8 -CB_PERF_SEL_DB_CB_TILE_VALID_READY = 9 -CB_PERF_SEL_DB_CB_TILE_VALID_READYB = 10 -CB_PERF_SEL_DB_CB_TILE_VALIDB_READY = 11 -CB_PERF_SEL_DB_CB_TILE_VALIDB_READYB = 12 -CB_PERF_SEL_CM_FC_TILE_VALID_READY = 13 -CB_PERF_SEL_CM_FC_TILE_VALID_READYB = 14 -CB_PERF_SEL_CM_FC_TILE_VALIDB_READY = 15 -CB_PERF_SEL_CM_FC_TILE_VALIDB_READYB = 16 -CB_PERF_SEL_MERGE_TILE_ONLY_VALID_READY = 17 -CB_PERF_SEL_MERGE_TILE_ONLY_VALID_READYB = 18 -CB_PERF_SEL_DB_CB_LQUAD_VALID_READY = 19 -CB_PERF_SEL_DB_CB_LQUAD_VALID_READYB = 20 -CB_PERF_SEL_DB_CB_LQUAD_VALIDB_READY = 21 -CB_PERF_SEL_DB_CB_LQUAD_VALIDB_READYB = 22 -CB_PERF_SEL_LQUAD_NO_TILE = 23 -CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_R = 24 -CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_AR = 25 -CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_GR = 26 -CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_ABGR = 27 -CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_FP16_ABGR = 28 -CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_SIGNED16_ABGR = 29 -CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_UNSIGNED16_ABGR = 30 -CB_PERF_SEL_QUAD_KILLED_BY_EXTRA_PIXEL_EXPORT = 31 -CB_PERF_SEL_QUAD_KILLED_BY_COLOR_INVALID = 32 -CB_PERF_SEL_QUAD_KILLED_BY_NULL_TARGET_SHADER_MASK = 33 -CB_PERF_SEL_QUAD_KILLED_BY_NULL_SAMPLE_MASK = 34 -CB_PERF_SEL_QUAD_KILLED_BY_DISCARD_PIXEL = 35 -CB_PERF_SEL_FC_CLEAR_QUAD_VALID_READY = 36 -CB_PERF_SEL_FC_CLEAR_QUAD_VALID_READYB = 37 -CB_PERF_SEL_FC_CLEAR_QUAD_VALIDB_READY = 38 -CB_PERF_SEL_FC_CLEAR_QUAD_VALIDB_READYB = 39 -CB_PERF_SEL_FOP_IN_VALID_READY = 40 -CB_PERF_SEL_FOP_IN_VALID_READYB = 41 -CB_PERF_SEL_FOP_IN_VALIDB_READY = 42 -CB_PERF_SEL_FOP_IN_VALIDB_READYB = 43 -CB_PERF_SEL_FC_CC_QUADFRAG_VALID_READY = 44 -CB_PERF_SEL_FC_CC_QUADFRAG_VALID_READYB = 45 -CB_PERF_SEL_FC_CC_QUADFRAG_VALIDB_READY = 46 -CB_PERF_SEL_FC_CC_QUADFRAG_VALIDB_READYB = 47 -CB_PERF_SEL_CC_IB_SR_FRAG_VALID_READY = 48 -CB_PERF_SEL_CC_IB_SR_FRAG_VALID_READYB = 49 -CB_PERF_SEL_CC_IB_SR_FRAG_VALIDB_READY = 50 -CB_PERF_SEL_CC_IB_SR_FRAG_VALIDB_READYB = 51 -CB_PERF_SEL_CC_IB_TB_FRAG_VALID_READY = 52 -CB_PERF_SEL_CC_IB_TB_FRAG_VALID_READYB = 53 -CB_PERF_SEL_CC_IB_TB_FRAG_VALIDB_READY = 54 -CB_PERF_SEL_CC_IB_TB_FRAG_VALIDB_READYB = 55 -CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALID_READY = 56 -CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALID_READYB = 57 -CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALIDB_READY = 58 -CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALIDB_READYB = 59 -CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALID_READY = 60 -CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALID_READYB = 61 -CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALIDB_READY = 62 -CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALIDB_READYB = 63 -CB_PERF_SEL_CC_BC_CS_FRAG_VALID = 64 -CB_PERF_SEL_CM_CACHE_HIT = 65 -CB_PERF_SEL_CM_CACHE_TAG_MISS = 66 -CB_PERF_SEL_CM_CACHE_SECTOR_MISS = 67 -CB_PERF_SEL_CM_CACHE_REEVICTION_STALL = 68 -CB_PERF_SEL_CM_CACHE_EVICT_NONZERO_INFLIGHT_STALL = 69 -CB_PERF_SEL_CM_CACHE_REPLACE_PENDING_EVICT_STALL = 70 -CB_PERF_SEL_CM_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL = 71 -CB_PERF_SEL_CM_CACHE_READ_OUTPUT_STALL = 72 -CB_PERF_SEL_CM_CACHE_WRITE_OUTPUT_STALL = 73 -CB_PERF_SEL_CM_CACHE_ACK_OUTPUT_STALL = 74 -CB_PERF_SEL_CM_CACHE_STALL = 75 -CB_PERF_SEL_CM_CACHE_FLUSH = 76 -CB_PERF_SEL_CM_CACHE_TAGS_FLUSHED = 77 -CB_PERF_SEL_CM_CACHE_SECTORS_FLUSHED = 78 -CB_PERF_SEL_CM_CACHE_DIRTY_SECTORS_FLUSHED = 79 -CB_PERF_SEL_FC_CACHE_HIT = 80 -CB_PERF_SEL_FC_CACHE_TAG_MISS = 81 -CB_PERF_SEL_FC_CACHE_SECTOR_MISS = 82 -CB_PERF_SEL_FC_CACHE_REEVICTION_STALL = 83 -CB_PERF_SEL_FC_CACHE_EVICT_NONZERO_INFLIGHT_STALL = 84 -CB_PERF_SEL_FC_CACHE_REPLACE_PENDING_EVICT_STALL = 85 -CB_PERF_SEL_FC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL = 86 -CB_PERF_SEL_FC_CACHE_READ_OUTPUT_STALL = 87 -CB_PERF_SEL_FC_CACHE_WRITE_OUTPUT_STALL = 88 -CB_PERF_SEL_FC_CACHE_ACK_OUTPUT_STALL = 89 -CB_PERF_SEL_FC_CACHE_STALL = 90 -CB_PERF_SEL_FC_CACHE_FLUSH = 91 -CB_PERF_SEL_FC_CACHE_TAGS_FLUSHED = 92 -CB_PERF_SEL_FC_CACHE_SECTORS_FLUSHED = 93 -CB_PERF_SEL_FC_CACHE_DIRTY_SECTORS_FLUSHED = 94 -CB_PERF_SEL_CC_CACHE_HIT = 95 -CB_PERF_SEL_CC_CACHE_TAG_MISS = 96 -CB_PERF_SEL_CC_CACHE_SECTOR_MISS = 97 -CB_PERF_SEL_CC_CACHE_REEVICTION_STALL = 98 -CB_PERF_SEL_CC_CACHE_EVICT_NONZERO_INFLIGHT_STALL = 99 -CB_PERF_SEL_CC_CACHE_REPLACE_PENDING_EVICT_STALL = 100 -CB_PERF_SEL_CC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL = 101 -CB_PERF_SEL_CC_CACHE_READ_OUTPUT_STALL = 102 -CB_PERF_SEL_CC_CACHE_WRITE_OUTPUT_STALL = 103 -CB_PERF_SEL_CC_CACHE_ACK_OUTPUT_STALL = 104 -CB_PERF_SEL_CC_CACHE_STALL = 105 -CB_PERF_SEL_CC_CACHE_FLUSH = 106 -CB_PERF_SEL_CC_CACHE_TAGS_FLUSHED = 107 -CB_PERF_SEL_CC_CACHE_SECTORS_FLUSHED = 108 -CB_PERF_SEL_CC_CACHE_DIRTY_SECTORS_FLUSHED = 109 -CB_PERF_SEL_CC_CACHE_WA_TO_RMW_CONVERSION = 110 -CB_PERF_SEL_CC_CACHE_READS_SAVED_DUE_TO_DCC = 111 -CB_PERF_SEL_CB_TAP_WRREQ_VALID_READY = 112 -CB_PERF_SEL_CB_TAP_WRREQ_VALID_READYB = 113 -CB_PERF_SEL_CB_TAP_WRREQ_VALIDB_READY = 114 -CB_PERF_SEL_CB_TAP_WRREQ_VALIDB_READYB = 115 -CB_PERF_SEL_CM_MC_WRITE_REQUEST = 116 -CB_PERF_SEL_FC_MC_WRITE_REQUEST = 117 -CB_PERF_SEL_CC_MC_WRITE_REQUEST = 118 -CB_PERF_SEL_CM_MC_WRITE_REQUESTS_IN_FLIGHT = 119 -CB_PERF_SEL_FC_MC_WRITE_REQUESTS_IN_FLIGHT = 120 -CB_PERF_SEL_CC_MC_WRITE_REQUESTS_IN_FLIGHT = 121 -CB_PERF_SEL_CB_TAP_RDREQ_VALID_READY = 122 -CB_PERF_SEL_CB_TAP_RDREQ_VALID_READYB = 123 -CB_PERF_SEL_CB_TAP_RDREQ_VALIDB_READY = 124 -CB_PERF_SEL_CB_TAP_RDREQ_VALIDB_READYB = 125 -CB_PERF_SEL_CM_MC_READ_REQUEST = 126 -CB_PERF_SEL_FC_MC_READ_REQUEST = 127 -CB_PERF_SEL_CC_MC_READ_REQUEST = 128 -CB_PERF_SEL_CM_MC_READ_REQUESTS_IN_FLIGHT = 129 -CB_PERF_SEL_FC_MC_READ_REQUESTS_IN_FLIGHT = 130 -CB_PERF_SEL_CC_MC_READ_REQUESTS_IN_FLIGHT = 131 -CB_PERF_SEL_CM_TQ_FULL = 132 -CB_PERF_SEL_CM_TQ_FIFO_TILE_RESIDENCY_STALL = 133 -CB_PERF_SEL_FC_QUAD_RDLAT_FIFO_FULL = 134 -CB_PERF_SEL_FC_TILE_RDLAT_FIFO_FULL = 135 -CB_PERF_SEL_FC_RDLAT_FIFO_QUAD_RESIDENCY_STALL = 136 -CB_PERF_SEL_FOP_FMASK_RAW_STALL = 137 -CB_PERF_SEL_FOP_FMASK_BYPASS_STALL = 138 -CB_PERF_SEL_CC_SF_FULL = 139 -CB_PERF_SEL_CC_RB_FULL = 140 -CB_PERF_SEL_CC_EVENFIFO_QUAD_RESIDENCY_STALL = 141 -CB_PERF_SEL_CC_ODDFIFO_QUAD_RESIDENCY_STALL = 142 -CB_PERF_SEL_BLENDER_RAW_HAZARD_STALL = 143 -CB_PERF_SEL_EVENT = 144 -CB_PERF_SEL_EVENT_CACHE_FLUSH_TS = 145 -CB_PERF_SEL_EVENT_CONTEXT_DONE = 146 -CB_PERF_SEL_EVENT_CACHE_FLUSH = 147 -CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_TS_EVENT = 148 -CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_EVENT = 149 -CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_DATA_TS = 150 -CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_META = 151 -CB_PERF_SEL_CC_SURFACE_SYNC = 152 -CB_PERF_SEL_CMASK_READ_DATA_0xC = 153 -CB_PERF_SEL_CMASK_READ_DATA_0xD = 154 -CB_PERF_SEL_CMASK_READ_DATA_0xE = 155 -CB_PERF_SEL_CMASK_READ_DATA_0xF = 156 -CB_PERF_SEL_CMASK_WRITE_DATA_0xC = 157 -CB_PERF_SEL_CMASK_WRITE_DATA_0xD = 158 -CB_PERF_SEL_CMASK_WRITE_DATA_0xE = 159 -CB_PERF_SEL_CMASK_WRITE_DATA_0xF = 160 -CB_PERF_SEL_TWO_PROBE_QUAD_FRAGMENT = 161 -CB_PERF_SEL_EXPORT_32_ABGR_QUAD_FRAGMENT = 162 -CB_PERF_SEL_DUAL_SOURCE_COLOR_QUAD_FRAGMENT = 163 -CB_PERF_SEL_QUAD_HAS_1_FRAGMENT_BEFORE_UPDATE = 164 -CB_PERF_SEL_QUAD_HAS_2_FRAGMENTS_BEFORE_UPDATE = 165 -CB_PERF_SEL_QUAD_HAS_3_FRAGMENTS_BEFORE_UPDATE = 166 -CB_PERF_SEL_QUAD_HAS_4_FRAGMENTS_BEFORE_UPDATE = 167 -CB_PERF_SEL_QUAD_HAS_5_FRAGMENTS_BEFORE_UPDATE = 168 -CB_PERF_SEL_QUAD_HAS_6_FRAGMENTS_BEFORE_UPDATE = 169 -CB_PERF_SEL_QUAD_HAS_7_FRAGMENTS_BEFORE_UPDATE = 170 -CB_PERF_SEL_QUAD_HAS_8_FRAGMENTS_BEFORE_UPDATE = 171 -CB_PERF_SEL_QUAD_HAS_1_FRAGMENT_AFTER_UPDATE = 172 -CB_PERF_SEL_QUAD_HAS_2_FRAGMENTS_AFTER_UPDATE = 173 -CB_PERF_SEL_QUAD_HAS_3_FRAGMENTS_AFTER_UPDATE = 174 -CB_PERF_SEL_QUAD_HAS_4_FRAGMENTS_AFTER_UPDATE = 175 -CB_PERF_SEL_QUAD_HAS_5_FRAGMENTS_AFTER_UPDATE = 176 -CB_PERF_SEL_QUAD_HAS_6_FRAGMENTS_AFTER_UPDATE = 177 -CB_PERF_SEL_QUAD_HAS_7_FRAGMENTS_AFTER_UPDATE = 178 -CB_PERF_SEL_QUAD_HAS_8_FRAGMENTS_AFTER_UPDATE = 179 -CB_PERF_SEL_QUAD_ADDED_1_FRAGMENT = 180 -CB_PERF_SEL_QUAD_ADDED_2_FRAGMENTS = 181 -CB_PERF_SEL_QUAD_ADDED_3_FRAGMENTS = 182 -CB_PERF_SEL_QUAD_ADDED_4_FRAGMENTS = 183 -CB_PERF_SEL_QUAD_ADDED_5_FRAGMENTS = 184 -CB_PERF_SEL_QUAD_ADDED_6_FRAGMENTS = 185 -CB_PERF_SEL_QUAD_ADDED_7_FRAGMENTS = 186 -CB_PERF_SEL_QUAD_REMOVED_1_FRAGMENT = 187 -CB_PERF_SEL_QUAD_REMOVED_2_FRAGMENTS = 188 -CB_PERF_SEL_QUAD_REMOVED_3_FRAGMENTS = 189 -CB_PERF_SEL_QUAD_REMOVED_4_FRAGMENTS = 190 -CB_PERF_SEL_QUAD_REMOVED_5_FRAGMENTS = 191 -CB_PERF_SEL_QUAD_REMOVED_6_FRAGMENTS = 192 -CB_PERF_SEL_QUAD_REMOVED_7_FRAGMENTS = 193 -CB_PERF_SEL_QUAD_READS_FRAGMENT_0 = 194 -CB_PERF_SEL_QUAD_READS_FRAGMENT_1 = 195 -CB_PERF_SEL_QUAD_READS_FRAGMENT_2 = 196 -CB_PERF_SEL_QUAD_READS_FRAGMENT_3 = 197 -CB_PERF_SEL_QUAD_READS_FRAGMENT_4 = 198 -CB_PERF_SEL_QUAD_READS_FRAGMENT_5 = 199 -CB_PERF_SEL_QUAD_READS_FRAGMENT_6 = 200 -CB_PERF_SEL_QUAD_READS_FRAGMENT_7 = 201 -CB_PERF_SEL_QUAD_WRITES_FRAGMENT_0 = 202 -CB_PERF_SEL_QUAD_WRITES_FRAGMENT_1 = 203 -CB_PERF_SEL_QUAD_WRITES_FRAGMENT_2 = 204 -CB_PERF_SEL_QUAD_WRITES_FRAGMENT_3 = 205 -CB_PERF_SEL_QUAD_WRITES_FRAGMENT_4 = 206 -CB_PERF_SEL_QUAD_WRITES_FRAGMENT_5 = 207 -CB_PERF_SEL_QUAD_WRITES_FRAGMENT_6 = 208 -CB_PERF_SEL_QUAD_WRITES_FRAGMENT_7 = 209 -CB_PERF_SEL_QUAD_BLEND_OPT_DONT_READ_DST = 210 -CB_PERF_SEL_QUAD_BLEND_OPT_BLEND_BYPASS = 211 -CB_PERF_SEL_QUAD_BLEND_OPT_DISCARD_PIXELS = 212 -CB_PERF_SEL_QUAD_DST_READ_COULD_HAVE_BEEN_OPTIMIZED = 213 -CB_PERF_SEL_QUAD_BLENDING_COULD_HAVE_BEEN_BYPASSED = 214 -CB_PERF_SEL_QUAD_COULD_HAVE_BEEN_DISCARDED = 215 -CB_PERF_SEL_BLEND_OPT_PIXELS_RESULT_EQ_DEST = 216 -CB_PERF_SEL_DRAWN_BUSY = 217 -CB_PERF_SEL_TILE_TO_CMR_REGION_BUSY = 218 -CB_PERF_SEL_CMR_TO_FCR_REGION_BUSY = 219 -CB_PERF_SEL_FCR_TO_CCR_REGION_BUSY = 220 -CB_PERF_SEL_CCR_TO_CCW_REGION_BUSY = 221 -CB_PERF_SEL_FC_PF_SLOW_MODE_QUAD_EMPTY_HALF_DROPPED = 222 -CB_PERF_SEL_FC_SEQUENCER_CLEAR = 223 -CB_PERF_SEL_FC_SEQUENCER_ELIMINATE_FAST_CLEAR = 224 -CB_PERF_SEL_FC_SEQUENCER_FMASK_DECOMPRESS = 225 -CB_PERF_SEL_FC_SEQUENCER_FMASK_COMPRESSION_DISABLE = 226 -CB_PERF_SEL_FC_KEYID_RDLAT_FIFO_FULL = 227 -CB_PERF_SEL_FC_DOC_IS_STALLED = 228 -CB_PERF_SEL_FC_DOC_MRTS_NOT_COMBINED = 229 -CB_PERF_SEL_FC_DOC_MRTS_COMBINED = 230 -CB_PERF_SEL_FC_DOC_QTILE_CAM_MISS = 231 -CB_PERF_SEL_FC_DOC_QTILE_CAM_HIT = 232 -CB_PERF_SEL_FC_DOC_CLINE_CAM_MISS = 233 -CB_PERF_SEL_FC_DOC_CLINE_CAM_HIT = 234 -CB_PERF_SEL_FC_DOC_QUAD_PTR_FIFO_IS_FULL = 235 -CB_PERF_SEL_FC_DOC_OVERWROTE_1_SECTOR = 236 -CB_PERF_SEL_FC_DOC_OVERWROTE_2_SECTORS = 237 -CB_PERF_SEL_FC_DOC_OVERWROTE_3_SECTORS = 238 -CB_PERF_SEL_FC_DOC_OVERWROTE_4_SECTORS = 239 -CB_PERF_SEL_FC_DOC_TOTAL_OVERWRITTEN_SECTORS = 240 -CB_PERF_SEL_FC_DCC_CACHE_HIT = 241 -CB_PERF_SEL_FC_DCC_CACHE_TAG_MISS = 242 -CB_PERF_SEL_FC_DCC_CACHE_SECTOR_MISS = 243 -CB_PERF_SEL_FC_DCC_CACHE_REEVICTION_STALL = 244 -CB_PERF_SEL_FC_DCC_CACHE_EVICT_NONZERO_INFLIGHT_STALL = 245 -CB_PERF_SEL_FC_DCC_CACHE_REPLACE_PENDING_EVICT_STALL = 246 -CB_PERF_SEL_FC_DCC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL = 247 -CB_PERF_SEL_FC_DCC_CACHE_READ_OUTPUT_STALL = 248 -CB_PERF_SEL_FC_DCC_CACHE_WRITE_OUTPUT_STALL = 249 -CB_PERF_SEL_FC_DCC_CACHE_ACK_OUTPUT_STALL = 250 -CB_PERF_SEL_FC_DCC_CACHE_STALL = 251 -CB_PERF_SEL_FC_DCC_CACHE_FLUSH = 252 -CB_PERF_SEL_FC_DCC_CACHE_TAGS_FLUSHED = 253 -CB_PERF_SEL_FC_DCC_CACHE_SECTORS_FLUSHED = 254 -CB_PERF_SEL_FC_DCC_CACHE_DIRTY_SECTORS_FLUSHED = 255 -CB_PERF_SEL_CC_DCC_BEYOND_TILE_SPLIT = 256 -CB_PERF_SEL_FC_MC_DCC_WRITE_REQUEST = 257 -CB_PERF_SEL_FC_MC_DCC_WRITE_REQUESTS_IN_FLIGHT = 258 -CB_PERF_SEL_FC_MC_DCC_READ_REQUEST = 259 -CB_PERF_SEL_FC_MC_DCC_READ_REQUESTS_IN_FLIGHT = 260 -CB_PERF_SEL_CC_DCC_RDREQ_STALL = 261 -CB_PERF_SEL_CC_DCC_DECOMPRESS_TIDS_IN = 262 -CB_PERF_SEL_CC_DCC_DECOMPRESS_TIDS_OUT = 263 -CB_PERF_SEL_CC_DCC_COMPRESS_TIDS_IN = 264 -CB_PERF_SEL_CC_DCC_COMPRESS_TIDS_OUT = 265 -CB_PERF_SEL_FC_DCC_KEY_VALUE__CLEAR = 266 -CB_PERF_SEL_CC_DCC_KEY_VALUE__4_BLOCKS__2TO1 = 267 -CB_PERF_SEL_CC_DCC_KEY_VALUE__3BLOCKS_2TO1__1BLOCK_2TO2 = 268 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_2TO2__1BLOCK_2TO1 = 269 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__2BLOCKS_2TO1 = 270 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__3BLOCKS_2TO1 = 271 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__2BLOCKS_2TO2 = 272 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__2BLOCKS_2TO2__1BLOCK_2TO1 = 273 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_2TO2 = 274 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_2TO1 = 275 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__2BLOCKS_2TO1 = 276 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__2BLOCKS_2TO1__1BLOCK_2TO2 = 277 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__3BLOCKS_2TO2 = 278 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__2BLOCKS_2TO2 = 279 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_2TO1__1BLOCK_2TO2 = 280 -CB_PERF_SEL_CC_DCC_KEY_VALUE__3BLOCKS_2TO2__1BLOCK_2TO1 = 281 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_4TO1 = 282 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_4TO2 = 283 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_4TO3 = 284 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_4TO4 = 285 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_4TO1 = 286 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_4TO2 = 287 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_4TO3 = 288 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_4TO4 = 289 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_4TO1 = 290 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_4TO2 = 291 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_4TO3 = 292 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_4TO4 = 293 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_4TO1 = 294 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_4TO2 = 295 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_4TO3 = 296 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO1 = 297 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO2 = 298 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO3 = 299 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO4 = 300 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO1 = 301 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO2 = 302 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO3 = 303 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO4 = 304 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO1 = 305 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO2 = 306 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO3 = 307 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO4 = 308 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_4TO1 = 309 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_4TO2 = 310 -CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_4TO3 = 311 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO1__1BLOCK_2TO1 = 312 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO2__1BLOCK_2TO1 = 313 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO3__1BLOCK_2TO1 = 314 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO4__1BLOCK_2TO1 = 315 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO1__1BLOCK_2TO1 = 316 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO2__1BLOCK_2TO1 = 317 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO3__1BLOCK_2TO1 = 318 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO4__1BLOCK_2TO1 = 319 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO1__1BLOCK_2TO2 = 320 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO2__1BLOCK_2TO2 = 321 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO3__1BLOCK_2TO2 = 322 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO4__1BLOCK_2TO2 = 323 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO1__1BLOCK_2TO2 = 324 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO2__1BLOCK_2TO2 = 325 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO3__1BLOCK_2TO2 = 326 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__2BLOCKS_2TO1 = 327 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__2BLOCKS_2TO1 = 328 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__2BLOCKS_2TO1 = 329 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__2BLOCKS_2TO1 = 330 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__2BLOCKS_2TO2 = 331 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__2BLOCKS_2TO2 = 332 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__2BLOCKS_2TO2 = 333 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_2TO1__1BLOCK_2TO2 = 334 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_2TO1__1BLOCK_2TO2 = 335 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_2TO1__1BLOCK_2TO2 = 336 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_2TO1__1BLOCK_2TO2 = 337 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_2TO2__1BLOCK_2TO1 = 338 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_2TO2__1BLOCK_2TO1 = 339 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_2TO2__1BLOCK_2TO1 = 340 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_2TO2__1BLOCK_2TO1 = 341 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO1 = 342 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO2 = 343 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO3 = 344 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO4 = 345 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO5 = 346 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO6 = 347 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__INV0 = 348 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__INV1 = 349 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO1 = 350 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO2 = 351 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO3 = 352 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO4 = 353 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO5 = 354 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__INV0 = 355 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__INV1 = 356 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO1__1BLOCK_2TO1 = 357 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO2__1BLOCK_2TO1 = 358 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO3__1BLOCK_2TO1 = 359 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO4__1BLOCK_2TO1 = 360 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO5__1BLOCK_2TO1 = 361 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO6__1BLOCK_2TO1 = 362 -CB_PERF_SEL_CC_DCC_KEY_VALUE__INV0__1BLOCK_2TO1 = 363 -CB_PERF_SEL_CC_DCC_KEY_VALUE__INV1__1BLOCK_2TO1 = 364 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO1__1BLOCK_2TO2 = 365 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO2__1BLOCK_2TO2 = 366 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO3__1BLOCK_2TO2 = 367 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO4__1BLOCK_2TO2 = 368 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO5__1BLOCK_2TO2 = 369 -CB_PERF_SEL_CC_DCC_KEY_VALUE__INV0__1BLOCK_2TO2 = 370 -CB_PERF_SEL_CC_DCC_KEY_VALUE__INV1__1BLOCK_2TO2 = 371 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO1 = 372 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO2 = 373 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO3 = 374 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO4 = 375 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO5 = 376 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO6 = 377 -CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO7 = 378 -CB_PERF_SEL_CC_DCC_KEY_VALUE__UNCOMPRESSED = 379 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_2TO1 = 380 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_4TO1 = 381 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_4TO2 = 382 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_4TO3 = 383 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO1 = 384 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO2 = 385 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO3 = 386 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO4 = 387 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO5 = 388 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO1 = 389 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO2 = 390 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO3 = 391 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO4 = 392 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO5 = 393 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO6 = 394 -CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO7 = 395 -CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_BOTH = 396 -CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_LEFT = 397 -CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_RIGHT = 398 -CB_PERF_SEL_RBP_SPLIT_MICROTILE = 399 -CB_PERF_SEL_RBP_SPLIT_AA_SAMPLE_MASK = 400 -CB_PERF_SEL_RBP_SPLIT_PARTIAL_TARGET_MASK = 401 -CB_PERF_SEL_RBP_SPLIT_LINEAR_ADDRESSING = 402 -CB_PERF_SEL_RBP_SPLIT_AA_NO_FMASK_COMPRESS = 403 -CB_PERF_SEL_RBP_INSERT_MISSING_LAST_QUAD = 404 -CBPerfSel = ctypes.c_uint32 # enum - -# values for enumeration 'CBPerfOpFilterSel' -CBPerfOpFilterSel__enumvalues = { - 0: 'CB_PERF_OP_FILTER_SEL_WRITE_ONLY', - 1: 'CB_PERF_OP_FILTER_SEL_NEEDS_DESTINATION', - 2: 'CB_PERF_OP_FILTER_SEL_RESOLVE', - 3: 'CB_PERF_OP_FILTER_SEL_DECOMPRESS', - 4: 'CB_PERF_OP_FILTER_SEL_FMASK_DECOMPRESS', - 5: 'CB_PERF_OP_FILTER_SEL_ELIMINATE_FAST_CLEAR', -} -CB_PERF_OP_FILTER_SEL_WRITE_ONLY = 0 -CB_PERF_OP_FILTER_SEL_NEEDS_DESTINATION = 1 -CB_PERF_OP_FILTER_SEL_RESOLVE = 2 -CB_PERF_OP_FILTER_SEL_DECOMPRESS = 3 -CB_PERF_OP_FILTER_SEL_FMASK_DECOMPRESS = 4 -CB_PERF_OP_FILTER_SEL_ELIMINATE_FAST_CLEAR = 5 -CBPerfOpFilterSel = ctypes.c_uint32 # enum - -# values for enumeration 'CBPerfClearFilterSel' -CBPerfClearFilterSel__enumvalues = { - 0: 'CB_PERF_CLEAR_FILTER_SEL_NONCLEAR', - 1: 'CB_PERF_CLEAR_FILTER_SEL_CLEAR', -} -CB_PERF_CLEAR_FILTER_SEL_NONCLEAR = 0 -CB_PERF_CLEAR_FILTER_SEL_CLEAR = 1 -CBPerfClearFilterSel = ctypes.c_uint32 # enum - -# values for enumeration 'TC_OP_MASKS' -TC_OP_MASKS__enumvalues = { - 8: 'TC_OP_MASK_FLUSH_DENROM', - 32: 'TC_OP_MASK_64', - 64: 'TC_OP_MASK_NO_RTN', -} -TC_OP_MASK_FLUSH_DENROM = 8 -TC_OP_MASK_64 = 32 -TC_OP_MASK_NO_RTN = 64 -TC_OP_MASKS = ctypes.c_uint32 # enum - -# values for enumeration 'TC_OP' -TC_OP__enumvalues = { - 0: 'TC_OP_READ', - 1: 'TC_OP_ATOMIC_FCMPSWAP_RTN_32', - 2: 'TC_OP_ATOMIC_FMIN_RTN_32', - 3: 'TC_OP_ATOMIC_FMAX_RTN_32', - 4: 'TC_OP_RESERVED_FOP_RTN_32_0', - 5: 'TC_OP_RESERVED_FOP_RTN_32_1', - 6: 'TC_OP_RESERVED_FOP_RTN_32_2', - 7: 'TC_OP_ATOMIC_SWAP_RTN_32', - 8: 'TC_OP_ATOMIC_CMPSWAP_RTN_32', - 9: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32', - 10: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32', - 11: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32', - 12: 'TC_OP_PROBE_FILTER', - 13: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_1', - 14: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2', - 15: 'TC_OP_ATOMIC_ADD_RTN_32', - 16: 'TC_OP_ATOMIC_SUB_RTN_32', - 17: 'TC_OP_ATOMIC_SMIN_RTN_32', - 18: 'TC_OP_ATOMIC_UMIN_RTN_32', - 19: 'TC_OP_ATOMIC_SMAX_RTN_32', - 20: 'TC_OP_ATOMIC_UMAX_RTN_32', - 21: 'TC_OP_ATOMIC_AND_RTN_32', - 22: 'TC_OP_ATOMIC_OR_RTN_32', - 23: 'TC_OP_ATOMIC_XOR_RTN_32', - 24: 'TC_OP_ATOMIC_INC_RTN_32', - 25: 'TC_OP_ATOMIC_DEC_RTN_32', - 26: 'TC_OP_WBINVL1_VOL', - 27: 'TC_OP_WBINVL1_SD', - 28: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_0', - 29: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_1', - 30: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_2', - 31: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_3', - 32: 'TC_OP_WRITE', - 33: 'TC_OP_ATOMIC_FCMPSWAP_RTN_64', - 34: 'TC_OP_ATOMIC_FMIN_RTN_64', - 35: 'TC_OP_ATOMIC_FMAX_RTN_64', - 36: 'TC_OP_RESERVED_FOP_RTN_64_0', - 37: 'TC_OP_RESERVED_FOP_RTN_64_1', - 38: 'TC_OP_RESERVED_FOP_RTN_64_2', - 39: 'TC_OP_ATOMIC_SWAP_RTN_64', - 40: 'TC_OP_ATOMIC_CMPSWAP_RTN_64', - 41: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64', - 42: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64', - 43: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64', - 44: 'TC_OP_WBINVL2_SD', - 45: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_0', - 46: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_1', - 47: 'TC_OP_ATOMIC_ADD_RTN_64', - 48: 'TC_OP_ATOMIC_SUB_RTN_64', - 49: 'TC_OP_ATOMIC_SMIN_RTN_64', - 50: 'TC_OP_ATOMIC_UMIN_RTN_64', - 51: 'TC_OP_ATOMIC_SMAX_RTN_64', - 52: 'TC_OP_ATOMIC_UMAX_RTN_64', - 53: 'TC_OP_ATOMIC_AND_RTN_64', - 54: 'TC_OP_ATOMIC_OR_RTN_64', - 55: 'TC_OP_ATOMIC_XOR_RTN_64', - 56: 'TC_OP_ATOMIC_INC_RTN_64', - 57: 'TC_OP_ATOMIC_DEC_RTN_64', - 58: 'TC_OP_WBL2_NC', - 59: 'TC_OP_WBL2_WC', - 60: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_1', - 61: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_2', - 62: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_3', - 63: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_4', - 64: 'TC_OP_WBINVL1', - 65: 'TC_OP_ATOMIC_FCMPSWAP_32', - 66: 'TC_OP_ATOMIC_FMIN_32', - 67: 'TC_OP_ATOMIC_FMAX_32', - 68: 'TC_OP_RESERVED_FOP_32_0', - 69: 'TC_OP_RESERVED_FOP_32_1', - 70: 'TC_OP_RESERVED_FOP_32_2', - 71: 'TC_OP_ATOMIC_SWAP_32', - 72: 'TC_OP_ATOMIC_CMPSWAP_32', - 73: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32', - 74: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_32', - 75: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_32', - 76: 'TC_OP_INV_METADATA', - 77: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_32_1', - 78: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_32_2', - 79: 'TC_OP_ATOMIC_ADD_32', - 80: 'TC_OP_ATOMIC_SUB_32', - 81: 'TC_OP_ATOMIC_SMIN_32', - 82: 'TC_OP_ATOMIC_UMIN_32', - 83: 'TC_OP_ATOMIC_SMAX_32', - 84: 'TC_OP_ATOMIC_UMAX_32', - 85: 'TC_OP_ATOMIC_AND_32', - 86: 'TC_OP_ATOMIC_OR_32', - 87: 'TC_OP_ATOMIC_XOR_32', - 88: 'TC_OP_ATOMIC_INC_32', - 89: 'TC_OP_ATOMIC_DEC_32', - 90: 'TC_OP_INVL2_NC', - 91: 'TC_OP_NOP_RTN0', - 92: 'TC_OP_RESERVED_NON_FLOAT_32_1', - 93: 'TC_OP_RESERVED_NON_FLOAT_32_2', - 94: 'TC_OP_RESERVED_NON_FLOAT_32_3', - 95: 'TC_OP_RESERVED_NON_FLOAT_32_4', - 96: 'TC_OP_WBINVL2', - 97: 'TC_OP_ATOMIC_FCMPSWAP_64', - 98: 'TC_OP_ATOMIC_FMIN_64', - 99: 'TC_OP_ATOMIC_FMAX_64', - 100: 'TC_OP_RESERVED_FOP_64_0', - 101: 'TC_OP_RESERVED_FOP_64_1', - 102: 'TC_OP_RESERVED_FOP_64_2', - 103: 'TC_OP_ATOMIC_SWAP_64', - 104: 'TC_OP_ATOMIC_CMPSWAP_64', - 105: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64', - 106: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_64', - 107: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_64', - 108: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_0', - 109: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_1', - 110: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_2', - 111: 'TC_OP_ATOMIC_ADD_64', - 112: 'TC_OP_ATOMIC_SUB_64', - 113: 'TC_OP_ATOMIC_SMIN_64', - 114: 'TC_OP_ATOMIC_UMIN_64', - 115: 'TC_OP_ATOMIC_SMAX_64', - 116: 'TC_OP_ATOMIC_UMAX_64', - 117: 'TC_OP_ATOMIC_AND_64', - 118: 'TC_OP_ATOMIC_OR_64', - 119: 'TC_OP_ATOMIC_XOR_64', - 120: 'TC_OP_ATOMIC_INC_64', - 121: 'TC_OP_ATOMIC_DEC_64', - 122: 'TC_OP_WBINVL2_NC', - 123: 'TC_OP_NOP_ACK', - 124: 'TC_OP_RESERVED_NON_FLOAT_64_1', - 125: 'TC_OP_RESERVED_NON_FLOAT_64_2', - 126: 'TC_OP_RESERVED_NON_FLOAT_64_3', - 127: 'TC_OP_RESERVED_NON_FLOAT_64_4', -} -TC_OP_READ = 0 -TC_OP_ATOMIC_FCMPSWAP_RTN_32 = 1 -TC_OP_ATOMIC_FMIN_RTN_32 = 2 -TC_OP_ATOMIC_FMAX_RTN_32 = 3 -TC_OP_RESERVED_FOP_RTN_32_0 = 4 -TC_OP_RESERVED_FOP_RTN_32_1 = 5 -TC_OP_RESERVED_FOP_RTN_32_2 = 6 -TC_OP_ATOMIC_SWAP_RTN_32 = 7 -TC_OP_ATOMIC_CMPSWAP_RTN_32 = 8 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32 = 9 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32 = 10 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32 = 11 -TC_OP_PROBE_FILTER = 12 -TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_1 = 13 -TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2 = 14 -TC_OP_ATOMIC_ADD_RTN_32 = 15 -TC_OP_ATOMIC_SUB_RTN_32 = 16 -TC_OP_ATOMIC_SMIN_RTN_32 = 17 -TC_OP_ATOMIC_UMIN_RTN_32 = 18 -TC_OP_ATOMIC_SMAX_RTN_32 = 19 -TC_OP_ATOMIC_UMAX_RTN_32 = 20 -TC_OP_ATOMIC_AND_RTN_32 = 21 -TC_OP_ATOMIC_OR_RTN_32 = 22 -TC_OP_ATOMIC_XOR_RTN_32 = 23 -TC_OP_ATOMIC_INC_RTN_32 = 24 -TC_OP_ATOMIC_DEC_RTN_32 = 25 -TC_OP_WBINVL1_VOL = 26 -TC_OP_WBINVL1_SD = 27 -TC_OP_RESERVED_NON_FLOAT_RTN_32_0 = 28 -TC_OP_RESERVED_NON_FLOAT_RTN_32_1 = 29 -TC_OP_RESERVED_NON_FLOAT_RTN_32_2 = 30 -TC_OP_RESERVED_NON_FLOAT_RTN_32_3 = 31 -TC_OP_WRITE = 32 -TC_OP_ATOMIC_FCMPSWAP_RTN_64 = 33 -TC_OP_ATOMIC_FMIN_RTN_64 = 34 -TC_OP_ATOMIC_FMAX_RTN_64 = 35 -TC_OP_RESERVED_FOP_RTN_64_0 = 36 -TC_OP_RESERVED_FOP_RTN_64_1 = 37 -TC_OP_RESERVED_FOP_RTN_64_2 = 38 -TC_OP_ATOMIC_SWAP_RTN_64 = 39 -TC_OP_ATOMIC_CMPSWAP_RTN_64 = 40 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64 = 41 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64 = 42 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64 = 43 -TC_OP_WBINVL2_SD = 44 -TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_0 = 45 -TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_1 = 46 -TC_OP_ATOMIC_ADD_RTN_64 = 47 -TC_OP_ATOMIC_SUB_RTN_64 = 48 -TC_OP_ATOMIC_SMIN_RTN_64 = 49 -TC_OP_ATOMIC_UMIN_RTN_64 = 50 -TC_OP_ATOMIC_SMAX_RTN_64 = 51 -TC_OP_ATOMIC_UMAX_RTN_64 = 52 -TC_OP_ATOMIC_AND_RTN_64 = 53 -TC_OP_ATOMIC_OR_RTN_64 = 54 -TC_OP_ATOMIC_XOR_RTN_64 = 55 -TC_OP_ATOMIC_INC_RTN_64 = 56 -TC_OP_ATOMIC_DEC_RTN_64 = 57 -TC_OP_WBL2_NC = 58 -TC_OP_WBL2_WC = 59 -TC_OP_RESERVED_NON_FLOAT_RTN_64_1 = 60 -TC_OP_RESERVED_NON_FLOAT_RTN_64_2 = 61 -TC_OP_RESERVED_NON_FLOAT_RTN_64_3 = 62 -TC_OP_RESERVED_NON_FLOAT_RTN_64_4 = 63 -TC_OP_WBINVL1 = 64 -TC_OP_ATOMIC_FCMPSWAP_32 = 65 -TC_OP_ATOMIC_FMIN_32 = 66 -TC_OP_ATOMIC_FMAX_32 = 67 -TC_OP_RESERVED_FOP_32_0 = 68 -TC_OP_RESERVED_FOP_32_1 = 69 -TC_OP_RESERVED_FOP_32_2 = 70 -TC_OP_ATOMIC_SWAP_32 = 71 -TC_OP_ATOMIC_CMPSWAP_32 = 72 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32 = 73 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_32 = 74 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_32 = 75 -TC_OP_INV_METADATA = 76 -TC_OP_RESERVED_FOP_FLUSH_DENORM_32_1 = 77 -TC_OP_RESERVED_FOP_FLUSH_DENORM_32_2 = 78 -TC_OP_ATOMIC_ADD_32 = 79 -TC_OP_ATOMIC_SUB_32 = 80 -TC_OP_ATOMIC_SMIN_32 = 81 -TC_OP_ATOMIC_UMIN_32 = 82 -TC_OP_ATOMIC_SMAX_32 = 83 -TC_OP_ATOMIC_UMAX_32 = 84 -TC_OP_ATOMIC_AND_32 = 85 -TC_OP_ATOMIC_OR_32 = 86 -TC_OP_ATOMIC_XOR_32 = 87 -TC_OP_ATOMIC_INC_32 = 88 -TC_OP_ATOMIC_DEC_32 = 89 -TC_OP_INVL2_NC = 90 -TC_OP_NOP_RTN0 = 91 -TC_OP_RESERVED_NON_FLOAT_32_1 = 92 -TC_OP_RESERVED_NON_FLOAT_32_2 = 93 -TC_OP_RESERVED_NON_FLOAT_32_3 = 94 -TC_OP_RESERVED_NON_FLOAT_32_4 = 95 -TC_OP_WBINVL2 = 96 -TC_OP_ATOMIC_FCMPSWAP_64 = 97 -TC_OP_ATOMIC_FMIN_64 = 98 -TC_OP_ATOMIC_FMAX_64 = 99 -TC_OP_RESERVED_FOP_64_0 = 100 -TC_OP_RESERVED_FOP_64_1 = 101 -TC_OP_RESERVED_FOP_64_2 = 102 -TC_OP_ATOMIC_SWAP_64 = 103 -TC_OP_ATOMIC_CMPSWAP_64 = 104 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64 = 105 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_64 = 106 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_64 = 107 -TC_OP_RESERVED_FOP_FLUSH_DENORM_64_0 = 108 -TC_OP_RESERVED_FOP_FLUSH_DENORM_64_1 = 109 -TC_OP_RESERVED_FOP_FLUSH_DENORM_64_2 = 110 -TC_OP_ATOMIC_ADD_64 = 111 -TC_OP_ATOMIC_SUB_64 = 112 -TC_OP_ATOMIC_SMIN_64 = 113 -TC_OP_ATOMIC_UMIN_64 = 114 -TC_OP_ATOMIC_SMAX_64 = 115 -TC_OP_ATOMIC_UMAX_64 = 116 -TC_OP_ATOMIC_AND_64 = 117 -TC_OP_ATOMIC_OR_64 = 118 -TC_OP_ATOMIC_XOR_64 = 119 -TC_OP_ATOMIC_INC_64 = 120 -TC_OP_ATOMIC_DEC_64 = 121 -TC_OP_WBINVL2_NC = 122 -TC_OP_NOP_ACK = 123 -TC_OP_RESERVED_NON_FLOAT_64_1 = 124 -TC_OP_RESERVED_NON_FLOAT_64_2 = 125 -TC_OP_RESERVED_NON_FLOAT_64_3 = 126 -TC_OP_RESERVED_NON_FLOAT_64_4 = 127 -TC_OP = ctypes.c_uint32 # enum - -# values for enumeration 'TC_CHUB_REQ_CREDITS_ENUM' -TC_CHUB_REQ_CREDITS_ENUM__enumvalues = { - 16: 'TC_CHUB_REQ_CREDITS', -} -TC_CHUB_REQ_CREDITS = 16 -TC_CHUB_REQ_CREDITS_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CHUB_TC_RET_CREDITS_ENUM' -CHUB_TC_RET_CREDITS_ENUM__enumvalues = { - 32: 'CHUB_TC_RET_CREDITS', -} -CHUB_TC_RET_CREDITS = 32 -CHUB_TC_RET_CREDITS_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'TC_NACKS' -TC_NACKS__enumvalues = { - 0: 'TC_NACK_NO_FAULT', - 1: 'TC_NACK_PAGE_FAULT', - 2: 'TC_NACK_PROTECTION_FAULT', - 3: 'TC_NACK_DATA_ERROR', -} -TC_NACK_NO_FAULT = 0 -TC_NACK_PAGE_FAULT = 1 -TC_NACK_PROTECTION_FAULT = 2 -TC_NACK_DATA_ERROR = 3 -TC_NACKS = ctypes.c_uint32 # enum - -# values for enumeration 'TC_EA_CID' -TC_EA_CID__enumvalues = { - 0: 'TC_EA_CID_RT', - 1: 'TC_EA_CID_FMASK', - 2: 'TC_EA_CID_DCC', - 3: 'TC_EA_CID_TCPMETA', - 4: 'TC_EA_CID_Z', - 5: 'TC_EA_CID_STENCIL', - 6: 'TC_EA_CID_HTILE', - 7: 'TC_EA_CID_MISC', - 8: 'TC_EA_CID_TCP', - 9: 'TC_EA_CID_SQC', - 10: 'TC_EA_CID_CPF', - 11: 'TC_EA_CID_CPG', - 12: 'TC_EA_CID_IA', - 13: 'TC_EA_CID_WD', - 14: 'TC_EA_CID_PA', - 15: 'TC_EA_CID_UTCL2_TPI', -} -TC_EA_CID_RT = 0 -TC_EA_CID_FMASK = 1 -TC_EA_CID_DCC = 2 -TC_EA_CID_TCPMETA = 3 -TC_EA_CID_Z = 4 -TC_EA_CID_STENCIL = 5 -TC_EA_CID_HTILE = 6 -TC_EA_CID_MISC = 7 -TC_EA_CID_TCP = 8 -TC_EA_CID_SQC = 9 -TC_EA_CID_CPF = 10 -TC_EA_CID_CPG = 11 -TC_EA_CID_IA = 12 -TC_EA_CID_WD = 13 -TC_EA_CID_PA = 14 -TC_EA_CID_UTCL2_TPI = 15 -TC_EA_CID = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_SAMPLE_CNTL' -SPI_SAMPLE_CNTL__enumvalues = { - 0: 'CENTROIDS_ONLY', - 1: 'CENTERS_ONLY', - 2: 'CENTROIDS_AND_CENTERS', - 3: 'UNDEF', -} -CENTROIDS_ONLY = 0 -CENTERS_ONLY = 1 -CENTROIDS_AND_CENTERS = 2 -UNDEF = 3 -SPI_SAMPLE_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_FOG_MODE' -SPI_FOG_MODE__enumvalues = { - 0: 'SPI_FOG_NONE', - 1: 'SPI_FOG_EXP', - 2: 'SPI_FOG_EXP2', - 3: 'SPI_FOG_LINEAR', -} -SPI_FOG_NONE = 0 -SPI_FOG_EXP = 1 -SPI_FOG_EXP2 = 2 -SPI_FOG_LINEAR = 3 -SPI_FOG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_PNT_SPRITE_OVERRIDE' -SPI_PNT_SPRITE_OVERRIDE__enumvalues = { - 0: 'SPI_PNT_SPRITE_SEL_0', - 1: 'SPI_PNT_SPRITE_SEL_1', - 2: 'SPI_PNT_SPRITE_SEL_S', - 3: 'SPI_PNT_SPRITE_SEL_T', - 4: 'SPI_PNT_SPRITE_SEL_NONE', -} -SPI_PNT_SPRITE_SEL_0 = 0 -SPI_PNT_SPRITE_SEL_1 = 1 -SPI_PNT_SPRITE_SEL_S = 2 -SPI_PNT_SPRITE_SEL_T = 3 -SPI_PNT_SPRITE_SEL_NONE = 4 -SPI_PNT_SPRITE_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_PERFCNT_SEL' -SPI_PERFCNT_SEL__enumvalues = { - 0: 'SPI_PERF_VS_WINDOW_VALID', - 1: 'SPI_PERF_VS_BUSY', - 2: 'SPI_PERF_VS_FIRST_WAVE', - 3: 'SPI_PERF_VS_LAST_WAVE', - 4: 'SPI_PERF_VS_LSHS_DEALLOC', - 5: 'SPI_PERF_VS_PC_STALL', - 6: 'SPI_PERF_VS_POS0_STALL', - 7: 'SPI_PERF_VS_POS1_STALL', - 8: 'SPI_PERF_VS_CRAWLER_STALL', - 9: 'SPI_PERF_VS_EVENT_WAVE', - 10: 'SPI_PERF_VS_WAVE', - 11: 'SPI_PERF_VS_PERS_UPD_FULL0', - 12: 'SPI_PERF_VS_PERS_UPD_FULL1', - 13: 'SPI_PERF_VS_LATE_ALLOC_FULL', - 14: 'SPI_PERF_VS_FIRST_SUBGRP', - 15: 'SPI_PERF_VS_LAST_SUBGRP', - 16: 'SPI_PERF_GS_WINDOW_VALID', - 17: 'SPI_PERF_GS_BUSY', - 18: 'SPI_PERF_GS_CRAWLER_STALL', - 19: 'SPI_PERF_GS_EVENT_WAVE', - 20: 'SPI_PERF_GS_WAVE', - 21: 'SPI_PERF_GS_PERS_UPD_FULL0', - 22: 'SPI_PERF_GS_PERS_UPD_FULL1', - 23: 'SPI_PERF_GS_FIRST_SUBGRP', - 24: 'SPI_PERF_GS_LAST_SUBGRP', - 25: 'SPI_PERF_ES_WINDOW_VALID', - 26: 'SPI_PERF_ES_BUSY', - 27: 'SPI_PERF_ES_CRAWLER_STALL', - 28: 'SPI_PERF_ES_FIRST_WAVE', - 29: 'SPI_PERF_ES_LAST_WAVE', - 30: 'SPI_PERF_ES_LSHS_DEALLOC', - 31: 'SPI_PERF_ES_EVENT_WAVE', - 32: 'SPI_PERF_ES_WAVE', - 33: 'SPI_PERF_ES_PERS_UPD_FULL0', - 34: 'SPI_PERF_ES_PERS_UPD_FULL1', - 35: 'SPI_PERF_ES_FIRST_SUBGRP', - 36: 'SPI_PERF_ES_LAST_SUBGRP', - 37: 'SPI_PERF_HS_WINDOW_VALID', - 38: 'SPI_PERF_HS_BUSY', - 39: 'SPI_PERF_HS_CRAWLER_STALL', - 40: 'SPI_PERF_HS_FIRST_WAVE', - 41: 'SPI_PERF_HS_LAST_WAVE', - 42: 'SPI_PERF_HS_LSHS_DEALLOC', - 43: 'SPI_PERF_HS_EVENT_WAVE', - 44: 'SPI_PERF_HS_WAVE', - 45: 'SPI_PERF_HS_PERS_UPD_FULL0', - 46: 'SPI_PERF_HS_PERS_UPD_FULL1', - 47: 'SPI_PERF_LS_WINDOW_VALID', - 48: 'SPI_PERF_LS_BUSY', - 49: 'SPI_PERF_LS_CRAWLER_STALL', - 50: 'SPI_PERF_LS_FIRST_WAVE', - 51: 'SPI_PERF_LS_LAST_WAVE', - 52: 'SPI_PERF_OFFCHIP_LDS_STALL_LS', - 53: 'SPI_PERF_LS_EVENT_WAVE', - 54: 'SPI_PERF_LS_WAVE', - 55: 'SPI_PERF_LS_PERS_UPD_FULL0', - 56: 'SPI_PERF_LS_PERS_UPD_FULL1', - 57: 'SPI_PERF_CSG_WINDOW_VALID', - 58: 'SPI_PERF_CSG_BUSY', - 59: 'SPI_PERF_CSG_NUM_THREADGROUPS', - 60: 'SPI_PERF_CSG_CRAWLER_STALL', - 61: 'SPI_PERF_CSG_EVENT_WAVE', - 62: 'SPI_PERF_CSG_WAVE', - 63: 'SPI_PERF_CSN_WINDOW_VALID', - 64: 'SPI_PERF_CSN_BUSY', - 65: 'SPI_PERF_CSN_NUM_THREADGROUPS', - 66: 'SPI_PERF_CSN_CRAWLER_STALL', - 67: 'SPI_PERF_CSN_EVENT_WAVE', - 68: 'SPI_PERF_CSN_WAVE', - 69: 'SPI_PERF_PS_CTL_WINDOW_VALID', - 70: 'SPI_PERF_PS_CTL_BUSY', - 71: 'SPI_PERF_PS_CTL_ACTIVE', - 72: 'SPI_PERF_PS_CTL_DEALLOC_BIN0', - 73: 'SPI_PERF_PS_CTL_FPOS_BIN1_STALL', - 74: 'SPI_PERF_PS_CTL_EVENT_WAVE', - 75: 'SPI_PERF_PS_CTL_WAVE', - 76: 'SPI_PERF_PS_CTL_OPT_WAVE', - 77: 'SPI_PERF_PS_CTL_PASS_BIN0', - 78: 'SPI_PERF_PS_CTL_PASS_BIN1', - 79: 'SPI_PERF_PS_CTL_FPOS_BIN2', - 80: 'SPI_PERF_PS_CTL_PRIM_BIN0', - 81: 'SPI_PERF_PS_CTL_PRIM_BIN1', - 82: 'SPI_PERF_PS_CTL_CNF_BIN2', - 83: 'SPI_PERF_PS_CTL_CNF_BIN3', - 84: 'SPI_PERF_PS_CTL_CRAWLER_STALL', - 85: 'SPI_PERF_PS_CTL_LDS_RES_FULL', - 86: 'SPI_PERF_PS_PERS_UPD_FULL0', - 87: 'SPI_PERF_PS_PERS_UPD_FULL1', - 88: 'SPI_PERF_PIX_ALLOC_PEND_CNT', - 89: 'SPI_PERF_PIX_ALLOC_SCB_STALL', - 90: 'SPI_PERF_PIX_ALLOC_DB0_STALL', - 91: 'SPI_PERF_PIX_ALLOC_DB1_STALL', - 92: 'SPI_PERF_PIX_ALLOC_DB2_STALL', - 93: 'SPI_PERF_PIX_ALLOC_DB3_STALL', - 94: 'SPI_PERF_LDS0_PC_VALID', - 95: 'SPI_PERF_LDS1_PC_VALID', - 96: 'SPI_PERF_RA_PIPE_REQ_BIN2', - 97: 'SPI_PERF_RA_TASK_REQ_BIN3', - 98: 'SPI_PERF_RA_WR_CTL_FULL', - 99: 'SPI_PERF_RA_REQ_NO_ALLOC', - 100: 'SPI_PERF_RA_REQ_NO_ALLOC_PS', - 101: 'SPI_PERF_RA_REQ_NO_ALLOC_VS', - 102: 'SPI_PERF_RA_REQ_NO_ALLOC_GS', - 103: 'SPI_PERF_RA_REQ_NO_ALLOC_ES', - 104: 'SPI_PERF_RA_REQ_NO_ALLOC_HS', - 105: 'SPI_PERF_RA_REQ_NO_ALLOC_LS', - 106: 'SPI_PERF_RA_REQ_NO_ALLOC_CSG', - 107: 'SPI_PERF_RA_REQ_NO_ALLOC_CSN', - 108: 'SPI_PERF_RA_RES_STALL_PS', - 109: 'SPI_PERF_RA_RES_STALL_VS', - 110: 'SPI_PERF_RA_RES_STALL_GS', - 111: 'SPI_PERF_RA_RES_STALL_ES', - 112: 'SPI_PERF_RA_RES_STALL_HS', - 113: 'SPI_PERF_RA_RES_STALL_LS', - 114: 'SPI_PERF_RA_RES_STALL_CSG', - 115: 'SPI_PERF_RA_RES_STALL_CSN', - 116: 'SPI_PERF_RA_TMP_STALL_PS', - 117: 'SPI_PERF_RA_TMP_STALL_VS', - 118: 'SPI_PERF_RA_TMP_STALL_GS', - 119: 'SPI_PERF_RA_TMP_STALL_ES', - 120: 'SPI_PERF_RA_TMP_STALL_HS', - 121: 'SPI_PERF_RA_TMP_STALL_LS', - 122: 'SPI_PERF_RA_TMP_STALL_CSG', - 123: 'SPI_PERF_RA_TMP_STALL_CSN', - 124: 'SPI_PERF_RA_WAVE_SIMD_FULL_PS', - 125: 'SPI_PERF_RA_WAVE_SIMD_FULL_VS', - 126: 'SPI_PERF_RA_WAVE_SIMD_FULL_GS', - 127: 'SPI_PERF_RA_WAVE_SIMD_FULL_ES', - 128: 'SPI_PERF_RA_WAVE_SIMD_FULL_HS', - 129: 'SPI_PERF_RA_WAVE_SIMD_FULL_LS', - 130: 'SPI_PERF_RA_WAVE_SIMD_FULL_CSG', - 131: 'SPI_PERF_RA_WAVE_SIMD_FULL_CSN', - 132: 'SPI_PERF_RA_VGPR_SIMD_FULL_PS', - 133: 'SPI_PERF_RA_VGPR_SIMD_FULL_VS', - 134: 'SPI_PERF_RA_VGPR_SIMD_FULL_GS', - 135: 'SPI_PERF_RA_VGPR_SIMD_FULL_ES', - 136: 'SPI_PERF_RA_VGPR_SIMD_FULL_HS', - 137: 'SPI_PERF_RA_VGPR_SIMD_FULL_LS', - 138: 'SPI_PERF_RA_VGPR_SIMD_FULL_CSG', - 139: 'SPI_PERF_RA_VGPR_SIMD_FULL_CSN', - 140: 'SPI_PERF_RA_SGPR_SIMD_FULL_PS', - 141: 'SPI_PERF_RA_SGPR_SIMD_FULL_VS', - 142: 'SPI_PERF_RA_SGPR_SIMD_FULL_GS', - 143: 'SPI_PERF_RA_SGPR_SIMD_FULL_ES', - 144: 'SPI_PERF_RA_SGPR_SIMD_FULL_HS', - 145: 'SPI_PERF_RA_SGPR_SIMD_FULL_LS', - 146: 'SPI_PERF_RA_SGPR_SIMD_FULL_CSG', - 147: 'SPI_PERF_RA_SGPR_SIMD_FULL_CSN', - 148: 'SPI_PERF_RA_LDS_CU_FULL_PS', - 149: 'SPI_PERF_RA_LDS_CU_FULL_LS', - 150: 'SPI_PERF_RA_LDS_CU_FULL_ES', - 151: 'SPI_PERF_RA_LDS_CU_FULL_CSG', - 152: 'SPI_PERF_RA_LDS_CU_FULL_CSN', - 153: 'SPI_PERF_RA_BAR_CU_FULL_HS', - 154: 'SPI_PERF_RA_BAR_CU_FULL_CSG', - 155: 'SPI_PERF_RA_BAR_CU_FULL_CSN', - 156: 'SPI_PERF_RA_BULKY_CU_FULL_CSG', - 157: 'SPI_PERF_RA_BULKY_CU_FULL_CSN', - 158: 'SPI_PERF_RA_TGLIM_CU_FULL_CSG', - 159: 'SPI_PERF_RA_TGLIM_CU_FULL_CSN', - 160: 'SPI_PERF_RA_WVLIM_STALL_PS', - 161: 'SPI_PERF_RA_WVLIM_STALL_VS', - 162: 'SPI_PERF_RA_WVLIM_STALL_GS', - 163: 'SPI_PERF_RA_WVLIM_STALL_ES', - 164: 'SPI_PERF_RA_WVLIM_STALL_HS', - 165: 'SPI_PERF_RA_WVLIM_STALL_LS', - 166: 'SPI_PERF_RA_WVLIM_STALL_CSG', - 167: 'SPI_PERF_RA_WVLIM_STALL_CSN', - 168: 'SPI_PERF_RA_PS_LOCK_NA', - 169: 'SPI_PERF_RA_VS_LOCK', - 170: 'SPI_PERF_RA_GS_LOCK', - 171: 'SPI_PERF_RA_ES_LOCK', - 172: 'SPI_PERF_RA_HS_LOCK', - 173: 'SPI_PERF_RA_LS_LOCK', - 174: 'SPI_PERF_RA_CSG_LOCK', - 175: 'SPI_PERF_RA_CSN_LOCK', - 176: 'SPI_PERF_RA_RSV_UPD', - 177: 'SPI_PERF_EXP_ARB_COL_CNT', - 178: 'SPI_PERF_EXP_ARB_PAR_CNT', - 179: 'SPI_PERF_EXP_ARB_POS_CNT', - 180: 'SPI_PERF_EXP_ARB_GDS_CNT', - 181: 'SPI_PERF_CLKGATE_BUSY_STALL', - 182: 'SPI_PERF_CLKGATE_ACTIVE_STALL', - 183: 'SPI_PERF_CLKGATE_ALL_CLOCKS_ON', - 184: 'SPI_PERF_CLKGATE_CGTT_DYN_ON', - 185: 'SPI_PERF_CLKGATE_CGTT_REG_ON', - 186: 'SPI_PERF_NUM_VS_POS_EXPORTS', - 187: 'SPI_PERF_NUM_VS_PARAM_EXPORTS', - 188: 'SPI_PERF_NUM_PS_COL_EXPORTS', - 189: 'SPI_PERF_ES_GRP_FIFO_FULL', - 190: 'SPI_PERF_GS_GRP_FIFO_FULL', - 191: 'SPI_PERF_HS_GRP_FIFO_FULL', - 192: 'SPI_PERF_LS_GRP_FIFO_FULL', - 193: 'SPI_PERF_VS_ALLOC_CNT', - 194: 'SPI_PERF_VS_LATE_ALLOC_ACCUM', - 195: 'SPI_PERF_PC_ALLOC_CNT', - 196: 'SPI_PERF_PC_ALLOC_ACCUM', -} -SPI_PERF_VS_WINDOW_VALID = 0 -SPI_PERF_VS_BUSY = 1 -SPI_PERF_VS_FIRST_WAVE = 2 -SPI_PERF_VS_LAST_WAVE = 3 -SPI_PERF_VS_LSHS_DEALLOC = 4 -SPI_PERF_VS_PC_STALL = 5 -SPI_PERF_VS_POS0_STALL = 6 -SPI_PERF_VS_POS1_STALL = 7 -SPI_PERF_VS_CRAWLER_STALL = 8 -SPI_PERF_VS_EVENT_WAVE = 9 -SPI_PERF_VS_WAVE = 10 -SPI_PERF_VS_PERS_UPD_FULL0 = 11 -SPI_PERF_VS_PERS_UPD_FULL1 = 12 -SPI_PERF_VS_LATE_ALLOC_FULL = 13 -SPI_PERF_VS_FIRST_SUBGRP = 14 -SPI_PERF_VS_LAST_SUBGRP = 15 -SPI_PERF_GS_WINDOW_VALID = 16 -SPI_PERF_GS_BUSY = 17 -SPI_PERF_GS_CRAWLER_STALL = 18 -SPI_PERF_GS_EVENT_WAVE = 19 -SPI_PERF_GS_WAVE = 20 -SPI_PERF_GS_PERS_UPD_FULL0 = 21 -SPI_PERF_GS_PERS_UPD_FULL1 = 22 -SPI_PERF_GS_FIRST_SUBGRP = 23 -SPI_PERF_GS_LAST_SUBGRP = 24 -SPI_PERF_ES_WINDOW_VALID = 25 -SPI_PERF_ES_BUSY = 26 -SPI_PERF_ES_CRAWLER_STALL = 27 -SPI_PERF_ES_FIRST_WAVE = 28 -SPI_PERF_ES_LAST_WAVE = 29 -SPI_PERF_ES_LSHS_DEALLOC = 30 -SPI_PERF_ES_EVENT_WAVE = 31 -SPI_PERF_ES_WAVE = 32 -SPI_PERF_ES_PERS_UPD_FULL0 = 33 -SPI_PERF_ES_PERS_UPD_FULL1 = 34 -SPI_PERF_ES_FIRST_SUBGRP = 35 -SPI_PERF_ES_LAST_SUBGRP = 36 -SPI_PERF_HS_WINDOW_VALID = 37 -SPI_PERF_HS_BUSY = 38 -SPI_PERF_HS_CRAWLER_STALL = 39 -SPI_PERF_HS_FIRST_WAVE = 40 -SPI_PERF_HS_LAST_WAVE = 41 -SPI_PERF_HS_LSHS_DEALLOC = 42 -SPI_PERF_HS_EVENT_WAVE = 43 -SPI_PERF_HS_WAVE = 44 -SPI_PERF_HS_PERS_UPD_FULL0 = 45 -SPI_PERF_HS_PERS_UPD_FULL1 = 46 -SPI_PERF_LS_WINDOW_VALID = 47 -SPI_PERF_LS_BUSY = 48 -SPI_PERF_LS_CRAWLER_STALL = 49 -SPI_PERF_LS_FIRST_WAVE = 50 -SPI_PERF_LS_LAST_WAVE = 51 -SPI_PERF_OFFCHIP_LDS_STALL_LS = 52 -SPI_PERF_LS_EVENT_WAVE = 53 -SPI_PERF_LS_WAVE = 54 -SPI_PERF_LS_PERS_UPD_FULL0 = 55 -SPI_PERF_LS_PERS_UPD_FULL1 = 56 -SPI_PERF_CSG_WINDOW_VALID = 57 -SPI_PERF_CSG_BUSY = 58 -SPI_PERF_CSG_NUM_THREADGROUPS = 59 -SPI_PERF_CSG_CRAWLER_STALL = 60 -SPI_PERF_CSG_EVENT_WAVE = 61 -SPI_PERF_CSG_WAVE = 62 -SPI_PERF_CSN_WINDOW_VALID = 63 -SPI_PERF_CSN_BUSY = 64 -SPI_PERF_CSN_NUM_THREADGROUPS = 65 -SPI_PERF_CSN_CRAWLER_STALL = 66 -SPI_PERF_CSN_EVENT_WAVE = 67 -SPI_PERF_CSN_WAVE = 68 -SPI_PERF_PS_CTL_WINDOW_VALID = 69 -SPI_PERF_PS_CTL_BUSY = 70 -SPI_PERF_PS_CTL_ACTIVE = 71 -SPI_PERF_PS_CTL_DEALLOC_BIN0 = 72 -SPI_PERF_PS_CTL_FPOS_BIN1_STALL = 73 -SPI_PERF_PS_CTL_EVENT_WAVE = 74 -SPI_PERF_PS_CTL_WAVE = 75 -SPI_PERF_PS_CTL_OPT_WAVE = 76 -SPI_PERF_PS_CTL_PASS_BIN0 = 77 -SPI_PERF_PS_CTL_PASS_BIN1 = 78 -SPI_PERF_PS_CTL_FPOS_BIN2 = 79 -SPI_PERF_PS_CTL_PRIM_BIN0 = 80 -SPI_PERF_PS_CTL_PRIM_BIN1 = 81 -SPI_PERF_PS_CTL_CNF_BIN2 = 82 -SPI_PERF_PS_CTL_CNF_BIN3 = 83 -SPI_PERF_PS_CTL_CRAWLER_STALL = 84 -SPI_PERF_PS_CTL_LDS_RES_FULL = 85 -SPI_PERF_PS_PERS_UPD_FULL0 = 86 -SPI_PERF_PS_PERS_UPD_FULL1 = 87 -SPI_PERF_PIX_ALLOC_PEND_CNT = 88 -SPI_PERF_PIX_ALLOC_SCB_STALL = 89 -SPI_PERF_PIX_ALLOC_DB0_STALL = 90 -SPI_PERF_PIX_ALLOC_DB1_STALL = 91 -SPI_PERF_PIX_ALLOC_DB2_STALL = 92 -SPI_PERF_PIX_ALLOC_DB3_STALL = 93 -SPI_PERF_LDS0_PC_VALID = 94 -SPI_PERF_LDS1_PC_VALID = 95 -SPI_PERF_RA_PIPE_REQ_BIN2 = 96 -SPI_PERF_RA_TASK_REQ_BIN3 = 97 -SPI_PERF_RA_WR_CTL_FULL = 98 -SPI_PERF_RA_REQ_NO_ALLOC = 99 -SPI_PERF_RA_REQ_NO_ALLOC_PS = 100 -SPI_PERF_RA_REQ_NO_ALLOC_VS = 101 -SPI_PERF_RA_REQ_NO_ALLOC_GS = 102 -SPI_PERF_RA_REQ_NO_ALLOC_ES = 103 -SPI_PERF_RA_REQ_NO_ALLOC_HS = 104 -SPI_PERF_RA_REQ_NO_ALLOC_LS = 105 -SPI_PERF_RA_REQ_NO_ALLOC_CSG = 106 -SPI_PERF_RA_REQ_NO_ALLOC_CSN = 107 -SPI_PERF_RA_RES_STALL_PS = 108 -SPI_PERF_RA_RES_STALL_VS = 109 -SPI_PERF_RA_RES_STALL_GS = 110 -SPI_PERF_RA_RES_STALL_ES = 111 -SPI_PERF_RA_RES_STALL_HS = 112 -SPI_PERF_RA_RES_STALL_LS = 113 -SPI_PERF_RA_RES_STALL_CSG = 114 -SPI_PERF_RA_RES_STALL_CSN = 115 -SPI_PERF_RA_TMP_STALL_PS = 116 -SPI_PERF_RA_TMP_STALL_VS = 117 -SPI_PERF_RA_TMP_STALL_GS = 118 -SPI_PERF_RA_TMP_STALL_ES = 119 -SPI_PERF_RA_TMP_STALL_HS = 120 -SPI_PERF_RA_TMP_STALL_LS = 121 -SPI_PERF_RA_TMP_STALL_CSG = 122 -SPI_PERF_RA_TMP_STALL_CSN = 123 -SPI_PERF_RA_WAVE_SIMD_FULL_PS = 124 -SPI_PERF_RA_WAVE_SIMD_FULL_VS = 125 -SPI_PERF_RA_WAVE_SIMD_FULL_GS = 126 -SPI_PERF_RA_WAVE_SIMD_FULL_ES = 127 -SPI_PERF_RA_WAVE_SIMD_FULL_HS = 128 -SPI_PERF_RA_WAVE_SIMD_FULL_LS = 129 -SPI_PERF_RA_WAVE_SIMD_FULL_CSG = 130 -SPI_PERF_RA_WAVE_SIMD_FULL_CSN = 131 -SPI_PERF_RA_VGPR_SIMD_FULL_PS = 132 -SPI_PERF_RA_VGPR_SIMD_FULL_VS = 133 -SPI_PERF_RA_VGPR_SIMD_FULL_GS = 134 -SPI_PERF_RA_VGPR_SIMD_FULL_ES = 135 -SPI_PERF_RA_VGPR_SIMD_FULL_HS = 136 -SPI_PERF_RA_VGPR_SIMD_FULL_LS = 137 -SPI_PERF_RA_VGPR_SIMD_FULL_CSG = 138 -SPI_PERF_RA_VGPR_SIMD_FULL_CSN = 139 -SPI_PERF_RA_SGPR_SIMD_FULL_PS = 140 -SPI_PERF_RA_SGPR_SIMD_FULL_VS = 141 -SPI_PERF_RA_SGPR_SIMD_FULL_GS = 142 -SPI_PERF_RA_SGPR_SIMD_FULL_ES = 143 -SPI_PERF_RA_SGPR_SIMD_FULL_HS = 144 -SPI_PERF_RA_SGPR_SIMD_FULL_LS = 145 -SPI_PERF_RA_SGPR_SIMD_FULL_CSG = 146 -SPI_PERF_RA_SGPR_SIMD_FULL_CSN = 147 -SPI_PERF_RA_LDS_CU_FULL_PS = 148 -SPI_PERF_RA_LDS_CU_FULL_LS = 149 -SPI_PERF_RA_LDS_CU_FULL_ES = 150 -SPI_PERF_RA_LDS_CU_FULL_CSG = 151 -SPI_PERF_RA_LDS_CU_FULL_CSN = 152 -SPI_PERF_RA_BAR_CU_FULL_HS = 153 -SPI_PERF_RA_BAR_CU_FULL_CSG = 154 -SPI_PERF_RA_BAR_CU_FULL_CSN = 155 -SPI_PERF_RA_BULKY_CU_FULL_CSG = 156 -SPI_PERF_RA_BULKY_CU_FULL_CSN = 157 -SPI_PERF_RA_TGLIM_CU_FULL_CSG = 158 -SPI_PERF_RA_TGLIM_CU_FULL_CSN = 159 -SPI_PERF_RA_WVLIM_STALL_PS = 160 -SPI_PERF_RA_WVLIM_STALL_VS = 161 -SPI_PERF_RA_WVLIM_STALL_GS = 162 -SPI_PERF_RA_WVLIM_STALL_ES = 163 -SPI_PERF_RA_WVLIM_STALL_HS = 164 -SPI_PERF_RA_WVLIM_STALL_LS = 165 -SPI_PERF_RA_WVLIM_STALL_CSG = 166 -SPI_PERF_RA_WVLIM_STALL_CSN = 167 -SPI_PERF_RA_PS_LOCK_NA = 168 -SPI_PERF_RA_VS_LOCK = 169 -SPI_PERF_RA_GS_LOCK = 170 -SPI_PERF_RA_ES_LOCK = 171 -SPI_PERF_RA_HS_LOCK = 172 -SPI_PERF_RA_LS_LOCK = 173 -SPI_PERF_RA_CSG_LOCK = 174 -SPI_PERF_RA_CSN_LOCK = 175 -SPI_PERF_RA_RSV_UPD = 176 -SPI_PERF_EXP_ARB_COL_CNT = 177 -SPI_PERF_EXP_ARB_PAR_CNT = 178 -SPI_PERF_EXP_ARB_POS_CNT = 179 -SPI_PERF_EXP_ARB_GDS_CNT = 180 -SPI_PERF_CLKGATE_BUSY_STALL = 181 -SPI_PERF_CLKGATE_ACTIVE_STALL = 182 -SPI_PERF_CLKGATE_ALL_CLOCKS_ON = 183 -SPI_PERF_CLKGATE_CGTT_DYN_ON = 184 -SPI_PERF_CLKGATE_CGTT_REG_ON = 185 -SPI_PERF_NUM_VS_POS_EXPORTS = 186 -SPI_PERF_NUM_VS_PARAM_EXPORTS = 187 -SPI_PERF_NUM_PS_COL_EXPORTS = 188 -SPI_PERF_ES_GRP_FIFO_FULL = 189 -SPI_PERF_GS_GRP_FIFO_FULL = 190 -SPI_PERF_HS_GRP_FIFO_FULL = 191 -SPI_PERF_LS_GRP_FIFO_FULL = 192 -SPI_PERF_VS_ALLOC_CNT = 193 -SPI_PERF_VS_LATE_ALLOC_ACCUM = 194 -SPI_PERF_PC_ALLOC_CNT = 195 -SPI_PERF_PC_ALLOC_ACCUM = 196 -SPI_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_SHADER_FORMAT' -SPI_SHADER_FORMAT__enumvalues = { - 0: 'SPI_SHADER_NONE', - 1: 'SPI_SHADER_1COMP', - 2: 'SPI_SHADER_2COMP', - 3: 'SPI_SHADER_4COMPRESS', - 4: 'SPI_SHADER_4COMP', -} -SPI_SHADER_NONE = 0 -SPI_SHADER_1COMP = 1 -SPI_SHADER_2COMP = 2 -SPI_SHADER_4COMPRESS = 3 -SPI_SHADER_4COMP = 4 -SPI_SHADER_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_SHADER_EX_FORMAT' -SPI_SHADER_EX_FORMAT__enumvalues = { - 0: 'SPI_SHADER_ZERO', - 1: 'SPI_SHADER_32_R', - 2: 'SPI_SHADER_32_GR', - 3: 'SPI_SHADER_32_AR', - 4: 'SPI_SHADER_FP16_ABGR', - 5: 'SPI_SHADER_UNORM16_ABGR', - 6: 'SPI_SHADER_SNORM16_ABGR', - 7: 'SPI_SHADER_UINT16_ABGR', - 8: 'SPI_SHADER_SINT16_ABGR', - 9: 'SPI_SHADER_32_ABGR', -} -SPI_SHADER_ZERO = 0 -SPI_SHADER_32_R = 1 -SPI_SHADER_32_GR = 2 -SPI_SHADER_32_AR = 3 -SPI_SHADER_FP16_ABGR = 4 -SPI_SHADER_UNORM16_ABGR = 5 -SPI_SHADER_SNORM16_ABGR = 6 -SPI_SHADER_UINT16_ABGR = 7 -SPI_SHADER_SINT16_ABGR = 8 -SPI_SHADER_32_ABGR = 9 -SPI_SHADER_EX_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'CLKGATE_SM_MODE' -CLKGATE_SM_MODE__enumvalues = { - 0: 'ON_SEQ', - 1: 'OFF_SEQ', - 2: 'PROG_SEQ', - 3: 'READ_SEQ', - 4: 'SM_MODE_RESERVED', -} -ON_SEQ = 0 -OFF_SEQ = 1 -PROG_SEQ = 2 -READ_SEQ = 3 -SM_MODE_RESERVED = 4 -CLKGATE_SM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CLKGATE_BASE_MODE' -CLKGATE_BASE_MODE__enumvalues = { - 0: 'MULT_8', - 1: 'MULT_16', -} -MULT_8 = 0 -MULT_16 = 1 -CLKGATE_BASE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_CLAMP' -SQ_TEX_CLAMP__enumvalues = { - 0: 'SQ_TEX_WRAP', - 1: 'SQ_TEX_MIRROR', - 2: 'SQ_TEX_CLAMP_LAST_TEXEL', - 3: 'SQ_TEX_MIRROR_ONCE_LAST_TEXEL', - 4: 'SQ_TEX_CLAMP_HALF_BORDER', - 5: 'SQ_TEX_MIRROR_ONCE_HALF_BORDER', - 6: 'SQ_TEX_CLAMP_BORDER', - 7: 'SQ_TEX_MIRROR_ONCE_BORDER', -} -SQ_TEX_WRAP = 0 -SQ_TEX_MIRROR = 1 -SQ_TEX_CLAMP_LAST_TEXEL = 2 -SQ_TEX_MIRROR_ONCE_LAST_TEXEL = 3 -SQ_TEX_CLAMP_HALF_BORDER = 4 -SQ_TEX_MIRROR_ONCE_HALF_BORDER = 5 -SQ_TEX_CLAMP_BORDER = 6 -SQ_TEX_MIRROR_ONCE_BORDER = 7 -SQ_TEX_CLAMP = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_XY_FILTER' -SQ_TEX_XY_FILTER__enumvalues = { - 0: 'SQ_TEX_XY_FILTER_POINT', - 1: 'SQ_TEX_XY_FILTER_BILINEAR', - 2: 'SQ_TEX_XY_FILTER_ANISO_POINT', - 3: 'SQ_TEX_XY_FILTER_ANISO_BILINEAR', -} -SQ_TEX_XY_FILTER_POINT = 0 -SQ_TEX_XY_FILTER_BILINEAR = 1 -SQ_TEX_XY_FILTER_ANISO_POINT = 2 -SQ_TEX_XY_FILTER_ANISO_BILINEAR = 3 -SQ_TEX_XY_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_Z_FILTER' -SQ_TEX_Z_FILTER__enumvalues = { - 0: 'SQ_TEX_Z_FILTER_NONE', - 1: 'SQ_TEX_Z_FILTER_POINT', - 2: 'SQ_TEX_Z_FILTER_LINEAR', -} -SQ_TEX_Z_FILTER_NONE = 0 -SQ_TEX_Z_FILTER_POINT = 1 -SQ_TEX_Z_FILTER_LINEAR = 2 -SQ_TEX_Z_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_MIP_FILTER' -SQ_TEX_MIP_FILTER__enumvalues = { - 0: 'SQ_TEX_MIP_FILTER_NONE', - 1: 'SQ_TEX_MIP_FILTER_POINT', - 2: 'SQ_TEX_MIP_FILTER_LINEAR', - 3: 'SQ_TEX_MIP_FILTER_POINT_ANISO_ADJ', -} -SQ_TEX_MIP_FILTER_NONE = 0 -SQ_TEX_MIP_FILTER_POINT = 1 -SQ_TEX_MIP_FILTER_LINEAR = 2 -SQ_TEX_MIP_FILTER_POINT_ANISO_ADJ = 3 -SQ_TEX_MIP_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_ANISO_RATIO' -SQ_TEX_ANISO_RATIO__enumvalues = { - 0: 'SQ_TEX_ANISO_RATIO_1', - 1: 'SQ_TEX_ANISO_RATIO_2', - 2: 'SQ_TEX_ANISO_RATIO_4', - 3: 'SQ_TEX_ANISO_RATIO_8', - 4: 'SQ_TEX_ANISO_RATIO_16', -} -SQ_TEX_ANISO_RATIO_1 = 0 -SQ_TEX_ANISO_RATIO_2 = 1 -SQ_TEX_ANISO_RATIO_4 = 2 -SQ_TEX_ANISO_RATIO_8 = 3 -SQ_TEX_ANISO_RATIO_16 = 4 -SQ_TEX_ANISO_RATIO = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_DEPTH_COMPARE' -SQ_TEX_DEPTH_COMPARE__enumvalues = { - 0: 'SQ_TEX_DEPTH_COMPARE_NEVER', - 1: 'SQ_TEX_DEPTH_COMPARE_LESS', - 2: 'SQ_TEX_DEPTH_COMPARE_EQUAL', - 3: 'SQ_TEX_DEPTH_COMPARE_LESSEQUAL', - 4: 'SQ_TEX_DEPTH_COMPARE_GREATER', - 5: 'SQ_TEX_DEPTH_COMPARE_NOTEQUAL', - 6: 'SQ_TEX_DEPTH_COMPARE_GREATEREQUAL', - 7: 'SQ_TEX_DEPTH_COMPARE_ALWAYS', -} -SQ_TEX_DEPTH_COMPARE_NEVER = 0 -SQ_TEX_DEPTH_COMPARE_LESS = 1 -SQ_TEX_DEPTH_COMPARE_EQUAL = 2 -SQ_TEX_DEPTH_COMPARE_LESSEQUAL = 3 -SQ_TEX_DEPTH_COMPARE_GREATER = 4 -SQ_TEX_DEPTH_COMPARE_NOTEQUAL = 5 -SQ_TEX_DEPTH_COMPARE_GREATEREQUAL = 6 -SQ_TEX_DEPTH_COMPARE_ALWAYS = 7 -SQ_TEX_DEPTH_COMPARE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_BORDER_COLOR' -SQ_TEX_BORDER_COLOR__enumvalues = { - 0: 'SQ_TEX_BORDER_COLOR_TRANS_BLACK', - 1: 'SQ_TEX_BORDER_COLOR_OPAQUE_BLACK', - 2: 'SQ_TEX_BORDER_COLOR_OPAQUE_WHITE', - 3: 'SQ_TEX_BORDER_COLOR_REGISTER', -} -SQ_TEX_BORDER_COLOR_TRANS_BLACK = 0 -SQ_TEX_BORDER_COLOR_OPAQUE_BLACK = 1 -SQ_TEX_BORDER_COLOR_OPAQUE_WHITE = 2 -SQ_TEX_BORDER_COLOR_REGISTER = 3 -SQ_TEX_BORDER_COLOR = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_RSRC_BUF_TYPE' -SQ_RSRC_BUF_TYPE__enumvalues = { - 0: 'SQ_RSRC_BUF', - 1: 'SQ_RSRC_BUF_RSVD_1', - 2: 'SQ_RSRC_BUF_RSVD_2', - 3: 'SQ_RSRC_BUF_RSVD_3', -} -SQ_RSRC_BUF = 0 -SQ_RSRC_BUF_RSVD_1 = 1 -SQ_RSRC_BUF_RSVD_2 = 2 -SQ_RSRC_BUF_RSVD_3 = 3 -SQ_RSRC_BUF_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_RSRC_IMG_TYPE' -SQ_RSRC_IMG_TYPE__enumvalues = { - 0: 'SQ_RSRC_IMG_RSVD_0', - 1: 'SQ_RSRC_IMG_RSVD_1', - 2: 'SQ_RSRC_IMG_RSVD_2', - 3: 'SQ_RSRC_IMG_RSVD_3', - 4: 'SQ_RSRC_IMG_RSVD_4', - 5: 'SQ_RSRC_IMG_RSVD_5', - 6: 'SQ_RSRC_IMG_RSVD_6', - 7: 'SQ_RSRC_IMG_RSVD_7', - 8: 'SQ_RSRC_IMG_1D', - 9: 'SQ_RSRC_IMG_2D', - 10: 'SQ_RSRC_IMG_3D', - 11: 'SQ_RSRC_IMG_CUBE', - 12: 'SQ_RSRC_IMG_1D_ARRAY', - 13: 'SQ_RSRC_IMG_2D_ARRAY', - 14: 'SQ_RSRC_IMG_2D_MSAA', - 15: 'SQ_RSRC_IMG_2D_MSAA_ARRAY', -} -SQ_RSRC_IMG_RSVD_0 = 0 -SQ_RSRC_IMG_RSVD_1 = 1 -SQ_RSRC_IMG_RSVD_2 = 2 -SQ_RSRC_IMG_RSVD_3 = 3 -SQ_RSRC_IMG_RSVD_4 = 4 -SQ_RSRC_IMG_RSVD_5 = 5 -SQ_RSRC_IMG_RSVD_6 = 6 -SQ_RSRC_IMG_RSVD_7 = 7 -SQ_RSRC_IMG_1D = 8 -SQ_RSRC_IMG_2D = 9 -SQ_RSRC_IMG_3D = 10 -SQ_RSRC_IMG_CUBE = 11 -SQ_RSRC_IMG_1D_ARRAY = 12 -SQ_RSRC_IMG_2D_ARRAY = 13 -SQ_RSRC_IMG_2D_MSAA = 14 -SQ_RSRC_IMG_2D_MSAA_ARRAY = 15 -SQ_RSRC_IMG_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_RSRC_FLAT_TYPE' -SQ_RSRC_FLAT_TYPE__enumvalues = { - 0: 'SQ_RSRC_FLAT_RSVD_0', - 1: 'SQ_RSRC_FLAT', - 2: 'SQ_RSRC_FLAT_RSVD_2', - 3: 'SQ_RSRC_FLAT_RSVD_3', -} -SQ_RSRC_FLAT_RSVD_0 = 0 -SQ_RSRC_FLAT = 1 -SQ_RSRC_FLAT_RSVD_2 = 2 -SQ_RSRC_FLAT_RSVD_3 = 3 -SQ_RSRC_FLAT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IMG_FILTER_TYPE' -SQ_IMG_FILTER_TYPE__enumvalues = { - 0: 'SQ_IMG_FILTER_MODE_BLEND', - 1: 'SQ_IMG_FILTER_MODE_MIN', - 2: 'SQ_IMG_FILTER_MODE_MAX', -} -SQ_IMG_FILTER_MODE_BLEND = 0 -SQ_IMG_FILTER_MODE_MIN = 1 -SQ_IMG_FILTER_MODE_MAX = 2 -SQ_IMG_FILTER_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_SEL_XYZW01' -SQ_SEL_XYZW01__enumvalues = { - 0: 'SQ_SEL_0', - 1: 'SQ_SEL_1', - 2: 'SQ_SEL_RESERVED_0', - 3: 'SQ_SEL_RESERVED_1', - 4: 'SQ_SEL_X', - 5: 'SQ_SEL_Y', - 6: 'SQ_SEL_Z', - 7: 'SQ_SEL_W', -} -SQ_SEL_0 = 0 -SQ_SEL_1 = 1 -SQ_SEL_RESERVED_0 = 2 -SQ_SEL_RESERVED_1 = 3 -SQ_SEL_X = 4 -SQ_SEL_Y = 5 -SQ_SEL_Z = 6 -SQ_SEL_W = 7 -SQ_SEL_XYZW01 = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WAVE_TYPE' -SQ_WAVE_TYPE__enumvalues = { - 0: 'SQ_WAVE_TYPE_PS', - 1: 'SQ_WAVE_TYPE_VS', - 2: 'SQ_WAVE_TYPE_GS', - 3: 'SQ_WAVE_TYPE_ES', - 4: 'SQ_WAVE_TYPE_HS', - 5: 'SQ_WAVE_TYPE_LS', - 6: 'SQ_WAVE_TYPE_CS', - 7: 'SQ_WAVE_TYPE_PS1', -} -SQ_WAVE_TYPE_PS = 0 -SQ_WAVE_TYPE_VS = 1 -SQ_WAVE_TYPE_GS = 2 -SQ_WAVE_TYPE_ES = 3 -SQ_WAVE_TYPE_HS = 4 -SQ_WAVE_TYPE_LS = 5 -SQ_WAVE_TYPE_CS = 6 -SQ_WAVE_TYPE_PS1 = 7 -SQ_WAVE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_THREAD_TRACE_TOKEN_TYPE' -SQ_THREAD_TRACE_TOKEN_TYPE__enumvalues = { - 0: 'SQ_THREAD_TRACE_TOKEN_MISC', - 1: 'SQ_THREAD_TRACE_TOKEN_TIMESTAMP', - 2: 'SQ_THREAD_TRACE_TOKEN_REG', - 3: 'SQ_THREAD_TRACE_TOKEN_WAVE_START', - 4: 'SQ_THREAD_TRACE_TOKEN_WAVE_ALLOC', - 5: 'SQ_THREAD_TRACE_TOKEN_REG_CSPRIV', - 6: 'SQ_THREAD_TRACE_TOKEN_WAVE_END', - 7: 'SQ_THREAD_TRACE_TOKEN_EVENT', - 8: 'SQ_THREAD_TRACE_TOKEN_EVENT_CS', - 9: 'SQ_THREAD_TRACE_TOKEN_EVENT_GFX1', - 10: 'SQ_THREAD_TRACE_TOKEN_INST', - 11: 'SQ_THREAD_TRACE_TOKEN_INST_PC', - 12: 'SQ_THREAD_TRACE_TOKEN_INST_USERDATA', - 13: 'SQ_THREAD_TRACE_TOKEN_ISSUE', - 14: 'SQ_THREAD_TRACE_TOKEN_PERF', - 15: 'SQ_THREAD_TRACE_TOKEN_REG_CS', -} -SQ_THREAD_TRACE_TOKEN_MISC = 0 -SQ_THREAD_TRACE_TOKEN_TIMESTAMP = 1 -SQ_THREAD_TRACE_TOKEN_REG = 2 -SQ_THREAD_TRACE_TOKEN_WAVE_START = 3 -SQ_THREAD_TRACE_TOKEN_WAVE_ALLOC = 4 -SQ_THREAD_TRACE_TOKEN_REG_CSPRIV = 5 -SQ_THREAD_TRACE_TOKEN_WAVE_END = 6 -SQ_THREAD_TRACE_TOKEN_EVENT = 7 -SQ_THREAD_TRACE_TOKEN_EVENT_CS = 8 -SQ_THREAD_TRACE_TOKEN_EVENT_GFX1 = 9 -SQ_THREAD_TRACE_TOKEN_INST = 10 -SQ_THREAD_TRACE_TOKEN_INST_PC = 11 -SQ_THREAD_TRACE_TOKEN_INST_USERDATA = 12 -SQ_THREAD_TRACE_TOKEN_ISSUE = 13 -SQ_THREAD_TRACE_TOKEN_PERF = 14 -SQ_THREAD_TRACE_TOKEN_REG_CS = 15 -SQ_THREAD_TRACE_TOKEN_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_THREAD_TRACE_MISC_TOKEN_TYPE' -SQ_THREAD_TRACE_MISC_TOKEN_TYPE__enumvalues = { - 0: 'SQ_THREAD_TRACE_MISC_TOKEN_TIME', - 1: 'SQ_THREAD_TRACE_MISC_TOKEN_TIME_RESET', - 2: 'SQ_THREAD_TRACE_MISC_TOKEN_PACKET_LOST', - 3: 'SQ_THREAD_TRACE_MISC_TOKEN_SURF_SYNC', - 4: 'SQ_THREAD_TRACE_MISC_TOKEN_TTRACE_STALL_BEGIN', - 5: 'SQ_THREAD_TRACE_MISC_TOKEN_TTRACE_STALL_END', - 6: 'SQ_THREAD_TRACE_MISC_TOKEN_SAVECTX', - 7: 'SQ_THREAD_TRACE_MISC_TOKEN_SHOOT_DOWN', -} -SQ_THREAD_TRACE_MISC_TOKEN_TIME = 0 -SQ_THREAD_TRACE_MISC_TOKEN_TIME_RESET = 1 -SQ_THREAD_TRACE_MISC_TOKEN_PACKET_LOST = 2 -SQ_THREAD_TRACE_MISC_TOKEN_SURF_SYNC = 3 -SQ_THREAD_TRACE_MISC_TOKEN_TTRACE_STALL_BEGIN = 4 -SQ_THREAD_TRACE_MISC_TOKEN_TTRACE_STALL_END = 5 -SQ_THREAD_TRACE_MISC_TOKEN_SAVECTX = 6 -SQ_THREAD_TRACE_MISC_TOKEN_SHOOT_DOWN = 7 -SQ_THREAD_TRACE_MISC_TOKEN_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_THREAD_TRACE_INST_TYPE' -SQ_THREAD_TRACE_INST_TYPE__enumvalues = { - 0: 'SQ_THREAD_TRACE_INST_TYPE_SMEM_RD', - 1: 'SQ_THREAD_TRACE_INST_TYPE_SALU_32', - 2: 'SQ_THREAD_TRACE_INST_TYPE_VMEM_RD', - 3: 'SQ_THREAD_TRACE_INST_TYPE_VMEM_WR', - 4: 'SQ_THREAD_TRACE_INST_TYPE_FLAT_WR', - 5: 'SQ_THREAD_TRACE_INST_TYPE_VALU_32', - 6: 'SQ_THREAD_TRACE_INST_TYPE_LDS', - 7: 'SQ_THREAD_TRACE_INST_TYPE_PC', - 8: 'SQ_THREAD_TRACE_INST_TYPE_EXPREQ_GDS', - 9: 'SQ_THREAD_TRACE_INST_TYPE_EXPREQ_GFX', - 10: 'SQ_THREAD_TRACE_INST_TYPE_EXPGNT_PAR_COL', - 11: 'SQ_THREAD_TRACE_INST_TYPE_EXPGNT_POS_GDS', - 12: 'SQ_THREAD_TRACE_INST_TYPE_JUMP', - 13: 'SQ_THREAD_TRACE_INST_TYPE_NEXT', - 14: 'SQ_THREAD_TRACE_INST_TYPE_FLAT_RD', - 15: 'SQ_THREAD_TRACE_INST_TYPE_OTHER_MSG', - 16: 'SQ_THREAD_TRACE_INST_TYPE_SMEM_WR', - 17: 'SQ_THREAD_TRACE_INST_TYPE_SALU_64', - 18: 'SQ_THREAD_TRACE_INST_TYPE_VALU_64', - 19: 'SQ_THREAD_TRACE_INST_TYPE_SMEM_RD_REPLAY', - 20: 'SQ_THREAD_TRACE_INST_TYPE_SMEM_WR_REPLAY', - 21: 'SQ_THREAD_TRACE_INST_TYPE_VMEM_RD_REPLAY', - 22: 'SQ_THREAD_TRACE_INST_TYPE_VMEM_WR_REPLAY', - 23: 'SQ_THREAD_TRACE_INST_TYPE_FLAT_RD_REPLAY', - 24: 'SQ_THREAD_TRACE_INST_TYPE_FLAT_WR_REPLAY', - 25: 'SQ_THREAD_TRACE_INST_TYPE_FATAL_HALT', -} -SQ_THREAD_TRACE_INST_TYPE_SMEM_RD = 0 -SQ_THREAD_TRACE_INST_TYPE_SALU_32 = 1 -SQ_THREAD_TRACE_INST_TYPE_VMEM_RD = 2 -SQ_THREAD_TRACE_INST_TYPE_VMEM_WR = 3 -SQ_THREAD_TRACE_INST_TYPE_FLAT_WR = 4 -SQ_THREAD_TRACE_INST_TYPE_VALU_32 = 5 -SQ_THREAD_TRACE_INST_TYPE_LDS = 6 -SQ_THREAD_TRACE_INST_TYPE_PC = 7 -SQ_THREAD_TRACE_INST_TYPE_EXPREQ_GDS = 8 -SQ_THREAD_TRACE_INST_TYPE_EXPREQ_GFX = 9 -SQ_THREAD_TRACE_INST_TYPE_EXPGNT_PAR_COL = 10 -SQ_THREAD_TRACE_INST_TYPE_EXPGNT_POS_GDS = 11 -SQ_THREAD_TRACE_INST_TYPE_JUMP = 12 -SQ_THREAD_TRACE_INST_TYPE_NEXT = 13 -SQ_THREAD_TRACE_INST_TYPE_FLAT_RD = 14 -SQ_THREAD_TRACE_INST_TYPE_OTHER_MSG = 15 -SQ_THREAD_TRACE_INST_TYPE_SMEM_WR = 16 -SQ_THREAD_TRACE_INST_TYPE_SALU_64 = 17 -SQ_THREAD_TRACE_INST_TYPE_VALU_64 = 18 -SQ_THREAD_TRACE_INST_TYPE_SMEM_RD_REPLAY = 19 -SQ_THREAD_TRACE_INST_TYPE_SMEM_WR_REPLAY = 20 -SQ_THREAD_TRACE_INST_TYPE_VMEM_RD_REPLAY = 21 -SQ_THREAD_TRACE_INST_TYPE_VMEM_WR_REPLAY = 22 -SQ_THREAD_TRACE_INST_TYPE_FLAT_RD_REPLAY = 23 -SQ_THREAD_TRACE_INST_TYPE_FLAT_WR_REPLAY = 24 -SQ_THREAD_TRACE_INST_TYPE_FATAL_HALT = 25 -SQ_THREAD_TRACE_INST_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_THREAD_TRACE_REG_TYPE' -SQ_THREAD_TRACE_REG_TYPE__enumvalues = { - 0: 'SQ_THREAD_TRACE_REG_TYPE_EVENT', - 1: 'SQ_THREAD_TRACE_REG_TYPE_DRAW', - 2: 'SQ_THREAD_TRACE_REG_TYPE_DISPATCH', - 3: 'SQ_THREAD_TRACE_REG_TYPE_USERDATA', - 4: 'SQ_THREAD_TRACE_REG_TYPE_MARKER', - 5: 'SQ_THREAD_TRACE_REG_TYPE_GFXDEC', - 6: 'SQ_THREAD_TRACE_REG_TYPE_SHDEC', - 7: 'SQ_THREAD_TRACE_REG_TYPE_OTHER', -} -SQ_THREAD_TRACE_REG_TYPE_EVENT = 0 -SQ_THREAD_TRACE_REG_TYPE_DRAW = 1 -SQ_THREAD_TRACE_REG_TYPE_DISPATCH = 2 -SQ_THREAD_TRACE_REG_TYPE_USERDATA = 3 -SQ_THREAD_TRACE_REG_TYPE_MARKER = 4 -SQ_THREAD_TRACE_REG_TYPE_GFXDEC = 5 -SQ_THREAD_TRACE_REG_TYPE_SHDEC = 6 -SQ_THREAD_TRACE_REG_TYPE_OTHER = 7 -SQ_THREAD_TRACE_REG_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_THREAD_TRACE_REG_OP' -SQ_THREAD_TRACE_REG_OP__enumvalues = { - 0: 'SQ_THREAD_TRACE_REG_OP_READ', - 1: 'SQ_THREAD_TRACE_REG_OP_WRITE', -} -SQ_THREAD_TRACE_REG_OP_READ = 0 -SQ_THREAD_TRACE_REG_OP_WRITE = 1 -SQ_THREAD_TRACE_REG_OP = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_THREAD_TRACE_MODE_SEL' -SQ_THREAD_TRACE_MODE_SEL__enumvalues = { - 0: 'SQ_THREAD_TRACE_MODE_OFF', - 1: 'SQ_THREAD_TRACE_MODE_ON', -} -SQ_THREAD_TRACE_MODE_OFF = 0 -SQ_THREAD_TRACE_MODE_ON = 1 -SQ_THREAD_TRACE_MODE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_THREAD_TRACE_CAPTURE_MODE' -SQ_THREAD_TRACE_CAPTURE_MODE__enumvalues = { - 0: 'SQ_THREAD_TRACE_CAPTURE_MODE_ALL', - 1: 'SQ_THREAD_TRACE_CAPTURE_MODE_SELECT', - 2: 'SQ_THREAD_TRACE_CAPTURE_MODE_SELECT_DETAIL', -} -SQ_THREAD_TRACE_CAPTURE_MODE_ALL = 0 -SQ_THREAD_TRACE_CAPTURE_MODE_SELECT = 1 -SQ_THREAD_TRACE_CAPTURE_MODE_SELECT_DETAIL = 2 -SQ_THREAD_TRACE_CAPTURE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_THREAD_TRACE_VM_ID_MASK' -SQ_THREAD_TRACE_VM_ID_MASK__enumvalues = { - 0: 'SQ_THREAD_TRACE_VM_ID_MASK_SINGLE', - 1: 'SQ_THREAD_TRACE_VM_ID_MASK_ALL', - 2: 'SQ_THREAD_TRACE_VM_ID_MASK_SINGLE_DETAIL', -} -SQ_THREAD_TRACE_VM_ID_MASK_SINGLE = 0 -SQ_THREAD_TRACE_VM_ID_MASK_ALL = 1 -SQ_THREAD_TRACE_VM_ID_MASK_SINGLE_DETAIL = 2 -SQ_THREAD_TRACE_VM_ID_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_THREAD_TRACE_WAVE_MASK' -SQ_THREAD_TRACE_WAVE_MASK__enumvalues = { - 0: 'SQ_THREAD_TRACE_WAVE_MASK_NONE', - 1: 'SQ_THREAD_TRACE_WAVE_MASK_ALL', -} -SQ_THREAD_TRACE_WAVE_MASK_NONE = 0 -SQ_THREAD_TRACE_WAVE_MASK_ALL = 1 -SQ_THREAD_TRACE_WAVE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_THREAD_TRACE_ISSUE' -SQ_THREAD_TRACE_ISSUE__enumvalues = { - 0: 'SQ_THREAD_TRACE_ISSUE_NULL', - 1: 'SQ_THREAD_TRACE_ISSUE_STALL', - 2: 'SQ_THREAD_TRACE_ISSUE_INST', - 3: 'SQ_THREAD_TRACE_ISSUE_IMMED', -} -SQ_THREAD_TRACE_ISSUE_NULL = 0 -SQ_THREAD_TRACE_ISSUE_STALL = 1 -SQ_THREAD_TRACE_ISSUE_INST = 2 -SQ_THREAD_TRACE_ISSUE_IMMED = 3 -SQ_THREAD_TRACE_ISSUE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_THREAD_TRACE_ISSUE_MASK' -SQ_THREAD_TRACE_ISSUE_MASK__enumvalues = { - 0: 'SQ_THREAD_TRACE_ISSUE_MASK_ALL', - 1: 'SQ_THREAD_TRACE_ISSUE_MASK_STALLED', - 2: 'SQ_THREAD_TRACE_ISSUE_MASK_STALLED_AND_IMMED', - 3: 'SQ_THREAD_TRACE_ISSUE_MASK_IMMED', -} -SQ_THREAD_TRACE_ISSUE_MASK_ALL = 0 -SQ_THREAD_TRACE_ISSUE_MASK_STALLED = 1 -SQ_THREAD_TRACE_ISSUE_MASK_STALLED_AND_IMMED = 2 -SQ_THREAD_TRACE_ISSUE_MASK_IMMED = 3 -SQ_THREAD_TRACE_ISSUE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_PERF_SEL' -SQ_PERF_SEL__enumvalues = { - 0: 'SQ_PERF_SEL_NONE', - 1: 'SQ_PERF_SEL_ACCUM_PREV', - 2: 'SQ_PERF_SEL_CYCLES', - 3: 'SQ_PERF_SEL_BUSY_CYCLES', - 4: 'SQ_PERF_SEL_WAVES', - 5: 'SQ_PERF_SEL_LEVEL_WAVES', - 6: 'SQ_PERF_SEL_WAVES_EQ_64', - 7: 'SQ_PERF_SEL_WAVES_LT_64', - 8: 'SQ_PERF_SEL_WAVES_LT_48', - 9: 'SQ_PERF_SEL_WAVES_LT_32', - 10: 'SQ_PERF_SEL_WAVES_LT_16', - 11: 'SQ_PERF_SEL_WAVES_CU', - 12: 'SQ_PERF_SEL_LEVEL_WAVES_CU', - 13: 'SQ_PERF_SEL_BUSY_CU_CYCLES', - 14: 'SQ_PERF_SEL_ITEMS', - 15: 'SQ_PERF_SEL_QUADS', - 16: 'SQ_PERF_SEL_EVENTS', - 17: 'SQ_PERF_SEL_SURF_SYNCS', - 18: 'SQ_PERF_SEL_TTRACE_REQS', - 19: 'SQ_PERF_SEL_TTRACE_INFLIGHT_REQS', - 20: 'SQ_PERF_SEL_TTRACE_STALL', - 21: 'SQ_PERF_SEL_MSG_CNTR', - 22: 'SQ_PERF_SEL_MSG_PERF', - 23: 'SQ_PERF_SEL_MSG_GSCNT', - 24: 'SQ_PERF_SEL_MSG_INTERRUPT', - 25: 'SQ_PERF_SEL_INSTS', - 26: 'SQ_PERF_SEL_INSTS_VALU', - 27: 'SQ_PERF_SEL_INSTS_VMEM_WR', - 28: 'SQ_PERF_SEL_INSTS_VMEM_RD', - 29: 'SQ_PERF_SEL_INSTS_VMEM', - 30: 'SQ_PERF_SEL_INSTS_SALU', - 31: 'SQ_PERF_SEL_INSTS_SMEM', - 32: 'SQ_PERF_SEL_INSTS_FLAT', - 33: 'SQ_PERF_SEL_INSTS_FLAT_LDS_ONLY', - 34: 'SQ_PERF_SEL_INSTS_LDS', - 35: 'SQ_PERF_SEL_INSTS_GDS', - 36: 'SQ_PERF_SEL_INSTS_EXP', - 37: 'SQ_PERF_SEL_INSTS_EXP_GDS', - 38: 'SQ_PERF_SEL_INSTS_BRANCH', - 39: 'SQ_PERF_SEL_INSTS_SENDMSG', - 40: 'SQ_PERF_SEL_INSTS_VSKIPPED', - 41: 'SQ_PERF_SEL_INST_LEVEL_VMEM', - 42: 'SQ_PERF_SEL_INST_LEVEL_SMEM', - 43: 'SQ_PERF_SEL_INST_LEVEL_LDS', - 44: 'SQ_PERF_SEL_INST_LEVEL_GDS', - 45: 'SQ_PERF_SEL_INST_LEVEL_EXP', - 46: 'SQ_PERF_SEL_WAVE_CYCLES', - 47: 'SQ_PERF_SEL_WAVE_READY', - 48: 'SQ_PERF_SEL_WAIT_CNT_VM', - 49: 'SQ_PERF_SEL_WAIT_CNT_LGKM', - 50: 'SQ_PERF_SEL_WAIT_CNT_EXP', - 51: 'SQ_PERF_SEL_WAIT_CNT_ANY', - 52: 'SQ_PERF_SEL_WAIT_BARRIER', - 53: 'SQ_PERF_SEL_WAIT_EXP_ALLOC', - 54: 'SQ_PERF_SEL_WAIT_SLEEP', - 55: 'SQ_PERF_SEL_WAIT_SLEEP_XNACK', - 56: 'SQ_PERF_SEL_WAIT_OTHER', - 57: 'SQ_PERF_SEL_WAIT_ANY', - 58: 'SQ_PERF_SEL_WAIT_TTRACE', - 59: 'SQ_PERF_SEL_WAIT_IFETCH', - 60: 'SQ_PERF_SEL_WAIT_INST_ANY', - 61: 'SQ_PERF_SEL_WAIT_INST_VMEM', - 62: 'SQ_PERF_SEL_WAIT_INST_SCA', - 63: 'SQ_PERF_SEL_WAIT_INST_LDS', - 64: 'SQ_PERF_SEL_WAIT_INST_VALU', - 65: 'SQ_PERF_SEL_WAIT_INST_EXP_GDS', - 66: 'SQ_PERF_SEL_WAIT_INST_MISC', - 67: 'SQ_PERF_SEL_WAIT_INST_FLAT', - 68: 'SQ_PERF_SEL_ACTIVE_INST_ANY', - 69: 'SQ_PERF_SEL_ACTIVE_INST_VMEM', - 70: 'SQ_PERF_SEL_ACTIVE_INST_LDS', - 71: 'SQ_PERF_SEL_ACTIVE_INST_VALU', - 72: 'SQ_PERF_SEL_ACTIVE_INST_SCA', - 73: 'SQ_PERF_SEL_ACTIVE_INST_EXP_GDS', - 74: 'SQ_PERF_SEL_ACTIVE_INST_MISC', - 75: 'SQ_PERF_SEL_ACTIVE_INST_FLAT', - 76: 'SQ_PERF_SEL_INST_CYCLES_VMEM_WR', - 77: 'SQ_PERF_SEL_INST_CYCLES_VMEM_RD', - 78: 'SQ_PERF_SEL_INST_CYCLES_VMEM_ADDR', - 79: 'SQ_PERF_SEL_INST_CYCLES_VMEM_DATA', - 80: 'SQ_PERF_SEL_INST_CYCLES_VMEM_CMD', - 81: 'SQ_PERF_SEL_INST_CYCLES_EXP', - 82: 'SQ_PERF_SEL_INST_CYCLES_GDS', - 83: 'SQ_PERF_SEL_INST_CYCLES_SMEM', - 84: 'SQ_PERF_SEL_INST_CYCLES_SALU', - 85: 'SQ_PERF_SEL_THREAD_CYCLES_VALU', - 86: 'SQ_PERF_SEL_THREAD_CYCLES_VALU_MAX', - 87: 'SQ_PERF_SEL_IFETCH', - 88: 'SQ_PERF_SEL_IFETCH_LEVEL', - 89: 'SQ_PERF_SEL_CBRANCH_FORK', - 90: 'SQ_PERF_SEL_CBRANCH_FORK_SPLIT', - 91: 'SQ_PERF_SEL_VALU_LDS_DIRECT_RD', - 92: 'SQ_PERF_SEL_VALU_LDS_INTERP_OP', - 93: 'SQ_PERF_SEL_LDS_BANK_CONFLICT', - 94: 'SQ_PERF_SEL_LDS_ADDR_CONFLICT', - 95: 'SQ_PERF_SEL_LDS_UNALIGNED_STALL', - 96: 'SQ_PERF_SEL_LDS_MEM_VIOLATIONS', - 97: 'SQ_PERF_SEL_LDS_ATOMIC_RETURN', - 98: 'SQ_PERF_SEL_LDS_IDX_ACTIVE', - 99: 'SQ_PERF_SEL_VALU_DEP_STALL', - 100: 'SQ_PERF_SEL_VALU_STARVE', - 101: 'SQ_PERF_SEL_EXP_REQ_FIFO_FULL', - 102: 'SQ_PERF_SEL_LDS_DATA_FIFO_FULL', - 103: 'SQ_PERF_SEL_LDS_CMD_FIFO_FULL', - 104: 'SQ_PERF_SEL_VMEM_TA_ADDR_FIFO_FULL', - 105: 'SQ_PERF_SEL_VMEM_TA_CMD_FIFO_FULL', - 106: 'SQ_PERF_SEL_VMEM_EX_DATA_REG_BUSY', - 107: 'SQ_PERF_SEL_VMEM_WR_TA_DATA_FIFO_FULL', - 108: 'SQ_PERF_SEL_VALU_SRC_C_CONFLICT', - 109: 'SQ_PERF_SEL_VMEM_RD_SRC_CD_CONFLICT', - 110: 'SQ_PERF_SEL_VMEM_WR_SRC_CD_CONFLICT', - 111: 'SQ_PERF_SEL_FLAT_SRC_CD_CONFLICT', - 112: 'SQ_PERF_SEL_LDS_SRC_CD_CONFLICT', - 113: 'SQ_PERF_SEL_SRC_CD_BUSY', - 114: 'SQ_PERF_SEL_PT_POWER_STALL', - 115: 'SQ_PERF_SEL_USER0', - 116: 'SQ_PERF_SEL_USER1', - 117: 'SQ_PERF_SEL_USER2', - 118: 'SQ_PERF_SEL_USER3', - 119: 'SQ_PERF_SEL_USER4', - 120: 'SQ_PERF_SEL_USER5', - 121: 'SQ_PERF_SEL_USER6', - 122: 'SQ_PERF_SEL_USER7', - 123: 'SQ_PERF_SEL_USER8', - 124: 'SQ_PERF_SEL_USER9', - 125: 'SQ_PERF_SEL_USER10', - 126: 'SQ_PERF_SEL_USER11', - 127: 'SQ_PERF_SEL_USER12', - 128: 'SQ_PERF_SEL_USER13', - 129: 'SQ_PERF_SEL_USER14', - 130: 'SQ_PERF_SEL_USER15', - 131: 'SQ_PERF_SEL_USER_LEVEL0', - 132: 'SQ_PERF_SEL_USER_LEVEL1', - 133: 'SQ_PERF_SEL_USER_LEVEL2', - 134: 'SQ_PERF_SEL_USER_LEVEL3', - 135: 'SQ_PERF_SEL_USER_LEVEL4', - 136: 'SQ_PERF_SEL_USER_LEVEL5', - 137: 'SQ_PERF_SEL_USER_LEVEL6', - 138: 'SQ_PERF_SEL_USER_LEVEL7', - 139: 'SQ_PERF_SEL_USER_LEVEL8', - 140: 'SQ_PERF_SEL_USER_LEVEL9', - 141: 'SQ_PERF_SEL_USER_LEVEL10', - 142: 'SQ_PERF_SEL_USER_LEVEL11', - 143: 'SQ_PERF_SEL_USER_LEVEL12', - 144: 'SQ_PERF_SEL_USER_LEVEL13', - 145: 'SQ_PERF_SEL_USER_LEVEL14', - 146: 'SQ_PERF_SEL_USER_LEVEL15', - 147: 'SQ_PERF_SEL_POWER_VALU', - 148: 'SQ_PERF_SEL_POWER_VALU0', - 149: 'SQ_PERF_SEL_POWER_VALU1', - 150: 'SQ_PERF_SEL_POWER_VALU2', - 151: 'SQ_PERF_SEL_POWER_GPR_RD', - 152: 'SQ_PERF_SEL_POWER_GPR_WR', - 153: 'SQ_PERF_SEL_POWER_LDS_BUSY', - 154: 'SQ_PERF_SEL_POWER_ALU_BUSY', - 155: 'SQ_PERF_SEL_POWER_TEX_BUSY', - 156: 'SQ_PERF_SEL_ACCUM_PREV_HIRES', - 157: 'SQ_PERF_SEL_WAVES_RESTORED', - 158: 'SQ_PERF_SEL_WAVES_SAVED', - 159: 'SQ_PERF_SEL_INSTS_SMEM_NORM', - 160: 'SQ_PERF_SEL_ATC_INSTS_VMEM', - 161: 'SQ_PERF_SEL_ATC_INST_LEVEL_VMEM', - 162: 'SQ_PERF_SEL_ATC_XNACK_FIRST', - 163: 'SQ_PERF_SEL_ATC_XNACK_ALL', - 164: 'SQ_PERF_SEL_ATC_XNACK_FIFO_FULL', - 165: 'SQ_PERF_SEL_ATC_INSTS_SMEM', - 166: 'SQ_PERF_SEL_ATC_INST_LEVEL_SMEM', - 167: 'SQ_PERF_SEL_IFETCH_XNACK', - 168: 'SQ_PERF_SEL_TLB_SHOOTDOWN', - 169: 'SQ_PERF_SEL_TLB_SHOOTDOWN_CYCLES', - 170: 'SQ_PERF_SEL_INSTS_VMEM_WR_REPLAY', - 171: 'SQ_PERF_SEL_INSTS_VMEM_RD_REPLAY', - 172: 'SQ_PERF_SEL_INSTS_VMEM_REPLAY', - 173: 'SQ_PERF_SEL_INSTS_SMEM_REPLAY', - 174: 'SQ_PERF_SEL_INSTS_SMEM_NORM_REPLAY', - 175: 'SQ_PERF_SEL_INSTS_FLAT_REPLAY', - 176: 'SQ_PERF_SEL_ATC_INSTS_VMEM_REPLAY', - 177: 'SQ_PERF_SEL_ATC_INSTS_SMEM_REPLAY', - 178: 'SQ_PERF_SEL_UTCL1_TRANSLATION_MISS', - 179: 'SQ_PERF_SEL_UTCL1_PERMISSION_MISS', - 180: 'SQ_PERF_SEL_UTCL1_REQUEST', - 181: 'SQ_PERF_SEL_UTCL1_STALL_MISSFIFO_FULL', - 182: 'SQ_PERF_SEL_UTCL1_STALL_INFLIGHT_MAX', - 183: 'SQ_PERF_SEL_UTCL1_STALL_LRU_INFLIGHT', - 184: 'SQ_PERF_SEL_UTCL1_LFIFO_FULL', - 185: 'SQ_PERF_SEL_UTCL1_STALL_LFIFO_NOT_RES', - 186: 'SQ_PERF_SEL_UTCL1_STALL_UTCL2_REQ_OUT_OF_CREDITS', - 187: 'SQ_PERF_SEL_DUMMY_END', - 255: 'SQ_PERF_SEL_DUMMY_LAST', - 256: 'SQC_PERF_SEL_ICACHE_INPUT_VALID_READY', - 257: 'SQC_PERF_SEL_ICACHE_INPUT_VALID_READYB', - 258: 'SQC_PERF_SEL_ICACHE_INPUT_VALIDB', - 259: 'SQC_PERF_SEL_DCACHE_INPUT_VALID_READY', - 260: 'SQC_PERF_SEL_DCACHE_INPUT_VALID_READYB', - 261: 'SQC_PERF_SEL_DCACHE_INPUT_VALIDB', - 262: 'SQC_PERF_SEL_TC_REQ', - 263: 'SQC_PERF_SEL_TC_INST_REQ', - 264: 'SQC_PERF_SEL_TC_DATA_READ_REQ', - 265: 'SQC_PERF_SEL_TC_DATA_WRITE_REQ', - 266: 'SQC_PERF_SEL_TC_DATA_ATOMIC_REQ', - 267: 'SQC_PERF_SEL_TC_STALL', - 268: 'SQC_PERF_SEL_TC_STARVE', - 269: 'SQC_PERF_SEL_ICACHE_BUSY_CYCLES', - 270: 'SQC_PERF_SEL_ICACHE_REQ', - 271: 'SQC_PERF_SEL_ICACHE_HITS', - 272: 'SQC_PERF_SEL_ICACHE_MISSES', - 273: 'SQC_PERF_SEL_ICACHE_MISSES_DUPLICATE', - 274: 'SQC_PERF_SEL_ICACHE_INVAL_INST', - 275: 'SQC_PERF_SEL_ICACHE_INVAL_ASYNC', - 276: 'SQC_PERF_SEL_ICACHE_INPUT_STALL_ARB_NO_GRANT', - 277: 'SQC_PERF_SEL_ICACHE_INPUT_STALL_BANK_READYB', - 278: 'SQC_PERF_SEL_ICACHE_CACHE_STALLED', - 279: 'SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_NONZERO', - 280: 'SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_MAX', - 281: 'SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT', - 282: 'SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT_MISS_FIFO', - 283: 'SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT_HIT_FIFO', - 284: 'SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT_TC_IF', - 285: 'SQC_PERF_SEL_ICACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 286: 'SQC_PERF_SEL_ICACHE_PREFETCH_1', - 287: 'SQC_PERF_SEL_ICACHE_PREFETCH_2', - 288: 'SQC_PERF_SEL_ICACHE_PREFETCH_FILTERED', - 289: 'SQC_PERF_SEL_DCACHE_BUSY_CYCLES', - 290: 'SQC_PERF_SEL_DCACHE_REQ', - 291: 'SQC_PERF_SEL_DCACHE_HITS', - 292: 'SQC_PERF_SEL_DCACHE_MISSES', - 293: 'SQC_PERF_SEL_DCACHE_MISSES_DUPLICATE', - 294: 'SQC_PERF_SEL_DCACHE_HIT_LRU_READ', - 295: 'SQC_PERF_SEL_DCACHE_MISS_EVICT_READ', - 296: 'SQC_PERF_SEL_DCACHE_WC_LRU_WRITE', - 297: 'SQC_PERF_SEL_DCACHE_WT_EVICT_WRITE', - 298: 'SQC_PERF_SEL_DCACHE_ATOMIC', - 299: 'SQC_PERF_SEL_DCACHE_VOLATILE', - 300: 'SQC_PERF_SEL_DCACHE_INVAL_INST', - 301: 'SQC_PERF_SEL_DCACHE_INVAL_ASYNC', - 302: 'SQC_PERF_SEL_DCACHE_INVAL_VOLATILE_INST', - 303: 'SQC_PERF_SEL_DCACHE_INVAL_VOLATILE_ASYNC', - 304: 'SQC_PERF_SEL_DCACHE_WB_INST', - 305: 'SQC_PERF_SEL_DCACHE_WB_ASYNC', - 306: 'SQC_PERF_SEL_DCACHE_WB_VOLATILE_INST', - 307: 'SQC_PERF_SEL_DCACHE_WB_VOLATILE_ASYNC', - 308: 'SQC_PERF_SEL_DCACHE_INPUT_STALL_ARB_NO_GRANT', - 309: 'SQC_PERF_SEL_DCACHE_INPUT_STALL_BANK_READYB', - 310: 'SQC_PERF_SEL_DCACHE_CACHE_STALLED', - 311: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_INFLIGHT_MAX', - 312: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT', - 313: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_EVICT', - 314: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_UNORDERED', - 315: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_ALLOC_UNAVAILABLE', - 316: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_FORCE_EVICT', - 317: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_MULTI_FLUSH', - 318: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_FLUSH_DONE', - 319: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT_MISS_FIFO', - 320: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT_HIT_FIFO', - 321: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT_TC_IF', - 322: 'SQC_PERF_SEL_DCACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 323: 'SQC_PERF_SEL_DCACHE_REQ_READ_1', - 324: 'SQC_PERF_SEL_DCACHE_REQ_READ_2', - 325: 'SQC_PERF_SEL_DCACHE_REQ_READ_4', - 326: 'SQC_PERF_SEL_DCACHE_REQ_READ_8', - 327: 'SQC_PERF_SEL_DCACHE_REQ_READ_16', - 328: 'SQC_PERF_SEL_DCACHE_REQ_TIME', - 329: 'SQC_PERF_SEL_DCACHE_REQ_WRITE_1', - 330: 'SQC_PERF_SEL_DCACHE_REQ_WRITE_2', - 331: 'SQC_PERF_SEL_DCACHE_REQ_WRITE_4', - 332: 'SQC_PERF_SEL_DCACHE_REQ_ATC_PROBE', - 333: 'SQC_PERF_SEL_SQ_DCACHE_REQS', - 334: 'SQC_PERF_SEL_DCACHE_FLAT_REQ', - 335: 'SQC_PERF_SEL_DCACHE_NONFLAT_REQ', - 336: 'SQC_PERF_SEL_ICACHE_INFLIGHT_LEVEL', - 337: 'SQC_PERF_SEL_DCACHE_INFLIGHT_LEVEL', - 338: 'SQC_PERF_SEL_TC_INFLIGHT_LEVEL', - 339: 'SQC_PERF_SEL_ICACHE_TC_INFLIGHT_LEVEL', - 340: 'SQC_PERF_SEL_DCACHE_TC_INFLIGHT_LEVEL', - 341: 'SQC_PERF_SEL_ICACHE_GATCL1_TRANSLATION_MISS', - 342: 'SQC_PERF_SEL_ICACHE_GATCL1_PERMISSION_MISS', - 343: 'SQC_PERF_SEL_ICACHE_GATCL1_REQUEST', - 344: 'SQC_PERF_SEL_ICACHE_GATCL1_STALL_INFLIGHT_MAX', - 345: 'SQC_PERF_SEL_ICACHE_GATCL1_STALL_LRU_INFLIGHT', - 346: 'SQC_PERF_SEL_ICACHE_GATCL1_LFIFO_FULL', - 347: 'SQC_PERF_SEL_ICACHE_GATCL1_STALL_LFIFO_NOT_RES', - 348: 'SQC_PERF_SEL_ICACHE_GATCL1_STALL_ATCL2_REQ_OUT_OF_CREDITS', - 349: 'SQC_PERF_SEL_ICACHE_GATCL1_ATCL2_INFLIGHT', - 350: 'SQC_PERF_SEL_ICACHE_GATCL1_STALL_MISSFIFO_FULL', - 351: 'SQC_PERF_SEL_DCACHE_GATCL1_TRANSLATION_MISS', - 352: 'SQC_PERF_SEL_DCACHE_GATCL1_PERMISSION_MISS', - 353: 'SQC_PERF_SEL_DCACHE_GATCL1_REQUEST', - 354: 'SQC_PERF_SEL_DCACHE_GATCL1_STALL_INFLIGHT_MAX', - 355: 'SQC_PERF_SEL_DCACHE_GATCL1_STALL_LRU_INFLIGHT', - 356: 'SQC_PERF_SEL_DCACHE_GATCL1_LFIFO_FULL', - 357: 'SQC_PERF_SEL_DCACHE_GATCL1_STALL_LFIFO_NOT_RES', - 358: 'SQC_PERF_SEL_DCACHE_GATCL1_STALL_ATCL2_REQ_OUT_OF_CREDITS', - 359: 'SQC_PERF_SEL_DCACHE_GATCL1_ATCL2_INFLIGHT', - 360: 'SQC_PERF_SEL_DCACHE_GATCL1_STALL_MISSFIFO_FULL', - 361: 'SQC_PERF_SEL_DCACHE_GATCL1_STALL_MULTI_MISS', - 362: 'SQC_PERF_SEL_DCACHE_GATCL1_HIT_FIFO_FULL', - 363: 'SQC_PERF_SEL_DUMMY_LAST', -} -SQ_PERF_SEL_NONE = 0 -SQ_PERF_SEL_ACCUM_PREV = 1 -SQ_PERF_SEL_CYCLES = 2 -SQ_PERF_SEL_BUSY_CYCLES = 3 -SQ_PERF_SEL_WAVES = 4 -SQ_PERF_SEL_LEVEL_WAVES = 5 -SQ_PERF_SEL_WAVES_EQ_64 = 6 -SQ_PERF_SEL_WAVES_LT_64 = 7 -SQ_PERF_SEL_WAVES_LT_48 = 8 -SQ_PERF_SEL_WAVES_LT_32 = 9 -SQ_PERF_SEL_WAVES_LT_16 = 10 -SQ_PERF_SEL_WAVES_CU = 11 -SQ_PERF_SEL_LEVEL_WAVES_CU = 12 -SQ_PERF_SEL_BUSY_CU_CYCLES = 13 -SQ_PERF_SEL_ITEMS = 14 -SQ_PERF_SEL_QUADS = 15 -SQ_PERF_SEL_EVENTS = 16 -SQ_PERF_SEL_SURF_SYNCS = 17 -SQ_PERF_SEL_TTRACE_REQS = 18 -SQ_PERF_SEL_TTRACE_INFLIGHT_REQS = 19 -SQ_PERF_SEL_TTRACE_STALL = 20 -SQ_PERF_SEL_MSG_CNTR = 21 -SQ_PERF_SEL_MSG_PERF = 22 -SQ_PERF_SEL_MSG_GSCNT = 23 -SQ_PERF_SEL_MSG_INTERRUPT = 24 -SQ_PERF_SEL_INSTS = 25 -SQ_PERF_SEL_INSTS_VALU = 26 -SQ_PERF_SEL_INSTS_VMEM_WR = 27 -SQ_PERF_SEL_INSTS_VMEM_RD = 28 -SQ_PERF_SEL_INSTS_VMEM = 29 -SQ_PERF_SEL_INSTS_SALU = 30 -SQ_PERF_SEL_INSTS_SMEM = 31 -SQ_PERF_SEL_INSTS_FLAT = 32 -SQ_PERF_SEL_INSTS_FLAT_LDS_ONLY = 33 -SQ_PERF_SEL_INSTS_LDS = 34 -SQ_PERF_SEL_INSTS_GDS = 35 -SQ_PERF_SEL_INSTS_EXP = 36 -SQ_PERF_SEL_INSTS_EXP_GDS = 37 -SQ_PERF_SEL_INSTS_BRANCH = 38 -SQ_PERF_SEL_INSTS_SENDMSG = 39 -SQ_PERF_SEL_INSTS_VSKIPPED = 40 -SQ_PERF_SEL_INST_LEVEL_VMEM = 41 -SQ_PERF_SEL_INST_LEVEL_SMEM = 42 -SQ_PERF_SEL_INST_LEVEL_LDS = 43 -SQ_PERF_SEL_INST_LEVEL_GDS = 44 -SQ_PERF_SEL_INST_LEVEL_EXP = 45 -SQ_PERF_SEL_WAVE_CYCLES = 46 -SQ_PERF_SEL_WAVE_READY = 47 -SQ_PERF_SEL_WAIT_CNT_VM = 48 -SQ_PERF_SEL_WAIT_CNT_LGKM = 49 -SQ_PERF_SEL_WAIT_CNT_EXP = 50 -SQ_PERF_SEL_WAIT_CNT_ANY = 51 -SQ_PERF_SEL_WAIT_BARRIER = 52 -SQ_PERF_SEL_WAIT_EXP_ALLOC = 53 -SQ_PERF_SEL_WAIT_SLEEP = 54 -SQ_PERF_SEL_WAIT_SLEEP_XNACK = 55 -SQ_PERF_SEL_WAIT_OTHER = 56 -SQ_PERF_SEL_WAIT_ANY = 57 -SQ_PERF_SEL_WAIT_TTRACE = 58 -SQ_PERF_SEL_WAIT_IFETCH = 59 -SQ_PERF_SEL_WAIT_INST_ANY = 60 -SQ_PERF_SEL_WAIT_INST_VMEM = 61 -SQ_PERF_SEL_WAIT_INST_SCA = 62 -SQ_PERF_SEL_WAIT_INST_LDS = 63 -SQ_PERF_SEL_WAIT_INST_VALU = 64 -SQ_PERF_SEL_WAIT_INST_EXP_GDS = 65 -SQ_PERF_SEL_WAIT_INST_MISC = 66 -SQ_PERF_SEL_WAIT_INST_FLAT = 67 -SQ_PERF_SEL_ACTIVE_INST_ANY = 68 -SQ_PERF_SEL_ACTIVE_INST_VMEM = 69 -SQ_PERF_SEL_ACTIVE_INST_LDS = 70 -SQ_PERF_SEL_ACTIVE_INST_VALU = 71 -SQ_PERF_SEL_ACTIVE_INST_SCA = 72 -SQ_PERF_SEL_ACTIVE_INST_EXP_GDS = 73 -SQ_PERF_SEL_ACTIVE_INST_MISC = 74 -SQ_PERF_SEL_ACTIVE_INST_FLAT = 75 -SQ_PERF_SEL_INST_CYCLES_VMEM_WR = 76 -SQ_PERF_SEL_INST_CYCLES_VMEM_RD = 77 -SQ_PERF_SEL_INST_CYCLES_VMEM_ADDR = 78 -SQ_PERF_SEL_INST_CYCLES_VMEM_DATA = 79 -SQ_PERF_SEL_INST_CYCLES_VMEM_CMD = 80 -SQ_PERF_SEL_INST_CYCLES_EXP = 81 -SQ_PERF_SEL_INST_CYCLES_GDS = 82 -SQ_PERF_SEL_INST_CYCLES_SMEM = 83 -SQ_PERF_SEL_INST_CYCLES_SALU = 84 -SQ_PERF_SEL_THREAD_CYCLES_VALU = 85 -SQ_PERF_SEL_THREAD_CYCLES_VALU_MAX = 86 -SQ_PERF_SEL_IFETCH = 87 -SQ_PERF_SEL_IFETCH_LEVEL = 88 -SQ_PERF_SEL_CBRANCH_FORK = 89 -SQ_PERF_SEL_CBRANCH_FORK_SPLIT = 90 -SQ_PERF_SEL_VALU_LDS_DIRECT_RD = 91 -SQ_PERF_SEL_VALU_LDS_INTERP_OP = 92 -SQ_PERF_SEL_LDS_BANK_CONFLICT = 93 -SQ_PERF_SEL_LDS_ADDR_CONFLICT = 94 -SQ_PERF_SEL_LDS_UNALIGNED_STALL = 95 -SQ_PERF_SEL_LDS_MEM_VIOLATIONS = 96 -SQ_PERF_SEL_LDS_ATOMIC_RETURN = 97 -SQ_PERF_SEL_LDS_IDX_ACTIVE = 98 -SQ_PERF_SEL_VALU_DEP_STALL = 99 -SQ_PERF_SEL_VALU_STARVE = 100 -SQ_PERF_SEL_EXP_REQ_FIFO_FULL = 101 -SQ_PERF_SEL_LDS_DATA_FIFO_FULL = 102 -SQ_PERF_SEL_LDS_CMD_FIFO_FULL = 103 -SQ_PERF_SEL_VMEM_TA_ADDR_FIFO_FULL = 104 -SQ_PERF_SEL_VMEM_TA_CMD_FIFO_FULL = 105 -SQ_PERF_SEL_VMEM_EX_DATA_REG_BUSY = 106 -SQ_PERF_SEL_VMEM_WR_TA_DATA_FIFO_FULL = 107 -SQ_PERF_SEL_VALU_SRC_C_CONFLICT = 108 -SQ_PERF_SEL_VMEM_RD_SRC_CD_CONFLICT = 109 -SQ_PERF_SEL_VMEM_WR_SRC_CD_CONFLICT = 110 -SQ_PERF_SEL_FLAT_SRC_CD_CONFLICT = 111 -SQ_PERF_SEL_LDS_SRC_CD_CONFLICT = 112 -SQ_PERF_SEL_SRC_CD_BUSY = 113 -SQ_PERF_SEL_PT_POWER_STALL = 114 -SQ_PERF_SEL_USER0 = 115 -SQ_PERF_SEL_USER1 = 116 -SQ_PERF_SEL_USER2 = 117 -SQ_PERF_SEL_USER3 = 118 -SQ_PERF_SEL_USER4 = 119 -SQ_PERF_SEL_USER5 = 120 -SQ_PERF_SEL_USER6 = 121 -SQ_PERF_SEL_USER7 = 122 -SQ_PERF_SEL_USER8 = 123 -SQ_PERF_SEL_USER9 = 124 -SQ_PERF_SEL_USER10 = 125 -SQ_PERF_SEL_USER11 = 126 -SQ_PERF_SEL_USER12 = 127 -SQ_PERF_SEL_USER13 = 128 -SQ_PERF_SEL_USER14 = 129 -SQ_PERF_SEL_USER15 = 130 -SQ_PERF_SEL_USER_LEVEL0 = 131 -SQ_PERF_SEL_USER_LEVEL1 = 132 -SQ_PERF_SEL_USER_LEVEL2 = 133 -SQ_PERF_SEL_USER_LEVEL3 = 134 -SQ_PERF_SEL_USER_LEVEL4 = 135 -SQ_PERF_SEL_USER_LEVEL5 = 136 -SQ_PERF_SEL_USER_LEVEL6 = 137 -SQ_PERF_SEL_USER_LEVEL7 = 138 -SQ_PERF_SEL_USER_LEVEL8 = 139 -SQ_PERF_SEL_USER_LEVEL9 = 140 -SQ_PERF_SEL_USER_LEVEL10 = 141 -SQ_PERF_SEL_USER_LEVEL11 = 142 -SQ_PERF_SEL_USER_LEVEL12 = 143 -SQ_PERF_SEL_USER_LEVEL13 = 144 -SQ_PERF_SEL_USER_LEVEL14 = 145 -SQ_PERF_SEL_USER_LEVEL15 = 146 -SQ_PERF_SEL_POWER_VALU = 147 -SQ_PERF_SEL_POWER_VALU0 = 148 -SQ_PERF_SEL_POWER_VALU1 = 149 -SQ_PERF_SEL_POWER_VALU2 = 150 -SQ_PERF_SEL_POWER_GPR_RD = 151 -SQ_PERF_SEL_POWER_GPR_WR = 152 -SQ_PERF_SEL_POWER_LDS_BUSY = 153 -SQ_PERF_SEL_POWER_ALU_BUSY = 154 -SQ_PERF_SEL_POWER_TEX_BUSY = 155 -SQ_PERF_SEL_ACCUM_PREV_HIRES = 156 -SQ_PERF_SEL_WAVES_RESTORED = 157 -SQ_PERF_SEL_WAVES_SAVED = 158 -SQ_PERF_SEL_INSTS_SMEM_NORM = 159 -SQ_PERF_SEL_ATC_INSTS_VMEM = 160 -SQ_PERF_SEL_ATC_INST_LEVEL_VMEM = 161 -SQ_PERF_SEL_ATC_XNACK_FIRST = 162 -SQ_PERF_SEL_ATC_XNACK_ALL = 163 -SQ_PERF_SEL_ATC_XNACK_FIFO_FULL = 164 -SQ_PERF_SEL_ATC_INSTS_SMEM = 165 -SQ_PERF_SEL_ATC_INST_LEVEL_SMEM = 166 -SQ_PERF_SEL_IFETCH_XNACK = 167 -SQ_PERF_SEL_TLB_SHOOTDOWN = 168 -SQ_PERF_SEL_TLB_SHOOTDOWN_CYCLES = 169 -SQ_PERF_SEL_INSTS_VMEM_WR_REPLAY = 170 -SQ_PERF_SEL_INSTS_VMEM_RD_REPLAY = 171 -SQ_PERF_SEL_INSTS_VMEM_REPLAY = 172 -SQ_PERF_SEL_INSTS_SMEM_REPLAY = 173 -SQ_PERF_SEL_INSTS_SMEM_NORM_REPLAY = 174 -SQ_PERF_SEL_INSTS_FLAT_REPLAY = 175 -SQ_PERF_SEL_ATC_INSTS_VMEM_REPLAY = 176 -SQ_PERF_SEL_ATC_INSTS_SMEM_REPLAY = 177 -SQ_PERF_SEL_UTCL1_TRANSLATION_MISS = 178 -SQ_PERF_SEL_UTCL1_PERMISSION_MISS = 179 -SQ_PERF_SEL_UTCL1_REQUEST = 180 -SQ_PERF_SEL_UTCL1_STALL_MISSFIFO_FULL = 181 -SQ_PERF_SEL_UTCL1_STALL_INFLIGHT_MAX = 182 -SQ_PERF_SEL_UTCL1_STALL_LRU_INFLIGHT = 183 -SQ_PERF_SEL_UTCL1_LFIFO_FULL = 184 -SQ_PERF_SEL_UTCL1_STALL_LFIFO_NOT_RES = 185 -SQ_PERF_SEL_UTCL1_STALL_UTCL2_REQ_OUT_OF_CREDITS = 186 -SQ_PERF_SEL_DUMMY_END = 187 -SQ_PERF_SEL_DUMMY_LAST = 255 -SQC_PERF_SEL_ICACHE_INPUT_VALID_READY = 256 -SQC_PERF_SEL_ICACHE_INPUT_VALID_READYB = 257 -SQC_PERF_SEL_ICACHE_INPUT_VALIDB = 258 -SQC_PERF_SEL_DCACHE_INPUT_VALID_READY = 259 -SQC_PERF_SEL_DCACHE_INPUT_VALID_READYB = 260 -SQC_PERF_SEL_DCACHE_INPUT_VALIDB = 261 -SQC_PERF_SEL_TC_REQ = 262 -SQC_PERF_SEL_TC_INST_REQ = 263 -SQC_PERF_SEL_TC_DATA_READ_REQ = 264 -SQC_PERF_SEL_TC_DATA_WRITE_REQ = 265 -SQC_PERF_SEL_TC_DATA_ATOMIC_REQ = 266 -SQC_PERF_SEL_TC_STALL = 267 -SQC_PERF_SEL_TC_STARVE = 268 -SQC_PERF_SEL_ICACHE_BUSY_CYCLES = 269 -SQC_PERF_SEL_ICACHE_REQ = 270 -SQC_PERF_SEL_ICACHE_HITS = 271 -SQC_PERF_SEL_ICACHE_MISSES = 272 -SQC_PERF_SEL_ICACHE_MISSES_DUPLICATE = 273 -SQC_PERF_SEL_ICACHE_INVAL_INST = 274 -SQC_PERF_SEL_ICACHE_INVAL_ASYNC = 275 -SQC_PERF_SEL_ICACHE_INPUT_STALL_ARB_NO_GRANT = 276 -SQC_PERF_SEL_ICACHE_INPUT_STALL_BANK_READYB = 277 -SQC_PERF_SEL_ICACHE_CACHE_STALLED = 278 -SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_NONZERO = 279 -SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_MAX = 280 -SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT = 281 -SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT_MISS_FIFO = 282 -SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT_HIT_FIFO = 283 -SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT_TC_IF = 284 -SQC_PERF_SEL_ICACHE_STALL_OUTXBAR_ARB_NO_GRANT = 285 -SQC_PERF_SEL_ICACHE_PREFETCH_1 = 286 -SQC_PERF_SEL_ICACHE_PREFETCH_2 = 287 -SQC_PERF_SEL_ICACHE_PREFETCH_FILTERED = 288 -SQC_PERF_SEL_DCACHE_BUSY_CYCLES = 289 -SQC_PERF_SEL_DCACHE_REQ = 290 -SQC_PERF_SEL_DCACHE_HITS = 291 -SQC_PERF_SEL_DCACHE_MISSES = 292 -SQC_PERF_SEL_DCACHE_MISSES_DUPLICATE = 293 -SQC_PERF_SEL_DCACHE_HIT_LRU_READ = 294 -SQC_PERF_SEL_DCACHE_MISS_EVICT_READ = 295 -SQC_PERF_SEL_DCACHE_WC_LRU_WRITE = 296 -SQC_PERF_SEL_DCACHE_WT_EVICT_WRITE = 297 -SQC_PERF_SEL_DCACHE_ATOMIC = 298 -SQC_PERF_SEL_DCACHE_VOLATILE = 299 -SQC_PERF_SEL_DCACHE_INVAL_INST = 300 -SQC_PERF_SEL_DCACHE_INVAL_ASYNC = 301 -SQC_PERF_SEL_DCACHE_INVAL_VOLATILE_INST = 302 -SQC_PERF_SEL_DCACHE_INVAL_VOLATILE_ASYNC = 303 -SQC_PERF_SEL_DCACHE_WB_INST = 304 -SQC_PERF_SEL_DCACHE_WB_ASYNC = 305 -SQC_PERF_SEL_DCACHE_WB_VOLATILE_INST = 306 -SQC_PERF_SEL_DCACHE_WB_VOLATILE_ASYNC = 307 -SQC_PERF_SEL_DCACHE_INPUT_STALL_ARB_NO_GRANT = 308 -SQC_PERF_SEL_DCACHE_INPUT_STALL_BANK_READYB = 309 -SQC_PERF_SEL_DCACHE_CACHE_STALLED = 310 -SQC_PERF_SEL_DCACHE_CACHE_STALL_INFLIGHT_MAX = 311 -SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT = 312 -SQC_PERF_SEL_DCACHE_CACHE_STALL_EVICT = 313 -SQC_PERF_SEL_DCACHE_CACHE_STALL_UNORDERED = 314 -SQC_PERF_SEL_DCACHE_CACHE_STALL_ALLOC_UNAVAILABLE = 315 -SQC_PERF_SEL_DCACHE_CACHE_STALL_FORCE_EVICT = 316 -SQC_PERF_SEL_DCACHE_CACHE_STALL_MULTI_FLUSH = 317 -SQC_PERF_SEL_DCACHE_CACHE_STALL_FLUSH_DONE = 318 -SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT_MISS_FIFO = 319 -SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT_HIT_FIFO = 320 -SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT_TC_IF = 321 -SQC_PERF_SEL_DCACHE_STALL_OUTXBAR_ARB_NO_GRANT = 322 -SQC_PERF_SEL_DCACHE_REQ_READ_1 = 323 -SQC_PERF_SEL_DCACHE_REQ_READ_2 = 324 -SQC_PERF_SEL_DCACHE_REQ_READ_4 = 325 -SQC_PERF_SEL_DCACHE_REQ_READ_8 = 326 -SQC_PERF_SEL_DCACHE_REQ_READ_16 = 327 -SQC_PERF_SEL_DCACHE_REQ_TIME = 328 -SQC_PERF_SEL_DCACHE_REQ_WRITE_1 = 329 -SQC_PERF_SEL_DCACHE_REQ_WRITE_2 = 330 -SQC_PERF_SEL_DCACHE_REQ_WRITE_4 = 331 -SQC_PERF_SEL_DCACHE_REQ_ATC_PROBE = 332 -SQC_PERF_SEL_SQ_DCACHE_REQS = 333 -SQC_PERF_SEL_DCACHE_FLAT_REQ = 334 -SQC_PERF_SEL_DCACHE_NONFLAT_REQ = 335 -SQC_PERF_SEL_ICACHE_INFLIGHT_LEVEL = 336 -SQC_PERF_SEL_DCACHE_INFLIGHT_LEVEL = 337 -SQC_PERF_SEL_TC_INFLIGHT_LEVEL = 338 -SQC_PERF_SEL_ICACHE_TC_INFLIGHT_LEVEL = 339 -SQC_PERF_SEL_DCACHE_TC_INFLIGHT_LEVEL = 340 -SQC_PERF_SEL_ICACHE_GATCL1_TRANSLATION_MISS = 341 -SQC_PERF_SEL_ICACHE_GATCL1_PERMISSION_MISS = 342 -SQC_PERF_SEL_ICACHE_GATCL1_REQUEST = 343 -SQC_PERF_SEL_ICACHE_GATCL1_STALL_INFLIGHT_MAX = 344 -SQC_PERF_SEL_ICACHE_GATCL1_STALL_LRU_INFLIGHT = 345 -SQC_PERF_SEL_ICACHE_GATCL1_LFIFO_FULL = 346 -SQC_PERF_SEL_ICACHE_GATCL1_STALL_LFIFO_NOT_RES = 347 -SQC_PERF_SEL_ICACHE_GATCL1_STALL_ATCL2_REQ_OUT_OF_CREDITS = 348 -SQC_PERF_SEL_ICACHE_GATCL1_ATCL2_INFLIGHT = 349 -SQC_PERF_SEL_ICACHE_GATCL1_STALL_MISSFIFO_FULL = 350 -SQC_PERF_SEL_DCACHE_GATCL1_TRANSLATION_MISS = 351 -SQC_PERF_SEL_DCACHE_GATCL1_PERMISSION_MISS = 352 -SQC_PERF_SEL_DCACHE_GATCL1_REQUEST = 353 -SQC_PERF_SEL_DCACHE_GATCL1_STALL_INFLIGHT_MAX = 354 -SQC_PERF_SEL_DCACHE_GATCL1_STALL_LRU_INFLIGHT = 355 -SQC_PERF_SEL_DCACHE_GATCL1_LFIFO_FULL = 356 -SQC_PERF_SEL_DCACHE_GATCL1_STALL_LFIFO_NOT_RES = 357 -SQC_PERF_SEL_DCACHE_GATCL1_STALL_ATCL2_REQ_OUT_OF_CREDITS = 358 -SQC_PERF_SEL_DCACHE_GATCL1_ATCL2_INFLIGHT = 359 -SQC_PERF_SEL_DCACHE_GATCL1_STALL_MISSFIFO_FULL = 360 -SQC_PERF_SEL_DCACHE_GATCL1_STALL_MULTI_MISS = 361 -SQC_PERF_SEL_DCACHE_GATCL1_HIT_FIFO_FULL = 362 -SQC_PERF_SEL_DUMMY_LAST = 363 -SQ_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_CAC_POWER_SEL' -SQ_CAC_POWER_SEL__enumvalues = { - 0: 'SQ_CAC_POWER_VALU', - 1: 'SQ_CAC_POWER_VALU0', - 2: 'SQ_CAC_POWER_VALU1', - 3: 'SQ_CAC_POWER_VALU2', - 4: 'SQ_CAC_POWER_GPR_RD', - 5: 'SQ_CAC_POWER_GPR_WR', - 6: 'SQ_CAC_POWER_LDS_BUSY', - 7: 'SQ_CAC_POWER_ALU_BUSY', - 8: 'SQ_CAC_POWER_TEX_BUSY', -} -SQ_CAC_POWER_VALU = 0 -SQ_CAC_POWER_VALU0 = 1 -SQ_CAC_POWER_VALU1 = 2 -SQ_CAC_POWER_VALU2 = 3 -SQ_CAC_POWER_GPR_RD = 4 -SQ_CAC_POWER_GPR_WR = 5 -SQ_CAC_POWER_LDS_BUSY = 6 -SQ_CAC_POWER_ALU_BUSY = 7 -SQ_CAC_POWER_TEX_BUSY = 8 -SQ_CAC_POWER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IND_CMD_CMD' -SQ_IND_CMD_CMD__enumvalues = { - 0: 'SQ_IND_CMD_CMD_NULL', - 1: 'SQ_IND_CMD_CMD_SETHALT', - 2: 'SQ_IND_CMD_CMD_SAVECTX', - 3: 'SQ_IND_CMD_CMD_KILL', - 4: 'SQ_IND_CMD_CMD_DEBUG', - 5: 'SQ_IND_CMD_CMD_TRAP', - 6: 'SQ_IND_CMD_CMD_SET_SPI_PRIO', - 7: 'SQ_IND_CMD_CMD_SETFATALHALT', -} -SQ_IND_CMD_CMD_NULL = 0 -SQ_IND_CMD_CMD_SETHALT = 1 -SQ_IND_CMD_CMD_SAVECTX = 2 -SQ_IND_CMD_CMD_KILL = 3 -SQ_IND_CMD_CMD_DEBUG = 4 -SQ_IND_CMD_CMD_TRAP = 5 -SQ_IND_CMD_CMD_SET_SPI_PRIO = 6 -SQ_IND_CMD_CMD_SETFATALHALT = 7 -SQ_IND_CMD_CMD = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IND_CMD_MODE' -SQ_IND_CMD_MODE__enumvalues = { - 0: 'SQ_IND_CMD_MODE_SINGLE', - 1: 'SQ_IND_CMD_MODE_BROADCAST', - 2: 'SQ_IND_CMD_MODE_BROADCAST_QUEUE', - 3: 'SQ_IND_CMD_MODE_BROADCAST_PIPE', - 4: 'SQ_IND_CMD_MODE_BROADCAST_ME', -} -SQ_IND_CMD_MODE_SINGLE = 0 -SQ_IND_CMD_MODE_BROADCAST = 1 -SQ_IND_CMD_MODE_BROADCAST_QUEUE = 2 -SQ_IND_CMD_MODE_BROADCAST_PIPE = 3 -SQ_IND_CMD_MODE_BROADCAST_ME = 4 -SQ_IND_CMD_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_EDC_INFO_SOURCE' -SQ_EDC_INFO_SOURCE__enumvalues = { - 0: 'SQ_EDC_INFO_SOURCE_INVALID', - 1: 'SQ_EDC_INFO_SOURCE_INST', - 2: 'SQ_EDC_INFO_SOURCE_SGPR', - 3: 'SQ_EDC_INFO_SOURCE_VGPR', - 4: 'SQ_EDC_INFO_SOURCE_LDS', - 5: 'SQ_EDC_INFO_SOURCE_GDS', - 6: 'SQ_EDC_INFO_SOURCE_TA', -} -SQ_EDC_INFO_SOURCE_INVALID = 0 -SQ_EDC_INFO_SOURCE_INST = 1 -SQ_EDC_INFO_SOURCE_SGPR = 2 -SQ_EDC_INFO_SOURCE_VGPR = 3 -SQ_EDC_INFO_SOURCE_LDS = 4 -SQ_EDC_INFO_SOURCE_GDS = 5 -SQ_EDC_INFO_SOURCE_TA = 6 -SQ_EDC_INFO_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_ROUND_MODE' -SQ_ROUND_MODE__enumvalues = { - 0: 'SQ_ROUND_NEAREST_EVEN', - 1: 'SQ_ROUND_PLUS_INFINITY', - 2: 'SQ_ROUND_MINUS_INFINITY', - 3: 'SQ_ROUND_TO_ZERO', -} -SQ_ROUND_NEAREST_EVEN = 0 -SQ_ROUND_PLUS_INFINITY = 1 -SQ_ROUND_MINUS_INFINITY = 2 -SQ_ROUND_TO_ZERO = 3 -SQ_ROUND_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_INTERRUPT_WORD_ENCODING' -SQ_INTERRUPT_WORD_ENCODING__enumvalues = { - 0: 'SQ_INTERRUPT_WORD_ENCODING_AUTO', - 1: 'SQ_INTERRUPT_WORD_ENCODING_INST', - 2: 'SQ_INTERRUPT_WORD_ENCODING_ERROR', -} -SQ_INTERRUPT_WORD_ENCODING_AUTO = 0 -SQ_INTERRUPT_WORD_ENCODING_INST = 1 -SQ_INTERRUPT_WORD_ENCODING_ERROR = 2 -SQ_INTERRUPT_WORD_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_SQ_EXPORT_RAT_INST' -ENUM_SQ_EXPORT_RAT_INST__enumvalues = { - 0: 'SQ_EXPORT_RAT_INST_NOP', - 1: 'SQ_EXPORT_RAT_INST_STORE_TYPED', - 2: 'SQ_EXPORT_RAT_INST_STORE_RAW', - 3: 'SQ_EXPORT_RAT_INST_STORE_RAW_FDENORM', - 4: 'SQ_EXPORT_RAT_INST_CMPXCHG_INT', - 5: 'SQ_EXPORT_RAT_INST_CMPXCHG_FLT', - 6: 'SQ_EXPORT_RAT_INST_CMPXCHG_FDENORM', - 7: 'SQ_EXPORT_RAT_INST_ADD', - 8: 'SQ_EXPORT_RAT_INST_SUB', - 9: 'SQ_EXPORT_RAT_INST_RSUB', - 10: 'SQ_EXPORT_RAT_INST_MIN_INT', - 11: 'SQ_EXPORT_RAT_INST_MIN_UINT', - 12: 'SQ_EXPORT_RAT_INST_MAX_INT', - 13: 'SQ_EXPORT_RAT_INST_MAX_UINT', - 14: 'SQ_EXPORT_RAT_INST_AND', - 15: 'SQ_EXPORT_RAT_INST_OR', - 16: 'SQ_EXPORT_RAT_INST_XOR', - 17: 'SQ_EXPORT_RAT_INST_MSKOR', - 18: 'SQ_EXPORT_RAT_INST_INC_UINT', - 19: 'SQ_EXPORT_RAT_INST_DEC_UINT', - 20: 'SQ_EXPORT_RAT_INST_STORE_DWORD', - 21: 'SQ_EXPORT_RAT_INST_STORE_SHORT', - 22: 'SQ_EXPORT_RAT_INST_STORE_BYTE', - 32: 'SQ_EXPORT_RAT_INST_NOP_RTN', - 34: 'SQ_EXPORT_RAT_INST_XCHG_RTN', - 35: 'SQ_EXPORT_RAT_INST_XCHG_FDENORM_RTN', - 36: 'SQ_EXPORT_RAT_INST_CMPXCHG_INT_RTN', - 37: 'SQ_EXPORT_RAT_INST_CMPXCHG_FLT_RTN', - 38: 'SQ_EXPORT_RAT_INST_CMPXCHG_FDENORM_RTN', - 39: 'SQ_EXPORT_RAT_INST_ADD_RTN', - 40: 'SQ_EXPORT_RAT_INST_SUB_RTN', - 41: 'SQ_EXPORT_RAT_INST_RSUB_RTN', - 42: 'SQ_EXPORT_RAT_INST_MIN_INT_RTN', - 43: 'SQ_EXPORT_RAT_INST_MIN_UINT_RTN', - 44: 'SQ_EXPORT_RAT_INST_MAX_INT_RTN', - 45: 'SQ_EXPORT_RAT_INST_MAX_UINT_RTN', - 46: 'SQ_EXPORT_RAT_INST_AND_RTN', - 47: 'SQ_EXPORT_RAT_INST_OR_RTN', - 48: 'SQ_EXPORT_RAT_INST_XOR_RTN', - 49: 'SQ_EXPORT_RAT_INST_MSKOR_RTN', - 50: 'SQ_EXPORT_RAT_INST_INC_UINT_RTN', - 51: 'SQ_EXPORT_RAT_INST_DEC_UINT_RTN', -} -SQ_EXPORT_RAT_INST_NOP = 0 -SQ_EXPORT_RAT_INST_STORE_TYPED = 1 -SQ_EXPORT_RAT_INST_STORE_RAW = 2 -SQ_EXPORT_RAT_INST_STORE_RAW_FDENORM = 3 -SQ_EXPORT_RAT_INST_CMPXCHG_INT = 4 -SQ_EXPORT_RAT_INST_CMPXCHG_FLT = 5 -SQ_EXPORT_RAT_INST_CMPXCHG_FDENORM = 6 -SQ_EXPORT_RAT_INST_ADD = 7 -SQ_EXPORT_RAT_INST_SUB = 8 -SQ_EXPORT_RAT_INST_RSUB = 9 -SQ_EXPORT_RAT_INST_MIN_INT = 10 -SQ_EXPORT_RAT_INST_MIN_UINT = 11 -SQ_EXPORT_RAT_INST_MAX_INT = 12 -SQ_EXPORT_RAT_INST_MAX_UINT = 13 -SQ_EXPORT_RAT_INST_AND = 14 -SQ_EXPORT_RAT_INST_OR = 15 -SQ_EXPORT_RAT_INST_XOR = 16 -SQ_EXPORT_RAT_INST_MSKOR = 17 -SQ_EXPORT_RAT_INST_INC_UINT = 18 -SQ_EXPORT_RAT_INST_DEC_UINT = 19 -SQ_EXPORT_RAT_INST_STORE_DWORD = 20 -SQ_EXPORT_RAT_INST_STORE_SHORT = 21 -SQ_EXPORT_RAT_INST_STORE_BYTE = 22 -SQ_EXPORT_RAT_INST_NOP_RTN = 32 -SQ_EXPORT_RAT_INST_XCHG_RTN = 34 -SQ_EXPORT_RAT_INST_XCHG_FDENORM_RTN = 35 -SQ_EXPORT_RAT_INST_CMPXCHG_INT_RTN = 36 -SQ_EXPORT_RAT_INST_CMPXCHG_FLT_RTN = 37 -SQ_EXPORT_RAT_INST_CMPXCHG_FDENORM_RTN = 38 -SQ_EXPORT_RAT_INST_ADD_RTN = 39 -SQ_EXPORT_RAT_INST_SUB_RTN = 40 -SQ_EXPORT_RAT_INST_RSUB_RTN = 41 -SQ_EXPORT_RAT_INST_MIN_INT_RTN = 42 -SQ_EXPORT_RAT_INST_MIN_UINT_RTN = 43 -SQ_EXPORT_RAT_INST_MAX_INT_RTN = 44 -SQ_EXPORT_RAT_INST_MAX_UINT_RTN = 45 -SQ_EXPORT_RAT_INST_AND_RTN = 46 -SQ_EXPORT_RAT_INST_OR_RTN = 47 -SQ_EXPORT_RAT_INST_XOR_RTN = 48 -SQ_EXPORT_RAT_INST_MSKOR_RTN = 49 -SQ_EXPORT_RAT_INST_INC_UINT_RTN = 50 -SQ_EXPORT_RAT_INST_DEC_UINT_RTN = 51 -ENUM_SQ_EXPORT_RAT_INST = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IBUF_ST' -SQ_IBUF_ST__enumvalues = { - 0: 'SQ_IBUF_IB_IDLE', - 1: 'SQ_IBUF_IB_INI_WAIT_GNT', - 2: 'SQ_IBUF_IB_INI_WAIT_DRET', - 3: 'SQ_IBUF_IB_LE_4DW', - 4: 'SQ_IBUF_IB_WAIT_DRET', - 5: 'SQ_IBUF_IB_EMPTY_WAIT_DRET', - 6: 'SQ_IBUF_IB_DRET', - 7: 'SQ_IBUF_IB_EMPTY_WAIT_GNT', -} -SQ_IBUF_IB_IDLE = 0 -SQ_IBUF_IB_INI_WAIT_GNT = 1 -SQ_IBUF_IB_INI_WAIT_DRET = 2 -SQ_IBUF_IB_LE_4DW = 3 -SQ_IBUF_IB_WAIT_DRET = 4 -SQ_IBUF_IB_EMPTY_WAIT_DRET = 5 -SQ_IBUF_IB_DRET = 6 -SQ_IBUF_IB_EMPTY_WAIT_GNT = 7 -SQ_IBUF_ST = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_INST_STR_ST' -SQ_INST_STR_ST__enumvalues = { - 0: 'SQ_INST_STR_IB_WAVE_NORML', - 1: 'SQ_INST_STR_IB_WAVE2ID_NORMAL_INST_AV', - 2: 'SQ_INST_STR_IB_WAVE_INTERNAL_INST_AV', - 3: 'SQ_INST_STR_IB_WAVE_INST_SKIP_AV', - 4: 'SQ_INST_STR_IB_WAVE_SETVSKIP_ST0', - 5: 'SQ_INST_STR_IB_WAVE_SETVSKIP_ST1', - 6: 'SQ_INST_STR_IB_WAVE_NOP_SLEEP_WAIT', - 7: 'SQ_INST_STR_IB_WAVE_PC_FROM_SGPR_MSG_WAIT', -} -SQ_INST_STR_IB_WAVE_NORML = 0 -SQ_INST_STR_IB_WAVE2ID_NORMAL_INST_AV = 1 -SQ_INST_STR_IB_WAVE_INTERNAL_INST_AV = 2 -SQ_INST_STR_IB_WAVE_INST_SKIP_AV = 3 -SQ_INST_STR_IB_WAVE_SETVSKIP_ST0 = 4 -SQ_INST_STR_IB_WAVE_SETVSKIP_ST1 = 5 -SQ_INST_STR_IB_WAVE_NOP_SLEEP_WAIT = 6 -SQ_INST_STR_IB_WAVE_PC_FROM_SGPR_MSG_WAIT = 7 -SQ_INST_STR_ST = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WAVE_IB_ECC_ST' -SQ_WAVE_IB_ECC_ST__enumvalues = { - 0: 'SQ_WAVE_IB_ECC_CLEAN', - 1: 'SQ_WAVE_IB_ECC_ERR_CONTINUE', - 2: 'SQ_WAVE_IB_ECC_ERR_HALT', - 3: 'SQ_WAVE_IB_ECC_WITH_ERR_MSG', -} -SQ_WAVE_IB_ECC_CLEAN = 0 -SQ_WAVE_IB_ECC_ERR_CONTINUE = 1 -SQ_WAVE_IB_ECC_ERR_HALT = 2 -SQ_WAVE_IB_ECC_WITH_ERR_MSG = 3 -SQ_WAVE_IB_ECC_ST = ctypes.c_uint32 # enum - -# values for enumeration 'SH_MEM_ADDRESS_MODE' -SH_MEM_ADDRESS_MODE__enumvalues = { - 0: 'SH_MEM_ADDRESS_MODE_64', - 1: 'SH_MEM_ADDRESS_MODE_32', -} -SH_MEM_ADDRESS_MODE_64 = 0 -SH_MEM_ADDRESS_MODE_32 = 1 -SH_MEM_ADDRESS_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SH_MEM_ALIGNMENT_MODE' -SH_MEM_ALIGNMENT_MODE__enumvalues = { - 0: 'SH_MEM_ALIGNMENT_MODE_DWORD', - 1: 'SH_MEM_ALIGNMENT_MODE_DWORD_STRICT', - 2: 'SH_MEM_ALIGNMENT_MODE_STRICT', - 3: 'SH_MEM_ALIGNMENT_MODE_UNALIGNED', -} -SH_MEM_ALIGNMENT_MODE_DWORD = 0 -SH_MEM_ALIGNMENT_MODE_DWORD_STRICT = 1 -SH_MEM_ALIGNMENT_MODE_STRICT = 2 -SH_MEM_ALIGNMENT_MODE_UNALIGNED = 3 -SH_MEM_ALIGNMENT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_THREAD_TRACE_WAVE_START_COUNT_PREFIX' -SQ_THREAD_TRACE_WAVE_START_COUNT_PREFIX__enumvalues = { - 24: 'SQ_THREAD_TRACE_WAVE_START_COUNT_PREFIX_WREXEC', - 25: 'SQ_THREAD_TRACE_WAVE_START_COUNT_PREFIX_RESTORE', -} -SQ_THREAD_TRACE_WAVE_START_COUNT_PREFIX_WREXEC = 24 -SQ_THREAD_TRACE_WAVE_START_COUNT_PREFIX_RESTORE = 25 -SQ_THREAD_TRACE_WAVE_START_COUNT_PREFIX = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_LB_CTR_SEL_VALUES' -SQ_LB_CTR_SEL_VALUES__enumvalues = { - 0: 'SQ_LB_CTR_SEL_ALU_CYCLES', - 1: 'SQ_LB_CTR_SEL_ALU_STALLS', - 2: 'SQ_LB_CTR_SEL_TEX_CYCLES', - 3: 'SQ_LB_CTR_SEL_TEX_STALLS', - 4: 'SQ_LB_CTR_SEL_SALU_CYCLES', - 5: 'SQ_LB_CTR_SEL_SCALAR_STALLS', - 6: 'SQ_LB_CTR_SEL_SMEM_CYCLES', - 7: 'SQ_LB_CTR_SEL_ICACHE_STALLS', - 8: 'SQ_LB_CTR_SEL_DCACHE_STALLS', - 9: 'SQ_LB_CTR_SEL_RESERVED0', - 10: 'SQ_LB_CTR_SEL_RESERVED1', - 11: 'SQ_LB_CTR_SEL_RESERVED2', - 12: 'SQ_LB_CTR_SEL_RESERVED3', - 13: 'SQ_LB_CTR_SEL_RESERVED4', - 14: 'SQ_LB_CTR_SEL_RESERVED5', - 15: 'SQ_LB_CTR_SEL_RESERVED6', -} -SQ_LB_CTR_SEL_ALU_CYCLES = 0 -SQ_LB_CTR_SEL_ALU_STALLS = 1 -SQ_LB_CTR_SEL_TEX_CYCLES = 2 -SQ_LB_CTR_SEL_TEX_STALLS = 3 -SQ_LB_CTR_SEL_SALU_CYCLES = 4 -SQ_LB_CTR_SEL_SCALAR_STALLS = 5 -SQ_LB_CTR_SEL_SMEM_CYCLES = 6 -SQ_LB_CTR_SEL_ICACHE_STALLS = 7 -SQ_LB_CTR_SEL_DCACHE_STALLS = 8 -SQ_LB_CTR_SEL_RESERVED0 = 9 -SQ_LB_CTR_SEL_RESERVED1 = 10 -SQ_LB_CTR_SEL_RESERVED2 = 11 -SQ_LB_CTR_SEL_RESERVED3 = 12 -SQ_LB_CTR_SEL_RESERVED4 = 13 -SQ_LB_CTR_SEL_RESERVED5 = 14 -SQ_LB_CTR_SEL_RESERVED6 = 15 -SQ_LB_CTR_SEL_VALUES = ctypes.c_uint32 # enum - -# values for enumeration 'CSDATA_TYPE' -CSDATA_TYPE__enumvalues = { - 0: 'CSDATA_TYPE_TG', - 1: 'CSDATA_TYPE_STATE', - 2: 'CSDATA_TYPE_EVENT', - 3: 'CSDATA_TYPE_PRIVATE', -} -CSDATA_TYPE_TG = 0 -CSDATA_TYPE_STATE = 1 -CSDATA_TYPE_EVENT = 2 -CSDATA_TYPE_PRIVATE = 3 -CSDATA_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_OUT_PRIM_TYPE' -VGT_OUT_PRIM_TYPE__enumvalues = { - 0: 'VGT_OUT_POINT', - 1: 'VGT_OUT_LINE', - 2: 'VGT_OUT_TRI', - 3: 'VGT_OUT_RECT_V0', - 4: 'VGT_OUT_RECT_V1', - 5: 'VGT_OUT_RECT_V2', - 6: 'VGT_OUT_RECT_V3', - 7: 'VGT_OUT_2D_RECT', - 8: 'VGT_TE_QUAD', - 9: 'VGT_TE_PRIM_INDEX_LINE', - 10: 'VGT_TE_PRIM_INDEX_TRI', - 11: 'VGT_TE_PRIM_INDEX_QUAD', - 12: 'VGT_OUT_LINE_ADJ', - 13: 'VGT_OUT_TRI_ADJ', - 14: 'VGT_OUT_PATCH', -} -VGT_OUT_POINT = 0 -VGT_OUT_LINE = 1 -VGT_OUT_TRI = 2 -VGT_OUT_RECT_V0 = 3 -VGT_OUT_RECT_V1 = 4 -VGT_OUT_RECT_V2 = 5 -VGT_OUT_RECT_V3 = 6 -VGT_OUT_2D_RECT = 7 -VGT_TE_QUAD = 8 -VGT_TE_PRIM_INDEX_LINE = 9 -VGT_TE_PRIM_INDEX_TRI = 10 -VGT_TE_PRIM_INDEX_QUAD = 11 -VGT_OUT_LINE_ADJ = 12 -VGT_OUT_TRI_ADJ = 13 -VGT_OUT_PATCH = 14 -VGT_OUT_PRIM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DI_PRIM_TYPE' -VGT_DI_PRIM_TYPE__enumvalues = { - 0: 'DI_PT_NONE', - 1: 'DI_PT_POINTLIST', - 2: 'DI_PT_LINELIST', - 3: 'DI_PT_LINESTRIP', - 4: 'DI_PT_TRILIST', - 5: 'DI_PT_TRIFAN', - 6: 'DI_PT_TRISTRIP', - 7: 'DI_PT_2D_RECTANGLE', - 8: 'DI_PT_UNUSED_1', - 9: 'DI_PT_PATCH', - 10: 'DI_PT_LINELIST_ADJ', - 11: 'DI_PT_LINESTRIP_ADJ', - 12: 'DI_PT_TRILIST_ADJ', - 13: 'DI_PT_TRISTRIP_ADJ', - 14: 'DI_PT_UNUSED_3', - 15: 'DI_PT_UNUSED_4', - 16: 'DI_PT_TRI_WITH_WFLAGS', - 17: 'DI_PT_RECTLIST', - 18: 'DI_PT_LINELOOP', - 19: 'DI_PT_QUADLIST', - 20: 'DI_PT_QUADSTRIP', - 21: 'DI_PT_POLYGON', -} -DI_PT_NONE = 0 -DI_PT_POINTLIST = 1 -DI_PT_LINELIST = 2 -DI_PT_LINESTRIP = 3 -DI_PT_TRILIST = 4 -DI_PT_TRIFAN = 5 -DI_PT_TRISTRIP = 6 -DI_PT_2D_RECTANGLE = 7 -DI_PT_UNUSED_1 = 8 -DI_PT_PATCH = 9 -DI_PT_LINELIST_ADJ = 10 -DI_PT_LINESTRIP_ADJ = 11 -DI_PT_TRILIST_ADJ = 12 -DI_PT_TRISTRIP_ADJ = 13 -DI_PT_UNUSED_3 = 14 -DI_PT_UNUSED_4 = 15 -DI_PT_TRI_WITH_WFLAGS = 16 -DI_PT_RECTLIST = 17 -DI_PT_LINELOOP = 18 -DI_PT_QUADLIST = 19 -DI_PT_QUADSTRIP = 20 -DI_PT_POLYGON = 21 -VGT_DI_PRIM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DI_SOURCE_SELECT' -VGT_DI_SOURCE_SELECT__enumvalues = { - 0: 'DI_SRC_SEL_DMA', - 1: 'DI_SRC_SEL_IMMEDIATE', - 2: 'DI_SRC_SEL_AUTO_INDEX', - 3: 'DI_SRC_SEL_RESERVED', -} -DI_SRC_SEL_DMA = 0 -DI_SRC_SEL_IMMEDIATE = 1 -DI_SRC_SEL_AUTO_INDEX = 2 -DI_SRC_SEL_RESERVED = 3 -VGT_DI_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DI_MAJOR_MODE_SELECT' -VGT_DI_MAJOR_MODE_SELECT__enumvalues = { - 0: 'DI_MAJOR_MODE_0', - 1: 'DI_MAJOR_MODE_1', -} -DI_MAJOR_MODE_0 = 0 -DI_MAJOR_MODE_1 = 1 -VGT_DI_MAJOR_MODE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DI_INDEX_SIZE' -VGT_DI_INDEX_SIZE__enumvalues = { - 0: 'DI_INDEX_SIZE_16_BIT', - 1: 'DI_INDEX_SIZE_32_BIT', - 2: 'DI_INDEX_SIZE_8_BIT', -} -DI_INDEX_SIZE_16_BIT = 0 -DI_INDEX_SIZE_32_BIT = 1 -DI_INDEX_SIZE_8_BIT = 2 -VGT_DI_INDEX_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_EVENT_TYPE' -VGT_EVENT_TYPE__enumvalues = { - 0: 'Reserved_0x00', - 1: 'SAMPLE_STREAMOUTSTATS1', - 2: 'SAMPLE_STREAMOUTSTATS2', - 3: 'SAMPLE_STREAMOUTSTATS3', - 4: 'CACHE_FLUSH_TS', - 5: 'CONTEXT_DONE', - 6: 'CACHE_FLUSH', - 7: 'CS_PARTIAL_FLUSH', - 8: 'VGT_STREAMOUT_SYNC', - 9: 'Reserved_0x09', - 10: 'VGT_STREAMOUT_RESET', - 11: 'END_OF_PIPE_INCR_DE', - 12: 'END_OF_PIPE_IB_END', - 13: 'RST_PIX_CNT', - 14: 'BREAK_BATCH', - 15: 'VS_PARTIAL_FLUSH', - 16: 'PS_PARTIAL_FLUSH', - 17: 'FLUSH_HS_OUTPUT', - 18: 'FLUSH_DFSM', - 19: 'RESET_TO_LOWEST_VGT', - 20: 'CACHE_FLUSH_AND_INV_TS_EVENT', - 21: 'ZPASS_DONE', - 22: 'CACHE_FLUSH_AND_INV_EVENT', - 23: 'PERFCOUNTER_START', - 24: 'PERFCOUNTER_STOP', - 25: 'PIPELINESTAT_START', - 26: 'PIPELINESTAT_STOP', - 27: 'PERFCOUNTER_SAMPLE', - 28: 'Available_0x1c', - 29: 'Available_0x1d', - 30: 'SAMPLE_PIPELINESTAT', - 31: 'SO_VGTSTREAMOUT_FLUSH', - 32: 'SAMPLE_STREAMOUTSTATS', - 33: 'RESET_VTX_CNT', - 34: 'BLOCK_CONTEXT_DONE', - 35: 'CS_CONTEXT_DONE', - 36: 'VGT_FLUSH', - 37: 'TGID_ROLLOVER', - 38: 'SQ_NON_EVENT', - 39: 'SC_SEND_DB_VPZ', - 40: 'BOTTOM_OF_PIPE_TS', - 41: 'FLUSH_SX_TS', - 42: 'DB_CACHE_FLUSH_AND_INV', - 43: 'FLUSH_AND_INV_DB_DATA_TS', - 44: 'FLUSH_AND_INV_DB_META', - 45: 'FLUSH_AND_INV_CB_DATA_TS', - 46: 'FLUSH_AND_INV_CB_META', - 47: 'CS_DONE', - 48: 'PS_DONE', - 49: 'FLUSH_AND_INV_CB_PIXEL_DATA', - 50: 'SX_CB_RAT_ACK_REQUEST', - 51: 'THREAD_TRACE_START', - 52: 'THREAD_TRACE_STOP', - 53: 'THREAD_TRACE_MARKER', - 54: 'THREAD_TRACE_FLUSH', - 55: 'THREAD_TRACE_FINISH', - 56: 'PIXEL_PIPE_STAT_CONTROL', - 57: 'PIXEL_PIPE_STAT_DUMP', - 58: 'PIXEL_PIPE_STAT_RESET', - 59: 'CONTEXT_SUSPEND', - 60: 'OFFCHIP_HS_DEALLOC', - 61: 'ENABLE_NGG_PIPELINE', - 62: 'ENABLE_LEGACY_PIPELINE', - 63: 'Reserved_0x3f', -} -Reserved_0x00 = 0 -SAMPLE_STREAMOUTSTATS1 = 1 -SAMPLE_STREAMOUTSTATS2 = 2 -SAMPLE_STREAMOUTSTATS3 = 3 -CACHE_FLUSH_TS = 4 -CONTEXT_DONE = 5 -CACHE_FLUSH = 6 -CS_PARTIAL_FLUSH = 7 -VGT_STREAMOUT_SYNC = 8 -Reserved_0x09 = 9 -VGT_STREAMOUT_RESET = 10 -END_OF_PIPE_INCR_DE = 11 -END_OF_PIPE_IB_END = 12 -RST_PIX_CNT = 13 -BREAK_BATCH = 14 -VS_PARTIAL_FLUSH = 15 -PS_PARTIAL_FLUSH = 16 -FLUSH_HS_OUTPUT = 17 -FLUSH_DFSM = 18 -RESET_TO_LOWEST_VGT = 19 -CACHE_FLUSH_AND_INV_TS_EVENT = 20 -ZPASS_DONE = 21 -CACHE_FLUSH_AND_INV_EVENT = 22 -PERFCOUNTER_START = 23 -PERFCOUNTER_STOP = 24 -PIPELINESTAT_START = 25 -PIPELINESTAT_STOP = 26 -PERFCOUNTER_SAMPLE = 27 -Available_0x1c = 28 -Available_0x1d = 29 -SAMPLE_PIPELINESTAT = 30 -SO_VGTSTREAMOUT_FLUSH = 31 -SAMPLE_STREAMOUTSTATS = 32 -RESET_VTX_CNT = 33 -BLOCK_CONTEXT_DONE = 34 -CS_CONTEXT_DONE = 35 -VGT_FLUSH = 36 -TGID_ROLLOVER = 37 -SQ_NON_EVENT = 38 -SC_SEND_DB_VPZ = 39 -BOTTOM_OF_PIPE_TS = 40 -FLUSH_SX_TS = 41 -DB_CACHE_FLUSH_AND_INV = 42 -FLUSH_AND_INV_DB_DATA_TS = 43 -FLUSH_AND_INV_DB_META = 44 -FLUSH_AND_INV_CB_DATA_TS = 45 -FLUSH_AND_INV_CB_META = 46 -CS_DONE = 47 -PS_DONE = 48 -FLUSH_AND_INV_CB_PIXEL_DATA = 49 -SX_CB_RAT_ACK_REQUEST = 50 -THREAD_TRACE_START = 51 -THREAD_TRACE_STOP = 52 -THREAD_TRACE_MARKER = 53 -THREAD_TRACE_FLUSH = 54 -THREAD_TRACE_FINISH = 55 -PIXEL_PIPE_STAT_CONTROL = 56 -PIXEL_PIPE_STAT_DUMP = 57 -PIXEL_PIPE_STAT_RESET = 58 -CONTEXT_SUSPEND = 59 -OFFCHIP_HS_DEALLOC = 60 -ENABLE_NGG_PIPELINE = 61 -ENABLE_LEGACY_PIPELINE = 62 -Reserved_0x3f = 63 -VGT_EVENT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DMA_SWAP_MODE' -VGT_DMA_SWAP_MODE__enumvalues = { - 0: 'VGT_DMA_SWAP_NONE', - 1: 'VGT_DMA_SWAP_16_BIT', - 2: 'VGT_DMA_SWAP_32_BIT', - 3: 'VGT_DMA_SWAP_WORD', -} -VGT_DMA_SWAP_NONE = 0 -VGT_DMA_SWAP_16_BIT = 1 -VGT_DMA_SWAP_32_BIT = 2 -VGT_DMA_SWAP_WORD = 3 -VGT_DMA_SWAP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_INDEX_TYPE_MODE' -VGT_INDEX_TYPE_MODE__enumvalues = { - 0: 'VGT_INDEX_16', - 1: 'VGT_INDEX_32', - 2: 'VGT_INDEX_8', -} -VGT_INDEX_16 = 0 -VGT_INDEX_32 = 1 -VGT_INDEX_8 = 2 -VGT_INDEX_TYPE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DMA_BUF_TYPE' -VGT_DMA_BUF_TYPE__enumvalues = { - 0: 'VGT_DMA_BUF_MEM', - 1: 'VGT_DMA_BUF_RING', - 2: 'VGT_DMA_BUF_SETUP', - 3: 'VGT_DMA_PTR_UPDATE', -} -VGT_DMA_BUF_MEM = 0 -VGT_DMA_BUF_RING = 1 -VGT_DMA_BUF_SETUP = 2 -VGT_DMA_PTR_UPDATE = 3 -VGT_DMA_BUF_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_OUTPATH_SELECT' -VGT_OUTPATH_SELECT__enumvalues = { - 0: 'VGT_OUTPATH_VTX_REUSE', - 1: 'VGT_OUTPATH_TESS_EN', - 2: 'VGT_OUTPATH_PASSTHRU', - 3: 'VGT_OUTPATH_GS_BLOCK', - 4: 'VGT_OUTPATH_HS_BLOCK', - 5: 'VGT_OUTPATH_PRIM_GEN', -} -VGT_OUTPATH_VTX_REUSE = 0 -VGT_OUTPATH_TESS_EN = 1 -VGT_OUTPATH_PASSTHRU = 2 -VGT_OUTPATH_GS_BLOCK = 3 -VGT_OUTPATH_HS_BLOCK = 4 -VGT_OUTPATH_PRIM_GEN = 5 -VGT_OUTPATH_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GRP_PRIM_TYPE' -VGT_GRP_PRIM_TYPE__enumvalues = { - 0: 'VGT_GRP_3D_POINT', - 1: 'VGT_GRP_3D_LINE', - 2: 'VGT_GRP_3D_TRI', - 3: 'VGT_GRP_3D_RECT', - 4: 'VGT_GRP_3D_QUAD', - 5: 'VGT_GRP_2D_COPY_RECT_V0', - 6: 'VGT_GRP_2D_COPY_RECT_V1', - 7: 'VGT_GRP_2D_COPY_RECT_V2', - 8: 'VGT_GRP_2D_COPY_RECT_V3', - 9: 'VGT_GRP_2D_FILL_RECT', - 10: 'VGT_GRP_2D_LINE', - 11: 'VGT_GRP_2D_TRI', - 12: 'VGT_GRP_PRIM_INDEX_LINE', - 13: 'VGT_GRP_PRIM_INDEX_TRI', - 14: 'VGT_GRP_PRIM_INDEX_QUAD', - 15: 'VGT_GRP_3D_LINE_ADJ', - 16: 'VGT_GRP_3D_TRI_ADJ', - 17: 'VGT_GRP_3D_PATCH', - 18: 'VGT_GRP_2D_RECT', -} -VGT_GRP_3D_POINT = 0 -VGT_GRP_3D_LINE = 1 -VGT_GRP_3D_TRI = 2 -VGT_GRP_3D_RECT = 3 -VGT_GRP_3D_QUAD = 4 -VGT_GRP_2D_COPY_RECT_V0 = 5 -VGT_GRP_2D_COPY_RECT_V1 = 6 -VGT_GRP_2D_COPY_RECT_V2 = 7 -VGT_GRP_2D_COPY_RECT_V3 = 8 -VGT_GRP_2D_FILL_RECT = 9 -VGT_GRP_2D_LINE = 10 -VGT_GRP_2D_TRI = 11 -VGT_GRP_PRIM_INDEX_LINE = 12 -VGT_GRP_PRIM_INDEX_TRI = 13 -VGT_GRP_PRIM_INDEX_QUAD = 14 -VGT_GRP_3D_LINE_ADJ = 15 -VGT_GRP_3D_TRI_ADJ = 16 -VGT_GRP_3D_PATCH = 17 -VGT_GRP_2D_RECT = 18 -VGT_GRP_PRIM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GRP_PRIM_ORDER' -VGT_GRP_PRIM_ORDER__enumvalues = { - 0: 'VGT_GRP_LIST', - 1: 'VGT_GRP_STRIP', - 2: 'VGT_GRP_FAN', - 3: 'VGT_GRP_LOOP', - 4: 'VGT_GRP_POLYGON', -} -VGT_GRP_LIST = 0 -VGT_GRP_STRIP = 1 -VGT_GRP_FAN = 2 -VGT_GRP_LOOP = 3 -VGT_GRP_POLYGON = 4 -VGT_GRP_PRIM_ORDER = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GROUP_CONV_SEL' -VGT_GROUP_CONV_SEL__enumvalues = { - 0: 'VGT_GRP_INDEX_16', - 1: 'VGT_GRP_INDEX_32', - 2: 'VGT_GRP_UINT_16', - 3: 'VGT_GRP_UINT_32', - 4: 'VGT_GRP_SINT_16', - 5: 'VGT_GRP_SINT_32', - 6: 'VGT_GRP_FLOAT_32', - 7: 'VGT_GRP_AUTO_PRIM', - 8: 'VGT_GRP_FIX_1_23_TO_FLOAT', -} -VGT_GRP_INDEX_16 = 0 -VGT_GRP_INDEX_32 = 1 -VGT_GRP_UINT_16 = 2 -VGT_GRP_UINT_32 = 3 -VGT_GRP_SINT_16 = 4 -VGT_GRP_SINT_32 = 5 -VGT_GRP_FLOAT_32 = 6 -VGT_GRP_AUTO_PRIM = 7 -VGT_GRP_FIX_1_23_TO_FLOAT = 8 -VGT_GROUP_CONV_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GS_MODE_TYPE' -VGT_GS_MODE_TYPE__enumvalues = { - 0: 'GS_OFF', - 1: 'GS_SCENARIO_A', - 2: 'GS_SCENARIO_B', - 3: 'GS_SCENARIO_G', - 4: 'GS_SCENARIO_C', - 5: 'SPRITE_EN', -} -GS_OFF = 0 -GS_SCENARIO_A = 1 -GS_SCENARIO_B = 2 -GS_SCENARIO_G = 3 -GS_SCENARIO_C = 4 -SPRITE_EN = 5 -VGT_GS_MODE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GS_CUT_MODE' -VGT_GS_CUT_MODE__enumvalues = { - 0: 'GS_CUT_1024', - 1: 'GS_CUT_512', - 2: 'GS_CUT_256', - 3: 'GS_CUT_128', -} -GS_CUT_1024 = 0 -GS_CUT_512 = 1 -GS_CUT_256 = 2 -GS_CUT_128 = 3 -VGT_GS_CUT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GS_OUTPRIM_TYPE' -VGT_GS_OUTPRIM_TYPE__enumvalues = { - 0: 'POINTLIST', - 1: 'LINESTRIP', - 2: 'TRISTRIP', - 3: 'RECTLIST', -} -POINTLIST = 0 -LINESTRIP = 1 -TRISTRIP = 2 -RECTLIST = 3 -VGT_GS_OUTPRIM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_CACHE_INVALID_MODE' -VGT_CACHE_INVALID_MODE__enumvalues = { - 0: 'VC_ONLY', - 1: 'TC_ONLY', - 2: 'VC_AND_TC', -} -VC_ONLY = 0 -TC_ONLY = 1 -VC_AND_TC = 2 -VGT_CACHE_INVALID_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_TESS_TYPE' -VGT_TESS_TYPE__enumvalues = { - 0: 'TESS_ISOLINE', - 1: 'TESS_TRIANGLE', - 2: 'TESS_QUAD', -} -TESS_ISOLINE = 0 -TESS_TRIANGLE = 1 -TESS_QUAD = 2 -VGT_TESS_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_TESS_PARTITION' -VGT_TESS_PARTITION__enumvalues = { - 0: 'PART_INTEGER', - 1: 'PART_POW2', - 2: 'PART_FRAC_ODD', - 3: 'PART_FRAC_EVEN', -} -PART_INTEGER = 0 -PART_POW2 = 1 -PART_FRAC_ODD = 2 -PART_FRAC_EVEN = 3 -VGT_TESS_PARTITION = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_TESS_TOPOLOGY' -VGT_TESS_TOPOLOGY__enumvalues = { - 0: 'OUTPUT_POINT', - 1: 'OUTPUT_LINE', - 2: 'OUTPUT_TRIANGLE_CW', - 3: 'OUTPUT_TRIANGLE_CCW', -} -OUTPUT_POINT = 0 -OUTPUT_LINE = 1 -OUTPUT_TRIANGLE_CW = 2 -OUTPUT_TRIANGLE_CCW = 3 -VGT_TESS_TOPOLOGY = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_RDREQ_POLICY' -VGT_RDREQ_POLICY__enumvalues = { - 0: 'VGT_POLICY_LRU', - 1: 'VGT_POLICY_STREAM', -} -VGT_POLICY_LRU = 0 -VGT_POLICY_STREAM = 1 -VGT_RDREQ_POLICY = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DIST_MODE' -VGT_DIST_MODE__enumvalues = { - 0: 'NO_DIST', - 1: 'PATCHES', - 2: 'DONUTS', - 3: 'TRAPEZOIDS', -} -NO_DIST = 0 -PATCHES = 1 -DONUTS = 2 -TRAPEZOIDS = 3 -VGT_DIST_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_LS_EN' -VGT_STAGES_LS_EN__enumvalues = { - 0: 'LS_STAGE_OFF', - 1: 'LS_STAGE_ON', - 2: 'CS_STAGE_ON', - 3: 'RESERVED_LS', -} -LS_STAGE_OFF = 0 -LS_STAGE_ON = 1 -CS_STAGE_ON = 2 -RESERVED_LS = 3 -VGT_STAGES_LS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_HS_EN' -VGT_STAGES_HS_EN__enumvalues = { - 0: 'HS_STAGE_OFF', - 1: 'HS_STAGE_ON', -} -HS_STAGE_OFF = 0 -HS_STAGE_ON = 1 -VGT_STAGES_HS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_ES_EN' -VGT_STAGES_ES_EN__enumvalues = { - 0: 'ES_STAGE_OFF', - 1: 'ES_STAGE_DS', - 2: 'ES_STAGE_REAL', - 3: 'RESERVED_ES', -} -ES_STAGE_OFF = 0 -ES_STAGE_DS = 1 -ES_STAGE_REAL = 2 -RESERVED_ES = 3 -VGT_STAGES_ES_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_GS_EN' -VGT_STAGES_GS_EN__enumvalues = { - 0: 'GS_STAGE_OFF', - 1: 'GS_STAGE_ON', -} -GS_STAGE_OFF = 0 -GS_STAGE_ON = 1 -VGT_STAGES_GS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_VS_EN' -VGT_STAGES_VS_EN__enumvalues = { - 0: 'VS_STAGE_REAL', - 1: 'VS_STAGE_DS', - 2: 'VS_STAGE_COPY_SHADER', - 3: 'RESERVED_VS', -} -VS_STAGE_REAL = 0 -VS_STAGE_DS = 1 -VS_STAGE_COPY_SHADER = 2 -RESERVED_VS = 3 -VGT_STAGES_VS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_PERFCOUNT_SELECT' -VGT_PERFCOUNT_SELECT__enumvalues = { - 0: 'vgt_perf_VGT_SPI_ESTHREAD_EVENT_WINDOW_ACTIVE', - 1: 'vgt_perf_VGT_SPI_ESVERT_VALID', - 2: 'vgt_perf_VGT_SPI_ESVERT_EOV', - 3: 'vgt_perf_VGT_SPI_ESVERT_STALLED', - 4: 'vgt_perf_VGT_SPI_ESVERT_STARVED_BUSY', - 5: 'vgt_perf_VGT_SPI_ESVERT_STARVED_IDLE', - 6: 'vgt_perf_VGT_SPI_ESVERT_STATIC', - 7: 'vgt_perf_VGT_SPI_ESTHREAD_IS_EVENT', - 8: 'vgt_perf_VGT_SPI_ESTHREAD_SEND', - 9: 'vgt_perf_VGT_SPI_GSPRIM_VALID', - 10: 'vgt_perf_VGT_SPI_GSPRIM_EOV', - 11: 'vgt_perf_VGT_SPI_GSPRIM_CONT', - 12: 'vgt_perf_VGT_SPI_GSPRIM_STALLED', - 13: 'vgt_perf_VGT_SPI_GSPRIM_STARVED_BUSY', - 14: 'vgt_perf_VGT_SPI_GSPRIM_STARVED_IDLE', - 15: 'vgt_perf_VGT_SPI_GSPRIM_STATIC', - 16: 'vgt_perf_VGT_SPI_GSTHREAD_EVENT_WINDOW_ACTIVE', - 17: 'vgt_perf_VGT_SPI_GSTHREAD_IS_EVENT', - 18: 'vgt_perf_VGT_SPI_GSTHREAD_SEND', - 19: 'vgt_perf_VGT_SPI_VSTHREAD_EVENT_WINDOW_ACTIVE', - 20: 'vgt_perf_VGT_SPI_VSVERT_SEND', - 21: 'vgt_perf_VGT_SPI_VSVERT_EOV', - 22: 'vgt_perf_VGT_SPI_VSVERT_STALLED', - 23: 'vgt_perf_VGT_SPI_VSVERT_STARVED_BUSY', - 24: 'vgt_perf_VGT_SPI_VSVERT_STARVED_IDLE', - 25: 'vgt_perf_VGT_SPI_VSVERT_STATIC', - 26: 'vgt_perf_VGT_SPI_VSTHREAD_IS_EVENT', - 27: 'vgt_perf_VGT_SPI_VSTHREAD_SEND', - 28: 'vgt_perf_VGT_PA_EVENT_WINDOW_ACTIVE', - 29: 'vgt_perf_VGT_PA_CLIPV_SEND', - 30: 'vgt_perf_VGT_PA_CLIPV_FIRSTVERT', - 31: 'vgt_perf_VGT_PA_CLIPV_STALLED', - 32: 'vgt_perf_VGT_PA_CLIPV_STARVED_BUSY', - 33: 'vgt_perf_VGT_PA_CLIPV_STARVED_IDLE', - 34: 'vgt_perf_VGT_PA_CLIPV_STATIC', - 35: 'vgt_perf_VGT_PA_CLIPP_SEND', - 36: 'vgt_perf_VGT_PA_CLIPP_EOP', - 37: 'vgt_perf_VGT_PA_CLIPP_IS_EVENT', - 38: 'vgt_perf_VGT_PA_CLIPP_NULL_PRIM', - 39: 'vgt_perf_VGT_PA_CLIPP_NEW_VTX_VECT', - 40: 'vgt_perf_VGT_PA_CLIPP_STALLED', - 41: 'vgt_perf_VGT_PA_CLIPP_STARVED_BUSY', - 42: 'vgt_perf_VGT_PA_CLIPP_STARVED_IDLE', - 43: 'vgt_perf_VGT_PA_CLIPP_STATIC', - 44: 'vgt_perf_VGT_PA_CLIPS_SEND', - 45: 'vgt_perf_VGT_PA_CLIPS_STALLED', - 46: 'vgt_perf_VGT_PA_CLIPS_STARVED_BUSY', - 47: 'vgt_perf_VGT_PA_CLIPS_STARVED_IDLE', - 48: 'vgt_perf_VGT_PA_CLIPS_STATIC', - 49: 'vgt_perf_vsvert_ds_send', - 50: 'vgt_perf_vsvert_api_send', - 51: 'vgt_perf_hs_tif_stall', - 52: 'vgt_perf_hs_input_stall', - 53: 'vgt_perf_hs_interface_stall', - 54: 'vgt_perf_hs_tfm_stall', - 55: 'vgt_perf_te11_starved', - 56: 'vgt_perf_gs_event_stall', - 57: 'vgt_perf_vgt_pa_clipp_send_not_event', - 58: 'vgt_perf_vgt_pa_clipp_valid_prim', - 59: 'vgt_perf_reused_es_indices', - 60: 'vgt_perf_vs_cache_hits', - 61: 'vgt_perf_gs_cache_hits', - 62: 'vgt_perf_ds_cache_hits', - 63: 'vgt_perf_total_cache_hits', - 64: 'vgt_perf_vgt_busy', - 65: 'vgt_perf_vgt_gs_busy', - 66: 'vgt_perf_esvert_stalled_es_tbl', - 67: 'vgt_perf_esvert_stalled_gs_tbl', - 68: 'vgt_perf_esvert_stalled_gs_event', - 69: 'vgt_perf_esvert_stalled_gsprim', - 70: 'vgt_perf_gsprim_stalled_es_tbl', - 71: 'vgt_perf_gsprim_stalled_gs_tbl', - 72: 'vgt_perf_gsprim_stalled_gs_event', - 73: 'vgt_perf_gsprim_stalled_esvert', - 74: 'vgt_perf_esthread_stalled_es_rb_full', - 75: 'vgt_perf_esthread_stalled_spi_bp', - 76: 'vgt_perf_counters_avail_stalled', - 77: 'vgt_perf_gs_rb_space_avail_stalled', - 78: 'vgt_perf_gs_issue_rtr_stalled', - 79: 'vgt_perf_gsthread_stalled', - 80: 'vgt_perf_strmout_stalled', - 81: 'vgt_perf_wait_for_es_done_stalled', - 82: 'vgt_perf_cm_stalled_by_gog', - 83: 'vgt_perf_cm_reading_stalled', - 84: 'vgt_perf_cm_stalled_by_gsfetch_done', - 85: 'vgt_perf_gog_vs_tbl_stalled', - 86: 'vgt_perf_gog_out_indx_stalled', - 87: 'vgt_perf_gog_out_prim_stalled', - 88: 'vgt_perf_waveid_stalled', - 89: 'vgt_perf_gog_busy', - 90: 'vgt_perf_reused_vs_indices', - 91: 'vgt_perf_sclk_reg_vld_event', - 92: 'vgt_perf_vs_conflicting_indices', - 93: 'vgt_perf_sclk_core_vld_event', - 94: 'vgt_perf_hswave_stalled', - 95: 'vgt_perf_sclk_gs_vld_event', - 96: 'vgt_perf_VGT_SPI_LSVERT_VALID', - 97: 'vgt_perf_VGT_SPI_LSVERT_EOV', - 98: 'vgt_perf_VGT_SPI_LSVERT_STALLED', - 99: 'vgt_perf_VGT_SPI_LSVERT_STARVED_BUSY', - 100: 'vgt_perf_VGT_SPI_LSVERT_STARVED_IDLE', - 101: 'vgt_perf_VGT_SPI_LSVERT_STATIC', - 102: 'vgt_perf_VGT_SPI_LSWAVE_EVENT_WINDOW_ACTIVE', - 103: 'vgt_perf_VGT_SPI_LSWAVE_IS_EVENT', - 104: 'vgt_perf_VGT_SPI_LSWAVE_SEND', - 105: 'vgt_perf_VGT_SPI_HSVERT_VALID', - 106: 'vgt_perf_VGT_SPI_HSVERT_EOV', - 107: 'vgt_perf_VGT_SPI_HSVERT_STALLED', - 108: 'vgt_perf_VGT_SPI_HSVERT_STARVED_BUSY', - 109: 'vgt_perf_VGT_SPI_HSVERT_STARVED_IDLE', - 110: 'vgt_perf_VGT_SPI_HSVERT_STATIC', - 111: 'vgt_perf_VGT_SPI_HSWAVE_EVENT_WINDOW_ACTIVE', - 112: 'vgt_perf_VGT_SPI_HSWAVE_IS_EVENT', - 113: 'vgt_perf_VGT_SPI_HSWAVE_SEND', - 114: 'vgt_perf_ds_prims', - 115: 'vgt_perf_ds_RESERVED', - 116: 'vgt_perf_ls_thread_groups', - 117: 'vgt_perf_hs_thread_groups', - 118: 'vgt_perf_es_thread_groups', - 119: 'vgt_perf_vs_thread_groups', - 120: 'vgt_perf_ls_done_latency', - 121: 'vgt_perf_hs_done_latency', - 122: 'vgt_perf_es_done_latency', - 123: 'vgt_perf_gs_done_latency', - 124: 'vgt_perf_vgt_hs_busy', - 125: 'vgt_perf_vgt_te11_busy', - 126: 'vgt_perf_ls_flush', - 127: 'vgt_perf_hs_flush', - 128: 'vgt_perf_es_flush', - 129: 'vgt_perf_vgt_pa_clipp_eopg', - 130: 'vgt_perf_ls_done', - 131: 'vgt_perf_hs_done', - 132: 'vgt_perf_es_done', - 133: 'vgt_perf_gs_done', - 134: 'vgt_perf_vsfetch_done', - 135: 'vgt_perf_gs_done_received', - 136: 'vgt_perf_es_ring_high_water_mark', - 137: 'vgt_perf_gs_ring_high_water_mark', - 138: 'vgt_perf_vs_table_high_water_mark', - 139: 'vgt_perf_hs_tgs_active_high_water_mark', - 140: 'vgt_perf_pa_clipp_dealloc', - 141: 'vgt_perf_cut_mem_flush_stalled', - 142: 'vgt_perf_vsvert_work_received', - 143: 'vgt_perf_vgt_pa_clipp_starved_after_work', - 144: 'vgt_perf_te11_con_starved_after_work', - 145: 'vgt_perf_hs_waiting_on_ls_done_stall', - 146: 'vgt_spi_vsvert_valid', -} -vgt_perf_VGT_SPI_ESTHREAD_EVENT_WINDOW_ACTIVE = 0 -vgt_perf_VGT_SPI_ESVERT_VALID = 1 -vgt_perf_VGT_SPI_ESVERT_EOV = 2 -vgt_perf_VGT_SPI_ESVERT_STALLED = 3 -vgt_perf_VGT_SPI_ESVERT_STARVED_BUSY = 4 -vgt_perf_VGT_SPI_ESVERT_STARVED_IDLE = 5 -vgt_perf_VGT_SPI_ESVERT_STATIC = 6 -vgt_perf_VGT_SPI_ESTHREAD_IS_EVENT = 7 -vgt_perf_VGT_SPI_ESTHREAD_SEND = 8 -vgt_perf_VGT_SPI_GSPRIM_VALID = 9 -vgt_perf_VGT_SPI_GSPRIM_EOV = 10 -vgt_perf_VGT_SPI_GSPRIM_CONT = 11 -vgt_perf_VGT_SPI_GSPRIM_STALLED = 12 -vgt_perf_VGT_SPI_GSPRIM_STARVED_BUSY = 13 -vgt_perf_VGT_SPI_GSPRIM_STARVED_IDLE = 14 -vgt_perf_VGT_SPI_GSPRIM_STATIC = 15 -vgt_perf_VGT_SPI_GSTHREAD_EVENT_WINDOW_ACTIVE = 16 -vgt_perf_VGT_SPI_GSTHREAD_IS_EVENT = 17 -vgt_perf_VGT_SPI_GSTHREAD_SEND = 18 -vgt_perf_VGT_SPI_VSTHREAD_EVENT_WINDOW_ACTIVE = 19 -vgt_perf_VGT_SPI_VSVERT_SEND = 20 -vgt_perf_VGT_SPI_VSVERT_EOV = 21 -vgt_perf_VGT_SPI_VSVERT_STALLED = 22 -vgt_perf_VGT_SPI_VSVERT_STARVED_BUSY = 23 -vgt_perf_VGT_SPI_VSVERT_STARVED_IDLE = 24 -vgt_perf_VGT_SPI_VSVERT_STATIC = 25 -vgt_perf_VGT_SPI_VSTHREAD_IS_EVENT = 26 -vgt_perf_VGT_SPI_VSTHREAD_SEND = 27 -vgt_perf_VGT_PA_EVENT_WINDOW_ACTIVE = 28 -vgt_perf_VGT_PA_CLIPV_SEND = 29 -vgt_perf_VGT_PA_CLIPV_FIRSTVERT = 30 -vgt_perf_VGT_PA_CLIPV_STALLED = 31 -vgt_perf_VGT_PA_CLIPV_STARVED_BUSY = 32 -vgt_perf_VGT_PA_CLIPV_STARVED_IDLE = 33 -vgt_perf_VGT_PA_CLIPV_STATIC = 34 -vgt_perf_VGT_PA_CLIPP_SEND = 35 -vgt_perf_VGT_PA_CLIPP_EOP = 36 -vgt_perf_VGT_PA_CLIPP_IS_EVENT = 37 -vgt_perf_VGT_PA_CLIPP_NULL_PRIM = 38 -vgt_perf_VGT_PA_CLIPP_NEW_VTX_VECT = 39 -vgt_perf_VGT_PA_CLIPP_STALLED = 40 -vgt_perf_VGT_PA_CLIPP_STARVED_BUSY = 41 -vgt_perf_VGT_PA_CLIPP_STARVED_IDLE = 42 -vgt_perf_VGT_PA_CLIPP_STATIC = 43 -vgt_perf_VGT_PA_CLIPS_SEND = 44 -vgt_perf_VGT_PA_CLIPS_STALLED = 45 -vgt_perf_VGT_PA_CLIPS_STARVED_BUSY = 46 -vgt_perf_VGT_PA_CLIPS_STARVED_IDLE = 47 -vgt_perf_VGT_PA_CLIPS_STATIC = 48 -vgt_perf_vsvert_ds_send = 49 -vgt_perf_vsvert_api_send = 50 -vgt_perf_hs_tif_stall = 51 -vgt_perf_hs_input_stall = 52 -vgt_perf_hs_interface_stall = 53 -vgt_perf_hs_tfm_stall = 54 -vgt_perf_te11_starved = 55 -vgt_perf_gs_event_stall = 56 -vgt_perf_vgt_pa_clipp_send_not_event = 57 -vgt_perf_vgt_pa_clipp_valid_prim = 58 -vgt_perf_reused_es_indices = 59 -vgt_perf_vs_cache_hits = 60 -vgt_perf_gs_cache_hits = 61 -vgt_perf_ds_cache_hits = 62 -vgt_perf_total_cache_hits = 63 -vgt_perf_vgt_busy = 64 -vgt_perf_vgt_gs_busy = 65 -vgt_perf_esvert_stalled_es_tbl = 66 -vgt_perf_esvert_stalled_gs_tbl = 67 -vgt_perf_esvert_stalled_gs_event = 68 -vgt_perf_esvert_stalled_gsprim = 69 -vgt_perf_gsprim_stalled_es_tbl = 70 -vgt_perf_gsprim_stalled_gs_tbl = 71 -vgt_perf_gsprim_stalled_gs_event = 72 -vgt_perf_gsprim_stalled_esvert = 73 -vgt_perf_esthread_stalled_es_rb_full = 74 -vgt_perf_esthread_stalled_spi_bp = 75 -vgt_perf_counters_avail_stalled = 76 -vgt_perf_gs_rb_space_avail_stalled = 77 -vgt_perf_gs_issue_rtr_stalled = 78 -vgt_perf_gsthread_stalled = 79 -vgt_perf_strmout_stalled = 80 -vgt_perf_wait_for_es_done_stalled = 81 -vgt_perf_cm_stalled_by_gog = 82 -vgt_perf_cm_reading_stalled = 83 -vgt_perf_cm_stalled_by_gsfetch_done = 84 -vgt_perf_gog_vs_tbl_stalled = 85 -vgt_perf_gog_out_indx_stalled = 86 -vgt_perf_gog_out_prim_stalled = 87 -vgt_perf_waveid_stalled = 88 -vgt_perf_gog_busy = 89 -vgt_perf_reused_vs_indices = 90 -vgt_perf_sclk_reg_vld_event = 91 -vgt_perf_vs_conflicting_indices = 92 -vgt_perf_sclk_core_vld_event = 93 -vgt_perf_hswave_stalled = 94 -vgt_perf_sclk_gs_vld_event = 95 -vgt_perf_VGT_SPI_LSVERT_VALID = 96 -vgt_perf_VGT_SPI_LSVERT_EOV = 97 -vgt_perf_VGT_SPI_LSVERT_STALLED = 98 -vgt_perf_VGT_SPI_LSVERT_STARVED_BUSY = 99 -vgt_perf_VGT_SPI_LSVERT_STARVED_IDLE = 100 -vgt_perf_VGT_SPI_LSVERT_STATIC = 101 -vgt_perf_VGT_SPI_LSWAVE_EVENT_WINDOW_ACTIVE = 102 -vgt_perf_VGT_SPI_LSWAVE_IS_EVENT = 103 -vgt_perf_VGT_SPI_LSWAVE_SEND = 104 -vgt_perf_VGT_SPI_HSVERT_VALID = 105 -vgt_perf_VGT_SPI_HSVERT_EOV = 106 -vgt_perf_VGT_SPI_HSVERT_STALLED = 107 -vgt_perf_VGT_SPI_HSVERT_STARVED_BUSY = 108 -vgt_perf_VGT_SPI_HSVERT_STARVED_IDLE = 109 -vgt_perf_VGT_SPI_HSVERT_STATIC = 110 -vgt_perf_VGT_SPI_HSWAVE_EVENT_WINDOW_ACTIVE = 111 -vgt_perf_VGT_SPI_HSWAVE_IS_EVENT = 112 -vgt_perf_VGT_SPI_HSWAVE_SEND = 113 -vgt_perf_ds_prims = 114 -vgt_perf_ds_RESERVED = 115 -vgt_perf_ls_thread_groups = 116 -vgt_perf_hs_thread_groups = 117 -vgt_perf_es_thread_groups = 118 -vgt_perf_vs_thread_groups = 119 -vgt_perf_ls_done_latency = 120 -vgt_perf_hs_done_latency = 121 -vgt_perf_es_done_latency = 122 -vgt_perf_gs_done_latency = 123 -vgt_perf_vgt_hs_busy = 124 -vgt_perf_vgt_te11_busy = 125 -vgt_perf_ls_flush = 126 -vgt_perf_hs_flush = 127 -vgt_perf_es_flush = 128 -vgt_perf_vgt_pa_clipp_eopg = 129 -vgt_perf_ls_done = 130 -vgt_perf_hs_done = 131 -vgt_perf_es_done = 132 -vgt_perf_gs_done = 133 -vgt_perf_vsfetch_done = 134 -vgt_perf_gs_done_received = 135 -vgt_perf_es_ring_high_water_mark = 136 -vgt_perf_gs_ring_high_water_mark = 137 -vgt_perf_vs_table_high_water_mark = 138 -vgt_perf_hs_tgs_active_high_water_mark = 139 -vgt_perf_pa_clipp_dealloc = 140 -vgt_perf_cut_mem_flush_stalled = 141 -vgt_perf_vsvert_work_received = 142 -vgt_perf_vgt_pa_clipp_starved_after_work = 143 -vgt_perf_te11_con_starved_after_work = 144 -vgt_perf_hs_waiting_on_ls_done_stall = 145 -vgt_spi_vsvert_valid = 146 -VGT_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'IA_PERFCOUNT_SELECT' -IA_PERFCOUNT_SELECT__enumvalues = { - 0: 'ia_perf_GRP_INPUT_EVENT_WINDOW_ACTIVE', - 1: 'ia_perf_dma_data_fifo_full', - 2: 'ia_perf_RESERVED1', - 3: 'ia_perf_RESERVED2', - 4: 'ia_perf_RESERVED3', - 5: 'ia_perf_RESERVED4', - 6: 'ia_perf_RESERVED5', - 7: 'ia_perf_MC_LAT_BIN_0', - 8: 'ia_perf_MC_LAT_BIN_1', - 9: 'ia_perf_MC_LAT_BIN_2', - 10: 'ia_perf_MC_LAT_BIN_3', - 11: 'ia_perf_MC_LAT_BIN_4', - 12: 'ia_perf_MC_LAT_BIN_5', - 13: 'ia_perf_MC_LAT_BIN_6', - 14: 'ia_perf_MC_LAT_BIN_7', - 15: 'ia_perf_ia_busy', - 16: 'ia_perf_ia_sclk_reg_vld_event', - 17: 'ia_perf_RESERVED6', - 18: 'ia_perf_ia_sclk_core_vld_event', - 19: 'ia_perf_RESERVED7', - 20: 'ia_perf_ia_dma_return', - 21: 'ia_perf_ia_stalled', - 22: 'ia_perf_shift_starved_pipe0_event', - 23: 'ia_perf_shift_starved_pipe1_event', -} -ia_perf_GRP_INPUT_EVENT_WINDOW_ACTIVE = 0 -ia_perf_dma_data_fifo_full = 1 -ia_perf_RESERVED1 = 2 -ia_perf_RESERVED2 = 3 -ia_perf_RESERVED3 = 4 -ia_perf_RESERVED4 = 5 -ia_perf_RESERVED5 = 6 -ia_perf_MC_LAT_BIN_0 = 7 -ia_perf_MC_LAT_BIN_1 = 8 -ia_perf_MC_LAT_BIN_2 = 9 -ia_perf_MC_LAT_BIN_3 = 10 -ia_perf_MC_LAT_BIN_4 = 11 -ia_perf_MC_LAT_BIN_5 = 12 -ia_perf_MC_LAT_BIN_6 = 13 -ia_perf_MC_LAT_BIN_7 = 14 -ia_perf_ia_busy = 15 -ia_perf_ia_sclk_reg_vld_event = 16 -ia_perf_RESERVED6 = 17 -ia_perf_ia_sclk_core_vld_event = 18 -ia_perf_RESERVED7 = 19 -ia_perf_ia_dma_return = 20 -ia_perf_ia_stalled = 21 -ia_perf_shift_starved_pipe0_event = 22 -ia_perf_shift_starved_pipe1_event = 23 -IA_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'WD_PERFCOUNT_SELECT' -WD_PERFCOUNT_SELECT__enumvalues = { - 0: 'wd_perf_RBIU_FIFOS_EVENT_WINDOW_ACTIVE', - 1: 'wd_perf_RBIU_DR_FIFO_STARVED', - 2: 'wd_perf_RBIU_DR_FIFO_STALLED', - 3: 'wd_perf_RBIU_DI_FIFO_STARVED', - 4: 'wd_perf_RBIU_DI_FIFO_STALLED', - 5: 'wd_perf_wd_busy', - 6: 'wd_perf_wd_sclk_reg_vld_event', - 7: 'wd_perf_wd_sclk_input_vld_event', - 8: 'wd_perf_wd_sclk_core_vld_event', - 9: 'wd_perf_wd_stalled', - 10: 'wd_perf_inside_tf_bin_0', - 11: 'wd_perf_inside_tf_bin_1', - 12: 'wd_perf_inside_tf_bin_2', - 13: 'wd_perf_inside_tf_bin_3', - 14: 'wd_perf_inside_tf_bin_4', - 15: 'wd_perf_inside_tf_bin_5', - 16: 'wd_perf_inside_tf_bin_6', - 17: 'wd_perf_inside_tf_bin_7', - 18: 'wd_perf_inside_tf_bin_8', - 19: 'wd_perf_tfreq_lat_bin_0', - 20: 'wd_perf_tfreq_lat_bin_1', - 21: 'wd_perf_tfreq_lat_bin_2', - 22: 'wd_perf_tfreq_lat_bin_3', - 23: 'wd_perf_tfreq_lat_bin_4', - 24: 'wd_perf_tfreq_lat_bin_5', - 25: 'wd_perf_tfreq_lat_bin_6', - 26: 'wd_perf_tfreq_lat_bin_7', - 27: 'wd_starved_on_hs_done', - 28: 'wd_perf_se0_hs_done_latency', - 29: 'wd_perf_se1_hs_done_latency', - 30: 'wd_perf_se2_hs_done_latency', - 31: 'wd_perf_se3_hs_done_latency', - 32: 'wd_perf_hs_done_se0', - 33: 'wd_perf_hs_done_se1', - 34: 'wd_perf_hs_done_se2', - 35: 'wd_perf_hs_done_se3', - 36: 'wd_perf_null_patches', -} -wd_perf_RBIU_FIFOS_EVENT_WINDOW_ACTIVE = 0 -wd_perf_RBIU_DR_FIFO_STARVED = 1 -wd_perf_RBIU_DR_FIFO_STALLED = 2 -wd_perf_RBIU_DI_FIFO_STARVED = 3 -wd_perf_RBIU_DI_FIFO_STALLED = 4 -wd_perf_wd_busy = 5 -wd_perf_wd_sclk_reg_vld_event = 6 -wd_perf_wd_sclk_input_vld_event = 7 -wd_perf_wd_sclk_core_vld_event = 8 -wd_perf_wd_stalled = 9 -wd_perf_inside_tf_bin_0 = 10 -wd_perf_inside_tf_bin_1 = 11 -wd_perf_inside_tf_bin_2 = 12 -wd_perf_inside_tf_bin_3 = 13 -wd_perf_inside_tf_bin_4 = 14 -wd_perf_inside_tf_bin_5 = 15 -wd_perf_inside_tf_bin_6 = 16 -wd_perf_inside_tf_bin_7 = 17 -wd_perf_inside_tf_bin_8 = 18 -wd_perf_tfreq_lat_bin_0 = 19 -wd_perf_tfreq_lat_bin_1 = 20 -wd_perf_tfreq_lat_bin_2 = 21 -wd_perf_tfreq_lat_bin_3 = 22 -wd_perf_tfreq_lat_bin_4 = 23 -wd_perf_tfreq_lat_bin_5 = 24 -wd_perf_tfreq_lat_bin_6 = 25 -wd_perf_tfreq_lat_bin_7 = 26 -wd_starved_on_hs_done = 27 -wd_perf_se0_hs_done_latency = 28 -wd_perf_se1_hs_done_latency = 29 -wd_perf_se2_hs_done_latency = 30 -wd_perf_se3_hs_done_latency = 31 -wd_perf_hs_done_se0 = 32 -wd_perf_hs_done_se1 = 33 -wd_perf_hs_done_se2 = 34 -wd_perf_hs_done_se3 = 35 -wd_perf_null_patches = 36 -WD_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'WD_IA_DRAW_TYPE' -WD_IA_DRAW_TYPE__enumvalues = { - 0: 'WD_IA_DRAW_TYPE_DI_MM0', - 1: 'WD_IA_DRAW_TYPE_REG_XFER', - 2: 'WD_IA_DRAW_TYPE_EVENT_INIT', - 3: 'WD_IA_DRAW_TYPE_EVENT_ADDR', - 4: 'WD_IA_DRAW_TYPE_MIN_INDX', - 5: 'WD_IA_DRAW_TYPE_MAX_INDX', - 6: 'WD_IA_DRAW_TYPE_INDX_OFF', - 7: 'WD_IA_DRAW_TYPE_IMM_DATA', -} -WD_IA_DRAW_TYPE_DI_MM0 = 0 -WD_IA_DRAW_TYPE_REG_XFER = 1 -WD_IA_DRAW_TYPE_EVENT_INIT = 2 -WD_IA_DRAW_TYPE_EVENT_ADDR = 3 -WD_IA_DRAW_TYPE_MIN_INDX = 4 -WD_IA_DRAW_TYPE_MAX_INDX = 5 -WD_IA_DRAW_TYPE_INDX_OFF = 6 -WD_IA_DRAW_TYPE_IMM_DATA = 7 -WD_IA_DRAW_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'WD_IA_DRAW_REG_XFER' -WD_IA_DRAW_REG_XFER__enumvalues = { - 0: 'WD_IA_DRAW_REG_XFER_IA_MULTI_VGT_PARAM', - 1: 'WD_IA_DRAW_REG_XFER_VGT_MULTI_PRIM_IB_RESET_EN', -} -WD_IA_DRAW_REG_XFER_IA_MULTI_VGT_PARAM = 0 -WD_IA_DRAW_REG_XFER_VGT_MULTI_PRIM_IB_RESET_EN = 1 -WD_IA_DRAW_REG_XFER = ctypes.c_uint32 # enum - -# values for enumeration 'WD_IA_DRAW_SOURCE' -WD_IA_DRAW_SOURCE__enumvalues = { - 0: 'WD_IA_DRAW_SOURCE_DMA', - 1: 'WD_IA_DRAW_SOURCE_IMMD', - 2: 'WD_IA_DRAW_SOURCE_AUTO', - 3: 'WD_IA_DRAW_SOURCE_OPAQ', -} -WD_IA_DRAW_SOURCE_DMA = 0 -WD_IA_DRAW_SOURCE_IMMD = 1 -WD_IA_DRAW_SOURCE_AUTO = 2 -WD_IA_DRAW_SOURCE_OPAQ = 3 -WD_IA_DRAW_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'GB_EDC_DED_MODE' -GB_EDC_DED_MODE__enumvalues = { - 0: 'GB_EDC_DED_MODE_LOG', - 1: 'GB_EDC_DED_MODE_HALT', - 2: 'GB_EDC_DED_MODE_INT_HALT', -} -GB_EDC_DED_MODE_LOG = 0 -GB_EDC_DED_MODE_HALT = 1 -GB_EDC_DED_MODE_INT_HALT = 2 -GB_EDC_DED_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'TA_TC_ADDR_MODES' -TA_TC_ADDR_MODES__enumvalues = { - 0: 'TA_TC_ADDR_MODE_DEFAULT', - 1: 'TA_TC_ADDR_MODE_COMP0', - 2: 'TA_TC_ADDR_MODE_COMP1', - 3: 'TA_TC_ADDR_MODE_COMP2', - 4: 'TA_TC_ADDR_MODE_COMP3', - 5: 'TA_TC_ADDR_MODE_UNALIGNED', - 6: 'TA_TC_ADDR_MODE_BORDER_COLOR', -} -TA_TC_ADDR_MODE_DEFAULT = 0 -TA_TC_ADDR_MODE_COMP0 = 1 -TA_TC_ADDR_MODE_COMP1 = 2 -TA_TC_ADDR_MODE_COMP2 = 3 -TA_TC_ADDR_MODE_COMP3 = 4 -TA_TC_ADDR_MODE_UNALIGNED = 5 -TA_TC_ADDR_MODE_BORDER_COLOR = 6 -TA_TC_ADDR_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'TA_PERFCOUNT_SEL' -TA_PERFCOUNT_SEL__enumvalues = { - 0: 'TA_PERF_SEL_NULL', - 1: 'TA_PERF_SEL_sh_fifo_busy', - 2: 'TA_PERF_SEL_sh_fifo_cmd_busy', - 3: 'TA_PERF_SEL_sh_fifo_addr_busy', - 4: 'TA_PERF_SEL_sh_fifo_data_busy', - 5: 'TA_PERF_SEL_sh_fifo_data_sfifo_busy', - 6: 'TA_PERF_SEL_sh_fifo_data_tfifo_busy', - 7: 'TA_PERF_SEL_gradient_busy', - 8: 'TA_PERF_SEL_gradient_fifo_busy', - 9: 'TA_PERF_SEL_lod_busy', - 10: 'TA_PERF_SEL_lod_fifo_busy', - 11: 'TA_PERF_SEL_addresser_busy', - 12: 'TA_PERF_SEL_addresser_fifo_busy', - 13: 'TA_PERF_SEL_aligner_busy', - 14: 'TA_PERF_SEL_write_path_busy', - 15: 'TA_PERF_SEL_ta_busy', - 16: 'TA_PERF_SEL_sq_ta_cmd_cycles', - 17: 'TA_PERF_SEL_sp_ta_addr_cycles', - 18: 'TA_PERF_SEL_sp_ta_data_cycles', - 19: 'TA_PERF_SEL_ta_fa_data_state_cycles', - 20: 'TA_PERF_SEL_sh_fifo_addr_waiting_on_cmd_cycles', - 21: 'TA_PERF_SEL_sh_fifo_cmd_waiting_on_addr_cycles', - 22: 'TA_PERF_SEL_sh_fifo_addr_starved_while_busy_cycles', - 23: 'TA_PERF_SEL_sh_fifo_cmd_starved_while_busy_cycles', - 24: 'TA_PERF_SEL_sh_fifo_data_waiting_on_data_state_cycles', - 25: 'TA_PERF_SEL_sh_fifo_data_state_waiting_on_data_cycles', - 26: 'TA_PERF_SEL_sh_fifo_data_starved_while_busy_cycles', - 27: 'TA_PERF_SEL_sh_fifo_data_state_starved_while_busy_cycles', - 28: 'TA_PERF_SEL_RESERVED_28', - 29: 'TA_PERF_SEL_RESERVED_29', - 30: 'TA_PERF_SEL_sh_fifo_addr_cycles', - 31: 'TA_PERF_SEL_sh_fifo_data_cycles', - 32: 'TA_PERF_SEL_total_wavefronts', - 33: 'TA_PERF_SEL_gradient_cycles', - 34: 'TA_PERF_SEL_walker_cycles', - 35: 'TA_PERF_SEL_aligner_cycles', - 36: 'TA_PERF_SEL_image_wavefronts', - 37: 'TA_PERF_SEL_image_read_wavefronts', - 38: 'TA_PERF_SEL_image_write_wavefronts', - 39: 'TA_PERF_SEL_image_atomic_wavefronts', - 40: 'TA_PERF_SEL_image_total_cycles', - 41: 'TA_PERF_SEL_RESERVED_41', - 42: 'TA_PERF_SEL_RESERVED_42', - 43: 'TA_PERF_SEL_RESERVED_43', - 44: 'TA_PERF_SEL_buffer_wavefronts', - 45: 'TA_PERF_SEL_buffer_read_wavefronts', - 46: 'TA_PERF_SEL_buffer_write_wavefronts', - 47: 'TA_PERF_SEL_buffer_atomic_wavefronts', - 48: 'TA_PERF_SEL_buffer_coalescable_wavefronts', - 49: 'TA_PERF_SEL_buffer_total_cycles', - 50: 'TA_PERF_SEL_buffer_coalescable_addr_multicycled_cycles', - 51: 'TA_PERF_SEL_buffer_coalescable_clamp_16kdword_multicycled_cycles', - 52: 'TA_PERF_SEL_buffer_coalesced_read_cycles', - 53: 'TA_PERF_SEL_buffer_coalesced_write_cycles', - 54: 'TA_PERF_SEL_addr_stalled_by_tc_cycles', - 55: 'TA_PERF_SEL_addr_stalled_by_td_cycles', - 56: 'TA_PERF_SEL_data_stalled_by_tc_cycles', - 57: 'TA_PERF_SEL_addresser_stalled_by_aligner_only_cycles', - 58: 'TA_PERF_SEL_addresser_stalled_cycles', - 59: 'TA_PERF_SEL_aniso_stalled_by_addresser_only_cycles', - 60: 'TA_PERF_SEL_aniso_stalled_cycles', - 61: 'TA_PERF_SEL_deriv_stalled_by_aniso_only_cycles', - 62: 'TA_PERF_SEL_deriv_stalled_cycles', - 63: 'TA_PERF_SEL_aniso_gt1_cycle_quads', - 64: 'TA_PERF_SEL_color_1_cycle_pixels', - 65: 'TA_PERF_SEL_color_2_cycle_pixels', - 66: 'TA_PERF_SEL_color_3_cycle_pixels', - 67: 'TA_PERF_SEL_color_4_cycle_pixels', - 68: 'TA_PERF_SEL_mip_1_cycle_pixels', - 69: 'TA_PERF_SEL_mip_2_cycle_pixels', - 70: 'TA_PERF_SEL_vol_1_cycle_pixels', - 71: 'TA_PERF_SEL_vol_2_cycle_pixels', - 72: 'TA_PERF_SEL_bilin_point_1_cycle_pixels', - 73: 'TA_PERF_SEL_mipmap_lod_0_samples', - 74: 'TA_PERF_SEL_mipmap_lod_1_samples', - 75: 'TA_PERF_SEL_mipmap_lod_2_samples', - 76: 'TA_PERF_SEL_mipmap_lod_3_samples', - 77: 'TA_PERF_SEL_mipmap_lod_4_samples', - 78: 'TA_PERF_SEL_mipmap_lod_5_samples', - 79: 'TA_PERF_SEL_mipmap_lod_6_samples', - 80: 'TA_PERF_SEL_mipmap_lod_7_samples', - 81: 'TA_PERF_SEL_mipmap_lod_8_samples', - 82: 'TA_PERF_SEL_mipmap_lod_9_samples', - 83: 'TA_PERF_SEL_mipmap_lod_10_samples', - 84: 'TA_PERF_SEL_mipmap_lod_11_samples', - 85: 'TA_PERF_SEL_mipmap_lod_12_samples', - 86: 'TA_PERF_SEL_mipmap_lod_13_samples', - 87: 'TA_PERF_SEL_mipmap_lod_14_samples', - 88: 'TA_PERF_SEL_mipmap_invalid_samples', - 89: 'TA_PERF_SEL_aniso_1_cycle_quads', - 90: 'TA_PERF_SEL_aniso_2_cycle_quads', - 91: 'TA_PERF_SEL_aniso_4_cycle_quads', - 92: 'TA_PERF_SEL_aniso_6_cycle_quads', - 93: 'TA_PERF_SEL_aniso_8_cycle_quads', - 94: 'TA_PERF_SEL_aniso_10_cycle_quads', - 95: 'TA_PERF_SEL_aniso_12_cycle_quads', - 96: 'TA_PERF_SEL_aniso_14_cycle_quads', - 97: 'TA_PERF_SEL_aniso_16_cycle_quads', - 98: 'TA_PERF_SEL_write_path_input_cycles', - 99: 'TA_PERF_SEL_write_path_output_cycles', - 100: 'TA_PERF_SEL_flat_wavefronts', - 101: 'TA_PERF_SEL_flat_read_wavefronts', - 102: 'TA_PERF_SEL_flat_write_wavefronts', - 103: 'TA_PERF_SEL_flat_atomic_wavefronts', - 104: 'TA_PERF_SEL_flat_coalesceable_wavefronts', - 105: 'TA_PERF_SEL_reg_sclk_vld', - 106: 'TA_PERF_SEL_local_cg_dyn_sclk_grp0_en', - 107: 'TA_PERF_SEL_local_cg_dyn_sclk_grp1_en', - 108: 'TA_PERF_SEL_local_cg_dyn_sclk_grp1_mems_en', - 109: 'TA_PERF_SEL_local_cg_dyn_sclk_grp4_en', - 110: 'TA_PERF_SEL_local_cg_dyn_sclk_grp5_en', - 111: 'TA_PERF_SEL_xnack_on_phase0', - 112: 'TA_PERF_SEL_xnack_on_phase1', - 113: 'TA_PERF_SEL_xnack_on_phase2', - 114: 'TA_PERF_SEL_xnack_on_phase3', - 115: 'TA_PERF_SEL_first_xnack_on_phase0', - 116: 'TA_PERF_SEL_first_xnack_on_phase1', - 117: 'TA_PERF_SEL_first_xnack_on_phase2', - 118: 'TA_PERF_SEL_first_xnack_on_phase3', -} -TA_PERF_SEL_NULL = 0 -TA_PERF_SEL_sh_fifo_busy = 1 -TA_PERF_SEL_sh_fifo_cmd_busy = 2 -TA_PERF_SEL_sh_fifo_addr_busy = 3 -TA_PERF_SEL_sh_fifo_data_busy = 4 -TA_PERF_SEL_sh_fifo_data_sfifo_busy = 5 -TA_PERF_SEL_sh_fifo_data_tfifo_busy = 6 -TA_PERF_SEL_gradient_busy = 7 -TA_PERF_SEL_gradient_fifo_busy = 8 -TA_PERF_SEL_lod_busy = 9 -TA_PERF_SEL_lod_fifo_busy = 10 -TA_PERF_SEL_addresser_busy = 11 -TA_PERF_SEL_addresser_fifo_busy = 12 -TA_PERF_SEL_aligner_busy = 13 -TA_PERF_SEL_write_path_busy = 14 -TA_PERF_SEL_ta_busy = 15 -TA_PERF_SEL_sq_ta_cmd_cycles = 16 -TA_PERF_SEL_sp_ta_addr_cycles = 17 -TA_PERF_SEL_sp_ta_data_cycles = 18 -TA_PERF_SEL_ta_fa_data_state_cycles = 19 -TA_PERF_SEL_sh_fifo_addr_waiting_on_cmd_cycles = 20 -TA_PERF_SEL_sh_fifo_cmd_waiting_on_addr_cycles = 21 -TA_PERF_SEL_sh_fifo_addr_starved_while_busy_cycles = 22 -TA_PERF_SEL_sh_fifo_cmd_starved_while_busy_cycles = 23 -TA_PERF_SEL_sh_fifo_data_waiting_on_data_state_cycles = 24 -TA_PERF_SEL_sh_fifo_data_state_waiting_on_data_cycles = 25 -TA_PERF_SEL_sh_fifo_data_starved_while_busy_cycles = 26 -TA_PERF_SEL_sh_fifo_data_state_starved_while_busy_cycles = 27 -TA_PERF_SEL_RESERVED_28 = 28 -TA_PERF_SEL_RESERVED_29 = 29 -TA_PERF_SEL_sh_fifo_addr_cycles = 30 -TA_PERF_SEL_sh_fifo_data_cycles = 31 -TA_PERF_SEL_total_wavefronts = 32 -TA_PERF_SEL_gradient_cycles = 33 -TA_PERF_SEL_walker_cycles = 34 -TA_PERF_SEL_aligner_cycles = 35 -TA_PERF_SEL_image_wavefronts = 36 -TA_PERF_SEL_image_read_wavefronts = 37 -TA_PERF_SEL_image_write_wavefronts = 38 -TA_PERF_SEL_image_atomic_wavefronts = 39 -TA_PERF_SEL_image_total_cycles = 40 -TA_PERF_SEL_RESERVED_41 = 41 -TA_PERF_SEL_RESERVED_42 = 42 -TA_PERF_SEL_RESERVED_43 = 43 -TA_PERF_SEL_buffer_wavefronts = 44 -TA_PERF_SEL_buffer_read_wavefronts = 45 -TA_PERF_SEL_buffer_write_wavefronts = 46 -TA_PERF_SEL_buffer_atomic_wavefronts = 47 -TA_PERF_SEL_buffer_coalescable_wavefronts = 48 -TA_PERF_SEL_buffer_total_cycles = 49 -TA_PERF_SEL_buffer_coalescable_addr_multicycled_cycles = 50 -TA_PERF_SEL_buffer_coalescable_clamp_16kdword_multicycled_cycles = 51 -TA_PERF_SEL_buffer_coalesced_read_cycles = 52 -TA_PERF_SEL_buffer_coalesced_write_cycles = 53 -TA_PERF_SEL_addr_stalled_by_tc_cycles = 54 -TA_PERF_SEL_addr_stalled_by_td_cycles = 55 -TA_PERF_SEL_data_stalled_by_tc_cycles = 56 -TA_PERF_SEL_addresser_stalled_by_aligner_only_cycles = 57 -TA_PERF_SEL_addresser_stalled_cycles = 58 -TA_PERF_SEL_aniso_stalled_by_addresser_only_cycles = 59 -TA_PERF_SEL_aniso_stalled_cycles = 60 -TA_PERF_SEL_deriv_stalled_by_aniso_only_cycles = 61 -TA_PERF_SEL_deriv_stalled_cycles = 62 -TA_PERF_SEL_aniso_gt1_cycle_quads = 63 -TA_PERF_SEL_color_1_cycle_pixels = 64 -TA_PERF_SEL_color_2_cycle_pixels = 65 -TA_PERF_SEL_color_3_cycle_pixels = 66 -TA_PERF_SEL_color_4_cycle_pixels = 67 -TA_PERF_SEL_mip_1_cycle_pixels = 68 -TA_PERF_SEL_mip_2_cycle_pixels = 69 -TA_PERF_SEL_vol_1_cycle_pixels = 70 -TA_PERF_SEL_vol_2_cycle_pixels = 71 -TA_PERF_SEL_bilin_point_1_cycle_pixels = 72 -TA_PERF_SEL_mipmap_lod_0_samples = 73 -TA_PERF_SEL_mipmap_lod_1_samples = 74 -TA_PERF_SEL_mipmap_lod_2_samples = 75 -TA_PERF_SEL_mipmap_lod_3_samples = 76 -TA_PERF_SEL_mipmap_lod_4_samples = 77 -TA_PERF_SEL_mipmap_lod_5_samples = 78 -TA_PERF_SEL_mipmap_lod_6_samples = 79 -TA_PERF_SEL_mipmap_lod_7_samples = 80 -TA_PERF_SEL_mipmap_lod_8_samples = 81 -TA_PERF_SEL_mipmap_lod_9_samples = 82 -TA_PERF_SEL_mipmap_lod_10_samples = 83 -TA_PERF_SEL_mipmap_lod_11_samples = 84 -TA_PERF_SEL_mipmap_lod_12_samples = 85 -TA_PERF_SEL_mipmap_lod_13_samples = 86 -TA_PERF_SEL_mipmap_lod_14_samples = 87 -TA_PERF_SEL_mipmap_invalid_samples = 88 -TA_PERF_SEL_aniso_1_cycle_quads = 89 -TA_PERF_SEL_aniso_2_cycle_quads = 90 -TA_PERF_SEL_aniso_4_cycle_quads = 91 -TA_PERF_SEL_aniso_6_cycle_quads = 92 -TA_PERF_SEL_aniso_8_cycle_quads = 93 -TA_PERF_SEL_aniso_10_cycle_quads = 94 -TA_PERF_SEL_aniso_12_cycle_quads = 95 -TA_PERF_SEL_aniso_14_cycle_quads = 96 -TA_PERF_SEL_aniso_16_cycle_quads = 97 -TA_PERF_SEL_write_path_input_cycles = 98 -TA_PERF_SEL_write_path_output_cycles = 99 -TA_PERF_SEL_flat_wavefronts = 100 -TA_PERF_SEL_flat_read_wavefronts = 101 -TA_PERF_SEL_flat_write_wavefronts = 102 -TA_PERF_SEL_flat_atomic_wavefronts = 103 -TA_PERF_SEL_flat_coalesceable_wavefronts = 104 -TA_PERF_SEL_reg_sclk_vld = 105 -TA_PERF_SEL_local_cg_dyn_sclk_grp0_en = 106 -TA_PERF_SEL_local_cg_dyn_sclk_grp1_en = 107 -TA_PERF_SEL_local_cg_dyn_sclk_grp1_mems_en = 108 -TA_PERF_SEL_local_cg_dyn_sclk_grp4_en = 109 -TA_PERF_SEL_local_cg_dyn_sclk_grp5_en = 110 -TA_PERF_SEL_xnack_on_phase0 = 111 -TA_PERF_SEL_xnack_on_phase1 = 112 -TA_PERF_SEL_xnack_on_phase2 = 113 -TA_PERF_SEL_xnack_on_phase3 = 114 -TA_PERF_SEL_first_xnack_on_phase0 = 115 -TA_PERF_SEL_first_xnack_on_phase1 = 116 -TA_PERF_SEL_first_xnack_on_phase2 = 117 -TA_PERF_SEL_first_xnack_on_phase3 = 118 -TA_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TD_PERFCOUNT_SEL' -TD_PERFCOUNT_SEL__enumvalues = { - 0: 'TD_PERF_SEL_none', - 1: 'TD_PERF_SEL_td_busy', - 2: 'TD_PERF_SEL_input_busy', - 3: 'TD_PERF_SEL_output_busy', - 4: 'TD_PERF_SEL_lerp_busy', - 5: 'TD_PERF_SEL_reg_sclk_vld', - 6: 'TD_PERF_SEL_local_cg_dyn_sclk_grp0_en', - 7: 'TD_PERF_SEL_local_cg_dyn_sclk_grp1_en', - 8: 'TD_PERF_SEL_local_cg_dyn_sclk_grp4_en', - 9: 'TD_PERF_SEL_local_cg_dyn_sclk_grp5_en', - 10: 'TD_PERF_SEL_tc_td_fifo_full', - 11: 'TD_PERF_SEL_constant_state_full', - 12: 'TD_PERF_SEL_sample_state_full', - 13: 'TD_PERF_SEL_output_fifo_full', - 14: 'TD_PERF_SEL_RESERVED_14', - 15: 'TD_PERF_SEL_tc_stall', - 16: 'TD_PERF_SEL_pc_stall', - 17: 'TD_PERF_SEL_gds_stall', - 18: 'TD_PERF_SEL_RESERVED_18', - 19: 'TD_PERF_SEL_RESERVED_19', - 20: 'TD_PERF_SEL_gather4_wavefront', - 21: 'TD_PERF_SEL_gather4h_wavefront', - 22: 'TD_PERF_SEL_gather4h_packed_wavefront', - 23: 'TD_PERF_SEL_gather8h_packed_wavefront', - 24: 'TD_PERF_SEL_sample_c_wavefront', - 25: 'TD_PERF_SEL_load_wavefront', - 26: 'TD_PERF_SEL_atomic_wavefront', - 27: 'TD_PERF_SEL_store_wavefront', - 28: 'TD_PERF_SEL_ldfptr_wavefront', - 29: 'TD_PERF_SEL_d16_en_wavefront', - 30: 'TD_PERF_SEL_bypass_filter_wavefront', - 31: 'TD_PERF_SEL_min_max_filter_wavefront', - 32: 'TD_PERF_SEL_coalescable_wavefront', - 33: 'TD_PERF_SEL_coalesced_phase', - 34: 'TD_PERF_SEL_four_phase_wavefront', - 35: 'TD_PERF_SEL_eight_phase_wavefront', - 36: 'TD_PERF_SEL_sixteen_phase_wavefront', - 37: 'TD_PERF_SEL_four_phase_forward_wavefront', - 38: 'TD_PERF_SEL_write_ack_wavefront', - 39: 'TD_PERF_SEL_RESERVED_39', - 40: 'TD_PERF_SEL_user_defined_border', - 41: 'TD_PERF_SEL_white_border', - 42: 'TD_PERF_SEL_opaque_black_border', - 43: 'TD_PERF_SEL_RESERVED_43', - 44: 'TD_PERF_SEL_RESERVED_44', - 45: 'TD_PERF_SEL_nack', - 46: 'TD_PERF_SEL_td_sp_traffic', - 47: 'TD_PERF_SEL_consume_gds_traffic', - 48: 'TD_PERF_SEL_addresscmd_poison', - 49: 'TD_PERF_SEL_data_poison', - 50: 'TD_PERF_SEL_start_cycle_0', - 51: 'TD_PERF_SEL_start_cycle_1', - 52: 'TD_PERF_SEL_start_cycle_2', - 53: 'TD_PERF_SEL_start_cycle_3', - 54: 'TD_PERF_SEL_null_cycle_output', - 55: 'TD_PERF_SEL_d16_data_packed', - 56: 'TD_PERF_SEL_texels_zeroed_out_by_blend_zero_prt', -} -TD_PERF_SEL_none = 0 -TD_PERF_SEL_td_busy = 1 -TD_PERF_SEL_input_busy = 2 -TD_PERF_SEL_output_busy = 3 -TD_PERF_SEL_lerp_busy = 4 -TD_PERF_SEL_reg_sclk_vld = 5 -TD_PERF_SEL_local_cg_dyn_sclk_grp0_en = 6 -TD_PERF_SEL_local_cg_dyn_sclk_grp1_en = 7 -TD_PERF_SEL_local_cg_dyn_sclk_grp4_en = 8 -TD_PERF_SEL_local_cg_dyn_sclk_grp5_en = 9 -TD_PERF_SEL_tc_td_fifo_full = 10 -TD_PERF_SEL_constant_state_full = 11 -TD_PERF_SEL_sample_state_full = 12 -TD_PERF_SEL_output_fifo_full = 13 -TD_PERF_SEL_RESERVED_14 = 14 -TD_PERF_SEL_tc_stall = 15 -TD_PERF_SEL_pc_stall = 16 -TD_PERF_SEL_gds_stall = 17 -TD_PERF_SEL_RESERVED_18 = 18 -TD_PERF_SEL_RESERVED_19 = 19 -TD_PERF_SEL_gather4_wavefront = 20 -TD_PERF_SEL_gather4h_wavefront = 21 -TD_PERF_SEL_gather4h_packed_wavefront = 22 -TD_PERF_SEL_gather8h_packed_wavefront = 23 -TD_PERF_SEL_sample_c_wavefront = 24 -TD_PERF_SEL_load_wavefront = 25 -TD_PERF_SEL_atomic_wavefront = 26 -TD_PERF_SEL_store_wavefront = 27 -TD_PERF_SEL_ldfptr_wavefront = 28 -TD_PERF_SEL_d16_en_wavefront = 29 -TD_PERF_SEL_bypass_filter_wavefront = 30 -TD_PERF_SEL_min_max_filter_wavefront = 31 -TD_PERF_SEL_coalescable_wavefront = 32 -TD_PERF_SEL_coalesced_phase = 33 -TD_PERF_SEL_four_phase_wavefront = 34 -TD_PERF_SEL_eight_phase_wavefront = 35 -TD_PERF_SEL_sixteen_phase_wavefront = 36 -TD_PERF_SEL_four_phase_forward_wavefront = 37 -TD_PERF_SEL_write_ack_wavefront = 38 -TD_PERF_SEL_RESERVED_39 = 39 -TD_PERF_SEL_user_defined_border = 40 -TD_PERF_SEL_white_border = 41 -TD_PERF_SEL_opaque_black_border = 42 -TD_PERF_SEL_RESERVED_43 = 43 -TD_PERF_SEL_RESERVED_44 = 44 -TD_PERF_SEL_nack = 45 -TD_PERF_SEL_td_sp_traffic = 46 -TD_PERF_SEL_consume_gds_traffic = 47 -TD_PERF_SEL_addresscmd_poison = 48 -TD_PERF_SEL_data_poison = 49 -TD_PERF_SEL_start_cycle_0 = 50 -TD_PERF_SEL_start_cycle_1 = 51 -TD_PERF_SEL_start_cycle_2 = 52 -TD_PERF_SEL_start_cycle_3 = 53 -TD_PERF_SEL_null_cycle_output = 54 -TD_PERF_SEL_d16_data_packed = 55 -TD_PERF_SEL_texels_zeroed_out_by_blend_zero_prt = 56 -TD_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_PERFCOUNT_SELECT' -TCP_PERFCOUNT_SELECT__enumvalues = { - 0: 'TCP_PERF_SEL_TA_TCP_ADDR_STARVE_CYCLES', - 1: 'TCP_PERF_SEL_TA_TCP_DATA_STARVE_CYCLES', - 2: 'TCP_PERF_SEL_TCP_TA_ADDR_STALL_CYCLES', - 3: 'TCP_PERF_SEL_TCP_TA_DATA_STALL_CYCLES', - 4: 'TCP_PERF_SEL_TD_TCP_STALL_CYCLES', - 5: 'TCP_PERF_SEL_TCR_TCP_STALL_CYCLES', - 6: 'TCP_PERF_SEL_LOD_STALL_CYCLES', - 7: 'TCP_PERF_SEL_READ_TAGCONFLICT_STALL_CYCLES', - 8: 'TCP_PERF_SEL_WRITE_TAGCONFLICT_STALL_CYCLES', - 9: 'TCP_PERF_SEL_ATOMIC_TAGCONFLICT_STALL_CYCLES', - 10: 'TCP_PERF_SEL_ALLOC_STALL_CYCLES', - 11: 'TCP_PERF_SEL_LFIFO_STALL_CYCLES', - 12: 'TCP_PERF_SEL_RFIFO_STALL_CYCLES', - 13: 'TCP_PERF_SEL_TCR_RDRET_STALL', - 14: 'TCP_PERF_SEL_WRITE_CONFLICT_STALL', - 15: 'TCP_PERF_SEL_HOLE_READ_STALL', - 16: 'TCP_PERF_SEL_READCONFLICT_STALL_CYCLES', - 17: 'TCP_PERF_SEL_PENDING_STALL_CYCLES', - 18: 'TCP_PERF_SEL_READFIFO_STALL_CYCLES', - 19: 'TCP_PERF_SEL_TCP_LATENCY', - 20: 'TCP_PERF_SEL_TCC_READ_REQ_LATENCY', - 21: 'TCP_PERF_SEL_TCC_WRITE_REQ_LATENCY', - 22: 'TCP_PERF_SEL_TCC_WRITE_REQ_HOLE_LATENCY', - 23: 'TCP_PERF_SEL_TCC_READ_REQ', - 24: 'TCP_PERF_SEL_TCC_WRITE_REQ', - 25: 'TCP_PERF_SEL_TCC_ATOMIC_WITH_RET_REQ', - 26: 'TCP_PERF_SEL_TCC_ATOMIC_WITHOUT_RET_REQ', - 27: 'TCP_PERF_SEL_TOTAL_LOCAL_READ', - 28: 'TCP_PERF_SEL_TOTAL_GLOBAL_READ', - 29: 'TCP_PERF_SEL_TOTAL_LOCAL_WRITE', - 30: 'TCP_PERF_SEL_TOTAL_GLOBAL_WRITE', - 31: 'TCP_PERF_SEL_TOTAL_ATOMIC_WITH_RET', - 32: 'TCP_PERF_SEL_TOTAL_ATOMIC_WITHOUT_RET', - 33: 'TCP_PERF_SEL_TOTAL_WBINVL1', - 34: 'TCP_PERF_SEL_IMG_READ_FMT_1', - 35: 'TCP_PERF_SEL_IMG_READ_FMT_8', - 36: 'TCP_PERF_SEL_IMG_READ_FMT_16', - 37: 'TCP_PERF_SEL_IMG_READ_FMT_32', - 38: 'TCP_PERF_SEL_IMG_READ_FMT_32_AS_8', - 39: 'TCP_PERF_SEL_IMG_READ_FMT_32_AS_16', - 40: 'TCP_PERF_SEL_IMG_READ_FMT_32_AS_128', - 41: 'TCP_PERF_SEL_IMG_READ_FMT_64_2_CYCLE', - 42: 'TCP_PERF_SEL_IMG_READ_FMT_64_1_CYCLE', - 43: 'TCP_PERF_SEL_IMG_READ_FMT_96', - 44: 'TCP_PERF_SEL_IMG_READ_FMT_128_4_CYCLE', - 45: 'TCP_PERF_SEL_IMG_READ_FMT_128_1_CYCLE', - 46: 'TCP_PERF_SEL_IMG_READ_FMT_BC1', - 47: 'TCP_PERF_SEL_IMG_READ_FMT_BC2', - 48: 'TCP_PERF_SEL_IMG_READ_FMT_BC3', - 49: 'TCP_PERF_SEL_IMG_READ_FMT_BC4', - 50: 'TCP_PERF_SEL_IMG_READ_FMT_BC5', - 51: 'TCP_PERF_SEL_IMG_READ_FMT_BC6', - 52: 'TCP_PERF_SEL_IMG_READ_FMT_BC7', - 53: 'TCP_PERF_SEL_IMG_READ_FMT_I8', - 54: 'TCP_PERF_SEL_IMG_READ_FMT_I16', - 55: 'TCP_PERF_SEL_IMG_READ_FMT_I32', - 56: 'TCP_PERF_SEL_IMG_READ_FMT_I32_AS_8', - 57: 'TCP_PERF_SEL_IMG_READ_FMT_I32_AS_16', - 58: 'TCP_PERF_SEL_IMG_READ_FMT_D8', - 59: 'TCP_PERF_SEL_IMG_READ_FMT_D16', - 60: 'TCP_PERF_SEL_IMG_READ_FMT_D32', - 61: 'TCP_PERF_SEL_IMG_WRITE_FMT_8', - 62: 'TCP_PERF_SEL_IMG_WRITE_FMT_16', - 63: 'TCP_PERF_SEL_IMG_WRITE_FMT_32', - 64: 'TCP_PERF_SEL_IMG_WRITE_FMT_64', - 65: 'TCP_PERF_SEL_IMG_WRITE_FMT_128', - 66: 'TCP_PERF_SEL_IMG_WRITE_FMT_D8', - 67: 'TCP_PERF_SEL_IMG_WRITE_FMT_D16', - 68: 'TCP_PERF_SEL_IMG_WRITE_FMT_D32', - 69: 'TCP_PERF_SEL_IMG_ATOMIC_WITH_RET_FMT_32', - 70: 'TCP_PERF_SEL_IMG_ATOMIC_WITHOUT_RET_FMT_32', - 71: 'TCP_PERF_SEL_IMG_ATOMIC_WITH_RET_FMT_64', - 72: 'TCP_PERF_SEL_IMG_ATOMIC_WITHOUT_RET_FMT_64', - 73: 'TCP_PERF_SEL_BUF_READ_FMT_8', - 74: 'TCP_PERF_SEL_BUF_READ_FMT_16', - 75: 'TCP_PERF_SEL_BUF_READ_FMT_32', - 76: 'TCP_PERF_SEL_BUF_WRITE_FMT_8', - 77: 'TCP_PERF_SEL_BUF_WRITE_FMT_16', - 78: 'TCP_PERF_SEL_BUF_WRITE_FMT_32', - 79: 'TCP_PERF_SEL_BUF_ATOMIC_WITH_RET_FMT_32', - 80: 'TCP_PERF_SEL_BUF_ATOMIC_WITHOUT_RET_FMT_32', - 81: 'TCP_PERF_SEL_BUF_ATOMIC_WITH_RET_FMT_64', - 82: 'TCP_PERF_SEL_BUF_ATOMIC_WITHOUT_RET_FMT_64', - 83: 'TCP_PERF_SEL_ARR_LINEAR_GENERAL', - 84: 'TCP_PERF_SEL_ARR_LINEAR_ALIGNED', - 85: 'TCP_PERF_SEL_ARR_1D_THIN1', - 86: 'TCP_PERF_SEL_ARR_1D_THICK', - 87: 'TCP_PERF_SEL_ARR_2D_THIN1', - 88: 'TCP_PERF_SEL_ARR_2D_THICK', - 89: 'TCP_PERF_SEL_ARR_2D_XTHICK', - 90: 'TCP_PERF_SEL_ARR_3D_THIN1', - 91: 'TCP_PERF_SEL_ARR_3D_THICK', - 92: 'TCP_PERF_SEL_ARR_3D_XTHICK', - 93: 'TCP_PERF_SEL_DIM_1D', - 94: 'TCP_PERF_SEL_DIM_2D', - 95: 'TCP_PERF_SEL_DIM_3D', - 96: 'TCP_PERF_SEL_DIM_1D_ARRAY', - 97: 'TCP_PERF_SEL_DIM_2D_ARRAY', - 98: 'TCP_PERF_SEL_DIM_2D_MSAA', - 99: 'TCP_PERF_SEL_DIM_2D_ARRAY_MSAA', - 100: 'TCP_PERF_SEL_DIM_CUBE_ARRAY', - 101: 'TCP_PERF_SEL_CP_TCP_INVALIDATE', - 102: 'TCP_PERF_SEL_TA_TCP_STATE_READ', - 103: 'TCP_PERF_SEL_TAGRAM0_REQ', - 104: 'TCP_PERF_SEL_TAGRAM1_REQ', - 105: 'TCP_PERF_SEL_TAGRAM2_REQ', - 106: 'TCP_PERF_SEL_TAGRAM3_REQ', - 107: 'TCP_PERF_SEL_GATE_EN1', - 108: 'TCP_PERF_SEL_GATE_EN2', - 109: 'TCP_PERF_SEL_CORE_REG_SCLK_VLD', - 110: 'TCP_PERF_SEL_TCC_REQ', - 111: 'TCP_PERF_SEL_TCC_NON_READ_REQ', - 112: 'TCP_PERF_SEL_TCC_BYPASS_READ_REQ', - 113: 'TCP_PERF_SEL_TCC_MISS_EVICT_READ_REQ', - 114: 'TCP_PERF_SEL_TCC_VOLATILE_READ_REQ', - 115: 'TCP_PERF_SEL_TCC_VOLATILE_BYPASS_READ_REQ', - 116: 'TCP_PERF_SEL_TCC_VOLATILE_MISS_EVICT_READ_REQ', - 117: 'TCP_PERF_SEL_TCC_BYPASS_WRITE_REQ', - 118: 'TCP_PERF_SEL_TCC_MISS_EVICT_WRITE_REQ', - 119: 'TCP_PERF_SEL_TCC_VOLATILE_BYPASS_WRITE_REQ', - 120: 'TCP_PERF_SEL_TCC_VOLATILE_WRITE_REQ', - 121: 'TCP_PERF_SEL_TCC_VOLATILE_MISS_EVICT_WRITE_REQ', - 122: 'TCP_PERF_SEL_TCC_BYPASS_ATOMIC_REQ', - 123: 'TCP_PERF_SEL_TCC_ATOMIC_REQ', - 124: 'TCP_PERF_SEL_TCC_VOLATILE_ATOMIC_REQ', - 125: 'TCP_PERF_SEL_TCC_DATA_BUS_BUSY', - 126: 'TCP_PERF_SEL_TOTAL_ACCESSES', - 127: 'TCP_PERF_SEL_TOTAL_READ', - 128: 'TCP_PERF_SEL_TOTAL_HIT_LRU_READ', - 129: 'TCP_PERF_SEL_TOTAL_HIT_EVICT_READ', - 130: 'TCP_PERF_SEL_TOTAL_MISS_LRU_READ', - 131: 'TCP_PERF_SEL_TOTAL_MISS_EVICT_READ', - 132: 'TCP_PERF_SEL_TOTAL_NON_READ', - 133: 'TCP_PERF_SEL_TOTAL_WRITE', - 134: 'TCP_PERF_SEL_TOTAL_MISS_LRU_WRITE', - 135: 'TCP_PERF_SEL_TOTAL_MISS_EVICT_WRITE', - 136: 'TCP_PERF_SEL_TOTAL_WBINVL1_VOL', - 137: 'TCP_PERF_SEL_TOTAL_WRITEBACK_INVALIDATES', - 138: 'TCP_PERF_SEL_DISPLAY_MICROTILING', - 139: 'TCP_PERF_SEL_THIN_MICROTILING', - 140: 'TCP_PERF_SEL_DEPTH_MICROTILING', - 141: 'TCP_PERF_SEL_ARR_PRT_THIN1', - 142: 'TCP_PERF_SEL_ARR_PRT_2D_THIN1', - 143: 'TCP_PERF_SEL_ARR_PRT_3D_THIN1', - 144: 'TCP_PERF_SEL_ARR_PRT_THICK', - 145: 'TCP_PERF_SEL_ARR_PRT_2D_THICK', - 146: 'TCP_PERF_SEL_ARR_PRT_3D_THICK', - 147: 'TCP_PERF_SEL_CP_TCP_INVALIDATE_VOL', - 148: 'TCP_PERF_SEL_SQ_TCP_INVALIDATE_VOL', - 149: 'TCP_PERF_SEL_UNALIGNED', - 150: 'TCP_PERF_SEL_ROTATED_MICROTILING', - 151: 'TCP_PERF_SEL_THICK_MICROTILING', - 152: 'TCP_PERF_SEL_ATC', - 153: 'TCP_PERF_SEL_POWER_STALL', - 154: 'TCP_PERF_SEL_RESERVED_154', - 155: 'TCP_PERF_SEL_TCC_LRU_REQ', - 156: 'TCP_PERF_SEL_TCC_STREAM_REQ', - 157: 'TCP_PERF_SEL_TCC_NC_READ_REQ', - 158: 'TCP_PERF_SEL_TCC_NC_WRITE_REQ', - 159: 'TCP_PERF_SEL_TCC_NC_ATOMIC_REQ', - 160: 'TCP_PERF_SEL_TCC_UC_READ_REQ', - 161: 'TCP_PERF_SEL_TCC_UC_WRITE_REQ', - 162: 'TCP_PERF_SEL_TCC_UC_ATOMIC_REQ', - 163: 'TCP_PERF_SEL_TCC_CC_READ_REQ', - 164: 'TCP_PERF_SEL_TCC_CC_WRITE_REQ', - 165: 'TCP_PERF_SEL_TCC_CC_ATOMIC_REQ', - 166: 'TCP_PERF_SEL_TCC_DCC_REQ', - 167: 'TCP_PERF_SEL_TCC_PHYSICAL_REQ', - 168: 'TCP_PERF_SEL_UNORDERED_MTYPE_STALL', - 169: 'TCP_PERF_SEL_VOLATILE', - 170: 'TCP_PERF_SEL_TC_TA_XNACK_STALL', - 171: 'TCP_PERF_SEL_UTCL1_SERIALIZATION_STALL', - 172: 'TCP_PERF_SEL_SHOOTDOWN', - 173: 'TCP_PERF_SEL_UTCL1_TRANSLATION_MISS', - 174: 'TCP_PERF_SEL_UTCL1_PERMISSION_MISS', - 175: 'TCP_PERF_SEL_UTCL1_REQUEST', - 176: 'TCP_PERF_SEL_UTCL1_STALL_INFLIGHT_MAX', - 177: 'TCP_PERF_SEL_UTCL1_STALL_LRU_INFLIGHT', - 178: 'TCP_PERF_SEL_UTCL1_LFIFO_FULL', - 179: 'TCP_PERF_SEL_UTCL1_STALL_LFIFO_NOT_RES', - 180: 'TCP_PERF_SEL_UTCL1_STALL_UTCL2_REQ_OUT_OF_CREDITS', - 181: 'TCP_PERF_SEL_UTCL1_UTCL2_INFLIGHT', - 182: 'TCP_PERF_SEL_UTCL1_STALL_MISSFIFO_FULL', - 183: 'TCP_PERF_SEL_IMG_READ_FMT_ETC2_RGB', - 184: 'TCP_PERF_SEL_IMG_READ_FMT_ETC2_RGBA', - 185: 'TCP_PERF_SEL_IMG_READ_FMT_ETC2_RGBA1', - 186: 'TCP_PERF_SEL_IMG_READ_FMT_ETC2_R', - 187: 'TCP_PERF_SEL_IMG_READ_FMT_ETC2_RG', - 188: 'TCP_PERF_SEL_IMG_READ_FMT_8_AS_32', - 189: 'TCP_PERF_SEL_IMG_READ_FMT_8_AS_64', - 190: 'TCP_PERF_SEL_IMG_READ_FMT_16_AS_64', - 191: 'TCP_PERF_SEL_IMG_READ_FMT_16_AS_128', - 192: 'TCP_PERF_SEL_IMG_WRITE_FMT_8_AS_32', - 193: 'TCP_PERF_SEL_IMG_WRITE_FMT_8_AS_64', - 194: 'TCP_PERF_SEL_IMG_WRITE_FMT_16_AS_64', - 195: 'TCP_PERF_SEL_IMG_WRITE_FMT_16_AS_128', -} -TCP_PERF_SEL_TA_TCP_ADDR_STARVE_CYCLES = 0 -TCP_PERF_SEL_TA_TCP_DATA_STARVE_CYCLES = 1 -TCP_PERF_SEL_TCP_TA_ADDR_STALL_CYCLES = 2 -TCP_PERF_SEL_TCP_TA_DATA_STALL_CYCLES = 3 -TCP_PERF_SEL_TD_TCP_STALL_CYCLES = 4 -TCP_PERF_SEL_TCR_TCP_STALL_CYCLES = 5 -TCP_PERF_SEL_LOD_STALL_CYCLES = 6 -TCP_PERF_SEL_READ_TAGCONFLICT_STALL_CYCLES = 7 -TCP_PERF_SEL_WRITE_TAGCONFLICT_STALL_CYCLES = 8 -TCP_PERF_SEL_ATOMIC_TAGCONFLICT_STALL_CYCLES = 9 -TCP_PERF_SEL_ALLOC_STALL_CYCLES = 10 -TCP_PERF_SEL_LFIFO_STALL_CYCLES = 11 -TCP_PERF_SEL_RFIFO_STALL_CYCLES = 12 -TCP_PERF_SEL_TCR_RDRET_STALL = 13 -TCP_PERF_SEL_WRITE_CONFLICT_STALL = 14 -TCP_PERF_SEL_HOLE_READ_STALL = 15 -TCP_PERF_SEL_READCONFLICT_STALL_CYCLES = 16 -TCP_PERF_SEL_PENDING_STALL_CYCLES = 17 -TCP_PERF_SEL_READFIFO_STALL_CYCLES = 18 -TCP_PERF_SEL_TCP_LATENCY = 19 -TCP_PERF_SEL_TCC_READ_REQ_LATENCY = 20 -TCP_PERF_SEL_TCC_WRITE_REQ_LATENCY = 21 -TCP_PERF_SEL_TCC_WRITE_REQ_HOLE_LATENCY = 22 -TCP_PERF_SEL_TCC_READ_REQ = 23 -TCP_PERF_SEL_TCC_WRITE_REQ = 24 -TCP_PERF_SEL_TCC_ATOMIC_WITH_RET_REQ = 25 -TCP_PERF_SEL_TCC_ATOMIC_WITHOUT_RET_REQ = 26 -TCP_PERF_SEL_TOTAL_LOCAL_READ = 27 -TCP_PERF_SEL_TOTAL_GLOBAL_READ = 28 -TCP_PERF_SEL_TOTAL_LOCAL_WRITE = 29 -TCP_PERF_SEL_TOTAL_GLOBAL_WRITE = 30 -TCP_PERF_SEL_TOTAL_ATOMIC_WITH_RET = 31 -TCP_PERF_SEL_TOTAL_ATOMIC_WITHOUT_RET = 32 -TCP_PERF_SEL_TOTAL_WBINVL1 = 33 -TCP_PERF_SEL_IMG_READ_FMT_1 = 34 -TCP_PERF_SEL_IMG_READ_FMT_8 = 35 -TCP_PERF_SEL_IMG_READ_FMT_16 = 36 -TCP_PERF_SEL_IMG_READ_FMT_32 = 37 -TCP_PERF_SEL_IMG_READ_FMT_32_AS_8 = 38 -TCP_PERF_SEL_IMG_READ_FMT_32_AS_16 = 39 -TCP_PERF_SEL_IMG_READ_FMT_32_AS_128 = 40 -TCP_PERF_SEL_IMG_READ_FMT_64_2_CYCLE = 41 -TCP_PERF_SEL_IMG_READ_FMT_64_1_CYCLE = 42 -TCP_PERF_SEL_IMG_READ_FMT_96 = 43 -TCP_PERF_SEL_IMG_READ_FMT_128_4_CYCLE = 44 -TCP_PERF_SEL_IMG_READ_FMT_128_1_CYCLE = 45 -TCP_PERF_SEL_IMG_READ_FMT_BC1 = 46 -TCP_PERF_SEL_IMG_READ_FMT_BC2 = 47 -TCP_PERF_SEL_IMG_READ_FMT_BC3 = 48 -TCP_PERF_SEL_IMG_READ_FMT_BC4 = 49 -TCP_PERF_SEL_IMG_READ_FMT_BC5 = 50 -TCP_PERF_SEL_IMG_READ_FMT_BC6 = 51 -TCP_PERF_SEL_IMG_READ_FMT_BC7 = 52 -TCP_PERF_SEL_IMG_READ_FMT_I8 = 53 -TCP_PERF_SEL_IMG_READ_FMT_I16 = 54 -TCP_PERF_SEL_IMG_READ_FMT_I32 = 55 -TCP_PERF_SEL_IMG_READ_FMT_I32_AS_8 = 56 -TCP_PERF_SEL_IMG_READ_FMT_I32_AS_16 = 57 -TCP_PERF_SEL_IMG_READ_FMT_D8 = 58 -TCP_PERF_SEL_IMG_READ_FMT_D16 = 59 -TCP_PERF_SEL_IMG_READ_FMT_D32 = 60 -TCP_PERF_SEL_IMG_WRITE_FMT_8 = 61 -TCP_PERF_SEL_IMG_WRITE_FMT_16 = 62 -TCP_PERF_SEL_IMG_WRITE_FMT_32 = 63 -TCP_PERF_SEL_IMG_WRITE_FMT_64 = 64 -TCP_PERF_SEL_IMG_WRITE_FMT_128 = 65 -TCP_PERF_SEL_IMG_WRITE_FMT_D8 = 66 -TCP_PERF_SEL_IMG_WRITE_FMT_D16 = 67 -TCP_PERF_SEL_IMG_WRITE_FMT_D32 = 68 -TCP_PERF_SEL_IMG_ATOMIC_WITH_RET_FMT_32 = 69 -TCP_PERF_SEL_IMG_ATOMIC_WITHOUT_RET_FMT_32 = 70 -TCP_PERF_SEL_IMG_ATOMIC_WITH_RET_FMT_64 = 71 -TCP_PERF_SEL_IMG_ATOMIC_WITHOUT_RET_FMT_64 = 72 -TCP_PERF_SEL_BUF_READ_FMT_8 = 73 -TCP_PERF_SEL_BUF_READ_FMT_16 = 74 -TCP_PERF_SEL_BUF_READ_FMT_32 = 75 -TCP_PERF_SEL_BUF_WRITE_FMT_8 = 76 -TCP_PERF_SEL_BUF_WRITE_FMT_16 = 77 -TCP_PERF_SEL_BUF_WRITE_FMT_32 = 78 -TCP_PERF_SEL_BUF_ATOMIC_WITH_RET_FMT_32 = 79 -TCP_PERF_SEL_BUF_ATOMIC_WITHOUT_RET_FMT_32 = 80 -TCP_PERF_SEL_BUF_ATOMIC_WITH_RET_FMT_64 = 81 -TCP_PERF_SEL_BUF_ATOMIC_WITHOUT_RET_FMT_64 = 82 -TCP_PERF_SEL_ARR_LINEAR_GENERAL = 83 -TCP_PERF_SEL_ARR_LINEAR_ALIGNED = 84 -TCP_PERF_SEL_ARR_1D_THIN1 = 85 -TCP_PERF_SEL_ARR_1D_THICK = 86 -TCP_PERF_SEL_ARR_2D_THIN1 = 87 -TCP_PERF_SEL_ARR_2D_THICK = 88 -TCP_PERF_SEL_ARR_2D_XTHICK = 89 -TCP_PERF_SEL_ARR_3D_THIN1 = 90 -TCP_PERF_SEL_ARR_3D_THICK = 91 -TCP_PERF_SEL_ARR_3D_XTHICK = 92 -TCP_PERF_SEL_DIM_1D = 93 -TCP_PERF_SEL_DIM_2D = 94 -TCP_PERF_SEL_DIM_3D = 95 -TCP_PERF_SEL_DIM_1D_ARRAY = 96 -TCP_PERF_SEL_DIM_2D_ARRAY = 97 -TCP_PERF_SEL_DIM_2D_MSAA = 98 -TCP_PERF_SEL_DIM_2D_ARRAY_MSAA = 99 -TCP_PERF_SEL_DIM_CUBE_ARRAY = 100 -TCP_PERF_SEL_CP_TCP_INVALIDATE = 101 -TCP_PERF_SEL_TA_TCP_STATE_READ = 102 -TCP_PERF_SEL_TAGRAM0_REQ = 103 -TCP_PERF_SEL_TAGRAM1_REQ = 104 -TCP_PERF_SEL_TAGRAM2_REQ = 105 -TCP_PERF_SEL_TAGRAM3_REQ = 106 -TCP_PERF_SEL_GATE_EN1 = 107 -TCP_PERF_SEL_GATE_EN2 = 108 -TCP_PERF_SEL_CORE_REG_SCLK_VLD = 109 -TCP_PERF_SEL_TCC_REQ = 110 -TCP_PERF_SEL_TCC_NON_READ_REQ = 111 -TCP_PERF_SEL_TCC_BYPASS_READ_REQ = 112 -TCP_PERF_SEL_TCC_MISS_EVICT_READ_REQ = 113 -TCP_PERF_SEL_TCC_VOLATILE_READ_REQ = 114 -TCP_PERF_SEL_TCC_VOLATILE_BYPASS_READ_REQ = 115 -TCP_PERF_SEL_TCC_VOLATILE_MISS_EVICT_READ_REQ = 116 -TCP_PERF_SEL_TCC_BYPASS_WRITE_REQ = 117 -TCP_PERF_SEL_TCC_MISS_EVICT_WRITE_REQ = 118 -TCP_PERF_SEL_TCC_VOLATILE_BYPASS_WRITE_REQ = 119 -TCP_PERF_SEL_TCC_VOLATILE_WRITE_REQ = 120 -TCP_PERF_SEL_TCC_VOLATILE_MISS_EVICT_WRITE_REQ = 121 -TCP_PERF_SEL_TCC_BYPASS_ATOMIC_REQ = 122 -TCP_PERF_SEL_TCC_ATOMIC_REQ = 123 -TCP_PERF_SEL_TCC_VOLATILE_ATOMIC_REQ = 124 -TCP_PERF_SEL_TCC_DATA_BUS_BUSY = 125 -TCP_PERF_SEL_TOTAL_ACCESSES = 126 -TCP_PERF_SEL_TOTAL_READ = 127 -TCP_PERF_SEL_TOTAL_HIT_LRU_READ = 128 -TCP_PERF_SEL_TOTAL_HIT_EVICT_READ = 129 -TCP_PERF_SEL_TOTAL_MISS_LRU_READ = 130 -TCP_PERF_SEL_TOTAL_MISS_EVICT_READ = 131 -TCP_PERF_SEL_TOTAL_NON_READ = 132 -TCP_PERF_SEL_TOTAL_WRITE = 133 -TCP_PERF_SEL_TOTAL_MISS_LRU_WRITE = 134 -TCP_PERF_SEL_TOTAL_MISS_EVICT_WRITE = 135 -TCP_PERF_SEL_TOTAL_WBINVL1_VOL = 136 -TCP_PERF_SEL_TOTAL_WRITEBACK_INVALIDATES = 137 -TCP_PERF_SEL_DISPLAY_MICROTILING = 138 -TCP_PERF_SEL_THIN_MICROTILING = 139 -TCP_PERF_SEL_DEPTH_MICROTILING = 140 -TCP_PERF_SEL_ARR_PRT_THIN1 = 141 -TCP_PERF_SEL_ARR_PRT_2D_THIN1 = 142 -TCP_PERF_SEL_ARR_PRT_3D_THIN1 = 143 -TCP_PERF_SEL_ARR_PRT_THICK = 144 -TCP_PERF_SEL_ARR_PRT_2D_THICK = 145 -TCP_PERF_SEL_ARR_PRT_3D_THICK = 146 -TCP_PERF_SEL_CP_TCP_INVALIDATE_VOL = 147 -TCP_PERF_SEL_SQ_TCP_INVALIDATE_VOL = 148 -TCP_PERF_SEL_UNALIGNED = 149 -TCP_PERF_SEL_ROTATED_MICROTILING = 150 -TCP_PERF_SEL_THICK_MICROTILING = 151 -TCP_PERF_SEL_ATC = 152 -TCP_PERF_SEL_POWER_STALL = 153 -TCP_PERF_SEL_RESERVED_154 = 154 -TCP_PERF_SEL_TCC_LRU_REQ = 155 -TCP_PERF_SEL_TCC_STREAM_REQ = 156 -TCP_PERF_SEL_TCC_NC_READ_REQ = 157 -TCP_PERF_SEL_TCC_NC_WRITE_REQ = 158 -TCP_PERF_SEL_TCC_NC_ATOMIC_REQ = 159 -TCP_PERF_SEL_TCC_UC_READ_REQ = 160 -TCP_PERF_SEL_TCC_UC_WRITE_REQ = 161 -TCP_PERF_SEL_TCC_UC_ATOMIC_REQ = 162 -TCP_PERF_SEL_TCC_CC_READ_REQ = 163 -TCP_PERF_SEL_TCC_CC_WRITE_REQ = 164 -TCP_PERF_SEL_TCC_CC_ATOMIC_REQ = 165 -TCP_PERF_SEL_TCC_DCC_REQ = 166 -TCP_PERF_SEL_TCC_PHYSICAL_REQ = 167 -TCP_PERF_SEL_UNORDERED_MTYPE_STALL = 168 -TCP_PERF_SEL_VOLATILE = 169 -TCP_PERF_SEL_TC_TA_XNACK_STALL = 170 -TCP_PERF_SEL_UTCL1_SERIALIZATION_STALL = 171 -TCP_PERF_SEL_SHOOTDOWN = 172 -TCP_PERF_SEL_UTCL1_TRANSLATION_MISS = 173 -TCP_PERF_SEL_UTCL1_PERMISSION_MISS = 174 -TCP_PERF_SEL_UTCL1_REQUEST = 175 -TCP_PERF_SEL_UTCL1_STALL_INFLIGHT_MAX = 176 -TCP_PERF_SEL_UTCL1_STALL_LRU_INFLIGHT = 177 -TCP_PERF_SEL_UTCL1_LFIFO_FULL = 178 -TCP_PERF_SEL_UTCL1_STALL_LFIFO_NOT_RES = 179 -TCP_PERF_SEL_UTCL1_STALL_UTCL2_REQ_OUT_OF_CREDITS = 180 -TCP_PERF_SEL_UTCL1_UTCL2_INFLIGHT = 181 -TCP_PERF_SEL_UTCL1_STALL_MISSFIFO_FULL = 182 -TCP_PERF_SEL_IMG_READ_FMT_ETC2_RGB = 183 -TCP_PERF_SEL_IMG_READ_FMT_ETC2_RGBA = 184 -TCP_PERF_SEL_IMG_READ_FMT_ETC2_RGBA1 = 185 -TCP_PERF_SEL_IMG_READ_FMT_ETC2_R = 186 -TCP_PERF_SEL_IMG_READ_FMT_ETC2_RG = 187 -TCP_PERF_SEL_IMG_READ_FMT_8_AS_32 = 188 -TCP_PERF_SEL_IMG_READ_FMT_8_AS_64 = 189 -TCP_PERF_SEL_IMG_READ_FMT_16_AS_64 = 190 -TCP_PERF_SEL_IMG_READ_FMT_16_AS_128 = 191 -TCP_PERF_SEL_IMG_WRITE_FMT_8_AS_32 = 192 -TCP_PERF_SEL_IMG_WRITE_FMT_8_AS_64 = 193 -TCP_PERF_SEL_IMG_WRITE_FMT_16_AS_64 = 194 -TCP_PERF_SEL_IMG_WRITE_FMT_16_AS_128 = 195 -TCP_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_CACHE_POLICIES' -TCP_CACHE_POLICIES__enumvalues = { - 0: 'TCP_CACHE_POLICY_MISS_LRU', - 1: 'TCP_CACHE_POLICY_MISS_EVICT', - 2: 'TCP_CACHE_POLICY_HIT_LRU', - 3: 'TCP_CACHE_POLICY_HIT_EVICT', -} -TCP_CACHE_POLICY_MISS_LRU = 0 -TCP_CACHE_POLICY_MISS_EVICT = 1 -TCP_CACHE_POLICY_HIT_LRU = 2 -TCP_CACHE_POLICY_HIT_EVICT = 3 -TCP_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_CACHE_STORE_POLICIES' -TCP_CACHE_STORE_POLICIES__enumvalues = { - 0: 'TCP_CACHE_STORE_POLICY_WT_LRU', - 1: 'TCP_CACHE_STORE_POLICY_WT_EVICT', -} -TCP_CACHE_STORE_POLICY_WT_LRU = 0 -TCP_CACHE_STORE_POLICY_WT_EVICT = 1 -TCP_CACHE_STORE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_WATCH_MODES' -TCP_WATCH_MODES__enumvalues = { - 0: 'TCP_WATCH_MODE_READ', - 1: 'TCP_WATCH_MODE_NONREAD', - 2: 'TCP_WATCH_MODE_ATOMIC', - 3: 'TCP_WATCH_MODE_ALL', -} -TCP_WATCH_MODE_READ = 0 -TCP_WATCH_MODE_NONREAD = 1 -TCP_WATCH_MODE_ATOMIC = 2 -TCP_WATCH_MODE_ALL = 3 -TCP_WATCH_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_DSM_DATA_SEL' -TCP_DSM_DATA_SEL__enumvalues = { - 0: 'TCP_DSM_DISABLE', - 1: 'TCP_DSM_SEL0', - 2: 'TCP_DSM_SEL1', - 3: 'TCP_DSM_SEL_BOTH', -} -TCP_DSM_DISABLE = 0 -TCP_DSM_SEL0 = 1 -TCP_DSM_SEL1 = 2 -TCP_DSM_SEL_BOTH = 3 -TCP_DSM_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_DSM_SINGLE_WRITE' -TCP_DSM_SINGLE_WRITE__enumvalues = { - 0: 'TCP_DSM_SINGLE_WRITE_DIS', - 1: 'TCP_DSM_SINGLE_WRITE_EN', -} -TCP_DSM_SINGLE_WRITE_DIS = 0 -TCP_DSM_SINGLE_WRITE_EN = 1 -TCP_DSM_SINGLE_WRITE = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_DSM_INJECT_SEL' -TCP_DSM_INJECT_SEL__enumvalues = { - 0: 'TCP_DSM_INJECT_SEL0', - 1: 'TCP_DSM_INJECT_SEL1', - 2: 'TCP_DSM_INJECT_SEL2', - 3: 'TCP_DSM_INJECT_SEL3', -} -TCP_DSM_INJECT_SEL0 = 0 -TCP_DSM_INJECT_SEL1 = 1 -TCP_DSM_INJECT_SEL2 = 2 -TCP_DSM_INJECT_SEL3 = 3 -TCP_DSM_INJECT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TCC_PERF_SEL' -TCC_PERF_SEL__enumvalues = { - 0: 'TCC_PERF_SEL_NONE', - 1: 'TCC_PERF_SEL_CYCLE', - 2: 'TCC_PERF_SEL_BUSY', - 3: 'TCC_PERF_SEL_REQ', - 4: 'TCC_PERF_SEL_STREAMING_REQ', - 5: 'TCC_PERF_SEL_EXE_REQ', - 6: 'TCC_PERF_SEL_COMPRESSED_REQ', - 7: 'TCC_PERF_SEL_COMPRESSED_0_REQ', - 8: 'TCC_PERF_SEL_METADATA_REQ', - 9: 'TCC_PERF_SEL_NC_VIRTUAL_REQ', - 10: 'TCC_PERF_SEL_UC_VIRTUAL_REQ', - 11: 'TCC_PERF_SEL_CC_PHYSICAL_REQ', - 12: 'TCC_PERF_SEL_PROBE', - 13: 'TCC_PERF_SEL_PROBE_ALL', - 14: 'TCC_PERF_SEL_READ', - 15: 'TCC_PERF_SEL_WRITE', - 16: 'TCC_PERF_SEL_ATOMIC', - 17: 'TCC_PERF_SEL_HIT', - 18: 'TCC_PERF_SEL_SECTOR_HIT', - 19: 'TCC_PERF_SEL_MISS', - 20: 'TCC_PERF_SEL_DEWRITE_ALLOCATE_HIT', - 21: 'TCC_PERF_SEL_FULLY_WRITTEN_HIT', - 22: 'TCC_PERF_SEL_WRITEBACK', - 23: 'TCC_PERF_SEL_LATENCY_FIFO_FULL', - 24: 'TCC_PERF_SEL_SRC_FIFO_FULL', - 25: 'TCC_PERF_SEL_HOLE_FIFO_FULL', - 26: 'TCC_PERF_SEL_EA_WRREQ', - 27: 'TCC_PERF_SEL_EA_WRREQ_64B', - 28: 'TCC_PERF_SEL_EA_WRREQ_PROBE_COMMAND', - 29: 'TCC_PERF_SEL_EA_WR_UNCACHED_32B', - 30: 'TCC_PERF_SEL_EA_WRREQ_STALL', - 31: 'TCC_PERF_SEL_EA_WRREQ_CREDIT_STALL', - 32: 'TCC_PERF_SEL_TOO_MANY_EA_WRREQS_STALL', - 33: 'TCC_PERF_SEL_EA_WRREQ_LEVEL', - 34: 'TCC_PERF_SEL_EA_ATOMIC', - 35: 'TCC_PERF_SEL_EA_ATOMIC_LEVEL', - 36: 'TCC_PERF_SEL_EA_RDREQ', - 37: 'TCC_PERF_SEL_EA_RDREQ_32B', - 38: 'TCC_PERF_SEL_EA_RD_UNCACHED_32B', - 39: 'TCC_PERF_SEL_EA_RD_MDC_32B', - 40: 'TCC_PERF_SEL_EA_RD_COMPRESSED_32B', - 41: 'TCC_PERF_SEL_EA_RDREQ_CREDIT_STALL', - 42: 'TCC_PERF_SEL_EA_RDREQ_LEVEL', - 43: 'TCC_PERF_SEL_TAG_STALL', - 44: 'TCC_PERF_SEL_TAG_WRITEBACK_FIFO_FULL_STALL', - 45: 'TCC_PERF_SEL_TAG_MISS_NOTHING_REPLACEABLE_STALL', - 46: 'TCC_PERF_SEL_TAG_UNCACHED_WRITE_ATOMIC_FIFO_FULL_STALL', - 47: 'TCC_PERF_SEL_TAG_NO_UNCACHED_WRITE_ATOMIC_ENTRIES_STALL', - 48: 'TCC_PERF_SEL_TAG_PROBE_STALL', - 49: 'TCC_PERF_SEL_TAG_PROBE_FILTER_STALL', - 50: 'TCC_PERF_SEL_READ_RETURN_TIMEOUT', - 51: 'TCC_PERF_SEL_WRITEBACK_READ_TIMEOUT', - 52: 'TCC_PERF_SEL_READ_RETURN_FULL_BUBBLE', - 53: 'TCC_PERF_SEL_BUBBLE', - 54: 'TCC_PERF_SEL_RETURN_ACK', - 55: 'TCC_PERF_SEL_RETURN_DATA', - 56: 'TCC_PERF_SEL_RETURN_HOLE', - 57: 'TCC_PERF_SEL_RETURN_ACK_HOLE', - 58: 'TCC_PERF_SEL_IB_REQ', - 59: 'TCC_PERF_SEL_IB_STALL', - 60: 'TCC_PERF_SEL_IB_TAG_STALL', - 61: 'TCC_PERF_SEL_IB_MDC_STALL', - 62: 'TCC_PERF_SEL_TCA_LEVEL', - 63: 'TCC_PERF_SEL_HOLE_LEVEL', - 64: 'TCC_PERF_SEL_NORMAL_WRITEBACK', - 65: 'TCC_PERF_SEL_TC_OP_WBL2_NC_WRITEBACK', - 66: 'TCC_PERF_SEL_TC_OP_WBL2_WC_WRITEBACK', - 67: 'TCC_PERF_SEL_TC_OP_WBINVL2_WRITEBACK', - 68: 'TCC_PERF_SEL_TC_OP_WBINVL2_NC_WRITEBACK', - 69: 'TCC_PERF_SEL_TC_OP_WBINVL2_SD_WRITEBACK', - 70: 'TCC_PERF_SEL_ALL_TC_OP_WB_WRITEBACK', - 71: 'TCC_PERF_SEL_NORMAL_EVICT', - 72: 'TCC_PERF_SEL_TC_OP_WBL2_NC_EVICT', - 73: 'TCC_PERF_SEL_TC_OP_WBL2_WC_EVICT', - 74: 'TCC_PERF_SEL_TC_OP_INVL2_NC_EVICT', - 75: 'TCC_PERF_SEL_TC_OP_WBINVL2_EVICT', - 76: 'TCC_PERF_SEL_TC_OP_WBINVL2_NC_EVICT', - 77: 'TCC_PERF_SEL_TC_OP_WBINVL2_SD_EVICT', - 78: 'TCC_PERF_SEL_ALL_TC_OP_INV_EVICT', - 79: 'TCC_PERF_SEL_PROBE_EVICT', - 80: 'TCC_PERF_SEL_TC_OP_WBL2_NC_CYCLE', - 81: 'TCC_PERF_SEL_TC_OP_WBL2_WC_CYCLE', - 82: 'TCC_PERF_SEL_TC_OP_INVL2_NC_CYCLE', - 83: 'TCC_PERF_SEL_TC_OP_WBINVL2_CYCLE', - 84: 'TCC_PERF_SEL_TC_OP_WBINVL2_NC_CYCLE', - 85: 'TCC_PERF_SEL_TC_OP_WBINVL2_SD_CYCLE', - 86: 'TCC_PERF_SEL_ALL_TC_OP_WB_OR_INV_CYCLE', - 87: 'TCC_PERF_SEL_TC_OP_WBL2_NC_START', - 88: 'TCC_PERF_SEL_TC_OP_WBL2_WC_START', - 89: 'TCC_PERF_SEL_TC_OP_INVL2_NC_START', - 90: 'TCC_PERF_SEL_TC_OP_WBINVL2_START', - 91: 'TCC_PERF_SEL_TC_OP_WBINVL2_NC_START', - 92: 'TCC_PERF_SEL_TC_OP_WBINVL2_SD_START', - 93: 'TCC_PERF_SEL_ALL_TC_OP_WB_OR_INV_START', - 94: 'TCC_PERF_SEL_TC_OP_WBL2_NC_FINISH', - 95: 'TCC_PERF_SEL_TC_OP_WBL2_WC_FINISH', - 96: 'TCC_PERF_SEL_TC_OP_INVL2_NC_FINISH', - 97: 'TCC_PERF_SEL_TC_OP_WBINVL2_FINISH', - 98: 'TCC_PERF_SEL_TC_OP_WBINVL2_NC_FINISH', - 99: 'TCC_PERF_SEL_TC_OP_WBINVL2_SD_FINISH', - 100: 'TCC_PERF_SEL_ALL_TC_OP_WB_OR_INV_FINISH', - 101: 'TCC_PERF_SEL_MDC_REQ', - 102: 'TCC_PERF_SEL_MDC_LEVEL', - 103: 'TCC_PERF_SEL_MDC_TAG_HIT', - 104: 'TCC_PERF_SEL_MDC_SECTOR_HIT', - 105: 'TCC_PERF_SEL_MDC_SECTOR_MISS', - 106: 'TCC_PERF_SEL_MDC_TAG_STALL', - 107: 'TCC_PERF_SEL_MDC_TAG_REPLACEMENT_LINE_IN_USE_STALL', - 108: 'TCC_PERF_SEL_MDC_TAG_DESECTORIZATION_FIFO_FULL_STALL', - 109: 'TCC_PERF_SEL_MDC_TAG_WAITING_FOR_INVALIDATE_COMPLETION_STALL', - 110: 'TCC_PERF_SEL_PROBE_FILTER_DISABLE_TRANSITION', - 111: 'TCC_PERF_SEL_PROBE_FILTER_DISABLED', - 128: 'TCC_PERF_SEL_CLIENT0_REQ', - 129: 'TCC_PERF_SEL_CLIENT1_REQ', - 130: 'TCC_PERF_SEL_CLIENT2_REQ', - 131: 'TCC_PERF_SEL_CLIENT3_REQ', - 132: 'TCC_PERF_SEL_CLIENT4_REQ', - 133: 'TCC_PERF_SEL_CLIENT5_REQ', - 134: 'TCC_PERF_SEL_CLIENT6_REQ', - 135: 'TCC_PERF_SEL_CLIENT7_REQ', - 136: 'TCC_PERF_SEL_CLIENT8_REQ', - 137: 'TCC_PERF_SEL_CLIENT9_REQ', - 138: 'TCC_PERF_SEL_CLIENT10_REQ', - 139: 'TCC_PERF_SEL_CLIENT11_REQ', - 140: 'TCC_PERF_SEL_CLIENT12_REQ', - 141: 'TCC_PERF_SEL_CLIENT13_REQ', - 142: 'TCC_PERF_SEL_CLIENT14_REQ', - 143: 'TCC_PERF_SEL_CLIENT15_REQ', - 144: 'TCC_PERF_SEL_CLIENT16_REQ', - 145: 'TCC_PERF_SEL_CLIENT17_REQ', - 146: 'TCC_PERF_SEL_CLIENT18_REQ', - 147: 'TCC_PERF_SEL_CLIENT19_REQ', - 148: 'TCC_PERF_SEL_CLIENT20_REQ', - 149: 'TCC_PERF_SEL_CLIENT21_REQ', - 150: 'TCC_PERF_SEL_CLIENT22_REQ', - 151: 'TCC_PERF_SEL_CLIENT23_REQ', - 152: 'TCC_PERF_SEL_CLIENT24_REQ', - 153: 'TCC_PERF_SEL_CLIENT25_REQ', - 154: 'TCC_PERF_SEL_CLIENT26_REQ', - 155: 'TCC_PERF_SEL_CLIENT27_REQ', - 156: 'TCC_PERF_SEL_CLIENT28_REQ', - 157: 'TCC_PERF_SEL_CLIENT29_REQ', - 158: 'TCC_PERF_SEL_CLIENT30_REQ', - 159: 'TCC_PERF_SEL_CLIENT31_REQ', - 160: 'TCC_PERF_SEL_CLIENT32_REQ', - 161: 'TCC_PERF_SEL_CLIENT33_REQ', - 162: 'TCC_PERF_SEL_CLIENT34_REQ', - 163: 'TCC_PERF_SEL_CLIENT35_REQ', - 164: 'TCC_PERF_SEL_CLIENT36_REQ', - 165: 'TCC_PERF_SEL_CLIENT37_REQ', - 166: 'TCC_PERF_SEL_CLIENT38_REQ', - 167: 'TCC_PERF_SEL_CLIENT39_REQ', - 168: 'TCC_PERF_SEL_CLIENT40_REQ', - 169: 'TCC_PERF_SEL_CLIENT41_REQ', - 170: 'TCC_PERF_SEL_CLIENT42_REQ', - 171: 'TCC_PERF_SEL_CLIENT43_REQ', - 172: 'TCC_PERF_SEL_CLIENT44_REQ', - 173: 'TCC_PERF_SEL_CLIENT45_REQ', - 174: 'TCC_PERF_SEL_CLIENT46_REQ', - 175: 'TCC_PERF_SEL_CLIENT47_REQ', - 176: 'TCC_PERF_SEL_CLIENT48_REQ', - 177: 'TCC_PERF_SEL_CLIENT49_REQ', - 178: 'TCC_PERF_SEL_CLIENT50_REQ', - 179: 'TCC_PERF_SEL_CLIENT51_REQ', - 180: 'TCC_PERF_SEL_CLIENT52_REQ', - 181: 'TCC_PERF_SEL_CLIENT53_REQ', - 182: 'TCC_PERF_SEL_CLIENT54_REQ', - 183: 'TCC_PERF_SEL_CLIENT55_REQ', - 184: 'TCC_PERF_SEL_CLIENT56_REQ', - 185: 'TCC_PERF_SEL_CLIENT57_REQ', - 186: 'TCC_PERF_SEL_CLIENT58_REQ', - 187: 'TCC_PERF_SEL_CLIENT59_REQ', - 188: 'TCC_PERF_SEL_CLIENT60_REQ', - 189: 'TCC_PERF_SEL_CLIENT61_REQ', - 190: 'TCC_PERF_SEL_CLIENT62_REQ', - 191: 'TCC_PERF_SEL_CLIENT63_REQ', - 192: 'TCC_PERF_SEL_CLIENT64_REQ', - 193: 'TCC_PERF_SEL_CLIENT65_REQ', - 194: 'TCC_PERF_SEL_CLIENT66_REQ', - 195: 'TCC_PERF_SEL_CLIENT67_REQ', - 196: 'TCC_PERF_SEL_CLIENT68_REQ', - 197: 'TCC_PERF_SEL_CLIENT69_REQ', - 198: 'TCC_PERF_SEL_CLIENT70_REQ', - 199: 'TCC_PERF_SEL_CLIENT71_REQ', - 200: 'TCC_PERF_SEL_CLIENT72_REQ', - 201: 'TCC_PERF_SEL_CLIENT73_REQ', - 202: 'TCC_PERF_SEL_CLIENT74_REQ', - 203: 'TCC_PERF_SEL_CLIENT75_REQ', - 204: 'TCC_PERF_SEL_CLIENT76_REQ', - 205: 'TCC_PERF_SEL_CLIENT77_REQ', - 206: 'TCC_PERF_SEL_CLIENT78_REQ', - 207: 'TCC_PERF_SEL_CLIENT79_REQ', - 208: 'TCC_PERF_SEL_CLIENT80_REQ', - 209: 'TCC_PERF_SEL_CLIENT81_REQ', - 210: 'TCC_PERF_SEL_CLIENT82_REQ', - 211: 'TCC_PERF_SEL_CLIENT83_REQ', - 212: 'TCC_PERF_SEL_CLIENT84_REQ', - 213: 'TCC_PERF_SEL_CLIENT85_REQ', - 214: 'TCC_PERF_SEL_CLIENT86_REQ', - 215: 'TCC_PERF_SEL_CLIENT87_REQ', - 216: 'TCC_PERF_SEL_CLIENT88_REQ', - 217: 'TCC_PERF_SEL_CLIENT89_REQ', - 218: 'TCC_PERF_SEL_CLIENT90_REQ', - 219: 'TCC_PERF_SEL_CLIENT91_REQ', - 220: 'TCC_PERF_SEL_CLIENT92_REQ', - 221: 'TCC_PERF_SEL_CLIENT93_REQ', - 222: 'TCC_PERF_SEL_CLIENT94_REQ', - 223: 'TCC_PERF_SEL_CLIENT95_REQ', - 224: 'TCC_PERF_SEL_CLIENT96_REQ', - 225: 'TCC_PERF_SEL_CLIENT97_REQ', - 226: 'TCC_PERF_SEL_CLIENT98_REQ', - 227: 'TCC_PERF_SEL_CLIENT99_REQ', - 228: 'TCC_PERF_SEL_CLIENT100_REQ', - 229: 'TCC_PERF_SEL_CLIENT101_REQ', - 230: 'TCC_PERF_SEL_CLIENT102_REQ', - 231: 'TCC_PERF_SEL_CLIENT103_REQ', - 232: 'TCC_PERF_SEL_CLIENT104_REQ', - 233: 'TCC_PERF_SEL_CLIENT105_REQ', - 234: 'TCC_PERF_SEL_CLIENT106_REQ', - 235: 'TCC_PERF_SEL_CLIENT107_REQ', - 236: 'TCC_PERF_SEL_CLIENT108_REQ', - 237: 'TCC_PERF_SEL_CLIENT109_REQ', - 238: 'TCC_PERF_SEL_CLIENT110_REQ', - 239: 'TCC_PERF_SEL_CLIENT111_REQ', - 240: 'TCC_PERF_SEL_CLIENT112_REQ', - 241: 'TCC_PERF_SEL_CLIENT113_REQ', - 242: 'TCC_PERF_SEL_CLIENT114_REQ', - 243: 'TCC_PERF_SEL_CLIENT115_REQ', - 244: 'TCC_PERF_SEL_CLIENT116_REQ', - 245: 'TCC_PERF_SEL_CLIENT117_REQ', - 246: 'TCC_PERF_SEL_CLIENT118_REQ', - 247: 'TCC_PERF_SEL_CLIENT119_REQ', - 248: 'TCC_PERF_SEL_CLIENT120_REQ', - 249: 'TCC_PERF_SEL_CLIENT121_REQ', - 250: 'TCC_PERF_SEL_CLIENT122_REQ', - 251: 'TCC_PERF_SEL_CLIENT123_REQ', - 252: 'TCC_PERF_SEL_CLIENT124_REQ', - 253: 'TCC_PERF_SEL_CLIENT125_REQ', - 254: 'TCC_PERF_SEL_CLIENT126_REQ', - 255: 'TCC_PERF_SEL_CLIENT127_REQ', -} -TCC_PERF_SEL_NONE = 0 -TCC_PERF_SEL_CYCLE = 1 -TCC_PERF_SEL_BUSY = 2 -TCC_PERF_SEL_REQ = 3 -TCC_PERF_SEL_STREAMING_REQ = 4 -TCC_PERF_SEL_EXE_REQ = 5 -TCC_PERF_SEL_COMPRESSED_REQ = 6 -TCC_PERF_SEL_COMPRESSED_0_REQ = 7 -TCC_PERF_SEL_METADATA_REQ = 8 -TCC_PERF_SEL_NC_VIRTUAL_REQ = 9 -TCC_PERF_SEL_UC_VIRTUAL_REQ = 10 -TCC_PERF_SEL_CC_PHYSICAL_REQ = 11 -TCC_PERF_SEL_PROBE = 12 -TCC_PERF_SEL_PROBE_ALL = 13 -TCC_PERF_SEL_READ = 14 -TCC_PERF_SEL_WRITE = 15 -TCC_PERF_SEL_ATOMIC = 16 -TCC_PERF_SEL_HIT = 17 -TCC_PERF_SEL_SECTOR_HIT = 18 -TCC_PERF_SEL_MISS = 19 -TCC_PERF_SEL_DEWRITE_ALLOCATE_HIT = 20 -TCC_PERF_SEL_FULLY_WRITTEN_HIT = 21 -TCC_PERF_SEL_WRITEBACK = 22 -TCC_PERF_SEL_LATENCY_FIFO_FULL = 23 -TCC_PERF_SEL_SRC_FIFO_FULL = 24 -TCC_PERF_SEL_HOLE_FIFO_FULL = 25 -TCC_PERF_SEL_EA_WRREQ = 26 -TCC_PERF_SEL_EA_WRREQ_64B = 27 -TCC_PERF_SEL_EA_WRREQ_PROBE_COMMAND = 28 -TCC_PERF_SEL_EA_WR_UNCACHED_32B = 29 -TCC_PERF_SEL_EA_WRREQ_STALL = 30 -TCC_PERF_SEL_EA_WRREQ_CREDIT_STALL = 31 -TCC_PERF_SEL_TOO_MANY_EA_WRREQS_STALL = 32 -TCC_PERF_SEL_EA_WRREQ_LEVEL = 33 -TCC_PERF_SEL_EA_ATOMIC = 34 -TCC_PERF_SEL_EA_ATOMIC_LEVEL = 35 -TCC_PERF_SEL_EA_RDREQ = 36 -TCC_PERF_SEL_EA_RDREQ_32B = 37 -TCC_PERF_SEL_EA_RD_UNCACHED_32B = 38 -TCC_PERF_SEL_EA_RD_MDC_32B = 39 -TCC_PERF_SEL_EA_RD_COMPRESSED_32B = 40 -TCC_PERF_SEL_EA_RDREQ_CREDIT_STALL = 41 -TCC_PERF_SEL_EA_RDREQ_LEVEL = 42 -TCC_PERF_SEL_TAG_STALL = 43 -TCC_PERF_SEL_TAG_WRITEBACK_FIFO_FULL_STALL = 44 -TCC_PERF_SEL_TAG_MISS_NOTHING_REPLACEABLE_STALL = 45 -TCC_PERF_SEL_TAG_UNCACHED_WRITE_ATOMIC_FIFO_FULL_STALL = 46 -TCC_PERF_SEL_TAG_NO_UNCACHED_WRITE_ATOMIC_ENTRIES_STALL = 47 -TCC_PERF_SEL_TAG_PROBE_STALL = 48 -TCC_PERF_SEL_TAG_PROBE_FILTER_STALL = 49 -TCC_PERF_SEL_READ_RETURN_TIMEOUT = 50 -TCC_PERF_SEL_WRITEBACK_READ_TIMEOUT = 51 -TCC_PERF_SEL_READ_RETURN_FULL_BUBBLE = 52 -TCC_PERF_SEL_BUBBLE = 53 -TCC_PERF_SEL_RETURN_ACK = 54 -TCC_PERF_SEL_RETURN_DATA = 55 -TCC_PERF_SEL_RETURN_HOLE = 56 -TCC_PERF_SEL_RETURN_ACK_HOLE = 57 -TCC_PERF_SEL_IB_REQ = 58 -TCC_PERF_SEL_IB_STALL = 59 -TCC_PERF_SEL_IB_TAG_STALL = 60 -TCC_PERF_SEL_IB_MDC_STALL = 61 -TCC_PERF_SEL_TCA_LEVEL = 62 -TCC_PERF_SEL_HOLE_LEVEL = 63 -TCC_PERF_SEL_NORMAL_WRITEBACK = 64 -TCC_PERF_SEL_TC_OP_WBL2_NC_WRITEBACK = 65 -TCC_PERF_SEL_TC_OP_WBL2_WC_WRITEBACK = 66 -TCC_PERF_SEL_TC_OP_WBINVL2_WRITEBACK = 67 -TCC_PERF_SEL_TC_OP_WBINVL2_NC_WRITEBACK = 68 -TCC_PERF_SEL_TC_OP_WBINVL2_SD_WRITEBACK = 69 -TCC_PERF_SEL_ALL_TC_OP_WB_WRITEBACK = 70 -TCC_PERF_SEL_NORMAL_EVICT = 71 -TCC_PERF_SEL_TC_OP_WBL2_NC_EVICT = 72 -TCC_PERF_SEL_TC_OP_WBL2_WC_EVICT = 73 -TCC_PERF_SEL_TC_OP_INVL2_NC_EVICT = 74 -TCC_PERF_SEL_TC_OP_WBINVL2_EVICT = 75 -TCC_PERF_SEL_TC_OP_WBINVL2_NC_EVICT = 76 -TCC_PERF_SEL_TC_OP_WBINVL2_SD_EVICT = 77 -TCC_PERF_SEL_ALL_TC_OP_INV_EVICT = 78 -TCC_PERF_SEL_PROBE_EVICT = 79 -TCC_PERF_SEL_TC_OP_WBL2_NC_CYCLE = 80 -TCC_PERF_SEL_TC_OP_WBL2_WC_CYCLE = 81 -TCC_PERF_SEL_TC_OP_INVL2_NC_CYCLE = 82 -TCC_PERF_SEL_TC_OP_WBINVL2_CYCLE = 83 -TCC_PERF_SEL_TC_OP_WBINVL2_NC_CYCLE = 84 -TCC_PERF_SEL_TC_OP_WBINVL2_SD_CYCLE = 85 -TCC_PERF_SEL_ALL_TC_OP_WB_OR_INV_CYCLE = 86 -TCC_PERF_SEL_TC_OP_WBL2_NC_START = 87 -TCC_PERF_SEL_TC_OP_WBL2_WC_START = 88 -TCC_PERF_SEL_TC_OP_INVL2_NC_START = 89 -TCC_PERF_SEL_TC_OP_WBINVL2_START = 90 -TCC_PERF_SEL_TC_OP_WBINVL2_NC_START = 91 -TCC_PERF_SEL_TC_OP_WBINVL2_SD_START = 92 -TCC_PERF_SEL_ALL_TC_OP_WB_OR_INV_START = 93 -TCC_PERF_SEL_TC_OP_WBL2_NC_FINISH = 94 -TCC_PERF_SEL_TC_OP_WBL2_WC_FINISH = 95 -TCC_PERF_SEL_TC_OP_INVL2_NC_FINISH = 96 -TCC_PERF_SEL_TC_OP_WBINVL2_FINISH = 97 -TCC_PERF_SEL_TC_OP_WBINVL2_NC_FINISH = 98 -TCC_PERF_SEL_TC_OP_WBINVL2_SD_FINISH = 99 -TCC_PERF_SEL_ALL_TC_OP_WB_OR_INV_FINISH = 100 -TCC_PERF_SEL_MDC_REQ = 101 -TCC_PERF_SEL_MDC_LEVEL = 102 -TCC_PERF_SEL_MDC_TAG_HIT = 103 -TCC_PERF_SEL_MDC_SECTOR_HIT = 104 -TCC_PERF_SEL_MDC_SECTOR_MISS = 105 -TCC_PERF_SEL_MDC_TAG_STALL = 106 -TCC_PERF_SEL_MDC_TAG_REPLACEMENT_LINE_IN_USE_STALL = 107 -TCC_PERF_SEL_MDC_TAG_DESECTORIZATION_FIFO_FULL_STALL = 108 -TCC_PERF_SEL_MDC_TAG_WAITING_FOR_INVALIDATE_COMPLETION_STALL = 109 -TCC_PERF_SEL_PROBE_FILTER_DISABLE_TRANSITION = 110 -TCC_PERF_SEL_PROBE_FILTER_DISABLED = 111 -TCC_PERF_SEL_CLIENT0_REQ = 128 -TCC_PERF_SEL_CLIENT1_REQ = 129 -TCC_PERF_SEL_CLIENT2_REQ = 130 -TCC_PERF_SEL_CLIENT3_REQ = 131 -TCC_PERF_SEL_CLIENT4_REQ = 132 -TCC_PERF_SEL_CLIENT5_REQ = 133 -TCC_PERF_SEL_CLIENT6_REQ = 134 -TCC_PERF_SEL_CLIENT7_REQ = 135 -TCC_PERF_SEL_CLIENT8_REQ = 136 -TCC_PERF_SEL_CLIENT9_REQ = 137 -TCC_PERF_SEL_CLIENT10_REQ = 138 -TCC_PERF_SEL_CLIENT11_REQ = 139 -TCC_PERF_SEL_CLIENT12_REQ = 140 -TCC_PERF_SEL_CLIENT13_REQ = 141 -TCC_PERF_SEL_CLIENT14_REQ = 142 -TCC_PERF_SEL_CLIENT15_REQ = 143 -TCC_PERF_SEL_CLIENT16_REQ = 144 -TCC_PERF_SEL_CLIENT17_REQ = 145 -TCC_PERF_SEL_CLIENT18_REQ = 146 -TCC_PERF_SEL_CLIENT19_REQ = 147 -TCC_PERF_SEL_CLIENT20_REQ = 148 -TCC_PERF_SEL_CLIENT21_REQ = 149 -TCC_PERF_SEL_CLIENT22_REQ = 150 -TCC_PERF_SEL_CLIENT23_REQ = 151 -TCC_PERF_SEL_CLIENT24_REQ = 152 -TCC_PERF_SEL_CLIENT25_REQ = 153 -TCC_PERF_SEL_CLIENT26_REQ = 154 -TCC_PERF_SEL_CLIENT27_REQ = 155 -TCC_PERF_SEL_CLIENT28_REQ = 156 -TCC_PERF_SEL_CLIENT29_REQ = 157 -TCC_PERF_SEL_CLIENT30_REQ = 158 -TCC_PERF_SEL_CLIENT31_REQ = 159 -TCC_PERF_SEL_CLIENT32_REQ = 160 -TCC_PERF_SEL_CLIENT33_REQ = 161 -TCC_PERF_SEL_CLIENT34_REQ = 162 -TCC_PERF_SEL_CLIENT35_REQ = 163 -TCC_PERF_SEL_CLIENT36_REQ = 164 -TCC_PERF_SEL_CLIENT37_REQ = 165 -TCC_PERF_SEL_CLIENT38_REQ = 166 -TCC_PERF_SEL_CLIENT39_REQ = 167 -TCC_PERF_SEL_CLIENT40_REQ = 168 -TCC_PERF_SEL_CLIENT41_REQ = 169 -TCC_PERF_SEL_CLIENT42_REQ = 170 -TCC_PERF_SEL_CLIENT43_REQ = 171 -TCC_PERF_SEL_CLIENT44_REQ = 172 -TCC_PERF_SEL_CLIENT45_REQ = 173 -TCC_PERF_SEL_CLIENT46_REQ = 174 -TCC_PERF_SEL_CLIENT47_REQ = 175 -TCC_PERF_SEL_CLIENT48_REQ = 176 -TCC_PERF_SEL_CLIENT49_REQ = 177 -TCC_PERF_SEL_CLIENT50_REQ = 178 -TCC_PERF_SEL_CLIENT51_REQ = 179 -TCC_PERF_SEL_CLIENT52_REQ = 180 -TCC_PERF_SEL_CLIENT53_REQ = 181 -TCC_PERF_SEL_CLIENT54_REQ = 182 -TCC_PERF_SEL_CLIENT55_REQ = 183 -TCC_PERF_SEL_CLIENT56_REQ = 184 -TCC_PERF_SEL_CLIENT57_REQ = 185 -TCC_PERF_SEL_CLIENT58_REQ = 186 -TCC_PERF_SEL_CLIENT59_REQ = 187 -TCC_PERF_SEL_CLIENT60_REQ = 188 -TCC_PERF_SEL_CLIENT61_REQ = 189 -TCC_PERF_SEL_CLIENT62_REQ = 190 -TCC_PERF_SEL_CLIENT63_REQ = 191 -TCC_PERF_SEL_CLIENT64_REQ = 192 -TCC_PERF_SEL_CLIENT65_REQ = 193 -TCC_PERF_SEL_CLIENT66_REQ = 194 -TCC_PERF_SEL_CLIENT67_REQ = 195 -TCC_PERF_SEL_CLIENT68_REQ = 196 -TCC_PERF_SEL_CLIENT69_REQ = 197 -TCC_PERF_SEL_CLIENT70_REQ = 198 -TCC_PERF_SEL_CLIENT71_REQ = 199 -TCC_PERF_SEL_CLIENT72_REQ = 200 -TCC_PERF_SEL_CLIENT73_REQ = 201 -TCC_PERF_SEL_CLIENT74_REQ = 202 -TCC_PERF_SEL_CLIENT75_REQ = 203 -TCC_PERF_SEL_CLIENT76_REQ = 204 -TCC_PERF_SEL_CLIENT77_REQ = 205 -TCC_PERF_SEL_CLIENT78_REQ = 206 -TCC_PERF_SEL_CLIENT79_REQ = 207 -TCC_PERF_SEL_CLIENT80_REQ = 208 -TCC_PERF_SEL_CLIENT81_REQ = 209 -TCC_PERF_SEL_CLIENT82_REQ = 210 -TCC_PERF_SEL_CLIENT83_REQ = 211 -TCC_PERF_SEL_CLIENT84_REQ = 212 -TCC_PERF_SEL_CLIENT85_REQ = 213 -TCC_PERF_SEL_CLIENT86_REQ = 214 -TCC_PERF_SEL_CLIENT87_REQ = 215 -TCC_PERF_SEL_CLIENT88_REQ = 216 -TCC_PERF_SEL_CLIENT89_REQ = 217 -TCC_PERF_SEL_CLIENT90_REQ = 218 -TCC_PERF_SEL_CLIENT91_REQ = 219 -TCC_PERF_SEL_CLIENT92_REQ = 220 -TCC_PERF_SEL_CLIENT93_REQ = 221 -TCC_PERF_SEL_CLIENT94_REQ = 222 -TCC_PERF_SEL_CLIENT95_REQ = 223 -TCC_PERF_SEL_CLIENT96_REQ = 224 -TCC_PERF_SEL_CLIENT97_REQ = 225 -TCC_PERF_SEL_CLIENT98_REQ = 226 -TCC_PERF_SEL_CLIENT99_REQ = 227 -TCC_PERF_SEL_CLIENT100_REQ = 228 -TCC_PERF_SEL_CLIENT101_REQ = 229 -TCC_PERF_SEL_CLIENT102_REQ = 230 -TCC_PERF_SEL_CLIENT103_REQ = 231 -TCC_PERF_SEL_CLIENT104_REQ = 232 -TCC_PERF_SEL_CLIENT105_REQ = 233 -TCC_PERF_SEL_CLIENT106_REQ = 234 -TCC_PERF_SEL_CLIENT107_REQ = 235 -TCC_PERF_SEL_CLIENT108_REQ = 236 -TCC_PERF_SEL_CLIENT109_REQ = 237 -TCC_PERF_SEL_CLIENT110_REQ = 238 -TCC_PERF_SEL_CLIENT111_REQ = 239 -TCC_PERF_SEL_CLIENT112_REQ = 240 -TCC_PERF_SEL_CLIENT113_REQ = 241 -TCC_PERF_SEL_CLIENT114_REQ = 242 -TCC_PERF_SEL_CLIENT115_REQ = 243 -TCC_PERF_SEL_CLIENT116_REQ = 244 -TCC_PERF_SEL_CLIENT117_REQ = 245 -TCC_PERF_SEL_CLIENT118_REQ = 246 -TCC_PERF_SEL_CLIENT119_REQ = 247 -TCC_PERF_SEL_CLIENT120_REQ = 248 -TCC_PERF_SEL_CLIENT121_REQ = 249 -TCC_PERF_SEL_CLIENT122_REQ = 250 -TCC_PERF_SEL_CLIENT123_REQ = 251 -TCC_PERF_SEL_CLIENT124_REQ = 252 -TCC_PERF_SEL_CLIENT125_REQ = 253 -TCC_PERF_SEL_CLIENT126_REQ = 254 -TCC_PERF_SEL_CLIENT127_REQ = 255 -TCC_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TCA_PERF_SEL' -TCA_PERF_SEL__enumvalues = { - 0: 'TCA_PERF_SEL_NONE', - 1: 'TCA_PERF_SEL_CYCLE', - 2: 'TCA_PERF_SEL_BUSY', - 3: 'TCA_PERF_SEL_FORCED_HOLE_TCC0', - 4: 'TCA_PERF_SEL_FORCED_HOLE_TCC1', - 5: 'TCA_PERF_SEL_FORCED_HOLE_TCC2', - 6: 'TCA_PERF_SEL_FORCED_HOLE_TCC3', - 7: 'TCA_PERF_SEL_FORCED_HOLE_TCC4', - 8: 'TCA_PERF_SEL_FORCED_HOLE_TCC5', - 9: 'TCA_PERF_SEL_FORCED_HOLE_TCC6', - 10: 'TCA_PERF_SEL_FORCED_HOLE_TCC7', - 11: 'TCA_PERF_SEL_REQ_TCC0', - 12: 'TCA_PERF_SEL_REQ_TCC1', - 13: 'TCA_PERF_SEL_REQ_TCC2', - 14: 'TCA_PERF_SEL_REQ_TCC3', - 15: 'TCA_PERF_SEL_REQ_TCC4', - 16: 'TCA_PERF_SEL_REQ_TCC5', - 17: 'TCA_PERF_SEL_REQ_TCC6', - 18: 'TCA_PERF_SEL_REQ_TCC7', - 19: 'TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC0', - 20: 'TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC1', - 21: 'TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC2', - 22: 'TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC3', - 23: 'TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC4', - 24: 'TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC5', - 25: 'TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC6', - 26: 'TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC7', - 27: 'TCA_PERF_SEL_CROSSBAR_STALL_TCC0', - 28: 'TCA_PERF_SEL_CROSSBAR_STALL_TCC1', - 29: 'TCA_PERF_SEL_CROSSBAR_STALL_TCC2', - 30: 'TCA_PERF_SEL_CROSSBAR_STALL_TCC3', - 31: 'TCA_PERF_SEL_CROSSBAR_STALL_TCC4', - 32: 'TCA_PERF_SEL_CROSSBAR_STALL_TCC5', - 33: 'TCA_PERF_SEL_CROSSBAR_STALL_TCC6', - 34: 'TCA_PERF_SEL_CROSSBAR_STALL_TCC7', -} -TCA_PERF_SEL_NONE = 0 -TCA_PERF_SEL_CYCLE = 1 -TCA_PERF_SEL_BUSY = 2 -TCA_PERF_SEL_FORCED_HOLE_TCC0 = 3 -TCA_PERF_SEL_FORCED_HOLE_TCC1 = 4 -TCA_PERF_SEL_FORCED_HOLE_TCC2 = 5 -TCA_PERF_SEL_FORCED_HOLE_TCC3 = 6 -TCA_PERF_SEL_FORCED_HOLE_TCC4 = 7 -TCA_PERF_SEL_FORCED_HOLE_TCC5 = 8 -TCA_PERF_SEL_FORCED_HOLE_TCC6 = 9 -TCA_PERF_SEL_FORCED_HOLE_TCC7 = 10 -TCA_PERF_SEL_REQ_TCC0 = 11 -TCA_PERF_SEL_REQ_TCC1 = 12 -TCA_PERF_SEL_REQ_TCC2 = 13 -TCA_PERF_SEL_REQ_TCC3 = 14 -TCA_PERF_SEL_REQ_TCC4 = 15 -TCA_PERF_SEL_REQ_TCC5 = 16 -TCA_PERF_SEL_REQ_TCC6 = 17 -TCA_PERF_SEL_REQ_TCC7 = 18 -TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC0 = 19 -TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC1 = 20 -TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC2 = 21 -TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC3 = 22 -TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC4 = 23 -TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC5 = 24 -TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC6 = 25 -TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC7 = 26 -TCA_PERF_SEL_CROSSBAR_STALL_TCC0 = 27 -TCA_PERF_SEL_CROSSBAR_STALL_TCC1 = 28 -TCA_PERF_SEL_CROSSBAR_STALL_TCC2 = 29 -TCA_PERF_SEL_CROSSBAR_STALL_TCC3 = 30 -TCA_PERF_SEL_CROSSBAR_STALL_TCC4 = 31 -TCA_PERF_SEL_CROSSBAR_STALL_TCC5 = 32 -TCA_PERF_SEL_CROSSBAR_STALL_TCC6 = 33 -TCA_PERF_SEL_CROSSBAR_STALL_TCC7 = 34 -TCA_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_PERF_SEL' -GRBM_PERF_SEL__enumvalues = { - 0: 'GRBM_PERF_SEL_COUNT', - 1: 'GRBM_PERF_SEL_USER_DEFINED', - 2: 'GRBM_PERF_SEL_GUI_ACTIVE', - 3: 'GRBM_PERF_SEL_CP_BUSY', - 4: 'GRBM_PERF_SEL_CP_COHER_BUSY', - 5: 'GRBM_PERF_SEL_CP_DMA_BUSY', - 6: 'GRBM_PERF_SEL_CB_BUSY', - 7: 'GRBM_PERF_SEL_DB_BUSY', - 8: 'GRBM_PERF_SEL_PA_BUSY', - 9: 'GRBM_PERF_SEL_SC_BUSY', - 10: 'GRBM_PERF_SEL_RESERVED_6', - 11: 'GRBM_PERF_SEL_SPI_BUSY', - 12: 'GRBM_PERF_SEL_SX_BUSY', - 13: 'GRBM_PERF_SEL_TA_BUSY', - 14: 'GRBM_PERF_SEL_CB_CLEAN', - 15: 'GRBM_PERF_SEL_DB_CLEAN', - 16: 'GRBM_PERF_SEL_RESERVED_5', - 17: 'GRBM_PERF_SEL_VGT_BUSY', - 18: 'GRBM_PERF_SEL_RESERVED_4', - 19: 'GRBM_PERF_SEL_RESERVED_3', - 20: 'GRBM_PERF_SEL_RESERVED_2', - 21: 'GRBM_PERF_SEL_RESERVED_1', - 22: 'GRBM_PERF_SEL_RESERVED_0', - 23: 'GRBM_PERF_SEL_IA_BUSY', - 24: 'GRBM_PERF_SEL_IA_NO_DMA_BUSY', - 25: 'GRBM_PERF_SEL_GDS_BUSY', - 26: 'GRBM_PERF_SEL_BCI_BUSY', - 27: 'GRBM_PERF_SEL_RLC_BUSY', - 28: 'GRBM_PERF_SEL_TC_BUSY', - 29: 'GRBM_PERF_SEL_CPG_BUSY', - 30: 'GRBM_PERF_SEL_CPC_BUSY', - 31: 'GRBM_PERF_SEL_CPF_BUSY', - 32: 'GRBM_PERF_SEL_WD_BUSY', - 33: 'GRBM_PERF_SEL_WD_NO_DMA_BUSY', - 34: 'GRBM_PERF_SEL_UTCL2_BUSY', - 35: 'GRBM_PERF_SEL_EA_BUSY', - 36: 'GRBM_PERF_SEL_RMI_BUSY', - 37: 'GRBM_PERF_SEL_CPAXI_BUSY', -} -GRBM_PERF_SEL_COUNT = 0 -GRBM_PERF_SEL_USER_DEFINED = 1 -GRBM_PERF_SEL_GUI_ACTIVE = 2 -GRBM_PERF_SEL_CP_BUSY = 3 -GRBM_PERF_SEL_CP_COHER_BUSY = 4 -GRBM_PERF_SEL_CP_DMA_BUSY = 5 -GRBM_PERF_SEL_CB_BUSY = 6 -GRBM_PERF_SEL_DB_BUSY = 7 -GRBM_PERF_SEL_PA_BUSY = 8 -GRBM_PERF_SEL_SC_BUSY = 9 -GRBM_PERF_SEL_RESERVED_6 = 10 -GRBM_PERF_SEL_SPI_BUSY = 11 -GRBM_PERF_SEL_SX_BUSY = 12 -GRBM_PERF_SEL_TA_BUSY = 13 -GRBM_PERF_SEL_CB_CLEAN = 14 -GRBM_PERF_SEL_DB_CLEAN = 15 -GRBM_PERF_SEL_RESERVED_5 = 16 -GRBM_PERF_SEL_VGT_BUSY = 17 -GRBM_PERF_SEL_RESERVED_4 = 18 -GRBM_PERF_SEL_RESERVED_3 = 19 -GRBM_PERF_SEL_RESERVED_2 = 20 -GRBM_PERF_SEL_RESERVED_1 = 21 -GRBM_PERF_SEL_RESERVED_0 = 22 -GRBM_PERF_SEL_IA_BUSY = 23 -GRBM_PERF_SEL_IA_NO_DMA_BUSY = 24 -GRBM_PERF_SEL_GDS_BUSY = 25 -GRBM_PERF_SEL_BCI_BUSY = 26 -GRBM_PERF_SEL_RLC_BUSY = 27 -GRBM_PERF_SEL_TC_BUSY = 28 -GRBM_PERF_SEL_CPG_BUSY = 29 -GRBM_PERF_SEL_CPC_BUSY = 30 -GRBM_PERF_SEL_CPF_BUSY = 31 -GRBM_PERF_SEL_WD_BUSY = 32 -GRBM_PERF_SEL_WD_NO_DMA_BUSY = 33 -GRBM_PERF_SEL_UTCL2_BUSY = 34 -GRBM_PERF_SEL_EA_BUSY = 35 -GRBM_PERF_SEL_RMI_BUSY = 36 -GRBM_PERF_SEL_CPAXI_BUSY = 37 -GRBM_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE0_PERF_SEL' -GRBM_SE0_PERF_SEL__enumvalues = { - 0: 'GRBM_SE0_PERF_SEL_COUNT', - 1: 'GRBM_SE0_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE0_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE0_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE0_PERF_SEL_SC_BUSY', - 5: 'GRBM_SE0_PERF_SEL_RESERVED_1', - 6: 'GRBM_SE0_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE0_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE0_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE0_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE0_PERF_SEL_DB_CLEAN', - 11: 'GRBM_SE0_PERF_SEL_RESERVED_0', - 12: 'GRBM_SE0_PERF_SEL_PA_BUSY', - 13: 'GRBM_SE0_PERF_SEL_VGT_BUSY', - 14: 'GRBM_SE0_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE0_PERF_SEL_RMI_BUSY', -} -GRBM_SE0_PERF_SEL_COUNT = 0 -GRBM_SE0_PERF_SEL_USER_DEFINED = 1 -GRBM_SE0_PERF_SEL_CB_BUSY = 2 -GRBM_SE0_PERF_SEL_DB_BUSY = 3 -GRBM_SE0_PERF_SEL_SC_BUSY = 4 -GRBM_SE0_PERF_SEL_RESERVED_1 = 5 -GRBM_SE0_PERF_SEL_SPI_BUSY = 6 -GRBM_SE0_PERF_SEL_SX_BUSY = 7 -GRBM_SE0_PERF_SEL_TA_BUSY = 8 -GRBM_SE0_PERF_SEL_CB_CLEAN = 9 -GRBM_SE0_PERF_SEL_DB_CLEAN = 10 -GRBM_SE0_PERF_SEL_RESERVED_0 = 11 -GRBM_SE0_PERF_SEL_PA_BUSY = 12 -GRBM_SE0_PERF_SEL_VGT_BUSY = 13 -GRBM_SE0_PERF_SEL_BCI_BUSY = 14 -GRBM_SE0_PERF_SEL_RMI_BUSY = 15 -GRBM_SE0_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE1_PERF_SEL' -GRBM_SE1_PERF_SEL__enumvalues = { - 0: 'GRBM_SE1_PERF_SEL_COUNT', - 1: 'GRBM_SE1_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE1_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE1_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE1_PERF_SEL_SC_BUSY', - 5: 'GRBM_SE1_PERF_SEL_RESERVED_1', - 6: 'GRBM_SE1_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE1_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE1_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE1_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE1_PERF_SEL_DB_CLEAN', - 11: 'GRBM_SE1_PERF_SEL_RESERVED_0', - 12: 'GRBM_SE1_PERF_SEL_PA_BUSY', - 13: 'GRBM_SE1_PERF_SEL_VGT_BUSY', - 14: 'GRBM_SE1_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE1_PERF_SEL_RMI_BUSY', -} -GRBM_SE1_PERF_SEL_COUNT = 0 -GRBM_SE1_PERF_SEL_USER_DEFINED = 1 -GRBM_SE1_PERF_SEL_CB_BUSY = 2 -GRBM_SE1_PERF_SEL_DB_BUSY = 3 -GRBM_SE1_PERF_SEL_SC_BUSY = 4 -GRBM_SE1_PERF_SEL_RESERVED_1 = 5 -GRBM_SE1_PERF_SEL_SPI_BUSY = 6 -GRBM_SE1_PERF_SEL_SX_BUSY = 7 -GRBM_SE1_PERF_SEL_TA_BUSY = 8 -GRBM_SE1_PERF_SEL_CB_CLEAN = 9 -GRBM_SE1_PERF_SEL_DB_CLEAN = 10 -GRBM_SE1_PERF_SEL_RESERVED_0 = 11 -GRBM_SE1_PERF_SEL_PA_BUSY = 12 -GRBM_SE1_PERF_SEL_VGT_BUSY = 13 -GRBM_SE1_PERF_SEL_BCI_BUSY = 14 -GRBM_SE1_PERF_SEL_RMI_BUSY = 15 -GRBM_SE1_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE2_PERF_SEL' -GRBM_SE2_PERF_SEL__enumvalues = { - 0: 'GRBM_SE2_PERF_SEL_COUNT', - 1: 'GRBM_SE2_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE2_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE2_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE2_PERF_SEL_SC_BUSY', - 5: 'GRBM_SE2_PERF_SEL_RESERVED_1', - 6: 'GRBM_SE2_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE2_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE2_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE2_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE2_PERF_SEL_DB_CLEAN', - 11: 'GRBM_SE2_PERF_SEL_RESERVED_0', - 12: 'GRBM_SE2_PERF_SEL_PA_BUSY', - 13: 'GRBM_SE2_PERF_SEL_VGT_BUSY', - 14: 'GRBM_SE2_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE2_PERF_SEL_RMI_BUSY', -} -GRBM_SE2_PERF_SEL_COUNT = 0 -GRBM_SE2_PERF_SEL_USER_DEFINED = 1 -GRBM_SE2_PERF_SEL_CB_BUSY = 2 -GRBM_SE2_PERF_SEL_DB_BUSY = 3 -GRBM_SE2_PERF_SEL_SC_BUSY = 4 -GRBM_SE2_PERF_SEL_RESERVED_1 = 5 -GRBM_SE2_PERF_SEL_SPI_BUSY = 6 -GRBM_SE2_PERF_SEL_SX_BUSY = 7 -GRBM_SE2_PERF_SEL_TA_BUSY = 8 -GRBM_SE2_PERF_SEL_CB_CLEAN = 9 -GRBM_SE2_PERF_SEL_DB_CLEAN = 10 -GRBM_SE2_PERF_SEL_RESERVED_0 = 11 -GRBM_SE2_PERF_SEL_PA_BUSY = 12 -GRBM_SE2_PERF_SEL_VGT_BUSY = 13 -GRBM_SE2_PERF_SEL_BCI_BUSY = 14 -GRBM_SE2_PERF_SEL_RMI_BUSY = 15 -GRBM_SE2_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE3_PERF_SEL' -GRBM_SE3_PERF_SEL__enumvalues = { - 0: 'GRBM_SE3_PERF_SEL_COUNT', - 1: 'GRBM_SE3_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE3_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE3_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE3_PERF_SEL_SC_BUSY', - 5: 'GRBM_SE3_PERF_SEL_RESERVED_1', - 6: 'GRBM_SE3_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE3_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE3_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE3_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE3_PERF_SEL_DB_CLEAN', - 11: 'GRBM_SE3_PERF_SEL_RESERVED_0', - 12: 'GRBM_SE3_PERF_SEL_PA_BUSY', - 13: 'GRBM_SE3_PERF_SEL_VGT_BUSY', - 14: 'GRBM_SE3_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE3_PERF_SEL_RMI_BUSY', -} -GRBM_SE3_PERF_SEL_COUNT = 0 -GRBM_SE3_PERF_SEL_USER_DEFINED = 1 -GRBM_SE3_PERF_SEL_CB_BUSY = 2 -GRBM_SE3_PERF_SEL_DB_BUSY = 3 -GRBM_SE3_PERF_SEL_SC_BUSY = 4 -GRBM_SE3_PERF_SEL_RESERVED_1 = 5 -GRBM_SE3_PERF_SEL_SPI_BUSY = 6 -GRBM_SE3_PERF_SEL_SX_BUSY = 7 -GRBM_SE3_PERF_SEL_TA_BUSY = 8 -GRBM_SE3_PERF_SEL_CB_CLEAN = 9 -GRBM_SE3_PERF_SEL_DB_CLEAN = 10 -GRBM_SE3_PERF_SEL_RESERVED_0 = 11 -GRBM_SE3_PERF_SEL_PA_BUSY = 12 -GRBM_SE3_PERF_SEL_VGT_BUSY = 13 -GRBM_SE3_PERF_SEL_BCI_BUSY = 14 -GRBM_SE3_PERF_SEL_RMI_BUSY = 15 -GRBM_SE3_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CP_RING_ID' -CP_RING_ID__enumvalues = { - 0: 'RINGID0', - 1: 'RINGID1', - 2: 'RINGID2', - 3: 'RINGID3', -} -RINGID0 = 0 -RINGID1 = 1 -RINGID2 = 2 -RINGID3 = 3 -CP_RING_ID = ctypes.c_uint32 # enum - -# values for enumeration 'CP_PIPE_ID' -CP_PIPE_ID__enumvalues = { - 0: 'PIPE_ID0', - 1: 'PIPE_ID1', - 2: 'PIPE_ID2', - 3: 'PIPE_ID3', -} -PIPE_ID0 = 0 -PIPE_ID1 = 1 -PIPE_ID2 = 2 -PIPE_ID3 = 3 -CP_PIPE_ID = ctypes.c_uint32 # enum - -# values for enumeration 'CP_ME_ID' -CP_ME_ID__enumvalues = { - 0: 'ME_ID0', - 1: 'ME_ID1', - 2: 'ME_ID2', - 3: 'ME_ID3', -} -ME_ID0 = 0 -ME_ID1 = 1 -ME_ID2 = 2 -ME_ID3 = 3 -CP_ME_ID = ctypes.c_uint32 # enum - -# values for enumeration 'SPM_PERFMON_STATE' -SPM_PERFMON_STATE__enumvalues = { - 0: 'STRM_PERFMON_STATE_DISABLE_AND_RESET', - 1: 'STRM_PERFMON_STATE_START_COUNTING', - 2: 'STRM_PERFMON_STATE_STOP_COUNTING', - 3: 'STRM_PERFMON_STATE_RESERVED_3', - 4: 'STRM_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 5: 'STRM_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', -} -STRM_PERFMON_STATE_DISABLE_AND_RESET = 0 -STRM_PERFMON_STATE_START_COUNTING = 1 -STRM_PERFMON_STATE_STOP_COUNTING = 2 -STRM_PERFMON_STATE_RESERVED_3 = 3 -STRM_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM = 4 -STRM_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM = 5 -SPM_PERFMON_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'CP_PERFMON_STATE' -CP_PERFMON_STATE__enumvalues = { - 0: 'CP_PERFMON_STATE_DISABLE_AND_RESET', - 1: 'CP_PERFMON_STATE_START_COUNTING', - 2: 'CP_PERFMON_STATE_STOP_COUNTING', - 3: 'CP_PERFMON_STATE_RESERVED_3', - 4: 'CP_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 5: 'CP_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', -} -CP_PERFMON_STATE_DISABLE_AND_RESET = 0 -CP_PERFMON_STATE_START_COUNTING = 1 -CP_PERFMON_STATE_STOP_COUNTING = 2 -CP_PERFMON_STATE_RESERVED_3 = 3 -CP_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM = 4 -CP_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM = 5 -CP_PERFMON_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'CP_PERFMON_ENABLE_MODE' -CP_PERFMON_ENABLE_MODE__enumvalues = { - 0: 'CP_PERFMON_ENABLE_MODE_ALWAYS_COUNT', - 1: 'CP_PERFMON_ENABLE_MODE_RESERVED_1', - 2: 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_TRUE', - 3: 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_FALSE', -} -CP_PERFMON_ENABLE_MODE_ALWAYS_COUNT = 0 -CP_PERFMON_ENABLE_MODE_RESERVED_1 = 1 -CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_TRUE = 2 -CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_FALSE = 3 -CP_PERFMON_ENABLE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CPG_PERFCOUNT_SEL' -CPG_PERFCOUNT_SEL__enumvalues = { - 0: 'CPG_PERF_SEL_ALWAYS_COUNT', - 1: 'CPG_PERF_SEL_RBIU_FIFO_FULL', - 2: 'CPG_PERF_SEL_CSF_RTS_BUT_MIU_NOT_RTR', - 3: 'CPG_PERF_SEL_CSF_ST_BASE_SIZE_FIFO_FULL', - 4: 'CPG_PERF_SEL_CP_GRBM_DWORDS_SENT', - 5: 'CPG_PERF_SEL_ME_PARSER_BUSY', - 6: 'CPG_PERF_SEL_COUNT_TYPE0_PACKETS', - 7: 'CPG_PERF_SEL_COUNT_TYPE3_PACKETS', - 8: 'CPG_PERF_SEL_CSF_FETCHING_CMD_BUFFERS', - 9: 'CPG_PERF_SEL_CP_GRBM_OUT_OF_CREDITS', - 10: 'CPG_PERF_SEL_CP_PFP_GRBM_OUT_OF_CREDITS', - 11: 'CPG_PERF_SEL_CP_GDS_GRBM_OUT_OF_CREDITS', - 12: 'CPG_PERF_SEL_RCIU_STALLED_ON_ME_READ', - 13: 'CPG_PERF_SEL_RCIU_STALLED_ON_DMA_READ', - 14: 'CPG_PERF_SEL_SSU_STALLED_ON_ACTIVE_CNTX', - 15: 'CPG_PERF_SEL_SSU_STALLED_ON_CLEAN_SIGNALS', - 16: 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_PULSE', - 17: 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_WR_CONFIRM', - 18: 'CPG_PERF_SEL_PFP_STALLED_ON_CSF_READY', - 19: 'CPG_PERF_SEL_PFP_STALLED_ON_MEQ_READY', - 20: 'CPG_PERF_SEL_PFP_STALLED_ON_RCIU_READY', - 21: 'CPG_PERF_SEL_PFP_STALLED_FOR_DATA_FROM_ROQ', - 22: 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_PFP', - 23: 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_STQ', - 24: 'CPG_PERF_SEL_ME_STALLED_ON_NO_AVAIL_GFX_CNTX', - 25: 'CPG_PERF_SEL_ME_STALLED_WRITING_TO_RCIU', - 26: 'CPG_PERF_SEL_ME_STALLED_WRITING_CONSTANTS', - 27: 'CPG_PERF_SEL_ME_STALLED_ON_PARTIAL_FLUSH', - 28: 'CPG_PERF_SEL_ME_WAIT_ON_CE_COUNTER', - 29: 'CPG_PERF_SEL_ME_WAIT_ON_AVAIL_BUFFER', - 30: 'CPG_PERF_SEL_SEMAPHORE_BUSY_POLLING_FOR_PASS', - 31: 'CPG_PERF_SEL_LOAD_STALLED_ON_SET_COHERENCY', - 32: 'CPG_PERF_SEL_DYNAMIC_CLK_VALID', - 33: 'CPG_PERF_SEL_REGISTER_CLK_VALID', - 34: 'CPG_PERF_SEL_MIU_WRITE_REQUEST_SENT', - 35: 'CPG_PERF_SEL_MIU_READ_REQUEST_SENT', - 36: 'CPG_PERF_SEL_CE_STALL_RAM_DUMP', - 37: 'CPG_PERF_SEL_CE_STALL_RAM_WRITE', - 38: 'CPG_PERF_SEL_CE_STALL_ON_INC_FIFO', - 39: 'CPG_PERF_SEL_CE_STALL_ON_WR_RAM_FIFO', - 40: 'CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_MIU', - 41: 'CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_ROQ', - 42: 'CPG_PERF_SEL_CE_STALL_ON_CE_BUFFER_FLAG', - 43: 'CPG_PERF_SEL_CE_STALL_ON_DE_COUNTER', - 44: 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 45: 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_TAGS', - 46: 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 47: 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', - 48: 'CPG_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', -} -CPG_PERF_SEL_ALWAYS_COUNT = 0 -CPG_PERF_SEL_RBIU_FIFO_FULL = 1 -CPG_PERF_SEL_CSF_RTS_BUT_MIU_NOT_RTR = 2 -CPG_PERF_SEL_CSF_ST_BASE_SIZE_FIFO_FULL = 3 -CPG_PERF_SEL_CP_GRBM_DWORDS_SENT = 4 -CPG_PERF_SEL_ME_PARSER_BUSY = 5 -CPG_PERF_SEL_COUNT_TYPE0_PACKETS = 6 -CPG_PERF_SEL_COUNT_TYPE3_PACKETS = 7 -CPG_PERF_SEL_CSF_FETCHING_CMD_BUFFERS = 8 -CPG_PERF_SEL_CP_GRBM_OUT_OF_CREDITS = 9 -CPG_PERF_SEL_CP_PFP_GRBM_OUT_OF_CREDITS = 10 -CPG_PERF_SEL_CP_GDS_GRBM_OUT_OF_CREDITS = 11 -CPG_PERF_SEL_RCIU_STALLED_ON_ME_READ = 12 -CPG_PERF_SEL_RCIU_STALLED_ON_DMA_READ = 13 -CPG_PERF_SEL_SSU_STALLED_ON_ACTIVE_CNTX = 14 -CPG_PERF_SEL_SSU_STALLED_ON_CLEAN_SIGNALS = 15 -CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_PULSE = 16 -CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_WR_CONFIRM = 17 -CPG_PERF_SEL_PFP_STALLED_ON_CSF_READY = 18 -CPG_PERF_SEL_PFP_STALLED_ON_MEQ_READY = 19 -CPG_PERF_SEL_PFP_STALLED_ON_RCIU_READY = 20 -CPG_PERF_SEL_PFP_STALLED_FOR_DATA_FROM_ROQ = 21 -CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_PFP = 22 -CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_STQ = 23 -CPG_PERF_SEL_ME_STALLED_ON_NO_AVAIL_GFX_CNTX = 24 -CPG_PERF_SEL_ME_STALLED_WRITING_TO_RCIU = 25 -CPG_PERF_SEL_ME_STALLED_WRITING_CONSTANTS = 26 -CPG_PERF_SEL_ME_STALLED_ON_PARTIAL_FLUSH = 27 -CPG_PERF_SEL_ME_WAIT_ON_CE_COUNTER = 28 -CPG_PERF_SEL_ME_WAIT_ON_AVAIL_BUFFER = 29 -CPG_PERF_SEL_SEMAPHORE_BUSY_POLLING_FOR_PASS = 30 -CPG_PERF_SEL_LOAD_STALLED_ON_SET_COHERENCY = 31 -CPG_PERF_SEL_DYNAMIC_CLK_VALID = 32 -CPG_PERF_SEL_REGISTER_CLK_VALID = 33 -CPG_PERF_SEL_MIU_WRITE_REQUEST_SENT = 34 -CPG_PERF_SEL_MIU_READ_REQUEST_SENT = 35 -CPG_PERF_SEL_CE_STALL_RAM_DUMP = 36 -CPG_PERF_SEL_CE_STALL_RAM_WRITE = 37 -CPG_PERF_SEL_CE_STALL_ON_INC_FIFO = 38 -CPG_PERF_SEL_CE_STALL_ON_WR_RAM_FIFO = 39 -CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_MIU = 40 -CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_ROQ = 41 -CPG_PERF_SEL_CE_STALL_ON_CE_BUFFER_FLAG = 42 -CPG_PERF_SEL_CE_STALL_ON_DE_COUNTER = 43 -CPG_PERF_SEL_TCIU_STALL_WAIT_ON_FREE = 44 -CPG_PERF_SEL_TCIU_STALL_WAIT_ON_TAGS = 45 -CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE = 46 -CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS = 47 -CPG_PERF_SEL_UTCL1_STALL_ON_TRANSLATION = 48 -CPG_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPF_PERFCOUNT_SEL' -CPF_PERFCOUNT_SEL__enumvalues = { - 0: 'CPF_PERF_SEL_ALWAYS_COUNT', - 1: 'CPF_PERF_SEL_MIU_STALLED_WAITING_RDREQ_FREE', - 2: 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_FREE', - 3: 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_TAGS', - 4: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_RING', - 5: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB1', - 6: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB2', - 7: 'CPF_PERF_SEL_CSF_BUSY_FOR_FECTHINC_STATE', - 8: 'CPF_PERF_SEL_MIU_BUSY_FOR_OUTSTANDING_TAGS', - 9: 'CPF_PERF_SEL_CSF_RTS_MIU_NOT_RTR', - 10: 'CPF_PERF_SEL_CSF_STATE_FIFO_NOT_RTR', - 11: 'CPF_PERF_SEL_CSF_FETCHING_CMD_BUFFERS', - 12: 'CPF_PERF_SEL_GRBM_DWORDS_SENT', - 13: 'CPF_PERF_SEL_DYNAMIC_CLOCK_VALID', - 14: 'CPF_PERF_SEL_REGISTER_CLOCK_VALID', - 15: 'CPF_PERF_SEL_MIU_WRITE_REQUEST_SEND', - 16: 'CPF_PERF_SEL_MIU_READ_REQUEST_SEND', - 17: 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 18: 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', - 19: 'CPF_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 20: 'CPF_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', -} -CPF_PERF_SEL_ALWAYS_COUNT = 0 -CPF_PERF_SEL_MIU_STALLED_WAITING_RDREQ_FREE = 1 -CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_FREE = 2 -CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_TAGS = 3 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_RING = 4 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB1 = 5 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB2 = 6 -CPF_PERF_SEL_CSF_BUSY_FOR_FECTHINC_STATE = 7 -CPF_PERF_SEL_MIU_BUSY_FOR_OUTSTANDING_TAGS = 8 -CPF_PERF_SEL_CSF_RTS_MIU_NOT_RTR = 9 -CPF_PERF_SEL_CSF_STATE_FIFO_NOT_RTR = 10 -CPF_PERF_SEL_CSF_FETCHING_CMD_BUFFERS = 11 -CPF_PERF_SEL_GRBM_DWORDS_SENT = 12 -CPF_PERF_SEL_DYNAMIC_CLOCK_VALID = 13 -CPF_PERF_SEL_REGISTER_CLOCK_VALID = 14 -CPF_PERF_SEL_MIU_WRITE_REQUEST_SEND = 15 -CPF_PERF_SEL_MIU_READ_REQUEST_SEND = 16 -CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE = 17 -CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS = 18 -CPF_PERF_SEL_UTCL1_STALL_ON_TRANSLATION = 19 -CPF_PERF_SEL_RCIU_STALL_WAIT_ON_FREE = 20 -CPF_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPC_PERFCOUNT_SEL' -CPC_PERFCOUNT_SEL__enumvalues = { - 0: 'CPC_PERF_SEL_ALWAYS_COUNT', - 1: 'CPC_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', - 2: 'CPC_PERF_SEL_RCIU_STALL_PRIV_VIOLATION', - 3: 'CPC_PERF_SEL_MIU_STALL_ON_RDREQ_FREE', - 4: 'CPC_PERF_SEL_MIU_STALL_ON_WRREQ_FREE', - 5: 'CPC_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 6: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY', - 7: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY_PERF', - 8: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READ', - 9: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_MIU_READ', - 10: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_MIU_WRITE', - 11: 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ', - 12: 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ_PERF', - 13: 'CPC_PERF_SEL_ME1_BUSY_FOR_PACKET_DECODE', - 14: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY', - 15: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY_PERF', - 16: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READ', - 17: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_MIU_READ', - 18: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_MIU_WRITE', - 19: 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ', - 20: 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ_PERF', - 21: 'CPC_PERF_SEL_ME2_BUSY_FOR_PACKET_DECODE', - 22: 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 23: 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', - 24: 'CPC_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', -} -CPC_PERF_SEL_ALWAYS_COUNT = 0 -CPC_PERF_SEL_RCIU_STALL_WAIT_ON_FREE = 1 -CPC_PERF_SEL_RCIU_STALL_PRIV_VIOLATION = 2 -CPC_PERF_SEL_MIU_STALL_ON_RDREQ_FREE = 3 -CPC_PERF_SEL_MIU_STALL_ON_WRREQ_FREE = 4 -CPC_PERF_SEL_TCIU_STALL_WAIT_ON_FREE = 5 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY = 6 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY_PERF = 7 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READ = 8 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_MIU_READ = 9 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_MIU_WRITE = 10 -CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ = 11 -CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ_PERF = 12 -CPC_PERF_SEL_ME1_BUSY_FOR_PACKET_DECODE = 13 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY = 14 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY_PERF = 15 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READ = 16 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_MIU_READ = 17 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_MIU_WRITE = 18 -CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ = 19 -CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ_PERF = 20 -CPC_PERF_SEL_ME2_BUSY_FOR_PACKET_DECODE = 21 -CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE = 22 -CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS = 23 -CPC_PERF_SEL_UTCL1_STALL_ON_TRANSLATION = 24 -CPC_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CP_ALPHA_TAG_RAM_SEL' -CP_ALPHA_TAG_RAM_SEL__enumvalues = { - 0: 'CPG_TAG_RAM', - 1: 'CPC_TAG_RAM', - 2: 'CPF_TAG_RAM', - 3: 'RSV_TAG_RAM', -} -CPG_TAG_RAM = 0 -CPC_TAG_RAM = 1 -CPF_TAG_RAM = 2 -RSV_TAG_RAM = 3 -CP_ALPHA_TAG_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SX_BLEND_OPT' -SX_BLEND_OPT__enumvalues = { - 0: 'BLEND_OPT_PRESERVE_NONE_IGNORE_ALL', - 1: 'BLEND_OPT_PRESERVE_ALL_IGNORE_NONE', - 2: 'BLEND_OPT_PRESERVE_C1_IGNORE_C0', - 3: 'BLEND_OPT_PRESERVE_C0_IGNORE_C1', - 4: 'BLEND_OPT_PRESERVE_A1_IGNORE_A0', - 5: 'BLEND_OPT_PRESERVE_A0_IGNORE_A1', - 6: 'BLEND_OPT_PRESERVE_NONE_IGNORE_A0', - 7: 'BLEND_OPT_PRESERVE_NONE_IGNORE_NONE', -} -BLEND_OPT_PRESERVE_NONE_IGNORE_ALL = 0 -BLEND_OPT_PRESERVE_ALL_IGNORE_NONE = 1 -BLEND_OPT_PRESERVE_C1_IGNORE_C0 = 2 -BLEND_OPT_PRESERVE_C0_IGNORE_C1 = 3 -BLEND_OPT_PRESERVE_A1_IGNORE_A0 = 4 -BLEND_OPT_PRESERVE_A0_IGNORE_A1 = 5 -BLEND_OPT_PRESERVE_NONE_IGNORE_A0 = 6 -BLEND_OPT_PRESERVE_NONE_IGNORE_NONE = 7 -SX_BLEND_OPT = ctypes.c_uint32 # enum - -# values for enumeration 'SX_OPT_COMB_FCN' -SX_OPT_COMB_FCN__enumvalues = { - 0: 'OPT_COMB_NONE', - 1: 'OPT_COMB_ADD', - 2: 'OPT_COMB_SUBTRACT', - 3: 'OPT_COMB_MIN', - 4: 'OPT_COMB_MAX', - 5: 'OPT_COMB_REVSUBTRACT', - 6: 'OPT_COMB_BLEND_DISABLED', - 7: 'OPT_COMB_SAFE_ADD', -} -OPT_COMB_NONE = 0 -OPT_COMB_ADD = 1 -OPT_COMB_SUBTRACT = 2 -OPT_COMB_MIN = 3 -OPT_COMB_MAX = 4 -OPT_COMB_REVSUBTRACT = 5 -OPT_COMB_BLEND_DISABLED = 6 -OPT_COMB_SAFE_ADD = 7 -SX_OPT_COMB_FCN = ctypes.c_uint32 # enum - -# values for enumeration 'SX_DOWNCONVERT_FORMAT' -SX_DOWNCONVERT_FORMAT__enumvalues = { - 0: 'SX_RT_EXPORT_NO_CONVERSION', - 1: 'SX_RT_EXPORT_32_R', - 2: 'SX_RT_EXPORT_32_A', - 3: 'SX_RT_EXPORT_10_11_11', - 4: 'SX_RT_EXPORT_2_10_10_10', - 5: 'SX_RT_EXPORT_8_8_8_8', - 6: 'SX_RT_EXPORT_5_6_5', - 7: 'SX_RT_EXPORT_1_5_5_5', - 8: 'SX_RT_EXPORT_4_4_4_4', - 9: 'SX_RT_EXPORT_16_16_GR', - 10: 'SX_RT_EXPORT_16_16_AR', -} -SX_RT_EXPORT_NO_CONVERSION = 0 -SX_RT_EXPORT_32_R = 1 -SX_RT_EXPORT_32_A = 2 -SX_RT_EXPORT_10_11_11 = 3 -SX_RT_EXPORT_2_10_10_10 = 4 -SX_RT_EXPORT_8_8_8_8 = 5 -SX_RT_EXPORT_5_6_5 = 6 -SX_RT_EXPORT_1_5_5_5 = 7 -SX_RT_EXPORT_4_4_4_4 = 8 -SX_RT_EXPORT_16_16_GR = 9 -SX_RT_EXPORT_16_16_AR = 10 -SX_DOWNCONVERT_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'SX_PERFCOUNTER_VALS' -SX_PERFCOUNTER_VALS__enumvalues = { - 0: 'SX_PERF_SEL_PA_IDLE_CYCLES', - 1: 'SX_PERF_SEL_PA_REQ', - 2: 'SX_PERF_SEL_PA_POS', - 3: 'SX_PERF_SEL_CLOCK', - 4: 'SX_PERF_SEL_GATE_EN1', - 5: 'SX_PERF_SEL_GATE_EN2', - 6: 'SX_PERF_SEL_GATE_EN3', - 7: 'SX_PERF_SEL_GATE_EN4', - 8: 'SX_PERF_SEL_SH_POS_STARVE', - 9: 'SX_PERF_SEL_SH_COLOR_STARVE', - 10: 'SX_PERF_SEL_SH_POS_STALL', - 11: 'SX_PERF_SEL_SH_COLOR_STALL', - 12: 'SX_PERF_SEL_DB0_PIXELS', - 13: 'SX_PERF_SEL_DB0_HALF_QUADS', - 14: 'SX_PERF_SEL_DB0_PIXEL_STALL', - 15: 'SX_PERF_SEL_DB0_PIXEL_IDLE', - 16: 'SX_PERF_SEL_DB0_PRED_PIXELS', - 17: 'SX_PERF_SEL_DB1_PIXELS', - 18: 'SX_PERF_SEL_DB1_HALF_QUADS', - 19: 'SX_PERF_SEL_DB1_PIXEL_STALL', - 20: 'SX_PERF_SEL_DB1_PIXEL_IDLE', - 21: 'SX_PERF_SEL_DB1_PRED_PIXELS', - 22: 'SX_PERF_SEL_DB2_PIXELS', - 23: 'SX_PERF_SEL_DB2_HALF_QUADS', - 24: 'SX_PERF_SEL_DB2_PIXEL_STALL', - 25: 'SX_PERF_SEL_DB2_PIXEL_IDLE', - 26: 'SX_PERF_SEL_DB2_PRED_PIXELS', - 27: 'SX_PERF_SEL_DB3_PIXELS', - 28: 'SX_PERF_SEL_DB3_HALF_QUADS', - 29: 'SX_PERF_SEL_DB3_PIXEL_STALL', - 30: 'SX_PERF_SEL_DB3_PIXEL_IDLE', - 31: 'SX_PERF_SEL_DB3_PRED_PIXELS', - 32: 'SX_PERF_SEL_COL_BUSY', - 33: 'SX_PERF_SEL_POS_BUSY', - 34: 'SX_PERF_SEL_DB0_A2M_DISCARD_QUADS', - 35: 'SX_PERF_SEL_DB0_MRT0_BLEND_BYPASS', - 36: 'SX_PERF_SEL_DB0_MRT0_DONT_RD_DEST', - 37: 'SX_PERF_SEL_DB0_MRT0_DISCARD_SRC', - 38: 'SX_PERF_SEL_DB0_MRT0_SINGLE_QUADS', - 39: 'SX_PERF_SEL_DB0_MRT0_DOUBLE_QUADS', - 40: 'SX_PERF_SEL_DB0_MRT1_BLEND_BYPASS', - 41: 'SX_PERF_SEL_DB0_MRT1_DONT_RD_DEST', - 42: 'SX_PERF_SEL_DB0_MRT1_DISCARD_SRC', - 43: 'SX_PERF_SEL_DB0_MRT1_SINGLE_QUADS', - 44: 'SX_PERF_SEL_DB0_MRT1_DOUBLE_QUADS', - 45: 'SX_PERF_SEL_DB0_MRT2_BLEND_BYPASS', - 46: 'SX_PERF_SEL_DB0_MRT2_DONT_RD_DEST', - 47: 'SX_PERF_SEL_DB0_MRT2_DISCARD_SRC', - 48: 'SX_PERF_SEL_DB0_MRT2_SINGLE_QUADS', - 49: 'SX_PERF_SEL_DB0_MRT2_DOUBLE_QUADS', - 50: 'SX_PERF_SEL_DB0_MRT3_BLEND_BYPASS', - 51: 'SX_PERF_SEL_DB0_MRT3_DONT_RD_DEST', - 52: 'SX_PERF_SEL_DB0_MRT3_DISCARD_SRC', - 53: 'SX_PERF_SEL_DB0_MRT3_SINGLE_QUADS', - 54: 'SX_PERF_SEL_DB0_MRT3_DOUBLE_QUADS', - 55: 'SX_PERF_SEL_DB0_MRT4_BLEND_BYPASS', - 56: 'SX_PERF_SEL_DB0_MRT4_DONT_RD_DEST', - 57: 'SX_PERF_SEL_DB0_MRT4_DISCARD_SRC', - 58: 'SX_PERF_SEL_DB0_MRT4_SINGLE_QUADS', - 59: 'SX_PERF_SEL_DB0_MRT4_DOUBLE_QUADS', - 60: 'SX_PERF_SEL_DB0_MRT5_BLEND_BYPASS', - 61: 'SX_PERF_SEL_DB0_MRT5_DONT_RD_DEST', - 62: 'SX_PERF_SEL_DB0_MRT5_DISCARD_SRC', - 63: 'SX_PERF_SEL_DB0_MRT5_SINGLE_QUADS', - 64: 'SX_PERF_SEL_DB0_MRT5_DOUBLE_QUADS', - 65: 'SX_PERF_SEL_DB0_MRT6_BLEND_BYPASS', - 66: 'SX_PERF_SEL_DB0_MRT6_DONT_RD_DEST', - 67: 'SX_PERF_SEL_DB0_MRT6_DISCARD_SRC', - 68: 'SX_PERF_SEL_DB0_MRT6_SINGLE_QUADS', - 69: 'SX_PERF_SEL_DB0_MRT6_DOUBLE_QUADS', - 70: 'SX_PERF_SEL_DB0_MRT7_BLEND_BYPASS', - 71: 'SX_PERF_SEL_DB0_MRT7_DONT_RD_DEST', - 72: 'SX_PERF_SEL_DB0_MRT7_DISCARD_SRC', - 73: 'SX_PERF_SEL_DB0_MRT7_SINGLE_QUADS', - 74: 'SX_PERF_SEL_DB0_MRT7_DOUBLE_QUADS', - 75: 'SX_PERF_SEL_DB1_A2M_DISCARD_QUADS', - 76: 'SX_PERF_SEL_DB1_MRT0_BLEND_BYPASS', - 77: 'SX_PERF_SEL_DB1_MRT0_DONT_RD_DEST', - 78: 'SX_PERF_SEL_DB1_MRT0_DISCARD_SRC', - 79: 'SX_PERF_SEL_DB1_MRT0_SINGLE_QUADS', - 80: 'SX_PERF_SEL_DB1_MRT0_DOUBLE_QUADS', - 81: 'SX_PERF_SEL_DB1_MRT1_BLEND_BYPASS', - 82: 'SX_PERF_SEL_DB1_MRT1_DONT_RD_DEST', - 83: 'SX_PERF_SEL_DB1_MRT1_DISCARD_SRC', - 84: 'SX_PERF_SEL_DB1_MRT1_SINGLE_QUADS', - 85: 'SX_PERF_SEL_DB1_MRT1_DOUBLE_QUADS', - 86: 'SX_PERF_SEL_DB1_MRT2_BLEND_BYPASS', - 87: 'SX_PERF_SEL_DB1_MRT2_DONT_RD_DEST', - 88: 'SX_PERF_SEL_DB1_MRT2_DISCARD_SRC', - 89: 'SX_PERF_SEL_DB1_MRT2_SINGLE_QUADS', - 90: 'SX_PERF_SEL_DB1_MRT2_DOUBLE_QUADS', - 91: 'SX_PERF_SEL_DB1_MRT3_BLEND_BYPASS', - 92: 'SX_PERF_SEL_DB1_MRT3_DONT_RD_DEST', - 93: 'SX_PERF_SEL_DB1_MRT3_DISCARD_SRC', - 94: 'SX_PERF_SEL_DB1_MRT3_SINGLE_QUADS', - 95: 'SX_PERF_SEL_DB1_MRT3_DOUBLE_QUADS', - 96: 'SX_PERF_SEL_DB1_MRT4_BLEND_BYPASS', - 97: 'SX_PERF_SEL_DB1_MRT4_DONT_RD_DEST', - 98: 'SX_PERF_SEL_DB1_MRT4_DISCARD_SRC', - 99: 'SX_PERF_SEL_DB1_MRT4_SINGLE_QUADS', - 100: 'SX_PERF_SEL_DB1_MRT4_DOUBLE_QUADS', - 101: 'SX_PERF_SEL_DB1_MRT5_BLEND_BYPASS', - 102: 'SX_PERF_SEL_DB1_MRT5_DONT_RD_DEST', - 103: 'SX_PERF_SEL_DB1_MRT5_DISCARD_SRC', - 104: 'SX_PERF_SEL_DB1_MRT5_SINGLE_QUADS', - 105: 'SX_PERF_SEL_DB1_MRT5_DOUBLE_QUADS', - 106: 'SX_PERF_SEL_DB1_MRT6_BLEND_BYPASS', - 107: 'SX_PERF_SEL_DB1_MRT6_DONT_RD_DEST', - 108: 'SX_PERF_SEL_DB1_MRT6_DISCARD_SRC', - 109: 'SX_PERF_SEL_DB1_MRT6_SINGLE_QUADS', - 110: 'SX_PERF_SEL_DB1_MRT6_DOUBLE_QUADS', - 111: 'SX_PERF_SEL_DB1_MRT7_BLEND_BYPASS', - 112: 'SX_PERF_SEL_DB1_MRT7_DONT_RD_DEST', - 113: 'SX_PERF_SEL_DB1_MRT7_DISCARD_SRC', - 114: 'SX_PERF_SEL_DB1_MRT7_SINGLE_QUADS', - 115: 'SX_PERF_SEL_DB1_MRT7_DOUBLE_QUADS', - 116: 'SX_PERF_SEL_DB2_A2M_DISCARD_QUADS', - 117: 'SX_PERF_SEL_DB2_MRT0_BLEND_BYPASS', - 118: 'SX_PERF_SEL_DB2_MRT0_DONT_RD_DEST', - 119: 'SX_PERF_SEL_DB2_MRT0_DISCARD_SRC', - 120: 'SX_PERF_SEL_DB2_MRT0_SINGLE_QUADS', - 121: 'SX_PERF_SEL_DB2_MRT0_DOUBLE_QUADS', - 122: 'SX_PERF_SEL_DB2_MRT1_BLEND_BYPASS', - 123: 'SX_PERF_SEL_DB2_MRT1_DONT_RD_DEST', - 124: 'SX_PERF_SEL_DB2_MRT1_DISCARD_SRC', - 125: 'SX_PERF_SEL_DB2_MRT1_SINGLE_QUADS', - 126: 'SX_PERF_SEL_DB2_MRT1_DOUBLE_QUADS', - 127: 'SX_PERF_SEL_DB2_MRT2_BLEND_BYPASS', - 128: 'SX_PERF_SEL_DB2_MRT2_DONT_RD_DEST', - 129: 'SX_PERF_SEL_DB2_MRT2_DISCARD_SRC', - 130: 'SX_PERF_SEL_DB2_MRT2_SINGLE_QUADS', - 131: 'SX_PERF_SEL_DB2_MRT2_DOUBLE_QUADS', - 132: 'SX_PERF_SEL_DB2_MRT3_BLEND_BYPASS', - 133: 'SX_PERF_SEL_DB2_MRT3_DONT_RD_DEST', - 134: 'SX_PERF_SEL_DB2_MRT3_DISCARD_SRC', - 135: 'SX_PERF_SEL_DB2_MRT3_SINGLE_QUADS', - 136: 'SX_PERF_SEL_DB2_MRT3_DOUBLE_QUADS', - 137: 'SX_PERF_SEL_DB2_MRT4_BLEND_BYPASS', - 138: 'SX_PERF_SEL_DB2_MRT4_DONT_RD_DEST', - 139: 'SX_PERF_SEL_DB2_MRT4_DISCARD_SRC', - 140: 'SX_PERF_SEL_DB2_MRT4_SINGLE_QUADS', - 141: 'SX_PERF_SEL_DB2_MRT4_DOUBLE_QUADS', - 142: 'SX_PERF_SEL_DB2_MRT5_BLEND_BYPASS', - 143: 'SX_PERF_SEL_DB2_MRT5_DONT_RD_DEST', - 144: 'SX_PERF_SEL_DB2_MRT5_DISCARD_SRC', - 145: 'SX_PERF_SEL_DB2_MRT5_SINGLE_QUADS', - 146: 'SX_PERF_SEL_DB2_MRT5_DOUBLE_QUADS', - 147: 'SX_PERF_SEL_DB2_MRT6_BLEND_BYPASS', - 148: 'SX_PERF_SEL_DB2_MRT6_DONT_RD_DEST', - 149: 'SX_PERF_SEL_DB2_MRT6_DISCARD_SRC', - 150: 'SX_PERF_SEL_DB2_MRT6_SINGLE_QUADS', - 151: 'SX_PERF_SEL_DB2_MRT6_DOUBLE_QUADS', - 152: 'SX_PERF_SEL_DB2_MRT7_BLEND_BYPASS', - 153: 'SX_PERF_SEL_DB2_MRT7_DONT_RD_DEST', - 154: 'SX_PERF_SEL_DB2_MRT7_DISCARD_SRC', - 155: 'SX_PERF_SEL_DB2_MRT7_SINGLE_QUADS', - 156: 'SX_PERF_SEL_DB2_MRT7_DOUBLE_QUADS', - 157: 'SX_PERF_SEL_DB3_A2M_DISCARD_QUADS', - 158: 'SX_PERF_SEL_DB3_MRT0_BLEND_BYPASS', - 159: 'SX_PERF_SEL_DB3_MRT0_DONT_RD_DEST', - 160: 'SX_PERF_SEL_DB3_MRT0_DISCARD_SRC', - 161: 'SX_PERF_SEL_DB3_MRT0_SINGLE_QUADS', - 162: 'SX_PERF_SEL_DB3_MRT0_DOUBLE_QUADS', - 163: 'SX_PERF_SEL_DB3_MRT1_BLEND_BYPASS', - 164: 'SX_PERF_SEL_DB3_MRT1_DONT_RD_DEST', - 165: 'SX_PERF_SEL_DB3_MRT1_DISCARD_SRC', - 166: 'SX_PERF_SEL_DB3_MRT1_SINGLE_QUADS', - 167: 'SX_PERF_SEL_DB3_MRT1_DOUBLE_QUADS', - 168: 'SX_PERF_SEL_DB3_MRT2_BLEND_BYPASS', - 169: 'SX_PERF_SEL_DB3_MRT2_DONT_RD_DEST', - 170: 'SX_PERF_SEL_DB3_MRT2_DISCARD_SRC', - 171: 'SX_PERF_SEL_DB3_MRT2_SINGLE_QUADS', - 172: 'SX_PERF_SEL_DB3_MRT2_DOUBLE_QUADS', - 173: 'SX_PERF_SEL_DB3_MRT3_BLEND_BYPASS', - 174: 'SX_PERF_SEL_DB3_MRT3_DONT_RD_DEST', - 175: 'SX_PERF_SEL_DB3_MRT3_DISCARD_SRC', - 176: 'SX_PERF_SEL_DB3_MRT3_SINGLE_QUADS', - 177: 'SX_PERF_SEL_DB3_MRT3_DOUBLE_QUADS', - 178: 'SX_PERF_SEL_DB3_MRT4_BLEND_BYPASS', - 179: 'SX_PERF_SEL_DB3_MRT4_DONT_RD_DEST', - 180: 'SX_PERF_SEL_DB3_MRT4_DISCARD_SRC', - 181: 'SX_PERF_SEL_DB3_MRT4_SINGLE_QUADS', - 182: 'SX_PERF_SEL_DB3_MRT4_DOUBLE_QUADS', - 183: 'SX_PERF_SEL_DB3_MRT5_BLEND_BYPASS', - 184: 'SX_PERF_SEL_DB3_MRT5_DONT_RD_DEST', - 185: 'SX_PERF_SEL_DB3_MRT5_DISCARD_SRC', - 186: 'SX_PERF_SEL_DB3_MRT5_SINGLE_QUADS', - 187: 'SX_PERF_SEL_DB3_MRT5_DOUBLE_QUADS', - 188: 'SX_PERF_SEL_DB3_MRT6_BLEND_BYPASS', - 189: 'SX_PERF_SEL_DB3_MRT6_DONT_RD_DEST', - 190: 'SX_PERF_SEL_DB3_MRT6_DISCARD_SRC', - 191: 'SX_PERF_SEL_DB3_MRT6_SINGLE_QUADS', - 192: 'SX_PERF_SEL_DB3_MRT6_DOUBLE_QUADS', - 193: 'SX_PERF_SEL_DB3_MRT7_BLEND_BYPASS', - 194: 'SX_PERF_SEL_DB3_MRT7_DONT_RD_DEST', - 195: 'SX_PERF_SEL_DB3_MRT7_DISCARD_SRC', - 196: 'SX_PERF_SEL_DB3_MRT7_SINGLE_QUADS', - 197: 'SX_PERF_SEL_DB3_MRT7_DOUBLE_QUADS', -} -SX_PERF_SEL_PA_IDLE_CYCLES = 0 -SX_PERF_SEL_PA_REQ = 1 -SX_PERF_SEL_PA_POS = 2 -SX_PERF_SEL_CLOCK = 3 -SX_PERF_SEL_GATE_EN1 = 4 -SX_PERF_SEL_GATE_EN2 = 5 -SX_PERF_SEL_GATE_EN3 = 6 -SX_PERF_SEL_GATE_EN4 = 7 -SX_PERF_SEL_SH_POS_STARVE = 8 -SX_PERF_SEL_SH_COLOR_STARVE = 9 -SX_PERF_SEL_SH_POS_STALL = 10 -SX_PERF_SEL_SH_COLOR_STALL = 11 -SX_PERF_SEL_DB0_PIXELS = 12 -SX_PERF_SEL_DB0_HALF_QUADS = 13 -SX_PERF_SEL_DB0_PIXEL_STALL = 14 -SX_PERF_SEL_DB0_PIXEL_IDLE = 15 -SX_PERF_SEL_DB0_PRED_PIXELS = 16 -SX_PERF_SEL_DB1_PIXELS = 17 -SX_PERF_SEL_DB1_HALF_QUADS = 18 -SX_PERF_SEL_DB1_PIXEL_STALL = 19 -SX_PERF_SEL_DB1_PIXEL_IDLE = 20 -SX_PERF_SEL_DB1_PRED_PIXELS = 21 -SX_PERF_SEL_DB2_PIXELS = 22 -SX_PERF_SEL_DB2_HALF_QUADS = 23 -SX_PERF_SEL_DB2_PIXEL_STALL = 24 -SX_PERF_SEL_DB2_PIXEL_IDLE = 25 -SX_PERF_SEL_DB2_PRED_PIXELS = 26 -SX_PERF_SEL_DB3_PIXELS = 27 -SX_PERF_SEL_DB3_HALF_QUADS = 28 -SX_PERF_SEL_DB3_PIXEL_STALL = 29 -SX_PERF_SEL_DB3_PIXEL_IDLE = 30 -SX_PERF_SEL_DB3_PRED_PIXELS = 31 -SX_PERF_SEL_COL_BUSY = 32 -SX_PERF_SEL_POS_BUSY = 33 -SX_PERF_SEL_DB0_A2M_DISCARD_QUADS = 34 -SX_PERF_SEL_DB0_MRT0_BLEND_BYPASS = 35 -SX_PERF_SEL_DB0_MRT0_DONT_RD_DEST = 36 -SX_PERF_SEL_DB0_MRT0_DISCARD_SRC = 37 -SX_PERF_SEL_DB0_MRT0_SINGLE_QUADS = 38 -SX_PERF_SEL_DB0_MRT0_DOUBLE_QUADS = 39 -SX_PERF_SEL_DB0_MRT1_BLEND_BYPASS = 40 -SX_PERF_SEL_DB0_MRT1_DONT_RD_DEST = 41 -SX_PERF_SEL_DB0_MRT1_DISCARD_SRC = 42 -SX_PERF_SEL_DB0_MRT1_SINGLE_QUADS = 43 -SX_PERF_SEL_DB0_MRT1_DOUBLE_QUADS = 44 -SX_PERF_SEL_DB0_MRT2_BLEND_BYPASS = 45 -SX_PERF_SEL_DB0_MRT2_DONT_RD_DEST = 46 -SX_PERF_SEL_DB0_MRT2_DISCARD_SRC = 47 -SX_PERF_SEL_DB0_MRT2_SINGLE_QUADS = 48 -SX_PERF_SEL_DB0_MRT2_DOUBLE_QUADS = 49 -SX_PERF_SEL_DB0_MRT3_BLEND_BYPASS = 50 -SX_PERF_SEL_DB0_MRT3_DONT_RD_DEST = 51 -SX_PERF_SEL_DB0_MRT3_DISCARD_SRC = 52 -SX_PERF_SEL_DB0_MRT3_SINGLE_QUADS = 53 -SX_PERF_SEL_DB0_MRT3_DOUBLE_QUADS = 54 -SX_PERF_SEL_DB0_MRT4_BLEND_BYPASS = 55 -SX_PERF_SEL_DB0_MRT4_DONT_RD_DEST = 56 -SX_PERF_SEL_DB0_MRT4_DISCARD_SRC = 57 -SX_PERF_SEL_DB0_MRT4_SINGLE_QUADS = 58 -SX_PERF_SEL_DB0_MRT4_DOUBLE_QUADS = 59 -SX_PERF_SEL_DB0_MRT5_BLEND_BYPASS = 60 -SX_PERF_SEL_DB0_MRT5_DONT_RD_DEST = 61 -SX_PERF_SEL_DB0_MRT5_DISCARD_SRC = 62 -SX_PERF_SEL_DB0_MRT5_SINGLE_QUADS = 63 -SX_PERF_SEL_DB0_MRT5_DOUBLE_QUADS = 64 -SX_PERF_SEL_DB0_MRT6_BLEND_BYPASS = 65 -SX_PERF_SEL_DB0_MRT6_DONT_RD_DEST = 66 -SX_PERF_SEL_DB0_MRT6_DISCARD_SRC = 67 -SX_PERF_SEL_DB0_MRT6_SINGLE_QUADS = 68 -SX_PERF_SEL_DB0_MRT6_DOUBLE_QUADS = 69 -SX_PERF_SEL_DB0_MRT7_BLEND_BYPASS = 70 -SX_PERF_SEL_DB0_MRT7_DONT_RD_DEST = 71 -SX_PERF_SEL_DB0_MRT7_DISCARD_SRC = 72 -SX_PERF_SEL_DB0_MRT7_SINGLE_QUADS = 73 -SX_PERF_SEL_DB0_MRT7_DOUBLE_QUADS = 74 -SX_PERF_SEL_DB1_A2M_DISCARD_QUADS = 75 -SX_PERF_SEL_DB1_MRT0_BLEND_BYPASS = 76 -SX_PERF_SEL_DB1_MRT0_DONT_RD_DEST = 77 -SX_PERF_SEL_DB1_MRT0_DISCARD_SRC = 78 -SX_PERF_SEL_DB1_MRT0_SINGLE_QUADS = 79 -SX_PERF_SEL_DB1_MRT0_DOUBLE_QUADS = 80 -SX_PERF_SEL_DB1_MRT1_BLEND_BYPASS = 81 -SX_PERF_SEL_DB1_MRT1_DONT_RD_DEST = 82 -SX_PERF_SEL_DB1_MRT1_DISCARD_SRC = 83 -SX_PERF_SEL_DB1_MRT1_SINGLE_QUADS = 84 -SX_PERF_SEL_DB1_MRT1_DOUBLE_QUADS = 85 -SX_PERF_SEL_DB1_MRT2_BLEND_BYPASS = 86 -SX_PERF_SEL_DB1_MRT2_DONT_RD_DEST = 87 -SX_PERF_SEL_DB1_MRT2_DISCARD_SRC = 88 -SX_PERF_SEL_DB1_MRT2_SINGLE_QUADS = 89 -SX_PERF_SEL_DB1_MRT2_DOUBLE_QUADS = 90 -SX_PERF_SEL_DB1_MRT3_BLEND_BYPASS = 91 -SX_PERF_SEL_DB1_MRT3_DONT_RD_DEST = 92 -SX_PERF_SEL_DB1_MRT3_DISCARD_SRC = 93 -SX_PERF_SEL_DB1_MRT3_SINGLE_QUADS = 94 -SX_PERF_SEL_DB1_MRT3_DOUBLE_QUADS = 95 -SX_PERF_SEL_DB1_MRT4_BLEND_BYPASS = 96 -SX_PERF_SEL_DB1_MRT4_DONT_RD_DEST = 97 -SX_PERF_SEL_DB1_MRT4_DISCARD_SRC = 98 -SX_PERF_SEL_DB1_MRT4_SINGLE_QUADS = 99 -SX_PERF_SEL_DB1_MRT4_DOUBLE_QUADS = 100 -SX_PERF_SEL_DB1_MRT5_BLEND_BYPASS = 101 -SX_PERF_SEL_DB1_MRT5_DONT_RD_DEST = 102 -SX_PERF_SEL_DB1_MRT5_DISCARD_SRC = 103 -SX_PERF_SEL_DB1_MRT5_SINGLE_QUADS = 104 -SX_PERF_SEL_DB1_MRT5_DOUBLE_QUADS = 105 -SX_PERF_SEL_DB1_MRT6_BLEND_BYPASS = 106 -SX_PERF_SEL_DB1_MRT6_DONT_RD_DEST = 107 -SX_PERF_SEL_DB1_MRT6_DISCARD_SRC = 108 -SX_PERF_SEL_DB1_MRT6_SINGLE_QUADS = 109 -SX_PERF_SEL_DB1_MRT6_DOUBLE_QUADS = 110 -SX_PERF_SEL_DB1_MRT7_BLEND_BYPASS = 111 -SX_PERF_SEL_DB1_MRT7_DONT_RD_DEST = 112 -SX_PERF_SEL_DB1_MRT7_DISCARD_SRC = 113 -SX_PERF_SEL_DB1_MRT7_SINGLE_QUADS = 114 -SX_PERF_SEL_DB1_MRT7_DOUBLE_QUADS = 115 -SX_PERF_SEL_DB2_A2M_DISCARD_QUADS = 116 -SX_PERF_SEL_DB2_MRT0_BLEND_BYPASS = 117 -SX_PERF_SEL_DB2_MRT0_DONT_RD_DEST = 118 -SX_PERF_SEL_DB2_MRT0_DISCARD_SRC = 119 -SX_PERF_SEL_DB2_MRT0_SINGLE_QUADS = 120 -SX_PERF_SEL_DB2_MRT0_DOUBLE_QUADS = 121 -SX_PERF_SEL_DB2_MRT1_BLEND_BYPASS = 122 -SX_PERF_SEL_DB2_MRT1_DONT_RD_DEST = 123 -SX_PERF_SEL_DB2_MRT1_DISCARD_SRC = 124 -SX_PERF_SEL_DB2_MRT1_SINGLE_QUADS = 125 -SX_PERF_SEL_DB2_MRT1_DOUBLE_QUADS = 126 -SX_PERF_SEL_DB2_MRT2_BLEND_BYPASS = 127 -SX_PERF_SEL_DB2_MRT2_DONT_RD_DEST = 128 -SX_PERF_SEL_DB2_MRT2_DISCARD_SRC = 129 -SX_PERF_SEL_DB2_MRT2_SINGLE_QUADS = 130 -SX_PERF_SEL_DB2_MRT2_DOUBLE_QUADS = 131 -SX_PERF_SEL_DB2_MRT3_BLEND_BYPASS = 132 -SX_PERF_SEL_DB2_MRT3_DONT_RD_DEST = 133 -SX_PERF_SEL_DB2_MRT3_DISCARD_SRC = 134 -SX_PERF_SEL_DB2_MRT3_SINGLE_QUADS = 135 -SX_PERF_SEL_DB2_MRT3_DOUBLE_QUADS = 136 -SX_PERF_SEL_DB2_MRT4_BLEND_BYPASS = 137 -SX_PERF_SEL_DB2_MRT4_DONT_RD_DEST = 138 -SX_PERF_SEL_DB2_MRT4_DISCARD_SRC = 139 -SX_PERF_SEL_DB2_MRT4_SINGLE_QUADS = 140 -SX_PERF_SEL_DB2_MRT4_DOUBLE_QUADS = 141 -SX_PERF_SEL_DB2_MRT5_BLEND_BYPASS = 142 -SX_PERF_SEL_DB2_MRT5_DONT_RD_DEST = 143 -SX_PERF_SEL_DB2_MRT5_DISCARD_SRC = 144 -SX_PERF_SEL_DB2_MRT5_SINGLE_QUADS = 145 -SX_PERF_SEL_DB2_MRT5_DOUBLE_QUADS = 146 -SX_PERF_SEL_DB2_MRT6_BLEND_BYPASS = 147 -SX_PERF_SEL_DB2_MRT6_DONT_RD_DEST = 148 -SX_PERF_SEL_DB2_MRT6_DISCARD_SRC = 149 -SX_PERF_SEL_DB2_MRT6_SINGLE_QUADS = 150 -SX_PERF_SEL_DB2_MRT6_DOUBLE_QUADS = 151 -SX_PERF_SEL_DB2_MRT7_BLEND_BYPASS = 152 -SX_PERF_SEL_DB2_MRT7_DONT_RD_DEST = 153 -SX_PERF_SEL_DB2_MRT7_DISCARD_SRC = 154 -SX_PERF_SEL_DB2_MRT7_SINGLE_QUADS = 155 -SX_PERF_SEL_DB2_MRT7_DOUBLE_QUADS = 156 -SX_PERF_SEL_DB3_A2M_DISCARD_QUADS = 157 -SX_PERF_SEL_DB3_MRT0_BLEND_BYPASS = 158 -SX_PERF_SEL_DB3_MRT0_DONT_RD_DEST = 159 -SX_PERF_SEL_DB3_MRT0_DISCARD_SRC = 160 -SX_PERF_SEL_DB3_MRT0_SINGLE_QUADS = 161 -SX_PERF_SEL_DB3_MRT0_DOUBLE_QUADS = 162 -SX_PERF_SEL_DB3_MRT1_BLEND_BYPASS = 163 -SX_PERF_SEL_DB3_MRT1_DONT_RD_DEST = 164 -SX_PERF_SEL_DB3_MRT1_DISCARD_SRC = 165 -SX_PERF_SEL_DB3_MRT1_SINGLE_QUADS = 166 -SX_PERF_SEL_DB3_MRT1_DOUBLE_QUADS = 167 -SX_PERF_SEL_DB3_MRT2_BLEND_BYPASS = 168 -SX_PERF_SEL_DB3_MRT2_DONT_RD_DEST = 169 -SX_PERF_SEL_DB3_MRT2_DISCARD_SRC = 170 -SX_PERF_SEL_DB3_MRT2_SINGLE_QUADS = 171 -SX_PERF_SEL_DB3_MRT2_DOUBLE_QUADS = 172 -SX_PERF_SEL_DB3_MRT3_BLEND_BYPASS = 173 -SX_PERF_SEL_DB3_MRT3_DONT_RD_DEST = 174 -SX_PERF_SEL_DB3_MRT3_DISCARD_SRC = 175 -SX_PERF_SEL_DB3_MRT3_SINGLE_QUADS = 176 -SX_PERF_SEL_DB3_MRT3_DOUBLE_QUADS = 177 -SX_PERF_SEL_DB3_MRT4_BLEND_BYPASS = 178 -SX_PERF_SEL_DB3_MRT4_DONT_RD_DEST = 179 -SX_PERF_SEL_DB3_MRT4_DISCARD_SRC = 180 -SX_PERF_SEL_DB3_MRT4_SINGLE_QUADS = 181 -SX_PERF_SEL_DB3_MRT4_DOUBLE_QUADS = 182 -SX_PERF_SEL_DB3_MRT5_BLEND_BYPASS = 183 -SX_PERF_SEL_DB3_MRT5_DONT_RD_DEST = 184 -SX_PERF_SEL_DB3_MRT5_DISCARD_SRC = 185 -SX_PERF_SEL_DB3_MRT5_SINGLE_QUADS = 186 -SX_PERF_SEL_DB3_MRT5_DOUBLE_QUADS = 187 -SX_PERF_SEL_DB3_MRT6_BLEND_BYPASS = 188 -SX_PERF_SEL_DB3_MRT6_DONT_RD_DEST = 189 -SX_PERF_SEL_DB3_MRT6_DISCARD_SRC = 190 -SX_PERF_SEL_DB3_MRT6_SINGLE_QUADS = 191 -SX_PERF_SEL_DB3_MRT6_DOUBLE_QUADS = 192 -SX_PERF_SEL_DB3_MRT7_BLEND_BYPASS = 193 -SX_PERF_SEL_DB3_MRT7_DONT_RD_DEST = 194 -SX_PERF_SEL_DB3_MRT7_DISCARD_SRC = 195 -SX_PERF_SEL_DB3_MRT7_SINGLE_QUADS = 196 -SX_PERF_SEL_DB3_MRT7_DOUBLE_QUADS = 197 -SX_PERFCOUNTER_VALS = ctypes.c_uint32 # enum - -# values for enumeration 'ForceControl' -ForceControl__enumvalues = { - 0: 'FORCE_OFF', - 1: 'FORCE_ENABLE', - 2: 'FORCE_DISABLE', - 3: 'FORCE_RESERVED', -} -FORCE_OFF = 0 -FORCE_ENABLE = 1 -FORCE_DISABLE = 2 -FORCE_RESERVED = 3 -ForceControl = ctypes.c_uint32 # enum - -# values for enumeration 'ZSamplePosition' -ZSamplePosition__enumvalues = { - 0: 'Z_SAMPLE_CENTER', - 1: 'Z_SAMPLE_CENTROID', -} -Z_SAMPLE_CENTER = 0 -Z_SAMPLE_CENTROID = 1 -ZSamplePosition = ctypes.c_uint32 # enum - -# values for enumeration 'ZOrder' -ZOrder__enumvalues = { - 0: 'LATE_Z', - 1: 'EARLY_Z_THEN_LATE_Z', - 2: 'RE_Z', - 3: 'EARLY_Z_THEN_RE_Z', -} -LATE_Z = 0 -EARLY_Z_THEN_LATE_Z = 1 -RE_Z = 2 -EARLY_Z_THEN_RE_Z = 3 -ZOrder = ctypes.c_uint32 # enum - -# values for enumeration 'ZpassControl' -ZpassControl__enumvalues = { - 0: 'ZPASS_DISABLE', - 1: 'ZPASS_SAMPLES', - 2: 'ZPASS_PIXELS', -} -ZPASS_DISABLE = 0 -ZPASS_SAMPLES = 1 -ZPASS_PIXELS = 2 -ZpassControl = ctypes.c_uint32 # enum - -# values for enumeration 'ZModeForce' -ZModeForce__enumvalues = { - 0: 'NO_FORCE', - 1: 'FORCE_EARLY_Z', - 2: 'FORCE_LATE_Z', - 3: 'FORCE_RE_Z', -} -NO_FORCE = 0 -FORCE_EARLY_Z = 1 -FORCE_LATE_Z = 2 -FORCE_RE_Z = 3 -ZModeForce = ctypes.c_uint32 # enum - -# values for enumeration 'ZLimitSumm' -ZLimitSumm__enumvalues = { - 0: 'FORCE_SUMM_OFF', - 1: 'FORCE_SUMM_MINZ', - 2: 'FORCE_SUMM_MAXZ', - 3: 'FORCE_SUMM_BOTH', -} -FORCE_SUMM_OFF = 0 -FORCE_SUMM_MINZ = 1 -FORCE_SUMM_MAXZ = 2 -FORCE_SUMM_BOTH = 3 -ZLimitSumm = ctypes.c_uint32 # enum - -# values for enumeration 'CompareFrag' -CompareFrag__enumvalues = { - 0: 'FRAG_NEVER', - 1: 'FRAG_LESS', - 2: 'FRAG_EQUAL', - 3: 'FRAG_LEQUAL', - 4: 'FRAG_GREATER', - 5: 'FRAG_NOTEQUAL', - 6: 'FRAG_GEQUAL', - 7: 'FRAG_ALWAYS', -} -FRAG_NEVER = 0 -FRAG_LESS = 1 -FRAG_EQUAL = 2 -FRAG_LEQUAL = 3 -FRAG_GREATER = 4 -FRAG_NOTEQUAL = 5 -FRAG_GEQUAL = 6 -FRAG_ALWAYS = 7 -CompareFrag = ctypes.c_uint32 # enum - -# values for enumeration 'StencilOp' -StencilOp__enumvalues = { - 0: 'STENCIL_KEEP', - 1: 'STENCIL_ZERO', - 2: 'STENCIL_ONES', - 3: 'STENCIL_REPLACE_TEST', - 4: 'STENCIL_REPLACE_OP', - 5: 'STENCIL_ADD_CLAMP', - 6: 'STENCIL_SUB_CLAMP', - 7: 'STENCIL_INVERT', - 8: 'STENCIL_ADD_WRAP', - 9: 'STENCIL_SUB_WRAP', - 10: 'STENCIL_AND', - 11: 'STENCIL_OR', - 12: 'STENCIL_XOR', - 13: 'STENCIL_NAND', - 14: 'STENCIL_NOR', - 15: 'STENCIL_XNOR', -} -STENCIL_KEEP = 0 -STENCIL_ZERO = 1 -STENCIL_ONES = 2 -STENCIL_REPLACE_TEST = 3 -STENCIL_REPLACE_OP = 4 -STENCIL_ADD_CLAMP = 5 -STENCIL_SUB_CLAMP = 6 -STENCIL_INVERT = 7 -STENCIL_ADD_WRAP = 8 -STENCIL_SUB_WRAP = 9 -STENCIL_AND = 10 -STENCIL_OR = 11 -STENCIL_XOR = 12 -STENCIL_NAND = 13 -STENCIL_NOR = 14 -STENCIL_XNOR = 15 -StencilOp = ctypes.c_uint32 # enum - -# values for enumeration 'ConservativeZExport' -ConservativeZExport__enumvalues = { - 0: 'EXPORT_ANY_Z', - 1: 'EXPORT_LESS_THAN_Z', - 2: 'EXPORT_GREATER_THAN_Z', - 3: 'EXPORT_RESERVED', -} -EXPORT_ANY_Z = 0 -EXPORT_LESS_THAN_Z = 1 -EXPORT_GREATER_THAN_Z = 2 -EXPORT_RESERVED = 3 -ConservativeZExport = ctypes.c_uint32 # enum - -# values for enumeration 'DbPSLControl' -DbPSLControl__enumvalues = { - 0: 'PSLC_AUTO', - 1: 'PSLC_ON_HANG_ONLY', - 2: 'PSLC_ASAP', - 3: 'PSLC_COUNTDOWN', -} -PSLC_AUTO = 0 -PSLC_ON_HANG_ONLY = 1 -PSLC_ASAP = 2 -PSLC_COUNTDOWN = 3 -DbPSLControl = ctypes.c_uint32 # enum - -# values for enumeration 'DbPRTFaultBehavior' -DbPRTFaultBehavior__enumvalues = { - 0: 'FAULT_ZERO', - 1: 'FAULT_ONE', - 2: 'FAULT_FAIL', - 3: 'FAULT_PASS', -} -FAULT_ZERO = 0 -FAULT_ONE = 1 -FAULT_FAIL = 2 -FAULT_PASS = 3 -DbPRTFaultBehavior = ctypes.c_uint32 # enum - -# values for enumeration 'PerfCounter_Vals' -PerfCounter_Vals__enumvalues = { - 0: 'DB_PERF_SEL_SC_DB_tile_sends', - 1: 'DB_PERF_SEL_SC_DB_tile_busy', - 2: 'DB_PERF_SEL_SC_DB_tile_stalls', - 3: 'DB_PERF_SEL_SC_DB_tile_events', - 4: 'DB_PERF_SEL_SC_DB_tile_tiles', - 5: 'DB_PERF_SEL_SC_DB_tile_covered', - 6: 'DB_PERF_SEL_hiz_tc_read_starved', - 7: 'DB_PERF_SEL_hiz_tc_write_stall', - 8: 'DB_PERF_SEL_hiz_qtiles_culled', - 9: 'DB_PERF_SEL_his_qtiles_culled', - 10: 'DB_PERF_SEL_DB_SC_tile_sends', - 11: 'DB_PERF_SEL_DB_SC_tile_busy', - 12: 'DB_PERF_SEL_DB_SC_tile_stalls', - 13: 'DB_PERF_SEL_DB_SC_tile_df_stalls', - 14: 'DB_PERF_SEL_DB_SC_tile_tiles', - 15: 'DB_PERF_SEL_DB_SC_tile_culled', - 16: 'DB_PERF_SEL_DB_SC_tile_hier_kill', - 17: 'DB_PERF_SEL_DB_SC_tile_fast_ops', - 18: 'DB_PERF_SEL_DB_SC_tile_no_ops', - 19: 'DB_PERF_SEL_DB_SC_tile_tile_rate', - 20: 'DB_PERF_SEL_DB_SC_tile_ssaa_kill', - 21: 'DB_PERF_SEL_DB_SC_tile_fast_z_ops', - 22: 'DB_PERF_SEL_DB_SC_tile_fast_stencil_ops', - 23: 'DB_PERF_SEL_SC_DB_quad_sends', - 24: 'DB_PERF_SEL_SC_DB_quad_busy', - 25: 'DB_PERF_SEL_SC_DB_quad_squads', - 26: 'DB_PERF_SEL_SC_DB_quad_tiles', - 27: 'DB_PERF_SEL_SC_DB_quad_pixels', - 28: 'DB_PERF_SEL_SC_DB_quad_killed_tiles', - 29: 'DB_PERF_SEL_DB_SC_quad_sends', - 30: 'DB_PERF_SEL_DB_SC_quad_busy', - 31: 'DB_PERF_SEL_DB_SC_quad_stalls', - 32: 'DB_PERF_SEL_DB_SC_quad_tiles', - 33: 'DB_PERF_SEL_DB_SC_quad_lit_quad', - 34: 'DB_PERF_SEL_DB_CB_tile_sends', - 35: 'DB_PERF_SEL_DB_CB_tile_busy', - 36: 'DB_PERF_SEL_DB_CB_tile_stalls', - 37: 'DB_PERF_SEL_SX_DB_quad_sends', - 38: 'DB_PERF_SEL_SX_DB_quad_busy', - 39: 'DB_PERF_SEL_SX_DB_quad_stalls', - 40: 'DB_PERF_SEL_SX_DB_quad_quads', - 41: 'DB_PERF_SEL_SX_DB_quad_pixels', - 42: 'DB_PERF_SEL_SX_DB_quad_exports', - 43: 'DB_PERF_SEL_SH_quads_outstanding_sum', - 44: 'DB_PERF_SEL_DB_CB_lquad_sends', - 45: 'DB_PERF_SEL_DB_CB_lquad_busy', - 46: 'DB_PERF_SEL_DB_CB_lquad_stalls', - 47: 'DB_PERF_SEL_DB_CB_lquad_quads', - 48: 'DB_PERF_SEL_tile_rd_sends', - 49: 'DB_PERF_SEL_mi_tile_rd_outstanding_sum', - 50: 'DB_PERF_SEL_quad_rd_sends', - 51: 'DB_PERF_SEL_quad_rd_busy', - 52: 'DB_PERF_SEL_quad_rd_mi_stall', - 53: 'DB_PERF_SEL_quad_rd_rw_collision', - 54: 'DB_PERF_SEL_quad_rd_tag_stall', - 55: 'DB_PERF_SEL_quad_rd_32byte_reqs', - 56: 'DB_PERF_SEL_quad_rd_panic', - 57: 'DB_PERF_SEL_mi_quad_rd_outstanding_sum', - 58: 'DB_PERF_SEL_quad_rdret_sends', - 59: 'DB_PERF_SEL_quad_rdret_busy', - 60: 'DB_PERF_SEL_tile_wr_sends', - 61: 'DB_PERF_SEL_tile_wr_acks', - 62: 'DB_PERF_SEL_mi_tile_wr_outstanding_sum', - 63: 'DB_PERF_SEL_quad_wr_sends', - 64: 'DB_PERF_SEL_quad_wr_busy', - 65: 'DB_PERF_SEL_quad_wr_mi_stall', - 66: 'DB_PERF_SEL_quad_wr_coherency_stall', - 67: 'DB_PERF_SEL_quad_wr_acks', - 68: 'DB_PERF_SEL_mi_quad_wr_outstanding_sum', - 69: 'DB_PERF_SEL_Tile_Cache_misses', - 70: 'DB_PERF_SEL_Tile_Cache_hits', - 71: 'DB_PERF_SEL_Tile_Cache_flushes', - 72: 'DB_PERF_SEL_Tile_Cache_surface_stall', - 73: 'DB_PERF_SEL_Tile_Cache_starves', - 74: 'DB_PERF_SEL_Tile_Cache_mem_return_starve', - 75: 'DB_PERF_SEL_tcp_dispatcher_reads', - 76: 'DB_PERF_SEL_tcp_prefetcher_reads', - 77: 'DB_PERF_SEL_tcp_preloader_reads', - 78: 'DB_PERF_SEL_tcp_dispatcher_flushes', - 79: 'DB_PERF_SEL_tcp_prefetcher_flushes', - 80: 'DB_PERF_SEL_tcp_preloader_flushes', - 81: 'DB_PERF_SEL_Depth_Tile_Cache_sends', - 82: 'DB_PERF_SEL_Depth_Tile_Cache_busy', - 83: 'DB_PERF_SEL_Depth_Tile_Cache_starves', - 84: 'DB_PERF_SEL_Depth_Tile_Cache_dtile_locked', - 85: 'DB_PERF_SEL_Depth_Tile_Cache_alloc_stall', - 86: 'DB_PERF_SEL_Depth_Tile_Cache_misses', - 87: 'DB_PERF_SEL_Depth_Tile_Cache_hits', - 88: 'DB_PERF_SEL_Depth_Tile_Cache_flushes', - 89: 'DB_PERF_SEL_Depth_Tile_Cache_noop_tile', - 90: 'DB_PERF_SEL_Depth_Tile_Cache_detailed_noop', - 91: 'DB_PERF_SEL_Depth_Tile_Cache_event', - 92: 'DB_PERF_SEL_Depth_Tile_Cache_tile_frees', - 93: 'DB_PERF_SEL_Depth_Tile_Cache_data_frees', - 94: 'DB_PERF_SEL_Depth_Tile_Cache_mem_return_starve', - 95: 'DB_PERF_SEL_Stencil_Cache_misses', - 96: 'DB_PERF_SEL_Stencil_Cache_hits', - 97: 'DB_PERF_SEL_Stencil_Cache_flushes', - 98: 'DB_PERF_SEL_Stencil_Cache_starves', - 99: 'DB_PERF_SEL_Stencil_Cache_frees', - 100: 'DB_PERF_SEL_Z_Cache_separate_Z_misses', - 101: 'DB_PERF_SEL_Z_Cache_separate_Z_hits', - 102: 'DB_PERF_SEL_Z_Cache_separate_Z_flushes', - 103: 'DB_PERF_SEL_Z_Cache_separate_Z_starves', - 104: 'DB_PERF_SEL_Z_Cache_pmask_misses', - 105: 'DB_PERF_SEL_Z_Cache_pmask_hits', - 106: 'DB_PERF_SEL_Z_Cache_pmask_flushes', - 107: 'DB_PERF_SEL_Z_Cache_pmask_starves', - 108: 'DB_PERF_SEL_Z_Cache_frees', - 109: 'DB_PERF_SEL_Plane_Cache_misses', - 110: 'DB_PERF_SEL_Plane_Cache_hits', - 111: 'DB_PERF_SEL_Plane_Cache_flushes', - 112: 'DB_PERF_SEL_Plane_Cache_starves', - 113: 'DB_PERF_SEL_Plane_Cache_frees', - 114: 'DB_PERF_SEL_flush_expanded_stencil', - 115: 'DB_PERF_SEL_flush_compressed_stencil', - 116: 'DB_PERF_SEL_flush_single_stencil', - 117: 'DB_PERF_SEL_planes_flushed', - 118: 'DB_PERF_SEL_flush_1plane', - 119: 'DB_PERF_SEL_flush_2plane', - 120: 'DB_PERF_SEL_flush_3plane', - 121: 'DB_PERF_SEL_flush_4plane', - 122: 'DB_PERF_SEL_flush_5plane', - 123: 'DB_PERF_SEL_flush_6plane', - 124: 'DB_PERF_SEL_flush_7plane', - 125: 'DB_PERF_SEL_flush_8plane', - 126: 'DB_PERF_SEL_flush_9plane', - 127: 'DB_PERF_SEL_flush_10plane', - 128: 'DB_PERF_SEL_flush_11plane', - 129: 'DB_PERF_SEL_flush_12plane', - 130: 'DB_PERF_SEL_flush_13plane', - 131: 'DB_PERF_SEL_flush_14plane', - 132: 'DB_PERF_SEL_flush_15plane', - 133: 'DB_PERF_SEL_flush_16plane', - 134: 'DB_PERF_SEL_flush_expanded_z', - 135: 'DB_PERF_SEL_earlyZ_waiting_for_postZ_done', - 136: 'DB_PERF_SEL_reZ_waiting_for_postZ_done', - 137: 'DB_PERF_SEL_dk_tile_sends', - 138: 'DB_PERF_SEL_dk_tile_busy', - 139: 'DB_PERF_SEL_dk_tile_quad_starves', - 140: 'DB_PERF_SEL_dk_tile_stalls', - 141: 'DB_PERF_SEL_dk_squad_sends', - 142: 'DB_PERF_SEL_dk_squad_busy', - 143: 'DB_PERF_SEL_dk_squad_stalls', - 144: 'DB_PERF_SEL_Op_Pipe_Busy', - 145: 'DB_PERF_SEL_Op_Pipe_MC_Read_stall', - 146: 'DB_PERF_SEL_qc_busy', - 147: 'DB_PERF_SEL_qc_xfc', - 148: 'DB_PERF_SEL_qc_conflicts', - 149: 'DB_PERF_SEL_qc_full_stall', - 150: 'DB_PERF_SEL_qc_in_preZ_tile_stalls_postZ', - 151: 'DB_PERF_SEL_qc_in_postZ_tile_stalls_preZ', - 152: 'DB_PERF_SEL_tsc_insert_summarize_stall', - 153: 'DB_PERF_SEL_tl_busy', - 154: 'DB_PERF_SEL_tl_dtc_read_starved', - 155: 'DB_PERF_SEL_tl_z_fetch_stall', - 156: 'DB_PERF_SEL_tl_stencil_stall', - 157: 'DB_PERF_SEL_tl_z_decompress_stall', - 158: 'DB_PERF_SEL_tl_stencil_locked_stall', - 159: 'DB_PERF_SEL_tl_events', - 160: 'DB_PERF_SEL_tl_summarize_squads', - 161: 'DB_PERF_SEL_tl_flush_expand_squads', - 162: 'DB_PERF_SEL_tl_expand_squads', - 163: 'DB_PERF_SEL_tl_preZ_squads', - 164: 'DB_PERF_SEL_tl_postZ_squads', - 165: 'DB_PERF_SEL_tl_preZ_noop_squads', - 166: 'DB_PERF_SEL_tl_postZ_noop_squads', - 167: 'DB_PERF_SEL_tl_tile_ops', - 168: 'DB_PERF_SEL_tl_in_xfc', - 169: 'DB_PERF_SEL_tl_in_single_stencil_expand_stall', - 170: 'DB_PERF_SEL_tl_in_fast_z_stall', - 171: 'DB_PERF_SEL_tl_out_xfc', - 172: 'DB_PERF_SEL_tl_out_squads', - 173: 'DB_PERF_SEL_zf_plane_multicycle', - 174: 'DB_PERF_SEL_PostZ_Samples_passing_Z', - 175: 'DB_PERF_SEL_PostZ_Samples_failing_Z', - 176: 'DB_PERF_SEL_PostZ_Samples_failing_S', - 177: 'DB_PERF_SEL_PreZ_Samples_passing_Z', - 178: 'DB_PERF_SEL_PreZ_Samples_failing_Z', - 179: 'DB_PERF_SEL_PreZ_Samples_failing_S', - 180: 'DB_PERF_SEL_ts_tc_update_stall', - 181: 'DB_PERF_SEL_sc_kick_start', - 182: 'DB_PERF_SEL_sc_kick_end', - 183: 'DB_PERF_SEL_clock_reg_active', - 184: 'DB_PERF_SEL_clock_main_active', - 185: 'DB_PERF_SEL_clock_mem_export_active', - 186: 'DB_PERF_SEL_esr_ps_out_busy', - 187: 'DB_PERF_SEL_esr_ps_lqf_busy', - 188: 'DB_PERF_SEL_esr_ps_lqf_stall', - 189: 'DB_PERF_SEL_etr_out_send', - 190: 'DB_PERF_SEL_etr_out_busy', - 191: 'DB_PERF_SEL_etr_out_ltile_probe_fifo_full_stall', - 192: 'DB_PERF_SEL_etr_out_cb_tile_stall', - 193: 'DB_PERF_SEL_etr_out_esr_stall', - 194: 'DB_PERF_SEL_esr_ps_sqq_busy', - 195: 'DB_PERF_SEL_esr_ps_sqq_stall', - 196: 'DB_PERF_SEL_esr_eot_fwd_busy', - 197: 'DB_PERF_SEL_esr_eot_fwd_holding_squad', - 198: 'DB_PERF_SEL_esr_eot_fwd_forward', - 199: 'DB_PERF_SEL_esr_sqq_zi_busy', - 200: 'DB_PERF_SEL_esr_sqq_zi_stall', - 201: 'DB_PERF_SEL_postzl_sq_pt_busy', - 202: 'DB_PERF_SEL_postzl_sq_pt_stall', - 203: 'DB_PERF_SEL_postzl_se_busy', - 204: 'DB_PERF_SEL_postzl_se_stall', - 205: 'DB_PERF_SEL_postzl_partial_launch', - 206: 'DB_PERF_SEL_postzl_full_launch', - 207: 'DB_PERF_SEL_postzl_partial_waiting', - 208: 'DB_PERF_SEL_postzl_tile_mem_stall', - 209: 'DB_PERF_SEL_postzl_tile_init_stall', - 210: 'DB_PEFF_SEL_prezl_tile_mem_stall', - 211: 'DB_PERF_SEL_prezl_tile_init_stall', - 212: 'DB_PERF_SEL_dtt_sm_clash_stall', - 213: 'DB_PERF_SEL_dtt_sm_slot_stall', - 214: 'DB_PERF_SEL_dtt_sm_miss_stall', - 215: 'DB_PERF_SEL_mi_rdreq_busy', - 216: 'DB_PERF_SEL_mi_rdreq_stall', - 217: 'DB_PERF_SEL_mi_wrreq_busy', - 218: 'DB_PERF_SEL_mi_wrreq_stall', - 219: 'DB_PERF_SEL_recomp_tile_to_1zplane_no_fastop', - 220: 'DB_PERF_SEL_dkg_tile_rate_tile', - 221: 'DB_PERF_SEL_prezl_src_in_sends', - 222: 'DB_PERF_SEL_prezl_src_in_stall', - 223: 'DB_PERF_SEL_prezl_src_in_squads', - 224: 'DB_PERF_SEL_prezl_src_in_squads_unrolled', - 225: 'DB_PERF_SEL_prezl_src_in_tile_rate', - 226: 'DB_PERF_SEL_prezl_src_in_tile_rate_unrolled', - 227: 'DB_PERF_SEL_prezl_src_out_stall', - 228: 'DB_PERF_SEL_postzl_src_in_sends', - 229: 'DB_PERF_SEL_postzl_src_in_stall', - 230: 'DB_PERF_SEL_postzl_src_in_squads', - 231: 'DB_PERF_SEL_postzl_src_in_squads_unrolled', - 232: 'DB_PERF_SEL_postzl_src_in_tile_rate', - 233: 'DB_PERF_SEL_postzl_src_in_tile_rate_unrolled', - 234: 'DB_PERF_SEL_postzl_src_out_stall', - 235: 'DB_PERF_SEL_esr_ps_src_in_sends', - 236: 'DB_PERF_SEL_esr_ps_src_in_stall', - 237: 'DB_PERF_SEL_esr_ps_src_in_squads', - 238: 'DB_PERF_SEL_esr_ps_src_in_squads_unrolled', - 239: 'DB_PERF_SEL_esr_ps_src_in_tile_rate', - 240: 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled', - 241: 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled_to_pixel_rate', - 242: 'DB_PERF_SEL_esr_ps_src_out_stall', - 243: 'DB_PERF_SEL_depth_bounds_qtiles_culled', - 244: 'DB_PERF_SEL_PreZ_Samples_failing_DB', - 245: 'DB_PERF_SEL_PostZ_Samples_failing_DB', - 246: 'DB_PERF_SEL_flush_compressed', - 247: 'DB_PERF_SEL_flush_plane_le4', - 248: 'DB_PERF_SEL_tiles_z_fully_summarized', - 249: 'DB_PERF_SEL_tiles_stencil_fully_summarized', - 250: 'DB_PERF_SEL_tiles_z_clear_on_expclear', - 251: 'DB_PERF_SEL_tiles_s_clear_on_expclear', - 252: 'DB_PERF_SEL_tiles_decomp_on_expclear', - 253: 'DB_PERF_SEL_tiles_compressed_to_decompressed', - 254: 'DB_PERF_SEL_Op_Pipe_Prez_Busy', - 255: 'DB_PERF_SEL_Op_Pipe_Postz_Busy', - 256: 'DB_PERF_SEL_di_dt_stall', - 257: 'DB_PERF_SEL_DB_SC_quad_double_quad', - 258: 'DB_PERF_SEL_SX_DB_quad_export_quads', - 259: 'DB_PERF_SEL_SX_DB_quad_double_format', - 260: 'DB_PERF_SEL_SX_DB_quad_fast_format', - 261: 'DB_PERF_SEL_SX_DB_quad_slow_format', - 262: 'DB_PERF_SEL_DB_CB_lquad_export_quads', - 263: 'DB_PERF_SEL_DB_CB_lquad_double_format', - 264: 'DB_PERF_SEL_DB_CB_lquad_fast_format', - 265: 'DB_PERF_SEL_DB_CB_lquad_slow_format', - 266: 'DB_PERF_SEL_CB_DB_rdreq_sends', - 267: 'DB_PERF_SEL_CB_DB_rdreq_prt_sends', - 268: 'DB_PERF_SEL_CB_DB_wrreq_sends', - 269: 'DB_PERF_SEL_CB_DB_wrreq_prt_sends', - 270: 'DB_PERF_SEL_DB_CB_rdret_ack', - 271: 'DB_PERF_SEL_DB_CB_rdret_nack', - 272: 'DB_PERF_SEL_DB_CB_wrret_ack', - 273: 'DB_PERF_SEL_DB_CB_wrret_nack', - 274: 'DB_PERF_SEL_DFSM_squads_in', - 275: 'DB_PERF_SEL_DFSM_full_cleared_squads_out', - 276: 'DB_PERF_SEL_DFSM_quads_in', - 277: 'DB_PERF_SEL_DFSM_fully_cleared_quads_out', - 278: 'DB_PERF_SEL_DFSM_lit_pixels_in', - 279: 'DB_PERF_SEL_DFSM_fully_cleared_pixels_out', - 280: 'DB_PERF_SEL_DFSM_lit_samples_in', - 281: 'DB_PERF_SEL_DFSM_lit_samples_out', - 282: 'DB_PERF_SEL_DFSM_cycles_above_watermark', - 283: 'DB_PERF_SEL_DFSM_cant_accept_squads_but_not_stalled_by_downstream', - 284: 'DB_PERF_SEL_DFSM_stalled_by_downstream', - 285: 'DB_PERF_SEL_DFSM_evicted_squads_above_watermark', - 286: 'DB_PERF_SEL_DFSM_collisions_due_to_POPS_overflow', - 287: 'DB_PERF_SEL_DFSM_collisions_detected_within_POPS_FIFO', - 288: 'DB_PERF_SEL_DFSM_evicted_squads_due_to_prim_watermark', -} -DB_PERF_SEL_SC_DB_tile_sends = 0 -DB_PERF_SEL_SC_DB_tile_busy = 1 -DB_PERF_SEL_SC_DB_tile_stalls = 2 -DB_PERF_SEL_SC_DB_tile_events = 3 -DB_PERF_SEL_SC_DB_tile_tiles = 4 -DB_PERF_SEL_SC_DB_tile_covered = 5 -DB_PERF_SEL_hiz_tc_read_starved = 6 -DB_PERF_SEL_hiz_tc_write_stall = 7 -DB_PERF_SEL_hiz_qtiles_culled = 8 -DB_PERF_SEL_his_qtiles_culled = 9 -DB_PERF_SEL_DB_SC_tile_sends = 10 -DB_PERF_SEL_DB_SC_tile_busy = 11 -DB_PERF_SEL_DB_SC_tile_stalls = 12 -DB_PERF_SEL_DB_SC_tile_df_stalls = 13 -DB_PERF_SEL_DB_SC_tile_tiles = 14 -DB_PERF_SEL_DB_SC_tile_culled = 15 -DB_PERF_SEL_DB_SC_tile_hier_kill = 16 -DB_PERF_SEL_DB_SC_tile_fast_ops = 17 -DB_PERF_SEL_DB_SC_tile_no_ops = 18 -DB_PERF_SEL_DB_SC_tile_tile_rate = 19 -DB_PERF_SEL_DB_SC_tile_ssaa_kill = 20 -DB_PERF_SEL_DB_SC_tile_fast_z_ops = 21 -DB_PERF_SEL_DB_SC_tile_fast_stencil_ops = 22 -DB_PERF_SEL_SC_DB_quad_sends = 23 -DB_PERF_SEL_SC_DB_quad_busy = 24 -DB_PERF_SEL_SC_DB_quad_squads = 25 -DB_PERF_SEL_SC_DB_quad_tiles = 26 -DB_PERF_SEL_SC_DB_quad_pixels = 27 -DB_PERF_SEL_SC_DB_quad_killed_tiles = 28 -DB_PERF_SEL_DB_SC_quad_sends = 29 -DB_PERF_SEL_DB_SC_quad_busy = 30 -DB_PERF_SEL_DB_SC_quad_stalls = 31 -DB_PERF_SEL_DB_SC_quad_tiles = 32 -DB_PERF_SEL_DB_SC_quad_lit_quad = 33 -DB_PERF_SEL_DB_CB_tile_sends = 34 -DB_PERF_SEL_DB_CB_tile_busy = 35 -DB_PERF_SEL_DB_CB_tile_stalls = 36 -DB_PERF_SEL_SX_DB_quad_sends = 37 -DB_PERF_SEL_SX_DB_quad_busy = 38 -DB_PERF_SEL_SX_DB_quad_stalls = 39 -DB_PERF_SEL_SX_DB_quad_quads = 40 -DB_PERF_SEL_SX_DB_quad_pixels = 41 -DB_PERF_SEL_SX_DB_quad_exports = 42 -DB_PERF_SEL_SH_quads_outstanding_sum = 43 -DB_PERF_SEL_DB_CB_lquad_sends = 44 -DB_PERF_SEL_DB_CB_lquad_busy = 45 -DB_PERF_SEL_DB_CB_lquad_stalls = 46 -DB_PERF_SEL_DB_CB_lquad_quads = 47 -DB_PERF_SEL_tile_rd_sends = 48 -DB_PERF_SEL_mi_tile_rd_outstanding_sum = 49 -DB_PERF_SEL_quad_rd_sends = 50 -DB_PERF_SEL_quad_rd_busy = 51 -DB_PERF_SEL_quad_rd_mi_stall = 52 -DB_PERF_SEL_quad_rd_rw_collision = 53 -DB_PERF_SEL_quad_rd_tag_stall = 54 -DB_PERF_SEL_quad_rd_32byte_reqs = 55 -DB_PERF_SEL_quad_rd_panic = 56 -DB_PERF_SEL_mi_quad_rd_outstanding_sum = 57 -DB_PERF_SEL_quad_rdret_sends = 58 -DB_PERF_SEL_quad_rdret_busy = 59 -DB_PERF_SEL_tile_wr_sends = 60 -DB_PERF_SEL_tile_wr_acks = 61 -DB_PERF_SEL_mi_tile_wr_outstanding_sum = 62 -DB_PERF_SEL_quad_wr_sends = 63 -DB_PERF_SEL_quad_wr_busy = 64 -DB_PERF_SEL_quad_wr_mi_stall = 65 -DB_PERF_SEL_quad_wr_coherency_stall = 66 -DB_PERF_SEL_quad_wr_acks = 67 -DB_PERF_SEL_mi_quad_wr_outstanding_sum = 68 -DB_PERF_SEL_Tile_Cache_misses = 69 -DB_PERF_SEL_Tile_Cache_hits = 70 -DB_PERF_SEL_Tile_Cache_flushes = 71 -DB_PERF_SEL_Tile_Cache_surface_stall = 72 -DB_PERF_SEL_Tile_Cache_starves = 73 -DB_PERF_SEL_Tile_Cache_mem_return_starve = 74 -DB_PERF_SEL_tcp_dispatcher_reads = 75 -DB_PERF_SEL_tcp_prefetcher_reads = 76 -DB_PERF_SEL_tcp_preloader_reads = 77 -DB_PERF_SEL_tcp_dispatcher_flushes = 78 -DB_PERF_SEL_tcp_prefetcher_flushes = 79 -DB_PERF_SEL_tcp_preloader_flushes = 80 -DB_PERF_SEL_Depth_Tile_Cache_sends = 81 -DB_PERF_SEL_Depth_Tile_Cache_busy = 82 -DB_PERF_SEL_Depth_Tile_Cache_starves = 83 -DB_PERF_SEL_Depth_Tile_Cache_dtile_locked = 84 -DB_PERF_SEL_Depth_Tile_Cache_alloc_stall = 85 -DB_PERF_SEL_Depth_Tile_Cache_misses = 86 -DB_PERF_SEL_Depth_Tile_Cache_hits = 87 -DB_PERF_SEL_Depth_Tile_Cache_flushes = 88 -DB_PERF_SEL_Depth_Tile_Cache_noop_tile = 89 -DB_PERF_SEL_Depth_Tile_Cache_detailed_noop = 90 -DB_PERF_SEL_Depth_Tile_Cache_event = 91 -DB_PERF_SEL_Depth_Tile_Cache_tile_frees = 92 -DB_PERF_SEL_Depth_Tile_Cache_data_frees = 93 -DB_PERF_SEL_Depth_Tile_Cache_mem_return_starve = 94 -DB_PERF_SEL_Stencil_Cache_misses = 95 -DB_PERF_SEL_Stencil_Cache_hits = 96 -DB_PERF_SEL_Stencil_Cache_flushes = 97 -DB_PERF_SEL_Stencil_Cache_starves = 98 -DB_PERF_SEL_Stencil_Cache_frees = 99 -DB_PERF_SEL_Z_Cache_separate_Z_misses = 100 -DB_PERF_SEL_Z_Cache_separate_Z_hits = 101 -DB_PERF_SEL_Z_Cache_separate_Z_flushes = 102 -DB_PERF_SEL_Z_Cache_separate_Z_starves = 103 -DB_PERF_SEL_Z_Cache_pmask_misses = 104 -DB_PERF_SEL_Z_Cache_pmask_hits = 105 -DB_PERF_SEL_Z_Cache_pmask_flushes = 106 -DB_PERF_SEL_Z_Cache_pmask_starves = 107 -DB_PERF_SEL_Z_Cache_frees = 108 -DB_PERF_SEL_Plane_Cache_misses = 109 -DB_PERF_SEL_Plane_Cache_hits = 110 -DB_PERF_SEL_Plane_Cache_flushes = 111 -DB_PERF_SEL_Plane_Cache_starves = 112 -DB_PERF_SEL_Plane_Cache_frees = 113 -DB_PERF_SEL_flush_expanded_stencil = 114 -DB_PERF_SEL_flush_compressed_stencil = 115 -DB_PERF_SEL_flush_single_stencil = 116 -DB_PERF_SEL_planes_flushed = 117 -DB_PERF_SEL_flush_1plane = 118 -DB_PERF_SEL_flush_2plane = 119 -DB_PERF_SEL_flush_3plane = 120 -DB_PERF_SEL_flush_4plane = 121 -DB_PERF_SEL_flush_5plane = 122 -DB_PERF_SEL_flush_6plane = 123 -DB_PERF_SEL_flush_7plane = 124 -DB_PERF_SEL_flush_8plane = 125 -DB_PERF_SEL_flush_9plane = 126 -DB_PERF_SEL_flush_10plane = 127 -DB_PERF_SEL_flush_11plane = 128 -DB_PERF_SEL_flush_12plane = 129 -DB_PERF_SEL_flush_13plane = 130 -DB_PERF_SEL_flush_14plane = 131 -DB_PERF_SEL_flush_15plane = 132 -DB_PERF_SEL_flush_16plane = 133 -DB_PERF_SEL_flush_expanded_z = 134 -DB_PERF_SEL_earlyZ_waiting_for_postZ_done = 135 -DB_PERF_SEL_reZ_waiting_for_postZ_done = 136 -DB_PERF_SEL_dk_tile_sends = 137 -DB_PERF_SEL_dk_tile_busy = 138 -DB_PERF_SEL_dk_tile_quad_starves = 139 -DB_PERF_SEL_dk_tile_stalls = 140 -DB_PERF_SEL_dk_squad_sends = 141 -DB_PERF_SEL_dk_squad_busy = 142 -DB_PERF_SEL_dk_squad_stalls = 143 -DB_PERF_SEL_Op_Pipe_Busy = 144 -DB_PERF_SEL_Op_Pipe_MC_Read_stall = 145 -DB_PERF_SEL_qc_busy = 146 -DB_PERF_SEL_qc_xfc = 147 -DB_PERF_SEL_qc_conflicts = 148 -DB_PERF_SEL_qc_full_stall = 149 -DB_PERF_SEL_qc_in_preZ_tile_stalls_postZ = 150 -DB_PERF_SEL_qc_in_postZ_tile_stalls_preZ = 151 -DB_PERF_SEL_tsc_insert_summarize_stall = 152 -DB_PERF_SEL_tl_busy = 153 -DB_PERF_SEL_tl_dtc_read_starved = 154 -DB_PERF_SEL_tl_z_fetch_stall = 155 -DB_PERF_SEL_tl_stencil_stall = 156 -DB_PERF_SEL_tl_z_decompress_stall = 157 -DB_PERF_SEL_tl_stencil_locked_stall = 158 -DB_PERF_SEL_tl_events = 159 -DB_PERF_SEL_tl_summarize_squads = 160 -DB_PERF_SEL_tl_flush_expand_squads = 161 -DB_PERF_SEL_tl_expand_squads = 162 -DB_PERF_SEL_tl_preZ_squads = 163 -DB_PERF_SEL_tl_postZ_squads = 164 -DB_PERF_SEL_tl_preZ_noop_squads = 165 -DB_PERF_SEL_tl_postZ_noop_squads = 166 -DB_PERF_SEL_tl_tile_ops = 167 -DB_PERF_SEL_tl_in_xfc = 168 -DB_PERF_SEL_tl_in_single_stencil_expand_stall = 169 -DB_PERF_SEL_tl_in_fast_z_stall = 170 -DB_PERF_SEL_tl_out_xfc = 171 -DB_PERF_SEL_tl_out_squads = 172 -DB_PERF_SEL_zf_plane_multicycle = 173 -DB_PERF_SEL_PostZ_Samples_passing_Z = 174 -DB_PERF_SEL_PostZ_Samples_failing_Z = 175 -DB_PERF_SEL_PostZ_Samples_failing_S = 176 -DB_PERF_SEL_PreZ_Samples_passing_Z = 177 -DB_PERF_SEL_PreZ_Samples_failing_Z = 178 -DB_PERF_SEL_PreZ_Samples_failing_S = 179 -DB_PERF_SEL_ts_tc_update_stall = 180 -DB_PERF_SEL_sc_kick_start = 181 -DB_PERF_SEL_sc_kick_end = 182 -DB_PERF_SEL_clock_reg_active = 183 -DB_PERF_SEL_clock_main_active = 184 -DB_PERF_SEL_clock_mem_export_active = 185 -DB_PERF_SEL_esr_ps_out_busy = 186 -DB_PERF_SEL_esr_ps_lqf_busy = 187 -DB_PERF_SEL_esr_ps_lqf_stall = 188 -DB_PERF_SEL_etr_out_send = 189 -DB_PERF_SEL_etr_out_busy = 190 -DB_PERF_SEL_etr_out_ltile_probe_fifo_full_stall = 191 -DB_PERF_SEL_etr_out_cb_tile_stall = 192 -DB_PERF_SEL_etr_out_esr_stall = 193 -DB_PERF_SEL_esr_ps_sqq_busy = 194 -DB_PERF_SEL_esr_ps_sqq_stall = 195 -DB_PERF_SEL_esr_eot_fwd_busy = 196 -DB_PERF_SEL_esr_eot_fwd_holding_squad = 197 -DB_PERF_SEL_esr_eot_fwd_forward = 198 -DB_PERF_SEL_esr_sqq_zi_busy = 199 -DB_PERF_SEL_esr_sqq_zi_stall = 200 -DB_PERF_SEL_postzl_sq_pt_busy = 201 -DB_PERF_SEL_postzl_sq_pt_stall = 202 -DB_PERF_SEL_postzl_se_busy = 203 -DB_PERF_SEL_postzl_se_stall = 204 -DB_PERF_SEL_postzl_partial_launch = 205 -DB_PERF_SEL_postzl_full_launch = 206 -DB_PERF_SEL_postzl_partial_waiting = 207 -DB_PERF_SEL_postzl_tile_mem_stall = 208 -DB_PERF_SEL_postzl_tile_init_stall = 209 -DB_PEFF_SEL_prezl_tile_mem_stall = 210 -DB_PERF_SEL_prezl_tile_init_stall = 211 -DB_PERF_SEL_dtt_sm_clash_stall = 212 -DB_PERF_SEL_dtt_sm_slot_stall = 213 -DB_PERF_SEL_dtt_sm_miss_stall = 214 -DB_PERF_SEL_mi_rdreq_busy = 215 -DB_PERF_SEL_mi_rdreq_stall = 216 -DB_PERF_SEL_mi_wrreq_busy = 217 -DB_PERF_SEL_mi_wrreq_stall = 218 -DB_PERF_SEL_recomp_tile_to_1zplane_no_fastop = 219 -DB_PERF_SEL_dkg_tile_rate_tile = 220 -DB_PERF_SEL_prezl_src_in_sends = 221 -DB_PERF_SEL_prezl_src_in_stall = 222 -DB_PERF_SEL_prezl_src_in_squads = 223 -DB_PERF_SEL_prezl_src_in_squads_unrolled = 224 -DB_PERF_SEL_prezl_src_in_tile_rate = 225 -DB_PERF_SEL_prezl_src_in_tile_rate_unrolled = 226 -DB_PERF_SEL_prezl_src_out_stall = 227 -DB_PERF_SEL_postzl_src_in_sends = 228 -DB_PERF_SEL_postzl_src_in_stall = 229 -DB_PERF_SEL_postzl_src_in_squads = 230 -DB_PERF_SEL_postzl_src_in_squads_unrolled = 231 -DB_PERF_SEL_postzl_src_in_tile_rate = 232 -DB_PERF_SEL_postzl_src_in_tile_rate_unrolled = 233 -DB_PERF_SEL_postzl_src_out_stall = 234 -DB_PERF_SEL_esr_ps_src_in_sends = 235 -DB_PERF_SEL_esr_ps_src_in_stall = 236 -DB_PERF_SEL_esr_ps_src_in_squads = 237 -DB_PERF_SEL_esr_ps_src_in_squads_unrolled = 238 -DB_PERF_SEL_esr_ps_src_in_tile_rate = 239 -DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled = 240 -DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled_to_pixel_rate = 241 -DB_PERF_SEL_esr_ps_src_out_stall = 242 -DB_PERF_SEL_depth_bounds_qtiles_culled = 243 -DB_PERF_SEL_PreZ_Samples_failing_DB = 244 -DB_PERF_SEL_PostZ_Samples_failing_DB = 245 -DB_PERF_SEL_flush_compressed = 246 -DB_PERF_SEL_flush_plane_le4 = 247 -DB_PERF_SEL_tiles_z_fully_summarized = 248 -DB_PERF_SEL_tiles_stencil_fully_summarized = 249 -DB_PERF_SEL_tiles_z_clear_on_expclear = 250 -DB_PERF_SEL_tiles_s_clear_on_expclear = 251 -DB_PERF_SEL_tiles_decomp_on_expclear = 252 -DB_PERF_SEL_tiles_compressed_to_decompressed = 253 -DB_PERF_SEL_Op_Pipe_Prez_Busy = 254 -DB_PERF_SEL_Op_Pipe_Postz_Busy = 255 -DB_PERF_SEL_di_dt_stall = 256 -DB_PERF_SEL_DB_SC_quad_double_quad = 257 -DB_PERF_SEL_SX_DB_quad_export_quads = 258 -DB_PERF_SEL_SX_DB_quad_double_format = 259 -DB_PERF_SEL_SX_DB_quad_fast_format = 260 -DB_PERF_SEL_SX_DB_quad_slow_format = 261 -DB_PERF_SEL_DB_CB_lquad_export_quads = 262 -DB_PERF_SEL_DB_CB_lquad_double_format = 263 -DB_PERF_SEL_DB_CB_lquad_fast_format = 264 -DB_PERF_SEL_DB_CB_lquad_slow_format = 265 -DB_PERF_SEL_CB_DB_rdreq_sends = 266 -DB_PERF_SEL_CB_DB_rdreq_prt_sends = 267 -DB_PERF_SEL_CB_DB_wrreq_sends = 268 -DB_PERF_SEL_CB_DB_wrreq_prt_sends = 269 -DB_PERF_SEL_DB_CB_rdret_ack = 270 -DB_PERF_SEL_DB_CB_rdret_nack = 271 -DB_PERF_SEL_DB_CB_wrret_ack = 272 -DB_PERF_SEL_DB_CB_wrret_nack = 273 -DB_PERF_SEL_DFSM_squads_in = 274 -DB_PERF_SEL_DFSM_full_cleared_squads_out = 275 -DB_PERF_SEL_DFSM_quads_in = 276 -DB_PERF_SEL_DFSM_fully_cleared_quads_out = 277 -DB_PERF_SEL_DFSM_lit_pixels_in = 278 -DB_PERF_SEL_DFSM_fully_cleared_pixels_out = 279 -DB_PERF_SEL_DFSM_lit_samples_in = 280 -DB_PERF_SEL_DFSM_lit_samples_out = 281 -DB_PERF_SEL_DFSM_cycles_above_watermark = 282 -DB_PERF_SEL_DFSM_cant_accept_squads_but_not_stalled_by_downstream = 283 -DB_PERF_SEL_DFSM_stalled_by_downstream = 284 -DB_PERF_SEL_DFSM_evicted_squads_above_watermark = 285 -DB_PERF_SEL_DFSM_collisions_due_to_POPS_overflow = 286 -DB_PERF_SEL_DFSM_collisions_detected_within_POPS_FIFO = 287 -DB_PERF_SEL_DFSM_evicted_squads_due_to_prim_watermark = 288 -PerfCounter_Vals = ctypes.c_uint32 # enum - -# values for enumeration 'RingCounterControl' -RingCounterControl__enumvalues = { - 0: 'COUNTER_RING_SPLIT', - 1: 'COUNTER_RING_0', - 2: 'COUNTER_RING_1', -} -COUNTER_RING_SPLIT = 0 -COUNTER_RING_0 = 1 -COUNTER_RING_1 = 2 -RingCounterControl = ctypes.c_uint32 # enum - -# values for enumeration 'DbMemArbWatermarks' -DbMemArbWatermarks__enumvalues = { - 0: 'TRANSFERRED_64_BYTES', - 1: 'TRANSFERRED_128_BYTES', - 2: 'TRANSFERRED_256_BYTES', - 3: 'TRANSFERRED_512_BYTES', - 4: 'TRANSFERRED_1024_BYTES', - 5: 'TRANSFERRED_2048_BYTES', - 6: 'TRANSFERRED_4096_BYTES', - 7: 'TRANSFERRED_8192_BYTES', -} -TRANSFERRED_64_BYTES = 0 -TRANSFERRED_128_BYTES = 1 -TRANSFERRED_256_BYTES = 2 -TRANSFERRED_512_BYTES = 3 -TRANSFERRED_1024_BYTES = 4 -TRANSFERRED_2048_BYTES = 5 -TRANSFERRED_4096_BYTES = 6 -TRANSFERRED_8192_BYTES = 7 -DbMemArbWatermarks = ctypes.c_uint32 # enum - -# values for enumeration 'DFSMFlushEvents' -DFSMFlushEvents__enumvalues = { - 0: 'DB_FLUSH_AND_INV_DB_DATA_TS', - 1: 'DB_FLUSH_AND_INV_DB_META', - 2: 'DB_CACHE_FLUSH', - 3: 'DB_CACHE_FLUSH_TS', - 4: 'DB_CACHE_FLUSH_AND_INV_EVENT', - 5: 'DB_CACHE_FLUSH_AND_INV_TS_EVENT', -} -DB_FLUSH_AND_INV_DB_DATA_TS = 0 -DB_FLUSH_AND_INV_DB_META = 1 -DB_CACHE_FLUSH = 2 -DB_CACHE_FLUSH_TS = 3 -DB_CACHE_FLUSH_AND_INV_EVENT = 4 -DB_CACHE_FLUSH_AND_INV_TS_EVENT = 5 -DFSMFlushEvents = ctypes.c_uint32 # enum - -# values for enumeration 'PixelPipeCounterId' -PixelPipeCounterId__enumvalues = { - 0: 'PIXEL_PIPE_OCCLUSION_COUNT_0', - 1: 'PIXEL_PIPE_OCCLUSION_COUNT_1', - 2: 'PIXEL_PIPE_OCCLUSION_COUNT_2', - 3: 'PIXEL_PIPE_OCCLUSION_COUNT_3', - 4: 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_0', - 5: 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_0', - 6: 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_1', - 7: 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_1', -} -PIXEL_PIPE_OCCLUSION_COUNT_0 = 0 -PIXEL_PIPE_OCCLUSION_COUNT_1 = 1 -PIXEL_PIPE_OCCLUSION_COUNT_2 = 2 -PIXEL_PIPE_OCCLUSION_COUNT_3 = 3 -PIXEL_PIPE_SCREEN_MIN_EXTENTS_0 = 4 -PIXEL_PIPE_SCREEN_MAX_EXTENTS_0 = 5 -PIXEL_PIPE_SCREEN_MIN_EXTENTS_1 = 6 -PIXEL_PIPE_SCREEN_MAX_EXTENTS_1 = 7 -PixelPipeCounterId = ctypes.c_uint32 # enum - -# values for enumeration 'PixelPipeStride' -PixelPipeStride__enumvalues = { - 0: 'PIXEL_PIPE_STRIDE_32_BITS', - 1: 'PIXEL_PIPE_STRIDE_64_BITS', - 2: 'PIXEL_PIPE_STRIDE_128_BITS', - 3: 'PIXEL_PIPE_STRIDE_256_BITS', -} -PIXEL_PIPE_STRIDE_32_BITS = 0 -PIXEL_PIPE_STRIDE_64_BITS = 1 -PIXEL_PIPE_STRIDE_128_BITS = 2 -PIXEL_PIPE_STRIDE_256_BITS = 3 -PixelPipeStride = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_BORDER_COLOR_TYPE' -TEX_BORDER_COLOR_TYPE__enumvalues = { - 0: 'TEX_BorderColor_TransparentBlack', - 1: 'TEX_BorderColor_OpaqueBlack', - 2: 'TEX_BorderColor_OpaqueWhite', - 3: 'TEX_BorderColor_Register', -} -TEX_BorderColor_TransparentBlack = 0 -TEX_BorderColor_OpaqueBlack = 1 -TEX_BorderColor_OpaqueWhite = 2 -TEX_BorderColor_Register = 3 -TEX_BORDER_COLOR_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_CHROMA_KEY' -TEX_CHROMA_KEY__enumvalues = { - 0: 'TEX_ChromaKey_Disabled', - 1: 'TEX_ChromaKey_Kill', - 2: 'TEX_ChromaKey_Blend', - 3: 'TEX_ChromaKey_RESERVED_3', -} -TEX_ChromaKey_Disabled = 0 -TEX_ChromaKey_Kill = 1 -TEX_ChromaKey_Blend = 2 -TEX_ChromaKey_RESERVED_3 = 3 -TEX_CHROMA_KEY = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_CLAMP' -TEX_CLAMP__enumvalues = { - 0: 'TEX_Clamp_Repeat', - 1: 'TEX_Clamp_Mirror', - 2: 'TEX_Clamp_ClampToLast', - 3: 'TEX_Clamp_MirrorOnceToLast', - 4: 'TEX_Clamp_ClampHalfToBorder', - 5: 'TEX_Clamp_MirrorOnceHalfToBorder', - 6: 'TEX_Clamp_ClampToBorder', - 7: 'TEX_Clamp_MirrorOnceToBorder', -} -TEX_Clamp_Repeat = 0 -TEX_Clamp_Mirror = 1 -TEX_Clamp_ClampToLast = 2 -TEX_Clamp_MirrorOnceToLast = 3 -TEX_Clamp_ClampHalfToBorder = 4 -TEX_Clamp_MirrorOnceHalfToBorder = 5 -TEX_Clamp_ClampToBorder = 6 -TEX_Clamp_MirrorOnceToBorder = 7 -TEX_CLAMP = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_COORD_TYPE' -TEX_COORD_TYPE__enumvalues = { - 0: 'TEX_CoordType_Unnormalized', - 1: 'TEX_CoordType_Normalized', -} -TEX_CoordType_Unnormalized = 0 -TEX_CoordType_Normalized = 1 -TEX_COORD_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_DEPTH_COMPARE_FUNCTION' -TEX_DEPTH_COMPARE_FUNCTION__enumvalues = { - 0: 'TEX_DepthCompareFunction_Never', - 1: 'TEX_DepthCompareFunction_Less', - 2: 'TEX_DepthCompareFunction_Equal', - 3: 'TEX_DepthCompareFunction_LessEqual', - 4: 'TEX_DepthCompareFunction_Greater', - 5: 'TEX_DepthCompareFunction_NotEqual', - 6: 'TEX_DepthCompareFunction_GreaterEqual', - 7: 'TEX_DepthCompareFunction_Always', -} -TEX_DepthCompareFunction_Never = 0 -TEX_DepthCompareFunction_Less = 1 -TEX_DepthCompareFunction_Equal = 2 -TEX_DepthCompareFunction_LessEqual = 3 -TEX_DepthCompareFunction_Greater = 4 -TEX_DepthCompareFunction_NotEqual = 5 -TEX_DepthCompareFunction_GreaterEqual = 6 -TEX_DepthCompareFunction_Always = 7 -TEX_DEPTH_COMPARE_FUNCTION = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_DIM' -TEX_DIM__enumvalues = { - 0: 'TEX_Dim_1D', - 1: 'TEX_Dim_2D', - 2: 'TEX_Dim_3D', - 3: 'TEX_Dim_CubeMap', - 4: 'TEX_Dim_1DArray', - 5: 'TEX_Dim_2DArray', - 6: 'TEX_Dim_2D_MSAA', - 7: 'TEX_Dim_2DArray_MSAA', -} -TEX_Dim_1D = 0 -TEX_Dim_2D = 1 -TEX_Dim_3D = 2 -TEX_Dim_CubeMap = 3 -TEX_Dim_1DArray = 4 -TEX_Dim_2DArray = 5 -TEX_Dim_2D_MSAA = 6 -TEX_Dim_2DArray_MSAA = 7 -TEX_DIM = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_FORMAT_COMP' -TEX_FORMAT_COMP__enumvalues = { - 0: 'TEX_FormatComp_Unsigned', - 1: 'TEX_FormatComp_Signed', - 2: 'TEX_FormatComp_UnsignedBiased', - 3: 'TEX_FormatComp_RESERVED_3', -} -TEX_FormatComp_Unsigned = 0 -TEX_FormatComp_Signed = 1 -TEX_FormatComp_UnsignedBiased = 2 -TEX_FormatComp_RESERVED_3 = 3 -TEX_FORMAT_COMP = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_MAX_ANISO_RATIO' -TEX_MAX_ANISO_RATIO__enumvalues = { - 0: 'TEX_MaxAnisoRatio_1to1', - 1: 'TEX_MaxAnisoRatio_2to1', - 2: 'TEX_MaxAnisoRatio_4to1', - 3: 'TEX_MaxAnisoRatio_8to1', - 4: 'TEX_MaxAnisoRatio_16to1', - 5: 'TEX_MaxAnisoRatio_RESERVED_5', - 6: 'TEX_MaxAnisoRatio_RESERVED_6', - 7: 'TEX_MaxAnisoRatio_RESERVED_7', -} -TEX_MaxAnisoRatio_1to1 = 0 -TEX_MaxAnisoRatio_2to1 = 1 -TEX_MaxAnisoRatio_4to1 = 2 -TEX_MaxAnisoRatio_8to1 = 3 -TEX_MaxAnisoRatio_16to1 = 4 -TEX_MaxAnisoRatio_RESERVED_5 = 5 -TEX_MaxAnisoRatio_RESERVED_6 = 6 -TEX_MaxAnisoRatio_RESERVED_7 = 7 -TEX_MAX_ANISO_RATIO = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_MIP_FILTER' -TEX_MIP_FILTER__enumvalues = { - 0: 'TEX_MipFilter_None', - 1: 'TEX_MipFilter_Point', - 2: 'TEX_MipFilter_Linear', - 3: 'TEX_MipFilter_Point_Aniso_Adj', -} -TEX_MipFilter_None = 0 -TEX_MipFilter_Point = 1 -TEX_MipFilter_Linear = 2 -TEX_MipFilter_Point_Aniso_Adj = 3 -TEX_MIP_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_REQUEST_SIZE' -TEX_REQUEST_SIZE__enumvalues = { - 0: 'TEX_RequestSize_32B', - 1: 'TEX_RequestSize_64B', - 2: 'TEX_RequestSize_128B', - 3: 'TEX_RequestSize_2X64B', -} -TEX_RequestSize_32B = 0 -TEX_RequestSize_64B = 1 -TEX_RequestSize_128B = 2 -TEX_RequestSize_2X64B = 3 -TEX_REQUEST_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_SAMPLER_TYPE' -TEX_SAMPLER_TYPE__enumvalues = { - 0: 'TEX_SamplerType_Invalid', - 1: 'TEX_SamplerType_Valid', -} -TEX_SamplerType_Invalid = 0 -TEX_SamplerType_Valid = 1 -TEX_SAMPLER_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_XY_FILTER' -TEX_XY_FILTER__enumvalues = { - 0: 'TEX_XYFilter_Point', - 1: 'TEX_XYFilter_Linear', - 2: 'TEX_XYFilter_AnisoPoint', - 3: 'TEX_XYFilter_AnisoLinear', -} -TEX_XYFilter_Point = 0 -TEX_XYFilter_Linear = 1 -TEX_XYFilter_AnisoPoint = 2 -TEX_XYFilter_AnisoLinear = 3 -TEX_XY_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_Z_FILTER' -TEX_Z_FILTER__enumvalues = { - 0: 'TEX_ZFilter_None', - 1: 'TEX_ZFilter_Point', - 2: 'TEX_ZFilter_Linear', - 3: 'TEX_ZFilter_RESERVED_3', -} -TEX_ZFilter_None = 0 -TEX_ZFilter_Point = 1 -TEX_ZFilter_Linear = 2 -TEX_ZFilter_RESERVED_3 = 3 -TEX_Z_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'VTX_CLAMP' -VTX_CLAMP__enumvalues = { - 0: 'VTX_Clamp_ClampToZero', - 1: 'VTX_Clamp_ClampToNAN', -} -VTX_Clamp_ClampToZero = 0 -VTX_Clamp_ClampToNAN = 1 -VTX_CLAMP = ctypes.c_uint32 # enum - -# values for enumeration 'VTX_FETCH_TYPE' -VTX_FETCH_TYPE__enumvalues = { - 0: 'VTX_FetchType_VertexData', - 1: 'VTX_FetchType_InstanceData', - 2: 'VTX_FetchType_NoIndexOffset', - 3: 'VTX_FetchType_RESERVED_3', -} -VTX_FetchType_VertexData = 0 -VTX_FetchType_InstanceData = 1 -VTX_FetchType_NoIndexOffset = 2 -VTX_FetchType_RESERVED_3 = 3 -VTX_FETCH_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VTX_FORMAT_COMP_ALL' -VTX_FORMAT_COMP_ALL__enumvalues = { - 0: 'VTX_FormatCompAll_Unsigned', - 1: 'VTX_FormatCompAll_Signed', -} -VTX_FormatCompAll_Unsigned = 0 -VTX_FormatCompAll_Signed = 1 -VTX_FORMAT_COMP_ALL = ctypes.c_uint32 # enum - -# values for enumeration 'VTX_MEM_REQUEST_SIZE' -VTX_MEM_REQUEST_SIZE__enumvalues = { - 0: 'VTX_MemRequestSize_32B', - 1: 'VTX_MemRequestSize_64B', -} -VTX_MemRequestSize_32B = 0 -VTX_MemRequestSize_64B = 1 -VTX_MEM_REQUEST_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'TVX_DATA_FORMAT' -TVX_DATA_FORMAT__enumvalues = { - 0: 'TVX_FMT_INVALID', - 1: 'TVX_FMT_8', - 2: 'TVX_FMT_4_4', - 3: 'TVX_FMT_3_3_2', - 4: 'TVX_FMT_RESERVED_4', - 5: 'TVX_FMT_16', - 6: 'TVX_FMT_16_FLOAT', - 7: 'TVX_FMT_8_8', - 8: 'TVX_FMT_5_6_5', - 9: 'TVX_FMT_6_5_5', - 10: 'TVX_FMT_1_5_5_5', - 11: 'TVX_FMT_4_4_4_4', - 12: 'TVX_FMT_5_5_5_1', - 13: 'TVX_FMT_32', - 14: 'TVX_FMT_32_FLOAT', - 15: 'TVX_FMT_16_16', - 16: 'TVX_FMT_16_16_FLOAT', - 17: 'TVX_FMT_8_24', - 18: 'TVX_FMT_8_24_FLOAT', - 19: 'TVX_FMT_24_8', - 20: 'TVX_FMT_24_8_FLOAT', - 21: 'TVX_FMT_10_11_11', - 22: 'TVX_FMT_10_11_11_FLOAT', - 23: 'TVX_FMT_11_11_10', - 24: 'TVX_FMT_11_11_10_FLOAT', - 25: 'TVX_FMT_2_10_10_10', - 26: 'TVX_FMT_8_8_8_8', - 27: 'TVX_FMT_10_10_10_2', - 28: 'TVX_FMT_X24_8_32_FLOAT', - 29: 'TVX_FMT_32_32', - 30: 'TVX_FMT_32_32_FLOAT', - 31: 'TVX_FMT_16_16_16_16', - 32: 'TVX_FMT_16_16_16_16_FLOAT', - 33: 'TVX_FMT_RESERVED_33', - 34: 'TVX_FMT_32_32_32_32', - 35: 'TVX_FMT_32_32_32_32_FLOAT', - 36: 'TVX_FMT_RESERVED_36', - 37: 'TVX_FMT_1', - 38: 'TVX_FMT_1_REVERSED', - 39: 'TVX_FMT_GB_GR', - 40: 'TVX_FMT_BG_RG', - 41: 'TVX_FMT_32_AS_8', - 42: 'TVX_FMT_32_AS_8_8', - 43: 'TVX_FMT_5_9_9_9_SHAREDEXP', - 44: 'TVX_FMT_8_8_8', - 45: 'TVX_FMT_16_16_16', - 46: 'TVX_FMT_16_16_16_FLOAT', - 47: 'TVX_FMT_32_32_32', - 48: 'TVX_FMT_32_32_32_FLOAT', - 49: 'TVX_FMT_BC1', - 50: 'TVX_FMT_BC2', - 51: 'TVX_FMT_BC3', - 52: 'TVX_FMT_BC4', - 53: 'TVX_FMT_BC5', - 54: 'TVX_FMT_APC0', - 55: 'TVX_FMT_APC1', - 56: 'TVX_FMT_APC2', - 57: 'TVX_FMT_APC3', - 58: 'TVX_FMT_APC4', - 59: 'TVX_FMT_APC5', - 60: 'TVX_FMT_APC6', - 61: 'TVX_FMT_APC7', - 62: 'TVX_FMT_CTX1', - 63: 'TVX_FMT_RESERVED_63', -} -TVX_FMT_INVALID = 0 -TVX_FMT_8 = 1 -TVX_FMT_4_4 = 2 -TVX_FMT_3_3_2 = 3 -TVX_FMT_RESERVED_4 = 4 -TVX_FMT_16 = 5 -TVX_FMT_16_FLOAT = 6 -TVX_FMT_8_8 = 7 -TVX_FMT_5_6_5 = 8 -TVX_FMT_6_5_5 = 9 -TVX_FMT_1_5_5_5 = 10 -TVX_FMT_4_4_4_4 = 11 -TVX_FMT_5_5_5_1 = 12 -TVX_FMT_32 = 13 -TVX_FMT_32_FLOAT = 14 -TVX_FMT_16_16 = 15 -TVX_FMT_16_16_FLOAT = 16 -TVX_FMT_8_24 = 17 -TVX_FMT_8_24_FLOAT = 18 -TVX_FMT_24_8 = 19 -TVX_FMT_24_8_FLOAT = 20 -TVX_FMT_10_11_11 = 21 -TVX_FMT_10_11_11_FLOAT = 22 -TVX_FMT_11_11_10 = 23 -TVX_FMT_11_11_10_FLOAT = 24 -TVX_FMT_2_10_10_10 = 25 -TVX_FMT_8_8_8_8 = 26 -TVX_FMT_10_10_10_2 = 27 -TVX_FMT_X24_8_32_FLOAT = 28 -TVX_FMT_32_32 = 29 -TVX_FMT_32_32_FLOAT = 30 -TVX_FMT_16_16_16_16 = 31 -TVX_FMT_16_16_16_16_FLOAT = 32 -TVX_FMT_RESERVED_33 = 33 -TVX_FMT_32_32_32_32 = 34 -TVX_FMT_32_32_32_32_FLOAT = 35 -TVX_FMT_RESERVED_36 = 36 -TVX_FMT_1 = 37 -TVX_FMT_1_REVERSED = 38 -TVX_FMT_GB_GR = 39 -TVX_FMT_BG_RG = 40 -TVX_FMT_32_AS_8 = 41 -TVX_FMT_32_AS_8_8 = 42 -TVX_FMT_5_9_9_9_SHAREDEXP = 43 -TVX_FMT_8_8_8 = 44 -TVX_FMT_16_16_16 = 45 -TVX_FMT_16_16_16_FLOAT = 46 -TVX_FMT_32_32_32 = 47 -TVX_FMT_32_32_32_FLOAT = 48 -TVX_FMT_BC1 = 49 -TVX_FMT_BC2 = 50 -TVX_FMT_BC3 = 51 -TVX_FMT_BC4 = 52 -TVX_FMT_BC5 = 53 -TVX_FMT_APC0 = 54 -TVX_FMT_APC1 = 55 -TVX_FMT_APC2 = 56 -TVX_FMT_APC3 = 57 -TVX_FMT_APC4 = 58 -TVX_FMT_APC5 = 59 -TVX_FMT_APC6 = 60 -TVX_FMT_APC7 = 61 -TVX_FMT_CTX1 = 62 -TVX_FMT_RESERVED_63 = 63 -TVX_DATA_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'TVX_DST_SEL' -TVX_DST_SEL__enumvalues = { - 0: 'TVX_DstSel_X', - 1: 'TVX_DstSel_Y', - 2: 'TVX_DstSel_Z', - 3: 'TVX_DstSel_W', - 4: 'TVX_DstSel_0f', - 5: 'TVX_DstSel_1f', - 6: 'TVX_DstSel_RESERVED_6', - 7: 'TVX_DstSel_Mask', -} -TVX_DstSel_X = 0 -TVX_DstSel_Y = 1 -TVX_DstSel_Z = 2 -TVX_DstSel_W = 3 -TVX_DstSel_0f = 4 -TVX_DstSel_1f = 5 -TVX_DstSel_RESERVED_6 = 6 -TVX_DstSel_Mask = 7 -TVX_DST_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TVX_ENDIAN_SWAP' -TVX_ENDIAN_SWAP__enumvalues = { - 0: 'TVX_EndianSwap_None', - 1: 'TVX_EndianSwap_8in16', - 2: 'TVX_EndianSwap_8in32', - 3: 'TVX_EndianSwap_8in64', -} -TVX_EndianSwap_None = 0 -TVX_EndianSwap_8in16 = 1 -TVX_EndianSwap_8in32 = 2 -TVX_EndianSwap_8in64 = 3 -TVX_ENDIAN_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'TVX_INST' -TVX_INST__enumvalues = { - 0: 'TVX_Inst_NormalVertexFetch', - 1: 'TVX_Inst_SemanticVertexFetch', - 2: 'TVX_Inst_RESERVED_2', - 3: 'TVX_Inst_LD', - 4: 'TVX_Inst_GetTextureResInfo', - 5: 'TVX_Inst_GetNumberOfSamples', - 6: 'TVX_Inst_GetLOD', - 7: 'TVX_Inst_GetGradientsH', - 8: 'TVX_Inst_GetGradientsV', - 9: 'TVX_Inst_SetTextureOffsets', - 10: 'TVX_Inst_KeepGradients', - 11: 'TVX_Inst_SetGradientsH', - 12: 'TVX_Inst_SetGradientsV', - 13: 'TVX_Inst_Pass', - 14: 'TVX_Inst_GetBufferResInfo', - 15: 'TVX_Inst_RESERVED_15', - 16: 'TVX_Inst_Sample', - 17: 'TVX_Inst_Sample_L', - 18: 'TVX_Inst_Sample_LB', - 19: 'TVX_Inst_Sample_LZ', - 20: 'TVX_Inst_Sample_G', - 21: 'TVX_Inst_Gather4', - 22: 'TVX_Inst_Sample_G_LB', - 23: 'TVX_Inst_Gather4_O', - 24: 'TVX_Inst_Sample_C', - 25: 'TVX_Inst_Sample_C_L', - 26: 'TVX_Inst_Sample_C_LB', - 27: 'TVX_Inst_Sample_C_LZ', - 28: 'TVX_Inst_Sample_C_G', - 29: 'TVX_Inst_Gather4_C', - 30: 'TVX_Inst_Sample_C_G_LB', - 31: 'TVX_Inst_Gather4_C_O', -} -TVX_Inst_NormalVertexFetch = 0 -TVX_Inst_SemanticVertexFetch = 1 -TVX_Inst_RESERVED_2 = 2 -TVX_Inst_LD = 3 -TVX_Inst_GetTextureResInfo = 4 -TVX_Inst_GetNumberOfSamples = 5 -TVX_Inst_GetLOD = 6 -TVX_Inst_GetGradientsH = 7 -TVX_Inst_GetGradientsV = 8 -TVX_Inst_SetTextureOffsets = 9 -TVX_Inst_KeepGradients = 10 -TVX_Inst_SetGradientsH = 11 -TVX_Inst_SetGradientsV = 12 -TVX_Inst_Pass = 13 -TVX_Inst_GetBufferResInfo = 14 -TVX_Inst_RESERVED_15 = 15 -TVX_Inst_Sample = 16 -TVX_Inst_Sample_L = 17 -TVX_Inst_Sample_LB = 18 -TVX_Inst_Sample_LZ = 19 -TVX_Inst_Sample_G = 20 -TVX_Inst_Gather4 = 21 -TVX_Inst_Sample_G_LB = 22 -TVX_Inst_Gather4_O = 23 -TVX_Inst_Sample_C = 24 -TVX_Inst_Sample_C_L = 25 -TVX_Inst_Sample_C_LB = 26 -TVX_Inst_Sample_C_LZ = 27 -TVX_Inst_Sample_C_G = 28 -TVX_Inst_Gather4_C = 29 -TVX_Inst_Sample_C_G_LB = 30 -TVX_Inst_Gather4_C_O = 31 -TVX_INST = ctypes.c_uint32 # enum - -# values for enumeration 'TVX_NUM_FORMAT_ALL' -TVX_NUM_FORMAT_ALL__enumvalues = { - 0: 'TVX_NumFormatAll_Norm', - 1: 'TVX_NumFormatAll_Int', - 2: 'TVX_NumFormatAll_Scaled', - 3: 'TVX_NumFormatAll_RESERVED_3', -} -TVX_NumFormatAll_Norm = 0 -TVX_NumFormatAll_Int = 1 -TVX_NumFormatAll_Scaled = 2 -TVX_NumFormatAll_RESERVED_3 = 3 -TVX_NUM_FORMAT_ALL = ctypes.c_uint32 # enum - -# values for enumeration 'TVX_SRC_SEL' -TVX_SRC_SEL__enumvalues = { - 0: 'TVX_SrcSel_X', - 1: 'TVX_SrcSel_Y', - 2: 'TVX_SrcSel_Z', - 3: 'TVX_SrcSel_W', - 4: 'TVX_SrcSel_0f', - 5: 'TVX_SrcSel_1f', -} -TVX_SrcSel_X = 0 -TVX_SrcSel_Y = 1 -TVX_SrcSel_Z = 2 -TVX_SrcSel_W = 3 -TVX_SrcSel_0f = 4 -TVX_SrcSel_1f = 5 -TVX_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TVX_SRF_MODE_ALL' -TVX_SRF_MODE_ALL__enumvalues = { - 0: 'TVX_SRFModeAll_ZCMO', - 1: 'TVX_SRFModeAll_NZ', -} -TVX_SRFModeAll_ZCMO = 0 -TVX_SRFModeAll_NZ = 1 -TVX_SRF_MODE_ALL = ctypes.c_uint32 # enum - -# values for enumeration 'TVX_TYPE' -TVX_TYPE__enumvalues = { - 0: 'TVX_Type_InvalidTextureResource', - 1: 'TVX_Type_InvalidVertexBuffer', - 2: 'TVX_Type_ValidTextureResource', - 3: 'TVX_Type_ValidVertexBuffer', -} -TVX_Type_InvalidTextureResource = 0 -TVX_Type_InvalidVertexBuffer = 1 -TVX_Type_ValidTextureResource = 2 -TVX_Type_ValidVertexBuffer = 3 -TVX_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SU_PERFCNT_SEL' -SU_PERFCNT_SEL__enumvalues = { - 0: 'PERF_PAPC_PASX_REQ', - 1: 'PERF_PAPC_PASX_DISABLE_PIPE', - 2: 'PERF_PAPC_PASX_FIRST_VECTOR', - 3: 'PERF_PAPC_PASX_SECOND_VECTOR', - 4: 'PERF_PAPC_PASX_FIRST_DEAD', - 5: 'PERF_PAPC_PASX_SECOND_DEAD', - 6: 'PERF_PAPC_PASX_VTX_KILL_DISCARD', - 7: 'PERF_PAPC_PASX_VTX_NAN_DISCARD', - 8: 'PERF_PAPC_PA_INPUT_PRIM', - 9: 'PERF_PAPC_PA_INPUT_NULL_PRIM', - 10: 'PERF_PAPC_PA_INPUT_EVENT_FLAG', - 11: 'PERF_PAPC_PA_INPUT_FIRST_PRIM_SLOT', - 12: 'PERF_PAPC_PA_INPUT_END_OF_PACKET', - 13: 'PERF_PAPC_PA_INPUT_EXTENDED_EVENT', - 14: 'PERF_PAPC_CLPR_CULL_PRIM', - 15: 'PERF_PAPC_CLPR_VVUCP_CULL_PRIM', - 16: 'PERF_PAPC_CLPR_VV_CULL_PRIM', - 17: 'PERF_PAPC_CLPR_UCP_CULL_PRIM', - 18: 'PERF_PAPC_CLPR_VTX_KILL_CULL_PRIM', - 19: 'PERF_PAPC_CLPR_VTX_NAN_CULL_PRIM', - 20: 'PERF_PAPC_CLPR_CULL_TO_NULL_PRIM', - 21: 'PERF_PAPC_CLPR_VVUCP_CLIP_PRIM', - 22: 'PERF_PAPC_CLPR_VV_CLIP_PRIM', - 23: 'PERF_PAPC_CLPR_UCP_CLIP_PRIM', - 24: 'PERF_PAPC_CLPR_POINT_CLIP_CANDIDATE', - 25: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_1', - 26: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_2', - 27: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_3', - 28: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_4', - 29: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_5_8', - 30: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_9_12', - 31: 'PERF_PAPC_CLPR_CLIP_PLANE_NEAR', - 32: 'PERF_PAPC_CLPR_CLIP_PLANE_FAR', - 33: 'PERF_PAPC_CLPR_CLIP_PLANE_LEFT', - 34: 'PERF_PAPC_CLPR_CLIP_PLANE_RIGHT', - 35: 'PERF_PAPC_CLPR_CLIP_PLANE_TOP', - 36: 'PERF_PAPC_CLPR_CLIP_PLANE_BOTTOM', - 37: 'PERF_PAPC_CLPR_GSC_KILL_CULL_PRIM', - 38: 'PERF_PAPC_CLPR_RASTER_KILL_CULL_PRIM', - 39: 'PERF_PAPC_CLSM_NULL_PRIM', - 40: 'PERF_PAPC_CLSM_TOTALLY_VISIBLE_PRIM', - 41: 'PERF_PAPC_CLSM_CULL_TO_NULL_PRIM', - 42: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_1', - 43: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_2', - 44: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_3', - 45: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_4', - 46: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_5_8', - 47: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_9_13', - 48: 'PERF_PAPC_CLIPGA_VTE_KILL_PRIM', - 49: 'PERF_PAPC_SU_INPUT_PRIM', - 50: 'PERF_PAPC_SU_INPUT_CLIP_PRIM', - 51: 'PERF_PAPC_SU_INPUT_NULL_PRIM', - 52: 'PERF_PAPC_SU_INPUT_PRIM_DUAL', - 53: 'PERF_PAPC_SU_INPUT_CLIP_PRIM_DUAL', - 54: 'PERF_PAPC_SU_ZERO_AREA_CULL_PRIM', - 55: 'PERF_PAPC_SU_BACK_FACE_CULL_PRIM', - 56: 'PERF_PAPC_SU_FRONT_FACE_CULL_PRIM', - 57: 'PERF_PAPC_SU_POLYMODE_FACE_CULL', - 58: 'PERF_PAPC_SU_POLYMODE_BACK_CULL', - 59: 'PERF_PAPC_SU_POLYMODE_FRONT_CULL', - 60: 'PERF_PAPC_SU_POLYMODE_INVALID_FILL', - 61: 'PERF_PAPC_SU_OUTPUT_PRIM', - 62: 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM', - 63: 'PERF_PAPC_SU_OUTPUT_NULL_PRIM', - 64: 'PERF_PAPC_SU_OUTPUT_EVENT_FLAG', - 65: 'PERF_PAPC_SU_OUTPUT_FIRST_PRIM_SLOT', - 66: 'PERF_PAPC_SU_OUTPUT_END_OF_PACKET', - 67: 'PERF_PAPC_SU_OUTPUT_POLYMODE_FACE', - 68: 'PERF_PAPC_SU_OUTPUT_POLYMODE_BACK', - 69: 'PERF_PAPC_SU_OUTPUT_POLYMODE_FRONT', - 70: 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FACE', - 71: 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_BACK', - 72: 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FRONT', - 73: 'PERF_PAPC_SU_OUTPUT_PRIM_DUAL', - 74: 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM_DUAL', - 75: 'PERF_PAPC_SU_OUTPUT_POLYMODE_DUAL', - 76: 'PERF_PAPC_SU_OUTPUT_CLIP_POLYMODE_DUAL', - 77: 'PERF_PAPC_PASX_REQ_IDLE', - 78: 'PERF_PAPC_PASX_REQ_BUSY', - 79: 'PERF_PAPC_PASX_REQ_STALLED', - 80: 'PERF_PAPC_PASX_REC_IDLE', - 81: 'PERF_PAPC_PASX_REC_BUSY', - 82: 'PERF_PAPC_PASX_REC_STARVED_SX', - 83: 'PERF_PAPC_PASX_REC_STALLED', - 84: 'PERF_PAPC_PASX_REC_STALLED_POS_MEM', - 85: 'PERF_PAPC_PASX_REC_STALLED_CCGSM_IN', - 86: 'PERF_PAPC_CCGSM_IDLE', - 87: 'PERF_PAPC_CCGSM_BUSY', - 88: 'PERF_PAPC_CCGSM_STALLED', - 89: 'PERF_PAPC_CLPRIM_IDLE', - 90: 'PERF_PAPC_CLPRIM_BUSY', - 91: 'PERF_PAPC_CLPRIM_STALLED', - 92: 'PERF_PAPC_CLPRIM_STARVED_CCGSM', - 93: 'PERF_PAPC_CLIPSM_IDLE', - 94: 'PERF_PAPC_CLIPSM_BUSY', - 95: 'PERF_PAPC_CLIPSM_WAIT_CLIP_VERT_ENGH', - 96: 'PERF_PAPC_CLIPSM_WAIT_HIGH_PRI_SEQ', - 97: 'PERF_PAPC_CLIPSM_WAIT_CLIPGA', - 98: 'PERF_PAPC_CLIPSM_WAIT_AVAIL_VTE_CLIP', - 99: 'PERF_PAPC_CLIPSM_WAIT_CLIP_OUTSM', - 100: 'PERF_PAPC_CLIPGA_IDLE', - 101: 'PERF_PAPC_CLIPGA_BUSY', - 102: 'PERF_PAPC_CLIPGA_STARVED_VTE_CLIP', - 103: 'PERF_PAPC_CLIPGA_STALLED', - 104: 'PERF_PAPC_CLIP_IDLE', - 105: 'PERF_PAPC_CLIP_BUSY', - 106: 'PERF_PAPC_SU_IDLE', - 107: 'PERF_PAPC_SU_BUSY', - 108: 'PERF_PAPC_SU_STARVED_CLIP', - 109: 'PERF_PAPC_SU_STALLED_SC', - 110: 'PERF_PAPC_CL_DYN_SCLK_VLD', - 111: 'PERF_PAPC_SU_DYN_SCLK_VLD', - 112: 'PERF_PAPC_PA_REG_SCLK_VLD', - 113: 'PERF_PAPC_SU_MULTI_GPU_PRIM_FILTER_CULL', - 114: 'PERF_PAPC_PASX_SE0_REQ', - 115: 'PERF_PAPC_PASX_SE1_REQ', - 116: 'PERF_PAPC_PASX_SE0_FIRST_VECTOR', - 117: 'PERF_PAPC_PASX_SE0_SECOND_VECTOR', - 118: 'PERF_PAPC_PASX_SE1_FIRST_VECTOR', - 119: 'PERF_PAPC_PASX_SE1_SECOND_VECTOR', - 120: 'PERF_PAPC_SU_SE0_PRIM_FILTER_CULL', - 121: 'PERF_PAPC_SU_SE1_PRIM_FILTER_CULL', - 122: 'PERF_PAPC_SU_SE01_PRIM_FILTER_CULL', - 123: 'PERF_PAPC_SU_SE0_OUTPUT_PRIM', - 124: 'PERF_PAPC_SU_SE1_OUTPUT_PRIM', - 125: 'PERF_PAPC_SU_SE01_OUTPUT_PRIM', - 126: 'PERF_PAPC_SU_SE0_OUTPUT_NULL_PRIM', - 127: 'PERF_PAPC_SU_SE1_OUTPUT_NULL_PRIM', - 128: 'PERF_PAPC_SU_SE01_OUTPUT_NULL_PRIM', - 129: 'PERF_PAPC_SU_SE0_OUTPUT_FIRST_PRIM_SLOT', - 130: 'PERF_PAPC_SU_SE1_OUTPUT_FIRST_PRIM_SLOT', - 131: 'PERF_PAPC_SU_SE0_STALLED_SC', - 132: 'PERF_PAPC_SU_SE1_STALLED_SC', - 133: 'PERF_PAPC_SU_SE01_STALLED_SC', - 134: 'PERF_PAPC_CLSM_CLIPPING_PRIM', - 135: 'PERF_PAPC_SU_CULLED_PRIM', - 136: 'PERF_PAPC_SU_OUTPUT_EOPG', - 137: 'PERF_PAPC_SU_SE2_PRIM_FILTER_CULL', - 138: 'PERF_PAPC_SU_SE3_PRIM_FILTER_CULL', - 139: 'PERF_PAPC_SU_SE2_OUTPUT_PRIM', - 140: 'PERF_PAPC_SU_SE3_OUTPUT_PRIM', - 141: 'PERF_PAPC_SU_SE2_OUTPUT_NULL_PRIM', - 142: 'PERF_PAPC_SU_SE3_OUTPUT_NULL_PRIM', - 143: 'PERF_PAPC_SU_SE0_OUTPUT_END_OF_PACKET', - 144: 'PERF_PAPC_SU_SE1_OUTPUT_END_OF_PACKET', - 145: 'PERF_PAPC_SU_SE2_OUTPUT_END_OF_PACKET', - 146: 'PERF_PAPC_SU_SE3_OUTPUT_END_OF_PACKET', - 147: 'PERF_PAPC_SU_SE0_OUTPUT_EOPG', - 148: 'PERF_PAPC_SU_SE1_OUTPUT_EOPG', - 149: 'PERF_PAPC_SU_SE2_OUTPUT_EOPG', - 150: 'PERF_PAPC_SU_SE3_OUTPUT_EOPG', - 151: 'PERF_PAPC_SU_SE2_STALLED_SC', - 152: 'PERF_PAPC_SU_SE3_STALLED_SC', -} -PERF_PAPC_PASX_REQ = 0 -PERF_PAPC_PASX_DISABLE_PIPE = 1 -PERF_PAPC_PASX_FIRST_VECTOR = 2 -PERF_PAPC_PASX_SECOND_VECTOR = 3 -PERF_PAPC_PASX_FIRST_DEAD = 4 -PERF_PAPC_PASX_SECOND_DEAD = 5 -PERF_PAPC_PASX_VTX_KILL_DISCARD = 6 -PERF_PAPC_PASX_VTX_NAN_DISCARD = 7 -PERF_PAPC_PA_INPUT_PRIM = 8 -PERF_PAPC_PA_INPUT_NULL_PRIM = 9 -PERF_PAPC_PA_INPUT_EVENT_FLAG = 10 -PERF_PAPC_PA_INPUT_FIRST_PRIM_SLOT = 11 -PERF_PAPC_PA_INPUT_END_OF_PACKET = 12 -PERF_PAPC_PA_INPUT_EXTENDED_EVENT = 13 -PERF_PAPC_CLPR_CULL_PRIM = 14 -PERF_PAPC_CLPR_VVUCP_CULL_PRIM = 15 -PERF_PAPC_CLPR_VV_CULL_PRIM = 16 -PERF_PAPC_CLPR_UCP_CULL_PRIM = 17 -PERF_PAPC_CLPR_VTX_KILL_CULL_PRIM = 18 -PERF_PAPC_CLPR_VTX_NAN_CULL_PRIM = 19 -PERF_PAPC_CLPR_CULL_TO_NULL_PRIM = 20 -PERF_PAPC_CLPR_VVUCP_CLIP_PRIM = 21 -PERF_PAPC_CLPR_VV_CLIP_PRIM = 22 -PERF_PAPC_CLPR_UCP_CLIP_PRIM = 23 -PERF_PAPC_CLPR_POINT_CLIP_CANDIDATE = 24 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_1 = 25 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_2 = 26 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_3 = 27 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_4 = 28 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_5_8 = 29 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_9_12 = 30 -PERF_PAPC_CLPR_CLIP_PLANE_NEAR = 31 -PERF_PAPC_CLPR_CLIP_PLANE_FAR = 32 -PERF_PAPC_CLPR_CLIP_PLANE_LEFT = 33 -PERF_PAPC_CLPR_CLIP_PLANE_RIGHT = 34 -PERF_PAPC_CLPR_CLIP_PLANE_TOP = 35 -PERF_PAPC_CLPR_CLIP_PLANE_BOTTOM = 36 -PERF_PAPC_CLPR_GSC_KILL_CULL_PRIM = 37 -PERF_PAPC_CLPR_RASTER_KILL_CULL_PRIM = 38 -PERF_PAPC_CLSM_NULL_PRIM = 39 -PERF_PAPC_CLSM_TOTALLY_VISIBLE_PRIM = 40 -PERF_PAPC_CLSM_CULL_TO_NULL_PRIM = 41 -PERF_PAPC_CLSM_OUT_PRIM_CNT_1 = 42 -PERF_PAPC_CLSM_OUT_PRIM_CNT_2 = 43 -PERF_PAPC_CLSM_OUT_PRIM_CNT_3 = 44 -PERF_PAPC_CLSM_OUT_PRIM_CNT_4 = 45 -PERF_PAPC_CLSM_OUT_PRIM_CNT_5_8 = 46 -PERF_PAPC_CLSM_OUT_PRIM_CNT_9_13 = 47 -PERF_PAPC_CLIPGA_VTE_KILL_PRIM = 48 -PERF_PAPC_SU_INPUT_PRIM = 49 -PERF_PAPC_SU_INPUT_CLIP_PRIM = 50 -PERF_PAPC_SU_INPUT_NULL_PRIM = 51 -PERF_PAPC_SU_INPUT_PRIM_DUAL = 52 -PERF_PAPC_SU_INPUT_CLIP_PRIM_DUAL = 53 -PERF_PAPC_SU_ZERO_AREA_CULL_PRIM = 54 -PERF_PAPC_SU_BACK_FACE_CULL_PRIM = 55 -PERF_PAPC_SU_FRONT_FACE_CULL_PRIM = 56 -PERF_PAPC_SU_POLYMODE_FACE_CULL = 57 -PERF_PAPC_SU_POLYMODE_BACK_CULL = 58 -PERF_PAPC_SU_POLYMODE_FRONT_CULL = 59 -PERF_PAPC_SU_POLYMODE_INVALID_FILL = 60 -PERF_PAPC_SU_OUTPUT_PRIM = 61 -PERF_PAPC_SU_OUTPUT_CLIP_PRIM = 62 -PERF_PAPC_SU_OUTPUT_NULL_PRIM = 63 -PERF_PAPC_SU_OUTPUT_EVENT_FLAG = 64 -PERF_PAPC_SU_OUTPUT_FIRST_PRIM_SLOT = 65 -PERF_PAPC_SU_OUTPUT_END_OF_PACKET = 66 -PERF_PAPC_SU_OUTPUT_POLYMODE_FACE = 67 -PERF_PAPC_SU_OUTPUT_POLYMODE_BACK = 68 -PERF_PAPC_SU_OUTPUT_POLYMODE_FRONT = 69 -PERF_PAPC_SU_OUT_CLIP_POLYMODE_FACE = 70 -PERF_PAPC_SU_OUT_CLIP_POLYMODE_BACK = 71 -PERF_PAPC_SU_OUT_CLIP_POLYMODE_FRONT = 72 -PERF_PAPC_SU_OUTPUT_PRIM_DUAL = 73 -PERF_PAPC_SU_OUTPUT_CLIP_PRIM_DUAL = 74 -PERF_PAPC_SU_OUTPUT_POLYMODE_DUAL = 75 -PERF_PAPC_SU_OUTPUT_CLIP_POLYMODE_DUAL = 76 -PERF_PAPC_PASX_REQ_IDLE = 77 -PERF_PAPC_PASX_REQ_BUSY = 78 -PERF_PAPC_PASX_REQ_STALLED = 79 -PERF_PAPC_PASX_REC_IDLE = 80 -PERF_PAPC_PASX_REC_BUSY = 81 -PERF_PAPC_PASX_REC_STARVED_SX = 82 -PERF_PAPC_PASX_REC_STALLED = 83 -PERF_PAPC_PASX_REC_STALLED_POS_MEM = 84 -PERF_PAPC_PASX_REC_STALLED_CCGSM_IN = 85 -PERF_PAPC_CCGSM_IDLE = 86 -PERF_PAPC_CCGSM_BUSY = 87 -PERF_PAPC_CCGSM_STALLED = 88 -PERF_PAPC_CLPRIM_IDLE = 89 -PERF_PAPC_CLPRIM_BUSY = 90 -PERF_PAPC_CLPRIM_STALLED = 91 -PERF_PAPC_CLPRIM_STARVED_CCGSM = 92 -PERF_PAPC_CLIPSM_IDLE = 93 -PERF_PAPC_CLIPSM_BUSY = 94 -PERF_PAPC_CLIPSM_WAIT_CLIP_VERT_ENGH = 95 -PERF_PAPC_CLIPSM_WAIT_HIGH_PRI_SEQ = 96 -PERF_PAPC_CLIPSM_WAIT_CLIPGA = 97 -PERF_PAPC_CLIPSM_WAIT_AVAIL_VTE_CLIP = 98 -PERF_PAPC_CLIPSM_WAIT_CLIP_OUTSM = 99 -PERF_PAPC_CLIPGA_IDLE = 100 -PERF_PAPC_CLIPGA_BUSY = 101 -PERF_PAPC_CLIPGA_STARVED_VTE_CLIP = 102 -PERF_PAPC_CLIPGA_STALLED = 103 -PERF_PAPC_CLIP_IDLE = 104 -PERF_PAPC_CLIP_BUSY = 105 -PERF_PAPC_SU_IDLE = 106 -PERF_PAPC_SU_BUSY = 107 -PERF_PAPC_SU_STARVED_CLIP = 108 -PERF_PAPC_SU_STALLED_SC = 109 -PERF_PAPC_CL_DYN_SCLK_VLD = 110 -PERF_PAPC_SU_DYN_SCLK_VLD = 111 -PERF_PAPC_PA_REG_SCLK_VLD = 112 -PERF_PAPC_SU_MULTI_GPU_PRIM_FILTER_CULL = 113 -PERF_PAPC_PASX_SE0_REQ = 114 -PERF_PAPC_PASX_SE1_REQ = 115 -PERF_PAPC_PASX_SE0_FIRST_VECTOR = 116 -PERF_PAPC_PASX_SE0_SECOND_VECTOR = 117 -PERF_PAPC_PASX_SE1_FIRST_VECTOR = 118 -PERF_PAPC_PASX_SE1_SECOND_VECTOR = 119 -PERF_PAPC_SU_SE0_PRIM_FILTER_CULL = 120 -PERF_PAPC_SU_SE1_PRIM_FILTER_CULL = 121 -PERF_PAPC_SU_SE01_PRIM_FILTER_CULL = 122 -PERF_PAPC_SU_SE0_OUTPUT_PRIM = 123 -PERF_PAPC_SU_SE1_OUTPUT_PRIM = 124 -PERF_PAPC_SU_SE01_OUTPUT_PRIM = 125 -PERF_PAPC_SU_SE0_OUTPUT_NULL_PRIM = 126 -PERF_PAPC_SU_SE1_OUTPUT_NULL_PRIM = 127 -PERF_PAPC_SU_SE01_OUTPUT_NULL_PRIM = 128 -PERF_PAPC_SU_SE0_OUTPUT_FIRST_PRIM_SLOT = 129 -PERF_PAPC_SU_SE1_OUTPUT_FIRST_PRIM_SLOT = 130 -PERF_PAPC_SU_SE0_STALLED_SC = 131 -PERF_PAPC_SU_SE1_STALLED_SC = 132 -PERF_PAPC_SU_SE01_STALLED_SC = 133 -PERF_PAPC_CLSM_CLIPPING_PRIM = 134 -PERF_PAPC_SU_CULLED_PRIM = 135 -PERF_PAPC_SU_OUTPUT_EOPG = 136 -PERF_PAPC_SU_SE2_PRIM_FILTER_CULL = 137 -PERF_PAPC_SU_SE3_PRIM_FILTER_CULL = 138 -PERF_PAPC_SU_SE2_OUTPUT_PRIM = 139 -PERF_PAPC_SU_SE3_OUTPUT_PRIM = 140 -PERF_PAPC_SU_SE2_OUTPUT_NULL_PRIM = 141 -PERF_PAPC_SU_SE3_OUTPUT_NULL_PRIM = 142 -PERF_PAPC_SU_SE0_OUTPUT_END_OF_PACKET = 143 -PERF_PAPC_SU_SE1_OUTPUT_END_OF_PACKET = 144 -PERF_PAPC_SU_SE2_OUTPUT_END_OF_PACKET = 145 -PERF_PAPC_SU_SE3_OUTPUT_END_OF_PACKET = 146 -PERF_PAPC_SU_SE0_OUTPUT_EOPG = 147 -PERF_PAPC_SU_SE1_OUTPUT_EOPG = 148 -PERF_PAPC_SU_SE2_OUTPUT_EOPG = 149 -PERF_PAPC_SU_SE3_OUTPUT_EOPG = 150 -PERF_PAPC_SU_SE2_STALLED_SC = 151 -PERF_PAPC_SU_SE3_STALLED_SC = 152 -SU_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SC_PERFCNT_SEL' -SC_PERFCNT_SEL__enumvalues = { - 0: 'SC_SRPS_WINDOW_VALID', - 1: 'SC_PSSW_WINDOW_VALID', - 2: 'SC_TPQZ_WINDOW_VALID', - 3: 'SC_QZQP_WINDOW_VALID', - 4: 'SC_TRPK_WINDOW_VALID', - 5: 'SC_SRPS_WINDOW_VALID_BUSY', - 6: 'SC_PSSW_WINDOW_VALID_BUSY', - 7: 'SC_TPQZ_WINDOW_VALID_BUSY', - 8: 'SC_QZQP_WINDOW_VALID_BUSY', - 9: 'SC_TRPK_WINDOW_VALID_BUSY', - 10: 'SC_STARVED_BY_PA', - 11: 'SC_STALLED_BY_PRIMFIFO', - 12: 'SC_STALLED_BY_DB_TILE', - 13: 'SC_STARVED_BY_DB_TILE', - 14: 'SC_STALLED_BY_TILEORDERFIFO', - 15: 'SC_STALLED_BY_TILEFIFO', - 16: 'SC_STALLED_BY_DB_QUAD', - 17: 'SC_STARVED_BY_DB_QUAD', - 18: 'SC_STALLED_BY_QUADFIFO', - 19: 'SC_STALLED_BY_BCI', - 20: 'SC_STALLED_BY_SPI', - 21: 'SC_SCISSOR_DISCARD', - 22: 'SC_BB_DISCARD', - 23: 'SC_SUPERTILE_COUNT', - 24: 'SC_SUPERTILE_PER_PRIM_H0', - 25: 'SC_SUPERTILE_PER_PRIM_H1', - 26: 'SC_SUPERTILE_PER_PRIM_H2', - 27: 'SC_SUPERTILE_PER_PRIM_H3', - 28: 'SC_SUPERTILE_PER_PRIM_H4', - 29: 'SC_SUPERTILE_PER_PRIM_H5', - 30: 'SC_SUPERTILE_PER_PRIM_H6', - 31: 'SC_SUPERTILE_PER_PRIM_H7', - 32: 'SC_SUPERTILE_PER_PRIM_H8', - 33: 'SC_SUPERTILE_PER_PRIM_H9', - 34: 'SC_SUPERTILE_PER_PRIM_H10', - 35: 'SC_SUPERTILE_PER_PRIM_H11', - 36: 'SC_SUPERTILE_PER_PRIM_H12', - 37: 'SC_SUPERTILE_PER_PRIM_H13', - 38: 'SC_SUPERTILE_PER_PRIM_H14', - 39: 'SC_SUPERTILE_PER_PRIM_H15', - 40: 'SC_SUPERTILE_PER_PRIM_H16', - 41: 'SC_TILE_PER_PRIM_H0', - 42: 'SC_TILE_PER_PRIM_H1', - 43: 'SC_TILE_PER_PRIM_H2', - 44: 'SC_TILE_PER_PRIM_H3', - 45: 'SC_TILE_PER_PRIM_H4', - 46: 'SC_TILE_PER_PRIM_H5', - 47: 'SC_TILE_PER_PRIM_H6', - 48: 'SC_TILE_PER_PRIM_H7', - 49: 'SC_TILE_PER_PRIM_H8', - 50: 'SC_TILE_PER_PRIM_H9', - 51: 'SC_TILE_PER_PRIM_H10', - 52: 'SC_TILE_PER_PRIM_H11', - 53: 'SC_TILE_PER_PRIM_H12', - 54: 'SC_TILE_PER_PRIM_H13', - 55: 'SC_TILE_PER_PRIM_H14', - 56: 'SC_TILE_PER_PRIM_H15', - 57: 'SC_TILE_PER_PRIM_H16', - 58: 'SC_TILE_PER_SUPERTILE_H0', - 59: 'SC_TILE_PER_SUPERTILE_H1', - 60: 'SC_TILE_PER_SUPERTILE_H2', - 61: 'SC_TILE_PER_SUPERTILE_H3', - 62: 'SC_TILE_PER_SUPERTILE_H4', - 63: 'SC_TILE_PER_SUPERTILE_H5', - 64: 'SC_TILE_PER_SUPERTILE_H6', - 65: 'SC_TILE_PER_SUPERTILE_H7', - 66: 'SC_TILE_PER_SUPERTILE_H8', - 67: 'SC_TILE_PER_SUPERTILE_H9', - 68: 'SC_TILE_PER_SUPERTILE_H10', - 69: 'SC_TILE_PER_SUPERTILE_H11', - 70: 'SC_TILE_PER_SUPERTILE_H12', - 71: 'SC_TILE_PER_SUPERTILE_H13', - 72: 'SC_TILE_PER_SUPERTILE_H14', - 73: 'SC_TILE_PER_SUPERTILE_H15', - 74: 'SC_TILE_PER_SUPERTILE_H16', - 75: 'SC_TILE_PICKED_H1', - 76: 'SC_TILE_PICKED_H2', - 77: 'SC_TILE_PICKED_H3', - 78: 'SC_TILE_PICKED_H4', - 79: 'SC_QZ0_MULTI_GPU_TILE_DISCARD', - 80: 'SC_QZ1_MULTI_GPU_TILE_DISCARD', - 81: 'SC_QZ2_MULTI_GPU_TILE_DISCARD', - 82: 'SC_QZ3_MULTI_GPU_TILE_DISCARD', - 83: 'SC_QZ0_TILE_COUNT', - 84: 'SC_QZ1_TILE_COUNT', - 85: 'SC_QZ2_TILE_COUNT', - 86: 'SC_QZ3_TILE_COUNT', - 87: 'SC_QZ0_TILE_COVERED_COUNT', - 88: 'SC_QZ1_TILE_COVERED_COUNT', - 89: 'SC_QZ2_TILE_COVERED_COUNT', - 90: 'SC_QZ3_TILE_COVERED_COUNT', - 91: 'SC_QZ0_TILE_NOT_COVERED_COUNT', - 92: 'SC_QZ1_TILE_NOT_COVERED_COUNT', - 93: 'SC_QZ2_TILE_NOT_COVERED_COUNT', - 94: 'SC_QZ3_TILE_NOT_COVERED_COUNT', - 95: 'SC_QZ0_QUAD_PER_TILE_H0', - 96: 'SC_QZ0_QUAD_PER_TILE_H1', - 97: 'SC_QZ0_QUAD_PER_TILE_H2', - 98: 'SC_QZ0_QUAD_PER_TILE_H3', - 99: 'SC_QZ0_QUAD_PER_TILE_H4', - 100: 'SC_QZ0_QUAD_PER_TILE_H5', - 101: 'SC_QZ0_QUAD_PER_TILE_H6', - 102: 'SC_QZ0_QUAD_PER_TILE_H7', - 103: 'SC_QZ0_QUAD_PER_TILE_H8', - 104: 'SC_QZ0_QUAD_PER_TILE_H9', - 105: 'SC_QZ0_QUAD_PER_TILE_H10', - 106: 'SC_QZ0_QUAD_PER_TILE_H11', - 107: 'SC_QZ0_QUAD_PER_TILE_H12', - 108: 'SC_QZ0_QUAD_PER_TILE_H13', - 109: 'SC_QZ0_QUAD_PER_TILE_H14', - 110: 'SC_QZ0_QUAD_PER_TILE_H15', - 111: 'SC_QZ0_QUAD_PER_TILE_H16', - 112: 'SC_QZ1_QUAD_PER_TILE_H0', - 113: 'SC_QZ1_QUAD_PER_TILE_H1', - 114: 'SC_QZ1_QUAD_PER_TILE_H2', - 115: 'SC_QZ1_QUAD_PER_TILE_H3', - 116: 'SC_QZ1_QUAD_PER_TILE_H4', - 117: 'SC_QZ1_QUAD_PER_TILE_H5', - 118: 'SC_QZ1_QUAD_PER_TILE_H6', - 119: 'SC_QZ1_QUAD_PER_TILE_H7', - 120: 'SC_QZ1_QUAD_PER_TILE_H8', - 121: 'SC_QZ1_QUAD_PER_TILE_H9', - 122: 'SC_QZ1_QUAD_PER_TILE_H10', - 123: 'SC_QZ1_QUAD_PER_TILE_H11', - 124: 'SC_QZ1_QUAD_PER_TILE_H12', - 125: 'SC_QZ1_QUAD_PER_TILE_H13', - 126: 'SC_QZ1_QUAD_PER_TILE_H14', - 127: 'SC_QZ1_QUAD_PER_TILE_H15', - 128: 'SC_QZ1_QUAD_PER_TILE_H16', - 129: 'SC_QZ2_QUAD_PER_TILE_H0', - 130: 'SC_QZ2_QUAD_PER_TILE_H1', - 131: 'SC_QZ2_QUAD_PER_TILE_H2', - 132: 'SC_QZ2_QUAD_PER_TILE_H3', - 133: 'SC_QZ2_QUAD_PER_TILE_H4', - 134: 'SC_QZ2_QUAD_PER_TILE_H5', - 135: 'SC_QZ2_QUAD_PER_TILE_H6', - 136: 'SC_QZ2_QUAD_PER_TILE_H7', - 137: 'SC_QZ2_QUAD_PER_TILE_H8', - 138: 'SC_QZ2_QUAD_PER_TILE_H9', - 139: 'SC_QZ2_QUAD_PER_TILE_H10', - 140: 'SC_QZ2_QUAD_PER_TILE_H11', - 141: 'SC_QZ2_QUAD_PER_TILE_H12', - 142: 'SC_QZ2_QUAD_PER_TILE_H13', - 143: 'SC_QZ2_QUAD_PER_TILE_H14', - 144: 'SC_QZ2_QUAD_PER_TILE_H15', - 145: 'SC_QZ2_QUAD_PER_TILE_H16', - 146: 'SC_QZ3_QUAD_PER_TILE_H0', - 147: 'SC_QZ3_QUAD_PER_TILE_H1', - 148: 'SC_QZ3_QUAD_PER_TILE_H2', - 149: 'SC_QZ3_QUAD_PER_TILE_H3', - 150: 'SC_QZ3_QUAD_PER_TILE_H4', - 151: 'SC_QZ3_QUAD_PER_TILE_H5', - 152: 'SC_QZ3_QUAD_PER_TILE_H6', - 153: 'SC_QZ3_QUAD_PER_TILE_H7', - 154: 'SC_QZ3_QUAD_PER_TILE_H8', - 155: 'SC_QZ3_QUAD_PER_TILE_H9', - 156: 'SC_QZ3_QUAD_PER_TILE_H10', - 157: 'SC_QZ3_QUAD_PER_TILE_H11', - 158: 'SC_QZ3_QUAD_PER_TILE_H12', - 159: 'SC_QZ3_QUAD_PER_TILE_H13', - 160: 'SC_QZ3_QUAD_PER_TILE_H14', - 161: 'SC_QZ3_QUAD_PER_TILE_H15', - 162: 'SC_QZ3_QUAD_PER_TILE_H16', - 163: 'SC_QZ0_QUAD_COUNT', - 164: 'SC_QZ1_QUAD_COUNT', - 165: 'SC_QZ2_QUAD_COUNT', - 166: 'SC_QZ3_QUAD_COUNT', - 167: 'SC_P0_HIZ_TILE_COUNT', - 168: 'SC_P1_HIZ_TILE_COUNT', - 169: 'SC_P2_HIZ_TILE_COUNT', - 170: 'SC_P3_HIZ_TILE_COUNT', - 171: 'SC_P0_HIZ_QUAD_PER_TILE_H0', - 172: 'SC_P0_HIZ_QUAD_PER_TILE_H1', - 173: 'SC_P0_HIZ_QUAD_PER_TILE_H2', - 174: 'SC_P0_HIZ_QUAD_PER_TILE_H3', - 175: 'SC_P0_HIZ_QUAD_PER_TILE_H4', - 176: 'SC_P0_HIZ_QUAD_PER_TILE_H5', - 177: 'SC_P0_HIZ_QUAD_PER_TILE_H6', - 178: 'SC_P0_HIZ_QUAD_PER_TILE_H7', - 179: 'SC_P0_HIZ_QUAD_PER_TILE_H8', - 180: 'SC_P0_HIZ_QUAD_PER_TILE_H9', - 181: 'SC_P0_HIZ_QUAD_PER_TILE_H10', - 182: 'SC_P0_HIZ_QUAD_PER_TILE_H11', - 183: 'SC_P0_HIZ_QUAD_PER_TILE_H12', - 184: 'SC_P0_HIZ_QUAD_PER_TILE_H13', - 185: 'SC_P0_HIZ_QUAD_PER_TILE_H14', - 186: 'SC_P0_HIZ_QUAD_PER_TILE_H15', - 187: 'SC_P0_HIZ_QUAD_PER_TILE_H16', - 188: 'SC_P1_HIZ_QUAD_PER_TILE_H0', - 189: 'SC_P1_HIZ_QUAD_PER_TILE_H1', - 190: 'SC_P1_HIZ_QUAD_PER_TILE_H2', - 191: 'SC_P1_HIZ_QUAD_PER_TILE_H3', - 192: 'SC_P1_HIZ_QUAD_PER_TILE_H4', - 193: 'SC_P1_HIZ_QUAD_PER_TILE_H5', - 194: 'SC_P1_HIZ_QUAD_PER_TILE_H6', - 195: 'SC_P1_HIZ_QUAD_PER_TILE_H7', - 196: 'SC_P1_HIZ_QUAD_PER_TILE_H8', - 197: 'SC_P1_HIZ_QUAD_PER_TILE_H9', - 198: 'SC_P1_HIZ_QUAD_PER_TILE_H10', - 199: 'SC_P1_HIZ_QUAD_PER_TILE_H11', - 200: 'SC_P1_HIZ_QUAD_PER_TILE_H12', - 201: 'SC_P1_HIZ_QUAD_PER_TILE_H13', - 202: 'SC_P1_HIZ_QUAD_PER_TILE_H14', - 203: 'SC_P1_HIZ_QUAD_PER_TILE_H15', - 204: 'SC_P1_HIZ_QUAD_PER_TILE_H16', - 205: 'SC_P2_HIZ_QUAD_PER_TILE_H0', - 206: 'SC_P2_HIZ_QUAD_PER_TILE_H1', - 207: 'SC_P2_HIZ_QUAD_PER_TILE_H2', - 208: 'SC_P2_HIZ_QUAD_PER_TILE_H3', - 209: 'SC_P2_HIZ_QUAD_PER_TILE_H4', - 210: 'SC_P2_HIZ_QUAD_PER_TILE_H5', - 211: 'SC_P2_HIZ_QUAD_PER_TILE_H6', - 212: 'SC_P2_HIZ_QUAD_PER_TILE_H7', - 213: 'SC_P2_HIZ_QUAD_PER_TILE_H8', - 214: 'SC_P2_HIZ_QUAD_PER_TILE_H9', - 215: 'SC_P2_HIZ_QUAD_PER_TILE_H10', - 216: 'SC_P2_HIZ_QUAD_PER_TILE_H11', - 217: 'SC_P2_HIZ_QUAD_PER_TILE_H12', - 218: 'SC_P2_HIZ_QUAD_PER_TILE_H13', - 219: 'SC_P2_HIZ_QUAD_PER_TILE_H14', - 220: 'SC_P2_HIZ_QUAD_PER_TILE_H15', - 221: 'SC_P2_HIZ_QUAD_PER_TILE_H16', - 222: 'SC_P3_HIZ_QUAD_PER_TILE_H0', - 223: 'SC_P3_HIZ_QUAD_PER_TILE_H1', - 224: 'SC_P3_HIZ_QUAD_PER_TILE_H2', - 225: 'SC_P3_HIZ_QUAD_PER_TILE_H3', - 226: 'SC_P3_HIZ_QUAD_PER_TILE_H4', - 227: 'SC_P3_HIZ_QUAD_PER_TILE_H5', - 228: 'SC_P3_HIZ_QUAD_PER_TILE_H6', - 229: 'SC_P3_HIZ_QUAD_PER_TILE_H7', - 230: 'SC_P3_HIZ_QUAD_PER_TILE_H8', - 231: 'SC_P3_HIZ_QUAD_PER_TILE_H9', - 232: 'SC_P3_HIZ_QUAD_PER_TILE_H10', - 233: 'SC_P3_HIZ_QUAD_PER_TILE_H11', - 234: 'SC_P3_HIZ_QUAD_PER_TILE_H12', - 235: 'SC_P3_HIZ_QUAD_PER_TILE_H13', - 236: 'SC_P3_HIZ_QUAD_PER_TILE_H14', - 237: 'SC_P3_HIZ_QUAD_PER_TILE_H15', - 238: 'SC_P3_HIZ_QUAD_PER_TILE_H16', - 239: 'SC_P0_HIZ_QUAD_COUNT', - 240: 'SC_P1_HIZ_QUAD_COUNT', - 241: 'SC_P2_HIZ_QUAD_COUNT', - 242: 'SC_P3_HIZ_QUAD_COUNT', - 243: 'SC_P0_DETAIL_QUAD_COUNT', - 244: 'SC_P1_DETAIL_QUAD_COUNT', - 245: 'SC_P2_DETAIL_QUAD_COUNT', - 246: 'SC_P3_DETAIL_QUAD_COUNT', - 247: 'SC_P0_DETAIL_QUAD_WITH_1_PIX', - 248: 'SC_P0_DETAIL_QUAD_WITH_2_PIX', - 249: 'SC_P0_DETAIL_QUAD_WITH_3_PIX', - 250: 'SC_P0_DETAIL_QUAD_WITH_4_PIX', - 251: 'SC_P1_DETAIL_QUAD_WITH_1_PIX', - 252: 'SC_P1_DETAIL_QUAD_WITH_2_PIX', - 253: 'SC_P1_DETAIL_QUAD_WITH_3_PIX', - 254: 'SC_P1_DETAIL_QUAD_WITH_4_PIX', - 255: 'SC_P2_DETAIL_QUAD_WITH_1_PIX', - 256: 'SC_P2_DETAIL_QUAD_WITH_2_PIX', - 257: 'SC_P2_DETAIL_QUAD_WITH_3_PIX', - 258: 'SC_P2_DETAIL_QUAD_WITH_4_PIX', - 259: 'SC_P3_DETAIL_QUAD_WITH_1_PIX', - 260: 'SC_P3_DETAIL_QUAD_WITH_2_PIX', - 261: 'SC_P3_DETAIL_QUAD_WITH_3_PIX', - 262: 'SC_P3_DETAIL_QUAD_WITH_4_PIX', - 263: 'SC_EARLYZ_QUAD_COUNT', - 264: 'SC_EARLYZ_QUAD_WITH_1_PIX', - 265: 'SC_EARLYZ_QUAD_WITH_2_PIX', - 266: 'SC_EARLYZ_QUAD_WITH_3_PIX', - 267: 'SC_EARLYZ_QUAD_WITH_4_PIX', - 268: 'SC_PKR_QUAD_PER_ROW_H1', - 269: 'SC_PKR_QUAD_PER_ROW_H2', - 270: 'SC_PKR_4X2_QUAD_SPLIT', - 271: 'SC_PKR_4X2_FILL_QUAD', - 272: 'SC_PKR_END_OF_VECTOR', - 273: 'SC_PKR_CONTROL_XFER', - 274: 'SC_PKR_DBHANG_FORCE_EOV', - 275: 'SC_REG_SCLK_BUSY', - 276: 'SC_GRP0_DYN_SCLK_BUSY', - 277: 'SC_GRP1_DYN_SCLK_BUSY', - 278: 'SC_GRP2_DYN_SCLK_BUSY', - 279: 'SC_GRP3_DYN_SCLK_BUSY', - 280: 'SC_GRP4_DYN_SCLK_BUSY', - 281: 'SC_PA0_SC_DATA_FIFO_RD', - 282: 'SC_PA0_SC_DATA_FIFO_WE', - 283: 'SC_PA1_SC_DATA_FIFO_RD', - 284: 'SC_PA1_SC_DATA_FIFO_WE', - 285: 'SC_PS_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 286: 'SC_PS_ARB_XFC_ONLY_PRIM_CYCLES', - 287: 'SC_PS_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 288: 'SC_PS_ARB_STALLED_FROM_BELOW', - 289: 'SC_PS_ARB_STARVED_FROM_ABOVE', - 290: 'SC_PS_ARB_SC_BUSY', - 291: 'SC_PS_ARB_PA_SC_BUSY', - 292: 'SC_PA2_SC_DATA_FIFO_RD', - 293: 'SC_PA2_SC_DATA_FIFO_WE', - 294: 'SC_PA3_SC_DATA_FIFO_RD', - 295: 'SC_PA3_SC_DATA_FIFO_WE', - 296: 'SC_PA_SC_DEALLOC_0_0_WE', - 297: 'SC_PA_SC_DEALLOC_0_1_WE', - 298: 'SC_PA_SC_DEALLOC_1_0_WE', - 299: 'SC_PA_SC_DEALLOC_1_1_WE', - 300: 'SC_PA_SC_DEALLOC_2_0_WE', - 301: 'SC_PA_SC_DEALLOC_2_1_WE', - 302: 'SC_PA_SC_DEALLOC_3_0_WE', - 303: 'SC_PA_SC_DEALLOC_3_1_WE', - 304: 'SC_PA0_SC_EOP_WE', - 305: 'SC_PA0_SC_EOPG_WE', - 306: 'SC_PA0_SC_EVENT_WE', - 307: 'SC_PA1_SC_EOP_WE', - 308: 'SC_PA1_SC_EOPG_WE', - 309: 'SC_PA1_SC_EVENT_WE', - 310: 'SC_PA2_SC_EOP_WE', - 311: 'SC_PA2_SC_EOPG_WE', - 312: 'SC_PA2_SC_EVENT_WE', - 313: 'SC_PA3_SC_EOP_WE', - 314: 'SC_PA3_SC_EOPG_WE', - 315: 'SC_PA3_SC_EVENT_WE', - 316: 'SC_PS_ARB_OOO_THRESHOLD_SWITCH_TO_DESIRED_FIFO', - 317: 'SC_PS_ARB_OOO_FIFO_EMPTY_SWITCH', - 318: 'SC_PS_ARB_NULL_PRIM_BUBBLE_POP', - 319: 'SC_PS_ARB_EOP_POP_SYNC_POP', - 320: 'SC_PS_ARB_EVENT_SYNC_POP', - 321: 'SC_SC_PS_ENG_MULTICYCLE_BUBBLE', - 322: 'SC_PA0_SC_FPOV_WE', - 323: 'SC_PA1_SC_FPOV_WE', - 324: 'SC_PA2_SC_FPOV_WE', - 325: 'SC_PA3_SC_FPOV_WE', - 326: 'SC_PA0_SC_LPOV_WE', - 327: 'SC_PA1_SC_LPOV_WE', - 328: 'SC_PA2_SC_LPOV_WE', - 329: 'SC_PA3_SC_LPOV_WE', - 330: 'SC_SC_SPI_DEALLOC_0_0', - 331: 'SC_SC_SPI_DEALLOC_0_1', - 332: 'SC_SC_SPI_DEALLOC_0_2', - 333: 'SC_SC_SPI_DEALLOC_1_0', - 334: 'SC_SC_SPI_DEALLOC_1_1', - 335: 'SC_SC_SPI_DEALLOC_1_2', - 336: 'SC_SC_SPI_DEALLOC_2_0', - 337: 'SC_SC_SPI_DEALLOC_2_1', - 338: 'SC_SC_SPI_DEALLOC_2_2', - 339: 'SC_SC_SPI_DEALLOC_3_0', - 340: 'SC_SC_SPI_DEALLOC_3_1', - 341: 'SC_SC_SPI_DEALLOC_3_2', - 342: 'SC_SC_SPI_FPOV_0', - 343: 'SC_SC_SPI_FPOV_1', - 344: 'SC_SC_SPI_FPOV_2', - 345: 'SC_SC_SPI_FPOV_3', - 346: 'SC_SC_SPI_EVENT', - 347: 'SC_PS_TS_EVENT_FIFO_PUSH', - 348: 'SC_PS_TS_EVENT_FIFO_POP', - 349: 'SC_PS_CTX_DONE_FIFO_PUSH', - 350: 'SC_PS_CTX_DONE_FIFO_POP', - 351: 'SC_MULTICYCLE_BUBBLE_FREEZE', - 352: 'SC_EOP_SYNC_WINDOW', - 353: 'SC_PA0_SC_NULL_WE', - 354: 'SC_PA0_SC_NULL_DEALLOC_WE', - 355: 'SC_PA0_SC_DATA_FIFO_EOPG_RD', - 356: 'SC_PA0_SC_DATA_FIFO_EOP_RD', - 357: 'SC_PA0_SC_DEALLOC_0_RD', - 358: 'SC_PA0_SC_DEALLOC_1_RD', - 359: 'SC_PA1_SC_DATA_FIFO_EOPG_RD', - 360: 'SC_PA1_SC_DATA_FIFO_EOP_RD', - 361: 'SC_PA1_SC_DEALLOC_0_RD', - 362: 'SC_PA1_SC_DEALLOC_1_RD', - 363: 'SC_PA1_SC_NULL_WE', - 364: 'SC_PA1_SC_NULL_DEALLOC_WE', - 365: 'SC_PA2_SC_DATA_FIFO_EOPG_RD', - 366: 'SC_PA2_SC_DATA_FIFO_EOP_RD', - 367: 'SC_PA2_SC_DEALLOC_0_RD', - 368: 'SC_PA2_SC_DEALLOC_1_RD', - 369: 'SC_PA2_SC_NULL_WE', - 370: 'SC_PA2_SC_NULL_DEALLOC_WE', - 371: 'SC_PA3_SC_DATA_FIFO_EOPG_RD', - 372: 'SC_PA3_SC_DATA_FIFO_EOP_RD', - 373: 'SC_PA3_SC_DEALLOC_0_RD', - 374: 'SC_PA3_SC_DEALLOC_1_RD', - 375: 'SC_PA3_SC_NULL_WE', - 376: 'SC_PA3_SC_NULL_DEALLOC_WE', - 377: 'SC_PS_PA0_SC_FIFO_EMPTY', - 378: 'SC_PS_PA0_SC_FIFO_FULL', - 379: 'SC_PA0_PS_DATA_SEND', - 380: 'SC_PS_PA1_SC_FIFO_EMPTY', - 381: 'SC_PS_PA1_SC_FIFO_FULL', - 382: 'SC_PA1_PS_DATA_SEND', - 383: 'SC_PS_PA2_SC_FIFO_EMPTY', - 384: 'SC_PS_PA2_SC_FIFO_FULL', - 385: 'SC_PA2_PS_DATA_SEND', - 386: 'SC_PS_PA3_SC_FIFO_EMPTY', - 387: 'SC_PS_PA3_SC_FIFO_FULL', - 388: 'SC_PA3_PS_DATA_SEND', - 389: 'SC_BUSY_PROCESSING_MULTICYCLE_PRIM', - 390: 'SC_BUSY_CNT_NOT_ZERO', - 391: 'SC_BM_BUSY', - 392: 'SC_BACKEND_BUSY', - 393: 'SC_SCF_SCB_INTERFACE_BUSY', - 394: 'SC_SCB_BUSY', - 395: 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_NOT_EMPTY', - 396: 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_FULL', - 397: 'SC_PBB_BIN_HIST_NUM_PRIMS', - 398: 'SC_PBB_BATCH_HIST_NUM_PRIMS', - 399: 'SC_PBB_BIN_HIST_NUM_CONTEXTS', - 400: 'SC_PBB_BATCH_HIST_NUM_CONTEXTS', - 401: 'SC_PBB_BIN_HIST_NUM_PERSISTENT_STATES', - 402: 'SC_PBB_BATCH_HIST_NUM_PERSISTENT_STATES', - 403: 'SC_PBB_BATCH_HIST_NUM_PS_WAVE_BREAKS', - 404: 'SC_PBB_BATCH_HIST_NUM_TRIV_REJECTED_PRIMS', - 405: 'SC_PBB_BATCH_HIST_NUM_ROWS_PER_PRIM', - 406: 'SC_PBB_BATCH_HIST_NUM_COLUMNS_PER_ROW', - 407: 'SC_PBB_BUSY', - 408: 'SC_PBB_BUSY_AND_RTR', - 409: 'SC_PBB_STALLS_PA_DUE_TO_NO_TILES', - 410: 'SC_PBB_NUM_BINS', - 411: 'SC_PBB_END_OF_BIN', - 412: 'SC_PBB_END_OF_BATCH', - 413: 'SC_PBB_PRIMBIN_PROCESSED', - 414: 'SC_PBB_PRIM_ADDED_TO_BATCH', - 415: 'SC_PBB_NONBINNED_PRIM', - 416: 'SC_PBB_TOTAL_REAL_PRIMS_OUT_OF_PBB', - 417: 'SC_PBB_TOTAL_NULL_PRIMS_OUT_OF_PBB', - 418: 'SC_PBB_IDLE_CLK_DUE_TO_ROW_TO_COLUMN_TRANSITION', - 419: 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_ROW', - 420: 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_COLUMN', - 421: 'SC_PBB_BATCH_BREAK_DUE_TO_PERSISTENT_STATE', - 422: 'SC_PBB_BATCH_BREAK_DUE_TO_CONTEXT_STATE', - 423: 'SC_PBB_BATCH_BREAK_DUE_TO_PRIM', - 424: 'SC_PBB_BATCH_BREAK_DUE_TO_PC_STORAGE', - 425: 'SC_PBB_BATCH_BREAK_DUE_TO_EVENT', - 426: 'SC_PBB_BATCH_BREAK_DUE_TO_FPOV_LIMIT', - 427: 'SC_POPS_INTRA_WAVE_OVERLAPS', - 428: 'SC_POPS_FORCE_EOV', - 429: 'SC_PKR_QUAD_OVERLAP_NOT_FOUND_IN_WAVE_TABLE', - 430: 'SC_PKR_QUAD_OVERLAP_FOUND_IN_WAVE_TABLE', -} -SC_SRPS_WINDOW_VALID = 0 -SC_PSSW_WINDOW_VALID = 1 -SC_TPQZ_WINDOW_VALID = 2 -SC_QZQP_WINDOW_VALID = 3 -SC_TRPK_WINDOW_VALID = 4 -SC_SRPS_WINDOW_VALID_BUSY = 5 -SC_PSSW_WINDOW_VALID_BUSY = 6 -SC_TPQZ_WINDOW_VALID_BUSY = 7 -SC_QZQP_WINDOW_VALID_BUSY = 8 -SC_TRPK_WINDOW_VALID_BUSY = 9 -SC_STARVED_BY_PA = 10 -SC_STALLED_BY_PRIMFIFO = 11 -SC_STALLED_BY_DB_TILE = 12 -SC_STARVED_BY_DB_TILE = 13 -SC_STALLED_BY_TILEORDERFIFO = 14 -SC_STALLED_BY_TILEFIFO = 15 -SC_STALLED_BY_DB_QUAD = 16 -SC_STARVED_BY_DB_QUAD = 17 -SC_STALLED_BY_QUADFIFO = 18 -SC_STALLED_BY_BCI = 19 -SC_STALLED_BY_SPI = 20 -SC_SCISSOR_DISCARD = 21 -SC_BB_DISCARD = 22 -SC_SUPERTILE_COUNT = 23 -SC_SUPERTILE_PER_PRIM_H0 = 24 -SC_SUPERTILE_PER_PRIM_H1 = 25 -SC_SUPERTILE_PER_PRIM_H2 = 26 -SC_SUPERTILE_PER_PRIM_H3 = 27 -SC_SUPERTILE_PER_PRIM_H4 = 28 -SC_SUPERTILE_PER_PRIM_H5 = 29 -SC_SUPERTILE_PER_PRIM_H6 = 30 -SC_SUPERTILE_PER_PRIM_H7 = 31 -SC_SUPERTILE_PER_PRIM_H8 = 32 -SC_SUPERTILE_PER_PRIM_H9 = 33 -SC_SUPERTILE_PER_PRIM_H10 = 34 -SC_SUPERTILE_PER_PRIM_H11 = 35 -SC_SUPERTILE_PER_PRIM_H12 = 36 -SC_SUPERTILE_PER_PRIM_H13 = 37 -SC_SUPERTILE_PER_PRIM_H14 = 38 -SC_SUPERTILE_PER_PRIM_H15 = 39 -SC_SUPERTILE_PER_PRIM_H16 = 40 -SC_TILE_PER_PRIM_H0 = 41 -SC_TILE_PER_PRIM_H1 = 42 -SC_TILE_PER_PRIM_H2 = 43 -SC_TILE_PER_PRIM_H3 = 44 -SC_TILE_PER_PRIM_H4 = 45 -SC_TILE_PER_PRIM_H5 = 46 -SC_TILE_PER_PRIM_H6 = 47 -SC_TILE_PER_PRIM_H7 = 48 -SC_TILE_PER_PRIM_H8 = 49 -SC_TILE_PER_PRIM_H9 = 50 -SC_TILE_PER_PRIM_H10 = 51 -SC_TILE_PER_PRIM_H11 = 52 -SC_TILE_PER_PRIM_H12 = 53 -SC_TILE_PER_PRIM_H13 = 54 -SC_TILE_PER_PRIM_H14 = 55 -SC_TILE_PER_PRIM_H15 = 56 -SC_TILE_PER_PRIM_H16 = 57 -SC_TILE_PER_SUPERTILE_H0 = 58 -SC_TILE_PER_SUPERTILE_H1 = 59 -SC_TILE_PER_SUPERTILE_H2 = 60 -SC_TILE_PER_SUPERTILE_H3 = 61 -SC_TILE_PER_SUPERTILE_H4 = 62 -SC_TILE_PER_SUPERTILE_H5 = 63 -SC_TILE_PER_SUPERTILE_H6 = 64 -SC_TILE_PER_SUPERTILE_H7 = 65 -SC_TILE_PER_SUPERTILE_H8 = 66 -SC_TILE_PER_SUPERTILE_H9 = 67 -SC_TILE_PER_SUPERTILE_H10 = 68 -SC_TILE_PER_SUPERTILE_H11 = 69 -SC_TILE_PER_SUPERTILE_H12 = 70 -SC_TILE_PER_SUPERTILE_H13 = 71 -SC_TILE_PER_SUPERTILE_H14 = 72 -SC_TILE_PER_SUPERTILE_H15 = 73 -SC_TILE_PER_SUPERTILE_H16 = 74 -SC_TILE_PICKED_H1 = 75 -SC_TILE_PICKED_H2 = 76 -SC_TILE_PICKED_H3 = 77 -SC_TILE_PICKED_H4 = 78 -SC_QZ0_MULTI_GPU_TILE_DISCARD = 79 -SC_QZ1_MULTI_GPU_TILE_DISCARD = 80 -SC_QZ2_MULTI_GPU_TILE_DISCARD = 81 -SC_QZ3_MULTI_GPU_TILE_DISCARD = 82 -SC_QZ0_TILE_COUNT = 83 -SC_QZ1_TILE_COUNT = 84 -SC_QZ2_TILE_COUNT = 85 -SC_QZ3_TILE_COUNT = 86 -SC_QZ0_TILE_COVERED_COUNT = 87 -SC_QZ1_TILE_COVERED_COUNT = 88 -SC_QZ2_TILE_COVERED_COUNT = 89 -SC_QZ3_TILE_COVERED_COUNT = 90 -SC_QZ0_TILE_NOT_COVERED_COUNT = 91 -SC_QZ1_TILE_NOT_COVERED_COUNT = 92 -SC_QZ2_TILE_NOT_COVERED_COUNT = 93 -SC_QZ3_TILE_NOT_COVERED_COUNT = 94 -SC_QZ0_QUAD_PER_TILE_H0 = 95 -SC_QZ0_QUAD_PER_TILE_H1 = 96 -SC_QZ0_QUAD_PER_TILE_H2 = 97 -SC_QZ0_QUAD_PER_TILE_H3 = 98 -SC_QZ0_QUAD_PER_TILE_H4 = 99 -SC_QZ0_QUAD_PER_TILE_H5 = 100 -SC_QZ0_QUAD_PER_TILE_H6 = 101 -SC_QZ0_QUAD_PER_TILE_H7 = 102 -SC_QZ0_QUAD_PER_TILE_H8 = 103 -SC_QZ0_QUAD_PER_TILE_H9 = 104 -SC_QZ0_QUAD_PER_TILE_H10 = 105 -SC_QZ0_QUAD_PER_TILE_H11 = 106 -SC_QZ0_QUAD_PER_TILE_H12 = 107 -SC_QZ0_QUAD_PER_TILE_H13 = 108 -SC_QZ0_QUAD_PER_TILE_H14 = 109 -SC_QZ0_QUAD_PER_TILE_H15 = 110 -SC_QZ0_QUAD_PER_TILE_H16 = 111 -SC_QZ1_QUAD_PER_TILE_H0 = 112 -SC_QZ1_QUAD_PER_TILE_H1 = 113 -SC_QZ1_QUAD_PER_TILE_H2 = 114 -SC_QZ1_QUAD_PER_TILE_H3 = 115 -SC_QZ1_QUAD_PER_TILE_H4 = 116 -SC_QZ1_QUAD_PER_TILE_H5 = 117 -SC_QZ1_QUAD_PER_TILE_H6 = 118 -SC_QZ1_QUAD_PER_TILE_H7 = 119 -SC_QZ1_QUAD_PER_TILE_H8 = 120 -SC_QZ1_QUAD_PER_TILE_H9 = 121 -SC_QZ1_QUAD_PER_TILE_H10 = 122 -SC_QZ1_QUAD_PER_TILE_H11 = 123 -SC_QZ1_QUAD_PER_TILE_H12 = 124 -SC_QZ1_QUAD_PER_TILE_H13 = 125 -SC_QZ1_QUAD_PER_TILE_H14 = 126 -SC_QZ1_QUAD_PER_TILE_H15 = 127 -SC_QZ1_QUAD_PER_TILE_H16 = 128 -SC_QZ2_QUAD_PER_TILE_H0 = 129 -SC_QZ2_QUAD_PER_TILE_H1 = 130 -SC_QZ2_QUAD_PER_TILE_H2 = 131 -SC_QZ2_QUAD_PER_TILE_H3 = 132 -SC_QZ2_QUAD_PER_TILE_H4 = 133 -SC_QZ2_QUAD_PER_TILE_H5 = 134 -SC_QZ2_QUAD_PER_TILE_H6 = 135 -SC_QZ2_QUAD_PER_TILE_H7 = 136 -SC_QZ2_QUAD_PER_TILE_H8 = 137 -SC_QZ2_QUAD_PER_TILE_H9 = 138 -SC_QZ2_QUAD_PER_TILE_H10 = 139 -SC_QZ2_QUAD_PER_TILE_H11 = 140 -SC_QZ2_QUAD_PER_TILE_H12 = 141 -SC_QZ2_QUAD_PER_TILE_H13 = 142 -SC_QZ2_QUAD_PER_TILE_H14 = 143 -SC_QZ2_QUAD_PER_TILE_H15 = 144 -SC_QZ2_QUAD_PER_TILE_H16 = 145 -SC_QZ3_QUAD_PER_TILE_H0 = 146 -SC_QZ3_QUAD_PER_TILE_H1 = 147 -SC_QZ3_QUAD_PER_TILE_H2 = 148 -SC_QZ3_QUAD_PER_TILE_H3 = 149 -SC_QZ3_QUAD_PER_TILE_H4 = 150 -SC_QZ3_QUAD_PER_TILE_H5 = 151 -SC_QZ3_QUAD_PER_TILE_H6 = 152 -SC_QZ3_QUAD_PER_TILE_H7 = 153 -SC_QZ3_QUAD_PER_TILE_H8 = 154 -SC_QZ3_QUAD_PER_TILE_H9 = 155 -SC_QZ3_QUAD_PER_TILE_H10 = 156 -SC_QZ3_QUAD_PER_TILE_H11 = 157 -SC_QZ3_QUAD_PER_TILE_H12 = 158 -SC_QZ3_QUAD_PER_TILE_H13 = 159 -SC_QZ3_QUAD_PER_TILE_H14 = 160 -SC_QZ3_QUAD_PER_TILE_H15 = 161 -SC_QZ3_QUAD_PER_TILE_H16 = 162 -SC_QZ0_QUAD_COUNT = 163 -SC_QZ1_QUAD_COUNT = 164 -SC_QZ2_QUAD_COUNT = 165 -SC_QZ3_QUAD_COUNT = 166 -SC_P0_HIZ_TILE_COUNT = 167 -SC_P1_HIZ_TILE_COUNT = 168 -SC_P2_HIZ_TILE_COUNT = 169 -SC_P3_HIZ_TILE_COUNT = 170 -SC_P0_HIZ_QUAD_PER_TILE_H0 = 171 -SC_P0_HIZ_QUAD_PER_TILE_H1 = 172 -SC_P0_HIZ_QUAD_PER_TILE_H2 = 173 -SC_P0_HIZ_QUAD_PER_TILE_H3 = 174 -SC_P0_HIZ_QUAD_PER_TILE_H4 = 175 -SC_P0_HIZ_QUAD_PER_TILE_H5 = 176 -SC_P0_HIZ_QUAD_PER_TILE_H6 = 177 -SC_P0_HIZ_QUAD_PER_TILE_H7 = 178 -SC_P0_HIZ_QUAD_PER_TILE_H8 = 179 -SC_P0_HIZ_QUAD_PER_TILE_H9 = 180 -SC_P0_HIZ_QUAD_PER_TILE_H10 = 181 -SC_P0_HIZ_QUAD_PER_TILE_H11 = 182 -SC_P0_HIZ_QUAD_PER_TILE_H12 = 183 -SC_P0_HIZ_QUAD_PER_TILE_H13 = 184 -SC_P0_HIZ_QUAD_PER_TILE_H14 = 185 -SC_P0_HIZ_QUAD_PER_TILE_H15 = 186 -SC_P0_HIZ_QUAD_PER_TILE_H16 = 187 -SC_P1_HIZ_QUAD_PER_TILE_H0 = 188 -SC_P1_HIZ_QUAD_PER_TILE_H1 = 189 -SC_P1_HIZ_QUAD_PER_TILE_H2 = 190 -SC_P1_HIZ_QUAD_PER_TILE_H3 = 191 -SC_P1_HIZ_QUAD_PER_TILE_H4 = 192 -SC_P1_HIZ_QUAD_PER_TILE_H5 = 193 -SC_P1_HIZ_QUAD_PER_TILE_H6 = 194 -SC_P1_HIZ_QUAD_PER_TILE_H7 = 195 -SC_P1_HIZ_QUAD_PER_TILE_H8 = 196 -SC_P1_HIZ_QUAD_PER_TILE_H9 = 197 -SC_P1_HIZ_QUAD_PER_TILE_H10 = 198 -SC_P1_HIZ_QUAD_PER_TILE_H11 = 199 -SC_P1_HIZ_QUAD_PER_TILE_H12 = 200 -SC_P1_HIZ_QUAD_PER_TILE_H13 = 201 -SC_P1_HIZ_QUAD_PER_TILE_H14 = 202 -SC_P1_HIZ_QUAD_PER_TILE_H15 = 203 -SC_P1_HIZ_QUAD_PER_TILE_H16 = 204 -SC_P2_HIZ_QUAD_PER_TILE_H0 = 205 -SC_P2_HIZ_QUAD_PER_TILE_H1 = 206 -SC_P2_HIZ_QUAD_PER_TILE_H2 = 207 -SC_P2_HIZ_QUAD_PER_TILE_H3 = 208 -SC_P2_HIZ_QUAD_PER_TILE_H4 = 209 -SC_P2_HIZ_QUAD_PER_TILE_H5 = 210 -SC_P2_HIZ_QUAD_PER_TILE_H6 = 211 -SC_P2_HIZ_QUAD_PER_TILE_H7 = 212 -SC_P2_HIZ_QUAD_PER_TILE_H8 = 213 -SC_P2_HIZ_QUAD_PER_TILE_H9 = 214 -SC_P2_HIZ_QUAD_PER_TILE_H10 = 215 -SC_P2_HIZ_QUAD_PER_TILE_H11 = 216 -SC_P2_HIZ_QUAD_PER_TILE_H12 = 217 -SC_P2_HIZ_QUAD_PER_TILE_H13 = 218 -SC_P2_HIZ_QUAD_PER_TILE_H14 = 219 -SC_P2_HIZ_QUAD_PER_TILE_H15 = 220 -SC_P2_HIZ_QUAD_PER_TILE_H16 = 221 -SC_P3_HIZ_QUAD_PER_TILE_H0 = 222 -SC_P3_HIZ_QUAD_PER_TILE_H1 = 223 -SC_P3_HIZ_QUAD_PER_TILE_H2 = 224 -SC_P3_HIZ_QUAD_PER_TILE_H3 = 225 -SC_P3_HIZ_QUAD_PER_TILE_H4 = 226 -SC_P3_HIZ_QUAD_PER_TILE_H5 = 227 -SC_P3_HIZ_QUAD_PER_TILE_H6 = 228 -SC_P3_HIZ_QUAD_PER_TILE_H7 = 229 -SC_P3_HIZ_QUAD_PER_TILE_H8 = 230 -SC_P3_HIZ_QUAD_PER_TILE_H9 = 231 -SC_P3_HIZ_QUAD_PER_TILE_H10 = 232 -SC_P3_HIZ_QUAD_PER_TILE_H11 = 233 -SC_P3_HIZ_QUAD_PER_TILE_H12 = 234 -SC_P3_HIZ_QUAD_PER_TILE_H13 = 235 -SC_P3_HIZ_QUAD_PER_TILE_H14 = 236 -SC_P3_HIZ_QUAD_PER_TILE_H15 = 237 -SC_P3_HIZ_QUAD_PER_TILE_H16 = 238 -SC_P0_HIZ_QUAD_COUNT = 239 -SC_P1_HIZ_QUAD_COUNT = 240 -SC_P2_HIZ_QUAD_COUNT = 241 -SC_P3_HIZ_QUAD_COUNT = 242 -SC_P0_DETAIL_QUAD_COUNT = 243 -SC_P1_DETAIL_QUAD_COUNT = 244 -SC_P2_DETAIL_QUAD_COUNT = 245 -SC_P3_DETAIL_QUAD_COUNT = 246 -SC_P0_DETAIL_QUAD_WITH_1_PIX = 247 -SC_P0_DETAIL_QUAD_WITH_2_PIX = 248 -SC_P0_DETAIL_QUAD_WITH_3_PIX = 249 -SC_P0_DETAIL_QUAD_WITH_4_PIX = 250 -SC_P1_DETAIL_QUAD_WITH_1_PIX = 251 -SC_P1_DETAIL_QUAD_WITH_2_PIX = 252 -SC_P1_DETAIL_QUAD_WITH_3_PIX = 253 -SC_P1_DETAIL_QUAD_WITH_4_PIX = 254 -SC_P2_DETAIL_QUAD_WITH_1_PIX = 255 -SC_P2_DETAIL_QUAD_WITH_2_PIX = 256 -SC_P2_DETAIL_QUAD_WITH_3_PIX = 257 -SC_P2_DETAIL_QUAD_WITH_4_PIX = 258 -SC_P3_DETAIL_QUAD_WITH_1_PIX = 259 -SC_P3_DETAIL_QUAD_WITH_2_PIX = 260 -SC_P3_DETAIL_QUAD_WITH_3_PIX = 261 -SC_P3_DETAIL_QUAD_WITH_4_PIX = 262 -SC_EARLYZ_QUAD_COUNT = 263 -SC_EARLYZ_QUAD_WITH_1_PIX = 264 -SC_EARLYZ_QUAD_WITH_2_PIX = 265 -SC_EARLYZ_QUAD_WITH_3_PIX = 266 -SC_EARLYZ_QUAD_WITH_4_PIX = 267 -SC_PKR_QUAD_PER_ROW_H1 = 268 -SC_PKR_QUAD_PER_ROW_H2 = 269 -SC_PKR_4X2_QUAD_SPLIT = 270 -SC_PKR_4X2_FILL_QUAD = 271 -SC_PKR_END_OF_VECTOR = 272 -SC_PKR_CONTROL_XFER = 273 -SC_PKR_DBHANG_FORCE_EOV = 274 -SC_REG_SCLK_BUSY = 275 -SC_GRP0_DYN_SCLK_BUSY = 276 -SC_GRP1_DYN_SCLK_BUSY = 277 -SC_GRP2_DYN_SCLK_BUSY = 278 -SC_GRP3_DYN_SCLK_BUSY = 279 -SC_GRP4_DYN_SCLK_BUSY = 280 -SC_PA0_SC_DATA_FIFO_RD = 281 -SC_PA0_SC_DATA_FIFO_WE = 282 -SC_PA1_SC_DATA_FIFO_RD = 283 -SC_PA1_SC_DATA_FIFO_WE = 284 -SC_PS_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 285 -SC_PS_ARB_XFC_ONLY_PRIM_CYCLES = 286 -SC_PS_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 287 -SC_PS_ARB_STALLED_FROM_BELOW = 288 -SC_PS_ARB_STARVED_FROM_ABOVE = 289 -SC_PS_ARB_SC_BUSY = 290 -SC_PS_ARB_PA_SC_BUSY = 291 -SC_PA2_SC_DATA_FIFO_RD = 292 -SC_PA2_SC_DATA_FIFO_WE = 293 -SC_PA3_SC_DATA_FIFO_RD = 294 -SC_PA3_SC_DATA_FIFO_WE = 295 -SC_PA_SC_DEALLOC_0_0_WE = 296 -SC_PA_SC_DEALLOC_0_1_WE = 297 -SC_PA_SC_DEALLOC_1_0_WE = 298 -SC_PA_SC_DEALLOC_1_1_WE = 299 -SC_PA_SC_DEALLOC_2_0_WE = 300 -SC_PA_SC_DEALLOC_2_1_WE = 301 -SC_PA_SC_DEALLOC_3_0_WE = 302 -SC_PA_SC_DEALLOC_3_1_WE = 303 -SC_PA0_SC_EOP_WE = 304 -SC_PA0_SC_EOPG_WE = 305 -SC_PA0_SC_EVENT_WE = 306 -SC_PA1_SC_EOP_WE = 307 -SC_PA1_SC_EOPG_WE = 308 -SC_PA1_SC_EVENT_WE = 309 -SC_PA2_SC_EOP_WE = 310 -SC_PA2_SC_EOPG_WE = 311 -SC_PA2_SC_EVENT_WE = 312 -SC_PA3_SC_EOP_WE = 313 -SC_PA3_SC_EOPG_WE = 314 -SC_PA3_SC_EVENT_WE = 315 -SC_PS_ARB_OOO_THRESHOLD_SWITCH_TO_DESIRED_FIFO = 316 -SC_PS_ARB_OOO_FIFO_EMPTY_SWITCH = 317 -SC_PS_ARB_NULL_PRIM_BUBBLE_POP = 318 -SC_PS_ARB_EOP_POP_SYNC_POP = 319 -SC_PS_ARB_EVENT_SYNC_POP = 320 -SC_SC_PS_ENG_MULTICYCLE_BUBBLE = 321 -SC_PA0_SC_FPOV_WE = 322 -SC_PA1_SC_FPOV_WE = 323 -SC_PA2_SC_FPOV_WE = 324 -SC_PA3_SC_FPOV_WE = 325 -SC_PA0_SC_LPOV_WE = 326 -SC_PA1_SC_LPOV_WE = 327 -SC_PA2_SC_LPOV_WE = 328 -SC_PA3_SC_LPOV_WE = 329 -SC_SC_SPI_DEALLOC_0_0 = 330 -SC_SC_SPI_DEALLOC_0_1 = 331 -SC_SC_SPI_DEALLOC_0_2 = 332 -SC_SC_SPI_DEALLOC_1_0 = 333 -SC_SC_SPI_DEALLOC_1_1 = 334 -SC_SC_SPI_DEALLOC_1_2 = 335 -SC_SC_SPI_DEALLOC_2_0 = 336 -SC_SC_SPI_DEALLOC_2_1 = 337 -SC_SC_SPI_DEALLOC_2_2 = 338 -SC_SC_SPI_DEALLOC_3_0 = 339 -SC_SC_SPI_DEALLOC_3_1 = 340 -SC_SC_SPI_DEALLOC_3_2 = 341 -SC_SC_SPI_FPOV_0 = 342 -SC_SC_SPI_FPOV_1 = 343 -SC_SC_SPI_FPOV_2 = 344 -SC_SC_SPI_FPOV_3 = 345 -SC_SC_SPI_EVENT = 346 -SC_PS_TS_EVENT_FIFO_PUSH = 347 -SC_PS_TS_EVENT_FIFO_POP = 348 -SC_PS_CTX_DONE_FIFO_PUSH = 349 -SC_PS_CTX_DONE_FIFO_POP = 350 -SC_MULTICYCLE_BUBBLE_FREEZE = 351 -SC_EOP_SYNC_WINDOW = 352 -SC_PA0_SC_NULL_WE = 353 -SC_PA0_SC_NULL_DEALLOC_WE = 354 -SC_PA0_SC_DATA_FIFO_EOPG_RD = 355 -SC_PA0_SC_DATA_FIFO_EOP_RD = 356 -SC_PA0_SC_DEALLOC_0_RD = 357 -SC_PA0_SC_DEALLOC_1_RD = 358 -SC_PA1_SC_DATA_FIFO_EOPG_RD = 359 -SC_PA1_SC_DATA_FIFO_EOP_RD = 360 -SC_PA1_SC_DEALLOC_0_RD = 361 -SC_PA1_SC_DEALLOC_1_RD = 362 -SC_PA1_SC_NULL_WE = 363 -SC_PA1_SC_NULL_DEALLOC_WE = 364 -SC_PA2_SC_DATA_FIFO_EOPG_RD = 365 -SC_PA2_SC_DATA_FIFO_EOP_RD = 366 -SC_PA2_SC_DEALLOC_0_RD = 367 -SC_PA2_SC_DEALLOC_1_RD = 368 -SC_PA2_SC_NULL_WE = 369 -SC_PA2_SC_NULL_DEALLOC_WE = 370 -SC_PA3_SC_DATA_FIFO_EOPG_RD = 371 -SC_PA3_SC_DATA_FIFO_EOP_RD = 372 -SC_PA3_SC_DEALLOC_0_RD = 373 -SC_PA3_SC_DEALLOC_1_RD = 374 -SC_PA3_SC_NULL_WE = 375 -SC_PA3_SC_NULL_DEALLOC_WE = 376 -SC_PS_PA0_SC_FIFO_EMPTY = 377 -SC_PS_PA0_SC_FIFO_FULL = 378 -SC_PA0_PS_DATA_SEND = 379 -SC_PS_PA1_SC_FIFO_EMPTY = 380 -SC_PS_PA1_SC_FIFO_FULL = 381 -SC_PA1_PS_DATA_SEND = 382 -SC_PS_PA2_SC_FIFO_EMPTY = 383 -SC_PS_PA2_SC_FIFO_FULL = 384 -SC_PA2_PS_DATA_SEND = 385 -SC_PS_PA3_SC_FIFO_EMPTY = 386 -SC_PS_PA3_SC_FIFO_FULL = 387 -SC_PA3_PS_DATA_SEND = 388 -SC_BUSY_PROCESSING_MULTICYCLE_PRIM = 389 -SC_BUSY_CNT_NOT_ZERO = 390 -SC_BM_BUSY = 391 -SC_BACKEND_BUSY = 392 -SC_SCF_SCB_INTERFACE_BUSY = 393 -SC_SCB_BUSY = 394 -SC_STARVED_BY_PA_WITH_UNSELECTED_PA_NOT_EMPTY = 395 -SC_STARVED_BY_PA_WITH_UNSELECTED_PA_FULL = 396 -SC_PBB_BIN_HIST_NUM_PRIMS = 397 -SC_PBB_BATCH_HIST_NUM_PRIMS = 398 -SC_PBB_BIN_HIST_NUM_CONTEXTS = 399 -SC_PBB_BATCH_HIST_NUM_CONTEXTS = 400 -SC_PBB_BIN_HIST_NUM_PERSISTENT_STATES = 401 -SC_PBB_BATCH_HIST_NUM_PERSISTENT_STATES = 402 -SC_PBB_BATCH_HIST_NUM_PS_WAVE_BREAKS = 403 -SC_PBB_BATCH_HIST_NUM_TRIV_REJECTED_PRIMS = 404 -SC_PBB_BATCH_HIST_NUM_ROWS_PER_PRIM = 405 -SC_PBB_BATCH_HIST_NUM_COLUMNS_PER_ROW = 406 -SC_PBB_BUSY = 407 -SC_PBB_BUSY_AND_RTR = 408 -SC_PBB_STALLS_PA_DUE_TO_NO_TILES = 409 -SC_PBB_NUM_BINS = 410 -SC_PBB_END_OF_BIN = 411 -SC_PBB_END_OF_BATCH = 412 -SC_PBB_PRIMBIN_PROCESSED = 413 -SC_PBB_PRIM_ADDED_TO_BATCH = 414 -SC_PBB_NONBINNED_PRIM = 415 -SC_PBB_TOTAL_REAL_PRIMS_OUT_OF_PBB = 416 -SC_PBB_TOTAL_NULL_PRIMS_OUT_OF_PBB = 417 -SC_PBB_IDLE_CLK_DUE_TO_ROW_TO_COLUMN_TRANSITION = 418 -SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_ROW = 419 -SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_COLUMN = 420 -SC_PBB_BATCH_BREAK_DUE_TO_PERSISTENT_STATE = 421 -SC_PBB_BATCH_BREAK_DUE_TO_CONTEXT_STATE = 422 -SC_PBB_BATCH_BREAK_DUE_TO_PRIM = 423 -SC_PBB_BATCH_BREAK_DUE_TO_PC_STORAGE = 424 -SC_PBB_BATCH_BREAK_DUE_TO_EVENT = 425 -SC_PBB_BATCH_BREAK_DUE_TO_FPOV_LIMIT = 426 -SC_POPS_INTRA_WAVE_OVERLAPS = 427 -SC_POPS_FORCE_EOV = 428 -SC_PKR_QUAD_OVERLAP_NOT_FOUND_IN_WAVE_TABLE = 429 -SC_PKR_QUAD_OVERLAP_FOUND_IN_WAVE_TABLE = 430 -SC_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SePairXsel' -SePairXsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_PAIR_XSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_PAIR_XSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_PAIR_XSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_PAIR_XSEL_64_WIDE_TILE', - 4: 'RASTER_CONFIG_SE_PAIR_XSEL_128_WIDE_TILE', -} -RASTER_CONFIG_SE_PAIR_XSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_PAIR_XSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_PAIR_XSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_PAIR_XSEL_64_WIDE_TILE = 3 -RASTER_CONFIG_SE_PAIR_XSEL_128_WIDE_TILE = 4 -SePairXsel = ctypes.c_uint32 # enum - -# values for enumeration 'SePairYsel' -SePairYsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_PAIR_YSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_PAIR_YSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_PAIR_YSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_PAIR_YSEL_64_WIDE_TILE', - 4: 'RASTER_CONFIG_SE_PAIR_YSEL_128_WIDE_TILE', -} -RASTER_CONFIG_SE_PAIR_YSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_PAIR_YSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_PAIR_YSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_PAIR_YSEL_64_WIDE_TILE = 3 -RASTER_CONFIG_SE_PAIR_YSEL_128_WIDE_TILE = 4 -SePairYsel = ctypes.c_uint32 # enum - -# values for enumeration 'SePairMap' -SePairMap__enumvalues = { - 0: 'RASTER_CONFIG_SE_PAIR_MAP_0', - 1: 'RASTER_CONFIG_SE_PAIR_MAP_1', - 2: 'RASTER_CONFIG_SE_PAIR_MAP_2', - 3: 'RASTER_CONFIG_SE_PAIR_MAP_3', -} -RASTER_CONFIG_SE_PAIR_MAP_0 = 0 -RASTER_CONFIG_SE_PAIR_MAP_1 = 1 -RASTER_CONFIG_SE_PAIR_MAP_2 = 2 -RASTER_CONFIG_SE_PAIR_MAP_3 = 3 -SePairMap = ctypes.c_uint32 # enum - -# values for enumeration 'SeXsel' -SeXsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_XSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_XSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_XSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_XSEL_64_WIDE_TILE', - 4: 'RASTER_CONFIG_SE_XSEL_128_WIDE_TILE', -} -RASTER_CONFIG_SE_XSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_XSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_XSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_XSEL_64_WIDE_TILE = 3 -RASTER_CONFIG_SE_XSEL_128_WIDE_TILE = 4 -SeXsel = ctypes.c_uint32 # enum - -# values for enumeration 'SeYsel' -SeYsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_YSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_YSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_YSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_YSEL_64_WIDE_TILE', - 4: 'RASTER_CONFIG_SE_YSEL_128_WIDE_TILE', -} -RASTER_CONFIG_SE_YSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_YSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_YSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_YSEL_64_WIDE_TILE = 3 -RASTER_CONFIG_SE_YSEL_128_WIDE_TILE = 4 -SeYsel = ctypes.c_uint32 # enum - -# values for enumeration 'SeMap' -SeMap__enumvalues = { - 0: 'RASTER_CONFIG_SE_MAP_0', - 1: 'RASTER_CONFIG_SE_MAP_1', - 2: 'RASTER_CONFIG_SE_MAP_2', - 3: 'RASTER_CONFIG_SE_MAP_3', -} -RASTER_CONFIG_SE_MAP_0 = 0 -RASTER_CONFIG_SE_MAP_1 = 1 -RASTER_CONFIG_SE_MAP_2 = 2 -RASTER_CONFIG_SE_MAP_3 = 3 -SeMap = ctypes.c_uint32 # enum - -# values for enumeration 'ScXsel' -ScXsel__enumvalues = { - 0: 'RASTER_CONFIG_SC_XSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SC_XSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SC_XSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SC_XSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SC_XSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SC_XSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SC_XSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SC_XSEL_64_WIDE_TILE = 3 -ScXsel = ctypes.c_uint32 # enum - -# values for enumeration 'ScYsel' -ScYsel__enumvalues = { - 0: 'RASTER_CONFIG_SC_YSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SC_YSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SC_YSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SC_YSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SC_YSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SC_YSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SC_YSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SC_YSEL_64_WIDE_TILE = 3 -ScYsel = ctypes.c_uint32 # enum - -# values for enumeration 'ScMap' -ScMap__enumvalues = { - 0: 'RASTER_CONFIG_SC_MAP_0', - 1: 'RASTER_CONFIG_SC_MAP_1', - 2: 'RASTER_CONFIG_SC_MAP_2', - 3: 'RASTER_CONFIG_SC_MAP_3', -} -RASTER_CONFIG_SC_MAP_0 = 0 -RASTER_CONFIG_SC_MAP_1 = 1 -RASTER_CONFIG_SC_MAP_2 = 2 -RASTER_CONFIG_SC_MAP_3 = 3 -ScMap = ctypes.c_uint32 # enum - -# values for enumeration 'PkrXsel2' -PkrXsel2__enumvalues = { - 0: 'RASTER_CONFIG_PKR_XSEL2_0', - 1: 'RASTER_CONFIG_PKR_XSEL2_1', - 2: 'RASTER_CONFIG_PKR_XSEL2_2', - 3: 'RASTER_CONFIG_PKR_XSEL2_3', -} -RASTER_CONFIG_PKR_XSEL2_0 = 0 -RASTER_CONFIG_PKR_XSEL2_1 = 1 -RASTER_CONFIG_PKR_XSEL2_2 = 2 -RASTER_CONFIG_PKR_XSEL2_3 = 3 -PkrXsel2 = ctypes.c_uint32 # enum - -# values for enumeration 'PkrXsel' -PkrXsel__enumvalues = { - 0: 'RASTER_CONFIG_PKR_XSEL_0', - 1: 'RASTER_CONFIG_PKR_XSEL_1', - 2: 'RASTER_CONFIG_PKR_XSEL_2', - 3: 'RASTER_CONFIG_PKR_XSEL_3', -} -RASTER_CONFIG_PKR_XSEL_0 = 0 -RASTER_CONFIG_PKR_XSEL_1 = 1 -RASTER_CONFIG_PKR_XSEL_2 = 2 -RASTER_CONFIG_PKR_XSEL_3 = 3 -PkrXsel = ctypes.c_uint32 # enum - -# values for enumeration 'PkrYsel' -PkrYsel__enumvalues = { - 0: 'RASTER_CONFIG_PKR_YSEL_0', - 1: 'RASTER_CONFIG_PKR_YSEL_1', - 2: 'RASTER_CONFIG_PKR_YSEL_2', - 3: 'RASTER_CONFIG_PKR_YSEL_3', -} -RASTER_CONFIG_PKR_YSEL_0 = 0 -RASTER_CONFIG_PKR_YSEL_1 = 1 -RASTER_CONFIG_PKR_YSEL_2 = 2 -RASTER_CONFIG_PKR_YSEL_3 = 3 -PkrYsel = ctypes.c_uint32 # enum - -# values for enumeration 'PkrMap' -PkrMap__enumvalues = { - 0: 'RASTER_CONFIG_PKR_MAP_0', - 1: 'RASTER_CONFIG_PKR_MAP_1', - 2: 'RASTER_CONFIG_PKR_MAP_2', - 3: 'RASTER_CONFIG_PKR_MAP_3', -} -RASTER_CONFIG_PKR_MAP_0 = 0 -RASTER_CONFIG_PKR_MAP_1 = 1 -RASTER_CONFIG_PKR_MAP_2 = 2 -RASTER_CONFIG_PKR_MAP_3 = 3 -PkrMap = ctypes.c_uint32 # enum - -# values for enumeration 'RbXsel' -RbXsel__enumvalues = { - 0: 'RASTER_CONFIG_RB_XSEL_0', - 1: 'RASTER_CONFIG_RB_XSEL_1', -} -RASTER_CONFIG_RB_XSEL_0 = 0 -RASTER_CONFIG_RB_XSEL_1 = 1 -RbXsel = ctypes.c_uint32 # enum - -# values for enumeration 'RbYsel' -RbYsel__enumvalues = { - 0: 'RASTER_CONFIG_RB_YSEL_0', - 1: 'RASTER_CONFIG_RB_YSEL_1', -} -RASTER_CONFIG_RB_YSEL_0 = 0 -RASTER_CONFIG_RB_YSEL_1 = 1 -RbYsel = ctypes.c_uint32 # enum - -# values for enumeration 'RbXsel2' -RbXsel2__enumvalues = { - 0: 'RASTER_CONFIG_RB_XSEL2_0', - 1: 'RASTER_CONFIG_RB_XSEL2_1', - 2: 'RASTER_CONFIG_RB_XSEL2_2', - 3: 'RASTER_CONFIG_RB_XSEL2_3', -} -RASTER_CONFIG_RB_XSEL2_0 = 0 -RASTER_CONFIG_RB_XSEL2_1 = 1 -RASTER_CONFIG_RB_XSEL2_2 = 2 -RASTER_CONFIG_RB_XSEL2_3 = 3 -RbXsel2 = ctypes.c_uint32 # enum - -# values for enumeration 'RbMap' -RbMap__enumvalues = { - 0: 'RASTER_CONFIG_RB_MAP_0', - 1: 'RASTER_CONFIG_RB_MAP_1', - 2: 'RASTER_CONFIG_RB_MAP_2', - 3: 'RASTER_CONFIG_RB_MAP_3', -} -RASTER_CONFIG_RB_MAP_0 = 0 -RASTER_CONFIG_RB_MAP_1 = 1 -RASTER_CONFIG_RB_MAP_2 = 2 -RASTER_CONFIG_RB_MAP_3 = 3 -RbMap = ctypes.c_uint32 # enum - -# values for enumeration 'BinningMode' -BinningMode__enumvalues = { - 0: 'BINNING_ALLOWED', - 1: 'FORCE_BINNING_ON', - 2: 'DISABLE_BINNING_USE_NEW_SC', - 3: 'DISABLE_BINNING_USE_LEGACY_SC', -} -BINNING_ALLOWED = 0 -FORCE_BINNING_ON = 1 -DISABLE_BINNING_USE_NEW_SC = 2 -DISABLE_BINNING_USE_LEGACY_SC = 3 -BinningMode = ctypes.c_uint32 # enum - -# values for enumeration 'BinEventCntl' -BinEventCntl__enumvalues = { - 0: 'BINNER_BREAK_BATCH', - 1: 'BINNER_PIPELINE', - 2: 'BINNER_DROP_ASSERT', -} -BINNER_BREAK_BATCH = 0 -BINNER_PIPELINE = 1 -BINNER_DROP_ASSERT = 2 -BinEventCntl = ctypes.c_uint32 # enum - -# values for enumeration 'CovToShaderSel' -CovToShaderSel__enumvalues = { - 0: 'INPUT_COVERAGE', - 1: 'INPUT_INNER_COVERAGE', - 2: 'INPUT_DEPTH_COVERAGE', - 3: 'RAW', -} -INPUT_COVERAGE = 0 -INPUT_INNER_COVERAGE = 1 -INPUT_DEPTH_COVERAGE = 2 -RAW = 3 -CovToShaderSel = ctypes.c_uint32 # enum - -# values for enumeration 'RMIPerfSel' -RMIPerfSel__enumvalues = { - 0: 'RMI_PERF_SEL_NONE', - 1: 'RMI_PERF_SEL_BUSY', - 2: 'RMI_PERF_SEL_REG_CLK_VLD', - 3: 'RMI_PERF_SEL_DYN_CLK_CMN_VLD', - 4: 'RMI_PERF_SEL_DYN_CLK_RB_VLD', - 5: 'RMI_PERF_SEL_DYN_CLK_PERF_VLD', - 6: 'RMI_PERF_SEL_PERF_WINDOW', - 7: 'RMI_PERF_SEL_EVENT_SEND', - 8: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID0', - 9: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID1', - 10: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID2', - 11: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID3', - 12: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID4', - 13: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID5', - 14: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID6', - 15: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID7', - 16: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID8', - 17: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID9', - 18: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID10', - 19: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID11', - 20: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID12', - 21: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID13', - 22: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID14', - 23: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID15', - 24: 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID_ALL', - 25: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID0', - 26: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID1', - 27: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID2', - 28: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID3', - 29: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID4', - 30: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID5', - 31: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID6', - 32: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID7', - 33: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID8', - 34: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID9', - 35: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID10', - 36: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID11', - 37: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID12', - 38: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID13', - 39: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID14', - 40: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID15', - 41: 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID_ALL', - 42: 'RMI_PERF_SEL_UTCL1_TRANSLATION_MISS', - 43: 'RMI_PERF_SEL_UTCL1_PERMISSION_MISS', - 44: 'RMI_PERF_SEL_UTCL1_REQUEST', - 45: 'RMI_PERF_SEL_UTCL1_STALL_INFLIGHT_MAX', - 46: 'RMI_PERF_SEL_UTCL1_STALL_LRU_INFLIGHT', - 47: 'RMI_PERF_SEL_UTCL1_LFIFO_FULL', - 48: 'RMI_PERF_SEL_UTCL1_STALL_LFIFO_NOT_RES', - 49: 'RMI_PERF_SEL_UTCL1_STALL_UTCL2_REQ_OUT_OF_CREDITS', - 50: 'RMI_PERF_SEL_UTCL1_STALL_MISSFIFO_FULL', - 51: 'RMI_PERF_SEL_UTCL1_HIT_FIFO_FULL', - 52: 'RMI_PERF_SEL_UTCL1_STALL_MULTI_MISS', - 53: 'RMI_PERF_SEL_RB_RMI_WRREQ_ALL_CID', - 54: 'RMI_PERF_SEL_RB_RMI_WRREQ_BUSY', - 55: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID0', - 56: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID1', - 57: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID2', - 58: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID3', - 59: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID4', - 60: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID5', - 61: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID6', - 62: 'RMI_PERF_SEL_RB_RMI_WRREQ_CID7', - 63: 'RMI_PERF_SEL_RB_RMI_WRREQ_INFLIGHT_ALL_ORONE_CID', - 64: 'RMI_PERF_SEL_RB_RMI_WRREQ_BURST_LENGTH_ALL_ORONE_CID', - 65: 'RMI_PERF_SEL_RB_RMI_WRREQ_BURST_ALL_ORONE_CID', - 66: 'RMI_PERF_SEL_RB_RMI_WRREQ_RESIDENCY', - 67: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_ALL_CID', - 68: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID0', - 69: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID1', - 70: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID2', - 71: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID3', - 72: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID4', - 73: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID5', - 74: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID6', - 75: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID7', - 76: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK0', - 77: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK1', - 78: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK2', - 79: 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK3', - 80: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_ALL_CID', - 81: 'RMI_PERF_SEL_RB_RMI_RDREQ_ALL_CID', - 82: 'RMI_PERF_SEL_RB_RMI_RDREQ_BUSY', - 83: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID0', - 84: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID1', - 85: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID2', - 86: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID3', - 87: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID4', - 88: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID5', - 89: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID6', - 90: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID7', - 91: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID0', - 92: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID1', - 93: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID2', - 94: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID3', - 95: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID4', - 96: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID5', - 97: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID6', - 98: 'RMI_PERF_SEL_RB_RMI_RDREQ_CID7', - 99: 'RMI_PERF_SEL_RB_RMI_32BRDREQ_INFLIGHT_ALL_ORONE_CID', - 100: 'RMI_PERF_SEL_RB_RMI_RDREQ_BURST_LENGTH_ALL_ORONE_CID', - 101: 'RMI_PERF_SEL_RB_RMI_RDREQ_BURST_ALL_ORONE_CID', - 102: 'RMI_PERF_SEL_RB_RMI_RDREQ_RESIDENCY', - 103: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_ALL_CID', - 104: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID0', - 105: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID1', - 106: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID2', - 107: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID3', - 108: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID4', - 109: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID5', - 110: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID6', - 111: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID7', - 112: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK0', - 113: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK1', - 114: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK2', - 115: 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK3', - 116: 'RMI_PERF_SEL_RMI_TC_WRREQ_ALL_CID', - 117: 'RMI_PERF_SEL_RMI_TC_REQ_BUSY', - 118: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID0', - 119: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID1', - 120: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID2', - 121: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID3', - 122: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID4', - 123: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID5', - 124: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID6', - 125: 'RMI_PERF_SEL_RMI_TC_WRREQ_CID7', - 126: 'RMI_PERF_SEL_RMI_TC_WRREQ_INFLIGHT_ALL_CID', - 127: 'RMI_PERF_SEL_TC_RMI_WRRET_VALID_ALL_CID', - 128: 'RMI_PERF_SEL_RMI_TC_RDREQ_ALL_CID', - 129: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID0', - 130: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID1', - 131: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID2', - 132: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID3', - 133: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID4', - 134: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID5', - 135: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID6', - 136: 'RMI_PERF_SEL_RMI_TC_RDREQ_CID7', - 137: 'RMI_PERF_SEL_RMI_TC_RDREQ_INFLIGHT_ALL_CID', - 138: 'RMI_PERF_SEL_TC_RMI_RDRET_VALID_ALL_CID', - 139: 'RMI_PERF_SEL_UTCL1_BUSY', - 140: 'RMI_PERF_SEL_RMI_UTC_REQ', - 141: 'RMI_PERF_SEL_RMI_UTC_BUSY', - 142: 'RMI_PERF_SEL_UTCL1_UTCL2_REQ', - 143: 'RMI_PERF_SEL_PROBE_UTCL1_XNACK_RETRY', - 144: 'RMI_PERF_SEL_PROBE_UTCL1_ALL_FAULT', - 145: 'RMI_PERF_SEL_PROBE_UTCL1_PRT_FAULT', - 146: 'RMI_PERF_SEL_PROBE_UTCL1_XNACK_NORETRY_FAULT', - 147: 'RMI_PERF_SEL_XNACK_FIFO_NUM_USED', - 148: 'RMI_PERF_SEL_LAT_FIFO_NUM_USED', - 149: 'RMI_PERF_SEL_LAT_FIFO_BLOCKING_REQ', - 150: 'RMI_PERF_SEL_LAT_FIFO_NONBLOCKING_REQ', - 151: 'RMI_PERF_SEL_XNACK_FIFO_FULL', - 152: 'RMI_PERF_SEL_XNACK_FIFO_BUSY', - 153: 'RMI_PERF_SEL_LAT_FIFO_FULL', - 154: 'RMI_PERF_SEL_SKID_FIFO_DEPTH', - 155: 'RMI_PERF_SEL_TCIW_INFLIGHT_COUNT', - 156: 'RMI_PERF_SEL_PRT_FIFO_NUM_USED', - 157: 'RMI_PERF_SEL_PRT_FIFO_REQ', - 158: 'RMI_PERF_SEL_PRT_FIFO_BUSY', - 159: 'RMI_PERF_SEL_TCIW_REQ', - 160: 'RMI_PERF_SEL_TCIW_BUSY', - 161: 'RMI_PERF_SEL_SKID_FIFO_REQ', - 162: 'RMI_PERF_SEL_SKID_FIFO_BUSY', - 163: 'RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK0', - 164: 'RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK1', - 165: 'RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK2', - 166: 'RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK3', - 167: 'RMI_PERF_SEL_XBAR_PROBEGEN_RTS_RTR', - 168: 'RMI_PERF_SEL_XBAR_PROBEGEN_RTSB_RTR', - 169: 'RMI_PERF_SEL_XBAR_PROBEGEN_RTS_RTRB', - 170: 'RMI_PERF_SEL_XBAR_PROBEGEN_RTSB_RTRB', - 171: 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTS_RTR', - 172: 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTSB_RTR', - 173: 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTS_RTRB', - 174: 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTSB_RTRB', - 175: 'RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTS_RTR', - 176: 'RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTSB_RTR', - 177: 'RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTS_RTRB', - 178: 'RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTSB_RTRB', - 179: 'RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTS_RTR', - 180: 'RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTSB_RTR', - 181: 'RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTS_RTRB', - 182: 'RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTSB_RTRB', - 183: 'RMI_PERF_SEL_POP_DEMUX_RTS_RTR', - 184: 'RMI_PERF_SEL_POP_DEMUX_RTSB_RTR', - 185: 'RMI_PERF_SEL_POP_DEMUX_RTS_RTRB', - 186: 'RMI_PERF_SEL_POP_DEMUX_RTSB_RTRB', - 187: 'RMI_PERF_SEL_PROBEGEN_UTC_RTS_RTR', - 188: 'RMI_PERF_SEL_PROBEGEN_UTC_RTSB_RTR', - 189: 'RMI_PERF_SEL_PROBEGEN_UTC_RTS_RTRB', - 190: 'RMI_PERF_SEL_PROBEGEN_UTC_RTSB_RTRB', - 191: 'RMI_PERF_SEL_UTC_POP_RTS_RTR', - 192: 'RMI_PERF_SEL_UTC_POP_RTSB_RTR', - 193: 'RMI_PERF_SEL_UTC_POP_RTS_RTRB', - 194: 'RMI_PERF_SEL_UTC_POP_RTSB_RTRB', - 195: 'RMI_PERF_SEL_POP_XNACK_RTS_RTR', - 196: 'RMI_PERF_SEL_POP_XNACK_RTSB_RTR', - 197: 'RMI_PERF_SEL_POP_XNACK_RTS_RTRB', - 198: 'RMI_PERF_SEL_POP_XNACK_RTSB_RTRB', - 199: 'RMI_PERF_SEL_XNACK_PROBEGEN_RTS_RTR', - 200: 'RMI_PERF_SEL_XNACK_PROBEGEN_RTSB_RTR', - 201: 'RMI_PERF_SEL_XNACK_PROBEGEN_RTS_RTRB', - 202: 'RMI_PERF_SEL_XNACK_PROBEGEN_RTSB_RTRB', - 203: 'RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTS_RTR', - 204: 'RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTSB_RTR', - 205: 'RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTS_RTRB', - 206: 'RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTSB_RTRB', - 207: 'RMI_PERF_SEL_SKID_FIFO_IN_RTS', - 208: 'RMI_PERF_SEL_SKID_FIFO_IN_RTSB', - 209: 'RMI_PERF_SEL_SKID_FIFO_OUT_RTS', - 210: 'RMI_PERF_SEL_SKID_FIFO_OUT_RTSB', - 211: 'RMI_PERF_SEL_XBAR_PROBEGEN_READ_RTS_RTR', - 212: 'RMI_PERF_SEL_XBAR_PROBEGEN_WRITE_RTS_RTR', - 213: 'RMI_PERF_SEL_XBAR_PROBEGEN_IN0_RTS_RTR', - 214: 'RMI_PERF_SEL_XBAR_PROBEGEN_IN1_RTS_RTR', - 215: 'RMI_PERF_SEL_XBAR_PROBEGEN_CB_RTS_RTR', - 216: 'RMI_PERF_SEL_XBAR_PROBEGEN_DB_RTS_RTR', - 217: 'RMI_PERF_SEL_REORDER_FIFO_REQ', - 218: 'RMI_PERF_SEL_REORDER_FIFO_BUSY', - 219: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_ALL_CID', - 220: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID0', - 221: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID1', - 222: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID2', - 223: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID3', - 224: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID4', - 225: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID5', - 226: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID6', - 227: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID7', - 228: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK0', - 229: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK1', - 230: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK2', - 231: 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK3', -} -RMI_PERF_SEL_NONE = 0 -RMI_PERF_SEL_BUSY = 1 -RMI_PERF_SEL_REG_CLK_VLD = 2 -RMI_PERF_SEL_DYN_CLK_CMN_VLD = 3 -RMI_PERF_SEL_DYN_CLK_RB_VLD = 4 -RMI_PERF_SEL_DYN_CLK_PERF_VLD = 5 -RMI_PERF_SEL_PERF_WINDOW = 6 -RMI_PERF_SEL_EVENT_SEND = 7 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID0 = 8 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID1 = 9 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID2 = 10 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID3 = 11 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID4 = 12 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID5 = 13 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID6 = 14 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID7 = 15 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID8 = 16 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID9 = 17 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID10 = 18 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID11 = 19 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID12 = 20 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID13 = 21 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID14 = 22 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID15 = 23 -RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID_ALL = 24 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID0 = 25 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID1 = 26 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID2 = 27 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID3 = 28 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID4 = 29 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID5 = 30 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID6 = 31 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID7 = 32 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID8 = 33 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID9 = 34 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID10 = 35 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID11 = 36 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID12 = 37 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID13 = 38 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID14 = 39 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID15 = 40 -RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID_ALL = 41 -RMI_PERF_SEL_UTCL1_TRANSLATION_MISS = 42 -RMI_PERF_SEL_UTCL1_PERMISSION_MISS = 43 -RMI_PERF_SEL_UTCL1_REQUEST = 44 -RMI_PERF_SEL_UTCL1_STALL_INFLIGHT_MAX = 45 -RMI_PERF_SEL_UTCL1_STALL_LRU_INFLIGHT = 46 -RMI_PERF_SEL_UTCL1_LFIFO_FULL = 47 -RMI_PERF_SEL_UTCL1_STALL_LFIFO_NOT_RES = 48 -RMI_PERF_SEL_UTCL1_STALL_UTCL2_REQ_OUT_OF_CREDITS = 49 -RMI_PERF_SEL_UTCL1_STALL_MISSFIFO_FULL = 50 -RMI_PERF_SEL_UTCL1_HIT_FIFO_FULL = 51 -RMI_PERF_SEL_UTCL1_STALL_MULTI_MISS = 52 -RMI_PERF_SEL_RB_RMI_WRREQ_ALL_CID = 53 -RMI_PERF_SEL_RB_RMI_WRREQ_BUSY = 54 -RMI_PERF_SEL_RB_RMI_WRREQ_CID0 = 55 -RMI_PERF_SEL_RB_RMI_WRREQ_CID1 = 56 -RMI_PERF_SEL_RB_RMI_WRREQ_CID2 = 57 -RMI_PERF_SEL_RB_RMI_WRREQ_CID3 = 58 -RMI_PERF_SEL_RB_RMI_WRREQ_CID4 = 59 -RMI_PERF_SEL_RB_RMI_WRREQ_CID5 = 60 -RMI_PERF_SEL_RB_RMI_WRREQ_CID6 = 61 -RMI_PERF_SEL_RB_RMI_WRREQ_CID7 = 62 -RMI_PERF_SEL_RB_RMI_WRREQ_INFLIGHT_ALL_ORONE_CID = 63 -RMI_PERF_SEL_RB_RMI_WRREQ_BURST_LENGTH_ALL_ORONE_CID = 64 -RMI_PERF_SEL_RB_RMI_WRREQ_BURST_ALL_ORONE_CID = 65 -RMI_PERF_SEL_RB_RMI_WRREQ_RESIDENCY = 66 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_ALL_CID = 67 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID0 = 68 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID1 = 69 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID2 = 70 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID3 = 71 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID4 = 72 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID5 = 73 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID6 = 74 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID7 = 75 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK0 = 76 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK1 = 77 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK2 = 78 -RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK3 = 79 -RMI_PERF_SEL_RB_RMI_32BRDREQ_ALL_CID = 80 -RMI_PERF_SEL_RB_RMI_RDREQ_ALL_CID = 81 -RMI_PERF_SEL_RB_RMI_RDREQ_BUSY = 82 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID0 = 83 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID1 = 84 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID2 = 85 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID3 = 86 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID4 = 87 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID5 = 88 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID6 = 89 -RMI_PERF_SEL_RB_RMI_32BRDREQ_CID7 = 90 -RMI_PERF_SEL_RB_RMI_RDREQ_CID0 = 91 -RMI_PERF_SEL_RB_RMI_RDREQ_CID1 = 92 -RMI_PERF_SEL_RB_RMI_RDREQ_CID2 = 93 -RMI_PERF_SEL_RB_RMI_RDREQ_CID3 = 94 -RMI_PERF_SEL_RB_RMI_RDREQ_CID4 = 95 -RMI_PERF_SEL_RB_RMI_RDREQ_CID5 = 96 -RMI_PERF_SEL_RB_RMI_RDREQ_CID6 = 97 -RMI_PERF_SEL_RB_RMI_RDREQ_CID7 = 98 -RMI_PERF_SEL_RB_RMI_32BRDREQ_INFLIGHT_ALL_ORONE_CID = 99 -RMI_PERF_SEL_RB_RMI_RDREQ_BURST_LENGTH_ALL_ORONE_CID = 100 -RMI_PERF_SEL_RB_RMI_RDREQ_BURST_ALL_ORONE_CID = 101 -RMI_PERF_SEL_RB_RMI_RDREQ_RESIDENCY = 102 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_ALL_CID = 103 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID0 = 104 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID1 = 105 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID2 = 106 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID3 = 107 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID4 = 108 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID5 = 109 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID6 = 110 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID7 = 111 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK0 = 112 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK1 = 113 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK2 = 114 -RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK3 = 115 -RMI_PERF_SEL_RMI_TC_WRREQ_ALL_CID = 116 -RMI_PERF_SEL_RMI_TC_REQ_BUSY = 117 -RMI_PERF_SEL_RMI_TC_WRREQ_CID0 = 118 -RMI_PERF_SEL_RMI_TC_WRREQ_CID1 = 119 -RMI_PERF_SEL_RMI_TC_WRREQ_CID2 = 120 -RMI_PERF_SEL_RMI_TC_WRREQ_CID3 = 121 -RMI_PERF_SEL_RMI_TC_WRREQ_CID4 = 122 -RMI_PERF_SEL_RMI_TC_WRREQ_CID5 = 123 -RMI_PERF_SEL_RMI_TC_WRREQ_CID6 = 124 -RMI_PERF_SEL_RMI_TC_WRREQ_CID7 = 125 -RMI_PERF_SEL_RMI_TC_WRREQ_INFLIGHT_ALL_CID = 126 -RMI_PERF_SEL_TC_RMI_WRRET_VALID_ALL_CID = 127 -RMI_PERF_SEL_RMI_TC_RDREQ_ALL_CID = 128 -RMI_PERF_SEL_RMI_TC_RDREQ_CID0 = 129 -RMI_PERF_SEL_RMI_TC_RDREQ_CID1 = 130 -RMI_PERF_SEL_RMI_TC_RDREQ_CID2 = 131 -RMI_PERF_SEL_RMI_TC_RDREQ_CID3 = 132 -RMI_PERF_SEL_RMI_TC_RDREQ_CID4 = 133 -RMI_PERF_SEL_RMI_TC_RDREQ_CID5 = 134 -RMI_PERF_SEL_RMI_TC_RDREQ_CID6 = 135 -RMI_PERF_SEL_RMI_TC_RDREQ_CID7 = 136 -RMI_PERF_SEL_RMI_TC_RDREQ_INFLIGHT_ALL_CID = 137 -RMI_PERF_SEL_TC_RMI_RDRET_VALID_ALL_CID = 138 -RMI_PERF_SEL_UTCL1_BUSY = 139 -RMI_PERF_SEL_RMI_UTC_REQ = 140 -RMI_PERF_SEL_RMI_UTC_BUSY = 141 -RMI_PERF_SEL_UTCL1_UTCL2_REQ = 142 -RMI_PERF_SEL_PROBE_UTCL1_XNACK_RETRY = 143 -RMI_PERF_SEL_PROBE_UTCL1_ALL_FAULT = 144 -RMI_PERF_SEL_PROBE_UTCL1_PRT_FAULT = 145 -RMI_PERF_SEL_PROBE_UTCL1_XNACK_NORETRY_FAULT = 146 -RMI_PERF_SEL_XNACK_FIFO_NUM_USED = 147 -RMI_PERF_SEL_LAT_FIFO_NUM_USED = 148 -RMI_PERF_SEL_LAT_FIFO_BLOCKING_REQ = 149 -RMI_PERF_SEL_LAT_FIFO_NONBLOCKING_REQ = 150 -RMI_PERF_SEL_XNACK_FIFO_FULL = 151 -RMI_PERF_SEL_XNACK_FIFO_BUSY = 152 -RMI_PERF_SEL_LAT_FIFO_FULL = 153 -RMI_PERF_SEL_SKID_FIFO_DEPTH = 154 -RMI_PERF_SEL_TCIW_INFLIGHT_COUNT = 155 -RMI_PERF_SEL_PRT_FIFO_NUM_USED = 156 -RMI_PERF_SEL_PRT_FIFO_REQ = 157 -RMI_PERF_SEL_PRT_FIFO_BUSY = 158 -RMI_PERF_SEL_TCIW_REQ = 159 -RMI_PERF_SEL_TCIW_BUSY = 160 -RMI_PERF_SEL_SKID_FIFO_REQ = 161 -RMI_PERF_SEL_SKID_FIFO_BUSY = 162 -RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK0 = 163 -RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK1 = 164 -RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK2 = 165 -RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK3 = 166 -RMI_PERF_SEL_XBAR_PROBEGEN_RTS_RTR = 167 -RMI_PERF_SEL_XBAR_PROBEGEN_RTSB_RTR = 168 -RMI_PERF_SEL_XBAR_PROBEGEN_RTS_RTRB = 169 -RMI_PERF_SEL_XBAR_PROBEGEN_RTSB_RTRB = 170 -RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTS_RTR = 171 -RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTSB_RTR = 172 -RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTS_RTRB = 173 -RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTSB_RTRB = 174 -RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTS_RTR = 175 -RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTSB_RTR = 176 -RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTS_RTRB = 177 -RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTSB_RTRB = 178 -RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTS_RTR = 179 -RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTSB_RTR = 180 -RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTS_RTRB = 181 -RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTSB_RTRB = 182 -RMI_PERF_SEL_POP_DEMUX_RTS_RTR = 183 -RMI_PERF_SEL_POP_DEMUX_RTSB_RTR = 184 -RMI_PERF_SEL_POP_DEMUX_RTS_RTRB = 185 -RMI_PERF_SEL_POP_DEMUX_RTSB_RTRB = 186 -RMI_PERF_SEL_PROBEGEN_UTC_RTS_RTR = 187 -RMI_PERF_SEL_PROBEGEN_UTC_RTSB_RTR = 188 -RMI_PERF_SEL_PROBEGEN_UTC_RTS_RTRB = 189 -RMI_PERF_SEL_PROBEGEN_UTC_RTSB_RTRB = 190 -RMI_PERF_SEL_UTC_POP_RTS_RTR = 191 -RMI_PERF_SEL_UTC_POP_RTSB_RTR = 192 -RMI_PERF_SEL_UTC_POP_RTS_RTRB = 193 -RMI_PERF_SEL_UTC_POP_RTSB_RTRB = 194 -RMI_PERF_SEL_POP_XNACK_RTS_RTR = 195 -RMI_PERF_SEL_POP_XNACK_RTSB_RTR = 196 -RMI_PERF_SEL_POP_XNACK_RTS_RTRB = 197 -RMI_PERF_SEL_POP_XNACK_RTSB_RTRB = 198 -RMI_PERF_SEL_XNACK_PROBEGEN_RTS_RTR = 199 -RMI_PERF_SEL_XNACK_PROBEGEN_RTSB_RTR = 200 -RMI_PERF_SEL_XNACK_PROBEGEN_RTS_RTRB = 201 -RMI_PERF_SEL_XNACK_PROBEGEN_RTSB_RTRB = 202 -RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTS_RTR = 203 -RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTSB_RTR = 204 -RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTS_RTRB = 205 -RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTSB_RTRB = 206 -RMI_PERF_SEL_SKID_FIFO_IN_RTS = 207 -RMI_PERF_SEL_SKID_FIFO_IN_RTSB = 208 -RMI_PERF_SEL_SKID_FIFO_OUT_RTS = 209 -RMI_PERF_SEL_SKID_FIFO_OUT_RTSB = 210 -RMI_PERF_SEL_XBAR_PROBEGEN_READ_RTS_RTR = 211 -RMI_PERF_SEL_XBAR_PROBEGEN_WRITE_RTS_RTR = 212 -RMI_PERF_SEL_XBAR_PROBEGEN_IN0_RTS_RTR = 213 -RMI_PERF_SEL_XBAR_PROBEGEN_IN1_RTS_RTR = 214 -RMI_PERF_SEL_XBAR_PROBEGEN_CB_RTS_RTR = 215 -RMI_PERF_SEL_XBAR_PROBEGEN_DB_RTS_RTR = 216 -RMI_PERF_SEL_REORDER_FIFO_REQ = 217 -RMI_PERF_SEL_REORDER_FIFO_BUSY = 218 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_ALL_CID = 219 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID0 = 220 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID1 = 221 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID2 = 222 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID3 = 223 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID4 = 224 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID5 = 225 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID6 = 226 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID7 = 227 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK0 = 228 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK1 = 229 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK2 = 230 -RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK3 = 231 -RMIPerfSel = ctypes.c_uint32 # enum - -# values for enumeration 'IH_PERF_SEL' -IH_PERF_SEL__enumvalues = { - 0: 'IH_PERF_SEL_CYCLE', - 1: 'IH_PERF_SEL_IDLE', - 2: 'IH_PERF_SEL_INPUT_IDLE', - 3: 'IH_PERF_SEL_BUFFER_IDLE', - 4: 'IH_PERF_SEL_RB0_FULL', - 5: 'IH_PERF_SEL_RB0_OVERFLOW', - 6: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK', - 7: 'IH_PERF_SEL_RB0_WPTR_WRAP', - 8: 'IH_PERF_SEL_RB0_RPTR_WRAP', - 9: 'IH_PERF_SEL_MC_WR_IDLE', - 10: 'IH_PERF_SEL_MC_WR_COUNT', - 11: 'IH_PERF_SEL_MC_WR_STALL', - 12: 'IH_PERF_SEL_MC_WR_CLEAN_PENDING', - 13: 'IH_PERF_SEL_MC_WR_CLEAN_STALL', - 14: 'IH_PERF_SEL_BIF_LINE0_RISING', - 15: 'IH_PERF_SEL_BIF_LINE0_FALLING', - 16: 'IH_PERF_SEL_RB1_FULL', - 17: 'IH_PERF_SEL_RB1_OVERFLOW', - 18: 'Reserved18', - 19: 'IH_PERF_SEL_RB1_WPTR_WRAP', - 20: 'IH_PERF_SEL_RB1_RPTR_WRAP', - 21: 'IH_PERF_SEL_RB2_FULL', - 22: 'IH_PERF_SEL_RB2_OVERFLOW', - 23: 'Reserved23', - 24: 'IH_PERF_SEL_RB2_WPTR_WRAP', - 25: 'IH_PERF_SEL_RB2_RPTR_WRAP', - 26: 'Reserved26', - 27: 'Reserved27', - 28: 'Reserved28', - 29: 'Reserved29', - 30: 'IH_PERF_SEL_RB0_FULL_VF0', - 31: 'IH_PERF_SEL_RB0_FULL_VF1', - 32: 'IH_PERF_SEL_RB0_FULL_VF2', - 33: 'IH_PERF_SEL_RB0_FULL_VF3', - 34: 'IH_PERF_SEL_RB0_FULL_VF4', - 35: 'IH_PERF_SEL_RB0_FULL_VF5', - 36: 'IH_PERF_SEL_RB0_FULL_VF6', - 37: 'IH_PERF_SEL_RB0_FULL_VF7', - 38: 'IH_PERF_SEL_RB0_FULL_VF8', - 39: 'IH_PERF_SEL_RB0_FULL_VF9', - 40: 'IH_PERF_SEL_RB0_FULL_VF10', - 41: 'IH_PERF_SEL_RB0_FULL_VF11', - 42: 'IH_PERF_SEL_RB0_FULL_VF12', - 43: 'IH_PERF_SEL_RB0_FULL_VF13', - 44: 'IH_PERF_SEL_RB0_FULL_VF14', - 45: 'IH_PERF_SEL_RB0_FULL_VF15', - 46: 'IH_PERF_SEL_RB0_OVERFLOW_VF0', - 47: 'IH_PERF_SEL_RB0_OVERFLOW_VF1', - 48: 'IH_PERF_SEL_RB0_OVERFLOW_VF2', - 49: 'IH_PERF_SEL_RB0_OVERFLOW_VF3', - 50: 'IH_PERF_SEL_RB0_OVERFLOW_VF4', - 51: 'IH_PERF_SEL_RB0_OVERFLOW_VF5', - 52: 'IH_PERF_SEL_RB0_OVERFLOW_VF6', - 53: 'IH_PERF_SEL_RB0_OVERFLOW_VF7', - 54: 'IH_PERF_SEL_RB0_OVERFLOW_VF8', - 55: 'IH_PERF_SEL_RB0_OVERFLOW_VF9', - 56: 'IH_PERF_SEL_RB0_OVERFLOW_VF10', - 57: 'IH_PERF_SEL_RB0_OVERFLOW_VF11', - 58: 'IH_PERF_SEL_RB0_OVERFLOW_VF12', - 59: 'IH_PERF_SEL_RB0_OVERFLOW_VF13', - 60: 'IH_PERF_SEL_RB0_OVERFLOW_VF14', - 61: 'IH_PERF_SEL_RB0_OVERFLOW_VF15', - 62: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF0', - 63: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF1', - 64: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF2', - 65: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF3', - 66: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF4', - 67: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF5', - 68: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF6', - 69: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF7', - 70: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF8', - 71: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF9', - 72: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF10', - 73: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF11', - 74: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF12', - 75: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF13', - 76: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF14', - 77: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF15', - 78: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF0', - 79: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF1', - 80: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF2', - 81: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF3', - 82: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF4', - 83: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF5', - 84: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF6', - 85: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF7', - 86: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF8', - 87: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF9', - 88: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF10', - 89: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF11', - 90: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF12', - 91: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF13', - 92: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF14', - 93: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF15', - 94: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF0', - 95: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF1', - 96: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF2', - 97: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF3', - 98: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF4', - 99: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF5', - 100: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF6', - 101: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF7', - 102: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF8', - 103: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF9', - 104: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF10', - 105: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF11', - 106: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF12', - 107: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF13', - 108: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF14', - 109: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF15', - 110: 'IH_PERF_SEL_BIF_LINE0_RISING_VF0', - 111: 'IH_PERF_SEL_BIF_LINE0_RISING_VF1', - 112: 'IH_PERF_SEL_BIF_LINE0_RISING_VF2', - 113: 'IH_PERF_SEL_BIF_LINE0_RISING_VF3', - 114: 'IH_PERF_SEL_BIF_LINE0_RISING_VF4', - 115: 'IH_PERF_SEL_BIF_LINE0_RISING_VF5', - 116: 'IH_PERF_SEL_BIF_LINE0_RISING_VF6', - 117: 'IH_PERF_SEL_BIF_LINE0_RISING_VF7', - 118: 'IH_PERF_SEL_BIF_LINE0_RISING_VF8', - 119: 'IH_PERF_SEL_BIF_LINE0_RISING_VF9', - 120: 'IH_PERF_SEL_BIF_LINE0_RISING_VF10', - 121: 'IH_PERF_SEL_BIF_LINE0_RISING_VF11', - 122: 'IH_PERF_SEL_BIF_LINE0_RISING_VF12', - 123: 'IH_PERF_SEL_BIF_LINE0_RISING_VF13', - 124: 'IH_PERF_SEL_BIF_LINE0_RISING_VF14', - 125: 'IH_PERF_SEL_BIF_LINE0_RISING_VF15', - 126: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF0', - 127: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF1', - 128: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF2', - 129: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF3', - 130: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF4', - 131: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF5', - 132: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF6', - 133: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF7', - 134: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF8', - 135: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF9', - 136: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF10', - 137: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF11', - 138: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF12', - 139: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF13', - 140: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF14', - 141: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF15', - 142: 'Reserved142', - 143: 'Reserved143', - 144: 'Reserved144', - 145: 'Reserved145', - 146: 'Reserved146', - 147: 'Reserved147', - 148: 'Reserved148', - 149: 'Reserved149', - 150: 'IH_PERF_SEL_CLIENT0_INT', - 151: 'IH_PERF_SEL_CLIENT1_INT', - 152: 'IH_PERF_SEL_CLIENT2_INT', - 153: 'IH_PERF_SEL_CLIENT3_INT', - 154: 'IH_PERF_SEL_CLIENT4_INT', - 155: 'IH_PERF_SEL_CLIENT5_INT', - 156: 'IH_PERF_SEL_CLIENT6_INT', - 157: 'IH_PERF_SEL_CLIENT7_INT', - 158: 'IH_PERF_SEL_CLIENT8_INT', - 159: 'IH_PERF_SEL_CLIENT9_INT', - 160: 'IH_PERF_SEL_CLIENT10_INT', - 161: 'IH_PERF_SEL_CLIENT11_INT', - 162: 'IH_PERF_SEL_CLIENT12_INT', - 163: 'IH_PERF_SEL_CLIENT13_INT', - 164: 'IH_PERF_SEL_CLIENT14_INT', - 165: 'IH_PERF_SEL_CLIENT15_INT', - 166: 'IH_PERF_SEL_CLIENT16_INT', - 167: 'IH_PERF_SEL_CLIENT17_INT', - 168: 'IH_PERF_SEL_CLIENT18_INT', - 169: 'IH_PERF_SEL_CLIENT19_INT', - 170: 'IH_PERF_SEL_CLIENT20_INT', - 171: 'IH_PERF_SEL_CLIENT21_INT', - 172: 'IH_PERF_SEL_CLIENT22_INT', - 173: 'IH_PERF_SEL_CLIENT23_INT', - 174: 'IH_PERF_SEL_CLIENT24_INT', - 175: 'IH_PERF_SEL_CLIENT25_INT', - 176: 'IH_PERF_SEL_CLIENT26_INT', - 177: 'IH_PERF_SEL_CLIENT27_INT', - 178: 'IH_PERF_SEL_CLIENT28_INT', - 179: 'IH_PERF_SEL_CLIENT29_INT', - 180: 'IH_PERF_SEL_CLIENT30_INT', - 181: 'IH_PERF_SEL_CLIENT31_INT', - 182: 'Reserved182', - 183: 'Reserved183', - 184: 'Reserved184', - 185: 'Reserved185', - 186: 'Reserved186', - 187: 'Reserved187', - 188: 'Reserved188', - 189: 'Reserved189', - 190: 'Reserved190', - 191: 'Reserved191', - 192: 'Reserved192', - 193: 'Reserved193', - 194: 'Reserved194', - 195: 'Reserved195', - 196: 'Reserved196', - 197: 'Reserved197', - 198: 'Reserved198', - 199: 'Reserved199', - 200: 'Reserved200', - 201: 'Reserved201', - 202: 'Reserved202', - 203: 'Reserved203', - 204: 'Reserved204', - 205: 'Reserved205', - 206: 'Reserved206', - 207: 'Reserved207', - 208: 'Reserved208', - 209: 'Reserved209', - 210: 'Reserved210', - 211: 'Reserved211', - 212: 'Reserved212', - 213: 'Reserved213', - 214: 'Reserved214', - 215: 'Reserved215', - 216: 'Reserved216', - 217: 'Reserved217', - 218: 'Reserved218', - 219: 'Reserved219', - 220: 'IH_PERF_SEL_RB1_FULL_VF0', - 221: 'IH_PERF_SEL_RB1_FULL_VF1', - 222: 'IH_PERF_SEL_RB1_FULL_VF2', - 223: 'IH_PERF_SEL_RB1_FULL_VF3', - 224: 'IH_PERF_SEL_RB1_FULL_VF4', - 225: 'IH_PERF_SEL_RB1_FULL_VF5', - 226: 'IH_PERF_SEL_RB1_FULL_VF6', - 227: 'IH_PERF_SEL_RB1_FULL_VF7', - 228: 'IH_PERF_SEL_RB1_FULL_VF8', - 229: 'IH_PERF_SEL_RB1_FULL_VF9', - 230: 'IH_PERF_SEL_RB1_FULL_VF10', - 231: 'IH_PERF_SEL_RB1_FULL_VF11', - 232: 'IH_PERF_SEL_RB1_FULL_VF12', - 233: 'IH_PERF_SEL_RB1_FULL_VF13', - 234: 'IH_PERF_SEL_RB1_FULL_VF14', - 235: 'IH_PERF_SEL_RB1_FULL_VF15', - 236: 'IH_PERF_SEL_RB1_OVERFLOW_VF0', - 237: 'IH_PERF_SEL_RB1_OVERFLOW_VF1', - 238: 'IH_PERF_SEL_RB1_OVERFLOW_VF2', - 239: 'IH_PERF_SEL_RB1_OVERFLOW_VF3', - 240: 'IH_PERF_SEL_RB1_OVERFLOW_VF4', - 241: 'IH_PERF_SEL_RB1_OVERFLOW_VF5', - 242: 'IH_PERF_SEL_RB1_OVERFLOW_VF6', - 243: 'IH_PERF_SEL_RB1_OVERFLOW_VF7', - 244: 'IH_PERF_SEL_RB1_OVERFLOW_VF8', - 245: 'IH_PERF_SEL_RB1_OVERFLOW_VF9', - 246: 'IH_PERF_SEL_RB1_OVERFLOW_VF10', - 247: 'IH_PERF_SEL_RB1_OVERFLOW_VF11', - 248: 'IH_PERF_SEL_RB1_OVERFLOW_VF12', - 249: 'IH_PERF_SEL_RB1_OVERFLOW_VF13', - 250: 'IH_PERF_SEL_RB1_OVERFLOW_VF14', - 251: 'IH_PERF_SEL_RB1_OVERFLOW_VF15', - 252: 'Reserved252', - 253: 'Reserved253', - 254: 'Reserved254', - 255: 'Reserved255', - 256: 'Reserved256', - 257: 'Reserved257', - 258: 'Reserved258', - 259: 'Reserved259', - 260: 'Reserved260', - 261: 'Reserved261', - 262: 'Reserved262', - 263: 'Reserved263', - 264: 'Reserved264', - 265: 'Reserved265', - 266: 'Reserved266', - 267: 'Reserved267', - 268: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF0', - 269: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF1', - 270: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF2', - 271: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF3', - 272: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF4', - 273: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF5', - 274: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF6', - 275: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF7', - 276: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF8', - 277: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF9', - 278: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF10', - 279: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF11', - 280: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF12', - 281: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF13', - 282: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF14', - 283: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF15', - 284: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF0', - 285: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF1', - 286: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF2', - 287: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF3', - 288: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF4', - 289: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF5', - 290: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF6', - 291: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF7', - 292: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF8', - 293: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF9', - 294: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF10', - 295: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF11', - 296: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF12', - 297: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF13', - 298: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF14', - 299: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF15', - 300: 'Reserved300', - 301: 'Reserved301', - 302: 'Reserved302', - 303: 'Reserved303', - 304: 'Reserved304', - 305: 'Reserved305', - 306: 'Reserved306', - 307: 'Reserved307', - 308: 'Reserved308', - 309: 'Reserved309', - 310: 'Reserved310', - 311: 'Reserved311', - 312: 'Reserved312', - 313: 'Reserved313', - 314: 'Reserved314', - 315: 'Reserved315', - 316: 'Reserved316', - 317: 'Reserved317', - 318: 'Reserved318', - 319: 'Reserved319', - 320: 'Reserved320', - 321: 'Reserved321', - 322: 'Reserved322', - 323: 'Reserved323', - 324: 'Reserved324', - 325: 'Reserved325', - 326: 'Reserved326', - 327: 'Reserved327', - 328: 'Reserved328', - 329: 'Reserved329', - 330: 'Reserved330', - 331: 'Reserved331', - 332: 'IH_PERF_SEL_RB2_FULL_VF0', - 333: 'IH_PERF_SEL_RB2_FULL_VF1', - 334: 'IH_PERF_SEL_RB2_FULL_VF2', - 335: 'IH_PERF_SEL_RB2_FULL_VF3', - 336: 'IH_PERF_SEL_RB2_FULL_VF4', - 337: 'IH_PERF_SEL_RB2_FULL_VF5', - 338: 'IH_PERF_SEL_RB2_FULL_VF6', - 339: 'IH_PERF_SEL_RB2_FULL_VF7', - 340: 'IH_PERF_SEL_RB2_FULL_VF8', - 341: 'IH_PERF_SEL_RB2_FULL_VF9', - 342: 'IH_PERF_SEL_RB2_FULL_VF10', - 343: 'IH_PERF_SEL_RB2_FULL_VF11', - 344: 'IH_PERF_SEL_RB2_FULL_VF12', - 345: 'IH_PERF_SEL_RB2_FULL_VF13', - 346: 'IH_PERF_SEL_RB2_FULL_VF14', - 347: 'IH_PERF_SEL_RB2_FULL_VF15', - 348: 'IH_PERF_SEL_RB2_OVERFLOW_VF0', - 349: 'IH_PERF_SEL_RB2_OVERFLOW_VF1', - 350: 'IH_PERF_SEL_RB2_OVERFLOW_VF2', - 351: 'IH_PERF_SEL_RB2_OVERFLOW_VF3', - 352: 'IH_PERF_SEL_RB2_OVERFLOW_VF4', - 353: 'IH_PERF_SEL_RB2_OVERFLOW_VF5', - 354: 'IH_PERF_SEL_RB2_OVERFLOW_VF6', - 355: 'IH_PERF_SEL_RB2_OVERFLOW_VF7', - 356: 'IH_PERF_SEL_RB2_OVERFLOW_VF8', - 357: 'IH_PERF_SEL_RB2_OVERFLOW_VF9', - 358: 'IH_PERF_SEL_RB2_OVERFLOW_VF10', - 359: 'IH_PERF_SEL_RB2_OVERFLOW_VF11', - 360: 'IH_PERF_SEL_RB2_OVERFLOW_VF12', - 361: 'IH_PERF_SEL_RB2_OVERFLOW_VF13', - 362: 'IH_PERF_SEL_RB2_OVERFLOW_VF14', - 363: 'IH_PERF_SEL_RB2_OVERFLOW_VF15', - 364: 'Reserved364', - 365: 'Reserved365', - 366: 'Reserved366', - 367: 'Reserved367', - 368: 'Reserved368', - 369: 'Reserved369', - 370: 'Reserved370', - 371: 'Reserved371', - 372: 'Reserved372', - 373: 'Reserved373', - 374: 'Reserved374', - 375: 'Reserved375', - 376: 'Reserved376', - 377: 'Reserved377', - 378: 'Reserved378', - 379: 'Reserved379', - 380: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF0', - 381: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF1', - 382: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF2', - 383: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF3', - 384: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF4', - 385: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF5', - 386: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF6', - 387: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF7', - 388: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF8', - 389: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF9', - 390: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF10', - 391: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF11', - 392: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF12', - 393: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF13', - 394: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF14', - 395: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF15', - 396: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF0', - 397: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF1', - 398: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF2', - 399: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF3', - 400: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF4', - 401: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF5', - 402: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF6', - 403: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF7', - 404: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF8', - 405: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF9', - 406: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF10', - 407: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF11', - 408: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF12', - 409: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF13', - 410: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF14', - 411: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF15', - 412: 'Reserved412', - 413: 'Reserved413', - 414: 'Reserved414', - 415: 'Reserved415', - 416: 'Reserved416', - 417: 'Reserved417', - 418: 'Reserved418', - 419: 'Reserved419', - 420: 'Reserved420', - 421: 'Reserved421', - 422: 'Reserved422', - 423: 'Reserved423', - 424: 'Reserved424', - 425: 'Reserved425', - 426: 'Reserved426', - 427: 'Reserved427', - 428: 'Reserved428', - 429: 'Reserved429', - 430: 'Reserved430', - 431: 'Reserved431', - 432: 'Reserved432', - 433: 'Reserved433', - 434: 'Reserved434', - 435: 'Reserved435', - 436: 'Reserved436', - 437: 'Reserved437', - 438: 'Reserved438', - 439: 'Reserved439', - 440: 'Reserved440', - 441: 'Reserved441', - 442: 'Reserved442', - 443: 'Reserved443', - 444: 'Reserved444', - 445: 'Reserved445', - 446: 'Reserved446', - 447: 'Reserved447', - 448: 'Reserved448', - 449: 'Reserved449', - 450: 'Reserved450', - 451: 'Reserved451', - 452: 'Reserved452', - 453: 'Reserved453', - 454: 'Reserved454', - 455: 'Reserved455', - 456: 'Reserved456', - 457: 'Reserved457', - 458: 'Reserved458', - 459: 'Reserved459', - 460: 'Reserved460', - 461: 'Reserved461', - 462: 'Reserved462', - 463: 'Reserved463', - 464: 'Reserved464', - 465: 'Reserved465', - 466: 'Reserved466', - 467: 'Reserved467', - 468: 'Reserved468', - 469: 'Reserved469', - 470: 'Reserved470', - 471: 'Reserved471', - 472: 'Reserved472', - 473: 'Reserved473', - 474: 'Reserved474', - 475: 'Reserved475', - 476: 'Reserved476', - 477: 'Reserved477', - 478: 'Reserved478', - 479: 'Reserved479', - 480: 'Reserved480', - 481: 'Reserved481', - 482: 'Reserved482', - 483: 'Reserved483', - 484: 'Reserved484', - 485: 'Reserved485', - 486: 'Reserved486', - 487: 'Reserved487', - 488: 'Reserved488', - 489: 'Reserved489', - 490: 'Reserved490', - 491: 'Reserved491', - 492: 'Reserved492', - 493: 'Reserved493', - 494: 'Reserved494', - 495: 'Reserved495', - 496: 'Reserved496', - 497: 'Reserved497', - 498: 'Reserved498', - 499: 'Reserved499', - 500: 'Reserved500', - 501: 'Reserved501', - 502: 'Reserved502', - 503: 'Reserved503', - 504: 'Reserved504', - 505: 'Reserved505', - 506: 'Reserved506', - 507: 'Reserved507', - 508: 'Reserved508', - 509: 'Reserved509', - 510: 'Reserved510', - 511: 'Reserved511', -} -IH_PERF_SEL_CYCLE = 0 -IH_PERF_SEL_IDLE = 1 -IH_PERF_SEL_INPUT_IDLE = 2 -IH_PERF_SEL_BUFFER_IDLE = 3 -IH_PERF_SEL_RB0_FULL = 4 -IH_PERF_SEL_RB0_OVERFLOW = 5 -IH_PERF_SEL_RB0_WPTR_WRITEBACK = 6 -IH_PERF_SEL_RB0_WPTR_WRAP = 7 -IH_PERF_SEL_RB0_RPTR_WRAP = 8 -IH_PERF_SEL_MC_WR_IDLE = 9 -IH_PERF_SEL_MC_WR_COUNT = 10 -IH_PERF_SEL_MC_WR_STALL = 11 -IH_PERF_SEL_MC_WR_CLEAN_PENDING = 12 -IH_PERF_SEL_MC_WR_CLEAN_STALL = 13 -IH_PERF_SEL_BIF_LINE0_RISING = 14 -IH_PERF_SEL_BIF_LINE0_FALLING = 15 -IH_PERF_SEL_RB1_FULL = 16 -IH_PERF_SEL_RB1_OVERFLOW = 17 -Reserved18 = 18 -IH_PERF_SEL_RB1_WPTR_WRAP = 19 -IH_PERF_SEL_RB1_RPTR_WRAP = 20 -IH_PERF_SEL_RB2_FULL = 21 -IH_PERF_SEL_RB2_OVERFLOW = 22 -Reserved23 = 23 -IH_PERF_SEL_RB2_WPTR_WRAP = 24 -IH_PERF_SEL_RB2_RPTR_WRAP = 25 -Reserved26 = 26 -Reserved27 = 27 -Reserved28 = 28 -Reserved29 = 29 -IH_PERF_SEL_RB0_FULL_VF0 = 30 -IH_PERF_SEL_RB0_FULL_VF1 = 31 -IH_PERF_SEL_RB0_FULL_VF2 = 32 -IH_PERF_SEL_RB0_FULL_VF3 = 33 -IH_PERF_SEL_RB0_FULL_VF4 = 34 -IH_PERF_SEL_RB0_FULL_VF5 = 35 -IH_PERF_SEL_RB0_FULL_VF6 = 36 -IH_PERF_SEL_RB0_FULL_VF7 = 37 -IH_PERF_SEL_RB0_FULL_VF8 = 38 -IH_PERF_SEL_RB0_FULL_VF9 = 39 -IH_PERF_SEL_RB0_FULL_VF10 = 40 -IH_PERF_SEL_RB0_FULL_VF11 = 41 -IH_PERF_SEL_RB0_FULL_VF12 = 42 -IH_PERF_SEL_RB0_FULL_VF13 = 43 -IH_PERF_SEL_RB0_FULL_VF14 = 44 -IH_PERF_SEL_RB0_FULL_VF15 = 45 -IH_PERF_SEL_RB0_OVERFLOW_VF0 = 46 -IH_PERF_SEL_RB0_OVERFLOW_VF1 = 47 -IH_PERF_SEL_RB0_OVERFLOW_VF2 = 48 -IH_PERF_SEL_RB0_OVERFLOW_VF3 = 49 -IH_PERF_SEL_RB0_OVERFLOW_VF4 = 50 -IH_PERF_SEL_RB0_OVERFLOW_VF5 = 51 -IH_PERF_SEL_RB0_OVERFLOW_VF6 = 52 -IH_PERF_SEL_RB0_OVERFLOW_VF7 = 53 -IH_PERF_SEL_RB0_OVERFLOW_VF8 = 54 -IH_PERF_SEL_RB0_OVERFLOW_VF9 = 55 -IH_PERF_SEL_RB0_OVERFLOW_VF10 = 56 -IH_PERF_SEL_RB0_OVERFLOW_VF11 = 57 -IH_PERF_SEL_RB0_OVERFLOW_VF12 = 58 -IH_PERF_SEL_RB0_OVERFLOW_VF13 = 59 -IH_PERF_SEL_RB0_OVERFLOW_VF14 = 60 -IH_PERF_SEL_RB0_OVERFLOW_VF15 = 61 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF0 = 62 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF1 = 63 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF2 = 64 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF3 = 65 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF4 = 66 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF5 = 67 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF6 = 68 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF7 = 69 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF8 = 70 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF9 = 71 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF10 = 72 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF11 = 73 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF12 = 74 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF13 = 75 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF14 = 76 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF15 = 77 -IH_PERF_SEL_RB0_WPTR_WRAP_VF0 = 78 -IH_PERF_SEL_RB0_WPTR_WRAP_VF1 = 79 -IH_PERF_SEL_RB0_WPTR_WRAP_VF2 = 80 -IH_PERF_SEL_RB0_WPTR_WRAP_VF3 = 81 -IH_PERF_SEL_RB0_WPTR_WRAP_VF4 = 82 -IH_PERF_SEL_RB0_WPTR_WRAP_VF5 = 83 -IH_PERF_SEL_RB0_WPTR_WRAP_VF6 = 84 -IH_PERF_SEL_RB0_WPTR_WRAP_VF7 = 85 -IH_PERF_SEL_RB0_WPTR_WRAP_VF8 = 86 -IH_PERF_SEL_RB0_WPTR_WRAP_VF9 = 87 -IH_PERF_SEL_RB0_WPTR_WRAP_VF10 = 88 -IH_PERF_SEL_RB0_WPTR_WRAP_VF11 = 89 -IH_PERF_SEL_RB0_WPTR_WRAP_VF12 = 90 -IH_PERF_SEL_RB0_WPTR_WRAP_VF13 = 91 -IH_PERF_SEL_RB0_WPTR_WRAP_VF14 = 92 -IH_PERF_SEL_RB0_WPTR_WRAP_VF15 = 93 -IH_PERF_SEL_RB0_RPTR_WRAP_VF0 = 94 -IH_PERF_SEL_RB0_RPTR_WRAP_VF1 = 95 -IH_PERF_SEL_RB0_RPTR_WRAP_VF2 = 96 -IH_PERF_SEL_RB0_RPTR_WRAP_VF3 = 97 -IH_PERF_SEL_RB0_RPTR_WRAP_VF4 = 98 -IH_PERF_SEL_RB0_RPTR_WRAP_VF5 = 99 -IH_PERF_SEL_RB0_RPTR_WRAP_VF6 = 100 -IH_PERF_SEL_RB0_RPTR_WRAP_VF7 = 101 -IH_PERF_SEL_RB0_RPTR_WRAP_VF8 = 102 -IH_PERF_SEL_RB0_RPTR_WRAP_VF9 = 103 -IH_PERF_SEL_RB0_RPTR_WRAP_VF10 = 104 -IH_PERF_SEL_RB0_RPTR_WRAP_VF11 = 105 -IH_PERF_SEL_RB0_RPTR_WRAP_VF12 = 106 -IH_PERF_SEL_RB0_RPTR_WRAP_VF13 = 107 -IH_PERF_SEL_RB0_RPTR_WRAP_VF14 = 108 -IH_PERF_SEL_RB0_RPTR_WRAP_VF15 = 109 -IH_PERF_SEL_BIF_LINE0_RISING_VF0 = 110 -IH_PERF_SEL_BIF_LINE0_RISING_VF1 = 111 -IH_PERF_SEL_BIF_LINE0_RISING_VF2 = 112 -IH_PERF_SEL_BIF_LINE0_RISING_VF3 = 113 -IH_PERF_SEL_BIF_LINE0_RISING_VF4 = 114 -IH_PERF_SEL_BIF_LINE0_RISING_VF5 = 115 -IH_PERF_SEL_BIF_LINE0_RISING_VF6 = 116 -IH_PERF_SEL_BIF_LINE0_RISING_VF7 = 117 -IH_PERF_SEL_BIF_LINE0_RISING_VF8 = 118 -IH_PERF_SEL_BIF_LINE0_RISING_VF9 = 119 -IH_PERF_SEL_BIF_LINE0_RISING_VF10 = 120 -IH_PERF_SEL_BIF_LINE0_RISING_VF11 = 121 -IH_PERF_SEL_BIF_LINE0_RISING_VF12 = 122 -IH_PERF_SEL_BIF_LINE0_RISING_VF13 = 123 -IH_PERF_SEL_BIF_LINE0_RISING_VF14 = 124 -IH_PERF_SEL_BIF_LINE0_RISING_VF15 = 125 -IH_PERF_SEL_BIF_LINE0_FALLING_VF0 = 126 -IH_PERF_SEL_BIF_LINE0_FALLING_VF1 = 127 -IH_PERF_SEL_BIF_LINE0_FALLING_VF2 = 128 -IH_PERF_SEL_BIF_LINE0_FALLING_VF3 = 129 -IH_PERF_SEL_BIF_LINE0_FALLING_VF4 = 130 -IH_PERF_SEL_BIF_LINE0_FALLING_VF5 = 131 -IH_PERF_SEL_BIF_LINE0_FALLING_VF6 = 132 -IH_PERF_SEL_BIF_LINE0_FALLING_VF7 = 133 -IH_PERF_SEL_BIF_LINE0_FALLING_VF8 = 134 -IH_PERF_SEL_BIF_LINE0_FALLING_VF9 = 135 -IH_PERF_SEL_BIF_LINE0_FALLING_VF10 = 136 -IH_PERF_SEL_BIF_LINE0_FALLING_VF11 = 137 -IH_PERF_SEL_BIF_LINE0_FALLING_VF12 = 138 -IH_PERF_SEL_BIF_LINE0_FALLING_VF13 = 139 -IH_PERF_SEL_BIF_LINE0_FALLING_VF14 = 140 -IH_PERF_SEL_BIF_LINE0_FALLING_VF15 = 141 -Reserved142 = 142 -Reserved143 = 143 -Reserved144 = 144 -Reserved145 = 145 -Reserved146 = 146 -Reserved147 = 147 -Reserved148 = 148 -Reserved149 = 149 -IH_PERF_SEL_CLIENT0_INT = 150 -IH_PERF_SEL_CLIENT1_INT = 151 -IH_PERF_SEL_CLIENT2_INT = 152 -IH_PERF_SEL_CLIENT3_INT = 153 -IH_PERF_SEL_CLIENT4_INT = 154 -IH_PERF_SEL_CLIENT5_INT = 155 -IH_PERF_SEL_CLIENT6_INT = 156 -IH_PERF_SEL_CLIENT7_INT = 157 -IH_PERF_SEL_CLIENT8_INT = 158 -IH_PERF_SEL_CLIENT9_INT = 159 -IH_PERF_SEL_CLIENT10_INT = 160 -IH_PERF_SEL_CLIENT11_INT = 161 -IH_PERF_SEL_CLIENT12_INT = 162 -IH_PERF_SEL_CLIENT13_INT = 163 -IH_PERF_SEL_CLIENT14_INT = 164 -IH_PERF_SEL_CLIENT15_INT = 165 -IH_PERF_SEL_CLIENT16_INT = 166 -IH_PERF_SEL_CLIENT17_INT = 167 -IH_PERF_SEL_CLIENT18_INT = 168 -IH_PERF_SEL_CLIENT19_INT = 169 -IH_PERF_SEL_CLIENT20_INT = 170 -IH_PERF_SEL_CLIENT21_INT = 171 -IH_PERF_SEL_CLIENT22_INT = 172 -IH_PERF_SEL_CLIENT23_INT = 173 -IH_PERF_SEL_CLIENT24_INT = 174 -IH_PERF_SEL_CLIENT25_INT = 175 -IH_PERF_SEL_CLIENT26_INT = 176 -IH_PERF_SEL_CLIENT27_INT = 177 -IH_PERF_SEL_CLIENT28_INT = 178 -IH_PERF_SEL_CLIENT29_INT = 179 -IH_PERF_SEL_CLIENT30_INT = 180 -IH_PERF_SEL_CLIENT31_INT = 181 -Reserved182 = 182 -Reserved183 = 183 -Reserved184 = 184 -Reserved185 = 185 -Reserved186 = 186 -Reserved187 = 187 -Reserved188 = 188 -Reserved189 = 189 -Reserved190 = 190 -Reserved191 = 191 -Reserved192 = 192 -Reserved193 = 193 -Reserved194 = 194 -Reserved195 = 195 -Reserved196 = 196 -Reserved197 = 197 -Reserved198 = 198 -Reserved199 = 199 -Reserved200 = 200 -Reserved201 = 201 -Reserved202 = 202 -Reserved203 = 203 -Reserved204 = 204 -Reserved205 = 205 -Reserved206 = 206 -Reserved207 = 207 -Reserved208 = 208 -Reserved209 = 209 -Reserved210 = 210 -Reserved211 = 211 -Reserved212 = 212 -Reserved213 = 213 -Reserved214 = 214 -Reserved215 = 215 -Reserved216 = 216 -Reserved217 = 217 -Reserved218 = 218 -Reserved219 = 219 -IH_PERF_SEL_RB1_FULL_VF0 = 220 -IH_PERF_SEL_RB1_FULL_VF1 = 221 -IH_PERF_SEL_RB1_FULL_VF2 = 222 -IH_PERF_SEL_RB1_FULL_VF3 = 223 -IH_PERF_SEL_RB1_FULL_VF4 = 224 -IH_PERF_SEL_RB1_FULL_VF5 = 225 -IH_PERF_SEL_RB1_FULL_VF6 = 226 -IH_PERF_SEL_RB1_FULL_VF7 = 227 -IH_PERF_SEL_RB1_FULL_VF8 = 228 -IH_PERF_SEL_RB1_FULL_VF9 = 229 -IH_PERF_SEL_RB1_FULL_VF10 = 230 -IH_PERF_SEL_RB1_FULL_VF11 = 231 -IH_PERF_SEL_RB1_FULL_VF12 = 232 -IH_PERF_SEL_RB1_FULL_VF13 = 233 -IH_PERF_SEL_RB1_FULL_VF14 = 234 -IH_PERF_SEL_RB1_FULL_VF15 = 235 -IH_PERF_SEL_RB1_OVERFLOW_VF0 = 236 -IH_PERF_SEL_RB1_OVERFLOW_VF1 = 237 -IH_PERF_SEL_RB1_OVERFLOW_VF2 = 238 -IH_PERF_SEL_RB1_OVERFLOW_VF3 = 239 -IH_PERF_SEL_RB1_OVERFLOW_VF4 = 240 -IH_PERF_SEL_RB1_OVERFLOW_VF5 = 241 -IH_PERF_SEL_RB1_OVERFLOW_VF6 = 242 -IH_PERF_SEL_RB1_OVERFLOW_VF7 = 243 -IH_PERF_SEL_RB1_OVERFLOW_VF8 = 244 -IH_PERF_SEL_RB1_OVERFLOW_VF9 = 245 -IH_PERF_SEL_RB1_OVERFLOW_VF10 = 246 -IH_PERF_SEL_RB1_OVERFLOW_VF11 = 247 -IH_PERF_SEL_RB1_OVERFLOW_VF12 = 248 -IH_PERF_SEL_RB1_OVERFLOW_VF13 = 249 -IH_PERF_SEL_RB1_OVERFLOW_VF14 = 250 -IH_PERF_SEL_RB1_OVERFLOW_VF15 = 251 -Reserved252 = 252 -Reserved253 = 253 -Reserved254 = 254 -Reserved255 = 255 -Reserved256 = 256 -Reserved257 = 257 -Reserved258 = 258 -Reserved259 = 259 -Reserved260 = 260 -Reserved261 = 261 -Reserved262 = 262 -Reserved263 = 263 -Reserved264 = 264 -Reserved265 = 265 -Reserved266 = 266 -Reserved267 = 267 -IH_PERF_SEL_RB1_WPTR_WRAP_VF0 = 268 -IH_PERF_SEL_RB1_WPTR_WRAP_VF1 = 269 -IH_PERF_SEL_RB1_WPTR_WRAP_VF2 = 270 -IH_PERF_SEL_RB1_WPTR_WRAP_VF3 = 271 -IH_PERF_SEL_RB1_WPTR_WRAP_VF4 = 272 -IH_PERF_SEL_RB1_WPTR_WRAP_VF5 = 273 -IH_PERF_SEL_RB1_WPTR_WRAP_VF6 = 274 -IH_PERF_SEL_RB1_WPTR_WRAP_VF7 = 275 -IH_PERF_SEL_RB1_WPTR_WRAP_VF8 = 276 -IH_PERF_SEL_RB1_WPTR_WRAP_VF9 = 277 -IH_PERF_SEL_RB1_WPTR_WRAP_VF10 = 278 -IH_PERF_SEL_RB1_WPTR_WRAP_VF11 = 279 -IH_PERF_SEL_RB1_WPTR_WRAP_VF12 = 280 -IH_PERF_SEL_RB1_WPTR_WRAP_VF13 = 281 -IH_PERF_SEL_RB1_WPTR_WRAP_VF14 = 282 -IH_PERF_SEL_RB1_WPTR_WRAP_VF15 = 283 -IH_PERF_SEL_RB1_RPTR_WRAP_VF0 = 284 -IH_PERF_SEL_RB1_RPTR_WRAP_VF1 = 285 -IH_PERF_SEL_RB1_RPTR_WRAP_VF2 = 286 -IH_PERF_SEL_RB1_RPTR_WRAP_VF3 = 287 -IH_PERF_SEL_RB1_RPTR_WRAP_VF4 = 288 -IH_PERF_SEL_RB1_RPTR_WRAP_VF5 = 289 -IH_PERF_SEL_RB1_RPTR_WRAP_VF6 = 290 -IH_PERF_SEL_RB1_RPTR_WRAP_VF7 = 291 -IH_PERF_SEL_RB1_RPTR_WRAP_VF8 = 292 -IH_PERF_SEL_RB1_RPTR_WRAP_VF9 = 293 -IH_PERF_SEL_RB1_RPTR_WRAP_VF10 = 294 -IH_PERF_SEL_RB1_RPTR_WRAP_VF11 = 295 -IH_PERF_SEL_RB1_RPTR_WRAP_VF12 = 296 -IH_PERF_SEL_RB1_RPTR_WRAP_VF13 = 297 -IH_PERF_SEL_RB1_RPTR_WRAP_VF14 = 298 -IH_PERF_SEL_RB1_RPTR_WRAP_VF15 = 299 -Reserved300 = 300 -Reserved301 = 301 -Reserved302 = 302 -Reserved303 = 303 -Reserved304 = 304 -Reserved305 = 305 -Reserved306 = 306 -Reserved307 = 307 -Reserved308 = 308 -Reserved309 = 309 -Reserved310 = 310 -Reserved311 = 311 -Reserved312 = 312 -Reserved313 = 313 -Reserved314 = 314 -Reserved315 = 315 -Reserved316 = 316 -Reserved317 = 317 -Reserved318 = 318 -Reserved319 = 319 -Reserved320 = 320 -Reserved321 = 321 -Reserved322 = 322 -Reserved323 = 323 -Reserved324 = 324 -Reserved325 = 325 -Reserved326 = 326 -Reserved327 = 327 -Reserved328 = 328 -Reserved329 = 329 -Reserved330 = 330 -Reserved331 = 331 -IH_PERF_SEL_RB2_FULL_VF0 = 332 -IH_PERF_SEL_RB2_FULL_VF1 = 333 -IH_PERF_SEL_RB2_FULL_VF2 = 334 -IH_PERF_SEL_RB2_FULL_VF3 = 335 -IH_PERF_SEL_RB2_FULL_VF4 = 336 -IH_PERF_SEL_RB2_FULL_VF5 = 337 -IH_PERF_SEL_RB2_FULL_VF6 = 338 -IH_PERF_SEL_RB2_FULL_VF7 = 339 -IH_PERF_SEL_RB2_FULL_VF8 = 340 -IH_PERF_SEL_RB2_FULL_VF9 = 341 -IH_PERF_SEL_RB2_FULL_VF10 = 342 -IH_PERF_SEL_RB2_FULL_VF11 = 343 -IH_PERF_SEL_RB2_FULL_VF12 = 344 -IH_PERF_SEL_RB2_FULL_VF13 = 345 -IH_PERF_SEL_RB2_FULL_VF14 = 346 -IH_PERF_SEL_RB2_FULL_VF15 = 347 -IH_PERF_SEL_RB2_OVERFLOW_VF0 = 348 -IH_PERF_SEL_RB2_OVERFLOW_VF1 = 349 -IH_PERF_SEL_RB2_OVERFLOW_VF2 = 350 -IH_PERF_SEL_RB2_OVERFLOW_VF3 = 351 -IH_PERF_SEL_RB2_OVERFLOW_VF4 = 352 -IH_PERF_SEL_RB2_OVERFLOW_VF5 = 353 -IH_PERF_SEL_RB2_OVERFLOW_VF6 = 354 -IH_PERF_SEL_RB2_OVERFLOW_VF7 = 355 -IH_PERF_SEL_RB2_OVERFLOW_VF8 = 356 -IH_PERF_SEL_RB2_OVERFLOW_VF9 = 357 -IH_PERF_SEL_RB2_OVERFLOW_VF10 = 358 -IH_PERF_SEL_RB2_OVERFLOW_VF11 = 359 -IH_PERF_SEL_RB2_OVERFLOW_VF12 = 360 -IH_PERF_SEL_RB2_OVERFLOW_VF13 = 361 -IH_PERF_SEL_RB2_OVERFLOW_VF14 = 362 -IH_PERF_SEL_RB2_OVERFLOW_VF15 = 363 -Reserved364 = 364 -Reserved365 = 365 -Reserved366 = 366 -Reserved367 = 367 -Reserved368 = 368 -Reserved369 = 369 -Reserved370 = 370 -Reserved371 = 371 -Reserved372 = 372 -Reserved373 = 373 -Reserved374 = 374 -Reserved375 = 375 -Reserved376 = 376 -Reserved377 = 377 -Reserved378 = 378 -Reserved379 = 379 -IH_PERF_SEL_RB2_WPTR_WRAP_VF0 = 380 -IH_PERF_SEL_RB2_WPTR_WRAP_VF1 = 381 -IH_PERF_SEL_RB2_WPTR_WRAP_VF2 = 382 -IH_PERF_SEL_RB2_WPTR_WRAP_VF3 = 383 -IH_PERF_SEL_RB2_WPTR_WRAP_VF4 = 384 -IH_PERF_SEL_RB2_WPTR_WRAP_VF5 = 385 -IH_PERF_SEL_RB2_WPTR_WRAP_VF6 = 386 -IH_PERF_SEL_RB2_WPTR_WRAP_VF7 = 387 -IH_PERF_SEL_RB2_WPTR_WRAP_VF8 = 388 -IH_PERF_SEL_RB2_WPTR_WRAP_VF9 = 389 -IH_PERF_SEL_RB2_WPTR_WRAP_VF10 = 390 -IH_PERF_SEL_RB2_WPTR_WRAP_VF11 = 391 -IH_PERF_SEL_RB2_WPTR_WRAP_VF12 = 392 -IH_PERF_SEL_RB2_WPTR_WRAP_VF13 = 393 -IH_PERF_SEL_RB2_WPTR_WRAP_VF14 = 394 -IH_PERF_SEL_RB2_WPTR_WRAP_VF15 = 395 -IH_PERF_SEL_RB2_RPTR_WRAP_VF0 = 396 -IH_PERF_SEL_RB2_RPTR_WRAP_VF1 = 397 -IH_PERF_SEL_RB2_RPTR_WRAP_VF2 = 398 -IH_PERF_SEL_RB2_RPTR_WRAP_VF3 = 399 -IH_PERF_SEL_RB2_RPTR_WRAP_VF4 = 400 -IH_PERF_SEL_RB2_RPTR_WRAP_VF5 = 401 -IH_PERF_SEL_RB2_RPTR_WRAP_VF6 = 402 -IH_PERF_SEL_RB2_RPTR_WRAP_VF7 = 403 -IH_PERF_SEL_RB2_RPTR_WRAP_VF8 = 404 -IH_PERF_SEL_RB2_RPTR_WRAP_VF9 = 405 -IH_PERF_SEL_RB2_RPTR_WRAP_VF10 = 406 -IH_PERF_SEL_RB2_RPTR_WRAP_VF11 = 407 -IH_PERF_SEL_RB2_RPTR_WRAP_VF12 = 408 -IH_PERF_SEL_RB2_RPTR_WRAP_VF13 = 409 -IH_PERF_SEL_RB2_RPTR_WRAP_VF14 = 410 -IH_PERF_SEL_RB2_RPTR_WRAP_VF15 = 411 -Reserved412 = 412 -Reserved413 = 413 -Reserved414 = 414 -Reserved415 = 415 -Reserved416 = 416 -Reserved417 = 417 -Reserved418 = 418 -Reserved419 = 419 -Reserved420 = 420 -Reserved421 = 421 -Reserved422 = 422 -Reserved423 = 423 -Reserved424 = 424 -Reserved425 = 425 -Reserved426 = 426 -Reserved427 = 427 -Reserved428 = 428 -Reserved429 = 429 -Reserved430 = 430 -Reserved431 = 431 -Reserved432 = 432 -Reserved433 = 433 -Reserved434 = 434 -Reserved435 = 435 -Reserved436 = 436 -Reserved437 = 437 -Reserved438 = 438 -Reserved439 = 439 -Reserved440 = 440 -Reserved441 = 441 -Reserved442 = 442 -Reserved443 = 443 -Reserved444 = 444 -Reserved445 = 445 -Reserved446 = 446 -Reserved447 = 447 -Reserved448 = 448 -Reserved449 = 449 -Reserved450 = 450 -Reserved451 = 451 -Reserved452 = 452 -Reserved453 = 453 -Reserved454 = 454 -Reserved455 = 455 -Reserved456 = 456 -Reserved457 = 457 -Reserved458 = 458 -Reserved459 = 459 -Reserved460 = 460 -Reserved461 = 461 -Reserved462 = 462 -Reserved463 = 463 -Reserved464 = 464 -Reserved465 = 465 -Reserved466 = 466 -Reserved467 = 467 -Reserved468 = 468 -Reserved469 = 469 -Reserved470 = 470 -Reserved471 = 471 -Reserved472 = 472 -Reserved473 = 473 -Reserved474 = 474 -Reserved475 = 475 -Reserved476 = 476 -Reserved477 = 477 -Reserved478 = 478 -Reserved479 = 479 -Reserved480 = 480 -Reserved481 = 481 -Reserved482 = 482 -Reserved483 = 483 -Reserved484 = 484 -Reserved485 = 485 -Reserved486 = 486 -Reserved487 = 487 -Reserved488 = 488 -Reserved489 = 489 -Reserved490 = 490 -Reserved491 = 491 -Reserved492 = 492 -Reserved493 = 493 -Reserved494 = 494 -Reserved495 = 495 -Reserved496 = 496 -Reserved497 = 497 -Reserved498 = 498 -Reserved499 = 499 -Reserved500 = 500 -Reserved501 = 501 -Reserved502 = 502 -Reserved503 = 503 -Reserved504 = 504 -Reserved505 = 505 -Reserved506 = 506 -Reserved507 = 507 -Reserved508 = 508 -Reserved509 = 509 -Reserved510 = 510 -Reserved511 = 511 -IH_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SEM_PERF_SEL' -SEM_PERF_SEL__enumvalues = { - 0: 'SEM_PERF_SEL_CYCLE', - 1: 'SEM_PERF_SEL_IDLE', - 2: 'SEM_PERF_SEL_SDMA0_REQ_SIGNAL', - 3: 'SEM_PERF_SEL_SDMA1_REQ_SIGNAL', - 4: 'SEM_PERF_SEL_UVD_REQ_SIGNAL', - 5: 'SEM_PERF_SEL_VCE0_REQ_SIGNAL', - 6: 'SEM_PERF_SEL_ACP_REQ_SIGNAL', - 7: 'SEM_PERF_SEL_ISP_REQ_SIGNAL', - 8: 'SEM_PERF_SEL_VCE1_REQ_SIGNAL', - 9: 'SEM_PERF_SEL_VP8_REQ_SIGNAL', - 10: 'SEM_PERF_SEL_CPG_E0_REQ_SIGNAL', - 11: 'SEM_PERF_SEL_CPG_E1_REQ_SIGNAL', - 12: 'SEM_PERF_SEL_CPC1_IMME_E0_REQ_SIGNAL', - 13: 'SEM_PERF_SEL_CPC1_IMME_E1_REQ_SIGNAL', - 14: 'SEM_PERF_SEL_CPC1_IMME_E2_REQ_SIGNAL', - 15: 'SEM_PERF_SEL_CPC1_IMME_E3_REQ_SIGNAL', - 16: 'SEM_PERF_SEL_CPC2_IMME_E0_REQ_SIGNAL', - 17: 'SEM_PERF_SEL_CPC2_IMME_E1_REQ_SIGNAL', - 18: 'SEM_PERF_SEL_CPC2_IMME_E2_REQ_SIGNAL', - 19: 'SEM_PERF_SEL_CPC2_IMME_E3_REQ_SIGNAL', - 20: 'SEM_PERF_SEL_SDMA0_REQ_WAIT', - 21: 'SEM_PERF_SEL_SDMA1_REQ_WAIT', - 22: 'SEM_PERF_SEL_UVD_REQ_WAIT', - 23: 'SEM_PERF_SEL_VCE0_REQ_WAIT', - 24: 'SEM_PERF_SEL_ACP_REQ_WAIT', - 25: 'SEM_PERF_SEL_ISP_REQ_WAIT', - 26: 'SEM_PERF_SEL_VCE1_REQ_WAIT', - 27: 'SEM_PERF_SEL_VP8_REQ_WAIT', - 28: 'SEM_PERF_SEL_CPG_E0_REQ_WAIT', - 29: 'SEM_PERF_SEL_CPG_E1_REQ_WAIT', - 30: 'SEM_PERF_SEL_CPC1_IMME_E0_REQ_WAIT', - 31: 'SEM_PERF_SEL_CPC1_IMME_E1_REQ_WAIT', - 32: 'SEM_PERF_SEL_CPC1_IMME_E2_REQ_WAIT', - 33: 'SEM_PERF_SEL_CPC1_IMME_E3_REQ_WAIT', - 34: 'SEM_PERF_SEL_CPC2_IMME_E0_REQ_WAIT', - 35: 'SEM_PERF_SEL_CPC2_IMME_E1_REQ_WAIT', - 36: 'SEM_PERF_SEL_CPC2_IMME_E2_REQ_WAIT', - 37: 'SEM_PERF_SEL_CPC2_IMME_E3_REQ_WAIT', - 38: 'SEM_PERF_SEL_CPC1_OFFL_E0_REQ_WAIT', - 39: 'SEM_PERF_SEL_CPC1_OFFL_E1_REQ_WAIT', - 40: 'SEM_PERF_SEL_CPC1_OFFL_E2_REQ_WAIT', - 41: 'SEM_PERF_SEL_CPC1_OFFL_E3_REQ_WAIT', - 42: 'SEM_PERF_SEL_CPC1_OFFL_E4_REQ_WAIT', - 43: 'SEM_PERF_SEL_CPC1_OFFL_E5_REQ_WAIT', - 44: 'SEM_PERF_SEL_CPC1_OFFL_E6_REQ_WAIT', - 45: 'SEM_PERF_SEL_CPC1_OFFL_E7_REQ_WAIT', - 46: 'SEM_PERF_SEL_CPC1_OFFL_E8_REQ_WAIT', - 47: 'SEM_PERF_SEL_CPC1_OFFL_E9_REQ_WAIT', - 48: 'SEM_PERF_SEL_CPC1_OFFL_E10_REQ_WAIT', - 49: 'SEM_PERF_SEL_CPC1_OFFL_E11_REQ_WAIT', - 50: 'SEM_PERF_SEL_CPC1_OFFL_E12_REQ_WAIT', - 51: 'SEM_PERF_SEL_CPC1_OFFL_E13_REQ_WAIT', - 52: 'SEM_PERF_SEL_CPC1_OFFL_E14_REQ_WAIT', - 53: 'SEM_PERF_SEL_CPC1_OFFL_E15_REQ_WAIT', - 54: 'SEM_PERF_SEL_CPC1_OFFL_E16_REQ_WAIT', - 55: 'SEM_PERF_SEL_CPC1_OFFL_E17_REQ_WAIT', - 56: 'SEM_PERF_SEL_CPC1_OFFL_E18_REQ_WAIT', - 57: 'SEM_PERF_SEL_CPC1_OFFL_E19_REQ_WAIT', - 58: 'SEM_PERF_SEL_CPC1_OFFL_E20_REQ_WAIT', - 59: 'SEM_PERF_SEL_CPC1_OFFL_E21_REQ_WAIT', - 60: 'SEM_PERF_SEL_CPC1_OFFL_E22_REQ_WAIT', - 61: 'SEM_PERF_SEL_CPC1_OFFL_E23_REQ_WAIT', - 62: 'SEM_PERF_SEL_CPC1_OFFL_E24_REQ_WAIT', - 63: 'SEM_PERF_SEL_CPC1_OFFL_E25_REQ_WAIT', - 64: 'SEM_PERF_SEL_CPC1_OFFL_E26_REQ_WAIT', - 65: 'SEM_PERF_SEL_CPC1_OFFL_E27_REQ_WAIT', - 66: 'SEM_PERF_SEL_CPC1_OFFL_E28_REQ_WAIT', - 67: 'SEM_PERF_SEL_CPC1_OFFL_E29_REQ_WAIT', - 68: 'SEM_PERF_SEL_CPC1_OFFL_E30_REQ_WAIT', - 69: 'SEM_PERF_SEL_CPC1_OFFL_E31_REQ_WAIT', - 70: 'SEM_PERF_SEL_CPC2_OFFL_E0_REQ_WAIT', - 71: 'SEM_PERF_SEL_CPC2_OFFL_E1_REQ_WAIT', - 72: 'SEM_PERF_SEL_CPC2_OFFL_E2_REQ_WAIT', - 73: 'SEM_PERF_SEL_CPC2_OFFL_E3_REQ_WAIT', - 74: 'SEM_PERF_SEL_CPC2_OFFL_E4_REQ_WAIT', - 75: 'SEM_PERF_SEL_CPC2_OFFL_E5_REQ_WAIT', - 76: 'SEM_PERF_SEL_CPC2_OFFL_E6_REQ_WAIT', - 77: 'SEM_PERF_SEL_CPC2_OFFL_E7_REQ_WAIT', - 78: 'SEM_PERF_SEL_CPC2_OFFL_E8_REQ_WAIT', - 79: 'SEM_PERF_SEL_CPC2_OFFL_E9_REQ_WAIT', - 80: 'SEM_PERF_SEL_CPC2_OFFL_E10_REQ_WAIT', - 81: 'SEM_PERF_SEL_CPC2_OFFL_E11_REQ_WAIT', - 82: 'SEM_PERF_SEL_CPC2_OFFL_E12_REQ_WAIT', - 83: 'SEM_PERF_SEL_CPC2_OFFL_E13_REQ_WAIT', - 84: 'SEM_PERF_SEL_CPC2_OFFL_E14_REQ_WAIT', - 85: 'SEM_PERF_SEL_CPC2_OFFL_E15_REQ_WAIT', - 86: 'SEM_PERF_SEL_CPC2_OFFL_E16_REQ_WAIT', - 87: 'SEM_PERF_SEL_CPC2_OFFL_E17_REQ_WAIT', - 88: 'SEM_PERF_SEL_CPC2_OFFL_E18_REQ_WAIT', - 89: 'SEM_PERF_SEL_CPC2_OFFL_E19_REQ_WAIT', - 90: 'SEM_PERF_SEL_CPC2_OFFL_E20_REQ_WAIT', - 91: 'SEM_PERF_SEL_CPC2_OFFL_E21_REQ_WAIT', - 92: 'SEM_PERF_SEL_CPC2_OFFL_E22_REQ_WAIT', - 93: 'SEM_PERF_SEL_CPC2_OFFL_E23_REQ_WAIT', - 94: 'SEM_PERF_SEL_CPC2_OFFL_E24_REQ_WAIT', - 95: 'SEM_PERF_SEL_CPC2_OFFL_E25_REQ_WAIT', - 96: 'SEM_PERF_SEL_CPC2_OFFL_E26_REQ_WAIT', - 97: 'SEM_PERF_SEL_CPC2_OFFL_E27_REQ_WAIT', - 98: 'SEM_PERF_SEL_CPC2_OFFL_E28_REQ_WAIT', - 99: 'SEM_PERF_SEL_CPC2_OFFL_E29_REQ_WAIT', - 100: 'SEM_PERF_SEL_CPC2_OFFL_E30_REQ_WAIT', - 101: 'SEM_PERF_SEL_CPC2_OFFL_E31_REQ_WAIT', - 102: 'SEM_PERF_SEL_CPC1_OFFL_E0_POLL_WAIT', - 103: 'SEM_PERF_SEL_CPC1_OFFL_E1_POLL_WAIT', - 104: 'SEM_PERF_SEL_CPC1_OFFL_E2_POLL_WAIT', - 105: 'SEM_PERF_SEL_CPC1_OFFL_E3_POLL_WAIT', - 106: 'SEM_PERF_SEL_CPC1_OFFL_E4_POLL_WAIT', - 107: 'SEM_PERF_SEL_CPC1_OFFL_E5_POLL_WAIT', - 108: 'SEM_PERF_SEL_CPC1_OFFL_E6_POLL_WAIT', - 109: 'SEM_PERF_SEL_CPC1_OFFL_E7_POLL_WAIT', - 110: 'SEM_PERF_SEL_CPC1_OFFL_E8_POLL_WAIT', - 111: 'SEM_PERF_SEL_CPC1_OFFL_E9_POLL_WAIT', - 112: 'SEM_PERF_SEL_CPC1_OFFL_E10_POLL_WAIT', - 113: 'SEM_PERF_SEL_CPC1_OFFL_E11_POLL_WAIT', - 114: 'SEM_PERF_SEL_CPC1_OFFL_E12_POLL_WAIT', - 115: 'SEM_PERF_SEL_CPC1_OFFL_E13_POLL_WAIT', - 116: 'SEM_PERF_SEL_CPC1_OFFL_E14_POLL_WAIT', - 117: 'SEM_PERF_SEL_CPC1_OFFL_E15_POLL_WAIT', - 118: 'SEM_PERF_SEL_CPC1_OFFL_E16_POLL_WAIT', - 119: 'SEM_PERF_SEL_CPC1_OFFL_E17_POLL_WAIT', - 120: 'SEM_PERF_SEL_CPC1_OFFL_E18_POLL_WAIT', - 121: 'SEM_PERF_SEL_CPC1_OFFL_E19_POLL_WAIT', - 122: 'SEM_PERF_SEL_CPC1_OFFL_E20_POLL_WAIT', - 123: 'SEM_PERF_SEL_CPC1_OFFL_E21_POLL_WAIT', - 124: 'SEM_PERF_SEL_CPC1_OFFL_E22_POLL_WAIT', - 125: 'SEM_PERF_SEL_CPC1_OFFL_E23_POLL_WAIT', - 126: 'SEM_PERF_SEL_CPC1_OFFL_E24_POLL_WAIT', - 127: 'SEM_PERF_SEL_CPC1_OFFL_E25_POLL_WAIT', - 128: 'SEM_PERF_SEL_CPC1_OFFL_E26_POLL_WAIT', - 129: 'SEM_PERF_SEL_CPC1_OFFL_E27_POLL_WAIT', - 130: 'SEM_PERF_SEL_CPC1_OFFL_E28_POLL_WAIT', - 131: 'SEM_PERF_SEL_CPC1_OFFL_E29_POLL_WAIT', - 132: 'SEM_PERF_SEL_CPC1_OFFL_E30_POLL_WAIT', - 133: 'SEM_PERF_SEL_CPC1_OFFL_E31_POLL_WAIT', - 134: 'SEM_PERF_SEL_CPC2_OFFL_E0_POLL_WAIT', - 135: 'SEM_PERF_SEL_CPC2_OFFL_E1_POLL_WAIT', - 136: 'SEM_PERF_SEL_CPC2_OFFL_E2_POLL_WAIT', - 137: 'SEM_PERF_SEL_CPC2_OFFL_E3_POLL_WAIT', - 138: 'SEM_PERF_SEL_CPC2_OFFL_E4_POLL_WAIT', - 139: 'SEM_PERF_SEL_CPC2_OFFL_E5_POLL_WAIT', - 140: 'SEM_PERF_SEL_CPC2_OFFL_E6_POLL_WAIT', - 141: 'SEM_PERF_SEL_CPC2_OFFL_E7_POLL_WAIT', - 142: 'SEM_PERF_SEL_CPC2_OFFL_E8_POLL_WAIT', - 143: 'SEM_PERF_SEL_CPC2_OFFL_E9_POLL_WAIT', - 144: 'SEM_PERF_SEL_CPC2_OFFL_E10_POLL_WAIT', - 145: 'SEM_PERF_SEL_CPC2_OFFL_E11_POLL_WAIT', - 146: 'SEM_PERF_SEL_CPC2_OFFL_E12_POLL_WAIT', - 147: 'SEM_PERF_SEL_CPC2_OFFL_E13_POLL_WAIT', - 148: 'SEM_PERF_SEL_CPC2_OFFL_E14_POLL_WAIT', - 149: 'SEM_PERF_SEL_CPC2_OFFL_E15_POLL_WAIT', - 150: 'SEM_PERF_SEL_CPC2_OFFL_E16_POLL_WAIT', - 151: 'SEM_PERF_SEL_CPC2_OFFL_E17_POLL_WAIT', - 152: 'SEM_PERF_SEL_CPC2_OFFL_E18_POLL_WAIT', - 153: 'SEM_PERF_SEL_CPC2_OFFL_E19_POLL_WAIT', - 154: 'SEM_PERF_SEL_CPC2_OFFL_E20_POLL_WAIT', - 155: 'SEM_PERF_SEL_CPC2_OFFL_E21_POLL_WAIT', - 156: 'SEM_PERF_SEL_CPC2_OFFL_E22_POLL_WAIT', - 157: 'SEM_PERF_SEL_CPC2_OFFL_E23_POLL_WAIT', - 158: 'SEM_PERF_SEL_CPC2_OFFL_E24_POLL_WAIT', - 159: 'SEM_PERF_SEL_CPC2_OFFL_E25_POLL_WAIT', - 160: 'SEM_PERF_SEL_CPC2_OFFL_E26_POLL_WAIT', - 161: 'SEM_PERF_SEL_CPC2_OFFL_E27_POLL_WAIT', - 162: 'SEM_PERF_SEL_CPC2_OFFL_E28_POLL_WAIT', - 163: 'SEM_PERF_SEL_CPC2_OFFL_E29_POLL_WAIT', - 164: 'SEM_PERF_SEL_CPC2_OFFL_E30_POLL_WAIT', - 165: 'SEM_PERF_SEL_CPC2_OFFL_E31_POLL_WAIT', - 166: 'SEM_PERF_SEL_MC_RD_REQ', - 167: 'SEM_PERF_SEL_MC_RD_RET', - 168: 'SEM_PERF_SEL_MC_WR_REQ', - 169: 'SEM_PERF_SEL_MC_WR_RET', - 170: 'SEM_PERF_SEL_ATC_REQ', - 171: 'SEM_PERF_SEL_ATC_RET', - 172: 'SEM_PERF_SEL_ATC_XNACK', - 173: 'SEM_PERF_SEL_ATC_INVALIDATION', -} -SEM_PERF_SEL_CYCLE = 0 -SEM_PERF_SEL_IDLE = 1 -SEM_PERF_SEL_SDMA0_REQ_SIGNAL = 2 -SEM_PERF_SEL_SDMA1_REQ_SIGNAL = 3 -SEM_PERF_SEL_UVD_REQ_SIGNAL = 4 -SEM_PERF_SEL_VCE0_REQ_SIGNAL = 5 -SEM_PERF_SEL_ACP_REQ_SIGNAL = 6 -SEM_PERF_SEL_ISP_REQ_SIGNAL = 7 -SEM_PERF_SEL_VCE1_REQ_SIGNAL = 8 -SEM_PERF_SEL_VP8_REQ_SIGNAL = 9 -SEM_PERF_SEL_CPG_E0_REQ_SIGNAL = 10 -SEM_PERF_SEL_CPG_E1_REQ_SIGNAL = 11 -SEM_PERF_SEL_CPC1_IMME_E0_REQ_SIGNAL = 12 -SEM_PERF_SEL_CPC1_IMME_E1_REQ_SIGNAL = 13 -SEM_PERF_SEL_CPC1_IMME_E2_REQ_SIGNAL = 14 -SEM_PERF_SEL_CPC1_IMME_E3_REQ_SIGNAL = 15 -SEM_PERF_SEL_CPC2_IMME_E0_REQ_SIGNAL = 16 -SEM_PERF_SEL_CPC2_IMME_E1_REQ_SIGNAL = 17 -SEM_PERF_SEL_CPC2_IMME_E2_REQ_SIGNAL = 18 -SEM_PERF_SEL_CPC2_IMME_E3_REQ_SIGNAL = 19 -SEM_PERF_SEL_SDMA0_REQ_WAIT = 20 -SEM_PERF_SEL_SDMA1_REQ_WAIT = 21 -SEM_PERF_SEL_UVD_REQ_WAIT = 22 -SEM_PERF_SEL_VCE0_REQ_WAIT = 23 -SEM_PERF_SEL_ACP_REQ_WAIT = 24 -SEM_PERF_SEL_ISP_REQ_WAIT = 25 -SEM_PERF_SEL_VCE1_REQ_WAIT = 26 -SEM_PERF_SEL_VP8_REQ_WAIT = 27 -SEM_PERF_SEL_CPG_E0_REQ_WAIT = 28 -SEM_PERF_SEL_CPG_E1_REQ_WAIT = 29 -SEM_PERF_SEL_CPC1_IMME_E0_REQ_WAIT = 30 -SEM_PERF_SEL_CPC1_IMME_E1_REQ_WAIT = 31 -SEM_PERF_SEL_CPC1_IMME_E2_REQ_WAIT = 32 -SEM_PERF_SEL_CPC1_IMME_E3_REQ_WAIT = 33 -SEM_PERF_SEL_CPC2_IMME_E0_REQ_WAIT = 34 -SEM_PERF_SEL_CPC2_IMME_E1_REQ_WAIT = 35 -SEM_PERF_SEL_CPC2_IMME_E2_REQ_WAIT = 36 -SEM_PERF_SEL_CPC2_IMME_E3_REQ_WAIT = 37 -SEM_PERF_SEL_CPC1_OFFL_E0_REQ_WAIT = 38 -SEM_PERF_SEL_CPC1_OFFL_E1_REQ_WAIT = 39 -SEM_PERF_SEL_CPC1_OFFL_E2_REQ_WAIT = 40 -SEM_PERF_SEL_CPC1_OFFL_E3_REQ_WAIT = 41 -SEM_PERF_SEL_CPC1_OFFL_E4_REQ_WAIT = 42 -SEM_PERF_SEL_CPC1_OFFL_E5_REQ_WAIT = 43 -SEM_PERF_SEL_CPC1_OFFL_E6_REQ_WAIT = 44 -SEM_PERF_SEL_CPC1_OFFL_E7_REQ_WAIT = 45 -SEM_PERF_SEL_CPC1_OFFL_E8_REQ_WAIT = 46 -SEM_PERF_SEL_CPC1_OFFL_E9_REQ_WAIT = 47 -SEM_PERF_SEL_CPC1_OFFL_E10_REQ_WAIT = 48 -SEM_PERF_SEL_CPC1_OFFL_E11_REQ_WAIT = 49 -SEM_PERF_SEL_CPC1_OFFL_E12_REQ_WAIT = 50 -SEM_PERF_SEL_CPC1_OFFL_E13_REQ_WAIT = 51 -SEM_PERF_SEL_CPC1_OFFL_E14_REQ_WAIT = 52 -SEM_PERF_SEL_CPC1_OFFL_E15_REQ_WAIT = 53 -SEM_PERF_SEL_CPC1_OFFL_E16_REQ_WAIT = 54 -SEM_PERF_SEL_CPC1_OFFL_E17_REQ_WAIT = 55 -SEM_PERF_SEL_CPC1_OFFL_E18_REQ_WAIT = 56 -SEM_PERF_SEL_CPC1_OFFL_E19_REQ_WAIT = 57 -SEM_PERF_SEL_CPC1_OFFL_E20_REQ_WAIT = 58 -SEM_PERF_SEL_CPC1_OFFL_E21_REQ_WAIT = 59 -SEM_PERF_SEL_CPC1_OFFL_E22_REQ_WAIT = 60 -SEM_PERF_SEL_CPC1_OFFL_E23_REQ_WAIT = 61 -SEM_PERF_SEL_CPC1_OFFL_E24_REQ_WAIT = 62 -SEM_PERF_SEL_CPC1_OFFL_E25_REQ_WAIT = 63 -SEM_PERF_SEL_CPC1_OFFL_E26_REQ_WAIT = 64 -SEM_PERF_SEL_CPC1_OFFL_E27_REQ_WAIT = 65 -SEM_PERF_SEL_CPC1_OFFL_E28_REQ_WAIT = 66 -SEM_PERF_SEL_CPC1_OFFL_E29_REQ_WAIT = 67 -SEM_PERF_SEL_CPC1_OFFL_E30_REQ_WAIT = 68 -SEM_PERF_SEL_CPC1_OFFL_E31_REQ_WAIT = 69 -SEM_PERF_SEL_CPC2_OFFL_E0_REQ_WAIT = 70 -SEM_PERF_SEL_CPC2_OFFL_E1_REQ_WAIT = 71 -SEM_PERF_SEL_CPC2_OFFL_E2_REQ_WAIT = 72 -SEM_PERF_SEL_CPC2_OFFL_E3_REQ_WAIT = 73 -SEM_PERF_SEL_CPC2_OFFL_E4_REQ_WAIT = 74 -SEM_PERF_SEL_CPC2_OFFL_E5_REQ_WAIT = 75 -SEM_PERF_SEL_CPC2_OFFL_E6_REQ_WAIT = 76 -SEM_PERF_SEL_CPC2_OFFL_E7_REQ_WAIT = 77 -SEM_PERF_SEL_CPC2_OFFL_E8_REQ_WAIT = 78 -SEM_PERF_SEL_CPC2_OFFL_E9_REQ_WAIT = 79 -SEM_PERF_SEL_CPC2_OFFL_E10_REQ_WAIT = 80 -SEM_PERF_SEL_CPC2_OFFL_E11_REQ_WAIT = 81 -SEM_PERF_SEL_CPC2_OFFL_E12_REQ_WAIT = 82 -SEM_PERF_SEL_CPC2_OFFL_E13_REQ_WAIT = 83 -SEM_PERF_SEL_CPC2_OFFL_E14_REQ_WAIT = 84 -SEM_PERF_SEL_CPC2_OFFL_E15_REQ_WAIT = 85 -SEM_PERF_SEL_CPC2_OFFL_E16_REQ_WAIT = 86 -SEM_PERF_SEL_CPC2_OFFL_E17_REQ_WAIT = 87 -SEM_PERF_SEL_CPC2_OFFL_E18_REQ_WAIT = 88 -SEM_PERF_SEL_CPC2_OFFL_E19_REQ_WAIT = 89 -SEM_PERF_SEL_CPC2_OFFL_E20_REQ_WAIT = 90 -SEM_PERF_SEL_CPC2_OFFL_E21_REQ_WAIT = 91 -SEM_PERF_SEL_CPC2_OFFL_E22_REQ_WAIT = 92 -SEM_PERF_SEL_CPC2_OFFL_E23_REQ_WAIT = 93 -SEM_PERF_SEL_CPC2_OFFL_E24_REQ_WAIT = 94 -SEM_PERF_SEL_CPC2_OFFL_E25_REQ_WAIT = 95 -SEM_PERF_SEL_CPC2_OFFL_E26_REQ_WAIT = 96 -SEM_PERF_SEL_CPC2_OFFL_E27_REQ_WAIT = 97 -SEM_PERF_SEL_CPC2_OFFL_E28_REQ_WAIT = 98 -SEM_PERF_SEL_CPC2_OFFL_E29_REQ_WAIT = 99 -SEM_PERF_SEL_CPC2_OFFL_E30_REQ_WAIT = 100 -SEM_PERF_SEL_CPC2_OFFL_E31_REQ_WAIT = 101 -SEM_PERF_SEL_CPC1_OFFL_E0_POLL_WAIT = 102 -SEM_PERF_SEL_CPC1_OFFL_E1_POLL_WAIT = 103 -SEM_PERF_SEL_CPC1_OFFL_E2_POLL_WAIT = 104 -SEM_PERF_SEL_CPC1_OFFL_E3_POLL_WAIT = 105 -SEM_PERF_SEL_CPC1_OFFL_E4_POLL_WAIT = 106 -SEM_PERF_SEL_CPC1_OFFL_E5_POLL_WAIT = 107 -SEM_PERF_SEL_CPC1_OFFL_E6_POLL_WAIT = 108 -SEM_PERF_SEL_CPC1_OFFL_E7_POLL_WAIT = 109 -SEM_PERF_SEL_CPC1_OFFL_E8_POLL_WAIT = 110 -SEM_PERF_SEL_CPC1_OFFL_E9_POLL_WAIT = 111 -SEM_PERF_SEL_CPC1_OFFL_E10_POLL_WAIT = 112 -SEM_PERF_SEL_CPC1_OFFL_E11_POLL_WAIT = 113 -SEM_PERF_SEL_CPC1_OFFL_E12_POLL_WAIT = 114 -SEM_PERF_SEL_CPC1_OFFL_E13_POLL_WAIT = 115 -SEM_PERF_SEL_CPC1_OFFL_E14_POLL_WAIT = 116 -SEM_PERF_SEL_CPC1_OFFL_E15_POLL_WAIT = 117 -SEM_PERF_SEL_CPC1_OFFL_E16_POLL_WAIT = 118 -SEM_PERF_SEL_CPC1_OFFL_E17_POLL_WAIT = 119 -SEM_PERF_SEL_CPC1_OFFL_E18_POLL_WAIT = 120 -SEM_PERF_SEL_CPC1_OFFL_E19_POLL_WAIT = 121 -SEM_PERF_SEL_CPC1_OFFL_E20_POLL_WAIT = 122 -SEM_PERF_SEL_CPC1_OFFL_E21_POLL_WAIT = 123 -SEM_PERF_SEL_CPC1_OFFL_E22_POLL_WAIT = 124 -SEM_PERF_SEL_CPC1_OFFL_E23_POLL_WAIT = 125 -SEM_PERF_SEL_CPC1_OFFL_E24_POLL_WAIT = 126 -SEM_PERF_SEL_CPC1_OFFL_E25_POLL_WAIT = 127 -SEM_PERF_SEL_CPC1_OFFL_E26_POLL_WAIT = 128 -SEM_PERF_SEL_CPC1_OFFL_E27_POLL_WAIT = 129 -SEM_PERF_SEL_CPC1_OFFL_E28_POLL_WAIT = 130 -SEM_PERF_SEL_CPC1_OFFL_E29_POLL_WAIT = 131 -SEM_PERF_SEL_CPC1_OFFL_E30_POLL_WAIT = 132 -SEM_PERF_SEL_CPC1_OFFL_E31_POLL_WAIT = 133 -SEM_PERF_SEL_CPC2_OFFL_E0_POLL_WAIT = 134 -SEM_PERF_SEL_CPC2_OFFL_E1_POLL_WAIT = 135 -SEM_PERF_SEL_CPC2_OFFL_E2_POLL_WAIT = 136 -SEM_PERF_SEL_CPC2_OFFL_E3_POLL_WAIT = 137 -SEM_PERF_SEL_CPC2_OFFL_E4_POLL_WAIT = 138 -SEM_PERF_SEL_CPC2_OFFL_E5_POLL_WAIT = 139 -SEM_PERF_SEL_CPC2_OFFL_E6_POLL_WAIT = 140 -SEM_PERF_SEL_CPC2_OFFL_E7_POLL_WAIT = 141 -SEM_PERF_SEL_CPC2_OFFL_E8_POLL_WAIT = 142 -SEM_PERF_SEL_CPC2_OFFL_E9_POLL_WAIT = 143 -SEM_PERF_SEL_CPC2_OFFL_E10_POLL_WAIT = 144 -SEM_PERF_SEL_CPC2_OFFL_E11_POLL_WAIT = 145 -SEM_PERF_SEL_CPC2_OFFL_E12_POLL_WAIT = 146 -SEM_PERF_SEL_CPC2_OFFL_E13_POLL_WAIT = 147 -SEM_PERF_SEL_CPC2_OFFL_E14_POLL_WAIT = 148 -SEM_PERF_SEL_CPC2_OFFL_E15_POLL_WAIT = 149 -SEM_PERF_SEL_CPC2_OFFL_E16_POLL_WAIT = 150 -SEM_PERF_SEL_CPC2_OFFL_E17_POLL_WAIT = 151 -SEM_PERF_SEL_CPC2_OFFL_E18_POLL_WAIT = 152 -SEM_PERF_SEL_CPC2_OFFL_E19_POLL_WAIT = 153 -SEM_PERF_SEL_CPC2_OFFL_E20_POLL_WAIT = 154 -SEM_PERF_SEL_CPC2_OFFL_E21_POLL_WAIT = 155 -SEM_PERF_SEL_CPC2_OFFL_E22_POLL_WAIT = 156 -SEM_PERF_SEL_CPC2_OFFL_E23_POLL_WAIT = 157 -SEM_PERF_SEL_CPC2_OFFL_E24_POLL_WAIT = 158 -SEM_PERF_SEL_CPC2_OFFL_E25_POLL_WAIT = 159 -SEM_PERF_SEL_CPC2_OFFL_E26_POLL_WAIT = 160 -SEM_PERF_SEL_CPC2_OFFL_E27_POLL_WAIT = 161 -SEM_PERF_SEL_CPC2_OFFL_E28_POLL_WAIT = 162 -SEM_PERF_SEL_CPC2_OFFL_E29_POLL_WAIT = 163 -SEM_PERF_SEL_CPC2_OFFL_E30_POLL_WAIT = 164 -SEM_PERF_SEL_CPC2_OFFL_E31_POLL_WAIT = 165 -SEM_PERF_SEL_MC_RD_REQ = 166 -SEM_PERF_SEL_MC_RD_RET = 167 -SEM_PERF_SEL_MC_WR_REQ = 168 -SEM_PERF_SEL_MC_WR_RET = 169 -SEM_PERF_SEL_ATC_REQ = 170 -SEM_PERF_SEL_ATC_RET = 171 -SEM_PERF_SEL_ATC_XNACK = 172 -SEM_PERF_SEL_ATC_INVALIDATION = 173 -SEM_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SDMA_PERF_SEL' -SDMA_PERF_SEL__enumvalues = { - 0: 'SDMA_PERF_SEL_CYCLE', - 1: 'SDMA_PERF_SEL_IDLE', - 2: 'SDMA_PERF_SEL_REG_IDLE', - 3: 'SDMA_PERF_SEL_RB_EMPTY', - 4: 'SDMA_PERF_SEL_RB_FULL', - 5: 'SDMA_PERF_SEL_RB_WPTR_WRAP', - 6: 'SDMA_PERF_SEL_RB_RPTR_WRAP', - 7: 'SDMA_PERF_SEL_RB_WPTR_POLL_READ', - 8: 'SDMA_PERF_SEL_RB_RPTR_WB', - 9: 'SDMA_PERF_SEL_RB_CMD_IDLE', - 10: 'SDMA_PERF_SEL_RB_CMD_FULL', - 11: 'SDMA_PERF_SEL_IB_CMD_IDLE', - 12: 'SDMA_PERF_SEL_IB_CMD_FULL', - 13: 'SDMA_PERF_SEL_EX_IDLE', - 14: 'SDMA_PERF_SEL_SRBM_REG_SEND', - 15: 'SDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 16: 'SDMA_PERF_SEL_MC_WR_IDLE', - 17: 'SDMA_PERF_SEL_MC_WR_COUNT', - 18: 'SDMA_PERF_SEL_MC_RD_IDLE', - 19: 'SDMA_PERF_SEL_MC_RD_COUNT', - 20: 'SDMA_PERF_SEL_MC_RD_RET_STALL', - 21: 'SDMA_PERF_SEL_MC_RD_NO_POLL_IDLE', - 24: 'SDMA_PERF_SEL_SEM_IDLE', - 25: 'SDMA_PERF_SEL_SEM_REQ_STALL', - 26: 'SDMA_PERF_SEL_SEM_REQ_COUNT', - 27: 'SDMA_PERF_SEL_SEM_RESP_INCOMPLETE', - 28: 'SDMA_PERF_SEL_SEM_RESP_FAIL', - 29: 'SDMA_PERF_SEL_SEM_RESP_PASS', - 30: 'SDMA_PERF_SEL_INT_IDLE', - 31: 'SDMA_PERF_SEL_INT_REQ_STALL', - 32: 'SDMA_PERF_SEL_INT_REQ_COUNT', - 33: 'SDMA_PERF_SEL_INT_RESP_ACCEPTED', - 34: 'SDMA_PERF_SEL_INT_RESP_RETRY', - 35: 'SDMA_PERF_SEL_NUM_PACKET', - 37: 'SDMA_PERF_SEL_CE_WREQ_IDLE', - 38: 'SDMA_PERF_SEL_CE_WR_IDLE', - 39: 'SDMA_PERF_SEL_CE_SPLIT_IDLE', - 40: 'SDMA_PERF_SEL_CE_RREQ_IDLE', - 41: 'SDMA_PERF_SEL_CE_OUT_IDLE', - 42: 'SDMA_PERF_SEL_CE_IN_IDLE', - 43: 'SDMA_PERF_SEL_CE_DST_IDLE', - 46: 'SDMA_PERF_SEL_CE_AFIFO_FULL', - 49: 'SDMA_PERF_SEL_CE_INFO_FULL', - 50: 'SDMA_PERF_SEL_CE_INFO1_FULL', - 51: 'SDMA_PERF_SEL_CE_RD_STALL', - 52: 'SDMA_PERF_SEL_CE_WR_STALL', - 53: 'SDMA_PERF_SEL_GFX_SELECT', - 54: 'SDMA_PERF_SEL_RLC0_SELECT', - 55: 'SDMA_PERF_SEL_RLC1_SELECT', - 56: 'SDMA_PERF_SEL_PAGE_SELECT', - 57: 'SDMA_PERF_SEL_CTX_CHANGE', - 58: 'SDMA_PERF_SEL_CTX_CHANGE_EXPIRED', - 59: 'SDMA_PERF_SEL_CTX_CHANGE_EXCEPTION', - 60: 'SDMA_PERF_SEL_DOORBELL', - 61: 'SDMA_PERF_SEL_RD_BA_RTR', - 62: 'SDMA_PERF_SEL_WR_BA_RTR', - 63: 'SDMA_PERF_SEL_F32_L1_WR_VLD', - 64: 'SDMA_PERF_SEL_CE_L1_WR_VLD', - 65: 'SDMA_PERF_SEL_CE_L1_STALL', - 66: 'SDMA_PERF_SEL_SDMA_INVACK_NFLUSH', - 67: 'SDMA_PERF_SEL_SDMA_INVACK_FLUSH', - 68: 'SDMA_PERF_SEL_ATCL2_INVREQ_NFLUSH', - 69: 'SDMA_PERF_SEL_ATCL2_INVREQ_FLUSH', - 70: 'SDMA_PERF_SEL_ATCL2_RET_XNACK', - 71: 'SDMA_PERF_SEL_ATCL2_RET_ACK', - 72: 'SDMA_PERF_SEL_ATCL2_FREE', - 73: 'SDMA_PERF_SEL_SDMA_ATCL2_SEND', - 74: 'SDMA_PERF_SEL_DMA_L1_WR_SEND', - 75: 'SDMA_PERF_SEL_DMA_L1_RD_SEND', - 76: 'SDMA_PERF_SEL_DMA_MC_WR_SEND', - 77: 'SDMA_PERF_SEL_DMA_MC_RD_SEND', - 78: 'SDMA_PERF_SEL_L1_WR_FIFO_IDLE', - 79: 'SDMA_PERF_SEL_L1_RD_FIFO_IDLE', - 80: 'SDMA_PERF_SEL_L1_WRL2_IDLE', - 81: 'SDMA_PERF_SEL_L1_RDL2_IDLE', - 82: 'SDMA_PERF_SEL_L1_WRMC_IDLE', - 83: 'SDMA_PERF_SEL_L1_RDMC_IDLE', - 84: 'SDMA_PERF_SEL_L1_WR_INV_IDLE', - 85: 'SDMA_PERF_SEL_L1_RD_INV_IDLE', - 86: 'SDMA_PERF_SEL_L1_WR_INV_EN', - 87: 'SDMA_PERF_SEL_L1_RD_INV_EN', - 88: 'SDMA_PERF_SEL_L1_WR_WAIT_INVADR', - 89: 'SDMA_PERF_SEL_L1_RD_WAIT_INVADR', - 90: 'SDMA_PERF_SEL_IS_INVREQ_ADDR_WR', - 91: 'SDMA_PERF_SEL_IS_INVREQ_ADDR_RD', - 92: 'SDMA_PERF_SEL_L1_WR_XNACK_TIMEOUT', - 93: 'SDMA_PERF_SEL_L1_RD_XNACK_TIMEOUT', - 94: 'SDMA_PERF_SEL_L1_INV_MIDDLE', - 254: 'SDMA_PERF_SEL_UTCL1_TAG_DELAY_COUNTER', - 255: 'SDMA_PERF_SEL_MMHUB_TAG_DELAY_COUNTER', -} -SDMA_PERF_SEL_CYCLE = 0 -SDMA_PERF_SEL_IDLE = 1 -SDMA_PERF_SEL_REG_IDLE = 2 -SDMA_PERF_SEL_RB_EMPTY = 3 -SDMA_PERF_SEL_RB_FULL = 4 -SDMA_PERF_SEL_RB_WPTR_WRAP = 5 -SDMA_PERF_SEL_RB_RPTR_WRAP = 6 -SDMA_PERF_SEL_RB_WPTR_POLL_READ = 7 -SDMA_PERF_SEL_RB_RPTR_WB = 8 -SDMA_PERF_SEL_RB_CMD_IDLE = 9 -SDMA_PERF_SEL_RB_CMD_FULL = 10 -SDMA_PERF_SEL_IB_CMD_IDLE = 11 -SDMA_PERF_SEL_IB_CMD_FULL = 12 -SDMA_PERF_SEL_EX_IDLE = 13 -SDMA_PERF_SEL_SRBM_REG_SEND = 14 -SDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE = 15 -SDMA_PERF_SEL_MC_WR_IDLE = 16 -SDMA_PERF_SEL_MC_WR_COUNT = 17 -SDMA_PERF_SEL_MC_RD_IDLE = 18 -SDMA_PERF_SEL_MC_RD_COUNT = 19 -SDMA_PERF_SEL_MC_RD_RET_STALL = 20 -SDMA_PERF_SEL_MC_RD_NO_POLL_IDLE = 21 -SDMA_PERF_SEL_SEM_IDLE = 24 -SDMA_PERF_SEL_SEM_REQ_STALL = 25 -SDMA_PERF_SEL_SEM_REQ_COUNT = 26 -SDMA_PERF_SEL_SEM_RESP_INCOMPLETE = 27 -SDMA_PERF_SEL_SEM_RESP_FAIL = 28 -SDMA_PERF_SEL_SEM_RESP_PASS = 29 -SDMA_PERF_SEL_INT_IDLE = 30 -SDMA_PERF_SEL_INT_REQ_STALL = 31 -SDMA_PERF_SEL_INT_REQ_COUNT = 32 -SDMA_PERF_SEL_INT_RESP_ACCEPTED = 33 -SDMA_PERF_SEL_INT_RESP_RETRY = 34 -SDMA_PERF_SEL_NUM_PACKET = 35 -SDMA_PERF_SEL_CE_WREQ_IDLE = 37 -SDMA_PERF_SEL_CE_WR_IDLE = 38 -SDMA_PERF_SEL_CE_SPLIT_IDLE = 39 -SDMA_PERF_SEL_CE_RREQ_IDLE = 40 -SDMA_PERF_SEL_CE_OUT_IDLE = 41 -SDMA_PERF_SEL_CE_IN_IDLE = 42 -SDMA_PERF_SEL_CE_DST_IDLE = 43 -SDMA_PERF_SEL_CE_AFIFO_FULL = 46 -SDMA_PERF_SEL_CE_INFO_FULL = 49 -SDMA_PERF_SEL_CE_INFO1_FULL = 50 -SDMA_PERF_SEL_CE_RD_STALL = 51 -SDMA_PERF_SEL_CE_WR_STALL = 52 -SDMA_PERF_SEL_GFX_SELECT = 53 -SDMA_PERF_SEL_RLC0_SELECT = 54 -SDMA_PERF_SEL_RLC1_SELECT = 55 -SDMA_PERF_SEL_PAGE_SELECT = 56 -SDMA_PERF_SEL_CTX_CHANGE = 57 -SDMA_PERF_SEL_CTX_CHANGE_EXPIRED = 58 -SDMA_PERF_SEL_CTX_CHANGE_EXCEPTION = 59 -SDMA_PERF_SEL_DOORBELL = 60 -SDMA_PERF_SEL_RD_BA_RTR = 61 -SDMA_PERF_SEL_WR_BA_RTR = 62 -SDMA_PERF_SEL_F32_L1_WR_VLD = 63 -SDMA_PERF_SEL_CE_L1_WR_VLD = 64 -SDMA_PERF_SEL_CE_L1_STALL = 65 -SDMA_PERF_SEL_SDMA_INVACK_NFLUSH = 66 -SDMA_PERF_SEL_SDMA_INVACK_FLUSH = 67 -SDMA_PERF_SEL_ATCL2_INVREQ_NFLUSH = 68 -SDMA_PERF_SEL_ATCL2_INVREQ_FLUSH = 69 -SDMA_PERF_SEL_ATCL2_RET_XNACK = 70 -SDMA_PERF_SEL_ATCL2_RET_ACK = 71 -SDMA_PERF_SEL_ATCL2_FREE = 72 -SDMA_PERF_SEL_SDMA_ATCL2_SEND = 73 -SDMA_PERF_SEL_DMA_L1_WR_SEND = 74 -SDMA_PERF_SEL_DMA_L1_RD_SEND = 75 -SDMA_PERF_SEL_DMA_MC_WR_SEND = 76 -SDMA_PERF_SEL_DMA_MC_RD_SEND = 77 -SDMA_PERF_SEL_L1_WR_FIFO_IDLE = 78 -SDMA_PERF_SEL_L1_RD_FIFO_IDLE = 79 -SDMA_PERF_SEL_L1_WRL2_IDLE = 80 -SDMA_PERF_SEL_L1_RDL2_IDLE = 81 -SDMA_PERF_SEL_L1_WRMC_IDLE = 82 -SDMA_PERF_SEL_L1_RDMC_IDLE = 83 -SDMA_PERF_SEL_L1_WR_INV_IDLE = 84 -SDMA_PERF_SEL_L1_RD_INV_IDLE = 85 -SDMA_PERF_SEL_L1_WR_INV_EN = 86 -SDMA_PERF_SEL_L1_RD_INV_EN = 87 -SDMA_PERF_SEL_L1_WR_WAIT_INVADR = 88 -SDMA_PERF_SEL_L1_RD_WAIT_INVADR = 89 -SDMA_PERF_SEL_IS_INVREQ_ADDR_WR = 90 -SDMA_PERF_SEL_IS_INVREQ_ADDR_RD = 91 -SDMA_PERF_SEL_L1_WR_XNACK_TIMEOUT = 92 -SDMA_PERF_SEL_L1_RD_XNACK_TIMEOUT = 93 -SDMA_PERF_SEL_L1_INV_MIDDLE = 94 -SDMA_PERF_SEL_UTCL1_TAG_DELAY_COUNTER = 254 -SDMA_PERF_SEL_MMHUB_TAG_DELAY_COUNTER = 255 -SDMA_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_XDMA_LOCAL_SW_MODE' -ENUM_XDMA_LOCAL_SW_MODE__enumvalues = { - 2: 'XDMA_LOCAL_SW_MODE_SW_256B_D', - 10: 'XDMA_LOCAL_SW_MODE_SW_64KB_D', - 26: 'XDMA_LOCAL_SW_MODE_SW_64KB_D_X', -} -XDMA_LOCAL_SW_MODE_SW_256B_D = 2 -XDMA_LOCAL_SW_MODE_SW_64KB_D = 10 -XDMA_LOCAL_SW_MODE_SW_64KB_D_X = 26 -ENUM_XDMA_LOCAL_SW_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_XDMA_SLV_ALPHA_POSITION' -ENUM_XDMA_SLV_ALPHA_POSITION__enumvalues = { - 0: 'XDMA_SLV_ALPHA_POSITION_7_0', - 1: 'XDMA_SLV_ALPHA_POSITION_15_8', - 2: 'XDMA_SLV_ALPHA_POSITION_23_16', - 3: 'XDMA_SLV_ALPHA_POSITION_31_24', -} -XDMA_SLV_ALPHA_POSITION_7_0 = 0 -XDMA_SLV_ALPHA_POSITION_15_8 = 1 -XDMA_SLV_ALPHA_POSITION_23_16 = 2 -XDMA_SLV_ALPHA_POSITION_31_24 = 3 -ENUM_XDMA_SLV_ALPHA_POSITION = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_XDMA_MSTR_ALPHA_POSITION' -ENUM_XDMA_MSTR_ALPHA_POSITION__enumvalues = { - 0: 'XDMA_MSTR_ALPHA_POSITION_7_0', - 1: 'XDMA_MSTR_ALPHA_POSITION_15_8', - 2: 'XDMA_MSTR_ALPHA_POSITION_23_16', - 3: 'XDMA_MSTR_ALPHA_POSITION_31_24', -} -XDMA_MSTR_ALPHA_POSITION_7_0 = 0 -XDMA_MSTR_ALPHA_POSITION_15_8 = 1 -XDMA_MSTR_ALPHA_POSITION_23_16 = 2 -XDMA_MSTR_ALPHA_POSITION_31_24 = 3 -ENUM_XDMA_MSTR_ALPHA_POSITION = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_XDMA_MSTR_VSYNC_GSL_CHECK_SEL' -ENUM_XDMA_MSTR_VSYNC_GSL_CHECK_SEL__enumvalues = { - 0: 'XDMA_MSTR_VSYNC_GSL_CHECK_SEL_PIPE0', - 1: 'XDMA_MSTR_VSYNC_GSL_CHECK_SEL_PIPE1', - 2: 'XDMA_MSTR_VSYNC_GSL_CHECK_SEL_PIPE2', - 3: 'XDMA_MSTR_VSYNC_GSL_CHECK_SEL_PIPE3', - 4: 'XDMA_MSTR_VSYNC_GSL_CHECK_SEL_PIPE4', - 5: 'XDMA_MSTR_VSYNC_GSL_CHECK_SEL_PIPE5', -} -XDMA_MSTR_VSYNC_GSL_CHECK_SEL_PIPE0 = 0 -XDMA_MSTR_VSYNC_GSL_CHECK_SEL_PIPE1 = 1 -XDMA_MSTR_VSYNC_GSL_CHECK_SEL_PIPE2 = 2 -XDMA_MSTR_VSYNC_GSL_CHECK_SEL_PIPE3 = 3 -XDMA_MSTR_VSYNC_GSL_CHECK_SEL_PIPE4 = 4 -XDMA_MSTR_VSYNC_GSL_CHECK_SEL_PIPE5 = 5 -ENUM_XDMA_MSTR_VSYNC_GSL_CHECK_SEL = ctypes.c_uint32 # enum -__all__ = \ - ['ABGR_TO_A_BG_G_RB', 'ABM_SOFT_RESET', 'ABM_SOFT_RESET_0', - 'ABM_SOFT_RESET_1', 'ACCEPT_UNSOLICITED_RESPONSE_ENABLE', - 'ACCEPT_UNSOLICITED_RESPONSE_NOT_ENABLE', 'ADDR_CONFIG_16_BANK', - 'ADDR_CONFIG_16_PIPE', 'ADDR_CONFIG_1KB_ROW', - 'ADDR_CONFIG_1_BANK', 'ADDR_CONFIG_1_GPU', - 'ADDR_CONFIG_1_LOWER_PIPES', - 'ADDR_CONFIG_1_MAX_COMPRESSED_FRAGMENTS', 'ADDR_CONFIG_1_PIPE', - 'ADDR_CONFIG_1_RB_PER_SHADER_ENGINE', - 'ADDR_CONFIG_1_SHADER_ENGINE', 'ADDR_CONFIG_2KB_ROW', - 'ADDR_CONFIG_2_BANK', 'ADDR_CONFIG_2_GPU', - 'ADDR_CONFIG_2_LOWER_PIPES', - 'ADDR_CONFIG_2_MAX_COMPRESSED_FRAGMENTS', 'ADDR_CONFIG_2_PIPE', - 'ADDR_CONFIG_2_RB_PER_SHADER_ENGINE', - 'ADDR_CONFIG_2_SHADER_ENGINE', 'ADDR_CONFIG_32_PIPE', - 'ADDR_CONFIG_4KB_ROW', 'ADDR_CONFIG_4_BANK', 'ADDR_CONFIG_4_GPU', - 'ADDR_CONFIG_4_MAX_COMPRESSED_FRAGMENTS', 'ADDR_CONFIG_4_PIPE', - 'ADDR_CONFIG_4_RB_PER_SHADER_ENGINE', - 'ADDR_CONFIG_4_SHADER_ENGINE', 'ADDR_CONFIG_8_BANK', - 'ADDR_CONFIG_8_GPU', 'ADDR_CONFIG_8_MAX_COMPRESSED_FRAGMENTS', - 'ADDR_CONFIG_8_PIPE', 'ADDR_CONFIG_8_SHADER_ENGINE', - 'ADDR_CONFIG_BANK_INTERLEAVE_1', 'ADDR_CONFIG_BANK_INTERLEAVE_2', - 'ADDR_CONFIG_BANK_INTERLEAVE_4', 'ADDR_CONFIG_BANK_INTERLEAVE_8', - 'ADDR_CONFIG_DISABLE_SE', 'ADDR_CONFIG_ENABLE_SE', - 'ADDR_CONFIG_GPU_TILE_128', 'ADDR_CONFIG_GPU_TILE_16', - 'ADDR_CONFIG_GPU_TILE_32', 'ADDR_CONFIG_GPU_TILE_64', - 'ADDR_CONFIG_PIPE_INTERLEAVE_1KB', - 'ADDR_CONFIG_PIPE_INTERLEAVE_256B', - 'ADDR_CONFIG_PIPE_INTERLEAVE_2KB', - 'ADDR_CONFIG_PIPE_INTERLEAVE_512B', 'ADDR_CONFIG_SE_TILE_16', - 'ADDR_CONFIG_SE_TILE_32', 'ADDR_SURF_16_BANK', 'ADDR_SURF_2_BANK', - 'ADDR_SURF_4_BANK', 'ADDR_SURF_8_BANK', 'ADDR_SURF_BANK_HEIGHT_1', - 'ADDR_SURF_BANK_HEIGHT_2', 'ADDR_SURF_BANK_HEIGHT_4', - 'ADDR_SURF_BANK_HEIGHT_8', 'ADDR_SURF_BANK_WH_1', - 'ADDR_SURF_BANK_WH_2', 'ADDR_SURF_BANK_WH_4', - 'ADDR_SURF_BANK_WH_8', 'ADDR_SURF_BANK_WIDTH_1', - 'ADDR_SURF_BANK_WIDTH_2', 'ADDR_SURF_BANK_WIDTH_4', - 'ADDR_SURF_BANK_WIDTH_8', 'ADDR_SURF_DEPTH_MICRO_TILING', - 'ADDR_SURF_DISPLAY_MICRO_TILING', 'ADDR_SURF_MACRO_ASPECT_1', - 'ADDR_SURF_MACRO_ASPECT_2', 'ADDR_SURF_MACRO_ASPECT_4', - 'ADDR_SURF_MACRO_ASPECT_8', 'ADDR_SURF_MICRO_TILING_DISPLAY', - 'ADDR_SURF_MICRO_TILING_NON_DISPLAY', 'ADDR_SURF_P16_32x32_16x16', - 'ADDR_SURF_P16_32x32_8x16', 'ADDR_SURF_P2', - 'ADDR_SURF_P2_RESERVED0', 'ADDR_SURF_P2_RESERVED1', - 'ADDR_SURF_P2_RESERVED2', 'ADDR_SURF_P4_16x16', - 'ADDR_SURF_P4_16x32', 'ADDR_SURF_P4_32x32', 'ADDR_SURF_P4_8x16', - 'ADDR_SURF_P8_16x16_8x16', 'ADDR_SURF_P8_16x32_16x16', - 'ADDR_SURF_P8_16x32_8x16', 'ADDR_SURF_P8_32x32_16x16', - 'ADDR_SURF_P8_32x32_16x32', 'ADDR_SURF_P8_32x32_8x16', - 'ADDR_SURF_P8_32x64_32x32', 'ADDR_SURF_P8_RESERVED0', - 'ADDR_SURF_ROTATED_MICRO_TILING', 'ADDR_SURF_SAMPLE_SPLIT_1', - 'ADDR_SURF_SAMPLE_SPLIT_2', 'ADDR_SURF_SAMPLE_SPLIT_4', - 'ADDR_SURF_SAMPLE_SPLIT_8', 'ADDR_SURF_THICK_MICRO_TILING', - 'ADDR_SURF_THIN_MICRO_TILING', 'ADDR_SURF_TILE_SPLIT_128B', - 'ADDR_SURF_TILE_SPLIT_1KB', 'ADDR_SURF_TILE_SPLIT_256B', - 'ADDR_SURF_TILE_SPLIT_2KB', 'ADDR_SURF_TILE_SPLIT_4KB', - 'ADDR_SURF_TILE_SPLIT_512B', 'ADDR_SURF_TILE_SPLIT_64B', - 'AFMT_AUDIO_CRC_AUDIO_SAMPLE_COUNT', - 'AFMT_AUDIO_CRC_AUTO_RESTART', 'AFMT_AUDIO_CRC_CH0_SIG', - 'AFMT_AUDIO_CRC_CH1_SIG', 'AFMT_AUDIO_CRC_CH2_SIG', - 'AFMT_AUDIO_CRC_CH3_SIG', 'AFMT_AUDIO_CRC_CH4_SIG', - 'AFMT_AUDIO_CRC_CH5_SIG', 'AFMT_AUDIO_CRC_CH6_SIG', - 'AFMT_AUDIO_CRC_CH7_SIG', 'AFMT_AUDIO_CRC_CONTROL_CH_SEL', - 'AFMT_AUDIO_CRC_CONTROL_CONT', 'AFMT_AUDIO_CRC_CONTROL_SOURCE', - 'AFMT_AUDIO_CRC_ONESHOT', 'AFMT_AUDIO_CRC_RESERVED_10', - 'AFMT_AUDIO_CRC_RESERVED_11', 'AFMT_AUDIO_CRC_RESERVED_12', - 'AFMT_AUDIO_CRC_RESERVED_13', 'AFMT_AUDIO_CRC_RESERVED_14', - 'AFMT_AUDIO_CRC_RESERVED_8', 'AFMT_AUDIO_CRC_RESERVED_9', - 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_INPUT', - 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_OUTPUT', - 'AFMT_AUDIO_LAYOUT_DETERMINED_BY_AZ_AUDIO_CHANNEL_STATUS', - 'AFMT_AUDIO_LAYOUT_OVRD_BY_REGISTER', - 'AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD', - 'AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND', - 'AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS', - 'AFMT_AUDIO_PACKET_SENT_DISABLED', - 'AFMT_AUDIO_PACKET_SENT_ENABLED', 'AFMT_AUDIO_SRC_CONTROL_SELECT', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM0', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM1', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM2', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM3', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM4', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM5', 'AFMT_AUDIO_SRC_RESERVED', - 'AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE', - 'AFMT_INFOFRAME_SOURCE_FROM_AFMT_REGISTERS', - 'AFMT_INFOFRAME_SOURCE_FROM_AZALIA_BLOCK', - 'AFMT_INTERRUPT_DISABLE', 'AFMT_INTERRUPT_ENABLE', - 'AFMT_INTERRUPT_STATUS_CHG_MASK', - 'AFMT_NOT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED_RESERVED', - 'AFMT_RAMP_CONTROL0_SIGN', 'AFMT_RAMP_SIGNED', - 'AFMT_RAMP_UNSIGNED', 'AFMT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED', - 'ALLOW_SR_ON_TRANS_REQ', 'ALLOW_SR_ON_TRANS_REQ_DISABLE', - 'ALLOW_SR_ON_TRANS_REQ_ENABLE', - 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_ACK', - 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_NOT_ACK', - 'ALPHA_LB_DC_MVP_LB_CONTROL_MVP_SWAP_LOCK_IN_MODE_MASTER', - 'ALPHA_LB_DC_MVP_LB_CONTROL_MVP_SWAP_LOCK_IN_MODE_SLAVE', - 'AOUT_CRC_CONT', 'AOUT_CRC_CONT_EN', 'AOUT_CRC_DISABLE', - 'AOUT_CRC_ENABLE', 'AOUT_CRC_NO_RESET', 'AOUT_CRC_ONE_SHOT', - 'AOUT_CRC_RESET', 'AOUT_CRC_SOFT_RESET', 'AOUT_CRC_TEST_EN', - 'AOUT_DISABLE', 'AOUT_EN', 'AOUT_ENABLE', 'AOUT_FIFO_START_ADDR', - 'AOUT_FIFO_START_ADDR_2', 'AOUT_FIFO_START_ADDR_3', 'ARRAY_1D', - 'ARRAY_1D_TILED_THICK', 'ARRAY_1D_TILED_THIN1', 'ARRAY_2D', - 'ARRAY_2D_ALT_COLOR', 'ARRAY_2D_ALT_DEPTH', 'ARRAY_2D_COLOR', - 'ARRAY_2D_DEPTH', 'ARRAY_2D_TILED_THICK', 'ARRAY_2D_TILED_THIN1', - 'ARRAY_2D_TILED_XTHICK', 'ARRAY_3D', 'ARRAY_3D_SLICE', - 'ARRAY_3D_SLICE_COLOR', 'ARRAY_3D_TILED_THICK', - 'ARRAY_3D_TILED_THIN1', 'ARRAY_3D_TILED_XTHICK', - 'ARRAY_COLOR_TILE', 'ARRAY_DEPTH_TILE', 'ARRAY_LINEAR', - 'ARRAY_LINEAR_ALIGNED', 'ARRAY_LINEAR_GENERAL', - 'ARRAY_PRT_2D_TILED_THICK', 'ARRAY_PRT_2D_TILED_THIN1', - 'ARRAY_PRT_3D_TILED_THICK', 'ARRAY_PRT_3D_TILED_THIN1', - 'ARRAY_PRT_TILED_THICK', 'ARRAY_PRT_TILED_THIN1', 'ARRAY_TILED', - 'AUDIO_LAYOUT_0', 'AUDIO_LAYOUT_1', 'AUDIO_LAYOUT_SELECT', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_ANALOG', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NOT_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_NO_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_NOT_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_HAVE_EAPD_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_NO_EAPD_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_PRESENCE_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_NOT_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_NOT_BALANCED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_JACK_PRESENCE_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE', - 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', - 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABLILITY', - 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE', - 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABLILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_EAPD_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_NOT_BALANCED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_EAPD_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_ENABLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_NOT_ENABLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_NOT_ON', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_ON', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ONE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ZERO', - 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_DO_RESET', - 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_NOT_RESET', - 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_DRIVEN', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_SHUT_OFF', - 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_FORBIDDEN', - 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT', - 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_NO_INFO_OR_PERMITTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', - 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE', - 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', - 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE', - 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_DRIVEN', - 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_SHUT_OFF', - 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET', - 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_NOT_RESET', - 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_RESET_REFCLK_LOGIC', - 'AZ_CORB_SIZE', 'AZ_CORB_SIZE_16ENTRIES_RESERVED', - 'AZ_CORB_SIZE_256ENTRIES', 'AZ_CORB_SIZE_2ENTRIES_RESERVED', - 'AZ_CORB_SIZE_RESERVED', 'AZ_GLOBAL_CAPABILITIES', - 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_NOT_SUPPORTED', - 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_SUPPORTED', - 'AZ_LATENCY_COUNTER_CONTROL', 'AZ_LATENCY_COUNTER_NO_RESET', - 'AZ_LATENCY_COUNTER_RESET_DONE', 'AZ_RIRB_SIZE', - 'AZ_RIRB_SIZE_16ENTRIES_RESERVED', 'AZ_RIRB_SIZE_256ENTRIES', - 'AZ_RIRB_SIZE_2ENTRIES_RESERVED', 'AZ_RIRB_SIZE_UNDEFINED', - 'AZ_RIRB_WRITE_POINTER_DO_RESET', - 'AZ_RIRB_WRITE_POINTER_NOT_RESET', 'AZ_RIRB_WRITE_POINTER_RESET', - 'AZ_STATE_CHANGE_STATUS', - 'AZ_STATE_CHANGE_STATUS_CODEC_NOT_PRESENT', - 'AZ_STATE_CHANGE_STATUS_CODEC_PRESENT', 'ArrayMode', - 'Available_0x1c', 'Available_0x1d', 'BGRA_TO_BG_G_RB_A', - 'BINNER_BREAK_BATCH', 'BINNER_DROP_ASSERT', 'BINNER_PIPELINE', - 'BINNING_ALLOWED', 'BLEND_BOTH_INV_SRC_ALPHA', - 'BLEND_BOTH_SRC_ALPHA', 'BLEND_CONSTANT_ALPHA', - 'BLEND_CONSTANT_COLOR', 'BLEND_DST_ALPHA', 'BLEND_DST_COLOR', - 'BLEND_INV_SRC1_ALPHA', 'BLEND_INV_SRC1_COLOR', 'BLEND_ONE', - 'BLEND_ONE_MINUS_CONSTANT_ALPHA', - 'BLEND_ONE_MINUS_CONSTANT_COLOR', 'BLEND_ONE_MINUS_DST_ALPHA', - 'BLEND_ONE_MINUS_DST_COLOR', 'BLEND_ONE_MINUS_SRC_ALPHA', - 'BLEND_ONE_MINUS_SRC_COLOR', 'BLEND_OPT_PRESERVE_A0_IGNORE_A1', - 'BLEND_OPT_PRESERVE_A1_IGNORE_A0', - 'BLEND_OPT_PRESERVE_ALL_IGNORE_NONE', - 'BLEND_OPT_PRESERVE_C0_IGNORE_C1', - 'BLEND_OPT_PRESERVE_C1_IGNORE_C0', - 'BLEND_OPT_PRESERVE_NONE_IGNORE_A0', - 'BLEND_OPT_PRESERVE_NONE_IGNORE_ALL', - 'BLEND_OPT_PRESERVE_NONE_IGNORE_NONE', 'BLEND_SRC1_ALPHA', - 'BLEND_SRC1_COLOR', 'BLEND_SRC_ALPHA', 'BLEND_SRC_ALPHA_SATURATE', - 'BLEND_SRC_COLOR', 'BLEND_ZERO', - 'BLNDV_CONTROL2_BLND_SUPERAA_DEGAMMA_EN', - 'BLNDV_CONTROL2_BLND_SUPERAA_DEGAMMA_EN_FALSE', - 'BLNDV_CONTROL2_BLND_SUPERAA_DEGAMMA_EN_TRUE', - 'BLNDV_CONTROL2_BLND_SUPERAA_REGAMMA_EN', - 'BLNDV_CONTROL2_BLND_SUPERAA_REGAMMA_EN_FALSE', - 'BLNDV_CONTROL2_BLND_SUPERAA_REGAMMA_EN_TRUE', - 'BLNDV_CONTROL2_PTI_ENABLE', 'BLNDV_CONTROL2_PTI_ENABLE_FALSE', - 'BLNDV_CONTROL2_PTI_ENABLE_TRUE', - 'BLNDV_CONTROL_BLND_ACTIVE_OVERLAP_ONLY', - 'BLNDV_CONTROL_BLND_ACTIVE_OVERLAP_ONLY_FALSE', - 'BLNDV_CONTROL_BLND_ACTIVE_OVERLAP_ONLY_TRUE', - 'BLNDV_CONTROL_BLND_ALPHA_MODE', - 'BLNDV_CONTROL_BLND_ALPHA_MODE_CURRENT_PIXEL_ALPHA', - 'BLNDV_CONTROL_BLND_ALPHA_MODE_GLOBAL_ALPHA_ONLY', - 'BLNDV_CONTROL_BLND_ALPHA_MODE_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN', - 'BLNDV_CONTROL_BLND_ALPHA_MODE_UNUSED', - 'BLNDV_CONTROL_BLND_FEEDTHROUGH_EN', - 'BLNDV_CONTROL_BLND_FEEDTHROUGH_EN_FALSE', - 'BLNDV_CONTROL_BLND_FEEDTHROUGH_EN_TRUE', - 'BLNDV_CONTROL_BLND_MODE', - 'BLNDV_CONTROL_BLND_MODE_ALPHA_BLENDING_MODE', - 'BLNDV_CONTROL_BLND_MODE_CURRENT_PIPE_ONLY', - 'BLNDV_CONTROL_BLND_MODE_OTHER_PIPE_ONLY', - 'BLNDV_CONTROL_BLND_MODE_OTHER_STEREO_TYPE', - 'BLNDV_CONTROL_BLND_MULTIPLIED_MODE', - 'BLNDV_CONTROL_BLND_MULTIPLIED_MODE_FALSE', - 'BLNDV_CONTROL_BLND_MULTIPLIED_MODE_TRUE', - 'BLNDV_CONTROL_BLND_STEREO_POLARITY', - 'BLNDV_CONTROL_BLND_STEREO_POLARITY_HIGH', - 'BLNDV_CONTROL_BLND_STEREO_POLARITY_LOW', - 'BLNDV_CONTROL_BLND_STEREO_TYPE', - 'BLNDV_CONTROL_BLND_STEREO_TYPE_NON_SINGLE_PIPE_STEREO', - 'BLNDV_CONTROL_BLND_STEREO_TYPE_SIDE_BY_SIDE_SINGLE_PIPE_STEREO', - 'BLNDV_CONTROL_BLND_STEREO_TYPE_TOP_BOTTOM_SINGLE_PIPE_STEREO', - 'BLNDV_CONTROL_BLND_STEREO_TYPE_UNUSED', - 'BLNDV_DEBUG_BLND_CNV_MUX_SELECT', - 'BLNDV_DEBUG_BLND_CNV_MUX_SELECT_HIGH', - 'BLNDV_DEBUG_BLND_CNV_MUX_SELECT_LOW', - 'BLNDV_SM_CONTROL2_SM_FIELD_ALTERNATE', - 'BLNDV_SM_CONTROL2_SM_FIELD_ALTERNATE_FALSE', - 'BLNDV_SM_CONTROL2_SM_FIELD_ALTERNATE_TRUE', - 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL', - 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_FORCE_HIGH', - 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_FORCE_LOW', - 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_NO_FORCE', - 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_RESERVED', - 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL', - 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_FORCE_HIGH', - 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_FORCE_LOW', - 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_NO_FORCE', - 'BLNDV_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_RESERVED', - 'BLNDV_SM_CONTROL2_SM_FRAME_ALTERNATE', - 'BLNDV_SM_CONTROL2_SM_FRAME_ALTERNATE_FALSE', - 'BLNDV_SM_CONTROL2_SM_FRAME_ALTERNATE_TRUE', - 'BLNDV_SM_CONTROL2_SM_MODE', - 'BLNDV_SM_CONTROL2_SM_MODE_CHECKERBOARD_SUBSAMPLING', - 'BLNDV_SM_CONTROL2_SM_MODE_COLUMN_SUBSAMPLING', - 'BLNDV_SM_CONTROL2_SM_MODE_ROW_SUBSAMPLING', - 'BLNDV_SM_CONTROL2_SM_MODE_SINGLE_PLANE', - 'BLNDV_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN', - 'BLNDV_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN_FALSE', - 'BLNDV_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN_TRUE', - 'BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK', - 'BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK_FALSE', - 'BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK_TRUE', - 'BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK', - 'BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK_FALSE', - 'BLNDV_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK_TRUE', - 'BLNDV_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK', - 'BLNDV_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK_FALSE', - 'BLNDV_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK_TRUE', - 'BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK', - 'BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK_FALSE', - 'BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK_TRUE', - 'BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK', - 'BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK_FALSE', - 'BLNDV_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK_TRUE', - 'BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK', - 'BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK_FALSE', - 'BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK_TRUE', - 'BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK', - 'BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK_FALSE', - 'BLNDV_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK_TRUE', - 'BLNDV_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK', - 'BLNDV_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK_FALSE', - 'BLNDV_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK_TRUE', - 'BLNDV_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE', - 'BLNDV_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE_FALSE', - 'BLNDV_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE_TRUE', - 'BLND_CONTROL2_BLND_SUPERAA_DEGAMMA_EN', - 'BLND_CONTROL2_BLND_SUPERAA_DEGAMMA_EN_FALSE', - 'BLND_CONTROL2_BLND_SUPERAA_DEGAMMA_EN_TRUE', - 'BLND_CONTROL2_BLND_SUPERAA_REGAMMA_EN', - 'BLND_CONTROL2_BLND_SUPERAA_REGAMMA_EN_FALSE', - 'BLND_CONTROL2_BLND_SUPERAA_REGAMMA_EN_TRUE', - 'BLND_CONTROL2_PTI_ENABLE', 'BLND_CONTROL2_PTI_ENABLE_FALSE', - 'BLND_CONTROL2_PTI_ENABLE_TRUE', - 'BLND_CONTROL_BLND_ACTIVE_OVERLAP_ONLY', - 'BLND_CONTROL_BLND_ACTIVE_OVERLAY_ONLY_FALSE', - 'BLND_CONTROL_BLND_ACTIVE_OVERLAY_ONLY_TRUE', - 'BLND_CONTROL_BLND_ALPHA_MODE', - 'BLND_CONTROL_BLND_ALPHA_MODE_CURRENT_PIXEL_ALPHA', - 'BLND_CONTROL_BLND_ALPHA_MODE_GLOBAL_ALPHA_ONLY', - 'BLND_CONTROL_BLND_ALPHA_MODE_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN', - 'BLND_CONTROL_BLND_ALPHA_MODE_UNUSED', - 'BLND_CONTROL_BLND_FEEDTHROUGH_EN', - 'BLND_CONTROL_BLND_FEEDTHROUGH_EN_FALSE', - 'BLND_CONTROL_BLND_FEEDTHROUGH_EN_TRUE', 'BLND_CONTROL_BLND_MODE', - 'BLND_CONTROL_BLND_MODE_ALPHA_BLENDING_MODE', - 'BLND_CONTROL_BLND_MODE_CURRENT_PIPE_ONLY', - 'BLND_CONTROL_BLND_MODE_OTHER_PIPE_ONLY', - 'BLND_CONTROL_BLND_MODE_OTHER_STEREO_TYPE', - 'BLND_CONTROL_BLND_MULTIPLIED_MODE', - 'BLND_CONTROL_BLND_MULTIPLIED_MODE_FALSE', - 'BLND_CONTROL_BLND_MULTIPLIED_MODE_TRUE', - 'BLND_CONTROL_BLND_STEREO_POLARITY', - 'BLND_CONTROL_BLND_STEREO_POLARITY_HIGH', - 'BLND_CONTROL_BLND_STEREO_POLARITY_LOW', - 'BLND_CONTROL_BLND_STEREO_TYPE', - 'BLND_CONTROL_BLND_STEREO_TYPE_NON_SINGLE_PIPE_STEREO', - 'BLND_CONTROL_BLND_STEREO_TYPE_SIDE_BY_SIDE_SINGLE_PIPE_STEREO', - 'BLND_CONTROL_BLND_STEREO_TYPE_TOP_BOTTOM_SINGLE_PIPE_STEREO', - 'BLND_CONTROL_BLND_STEREO_TYPE_UNUSED', - 'BLND_DEBUG_BLND_CNV_MUX_SELECT', - 'BLND_DEBUG_BLND_CNV_MUX_SELECT_HIGH', - 'BLND_DEBUG_BLND_CNV_MUX_SELECT_LOW', - 'BLND_SM_CONTROL2_SM_FIELD_ALTERNATE', - 'BLND_SM_CONTROL2_SM_FIELD_ALTERNATE_FALSE', - 'BLND_SM_CONTROL2_SM_FIELD_ALTERNATE_TRUE', - 'BLND_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL', - 'BLND_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_FORCE_HIGH', - 'BLND_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_FORCE_LOW', - 'BLND_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_NO_FORCE', - 'BLND_SM_CONTROL2_SM_FORCE_NEXT_FRAME_POL_RESERVED', - 'BLND_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL', - 'BLND_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_FORCE_HIGH', - 'BLND_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_FORCE_LOW', - 'BLND_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_NO_FORCE', - 'BLND_SM_CONTROL2_SM_FORCE_NEXT_TOP_POL_RESERVED', - 'BLND_SM_CONTROL2_SM_FRAME_ALTERNATE', - 'BLND_SM_CONTROL2_SM_FRAME_ALTERNATE_FALSE', - 'BLND_SM_CONTROL2_SM_FRAME_ALTERNATE_TRUE', - 'BLND_SM_CONTROL2_SM_MODE', - 'BLND_SM_CONTROL2_SM_MODE_CHECKERBOARD_SUBSAMPLING', - 'BLND_SM_CONTROL2_SM_MODE_COLUMN_SUBSAMPLING', - 'BLND_SM_CONTROL2_SM_MODE_ROW_SUBSAMPLING', - 'BLND_SM_CONTROL2_SM_MODE_SINGLE_PLANE', - 'BLND_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN', - 'BLND_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN_FALSE', - 'BLND_TEST_DEBUG_INDEX_BLND_TEST_DEBUG_WRITE_EN_TRUE', - 'BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK', - 'BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK_FALSE', - 'BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_ACK_TRUE', - 'BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK', - 'BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK_FALSE', - 'BLND_UNDERFLOW_INTERRUPT_BLND_UNDERFLOW_INT_MASK_TRUE', - 'BLND_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK', - 'BLND_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK_FALSE', - 'BLND_V_UPDATE_LOCK_BLND_BLND_V_UPDATE_LOCK_TRUE', - 'BLND_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK', - 'BLND_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK_FALSE', - 'BLND_V_UPDATE_LOCK_BLND_DCP_CUR2_V_UPDATE_LOCK_TRUE', - 'BLND_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK', - 'BLND_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK_FALSE', - 'BLND_V_UPDATE_LOCK_BLND_DCP_CUR_V_UPDATE_LOCK_TRUE', - 'BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK', - 'BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK_FALSE', - 'BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_SURF_V_UPDATE_LOCK_TRUE', - 'BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK', - 'BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK_FALSE', - 'BLND_V_UPDATE_LOCK_BLND_DCP_GRPH_V_UPDATE_LOCK_TRUE', - 'BLND_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK', - 'BLND_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK_FALSE', - 'BLND_V_UPDATE_LOCK_BLND_SCL_V_UPDATE_LOCK_TRUE', - 'BLND_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE', - 'BLND_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE_FALSE', - 'BLND_V_UPDATE_LOCK_BLND_V_UPDATE_LOCK_MODE_TRUE', - 'BLOCK_CONTEXT_DONE', 'BOTTOM_OF_PIPE_TS', 'BREAK_BATCH', - 'BUF_DATA_FORMAT', 'BUF_DATA_FORMAT_10_10_10_2', - 'BUF_DATA_FORMAT_10_11_11', 'BUF_DATA_FORMAT_11_11_10', - 'BUF_DATA_FORMAT_16', 'BUF_DATA_FORMAT_16_16', - 'BUF_DATA_FORMAT_16_16_16_16', 'BUF_DATA_FORMAT_2_10_10_10', - 'BUF_DATA_FORMAT_32', 'BUF_DATA_FORMAT_32_32', - 'BUF_DATA_FORMAT_32_32_32', 'BUF_DATA_FORMAT_32_32_32_32', - 'BUF_DATA_FORMAT_8', 'BUF_DATA_FORMAT_8_8', - 'BUF_DATA_FORMAT_8_8_8_8', 'BUF_DATA_FORMAT_INVALID', - 'BUF_DATA_FORMAT_RESERVED_15', 'BUF_NUM_FORMAT', - 'BUF_NUM_FORMAT_FLOAT', 'BUF_NUM_FORMAT_SINT', - 'BUF_NUM_FORMAT_SNORM', 'BUF_NUM_FORMAT_SSCALED', - 'BUF_NUM_FORMAT_UINT', 'BUF_NUM_FORMAT_UNORM', - 'BUF_NUM_FORMAT_UNORM_UINT', 'BUF_NUM_FORMAT_USCALED', - 'BankHeight', 'BankInterleaveSize', 'BankSwapBytes', 'BankTiling', - 'BankWidth', 'BankWidthHeight', 'BinEventCntl', 'BinningMode', - 'BlendOp', 'BlendOpt', 'CACHE_FLUSH', 'CACHE_FLUSH_AND_INV_EVENT', - 'CACHE_FLUSH_AND_INV_TS_EVENT', 'CACHE_FLUSH_TS', 'CBMode', - 'CBPerfClearFilterSel', 'CBPerfOpFilterSel', 'CBPerfSel', - 'CB_DCC_DECOMPRESS', 'CB_DECOMPRESS', 'CB_DISABLE', - 'CB_ELIMINATE_FAST_CLEAR', 'CB_FMASK_DECOMPRESS', 'CB_NORMAL', - 'CB_PERF_CLEAR_FILTER_SEL_CLEAR', - 'CB_PERF_CLEAR_FILTER_SEL_NONCLEAR', - 'CB_PERF_OP_FILTER_SEL_DECOMPRESS', - 'CB_PERF_OP_FILTER_SEL_ELIMINATE_FAST_CLEAR', - 'CB_PERF_OP_FILTER_SEL_FMASK_DECOMPRESS', - 'CB_PERF_OP_FILTER_SEL_NEEDS_DESTINATION', - 'CB_PERF_OP_FILTER_SEL_RESOLVE', - 'CB_PERF_OP_FILTER_SEL_WRITE_ONLY', - 'CB_PERF_SEL_BLENDER_RAW_HAZARD_STALL', - 'CB_PERF_SEL_BLEND_OPT_PIXELS_RESULT_EQ_DEST', 'CB_PERF_SEL_BUSY', - 'CB_PERF_SEL_CB_TAP_RDREQ_VALIDB_READY', - 'CB_PERF_SEL_CB_TAP_RDREQ_VALIDB_READYB', - 'CB_PERF_SEL_CB_TAP_RDREQ_VALID_READY', - 'CB_PERF_SEL_CB_TAP_RDREQ_VALID_READYB', - 'CB_PERF_SEL_CB_TAP_WRREQ_VALIDB_READY', - 'CB_PERF_SEL_CB_TAP_WRREQ_VALIDB_READYB', - 'CB_PERF_SEL_CB_TAP_WRREQ_VALID_READY', - 'CB_PERF_SEL_CB_TAP_WRREQ_VALID_READYB', - 'CB_PERF_SEL_CCR_TO_CCW_REGION_BUSY', - 'CB_PERF_SEL_CC_BC_CS_FRAG_VALID', - 'CB_PERF_SEL_CC_CACHE_ACK_OUTPUT_STALL', - 'CB_PERF_SEL_CC_CACHE_DIRTY_SECTORS_FLUSHED', - 'CB_PERF_SEL_CC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 'CB_PERF_SEL_CC_CACHE_FLUSH', 'CB_PERF_SEL_CC_CACHE_HIT', - 'CB_PERF_SEL_CC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 'CB_PERF_SEL_CC_CACHE_READS_SAVED_DUE_TO_DCC', - 'CB_PERF_SEL_CC_CACHE_READ_OUTPUT_STALL', - 'CB_PERF_SEL_CC_CACHE_REEVICTION_STALL', - 'CB_PERF_SEL_CC_CACHE_REPLACE_PENDING_EVICT_STALL', - 'CB_PERF_SEL_CC_CACHE_SECTORS_FLUSHED', - 'CB_PERF_SEL_CC_CACHE_SECTOR_MISS', 'CB_PERF_SEL_CC_CACHE_STALL', - 'CB_PERF_SEL_CC_CACHE_TAGS_FLUSHED', - 'CB_PERF_SEL_CC_CACHE_TAG_MISS', - 'CB_PERF_SEL_CC_CACHE_WA_TO_RMW_CONVERSION', - 'CB_PERF_SEL_CC_CACHE_WRITE_OUTPUT_STALL', - 'CB_PERF_SEL_CC_DCC_BEYOND_TILE_SPLIT', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_2TO1', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_4TO1', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_4TO2', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_4TO3', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO1', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO2', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO3', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO4', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_6TO5', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO1', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO2', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO3', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO4', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO5', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO6', - 'CB_PERF_SEL_CC_DCC_COMPRESS_RATIO_8TO7', - 'CB_PERF_SEL_CC_DCC_COMPRESS_TIDS_IN', - 'CB_PERF_SEL_CC_DCC_COMPRESS_TIDS_OUT', - 'CB_PERF_SEL_CC_DCC_DECOMPRESS_TIDS_IN', - 'CB_PERF_SEL_CC_DCC_DECOMPRESS_TIDS_OUT', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_4TO4', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_2TO2__2BLOCKS_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO1__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO2__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO3__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO3__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO4__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_4TO4__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO4', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO5', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__1BLOCK_6TO6', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__2BLOCKS_2TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__3BLOCKS_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__INV0', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO1__INV1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_2TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__1BLOCK_4TO4', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_2TO1__2BLOCKS_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO1__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO2__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO3__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO3__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_4TO4__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO4', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__1BLOCK_6TO5', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__2BLOCKS_2TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__3BLOCKS_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__INV0', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_2TO2__INV1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_2TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_2TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_4TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_4TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__1BLOCK_4TO4', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__2BLOCKS_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO1__2BLOCKS_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_2TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_2TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_4TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_4TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__1BLOCK_4TO4', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__2BLOCKS_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO2__2BLOCKS_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_2TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_2TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_4TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_4TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__1BLOCK_4TO4', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__2BLOCKS_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO3__2BLOCKS_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_2TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_2TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_4TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_4TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__1BLOCK_4TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_4TO4__2BLOCKS_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO1__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO2__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO3__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO3__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO4__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO4__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO5__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO5__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_6TO6__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO4', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO5', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO6', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__1BLOCK_8TO7', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_2TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__1BLOCK_4TO4', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO1__2BLOCKS_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_2TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_4TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_4TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__1BLOCK_4TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_2TO2__2BLOCKS_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_4TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_4TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__2BLOCKS_4TO3', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__3BLOCKS_2TO1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__3BLOCKS_2TO2__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__4_BLOCKS__2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__INV0__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__INV0__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__INV1__1BLOCK_2TO1', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__INV1__1BLOCK_2TO2', - 'CB_PERF_SEL_CC_DCC_KEY_VALUE__UNCOMPRESSED', - 'CB_PERF_SEL_CC_DCC_RDREQ_STALL', - 'CB_PERF_SEL_CC_EVENFIFO_QUAD_RESIDENCY_STALL', - 'CB_PERF_SEL_CC_IB_SR_FRAG_VALIDB_READY', - 'CB_PERF_SEL_CC_IB_SR_FRAG_VALIDB_READYB', - 'CB_PERF_SEL_CC_IB_SR_FRAG_VALID_READY', - 'CB_PERF_SEL_CC_IB_SR_FRAG_VALID_READYB', - 'CB_PERF_SEL_CC_IB_TB_FRAG_VALIDB_READY', - 'CB_PERF_SEL_CC_IB_TB_FRAG_VALIDB_READYB', - 'CB_PERF_SEL_CC_IB_TB_FRAG_VALID_READY', - 'CB_PERF_SEL_CC_IB_TB_FRAG_VALID_READYB', - 'CB_PERF_SEL_CC_MC_READ_REQUEST', - 'CB_PERF_SEL_CC_MC_READ_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_CC_MC_WRITE_REQUEST', - 'CB_PERF_SEL_CC_MC_WRITE_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_CC_ODDFIFO_QUAD_RESIDENCY_STALL', - 'CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALIDB_READY', - 'CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALIDB_READYB', - 'CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALID_READY', - 'CB_PERF_SEL_CC_RB_BC_EVENFRAG_VALID_READYB', - 'CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALIDB_READY', - 'CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALIDB_READYB', - 'CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALID_READY', - 'CB_PERF_SEL_CC_RB_BC_ODDFRAG_VALID_READYB', - 'CB_PERF_SEL_CC_RB_FULL', 'CB_PERF_SEL_CC_SF_FULL', - 'CB_PERF_SEL_CC_SURFACE_SYNC', 'CB_PERF_SEL_CMASK_READ_DATA_0xC', - 'CB_PERF_SEL_CMASK_READ_DATA_0xD', - 'CB_PERF_SEL_CMASK_READ_DATA_0xE', - 'CB_PERF_SEL_CMASK_READ_DATA_0xF', - 'CB_PERF_SEL_CMASK_WRITE_DATA_0xC', - 'CB_PERF_SEL_CMASK_WRITE_DATA_0xD', - 'CB_PERF_SEL_CMASK_WRITE_DATA_0xE', - 'CB_PERF_SEL_CMASK_WRITE_DATA_0xF', - 'CB_PERF_SEL_CMR_TO_FCR_REGION_BUSY', - 'CB_PERF_SEL_CM_CACHE_ACK_OUTPUT_STALL', - 'CB_PERF_SEL_CM_CACHE_DIRTY_SECTORS_FLUSHED', - 'CB_PERF_SEL_CM_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 'CB_PERF_SEL_CM_CACHE_FLUSH', 'CB_PERF_SEL_CM_CACHE_HIT', - 'CB_PERF_SEL_CM_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 'CB_PERF_SEL_CM_CACHE_READ_OUTPUT_STALL', - 'CB_PERF_SEL_CM_CACHE_REEVICTION_STALL', - 'CB_PERF_SEL_CM_CACHE_REPLACE_PENDING_EVICT_STALL', - 'CB_PERF_SEL_CM_CACHE_SECTORS_FLUSHED', - 'CB_PERF_SEL_CM_CACHE_SECTOR_MISS', 'CB_PERF_SEL_CM_CACHE_STALL', - 'CB_PERF_SEL_CM_CACHE_TAGS_FLUSHED', - 'CB_PERF_SEL_CM_CACHE_TAG_MISS', - 'CB_PERF_SEL_CM_CACHE_WRITE_OUTPUT_STALL', - 'CB_PERF_SEL_CM_FC_TILE_VALIDB_READY', - 'CB_PERF_SEL_CM_FC_TILE_VALIDB_READYB', - 'CB_PERF_SEL_CM_FC_TILE_VALID_READY', - 'CB_PERF_SEL_CM_FC_TILE_VALID_READYB', - 'CB_PERF_SEL_CM_MC_READ_REQUEST', - 'CB_PERF_SEL_CM_MC_READ_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_CM_MC_WRITE_REQUEST', - 'CB_PERF_SEL_CM_MC_WRITE_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_CM_TQ_FIFO_TILE_RESIDENCY_STALL', - 'CB_PERF_SEL_CM_TQ_FULL', 'CB_PERF_SEL_CORE_SCLK_VLD', - 'CB_PERF_SEL_DB_CB_LQUAD_VALIDB_READY', - 'CB_PERF_SEL_DB_CB_LQUAD_VALIDB_READYB', - 'CB_PERF_SEL_DB_CB_LQUAD_VALID_READY', - 'CB_PERF_SEL_DB_CB_LQUAD_VALID_READYB', - 'CB_PERF_SEL_DB_CB_TILE_VALIDB_READY', - 'CB_PERF_SEL_DB_CB_TILE_VALIDB_READYB', - 'CB_PERF_SEL_DB_CB_TILE_VALID_READY', - 'CB_PERF_SEL_DB_CB_TILE_VALID_READYB', 'CB_PERF_SEL_DRAWN_BUSY', - 'CB_PERF_SEL_DRAWN_PIXEL', 'CB_PERF_SEL_DRAWN_QUAD', - 'CB_PERF_SEL_DRAWN_QUAD_FRAGMENT', 'CB_PERF_SEL_DRAWN_TILE', - 'CB_PERF_SEL_DUAL_SOURCE_COLOR_QUAD_FRAGMENT', - 'CB_PERF_SEL_EVENT', 'CB_PERF_SEL_EVENT_CACHE_FLUSH', - 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_EVENT', - 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_TS_EVENT', - 'CB_PERF_SEL_EVENT_CACHE_FLUSH_TS', - 'CB_PERF_SEL_EVENT_CONTEXT_DONE', - 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_DATA_TS', - 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_META', - 'CB_PERF_SEL_EXPORT_32_ABGR_QUAD_FRAGMENT', - 'CB_PERF_SEL_FCR_TO_CCR_REGION_BUSY', - 'CB_PERF_SEL_FC_CACHE_ACK_OUTPUT_STALL', - 'CB_PERF_SEL_FC_CACHE_DIRTY_SECTORS_FLUSHED', - 'CB_PERF_SEL_FC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 'CB_PERF_SEL_FC_CACHE_FLUSH', 'CB_PERF_SEL_FC_CACHE_HIT', - 'CB_PERF_SEL_FC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 'CB_PERF_SEL_FC_CACHE_READ_OUTPUT_STALL', - 'CB_PERF_SEL_FC_CACHE_REEVICTION_STALL', - 'CB_PERF_SEL_FC_CACHE_REPLACE_PENDING_EVICT_STALL', - 'CB_PERF_SEL_FC_CACHE_SECTORS_FLUSHED', - 'CB_PERF_SEL_FC_CACHE_SECTOR_MISS', 'CB_PERF_SEL_FC_CACHE_STALL', - 'CB_PERF_SEL_FC_CACHE_TAGS_FLUSHED', - 'CB_PERF_SEL_FC_CACHE_TAG_MISS', - 'CB_PERF_SEL_FC_CACHE_WRITE_OUTPUT_STALL', - 'CB_PERF_SEL_FC_CC_QUADFRAG_VALIDB_READY', - 'CB_PERF_SEL_FC_CC_QUADFRAG_VALIDB_READYB', - 'CB_PERF_SEL_FC_CC_QUADFRAG_VALID_READY', - 'CB_PERF_SEL_FC_CC_QUADFRAG_VALID_READYB', - 'CB_PERF_SEL_FC_CLEAR_QUAD_VALIDB_READY', - 'CB_PERF_SEL_FC_CLEAR_QUAD_VALIDB_READYB', - 'CB_PERF_SEL_FC_CLEAR_QUAD_VALID_READY', - 'CB_PERF_SEL_FC_CLEAR_QUAD_VALID_READYB', - 'CB_PERF_SEL_FC_DCC_CACHE_ACK_OUTPUT_STALL', - 'CB_PERF_SEL_FC_DCC_CACHE_DIRTY_SECTORS_FLUSHED', - 'CB_PERF_SEL_FC_DCC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 'CB_PERF_SEL_FC_DCC_CACHE_FLUSH', 'CB_PERF_SEL_FC_DCC_CACHE_HIT', - 'CB_PERF_SEL_FC_DCC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 'CB_PERF_SEL_FC_DCC_CACHE_READ_OUTPUT_STALL', - 'CB_PERF_SEL_FC_DCC_CACHE_REEVICTION_STALL', - 'CB_PERF_SEL_FC_DCC_CACHE_REPLACE_PENDING_EVICT_STALL', - 'CB_PERF_SEL_FC_DCC_CACHE_SECTORS_FLUSHED', - 'CB_PERF_SEL_FC_DCC_CACHE_SECTOR_MISS', - 'CB_PERF_SEL_FC_DCC_CACHE_STALL', - 'CB_PERF_SEL_FC_DCC_CACHE_TAGS_FLUSHED', - 'CB_PERF_SEL_FC_DCC_CACHE_TAG_MISS', - 'CB_PERF_SEL_FC_DCC_CACHE_WRITE_OUTPUT_STALL', - 'CB_PERF_SEL_FC_DCC_KEY_VALUE__CLEAR', - 'CB_PERF_SEL_FC_DOC_CLINE_CAM_HIT', - 'CB_PERF_SEL_FC_DOC_CLINE_CAM_MISS', - 'CB_PERF_SEL_FC_DOC_IS_STALLED', - 'CB_PERF_SEL_FC_DOC_MRTS_COMBINED', - 'CB_PERF_SEL_FC_DOC_MRTS_NOT_COMBINED', - 'CB_PERF_SEL_FC_DOC_OVERWROTE_1_SECTOR', - 'CB_PERF_SEL_FC_DOC_OVERWROTE_2_SECTORS', - 'CB_PERF_SEL_FC_DOC_OVERWROTE_3_SECTORS', - 'CB_PERF_SEL_FC_DOC_OVERWROTE_4_SECTORS', - 'CB_PERF_SEL_FC_DOC_QTILE_CAM_HIT', - 'CB_PERF_SEL_FC_DOC_QTILE_CAM_MISS', - 'CB_PERF_SEL_FC_DOC_QUAD_PTR_FIFO_IS_FULL', - 'CB_PERF_SEL_FC_DOC_TOTAL_OVERWRITTEN_SECTORS', - 'CB_PERF_SEL_FC_KEYID_RDLAT_FIFO_FULL', - 'CB_PERF_SEL_FC_MC_DCC_READ_REQUEST', - 'CB_PERF_SEL_FC_MC_DCC_READ_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_FC_MC_DCC_WRITE_REQUEST', - 'CB_PERF_SEL_FC_MC_DCC_WRITE_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_FC_MC_READ_REQUEST', - 'CB_PERF_SEL_FC_MC_READ_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_FC_MC_WRITE_REQUEST', - 'CB_PERF_SEL_FC_MC_WRITE_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_FC_PF_SLOW_MODE_QUAD_EMPTY_HALF_DROPPED', - 'CB_PERF_SEL_FC_QUAD_RDLAT_FIFO_FULL', - 'CB_PERF_SEL_FC_RDLAT_FIFO_QUAD_RESIDENCY_STALL', - 'CB_PERF_SEL_FC_SEQUENCER_CLEAR', - 'CB_PERF_SEL_FC_SEQUENCER_ELIMINATE_FAST_CLEAR', - 'CB_PERF_SEL_FC_SEQUENCER_FMASK_COMPRESSION_DISABLE', - 'CB_PERF_SEL_FC_SEQUENCER_FMASK_DECOMPRESS', - 'CB_PERF_SEL_FC_TILE_RDLAT_FIFO_FULL', - 'CB_PERF_SEL_FOP_FMASK_BYPASS_STALL', - 'CB_PERF_SEL_FOP_FMASK_RAW_STALL', - 'CB_PERF_SEL_FOP_IN_VALIDB_READY', - 'CB_PERF_SEL_FOP_IN_VALIDB_READYB', - 'CB_PERF_SEL_FOP_IN_VALID_READY', - 'CB_PERF_SEL_FOP_IN_VALID_READYB', - 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_ABGR', - 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_AR', - 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_GR', - 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_32_R', - 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_FP16_ABGR', - 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_SIGNED16_ABGR', - 'CB_PERF_SEL_LQUAD_FORMAT_IS_EXPORT_UNSIGNED16_ABGR', - 'CB_PERF_SEL_LQUAD_NO_TILE', - 'CB_PERF_SEL_MERGE_TILE_ONLY_VALID_READY', - 'CB_PERF_SEL_MERGE_TILE_ONLY_VALID_READYB', 'CB_PERF_SEL_NONE', - 'CB_PERF_SEL_QUAD_ADDED_1_FRAGMENT', - 'CB_PERF_SEL_QUAD_ADDED_2_FRAGMENTS', - 'CB_PERF_SEL_QUAD_ADDED_3_FRAGMENTS', - 'CB_PERF_SEL_QUAD_ADDED_4_FRAGMENTS', - 'CB_PERF_SEL_QUAD_ADDED_5_FRAGMENTS', - 'CB_PERF_SEL_QUAD_ADDED_6_FRAGMENTS', - 'CB_PERF_SEL_QUAD_ADDED_7_FRAGMENTS', - 'CB_PERF_SEL_QUAD_BLENDING_COULD_HAVE_BEEN_BYPASSED', - 'CB_PERF_SEL_QUAD_BLEND_OPT_BLEND_BYPASS', - 'CB_PERF_SEL_QUAD_BLEND_OPT_DISCARD_PIXELS', - 'CB_PERF_SEL_QUAD_BLEND_OPT_DONT_READ_DST', - 'CB_PERF_SEL_QUAD_COULD_HAVE_BEEN_DISCARDED', - 'CB_PERF_SEL_QUAD_DST_READ_COULD_HAVE_BEEN_OPTIMIZED', - 'CB_PERF_SEL_QUAD_HAS_1_FRAGMENT_AFTER_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_1_FRAGMENT_BEFORE_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_2_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_2_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_3_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_3_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_4_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_4_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_5_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_5_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_6_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_6_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_7_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_7_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_8_FRAGMENTS_AFTER_UPDATE', - 'CB_PERF_SEL_QUAD_HAS_8_FRAGMENTS_BEFORE_UPDATE', - 'CB_PERF_SEL_QUAD_KILLED_BY_COLOR_INVALID', - 'CB_PERF_SEL_QUAD_KILLED_BY_DISCARD_PIXEL', - 'CB_PERF_SEL_QUAD_KILLED_BY_EXTRA_PIXEL_EXPORT', - 'CB_PERF_SEL_QUAD_KILLED_BY_NULL_SAMPLE_MASK', - 'CB_PERF_SEL_QUAD_KILLED_BY_NULL_TARGET_SHADER_MASK', - 'CB_PERF_SEL_QUAD_READS_FRAGMENT_0', - 'CB_PERF_SEL_QUAD_READS_FRAGMENT_1', - 'CB_PERF_SEL_QUAD_READS_FRAGMENT_2', - 'CB_PERF_SEL_QUAD_READS_FRAGMENT_3', - 'CB_PERF_SEL_QUAD_READS_FRAGMENT_4', - 'CB_PERF_SEL_QUAD_READS_FRAGMENT_5', - 'CB_PERF_SEL_QUAD_READS_FRAGMENT_6', - 'CB_PERF_SEL_QUAD_READS_FRAGMENT_7', - 'CB_PERF_SEL_QUAD_REMOVED_1_FRAGMENT', - 'CB_PERF_SEL_QUAD_REMOVED_2_FRAGMENTS', - 'CB_PERF_SEL_QUAD_REMOVED_3_FRAGMENTS', - 'CB_PERF_SEL_QUAD_REMOVED_4_FRAGMENTS', - 'CB_PERF_SEL_QUAD_REMOVED_5_FRAGMENTS', - 'CB_PERF_SEL_QUAD_REMOVED_6_FRAGMENTS', - 'CB_PERF_SEL_QUAD_REMOVED_7_FRAGMENTS', - 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_0', - 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_1', - 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_2', - 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_3', - 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_4', - 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_5', - 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_6', - 'CB_PERF_SEL_QUAD_WRITES_FRAGMENT_7', - 'CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_BOTH', - 'CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_LEFT', - 'CB_PERF_SEL_RBP_EXPORT_8PIX_LIT_RIGHT', - 'CB_PERF_SEL_RBP_INSERT_MISSING_LAST_QUAD', - 'CB_PERF_SEL_RBP_SPLIT_AA_NO_FMASK_COMPRESS', - 'CB_PERF_SEL_RBP_SPLIT_AA_SAMPLE_MASK', - 'CB_PERF_SEL_RBP_SPLIT_LINEAR_ADDRESSING', - 'CB_PERF_SEL_RBP_SPLIT_MICROTILE', - 'CB_PERF_SEL_RBP_SPLIT_PARTIAL_TARGET_MASK', - 'CB_PERF_SEL_REG_SCLK0_VLD', 'CB_PERF_SEL_REG_SCLK1_VLD', - 'CB_PERF_SEL_TILE_TO_CMR_REGION_BUSY', - 'CB_PERF_SEL_TWO_PROBE_QUAD_FRAGMENT', 'CB_RESOLVE', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_0', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_1', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_2', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_3', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_4', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_5', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_6', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_ALL', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_0', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_1', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_2', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_3', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_4', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_5', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_6', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_ALL', - 'CENTERS_ONLY', 'CENTROIDS_AND_CENTERS', 'CENTROIDS_ONLY', - 'CHUB_TC_RET_CREDITS', 'CHUB_TC_RET_CREDITS_ENUM', - 'CLEAR_SMU_INTR', 'CLKGATE_BASE_MODE', 'CLKGATE_SM_MODE', - 'CLOCK_BRANCH_SOFT_RESET', 'CLOCK_BRANCH_SOFT_RESET_FORCE', - 'CLOCK_BRANCH_SOFT_RESET_NOOP', 'CLOCK_GATING_DISABLED', - 'CLOCK_GATING_DISABLED_IN_DCO', 'CLOCK_GATING_ENABLED', - 'CLOCK_GATING_ENABLED_IN_DCO', 'CMASK_ADDR_COMPATIBLE', - 'CMASK_ADDR_LINEAR', 'CMASK_ADDR_TILED', 'CMASK_ALPHA0_FRAG1', - 'CMASK_ALPHA0_FRAG2', 'CMASK_ALPHA0_FRAG4', 'CMASK_ALPHA0_FRAGS', - 'CMASK_ALPHA1_FRAG1', 'CMASK_ALPHA1_FRAG2', 'CMASK_ALPHA1_FRAG4', - 'CMASK_ALPHA1_FRAGS', 'CMASK_ALPHAX_FRAG1', 'CMASK_ALPHAX_FRAG2', - 'CMASK_ALPHAX_FRAG4', 'CMASK_ALPHAX_FRAGS', 'CMASK_ANY_EXPANDED', - 'CMASK_CLEAR_ALL', 'CMASK_CLEAR_NONE', 'CMASK_CLEAR_ONE', - 'CMASK_CLR00_F0', 'CMASK_CLR00_F1', 'CMASK_CLR00_F2', - 'CMASK_CLR00_FX', 'CMASK_CLR01_F0', 'CMASK_CLR01_F1', - 'CMASK_CLR01_F2', 'CMASK_CLR01_FX', 'CMASK_CLR10_F0', - 'CMASK_CLR10_F1', 'CMASK_CLR10_F2', 'CMASK_CLR10_FX', - 'CMASK_CLR11_F0', 'CMASK_CLR11_F1', 'CMASK_CLR11_F2', - 'CMASK_CLR11_FX', 'CMD_EMBEDDED_MODE_DISABLE', - 'CMD_EMBEDDED_MODE_ENABLE', 'CM_GLOBAL_PASSTHROUGH_DISBALE', - 'CM_GLOBAL_PASSTHROUGH_ENABLE', 'COEF_UPDATE_COMPLETE', - 'COEF_UPDATE_NOT_COMPLETE', 'COLOR_10_10_10_2', 'COLOR_10_11_11', - 'COLOR_11_11_10', 'COLOR_16', 'COLOR_16_16', 'COLOR_16_16_16_16', - 'COLOR_1_5_5_5', 'COLOR_24_8', 'COLOR_2_10_10_10', - 'COLOR_2_10_10_10_6E4', 'COLOR_32', 'COLOR_32_32', - 'COLOR_32_32_32_32', 'COLOR_4_4_4_4', 'COLOR_5_5_5_1', - 'COLOR_5_6_5', 'COLOR_8', 'COLOR_8_24', 'COLOR_8_8', - 'COLOR_8_8_8_8', 'COLOR_INVALID', 'COLOR_RESERVED_13', - 'COLOR_RESERVED_15', 'COLOR_RESERVED_23', 'COLOR_RESERVED_24', - 'COLOR_RESERVED_25', 'COLOR_RESERVED_26', 'COLOR_RESERVED_27', - 'COLOR_RESERVED_28', 'COLOR_RESERVED_29', 'COLOR_RESERVED_30', - 'COLOR_X24_8_32_FLOAT', 'COL_MAN_DEGAMMA_MODE', - 'COL_MAN_DENORM_CLAMP_CONTROL', 'COL_MAN_DISABLE_MULTIPLE_UPDATE', - 'COL_MAN_GAMUT_REMAP_MODE', 'COL_MAN_GLOBAL_PASSTHROUGH_ENABLE', - 'COL_MAN_INPUTCSC_CONVERT', 'COL_MAN_INPUTCSC_MODE', - 'COL_MAN_INPUTCSC_TYPE', 'COL_MAN_INPUT_GAMMA_MODE', - 'COL_MAN_MULTIPLE_UPDATE', 'COL_MAN_MULTIPLE_UPDAT_EDISABLE', - 'COL_MAN_OUTPUT_CSC_A', 'COL_MAN_OUTPUT_CSC_B', - 'COL_MAN_OUTPUT_CSC_BYPASS', 'COL_MAN_OUTPUT_CSC_MODE', - 'COL_MAN_OUTPUT_CSC_RGB', 'COL_MAN_OUTPUT_CSC_UNITY', - 'COL_MAN_OUTPUT_CSC_YCrCb601', 'COL_MAN_OUTPUT_CSC_YCrCb709', - 'COL_MAN_PRESCALE_MODE', 'COL_MAN_REGAMMA_MODE_A', - 'COL_MAN_REGAMMA_MODE_B', 'COL_MAN_REGAMMA_MODE_BYPASS', - 'COL_MAN_REGAMMA_MODE_CONTROL', 'COL_MAN_REGAMMA_MODE_ROM_A', - 'COL_MAN_REGAMMA_MODE_ROM_B', 'COL_MAN_UPDATE_LOCK', - 'COL_MAN_UPDATE_LOCKED', 'COL_MAN_UPDATE_UNLOCKED', - 'COMB_DST_MINUS_SRC', 'COMB_DST_PLUS_SRC', 'COMB_MAX_DST_SRC', - 'COMB_MIN_DST_SRC', 'COMB_SRC_MINUS_DST', 'COMPONENT_DEPTH_10BPC', - 'COMPONENT_DEPTH_12BPC', 'COMPONENT_DEPTH_16BPC', - 'COMPONENT_DEPTH_6BPC', 'COMPONENT_DEPTH_8BPC', - 'CONFIG_128B_SWAPS', 'CONFIG_1KB_ROW', 'CONFIG_1KB_ROW_OPT', - 'CONFIG_1KB_SPLIT', 'CONFIG_1KB_SWAPS', 'CONFIG_1_PIPE', - 'CONFIG_256B_GROUP', 'CONFIG_256B_SWAPS', 'CONFIG_2KB_ROW', - 'CONFIG_2KB_ROW_OPT', 'CONFIG_2KB_SPLIT', 'CONFIG_2_PIPE', - 'CONFIG_4KB_ROW', 'CONFIG_4KB_ROW_OPT', 'CONFIG_4KB_SPLIT', - 'CONFIG_4_BANK', 'CONFIG_4_PIPE', 'CONFIG_512B_GROUP', - 'CONFIG_512B_SWAPS', 'CONFIG_8KB_ROW', 'CONFIG_8KB_ROW_OPT', - 'CONFIG_8KB_SPLIT', 'CONFIG_8_BANK', 'CONFIG_8_PIPE', - 'CONFIG_SPACE1_END', 'CONFIG_SPACE1_START', 'CONFIG_SPACE2_END', - 'CONFIG_SPACE2_START', 'CONFIG_SPACE_END', 'CONFIG_SPACE_START', - 'CONTEXT_DONE', 'CONTEXT_SPACE_END', 'CONTEXT_SPACE_START', - 'CONTEXT_SUSPEND', 'CONTROLLER_RESET_AZ_CONTROLLER_IN_RESET', - 'CONTROLLER_RESET_AZ_CONTROLLER_NOT_IN_RESET', - 'CORB_READ_POINTER_RESET', - 'CORB_READ_POINTER_RESET_CORB_DMA_IS_NOT_RESET', - 'CORB_READ_POINTER_RESET_CORB_DMA_IS_RESET', 'COUNTER_RING_0', - 'COUNTER_RING_1', 'COUNTER_RING_SPLIT', 'CPC_PERFCOUNT_SEL', - 'CPC_PERF_SEL_ALWAYS_COUNT', - 'CPC_PERF_SEL_ME1_BUSY_FOR_PACKET_DECODE', - 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ', - 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ_PERF', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_MIU_READ', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_MIU_WRITE', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READ', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY_PERF', - 'CPC_PERF_SEL_ME2_BUSY_FOR_PACKET_DECODE', - 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ', - 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ_PERF', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_MIU_READ', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_MIU_WRITE', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READ', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY_PERF', - 'CPC_PERF_SEL_MIU_STALL_ON_RDREQ_FREE', - 'CPC_PERF_SEL_MIU_STALL_ON_WRREQ_FREE', - 'CPC_PERF_SEL_RCIU_STALL_PRIV_VIOLATION', - 'CPC_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', - 'CPC_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 'CPC_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', 'CPC_TAG_RAM', - 'CPF_PERFCOUNT_SEL', 'CPF_PERF_SEL_ALWAYS_COUNT', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FECTHINC_STATE', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB1', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB2', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_RING', - 'CPF_PERF_SEL_CSF_FETCHING_CMD_BUFFERS', - 'CPF_PERF_SEL_CSF_RTS_MIU_NOT_RTR', - 'CPF_PERF_SEL_CSF_STATE_FIFO_NOT_RTR', - 'CPF_PERF_SEL_DYNAMIC_CLOCK_VALID', - 'CPF_PERF_SEL_GRBM_DWORDS_SENT', - 'CPF_PERF_SEL_MIU_BUSY_FOR_OUTSTANDING_TAGS', - 'CPF_PERF_SEL_MIU_READ_REQUEST_SEND', - 'CPF_PERF_SEL_MIU_STALLED_WAITING_RDREQ_FREE', - 'CPF_PERF_SEL_MIU_WRITE_REQUEST_SEND', - 'CPF_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', - 'CPF_PERF_SEL_REGISTER_CLOCK_VALID', - 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_FREE', - 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_TAGS', - 'CPF_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', 'CPF_TAG_RAM', - 'CPG_PERFCOUNT_SEL', 'CPG_PERF_SEL_ALWAYS_COUNT', - 'CPG_PERF_SEL_CE_STALL_ON_CE_BUFFER_FLAG', - 'CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_MIU', - 'CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_ROQ', - 'CPG_PERF_SEL_CE_STALL_ON_DE_COUNTER', - 'CPG_PERF_SEL_CE_STALL_ON_INC_FIFO', - 'CPG_PERF_SEL_CE_STALL_ON_WR_RAM_FIFO', - 'CPG_PERF_SEL_CE_STALL_RAM_DUMP', - 'CPG_PERF_SEL_CE_STALL_RAM_WRITE', - 'CPG_PERF_SEL_COUNT_TYPE0_PACKETS', - 'CPG_PERF_SEL_COUNT_TYPE3_PACKETS', - 'CPG_PERF_SEL_CP_GDS_GRBM_OUT_OF_CREDITS', - 'CPG_PERF_SEL_CP_GRBM_DWORDS_SENT', - 'CPG_PERF_SEL_CP_GRBM_OUT_OF_CREDITS', - 'CPG_PERF_SEL_CP_PFP_GRBM_OUT_OF_CREDITS', - 'CPG_PERF_SEL_CSF_FETCHING_CMD_BUFFERS', - 'CPG_PERF_SEL_CSF_RTS_BUT_MIU_NOT_RTR', - 'CPG_PERF_SEL_CSF_ST_BASE_SIZE_FIFO_FULL', - 'CPG_PERF_SEL_DYNAMIC_CLK_VALID', - 'CPG_PERF_SEL_LOAD_STALLED_ON_SET_COHERENCY', - 'CPG_PERF_SEL_ME_PARSER_BUSY', - 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_PFP', - 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_STQ', - 'CPG_PERF_SEL_ME_STALLED_ON_NO_AVAIL_GFX_CNTX', - 'CPG_PERF_SEL_ME_STALLED_ON_PARTIAL_FLUSH', - 'CPG_PERF_SEL_ME_STALLED_WRITING_CONSTANTS', - 'CPG_PERF_SEL_ME_STALLED_WRITING_TO_RCIU', - 'CPG_PERF_SEL_ME_WAIT_ON_AVAIL_BUFFER', - 'CPG_PERF_SEL_ME_WAIT_ON_CE_COUNTER', - 'CPG_PERF_SEL_MIU_READ_REQUEST_SENT', - 'CPG_PERF_SEL_MIU_WRITE_REQUEST_SENT', - 'CPG_PERF_SEL_PFP_STALLED_FOR_DATA_FROM_ROQ', - 'CPG_PERF_SEL_PFP_STALLED_ON_CSF_READY', - 'CPG_PERF_SEL_PFP_STALLED_ON_MEQ_READY', - 'CPG_PERF_SEL_PFP_STALLED_ON_RCIU_READY', - 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_PULSE', - 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_WR_CONFIRM', - 'CPG_PERF_SEL_RBIU_FIFO_FULL', - 'CPG_PERF_SEL_RCIU_STALLED_ON_DMA_READ', - 'CPG_PERF_SEL_RCIU_STALLED_ON_ME_READ', - 'CPG_PERF_SEL_REGISTER_CLK_VALID', - 'CPG_PERF_SEL_SEMAPHORE_BUSY_POLLING_FOR_PASS', - 'CPG_PERF_SEL_SSU_STALLED_ON_ACTIVE_CNTX', - 'CPG_PERF_SEL_SSU_STALLED_ON_CLEAN_SIGNALS', - 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_TAGS', - 'CPG_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', 'CPG_TAG_RAM', - 'CP_ALPHA_TAG_RAM_SEL', 'CP_ME_ID', 'CP_PERFMON_ENABLE_MODE', - 'CP_PERFMON_ENABLE_MODE_ALWAYS_COUNT', - 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_FALSE', - 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_TRUE', - 'CP_PERFMON_ENABLE_MODE_RESERVED_1', 'CP_PERFMON_STATE', - 'CP_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', - 'CP_PERFMON_STATE_DISABLE_AND_RESET', - 'CP_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 'CP_PERFMON_STATE_RESERVED_3', 'CP_PERFMON_STATE_START_COUNTING', - 'CP_PERFMON_STATE_STOP_COUNTING', 'CP_PIPE_ID', 'CP_RING_ID', - 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN', - 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN_DB', - 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN_DB_FALSE', - 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN_DB_TRUE', - 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN_FALSE', - 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_EN_TRUE', - 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_STEREO_SEL_OVR', - 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_STEREO_SEL_OVR_FALSE', - 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_STEREO_SEL_OVR_TRUE', - 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_V_UPDATE_MODE', - 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_BOTH', - 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_INTERLACE', - 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_PROGRASSIVE', - 'CRTC_3D_STRUCTURE_CONTROL_CRTC_3D_STRUCTURE_V_UPDATE_MODE_RESERVED', - 'CRTC_ADD_PIXEL', 'CRTC_ADD_PIXEL_FORCE', 'CRTC_ADD_PIXEL_NOOP', - 'CRTC_BLANK_CONTROL_CRTC_BLANK_DATA_EN', - 'CRTC_BLANK_CONTROL_CRTC_BLANK_DATA_EN_FALSE', - 'CRTC_BLANK_CONTROL_CRTC_BLANK_DATA_EN_TRUE', - 'CRTC_BLANK_CONTROL_CRTC_BLANK_DE_MODE', - 'CRTC_BLANK_CONTROL_CRTC_BLANK_DE_MODE_FALSE', - 'CRTC_BLANK_CONTROL_CRTC_BLANK_DE_MODE_TRUE', - 'CRTC_CONTROL_CRTC_DISABLE_POINT_CNTL', - 'CRTC_CONTROL_CRTC_DISABLE_POINT_CNTL_DISABLE', - 'CRTC_CONTROL_CRTC_DISABLE_POINT_CNTL_DISABLE_CURRENT', - 'CRTC_CONTROL_CRTC_DISABLE_POINT_CNTL_DISABLE_FIRST', - 'CRTC_CONTROL_CRTC_DISABLE_POINT_CNTL_RESERVED', - 'CRTC_CONTROL_CRTC_DISP_READ_REQUEST_DISABLE', - 'CRTC_CONTROL_CRTC_DISP_READ_REQUEST_DISABLE_FALSE', - 'CRTC_CONTROL_CRTC_DISP_READ_REQUEST_DISABLE_TRUE', - 'CRTC_CONTROL_CRTC_FIELD_NUMBER_CNTL', - 'CRTC_CONTROL_CRTC_FIELD_NUMBER_CNTL_DP', - 'CRTC_CONTROL_CRTC_FIELD_NUMBER_CNTL_NORMAL', - 'CRTC_CONTROL_CRTC_FIELD_NUMBER_POLARITY', - 'CRTC_CONTROL_CRTC_FIELD_NUMBER_POLARITY_FALSE', - 'CRTC_CONTROL_CRTC_FIELD_NUMBER_POLARITY_TRUE', - 'CRTC_CONTROL_CRTC_MASTER_EN', - 'CRTC_CONTROL_CRTC_MASTER_EN_FALSE', - 'CRTC_CONTROL_CRTC_MASTER_EN_TRUE', - 'CRTC_CONTROL_CRTC_SOF_PULL_EN', - 'CRTC_CONTROL_CRTC_SOF_PULL_EN_FALSE', - 'CRTC_CONTROL_CRTC_SOF_PULL_EN_TRUE', - 'CRTC_CONTROL_CRTC_START_POINT_CNTL', - 'CRTC_CONTROL_CRTC_START_POINT_CNTL_DP', - 'CRTC_CONTROL_CRTC_START_POINT_CNTL_NORMAL', - 'CRTC_COUNT_CONTROL_CRTC_HORZ_COUNT_BY2_EN', - 'CRTC_COUNT_CONTROL_CRTC_HORZ_COUNT_BY2_EN_FALSE', - 'CRTC_COUNT_CONTROL_CRTC_HORZ_COUNT_BY2_EN_TRUE', - 'CRTC_CRC_CNTL_CRTC_CRC_CONT_EN', - 'CRTC_CRC_CNTL_CRTC_CRC_CONT_EN_FALSE', - 'CRTC_CRC_CNTL_CRTC_CRC_CONT_EN_TRUE', - 'CRTC_CRC_CNTL_CRTC_CRC_EN', 'CRTC_CRC_CNTL_CRTC_CRC_EN_FALSE', - 'CRTC_CRC_CNTL_CRTC_CRC_EN_TRUE', - 'CRTC_CRC_CNTL_CRTC_CRC_INTERLACE_MODE', - 'CRTC_CRC_CNTL_CRTC_CRC_INTERLACE_MODE_BOTH_BOTTOM', - 'CRTC_CRC_CNTL_CRTC_CRC_INTERLACE_MODE_BOTH_FIELD', - 'CRTC_CRC_CNTL_CRTC_CRC_INTERLACE_MODE_BOTTOM', - 'CRTC_CRC_CNTL_CRTC_CRC_INTERLACE_MODE_TOP', - 'CRTC_CRC_CNTL_CRTC_CRC_STEREO_MODE', - 'CRTC_CRC_CNTL_CRTC_CRC_STEREO_MODE_BOTH_EYES', - 'CRTC_CRC_CNTL_CRTC_CRC_STEREO_MODE_BOTH_FIELDS', - 'CRTC_CRC_CNTL_CRTC_CRC_STEREO_MODE_LEFT', - 'CRTC_CRC_CNTL_CRTC_CRC_STEREO_MODE_RIGHT', - 'CRTC_CRC_CNTL_CRTC_CRC_USE_NEW_AND_REPEATED_PIXELS', - 'CRTC_CRC_CNTL_CRTC_CRC_USE_NEW_AND_REPEATED_PIXELS_FALSE', - 'CRTC_CRC_CNTL_CRTC_CRC_USE_NEW_AND_REPEATED_PIXELS_TRUE', - 'CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT', - 'CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_IAB', - 'CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_IA_B', - 'CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_I_AB', - 'CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_I_A_B', - 'CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_UAB', - 'CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_UA_B', - 'CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_U_AB', - 'CRTC_CRC_CNTL_CRTC_CRTC_CRC0_SELECT_U_A_B', - 'CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT', - 'CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_IAB', - 'CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_IA_B', - 'CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_I_AB', - 'CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_I_A_B', - 'CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_UAB', - 'CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_UA_B', - 'CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_U_AB', - 'CRTC_CRC_CNTL_CRTC_CRTC_CRC1_SELECT_U_A_B', - 'CRTC_DOUBLE_BUFFER_CONTROL_CRTC_BLANK_DATA_DOUBLE_BUFFER_EN', - 'CRTC_DOUBLE_BUFFER_CONTROL_CRTC_BLANK_DATA_DOUBLE_BUFFER_EN_FALSE', - 'CRTC_DOUBLE_BUFFER_CONTROL_CRTC_BLANK_DATA_DOUBLE_BUFFER_EN_TRUE', - 'CRTC_DOUBLE_BUFFER_CONTROL_CRTC_RANGE_TIMING_DBUF_UPDATE_MODE', - 'CRTC_DOUBLE_BUFFER_CONTROL_CRTC_RANGE_TIMING_DBUF_UPDATE_MODE_0', - 'CRTC_DOUBLE_BUFFER_CONTROL_CRTC_RANGE_TIMING_DBUF_UPDATE_MODE_1', - 'CRTC_DOUBLE_BUFFER_CONTROL_CRTC_UPDATE_INSTANTLY', - 'CRTC_DOUBLE_BUFFER_CONTROL_CRTC_UPDATE_INSTANTLY_FALSE', - 'CRTC_DOUBLE_BUFFER_CONTROL_CRTC_UPDATE_INSTANTLY_TRUE', - 'CRTC_DROP_PIXEL', 'CRTC_DROP_PIXEL_FORCE', - 'CRTC_DROP_PIXEL_NOOP', 'CRTC_DRR_MODE_DBUF_UPDATE_MODE', - 'CRTC_DRR_MODE_DBUF_UPDATE_MODE_00_IMMEDIATE', - 'CRTC_DRR_MODE_DBUF_UPDATE_MODE_01_MANUAL', - 'CRTC_DRR_MODE_DBUF_UPDATE_MODE_10_DBUF', - 'CRTC_DRR_MODE_DBUF_UPDATE_MODE_11_SYNCED_DBUF', - 'CRTC_DTMTEST_CNTL_CRTC_DTMTEST_CRTC_EN', - 'CRTC_DTMTEST_CNTL_CRTC_DTMTEST_CRTC_EN_FALSE', - 'CRTC_DTMTEST_CNTL_CRTC_DTMTEST_CRTC_EN_TRUE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_ENABLE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_ENABLE_CONTINUOUS', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_ENABLE_DISABLE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_ENABLE_ONESHOT', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_ENABLE_RESERVED', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE_FALSE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HCOUNT_MODE_ENABLE_TRUE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HSYNC_POLARITY', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HSYNC_POLARITY_FALSE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_HSYNC_POLARITY_TRUE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_INTERLACE_MODE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_INTERLACE_MODE_FALSE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_INTERLACE_MODE_TRUE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE_FALSE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_ENABLE_TRUE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_1pixel', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_2pixel', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_3pixel', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_JITTER_FILTERING_WINDOW_4pixel', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_VSYNC_POLARITY', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_VSYNC_POLARITY_FALSE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_VSYNC_POLARITY_TRUE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_ENABLE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_ENABLE_FALSE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_ENABLE_TRUE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_UPDATE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_UPDATE_FALSE', - 'CRTC_EXT_TIMING_SYNC_CONTROL_CRTC_EXT_TIMING_SYNC_WINDOW_UPDATE_TRUE', - 'CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_CLEAR', - 'CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_CLEAR_FALSE', - 'CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_CLEAR_TRUE', - 'CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_ENABLE', - 'CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_ENABLE_FALSE', - 'CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_ENABLE_TRUE', - 'CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_TYPE', - 'CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_TYPE_FALSE', - 'CRTC_EXT_TIMING_SYNC_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_INT_TYPE_TRUE', - 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_CLEAR', - 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_CLEAR_FALSE', - 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_CLEAR_TRUE', - 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT', - 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_128FRAME', - 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_16FRAME', - 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_1FRAME', - 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_2FRAME', - 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_32FRAME', - 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_4FRAME', - 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_64FRAME', - 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_FRAME_COUNT_8FRAME', - 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_ENABLE', - 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_ENABLE_FALSE', - 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_ENABLE_TRUE', - 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_TYPE', - 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_TYPE_FALSE', - 'CRTC_EXT_TIMING_SYNC_LOSS_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_LOSS_INT_TYPE_TRUE', - 'CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_CLEAR', - 'CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_CLEAR_FALSE', - 'CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_CLEAR_TRUE', - 'CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE', - 'CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE_FALSE', - 'CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_ENABLE_TRUE', - 'CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_TYPE', - 'CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_TYPE_FALSE', - 'CRTC_EXT_TIMING_SYNC_SIGNAL_INTERRUPT_CONTROL_CRTC_EXT_TIMING_SYNC_SIGNAL_INT_TYPE_TRUE', - 'CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_ALIGNMENT', - 'CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_ALIGNMENT_FALSE', - 'CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_ALIGNMENT_TRUE', - 'CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_INDICATION_OUTPUT_POLARITY', - 'CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_INDICATION_OUTPUT_POLARITY_FALSE', - 'CRTC_FIELD_INDICATION_CONTROL_CRTC_FIELD_INDICATION_OUTPUT_POLARITY_TRUE', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_GRANULARITY', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_GRANULARITY_FALSE', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_GRANULARITY_TRUE', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_POLARITY', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_POLARITY_FALSE', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_POLARITY_TRUE', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_DDC1CLK', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_DDC1DATA', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_DDC2CLK', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_DDC2DATA', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_DVOCLK', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_GENERICA', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_GENERICB', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_GENERICC', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_GENERICD', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_GENERICE', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_GENERICF', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_HPD1', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_HPD2', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_LOGIC0', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_LOGIC1', - 'CRTC_FLOW_CONTROL_CRTC_FLOW_CONTROL_SOURCE_SELECT_MANUAL', - 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CHECK', - 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CHECK_FALSE', - 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CHECK_TRUE', - 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CLEAR', - 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CLEAR_FALSE', - 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_CLEAR_TRUE', - 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_MODE', - 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_MODE_DISABLE', - 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_MODE_HCOUNT', - 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_MODE_HCOUNT_VCOUNT', - 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_MODE_RESERVED', - 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_TRIG_SEL', - 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_TRIG_SEL_FALSE', - 'CRTC_FORCE_COUNT_NOW_CNTL_CRTC_FORCE_COUNT_NOW_TRIG_SEL_TRUE', - 'CRTC_HORZ_REPETITION_COUNT', 'CRTC_HORZ_REPETITION_COUNT_0', - 'CRTC_HORZ_REPETITION_COUNT_1', 'CRTC_HORZ_REPETITION_COUNT_10', - 'CRTC_HORZ_REPETITION_COUNT_11', 'CRTC_HORZ_REPETITION_COUNT_12', - 'CRTC_HORZ_REPETITION_COUNT_13', 'CRTC_HORZ_REPETITION_COUNT_14', - 'CRTC_HORZ_REPETITION_COUNT_15', 'CRTC_HORZ_REPETITION_COUNT_2', - 'CRTC_HORZ_REPETITION_COUNT_3', 'CRTC_HORZ_REPETITION_COUNT_4', - 'CRTC_HORZ_REPETITION_COUNT_5', 'CRTC_HORZ_REPETITION_COUNT_6', - 'CRTC_HORZ_REPETITION_COUNT_7', 'CRTC_HORZ_REPETITION_COUNT_8', - 'CRTC_HORZ_REPETITION_COUNT_9', 'CRTC_H_SYNC_A_POL', - 'CRTC_H_SYNC_A_POL_HIGH', 'CRTC_H_SYNC_A_POL_LOW', - 'CRTC_H_SYNC_B_CNTL_CRTC_H_SYNC_B_POL', - 'CRTC_H_SYNC_B_CNTL_CRTC_H_SYNC_B_POL_FALSE', - 'CRTC_H_SYNC_B_CNTL_CRTC_H_SYNC_B_POL_TRUE', - 'CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_ENABLE', - 'CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_ENABLE_FALSE', - 'CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_ENABLE_TRUE', - 'CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_FORCE_NEXT_FIELD', - 'CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_FORCE_NEXT_FIELD_EVEN', - 'CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_FORCE_NEXT_FIELD_NOT', - 'CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_FORCE_NEXT_FIELD_NOT2', - 'CRTC_INTERLACE_CONTROL_CRTC_INTERLACE_FORCE_NEXT_FIELD_ODD', - 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_MSK', - 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_MSK_FALSE', - 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_MSK_TRUE', - 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_TYPE', - 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_TYPE_FALSE', - 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_COUNT_NOW_INT_TYPE_TRUE', - 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_MSK', - 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_MSK_FALSE', - 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_MSK_TRUE', - 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_TYPE', - 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_TYPE_FALSE', - 'CRTC_INTERRUPT_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_INT_TYPE_TRUE', - 'CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_MSK', - 'CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_MSK_FALSE', - 'CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_MSK_TRUE', - 'CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_TYPE', - 'CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_TYPE_FALSE', - 'CRTC_INTERRUPT_CONTROL_CRTC_GSL_VSYNC_GAP_INT_TYPE_TRUE', - 'CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_MSK', - 'CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_MSK_FALSE', - 'CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_MSK_TRUE', - 'CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_TYPE', - 'CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_TYPE_FALSE', - 'CRTC_INTERRUPT_CONTROL_CRTC_SNAPSHOT_INT_TYPE_TRUE', - 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_MSK', - 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_MSK_FALSE', - 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_MSK_TRUE', - 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_TYPE', - 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_TYPE_FALSE', - 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGA_INT_TYPE_TRUE', - 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_MSK', - 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_MSK_FALSE', - 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_MSK_TRUE', - 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_TYPE', - 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_TYPE_FALSE', - 'CRTC_INTERRUPT_CONTROL_CRTC_TRIGB_INT_TYPE_TRUE', - 'CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_MSK', - 'CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_MSK_FALSE', - 'CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_MSK_TRUE', - 'CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_TYPE', - 'CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_TYPE_FALSE', - 'CRTC_INTERRUPT_CONTROL_CRTC_VSYNC_NOM_INT_TYPE_TRUE', - 'CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_MSK', - 'CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_MSK_FALSE', - 'CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_MSK_TRUE', - 'CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_TYPE', - 'CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_TYPE_FALSE', - 'CRTC_INTERRUPT_CONTROL_CRTC_V_UPDATE_INT_TYPE_TRUE', - 'CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE_CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE', - 'CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE_CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE_FALSE', - 'CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE_CRTC_MANUAL_FORCE_VSYNC_NEXT_LINE_TRUE', - 'CRTC_MVP_INBAND_CNTL_INSERT_CRTC_MVP_INBAND_OUT_MODE', - 'CRTC_MVP_INBAND_CNTL_INSERT_CRTC_MVP_INBAND_OUT_MODE_DEBUG', - 'CRTC_MVP_INBAND_CNTL_INSERT_CRTC_MVP_INBAND_OUT_MODE_DISABLE', - 'CRTC_MVP_INBAND_CNTL_INSERT_CRTC_MVP_INBAND_OUT_MODE_NORMAL', - 'CRTC_MVP_STATUS_CRTC_AFR_HSYNC_SWITCH_DONE_CLEAR', - 'CRTC_MVP_STATUS_CRTC_AFR_HSYNC_SWITCH_DONE_CLEAR_FALSE', - 'CRTC_MVP_STATUS_CRTC_AFR_HSYNC_SWITCH_DONE_CLEAR_TRUE', - 'CRTC_MVP_STATUS_CRTC_FLIP_NOW_CLEAR', - 'CRTC_MVP_STATUS_CRTC_FLIP_NOW_CLEAR_FALSE', - 'CRTC_MVP_STATUS_CRTC_FLIP_NOW_CLEAR_TRUE', - 'CRTC_SNAPSHOT_CONTROL_CRTC_AUTO_SNAPSHOT_TRIG_SEL', - 'CRTC_SNAPSHOT_CONTROL_CRTC_AUTO_SNAPSHOT_TRIG_SEL_DISABLE', - 'CRTC_SNAPSHOT_CONTROL_CRTC_AUTO_SNAPSHOT_TRIG_SEL_RESERVED', - 'CRTC_SNAPSHOT_CONTROL_CRTC_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERA', - 'CRTC_SNAPSHOT_CONTROL_CRTC_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERB', - 'CRTC_SNAPSHOT_STATUS_CRTC_SNAPSHOT_CLEAR', - 'CRTC_SNAPSHOT_STATUS_CRTC_SNAPSHOT_CLEAR_FALSE', - 'CRTC_SNAPSHOT_STATUS_CRTC_SNAPSHOT_CLEAR_TRUE', - 'CRTC_START_LINE_CONTROL_CRTC_INTERLACE_START_LINE_EARLY', - 'CRTC_START_LINE_CONTROL_CRTC_INTERLACE_START_LINE_EARLY_FALSE', - 'CRTC_START_LINE_CONTROL_CRTC_INTERLACE_START_LINE_EARLY_TRUE', - 'CRTC_START_LINE_CONTROL_CRTC_LEGACY_REQUESTOR_EN', - 'CRTC_START_LINE_CONTROL_CRTC_LEGACY_REQUESTOR_EN_FALSE', - 'CRTC_START_LINE_CONTROL_CRTC_LEGACY_REQUESTOR_EN_TRUE', - 'CRTC_START_LINE_CONTROL_CRTC_PREFETCH_EN', - 'CRTC_START_LINE_CONTROL_CRTC_PREFETCH_EN_FALSE', - 'CRTC_START_LINE_CONTROL_CRTC_PREFETCH_EN_TRUE', - 'CRTC_START_LINE_CONTROL_CRTC_PROGRESSIVE_START_LINE_EARLY', - 'CRTC_START_LINE_CONTROL_CRTC_PROGRESSIVE_START_LINE_EARLY_FALSE', - 'CRTC_START_LINE_CONTROL_CRTC_PROGRESSIVE_START_LINE_EARLY_TRUE', - 'CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_CLEAR', - 'CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_CLEAR_FALSE', - 'CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_CLEAR_TRUE', - 'CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_ENABLE', - 'CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_ENABLE_FALSE', - 'CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_ENABLE_TRUE', - 'CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_TYPE', - 'CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_TYPE_FALSE', - 'CRTC_STATIC_SCREEN_CONTROL_CRTC_CPU_SS_INT_TYPE_TRUE', - 'CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE', - 'CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE_FALSE', - 'CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE_TRUE', - 'CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE_VALUE', - 'CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE_VALUE_OFF', - 'CRTC_STATIC_SCREEN_CONTROL_CRTC_STATIC_SCREEN_OVERRIDE_VALUE_ON', - 'CRTC_STEREO_CONTROL_CRTC_STEREO_EN', - 'CRTC_STEREO_CONTROL_CRTC_STEREO_EN_FALSE', - 'CRTC_STEREO_CONTROL_CRTC_STEREO_EN_TRUE', - 'CRTC_STEREO_CONTROL_CRTC_STEREO_EYE_FLAG_POLARITY', - 'CRTC_STEREO_CONTROL_CRTC_STEREO_EYE_FLAG_POLARITY_FALSE', - 'CRTC_STEREO_CONTROL_CRTC_STEREO_EYE_FLAG_POLARITY_TRUE', - 'CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_OUTPUT_POLARITY', - 'CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_OUTPUT_POLARITY_FALSE', - 'CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_OUTPUT_POLARITY_TRUE', - 'CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_SELECT_POLARITY', - 'CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_SELECT_POLARITY_FALSE', - 'CRTC_STEREO_CONTROL_CRTC_STEREO_SYNC_SELECT_POLARITY_TRUE', - 'CRTC_STEREO_FORCE_NEXT_EYE_CRTC_STEREO_FORCE_NEXT_EYE', - 'CRTC_STEREO_FORCE_NEXT_EYE_CRTC_STEREO_FORCE_NEXT_EYE_LEFT', - 'CRTC_STEREO_FORCE_NEXT_EYE_CRTC_STEREO_FORCE_NEXT_EYE_NO', - 'CRTC_STEREO_FORCE_NEXT_EYE_CRTC_STEREO_FORCE_NEXT_EYE_RESERVED', - 'CRTC_STEREO_FORCE_NEXT_EYE_CRTC_STEREO_FORCE_NEXT_EYE_RIGHT', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_COLOR_FORMAT', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_COLOR_FORMAT_10BPC', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_COLOR_FORMAT_6BPC', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_COLOR_FORMAT_8BPC', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_COLOR_FORMAT_RESERVED', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_DYNAMIC_RANGE', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_DYNAMIC_RANGE_FALSE', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_DYNAMIC_RANGE_TRUE', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_EN', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_EN_FALSE', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_EN_TRUE', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_DRRGB', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_HBARS', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_RGB', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_SRRGB', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_VBARS', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_XRBIAS', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_YCBCR601', - 'CRTC_TEST_PATTERN_CONTROL_CRTC_TEST_PATTERN_MODE_YCBCR709', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_CLEAR', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_CLEAR_FALSE', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_CLEAR_TRUE', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_GENERICA', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_GENERICB', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_GENERICC', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_HSYNCA', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_HSYNCB', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_INTERLACE', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_POLARITY_SELECT_VIDEO', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_RESYNC_BYPASS_EN', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_RESYNC_BYPASS_EN_FALSE', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_RESYNC_BYPASS_EN_TRUE', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_GENERICA', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_GENERICB', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_GENERICC', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_GENERICD', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_GENERICE', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_GENERICF', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_HPD1', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_HPD2', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_HSYNCA', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_HSYNCA_OTHER', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_HSYNCB', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_IBLON', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_IGSL0', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_IGSL1', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_IGSL2', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_IGSL_ALLOW', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_MANUAL_FLOW', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_VSYNCA', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_VSYNCA_OTHER', - 'CRTC_TRIGA_CNTL_CRTC_TRIGA_SOURCE_SELECT_VSYNCB', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_CLEAR', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_CLEAR_FALSE', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_CLEAR_TRUE', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_GENERICA', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_GENERICB', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_GENERICC', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_HSYNCA', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_HSYNCB', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_INTERLACE', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_POLARITY_SELECT_VIDEO', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_RESYNC_BYPASS_EN', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_RESYNC_BYPASS_EN_FALSE', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_RESYNC_BYPASS_EN_TRUE', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_GENERICA', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_GENERICB', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_GENERICC', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_GENERICD', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_GENERICE', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_GENERICF', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_HPD1', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_HPD2', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_HSYNCA', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_HSYNCA_OTHER', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_HSYNCB', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_IBLON', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_IGSL0', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_IGSL1', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_IGSL2', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_IGSL_ALLOW', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_MANUAL_FLOW', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_VSYNCA', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_VSYNCA_OTHER', - 'CRTC_TRIGB_CNTL_CRTC_TRIGB_SOURCE_SELECT_VSYNCB', - 'CRTC_UPDATE_LOCK_CRTC_UPDATE_LOCK', - 'CRTC_UPDATE_LOCK_CRTC_UPDATE_LOCK_FALSE', - 'CRTC_UPDATE_LOCK_CRTC_UPDATE_LOCK_TRUE', - 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_CLEAR', - 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_CLEAR_FALSE', - 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_CLEAR_TRUE', - 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_ENABLE', - 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_ENABLE_FALSE', - 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_ENABLE_TRUE', - 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_TYPE', - 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_TYPE_FALSE', - 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_INT_TYPE_TRUE', - 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_OUTPUT_POLARITY', - 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_FALSE', - 'CRTC_VERTICAL_INTERRUPT0_CONTROL_CRTC_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_TRUE', - 'CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_CLEAR', - 'CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_CLEAR_CLEAR_FALSE', - 'CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_CLEAR_TRUE', - 'CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_ENABLE', - 'CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_ENABLE_FALSE', - 'CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_ENABLE_TRUE', - 'CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_TYPE', - 'CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_TYPE_FALSE', - 'CRTC_VERTICAL_INTERRUPT1_CONTROL_CRTC_VERTICAL_INTERRUPT1_INT_TYPE_TRUE', - 'CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_CLEAR', - 'CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_CLEAR_CLEAR_FALSE', - 'CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_CLEAR_TRUE', - 'CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_ENABLE', - 'CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_ENABLE_FALSE', - 'CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_ENABLE_TRUE', - 'CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_TYPE', - 'CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_TYPE_FALSE', - 'CRTC_VERTICAL_INTERRUPT2_CONTROL_CRTC_VERTICAL_INTERRUPT2_INT_TYPE_TRUE', - 'CRTC_VERT_SYNC_CONTROL_CRTC_AUTO_FORCE_VSYNC_MODE', - 'CRTC_VERT_SYNC_CONTROL_CRTC_AUTO_FORCE_VSYNC_MODE_DISABLE', - 'CRTC_VERT_SYNC_CONTROL_CRTC_AUTO_FORCE_VSYNC_MODE_RESERVED', - 'CRTC_VERT_SYNC_CONTROL_CRTC_AUTO_FORCE_VSYNC_MODE_TRIGGERA', - 'CRTC_VERT_SYNC_CONTROL_CRTC_AUTO_FORCE_VSYNC_MODE_TRIGGERB', - 'CRTC_VERT_SYNC_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_CLEAR', - 'CRTC_VERT_SYNC_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_CLEAR_FALSE', - 'CRTC_VERT_SYNC_CONTROL_CRTC_FORCE_VSYNC_NEXT_LINE_CLEAR_TRUE', - 'CRTC_VGA_PARAMETER_CAPTURE_MODE_CRTC_VGA_PARAMETER_CAPTURE_MODE', - 'CRTC_VGA_PARAMETER_CAPTURE_MODE_CRTC_VGA_PARAMETER_CAPTURE_MODE_FALSE', - 'CRTC_VGA_PARAMETER_CAPTURE_MODE_CRTC_VGA_PARAMETER_CAPTURE_MODE_TRUE', - 'CRTC_VSYNC_NOM_INT_STATUS_CRTC_VSYNC_NOM_INT_CLEAR', - 'CRTC_VSYNC_NOM_INT_STATUS_CRTC_VSYNC_NOM_INT_CLEAR_FALSE', - 'CRTC_VSYNC_NOM_INT_STATUS_CRTC_VSYNC_NOM_INT_CLEAR_TRUE', - 'CRTC_V_SYNC_A_POL', 'CRTC_V_SYNC_A_POL_HIGH', - 'CRTC_V_SYNC_A_POL_LOW', 'CRTC_V_SYNC_B_CNTL_CRTC_V_SYNC_B_POL', - 'CRTC_V_SYNC_B_CNTL_CRTC_V_SYNC_B_POL_FALSE', - 'CRTC_V_SYNC_B_CNTL_CRTC_V_SYNC_B_POL_TRUE', - 'CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_ON_EVENT', - 'CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_ON_EVENT_DISABLE', - 'CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_ON_EVENT_ENABLE', - 'CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_TO_MASTER_VSYNC', - 'CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_TO_MASTER_VSYNC_DISABLE', - 'CRTC_V_TOTAL_CONTROL_CRTC_FORCE_LOCK_TO_MASTER_VSYNC_ENABLE', - 'CRTC_V_TOTAL_CONTROL_CRTC_SET_V_TOTAL_MIN_MASK_EN', - 'CRTC_V_TOTAL_CONTROL_CRTC_SET_V_TOTAL_MIN_MASK_EN_FALSE', - 'CRTC_V_TOTAL_CONTROL_CRTC_SET_V_TOTAL_MIN_MASK_EN_TRUE', - 'CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MAX_SEL', - 'CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MAX_SEL_FALSE', - 'CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MAX_SEL_TRUE', - 'CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MIN_SEL', - 'CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MIN_SEL_FALSE', - 'CRTC_V_TOTAL_CONTROL_CRTC_V_TOTAL_MIN_SEL_TRUE', - 'CRTC_V_TOTAL_INT_STATUS_CRTC_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK', - 'CRTC_V_TOTAL_INT_STATUS_CRTC_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK_FALSE', - 'CRTC_V_TOTAL_INT_STATUS_CRTC_SET_V_TOTAL_MIN_EVENT_OCCURED_ACK_TRUE', - 'CRTC_V_UPDATE_INT_STATUS_CRTC_V_UPDATE_INT_CLEAR', - 'CRTC_V_UPDATE_INT_STATUS_CRTC_V_UPDATE_INT_CLEAR_FALSE', - 'CRTC_V_UPDATE_INT_STATUS_CRTC_V_UPDATE_INT_CLEAR_TRUE', - 'CSDATA_ADDR_WIDTH', 'CSDATA_DATA_WIDTH', 'CSDATA_TYPE', - 'CSDATA_TYPE_EVENT', 'CSDATA_TYPE_PRIVATE', 'CSDATA_TYPE_STATE', - 'CSDATA_TYPE_TG', 'CSDATA_TYPE_WIDTH', 'CS_CONTEXT_DONE', - 'CS_DONE', 'CS_PARTIAL_FLUSH', 'CS_STAGE_ON', 'CmaskAddr', - 'CmaskCode', 'CmaskMode', 'ColorArray', 'ColorFormat', - 'ColorTransform', 'CombFunc', 'CompareFrag', 'CompareRef', - 'ConservativeZExport', 'CovToShaderSel', 'DACA_SOFT_RESET', - 'DACA_SOFT_RESET_0', 'DACA_SOFT_RESET_1', 'DAC_MUX_SELECT', - 'DAC_MUX_SELECT_DACA', 'DAC_MUX_SELECT_DACB', 'DB_CACHE_FLUSH', - 'DB_CACHE_FLUSH_AND_INV', 'DB_CACHE_FLUSH_AND_INV_EVENT', - 'DB_CACHE_FLUSH_AND_INV_TS_EVENT', 'DB_CACHE_FLUSH_TS', - 'DB_CLK_SOFT_RESET', 'DB_CLK_SOFT_RESET_0', 'DB_CLK_SOFT_RESET_1', - 'DB_FLUSH_AND_INV_DB_DATA_TS', 'DB_FLUSH_AND_INV_DB_META', - 'DB_PEFF_SEL_prezl_tile_mem_stall', - 'DB_PERF_SEL_CB_DB_rdreq_prt_sends', - 'DB_PERF_SEL_CB_DB_rdreq_sends', - 'DB_PERF_SEL_CB_DB_wrreq_prt_sends', - 'DB_PERF_SEL_CB_DB_wrreq_sends', 'DB_PERF_SEL_DB_CB_lquad_busy', - 'DB_PERF_SEL_DB_CB_lquad_double_format', - 'DB_PERF_SEL_DB_CB_lquad_export_quads', - 'DB_PERF_SEL_DB_CB_lquad_fast_format', - 'DB_PERF_SEL_DB_CB_lquad_quads', 'DB_PERF_SEL_DB_CB_lquad_sends', - 'DB_PERF_SEL_DB_CB_lquad_slow_format', - 'DB_PERF_SEL_DB_CB_lquad_stalls', 'DB_PERF_SEL_DB_CB_rdret_ack', - 'DB_PERF_SEL_DB_CB_rdret_nack', 'DB_PERF_SEL_DB_CB_tile_busy', - 'DB_PERF_SEL_DB_CB_tile_sends', 'DB_PERF_SEL_DB_CB_tile_stalls', - 'DB_PERF_SEL_DB_CB_wrret_ack', 'DB_PERF_SEL_DB_CB_wrret_nack', - 'DB_PERF_SEL_DB_SC_quad_busy', - 'DB_PERF_SEL_DB_SC_quad_double_quad', - 'DB_PERF_SEL_DB_SC_quad_lit_quad', 'DB_PERF_SEL_DB_SC_quad_sends', - 'DB_PERF_SEL_DB_SC_quad_stalls', 'DB_PERF_SEL_DB_SC_quad_tiles', - 'DB_PERF_SEL_DB_SC_tile_busy', 'DB_PERF_SEL_DB_SC_tile_culled', - 'DB_PERF_SEL_DB_SC_tile_df_stalls', - 'DB_PERF_SEL_DB_SC_tile_fast_ops', - 'DB_PERF_SEL_DB_SC_tile_fast_stencil_ops', - 'DB_PERF_SEL_DB_SC_tile_fast_z_ops', - 'DB_PERF_SEL_DB_SC_tile_hier_kill', - 'DB_PERF_SEL_DB_SC_tile_no_ops', 'DB_PERF_SEL_DB_SC_tile_sends', - 'DB_PERF_SEL_DB_SC_tile_ssaa_kill', - 'DB_PERF_SEL_DB_SC_tile_stalls', - 'DB_PERF_SEL_DB_SC_tile_tile_rate', - 'DB_PERF_SEL_DB_SC_tile_tiles', - 'DB_PERF_SEL_DFSM_cant_accept_squads_but_not_stalled_by_downstream', - 'DB_PERF_SEL_DFSM_collisions_detected_within_POPS_FIFO', - 'DB_PERF_SEL_DFSM_collisions_due_to_POPS_overflow', - 'DB_PERF_SEL_DFSM_cycles_above_watermark', - 'DB_PERF_SEL_DFSM_evicted_squads_above_watermark', - 'DB_PERF_SEL_DFSM_evicted_squads_due_to_prim_watermark', - 'DB_PERF_SEL_DFSM_full_cleared_squads_out', - 'DB_PERF_SEL_DFSM_fully_cleared_pixels_out', - 'DB_PERF_SEL_DFSM_fully_cleared_quads_out', - 'DB_PERF_SEL_DFSM_lit_pixels_in', - 'DB_PERF_SEL_DFSM_lit_samples_in', - 'DB_PERF_SEL_DFSM_lit_samples_out', 'DB_PERF_SEL_DFSM_quads_in', - 'DB_PERF_SEL_DFSM_squads_in', - 'DB_PERF_SEL_DFSM_stalled_by_downstream', - 'DB_PERF_SEL_Depth_Tile_Cache_alloc_stall', - 'DB_PERF_SEL_Depth_Tile_Cache_busy', - 'DB_PERF_SEL_Depth_Tile_Cache_data_frees', - 'DB_PERF_SEL_Depth_Tile_Cache_detailed_noop', - 'DB_PERF_SEL_Depth_Tile_Cache_dtile_locked', - 'DB_PERF_SEL_Depth_Tile_Cache_event', - 'DB_PERF_SEL_Depth_Tile_Cache_flushes', - 'DB_PERF_SEL_Depth_Tile_Cache_hits', - 'DB_PERF_SEL_Depth_Tile_Cache_mem_return_starve', - 'DB_PERF_SEL_Depth_Tile_Cache_misses', - 'DB_PERF_SEL_Depth_Tile_Cache_noop_tile', - 'DB_PERF_SEL_Depth_Tile_Cache_sends', - 'DB_PERF_SEL_Depth_Tile_Cache_starves', - 'DB_PERF_SEL_Depth_Tile_Cache_tile_frees', - 'DB_PERF_SEL_Op_Pipe_Busy', 'DB_PERF_SEL_Op_Pipe_MC_Read_stall', - 'DB_PERF_SEL_Op_Pipe_Postz_Busy', 'DB_PERF_SEL_Op_Pipe_Prez_Busy', - 'DB_PERF_SEL_Plane_Cache_flushes', - 'DB_PERF_SEL_Plane_Cache_frees', 'DB_PERF_SEL_Plane_Cache_hits', - 'DB_PERF_SEL_Plane_Cache_misses', - 'DB_PERF_SEL_Plane_Cache_starves', - 'DB_PERF_SEL_PostZ_Samples_failing_DB', - 'DB_PERF_SEL_PostZ_Samples_failing_S', - 'DB_PERF_SEL_PostZ_Samples_failing_Z', - 'DB_PERF_SEL_PostZ_Samples_passing_Z', - 'DB_PERF_SEL_PreZ_Samples_failing_DB', - 'DB_PERF_SEL_PreZ_Samples_failing_S', - 'DB_PERF_SEL_PreZ_Samples_failing_Z', - 'DB_PERF_SEL_PreZ_Samples_passing_Z', - 'DB_PERF_SEL_SC_DB_quad_busy', - 'DB_PERF_SEL_SC_DB_quad_killed_tiles', - 'DB_PERF_SEL_SC_DB_quad_pixels', 'DB_PERF_SEL_SC_DB_quad_sends', - 'DB_PERF_SEL_SC_DB_quad_squads', 'DB_PERF_SEL_SC_DB_quad_tiles', - 'DB_PERF_SEL_SC_DB_tile_busy', 'DB_PERF_SEL_SC_DB_tile_covered', - 'DB_PERF_SEL_SC_DB_tile_events', 'DB_PERF_SEL_SC_DB_tile_sends', - 'DB_PERF_SEL_SC_DB_tile_stalls', 'DB_PERF_SEL_SC_DB_tile_tiles', - 'DB_PERF_SEL_SH_quads_outstanding_sum', - 'DB_PERF_SEL_SX_DB_quad_busy', - 'DB_PERF_SEL_SX_DB_quad_double_format', - 'DB_PERF_SEL_SX_DB_quad_export_quads', - 'DB_PERF_SEL_SX_DB_quad_exports', - 'DB_PERF_SEL_SX_DB_quad_fast_format', - 'DB_PERF_SEL_SX_DB_quad_pixels', 'DB_PERF_SEL_SX_DB_quad_quads', - 'DB_PERF_SEL_SX_DB_quad_sends', - 'DB_PERF_SEL_SX_DB_quad_slow_format', - 'DB_PERF_SEL_SX_DB_quad_stalls', - 'DB_PERF_SEL_Stencil_Cache_flushes', - 'DB_PERF_SEL_Stencil_Cache_frees', - 'DB_PERF_SEL_Stencil_Cache_hits', - 'DB_PERF_SEL_Stencil_Cache_misses', - 'DB_PERF_SEL_Stencil_Cache_starves', - 'DB_PERF_SEL_Tile_Cache_flushes', 'DB_PERF_SEL_Tile_Cache_hits', - 'DB_PERF_SEL_Tile_Cache_mem_return_starve', - 'DB_PERF_SEL_Tile_Cache_misses', 'DB_PERF_SEL_Tile_Cache_starves', - 'DB_PERF_SEL_Tile_Cache_surface_stall', - 'DB_PERF_SEL_Z_Cache_frees', 'DB_PERF_SEL_Z_Cache_pmask_flushes', - 'DB_PERF_SEL_Z_Cache_pmask_hits', - 'DB_PERF_SEL_Z_Cache_pmask_misses', - 'DB_PERF_SEL_Z_Cache_pmask_starves', - 'DB_PERF_SEL_Z_Cache_separate_Z_flushes', - 'DB_PERF_SEL_Z_Cache_separate_Z_hits', - 'DB_PERF_SEL_Z_Cache_separate_Z_misses', - 'DB_PERF_SEL_Z_Cache_separate_Z_starves', - 'DB_PERF_SEL_clock_main_active', - 'DB_PERF_SEL_clock_mem_export_active', - 'DB_PERF_SEL_clock_reg_active', - 'DB_PERF_SEL_depth_bounds_qtiles_culled', - 'DB_PERF_SEL_di_dt_stall', 'DB_PERF_SEL_dk_squad_busy', - 'DB_PERF_SEL_dk_squad_sends', 'DB_PERF_SEL_dk_squad_stalls', - 'DB_PERF_SEL_dk_tile_busy', 'DB_PERF_SEL_dk_tile_quad_starves', - 'DB_PERF_SEL_dk_tile_sends', 'DB_PERF_SEL_dk_tile_stalls', - 'DB_PERF_SEL_dkg_tile_rate_tile', - 'DB_PERF_SEL_dtt_sm_clash_stall', 'DB_PERF_SEL_dtt_sm_miss_stall', - 'DB_PERF_SEL_dtt_sm_slot_stall', - 'DB_PERF_SEL_earlyZ_waiting_for_postZ_done', - 'DB_PERF_SEL_esr_eot_fwd_busy', 'DB_PERF_SEL_esr_eot_fwd_forward', - 'DB_PERF_SEL_esr_eot_fwd_holding_squad', - 'DB_PERF_SEL_esr_ps_lqf_busy', 'DB_PERF_SEL_esr_ps_lqf_stall', - 'DB_PERF_SEL_esr_ps_out_busy', 'DB_PERF_SEL_esr_ps_sqq_busy', - 'DB_PERF_SEL_esr_ps_sqq_stall', 'DB_PERF_SEL_esr_ps_src_in_sends', - 'DB_PERF_SEL_esr_ps_src_in_squads', - 'DB_PERF_SEL_esr_ps_src_in_squads_unrolled', - 'DB_PERF_SEL_esr_ps_src_in_stall', - 'DB_PERF_SEL_esr_ps_src_in_tile_rate', - 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled', - 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled_to_pixel_rate', - 'DB_PERF_SEL_esr_ps_src_out_stall', 'DB_PERF_SEL_esr_sqq_zi_busy', - 'DB_PERF_SEL_esr_sqq_zi_stall', 'DB_PERF_SEL_etr_out_busy', - 'DB_PERF_SEL_etr_out_cb_tile_stall', - 'DB_PERF_SEL_etr_out_esr_stall', - 'DB_PERF_SEL_etr_out_ltile_probe_fifo_full_stall', - 'DB_PERF_SEL_etr_out_send', 'DB_PERF_SEL_flush_10plane', - 'DB_PERF_SEL_flush_11plane', 'DB_PERF_SEL_flush_12plane', - 'DB_PERF_SEL_flush_13plane', 'DB_PERF_SEL_flush_14plane', - 'DB_PERF_SEL_flush_15plane', 'DB_PERF_SEL_flush_16plane', - 'DB_PERF_SEL_flush_1plane', 'DB_PERF_SEL_flush_2plane', - 'DB_PERF_SEL_flush_3plane', 'DB_PERF_SEL_flush_4plane', - 'DB_PERF_SEL_flush_5plane', 'DB_PERF_SEL_flush_6plane', - 'DB_PERF_SEL_flush_7plane', 'DB_PERF_SEL_flush_8plane', - 'DB_PERF_SEL_flush_9plane', 'DB_PERF_SEL_flush_compressed', - 'DB_PERF_SEL_flush_compressed_stencil', - 'DB_PERF_SEL_flush_expanded_stencil', - 'DB_PERF_SEL_flush_expanded_z', 'DB_PERF_SEL_flush_plane_le4', - 'DB_PERF_SEL_flush_single_stencil', - 'DB_PERF_SEL_his_qtiles_culled', 'DB_PERF_SEL_hiz_qtiles_culled', - 'DB_PERF_SEL_hiz_tc_read_starved', - 'DB_PERF_SEL_hiz_tc_write_stall', - 'DB_PERF_SEL_mi_quad_rd_outstanding_sum', - 'DB_PERF_SEL_mi_quad_wr_outstanding_sum', - 'DB_PERF_SEL_mi_rdreq_busy', 'DB_PERF_SEL_mi_rdreq_stall', - 'DB_PERF_SEL_mi_tile_rd_outstanding_sum', - 'DB_PERF_SEL_mi_tile_wr_outstanding_sum', - 'DB_PERF_SEL_mi_wrreq_busy', 'DB_PERF_SEL_mi_wrreq_stall', - 'DB_PERF_SEL_planes_flushed', 'DB_PERF_SEL_postzl_full_launch', - 'DB_PERF_SEL_postzl_partial_launch', - 'DB_PERF_SEL_postzl_partial_waiting', - 'DB_PERF_SEL_postzl_se_busy', 'DB_PERF_SEL_postzl_se_stall', - 'DB_PERF_SEL_postzl_sq_pt_busy', 'DB_PERF_SEL_postzl_sq_pt_stall', - 'DB_PERF_SEL_postzl_src_in_sends', - 'DB_PERF_SEL_postzl_src_in_squads', - 'DB_PERF_SEL_postzl_src_in_squads_unrolled', - 'DB_PERF_SEL_postzl_src_in_stall', - 'DB_PERF_SEL_postzl_src_in_tile_rate', - 'DB_PERF_SEL_postzl_src_in_tile_rate_unrolled', - 'DB_PERF_SEL_postzl_src_out_stall', - 'DB_PERF_SEL_postzl_tile_init_stall', - 'DB_PERF_SEL_postzl_tile_mem_stall', - 'DB_PERF_SEL_prezl_src_in_sends', - 'DB_PERF_SEL_prezl_src_in_squads', - 'DB_PERF_SEL_prezl_src_in_squads_unrolled', - 'DB_PERF_SEL_prezl_src_in_stall', - 'DB_PERF_SEL_prezl_src_in_tile_rate', - 'DB_PERF_SEL_prezl_src_in_tile_rate_unrolled', - 'DB_PERF_SEL_prezl_src_out_stall', - 'DB_PERF_SEL_prezl_tile_init_stall', 'DB_PERF_SEL_qc_busy', - 'DB_PERF_SEL_qc_conflicts', 'DB_PERF_SEL_qc_full_stall', - 'DB_PERF_SEL_qc_in_postZ_tile_stalls_preZ', - 'DB_PERF_SEL_qc_in_preZ_tile_stalls_postZ', 'DB_PERF_SEL_qc_xfc', - 'DB_PERF_SEL_quad_rd_32byte_reqs', 'DB_PERF_SEL_quad_rd_busy', - 'DB_PERF_SEL_quad_rd_mi_stall', 'DB_PERF_SEL_quad_rd_panic', - 'DB_PERF_SEL_quad_rd_rw_collision', 'DB_PERF_SEL_quad_rd_sends', - 'DB_PERF_SEL_quad_rd_tag_stall', 'DB_PERF_SEL_quad_rdret_busy', - 'DB_PERF_SEL_quad_rdret_sends', 'DB_PERF_SEL_quad_wr_acks', - 'DB_PERF_SEL_quad_wr_busy', 'DB_PERF_SEL_quad_wr_coherency_stall', - 'DB_PERF_SEL_quad_wr_mi_stall', 'DB_PERF_SEL_quad_wr_sends', - 'DB_PERF_SEL_reZ_waiting_for_postZ_done', - 'DB_PERF_SEL_recomp_tile_to_1zplane_no_fastop', - 'DB_PERF_SEL_sc_kick_end', 'DB_PERF_SEL_sc_kick_start', - 'DB_PERF_SEL_tcp_dispatcher_flushes', - 'DB_PERF_SEL_tcp_dispatcher_reads', - 'DB_PERF_SEL_tcp_prefetcher_flushes', - 'DB_PERF_SEL_tcp_prefetcher_reads', - 'DB_PERF_SEL_tcp_preloader_flushes', - 'DB_PERF_SEL_tcp_preloader_reads', 'DB_PERF_SEL_tile_rd_sends', - 'DB_PERF_SEL_tile_wr_acks', 'DB_PERF_SEL_tile_wr_sends', - 'DB_PERF_SEL_tiles_compressed_to_decompressed', - 'DB_PERF_SEL_tiles_decomp_on_expclear', - 'DB_PERF_SEL_tiles_s_clear_on_expclear', - 'DB_PERF_SEL_tiles_stencil_fully_summarized', - 'DB_PERF_SEL_tiles_z_clear_on_expclear', - 'DB_PERF_SEL_tiles_z_fully_summarized', 'DB_PERF_SEL_tl_busy', - 'DB_PERF_SEL_tl_dtc_read_starved', 'DB_PERF_SEL_tl_events', - 'DB_PERF_SEL_tl_expand_squads', - 'DB_PERF_SEL_tl_flush_expand_squads', - 'DB_PERF_SEL_tl_in_fast_z_stall', - 'DB_PERF_SEL_tl_in_single_stencil_expand_stall', - 'DB_PERF_SEL_tl_in_xfc', 'DB_PERF_SEL_tl_out_squads', - 'DB_PERF_SEL_tl_out_xfc', 'DB_PERF_SEL_tl_postZ_noop_squads', - 'DB_PERF_SEL_tl_postZ_squads', 'DB_PERF_SEL_tl_preZ_noop_squads', - 'DB_PERF_SEL_tl_preZ_squads', - 'DB_PERF_SEL_tl_stencil_locked_stall', - 'DB_PERF_SEL_tl_stencil_stall', 'DB_PERF_SEL_tl_summarize_squads', - 'DB_PERF_SEL_tl_tile_ops', 'DB_PERF_SEL_tl_z_decompress_stall', - 'DB_PERF_SEL_tl_z_fetch_stall', 'DB_PERF_SEL_ts_tc_update_stall', - 'DB_PERF_SEL_tsc_insert_summarize_stall', - 'DB_PERF_SEL_zf_plane_multicycle', 'DCCG_AUDIO_DTO0_SOURCE_SEL', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_CRTC0', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_CRTC1', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_CRTC2', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_CRTC3', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_CRTC4', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_CRTC5', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_RESERVED', - 'DCCG_AUDIO_DTO2_SOURCE_SEL', 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0', - 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK1', 'DCCG_AUDIO_DTO_SEL', - 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO0', 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO1', - 'DCCG_AUDIO_DTO_SEL_NO_AUDIO_DTO', - 'DCCG_AUDIO_DTO_USE_128FBR_FOR_DP', - 'DCCG_AUDIO_DTO_USE_512FBR_DTO', - 'DCCG_AUDIO_DTO_USE_512FBR_FOR_DP', 'DCCG_DBG_BLOCK_SEL', - 'DCCG_DBG_BLOCK_SEL_DCCG', 'DCCG_DBG_BLOCK_SEL_PMON', - 'DCCG_DBG_BLOCK_SEL_PMON2', 'DCCG_DBG_EN', 'DCCG_DBG_EN_DISABLE', - 'DCCG_DBG_EN_ENABLE', 'DCCG_DEEP_COLOR_CNTL', - 'DCCG_DEEP_COLOR_DTO_2_1_RATIO', 'DCCG_DEEP_COLOR_DTO_3_2_RATIO', - 'DCCG_DEEP_COLOR_DTO_5_4_RATIO', 'DCCG_DEEP_COLOR_DTO_DISABLE', - 'DCCG_FIFO_ERRDET_OVR_DISABLE', 'DCCG_FIFO_ERRDET_OVR_EN', - 'DCCG_FIFO_ERRDET_OVR_ENABLE', 'DCCG_FIFO_ERRDET_RESET', - 'DCCG_FIFO_ERRDET_RESET_FORCE', 'DCCG_FIFO_ERRDET_RESET_NOOP', - 'DCCG_FIFO_ERRDET_STATE', 'DCCG_FIFO_ERRDET_STATE_CALIBRATION', - 'DCCG_FIFO_ERRDET_STATE_DETECTION', 'DCCG_PERF_CRTC_SELECT', - 'DCCG_PERF_MODE_HSYNC', 'DCCG_PERF_MODE_HSYNC_NOOP', - 'DCCG_PERF_MODE_HSYNC_START', 'DCCG_PERF_MODE_VSYNC', - 'DCCG_PERF_MODE_VSYNC_NOOP', 'DCCG_PERF_MODE_VSYNC_START', - 'DCCG_PERF_RUN', 'DCCG_PERF_RUN_NOOP', 'DCCG_PERF_RUN_START', - 'DCCG_PERF_SEL_CRTC0', 'DCCG_PERF_SEL_CRTC1', - 'DCCG_PERF_SEL_CRTC2', 'DCCG_PERF_SEL_CRTC3', - 'DCCG_PERF_SEL_CRTC4', 'DCCG_PERF_SEL_CRTC5', 'DCC_CT_AUTO', - 'DCC_CT_NONE', 'DCIOCHIP_2BIT_DISABLE', 'DCIOCHIP_2BIT_ENABLE', - 'DCIOCHIP_4BIT_DISABLE', 'DCIOCHIP_4BIT_ENABLE', - 'DCIOCHIP_5BIT_DISABLE', 'DCIOCHIP_5BIT_ENABLE', - 'DCIOCHIP_AUXSLAVE_PAD_MODE', 'DCIOCHIP_AUXSLAVE_PAD_MODE_AUX', - 'DCIOCHIP_AUXSLAVE_PAD_MODE_I2C', 'DCIOCHIP_AUX_CSEL0P9', - 'DCIOCHIP_AUX_CSEL1P1', 'DCIOCHIP_AUX_CSEL_DEC0P9', - 'DCIOCHIP_AUX_CSEL_DEC1P0', 'DCIOCHIP_AUX_CSEL_INC1P0', - 'DCIOCHIP_AUX_CSEL_INC1P1', 'DCIOCHIP_AUX_FALLSLEWSEL', - 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH0', - 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH1', 'DCIOCHIP_AUX_FALLSLEWSEL_LOW', - 'DCIOCHIP_AUX_FALLSLEWSEL_ULTRAHIGH', 'DCIOCHIP_AUX_RSEL0P9', - 'DCIOCHIP_AUX_RSEL1P1', 'DCIOCHIP_AUX_RSEL_DEC0P9', - 'DCIOCHIP_AUX_RSEL_DEC1P0', 'DCIOCHIP_AUX_RSEL_INC1P0', - 'DCIOCHIP_AUX_RSEL_INC1P1', 'DCIOCHIP_AUX_SPIKESEL', - 'DCIOCHIP_AUX_SPIKESEL_10NS', 'DCIOCHIP_AUX_SPIKESEL_50NS', - 'DCIOCHIP_DVO_VREFPON', 'DCIOCHIP_DVO_VREFPON_DISABLE', - 'DCIOCHIP_DVO_VREFPON_ENABLE', 'DCIOCHIP_DVO_VREFSEL', - 'DCIOCHIP_DVO_VREFSEL_EXTERNAL', 'DCIOCHIP_DVO_VREFSEL_ONCHIP', - 'DCIOCHIP_ENABLE_2BIT', 'DCIOCHIP_ENABLE_4BIT', - 'DCIOCHIP_ENABLE_5BIT', 'DCIOCHIP_GPIO_I2C_DISABLE', - 'DCIOCHIP_GPIO_I2C_DRIVE', 'DCIOCHIP_GPIO_I2C_DRIVE_HIGH', - 'DCIOCHIP_GPIO_I2C_DRIVE_LOW', 'DCIOCHIP_GPIO_I2C_EN', - 'DCIOCHIP_GPIO_I2C_ENABLE', 'DCIOCHIP_GPIO_I2C_MASK', - 'DCIOCHIP_GPIO_I2C_MASK_DISABLE', 'DCIOCHIP_GPIO_I2C_MASK_ENABLE', - 'DCIOCHIP_GPIO_MASK_EN', 'DCIOCHIP_GPIO_MASK_EN_HARDWARE', - 'DCIOCHIP_GPIO_MASK_EN_SOFTWARE', 'DCIOCHIP_HPD_SEL', - 'DCIOCHIP_HPD_SEL_ASYNC', 'DCIOCHIP_HPD_SEL_CLOCKED', - 'DCIOCHIP_INVERT', 'DCIOCHIP_MASIK_5BIT_DISABLE', - 'DCIOCHIP_MASIK_5BIT_ENABLE', 'DCIOCHIP_MASK', - 'DCIOCHIP_MASK_2BIT', 'DCIOCHIP_MASK_2BIT_DISABLE', - 'DCIOCHIP_MASK_2BIT_ENABLE', 'DCIOCHIP_MASK_4BIT', - 'DCIOCHIP_MASK_4BIT_DISABLE', 'DCIOCHIP_MASK_4BIT_ENABLE', - 'DCIOCHIP_MASK_5BIT', 'DCIOCHIP_MASK_DISABLE', - 'DCIOCHIP_MASK_ENABLE', 'DCIOCHIP_PAD_MODE', - 'DCIOCHIP_PAD_MODE_DDC', 'DCIOCHIP_PAD_MODE_DP', 'DCIOCHIP_PD_EN', - 'DCIOCHIP_PD_EN_ALLOW', 'DCIOCHIP_PD_EN_NOTALLOW', - 'DCIOCHIP_POL_INVERT', 'DCIOCHIP_POL_NON_INVERT', - 'DCIOCHIP_REF_27_SRC_SEL', - 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_BYPASS', - 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_DIVIDER', - 'DCIOCHIP_REF_27_SRC_SEL_XTAL_BYPASS', - 'DCIOCHIP_REF_27_SRC_SEL_XTAL_DIVIDER', 'DCIOCHIP_SPDIF1_IMODE', - 'DCIOCHIP_SPDIF1_IMODE_OE_A', 'DCIOCHIP_SPDIF1_IMODE_TSTE_TSTO', - 'DCIO_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE', - 'DCIO_BL_PWM_CNTL2_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN', - 'DCIO_BL_PWM_CNTL2_DBG_BL_PWM_INPUT_REFCLK_SELECT', - 'DCIO_BL_PWM_CNTL_BL_PWM_EN', - 'DCIO_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN', 'DCIO_BL_PWM_DISABLE', - 'DCIO_BL_PWM_ENABLE', 'DCIO_BL_PWM_FRACTIONAL_DISABLE', - 'DCIO_BL_PWM_FRACTIONAL_ENABLE', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER1', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER2', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER3', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER4', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER5', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER6', - 'DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_DISABLE', - 'DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN', - 'DCIO_BL_PWM_GRP1_IGNORE_MASTER_LOCK_ENABLE', - 'DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN', - 'DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL1_PWM', - 'DCIO_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL_PWM', - 'DCIO_BL_PWM_GRP1_REG_LOCK', 'DCIO_BL_PWM_GRP1_REG_LOCK_DISABLE', - 'DCIO_BL_PWM_GRP1_REG_LOCK_ENABLE', - 'DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START', - 'DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START_DISABLE', - 'DCIO_BL_PWM_GRP1_UPDATE_AT_FRAME_START_ENABLE', - 'DCIO_BL_PWM_OVERRIDE_BL_OUT_DISABLE', - 'DCIO_BL_PWM_OVERRIDE_BL_OUT_ENABLE', - 'DCIO_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN_NORMAL', - 'DCIO_BL_PWM_OVERRIDE_LVTMA_PWRSEQ_EN_PWM', - 'DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL', - 'DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS', 'DCIO_DACA_SOFT_RESET', - 'DCIO_DACA_SOFT_RESET_ASSERT', 'DCIO_DACA_SOFT_RESET_DEASSERT', - 'DCIO_DBG_ASYNC_4BIT_SEL', 'DCIO_DBG_ASYNC_4BIT_SEL_11TO8', - 'DCIO_DBG_ASYNC_4BIT_SEL_15TO12', - 'DCIO_DBG_ASYNC_4BIT_SEL_19TO16', - 'DCIO_DBG_ASYNC_4BIT_SEL_23TO20', - 'DCIO_DBG_ASYNC_4BIT_SEL_27TO24', - 'DCIO_DBG_ASYNC_4BIT_SEL_31TO28', 'DCIO_DBG_ASYNC_4BIT_SEL_3TO0', - 'DCIO_DBG_ASYNC_4BIT_SEL_7TO4', 'DCIO_DBG_ASYNC_BLOCK_SEL', - 'DCIO_DBG_ASYNC_BLOCK_SEL_DCCG', 'DCIO_DBG_ASYNC_BLOCK_SEL_DCIO', - 'DCIO_DBG_ASYNC_BLOCK_SEL_DCO', - 'DCIO_DBG_ASYNC_BLOCK_SEL_OVERRIDE', - 'DCIO_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG1', - 'DCIO_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG2', - 'DCIO_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG3', - 'DCIO_DBG_BL_PWM_INPUT_REFCLK_SELECT_NORMAL', - 'DCIO_DCO_DCFE_EXT_VSYNC_MUX', 'DCIO_DCO_EXT_VSYNC_MASK', - 'DCIO_DCRXPHY_SOFT_RESET', 'DCIO_DCRXPHY_SOFT_RESET_ASSERT', - 'DCIO_DCRXPHY_SOFT_RESET_DEASSERT', - 'DCIO_DC_DVODATA_CONFIG_DVO_ALTER_MAPPING_EN', - 'DCIO_DC_DVODATA_CONFIG_VIP_ALTER_MAPPING_EN', - 'DCIO_DC_DVODATA_CONFIG_VIP_MUX_EN', 'DCIO_DC_GENERICA_SEL', - 'DCIO_DC_GENERICB_SEL', - 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL', - 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL', - 'DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL', - 'DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL', - 'DCIO_DC_GPIO_CHIP_DEBUG_OUT_PIN_SEL', - 'DCIO_DC_GPIO_CHIP_DEBUG_OUT_PIN_SEL_NORMAL', - 'DCIO_DC_GPIO_CHIP_DEBUG_OUT_PIN_SEL_SWAP', - 'DCIO_DC_GPIO_DEBUG_BUS_FLOP_EN', - 'DCIO_DC_GPIO_DEBUG_BUS_FLOP_EN_BYPASS', - 'DCIO_DC_GPIO_DEBUG_BUS_FLOP_EN_ENABLE', - 'DCIO_DC_GPIO_DEBUG_DPRX_LOOPBACK_ENABLE', - 'DCIO_DC_GPIO_MACRO_DEBUG', 'DCIO_DC_GPIO_MACRO_DEBUG_CHIP_BIF', - 'DCIO_DC_GPIO_MACRO_DEBUG_NORMAL', - 'DCIO_DC_GPIO_MACRO_DEBUG_RESERVED_VALUE2', - 'DCIO_DC_GPIO_MACRO_DEBUG_RESERVED_VALUE3', - 'DCIO_DC_GPIO_VIP_DEBUG', 'DCIO_DC_GPIO_VIP_DEBUG_CG_BIG', - 'DCIO_DC_GPIO_VIP_DEBUG_NORMAL', 'DCIO_DC_GPU_TIMER_READ_SELECT', - 'DCIO_DC_GPU_TIMER_START_POSITION', - 'DCIO_DC_PAD_EXTERN_SIG_MVP_PIXEL_SRC_STATUS', - 'DCIO_DC_PAD_EXTERN_SIG_SEL', - 'DCIO_DC_PAD_EXTERN_SIG_SEL_DDC1CLK', - 'DCIO_DC_PAD_EXTERN_SIG_SEL_DDC1DATA', - 'DCIO_DC_PAD_EXTERN_SIG_SEL_DDC2CLK', - 'DCIO_DC_PAD_EXTERN_SIG_SEL_DDC2DATA', - 'DCIO_DC_PAD_EXTERN_SIG_SEL_GENERICA', - 'DCIO_DC_PAD_EXTERN_SIG_SEL_GENERICB', - 'DCIO_DC_PAD_EXTERN_SIG_SEL_GENERICC', - 'DCIO_DC_PAD_EXTERN_SIG_SEL_GENLK_CLK', - 'DCIO_DC_PAD_EXTERN_SIG_SEL_GENLK_VSYNC', - 'DCIO_DC_PAD_EXTERN_SIG_SEL_HPD1', - 'DCIO_DC_PAD_EXTERN_SIG_SEL_HPD2', - 'DCIO_DC_PAD_EXTERN_SIG_SEL_MVP', - 'DCIO_DC_PAD_EXTERN_SIG_SEL_VHAD0', - 'DCIO_DC_PAD_EXTERN_SIG_SEL_VHAD1', - 'DCIO_DC_PAD_EXTERN_SIG_SEL_VPHCTL', - 'DCIO_DC_PAD_EXTERN_SIG_SEL_VSYNCA', - 'DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL', - 'DCIO_DC_REF_CLK_CNTL_HSYNCA_OUTPUT_SEL', - 'DCIO_DISPCLK_R_DCIO_GATE_DISABLE', - 'DCIO_DISPCLK_R_DCIO_GATE_ENABLE', 'DCIO_DPCS_INTERRUPT_DISABLE', - 'DCIO_DPCS_INTERRUPT_ENABLE', 'DCIO_DPCS_INTERRUPT_MASK', - 'DCIO_DPCS_INTERRUPT_TYPE', - 'DCIO_DPCS_INTERRUPT_TYPE_LEVEL_BASED', - 'DCIO_DPCS_INTERRUPT_TYPE_PULSE_BASED', 'DCIO_DPHY_LANE_SEL', - 'DCIO_DPHY_LANE_SEL_LANE0', 'DCIO_DPHY_LANE_SEL_LANE1', - 'DCIO_DPHY_LANE_SEL_LANE2', 'DCIO_DPHY_LANE_SEL_LANE3', - 'DCIO_DPRX_LOOPBACK_ENABLE_LOOP', - 'DCIO_DPRX_LOOPBACK_ENABLE_NORMAL', 'DCIO_DSYNC_SOFT_RESET', - 'DCIO_DSYNC_SOFT_RESET_ASSERT', 'DCIO_DSYNC_SOFT_RESET_DEASSERT', - 'DCIO_DVO_ALTER_MAPPING_EN_ALTERNATIVE', - 'DCIO_DVO_ALTER_MAPPING_EN_DEFAULT', 'DCIO_EXT_VSYNC_MASK_NONE', - 'DCIO_EXT_VSYNC_MASK_NONE_DUPLICATE', 'DCIO_EXT_VSYNC_MASK_PIPE0', - 'DCIO_EXT_VSYNC_MASK_PIPE1', 'DCIO_EXT_VSYNC_MASK_PIPE2', - 'DCIO_EXT_VSYNC_MASK_PIPE3', 'DCIO_EXT_VSYNC_MASK_PIPE4', - 'DCIO_EXT_VSYNC_MASK_PIPE5', 'DCIO_EXT_VSYNC_MUX_CRTC0', - 'DCIO_EXT_VSYNC_MUX_CRTC1', 'DCIO_EXT_VSYNC_MUX_CRTC2', - 'DCIO_EXT_VSYNC_MUX_CRTC3', 'DCIO_EXT_VSYNC_MUX_CRTC4', - 'DCIO_EXT_VSYNC_MUX_CRTC5', 'DCIO_EXT_VSYNC_MUX_GENERICB', - 'DCIO_EXT_VSYNC_MUX_SWAPLOCKB', - 'DCIO_GENERICA_SEL_DACA_FIELD_NUMBER', - 'DCIO_GENERICA_SEL_DACA_PIXCLK', - 'DCIO_GENERICA_SEL_DACA_STEREOSYNC', - 'DCIO_GENERICA_SEL_DACB_FIELD_NUMBER', - 'DCIO_GENERICA_SEL_DACB_PIXCLK', 'DCIO_GENERICA_SEL_DVOA_CTL3', - 'DCIO_GENERICA_SEL_DVOA_STEREOSYNC', - 'DCIO_GENERICA_SEL_GENERICA_DCCG', - 'DCIO_GENERICA_SEL_GENERICA_DPRX', - 'DCIO_GENERICA_SEL_GENERICB_DPRX', 'DCIO_GENERICA_SEL_P1_PLLCLK', - 'DCIO_GENERICA_SEL_P2_PLLCLK', 'DCIO_GENERICA_SEL_STEREOSYNC', - 'DCIO_GENERICA_SEL_SYNCEN', 'DCIO_GENERICA_SEL_UNIPHY_FBDIV_CLK', - 'DCIO_GENERICA_SEL_UNIPHY_FBDIV_CLK_DIV2', - 'DCIO_GENERICA_SEL_UNIPHY_FBDIV_SSC_CLK', - 'DCIO_GENERICA_SEL_UNIPHY_REFDIV_CLK', - 'DCIO_GENERICB_SEL_DACA_FIELD_NUMBER', - 'DCIO_GENERICB_SEL_DACA_PIXCLK', - 'DCIO_GENERICB_SEL_DACA_STEREOSYNC', - 'DCIO_GENERICB_SEL_DACB_FIELD_NUMBER', - 'DCIO_GENERICB_SEL_DACB_PIXCLK', 'DCIO_GENERICB_SEL_DVOA_CTL3', - 'DCIO_GENERICB_SEL_DVOA_STEREOSYNC', - 'DCIO_GENERICB_SEL_GENERICB_DCCG', 'DCIO_GENERICB_SEL_P1_PLLCLK', - 'DCIO_GENERICB_SEL_P2_PLLCLK', 'DCIO_GENERICB_SEL_STEREOSYNC', - 'DCIO_GENERICB_SEL_SYNCEN', 'DCIO_GENERICB_SEL_UNIPHY_FBDIV_CLK', - 'DCIO_GENERICB_SEL_UNIPHY_FBDIV_CLK_DIV2', - 'DCIO_GENERICB_SEL_UNIPHY_FBDIV_SSC_CLK', - 'DCIO_GENERICB_SEL_UNIPHY_REFDIV_CLK', 'DCIO_GENLK_CLK_GSL_MASK', - 'DCIO_GENLK_CLK_GSL_MASK_NO', 'DCIO_GENLK_CLK_GSL_MASK_STEREO', - 'DCIO_GENLK_CLK_GSL_MASK_TIMING', - 'DCIO_GENLK_CLK_OUTPUT_SEL_DISABLE', - 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL1', - 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL2', - 'DCIO_GENLK_CLK_OUTPUT_SEL_RESERVED_VALUE3', - 'DCIO_GENLK_VSYNC_GSL_MASK', 'DCIO_GENLK_VSYNC_GSL_MASK_NO', - 'DCIO_GENLK_VSYNC_GSL_MASK_STEREO', - 'DCIO_GENLK_VSYNC_GSL_MASK_TIMING', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D2_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D2_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D3_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D3_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D4_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D4_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D5_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D5_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D5_V_UPDATE', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D6_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D6_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D6_V_UPDATE', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D2_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D2_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D3_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D3_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D4_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D4_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D5_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D5_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D5_V_UPDATE', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D6_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D6_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D6_V_UPDATE', - 'DCIO_GPU_TIMER_START_0_END_27', 'DCIO_GPU_TIMER_START_10_END_37', - 'DCIO_GPU_TIMER_START_1_END_28', 'DCIO_GPU_TIMER_START_2_END_29', - 'DCIO_GPU_TIMER_START_3_END_30', 'DCIO_GPU_TIMER_START_4_END_31', - 'DCIO_GPU_TIMER_START_6_END_33', 'DCIO_GPU_TIMER_START_8_END_35', - 'DCIO_GSL0_GLOBAL_UNLOCK_SEL', - 'DCIO_GSL0_GLOBAL_UNLOCK_SEL_GENCLK_VSYNC', - 'DCIO_GSL0_GLOBAL_UNLOCK_SEL_GENLK_CLK', - 'DCIO_GSL0_GLOBAL_UNLOCK_SEL_INVERSION', - 'DCIO_GSL0_GLOBAL_UNLOCK_SEL_SWAPLOCK_A', - 'DCIO_GSL0_GLOBAL_UNLOCK_SEL_SWAPLOCK_B', - 'DCIO_GSL0_TIMING_SYNC_SEL', - 'DCIO_GSL0_TIMING_SYNC_SEL_GENCLK_CLK', - 'DCIO_GSL0_TIMING_SYNC_SEL_GENCLK_VSYNC', - 'DCIO_GSL0_TIMING_SYNC_SEL_PIPE', - 'DCIO_GSL0_TIMING_SYNC_SEL_SWAPLOCK_A', - 'DCIO_GSL0_TIMING_SYNC_SEL_SWAPLOCK_B', - 'DCIO_GSL1_GLOBAL_UNLOCK_SEL', - 'DCIO_GSL1_GLOBAL_UNLOCK_SEL_GENCLK_VSYNC', - 'DCIO_GSL1_GLOBAL_UNLOCK_SEL_GENLK_CLK', - 'DCIO_GSL1_GLOBAL_UNLOCK_SEL_INVERSION', - 'DCIO_GSL1_GLOBAL_UNLOCK_SEL_SWAPLOCK_A', - 'DCIO_GSL1_GLOBAL_UNLOCK_SEL_SWAPLOCK_B', - 'DCIO_GSL1_TIMING_SYNC_SEL', - 'DCIO_GSL1_TIMING_SYNC_SEL_GENCLK_CLK', - 'DCIO_GSL1_TIMING_SYNC_SEL_GENCLK_VSYNC', - 'DCIO_GSL1_TIMING_SYNC_SEL_PIPE', - 'DCIO_GSL1_TIMING_SYNC_SEL_SWAPLOCK_A', - 'DCIO_GSL1_TIMING_SYNC_SEL_SWAPLOCK_B', - 'DCIO_GSL2_GLOBAL_UNLOCK_SEL', - 'DCIO_GSL2_GLOBAL_UNLOCK_SEL_GENCLK_VSYNC', - 'DCIO_GSL2_GLOBAL_UNLOCK_SEL_GENLK_CLK', - 'DCIO_GSL2_GLOBAL_UNLOCK_SEL_INVERSION', - 'DCIO_GSL2_GLOBAL_UNLOCK_SEL_SWAPLOCK_A', - 'DCIO_GSL2_GLOBAL_UNLOCK_SEL_SWAPLOCK_B', - 'DCIO_GSL2_TIMING_SYNC_SEL', - 'DCIO_GSL2_TIMING_SYNC_SEL_GENCLK_CLK', - 'DCIO_GSL2_TIMING_SYNC_SEL_GENCLK_VSYNC', - 'DCIO_GSL2_TIMING_SYNC_SEL_PIPE', - 'DCIO_GSL2_TIMING_SYNC_SEL_SWAPLOCK_A', - 'DCIO_GSL2_TIMING_SYNC_SEL_SWAPLOCK_B', 'DCIO_GSL_SEL', - 'DCIO_GSL_SEL_GROUP_0', 'DCIO_GSL_SEL_GROUP_1', - 'DCIO_GSL_SEL_GROUP_2', 'DCIO_GSL_VSYNC_SEL', - 'DCIO_GSL_VSYNC_SEL_PIPE0', 'DCIO_GSL_VSYNC_SEL_PIPE1', - 'DCIO_GSL_VSYNC_SEL_PIPE2', 'DCIO_GSL_VSYNC_SEL_PIPE3', - 'DCIO_GSL_VSYNC_SEL_PIPE4', 'DCIO_GSL_VSYNC_SEL_PIPE5', - 'DCIO_HSYNCA_OUTPUT_SEL_DISABLE', 'DCIO_HSYNCA_OUTPUT_SEL_PPLL1', - 'DCIO_HSYNCA_OUTPUT_SEL_PPLL2', 'DCIO_HSYNCA_OUTPUT_SEL_RESERVED', - 'DCIO_IMPCAL_STEP_DELAY', 'DCIO_IMPCAL_STEP_DELAY_10us', - 'DCIO_IMPCAL_STEP_DELAY_11us', 'DCIO_IMPCAL_STEP_DELAY_12us', - 'DCIO_IMPCAL_STEP_DELAY_13us', 'DCIO_IMPCAL_STEP_DELAY_14us', - 'DCIO_IMPCAL_STEP_DELAY_15us', 'DCIO_IMPCAL_STEP_DELAY_16us', - 'DCIO_IMPCAL_STEP_DELAY_1us', 'DCIO_IMPCAL_STEP_DELAY_2us', - 'DCIO_IMPCAL_STEP_DELAY_3us', 'DCIO_IMPCAL_STEP_DELAY_4us', - 'DCIO_IMPCAL_STEP_DELAY_5us', 'DCIO_IMPCAL_STEP_DELAY_6us', - 'DCIO_IMPCAL_STEP_DELAY_7us', 'DCIO_IMPCAL_STEP_DELAY_8us', - 'DCIO_IMPCAL_STEP_DELAY_9us', 'DCIO_LVTMA_BLON_OFF', - 'DCIO_LVTMA_BLON_ON', 'DCIO_LVTMA_BLON_POL_INVERT', - 'DCIO_LVTMA_BLON_POL_NON_INVERT', 'DCIO_LVTMA_DIGON_OFF', - 'DCIO_LVTMA_DIGON_ON', 'DCIO_LVTMA_DIGON_POL_INVERT', - 'DCIO_LVTMA_DIGON_POL_NON_INVERT', - 'DCIO_LVTMA_PWRSEQ_CNTL_DISABLE_SYNCEN_CONTROL_OF_TX_EN', - 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_BLON', - 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_BLON_POL', - 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_DIGON', - 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_DIGON_POL', - 'DCIO_LVTMA_PWRSEQ_CNTL_LVTMA_SYNCEN_POL', - 'DCIO_LVTMA_PWRSEQ_CNTL_TARGET_STATE', - 'DCIO_LVTMA_PWRSEQ_DELAY2_LVTMA_VARY_BL_OVERRIDE_EN', - 'DCIO_LVTMA_PWRSEQ_DISABLE_SYNCEN_CONTROL_OF_TX_DISABLE', - 'DCIO_LVTMA_PWRSEQ_DISABLE_SYNCEN_CONTROL_OF_TX_ENABLE', - 'DCIO_LVTMA_PWRSEQ_TARGET_STATE_LCD_OFF', - 'DCIO_LVTMA_PWRSEQ_TARGET_STATE_LCD_ON', - 'DCIO_LVTMA_SYNCEN_POL_INVERT', - 'DCIO_LVTMA_SYNCEN_POL_NON_INVERT', - 'DCIO_LVTMA_VARY_BL_OVERRIDE_EN_BLON', - 'DCIO_LVTMA_VARY_BL_OVERRIDE_EN_SEPARATE', - 'DCIO_MVP_PIXEL_SRC_STATUS_CRTC', - 'DCIO_MVP_PIXEL_SRC_STATUS_HSYNCA', - 'DCIO_MVP_PIXEL_SRC_STATUS_HSYNCA_DUPLICATE', - 'DCIO_MVP_PIXEL_SRC_STATUS_LB', 'DCIO_SWAPLOCK_A_GSL_MASK', - 'DCIO_SWAPLOCK_A_GSL_MASK_NO', 'DCIO_SWAPLOCK_A_GSL_MASK_STEREO', - 'DCIO_SWAPLOCK_A_GSL_MASK_TIMING', 'DCIO_SWAPLOCK_B_GSL_MASK', - 'DCIO_SWAPLOCK_B_GSL_MASK_NO', 'DCIO_SWAPLOCK_B_GSL_MASK_STEREO', - 'DCIO_SWAPLOCK_B_GSL_MASK_TIMING', 'DCIO_TEST_CLK_SEL_DISPCLK', - 'DCIO_TEST_CLK_SEL_GATED_DISPCLK', 'DCIO_TEST_CLK_SEL_SCLK', - 'DCIO_UNIPHYA_FBDIV_CLK', 'DCIO_UNIPHYA_FBDIV_SSC_CLK', - 'DCIO_UNIPHYA_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYA_TEST_REFDIV_CLK', 'DCIO_UNIPHYB_FBDIV_CLK', - 'DCIO_UNIPHYB_FBDIV_SSC_CLK', 'DCIO_UNIPHYB_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYB_TEST_REFDIV_CLK', 'DCIO_UNIPHYC_FBDIV_CLK', - 'DCIO_UNIPHYC_FBDIV_SSC_CLK', 'DCIO_UNIPHYC_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYC_TEST_REFDIV_CLK', 'DCIO_UNIPHYD_FBDIV_CLK', - 'DCIO_UNIPHYD_FBDIV_SSC_CLK', 'DCIO_UNIPHYD_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYD_TEST_REFDIV_CLK', 'DCIO_UNIPHYE_FBDIV_CLK', - 'DCIO_UNIPHYE_FBDIV_SSC_CLK', 'DCIO_UNIPHYE_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYE_TEST_REFDIV_CLK', 'DCIO_UNIPHYF_FBDIV_CLK', - 'DCIO_UNIPHYF_FBDIV_SSC_CLK', 'DCIO_UNIPHYF_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYF_TEST_REFDIV_CLK', 'DCIO_UNIPHYG_FBDIV_CLK', - 'DCIO_UNIPHYG_FBDIV_SSC_CLK', 'DCIO_UNIPHYG_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYG_TEST_REFDIV_CLK', 'DCIO_UNIPHYLPA_FBDIV_CLK', - 'DCIO_UNIPHYLPA_FBDIV_SSC_CLK', - 'DCIO_UNIPHYLPA_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYLPA_TEST_REFDIV_CLK', 'DCIO_UNIPHYLPB_FBDIV_CLK', - 'DCIO_UNIPHYLPB_FBDIV_SSC_CLK', - 'DCIO_UNIPHYLPB_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYLPB_TEST_REFDIV_CLK', 'DCIO_UNIPHY_CHANNEL_INVERTED', - 'DCIO_UNIPHY_CHANNEL_NO_INVERSION', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH0', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH1', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH2', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH3', 'DCIO_UNIPHY_IMPCAL_SEL', - 'DCIO_UNIPHY_IMPCAL_SEL_BINARY', - 'DCIO_UNIPHY_IMPCAL_SEL_TEMPERATURE', - 'DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT', - 'DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK', - 'DCIO_UNIPHY_LINK_CNTL_MINIMUM_PIXVLD_LOW_DURATION', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_DEBOUNCED', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_TOGGLE_FILTERED', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_DISALLOW', - 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_11_CLOCKS', - 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_15_CLOCKS', - 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_19_CLOCKS', - 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_23_CLOCKS', - 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_27_CLOCKS', - 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_31_CLOCKS', - 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_3_CLOCKS', - 'DCIO_UNIPHY_MINIMUM_PIXVLD_LOW_DURATION_7_CLOCKS', - 'DCIO_VIP_ALTER_MAPPING_EN_ALTERNATIVE', - 'DCIO_VIP_ALTER_MAPPING_EN_DEFAULT', 'DCIO_VIP_MUX_EN_DVO', - 'DCIO_VIP_MUX_EN_VIP', 'DCO_DBG_BLOCK_SEL', - 'DCO_DBG_BLOCK_SEL_ABM', 'DCO_DBG_BLOCK_SEL_AUDIO_OUT', - 'DCO_DBG_BLOCK_SEL_AUX0', 'DCO_DBG_BLOCK_SEL_AUX1', - 'DCO_DBG_BLOCK_SEL_AUX2', 'DCO_DBG_BLOCK_SEL_AUX3', - 'DCO_DBG_BLOCK_SEL_AUX4', 'DCO_DBG_BLOCK_SEL_AUX5', - 'DCO_DBG_BLOCK_SEL_DAC', 'DCO_DBG_BLOCK_SEL_DCO', - 'DCO_DBG_BLOCK_SEL_DIGA', 'DCO_DBG_BLOCK_SEL_DIGB', - 'DCO_DBG_BLOCK_SEL_DIGC', 'DCO_DBG_BLOCK_SEL_DIGD', - 'DCO_DBG_BLOCK_SEL_DIGE', 'DCO_DBG_BLOCK_SEL_DIGF', - 'DCO_DBG_BLOCK_SEL_DIGFE_A', 'DCO_DBG_BLOCK_SEL_DIGFE_B', - 'DCO_DBG_BLOCK_SEL_DIGFE_C', 'DCO_DBG_BLOCK_SEL_DIGFE_D', - 'DCO_DBG_BLOCK_SEL_DIGFE_E', 'DCO_DBG_BLOCK_SEL_DIGFE_F', - 'DCO_DBG_BLOCK_SEL_DIGFE_G', 'DCO_DBG_BLOCK_SEL_DIGG', - 'DCO_DBG_BLOCK_SEL_DIGLPA', 'DCO_DBG_BLOCK_SEL_DIGLPB', - 'DCO_DBG_BLOCK_SEL_DIGLPFEA', 'DCO_DBG_BLOCK_SEL_DIGLPFEB', - 'DCO_DBG_BLOCK_SEL_DPA', 'DCO_DBG_BLOCK_SEL_DPB', - 'DCO_DBG_BLOCK_SEL_DPC', 'DCO_DBG_BLOCK_SEL_DPD', - 'DCO_DBG_BLOCK_SEL_DPE', 'DCO_DBG_BLOCK_SEL_DPF', - 'DCO_DBG_BLOCK_SEL_DPFE_A', 'DCO_DBG_BLOCK_SEL_DPFE_B', - 'DCO_DBG_BLOCK_SEL_DPFE_C', 'DCO_DBG_BLOCK_SEL_DPFE_D', - 'DCO_DBG_BLOCK_SEL_DPFE_E', 'DCO_DBG_BLOCK_SEL_DPFE_F', - 'DCO_DBG_BLOCK_SEL_DPFE_G', 'DCO_DBG_BLOCK_SEL_DPG', - 'DCO_DBG_BLOCK_SEL_DPLPA', 'DCO_DBG_BLOCK_SEL_DPLPB', - 'DCO_DBG_BLOCK_SEL_DPLPFEA', 'DCO_DBG_BLOCK_SEL_DPLPFEB', - 'DCO_DBG_BLOCK_SEL_DVO', 'DCO_DBG_BLOCK_SEL_FMT0', - 'DCO_DBG_BLOCK_SEL_FMT1', 'DCO_DBG_BLOCK_SEL_FMT2', - 'DCO_DBG_BLOCK_SEL_FMT3', 'DCO_DBG_BLOCK_SEL_FMT4', - 'DCO_DBG_BLOCK_SEL_FMT5', 'DCO_DBG_BLOCK_SEL_MVP', - 'DCO_DBG_BLOCK_SEL_PERFMON_DCO', - 'DCO_HDMI_RXSTATUS_TIMER_CONTROL_DCO_HDMI_RXSTATUS_TIMER_TYPE', - 'DCO_HDMI_RXSTATUS_TIMER_TYPE_LEVEL', - 'DCO_HDMI_RXSTATUS_TIMER_TYPE_PULSE', - 'DCP_ALPHA_ROUND_TRUNC_MODE', 'DCP_ALPHA_ROUND_TRUNC_MODE_ROUND', - 'DCP_ALPHA_ROUND_TRUNC_MODE_TRUNC', 'DCP_CRC_ENABLE', - 'DCP_CRC_ENABLE_FALSE', 'DCP_CRC_ENABLE_TRUE', 'DCP_CRC_LINE_SEL', - 'DCP_CRC_LINE_SEL_BOTH', 'DCP_CRC_LINE_SEL_EVEN', - 'DCP_CRC_LINE_SEL_ODD', 'DCP_CRC_LINE_SEL_RESERVED', - 'DCP_CRC_SOURCE_SEL', 'DCP_CRC_SOURCE_SEL_INPUT_H32', - 'DCP_CRC_SOURCE_SEL_INPUT_L32', 'DCP_CRC_SOURCE_SEL_OUTPUT_CNTL', - 'DCP_CRC_SOURCE_SEL_OUTPUT_PIX', 'DCP_CUR2_INV_TRANS_CLAMP', - 'DCP_CUR2_INV_TRANS_CLAMP_FALSE', 'DCP_CUR2_INV_TRANS_CLAMP_TRUE', - 'DCP_CURSOR_2X_MAGNIFY', 'DCP_CURSOR_2X_MAGNIFY_FALSE', - 'DCP_CURSOR_2X_MAGNIFY_TRUE', 'DCP_CURSOR_ALPHA_BLND_ENA', - 'DCP_CURSOR_ALPHA_BLND_ENA_FALSE', - 'DCP_CURSOR_ALPHA_BLND_ENA_TRUE', 'DCP_CURSOR_DEGAMMA_MODE', - 'DCP_CURSOR_DEGAMMA_MODE_BYPASS', - 'DCP_CURSOR_DEGAMMA_MODE_RESERVED', - 'DCP_CURSOR_DEGAMMA_MODE_ROMA', 'DCP_CURSOR_DEGAMMA_MODE_ROMB', - 'DCP_CURSOR_DISABLE_MULTIPLE_UPDATE', - 'DCP_CURSOR_DISABLE_MULTIPLE_UPDATE_FALSE', - 'DCP_CURSOR_DISABLE_MULTIPLE_UPDATE_TRUE', 'DCP_CURSOR_EN', - 'DCP_CURSOR_EN_FALSE', 'DCP_CURSOR_EN_TRUE', - 'DCP_CURSOR_FORCE_MC_ON', 'DCP_CURSOR_FORCE_MC_ON_FALSE', - 'DCP_CURSOR_FORCE_MC_ON_TRUE', - 'DCP_CURSOR_MAX_OUTSTANDING_GROUP_NUM', - 'DCP_CURSOR_MAX_OUTSTANDING_GROUP_NUM_ONE', - 'DCP_CURSOR_MAX_OUTSTANDING_GROUP_NUM_TWO', 'DCP_CURSOR_MODE', - 'DCP_CURSOR_MODE_24BPP_1BIT', - 'DCP_CURSOR_MODE_24BPP_8BIT_PREMULTI', - 'DCP_CURSOR_MODE_24BPP_8BIT_UNPREMULTI', - 'DCP_CURSOR_MODE_MONO_2BPP', 'DCP_CURSOR_STEREO_EN', - 'DCP_CURSOR_STEREO_EN_FALSE', 'DCP_CURSOR_STEREO_EN_TRUE', - 'DCP_CURSOR_STEREO_OFFSET_YNX', - 'DCP_CURSOR_STEREO_OFFSET_YNX_X_POSITION', - 'DCP_CURSOR_STEREO_OFFSET_YNX_Y_POSITION', - 'DCP_CURSOR_UPDATE_LOCK', 'DCP_CURSOR_UPDATE_LOCK_FALSE', - 'DCP_CURSOR_UPDATE_LOCK_TRUE', 'DCP_CURSOR_UPDATE_PENDING', - 'DCP_CURSOR_UPDATE_PENDING_FALSE', - 'DCP_CURSOR_UPDATE_PENDING_TRUE', 'DCP_CURSOR_UPDATE_STEREO_MODE', - 'DCP_CURSOR_UPDATE_STEREO_MODE_BOTH', - 'DCP_CURSOR_UPDATE_STEREO_MODE_PRIMARY_ONLY', - 'DCP_CURSOR_UPDATE_STEREO_MODE_SECONDARY_ONLY', - 'DCP_CURSOR_UPDATE_STEREO_MODE_UNDEFINED', - 'DCP_CURSOR_UPDATE_TAKEN', 'DCP_CURSOR_UPDATE_TAKEN_FALSE', - 'DCP_CURSOR_UPDATE_TAKEN_TRUE', 'DCP_CURSOR_URGENT_CONTROL', - 'DCP_CURSOR_URGENT_CONTROL_MODE_0', - 'DCP_CURSOR_URGENT_CONTROL_MODE_1', - 'DCP_CURSOR_URGENT_CONTROL_MODE_2', - 'DCP_CURSOR_URGENT_CONTROL_MODE_3', - 'DCP_CURSOR_URGENT_CONTROL_MODE_4', 'DCP_CUR_INV_TRANS_CLAMP', - 'DCP_CUR_INV_TRANS_CLAMP_FALSE', 'DCP_CUR_INV_TRANS_CLAMP_TRUE', - 'DCP_CUR_REQUEST_FILTER_DIS', 'DCP_CUR_REQUEST_FILTER_DIS_FALSE', - 'DCP_CUR_REQUEST_FILTER_DIS_TRUE', 'DCP_DC_LUT_AUTOFILL', - 'DCP_DC_LUT_AUTOFILL_DONE', 'DCP_DC_LUT_AUTOFILL_DONE_FALSE', - 'DCP_DC_LUT_AUTOFILL_DONE_TRUE', 'DCP_DC_LUT_AUTOFILL_FALSE', - 'DCP_DC_LUT_AUTOFILL_TRUE', 'DCP_DC_LUT_DATA_B_FLOAT_POINT_EN', - 'DCP_DC_LUT_DATA_B_FLOAT_POINT_EN_FALSE', - 'DCP_DC_LUT_DATA_B_FLOAT_POINT_EN_TRUE', - 'DCP_DC_LUT_DATA_B_FORMAT', 'DCP_DC_LUT_DATA_B_FORMAT_S1P10', - 'DCP_DC_LUT_DATA_B_FORMAT_U0P10', - 'DCP_DC_LUT_DATA_B_FORMAT_U0P12', - 'DCP_DC_LUT_DATA_B_FORMAT_U1P11', 'DCP_DC_LUT_DATA_B_SIGNED_EN', - 'DCP_DC_LUT_DATA_B_SIGNED_EN_FALSE', - 'DCP_DC_LUT_DATA_B_SIGNED_EN_TRUE', - 'DCP_DC_LUT_DATA_G_FLOAT_POINT_EN', - 'DCP_DC_LUT_DATA_G_FLOAT_POINT_EN_FALSE', - 'DCP_DC_LUT_DATA_G_FLOAT_POINT_EN_TRUE', - 'DCP_DC_LUT_DATA_G_FORMAT', 'DCP_DC_LUT_DATA_G_FORMAT_S1P10', - 'DCP_DC_LUT_DATA_G_FORMAT_U0P10', - 'DCP_DC_LUT_DATA_G_FORMAT_U0P12', - 'DCP_DC_LUT_DATA_G_FORMAT_U1P11', 'DCP_DC_LUT_DATA_G_SIGNED_EN', - 'DCP_DC_LUT_DATA_G_SIGNED_EN_FALSE', - 'DCP_DC_LUT_DATA_G_SIGNED_EN_TRUE', - 'DCP_DC_LUT_DATA_R_FLOAT_POINT_EN', - 'DCP_DC_LUT_DATA_R_FLOAT_POINT_EN_FALSE', - 'DCP_DC_LUT_DATA_R_FLOAT_POINT_EN_TRUE', - 'DCP_DC_LUT_DATA_R_FORMAT', 'DCP_DC_LUT_DATA_R_FORMAT_S1P10', - 'DCP_DC_LUT_DATA_R_FORMAT_U0P10', - 'DCP_DC_LUT_DATA_R_FORMAT_U0P12', - 'DCP_DC_LUT_DATA_R_FORMAT_U1P11', 'DCP_DC_LUT_DATA_R_SIGNED_EN', - 'DCP_DC_LUT_DATA_R_SIGNED_EN_FALSE', - 'DCP_DC_LUT_DATA_R_SIGNED_EN_TRUE', 'DCP_DC_LUT_INC_B', - 'DCP_DC_LUT_INC_B_128', 'DCP_DC_LUT_INC_B_16', - 'DCP_DC_LUT_INC_B_2', 'DCP_DC_LUT_INC_B_256', - 'DCP_DC_LUT_INC_B_32', 'DCP_DC_LUT_INC_B_4', - 'DCP_DC_LUT_INC_B_512', 'DCP_DC_LUT_INC_B_64', - 'DCP_DC_LUT_INC_B_8', 'DCP_DC_LUT_INC_B_NA', 'DCP_DC_LUT_INC_G', - 'DCP_DC_LUT_INC_G_128', 'DCP_DC_LUT_INC_G_16', - 'DCP_DC_LUT_INC_G_2', 'DCP_DC_LUT_INC_G_256', - 'DCP_DC_LUT_INC_G_32', 'DCP_DC_LUT_INC_G_4', - 'DCP_DC_LUT_INC_G_512', 'DCP_DC_LUT_INC_G_64', - 'DCP_DC_LUT_INC_G_8', 'DCP_DC_LUT_INC_G_NA', 'DCP_DC_LUT_INC_R', - 'DCP_DC_LUT_INC_R_128', 'DCP_DC_LUT_INC_R_16', - 'DCP_DC_LUT_INC_R_2', 'DCP_DC_LUT_INC_R_256', - 'DCP_DC_LUT_INC_R_32', 'DCP_DC_LUT_INC_R_4', - 'DCP_DC_LUT_INC_R_512', 'DCP_DC_LUT_INC_R_64', - 'DCP_DC_LUT_INC_R_8', 'DCP_DC_LUT_INC_R_NA', 'DCP_DC_LUT_RW_MODE', - 'DCP_DC_LUT_RW_MODE_256_ENTRY', 'DCP_DC_LUT_RW_MODE_PWL', - 'DCP_DC_LUT_VGA_ACCESS_ENABLE', - 'DCP_DC_LUT_VGA_ACCESS_ENABLE_FALSE', - 'DCP_DC_LUT_VGA_ACCESS_ENABLE_TRUE', 'DCP_DENORM_14BIT_OUT', - 'DCP_DENORM_14BIT_OUT_FALSE', 'DCP_DENORM_14BIT_OUT_TRUE', - 'DCP_DENORM_MODE', 'DCP_DENORM_MODE_10BIT', - 'DCP_DENORM_MODE_11BIT', 'DCP_DENORM_MODE_12BIT', - 'DCP_DENORM_MODE_6BIT', 'DCP_DENORM_MODE_8BIT', - 'DCP_DENORM_MODE_RESERVED0', 'DCP_DENORM_MODE_RESERVED1', - 'DCP_DENORM_MODE_UNITY', 'DCP_FRAME_RANDOM_ENABLE', - 'DCP_FRAME_RANDOM_ENABLE_FALSE', 'DCP_FRAME_RANDOM_ENABLE_TRUE', - 'DCP_GRPH_ADDRESS_TRANSLATION_ENABLE', - 'DCP_GRPH_ADDRESS_TRANSLATION_ENABLE_FALSE', - 'DCP_GRPH_ADDRESS_TRANSLATION_ENABLE_TRUE', - 'DCP_GRPH_ALPHA_CROSSBAR', 'DCP_GRPH_ALPHA_CROSSBAR_FROM_A', - 'DCP_GRPH_ALPHA_CROSSBAR_FROM_B', - 'DCP_GRPH_ALPHA_CROSSBAR_FROM_G', - 'DCP_GRPH_ALPHA_CROSSBAR_FROM_R', 'DCP_GRPH_BLUE_CROSSBAR', - 'DCP_GRPH_BLUE_CROSSBAR_FROM_A', 'DCP_GRPH_BLUE_CROSSBAR_FROM_B', - 'DCP_GRPH_BLUE_CROSSBAR_FROM_G', 'DCP_GRPH_BLUE_CROSSBAR_FROM_R', - 'DCP_GRPH_COLOR_EXPANSION_MODE', - 'DCP_GRPH_COLOR_EXPANSION_MODE_DEXP', - 'DCP_GRPH_COLOR_EXPANSION_MODE_ZEXP', 'DCP_GRPH_DEGAMMA_MODE', - 'DCP_GRPH_DEGAMMA_MODE_BYPASS', 'DCP_GRPH_DEGAMMA_MODE_RESERVED', - 'DCP_GRPH_DEGAMMA_MODE_ROMA', 'DCP_GRPH_DEGAMMA_MODE_ROMB', - 'DCP_GRPH_DEPTH', 'DCP_GRPH_DEPTH_16BPP', 'DCP_GRPH_DEPTH_32BPP', - 'DCP_GRPH_DEPTH_64BPP', 'DCP_GRPH_DEPTH_8BPP', - 'DCP_GRPH_DFQ_MIN_FREE_ENTRIES', - 'DCP_GRPH_DFQ_MIN_FREE_ENTRIES_1', - 'DCP_GRPH_DFQ_MIN_FREE_ENTRIES_2', - 'DCP_GRPH_DFQ_MIN_FREE_ENTRIES_3', - 'DCP_GRPH_DFQ_MIN_FREE_ENTRIES_4', - 'DCP_GRPH_DFQ_MIN_FREE_ENTRIES_5', - 'DCP_GRPH_DFQ_MIN_FREE_ENTRIES_6', - 'DCP_GRPH_DFQ_MIN_FREE_ENTRIES_7', - 'DCP_GRPH_DFQ_MIN_FREE_ENTRIES_8', 'DCP_GRPH_DFQ_RESET', - 'DCP_GRPH_DFQ_RESET_ACK', 'DCP_GRPH_DFQ_RESET_ACK_FALSE', - 'DCP_GRPH_DFQ_RESET_ACK_TRUE', 'DCP_GRPH_DFQ_RESET_FALSE', - 'DCP_GRPH_DFQ_RESET_TRUE', 'DCP_GRPH_DFQ_SIZE', - 'DCP_GRPH_DFQ_SIZE_DEEP1', 'DCP_GRPH_DFQ_SIZE_DEEP2', - 'DCP_GRPH_DFQ_SIZE_DEEP3', 'DCP_GRPH_DFQ_SIZE_DEEP4', - 'DCP_GRPH_DFQ_SIZE_DEEP5', 'DCP_GRPH_DFQ_SIZE_DEEP6', - 'DCP_GRPH_DFQ_SIZE_DEEP7', 'DCP_GRPH_DFQ_SIZE_DEEP8', - 'DCP_GRPH_ENABLE', 'DCP_GRPH_ENABLE_FALSE', - 'DCP_GRPH_ENABLE_TRUE', 'DCP_GRPH_ENDIAN_SWAP', - 'DCP_GRPH_ENDIAN_SWAP_8IN16', 'DCP_GRPH_ENDIAN_SWAP_8IN32', - 'DCP_GRPH_ENDIAN_SWAP_8IN64', 'DCP_GRPH_ENDIAN_SWAP_NONE', - 'DCP_GRPH_FLIP_RATE', 'DCP_GRPH_FLIP_RATE_1FRAME', - 'DCP_GRPH_FLIP_RATE_2FRAME', 'DCP_GRPH_FLIP_RATE_3FRAME', - 'DCP_GRPH_FLIP_RATE_4FRAME', 'DCP_GRPH_FLIP_RATE_5FRAME', - 'DCP_GRPH_FLIP_RATE_6FRAME', 'DCP_GRPH_FLIP_RATE_7FRAME', - 'DCP_GRPH_FLIP_RATE_8FRAME', 'DCP_GRPH_FLIP_RATE_ENABLE', - 'DCP_GRPH_FLIP_RATE_ENABLE_FALSE', - 'DCP_GRPH_FLIP_RATE_ENABLE_TRUE', 'DCP_GRPH_FORMAT', - 'DCP_GRPH_FORMAT_16BPP', 'DCP_GRPH_FORMAT_32BPP', - 'DCP_GRPH_FORMAT_64BPP', 'DCP_GRPH_FORMAT_8BPP', - 'DCP_GRPH_GAMUT_REMAP_MODE', 'DCP_GRPH_GAMUT_REMAP_MODE_BYPASS', - 'DCP_GRPH_GAMUT_REMAP_MODE_RESERVED', - 'DCP_GRPH_GAMUT_REMAP_MODE_ROMA', - 'DCP_GRPH_GAMUT_REMAP_MODE_ROMB', 'DCP_GRPH_GREEN_CROSSBAR', - 'DCP_GRPH_GREEN_CROSSBAR_FROM_A', - 'DCP_GRPH_GREEN_CROSSBAR_FROM_B', - 'DCP_GRPH_GREEN_CROSSBAR_FROM_G', - 'DCP_GRPH_GREEN_CROSSBAR_FROM_R', 'DCP_GRPH_INPUT_GAMMA_MODE', - 'DCP_GRPH_INPUT_GAMMA_MODE_BYPASS', - 'DCP_GRPH_INPUT_GAMMA_MODE_LUT', 'DCP_GRPH_KEYER_ALPHA_SEL', - 'DCP_GRPH_KEYER_ALPHA_SEL_FALSE', 'DCP_GRPH_KEYER_ALPHA_SEL_TRUE', - 'DCP_GRPH_LUT_10BIT_BYPASS_DBL_BUF_EN', - 'DCP_GRPH_LUT_10BIT_BYPASS_DBL_BUF_EN_FALSE', - 'DCP_GRPH_LUT_10BIT_BYPASS_DBL_BUF_EN_TRUE', - 'DCP_GRPH_LUT_10BIT_BYPASS_EN', - 'DCP_GRPH_LUT_10BIT_BYPASS_EN_FALSE', - 'DCP_GRPH_LUT_10BIT_BYPASS_EN_TRUE', - 'DCP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE', - 'DCP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE_FALSE', - 'DCP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE_TRUE', - 'DCP_GRPH_MODE_UPDATE_PENDING', - 'DCP_GRPH_MODE_UPDATE_PENDING_FALSE', - 'DCP_GRPH_MODE_UPDATE_PENDING_TRUE', 'DCP_GRPH_MODE_UPDATE_TAKEN', - 'DCP_GRPH_MODE_UPDATE_TAKEN_FALSE', - 'DCP_GRPH_MODE_UPDATE_TAKEN_TRUE', 'DCP_GRPH_NUM_BANKS', - 'DCP_GRPH_NUM_BANKS_16BANK', 'DCP_GRPH_NUM_BANKS_1BANK', - 'DCP_GRPH_NUM_BANKS_2BANK', 'DCP_GRPH_NUM_BANKS_4BANK', - 'DCP_GRPH_NUM_BANKS_8BANK', 'DCP_GRPH_NUM_PIPES', - 'DCP_GRPH_NUM_PIPES_1PIPE', 'DCP_GRPH_NUM_PIPES_2PIPE', - 'DCP_GRPH_NUM_PIPES_4PIPE', 'DCP_GRPH_NUM_PIPES_8PIPE', - 'DCP_GRPH_PFLIP_INT_CLEAR', 'DCP_GRPH_PFLIP_INT_CLEAR_FALSE', - 'DCP_GRPH_PFLIP_INT_CLEAR_TRUE', 'DCP_GRPH_PFLIP_INT_MASK', - 'DCP_GRPH_PFLIP_INT_MASK_FALSE', 'DCP_GRPH_PFLIP_INT_MASK_TRUE', - 'DCP_GRPH_PFLIP_INT_TYPE', 'DCP_GRPH_PFLIP_INT_TYPE_LEGACY_LEVEL', - 'DCP_GRPH_PFLIP_INT_TYPE_PULSE', 'DCP_GRPH_PRESCALE_BYPASS', - 'DCP_GRPH_PRESCALE_BYPASS_FALSE', 'DCP_GRPH_PRESCALE_BYPASS_TRUE', - 'DCP_GRPH_PRESCALE_B_SIGN', 'DCP_GRPH_PRESCALE_B_SIGN_SIGNED', - 'DCP_GRPH_PRESCALE_B_SIGN_UNSIGNED', 'DCP_GRPH_PRESCALE_G_SIGN', - 'DCP_GRPH_PRESCALE_G_SIGN_SIGNED', - 'DCP_GRPH_PRESCALE_G_SIGN_UNSIGNED', 'DCP_GRPH_PRESCALE_R_SIGN', - 'DCP_GRPH_PRESCALE_R_SIGN_SIGNED', - 'DCP_GRPH_PRESCALE_R_SIGN_UNSIGNED', 'DCP_GRPH_PRESCALE_SELECT', - 'DCP_GRPH_PRESCALE_SELECT_FIXED', - 'DCP_GRPH_PRESCALE_SELECT_FLOATING', - 'DCP_GRPH_PRIMARY_DFQ_ENABLE', - 'DCP_GRPH_PRIMARY_DFQ_ENABLE_FALSE', - 'DCP_GRPH_PRIMARY_DFQ_ENABLE_TRUE', 'DCP_GRPH_RED_CROSSBAR', - 'DCP_GRPH_RED_CROSSBAR_FROM_A', 'DCP_GRPH_RED_CROSSBAR_FROM_B', - 'DCP_GRPH_RED_CROSSBAR_FROM_G', 'DCP_GRPH_RED_CROSSBAR_FROM_R', - 'DCP_GRPH_REGAMMA_MODE', 'DCP_GRPH_REGAMMA_MODE_BYPASS', - 'DCP_GRPH_REGAMMA_MODE_PROGA', 'DCP_GRPH_REGAMMA_MODE_PROGB', - 'DCP_GRPH_REGAMMA_MODE_SRGB', 'DCP_GRPH_REGAMMA_MODE_XVYCC', - 'DCP_GRPH_ROTATION_ANGLE', 'DCP_GRPH_ROTATION_ANGLE_0', - 'DCP_GRPH_ROTATION_ANGLE_180', 'DCP_GRPH_ROTATION_ANGLE_270', - 'DCP_GRPH_ROTATION_ANGLE_90', 'DCP_GRPH_SECONDARY_DFQ_ENABLE', - 'DCP_GRPH_SECONDARY_DFQ_ENABLE_FALSE', - 'DCP_GRPH_SECONDARY_DFQ_ENABLE_TRUE', - 'DCP_GRPH_STEREOSYNC_FLIP_EN', - 'DCP_GRPH_STEREOSYNC_FLIP_EN_FALSE', - 'DCP_GRPH_STEREOSYNC_FLIP_EN_TRUE', - 'DCP_GRPH_STEREOSYNC_FLIP_MODE', - 'DCP_GRPH_STEREOSYNC_FLIP_MODE_FLIP', - 'DCP_GRPH_STEREOSYNC_FLIP_MODE_PHASE0', - 'DCP_GRPH_STEREOSYNC_FLIP_MODE_PHASE1', - 'DCP_GRPH_STEREOSYNC_FLIP_MODE_RESET', - 'DCP_GRPH_STEREOSYNC_SELECT_DISABLE', - 'DCP_GRPH_STEREOSYNC_SELECT_DISABLE_FALSE', - 'DCP_GRPH_STEREOSYNC_SELECT_DISABLE_TRUE', - 'DCP_GRPH_SURFACE_COUNTER_EN', - 'DCP_GRPH_SURFACE_COUNTER_EN_DISABLE', - 'DCP_GRPH_SURFACE_COUNTER_EN_ENABLE', - 'DCP_GRPH_SURFACE_COUNTER_ERR_WRAP_OCCURED', - 'DCP_GRPH_SURFACE_COUNTER_ERR_WRAP_OCCURED_NO', - 'DCP_GRPH_SURFACE_COUNTER_ERR_WRAP_OCCURED_YES', - 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT', - 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_0', - 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_1', - 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_10', - 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_11', - 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_2', - 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_3', - 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_4', - 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_5', - 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_6', - 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_7', - 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_8', - 'DCP_GRPH_SURFACE_COUNTER_EVENT_SELECT_9', - 'DCP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE', - 'DCP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE_FALSE', - 'DCP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE_TRUE', - 'DCP_GRPH_SURFACE_IGNORE_UPDATE_LOCK', - 'DCP_GRPH_SURFACE_IGNORE_UPDATE_LOCK_FALSE', - 'DCP_GRPH_SURFACE_IGNORE_UPDATE_LOCK_TRUE', - 'DCP_GRPH_SURFACE_UPDATE_H_RETRACE_EN', - 'DCP_GRPH_SURFACE_UPDATE_H_RETRACE_EN_FALSE', - 'DCP_GRPH_SURFACE_UPDATE_H_RETRACE_EN_TRUE', - 'DCP_GRPH_SURFACE_UPDATE_PENDING', - 'DCP_GRPH_SURFACE_UPDATE_PENDING_FALSE', - 'DCP_GRPH_SURFACE_UPDATE_PENDING_TRUE', - 'DCP_GRPH_SURFACE_UPDATE_TAKEN', - 'DCP_GRPH_SURFACE_UPDATE_TAKEN_FALSE', - 'DCP_GRPH_SURFACE_UPDATE_TAKEN_TRUE', - 'DCP_GRPH_SURFACE_XDMA_PENDING_ENABLE', - 'DCP_GRPH_SURFACE_XDMA_PENDING_ENABLE_FALSE', - 'DCP_GRPH_SURFACE_XDMA_PENDING_ENABLE_TRUE', 'DCP_GRPH_SW_MODE', - 'DCP_GRPH_SW_MODE_0', 'DCP_GRPH_SW_MODE_2', 'DCP_GRPH_SW_MODE_22', - 'DCP_GRPH_SW_MODE_23', 'DCP_GRPH_SW_MODE_26', - 'DCP_GRPH_SW_MODE_27', 'DCP_GRPH_SW_MODE_3', - 'DCP_GRPH_SW_MODE_30', 'DCP_GRPH_SW_MODE_31', - 'DCP_GRPH_UPDATE_LOCK', 'DCP_GRPH_UPDATE_LOCK_FALSE', - 'DCP_GRPH_UPDATE_LOCK_TRUE', - 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_EN', - 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_EN_FALSE', - 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_EN_TRUE', - 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_MODE', - 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_MODE_RELY_ENABLE', - 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_CNT_MODE_RELY_NUM', - 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_ACK', - 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_ACK_FALSE', - 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_ACK_TRUE', - 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_MASK', - 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_MASK_FALSE', - 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_FRAME_MASK_TRUE', - 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_ACK', - 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_ACK_FALSE', - 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_ACK_TRUE', - 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_MASK', - 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_MASK_FALSE', - 'DCP_GRPH_XDMA_CACHE_UNDERFLOW_INT_MASK_TRUE', - 'DCP_GRPH_XDMA_DRR_MODE_ENABLE', - 'DCP_GRPH_XDMA_DRR_MODE_ENABLE_DISABLE', - 'DCP_GRPH_XDMA_DRR_MODE_ENABLE_ENABLE', - 'DCP_GRPH_XDMA_FLIP_TIMEOUT_ACK', - 'DCP_GRPH_XDMA_FLIP_TIMEOUT_ACK_FALSE', - 'DCP_GRPH_XDMA_FLIP_TIMEOUT_ACK_TRUE', - 'DCP_GRPH_XDMA_FLIP_TIMEOUT_MASK', - 'DCP_GRPH_XDMA_FLIP_TIMEOUT_MASK_FALSE', - 'DCP_GRPH_XDMA_FLIP_TIMEOUT_MASK_TRUE', - 'DCP_GRPH_XDMA_FLIP_TYPE_CLEAR', - 'DCP_GRPH_XDMA_FLIP_TYPE_CLEAR_DISABLE', - 'DCP_GRPH_XDMA_FLIP_TYPE_CLEAR_ENABLE', - 'DCP_GRPH_XDMA_MULTIFLIP_ENABLE', - 'DCP_GRPH_XDMA_MULTIFLIP_ENABLE_DISABLE', - 'DCP_GRPH_XDMA_MULTIFLIP_ENABLE_ENABLE', - 'DCP_GRPH_XDMA_SUPER_AA_EN', 'DCP_GRPH_XDMA_SUPER_AA_EN_FALSE', - 'DCP_GRPH_XDMA_SUPER_AA_EN_TRUE', 'DCP_GSL0_EN', - 'DCP_GSL0_EN_FALSE', 'DCP_GSL0_EN_TRUE', 'DCP_GSL1_EN', - 'DCP_GSL1_EN_FALSE', 'DCP_GSL1_EN_TRUE', 'DCP_GSL2_EN', - 'DCP_GSL2_EN_FALSE', 'DCP_GSL2_EN_TRUE', - 'DCP_GSL_DELAY_SURFACE_UPDATE_PENDING', - 'DCP_GSL_DELAY_SURFACE_UPDATE_PENDING_FALSE', - 'DCP_GSL_DELAY_SURFACE_UPDATE_PENDING_TRUE', 'DCP_GSL_MASTER_EN', - 'DCP_GSL_MASTER_EN_FALSE', 'DCP_GSL_MASTER_EN_TRUE', - 'DCP_GSL_SYNC_SOURCE', 'DCP_GSL_SYNC_SOURCE_FLIP', - 'DCP_GSL_SYNC_SOURCE_PHASE0', 'DCP_GSL_SYNC_SOURCE_PHASE1', - 'DCP_GSL_SYNC_SOURCE_RESET', - 'DCP_GSL_USE_CHECKPOINT_WINDOW_IN_VSYNC', - 'DCP_GSL_USE_CHECKPOINT_WINDOW_IN_VSYNC_DIS', - 'DCP_GSL_USE_CHECKPOINT_WINDOW_IN_VSYNC_EN', 'DCP_GSL_XDMA_GROUP', - 'DCP_GSL_XDMA_GROUP_HSYNC0', 'DCP_GSL_XDMA_GROUP_HSYNC1', - 'DCP_GSL_XDMA_GROUP_HSYNC2', 'DCP_GSL_XDMA_GROUP_UNDERFLOW_EN', - 'DCP_GSL_XDMA_GROUP_UNDERFLOW_EN_FALSE', - 'DCP_GSL_XDMA_GROUP_UNDERFLOW_EN_TRUE', - 'DCP_GSL_XDMA_GROUP_VSYNC', 'DCP_HIGHPASS_RANDOM_ENABLE', - 'DCP_HIGHPASS_RANDOM_ENABLE_FALSE', - 'DCP_HIGHPASS_RANDOM_ENABLE_TRUE', 'DCP_INPUT_CSC_GRPH_MODE', - 'DCP_INPUT_CSC_GRPH_MODE_BYPASS', - 'DCP_INPUT_CSC_GRPH_MODE_INPUT_CSC_COEF', - 'DCP_INPUT_CSC_GRPH_MODE_RESERVED', - 'DCP_INPUT_CSC_GRPH_MODE_SHARED_COEF', 'DCP_KEY_MODE', - 'DCP_KEY_MODE_ALPHA0', 'DCP_KEY_MODE_ALPHA1', - 'DCP_KEY_MODE_IN_RANGE_ALPHA0', 'DCP_KEY_MODE_IN_RANGE_ALPHA1', - 'DCP_OUTPUT_CSC_GRPH_MODE', 'DCP_OUTPUT_CSC_GRPH_MODE_BYPASS', - 'DCP_OUTPUT_CSC_GRPH_MODE_OUTPUT_CSC_COEF', - 'DCP_OUTPUT_CSC_GRPH_MODE_RESERVED0', - 'DCP_OUTPUT_CSC_GRPH_MODE_RESERVED1', - 'DCP_OUTPUT_CSC_GRPH_MODE_RGB', - 'DCP_OUTPUT_CSC_GRPH_MODE_SHARED_COEF', - 'DCP_OUTPUT_CSC_GRPH_MODE_YCBCR601', - 'DCP_OUTPUT_CSC_GRPH_MODE_YCBCR709', 'DCP_OUT_ROUND_TRUNC_MODE', - 'DCP_OUT_ROUND_TRUNC_MODE_ROUND_10', - 'DCP_OUT_ROUND_TRUNC_MODE_ROUND_11', - 'DCP_OUT_ROUND_TRUNC_MODE_ROUND_12', - 'DCP_OUT_ROUND_TRUNC_MODE_ROUND_13', - 'DCP_OUT_ROUND_TRUNC_MODE_ROUND_14', - 'DCP_OUT_ROUND_TRUNC_MODE_ROUND_8', - 'DCP_OUT_ROUND_TRUNC_MODE_ROUND_9', - 'DCP_OUT_ROUND_TRUNC_MODE_ROUND_RESERVED', - 'DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_10', - 'DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_11', - 'DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_12', - 'DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_13', - 'DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_14', - 'DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_8', - 'DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_9', - 'DCP_OUT_ROUND_TRUNC_MODE_TRUNCATE_RESERVED', - 'DCP_RGB_RANDOM_ENABLE', 'DCP_RGB_RANDOM_ENABLE_FALSE', - 'DCP_RGB_RANDOM_ENABLE_TRUE', 'DCP_SPATIAL_DITHER_DEPTH', - 'DCP_SPATIAL_DITHER_DEPTH_24BPP', - 'DCP_SPATIAL_DITHER_DEPTH_30BPP', - 'DCP_SPATIAL_DITHER_DEPTH_36BPP', - 'DCP_SPATIAL_DITHER_DEPTH_UNDEFINED', 'DCP_SPATIAL_DITHER_EN', - 'DCP_SPATIAL_DITHER_EN_FALSE', 'DCP_SPATIAL_DITHER_EN_TRUE', - 'DCP_SPATIAL_DITHER_MODE', 'DCP_SPATIAL_DITHER_MODE_BYPASS', - 'DCP_SPATIAL_DITHER_MODE_RESERVED', - 'DCP_SPATIAL_DITHER_MODE_ROMA', 'DCP_SPATIAL_DITHER_MODE_ROMB', - 'DCP_TEST_DEBUG_WRITE_EN', 'DCP_TEST_DEBUG_WRITE_EN_FALSE', - 'DCP_TEST_DEBUG_WRITE_EN_TRUE', 'DC_MEM_GLOBAL_PWR_REQ_DIS', - 'DC_MEM_GLOBAL_PWR_REQ_DISABLE', 'DC_MEM_GLOBAL_PWR_REQ_ENABLE', - 'DEGAMMA_MODE_A', 'DEGAMMA_MODE_B', 'DEGAMMA_MODE_BYPASS', - 'DENORM_CLAMP_MODE_10', 'DENORM_CLAMP_MODE_12', - 'DENORM_CLAMP_MODE_8', 'DENORM_CLAMP_MODE_UNITY', 'DEPTH_16', - 'DEPTH_32_FLOAT', 'DEPTH_8_24', 'DEPTH_8_24_FLOAT', - 'DEPTH_INVALID', 'DEPTH_X24_8_32_FLOAT', 'DEPTH_X8_24', - 'DEPTH_X8_24_FLOAT', 'DFSMFlushEvents', 'DIGA_BE_SOFT_RESET', - 'DIGA_BE_SOFT_RESET_0', 'DIGA_BE_SOFT_RESET_1', - 'DIGA_FE_SOFT_RESET', 'DIGA_FE_SOFT_RESET_0', - 'DIGA_FE_SOFT_RESET_1', 'DIGB_BE_SOFT_RESET', - 'DIGB_BE_SOFT_RESET_0', 'DIGB_BE_SOFT_RESET_1', - 'DIGB_FE_SOFT_RESET', 'DIGB_FE_SOFT_RESET_0', - 'DIGB_FE_SOFT_RESET_1', 'DIGC_BE_SOFT_RESET', - 'DIGC_BE_SOFT_RESET_0', 'DIGC_BE_SOFT_RESET_1', - 'DIGC_FE_SOFT_RESET', 'DIGC_FE_SOFT_RESET_0', - 'DIGC_FE_SOFT_RESET_1', 'DIGD_BE_SOFT_RESET', - 'DIGD_BE_SOFT_RESET_0', 'DIGD_BE_SOFT_RESET_1', - 'DIGD_FE_SOFT_RESET', 'DIGD_FE_SOFT_RESET_0', - 'DIGD_FE_SOFT_RESET_1', 'DIGE_BE_SOFT_RESET', - 'DIGE_BE_SOFT_RESET_0', 'DIGE_BE_SOFT_RESET_1', - 'DIGE_FE_SOFT_RESET', 'DIGE_FE_SOFT_RESET_0', - 'DIGE_FE_SOFT_RESET_1', 'DIGF_BE_SOFT_RESET', - 'DIGF_BE_SOFT_RESET_0', 'DIGF_BE_SOFT_RESET_1', - 'DIGF_FE_SOFT_RESET', 'DIGF_FE_SOFT_RESET_0', - 'DIGF_FE_SOFT_RESET_1', 'DIGG_BE_SOFT_RESET', - 'DIGG_BE_SOFT_RESET_0', 'DIGG_BE_SOFT_RESET_1', - 'DIGG_FE_SOFT_RESET', 'DIGG_FE_SOFT_RESET_0', - 'DIGG_FE_SOFT_RESET_1', 'DIGLPA_BE_SOFT_RESET', - 'DIGLPA_BE_SOFT_RESET_0', 'DIGLPA_BE_SOFT_RESET_1', - 'DIGLPA_FE_SOFT_RESET', 'DIGLPA_FE_SOFT_RESET_0', - 'DIGLPA_FE_SOFT_RESET_1', 'DIGLPB_BE_SOFT_RESET', - 'DIGLPB_BE_SOFT_RESET_0', 'DIGLPB_BE_SOFT_RESET_1', - 'DIGLPB_FE_SOFT_RESET', 'DIGLPB_FE_SOFT_RESET_0', - 'DIGLPB_FE_SOFT_RESET_1', 'DIG_10BIT_TEST_PATTERN', - 'DIG_ALTERNATING_TEST_PATTERN', 'DIG_BE_CNTL_HPD1', - 'DIG_BE_CNTL_HPD2', 'DIG_BE_CNTL_HPD3', 'DIG_BE_CNTL_HPD4', - 'DIG_BE_CNTL_HPD5', 'DIG_BE_CNTL_HPD6', 'DIG_BE_CNTL_HPD_SELECT', - 'DIG_BE_CNTL_MODE', 'DIG_BE_DP_MST_MODE', 'DIG_BE_DP_SST_MODE', - 'DIG_BE_RESERVED1', 'DIG_BE_RESERVED2', 'DIG_BE_RESERVED3', - 'DIG_BE_SDVO_RESERVED', 'DIG_BE_TMDS_DVI_MODE', - 'DIG_BE_TMDS_HDMI_MODE', 'DIG_FE_CNTL_SOURCE_SELECT', - 'DIG_FE_CNTL_STEREOSYNC_SELECT', 'DIG_FE_SOURCE_FROM_FMT0', - 'DIG_FE_SOURCE_FROM_FMT1', 'DIG_FE_SOURCE_FROM_FMT2', - 'DIG_FE_SOURCE_FROM_FMT3', 'DIG_FE_SOURCE_FROM_FMT4', - 'DIG_FE_SOURCE_FROM_FMT5', 'DIG_FE_STEREOSYNC_FROM_FMT0', - 'DIG_FE_STEREOSYNC_FROM_FMT1', 'DIG_FE_STEREOSYNC_FROM_FMT2', - 'DIG_FE_STEREOSYNC_FROM_FMT3', 'DIG_FE_STEREOSYNC_FROM_FMT4', - 'DIG_FE_STEREOSYNC_FROM_FMT5', 'DIG_FIFO_ERROR_ACK', - 'DIG_FIFO_ERROR_ACK_INT', 'DIG_FIFO_ERROR_NOT_ACK', - 'DIG_FIFO_FORCE_RECAL_AVERAGE_LEVEL', - 'DIG_FIFO_FORCE_RECOMP_MINMAX', - 'DIG_FIFO_NOT_FORCE_RECAL_AVERAGE', - 'DIG_FIFO_NOT_FORCE_RECOMP_MINMAX', 'DIG_FIFO_READ_CLOCK_SRC', - 'DIG_FIFO_READ_CLOCK_SRC_FROM_DCCG', - 'DIG_FIFO_READ_CLOCK_SRC_FROM_DISPLAY_PIPE', - 'DIG_FIFO_STATUS_FORCE_RECAL_AVERAGE', - 'DIG_FIFO_STATUS_FORCE_RECOMP_MINMAX', - 'DIG_FIFO_STATUS_USE_OVERWRITE_LEVEL', - 'DIG_FIFO_USE_CAL_AVERAGE_LEVEL', 'DIG_FIFO_USE_OVERWRITE_LEVEL', - 'DIG_IN_DEBUG_MODE', 'DIG_IN_NORMAL_OPERATION', - 'DIG_OUTPUT_CRC_CNTL_LINK_SEL', 'DIG_OUTPUT_CRC_DATA_SEL', - 'DIG_OUTPUT_CRC_FOR_ACTIVEONLY', 'DIG_OUTPUT_CRC_FOR_AUDIO', - 'DIG_OUTPUT_CRC_FOR_FULLFRAME', 'DIG_OUTPUT_CRC_FOR_VBI', - 'DIG_OUTPUT_CRC_ON_LINK0', 'DIG_OUTPUT_CRC_ON_LINK1', - 'DIG_RANDOM_PATTERN_ENABLED', 'DIG_RANDOM_PATTERN_RESETED', - 'DIG_RANDOM_PATTERN_SEED_RAN_PAT', - 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_ALL_PIXELS', - 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_DE_HIGH', - 'DIG_TEST_PATTERN_EXTERNAL_RESET_BY_EXT_SIG', - 'DIG_TEST_PATTERN_EXTERNAL_RESET_EN', - 'DIG_TEST_PATTERN_EXTERNAL_RESET_ENABLE', - 'DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL', - 'DIG_TEST_PATTERN_NORMAL', 'DIG_TEST_PATTERN_RANDOM', - 'DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN', - 'DIG_TEST_PATTERN_RANDOM_PATTERN_RESET', - 'DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN', - 'DISABLE_BINNING_USE_LEGACY_SC', 'DISABLE_BINNING_USE_NEW_SC', - 'DISABLE_CLOCK_GATING', 'DISABLE_CLOCK_GATING_IN_DCO', - 'DISABLE_JITTER_REMOVAL', 'DISABLE_MEM_PWR_CTRL', - 'DISABLE_THE_CLOCK', 'DISABLE_THE_FEATURE', - 'DISPCLK_CHG_FWD_CORR_DISABLE', - 'DISPCLK_CHG_FWD_CORR_DISABLE_AT_BEGINNING', - 'DISPCLK_CHG_FWD_CORR_ENABLE_AT_BEGINNING', - 'DISPCLK_FREQ_RAMP_COMPLETED', 'DISPCLK_FREQ_RAMP_DONE', - 'DISPCLK_FREQ_RAMP_IN_PROGRESS', 'DITHER_DIS', 'DITHER_EN', - 'DI_INDEX_SIZE_16_BIT', 'DI_INDEX_SIZE_32_BIT', - 'DI_INDEX_SIZE_8_BIT', 'DI_MAJOR_MODE_0', 'DI_MAJOR_MODE_1', - 'DI_PT_2D_RECTANGLE', 'DI_PT_LINELIST', 'DI_PT_LINELIST_ADJ', - 'DI_PT_LINELOOP', 'DI_PT_LINESTRIP', 'DI_PT_LINESTRIP_ADJ', - 'DI_PT_NONE', 'DI_PT_PATCH', 'DI_PT_POINTLIST', 'DI_PT_POLYGON', - 'DI_PT_QUADLIST', 'DI_PT_QUADSTRIP', 'DI_PT_RECTLIST', - 'DI_PT_TRIFAN', 'DI_PT_TRILIST', 'DI_PT_TRILIST_ADJ', - 'DI_PT_TRISTRIP', 'DI_PT_TRISTRIP_ADJ', 'DI_PT_TRI_WITH_WFLAGS', - 'DI_PT_UNUSED_1', 'DI_PT_UNUSED_3', 'DI_PT_UNUSED_4', - 'DI_SRC_SEL_AUTO_INDEX', 'DI_SRC_SEL_DMA', 'DI_SRC_SEL_IMMEDIATE', - 'DI_SRC_SEL_RESERVED', - 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE', - 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_DISABLE', - 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_ENABLE', - 'DONUTS', 'DOUT_I2C_ACK', 'DOUT_I2C_ACK_TO_CLEAN', - 'DOUT_I2C_ARBITRATION_ABORT_CURRENT_TRANSFER', - 'DOUT_I2C_ARBITRATION_ABORT_XFER', - 'DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG', - 'DOUT_I2C_ARBITRATION_DONE__NOT_USING_I2C_REG', - 'DOUT_I2C_ARBITRATION_DONE__USING_I2C_REG', - 'DOUT_I2C_ARBITRATION_NOT_ABORT_CURRENT_TRANSFER', - 'DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_0_RESERVED', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_1_RESERVED', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_HIGH', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_NORMAL', - 'DOUT_I2C_ARBITRATION_SW_QUEUE_DISABLED', - 'DOUT_I2C_ARBITRATION_SW_QUEUE_ENABLED', - 'DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ', - 'DOUT_I2C_ARBITRATION__NOT_USE_I2C_REG_REQ', - 'DOUT_I2C_ARBITRATION__USE_I2C_REG_REQ', - 'DOUT_I2C_CONTROL_DBG_REF_SEL', 'DOUT_I2C_CONTROL_DDC_SELECT', - 'DOUT_I2C_CONTROL_FAST_REFERENCE_DEBUG', 'DOUT_I2C_CONTROL_GO', - 'DOUT_I2C_CONTROL_NORMAL_DEBUG', - 'DOUT_I2C_CONTROL_NOT_RESET_I2C_CONTROLLER', - 'DOUT_I2C_CONTROL_NOT_RESET_SW_STATUS', - 'DOUT_I2C_CONTROL_RESET_I2C_CONTROLLER', - 'DOUT_I2C_CONTROL_RESET_SW_STATUS', - 'DOUT_I2C_CONTROL_SELECT_DDC1', 'DOUT_I2C_CONTROL_SELECT_DDC2', - 'DOUT_I2C_CONTROL_SELECT_DDC3', 'DOUT_I2C_CONTROL_SELECT_DDC4', - 'DOUT_I2C_CONTROL_SELECT_DDC5', 'DOUT_I2C_CONTROL_SELECT_DDC6', - 'DOUT_I2C_CONTROL_SELECT_DDCVGA', 'DOUT_I2C_CONTROL_SEND_RESET', - 'DOUT_I2C_CONTROL_SOFT_RESET', 'DOUT_I2C_CONTROL_START_TRANSFER', - 'DOUT_I2C_CONTROL_STOP_TRANSFER', - 'DOUT_I2C_CONTROL_SW_STATUS_RESET', 'DOUT_I2C_CONTROL_TRANS0', - 'DOUT_I2C_CONTROL_TRANS0_TRANS1', - 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2', - 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2_TRANS3', - 'DOUT_I2C_CONTROL_TRANSACTION_COUNT', - 'DOUT_I2C_CONTROL__NOT_SEND_RESET', - 'DOUT_I2C_CONTROL__SEND_RESET', 'DOUT_I2C_DATA_INDEX_WRITE', - 'DOUT_I2C_DATA__INDEX_WRITE', 'DOUT_I2C_DATA__NOT_INDEX_WRITE', - 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_BY_EXTERNAL_RESISTOR', - 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_BY_EXTERNAL_RESISTOR', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_10MCLKS', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_20MCLKS', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL', - 'DOUT_I2C_DDC_SETUP_EDID_DETECT_CONNECT', - 'DOUT_I2C_DDC_SETUP_EDID_DETECT_DISCONNECT', - 'DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE', - 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SCL', - 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SDA', - 'DOUT_I2C_DDC_SPEED_THRESHOLD', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_BIG_THAN_ZERO', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_HALF_OF_TOTAL_SAMPLE', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_QUATER_OF_TOTAL_SAMPLE', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_THREE_QUATERS_OF_TOTAL_SAMPLE', - 'DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET', - 'DOUT_I2C_EDID_NOT_SEND_RESET_BEFORE_EDID_READ_TRACTION', - 'DOUT_I2C_EDID_SEND_RESET_BEFORE_EDID_READ_TRACTION', - 'DOUT_I2C_NO_ACK', 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE', - 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__LEVEL', - 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__PULSE', - 'DOUT_I2C_TRANSACTION_STOP_ALL_TRANS', - 'DOUT_I2C_TRANSACTION_STOP_CURRENT_TRANS', - 'DOUT_I2C_TRANSACTION_STOP_ON_NACK', 'DOWNSCALE_PREFETCH_DIS', - 'DOWNSCALE_PREFETCH_EN', 'DPCSRX_BPHY_PCS_RX0_CLK', - 'DPCSRX_BPHY_PCS_RX1_CLK', 'DPCSRX_BPHY_PCS_RX2_CLK', - 'DPCSRX_BPHY_PCS_RX3_CLK', 'DPCSRX_DBG_CFGCLK_SEL', - 'DPCSRX_DBG_CFGCLK_SEL_CBUS_MASTER', - 'DPCSRX_DBG_CFGCLK_SEL_CBUS_SLAVE', - 'DPCSRX_DBG_CFGCLK_SEL_DC_DPCS_INF', - 'DPCSRX_DBG_CFGCLK_SEL_DPCS_BPHY_INF', - 'DPCSRX_DBG_RX_SYMCLK_SEL_INT', 'DPCSRX_DBG_RX_SYMCLK_SEL_OUT0', - 'DPCSRX_DBG_RX_SYMCLK_SEL_OUT1', - 'DPCSRX_RX_CLOCK_CNTL_DPCS_SYMCLK_RX_SEL', 'DPCSRX_RX_SYMCLK_SEL', - 'DPCSTX_DBG_CFGCLK_SEL', 'DPCSTX_DBG_CFGCLK_SEL_CBUS_MASTER', - 'DPCSTX_DBG_CFGCLK_SEL_CBUS_SLAVE', - 'DPCSTX_DBG_CFGCLK_SEL_DC_DPCS_INF', - 'DPCSTX_DBG_CFGCLK_SEL_DPCS_BPHY_INF', - 'DPCSTX_DBG_TX_SYMCLK_DIV2_SEL_FIFO_RD', - 'DPCSTX_DBG_TX_SYMCLK_DIV2_SEL_INT', - 'DPCSTX_DBG_TX_SYMCLK_DIV2_SEL_OUT0', - 'DPCSTX_DBG_TX_SYMCLK_DIV2_SEL_OUT1', - 'DPCSTX_DBG_TX_SYMCLK_DIV2_SEL_OUT2', - 'DPCSTX_DBG_TX_SYMCLK_DIV2_SEL_OUT3', - 'DPCSTX_DBG_TX_SYMCLK_SEL_FIFO_WR', - 'DPCSTX_DBG_TX_SYMCLK_SEL_IN0', 'DPCSTX_DBG_TX_SYMCLK_SEL_IN1', - 'DPCSTX_TX_SYMCLK_DIV2_SEL', 'DPCSTX_TX_SYMCLK_SEL', - 'DPDBG_CLK_FORCE_EN', 'DPDBG_CLK_FORCE_EN_DISABLE', - 'DPDBG_CLK_FORCE_EN_ENABLE', 'DPDBG_DISABLE', 'DPDBG_EN', - 'DPDBG_ENABLE', 'DPDBG_ERROR_DETECTION_MODE', - 'DPDBG_ERROR_DETECTION_MODE_CSC', - 'DPDBG_ERROR_DETECTION_MODE_RS_ENCODING', - 'DPDBG_FIFO_OVERFLOW_INTERRUPT_ACK', - 'DPDBG_FIFO_OVERFLOW_INTERRUPT_MASK', - 'DPDBG_FIFO_OVERFLOW_INTERRUPT_TYPE', - 'DPDBG_FIFO_OVERFLOW_INT_CLEAR', - 'DPDBG_FIFO_OVERFLOW_INT_DISABLE', - 'DPDBG_FIFO_OVERFLOW_INT_ENABLE', - 'DPDBG_FIFO_OVERFLOW_INT_LEVEL_BASED', - 'DPDBG_FIFO_OVERFLOW_INT_NO_ACK', - 'DPDBG_FIFO_OVERFLOW_INT_PULSE_BASED', 'DPDBG_INPUT_DISABLE', - 'DPDBG_INPUT_EN', 'DPDBG_INPUT_ENABLE', 'DPDBG_SOFT_RESET', - 'DPDBG_SOFT_RESET_0', 'DPDBG_SOFT_RESET_1', 'DPHY_8B10B_CUR_DISP', - 'DPHY_8B10B_CUR_DISP_ONE', 'DPHY_8B10B_CUR_DISP_ZERO', - 'DPHY_8B10B_NOT_RESET', 'DPHY_8B10B_OUTPUT', 'DPHY_8B10B_RESET', - 'DPHY_8B10B_RESETET', - 'DPHY_ALT_SCRAMBLER_INTERNAL_RESET_SOLUTION', - 'DPHY_ALT_SCRAMBLER_REGULAR_RESET_VALUE', - 'DPHY_ALT_SCRAMBLER_RESET_EN', 'DPHY_ALT_SCRAMBLER_RESET_SEL', - 'DPHY_ALT_SCRAMBLER_RESET_SEL_CUSTOM_RESET_VALUE', - 'DPHY_ALT_SCRAMBLER_RESET_SEL_EDP_RESET_VALUE', - 'DPHY_ATEST_LANE0_PRBS_PATTERN', 'DPHY_ATEST_LANE0_REG_PATTERN', - 'DPHY_ATEST_LANE1_PRBS_PATTERN', 'DPHY_ATEST_LANE1_REG_PATTERN', - 'DPHY_ATEST_LANE2_PRBS_PATTERN', 'DPHY_ATEST_LANE2_REG_PATTERN', - 'DPHY_ATEST_LANE3_PRBS_PATTERN', 'DPHY_ATEST_LANE3_REG_PATTERN', - 'DPHY_ATEST_SEL_LANE0', 'DPHY_ATEST_SEL_LANE1', - 'DPHY_ATEST_SEL_LANE2', 'DPHY_ATEST_SEL_LANE3', 'DPHY_BYPASS', - 'DPHY_CRC_CONTINUOUS', 'DPHY_CRC_CONT_EN', 'DPHY_CRC_DISABLED', - 'DPHY_CRC_EN', 'DPHY_CRC_ENABLED', 'DPHY_CRC_FIELD', - 'DPHY_CRC_LANE0_SELECTED', 'DPHY_CRC_LANE1_SELECTED', - 'DPHY_CRC_LANE2_SELECTED', 'DPHY_CRC_LANE3_SELECTED', - 'DPHY_CRC_MST_PHASE_ERROR_ACK', 'DPHY_CRC_MST_PHASE_ERROR_ACKED', - 'DPHY_CRC_MST_PHASE_ERROR_NO_ACK', 'DPHY_CRC_ONE_SHOT', - 'DPHY_CRC_SEL', 'DPHY_CRC_START_FROM_BOTTOM_FIELD', - 'DPHY_CRC_START_FROM_TOP_FIELD', 'DPHY_DBG_OUTPUT', - 'DPHY_DPHY_SCRAMBLER_ADVANCE_ON_DATA_SYMBOL_ONLY', - 'DPHY_FAST_TRAINING_CAPABLE', 'DPHY_FAST_TRAINING_NOT_CAPABLE_0', - 'DPHY_LOAD_BS_COUNT_NOT_STARTED', 'DPHY_LOAD_BS_COUNT_START', - 'DPHY_LOAD_BS_COUNT_STARTED', 'DPHY_NO_SKEW', - 'DPHY_PRBS11_SELECTED', 'DPHY_PRBS23_SELECTED', - 'DPHY_PRBS7_SELECTED', 'DPHY_PRBS_DISABLE', 'DPHY_PRBS_EN', - 'DPHY_PRBS_ENABLE', 'DPHY_PRBS_SEL', - 'DPHY_RX_FAST_TRAINING_CAPABLE', 'DPHY_SCRAMBLER_ADVANCE', - 'DPHY_SCRAMBLER_ADVANCE_ON_BOTH_DATA_AND_CTRL', - 'DPHY_SCRAMBLER_DIS', 'DPHY_SCRAMBLER_KCODE', - 'DPHY_SCRAMBLER_KCODE_DISABLED', 'DPHY_SCRAMBLER_KCODE_ENABLED', - 'DPHY_SCRAMBLER_SEL', 'DPHY_SCRAMBLER_SEL_DBG_DATA', - 'DPHY_SCRAMBLER_SEL_LANE_DATA', 'DPHY_SCR_DISABLED', - 'DPHY_SCR_ENABLED', 'DPHY_SKEW_BYPASS', - 'DPHY_SW_FAST_TRAINING_NOT_STARTED', - 'DPHY_SW_FAST_TRAINING_START', 'DPHY_SW_FAST_TRAINING_STARTED', - 'DPHY_TRAINING_PATTERN_1', 'DPHY_TRAINING_PATTERN_2', - 'DPHY_TRAINING_PATTERN_3', 'DPHY_TRAINING_PATTERN_4', - 'DPHY_TRAINING_PATTERN_SEL', 'DPHY_WITH_SKEW', 'DPREFCLK_SRC_SEL', - 'DPREFCLK_SRC_SEL_CK', 'DPREFCLK_SRC_SEL_P0PLL', - 'DPREFCLK_SRC_SEL_P1PLL', 'DPREFCLK_SRC_SEL_P2PLL', - 'DPREFCLK_SRC_SEL_P3PLL', 'DPRX_SD_COMPONENT_DEPTH', - 'DPRX_SD_PIXEL_ENCODING', 'DP_AUX_ARB_CONTROL_ARB_PRIORITY', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__GTC_LS_SW', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__LS_GTC_SW', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_GTC_LS', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_LS_GTC', - 'DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG', - 'DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ', - 'DP_AUX_ARB_CONTROL__DONE_NOT_USING_AUX_REG', - 'DP_AUX_ARB_CONTROL__DONE_USING_AUX_REG', - 'DP_AUX_ARB_CONTROL__NOT_USE_AUX_REG_REQ', - 'DP_AUX_ARB_CONTROL__USE_AUX_REG_REQ', - 'DP_AUX_CONTROL_HPD1_SELECTED', 'DP_AUX_CONTROL_HPD2_SELECTED', - 'DP_AUX_CONTROL_HPD3_SELECTED', 'DP_AUX_CONTROL_HPD4_SELECTED', - 'DP_AUX_CONTROL_HPD5_SELECTED', 'DP_AUX_CONTROL_HPD6_SELECTED', - 'DP_AUX_CONTROL_HPD_SEL', 'DP_AUX_CONTROL_TEST_MODE', - 'DP_AUX_CONTROL_TEST_MODE_DISABLE', - 'DP_AUX_CONTROL_TEST_MODE_ENABLE', - 'DP_AUX_DEFINITE_ERR_REACHED_ACK', - 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START', - 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__10_EDGES', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__18_EDGES', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__6_EDGES', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__RESERVED', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__2_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__4_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__6_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__8_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO128_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO16_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO256_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO2_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO32_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO4_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO64_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO8_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO128_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO16_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO256_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO2_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO32_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO4_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO64_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO8_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN', - 'DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_450US', - 'DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_500US', - 'DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_550US', - 'DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_600US', - 'DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_650US', - 'DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_700US', - 'DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_750US', - 'DP_AUX_DPHY_RX_CONTROL_TIMEOUT_LEN_800US', - 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_START', - 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_STOP', - 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_START', - 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_STOP', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__127to128', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__15to16', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__1to2', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__255to256', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__31to32', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__3to4', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__63to64', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__7to8', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__0', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__128US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__16US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__256US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__32US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__64US', - 'DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN', - 'DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__0US', - 'DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__16US', - 'DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__24US', - 'DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__32US', - 'DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__40US', - 'DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__48US', - 'DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__56US', - 'DP_AUX_DPHY_TX_CONTROL_PRECHARGE_LEN__8US', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__1MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__2MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__4MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__8MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__DIVIDED_SYM_CLK', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__FROM_DCCG_MICROSECOND_REF', - 'DP_AUX_ERR_OCCURRED_ACK', 'DP_AUX_ERR_OCCURRED__ACK', - 'DP_AUX_ERR_OCCURRED__NOT_ACK', - 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_ALLOW_REQ_FROM_OTHER_AUX', - 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ', - 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ_FROM_OTHER_AUX', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__300US', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__400US', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__500US', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__600US', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__16_ATTAMPS', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__4_ATTAMPS', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__8_ATTAMPS', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__RESERVED', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__0', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__128', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__256', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__64', - 'DP_AUX_INT_ACK', 'DP_AUX_INT_LS_UPDATE_ACK', - 'DP_AUX_INT_LS_UPDATE_NOT_ACK', 'DP_AUX_INT__ACK', - 'DP_AUX_INT__NOT_ACK', 'DP_AUX_LS_UPDATE_ACK', - 'DP_AUX_POTENTIAL_ERR_REACHED_ACK', - 'DP_AUX_POTENTIAL_ERR_REACHED__ACK', - 'DP_AUX_POTENTIAL_ERR_REACHED__NOT_ACK', 'DP_AUX_RESET', - 'DP_AUX_RESET_ASSERTED', 'DP_AUX_RESET_DEASSERTED', - 'DP_AUX_RESET_DONE', 'DP_AUX_RESET_SEQUENCE_DONE', - 'DP_AUX_RESET_SEQUENCE_NOT_DONE', - 'DP_AUX_SW_CONTROL_LS_READ_TRIG', - 'DP_AUX_SW_CONTROL_LS_READ__NOT_TRIG', - 'DP_AUX_SW_CONTROL_LS_READ__TRIG', 'DP_AUX_SW_CONTROL_SW_GO', - 'DP_AUX_SW_CONTROL_SW__GO', 'DP_AUX_SW_CONTROL_SW__NOT_GO', - 'DP_COMPONENT_DEPTH', 'DP_COMPONENT_DEPTH_10BPC', - 'DP_COMPONENT_DEPTH_12BPC', 'DP_COMPONENT_DEPTH_16BPC_RESERVED', - 'DP_COMPONENT_DEPTH_6BPC', 'DP_COMPONENT_DEPTH_8BPC', - 'DP_COMPONENT_DEPTH_RESERVED', 'DP_DPHY_8B10B_EXT_DISP', - 'DP_DPHY_8B10B_EXT_DISP_ONE', 'DP_DPHY_8B10B_EXT_DISP_ZERO', - 'DP_DPHY_FAST_TRAINING_COMPLETE_ACK', - 'DP_DPHY_FAST_TRAINING_COMPLETE_ACKED', - 'DP_DPHY_FAST_TRAINING_COMPLETE_MASK', - 'DP_DPHY_FAST_TRAINING_COMPLETE_MASKED', - 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_ACKED', - 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_MASKED', - 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_DISABLED', - 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN', - 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_ENABLED', - 'DP_DPHY_HBR2_PASS_THROUGH', 'DP_DPHY_HBR2_PATTERN_1', - 'DP_DPHY_HBR2_PATTERN_2_NEG', 'DP_DPHY_HBR2_PATTERN_2_POS', - 'DP_DPHY_HBR2_PATTERN_3', 'DP_DPHY_HBR2_PATTERN_CONTROL_MODE', - 'DP_DTO_DESPREAD_DISABLE', 'DP_DTO_DESPREAD_ENABLE', - 'DP_DTO_DS_DISABLE', 'DP_DYN_CEA_RANGE', 'DP_DYN_RANGE', - 'DP_DYN_VESA_RANGE', 'DP_EMBEDDED_PANEL', - 'DP_EMBEDDED_PANEL_MODE', 'DP_EXTERNAL_PANEL', - 'DP_LINK_TRAINING_ALREADY_COMPLETE', 'DP_LINK_TRAINING_COMPLETE', - 'DP_LINK_TRAINING_NOT_COMPLETE', 'DP_MSA_MISC0_OVERRIDE_ENABLE', - 'DP_MSA_MISC1_BIT7_OVERRIDE_ENABLE', - 'DP_MSA_V_TIMING_OVERRIDE_EN', 'DP_MSE_BLANK_CODE', - 'DP_MSE_BLANK_CODE_SF_FILLED', 'DP_MSE_BLANK_CODE_ZERO_FILLED', - 'DP_MSE_LINK_LINE', 'DP_MSE_LINK_LINE_128_MTP_LONG', - 'DP_MSE_LINK_LINE_256_MTP_LONG', 'DP_MSE_LINK_LINE_32_MTP_LONG', - 'DP_MSE_LINK_LINE_64_MTP_LONG', 'DP_MSE_NOT_ZERO_FE_ENCODER', - 'DP_MSE_OUTPUT_DPDBG_DATA', 'DP_MSE_OUTPUT_DPDBG_DATA_DIS', - 'DP_MSE_OUTPUT_DPDBG_DATA_EN', 'DP_MSE_SAT_UPDATE_ACT', - 'DP_MSE_SAT_UPDATE_NO_ACTION', - 'DP_MSE_SAT_UPDATE_WITHOUT_TRIGGER', - 'DP_MSE_SAT_UPDATE_WITH_TRIGGER', - 'DP_MSE_TIMESTAMP_CALC_BASED_ON_LINK_RATE', - 'DP_MSE_TIMESTAMP_CALC_BASED_ON_VC_RATE', 'DP_MSE_TIMESTAMP_MODE', - 'DP_MSE_ZERO_ENCODER', 'DP_MSE_ZERO_FE_ENCODER', - 'DP_PIXEL_ENCODING', 'DP_PIXEL_ENCODING_RESERVED', - 'DP_PIXEL_ENCODING_RGB444', 'DP_PIXEL_ENCODING_RGB_WIDE_GAMUT', - 'DP_PIXEL_ENCODING_YCBCR420', 'DP_PIXEL_ENCODING_YCBCR422', - 'DP_PIXEL_ENCODING_YCBCR444', 'DP_PIXEL_ENCODING_Y_ONLY', - 'DP_SEC_ASP_CHANNEL_COUNT_FROM_AZ', - 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE', - 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED', - 'DP_SEC_ASP_HIGH_PRIORITY', 'DP_SEC_ASP_LOW_PRIORITY', - 'DP_SEC_ASP_PRIORITY', 'DP_SEC_AUDIO_MUTE', - 'DP_SEC_AUDIO_MUTE_HW_CTRL', 'DP_SEC_AUDIO_MUTE_SW_CTRL', - 'DP_SEC_COLLISION_ACK', 'DP_SEC_COLLISION_ACK_CLR_FLAG', - 'DP_SEC_COLLISION_ACK_NO_EFFECT', 'DP_SEC_GSP0_PRIORITY', - 'DP_SEC_GSP0_SEND', 'DP_SEC_TIMESTAMP_AUTO_CALC_MODE', - 'DP_SEC_TIMESTAMP_MODE', 'DP_SEC_TIMESTAMP_PROGRAMMABLE_MODE', - 'DP_STEER_OVERFLOW_ACK', 'DP_STEER_OVERFLOW_ACK_CLR_INTERRUPT', - 'DP_STEER_OVERFLOW_ACK_NO_EFFECT', 'DP_STEER_OVERFLOW_MASK', - 'DP_STEER_OVERFLOW_MASKED', 'DP_STEER_OVERFLOW_UNMASK', - 'DP_TOP_FIELD_ONLY', 'DP_TOP_PLUS_BOTTOM_FIELD', - 'DP_TU_OVERFLOW_ACK', 'DP_TU_OVERFLOW_ACK_CLR_INTERRUPT', - 'DP_TU_OVERFLOW_ACK_NO_EFFECT', 'DP_UDI_1_LANE', 'DP_UDI_2_LANES', - 'DP_UDI_4_LANES', 'DP_UDI_LANES', 'DP_UDI_LANES_RESERVED', - 'DP_VID_ENHANCED_FRAME_MODE', 'DP_VID_MSA_TOP_FIELD_MODE', - 'DP_VID_M_DOUBLE_INPUT_PIXEL_RATE', 'DP_VID_M_DOUBLE_VALUE_EN', - 'DP_VID_M_INPUT_PIXEL_RATE', 'DP_VID_M_N_CALC_AUTO', - 'DP_VID_M_N_DOUBLE_BUFFER_AFTER_VID_M_UPDATE', - 'DP_VID_M_N_DOUBLE_BUFFER_AT_FRAME_START', - 'DP_VID_M_N_DOUBLE_BUFFER_MODE', 'DP_VID_M_N_GEN_EN', - 'DP_VID_M_N_PROGRAMMED_VIA_REG', 'DP_VID_STREAM_DISABLE_ACK', - 'DP_VID_STREAM_DISABLE_MASK', 'DP_VID_STREAM_DIS_DEFER', - 'DP_VID_STREAM_DIS_DEFER_TO_HBLANK', - 'DP_VID_STREAM_DIS_DEFER_TO_VBLANK', 'DP_VID_STREAM_DIS_NO_DEFER', - 'DP_VID_TIMING_MODE', 'DP_VID_TIMING_MODE_ASYNC', - 'DP_VID_TIMING_MODE_SYNC', 'DP_VID_VBID_FIELD_POL', - 'DP_VID_VBID_FIELD_POL_INV', 'DP_VID_VBID_FIELD_POL_NORMAL', - 'DP_YCBCR_RANGE', 'DP_YCBCR_RANGE_BT601_5', - 'DP_YCBCR_RANGE_BT709_5', 'DSI_BIT_SWAP', 'DSI_BIT_SWAP_DISABLE', - 'DSI_BIT_SWAP_ENABLE', 'DSI_CLK_GATING', 'DSI_CLK_GATING_DISABLE', - 'DSI_CLK_GATING_ENABLE', 'DSI_CLOCK_LANE_DISABLE', - 'DSI_CLOCK_LANE_EN', 'DSI_CLOCK_LANE_ENABLE', - 'DSI_CLOCK_LANE_HS_FORCE_REQUEST', - 'DSI_CLOCK_LANE_HS_FORCE_REQUEST_ASSERT', - 'DSI_CLOCK_LANE_HS_FORCE_REQUEST_DEASSERT', - 'DSI_CMD_EMBEDDED_MODE', 'DSI_CMD_MODE_DISABLE', - 'DSI_CMD_MODE_EN', 'DSI_CMD_MODE_ENABLE', 'DSI_CMD_ORDER', - 'DSI_CMD_ORDER_COMMAND_FIRST', 'DSI_CMD_ORDER_DATA_FIRST', - 'DSI_CMD_PACKET_TYPE', 'DSI_CMD_PACKET_TYPE_LONG', - 'DSI_CMD_PACKET_TYPE_SHORT', 'DSI_CMD_PWR_MODE', - 'DSI_CMD_PWR_MODE_HS', 'DSI_CMD_PWR_MODE_LP', - 'DSI_CMD_USE_CMDFIFO', 'DSI_CMD_USE_DMAFIFO', - 'DSI_COMMAND_DST_FORMAT_RGB111', 'DSI_COMMAND_DST_FORMAT_RGB332', - 'DSI_COMMAND_DST_FORMAT_RGB444', 'DSI_COMMAND_DST_FORMAT_RGB565', - 'DSI_COMMAND_DST_FORMAT_RGB666', 'DSI_COMMAND_DST_FORMAT_RGB888', - 'DSI_COMMAND_MODE_DST_FORMAT', 'DSI_COMMAND_MODE_SRC_FORMAT', - 'DSI_COMMAND_SRC_FORMAT_RGB332', 'DSI_COMMAND_SRC_FORMAT_RGB444', - 'DSI_COMMAND_SRC_FORMAT_RGB555', 'DSI_COMMAND_SRC_FORMAT_RGB565', - 'DSI_COMMAND_SRC_FORMAT_RGB888', 'DSI_COMMAND_SRC_FORMAT_RGB8BIT', - 'DSI_COMMAND_TRIGGER_MODE', 'DSI_COMMAND_TRIGGER_MODE_AUTO', - 'DSI_COMMAND_TRIGGER_MODE_MANUAL', 'DSI_COMMAND_TRIGGER_ORDER', - 'DSI_COMMAND_TRIGGER_ORDER_DENG', 'DSI_COMMAND_TRIGGER_ORDER_DMA', - 'DSI_COMMAND_TRIGGER_SEL', 'DSI_COMMAND_TRIGGER_SEL_CRTC', - 'DSI_COMMAND_TRIGGER_SEL_HW', 'DSI_COMMAND_TRIGGER_SEL_NONE', - 'DSI_COMMAND_TRIGGER_SEL_TE', 'DSI_CONTROLLER_DISABLE', - 'DSI_CONTROLLER_EN', 'DSI_CONTROLLER_ENABLE', - 'DSI_CRC_CAL_DISABLE', 'DSI_CRC_CAL_ENABLE', 'DSI_CRC_ENABLE', - 'DSI_CRTC_FREEZE_TRIG', 'DSI_CRTC_FREEZE_TRIG_ASSERT', - 'DSI_CRTC_FREEZE_TRIG_DEASSERT', 'DSI_CRTC_SEL', - 'DSI_DATA_BUFFER_ID', 'DSI_DATA_BUFFER_OFFSET0', - 'DSI_DATA_BUFFER_OFFSET1', 'DSI_DATA_LANE0_DISABLE', - 'DSI_DATA_LANE0_EN', 'DSI_DATA_LANE0_ENABLE', - 'DSI_DATA_LANE1_DISABLE', 'DSI_DATA_LANE1_EN', - 'DSI_DATA_LANE1_ENABLE', 'DSI_DATA_LANE2_DISABLE', - 'DSI_DATA_LANE2_EN', 'DSI_DATA_LANE2_ENABLE', - 'DSI_DATA_LANE3_DISABLE', 'DSI_DATA_LANE3_EN', - 'DSI_DATA_LANE3_ENABLE', 'DSI_DBG_CLK_SEL', - 'DSI_DEBUG_BYTECLK_SEL', 'DSI_DEBUG_BYTECLK_SEL_AFIFO', - 'DSI_DEBUG_BYTECLK_SEL_EOT', 'DSI_DEBUG_BYTECLK_SEL_LANEBUF0', - 'DSI_DEBUG_BYTECLK_SEL_LANEBUF1', - 'DSI_DEBUG_BYTECLK_SEL_LANEBUF2', - 'DSI_DEBUG_BYTECLK_SEL_LANEBUF3', - 'DSI_DEBUG_BYTECLK_SEL_LANECTRL', - 'DSI_DEBUG_BYTECLK_SEL_LANEFIFO0', - 'DSI_DEBUG_BYTECLK_SEL_LANEFIFO1', - 'DSI_DEBUG_BYTECLK_SEL_LANEFIFO2', - 'DSI_DEBUG_BYTECLK_SEL_LANEFIFO3', - 'DSI_DEBUG_BYTECLK_SEL_PINGPING2', - 'DSI_DEBUG_BYTECLK_SEL_PINGPING3', - 'DSI_DEBUG_BYTECLK_SEL_PINGPONG0', - 'DSI_DEBUG_BYTECLK_SEL_PINGPONG1', 'DSI_DEBUG_DSICLK_SEL', - 'DSI_DEBUG_DSICLK_SEL_AFIFO', 'DSI_DEBUG_DSICLK_SEL_CMDBUFFER', - 'DSI_DEBUG_DSICLK_SEL_CMDFIFO', 'DSI_DEBUG_DSICLK_SEL_CMD_ENGINE', - 'DSI_DEBUG_DSICLK_SEL_LANECTRL', - 'DSI_DEBUG_DSICLK_SEL_RESYNC_FIFO', - 'DSI_DEBUG_DSICLK_SEL_VIDEO_ENGINE', - 'DSI_DENG_FIFO_FORCE_RECAL_AVERAGE', - 'DSI_DENG_FIFO_FORCE_RECAL_AVERAGE_ASSERT', - 'DSI_DENG_FIFO_FORCE_RECAL_AVERAGE_DEASSERT', - 'DSI_DENG_FIFO_FORCE_RECOMP_MINMAX', - 'DSI_DENG_FIFO_FORCE_RECOMP_MINMAX_ASSERT', - 'DSI_DENG_FIFO_FORCE_RECOMP_MINMAX_DEASSERT', - 'DSI_DENG_FIFO_LEVEL_CAL_AVERAGE', - 'DSI_DENG_FIFO_LEVEL_OVERWRITE', 'DSI_DENG_FIFO_START', - 'DSI_DENG_FIFO_START_ASSERT', 'DSI_DENG_FIFO_START_DEASSERT', - 'DSI_DENG_FIFO_USE_OVERWRITE_LEVEL', 'DSI_DMAFIFO_READ_WATERMARK', - 'DSI_DMAFIFO_READ_WATERMARK_EIGHTH', - 'DSI_DMAFIFO_READ_WATERMARK_FOURTH', - 'DSI_DMAFIFO_READ_WATERMARK_HALF', - 'DSI_DMAFIFO_READ_WATERMARK_SIXTEENTH', - 'DSI_DMAFIFO_WRITE_WATERMARK', - 'DSI_DMAFIFO_WRITE_WATERMARK_EIGHTH', - 'DSI_DMAFIFO_WRITE_WATERMARK_FOURTH', - 'DSI_DMAFIFO_WRITE_WATERMARK_HALF', - 'DSI_DMAFIFO_WRITE_WATERMARK_SIXTEENTH', 'DSI_DWORD_BYTE_SWAP', - 'DSI_EXT_RESET_POL', 'DSI_EXT_RESET_POL_HIGH', - 'DSI_EXT_RESET_POL_LOW', 'DSI_EXT_TE_MODE', - 'DSI_EXT_TE_MODE_HVSYNC_EDGE', 'DSI_EXT_TE_MODE_HVSYNC_WIDTH', - 'DSI_EXT_TE_MODE_VSYNC_EDGE', 'DSI_EXT_TE_MODE_VSYNC_WIDTH', - 'DSI_EXT_TE_MUX', 'DSI_EXT_TE_POL', 'DSI_EXT_TE_POL_FALLING', - 'DSI_EXT_TE_POL_RISING', 'DSI_FLAG_CLEAR', 'DSI_FLAG_CLR', - 'DSI_FLAG_NO_CLEAR', 'DSI_GET_PIXEL_STREAM_FROM_FMT0', - 'DSI_GET_PIXEL_STREAM_FROM_FMT1', - 'DSI_GET_PIXEL_STREAM_FROM_FMT2', - 'DSI_GET_PIXEL_STREAM_FROM_FMT3', - 'DSI_GET_PIXEL_STREAM_FROM_FMT4', - 'DSI_GET_PIXEL_STREAM_FROM_FMT5', 'DSI_HW_SOURCE_SEL', - 'DSI_INSERT_DCS_COMMAND', 'DSI_INSERT_DCS_COMMAND_DISABLE', - 'DSI_INSERT_DCS_COMMAND_ENABLE', 'DSI_LANE_FORCE_TX_STOP', - 'DSI_LANE_FORCE_TX_STOP_ASSERT', - 'DSI_LANE_FORCE_TX_STOP_DEASSERT', 'DSI_LANE_ULPS_EXIT', - 'DSI_LANE_ULPS_EXIT_ASSERT', 'DSI_LANE_ULPS_EXIT_DEASSERT', - 'DSI_LANE_ULPS_REQUEST', 'DSI_LANE_ULPS_REQUEST_ASSERT', - 'DSI_LANE_ULPS_REQUEST_DEASSERT', 'DSI_MIPI_BIST_RESET', - 'DSI_MIPI_BIST_RESET_ASSERT', 'DSI_MIPI_BIST_RESET_DEASSERT', - 'DSI_MIPI_BIST_START', 'DSI_MIPI_BIST_START_ASSERT', - 'DSI_MIPI_BIST_START_DEASSERT', 'DSI_MIPI_BIST_VIDEO_FRMT', - 'DSI_MIPI_BIST_VIDEO_FRMT_RAW8', - 'DSI_MIPI_BIST_VIDEO_FRMT_YUV422', - 'DSI_NO_RESET_ON_BYTECLK_DOMAIN_LOGIC', - 'DSI_NO_RESET_ON_DISPCLK_DOMAIN_LOGIC', - 'DSI_NO_RESET_ON_DSICLK_DOMAIN_LOGIC', - 'DSI_NO_RESET_ON_ESCCLK_DOMAIN_LOGIC', - 'DSI_PACKET_BYTE_MSB_LSB_FLIP', - 'DSI_PACKET_BYTE_MSB_LSB_FLIP_NO_SWAP', - 'DSI_PACKET_BYTE_MSB_LSB_FLIP_SWAP', 'DSI_PERF_LATENCY_SEL', - 'DSI_PERF_LATENCY_SEL_DATA_LANE0', - 'DSI_PERF_LATENCY_SEL_DATA_LANE1', - 'DSI_PERF_LATENCY_SEL_DATA_LANE2', - 'DSI_PERF_LATENCY_SEL_DATA_LANE3', 'DSI_PHY_DATA_LANE0_DISABLE', - 'DSI_PHY_DATA_LANE0_EN', 'DSI_PHY_DATA_LANE0_ENABLE', - 'DSI_PHY_DATA_LANE1_DISABLE', 'DSI_PHY_DATA_LANE1_EN', - 'DSI_PHY_DATA_LANE1_ENABLE', 'DSI_PHY_DATA_LANE2_DISABLE', - 'DSI_PHY_DATA_LANE2_EN', 'DSI_PHY_DATA_LANE2_ENABLE', - 'DSI_PHY_DATA_LANE3_DISABLE', 'DSI_PHY_DATA_LANE3_EN', - 'DSI_PHY_DATA_LANE3_ENABLE', 'DSI_RESET_BYTECLK', - 'DSI_RESET_DISPCLK', 'DSI_RESET_DSICLK', 'DSI_RESET_ESCCLK', - 'DSI_RESET_ON_BYTECLK_DOMAIN_LOGIC', - 'DSI_RESET_ON_DISPCLK_DOMAIN_LOGIC', - 'DSI_RESET_ON_DSICLK_DOMAIN_LOGIC', - 'DSI_RESET_ON_ESCCLK_DOMAIN_LOGIC', 'DSI_RESET_PANEL', - 'DSI_RESET_PANEL_ASSERT', 'DSI_RESET_PANEL_DEASSERT', - 'DSI_RGB_SWAP', 'DSI_RX_EOT_IGNORE', 'DSI_RX_EOT_IGNORE_DISABLE', - 'DSI_RX_EOT_IGNORE_ENABLE', 'DSI_SWAP_BGR', 'DSI_SWAP_BRG', - 'DSI_SWAP_GBR', 'DSI_SWAP_GRB', 'DSI_SWAP_RBG', 'DSI_SWAP_RGB', - 'DSI_TEST_CLK_SEL_BYTECLK_G', 'DSI_TEST_CLK_SEL_DISPCLK_G', - 'DSI_TEST_CLK_SEL_DISPCLK_P', 'DSI_TEST_CLK_SEL_DISPCLK_R', - 'DSI_TEST_CLK_SEL_DSICLK_G', 'DSI_TEST_CLK_SEL_DSICLK_P', - 'DSI_TEST_CLK_SEL_DSICLK_R', 'DSI_TEST_CLK_SEL_DSICLK_TRN', - 'DSI_TEST_CLK_SEL_ESCCLK_G', 'DSI_TE_SEL_LINK', 'DSI_TE_SEL_PIN', - 'DSI_TE_SRC_SEL', 'DSI_TRAFFIC_MODE_BURST', - 'DSI_TRAFFIC_MODE_RESERVED', 'DSI_TRAFFIC_MODE_SYNC_EVENTS', - 'DSI_TRAFFIC_MODE_SYNC_PULSES', 'DSI_TX_EOT_APPEND', - 'DSI_TX_EOT_APPEND_DISABLE', 'DSI_TX_EOT_APPEND_ENABLE', - 'DSI_USE_CMDFIFO', 'DSI_USE_DENG_LENGTH', - 'DSI_USE_DENG_LENGTH_DISABLE', 'DSI_USE_DENG_LENGTH_ENABLE', - 'DSI_VIDEO_BLLP_PWR_MODE', 'DSI_VIDEO_BLLP_PWR_MODE_HS', - 'DSI_VIDEO_BLLP_PWR_MODE_LP', 'DSI_VIDEO_DST_FORMAT_RGB565', - 'DSI_VIDEO_DST_FORMAT_RGB666_LOOSELY_PACKED', - 'DSI_VIDEO_DST_FORMAT_RGB666_PACKED', - 'DSI_VIDEO_DST_FORMAT_RGB888', 'DSI_VIDEO_EOF_BLLP_PWR_MODE', - 'DSI_VIDEO_EOF_BLLP_PWR_MODE_HS', - 'DSI_VIDEO_EOF_BLLP_PWR_MODE_LP', 'DSI_VIDEO_MODE_DISABLE', - 'DSI_VIDEO_MODE_DST_FORMAT', 'DSI_VIDEO_MODE_EN', - 'DSI_VIDEO_MODE_ENABLE', 'DSI_VIDEO_PULSE_MODE_OPT', - 'DSI_VIDEO_PWR_MODE', 'DSI_VIDEO_PWR_MODE_HS', - 'DSI_VIDEO_PWR_MODE_LP', 'DSI_VIDEO_TRAFFIC_MODE', - 'DSI_XT_TE_MUX_DCLK', 'DSI_XT_TE_MUX_DINV', 'DSI_XT_TE_MUX_FRAME', - 'DSI_XT_TE_MUX_GCLK', 'DSI_XT_TE_MUX_GOE', 'DSI_XT_TE_MUX_GPIO4', - 'DSI_XT_TE_MUX_GPIO5', 'DSI_XT_TE_MUX_LCDD17', 'DSI_XT_TE_MUX_SS', - 'DSM_ENABLE_ERROR_INJECT', 'DSM_ENABLE_ERROR_INJECT_DOUBLE', - 'DSM_ENABLE_ERROR_INJECT_DOUBLE_LIMITED', - 'DSM_ENABLE_ERROR_INJECT_FED_IN', - 'DSM_ENABLE_ERROR_INJECT_SINGLE', 'DSM_SELECT_INJECT_DELAY', - 'DSM_SELECT_INJECT_DELAY_DELAY_ERROR', - 'DSM_SELECT_INJECT_DELAY_NO_DELAY', 'DS_REF_IS_EXT_GENLOCK', - 'DS_REF_IS_PCIE', 'DS_REF_IS_XTALIN', 'DS_REF_SRC', - 'DVOACLKC_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', 'DVOACLKC_IN_PHASE', - 'DVOACLKC_IN_PHASE_WITH_PCLK_DVO', - 'DVOACLKC_MVP_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', - 'DVOACLKC_MVP_IN_PHASE', 'DVOACLKC_MVP_IN_PHASE_WITH_PCLK_DVO', - 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE', - 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_DISABLE', - 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_ENABLE', - 'DVOACLKD_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', 'DVOACLKD_IN_PHASE', - 'DVOACLKD_IN_PHASE_WITH_PCLK_DVO', 'DVOACLK_COARSE_SKEW_CNTL', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_10_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_11_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_12_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_13_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_14_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_15_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_1_STEP', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_2_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_3_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_4_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_5_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_6_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_7_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_8_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_9_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_10_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_11_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_12_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_13_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_14_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_15_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_1_STEP', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_2_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_3_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_4_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_5_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_6_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_7_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_8_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_9_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_NO_ADJUSTMENT', - 'DVOACLK_FINE_SKEW_CNTL', 'DVOACLK_FINE_SKEW_CNTL_DELAY_1_STEP', - 'DVOACLK_FINE_SKEW_CNTL_DELAY_2_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_DELAY_3_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_EARLY_1_STEP', - 'DVOACLK_FINE_SKEW_CNTL_EARLY_2_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_EARLY_3_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_EARLY_4_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_NO_ADJUSTMENT', 'DVO_ENABLE_RST', - 'DVO_ENABLE_RST_DISABLE', 'DVO_ENABLE_RST_ENABLE', - 'DVO_SOFT_RESET', 'DVO_SOFT_RESET_0', 'DVO_SOFT_RESET_1', - 'DWORD_BYTE_SWAP_BOTH_SWAP', 'DWORD_BYTE_SWAP_BYTE_SWAP', - 'DWORD_BYTE_SWAP_NO_SWAP', 'DWORD_BYTE_SWAP_WORD_SWAP', - 'DYNAMIC_DEEP_SLEEP_EN', 'DYNAMIC_DEEP_SLEEP_ENABLE', - 'DYNAMIC_LIGHT_SLEEP_EN', 'DYNAMIC_LIGHT_SLEEP_ENABLE', - 'DYNAMIC_PIXEL_DEPTH_30BPP', 'DYNAMIC_PIXEL_DEPTH_36BPP', - 'DYNAMIC_SHUT_DOWN_ENABLE', 'DbMemArbWatermarks', - 'DbPRTFaultBehavior', 'DbPSLControl', 'DepthArray', 'DepthFormat', - 'EARLY_Z_THEN_LATE_Z', 'EARLY_Z_THEN_RE_Z', 'ENABLE', - 'ENABLE_CLOCK', 'ENABLE_JITTER_REMOVAL', 'ENABLE_LEGACY_PIPELINE', - 'ENABLE_MEM_PWR_CTRL', 'ENABLE_NGG_PIPELINE', 'ENABLE_THE_CLOCK', - 'ENABLE_THE_FEATURE', 'ENDIAN_8IN16', 'ENDIAN_8IN32', - 'ENDIAN_8IN64', 'ENDIAN_NONE', 'END_OF_PIPE_IB_END', - 'END_OF_PIPE_INCR_DE', 'ENUMS_GDS_PERFCOUNT_SELECT_H', - 'ENUM_NUM_SIMD_PER_CU', 'ENUM_SQ_EXPORT_RAT_INST', - 'ENUM_XDMA_LOCAL_SW_MODE', 'ENUM_XDMA_MSTR_ALPHA_POSITION', - 'ENUM_XDMA_MSTR_VSYNC_GSL_CHECK_SEL', - 'ENUM_XDMA_SLV_ALPHA_POSITION', 'ES_STAGE_DS', 'ES_STAGE_OFF', - 'ES_STAGE_REAL', 'EXPORT_16_16_FLOAT_8PIX', - 'EXPORT_16_16_SIGNED_8PIX', 'EXPORT_16_16_UNSIGNED_8PIX', - 'EXPORT_2C_32BPC_AR', 'EXPORT_2C_32BPC_GR', - 'EXPORT_2P_32BPC_ABGR', 'EXPORT_32BPP_8PIX', 'EXPORT_32_ABGR', - 'EXPORT_32_AR', 'EXPORT_32_GR', 'EXPORT_32_R', 'EXPORT_4C_16BPC', - 'EXPORT_4C_32BPC', 'EXPORT_4P_16BPC_ABGR', 'EXPORT_4P_32BPC_ABGR', - 'EXPORT_4P_32BPC_AR', 'EXPORT_4P_32BPC_GR', 'EXPORT_8P_32BPC_R', - 'EXPORT_ANY_Z', 'EXPORT_FP16_ABGR', 'EXPORT_GREATER_THAN_Z', - 'EXPORT_LESS_THAN_Z', 'EXPORT_RESERVED', 'EXPORT_SIGNED16_ABGR', - 'EXPORT_UNSIGNED16_ABGR', 'EXPORT_UNUSED', 'FAULT_FAIL', - 'FAULT_ONE', 'FAULT_PASS', 'FAULT_ZERO', - 'FBC_IDLE_MASK_DISP_REG_UPDATE', - 'FBC_IDLE_MASK_FBC_ALPHA_COMP_EN', - 'FBC_IDLE_MASK_FBC_FORCE_COPY_TO_COMP_BUF', - 'FBC_IDLE_MASK_FBC_GRPH_COMP_EN', - 'FBC_IDLE_MASK_FBC_MIN_COMPRESSION', - 'FBC_IDLE_MASK_FBC_ZERO_ALPHA_CHUNK_SKIP_EN', - 'FBC_IDLE_MASK_MASK_BITS', 'FBC_IDLE_MASK_MC_HIT_REGION_0', - 'FBC_IDLE_MASK_MC_HIT_REGION_1', 'FBC_IDLE_MASK_MC_HIT_REGION_2', - 'FBC_IDLE_MASK_MC_HIT_REGION_3', 'FBC_IDLE_MASK_MC_WRITE', - 'FBC_IDLE_MASK_RESERVED1', 'FBC_IDLE_MASK_RESERVED10', - 'FBC_IDLE_MASK_RESERVED11', 'FBC_IDLE_MASK_RESERVED12', - 'FBC_IDLE_MASK_RESERVED13', 'FBC_IDLE_MASK_RESERVED14', - 'FBC_IDLE_MASK_RESERVED15', 'FBC_IDLE_MASK_RESERVED16', - 'FBC_IDLE_MASK_RESERVED17', 'FBC_IDLE_MASK_RESERVED18', - 'FBC_IDLE_MASK_RESERVED19', 'FBC_IDLE_MASK_RESERVED20', - 'FBC_IDLE_MASK_RESERVED21', 'FBC_IDLE_MASK_RESERVED22', - 'FBC_IDLE_MASK_RESERVED23', 'FBC_IDLE_MASK_RESERVED29', - 'FBC_IDLE_MASK_RESERVED30', 'FBC_IDLE_MASK_RESERVED31', - 'FBC_IDLE_MASK_RESERVED7', 'FBC_IDLE_MASK_RESERVED8', - 'FBC_IDLE_MASK_RESERVED9', 'FLUSH_AND_INV_CB_DATA_TS', - 'FLUSH_AND_INV_CB_META', 'FLUSH_AND_INV_CB_PIXEL_DATA', - 'FLUSH_AND_INV_DB_DATA_TS', 'FLUSH_AND_INV_DB_META', - 'FLUSH_CONTROL_FLUSH_NOT_STARTED', 'FLUSH_CONTROL_FLUSH_STARTED', - 'FLUSH_DFSM', 'FLUSH_HS_OUTPUT', 'FLUSH_SX_TS', 'FMT0_SOFT_RESET', - 'FMT0_SOFT_RESET_0', 'FMT0_SOFT_RESET_1', 'FMT1_SOFT_RESET', - 'FMT1_SOFT_RESET_0', 'FMT1_SOFT_RESET_1', 'FMT2_SOFT_RESET', - 'FMT2_SOFT_RESET_0', 'FMT2_SOFT_RESET_1', 'FMT3_SOFT_RESET', - 'FMT3_SOFT_RESET_0', 'FMT3_SOFT_RESET_1', - 'FMT420_MEMORY_SOURCE_SEL', 'FMT420_MEMORY_SOURCE_SEL_FMT0', - 'FMT420_MEMORY_SOURCE_SEL_FMT1', 'FMT420_MEMORY_SOURCE_SEL_FMT2', - 'FMT420_MEMORY_SOURCE_SEL_FMT3', 'FMT420_MEMORY_SOURCE_SEL_FMT4', - 'FMT420_MEMORY_SOURCE_SEL_FMT5', - 'FMT420_MEMORY_SOURCE_SEL_FMT_RESERVED', 'FMT4_SOFT_RESET', - 'FMT4_SOFT_RESET_0', 'FMT4_SOFT_RESET_1', 'FMT5_SOFT_RESET', - 'FMT5_SOFT_RESET_0', 'FMT5_SOFT_RESET_1', 'FMT_1', - 'FMT_10_10_10_2', 'FMT_10_11_11', 'FMT_10_11_11_FLOAT', - 'FMT_11_11_10', 'FMT_11_11_10_FLOAT', 'FMT_16', 'FMT_16_16', - 'FMT_16_16_16', 'FMT_16_16_16_16', 'FMT_16_16_16_16_FLOAT', - 'FMT_16_16_16_FLOAT', 'FMT_16_16_FLOAT', 'FMT_16_FLOAT', - 'FMT_1_5_5_5', 'FMT_1_REVERSED', 'FMT_24_8', 'FMT_24_8_FLOAT', - 'FMT_2_10_10_10', 'FMT_32', 'FMT_32_32', 'FMT_32_32_32', - 'FMT_32_32_32_32', 'FMT_32_32_32_32_FLOAT', 'FMT_32_32_32_FLOAT', - 'FMT_32_32_FLOAT', 'FMT_32_AS_32_32_32_32', 'FMT_32_AS_8', - 'FMT_32_AS_8_8', 'FMT_32_FLOAT', 'FMT_3_3_2', 'FMT_4_4', - 'FMT_4_4_4_4', 'FMT_5_5_5_1', 'FMT_5_6_5', - 'FMT_5_9_9_9_SHAREDEXP', 'FMT_6_5_5', 'FMT_8', 'FMT_8_24', - 'FMT_8_24_FLOAT', 'FMT_8_8', 'FMT_8_8_8', 'FMT_8_8_8_8', - 'FMT_APC3', 'FMT_APC4', 'FMT_APC5', 'FMT_APC6', 'FMT_APC7', - 'FMT_BC1', 'FMT_BC2', 'FMT_BC3', 'FMT_BC4', 'FMT_BC5', 'FMT_BC6', - 'FMT_BC7', 'FMT_BG_RG', 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Ei', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Fi', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Gi', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_RESERVED', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_A', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_B', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_C', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_D', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_E', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_F', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_G', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_RESERVED', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_18BPP', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_24BPP', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_30BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_18BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_24BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_30BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL2', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL4', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_18BPP', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_24BPP', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_30BPP', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_ROUNDING', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_TRUNCATION', - 'FMT_CLAMP_CNTL_COLOR_FORMAT', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_10BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_12BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_6BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_8BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_PROGRAMMABLE', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED1', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED2', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED3', - 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS', - 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_DISABLE', - 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_ENABLE', - 'FMT_CONTROL_PIXEL_ENCODING', - 'FMT_CONTROL_PIXEL_ENCODING_RESERVED', - 'FMT_CONTROL_PIXEL_ENCODING_RGB444_OR_YCBCR444', - 'FMT_CONTROL_PIXEL_ENCODING_YCBCR420', - 'FMT_CONTROL_PIXEL_ENCODING_YCBCR422', - 'FMT_CONTROL_SUBSAMPLING_MODE', - 'FMT_CONTROL_SUBSAMPLING_MODE_AVERAGE', - 'FMT_CONTROL_SUBSAMPLING_MODE_DROP', - 'FMT_CONTROL_SUBSAMPLING_MOME_3_TAP', - 'FMT_CONTROL_SUBSAMPLING_MOME_RESERVED', - 'FMT_CONTROL_SUBSAMPLING_ORDER', - 'FMT_CONTROL_SUBSAMPLING_ORDER_CB_BEFORE_CR', - 'FMT_CONTROL_SUBSAMPLING_ORDER_CR_BEFORE_CB', - 'FMT_CRC_CNTL_CONT_EN', 'FMT_CRC_CNTL_CONT_EN_CONT', - 'FMT_CRC_CNTL_CONT_EN_ONE_SHOT', - 'FMT_CRC_CNTL_EVEN_ODD_PIX_ENABLE', - 'FMT_CRC_CNTL_EVEN_ODD_PIX_ENABLE_ALL', - 'FMT_CRC_CNTL_EVEN_ODD_PIX_ENABLE_ODD_EVEN', - 'FMT_CRC_CNTL_EVEN_ODD_PIX_SELECT', - 'FMT_CRC_CNTL_EVEN_ODD_PIX_SELECT_EVEN', - 'FMT_CRC_CNTL_EVEN_ODD_PIX_SELECT_ODD', - 'FMT_CRC_CNTL_INCLUDE_OVERSCAN', - 'FMT_CRC_CNTL_INCLUDE_OVERSCAN_INCLUDE', - 'FMT_CRC_CNTL_INCLUDE_OVERSCAN_NOT_INCLUDE', - 'FMT_CRC_CNTL_INTERLACE_MODE', - 'FMT_CRC_CNTL_INTERLACE_MODE_BOTH_BOTTOM', - 'FMT_CRC_CNTL_INTERLACE_MODE_BOTH_EACH', - 'FMT_CRC_CNTL_INTERLACE_MODE_BOTTOM', - 'FMT_CRC_CNTL_INTERLACE_MODE_TOP', 'FMT_CRC_CNTL_ONLY_BLANKB', - 'FMT_CRC_CNTL_ONLY_BLANKB_ENTIRE_FIELD', - 'FMT_CRC_CNTL_ONLY_BLANKB_NON_BLANK', - 'FMT_CRC_CNTL_PSR_MODE_ENABLE', - 'FMT_CRC_CNTL_PSR_MODE_ENABLE_EDP_PSR_CRC', - 'FMT_CRC_CNTL_PSR_MODE_ENABLE_NORMAL', 'FMT_CTX1', - 'FMT_DEBUG_CNTL_COLOR_SELECT', 'FMT_DEBUG_CNTL_COLOR_SELECT_BLUE', - 'FMT_DEBUG_CNTL_COLOR_SELECT_GREEN', - 'FMT_DEBUG_CNTL_COLOR_SELECT_RED1', - 'FMT_DEBUG_CNTL_COLOR_SELECT_RED2', 'FMT_DYNAMIC_EXP_MODE', - 'FMT_DYNAMIC_EXP_MODE_10to12', 'FMT_DYNAMIC_EXP_MODE_8to12', - 'FMT_GB_GR', 'FMT_INVALID', 'FMT_RESERVED_33', 'FMT_RESERVED_36', - 'FMT_RESERVED_4', 'FMT_RESERVED_63', 'FMT_SPATIAL_DITHER_MODE', - 'FMT_SPATIAL_DITHER_MODE_0', 'FMT_SPATIAL_DITHER_MODE_1', - 'FMT_SPATIAL_DITHER_MODE_2', 'FMT_SPATIAL_DITHER_MODE_3', - 'FMT_STEREOSYNC_OVR_POL', 'FMT_STEREOSYNC_OVR_POL_INVERTED', - 'FMT_STEREOSYNC_OVR_POL_NOT_INVERTED', - 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0', - 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_BGR', - 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_RGB', - 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_SELECT', - 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_SELECT_LEGACY_HARDCODED_PATTERN', - 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_SELECT_PROGRAMMABLE_PATTERN', - 'FMT_X24_8_32_FLOAT', 'FORCE_BINNING_ON', - 'FORCE_DEEP_SLEEP_REQUEST', 'FORCE_DISABLE', 'FORCE_EARLY_Z', - 'FORCE_ENABLE', 'FORCE_LATE_Z', 'FORCE_LIGHT_SLEEP_REQ', - 'FORCE_LIGHT_SLEEP_REQUEST', 'FORCE_OFF', 'FORCE_OPT_AUTO', - 'FORCE_OPT_DISABLE', 'FORCE_OPT_ENABLE_IF_SRC_ARGB_0', - 'FORCE_OPT_ENABLE_IF_SRC_ARGB_1', 'FORCE_OPT_ENABLE_IF_SRC_A_0', - 'FORCE_OPT_ENABLE_IF_SRC_A_1', 'FORCE_OPT_ENABLE_IF_SRC_RGB_0', - 'FORCE_OPT_ENABLE_IF_SRC_RGB_1', 'FORCE_RESERVED', 'FORCE_RE_Z', - 'FORCE_SENT', 'FORCE_SHUT_DOWN_REQUEST', 'FORCE_SUMM_BOTH', - 'FORCE_SUMM_MAXZ', 'FORCE_SUMM_MINZ', 'FORCE_SUMM_OFF', - 'FORCE_VBI', 'FORCE_VBI_HIGH', 'FORCE_VBI_LOW', 'FRAG_ALWAYS', - 'FRAG_EQUAL', 'FRAG_GEQUAL', 'FRAG_GREATER', 'FRAG_LEQUAL', - 'FRAG_LESS', 'FRAG_NEVER', 'FRAG_NOTEQUAL', 'ForceControl', - 'GAMUT_REMAP_MODE_1', 'GAMUT_REMAP_MODE_2', 'GAMUT_REMAP_MODE_3', - 'GAMUT_REMAP_MODE_BYPASS', 'GATCL1RequestType', - 'GATCL1_TYPE_BYPASS', 'GATCL1_TYPE_NORMAL', - 'GATCL1_TYPE_SHOOTDOWN', 'GB_EDC_DED_MODE', - 'GB_EDC_DED_MODE_HALT', 'GB_EDC_DED_MODE_INT_HALT', - 'GB_EDC_DED_MODE_LOG', 'GB_TILING_CONFIG_MACROTABLE_SIZE', - 'GB_TILING_CONFIG_TABLE_SIZE', 'GDS_PERFCOUNT_SELECT', - 'GDS_PERF_SEL_DS_ADDR_CONFL', 'GDS_PERF_SEL_DS_BANK_CONFL', - 'GDS_PERF_SEL_GWS_BYPASS', 'GDS_PERF_SEL_GWS_RELEASED', - 'GDS_PERF_SEL_RBUF_HIT', 'GDS_PERF_SEL_RBUF_MISS', - 'GDS_PERF_SEL_SE0_SH0_2COMP_REQ', - 'GDS_PERF_SEL_SE0_SH0_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE0_SH0_GDS_BYTE_OP', - 'GDS_PERF_SEL_SE0_SH0_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE0_SH0_GDS_DATA_VALID', - 'GDS_PERF_SEL_SE0_SH0_GDS_RD_OP', - 'GDS_PERF_SEL_SE0_SH0_GDS_REL_OP', - 'GDS_PERF_SEL_SE0_SH0_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE0_SH0_GDS_STALL_BY_ORD', - 'GDS_PERF_SEL_SE0_SH0_GDS_WR_OP', 'GDS_PERF_SEL_SE0_SH0_NORET', - 'GDS_PERF_SEL_SE0_SH0_ORD_CNT', - 'GDS_PERF_SEL_SE0_SH0_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE0_SH0_RET', - 'GDS_PERF_SEL_SE0_SH1_2COMP_REQ', - 'GDS_PERF_SEL_SE0_SH1_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE0_SH1_GDS_BYTE_OP', - 'GDS_PERF_SEL_SE0_SH1_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE0_SH1_GDS_DATA_VALID', - 'GDS_PERF_SEL_SE0_SH1_GDS_RD_OP', - 'GDS_PERF_SEL_SE0_SH1_GDS_REL_OP', - 'GDS_PERF_SEL_SE0_SH1_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE0_SH1_GDS_STALL_BY_ORD', - 'GDS_PERF_SEL_SE0_SH1_GDS_WR_OP', 'GDS_PERF_SEL_SE0_SH1_NORET', - 'GDS_PERF_SEL_SE0_SH1_ORD_CNT', - 'GDS_PERF_SEL_SE0_SH1_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE0_SH1_RET', - 'GDS_PERF_SEL_SE1_SH0_2COMP_REQ', - 'GDS_PERF_SEL_SE1_SH0_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE1_SH0_GDS_BYTE_OP', - 'GDS_PERF_SEL_SE1_SH0_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE1_SH0_GDS_DATA_VALID', - 'GDS_PERF_SEL_SE1_SH0_GDS_RD_OP', - 'GDS_PERF_SEL_SE1_SH0_GDS_REL_OP', - 'GDS_PERF_SEL_SE1_SH0_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE1_SH0_GDS_STALL_BY_ORD', - 'GDS_PERF_SEL_SE1_SH0_GDS_WR_OP', 'GDS_PERF_SEL_SE1_SH0_NORET', - 'GDS_PERF_SEL_SE1_SH0_ORD_CNT', - 'GDS_PERF_SEL_SE1_SH0_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE1_SH0_RET', - 'GDS_PERF_SEL_SE1_SH1_2COMP_REQ', - 'GDS_PERF_SEL_SE1_SH1_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE1_SH1_GDS_BYTE_OP', - 'GDS_PERF_SEL_SE1_SH1_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE1_SH1_GDS_DATA_VALID', - 'GDS_PERF_SEL_SE1_SH1_GDS_RD_OP', - 'GDS_PERF_SEL_SE1_SH1_GDS_REL_OP', - 'GDS_PERF_SEL_SE1_SH1_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE1_SH1_GDS_STALL_BY_ORD', - 'GDS_PERF_SEL_SE1_SH1_GDS_WR_OP', 'GDS_PERF_SEL_SE1_SH1_NORET', - 'GDS_PERF_SEL_SE1_SH1_ORD_CNT', - 'GDS_PERF_SEL_SE1_SH1_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE1_SH1_RET', - 'GDS_PERF_SEL_SE2_SH0_2COMP_REQ', - 'GDS_PERF_SEL_SE2_SH0_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE2_SH0_GDS_BYTE_OP', - 'GDS_PERF_SEL_SE2_SH0_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE2_SH0_GDS_DATA_VALID', - 'GDS_PERF_SEL_SE2_SH0_GDS_RD_OP', - 'GDS_PERF_SEL_SE2_SH0_GDS_REL_OP', - 'GDS_PERF_SEL_SE2_SH0_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE2_SH0_GDS_STALL_BY_ORD', - 'GDS_PERF_SEL_SE2_SH0_GDS_WR_OP', 'GDS_PERF_SEL_SE2_SH0_NORET', - 'GDS_PERF_SEL_SE2_SH0_ORD_CNT', - 'GDS_PERF_SEL_SE2_SH0_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE2_SH0_RET', - 'GDS_PERF_SEL_SE2_SH1_2COMP_REQ', - 'GDS_PERF_SEL_SE2_SH1_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE2_SH1_GDS_BYTE_OP', - 'GDS_PERF_SEL_SE2_SH1_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE2_SH1_GDS_DATA_VALID', - 'GDS_PERF_SEL_SE2_SH1_GDS_RD_OP', - 'GDS_PERF_SEL_SE2_SH1_GDS_REL_OP', - 'GDS_PERF_SEL_SE2_SH1_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE2_SH1_GDS_STALL_BY_ORD', - 'GDS_PERF_SEL_SE2_SH1_GDS_WR_OP', 'GDS_PERF_SEL_SE2_SH1_NORET', - 'GDS_PERF_SEL_SE2_SH1_ORD_CNT', - 'GDS_PERF_SEL_SE2_SH1_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE2_SH1_RET', - 'GDS_PERF_SEL_SE3_SH0_2COMP_REQ', - 'GDS_PERF_SEL_SE3_SH0_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE3_SH0_GDS_BYTE_OP', - 'GDS_PERF_SEL_SE3_SH0_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE3_SH0_GDS_DATA_VALID', - 'GDS_PERF_SEL_SE3_SH0_GDS_RD_OP', - 'GDS_PERF_SEL_SE3_SH0_GDS_REL_OP', - 'GDS_PERF_SEL_SE3_SH0_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE3_SH0_GDS_STALL_BY_ORD', - 'GDS_PERF_SEL_SE3_SH0_GDS_WR_OP', 'GDS_PERF_SEL_SE3_SH0_NORET', - 'GDS_PERF_SEL_SE3_SH0_ORD_CNT', - 'GDS_PERF_SEL_SE3_SH0_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE3_SH0_RET', - 'GDS_PERF_SEL_SE3_SH1_2COMP_REQ', - 'GDS_PERF_SEL_SE3_SH1_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE3_SH1_GDS_BYTE_OP', - 'GDS_PERF_SEL_SE3_SH1_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE3_SH1_GDS_DATA_VALID', - 'GDS_PERF_SEL_SE3_SH1_GDS_RD_OP', - 'GDS_PERF_SEL_SE3_SH1_GDS_REL_OP', - 'GDS_PERF_SEL_SE3_SH1_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE3_SH1_GDS_STALL_BY_ORD', - 'GDS_PERF_SEL_SE3_SH1_GDS_WR_OP', 'GDS_PERF_SEL_SE3_SH1_NORET', - 'GDS_PERF_SEL_SE3_SH1_ORD_CNT', - 'GDS_PERF_SEL_SE3_SH1_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE3_SH1_RET', - 'GDS_PERF_SEL_WBUF_FLUSH', 'GDS_PERF_SEL_WBUF_WR', - 'GDS_PERF_SEL_WR_COMP', 'GENERICA_STEREOSYNC_SEL', - 'GENERICA_STEREOSYNC_SEL_D1', 'GENERICA_STEREOSYNC_SEL_D2', - 'GENERICA_STEREOSYNC_SEL_D3', 'GENERICA_STEREOSYNC_SEL_D4', - 'GENERICA_STEREOSYNC_SEL_D5', 'GENERICA_STEREOSYNC_SEL_D6', - 'GENERICA_STEREOSYNC_SEL_RESERVED', 'GENERICB_STEREOSYNC_SEL', - 'GENERICB_STEREOSYNC_SEL_D1', 'GENERICB_STEREOSYNC_SEL_D2', - 'GENERICB_STEREOSYNC_SEL_D3', 'GENERICB_STEREOSYNC_SEL_D4', - 'GENERICB_STEREOSYNC_SEL_D5', 'GENERICB_STEREOSYNC_SEL_D6', - 'GENERICB_STEREOSYNC_SEL_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE', - 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET_RESERVED', - 'GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE', - 'GLOBAL_CONTROL_CONTROLLER_RESET', 'GLOBAL_CONTROL_FLUSH_CONTROL', - 'GLOBAL_STATUS_FLUSH_STATUS', - 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_ENDED', - 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_NOT_ENDED', - 'GL__CONSTANT_ALPHA', 'GL__CONSTANT_COLOR', 'GL__DST_ALPHA', - 'GL__DST_COLOR', 'GL__ONE', 'GL__ONE_MINUS_CONSTANT_ALPHA', - 'GL__ONE_MINUS_CONSTANT_COLOR', 'GL__ONE_MINUS_DST_ALPHA', - 'GL__ONE_MINUS_DST_COLOR', 'GL__ONE_MINUS_SRC_ALPHA', - 'GL__ONE_MINUS_SRC_COLOR', 'GL__SRC_ALPHA', - 'GL__SRC_ALPHA_SATURATE', 'GL__SRC_COLOR', 'GL__ZERO', - 'GRBM_PERF_SEL', 'GRBM_PERF_SEL_BCI_BUSY', - 'GRBM_PERF_SEL_CB_BUSY', 'GRBM_PERF_SEL_CB_CLEAN', - 'GRBM_PERF_SEL_COUNT', 'GRBM_PERF_SEL_CPAXI_BUSY', - 'GRBM_PERF_SEL_CPC_BUSY', 'GRBM_PERF_SEL_CPF_BUSY', - 'GRBM_PERF_SEL_CPG_BUSY', 'GRBM_PERF_SEL_CP_BUSY', - 'GRBM_PERF_SEL_CP_COHER_BUSY', 'GRBM_PERF_SEL_CP_DMA_BUSY', - 'GRBM_PERF_SEL_DB_BUSY', 'GRBM_PERF_SEL_DB_CLEAN', - 'GRBM_PERF_SEL_EA_BUSY', 'GRBM_PERF_SEL_GDS_BUSY', - 'GRBM_PERF_SEL_GUI_ACTIVE', 'GRBM_PERF_SEL_IA_BUSY', - 'GRBM_PERF_SEL_IA_NO_DMA_BUSY', 'GRBM_PERF_SEL_PA_BUSY', - 'GRBM_PERF_SEL_RESERVED_0', 'GRBM_PERF_SEL_RESERVED_1', - 'GRBM_PERF_SEL_RESERVED_2', 'GRBM_PERF_SEL_RESERVED_3', - 'GRBM_PERF_SEL_RESERVED_4', 'GRBM_PERF_SEL_RESERVED_5', - 'GRBM_PERF_SEL_RESERVED_6', 'GRBM_PERF_SEL_RLC_BUSY', - 'GRBM_PERF_SEL_RMI_BUSY', 'GRBM_PERF_SEL_SC_BUSY', - 'GRBM_PERF_SEL_SPI_BUSY', 'GRBM_PERF_SEL_SX_BUSY', - 'GRBM_PERF_SEL_TA_BUSY', 'GRBM_PERF_SEL_TC_BUSY', - 'GRBM_PERF_SEL_USER_DEFINED', 'GRBM_PERF_SEL_UTCL2_BUSY', - 'GRBM_PERF_SEL_VGT_BUSY', 'GRBM_PERF_SEL_WD_BUSY', - 'GRBM_PERF_SEL_WD_NO_DMA_BUSY', 'GRBM_SE0_PERF_SEL', - 'GRBM_SE0_PERF_SEL_BCI_BUSY', 'GRBM_SE0_PERF_SEL_CB_BUSY', - 'GRBM_SE0_PERF_SEL_CB_CLEAN', 'GRBM_SE0_PERF_SEL_COUNT', - 'GRBM_SE0_PERF_SEL_DB_BUSY', 'GRBM_SE0_PERF_SEL_DB_CLEAN', - 'GRBM_SE0_PERF_SEL_PA_BUSY', 'GRBM_SE0_PERF_SEL_RESERVED_0', - 'GRBM_SE0_PERF_SEL_RESERVED_1', 'GRBM_SE0_PERF_SEL_RMI_BUSY', - 'GRBM_SE0_PERF_SEL_SC_BUSY', 'GRBM_SE0_PERF_SEL_SPI_BUSY', - 'GRBM_SE0_PERF_SEL_SX_BUSY', 'GRBM_SE0_PERF_SEL_TA_BUSY', - 'GRBM_SE0_PERF_SEL_USER_DEFINED', 'GRBM_SE0_PERF_SEL_VGT_BUSY', - 'GRBM_SE1_PERF_SEL', 'GRBM_SE1_PERF_SEL_BCI_BUSY', - 'GRBM_SE1_PERF_SEL_CB_BUSY', 'GRBM_SE1_PERF_SEL_CB_CLEAN', - 'GRBM_SE1_PERF_SEL_COUNT', 'GRBM_SE1_PERF_SEL_DB_BUSY', - 'GRBM_SE1_PERF_SEL_DB_CLEAN', 'GRBM_SE1_PERF_SEL_PA_BUSY', - 'GRBM_SE1_PERF_SEL_RESERVED_0', 'GRBM_SE1_PERF_SEL_RESERVED_1', - 'GRBM_SE1_PERF_SEL_RMI_BUSY', 'GRBM_SE1_PERF_SEL_SC_BUSY', - 'GRBM_SE1_PERF_SEL_SPI_BUSY', 'GRBM_SE1_PERF_SEL_SX_BUSY', - 'GRBM_SE1_PERF_SEL_TA_BUSY', 'GRBM_SE1_PERF_SEL_USER_DEFINED', - 'GRBM_SE1_PERF_SEL_VGT_BUSY', 'GRBM_SE2_PERF_SEL', - 'GRBM_SE2_PERF_SEL_BCI_BUSY', 'GRBM_SE2_PERF_SEL_CB_BUSY', - 'GRBM_SE2_PERF_SEL_CB_CLEAN', 'GRBM_SE2_PERF_SEL_COUNT', - 'GRBM_SE2_PERF_SEL_DB_BUSY', 'GRBM_SE2_PERF_SEL_DB_CLEAN', - 'GRBM_SE2_PERF_SEL_PA_BUSY', 'GRBM_SE2_PERF_SEL_RESERVED_0', - 'GRBM_SE2_PERF_SEL_RESERVED_1', 'GRBM_SE2_PERF_SEL_RMI_BUSY', - 'GRBM_SE2_PERF_SEL_SC_BUSY', 'GRBM_SE2_PERF_SEL_SPI_BUSY', - 'GRBM_SE2_PERF_SEL_SX_BUSY', 'GRBM_SE2_PERF_SEL_TA_BUSY', - 'GRBM_SE2_PERF_SEL_USER_DEFINED', 'GRBM_SE2_PERF_SEL_VGT_BUSY', - 'GRBM_SE3_PERF_SEL', 'GRBM_SE3_PERF_SEL_BCI_BUSY', - 'GRBM_SE3_PERF_SEL_CB_BUSY', 'GRBM_SE3_PERF_SEL_CB_CLEAN', - 'GRBM_SE3_PERF_SEL_COUNT', 'GRBM_SE3_PERF_SEL_DB_BUSY', - 'GRBM_SE3_PERF_SEL_DB_CLEAN', 'GRBM_SE3_PERF_SEL_PA_BUSY', - 'GRBM_SE3_PERF_SEL_RESERVED_0', 'GRBM_SE3_PERF_SEL_RESERVED_1', - 'GRBM_SE3_PERF_SEL_RMI_BUSY', 'GRBM_SE3_PERF_SEL_SC_BUSY', - 'GRBM_SE3_PERF_SEL_SPI_BUSY', 'GRBM_SE3_PERF_SEL_SX_BUSY', - 'GRBM_SE3_PERF_SEL_TA_BUSY', 'GRBM_SE3_PERF_SEL_USER_DEFINED', - 'GRBM_SE3_PERF_SEL_VGT_BUSY', 'GSTHREADID_SIZE', 'GS_CUT_1024', - 'GS_CUT_128', 'GS_CUT_256', 'GS_CUT_512', 'GS_OFF', - 'GS_SCENARIO_A', 'GS_SCENARIO_B', 'GS_SCENARIO_C', - 'GS_SCENARIO_G', 'GS_STAGE_OFF', 'GS_STAGE_ON', 'GroupInterleave', - 'HDMI_ACR_0_MULTIPLE_RESERVED', 'HDMI_ACR_1_MULTIPLE', - 'HDMI_ACR_2_MULTIPLE', 'HDMI_ACR_3_MULTIPLE_RESERVED', - 'HDMI_ACR_4_MULTIPLE', 'HDMI_ACR_5_MULTIPLE_RESERVED', - 'HDMI_ACR_6_MULTIPLE_RESERVED', 'HDMI_ACR_7_MULTIPLE_RESERVED', - 'HDMI_ACR_AUDIO_PRIORITY', 'HDMI_ACR_CONT', - 'HDMI_ACR_CONT_DISABLE', 'HDMI_ACR_CONT_ENABLE', - 'HDMI_ACR_NOT_SEND', 'HDMI_ACR_N_MULTIPLE', - 'HDMI_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE', - 'HDMI_ACR_PKT_SEND', 'HDMI_ACR_SELECT', 'HDMI_ACR_SELECT_32K', - 'HDMI_ACR_SELECT_44K', 'HDMI_ACR_SELECT_48K', - 'HDMI_ACR_SELECT_HW', 'HDMI_ACR_SEND', 'HDMI_ACR_SOURCE', - 'HDMI_ACR_SOURCE_HW', 'HDMI_ACR_SOURCE_SW', - 'HDMI_AUDIO_DELAY_56CLK', 'HDMI_AUDIO_DELAY_58CLK', - 'HDMI_AUDIO_DELAY_DISABLE', 'HDMI_AUDIO_DELAY_EN', - 'HDMI_AUDIO_DELAY_RESERVED', 'HDMI_AUDIO_INFO_CONT', - 'HDMI_AUDIO_INFO_CONT_DISABLE', 'HDMI_AUDIO_INFO_CONT_ENABLE', - 'HDMI_AUDIO_INFO_NOT_SEND', 'HDMI_AUDIO_INFO_PKT_SEND', - 'HDMI_AUDIO_INFO_SEND', - 'HDMI_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT', - 'HDMI_AUDIO_SEND_MAX_PACKETS', 'HDMI_AVI_INFO_CONT', - 'HDMI_AVI_INFO_CONT_DISABLE', 'HDMI_AVI_INFO_CONT_ENABLE', - 'HDMI_AVI_INFO_NOT_SEND', 'HDMI_AVI_INFO_PKT_SEND', - 'HDMI_AVI_INFO_SEND', - 'HDMI_CLOCK_CHANNEL_FREQ_EQUAL_TO_CHAR_RATE', - 'HDMI_CLOCK_CHANNEL_FREQ_QUARTER_TO_CHAR_RATE', - 'HDMI_CLOCK_CHANNEL_RATE', 'HDMI_DATA_SCRAMBLE_DISABLE', - 'HDMI_DATA_SCRAMBLE_EN', 'HDMI_DATA_SCRAMBLE_ENABLE', - 'HDMI_DEEP_COLOR_DEPTH', 'HDMI_DEEP_COLOR_DEPTH_24BPP', - 'HDMI_DEEP_COLOR_DEPTH_30BPP', 'HDMI_DEEP_COLOR_DEPTH_36BPP', - 'HDMI_DEEP_COLOR_DEPTH_RESERVED', 'HDMI_DEFAULT_PAHSE', - 'HDMI_DEFAULT_PHASE_IS_0', 'HDMI_DEFAULT_PHASE_IS_1', - 'HDMI_ERROR_ACK', 'HDMI_ERROR_ACK_INT', 'HDMI_ERROR_MASK', - 'HDMI_ERROR_MASK_INT', 'HDMI_ERROR_NOT_ACK', - 'HDMI_ERROR_NOT_MASK', 'HDMI_EXTRA_NULL_PACKET_FILLED_DISABLE', - 'HDMI_EXTRA_NULL_PACKET_FILLED_ENABLE', 'HDMI_GC_AVMUTE', - 'HDMI_GC_AVMUTE_CONT', 'HDMI_GC_AVMUTE_CONT_DISABLE', - 'HDMI_GC_AVMUTE_CONT_ENABLE', 'HDMI_GC_AVMUTE_SET', - 'HDMI_GC_AVMUTE_UNSET', 'HDMI_GC_CONT', 'HDMI_GC_CONT_DISABLE', - 'HDMI_GC_CONT_ENABLE', 'HDMI_GC_NOT_SEND', 'HDMI_GC_PKT_SEND', - 'HDMI_GC_SEND', 'HDMI_GENERIC0_CONT', - 'HDMI_GENERIC0_CONT_DISABLE', 'HDMI_GENERIC0_CONT_ENABLE', - 'HDMI_GENERIC0_NOT_SEND', 'HDMI_GENERIC0_PKT_SEND', - 'HDMI_GENERIC0_SEND', 'HDMI_GENERIC1_CONT', - 'HDMI_GENERIC1_CONT_DISABLE', 'HDMI_GENERIC1_CONT_ENABLE', - 'HDMI_GENERIC1_NOT_SEND', 'HDMI_GENERIC1_PKT_SEND', - 'HDMI_GENERIC1_SEND', 'HDMI_GENERIC2_CONT', - 'HDMI_GENERIC2_CONT_DISABLE', 'HDMI_GENERIC2_CONT_ENABLE', - 'HDMI_GENERIC2_NOT_SEND', 'HDMI_GENERIC2_PKT_SEND', - 'HDMI_GENERIC2_SEND', 'HDMI_GENERIC3_CONT', - 'HDMI_GENERIC3_CONT_DISABLE', 'HDMI_GENERIC3_CONT_ENABLE', - 'HDMI_GENERIC3_NOT_SEND', 'HDMI_GENERIC3_PKT_SEND', - 'HDMI_GENERIC3_SEND', 'HDMI_ISRC_CONT', 'HDMI_ISRC_CONT_DISABLE', - 'HDMI_ISRC_CONT_ENABLE', 'HDMI_ISRC_NOT_SEND', - 'HDMI_ISRC_PKT_SEND', 'HDMI_ISRC_SEND', - 'HDMI_KEEPOUT_0_650PIX_AFTER_VSYNC', - 'HDMI_KEEPOUT_509_650PIX_AFTER_VSYNC', 'HDMI_KEEPOUT_MODE', - 'HDMI_MPEG_INFO_CONT', 'HDMI_MPEG_INFO_CONT_DISABLE', - 'HDMI_MPEG_INFO_CONT_ENABLE', 'HDMI_MPEG_INFO_NOT_SEND', - 'HDMI_MPEG_INFO_PKT_SEND', 'HDMI_MPEG_INFO_SEND', - 'HDMI_NOT_SEND_MAX_AUDIO_PACKETS', - 'HDMI_NO_EXTRA_NULL_PACKET_FILLED', 'HDMI_NULL_NOT_SEND', - 'HDMI_NULL_PKT_SEND', 'HDMI_NULL_SEND', 'HDMI_PACKET_GEN_VERSION', - 'HDMI_PACKET_GEN_VERSION_NEW', 'HDMI_PACKET_GEN_VERSION_OLD', - 'HDMI_PACKING_PHASE_OVERRIDE', 'HDMI_PACKING_PHASE_SET_BY_HW', - 'HDMI_PACKING_PHASE_SET_BY_SW', 'HDMI_SEND_MAX_AUDIO_PACKETS', - 'HPD_INT_CONTROL_ACK', 'HPD_INT_CONTROL_ACK_0', - 'HPD_INT_CONTROL_ACK_1', 'HPD_INT_CONTROL_GEN_INT_ON_CON', - 'HPD_INT_CONTROL_GEN_INT_ON_DISCON', 'HPD_INT_CONTROL_POLARITY', - 'HPD_INT_CONTROL_RX_INT_ACK', 'HPD_INT_CONTROL_RX_INT_ACK_0', - 'HPD_INT_CONTROL_RX_INT_ACK_1', 'HS_STAGE_OFF', 'HS_STAGE_ON', - 'HW_SOURCE_SEL_DSC_JPEG', 'HW_SOURCE_SEL_DSC_VLP', - 'HW_SOURCE_SEL_DSC_VUP', 'HW_SOURCE_SEL_NONE', - 'I2S0_SPDIF0_SOFT_RESET', 'I2S0_SPDIF0_SOFT_RESET_0', - 'I2S0_SPDIF0_SOFT_RESET_1', 'I2S1_SOFT_RESET', - 'I2S1_SOFT_RESET_0', 'I2S1_SOFT_RESET_1', 'I2S_LRCLK_HIGH_LEFT', - 'I2S_LRCLK_LOW_LEFT', 'I2S_LRCLK_POLARITY', - 'I2S_SAMPLE_ALIGNMENT', 'I2S_SAMPLE_BIT_ORDER', - 'I2S_SAMPLE_BIT_ORDER_LSB', 'I2S_SAMPLE_BIT_ORDER_MSB', - 'I2S_SAMPLE_LEFT_ALIGNED', 'I2S_SAMPLE_RIGHT_ALIGNED', - 'I2S_WORD_ALIGNMENT', 'I2S_WORD_ALTERNATE_ALIGNMENT', - 'I2S_WORD_I2S_ALIGNMENT', 'I2S_WORD_SIZE', 'I2S_WORD_SIZE_16', - 'I2S_WORD_SIZE_32', 'IA_PERFCOUNT_SELECT', - 'ID_STREAM_DISABLE_ACKED', 'ID_STREAM_DISABLE_NO_ACK', - 'IH_PERF_SEL', 'IH_PERF_SEL_BIF_LINE0_FALLING', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF0', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF1', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF10', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF11', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF12', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF13', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF14', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF15', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF2', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF3', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF4', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF5', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF6', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF7', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF8', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF9', - 'IH_PERF_SEL_BIF_LINE0_RISING', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF0', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF1', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF10', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF11', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF12', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF13', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF14', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF15', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF2', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF3', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF4', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF5', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF6', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF7', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF8', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF9', 'IH_PERF_SEL_BUFFER_IDLE', - 'IH_PERF_SEL_CLIENT0_INT', 'IH_PERF_SEL_CLIENT10_INT', - 'IH_PERF_SEL_CLIENT11_INT', 'IH_PERF_SEL_CLIENT12_INT', - 'IH_PERF_SEL_CLIENT13_INT', 'IH_PERF_SEL_CLIENT14_INT', - 'IH_PERF_SEL_CLIENT15_INT', 'IH_PERF_SEL_CLIENT16_INT', - 'IH_PERF_SEL_CLIENT17_INT', 'IH_PERF_SEL_CLIENT18_INT', - 'IH_PERF_SEL_CLIENT19_INT', 'IH_PERF_SEL_CLIENT1_INT', - 'IH_PERF_SEL_CLIENT20_INT', 'IH_PERF_SEL_CLIENT21_INT', - 'IH_PERF_SEL_CLIENT22_INT', 'IH_PERF_SEL_CLIENT23_INT', - 'IH_PERF_SEL_CLIENT24_INT', 'IH_PERF_SEL_CLIENT25_INT', - 'IH_PERF_SEL_CLIENT26_INT', 'IH_PERF_SEL_CLIENT27_INT', - 'IH_PERF_SEL_CLIENT28_INT', 'IH_PERF_SEL_CLIENT29_INT', - 'IH_PERF_SEL_CLIENT2_INT', 'IH_PERF_SEL_CLIENT30_INT', - 'IH_PERF_SEL_CLIENT31_INT', 'IH_PERF_SEL_CLIENT3_INT', - 'IH_PERF_SEL_CLIENT4_INT', 'IH_PERF_SEL_CLIENT5_INT', - 'IH_PERF_SEL_CLIENT6_INT', 'IH_PERF_SEL_CLIENT7_INT', - 'IH_PERF_SEL_CLIENT8_INT', 'IH_PERF_SEL_CLIENT9_INT', - 'IH_PERF_SEL_CYCLE', 'IH_PERF_SEL_IDLE', 'IH_PERF_SEL_INPUT_IDLE', - 'IH_PERF_SEL_MC_WR_CLEAN_PENDING', - 'IH_PERF_SEL_MC_WR_CLEAN_STALL', 'IH_PERF_SEL_MC_WR_COUNT', - 'IH_PERF_SEL_MC_WR_IDLE', 'IH_PERF_SEL_MC_WR_STALL', - 'IH_PERF_SEL_RB0_FULL', 'IH_PERF_SEL_RB0_FULL_VF0', - 'IH_PERF_SEL_RB0_FULL_VF1', 'IH_PERF_SEL_RB0_FULL_VF10', - 'IH_PERF_SEL_RB0_FULL_VF11', 'IH_PERF_SEL_RB0_FULL_VF12', - 'IH_PERF_SEL_RB0_FULL_VF13', 'IH_PERF_SEL_RB0_FULL_VF14', - 'IH_PERF_SEL_RB0_FULL_VF15', 'IH_PERF_SEL_RB0_FULL_VF2', - 'IH_PERF_SEL_RB0_FULL_VF3', 'IH_PERF_SEL_RB0_FULL_VF4', - 'IH_PERF_SEL_RB0_FULL_VF5', 'IH_PERF_SEL_RB0_FULL_VF6', - 'IH_PERF_SEL_RB0_FULL_VF7', 'IH_PERF_SEL_RB0_FULL_VF8', - 'IH_PERF_SEL_RB0_FULL_VF9', 'IH_PERF_SEL_RB0_OVERFLOW', - 'IH_PERF_SEL_RB0_OVERFLOW_VF0', 'IH_PERF_SEL_RB0_OVERFLOW_VF1', - 'IH_PERF_SEL_RB0_OVERFLOW_VF10', 'IH_PERF_SEL_RB0_OVERFLOW_VF11', - 'IH_PERF_SEL_RB0_OVERFLOW_VF12', 'IH_PERF_SEL_RB0_OVERFLOW_VF13', - 'IH_PERF_SEL_RB0_OVERFLOW_VF14', 'IH_PERF_SEL_RB0_OVERFLOW_VF15', - 'IH_PERF_SEL_RB0_OVERFLOW_VF2', 'IH_PERF_SEL_RB0_OVERFLOW_VF3', - 'IH_PERF_SEL_RB0_OVERFLOW_VF4', 'IH_PERF_SEL_RB0_OVERFLOW_VF5', - 'IH_PERF_SEL_RB0_OVERFLOW_VF6', 'IH_PERF_SEL_RB0_OVERFLOW_VF7', - 'IH_PERF_SEL_RB0_OVERFLOW_VF8', 'IH_PERF_SEL_RB0_OVERFLOW_VF9', - 'IH_PERF_SEL_RB0_RPTR_WRAP', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF0', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF1', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF10', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF11', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF12', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF13', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF14', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF15', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF2', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF3', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF4', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF5', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF6', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF7', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF8', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF9', 'IH_PERF_SEL_RB0_WPTR_WRAP', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF0', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF1', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF10', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF11', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF12', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF13', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF14', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF15', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF2', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF3', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF4', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF5', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF6', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF7', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF8', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF9', 'IH_PERF_SEL_RB0_WPTR_WRITEBACK', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF0', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF1', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF10', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF11', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF12', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF13', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF14', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF15', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF2', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF3', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF4', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF5', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF6', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF7', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF8', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF9', 'IH_PERF_SEL_RB1_FULL', - 'IH_PERF_SEL_RB1_FULL_VF0', 'IH_PERF_SEL_RB1_FULL_VF1', - 'IH_PERF_SEL_RB1_FULL_VF10', 'IH_PERF_SEL_RB1_FULL_VF11', - 'IH_PERF_SEL_RB1_FULL_VF12', 'IH_PERF_SEL_RB1_FULL_VF13', - 'IH_PERF_SEL_RB1_FULL_VF14', 'IH_PERF_SEL_RB1_FULL_VF15', - 'IH_PERF_SEL_RB1_FULL_VF2', 'IH_PERF_SEL_RB1_FULL_VF3', - 'IH_PERF_SEL_RB1_FULL_VF4', 'IH_PERF_SEL_RB1_FULL_VF5', - 'IH_PERF_SEL_RB1_FULL_VF6', 'IH_PERF_SEL_RB1_FULL_VF7', - 'IH_PERF_SEL_RB1_FULL_VF8', 'IH_PERF_SEL_RB1_FULL_VF9', - 'IH_PERF_SEL_RB1_OVERFLOW', 'IH_PERF_SEL_RB1_OVERFLOW_VF0', - 'IH_PERF_SEL_RB1_OVERFLOW_VF1', 'IH_PERF_SEL_RB1_OVERFLOW_VF10', - 'IH_PERF_SEL_RB1_OVERFLOW_VF11', 'IH_PERF_SEL_RB1_OVERFLOW_VF12', - 'IH_PERF_SEL_RB1_OVERFLOW_VF13', 'IH_PERF_SEL_RB1_OVERFLOW_VF14', - 'IH_PERF_SEL_RB1_OVERFLOW_VF15', 'IH_PERF_SEL_RB1_OVERFLOW_VF2', - 'IH_PERF_SEL_RB1_OVERFLOW_VF3', 'IH_PERF_SEL_RB1_OVERFLOW_VF4', - 'IH_PERF_SEL_RB1_OVERFLOW_VF5', 'IH_PERF_SEL_RB1_OVERFLOW_VF6', - 'IH_PERF_SEL_RB1_OVERFLOW_VF7', 'IH_PERF_SEL_RB1_OVERFLOW_VF8', - 'IH_PERF_SEL_RB1_OVERFLOW_VF9', 'IH_PERF_SEL_RB1_RPTR_WRAP', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF0', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF1', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF10', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF11', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF12', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF13', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF14', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF15', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF2', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF3', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF4', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF5', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF6', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF7', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF8', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF9', 'IH_PERF_SEL_RB1_WPTR_WRAP', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF0', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF1', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF10', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF11', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF12', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF13', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF14', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF15', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF2', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF3', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF4', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF5', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF6', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF7', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF8', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF9', 'IH_PERF_SEL_RB2_FULL', - 'IH_PERF_SEL_RB2_FULL_VF0', 'IH_PERF_SEL_RB2_FULL_VF1', - 'IH_PERF_SEL_RB2_FULL_VF10', 'IH_PERF_SEL_RB2_FULL_VF11', - 'IH_PERF_SEL_RB2_FULL_VF12', 'IH_PERF_SEL_RB2_FULL_VF13', - 'IH_PERF_SEL_RB2_FULL_VF14', 'IH_PERF_SEL_RB2_FULL_VF15', - 'IH_PERF_SEL_RB2_FULL_VF2', 'IH_PERF_SEL_RB2_FULL_VF3', - 'IH_PERF_SEL_RB2_FULL_VF4', 'IH_PERF_SEL_RB2_FULL_VF5', - 'IH_PERF_SEL_RB2_FULL_VF6', 'IH_PERF_SEL_RB2_FULL_VF7', - 'IH_PERF_SEL_RB2_FULL_VF8', 'IH_PERF_SEL_RB2_FULL_VF9', - 'IH_PERF_SEL_RB2_OVERFLOW', 'IH_PERF_SEL_RB2_OVERFLOW_VF0', - 'IH_PERF_SEL_RB2_OVERFLOW_VF1', 'IH_PERF_SEL_RB2_OVERFLOW_VF10', - 'IH_PERF_SEL_RB2_OVERFLOW_VF11', 'IH_PERF_SEL_RB2_OVERFLOW_VF12', - 'IH_PERF_SEL_RB2_OVERFLOW_VF13', 'IH_PERF_SEL_RB2_OVERFLOW_VF14', - 'IH_PERF_SEL_RB2_OVERFLOW_VF15', 'IH_PERF_SEL_RB2_OVERFLOW_VF2', - 'IH_PERF_SEL_RB2_OVERFLOW_VF3', 'IH_PERF_SEL_RB2_OVERFLOW_VF4', - 'IH_PERF_SEL_RB2_OVERFLOW_VF5', 'IH_PERF_SEL_RB2_OVERFLOW_VF6', - 'IH_PERF_SEL_RB2_OVERFLOW_VF7', 'IH_PERF_SEL_RB2_OVERFLOW_VF8', - 'IH_PERF_SEL_RB2_OVERFLOW_VF9', 'IH_PERF_SEL_RB2_RPTR_WRAP', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF0', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF1', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF10', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF11', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF12', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF13', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF14', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF15', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF2', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF3', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF4', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF5', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF6', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF7', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF8', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF9', 'IH_PERF_SEL_RB2_WPTR_WRAP', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF0', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF1', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF10', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF11', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF12', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF13', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF14', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF15', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF2', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF3', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF4', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF5', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF6', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF7', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF8', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF9', 'IMG_DATA_FORMAT', - 'IMG_DATA_FORMAT_10_10_10_2', 'IMG_DATA_FORMAT_10_11_11', - 'IMG_DATA_FORMAT_11_11_10', 'IMG_DATA_FORMAT_16', - 'IMG_DATA_FORMAT_16_16', 'IMG_DATA_FORMAT_16_16_16_16', - 'IMG_DATA_FORMAT_16_AS_16_16_16_16', - 'IMG_DATA_FORMAT_16_AS_32_32', - 'IMG_DATA_FORMAT_16_AS_32_32_32_32', 'IMG_DATA_FORMAT_1_5_5_5', - 'IMG_DATA_FORMAT_24_8', 'IMG_DATA_FORMAT_2_10_10_10', - 'IMG_DATA_FORMAT_32', 'IMG_DATA_FORMAT_32_32', - 'IMG_DATA_FORMAT_32_32_32', 'IMG_DATA_FORMAT_32_32_32_32', - 'IMG_DATA_FORMAT_32_AS_32_32_32_32', 'IMG_DATA_FORMAT_4_4', - 'IMG_DATA_FORMAT_4_4_4_4', 'IMG_DATA_FORMAT_5_5_5_1', - 'IMG_DATA_FORMAT_5_6_5', 'IMG_DATA_FORMAT_5_9_9_9', - 'IMG_DATA_FORMAT_6E4', 'IMG_DATA_FORMAT_6_5_5', - 'IMG_DATA_FORMAT_8', 'IMG_DATA_FORMAT_8_24', - 'IMG_DATA_FORMAT_8_8', 'IMG_DATA_FORMAT_8_8_8_8', - 'IMG_DATA_FORMAT_8_AS_32', 'IMG_DATA_FORMAT_8_AS_32_32', - 'IMG_DATA_FORMAT_8_AS_8_8_8_8', 'IMG_DATA_FORMAT_ASTC_2D_HDR', - 'IMG_DATA_FORMAT_ASTC_2D_LDR', 'IMG_DATA_FORMAT_ASTC_2D_LDR_SRGB', - 'IMG_DATA_FORMAT_ASTC_3D_HDR', 'IMG_DATA_FORMAT_ASTC_3D_LDR', - 'IMG_DATA_FORMAT_ASTC_3D_LDR_SRGB', 'IMG_DATA_FORMAT_BC1', - 'IMG_DATA_FORMAT_BC2', 'IMG_DATA_FORMAT_BC3', - 'IMG_DATA_FORMAT_BC4', 'IMG_DATA_FORMAT_BC5', - 'IMG_DATA_FORMAT_BC6', 'IMG_DATA_FORMAT_BC7', - 'IMG_DATA_FORMAT_BG_RG', 'IMG_DATA_FORMAT_ETC2_R', - 'IMG_DATA_FORMAT_ETC2_RG', 'IMG_DATA_FORMAT_ETC2_RGB', - 'IMG_DATA_FORMAT_ETC2_RGBA', 'IMG_DATA_FORMAT_ETC2_RGBA1', - 'IMG_DATA_FORMAT_FMASK', 'IMG_DATA_FORMAT_GB_GR', - 'IMG_DATA_FORMAT_INVALID', 'IMG_DATA_FORMAT_N_IN_16', - 'IMG_DATA_FORMAT_N_IN_16_16', 'IMG_DATA_FORMAT_N_IN_16_16_16_16', - 'IMG_DATA_FORMAT_N_IN_16_AS_16_16_16_16', - 'IMG_DATA_FORMAT_RESERVED_15', 'IMG_DATA_FORMAT_RESERVED_29', - 'IMG_DATA_FORMAT_RESERVED_30', 'IMG_DATA_FORMAT_RESERVED_56', - 'IMG_DATA_FORMAT_RESERVED_59', 'IMG_DATA_FORMAT_RESERVED_60', - 'IMG_DATA_FORMAT_X24_8_32', 'IMG_NUM_FORMAT', - 'IMG_NUM_FORMAT_ASTC_2D', 'IMG_NUM_FORMAT_ASTC_2D_10x10', - 'IMG_NUM_FORMAT_ASTC_2D_10x5', 'IMG_NUM_FORMAT_ASTC_2D_10x6', - 'IMG_NUM_FORMAT_ASTC_2D_10x8', 'IMG_NUM_FORMAT_ASTC_2D_12x10', - 'IMG_NUM_FORMAT_ASTC_2D_12x12', 'IMG_NUM_FORMAT_ASTC_2D_4x4', - 'IMG_NUM_FORMAT_ASTC_2D_5x4', 'IMG_NUM_FORMAT_ASTC_2D_5x5', - 'IMG_NUM_FORMAT_ASTC_2D_6x5', 'IMG_NUM_FORMAT_ASTC_2D_6x6', - 'IMG_NUM_FORMAT_ASTC_2D_8x5', 'IMG_NUM_FORMAT_ASTC_2D_8x6', - 'IMG_NUM_FORMAT_ASTC_2D_8x8', - 'IMG_NUM_FORMAT_ASTC_2D_RESERVED_14', - 'IMG_NUM_FORMAT_ASTC_2D_RESERVED_15', 'IMG_NUM_FORMAT_ASTC_3D', - 'IMG_NUM_FORMAT_ASTC_3D_3x3x3', 'IMG_NUM_FORMAT_ASTC_3D_4x3x3', - 'IMG_NUM_FORMAT_ASTC_3D_4x4x3', 'IMG_NUM_FORMAT_ASTC_3D_4x4x4', - 'IMG_NUM_FORMAT_ASTC_3D_5x4x4', 'IMG_NUM_FORMAT_ASTC_3D_5x5x4', - 'IMG_NUM_FORMAT_ASTC_3D_5x5x5', 'IMG_NUM_FORMAT_ASTC_3D_6x5x5', - 'IMG_NUM_FORMAT_ASTC_3D_6x6x5', 'IMG_NUM_FORMAT_ASTC_3D_6x6x6', - 'IMG_NUM_FORMAT_ASTC_3D_RESERVED_10', - 'IMG_NUM_FORMAT_ASTC_3D_RESERVED_11', - 'IMG_NUM_FORMAT_ASTC_3D_RESERVED_12', - 'IMG_NUM_FORMAT_ASTC_3D_RESERVED_13', - 'IMG_NUM_FORMAT_ASTC_3D_RESERVED_14', - 'IMG_NUM_FORMAT_ASTC_3D_RESERVED_15', 'IMG_NUM_FORMAT_FLOAT', - 'IMG_NUM_FORMAT_FMASK', 'IMG_NUM_FORMAT_FMASK_16_16_1', - 'IMG_NUM_FORMAT_FMASK_16_8_2', 'IMG_NUM_FORMAT_FMASK_32_16_2', - 'IMG_NUM_FORMAT_FMASK_32_8_4', 'IMG_NUM_FORMAT_FMASK_32_8_8', - 'IMG_NUM_FORMAT_FMASK_64_16_4', 'IMG_NUM_FORMAT_FMASK_64_16_8', - 'IMG_NUM_FORMAT_FMASK_8_2_1', 'IMG_NUM_FORMAT_FMASK_8_2_2', - 'IMG_NUM_FORMAT_FMASK_8_4_1', 'IMG_NUM_FORMAT_FMASK_8_4_2', - 'IMG_NUM_FORMAT_FMASK_8_4_4', 'IMG_NUM_FORMAT_FMASK_8_8_1', - 'IMG_NUM_FORMAT_FMASK_RESERVED_13', - 'IMG_NUM_FORMAT_FMASK_RESERVED_14', - 'IMG_NUM_FORMAT_FMASK_RESERVED_15', 'IMG_NUM_FORMAT_N_IN_16', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_0', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_10', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_11', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_12', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_13', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_14', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_15', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_3', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_6', - 'IMG_NUM_FORMAT_N_IN_16_RESERVED_9', - 'IMG_NUM_FORMAT_N_IN_16_UINT_10', 'IMG_NUM_FORMAT_N_IN_16_UINT_9', - 'IMG_NUM_FORMAT_N_IN_16_UNORM_10', - 'IMG_NUM_FORMAT_N_IN_16_UNORM_9', - 'IMG_NUM_FORMAT_N_IN_16_UNORM_UINT_10', - 'IMG_NUM_FORMAT_N_IN_16_UNORM_UINT_9', - 'IMG_NUM_FORMAT_RESERVED_10', 'IMG_NUM_FORMAT_RESERVED_11', - 'IMG_NUM_FORMAT_RESERVED_12', 'IMG_NUM_FORMAT_RESERVED_13', - 'IMG_NUM_FORMAT_RESERVED_14', 'IMG_NUM_FORMAT_RESERVED_15', - 'IMG_NUM_FORMAT_RESERVED_8', 'IMG_NUM_FORMAT_SINT', - 'IMG_NUM_FORMAT_SNORM', 'IMG_NUM_FORMAT_SRGB', - 'IMG_NUM_FORMAT_SSCALED', 'IMG_NUM_FORMAT_UINT', - 'IMG_NUM_FORMAT_UNORM', 'IMG_NUM_FORMAT_UNORM_UINT', - 'IMG_NUM_FORMAT_USCALED', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_IS_BUSY', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_NOT_BUSY', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_IMMEDIATE_RESPONSE_VALID', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_NO_IMMEDIATE_RESPONSE_VALID', - 'INGAMMA_MODE_BYPASS', 'INGAMMA_MODE_FIX', 'INGAMMA_MODE_FLOAT', - 'INPUTCSC_MODE_A', 'INPUTCSC_MODE_B', 'INPUTCSC_MODE_BYPASS', - 'INPUTCSC_MODE_UNITY', 'INPUTCSC_ROUND', 'INPUTCSC_TRUNCATE', - 'INPUTCSC_TYPE_10_2', 'INPUTCSC_TYPE_12_0', 'INPUTCSC_TYPE_8_4', - 'INPUT_COVERAGE', 'INPUT_DEPTH_COVERAGE', 'INPUT_INNER_COVERAGE', - 'INST_ID_ECC_INTERRUPT_MSG', 'INST_ID_HOST_REG_TRAP_MSG', - 'INST_ID_HW_TRAP', 'INST_ID_KILL_SEQ', 'INST_ID_PRIV_START', - 'INST_ID_SPI_WREXEC', 'INST_ID_TTRACE_NEW_PC_MSG', - 'INTERLACE_SOURCE_INTERLEAVE', 'INTERLACE_SOURCE_PROGRESSIVE', - 'INTERLACE_SOURCE_STACK', 'INTERLEAVE_DIS', 'INTERLEAVE_EN', - 'IQ_DEQUEUE_RETRY', 'IQ_INTR_TYPE_IB', 'IQ_INTR_TYPE_MQD', - 'IQ_INTR_TYPE_PQ', 'IQ_OFFLOAD_RETRY', 'IQ_QUEUE_SLEEP', - 'IQ_SCH_WAVE_MSG', 'IQ_SEM_REARM', 'JITTER_REMOVE_DISABLE', - 'LATE_Z', 'LBV_DITHER_EN', 'LBV_DOWNSCALE_PREFETCH_EN', - 'LBV_DYNAMIC_PIXEL_DEPTH', 'LBV_INTERLEAVE_EN', - 'LBV_MEMORY_CONFIG', 'LBV_PIXEL_DEPTH', 'LBV_PIXEL_EXPAN_MODE', - 'LBV_PIXEL_REDUCE_MODE', 'LBV_SYNC_DURATION', - 'LBV_SYNC_RESET_SEL2', 'LB_BUFFER_STATUS_LB_BUFFER_EMPTY_ACK', - 'LB_BUFFER_STATUS_LB_BUFFER_EMPTY_NORMAL', - 'LB_BUFFER_STATUS_LB_BUFFER_EMPTY_RESET', - 'LB_BUFFER_STATUS_LB_BUFFER_FULL_ACK', - 'LB_BUFFER_STATUS_LB_BUFFER_FULL_NORMAL', - 'LB_BUFFER_STATUS_LB_BUFFER_FULL_RESET', - 'LB_DATA_FORMAT_ALPHA_DISABLE', 'LB_DATA_FORMAT_ALPHA_EN', - 'LB_DATA_FORMAT_ALPHA_ENABLE', - 'LB_DATA_FORMAT_DYNAMIC_PIXEL_DEPTH', - 'LB_DATA_FORMAT_DYNAMIC_PIXEL_DEPTH_30BPP', - 'LB_DATA_FORMAT_DYNAMIC_PIXEL_DEPTH_36BPP', - 'LB_DATA_FORMAT_INTERLEAVE_DISABLE', - 'LB_DATA_FORMAT_INTERLEAVE_EN', - 'LB_DATA_FORMAT_INTERLEAVE_ENABLE', 'LB_DATA_FORMAT_PIXEL_DEPTH', - 'LB_DATA_FORMAT_PIXEL_DEPTH_18BPP', - 'LB_DATA_FORMAT_PIXEL_DEPTH_24BPP', - 'LB_DATA_FORMAT_PIXEL_DEPTH_30BPP', - 'LB_DATA_FORMAT_PIXEL_DEPTH_36BPP', - 'LB_DATA_FORMAT_PIXEL_EXPAN_MODE', - 'LB_DATA_FORMAT_PIXEL_EXPAN_MODE_DYNAMIC_PIXEL_EXPANSION', - 'LB_DATA_FORMAT_PIXEL_EXPAN_MODE_ZERO_PIXEL_EXPANSION', - 'LB_DATA_FORMAT_PIXEL_REDUCE_MODE', - 'LB_DATA_FORMAT_PIXEL_REDUCE_MODE_ROUNDING', - 'LB_DATA_FORMAT_PIXEL_REDUCE_MODE_TRUNCATION', - 'LB_DATA_FORMAT_REQUEST_MODE', - 'LB_DATA_FORMAT_REQUEST_MODE_NORMAL', - 'LB_DATA_FORMAT_REQUEST_MODE_START_OF_LINE', - 'LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_FORCE_ONE', - 'LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_FORCE_TO_ONE', - 'LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_FORCE_TO_ZERO', - 'LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_FORCE_ZERO', - 'LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_NO_FORCE_ONE', - 'LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_NO_FORCE_ZERO', - 'LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_SEL', - 'LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_SEL_NOT_USED0', - 'LB_DC_MVP_LB_CONTROL_DC_MVP_SWAP_LOCK_OUT_SEL_NOT_USED1', - 'LB_DC_MVP_LB_CONTROL_MVP_SWAP_LOCK_IN_MODE', - 'LB_INTERRUPT_MASK_VBLANK_INTERRUPT_DISABLE', - 'LB_INTERRUPT_MASK_VBLANK_INTERRUPT_ENABLE', - 'LB_INTERRUPT_MASK_VBLANK_INTERRUPT_MASK', - 'LB_INTERRUPT_MASK_VLINE2_INTERRUPT_DISABLE', - 'LB_INTERRUPT_MASK_VLINE2_INTERRUPT_ENABLE', - 'LB_INTERRUPT_MASK_VLINE2_INTERRUPT_MASK', - 'LB_INTERRUPT_MASK_VLINE_INTERRUPT_DISABLE', - 'LB_INTERRUPT_MASK_VLINE_INTERRUPT_ENABLE', - 'LB_INTERRUPT_MASK_VLINE_INTERRUPT_MASK', - 'LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_DISABLE', - 'LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_EN', - 'LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_ENABLE', - 'LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_REPLACEMENT_DISABLE', - 'LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_REPLACEMENT_ENABLE', - 'LB_KEYER_COLOR_CTRL_LB_KEYER_COLOR_REP_EN', - 'LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_NORMAL', - 'LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_RESET', - 'LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_RESET_ACK', - 'LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_RESET_ACK_NOT_USED0', - 'LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_RESET_ACK_NOT_USED1', - 'LB_MVP_AFR_FLIP_FIFO_CNTL_MVP_AFR_FLIP_FIFO_RESET_ACTIVE', - 'LB_MVP_AFR_FLIP_MODE_MVP_AFR_FLIP_MODE', - 'LB_MVP_AFR_FLIP_MODE_MVP_AFR_FLIP_MODE_DUMMY_FLIP', - 'LB_MVP_AFR_FLIP_MODE_MVP_AFR_FLIP_MODE_REAL_FLIP', - 'LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_AUTO_DISABLE', - 'LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_AUTO_EN', - 'LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_AUTO_ENABLE', - 'LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_LINE_NUM_INSERT_MODE', - 'LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_LINE_NUM_INSERT_MODE_DEBUG', - 'LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_LINE_NUM_INSERT_MODE_HSYNC_MODE', - 'LB_MVP_FLIP_LINE_NUM_INSERT_MVP_FLIP_LINE_NUM_INSERT_MODE_NO_INSERT', - 'LB_SYNC_RESET_SEL_LB_SYNC_DURATION', - 'LB_SYNC_RESET_SEL_LB_SYNC_DURATION_128_CLOCKS', - 'LB_SYNC_RESET_SEL_LB_SYNC_DURATION_16_CLOCKS', - 'LB_SYNC_RESET_SEL_LB_SYNC_DURATION_32_CLOCKS', - 'LB_SYNC_RESET_SEL_LB_SYNC_DURATION_64_CLOCKS', - 'LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL', - 'LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL2', - 'LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL2_USE_VBLANK', - 'LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL2_USE_VSYNC', - 'LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL_DISABLE', - 'LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL_FROM_POWERDOWN_RESET', - 'LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL_FROM_VSYNC_VBLANK', - 'LB_SYNC_RESET_SEL_LB_SYNC_RESET_SEL_FROM_VSYNC_VBLANK_POWERDOWN_RESET', - 'LB_TEST_DEBUG_INDEX_LB_TEST_DEBUG_WRITE_EN', - 'LB_TEST_DEBUG_INDEX_LB_TEST_DEBUG_WRITE_EN_NOT_USED0', - 'LB_TEST_DEBUG_INDEX_LB_TEST_DEBUG_WRITE_EN_NOT_USED1', - 'LB_VBLANK_STATUS_VBLANK_ACK', 'LB_VBLANK_STATUS_VBLANK_CLEAR', - 'LB_VBLANK_STATUS_VBLANK_INTERRUPT_TYPE', - 'LB_VBLANK_STATUS_VBLANK_INTERRUPT_TYPE_LEVEL_BASED', - 'LB_VBLANK_STATUS_VBLANK_INTERRUPT_TYPE_PULSE_BASED', - 'LB_VBLANK_STATUS_VBLANK_NORMAL', - 'LB_VLINE2_START_END_VLINE2_INV', - 'LB_VLINE2_START_END_VLINE2_INVERSE', - 'LB_VLINE2_START_END_VLINE2_NORMAL', - 'LB_VLINE2_STATUS_VLINE2_ACK', 'LB_VLINE2_STATUS_VLINE2_CLEAR', - 'LB_VLINE2_STATUS_VLINE2_INTERRUPT_TYPE', - 'LB_VLINE2_STATUS_VLINE2_INTERRUPT_TYPE_LEVEL_BASED', - 'LB_VLINE2_STATUS_VLINE2_INTERRUPT_TYPE_PULSE_BASED', - 'LB_VLINE2_STATUS_VLINE2_NORMAL', 'LB_VLINE_START_END_VLINE_INV', - 'LB_VLINE_START_END_VLINE_INVERSE', - 'LB_VLINE_START_END_VLINE_NORMAL', 'LB_VLINE_STATUS_VLINE_ACK', - 'LB_VLINE_STATUS_VLINE_CLEAR', - 'LB_VLINE_STATUS_VLINE_INTERRUPT_TYPE', - 'LB_VLINE_STATUS_VLINE_INTERRUPT_TYPE_LEVEL_BASED', - 'LB_VLINE_STATUS_VLINE_INTERRUPT_TYPE_PULSE_BASED', - 'LB_VLINE_STATUS_VLINE_NORMAL', 'LINESTRIP', - 'LPT_NUM_BANKS_16BANK', 'LPT_NUM_BANKS_2BANK', - 'LPT_NUM_BANKS_32BANK', 'LPT_NUM_BANKS_4BANK', - 'LPT_NUM_BANKS_8BANK', 'LPT_NUM_PIPES_1CH', 'LPT_NUM_PIPES_2CH', - 'LPT_NUM_PIPES_4CH', 'LPT_NUM_PIPES_8CH', 'LS_STAGE_OFF', - 'LS_STAGE_ON', 'LVTMA_RANDOM_PATTERN_SEED_ALL_PIXELS', - 'LVTMA_RANDOM_PATTERN_SEED_ONLY_DE_HIGH', - 'LVTMA_RANDOM_PATTERN_SEED_RAN_PAT', 'LptNumBanks', 'LptNumPipes', - 'MASTER_UPDATE_LOCK_GSL_CONTROL_MASTER_UPDATE_LOCK', - 'MASTER_UPDATE_LOCK_GSL_CONTROL_MASTER_UPDATE_LOCK_FALSE', - 'MASTER_UPDATE_LOCK_GSL_CONTROL_MASTER_UPDATE_LOCK_TRUE', - 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK', - 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_FALSE', - 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_TRUE', - 'MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK', - 'MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK_FALSE', - 'MASTER_UPDATE_LOCK_UNDERFLOW_UPDATE_LOCK_TRUE', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTH', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_EVEN', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_ODD', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_RESERVED', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_MODE', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_MODE_BEFORE', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_MODE_BETWEEN', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_MODE_HSYNCA', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_MODE_VSYNCA', 'MEMORY_CONFIG_0', - 'MEMORY_CONFIG_1', 'MEMORY_CONFIG_2', 'MEMORY_CONFIG_3', - 'MEM_ARB_MODE_AGE', 'MEM_ARB_MODE_BOTH', 'MEM_ARB_MODE_FIXED', - 'MEM_ARB_MODE_WEIGHT', 'MEM_PWR_DIS_CTRL', 'MEM_PWR_FORCE_CTRL', - 'MEM_PWR_FORCE_CTRL2', 'MEM_PWR_SEL_CTRL', 'MEM_PWR_SEL_CTRL2', - 'ME_ID0', 'ME_ID1', 'ME_ID2', 'ME_ID3', - 'MICROSECOND_TIME_BASE_CLOCK_IS_PPLL_REFCLK', - 'MICROSECOND_TIME_BASE_CLOCK_IS_XTALIN', - 'MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL', - 'MICRO_TILE_MODE_DISPLAY_2D', 'MICRO_TILE_MODE_DISPLAY_3D', - 'MICRO_TILE_MODE_LINEAR', 'MICRO_TILE_MODE_ROTATED', - 'MICRO_TILE_MODE_STD_2D', 'MICRO_TILE_MODE_STD_3D', - 'MICRO_TILE_MODE_Z_2D', 'MICRO_TILE_MODE_Z_3D', - 'MILLISECOND_TIME_BASE_CLOCK_IS_PPLL_REFCLK', - 'MILLISECOND_TIME_BASE_CLOCK_IS_XTALIN', - 'MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL', - 'MSA_MISC0_OVERRIDE_DISABLE', 'MSA_MISC0_OVERRIDE_ENABLE', - 'MSA_MISC1_BIT7_OVERRIDE_DISABLE', - 'MSA_MISC1_BIT7_OVERRIDE_ENABLE', - 'MSA_V_TIMING_OVERRIDE_DISABLED', 'MSA_V_TIMING_OVERRIDE_ENABLED', - 'MTYPE', 'MTYPE_CC', 'MTYPE_NC', 'MTYPE_RW', 'MTYPE_UC', - 'MTYPE_WC', 'MULT_16', 'MULT_8', 'MVP_CLK_SRC_SEL', - 'MVP_CLK_SRC_SEL_IO_1', 'MVP_CLK_SRC_SEL_IO_2', - 'MVP_CLK_SRC_SEL_REFCLK', 'MVP_CLK_SRC_SEL_RSRV', - 'MVP_SOFT_RESET', 'MVP_SOFT_RESET_0', 'MVP_SOFT_RESET_1', - 'MacroTileAspect', 'MemArbMode', 'MicroTileMode', - 'MultiGPUTileSize', 'NOT_SENT', 'NO_DIST', 'NO_FORCE', - 'NO_FORCE_REQ', 'NO_FORCE_REQUEST', 'NUMBER_FLOAT', 'NUMBER_SINT', - 'NUMBER_SNORM', 'NUMBER_SRGB', 'NUMBER_SSCALED', 'NUMBER_UINT', - 'NUMBER_UNORM', 'NUMBER_USCALED', 'NUM_SIMD_PER_CU', - 'NonDispTilingOrder', 'NumBanks', 'NumBanksConfig', 'NumGPUs', - 'NumLowerPipes', 'NumMaxCompressedFragments', 'NumPipes', - 'NumRbPerShaderEngine', 'NumShaderEngines', 'OFFCHIP_HS_DEALLOC', - 'OFF_SEQ', 'ON_SEQ', 'OPT_COMB_ADD', 'OPT_COMB_BLEND_DISABLED', - 'OPT_COMB_MAX', 'OPT_COMB_MIN', 'OPT_COMB_NONE', - 'OPT_COMB_REVSUBTRACT', 'OPT_COMB_SAFE_ADD', 'OPT_COMB_SUBTRACT', - 'OUTPUT_LINE', 'OUTPUT_POINT', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_NOT_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_DISABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_NOT_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_DISABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_NOT_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_DISABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_ENABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_NO_TRAFFIC_PRIORITY', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_DO_RUN', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_IS_RESET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RESET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RUN', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_YES_TRAFFIC_PRIORITY', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_16', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_20', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_24', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_1', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_10_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_11_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_12_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_13_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_14_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_15_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_16_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_2', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_3', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_4', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_5', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_6', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_7', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_8', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_9_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 'OUTPUT_TRIANGLE_CCW', 'OUTPUT_TRIANGLE_CW', - 'OVERRIDE_CGTT_DCEFCLK', 'OVERRIDE_CGTT_DCEFCLK_NOOP', - 'OVERRIDE_CGTT_SCLK', 'OVERRIDE_CGTT_SCLK_NOOP', 'PART_FRAC_EVEN', - 'PART_FRAC_ODD', 'PART_INTEGER', 'PART_POW2', 'PATCHES', - 'PERFCOUNTER_ACTIVE', 'PERFCOUNTER_CNT0_STATE', - 'PERFCOUNTER_CNT0_STATE_FREEZE', 'PERFCOUNTER_CNT0_STATE_HW', - 'PERFCOUNTER_CNT0_STATE_RESET', 'PERFCOUNTER_CNT0_STATE_START', - 'PERFCOUNTER_CNT1_STATE', 'PERFCOUNTER_CNT1_STATE_FREEZE', - 'PERFCOUNTER_CNT1_STATE_HW', 'PERFCOUNTER_CNT1_STATE_RESET', - 'PERFCOUNTER_CNT1_STATE_START', 'PERFCOUNTER_CNT2_STATE', - 'PERFCOUNTER_CNT2_STATE_FREEZE', 'PERFCOUNTER_CNT2_STATE_HW', - 'PERFCOUNTER_CNT2_STATE_RESET', 'PERFCOUNTER_CNT2_STATE_START', - 'PERFCOUNTER_CNT3_STATE', 'PERFCOUNTER_CNT3_STATE_FREEZE', - 'PERFCOUNTER_CNT3_STATE_HW', 'PERFCOUNTER_CNT3_STATE_RESET', - 'PERFCOUNTER_CNT3_STATE_START', 'PERFCOUNTER_CNT4_STATE', - 'PERFCOUNTER_CNT4_STATE_FREEZE', 'PERFCOUNTER_CNT4_STATE_HW', - 'PERFCOUNTER_CNT4_STATE_RESET', 'PERFCOUNTER_CNT4_STATE_START', - 'PERFCOUNTER_CNT5_STATE', 'PERFCOUNTER_CNT5_STATE_FREEZE', - 'PERFCOUNTER_CNT5_STATE_HW', 'PERFCOUNTER_CNT5_STATE_RESET', - 'PERFCOUNTER_CNT5_STATE_START', 'PERFCOUNTER_CNT6_STATE', - 'PERFCOUNTER_CNT6_STATE_FREEZE', 'PERFCOUNTER_CNT6_STATE_HW', - 'PERFCOUNTER_CNT6_STATE_RESET', 'PERFCOUNTER_CNT6_STATE_START', - 'PERFCOUNTER_CNT7_STATE', 'PERFCOUNTER_CNT7_STATE_FREEZE', - 'PERFCOUNTER_CNT7_STATE_HW', 'PERFCOUNTER_CNT7_STATE_RESET', - 'PERFCOUNTER_CNT7_STATE_START', 'PERFCOUNTER_CNTL_SEL', - 'PERFCOUNTER_CNTL_SEL_0', 'PERFCOUNTER_CNTL_SEL_1', - 'PERFCOUNTER_CNTL_SEL_2', 'PERFCOUNTER_CNTL_SEL_3', - 'PERFCOUNTER_CNTL_SEL_4', 'PERFCOUNTER_CNTL_SEL_5', - 'PERFCOUNTER_CNTL_SEL_6', 'PERFCOUNTER_CNTL_SEL_7', - 'PERFCOUNTER_CNTOFF_START_DIS', - 'PERFCOUNTER_CNTOFF_START_DISABLE', - 'PERFCOUNTER_CNTOFF_START_ENABLE', - 'PERFCOUNTER_COUNTED_VALUE_TYPE', - 'PERFCOUNTER_COUNTED_VALUE_TYPE_ACC', - 'PERFCOUNTER_COUNTED_VALUE_TYPE_MAX', - 'PERFCOUNTER_COUNTED_VALUE_TYPE_MIN', 'PERFCOUNTER_CVALUE_SEL', - 'PERFCOUNTER_CVALUE_SEL_11_0', 'PERFCOUNTER_CVALUE_SEL_15_0', - 'PERFCOUNTER_CVALUE_SEL_23_12', 'PERFCOUNTER_CVALUE_SEL_31_16', - 'PERFCOUNTER_CVALUE_SEL_35_24', 'PERFCOUNTER_CVALUE_SEL_47_0', - 'PERFCOUNTER_CVALUE_SEL_47_32', 'PERFCOUNTER_CVALUE_SEL_47_36', - 'PERFCOUNTER_HW_CNTL_SEL', 'PERFCOUNTER_HW_CNTL_SEL_CNTOFF', - 'PERFCOUNTER_HW_CNTL_SEL_RUNEN', 'PERFCOUNTER_INC_MODE', - 'PERFCOUNTER_INC_MODE_BOTH_EDGE', 'PERFCOUNTER_INC_MODE_LSB', - 'PERFCOUNTER_INC_MODE_MULTI_BIT', 'PERFCOUNTER_INC_MODE_NEG_EDGE', - 'PERFCOUNTER_INC_MODE_POS_EDGE', 'PERFCOUNTER_INT_DISABLE', - 'PERFCOUNTER_INT_EN', 'PERFCOUNTER_INT_ENABLE', - 'PERFCOUNTER_INT_TYPE', 'PERFCOUNTER_INT_TYPE_LEVEL', - 'PERFCOUNTER_INT_TYPE_PULSE', 'PERFCOUNTER_IS_ACTIVE', - 'PERFCOUNTER_IS_IDLE', 'PERFCOUNTER_OFF_MASK', - 'PERFCOUNTER_OFF_MASK_DISABLE', 'PERFCOUNTER_OFF_MASK_ENABLE', - 'PERFCOUNTER_RESTART_DISABLE', 'PERFCOUNTER_RESTART_EN', - 'PERFCOUNTER_RESTART_ENABLE', 'PERFCOUNTER_RUNEN_MODE', - 'PERFCOUNTER_RUNEN_MODE_EDGE', 'PERFCOUNTER_RUNEN_MODE_LEVEL', - 'PERFCOUNTER_SAMPLE', 'PERFCOUNTER_START', - 'PERFCOUNTER_STATE_SEL0', 'PERFCOUNTER_STATE_SEL0_GLOBAL', - 'PERFCOUNTER_STATE_SEL0_LOCAL', 'PERFCOUNTER_STATE_SEL1', - 'PERFCOUNTER_STATE_SEL1_GLOBAL', 'PERFCOUNTER_STATE_SEL1_LOCAL', - 'PERFCOUNTER_STATE_SEL2', 'PERFCOUNTER_STATE_SEL2_GLOBAL', - 'PERFCOUNTER_STATE_SEL2_LOCAL', 'PERFCOUNTER_STATE_SEL3', - 'PERFCOUNTER_STATE_SEL3_GLOBAL', 'PERFCOUNTER_STATE_SEL3_LOCAL', - 'PERFCOUNTER_STATE_SEL4', 'PERFCOUNTER_STATE_SEL4_GLOBAL', - 'PERFCOUNTER_STATE_SEL4_LOCAL', 'PERFCOUNTER_STATE_SEL5', - 'PERFCOUNTER_STATE_SEL5_GLOBAL', 'PERFCOUNTER_STATE_SEL5_LOCAL', - 'PERFCOUNTER_STATE_SEL6', 'PERFCOUNTER_STATE_SEL6_GLOBAL', - 'PERFCOUNTER_STATE_SEL6_LOCAL', 'PERFCOUNTER_STATE_SEL7', - 'PERFCOUNTER_STATE_SEL7_GLOBAL', 'PERFCOUNTER_STATE_SEL7_LOCAL', - 'PERFCOUNTER_STOP', 'PERFMON_CNTOFF_AND', 'PERFMON_CNTOFF_AND_OR', - 'PERFMON_CNTOFF_INT_DISABLE', 'PERFMON_CNTOFF_INT_EN', - 'PERFMON_CNTOFF_INT_ENABLE', 'PERFMON_CNTOFF_INT_TYPE', - 'PERFMON_CNTOFF_INT_TYPE_LEVEL', 'PERFMON_CNTOFF_INT_TYPE_PULSE', - 'PERFMON_CNTOFF_OR', 'PERFMON_COUNTER_MODE', - 'PERFMON_COUNTER_MODE_ACCUM', - 'PERFMON_COUNTER_MODE_ACTIVE_CYCLES', - 'PERFMON_COUNTER_MODE_CYCLES_EQ_HI', - 'PERFMON_COUNTER_MODE_CYCLES_GE_HI', - 'PERFMON_COUNTER_MODE_CYCLES_SINCE_FIRST_EVENT', - 'PERFMON_COUNTER_MODE_CYCLES_SINCE_LAST_EVENT', - 'PERFMON_COUNTER_MODE_DIRTY', - 'PERFMON_COUNTER_MODE_INACTIVE_CYCLES', - 'PERFMON_COUNTER_MODE_MAX', 'PERFMON_COUNTER_MODE_RESERVED', - 'PERFMON_COUNTER_MODE_SAMPLE', 'PERFMON_SPM_MODE', - 'PERFMON_SPM_MODE_16BIT_CLAMP', 'PERFMON_SPM_MODE_16BIT_NO_CLAMP', - 'PERFMON_SPM_MODE_32BIT_CLAMP', 'PERFMON_SPM_MODE_32BIT_NO_CLAMP', - 'PERFMON_SPM_MODE_OFF', 'PERFMON_SPM_MODE_RESERVED_5', - 'PERFMON_SPM_MODE_RESERVED_6', 'PERFMON_SPM_MODE_RESERVED_7', - 'PERFMON_SPM_MODE_TEST_MODE_0', 'PERFMON_SPM_MODE_TEST_MODE_1', - 'PERFMON_SPM_MODE_TEST_MODE_2', 'PERFMON_STATE', - 'PERFMON_STATE_FREEZE', 'PERFMON_STATE_HW', 'PERFMON_STATE_RESET', - 'PERFMON_STATE_START', 'PERF_PAPC_CCGSM_BUSY', - 'PERF_PAPC_CCGSM_IDLE', 'PERF_PAPC_CCGSM_STALLED', - 'PERF_PAPC_CLIPGA_BUSY', 'PERF_PAPC_CLIPGA_IDLE', - 'PERF_PAPC_CLIPGA_STALLED', 'PERF_PAPC_CLIPGA_STARVED_VTE_CLIP', - 'PERF_PAPC_CLIPGA_VTE_KILL_PRIM', 'PERF_PAPC_CLIPSM_BUSY', - 'PERF_PAPC_CLIPSM_IDLE', 'PERF_PAPC_CLIPSM_WAIT_AVAIL_VTE_CLIP', - 'PERF_PAPC_CLIPSM_WAIT_CLIPGA', - 'PERF_PAPC_CLIPSM_WAIT_CLIP_OUTSM', - 'PERF_PAPC_CLIPSM_WAIT_CLIP_VERT_ENGH', - 'PERF_PAPC_CLIPSM_WAIT_HIGH_PRI_SEQ', 'PERF_PAPC_CLIP_BUSY', - 'PERF_PAPC_CLIP_IDLE', 'PERF_PAPC_CLPRIM_BUSY', - 'PERF_PAPC_CLPRIM_IDLE', 'PERF_PAPC_CLPRIM_STALLED', - 'PERF_PAPC_CLPRIM_STARVED_CCGSM', - 'PERF_PAPC_CLPR_CLIP_PLANE_BOTTOM', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_1', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_2', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_3', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_4', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_5_8', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_9_12', - 'PERF_PAPC_CLPR_CLIP_PLANE_FAR', 'PERF_PAPC_CLPR_CLIP_PLANE_LEFT', - 'PERF_PAPC_CLPR_CLIP_PLANE_NEAR', - 'PERF_PAPC_CLPR_CLIP_PLANE_RIGHT', - 'PERF_PAPC_CLPR_CLIP_PLANE_TOP', 'PERF_PAPC_CLPR_CULL_PRIM', - 'PERF_PAPC_CLPR_CULL_TO_NULL_PRIM', - 'PERF_PAPC_CLPR_GSC_KILL_CULL_PRIM', - 'PERF_PAPC_CLPR_POINT_CLIP_CANDIDATE', - 'PERF_PAPC_CLPR_RASTER_KILL_CULL_PRIM', - 'PERF_PAPC_CLPR_UCP_CLIP_PRIM', 'PERF_PAPC_CLPR_UCP_CULL_PRIM', - 'PERF_PAPC_CLPR_VTX_KILL_CULL_PRIM', - 'PERF_PAPC_CLPR_VTX_NAN_CULL_PRIM', - 'PERF_PAPC_CLPR_VVUCP_CLIP_PRIM', - 'PERF_PAPC_CLPR_VVUCP_CULL_PRIM', 'PERF_PAPC_CLPR_VV_CLIP_PRIM', - 'PERF_PAPC_CLPR_VV_CULL_PRIM', 'PERF_PAPC_CLSM_CLIPPING_PRIM', - 'PERF_PAPC_CLSM_CULL_TO_NULL_PRIM', 'PERF_PAPC_CLSM_NULL_PRIM', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_1', 'PERF_PAPC_CLSM_OUT_PRIM_CNT_2', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_3', 'PERF_PAPC_CLSM_OUT_PRIM_CNT_4', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_5_8', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_9_13', - 'PERF_PAPC_CLSM_TOTALLY_VISIBLE_PRIM', - 'PERF_PAPC_CL_DYN_SCLK_VLD', 'PERF_PAPC_PASX_DISABLE_PIPE', - 'PERF_PAPC_PASX_FIRST_DEAD', 'PERF_PAPC_PASX_FIRST_VECTOR', - 'PERF_PAPC_PASX_REC_BUSY', 'PERF_PAPC_PASX_REC_IDLE', - 'PERF_PAPC_PASX_REC_STALLED', - 'PERF_PAPC_PASX_REC_STALLED_CCGSM_IN', - 'PERF_PAPC_PASX_REC_STALLED_POS_MEM', - 'PERF_PAPC_PASX_REC_STARVED_SX', 'PERF_PAPC_PASX_REQ', - 'PERF_PAPC_PASX_REQ_BUSY', 'PERF_PAPC_PASX_REQ_IDLE', - 'PERF_PAPC_PASX_REQ_STALLED', 'PERF_PAPC_PASX_SE0_FIRST_VECTOR', - 'PERF_PAPC_PASX_SE0_REQ', 'PERF_PAPC_PASX_SE0_SECOND_VECTOR', - 'PERF_PAPC_PASX_SE1_FIRST_VECTOR', 'PERF_PAPC_PASX_SE1_REQ', - 'PERF_PAPC_PASX_SE1_SECOND_VECTOR', 'PERF_PAPC_PASX_SECOND_DEAD', - 'PERF_PAPC_PASX_SECOND_VECTOR', 'PERF_PAPC_PASX_VTX_KILL_DISCARD', - 'PERF_PAPC_PASX_VTX_NAN_DISCARD', - 'PERF_PAPC_PA_INPUT_END_OF_PACKET', - 'PERF_PAPC_PA_INPUT_EVENT_FLAG', - 'PERF_PAPC_PA_INPUT_EXTENDED_EVENT', - 'PERF_PAPC_PA_INPUT_FIRST_PRIM_SLOT', - 'PERF_PAPC_PA_INPUT_NULL_PRIM', 'PERF_PAPC_PA_INPUT_PRIM', - 'PERF_PAPC_PA_REG_SCLK_VLD', 'PERF_PAPC_SU_BACK_FACE_CULL_PRIM', - 'PERF_PAPC_SU_BUSY', 'PERF_PAPC_SU_CULLED_PRIM', - 'PERF_PAPC_SU_DYN_SCLK_VLD', 'PERF_PAPC_SU_FRONT_FACE_CULL_PRIM', - 'PERF_PAPC_SU_IDLE', 'PERF_PAPC_SU_INPUT_CLIP_PRIM', - 'PERF_PAPC_SU_INPUT_CLIP_PRIM_DUAL', - 'PERF_PAPC_SU_INPUT_NULL_PRIM', 'PERF_PAPC_SU_INPUT_PRIM', - 'PERF_PAPC_SU_INPUT_PRIM_DUAL', - 'PERF_PAPC_SU_MULTI_GPU_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_OUTPUT_CLIP_POLYMODE_DUAL', - 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM', - 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM_DUAL', - 'PERF_PAPC_SU_OUTPUT_END_OF_PACKET', 'PERF_PAPC_SU_OUTPUT_EOPG', - 'PERF_PAPC_SU_OUTPUT_EVENT_FLAG', - 'PERF_PAPC_SU_OUTPUT_FIRST_PRIM_SLOT', - 'PERF_PAPC_SU_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_BACK', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_DUAL', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_FACE', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_FRONT', 'PERF_PAPC_SU_OUTPUT_PRIM', - 'PERF_PAPC_SU_OUTPUT_PRIM_DUAL', - 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_BACK', - 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FACE', - 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FRONT', - 'PERF_PAPC_SU_POLYMODE_BACK_CULL', - 'PERF_PAPC_SU_POLYMODE_FACE_CULL', - 'PERF_PAPC_SU_POLYMODE_FRONT_CULL', - 'PERF_PAPC_SU_POLYMODE_INVALID_FILL', - 'PERF_PAPC_SU_SE01_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE01_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE01_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE01_STALLED_SC', - 'PERF_PAPC_SU_SE0_OUTPUT_END_OF_PACKET', - 'PERF_PAPC_SU_SE0_OUTPUT_EOPG', - 'PERF_PAPC_SU_SE0_OUTPUT_FIRST_PRIM_SLOT', - 'PERF_PAPC_SU_SE0_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE0_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE0_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE0_STALLED_SC', - 'PERF_PAPC_SU_SE1_OUTPUT_END_OF_PACKET', - 'PERF_PAPC_SU_SE1_OUTPUT_EOPG', - 'PERF_PAPC_SU_SE1_OUTPUT_FIRST_PRIM_SLOT', - 'PERF_PAPC_SU_SE1_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE1_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE1_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE1_STALLED_SC', - 'PERF_PAPC_SU_SE2_OUTPUT_END_OF_PACKET', - 'PERF_PAPC_SU_SE2_OUTPUT_EOPG', - 'PERF_PAPC_SU_SE2_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE2_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE2_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE2_STALLED_SC', - 'PERF_PAPC_SU_SE3_OUTPUT_END_OF_PACKET', - 'PERF_PAPC_SU_SE3_OUTPUT_EOPG', - 'PERF_PAPC_SU_SE3_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE3_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE3_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE3_STALLED_SC', 'PERF_PAPC_SU_STALLED_SC', - 'PERF_PAPC_SU_STARVED_CLIP', 'PERF_PAPC_SU_ZERO_AREA_CULL_PRIM', - 'PERSISTENT_SPACE_END', 'PERSISTENT_SPACE_START', - 'PIPELINESTAT_START', 'PIPELINESTAT_STOP', 'PIPE_ID0', 'PIPE_ID1', - 'PIPE_ID2', 'PIPE_ID3', 'PIPE_PHYPLL_PIXEL_RATE_SOURCE', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYA', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYB', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYC', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYD', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYE', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYF', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYG', - 'PIPE_PIXEL_RATE_PLL_SOURCE', - 'PIPE_PIXEL_RATE_PLL_SOURCE_DISPPLL', - 'PIPE_PIXEL_RATE_PLL_SOURCE_PHYPLL', 'PIPE_PIXEL_RATE_SOURCE', - 'PIPE_PIXEL_RATE_SOURCE_P0PLL', 'PIPE_PIXEL_RATE_SOURCE_P1PLL', - 'PIPE_PIXEL_RATE_SOURCE_P2PLL', 'PIXEL_DEPTH_18BPP', - 'PIXEL_DEPTH_24BPP', 'PIXEL_DEPTH_30BPP', 'PIXEL_DEPTH_38BPP', - 'PIXEL_EXPAN_MODE_DYN_EXP', 'PIXEL_EXPAN_MODE_ZERO_EXP', - 'PIXEL_FORMAT_RGB_444', 'PIXEL_FORMAT_YCBCR_422', - 'PIXEL_FORMAT_YCBCR_444', 'PIXEL_FORMAT_Y_ONLY', - 'PIXEL_PIPE_OCCLUSION_COUNT_0', 'PIXEL_PIPE_OCCLUSION_COUNT_1', - 'PIXEL_PIPE_OCCLUSION_COUNT_2', 'PIXEL_PIPE_OCCLUSION_COUNT_3', - 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_0', - 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_1', - 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_0', - 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_1', 'PIXEL_PIPE_STAT_CONTROL', - 'PIXEL_PIPE_STAT_DUMP', 'PIXEL_PIPE_STAT_RESET', - 'PIXEL_PIPE_STRIDE_128_BITS', 'PIXEL_PIPE_STRIDE_256_BITS', - 'PIXEL_PIPE_STRIDE_32_BITS', 'PIXEL_PIPE_STRIDE_64_BITS', - 'PIXEL_REDUCE_MODE_ROUNDING', 'PIXEL_REDUCE_MODE_TRUNCATION', - 'PLL_CFG_IF_SOFT_RESET', 'PLL_CFG_IF_SOFT_RESET_FORCE', - 'PLL_CFG_IF_SOFT_RESET_NOOP', 'PM_ASSERT_RESET', - 'PM_ASSERT_RESET_0', 'PM_ASSERT_RESET_1', 'POINTLIST', - 'PRESCALE_MODE_BYPASS', 'PRESCALE_MODE_PROGRAM', - 'PRESCALE_MODE_UNITY', 'PROG_SEQ', 'PSLC_ASAP', 'PSLC_AUTO', - 'PSLC_COUNTDOWN', 'PSLC_ON_HANG_ONLY', 'PS_DONE', - 'PS_PARTIAL_FLUSH', 'PULSE_MODE_OPT_NO_HSA', - 'PULSE_MODE_OPT_SEND', 'PerfCounter_Vals', 'PipeConfig', - 'PipeInterleaveSize', 'PipeTiling', 'PixelPipeCounterId', - 'PixelPipeStride', 'PkrMap', 'PkrXsel', 'PkrXsel2', 'PkrYsel', - 'QuadExportFormat', 'QuadExportFormatOld', - 'RASTER_CONFIG_PKR_MAP_0', 'RASTER_CONFIG_PKR_MAP_1', - 'RASTER_CONFIG_PKR_MAP_2', 'RASTER_CONFIG_PKR_MAP_3', - 'RASTER_CONFIG_PKR_XSEL2_0', 'RASTER_CONFIG_PKR_XSEL2_1', - 'RASTER_CONFIG_PKR_XSEL2_2', 'RASTER_CONFIG_PKR_XSEL2_3', - 'RASTER_CONFIG_PKR_XSEL_0', 'RASTER_CONFIG_PKR_XSEL_1', - 'RASTER_CONFIG_PKR_XSEL_2', 'RASTER_CONFIG_PKR_XSEL_3', - 'RASTER_CONFIG_PKR_YSEL_0', 'RASTER_CONFIG_PKR_YSEL_1', - 'RASTER_CONFIG_PKR_YSEL_2', 'RASTER_CONFIG_PKR_YSEL_3', - 'RASTER_CONFIG_RB_MAP_0', 'RASTER_CONFIG_RB_MAP_1', - 'RASTER_CONFIG_RB_MAP_2', 'RASTER_CONFIG_RB_MAP_3', - 'RASTER_CONFIG_RB_XSEL2_0', 'RASTER_CONFIG_RB_XSEL2_1', - 'RASTER_CONFIG_RB_XSEL2_2', 'RASTER_CONFIG_RB_XSEL2_3', - 'RASTER_CONFIG_RB_XSEL_0', 'RASTER_CONFIG_RB_XSEL_1', - 'RASTER_CONFIG_RB_YSEL_0', 'RASTER_CONFIG_RB_YSEL_1', - 'RASTER_CONFIG_SC_MAP_0', 'RASTER_CONFIG_SC_MAP_1', - 'RASTER_CONFIG_SC_MAP_2', 'RASTER_CONFIG_SC_MAP_3', - 'RASTER_CONFIG_SC_XSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SC_XSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SC_XSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SC_XSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_8_WIDE_TILE', 'RASTER_CONFIG_SE_MAP_0', - 'RASTER_CONFIG_SE_MAP_1', 'RASTER_CONFIG_SE_MAP_2', - 'RASTER_CONFIG_SE_MAP_3', 'RASTER_CONFIG_SE_PAIR_MAP_0', - 'RASTER_CONFIG_SE_PAIR_MAP_1', 'RASTER_CONFIG_SE_PAIR_MAP_2', - 'RASTER_CONFIG_SE_PAIR_MAP_3', - 'RASTER_CONFIG_SE_PAIR_XSEL_128_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_XSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_XSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_XSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_XSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_128_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_128_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_128_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_8_WIDE_TILE', 'RAW', 'READ_256_BITS', - 'READ_512_BITS', 'READ_SEQ', 'RECTLIST', 'REFCLK_CLOCK_EN', - 'REFCLK_CLOCK_EN_ALLOW_SRC_SEL', 'REFCLK_CLOCK_EN_XTALIN_CLK', - 'REFCLK_SRC_SEL', 'REFCLK_SRC_SEL_CPL_REFCLK', - 'REFCLK_SRC_SEL_PCIE_REFCLK', 'REF_ALWAYS', 'REF_EQUAL', - 'REF_GEQUAL', 'REF_GREATER', 'REF_LEQUAL', 'REF_LESS', - 'REF_NEVER', 'REF_NOTEQUAL', 'RESERVED_ES', 'RESERVED_LS', - 'RESERVED_VS', 'RESET_TO_LOWEST_VGT', 'RESET_VTX_CNT', 'RE_Z', - 'RINGID0', 'RINGID1', 'RINGID2', 'RINGID3', - 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL', - 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_ENABLED', - 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL', - 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_ENABLED', - 'RMIPerfSel', 'RMI_CID', 'RMI_CID_CC', 'RMI_CID_CM', 'RMI_CID_DC', - 'RMI_CID_FC', 'RMI_CID_S', 'RMI_CID_TILE', 'RMI_CID_Z', - 'RMI_CID_ZPCPSD', 'RMI_PERF_SEL_BUSY', - 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTSB_RTR', - 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTSB_RTRB', - 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTS_RTR', - 'RMI_PERF_SEL_DEMUX_TCIW_FORMATTER_RTS_RTRB', - 'RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK0', - 'RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK1', - 'RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK2', - 'RMI_PERF_SEL_DEMUX_TCIW_RESIDENCY_NACK3', - 'RMI_PERF_SEL_DYN_CLK_CMN_VLD', 'RMI_PERF_SEL_DYN_CLK_PERF_VLD', - 'RMI_PERF_SEL_DYN_CLK_RB_VLD', 'RMI_PERF_SEL_EVENT_SEND', - 'RMI_PERF_SEL_LAT_FIFO_BLOCKING_REQ', - 'RMI_PERF_SEL_LAT_FIFO_FULL', - 'RMI_PERF_SEL_LAT_FIFO_NONBLOCKING_REQ', - 'RMI_PERF_SEL_LAT_FIFO_NUM_USED', 'RMI_PERF_SEL_NONE', - 'RMI_PERF_SEL_PERF_WINDOW', 'RMI_PERF_SEL_POP_DEMUX_RTSB_RTR', - 'RMI_PERF_SEL_POP_DEMUX_RTSB_RTRB', - 'RMI_PERF_SEL_POP_DEMUX_RTS_RTR', - 'RMI_PERF_SEL_POP_DEMUX_RTS_RTRB', - 'RMI_PERF_SEL_POP_XNACK_RTSB_RTR', - 'RMI_PERF_SEL_POP_XNACK_RTSB_RTRB', - 'RMI_PERF_SEL_POP_XNACK_RTS_RTR', - 'RMI_PERF_SEL_POP_XNACK_RTS_RTRB', - 'RMI_PERF_SEL_PROBEGEN_UTC_RTSB_RTR', - 'RMI_PERF_SEL_PROBEGEN_UTC_RTSB_RTRB', - 'RMI_PERF_SEL_PROBEGEN_UTC_RTS_RTR', - 'RMI_PERF_SEL_PROBEGEN_UTC_RTS_RTRB', - 'RMI_PERF_SEL_PROBE_UTCL1_ALL_FAULT', - 'RMI_PERF_SEL_PROBE_UTCL1_PRT_FAULT', - 'RMI_PERF_SEL_PROBE_UTCL1_XNACK_NORETRY_FAULT', - 'RMI_PERF_SEL_PROBE_UTCL1_XNACK_RETRY', - 'RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTSB_RTR', - 'RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTSB_RTRB', - 'RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTS_RTR', - 'RMI_PERF_SEL_PRTFIFO_RTNFORMATTER_RTS_RTRB', - 'RMI_PERF_SEL_PRT_FIFO_BUSY', 'RMI_PERF_SEL_PRT_FIFO_NUM_USED', - 'RMI_PERF_SEL_PRT_FIFO_REQ', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_ALL_CID', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID0', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID1', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID2', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID3', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID4', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID5', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID6', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_CID7', - 'RMI_PERF_SEL_RB_RMI_32BRDREQ_INFLIGHT_ALL_ORONE_CID', - 'RMI_PERF_SEL_RB_RMI_RDREQ_ALL_CID', - 'RMI_PERF_SEL_RB_RMI_RDREQ_BURST_ALL_ORONE_CID', - 'RMI_PERF_SEL_RB_RMI_RDREQ_BURST_LENGTH_ALL_ORONE_CID', - 'RMI_PERF_SEL_RB_RMI_RDREQ_BUSY', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID0', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID1', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID2', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID3', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID4', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID5', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID6', - 'RMI_PERF_SEL_RB_RMI_RDREQ_CID7', - 'RMI_PERF_SEL_RB_RMI_RDREQ_RESIDENCY', - 'RMI_PERF_SEL_RB_RMI_WRREQ_ALL_CID', - 'RMI_PERF_SEL_RB_RMI_WRREQ_BURST_ALL_ORONE_CID', - 'RMI_PERF_SEL_RB_RMI_WRREQ_BURST_LENGTH_ALL_ORONE_CID', - 'RMI_PERF_SEL_RB_RMI_WRREQ_BUSY', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID0', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID1', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID2', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID3', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID4', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID5', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID6', - 'RMI_PERF_SEL_RB_RMI_WRREQ_CID7', - 'RMI_PERF_SEL_RB_RMI_WRREQ_INFLIGHT_ALL_ORONE_CID', - 'RMI_PERF_SEL_RB_RMI_WRREQ_RESIDENCY', - 'RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTSB_RTR', - 'RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTSB_RTRB', - 'RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTS_RTR', - 'RMI_PERF_SEL_RDREQCONSUMER_XBAR_RDREQ_RTS_RTRB', - 'RMI_PERF_SEL_REG_CLK_VLD', 'RMI_PERF_SEL_REORDER_FIFO_BUSY', - 'RMI_PERF_SEL_REORDER_FIFO_REQ', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID0', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID1', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID10', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID11', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID12', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID13', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID14', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID15', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID2', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID3', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID4', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID5', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID6', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID7', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID8', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID9', - 'RMI_PERF_SEL_RMI_INVALIDATION_ATC_REQ_VMID_ALL', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID0', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID1', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID10', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID11', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID12', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID13', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID14', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID15', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID2', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID3', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID4', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID5', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID6', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID7', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID8', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID9', - 'RMI_PERF_SEL_RMI_INVALIDATION_REQ_START_FINISH_VMID_ALL', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_ALL_CID', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID0', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID1', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID2', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID3', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID4', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID5', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID6', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_CID7', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK0', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK1', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK2', - 'RMI_PERF_SEL_RMI_RB_32BRDRET_VALID_NACK3', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_ALL_CID', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID0', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID1', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID2', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID3', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID4', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID5', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID6', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_CID7', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK0', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK1', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK2', - 'RMI_PERF_SEL_RMI_RB_EARLY_WRACK_NACK3', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_ALL_CID', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID0', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID1', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID2', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID3', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID4', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID5', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID6', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_CID7', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK0', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK1', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK2', - 'RMI_PERF_SEL_RMI_RB_WRRET_VALID_NACK3', - 'RMI_PERF_SEL_RMI_TC_RDREQ_ALL_CID', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID0', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID1', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID2', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID3', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID4', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID5', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID6', - 'RMI_PERF_SEL_RMI_TC_RDREQ_CID7', - 'RMI_PERF_SEL_RMI_TC_RDREQ_INFLIGHT_ALL_CID', - 'RMI_PERF_SEL_RMI_TC_REQ_BUSY', - 'RMI_PERF_SEL_RMI_TC_WRREQ_ALL_CID', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID0', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID1', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID2', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID3', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID4', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID5', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID6', - 'RMI_PERF_SEL_RMI_TC_WRREQ_CID7', - 'RMI_PERF_SEL_RMI_TC_WRREQ_INFLIGHT_ALL_CID', - 'RMI_PERF_SEL_RMI_UTC_BUSY', 'RMI_PERF_SEL_RMI_UTC_REQ', - 'RMI_PERF_SEL_SKID_FIFO_BUSY', 'RMI_PERF_SEL_SKID_FIFO_DEPTH', - 'RMI_PERF_SEL_SKID_FIFO_IN_RTS', 'RMI_PERF_SEL_SKID_FIFO_IN_RTSB', - 'RMI_PERF_SEL_SKID_FIFO_OUT_RTS', - 'RMI_PERF_SEL_SKID_FIFO_OUT_RTSB', 'RMI_PERF_SEL_SKID_FIFO_REQ', - 'RMI_PERF_SEL_TCIW_BUSY', 'RMI_PERF_SEL_TCIW_INFLIGHT_COUNT', - 'RMI_PERF_SEL_TCIW_REQ', - 'RMI_PERF_SEL_TC_RMI_RDRET_VALID_ALL_CID', - 'RMI_PERF_SEL_TC_RMI_WRRET_VALID_ALL_CID', - 'RMI_PERF_SEL_UTCL1_BUSY', 'RMI_PERF_SEL_UTCL1_HIT_FIFO_FULL', - 'RMI_PERF_SEL_UTCL1_LFIFO_FULL', - 'RMI_PERF_SEL_UTCL1_PERMISSION_MISS', - 'RMI_PERF_SEL_UTCL1_REQUEST', - 'RMI_PERF_SEL_UTCL1_STALL_INFLIGHT_MAX', - 'RMI_PERF_SEL_UTCL1_STALL_LFIFO_NOT_RES', - 'RMI_PERF_SEL_UTCL1_STALL_LRU_INFLIGHT', - 'RMI_PERF_SEL_UTCL1_STALL_MISSFIFO_FULL', - 'RMI_PERF_SEL_UTCL1_STALL_MULTI_MISS', - 'RMI_PERF_SEL_UTCL1_STALL_UTCL2_REQ_OUT_OF_CREDITS', - 'RMI_PERF_SEL_UTCL1_TRANSLATION_MISS', - 'RMI_PERF_SEL_UTCL1_UTCL2_REQ', 'RMI_PERF_SEL_UTC_POP_RTSB_RTR', - 'RMI_PERF_SEL_UTC_POP_RTSB_RTRB', 'RMI_PERF_SEL_UTC_POP_RTS_RTR', - 'RMI_PERF_SEL_UTC_POP_RTS_RTRB', - 'RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTSB_RTR', - 'RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTSB_RTRB', - 'RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTS_RTR', - 'RMI_PERF_SEL_WRREQCONSUMER_XBAR_WRREQ_RTS_RTRB', - 'RMI_PERF_SEL_XBAR_PROBEGEN_CB_RTS_RTR', - 'RMI_PERF_SEL_XBAR_PROBEGEN_DB_RTS_RTR', - 'RMI_PERF_SEL_XBAR_PROBEGEN_IN0_RTS_RTR', - 'RMI_PERF_SEL_XBAR_PROBEGEN_IN1_RTS_RTR', - 'RMI_PERF_SEL_XBAR_PROBEGEN_READ_RTS_RTR', - 'RMI_PERF_SEL_XBAR_PROBEGEN_RTSB_RTR', - 'RMI_PERF_SEL_XBAR_PROBEGEN_RTSB_RTRB', - 'RMI_PERF_SEL_XBAR_PROBEGEN_RTS_RTR', - 'RMI_PERF_SEL_XBAR_PROBEGEN_RTS_RTRB', - 'RMI_PERF_SEL_XBAR_PROBEGEN_WRITE_RTS_RTR', - 'RMI_PERF_SEL_XNACK_FIFO_BUSY', 'RMI_PERF_SEL_XNACK_FIFO_FULL', - 'RMI_PERF_SEL_XNACK_FIFO_NUM_USED', - 'RMI_PERF_SEL_XNACK_PROBEGEN_RTSB_RTR', - 'RMI_PERF_SEL_XNACK_PROBEGEN_RTSB_RTRB', - 'RMI_PERF_SEL_XNACK_PROBEGEN_RTS_RTR', - 'RMI_PERF_SEL_XNACK_PROBEGEN_RTS_RTRB', 'ROM_SIGNATURE', - 'ROUND_BY_HALF', 'ROUND_TRUNCATE', 'RST_PIX_CNT', 'RSV_TAG_RAM', - 'RbMap', 'RbXsel', 'RbXsel2', 'RbYsel', 'ReadSize', 'Reserved142', - 'Reserved143', 'Reserved144', 'Reserved145', 'Reserved146', - 'Reserved147', 'Reserved148', 'Reserved149', 'Reserved18', - 'Reserved182', 'Reserved183', 'Reserved184', 'Reserved185', - 'Reserved186', 'Reserved187', 'Reserved188', 'Reserved189', - 'Reserved190', 'Reserved191', 'Reserved192', 'Reserved193', - 'Reserved194', 'Reserved195', 'Reserved196', 'Reserved197', - 'Reserved198', 'Reserved199', 'Reserved200', 'Reserved201', - 'Reserved202', 'Reserved203', 'Reserved204', 'Reserved205', - 'Reserved206', 'Reserved207', 'Reserved208', 'Reserved209', - 'Reserved210', 'Reserved211', 'Reserved212', 'Reserved213', - 'Reserved214', 'Reserved215', 'Reserved216', 'Reserved217', - 'Reserved218', 'Reserved219', 'Reserved23', 'Reserved252', - 'Reserved253', 'Reserved254', 'Reserved255', 'Reserved256', - 'Reserved257', 'Reserved258', 'Reserved259', 'Reserved26', - 'Reserved260', 'Reserved261', 'Reserved262', 'Reserved263', - 'Reserved264', 'Reserved265', 'Reserved266', 'Reserved267', - 'Reserved27', 'Reserved28', 'Reserved29', 'Reserved300', - 'Reserved301', 'Reserved302', 'Reserved303', 'Reserved304', - 'Reserved305', 'Reserved306', 'Reserved307', 'Reserved308', - 'Reserved309', 'Reserved310', 'Reserved311', 'Reserved312', - 'Reserved313', 'Reserved314', 'Reserved315', 'Reserved316', - 'Reserved317', 'Reserved318', 'Reserved319', 'Reserved320', - 'Reserved321', 'Reserved322', 'Reserved323', 'Reserved324', - 'Reserved325', 'Reserved326', 'Reserved327', 'Reserved328', - 'Reserved329', 'Reserved330', 'Reserved331', 'Reserved364', - 'Reserved365', 'Reserved366', 'Reserved367', 'Reserved368', - 'Reserved369', 'Reserved370', 'Reserved371', 'Reserved372', - 'Reserved373', 'Reserved374', 'Reserved375', 'Reserved376', - 'Reserved377', 'Reserved378', 'Reserved379', 'Reserved412', - 'Reserved413', 'Reserved414', 'Reserved415', 'Reserved416', - 'Reserved417', 'Reserved418', 'Reserved419', 'Reserved420', - 'Reserved421', 'Reserved422', 'Reserved423', 'Reserved424', - 'Reserved425', 'Reserved426', 'Reserved427', 'Reserved428', - 'Reserved429', 'Reserved430', 'Reserved431', 'Reserved432', - 'Reserved433', 'Reserved434', 'Reserved435', 'Reserved436', - 'Reserved437', 'Reserved438', 'Reserved439', 'Reserved440', - 'Reserved441', 'Reserved442', 'Reserved443', 'Reserved444', - 'Reserved445', 'Reserved446', 'Reserved447', 'Reserved448', - 'Reserved449', 'Reserved450', 'Reserved451', 'Reserved452', - 'Reserved453', 'Reserved454', 'Reserved455', 'Reserved456', - 'Reserved457', 'Reserved458', 'Reserved459', 'Reserved460', - 'Reserved461', 'Reserved462', 'Reserved463', 'Reserved464', - 'Reserved465', 'Reserved466', 'Reserved467', 'Reserved468', - 'Reserved469', 'Reserved470', 'Reserved471', 'Reserved472', - 'Reserved473', 'Reserved474', 'Reserved475', 'Reserved476', - 'Reserved477', 'Reserved478', 'Reserved479', 'Reserved480', - 'Reserved481', 'Reserved482', 'Reserved483', 'Reserved484', - 'Reserved485', 'Reserved486', 'Reserved487', 'Reserved488', - 'Reserved489', 'Reserved490', 'Reserved491', 'Reserved492', - 'Reserved493', 'Reserved494', 'Reserved495', 'Reserved496', - 'Reserved497', 'Reserved498', 'Reserved499', 'Reserved500', - 'Reserved501', 'Reserved502', 'Reserved503', 'Reserved504', - 'Reserved505', 'Reserved506', 'Reserved507', 'Reserved508', - 'Reserved509', 'Reserved510', 'Reserved511', 'Reserved_0x00', - 'Reserved_0x09', 'Reserved_0x3f', 'RingCounterControl', - 'RoundMode', 'RowSize', 'RowTiling', 'SAMPLE_PIPELINESTAT', - 'SAMPLE_STREAMOUTSTATS', 'SAMPLE_STREAMOUTSTATS1', - 'SAMPLE_STREAMOUTSTATS2', 'SAMPLE_STREAMOUTSTATS3', - 'SCLV_COEF_UPDATE_COMPLETE', 'SCLV_INTERLACE_SOURCE', - 'SCLV_MODE_RGB_BYPASS', 'SCLV_MODE_RGB_SCALING', 'SCLV_MODE_SEL', - 'SCLV_MODE_YCBCR_BYPASS', 'SCLV_MODE_YCBCR_SCALING', - 'SCLV_UPDATE_LOCK', 'SCL_ALU_DISABLE', 'SCL_ALU_DISABLED', - 'SCL_ALU_ENABLED', 'SCL_BOUNDARY_MODE', 'SCL_BOUNDARY_MODE_BLACK', - 'SCL_BOUNDARY_MODE_EDGE', 'SCL_BYPASS_MODE', - 'SCL_BYPASS_MODE_AC_AR', 'SCL_BYPASS_MODE_AC_NR', - 'SCL_BYPASS_MODE_MC_MR', 'SCL_BYPASS_MODE_RESERVED', - 'SCL_COEF_UPDATE_COMPLETE', 'SCL_COEF_UPDATE_COMPLETED', - 'SCL_COEF_UPDATE_NOT_COMPLETED', 'SCL_C_RAM_FILTER_TYPE', - 'SCL_C_RAM_FILTER_TYPE_HORI_CHROMA_LUT', - 'SCL_C_RAM_FILTER_TYPE_HORI_LUMA_RGB_LUT', - 'SCL_C_RAM_FILTER_TYPE_VERT_CHROMA_LUT', - 'SCL_C_RAM_FILTER_TYPE_VERT_LUMA_RGB_LUT', 'SCL_C_RAM_PHASE', - 'SCL_C_RAM_PHASE_0', 'SCL_C_RAM_PHASE_1', 'SCL_C_RAM_PHASE_2', - 'SCL_C_RAM_PHASE_3', 'SCL_C_RAM_PHASE_4', 'SCL_C_RAM_PHASE_5', - 'SCL_C_RAM_PHASE_6', 'SCL_C_RAM_PHASE_7', 'SCL_C_RAM_PHASE_8', - 'SCL_C_RAM_TAP_PAIR_ID0', 'SCL_C_RAM_TAP_PAIR_ID1', - 'SCL_C_RAM_TAP_PAIR_ID2', 'SCL_C_RAM_TAP_PAIR_ID3', - 'SCL_C_RAM_TAP_PAIR_ID4', 'SCL_C_RAM_TAP_PAIR_IDX', - 'SCL_EARLY_EOL_MOD', 'SCL_EARLY_EOL_MODE_CRTC', - 'SCL_EARLY_EOL_MODE_INTERNAL', 'SCL_HF_SHARP_DISABLE', - 'SCL_HF_SHARP_EN', 'SCL_HF_SHARP_ENABLE', - 'SCL_HF_SHARP_SCALE_FACTOR', 'SCL_HF_SHARP_SCALE_FACTOR_0', - 'SCL_HF_SHARP_SCALE_FACTOR_1', 'SCL_HF_SHARP_SCALE_FACTOR_2', - 'SCL_HF_SHARP_SCALE_FACTOR_3', 'SCL_HF_SHARP_SCALE_FACTOR_4', - 'SCL_HF_SHARP_SCALE_FACTOR_5', 'SCL_HF_SHARP_SCALE_FACTOR_6', - 'SCL_HF_SHARP_SCALE_FACTOR_7', - 'SCL_HOST_CONFLICT_DISABLE_INTERRUPT', - 'SCL_HOST_CONFLICT_ENABLE_INTERRUPT', 'SCL_HOST_CONFLICT_MASK', - 'SCL_H_2TAP_HARDCODE_COEF_DISABLE', 'SCL_H_2TAP_HARDCODE_COEF_EN', - 'SCL_H_2TAP_HARDCODE_COEF_ENABLE', - 'SCL_H_CALC_AUTO_RATIO_DISABLE', 'SCL_H_CALC_AUTO_RATIO_EN', - 'SCL_H_CALC_AUTO_RATIO_ENABLE', 'SCL_H_FILTER_PICK_NEAREST', - 'SCL_H_FILTER_PICK_NEAREST_DISABLE', - 'SCL_H_FILTER_PICK_NEAREST_ENABLE', - 'SCL_H_MANUAL_REPLICATE_FACTOR', - 'SCL_H_MANUAL_REPLICATE_FACTOR_1', - 'SCL_H_MANUAL_REPLICATE_FACTOR_10', - 'SCL_H_MANUAL_REPLICATE_FACTOR_11', - 'SCL_H_MANUAL_REPLICATE_FACTOR_12', - 'SCL_H_MANUAL_REPLICATE_FACTOR_13', - 'SCL_H_MANUAL_REPLICATE_FACTOR_14', - 'SCL_H_MANUAL_REPLICATE_FACTOR_15', - 'SCL_H_MANUAL_REPLICATE_FACTOR_16', - 'SCL_H_MANUAL_REPLICATE_FACTOR_2', - 'SCL_H_MANUAL_REPLICATE_FACTOR_3', - 'SCL_H_MANUAL_REPLICATE_FACTOR_4', - 'SCL_H_MANUAL_REPLICATE_FACTOR_5', - 'SCL_H_MANUAL_REPLICATE_FACTOR_6', - 'SCL_H_MANUAL_REPLICATE_FACTOR_7', - 'SCL_H_MANUAL_REPLICATE_FACTOR_8', - 'SCL_H_MANUAL_REPLICATE_FACTOR_9', 'SCL_H_NUM_OF_TAPS', - 'SCL_H_NUM_OF_TAPS_1', 'SCL_H_NUM_OF_TAPS_10', - 'SCL_H_NUM_OF_TAPS_2', 'SCL_H_NUM_OF_TAPS_4', - 'SCL_H_NUM_OF_TAPS_6', 'SCL_H_NUM_OF_TAPS_8', - 'SCL_MODE_CHANGE_DISABLE_INTERRUPT', - 'SCL_MODE_CHANGE_ENABLE_INTERRUPT', 'SCL_MODE_RGB_BYPASS', - 'SCL_MODE_RGB_SCALING', 'SCL_MODE_SEL', 'SCL_MODE_YCBCR_BYPASS', - 'SCL_MODE_YCBCR_SCALING', 'SCL_PSCL_DISABLE', 'SCL_PSCL_EN', - 'SCL_PSCL_ENANBLE', 'SCL_SCL_MODE_CHANGE_MASK', 'SCL_UPDATE_LOCK', - 'SCL_UPDATE_LOCKED', 'SCL_UPDATE_TAKEN', 'SCL_UPDATE_TAKEN_NO', - 'SCL_UPDATE_TAKEN_YES', 'SCL_UPDATE_UNLOCKED', - 'SCL_VF_SHARP_DISABLE', 'SCL_VF_SHARP_EN', 'SCL_VF_SHARP_ENABLE', - 'SCL_VF_SHARP_SCALE_FACTOR', 'SCL_VF_SHARP_SCALE_FACTOR_0', - 'SCL_VF_SHARP_SCALE_FACTOR_1', 'SCL_VF_SHARP_SCALE_FACTOR_2', - 'SCL_VF_SHARP_SCALE_FACTOR_3', 'SCL_VF_SHARP_SCALE_FACTOR_4', - 'SCL_VF_SHARP_SCALE_FACTOR_5', 'SCL_VF_SHARP_SCALE_FACTOR_6', - 'SCL_VF_SHARP_SCALE_FACTOR_7', 'SCL_V_2TAP_HARDCODE_COEF_DISABLE', - 'SCL_V_2TAP_HARDCODE_COEF_EN', 'SCL_V_2TAP_HARDCODE_COEF_ENABLE', - 'SCL_V_CALC_AUTO_RATIO_DISABLE', 'SCL_V_CALC_AUTO_RATIO_EN', - 'SCL_V_CALC_AUTO_RATIO_ENABLE', 'SCL_V_FILTER_PICK_NEAREST', - 'SCL_V_FILTER_PICK_NEAREST_DISABLE', - 'SCL_V_FILTER_PICK_NEAREST_ENABLE', - 'SCL_V_MANUAL_REPLICATE_FACTOR', - 'SCL_V_MANUAL_REPLICATE_FACTOR_1', - 'SCL_V_MANUAL_REPLICATE_FACTOR_10', - 'SCL_V_MANUAL_REPLICATE_FACTOR_11', - 'SCL_V_MANUAL_REPLICATE_FACTOR_12', - 'SCL_V_MANUAL_REPLICATE_FACTOR_13', - 'SCL_V_MANUAL_REPLICATE_FACTOR_14', - 'SCL_V_MANUAL_REPLICATE_FACTOR_15', - 'SCL_V_MANUAL_REPLICATE_FACTOR_16', - 'SCL_V_MANUAL_REPLICATE_FACTOR_2', - 'SCL_V_MANUAL_REPLICATE_FACTOR_3', - 'SCL_V_MANUAL_REPLICATE_FACTOR_4', - 'SCL_V_MANUAL_REPLICATE_FACTOR_5', - 'SCL_V_MANUAL_REPLICATE_FACTOR_6', - 'SCL_V_MANUAL_REPLICATE_FACTOR_7', - 'SCL_V_MANUAL_REPLICATE_FACTOR_8', - 'SCL_V_MANUAL_REPLICATE_FACTOR_9', 'SCL_V_NUM_OF_TAPS', - 'SCL_V_NUM_OF_TAPS_1', 'SCL_V_NUM_OF_TAPS_2', - 'SCL_V_NUM_OF_TAPS_3', 'SCL_V_NUM_OF_TAPS_4', - 'SCL_V_NUM_OF_TAPS_5', 'SCL_V_NUM_OF_TAPS_6', 'SC_BACKEND_BUSY', - 'SC_BB_DISCARD', 'SC_BM_BUSY', 'SC_BUSY_CNT_NOT_ZERO', - 'SC_BUSY_PROCESSING_MULTICYCLE_PRIM', 'SC_EARLYZ_QUAD_COUNT', - 'SC_EARLYZ_QUAD_WITH_1_PIX', 'SC_EARLYZ_QUAD_WITH_2_PIX', - 'SC_EARLYZ_QUAD_WITH_3_PIX', 'SC_EARLYZ_QUAD_WITH_4_PIX', - 'SC_EOP_SYNC_WINDOW', 'SC_GRP0_DYN_SCLK_BUSY', - 'SC_GRP1_DYN_SCLK_BUSY', 'SC_GRP2_DYN_SCLK_BUSY', - 'SC_GRP3_DYN_SCLK_BUSY', 'SC_GRP4_DYN_SCLK_BUSY', - 'SC_MULTICYCLE_BUBBLE_FREEZE', 'SC_P0_DETAIL_QUAD_COUNT', - 'SC_P0_DETAIL_QUAD_WITH_1_PIX', 'SC_P0_DETAIL_QUAD_WITH_2_PIX', - 'SC_P0_DETAIL_QUAD_WITH_3_PIX', 'SC_P0_DETAIL_QUAD_WITH_4_PIX', - 'SC_P0_HIZ_QUAD_COUNT', 'SC_P0_HIZ_QUAD_PER_TILE_H0', - 'SC_P0_HIZ_QUAD_PER_TILE_H1', 'SC_P0_HIZ_QUAD_PER_TILE_H10', - 'SC_P0_HIZ_QUAD_PER_TILE_H11', 'SC_P0_HIZ_QUAD_PER_TILE_H12', - 'SC_P0_HIZ_QUAD_PER_TILE_H13', 'SC_P0_HIZ_QUAD_PER_TILE_H14', - 'SC_P0_HIZ_QUAD_PER_TILE_H15', 'SC_P0_HIZ_QUAD_PER_TILE_H16', - 'SC_P0_HIZ_QUAD_PER_TILE_H2', 'SC_P0_HIZ_QUAD_PER_TILE_H3', - 'SC_P0_HIZ_QUAD_PER_TILE_H4', 'SC_P0_HIZ_QUAD_PER_TILE_H5', - 'SC_P0_HIZ_QUAD_PER_TILE_H6', 'SC_P0_HIZ_QUAD_PER_TILE_H7', - 'SC_P0_HIZ_QUAD_PER_TILE_H8', 'SC_P0_HIZ_QUAD_PER_TILE_H9', - 'SC_P0_HIZ_TILE_COUNT', 'SC_P1_DETAIL_QUAD_COUNT', - 'SC_P1_DETAIL_QUAD_WITH_1_PIX', 'SC_P1_DETAIL_QUAD_WITH_2_PIX', - 'SC_P1_DETAIL_QUAD_WITH_3_PIX', 'SC_P1_DETAIL_QUAD_WITH_4_PIX', - 'SC_P1_HIZ_QUAD_COUNT', 'SC_P1_HIZ_QUAD_PER_TILE_H0', - 'SC_P1_HIZ_QUAD_PER_TILE_H1', 'SC_P1_HIZ_QUAD_PER_TILE_H10', - 'SC_P1_HIZ_QUAD_PER_TILE_H11', 'SC_P1_HIZ_QUAD_PER_TILE_H12', - 'SC_P1_HIZ_QUAD_PER_TILE_H13', 'SC_P1_HIZ_QUAD_PER_TILE_H14', - 'SC_P1_HIZ_QUAD_PER_TILE_H15', 'SC_P1_HIZ_QUAD_PER_TILE_H16', - 'SC_P1_HIZ_QUAD_PER_TILE_H2', 'SC_P1_HIZ_QUAD_PER_TILE_H3', - 'SC_P1_HIZ_QUAD_PER_TILE_H4', 'SC_P1_HIZ_QUAD_PER_TILE_H5', - 'SC_P1_HIZ_QUAD_PER_TILE_H6', 'SC_P1_HIZ_QUAD_PER_TILE_H7', - 'SC_P1_HIZ_QUAD_PER_TILE_H8', 'SC_P1_HIZ_QUAD_PER_TILE_H9', - 'SC_P1_HIZ_TILE_COUNT', 'SC_P2_DETAIL_QUAD_COUNT', - 'SC_P2_DETAIL_QUAD_WITH_1_PIX', 'SC_P2_DETAIL_QUAD_WITH_2_PIX', - 'SC_P2_DETAIL_QUAD_WITH_3_PIX', 'SC_P2_DETAIL_QUAD_WITH_4_PIX', - 'SC_P2_HIZ_QUAD_COUNT', 'SC_P2_HIZ_QUAD_PER_TILE_H0', - 'SC_P2_HIZ_QUAD_PER_TILE_H1', 'SC_P2_HIZ_QUAD_PER_TILE_H10', - 'SC_P2_HIZ_QUAD_PER_TILE_H11', 'SC_P2_HIZ_QUAD_PER_TILE_H12', - 'SC_P2_HIZ_QUAD_PER_TILE_H13', 'SC_P2_HIZ_QUAD_PER_TILE_H14', - 'SC_P2_HIZ_QUAD_PER_TILE_H15', 'SC_P2_HIZ_QUAD_PER_TILE_H16', - 'SC_P2_HIZ_QUAD_PER_TILE_H2', 'SC_P2_HIZ_QUAD_PER_TILE_H3', - 'SC_P2_HIZ_QUAD_PER_TILE_H4', 'SC_P2_HIZ_QUAD_PER_TILE_H5', - 'SC_P2_HIZ_QUAD_PER_TILE_H6', 'SC_P2_HIZ_QUAD_PER_TILE_H7', - 'SC_P2_HIZ_QUAD_PER_TILE_H8', 'SC_P2_HIZ_QUAD_PER_TILE_H9', - 'SC_P2_HIZ_TILE_COUNT', 'SC_P3_DETAIL_QUAD_COUNT', - 'SC_P3_DETAIL_QUAD_WITH_1_PIX', 'SC_P3_DETAIL_QUAD_WITH_2_PIX', - 'SC_P3_DETAIL_QUAD_WITH_3_PIX', 'SC_P3_DETAIL_QUAD_WITH_4_PIX', - 'SC_P3_HIZ_QUAD_COUNT', 'SC_P3_HIZ_QUAD_PER_TILE_H0', - 'SC_P3_HIZ_QUAD_PER_TILE_H1', 'SC_P3_HIZ_QUAD_PER_TILE_H10', - 'SC_P3_HIZ_QUAD_PER_TILE_H11', 'SC_P3_HIZ_QUAD_PER_TILE_H12', - 'SC_P3_HIZ_QUAD_PER_TILE_H13', 'SC_P3_HIZ_QUAD_PER_TILE_H14', - 'SC_P3_HIZ_QUAD_PER_TILE_H15', 'SC_P3_HIZ_QUAD_PER_TILE_H16', - 'SC_P3_HIZ_QUAD_PER_TILE_H2', 'SC_P3_HIZ_QUAD_PER_TILE_H3', - 'SC_P3_HIZ_QUAD_PER_TILE_H4', 'SC_P3_HIZ_QUAD_PER_TILE_H5', - 'SC_P3_HIZ_QUAD_PER_TILE_H6', 'SC_P3_HIZ_QUAD_PER_TILE_H7', - 'SC_P3_HIZ_QUAD_PER_TILE_H8', 'SC_P3_HIZ_QUAD_PER_TILE_H9', - 'SC_P3_HIZ_TILE_COUNT', 'SC_PA0_PS_DATA_SEND', - 'SC_PA0_SC_DATA_FIFO_EOPG_RD', 'SC_PA0_SC_DATA_FIFO_EOP_RD', - 'SC_PA0_SC_DATA_FIFO_RD', 'SC_PA0_SC_DATA_FIFO_WE', - 'SC_PA0_SC_DEALLOC_0_RD', 'SC_PA0_SC_DEALLOC_1_RD', - 'SC_PA0_SC_EOPG_WE', 'SC_PA0_SC_EOP_WE', 'SC_PA0_SC_EVENT_WE', - 'SC_PA0_SC_FPOV_WE', 'SC_PA0_SC_LPOV_WE', - 'SC_PA0_SC_NULL_DEALLOC_WE', 'SC_PA0_SC_NULL_WE', - 'SC_PA1_PS_DATA_SEND', 'SC_PA1_SC_DATA_FIFO_EOPG_RD', - 'SC_PA1_SC_DATA_FIFO_EOP_RD', 'SC_PA1_SC_DATA_FIFO_RD', - 'SC_PA1_SC_DATA_FIFO_WE', 'SC_PA1_SC_DEALLOC_0_RD', - 'SC_PA1_SC_DEALLOC_1_RD', 'SC_PA1_SC_EOPG_WE', 'SC_PA1_SC_EOP_WE', - 'SC_PA1_SC_EVENT_WE', 'SC_PA1_SC_FPOV_WE', 'SC_PA1_SC_LPOV_WE', - 'SC_PA1_SC_NULL_DEALLOC_WE', 'SC_PA1_SC_NULL_WE', - 'SC_PA2_PS_DATA_SEND', 'SC_PA2_SC_DATA_FIFO_EOPG_RD', - 'SC_PA2_SC_DATA_FIFO_EOP_RD', 'SC_PA2_SC_DATA_FIFO_RD', - 'SC_PA2_SC_DATA_FIFO_WE', 'SC_PA2_SC_DEALLOC_0_RD', - 'SC_PA2_SC_DEALLOC_1_RD', 'SC_PA2_SC_EOPG_WE', 'SC_PA2_SC_EOP_WE', - 'SC_PA2_SC_EVENT_WE', 'SC_PA2_SC_FPOV_WE', 'SC_PA2_SC_LPOV_WE', - 'SC_PA2_SC_NULL_DEALLOC_WE', 'SC_PA2_SC_NULL_WE', - 'SC_PA3_PS_DATA_SEND', 'SC_PA3_SC_DATA_FIFO_EOPG_RD', - 'SC_PA3_SC_DATA_FIFO_EOP_RD', 'SC_PA3_SC_DATA_FIFO_RD', - 'SC_PA3_SC_DATA_FIFO_WE', 'SC_PA3_SC_DEALLOC_0_RD', - 'SC_PA3_SC_DEALLOC_1_RD', 'SC_PA3_SC_EOPG_WE', 'SC_PA3_SC_EOP_WE', - 'SC_PA3_SC_EVENT_WE', 'SC_PA3_SC_FPOV_WE', 'SC_PA3_SC_LPOV_WE', - 'SC_PA3_SC_NULL_DEALLOC_WE', 'SC_PA3_SC_NULL_WE', - 'SC_PA_SC_DEALLOC_0_0_WE', 'SC_PA_SC_DEALLOC_0_1_WE', - 'SC_PA_SC_DEALLOC_1_0_WE', 'SC_PA_SC_DEALLOC_1_1_WE', - 'SC_PA_SC_DEALLOC_2_0_WE', 'SC_PA_SC_DEALLOC_2_1_WE', - 'SC_PA_SC_DEALLOC_3_0_WE', 'SC_PA_SC_DEALLOC_3_1_WE', - 'SC_PBB_BATCH_BREAK_DUE_TO_CONTEXT_STATE', - 'SC_PBB_BATCH_BREAK_DUE_TO_EVENT', - 'SC_PBB_BATCH_BREAK_DUE_TO_FPOV_LIMIT', - 'SC_PBB_BATCH_BREAK_DUE_TO_PC_STORAGE', - 'SC_PBB_BATCH_BREAK_DUE_TO_PERSISTENT_STATE', - 'SC_PBB_BATCH_BREAK_DUE_TO_PRIM', - 'SC_PBB_BATCH_HIST_NUM_COLUMNS_PER_ROW', - 'SC_PBB_BATCH_HIST_NUM_CONTEXTS', - 'SC_PBB_BATCH_HIST_NUM_PERSISTENT_STATES', - 'SC_PBB_BATCH_HIST_NUM_PRIMS', - 'SC_PBB_BATCH_HIST_NUM_PS_WAVE_BREAKS', - 'SC_PBB_BATCH_HIST_NUM_ROWS_PER_PRIM', - 'SC_PBB_BATCH_HIST_NUM_TRIV_REJECTED_PRIMS', - 'SC_PBB_BIN_HIST_NUM_CONTEXTS', - 'SC_PBB_BIN_HIST_NUM_PERSISTENT_STATES', - 'SC_PBB_BIN_HIST_NUM_PRIMS', 'SC_PBB_BUSY', 'SC_PBB_BUSY_AND_RTR', - 'SC_PBB_END_OF_BATCH', 'SC_PBB_END_OF_BIN', - 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_COLUMN', - 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_ROW', - 'SC_PBB_IDLE_CLK_DUE_TO_ROW_TO_COLUMN_TRANSITION', - 'SC_PBB_NONBINNED_PRIM', 'SC_PBB_NUM_BINS', - 'SC_PBB_PRIMBIN_PROCESSED', 'SC_PBB_PRIM_ADDED_TO_BATCH', - 'SC_PBB_STALLS_PA_DUE_TO_NO_TILES', - 'SC_PBB_TOTAL_NULL_PRIMS_OUT_OF_PBB', - 'SC_PBB_TOTAL_REAL_PRIMS_OUT_OF_PBB', 'SC_PERFCNT_SEL', - 'SC_PKR_4X2_FILL_QUAD', 'SC_PKR_4X2_QUAD_SPLIT', - 'SC_PKR_CONTROL_XFER', 'SC_PKR_DBHANG_FORCE_EOV', - 'SC_PKR_END_OF_VECTOR', 'SC_PKR_QUAD_OVERLAP_FOUND_IN_WAVE_TABLE', - 'SC_PKR_QUAD_OVERLAP_NOT_FOUND_IN_WAVE_TABLE', - 'SC_PKR_QUAD_PER_ROW_H1', 'SC_PKR_QUAD_PER_ROW_H2', - 'SC_POPS_FORCE_EOV', 'SC_POPS_INTRA_WAVE_OVERLAPS', - 'SC_PSSW_WINDOW_VALID', 'SC_PSSW_WINDOW_VALID_BUSY', - 'SC_PS_ARB_EOP_POP_SYNC_POP', 'SC_PS_ARB_EVENT_SYNC_POP', - 'SC_PS_ARB_NULL_PRIM_BUBBLE_POP', - 'SC_PS_ARB_OOO_FIFO_EMPTY_SWITCH', - 'SC_PS_ARB_OOO_THRESHOLD_SWITCH_TO_DESIRED_FIFO', - 'SC_PS_ARB_PA_SC_BUSY', 'SC_PS_ARB_SC_BUSY', - 'SC_PS_ARB_STALLED_FROM_BELOW', 'SC_PS_ARB_STARVED_FROM_ABOVE', - 'SC_PS_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'SC_PS_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'SC_PS_ARB_XFC_ONLY_PRIM_CYCLES', 'SC_PS_CTX_DONE_FIFO_POP', - 'SC_PS_CTX_DONE_FIFO_PUSH', 'SC_PS_PA0_SC_FIFO_EMPTY', - 'SC_PS_PA0_SC_FIFO_FULL', 'SC_PS_PA1_SC_FIFO_EMPTY', - 'SC_PS_PA1_SC_FIFO_FULL', 'SC_PS_PA2_SC_FIFO_EMPTY', - 'SC_PS_PA2_SC_FIFO_FULL', 'SC_PS_PA3_SC_FIFO_EMPTY', - 'SC_PS_PA3_SC_FIFO_FULL', 'SC_PS_TS_EVENT_FIFO_POP', - 'SC_PS_TS_EVENT_FIFO_PUSH', 'SC_QZ0_MULTI_GPU_TILE_DISCARD', - 'SC_QZ0_QUAD_COUNT', 'SC_QZ0_QUAD_PER_TILE_H0', - 'SC_QZ0_QUAD_PER_TILE_H1', 'SC_QZ0_QUAD_PER_TILE_H10', - 'SC_QZ0_QUAD_PER_TILE_H11', 'SC_QZ0_QUAD_PER_TILE_H12', - 'SC_QZ0_QUAD_PER_TILE_H13', 'SC_QZ0_QUAD_PER_TILE_H14', - 'SC_QZ0_QUAD_PER_TILE_H15', 'SC_QZ0_QUAD_PER_TILE_H16', - 'SC_QZ0_QUAD_PER_TILE_H2', 'SC_QZ0_QUAD_PER_TILE_H3', - 'SC_QZ0_QUAD_PER_TILE_H4', 'SC_QZ0_QUAD_PER_TILE_H5', - 'SC_QZ0_QUAD_PER_TILE_H6', 'SC_QZ0_QUAD_PER_TILE_H7', - 'SC_QZ0_QUAD_PER_TILE_H8', 'SC_QZ0_QUAD_PER_TILE_H9', - 'SC_QZ0_TILE_COUNT', 'SC_QZ0_TILE_COVERED_COUNT', - 'SC_QZ0_TILE_NOT_COVERED_COUNT', 'SC_QZ1_MULTI_GPU_TILE_DISCARD', - 'SC_QZ1_QUAD_COUNT', 'SC_QZ1_QUAD_PER_TILE_H0', - 'SC_QZ1_QUAD_PER_TILE_H1', 'SC_QZ1_QUAD_PER_TILE_H10', - 'SC_QZ1_QUAD_PER_TILE_H11', 'SC_QZ1_QUAD_PER_TILE_H12', - 'SC_QZ1_QUAD_PER_TILE_H13', 'SC_QZ1_QUAD_PER_TILE_H14', - 'SC_QZ1_QUAD_PER_TILE_H15', 'SC_QZ1_QUAD_PER_TILE_H16', - 'SC_QZ1_QUAD_PER_TILE_H2', 'SC_QZ1_QUAD_PER_TILE_H3', - 'SC_QZ1_QUAD_PER_TILE_H4', 'SC_QZ1_QUAD_PER_TILE_H5', - 'SC_QZ1_QUAD_PER_TILE_H6', 'SC_QZ1_QUAD_PER_TILE_H7', - 'SC_QZ1_QUAD_PER_TILE_H8', 'SC_QZ1_QUAD_PER_TILE_H9', - 'SC_QZ1_TILE_COUNT', 'SC_QZ1_TILE_COVERED_COUNT', - 'SC_QZ1_TILE_NOT_COVERED_COUNT', 'SC_QZ2_MULTI_GPU_TILE_DISCARD', - 'SC_QZ2_QUAD_COUNT', 'SC_QZ2_QUAD_PER_TILE_H0', - 'SC_QZ2_QUAD_PER_TILE_H1', 'SC_QZ2_QUAD_PER_TILE_H10', - 'SC_QZ2_QUAD_PER_TILE_H11', 'SC_QZ2_QUAD_PER_TILE_H12', - 'SC_QZ2_QUAD_PER_TILE_H13', 'SC_QZ2_QUAD_PER_TILE_H14', - 'SC_QZ2_QUAD_PER_TILE_H15', 'SC_QZ2_QUAD_PER_TILE_H16', - 'SC_QZ2_QUAD_PER_TILE_H2', 'SC_QZ2_QUAD_PER_TILE_H3', - 'SC_QZ2_QUAD_PER_TILE_H4', 'SC_QZ2_QUAD_PER_TILE_H5', - 'SC_QZ2_QUAD_PER_TILE_H6', 'SC_QZ2_QUAD_PER_TILE_H7', - 'SC_QZ2_QUAD_PER_TILE_H8', 'SC_QZ2_QUAD_PER_TILE_H9', - 'SC_QZ2_TILE_COUNT', 'SC_QZ2_TILE_COVERED_COUNT', - 'SC_QZ2_TILE_NOT_COVERED_COUNT', 'SC_QZ3_MULTI_GPU_TILE_DISCARD', - 'SC_QZ3_QUAD_COUNT', 'SC_QZ3_QUAD_PER_TILE_H0', - 'SC_QZ3_QUAD_PER_TILE_H1', 'SC_QZ3_QUAD_PER_TILE_H10', - 'SC_QZ3_QUAD_PER_TILE_H11', 'SC_QZ3_QUAD_PER_TILE_H12', - 'SC_QZ3_QUAD_PER_TILE_H13', 'SC_QZ3_QUAD_PER_TILE_H14', - 'SC_QZ3_QUAD_PER_TILE_H15', 'SC_QZ3_QUAD_PER_TILE_H16', - 'SC_QZ3_QUAD_PER_TILE_H2', 'SC_QZ3_QUAD_PER_TILE_H3', - 'SC_QZ3_QUAD_PER_TILE_H4', 'SC_QZ3_QUAD_PER_TILE_H5', - 'SC_QZ3_QUAD_PER_TILE_H6', 'SC_QZ3_QUAD_PER_TILE_H7', - 'SC_QZ3_QUAD_PER_TILE_H8', 'SC_QZ3_QUAD_PER_TILE_H9', - 'SC_QZ3_TILE_COUNT', 'SC_QZ3_TILE_COVERED_COUNT', - 'SC_QZ3_TILE_NOT_COVERED_COUNT', 'SC_QZQP_WINDOW_VALID', - 'SC_QZQP_WINDOW_VALID_BUSY', 'SC_REG_SCLK_BUSY', 'SC_SCB_BUSY', - 'SC_SCF_SCB_INTERFACE_BUSY', 'SC_SCISSOR_DISCARD', - 'SC_SC_PS_ENG_MULTICYCLE_BUBBLE', 'SC_SC_SPI_DEALLOC_0_0', - 'SC_SC_SPI_DEALLOC_0_1', 'SC_SC_SPI_DEALLOC_0_2', - 'SC_SC_SPI_DEALLOC_1_0', 'SC_SC_SPI_DEALLOC_1_1', - 'SC_SC_SPI_DEALLOC_1_2', 'SC_SC_SPI_DEALLOC_2_0', - 'SC_SC_SPI_DEALLOC_2_1', 'SC_SC_SPI_DEALLOC_2_2', - 'SC_SC_SPI_DEALLOC_3_0', 'SC_SC_SPI_DEALLOC_3_1', - 'SC_SC_SPI_DEALLOC_3_2', 'SC_SC_SPI_EVENT', 'SC_SC_SPI_FPOV_0', - 'SC_SC_SPI_FPOV_1', 'SC_SC_SPI_FPOV_2', 'SC_SC_SPI_FPOV_3', - 'SC_SEND_DB_VPZ', 'SC_SRPS_WINDOW_VALID', - 'SC_SRPS_WINDOW_VALID_BUSY', 'SC_STALLED_BY_BCI', - 'SC_STALLED_BY_DB_QUAD', 'SC_STALLED_BY_DB_TILE', - 'SC_STALLED_BY_PRIMFIFO', 'SC_STALLED_BY_QUADFIFO', - 'SC_STALLED_BY_SPI', 'SC_STALLED_BY_TILEFIFO', - 'SC_STALLED_BY_TILEORDERFIFO', 'SC_STARVED_BY_DB_QUAD', - 'SC_STARVED_BY_DB_TILE', 'SC_STARVED_BY_PA', - 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_FULL', - 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_NOT_EMPTY', - 'SC_SUPERTILE_COUNT', 'SC_SUPERTILE_PER_PRIM_H0', - 'SC_SUPERTILE_PER_PRIM_H1', 'SC_SUPERTILE_PER_PRIM_H10', - 'SC_SUPERTILE_PER_PRIM_H11', 'SC_SUPERTILE_PER_PRIM_H12', - 'SC_SUPERTILE_PER_PRIM_H13', 'SC_SUPERTILE_PER_PRIM_H14', - 'SC_SUPERTILE_PER_PRIM_H15', 'SC_SUPERTILE_PER_PRIM_H16', - 'SC_SUPERTILE_PER_PRIM_H2', 'SC_SUPERTILE_PER_PRIM_H3', - 'SC_SUPERTILE_PER_PRIM_H4', 'SC_SUPERTILE_PER_PRIM_H5', - 'SC_SUPERTILE_PER_PRIM_H6', 'SC_SUPERTILE_PER_PRIM_H7', - 'SC_SUPERTILE_PER_PRIM_H8', 'SC_SUPERTILE_PER_PRIM_H9', - 'SC_TILE_PER_PRIM_H0', 'SC_TILE_PER_PRIM_H1', - 'SC_TILE_PER_PRIM_H10', 'SC_TILE_PER_PRIM_H11', - 'SC_TILE_PER_PRIM_H12', 'SC_TILE_PER_PRIM_H13', - 'SC_TILE_PER_PRIM_H14', 'SC_TILE_PER_PRIM_H15', - 'SC_TILE_PER_PRIM_H16', 'SC_TILE_PER_PRIM_H2', - 'SC_TILE_PER_PRIM_H3', 'SC_TILE_PER_PRIM_H4', - 'SC_TILE_PER_PRIM_H5', 'SC_TILE_PER_PRIM_H6', - 'SC_TILE_PER_PRIM_H7', 'SC_TILE_PER_PRIM_H8', - 'SC_TILE_PER_PRIM_H9', 'SC_TILE_PER_SUPERTILE_H0', - 'SC_TILE_PER_SUPERTILE_H1', 'SC_TILE_PER_SUPERTILE_H10', - 'SC_TILE_PER_SUPERTILE_H11', 'SC_TILE_PER_SUPERTILE_H12', - 'SC_TILE_PER_SUPERTILE_H13', 'SC_TILE_PER_SUPERTILE_H14', - 'SC_TILE_PER_SUPERTILE_H15', 'SC_TILE_PER_SUPERTILE_H16', - 'SC_TILE_PER_SUPERTILE_H2', 'SC_TILE_PER_SUPERTILE_H3', - 'SC_TILE_PER_SUPERTILE_H4', 'SC_TILE_PER_SUPERTILE_H5', - 'SC_TILE_PER_SUPERTILE_H6', 'SC_TILE_PER_SUPERTILE_H7', - 'SC_TILE_PER_SUPERTILE_H8', 'SC_TILE_PER_SUPERTILE_H9', - 'SC_TILE_PICKED_H1', 'SC_TILE_PICKED_H2', 'SC_TILE_PICKED_H3', - 'SC_TILE_PICKED_H4', 'SC_TPQZ_WINDOW_VALID', - 'SC_TPQZ_WINDOW_VALID_BUSY', 'SC_TRPK_WINDOW_VALID', - 'SC_TRPK_WINDOW_VALID_BUSY', 'SDMA_PERF_SEL', - 'SDMA_PERF_SEL_ATCL2_FREE', 'SDMA_PERF_SEL_ATCL2_INVREQ_FLUSH', - 'SDMA_PERF_SEL_ATCL2_INVREQ_NFLUSH', - 'SDMA_PERF_SEL_ATCL2_RET_ACK', 'SDMA_PERF_SEL_ATCL2_RET_XNACK', - 'SDMA_PERF_SEL_CE_AFIFO_FULL', 'SDMA_PERF_SEL_CE_DST_IDLE', - 'SDMA_PERF_SEL_CE_INFO1_FULL', 'SDMA_PERF_SEL_CE_INFO_FULL', - 'SDMA_PERF_SEL_CE_IN_IDLE', 'SDMA_PERF_SEL_CE_L1_STALL', - 'SDMA_PERF_SEL_CE_L1_WR_VLD', 'SDMA_PERF_SEL_CE_OUT_IDLE', - 'SDMA_PERF_SEL_CE_RD_STALL', 'SDMA_PERF_SEL_CE_RREQ_IDLE', - 'SDMA_PERF_SEL_CE_SPLIT_IDLE', 'SDMA_PERF_SEL_CE_WREQ_IDLE', - 'SDMA_PERF_SEL_CE_WR_IDLE', 'SDMA_PERF_SEL_CE_WR_STALL', - 'SDMA_PERF_SEL_CTX_CHANGE', 'SDMA_PERF_SEL_CTX_CHANGE_EXCEPTION', - 'SDMA_PERF_SEL_CTX_CHANGE_EXPIRED', 'SDMA_PERF_SEL_CYCLE', - 'SDMA_PERF_SEL_DMA_L1_RD_SEND', 'SDMA_PERF_SEL_DMA_L1_WR_SEND', - 'SDMA_PERF_SEL_DMA_MC_RD_SEND', 'SDMA_PERF_SEL_DMA_MC_WR_SEND', - 'SDMA_PERF_SEL_DOORBELL', 'SDMA_PERF_SEL_EX_IDLE', - 'SDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 'SDMA_PERF_SEL_F32_L1_WR_VLD', 'SDMA_PERF_SEL_GFX_SELECT', - 'SDMA_PERF_SEL_IB_CMD_FULL', 'SDMA_PERF_SEL_IB_CMD_IDLE', - 'SDMA_PERF_SEL_IDLE', 'SDMA_PERF_SEL_INT_IDLE', - 'SDMA_PERF_SEL_INT_REQ_COUNT', 'SDMA_PERF_SEL_INT_REQ_STALL', - 'SDMA_PERF_SEL_INT_RESP_ACCEPTED', 'SDMA_PERF_SEL_INT_RESP_RETRY', - 'SDMA_PERF_SEL_IS_INVREQ_ADDR_RD', - 'SDMA_PERF_SEL_IS_INVREQ_ADDR_WR', 'SDMA_PERF_SEL_L1_INV_MIDDLE', - 'SDMA_PERF_SEL_L1_RDL2_IDLE', 'SDMA_PERF_SEL_L1_RDMC_IDLE', - 'SDMA_PERF_SEL_L1_RD_FIFO_IDLE', 'SDMA_PERF_SEL_L1_RD_INV_EN', - 'SDMA_PERF_SEL_L1_RD_INV_IDLE', 'SDMA_PERF_SEL_L1_RD_WAIT_INVADR', - 'SDMA_PERF_SEL_L1_RD_XNACK_TIMEOUT', 'SDMA_PERF_SEL_L1_WRL2_IDLE', - 'SDMA_PERF_SEL_L1_WRMC_IDLE', 'SDMA_PERF_SEL_L1_WR_FIFO_IDLE', - 'SDMA_PERF_SEL_L1_WR_INV_EN', 'SDMA_PERF_SEL_L1_WR_INV_IDLE', - 'SDMA_PERF_SEL_L1_WR_WAIT_INVADR', - 'SDMA_PERF_SEL_L1_WR_XNACK_TIMEOUT', 'SDMA_PERF_SEL_MC_RD_COUNT', - 'SDMA_PERF_SEL_MC_RD_IDLE', 'SDMA_PERF_SEL_MC_RD_NO_POLL_IDLE', - 'SDMA_PERF_SEL_MC_RD_RET_STALL', 'SDMA_PERF_SEL_MC_WR_COUNT', - 'SDMA_PERF_SEL_MC_WR_IDLE', - 'SDMA_PERF_SEL_MMHUB_TAG_DELAY_COUNTER', - 'SDMA_PERF_SEL_NUM_PACKET', 'SDMA_PERF_SEL_PAGE_SELECT', - 'SDMA_PERF_SEL_RB_CMD_FULL', 'SDMA_PERF_SEL_RB_CMD_IDLE', - 'SDMA_PERF_SEL_RB_EMPTY', 'SDMA_PERF_SEL_RB_FULL', - 'SDMA_PERF_SEL_RB_RPTR_WB', 'SDMA_PERF_SEL_RB_RPTR_WRAP', - 'SDMA_PERF_SEL_RB_WPTR_POLL_READ', 'SDMA_PERF_SEL_RB_WPTR_WRAP', - 'SDMA_PERF_SEL_RD_BA_RTR', 'SDMA_PERF_SEL_REG_IDLE', - 'SDMA_PERF_SEL_RLC0_SELECT', 'SDMA_PERF_SEL_RLC1_SELECT', - 'SDMA_PERF_SEL_SDMA_ATCL2_SEND', - 'SDMA_PERF_SEL_SDMA_INVACK_FLUSH', - 'SDMA_PERF_SEL_SDMA_INVACK_NFLUSH', 'SDMA_PERF_SEL_SEM_IDLE', - 'SDMA_PERF_SEL_SEM_REQ_COUNT', 'SDMA_PERF_SEL_SEM_REQ_STALL', - 'SDMA_PERF_SEL_SEM_RESP_FAIL', - 'SDMA_PERF_SEL_SEM_RESP_INCOMPLETE', - 'SDMA_PERF_SEL_SEM_RESP_PASS', 'SDMA_PERF_SEL_SRBM_REG_SEND', - 'SDMA_PERF_SEL_UTCL1_TAG_DELAY_COUNTER', - 'SDMA_PERF_SEL_WR_BA_RTR', 'SEC_GSP0_PRIORITY_HIGH', - 'SEC_GSP0_PRIORITY_LOW', 'SEM_ECC_ERROR', 'SEM_FAILED', - 'SEM_PASSED', 'SEM_PERF_SEL', 'SEM_PERF_SEL_ACP_REQ_SIGNAL', - 'SEM_PERF_SEL_ACP_REQ_WAIT', 'SEM_PERF_SEL_ATC_INVALIDATION', - 'SEM_PERF_SEL_ATC_REQ', 'SEM_PERF_SEL_ATC_RET', - 'SEM_PERF_SEL_ATC_XNACK', 'SEM_PERF_SEL_CPC1_IMME_E0_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC1_IMME_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_IMME_E1_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC1_IMME_E1_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_IMME_E2_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC1_IMME_E2_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_IMME_E3_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC1_IMME_E3_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E0_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E10_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E10_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E11_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E11_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E12_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E12_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E13_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E13_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E14_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E14_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E15_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E15_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E16_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E16_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E17_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E17_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E18_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E18_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E19_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E19_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E1_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E1_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E20_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E20_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E21_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E21_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E22_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E22_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E23_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E23_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E24_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E24_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E25_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E25_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E26_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E26_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E27_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E27_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E28_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E28_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E29_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E29_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E2_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E2_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E30_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E30_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E31_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E31_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E3_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E3_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E4_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E4_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E5_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E5_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E6_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E6_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E7_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E7_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E8_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E8_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E9_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E9_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_IMME_E0_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC2_IMME_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_IMME_E1_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC2_IMME_E1_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_IMME_E2_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC2_IMME_E2_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_IMME_E3_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC2_IMME_E3_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E0_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E10_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E10_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E11_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E11_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E12_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E12_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E13_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E13_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E14_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E14_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E15_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E15_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E16_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E16_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E17_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E17_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E18_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E18_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E19_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E19_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E1_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E1_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E20_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E20_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E21_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E21_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E22_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E22_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E23_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E23_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E24_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E24_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E25_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E25_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E26_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E26_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E27_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E27_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E28_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E28_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E29_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E29_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E2_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E2_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E30_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E30_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E31_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E31_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E3_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E3_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E4_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E4_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E5_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E5_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E6_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E6_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E7_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E7_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E8_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E8_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E9_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E9_REQ_WAIT', - 'SEM_PERF_SEL_CPG_E0_REQ_SIGNAL', 'SEM_PERF_SEL_CPG_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPG_E1_REQ_SIGNAL', 'SEM_PERF_SEL_CPG_E1_REQ_WAIT', - 'SEM_PERF_SEL_CYCLE', 'SEM_PERF_SEL_IDLE', - 'SEM_PERF_SEL_ISP_REQ_SIGNAL', 'SEM_PERF_SEL_ISP_REQ_WAIT', - 'SEM_PERF_SEL_MC_RD_REQ', 'SEM_PERF_SEL_MC_RD_RET', - 'SEM_PERF_SEL_MC_WR_REQ', 'SEM_PERF_SEL_MC_WR_RET', - 'SEM_PERF_SEL_SDMA0_REQ_SIGNAL', 'SEM_PERF_SEL_SDMA0_REQ_WAIT', - 'SEM_PERF_SEL_SDMA1_REQ_SIGNAL', 'SEM_PERF_SEL_SDMA1_REQ_WAIT', - 'SEM_PERF_SEL_UVD_REQ_SIGNAL', 'SEM_PERF_SEL_UVD_REQ_WAIT', - 'SEM_PERF_SEL_VCE0_REQ_SIGNAL', 'SEM_PERF_SEL_VCE0_REQ_WAIT', - 'SEM_PERF_SEL_VCE1_REQ_SIGNAL', 'SEM_PERF_SEL_VCE1_REQ_WAIT', - 'SEM_PERF_SEL_VP8_REQ_SIGNAL', 'SEM_PERF_SEL_VP8_REQ_WAIT', - 'SEM_TRANS_ERROR', 'SET_OVERRIDE_CGTT_DCEFCLK', - 'SET_OVERRIDE_CGTT_SCLK', 'SET_STATIC_SCREEN_SMU_INTR', - 'SH_MEM_ADDRESS_MODE', 'SH_MEM_ADDRESS_MODE_32', - 'SH_MEM_ADDRESS_MODE_64', 'SH_MEM_ALIGNMENT_MODE', - 'SH_MEM_ALIGNMENT_MODE_DWORD', - 'SH_MEM_ALIGNMENT_MODE_DWORD_STRICT', - 'SH_MEM_ALIGNMENT_MODE_STRICT', 'SH_MEM_ALIGNMENT_MODE_UNALIGNED', - 'SIMM16_WAITCNT_EXP_CNT_SIZE', 'SIMM16_WAITCNT_EXP_CNT_START', - 'SIMM16_WAITCNT_LGKM_CNT_SIZE', 'SIMM16_WAITCNT_LGKM_CNT_START', - 'SIMM16_WAITCNT_VM_CNT_HI_SIZE', 'SIMM16_WAITCNT_VM_CNT_HI_START', - 'SIMM16_WAITCNT_VM_CNT_SIZE', 'SIMM16_WAITCNT_VM_CNT_START', - 'SMU_INTR_STATUS_CLEAR', 'SMU_INTR_STATUS_NOOP', - 'SM_MODE_RESERVED', 'SO_VGTSTREAMOUT_FLUSH', 'SPDIF1_SOFT_RESET', - 'SPDIF1_SOFT_RESET_0', 'SPDIF1_SOFT_RESET_1', - 'SPDIF_INVERT_DISABLE', 'SPDIF_INVERT_EN', 'SPDIF_INVERT_ENABLE', - 'SPI_FOG_EXP', 'SPI_FOG_EXP2', 'SPI_FOG_LINEAR', 'SPI_FOG_MODE', - 'SPI_FOG_NONE', 'SPI_PERFCNT_SEL', - 'SPI_PERF_CLKGATE_ACTIVE_STALL', 'SPI_PERF_CLKGATE_ALL_CLOCKS_ON', - 'SPI_PERF_CLKGATE_BUSY_STALL', 'SPI_PERF_CLKGATE_CGTT_DYN_ON', - 'SPI_PERF_CLKGATE_CGTT_REG_ON', 'SPI_PERF_CSG_BUSY', - 'SPI_PERF_CSG_CRAWLER_STALL', 'SPI_PERF_CSG_EVENT_WAVE', - 'SPI_PERF_CSG_NUM_THREADGROUPS', 'SPI_PERF_CSG_WAVE', - 'SPI_PERF_CSG_WINDOW_VALID', 'SPI_PERF_CSN_BUSY', - 'SPI_PERF_CSN_CRAWLER_STALL', 'SPI_PERF_CSN_EVENT_WAVE', - 'SPI_PERF_CSN_NUM_THREADGROUPS', 'SPI_PERF_CSN_WAVE', - 'SPI_PERF_CSN_WINDOW_VALID', 'SPI_PERF_ES_BUSY', - 'SPI_PERF_ES_CRAWLER_STALL', 'SPI_PERF_ES_EVENT_WAVE', - 'SPI_PERF_ES_FIRST_SUBGRP', 'SPI_PERF_ES_FIRST_WAVE', - 'SPI_PERF_ES_GRP_FIFO_FULL', 'SPI_PERF_ES_LAST_SUBGRP', - 'SPI_PERF_ES_LAST_WAVE', 'SPI_PERF_ES_LSHS_DEALLOC', - 'SPI_PERF_ES_PERS_UPD_FULL0', 'SPI_PERF_ES_PERS_UPD_FULL1', - 'SPI_PERF_ES_WAVE', 'SPI_PERF_ES_WINDOW_VALID', - 'SPI_PERF_EXP_ARB_COL_CNT', 'SPI_PERF_EXP_ARB_GDS_CNT', - 'SPI_PERF_EXP_ARB_PAR_CNT', 'SPI_PERF_EXP_ARB_POS_CNT', - 'SPI_PERF_GS_BUSY', 'SPI_PERF_GS_CRAWLER_STALL', - 'SPI_PERF_GS_EVENT_WAVE', 'SPI_PERF_GS_FIRST_SUBGRP', - 'SPI_PERF_GS_GRP_FIFO_FULL', 'SPI_PERF_GS_LAST_SUBGRP', - 'SPI_PERF_GS_PERS_UPD_FULL0', 'SPI_PERF_GS_PERS_UPD_FULL1', - 'SPI_PERF_GS_WAVE', 'SPI_PERF_GS_WINDOW_VALID', - 'SPI_PERF_HS_BUSY', 'SPI_PERF_HS_CRAWLER_STALL', - 'SPI_PERF_HS_EVENT_WAVE', 'SPI_PERF_HS_FIRST_WAVE', - 'SPI_PERF_HS_GRP_FIFO_FULL', 'SPI_PERF_HS_LAST_WAVE', - 'SPI_PERF_HS_LSHS_DEALLOC', 'SPI_PERF_HS_PERS_UPD_FULL0', - 'SPI_PERF_HS_PERS_UPD_FULL1', 'SPI_PERF_HS_WAVE', - 'SPI_PERF_HS_WINDOW_VALID', 'SPI_PERF_LDS0_PC_VALID', - 'SPI_PERF_LDS1_PC_VALID', 'SPI_PERF_LS_BUSY', - 'SPI_PERF_LS_CRAWLER_STALL', 'SPI_PERF_LS_EVENT_WAVE', - 'SPI_PERF_LS_FIRST_WAVE', 'SPI_PERF_LS_GRP_FIFO_FULL', - 'SPI_PERF_LS_LAST_WAVE', 'SPI_PERF_LS_PERS_UPD_FULL0', - 'SPI_PERF_LS_PERS_UPD_FULL1', 'SPI_PERF_LS_WAVE', - 'SPI_PERF_LS_WINDOW_VALID', 'SPI_PERF_NUM_PS_COL_EXPORTS', - 'SPI_PERF_NUM_VS_PARAM_EXPORTS', 'SPI_PERF_NUM_VS_POS_EXPORTS', - 'SPI_PERF_OFFCHIP_LDS_STALL_LS', 'SPI_PERF_PC_ALLOC_ACCUM', - 'SPI_PERF_PC_ALLOC_CNT', 'SPI_PERF_PIX_ALLOC_DB0_STALL', - 'SPI_PERF_PIX_ALLOC_DB1_STALL', 'SPI_PERF_PIX_ALLOC_DB2_STALL', - 'SPI_PERF_PIX_ALLOC_DB3_STALL', 'SPI_PERF_PIX_ALLOC_PEND_CNT', - 'SPI_PERF_PIX_ALLOC_SCB_STALL', 'SPI_PERF_PS_CTL_ACTIVE', - 'SPI_PERF_PS_CTL_BUSY', 'SPI_PERF_PS_CTL_CNF_BIN2', - 'SPI_PERF_PS_CTL_CNF_BIN3', 'SPI_PERF_PS_CTL_CRAWLER_STALL', - 'SPI_PERF_PS_CTL_DEALLOC_BIN0', 'SPI_PERF_PS_CTL_EVENT_WAVE', - 'SPI_PERF_PS_CTL_FPOS_BIN1_STALL', 'SPI_PERF_PS_CTL_FPOS_BIN2', - 'SPI_PERF_PS_CTL_LDS_RES_FULL', 'SPI_PERF_PS_CTL_OPT_WAVE', - 'SPI_PERF_PS_CTL_PASS_BIN0', 'SPI_PERF_PS_CTL_PASS_BIN1', - 'SPI_PERF_PS_CTL_PRIM_BIN0', 'SPI_PERF_PS_CTL_PRIM_BIN1', - 'SPI_PERF_PS_CTL_WAVE', 'SPI_PERF_PS_CTL_WINDOW_VALID', - 'SPI_PERF_PS_PERS_UPD_FULL0', 'SPI_PERF_PS_PERS_UPD_FULL1', - 'SPI_PERF_RA_BAR_CU_FULL_CSG', 'SPI_PERF_RA_BAR_CU_FULL_CSN', - 'SPI_PERF_RA_BAR_CU_FULL_HS', 'SPI_PERF_RA_BULKY_CU_FULL_CSG', - 'SPI_PERF_RA_BULKY_CU_FULL_CSN', 'SPI_PERF_RA_CSG_LOCK', - 'SPI_PERF_RA_CSN_LOCK', 'SPI_PERF_RA_ES_LOCK', - 'SPI_PERF_RA_GS_LOCK', 'SPI_PERF_RA_HS_LOCK', - 'SPI_PERF_RA_LDS_CU_FULL_CSG', 'SPI_PERF_RA_LDS_CU_FULL_CSN', - 'SPI_PERF_RA_LDS_CU_FULL_ES', 'SPI_PERF_RA_LDS_CU_FULL_LS', - 'SPI_PERF_RA_LDS_CU_FULL_PS', 'SPI_PERF_RA_LS_LOCK', - 'SPI_PERF_RA_PIPE_REQ_BIN2', 'SPI_PERF_RA_PS_LOCK_NA', - 'SPI_PERF_RA_REQ_NO_ALLOC', 'SPI_PERF_RA_REQ_NO_ALLOC_CSG', - 'SPI_PERF_RA_REQ_NO_ALLOC_CSN', 'SPI_PERF_RA_REQ_NO_ALLOC_ES', - 'SPI_PERF_RA_REQ_NO_ALLOC_GS', 'SPI_PERF_RA_REQ_NO_ALLOC_HS', - 'SPI_PERF_RA_REQ_NO_ALLOC_LS', 'SPI_PERF_RA_REQ_NO_ALLOC_PS', - 'SPI_PERF_RA_REQ_NO_ALLOC_VS', 'SPI_PERF_RA_RES_STALL_CSG', - 'SPI_PERF_RA_RES_STALL_CSN', 'SPI_PERF_RA_RES_STALL_ES', - 'SPI_PERF_RA_RES_STALL_GS', 'SPI_PERF_RA_RES_STALL_HS', - 'SPI_PERF_RA_RES_STALL_LS', 'SPI_PERF_RA_RES_STALL_PS', - 'SPI_PERF_RA_RES_STALL_VS', 'SPI_PERF_RA_RSV_UPD', - 'SPI_PERF_RA_SGPR_SIMD_FULL_CSG', - 'SPI_PERF_RA_SGPR_SIMD_FULL_CSN', 'SPI_PERF_RA_SGPR_SIMD_FULL_ES', - 'SPI_PERF_RA_SGPR_SIMD_FULL_GS', 'SPI_PERF_RA_SGPR_SIMD_FULL_HS', - 'SPI_PERF_RA_SGPR_SIMD_FULL_LS', 'SPI_PERF_RA_SGPR_SIMD_FULL_PS', - 'SPI_PERF_RA_SGPR_SIMD_FULL_VS', 'SPI_PERF_RA_TASK_REQ_BIN3', - 'SPI_PERF_RA_TGLIM_CU_FULL_CSG', 'SPI_PERF_RA_TGLIM_CU_FULL_CSN', - 'SPI_PERF_RA_TMP_STALL_CSG', 'SPI_PERF_RA_TMP_STALL_CSN', - 'SPI_PERF_RA_TMP_STALL_ES', 'SPI_PERF_RA_TMP_STALL_GS', - 'SPI_PERF_RA_TMP_STALL_HS', 'SPI_PERF_RA_TMP_STALL_LS', - 'SPI_PERF_RA_TMP_STALL_PS', 'SPI_PERF_RA_TMP_STALL_VS', - 'SPI_PERF_RA_VGPR_SIMD_FULL_CSG', - 'SPI_PERF_RA_VGPR_SIMD_FULL_CSN', 'SPI_PERF_RA_VGPR_SIMD_FULL_ES', - 'SPI_PERF_RA_VGPR_SIMD_FULL_GS', 'SPI_PERF_RA_VGPR_SIMD_FULL_HS', - 'SPI_PERF_RA_VGPR_SIMD_FULL_LS', 'SPI_PERF_RA_VGPR_SIMD_FULL_PS', - 'SPI_PERF_RA_VGPR_SIMD_FULL_VS', 'SPI_PERF_RA_VS_LOCK', - 'SPI_PERF_RA_WAVE_SIMD_FULL_CSG', - 'SPI_PERF_RA_WAVE_SIMD_FULL_CSN', 'SPI_PERF_RA_WAVE_SIMD_FULL_ES', - 'SPI_PERF_RA_WAVE_SIMD_FULL_GS', 'SPI_PERF_RA_WAVE_SIMD_FULL_HS', - 'SPI_PERF_RA_WAVE_SIMD_FULL_LS', 'SPI_PERF_RA_WAVE_SIMD_FULL_PS', - 'SPI_PERF_RA_WAVE_SIMD_FULL_VS', 'SPI_PERF_RA_WR_CTL_FULL', - 'SPI_PERF_RA_WVLIM_STALL_CSG', 'SPI_PERF_RA_WVLIM_STALL_CSN', - 'SPI_PERF_RA_WVLIM_STALL_ES', 'SPI_PERF_RA_WVLIM_STALL_GS', - 'SPI_PERF_RA_WVLIM_STALL_HS', 'SPI_PERF_RA_WVLIM_STALL_LS', - 'SPI_PERF_RA_WVLIM_STALL_PS', 'SPI_PERF_RA_WVLIM_STALL_VS', - 'SPI_PERF_VS_ALLOC_CNT', 'SPI_PERF_VS_BUSY', - 'SPI_PERF_VS_CRAWLER_STALL', 'SPI_PERF_VS_EVENT_WAVE', - 'SPI_PERF_VS_FIRST_SUBGRP', 'SPI_PERF_VS_FIRST_WAVE', - 'SPI_PERF_VS_LAST_SUBGRP', 'SPI_PERF_VS_LAST_WAVE', - 'SPI_PERF_VS_LATE_ALLOC_ACCUM', 'SPI_PERF_VS_LATE_ALLOC_FULL', - 'SPI_PERF_VS_LSHS_DEALLOC', 'SPI_PERF_VS_PC_STALL', - 'SPI_PERF_VS_PERS_UPD_FULL0', 'SPI_PERF_VS_PERS_UPD_FULL1', - 'SPI_PERF_VS_POS0_STALL', 'SPI_PERF_VS_POS1_STALL', - 'SPI_PERF_VS_WAVE', 'SPI_PERF_VS_WINDOW_VALID', - 'SPI_PNT_SPRITE_OVERRIDE', 'SPI_PNT_SPRITE_SEL_0', - 'SPI_PNT_SPRITE_SEL_1', 'SPI_PNT_SPRITE_SEL_NONE', - 'SPI_PNT_SPRITE_SEL_S', 'SPI_PNT_SPRITE_SEL_T', 'SPI_SAMPLE_CNTL', - 'SPI_SHADER_1COMP', 'SPI_SHADER_2COMP', 'SPI_SHADER_32_ABGR', - 'SPI_SHADER_32_AR', 'SPI_SHADER_32_GR', 'SPI_SHADER_32_R', - 'SPI_SHADER_4COMP', 'SPI_SHADER_4COMPRESS', - 'SPI_SHADER_EX_FORMAT', 'SPI_SHADER_FORMAT', - 'SPI_SHADER_FP16_ABGR', 'SPI_SHADER_NONE', - 'SPI_SHADER_SINT16_ABGR', 'SPI_SHADER_SNORM16_ABGR', - 'SPI_SHADER_UINT16_ABGR', 'SPI_SHADER_UNORM16_ABGR', - 'SPI_SHADER_ZERO', 'SPM_PERFMON_STATE', 'SPRITE_EN', - 'SQC_PERF_SEL_DCACHE_ATOMIC', 'SQC_PERF_SEL_DCACHE_BUSY_CYCLES', - 'SQC_PERF_SEL_DCACHE_CACHE_STALLED', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_ALLOC_UNAVAILABLE', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_EVICT', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_FLUSH_DONE', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_FORCE_EVICT', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_INFLIGHT_MAX', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_MULTI_FLUSH', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT_HIT_FIFO', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT_MISS_FIFO', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT_TC_IF', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_UNORDERED', - 'SQC_PERF_SEL_DCACHE_FLAT_REQ', - 'SQC_PERF_SEL_DCACHE_GATCL1_ATCL2_INFLIGHT', - 'SQC_PERF_SEL_DCACHE_GATCL1_HIT_FIFO_FULL', - 'SQC_PERF_SEL_DCACHE_GATCL1_LFIFO_FULL', - 'SQC_PERF_SEL_DCACHE_GATCL1_PERMISSION_MISS', - 'SQC_PERF_SEL_DCACHE_GATCL1_REQUEST', - 'SQC_PERF_SEL_DCACHE_GATCL1_STALL_ATCL2_REQ_OUT_OF_CREDITS', - 'SQC_PERF_SEL_DCACHE_GATCL1_STALL_INFLIGHT_MAX', - 'SQC_PERF_SEL_DCACHE_GATCL1_STALL_LFIFO_NOT_RES', - 'SQC_PERF_SEL_DCACHE_GATCL1_STALL_LRU_INFLIGHT', - 'SQC_PERF_SEL_DCACHE_GATCL1_STALL_MISSFIFO_FULL', - 'SQC_PERF_SEL_DCACHE_GATCL1_STALL_MULTI_MISS', - 'SQC_PERF_SEL_DCACHE_GATCL1_TRANSLATION_MISS', - 'SQC_PERF_SEL_DCACHE_HITS', 'SQC_PERF_SEL_DCACHE_HIT_LRU_READ', - 'SQC_PERF_SEL_DCACHE_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_DCACHE_INPUT_STALL_ARB_NO_GRANT', - 'SQC_PERF_SEL_DCACHE_INPUT_STALL_BANK_READYB', - 'SQC_PERF_SEL_DCACHE_INPUT_VALIDB', - 'SQC_PERF_SEL_DCACHE_INPUT_VALID_READY', - 'SQC_PERF_SEL_DCACHE_INPUT_VALID_READYB', - 'SQC_PERF_SEL_DCACHE_INVAL_ASYNC', - 'SQC_PERF_SEL_DCACHE_INVAL_INST', - 'SQC_PERF_SEL_DCACHE_INVAL_VOLATILE_ASYNC', - 'SQC_PERF_SEL_DCACHE_INVAL_VOLATILE_INST', - 'SQC_PERF_SEL_DCACHE_MISSES', - 'SQC_PERF_SEL_DCACHE_MISSES_DUPLICATE', - 'SQC_PERF_SEL_DCACHE_MISS_EVICT_READ', - 'SQC_PERF_SEL_DCACHE_NONFLAT_REQ', 'SQC_PERF_SEL_DCACHE_REQ', - 'SQC_PERF_SEL_DCACHE_REQ_ATC_PROBE', - 'SQC_PERF_SEL_DCACHE_REQ_READ_1', - 'SQC_PERF_SEL_DCACHE_REQ_READ_16', - 'SQC_PERF_SEL_DCACHE_REQ_READ_2', - 'SQC_PERF_SEL_DCACHE_REQ_READ_4', - 'SQC_PERF_SEL_DCACHE_REQ_READ_8', 'SQC_PERF_SEL_DCACHE_REQ_TIME', - 'SQC_PERF_SEL_DCACHE_REQ_WRITE_1', - 'SQC_PERF_SEL_DCACHE_REQ_WRITE_2', - 'SQC_PERF_SEL_DCACHE_REQ_WRITE_4', - 'SQC_PERF_SEL_DCACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 'SQC_PERF_SEL_DCACHE_TC_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_DCACHE_VOLATILE', 'SQC_PERF_SEL_DCACHE_WB_ASYNC', - 'SQC_PERF_SEL_DCACHE_WB_INST', - 'SQC_PERF_SEL_DCACHE_WB_VOLATILE_ASYNC', - 'SQC_PERF_SEL_DCACHE_WB_VOLATILE_INST', - 'SQC_PERF_SEL_DCACHE_WC_LRU_WRITE', - 'SQC_PERF_SEL_DCACHE_WT_EVICT_WRITE', 'SQC_PERF_SEL_DUMMY_LAST', - 'SQC_PERF_SEL_ICACHE_BUSY_CYCLES', - 'SQC_PERF_SEL_ICACHE_CACHE_STALLED', - 'SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_MAX', - 'SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_NONZERO', - 'SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT', - 'SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT_HIT_FIFO', - 'SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT_MISS_FIFO', - 'SQC_PERF_SEL_ICACHE_CACHE_STALL_OUTPUT_TC_IF', - 'SQC_PERF_SEL_ICACHE_GATCL1_ATCL2_INFLIGHT', - 'SQC_PERF_SEL_ICACHE_GATCL1_LFIFO_FULL', - 'SQC_PERF_SEL_ICACHE_GATCL1_PERMISSION_MISS', - 'SQC_PERF_SEL_ICACHE_GATCL1_REQUEST', - 'SQC_PERF_SEL_ICACHE_GATCL1_STALL_ATCL2_REQ_OUT_OF_CREDITS', - 'SQC_PERF_SEL_ICACHE_GATCL1_STALL_INFLIGHT_MAX', - 'SQC_PERF_SEL_ICACHE_GATCL1_STALL_LFIFO_NOT_RES', - 'SQC_PERF_SEL_ICACHE_GATCL1_STALL_LRU_INFLIGHT', - 'SQC_PERF_SEL_ICACHE_GATCL1_STALL_MISSFIFO_FULL', - 'SQC_PERF_SEL_ICACHE_GATCL1_TRANSLATION_MISS', - 'SQC_PERF_SEL_ICACHE_HITS', 'SQC_PERF_SEL_ICACHE_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_ICACHE_INPUT_STALL_ARB_NO_GRANT', - 'SQC_PERF_SEL_ICACHE_INPUT_STALL_BANK_READYB', - 'SQC_PERF_SEL_ICACHE_INPUT_VALIDB', - 'SQC_PERF_SEL_ICACHE_INPUT_VALID_READY', - 'SQC_PERF_SEL_ICACHE_INPUT_VALID_READYB', - 'SQC_PERF_SEL_ICACHE_INVAL_ASYNC', - 'SQC_PERF_SEL_ICACHE_INVAL_INST', 'SQC_PERF_SEL_ICACHE_MISSES', - 'SQC_PERF_SEL_ICACHE_MISSES_DUPLICATE', - 'SQC_PERF_SEL_ICACHE_PREFETCH_1', - 'SQC_PERF_SEL_ICACHE_PREFETCH_2', - 'SQC_PERF_SEL_ICACHE_PREFETCH_FILTERED', - 'SQC_PERF_SEL_ICACHE_REQ', - 'SQC_PERF_SEL_ICACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 'SQC_PERF_SEL_ICACHE_TC_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_SQ_DCACHE_REQS', 'SQC_PERF_SEL_TC_DATA_ATOMIC_REQ', - 'SQC_PERF_SEL_TC_DATA_READ_REQ', 'SQC_PERF_SEL_TC_DATA_WRITE_REQ', - 'SQC_PERF_SEL_TC_INFLIGHT_LEVEL', 'SQC_PERF_SEL_TC_INST_REQ', - 'SQC_PERF_SEL_TC_REQ', 'SQC_PERF_SEL_TC_STALL', - 'SQC_PERF_SEL_TC_STARVE', 'SQDEC_BEGIN', 'SQDEC_END', - 'SQGFXUDEC_BEGIN', 'SQGFXUDEC_END', 'SQIND_GLOBAL_REGS_OFFSET', - 'SQIND_GLOBAL_REGS_SIZE', 'SQIND_LOCAL_REGS_OFFSET', - 'SQIND_LOCAL_REGS_SIZE', 'SQIND_WAVE_HWREGS_OFFSET', - 'SQIND_WAVE_HWREGS_SIZE', 'SQIND_WAVE_SGPRS_OFFSET', - 'SQIND_WAVE_SGPRS_SIZE', 'SQIND_WAVE_VGPRS_OFFSET', - 'SQIND_WAVE_VGPRS_SIZE', 'SQPERFDDEC_BEGIN', 'SQPERFDDEC_END', - 'SQPERFSDEC_BEGIN', 'SQPERFSDEC_END', 'SQPWRDEC_BEGIN', - 'SQPWRDEC_END', 'SQ_ATTR0', 'SQ_BUFFER_ATOMIC_ADD', - 'SQ_BUFFER_ATOMIC_ADD_X2', 'SQ_BUFFER_ATOMIC_AND', - 'SQ_BUFFER_ATOMIC_AND_X2', 'SQ_BUFFER_ATOMIC_CMPSWAP', - 'SQ_BUFFER_ATOMIC_CMPSWAP_X2', 'SQ_BUFFER_ATOMIC_DEC', - 'SQ_BUFFER_ATOMIC_DEC_X2', 'SQ_BUFFER_ATOMIC_INC', - 'SQ_BUFFER_ATOMIC_INC_X2', 'SQ_BUFFER_ATOMIC_OR', - 'SQ_BUFFER_ATOMIC_OR_X2', 'SQ_BUFFER_ATOMIC_SMAX', - 'SQ_BUFFER_ATOMIC_SMAX_X2', 'SQ_BUFFER_ATOMIC_SMIN', - 'SQ_BUFFER_ATOMIC_SMIN_X2', 'SQ_BUFFER_ATOMIC_SUB', - 'SQ_BUFFER_ATOMIC_SUB_X2', 'SQ_BUFFER_ATOMIC_SWAP', - 'SQ_BUFFER_ATOMIC_SWAP_X2', 'SQ_BUFFER_ATOMIC_UMAX', - 'SQ_BUFFER_ATOMIC_UMAX_X2', 'SQ_BUFFER_ATOMIC_UMIN', - 'SQ_BUFFER_ATOMIC_UMIN_X2', 'SQ_BUFFER_ATOMIC_XOR', - 'SQ_BUFFER_ATOMIC_XOR_X2', 'SQ_BUFFER_LOAD_DWORD', - 'SQ_BUFFER_LOAD_DWORDX2', 'SQ_BUFFER_LOAD_DWORDX3', - 'SQ_BUFFER_LOAD_DWORDX4', 'SQ_BUFFER_LOAD_FORMAT_D16_X', - 'SQ_BUFFER_LOAD_FORMAT_D16_XY', 'SQ_BUFFER_LOAD_FORMAT_D16_XYZ', - 'SQ_BUFFER_LOAD_FORMAT_D16_XYZW', 'SQ_BUFFER_LOAD_FORMAT_X', - 'SQ_BUFFER_LOAD_FORMAT_XY', 'SQ_BUFFER_LOAD_FORMAT_XYZ', - 'SQ_BUFFER_LOAD_FORMAT_XYZW', 'SQ_BUFFER_LOAD_SBYTE', - 'SQ_BUFFER_LOAD_SSHORT', 'SQ_BUFFER_LOAD_UBYTE', - 'SQ_BUFFER_LOAD_USHORT', 'SQ_BUFFER_STORE_BYTE', - 'SQ_BUFFER_STORE_DWORD', 'SQ_BUFFER_STORE_DWORDX2', - 'SQ_BUFFER_STORE_DWORDX3', 'SQ_BUFFER_STORE_DWORDX4', - 'SQ_BUFFER_STORE_FORMAT_D16_X', 'SQ_BUFFER_STORE_FORMAT_D16_XY', - 'SQ_BUFFER_STORE_FORMAT_D16_XYZ', - 'SQ_BUFFER_STORE_FORMAT_D16_XYZW', 'SQ_BUFFER_STORE_FORMAT_X', - 'SQ_BUFFER_STORE_FORMAT_XY', 'SQ_BUFFER_STORE_FORMAT_XYZ', - 'SQ_BUFFER_STORE_FORMAT_XYZW', 'SQ_BUFFER_STORE_LDS_DWORD', - 'SQ_BUFFER_STORE_SHORT', 'SQ_BUFFER_WBINVL1', - 'SQ_BUFFER_WBINVL1_VOL', 'SQ_CAC_POWER_ALU_BUSY', - 'SQ_CAC_POWER_GPR_RD', 'SQ_CAC_POWER_GPR_WR', - 'SQ_CAC_POWER_LDS_BUSY', 'SQ_CAC_POWER_SEL', - 'SQ_CAC_POWER_TEX_BUSY', 'SQ_CAC_POWER_VALU', - 'SQ_CAC_POWER_VALU0', 'SQ_CAC_POWER_VALU1', 'SQ_CAC_POWER_VALU2', - 'SQ_CHAN_W', 'SQ_CHAN_X', 'SQ_CHAN_Y', 'SQ_CHAN_Z', 'SQ_CNT1', - 'SQ_CNT2', 'SQ_CNT3', 'SQ_CNT4', 'SQ_DISPATCHER_GFX_CNT_PER_RING', - 'SQ_DISPATCHER_GFX_MIN', 'SQ_DPP_BOUND_OFF', 'SQ_DPP_BOUND_ZERO', - 'SQ_DPP_QUAD_PERM', 'SQ_DPP_ROW_BCAST15', 'SQ_DPP_ROW_BCAST31', - 'SQ_DPP_ROW_HALF_MIRROR', 'SQ_DPP_ROW_MIRROR', 'SQ_DPP_ROW_RR1', - 'SQ_DPP_ROW_RR10', 'SQ_DPP_ROW_RR11', 'SQ_DPP_ROW_RR12', - 'SQ_DPP_ROW_RR13', 'SQ_DPP_ROW_RR14', 'SQ_DPP_ROW_RR15', - 'SQ_DPP_ROW_RR2', 'SQ_DPP_ROW_RR3', 'SQ_DPP_ROW_RR4', - 'SQ_DPP_ROW_RR5', 'SQ_DPP_ROW_RR6', 'SQ_DPP_ROW_RR7', - 'SQ_DPP_ROW_RR8', 'SQ_DPP_ROW_RR9', 'SQ_DPP_ROW_SL1', - 'SQ_DPP_ROW_SL10', 'SQ_DPP_ROW_SL11', 'SQ_DPP_ROW_SL12', - 'SQ_DPP_ROW_SL13', 'SQ_DPP_ROW_SL14', 'SQ_DPP_ROW_SL15', - 'SQ_DPP_ROW_SL2', 'SQ_DPP_ROW_SL3', 'SQ_DPP_ROW_SL4', - 'SQ_DPP_ROW_SL5', 'SQ_DPP_ROW_SL6', 'SQ_DPP_ROW_SL7', - 'SQ_DPP_ROW_SL8', 'SQ_DPP_ROW_SL9', 'SQ_DPP_ROW_SR1', - 'SQ_DPP_ROW_SR10', 'SQ_DPP_ROW_SR11', 'SQ_DPP_ROW_SR12', - 'SQ_DPP_ROW_SR13', 'SQ_DPP_ROW_SR14', 'SQ_DPP_ROW_SR15', - 'SQ_DPP_ROW_SR2', 'SQ_DPP_ROW_SR3', 'SQ_DPP_ROW_SR4', - 'SQ_DPP_ROW_SR5', 'SQ_DPP_ROW_SR6', 'SQ_DPP_ROW_SR7', - 'SQ_DPP_ROW_SR8', 'SQ_DPP_ROW_SR9', 'SQ_DPP_WF_RL1', - 'SQ_DPP_WF_RR1', 'SQ_DPP_WF_SL1', 'SQ_DPP_WF_SR1', - 'SQ_DS_ADD_F32', 'SQ_DS_ADD_RTN_F32', 'SQ_DS_ADD_RTN_U32', - 'SQ_DS_ADD_RTN_U64', 'SQ_DS_ADD_SRC2_F32', 'SQ_DS_ADD_SRC2_U32', - 'SQ_DS_ADD_SRC2_U64', 'SQ_DS_ADD_U32', 'SQ_DS_ADD_U64', - 'SQ_DS_AND_B32', 'SQ_DS_AND_B64', 'SQ_DS_AND_RTN_B32', - 'SQ_DS_AND_RTN_B64', 'SQ_DS_AND_SRC2_B32', 'SQ_DS_AND_SRC2_B64', - 'SQ_DS_APPEND', 'SQ_DS_BPERMUTE_B32', 'SQ_DS_CMPST_B32', - 'SQ_DS_CMPST_B64', 'SQ_DS_CMPST_F32', 'SQ_DS_CMPST_F64', - 'SQ_DS_CMPST_RTN_B32', 'SQ_DS_CMPST_RTN_B64', - 'SQ_DS_CMPST_RTN_F32', 'SQ_DS_CMPST_RTN_F64', - 'SQ_DS_CONDXCHG32_RTN_B128', 'SQ_DS_CONDXCHG32_RTN_B64', - 'SQ_DS_CONSUME', 'SQ_DS_DEC_RTN_U32', 'SQ_DS_DEC_RTN_U64', - 'SQ_DS_DEC_SRC2_U32', 'SQ_DS_DEC_SRC2_U64', 'SQ_DS_DEC_U32', - 'SQ_DS_DEC_U64', 'SQ_DS_GWS_BARRIER', 'SQ_DS_GWS_INIT', - 'SQ_DS_GWS_SEMA_BR', 'SQ_DS_GWS_SEMA_P', - 'SQ_DS_GWS_SEMA_RELEASE_ALL', 'SQ_DS_GWS_SEMA_V', - 'SQ_DS_INC_RTN_U32', 'SQ_DS_INC_RTN_U64', 'SQ_DS_INC_SRC2_U32', - 'SQ_DS_INC_SRC2_U64', 'SQ_DS_INC_U32', 'SQ_DS_INC_U64', - 'SQ_DS_MAX_F32', 'SQ_DS_MAX_F64', 'SQ_DS_MAX_I32', - 'SQ_DS_MAX_I64', 'SQ_DS_MAX_RTN_F32', 'SQ_DS_MAX_RTN_F64', - 'SQ_DS_MAX_RTN_I32', 'SQ_DS_MAX_RTN_I64', 'SQ_DS_MAX_RTN_U32', - 'SQ_DS_MAX_RTN_U64', 'SQ_DS_MAX_SRC2_F32', 'SQ_DS_MAX_SRC2_F64', - 'SQ_DS_MAX_SRC2_I32', 'SQ_DS_MAX_SRC2_I64', 'SQ_DS_MAX_SRC2_U32', - 'SQ_DS_MAX_SRC2_U64', 'SQ_DS_MAX_U32', 'SQ_DS_MAX_U64', - 'SQ_DS_MIN_F32', 'SQ_DS_MIN_F64', 'SQ_DS_MIN_I32', - 'SQ_DS_MIN_I64', 'SQ_DS_MIN_RTN_F32', 'SQ_DS_MIN_RTN_F64', - 'SQ_DS_MIN_RTN_I32', 'SQ_DS_MIN_RTN_I64', 'SQ_DS_MIN_RTN_U32', - 'SQ_DS_MIN_RTN_U64', 'SQ_DS_MIN_SRC2_F32', 'SQ_DS_MIN_SRC2_F64', - 'SQ_DS_MIN_SRC2_I32', 'SQ_DS_MIN_SRC2_I64', 'SQ_DS_MIN_SRC2_U32', - 'SQ_DS_MIN_SRC2_U64', 'SQ_DS_MIN_U32', 'SQ_DS_MIN_U64', - 'SQ_DS_MSKOR_B32', 'SQ_DS_MSKOR_B64', 'SQ_DS_MSKOR_RTN_B32', - 'SQ_DS_MSKOR_RTN_B64', 'SQ_DS_NOP', 'SQ_DS_ORDERED_COUNT', - 'SQ_DS_OR_B32', 'SQ_DS_OR_B64', 'SQ_DS_OR_RTN_B32', - 'SQ_DS_OR_RTN_B64', 'SQ_DS_OR_SRC2_B32', 'SQ_DS_OR_SRC2_B64', - 'SQ_DS_PERMUTE_B32', 'SQ_DS_READ2ST64_B32', 'SQ_DS_READ2ST64_B64', - 'SQ_DS_READ2_B32', 'SQ_DS_READ2_B64', 'SQ_DS_READ_ADDTID_B32', - 'SQ_DS_READ_B128', 'SQ_DS_READ_B32', 'SQ_DS_READ_B64', - 'SQ_DS_READ_B96', 'SQ_DS_READ_I16', 'SQ_DS_READ_I8', - 'SQ_DS_READ_U16', 'SQ_DS_READ_U8', 'SQ_DS_RSUB_RTN_U32', - 'SQ_DS_RSUB_RTN_U64', 'SQ_DS_RSUB_SRC2_U32', - 'SQ_DS_RSUB_SRC2_U64', 'SQ_DS_RSUB_U32', 'SQ_DS_RSUB_U64', - 'SQ_DS_SUB_RTN_U32', 'SQ_DS_SUB_RTN_U64', 'SQ_DS_SUB_SRC2_U32', - 'SQ_DS_SUB_SRC2_U64', 'SQ_DS_SUB_U32', 'SQ_DS_SUB_U64', - 'SQ_DS_SWIZZLE_B32', 'SQ_DS_WRAP_RTN_B32', 'SQ_DS_WRITE2ST64_B32', - 'SQ_DS_WRITE2ST64_B64', 'SQ_DS_WRITE2_B32', 'SQ_DS_WRITE2_B64', - 'SQ_DS_WRITE_ADDTID_B32', 'SQ_DS_WRITE_B128', 'SQ_DS_WRITE_B16', - 'SQ_DS_WRITE_B32', 'SQ_DS_WRITE_B64', 'SQ_DS_WRITE_B8', - 'SQ_DS_WRITE_B96', 'SQ_DS_WRITE_SRC2_B32', 'SQ_DS_WRITE_SRC2_B64', - 'SQ_DS_WRXCHG2ST64_RTN_B32', 'SQ_DS_WRXCHG2ST64_RTN_B64', - 'SQ_DS_WRXCHG2_RTN_B32', 'SQ_DS_WRXCHG2_RTN_B64', - 'SQ_DS_WRXCHG_RTN_B32', 'SQ_DS_WRXCHG_RTN_B64', 'SQ_DS_XOR_B32', - 'SQ_DS_XOR_B64', 'SQ_DS_XOR_RTN_B32', 'SQ_DS_XOR_RTN_B64', - 'SQ_DS_XOR_SRC2_B32', 'SQ_DS_XOR_SRC2_B64', 'SQ_EDC_FUE_CNTL_LDS', - 'SQ_EDC_FUE_CNTL_SIMD0', 'SQ_EDC_FUE_CNTL_SIMD1', - 'SQ_EDC_FUE_CNTL_SIMD2', 'SQ_EDC_FUE_CNTL_SIMD3', - 'SQ_EDC_FUE_CNTL_SQ', 'SQ_EDC_FUE_CNTL_TA', 'SQ_EDC_FUE_CNTL_TCP', - 'SQ_EDC_FUE_CNTL_TD', 'SQ_EDC_INFO_SOURCE', - 'SQ_EDC_INFO_SOURCE_GDS', 'SQ_EDC_INFO_SOURCE_INST', - 'SQ_EDC_INFO_SOURCE_INVALID', 'SQ_EDC_INFO_SOURCE_LDS', - 'SQ_EDC_INFO_SOURCE_SGPR', 'SQ_EDC_INFO_SOURCE_TA', - 'SQ_EDC_INFO_SOURCE_VGPR', 'SQ_ENC_DS_BITS', 'SQ_ENC_DS_FIELD', - 'SQ_ENC_DS_MASK', 'SQ_ENC_EXP_BITS', 'SQ_ENC_EXP_FIELD', - 'SQ_ENC_EXP_MASK', 'SQ_ENC_FLAT_BITS', 'SQ_ENC_FLAT_FIELD', - 'SQ_ENC_FLAT_MASK', 'SQ_ENC_MIMG_BITS', 'SQ_ENC_MIMG_FIELD', - 'SQ_ENC_MIMG_MASK', 'SQ_ENC_MTBUF_BITS', 'SQ_ENC_MTBUF_FIELD', - 'SQ_ENC_MTBUF_MASK', 'SQ_ENC_MUBUF_BITS', 'SQ_ENC_MUBUF_FIELD', - 'SQ_ENC_MUBUF_MASK', 'SQ_ENC_SMEM_BITS', 'SQ_ENC_SMEM_FIELD', - 'SQ_ENC_SMEM_MASK', 'SQ_ENC_SOP1_BITS', 'SQ_ENC_SOP1_FIELD', - 'SQ_ENC_SOP1_MASK', 'SQ_ENC_SOP2_BITS', 'SQ_ENC_SOP2_FIELD', - 'SQ_ENC_SOP2_MASK', 'SQ_ENC_SOPC_BITS', 'SQ_ENC_SOPC_FIELD', - 'SQ_ENC_SOPC_MASK', 'SQ_ENC_SOPK_BITS', 'SQ_ENC_SOPK_FIELD', - 'SQ_ENC_SOPK_MASK', 'SQ_ENC_SOPP_BITS', 'SQ_ENC_SOPP_FIELD', - 'SQ_ENC_SOPP_MASK', 'SQ_ENC_VINTRP_BITS', 'SQ_ENC_VINTRP_FIELD', - 'SQ_ENC_VINTRP_MASK', 'SQ_ENC_VOP1_BITS', 'SQ_ENC_VOP1_FIELD', - 'SQ_ENC_VOP1_MASK', 'SQ_ENC_VOP2_BITS', 'SQ_ENC_VOP2_FIELD', - 'SQ_ENC_VOP2_MASK', 'SQ_ENC_VOP3P_BITS', 'SQ_ENC_VOP3P_FIELD', - 'SQ_ENC_VOP3P_MASK', 'SQ_ENC_VOP3_BITS', 'SQ_ENC_VOP3_FIELD', - 'SQ_ENC_VOP3_MASK', 'SQ_ENC_VOPC_BITS', 'SQ_ENC_VOPC_FIELD', - 'SQ_ENC_VOPC_MASK', 'SQ_EQ', 'SQ_EXEC_HI', 'SQ_EXEC_LO', 'SQ_EXP', - 'SQ_EXPORT_RAT_INST_ADD', 'SQ_EXPORT_RAT_INST_ADD_RTN', - 'SQ_EXPORT_RAT_INST_AND', 'SQ_EXPORT_RAT_INST_AND_RTN', - 'SQ_EXPORT_RAT_INST_CMPXCHG_FDENORM', - 'SQ_EXPORT_RAT_INST_CMPXCHG_FDENORM_RTN', - 'SQ_EXPORT_RAT_INST_CMPXCHG_FLT', - 'SQ_EXPORT_RAT_INST_CMPXCHG_FLT_RTN', - 'SQ_EXPORT_RAT_INST_CMPXCHG_INT', - 'SQ_EXPORT_RAT_INST_CMPXCHG_INT_RTN', - 'SQ_EXPORT_RAT_INST_DEC_UINT', 'SQ_EXPORT_RAT_INST_DEC_UINT_RTN', - 'SQ_EXPORT_RAT_INST_INC_UINT', 'SQ_EXPORT_RAT_INST_INC_UINT_RTN', - 'SQ_EXPORT_RAT_INST_MAX_INT', 'SQ_EXPORT_RAT_INST_MAX_INT_RTN', - 'SQ_EXPORT_RAT_INST_MAX_UINT', 'SQ_EXPORT_RAT_INST_MAX_UINT_RTN', - 'SQ_EXPORT_RAT_INST_MIN_INT', 'SQ_EXPORT_RAT_INST_MIN_INT_RTN', - 'SQ_EXPORT_RAT_INST_MIN_UINT', 'SQ_EXPORT_RAT_INST_MIN_UINT_RTN', - 'SQ_EXPORT_RAT_INST_MSKOR', 'SQ_EXPORT_RAT_INST_MSKOR_RTN', - 'SQ_EXPORT_RAT_INST_NOP', 'SQ_EXPORT_RAT_INST_NOP_RTN', - 'SQ_EXPORT_RAT_INST_OR', 'SQ_EXPORT_RAT_INST_OR_RTN', - 'SQ_EXPORT_RAT_INST_RSUB', 'SQ_EXPORT_RAT_INST_RSUB_RTN', - 'SQ_EXPORT_RAT_INST_STORE_BYTE', 'SQ_EXPORT_RAT_INST_STORE_DWORD', - 'SQ_EXPORT_RAT_INST_STORE_RAW', - 'SQ_EXPORT_RAT_INST_STORE_RAW_FDENORM', - 'SQ_EXPORT_RAT_INST_STORE_SHORT', - 'SQ_EXPORT_RAT_INST_STORE_TYPED', 'SQ_EXPORT_RAT_INST_SUB', - 'SQ_EXPORT_RAT_INST_SUB_RTN', - 'SQ_EXPORT_RAT_INST_XCHG_FDENORM_RTN', - 'SQ_EXPORT_RAT_INST_XCHG_RTN', 'SQ_EXPORT_RAT_INST_XOR', - 'SQ_EXPORT_RAT_INST_XOR_RTN', 'SQ_EXP_GDS0', 'SQ_EXP_MRT0', - 'SQ_EXP_MRTZ', 'SQ_EXP_NULL', 'SQ_EXP_NUM_GDS', 'SQ_EXP_NUM_MRT', - 'SQ_EXP_NUM_PARAM', 'SQ_EXP_NUM_POS', 'SQ_EXP_PARAM0', - 'SQ_EXP_POS0', 'SQ_EX_MODE_EXCP_ADDR_WATCH0', - 'SQ_EX_MODE_EXCP_DIV0', 'SQ_EX_MODE_EXCP_HI_ADDR_WATCH1', - 'SQ_EX_MODE_EXCP_HI_ADDR_WATCH2', - 'SQ_EX_MODE_EXCP_HI_ADDR_WATCH3', 'SQ_EX_MODE_EXCP_INEXACT', - 'SQ_EX_MODE_EXCP_INPUT_DENORM', 'SQ_EX_MODE_EXCP_INT_DIV0', - 'SQ_EX_MODE_EXCP_INVALID', 'SQ_EX_MODE_EXCP_MEM_VIOL', - 'SQ_EX_MODE_EXCP_OVERFLOW', 'SQ_EX_MODE_EXCP_UNDERFLOW', - 'SQ_EX_MODE_EXCP_VALU_BASE', 'SQ_EX_MODE_EXCP_VALU_SIZE', 'SQ_F', - 'SQ_FLAT', 'SQ_FLAT_ATOMIC_ADD', 'SQ_FLAT_ATOMIC_ADD_X2', - 'SQ_FLAT_ATOMIC_AND', 'SQ_FLAT_ATOMIC_AND_X2', - 'SQ_FLAT_ATOMIC_CMPSWAP', 'SQ_FLAT_ATOMIC_CMPSWAP_X2', - 'SQ_FLAT_ATOMIC_DEC', 'SQ_FLAT_ATOMIC_DEC_X2', - 'SQ_FLAT_ATOMIC_INC', 'SQ_FLAT_ATOMIC_INC_X2', - 'SQ_FLAT_ATOMIC_OR', 'SQ_FLAT_ATOMIC_OR_X2', - 'SQ_FLAT_ATOMIC_SMAX', 'SQ_FLAT_ATOMIC_SMAX_X2', - 'SQ_FLAT_ATOMIC_SMIN', 'SQ_FLAT_ATOMIC_SMIN_X2', - 'SQ_FLAT_ATOMIC_SUB', 'SQ_FLAT_ATOMIC_SUB_X2', - 'SQ_FLAT_ATOMIC_SWAP', 'SQ_FLAT_ATOMIC_SWAP_X2', - 'SQ_FLAT_ATOMIC_UMAX', 'SQ_FLAT_ATOMIC_UMAX_X2', - 'SQ_FLAT_ATOMIC_UMIN', 'SQ_FLAT_ATOMIC_UMIN_X2', - 'SQ_FLAT_ATOMIC_XOR', 'SQ_FLAT_ATOMIC_XOR_X2', - 'SQ_FLAT_LOAD_DWORD', 'SQ_FLAT_LOAD_DWORDX2', - 'SQ_FLAT_LOAD_DWORDX3', 'SQ_FLAT_LOAD_DWORDX4', - 'SQ_FLAT_LOAD_SBYTE', 'SQ_FLAT_LOAD_SSHORT', 'SQ_FLAT_LOAD_UBYTE', - 'SQ_FLAT_LOAD_USHORT', 'SQ_FLAT_SCRATCH_HI', 'SQ_FLAT_SCRATCH_LO', - 'SQ_FLAT_STORE_BYTE', 'SQ_FLAT_STORE_DWORD', - 'SQ_FLAT_STORE_DWORDX2', 'SQ_FLAT_STORE_DWORDX3', - 'SQ_FLAT_STORE_DWORDX4', 'SQ_FLAT_STORE_SHORT', 'SQ_GE', - 'SQ_GFXDEC_BEGIN', 'SQ_GFXDEC_END', 'SQ_GFXDEC_STATE_ID_SHIFT', - 'SQ_GLOBAL', 'SQ_GLOBAL_ATOMIC_ADD', 'SQ_GLOBAL_ATOMIC_ADD_X2', - 'SQ_GLOBAL_ATOMIC_AND', 'SQ_GLOBAL_ATOMIC_AND_X2', - 'SQ_GLOBAL_ATOMIC_CMPSWAP', 'SQ_GLOBAL_ATOMIC_CMPSWAP_X2', - 'SQ_GLOBAL_ATOMIC_DEC', 'SQ_GLOBAL_ATOMIC_DEC_X2', - 'SQ_GLOBAL_ATOMIC_INC', 'SQ_GLOBAL_ATOMIC_INC_X2', - 'SQ_GLOBAL_ATOMIC_OR', 'SQ_GLOBAL_ATOMIC_OR_X2', - 'SQ_GLOBAL_ATOMIC_SMAX', 'SQ_GLOBAL_ATOMIC_SMAX_X2', - 'SQ_GLOBAL_ATOMIC_SMIN', 'SQ_GLOBAL_ATOMIC_SMIN_X2', - 'SQ_GLOBAL_ATOMIC_SUB', 'SQ_GLOBAL_ATOMIC_SUB_X2', - 'SQ_GLOBAL_ATOMIC_SWAP', 'SQ_GLOBAL_ATOMIC_SWAP_X2', - 'SQ_GLOBAL_ATOMIC_UMAX', 'SQ_GLOBAL_ATOMIC_UMAX_X2', - 'SQ_GLOBAL_ATOMIC_UMIN', 'SQ_GLOBAL_ATOMIC_UMIN_X2', - 'SQ_GLOBAL_ATOMIC_XOR', 'SQ_GLOBAL_ATOMIC_XOR_X2', - 'SQ_GLOBAL_LOAD_DWORD', 'SQ_GLOBAL_LOAD_DWORDX2', - 'SQ_GLOBAL_LOAD_DWORDX3', 'SQ_GLOBAL_LOAD_DWORDX4', - 'SQ_GLOBAL_LOAD_SBYTE', 'SQ_GLOBAL_LOAD_SSHORT', - 'SQ_GLOBAL_LOAD_UBYTE', 'SQ_GLOBAL_LOAD_USHORT', - 'SQ_GLOBAL_STORE_BYTE', 'SQ_GLOBAL_STORE_DWORD', - 'SQ_GLOBAL_STORE_DWORDX2', 'SQ_GLOBAL_STORE_DWORDX3', - 'SQ_GLOBAL_STORE_DWORDX4', 'SQ_GLOBAL_STORE_SHORT', - 'SQ_GS_OP_CUT', 'SQ_GS_OP_EMIT', 'SQ_GS_OP_EMIT_CUT', - 'SQ_GS_OP_NOP', 'SQ_GT', 'SQ_HWREG_ID_SHIFT', 'SQ_HWREG_ID_SIZE', - 'SQ_HWREG_OFFSET_SHIFT', 'SQ_HWREG_OFFSET_SIZE', - 'SQ_HWREG_SIZE_SHIFT', 'SQ_HWREG_SIZE_SIZE', 'SQ_HW_REG_FLUSH_IB', - 'SQ_HW_REG_GPR_ALLOC', 'SQ_HW_REG_HW_ID', 'SQ_HW_REG_IB_DBG0', - 'SQ_HW_REG_IB_DBG1', 'SQ_HW_REG_IB_STS', 'SQ_HW_REG_INST_DW0', - 'SQ_HW_REG_INST_DW1', 'SQ_HW_REG_LDS_ALLOC', 'SQ_HW_REG_MODE', - 'SQ_HW_REG_PC_HI', 'SQ_HW_REG_PC_LO', 'SQ_HW_REG_SH_MEM_BASES', - 'SQ_HW_REG_SQ_SHADER_TBA_HI', 'SQ_HW_REG_SQ_SHADER_TBA_LO', - 'SQ_HW_REG_SQ_SHADER_TMA_HI', 'SQ_HW_REG_SQ_SHADER_TMA_LO', - 'SQ_HW_REG_STATUS', 'SQ_HW_REG_TRAPSTS', 'SQ_IBUF_IB_DRET', - 'SQ_IBUF_IB_EMPTY_WAIT_DRET', 'SQ_IBUF_IB_EMPTY_WAIT_GNT', - 'SQ_IBUF_IB_IDLE', 'SQ_IBUF_IB_INI_WAIT_DRET', - 'SQ_IBUF_IB_INI_WAIT_GNT', 'SQ_IBUF_IB_LE_4DW', - 'SQ_IBUF_IB_WAIT_DRET', 'SQ_IBUF_ST', 'SQ_IMAGE_ATOMIC_ADD', - 'SQ_IMAGE_ATOMIC_AND', 'SQ_IMAGE_ATOMIC_CMPSWAP', - 'SQ_IMAGE_ATOMIC_DEC', 'SQ_IMAGE_ATOMIC_INC', - 'SQ_IMAGE_ATOMIC_OR', 'SQ_IMAGE_ATOMIC_SMAX', - 'SQ_IMAGE_ATOMIC_SMIN', 'SQ_IMAGE_ATOMIC_SUB', - 'SQ_IMAGE_ATOMIC_SWAP', 'SQ_IMAGE_ATOMIC_UMAX', - 'SQ_IMAGE_ATOMIC_UMIN', 'SQ_IMAGE_ATOMIC_XOR', 'SQ_IMAGE_GATHER4', - 'SQ_IMAGE_GATHER4H', 'SQ_IMAGE_GATHER4H_PCK', - 'SQ_IMAGE_GATHER4_B', 'SQ_IMAGE_GATHER4_B_CL', - 'SQ_IMAGE_GATHER4_B_CL_O', 'SQ_IMAGE_GATHER4_B_O', - 'SQ_IMAGE_GATHER4_C', 'SQ_IMAGE_GATHER4_CL', - 'SQ_IMAGE_GATHER4_CL_O', 'SQ_IMAGE_GATHER4_C_B', - 'SQ_IMAGE_GATHER4_C_B_CL', 'SQ_IMAGE_GATHER4_C_B_CL_O', - 'SQ_IMAGE_GATHER4_C_B_O', 'SQ_IMAGE_GATHER4_C_CL', - 'SQ_IMAGE_GATHER4_C_CL_O', 'SQ_IMAGE_GATHER4_C_L', - 'SQ_IMAGE_GATHER4_C_LZ', 'SQ_IMAGE_GATHER4_C_LZ_O', - 'SQ_IMAGE_GATHER4_C_L_O', 'SQ_IMAGE_GATHER4_C_O', - 'SQ_IMAGE_GATHER4_L', 'SQ_IMAGE_GATHER4_LZ', - 'SQ_IMAGE_GATHER4_LZ_O', 'SQ_IMAGE_GATHER4_L_O', - 'SQ_IMAGE_GATHER4_O', 'SQ_IMAGE_GATHER8H_PCK', 'SQ_IMAGE_GET_LOD', - 'SQ_IMAGE_GET_RESINFO', 'SQ_IMAGE_LOAD', 'SQ_IMAGE_LOAD_MIP', - 'SQ_IMAGE_LOAD_MIP_PCK', 'SQ_IMAGE_LOAD_MIP_PCK_SGN', - 'SQ_IMAGE_LOAD_PCK', 'SQ_IMAGE_LOAD_PCK_SGN', 'SQ_IMAGE_RSRC256', - 'SQ_IMAGE_SAMPLE', 'SQ_IMAGE_SAMPLER', 'SQ_IMAGE_SAMPLE_B', - 'SQ_IMAGE_SAMPLE_B_CL', 'SQ_IMAGE_SAMPLE_B_CL_O', - 'SQ_IMAGE_SAMPLE_B_O', 'SQ_IMAGE_SAMPLE_C', 'SQ_IMAGE_SAMPLE_CD', - 'SQ_IMAGE_SAMPLE_CD_CL', 'SQ_IMAGE_SAMPLE_CD_CL_O', - 'SQ_IMAGE_SAMPLE_CD_O', 'SQ_IMAGE_SAMPLE_CL', - 'SQ_IMAGE_SAMPLE_CL_O', 'SQ_IMAGE_SAMPLE_C_B', - 'SQ_IMAGE_SAMPLE_C_B_CL', 'SQ_IMAGE_SAMPLE_C_B_CL_O', - 'SQ_IMAGE_SAMPLE_C_B_O', 'SQ_IMAGE_SAMPLE_C_CD', - 'SQ_IMAGE_SAMPLE_C_CD_CL', 'SQ_IMAGE_SAMPLE_C_CD_CL_O', - 'SQ_IMAGE_SAMPLE_C_CD_O', 'SQ_IMAGE_SAMPLE_C_CL', - 'SQ_IMAGE_SAMPLE_C_CL_O', 'SQ_IMAGE_SAMPLE_C_D', - 'SQ_IMAGE_SAMPLE_C_D_CL', 'SQ_IMAGE_SAMPLE_C_D_CL_O', - 'SQ_IMAGE_SAMPLE_C_D_O', 'SQ_IMAGE_SAMPLE_C_L', - 'SQ_IMAGE_SAMPLE_C_LZ', 'SQ_IMAGE_SAMPLE_C_LZ_O', - 'SQ_IMAGE_SAMPLE_C_L_O', 'SQ_IMAGE_SAMPLE_C_O', - 'SQ_IMAGE_SAMPLE_D', 'SQ_IMAGE_SAMPLE_D_CL', - 'SQ_IMAGE_SAMPLE_D_CL_O', 'SQ_IMAGE_SAMPLE_D_O', - 'SQ_IMAGE_SAMPLE_L', 'SQ_IMAGE_SAMPLE_LZ', 'SQ_IMAGE_SAMPLE_LZ_O', - 'SQ_IMAGE_SAMPLE_L_O', 'SQ_IMAGE_SAMPLE_O', 'SQ_IMAGE_STORE', - 'SQ_IMAGE_STORE_MIP', 'SQ_IMAGE_STORE_MIP_PCK', - 'SQ_IMAGE_STORE_PCK', 'SQ_IMG_FILTER_MODE_BLEND', - 'SQ_IMG_FILTER_MODE_MAX', 'SQ_IMG_FILTER_MODE_MIN', - 'SQ_IMG_FILTER_TYPE', 'SQ_IND_CMD_CMD', 'SQ_IND_CMD_CMD_DEBUG', - 'SQ_IND_CMD_CMD_KILL', 'SQ_IND_CMD_CMD_NULL', - 'SQ_IND_CMD_CMD_SAVECTX', 'SQ_IND_CMD_CMD_SETFATALHALT', - 'SQ_IND_CMD_CMD_SETHALT', 'SQ_IND_CMD_CMD_SET_SPI_PRIO', - 'SQ_IND_CMD_CMD_TRAP', 'SQ_IND_CMD_MODE', - 'SQ_IND_CMD_MODE_BROADCAST', 'SQ_IND_CMD_MODE_BROADCAST_ME', - 'SQ_IND_CMD_MODE_BROADCAST_PIPE', - 'SQ_IND_CMD_MODE_BROADCAST_QUEUE', 'SQ_IND_CMD_MODE_SINGLE', - 'SQ_INST_STR_IB_WAVE2ID_NORMAL_INST_AV', - 'SQ_INST_STR_IB_WAVE_INST_SKIP_AV', - 'SQ_INST_STR_IB_WAVE_INTERNAL_INST_AV', - 'SQ_INST_STR_IB_WAVE_NOP_SLEEP_WAIT', 'SQ_INST_STR_IB_WAVE_NORML', - 'SQ_INST_STR_IB_WAVE_PC_FROM_SGPR_MSG_WAIT', - 'SQ_INST_STR_IB_WAVE_SETVSKIP_ST0', - 'SQ_INST_STR_IB_WAVE_SETVSKIP_ST1', 'SQ_INST_STR_ST', - 'SQ_INTERRUPT_WORD_ENCODING', 'SQ_INTERRUPT_WORD_ENCODING_AUTO', - 'SQ_INTERRUPT_WORD_ENCODING_ERROR', - 'SQ_INTERRUPT_WORD_ENCODING_INST', 'SQ_L1', 'SQ_L10', 'SQ_L11', - 'SQ_L12', 'SQ_L13', 'SQ_L14', 'SQ_L15', 'SQ_L2', 'SQ_L3', 'SQ_L4', - 'SQ_L5', 'SQ_L6', 'SQ_L7', 'SQ_L8', 'SQ_L9', - 'SQ_LB_CTR_SEL_ALU_CYCLES', 'SQ_LB_CTR_SEL_ALU_STALLS', - 'SQ_LB_CTR_SEL_DCACHE_STALLS', 'SQ_LB_CTR_SEL_ICACHE_STALLS', - 'SQ_LB_CTR_SEL_RESERVED0', 'SQ_LB_CTR_SEL_RESERVED1', - 'SQ_LB_CTR_SEL_RESERVED2', 'SQ_LB_CTR_SEL_RESERVED3', - 'SQ_LB_CTR_SEL_RESERVED4', 'SQ_LB_CTR_SEL_RESERVED5', - 'SQ_LB_CTR_SEL_RESERVED6', 'SQ_LB_CTR_SEL_SALU_CYCLES', - 'SQ_LB_CTR_SEL_SCALAR_STALLS', 'SQ_LB_CTR_SEL_SMEM_CYCLES', - 'SQ_LB_CTR_SEL_TEX_CYCLES', 'SQ_LB_CTR_SEL_TEX_STALLS', - 'SQ_LB_CTR_SEL_VALUES', 'SQ_LE', 'SQ_LG', 'SQ_LT', 'SQ_M0', - 'SQ_MAX_PGM_SGPRS', 'SQ_MAX_PGM_VGPRS', - 'SQ_MSG_EARLY_PRIM_DEALLOC', 'SQ_MSG_GS', 'SQ_MSG_GS_ALLOC_REQ', - 'SQ_MSG_GS_DONE', 'SQ_MSG_HALT_WAVES', 'SQ_MSG_INTERRUPT', - 'SQ_MSG_ORDERED_PS_DONE', 'SQ_MSG_SAVEWAVE', - 'SQ_MSG_STALL_WAVE_GEN', 'SQ_MSG_SYSMSG', 'SQ_NE', 'SQ_NEQ', - 'SQ_NGE', 'SQ_NGT', 'SQ_NLE', 'SQ_NLG', 'SQ_NLT', 'SQ_NON_EVENT', - 'SQ_NUM_ATTR', 'SQ_NUM_SGPR', 'SQ_NUM_TTMP', 'SQ_NUM_VGPR', - 'SQ_O', 'SQ_OMOD_D2', 'SQ_OMOD_M2', 'SQ_OMOD_M4', 'SQ_OMOD_OFF', - 'SQ_PARAM_P0', 'SQ_PARAM_P10', 'SQ_PARAM_P20', 'SQ_PERF_SEL', - 'SQ_PERF_SEL_ACCUM_PREV', 'SQ_PERF_SEL_ACCUM_PREV_HIRES', - 'SQ_PERF_SEL_ACTIVE_INST_ANY', 'SQ_PERF_SEL_ACTIVE_INST_EXP_GDS', - 'SQ_PERF_SEL_ACTIVE_INST_FLAT', 'SQ_PERF_SEL_ACTIVE_INST_LDS', - 'SQ_PERF_SEL_ACTIVE_INST_MISC', 'SQ_PERF_SEL_ACTIVE_INST_SCA', - 'SQ_PERF_SEL_ACTIVE_INST_VALU', 'SQ_PERF_SEL_ACTIVE_INST_VMEM', - 'SQ_PERF_SEL_ATC_INSTS_SMEM', 'SQ_PERF_SEL_ATC_INSTS_SMEM_REPLAY', - 'SQ_PERF_SEL_ATC_INSTS_VMEM', 'SQ_PERF_SEL_ATC_INSTS_VMEM_REPLAY', - 'SQ_PERF_SEL_ATC_INST_LEVEL_SMEM', - 'SQ_PERF_SEL_ATC_INST_LEVEL_VMEM', 'SQ_PERF_SEL_ATC_XNACK_ALL', - 'SQ_PERF_SEL_ATC_XNACK_FIFO_FULL', 'SQ_PERF_SEL_ATC_XNACK_FIRST', - 'SQ_PERF_SEL_BUSY_CU_CYCLES', 'SQ_PERF_SEL_BUSY_CYCLES', - 'SQ_PERF_SEL_CBRANCH_FORK', 'SQ_PERF_SEL_CBRANCH_FORK_SPLIT', - 'SQ_PERF_SEL_CYCLES', 'SQ_PERF_SEL_DUMMY_END', - 'SQ_PERF_SEL_DUMMY_LAST', 'SQ_PERF_SEL_EVENTS', - 'SQ_PERF_SEL_EXP_REQ_FIFO_FULL', - 'SQ_PERF_SEL_FLAT_SRC_CD_CONFLICT', 'SQ_PERF_SEL_IFETCH', - 'SQ_PERF_SEL_IFETCH_LEVEL', 'SQ_PERF_SEL_IFETCH_XNACK', - 'SQ_PERF_SEL_INSTS', 'SQ_PERF_SEL_INSTS_BRANCH', - 'SQ_PERF_SEL_INSTS_EXP', 'SQ_PERF_SEL_INSTS_EXP_GDS', - 'SQ_PERF_SEL_INSTS_FLAT', 'SQ_PERF_SEL_INSTS_FLAT_LDS_ONLY', - 'SQ_PERF_SEL_INSTS_FLAT_REPLAY', 'SQ_PERF_SEL_INSTS_GDS', - 'SQ_PERF_SEL_INSTS_LDS', 'SQ_PERF_SEL_INSTS_SALU', - 'SQ_PERF_SEL_INSTS_SENDMSG', 'SQ_PERF_SEL_INSTS_SMEM', - 'SQ_PERF_SEL_INSTS_SMEM_NORM', - 'SQ_PERF_SEL_INSTS_SMEM_NORM_REPLAY', - 'SQ_PERF_SEL_INSTS_SMEM_REPLAY', 'SQ_PERF_SEL_INSTS_VALU', - 'SQ_PERF_SEL_INSTS_VMEM', 'SQ_PERF_SEL_INSTS_VMEM_RD', - 'SQ_PERF_SEL_INSTS_VMEM_RD_REPLAY', - 'SQ_PERF_SEL_INSTS_VMEM_REPLAY', 'SQ_PERF_SEL_INSTS_VMEM_WR', - 'SQ_PERF_SEL_INSTS_VMEM_WR_REPLAY', 'SQ_PERF_SEL_INSTS_VSKIPPED', - 'SQ_PERF_SEL_INST_CYCLES_EXP', 'SQ_PERF_SEL_INST_CYCLES_GDS', - 'SQ_PERF_SEL_INST_CYCLES_SALU', 'SQ_PERF_SEL_INST_CYCLES_SMEM', - 'SQ_PERF_SEL_INST_CYCLES_VMEM_ADDR', - 'SQ_PERF_SEL_INST_CYCLES_VMEM_CMD', - 'SQ_PERF_SEL_INST_CYCLES_VMEM_DATA', - 'SQ_PERF_SEL_INST_CYCLES_VMEM_RD', - 'SQ_PERF_SEL_INST_CYCLES_VMEM_WR', 'SQ_PERF_SEL_INST_LEVEL_EXP', - 'SQ_PERF_SEL_INST_LEVEL_GDS', 'SQ_PERF_SEL_INST_LEVEL_LDS', - 'SQ_PERF_SEL_INST_LEVEL_SMEM', 'SQ_PERF_SEL_INST_LEVEL_VMEM', - 'SQ_PERF_SEL_ITEMS', 'SQ_PERF_SEL_LDS_ADDR_CONFLICT', - 'SQ_PERF_SEL_LDS_ATOMIC_RETURN', 'SQ_PERF_SEL_LDS_BANK_CONFLICT', - 'SQ_PERF_SEL_LDS_CMD_FIFO_FULL', 'SQ_PERF_SEL_LDS_DATA_FIFO_FULL', - 'SQ_PERF_SEL_LDS_IDX_ACTIVE', 'SQ_PERF_SEL_LDS_MEM_VIOLATIONS', - 'SQ_PERF_SEL_LDS_SRC_CD_CONFLICT', - 'SQ_PERF_SEL_LDS_UNALIGNED_STALL', 'SQ_PERF_SEL_LEVEL_WAVES', - 'SQ_PERF_SEL_LEVEL_WAVES_CU', 'SQ_PERF_SEL_MSG_CNTR', - 'SQ_PERF_SEL_MSG_GSCNT', 'SQ_PERF_SEL_MSG_INTERRUPT', - 'SQ_PERF_SEL_MSG_PERF', 'SQ_PERF_SEL_NONE', - 'SQ_PERF_SEL_POWER_ALU_BUSY', 'SQ_PERF_SEL_POWER_GPR_RD', - 'SQ_PERF_SEL_POWER_GPR_WR', 'SQ_PERF_SEL_POWER_LDS_BUSY', - 'SQ_PERF_SEL_POWER_TEX_BUSY', 'SQ_PERF_SEL_POWER_VALU', - 'SQ_PERF_SEL_POWER_VALU0', 'SQ_PERF_SEL_POWER_VALU1', - 'SQ_PERF_SEL_POWER_VALU2', 'SQ_PERF_SEL_PT_POWER_STALL', - 'SQ_PERF_SEL_QUADS', 'SQ_PERF_SEL_SRC_CD_BUSY', - 'SQ_PERF_SEL_SURF_SYNCS', 'SQ_PERF_SEL_THREAD_CYCLES_VALU', - 'SQ_PERF_SEL_THREAD_CYCLES_VALU_MAX', 'SQ_PERF_SEL_TLB_SHOOTDOWN', - 'SQ_PERF_SEL_TLB_SHOOTDOWN_CYCLES', - 'SQ_PERF_SEL_TTRACE_INFLIGHT_REQS', 'SQ_PERF_SEL_TTRACE_REQS', - 'SQ_PERF_SEL_TTRACE_STALL', 'SQ_PERF_SEL_USER0', - 'SQ_PERF_SEL_USER1', 'SQ_PERF_SEL_USER10', 'SQ_PERF_SEL_USER11', - 'SQ_PERF_SEL_USER12', 'SQ_PERF_SEL_USER13', 'SQ_PERF_SEL_USER14', - 'SQ_PERF_SEL_USER15', 'SQ_PERF_SEL_USER2', 'SQ_PERF_SEL_USER3', - 'SQ_PERF_SEL_USER4', 'SQ_PERF_SEL_USER5', 'SQ_PERF_SEL_USER6', - 'SQ_PERF_SEL_USER7', 'SQ_PERF_SEL_USER8', 'SQ_PERF_SEL_USER9', - 'SQ_PERF_SEL_USER_LEVEL0', 'SQ_PERF_SEL_USER_LEVEL1', - 'SQ_PERF_SEL_USER_LEVEL10', 'SQ_PERF_SEL_USER_LEVEL11', - 'SQ_PERF_SEL_USER_LEVEL12', 'SQ_PERF_SEL_USER_LEVEL13', - 'SQ_PERF_SEL_USER_LEVEL14', 'SQ_PERF_SEL_USER_LEVEL15', - 'SQ_PERF_SEL_USER_LEVEL2', 'SQ_PERF_SEL_USER_LEVEL3', - 'SQ_PERF_SEL_USER_LEVEL4', 'SQ_PERF_SEL_USER_LEVEL5', - 'SQ_PERF_SEL_USER_LEVEL6', 'SQ_PERF_SEL_USER_LEVEL7', - 'SQ_PERF_SEL_USER_LEVEL8', 'SQ_PERF_SEL_USER_LEVEL9', - 'SQ_PERF_SEL_UTCL1_LFIFO_FULL', - 'SQ_PERF_SEL_UTCL1_PERMISSION_MISS', 'SQ_PERF_SEL_UTCL1_REQUEST', - 'SQ_PERF_SEL_UTCL1_STALL_INFLIGHT_MAX', - 'SQ_PERF_SEL_UTCL1_STALL_LFIFO_NOT_RES', - 'SQ_PERF_SEL_UTCL1_STALL_LRU_INFLIGHT', - 'SQ_PERF_SEL_UTCL1_STALL_MISSFIFO_FULL', - 'SQ_PERF_SEL_UTCL1_STALL_UTCL2_REQ_OUT_OF_CREDITS', - 'SQ_PERF_SEL_UTCL1_TRANSLATION_MISS', - 'SQ_PERF_SEL_VALU_DEP_STALL', 'SQ_PERF_SEL_VALU_LDS_DIRECT_RD', - 'SQ_PERF_SEL_VALU_LDS_INTERP_OP', - 'SQ_PERF_SEL_VALU_SRC_C_CONFLICT', 'SQ_PERF_SEL_VALU_STARVE', - 'SQ_PERF_SEL_VMEM_EX_DATA_REG_BUSY', - 'SQ_PERF_SEL_VMEM_RD_SRC_CD_CONFLICT', - 'SQ_PERF_SEL_VMEM_TA_ADDR_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_TA_CMD_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_WR_SRC_CD_CONFLICT', - 'SQ_PERF_SEL_VMEM_WR_TA_DATA_FIFO_FULL', 'SQ_PERF_SEL_WAIT_ANY', - 'SQ_PERF_SEL_WAIT_BARRIER', 'SQ_PERF_SEL_WAIT_CNT_ANY', - 'SQ_PERF_SEL_WAIT_CNT_EXP', 'SQ_PERF_SEL_WAIT_CNT_LGKM', - 'SQ_PERF_SEL_WAIT_CNT_VM', 'SQ_PERF_SEL_WAIT_EXP_ALLOC', - 'SQ_PERF_SEL_WAIT_IFETCH', 'SQ_PERF_SEL_WAIT_INST_ANY', - 'SQ_PERF_SEL_WAIT_INST_EXP_GDS', 'SQ_PERF_SEL_WAIT_INST_FLAT', - 'SQ_PERF_SEL_WAIT_INST_LDS', 'SQ_PERF_SEL_WAIT_INST_MISC', - 'SQ_PERF_SEL_WAIT_INST_SCA', 'SQ_PERF_SEL_WAIT_INST_VALU', - 'SQ_PERF_SEL_WAIT_INST_VMEM', 'SQ_PERF_SEL_WAIT_OTHER', - 'SQ_PERF_SEL_WAIT_SLEEP', 'SQ_PERF_SEL_WAIT_SLEEP_XNACK', - 'SQ_PERF_SEL_WAIT_TTRACE', 'SQ_PERF_SEL_WAVES', - 'SQ_PERF_SEL_WAVES_CU', 'SQ_PERF_SEL_WAVES_EQ_64', - 'SQ_PERF_SEL_WAVES_LT_16', 'SQ_PERF_SEL_WAVES_LT_32', - 'SQ_PERF_SEL_WAVES_LT_48', 'SQ_PERF_SEL_WAVES_LT_64', - 'SQ_PERF_SEL_WAVES_RESTORED', 'SQ_PERF_SEL_WAVES_SAVED', - 'SQ_PERF_SEL_WAVE_CYCLES', 'SQ_PERF_SEL_WAVE_READY', 'SQ_R1', - 'SQ_R10', 'SQ_R11', 'SQ_R12', 'SQ_R13', 'SQ_R14', 'SQ_R15', - 'SQ_R2', 'SQ_R3', 'SQ_R4', 'SQ_R5', 'SQ_R6', 'SQ_R7', 'SQ_R8', - 'SQ_R9', 'SQ_ROUND_MINUS_INFINITY', 'SQ_ROUND_MODE', - 'SQ_ROUND_NEAREST_EVEN', 'SQ_ROUND_PLUS_INFINITY', - 'SQ_ROUND_TO_ZERO', 'SQ_RSRC_BUF', 'SQ_RSRC_BUF_RSVD_1', - 'SQ_RSRC_BUF_RSVD_2', 'SQ_RSRC_BUF_RSVD_3', 'SQ_RSRC_BUF_TYPE', - 'SQ_RSRC_FLAT', 'SQ_RSRC_FLAT_RSVD_0', 'SQ_RSRC_FLAT_RSVD_2', - 'SQ_RSRC_FLAT_RSVD_3', 'SQ_RSRC_FLAT_TYPE', 'SQ_RSRC_IMG_1D', - 'SQ_RSRC_IMG_1D_ARRAY', 'SQ_RSRC_IMG_2D', 'SQ_RSRC_IMG_2D_ARRAY', - 'SQ_RSRC_IMG_2D_MSAA', 'SQ_RSRC_IMG_2D_MSAA_ARRAY', - 'SQ_RSRC_IMG_3D', 'SQ_RSRC_IMG_CUBE', 'SQ_RSRC_IMG_RSVD_0', - 'SQ_RSRC_IMG_RSVD_1', 'SQ_RSRC_IMG_RSVD_2', 'SQ_RSRC_IMG_RSVD_3', - 'SQ_RSRC_IMG_RSVD_4', 'SQ_RSRC_IMG_RSVD_5', 'SQ_RSRC_IMG_RSVD_6', - 'SQ_RSRC_IMG_RSVD_7', 'SQ_RSRC_IMG_TYPE', 'SQ_SCRATCH', - 'SQ_SCRATCH_LOAD_DWORD', 'SQ_SCRATCH_LOAD_DWORDX2', - 'SQ_SCRATCH_LOAD_DWORDX3', 'SQ_SCRATCH_LOAD_DWORDX4', - 'SQ_SCRATCH_LOAD_SBYTE', 'SQ_SCRATCH_LOAD_SSHORT', - 'SQ_SCRATCH_LOAD_UBYTE', 'SQ_SCRATCH_LOAD_USHORT', - 'SQ_SCRATCH_STORE_BYTE', 'SQ_SCRATCH_STORE_DWORD', - 'SQ_SCRATCH_STORE_DWORDX2', 'SQ_SCRATCH_STORE_DWORDX3', - 'SQ_SCRATCH_STORE_DWORDX4', 'SQ_SCRATCH_STORE_SHORT', - 'SQ_SDWA_BYTE_0', 'SQ_SDWA_BYTE_1', 'SQ_SDWA_BYTE_2', - 'SQ_SDWA_BYTE_3', 'SQ_SDWA_DWORD', 'SQ_SDWA_UNUSED_PAD', - 'SQ_SDWA_UNUSED_PRESERVE', 'SQ_SDWA_UNUSED_SEXT', - 'SQ_SDWA_WORD_0', 'SQ_SDWA_WORD_1', 'SQ_SEL_0', 'SQ_SEL_1', - 'SQ_SEL_RESERVED_0', 'SQ_SEL_RESERVED_1', 'SQ_SEL_W', 'SQ_SEL_X', - 'SQ_SEL_XYZW01', 'SQ_SEL_Y', 'SQ_SEL_Z', 'SQ_SENDMSG_GSOP_SHIFT', - 'SQ_SENDMSG_GSOP_SIZE', 'SQ_SENDMSG_MSG_SHIFT', - 'SQ_SENDMSG_MSG_SIZE', 'SQ_SENDMSG_STREAMID_SHIFT', - 'SQ_SENDMSG_STREAMID_SIZE', 'SQ_SENDMSG_SYSTEM_SHIFT', - 'SQ_SENDMSG_SYSTEM_SIZE', 'SQ_SGPR0', 'SQ_SRC_0', 'SQ_SRC_0_5', - 'SQ_SRC_1', 'SQ_SRC_10_INT', 'SQ_SRC_11_INT', 'SQ_SRC_12_INT', - 'SQ_SRC_13_INT', 'SQ_SRC_14_INT', 'SQ_SRC_15_INT', - 'SQ_SRC_16_INT', 'SQ_SRC_17_INT', 'SQ_SRC_18_INT', - 'SQ_SRC_19_INT', 'SQ_SRC_1_INT', 'SQ_SRC_2', 'SQ_SRC_20_INT', - 'SQ_SRC_21_INT', 'SQ_SRC_22_INT', 'SQ_SRC_23_INT', - 'SQ_SRC_24_INT', 'SQ_SRC_25_INT', 'SQ_SRC_26_INT', - 'SQ_SRC_27_INT', 'SQ_SRC_28_INT', 'SQ_SRC_29_INT', 'SQ_SRC_2_INT', - 'SQ_SRC_30_INT', 'SQ_SRC_31_INT', 'SQ_SRC_32_INT', - 'SQ_SRC_33_INT', 'SQ_SRC_34_INT', 'SQ_SRC_35_INT', - 'SQ_SRC_36_INT', 'SQ_SRC_37_INT', 'SQ_SRC_38_INT', - 'SQ_SRC_39_INT', 'SQ_SRC_3_INT', 'SQ_SRC_4', 'SQ_SRC_40_INT', - 'SQ_SRC_41_INT', 'SQ_SRC_42_INT', 'SQ_SRC_43_INT', - 'SQ_SRC_44_INT', 'SQ_SRC_45_INT', 'SQ_SRC_46_INT', - 'SQ_SRC_47_INT', 'SQ_SRC_48_INT', 'SQ_SRC_49_INT', 'SQ_SRC_4_INT', - 'SQ_SRC_50_INT', 'SQ_SRC_51_INT', 'SQ_SRC_52_INT', - 'SQ_SRC_53_INT', 'SQ_SRC_54_INT', 'SQ_SRC_55_INT', - 'SQ_SRC_56_INT', 'SQ_SRC_57_INT', 'SQ_SRC_58_INT', - 'SQ_SRC_59_INT', 'SQ_SRC_5_INT', 'SQ_SRC_60_INT', 'SQ_SRC_61_INT', - 'SQ_SRC_62_INT', 'SQ_SRC_63_INT', 'SQ_SRC_64_INT', 'SQ_SRC_6_INT', - 'SQ_SRC_7_INT', 'SQ_SRC_8_INT', 'SQ_SRC_9_INT', 'SQ_SRC_DPP', - 'SQ_SRC_EXECZ', 'SQ_SRC_INV_2PI', 'SQ_SRC_LDS_DIRECT', - 'SQ_SRC_LITERAL', 'SQ_SRC_M_0_5', 'SQ_SRC_M_1', 'SQ_SRC_M_10_INT', - 'SQ_SRC_M_11_INT', 'SQ_SRC_M_12_INT', 'SQ_SRC_M_13_INT', - 'SQ_SRC_M_14_INT', 'SQ_SRC_M_15_INT', 'SQ_SRC_M_16_INT', - 'SQ_SRC_M_1_INT', 'SQ_SRC_M_2', 'SQ_SRC_M_2_INT', - 'SQ_SRC_M_3_INT', 'SQ_SRC_M_4', 'SQ_SRC_M_4_INT', - 'SQ_SRC_M_5_INT', 'SQ_SRC_M_6_INT', 'SQ_SRC_M_7_INT', - 'SQ_SRC_M_8_INT', 'SQ_SRC_M_9_INT', 'SQ_SRC_POPS_EXITING_WAVE_ID', - 'SQ_SRC_PRIVATE_BASE', 'SQ_SRC_PRIVATE_LIMIT', 'SQ_SRC_SCC', - 'SQ_SRC_SDWA', 'SQ_SRC_SHARED_BASE', 'SQ_SRC_SHARED_LIMIT', - 'SQ_SRC_VCCZ', 'SQ_SRC_VGPR0', 'SQ_SRC_VGPR_BIT', - 'SQ_SYSMSG_OP_ECC_ERR_INTERRUPT', 'SQ_SYSMSG_OP_HOST_TRAP_ACK', - 'SQ_SYSMSG_OP_ILLEGAL_INST_INTERRUPT', - 'SQ_SYSMSG_OP_MEMVIOL_INTERRUPT', 'SQ_SYSMSG_OP_REG_RD', - 'SQ_SYSMSG_OP_TTRACE_PC', 'SQ_S_ABSDIFF_I32', 'SQ_S_ABS_I32', - 'SQ_S_ADDC_U32', 'SQ_S_ADDK_I32', 'SQ_S_ADD_I32', 'SQ_S_ADD_U32', - 'SQ_S_ANDN1_SAVEEXEC_B64', 'SQ_S_ANDN1_WREXEC_B64', - 'SQ_S_ANDN2_B32', 'SQ_S_ANDN2_B64', 'SQ_S_ANDN2_SAVEEXEC_B64', - 'SQ_S_ANDN2_WREXEC_B64', 'SQ_S_AND_B32', 'SQ_S_AND_B64', - 'SQ_S_AND_SAVEEXEC_B64', 'SQ_S_ASHR_I32', 'SQ_S_ASHR_I64', - 'SQ_S_ATC_PROBE', 'SQ_S_ATC_PROBE_BUFFER', 'SQ_S_ATOMIC_ADD', - 'SQ_S_ATOMIC_ADD_X2', 'SQ_S_ATOMIC_AND', 'SQ_S_ATOMIC_AND_X2', - 'SQ_S_ATOMIC_CMPSWAP', 'SQ_S_ATOMIC_CMPSWAP_X2', - 'SQ_S_ATOMIC_DEC', 'SQ_S_ATOMIC_DEC_X2', 'SQ_S_ATOMIC_INC', - 'SQ_S_ATOMIC_INC_X2', 'SQ_S_ATOMIC_OR', 'SQ_S_ATOMIC_OR_X2', - 'SQ_S_ATOMIC_SMAX', 'SQ_S_ATOMIC_SMAX_X2', 'SQ_S_ATOMIC_SMIN', - 'SQ_S_ATOMIC_SMIN_X2', 'SQ_S_ATOMIC_SUB', 'SQ_S_ATOMIC_SUB_X2', - 'SQ_S_ATOMIC_SWAP', 'SQ_S_ATOMIC_SWAP_X2', 'SQ_S_ATOMIC_UMAX', - 'SQ_S_ATOMIC_UMAX_X2', 'SQ_S_ATOMIC_UMIN', 'SQ_S_ATOMIC_UMIN_X2', - 'SQ_S_ATOMIC_XOR', 'SQ_S_ATOMIC_XOR_X2', 'SQ_S_BARRIER', - 'SQ_S_BCNT0_I32_B32', 'SQ_S_BCNT0_I32_B64', 'SQ_S_BCNT1_I32_B32', - 'SQ_S_BCNT1_I32_B64', 'SQ_S_BFE_I32', 'SQ_S_BFE_I64', - 'SQ_S_BFE_U32', 'SQ_S_BFE_U64', 'SQ_S_BFM_B32', 'SQ_S_BFM_B64', - 'SQ_S_BITCMP0_B32', 'SQ_S_BITCMP0_B64', 'SQ_S_BITCMP1_B32', - 'SQ_S_BITCMP1_B64', 'SQ_S_BITREPLICATE_B64_B32', - 'SQ_S_BITSET0_B32', 'SQ_S_BITSET0_B64', 'SQ_S_BITSET1_B32', - 'SQ_S_BITSET1_B64', 'SQ_S_BRANCH', 'SQ_S_BREV_B32', - 'SQ_S_BREV_B64', 'SQ_S_BUFFER_ATOMIC_ADD', - 'SQ_S_BUFFER_ATOMIC_ADD_X2', 'SQ_S_BUFFER_ATOMIC_AND', - 'SQ_S_BUFFER_ATOMIC_AND_X2', 'SQ_S_BUFFER_ATOMIC_CMPSWAP', - 'SQ_S_BUFFER_ATOMIC_CMPSWAP_X2', 'SQ_S_BUFFER_ATOMIC_DEC', - 'SQ_S_BUFFER_ATOMIC_DEC_X2', 'SQ_S_BUFFER_ATOMIC_INC', - 'SQ_S_BUFFER_ATOMIC_INC_X2', 'SQ_S_BUFFER_ATOMIC_OR', - 'SQ_S_BUFFER_ATOMIC_OR_X2', 'SQ_S_BUFFER_ATOMIC_SMAX', - 'SQ_S_BUFFER_ATOMIC_SMAX_X2', 'SQ_S_BUFFER_ATOMIC_SMIN', - 'SQ_S_BUFFER_ATOMIC_SMIN_X2', 'SQ_S_BUFFER_ATOMIC_SUB', - 'SQ_S_BUFFER_ATOMIC_SUB_X2', 'SQ_S_BUFFER_ATOMIC_SWAP', - 'SQ_S_BUFFER_ATOMIC_SWAP_X2', 'SQ_S_BUFFER_ATOMIC_UMAX', - 'SQ_S_BUFFER_ATOMIC_UMAX_X2', 'SQ_S_BUFFER_ATOMIC_UMIN', - 'SQ_S_BUFFER_ATOMIC_UMIN_X2', 'SQ_S_BUFFER_ATOMIC_XOR', - 'SQ_S_BUFFER_ATOMIC_XOR_X2', 'SQ_S_BUFFER_LOAD_DWORD', - 'SQ_S_BUFFER_LOAD_DWORDX16', 'SQ_S_BUFFER_LOAD_DWORDX2', - 'SQ_S_BUFFER_LOAD_DWORDX4', 'SQ_S_BUFFER_LOAD_DWORDX8', - 'SQ_S_BUFFER_STORE_DWORD', 'SQ_S_BUFFER_STORE_DWORDX2', - 'SQ_S_BUFFER_STORE_DWORDX4', 'SQ_S_CALL_B64', - 'SQ_S_CBRANCH_CDBGSYS', 'SQ_S_CBRANCH_CDBGSYS_AND_USER', - 'SQ_S_CBRANCH_CDBGSYS_OR_USER', 'SQ_S_CBRANCH_CDBGUSER', - 'SQ_S_CBRANCH_EXECNZ', 'SQ_S_CBRANCH_EXECZ', - 'SQ_S_CBRANCH_G_FORK', 'SQ_S_CBRANCH_I_FORK', 'SQ_S_CBRANCH_JOIN', - 'SQ_S_CBRANCH_SCC0', 'SQ_S_CBRANCH_SCC1', 'SQ_S_CBRANCH_VCCNZ', - 'SQ_S_CBRANCH_VCCZ', 'SQ_S_CMOVK_I32', 'SQ_S_CMOV_B32', - 'SQ_S_CMOV_B64', 'SQ_S_CMPK_EQ_I32', 'SQ_S_CMPK_EQ_U32', - 'SQ_S_CMPK_GE_I32', 'SQ_S_CMPK_GE_U32', 'SQ_S_CMPK_GT_I32', - 'SQ_S_CMPK_GT_U32', 'SQ_S_CMPK_LE_I32', 'SQ_S_CMPK_LE_U32', - 'SQ_S_CMPK_LG_I32', 'SQ_S_CMPK_LG_U32', 'SQ_S_CMPK_LT_I32', - 'SQ_S_CMPK_LT_U32', 'SQ_S_CMP_EQ_I32', 'SQ_S_CMP_EQ_U32', - 'SQ_S_CMP_EQ_U64', 'SQ_S_CMP_GE_I32', 'SQ_S_CMP_GE_U32', - 'SQ_S_CMP_GT_I32', 'SQ_S_CMP_GT_U32', 'SQ_S_CMP_LE_I32', - 'SQ_S_CMP_LE_U32', 'SQ_S_CMP_LG_I32', 'SQ_S_CMP_LG_U32', - 'SQ_S_CMP_LG_U64', 'SQ_S_CMP_LT_I32', 'SQ_S_CMP_LT_U32', - 'SQ_S_CSELECT_B32', 'SQ_S_CSELECT_B64', 'SQ_S_DCACHE_INV', - 'SQ_S_DCACHE_INV_VOL', 'SQ_S_DCACHE_WB', 'SQ_S_DCACHE_WB_VOL', - 'SQ_S_DECPERFLEVEL', 'SQ_S_ENDPGM', 'SQ_S_ENDPGM_ORDERED_PS_DONE', - 'SQ_S_ENDPGM_SAVED', 'SQ_S_FF0_I32_B32', 'SQ_S_FF0_I32_B64', - 'SQ_S_FF1_I32_B32', 'SQ_S_FF1_I32_B64', 'SQ_S_FLBIT_I32', - 'SQ_S_FLBIT_I32_B32', 'SQ_S_FLBIT_I32_B64', 'SQ_S_FLBIT_I32_I64', - 'SQ_S_GETPC_B64', 'SQ_S_GETREG_B32', 'SQ_S_GETREG_REGRD_B32', - 'SQ_S_ICACHE_INV', 'SQ_S_INCPERFLEVEL', 'SQ_S_LOAD_DWORD', - 'SQ_S_LOAD_DWORDX16', 'SQ_S_LOAD_DWORDX2', 'SQ_S_LOAD_DWORDX4', - 'SQ_S_LOAD_DWORDX8', 'SQ_S_LSHL1_ADD_U32', 'SQ_S_LSHL2_ADD_U32', - 'SQ_S_LSHL3_ADD_U32', 'SQ_S_LSHL4_ADD_U32', 'SQ_S_LSHL_B32', - 'SQ_S_LSHL_B64', 'SQ_S_LSHR_B32', 'SQ_S_LSHR_B64', 'SQ_S_MAX_I32', - 'SQ_S_MAX_U32', 'SQ_S_MEMREALTIME', 'SQ_S_MEMTIME', - 'SQ_S_MIN_I32', 'SQ_S_MIN_U32', 'SQ_S_MOVK_I32', - 'SQ_S_MOVRELD_B32', 'SQ_S_MOVRELD_B64', 'SQ_S_MOVRELS_B32', - 'SQ_S_MOVRELS_B64', 'SQ_S_MOV_B32', 'SQ_S_MOV_B64', - 'SQ_S_MOV_FED_B32', 'SQ_S_MOV_REGRD_B32', 'SQ_S_MULK_I32', - 'SQ_S_MUL_HI_I32', 'SQ_S_MUL_HI_U32', 'SQ_S_MUL_I32', - 'SQ_S_NAND_B32', 'SQ_S_NAND_B64', 'SQ_S_NAND_SAVEEXEC_B64', - 'SQ_S_NOP', 'SQ_S_NOR_B32', 'SQ_S_NOR_B64', - 'SQ_S_NOR_SAVEEXEC_B64', 'SQ_S_NOT_B32', 'SQ_S_NOT_B64', - 'SQ_S_ORN1_SAVEEXEC_B64', 'SQ_S_ORN2_B32', 'SQ_S_ORN2_B64', - 'SQ_S_ORN2_SAVEEXEC_B64', 'SQ_S_OR_B32', 'SQ_S_OR_B64', - 'SQ_S_OR_SAVEEXEC_B64', 'SQ_S_PACK_HH_B32_B16', - 'SQ_S_PACK_LH_B32_B16', 'SQ_S_PACK_LL_B32_B16', - 'SQ_S_QUADMASK_B32', 'SQ_S_QUADMASK_B64', 'SQ_S_RFE_B64', - 'SQ_S_RFE_RESTORE_B64', 'SQ_S_SCRATCH_LOAD_DWORD', - 'SQ_S_SCRATCH_LOAD_DWORDX2', 'SQ_S_SCRATCH_LOAD_DWORDX4', - 'SQ_S_SCRATCH_STORE_DWORD', 'SQ_S_SCRATCH_STORE_DWORDX2', - 'SQ_S_SCRATCH_STORE_DWORDX4', 'SQ_S_SENDMSG', 'SQ_S_SENDMSGHALT', - 'SQ_S_SETHALT', 'SQ_S_SETKILL', 'SQ_S_SETPC_B64', 'SQ_S_SETPRIO', - 'SQ_S_SETREG_B32', 'SQ_S_SETREG_IMM32_B32', 'SQ_S_SETVSKIP', - 'SQ_S_SET_GPR_IDX_IDX', 'SQ_S_SET_GPR_IDX_MODE', - 'SQ_S_SET_GPR_IDX_OFF', 'SQ_S_SET_GPR_IDX_ON', - 'SQ_S_SEXT_I32_I16', 'SQ_S_SEXT_I32_I8', 'SQ_S_SLEEP', - 'SQ_S_STORE_DWORD', 'SQ_S_STORE_DWORDX2', 'SQ_S_STORE_DWORDX4', - 'SQ_S_SUBB_U32', 'SQ_S_SUB_I32', 'SQ_S_SUB_U32', - 'SQ_S_SWAPPC_B64', 'SQ_S_TRAP', 'SQ_S_TTRACEDATA', 'SQ_S_WAITCNT', - 'SQ_S_WAKEUP', 'SQ_S_WQM_B32', 'SQ_S_WQM_B64', 'SQ_S_XNOR_B32', - 'SQ_S_XNOR_B64', 'SQ_S_XNOR_SAVEEXEC_B64', 'SQ_S_XOR_B32', - 'SQ_S_XOR_B64', 'SQ_S_XOR_SAVEEXEC_B64', 'SQ_T', - 'SQ_TBUFFER_LOAD_FORMAT_D16_X', 'SQ_TBUFFER_LOAD_FORMAT_D16_XY', - 'SQ_TBUFFER_LOAD_FORMAT_D16_XYZ', - 'SQ_TBUFFER_LOAD_FORMAT_D16_XYZW', 'SQ_TBUFFER_LOAD_FORMAT_X', - 'SQ_TBUFFER_LOAD_FORMAT_XY', 'SQ_TBUFFER_LOAD_FORMAT_XYZ', - 'SQ_TBUFFER_LOAD_FORMAT_XYZW', 'SQ_TBUFFER_STORE_FORMAT_D16_X', - 'SQ_TBUFFER_STORE_FORMAT_D16_XY', - 'SQ_TBUFFER_STORE_FORMAT_D16_XYZ', - 'SQ_TBUFFER_STORE_FORMAT_D16_XYZW', 'SQ_TBUFFER_STORE_FORMAT_X', - 'SQ_TBUFFER_STORE_FORMAT_XY', 'SQ_TBUFFER_STORE_FORMAT_XYZ', - 'SQ_TBUFFER_STORE_FORMAT_XYZW', 'SQ_TEX_ANISO_RATIO', - 'SQ_TEX_ANISO_RATIO_1', 'SQ_TEX_ANISO_RATIO_16', - 'SQ_TEX_ANISO_RATIO_2', 'SQ_TEX_ANISO_RATIO_4', - 'SQ_TEX_ANISO_RATIO_8', 'SQ_TEX_BORDER_COLOR', - 'SQ_TEX_BORDER_COLOR_OPAQUE_BLACK', - 'SQ_TEX_BORDER_COLOR_OPAQUE_WHITE', - 'SQ_TEX_BORDER_COLOR_REGISTER', 'SQ_TEX_BORDER_COLOR_TRANS_BLACK', - 'SQ_TEX_CLAMP', 'SQ_TEX_CLAMP_BORDER', 'SQ_TEX_CLAMP_HALF_BORDER', - 'SQ_TEX_CLAMP_LAST_TEXEL', 'SQ_TEX_DEPTH_COMPARE', - 'SQ_TEX_DEPTH_COMPARE_ALWAYS', 'SQ_TEX_DEPTH_COMPARE_EQUAL', - 'SQ_TEX_DEPTH_COMPARE_GREATER', - 'SQ_TEX_DEPTH_COMPARE_GREATEREQUAL', 'SQ_TEX_DEPTH_COMPARE_LESS', - 'SQ_TEX_DEPTH_COMPARE_LESSEQUAL', 'SQ_TEX_DEPTH_COMPARE_NEVER', - 'SQ_TEX_DEPTH_COMPARE_NOTEQUAL', 'SQ_TEX_MIP_FILTER', - 'SQ_TEX_MIP_FILTER_LINEAR', 'SQ_TEX_MIP_FILTER_NONE', - 'SQ_TEX_MIP_FILTER_POINT', 'SQ_TEX_MIP_FILTER_POINT_ANISO_ADJ', - 'SQ_TEX_MIRROR', 'SQ_TEX_MIRROR_ONCE_BORDER', - 'SQ_TEX_MIRROR_ONCE_HALF_BORDER', 'SQ_TEX_MIRROR_ONCE_LAST_TEXEL', - 'SQ_TEX_WRAP', 'SQ_TEX_XY_FILTER', - 'SQ_TEX_XY_FILTER_ANISO_BILINEAR', 'SQ_TEX_XY_FILTER_ANISO_POINT', - 'SQ_TEX_XY_FILTER_BILINEAR', 'SQ_TEX_XY_FILTER_POINT', - 'SQ_TEX_Z_FILTER', 'SQ_TEX_Z_FILTER_LINEAR', - 'SQ_TEX_Z_FILTER_NONE', 'SQ_TEX_Z_FILTER_POINT', - 'SQ_THREAD_TRACE_CAPTURE_MODE', - 'SQ_THREAD_TRACE_CAPTURE_MODE_ALL', - 'SQ_THREAD_TRACE_CAPTURE_MODE_SELECT', - 'SQ_THREAD_TRACE_CAPTURE_MODE_SELECT_DETAIL', - 'SQ_THREAD_TRACE_INST_TYPE', - 'SQ_THREAD_TRACE_INST_TYPE_EXPGNT_PAR_COL', - 'SQ_THREAD_TRACE_INST_TYPE_EXPGNT_POS_GDS', - 'SQ_THREAD_TRACE_INST_TYPE_EXPREQ_GDS', - 'SQ_THREAD_TRACE_INST_TYPE_EXPREQ_GFX', - 'SQ_THREAD_TRACE_INST_TYPE_FATAL_HALT', - 'SQ_THREAD_TRACE_INST_TYPE_FLAT_RD', - 'SQ_THREAD_TRACE_INST_TYPE_FLAT_RD_REPLAY', - 'SQ_THREAD_TRACE_INST_TYPE_FLAT_WR', - 'SQ_THREAD_TRACE_INST_TYPE_FLAT_WR_REPLAY', - 'SQ_THREAD_TRACE_INST_TYPE_JUMP', 'SQ_THREAD_TRACE_INST_TYPE_LDS', - 'SQ_THREAD_TRACE_INST_TYPE_NEXT', - 'SQ_THREAD_TRACE_INST_TYPE_OTHER_MSG', - 'SQ_THREAD_TRACE_INST_TYPE_PC', - 'SQ_THREAD_TRACE_INST_TYPE_SALU_32', - 'SQ_THREAD_TRACE_INST_TYPE_SALU_64', - 'SQ_THREAD_TRACE_INST_TYPE_SMEM_RD', - 'SQ_THREAD_TRACE_INST_TYPE_SMEM_RD_REPLAY', - 'SQ_THREAD_TRACE_INST_TYPE_SMEM_WR', - 'SQ_THREAD_TRACE_INST_TYPE_SMEM_WR_REPLAY', - 'SQ_THREAD_TRACE_INST_TYPE_VALU_32', - 'SQ_THREAD_TRACE_INST_TYPE_VALU_64', - 'SQ_THREAD_TRACE_INST_TYPE_VMEM_RD', - 'SQ_THREAD_TRACE_INST_TYPE_VMEM_RD_REPLAY', - 'SQ_THREAD_TRACE_INST_TYPE_VMEM_WR', - 'SQ_THREAD_TRACE_INST_TYPE_VMEM_WR_REPLAY', - 'SQ_THREAD_TRACE_ISSUE', 'SQ_THREAD_TRACE_ISSUE_IMMED', - 'SQ_THREAD_TRACE_ISSUE_INST', 'SQ_THREAD_TRACE_ISSUE_MASK', - 'SQ_THREAD_TRACE_ISSUE_MASK_ALL', - 'SQ_THREAD_TRACE_ISSUE_MASK_IMMED', - 'SQ_THREAD_TRACE_ISSUE_MASK_STALLED', - 'SQ_THREAD_TRACE_ISSUE_MASK_STALLED_AND_IMMED', - 'SQ_THREAD_TRACE_ISSUE_NULL', 'SQ_THREAD_TRACE_ISSUE_STALL', - 'SQ_THREAD_TRACE_MISC_TOKEN_PACKET_LOST', - 'SQ_THREAD_TRACE_MISC_TOKEN_SAVECTX', - 'SQ_THREAD_TRACE_MISC_TOKEN_SHOOT_DOWN', - 'SQ_THREAD_TRACE_MISC_TOKEN_SURF_SYNC', - 'SQ_THREAD_TRACE_MISC_TOKEN_TIME', - 'SQ_THREAD_TRACE_MISC_TOKEN_TIME_RESET', - 'SQ_THREAD_TRACE_MISC_TOKEN_TTRACE_STALL_BEGIN', - 'SQ_THREAD_TRACE_MISC_TOKEN_TTRACE_STALL_END', - 'SQ_THREAD_TRACE_MISC_TOKEN_TYPE', 'SQ_THREAD_TRACE_MODE_OFF', - 'SQ_THREAD_TRACE_MODE_ON', 'SQ_THREAD_TRACE_MODE_SEL', - 'SQ_THREAD_TRACE_REG_OP', 'SQ_THREAD_TRACE_REG_OP_READ', - 'SQ_THREAD_TRACE_REG_OP_WRITE', 'SQ_THREAD_TRACE_REG_TYPE', - 'SQ_THREAD_TRACE_REG_TYPE_DISPATCH', - 'SQ_THREAD_TRACE_REG_TYPE_DRAW', 'SQ_THREAD_TRACE_REG_TYPE_EVENT', - 'SQ_THREAD_TRACE_REG_TYPE_GFXDEC', - 'SQ_THREAD_TRACE_REG_TYPE_MARKER', - 'SQ_THREAD_TRACE_REG_TYPE_OTHER', - 'SQ_THREAD_TRACE_REG_TYPE_SHDEC', - 'SQ_THREAD_TRACE_REG_TYPE_USERDATA', 'SQ_THREAD_TRACE_TIME_UNIT', - 'SQ_THREAD_TRACE_TOKEN_EVENT', 'SQ_THREAD_TRACE_TOKEN_EVENT_CS', - 'SQ_THREAD_TRACE_TOKEN_EVENT_GFX1', 'SQ_THREAD_TRACE_TOKEN_INST', - 'SQ_THREAD_TRACE_TOKEN_INST_PC', - 'SQ_THREAD_TRACE_TOKEN_INST_USERDATA', - 'SQ_THREAD_TRACE_TOKEN_ISSUE', 'SQ_THREAD_TRACE_TOKEN_MISC', - 'SQ_THREAD_TRACE_TOKEN_PERF', 'SQ_THREAD_TRACE_TOKEN_REG', - 'SQ_THREAD_TRACE_TOKEN_REG_CS', - 'SQ_THREAD_TRACE_TOKEN_REG_CSPRIV', - 'SQ_THREAD_TRACE_TOKEN_TIMESTAMP', 'SQ_THREAD_TRACE_TOKEN_TYPE', - 'SQ_THREAD_TRACE_TOKEN_WAVE_ALLOC', - 'SQ_THREAD_TRACE_TOKEN_WAVE_END', - 'SQ_THREAD_TRACE_TOKEN_WAVE_START', 'SQ_THREAD_TRACE_VM_ID_MASK', - 'SQ_THREAD_TRACE_VM_ID_MASK_ALL', - 'SQ_THREAD_TRACE_VM_ID_MASK_SINGLE', - 'SQ_THREAD_TRACE_VM_ID_MASK_SINGLE_DETAIL', - 'SQ_THREAD_TRACE_WAVE_MASK', 'SQ_THREAD_TRACE_WAVE_MASK_ALL', - 'SQ_THREAD_TRACE_WAVE_MASK_NONE', - 'SQ_THREAD_TRACE_WAVE_START_COUNT_PREFIX', - 'SQ_THREAD_TRACE_WAVE_START_COUNT_PREFIX_RESTORE', - 'SQ_THREAD_TRACE_WAVE_START_COUNT_PREFIX_WREXEC', 'SQ_TRU', - 'SQ_TTMP0', 'SQ_TTMP1', 'SQ_TTMP10', 'SQ_TTMP11', 'SQ_TTMP12', - 'SQ_TTMP13', 'SQ_TTMP14', 'SQ_TTMP15', 'SQ_TTMP2', 'SQ_TTMP3', - 'SQ_TTMP4', 'SQ_TTMP5', 'SQ_TTMP6', 'SQ_TTMP7', 'SQ_TTMP8', - 'SQ_TTMP9', 'SQ_U', 'SQ_VCC_ALL', 'SQ_VCC_HI', 'SQ_VCC_LO', - 'SQ_VGPR0', 'SQ_V_ADD3_U32', 'SQ_V_ADDC_CO_U32', - 'SQ_V_ADD_CO_U32', 'SQ_V_ADD_F16', 'SQ_V_ADD_F32', 'SQ_V_ADD_F64', - 'SQ_V_ADD_I16', 'SQ_V_ADD_I32', 'SQ_V_ADD_LSHL_U32', - 'SQ_V_ADD_U16', 'SQ_V_ADD_U32', 'SQ_V_ALIGNBIT_B32', - 'SQ_V_ALIGNBYTE_B32', 'SQ_V_AND_B32', 'SQ_V_AND_OR_B32', - 'SQ_V_ASHRREV_I16', 'SQ_V_ASHRREV_I32', 'SQ_V_ASHRREV_I64', - 'SQ_V_BCNT_U32_B32', 'SQ_V_BFE_I32', 'SQ_V_BFE_U32', - 'SQ_V_BFI_B32', 'SQ_V_BFM_B32', 'SQ_V_BFREV_B32', 'SQ_V_CEIL_F16', - 'SQ_V_CEIL_F32', 'SQ_V_CEIL_F64', 'SQ_V_CLREXCP', - 'SQ_V_CMPX_CLASS_F16', 'SQ_V_CMPX_CLASS_F32', - 'SQ_V_CMPX_CLASS_F64', 'SQ_V_CMPX_EQ_F16', 'SQ_V_CMPX_EQ_F32', - 'SQ_V_CMPX_EQ_F64', 'SQ_V_CMPX_EQ_I16', 'SQ_V_CMPX_EQ_I32', - 'SQ_V_CMPX_EQ_I64', 'SQ_V_CMPX_EQ_U16', 'SQ_V_CMPX_EQ_U32', - 'SQ_V_CMPX_EQ_U64', 'SQ_V_CMPX_F_F16', 'SQ_V_CMPX_F_F32', - 'SQ_V_CMPX_F_F64', 'SQ_V_CMPX_F_I16', 'SQ_V_CMPX_F_I32', - 'SQ_V_CMPX_F_I64', 'SQ_V_CMPX_F_U16', 'SQ_V_CMPX_F_U32', - 'SQ_V_CMPX_F_U64', 'SQ_V_CMPX_GE_F16', 'SQ_V_CMPX_GE_F32', - 'SQ_V_CMPX_GE_F64', 'SQ_V_CMPX_GE_I16', 'SQ_V_CMPX_GE_I32', - 'SQ_V_CMPX_GE_I64', 'SQ_V_CMPX_GE_U16', 'SQ_V_CMPX_GE_U32', - 'SQ_V_CMPX_GE_U64', 'SQ_V_CMPX_GT_F16', 'SQ_V_CMPX_GT_F32', - 'SQ_V_CMPX_GT_F64', 'SQ_V_CMPX_GT_I16', 'SQ_V_CMPX_GT_I32', - 'SQ_V_CMPX_GT_I64', 'SQ_V_CMPX_GT_U16', 'SQ_V_CMPX_GT_U32', - 'SQ_V_CMPX_GT_U64', 'SQ_V_CMPX_LE_F16', 'SQ_V_CMPX_LE_F32', - 'SQ_V_CMPX_LE_F64', 'SQ_V_CMPX_LE_I16', 'SQ_V_CMPX_LE_I32', - 'SQ_V_CMPX_LE_I64', 'SQ_V_CMPX_LE_U16', 'SQ_V_CMPX_LE_U32', - 'SQ_V_CMPX_LE_U64', 'SQ_V_CMPX_LG_F16', 'SQ_V_CMPX_LG_F32', - 'SQ_V_CMPX_LG_F64', 'SQ_V_CMPX_LT_F16', 'SQ_V_CMPX_LT_F32', - 'SQ_V_CMPX_LT_F64', 'SQ_V_CMPX_LT_I16', 'SQ_V_CMPX_LT_I32', - 'SQ_V_CMPX_LT_I64', 'SQ_V_CMPX_LT_U16', 'SQ_V_CMPX_LT_U32', - 'SQ_V_CMPX_LT_U64', 'SQ_V_CMPX_NEQ_F16', 'SQ_V_CMPX_NEQ_F32', - 'SQ_V_CMPX_NEQ_F64', 'SQ_V_CMPX_NE_I16', 'SQ_V_CMPX_NE_I32', - 'SQ_V_CMPX_NE_I64', 'SQ_V_CMPX_NE_U16', 'SQ_V_CMPX_NE_U32', - 'SQ_V_CMPX_NE_U64', 'SQ_V_CMPX_NGE_F16', 'SQ_V_CMPX_NGE_F32', - 'SQ_V_CMPX_NGE_F64', 'SQ_V_CMPX_NGT_F16', 'SQ_V_CMPX_NGT_F32', - 'SQ_V_CMPX_NGT_F64', 'SQ_V_CMPX_NLE_F16', 'SQ_V_CMPX_NLE_F32', - 'SQ_V_CMPX_NLE_F64', 'SQ_V_CMPX_NLG_F16', 'SQ_V_CMPX_NLG_F32', - 'SQ_V_CMPX_NLG_F64', 'SQ_V_CMPX_NLT_F16', 'SQ_V_CMPX_NLT_F32', - 'SQ_V_CMPX_NLT_F64', 'SQ_V_CMPX_O_F16', 'SQ_V_CMPX_O_F32', - 'SQ_V_CMPX_O_F64', 'SQ_V_CMPX_TRU_F16', 'SQ_V_CMPX_TRU_F32', - 'SQ_V_CMPX_TRU_F64', 'SQ_V_CMPX_T_I16', 'SQ_V_CMPX_T_I32', - 'SQ_V_CMPX_T_I64', 'SQ_V_CMPX_T_U16', 'SQ_V_CMPX_T_U32', - 'SQ_V_CMPX_T_U64', 'SQ_V_CMPX_U_F16', 'SQ_V_CMPX_U_F32', - 'SQ_V_CMPX_U_F64', 'SQ_V_CMP_CLASS_F16', 'SQ_V_CMP_CLASS_F32', - 'SQ_V_CMP_CLASS_F64', 'SQ_V_CMP_EQ_F16', 'SQ_V_CMP_EQ_F32', - 'SQ_V_CMP_EQ_F64', 'SQ_V_CMP_EQ_I16', 'SQ_V_CMP_EQ_I32', - 'SQ_V_CMP_EQ_I64', 'SQ_V_CMP_EQ_U16', 'SQ_V_CMP_EQ_U32', - 'SQ_V_CMP_EQ_U64', 'SQ_V_CMP_F_F16', 'SQ_V_CMP_F_F32', - 'SQ_V_CMP_F_F64', 'SQ_V_CMP_F_I16', 'SQ_V_CMP_F_I32', - 'SQ_V_CMP_F_I64', 'SQ_V_CMP_F_U16', 'SQ_V_CMP_F_U32', - 'SQ_V_CMP_F_U64', 'SQ_V_CMP_GE_F16', 'SQ_V_CMP_GE_F32', - 'SQ_V_CMP_GE_F64', 'SQ_V_CMP_GE_I16', 'SQ_V_CMP_GE_I32', - 'SQ_V_CMP_GE_I64', 'SQ_V_CMP_GE_U16', 'SQ_V_CMP_GE_U32', - 'SQ_V_CMP_GE_U64', 'SQ_V_CMP_GT_F16', 'SQ_V_CMP_GT_F32', - 'SQ_V_CMP_GT_F64', 'SQ_V_CMP_GT_I16', 'SQ_V_CMP_GT_I32', - 'SQ_V_CMP_GT_I64', 'SQ_V_CMP_GT_U16', 'SQ_V_CMP_GT_U32', - 'SQ_V_CMP_GT_U64', 'SQ_V_CMP_LE_F16', 'SQ_V_CMP_LE_F32', - 'SQ_V_CMP_LE_F64', 'SQ_V_CMP_LE_I16', 'SQ_V_CMP_LE_I32', - 'SQ_V_CMP_LE_I64', 'SQ_V_CMP_LE_U16', 'SQ_V_CMP_LE_U32', - 'SQ_V_CMP_LE_U64', 'SQ_V_CMP_LG_F16', 'SQ_V_CMP_LG_F32', - 'SQ_V_CMP_LG_F64', 'SQ_V_CMP_LT_F16', 'SQ_V_CMP_LT_F32', - 'SQ_V_CMP_LT_F64', 'SQ_V_CMP_LT_I16', 'SQ_V_CMP_LT_I32', - 'SQ_V_CMP_LT_I64', 'SQ_V_CMP_LT_U16', 'SQ_V_CMP_LT_U32', - 'SQ_V_CMP_LT_U64', 'SQ_V_CMP_NEQ_F16', 'SQ_V_CMP_NEQ_F32', - 'SQ_V_CMP_NEQ_F64', 'SQ_V_CMP_NE_I16', 'SQ_V_CMP_NE_I32', - 'SQ_V_CMP_NE_I64', 'SQ_V_CMP_NE_U16', 'SQ_V_CMP_NE_U32', - 'SQ_V_CMP_NE_U64', 'SQ_V_CMP_NGE_F16', 'SQ_V_CMP_NGE_F32', - 'SQ_V_CMP_NGE_F64', 'SQ_V_CMP_NGT_F16', 'SQ_V_CMP_NGT_F32', - 'SQ_V_CMP_NGT_F64', 'SQ_V_CMP_NLE_F16', 'SQ_V_CMP_NLE_F32', - 'SQ_V_CMP_NLE_F64', 'SQ_V_CMP_NLG_F16', 'SQ_V_CMP_NLG_F32', - 'SQ_V_CMP_NLG_F64', 'SQ_V_CMP_NLT_F16', 'SQ_V_CMP_NLT_F32', - 'SQ_V_CMP_NLT_F64', 'SQ_V_CMP_O_F16', 'SQ_V_CMP_O_F32', - 'SQ_V_CMP_O_F64', 'SQ_V_CMP_TRU_F16', 'SQ_V_CMP_TRU_F32', - 'SQ_V_CMP_TRU_F64', 'SQ_V_CMP_T_I16', 'SQ_V_CMP_T_I32', - 'SQ_V_CMP_T_I64', 'SQ_V_CMP_T_U16', 'SQ_V_CMP_T_U32', - 'SQ_V_CMP_T_U64', 'SQ_V_CMP_U_F16', 'SQ_V_CMP_U_F32', - 'SQ_V_CMP_U_F64', 'SQ_V_CNDMASK_B32', 'SQ_V_COS_F16', - 'SQ_V_COS_F32', 'SQ_V_CUBEID_F32', 'SQ_V_CUBEMA_F32', - 'SQ_V_CUBESC_F32', 'SQ_V_CUBETC_F32', 'SQ_V_CVT_F16_F32', - 'SQ_V_CVT_F16_I16', 'SQ_V_CVT_F16_U16', 'SQ_V_CVT_F32_F16', - 'SQ_V_CVT_F32_F64', 'SQ_V_CVT_F32_I32', 'SQ_V_CVT_F32_U32', - 'SQ_V_CVT_F32_UBYTE0', 'SQ_V_CVT_F32_UBYTE1', - 'SQ_V_CVT_F32_UBYTE2', 'SQ_V_CVT_F32_UBYTE3', 'SQ_V_CVT_F64_F32', - 'SQ_V_CVT_F64_I32', 'SQ_V_CVT_F64_U32', 'SQ_V_CVT_FLR_I32_F32', - 'SQ_V_CVT_I16_F16', 'SQ_V_CVT_I32_F32', 'SQ_V_CVT_I32_F64', - 'SQ_V_CVT_NORM_I16_F16', 'SQ_V_CVT_NORM_U16_F16', - 'SQ_V_CVT_OFF_F32_I4', 'SQ_V_CVT_PKACCUM_U8_F32', - 'SQ_V_CVT_PKNORM_I16_F16', 'SQ_V_CVT_PKNORM_I16_F32', - 'SQ_V_CVT_PKNORM_U16_F16', 'SQ_V_CVT_PKNORM_U16_F32', - 'SQ_V_CVT_PKRTZ_F16_F32', 'SQ_V_CVT_PK_I16_I32', - 'SQ_V_CVT_PK_U16_U32', 'SQ_V_CVT_PK_U8_F32', - 'SQ_V_CVT_RPI_I32_F32', 'SQ_V_CVT_U16_F16', 'SQ_V_CVT_U32_F32', - 'SQ_V_CVT_U32_F64', 'SQ_V_DIV_FIXUP_F16', 'SQ_V_DIV_FIXUP_F32', - 'SQ_V_DIV_FIXUP_F64', 'SQ_V_DIV_FIXUP_LEGACY_F16', - 'SQ_V_DIV_FMAS_F32', 'SQ_V_DIV_FMAS_F64', 'SQ_V_DIV_SCALE_F32', - 'SQ_V_DIV_SCALE_F64', 'SQ_V_EXP_F16', 'SQ_V_EXP_F32', - 'SQ_V_EXP_LEGACY_F32', 'SQ_V_FFBH_I32', 'SQ_V_FFBH_U32', - 'SQ_V_FFBL_B32', 'SQ_V_FLOOR_F16', 'SQ_V_FLOOR_F32', - 'SQ_V_FLOOR_F64', 'SQ_V_FMA_F16', 'SQ_V_FMA_F32', 'SQ_V_FMA_F64', - 'SQ_V_FMA_LEGACY_F16', 'SQ_V_FRACT_F16', 'SQ_V_FRACT_F32', - 'SQ_V_FRACT_F64', 'SQ_V_FREXP_EXP_I16_F16', - 'SQ_V_FREXP_EXP_I32_F32', 'SQ_V_FREXP_EXP_I32_F64', - 'SQ_V_FREXP_MANT_F16', 'SQ_V_FREXP_MANT_F32', - 'SQ_V_FREXP_MANT_F64', 'SQ_V_INTERP_MOV_F32', - 'SQ_V_INTERP_P1LL_F16', 'SQ_V_INTERP_P1LV_F16', - 'SQ_V_INTERP_P1_F32', 'SQ_V_INTERP_P2_F16', 'SQ_V_INTERP_P2_F32', - 'SQ_V_INTERP_P2_LEGACY_F16', 'SQ_V_INTRP_COUNT', - 'SQ_V_INTRP_OFFSET', 'SQ_V_LDEXP_F16', 'SQ_V_LDEXP_F32', - 'SQ_V_LDEXP_F64', 'SQ_V_LERP_U8', 'SQ_V_LOG_F16', 'SQ_V_LOG_F32', - 'SQ_V_LOG_LEGACY_F32', 'SQ_V_LSHLREV_B16', 'SQ_V_LSHLREV_B32', - 'SQ_V_LSHLREV_B64', 'SQ_V_LSHL_ADD_U32', 'SQ_V_LSHL_OR_B32', - 'SQ_V_LSHRREV_B16', 'SQ_V_LSHRREV_B32', 'SQ_V_LSHRREV_B64', - 'SQ_V_MAC_F16', 'SQ_V_MAC_F32', 'SQ_V_MAC_LEGACY_F32', - 'SQ_V_MADAK_F16', 'SQ_V_MADAK_F32', 'SQ_V_MADMK_F16', - 'SQ_V_MADMK_F32', 'SQ_V_MAD_F16', 'SQ_V_MAD_F32', 'SQ_V_MAD_I16', - 'SQ_V_MAD_I32_I16', 'SQ_V_MAD_I32_I24', 'SQ_V_MAD_I64_I32', - 'SQ_V_MAD_LEGACY_F16', 'SQ_V_MAD_LEGACY_F32', - 'SQ_V_MAD_LEGACY_I16', 'SQ_V_MAD_LEGACY_U16', - 'SQ_V_MAD_MIXHI_F16', 'SQ_V_MAD_MIXLO_F16', 'SQ_V_MAD_MIX_F32', - 'SQ_V_MAD_U16', 'SQ_V_MAD_U32_U16', 'SQ_V_MAD_U32_U24', - 'SQ_V_MAD_U64_U32', 'SQ_V_MAX3_F16', 'SQ_V_MAX3_F32', - 'SQ_V_MAX3_I16', 'SQ_V_MAX3_I32', 'SQ_V_MAX3_U16', - 'SQ_V_MAX3_U32', 'SQ_V_MAX_F16', 'SQ_V_MAX_F32', 'SQ_V_MAX_F64', - 'SQ_V_MAX_I16', 'SQ_V_MAX_I32', 'SQ_V_MAX_U16', 'SQ_V_MAX_U32', - 'SQ_V_MBCNT_HI_U32_B32', 'SQ_V_MBCNT_LO_U32_B32', 'SQ_V_MED3_F16', - 'SQ_V_MED3_F32', 'SQ_V_MED3_I16', 'SQ_V_MED3_I32', - 'SQ_V_MED3_U16', 'SQ_V_MED3_U32', 'SQ_V_MIN3_F16', - 'SQ_V_MIN3_F32', 'SQ_V_MIN3_I16', 'SQ_V_MIN3_I32', - 'SQ_V_MIN3_U16', 'SQ_V_MIN3_U32', 'SQ_V_MIN_F16', 'SQ_V_MIN_F32', - 'SQ_V_MIN_F64', 'SQ_V_MIN_I16', 'SQ_V_MIN_I32', 'SQ_V_MIN_U16', - 'SQ_V_MIN_U32', 'SQ_V_MOV_B32', 'SQ_V_MOV_FED_B32', - 'SQ_V_MOV_PRSV_B32', 'SQ_V_MQSAD_PK_U16_U8', 'SQ_V_MQSAD_U32_U8', - 'SQ_V_MSAD_U8', 'SQ_V_MUL_F16', 'SQ_V_MUL_F32', 'SQ_V_MUL_F64', - 'SQ_V_MUL_HI_I32', 'SQ_V_MUL_HI_I32_I24', 'SQ_V_MUL_HI_U32', - 'SQ_V_MUL_HI_U32_U24', 'SQ_V_MUL_I32_I24', 'SQ_V_MUL_LEGACY_F32', - 'SQ_V_MUL_LO_U16', 'SQ_V_MUL_LO_U32', 'SQ_V_MUL_U32_U24', - 'SQ_V_NOP', 'SQ_V_NOT_B32', 'SQ_V_OP1_COUNT', 'SQ_V_OP1_OFFSET', - 'SQ_V_OP2_COUNT', 'SQ_V_OP2_OFFSET', 'SQ_V_OP3P_COUNT', - 'SQ_V_OP3P_OFFSET', 'SQ_V_OP3_2IN_COUNT', 'SQ_V_OP3_2IN_OFFSET', - 'SQ_V_OP3_3IN_COUNT', 'SQ_V_OP3_3IN_OFFSET', - 'SQ_V_OP3_INTRP_COUNT', 'SQ_V_OP3_INTRP_OFFSET', 'SQ_V_OPC_COUNT', - 'SQ_V_OPC_OFFSET', 'SQ_V_OR3_B32', 'SQ_V_OR_B32', - 'SQ_V_PACK_B32_F16', 'SQ_V_PERM_B32', 'SQ_V_PK_ADD_F16', - 'SQ_V_PK_ADD_I16', 'SQ_V_PK_ADD_U16', 'SQ_V_PK_ASHRREV_I16', - 'SQ_V_PK_LSHLREV_B16', 'SQ_V_PK_LSHRREV_B16', 'SQ_V_PK_MAD_F16', - 'SQ_V_PK_MAD_I16', 'SQ_V_PK_MAD_U16', 'SQ_V_PK_MAX_F16', - 'SQ_V_PK_MAX_I16', 'SQ_V_PK_MAX_U16', 'SQ_V_PK_MIN_F16', - 'SQ_V_PK_MIN_I16', 'SQ_V_PK_MIN_U16', 'SQ_V_PK_MUL_F16', - 'SQ_V_PK_MUL_LO_U16', 'SQ_V_PK_SUB_I16', 'SQ_V_PK_SUB_U16', - 'SQ_V_QSAD_PK_U16_U8', 'SQ_V_RCP_F16', 'SQ_V_RCP_F32', - 'SQ_V_RCP_F64', 'SQ_V_RCP_IFLAG_F32', 'SQ_V_READFIRSTLANE_B32', - 'SQ_V_READLANE_B32', 'SQ_V_READLANE_REGRD_B32', 'SQ_V_RNDNE_F16', - 'SQ_V_RNDNE_F32', 'SQ_V_RNDNE_F64', 'SQ_V_RSQ_F16', - 'SQ_V_RSQ_F32', 'SQ_V_RSQ_F64', 'SQ_V_SAD_HI_U8', 'SQ_V_SAD_U16', - 'SQ_V_SAD_U32', 'SQ_V_SAD_U8', 'SQ_V_SAT_PK_U8_I16', - 'SQ_V_SIN_F16', 'SQ_V_SIN_F32', 'SQ_V_SQRT_F16', 'SQ_V_SQRT_F32', - 'SQ_V_SQRT_F64', 'SQ_V_SUBBREV_CO_U32', 'SQ_V_SUBB_CO_U32', - 'SQ_V_SUBREV_CO_U32', 'SQ_V_SUBREV_F16', 'SQ_V_SUBREV_F32', - 'SQ_V_SUBREV_U16', 'SQ_V_SUBREV_U32', 'SQ_V_SUB_CO_U32', - 'SQ_V_SUB_F16', 'SQ_V_SUB_F32', 'SQ_V_SUB_I16', 'SQ_V_SUB_I32', - 'SQ_V_SUB_U16', 'SQ_V_SUB_U32', 'SQ_V_SWAP_B32', - 'SQ_V_TRIG_PREOP_F64', 'SQ_V_TRUNC_F16', 'SQ_V_TRUNC_F32', - 'SQ_V_TRUNC_F64', 'SQ_V_WRITELANE_B32', 'SQ_V_WRITELANE_IMM32', - 'SQ_V_XAD_U32', 'SQ_V_XOR_B32', 'SQ_WAITCNT_EXP_SHIFT', - 'SQ_WAITCNT_EXP_SIZE', 'SQ_WAITCNT_LGKM_SHIFT', - 'SQ_WAITCNT_LGKM_SIZE', 'SQ_WAITCNT_VM_SHIFT', - 'SQ_WAITCNT_VM_SIZE', 'SQ_WAVE_IB_ECC_CLEAN', - 'SQ_WAVE_IB_ECC_ERR_CONTINUE', 'SQ_WAVE_IB_ECC_ERR_HALT', - 'SQ_WAVE_IB_ECC_ST', 'SQ_WAVE_IB_ECC_WITH_ERR_MSG', - 'SQ_WAVE_TYPE', 'SQ_WAVE_TYPE_CS', 'SQ_WAVE_TYPE_ES', - 'SQ_WAVE_TYPE_GS', 'SQ_WAVE_TYPE_HS', 'SQ_WAVE_TYPE_LS', - 'SQ_WAVE_TYPE_PS', 'SQ_WAVE_TYPE_PS0', 'SQ_WAVE_TYPE_PS1', - 'SQ_WAVE_TYPE_VS', 'SQ_XLATE_VOP3_TO_VINTRP_COUNT', - 'SQ_XLATE_VOP3_TO_VINTRP_OFFSET', 'SQ_XLATE_VOP3_TO_VOP1_COUNT', - 'SQ_XLATE_VOP3_TO_VOP1_OFFSET', 'SQ_XLATE_VOP3_TO_VOP2_COUNT', - 'SQ_XLATE_VOP3_TO_VOP2_OFFSET', 'SQ_XLATE_VOP3_TO_VOP3P_COUNT', - 'SQ_XLATE_VOP3_TO_VOP3P_OFFSET', 'SQ_XLATE_VOP3_TO_VOPC_COUNT', - 'SQ_XLATE_VOP3_TO_VOPC_OFFSET', 'SQ_XNACK_MASK_HI', - 'SQ_XNACK_MASK_LO', 'STATIC_SCREEN_SMU_INTR', - 'STATIC_SCREEN_SMU_INTR_NOOP', 'STENCIL_8', 'STENCIL_ADD_CLAMP', - 'STENCIL_ADD_WRAP', 'STENCIL_AND', 'STENCIL_INVALID', - 'STENCIL_INVERT', 'STENCIL_KEEP', 'STENCIL_NAND', 'STENCIL_NOR', - 'STENCIL_ONES', 'STENCIL_OR', 'STENCIL_REPLACE_OP', - 'STENCIL_REPLACE_TEST', 'STENCIL_SUB_CLAMP', 'STENCIL_SUB_WRAP', - 'STENCIL_XNOR', 'STENCIL_XOR', 'STENCIL_ZERO', - 'STREAM_0_SYNCHRONIZATION', - 'STREAM_0_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_0_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_10_SYNCHRONIZATION', - 'STREAM_10_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_10_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_11_SYNCHRONIZATION', - 'STREAM_11_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_11_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_12_SYNCHRONIZATION', - 'STREAM_12_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_12_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_13_SYNCHRONIZATION', - 'STREAM_13_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_13_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_14_SYNCHRONIZATION', - 'STREAM_14_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_14_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_15_SYNCHRONIZATION', - 'STREAM_15_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_15_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_1_SYNCHRONIZATION', - 'STREAM_1_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_1_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_2_SYNCHRONIZATION', - 'STREAM_2_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_2_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_3_SYNCHRONIZATION', - 'STREAM_3_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_3_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_4_SYNCHRONIZATION', - 'STREAM_4_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_4_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_5_SYNCHRONIZATION', - 'STREAM_5_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_5_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_6_SYNCHRONIZATION', - 'STREAM_6_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_6_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_7_SYNCHRONIZATION', - 'STREAM_7_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_7_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_8_SYNCHRONIZATION', - 'STREAM_8_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_8_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_9_SYNCHRONIZATION', - 'STREAM_9_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_9_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STRM_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', - 'STRM_PERFMON_STATE_DISABLE_AND_RESET', - 'STRM_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 'STRM_PERFMON_STATE_RESERVED_3', - 'STRM_PERFMON_STATE_START_COUNTING', - 'STRM_PERFMON_STATE_STOP_COUNTING', 'SU_PERFCNT_SEL', 'SWAP_ALT', - 'SWAP_ALT_REV', 'SWAP_STD', 'SWAP_STD_REV', 'SWIZZLE_MODE_ENUM', - 'SWIZZLE_TYPE_ENUM', 'SW_256B_D', 'SW_256B_R', 'SW_256B_S', - 'SW_4KB_D', 'SW_4KB_D_X', 'SW_4KB_R', 'SW_4KB_R_X', 'SW_4KB_S', - 'SW_4KB_S_X', 'SW_4KB_Z', 'SW_4KB_Z_X', 'SW_64KB_D', - 'SW_64KB_D_X', 'SW_64KB_R', 'SW_64KB_R_X', 'SW_64KB_S', - 'SW_64KB_S_X', 'SW_64KB_Z', 'SW_64KB_Z_X', 'SW_D', 'SW_L', - 'SW_LINEAR', 'SW_R', 'SW_RESERVED_12', 'SW_RESERVED_13', - 'SW_RESERVED_14', 'SW_RESERVED_15', 'SW_RESERVED_16', - 'SW_RESERVED_17', 'SW_RESERVED_18', 'SW_RESERVED_19', 'SW_S', - 'SW_VAR_D', 'SW_VAR_D_X', 'SW_VAR_R', 'SW_VAR_R_X', 'SW_VAR_S', - 'SW_VAR_S_X', 'SW_VAR_Z', 'SW_VAR_Z_X', 'SW_Z', 'SX_BLEND_OPT', - 'SX_CB_RAT_ACK_REQUEST', 'SX_DOWNCONVERT_FORMAT', - 'SX_OPT_COMB_FCN', 'SX_PERFCOUNTER_VALS', 'SX_PERF_SEL_CLOCK', - 'SX_PERF_SEL_COL_BUSY', 'SX_PERF_SEL_DB0_A2M_DISCARD_QUADS', - 'SX_PERF_SEL_DB0_HALF_QUADS', 'SX_PERF_SEL_DB0_MRT0_BLEND_BYPASS', - 'SX_PERF_SEL_DB0_MRT0_DISCARD_SRC', - 'SX_PERF_SEL_DB0_MRT0_DONT_RD_DEST', - 'SX_PERF_SEL_DB0_MRT0_DOUBLE_QUADS', - 'SX_PERF_SEL_DB0_MRT0_SINGLE_QUADS', - 'SX_PERF_SEL_DB0_MRT1_BLEND_BYPASS', - 'SX_PERF_SEL_DB0_MRT1_DISCARD_SRC', - 'SX_PERF_SEL_DB0_MRT1_DONT_RD_DEST', - 'SX_PERF_SEL_DB0_MRT1_DOUBLE_QUADS', - 'SX_PERF_SEL_DB0_MRT1_SINGLE_QUADS', - 'SX_PERF_SEL_DB0_MRT2_BLEND_BYPASS', - 'SX_PERF_SEL_DB0_MRT2_DISCARD_SRC', - 'SX_PERF_SEL_DB0_MRT2_DONT_RD_DEST', - 'SX_PERF_SEL_DB0_MRT2_DOUBLE_QUADS', - 'SX_PERF_SEL_DB0_MRT2_SINGLE_QUADS', - 'SX_PERF_SEL_DB0_MRT3_BLEND_BYPASS', - 'SX_PERF_SEL_DB0_MRT3_DISCARD_SRC', - 'SX_PERF_SEL_DB0_MRT3_DONT_RD_DEST', - 'SX_PERF_SEL_DB0_MRT3_DOUBLE_QUADS', - 'SX_PERF_SEL_DB0_MRT3_SINGLE_QUADS', - 'SX_PERF_SEL_DB0_MRT4_BLEND_BYPASS', - 'SX_PERF_SEL_DB0_MRT4_DISCARD_SRC', - 'SX_PERF_SEL_DB0_MRT4_DONT_RD_DEST', - 'SX_PERF_SEL_DB0_MRT4_DOUBLE_QUADS', - 'SX_PERF_SEL_DB0_MRT4_SINGLE_QUADS', - 'SX_PERF_SEL_DB0_MRT5_BLEND_BYPASS', - 'SX_PERF_SEL_DB0_MRT5_DISCARD_SRC', - 'SX_PERF_SEL_DB0_MRT5_DONT_RD_DEST', - 'SX_PERF_SEL_DB0_MRT5_DOUBLE_QUADS', - 'SX_PERF_SEL_DB0_MRT5_SINGLE_QUADS', - 'SX_PERF_SEL_DB0_MRT6_BLEND_BYPASS', - 'SX_PERF_SEL_DB0_MRT6_DISCARD_SRC', - 'SX_PERF_SEL_DB0_MRT6_DONT_RD_DEST', - 'SX_PERF_SEL_DB0_MRT6_DOUBLE_QUADS', - 'SX_PERF_SEL_DB0_MRT6_SINGLE_QUADS', - 'SX_PERF_SEL_DB0_MRT7_BLEND_BYPASS', - 'SX_PERF_SEL_DB0_MRT7_DISCARD_SRC', - 'SX_PERF_SEL_DB0_MRT7_DONT_RD_DEST', - 'SX_PERF_SEL_DB0_MRT7_DOUBLE_QUADS', - 'SX_PERF_SEL_DB0_MRT7_SINGLE_QUADS', 'SX_PERF_SEL_DB0_PIXELS', - 'SX_PERF_SEL_DB0_PIXEL_IDLE', 'SX_PERF_SEL_DB0_PIXEL_STALL', - 'SX_PERF_SEL_DB0_PRED_PIXELS', - 'SX_PERF_SEL_DB1_A2M_DISCARD_QUADS', 'SX_PERF_SEL_DB1_HALF_QUADS', - 'SX_PERF_SEL_DB1_MRT0_BLEND_BYPASS', - 'SX_PERF_SEL_DB1_MRT0_DISCARD_SRC', - 'SX_PERF_SEL_DB1_MRT0_DONT_RD_DEST', - 'SX_PERF_SEL_DB1_MRT0_DOUBLE_QUADS', - 'SX_PERF_SEL_DB1_MRT0_SINGLE_QUADS', - 'SX_PERF_SEL_DB1_MRT1_BLEND_BYPASS', - 'SX_PERF_SEL_DB1_MRT1_DISCARD_SRC', - 'SX_PERF_SEL_DB1_MRT1_DONT_RD_DEST', - 'SX_PERF_SEL_DB1_MRT1_DOUBLE_QUADS', - 'SX_PERF_SEL_DB1_MRT1_SINGLE_QUADS', - 'SX_PERF_SEL_DB1_MRT2_BLEND_BYPASS', - 'SX_PERF_SEL_DB1_MRT2_DISCARD_SRC', - 'SX_PERF_SEL_DB1_MRT2_DONT_RD_DEST', - 'SX_PERF_SEL_DB1_MRT2_DOUBLE_QUADS', - 'SX_PERF_SEL_DB1_MRT2_SINGLE_QUADS', - 'SX_PERF_SEL_DB1_MRT3_BLEND_BYPASS', - 'SX_PERF_SEL_DB1_MRT3_DISCARD_SRC', - 'SX_PERF_SEL_DB1_MRT3_DONT_RD_DEST', - 'SX_PERF_SEL_DB1_MRT3_DOUBLE_QUADS', - 'SX_PERF_SEL_DB1_MRT3_SINGLE_QUADS', - 'SX_PERF_SEL_DB1_MRT4_BLEND_BYPASS', - 'SX_PERF_SEL_DB1_MRT4_DISCARD_SRC', - 'SX_PERF_SEL_DB1_MRT4_DONT_RD_DEST', - 'SX_PERF_SEL_DB1_MRT4_DOUBLE_QUADS', - 'SX_PERF_SEL_DB1_MRT4_SINGLE_QUADS', - 'SX_PERF_SEL_DB1_MRT5_BLEND_BYPASS', - 'SX_PERF_SEL_DB1_MRT5_DISCARD_SRC', - 'SX_PERF_SEL_DB1_MRT5_DONT_RD_DEST', - 'SX_PERF_SEL_DB1_MRT5_DOUBLE_QUADS', - 'SX_PERF_SEL_DB1_MRT5_SINGLE_QUADS', - 'SX_PERF_SEL_DB1_MRT6_BLEND_BYPASS', - 'SX_PERF_SEL_DB1_MRT6_DISCARD_SRC', - 'SX_PERF_SEL_DB1_MRT6_DONT_RD_DEST', - 'SX_PERF_SEL_DB1_MRT6_DOUBLE_QUADS', - 'SX_PERF_SEL_DB1_MRT6_SINGLE_QUADS', - 'SX_PERF_SEL_DB1_MRT7_BLEND_BYPASS', - 'SX_PERF_SEL_DB1_MRT7_DISCARD_SRC', - 'SX_PERF_SEL_DB1_MRT7_DONT_RD_DEST', - 'SX_PERF_SEL_DB1_MRT7_DOUBLE_QUADS', - 'SX_PERF_SEL_DB1_MRT7_SINGLE_QUADS', 'SX_PERF_SEL_DB1_PIXELS', - 'SX_PERF_SEL_DB1_PIXEL_IDLE', 'SX_PERF_SEL_DB1_PIXEL_STALL', - 'SX_PERF_SEL_DB1_PRED_PIXELS', - 'SX_PERF_SEL_DB2_A2M_DISCARD_QUADS', 'SX_PERF_SEL_DB2_HALF_QUADS', - 'SX_PERF_SEL_DB2_MRT0_BLEND_BYPASS', - 'SX_PERF_SEL_DB2_MRT0_DISCARD_SRC', - 'SX_PERF_SEL_DB2_MRT0_DONT_RD_DEST', - 'SX_PERF_SEL_DB2_MRT0_DOUBLE_QUADS', - 'SX_PERF_SEL_DB2_MRT0_SINGLE_QUADS', - 'SX_PERF_SEL_DB2_MRT1_BLEND_BYPASS', - 'SX_PERF_SEL_DB2_MRT1_DISCARD_SRC', - 'SX_PERF_SEL_DB2_MRT1_DONT_RD_DEST', - 'SX_PERF_SEL_DB2_MRT1_DOUBLE_QUADS', - 'SX_PERF_SEL_DB2_MRT1_SINGLE_QUADS', - 'SX_PERF_SEL_DB2_MRT2_BLEND_BYPASS', - 'SX_PERF_SEL_DB2_MRT2_DISCARD_SRC', - 'SX_PERF_SEL_DB2_MRT2_DONT_RD_DEST', - 'SX_PERF_SEL_DB2_MRT2_DOUBLE_QUADS', - 'SX_PERF_SEL_DB2_MRT2_SINGLE_QUADS', - 'SX_PERF_SEL_DB2_MRT3_BLEND_BYPASS', - 'SX_PERF_SEL_DB2_MRT3_DISCARD_SRC', - 'SX_PERF_SEL_DB2_MRT3_DONT_RD_DEST', - 'SX_PERF_SEL_DB2_MRT3_DOUBLE_QUADS', - 'SX_PERF_SEL_DB2_MRT3_SINGLE_QUADS', - 'SX_PERF_SEL_DB2_MRT4_BLEND_BYPASS', - 'SX_PERF_SEL_DB2_MRT4_DISCARD_SRC', - 'SX_PERF_SEL_DB2_MRT4_DONT_RD_DEST', - 'SX_PERF_SEL_DB2_MRT4_DOUBLE_QUADS', - 'SX_PERF_SEL_DB2_MRT4_SINGLE_QUADS', - 'SX_PERF_SEL_DB2_MRT5_BLEND_BYPASS', - 'SX_PERF_SEL_DB2_MRT5_DISCARD_SRC', - 'SX_PERF_SEL_DB2_MRT5_DONT_RD_DEST', - 'SX_PERF_SEL_DB2_MRT5_DOUBLE_QUADS', - 'SX_PERF_SEL_DB2_MRT5_SINGLE_QUADS', - 'SX_PERF_SEL_DB2_MRT6_BLEND_BYPASS', - 'SX_PERF_SEL_DB2_MRT6_DISCARD_SRC', - 'SX_PERF_SEL_DB2_MRT6_DONT_RD_DEST', - 'SX_PERF_SEL_DB2_MRT6_DOUBLE_QUADS', - 'SX_PERF_SEL_DB2_MRT6_SINGLE_QUADS', - 'SX_PERF_SEL_DB2_MRT7_BLEND_BYPASS', - 'SX_PERF_SEL_DB2_MRT7_DISCARD_SRC', - 'SX_PERF_SEL_DB2_MRT7_DONT_RD_DEST', - 'SX_PERF_SEL_DB2_MRT7_DOUBLE_QUADS', - 'SX_PERF_SEL_DB2_MRT7_SINGLE_QUADS', 'SX_PERF_SEL_DB2_PIXELS', - 'SX_PERF_SEL_DB2_PIXEL_IDLE', 'SX_PERF_SEL_DB2_PIXEL_STALL', - 'SX_PERF_SEL_DB2_PRED_PIXELS', - 'SX_PERF_SEL_DB3_A2M_DISCARD_QUADS', 'SX_PERF_SEL_DB3_HALF_QUADS', - 'SX_PERF_SEL_DB3_MRT0_BLEND_BYPASS', - 'SX_PERF_SEL_DB3_MRT0_DISCARD_SRC', - 'SX_PERF_SEL_DB3_MRT0_DONT_RD_DEST', - 'SX_PERF_SEL_DB3_MRT0_DOUBLE_QUADS', - 'SX_PERF_SEL_DB3_MRT0_SINGLE_QUADS', - 'SX_PERF_SEL_DB3_MRT1_BLEND_BYPASS', - 'SX_PERF_SEL_DB3_MRT1_DISCARD_SRC', - 'SX_PERF_SEL_DB3_MRT1_DONT_RD_DEST', - 'SX_PERF_SEL_DB3_MRT1_DOUBLE_QUADS', - 'SX_PERF_SEL_DB3_MRT1_SINGLE_QUADS', - 'SX_PERF_SEL_DB3_MRT2_BLEND_BYPASS', - 'SX_PERF_SEL_DB3_MRT2_DISCARD_SRC', - 'SX_PERF_SEL_DB3_MRT2_DONT_RD_DEST', - 'SX_PERF_SEL_DB3_MRT2_DOUBLE_QUADS', - 'SX_PERF_SEL_DB3_MRT2_SINGLE_QUADS', - 'SX_PERF_SEL_DB3_MRT3_BLEND_BYPASS', - 'SX_PERF_SEL_DB3_MRT3_DISCARD_SRC', - 'SX_PERF_SEL_DB3_MRT3_DONT_RD_DEST', - 'SX_PERF_SEL_DB3_MRT3_DOUBLE_QUADS', - 'SX_PERF_SEL_DB3_MRT3_SINGLE_QUADS', - 'SX_PERF_SEL_DB3_MRT4_BLEND_BYPASS', - 'SX_PERF_SEL_DB3_MRT4_DISCARD_SRC', - 'SX_PERF_SEL_DB3_MRT4_DONT_RD_DEST', - 'SX_PERF_SEL_DB3_MRT4_DOUBLE_QUADS', - 'SX_PERF_SEL_DB3_MRT4_SINGLE_QUADS', - 'SX_PERF_SEL_DB3_MRT5_BLEND_BYPASS', - 'SX_PERF_SEL_DB3_MRT5_DISCARD_SRC', - 'SX_PERF_SEL_DB3_MRT5_DONT_RD_DEST', - 'SX_PERF_SEL_DB3_MRT5_DOUBLE_QUADS', - 'SX_PERF_SEL_DB3_MRT5_SINGLE_QUADS', - 'SX_PERF_SEL_DB3_MRT6_BLEND_BYPASS', - 'SX_PERF_SEL_DB3_MRT6_DISCARD_SRC', - 'SX_PERF_SEL_DB3_MRT6_DONT_RD_DEST', - 'SX_PERF_SEL_DB3_MRT6_DOUBLE_QUADS', - 'SX_PERF_SEL_DB3_MRT6_SINGLE_QUADS', - 'SX_PERF_SEL_DB3_MRT7_BLEND_BYPASS', - 'SX_PERF_SEL_DB3_MRT7_DISCARD_SRC', - 'SX_PERF_SEL_DB3_MRT7_DONT_RD_DEST', - 'SX_PERF_SEL_DB3_MRT7_DOUBLE_QUADS', - 'SX_PERF_SEL_DB3_MRT7_SINGLE_QUADS', 'SX_PERF_SEL_DB3_PIXELS', - 'SX_PERF_SEL_DB3_PIXEL_IDLE', 'SX_PERF_SEL_DB3_PIXEL_STALL', - 'SX_PERF_SEL_DB3_PRED_PIXELS', 'SX_PERF_SEL_GATE_EN1', - 'SX_PERF_SEL_GATE_EN2', 'SX_PERF_SEL_GATE_EN3', - 'SX_PERF_SEL_GATE_EN4', 'SX_PERF_SEL_PA_IDLE_CYCLES', - 'SX_PERF_SEL_PA_POS', 'SX_PERF_SEL_PA_REQ', - 'SX_PERF_SEL_POS_BUSY', 'SX_PERF_SEL_SH_COLOR_STALL', - 'SX_PERF_SEL_SH_COLOR_STARVE', 'SX_PERF_SEL_SH_POS_STALL', - 'SX_PERF_SEL_SH_POS_STARVE', 'SX_RT_EXPORT_10_11_11', - 'SX_RT_EXPORT_16_16_AR', 'SX_RT_EXPORT_16_16_GR', - 'SX_RT_EXPORT_1_5_5_5', 'SX_RT_EXPORT_2_10_10_10', - 'SX_RT_EXPORT_32_A', 'SX_RT_EXPORT_32_R', 'SX_RT_EXPORT_4_4_4_4', - 'SX_RT_EXPORT_5_6_5', 'SX_RT_EXPORT_8_8_8_8', - 'SX_RT_EXPORT_NO_CONVERSION', 'SYMCLK_FE_FORCE_EN', - 'SYMCLK_FE_FORCE_EN_DISABLE', 'SYMCLK_FE_FORCE_EN_ENABLE', - 'SYMCLK_FE_FORCE_SRC', 'SYMCLK_FE_FORCE_SRC_UNIPHYA', - 'SYMCLK_FE_FORCE_SRC_UNIPHYB', 'SYMCLK_FE_FORCE_SRC_UNIPHYC', - 'SYMCLK_FE_FORCE_SRC_UNIPHYD', 'SYMCLK_FE_FORCE_SRC_UNIPHYE', - 'SYMCLK_FE_FORCE_SRC_UNIPHYF', 'SYMCLK_FE_FORCE_SRC_UNIPHYG', - 'SYNC_DURATION_128', 'SYNC_DURATION_16', 'SYNC_DURATION_32', - 'SYNC_DURATION_64', 'SYNC_RESET_SEL2_VBLANK', - 'SYNC_RESET_SEL2_VSYNC', 'SampleSplit', 'SampleSplitBytes', - 'ScMap', 'ScXsel', 'ScYsel', 'SeEnable', 'SeMap', 'SePairMap', - 'SePairXsel', 'SePairYsel', 'SeXsel', 'SeYsel', - 'ShaderEngineTileSize', 'SourceFormat', 'StencilFormat', - 'StencilOp', 'SurfaceArray', 'SurfaceEndian', 'SurfaceFormat', - 'SurfaceNumber', 'SurfaceSwap', 'SurfaceTiling', - 'TA_PERFCOUNT_SEL', 'TA_PERF_SEL_NULL', 'TA_PERF_SEL_RESERVED_28', - 'TA_PERF_SEL_RESERVED_29', 'TA_PERF_SEL_RESERVED_41', - 'TA_PERF_SEL_RESERVED_42', 'TA_PERF_SEL_RESERVED_43', - 'TA_PERF_SEL_addr_stalled_by_tc_cycles', - 'TA_PERF_SEL_addr_stalled_by_td_cycles', - 'TA_PERF_SEL_addresser_busy', 'TA_PERF_SEL_addresser_fifo_busy', - 'TA_PERF_SEL_addresser_stalled_by_aligner_only_cycles', - 'TA_PERF_SEL_addresser_stalled_cycles', - 'TA_PERF_SEL_aligner_busy', 'TA_PERF_SEL_aligner_cycles', - 'TA_PERF_SEL_aniso_10_cycle_quads', - 'TA_PERF_SEL_aniso_12_cycle_quads', - 'TA_PERF_SEL_aniso_14_cycle_quads', - 'TA_PERF_SEL_aniso_16_cycle_quads', - 'TA_PERF_SEL_aniso_1_cycle_quads', - 'TA_PERF_SEL_aniso_2_cycle_quads', - 'TA_PERF_SEL_aniso_4_cycle_quads', - 'TA_PERF_SEL_aniso_6_cycle_quads', - 'TA_PERF_SEL_aniso_8_cycle_quads', - 'TA_PERF_SEL_aniso_gt1_cycle_quads', - 'TA_PERF_SEL_aniso_stalled_by_addresser_only_cycles', - 'TA_PERF_SEL_aniso_stalled_cycles', - 'TA_PERF_SEL_bilin_point_1_cycle_pixels', - 'TA_PERF_SEL_buffer_atomic_wavefronts', - 'TA_PERF_SEL_buffer_coalescable_addr_multicycled_cycles', - 'TA_PERF_SEL_buffer_coalescable_clamp_16kdword_multicycled_cycles', - 'TA_PERF_SEL_buffer_coalescable_wavefronts', - 'TA_PERF_SEL_buffer_coalesced_read_cycles', - 'TA_PERF_SEL_buffer_coalesced_write_cycles', - 'TA_PERF_SEL_buffer_read_wavefronts', - 'TA_PERF_SEL_buffer_total_cycles', - 'TA_PERF_SEL_buffer_wavefronts', - 'TA_PERF_SEL_buffer_write_wavefronts', - 'TA_PERF_SEL_color_1_cycle_pixels', - 'TA_PERF_SEL_color_2_cycle_pixels', - 'TA_PERF_SEL_color_3_cycle_pixels', - 'TA_PERF_SEL_color_4_cycle_pixels', - 'TA_PERF_SEL_data_stalled_by_tc_cycles', - 'TA_PERF_SEL_deriv_stalled_by_aniso_only_cycles', - 'TA_PERF_SEL_deriv_stalled_cycles', - 'TA_PERF_SEL_first_xnack_on_phase0', - 'TA_PERF_SEL_first_xnack_on_phase1', - 'TA_PERF_SEL_first_xnack_on_phase2', - 'TA_PERF_SEL_first_xnack_on_phase3', - 'TA_PERF_SEL_flat_atomic_wavefronts', - 'TA_PERF_SEL_flat_coalesceable_wavefronts', - 'TA_PERF_SEL_flat_read_wavefronts', 'TA_PERF_SEL_flat_wavefronts', - 'TA_PERF_SEL_flat_write_wavefronts', 'TA_PERF_SEL_gradient_busy', - 'TA_PERF_SEL_gradient_cycles', 'TA_PERF_SEL_gradient_fifo_busy', - 'TA_PERF_SEL_image_atomic_wavefronts', - 'TA_PERF_SEL_image_read_wavefronts', - 'TA_PERF_SEL_image_total_cycles', 'TA_PERF_SEL_image_wavefronts', - 'TA_PERF_SEL_image_write_wavefronts', - 'TA_PERF_SEL_local_cg_dyn_sclk_grp0_en', - 'TA_PERF_SEL_local_cg_dyn_sclk_grp1_en', - 'TA_PERF_SEL_local_cg_dyn_sclk_grp1_mems_en', - 'TA_PERF_SEL_local_cg_dyn_sclk_grp4_en', - 'TA_PERF_SEL_local_cg_dyn_sclk_grp5_en', 'TA_PERF_SEL_lod_busy', - 'TA_PERF_SEL_lod_fifo_busy', 'TA_PERF_SEL_mip_1_cycle_pixels', - 'TA_PERF_SEL_mip_2_cycle_pixels', - 'TA_PERF_SEL_mipmap_invalid_samples', - 'TA_PERF_SEL_mipmap_lod_0_samples', - 'TA_PERF_SEL_mipmap_lod_10_samples', - 'TA_PERF_SEL_mipmap_lod_11_samples', - 'TA_PERF_SEL_mipmap_lod_12_samples', - 'TA_PERF_SEL_mipmap_lod_13_samples', - 'TA_PERF_SEL_mipmap_lod_14_samples', - 'TA_PERF_SEL_mipmap_lod_1_samples', - 'TA_PERF_SEL_mipmap_lod_2_samples', - 'TA_PERF_SEL_mipmap_lod_3_samples', - 'TA_PERF_SEL_mipmap_lod_4_samples', - 'TA_PERF_SEL_mipmap_lod_5_samples', - 'TA_PERF_SEL_mipmap_lod_6_samples', - 'TA_PERF_SEL_mipmap_lod_7_samples', - 'TA_PERF_SEL_mipmap_lod_8_samples', - 'TA_PERF_SEL_mipmap_lod_9_samples', 'TA_PERF_SEL_reg_sclk_vld', - 'TA_PERF_SEL_sh_fifo_addr_busy', - 'TA_PERF_SEL_sh_fifo_addr_cycles', - 'TA_PERF_SEL_sh_fifo_addr_starved_while_busy_cycles', - 'TA_PERF_SEL_sh_fifo_addr_waiting_on_cmd_cycles', - 'TA_PERF_SEL_sh_fifo_busy', 'TA_PERF_SEL_sh_fifo_cmd_busy', - 'TA_PERF_SEL_sh_fifo_cmd_starved_while_busy_cycles', - 'TA_PERF_SEL_sh_fifo_cmd_waiting_on_addr_cycles', - 'TA_PERF_SEL_sh_fifo_data_busy', - 'TA_PERF_SEL_sh_fifo_data_cycles', - 'TA_PERF_SEL_sh_fifo_data_sfifo_busy', - 'TA_PERF_SEL_sh_fifo_data_starved_while_busy_cycles', - 'TA_PERF_SEL_sh_fifo_data_state_starved_while_busy_cycles', - 'TA_PERF_SEL_sh_fifo_data_state_waiting_on_data_cycles', - 'TA_PERF_SEL_sh_fifo_data_tfifo_busy', - 'TA_PERF_SEL_sh_fifo_data_waiting_on_data_state_cycles', - 'TA_PERF_SEL_sp_ta_addr_cycles', 'TA_PERF_SEL_sp_ta_data_cycles', - 'TA_PERF_SEL_sq_ta_cmd_cycles', 'TA_PERF_SEL_ta_busy', - 'TA_PERF_SEL_ta_fa_data_state_cycles', - 'TA_PERF_SEL_total_wavefronts', 'TA_PERF_SEL_vol_1_cycle_pixels', - 'TA_PERF_SEL_vol_2_cycle_pixels', 'TA_PERF_SEL_walker_cycles', - 'TA_PERF_SEL_write_path_busy', - 'TA_PERF_SEL_write_path_input_cycles', - 'TA_PERF_SEL_write_path_output_cycles', - 'TA_PERF_SEL_xnack_on_phase0', 'TA_PERF_SEL_xnack_on_phase1', - 'TA_PERF_SEL_xnack_on_phase2', 'TA_PERF_SEL_xnack_on_phase3', - 'TA_TC_ADDR_MODES', 'TA_TC_ADDR_MODE_BORDER_COLOR', - 'TA_TC_ADDR_MODE_COMP0', 'TA_TC_ADDR_MODE_COMP1', - 'TA_TC_ADDR_MODE_COMP2', 'TA_TC_ADDR_MODE_COMP3', - 'TA_TC_ADDR_MODE_DEFAULT', 'TA_TC_ADDR_MODE_UNALIGNED', - 'TCA_PERF_SEL', 'TCA_PERF_SEL_BUSY', - 'TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC0', - 'TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC1', - 'TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC2', - 'TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC3', - 'TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC4', - 'TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC5', - 'TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC6', - 'TCA_PERF_SEL_CROSSBAR_DOUBLE_ARB_TCC7', - 'TCA_PERF_SEL_CROSSBAR_STALL_TCC0', - 'TCA_PERF_SEL_CROSSBAR_STALL_TCC1', - 'TCA_PERF_SEL_CROSSBAR_STALL_TCC2', - 'TCA_PERF_SEL_CROSSBAR_STALL_TCC3', - 'TCA_PERF_SEL_CROSSBAR_STALL_TCC4', - 'TCA_PERF_SEL_CROSSBAR_STALL_TCC5', - 'TCA_PERF_SEL_CROSSBAR_STALL_TCC6', - 'TCA_PERF_SEL_CROSSBAR_STALL_TCC7', 'TCA_PERF_SEL_CYCLE', - 'TCA_PERF_SEL_FORCED_HOLE_TCC0', 'TCA_PERF_SEL_FORCED_HOLE_TCC1', - 'TCA_PERF_SEL_FORCED_HOLE_TCC2', 'TCA_PERF_SEL_FORCED_HOLE_TCC3', - 'TCA_PERF_SEL_FORCED_HOLE_TCC4', 'TCA_PERF_SEL_FORCED_HOLE_TCC5', - 'TCA_PERF_SEL_FORCED_HOLE_TCC6', 'TCA_PERF_SEL_FORCED_HOLE_TCC7', - 'TCA_PERF_SEL_NONE', 'TCA_PERF_SEL_REQ_TCC0', - 'TCA_PERF_SEL_REQ_TCC1', 'TCA_PERF_SEL_REQ_TCC2', - 'TCA_PERF_SEL_REQ_TCC3', 'TCA_PERF_SEL_REQ_TCC4', - 'TCA_PERF_SEL_REQ_TCC5', 'TCA_PERF_SEL_REQ_TCC6', - 'TCA_PERF_SEL_REQ_TCC7', 'TCC_CACHE_POLICIES', - 'TCC_CACHE_POLICY_LRU', 'TCC_CACHE_POLICY_STREAM', 'TCC_PERF_SEL', - 'TCC_PERF_SEL_ALL_TC_OP_INV_EVICT', - 'TCC_PERF_SEL_ALL_TC_OP_WB_OR_INV_CYCLE', - 'TCC_PERF_SEL_ALL_TC_OP_WB_OR_INV_FINISH', - 'TCC_PERF_SEL_ALL_TC_OP_WB_OR_INV_START', - 'TCC_PERF_SEL_ALL_TC_OP_WB_WRITEBACK', 'TCC_PERF_SEL_ATOMIC', - 'TCC_PERF_SEL_BUBBLE', 'TCC_PERF_SEL_BUSY', - 'TCC_PERF_SEL_CC_PHYSICAL_REQ', 'TCC_PERF_SEL_CLIENT0_REQ', - 'TCC_PERF_SEL_CLIENT100_REQ', 'TCC_PERF_SEL_CLIENT101_REQ', - 'TCC_PERF_SEL_CLIENT102_REQ', 'TCC_PERF_SEL_CLIENT103_REQ', - 'TCC_PERF_SEL_CLIENT104_REQ', 'TCC_PERF_SEL_CLIENT105_REQ', - 'TCC_PERF_SEL_CLIENT106_REQ', 'TCC_PERF_SEL_CLIENT107_REQ', - 'TCC_PERF_SEL_CLIENT108_REQ', 'TCC_PERF_SEL_CLIENT109_REQ', - 'TCC_PERF_SEL_CLIENT10_REQ', 'TCC_PERF_SEL_CLIENT110_REQ', - 'TCC_PERF_SEL_CLIENT111_REQ', 'TCC_PERF_SEL_CLIENT112_REQ', - 'TCC_PERF_SEL_CLIENT113_REQ', 'TCC_PERF_SEL_CLIENT114_REQ', - 'TCC_PERF_SEL_CLIENT115_REQ', 'TCC_PERF_SEL_CLIENT116_REQ', - 'TCC_PERF_SEL_CLIENT117_REQ', 'TCC_PERF_SEL_CLIENT118_REQ', - 'TCC_PERF_SEL_CLIENT119_REQ', 'TCC_PERF_SEL_CLIENT11_REQ', - 'TCC_PERF_SEL_CLIENT120_REQ', 'TCC_PERF_SEL_CLIENT121_REQ', - 'TCC_PERF_SEL_CLIENT122_REQ', 'TCC_PERF_SEL_CLIENT123_REQ', - 'TCC_PERF_SEL_CLIENT124_REQ', 'TCC_PERF_SEL_CLIENT125_REQ', - 'TCC_PERF_SEL_CLIENT126_REQ', 'TCC_PERF_SEL_CLIENT127_REQ', - 'TCC_PERF_SEL_CLIENT12_REQ', 'TCC_PERF_SEL_CLIENT13_REQ', - 'TCC_PERF_SEL_CLIENT14_REQ', 'TCC_PERF_SEL_CLIENT15_REQ', - 'TCC_PERF_SEL_CLIENT16_REQ', 'TCC_PERF_SEL_CLIENT17_REQ', - 'TCC_PERF_SEL_CLIENT18_REQ', 'TCC_PERF_SEL_CLIENT19_REQ', - 'TCC_PERF_SEL_CLIENT1_REQ', 'TCC_PERF_SEL_CLIENT20_REQ', - 'TCC_PERF_SEL_CLIENT21_REQ', 'TCC_PERF_SEL_CLIENT22_REQ', - 'TCC_PERF_SEL_CLIENT23_REQ', 'TCC_PERF_SEL_CLIENT24_REQ', - 'TCC_PERF_SEL_CLIENT25_REQ', 'TCC_PERF_SEL_CLIENT26_REQ', - 'TCC_PERF_SEL_CLIENT27_REQ', 'TCC_PERF_SEL_CLIENT28_REQ', - 'TCC_PERF_SEL_CLIENT29_REQ', 'TCC_PERF_SEL_CLIENT2_REQ', - 'TCC_PERF_SEL_CLIENT30_REQ', 'TCC_PERF_SEL_CLIENT31_REQ', - 'TCC_PERF_SEL_CLIENT32_REQ', 'TCC_PERF_SEL_CLIENT33_REQ', - 'TCC_PERF_SEL_CLIENT34_REQ', 'TCC_PERF_SEL_CLIENT35_REQ', - 'TCC_PERF_SEL_CLIENT36_REQ', 'TCC_PERF_SEL_CLIENT37_REQ', - 'TCC_PERF_SEL_CLIENT38_REQ', 'TCC_PERF_SEL_CLIENT39_REQ', - 'TCC_PERF_SEL_CLIENT3_REQ', 'TCC_PERF_SEL_CLIENT40_REQ', - 'TCC_PERF_SEL_CLIENT41_REQ', 'TCC_PERF_SEL_CLIENT42_REQ', - 'TCC_PERF_SEL_CLIENT43_REQ', 'TCC_PERF_SEL_CLIENT44_REQ', - 'TCC_PERF_SEL_CLIENT45_REQ', 'TCC_PERF_SEL_CLIENT46_REQ', - 'TCC_PERF_SEL_CLIENT47_REQ', 'TCC_PERF_SEL_CLIENT48_REQ', - 'TCC_PERF_SEL_CLIENT49_REQ', 'TCC_PERF_SEL_CLIENT4_REQ', - 'TCC_PERF_SEL_CLIENT50_REQ', 'TCC_PERF_SEL_CLIENT51_REQ', - 'TCC_PERF_SEL_CLIENT52_REQ', 'TCC_PERF_SEL_CLIENT53_REQ', - 'TCC_PERF_SEL_CLIENT54_REQ', 'TCC_PERF_SEL_CLIENT55_REQ', - 'TCC_PERF_SEL_CLIENT56_REQ', 'TCC_PERF_SEL_CLIENT57_REQ', - 'TCC_PERF_SEL_CLIENT58_REQ', 'TCC_PERF_SEL_CLIENT59_REQ', - 'TCC_PERF_SEL_CLIENT5_REQ', 'TCC_PERF_SEL_CLIENT60_REQ', - 'TCC_PERF_SEL_CLIENT61_REQ', 'TCC_PERF_SEL_CLIENT62_REQ', - 'TCC_PERF_SEL_CLIENT63_REQ', 'TCC_PERF_SEL_CLIENT64_REQ', - 'TCC_PERF_SEL_CLIENT65_REQ', 'TCC_PERF_SEL_CLIENT66_REQ', - 'TCC_PERF_SEL_CLIENT67_REQ', 'TCC_PERF_SEL_CLIENT68_REQ', - 'TCC_PERF_SEL_CLIENT69_REQ', 'TCC_PERF_SEL_CLIENT6_REQ', - 'TCC_PERF_SEL_CLIENT70_REQ', 'TCC_PERF_SEL_CLIENT71_REQ', - 'TCC_PERF_SEL_CLIENT72_REQ', 'TCC_PERF_SEL_CLIENT73_REQ', - 'TCC_PERF_SEL_CLIENT74_REQ', 'TCC_PERF_SEL_CLIENT75_REQ', - 'TCC_PERF_SEL_CLIENT76_REQ', 'TCC_PERF_SEL_CLIENT77_REQ', - 'TCC_PERF_SEL_CLIENT78_REQ', 'TCC_PERF_SEL_CLIENT79_REQ', - 'TCC_PERF_SEL_CLIENT7_REQ', 'TCC_PERF_SEL_CLIENT80_REQ', - 'TCC_PERF_SEL_CLIENT81_REQ', 'TCC_PERF_SEL_CLIENT82_REQ', - 'TCC_PERF_SEL_CLIENT83_REQ', 'TCC_PERF_SEL_CLIENT84_REQ', - 'TCC_PERF_SEL_CLIENT85_REQ', 'TCC_PERF_SEL_CLIENT86_REQ', - 'TCC_PERF_SEL_CLIENT87_REQ', 'TCC_PERF_SEL_CLIENT88_REQ', - 'TCC_PERF_SEL_CLIENT89_REQ', 'TCC_PERF_SEL_CLIENT8_REQ', - 'TCC_PERF_SEL_CLIENT90_REQ', 'TCC_PERF_SEL_CLIENT91_REQ', - 'TCC_PERF_SEL_CLIENT92_REQ', 'TCC_PERF_SEL_CLIENT93_REQ', - 'TCC_PERF_SEL_CLIENT94_REQ', 'TCC_PERF_SEL_CLIENT95_REQ', - 'TCC_PERF_SEL_CLIENT96_REQ', 'TCC_PERF_SEL_CLIENT97_REQ', - 'TCC_PERF_SEL_CLIENT98_REQ', 'TCC_PERF_SEL_CLIENT99_REQ', - 'TCC_PERF_SEL_CLIENT9_REQ', 'TCC_PERF_SEL_COMPRESSED_0_REQ', - 'TCC_PERF_SEL_COMPRESSED_REQ', 'TCC_PERF_SEL_CYCLE', - 'TCC_PERF_SEL_DEWRITE_ALLOCATE_HIT', 'TCC_PERF_SEL_EA_ATOMIC', - 'TCC_PERF_SEL_EA_ATOMIC_LEVEL', 'TCC_PERF_SEL_EA_RDREQ', - 'TCC_PERF_SEL_EA_RDREQ_32B', 'TCC_PERF_SEL_EA_RDREQ_CREDIT_STALL', - 'TCC_PERF_SEL_EA_RDREQ_LEVEL', - 'TCC_PERF_SEL_EA_RD_COMPRESSED_32B', 'TCC_PERF_SEL_EA_RD_MDC_32B', - 'TCC_PERF_SEL_EA_RD_UNCACHED_32B', 'TCC_PERF_SEL_EA_WRREQ', - 'TCC_PERF_SEL_EA_WRREQ_64B', 'TCC_PERF_SEL_EA_WRREQ_CREDIT_STALL', - 'TCC_PERF_SEL_EA_WRREQ_LEVEL', - 'TCC_PERF_SEL_EA_WRREQ_PROBE_COMMAND', - 'TCC_PERF_SEL_EA_WRREQ_STALL', 'TCC_PERF_SEL_EA_WR_UNCACHED_32B', - 'TCC_PERF_SEL_EXE_REQ', 'TCC_PERF_SEL_FULLY_WRITTEN_HIT', - 'TCC_PERF_SEL_HIT', 'TCC_PERF_SEL_HOLE_FIFO_FULL', - 'TCC_PERF_SEL_HOLE_LEVEL', 'TCC_PERF_SEL_IB_MDC_STALL', - 'TCC_PERF_SEL_IB_REQ', 'TCC_PERF_SEL_IB_STALL', - 'TCC_PERF_SEL_IB_TAG_STALL', 'TCC_PERF_SEL_LATENCY_FIFO_FULL', - 'TCC_PERF_SEL_MDC_LEVEL', 'TCC_PERF_SEL_MDC_REQ', - 'TCC_PERF_SEL_MDC_SECTOR_HIT', 'TCC_PERF_SEL_MDC_SECTOR_MISS', - 'TCC_PERF_SEL_MDC_TAG_DESECTORIZATION_FIFO_FULL_STALL', - 'TCC_PERF_SEL_MDC_TAG_HIT', - 'TCC_PERF_SEL_MDC_TAG_REPLACEMENT_LINE_IN_USE_STALL', - 'TCC_PERF_SEL_MDC_TAG_STALL', - 'TCC_PERF_SEL_MDC_TAG_WAITING_FOR_INVALIDATE_COMPLETION_STALL', - 'TCC_PERF_SEL_METADATA_REQ', 'TCC_PERF_SEL_MISS', - 'TCC_PERF_SEL_NC_VIRTUAL_REQ', 'TCC_PERF_SEL_NONE', - 'TCC_PERF_SEL_NORMAL_EVICT', 'TCC_PERF_SEL_NORMAL_WRITEBACK', - 'TCC_PERF_SEL_PROBE', 'TCC_PERF_SEL_PROBE_ALL', - 'TCC_PERF_SEL_PROBE_EVICT', 'TCC_PERF_SEL_PROBE_FILTER_DISABLED', - 'TCC_PERF_SEL_PROBE_FILTER_DISABLE_TRANSITION', - 'TCC_PERF_SEL_READ', 'TCC_PERF_SEL_READ_RETURN_FULL_BUBBLE', - 'TCC_PERF_SEL_READ_RETURN_TIMEOUT', 'TCC_PERF_SEL_REQ', - 'TCC_PERF_SEL_RETURN_ACK', 'TCC_PERF_SEL_RETURN_ACK_HOLE', - 'TCC_PERF_SEL_RETURN_DATA', 'TCC_PERF_SEL_RETURN_HOLE', - 'TCC_PERF_SEL_SECTOR_HIT', 'TCC_PERF_SEL_SRC_FIFO_FULL', - 'TCC_PERF_SEL_STREAMING_REQ', - 'TCC_PERF_SEL_TAG_MISS_NOTHING_REPLACEABLE_STALL', - 'TCC_PERF_SEL_TAG_NO_UNCACHED_WRITE_ATOMIC_ENTRIES_STALL', - 'TCC_PERF_SEL_TAG_PROBE_FILTER_STALL', - 'TCC_PERF_SEL_TAG_PROBE_STALL', 'TCC_PERF_SEL_TAG_STALL', - 'TCC_PERF_SEL_TAG_UNCACHED_WRITE_ATOMIC_FIFO_FULL_STALL', - 'TCC_PERF_SEL_TAG_WRITEBACK_FIFO_FULL_STALL', - 'TCC_PERF_SEL_TCA_LEVEL', 'TCC_PERF_SEL_TC_OP_INVL2_NC_CYCLE', - 'TCC_PERF_SEL_TC_OP_INVL2_NC_EVICT', - 'TCC_PERF_SEL_TC_OP_INVL2_NC_FINISH', - 'TCC_PERF_SEL_TC_OP_INVL2_NC_START', - 'TCC_PERF_SEL_TC_OP_WBINVL2_CYCLE', - 'TCC_PERF_SEL_TC_OP_WBINVL2_EVICT', - 'TCC_PERF_SEL_TC_OP_WBINVL2_FINISH', - 'TCC_PERF_SEL_TC_OP_WBINVL2_NC_CYCLE', - 'TCC_PERF_SEL_TC_OP_WBINVL2_NC_EVICT', - 'TCC_PERF_SEL_TC_OP_WBINVL2_NC_FINISH', - 'TCC_PERF_SEL_TC_OP_WBINVL2_NC_START', - 'TCC_PERF_SEL_TC_OP_WBINVL2_NC_WRITEBACK', - 'TCC_PERF_SEL_TC_OP_WBINVL2_SD_CYCLE', - 'TCC_PERF_SEL_TC_OP_WBINVL2_SD_EVICT', - 'TCC_PERF_SEL_TC_OP_WBINVL2_SD_FINISH', - 'TCC_PERF_SEL_TC_OP_WBINVL2_SD_START', - 'TCC_PERF_SEL_TC_OP_WBINVL2_SD_WRITEBACK', - 'TCC_PERF_SEL_TC_OP_WBINVL2_START', - 'TCC_PERF_SEL_TC_OP_WBINVL2_WRITEBACK', - 'TCC_PERF_SEL_TC_OP_WBL2_NC_CYCLE', - 'TCC_PERF_SEL_TC_OP_WBL2_NC_EVICT', - 'TCC_PERF_SEL_TC_OP_WBL2_NC_FINISH', - 'TCC_PERF_SEL_TC_OP_WBL2_NC_START', - 'TCC_PERF_SEL_TC_OP_WBL2_NC_WRITEBACK', - 'TCC_PERF_SEL_TC_OP_WBL2_WC_CYCLE', - 'TCC_PERF_SEL_TC_OP_WBL2_WC_EVICT', - 'TCC_PERF_SEL_TC_OP_WBL2_WC_FINISH', - 'TCC_PERF_SEL_TC_OP_WBL2_WC_START', - 'TCC_PERF_SEL_TC_OP_WBL2_WC_WRITEBACK', - 'TCC_PERF_SEL_TOO_MANY_EA_WRREQS_STALL', - 'TCC_PERF_SEL_UC_VIRTUAL_REQ', 'TCC_PERF_SEL_WRITE', - 'TCC_PERF_SEL_WRITEBACK', 'TCC_PERF_SEL_WRITEBACK_READ_TIMEOUT', - 'TCP_CACHE_POLICIES', 'TCP_CACHE_POLICY_HIT_EVICT', - 'TCP_CACHE_POLICY_HIT_LRU', 'TCP_CACHE_POLICY_MISS_EVICT', - 'TCP_CACHE_POLICY_MISS_LRU', 'TCP_CACHE_STORE_POLICIES', - 'TCP_CACHE_STORE_POLICY_WT_EVICT', - 'TCP_CACHE_STORE_POLICY_WT_LRU', 'TCP_DSM_DATA_SEL', - 'TCP_DSM_DISABLE', 'TCP_DSM_INJECT_SEL', 'TCP_DSM_INJECT_SEL0', - 'TCP_DSM_INJECT_SEL1', 'TCP_DSM_INJECT_SEL2', - 'TCP_DSM_INJECT_SEL3', 'TCP_DSM_SEL0', 'TCP_DSM_SEL1', - 'TCP_DSM_SEL_BOTH', 'TCP_DSM_SINGLE_WRITE', - 'TCP_DSM_SINGLE_WRITE_DIS', 'TCP_DSM_SINGLE_WRITE_EN', - 'TCP_PERFCOUNT_SELECT', 'TCP_PERF_SEL_ALLOC_STALL_CYCLES', - 'TCP_PERF_SEL_ARR_1D_THICK', 'TCP_PERF_SEL_ARR_1D_THIN1', - 'TCP_PERF_SEL_ARR_2D_THICK', 'TCP_PERF_SEL_ARR_2D_THIN1', - 'TCP_PERF_SEL_ARR_2D_XTHICK', 'TCP_PERF_SEL_ARR_3D_THICK', - 'TCP_PERF_SEL_ARR_3D_THIN1', 'TCP_PERF_SEL_ARR_3D_XTHICK', - 'TCP_PERF_SEL_ARR_LINEAR_ALIGNED', - 'TCP_PERF_SEL_ARR_LINEAR_GENERAL', - 'TCP_PERF_SEL_ARR_PRT_2D_THICK', 'TCP_PERF_SEL_ARR_PRT_2D_THIN1', - 'TCP_PERF_SEL_ARR_PRT_3D_THICK', 'TCP_PERF_SEL_ARR_PRT_3D_THIN1', - 'TCP_PERF_SEL_ARR_PRT_THICK', 'TCP_PERF_SEL_ARR_PRT_THIN1', - 'TCP_PERF_SEL_ATC', - 'TCP_PERF_SEL_ATOMIC_TAGCONFLICT_STALL_CYCLES', - 'TCP_PERF_SEL_BUF_ATOMIC_WITHOUT_RET_FMT_32', - 'TCP_PERF_SEL_BUF_ATOMIC_WITHOUT_RET_FMT_64', - 'TCP_PERF_SEL_BUF_ATOMIC_WITH_RET_FMT_32', - 'TCP_PERF_SEL_BUF_ATOMIC_WITH_RET_FMT_64', - 'TCP_PERF_SEL_BUF_READ_FMT_16', 'TCP_PERF_SEL_BUF_READ_FMT_32', - 'TCP_PERF_SEL_BUF_READ_FMT_8', 'TCP_PERF_SEL_BUF_WRITE_FMT_16', - 'TCP_PERF_SEL_BUF_WRITE_FMT_32', 'TCP_PERF_SEL_BUF_WRITE_FMT_8', - 'TCP_PERF_SEL_CORE_REG_SCLK_VLD', - 'TCP_PERF_SEL_CP_TCP_INVALIDATE', - 'TCP_PERF_SEL_CP_TCP_INVALIDATE_VOL', - 'TCP_PERF_SEL_DEPTH_MICROTILING', 'TCP_PERF_SEL_DIM_1D', - 'TCP_PERF_SEL_DIM_1D_ARRAY', 'TCP_PERF_SEL_DIM_2D', - 'TCP_PERF_SEL_DIM_2D_ARRAY', 'TCP_PERF_SEL_DIM_2D_ARRAY_MSAA', - 'TCP_PERF_SEL_DIM_2D_MSAA', 'TCP_PERF_SEL_DIM_3D', - 'TCP_PERF_SEL_DIM_CUBE_ARRAY', 'TCP_PERF_SEL_DISPLAY_MICROTILING', - 'TCP_PERF_SEL_GATE_EN1', 'TCP_PERF_SEL_GATE_EN2', - 'TCP_PERF_SEL_HOLE_READ_STALL', - 'TCP_PERF_SEL_IMG_ATOMIC_WITHOUT_RET_FMT_32', - 'TCP_PERF_SEL_IMG_ATOMIC_WITHOUT_RET_FMT_64', - 'TCP_PERF_SEL_IMG_ATOMIC_WITH_RET_FMT_32', - 'TCP_PERF_SEL_IMG_ATOMIC_WITH_RET_FMT_64', - 'TCP_PERF_SEL_IMG_READ_FMT_1', - 'TCP_PERF_SEL_IMG_READ_FMT_128_1_CYCLE', - 'TCP_PERF_SEL_IMG_READ_FMT_128_4_CYCLE', - 'TCP_PERF_SEL_IMG_READ_FMT_16', - 'TCP_PERF_SEL_IMG_READ_FMT_16_AS_128', - 'TCP_PERF_SEL_IMG_READ_FMT_16_AS_64', - 'TCP_PERF_SEL_IMG_READ_FMT_32', - 'TCP_PERF_SEL_IMG_READ_FMT_32_AS_128', - 'TCP_PERF_SEL_IMG_READ_FMT_32_AS_16', - 'TCP_PERF_SEL_IMG_READ_FMT_32_AS_8', - 'TCP_PERF_SEL_IMG_READ_FMT_64_1_CYCLE', - 'TCP_PERF_SEL_IMG_READ_FMT_64_2_CYCLE', - 'TCP_PERF_SEL_IMG_READ_FMT_8', - 'TCP_PERF_SEL_IMG_READ_FMT_8_AS_32', - 'TCP_PERF_SEL_IMG_READ_FMT_8_AS_64', - 'TCP_PERF_SEL_IMG_READ_FMT_96', 'TCP_PERF_SEL_IMG_READ_FMT_BC1', - 'TCP_PERF_SEL_IMG_READ_FMT_BC2', 'TCP_PERF_SEL_IMG_READ_FMT_BC3', - 'TCP_PERF_SEL_IMG_READ_FMT_BC4', 'TCP_PERF_SEL_IMG_READ_FMT_BC5', - 'TCP_PERF_SEL_IMG_READ_FMT_BC6', 'TCP_PERF_SEL_IMG_READ_FMT_BC7', - 'TCP_PERF_SEL_IMG_READ_FMT_D16', 'TCP_PERF_SEL_IMG_READ_FMT_D32', - 'TCP_PERF_SEL_IMG_READ_FMT_D8', - 'TCP_PERF_SEL_IMG_READ_FMT_ETC2_R', - 'TCP_PERF_SEL_IMG_READ_FMT_ETC2_RG', - 'TCP_PERF_SEL_IMG_READ_FMT_ETC2_RGB', - 'TCP_PERF_SEL_IMG_READ_FMT_ETC2_RGBA', - 'TCP_PERF_SEL_IMG_READ_FMT_ETC2_RGBA1', - 'TCP_PERF_SEL_IMG_READ_FMT_I16', 'TCP_PERF_SEL_IMG_READ_FMT_I32', - 'TCP_PERF_SEL_IMG_READ_FMT_I32_AS_16', - 'TCP_PERF_SEL_IMG_READ_FMT_I32_AS_8', - 'TCP_PERF_SEL_IMG_READ_FMT_I8', 'TCP_PERF_SEL_IMG_WRITE_FMT_128', - 'TCP_PERF_SEL_IMG_WRITE_FMT_16', - 'TCP_PERF_SEL_IMG_WRITE_FMT_16_AS_128', - 'TCP_PERF_SEL_IMG_WRITE_FMT_16_AS_64', - 'TCP_PERF_SEL_IMG_WRITE_FMT_32', 'TCP_PERF_SEL_IMG_WRITE_FMT_64', - 'TCP_PERF_SEL_IMG_WRITE_FMT_8', - 'TCP_PERF_SEL_IMG_WRITE_FMT_8_AS_32', - 'TCP_PERF_SEL_IMG_WRITE_FMT_8_AS_64', - 'TCP_PERF_SEL_IMG_WRITE_FMT_D16', - 'TCP_PERF_SEL_IMG_WRITE_FMT_D32', 'TCP_PERF_SEL_IMG_WRITE_FMT_D8', - 'TCP_PERF_SEL_LFIFO_STALL_CYCLES', - 'TCP_PERF_SEL_LOD_STALL_CYCLES', - 'TCP_PERF_SEL_PENDING_STALL_CYCLES', 'TCP_PERF_SEL_POWER_STALL', - 'TCP_PERF_SEL_READCONFLICT_STALL_CYCLES', - 'TCP_PERF_SEL_READFIFO_STALL_CYCLES', - 'TCP_PERF_SEL_READ_TAGCONFLICT_STALL_CYCLES', - 'TCP_PERF_SEL_RESERVED_154', 'TCP_PERF_SEL_RFIFO_STALL_CYCLES', - 'TCP_PERF_SEL_ROTATED_MICROTILING', 'TCP_PERF_SEL_SHOOTDOWN', - 'TCP_PERF_SEL_SQ_TCP_INVALIDATE_VOL', 'TCP_PERF_SEL_TAGRAM0_REQ', - 'TCP_PERF_SEL_TAGRAM1_REQ', 'TCP_PERF_SEL_TAGRAM2_REQ', - 'TCP_PERF_SEL_TAGRAM3_REQ', - 'TCP_PERF_SEL_TA_TCP_ADDR_STARVE_CYCLES', - 'TCP_PERF_SEL_TA_TCP_DATA_STARVE_CYCLES', - 'TCP_PERF_SEL_TA_TCP_STATE_READ', 'TCP_PERF_SEL_TCC_ATOMIC_REQ', - 'TCP_PERF_SEL_TCC_ATOMIC_WITHOUT_RET_REQ', - 'TCP_PERF_SEL_TCC_ATOMIC_WITH_RET_REQ', - 'TCP_PERF_SEL_TCC_BYPASS_ATOMIC_REQ', - 'TCP_PERF_SEL_TCC_BYPASS_READ_REQ', - 'TCP_PERF_SEL_TCC_BYPASS_WRITE_REQ', - 'TCP_PERF_SEL_TCC_CC_ATOMIC_REQ', 'TCP_PERF_SEL_TCC_CC_READ_REQ', - 'TCP_PERF_SEL_TCC_CC_WRITE_REQ', 'TCP_PERF_SEL_TCC_DATA_BUS_BUSY', - 'TCP_PERF_SEL_TCC_DCC_REQ', 'TCP_PERF_SEL_TCC_LRU_REQ', - 'TCP_PERF_SEL_TCC_MISS_EVICT_READ_REQ', - 'TCP_PERF_SEL_TCC_MISS_EVICT_WRITE_REQ', - 'TCP_PERF_SEL_TCC_NC_ATOMIC_REQ', 'TCP_PERF_SEL_TCC_NC_READ_REQ', - 'TCP_PERF_SEL_TCC_NC_WRITE_REQ', 'TCP_PERF_SEL_TCC_NON_READ_REQ', - 'TCP_PERF_SEL_TCC_PHYSICAL_REQ', 'TCP_PERF_SEL_TCC_READ_REQ', - 'TCP_PERF_SEL_TCC_READ_REQ_LATENCY', 'TCP_PERF_SEL_TCC_REQ', - 'TCP_PERF_SEL_TCC_STREAM_REQ', 'TCP_PERF_SEL_TCC_UC_ATOMIC_REQ', - 'TCP_PERF_SEL_TCC_UC_READ_REQ', 'TCP_PERF_SEL_TCC_UC_WRITE_REQ', - 'TCP_PERF_SEL_TCC_VOLATILE_ATOMIC_REQ', - 'TCP_PERF_SEL_TCC_VOLATILE_BYPASS_READ_REQ', - 'TCP_PERF_SEL_TCC_VOLATILE_BYPASS_WRITE_REQ', - 'TCP_PERF_SEL_TCC_VOLATILE_MISS_EVICT_READ_REQ', - 'TCP_PERF_SEL_TCC_VOLATILE_MISS_EVICT_WRITE_REQ', - 'TCP_PERF_SEL_TCC_VOLATILE_READ_REQ', - 'TCP_PERF_SEL_TCC_VOLATILE_WRITE_REQ', - 'TCP_PERF_SEL_TCC_WRITE_REQ', - 'TCP_PERF_SEL_TCC_WRITE_REQ_HOLE_LATENCY', - 'TCP_PERF_SEL_TCC_WRITE_REQ_LATENCY', 'TCP_PERF_SEL_TCP_LATENCY', - 'TCP_PERF_SEL_TCP_TA_ADDR_STALL_CYCLES', - 'TCP_PERF_SEL_TCP_TA_DATA_STALL_CYCLES', - 'TCP_PERF_SEL_TCR_RDRET_STALL', - 'TCP_PERF_SEL_TCR_TCP_STALL_CYCLES', - 'TCP_PERF_SEL_TC_TA_XNACK_STALL', - 'TCP_PERF_SEL_TD_TCP_STALL_CYCLES', - 'TCP_PERF_SEL_THICK_MICROTILING', 'TCP_PERF_SEL_THIN_MICROTILING', - 'TCP_PERF_SEL_TOTAL_ACCESSES', - 'TCP_PERF_SEL_TOTAL_ATOMIC_WITHOUT_RET', - 'TCP_PERF_SEL_TOTAL_ATOMIC_WITH_RET', - 'TCP_PERF_SEL_TOTAL_GLOBAL_READ', - 'TCP_PERF_SEL_TOTAL_GLOBAL_WRITE', - 'TCP_PERF_SEL_TOTAL_HIT_EVICT_READ', - 'TCP_PERF_SEL_TOTAL_HIT_LRU_READ', - 'TCP_PERF_SEL_TOTAL_LOCAL_READ', 'TCP_PERF_SEL_TOTAL_LOCAL_WRITE', - 'TCP_PERF_SEL_TOTAL_MISS_EVICT_READ', - 'TCP_PERF_SEL_TOTAL_MISS_EVICT_WRITE', - 'TCP_PERF_SEL_TOTAL_MISS_LRU_READ', - 'TCP_PERF_SEL_TOTAL_MISS_LRU_WRITE', - 'TCP_PERF_SEL_TOTAL_NON_READ', 'TCP_PERF_SEL_TOTAL_READ', - 'TCP_PERF_SEL_TOTAL_WBINVL1', 'TCP_PERF_SEL_TOTAL_WBINVL1_VOL', - 'TCP_PERF_SEL_TOTAL_WRITE', - 'TCP_PERF_SEL_TOTAL_WRITEBACK_INVALIDATES', - 'TCP_PERF_SEL_UNALIGNED', 'TCP_PERF_SEL_UNORDERED_MTYPE_STALL', - 'TCP_PERF_SEL_UTCL1_LFIFO_FULL', - 'TCP_PERF_SEL_UTCL1_PERMISSION_MISS', - 'TCP_PERF_SEL_UTCL1_REQUEST', - 'TCP_PERF_SEL_UTCL1_SERIALIZATION_STALL', - 'TCP_PERF_SEL_UTCL1_STALL_INFLIGHT_MAX', - 'TCP_PERF_SEL_UTCL1_STALL_LFIFO_NOT_RES', - 'TCP_PERF_SEL_UTCL1_STALL_LRU_INFLIGHT', - 'TCP_PERF_SEL_UTCL1_STALL_MISSFIFO_FULL', - 'TCP_PERF_SEL_UTCL1_STALL_UTCL2_REQ_OUT_OF_CREDITS', - 'TCP_PERF_SEL_UTCL1_TRANSLATION_MISS', - 'TCP_PERF_SEL_UTCL1_UTCL2_INFLIGHT', 'TCP_PERF_SEL_VOLATILE', - 'TCP_PERF_SEL_WRITE_CONFLICT_STALL', - 'TCP_PERF_SEL_WRITE_TAGCONFLICT_STALL_CYCLES', 'TCP_WATCH_MODES', - 'TCP_WATCH_MODE_ALL', 'TCP_WATCH_MODE_ATOMIC', - 'TCP_WATCH_MODE_NONREAD', 'TCP_WATCH_MODE_READ', - 'TC_CHUB_REQ_CREDITS', 'TC_CHUB_REQ_CREDITS_ENUM', 'TC_EA_CID', - 'TC_EA_CID_CPF', 'TC_EA_CID_CPG', 'TC_EA_CID_DCC', - 'TC_EA_CID_FMASK', 'TC_EA_CID_HTILE', 'TC_EA_CID_IA', - 'TC_EA_CID_MISC', 'TC_EA_CID_PA', 'TC_EA_CID_RT', 'TC_EA_CID_SQC', - 'TC_EA_CID_STENCIL', 'TC_EA_CID_TCP', 'TC_EA_CID_TCPMETA', - 'TC_EA_CID_UTCL2_TPI', 'TC_EA_CID_WD', 'TC_EA_CID_Z', - 'TC_MICRO_TILE_MODE', 'TC_NACKS', 'TC_NACK_DATA_ERROR', - 'TC_NACK_NO_FAULT', 'TC_NACK_PAGE_FAULT', - 'TC_NACK_PROTECTION_FAULT', 'TC_ONLY', 'TC_OP', - 'TC_OP_ATOMIC_ADD_32', 'TC_OP_ATOMIC_ADD_64', - 'TC_OP_ATOMIC_ADD_RTN_32', 'TC_OP_ATOMIC_ADD_RTN_64', - 'TC_OP_ATOMIC_AND_32', 'TC_OP_ATOMIC_AND_64', - 'TC_OP_ATOMIC_AND_RTN_32', 'TC_OP_ATOMIC_AND_RTN_64', - 'TC_OP_ATOMIC_CMPSWAP_32', 'TC_OP_ATOMIC_CMPSWAP_64', - 'TC_OP_ATOMIC_CMPSWAP_RTN_32', 'TC_OP_ATOMIC_CMPSWAP_RTN_64', - 'TC_OP_ATOMIC_DEC_32', 'TC_OP_ATOMIC_DEC_64', - 'TC_OP_ATOMIC_DEC_RTN_32', 'TC_OP_ATOMIC_DEC_RTN_64', - 'TC_OP_ATOMIC_FCMPSWAP_32', 'TC_OP_ATOMIC_FCMPSWAP_64', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64', - 'TC_OP_ATOMIC_FCMPSWAP_RTN_32', 'TC_OP_ATOMIC_FCMPSWAP_RTN_64', - 'TC_OP_ATOMIC_FMAX_32', 'TC_OP_ATOMIC_FMAX_64', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_32', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_64', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64', - 'TC_OP_ATOMIC_FMAX_RTN_32', 'TC_OP_ATOMIC_FMAX_RTN_64', - 'TC_OP_ATOMIC_FMIN_32', 'TC_OP_ATOMIC_FMIN_64', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_32', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_64', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64', - 'TC_OP_ATOMIC_FMIN_RTN_32', 'TC_OP_ATOMIC_FMIN_RTN_64', - 'TC_OP_ATOMIC_INC_32', 'TC_OP_ATOMIC_INC_64', - 'TC_OP_ATOMIC_INC_RTN_32', 'TC_OP_ATOMIC_INC_RTN_64', - 'TC_OP_ATOMIC_OR_32', 'TC_OP_ATOMIC_OR_64', - 'TC_OP_ATOMIC_OR_RTN_32', 'TC_OP_ATOMIC_OR_RTN_64', - 'TC_OP_ATOMIC_SMAX_32', 'TC_OP_ATOMIC_SMAX_64', - 'TC_OP_ATOMIC_SMAX_RTN_32', 'TC_OP_ATOMIC_SMAX_RTN_64', - 'TC_OP_ATOMIC_SMIN_32', 'TC_OP_ATOMIC_SMIN_64', - 'TC_OP_ATOMIC_SMIN_RTN_32', 'TC_OP_ATOMIC_SMIN_RTN_64', - 'TC_OP_ATOMIC_SUB_32', 'TC_OP_ATOMIC_SUB_64', - 'TC_OP_ATOMIC_SUB_RTN_32', 'TC_OP_ATOMIC_SUB_RTN_64', - 'TC_OP_ATOMIC_SWAP_32', 'TC_OP_ATOMIC_SWAP_64', - 'TC_OP_ATOMIC_SWAP_RTN_32', 'TC_OP_ATOMIC_SWAP_RTN_64', - 'TC_OP_ATOMIC_UMAX_32', 'TC_OP_ATOMIC_UMAX_64', - 'TC_OP_ATOMIC_UMAX_RTN_32', 'TC_OP_ATOMIC_UMAX_RTN_64', - 'TC_OP_ATOMIC_UMIN_32', 'TC_OP_ATOMIC_UMIN_64', - 'TC_OP_ATOMIC_UMIN_RTN_32', 'TC_OP_ATOMIC_UMIN_RTN_64', - 'TC_OP_ATOMIC_XOR_32', 'TC_OP_ATOMIC_XOR_64', - 'TC_OP_ATOMIC_XOR_RTN_32', 'TC_OP_ATOMIC_XOR_RTN_64', - 'TC_OP_INVL2_NC', 'TC_OP_INV_METADATA', 'TC_OP_MASKS', - 'TC_OP_MASK_64', 'TC_OP_MASK_FLUSH_DENROM', 'TC_OP_MASK_NO_RTN', - 'TC_OP_NOP_ACK', 'TC_OP_NOP_RTN0', 'TC_OP_PROBE_FILTER', - 'TC_OP_READ', 'TC_OP_RESERVED_FOP_32_0', - 'TC_OP_RESERVED_FOP_32_1', 'TC_OP_RESERVED_FOP_32_2', - 'TC_OP_RESERVED_FOP_64_0', 'TC_OP_RESERVED_FOP_64_1', - 'TC_OP_RESERVED_FOP_64_2', 'TC_OP_RESERVED_FOP_FLUSH_DENORM_32_1', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_32_2', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_0', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_1', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_2', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_1', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_0', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_1', - 'TC_OP_RESERVED_FOP_RTN_32_0', 'TC_OP_RESERVED_FOP_RTN_32_1', - 'TC_OP_RESERVED_FOP_RTN_32_2', 'TC_OP_RESERVED_FOP_RTN_64_0', - 'TC_OP_RESERVED_FOP_RTN_64_1', 'TC_OP_RESERVED_FOP_RTN_64_2', - 'TC_OP_RESERVED_NON_FLOAT_32_1', 'TC_OP_RESERVED_NON_FLOAT_32_2', - 'TC_OP_RESERVED_NON_FLOAT_32_3', 'TC_OP_RESERVED_NON_FLOAT_32_4', - 'TC_OP_RESERVED_NON_FLOAT_64_1', 'TC_OP_RESERVED_NON_FLOAT_64_2', - 'TC_OP_RESERVED_NON_FLOAT_64_3', 'TC_OP_RESERVED_NON_FLOAT_64_4', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_0', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_1', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_2', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_3', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_1', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_2', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_3', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_4', 'TC_OP_WBINVL1', - 'TC_OP_WBINVL1_SD', 'TC_OP_WBINVL1_VOL', 'TC_OP_WBINVL2', - 'TC_OP_WBINVL2_NC', 'TC_OP_WBINVL2_SD', 'TC_OP_WBL2_NC', - 'TC_OP_WBL2_WC', 'TC_OP_WRITE', 'TD_PERFCOUNT_SEL', - 'TD_PERF_SEL_RESERVED_14', 'TD_PERF_SEL_RESERVED_18', - 'TD_PERF_SEL_RESERVED_19', 'TD_PERF_SEL_RESERVED_39', - 'TD_PERF_SEL_RESERVED_43', 'TD_PERF_SEL_RESERVED_44', - 'TD_PERF_SEL_addresscmd_poison', 'TD_PERF_SEL_atomic_wavefront', - 'TD_PERF_SEL_bypass_filter_wavefront', - 'TD_PERF_SEL_coalescable_wavefront', - 'TD_PERF_SEL_coalesced_phase', 'TD_PERF_SEL_constant_state_full', - 'TD_PERF_SEL_consume_gds_traffic', 'TD_PERF_SEL_d16_data_packed', - 'TD_PERF_SEL_d16_en_wavefront', 'TD_PERF_SEL_data_poison', - 'TD_PERF_SEL_eight_phase_wavefront', - 'TD_PERF_SEL_four_phase_forward_wavefront', - 'TD_PERF_SEL_four_phase_wavefront', - 'TD_PERF_SEL_gather4_wavefront', - 'TD_PERF_SEL_gather4h_packed_wavefront', - 'TD_PERF_SEL_gather4h_wavefront', - 'TD_PERF_SEL_gather8h_packed_wavefront', 'TD_PERF_SEL_gds_stall', - 'TD_PERF_SEL_input_busy', 'TD_PERF_SEL_ldfptr_wavefront', - 'TD_PERF_SEL_lerp_busy', 'TD_PERF_SEL_load_wavefront', - 'TD_PERF_SEL_local_cg_dyn_sclk_grp0_en', - 'TD_PERF_SEL_local_cg_dyn_sclk_grp1_en', - 'TD_PERF_SEL_local_cg_dyn_sclk_grp4_en', - 'TD_PERF_SEL_local_cg_dyn_sclk_grp5_en', - 'TD_PERF_SEL_min_max_filter_wavefront', 'TD_PERF_SEL_nack', - 'TD_PERF_SEL_none', 'TD_PERF_SEL_null_cycle_output', - 'TD_PERF_SEL_opaque_black_border', 'TD_PERF_SEL_output_busy', - 'TD_PERF_SEL_output_fifo_full', 'TD_PERF_SEL_pc_stall', - 'TD_PERF_SEL_reg_sclk_vld', 'TD_PERF_SEL_sample_c_wavefront', - 'TD_PERF_SEL_sample_state_full', - 'TD_PERF_SEL_sixteen_phase_wavefront', - 'TD_PERF_SEL_start_cycle_0', 'TD_PERF_SEL_start_cycle_1', - 'TD_PERF_SEL_start_cycle_2', 'TD_PERF_SEL_start_cycle_3', - 'TD_PERF_SEL_store_wavefront', 'TD_PERF_SEL_tc_stall', - 'TD_PERF_SEL_tc_td_fifo_full', 'TD_PERF_SEL_td_busy', - 'TD_PERF_SEL_td_sp_traffic', - 'TD_PERF_SEL_texels_zeroed_out_by_blend_zero_prt', - 'TD_PERF_SEL_user_defined_border', 'TD_PERF_SEL_white_border', - 'TD_PERF_SEL_write_ack_wavefront', 'TESS_ISOLINE', 'TESS_QUAD', - 'TESS_TRIANGLE', 'TEX_BORDER_COLOR_TYPE', - 'TEX_BorderColor_OpaqueBlack', 'TEX_BorderColor_OpaqueWhite', - 'TEX_BorderColor_Register', 'TEX_BorderColor_TransparentBlack', - 'TEX_CHROMA_KEY', 'TEX_CLAMP', 'TEX_COORD_TYPE', - 'TEX_ChromaKey_Blend', 'TEX_ChromaKey_Disabled', - 'TEX_ChromaKey_Kill', 'TEX_ChromaKey_RESERVED_3', - 'TEX_Clamp_ClampHalfToBorder', 'TEX_Clamp_ClampToBorder', - 'TEX_Clamp_ClampToLast', 'TEX_Clamp_Mirror', - 'TEX_Clamp_MirrorOnceHalfToBorder', - 'TEX_Clamp_MirrorOnceToBorder', 'TEX_Clamp_MirrorOnceToLast', - 'TEX_Clamp_Repeat', 'TEX_CoordType_Normalized', - 'TEX_CoordType_Unnormalized', 'TEX_DEPTH_COMPARE_FUNCTION', - 'TEX_DIM', 'TEX_DepthCompareFunction_Always', - 'TEX_DepthCompareFunction_Equal', - 'TEX_DepthCompareFunction_Greater', - 'TEX_DepthCompareFunction_GreaterEqual', - 'TEX_DepthCompareFunction_Less', - 'TEX_DepthCompareFunction_LessEqual', - 'TEX_DepthCompareFunction_Never', - 'TEX_DepthCompareFunction_NotEqual', 'TEX_Dim_1D', - 'TEX_Dim_1DArray', 'TEX_Dim_2D', 'TEX_Dim_2DArray', - 'TEX_Dim_2DArray_MSAA', 'TEX_Dim_2D_MSAA', 'TEX_Dim_3D', - 'TEX_Dim_CubeMap', 'TEX_FORMAT_COMP', 'TEX_FormatComp_RESERVED_3', - 'TEX_FormatComp_Signed', 'TEX_FormatComp_Unsigned', - 'TEX_FormatComp_UnsignedBiased', 'TEX_MAX_ANISO_RATIO', - 'TEX_MIP_FILTER', 'TEX_MaxAnisoRatio_16to1', - 'TEX_MaxAnisoRatio_1to1', 'TEX_MaxAnisoRatio_2to1', - 'TEX_MaxAnisoRatio_4to1', 'TEX_MaxAnisoRatio_8to1', - 'TEX_MaxAnisoRatio_RESERVED_5', 'TEX_MaxAnisoRatio_RESERVED_6', - 'TEX_MaxAnisoRatio_RESERVED_7', 'TEX_MipFilter_Linear', - 'TEX_MipFilter_None', 'TEX_MipFilter_Point', - 'TEX_MipFilter_Point_Aniso_Adj', 'TEX_REQUEST_SIZE', - 'TEX_RequestSize_128B', 'TEX_RequestSize_2X64B', - 'TEX_RequestSize_32B', 'TEX_RequestSize_64B', 'TEX_SAMPLER_TYPE', - 'TEX_SamplerType_Invalid', 'TEX_SamplerType_Valid', - 'TEX_XYFilter_AnisoLinear', 'TEX_XYFilter_AnisoPoint', - 'TEX_XYFilter_Linear', 'TEX_XYFilter_Point', 'TEX_XY_FILTER', - 'TEX_ZFilter_Linear', 'TEX_ZFilter_None', 'TEX_ZFilter_Point', - 'TEX_ZFilter_RESERVED_3', 'TEX_Z_FILTER', 'TGID_ROLLOVER', - 'THREAD_TRACE_FINISH', 'THREAD_TRACE_FLUSH', - 'THREAD_TRACE_MARKER', 'THREAD_TRACE_START', 'THREAD_TRACE_STOP', - 'TMDS_COLOR_FORMAT', 'TMDS_COLOR_FORMAT_DUAL30BPP', - 'TMDS_COLOR_FORMAT_RESERVED', 'TMDS_COLOR_FORMAT_TWIN30BPP_LSB', - 'TMDS_COLOR_FORMAT__24BPP__TWIN30BPP_MSB__DUAL48BPP', - 'TMDS_CTL0_DATA_INVERT', 'TMDS_CTL0_DATA_INVERT_EN', - 'TMDS_CTL0_DATA_MODULATION', 'TMDS_CTL0_DATA_MODULATION_BIT0', - 'TMDS_CTL0_DATA_MODULATION_BIT1', - 'TMDS_CTL0_DATA_MODULATION_BIT2', - 'TMDS_CTL0_DATA_MODULATION_DISABLE', 'TMDS_CTL0_DATA_NORMAL', - 'TMDS_CTL0_DATA_SEL', 'TMDS_CTL0_DATA_SEL0_RESERVED', - 'TMDS_CTL0_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL0_DATA_SEL2_VSYNC', - 'TMDS_CTL0_DATA_SEL3_RESERVED', 'TMDS_CTL0_DATA_SEL4_HSYNC', - 'TMDS_CTL0_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL0_DATA_SEL8_RANDOM_DATA', - 'TMDS_CTL0_DATA_SEL9_SEL15_RANDOM_DATA', - 'TMDS_CTL0_PATTERN_OUT_DISABLE', 'TMDS_CTL0_PATTERN_OUT_EN', - 'TMDS_CTL0_PATTERN_OUT_ENABLE', 'TMDS_CTL1_DATA_INVERT', - 'TMDS_CTL1_DATA_INVERT_EN', 'TMDS_CTL1_DATA_MODULATION', - 'TMDS_CTL1_DATA_MODULATION_BIT0', - 'TMDS_CTL1_DATA_MODULATION_BIT1', - 'TMDS_CTL1_DATA_MODULATION_BIT2', - 'TMDS_CTL1_DATA_MODULATION_DISABLE', 'TMDS_CTL1_DATA_NORMAL', - 'TMDS_CTL1_DATA_SEL', 'TMDS_CTL1_DATA_SEL0_RESERVED', - 'TMDS_CTL1_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL1_DATA_SEL2_VSYNC', - 'TMDS_CTL1_DATA_SEL3_RESERVED', 'TMDS_CTL1_DATA_SEL4_HSYNC', - 'TMDS_CTL1_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL1_DATA_SEL8_BLANK_TIME', - 'TMDS_CTL1_DATA_SEL9_SEL15_RESERVED', - 'TMDS_CTL1_PATTERN_OUT_DISABLE', 'TMDS_CTL1_PATTERN_OUT_EN', - 'TMDS_CTL1_PATTERN_OUT_ENABLE', 'TMDS_CTL2_DATA_INVERT', - 'TMDS_CTL2_DATA_INVERT_EN', 'TMDS_CTL2_DATA_MODULATION', - 'TMDS_CTL2_DATA_MODULATION_BIT0', - 'TMDS_CTL2_DATA_MODULATION_BIT1', - 'TMDS_CTL2_DATA_MODULATION_BIT2', - 'TMDS_CTL2_DATA_MODULATION_DISABLE', 'TMDS_CTL2_DATA_NORMAL', - 'TMDS_CTL2_DATA_SEL', 'TMDS_CTL2_DATA_SEL0_RESERVED', - 'TMDS_CTL2_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL2_DATA_SEL2_VSYNC', - 'TMDS_CTL2_DATA_SEL3_RESERVED', 'TMDS_CTL2_DATA_SEL4_HSYNC', - 'TMDS_CTL2_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL2_DATA_SEL8_BLANK_TIME', - 'TMDS_CTL2_DATA_SEL9_SEL15_RESERVED', - 'TMDS_CTL2_PATTERN_OUT_DISABLE', 'TMDS_CTL2_PATTERN_OUT_EN', - 'TMDS_CTL2_PATTERN_OUT_ENABLE', 'TMDS_CTL3_DATA_INVERT', - 'TMDS_CTL3_DATA_INVERT_EN', 'TMDS_CTL3_DATA_MODULATION', - 'TMDS_CTL3_DATA_MODULATION_BIT0', - 'TMDS_CTL3_DATA_MODULATION_BIT1', - 'TMDS_CTL3_DATA_MODULATION_BIT2', - 'TMDS_CTL3_DATA_MODULATION_DISABLE', 'TMDS_CTL3_DATA_NORMAL', - 'TMDS_CTL3_DATA_SEL', 'TMDS_CTL3_DATA_SEL0_RESERVED', - 'TMDS_CTL3_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL3_DATA_SEL2_VSYNC', - 'TMDS_CTL3_DATA_SEL3_RESERVED', 'TMDS_CTL3_DATA_SEL4_HSYNC', - 'TMDS_CTL3_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL3_DATA_SEL8_BLANK_TIME', - 'TMDS_CTL3_DATA_SEL9_SEL15_RESERVED', - 'TMDS_CTL3_PATTERN_OUT_DISABLE', 'TMDS_CTL3_PATTERN_OUT_EN', - 'TMDS_CTL3_PATTERN_OUT_ENABLE', - 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL', - 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_PCLK_TMDS', - 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_TMDS_PLL', - 'TMDS_DVO_MUX_SELECT', 'TMDS_DVO_MUX_SELECT_B', - 'TMDS_DVO_MUX_SELECT_G', 'TMDS_DVO_MUX_SELECT_R', - 'TMDS_DVO_MUX_SELECT_RESERVED', - 'TMDS_NOT_SYNC_PHASE_ON_FRAME_START', 'TMDS_PIXEL_ENCODING', - 'TMDS_PIXEL_ENCODING_422', 'TMDS_PIXEL_ENCODING_444_OR_420', - 'TMDS_REG_TEST_OUTPUTA_CNTLA', 'TMDS_REG_TEST_OUTPUTA_CNTLA_NA', - 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA0', - 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA1', - 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA2', - 'TMDS_REG_TEST_OUTPUTB_CNTLB', 'TMDS_REG_TEST_OUTPUTB_CNTLB_NA', - 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB0', - 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB1', - 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB2', 'TMDS_STEREOSYNC_CTL0', - 'TMDS_STEREOSYNC_CTL1', 'TMDS_STEREOSYNC_CTL2', - 'TMDS_STEREOSYNC_CTL3', 'TMDS_STEREOSYNC_CTL_SEL_REG', - 'TMDS_SYNC_PHASE', 'TMDS_SYNC_PHASE_ON_FRAME_START', - 'TMDS_TRANSMITTER_BYPASS_PLLA_COHERENT', - 'TMDS_TRANSMITTER_BYPASS_PLLA_INCOHERENT', - 'TMDS_TRANSMITTER_BYPASS_PLLB_COHERENT', - 'TMDS_TRANSMITTER_BYPASS_PLLB_INCOHERENT', - 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA', - 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB', - 'TMDS_TRANSMITTER_CONTROL_IDSCKSELA', - 'TMDS_TRANSMITTER_CONTROL_IDSCKSELB', - 'TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN', - 'TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK', - 'TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN', - 'TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK', - 'TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS', - 'TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS', - 'TMDS_TRANSMITTER_ENABLE_HPD_MASK', - 'TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK', - 'TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK', - 'TMDS_TRANSMITTER_HPD_MASK_NOT_OVERRIDE', - 'TMDS_TRANSMITTER_HPD_MASK_OVERRIDE', - 'TMDS_TRANSMITTER_HPD_NOT_OVERRIDE_PLL_ENABLE', - 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE', - 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_CON', - 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_DISCON', - 'TMDS_TRANSMITTER_IDSCKSELA_USE_IDCLK', - 'TMDS_TRANSMITTER_IDSCKSELA_USE_IPIXCLK', - 'TMDS_TRANSMITTER_IDSCKSELB_USE_IDCLK', - 'TMDS_TRANSMITTER_IDSCKSELB_USE_IPIXCLK', - 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_NOT_OVERRIDE', - 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_OVERRIDE', - 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_NOT_OVERRIDE', - 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_OVERRIDE', - 'TMDS_TRANSMITTER_PLLSEL_BY_HW', - 'TMDS_TRANSMITTER_PLLSEL_OVERWRITE_BY_SW', - 'TMDS_TRANSMITTER_PLL_NOT_RST_ON_HPD', - 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_DISABLE', - 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_ENABLE', - 'TMDS_TRANSMITTER_PLL_RST_ON_HPD', - 'TMDS_TRANSMITTER_TDCLK_FROM_PADS', - 'TMDS_TRANSMITTER_TDCLK_FROM_TMDS_TDCLK', - 'TMDS_TRANSMITTER_TMCLK_FROM_PADS', - 'TMDS_TRANSMITTER_TMCLK_FROM_TMDS_TMCLK', - 'TRANSFERRED_1024_BYTES', 'TRANSFERRED_128_BYTES', - 'TRANSFERRED_2048_BYTES', 'TRANSFERRED_256_BYTES', - 'TRANSFERRED_4096_BYTES', 'TRANSFERRED_512_BYTES', - 'TRANSFERRED_64_BYTES', 'TRANSFERRED_8192_BYTES', 'TRAPEZOIDS', - 'TRISTRIP', 'TVX_DATA_FORMAT', 'TVX_DST_SEL', 'TVX_DstSel_0f', - 'TVX_DstSel_1f', 'TVX_DstSel_Mask', 'TVX_DstSel_RESERVED_6', - 'TVX_DstSel_W', 'TVX_DstSel_X', 'TVX_DstSel_Y', 'TVX_DstSel_Z', - 'TVX_ENDIAN_SWAP', 'TVX_EndianSwap_8in16', 'TVX_EndianSwap_8in32', - 'TVX_EndianSwap_8in64', 'TVX_EndianSwap_None', 'TVX_FMT_1', - 'TVX_FMT_10_10_10_2', 'TVX_FMT_10_11_11', - 'TVX_FMT_10_11_11_FLOAT', 'TVX_FMT_11_11_10', - 'TVX_FMT_11_11_10_FLOAT', 'TVX_FMT_16', 'TVX_FMT_16_16', - 'TVX_FMT_16_16_16', 'TVX_FMT_16_16_16_16', - 'TVX_FMT_16_16_16_16_FLOAT', 'TVX_FMT_16_16_16_FLOAT', - 'TVX_FMT_16_16_FLOAT', 'TVX_FMT_16_FLOAT', 'TVX_FMT_1_5_5_5', - 'TVX_FMT_1_REVERSED', 'TVX_FMT_24_8', 'TVX_FMT_24_8_FLOAT', - 'TVX_FMT_2_10_10_10', 'TVX_FMT_32', 'TVX_FMT_32_32', - 'TVX_FMT_32_32_32', 'TVX_FMT_32_32_32_32', - 'TVX_FMT_32_32_32_32_FLOAT', 'TVX_FMT_32_32_32_FLOAT', - 'TVX_FMT_32_32_FLOAT', 'TVX_FMT_32_AS_8', 'TVX_FMT_32_AS_8_8', - 'TVX_FMT_32_FLOAT', 'TVX_FMT_3_3_2', 'TVX_FMT_4_4', - 'TVX_FMT_4_4_4_4', 'TVX_FMT_5_5_5_1', 'TVX_FMT_5_6_5', - 'TVX_FMT_5_9_9_9_SHAREDEXP', 'TVX_FMT_6_5_5', 'TVX_FMT_8', - 'TVX_FMT_8_24', 'TVX_FMT_8_24_FLOAT', 'TVX_FMT_8_8', - 'TVX_FMT_8_8_8', 'TVX_FMT_8_8_8_8', 'TVX_FMT_APC0', - 'TVX_FMT_APC1', 'TVX_FMT_APC2', 'TVX_FMT_APC3', 'TVX_FMT_APC4', - 'TVX_FMT_APC5', 'TVX_FMT_APC6', 'TVX_FMT_APC7', 'TVX_FMT_BC1', - 'TVX_FMT_BC2', 'TVX_FMT_BC3', 'TVX_FMT_BC4', 'TVX_FMT_BC5', - 'TVX_FMT_BG_RG', 'TVX_FMT_CTX1', 'TVX_FMT_GB_GR', - 'TVX_FMT_INVALID', 'TVX_FMT_RESERVED_33', 'TVX_FMT_RESERVED_36', - 'TVX_FMT_RESERVED_4', 'TVX_FMT_RESERVED_63', - 'TVX_FMT_X24_8_32_FLOAT', 'TVX_INST', 'TVX_Inst_Gather4', - 'TVX_Inst_Gather4_C', 'TVX_Inst_Gather4_C_O', - 'TVX_Inst_Gather4_O', 'TVX_Inst_GetBufferResInfo', - 'TVX_Inst_GetGradientsH', 'TVX_Inst_GetGradientsV', - 'TVX_Inst_GetLOD', 'TVX_Inst_GetNumberOfSamples', - 'TVX_Inst_GetTextureResInfo', 'TVX_Inst_KeepGradients', - 'TVX_Inst_LD', 'TVX_Inst_NormalVertexFetch', 'TVX_Inst_Pass', - 'TVX_Inst_RESERVED_15', 'TVX_Inst_RESERVED_2', 'TVX_Inst_Sample', - 'TVX_Inst_Sample_C', 'TVX_Inst_Sample_C_G', - 'TVX_Inst_Sample_C_G_LB', 'TVX_Inst_Sample_C_L', - 'TVX_Inst_Sample_C_LB', 'TVX_Inst_Sample_C_LZ', - 'TVX_Inst_Sample_G', 'TVX_Inst_Sample_G_LB', 'TVX_Inst_Sample_L', - 'TVX_Inst_Sample_LB', 'TVX_Inst_Sample_LZ', - 'TVX_Inst_SemanticVertexFetch', 'TVX_Inst_SetGradientsH', - 'TVX_Inst_SetGradientsV', 'TVX_Inst_SetTextureOffsets', - 'TVX_NUM_FORMAT_ALL', 'TVX_NumFormatAll_Int', - 'TVX_NumFormatAll_Norm', 'TVX_NumFormatAll_RESERVED_3', - 'TVX_NumFormatAll_Scaled', 'TVX_SRC_SEL', 'TVX_SRFModeAll_NZ', - 'TVX_SRFModeAll_ZCMO', 'TVX_SRF_MODE_ALL', 'TVX_SrcSel_0f', - 'TVX_SrcSel_1f', 'TVX_SrcSel_W', 'TVX_SrcSel_X', 'TVX_SrcSel_Y', - 'TVX_SrcSel_Z', 'TVX_TYPE', 'TVX_Type_InvalidTextureResource', - 'TVX_Type_InvalidVertexBuffer', 'TVX_Type_ValidTextureResource', - 'TVX_Type_ValidVertexBuffer', 'TileSplit', 'TileType', - 'UCONFIG_SPACE_END', 'UCONFIG_SPACE_START', 'UNDEF', - 'UNP_ADDR_SURF_MACRO_ASPECT_1', 'UNP_ADDR_SURF_MACRO_ASPECT_2', - 'UNP_ADDR_SURF_MACRO_ASPECT_4', 'UNP_ADDR_SURF_MACRO_ASPECT_8', - 'UNP_ADDR_SURF_TILE_SPLIT_128B', 'UNP_ADDR_SURF_TILE_SPLIT_1KB', - 'UNP_ADDR_SURF_TILE_SPLIT_256B', 'UNP_ADDR_SURF_TILE_SPLIT_2KB', - 'UNP_ADDR_SURF_TILE_SPLIT_4KB', 'UNP_ADDR_SURF_TILE_SPLIT_512B', - 'UNP_ADDR_SURF_TILE_SPLIT_64B', 'UNP_BUFFER_MODE', - 'UNP_BUFFER_MODE_LUMA', 'UNP_BUFFER_MODE_LUMA_CHROMA', - 'UNP_CRC_LINE_SEL', 'UNP_CRC_LINE_SEL_EVEN_ONLY', - 'UNP_CRC_LINE_SEL_ODD_EVEN', 'UNP_CRC_LINE_SEL_ODD_ONLY', - 'UNP_CRC_LINE_SEL_RESERVED', 'UNP_CRC_SOURCE_SEL', - 'UNP_CRC_SOURCE_SEL_LOWER16', 'UNP_CRC_SOURCE_SEL_LOWER32', - 'UNP_CRC_SOURCE_SEL_NP_TO_LBV', 'UNP_CRC_SOURCE_SEL_RESERVED', - 'UNP_CRC_SOURCE_SEL_UNP_TO_LBV', 'UNP_GRPH_16BPP', - 'UNP_GRPH_32BPP', 'UNP_GRPH_8BPP', - 'UNP_GRPH_ADDRESS_TRANSLATION_ENABLE', - 'UNP_GRPH_ADDRESS_TRANSLATION_ENABLE0', - 'UNP_GRPH_ADDRESS_TRANSLATION_ENABLE1', - 'UNP_GRPH_ADDR_SURF_16_BANK', 'UNP_GRPH_ADDR_SURF_2_BANK', - 'UNP_GRPH_ADDR_SURF_4_BANK', 'UNP_GRPH_ADDR_SURF_8_BANK', - 'UNP_GRPH_ADDR_SURF_BANK_HEIGHT_1', - 'UNP_GRPH_ADDR_SURF_BANK_HEIGHT_2', - 'UNP_GRPH_ADDR_SURF_BANK_HEIGHT_4', - 'UNP_GRPH_ADDR_SURF_BANK_HEIGHT_8', - 'UNP_GRPH_ADDR_SURF_BANK_WIDTH_1', - 'UNP_GRPH_ADDR_SURF_BANK_WIDTH_2', - 'UNP_GRPH_ADDR_SURF_BANK_WIDTH_4', - 'UNP_GRPH_ADDR_SURF_BANK_WIDTH_8', 'UNP_GRPH_BANK_HEIGHT', - 'UNP_GRPH_BANK_WIDTH', 'UNP_GRPH_BLUE_CROSSBAR', - 'UNP_GRPH_BLUE_CROSSBAR_A', 'UNP_GRPH_BLUE_CROSSBAR_B_Cb_AND_C', - 'UNP_GRPH_BLUE_CROSSBAR_GY_AND_Y', 'UNP_GRPH_BLUE_CROSSBAR_R_Cr', - 'UNP_GRPH_COLOR_EXPANSION_MODE', 'UNP_GRPH_DEPTH', - 'UNP_GRPH_DISABLED', 'UNP_GRPH_DYNAMIC_EXPANSION', 'UNP_GRPH_EN', - 'UNP_GRPH_ENABLED', 'UNP_GRPH_ENDIAN_SWAP', - 'UNP_GRPH_ENDIAN_SWAP_8IN16', 'UNP_GRPH_ENDIAN_SWAP_8IN32', - 'UNP_GRPH_ENDIAN_SWAP_8IN43', 'UNP_GRPH_ENDIAN_SWAP_NONE', - 'UNP_GRPH_GREEN_CROSSBAR', 'UNP_GRPH_MACRO_TILE_ASPECT', - 'UNP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE', - 'UNP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE_0', - 'UNP_GRPH_MODE_DISABLE_MULTIPLE_UPDATE_1', - 'UNP_GRPH_MODE_UPDATE_LOCKG', 'UNP_GRPH_NUM_BANKS', - 'UNP_GRPH_RED_CROSSBAR', 'UNP_GRPH_RED_CROSSBAR_A', - 'UNP_GRPH_RED_CROSSBAR_B_Cb', 'UNP_GRPH_RED_CROSSBAR_G_Y', - 'UNP_GRPH_RED_CROSSBAR_R_Cr', - 'UNP_GRPH_STACK_INTERLACE_FLIP_DISABLE', - 'UNP_GRPH_STACK_INTERLACE_FLIP_EN', - 'UNP_GRPH_STACK_INTERLACE_FLIP_ENABLE', - 'UNP_GRPH_STACK_INTERLACE_FLIP_MODE', - 'UNP_GRPH_STACK_INTERLACE_FLIP_MODE_0', - 'UNP_GRPH_STACK_INTERLACE_FLIP_MODE_1', - 'UNP_GRPH_STACK_INTERLACE_FLIP_MODE_2', - 'UNP_GRPH_STACK_INTERLACE_FLIP_MODE_3', - 'UNP_GRPH_STEREOSYNC_FLIP_DISABLE', 'UNP_GRPH_STEREOSYNC_FLIP_EN', - 'UNP_GRPH_STEREOSYNC_FLIP_ENABLE', - 'UNP_GRPH_STEREOSYNC_FLIP_MODE', - 'UNP_GRPH_STEREOSYNC_FLIP_MODE_0', - 'UNP_GRPH_STEREOSYNC_FLIP_MODE_1', - 'UNP_GRPH_STEREOSYNC_FLIP_MODE_2', - 'UNP_GRPH_STEREOSYNC_FLIP_MODE_3', - 'UNP_GRPH_STEREOSYNC_SELECT_DIS', - 'UNP_GRPH_STEREOSYNC_SELECT_DISABLE', - 'UNP_GRPH_STEREOSYNC_SELECT_EN', - 'UNP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE', - 'UNP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE_0', - 'UNP_GRPH_SURFACE_DISABLE_MULTIPLE_UPDATE_1', - 'UNP_GRPH_SURFACE_IGNORE_UPDATE_LOCK', - 'UNP_GRPH_SURFACE_IGNORE_UPDATE_LOCK_0', - 'UNP_GRPH_SURFACE_IGNORE_UPDATE_LOCK_1', 'UNP_GRPH_TILE_SPLIT', - 'UNP_GRPH_UPDATE_LOCK_0', 'UNP_GRPH_UPDATE_LOCK_1', - 'UNP_GRPH_ZERO_EXPANSION', 'UNP_PIXEL_DROP', 'UNP_PIXEL_DROPPING', - 'UNP_PIXEL_NO_DROP', 'UNP_ROTATION_ANGLE', 'UNP_ROTATION_ANGLE_0', - 'UNP_ROTATION_ANGLE_0m', 'UNP_ROTATION_ANGLE_180', - 'UNP_ROTATION_ANGLE_180m', 'UNP_ROTATION_ANGLE_270', - 'UNP_ROTATION_ANGLE_270m', 'UNP_ROTATION_ANGLE_90', - 'UNP_ROTATION_ANGLE_90m', 'UNP_UNP_GRPH_GREEN_CROSSBAR_A', - 'UNP_UNP_GRPH_GREEN_CROSSBAR_B_Cb_AND_C', - 'UNP_UNP_GRPH_GREEN_CROSSBAR_GY_AND_Y', - 'UNP_UNP_GRPH_GREEN_CROSSBAR_R_Cr', 'UNP_VIDEO_FORMAT', - 'UNP_VIDEO_FORMAT0', 'UNP_VIDEO_FORMAT1', - 'UNP_VIDEO_FORMAT_YUV420_YCbCr', 'UNP_VIDEO_FORMAT_YUV420_YCrCb', - 'UNP_VIDEO_FORMAT_YUV422_CbY', 'UNP_VIDEO_FORMAT_YUV422_CrY', - 'UNP_VIDEO_FORMAT_YUV422_YCb', 'UNP_VIDEO_FORMAT_YUV422_YCr', - 'UPDATE_LOCKED', 'UPDATE_UNLOCKED', 'UTCL1FaultType', - 'UTCL1RequestType', 'UTCL1_TYPE_BYPASS', 'UTCL1_TYPE_NORMAL', - 'UTCL1_TYPE_SHOOTDOWN', 'UTCL1_XNACK_NO_RETRY', 'UTCL1_XNACK_PRT', - 'UTCL1_XNACK_RETRY', 'UTCL1_XNACK_SUCCESS', 'VC_AND_TC', - 'VC_ONLY', 'VGT_CACHE_INVALID_MODE', 'VGT_DIST_MODE', - 'VGT_DI_INDEX_SIZE', 'VGT_DI_MAJOR_MODE_SELECT', - 'VGT_DI_PRIM_TYPE', 'VGT_DI_SOURCE_SELECT', 'VGT_DMA_BUF_MEM', - 'VGT_DMA_BUF_RING', 'VGT_DMA_BUF_SETUP', 'VGT_DMA_BUF_TYPE', - 'VGT_DMA_PTR_UPDATE', 'VGT_DMA_SWAP_16_BIT', - 'VGT_DMA_SWAP_32_BIT', 'VGT_DMA_SWAP_MODE', 'VGT_DMA_SWAP_NONE', - 'VGT_DMA_SWAP_WORD', 'VGT_EVENT_TYPE', 'VGT_FLUSH', - 'VGT_GROUP_CONV_SEL', 'VGT_GRP_2D_COPY_RECT_V0', - 'VGT_GRP_2D_COPY_RECT_V1', 'VGT_GRP_2D_COPY_RECT_V2', - 'VGT_GRP_2D_COPY_RECT_V3', 'VGT_GRP_2D_FILL_RECT', - 'VGT_GRP_2D_LINE', 'VGT_GRP_2D_RECT', 'VGT_GRP_2D_TRI', - 'VGT_GRP_3D_LINE', 'VGT_GRP_3D_LINE_ADJ', 'VGT_GRP_3D_PATCH', - 'VGT_GRP_3D_POINT', 'VGT_GRP_3D_QUAD', 'VGT_GRP_3D_RECT', - 'VGT_GRP_3D_TRI', 'VGT_GRP_3D_TRI_ADJ', 'VGT_GRP_AUTO_PRIM', - 'VGT_GRP_FAN', 'VGT_GRP_FIX_1_23_TO_FLOAT', 'VGT_GRP_FLOAT_32', - 'VGT_GRP_INDEX_16', 'VGT_GRP_INDEX_32', 'VGT_GRP_LIST', - 'VGT_GRP_LOOP', 'VGT_GRP_POLYGON', 'VGT_GRP_PRIM_INDEX_LINE', - 'VGT_GRP_PRIM_INDEX_QUAD', 'VGT_GRP_PRIM_INDEX_TRI', - 'VGT_GRP_PRIM_ORDER', 'VGT_GRP_PRIM_TYPE', 'VGT_GRP_SINT_16', - 'VGT_GRP_SINT_32', 'VGT_GRP_STRIP', 'VGT_GRP_UINT_16', - 'VGT_GRP_UINT_32', 'VGT_GS_CUT_MODE', 'VGT_GS_MODE_TYPE', - 'VGT_GS_OUTPRIM_TYPE', 'VGT_INDEX_16', 'VGT_INDEX_32', - 'VGT_INDEX_8', 'VGT_INDEX_TYPE_MODE', 'VGT_OUTPATH_GS_BLOCK', - 'VGT_OUTPATH_HS_BLOCK', 'VGT_OUTPATH_PASSTHRU', - 'VGT_OUTPATH_PRIM_GEN', 'VGT_OUTPATH_SELECT', - 'VGT_OUTPATH_TESS_EN', 'VGT_OUTPATH_VTX_REUSE', 'VGT_OUT_2D_RECT', - 'VGT_OUT_LINE', 'VGT_OUT_LINE_ADJ', 'VGT_OUT_PATCH', - 'VGT_OUT_POINT', 'VGT_OUT_PRIM_TYPE', 'VGT_OUT_RECT_V0', - 'VGT_OUT_RECT_V1', 'VGT_OUT_RECT_V2', 'VGT_OUT_RECT_V3', - 'VGT_OUT_TRI', 'VGT_OUT_TRI_ADJ', 'VGT_PERFCOUNT_SELECT', - 'VGT_POLICY_LRU', 'VGT_POLICY_STREAM', 'VGT_RDREQ_POLICY', - 'VGT_STAGES_ES_EN', 'VGT_STAGES_GS_EN', 'VGT_STAGES_HS_EN', - 'VGT_STAGES_LS_EN', 'VGT_STAGES_VS_EN', 'VGT_STREAMOUT_RESET', - 'VGT_STREAMOUT_SYNC', 'VGT_TESS_PARTITION', 'VGT_TESS_TOPOLOGY', - 'VGT_TESS_TYPE', 'VGT_TE_PRIM_INDEX_LINE', - 'VGT_TE_PRIM_INDEX_QUAD', 'VGT_TE_PRIM_INDEX_TRI', 'VGT_TE_QUAD', - 'VID_ENHANCED_MODE', 'VID_NORMAL_FRAME_MODE', - 'VID_STREAM_DISABLE_MASKED', 'VID_STREAM_DISABLE_UNMASK', - 'VMID_SZ', 'VS_PARTIAL_FLUSH', 'VS_STAGE_COPY_SHADER', - 'VS_STAGE_DS', 'VS_STAGE_REAL', 'VTX_CLAMP', - 'VTX_Clamp_ClampToNAN', 'VTX_Clamp_ClampToZero', 'VTX_FETCH_TYPE', - 'VTX_FORMAT_COMP_ALL', 'VTX_FetchType_InstanceData', - 'VTX_FetchType_NoIndexOffset', 'VTX_FetchType_RESERVED_3', - 'VTX_FetchType_VertexData', 'VTX_FormatCompAll_Signed', - 'VTX_FormatCompAll_Unsigned', 'VTX_MEM_REQUEST_SIZE', - 'VTX_MemRequestSize_32B', 'VTX_MemRequestSize_64B', - 'WD_IA_DRAW_REG_XFER', 'WD_IA_DRAW_REG_XFER_IA_MULTI_VGT_PARAM', - 'WD_IA_DRAW_REG_XFER_VGT_MULTI_PRIM_IB_RESET_EN', - 'WD_IA_DRAW_SOURCE', 'WD_IA_DRAW_SOURCE_AUTO', - 'WD_IA_DRAW_SOURCE_DMA', 'WD_IA_DRAW_SOURCE_IMMD', - 'WD_IA_DRAW_SOURCE_OPAQ', 'WD_IA_DRAW_TYPE', - 'WD_IA_DRAW_TYPE_DI_MM0', 'WD_IA_DRAW_TYPE_EVENT_ADDR', - 'WD_IA_DRAW_TYPE_EVENT_INIT', 'WD_IA_DRAW_TYPE_IMM_DATA', - 'WD_IA_DRAW_TYPE_INDX_OFF', 'WD_IA_DRAW_TYPE_MAX_INDX', - 'WD_IA_DRAW_TYPE_MIN_INDX', 'WD_IA_DRAW_TYPE_REG_XFER', - 'WD_PERFCOUNT_SELECT', 'XDMA_LOCAL_SW_MODE_SW_256B_D', - 'XDMA_LOCAL_SW_MODE_SW_64KB_D', 'XDMA_LOCAL_SW_MODE_SW_64KB_D_X', - 'XDMA_MSTR_ALPHA_POSITION_15_8', 'XDMA_MSTR_ALPHA_POSITION_23_16', - 'XDMA_MSTR_ALPHA_POSITION_31_24', 'XDMA_MSTR_ALPHA_POSITION_7_0', - 'XDMA_MSTR_VSYNC_GSL_CHECK_SEL_PIPE0', - 'XDMA_MSTR_VSYNC_GSL_CHECK_SEL_PIPE1', - 'XDMA_MSTR_VSYNC_GSL_CHECK_SEL_PIPE2', - 'XDMA_MSTR_VSYNC_GSL_CHECK_SEL_PIPE3', - 'XDMA_MSTR_VSYNC_GSL_CHECK_SEL_PIPE4', - 'XDMA_MSTR_VSYNC_GSL_CHECK_SEL_PIPE5', - 'XDMA_SLV_ALPHA_POSITION_15_8', 'XDMA_SLV_ALPHA_POSITION_23_16', - 'XDMA_SLV_ALPHA_POSITION_31_24', 'XDMA_SLV_ALPHA_POSITION_7_0', - 'XTAL_REF_CLOCK_SOURCE_SEL', 'XTAL_REF_CLOCK_SOURCE_SEL_PPLL', - 'XTAL_REF_CLOCK_SOURCE_SEL_XTALIN', 'XTAL_REF_SEL', - 'XTAL_REF_SEL_1X', 'XTAL_REF_SEL_2X', 'ZFormat', 'ZLimitSumm', - 'ZModeForce', 'ZOrder', 'ZPASS_DISABLE', 'ZPASS_DONE', - 'ZPASS_PIXELS', 'ZPASS_SAMPLES', 'ZSamplePosition', 'Z_16', - 'Z_24', 'Z_32_FLOAT', 'Z_INVALID', 'Z_SAMPLE_CENTER', - 'Z_SAMPLE_CENTROID', 'ZpassControl', '_vega10_ENUM_HEADER', - 'ia_perf_GRP_INPUT_EVENT_WINDOW_ACTIVE', 'ia_perf_MC_LAT_BIN_0', - 'ia_perf_MC_LAT_BIN_1', 'ia_perf_MC_LAT_BIN_2', - 'ia_perf_MC_LAT_BIN_3', 'ia_perf_MC_LAT_BIN_4', - 'ia_perf_MC_LAT_BIN_5', 'ia_perf_MC_LAT_BIN_6', - 'ia_perf_MC_LAT_BIN_7', 'ia_perf_RESERVED1', 'ia_perf_RESERVED2', - 'ia_perf_RESERVED3', 'ia_perf_RESERVED4', 'ia_perf_RESERVED5', - 'ia_perf_RESERVED6', 'ia_perf_RESERVED7', - 'ia_perf_dma_data_fifo_full', 'ia_perf_ia_busy', - 'ia_perf_ia_dma_return', 'ia_perf_ia_sclk_core_vld_event', - 'ia_perf_ia_sclk_reg_vld_event', 'ia_perf_ia_stalled', - 'ia_perf_shift_starved_pipe0_event', - 'ia_perf_shift_starved_pipe1_event', 'vgt_perf_VGT_PA_CLIPP_EOP', - 'vgt_perf_VGT_PA_CLIPP_IS_EVENT', - 'vgt_perf_VGT_PA_CLIPP_NEW_VTX_VECT', - 'vgt_perf_VGT_PA_CLIPP_NULL_PRIM', 'vgt_perf_VGT_PA_CLIPP_SEND', - 'vgt_perf_VGT_PA_CLIPP_STALLED', - 'vgt_perf_VGT_PA_CLIPP_STARVED_BUSY', - 'vgt_perf_VGT_PA_CLIPP_STARVED_IDLE', - 'vgt_perf_VGT_PA_CLIPP_STATIC', 'vgt_perf_VGT_PA_CLIPS_SEND', - 'vgt_perf_VGT_PA_CLIPS_STALLED', - 'vgt_perf_VGT_PA_CLIPS_STARVED_BUSY', - 'vgt_perf_VGT_PA_CLIPS_STARVED_IDLE', - 'vgt_perf_VGT_PA_CLIPS_STATIC', 'vgt_perf_VGT_PA_CLIPV_FIRSTVERT', - 'vgt_perf_VGT_PA_CLIPV_SEND', 'vgt_perf_VGT_PA_CLIPV_STALLED', - 'vgt_perf_VGT_PA_CLIPV_STARVED_BUSY', - 'vgt_perf_VGT_PA_CLIPV_STARVED_IDLE', - 'vgt_perf_VGT_PA_CLIPV_STATIC', - 'vgt_perf_VGT_PA_EVENT_WINDOW_ACTIVE', - 'vgt_perf_VGT_SPI_ESTHREAD_EVENT_WINDOW_ACTIVE', - 'vgt_perf_VGT_SPI_ESTHREAD_IS_EVENT', - 'vgt_perf_VGT_SPI_ESTHREAD_SEND', 'vgt_perf_VGT_SPI_ESVERT_EOV', - 'vgt_perf_VGT_SPI_ESVERT_STALLED', - 'vgt_perf_VGT_SPI_ESVERT_STARVED_BUSY', - 'vgt_perf_VGT_SPI_ESVERT_STARVED_IDLE', - 'vgt_perf_VGT_SPI_ESVERT_STATIC', 'vgt_perf_VGT_SPI_ESVERT_VALID', - 'vgt_perf_VGT_SPI_GSPRIM_CONT', 'vgt_perf_VGT_SPI_GSPRIM_EOV', - 'vgt_perf_VGT_SPI_GSPRIM_STALLED', - 'vgt_perf_VGT_SPI_GSPRIM_STARVED_BUSY', - 'vgt_perf_VGT_SPI_GSPRIM_STARVED_IDLE', - 'vgt_perf_VGT_SPI_GSPRIM_STATIC', 'vgt_perf_VGT_SPI_GSPRIM_VALID', - 'vgt_perf_VGT_SPI_GSTHREAD_EVENT_WINDOW_ACTIVE', - 'vgt_perf_VGT_SPI_GSTHREAD_IS_EVENT', - 'vgt_perf_VGT_SPI_GSTHREAD_SEND', 'vgt_perf_VGT_SPI_HSVERT_EOV', - 'vgt_perf_VGT_SPI_HSVERT_STALLED', - 'vgt_perf_VGT_SPI_HSVERT_STARVED_BUSY', - 'vgt_perf_VGT_SPI_HSVERT_STARVED_IDLE', - 'vgt_perf_VGT_SPI_HSVERT_STATIC', 'vgt_perf_VGT_SPI_HSVERT_VALID', - 'vgt_perf_VGT_SPI_HSWAVE_EVENT_WINDOW_ACTIVE', - 'vgt_perf_VGT_SPI_HSWAVE_IS_EVENT', - 'vgt_perf_VGT_SPI_HSWAVE_SEND', 'vgt_perf_VGT_SPI_LSVERT_EOV', - 'vgt_perf_VGT_SPI_LSVERT_STALLED', - 'vgt_perf_VGT_SPI_LSVERT_STARVED_BUSY', - 'vgt_perf_VGT_SPI_LSVERT_STARVED_IDLE', - 'vgt_perf_VGT_SPI_LSVERT_STATIC', 'vgt_perf_VGT_SPI_LSVERT_VALID', - 'vgt_perf_VGT_SPI_LSWAVE_EVENT_WINDOW_ACTIVE', - 'vgt_perf_VGT_SPI_LSWAVE_IS_EVENT', - 'vgt_perf_VGT_SPI_LSWAVE_SEND', - 'vgt_perf_VGT_SPI_VSTHREAD_EVENT_WINDOW_ACTIVE', - 'vgt_perf_VGT_SPI_VSTHREAD_IS_EVENT', - 'vgt_perf_VGT_SPI_VSTHREAD_SEND', 'vgt_perf_VGT_SPI_VSVERT_EOV', - 'vgt_perf_VGT_SPI_VSVERT_SEND', 'vgt_perf_VGT_SPI_VSVERT_STALLED', - 'vgt_perf_VGT_SPI_VSVERT_STARVED_BUSY', - 'vgt_perf_VGT_SPI_VSVERT_STARVED_IDLE', - 'vgt_perf_VGT_SPI_VSVERT_STATIC', 'vgt_perf_cm_reading_stalled', - 'vgt_perf_cm_stalled_by_gog', - 'vgt_perf_cm_stalled_by_gsfetch_done', - 'vgt_perf_counters_avail_stalled', - 'vgt_perf_cut_mem_flush_stalled', 'vgt_perf_ds_RESERVED', - 'vgt_perf_ds_cache_hits', 'vgt_perf_ds_prims', 'vgt_perf_es_done', - 'vgt_perf_es_done_latency', 'vgt_perf_es_flush', - 'vgt_perf_es_ring_high_water_mark', 'vgt_perf_es_thread_groups', - 'vgt_perf_esthread_stalled_es_rb_full', - 'vgt_perf_esthread_stalled_spi_bp', - 'vgt_perf_esvert_stalled_es_tbl', - 'vgt_perf_esvert_stalled_gs_event', - 'vgt_perf_esvert_stalled_gs_tbl', - 'vgt_perf_esvert_stalled_gsprim', 'vgt_perf_gog_busy', - 'vgt_perf_gog_out_indx_stalled', 'vgt_perf_gog_out_prim_stalled', - 'vgt_perf_gog_vs_tbl_stalled', 'vgt_perf_gs_cache_hits', - 'vgt_perf_gs_done', 'vgt_perf_gs_done_latency', - 'vgt_perf_gs_done_received', 'vgt_perf_gs_event_stall', - 'vgt_perf_gs_issue_rtr_stalled', - 'vgt_perf_gs_rb_space_avail_stalled', - 'vgt_perf_gs_ring_high_water_mark', - 'vgt_perf_gsprim_stalled_es_tbl', - 'vgt_perf_gsprim_stalled_esvert', - 'vgt_perf_gsprim_stalled_gs_event', - 'vgt_perf_gsprim_stalled_gs_tbl', 'vgt_perf_gsthread_stalled', - 'vgt_perf_hs_done', 'vgt_perf_hs_done_latency', - 'vgt_perf_hs_flush', 'vgt_perf_hs_input_stall', - 'vgt_perf_hs_interface_stall', 'vgt_perf_hs_tfm_stall', - 'vgt_perf_hs_tgs_active_high_water_mark', - 'vgt_perf_hs_thread_groups', 'vgt_perf_hs_tif_stall', - 'vgt_perf_hs_waiting_on_ls_done_stall', 'vgt_perf_hswave_stalled', - 'vgt_perf_ls_done', 'vgt_perf_ls_done_latency', - 'vgt_perf_ls_flush', 'vgt_perf_ls_thread_groups', - 'vgt_perf_pa_clipp_dealloc', 'vgt_perf_reused_es_indices', - 'vgt_perf_reused_vs_indices', 'vgt_perf_sclk_core_vld_event', - 'vgt_perf_sclk_gs_vld_event', 'vgt_perf_sclk_reg_vld_event', - 'vgt_perf_strmout_stalled', - 'vgt_perf_te11_con_starved_after_work', 'vgt_perf_te11_starved', - 'vgt_perf_total_cache_hits', 'vgt_perf_vgt_busy', - 'vgt_perf_vgt_gs_busy', 'vgt_perf_vgt_hs_busy', - 'vgt_perf_vgt_pa_clipp_eopg', - 'vgt_perf_vgt_pa_clipp_send_not_event', - 'vgt_perf_vgt_pa_clipp_starved_after_work', - 'vgt_perf_vgt_pa_clipp_valid_prim', 'vgt_perf_vgt_te11_busy', - 'vgt_perf_vs_cache_hits', 'vgt_perf_vs_conflicting_indices', - 'vgt_perf_vs_table_high_water_mark', 'vgt_perf_vs_thread_groups', - 'vgt_perf_vsfetch_done', 'vgt_perf_vsvert_api_send', - 'vgt_perf_vsvert_ds_send', 'vgt_perf_vsvert_work_received', - 'vgt_perf_wait_for_es_done_stalled', 'vgt_perf_waveid_stalled', - 'vgt_spi_vsvert_valid', 'wd_perf_RBIU_DI_FIFO_STALLED', - 'wd_perf_RBIU_DI_FIFO_STARVED', 'wd_perf_RBIU_DR_FIFO_STALLED', - 'wd_perf_RBIU_DR_FIFO_STARVED', - 'wd_perf_RBIU_FIFOS_EVENT_WINDOW_ACTIVE', 'wd_perf_hs_done_se0', - 'wd_perf_hs_done_se1', 'wd_perf_hs_done_se2', - 'wd_perf_hs_done_se3', 'wd_perf_inside_tf_bin_0', - 'wd_perf_inside_tf_bin_1', 'wd_perf_inside_tf_bin_2', - 'wd_perf_inside_tf_bin_3', 'wd_perf_inside_tf_bin_4', - 'wd_perf_inside_tf_bin_5', 'wd_perf_inside_tf_bin_6', - 'wd_perf_inside_tf_bin_7', 'wd_perf_inside_tf_bin_8', - 'wd_perf_null_patches', 'wd_perf_se0_hs_done_latency', - 'wd_perf_se1_hs_done_latency', 'wd_perf_se2_hs_done_latency', - 'wd_perf_se3_hs_done_latency', 'wd_perf_tfreq_lat_bin_0', - 'wd_perf_tfreq_lat_bin_1', 'wd_perf_tfreq_lat_bin_2', - 'wd_perf_tfreq_lat_bin_3', 'wd_perf_tfreq_lat_bin_4', - 'wd_perf_tfreq_lat_bin_5', 'wd_perf_tfreq_lat_bin_6', - 'wd_perf_tfreq_lat_bin_7', 'wd_perf_wd_busy', - 'wd_perf_wd_sclk_core_vld_event', - 'wd_perf_wd_sclk_input_vld_event', - 'wd_perf_wd_sclk_reg_vld_event', 'wd_perf_wd_stalled', - 'wd_starved_on_hs_done'] diff --git a/tinygrad_repo/tinygrad/runtime/autogen/amd_gpu.py b/tinygrad_repo/tinygrad/runtime/autogen/amd_gpu.py index 9ea5e6d9f..5ced4e01f 100644 --- a/tinygrad_repo/tinygrad/runtime/autogen/amd_gpu.py +++ b/tinygrad_repo/tinygrad/runtime/autogen/amd_gpu.py @@ -120,17 +120,17 @@ class Union(ctypes.Union, AsDictMixin): HSA_RUNTIME_CORE_INC_SDMA_REGISTERS_H_ = True # macro -SDMA_OP_COPY = 1 # macro -SDMA_OP_FENCE = 5 # macro -SDMA_OP_TRAP = 6 # macro -SDMA_OP_POLL_REGMEM = 8 # macro -SDMA_OP_ATOMIC = 10 # macro -SDMA_OP_CONST_FILL = 11 # macro -SDMA_OP_TIMESTAMP = 13 # macro +SDMA_OP_COPY = 1 # Variable ctypes.c_uint32 +SDMA_OP_FENCE = 5 # Variable ctypes.c_uint32 +SDMA_OP_TRAP = 6 # Variable ctypes.c_uint32 +SDMA_OP_POLL_REGMEM = 8 # Variable ctypes.c_uint32 +SDMA_OP_ATOMIC = 10 # Variable ctypes.c_uint32 +SDMA_OP_CONST_FILL = 11 # Variable ctypes.c_uint32 +SDMA_OP_TIMESTAMP = 13 # Variable ctypes.c_uint32 SDMA_OP_GCR = 17 # Variable ctypes.c_uint32 -SDMA_SUBOP_COPY_LINEAR = 0 # macro +SDMA_SUBOP_COPY_LINEAR = 0 # Variable ctypes.c_uint32 SDMA_SUBOP_COPY_LINEAR_RECT = 4 # Variable ctypes.c_uint32 -SDMA_SUBOP_TIMESTAMP_GET_GLOBAL = 2 # macro +SDMA_SUBOP_TIMESTAMP_GET_GLOBAL = 2 # Variable ctypes.c_uint32 SDMA_SUBOP_USER_GCR = 1 # Variable ctypes.c_uint32 SDMA_ATOMIC_ADD64 = 47 # Variable ctypes.c_uint32 class struct_SDMA_PKT_COPY_LINEAR_TAG(Structure): @@ -1638,35015 +1638,6 @@ PACKET3_SET_Q_PREEMPTION_MODE = 0xF0 # macro def PACKET3_SET_Q_PREEMPTION_MODE_IB_VMID(x): # macro return ((x)<<0) PACKET3_SET_Q_PREEMPTION_MODE_INIT_SHADOW_MEM = (1<<0) # macro -F32_MES_PM4_PACKETS_H = True # macro -uint32_t = True # macro -int32_t = True # macro -PM4_MES_HEADER_DEFINED = True # macro -PM4_MEC_RELEASE_MEM_DEFINED = True # macro -PM4_MEC_WRITE_DATA_DEFINED = True # macro -class union_PM4_MES_TYPE_3_HEADER(Union): - pass - -class struct_PM4_MES_TYPE_3_HEADER_0(Structure): - pass - -struct_PM4_MES_TYPE_3_HEADER_0._pack_ = 1 # source:False -struct_PM4_MES_TYPE_3_HEADER_0._fields_ = [ - ('reserved1', ctypes.c_uint32, 8), - ('opcode', ctypes.c_uint32, 8), - ('count', ctypes.c_uint32, 14), - ('type', ctypes.c_uint32, 2), -] - -union_PM4_MES_TYPE_3_HEADER._pack_ = 1 # source:False -union_PM4_MES_TYPE_3_HEADER._anonymous_ = ('_0',) -union_PM4_MES_TYPE_3_HEADER._fields_ = [ - ('_0', struct_PM4_MES_TYPE_3_HEADER_0), - ('u32All', ctypes.c_uint32), -] - - -# values for enumeration 'c_uint32' -c_uint32__enumvalues = { - 5: 'event_index__mec_release_mem__end_of_pipe', - 6: 'event_index__mec_release_mem__shader_done', -} -event_index__mec_release_mem__end_of_pipe = 5 -event_index__mec_release_mem__shader_done = 6 -c_uint32 = ctypes.c_uint32 # enum - -# values for enumeration 'c_uint32' -c_uint32__enumvalues = { - 0: 'cache_policy__mec_release_mem__lru', - 1: 'cache_policy__mec_release_mem__stream', -} -cache_policy__mec_release_mem__lru = 0 -cache_policy__mec_release_mem__stream = 1 -c_uint32 = ctypes.c_uint32 # enum - -# values for enumeration 'c_uint32' -c_uint32__enumvalues = { - 0: 'pq_exe_status__mec_release_mem__default', - 1: 'pq_exe_status__mec_release_mem__phase_update', -} -pq_exe_status__mec_release_mem__default = 0 -pq_exe_status__mec_release_mem__phase_update = 1 -c_uint32 = ctypes.c_uint32 # enum - -# values for enumeration 'c_uint32' -c_uint32__enumvalues = { - 0: 'dst_sel__mec_release_mem__memory_controller', - 1: 'dst_sel__mec_release_mem__tc_l2', - 2: 'dst_sel__mec_release_mem__queue_write_pointer_register', - 3: 'dst_sel__mec_release_mem__queue_write_pointer_poll_mask_bit', -} -dst_sel__mec_release_mem__memory_controller = 0 -dst_sel__mec_release_mem__tc_l2 = 1 -dst_sel__mec_release_mem__queue_write_pointer_register = 2 -dst_sel__mec_release_mem__queue_write_pointer_poll_mask_bit = 3 -c_uint32 = ctypes.c_uint32 # enum - -# values for enumeration 'c_uint32' -c_uint32__enumvalues = { - 0: 'int_sel__mec_release_mem__none', - 1: 'int_sel__mec_release_mem__send_interrupt_only', - 2: 'int_sel__mec_release_mem__send_interrupt_after_write_confirm', - 3: 'int_sel__mec_release_mem__send_data_after_write_confirm', - 4: 'int_sel__mec_release_mem__unconditionally_send_int_ctxid', - 5: 'int_sel__mec_release_mem__conditionally_send_int_ctxid_based_on_32_bit_compare', - 6: 'int_sel__mec_release_mem__conditionally_send_int_ctxid_based_on_64_bit_compare', -} -int_sel__mec_release_mem__none = 0 -int_sel__mec_release_mem__send_interrupt_only = 1 -int_sel__mec_release_mem__send_interrupt_after_write_confirm = 2 -int_sel__mec_release_mem__send_data_after_write_confirm = 3 -int_sel__mec_release_mem__unconditionally_send_int_ctxid = 4 -int_sel__mec_release_mem__conditionally_send_int_ctxid_based_on_32_bit_compare = 5 -int_sel__mec_release_mem__conditionally_send_int_ctxid_based_on_64_bit_compare = 6 -c_uint32 = ctypes.c_uint32 # enum - -# values for enumeration 'c_uint32' -c_uint32__enumvalues = { - 0: 'data_sel__mec_release_mem__none', - 1: 'data_sel__mec_release_mem__send_32_bit_low', - 2: 'data_sel__mec_release_mem__send_64_bit_data', - 3: 'data_sel__mec_release_mem__send_gpu_clock_counter', - 4: 'data_sel__mec_release_mem__send_cp_perfcounter_hi_lo', - 5: 'data_sel__mec_release_mem__store_gds_data_to_memory', -} -data_sel__mec_release_mem__none = 0 -data_sel__mec_release_mem__send_32_bit_low = 1 -data_sel__mec_release_mem__send_64_bit_data = 2 -data_sel__mec_release_mem__send_gpu_clock_counter = 3 -data_sel__mec_release_mem__send_cp_perfcounter_hi_lo = 4 -data_sel__mec_release_mem__store_gds_data_to_memory = 5 -c_uint32 = ctypes.c_uint32 # enum -class struct_pm4_mec_release_mem(Structure): - pass - -class union_pm4_mec_release_mem_0(Union): - pass - -union_pm4_mec_release_mem_0._pack_ = 1 # source:False -union_pm4_mec_release_mem_0._fields_ = [ - ('header', union_PM4_MES_TYPE_3_HEADER), - ('ordinal1', ctypes.c_uint32), -] - -class union_pm4_mec_release_mem_1(Union): - pass - -class struct_pm4_mec_release_mem_1_bitfields2(Structure): - pass - -struct_pm4_mec_release_mem_1_bitfields2._pack_ = 1 # source:False -struct_pm4_mec_release_mem_1_bitfields2._fields_ = [ - ('event_type', ctypes.c_uint32, 6), - ('reserved1', ctypes.c_uint32, 2), - ('event_index', c_uint32, 4), - ('tcl1_vol_action_ena', ctypes.c_uint32, 1), - ('tc_vol_action_ena', ctypes.c_uint32, 1), - ('reserved2', ctypes.c_uint32, 1), - ('tc_wb_action_ena', ctypes.c_uint32, 1), - ('tcl1_action_ena', ctypes.c_uint32, 1), - ('tc_action_ena', ctypes.c_uint32, 1), - ('reserved3', ctypes.c_uint32, 1), - ('tc_nc_action_ena', ctypes.c_uint32, 1), - ('tc_wc_action_ena', ctypes.c_uint32, 1), - ('tc_md_action_ena', ctypes.c_uint32, 1), - ('reserved4', ctypes.c_uint32, 3), - ('cache_policy', c_uint32, 2), - ('reserved5', ctypes.c_uint32, 2), - ('pq_exe_status', c_uint32, 1), - ('reserved6', ctypes.c_uint32, 2), -] - -union_pm4_mec_release_mem_1._pack_ = 1 # source:False -union_pm4_mec_release_mem_1._fields_ = [ - ('bitfields2', struct_pm4_mec_release_mem_1_bitfields2), - ('ordinal2', ctypes.c_uint32), -] - -class union_pm4_mec_release_mem_2(Union): - pass - -class struct_pm4_mec_release_mem_2_bitfields3(Structure): - pass - -struct_pm4_mec_release_mem_2_bitfields3._pack_ = 1 # source:False -struct_pm4_mec_release_mem_2_bitfields3._fields_ = [ - ('reserved7', ctypes.c_uint32, 16), - ('dst_sel', c_uint32, 2), - ('reserved8', ctypes.c_uint32, 6), - ('int_sel', c_uint32, 3), - ('reserved9', ctypes.c_uint32, 2), - ('data_sel', c_uint32, 3), -] - -union_pm4_mec_release_mem_2._pack_ = 1 # source:False -union_pm4_mec_release_mem_2._fields_ = [ - ('bitfields3', struct_pm4_mec_release_mem_2_bitfields3), - ('ordinal3', ctypes.c_uint32), -] - -class union_pm4_mec_release_mem_3(Union): - pass - -class struct_pm4_mec_release_mem_3_bitfields4(Structure): - pass - -struct_pm4_mec_release_mem_3_bitfields4._pack_ = 1 # source:False -struct_pm4_mec_release_mem_3_bitfields4._fields_ = [ - ('reserved10', ctypes.c_uint32, 2), - ('address_lo_32b', ctypes.c_uint32, 30), -] - -class struct_pm4_mec_release_mem_3_bitfields4b(Structure): - pass - -struct_pm4_mec_release_mem_3_bitfields4b._pack_ = 1 # source:False -struct_pm4_mec_release_mem_3_bitfields4b._fields_ = [ - ('reserved11', ctypes.c_uint32, 3), - ('address_lo_64b', ctypes.c_uint32, 29), -] - -union_pm4_mec_release_mem_3._pack_ = 1 # source:False -union_pm4_mec_release_mem_3._fields_ = [ - ('bitfields4', struct_pm4_mec_release_mem_3_bitfields4), - ('bitfields4b', struct_pm4_mec_release_mem_3_bitfields4b), - ('reserved12', ctypes.c_uint32), - ('ordinal4', ctypes.c_uint32), -] - -class union_pm4_mec_release_mem_4(Union): - pass - -union_pm4_mec_release_mem_4._pack_ = 1 # source:False -union_pm4_mec_release_mem_4._fields_ = [ - ('address_hi', ctypes.c_uint32), - ('reserved13', ctypes.c_uint32), - ('ordinal5', ctypes.c_uint32), -] - -class union_pm4_mec_release_mem_5(Union): - pass - -class struct_pm4_mec_release_mem_5_bitfields6c(Structure): - pass - -struct_pm4_mec_release_mem_5_bitfields6c._pack_ = 1 # source:False -struct_pm4_mec_release_mem_5_bitfields6c._fields_ = [ - ('dw_offset', ctypes.c_uint32, 16), - ('num_dwords', ctypes.c_uint32, 16), -] - -union_pm4_mec_release_mem_5._pack_ = 1 # source:False -union_pm4_mec_release_mem_5._fields_ = [ - ('data_lo', ctypes.c_uint32), - ('cmp_data_lo', ctypes.c_uint32), - ('bitfields6c', struct_pm4_mec_release_mem_5_bitfields6c), - ('reserved14', ctypes.c_uint32), - ('ordinal6', ctypes.c_uint32), -] - -class union_pm4_mec_release_mem_6(Union): - pass - -union_pm4_mec_release_mem_6._pack_ = 1 # source:False -union_pm4_mec_release_mem_6._fields_ = [ - ('data_hi', ctypes.c_uint32), - ('cmp_data_hi', ctypes.c_uint32), - ('reserved15', ctypes.c_uint32), - ('reserved16', ctypes.c_uint32), - ('ordinal7', ctypes.c_uint32), -] - -struct_pm4_mec_release_mem._pack_ = 1 # source:False -struct_pm4_mec_release_mem._anonymous_ = ('_0', '_1', '_2', '_3', '_4', '_5', '_6',) -struct_pm4_mec_release_mem._fields_ = [ - ('_0', union_pm4_mec_release_mem_0), - ('_1', union_pm4_mec_release_mem_1), - ('_2', union_pm4_mec_release_mem_2), - ('_3', union_pm4_mec_release_mem_3), - ('_4', union_pm4_mec_release_mem_4), - ('_5', union_pm4_mec_release_mem_5), - ('_6', union_pm4_mec_release_mem_6), - ('int_ctxid', ctypes.c_uint32), -] - - -# values for enumeration 'WRITE_DATA_dst_sel_enum' -WRITE_DATA_dst_sel_enum__enumvalues = { - 0: 'dst_sel___write_data__mem_mapped_register', - 2: 'dst_sel___write_data__tc_l2', - 3: 'dst_sel___write_data__gds', - 5: 'dst_sel___write_data__memory', - 6: 'dst_sel___write_data__memory_mapped_adc_persistent_state', -} -dst_sel___write_data__mem_mapped_register = 0 -dst_sel___write_data__tc_l2 = 2 -dst_sel___write_data__gds = 3 -dst_sel___write_data__memory = 5 -dst_sel___write_data__memory_mapped_adc_persistent_state = 6 -WRITE_DATA_dst_sel_enum = ctypes.c_uint32 # enum - -# values for enumeration 'WRITE_DATA_addr_incr_enum' -WRITE_DATA_addr_incr_enum__enumvalues = { - 0: 'addr_incr___write_data__increment_address', - 1: 'addr_incr___write_data__do_not_increment_address', -} -addr_incr___write_data__increment_address = 0 -addr_incr___write_data__do_not_increment_address = 1 -WRITE_DATA_addr_incr_enum = ctypes.c_uint32 # enum - -# values for enumeration 'WRITE_DATA_wr_confirm_enum' -WRITE_DATA_wr_confirm_enum__enumvalues = { - 0: 'wr_confirm___write_data__do_not_wait_for_write_confirmation', - 1: 'wr_confirm___write_data__wait_for_write_confirmation', -} -wr_confirm___write_data__do_not_wait_for_write_confirmation = 0 -wr_confirm___write_data__wait_for_write_confirmation = 1 -WRITE_DATA_wr_confirm_enum = ctypes.c_uint32 # enum - -# values for enumeration 'WRITE_DATA_cache_policy_enum' -WRITE_DATA_cache_policy_enum__enumvalues = { - 0: 'cache_policy___write_data__lru', - 1: 'cache_policy___write_data__stream', -} -cache_policy___write_data__lru = 0 -cache_policy___write_data__stream = 1 -WRITE_DATA_cache_policy_enum = ctypes.c_uint32 # enum -class struct_pm4_mec_write_data_mmio(Structure): - pass - -class union_pm4_mec_write_data_mmio_0(Union): - pass - -union_pm4_mec_write_data_mmio_0._pack_ = 1 # source:False -union_pm4_mec_write_data_mmio_0._fields_ = [ - ('header', union_PM4_MES_TYPE_3_HEADER), - ('ordinal1', ctypes.c_uint32), -] - -class union_pm4_mec_write_data_mmio_1(Union): - pass - -class struct_pm4_mec_write_data_mmio_1_bitfields2(Structure): - pass - -struct_pm4_mec_write_data_mmio_1_bitfields2._pack_ = 1 # source:False -struct_pm4_mec_write_data_mmio_1_bitfields2._fields_ = [ - ('reserved1', ctypes.c_uint32, 8), - ('dst_sel', ctypes.c_uint32, 4), - ('reserved2', ctypes.c_uint32, 4), - ('addr_incr', ctypes.c_uint32, 1), - ('reserved3', ctypes.c_uint32, 2), - ('resume_vf', ctypes.c_uint32, 1), - ('wr_confirm', ctypes.c_uint32, 1), - ('reserved4', ctypes.c_uint32, 4), - ('cache_policy', ctypes.c_uint32, 2), - ('reserved5', ctypes.c_uint32, 5), -] - -union_pm4_mec_write_data_mmio_1._pack_ = 1 # source:False -union_pm4_mec_write_data_mmio_1._fields_ = [ - ('bitfields2', struct_pm4_mec_write_data_mmio_1_bitfields2), - ('ordinal2', ctypes.c_uint32), -] - -class union_pm4_mec_write_data_mmio_2(Union): - pass - -class struct_pm4_mec_write_data_mmio_2_bitfields3(Structure): - pass - -struct_pm4_mec_write_data_mmio_2_bitfields3._pack_ = 1 # source:False -struct_pm4_mec_write_data_mmio_2_bitfields3._fields_ = [ - ('dst_mmreg_addr', ctypes.c_uint32, 18), - ('reserved6', ctypes.c_uint32, 14), -] - -union_pm4_mec_write_data_mmio_2._pack_ = 1 # source:False -union_pm4_mec_write_data_mmio_2._fields_ = [ - ('bitfields3', struct_pm4_mec_write_data_mmio_2_bitfields3), - ('ordinal3', ctypes.c_uint32), -] - -struct_pm4_mec_write_data_mmio._pack_ = 1 # source:False -struct_pm4_mec_write_data_mmio._anonymous_ = ('_0', '_1', '_2',) -struct_pm4_mec_write_data_mmio._fields_ = [ - ('_0', union_pm4_mec_write_data_mmio_0), - ('_1', union_pm4_mec_write_data_mmio_1), - ('_2', union_pm4_mec_write_data_mmio_2), - ('reserved7', ctypes.c_uint32), - ('data', ctypes.c_uint32), -] - - -# values for enumeration 'c__Ea_CACHE_FLUSH_AND_INV_TS_EVENT' -c__Ea_CACHE_FLUSH_AND_INV_TS_EVENT__enumvalues = { - 20: 'CACHE_FLUSH_AND_INV_TS_EVENT', -} -CACHE_FLUSH_AND_INV_TS_EVENT = 20 -c__Ea_CACHE_FLUSH_AND_INV_TS_EVENT = ctypes.c_uint32 # enum -_soc21_ENUM_HEADER = True # macro -SQ_WAVE_TYPE_PS0 = 0x00000000 # macro -SQIND_GLOBAL_REGS_OFFSET = 0x00000000 # macro -SQIND_GLOBAL_REGS_SIZE = 0x00000008 # macro -SQIND_LOCAL_REGS_OFFSET = 0x00000008 # macro -SQIND_LOCAL_REGS_SIZE = 0x00000008 # macro -SQIND_WAVE_HWREGS_OFFSET = 0x00000100 # macro -SQIND_WAVE_HWREGS_SIZE = 0x00000100 # macro -SQIND_WAVE_SGPRS_OFFSET = 0x00000200 # macro -SQIND_WAVE_SGPRS_SIZE = 0x00000200 # macro -SQIND_WAVE_VGPRS_OFFSET = 0x00000400 # macro -SQIND_WAVE_VGPRS_SIZE = 0x00000400 # macro -SQ_GFXDEC_BEGIN = 0x0000a000 # macro -SQ_GFXDEC_END = 0x0000c000 # macro -SQ_GFXDEC_STATE_ID_SHIFT = 0x0000000a # macro -SQDEC_BEGIN = 0x00002300 # macro -SQDEC_END = 0x000023ff # macro -SQPERFSDEC_BEGIN = 0x0000d9c0 # macro -SQPERFSDEC_END = 0x0000da40 # macro -SQPERFDDEC_BEGIN = 0x0000d1c0 # macro -SQPERFDDEC_END = 0x0000d240 # macro -SQGFXUDEC_BEGIN = 0x0000c330 # macro -SQGFXUDEC_END = 0x0000c380 # macro -SQPWRDEC_BEGIN = 0x0000f08c # macro -SQPWRDEC_END = 0x0000f094 # macro -SQ_DISPATCHER_GFX_MIN = 0x00000010 # macro -SQ_DISPATCHER_GFX_CNT_PER_RING = 0x00000008 # macro -SQ_MAX_PGM_SGPRS = 0x00000068 # macro -SQ_MAX_PGM_VGPRS = 0x00000100 # macro -SQ_EX_MODE_EXCP_VALU_BASE = 0x00000000 # macro -SQ_EX_MODE_EXCP_VALU_SIZE = 0x00000007 # macro -SQ_EX_MODE_EXCP_INVALID = 0x00000000 # macro -SQ_EX_MODE_EXCP_INPUT_DENORM = 0x00000001 # macro -SQ_EX_MODE_EXCP_DIV0 = 0x00000002 # macro -SQ_EX_MODE_EXCP_OVERFLOW = 0x00000003 # macro -SQ_EX_MODE_EXCP_UNDERFLOW = 0x00000004 # macro -SQ_EX_MODE_EXCP_INEXACT = 0x00000005 # macro -SQ_EX_MODE_EXCP_INT_DIV0 = 0x00000006 # macro -SQ_EX_MODE_EXCP_ADDR_WATCH0 = 0x00000007 # macro -SQ_EX_MODE_EXCP_MEM_VIOL = 0x00000008 # macro -SQ_EX_MODE_EXCP_HI_ADDR_WATCH1 = 0x00000000 # macro -SQ_EX_MODE_EXCP_HI_ADDR_WATCH2 = 0x00000001 # macro -SQ_EX_MODE_EXCP_HI_ADDR_WATCH3 = 0x00000002 # macro -INST_ID_PRIV_START = 0x80000000 # macro -INST_ID_ECC_INTERRUPT_MSG = 0xfffffff0 # macro -INST_ID_TTRACE_NEW_PC_MSG = 0xfffffff1 # macro -INST_ID_HW_TRAP = 0xfffffff2 # macro -INST_ID_KILL_SEQ = 0xfffffff3 # macro -INST_ID_SPI_WREXEC = 0xfffffff4 # macro -INST_ID_HW_TRAP_GET_TBA = 0xfffffff5 # macro -INST_ID_HOST_REG_TRAP_MSG = 0xfffffffe # macro -SIMM16_WAITCNT_EXP_CNT_START = 0x00000000 # macro -SIMM16_WAITCNT_EXP_CNT_SIZE = 0x00000003 # macro -SIMM16_WAITCNT_LGKM_CNT_START = 0x00000004 # macro -SIMM16_WAITCNT_LGKM_CNT_SIZE = 0x00000006 # macro -SIMM16_WAITCNT_VM_CNT_START = 0x0000000a # macro -SIMM16_WAITCNT_VM_CNT_SIZE = 0x00000006 # macro -SIMM16_WAITCNT_DEPCTR_SA_SDST_START = 0x00000000 # macro -SIMM16_WAITCNT_DEPCTR_SA_SDST_SIZE = 0x00000001 # macro -SIMM16_WAITCNT_DEPCTR_VA_VCC_START = 0x00000001 # macro -SIMM16_WAITCNT_DEPCTR_VA_VCC_SIZE = 0x00000001 # macro -SIMM16_WAITCNT_DEPCTR_VM_VSRC_START = 0x00000002 # macro -SIMM16_WAITCNT_DEPCTR_VM_VSRC_SIZE = 0x00000003 # macro -SIMM16_WAITCNT_DEPCTR_HOLD_CNT_START = 0x00000006 # macro -SIMM16_WAITCNT_DEPCTR_HOLD_CNT_SIZE = 0x00000001 # macro -SIMM16_WAITCNT_DEPCTR_VA_SSRC_START = 0x00000007 # macro -SIMM16_WAITCNT_DEPCTR_VA_SSRC_SIZE = 0x00000001 # macro -SIMM16_WAITCNT_DEPCTR_VA_SDST_START = 0x00000008 # macro -SIMM16_WAITCNT_DEPCTR_VA_SDST_SIZE = 0x00000003 # macro -SIMM16_WAITCNT_DEPCTR_VA_VDST_START = 0x0000000b # macro -SIMM16_WAITCNT_DEPCTR_VA_VDST_SIZE = 0x00000005 # macro -SIMM16_WAIT_EVENT_EXP_RDY_START = 0x00000000 # macro -SIMM16_WAIT_EVENT_EXP_RDY_SIZE = 0x00000001 # macro -SQ_WAVE_IB_DEP_SA_SDST_SIZE = 0x00000004 # macro -SQ_WAVE_IB_DEP_SA_EXEC_SIZE = 0x00000002 # macro -SQ_WAVE_IB_DEP_SA_M0_SIZE = 0x00000001 # macro -SQ_WAVE_IB_DEP_VM_VSRC_SIZE = 0x00000004 # macro -SQ_WAVE_IB_DEP_HOLD_CNT_SIZE = 0x00000001 # macro -SQ_WAVE_IB_DEP_VA_SSRC_SIZE = 0x00000003 # macro -SQ_WAVE_IB_DEP_VA_SDST_SIZE = 0x00000004 # macro -SQ_WAVE_IB_DEP_VA_VCC_SIZE = 0x00000003 # macro -SQ_WAVE_IB_DEP_VA_EXEC_SIZE = 0x00000002 # macro -SQ_WAVE_IB_DEP_VA_VDST_SIZE = 0x00000005 # macro -SQ_WAVE_IB_DEP_LDS_DIR_SIZE = 0x00000003 # macro -SQ_EDC_FUE_CNTL_SIMD0 = 0x00000000 # macro -SQ_EDC_FUE_CNTL_SIMD1 = 0x00000001 # macro -SQ_EDC_FUE_CNTL_SIMD2 = 0x00000002 # macro -SQ_EDC_FUE_CNTL_SIMD3 = 0x00000003 # macro -SQ_EDC_FUE_CNTL_SQ = 0x00000004 # macro -SQ_EDC_FUE_CNTL_LDS = 0x00000005 # macro -SQ_EDC_FUE_CNTL_TD = 0x00000006 # macro -SQ_EDC_FUE_CNTL_TA = 0x00000007 # macro -SQ_EDC_FUE_CNTL_TCP = 0x00000008 # macro -CSDATA_TYPE_WIDTH = 0x00000002 # macro -CSDATA_ADDR_WIDTH = 0x00000007 # macro -CSDATA_DATA_WIDTH = 0x00000020 # macro -CSCNTL_TYPE_WIDTH = 0x00000002 # macro -CSCNTL_ADDR_WIDTH = 0x00000007 # macro -CSCNTL_DATA_WIDTH = 0x00000020 # macro -GSTHREADID_SIZE = 0x00000002 # macro -GB_TILING_CONFIG_TABLE_SIZE = 0x00000020 # macro -GB_TILING_CONFIG_MACROTABLE_SIZE = 0x00000010 # macro -SEM_ECC_ERROR = 0x00000000 # macro -SEM_TRANS_ERROR = 0x00000001 # macro -SEM_RESP_FAILED = 0x00000002 # macro -SEM_RESP_PASSED = 0x00000003 # macro -IQ_QUEUE_SLEEP = 0x00000000 # macro -IQ_OFFLOAD_RETRY = 0x00000001 # macro -IQ_SCH_WAVE_MSG = 0x00000002 # macro -IQ_SEM_REARM = 0x00000003 # macro -IQ_DEQUEUE_RETRY = 0x00000004 # macro -IQ_INTR_TYPE_PQ = 0x00000000 # macro -IQ_INTR_TYPE_IB = 0x00000001 # macro -IQ_INTR_TYPE_MQD = 0x00000002 # macro -VMID_SZ = 0x00000004 # macro -SRCID_RLC = 0x00000000 # macro -SRCID_RLCV = 0x00000006 # macro -SRCID_SECURE_CP = 0x00000007 # macro -SRCID_NONSECURE_CP = 0x00000001 # macro -SRCID_SECURE_CP_RCIU = 0x00000007 # macro -SRCID_NONSECURE_CP_RCIU = 0x00000001 # macro -CONFIG_SPACE_START = 0x00002000 # macro -CONFIG_SPACE_END = 0x00009fff # macro -CONFIG_SPACE1_START = 0x00002000 # macro -CONFIG_SPACE1_END = 0x00002bff # macro -CONFIG_SPACE2_START = 0x00003000 # macro -CONFIG_SPACE2_END = 0x00009fff # macro -UCONFIG_SPACE_START = 0x0000c000 # macro -UCONFIG_SPACE_END = 0x0000ffff # macro -PERSISTENT_SPACE_START = 0x00002c00 # macro -PERSISTENT_SPACE_END = 0x00002fff # macro -CONTEXT_SPACE_START = 0x0000a000 # macro -CONTEXT_SPACE_END = 0x0000a3ff # macro -ROM_SIGNATURE = 0x0000aa55 # macro - -# values for enumeration 'DSM_DATA_SEL' -DSM_DATA_SEL__enumvalues = { - 0: 'DSM_DATA_SEL_DISABLE', - 1: 'DSM_DATA_SEL_0', - 2: 'DSM_DATA_SEL_1', - 3: 'DSM_DATA_SEL_BOTH', -} -DSM_DATA_SEL_DISABLE = 0 -DSM_DATA_SEL_0 = 1 -DSM_DATA_SEL_1 = 2 -DSM_DATA_SEL_BOTH = 3 -DSM_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DSM_ENABLE_ERROR_INJECT' -DSM_ENABLE_ERROR_INJECT__enumvalues = { - 0: 'DSM_ENABLE_ERROR_INJECT_FED_IN', - 1: 'DSM_ENABLE_ERROR_INJECT_SINGLE', - 2: 'DSM_ENABLE_ERROR_INJECT_UNCORRECTABLE', - 3: 'DSM_ENABLE_ERROR_INJECT_UNCORRECTABLE_LIMITED', -} -DSM_ENABLE_ERROR_INJECT_FED_IN = 0 -DSM_ENABLE_ERROR_INJECT_SINGLE = 1 -DSM_ENABLE_ERROR_INJECT_UNCORRECTABLE = 2 -DSM_ENABLE_ERROR_INJECT_UNCORRECTABLE_LIMITED = 3 -DSM_ENABLE_ERROR_INJECT = ctypes.c_uint32 # enum - -# values for enumeration 'DSM_SELECT_INJECT_DELAY' -DSM_SELECT_INJECT_DELAY__enumvalues = { - 0: 'DSM_SELECT_INJECT_DELAY_NO_DELAY', - 1: 'DSM_SELECT_INJECT_DELAY_DELAY_ERROR', -} -DSM_SELECT_INJECT_DELAY_NO_DELAY = 0 -DSM_SELECT_INJECT_DELAY_DELAY_ERROR = 1 -DSM_SELECT_INJECT_DELAY = ctypes.c_uint32 # enum - -# values for enumeration 'DSM_SINGLE_WRITE' -DSM_SINGLE_WRITE__enumvalues = { - 0: 'DSM_SINGLE_WRITE_DIS', - 1: 'DSM_SINGLE_WRITE_EN', -} -DSM_SINGLE_WRITE_DIS = 0 -DSM_SINGLE_WRITE_EN = 1 -DSM_SINGLE_WRITE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_NUM_SIMD_PER_CU' -ENUM_NUM_SIMD_PER_CU__enumvalues = { - 2: 'NUM_SIMD_PER_CU', -} -NUM_SIMD_PER_CU = 2 -ENUM_NUM_SIMD_PER_CU = ctypes.c_uint32 # enum - -# values for enumeration 'GATCL1RequestType' -GATCL1RequestType__enumvalues = { - 0: 'GATCL1_TYPE_NORMAL', - 1: 'GATCL1_TYPE_SHOOTDOWN', - 2: 'GATCL1_TYPE_BYPASS', -} -GATCL1_TYPE_NORMAL = 0 -GATCL1_TYPE_SHOOTDOWN = 1 -GATCL1_TYPE_BYPASS = 2 -GATCL1RequestType = ctypes.c_uint32 # enum - -# values for enumeration 'GL0V_CACHE_POLICIES' -GL0V_CACHE_POLICIES__enumvalues = { - 0: 'GL0V_CACHE_POLICY_MISS_LRU', - 1: 'GL0V_CACHE_POLICY_MISS_EVICT', - 2: 'GL0V_CACHE_POLICY_HIT_LRU', - 3: 'GL0V_CACHE_POLICY_HIT_EVICT', -} -GL0V_CACHE_POLICY_MISS_LRU = 0 -GL0V_CACHE_POLICY_MISS_EVICT = 1 -GL0V_CACHE_POLICY_HIT_LRU = 2 -GL0V_CACHE_POLICY_HIT_EVICT = 3 -GL0V_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'GL1_CACHE_POLICIES' -GL1_CACHE_POLICIES__enumvalues = { - 0: 'GL1_CACHE_POLICY_MISS_LRU', - 1: 'GL1_CACHE_POLICY_MISS_EVICT', - 2: 'GL1_CACHE_POLICY_HIT_LRU', - 3: 'GL1_CACHE_POLICY_HIT_EVICT', -} -GL1_CACHE_POLICY_MISS_LRU = 0 -GL1_CACHE_POLICY_MISS_EVICT = 1 -GL1_CACHE_POLICY_HIT_LRU = 2 -GL1_CACHE_POLICY_HIT_EVICT = 3 -GL1_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'GL1_CACHE_STORE_POLICIES' -GL1_CACHE_STORE_POLICIES__enumvalues = { - 0: 'GL1_CACHE_STORE_POLICY_BYPASS', -} -GL1_CACHE_STORE_POLICY_BYPASS = 0 -GL1_CACHE_STORE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'GL2_CACHE_POLICIES' -GL2_CACHE_POLICIES__enumvalues = { - 0: 'GL2_CACHE_POLICY_LRU', - 1: 'GL2_CACHE_POLICY_STREAM', - 2: 'GL2_CACHE_POLICY_NOA', - 3: 'GL2_CACHE_POLICY_BYPASS', -} -GL2_CACHE_POLICY_LRU = 0 -GL2_CACHE_POLICY_STREAM = 1 -GL2_CACHE_POLICY_NOA = 2 -GL2_CACHE_POLICY_BYPASS = 3 -GL2_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'Hdp_SurfaceEndian' -Hdp_SurfaceEndian__enumvalues = { - 0: 'HDP_ENDIAN_NONE', - 1: 'HDP_ENDIAN_8IN16', - 2: 'HDP_ENDIAN_8IN32', - 3: 'HDP_ENDIAN_8IN64', -} -HDP_ENDIAN_NONE = 0 -HDP_ENDIAN_8IN16 = 1 -HDP_ENDIAN_8IN32 = 2 -HDP_ENDIAN_8IN64 = 3 -Hdp_SurfaceEndian = ctypes.c_uint32 # enum - -# values for enumeration 'MTYPE' -MTYPE__enumvalues = { - 0: 'MTYPE_C_RW_US', - 1: 'MTYPE_RESERVED_1', - 2: 'MTYPE_C_RO_S', - 3: 'MTYPE_UC', - 4: 'MTYPE_C_RW_S', - 5: 'MTYPE_RESERVED_5', - 6: 'MTYPE_C_RO_US', - 7: 'MTYPE_RESERVED_7', -} -MTYPE_C_RW_US = 0 -MTYPE_RESERVED_1 = 1 -MTYPE_C_RO_S = 2 -MTYPE_UC = 3 -MTYPE_C_RW_S = 4 -MTYPE_RESERVED_5 = 5 -MTYPE_C_RO_US = 6 -MTYPE_RESERVED_7 = 7 -MTYPE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_COUNTER_MODE' -PERFMON_COUNTER_MODE__enumvalues = { - 0: 'PERFMON_COUNTER_MODE_ACCUM', - 1: 'PERFMON_COUNTER_MODE_ACTIVE_CYCLES', - 2: 'PERFMON_COUNTER_MODE_MAX', - 3: 'PERFMON_COUNTER_MODE_DIRTY', - 4: 'PERFMON_COUNTER_MODE_SAMPLE', - 5: 'PERFMON_COUNTER_MODE_CYCLES_SINCE_FIRST_EVENT', - 6: 'PERFMON_COUNTER_MODE_CYCLES_SINCE_LAST_EVENT', - 7: 'PERFMON_COUNTER_MODE_CYCLES_GE_HI', - 8: 'PERFMON_COUNTER_MODE_CYCLES_EQ_HI', - 9: 'PERFMON_COUNTER_MODE_INACTIVE_CYCLES', - 15: 'PERFMON_COUNTER_MODE_RESERVED', -} -PERFMON_COUNTER_MODE_ACCUM = 0 -PERFMON_COUNTER_MODE_ACTIVE_CYCLES = 1 -PERFMON_COUNTER_MODE_MAX = 2 -PERFMON_COUNTER_MODE_DIRTY = 3 -PERFMON_COUNTER_MODE_SAMPLE = 4 -PERFMON_COUNTER_MODE_CYCLES_SINCE_FIRST_EVENT = 5 -PERFMON_COUNTER_MODE_CYCLES_SINCE_LAST_EVENT = 6 -PERFMON_COUNTER_MODE_CYCLES_GE_HI = 7 -PERFMON_COUNTER_MODE_CYCLES_EQ_HI = 8 -PERFMON_COUNTER_MODE_INACTIVE_CYCLES = 9 -PERFMON_COUNTER_MODE_RESERVED = 15 -PERFMON_COUNTER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_SPM_MODE' -PERFMON_SPM_MODE__enumvalues = { - 0: 'PERFMON_SPM_MODE_OFF', - 1: 'PERFMON_SPM_MODE_16BIT_CLAMP', - 2: 'PERFMON_SPM_MODE_16BIT_NO_CLAMP', - 3: 'PERFMON_SPM_MODE_32BIT_CLAMP', - 4: 'PERFMON_SPM_MODE_32BIT_NO_CLAMP', - 5: 'PERFMON_SPM_MODE_RESERVED_5', - 6: 'PERFMON_SPM_MODE_RESERVED_6', - 7: 'PERFMON_SPM_MODE_RESERVED_7', - 8: 'PERFMON_SPM_MODE_TEST_MODE_0', - 9: 'PERFMON_SPM_MODE_TEST_MODE_1', - 10: 'PERFMON_SPM_MODE_TEST_MODE_2', -} -PERFMON_SPM_MODE_OFF = 0 -PERFMON_SPM_MODE_16BIT_CLAMP = 1 -PERFMON_SPM_MODE_16BIT_NO_CLAMP = 2 -PERFMON_SPM_MODE_32BIT_CLAMP = 3 -PERFMON_SPM_MODE_32BIT_NO_CLAMP = 4 -PERFMON_SPM_MODE_RESERVED_5 = 5 -PERFMON_SPM_MODE_RESERVED_6 = 6 -PERFMON_SPM_MODE_RESERVED_7 = 7 -PERFMON_SPM_MODE_TEST_MODE_0 = 8 -PERFMON_SPM_MODE_TEST_MODE_1 = 9 -PERFMON_SPM_MODE_TEST_MODE_2 = 10 -PERFMON_SPM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'RMI_CID' -RMI_CID__enumvalues = { - 0: 'RMI_CID_CC', - 1: 'RMI_CID_FC', - 2: 'RMI_CID_CM', - 3: 'RMI_CID_DC', - 4: 'RMI_CID_Z', - 5: 'RMI_CID_S', - 6: 'RMI_CID_TILE', - 7: 'RMI_CID_ZPCPSD', -} -RMI_CID_CC = 0 -RMI_CID_FC = 1 -RMI_CID_CM = 2 -RMI_CID_DC = 3 -RMI_CID_Z = 4 -RMI_CID_S = 5 -RMI_CID_TILE = 6 -RMI_CID_ZPCPSD = 7 -RMI_CID = ctypes.c_uint32 # enum - -# values for enumeration 'ReadPolicy' -ReadPolicy__enumvalues = { - 0: 'CACHE_LRU_RD', - 1: 'CACHE_STREAM_RD', - 2: 'CACHE_NOA', - 3: 'RESERVED_RDPOLICY', -} -CACHE_LRU_RD = 0 -CACHE_STREAM_RD = 1 -CACHE_NOA = 2 -RESERVED_RDPOLICY = 3 -ReadPolicy = ctypes.c_uint32 # enum - -# values for enumeration 'SDMA_PERFMON_SEL' -SDMA_PERFMON_SEL__enumvalues = { - 0: 'SDMA_PERFMON_SEL_CYCLE', - 1: 'SDMA_PERFMON_SEL_IDLE', - 2: 'SDMA_PERFMON_SEL_REG_IDLE', - 3: 'SDMA_PERFMON_SEL_RB_EMPTY', - 4: 'SDMA_PERFMON_SEL_RB_FULL', - 5: 'SDMA_PERFMON_SEL_RB_WPTR_WRAP', - 6: 'SDMA_PERFMON_SEL_RB_RPTR_WRAP', - 7: 'SDMA_PERFMON_SEL_RB_WPTR_POLL_READ', - 8: 'SDMA_PERFMON_SEL_RB_RPTR_WB', - 9: 'SDMA_PERFMON_SEL_RB_CMD_IDLE', - 10: 'SDMA_PERFMON_SEL_RB_CMD_FULL', - 11: 'SDMA_PERFMON_SEL_IB_CMD_IDLE', - 12: 'SDMA_PERFMON_SEL_IB_CMD_FULL', - 13: 'SDMA_PERFMON_SEL_EX_IDLE', - 14: 'SDMA_PERFMON_SEL_SRBM_REG_SEND', - 15: 'SDMA_PERFMON_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 16: 'SDMA_PERFMON_SEL_WR_BA_RTR', - 17: 'SDMA_PERFMON_SEL_MC_WR_IDLE', - 18: 'SDMA_PERFMON_SEL_MC_WR_COUNT', - 19: 'SDMA_PERFMON_SEL_RD_BA_RTR', - 20: 'SDMA_PERFMON_SEL_MC_RD_IDLE', - 21: 'SDMA_PERFMON_SEL_MC_RD_COUNT', - 22: 'SDMA_PERFMON_SEL_MC_RD_RET_STALL', - 23: 'SDMA_PERFMON_SEL_MC_RD_NO_POLL_IDLE', - 26: 'SDMA_PERFMON_SEL_SEM_IDLE', - 27: 'SDMA_PERFMON_SEL_SEM_REQ_STALL', - 28: 'SDMA_PERFMON_SEL_SEM_REQ_COUNT', - 29: 'SDMA_PERFMON_SEL_SEM_RESP_INCOMPLETE', - 30: 'SDMA_PERFMON_SEL_SEM_RESP_FAIL', - 31: 'SDMA_PERFMON_SEL_SEM_RESP_PASS', - 32: 'SDMA_PERFMON_SEL_INT_IDLE', - 33: 'SDMA_PERFMON_SEL_INT_REQ_STALL', - 34: 'SDMA_PERFMON_SEL_INT_REQ_COUNT', - 35: 'SDMA_PERFMON_SEL_INT_RESP_ACCEPTED', - 36: 'SDMA_PERFMON_SEL_INT_RESP_RETRY', - 37: 'SDMA_PERFMON_SEL_NUM_PACKET', - 39: 'SDMA_PERFMON_SEL_CE_WREQ_IDLE', - 40: 'SDMA_PERFMON_SEL_CE_WR_IDLE', - 41: 'SDMA_PERFMON_SEL_CE_SPLIT_IDLE', - 42: 'SDMA_PERFMON_SEL_CE_RREQ_IDLE', - 43: 'SDMA_PERFMON_SEL_CE_OUT_IDLE', - 44: 'SDMA_PERFMON_SEL_CE_IN_IDLE', - 45: 'SDMA_PERFMON_SEL_CE_DST_IDLE', - 48: 'SDMA_PERFMON_SEL_CE_AFIFO_FULL', - 51: 'SDMA_PERFMON_SEL_CE_INFO_FULL', - 52: 'SDMA_PERFMON_SEL_CE_INFO1_FULL', - 53: 'SDMA_PERFMON_SEL_CE_RD_STALL', - 54: 'SDMA_PERFMON_SEL_CE_WR_STALL', - 55: 'SDMA_PERFMON_SEL_GFX_SELECT', - 56: 'SDMA_PERFMON_SEL_RLC0_SELECT', - 57: 'SDMA_PERFMON_SEL_RLC1_SELECT', - 58: 'SDMA_PERFMON_SEL_PAGE_SELECT', - 59: 'SDMA_PERFMON_SEL_CTX_CHANGE', - 60: 'SDMA_PERFMON_SEL_CTX_CHANGE_EXPIRED', - 61: 'SDMA_PERFMON_SEL_CTX_CHANGE_EXCEPTION', - 62: 'SDMA_PERFMON_SEL_DOORBELL', - 63: 'SDMA_PERFMON_SEL_F32_L1_WR_VLD', - 64: 'SDMA_PERFMON_SEL_CE_L1_WR_VLD', - 65: 'SDMA_PERFMON_SEL_CPF_SDMA_INVREQ', - 66: 'SDMA_PERFMON_SEL_SDMA_CPF_INVACK', - 67: 'SDMA_PERFMON_SEL_UTCL2_SDMA_INVREQ', - 68: 'SDMA_PERFMON_SEL_SDMA_UTCL2_INVACK', - 69: 'SDMA_PERFMON_SEL_UTCL2_SDMA_INVREQ_ALL', - 70: 'SDMA_PERFMON_SEL_SDMA_UTCL2_INVACK_ALL', - 71: 'SDMA_PERFMON_SEL_UTCL2_RET_XNACK', - 72: 'SDMA_PERFMON_SEL_UTCL2_RET_ACK', - 73: 'SDMA_PERFMON_SEL_UTCL2_FREE', - 74: 'SDMA_PERFMON_SEL_SDMA_UTCL2_SEND', - 75: 'SDMA_PERFMON_SEL_DMA_L1_WR_SEND', - 76: 'SDMA_PERFMON_SEL_DMA_L1_RD_SEND', - 77: 'SDMA_PERFMON_SEL_DMA_MC_WR_SEND', - 78: 'SDMA_PERFMON_SEL_DMA_MC_RD_SEND', - 79: 'SDMA_PERFMON_SEL_GPUVM_INV_HIGH', - 80: 'SDMA_PERFMON_SEL_GPUVM_INV_LOW', - 81: 'SDMA_PERFMON_SEL_L1_WRL2_IDLE', - 82: 'SDMA_PERFMON_SEL_L1_RDL2_IDLE', - 83: 'SDMA_PERFMON_SEL_L1_WRMC_IDLE', - 84: 'SDMA_PERFMON_SEL_L1_RDMC_IDLE', - 85: 'SDMA_PERFMON_SEL_L1_WR_INV_IDLE', - 86: 'SDMA_PERFMON_SEL_L1_RD_INV_IDLE', - 87: 'SDMA_PERFMON_SEL_META_L2_REQ_SEND', - 88: 'SDMA_PERFMON_SEL_L2_META_RET_VLD', - 89: 'SDMA_PERFMON_SEL_SDMA_UTCL2_RD_SEND', - 90: 'SDMA_PERFMON_SEL_UTCL2_SDMA_RD_RTN', - 91: 'SDMA_PERFMON_SEL_SDMA_UTCL2_WR_SEND', - 92: 'SDMA_PERFMON_SEL_UTCL2_SDMA_WR_RTN', - 93: 'SDMA_PERFMON_SEL_META_REQ_SEND', - 94: 'SDMA_PERFMON_SEL_META_RTN_VLD', - 95: 'SDMA_PERFMON_SEL_TLBI_SEND', - 96: 'SDMA_PERFMON_SEL_TLBI_RTN', - 97: 'SDMA_PERFMON_SEL_GCR_SEND', - 98: 'SDMA_PERFMON_SEL_GCR_RTN', - 99: 'SDMA_PERFMON_SEL_UTCL1_TAG_DELAY_COUNTER', - 100: 'SDMA_PERFMON_SEL_MMHUB_TAG_DELAY_COUNTER', -} -SDMA_PERFMON_SEL_CYCLE = 0 -SDMA_PERFMON_SEL_IDLE = 1 -SDMA_PERFMON_SEL_REG_IDLE = 2 -SDMA_PERFMON_SEL_RB_EMPTY = 3 -SDMA_PERFMON_SEL_RB_FULL = 4 -SDMA_PERFMON_SEL_RB_WPTR_WRAP = 5 -SDMA_PERFMON_SEL_RB_RPTR_WRAP = 6 -SDMA_PERFMON_SEL_RB_WPTR_POLL_READ = 7 -SDMA_PERFMON_SEL_RB_RPTR_WB = 8 -SDMA_PERFMON_SEL_RB_CMD_IDLE = 9 -SDMA_PERFMON_SEL_RB_CMD_FULL = 10 -SDMA_PERFMON_SEL_IB_CMD_IDLE = 11 -SDMA_PERFMON_SEL_IB_CMD_FULL = 12 -SDMA_PERFMON_SEL_EX_IDLE = 13 -SDMA_PERFMON_SEL_SRBM_REG_SEND = 14 -SDMA_PERFMON_SEL_EX_IDLE_POLL_TIMER_EXPIRE = 15 -SDMA_PERFMON_SEL_WR_BA_RTR = 16 -SDMA_PERFMON_SEL_MC_WR_IDLE = 17 -SDMA_PERFMON_SEL_MC_WR_COUNT = 18 -SDMA_PERFMON_SEL_RD_BA_RTR = 19 -SDMA_PERFMON_SEL_MC_RD_IDLE = 20 -SDMA_PERFMON_SEL_MC_RD_COUNT = 21 -SDMA_PERFMON_SEL_MC_RD_RET_STALL = 22 -SDMA_PERFMON_SEL_MC_RD_NO_POLL_IDLE = 23 -SDMA_PERFMON_SEL_SEM_IDLE = 26 -SDMA_PERFMON_SEL_SEM_REQ_STALL = 27 -SDMA_PERFMON_SEL_SEM_REQ_COUNT = 28 -SDMA_PERFMON_SEL_SEM_RESP_INCOMPLETE = 29 -SDMA_PERFMON_SEL_SEM_RESP_FAIL = 30 -SDMA_PERFMON_SEL_SEM_RESP_PASS = 31 -SDMA_PERFMON_SEL_INT_IDLE = 32 -SDMA_PERFMON_SEL_INT_REQ_STALL = 33 -SDMA_PERFMON_SEL_INT_REQ_COUNT = 34 -SDMA_PERFMON_SEL_INT_RESP_ACCEPTED = 35 -SDMA_PERFMON_SEL_INT_RESP_RETRY = 36 -SDMA_PERFMON_SEL_NUM_PACKET = 37 -SDMA_PERFMON_SEL_CE_WREQ_IDLE = 39 -SDMA_PERFMON_SEL_CE_WR_IDLE = 40 -SDMA_PERFMON_SEL_CE_SPLIT_IDLE = 41 -SDMA_PERFMON_SEL_CE_RREQ_IDLE = 42 -SDMA_PERFMON_SEL_CE_OUT_IDLE = 43 -SDMA_PERFMON_SEL_CE_IN_IDLE = 44 -SDMA_PERFMON_SEL_CE_DST_IDLE = 45 -SDMA_PERFMON_SEL_CE_AFIFO_FULL = 48 -SDMA_PERFMON_SEL_CE_INFO_FULL = 51 -SDMA_PERFMON_SEL_CE_INFO1_FULL = 52 -SDMA_PERFMON_SEL_CE_RD_STALL = 53 -SDMA_PERFMON_SEL_CE_WR_STALL = 54 -SDMA_PERFMON_SEL_GFX_SELECT = 55 -SDMA_PERFMON_SEL_RLC0_SELECT = 56 -SDMA_PERFMON_SEL_RLC1_SELECT = 57 -SDMA_PERFMON_SEL_PAGE_SELECT = 58 -SDMA_PERFMON_SEL_CTX_CHANGE = 59 -SDMA_PERFMON_SEL_CTX_CHANGE_EXPIRED = 60 -SDMA_PERFMON_SEL_CTX_CHANGE_EXCEPTION = 61 -SDMA_PERFMON_SEL_DOORBELL = 62 -SDMA_PERFMON_SEL_F32_L1_WR_VLD = 63 -SDMA_PERFMON_SEL_CE_L1_WR_VLD = 64 -SDMA_PERFMON_SEL_CPF_SDMA_INVREQ = 65 -SDMA_PERFMON_SEL_SDMA_CPF_INVACK = 66 -SDMA_PERFMON_SEL_UTCL2_SDMA_INVREQ = 67 -SDMA_PERFMON_SEL_SDMA_UTCL2_INVACK = 68 -SDMA_PERFMON_SEL_UTCL2_SDMA_INVREQ_ALL = 69 -SDMA_PERFMON_SEL_SDMA_UTCL2_INVACK_ALL = 70 -SDMA_PERFMON_SEL_UTCL2_RET_XNACK = 71 -SDMA_PERFMON_SEL_UTCL2_RET_ACK = 72 -SDMA_PERFMON_SEL_UTCL2_FREE = 73 -SDMA_PERFMON_SEL_SDMA_UTCL2_SEND = 74 -SDMA_PERFMON_SEL_DMA_L1_WR_SEND = 75 -SDMA_PERFMON_SEL_DMA_L1_RD_SEND = 76 -SDMA_PERFMON_SEL_DMA_MC_WR_SEND = 77 -SDMA_PERFMON_SEL_DMA_MC_RD_SEND = 78 -SDMA_PERFMON_SEL_GPUVM_INV_HIGH = 79 -SDMA_PERFMON_SEL_GPUVM_INV_LOW = 80 -SDMA_PERFMON_SEL_L1_WRL2_IDLE = 81 -SDMA_PERFMON_SEL_L1_RDL2_IDLE = 82 -SDMA_PERFMON_SEL_L1_WRMC_IDLE = 83 -SDMA_PERFMON_SEL_L1_RDMC_IDLE = 84 -SDMA_PERFMON_SEL_L1_WR_INV_IDLE = 85 -SDMA_PERFMON_SEL_L1_RD_INV_IDLE = 86 -SDMA_PERFMON_SEL_META_L2_REQ_SEND = 87 -SDMA_PERFMON_SEL_L2_META_RET_VLD = 88 -SDMA_PERFMON_SEL_SDMA_UTCL2_RD_SEND = 89 -SDMA_PERFMON_SEL_UTCL2_SDMA_RD_RTN = 90 -SDMA_PERFMON_SEL_SDMA_UTCL2_WR_SEND = 91 -SDMA_PERFMON_SEL_UTCL2_SDMA_WR_RTN = 92 -SDMA_PERFMON_SEL_META_REQ_SEND = 93 -SDMA_PERFMON_SEL_META_RTN_VLD = 94 -SDMA_PERFMON_SEL_TLBI_SEND = 95 -SDMA_PERFMON_SEL_TLBI_RTN = 96 -SDMA_PERFMON_SEL_GCR_SEND = 97 -SDMA_PERFMON_SEL_GCR_RTN = 98 -SDMA_PERFMON_SEL_UTCL1_TAG_DELAY_COUNTER = 99 -SDMA_PERFMON_SEL_MMHUB_TAG_DELAY_COUNTER = 100 -SDMA_PERFMON_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SDMA_PERF_SEL' -SDMA_PERF_SEL__enumvalues = { - 0: 'SDMA_PERF_SEL_CYCLE', - 1: 'SDMA_PERF_SEL_IDLE', - 2: 'SDMA_PERF_SEL_REG_IDLE', - 3: 'SDMA_PERF_SEL_RB_EMPTY', - 4: 'SDMA_PERF_SEL_RB_FULL', - 5: 'SDMA_PERF_SEL_RB_WPTR_WRAP', - 6: 'SDMA_PERF_SEL_RB_RPTR_WRAP', - 7: 'SDMA_PERF_SEL_RB_WPTR_POLL_READ', - 8: 'SDMA_PERF_SEL_RB_RPTR_WB', - 9: 'SDMA_PERF_SEL_RB_CMD_IDLE', - 10: 'SDMA_PERF_SEL_RB_CMD_FULL', - 11: 'SDMA_PERF_SEL_IB_CMD_IDLE', - 12: 'SDMA_PERF_SEL_IB_CMD_FULL', - 13: 'SDMA_PERF_SEL_EX_IDLE', - 14: 'SDMA_PERF_SEL_SRBM_REG_SEND', - 15: 'SDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 16: 'SDMA_PERF_SEL_MC_WR_IDLE', - 17: 'SDMA_PERF_SEL_MC_WR_COUNT', - 18: 'SDMA_PERF_SEL_MC_RD_IDLE', - 19: 'SDMA_PERF_SEL_MC_RD_COUNT', - 20: 'SDMA_PERF_SEL_MC_RD_RET_STALL', - 21: 'SDMA_PERF_SEL_MC_RD_NO_POLL_IDLE', - 24: 'SDMA_PERF_SEL_SEM_IDLE', - 25: 'SDMA_PERF_SEL_SEM_REQ_STALL', - 26: 'SDMA_PERF_SEL_SEM_REQ_COUNT', - 27: 'SDMA_PERF_SEL_SEM_RESP_INCOMPLETE', - 28: 'SDMA_PERF_SEL_SEM_RESP_FAIL', - 29: 'SDMA_PERF_SEL_SEM_RESP_PASS', - 30: 'SDMA_PERF_SEL_INT_IDLE', - 31: 'SDMA_PERF_SEL_INT_REQ_STALL', - 32: 'SDMA_PERF_SEL_INT_REQ_COUNT', - 33: 'SDMA_PERF_SEL_INT_RESP_ACCEPTED', - 34: 'SDMA_PERF_SEL_INT_RESP_RETRY', - 35: 'SDMA_PERF_SEL_NUM_PACKET', - 37: 'SDMA_PERF_SEL_CE_WREQ_IDLE', - 38: 'SDMA_PERF_SEL_CE_WR_IDLE', - 39: 'SDMA_PERF_SEL_CE_SPLIT_IDLE', - 40: 'SDMA_PERF_SEL_CE_RREQ_IDLE', - 41: 'SDMA_PERF_SEL_CE_OUT_IDLE', - 42: 'SDMA_PERF_SEL_CE_IN_IDLE', - 43: 'SDMA_PERF_SEL_CE_DST_IDLE', - 46: 'SDMA_PERF_SEL_CE_AFIFO_FULL', - 49: 'SDMA_PERF_SEL_CE_INFO_FULL', - 50: 'SDMA_PERF_SEL_CE_INFO1_FULL', - 51: 'SDMA_PERF_SEL_CE_RD_STALL', - 52: 'SDMA_PERF_SEL_CE_WR_STALL', - 53: 'SDMA_PERF_SEL_GFX_SELECT', - 54: 'SDMA_PERF_SEL_RLC0_SELECT', - 55: 'SDMA_PERF_SEL_RLC1_SELECT', - 56: 'SDMA_PERF_SEL_PAGE_SELECT', - 57: 'SDMA_PERF_SEL_CTX_CHANGE', - 58: 'SDMA_PERF_SEL_CTX_CHANGE_EXPIRED', - 59: 'SDMA_PERF_SEL_CTX_CHANGE_EXCEPTION', - 60: 'SDMA_PERF_SEL_DOORBELL', - 61: 'SDMA_PERF_SEL_RD_BA_RTR', - 62: 'SDMA_PERF_SEL_WR_BA_RTR', - 63: 'SDMA_PERF_SEL_F32_L1_WR_VLD', - 64: 'SDMA_PERF_SEL_CE_L1_WR_VLD', - 65: 'SDMA_PERF_SEL_CPF_SDMA_INVREQ', - 66: 'SDMA_PERF_SEL_SDMA_CPF_INVACK', - 67: 'SDMA_PERF_SEL_UTCL2_SDMA_INVREQ', - 68: 'SDMA_PERF_SEL_SDMA_UTCL2_INVACK', - 69: 'SDMA_PERF_SEL_UTCL2_SDMA_INVREQ_ALL', - 70: 'SDMA_PERF_SEL_SDMA_UTCL2_INVACK_ALL', - 71: 'SDMA_PERF_SEL_UTCL2_RET_XNACK', - 72: 'SDMA_PERF_SEL_UTCL2_RET_ACK', - 73: 'SDMA_PERF_SEL_UTCL2_FREE', - 74: 'SDMA_PERF_SEL_SDMA_UTCL2_SEND', - 75: 'SDMA_PERF_SEL_DMA_L1_WR_SEND', - 76: 'SDMA_PERF_SEL_DMA_L1_RD_SEND', - 77: 'SDMA_PERF_SEL_DMA_MC_WR_SEND', - 78: 'SDMA_PERF_SEL_DMA_MC_RD_SEND', - 79: 'SDMA_PERF_SEL_GPUVM_INV_HIGH', - 80: 'SDMA_PERF_SEL_GPUVM_INV_LOW', - 81: 'SDMA_PERF_SEL_L1_WRL2_IDLE', - 82: 'SDMA_PERF_SEL_L1_RDL2_IDLE', - 83: 'SDMA_PERF_SEL_L1_WRMC_IDLE', - 84: 'SDMA_PERF_SEL_L1_RDMC_IDLE', - 85: 'SDMA_PERF_SEL_L1_WR_INV_IDLE', - 86: 'SDMA_PERF_SEL_L1_RD_INV_IDLE', - 87: 'SDMA_PERF_SEL_META_L2_REQ_SEND', - 88: 'SDMA_PERF_SEL_L2_META_RET_VLD', - 89: 'SDMA_PERF_SEL_SDMA_UTCL2_RD_SEND', - 90: 'SDMA_PERF_SEL_UTCL2_SDMA_RD_RTN', - 91: 'SDMA_PERF_SEL_SDMA_UTCL2_WR_SEND', - 92: 'SDMA_PERF_SEL_UTCL2_SDMA_WR_RTN', - 93: 'SDMA_PERF_SEL_META_REQ_SEND', - 94: 'SDMA_PERF_SEL_META_RTN_VLD', - 95: 'SDMA_PERF_SEL_TLBI_SEND', - 96: 'SDMA_PERF_SEL_TLBI_RTN', - 97: 'SDMA_PERF_SEL_GCR_SEND', - 98: 'SDMA_PERF_SEL_GCR_RTN', - 99: 'SDMA_PERF_SEL_CGCG_FENCE', - 100: 'SDMA_PERF_SEL_CE_CH_WR_REQ', - 101: 'SDMA_PERF_SEL_CE_CH_WR_RET', - 102: 'SDMA_PERF_SEL_F32_CH_WR_REQ', - 103: 'SDMA_PERF_SEL_F32_CH_WR_RET', - 104: 'SDMA_PERF_SEL_CE_OR_F32_CH_RD_REQ', - 105: 'SDMA_PERF_SEL_CE_OR_F32_CH_RD_RET', - 106: 'SDMA_PERF_SEL_RB_CH_RD_REQ', - 107: 'SDMA_PERF_SEL_RB_CH_RD_RET', - 108: 'SDMA_PERF_SEL_IB_CH_RD_REQ', - 109: 'SDMA_PERF_SEL_IB_CH_RD_RET', - 110: 'SDMA_PERF_SEL_WPTR_CH_RD_REQ', - 111: 'SDMA_PERF_SEL_WPTR_CH_RD_RET', - 112: 'SDMA_PERF_SEL_UTCL1_UTCL2_REQ', - 113: 'SDMA_PERF_SEL_UTCL1_UTCL2_RET', - 114: 'SDMA_PERF_SEL_CMD_OP_MATCH', - 115: 'SDMA_PERF_SEL_CMD_OP_START', - 116: 'SDMA_PERF_SEL_CMD_OP_END', - 117: 'SDMA_PERF_SEL_CE_BUSY', - 118: 'SDMA_PERF_SEL_CE_BUSY_START', - 119: 'SDMA_PERF_SEL_CE_BUSY_END', - 120: 'SDMA_PERF_SEL_F32_PERFCNT_TRIGGER', - 121: 'SDMA_PERF_SEL_F32_PERFCNT_TRIGGER_START', - 122: 'SDMA_PERF_SEL_F32_PERFCNT_TRIGGER_END', - 123: 'SDMA_PERF_SEL_CE_CH_WRREQ_SEND', - 124: 'SDMA_PERF_SEL_CH_CE_WRRET_VALID', - 125: 'SDMA_PERF_SEL_CE_CH_RDREQ_SEND', - 126: 'SDMA_PERF_SEL_CH_CE_RDRET_VALID', -} -SDMA_PERF_SEL_CYCLE = 0 -SDMA_PERF_SEL_IDLE = 1 -SDMA_PERF_SEL_REG_IDLE = 2 -SDMA_PERF_SEL_RB_EMPTY = 3 -SDMA_PERF_SEL_RB_FULL = 4 -SDMA_PERF_SEL_RB_WPTR_WRAP = 5 -SDMA_PERF_SEL_RB_RPTR_WRAP = 6 -SDMA_PERF_SEL_RB_WPTR_POLL_READ = 7 -SDMA_PERF_SEL_RB_RPTR_WB = 8 -SDMA_PERF_SEL_RB_CMD_IDLE = 9 -SDMA_PERF_SEL_RB_CMD_FULL = 10 -SDMA_PERF_SEL_IB_CMD_IDLE = 11 -SDMA_PERF_SEL_IB_CMD_FULL = 12 -SDMA_PERF_SEL_EX_IDLE = 13 -SDMA_PERF_SEL_SRBM_REG_SEND = 14 -SDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE = 15 -SDMA_PERF_SEL_MC_WR_IDLE = 16 -SDMA_PERF_SEL_MC_WR_COUNT = 17 -SDMA_PERF_SEL_MC_RD_IDLE = 18 -SDMA_PERF_SEL_MC_RD_COUNT = 19 -SDMA_PERF_SEL_MC_RD_RET_STALL = 20 -SDMA_PERF_SEL_MC_RD_NO_POLL_IDLE = 21 -SDMA_PERF_SEL_SEM_IDLE = 24 -SDMA_PERF_SEL_SEM_REQ_STALL = 25 -SDMA_PERF_SEL_SEM_REQ_COUNT = 26 -SDMA_PERF_SEL_SEM_RESP_INCOMPLETE = 27 -SDMA_PERF_SEL_SEM_RESP_FAIL = 28 -SDMA_PERF_SEL_SEM_RESP_PASS = 29 -SDMA_PERF_SEL_INT_IDLE = 30 -SDMA_PERF_SEL_INT_REQ_STALL = 31 -SDMA_PERF_SEL_INT_REQ_COUNT = 32 -SDMA_PERF_SEL_INT_RESP_ACCEPTED = 33 -SDMA_PERF_SEL_INT_RESP_RETRY = 34 -SDMA_PERF_SEL_NUM_PACKET = 35 -SDMA_PERF_SEL_CE_WREQ_IDLE = 37 -SDMA_PERF_SEL_CE_WR_IDLE = 38 -SDMA_PERF_SEL_CE_SPLIT_IDLE = 39 -SDMA_PERF_SEL_CE_RREQ_IDLE = 40 -SDMA_PERF_SEL_CE_OUT_IDLE = 41 -SDMA_PERF_SEL_CE_IN_IDLE = 42 -SDMA_PERF_SEL_CE_DST_IDLE = 43 -SDMA_PERF_SEL_CE_AFIFO_FULL = 46 -SDMA_PERF_SEL_CE_INFO_FULL = 49 -SDMA_PERF_SEL_CE_INFO1_FULL = 50 -SDMA_PERF_SEL_CE_RD_STALL = 51 -SDMA_PERF_SEL_CE_WR_STALL = 52 -SDMA_PERF_SEL_GFX_SELECT = 53 -SDMA_PERF_SEL_RLC0_SELECT = 54 -SDMA_PERF_SEL_RLC1_SELECT = 55 -SDMA_PERF_SEL_PAGE_SELECT = 56 -SDMA_PERF_SEL_CTX_CHANGE = 57 -SDMA_PERF_SEL_CTX_CHANGE_EXPIRED = 58 -SDMA_PERF_SEL_CTX_CHANGE_EXCEPTION = 59 -SDMA_PERF_SEL_DOORBELL = 60 -SDMA_PERF_SEL_RD_BA_RTR = 61 -SDMA_PERF_SEL_WR_BA_RTR = 62 -SDMA_PERF_SEL_F32_L1_WR_VLD = 63 -SDMA_PERF_SEL_CE_L1_WR_VLD = 64 -SDMA_PERF_SEL_CPF_SDMA_INVREQ = 65 -SDMA_PERF_SEL_SDMA_CPF_INVACK = 66 -SDMA_PERF_SEL_UTCL2_SDMA_INVREQ = 67 -SDMA_PERF_SEL_SDMA_UTCL2_INVACK = 68 -SDMA_PERF_SEL_UTCL2_SDMA_INVREQ_ALL = 69 -SDMA_PERF_SEL_SDMA_UTCL2_INVACK_ALL = 70 -SDMA_PERF_SEL_UTCL2_RET_XNACK = 71 -SDMA_PERF_SEL_UTCL2_RET_ACK = 72 -SDMA_PERF_SEL_UTCL2_FREE = 73 -SDMA_PERF_SEL_SDMA_UTCL2_SEND = 74 -SDMA_PERF_SEL_DMA_L1_WR_SEND = 75 -SDMA_PERF_SEL_DMA_L1_RD_SEND = 76 -SDMA_PERF_SEL_DMA_MC_WR_SEND = 77 -SDMA_PERF_SEL_DMA_MC_RD_SEND = 78 -SDMA_PERF_SEL_GPUVM_INV_HIGH = 79 -SDMA_PERF_SEL_GPUVM_INV_LOW = 80 -SDMA_PERF_SEL_L1_WRL2_IDLE = 81 -SDMA_PERF_SEL_L1_RDL2_IDLE = 82 -SDMA_PERF_SEL_L1_WRMC_IDLE = 83 -SDMA_PERF_SEL_L1_RDMC_IDLE = 84 -SDMA_PERF_SEL_L1_WR_INV_IDLE = 85 -SDMA_PERF_SEL_L1_RD_INV_IDLE = 86 -SDMA_PERF_SEL_META_L2_REQ_SEND = 87 -SDMA_PERF_SEL_L2_META_RET_VLD = 88 -SDMA_PERF_SEL_SDMA_UTCL2_RD_SEND = 89 -SDMA_PERF_SEL_UTCL2_SDMA_RD_RTN = 90 -SDMA_PERF_SEL_SDMA_UTCL2_WR_SEND = 91 -SDMA_PERF_SEL_UTCL2_SDMA_WR_RTN = 92 -SDMA_PERF_SEL_META_REQ_SEND = 93 -SDMA_PERF_SEL_META_RTN_VLD = 94 -SDMA_PERF_SEL_TLBI_SEND = 95 -SDMA_PERF_SEL_TLBI_RTN = 96 -SDMA_PERF_SEL_GCR_SEND = 97 -SDMA_PERF_SEL_GCR_RTN = 98 -SDMA_PERF_SEL_CGCG_FENCE = 99 -SDMA_PERF_SEL_CE_CH_WR_REQ = 100 -SDMA_PERF_SEL_CE_CH_WR_RET = 101 -SDMA_PERF_SEL_F32_CH_WR_REQ = 102 -SDMA_PERF_SEL_F32_CH_WR_RET = 103 -SDMA_PERF_SEL_CE_OR_F32_CH_RD_REQ = 104 -SDMA_PERF_SEL_CE_OR_F32_CH_RD_RET = 105 -SDMA_PERF_SEL_RB_CH_RD_REQ = 106 -SDMA_PERF_SEL_RB_CH_RD_RET = 107 -SDMA_PERF_SEL_IB_CH_RD_REQ = 108 -SDMA_PERF_SEL_IB_CH_RD_RET = 109 -SDMA_PERF_SEL_WPTR_CH_RD_REQ = 110 -SDMA_PERF_SEL_WPTR_CH_RD_RET = 111 -SDMA_PERF_SEL_UTCL1_UTCL2_REQ = 112 -SDMA_PERF_SEL_UTCL1_UTCL2_RET = 113 -SDMA_PERF_SEL_CMD_OP_MATCH = 114 -SDMA_PERF_SEL_CMD_OP_START = 115 -SDMA_PERF_SEL_CMD_OP_END = 116 -SDMA_PERF_SEL_CE_BUSY = 117 -SDMA_PERF_SEL_CE_BUSY_START = 118 -SDMA_PERF_SEL_CE_BUSY_END = 119 -SDMA_PERF_SEL_F32_PERFCNT_TRIGGER = 120 -SDMA_PERF_SEL_F32_PERFCNT_TRIGGER_START = 121 -SDMA_PERF_SEL_F32_PERFCNT_TRIGGER_END = 122 -SDMA_PERF_SEL_CE_CH_WRREQ_SEND = 123 -SDMA_PERF_SEL_CH_CE_WRRET_VALID = 124 -SDMA_PERF_SEL_CE_CH_RDREQ_SEND = 125 -SDMA_PERF_SEL_CH_CE_RDRET_VALID = 126 -SDMA_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TCC_CACHE_POLICIES' -TCC_CACHE_POLICIES__enumvalues = { - 0: 'TCC_CACHE_POLICY_LRU', - 1: 'TCC_CACHE_POLICY_STREAM', -} -TCC_CACHE_POLICY_LRU = 0 -TCC_CACHE_POLICY_STREAM = 1 -TCC_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'TCC_MTYPE' -TCC_MTYPE__enumvalues = { - 0: 'MTYPE_NC', - 1: 'MTYPE_WC', - 2: 'MTYPE_CC', -} -MTYPE_NC = 0 -MTYPE_WC = 1 -MTYPE_CC = 2 -TCC_MTYPE = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL0FaultType' -UTCL0FaultType__enumvalues = { - 0: 'UTCL0_XNACK_SUCCESS', - 1: 'UTCL0_XNACK_RETRY', - 2: 'UTCL0_XNACK_PRT', - 3: 'UTCL0_XNACK_NO_RETRY', -} -UTCL0_XNACK_SUCCESS = 0 -UTCL0_XNACK_RETRY = 1 -UTCL0_XNACK_PRT = 2 -UTCL0_XNACK_NO_RETRY = 3 -UTCL0FaultType = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL0RequestType' -UTCL0RequestType__enumvalues = { - 0: 'UTCL0_TYPE_NORMAL', - 1: 'UTCL0_TYPE_SHOOTDOWN', - 2: 'UTCL0_TYPE_BYPASS', -} -UTCL0_TYPE_NORMAL = 0 -UTCL0_TYPE_SHOOTDOWN = 1 -UTCL0_TYPE_BYPASS = 2 -UTCL0RequestType = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL1FaultType' -UTCL1FaultType__enumvalues = { - 0: 'UTCL1_XNACK_SUCCESS', - 1: 'UTCL1_XNACK_RETRY', - 2: 'UTCL1_XNACK_PRT', - 3: 'UTCL1_XNACK_NO_RETRY', -} -UTCL1_XNACK_SUCCESS = 0 -UTCL1_XNACK_RETRY = 1 -UTCL1_XNACK_PRT = 2 -UTCL1_XNACK_NO_RETRY = 3 -UTCL1FaultType = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL1RequestType' -UTCL1RequestType__enumvalues = { - 0: 'UTCL1_TYPE_NORMAL', - 1: 'UTCL1_TYPE_SHOOTDOWN', - 2: 'UTCL1_TYPE_BYPASS', -} -UTCL1_TYPE_NORMAL = 0 -UTCL1_TYPE_SHOOTDOWN = 1 -UTCL1_TYPE_BYPASS = 2 -UTCL1RequestType = ctypes.c_uint32 # enum - -# values for enumeration 'VMEMCMD_RETURN_ORDER' -VMEMCMD_RETURN_ORDER__enumvalues = { - 0: 'VMEMCMD_RETURN_OUT_OF_ORDER', - 1: 'VMEMCMD_RETURN_IN_ORDER', - 2: 'VMEMCMD_RETURN_IN_ORDER_READ', -} -VMEMCMD_RETURN_OUT_OF_ORDER = 0 -VMEMCMD_RETURN_IN_ORDER = 1 -VMEMCMD_RETURN_IN_ORDER_READ = 2 -VMEMCMD_RETURN_ORDER = ctypes.c_uint32 # enum - -# values for enumeration 'WritePolicy' -WritePolicy__enumvalues = { - 0: 'CACHE_LRU_WR', - 1: 'CACHE_STREAM', - 2: 'CACHE_NOA_WR', - 3: 'CACHE_BYPASS', -} -CACHE_LRU_WR = 0 -CACHE_STREAM = 1 -CACHE_NOA_WR = 2 -CACHE_BYPASS = 3 -WritePolicy = ctypes.c_uint32 # enum - -# values for enumeration 'CNVC_BYPASS' -CNVC_BYPASS__enumvalues = { - 0: 'CNVC_BYPASS_DISABLE', - 1: 'CNVC_BYPASS_EN', -} -CNVC_BYPASS_DISABLE = 0 -CNVC_BYPASS_EN = 1 -CNVC_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'CNVC_COEF_FORMAT_ENUM' -CNVC_COEF_FORMAT_ENUM__enumvalues = { - 0: 'CNVC_FIX_S2_13', - 1: 'CNVC_FIX_S3_12', -} -CNVC_FIX_S2_13 = 0 -CNVC_FIX_S3_12 = 1 -CNVC_COEF_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CNVC_ENABLE' -CNVC_ENABLE__enumvalues = { - 0: 'CNVC_DIS', - 1: 'CNVC_EN', -} -CNVC_DIS = 0 -CNVC_EN = 1 -CNVC_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CNVC_PENDING' -CNVC_PENDING__enumvalues = { - 0: 'CNVC_NOT_PENDING', - 1: 'CNVC_YES_PENDING', -} -CNVC_NOT_PENDING = 0 -CNVC_YES_PENDING = 1 -CNVC_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'COLOR_KEYER_MODE' -COLOR_KEYER_MODE__enumvalues = { - 0: 'FORCE_00', - 1: 'FORCE_FF', - 2: 'RANGE_00', - 3: 'RANGE_FF', -} -FORCE_00 = 0 -FORCE_FF = 1 -RANGE_00 = 2 -RANGE_FF = 3 -COLOR_KEYER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DENORM_TRUNCATE' -DENORM_TRUNCATE__enumvalues = { - 0: 'CNVC_ROUND', - 1: 'CNVC_TRUNCATE', -} -CNVC_ROUND = 0 -CNVC_TRUNCATE = 1 -DENORM_TRUNCATE = ctypes.c_uint32 # enum - -# values for enumeration 'FORMAT_CROSSBAR' -FORMAT_CROSSBAR__enumvalues = { - 0: 'FORMAT_CROSSBAR_R', - 1: 'FORMAT_CROSSBAR_G', - 2: 'FORMAT_CROSSBAR_B', -} -FORMAT_CROSSBAR_R = 0 -FORMAT_CROSSBAR_G = 1 -FORMAT_CROSSBAR_B = 2 -FORMAT_CROSSBAR = ctypes.c_uint32 # enum - -# values for enumeration 'PIX_EXPAND_MODE' -PIX_EXPAND_MODE__enumvalues = { - 0: 'PIX_DYNAMIC_EXPANSION', - 1: 'PIX_ZERO_EXPANSION', -} -PIX_DYNAMIC_EXPANSION = 0 -PIX_ZERO_EXPANSION = 1 -PIX_EXPAND_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PRE_CSC_MODE_ENUM' -PRE_CSC_MODE_ENUM__enumvalues = { - 0: 'PRE_CSC_BYPASS', - 1: 'PRE_CSC_SET_A', - 2: 'PRE_CSC_SET_B', -} -PRE_CSC_BYPASS = 0 -PRE_CSC_SET_A = 1 -PRE_CSC_SET_B = 2 -PRE_CSC_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'PRE_DEGAM_MODE' -PRE_DEGAM_MODE__enumvalues = { - 0: 'PRE_DEGAM_BYPASS', - 1: 'PRE_DEGAM_ENABLE', -} -PRE_DEGAM_BYPASS = 0 -PRE_DEGAM_ENABLE = 1 -PRE_DEGAM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PRE_DEGAM_SELECT' -PRE_DEGAM_SELECT__enumvalues = { - 0: 'PRE_DEGAM_SRGB', - 1: 'PRE_DEGAM_GAMMA_22', - 2: 'PRE_DEGAM_GAMMA_24', - 3: 'PRE_DEGAM_GAMMA_26', - 4: 'PRE_DEGAM_BT2020', - 5: 'PRE_DEGAM_BT2100PQ', - 6: 'PRE_DEGAM_BT2100HLG', -} -PRE_DEGAM_SRGB = 0 -PRE_DEGAM_GAMMA_22 = 1 -PRE_DEGAM_GAMMA_24 = 2 -PRE_DEGAM_GAMMA_26 = 3 -PRE_DEGAM_BT2020 = 4 -PRE_DEGAM_BT2100PQ = 5 -PRE_DEGAM_BT2100HLG = 6 -PRE_DEGAM_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_PIXEL_FORMAT' -SURFACE_PIXEL_FORMAT__enumvalues = { - 1: 'ARGB1555', - 2: 'RGBA5551', - 3: 'RGB565', - 4: 'BGR565', - 5: 'ARGB4444', - 6: 'RGBA4444', - 8: 'ARGB8888', - 9: 'RGBA8888', - 10: 'ARGB2101010', - 11: 'RGBA1010102', - 12: 'AYCrCb8888', - 13: 'YCrCbA8888', - 14: 'ACrYCb8888', - 15: 'CrYCbA8888', - 16: 'ARGB16161616_10MSB', - 17: 'RGBA16161616_10MSB', - 18: 'ARGB16161616_10LSB', - 19: 'RGBA16161616_10LSB', - 20: 'ARGB16161616_12MSB', - 21: 'RGBA16161616_12MSB', - 22: 'ARGB16161616_12LSB', - 23: 'RGBA16161616_12LSB', - 24: 'ARGB16161616_FLOAT', - 25: 'RGBA16161616_FLOAT', - 26: 'ARGB16161616_UNORM', - 27: 'RGBA16161616_UNORM', - 28: 'ARGB16161616_SNORM', - 29: 'RGBA16161616_SNORM', - 32: 'AYCrCb16161616_10MSB', - 33: 'AYCrCb16161616_10LSB', - 34: 'YCrCbA16161616_10MSB', - 35: 'YCrCbA16161616_10LSB', - 36: 'ACrYCb16161616_10MSB', - 37: 'ACrYCb16161616_10LSB', - 38: 'CrYCbA16161616_10MSB', - 39: 'CrYCbA16161616_10LSB', - 40: 'AYCrCb16161616_12MSB', - 41: 'AYCrCb16161616_12LSB', - 42: 'YCrCbA16161616_12MSB', - 43: 'YCrCbA16161616_12LSB', - 44: 'ACrYCb16161616_12MSB', - 45: 'ACrYCb16161616_12LSB', - 46: 'CrYCbA16161616_12MSB', - 47: 'CrYCbA16161616_12LSB', - 64: 'Y8_CrCb88_420_PLANAR', - 65: 'Y8_CbCr88_420_PLANAR', - 66: 'Y10_CrCb1010_420_PLANAR', - 67: 'Y10_CbCr1010_420_PLANAR', - 68: 'Y12_CrCb1212_420_PLANAR', - 69: 'Y12_CbCr1212_420_PLANAR', - 72: 'YCrYCb8888_422_PACKED', - 73: 'YCbYCr8888_422_PACKED', - 74: 'CrYCbY8888_422_PACKED', - 75: 'CbYCrY8888_422_PACKED', - 76: 'YCrYCb10101010_422_PACKED', - 77: 'YCbYCr10101010_422_PACKED', - 78: 'CrYCbY10101010_422_PACKED', - 79: 'CbYCrY10101010_422_PACKED', - 80: 'YCrYCb12121212_422_PACKED', - 81: 'YCbYCr12121212_422_PACKED', - 82: 'CrYCbY12121212_422_PACKED', - 83: 'CbYCrY12121212_422_PACKED', - 112: 'RGB111110_FIX', - 113: 'BGR101111_FIX', - 114: 'ACrYCb2101010', - 115: 'CrYCbA1010102', - 116: 'RGBE', - 118: 'RGB111110_FLOAT', - 119: 'BGR101111_FLOAT', - 120: 'MONO_8', - 121: 'MONO_10MSB', - 122: 'MONO_10LSB', - 123: 'MONO_12MSB', - 124: 'MONO_12LSB', - 125: 'MONO_16', -} -ARGB1555 = 1 -RGBA5551 = 2 -RGB565 = 3 -BGR565 = 4 -ARGB4444 = 5 -RGBA4444 = 6 -ARGB8888 = 8 -RGBA8888 = 9 -ARGB2101010 = 10 -RGBA1010102 = 11 -AYCrCb8888 = 12 -YCrCbA8888 = 13 -ACrYCb8888 = 14 -CrYCbA8888 = 15 -ARGB16161616_10MSB = 16 -RGBA16161616_10MSB = 17 -ARGB16161616_10LSB = 18 -RGBA16161616_10LSB = 19 -ARGB16161616_12MSB = 20 -RGBA16161616_12MSB = 21 -ARGB16161616_12LSB = 22 -RGBA16161616_12LSB = 23 -ARGB16161616_FLOAT = 24 -RGBA16161616_FLOAT = 25 -ARGB16161616_UNORM = 26 -RGBA16161616_UNORM = 27 -ARGB16161616_SNORM = 28 -RGBA16161616_SNORM = 29 -AYCrCb16161616_10MSB = 32 -AYCrCb16161616_10LSB = 33 -YCrCbA16161616_10MSB = 34 -YCrCbA16161616_10LSB = 35 -ACrYCb16161616_10MSB = 36 -ACrYCb16161616_10LSB = 37 -CrYCbA16161616_10MSB = 38 -CrYCbA16161616_10LSB = 39 -AYCrCb16161616_12MSB = 40 -AYCrCb16161616_12LSB = 41 -YCrCbA16161616_12MSB = 42 -YCrCbA16161616_12LSB = 43 -ACrYCb16161616_12MSB = 44 -ACrYCb16161616_12LSB = 45 -CrYCbA16161616_12MSB = 46 -CrYCbA16161616_12LSB = 47 -Y8_CrCb88_420_PLANAR = 64 -Y8_CbCr88_420_PLANAR = 65 -Y10_CrCb1010_420_PLANAR = 66 -Y10_CbCr1010_420_PLANAR = 67 -Y12_CrCb1212_420_PLANAR = 68 -Y12_CbCr1212_420_PLANAR = 69 -YCrYCb8888_422_PACKED = 72 -YCbYCr8888_422_PACKED = 73 -CrYCbY8888_422_PACKED = 74 -CbYCrY8888_422_PACKED = 75 -YCrYCb10101010_422_PACKED = 76 -YCbYCr10101010_422_PACKED = 77 -CrYCbY10101010_422_PACKED = 78 -CbYCrY10101010_422_PACKED = 79 -YCrYCb12121212_422_PACKED = 80 -YCbYCr12121212_422_PACKED = 81 -CrYCbY12121212_422_PACKED = 82 -CbYCrY12121212_422_PACKED = 83 -RGB111110_FIX = 112 -BGR101111_FIX = 113 -ACrYCb2101010 = 114 -CrYCbA1010102 = 115 -RGBE = 116 -RGB111110_FLOAT = 118 -BGR101111_FLOAT = 119 -MONO_8 = 120 -MONO_10MSB = 121 -MONO_10LSB = 122 -MONO_12MSB = 123 -MONO_12LSB = 124 -MONO_16 = 125 -SURFACE_PIXEL_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'XNORM' -XNORM__enumvalues = { - 0: 'XNORM_A', - 1: 'XNORM_B', -} -XNORM_A = 0 -XNORM_B = 1 -XNORM = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_ENABLE' -CUR_ENABLE__enumvalues = { - 0: 'CUR_DIS', - 1: 'CUR_EN', -} -CUR_DIS = 0 -CUR_EN = 1 -CUR_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_EXPAND_MODE' -CUR_EXPAND_MODE__enumvalues = { - 0: 'CUR_DYNAMIC_EXPANSION', - 1: 'CUR_ZERO_EXPANSION', -} -CUR_DYNAMIC_EXPANSION = 0 -CUR_ZERO_EXPANSION = 1 -CUR_EXPAND_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_INV_CLAMP' -CUR_INV_CLAMP__enumvalues = { - 0: 'CUR_CLAMP_DIS', - 1: 'CUR_CLAMP_EN', -} -CUR_CLAMP_DIS = 0 -CUR_CLAMP_EN = 1 -CUR_INV_CLAMP = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_MODE' -CUR_MODE__enumvalues = { - 0: 'MONO_2BIT', - 1: 'COLOR_24BIT_1BIT_AND', - 2: 'COLOR_24BIT_8BIT_ALPHA_PREMULT', - 3: 'COLOR_24BIT_8BIT_ALPHA_UNPREMULT', - 4: 'COLOR_64BIT_FP_PREMULT', - 5: 'COLOR_64BIT_FP_UNPREMULT', -} -MONO_2BIT = 0 -COLOR_24BIT_1BIT_AND = 1 -COLOR_24BIT_8BIT_ALPHA_PREMULT = 2 -COLOR_24BIT_8BIT_ALPHA_UNPREMULT = 3 -COLOR_64BIT_FP_PREMULT = 4 -COLOR_64BIT_FP_UNPREMULT = 5 -CUR_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_PENDING' -CUR_PENDING__enumvalues = { - 0: 'CUR_NOT_PENDING', - 1: 'CUR_YES_PENDING', -} -CUR_NOT_PENDING = 0 -CUR_YES_PENDING = 1 -CUR_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'CUR_ROM_EN' -CUR_ROM_EN__enumvalues = { - 0: 'CUR_FP_NO_ROM', - 1: 'CUR_FP_USE_ROM', -} -CUR_FP_NO_ROM = 0 -CUR_FP_USE_ROM = 1 -CUR_ROM_EN = ctypes.c_uint32 # enum - -# values for enumeration 'COEF_RAM_SELECT_RD' -COEF_RAM_SELECT_RD__enumvalues = { - 0: 'COEF_RAM_SELECT_BACK', - 1: 'COEF_RAM_SELECT_CURRENT', -} -COEF_RAM_SELECT_BACK = 0 -COEF_RAM_SELECT_CURRENT = 1 -COEF_RAM_SELECT_RD = ctypes.c_uint32 # enum - -# values for enumeration 'DSCL_MODE_SEL' -DSCL_MODE_SEL__enumvalues = { - 0: 'DSCL_MODE_SCALING_444_BYPASS', - 1: 'DSCL_MODE_SCALING_444_RGB_ENABLE', - 2: 'DSCL_MODE_SCALING_444_YCBCR_ENABLE', - 3: 'DSCL_MODE_SCALING_YCBCR_ENABLE', - 4: 'DSCL_MODE_LUMA_SCALING_BYPASS', - 5: 'DSCL_MODE_CHROMA_SCALING_BYPASS', - 6: 'DSCL_MODE_DSCL_BYPASS', -} -DSCL_MODE_SCALING_444_BYPASS = 0 -DSCL_MODE_SCALING_444_RGB_ENABLE = 1 -DSCL_MODE_SCALING_444_YCBCR_ENABLE = 2 -DSCL_MODE_SCALING_YCBCR_ENABLE = 3 -DSCL_MODE_LUMA_SCALING_BYPASS = 4 -DSCL_MODE_CHROMA_SCALING_BYPASS = 5 -DSCL_MODE_DSCL_BYPASS = 6 -DSCL_MODE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'LB_ALPHA_EN' -LB_ALPHA_EN__enumvalues = { - 0: 'LB_ALPHA_DISABLE', - 1: 'LB_ALPHA_ENABLE', -} -LB_ALPHA_DISABLE = 0 -LB_ALPHA_ENABLE = 1 -LB_ALPHA_EN = ctypes.c_uint32 # enum - -# values for enumeration 'LB_INTERLEAVE_EN' -LB_INTERLEAVE_EN__enumvalues = { - 0: 'LB_INTERLEAVE_DISABLE', - 1: 'LB_INTERLEAVE_ENABLE', -} -LB_INTERLEAVE_DISABLE = 0 -LB_INTERLEAVE_ENABLE = 1 -LB_INTERLEAVE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'LB_MEMORY_CONFIG' -LB_MEMORY_CONFIG__enumvalues = { - 0: 'LB_MEMORY_CONFIG_0', - 1: 'LB_MEMORY_CONFIG_1', - 2: 'LB_MEMORY_CONFIG_2', - 3: 'LB_MEMORY_CONFIG_3', -} -LB_MEMORY_CONFIG_0 = 0 -LB_MEMORY_CONFIG_1 = 1 -LB_MEMORY_CONFIG_2 = 2 -LB_MEMORY_CONFIG_3 = 3 -LB_MEMORY_CONFIG = ctypes.c_uint32 # enum - -# values for enumeration 'OBUF_BYPASS_SEL' -OBUF_BYPASS_SEL__enumvalues = { - 0: 'OBUF_BYPASS_DIS', - 1: 'OBUF_BYPASS_EN', -} -OBUF_BYPASS_DIS = 0 -OBUF_BYPASS_EN = 1 -OBUF_BYPASS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OBUF_IS_HALF_RECOUT_WIDTH_SEL' -OBUF_IS_HALF_RECOUT_WIDTH_SEL__enumvalues = { - 0: 'OBUF_FULL_RECOUT', - 1: 'OBUF_HALF_RECOUT', -} -OBUF_FULL_RECOUT = 0 -OBUF_HALF_RECOUT = 1 -OBUF_IS_HALF_RECOUT_WIDTH_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OBUF_USE_FULL_BUFFER_SEL' -OBUF_USE_FULL_BUFFER_SEL__enumvalues = { - 0: 'OBUF_RECOUT', - 1: 'OBUF_FULL', -} -OBUF_RECOUT = 0 -OBUF_FULL = 1 -OBUF_USE_FULL_BUFFER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_2TAP_HARDCODE' -SCL_2TAP_HARDCODE__enumvalues = { - 0: 'SCL_COEF_2TAP_HARDCODE_OFF', - 1: 'SCL_COEF_2TAP_HARDCODE_ON', -} -SCL_COEF_2TAP_HARDCODE_OFF = 0 -SCL_COEF_2TAP_HARDCODE_ON = 1 -SCL_2TAP_HARDCODE = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_ALPHA_COEF' -SCL_ALPHA_COEF__enumvalues = { - 0: 'SCL_ALPHA_COEF_FIRST', - 1: 'SCL_ALPHA_COEF_SECOND', -} -SCL_ALPHA_COEF_FIRST = 0 -SCL_ALPHA_COEF_SECOND = 1 -SCL_ALPHA_COEF = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_AUTOCAL_MODE' -SCL_AUTOCAL_MODE__enumvalues = { - 0: 'AUTOCAL_MODE_OFF', - 1: 'AUTOCAL_MODE_AUTOSCALE', - 2: 'AUTOCAL_MODE_AUTOCENTER', - 3: 'AUTOCAL_MODE_AUTOREPLICATE', -} -AUTOCAL_MODE_OFF = 0 -AUTOCAL_MODE_AUTOSCALE = 1 -AUTOCAL_MODE_AUTOCENTER = 2 -AUTOCAL_MODE_AUTOREPLICATE = 3 -SCL_AUTOCAL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_BOUNDARY' -SCL_BOUNDARY__enumvalues = { - 0: 'SCL_BOUNDARY_EDGE', - 1: 'SCL_BOUNDARY_BLACK', -} -SCL_BOUNDARY_EDGE = 0 -SCL_BOUNDARY_BLACK = 1 -SCL_BOUNDARY = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_CHROMA_COEF' -SCL_CHROMA_COEF__enumvalues = { - 0: 'SCL_CHROMA_COEF_FIRST', - 1: 'SCL_CHROMA_COEF_SECOND', -} -SCL_CHROMA_COEF_FIRST = 0 -SCL_CHROMA_COEF_SECOND = 1 -SCL_CHROMA_COEF = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_COEF_FILTER_TYPE_SEL' -SCL_COEF_FILTER_TYPE_SEL__enumvalues = { - 0: 'SCL_COEF_LUMA_VERT_FILTER', - 1: 'SCL_COEF_LUMA_HORZ_FILTER', - 2: 'SCL_COEF_CHROMA_VERT_FILTER', - 3: 'SCL_COEF_CHROMA_HORZ_FILTER', -} -SCL_COEF_LUMA_VERT_FILTER = 0 -SCL_COEF_LUMA_HORZ_FILTER = 1 -SCL_COEF_CHROMA_VERT_FILTER = 2 -SCL_COEF_CHROMA_HORZ_FILTER = 3 -SCL_COEF_FILTER_TYPE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_COEF_RAM_SEL' -SCL_COEF_RAM_SEL__enumvalues = { - 0: 'SCL_COEF_RAM_SEL_0', - 1: 'SCL_COEF_RAM_SEL_1', -} -SCL_COEF_RAM_SEL_0 = 0 -SCL_COEF_RAM_SEL_1 = 1 -SCL_COEF_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SCL_SHARP_EN' -SCL_SHARP_EN__enumvalues = { - 0: 'SCL_SHARP_DISABLE', - 1: 'SCL_SHARP_ENABLE', -} -SCL_SHARP_DISABLE = 0 -SCL_SHARP_ENABLE = 1 -SCL_SHARP_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_3DLUT_30BIT_ENUM' -CMC_3DLUT_30BIT_ENUM__enumvalues = { - 0: 'CMC_3DLUT_36BIT', - 1: 'CMC_3DLUT_30BIT', -} -CMC_3DLUT_36BIT = 0 -CMC_3DLUT_30BIT = 1 -CMC_3DLUT_30BIT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_3DLUT_RAM_SEL' -CMC_3DLUT_RAM_SEL__enumvalues = { - 0: 'CMC_RAM0_ACCESS', - 1: 'CMC_RAM1_ACCESS', - 2: 'CMC_RAM2_ACCESS', - 3: 'CMC_RAM3_ACCESS', -} -CMC_RAM0_ACCESS = 0 -CMC_RAM1_ACCESS = 1 -CMC_RAM2_ACCESS = 2 -CMC_RAM3_ACCESS = 3 -CMC_3DLUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_3DLUT_SIZE_ENUM' -CMC_3DLUT_SIZE_ENUM__enumvalues = { - 0: 'CMC_3DLUT_17CUBE', - 1: 'CMC_3DLUT_9CUBE', -} -CMC_3DLUT_17CUBE = 0 -CMC_3DLUT_9CUBE = 1 -CMC_3DLUT_SIZE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_LUT_2_CONFIG_ENUM' -CMC_LUT_2_CONFIG_ENUM__enumvalues = { - 0: 'CMC_LUT_2CFG_NO_MEMORY', - 1: 'CMC_LUT_2CFG_MEMORY_A', - 2: 'CMC_LUT_2CFG_MEMORY_B', -} -CMC_LUT_2CFG_NO_MEMORY = 0 -CMC_LUT_2CFG_MEMORY_A = 1 -CMC_LUT_2CFG_MEMORY_B = 2 -CMC_LUT_2_CONFIG_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_LUT_2_MODE_ENUM' -CMC_LUT_2_MODE_ENUM__enumvalues = { - 0: 'CMC_LUT_2_MODE_BYPASS', - 1: 'CMC_LUT_2_MODE_RAMA_LUT', - 2: 'CMC_LUT_2_MODE_RAMB_LUT', -} -CMC_LUT_2_MODE_BYPASS = 0 -CMC_LUT_2_MODE_RAMA_LUT = 1 -CMC_LUT_2_MODE_RAMB_LUT = 2 -CMC_LUT_2_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_LUT_NUM_SEG' -CMC_LUT_NUM_SEG__enumvalues = { - 0: 'CMC_SEGMENTS_1', - 1: 'CMC_SEGMENTS_2', - 2: 'CMC_SEGMENTS_4', - 3: 'CMC_SEGMENTS_8', - 4: 'CMC_SEGMENTS_16', - 5: 'CMC_SEGMENTS_32', - 6: 'CMC_SEGMENTS_64', - 7: 'CMC_SEGMENTS_128', -} -CMC_SEGMENTS_1 = 0 -CMC_SEGMENTS_2 = 1 -CMC_SEGMENTS_4 = 2 -CMC_SEGMENTS_8 = 3 -CMC_SEGMENTS_16 = 4 -CMC_SEGMENTS_32 = 5 -CMC_SEGMENTS_64 = 6 -CMC_SEGMENTS_128 = 7 -CMC_LUT_NUM_SEG = ctypes.c_uint32 # enum - -# values for enumeration 'CMC_LUT_RAM_SEL' -CMC_LUT_RAM_SEL__enumvalues = { - 0: 'CMC_RAMA_ACCESS', - 1: 'CMC_RAMB_ACCESS', -} -CMC_RAMA_ACCESS = 0 -CMC_RAMB_ACCESS = 1 -CMC_LUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CM_BYPASS' -CM_BYPASS__enumvalues = { - 0: 'NON_BYPASS', - 1: 'BYPASS_EN', -} -NON_BYPASS = 0 -BYPASS_EN = 1 -CM_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'CM_COEF_FORMAT_ENUM' -CM_COEF_FORMAT_ENUM__enumvalues = { - 0: 'FIX_S2_13', - 1: 'FIX_S3_12', -} -FIX_S2_13 = 0 -FIX_S3_12 = 1 -CM_COEF_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_DATA_SIGNED' -CM_DATA_SIGNED__enumvalues = { - 0: 'UNSIGNED', - 1: 'SIGNED', -} -UNSIGNED = 0 -SIGNED = 1 -CM_DATA_SIGNED = ctypes.c_uint32 # enum - -# values for enumeration 'CM_EN' -CM_EN__enumvalues = { - 0: 'CM_DISABLE', - 1: 'CM_ENABLE', -} -CM_DISABLE = 0 -CM_ENABLE = 1 -CM_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CM_GAMMA_LUT_MODE_ENUM' -CM_GAMMA_LUT_MODE_ENUM__enumvalues = { - 0: 'BYPASS', - 1: 'RESERVED_1', - 2: 'RAM_LUT', - 3: 'RESERVED_3', -} -BYPASS = 0 -RESERVED_1 = 1 -RAM_LUT = 2 -RESERVED_3 = 3 -CM_GAMMA_LUT_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_GAMMA_LUT_PWL_DISABLE_ENUM' -CM_GAMMA_LUT_PWL_DISABLE_ENUM__enumvalues = { - 0: 'ENABLE_PWL', - 1: 'DISABLE_PWL', -} -ENABLE_PWL = 0 -DISABLE_PWL = 1 -CM_GAMMA_LUT_PWL_DISABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_GAMMA_LUT_SEL_ENUM' -CM_GAMMA_LUT_SEL_ENUM__enumvalues = { - 0: 'RAMA', - 1: 'RAMB', -} -RAMA = 0 -RAMB = 1 -CM_GAMMA_LUT_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_GAMUT_REMAP_MODE_ENUM' -CM_GAMUT_REMAP_MODE_ENUM__enumvalues = { - 0: 'BYPASS_GAMUT', - 1: 'GAMUT_COEF', - 2: 'GAMUT_COEF_B', -} -BYPASS_GAMUT = 0 -GAMUT_COEF = 1 -GAMUT_COEF_B = 2 -CM_GAMUT_REMAP_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_2_CONFIG_ENUM' -CM_LUT_2_CONFIG_ENUM__enumvalues = { - 0: 'LUT_2CFG_NO_MEMORY', - 1: 'LUT_2CFG_MEMORY_A', - 2: 'LUT_2CFG_MEMORY_B', -} -LUT_2CFG_NO_MEMORY = 0 -LUT_2CFG_MEMORY_A = 1 -LUT_2CFG_MEMORY_B = 2 -CM_LUT_2_CONFIG_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_2_MODE_ENUM' -CM_LUT_2_MODE_ENUM__enumvalues = { - 0: 'LUT_2_MODE_BYPASS', - 1: 'LUT_2_MODE_RAMA_LUT', - 2: 'LUT_2_MODE_RAMB_LUT', -} -LUT_2_MODE_BYPASS = 0 -LUT_2_MODE_RAMA_LUT = 1 -LUT_2_MODE_RAMB_LUT = 2 -CM_LUT_2_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_4_CONFIG_ENUM' -CM_LUT_4_CONFIG_ENUM__enumvalues = { - 0: 'LUT_4CFG_NO_MEMORY', - 1: 'LUT_4CFG_ROM_A', - 2: 'LUT_4CFG_ROM_B', - 3: 'LUT_4CFG_MEMORY_A', - 4: 'LUT_4CFG_MEMORY_B', -} -LUT_4CFG_NO_MEMORY = 0 -LUT_4CFG_ROM_A = 1 -LUT_4CFG_ROM_B = 2 -LUT_4CFG_MEMORY_A = 3 -LUT_4CFG_MEMORY_B = 4 -CM_LUT_4_CONFIG_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_4_MODE_ENUM' -CM_LUT_4_MODE_ENUM__enumvalues = { - 0: 'LUT_4_MODE_BYPASS', - 1: 'LUT_4_MODE_ROMA_LUT', - 2: 'LUT_4_MODE_ROMB_LUT', - 3: 'LUT_4_MODE_RAMA_LUT', - 4: 'LUT_4_MODE_RAMB_LUT', -} -LUT_4_MODE_BYPASS = 0 -LUT_4_MODE_ROMA_LUT = 1 -LUT_4_MODE_ROMB_LUT = 2 -LUT_4_MODE_RAMA_LUT = 3 -LUT_4_MODE_RAMB_LUT = 4 -CM_LUT_4_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_CONFIG_MODE' -CM_LUT_CONFIG_MODE__enumvalues = { - 0: 'DIFFERENT_RGB', - 1: 'ALL_USE_R', -} -DIFFERENT_RGB = 0 -ALL_USE_R = 1 -CM_LUT_CONFIG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_NUM_SEG' -CM_LUT_NUM_SEG__enumvalues = { - 0: 'SEGMENTS_1', - 1: 'SEGMENTS_2', - 2: 'SEGMENTS_4', - 3: 'SEGMENTS_8', - 4: 'SEGMENTS_16', - 5: 'SEGMENTS_32', - 6: 'SEGMENTS_64', - 7: 'SEGMENTS_128', -} -SEGMENTS_1 = 0 -SEGMENTS_2 = 1 -SEGMENTS_4 = 2 -SEGMENTS_8 = 3 -SEGMENTS_16 = 4 -SEGMENTS_32 = 5 -SEGMENTS_64 = 6 -SEGMENTS_128 = 7 -CM_LUT_NUM_SEG = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_RAM_SEL' -CM_LUT_RAM_SEL__enumvalues = { - 0: 'RAMA_ACCESS', - 1: 'RAMB_ACCESS', -} -RAMA_ACCESS = 0 -RAMB_ACCESS = 1 -CM_LUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_READ_COLOR_SEL' -CM_LUT_READ_COLOR_SEL__enumvalues = { - 0: 'BLUE_LUT', - 1: 'GREEN_LUT', - 2: 'RED_LUT', -} -BLUE_LUT = 0 -GREEN_LUT = 1 -RED_LUT = 2 -CM_LUT_READ_COLOR_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CM_LUT_READ_DBG' -CM_LUT_READ_DBG__enumvalues = { - 0: 'DISABLE_DEBUG', - 1: 'ENABLE_DEBUG', -} -DISABLE_DEBUG = 0 -ENABLE_DEBUG = 1 -CM_LUT_READ_DBG = ctypes.c_uint32 # enum - -# values for enumeration 'CM_PENDING' -CM_PENDING__enumvalues = { - 0: 'CM_NOT_PENDING', - 1: 'CM_YES_PENDING', -} -CM_NOT_PENDING = 0 -CM_YES_PENDING = 1 -CM_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'CM_POST_CSC_MODE_ENUM' -CM_POST_CSC_MODE_ENUM__enumvalues = { - 0: 'BYPASS_POST_CSC', - 1: 'COEF_POST_CSC', - 2: 'COEF_POST_CSC_B', -} -BYPASS_POST_CSC = 0 -COEF_POST_CSC = 1 -COEF_POST_CSC_B = 2 -CM_POST_CSC_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CM_WRITE_BASE_ONLY' -CM_WRITE_BASE_ONLY__enumvalues = { - 0: 'WRITE_BOTH', - 1: 'WRITE_BASE_ONLY', -} -WRITE_BOTH = 0 -WRITE_BASE_ONLY = 1 -CM_WRITE_BASE_ONLY = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_CUR_SEL' -CRC_CUR_SEL__enumvalues = { - 0: 'CRC_CUR_0', - 1: 'CRC_CUR_1', -} -CRC_CUR_0 = 0 -CRC_CUR_1 = 1 -CRC_CUR_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_INTERLACE_SEL' -CRC_INTERLACE_SEL__enumvalues = { - 0: 'CRC_INTERLACE_0', - 1: 'CRC_INTERLACE_1', - 2: 'CRC_INTERLACE_2', - 3: 'CRC_INTERLACE_3', -} -CRC_INTERLACE_0 = 0 -CRC_INTERLACE_1 = 1 -CRC_INTERLACE_2 = 2 -CRC_INTERLACE_3 = 3 -CRC_INTERLACE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_IN_CUR_SEL' -CRC_IN_CUR_SEL__enumvalues = { - 0: 'CRC_IN_CUR_0', - 1: 'CRC_IN_CUR_1', - 2: 'CRC_IN_CUR_2', - 3: 'CRC_IN_CUR_3', -} -CRC_IN_CUR_0 = 0 -CRC_IN_CUR_1 = 1 -CRC_IN_CUR_2 = 2 -CRC_IN_CUR_3 = 3 -CRC_IN_CUR_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_IN_PIX_SEL' -CRC_IN_PIX_SEL__enumvalues = { - 0: 'CRC_IN_PIX_0', - 1: 'CRC_IN_PIX_1', - 2: 'CRC_IN_PIX_2', - 3: 'CRC_IN_PIX_3', - 4: 'CRC_IN_PIX_4', - 5: 'CRC_IN_PIX_5', - 6: 'CRC_IN_PIX_6', - 7: 'CRC_IN_PIX_7', -} -CRC_IN_PIX_0 = 0 -CRC_IN_PIX_1 = 1 -CRC_IN_PIX_2 = 2 -CRC_IN_PIX_3 = 3 -CRC_IN_PIX_4 = 4 -CRC_IN_PIX_5 = 5 -CRC_IN_PIX_6 = 6 -CRC_IN_PIX_7 = 7 -CRC_IN_PIX_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_SRC_SEL' -CRC_SRC_SEL__enumvalues = { - 0: 'CRC_SRC_0', - 1: 'CRC_SRC_1', - 2: 'CRC_SRC_2', - 3: 'CRC_SRC_3', -} -CRC_SRC_0 = 0 -CRC_SRC_1 = 1 -CRC_SRC_2 = 2 -CRC_SRC_3 = 3 -CRC_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CRC_STEREO_SEL' -CRC_STEREO_SEL__enumvalues = { - 0: 'CRC_STEREO_0', - 1: 'CRC_STEREO_1', - 2: 'CRC_STEREO_2', - 3: 'CRC_STEREO_3', -} -CRC_STEREO_0 = 0 -CRC_STEREO_1 = 1 -CRC_STEREO_2 = 2 -CRC_STEREO_3 = 3 -CRC_STEREO_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TEST_CLK_SEL' -TEST_CLK_SEL__enumvalues = { - 0: 'TEST_CLK_SEL_0', - 1: 'TEST_CLK_SEL_1', - 2: 'TEST_CLK_SEL_2', - 3: 'TEST_CLK_SEL_3', - 4: 'TEST_CLK_SEL_4', - 5: 'TEST_CLK_SEL_5', - 6: 'TEST_CLK_SEL_6', - 7: 'TEST_CLK_SEL_7', -} -TEST_CLK_SEL_0 = 0 -TEST_CLK_SEL_1 = 1 -TEST_CLK_SEL_2 = 2 -TEST_CLK_SEL_3 = 3 -TEST_CLK_SEL_4 = 4 -TEST_CLK_SEL_5 = 5 -TEST_CLK_SEL_6 = 6 -TEST_CLK_SEL_7 = 7 -TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_ACTIVE' -PERFCOUNTER_ACTIVE__enumvalues = { - 0: 'PERFCOUNTER_IS_IDLE', - 1: 'PERFCOUNTER_IS_ACTIVE', -} -PERFCOUNTER_IS_IDLE = 0 -PERFCOUNTER_IS_ACTIVE = 1 -PERFCOUNTER_ACTIVE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT0_STATE' -PERFCOUNTER_CNT0_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT0_STATE_RESET', - 1: 'PERFCOUNTER_CNT0_STATE_START', - 2: 'PERFCOUNTER_CNT0_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT0_STATE_HW', -} -PERFCOUNTER_CNT0_STATE_RESET = 0 -PERFCOUNTER_CNT0_STATE_START = 1 -PERFCOUNTER_CNT0_STATE_FREEZE = 2 -PERFCOUNTER_CNT0_STATE_HW = 3 -PERFCOUNTER_CNT0_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT1_STATE' -PERFCOUNTER_CNT1_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT1_STATE_RESET', - 1: 'PERFCOUNTER_CNT1_STATE_START', - 2: 'PERFCOUNTER_CNT1_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT1_STATE_HW', -} -PERFCOUNTER_CNT1_STATE_RESET = 0 -PERFCOUNTER_CNT1_STATE_START = 1 -PERFCOUNTER_CNT1_STATE_FREEZE = 2 -PERFCOUNTER_CNT1_STATE_HW = 3 -PERFCOUNTER_CNT1_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT2_STATE' -PERFCOUNTER_CNT2_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT2_STATE_RESET', - 1: 'PERFCOUNTER_CNT2_STATE_START', - 2: 'PERFCOUNTER_CNT2_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT2_STATE_HW', -} -PERFCOUNTER_CNT2_STATE_RESET = 0 -PERFCOUNTER_CNT2_STATE_START = 1 -PERFCOUNTER_CNT2_STATE_FREEZE = 2 -PERFCOUNTER_CNT2_STATE_HW = 3 -PERFCOUNTER_CNT2_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT3_STATE' -PERFCOUNTER_CNT3_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT3_STATE_RESET', - 1: 'PERFCOUNTER_CNT3_STATE_START', - 2: 'PERFCOUNTER_CNT3_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT3_STATE_HW', -} -PERFCOUNTER_CNT3_STATE_RESET = 0 -PERFCOUNTER_CNT3_STATE_START = 1 -PERFCOUNTER_CNT3_STATE_FREEZE = 2 -PERFCOUNTER_CNT3_STATE_HW = 3 -PERFCOUNTER_CNT3_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT4_STATE' -PERFCOUNTER_CNT4_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT4_STATE_RESET', - 1: 'PERFCOUNTER_CNT4_STATE_START', - 2: 'PERFCOUNTER_CNT4_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT4_STATE_HW', -} -PERFCOUNTER_CNT4_STATE_RESET = 0 -PERFCOUNTER_CNT4_STATE_START = 1 -PERFCOUNTER_CNT4_STATE_FREEZE = 2 -PERFCOUNTER_CNT4_STATE_HW = 3 -PERFCOUNTER_CNT4_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT5_STATE' -PERFCOUNTER_CNT5_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT5_STATE_RESET', - 1: 'PERFCOUNTER_CNT5_STATE_START', - 2: 'PERFCOUNTER_CNT5_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT5_STATE_HW', -} -PERFCOUNTER_CNT5_STATE_RESET = 0 -PERFCOUNTER_CNT5_STATE_START = 1 -PERFCOUNTER_CNT5_STATE_FREEZE = 2 -PERFCOUNTER_CNT5_STATE_HW = 3 -PERFCOUNTER_CNT5_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT6_STATE' -PERFCOUNTER_CNT6_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT6_STATE_RESET', - 1: 'PERFCOUNTER_CNT6_STATE_START', - 2: 'PERFCOUNTER_CNT6_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT6_STATE_HW', -} -PERFCOUNTER_CNT6_STATE_RESET = 0 -PERFCOUNTER_CNT6_STATE_START = 1 -PERFCOUNTER_CNT6_STATE_FREEZE = 2 -PERFCOUNTER_CNT6_STATE_HW = 3 -PERFCOUNTER_CNT6_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNT7_STATE' -PERFCOUNTER_CNT7_STATE__enumvalues = { - 0: 'PERFCOUNTER_CNT7_STATE_RESET', - 1: 'PERFCOUNTER_CNT7_STATE_START', - 2: 'PERFCOUNTER_CNT7_STATE_FREEZE', - 3: 'PERFCOUNTER_CNT7_STATE_HW', -} -PERFCOUNTER_CNT7_STATE_RESET = 0 -PERFCOUNTER_CNT7_STATE_START = 1 -PERFCOUNTER_CNT7_STATE_FREEZE = 2 -PERFCOUNTER_CNT7_STATE_HW = 3 -PERFCOUNTER_CNT7_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNTL_SEL' -PERFCOUNTER_CNTL_SEL__enumvalues = { - 0: 'PERFCOUNTER_CNTL_SEL_0', - 1: 'PERFCOUNTER_CNTL_SEL_1', - 2: 'PERFCOUNTER_CNTL_SEL_2', - 3: 'PERFCOUNTER_CNTL_SEL_3', - 4: 'PERFCOUNTER_CNTL_SEL_4', - 5: 'PERFCOUNTER_CNTL_SEL_5', - 6: 'PERFCOUNTER_CNTL_SEL_6', - 7: 'PERFCOUNTER_CNTL_SEL_7', -} -PERFCOUNTER_CNTL_SEL_0 = 0 -PERFCOUNTER_CNTL_SEL_1 = 1 -PERFCOUNTER_CNTL_SEL_2 = 2 -PERFCOUNTER_CNTL_SEL_3 = 3 -PERFCOUNTER_CNTL_SEL_4 = 4 -PERFCOUNTER_CNTL_SEL_5 = 5 -PERFCOUNTER_CNTL_SEL_6 = 6 -PERFCOUNTER_CNTL_SEL_7 = 7 -PERFCOUNTER_CNTL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CNTOFF_START_DIS' -PERFCOUNTER_CNTOFF_START_DIS__enumvalues = { - 0: 'PERFCOUNTER_CNTOFF_START_ENABLE', - 1: 'PERFCOUNTER_CNTOFF_START_DISABLE', -} -PERFCOUNTER_CNTOFF_START_ENABLE = 0 -PERFCOUNTER_CNTOFF_START_DISABLE = 1 -PERFCOUNTER_CNTOFF_START_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_COUNTED_VALUE_TYPE' -PERFCOUNTER_COUNTED_VALUE_TYPE__enumvalues = { - 0: 'PERFCOUNTER_COUNTED_VALUE_TYPE_ACC', - 1: 'PERFCOUNTER_COUNTED_VALUE_TYPE_MAX', - 2: 'PERFCOUNTER_COUNTED_VALUE_TYPE_MIN', -} -PERFCOUNTER_COUNTED_VALUE_TYPE_ACC = 0 -PERFCOUNTER_COUNTED_VALUE_TYPE_MAX = 1 -PERFCOUNTER_COUNTED_VALUE_TYPE_MIN = 2 -PERFCOUNTER_COUNTED_VALUE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_CVALUE_SEL' -PERFCOUNTER_CVALUE_SEL__enumvalues = { - 0: 'PERFCOUNTER_CVALUE_SEL_47_0', - 1: 'PERFCOUNTER_CVALUE_SEL_15_0', - 2: 'PERFCOUNTER_CVALUE_SEL_31_16', - 3: 'PERFCOUNTER_CVALUE_SEL_47_32', - 4: 'PERFCOUNTER_CVALUE_SEL_11_0', - 5: 'PERFCOUNTER_CVALUE_SEL_23_12', - 6: 'PERFCOUNTER_CVALUE_SEL_35_24', - 7: 'PERFCOUNTER_CVALUE_SEL_47_36', -} -PERFCOUNTER_CVALUE_SEL_47_0 = 0 -PERFCOUNTER_CVALUE_SEL_15_0 = 1 -PERFCOUNTER_CVALUE_SEL_31_16 = 2 -PERFCOUNTER_CVALUE_SEL_47_32 = 3 -PERFCOUNTER_CVALUE_SEL_11_0 = 4 -PERFCOUNTER_CVALUE_SEL_23_12 = 5 -PERFCOUNTER_CVALUE_SEL_35_24 = 6 -PERFCOUNTER_CVALUE_SEL_47_36 = 7 -PERFCOUNTER_CVALUE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_HW_CNTL_SEL' -PERFCOUNTER_HW_CNTL_SEL__enumvalues = { - 0: 'PERFCOUNTER_HW_CNTL_SEL_RUNEN', - 1: 'PERFCOUNTER_HW_CNTL_SEL_CNTOFF', -} -PERFCOUNTER_HW_CNTL_SEL_RUNEN = 0 -PERFCOUNTER_HW_CNTL_SEL_CNTOFF = 1 -PERFCOUNTER_HW_CNTL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_HW_STOP1_SEL' -PERFCOUNTER_HW_STOP1_SEL__enumvalues = { - 0: 'PERFCOUNTER_HW_STOP1_0', - 1: 'PERFCOUNTER_HW_STOP1_1', -} -PERFCOUNTER_HW_STOP1_0 = 0 -PERFCOUNTER_HW_STOP1_1 = 1 -PERFCOUNTER_HW_STOP1_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_HW_STOP2_SEL' -PERFCOUNTER_HW_STOP2_SEL__enumvalues = { - 0: 'PERFCOUNTER_HW_STOP2_0', - 1: 'PERFCOUNTER_HW_STOP2_1', -} -PERFCOUNTER_HW_STOP2_0 = 0 -PERFCOUNTER_HW_STOP2_1 = 1 -PERFCOUNTER_HW_STOP2_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_INC_MODE' -PERFCOUNTER_INC_MODE__enumvalues = { - 0: 'PERFCOUNTER_INC_MODE_MULTI_BIT', - 1: 'PERFCOUNTER_INC_MODE_BOTH_EDGE', - 2: 'PERFCOUNTER_INC_MODE_LSB', - 3: 'PERFCOUNTER_INC_MODE_POS_EDGE', - 4: 'PERFCOUNTER_INC_MODE_NEG_EDGE', -} -PERFCOUNTER_INC_MODE_MULTI_BIT = 0 -PERFCOUNTER_INC_MODE_BOTH_EDGE = 1 -PERFCOUNTER_INC_MODE_LSB = 2 -PERFCOUNTER_INC_MODE_POS_EDGE = 3 -PERFCOUNTER_INC_MODE_NEG_EDGE = 4 -PERFCOUNTER_INC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_INT_EN' -PERFCOUNTER_INT_EN__enumvalues = { - 0: 'PERFCOUNTER_INT_DISABLE', - 1: 'PERFCOUNTER_INT_ENABLE', -} -PERFCOUNTER_INT_DISABLE = 0 -PERFCOUNTER_INT_ENABLE = 1 -PERFCOUNTER_INT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_INT_TYPE' -PERFCOUNTER_INT_TYPE__enumvalues = { - 0: 'PERFCOUNTER_INT_TYPE_LEVEL', - 1: 'PERFCOUNTER_INT_TYPE_PULSE', -} -PERFCOUNTER_INT_TYPE_LEVEL = 0 -PERFCOUNTER_INT_TYPE_PULSE = 1 -PERFCOUNTER_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_OFF_MASK' -PERFCOUNTER_OFF_MASK__enumvalues = { - 0: 'PERFCOUNTER_OFF_MASK_DISABLE', - 1: 'PERFCOUNTER_OFF_MASK_ENABLE', -} -PERFCOUNTER_OFF_MASK_DISABLE = 0 -PERFCOUNTER_OFF_MASK_ENABLE = 1 -PERFCOUNTER_OFF_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_RESTART_EN' -PERFCOUNTER_RESTART_EN__enumvalues = { - 0: 'PERFCOUNTER_RESTART_DISABLE', - 1: 'PERFCOUNTER_RESTART_ENABLE', -} -PERFCOUNTER_RESTART_DISABLE = 0 -PERFCOUNTER_RESTART_ENABLE = 1 -PERFCOUNTER_RESTART_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_RUNEN_MODE' -PERFCOUNTER_RUNEN_MODE__enumvalues = { - 0: 'PERFCOUNTER_RUNEN_MODE_LEVEL', - 1: 'PERFCOUNTER_RUNEN_MODE_EDGE', -} -PERFCOUNTER_RUNEN_MODE_LEVEL = 0 -PERFCOUNTER_RUNEN_MODE_EDGE = 1 -PERFCOUNTER_RUNEN_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL0' -PERFCOUNTER_STATE_SEL0__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL0_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL0_LOCAL', -} -PERFCOUNTER_STATE_SEL0_GLOBAL = 0 -PERFCOUNTER_STATE_SEL0_LOCAL = 1 -PERFCOUNTER_STATE_SEL0 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL1' -PERFCOUNTER_STATE_SEL1__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL1_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL1_LOCAL', -} -PERFCOUNTER_STATE_SEL1_GLOBAL = 0 -PERFCOUNTER_STATE_SEL1_LOCAL = 1 -PERFCOUNTER_STATE_SEL1 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL2' -PERFCOUNTER_STATE_SEL2__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL2_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL2_LOCAL', -} -PERFCOUNTER_STATE_SEL2_GLOBAL = 0 -PERFCOUNTER_STATE_SEL2_LOCAL = 1 -PERFCOUNTER_STATE_SEL2 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL3' -PERFCOUNTER_STATE_SEL3__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL3_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL3_LOCAL', -} -PERFCOUNTER_STATE_SEL3_GLOBAL = 0 -PERFCOUNTER_STATE_SEL3_LOCAL = 1 -PERFCOUNTER_STATE_SEL3 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL4' -PERFCOUNTER_STATE_SEL4__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL4_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL4_LOCAL', -} -PERFCOUNTER_STATE_SEL4_GLOBAL = 0 -PERFCOUNTER_STATE_SEL4_LOCAL = 1 -PERFCOUNTER_STATE_SEL4 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL5' -PERFCOUNTER_STATE_SEL5__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL5_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL5_LOCAL', -} -PERFCOUNTER_STATE_SEL5_GLOBAL = 0 -PERFCOUNTER_STATE_SEL5_LOCAL = 1 -PERFCOUNTER_STATE_SEL5 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL6' -PERFCOUNTER_STATE_SEL6__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL6_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL6_LOCAL', -} -PERFCOUNTER_STATE_SEL6_GLOBAL = 0 -PERFCOUNTER_STATE_SEL6_LOCAL = 1 -PERFCOUNTER_STATE_SEL6 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFCOUNTER_STATE_SEL7' -PERFCOUNTER_STATE_SEL7__enumvalues = { - 0: 'PERFCOUNTER_STATE_SEL7_GLOBAL', - 1: 'PERFCOUNTER_STATE_SEL7_LOCAL', -} -PERFCOUNTER_STATE_SEL7_GLOBAL = 0 -PERFCOUNTER_STATE_SEL7_LOCAL = 1 -PERFCOUNTER_STATE_SEL7 = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_CNTOFF_AND_OR' -PERFMON_CNTOFF_AND_OR__enumvalues = { - 0: 'PERFMON_CNTOFF_OR', - 1: 'PERFMON_CNTOFF_AND', -} -PERFMON_CNTOFF_OR = 0 -PERFMON_CNTOFF_AND = 1 -PERFMON_CNTOFF_AND_OR = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_CNTOFF_INT_EN' -PERFMON_CNTOFF_INT_EN__enumvalues = { - 0: 'PERFMON_CNTOFF_INT_DISABLE', - 1: 'PERFMON_CNTOFF_INT_ENABLE', -} -PERFMON_CNTOFF_INT_DISABLE = 0 -PERFMON_CNTOFF_INT_ENABLE = 1 -PERFMON_CNTOFF_INT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_CNTOFF_INT_TYPE' -PERFMON_CNTOFF_INT_TYPE__enumvalues = { - 0: 'PERFMON_CNTOFF_INT_TYPE_LEVEL', - 1: 'PERFMON_CNTOFF_INT_TYPE_PULSE', -} -PERFMON_CNTOFF_INT_TYPE_LEVEL = 0 -PERFMON_CNTOFF_INT_TYPE_PULSE = 1 -PERFMON_CNTOFF_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'PERFMON_STATE' -PERFMON_STATE__enumvalues = { - 0: 'PERFMON_STATE_RESET', - 1: 'PERFMON_STATE_START', - 2: 'PERFMON_STATE_FREEZE', - 3: 'PERFMON_STATE_HW', -} -PERFMON_STATE_RESET = 0 -PERFMON_STATE_START = 1 -PERFMON_STATE_FREEZE = 2 -PERFMON_STATE_HW = 3 -PERFMON_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'BIGK_FRAGMENT_SIZE' -BIGK_FRAGMENT_SIZE__enumvalues = { - 0: 'VM_PG_SIZE_4KB', - 1: 'VM_PG_SIZE_8KB', - 2: 'VM_PG_SIZE_16KB', - 3: 'VM_PG_SIZE_32KB', - 4: 'VM_PG_SIZE_64KB', - 5: 'VM_PG_SIZE_128KB', - 6: 'VM_PG_SIZE_256KB', - 7: 'VM_PG_SIZE_512KB', - 8: 'VM_PG_SIZE_1024KB', - 9: 'VM_PG_SIZE_2048KB', -} -VM_PG_SIZE_4KB = 0 -VM_PG_SIZE_8KB = 1 -VM_PG_SIZE_16KB = 2 -VM_PG_SIZE_32KB = 3 -VM_PG_SIZE_64KB = 4 -VM_PG_SIZE_128KB = 5 -VM_PG_SIZE_256KB = 6 -VM_PG_SIZE_512KB = 7 -VM_PG_SIZE_1024KB = 8 -VM_PG_SIZE_2048KB = 9 -BIGK_FRAGMENT_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'CHUNK_SIZE' -CHUNK_SIZE__enumvalues = { - 0: 'CHUNK_SIZE_1KB', - 1: 'CHUNK_SIZE_2KB', - 2: 'CHUNK_SIZE_4KB', - 3: 'CHUNK_SIZE_8KB', - 4: 'CHUNK_SIZE_16KB', - 5: 'CHUNK_SIZE_32KB', - 6: 'CHUNK_SIZE_64KB', -} -CHUNK_SIZE_1KB = 0 -CHUNK_SIZE_2KB = 1 -CHUNK_SIZE_4KB = 2 -CHUNK_SIZE_8KB = 3 -CHUNK_SIZE_16KB = 4 -CHUNK_SIZE_32KB = 5 -CHUNK_SIZE_64KB = 6 -CHUNK_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'COMPAT_LEVEL' -COMPAT_LEVEL__enumvalues = { - 0: 'ADDR_GEN_ZERO', - 1: 'ADDR_GEN_ONE', - 2: 'ADDR_GEN_TWO', - 3: 'ADDR_RESERVED', -} -ADDR_GEN_ZERO = 0 -ADDR_GEN_ONE = 1 -ADDR_GEN_TWO = 2 -ADDR_RESERVED = 3 -COMPAT_LEVEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPTE_GROUP_SIZE' -DPTE_GROUP_SIZE__enumvalues = { - 0: 'DPTE_GROUP_SIZE_64B', - 1: 'DPTE_GROUP_SIZE_128B', - 2: 'DPTE_GROUP_SIZE_256B', - 3: 'DPTE_GROUP_SIZE_512B', - 4: 'DPTE_GROUP_SIZE_1024B', - 5: 'DPTE_GROUP_SIZE_2048B', -} -DPTE_GROUP_SIZE_64B = 0 -DPTE_GROUP_SIZE_128B = 1 -DPTE_GROUP_SIZE_256B = 2 -DPTE_GROUP_SIZE_512B = 3 -DPTE_GROUP_SIZE_1024B = 4 -DPTE_GROUP_SIZE_2048B = 5 -DPTE_GROUP_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'FORCE_ONE_ROW_FOR_FRAME' -FORCE_ONE_ROW_FOR_FRAME__enumvalues = { - 0: 'FORCE_ONE_ROW_FOR_FRAME_0', - 1: 'FORCE_ONE_ROW_FOR_FRAME_1', -} -FORCE_ONE_ROW_FOR_FRAME_0 = 0 -FORCE_ONE_ROW_FOR_FRAME_1 = 1 -FORCE_ONE_ROW_FOR_FRAME = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_BLANK_EN' -HUBP_BLANK_EN__enumvalues = { - 0: 'HUBP_BLANK_SW_DEASSERT', - 1: 'HUBP_BLANK_SW_ASSERT', -} -HUBP_BLANK_SW_DEASSERT = 0 -HUBP_BLANK_SW_ASSERT = 1 -HUBP_BLANK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_IN_BLANK' -HUBP_IN_BLANK__enumvalues = { - 0: 'HUBP_IN_ACTIVE', - 1: 'HUBP_IN_VBLANK', -} -HUBP_IN_ACTIVE = 0 -HUBP_IN_VBLANK = 1 -HUBP_IN_BLANK = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_MEASURE_WIN_MODE_DCFCLK' -HUBP_MEASURE_WIN_MODE_DCFCLK__enumvalues = { - 0: 'HUBP_MEASURE_WIN_MODE_DCFCLK_0', - 1: 'HUBP_MEASURE_WIN_MODE_DCFCLK_1', - 2: 'HUBP_MEASURE_WIN_MODE_DCFCLK_2', - 3: 'HUBP_MEASURE_WIN_MODE_DCFCLK_3', -} -HUBP_MEASURE_WIN_MODE_DCFCLK_0 = 0 -HUBP_MEASURE_WIN_MODE_DCFCLK_1 = 1 -HUBP_MEASURE_WIN_MODE_DCFCLK_2 = 2 -HUBP_MEASURE_WIN_MODE_DCFCLK_3 = 3 -HUBP_MEASURE_WIN_MODE_DCFCLK = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_NO_OUTSTANDING_REQ' -HUBP_NO_OUTSTANDING_REQ__enumvalues = { - 0: 'OUTSTANDING_REQ', - 1: 'NO_OUTSTANDING_REQ', -} -OUTSTANDING_REQ = 0 -NO_OUTSTANDING_REQ = 1 -HUBP_NO_OUTSTANDING_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_SOFT_RESET' -HUBP_SOFT_RESET__enumvalues = { - 0: 'HUBP_SOFT_RESET_ON', - 1: 'HUBP_SOFT_RESET_OFF', -} -HUBP_SOFT_RESET_ON = 0 -HUBP_SOFT_RESET_OFF = 1 -HUBP_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_TTU_DISABLE' -HUBP_TTU_DISABLE__enumvalues = { - 0: 'HUBP_TTU_ENABLED', - 1: 'HUBP_TTU_DISABLED', -} -HUBP_TTU_ENABLED = 0 -HUBP_TTU_DISABLED = 1 -HUBP_TTU_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_VREADY_AT_OR_AFTER_VSYNC' -HUBP_VREADY_AT_OR_AFTER_VSYNC__enumvalues = { - 0: 'VREADY_BEFORE_VSYNC', - 1: 'VREADY_AT_OR_AFTER_VSYNC', -} -VREADY_BEFORE_VSYNC = 0 -VREADY_AT_OR_AFTER_VSYNC = 1 -HUBP_VREADY_AT_OR_AFTER_VSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'HUBP_VTG_SEL' -HUBP_VTG_SEL__enumvalues = { - 0: 'VTG_SEL_0', - 1: 'VTG_SEL_1', - 2: 'VTG_SEL_2', - 3: 'VTG_SEL_3', - 4: 'VTG_SEL_4', - 5: 'VTG_SEL_5', -} -VTG_SEL_0 = 0 -VTG_SEL_1 = 1 -VTG_SEL_2 = 2 -VTG_SEL_3 = 3 -VTG_SEL_4 = 4 -VTG_SEL_5 = 5 -HUBP_VTG_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'H_MIRROR_EN' -H_MIRROR_EN__enumvalues = { - 0: 'HW_MIRRORING_DISABLE', - 1: 'HW_MIRRORING_ENABLE', -} -HW_MIRRORING_DISABLE = 0 -HW_MIRRORING_ENABLE = 1 -H_MIRROR_EN = ctypes.c_uint32 # enum - -# values for enumeration 'LEGACY_PIPE_INTERLEAVE' -LEGACY_PIPE_INTERLEAVE__enumvalues = { - 0: 'LEGACY_PIPE_INTERLEAVE_256B', - 1: 'LEGACY_PIPE_INTERLEAVE_512B', -} -LEGACY_PIPE_INTERLEAVE_256B = 0 -LEGACY_PIPE_INTERLEAVE_512B = 1 -LEGACY_PIPE_INTERLEAVE = ctypes.c_uint32 # enum - -# values for enumeration 'META_CHUNK_SIZE' -META_CHUNK_SIZE__enumvalues = { - 0: 'META_CHUNK_SIZE_1KB', - 1: 'META_CHUNK_SIZE_2KB', - 2: 'META_CHUNK_SIZE_4KB', - 3: 'META_CHUNK_SIZE_8KB', -} -META_CHUNK_SIZE_1KB = 0 -META_CHUNK_SIZE_2KB = 1 -META_CHUNK_SIZE_4KB = 2 -META_CHUNK_SIZE_8KB = 3 -META_CHUNK_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'META_LINEAR' -META_LINEAR__enumvalues = { - 0: 'META_SURF_TILED', - 1: 'META_SURF_LINEAR', -} -META_SURF_TILED = 0 -META_SURF_LINEAR = 1 -META_LINEAR = ctypes.c_uint32 # enum - -# values for enumeration 'MIN_CHUNK_SIZE' -MIN_CHUNK_SIZE__enumvalues = { - 0: 'NO_MIN_CHUNK_SIZE', - 1: 'MIN_CHUNK_SIZE_256B', - 2: 'MIN_CHUNK_SIZE_512B', - 3: 'MIN_CHUNK_SIZE_1024B', -} -NO_MIN_CHUNK_SIZE = 0 -MIN_CHUNK_SIZE_256B = 1 -MIN_CHUNK_SIZE_512B = 2 -MIN_CHUNK_SIZE_1024B = 3 -MIN_CHUNK_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'MIN_META_CHUNK_SIZE' -MIN_META_CHUNK_SIZE__enumvalues = { - 0: 'NO_MIN_META_CHUNK_SIZE', - 1: 'MIN_META_CHUNK_SIZE_64B', - 2: 'MIN_META_CHUNK_SIZE_128B', - 3: 'MIN_META_CHUNK_SIZE_256B', -} -NO_MIN_META_CHUNK_SIZE = 0 -MIN_META_CHUNK_SIZE_64B = 1 -MIN_META_CHUNK_SIZE_128B = 2 -MIN_META_CHUNK_SIZE_256B = 3 -MIN_META_CHUNK_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_ALIGNED' -PIPE_ALIGNED__enumvalues = { - 0: 'PIPE_UNALIGNED_SURF', - 1: 'PIPE_ALIGNED_SURF', -} -PIPE_UNALIGNED_SURF = 0 -PIPE_ALIGNED_SURF = 1 -PIPE_ALIGNED = ctypes.c_uint32 # enum - -# values for enumeration 'PTE_BUFFER_MODE' -PTE_BUFFER_MODE__enumvalues = { - 0: 'PTE_BUFFER_MODE_0', - 1: 'PTE_BUFFER_MODE_1', -} -PTE_BUFFER_MODE_0 = 0 -PTE_BUFFER_MODE_1 = 1 -PTE_BUFFER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PTE_ROW_HEIGHT_LINEAR' -PTE_ROW_HEIGHT_LINEAR__enumvalues = { - 0: 'PTE_ROW_HEIGHT_LINEAR_8L', - 1: 'PTE_ROW_HEIGHT_LINEAR_16L', - 2: 'PTE_ROW_HEIGHT_LINEAR_32L', - 3: 'PTE_ROW_HEIGHT_LINEAR_64L', - 4: 'PTE_ROW_HEIGHT_LINEAR_128L', - 5: 'PTE_ROW_HEIGHT_LINEAR_256L', - 6: 'PTE_ROW_HEIGHT_LINEAR_512L', - 7: 'PTE_ROW_HEIGHT_LINEAR_1024L', -} -PTE_ROW_HEIGHT_LINEAR_8L = 0 -PTE_ROW_HEIGHT_LINEAR_16L = 1 -PTE_ROW_HEIGHT_LINEAR_32L = 2 -PTE_ROW_HEIGHT_LINEAR_64L = 3 -PTE_ROW_HEIGHT_LINEAR_128L = 4 -PTE_ROW_HEIGHT_LINEAR_256L = 5 -PTE_ROW_HEIGHT_LINEAR_512L = 6 -PTE_ROW_HEIGHT_LINEAR_1024L = 7 -PTE_ROW_HEIGHT_LINEAR = ctypes.c_uint32 # enum - -# values for enumeration 'ROTATION_ANGLE' -ROTATION_ANGLE__enumvalues = { - 0: 'ROTATE_0_DEGREES', - 1: 'ROTATE_90_DEGREES', - 2: 'ROTATE_180_DEGREES', - 3: 'ROTATE_270_DEGREES', -} -ROTATE_0_DEGREES = 0 -ROTATE_90_DEGREES = 1 -ROTATE_180_DEGREES = 2 -ROTATE_270_DEGREES = 3 -ROTATION_ANGLE = ctypes.c_uint32 # enum - -# values for enumeration 'SWATH_HEIGHT' -SWATH_HEIGHT__enumvalues = { - 0: 'SWATH_HEIGHT_1L', - 1: 'SWATH_HEIGHT_2L', - 2: 'SWATH_HEIGHT_4L', - 3: 'SWATH_HEIGHT_8L', - 4: 'SWATH_HEIGHT_16L', -} -SWATH_HEIGHT_1L = 0 -SWATH_HEIGHT_2L = 1 -SWATH_HEIGHT_4L = 2 -SWATH_HEIGHT_8L = 3 -SWATH_HEIGHT_16L = 4 -SWATH_HEIGHT = ctypes.c_uint32 # enum - -# values for enumeration 'USE_MALL_FOR_CURSOR' -USE_MALL_FOR_CURSOR__enumvalues = { - 0: 'USE_MALL_FOR_CURSOR_0', - 1: 'USE_MALL_FOR_CURSOR_1', -} -USE_MALL_FOR_CURSOR_0 = 0 -USE_MALL_FOR_CURSOR_1 = 1 -USE_MALL_FOR_CURSOR = ctypes.c_uint32 # enum - -# values for enumeration 'USE_MALL_FOR_PSTATE_CHANGE' -USE_MALL_FOR_PSTATE_CHANGE__enumvalues = { - 0: 'USE_MALL_FOR_PSTATE_CHANGE_0', - 1: 'USE_MALL_FOR_PSTATE_CHANGE_1', -} -USE_MALL_FOR_PSTATE_CHANGE_0 = 0 -USE_MALL_FOR_PSTATE_CHANGE_1 = 1 -USE_MALL_FOR_PSTATE_CHANGE = ctypes.c_uint32 # enum - -# values for enumeration 'USE_MALL_FOR_STATIC_SCREEN' -USE_MALL_FOR_STATIC_SCREEN__enumvalues = { - 0: 'USE_MALL_FOR_STATIC_SCREEN_0', - 1: 'USE_MALL_FOR_STATIC_SCREEN_1', -} -USE_MALL_FOR_STATIC_SCREEN_0 = 0 -USE_MALL_FOR_STATIC_SCREEN_1 = 1 -USE_MALL_FOR_STATIC_SCREEN = ctypes.c_uint32 # enum - -# values for enumeration 'VMPG_SIZE' -VMPG_SIZE__enumvalues = { - 0: 'VMPG_SIZE_4KB', - 1: 'VMPG_SIZE_64KB', -} -VMPG_SIZE_4KB = 0 -VMPG_SIZE_64KB = 1 -VMPG_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'VM_GROUP_SIZE' -VM_GROUP_SIZE__enumvalues = { - 0: 'VM_GROUP_SIZE_64B', - 1: 'VM_GROUP_SIZE_128B', - 2: 'VM_GROUP_SIZE_256B', - 3: 'VM_GROUP_SIZE_512B', - 4: 'VM_GROUP_SIZE_1024B', - 5: 'VM_GROUP_SIZE_2048B', -} -VM_GROUP_SIZE_64B = 0 -VM_GROUP_SIZE_128B = 1 -VM_GROUP_SIZE_256B = 2 -VM_GROUP_SIZE_512B = 3 -VM_GROUP_SIZE_1024B = 4 -VM_GROUP_SIZE_2048B = 5 -VM_GROUP_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'DFQ_MIN_FREE_ENTRIES' -DFQ_MIN_FREE_ENTRIES__enumvalues = { - 0: 'DFQ_MIN_FREE_ENTRIES_0', - 1: 'DFQ_MIN_FREE_ENTRIES_1', - 2: 'DFQ_MIN_FREE_ENTRIES_2', - 3: 'DFQ_MIN_FREE_ENTRIES_3', - 4: 'DFQ_MIN_FREE_ENTRIES_4', - 5: 'DFQ_MIN_FREE_ENTRIES_5', - 6: 'DFQ_MIN_FREE_ENTRIES_6', - 7: 'DFQ_MIN_FREE_ENTRIES_7', -} -DFQ_MIN_FREE_ENTRIES_0 = 0 -DFQ_MIN_FREE_ENTRIES_1 = 1 -DFQ_MIN_FREE_ENTRIES_2 = 2 -DFQ_MIN_FREE_ENTRIES_3 = 3 -DFQ_MIN_FREE_ENTRIES_4 = 4 -DFQ_MIN_FREE_ENTRIES_5 = 5 -DFQ_MIN_FREE_ENTRIES_6 = 6 -DFQ_MIN_FREE_ENTRIES_7 = 7 -DFQ_MIN_FREE_ENTRIES = ctypes.c_uint32 # enum - -# values for enumeration 'DFQ_NUM_ENTRIES' -DFQ_NUM_ENTRIES__enumvalues = { - 0: 'DFQ_NUM_ENTRIES_0', - 1: 'DFQ_NUM_ENTRIES_1', - 2: 'DFQ_NUM_ENTRIES_2', - 3: 'DFQ_NUM_ENTRIES_3', - 4: 'DFQ_NUM_ENTRIES_4', - 5: 'DFQ_NUM_ENTRIES_5', - 6: 'DFQ_NUM_ENTRIES_6', - 7: 'DFQ_NUM_ENTRIES_7', - 8: 'DFQ_NUM_ENTRIES_8', -} -DFQ_NUM_ENTRIES_0 = 0 -DFQ_NUM_ENTRIES_1 = 1 -DFQ_NUM_ENTRIES_2 = 2 -DFQ_NUM_ENTRIES_3 = 3 -DFQ_NUM_ENTRIES_4 = 4 -DFQ_NUM_ENTRIES_5 = 5 -DFQ_NUM_ENTRIES_6 = 6 -DFQ_NUM_ENTRIES_7 = 7 -DFQ_NUM_ENTRIES_8 = 8 -DFQ_NUM_ENTRIES = ctypes.c_uint32 # enum - -# values for enumeration 'DFQ_SIZE' -DFQ_SIZE__enumvalues = { - 0: 'DFQ_SIZE_0', - 1: 'DFQ_SIZE_1', - 2: 'DFQ_SIZE_2', - 3: 'DFQ_SIZE_3', - 4: 'DFQ_SIZE_4', - 5: 'DFQ_SIZE_5', - 6: 'DFQ_SIZE_6', - 7: 'DFQ_SIZE_7', -} -DFQ_SIZE_0 = 0 -DFQ_SIZE_1 = 1 -DFQ_SIZE_2 = 2 -DFQ_SIZE_3 = 3 -DFQ_SIZE_4 = 4 -DFQ_SIZE_5 = 5 -DFQ_SIZE_6 = 6 -DFQ_SIZE_7 = 7 -DFQ_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_VM_DONE' -DMDATA_VM_DONE__enumvalues = { - 0: 'DMDATA_VM_IS_NOT_DONE', - 1: 'DMDATA_VM_IS_DONE', -} -DMDATA_VM_IS_NOT_DONE = 0 -DMDATA_VM_IS_DONE = 1 -DMDATA_VM_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'EXPANSION_MODE' -EXPANSION_MODE__enumvalues = { - 0: 'EXPANSION_MODE_ZERO', - 1: 'EXPANSION_MODE_CONSERVATIVE', - 2: 'EXPANSION_MODE_OPTIMAL', -} -EXPANSION_MODE_ZERO = 0 -EXPANSION_MODE_CONSERVATIVE = 1 -EXPANSION_MODE_OPTIMAL = 2 -EXPANSION_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FLIP_RATE' -FLIP_RATE__enumvalues = { - 0: 'FLIP_RATE_0', - 1: 'FLIP_RATE_1', - 2: 'FLIP_RATE_2', - 3: 'FLIP_RATE_3', - 4: 'FLIP_RATE_4', - 5: 'FLIP_RATE_5', - 6: 'FLIP_RATE_6', - 7: 'FLIP_RATE_7', -} -FLIP_RATE_0 = 0 -FLIP_RATE_1 = 1 -FLIP_RATE_2 = 2 -FLIP_RATE_3 = 3 -FLIP_RATE_4 = 4 -FLIP_RATE_5 = 5 -FLIP_RATE_6 = 6 -FLIP_RATE_7 = 7 -FLIP_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'INT_MASK' -INT_MASK__enumvalues = { - 0: 'INT_DISABLED', - 1: 'INT_ENABLED', -} -INT_DISABLED = 0 -INT_ENABLED = 1 -INT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_IN_FLUSH_URGENT' -PIPE_IN_FLUSH_URGENT__enumvalues = { - 0: 'PIPE_IN_FLUSH_URGENT_ENABLE', - 1: 'PIPE_IN_FLUSH_URGENT_DISABLE', -} -PIPE_IN_FLUSH_URGENT_ENABLE = 0 -PIPE_IN_FLUSH_URGENT_DISABLE = 1 -PIPE_IN_FLUSH_URGENT = ctypes.c_uint32 # enum - -# values for enumeration 'PRQ_MRQ_FLUSH_URGENT' -PRQ_MRQ_FLUSH_URGENT__enumvalues = { - 0: 'PRQ_MRQ_FLUSH_URGENT_ENABLE', - 1: 'PRQ_MRQ_FLUSH_URGENT_DISABLE', -} -PRQ_MRQ_FLUSH_URGENT_ENABLE = 0 -PRQ_MRQ_FLUSH_URGENT_DISABLE = 1 -PRQ_MRQ_FLUSH_URGENT = ctypes.c_uint32 # enum - -# values for enumeration 'ROW_TTU_MODE' -ROW_TTU_MODE__enumvalues = { - 0: 'END_OF_ROW_MODE', - 1: 'WATERMARK_MODE', -} -END_OF_ROW_MODE = 0 -WATERMARK_MODE = 1 -ROW_TTU_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_DCC' -SURFACE_DCC__enumvalues = { - 0: 'SURFACE_IS_NOT_DCC', - 1: 'SURFACE_IS_DCC', -} -SURFACE_IS_NOT_DCC = 0 -SURFACE_IS_DCC = 1 -SURFACE_DCC = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_DCC_IND_128B' -SURFACE_DCC_IND_128B__enumvalues = { - 0: 'SURFACE_DCC_IS_NOT_IND_128B', - 1: 'SURFACE_DCC_IS_IND_128B', -} -SURFACE_DCC_IS_NOT_IND_128B = 0 -SURFACE_DCC_IS_IND_128B = 1 -SURFACE_DCC_IND_128B = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_DCC_IND_64B' -SURFACE_DCC_IND_64B__enumvalues = { - 0: 'SURFACE_DCC_IS_NOT_IND_64B', - 1: 'SURFACE_DCC_IS_IND_64B', -} -SURFACE_DCC_IS_NOT_IND_64B = 0 -SURFACE_DCC_IS_IND_64B = 1 -SURFACE_DCC_IND_64B = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_DCC_IND_BLK' -SURFACE_DCC_IND_BLK__enumvalues = { - 0: 'SURFACE_DCC_BLOCK_IS_UNCONSTRAINED', - 1: 'SURFACE_DCC_BLOCK_IS_IND_64B', - 2: 'SURFACE_DCC_BLOCK_IS_IND_128B', - 3: 'SURFACE_DCC_BLOCK_IS_IND_64B_NO_128BCL', -} -SURFACE_DCC_BLOCK_IS_UNCONSTRAINED = 0 -SURFACE_DCC_BLOCK_IS_IND_64B = 1 -SURFACE_DCC_BLOCK_IS_IND_128B = 2 -SURFACE_DCC_BLOCK_IS_IND_64B_NO_128BCL = 3 -SURFACE_DCC_IND_BLK = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_AWAY_INT_TYPE' -SURFACE_FLIP_AWAY_INT_TYPE__enumvalues = { - 0: 'SURFACE_FLIP_AWAY_INT_LEVEL', - 1: 'SURFACE_FLIP_AWAY_INT_PULSE', -} -SURFACE_FLIP_AWAY_INT_LEVEL = 0 -SURFACE_FLIP_AWAY_INT_PULSE = 1 -SURFACE_FLIP_AWAY_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_EXEC_DEBUG_MODE' -SURFACE_FLIP_EXEC_DEBUG_MODE__enumvalues = { - 0: 'SURFACE_FLIP_EXEC_NORMAL_MODE', - 1: 'SURFACE_FLIP_EXEC_DEBUG_MODE_ENABLE', -} -SURFACE_FLIP_EXEC_NORMAL_MODE = 0 -SURFACE_FLIP_EXEC_DEBUG_MODE_ENABLE = 1 -SURFACE_FLIP_EXEC_DEBUG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_INT_TYPE' -SURFACE_FLIP_INT_TYPE__enumvalues = { - 0: 'SURFACE_FLIP_INT_LEVEL', - 1: 'SURFACE_FLIP_INT_PULSE', -} -SURFACE_FLIP_INT_LEVEL = 0 -SURFACE_FLIP_INT_PULSE = 1 -SURFACE_FLIP_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_IN_STEREOSYNC' -SURFACE_FLIP_IN_STEREOSYNC__enumvalues = { - 0: 'SURFACE_FLIP_NOT_IN_STEREOSYNC_MODE', - 1: 'SURFACE_FLIP_IN_STEREOSYNC_MODE', -} -SURFACE_FLIP_NOT_IN_STEREOSYNC_MODE = 0 -SURFACE_FLIP_IN_STEREOSYNC_MODE = 1 -SURFACE_FLIP_IN_STEREOSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_MODE_FOR_STEREOSYNC' -SURFACE_FLIP_MODE_FOR_STEREOSYNC__enumvalues = { - 0: 'FLIP_ANY_FRAME', - 1: 'FLIP_LEFT_EYE', - 2: 'FLIP_RIGHT_EYE', - 3: 'SURFACE_FLIP_MODE_FOR_STEREOSYNC_RESERVED', -} -FLIP_ANY_FRAME = 0 -FLIP_LEFT_EYE = 1 -FLIP_RIGHT_EYE = 2 -SURFACE_FLIP_MODE_FOR_STEREOSYNC_RESERVED = 3 -SURFACE_FLIP_MODE_FOR_STEREOSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_STEREO_SELECT_DISABLE' -SURFACE_FLIP_STEREO_SELECT_DISABLE__enumvalues = { - 0: 'SURFACE_FLIP_STEREO_SELECT_ENABLED', - 1: 'SURFACE_FLIP_STEREO_SELECT_DISABLED', -} -SURFACE_FLIP_STEREO_SELECT_ENABLED = 0 -SURFACE_FLIP_STEREO_SELECT_DISABLED = 1 -SURFACE_FLIP_STEREO_SELECT_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_STEREO_SELECT_POLARITY' -SURFACE_FLIP_STEREO_SELECT_POLARITY__enumvalues = { - 0: 'SURFACE_FLIP_STEREO_SELECT_POLARITY_NOT_INVERT', - 1: 'SURFACE_FLIP_STEREO_SELECT_POLARITY_INVERT', -} -SURFACE_FLIP_STEREO_SELECT_POLARITY_NOT_INVERT = 0 -SURFACE_FLIP_STEREO_SELECT_POLARITY_INVERT = 1 -SURFACE_FLIP_STEREO_SELECT_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_TYPE' -SURFACE_FLIP_TYPE__enumvalues = { - 0: 'SURFACE_V_FLIP', - 1: 'SURFACE_I_FLIP', -} -SURFACE_V_FLIP = 0 -SURFACE_I_FLIP = 1 -SURFACE_FLIP_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_FLIP_VUPDATE_SKIP_NUM' -SURFACE_FLIP_VUPDATE_SKIP_NUM__enumvalues = { - 0: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_0', - 1: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_1', - 2: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_2', - 3: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_3', - 4: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_4', - 5: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_5', - 6: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_6', - 7: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_7', - 8: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_8', - 9: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_9', - 10: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_10', - 11: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_11', - 12: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_12', - 13: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_13', - 14: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_14', - 15: 'SURFACE_FLIP_VUPDATE_SKIP_NUM_15', -} -SURFACE_FLIP_VUPDATE_SKIP_NUM_0 = 0 -SURFACE_FLIP_VUPDATE_SKIP_NUM_1 = 1 -SURFACE_FLIP_VUPDATE_SKIP_NUM_2 = 2 -SURFACE_FLIP_VUPDATE_SKIP_NUM_3 = 3 -SURFACE_FLIP_VUPDATE_SKIP_NUM_4 = 4 -SURFACE_FLIP_VUPDATE_SKIP_NUM_5 = 5 -SURFACE_FLIP_VUPDATE_SKIP_NUM_6 = 6 -SURFACE_FLIP_VUPDATE_SKIP_NUM_7 = 7 -SURFACE_FLIP_VUPDATE_SKIP_NUM_8 = 8 -SURFACE_FLIP_VUPDATE_SKIP_NUM_9 = 9 -SURFACE_FLIP_VUPDATE_SKIP_NUM_10 = 10 -SURFACE_FLIP_VUPDATE_SKIP_NUM_11 = 11 -SURFACE_FLIP_VUPDATE_SKIP_NUM_12 = 12 -SURFACE_FLIP_VUPDATE_SKIP_NUM_13 = 13 -SURFACE_FLIP_VUPDATE_SKIP_NUM_14 = 14 -SURFACE_FLIP_VUPDATE_SKIP_NUM_15 = 15 -SURFACE_FLIP_VUPDATE_SKIP_NUM = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_INUSE_RAED_NO_LATCH' -SURFACE_INUSE_RAED_NO_LATCH__enumvalues = { - 0: 'SURFACE_INUSE_IS_LATCHED', - 1: 'SURFACE_INUSE_IS_NOT_LATCHED', -} -SURFACE_INUSE_IS_LATCHED = 0 -SURFACE_INUSE_IS_NOT_LATCHED = 1 -SURFACE_INUSE_RAED_NO_LATCH = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_TMZ' -SURFACE_TMZ__enumvalues = { - 0: 'SURFACE_IS_NOT_TMZ', - 1: 'SURFACE_IS_TMZ', -} -SURFACE_IS_NOT_TMZ = 0 -SURFACE_IS_TMZ = 1 -SURFACE_TMZ = ctypes.c_uint32 # enum - -# values for enumeration 'SURFACE_UPDATE_LOCK' -SURFACE_UPDATE_LOCK__enumvalues = { - 0: 'SURFACE_UPDATE_IS_UNLOCKED', - 1: 'SURFACE_UPDATE_IS_LOCKED', -} -SURFACE_UPDATE_IS_UNLOCKED = 0 -SURFACE_UPDATE_IS_LOCKED = 1 -SURFACE_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'CROSSBAR_FOR_ALPHA' -CROSSBAR_FOR_ALPHA__enumvalues = { - 0: 'ALPHA_DATA_ONTO_ALPHA_PORT', - 1: 'Y_G_DATA_ONTO_ALPHA_PORT', - 2: 'CB_B_DATA_ONTO_ALPHA_PORT', - 3: 'CR_R_DATA_ONTO_ALPHA_PORT', -} -ALPHA_DATA_ONTO_ALPHA_PORT = 0 -Y_G_DATA_ONTO_ALPHA_PORT = 1 -CB_B_DATA_ONTO_ALPHA_PORT = 2 -CR_R_DATA_ONTO_ALPHA_PORT = 3 -CROSSBAR_FOR_ALPHA = ctypes.c_uint32 # enum - -# values for enumeration 'CROSSBAR_FOR_CB_B' -CROSSBAR_FOR_CB_B__enumvalues = { - 0: 'ALPHA_DATA_ONTO_CB_B_PORT', - 1: 'Y_G_DATA_ONTO_CB_B_PORT', - 2: 'CB_B_DATA_ONTO_CB_B_PORT', - 3: 'CR_R_DATA_ONTO_CB_B_PORT', -} -ALPHA_DATA_ONTO_CB_B_PORT = 0 -Y_G_DATA_ONTO_CB_B_PORT = 1 -CB_B_DATA_ONTO_CB_B_PORT = 2 -CR_R_DATA_ONTO_CB_B_PORT = 3 -CROSSBAR_FOR_CB_B = ctypes.c_uint32 # enum - -# values for enumeration 'CROSSBAR_FOR_CR_R' -CROSSBAR_FOR_CR_R__enumvalues = { - 0: 'ALPHA_DATA_ONTO_CR_R_PORT', - 1: 'Y_G_DATA_ONTO_CR_R_PORT', - 2: 'CB_B_DATA_ONTO_CR_R_PORT', - 3: 'CR_R_DATA_ONTO_CR_R_PORT', -} -ALPHA_DATA_ONTO_CR_R_PORT = 0 -Y_G_DATA_ONTO_CR_R_PORT = 1 -CB_B_DATA_ONTO_CR_R_PORT = 2 -CR_R_DATA_ONTO_CR_R_PORT = 3 -CROSSBAR_FOR_CR_R = ctypes.c_uint32 # enum - -# values for enumeration 'CROSSBAR_FOR_Y_G' -CROSSBAR_FOR_Y_G__enumvalues = { - 0: 'ALPHA_DATA_ONTO_Y_G_PORT', - 1: 'Y_G_DATA_ONTO_Y_G_PORT', - 2: 'CB_B_DATA_ONTO_Y_G_PORT', - 3: 'CR_R_DATA_ONTO_Y_G_PORT', -} -ALPHA_DATA_ONTO_Y_G_PORT = 0 -Y_G_DATA_ONTO_Y_G_PORT = 1 -CB_B_DATA_ONTO_Y_G_PORT = 2 -CR_R_DATA_ONTO_Y_G_PORT = 3 -CROSSBAR_FOR_Y_G = ctypes.c_uint32 # enum - -# values for enumeration 'DETILE_BUFFER_PACKER_ENABLE' -DETILE_BUFFER_PACKER_ENABLE__enumvalues = { - 0: 'DETILE_BUFFER_PACKER_IS_DISABLE', - 1: 'DETILE_BUFFER_PACKER_IS_ENABLE', -} -DETILE_BUFFER_PACKER_IS_DISABLE = 0 -DETILE_BUFFER_PACKER_IS_ENABLE = 1 -DETILE_BUFFER_PACKER_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_DIS_MODE' -MEM_PWR_DIS_MODE__enumvalues = { - 0: 'MEM_POWER_DIS_MODE_ENABLE', - 1: 'MEM_POWER_DIS_MODE_DISABLE', -} -MEM_POWER_DIS_MODE_ENABLE = 0 -MEM_POWER_DIS_MODE_DISABLE = 1 -MEM_PWR_DIS_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_FORCE_MODE' -MEM_PWR_FORCE_MODE__enumvalues = { - 0: 'MEM_POWER_FORCE_MODE_OFF', - 1: 'MEM_POWER_FORCE_MODE_LIGHT_SLEEP', - 2: 'MEM_POWER_FORCE_MODE_DEEP_SLEEP', - 3: 'MEM_POWER_FORCE_MODE_SHUT_DOWN', -} -MEM_POWER_FORCE_MODE_OFF = 0 -MEM_POWER_FORCE_MODE_LIGHT_SLEEP = 1 -MEM_POWER_FORCE_MODE_DEEP_SLEEP = 2 -MEM_POWER_FORCE_MODE_SHUT_DOWN = 3 -MEM_PWR_FORCE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_STATUS' -MEM_PWR_STATUS__enumvalues = { - 0: 'MEM_POWER_STATUS_ON', - 1: 'MEM_POWER_STATUS_LIGHT_SLEEP', - 2: 'MEM_POWER_STATUS_DEEP_SLEEP', - 3: 'MEM_POWER_STATUS_SHUT_DOWN', -} -MEM_POWER_STATUS_ON = 0 -MEM_POWER_STATUS_LIGHT_SLEEP = 1 -MEM_POWER_STATUS_DEEP_SLEEP = 2 -MEM_POWER_STATUS_SHUT_DOWN = 3 -MEM_PWR_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_INT_MASK_MODE' -PIPE_INT_MASK_MODE__enumvalues = { - 0: 'PIPE_INT_MASK_MODE_DISABLE', - 1: 'PIPE_INT_MASK_MODE_ENABLE', -} -PIPE_INT_MASK_MODE_DISABLE = 0 -PIPE_INT_MASK_MODE_ENABLE = 1 -PIPE_INT_MASK_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_INT_TYPE_MODE' -PIPE_INT_TYPE_MODE__enumvalues = { - 0: 'PIPE_INT_TYPE_MODE_DISABLE', - 1: 'PIPE_INT_TYPE_MODE_ENABLE', -} -PIPE_INT_TYPE_MODE_DISABLE = 0 -PIPE_INT_TYPE_MODE_ENABLE = 1 -PIPE_INT_TYPE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'PIXCDC_MEM_PWR_LIGHT_SLEEP_MODE' -PIXCDC_MEM_PWR_LIGHT_SLEEP_MODE__enumvalues = { - 0: 'PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 1: 'PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_1', -} -PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_OFF = 0 -PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_1 = 1 -PIXCDC_MEM_PWR_LIGHT_SLEEP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CROB_MEM_PWR_LIGHT_SLEEP_MODE' -CROB_MEM_PWR_LIGHT_SLEEP_MODE__enumvalues = { - 0: 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 1: 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_1', - 2: 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_2', -} -CROB_MEM_POWER_LIGHT_SLEEP_MODE_OFF = 0 -CROB_MEM_POWER_LIGHT_SLEEP_MODE_1 = 1 -CROB_MEM_POWER_LIGHT_SLEEP_MODE_2 = 2 -CROB_MEM_PWR_LIGHT_SLEEP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_2X_MAGNIFY' -CURSOR_2X_MAGNIFY__enumvalues = { - 0: 'CURSOR_2X_MAGNIFY_IS_DISABLE', - 1: 'CURSOR_2X_MAGNIFY_IS_ENABLE', -} -CURSOR_2X_MAGNIFY_IS_DISABLE = 0 -CURSOR_2X_MAGNIFY_IS_ENABLE = 1 -CURSOR_2X_MAGNIFY = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_ENABLE' -CURSOR_ENABLE__enumvalues = { - 0: 'CURSOR_IS_DISABLE', - 1: 'CURSOR_IS_ENABLE', -} -CURSOR_IS_DISABLE = 0 -CURSOR_IS_ENABLE = 1 -CURSOR_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_LINES_PER_CHUNK' -CURSOR_LINES_PER_CHUNK__enumvalues = { - 0: 'CURSOR_LINE_PER_CHUNK_1', - 1: 'CURSOR_LINE_PER_CHUNK_2', - 2: 'CURSOR_LINE_PER_CHUNK_4', - 3: 'CURSOR_LINE_PER_CHUNK_8', - 4: 'CURSOR_LINE_PER_CHUNK_16', -} -CURSOR_LINE_PER_CHUNK_1 = 0 -CURSOR_LINE_PER_CHUNK_2 = 1 -CURSOR_LINE_PER_CHUNK_4 = 2 -CURSOR_LINE_PER_CHUNK_8 = 3 -CURSOR_LINE_PER_CHUNK_16 = 4 -CURSOR_LINES_PER_CHUNK = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_MODE' -CURSOR_MODE__enumvalues = { - 0: 'CURSOR_MONO_2BIT', - 1: 'CURSOR_COLOR_24BIT_1BIT_AND', - 2: 'CURSOR_COLOR_24BIT_8BIT_ALPHA_PREMULT', - 3: 'CURSOR_COLOR_24BIT_8BIT_ALPHA_UNPREMULT', - 4: 'CURSOR_COLOR_64BIT_FP_PREMULT', - 5: 'CURSOR_COLOR_64BIT_FP_UNPREMULT', -} -CURSOR_MONO_2BIT = 0 -CURSOR_COLOR_24BIT_1BIT_AND = 1 -CURSOR_COLOR_24BIT_8BIT_ALPHA_PREMULT = 2 -CURSOR_COLOR_24BIT_8BIT_ALPHA_UNPREMULT = 3 -CURSOR_COLOR_64BIT_FP_PREMULT = 4 -CURSOR_COLOR_64BIT_FP_UNPREMULT = 5 -CURSOR_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_PERFMON_LATENCY_MEASURE_EN' -CURSOR_PERFMON_LATENCY_MEASURE_EN__enumvalues = { - 0: 'CURSOR_PERFMON_LATENCY_MEASURE_IS_DISABLED', - 1: 'CURSOR_PERFMON_LATENCY_MEASURE_IS_ENABLED', -} -CURSOR_PERFMON_LATENCY_MEASURE_IS_DISABLED = 0 -CURSOR_PERFMON_LATENCY_MEASURE_IS_ENABLED = 1 -CURSOR_PERFMON_LATENCY_MEASURE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_PERFMON_LATENCY_MEASURE_SEL' -CURSOR_PERFMON_LATENCY_MEASURE_SEL__enumvalues = { - 0: 'CURSOR_PERFMON_LATENCY_MEASURE_MC_LATENCY', - 1: 'CURSOR_PERFMON_LATENCY_MEASURE_CROB_LATENCY', -} -CURSOR_PERFMON_LATENCY_MEASURE_MC_LATENCY = 0 -CURSOR_PERFMON_LATENCY_MEASURE_CROB_LATENCY = 1 -CURSOR_PERFMON_LATENCY_MEASURE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_PITCH' -CURSOR_PITCH__enumvalues = { - 0: 'CURSOR_PITCH_64_PIXELS', - 1: 'CURSOR_PITCH_128_PIXELS', - 2: 'CURSOR_PITCH_256_PIXELS', -} -CURSOR_PITCH_64_PIXELS = 0 -CURSOR_PITCH_128_PIXELS = 1 -CURSOR_PITCH_256_PIXELS = 2 -CURSOR_PITCH = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_REQ_MODE' -CURSOR_REQ_MODE__enumvalues = { - 0: 'CURSOR_REQUEST_NORMALLY', - 1: 'CURSOR_REQUEST_EARLY', -} -CURSOR_REQUEST_NORMALLY = 0 -CURSOR_REQUEST_EARLY = 1 -CURSOR_REQ_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_SNOOP' -CURSOR_SNOOP__enumvalues = { - 0: 'CURSOR_IS_NOT_SNOOP', - 1: 'CURSOR_IS_SNOOP', -} -CURSOR_IS_NOT_SNOOP = 0 -CURSOR_IS_SNOOP = 1 -CURSOR_SNOOP = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_STEREO_EN' -CURSOR_STEREO_EN__enumvalues = { - 0: 'CURSOR_STEREO_IS_DISABLED', - 1: 'CURSOR_STEREO_IS_ENABLED', -} -CURSOR_STEREO_IS_DISABLED = 0 -CURSOR_STEREO_IS_ENABLED = 1 -CURSOR_STEREO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_SURFACE_TMZ' -CURSOR_SURFACE_TMZ__enumvalues = { - 0: 'CURSOR_SURFACE_IS_NOT_TMZ', - 1: 'CURSOR_SURFACE_IS_TMZ', -} -CURSOR_SURFACE_IS_NOT_TMZ = 0 -CURSOR_SURFACE_IS_TMZ = 1 -CURSOR_SURFACE_TMZ = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_SYSTEM' -CURSOR_SYSTEM__enumvalues = { - 0: 'CURSOR_IN_SYSTEM_PHYSICAL_ADDRESS', - 1: 'CURSOR_IN_GUEST_PHYSICAL_ADDRESS', -} -CURSOR_IN_SYSTEM_PHYSICAL_ADDRESS = 0 -CURSOR_IN_GUEST_PHYSICAL_ADDRESS = 1 -CURSOR_SYSTEM = ctypes.c_uint32 # enum - -# values for enumeration 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS' -CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS__enumvalues = { - 0: 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_0', - 1: 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_1', -} -CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_0 = 0 -CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_1 = 1 -CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_DONE' -DMDATA_DONE__enumvalues = { - 0: 'DMDATA_NOT_SENT_TO_DIG', - 1: 'DMDATA_SENT_TO_DIG', -} -DMDATA_NOT_SENT_TO_DIG = 0 -DMDATA_SENT_TO_DIG = 1 -DMDATA_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_MODE' -DMDATA_MODE__enumvalues = { - 0: 'DMDATA_SOFTWARE_UPDATE_MODE', - 1: 'DMDATA_HARDWARE_UPDATE_MODE', -} -DMDATA_SOFTWARE_UPDATE_MODE = 0 -DMDATA_HARDWARE_UPDATE_MODE = 1 -DMDATA_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_QOS_MODE' -DMDATA_QOS_MODE__enumvalues = { - 0: 'DMDATA_QOS_LEVEL_FROM_TTU', - 1: 'DMDATA_QOS_LEVEL_FROM_SOFTWARE', -} -DMDATA_QOS_LEVEL_FROM_TTU = 0 -DMDATA_QOS_LEVEL_FROM_SOFTWARE = 1 -DMDATA_QOS_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_REPEAT' -DMDATA_REPEAT__enumvalues = { - 0: 'DMDATA_USE_FOR_CURRENT_FRAME_ONLY', - 1: 'DMDATA_USE_FOR_CURRENT_AND_FUTURE_FRAMES', -} -DMDATA_USE_FOR_CURRENT_FRAME_ONLY = 0 -DMDATA_USE_FOR_CURRENT_AND_FUTURE_FRAMES = 1 -DMDATA_REPEAT = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_UNDERFLOW' -DMDATA_UNDERFLOW__enumvalues = { - 0: 'DMDATA_NOT_UNDERFLOW', - 1: 'DMDATA_UNDERFLOWED', -} -DMDATA_NOT_UNDERFLOW = 0 -DMDATA_UNDERFLOWED = 1 -DMDATA_UNDERFLOW = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_UNDERFLOW_CLEAR' -DMDATA_UNDERFLOW_CLEAR__enumvalues = { - 0: 'DMDATA_DONT_CLEAR', - 1: 'DMDATA_CLEAR_UNDERFLOW_STATUS', -} -DMDATA_DONT_CLEAR = 0 -DMDATA_CLEAR_UNDERFLOW_STATUS = 1 -DMDATA_UNDERFLOW_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'DMDATA_UPDATED' -DMDATA_UPDATED__enumvalues = { - 0: 'DMDATA_NOT_UPDATED', - 1: 'DMDATA_WAS_UPDATED', -} -DMDATA_NOT_UPDATED = 0 -DMDATA_WAS_UPDATED = 1 -DMDATA_UPDATED = ctypes.c_uint32 # enum - -# values for enumeration 'RESPONSE_STATUS' -RESPONSE_STATUS__enumvalues = { - 0: 'OKAY', - 1: 'EXOKAY', - 2: 'SLVERR', - 3: 'DECERR', - 4: 'EARLY', - 5: 'OKAY_NODATA', - 6: 'PROTVIOL', - 7: 'TRANSERR', - 8: 'CMPTO', - 12: 'CRS', -} -OKAY = 0 -EXOKAY = 1 -SLVERR = 2 -DECERR = 3 -EARLY = 4 -OKAY_NODATA = 5 -PROTVIOL = 6 -TRANSERR = 7 -CMPTO = 8 -CRS = 12 -RESPONSE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'DCHUBBUB_DET_MEM_PWR_LIGHT_SLEEP_MODE' -DCHUBBUB_DET_MEM_PWR_LIGHT_SLEEP_MODE__enumvalues = { - 0: 'DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 1: 'DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_1', - 2: 'DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_2', -} -DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_OFF = 0 -DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_1 = 1 -DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_2 = 2 -DCHUBBUB_DET_MEM_PWR_LIGHT_SLEEP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCHUBBUB_MEM_PWR_DIS_MODE' -DCHUBBUB_MEM_PWR_DIS_MODE__enumvalues = { - 0: 'DCHUBBUB_MEM_POWER_DIS_MODE_ENABLE', - 1: 'DCHUBBUB_MEM_POWER_DIS_MODE_DISABLE', -} -DCHUBBUB_MEM_POWER_DIS_MODE_ENABLE = 0 -DCHUBBUB_MEM_POWER_DIS_MODE_DISABLE = 1 -DCHUBBUB_MEM_PWR_DIS_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCHUBBUB_MEM_PWR_MODE' -DCHUBBUB_MEM_PWR_MODE__enumvalues = { - 0: 'DCHUBBUB_MEM_POWER_MODE_OFF', - 1: 'DCHUBBUB_MEM_POWER_MODE_LIGHT_SLEEP', - 2: 'DCHUBBUB_MEM_POWER_MODE_DEEP_SLEEP', - 3: 'DCHUBBUB_MEM_POWER_MODE_SHUT_DOWN', -} -DCHUBBUB_MEM_POWER_MODE_OFF = 0 -DCHUBBUB_MEM_POWER_MODE_LIGHT_SLEEP = 1 -DCHUBBUB_MEM_POWER_MODE_DEEP_SLEEP = 2 -DCHUBBUB_MEM_POWER_MODE_SHUT_DOWN = 3 -DCHUBBUB_MEM_PWR_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET' -MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET' -MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_ADR_VUPDATE_LOCK_SET' -MPC_CFG_ADR_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_ADR_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_ADR_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_ADR_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_ADR_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_ADR_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_CFG_VUPDATE_LOCK_SET' -MPC_CFG_CFG_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_CFG_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_CFG_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_CFG_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_CFG_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_CFG_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_CUR_VUPDATE_LOCK_SET' -MPC_CFG_CUR_VUPDATE_LOCK_SET__enumvalues = { - 0: 'MPC_CFG_CUR_VUPDATE_LOCK_SET_FALSE', - 1: 'MPC_CFG_CUR_VUPDATE_LOCK_SET_TRUE', -} -MPC_CFG_CUR_VUPDATE_LOCK_SET_FALSE = 0 -MPC_CFG_CUR_VUPDATE_LOCK_SET_TRUE = 1 -MPC_CFG_CUR_VUPDATE_LOCK_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_MPC_TEST_CLK_SEL' -MPC_CFG_MPC_TEST_CLK_SEL__enumvalues = { - 0: 'MPC_CFG_MPC_TEST_CLK_SEL_0', - 1: 'MPC_CFG_MPC_TEST_CLK_SEL_1', - 2: 'MPC_CFG_MPC_TEST_CLK_SEL_2', - 3: 'MPC_CFG_MPC_TEST_CLK_SEL_3', -} -MPC_CFG_MPC_TEST_CLK_SEL_0 = 0 -MPC_CFG_MPC_TEST_CLK_SEL_1 = 1 -MPC_CFG_MPC_TEST_CLK_SEL_2 = 2 -MPC_CFG_MPC_TEST_CLK_SEL_3 = 3 -MPC_CFG_MPC_TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN' -MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN__enumvalues = { - 0: 'MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN_FALSE', - 1: 'MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN_TRUE', -} -MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN_FALSE = 0 -MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN_TRUE = 1 -MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CRC_CALC_INTERLACE_MODE' -MPC_CRC_CALC_INTERLACE_MODE__enumvalues = { - 0: 'MPC_CRC_INTERLACE_MODE_TOP', - 1: 'MPC_CRC_INTERLACE_MODE_BOTTOM', - 2: 'MPC_CRC_INTERLACE_MODE_BOTH_RESET_BOTTOM', - 3: 'MPC_CRC_INTERLACE_MODE_BOTH_RESET_EACH', -} -MPC_CRC_INTERLACE_MODE_TOP = 0 -MPC_CRC_INTERLACE_MODE_BOTTOM = 1 -MPC_CRC_INTERLACE_MODE_BOTH_RESET_BOTTOM = 2 -MPC_CRC_INTERLACE_MODE_BOTH_RESET_EACH = 3 -MPC_CRC_CALC_INTERLACE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CRC_CALC_MODE' -MPC_CRC_CALC_MODE__enumvalues = { - 0: 'MPC_CRC_ONE_SHOT_MODE', - 1: 'MPC_CRC_CONTINUOUS_MODE', -} -MPC_CRC_ONE_SHOT_MODE = 0 -MPC_CRC_CONTINUOUS_MODE = 1 -MPC_CRC_CALC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CRC_CALC_STEREO_MODE' -MPC_CRC_CALC_STEREO_MODE__enumvalues = { - 0: 'MPC_CRC_STEREO_MODE_LEFT', - 1: 'MPC_CRC_STEREO_MODE_RIGHT', - 2: 'MPC_CRC_STEREO_MODE_BOTH_RESET_RIGHT', - 3: 'MPC_CRC_STEREO_MODE_BOTH_RESET_EACH', -} -MPC_CRC_STEREO_MODE_LEFT = 0 -MPC_CRC_STEREO_MODE_RIGHT = 1 -MPC_CRC_STEREO_MODE_BOTH_RESET_RIGHT = 2 -MPC_CRC_STEREO_MODE_BOTH_RESET_EACH = 3 -MPC_CRC_CALC_STEREO_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_CRC_SOURCE_SELECT' -MPC_CRC_SOURCE_SELECT__enumvalues = { - 0: 'MPC_CRC_SOURCE_SEL_DPP', - 1: 'MPC_CRC_SOURCE_SEL_OPP', - 2: 'MPC_CRC_SOURCE_SEL_DWB', - 3: 'MPC_CRC_SOURCE_SEL_OTHER', -} -MPC_CRC_SOURCE_SEL_DPP = 0 -MPC_CRC_SOURCE_SEL_OPP = 1 -MPC_CRC_SOURCE_SEL_DWB = 2 -MPC_CRC_SOURCE_SEL_OTHER = 3 -MPC_CRC_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_DEBUG_BUS1_DATA_SELECT' -MPC_DEBUG_BUS1_DATA_SELECT__enumvalues = { - 0: 'MPC_DEBUG_BUS1_DATA_SELECT_MPC_CFG', - 1: 'MPC_DEBUG_BUS1_DATA_SELECT_MPC_CONT', - 2: 'MPC_DEBUG_BUS1_DATA_SELECT_MPC_RSV1', - 3: 'MPC_DEBUG_BUS1_DATA_SELECT_MPC_RSV', -} -MPC_DEBUG_BUS1_DATA_SELECT_MPC_CFG = 0 -MPC_DEBUG_BUS1_DATA_SELECT_MPC_CONT = 1 -MPC_DEBUG_BUS1_DATA_SELECT_MPC_RSV1 = 2 -MPC_DEBUG_BUS1_DATA_SELECT_MPC_RSV = 3 -MPC_DEBUG_BUS1_DATA_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_DEBUG_BUS2_DATA_SELECT' -MPC_DEBUG_BUS2_DATA_SELECT__enumvalues = { - 0: 'MPC_DEBUG_BUS2_DATA_SELECT_MPCC', - 1: 'MPC_DEBUG_BUS2_DATA_SELECT_MPCC_CONT', - 2: 'MPC_DEBUG_BUS2_DATA_SELECT_MPCC_MCM', - 3: 'MPC_DEBUG_BUS2_DATA_SELECT_RES', -} -MPC_DEBUG_BUS2_DATA_SELECT_MPCC = 0 -MPC_DEBUG_BUS2_DATA_SELECT_MPCC_CONT = 1 -MPC_DEBUG_BUS2_DATA_SELECT_MPCC_MCM = 2 -MPC_DEBUG_BUS2_DATA_SELECT_RES = 3 -MPC_DEBUG_BUS2_DATA_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT' -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT__enumvalues = { - 0: 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPC_DEBUG_ID', - 1: 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPCC_DEBUG_ID', - 2: 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPCC_OGAM_DEBUG_ID', - 3: 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPC_OCSC_DEBUG_ID', - 4: 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_SFR_DEBUG_DATA', - 5: 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_SFT_DEBUG_DATA', - 6: 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_RSV1', - 7: 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPCC_MCM_DEBUG_ID', -} -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPC_DEBUG_ID = 0 -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPCC_DEBUG_ID = 1 -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPCC_OGAM_DEBUG_ID = 2 -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPC_OCSC_DEBUG_ID = 3 -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_SFR_DEBUG_DATA = 4 -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_SFT_DEBUG_DATA = 5 -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_RSV1 = 6 -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPCC_MCM_DEBUG_ID = 7 -MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_DEBUG_BUS_MPCC_BYTE_SELECT' -MPC_DEBUG_BUS_MPCC_BYTE_SELECT__enumvalues = { - 0: 'MPC_DEBUG_BUS_MPCC_BYTE0', - 1: 'MPC_DEBUG_BUS_MPCC_BYTE1', - 2: 'MPC_DEBUG_BUS_MPCC_BYTE2', - 3: 'MPC_DEBUG_BUS_MPCC_BYTE3', -} -MPC_DEBUG_BUS_MPCC_BYTE0 = 0 -MPC_DEBUG_BUS_MPCC_BYTE1 = 1 -MPC_DEBUG_BUS_MPCC_BYTE2 = 2 -MPC_DEBUG_BUS_MPCC_BYTE3 = 3 -MPC_DEBUG_BUS_MPCC_BYTE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_OCSC_COEF_FORMAT' -MPC_OCSC_COEF_FORMAT__enumvalues = { - 0: 'MPC_OCSC_COEF_FORMAT_S2_13', - 1: 'MPC_OCSC_COEF_FORMAT_S3_12', -} -MPC_OCSC_COEF_FORMAT_S2_13 = 0 -MPC_OCSC_COEF_FORMAT_S3_12 = 1 -MPC_OCSC_COEF_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN' -MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN__enumvalues = { - 0: 'MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN_FALSE', - 1: 'MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN_TRUE', -} -MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN_FALSE = 0 -MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN_TRUE = 1 -MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_OUT_CSC_MODE' -MPC_OUT_CSC_MODE__enumvalues = { - 0: 'MPC_OUT_CSC_MODE_0', - 1: 'MPC_OUT_CSC_MODE_1', - 2: 'MPC_OUT_CSC_MODE_2', - 3: 'MPC_OUT_CSC_MODE_RSV', -} -MPC_OUT_CSC_MODE_0 = 0 -MPC_OUT_CSC_MODE_1 = 1 -MPC_OUT_CSC_MODE_2 = 2 -MPC_OUT_CSC_MODE_RSV = 3 -MPC_OUT_CSC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_MODE' -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_MODE__enumvalues = { - 0: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_BYPASS', - 1: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_6BITS', - 2: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_8BITS', - 3: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_9BITS', - 4: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_10BITS', - 5: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_11BITS', - 6: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_12BITS', - 7: 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_PASSTHROUGH', -} -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_BYPASS = 0 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_6BITS = 1 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_8BITS = 2 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_9BITS = 3 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_10BITS = 4 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_11BITS = 5 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_12BITS = 6 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_PASSTHROUGH = 7 -MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPC_OUT_RATE_CONTROL_DISABLE_SET' -MPC_OUT_RATE_CONTROL_DISABLE_SET__enumvalues = { - 0: 'MPC_OUT_RATE_CONTROL_SET_ENABLE', - 1: 'MPC_OUT_RATE_CONTROL_SET_DISABLE', -} -MPC_OUT_RATE_CONTROL_SET_ENABLE = 0 -MPC_OUT_RATE_CONTROL_SET_DISABLE = 1 -MPC_OUT_RATE_CONTROL_DISABLE_SET = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_BG_COLOR_BPC' -MPCC_BG_COLOR_BPC__enumvalues = { - 0: 'MPCC_BG_COLOR_BPC_8bit', - 1: 'MPCC_BG_COLOR_BPC_9bit', - 2: 'MPCC_BG_COLOR_BPC_10bit', - 3: 'MPCC_BG_COLOR_BPC_11bit', - 4: 'MPCC_BG_COLOR_BPC_12bit', -} -MPCC_BG_COLOR_BPC_8bit = 0 -MPCC_BG_COLOR_BPC_9bit = 1 -MPCC_BG_COLOR_BPC_10bit = 2 -MPCC_BG_COLOR_BPC_11bit = 3 -MPCC_BG_COLOR_BPC_12bit = 4 -MPCC_BG_COLOR_BPC = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY' -MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_FALSE', - 1: 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_TRUE', -} -MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_FALSE = 0 -MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_TRUE = 1 -MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE' -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA', - 1: 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN', - 2: 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_GLOBAL_ALPHA', - 3: 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_UNUSED', -} -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA = 0 -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN = 1 -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_GLOBAL_ALPHA = 2 -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_UNUSED = 3 -MPCC_CONTROL_MPCC_ALPHA_BLND_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE' -MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_FALSE', - 1: 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_TRUE', -} -MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_FALSE = 0 -MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_TRUE = 1 -MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE' -MPCC_CONTROL_MPCC_BOT_GAIN_MODE__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE_0', - 1: 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE_1', -} -MPCC_CONTROL_MPCC_BOT_GAIN_MODE_0 = 0 -MPCC_CONTROL_MPCC_BOT_GAIN_MODE_1 = 1 -MPCC_CONTROL_MPCC_BOT_GAIN_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_CONTROL_MPCC_MODE' -MPCC_CONTROL_MPCC_MODE__enumvalues = { - 0: 'MPCC_CONTROL_MPCC_MODE_BYPASS', - 1: 'MPCC_CONTROL_MPCC_MODE_TOP_LAYER_PASSTHROUGH', - 2: 'MPCC_CONTROL_MPCC_MODE_TOP_LAYER_ONLY', - 3: 'MPCC_CONTROL_MPCC_MODE_TOP_BOT_BLENDING', -} -MPCC_CONTROL_MPCC_MODE_BYPASS = 0 -MPCC_CONTROL_MPCC_MODE_TOP_LAYER_PASSTHROUGH = 1 -MPCC_CONTROL_MPCC_MODE_TOP_LAYER_ONLY = 2 -MPCC_CONTROL_MPCC_MODE_TOP_BOT_BLENDING = 3 -MPCC_CONTROL_MPCC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_EN' -MPCC_SM_CONTROL_MPCC_SM_EN__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_EN_FALSE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_EN_TRUE', -} -MPCC_SM_CONTROL_MPCC_SM_EN_FALSE = 0 -MPCC_SM_CONTROL_MPCC_SM_EN_TRUE = 1 -MPCC_SM_CONTROL_MPCC_SM_EN = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT' -MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_FALSE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_TRUE', -} -MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_FALSE = 0 -MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_TRUE = 1 -MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL' -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_NO_FORCE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_RESERVED', - 2: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_LOW', - 3: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_HIGH', -} -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_NO_FORCE = 0 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_RESERVED = 1 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_LOW = 2 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_HIGH = 3 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL' -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_NO_FORCE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_RESERVED', - 2: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_LOW', - 3: 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_HIGH', -} -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_NO_FORCE = 0 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_RESERVED = 1 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_LOW = 2 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_HIGH = 3 -MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT' -MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_FALSE', - 1: 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_TRUE', -} -MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_FALSE = 0 -MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_TRUE = 1 -MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_SM_CONTROL_MPCC_SM_MODE' -MPCC_SM_CONTROL_MPCC_SM_MODE__enumvalues = { - 0: 'MPCC_SM_CONTROL_MPCC_SM_MODE_SINGLE_PLANE', - 2: 'MPCC_SM_CONTROL_MPCC_SM_MODE_ROW_SUBSAMPLING', - 4: 'MPCC_SM_CONTROL_MPCC_SM_MODE_COLUMN_SUBSAMPLING', - 6: 'MPCC_SM_CONTROL_MPCC_SM_MODE_CHECKERBOARD_SUBSAMPLING', -} -MPCC_SM_CONTROL_MPCC_SM_MODE_SINGLE_PLANE = 0 -MPCC_SM_CONTROL_MPCC_SM_MODE_ROW_SUBSAMPLING = 2 -MPCC_SM_CONTROL_MPCC_SM_MODE_COLUMN_SUBSAMPLING = 4 -MPCC_SM_CONTROL_MPCC_SM_MODE_CHECKERBOARD_SUBSAMPLING = 6 -MPCC_SM_CONTROL_MPCC_SM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN' -MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN__enumvalues = { - 0: 'MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN_FALSE', - 1: 'MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN_TRUE', -} -MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN_FALSE = 0 -MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN_TRUE = 1 -MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_GAMUT_REMAP_COEF_FORMAT_ENUM' -MPCC_GAMUT_REMAP_COEF_FORMAT_ENUM__enumvalues = { - 0: 'MPCC_GAMUT_REMAP_COEF_FORMAT_S2_13', - 1: 'MPCC_GAMUT_REMAP_COEF_FORMAT_S3_12', -} -MPCC_GAMUT_REMAP_COEF_FORMAT_S2_13 = 0 -MPCC_GAMUT_REMAP_COEF_FORMAT_S3_12 = 1 -MPCC_GAMUT_REMAP_COEF_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_GAMUT_REMAP_MODE_ENUM' -MPCC_GAMUT_REMAP_MODE_ENUM__enumvalues = { - 0: 'MPCC_GAMUT_REMAP_MODE_0', - 1: 'MPCC_GAMUT_REMAP_MODE_1', - 2: 'MPCC_GAMUT_REMAP_MODE_2', - 3: 'MPCC_GAMUT_REMAP_MODE_RSV', -} -MPCC_GAMUT_REMAP_MODE_0 = 0 -MPCC_GAMUT_REMAP_MODE_1 = 1 -MPCC_GAMUT_REMAP_MODE_2 = 2 -MPCC_GAMUT_REMAP_MODE_RSV = 3 -MPCC_GAMUT_REMAP_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_2_CONFIG_ENUM' -MPCC_OGAM_LUT_2_CONFIG_ENUM__enumvalues = { - 0: 'MPCC_OGAM_LUT_2CFG_NO_MEMORY', - 1: 'MPCC_OGAM_LUT_2CFG_MEMORY_A', - 2: 'MPCC_OGAM_LUT_2CFG_MEMORY_B', -} -MPCC_OGAM_LUT_2CFG_NO_MEMORY = 0 -MPCC_OGAM_LUT_2CFG_MEMORY_A = 1 -MPCC_OGAM_LUT_2CFG_MEMORY_B = 2 -MPCC_OGAM_LUT_2_CONFIG_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_CONFIG_MODE' -MPCC_OGAM_LUT_CONFIG_MODE__enumvalues = { - 0: 'MPCC_OGAM_DIFFERENT_RGB', - 1: 'MPCC_OGAM_ALL_USE_R', -} -MPCC_OGAM_DIFFERENT_RGB = 0 -MPCC_OGAM_ALL_USE_R = 1 -MPCC_OGAM_LUT_CONFIG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_PWL_DISABLE_ENUM' -MPCC_OGAM_LUT_PWL_DISABLE_ENUM__enumvalues = { - 0: 'MPCC_OGAM_ENABLE_PWL', - 1: 'MPCC_OGAM_DISABLE_PWL', -} -MPCC_OGAM_ENABLE_PWL = 0 -MPCC_OGAM_DISABLE_PWL = 1 -MPCC_OGAM_LUT_PWL_DISABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL' -MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL__enumvalues = { - 0: 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMA', - 1: 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMB', -} -MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMA = 0 -MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMB = 1 -MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_RAM_SEL' -MPCC_OGAM_LUT_RAM_SEL__enumvalues = { - 0: 'MPCC_OGAM_RAMA_ACCESS', - 1: 'MPCC_OGAM_RAMB_ACCESS', -} -MPCC_OGAM_RAMA_ACCESS = 0 -MPCC_OGAM_RAMB_ACCESS = 1 -MPCC_OGAM_LUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_READ_COLOR_SEL' -MPCC_OGAM_LUT_READ_COLOR_SEL__enumvalues = { - 0: 'MPCC_OGAM_BLUE_LUT', - 1: 'MPCC_OGAM_GREEN_LUT', - 2: 'MPCC_OGAM_RED_LUT', -} -MPCC_OGAM_BLUE_LUT = 0 -MPCC_OGAM_GREEN_LUT = 1 -MPCC_OGAM_RED_LUT = 2 -MPCC_OGAM_LUT_READ_COLOR_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_READ_DBG' -MPCC_OGAM_LUT_READ_DBG__enumvalues = { - 0: 'MPCC_OGAM_DISABLE_DEBUG', - 1: 'MPCC_OGAM_ENABLE_DEBUG', -} -MPCC_OGAM_DISABLE_DEBUG = 0 -MPCC_OGAM_ENABLE_DEBUG = 1 -MPCC_OGAM_LUT_READ_DBG = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_LUT_SEL_ENUM' -MPCC_OGAM_LUT_SEL_ENUM__enumvalues = { - 0: 'MPCC_OGAM_RAMA', - 1: 'MPCC_OGAM_RAMB', -} -MPCC_OGAM_RAMA = 0 -MPCC_OGAM_RAMB = 1 -MPCC_OGAM_LUT_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_MODE_MPCC_OGAM_MODE_ENUM' -MPCC_OGAM_MODE_MPCC_OGAM_MODE_ENUM__enumvalues = { - 0: 'MPCC_OGAM_MODE_0', - 1: 'MPCC_OGAM_MODE_RSV1', - 2: 'MPCC_OGAM_MODE_2', - 3: 'MPCC_OGAM_MODE_RSV', -} -MPCC_OGAM_MODE_0 = 0 -MPCC_OGAM_MODE_RSV1 = 1 -MPCC_OGAM_MODE_2 = 2 -MPCC_OGAM_MODE_RSV = 3 -MPCC_OGAM_MODE_MPCC_OGAM_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_NUM_SEG' -MPCC_OGAM_NUM_SEG__enumvalues = { - 0: 'MPCC_OGAM_SEGMENTS_1', - 1: 'MPCC_OGAM_SEGMENTS_2', - 2: 'MPCC_OGAM_SEGMENTS_4', - 3: 'MPCC_OGAM_SEGMENTS_8', - 4: 'MPCC_OGAM_SEGMENTS_16', - 5: 'MPCC_OGAM_SEGMENTS_32', - 6: 'MPCC_OGAM_SEGMENTS_64', - 7: 'MPCC_OGAM_SEGMENTS_128', -} -MPCC_OGAM_SEGMENTS_1 = 0 -MPCC_OGAM_SEGMENTS_2 = 1 -MPCC_OGAM_SEGMENTS_4 = 2 -MPCC_OGAM_SEGMENTS_8 = 3 -MPCC_OGAM_SEGMENTS_16 = 4 -MPCC_OGAM_SEGMENTS_32 = 5 -MPCC_OGAM_SEGMENTS_64 = 6 -MPCC_OGAM_SEGMENTS_128 = 7 -MPCC_OGAM_NUM_SEG = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN' -MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN__enumvalues = { - 0: 'MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN_FALSE', - 1: 'MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN_TRUE', -} -MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN_FALSE = 0 -MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN_TRUE = 1 -MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_3DLUT_30BIT_ENUM' -MPCC_MCM_3DLUT_30BIT_ENUM__enumvalues = { - 0: 'MPCC_MCM_3DLUT_36BIT', - 1: 'MPCC_MCM_3DLUT_30BIT', -} -MPCC_MCM_3DLUT_36BIT = 0 -MPCC_MCM_3DLUT_30BIT = 1 -MPCC_MCM_3DLUT_30BIT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_3DLUT_RAM_SEL' -MPCC_MCM_3DLUT_RAM_SEL__enumvalues = { - 0: 'MPCC_MCM_RAM0_ACCESS', - 1: 'MPCC_MCM_RAM1_ACCESS', - 2: 'MPCC_MCM_RAM2_ACCESS', - 3: 'MPCC_MCM_RAM3_ACCESS', -} -MPCC_MCM_RAM0_ACCESS = 0 -MPCC_MCM_RAM1_ACCESS = 1 -MPCC_MCM_RAM2_ACCESS = 2 -MPCC_MCM_RAM3_ACCESS = 3 -MPCC_MCM_3DLUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_3DLUT_SIZE_ENUM' -MPCC_MCM_3DLUT_SIZE_ENUM__enumvalues = { - 0: 'MPCC_MCM_3DLUT_17CUBE', - 1: 'MPCC_MCM_3DLUT_9CUBE', -} -MPCC_MCM_3DLUT_17CUBE = 0 -MPCC_MCM_3DLUT_9CUBE = 1 -MPCC_MCM_3DLUT_SIZE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_GAMMA_LUT_MODE_ENUM' -MPCC_MCM_GAMMA_LUT_MODE_ENUM__enumvalues = { - 0: 'MPCC_MCM_GAMMA_LUT_BYPASS', - 1: 'MPCC_MCM_GAMMA_LUT_RESERVED_1', - 2: 'MPCC_MCM_GAMMA_LUT_RAM_LUT', - 3: 'MPCC_MCM_GAMMA_LUT_RESERVED_3', -} -MPCC_MCM_GAMMA_LUT_BYPASS = 0 -MPCC_MCM_GAMMA_LUT_RESERVED_1 = 1 -MPCC_MCM_GAMMA_LUT_RAM_LUT = 2 -MPCC_MCM_GAMMA_LUT_RESERVED_3 = 3 -MPCC_MCM_GAMMA_LUT_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_GAMMA_LUT_PWL_DISABLE_ENUM' -MPCC_MCM_GAMMA_LUT_PWL_DISABLE_ENUM__enumvalues = { - 0: 'MPCC_MCM_GAMMA_LUT_ENABLE_PWL', - 1: 'MPCC_MCM_GAMMA_LUT_DISABLE_PWL', -} -MPCC_MCM_GAMMA_LUT_ENABLE_PWL = 0 -MPCC_MCM_GAMMA_LUT_DISABLE_PWL = 1 -MPCC_MCM_GAMMA_LUT_PWL_DISABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_GAMMA_LUT_SEL_ENUM' -MPCC_MCM_GAMMA_LUT_SEL_ENUM__enumvalues = { - 0: 'MPCC_MCM_GAMMA_LUT_RAMA', - 1: 'MPCC_MCM_GAMMA_LUT_RAMB', -} -MPCC_MCM_GAMMA_LUT_RAMA = 0 -MPCC_MCM_GAMMA_LUT_RAMB = 1 -MPCC_MCM_GAMMA_LUT_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_LUT_2_MODE_ENUM' -MPCC_MCM_LUT_2_MODE_ENUM__enumvalues = { - 0: 'MPCC_MCM_LUT_2_MODE_BYPASS', - 1: 'MPCC_MCM_LUT_2_MODE_RAMA_LUT', - 2: 'MPCC_MCM_LUT_2_MODE_RAMB_LUT', -} -MPCC_MCM_LUT_2_MODE_BYPASS = 0 -MPCC_MCM_LUT_2_MODE_RAMA_LUT = 1 -MPCC_MCM_LUT_2_MODE_RAMB_LUT = 2 -MPCC_MCM_LUT_2_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_LUT_CONFIG_MODE' -MPCC_MCM_LUT_CONFIG_MODE__enumvalues = { - 0: 'MPCC_MCM_LUT_DIFFERENT_RGB', - 1: 'MPCC_MCM_LUT_ALL_USE_R', -} -MPCC_MCM_LUT_DIFFERENT_RGB = 0 -MPCC_MCM_LUT_ALL_USE_R = 1 -MPCC_MCM_LUT_CONFIG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_LUT_NUM_SEG' -MPCC_MCM_LUT_NUM_SEG__enumvalues = { - 0: 'MPCC_MCM_LUT_SEGMENTS_1', - 1: 'MPCC_MCM_LUT_SEGMENTS_2', - 2: 'MPCC_MCM_LUT_SEGMENTS_4', - 3: 'MPCC_MCM_LUT_SEGMENTS_8', - 4: 'MPCC_MCM_LUT_SEGMENTS_16', - 5: 'MPCC_MCM_LUT_SEGMENTS_32', - 6: 'MPCC_MCM_LUT_SEGMENTS_64', - 7: 'MPCC_MCM_LUT_SEGMENTS_128', -} -MPCC_MCM_LUT_SEGMENTS_1 = 0 -MPCC_MCM_LUT_SEGMENTS_2 = 1 -MPCC_MCM_LUT_SEGMENTS_4 = 2 -MPCC_MCM_LUT_SEGMENTS_8 = 3 -MPCC_MCM_LUT_SEGMENTS_16 = 4 -MPCC_MCM_LUT_SEGMENTS_32 = 5 -MPCC_MCM_LUT_SEGMENTS_64 = 6 -MPCC_MCM_LUT_SEGMENTS_128 = 7 -MPCC_MCM_LUT_NUM_SEG = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_LUT_RAM_SEL' -MPCC_MCM_LUT_RAM_SEL__enumvalues = { - 0: 'MPCC_MCM_LUT_RAMA_ACCESS', - 1: 'MPCC_MCM_LUT_RAMB_ACCESS', -} -MPCC_MCM_LUT_RAMA_ACCESS = 0 -MPCC_MCM_LUT_RAMB_ACCESS = 1 -MPCC_MCM_LUT_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_LUT_READ_COLOR_SEL' -MPCC_MCM_LUT_READ_COLOR_SEL__enumvalues = { - 0: 'MPCC_MCM_LUT_BLUE_LUT', - 1: 'MPCC_MCM_LUT_GREEN_LUT', - 2: 'MPCC_MCM_LUT_RED_LUT', -} -MPCC_MCM_LUT_BLUE_LUT = 0 -MPCC_MCM_LUT_GREEN_LUT = 1 -MPCC_MCM_LUT_RED_LUT = 2 -MPCC_MCM_LUT_READ_COLOR_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_LUT_READ_DBG' -MPCC_MCM_LUT_READ_DBG__enumvalues = { - 0: 'MPCC_MCM_LUT_DISABLE_DEBUG', - 1: 'MPCC_MCM_LUT_ENABLE_DEBUG', -} -MPCC_MCM_LUT_DISABLE_DEBUG = 0 -MPCC_MCM_LUT_ENABLE_DEBUG = 1 -MPCC_MCM_LUT_READ_DBG = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_MEM_PWR_FORCE_ENUM' -MPCC_MCM_MEM_PWR_FORCE_ENUM__enumvalues = { - 0: 'MPCC_MCM_MEM_PWR_FORCE_DIS', - 1: 'MPCC_MCM_MEM_PWR_FORCE_LS', - 2: 'MPCC_MCM_MEM_PWR_FORCE_DS', - 3: 'MPCC_MCM_MEM_PWR_FORCE_SD', -} -MPCC_MCM_MEM_PWR_FORCE_DIS = 0 -MPCC_MCM_MEM_PWR_FORCE_LS = 1 -MPCC_MCM_MEM_PWR_FORCE_DS = 2 -MPCC_MCM_MEM_PWR_FORCE_SD = 3 -MPCC_MCM_MEM_PWR_FORCE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'MPCC_MCM_MEM_PWR_STATE_ENUM' -MPCC_MCM_MEM_PWR_STATE_ENUM__enumvalues = { - 0: 'MPCC_MCM_MEM_PWR_STATE_ON', - 1: 'MPCC_MCM_MEM_PWR_STATE_LS', - 2: 'MPCC_MCM_MEM_PWR_STATE_DS', - 3: 'MPCC_MCM_MEM_PWR_STATE_SD', -} -MPCC_MCM_MEM_PWR_STATE_ON = 0 -MPCC_MCM_MEM_PWR_STATE_LS = 1 -MPCC_MCM_MEM_PWR_STATE_DS = 2 -MPCC_MCM_MEM_PWR_STATE_SD = 3 -MPCC_MCM_MEM_PWR_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_BIT_DEPTH' -ENUM_DPG_BIT_DEPTH__enumvalues = { - 0: 'ENUM_DPG_BIT_DEPTH_6BPC', - 1: 'ENUM_DPG_BIT_DEPTH_8BPC', - 2: 'ENUM_DPG_BIT_DEPTH_10BPC', - 3: 'ENUM_DPG_BIT_DEPTH_12BPC', -} -ENUM_DPG_BIT_DEPTH_6BPC = 0 -ENUM_DPG_BIT_DEPTH_8BPC = 1 -ENUM_DPG_BIT_DEPTH_10BPC = 2 -ENUM_DPG_BIT_DEPTH_12BPC = 3 -ENUM_DPG_BIT_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_DYNAMIC_RANGE' -ENUM_DPG_DYNAMIC_RANGE__enumvalues = { - 0: 'ENUM_DPG_DYNAMIC_RANGE_VESA', - 1: 'ENUM_DPG_DYNAMIC_RANGE_CEA', -} -ENUM_DPG_DYNAMIC_RANGE_VESA = 0 -ENUM_DPG_DYNAMIC_RANGE_CEA = 1 -ENUM_DPG_DYNAMIC_RANGE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_EN' -ENUM_DPG_EN__enumvalues = { - 0: 'ENUM_DPG_DISABLE', - 1: 'ENUM_DPG_ENABLE', -} -ENUM_DPG_DISABLE = 0 -ENUM_DPG_ENABLE = 1 -ENUM_DPG_EN = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_FIELD_POLARITY' -ENUM_DPG_FIELD_POLARITY__enumvalues = { - 0: 'ENUM_DPG_FIELD_POLARITY_TOP_EVEN_BOTTOM_ODD', - 1: 'ENUM_DPG_FIELD_POLARITY_TOP_ODD_BOTTOM_EVEN', -} -ENUM_DPG_FIELD_POLARITY_TOP_EVEN_BOTTOM_ODD = 0 -ENUM_DPG_FIELD_POLARITY_TOP_ODD_BOTTOM_EVEN = 1 -ENUM_DPG_FIELD_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DPG_MODE' -ENUM_DPG_MODE__enumvalues = { - 0: 'ENUM_DPG_MODE_RGB_COLOUR_BLOCK', - 1: 'ENUM_DPG_MODE_YCBCR_601_COLOUR_BLOCK', - 2: 'ENUM_DPG_MODE_YCBCR_709_COLOUR_BLOCK', - 3: 'ENUM_DPG_MODE_VERTICAL_BAR', - 4: 'ENUM_DPG_MODE_HORIZONTAL_BAR', - 5: 'ENUM_DPG_MODE_RGB_SINGLE_RAMP', - 6: 'ENUM_DPG_MODE_RGB_DUAL_RAMP', - 7: 'ENUM_DPG_MODE_RGB_XR_BIAS', -} -ENUM_DPG_MODE_RGB_COLOUR_BLOCK = 0 -ENUM_DPG_MODE_YCBCR_601_COLOUR_BLOCK = 1 -ENUM_DPG_MODE_YCBCR_709_COLOUR_BLOCK = 2 -ENUM_DPG_MODE_VERTICAL_BAR = 3 -ENUM_DPG_MODE_HORIZONTAL_BAR = 4 -ENUM_DPG_MODE_RGB_SINGLE_RAMP = 5 -ENUM_DPG_MODE_RGB_DUAL_RAMP = 6 -ENUM_DPG_MODE_RGB_XR_BIAS = 7 -ENUM_DPG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMTMEM_PWR_DIS_CTRL' -FMTMEM_PWR_DIS_CTRL__enumvalues = { - 0: 'FMTMEM_ENABLE_MEM_PWR_CTRL', - 1: 'FMTMEM_DISABLE_MEM_PWR_CTRL', -} -FMTMEM_ENABLE_MEM_PWR_CTRL = 0 -FMTMEM_DISABLE_MEM_PWR_CTRL = 1 -FMTMEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'FMTMEM_PWR_FORCE_CTRL' -FMTMEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'FMTMEM_NO_FORCE_REQUEST', - 1: 'FMTMEM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'FMTMEM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'FMTMEM_FORCE_SHUT_DOWN_REQUEST', -} -FMTMEM_NO_FORCE_REQUEST = 0 -FMTMEM_FORCE_LIGHT_SLEEP_REQUEST = 1 -FMTMEM_FORCE_DEEP_SLEEP_REQUEST = 2 -FMTMEM_FORCE_SHUT_DOWN_REQUEST = 3 -FMTMEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL' -FMT_BIT_DEPTH_CONTROL_25FRC_SEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Ei', - 1: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Fi', - 2: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Gi', - 3: 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_RESERVED', -} -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Ei = 0 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Fi = 1 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Gi = 2 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL_RESERVED = 3 -FMT_BIT_DEPTH_CONTROL_25FRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL' -FMT_BIT_DEPTH_CONTROL_50FRC_SEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_A', - 1: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_B', - 2: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_C', - 3: 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_D', -} -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_A = 0 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_B = 1 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_C = 2 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL_D = 3 -FMT_BIT_DEPTH_CONTROL_50FRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL' -FMT_BIT_DEPTH_CONTROL_75FRC_SEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_E', - 1: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_F', - 2: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_G', - 3: 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_RESERVED', -} -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_E = 0 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_F = 1 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_G = 2 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL_RESERVED = 3 -FMT_BIT_DEPTH_CONTROL_75FRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH' -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_18BPP', - 1: 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_24BPP', - 2: 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_30BPP', -} -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_18BPP = 0 -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_24BPP = 1 -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_30BPP = 2 -FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH' -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_18BPP', - 1: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_24BPP', - 2: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_30BPP', -} -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_18BPP = 0 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_24BPP = 1 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_30BPP = 2 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL' -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL2', - 1: 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL4', -} -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL2 = 0 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL4 = 1 -FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH' -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_18BPP', - 1: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_24BPP', - 2: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_30BPP', -} -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_18BPP = 0 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_24BPP = 1 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_30BPP = 2 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE' -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE__enumvalues = { - 0: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_TRUNCATION', - 1: 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_ROUNDING', -} -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_TRUNCATION = 0 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_ROUNDING = 1 -FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CLAMP_CNTL_COLOR_FORMAT' -FMT_CLAMP_CNTL_COLOR_FORMAT__enumvalues = { - 0: 'FMT_CLAMP_CNTL_COLOR_FORMAT_6BPC', - 1: 'FMT_CLAMP_CNTL_COLOR_FORMAT_8BPC', - 2: 'FMT_CLAMP_CNTL_COLOR_FORMAT_10BPC', - 3: 'FMT_CLAMP_CNTL_COLOR_FORMAT_12BPC', - 4: 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED1', - 5: 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED2', - 6: 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED3', - 7: 'FMT_CLAMP_CNTL_COLOR_FORMAT_PROGRAMMABLE', -} -FMT_CLAMP_CNTL_COLOR_FORMAT_6BPC = 0 -FMT_CLAMP_CNTL_COLOR_FORMAT_8BPC = 1 -FMT_CLAMP_CNTL_COLOR_FORMAT_10BPC = 2 -FMT_CLAMP_CNTL_COLOR_FORMAT_12BPC = 3 -FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED1 = 4 -FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED2 = 5 -FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED3 = 6 -FMT_CLAMP_CNTL_COLOR_FORMAT_PROGRAMMABLE = 7 -FMT_CLAMP_CNTL_COLOR_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS' -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS__enumvalues = { - 0: 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_DISABLE', - 1: 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_ENABLE', -} -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_DISABLE = 0 -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_ENABLE = 1 -FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_PIXEL_ENCODING' -FMT_CONTROL_PIXEL_ENCODING__enumvalues = { - 0: 'FMT_CONTROL_PIXEL_ENCODING_RGB444_OR_YCBCR444', - 1: 'FMT_CONTROL_PIXEL_ENCODING_YCBCR422', - 2: 'FMT_CONTROL_PIXEL_ENCODING_YCBCR420', - 3: 'FMT_CONTROL_PIXEL_ENCODING_RESERVED', -} -FMT_CONTROL_PIXEL_ENCODING_RGB444_OR_YCBCR444 = 0 -FMT_CONTROL_PIXEL_ENCODING_YCBCR422 = 1 -FMT_CONTROL_PIXEL_ENCODING_YCBCR420 = 2 -FMT_CONTROL_PIXEL_ENCODING_RESERVED = 3 -FMT_CONTROL_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_SUBSAMPLING_MODE' -FMT_CONTROL_SUBSAMPLING_MODE__enumvalues = { - 0: 'FMT_CONTROL_SUBSAMPLING_MODE_DROP', - 1: 'FMT_CONTROL_SUBSAMPLING_MODE_AVERAGE', - 2: 'FMT_CONTROL_SUBSAMPLING_MOME_3_TAP', - 3: 'FMT_CONTROL_SUBSAMPLING_MOME_RESERVED', -} -FMT_CONTROL_SUBSAMPLING_MODE_DROP = 0 -FMT_CONTROL_SUBSAMPLING_MODE_AVERAGE = 1 -FMT_CONTROL_SUBSAMPLING_MOME_3_TAP = 2 -FMT_CONTROL_SUBSAMPLING_MOME_RESERVED = 3 -FMT_CONTROL_SUBSAMPLING_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_CONTROL_SUBSAMPLING_ORDER' -FMT_CONTROL_SUBSAMPLING_ORDER__enumvalues = { - 0: 'FMT_CONTROL_SUBSAMPLING_ORDER_CB_BEFORE_CR', - 1: 'FMT_CONTROL_SUBSAMPLING_ORDER_CR_BEFORE_CB', -} -FMT_CONTROL_SUBSAMPLING_ORDER_CB_BEFORE_CR = 0 -FMT_CONTROL_SUBSAMPLING_ORDER_CR_BEFORE_CB = 1 -FMT_CONTROL_SUBSAMPLING_ORDER = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_DEBUG_CNTL_COLOR_SELECT' -FMT_DEBUG_CNTL_COLOR_SELECT__enumvalues = { - 0: 'FMT_DEBUG_CNTL_COLOR_SELECT_BLUE', - 1: 'FMT_DEBUG_CNTL_COLOR_SELECT_GREEN', - 2: 'FMT_DEBUG_CNTL_COLOR_SELECT_RED1', - 3: 'FMT_DEBUG_CNTL_COLOR_SELECT_RED2', -} -FMT_DEBUG_CNTL_COLOR_SELECT_BLUE = 0 -FMT_DEBUG_CNTL_COLOR_SELECT_GREEN = 1 -FMT_DEBUG_CNTL_COLOR_SELECT_RED1 = 2 -FMT_DEBUG_CNTL_COLOR_SELECT_RED2 = 3 -FMT_DEBUG_CNTL_COLOR_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_DYNAMIC_EXP_MODE' -FMT_DYNAMIC_EXP_MODE__enumvalues = { - 0: 'FMT_DYNAMIC_EXP_MODE_10to12', - 1: 'FMT_DYNAMIC_EXP_MODE_8to12', -} -FMT_DYNAMIC_EXP_MODE_10to12 = 0 -FMT_DYNAMIC_EXP_MODE_8to12 = 1 -FMT_DYNAMIC_EXP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_FRAME_RANDOM_ENABLE_CONTROL' -FMT_FRAME_RANDOM_ENABLE_CONTROL__enumvalues = { - 0: 'FMT_FRAME_RANDOM_ENABLE_RESET_EACH_FRAME', - 1: 'FMT_FRAME_RANDOM_ENABLE_RESET_ONCE', -} -FMT_FRAME_RANDOM_ENABLE_RESET_EACH_FRAME = 0 -FMT_FRAME_RANDOM_ENABLE_RESET_ONCE = 1 -FMT_FRAME_RANDOM_ENABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_POWER_STATE_ENUM' -FMT_POWER_STATE_ENUM__enumvalues = { - 0: 'FMT_POWER_STATE_ENUM_ON', - 1: 'FMT_POWER_STATE_ENUM_LS', - 2: 'FMT_POWER_STATE_ENUM_DS', - 3: 'FMT_POWER_STATE_ENUM_SD', -} -FMT_POWER_STATE_ENUM_ON = 0 -FMT_POWER_STATE_ENUM_LS = 1 -FMT_POWER_STATE_ENUM_DS = 2 -FMT_POWER_STATE_ENUM_SD = 3 -FMT_POWER_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_RGB_RANDOM_ENABLE_CONTROL' -FMT_RGB_RANDOM_ENABLE_CONTROL__enumvalues = { - 0: 'FMT_RGB_RANDOM_ENABLE_CONTROL_DISABLE', - 1: 'FMT_RGB_RANDOM_ENABLE_CONTROL_ENABLE', -} -FMT_RGB_RANDOM_ENABLE_CONTROL_DISABLE = 0 -FMT_RGB_RANDOM_ENABLE_CONTROL_ENABLE = 1 -FMT_RGB_RANDOM_ENABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_CONTROL' -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_CONTROL__enumvalues = { - 0: 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_NO_SWAP', - 1: 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_1', - 2: 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_2', - 3: 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_RESERVED', -} -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_NO_SWAP = 0 -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_1 = 1 -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_2 = 2 -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_RESERVED = 3 -FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_SPATIAL_DITHER_MODE' -FMT_SPATIAL_DITHER_MODE__enumvalues = { - 0: 'FMT_SPATIAL_DITHER_MODE_0', - 1: 'FMT_SPATIAL_DITHER_MODE_1', - 2: 'FMT_SPATIAL_DITHER_MODE_2', - 3: 'FMT_SPATIAL_DITHER_MODE_3', -} -FMT_SPATIAL_DITHER_MODE_0 = 0 -FMT_SPATIAL_DITHER_MODE_1 = 1 -FMT_SPATIAL_DITHER_MODE_2 = 2 -FMT_SPATIAL_DITHER_MODE_3 = 3 -FMT_SPATIAL_DITHER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_STEREOSYNC_OVERRIDE_CONTROL' -FMT_STEREOSYNC_OVERRIDE_CONTROL__enumvalues = { - 0: 'FMT_STEREOSYNC_OVERRIDE_CONTROL_0', - 1: 'FMT_STEREOSYNC_OVERRIDE_CONTROL_1', -} -FMT_STEREOSYNC_OVERRIDE_CONTROL_0 = 0 -FMT_STEREOSYNC_OVERRIDE_CONTROL_1 = 1 -FMT_STEREOSYNC_OVERRIDE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0' -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0__enumvalues = { - 0: 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_BGR', - 1: 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_RGB', -} -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_BGR = 0 -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_RGB = 1 -FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0 = ctypes.c_uint32 # enum - -# values for enumeration 'OPPBUF_DISPLAY_SEGMENTATION' -OPPBUF_DISPLAY_SEGMENTATION__enumvalues = { - 0: 'OPPBUF_DISPLAY_SEGMENTATION_1_SEGMENT', - 1: 'OPPBUF_DISPLAY_SEGMENTATION_2_SEGMENT', - 2: 'OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT', - 3: 'OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT_SPLIT_LEFT', - 4: 'OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT_SPLIT_RIGHT', -} -OPPBUF_DISPLAY_SEGMENTATION_1_SEGMENT = 0 -OPPBUF_DISPLAY_SEGMENTATION_2_SEGMENT = 1 -OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT = 2 -OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT_SPLIT_LEFT = 3 -OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT_SPLIT_RIGHT = 4 -OPPBUF_DISPLAY_SEGMENTATION = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CLOCK_ENABLE_CONTROL' -OPP_PIPE_CLOCK_ENABLE_CONTROL__enumvalues = { - 0: 'OPP_PIPE_CLOCK_DISABLE', - 1: 'OPP_PIPE_CLOCK_ENABLE', -} -OPP_PIPE_CLOCK_DISABLE = 0 -OPP_PIPE_CLOCK_ENABLE = 1 -OPP_PIPE_CLOCK_ENABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_DIGTIAL_BYPASS_CONTROL' -OPP_PIPE_DIGTIAL_BYPASS_CONTROL__enumvalues = { - 0: 'OPP_PIPE_DIGTIAL_BYPASS_DISABLE', - 1: 'OPP_PIPE_DIGTIAL_BYPASS_ENABLE', -} -OPP_PIPE_DIGTIAL_BYPASS_DISABLE = 0 -OPP_PIPE_DIGTIAL_BYPASS_ENABLE = 1 -OPP_PIPE_DIGTIAL_BYPASS_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_CONT_EN' -OPP_PIPE_CRC_CONT_EN__enumvalues = { - 0: 'OPP_PIPE_CRC_MODE_ONE_SHOT', - 1: 'OPP_PIPE_CRC_MODE_CONTINUOUS', -} -OPP_PIPE_CRC_MODE_ONE_SHOT = 0 -OPP_PIPE_CRC_MODE_CONTINUOUS = 1 -OPP_PIPE_CRC_CONT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_EN' -OPP_PIPE_CRC_EN__enumvalues = { - 0: 'OPP_PIPE_CRC_DISABLE', - 1: 'OPP_PIPE_CRC_ENABLE', -} -OPP_PIPE_CRC_DISABLE = 0 -OPP_PIPE_CRC_ENABLE = 1 -OPP_PIPE_CRC_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_INTERLACE_EN' -OPP_PIPE_CRC_INTERLACE_EN__enumvalues = { - 0: 'OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_PROGRESSIVE', - 1: 'OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_INTERLACED', -} -OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_PROGRESSIVE = 0 -OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_INTERLACED = 1 -OPP_PIPE_CRC_INTERLACE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_INTERLACE_MODE' -OPP_PIPE_CRC_INTERLACE_MODE__enumvalues = { - 0: 'OPP_PIPE_CRC_INTERLACE_MODE_TOP', - 1: 'OPP_PIPE_CRC_INTERLACE_MODE_BOTTOM', - 2: 'OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_BOTTOM_FIELD', - 3: 'OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_EACH_FIELD', -} -OPP_PIPE_CRC_INTERLACE_MODE_TOP = 0 -OPP_PIPE_CRC_INTERLACE_MODE_BOTTOM = 1 -OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_BOTTOM_FIELD = 2 -OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_EACH_FIELD = 3 -OPP_PIPE_CRC_INTERLACE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_ONE_SHOT_PENDING' -OPP_PIPE_CRC_ONE_SHOT_PENDING__enumvalues = { - 0: 'OPP_PIPE_CRC_ONE_SHOT_PENDING_NOT_PENDING', - 1: 'OPP_PIPE_CRC_ONE_SHOT_PENDING_PENDING', -} -OPP_PIPE_CRC_ONE_SHOT_PENDING_NOT_PENDING = 0 -OPP_PIPE_CRC_ONE_SHOT_PENDING_PENDING = 1 -OPP_PIPE_CRC_ONE_SHOT_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_PIXEL_SELECT' -OPP_PIPE_CRC_PIXEL_SELECT__enumvalues = { - 0: 'OPP_PIPE_CRC_PIXEL_SELECT_ALL_PIXELS', - 1: 'OPP_PIPE_CRC_PIXEL_SELECT_RESERVED', - 2: 'OPP_PIPE_CRC_PIXEL_SELECT_EVEN_PIXELS', - 3: 'OPP_PIPE_CRC_PIXEL_SELECT_ODD_PIXELS', -} -OPP_PIPE_CRC_PIXEL_SELECT_ALL_PIXELS = 0 -OPP_PIPE_CRC_PIXEL_SELECT_RESERVED = 1 -OPP_PIPE_CRC_PIXEL_SELECT_EVEN_PIXELS = 2 -OPP_PIPE_CRC_PIXEL_SELECT_ODD_PIXELS = 3 -OPP_PIPE_CRC_PIXEL_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_SOURCE_SELECT' -OPP_PIPE_CRC_SOURCE_SELECT__enumvalues = { - 0: 'OPP_PIPE_CRC_SOURCE_SELECT_FMT', - 1: 'OPP_PIPE_CRC_SOURCE_SELECT_SFT', -} -OPP_PIPE_CRC_SOURCE_SELECT_FMT = 0 -OPP_PIPE_CRC_SOURCE_SELECT_SFT = 1 -OPP_PIPE_CRC_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_STEREO_EN' -OPP_PIPE_CRC_STEREO_EN__enumvalues = { - 0: 'OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_NON_STEREO', - 1: 'OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_STEREO', -} -OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_NON_STEREO = 0 -OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_STEREO = 1 -OPP_PIPE_CRC_STEREO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_PIPE_CRC_STEREO_MODE' -OPP_PIPE_CRC_STEREO_MODE__enumvalues = { - 0: 'OPP_PIPE_CRC_STEREO_MODE_LEFT', - 1: 'OPP_PIPE_CRC_STEREO_MODE_RIGHT', - 2: 'OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_RIGHT_EYE', - 3: 'OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_EACH_EYE', -} -OPP_PIPE_CRC_STEREO_MODE_LEFT = 0 -OPP_PIPE_CRC_STEREO_MODE_RIGHT = 1 -OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_RIGHT_EYE = 2 -OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_EACH_EYE = 3 -OPP_PIPE_CRC_STEREO_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_ABM_DEBUG_BUS_SELECT_CONTROL' -OPP_ABM_DEBUG_BUS_SELECT_CONTROL__enumvalues = { - 0: 'DEBUG_BUS_SELECT_ABM0', - 1: 'DEBUG_BUS_SELECT_ABM1', - 2: 'DEBUG_BUS_SELECT_ABM2', - 3: 'DEBUG_BUS_SELECT_ABM3', - 4: 'DEBUG_BUS_SELECT_ABM_RESERVED0', - 5: 'DEBUG_BUS_SELECT_ABM_RESERVED1', -} -DEBUG_BUS_SELECT_ABM0 = 0 -DEBUG_BUS_SELECT_ABM1 = 1 -DEBUG_BUS_SELECT_ABM2 = 2 -DEBUG_BUS_SELECT_ABM3 = 3 -DEBUG_BUS_SELECT_ABM_RESERVED0 = 4 -DEBUG_BUS_SELECT_ABM_RESERVED1 = 5 -OPP_ABM_DEBUG_BUS_SELECT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_DPG_DEBUG_BUS_SELECT_CONTROL' -OPP_DPG_DEBUG_BUS_SELECT_CONTROL__enumvalues = { - 0: 'DEBUG_BUS_SELECT_DPG0', - 1: 'DEBUG_BUS_SELECT_DPG1', - 2: 'DEBUG_BUS_SELECT_DPG2', - 3: 'DEBUG_BUS_SELECT_DPG3', - 4: 'DEBUG_BUS_SELECT_DPG_RESERVED0', - 5: 'DEBUG_BUS_SELECT_DPG_RESERVED1', -} -DEBUG_BUS_SELECT_DPG0 = 0 -DEBUG_BUS_SELECT_DPG1 = 1 -DEBUG_BUS_SELECT_DPG2 = 2 -DEBUG_BUS_SELECT_DPG3 = 3 -DEBUG_BUS_SELECT_DPG_RESERVED0 = 4 -DEBUG_BUS_SELECT_DPG_RESERVED1 = 5 -OPP_DPG_DEBUG_BUS_SELECT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_FMT_DEBUG_BUS_SELECT_CONTROL' -OPP_FMT_DEBUG_BUS_SELECT_CONTROL__enumvalues = { - 0: 'DEBUG_BUS_SELECT_FMT0', - 1: 'DEBUG_BUS_SELECT_FMT1', - 2: 'DEBUG_BUS_SELECT_FMT2', - 3: 'DEBUG_BUS_SELECT_FMT3', - 4: 'DEBUG_BUS_SELECT_FMT_RESERVED0', - 5: 'DEBUG_BUS_SELECT_FMT_RESERVED1', -} -DEBUG_BUS_SELECT_FMT0 = 0 -DEBUG_BUS_SELECT_FMT1 = 1 -DEBUG_BUS_SELECT_FMT2 = 2 -DEBUG_BUS_SELECT_FMT3 = 3 -DEBUG_BUS_SELECT_FMT_RESERVED0 = 4 -DEBUG_BUS_SELECT_FMT_RESERVED1 = 5 -OPP_FMT_DEBUG_BUS_SELECT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_OPPBUF_DEBUG_BUS_SELECT_CONTROL' -OPP_OPPBUF_DEBUG_BUS_SELECT_CONTROL__enumvalues = { - 0: 'DEBUG_BUS_SELECT_OPPBUF0', - 1: 'DEBUG_BUS_SELECT_OPPBUF1', - 2: 'DEBUG_BUS_SELECT_OPPBUF2', - 3: 'DEBUG_BUS_SELECT_OPPBUF3', - 4: 'DEBUG_BUS_SELECT_OPPBUF_RESERVED0', - 5: 'DEBUG_BUS_SELECT_OPPBUF_RESERVED1', -} -DEBUG_BUS_SELECT_OPPBUF0 = 0 -DEBUG_BUS_SELECT_OPPBUF1 = 1 -DEBUG_BUS_SELECT_OPPBUF2 = 2 -DEBUG_BUS_SELECT_OPPBUF3 = 3 -DEBUG_BUS_SELECT_OPPBUF_RESERVED0 = 4 -DEBUG_BUS_SELECT_OPPBUF_RESERVED1 = 5 -OPP_OPPBUF_DEBUG_BUS_SELECT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_OPP_PIPE_DEBUG_BUS_SELECT_CONTROL' -OPP_OPP_PIPE_DEBUG_BUS_SELECT_CONTROL__enumvalues = { - 0: 'DEBUG_BUS_SELECT_OPP_PIPE0', - 1: 'DEBUG_BUS_SELECT_OPP_PIPE1', - 2: 'DEBUG_BUS_SELECT_OPP_PIPE2', - 3: 'DEBUG_BUS_SELECT_OPP_PIPE3', - 4: 'DEBUG_BUS_SELECT_OPP_PIPE_RESERVED0', - 5: 'DEBUG_BUS_SELECT_OPP_PIPE_RESERVED1', -} -DEBUG_BUS_SELECT_OPP_PIPE0 = 0 -DEBUG_BUS_SELECT_OPP_PIPE1 = 1 -DEBUG_BUS_SELECT_OPP_PIPE2 = 2 -DEBUG_BUS_SELECT_OPP_PIPE3 = 3 -DEBUG_BUS_SELECT_OPP_PIPE_RESERVED0 = 4 -DEBUG_BUS_SELECT_OPP_PIPE_RESERVED1 = 5 -OPP_OPP_PIPE_DEBUG_BUS_SELECT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_TEST_CLK_SEL_CONTROL' -OPP_TEST_CLK_SEL_CONTROL__enumvalues = { - 0: 'OPP_TEST_CLK_SEL_DISPCLK_P', - 1: 'OPP_TEST_CLK_SEL_DISPCLK_R', - 2: 'OPP_TEST_CLK_SEL_DISPCLK_ABM0', - 3: 'OPP_TEST_CLK_SEL_DISPCLK_ABM1', - 4: 'OPP_TEST_CLK_SEL_DISPCLK_ABM2', - 5: 'OPP_TEST_CLK_SEL_DISPCLK_ABM3', - 6: 'OPP_TEST_CLK_SEL_RESERVED0', - 7: 'OPP_TEST_CLK_SEL_RESERVED1', - 8: 'OPP_TEST_CLK_SEL_DISPCLK_OPP0', - 9: 'OPP_TEST_CLK_SEL_DISPCLK_OPP1', - 10: 'OPP_TEST_CLK_SEL_DISPCLK_OPP2', - 11: 'OPP_TEST_CLK_SEL_DISPCLK_OPP3', - 12: 'OPP_TEST_CLK_SEL_RESERVED2', - 13: 'OPP_TEST_CLK_SEL_RESERVED3', -} -OPP_TEST_CLK_SEL_DISPCLK_P = 0 -OPP_TEST_CLK_SEL_DISPCLK_R = 1 -OPP_TEST_CLK_SEL_DISPCLK_ABM0 = 2 -OPP_TEST_CLK_SEL_DISPCLK_ABM1 = 3 -OPP_TEST_CLK_SEL_DISPCLK_ABM2 = 4 -OPP_TEST_CLK_SEL_DISPCLK_ABM3 = 5 -OPP_TEST_CLK_SEL_RESERVED0 = 6 -OPP_TEST_CLK_SEL_RESERVED1 = 7 -OPP_TEST_CLK_SEL_DISPCLK_OPP0 = 8 -OPP_TEST_CLK_SEL_DISPCLK_OPP1 = 9 -OPP_TEST_CLK_SEL_DISPCLK_OPP2 = 10 -OPP_TEST_CLK_SEL_DISPCLK_OPP3 = 11 -OPP_TEST_CLK_SEL_RESERVED2 = 12 -OPP_TEST_CLK_SEL_RESERVED3 = 13 -OPP_TEST_CLK_SEL_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_TOP_CLOCK_ENABLE_STATUS' -OPP_TOP_CLOCK_ENABLE_STATUS__enumvalues = { - 0: 'OPP_TOP_CLOCK_DISABLED_STATUS', - 1: 'OPP_TOP_CLOCK_ENABLED_STATUS', -} -OPP_TOP_CLOCK_DISABLED_STATUS = 0 -OPP_TOP_CLOCK_ENABLED_STATUS = 1 -OPP_TOP_CLOCK_ENABLE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'OPP_TOP_CLOCK_GATING_CONTROL' -OPP_TOP_CLOCK_GATING_CONTROL__enumvalues = { - 0: 'OPP_TOP_CLOCK_GATING_ENABLED', - 1: 'OPP_TOP_CLOCK_GATING_DISABLED', -} -OPP_TOP_CLOCK_GATING_ENABLED = 0 -OPP_TOP_CLOCK_GATING_DISABLED = 1 -OPP_TOP_CLOCK_GATING_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DSCRM_EN' -ENUM_DSCRM_EN__enumvalues = { - 0: 'ENUM_DSCRM_DISABLE', - 1: 'ENUM_DSCRM_ENABLE', -} -ENUM_DSCRM_DISABLE = 0 -ENUM_DSCRM_ENABLE = 1 -ENUM_DSCRM_EN = ctypes.c_uint32 # enum - -# values for enumeration 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK' -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_FALSE', - 1: 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_TRUE', -} -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_FALSE = 0 -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_TRUE = 1 -MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'MASTER_UPDATE_LOCK_SEL' -MASTER_UPDATE_LOCK_SEL__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_SEL_0', - 1: 'MASTER_UPDATE_LOCK_SEL_1', - 2: 'MASTER_UPDATE_LOCK_SEL_2', - 3: 'MASTER_UPDATE_LOCK_SEL_3', - 4: 'MASTER_UPDATE_LOCK_SEL_RESERVED4', - 5: 'MASTER_UPDATE_LOCK_SEL_RESERVED5', -} -MASTER_UPDATE_LOCK_SEL_0 = 0 -MASTER_UPDATE_LOCK_SEL_1 = 1 -MASTER_UPDATE_LOCK_SEL_2 = 2 -MASTER_UPDATE_LOCK_SEL_3 = 3 -MASTER_UPDATE_LOCK_SEL_RESERVED4 = 4 -MASTER_UPDATE_LOCK_SEL_RESERVED5 = 5 -MASTER_UPDATE_LOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE' -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE__enumvalues = { - 0: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTH', - 1: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_TOP', - 2: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTTOM', - 3: 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_RESERVED', -} -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTH = 0 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_TOP = 1 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTTOM = 2 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_RESERVED = 3 -MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN' -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN__enumvalues = { - 0: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_FALSE', - 1: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_TRUE', -} -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_FALSE = 0 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_TRUE = 1 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB' -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB__enumvalues = { - 0: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_FALSE', - 1: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_TRUE', -} -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_FALSE = 0 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_TRUE = 1 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR' -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR__enumvalues = { - 0: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_FALSE', - 1: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_TRUE', -} -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_FALSE = 0 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_TRUE = 1 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE' -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE__enumvalues = { - 0: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_BOTH', - 1: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_INTERLACE', - 2: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_PROGRASSIVE', - 3: 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_RESERVED', -} -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_BOTH = 0 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_INTERLACE = 1 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_PROGRASSIVE = 2 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_RESERVED = 3 -OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL' -OTG_CONTROL_OTG_DISABLE_POINT_CNTL__enumvalues = { - 0: 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE', - 1: 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_CURRENT', - 2: 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_VUPDATE', - 3: 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_FIRST', -} -OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE = 0 -OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_CURRENT = 1 -OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_VUPDATE = 2 -OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_FIRST = 3 -OTG_CONTROL_OTG_DISABLE_POINT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL' -OTG_CONTROL_OTG_FIELD_NUMBER_CNTL__enumvalues = { - 0: 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_NORMAL', - 1: 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_DP', -} -OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_NORMAL = 0 -OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_DP = 1 -OTG_CONTROL_OTG_FIELD_NUMBER_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY' -OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY__enumvalues = { - 0: 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_FALSE', - 1: 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_TRUE', -} -OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_FALSE = 0 -OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_TRUE = 1 -OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_MASTER_EN' -OTG_CONTROL_OTG_MASTER_EN__enumvalues = { - 0: 'OTG_CONTROL_OTG_MASTER_EN_FALSE', - 1: 'OTG_CONTROL_OTG_MASTER_EN_TRUE', -} -OTG_CONTROL_OTG_MASTER_EN_FALSE = 0 -OTG_CONTROL_OTG_MASTER_EN_TRUE = 1 -OTG_CONTROL_OTG_MASTER_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_OUT_MUX' -OTG_CONTROL_OTG_OUT_MUX__enumvalues = { - 0: 'OTG_CONTROL_OTG_OUT_MUX_0', - 1: 'OTG_CONTROL_OTG_OUT_MUX_1', - 2: 'OTG_CONTROL_OTG_OUT_MUX_2', -} -OTG_CONTROL_OTG_OUT_MUX_0 = 0 -OTG_CONTROL_OTG_OUT_MUX_1 = 1 -OTG_CONTROL_OTG_OUT_MUX_2 = 2 -OTG_CONTROL_OTG_OUT_MUX = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CONTROL_OTG_START_POINT_CNTL' -OTG_CONTROL_OTG_START_POINT_CNTL__enumvalues = { - 0: 'OTG_CONTROL_OTG_START_POINT_CNTL_NORMAL', - 1: 'OTG_CONTROL_OTG_START_POINT_CNTL_DP', -} -OTG_CONTROL_OTG_START_POINT_CNTL_NORMAL = 0 -OTG_CONTROL_OTG_START_POINT_CNTL_DP = 1 -OTG_CONTROL_OTG_START_POINT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN' -OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN__enumvalues = { - 0: 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_FALSE', - 1: 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_TRUE', -} -OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_FALSE = 0 -OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_TRUE = 1 -OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC1_EN' -OTG_CRC_CNTL_OTG_CRC1_EN__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC1_EN_FALSE', - 1: 'OTG_CRC_CNTL_OTG_CRC1_EN_TRUE', -} -OTG_CRC_CNTL_OTG_CRC1_EN_FALSE = 0 -OTG_CRC_CNTL_OTG_CRC1_EN_TRUE = 1 -OTG_CRC_CNTL_OTG_CRC1_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_CONT_EN' -OTG_CRC_CNTL_OTG_CRC_CONT_EN__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_CONT_EN_FALSE', - 1: 'OTG_CRC_CNTL_OTG_CRC_CONT_EN_TRUE', -} -OTG_CRC_CNTL_OTG_CRC_CONT_EN_FALSE = 0 -OTG_CRC_CNTL_OTG_CRC_CONT_EN_TRUE = 1 -OTG_CRC_CNTL_OTG_CRC_CONT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_CONT_MODE' -OTG_CRC_CNTL_OTG_CRC_CONT_MODE__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_CONT_MODE_RESET', - 1: 'OTG_CRC_CNTL_OTG_CRC_CONT_MODE_NORESET', -} -OTG_CRC_CNTL_OTG_CRC_CONT_MODE_RESET = 0 -OTG_CRC_CNTL_OTG_CRC_CONT_MODE_NORESET = 1 -OTG_CRC_CNTL_OTG_CRC_CONT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_EN' -OTG_CRC_CNTL_OTG_CRC_EN__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_EN_FALSE', - 1: 'OTG_CRC_CNTL_OTG_CRC_EN_TRUE', -} -OTG_CRC_CNTL_OTG_CRC_EN_FALSE = 0 -OTG_CRC_CNTL_OTG_CRC_EN_TRUE = 1 -OTG_CRC_CNTL_OTG_CRC_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE' -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_TOP', - 1: 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTTOM', - 2: 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_BOTTOM', - 3: 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_FIELD', -} -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_TOP = 0 -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTTOM = 1 -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_BOTTOM = 2 -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_FIELD = 3 -OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE' -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_LEFT', - 1: 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_RIGHT', - 2: 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_EYES', - 3: 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_FIELDS', -} -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_LEFT = 0 -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_RIGHT = 1 -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_EYES = 2 -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_FIELDS = 3 -OTG_CRC_CNTL_OTG_CRC_STEREO_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS' -OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_FALSE', - 1: 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_TRUE', -} -OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_FALSE = 0 -OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_TRUE = 1 -OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT' -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UAB', - 1: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UA_B', - 2: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_AB', - 3: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_A_B', - 4: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IAB', - 5: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IA_B', - 6: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_AB', - 7: 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_A_B', -} -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UAB = 0 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UA_B = 1 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_AB = 2 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_A_B = 3 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IAB = 4 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IA_B = 5 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_AB = 6 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_A_B = 7 -OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT' -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT__enumvalues = { - 0: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UAB', - 1: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UA_B', - 2: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_AB', - 3: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_A_B', - 4: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IAB', - 5: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IA_B', - 6: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_AB', - 7: 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_A_B', -} -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UAB = 0 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UA_B = 1 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_AB = 2 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_A_B = 3 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IAB = 4 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IA_B = 5 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_AB = 6 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_A_B = 7 -OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DIG_UPDATE_VCOUNT_MODE' -OTG_DIG_UPDATE_VCOUNT_MODE__enumvalues = { - 0: 'OTG_DIG_UPDATE_VCOUNT_0', - 1: 'OTG_DIG_UPDATE_VCOUNT_1', -} -OTG_DIG_UPDATE_VCOUNT_0 = 0 -OTG_DIG_UPDATE_VCOUNT_1 = 1 -OTG_DIG_UPDATE_VCOUNT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE' -OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE__enumvalues = { - 0: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_0', - 1: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_1', - 2: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_2', - 3: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_3', -} -OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_0 = 0 -OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_1 = 1 -OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_2 = 2 -OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_3 = 3 -OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY' -OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY__enumvalues = { - 0: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_FALSE', - 1: 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_TRUE', -} -OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_FALSE = 0 -OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_TRUE = 1 -OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME' -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME__enumvalues = { - 0: 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_1FRAME', - 1: 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_2FRAME', - 2: 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_4FRAME', - 3: 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_8FRAME', -} -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_1FRAME = 0 -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_2FRAME = 1 -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_4FRAME = 2 -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_8FRAME = 3 -OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN' -OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN__enumvalues = { - 0: 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_FALSE', - 1: 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_TRUE', -} -OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_FALSE = 0 -OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_TRUE = 1 -OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY' -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY__enumvalues = { - 0: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_FALSE', - 1: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_TRUE', -} -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_FALSE = 0 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_TRUE = 1 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY' -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY__enumvalues = { - 0: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_FALSE', - 1: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_TRUE', -} -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_FALSE = 0 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_TRUE = 1 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT' -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT__enumvalues = { - 0: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC0', - 1: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC1', - 2: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICA', - 3: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICB', - 4: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICC', - 5: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICD', - 6: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICE', - 7: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICF', - 8: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD1', - 9: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD2', - 10: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1DATA', - 11: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1CLK', - 12: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2DATA', - 13: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2CLK', - 14: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 15: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_RESERVED', - 16: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_CLK', - 17: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_VSYNC', - 18: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKA', - 19: 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKB', -} -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC0 = 0 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC1 = 1 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICA = 2 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICB = 3 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICC = 4 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICD = 5 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICE = 6 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICF = 7 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD1 = 8 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD2 = 9 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1DATA = 10 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1CLK = 11 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2DATA = 12 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2CLK = 13 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_MANUAL_FLOW_CONTROL = 14 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_RESERVED = 15 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_CLK = 16 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_VSYNC = 17 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKA = 18 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKB = 19 -OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK' -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK__enumvalues = { - 0: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_FALSE', - 1: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_TRUE', -} -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_FALSE = 0 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_TRUE = 1 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR' -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR__enumvalues = { - 0: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_FALSE', - 1: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_TRUE', -} -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_FALSE = 0 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_TRUE = 1 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE' -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE__enumvalues = { - 0: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_DISABLE', - 1: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT', - 2: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT_VCOUNT', - 3: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_RESERVED', -} -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_DISABLE = 0 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT = 1 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT_VCOUNT = 2 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_RESERVED = 3 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL' -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL__enumvalues = { - 0: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_FALSE', - 1: 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_TRUE', -} -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_FALSE = 0 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_TRUE = 1 -OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL' -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL__enumvalues = { - 0: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG0', - 1: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG1', - 2: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG2', - 3: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG3', - 4: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_RESERVED4', - 5: 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_RESERVED5', -} -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG0 = 0 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG1 = 1 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG2 = 2 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG3 = 3 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_RESERVED4 = 4 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_RESERVED5 = 5 -OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_CONTROL3_DIG_UPDATE_EYE_SEL' -OTG_GLOBAL_CONTROL3_DIG_UPDATE_EYE_SEL__enumvalues = { - 0: 'DIG_UPDATE_EYE_SEL_BOTH', - 1: 'DIG_UPDATE_EYE_SEL_LEFT', - 2: 'DIG_UPDATE_EYE_SEL_RIGHT', -} -DIG_UPDATE_EYE_SEL_BOTH = 0 -DIG_UPDATE_EYE_SEL_LEFT = 1 -DIG_UPDATE_EYE_SEL_RIGHT = 2 -OTG_GLOBAL_CONTROL3_DIG_UPDATE_EYE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_CONTROL3_DIG_UPDATE_FIELD_SEL' -OTG_GLOBAL_CONTROL3_DIG_UPDATE_FIELD_SEL__enumvalues = { - 0: 'DIG_UPDATE_FIELD_SEL_BOTH', - 1: 'DIG_UPDATE_FIELD_SEL_TOP', - 2: 'DIG_UPDATE_FIELD_SEL_BOTTOM', - 3: 'DIG_UPDATE_FIELD_SEL_RESERVED', -} -DIG_UPDATE_FIELD_SEL_BOTH = 0 -DIG_UPDATE_FIELD_SEL_TOP = 1 -DIG_UPDATE_FIELD_SEL_BOTTOM = 2 -DIG_UPDATE_FIELD_SEL_RESERVED = 3 -OTG_GLOBAL_CONTROL3_DIG_UPDATE_FIELD_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_FIELD' -OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_FIELD__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_DB_FIELD_BOTH', - 1: 'MASTER_UPDATE_LOCK_DB_FIELD_TOP', - 2: 'MASTER_UPDATE_LOCK_DB_FIELD_BOTTOM', - 3: 'MASTER_UPDATE_LOCK_DB_FIELD_RESERVED', -} -MASTER_UPDATE_LOCK_DB_FIELD_BOTH = 0 -MASTER_UPDATE_LOCK_DB_FIELD_TOP = 1 -MASTER_UPDATE_LOCK_DB_FIELD_BOTTOM = 2 -MASTER_UPDATE_LOCK_DB_FIELD_RESERVED = 3 -OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_FIELD = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_STEREO_SEL' -OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_STEREO_SEL__enumvalues = { - 0: 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_BOTH', - 1: 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_LEFT', - 2: 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_RIGHT', - 3: 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_RESERVED', -} -MASTER_UPDATE_LOCK_DB_STEREO_SEL_BOTH = 0 -MASTER_UPDATE_LOCK_DB_STEREO_SEL_LEFT = 1 -MASTER_UPDATE_LOCK_DB_STEREO_SEL_RIGHT = 2 -MASTER_UPDATE_LOCK_DB_STEREO_SEL_RESERVED = 3 -OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_STEREO_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GLOBAL_UPDATE_LOCK_EN' -OTG_GLOBAL_UPDATE_LOCK_EN__enumvalues = { - 0: 'OTG_GLOBAL_UPDATE_LOCK_DISABLE', - 1: 'OTG_GLOBAL_UPDATE_LOCK_ENABLE', -} -OTG_GLOBAL_UPDATE_LOCK_DISABLE = 0 -OTG_GLOBAL_UPDATE_LOCK_ENABLE = 1 -OTG_GLOBAL_UPDATE_LOCK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_GSL_MASTER_MODE' -OTG_GSL_MASTER_MODE__enumvalues = { - 0: 'OTG_GSL_MASTER_MODE_0', - 1: 'OTG_GSL_MASTER_MODE_1', - 2: 'OTG_GSL_MASTER_MODE_2', - 3: 'OTG_GSL_MASTER_MODE_3', -} -OTG_GSL_MASTER_MODE_0 = 0 -OTG_GSL_MASTER_MODE_1 = 1 -OTG_GSL_MASTER_MODE_2 = 2 -OTG_GSL_MASTER_MODE_3 = 3 -OTG_GSL_MASTER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_HORZ_REPETITION_COUNT' -OTG_HORZ_REPETITION_COUNT__enumvalues = { - 0: 'OTG_HORZ_REPETITION_COUNT_0', - 1: 'OTG_HORZ_REPETITION_COUNT_1', - 2: 'OTG_HORZ_REPETITION_COUNT_2', - 3: 'OTG_HORZ_REPETITION_COUNT_3', - 4: 'OTG_HORZ_REPETITION_COUNT_4', - 5: 'OTG_HORZ_REPETITION_COUNT_5', - 6: 'OTG_HORZ_REPETITION_COUNT_6', - 7: 'OTG_HORZ_REPETITION_COUNT_7', - 8: 'OTG_HORZ_REPETITION_COUNT_8', - 9: 'OTG_HORZ_REPETITION_COUNT_9', - 10: 'OTG_HORZ_REPETITION_COUNT_10', - 11: 'OTG_HORZ_REPETITION_COUNT_11', - 12: 'OTG_HORZ_REPETITION_COUNT_12', - 13: 'OTG_HORZ_REPETITION_COUNT_13', - 14: 'OTG_HORZ_REPETITION_COUNT_14', - 15: 'OTG_HORZ_REPETITION_COUNT_15', -} -OTG_HORZ_REPETITION_COUNT_0 = 0 -OTG_HORZ_REPETITION_COUNT_1 = 1 -OTG_HORZ_REPETITION_COUNT_2 = 2 -OTG_HORZ_REPETITION_COUNT_3 = 3 -OTG_HORZ_REPETITION_COUNT_4 = 4 -OTG_HORZ_REPETITION_COUNT_5 = 5 -OTG_HORZ_REPETITION_COUNT_6 = 6 -OTG_HORZ_REPETITION_COUNT_7 = 7 -OTG_HORZ_REPETITION_COUNT_8 = 8 -OTG_HORZ_REPETITION_COUNT_9 = 9 -OTG_HORZ_REPETITION_COUNT_10 = 10 -OTG_HORZ_REPETITION_COUNT_11 = 11 -OTG_HORZ_REPETITION_COUNT_12 = 12 -OTG_HORZ_REPETITION_COUNT_13 = 13 -OTG_HORZ_REPETITION_COUNT_14 = 14 -OTG_HORZ_REPETITION_COUNT_15 = 15 -OTG_HORZ_REPETITION_COUNT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_H_SYNC_A_POL' -OTG_H_SYNC_A_POL__enumvalues = { - 0: 'OTG_H_SYNC_A_POL_HIGH', - 1: 'OTG_H_SYNC_A_POL_LOW', -} -OTG_H_SYNC_A_POL_HIGH = 0 -OTG_H_SYNC_A_POL_LOW = 1 -OTG_H_SYNC_A_POL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_H_TIMING_DIV_MODE' -OTG_H_TIMING_DIV_MODE__enumvalues = { - 0: 'OTG_H_TIMING_DIV_MODE_NO_DIV', - 1: 'OTG_H_TIMING_DIV_MODE_DIV_BY2', - 2: 'OTG_H_TIMING_DIV_MODE_RESERVED', - 3: 'OTG_H_TIMING_DIV_MODE_DIV_BY4', -} -OTG_H_TIMING_DIV_MODE_NO_DIV = 0 -OTG_H_TIMING_DIV_MODE_DIV_BY2 = 1 -OTG_H_TIMING_DIV_MODE_RESERVED = 2 -OTG_H_TIMING_DIV_MODE_DIV_BY4 = 3 -OTG_H_TIMING_DIV_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_H_TIMING_DIV_MODE_MANUAL' -OTG_H_TIMING_DIV_MODE_MANUAL__enumvalues = { - 0: 'OTG_H_TIMING_DIV_MODE_AUTO', - 1: 'OTG_H_TIMING_DIV_MODE_NOAUTO', -} -OTG_H_TIMING_DIV_MODE_AUTO = 0 -OTG_H_TIMING_DIV_MODE_NOAUTO = 1 -OTG_H_TIMING_DIV_MODE_MANUAL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE' -OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE__enumvalues = { - 0: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_FALSE', - 1: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_TRUE', -} -OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_FALSE = 0 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_TRUE = 1 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD' -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD__enumvalues = { - 0: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT', - 1: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_BOTTOM', - 2: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_TOP', - 3: 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT2', -} -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT = 0 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_BOTTOM = 1 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_TOP = 2 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT2 = 3 -OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK' -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE' -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE__enumvalues = { - 0: 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_FALSE', - 1: 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_TRUE', -} -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_FALSE = 0 -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_TRUE = 1 -OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE' -OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE__enumvalues = { - 0: 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_FALSE', - 1: 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_TRUE', -} -OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_FALSE = 0 -OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_TRUE = 1 -OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_MASTER_UPDATE_LOCK_DB_EN' -OTG_MASTER_UPDATE_LOCK_DB_EN__enumvalues = { - 0: 'OTG_MASTER_UPDATE_LOCK_DISABLE', - 1: 'OTG_MASTER_UPDATE_LOCK_ENABLE', -} -OTG_MASTER_UPDATE_LOCK_DISABLE = 0 -OTG_MASTER_UPDATE_LOCK_ENABLE = 1 -OTG_MASTER_UPDATE_LOCK_DB_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_MASTER_UPDATE_LOCK_GSL_EN' -OTG_MASTER_UPDATE_LOCK_GSL_EN__enumvalues = { - 0: 'OTG_MASTER_UPDATE_LOCK_GSL_EN_FALSE', - 1: 'OTG_MASTER_UPDATE_LOCK_GSL_EN_TRUE', -} -OTG_MASTER_UPDATE_LOCK_GSL_EN_FALSE = 0 -OTG_MASTER_UPDATE_LOCK_GSL_EN_TRUE = 1 -OTG_MASTER_UPDATE_LOCK_GSL_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_MASTER_UPDATE_LOCK_VCOUNT_MODE' -OTG_MASTER_UPDATE_LOCK_VCOUNT_MODE__enumvalues = { - 0: 'OTG_MASTER_UPDATE_LOCK_VCOUNT_0', - 1: 'OTG_MASTER_UPDATE_LOCK_VCOUNT_1', -} -OTG_MASTER_UPDATE_LOCK_VCOUNT_0 = 0 -OTG_MASTER_UPDATE_LOCK_VCOUNT_1 = 1 -OTG_MASTER_UPDATE_LOCK_VCOUNT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL' -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL__enumvalues = { - 0: 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_DISABLE', - 1: 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERA', - 2: 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERB', - 3: 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_RESERVED', -} -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_DISABLE = 0 -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERA = 1 -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERB = 2 -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_RESERVED = 3 -OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR' -OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR__enumvalues = { - 0: 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_FALSE', - 1: 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_TRUE', -} -OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_FALSE = 0 -OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_TRUE = 1 -OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR' -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_FALSE', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_TRUE', -} -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_FALSE = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_TRUE = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE' -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_FALSE', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_TRUE', -} -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_FALSE = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_TRUE = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE' -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_FALSE', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_TRUE', -} -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_FALSE = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_TRUE = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE' -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_FALSE', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_TRUE', -} -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_FALSE = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_TRUE = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE' -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE__enumvalues = { - 0: 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_OFF', - 1: 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_ON', -} -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_OFF = 0 -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_ON = 1 -OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL' -OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL__enumvalues = { - 0: 'OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL_FALSE', - 1: 'OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL_TRUE', -} -OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL_FALSE = 0 -OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL_TRUE = 1 -OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STEREO_CONTROL_OTG_STEREO_EN' -OTG_STEREO_CONTROL_OTG_STEREO_EN__enumvalues = { - 0: 'OTG_STEREO_CONTROL_OTG_STEREO_EN_FALSE', - 1: 'OTG_STEREO_CONTROL_OTG_STEREO_EN_TRUE', -} -OTG_STEREO_CONTROL_OTG_STEREO_EN_FALSE = 0 -OTG_STEREO_CONTROL_OTG_STEREO_EN_TRUE = 1 -OTG_STEREO_CONTROL_OTG_STEREO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY' -OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY__enumvalues = { - 0: 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_FALSE', - 1: 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_TRUE', -} -OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_FALSE = 0 -OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_TRUE = 1 -OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY' -OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY__enumvalues = { - 0: 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_FALSE', - 1: 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_TRUE', -} -OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_FALSE = 0 -OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_TRUE = 1 -OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE' -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE__enumvalues = { - 0: 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_NO', - 1: 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RIGHT', - 2: 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_LEFT', - 3: 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RESERVED', -} -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_NO = 0 -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RIGHT = 1 -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_LEFT = 2 -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RESERVED = 3 -OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR' -OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_FALSE', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_TRUE', -} -OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_FALSE = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_TRUE = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT' -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC0', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_INTERLACE', - 2: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICA', - 3: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICB', - 4: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_HSYNCA', - 5: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC1', - 6: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICC', - 7: 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICD', -} -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC0 = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_INTERLACE = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICA = 2 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICB = 3 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_HSYNCA = 4 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC1 = 5 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICC = 6 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICD = 7 -OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN' -OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_FALSE', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_TRUE', -} -OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_FALSE = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_TRUE = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT' -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG0', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG1', - 2: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG2', - 3: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG3', - 4: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_RESERVED4', - 5: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_RESERVED5', -} -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG0 = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG1 = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG2 = 2 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG3 = 3 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_RESERVED4 = 4 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_RESERVED5 = 5 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT' -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT__enumvalues = { - 0: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC0', - 1: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICA_PIN', - 2: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICB_PIN', - 3: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICC_PIN', - 4: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICD_PIN', - 5: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICE_PIN', - 6: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICF_PIN', - 7: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKA_PIN', - 8: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKB_PIN', - 9: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_CLK_PIN', - 10: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_VSYNC_PIN', - 11: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD1', - 12: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD2', - 13: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_BLON_Y_PIN', - 14: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_RESERVED14', - 15: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_LOCK', - 16: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GSL_ALLOW_FLIP', - 17: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_PENDING', - 18: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_SOF', - 19: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HSYNC', - 20: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_VSYNC', - 21: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL', - 22: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 23: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC1', - 24: 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_FLIP_PENDING', -} -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC0 = 0 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICA_PIN = 1 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICB_PIN = 2 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICC_PIN = 3 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICD_PIN = 4 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICE_PIN = 5 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICF_PIN = 6 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKA_PIN = 7 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKB_PIN = 8 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_CLK_PIN = 9 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_VSYNC_PIN = 10 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD1 = 11 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD2 = 12 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_BLON_Y_PIN = 13 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_RESERVED14 = 14 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_LOCK = 15 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GSL_ALLOW_FLIP = 16 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_PENDING = 17 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_SOF = 18 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HSYNC = 19 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_VSYNC = 20 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL = 21 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_MANUAL_FLOW_CONTROL = 22 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC1 = 23 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_FLIP_PENDING = 24 -OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL' -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL__enumvalues = { - 0: 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_0', - 1: 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_1', - 2: 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_2', - 3: 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_3', -} -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_0 = 0 -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_1 = 1 -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_2 = 2 -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_3 = 3 -OTG_TRIGA_FALLING_EDGE_DETECT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_FREQUENCY_SELECT' -OTG_TRIGA_FREQUENCY_SELECT__enumvalues = { - 0: 'OTG_TRIGA_FREQUENCY_SELECT_0', - 1: 'OTG_TRIGA_FREQUENCY_SELECT_1', - 2: 'OTG_TRIGA_FREQUENCY_SELECT_2', - 3: 'OTG_TRIGA_FREQUENCY_SELECT_3', -} -OTG_TRIGA_FREQUENCY_SELECT_0 = 0 -OTG_TRIGA_FREQUENCY_SELECT_1 = 1 -OTG_TRIGA_FREQUENCY_SELECT_2 = 2 -OTG_TRIGA_FREQUENCY_SELECT_3 = 3 -OTG_TRIGA_FREQUENCY_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL' -OTG_TRIGA_RISING_EDGE_DETECT_CNTL__enumvalues = { - 0: 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_0', - 1: 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_1', - 2: 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_2', - 3: 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_3', -} -OTG_TRIGA_RISING_EDGE_DETECT_CNTL_0 = 0 -OTG_TRIGA_RISING_EDGE_DETECT_CNTL_1 = 1 -OTG_TRIGA_RISING_EDGE_DETECT_CNTL_2 = 2 -OTG_TRIGA_RISING_EDGE_DETECT_CNTL_3 = 3 -OTG_TRIGA_RISING_EDGE_DETECT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR' -OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_FALSE', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_TRUE', -} -OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_FALSE = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_TRUE = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT' -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC0', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_INTERLACE', - 2: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICA', - 3: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICB', - 4: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_HSYNCA', - 5: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC1', - 6: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICC', - 7: 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICD', -} -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC0 = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_INTERLACE = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICA = 2 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICB = 3 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_HSYNCA = 4 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC1 = 5 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICC = 6 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICD = 7 -OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN' -OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_FALSE', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_TRUE', -} -OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_FALSE = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_TRUE = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT' -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG0', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG1', - 2: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG2', - 3: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG3', - 4: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_RESERVED4', - 5: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_RESERVED5', -} -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG0 = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG1 = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG2 = 2 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG3 = 3 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_RESERVED4 = 4 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_RESERVED5 = 5 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT' -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT__enumvalues = { - 0: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC0', - 1: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICA_PIN', - 2: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICB_PIN', - 3: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICC_PIN', - 4: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICD_PIN', - 5: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICE_PIN', - 6: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICF_PIN', - 7: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKA_PIN', - 8: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKB_PIN', - 9: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_CLK_PIN', - 10: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_VSYNC_PIN', - 11: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD1', - 12: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD2', - 13: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_BLON_Y_PIN', - 14: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_RESERVED14', - 15: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_LOCK', - 16: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GSL_ALLOW_FLIP', - 17: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_PENDING', - 18: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_SOF', - 19: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HSYNC', - 20: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_VSYNC', - 21: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL', - 22: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 23: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC1', - 24: 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_FLIP_PENDING', -} -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC0 = 0 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICA_PIN = 1 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICB_PIN = 2 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICC_PIN = 3 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICD_PIN = 4 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICE_PIN = 5 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICF_PIN = 6 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKA_PIN = 7 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKB_PIN = 8 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_CLK_PIN = 9 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_VSYNC_PIN = 10 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD1 = 11 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD2 = 12 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_BLON_Y_PIN = 13 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_RESERVED14 = 14 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_LOCK = 15 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GSL_ALLOW_FLIP = 16 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_PENDING = 17 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_SOF = 18 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HSYNC = 19 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_VSYNC = 20 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL = 21 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_MANUAL_FLOW_CONTROL = 22 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC1 = 23 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_FLIP_PENDING = 24 -OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL' -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL__enumvalues = { - 0: 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_0', - 1: 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_1', - 2: 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_2', - 3: 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_3', -} -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_0 = 0 -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_1 = 1 -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_2 = 2 -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_3 = 3 -OTG_TRIGB_FALLING_EDGE_DETECT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_FREQUENCY_SELECT' -OTG_TRIGB_FREQUENCY_SELECT__enumvalues = { - 0: 'OTG_TRIGB_FREQUENCY_SELECT_0', - 1: 'OTG_TRIGB_FREQUENCY_SELECT_1', - 2: 'OTG_TRIGB_FREQUENCY_SELECT_2', - 3: 'OTG_TRIGB_FREQUENCY_SELECT_3', -} -OTG_TRIGB_FREQUENCY_SELECT_0 = 0 -OTG_TRIGB_FREQUENCY_SELECT_1 = 1 -OTG_TRIGB_FREQUENCY_SELECT_2 = 2 -OTG_TRIGB_FREQUENCY_SELECT_3 = 3 -OTG_TRIGB_FREQUENCY_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL' -OTG_TRIGB_RISING_EDGE_DETECT_CNTL__enumvalues = { - 0: 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_0', - 1: 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_1', - 2: 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_2', - 3: 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_3', -} -OTG_TRIGB_RISING_EDGE_DETECT_CNTL_0 = 0 -OTG_TRIGB_RISING_EDGE_DETECT_CNTL_1 = 1 -OTG_TRIGB_RISING_EDGE_DETECT_CNTL_2 = 2 -OTG_TRIGB_RISING_EDGE_DETECT_CNTL_3 = 3 -OTG_TRIGB_RISING_EDGE_DETECT_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK' -OTG_UPDATE_LOCK_OTG_UPDATE_LOCK__enumvalues = { - 0: 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_FALSE', - 1: 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_TRUE', -} -OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_FALSE = 0 -OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_TRUE = 1 -OTG_UPDATE_LOCK_OTG_UPDATE_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR' -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_TRUE', -} -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_FALSE = 0 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_TRUE = 1 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE' -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_TRUE', -} -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_FALSE = 0 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_TRUE = 1 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE' -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_TRUE', -} -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_FALSE = 0 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_TRUE = 1 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY' -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_TRUE', -} -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_FALSE = 0 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_TRUE = 1 -OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR' -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_CLEAR_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_TRUE', -} -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_CLEAR_FALSE = 0 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_TRUE = 1 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE' -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_TRUE', -} -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_FALSE = 0 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_TRUE = 1 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE' -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_TRUE', -} -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_FALSE = 0 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_TRUE = 1 -OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR' -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_CLEAR_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_TRUE', -} -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_CLEAR_FALSE = 0 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_TRUE = 1 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE' -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_TRUE', -} -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_FALSE = 0 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_TRUE = 1 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE' -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE__enumvalues = { - 0: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_FALSE', - 1: 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_TRUE', -} -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_FALSE = 0 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_TRUE = 1 -OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE' -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE__enumvalues = { - 0: 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_DISABLE', - 1: 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERA', - 2: 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERB', - 3: 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_RESERVED', -} -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_DISABLE = 0 -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERA = 1 -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERB = 2 -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_RESERVED = 3 -OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR' -OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR__enumvalues = { - 0: 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_FALSE', - 1: 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_TRUE', -} -OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_FALSE = 0 -OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_TRUE = 1 -OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR' -OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR__enumvalues = { - 0: 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_FALSE', - 1: 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_TRUE', -} -OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_FALSE = 0 -OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_TRUE = 1 -OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_VUPDATE_BLOCK_DISABLE' -OTG_VUPDATE_BLOCK_DISABLE__enumvalues = { - 0: 'OTG_VUPDATE_BLOCK_DISABLE_OFF', - 1: 'OTG_VUPDATE_BLOCK_DISABLE_ON', -} -OTG_VUPDATE_BLOCK_DISABLE_OFF = 0 -OTG_VUPDATE_BLOCK_DISABLE_ON = 1 -OTG_VUPDATE_BLOCK_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_SYNC_A_POL' -OTG_V_SYNC_A_POL__enumvalues = { - 0: 'OTG_V_SYNC_A_POL_HIGH', - 1: 'OTG_V_SYNC_A_POL_LOW', -} -OTG_V_SYNC_A_POL_HIGH = 0 -OTG_V_SYNC_A_POL_LOW = 1 -OTG_V_SYNC_A_POL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_SYNC_MODE' -OTG_V_SYNC_MODE__enumvalues = { - 0: 'OTG_V_SYNC_MODE_HSYNC', - 1: 'OTG_V_SYNC_MODE_HBLANK', -} -OTG_V_SYNC_MODE_HSYNC = 0 -OTG_V_SYNC_MODE_HBLANK = 1 -OTG_V_SYNC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD' -OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_0', - 1: 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_1', -} -OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_0 = 0 -OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_1 = 1 -OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT' -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_DISABLE', - 1: 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_ENABLE', -} -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_DISABLE = 0 -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_ENABLE = 1 -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC' -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_DISABLE', - 1: 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_ENABLE', -} -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_DISABLE = 0 -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_ENABLE = 1 -OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL' -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_FALSE', - 1: 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_TRUE', -} -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_FALSE = 0 -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_TRUE = 1 -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL' -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL__enumvalues = { - 0: 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_FALSE', - 1: 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_TRUE', -} -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_FALSE = 0 -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_TRUE = 1 -OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK' -OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK__enumvalues = { - 0: 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK_FALSE', - 1: 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK_TRUE', -} -OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK_FALSE = 0 -OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK_TRUE = 1 -OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL' -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL__enumvalues = { - 0: 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG0', - 1: 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG1', - 2: 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG2', - 3: 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG3', - 4: 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_RESERVED4', - 5: 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_RESERVED5', -} -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG0 = 0 -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG1 = 1 -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG2 = 2 -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG3 = 3 -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_RESERVED4 = 4 -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_RESERVED5 = 5 -OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DC_DMCUB_INT_TYPE' -DC_DMCUB_INT_TYPE__enumvalues = { - 0: 'INT_LEVEL', - 1: 'INT_PULSE', -} -INT_LEVEL = 0 -INT_PULSE = 1 -DC_DMCUB_INT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DC_DMCUB_TIMER_WINDOW' -DC_DMCUB_TIMER_WINDOW__enumvalues = { - 0: 'BITS_31_0', - 1: 'BITS_32_1', - 2: 'BITS_33_2', - 3: 'BITS_34_3', - 4: 'BITS_35_4', - 5: 'BITS_36_5', - 6: 'BITS_37_6', - 7: 'BITS_38_7', -} -BITS_31_0 = 0 -BITS_32_1 = 1 -BITS_33_2 = 2 -BITS_34_3 = 3 -BITS_35_4 = 4 -BITS_36_5 = 5 -BITS_37_6 = 6 -BITS_38_7 = 7 -DC_DMCUB_TIMER_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'INVALID_REG_ACCESS_TYPE' -INVALID_REG_ACCESS_TYPE__enumvalues = { - 0: 'REG_UNALLOCATED_ADDR_WRITE', - 1: 'REG_UNALLOCATED_ADDR_READ', - 2: 'REG_VIRTUAL_WRITE', - 3: 'REG_VIRTUAL_READ', - 4: 'REG_SECURE_VIOLATE_WRITE', - 5: 'REG_SECURE_VIOLATE_READ', -} -REG_UNALLOCATED_ADDR_WRITE = 0 -REG_UNALLOCATED_ADDR_READ = 1 -REG_VIRTUAL_WRITE = 2 -REG_VIRTUAL_READ = 3 -REG_SECURE_VIOLATE_WRITE = 4 -REG_SECURE_VIOLATE_READ = 5 -INVALID_REG_ACCESS_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DMU_DC_GPU_TIMER_READ_SELECT' -DMU_DC_GPU_TIMER_READ_SELECT__enumvalues = { - 0: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_0', - 1: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_1', - 2: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_2', - 3: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_3', - 4: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_4', - 5: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_5', - 6: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_6', - 7: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_7', - 8: 'RESERVED_8', - 9: 'RESERVED_9', - 10: 'RESERVED_10', - 11: 'RESERVED_11', - 12: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_STARTUP_12', - 13: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_STARTUP_13', - 14: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_STARTUP_14', - 15: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_STARTUP_15', - 16: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_STARTUP_16', - 17: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_STARTUP_17', - 18: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_STARTUP_18', - 19: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_STARTUP_19', - 20: 'RESERVED_20', - 21: 'RESERVED_21', - 22: 'RESERVED_22', - 23: 'RESERVED_23', - 24: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM_24', - 25: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM_25', - 26: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VSYNC_NOM_26', - 27: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VSYNC_NOM_27', - 28: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VSYNC_NOM_28', - 29: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VSYNC_NOM_29', - 30: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VSYNC_NOM_30', - 31: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VSYNC_NOM_31', - 32: 'RESERVED_32', - 33: 'RESERVED_33', - 34: 'RESERVED_34', - 35: 'RESERVED_35', - 36: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VREADY_36', - 37: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VREADY_37', - 38: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VREADY_38', - 39: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VREADY_39', - 40: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VREADY_40', - 41: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VREADY_41', - 42: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VREADY_42', - 43: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VREADY_43', - 44: 'RESERVED_44', - 45: 'RESERVED_45', - 46: 'RESERVED_46', - 47: 'RESERVED_47', - 48: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_48', - 49: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_49', - 50: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_50', - 51: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_51', - 52: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_52', - 53: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_53', - 54: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_54', - 55: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_55', - 56: 'RESERVED_56', - 57: 'RESERVED_57', - 58: 'RESERVED_58', - 59: 'RESERVED_59', - 60: 'RESERVED_60', - 61: 'RESERVED_61', - 62: 'RESERVED_62', - 63: 'RESERVED_63', - 64: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_NO_LOCK_64', - 65: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_NO_LOCK_65', - 66: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_NO_LOCK_66', - 67: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_NO_LOCK_67', - 68: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_NO_LOCK_68', - 69: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_NO_LOCK_69', - 70: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_NO_LOCK_70', - 71: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_NO_LOCK_71', - 72: 'RESERVED_72', - 73: 'RESERVED_73', - 74: 'RESERVED_74', - 75: 'RESERVED_75', - 76: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_AWAY_76', - 77: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_AWAY_77', - 78: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_AWAY_78', - 79: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_AWAY_79', - 80: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_AWAY_80', - 81: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_AWAY_81', - 82: 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_AWAY_82', - 83: 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_AWAY_83', - 84: 'RESERVED_84', - 85: 'RESERVED_85', - 86: 'RESERVED_86', - 87: 'RESERVED_87', - 88: 'RESERVED_88', - 89: 'RESERVED_89', - 90: 'RESERVED_90', - 91: 'RESERVED_91', -} -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_0 = 0 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_1 = 1 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_2 = 2 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_3 = 3 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_4 = 4 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_5 = 5 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_6 = 6 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_7 = 7 -RESERVED_8 = 8 -RESERVED_9 = 9 -RESERVED_10 = 10 -RESERVED_11 = 11 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_STARTUP_12 = 12 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_STARTUP_13 = 13 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_STARTUP_14 = 14 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_STARTUP_15 = 15 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_STARTUP_16 = 16 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_STARTUP_17 = 17 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_STARTUP_18 = 18 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_STARTUP_19 = 19 -RESERVED_20 = 20 -RESERVED_21 = 21 -RESERVED_22 = 22 -RESERVED_23 = 23 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM_24 = 24 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM_25 = 25 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VSYNC_NOM_26 = 26 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VSYNC_NOM_27 = 27 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VSYNC_NOM_28 = 28 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VSYNC_NOM_29 = 29 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VSYNC_NOM_30 = 30 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VSYNC_NOM_31 = 31 -RESERVED_32 = 32 -RESERVED_33 = 33 -RESERVED_34 = 34 -RESERVED_35 = 35 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VREADY_36 = 36 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VREADY_37 = 37 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VREADY_38 = 38 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VREADY_39 = 39 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VREADY_40 = 40 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VREADY_41 = 41 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VREADY_42 = 42 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VREADY_43 = 43 -RESERVED_44 = 44 -RESERVED_45 = 45 -RESERVED_46 = 46 -RESERVED_47 = 47 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_48 = 48 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_49 = 49 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_50 = 50 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_51 = 51 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_52 = 52 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_53 = 53 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_54 = 54 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_55 = 55 -RESERVED_56 = 56 -RESERVED_57 = 57 -RESERVED_58 = 58 -RESERVED_59 = 59 -RESERVED_60 = 60 -RESERVED_61 = 61 -RESERVED_62 = 62 -RESERVED_63 = 63 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_NO_LOCK_64 = 64 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_NO_LOCK_65 = 65 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_NO_LOCK_66 = 66 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_NO_LOCK_67 = 67 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_NO_LOCK_68 = 68 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_NO_LOCK_69 = 69 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_NO_LOCK_70 = 70 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_NO_LOCK_71 = 71 -RESERVED_72 = 72 -RESERVED_73 = 73 -RESERVED_74 = 74 -RESERVED_75 = 75 -DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_AWAY_76 = 76 -DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_AWAY_77 = 77 -DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_AWAY_78 = 78 -DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_AWAY_79 = 79 -DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_AWAY_80 = 80 -DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_AWAY_81 = 81 -DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_AWAY_82 = 82 -DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_AWAY_83 = 83 -RESERVED_84 = 84 -RESERVED_85 = 85 -RESERVED_86 = 86 -RESERVED_87 = 87 -RESERVED_88 = 88 -RESERVED_89 = 89 -RESERVED_90 = 90 -RESERVED_91 = 91 -DMU_DC_GPU_TIMER_READ_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DMU_DC_GPU_TIMER_START_POSITION' -DMU_DC_GPU_TIMER_START_POSITION__enumvalues = { - 0: 'DMU_GPU_TIMER_START_0_END_27', - 1: 'DMU_GPU_TIMER_START_1_END_28', - 2: 'DMU_GPU_TIMER_START_2_END_29', - 3: 'DMU_GPU_TIMER_START_3_END_30', - 4: 'DMU_GPU_TIMER_START_4_END_31', - 5: 'DMU_GPU_TIMER_START_6_END_33', - 6: 'DMU_GPU_TIMER_START_8_END_35', - 7: 'DMU_GPU_TIMER_START_10_END_37', -} -DMU_GPU_TIMER_START_0_END_27 = 0 -DMU_GPU_TIMER_START_1_END_28 = 1 -DMU_GPU_TIMER_START_2_END_29 = 2 -DMU_GPU_TIMER_START_3_END_30 = 3 -DMU_GPU_TIMER_START_4_END_31 = 4 -DMU_GPU_TIMER_START_6_END_33 = 5 -DMU_GPU_TIMER_START_8_END_35 = 6 -DMU_GPU_TIMER_START_10_END_37 = 7 -DMU_DC_GPU_TIMER_START_POSITION = ctypes.c_uint32 # enum - -# values for enumeration 'IHC_INTERRUPT_DEST' -IHC_INTERRUPT_DEST__enumvalues = { - 0: 'INTERRUPT_SENT_TO_IH', - 1: 'INTERRUPT_SENT_TO_DMCUB', -} -INTERRUPT_SENT_TO_IH = 0 -INTERRUPT_SENT_TO_DMCUB = 1 -IHC_INTERRUPT_DEST = ctypes.c_uint32 # enum - -# values for enumeration 'IHC_INTERRUPT_LINE_STATUS' -IHC_INTERRUPT_LINE_STATUS__enumvalues = { - 0: 'INTERRUPT_LINE_NOT_ASSERTED', - 1: 'INTERRUPT_LINE_ASSERTED', -} -INTERRUPT_LINE_NOT_ASSERTED = 0 -INTERRUPT_LINE_ASSERTED = 1 -IHC_INTERRUPT_LINE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'DC_SMU_INTERRUPT_ENABLE' -DC_SMU_INTERRUPT_ENABLE__enumvalues = { - 0: 'DISABLE_THE_INTERRUPT', - 1: 'ENABLE_THE_INTERRUPT', -} -DISABLE_THE_INTERRUPT = 0 -ENABLE_THE_INTERRUPT = 1 -DC_SMU_INTERRUPT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DMU_CLOCK_ON' -DMU_CLOCK_ON__enumvalues = { - 0: 'DMU_CLOCK_STATUS_ON', - 1: 'DMU_CLOCK_STATUS_OFF', -} -DMU_CLOCK_STATUS_ON = 0 -DMU_CLOCK_STATUS_OFF = 1 -DMU_CLOCK_ON = ctypes.c_uint32 # enum - -# values for enumeration 'SMU_INTR' -SMU_INTR__enumvalues = { - 0: 'SMU_MSG_INTR_NOOP', - 1: 'SET_SMU_MSG_INTR', -} -SMU_MSG_INTR_NOOP = 0 -SET_SMU_MSG_INTR = 1 -SMU_INTR = ctypes.c_uint32 # enum - -# values for enumeration 'ALLOW_SR_ON_TRANS_REQ' -ALLOW_SR_ON_TRANS_REQ__enumvalues = { - 0: 'ALLOW_SR_ON_TRANS_REQ_ENABLE', - 1: 'ALLOW_SR_ON_TRANS_REQ_DISABLE', -} -ALLOW_SR_ON_TRANS_REQ_ENABLE = 0 -ALLOW_SR_ON_TRANS_REQ_DISABLE = 1 -ALLOW_SR_ON_TRANS_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'AMCLOCK_ENABLE' -AMCLOCK_ENABLE__enumvalues = { - 0: 'ENABLE_AMCLK0', - 1: 'ENABLE_AMCLK1', -} -ENABLE_AMCLK0 = 0 -ENABLE_AMCLK1 = 1 -AMCLOCK_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'CLEAR_SMU_INTR' -CLEAR_SMU_INTR__enumvalues = { - 0: 'SMU_INTR_STATUS_NOOP', - 1: 'SMU_INTR_STATUS_CLEAR', -} -SMU_INTR_STATUS_NOOP = 0 -SMU_INTR_STATUS_CLEAR = 1 -CLEAR_SMU_INTR = ctypes.c_uint32 # enum - -# values for enumeration 'CLOCK_BRANCH_SOFT_RESET' -CLOCK_BRANCH_SOFT_RESET__enumvalues = { - 0: 'CLOCK_BRANCH_SOFT_RESET_NOOP', - 1: 'CLOCK_BRANCH_SOFT_RESET_FORCE', -} -CLOCK_BRANCH_SOFT_RESET_NOOP = 0 -CLOCK_BRANCH_SOFT_RESET_FORCE = 1 -CLOCK_BRANCH_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO0_SOURCE_SEL' -DCCG_AUDIO_DTO0_SOURCE_SEL__enumvalues = { - 0: 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG0', - 1: 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG1', - 2: 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG2', - 3: 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG3', - 4: 'DCCG_AUDIO_DTO0_SOURCE_SEL_RESERVED', -} -DCCG_AUDIO_DTO0_SOURCE_SEL_OTG0 = 0 -DCCG_AUDIO_DTO0_SOURCE_SEL_OTG1 = 1 -DCCG_AUDIO_DTO0_SOURCE_SEL_OTG2 = 2 -DCCG_AUDIO_DTO0_SOURCE_SEL_OTG3 = 3 -DCCG_AUDIO_DTO0_SOURCE_SEL_RESERVED = 4 -DCCG_AUDIO_DTO0_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO2_SOURCE_SEL' -DCCG_AUDIO_DTO2_SOURCE_SEL__enumvalues = { - 0: 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0', - 1: 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0_DIV2', -} -DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0 = 0 -DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0_DIV2 = 1 -DCCG_AUDIO_DTO2_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO_SEL' -DCCG_AUDIO_DTO_SEL__enumvalues = { - 0: 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO0', - 1: 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO1', - 2: 'DCCG_AUDIO_DTO_SEL_NO_AUDIO_DTO', - 3: 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO_DTBCLK', -} -DCCG_AUDIO_DTO_SEL_AUDIO_DTO0 = 0 -DCCG_AUDIO_DTO_SEL_AUDIO_DTO1 = 1 -DCCG_AUDIO_DTO_SEL_NO_AUDIO_DTO = 2 -DCCG_AUDIO_DTO_SEL_AUDIO_DTO_DTBCLK = 3 -DCCG_AUDIO_DTO_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_AUDIO_DTO_USE_512FBR_DTO' -DCCG_AUDIO_DTO_USE_512FBR_DTO__enumvalues = { - 0: 'DCCG_AUDIO_DTO_USE_128FBR_FOR_DP', - 1: 'DCCG_AUDIO_DTO_USE_512FBR_FOR_DP', -} -DCCG_AUDIO_DTO_USE_128FBR_FOR_DP = 0 -DCCG_AUDIO_DTO_USE_512FBR_FOR_DP = 1 -DCCG_AUDIO_DTO_USE_512FBR_DTO = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_DBG_BLOCK_SEL' -DCCG_DBG_BLOCK_SEL__enumvalues = { - 0: 'DCCG_DBG_BLOCK_SEL_DCCG', - 1: 'DCCG_DBG_BLOCK_SEL_PMON', - 2: 'DCCG_DBG_BLOCK_SEL_PMON2', -} -DCCG_DBG_BLOCK_SEL_DCCG = 0 -DCCG_DBG_BLOCK_SEL_PMON = 1 -DCCG_DBG_BLOCK_SEL_PMON2 = 2 -DCCG_DBG_BLOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_DBG_EN' -DCCG_DBG_EN__enumvalues = { - 0: 'DCCG_DBG_EN_DISABLE', - 1: 'DCCG_DBG_EN_ENABLE', -} -DCCG_DBG_EN_DISABLE = 0 -DCCG_DBG_EN_ENABLE = 1 -DCCG_DBG_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_DEEP_COLOR_CNTL' -DCCG_DEEP_COLOR_CNTL__enumvalues = { - 0: 'DCCG_DEEP_COLOR_DTO_DISABLE', - 1: 'DCCG_DEEP_COLOR_DTO_5_4_RATIO', - 2: 'DCCG_DEEP_COLOR_DTO_3_2_RATIO', - 3: 'DCCG_DEEP_COLOR_DTO_2_1_RATIO', -} -DCCG_DEEP_COLOR_DTO_DISABLE = 0 -DCCG_DEEP_COLOR_DTO_5_4_RATIO = 1 -DCCG_DEEP_COLOR_DTO_3_2_RATIO = 2 -DCCG_DEEP_COLOR_DTO_2_1_RATIO = 3 -DCCG_DEEP_COLOR_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_FIFO_ERRDET_OVR_EN' -DCCG_FIFO_ERRDET_OVR_EN__enumvalues = { - 0: 'DCCG_FIFO_ERRDET_OVR_DISABLE', - 1: 'DCCG_FIFO_ERRDET_OVR_ENABLE', -} -DCCG_FIFO_ERRDET_OVR_DISABLE = 0 -DCCG_FIFO_ERRDET_OVR_ENABLE = 1 -DCCG_FIFO_ERRDET_OVR_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_FIFO_ERRDET_RESET' -DCCG_FIFO_ERRDET_RESET__enumvalues = { - 0: 'DCCG_FIFO_ERRDET_RESET_NOOP', - 1: 'DCCG_FIFO_ERRDET_RESET_FORCE', -} -DCCG_FIFO_ERRDET_RESET_NOOP = 0 -DCCG_FIFO_ERRDET_RESET_FORCE = 1 -DCCG_FIFO_ERRDET_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_FIFO_ERRDET_STATE' -DCCG_FIFO_ERRDET_STATE__enumvalues = { - 0: 'DCCG_FIFO_ERRDET_STATE_CALIBRATION', - 1: 'DCCG_FIFO_ERRDET_STATE_DETECTION', -} -DCCG_FIFO_ERRDET_STATE_CALIBRATION = 0 -DCCG_FIFO_ERRDET_STATE_DETECTION = 1 -DCCG_FIFO_ERRDET_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_MODE_HSYNC' -DCCG_PERF_MODE_HSYNC__enumvalues = { - 0: 'DCCG_PERF_MODE_HSYNC_NOOP', - 1: 'DCCG_PERF_MODE_HSYNC_START', -} -DCCG_PERF_MODE_HSYNC_NOOP = 0 -DCCG_PERF_MODE_HSYNC_START = 1 -DCCG_PERF_MODE_HSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_MODE_VSYNC' -DCCG_PERF_MODE_VSYNC__enumvalues = { - 0: 'DCCG_PERF_MODE_VSYNC_NOOP', - 1: 'DCCG_PERF_MODE_VSYNC_START', -} -DCCG_PERF_MODE_VSYNC_NOOP = 0 -DCCG_PERF_MODE_VSYNC_START = 1 -DCCG_PERF_MODE_VSYNC = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_OTG_SELECT' -DCCG_PERF_OTG_SELECT__enumvalues = { - 0: 'DCCG_PERF_SEL_OTG0', - 1: 'DCCG_PERF_SEL_OTG1', - 2: 'DCCG_PERF_SEL_OTG2', - 3: 'DCCG_PERF_SEL_OTG3', - 4: 'DCCG_PERF_SEL_RESERVED', -} -DCCG_PERF_SEL_OTG0 = 0 -DCCG_PERF_SEL_OTG1 = 1 -DCCG_PERF_SEL_OTG2 = 2 -DCCG_PERF_SEL_OTG3 = 3 -DCCG_PERF_SEL_RESERVED = 4 -DCCG_PERF_OTG_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DCCG_PERF_RUN' -DCCG_PERF_RUN__enumvalues = { - 0: 'DCCG_PERF_RUN_NOOP', - 1: 'DCCG_PERF_RUN_START', -} -DCCG_PERF_RUN_NOOP = 0 -DCCG_PERF_RUN_START = 1 -DCCG_PERF_RUN = ctypes.c_uint32 # enum - -# values for enumeration 'DC_MEM_GLOBAL_PWR_REQ_DIS' -DC_MEM_GLOBAL_PWR_REQ_DIS__enumvalues = { - 0: 'DC_MEM_GLOBAL_PWR_REQ_ENABLE', - 1: 'DC_MEM_GLOBAL_PWR_REQ_DISABLE', -} -DC_MEM_GLOBAL_PWR_REQ_ENABLE = 0 -DC_MEM_GLOBAL_PWR_REQ_DISABLE = 1 -DC_MEM_GLOBAL_PWR_REQ_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'DIO_FIFO_ERROR' -DIO_FIFO_ERROR__enumvalues = { - 0: 'DIO_FIFO_ERROR_00', - 1: 'DIO_FIFO_ERROR_01', - 2: 'DIO_FIFO_ERROR_10', - 3: 'DIO_FIFO_ERROR_11', -} -DIO_FIFO_ERROR_00 = 0 -DIO_FIFO_ERROR_01 = 1 -DIO_FIFO_ERROR_10 = 2 -DIO_FIFO_ERROR_11 = 3 -DIO_FIFO_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'DISABLE_CLOCK_GATING' -DISABLE_CLOCK_GATING__enumvalues = { - 0: 'CLOCK_GATING_ENABLED', - 1: 'CLOCK_GATING_DISABLED', -} -CLOCK_GATING_ENABLED = 0 -CLOCK_GATING_DISABLED = 1 -DISABLE_CLOCK_GATING = ctypes.c_uint32 # enum - -# values for enumeration 'DISABLE_CLOCK_GATING_IN_DCO' -DISABLE_CLOCK_GATING_IN_DCO__enumvalues = { - 0: 'CLOCK_GATING_ENABLED_IN_DCO', - 1: 'CLOCK_GATING_DISABLED_IN_DCO', -} -CLOCK_GATING_ENABLED_IN_DCO = 0 -CLOCK_GATING_DISABLED_IN_DCO = 1 -DISABLE_CLOCK_GATING_IN_DCO = ctypes.c_uint32 # enum - -# values for enumeration 'DISPCLK_CHG_FWD_CORR_DISABLE' -DISPCLK_CHG_FWD_CORR_DISABLE__enumvalues = { - 0: 'DISPCLK_CHG_FWD_CORR_ENABLE_AT_BEGINNING', - 1: 'DISPCLK_CHG_FWD_CORR_DISABLE_AT_BEGINNING', -} -DISPCLK_CHG_FWD_CORR_ENABLE_AT_BEGINNING = 0 -DISPCLK_CHG_FWD_CORR_DISABLE_AT_BEGINNING = 1 -DISPCLK_CHG_FWD_CORR_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DISPCLK_FREQ_RAMP_DONE' -DISPCLK_FREQ_RAMP_DONE__enumvalues = { - 0: 'DISPCLK_FREQ_RAMP_IN_PROGRESS', - 1: 'DISPCLK_FREQ_RAMP_COMPLETED', -} -DISPCLK_FREQ_RAMP_IN_PROGRESS = 0 -DISPCLK_FREQ_RAMP_COMPLETED = 1 -DISPCLK_FREQ_RAMP_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'DPREFCLK_SRC_SEL' -DPREFCLK_SRC_SEL__enumvalues = { - 0: 'DPREFCLK_SRC_SEL_CK', - 1: 'DPREFCLK_SRC_SEL_P0PLL', - 2: 'DPREFCLK_SRC_SEL_P1PLL', - 3: 'DPREFCLK_SRC_SEL_P2PLL', -} -DPREFCLK_SRC_SEL_CK = 0 -DPREFCLK_SRC_SEL_P0PLL = 1 -DPREFCLK_SRC_SEL_P1PLL = 2 -DPREFCLK_SRC_SEL_P2PLL = 3 -DPREFCLK_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DTO_DS_DISABLE' -DP_DTO_DS_DISABLE__enumvalues = { - 0: 'DP_DTO_DESPREAD_DISABLE', - 1: 'DP_DTO_DESPREAD_ENABLE', -} -DP_DTO_DESPREAD_DISABLE = 0 -DP_DTO_DESPREAD_ENABLE = 1 -DP_DTO_DS_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DS_HW_CAL_ENABLE' -DS_HW_CAL_ENABLE__enumvalues = { - 0: 'DS_HW_CAL_DIS', - 1: 'DS_HW_CAL_EN', -} -DS_HW_CAL_DIS = 0 -DS_HW_CAL_EN = 1 -DS_HW_CAL_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DS_JITTER_COUNT_SRC_SEL' -DS_JITTER_COUNT_SRC_SEL__enumvalues = { - 0: 'DS_JITTER_COUNT_SRC_SEL0', - 1: 'DS_JITTER_COUNT_SRC_SEL1', -} -DS_JITTER_COUNT_SRC_SEL0 = 0 -DS_JITTER_COUNT_SRC_SEL1 = 1 -DS_JITTER_COUNT_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DS_REF_SRC' -DS_REF_SRC__enumvalues = { - 0: 'DS_REF_IS_XTALIN', - 1: 'DS_REF_IS_EXT_GENLOCK', - 2: 'DS_REF_IS_PCIE', -} -DS_REF_IS_XTALIN = 0 -DS_REF_IS_EXT_GENLOCK = 1 -DS_REF_IS_PCIE = 2 -DS_REF_SRC = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLKC_IN_PHASE' -DVOACLKC_IN_PHASE__enumvalues = { - 0: 'DVOACLKC_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', - 1: 'DVOACLKC_IN_PHASE_WITH_PCLK_DVO', -} -DVOACLKC_IN_OPPOSITE_PHASE_WITH_PCLK_DVO = 0 -DVOACLKC_IN_PHASE_WITH_PCLK_DVO = 1 -DVOACLKC_IN_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLKC_MVP_IN_PHASE' -DVOACLKC_MVP_IN_PHASE__enumvalues = { - 0: 'DVOACLKC_MVP_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', - 1: 'DVOACLKC_MVP_IN_PHASE_WITH_PCLK_DVO', -} -DVOACLKC_MVP_IN_OPPOSITE_PHASE_WITH_PCLK_DVO = 0 -DVOACLKC_MVP_IN_PHASE_WITH_PCLK_DVO = 1 -DVOACLKC_MVP_IN_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE' -DVOACLKC_MVP_SKEW_PHASE_OVERRIDE__enumvalues = { - 0: 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_DISABLE', - 1: 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_ENABLE', -} -DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_DISABLE = 0 -DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_ENABLE = 1 -DVOACLKC_MVP_SKEW_PHASE_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLKD_IN_PHASE' -DVOACLKD_IN_PHASE__enumvalues = { - 0: 'DVOACLKD_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', - 1: 'DVOACLKD_IN_PHASE_WITH_PCLK_DVO', -} -DVOACLKD_IN_OPPOSITE_PHASE_WITH_PCLK_DVO = 0 -DVOACLKD_IN_PHASE_WITH_PCLK_DVO = 1 -DVOACLKD_IN_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLK_COARSE_SKEW_CNTL' -DVOACLK_COARSE_SKEW_CNTL__enumvalues = { - 0: 'DVOACLK_COARSE_SKEW_CNTL_NO_ADJUSTMENT', - 1: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_1_STEP', - 2: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_2_STEPS', - 3: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_3_STEPS', - 4: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_4_STEPS', - 5: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_5_STEPS', - 6: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_6_STEPS', - 7: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_7_STEPS', - 8: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_8_STEPS', - 9: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_9_STEPS', - 10: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_10_STEPS', - 11: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_11_STEPS', - 12: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_12_STEPS', - 13: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_13_STEPS', - 14: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_14_STEPS', - 15: 'DVOACLK_COARSE_SKEW_CNTL_DELAY_15_STEPS', - 16: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_1_STEP', - 17: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_2_STEPS', - 18: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_3_STEPS', - 19: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_4_STEPS', - 20: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_5_STEPS', - 21: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_6_STEPS', - 22: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_7_STEPS', - 23: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_8_STEPS', - 24: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_9_STEPS', - 25: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_10_STEPS', - 26: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_11_STEPS', - 27: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_12_STEPS', - 28: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_13_STEPS', - 29: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_14_STEPS', - 30: 'DVOACLK_COARSE_SKEW_CNTL_EARLY_15_STEPS', -} -DVOACLK_COARSE_SKEW_CNTL_NO_ADJUSTMENT = 0 -DVOACLK_COARSE_SKEW_CNTL_DELAY_1_STEP = 1 -DVOACLK_COARSE_SKEW_CNTL_DELAY_2_STEPS = 2 -DVOACLK_COARSE_SKEW_CNTL_DELAY_3_STEPS = 3 -DVOACLK_COARSE_SKEW_CNTL_DELAY_4_STEPS = 4 -DVOACLK_COARSE_SKEW_CNTL_DELAY_5_STEPS = 5 -DVOACLK_COARSE_SKEW_CNTL_DELAY_6_STEPS = 6 -DVOACLK_COARSE_SKEW_CNTL_DELAY_7_STEPS = 7 -DVOACLK_COARSE_SKEW_CNTL_DELAY_8_STEPS = 8 -DVOACLK_COARSE_SKEW_CNTL_DELAY_9_STEPS = 9 -DVOACLK_COARSE_SKEW_CNTL_DELAY_10_STEPS = 10 -DVOACLK_COARSE_SKEW_CNTL_DELAY_11_STEPS = 11 -DVOACLK_COARSE_SKEW_CNTL_DELAY_12_STEPS = 12 -DVOACLK_COARSE_SKEW_CNTL_DELAY_13_STEPS = 13 -DVOACLK_COARSE_SKEW_CNTL_DELAY_14_STEPS = 14 -DVOACLK_COARSE_SKEW_CNTL_DELAY_15_STEPS = 15 -DVOACLK_COARSE_SKEW_CNTL_EARLY_1_STEP = 16 -DVOACLK_COARSE_SKEW_CNTL_EARLY_2_STEPS = 17 -DVOACLK_COARSE_SKEW_CNTL_EARLY_3_STEPS = 18 -DVOACLK_COARSE_SKEW_CNTL_EARLY_4_STEPS = 19 -DVOACLK_COARSE_SKEW_CNTL_EARLY_5_STEPS = 20 -DVOACLK_COARSE_SKEW_CNTL_EARLY_6_STEPS = 21 -DVOACLK_COARSE_SKEW_CNTL_EARLY_7_STEPS = 22 -DVOACLK_COARSE_SKEW_CNTL_EARLY_8_STEPS = 23 -DVOACLK_COARSE_SKEW_CNTL_EARLY_9_STEPS = 24 -DVOACLK_COARSE_SKEW_CNTL_EARLY_10_STEPS = 25 -DVOACLK_COARSE_SKEW_CNTL_EARLY_11_STEPS = 26 -DVOACLK_COARSE_SKEW_CNTL_EARLY_12_STEPS = 27 -DVOACLK_COARSE_SKEW_CNTL_EARLY_13_STEPS = 28 -DVOACLK_COARSE_SKEW_CNTL_EARLY_14_STEPS = 29 -DVOACLK_COARSE_SKEW_CNTL_EARLY_15_STEPS = 30 -DVOACLK_COARSE_SKEW_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'DVOACLK_FINE_SKEW_CNTL' -DVOACLK_FINE_SKEW_CNTL__enumvalues = { - 0: 'DVOACLK_FINE_SKEW_CNTL_NO_ADJUSTMENT', - 1: 'DVOACLK_FINE_SKEW_CNTL_DELAY_1_STEP', - 2: 'DVOACLK_FINE_SKEW_CNTL_DELAY_2_STEPS', - 3: 'DVOACLK_FINE_SKEW_CNTL_DELAY_3_STEPS', - 4: 'DVOACLK_FINE_SKEW_CNTL_EARLY_1_STEP', - 5: 'DVOACLK_FINE_SKEW_CNTL_EARLY_2_STEPS', - 6: 'DVOACLK_FINE_SKEW_CNTL_EARLY_3_STEPS', - 7: 'DVOACLK_FINE_SKEW_CNTL_EARLY_4_STEPS', -} -DVOACLK_FINE_SKEW_CNTL_NO_ADJUSTMENT = 0 -DVOACLK_FINE_SKEW_CNTL_DELAY_1_STEP = 1 -DVOACLK_FINE_SKEW_CNTL_DELAY_2_STEPS = 2 -DVOACLK_FINE_SKEW_CNTL_DELAY_3_STEPS = 3 -DVOACLK_FINE_SKEW_CNTL_EARLY_1_STEP = 4 -DVOACLK_FINE_SKEW_CNTL_EARLY_2_STEPS = 5 -DVOACLK_FINE_SKEW_CNTL_EARLY_3_STEPS = 6 -DVOACLK_FINE_SKEW_CNTL_EARLY_4_STEPS = 7 -DVOACLK_FINE_SKEW_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'DVO_ENABLE_RST' -DVO_ENABLE_RST__enumvalues = { - 0: 'DVO_ENABLE_RST_DISABLE', - 1: 'DVO_ENABLE_RST_ENABLE', -} -DVO_ENABLE_RST_DISABLE = 0 -DVO_ENABLE_RST_ENABLE = 1 -DVO_ENABLE_RST = ctypes.c_uint32 # enum - -# values for enumeration 'ENABLE' -ENABLE__enumvalues = { - 0: 'DISABLE_THE_FEATURE', - 1: 'ENABLE_THE_FEATURE', -} -DISABLE_THE_FEATURE = 0 -ENABLE_THE_FEATURE = 1 -ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'ENABLE_CLOCK' -ENABLE_CLOCK__enumvalues = { - 0: 'ENABLE_THE_REFCLK', - 1: 'ENABLE_THE_FUNC_CLOCK', -} -ENABLE_THE_REFCLK = 0 -ENABLE_THE_FUNC_CLOCK = 1 -ENABLE_CLOCK = ctypes.c_uint32 # enum - -# values for enumeration 'FORCE_DISABLE_CLOCK' -FORCE_DISABLE_CLOCK__enumvalues = { - 0: 'NOT_FORCE_THE_CLOCK_DISABLED', - 1: 'FORCE_THE_CLOCK_DISABLED', -} -NOT_FORCE_THE_CLOCK_DISABLED = 0 -FORCE_THE_CLOCK_DISABLED = 1 -FORCE_DISABLE_CLOCK = ctypes.c_uint32 # enum - -# values for enumeration 'HDMICHARCLK_SRC_SEL' -HDMICHARCLK_SRC_SEL__enumvalues = { - 0: 'HDMICHARCLK_SRC_SEL_UNIPHYA', - 1: 'HDMICHARCLK_SRC_SEL_UNIPHYB', - 2: 'HDMICHARCLK_SRC_SEL_UNIPHYC', - 3: 'HDMICHARCLK_SRC_SEL_UNIPHYD', - 4: 'HDMICHARCLK_SRC_SEL_UNIPHYE', - 5: 'HDMICHARCLK_SRC_SEL_SRC_RESERVED', -} -HDMICHARCLK_SRC_SEL_UNIPHYA = 0 -HDMICHARCLK_SRC_SEL_UNIPHYB = 1 -HDMICHARCLK_SRC_SEL_UNIPHYC = 2 -HDMICHARCLK_SRC_SEL_UNIPHYD = 3 -HDMICHARCLK_SRC_SEL_UNIPHYE = 4 -HDMICHARCLK_SRC_SEL_SRC_RESERVED = 5 -HDMICHARCLK_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'HDMISTREAMCLK_DTO_FORCE_DIS' -HDMISTREAMCLK_DTO_FORCE_DIS__enumvalues = { - 0: 'DTO_FORCE_NO_BYPASS', - 1: 'DTO_FORCE_BYPASS', -} -DTO_FORCE_NO_BYPASS = 0 -DTO_FORCE_BYPASS = 1 -HDMISTREAMCLK_DTO_FORCE_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'HDMISTREAMCLK_SRC_SEL' -HDMISTREAMCLK_SRC_SEL__enumvalues = { - 0: 'SEL_REFCLK0', - 1: 'SEL_DTBCLK0', - 2: 'SEL_DTBCLK1', -} -SEL_REFCLK0 = 0 -SEL_DTBCLK0 = 1 -SEL_DTBCLK1 = 2 -HDMISTREAMCLK_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'JITTER_REMOVE_DISABLE' -JITTER_REMOVE_DISABLE__enumvalues = { - 0: 'ENABLE_JITTER_REMOVAL', - 1: 'DISABLE_JITTER_REMOVAL', -} -ENABLE_JITTER_REMOVAL = 0 -DISABLE_JITTER_REMOVAL = 1 -JITTER_REMOVE_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL' -MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL__enumvalues = { - 0: 'MICROSECOND_TIME_BASE_CLOCK_IS_XTALIN', - 1: 'MICROSECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK', -} -MICROSECOND_TIME_BASE_CLOCK_IS_XTALIN = 0 -MICROSECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK = 1 -MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL' -MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL__enumvalues = { - 0: 'MILLISECOND_TIME_BASE_CLOCK_IS_XTALIN', - 1: 'MILLISECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK', -} -MILLISECOND_TIME_BASE_CLOCK_IS_XTALIN = 0 -MILLISECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK = 1 -MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_ADD_PIXEL' -OTG_ADD_PIXEL__enumvalues = { - 0: 'OTG_ADD_PIXEL_NOOP', - 1: 'OTG_ADD_PIXEL_FORCE', -} -OTG_ADD_PIXEL_NOOP = 0 -OTG_ADD_PIXEL_FORCE = 1 -OTG_ADD_PIXEL = ctypes.c_uint32 # enum - -# values for enumeration 'OTG_DROP_PIXEL' -OTG_DROP_PIXEL__enumvalues = { - 0: 'OTG_DROP_PIXEL_NOOP', - 1: 'OTG_DROP_PIXEL_FORCE', -} -OTG_DROP_PIXEL_NOOP = 0 -OTG_DROP_PIXEL_FORCE = 1 -OTG_DROP_PIXEL = ctypes.c_uint32 # enum - -# values for enumeration 'PHYSYMCLK_FORCE_EN' -PHYSYMCLK_FORCE_EN__enumvalues = { - 0: 'PHYSYMCLK_FORCE_EN_DISABLE', - 1: 'PHYSYMCLK_FORCE_EN_ENABLE', -} -PHYSYMCLK_FORCE_EN_DISABLE = 0 -PHYSYMCLK_FORCE_EN_ENABLE = 1 -PHYSYMCLK_FORCE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PHYSYMCLK_FORCE_SRC_SEL' -PHYSYMCLK_FORCE_SRC_SEL__enumvalues = { - 0: 'PHYSYMCLK_FORCE_SRC_SYMCLK', - 1: 'PHYSYMCLK_FORCE_SRC_PHYD18CLK', - 2: 'PHYSYMCLK_FORCE_SRC_PHYD32CLK', -} -PHYSYMCLK_FORCE_SRC_SYMCLK = 0 -PHYSYMCLK_FORCE_SRC_PHYD18CLK = 1 -PHYSYMCLK_FORCE_SRC_PHYD32CLK = 2 -PHYSYMCLK_FORCE_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_PHYPLL_PIXEL_RATE_SOURCE' -PIPE_PHYPLL_PIXEL_RATE_SOURCE__enumvalues = { - 0: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYA', - 1: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYB', - 2: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYC', - 3: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYD', - 4: 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_RESERVED', -} -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYA = 0 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYB = 1 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYC = 2 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYD = 3 -PIPE_PHYPLL_PIXEL_RATE_SOURCE_RESERVED = 4 -PIPE_PHYPLL_PIXEL_RATE_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_PIXEL_RATE_PLL_SOURCE' -PIPE_PIXEL_RATE_PLL_SOURCE__enumvalues = { - 0: 'PIPE_PIXEL_RATE_PLL_SOURCE_PHYPLL', - 1: 'PIPE_PIXEL_RATE_PLL_SOURCE_DISPPLL', -} -PIPE_PIXEL_RATE_PLL_SOURCE_PHYPLL = 0 -PIPE_PIXEL_RATE_PLL_SOURCE_DISPPLL = 1 -PIPE_PIXEL_RATE_PLL_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_PIXEL_RATE_SOURCE' -PIPE_PIXEL_RATE_SOURCE__enumvalues = { - 0: 'PIPE_PIXEL_RATE_SOURCE_P0PLL', - 1: 'PIPE_PIXEL_RATE_SOURCE_P1PLL', - 2: 'PIPE_PIXEL_RATE_SOURCE_P2PLL', -} -PIPE_PIXEL_RATE_SOURCE_P0PLL = 0 -PIPE_PIXEL_RATE_SOURCE_P1PLL = 1 -PIPE_PIXEL_RATE_SOURCE_P2PLL = 2 -PIPE_PIXEL_RATE_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'PLL_CFG_IF_SOFT_RESET' -PLL_CFG_IF_SOFT_RESET__enumvalues = { - 0: 'PLL_CFG_IF_SOFT_RESET_NOOP', - 1: 'PLL_CFG_IF_SOFT_RESET_FORCE', -} -PLL_CFG_IF_SOFT_RESET_NOOP = 0 -PLL_CFG_IF_SOFT_RESET_FORCE = 1 -PLL_CFG_IF_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'SYMCLK_FE_FORCE_EN' -SYMCLK_FE_FORCE_EN__enumvalues = { - 0: 'SYMCLK_FE_FORCE_EN_DISABLE', - 1: 'SYMCLK_FE_FORCE_EN_ENABLE', -} -SYMCLK_FE_FORCE_EN_DISABLE = 0 -SYMCLK_FE_FORCE_EN_ENABLE = 1 -SYMCLK_FE_FORCE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'SYMCLK_FE_FORCE_SRC' -SYMCLK_FE_FORCE_SRC__enumvalues = { - 0: 'SYMCLK_FE_FORCE_SRC_UNIPHYA', - 1: 'SYMCLK_FE_FORCE_SRC_UNIPHYB', - 2: 'SYMCLK_FE_FORCE_SRC_UNIPHYC', - 3: 'SYMCLK_FE_FORCE_SRC_UNIPHYD', - 4: 'SYMCLK_FE_FORCE_SRC_RESERVED', -} -SYMCLK_FE_FORCE_SRC_UNIPHYA = 0 -SYMCLK_FE_FORCE_SRC_UNIPHYB = 1 -SYMCLK_FE_FORCE_SRC_UNIPHYC = 2 -SYMCLK_FE_FORCE_SRC_UNIPHYD = 3 -SYMCLK_FE_FORCE_SRC_RESERVED = 4 -SYMCLK_FE_FORCE_SRC = ctypes.c_uint32 # enum - -# values for enumeration 'TEST_CLK_DIV_SEL' -TEST_CLK_DIV_SEL__enumvalues = { - 0: 'NO_DIV', - 1: 'DIV_2', - 2: 'DIV_4', - 3: 'DIV_8', -} -NO_DIV = 0 -DIV_2 = 1 -DIV_4 = 2 -DIV_8 = 3 -TEST_CLK_DIV_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'VSYNC_CNT_LATCH_MASK' -VSYNC_CNT_LATCH_MASK__enumvalues = { - 0: 'VSYNC_CNT_LATCH_MASK_0', - 1: 'VSYNC_CNT_LATCH_MASK_1', -} -VSYNC_CNT_LATCH_MASK_0 = 0 -VSYNC_CNT_LATCH_MASK_1 = 1 -VSYNC_CNT_LATCH_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'VSYNC_CNT_RESET_SEL' -VSYNC_CNT_RESET_SEL__enumvalues = { - 0: 'VSYNC_CNT_RESET_SEL_0', - 1: 'VSYNC_CNT_RESET_SEL_1', -} -VSYNC_CNT_RESET_SEL_0 = 0 -VSYNC_CNT_RESET_SEL_1 = 1 -VSYNC_CNT_RESET_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'XTAL_REF_CLOCK_SOURCE_SEL' -XTAL_REF_CLOCK_SOURCE_SEL__enumvalues = { - 0: 'XTAL_REF_CLOCK_SOURCE_SEL_XTALIN', - 1: 'XTAL_REF_CLOCK_SOURCE_SEL_DCCGREFCLK', -} -XTAL_REF_CLOCK_SOURCE_SEL_XTALIN = 0 -XTAL_REF_CLOCK_SOURCE_SEL_DCCGREFCLK = 1 -XTAL_REF_CLOCK_SOURCE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'XTAL_REF_SEL' -XTAL_REF_SEL__enumvalues = { - 0: 'XTAL_REF_SEL_1X', - 1: 'XTAL_REF_SEL_2X', -} -XTAL_REF_SEL_1X = 0 -XTAL_REF_SEL_2X = 1 -XTAL_REF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'HPD_INT_CONTROL_ACK' -HPD_INT_CONTROL_ACK__enumvalues = { - 0: 'HPD_INT_CONTROL_ACK_0', - 1: 'HPD_INT_CONTROL_ACK_1', -} -HPD_INT_CONTROL_ACK_0 = 0 -HPD_INT_CONTROL_ACK_1 = 1 -HPD_INT_CONTROL_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'HPD_INT_CONTROL_POLARITY' -HPD_INT_CONTROL_POLARITY__enumvalues = { - 0: 'HPD_INT_CONTROL_GEN_INT_ON_DISCON', - 1: 'HPD_INT_CONTROL_GEN_INT_ON_CON', -} -HPD_INT_CONTROL_GEN_INT_ON_DISCON = 0 -HPD_INT_CONTROL_GEN_INT_ON_CON = 1 -HPD_INT_CONTROL_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'HPD_INT_CONTROL_RX_INT_ACK' -HPD_INT_CONTROL_RX_INT_ACK__enumvalues = { - 0: 'HPD_INT_CONTROL_RX_INT_ACK_0', - 1: 'HPD_INT_CONTROL_RX_INT_ACK_1', -} -HPD_INT_CONTROL_RX_INT_ACK_0 = 0 -HPD_INT_CONTROL_RX_INT_ACK_1 = 1 -HPD_INT_CONTROL_RX_INT_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_8B10B_CUR_DISP' -DPHY_8B10B_CUR_DISP__enumvalues = { - 0: 'DPHY_8B10B_CUR_DISP_ZERO', - 1: 'DPHY_8B10B_CUR_DISP_ONE', -} -DPHY_8B10B_CUR_DISP_ZERO = 0 -DPHY_8B10B_CUR_DISP_ONE = 1 -DPHY_8B10B_CUR_DISP = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_8B10B_RESET' -DPHY_8B10B_RESET__enumvalues = { - 0: 'DPHY_8B10B_NOT_RESET', - 1: 'DPHY_8B10B_RESETET', -} -DPHY_8B10B_NOT_RESET = 0 -DPHY_8B10B_RESETET = 1 -DPHY_8B10B_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ALT_SCRAMBLER_RESET_EN' -DPHY_ALT_SCRAMBLER_RESET_EN__enumvalues = { - 0: 'DPHY_ALT_SCRAMBLER_REGULAR_RESET_VALUE', - 1: 'DPHY_ALT_SCRAMBLER_INTERNAL_RESET_SOLUTION', -} -DPHY_ALT_SCRAMBLER_REGULAR_RESET_VALUE = 0 -DPHY_ALT_SCRAMBLER_INTERNAL_RESET_SOLUTION = 1 -DPHY_ALT_SCRAMBLER_RESET_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ALT_SCRAMBLER_RESET_SEL' -DPHY_ALT_SCRAMBLER_RESET_SEL__enumvalues = { - 0: 'DPHY_ALT_SCRAMBLER_RESET_SEL_EDP_RESET_VALUE', - 1: 'DPHY_ALT_SCRAMBLER_RESET_SEL_CUSTOM_RESET_VALUE', -} -DPHY_ALT_SCRAMBLER_RESET_SEL_EDP_RESET_VALUE = 0 -DPHY_ALT_SCRAMBLER_RESET_SEL_CUSTOM_RESET_VALUE = 1 -DPHY_ALT_SCRAMBLER_RESET_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE0' -DPHY_ATEST_SEL_LANE0__enumvalues = { - 0: 'DPHY_ATEST_LANE0_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE0_REG_PATTERN', -} -DPHY_ATEST_LANE0_PRBS_PATTERN = 0 -DPHY_ATEST_LANE0_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE0 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE1' -DPHY_ATEST_SEL_LANE1__enumvalues = { - 0: 'DPHY_ATEST_LANE1_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE1_REG_PATTERN', -} -DPHY_ATEST_LANE1_PRBS_PATTERN = 0 -DPHY_ATEST_LANE1_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE1 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE2' -DPHY_ATEST_SEL_LANE2__enumvalues = { - 0: 'DPHY_ATEST_LANE2_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE2_REG_PATTERN', -} -DPHY_ATEST_LANE2_PRBS_PATTERN = 0 -DPHY_ATEST_LANE2_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE2 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_ATEST_SEL_LANE3' -DPHY_ATEST_SEL_LANE3__enumvalues = { - 0: 'DPHY_ATEST_LANE3_PRBS_PATTERN', - 1: 'DPHY_ATEST_LANE3_REG_PATTERN', -} -DPHY_ATEST_LANE3_PRBS_PATTERN = 0 -DPHY_ATEST_LANE3_REG_PATTERN = 1 -DPHY_ATEST_SEL_LANE3 = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_BYPASS' -DPHY_BYPASS__enumvalues = { - 0: 'DPHY_8B10B_OUTPUT', - 1: 'DPHY_DBG_OUTPUT', -} -DPHY_8B10B_OUTPUT = 0 -DPHY_DBG_OUTPUT = 1 -DPHY_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_CONT_EN' -DPHY_CRC_CONT_EN__enumvalues = { - 0: 'DPHY_CRC_ONE_SHOT', - 1: 'DPHY_CRC_CONTINUOUS', -} -DPHY_CRC_ONE_SHOT = 0 -DPHY_CRC_CONTINUOUS = 1 -DPHY_CRC_CONT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_EN' -DPHY_CRC_EN__enumvalues = { - 0: 'DPHY_CRC_DISABLED', - 1: 'DPHY_CRC_ENABLED', -} -DPHY_CRC_DISABLED = 0 -DPHY_CRC_ENABLED = 1 -DPHY_CRC_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_FIELD' -DPHY_CRC_FIELD__enumvalues = { - 0: 'DPHY_CRC_START_FROM_TOP_FIELD', - 1: 'DPHY_CRC_START_FROM_BOTTOM_FIELD', -} -DPHY_CRC_START_FROM_TOP_FIELD = 0 -DPHY_CRC_START_FROM_BOTTOM_FIELD = 1 -DPHY_CRC_FIELD = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_MST_PHASE_ERROR_ACK' -DPHY_CRC_MST_PHASE_ERROR_ACK__enumvalues = { - 0: 'DPHY_CRC_MST_PHASE_ERROR_NO_ACK', - 1: 'DPHY_CRC_MST_PHASE_ERROR_ACKED', -} -DPHY_CRC_MST_PHASE_ERROR_NO_ACK = 0 -DPHY_CRC_MST_PHASE_ERROR_ACKED = 1 -DPHY_CRC_MST_PHASE_ERROR_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_CRC_SEL' -DPHY_CRC_SEL__enumvalues = { - 0: 'DPHY_CRC_LANE0_SELECTED', - 1: 'DPHY_CRC_LANE1_SELECTED', - 2: 'DPHY_CRC_LANE2_SELECTED', - 3: 'DPHY_CRC_LANE3_SELECTED', -} -DPHY_CRC_LANE0_SELECTED = 0 -DPHY_CRC_LANE1_SELECTED = 1 -DPHY_CRC_LANE2_SELECTED = 2 -DPHY_CRC_LANE3_SELECTED = 3 -DPHY_CRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_FEC_ENABLE' -DPHY_FEC_ENABLE__enumvalues = { - 0: 'DPHY_FEC_DISABLED', - 1: 'DPHY_FEC_ENABLED', -} -DPHY_FEC_DISABLED = 0 -DPHY_FEC_ENABLED = 1 -DPHY_FEC_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_FEC_READY' -DPHY_FEC_READY__enumvalues = { - 0: 'DPHY_FEC_READY_EN', - 1: 'DPHY_FEC_READY_DIS', -} -DPHY_FEC_READY_EN = 0 -DPHY_FEC_READY_DIS = 1 -DPHY_FEC_READY = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_LOAD_BS_COUNT_START' -DPHY_LOAD_BS_COUNT_START__enumvalues = { - 0: 'DPHY_LOAD_BS_COUNT_STARTED', - 1: 'DPHY_LOAD_BS_COUNT_NOT_STARTED', -} -DPHY_LOAD_BS_COUNT_STARTED = 0 -DPHY_LOAD_BS_COUNT_NOT_STARTED = 1 -DPHY_LOAD_BS_COUNT_START = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_PRBS_EN' -DPHY_PRBS_EN__enumvalues = { - 0: 'DPHY_PRBS_DISABLE', - 1: 'DPHY_PRBS_ENABLE', -} -DPHY_PRBS_DISABLE = 0 -DPHY_PRBS_ENABLE = 1 -DPHY_PRBS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_PRBS_SEL' -DPHY_PRBS_SEL__enumvalues = { - 0: 'DPHY_PRBS7_SELECTED', - 1: 'DPHY_PRBS23_SELECTED', - 2: 'DPHY_PRBS11_SELECTED', -} -DPHY_PRBS7_SELECTED = 0 -DPHY_PRBS23_SELECTED = 1 -DPHY_PRBS11_SELECTED = 2 -DPHY_PRBS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_RX_FAST_TRAINING_CAPABLE' -DPHY_RX_FAST_TRAINING_CAPABLE__enumvalues = { - 0: 'DPHY_FAST_TRAINING_NOT_CAPABLE_0', - 1: 'DPHY_FAST_TRAINING_CAPABLE', -} -DPHY_FAST_TRAINING_NOT_CAPABLE_0 = 0 -DPHY_FAST_TRAINING_CAPABLE = 1 -DPHY_RX_FAST_TRAINING_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SCRAMBLER_ADVANCE' -DPHY_SCRAMBLER_ADVANCE__enumvalues = { - 0: 'DPHY_DPHY_SCRAMBLER_ADVANCE_ON_DATA_SYMBOL_ONLY', - 1: 'DPHY_SCRAMBLER_ADVANCE_ON_BOTH_DATA_AND_CTRL', -} -DPHY_DPHY_SCRAMBLER_ADVANCE_ON_DATA_SYMBOL_ONLY = 0 -DPHY_SCRAMBLER_ADVANCE_ON_BOTH_DATA_AND_CTRL = 1 -DPHY_SCRAMBLER_ADVANCE = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SCRAMBLER_DIS' -DPHY_SCRAMBLER_DIS__enumvalues = { - 0: 'DPHY_SCR_ENABLED', - 1: 'DPHY_SCR_DISABLED', -} -DPHY_SCR_ENABLED = 0 -DPHY_SCR_DISABLED = 1 -DPHY_SCRAMBLER_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SCRAMBLER_KCODE' -DPHY_SCRAMBLER_KCODE__enumvalues = { - 0: 'DPHY_SCRAMBLER_KCODE_DISABLED', - 1: 'DPHY_SCRAMBLER_KCODE_ENABLED', -} -DPHY_SCRAMBLER_KCODE_DISABLED = 0 -DPHY_SCRAMBLER_KCODE_ENABLED = 1 -DPHY_SCRAMBLER_KCODE = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SCRAMBLER_SEL' -DPHY_SCRAMBLER_SEL__enumvalues = { - 0: 'DPHY_SCRAMBLER_SEL_LANE_DATA', - 1: 'DPHY_SCRAMBLER_SEL_DBG_DATA', -} -DPHY_SCRAMBLER_SEL_LANE_DATA = 0 -DPHY_SCRAMBLER_SEL_DBG_DATA = 1 -DPHY_SCRAMBLER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SKEW_BYPASS' -DPHY_SKEW_BYPASS__enumvalues = { - 0: 'DPHY_WITH_SKEW', - 1: 'DPHY_NO_SKEW', -} -DPHY_WITH_SKEW = 0 -DPHY_NO_SKEW = 1 -DPHY_SKEW_BYPASS = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_STREAM_RESET_DURING_FAST_TRAINING_ENUM' -DPHY_STREAM_RESET_DURING_FAST_TRAINING_ENUM__enumvalues = { - 0: 'DPHY_STREAM_RESET_DURING_FAST_TRAINING_RESET', - 1: 'DPHY_STREAM_RESET_DURING_FAST_TRAINING_NOT_RESET', -} -DPHY_STREAM_RESET_DURING_FAST_TRAINING_RESET = 0 -DPHY_STREAM_RESET_DURING_FAST_TRAINING_NOT_RESET = 1 -DPHY_STREAM_RESET_DURING_FAST_TRAINING_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_SW_FAST_TRAINING_START' -DPHY_SW_FAST_TRAINING_START__enumvalues = { - 0: 'DPHY_SW_FAST_TRAINING_NOT_STARTED', - 1: 'DPHY_SW_FAST_TRAINING_STARTED', -} -DPHY_SW_FAST_TRAINING_NOT_STARTED = 0 -DPHY_SW_FAST_TRAINING_STARTED = 1 -DPHY_SW_FAST_TRAINING_START = ctypes.c_uint32 # enum - -# values for enumeration 'DPHY_TRAINING_PATTERN_SEL' -DPHY_TRAINING_PATTERN_SEL__enumvalues = { - 0: 'DPHY_TRAINING_PATTERN_1', - 1: 'DPHY_TRAINING_PATTERN_2', - 2: 'DPHY_TRAINING_PATTERN_3', - 3: 'DPHY_TRAINING_PATTERN_4', -} -DPHY_TRAINING_PATTERN_1 = 0 -DPHY_TRAINING_PATTERN_2 = 1 -DPHY_TRAINING_PATTERN_3 = 2 -DPHY_TRAINING_PATTERN_4 = 3 -DPHY_TRAINING_PATTERN_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_COMPONENT_DEPTH' -DP_COMPONENT_DEPTH__enumvalues = { - 0: 'DP_COMPONENT_DEPTH_6BPC', - 1: 'DP_COMPONENT_DEPTH_8BPC', - 2: 'DP_COMPONENT_DEPTH_10BPC', - 3: 'DP_COMPONENT_DEPTH_12BPC', - 4: 'DP_COMPONENT_DEPTH_16BPC', -} -DP_COMPONENT_DEPTH_6BPC = 0 -DP_COMPONENT_DEPTH_8BPC = 1 -DP_COMPONENT_DEPTH_10BPC = 2 -DP_COMPONENT_DEPTH_12BPC = 3 -DP_COMPONENT_DEPTH_16BPC = 4 -DP_COMPONENT_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'DP_CP_ENCRYPTION_TYPE' -DP_CP_ENCRYPTION_TYPE__enumvalues = { - 0: 'DP_CP_ENCRYPTION_TYPE_0', - 1: 'DP_CP_ENCRYPTION_TYPE_1', -} -DP_CP_ENCRYPTION_TYPE_0 = 0 -DP_CP_ENCRYPTION_TYPE_1 = 1 -DP_CP_ENCRYPTION_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_8B10B_EXT_DISP' -DP_DPHY_8B10B_EXT_DISP__enumvalues = { - 0: 'DP_DPHY_8B10B_EXT_DISP_ZERO', - 1: 'DP_DPHY_8B10B_EXT_DISP_ONE', -} -DP_DPHY_8B10B_EXT_DISP_ZERO = 0 -DP_DPHY_8B10B_EXT_DISP_ONE = 1 -DP_DPHY_8B10B_EXT_DISP = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_FAST_TRAINING_COMPLETE_ACK' -DP_DPHY_FAST_TRAINING_COMPLETE_ACK__enumvalues = { - 0: 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_ACKED', - 1: 'DP_DPHY_FAST_TRAINING_COMPLETE_ACKED', -} -DP_DPHY_FAST_TRAINING_COMPLETE_NOT_ACKED = 0 -DP_DPHY_FAST_TRAINING_COMPLETE_ACKED = 1 -DP_DPHY_FAST_TRAINING_COMPLETE_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_FAST_TRAINING_COMPLETE_MASK' -DP_DPHY_FAST_TRAINING_COMPLETE_MASK__enumvalues = { - 0: 'DP_DPHY_FAST_TRAINING_COMPLETE_MASKED', - 1: 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_MASKED', -} -DP_DPHY_FAST_TRAINING_COMPLETE_MASKED = 0 -DP_DPHY_FAST_TRAINING_COMPLETE_NOT_MASKED = 1 -DP_DPHY_FAST_TRAINING_COMPLETE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN' -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN__enumvalues = { - 0: 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_DISABLED', - 1: 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_ENABLED', -} -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_DISABLED = 0 -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_ENABLED = 1 -DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DPHY_HBR2_PATTERN_CONTROL_MODE' -DP_DPHY_HBR2_PATTERN_CONTROL_MODE__enumvalues = { - 0: 'DP_DPHY_HBR2_PASS_THROUGH', - 1: 'DP_DPHY_HBR2_PATTERN_1', - 2: 'DP_DPHY_HBR2_PATTERN_2_NEG', - 3: 'DP_DPHY_HBR2_PATTERN_3', - 6: 'DP_DPHY_HBR2_PATTERN_2_POS', -} -DP_DPHY_HBR2_PASS_THROUGH = 0 -DP_DPHY_HBR2_PATTERN_1 = 1 -DP_DPHY_HBR2_PATTERN_2_NEG = 2 -DP_DPHY_HBR2_PATTERN_3 = 3 -DP_DPHY_HBR2_PATTERN_2_POS = 6 -DP_DPHY_HBR2_PATTERN_CONTROL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_DSC_MODE' -DP_DSC_MODE__enumvalues = { - 0: 'DP_DSC_DISABLE', - 1: 'DP_DSC_444_SIMPLE_422', - 2: 'DP_DSC_NATIVE_422_420', -} -DP_DSC_DISABLE = 0 -DP_DSC_444_SIMPLE_422 = 1 -DP_DSC_NATIVE_422_420 = 2 -DP_DSC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_EMBEDDED_PANEL_MODE' -DP_EMBEDDED_PANEL_MODE__enumvalues = { - 0: 'DP_EXTERNAL_PANEL', - 1: 'DP_EMBEDDED_PANEL', -} -DP_EXTERNAL_PANEL = 0 -DP_EMBEDDED_PANEL = 1 -DP_EMBEDDED_PANEL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_LINK_TRAINING_COMPLETE' -DP_LINK_TRAINING_COMPLETE__enumvalues = { - 0: 'DP_LINK_TRAINING_NOT_COMPLETE', - 1: 'DP_LINK_TRAINING_ALREADY_COMPLETE', -} -DP_LINK_TRAINING_NOT_COMPLETE = 0 -DP_LINK_TRAINING_ALREADY_COMPLETE = 1 -DP_LINK_TRAINING_COMPLETE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_LINK_TRAINING_SWITCH_MODE' -DP_LINK_TRAINING_SWITCH_MODE__enumvalues = { - 0: 'DP_LINK_TRAINING_SWITCH_TO_IDLE', - 1: 'DP_LINK_TRAINING_SWITCH_TO_VIDEO', -} -DP_LINK_TRAINING_SWITCH_TO_IDLE = 0 -DP_LINK_TRAINING_SWITCH_TO_VIDEO = 1 -DP_LINK_TRAINING_SWITCH_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_ML_PHY_SEQ_MODE' -DP_ML_PHY_SEQ_MODE__enumvalues = { - 0: 'DP_ML_PHY_SEQ_LINE_NUM', - 1: 'DP_ML_PHY_SEQ_IMMEDIATE', -} -DP_ML_PHY_SEQ_LINE_NUM = 0 -DP_ML_PHY_SEQ_IMMEDIATE = 1 -DP_ML_PHY_SEQ_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSA_V_TIMING_OVERRIDE_EN' -DP_MSA_V_TIMING_OVERRIDE_EN__enumvalues = { - 0: 'MSA_V_TIMING_OVERRIDE_DISABLED', - 1: 'MSA_V_TIMING_OVERRIDE_ENABLED', -} -MSA_V_TIMING_OVERRIDE_DISABLED = 0 -MSA_V_TIMING_OVERRIDE_ENABLED = 1 -DP_MSA_V_TIMING_OVERRIDE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_BLANK_CODE' -DP_MSE_BLANK_CODE__enumvalues = { - 0: 'DP_MSE_BLANK_CODE_SF_FILLED', - 1: 'DP_MSE_BLANK_CODE_ZERO_FILLED', -} -DP_MSE_BLANK_CODE_SF_FILLED = 0 -DP_MSE_BLANK_CODE_ZERO_FILLED = 1 -DP_MSE_BLANK_CODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_LINK_LINE' -DP_MSE_LINK_LINE__enumvalues = { - 0: 'DP_MSE_LINK_LINE_32_MTP_LONG', - 1: 'DP_MSE_LINK_LINE_64_MTP_LONG', - 2: 'DP_MSE_LINK_LINE_128_MTP_LONG', - 3: 'DP_MSE_LINK_LINE_256_MTP_LONG', -} -DP_MSE_LINK_LINE_32_MTP_LONG = 0 -DP_MSE_LINK_LINE_64_MTP_LONG = 1 -DP_MSE_LINK_LINE_128_MTP_LONG = 2 -DP_MSE_LINK_LINE_256_MTP_LONG = 3 -DP_MSE_LINK_LINE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_SAT_ENCRYPT0' -DP_MSE_SAT_ENCRYPT0__enumvalues = { - 0: 'DP_MSE_SAT_ENCRYPT0_DISABLED', - 1: 'DP_MSE_SAT_ENCRYPT0_ENABLED', -} -DP_MSE_SAT_ENCRYPT0_DISABLED = 0 -DP_MSE_SAT_ENCRYPT0_ENABLED = 1 -DP_MSE_SAT_ENCRYPT0 = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_SAT_ENCRYPT1' -DP_MSE_SAT_ENCRYPT1__enumvalues = { - 0: 'DP_MSE_SAT_ENCRYPT1_DISABLED', - 1: 'DP_MSE_SAT_ENCRYPT1_ENABLED', -} -DP_MSE_SAT_ENCRYPT1_DISABLED = 0 -DP_MSE_SAT_ENCRYPT1_ENABLED = 1 -DP_MSE_SAT_ENCRYPT1 = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_SAT_ENCRYPT2' -DP_MSE_SAT_ENCRYPT2__enumvalues = { - 0: 'DP_MSE_SAT_ENCRYPT2_DISABLED', - 1: 'DP_MSE_SAT_ENCRYPT2_ENABLED', -} -DP_MSE_SAT_ENCRYPT2_DISABLED = 0 -DP_MSE_SAT_ENCRYPT2_ENABLED = 1 -DP_MSE_SAT_ENCRYPT2 = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_SAT_ENCRYPT3' -DP_MSE_SAT_ENCRYPT3__enumvalues = { - 0: 'DP_MSE_SAT_ENCRYPT3_DISABLED', - 1: 'DP_MSE_SAT_ENCRYPT3_ENABLED', -} -DP_MSE_SAT_ENCRYPT3_DISABLED = 0 -DP_MSE_SAT_ENCRYPT3_ENABLED = 1 -DP_MSE_SAT_ENCRYPT3 = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_SAT_ENCRYPT4' -DP_MSE_SAT_ENCRYPT4__enumvalues = { - 0: 'DP_MSE_SAT_ENCRYPT4_DISABLED', - 1: 'DP_MSE_SAT_ENCRYPT4_ENABLED', -} -DP_MSE_SAT_ENCRYPT4_DISABLED = 0 -DP_MSE_SAT_ENCRYPT4_ENABLED = 1 -DP_MSE_SAT_ENCRYPT4 = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_SAT_ENCRYPT5' -DP_MSE_SAT_ENCRYPT5__enumvalues = { - 0: 'DP_MSE_SAT_ENCRYPT5_DISABLED', - 1: 'DP_MSE_SAT_ENCRYPT5_ENABLED', -} -DP_MSE_SAT_ENCRYPT5_DISABLED = 0 -DP_MSE_SAT_ENCRYPT5_ENABLED = 1 -DP_MSE_SAT_ENCRYPT5 = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_SAT_UPDATE_ACT' -DP_MSE_SAT_UPDATE_ACT__enumvalues = { - 0: 'DP_MSE_SAT_UPDATE_NO_ACTION', - 1: 'DP_MSE_SAT_UPDATE_WITH_TRIGGER', - 2: 'DP_MSE_SAT_UPDATE_WITHOUT_TRIGGER', -} -DP_MSE_SAT_UPDATE_NO_ACTION = 0 -DP_MSE_SAT_UPDATE_WITH_TRIGGER = 1 -DP_MSE_SAT_UPDATE_WITHOUT_TRIGGER = 2 -DP_MSE_SAT_UPDATE_ACT = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_TIMESTAMP_MODE' -DP_MSE_TIMESTAMP_MODE__enumvalues = { - 0: 'DP_MSE_TIMESTAMP_CALC_BASED_ON_LINK_RATE', - 1: 'DP_MSE_TIMESTAMP_CALC_BASED_ON_VC_RATE', -} -DP_MSE_TIMESTAMP_CALC_BASED_ON_LINK_RATE = 0 -DP_MSE_TIMESTAMP_CALC_BASED_ON_VC_RATE = 1 -DP_MSE_TIMESTAMP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSE_ZERO_ENCODER' -DP_MSE_ZERO_ENCODER__enumvalues = { - 0: 'DP_MSE_NOT_ZERO_FE_ENCODER', - 1: 'DP_MSE_ZERO_FE_ENCODER', -} -DP_MSE_NOT_ZERO_FE_ENCODER = 0 -DP_MSE_ZERO_FE_ENCODER = 1 -DP_MSE_ZERO_ENCODER = ctypes.c_uint32 # enum - -# values for enumeration 'DP_MSO_NUM_OF_SST_LINKS' -DP_MSO_NUM_OF_SST_LINKS__enumvalues = { - 0: 'DP_MSO_ONE_SSTLINK', - 1: 'DP_MSO_TWO_SSTLINK', - 2: 'DP_MSO_FOUR_SSTLINK', -} -DP_MSO_ONE_SSTLINK = 0 -DP_MSO_TWO_SSTLINK = 1 -DP_MSO_FOUR_SSTLINK = 2 -DP_MSO_NUM_OF_SST_LINKS = ctypes.c_uint32 # enum - -# values for enumeration 'DP_PIXEL_ENCODING' -DP_PIXEL_ENCODING__enumvalues = { - 0: 'DP_PIXEL_ENCODING_RGB444', - 1: 'DP_PIXEL_ENCODING_YCBCR422', - 2: 'DP_PIXEL_ENCODING_YCBCR444', - 3: 'DP_PIXEL_ENCODING_RGB_WIDE_GAMUT', - 4: 'DP_PIXEL_ENCODING_Y_ONLY', - 5: 'DP_PIXEL_ENCODING_YCBCR420', -} -DP_PIXEL_ENCODING_RGB444 = 0 -DP_PIXEL_ENCODING_YCBCR422 = 1 -DP_PIXEL_ENCODING_YCBCR444 = 2 -DP_PIXEL_ENCODING_RGB_WIDE_GAMUT = 3 -DP_PIXEL_ENCODING_Y_ONLY = 4 -DP_PIXEL_ENCODING_YCBCR420 = 5 -DP_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'DP_PIXEL_PER_CYCLE_PROCESSING_NUM' -DP_PIXEL_PER_CYCLE_PROCESSING_NUM__enumvalues = { - 0: 'DP_ONE_PIXEL_PER_CYCLE', - 1: 'DP_TWO_PIXEL_PER_CYCLE', -} -DP_ONE_PIXEL_PER_CYCLE = 0 -DP_TWO_PIXEL_PER_CYCLE = 1 -DP_PIXEL_PER_CYCLE_PROCESSING_NUM = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE' -DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE__enumvalues = { - 0: 'DP_SEC_ASP_CHANNEL_COUNT_FROM_AZ', - 1: 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED', -} -DP_SEC_ASP_CHANNEL_COUNT_FROM_AZ = 0 -DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED = 1 -DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_ASP_PRIORITY' -DP_SEC_ASP_PRIORITY__enumvalues = { - 0: 'DP_SEC_ASP_LOW_PRIORITY', - 1: 'DP_SEC_ASP_HIGH_PRIORITY', -} -DP_SEC_ASP_LOW_PRIORITY = 0 -DP_SEC_ASP_HIGH_PRIORITY = 1 -DP_SEC_ASP_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_AUDIO_MUTE' -DP_SEC_AUDIO_MUTE__enumvalues = { - 0: 'DP_SEC_AUDIO_MUTE_HW_CTRL', - 1: 'DP_SEC_AUDIO_MUTE_SW_CTRL', -} -DP_SEC_AUDIO_MUTE_HW_CTRL = 0 -DP_SEC_AUDIO_MUTE_SW_CTRL = 1 -DP_SEC_AUDIO_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_COLLISION_ACK' -DP_SEC_COLLISION_ACK__enumvalues = { - 0: 'DP_SEC_COLLISION_ACK_NO_EFFECT', - 1: 'DP_SEC_COLLISION_ACK_CLR_FLAG', -} -DP_SEC_COLLISION_ACK_NO_EFFECT = 0 -DP_SEC_COLLISION_ACK_CLR_FLAG = 1 -DP_SEC_COLLISION_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_GSP0_PRIORITY' -DP_SEC_GSP0_PRIORITY__enumvalues = { - 0: 'SEC_GSP0_PRIORITY_LOW', - 1: 'SEC_GSP0_PRIORITY_HIGH', -} -SEC_GSP0_PRIORITY_LOW = 0 -SEC_GSP0_PRIORITY_HIGH = 1 -DP_SEC_GSP0_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_GSP_SEND' -DP_SEC_GSP_SEND__enumvalues = { - 0: 'NOT_SENT', - 1: 'FORCE_SENT', -} -NOT_SENT = 0 -FORCE_SENT = 1 -DP_SEC_GSP_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_GSP_SEND_ANY_LINE' -DP_SEC_GSP_SEND_ANY_LINE__enumvalues = { - 0: 'SEND_AT_LINK_NUMBER', - 1: 'SEND_AT_EARLIEST_TIME', -} -SEND_AT_LINK_NUMBER = 0 -SEND_AT_EARLIEST_TIME = 1 -DP_SEC_GSP_SEND_ANY_LINE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_GSP_SEND_PPS' -DP_SEC_GSP_SEND_PPS__enumvalues = { - 0: 'SEND_NORMAL_PACKET', - 1: 'SEND_PPS_PACKET', -} -SEND_NORMAL_PACKET = 0 -SEND_PPS_PACKET = 1 -DP_SEC_GSP_SEND_PPS = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_LINE_REFERENCE' -DP_SEC_LINE_REFERENCE__enumvalues = { - 0: 'REFER_TO_DP_SOF', - 1: 'REFER_TO_OTG_SOF', -} -REFER_TO_DP_SOF = 0 -REFER_TO_OTG_SOF = 1 -DP_SEC_LINE_REFERENCE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SEC_TIMESTAMP_MODE' -DP_SEC_TIMESTAMP_MODE__enumvalues = { - 0: 'DP_SEC_TIMESTAMP_PROGRAMMABLE_MODE', - 1: 'DP_SEC_TIMESTAMP_AUTO_CALC_MODE', -} -DP_SEC_TIMESTAMP_PROGRAMMABLE_MODE = 0 -DP_SEC_TIMESTAMP_AUTO_CALC_MODE = 1 -DP_SEC_TIMESTAMP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STEER_OVERFLOW_ACK' -DP_STEER_OVERFLOW_ACK__enumvalues = { - 0: 'DP_STEER_OVERFLOW_ACK_NO_EFFECT', - 1: 'DP_STEER_OVERFLOW_ACK_CLR_INTERRUPT', -} -DP_STEER_OVERFLOW_ACK_NO_EFFECT = 0 -DP_STEER_OVERFLOW_ACK_CLR_INTERRUPT = 1 -DP_STEER_OVERFLOW_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STEER_OVERFLOW_MASK' -DP_STEER_OVERFLOW_MASK__enumvalues = { - 0: 'DP_STEER_OVERFLOW_MASKED', - 1: 'DP_STEER_OVERFLOW_UNMASK', -} -DP_STEER_OVERFLOW_MASKED = 0 -DP_STEER_OVERFLOW_UNMASK = 1 -DP_STEER_OVERFLOW_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_SYNC_POLARITY' -DP_SYNC_POLARITY__enumvalues = { - 0: 'DP_SYNC_POLARITY_ACTIVE_HIGH', - 1: 'DP_SYNC_POLARITY_ACTIVE_LOW', -} -DP_SYNC_POLARITY_ACTIVE_HIGH = 0 -DP_SYNC_POLARITY_ACTIVE_LOW = 1 -DP_SYNC_POLARITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_TU_OVERFLOW_ACK' -DP_TU_OVERFLOW_ACK__enumvalues = { - 0: 'DP_TU_OVERFLOW_ACK_NO_EFFECT', - 1: 'DP_TU_OVERFLOW_ACK_CLR_INTERRUPT', -} -DP_TU_OVERFLOW_ACK_NO_EFFECT = 0 -DP_TU_OVERFLOW_ACK_CLR_INTERRUPT = 1 -DP_TU_OVERFLOW_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_UDI_LANES' -DP_UDI_LANES__enumvalues = { - 0: 'DP_UDI_1_LANE', - 1: 'DP_UDI_2_LANES', - 2: 'DP_UDI_LANES_RESERVED', - 3: 'DP_UDI_4_LANES', -} -DP_UDI_1_LANE = 0 -DP_UDI_2_LANES = 1 -DP_UDI_LANES_RESERVED = 2 -DP_UDI_4_LANES = 3 -DP_UDI_LANES = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_ENHANCED_FRAME_MODE' -DP_VID_ENHANCED_FRAME_MODE__enumvalues = { - 0: 'VID_NORMAL_FRAME_MODE', - 1: 'VID_ENHANCED_MODE', -} -VID_NORMAL_FRAME_MODE = 0 -VID_ENHANCED_MODE = 1 -DP_VID_ENHANCED_FRAME_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_M_N_DOUBLE_BUFFER_MODE' -DP_VID_M_N_DOUBLE_BUFFER_MODE__enumvalues = { - 0: 'DP_VID_M_N_DOUBLE_BUFFER_AFTER_VID_M_UPDATE', - 1: 'DP_VID_M_N_DOUBLE_BUFFER_AT_FRAME_START', -} -DP_VID_M_N_DOUBLE_BUFFER_AFTER_VID_M_UPDATE = 0 -DP_VID_M_N_DOUBLE_BUFFER_AT_FRAME_START = 1 -DP_VID_M_N_DOUBLE_BUFFER_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_M_N_GEN_EN' -DP_VID_M_N_GEN_EN__enumvalues = { - 0: 'DP_VID_M_N_PROGRAMMED_VIA_REG', - 1: 'DP_VID_M_N_CALC_AUTO', -} -DP_VID_M_N_PROGRAMMED_VIA_REG = 0 -DP_VID_M_N_CALC_AUTO = 1 -DP_VID_M_N_GEN_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_N_MUL' -DP_VID_N_MUL__enumvalues = { - 0: 'DP_VID_M_1X_INPUT_PIXEL_RATE', - 1: 'DP_VID_M_2X_INPUT_PIXEL_RATE', - 2: 'DP_VID_M_4X_INPUT_PIXEL_RATE', - 3: 'DP_VID_M_8X_INPUT_PIXEL_RATE', -} -DP_VID_M_1X_INPUT_PIXEL_RATE = 0 -DP_VID_M_2X_INPUT_PIXEL_RATE = 1 -DP_VID_M_4X_INPUT_PIXEL_RATE = 2 -DP_VID_M_8X_INPUT_PIXEL_RATE = 3 -DP_VID_N_MUL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_STREAM_DISABLE_ACK' -DP_VID_STREAM_DISABLE_ACK__enumvalues = { - 0: 'ID_STREAM_DISABLE_NO_ACK', - 1: 'ID_STREAM_DISABLE_ACKED', -} -ID_STREAM_DISABLE_NO_ACK = 0 -ID_STREAM_DISABLE_ACKED = 1 -DP_VID_STREAM_DISABLE_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_STREAM_DISABLE_MASK' -DP_VID_STREAM_DISABLE_MASK__enumvalues = { - 0: 'VID_STREAM_DISABLE_MASKED', - 1: 'VID_STREAM_DISABLE_UNMASK', -} -VID_STREAM_DISABLE_MASKED = 0 -VID_STREAM_DISABLE_UNMASK = 1 -DP_VID_STREAM_DISABLE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_STREAM_DIS_DEFER' -DP_VID_STREAM_DIS_DEFER__enumvalues = { - 0: 'DP_VID_STREAM_DIS_NO_DEFER', - 1: 'DP_VID_STREAM_DIS_DEFER_TO_HBLANK', - 2: 'DP_VID_STREAM_DIS_DEFER_TO_VBLANK', -} -DP_VID_STREAM_DIS_NO_DEFER = 0 -DP_VID_STREAM_DIS_DEFER_TO_HBLANK = 1 -DP_VID_STREAM_DIS_DEFER_TO_VBLANK = 2 -DP_VID_STREAM_DIS_DEFER = ctypes.c_uint32 # enum - -# values for enumeration 'DP_VID_VBID_FIELD_POL' -DP_VID_VBID_FIELD_POL__enumvalues = { - 0: 'DP_VID_VBID_FIELD_POL_NORMAL', - 1: 'DP_VID_VBID_FIELD_POL_INV', -} -DP_VID_VBID_FIELD_POL_NORMAL = 0 -DP_VID_VBID_FIELD_POL_INV = 1 -DP_VID_VBID_FIELD_POL = ctypes.c_uint32 # enum - -# values for enumeration 'FEC_ACTIVE_STATUS' -FEC_ACTIVE_STATUS__enumvalues = { - 0: 'DPHY_FEC_NOT_ACTIVE', - 1: 'DPHY_FEC_ACTIVE', -} -DPHY_FEC_NOT_ACTIVE = 0 -DPHY_FEC_ACTIVE = 1 -FEC_ACTIVE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_BE_CNTL_HPD_SELECT' -DIG_BE_CNTL_HPD_SELECT__enumvalues = { - 0: 'DIG_BE_CNTL_HPD1', - 1: 'DIG_BE_CNTL_HPD2', - 2: 'DIG_BE_CNTL_HPD3', - 3: 'DIG_BE_CNTL_HPD4', - 4: 'DIG_BE_CNTL_HPD5', - 5: 'DIG_BE_CNTL_NO_HPD', -} -DIG_BE_CNTL_HPD1 = 0 -DIG_BE_CNTL_HPD2 = 1 -DIG_BE_CNTL_HPD3 = 2 -DIG_BE_CNTL_HPD4 = 3 -DIG_BE_CNTL_HPD5 = 4 -DIG_BE_CNTL_NO_HPD = 5 -DIG_BE_CNTL_HPD_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_BE_CNTL_MODE' -DIG_BE_CNTL_MODE__enumvalues = { - 0: 'DIG_BE_DP_SST_MODE', - 1: 'DIG_BE_RESERVED1', - 2: 'DIG_BE_TMDS_DVI_MODE', - 3: 'DIG_BE_TMDS_HDMI_MODE', - 4: 'DIG_BE_RESERVED4', - 5: 'DIG_BE_DP_MST_MODE', - 6: 'DIG_BE_RESERVED2', - 7: 'DIG_BE_RESERVED3', -} -DIG_BE_DP_SST_MODE = 0 -DIG_BE_RESERVED1 = 1 -DIG_BE_TMDS_DVI_MODE = 2 -DIG_BE_TMDS_HDMI_MODE = 3 -DIG_BE_RESERVED4 = 4 -DIG_BE_DP_MST_MODE = 5 -DIG_BE_RESERVED2 = 6 -DIG_BE_RESERVED3 = 7 -DIG_BE_CNTL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_DIGITAL_BYPASS_ENABLE' -DIG_DIGITAL_BYPASS_ENABLE__enumvalues = { - 0: 'DIG_DIGITAL_BYPASS_OFF', - 1: 'DIG_DIGITAL_BYPASS_ON', -} -DIG_DIGITAL_BYPASS_OFF = 0 -DIG_DIGITAL_BYPASS_ON = 1 -DIG_DIGITAL_BYPASS_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_DIGITAL_BYPASS_SEL' -DIG_DIGITAL_BYPASS_SEL__enumvalues = { - 0: 'DIG_DIGITAL_BYPASS_SEL_BYPASS', - 1: 'DIG_DIGITAL_BYPASS_SEL_36BPP', - 2: 'DIG_DIGITAL_BYPASS_SEL_48BPP_LSB', - 3: 'DIG_DIGITAL_BYPASS_SEL_48BPP_MSB', - 4: 'DIG_DIGITAL_BYPASS_SEL_10BPP_LSB', - 5: 'DIG_DIGITAL_BYPASS_SEL_12BPC_LSB', - 6: 'DIG_DIGITAL_BYPASS_SEL_ALPHA', -} -DIG_DIGITAL_BYPASS_SEL_BYPASS = 0 -DIG_DIGITAL_BYPASS_SEL_36BPP = 1 -DIG_DIGITAL_BYPASS_SEL_48BPP_LSB = 2 -DIG_DIGITAL_BYPASS_SEL_48BPP_MSB = 3 -DIG_DIGITAL_BYPASS_SEL_10BPP_LSB = 4 -DIG_DIGITAL_BYPASS_SEL_12BPC_LSB = 5 -DIG_DIGITAL_BYPASS_SEL_ALPHA = 6 -DIG_DIGITAL_BYPASS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FE_CNTL_SOURCE_SELECT' -DIG_FE_CNTL_SOURCE_SELECT__enumvalues = { - 0: 'DIG_FE_SOURCE_FROM_OTG0', - 1: 'DIG_FE_SOURCE_FROM_OTG1', - 2: 'DIG_FE_SOURCE_FROM_OTG2', - 3: 'DIG_FE_SOURCE_FROM_OTG3', - 4: 'DIG_FE_SOURCE_RESERVED', -} -DIG_FE_SOURCE_FROM_OTG0 = 0 -DIG_FE_SOURCE_FROM_OTG1 = 1 -DIG_FE_SOURCE_FROM_OTG2 = 2 -DIG_FE_SOURCE_FROM_OTG3 = 3 -DIG_FE_SOURCE_RESERVED = 4 -DIG_FE_CNTL_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FE_CNTL_STEREOSYNC_SELECT' -DIG_FE_CNTL_STEREOSYNC_SELECT__enumvalues = { - 0: 'DIG_FE_STEREOSYNC_FROM_OTG0', - 1: 'DIG_FE_STEREOSYNC_FROM_OTG1', - 2: 'DIG_FE_STEREOSYNC_FROM_OTG2', - 3: 'DIG_FE_STEREOSYNC_FROM_OTG3', - 4: 'DIG_FE_STEREOSYNC_RESERVED', -} -DIG_FE_STEREOSYNC_FROM_OTG0 = 0 -DIG_FE_STEREOSYNC_FROM_OTG1 = 1 -DIG_FE_STEREOSYNC_FROM_OTG2 = 2 -DIG_FE_STEREOSYNC_FROM_OTG3 = 3 -DIG_FE_STEREOSYNC_RESERVED = 4 -DIG_FE_CNTL_STEREOSYNC_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_CTRL_FORCE_RECOMP_MINMAX' -DIG_FIFO_CTRL_FORCE_RECOMP_MINMAX__enumvalues = { - 0: 'DIG_FIFO_NOT_FORCE_RECOMP_MINMAX', - 1: 'DIG_FIFO_FORCE_RECOMP_MINMAX', -} -DIG_FIFO_NOT_FORCE_RECOMP_MINMAX = 0 -DIG_FIFO_FORCE_RECOMP_MINMAX = 1 -DIG_FIFO_CTRL_FORCE_RECOMP_MINMAX = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_CTRL_USE_OVERWRITE_LEVEL' -DIG_FIFO_CTRL_USE_OVERWRITE_LEVEL__enumvalues = { - 0: 'DIG_FIFO_USE_OVERWRITE_LEVEL', - 1: 'DIG_FIFO_USE_CAL_AVERAGE_LEVEL', -} -DIG_FIFO_USE_OVERWRITE_LEVEL = 0 -DIG_FIFO_USE_CAL_AVERAGE_LEVEL = 1 -DIG_FIFO_CTRL_USE_OVERWRITE_LEVEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_FORCE_RECAL_AVERAGE' -DIG_FIFO_FORCE_RECAL_AVERAGE__enumvalues = { - 0: 'DIG_FIFO_NOT_FORCE_RECAL_AVERAGE', - 1: 'DIG_FIFO_FORCE_RECAL_AVERAGE_LEVEL', -} -DIG_FIFO_NOT_FORCE_RECAL_AVERAGE = 0 -DIG_FIFO_FORCE_RECAL_AVERAGE_LEVEL = 1 -DIG_FIFO_FORCE_RECAL_AVERAGE = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_OUTPUT_PROCESSING_MODE' -DIG_FIFO_OUTPUT_PROCESSING_MODE__enumvalues = { - 0: 'DIG_FIFO_1_PIX_PER_CYCLE', - 1: 'DIG_FIFO_2_PIX_PER_CYCLE', -} -DIG_FIFO_1_PIX_PER_CYCLE = 0 -DIG_FIFO_2_PIX_PER_CYCLE = 1 -DIG_FIFO_OUTPUT_PROCESSING_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_OVERFLOW_UNDERFLOW_ERROR' -DIG_FIFO_OVERFLOW_UNDERFLOW_ERROR__enumvalues = { - 0: 'DIG_FIFO_NO_ERROR_OCCURRED', - 1: 'DIG_FIFO_UNDERFLOW_OCCURRED', - 2: 'DIG_FIFO_OVERFLOW_OCCURRED', -} -DIG_FIFO_NO_ERROR_OCCURRED = 0 -DIG_FIFO_UNDERFLOW_OCCURRED = 1 -DIG_FIFO_OVERFLOW_OCCURRED = 2 -DIG_FIFO_OVERFLOW_UNDERFLOW_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_FIFO_READ_CLOCK_SRC' -DIG_FIFO_READ_CLOCK_SRC__enumvalues = { - 0: 'DIG_FIFO_READ_CLOCK_SRC_FROM_DCCG', - 1: 'DIG_FIFO_READ_CLOCK_SRC_FROM_DISPLAY_PIPE', -} -DIG_FIFO_READ_CLOCK_SRC_FROM_DCCG = 0 -DIG_FIFO_READ_CLOCK_SRC_FROM_DISPLAY_PIPE = 1 -DIG_FIFO_READ_CLOCK_SRC = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_INPUT_PIXEL_SEL' -DIG_INPUT_PIXEL_SEL__enumvalues = { - 0: 'DIG_ALL_PIXEL', - 1: 'DIG_EVEN_PIXEL_ONLY', - 2: 'DIG_ODD_PIXEL_ONLY', -} -DIG_ALL_PIXEL = 0 -DIG_EVEN_PIXEL_ONLY = 1 -DIG_ODD_PIXEL_ONLY = 2 -DIG_INPUT_PIXEL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_OUTPUT_CRC_CNTL_LINK_SEL' -DIG_OUTPUT_CRC_CNTL_LINK_SEL__enumvalues = { - 0: 'DIG_OUTPUT_CRC_ON_LINK0', - 1: 'DIG_OUTPUT_CRC_ON_LINK1', -} -DIG_OUTPUT_CRC_ON_LINK0 = 0 -DIG_OUTPUT_CRC_ON_LINK1 = 1 -DIG_OUTPUT_CRC_CNTL_LINK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_OUTPUT_CRC_DATA_SEL' -DIG_OUTPUT_CRC_DATA_SEL__enumvalues = { - 0: 'DIG_OUTPUT_CRC_FOR_FULLFRAME', - 1: 'DIG_OUTPUT_CRC_FOR_ACTIVEONLY', - 2: 'DIG_OUTPUT_CRC_FOR_VBI', - 3: 'DIG_OUTPUT_CRC_FOR_AUDIO', -} -DIG_OUTPUT_CRC_FOR_FULLFRAME = 0 -DIG_OUTPUT_CRC_FOR_ACTIVEONLY = 1 -DIG_OUTPUT_CRC_FOR_VBI = 2 -DIG_OUTPUT_CRC_FOR_AUDIO = 3 -DIG_OUTPUT_CRC_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_RANDOM_PATTERN_SEED_RAN_PAT' -DIG_RANDOM_PATTERN_SEED_RAN_PAT__enumvalues = { - 0: 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_ALL_PIXELS', - 1: 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_DE_HIGH', -} -DIG_RANDOM_PATTERN_SEED_RAN_PAT_ALL_PIXELS = 0 -DIG_RANDOM_PATTERN_SEED_RAN_PAT_DE_HIGH = 1 -DIG_RANDOM_PATTERN_SEED_RAN_PAT = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_SL_PIXEL_GROUPING' -DIG_SL_PIXEL_GROUPING__enumvalues = { - 0: 'DIG_SINGLETON_PIXELS', - 1: 'DIG_PAIR_PIXELS', -} -DIG_SINGLETON_PIXELS = 0 -DIG_PAIR_PIXELS = 1 -DIG_SL_PIXEL_GROUPING = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_EXTERNAL_RESET_EN' -DIG_TEST_PATTERN_EXTERNAL_RESET_EN__enumvalues = { - 0: 'DIG_TEST_PATTERN_EXTERNAL_RESET_ENABLE', - 1: 'DIG_TEST_PATTERN_EXTERNAL_RESET_BY_EXT_SIG', -} -DIG_TEST_PATTERN_EXTERNAL_RESET_ENABLE = 0 -DIG_TEST_PATTERN_EXTERNAL_RESET_BY_EXT_SIG = 1 -DIG_TEST_PATTERN_EXTERNAL_RESET_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL' -DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL__enumvalues = { - 0: 'DIG_10BIT_TEST_PATTERN', - 1: 'DIG_ALTERNATING_TEST_PATTERN', -} -DIG_10BIT_TEST_PATTERN = 0 -DIG_ALTERNATING_TEST_PATTERN = 1 -DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN' -DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN__enumvalues = { - 0: 'DIG_TEST_PATTERN_NORMAL', - 1: 'DIG_TEST_PATTERN_RANDOM', -} -DIG_TEST_PATTERN_NORMAL = 0 -DIG_TEST_PATTERN_RANDOM = 1 -DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_RANDOM_PATTERN_RESET' -DIG_TEST_PATTERN_RANDOM_PATTERN_RESET__enumvalues = { - 0: 'DIG_RANDOM_PATTERN_ENABLED', - 1: 'DIG_RANDOM_PATTERN_RESETED', -} -DIG_RANDOM_PATTERN_ENABLED = 0 -DIG_RANDOM_PATTERN_RESETED = 1 -DIG_TEST_PATTERN_RANDOM_PATTERN_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN' -DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN__enumvalues = { - 0: 'DIG_IN_NORMAL_OPERATION', - 1: 'DIG_IN_DEBUG_MODE', -} -DIG_IN_NORMAL_OPERATION = 0 -DIG_IN_DEBUG_MODE = 1 -DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DOLBY_VISION_ENABLE' -DOLBY_VISION_ENABLE__enumvalues = { - 0: 'DOLBY_VISION_DISABLED', - 1: 'DOLBY_VISION_ENABLED', -} -DOLBY_VISION_DISABLED = 0 -DOLBY_VISION_ENABLED = 1 -DOLBY_VISION_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACP_SEND' -HDMI_ACP_SEND__enumvalues = { - 0: 'HDMI_ACP_NOT_SEND', - 1: 'HDMI_ACP_PKT_SEND', -} -HDMI_ACP_NOT_SEND = 0 -HDMI_ACP_PKT_SEND = 1 -HDMI_ACP_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_AUDIO_PRIORITY' -HDMI_ACR_AUDIO_PRIORITY__enumvalues = { - 0: 'HDMI_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE', - 1: 'HDMI_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT', -} -HDMI_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE = 0 -HDMI_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT = 1 -HDMI_ACR_AUDIO_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_CONT' -HDMI_ACR_CONT__enumvalues = { - 0: 'HDMI_ACR_CONT_DISABLE', - 1: 'HDMI_ACR_CONT_ENABLE', -} -HDMI_ACR_CONT_DISABLE = 0 -HDMI_ACR_CONT_ENABLE = 1 -HDMI_ACR_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_N_MULTIPLE' -HDMI_ACR_N_MULTIPLE__enumvalues = { - 0: 'HDMI_ACR_0_MULTIPLE_RESERVED', - 1: 'HDMI_ACR_1_MULTIPLE', - 2: 'HDMI_ACR_2_MULTIPLE', - 3: 'HDMI_ACR_3_MULTIPLE_RESERVED', - 4: 'HDMI_ACR_4_MULTIPLE', - 5: 'HDMI_ACR_5_MULTIPLE_RESERVED', - 6: 'HDMI_ACR_6_MULTIPLE_RESERVED', - 7: 'HDMI_ACR_7_MULTIPLE_RESERVED', -} -HDMI_ACR_0_MULTIPLE_RESERVED = 0 -HDMI_ACR_1_MULTIPLE = 1 -HDMI_ACR_2_MULTIPLE = 2 -HDMI_ACR_3_MULTIPLE_RESERVED = 3 -HDMI_ACR_4_MULTIPLE = 4 -HDMI_ACR_5_MULTIPLE_RESERVED = 5 -HDMI_ACR_6_MULTIPLE_RESERVED = 6 -HDMI_ACR_7_MULTIPLE_RESERVED = 7 -HDMI_ACR_N_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_SELECT' -HDMI_ACR_SELECT__enumvalues = { - 0: 'HDMI_ACR_SELECT_HW', - 1: 'HDMI_ACR_SELECT_32K', - 2: 'HDMI_ACR_SELECT_44K', - 3: 'HDMI_ACR_SELECT_48K', -} -HDMI_ACR_SELECT_HW = 0 -HDMI_ACR_SELECT_32K = 1 -HDMI_ACR_SELECT_44K = 2 -HDMI_ACR_SELECT_48K = 3 -HDMI_ACR_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_SEND' -HDMI_ACR_SEND__enumvalues = { - 0: 'HDMI_ACR_NOT_SEND', - 1: 'HDMI_ACR_PKT_SEND', -} -HDMI_ACR_NOT_SEND = 0 -HDMI_ACR_PKT_SEND = 1 -HDMI_ACR_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ACR_SOURCE' -HDMI_ACR_SOURCE__enumvalues = { - 0: 'HDMI_ACR_SOURCE_HW', - 1: 'HDMI_ACR_SOURCE_SW', -} -HDMI_ACR_SOURCE_HW = 0 -HDMI_ACR_SOURCE_SW = 1 -HDMI_ACR_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_AUDIO_DELAY_EN' -HDMI_AUDIO_DELAY_EN__enumvalues = { - 0: 'HDMI_AUDIO_DELAY_DISABLE', - 1: 'HDMI_AUDIO_DELAY_58CLK', - 2: 'HDMI_AUDIO_DELAY_56CLK', - 3: 'HDMI_AUDIO_DELAY_RESERVED', -} -HDMI_AUDIO_DELAY_DISABLE = 0 -HDMI_AUDIO_DELAY_58CLK = 1 -HDMI_AUDIO_DELAY_56CLK = 2 -HDMI_AUDIO_DELAY_RESERVED = 3 -HDMI_AUDIO_DELAY_EN = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_AUDIO_INFO_CONT' -HDMI_AUDIO_INFO_CONT__enumvalues = { - 0: 'HDMI_AUDIO_INFO_CONT_DISABLE', - 1: 'HDMI_AUDIO_INFO_CONT_ENABLE', -} -HDMI_AUDIO_INFO_CONT_DISABLE = 0 -HDMI_AUDIO_INFO_CONT_ENABLE = 1 -HDMI_AUDIO_INFO_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_AUDIO_INFO_SEND' -HDMI_AUDIO_INFO_SEND__enumvalues = { - 0: 'HDMI_AUDIO_INFO_NOT_SEND', - 1: 'HDMI_AUDIO_INFO_PKT_SEND', -} -HDMI_AUDIO_INFO_NOT_SEND = 0 -HDMI_AUDIO_INFO_PKT_SEND = 1 -HDMI_AUDIO_INFO_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_CLOCK_CHANNEL_RATE' -HDMI_CLOCK_CHANNEL_RATE__enumvalues = { - 0: 'HDMI_CLOCK_CHANNEL_FREQ_EQUAL_TO_CHAR_RATE', - 1: 'HDMI_CLOCK_CHANNEL_FREQ_QUARTER_TO_CHAR_RATE', -} -HDMI_CLOCK_CHANNEL_FREQ_EQUAL_TO_CHAR_RATE = 0 -HDMI_CLOCK_CHANNEL_FREQ_QUARTER_TO_CHAR_RATE = 1 -HDMI_CLOCK_CHANNEL_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_DATA_SCRAMBLE_EN' -HDMI_DATA_SCRAMBLE_EN__enumvalues = { - 0: 'HDMI_DATA_SCRAMBLE_DISABLE', - 1: 'HDMI_DATA_SCRAMBLE_ENABLE', -} -HDMI_DATA_SCRAMBLE_DISABLE = 0 -HDMI_DATA_SCRAMBLE_ENABLE = 1 -HDMI_DATA_SCRAMBLE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_DEEP_COLOR_DEPTH' -HDMI_DEEP_COLOR_DEPTH__enumvalues = { - 0: 'HDMI_DEEP_COLOR_DEPTH_24BPP', - 1: 'HDMI_DEEP_COLOR_DEPTH_30BPP', - 2: 'HDMI_DEEP_COLOR_DEPTH_36BPP', - 3: 'HDMI_DEEP_COLOR_DEPTH_48BPP', -} -HDMI_DEEP_COLOR_DEPTH_24BPP = 0 -HDMI_DEEP_COLOR_DEPTH_30BPP = 1 -HDMI_DEEP_COLOR_DEPTH_36BPP = 2 -HDMI_DEEP_COLOR_DEPTH_48BPP = 3 -HDMI_DEEP_COLOR_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_DEFAULT_PAHSE' -HDMI_DEFAULT_PAHSE__enumvalues = { - 0: 'HDMI_DEFAULT_PHASE_IS_0', - 1: 'HDMI_DEFAULT_PHASE_IS_1', -} -HDMI_DEFAULT_PHASE_IS_0 = 0 -HDMI_DEFAULT_PHASE_IS_1 = 1 -HDMI_DEFAULT_PAHSE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ERROR_ACK' -HDMI_ERROR_ACK__enumvalues = { - 0: 'HDMI_ERROR_ACK_INT', - 1: 'HDMI_ERROR_NOT_ACK', -} -HDMI_ERROR_ACK_INT = 0 -HDMI_ERROR_NOT_ACK = 1 -HDMI_ERROR_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ERROR_MASK' -HDMI_ERROR_MASK__enumvalues = { - 0: 'HDMI_ERROR_MASK_INT', - 1: 'HDMI_ERROR_NOT_MASK', -} -HDMI_ERROR_MASK_INT = 0 -HDMI_ERROR_NOT_MASK = 1 -HDMI_ERROR_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_AVMUTE' -HDMI_GC_AVMUTE__enumvalues = { - 0: 'HDMI_GC_AVMUTE_SET', - 1: 'HDMI_GC_AVMUTE_UNSET', -} -HDMI_GC_AVMUTE_SET = 0 -HDMI_GC_AVMUTE_UNSET = 1 -HDMI_GC_AVMUTE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_AVMUTE_CONT' -HDMI_GC_AVMUTE_CONT__enumvalues = { - 0: 'HDMI_GC_AVMUTE_CONT_DISABLE', - 1: 'HDMI_GC_AVMUTE_CONT_ENABLE', -} -HDMI_GC_AVMUTE_CONT_DISABLE = 0 -HDMI_GC_AVMUTE_CONT_ENABLE = 1 -HDMI_GC_AVMUTE_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_CONT' -HDMI_GC_CONT__enumvalues = { - 0: 'HDMI_GC_CONT_DISABLE', - 1: 'HDMI_GC_CONT_ENABLE', -} -HDMI_GC_CONT_DISABLE = 0 -HDMI_GC_CONT_ENABLE = 1 -HDMI_GC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GC_SEND' -HDMI_GC_SEND__enumvalues = { - 0: 'HDMI_GC_NOT_SEND', - 1: 'HDMI_GC_PKT_SEND', -} -HDMI_GC_NOT_SEND = 0 -HDMI_GC_PKT_SEND = 1 -HDMI_GC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GENERIC_CONT' -HDMI_GENERIC_CONT__enumvalues = { - 0: 'HDMI_GENERIC_CONT_DISABLE', - 1: 'HDMI_GENERIC_CONT_ENABLE', -} -HDMI_GENERIC_CONT_DISABLE = 0 -HDMI_GENERIC_CONT_ENABLE = 1 -HDMI_GENERIC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_GENERIC_SEND' -HDMI_GENERIC_SEND__enumvalues = { - 0: 'HDMI_GENERIC_NOT_SEND', - 1: 'HDMI_GENERIC_PKT_SEND', -} -HDMI_GENERIC_NOT_SEND = 0 -HDMI_GENERIC_PKT_SEND = 1 -HDMI_GENERIC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ISRC_CONT' -HDMI_ISRC_CONT__enumvalues = { - 0: 'HDMI_ISRC_CONT_DISABLE', - 1: 'HDMI_ISRC_CONT_ENABLE', -} -HDMI_ISRC_CONT_DISABLE = 0 -HDMI_ISRC_CONT_ENABLE = 1 -HDMI_ISRC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_ISRC_SEND' -HDMI_ISRC_SEND__enumvalues = { - 0: 'HDMI_ISRC_NOT_SEND', - 1: 'HDMI_ISRC_PKT_SEND', -} -HDMI_ISRC_NOT_SEND = 0 -HDMI_ISRC_PKT_SEND = 1 -HDMI_ISRC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_KEEPOUT_MODE' -HDMI_KEEPOUT_MODE__enumvalues = { - 0: 'HDMI_KEEPOUT_0_650PIX_AFTER_VSYNC', - 1: 'HDMI_KEEPOUT_509_650PIX_AFTER_VSYNC', -} -HDMI_KEEPOUT_0_650PIX_AFTER_VSYNC = 0 -HDMI_KEEPOUT_509_650PIX_AFTER_VSYNC = 1 -HDMI_KEEPOUT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_METADATA_ENABLE' -HDMI_METADATA_ENABLE__enumvalues = { - 0: 'HDMI_METADATA_NOT_SEND', - 1: 'HDMI_METADATA_PKT_SEND', -} -HDMI_METADATA_NOT_SEND = 0 -HDMI_METADATA_PKT_SEND = 1 -HDMI_METADATA_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_MPEG_INFO_CONT' -HDMI_MPEG_INFO_CONT__enumvalues = { - 0: 'HDMI_MPEG_INFO_CONT_DISABLE', - 1: 'HDMI_MPEG_INFO_CONT_ENABLE', -} -HDMI_MPEG_INFO_CONT_DISABLE = 0 -HDMI_MPEG_INFO_CONT_ENABLE = 1 -HDMI_MPEG_INFO_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_MPEG_INFO_SEND' -HDMI_MPEG_INFO_SEND__enumvalues = { - 0: 'HDMI_MPEG_INFO_NOT_SEND', - 1: 'HDMI_MPEG_INFO_PKT_SEND', -} -HDMI_MPEG_INFO_NOT_SEND = 0 -HDMI_MPEG_INFO_PKT_SEND = 1 -HDMI_MPEG_INFO_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_NO_EXTRA_NULL_PACKET_FILLED' -HDMI_NO_EXTRA_NULL_PACKET_FILLED__enumvalues = { - 0: 'HDMI_EXTRA_NULL_PACKET_FILLED_ENABLE', - 1: 'HDMI_EXTRA_NULL_PACKET_FILLED_DISABLE', -} -HDMI_EXTRA_NULL_PACKET_FILLED_ENABLE = 0 -HDMI_EXTRA_NULL_PACKET_FILLED_DISABLE = 1 -HDMI_NO_EXTRA_NULL_PACKET_FILLED = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_NULL_SEND' -HDMI_NULL_SEND__enumvalues = { - 0: 'HDMI_NULL_NOT_SEND', - 1: 'HDMI_NULL_PKT_SEND', -} -HDMI_NULL_NOT_SEND = 0 -HDMI_NULL_PKT_SEND = 1 -HDMI_NULL_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_PACKET_GEN_VERSION' -HDMI_PACKET_GEN_VERSION__enumvalues = { - 0: 'HDMI_PACKET_GEN_VERSION_OLD', - 1: 'HDMI_PACKET_GEN_VERSION_NEW', -} -HDMI_PACKET_GEN_VERSION_OLD = 0 -HDMI_PACKET_GEN_VERSION_NEW = 1 -HDMI_PACKET_GEN_VERSION = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_PACKET_LINE_REFERENCE' -HDMI_PACKET_LINE_REFERENCE__enumvalues = { - 0: 'HDMI_PKT_LINE_REF_VSYNC', - 1: 'HDMI_PKT_LINE_REF_OTGSOF', -} -HDMI_PKT_LINE_REF_VSYNC = 0 -HDMI_PKT_LINE_REF_OTGSOF = 1 -HDMI_PACKET_LINE_REFERENCE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_PACKING_PHASE_OVERRIDE' -HDMI_PACKING_PHASE_OVERRIDE__enumvalues = { - 0: 'HDMI_PACKING_PHASE_SET_BY_HW', - 1: 'HDMI_PACKING_PHASE_SET_BY_SW', -} -HDMI_PACKING_PHASE_SET_BY_HW = 0 -HDMI_PACKING_PHASE_SET_BY_SW = 1 -HDMI_PACKING_PHASE_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'LVTMA_RANDOM_PATTERN_SEED_RAN_PAT' -LVTMA_RANDOM_PATTERN_SEED_RAN_PAT__enumvalues = { - 0: 'LVTMA_RANDOM_PATTERN_SEED_ALL_PIXELS', - 1: 'LVTMA_RANDOM_PATTERN_SEED_ONLY_DE_HIGH', -} -LVTMA_RANDOM_PATTERN_SEED_ALL_PIXELS = 0 -LVTMA_RANDOM_PATTERN_SEED_ONLY_DE_HIGH = 1 -LVTMA_RANDOM_PATTERN_SEED_RAN_PAT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_COLOR_FORMAT' -TMDS_COLOR_FORMAT__enumvalues = { - 0: 'TMDS_COLOR_FORMAT__24BPP__TWIN30BPP_MSB__DUAL48BPP', - 1: 'TMDS_COLOR_FORMAT_TWIN30BPP_LSB', - 2: 'TMDS_COLOR_FORMAT_DUAL30BPP', - 3: 'TMDS_COLOR_FORMAT_RESERVED', -} -TMDS_COLOR_FORMAT__24BPP__TWIN30BPP_MSB__DUAL48BPP = 0 -TMDS_COLOR_FORMAT_TWIN30BPP_LSB = 1 -TMDS_COLOR_FORMAT_DUAL30BPP = 2 -TMDS_COLOR_FORMAT_RESERVED = 3 -TMDS_COLOR_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_DATA_INVERT' -TMDS_CTL0_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL0_DATA_NORMAL', - 1: 'TMDS_CTL0_DATA_INVERT_EN', -} -TMDS_CTL0_DATA_NORMAL = 0 -TMDS_CTL0_DATA_INVERT_EN = 1 -TMDS_CTL0_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_DATA_MODULATION' -TMDS_CTL0_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL0_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL0_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL0_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL0_DATA_MODULATION_BIT2', -} -TMDS_CTL0_DATA_MODULATION_DISABLE = 0 -TMDS_CTL0_DATA_MODULATION_BIT0 = 1 -TMDS_CTL0_DATA_MODULATION_BIT1 = 2 -TMDS_CTL0_DATA_MODULATION_BIT2 = 3 -TMDS_CTL0_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_DATA_SEL' -TMDS_CTL0_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL0_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL0_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL0_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL0_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL0_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL0_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL0_DATA_SEL8_RANDOM_DATA', - 7: 'TMDS_CTL0_DATA_SEL9_SEL15_RANDOM_DATA', -} -TMDS_CTL0_DATA_SEL0_RESERVED = 0 -TMDS_CTL0_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL0_DATA_SEL2_VSYNC = 2 -TMDS_CTL0_DATA_SEL3_RESERVED = 3 -TMDS_CTL0_DATA_SEL4_HSYNC = 4 -TMDS_CTL0_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL0_DATA_SEL8_RANDOM_DATA = 6 -TMDS_CTL0_DATA_SEL9_SEL15_RANDOM_DATA = 7 -TMDS_CTL0_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL0_PATTERN_OUT_EN' -TMDS_CTL0_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL0_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL0_PATTERN_OUT_ENABLE', -} -TMDS_CTL0_PATTERN_OUT_DISABLE = 0 -TMDS_CTL0_PATTERN_OUT_ENABLE = 1 -TMDS_CTL0_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_DATA_INVERT' -TMDS_CTL1_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL1_DATA_NORMAL', - 1: 'TMDS_CTL1_DATA_INVERT_EN', -} -TMDS_CTL1_DATA_NORMAL = 0 -TMDS_CTL1_DATA_INVERT_EN = 1 -TMDS_CTL1_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_DATA_MODULATION' -TMDS_CTL1_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL1_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL1_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL1_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL1_DATA_MODULATION_BIT2', -} -TMDS_CTL1_DATA_MODULATION_DISABLE = 0 -TMDS_CTL1_DATA_MODULATION_BIT0 = 1 -TMDS_CTL1_DATA_MODULATION_BIT1 = 2 -TMDS_CTL1_DATA_MODULATION_BIT2 = 3 -TMDS_CTL1_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_DATA_SEL' -TMDS_CTL1_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL1_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL1_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL1_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL1_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL1_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL1_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL1_DATA_SEL8_BLANK_TIME', - 7: 'TMDS_CTL1_DATA_SEL9_SEL15_RESERVED', -} -TMDS_CTL1_DATA_SEL0_RESERVED = 0 -TMDS_CTL1_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL1_DATA_SEL2_VSYNC = 2 -TMDS_CTL1_DATA_SEL3_RESERVED = 3 -TMDS_CTL1_DATA_SEL4_HSYNC = 4 -TMDS_CTL1_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL1_DATA_SEL8_BLANK_TIME = 6 -TMDS_CTL1_DATA_SEL9_SEL15_RESERVED = 7 -TMDS_CTL1_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL1_PATTERN_OUT_EN' -TMDS_CTL1_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL1_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL1_PATTERN_OUT_ENABLE', -} -TMDS_CTL1_PATTERN_OUT_DISABLE = 0 -TMDS_CTL1_PATTERN_OUT_ENABLE = 1 -TMDS_CTL1_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_DATA_INVERT' -TMDS_CTL2_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL2_DATA_NORMAL', - 1: 'TMDS_CTL2_DATA_INVERT_EN', -} -TMDS_CTL2_DATA_NORMAL = 0 -TMDS_CTL2_DATA_INVERT_EN = 1 -TMDS_CTL2_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_DATA_MODULATION' -TMDS_CTL2_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL2_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL2_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL2_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL2_DATA_MODULATION_BIT2', -} -TMDS_CTL2_DATA_MODULATION_DISABLE = 0 -TMDS_CTL2_DATA_MODULATION_BIT0 = 1 -TMDS_CTL2_DATA_MODULATION_BIT1 = 2 -TMDS_CTL2_DATA_MODULATION_BIT2 = 3 -TMDS_CTL2_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_DATA_SEL' -TMDS_CTL2_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL2_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL2_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL2_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL2_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL2_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL2_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL2_DATA_SEL8_BLANK_TIME', - 7: 'TMDS_CTL2_DATA_SEL9_SEL15_RESERVED', -} -TMDS_CTL2_DATA_SEL0_RESERVED = 0 -TMDS_CTL2_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL2_DATA_SEL2_VSYNC = 2 -TMDS_CTL2_DATA_SEL3_RESERVED = 3 -TMDS_CTL2_DATA_SEL4_HSYNC = 4 -TMDS_CTL2_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL2_DATA_SEL8_BLANK_TIME = 6 -TMDS_CTL2_DATA_SEL9_SEL15_RESERVED = 7 -TMDS_CTL2_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL2_PATTERN_OUT_EN' -TMDS_CTL2_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL2_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL2_PATTERN_OUT_ENABLE', -} -TMDS_CTL2_PATTERN_OUT_DISABLE = 0 -TMDS_CTL2_PATTERN_OUT_ENABLE = 1 -TMDS_CTL2_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_DATA_INVERT' -TMDS_CTL3_DATA_INVERT__enumvalues = { - 0: 'TMDS_CTL3_DATA_NORMAL', - 1: 'TMDS_CTL3_DATA_INVERT_EN', -} -TMDS_CTL3_DATA_NORMAL = 0 -TMDS_CTL3_DATA_INVERT_EN = 1 -TMDS_CTL3_DATA_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_DATA_MODULATION' -TMDS_CTL3_DATA_MODULATION__enumvalues = { - 0: 'TMDS_CTL3_DATA_MODULATION_DISABLE', - 1: 'TMDS_CTL3_DATA_MODULATION_BIT0', - 2: 'TMDS_CTL3_DATA_MODULATION_BIT1', - 3: 'TMDS_CTL3_DATA_MODULATION_BIT2', -} -TMDS_CTL3_DATA_MODULATION_DISABLE = 0 -TMDS_CTL3_DATA_MODULATION_BIT0 = 1 -TMDS_CTL3_DATA_MODULATION_BIT1 = 2 -TMDS_CTL3_DATA_MODULATION_BIT2 = 3 -TMDS_CTL3_DATA_MODULATION = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_DATA_SEL' -TMDS_CTL3_DATA_SEL__enumvalues = { - 0: 'TMDS_CTL3_DATA_SEL0_RESERVED', - 1: 'TMDS_CTL3_DATA_SEL1_DISPLAY_ENABLE', - 2: 'TMDS_CTL3_DATA_SEL2_VSYNC', - 3: 'TMDS_CTL3_DATA_SEL3_RESERVED', - 4: 'TMDS_CTL3_DATA_SEL4_HSYNC', - 5: 'TMDS_CTL3_DATA_SEL5_SEL7_RESERVED', - 6: 'TMDS_CTL3_DATA_SEL8_BLANK_TIME', - 7: 'TMDS_CTL3_DATA_SEL9_SEL15_RESERVED', -} -TMDS_CTL3_DATA_SEL0_RESERVED = 0 -TMDS_CTL3_DATA_SEL1_DISPLAY_ENABLE = 1 -TMDS_CTL3_DATA_SEL2_VSYNC = 2 -TMDS_CTL3_DATA_SEL3_RESERVED = 3 -TMDS_CTL3_DATA_SEL4_HSYNC = 4 -TMDS_CTL3_DATA_SEL5_SEL7_RESERVED = 5 -TMDS_CTL3_DATA_SEL8_BLANK_TIME = 6 -TMDS_CTL3_DATA_SEL9_SEL15_RESERVED = 7 -TMDS_CTL3_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_CTL3_PATTERN_OUT_EN' -TMDS_CTL3_PATTERN_OUT_EN__enumvalues = { - 0: 'TMDS_CTL3_PATTERN_OUT_DISABLE', - 1: 'TMDS_CTL3_PATTERN_OUT_ENABLE', -} -TMDS_CTL3_PATTERN_OUT_DISABLE = 0 -TMDS_CTL3_PATTERN_OUT_ENABLE = 1 -TMDS_CTL3_PATTERN_OUT_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL' -TMDS_DATA_SYNCHRONIZATION_DSINTSEL__enumvalues = { - 0: 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_PCLK_TMDS', - 1: 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_TMDS_PLL', -} -TMDS_DATA_SYNCHRONIZATION_DSINTSEL_PCLK_TMDS = 0 -TMDS_DATA_SYNCHRONIZATION_DSINTSEL_TMDS_PLL = 1 -TMDS_DATA_SYNCHRONIZATION_DSINTSEL = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_PIXEL_ENCODING' -TMDS_PIXEL_ENCODING__enumvalues = { - 0: 'TMDS_PIXEL_ENCODING_444_OR_420', - 1: 'TMDS_PIXEL_ENCODING_422', -} -TMDS_PIXEL_ENCODING_444_OR_420 = 0 -TMDS_PIXEL_ENCODING_422 = 1 -TMDS_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_REG_TEST_OUTPUTA_CNTLA' -TMDS_REG_TEST_OUTPUTA_CNTLA__enumvalues = { - 0: 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA0', - 1: 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA1', - 2: 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA2', - 3: 'TMDS_REG_TEST_OUTPUTA_CNTLA_NA', -} -TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA0 = 0 -TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA1 = 1 -TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA2 = 2 -TMDS_REG_TEST_OUTPUTA_CNTLA_NA = 3 -TMDS_REG_TEST_OUTPUTA_CNTLA = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_REG_TEST_OUTPUTB_CNTLB' -TMDS_REG_TEST_OUTPUTB_CNTLB__enumvalues = { - 0: 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB0', - 1: 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB1', - 2: 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB2', - 3: 'TMDS_REG_TEST_OUTPUTB_CNTLB_NA', -} -TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB0 = 0 -TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB1 = 1 -TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB2 = 2 -TMDS_REG_TEST_OUTPUTB_CNTLB_NA = 3 -TMDS_REG_TEST_OUTPUTB_CNTLB = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_STEREOSYNC_CTL_SEL_REG' -TMDS_STEREOSYNC_CTL_SEL_REG__enumvalues = { - 0: 'TMDS_STEREOSYNC_CTL0', - 1: 'TMDS_STEREOSYNC_CTL1', - 2: 'TMDS_STEREOSYNC_CTL2', - 3: 'TMDS_STEREOSYNC_CTL3', -} -TMDS_STEREOSYNC_CTL0 = 0 -TMDS_STEREOSYNC_CTL1 = 1 -TMDS_STEREOSYNC_CTL2 = 2 -TMDS_STEREOSYNC_CTL3 = 3 -TMDS_STEREOSYNC_CTL_SEL_REG = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_SYNC_PHASE' -TMDS_SYNC_PHASE__enumvalues = { - 0: 'TMDS_NOT_SYNC_PHASE_ON_FRAME_START', - 1: 'TMDS_SYNC_PHASE_ON_FRAME_START', -} -TMDS_NOT_SYNC_PHASE_ON_FRAME_START = 0 -TMDS_SYNC_PHASE_ON_FRAME_START = 1 -TMDS_SYNC_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA' -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA__enumvalues = { - 0: 'TMDS_TRANSMITTER_BYPASS_PLLA_COHERENT', - 1: 'TMDS_TRANSMITTER_BYPASS_PLLA_INCOHERENT', -} -TMDS_TRANSMITTER_BYPASS_PLLA_COHERENT = 0 -TMDS_TRANSMITTER_BYPASS_PLLA_INCOHERENT = 1 -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB' -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB__enumvalues = { - 0: 'TMDS_TRANSMITTER_BYPASS_PLLB_COHERENT', - 1: 'TMDS_TRANSMITTER_BYPASS_PLLB_INCOHERENT', -} -TMDS_TRANSMITTER_BYPASS_PLLB_COHERENT = 0 -TMDS_TRANSMITTER_BYPASS_PLLB_INCOHERENT = 1 -TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_IDSCKSELA' -TMDS_TRANSMITTER_CONTROL_IDSCKSELA__enumvalues = { - 0: 'TMDS_TRANSMITTER_IDSCKSELA_USE_IPIXCLK', - 1: 'TMDS_TRANSMITTER_IDSCKSELA_USE_IDCLK', -} -TMDS_TRANSMITTER_IDSCKSELA_USE_IPIXCLK = 0 -TMDS_TRANSMITTER_IDSCKSELA_USE_IDCLK = 1 -TMDS_TRANSMITTER_CONTROL_IDSCKSELA = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_IDSCKSELB' -TMDS_TRANSMITTER_CONTROL_IDSCKSELB__enumvalues = { - 0: 'TMDS_TRANSMITTER_IDSCKSELB_USE_IPIXCLK', - 1: 'TMDS_TRANSMITTER_IDSCKSELB_USE_IDCLK', -} -TMDS_TRANSMITTER_IDSCKSELB_USE_IPIXCLK = 0 -TMDS_TRANSMITTER_IDSCKSELB_USE_IDCLK = 1 -TMDS_TRANSMITTER_CONTROL_IDSCKSELB = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN' -TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN__enumvalues = { - 0: 'TMDS_TRANSMITTER_PLLSEL_BY_HW', - 1: 'TMDS_TRANSMITTER_PLLSEL_OVERWRITE_BY_SW', -} -TMDS_TRANSMITTER_PLLSEL_BY_HW = 0 -TMDS_TRANSMITTER_PLLSEL_OVERWRITE_BY_SW = 1 -TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK' -TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_HPD_NOT_OVERRIDE_PLL_ENABLE', - 1: 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_DISCON', - 2: 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_CON', - 3: 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE', -} -TMDS_TRANSMITTER_HPD_NOT_OVERRIDE_PLL_ENABLE = 0 -TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_DISCON = 1 -TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_CON = 2 -TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE = 3 -TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN' -TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN__enumvalues = { - 0: 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_DISABLE', - 1: 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_ENABLE', -} -TMDS_TRANSMITTER_PLL_PWRUP_SEQ_DISABLE = 0 -TMDS_TRANSMITTER_PLL_PWRUP_SEQ_ENABLE = 1 -TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK' -TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_PLL_NOT_RST_ON_HPD', - 1: 'TMDS_TRANSMITTER_PLL_RST_ON_HPD', -} -TMDS_TRANSMITTER_PLL_NOT_RST_ON_HPD = 0 -TMDS_TRANSMITTER_PLL_RST_ON_HPD = 1 -TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS' -TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS__enumvalues = { - 0: 'TMDS_TRANSMITTER_TDCLK_FROM_TMDS_TDCLK', - 1: 'TMDS_TRANSMITTER_TDCLK_FROM_PADS', -} -TMDS_TRANSMITTER_TDCLK_FROM_TMDS_TDCLK = 0 -TMDS_TRANSMITTER_TDCLK_FROM_PADS = 1 -TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS' -TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS__enumvalues = { - 0: 'TMDS_TRANSMITTER_TMCLK_FROM_TMDS_TMCLK', - 1: 'TMDS_TRANSMITTER_TMCLK_FROM_PADS', -} -TMDS_TRANSMITTER_TMCLK_FROM_TMDS_TMCLK = 0 -TMDS_TRANSMITTER_TMCLK_FROM_PADS = 1 -TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_ENABLE_HPD_MASK' -TMDS_TRANSMITTER_ENABLE_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_HPD_MASK_NOT_OVERRIDE', - 1: 'TMDS_TRANSMITTER_HPD_MASK_OVERRIDE', -} -TMDS_TRANSMITTER_HPD_MASK_NOT_OVERRIDE = 0 -TMDS_TRANSMITTER_HPD_MASK_OVERRIDE = 1 -TMDS_TRANSMITTER_ENABLE_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK' -TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_NOT_OVERRIDE', - 1: 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_OVERRIDE', -} -TMDS_TRANSMITTER_LNKCEN_HPD_MASK_NOT_OVERRIDE = 0 -TMDS_TRANSMITTER_LNKCEN_HPD_MASK_OVERRIDE = 1 -TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK' -TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK__enumvalues = { - 0: 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_NOT_OVERRIDE', - 1: 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_OVERRIDE', -} -TMDS_TRANSMITTER_LNKDEN_HPD_MASK_NOT_OVERRIDE = 0 -TMDS_TRANSMITTER_LNKDEN_HPD_MASK_OVERRIDE = 1 -TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ARB_CONTROL_ARB_PRIORITY' -DP_AUX_ARB_CONTROL_ARB_PRIORITY__enumvalues = { - 0: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__GTC_LS_SW', - 1: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__LS_GTC_SW', - 2: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_LS_GTC', - 3: 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_GTC_LS', -} -DP_AUX_ARB_CONTROL_ARB_PRIORITY__GTC_LS_SW = 0 -DP_AUX_ARB_CONTROL_ARB_PRIORITY__LS_GTC_SW = 1 -DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_LS_GTC = 2 -DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_GTC_LS = 3 -DP_AUX_ARB_CONTROL_ARB_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG' -DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG__enumvalues = { - 0: 'DP_AUX_ARB_CONTROL__DONE_NOT_USING_AUX_REG', - 1: 'DP_AUX_ARB_CONTROL__DONE_USING_AUX_REG', -} -DP_AUX_ARB_CONTROL__DONE_NOT_USING_AUX_REG = 0 -DP_AUX_ARB_CONTROL__DONE_USING_AUX_REG = 1 -DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ' -DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ__enumvalues = { - 0: 'DP_AUX_ARB_CONTROL__NOT_USE_AUX_REG_REQ', - 1: 'DP_AUX_ARB_CONTROL__USE_AUX_REG_REQ', -} -DP_AUX_ARB_CONTROL__NOT_USE_AUX_REG_REQ = 0 -DP_AUX_ARB_CONTROL__USE_AUX_REG_REQ = 1 -DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ARB_STATUS' -DP_AUX_ARB_STATUS__enumvalues = { - 0: 'DP_AUX_IDLE', - 1: 'DP_AUX_IN_USE_LS', - 2: 'DP_AUX_IN_USE_GTC', - 3: 'DP_AUX_IN_USE_SW', - 4: 'DP_AUX_IN_USE_PHYWAKE', -} -DP_AUX_IDLE = 0 -DP_AUX_IN_USE_LS = 1 -DP_AUX_IN_USE_GTC = 2 -DP_AUX_IN_USE_SW = 3 -DP_AUX_IN_USE_PHYWAKE = 4 -DP_AUX_ARB_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_CONTROL_HPD_SEL' -DP_AUX_CONTROL_HPD_SEL__enumvalues = { - 0: 'DP_AUX_CONTROL_HPD1_SELECTED', - 1: 'DP_AUX_CONTROL_HPD2_SELECTED', - 2: 'DP_AUX_CONTROL_HPD3_SELECTED', - 3: 'DP_AUX_CONTROL_HPD4_SELECTED', - 4: 'DP_AUX_CONTROL_HPD5_SELECTED', - 5: 'DP_AUX_CONTROL_NO_HPD_SELECTED', -} -DP_AUX_CONTROL_HPD1_SELECTED = 0 -DP_AUX_CONTROL_HPD2_SELECTED = 1 -DP_AUX_CONTROL_HPD3_SELECTED = 2 -DP_AUX_CONTROL_HPD4_SELECTED = 3 -DP_AUX_CONTROL_HPD5_SELECTED = 4 -DP_AUX_CONTROL_NO_HPD_SELECTED = 5 -DP_AUX_CONTROL_HPD_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_CONTROL_TEST_MODE' -DP_AUX_CONTROL_TEST_MODE__enumvalues = { - 0: 'DP_AUX_CONTROL_TEST_MODE_DISABLE', - 1: 'DP_AUX_CONTROL_TEST_MODE_ENABLE', -} -DP_AUX_CONTROL_TEST_MODE_DISABLE = 0 -DP_AUX_CONTROL_TEST_MODE_ENABLE = 1 -DP_AUX_CONTROL_TEST_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DEFINITE_ERR_REACHED_ACK' -DP_AUX_DEFINITE_ERR_REACHED_ACK__enumvalues = { - 0: 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_NOT_ACK', - 1: 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_ACK', -} -ALPHA_DP_AUX_DEFINITE_ERR_REACHED_NOT_ACK = 0 -ALPHA_DP_AUX_DEFINITE_ERR_REACHED_ACK = 1 -DP_AUX_DEFINITE_ERR_REACHED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT' -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 1: 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_PHASE_DETECT', -} -DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_PHASE_DETECT = 0 -DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_PHASE_DETECT = 1 -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START' -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_START', - 1: 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_START', -} -DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_START = 0 -DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_START = 1 -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP' -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_STOP', - 1: 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_STOP', -} -DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_STOP = 0 -DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_STOP = 1 -DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN' -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__6_EDGES', - 1: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__10_EDGES', - 2: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__18_EDGES', - 3: 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__RESERVED', -} -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__6_EDGES = 0 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__10_EDGES = 1 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__18_EDGES = 2 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__RESERVED = 3 -DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN' -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__2_HALF_SYMBOLS', - 1: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__4_HALF_SYMBOLS', - 2: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__6_HALF_SYMBOLS', - 3: 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__8_HALF_SYMBOLS', -} -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__2_HALF_SYMBOLS = 0 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__4_HALF_SYMBOLS = 1 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__6_HALF_SYMBOLS = 2 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__8_HALF_SYMBOLS = 3 -DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW' -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO2_PERIOD', - 1: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO4_PERIOD', - 2: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO8_PERIOD', - 3: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO16_PERIOD', - 4: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO32_PERIOD', - 5: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO64_PERIOD', - 6: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO128_PERIOD', - 7: 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO256_PERIOD', -} -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO2_PERIOD = 0 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO4_PERIOD = 1 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO8_PERIOD = 2 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO16_PERIOD = 3 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO32_PERIOD = 4 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO64_PERIOD = 5 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO128_PERIOD = 6 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO256_PERIOD = 7 -DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW' -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__enumvalues = { - 0: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO2_PERIOD', - 1: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO4_PERIOD', - 2: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO8_PERIOD', - 3: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO16_PERIOD', - 4: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO32_PERIOD', - 5: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO64_PERIOD', - 6: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO128_PERIOD', - 7: 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO256_PERIOD', -} -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO2_PERIOD = 0 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO4_PERIOD = 1 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO8_PERIOD = 2 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO16_PERIOD = 3 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO32_PERIOD = 4 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO64_PERIOD = 5 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO128_PERIOD = 6 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO256_PERIOD = 7 -DP_AUX_DPHY_RX_CONTROL_START_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD' -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__enumvalues = { - 0: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__1to2', - 1: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__3to4', - 2: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__7to8', - 3: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__15to16', - 4: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__31to32', - 5: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__63to64', - 6: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__127to128', - 7: 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__255to256', -} -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__1to2 = 0 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__3to4 = 1 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__7to8 = 2 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__15to16 = 3 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__31to32 = 4 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__63to64 = 5 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__127to128 = 6 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD__255to256 = 7 -DP_AUX_DPHY_RX_DETECTION_THRESHOLD = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY' -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__enumvalues = { - 0: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__0', - 1: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__16US', - 2: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__32US', - 3: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__64US', - 4: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__128US', - 5: 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__256US', -} -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__0 = 0 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__16US = 1 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__32US = 2 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__64US = 3 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__128US = 4 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__256US = 5 -DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE' -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__enumvalues = { - 0: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__1MHZ', - 1: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__2MHZ', - 2: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__4MHZ', - 3: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__8MHZ', -} -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__1MHZ = 0 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__2MHZ = 1 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__4MHZ = 2 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__8MHZ = 3 -DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL' -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__enumvalues = { - 0: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__DIVIDED_SYM_CLK', - 1: 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__FROM_DCCG_MICROSECOND_REF', -} -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__DIVIDED_SYM_CLK = 0 -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__FROM_DCCG_MICROSECOND_REF = 1 -DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_ERR_OCCURRED_ACK' -DP_AUX_ERR_OCCURRED_ACK__enumvalues = { - 0: 'DP_AUX_ERR_OCCURRED__NOT_ACK', - 1: 'DP_AUX_ERR_OCCURRED__ACK', -} -DP_AUX_ERR_OCCURRED__NOT_ACK = 0 -DP_AUX_ERR_OCCURRED__ACK = 1 -DP_AUX_ERR_OCCURRED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ' -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_ALLOW_REQ_FROM_OTHER_AUX', - 1: 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ_FROM_OTHER_AUX', -} -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_ALLOW_REQ_FROM_OTHER_AUX = 0 -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ_FROM_OTHER_AUX = 1 -DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW' -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__300US', - 1: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__400US', - 2: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__500US', - 3: 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__600US', -} -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__300US = 0 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__400US = 1 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__500US = 2 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__600US = 3 -DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT' -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__4_ATTAMPS', - 1: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__8_ATTAMPS', - 2: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__16_ATTAMPS', - 3: 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__RESERVED', -} -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__4_ATTAMPS = 0 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__8_ATTAMPS = 1 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__16_ATTAMPS = 2 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__RESERVED = 3 -DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN' -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__enumvalues = { - 0: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__0', - 1: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__64', - 2: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__128', - 3: 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__256', -} -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__0 = 0 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__64 = 1 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__128 = 2 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__256 = 3 -DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_INT_ACK' -DP_AUX_INT_ACK__enumvalues = { - 0: 'DP_AUX_INT__NOT_ACK', - 1: 'DP_AUX_INT__ACK', -} -DP_AUX_INT__NOT_ACK = 0 -DP_AUX_INT__ACK = 1 -DP_AUX_INT_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_LS_UPDATE_ACK' -DP_AUX_LS_UPDATE_ACK__enumvalues = { - 0: 'DP_AUX_INT_LS_UPDATE_NOT_ACK', - 1: 'DP_AUX_INT_LS_UPDATE_ACK', -} -DP_AUX_INT_LS_UPDATE_NOT_ACK = 0 -DP_AUX_INT_LS_UPDATE_ACK = 1 -DP_AUX_LS_UPDATE_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_PHY_WAKE_PRIORITY' -DP_AUX_PHY_WAKE_PRIORITY__enumvalues = { - 0: 'DP_AUX_PHY_WAKE_HIGH_PRIORITY', - 1: 'DP_AUX_PHY_WAKE_LOW_PRIORITY', -} -DP_AUX_PHY_WAKE_HIGH_PRIORITY = 0 -DP_AUX_PHY_WAKE_LOW_PRIORITY = 1 -DP_AUX_PHY_WAKE_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_POTENTIAL_ERR_REACHED_ACK' -DP_AUX_POTENTIAL_ERR_REACHED_ACK__enumvalues = { - 0: 'DP_AUX_POTENTIAL_ERR_REACHED__NOT_ACK', - 1: 'DP_AUX_POTENTIAL_ERR_REACHED__ACK', -} -DP_AUX_POTENTIAL_ERR_REACHED__NOT_ACK = 0 -DP_AUX_POTENTIAL_ERR_REACHED__ACK = 1 -DP_AUX_POTENTIAL_ERR_REACHED_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_RESET' -DP_AUX_RESET__enumvalues = { - 0: 'DP_AUX_RESET_DEASSERTED', - 1: 'DP_AUX_RESET_ASSERTED', -} -DP_AUX_RESET_DEASSERTED = 0 -DP_AUX_RESET_ASSERTED = 1 -DP_AUX_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_RESET_DONE' -DP_AUX_RESET_DONE__enumvalues = { - 0: 'DP_AUX_RESET_SEQUENCE_NOT_DONE', - 1: 'DP_AUX_RESET_SEQUENCE_DONE', -} -DP_AUX_RESET_SEQUENCE_NOT_DONE = 0 -DP_AUX_RESET_SEQUENCE_DONE = 1 -DP_AUX_RESET_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_RX_TIMEOUT_LEN_MUL' -DP_AUX_RX_TIMEOUT_LEN_MUL__enumvalues = { - 0: 'DP_AUX_RX_TIMEOUT_LEN_NO_MUL', - 1: 'DP_AUX_RX_TIMEOUT_LEN_MUL_2', - 2: 'DP_AUX_RX_TIMEOUT_LEN_MUL_4', - 3: 'DP_AUX_RX_TIMEOUT_LEN_MUL_8', -} -DP_AUX_RX_TIMEOUT_LEN_NO_MUL = 0 -DP_AUX_RX_TIMEOUT_LEN_MUL_2 = 1 -DP_AUX_RX_TIMEOUT_LEN_MUL_4 = 2 -DP_AUX_RX_TIMEOUT_LEN_MUL_8 = 3 -DP_AUX_RX_TIMEOUT_LEN_MUL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_SW_CONTROL_LS_READ_TRIG' -DP_AUX_SW_CONTROL_LS_READ_TRIG__enumvalues = { - 0: 'DP_AUX_SW_CONTROL_LS_READ__NOT_TRIG', - 1: 'DP_AUX_SW_CONTROL_LS_READ__TRIG', -} -DP_AUX_SW_CONTROL_LS_READ__NOT_TRIG = 0 -DP_AUX_SW_CONTROL_LS_READ__TRIG = 1 -DP_AUX_SW_CONTROL_LS_READ_TRIG = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_SW_CONTROL_SW_GO' -DP_AUX_SW_CONTROL_SW_GO__enumvalues = { - 0: 'DP_AUX_SW_CONTROL_SW__NOT_GO', - 1: 'DP_AUX_SW_CONTROL_SW__GO', -} -DP_AUX_SW_CONTROL_SW__NOT_GO = 0 -DP_AUX_SW_CONTROL_SW__GO = 1 -DP_AUX_SW_CONTROL_SW_GO = ctypes.c_uint32 # enum - -# values for enumeration 'DP_AUX_TX_PRECHARGE_LEN_MUL' -DP_AUX_TX_PRECHARGE_LEN_MUL__enumvalues = { - 0: 'DP_AUX_TX_PRECHARGE_LEN_NO_MUL', - 1: 'DP_AUX_TX_PRECHARGE_LEN_MUL_2', - 2: 'DP_AUX_TX_PRECHARGE_LEN_MUL_4', - 3: 'DP_AUX_TX_PRECHARGE_LEN_MUL_8', -} -DP_AUX_TX_PRECHARGE_LEN_NO_MUL = 0 -DP_AUX_TX_PRECHARGE_LEN_MUL_2 = 1 -DP_AUX_TX_PRECHARGE_LEN_MUL_4 = 2 -DP_AUX_TX_PRECHARGE_LEN_MUL_8 = 3 -DP_AUX_TX_PRECHARGE_LEN_MUL = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ACK' -DOUT_I2C_ACK__enumvalues = { - 0: 'DOUT_I2C_NO_ACK', - 1: 'DOUT_I2C_ACK_TO_CLEAN', -} -DOUT_I2C_NO_ACK = 0 -DOUT_I2C_ACK_TO_CLEAN = 1 -DOUT_I2C_ACK = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_ABORT_XFER' -DOUT_I2C_ARBITRATION_ABORT_XFER__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_NOT_ABORT_CURRENT_TRANSFER', - 1: 'DOUT_I2C_ARBITRATION_ABORT_CURRENT_TRANSFER', -} -DOUT_I2C_ARBITRATION_NOT_ABORT_CURRENT_TRANSFER = 0 -DOUT_I2C_ARBITRATION_ABORT_CURRENT_TRANSFER = 1 -DOUT_I2C_ARBITRATION_ABORT_XFER = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG' -DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_DONE__NOT_USING_I2C_REG', - 1: 'DOUT_I2C_ARBITRATION_DONE__USING_I2C_REG', -} -DOUT_I2C_ARBITRATION_DONE__NOT_USING_I2C_REG = 0 -DOUT_I2C_ARBITRATION_DONE__USING_I2C_REG = 1 -DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO' -DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_SW_QUEUE_ENABLED', - 1: 'DOUT_I2C_ARBITRATION_SW_QUEUE_DISABLED', -} -DOUT_I2C_ARBITRATION_SW_QUEUE_ENABLED = 0 -DOUT_I2C_ARBITRATION_SW_QUEUE_DISABLED = 1 -DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_SW_PRIORITY' -DOUT_I2C_ARBITRATION_SW_PRIORITY__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_NORMAL', - 1: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_HIGH', - 2: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_0_RESERVED', - 3: 'DOUT_I2C_ARBITRATION_SW_PRIORITY_1_RESERVED', -} -DOUT_I2C_ARBITRATION_SW_PRIORITY_NORMAL = 0 -DOUT_I2C_ARBITRATION_SW_PRIORITY_HIGH = 1 -DOUT_I2C_ARBITRATION_SW_PRIORITY_0_RESERVED = 2 -DOUT_I2C_ARBITRATION_SW_PRIORITY_1_RESERVED = 3 -DOUT_I2C_ARBITRATION_SW_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ' -DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ__enumvalues = { - 0: 'DOUT_I2C_ARBITRATION__NOT_USE_I2C_REG_REQ', - 1: 'DOUT_I2C_ARBITRATION__USE_I2C_REG_REQ', -} -DOUT_I2C_ARBITRATION__NOT_USE_I2C_REG_REQ = 0 -DOUT_I2C_ARBITRATION__USE_I2C_REG_REQ = 1 -DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_DBG_REF_SEL' -DOUT_I2C_CONTROL_DBG_REF_SEL__enumvalues = { - 0: 'DOUT_I2C_CONTROL_NORMAL_DEBUG', - 1: 'DOUT_I2C_CONTROL_FAST_REFERENCE_DEBUG', -} -DOUT_I2C_CONTROL_NORMAL_DEBUG = 0 -DOUT_I2C_CONTROL_FAST_REFERENCE_DEBUG = 1 -DOUT_I2C_CONTROL_DBG_REF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_DDC_SELECT' -DOUT_I2C_CONTROL_DDC_SELECT__enumvalues = { - 0: 'DOUT_I2C_CONTROL_SELECT_DDC1', - 1: 'DOUT_I2C_CONTROL_SELECT_DDC2', - 2: 'DOUT_I2C_CONTROL_SELECT_DDC3', - 3: 'DOUT_I2C_CONTROL_SELECT_DDC4', - 4: 'DOUT_I2C_CONTROL_SELECT_DDC5', - 5: 'DOUT_I2C_CONTROL_SELECT_DDCVGA', -} -DOUT_I2C_CONTROL_SELECT_DDC1 = 0 -DOUT_I2C_CONTROL_SELECT_DDC2 = 1 -DOUT_I2C_CONTROL_SELECT_DDC3 = 2 -DOUT_I2C_CONTROL_SELECT_DDC4 = 3 -DOUT_I2C_CONTROL_SELECT_DDC5 = 4 -DOUT_I2C_CONTROL_SELECT_DDCVGA = 5 -DOUT_I2C_CONTROL_DDC_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_GO' -DOUT_I2C_CONTROL_GO__enumvalues = { - 0: 'DOUT_I2C_CONTROL_STOP_TRANSFER', - 1: 'DOUT_I2C_CONTROL_START_TRANSFER', -} -DOUT_I2C_CONTROL_STOP_TRANSFER = 0 -DOUT_I2C_CONTROL_START_TRANSFER = 1 -DOUT_I2C_CONTROL_GO = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_SEND_RESET' -DOUT_I2C_CONTROL_SEND_RESET__enumvalues = { - 0: 'DOUT_I2C_CONTROL__NOT_SEND_RESET', - 1: 'DOUT_I2C_CONTROL__SEND_RESET', -} -DOUT_I2C_CONTROL__NOT_SEND_RESET = 0 -DOUT_I2C_CONTROL__SEND_RESET = 1 -DOUT_I2C_CONTROL_SEND_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_SEND_RESET_LENGTH' -DOUT_I2C_CONTROL_SEND_RESET_LENGTH__enumvalues = { - 0: 'DOUT_I2C_CONTROL__SEND_RESET_LENGTH_9', - 1: 'DOUT_I2C_CONTROL__SEND_RESET_LENGTH_10', -} -DOUT_I2C_CONTROL__SEND_RESET_LENGTH_9 = 0 -DOUT_I2C_CONTROL__SEND_RESET_LENGTH_10 = 1 -DOUT_I2C_CONTROL_SEND_RESET_LENGTH = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_SOFT_RESET' -DOUT_I2C_CONTROL_SOFT_RESET__enumvalues = { - 0: 'DOUT_I2C_CONTROL_NOT_RESET_I2C_CONTROLLER', - 1: 'DOUT_I2C_CONTROL_RESET_I2C_CONTROLLER', -} -DOUT_I2C_CONTROL_NOT_RESET_I2C_CONTROLLER = 0 -DOUT_I2C_CONTROL_RESET_I2C_CONTROLLER = 1 -DOUT_I2C_CONTROL_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_SW_STATUS_RESET' -DOUT_I2C_CONTROL_SW_STATUS_RESET__enumvalues = { - 0: 'DOUT_I2C_CONTROL_NOT_RESET_SW_STATUS', - 1: 'DOUT_I2C_CONTROL_RESET_SW_STATUS', -} -DOUT_I2C_CONTROL_NOT_RESET_SW_STATUS = 0 -DOUT_I2C_CONTROL_RESET_SW_STATUS = 1 -DOUT_I2C_CONTROL_SW_STATUS_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_CONTROL_TRANSACTION_COUNT' -DOUT_I2C_CONTROL_TRANSACTION_COUNT__enumvalues = { - 0: 'DOUT_I2C_CONTROL_TRANS0', - 1: 'DOUT_I2C_CONTROL_TRANS0_TRANS1', - 2: 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2', - 3: 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2_TRANS3', -} -DOUT_I2C_CONTROL_TRANS0 = 0 -DOUT_I2C_CONTROL_TRANS0_TRANS1 = 1 -DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2 = 2 -DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2_TRANS3 = 3 -DOUT_I2C_CONTROL_TRANSACTION_COUNT = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DATA_INDEX_WRITE' -DOUT_I2C_DATA_INDEX_WRITE__enumvalues = { - 0: 'DOUT_I2C_DATA__NOT_INDEX_WRITE', - 1: 'DOUT_I2C_DATA__INDEX_WRITE', -} -DOUT_I2C_DATA__NOT_INDEX_WRITE = 0 -DOUT_I2C_DATA__INDEX_WRITE = 1 -DOUT_I2C_DATA_INDEX_WRITE = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN' -DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_BY_EXTERNAL_RESISTOR', - 1: 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SCL', -} -DOUT_I2C_DDC_SETUP_CLK_DRIVE_BY_EXTERNAL_RESISTOR = 0 -DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SCL = 1 -DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN' -DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_BY_EXTERNAL_RESISTOR', - 1: 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SDA', -} -DOUT_I2C_DDC_SETUP_DATA_DRIVE_BY_EXTERNAL_RESISTOR = 0 -DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SDA = 1 -DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL' -DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_10MCLKS', - 1: 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_20MCLKS', -} -DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_10MCLKS = 0 -DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_20MCLKS = 1 -DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE' -DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE__enumvalues = { - 0: 'DOUT_I2C_DDC_SETUP_EDID_DETECT_CONNECT', - 1: 'DOUT_I2C_DDC_SETUP_EDID_DETECT_DISCONNECT', -} -DOUT_I2C_DDC_SETUP_EDID_DETECT_CONNECT = 0 -DOUT_I2C_DDC_SETUP_EDID_DETECT_DISCONNECT = 1 -DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_DDC_SPEED_THRESHOLD' -DOUT_I2C_DDC_SPEED_THRESHOLD__enumvalues = { - 0: 'DOUT_I2C_DDC_SPEED_THRESHOLD_BIG_THAN_ZERO', - 1: 'DOUT_I2C_DDC_SPEED_THRESHOLD_QUATER_OF_TOTAL_SAMPLE', - 2: 'DOUT_I2C_DDC_SPEED_THRESHOLD_HALF_OF_TOTAL_SAMPLE', - 3: 'DOUT_I2C_DDC_SPEED_THRESHOLD_THREE_QUATERS_OF_TOTAL_SAMPLE', -} -DOUT_I2C_DDC_SPEED_THRESHOLD_BIG_THAN_ZERO = 0 -DOUT_I2C_DDC_SPEED_THRESHOLD_QUATER_OF_TOTAL_SAMPLE = 1 -DOUT_I2C_DDC_SPEED_THRESHOLD_HALF_OF_TOTAL_SAMPLE = 2 -DOUT_I2C_DDC_SPEED_THRESHOLD_THREE_QUATERS_OF_TOTAL_SAMPLE = 3 -DOUT_I2C_DDC_SPEED_THRESHOLD = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET' -DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET__enumvalues = { - 0: 'DOUT_I2C_EDID_NOT_SEND_RESET_BEFORE_EDID_READ_TRACTION', - 1: 'DOUT_I2C_EDID_SEND_RESET_BEFORE_EDID_READ_TRACTION', -} -DOUT_I2C_EDID_NOT_SEND_RESET_BEFORE_EDID_READ_TRACTION = 0 -DOUT_I2C_EDID_SEND_RESET_BEFORE_EDID_READ_TRACTION = 1 -DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE' -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__enumvalues = { - 0: 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__LEVEL', - 1: 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__PULSE', -} -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__LEVEL = 0 -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__PULSE = 1 -DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DOUT_I2C_TRANSACTION_STOP_ON_NACK' -DOUT_I2C_TRANSACTION_STOP_ON_NACK__enumvalues = { - 0: 'DOUT_I2C_TRANSACTION_STOP_CURRENT_TRANS', - 1: 'DOUT_I2C_TRANSACTION_STOP_ALL_TRANS', -} -DOUT_I2C_TRANSACTION_STOP_CURRENT_TRANS = 0 -DOUT_I2C_TRANSACTION_STOP_ALL_TRANS = 1 -DOUT_I2C_TRANSACTION_STOP_ON_NACK = ctypes.c_uint32 # enum - -# values for enumeration 'CLOCK_GATING_EN' -CLOCK_GATING_EN__enumvalues = { - 0: 'CLOCK_GATING_ENABLE', - 1: 'CLOCK_GATING_DISABLE', -} -CLOCK_GATING_ENABLE = 0 -CLOCK_GATING_DISABLE = 1 -CLOCK_GATING_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DAC_MUX_SELECT' -DAC_MUX_SELECT__enumvalues = { - 0: 'DAC_MUX_SELECT_DACA', - 1: 'DAC_MUX_SELECT_DACB', -} -DAC_MUX_SELECT_DACA = 0 -DAC_MUX_SELECT_DACB = 1 -DAC_MUX_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_DIS_CTRL' -DIOMEM_PWR_DIS_CTRL__enumvalues = { - 0: 'DIOMEM_ENABLE_MEM_PWR_CTRL', - 1: 'DIOMEM_DISABLE_MEM_PWR_CTRL', -} -DIOMEM_ENABLE_MEM_PWR_CTRL = 0 -DIOMEM_DISABLE_MEM_PWR_CTRL = 1 -DIOMEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_FORCE_CTRL' -DIOMEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'DIOMEM_NO_FORCE_REQUEST', - 1: 'DIOMEM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'DIOMEM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'DIOMEM_FORCE_SHUT_DOWN_REQUEST', -} -DIOMEM_NO_FORCE_REQUEST = 0 -DIOMEM_FORCE_LIGHT_SLEEP_REQUEST = 1 -DIOMEM_FORCE_DEEP_SLEEP_REQUEST = 2 -DIOMEM_FORCE_SHUT_DOWN_REQUEST = 3 -DIOMEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_FORCE_CTRL2' -DIOMEM_PWR_FORCE_CTRL2__enumvalues = { - 0: 'DIOMEM_NO_FORCE_REQ', - 1: 'DIOMEM_FORCE_LIGHT_SLEEP_REQ', -} -DIOMEM_NO_FORCE_REQ = 0 -DIOMEM_FORCE_LIGHT_SLEEP_REQ = 1 -DIOMEM_PWR_FORCE_CTRL2 = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_SEL_CTRL' -DIOMEM_PWR_SEL_CTRL__enumvalues = { - 0: 'DIOMEM_DYNAMIC_SHUT_DOWN_ENABLE', - 1: 'DIOMEM_DYNAMIC_DEEP_SLEEP_ENABLE', - 2: 'DIOMEM_DYNAMIC_LIGHT_SLEEP_ENABLE', -} -DIOMEM_DYNAMIC_SHUT_DOWN_ENABLE = 0 -DIOMEM_DYNAMIC_DEEP_SLEEP_ENABLE = 1 -DIOMEM_DYNAMIC_LIGHT_SLEEP_ENABLE = 2 -DIOMEM_PWR_SEL_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'DIOMEM_PWR_SEL_CTRL2' -DIOMEM_PWR_SEL_CTRL2__enumvalues = { - 0: 'DIOMEM_DYNAMIC_DEEP_SLEEP_EN', - 1: 'DIOMEM_DYNAMIC_LIGHT_SLEEP_EN', -} -DIOMEM_DYNAMIC_DEEP_SLEEP_EN = 0 -DIOMEM_DYNAMIC_LIGHT_SLEEP_EN = 1 -DIOMEM_PWR_SEL_CTRL2 = ctypes.c_uint32 # enum - -# values for enumeration 'DIO_DBG_BLOCK_SEL' -DIO_DBG_BLOCK_SEL__enumvalues = { - 0: 'DIO_DBG_BLOCK_SEL_DIO', - 11: 'DIO_DBG_BLOCK_SEL_DIGFE_A', - 12: 'DIO_DBG_BLOCK_SEL_DIGFE_B', - 13: 'DIO_DBG_BLOCK_SEL_DIGFE_C', - 14: 'DIO_DBG_BLOCK_SEL_DIGFE_D', - 15: 'DIO_DBG_BLOCK_SEL_DIGFE_E', - 18: 'DIO_DBG_BLOCK_SEL_DIGA', - 19: 'DIO_DBG_BLOCK_SEL_DIGB', - 20: 'DIO_DBG_BLOCK_SEL_DIGC', - 21: 'DIO_DBG_BLOCK_SEL_DIGD', - 22: 'DIO_DBG_BLOCK_SEL_DIGE', - 25: 'DIO_DBG_BLOCK_SEL_DPFE_A', - 26: 'DIO_DBG_BLOCK_SEL_DPFE_B', - 27: 'DIO_DBG_BLOCK_SEL_DPFE_C', - 28: 'DIO_DBG_BLOCK_SEL_DPFE_D', - 29: 'DIO_DBG_BLOCK_SEL_DPFE_E', - 32: 'DIO_DBG_BLOCK_SEL_DPA', - 33: 'DIO_DBG_BLOCK_SEL_DPB', - 34: 'DIO_DBG_BLOCK_SEL_DPC', - 35: 'DIO_DBG_BLOCK_SEL_DPD', - 36: 'DIO_DBG_BLOCK_SEL_DPE', - 39: 'DIO_DBG_BLOCK_SEL_AUX0', - 40: 'DIO_DBG_BLOCK_SEL_AUX1', - 41: 'DIO_DBG_BLOCK_SEL_AUX2', - 42: 'DIO_DBG_BLOCK_SEL_AUX3', - 43: 'DIO_DBG_BLOCK_SEL_AUX4', - 45: 'DIO_DBG_BLOCK_SEL_PERFMON_DIO', - 46: 'DIO_DBG_BLOCK_SEL_RESERVED', -} -DIO_DBG_BLOCK_SEL_DIO = 0 -DIO_DBG_BLOCK_SEL_DIGFE_A = 11 -DIO_DBG_BLOCK_SEL_DIGFE_B = 12 -DIO_DBG_BLOCK_SEL_DIGFE_C = 13 -DIO_DBG_BLOCK_SEL_DIGFE_D = 14 -DIO_DBG_BLOCK_SEL_DIGFE_E = 15 -DIO_DBG_BLOCK_SEL_DIGA = 18 -DIO_DBG_BLOCK_SEL_DIGB = 19 -DIO_DBG_BLOCK_SEL_DIGC = 20 -DIO_DBG_BLOCK_SEL_DIGD = 21 -DIO_DBG_BLOCK_SEL_DIGE = 22 -DIO_DBG_BLOCK_SEL_DPFE_A = 25 -DIO_DBG_BLOCK_SEL_DPFE_B = 26 -DIO_DBG_BLOCK_SEL_DPFE_C = 27 -DIO_DBG_BLOCK_SEL_DPFE_D = 28 -DIO_DBG_BLOCK_SEL_DPFE_E = 29 -DIO_DBG_BLOCK_SEL_DPA = 32 -DIO_DBG_BLOCK_SEL_DPB = 33 -DIO_DBG_BLOCK_SEL_DPC = 34 -DIO_DBG_BLOCK_SEL_DPD = 35 -DIO_DBG_BLOCK_SEL_DPE = 36 -DIO_DBG_BLOCK_SEL_AUX0 = 39 -DIO_DBG_BLOCK_SEL_AUX1 = 40 -DIO_DBG_BLOCK_SEL_AUX2 = 41 -DIO_DBG_BLOCK_SEL_AUX3 = 42 -DIO_DBG_BLOCK_SEL_AUX4 = 43 -DIO_DBG_BLOCK_SEL_PERFMON_DIO = 45 -DIO_DBG_BLOCK_SEL_RESERVED = 46 -DIO_DBG_BLOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DIO_HDMI_RXSTATUS_TIMER_CONTROL_DIO_HDMI_RXSTATUS_TIMER_TYPE' -DIO_HDMI_RXSTATUS_TIMER_CONTROL_DIO_HDMI_RXSTATUS_TIMER_TYPE__enumvalues = { - 0: 'DIO_HDMI_RXSTATUS_TIMER_TYPE_LEVEL', - 1: 'DIO_HDMI_RXSTATUS_TIMER_TYPE_PULSE', -} -DIO_HDMI_RXSTATUS_TIMER_TYPE_LEVEL = 0 -DIO_HDMI_RXSTATUS_TIMER_TYPE_PULSE = 1 -DIO_HDMI_RXSTATUS_TIMER_CONTROL_DIO_HDMI_RXSTATUS_TIMER_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE' -DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE__enumvalues = { - 0: 'DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE_0', - 1: 'DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE_1', -} -DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE_0 = 0 -DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE_1 = 1 -DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DIO_DCN_ACTIVE_STATUS' -ENUM_DIO_DCN_ACTIVE_STATUS__enumvalues = { - 0: 'ENUM_DCN_NOT_ACTIVE', - 1: 'ENUM_DCN_ACTIVE', -} -ENUM_DCN_NOT_ACTIVE = 0 -ENUM_DCN_ACTIVE = 1 -ENUM_DIO_DCN_ACTIVE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_STEREOSYNC_SEL' -GENERIC_STEREOSYNC_SEL__enumvalues = { - 0: 'GENERIC_STEREOSYNC_SEL_D1', - 1: 'GENERIC_STEREOSYNC_SEL_D2', - 2: 'GENERIC_STEREOSYNC_SEL_D3', - 3: 'GENERIC_STEREOSYNC_SEL_D4', - 4: 'GENERIC_STEREOSYNC_SEL_RESERVED', -} -GENERIC_STEREOSYNC_SEL_D1 = 0 -GENERIC_STEREOSYNC_SEL_D2 = 1 -GENERIC_STEREOSYNC_SEL_D3 = 2 -GENERIC_STEREOSYNC_SEL_D4 = 3 -GENERIC_STEREOSYNC_SEL_RESERVED = 4 -GENERIC_STEREOSYNC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PM_ASSERT_RESET' -PM_ASSERT_RESET__enumvalues = { - 0: 'PM_ASSERT_RESET_0', - 1: 'PM_ASSERT_RESET_1', -} -PM_ASSERT_RESET_0 = 0 -PM_ASSERT_RESET_1 = 1 -PM_ASSERT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'SOFT_RESET' -SOFT_RESET__enumvalues = { - 0: 'SOFT_RESET_0', - 1: 'SOFT_RESET_1', -} -SOFT_RESET_0 = 0 -SOFT_RESET_1 = 1 -SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'TMDS_MUX_SELECT' -TMDS_MUX_SELECT__enumvalues = { - 0: 'TMDS_MUX_SELECT_B', - 1: 'TMDS_MUX_SELECT_G', - 2: 'TMDS_MUX_SELECT_R', - 3: 'TMDS_MUX_SELECT_RESERVED', -} -TMDS_MUX_SELECT_B = 0 -TMDS_MUX_SELECT_G = 1 -TMDS_MUX_SELECT_R = 2 -TMDS_MUX_SELECT_RESERVED = 3 -TMDS_MUX_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DME_MEM_POWER_STATE_ENUM' -DME_MEM_POWER_STATE_ENUM__enumvalues = { - 0: 'DME_MEM_POWER_STATE_ENUM_ON', - 1: 'DME_MEM_POWER_STATE_ENUM_LS', - 2: 'DME_MEM_POWER_STATE_ENUM_DS', - 3: 'DME_MEM_POWER_STATE_ENUM_SD', -} -DME_MEM_POWER_STATE_ENUM_ON = 0 -DME_MEM_POWER_STATE_ENUM_LS = 1 -DME_MEM_POWER_STATE_ENUM_DS = 2 -DME_MEM_POWER_STATE_ENUM_SD = 3 -DME_MEM_POWER_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DME_MEM_PWR_DIS_CTRL' -DME_MEM_PWR_DIS_CTRL__enumvalues = { - 0: 'DME_MEM_ENABLE_MEM_PWR_CTRL', - 1: 'DME_MEM_DISABLE_MEM_PWR_CTRL', -} -DME_MEM_ENABLE_MEM_PWR_CTRL = 0 -DME_MEM_DISABLE_MEM_PWR_CTRL = 1 -DME_MEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'DME_MEM_PWR_FORCE_CTRL' -DME_MEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'DME_MEM_NO_FORCE_REQUEST', - 1: 'DME_MEM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'DME_MEM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'DME_MEM_FORCE_SHUT_DOWN_REQUEST', -} -DME_MEM_NO_FORCE_REQUEST = 0 -DME_MEM_FORCE_LIGHT_SLEEP_REQUEST = 1 -DME_MEM_FORCE_DEEP_SLEEP_REQUEST = 2 -DME_MEM_FORCE_SHUT_DOWN_REQUEST = 3 -DME_MEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'METADATA_HUBP_SEL' -METADATA_HUBP_SEL__enumvalues = { - 0: 'METADATA_HUBP_SEL_0', - 1: 'METADATA_HUBP_SEL_1', - 2: 'METADATA_HUBP_SEL_2', - 3: 'METADATA_HUBP_SEL_3', - 4: 'METADATA_HUBP_SEL_RESERVED', -} -METADATA_HUBP_SEL_0 = 0 -METADATA_HUBP_SEL_1 = 1 -METADATA_HUBP_SEL_2 = 2 -METADATA_HUBP_SEL_3 = 3 -METADATA_HUBP_SEL_RESERVED = 4 -METADATA_HUBP_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'METADATA_STREAM_TYPE_SEL' -METADATA_STREAM_TYPE_SEL__enumvalues = { - 0: 'METADATA_STREAM_DP', - 1: 'METADATA_STREAM_DVE', -} -METADATA_STREAM_DP = 0 -METADATA_STREAM_DVE = 1 -METADATA_STREAM_TYPE_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'VPG_MEM_PWR_DIS_CTRL' -VPG_MEM_PWR_DIS_CTRL__enumvalues = { - 0: 'VPG_MEM_ENABLE_MEM_PWR_CTRL', - 1: 'VPG_MEM_DISABLE_MEM_PWR_CTRL', -} -VPG_MEM_ENABLE_MEM_PWR_CTRL = 0 -VPG_MEM_DISABLE_MEM_PWR_CTRL = 1 -VPG_MEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'VPG_MEM_PWR_FORCE_CTRL' -VPG_MEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'VPG_MEM_NO_FORCE_REQ', - 1: 'VPG_MEM_FORCE_LIGHT_SLEEP_REQ', -} -VPG_MEM_NO_FORCE_REQ = 0 -VPG_MEM_FORCE_LIGHT_SLEEP_REQ = 1 -VPG_MEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_ACP_TYPE' -AFMT_ACP_TYPE__enumvalues = { - 0: 'ACP_TYPE_GENERIC_AUDIO', - 1: 'ACP_TYPE_ICE60958_AUDIO', - 2: 'ACP_TYPE_DVD_AUDIO', - 3: 'ACP_TYPE_SUPER_AUDIO_CD', -} -ACP_TYPE_GENERIC_AUDIO = 0 -ACP_TYPE_ICE60958_AUDIO = 1 -ACP_TYPE_DVD_AUDIO = 2 -ACP_TYPE_SUPER_AUDIO_CD = 3 -AFMT_ACP_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_CRC_CONTROL_CH_SEL' -AFMT_AUDIO_CRC_CONTROL_CH_SEL__enumvalues = { - 0: 'AFMT_AUDIO_CRC_CH0_SIG', - 1: 'AFMT_AUDIO_CRC_CH1_SIG', - 2: 'AFMT_AUDIO_CRC_CH2_SIG', - 3: 'AFMT_AUDIO_CRC_CH3_SIG', - 4: 'AFMT_AUDIO_CRC_CH4_SIG', - 5: 'AFMT_AUDIO_CRC_CH5_SIG', - 6: 'AFMT_AUDIO_CRC_CH6_SIG', - 7: 'AFMT_AUDIO_CRC_CH7_SIG', - 8: 'AFMT_AUDIO_CRC_RESERVED_8', - 9: 'AFMT_AUDIO_CRC_RESERVED_9', - 10: 'AFMT_AUDIO_CRC_RESERVED_10', - 11: 'AFMT_AUDIO_CRC_RESERVED_11', - 12: 'AFMT_AUDIO_CRC_RESERVED_12', - 13: 'AFMT_AUDIO_CRC_RESERVED_13', - 14: 'AFMT_AUDIO_CRC_RESERVED_14', - 15: 'AFMT_AUDIO_CRC_AUDIO_SAMPLE_COUNT', -} -AFMT_AUDIO_CRC_CH0_SIG = 0 -AFMT_AUDIO_CRC_CH1_SIG = 1 -AFMT_AUDIO_CRC_CH2_SIG = 2 -AFMT_AUDIO_CRC_CH3_SIG = 3 -AFMT_AUDIO_CRC_CH4_SIG = 4 -AFMT_AUDIO_CRC_CH5_SIG = 5 -AFMT_AUDIO_CRC_CH6_SIG = 6 -AFMT_AUDIO_CRC_CH7_SIG = 7 -AFMT_AUDIO_CRC_RESERVED_8 = 8 -AFMT_AUDIO_CRC_RESERVED_9 = 9 -AFMT_AUDIO_CRC_RESERVED_10 = 10 -AFMT_AUDIO_CRC_RESERVED_11 = 11 -AFMT_AUDIO_CRC_RESERVED_12 = 12 -AFMT_AUDIO_CRC_RESERVED_13 = 13 -AFMT_AUDIO_CRC_RESERVED_14 = 14 -AFMT_AUDIO_CRC_AUDIO_SAMPLE_COUNT = 15 -AFMT_AUDIO_CRC_CONTROL_CH_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_CRC_CONTROL_CONT' -AFMT_AUDIO_CRC_CONTROL_CONT__enumvalues = { - 0: 'AFMT_AUDIO_CRC_ONESHOT', - 1: 'AFMT_AUDIO_CRC_AUTO_RESTART', -} -AFMT_AUDIO_CRC_ONESHOT = 0 -AFMT_AUDIO_CRC_AUTO_RESTART = 1 -AFMT_AUDIO_CRC_CONTROL_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_CRC_CONTROL_SOURCE' -AFMT_AUDIO_CRC_CONTROL_SOURCE__enumvalues = { - 0: 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_INPUT', - 1: 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_OUTPUT', -} -AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_INPUT = 0 -AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_OUTPUT = 1 -AFMT_AUDIO_CRC_CONTROL_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD' -AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD__enumvalues = { - 0: 'AFMT_AUDIO_LAYOUT_DETERMINED_BY_AZ_AUDIO_CHANNEL_STATUS', - 1: 'AFMT_AUDIO_LAYOUT_OVRD_BY_REGISTER', -} -AFMT_AUDIO_LAYOUT_DETERMINED_BY_AZ_AUDIO_CHANNEL_STATUS = 0 -AFMT_AUDIO_LAYOUT_OVRD_BY_REGISTER = 1 -AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND' -AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND__enumvalues = { - 0: 'AFMT_AUDIO_PACKET_SENT_DISABLED', - 1: 'AFMT_AUDIO_PACKET_SENT_ENABLED', -} -AFMT_AUDIO_PACKET_SENT_DISABLED = 0 -AFMT_AUDIO_PACKET_SENT_ENABLED = 1 -AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS' -AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS__enumvalues = { - 0: 'AFMT_NOT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED_RESERVED', - 1: 'AFMT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED', -} -AFMT_NOT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED_RESERVED = 0 -AFMT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED = 1 -AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_AUDIO_SRC_CONTROL_SELECT' -AFMT_AUDIO_SRC_CONTROL_SELECT__enumvalues = { - 0: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM0', - 1: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM1', - 2: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM2', - 3: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM3', - 4: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM4', - 5: 'AFMT_AUDIO_SRC_FROM_AZ_STREAM5', -} -AFMT_AUDIO_SRC_FROM_AZ_STREAM0 = 0 -AFMT_AUDIO_SRC_FROM_AZ_STREAM1 = 1 -AFMT_AUDIO_SRC_FROM_AZ_STREAM2 = 2 -AFMT_AUDIO_SRC_FROM_AZ_STREAM3 = 3 -AFMT_AUDIO_SRC_FROM_AZ_STREAM4 = 4 -AFMT_AUDIO_SRC_FROM_AZ_STREAM5 = 5 -AFMT_AUDIO_SRC_CONTROL_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_HDMI_AUDIO_SEND_MAX_PACKETS' -AFMT_HDMI_AUDIO_SEND_MAX_PACKETS__enumvalues = { - 0: 'HDMI_NOT_SEND_MAX_AUDIO_PACKETS', - 1: 'HDMI_SEND_MAX_AUDIO_PACKETS', -} -HDMI_NOT_SEND_MAX_AUDIO_PACKETS = 0 -HDMI_SEND_MAX_AUDIO_PACKETS = 1 -AFMT_HDMI_AUDIO_SEND_MAX_PACKETS = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE' -AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE__enumvalues = { - 0: 'AFMT_INFOFRAME_SOURCE_FROM_AZALIA_BLOCK', - 1: 'AFMT_INFOFRAME_SOURCE_FROM_AFMT_REGISTERS', -} -AFMT_INFOFRAME_SOURCE_FROM_AZALIA_BLOCK = 0 -AFMT_INFOFRAME_SOURCE_FROM_AFMT_REGISTERS = 1 -AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_INTERRUPT_STATUS_CHG_MASK' -AFMT_INTERRUPT_STATUS_CHG_MASK__enumvalues = { - 0: 'AFMT_INTERRUPT_DISABLE', - 1: 'AFMT_INTERRUPT_ENABLE', -} -AFMT_INTERRUPT_DISABLE = 0 -AFMT_INTERRUPT_ENABLE = 1 -AFMT_INTERRUPT_STATUS_CHG_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_MEM_PWR_DIS_CTRL' -AFMT_MEM_PWR_DIS_CTRL__enumvalues = { - 0: 'AFMT_MEM_ENABLE_MEM_PWR_CTRL', - 1: 'AFMT_MEM_DISABLE_MEM_PWR_CTRL', -} -AFMT_MEM_ENABLE_MEM_PWR_CTRL = 0 -AFMT_MEM_DISABLE_MEM_PWR_CTRL = 1 -AFMT_MEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_MEM_PWR_FORCE_CTRL' -AFMT_MEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'AFMT_MEM_NO_FORCE_REQUEST', - 1: 'AFMT_MEM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'AFMT_MEM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'AFMT_MEM_FORCE_SHUT_DOWN_REQUEST', -} -AFMT_MEM_NO_FORCE_REQUEST = 0 -AFMT_MEM_FORCE_LIGHT_SLEEP_REQUEST = 1 -AFMT_MEM_FORCE_DEEP_SLEEP_REQUEST = 2 -AFMT_MEM_FORCE_SHUT_DOWN_REQUEST = 3 -AFMT_MEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_RAMP_CONTROL0_SIGN' -AFMT_RAMP_CONTROL0_SIGN__enumvalues = { - 0: 'AFMT_RAMP_SIGNED', - 1: 'AFMT_RAMP_UNSIGNED', -} -AFMT_RAMP_SIGNED = 0 -AFMT_RAMP_UNSIGNED = 1 -AFMT_RAMP_CONTROL0_SIGN = ctypes.c_uint32 # enum - -# values for enumeration 'AFMT_VBI_PACKET_CONTROL_ACP_SOURCE' -AFMT_VBI_PACKET_CONTROL_ACP_SOURCE__enumvalues = { - 0: 'AFMT_ACP_SOURCE_FROM_AZALIA', - 1: 'AFMT_ACP_SOURCE_FROM_AFMT_REGISTERS', -} -AFMT_ACP_SOURCE_FROM_AZALIA = 0 -AFMT_ACP_SOURCE_FROM_AFMT_REGISTERS = 1 -AFMT_VBI_PACKET_CONTROL_ACP_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'AUDIO_LAYOUT_SELECT' -AUDIO_LAYOUT_SELECT__enumvalues = { - 0: 'AUDIO_LAYOUT_0', - 1: 'AUDIO_LAYOUT_1', -} -AUDIO_LAYOUT_0 = 0 -AUDIO_LAYOUT_1 = 1 -AUDIO_LAYOUT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'HPO_TOP_CLOCK_GATING_DISABLE' -HPO_TOP_CLOCK_GATING_DISABLE__enumvalues = { - 0: 'HPO_TOP_CLOCK_GATING_EN', - 1: 'HPO_TOP_CLOCK_GATING_DIS', -} -HPO_TOP_CLOCK_GATING_EN = 0 -HPO_TOP_CLOCK_GATING_DIS = 1 -HPO_TOP_CLOCK_GATING_DISABLE = ctypes.c_uint32 # enum - -# values for enumeration 'HPO_TOP_TEST_CLK_SEL' -HPO_TOP_TEST_CLK_SEL__enumvalues = { - 0: 'HPO_TOP_PERMANENT_DISPCLK', - 1: 'HPO_TOP_REGISTER_GATED_DISPCLK', - 2: 'HPO_TOP_PERMANENT_SOCCLK', - 3: 'HPO_TOP_TEST_CLOCK_RESERVED', - 4: 'HPO_TOP_PERMANENT_HDMISTREAMCLK0', - 5: 'HPO_TOP_FEATURE_GATED_HDMISTREAMCLK0', - 6: 'HPO_TOP_REGISTER_GATED_HDMISTREAMCLK0', - 7: 'HPO_TOP_FEATURE_GATED_DISPCLK_IN_HDMISTREAMENC0', - 8: 'HPO_TOP_FEATURE_GATED_SOCCLK_IN_HDMISTREAMENC0', - 9: 'HPO_TOP_PERMANENT_HDMICHARCLK0', - 10: 'HPO_TOP_FEATURE_GATED_HDMICHARCLK0', - 11: 'HPO_TOP_REGISTER_GATED_HDMICHARCLK0', -} -HPO_TOP_PERMANENT_DISPCLK = 0 -HPO_TOP_REGISTER_GATED_DISPCLK = 1 -HPO_TOP_PERMANENT_SOCCLK = 2 -HPO_TOP_TEST_CLOCK_RESERVED = 3 -HPO_TOP_PERMANENT_HDMISTREAMCLK0 = 4 -HPO_TOP_FEATURE_GATED_HDMISTREAMCLK0 = 5 -HPO_TOP_REGISTER_GATED_HDMISTREAMCLK0 = 6 -HPO_TOP_FEATURE_GATED_DISPCLK_IN_HDMISTREAMENC0 = 7 -HPO_TOP_FEATURE_GATED_SOCCLK_IN_HDMISTREAMENC0 = 8 -HPO_TOP_PERMANENT_HDMICHARCLK0 = 9 -HPO_TOP_FEATURE_GATED_HDMICHARCLK0 = 10 -HPO_TOP_REGISTER_GATED_HDMICHARCLK0 = 11 -HPO_TOP_TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STREAM_MAPPER_DP_STREAM_LINK_TARGET' -DP_STREAM_MAPPER_DP_STREAM_LINK_TARGET__enumvalues = { - 0: 'DP_STREAM_MAPPER_LINK0', - 1: 'DP_STREAM_MAPPER_LINK1', - 2: 'DP_STREAM_MAPPER_RESERVED', -} -DP_STREAM_MAPPER_LINK0 = 0 -DP_STREAM_MAPPER_LINK1 = 1 -DP_STREAM_MAPPER_RESERVED = 2 -DP_STREAM_MAPPER_DP_STREAM_LINK_TARGET = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_DB_DISABLE_CONTROL' -HDMI_STREAM_ENC_DB_DISABLE_CONTROL__enumvalues = { - 0: 'HDMI_STREAM_ENC_DB_ENABLE', - 1: 'HDMI_STREAM_ENC_DB_DISABLE', -} -HDMI_STREAM_ENC_DB_ENABLE = 0 -HDMI_STREAM_ENC_DB_DISABLE = 1 -HDMI_STREAM_ENC_DB_DISABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_DSC_MODE' -HDMI_STREAM_ENC_DSC_MODE__enumvalues = { - 0: 'STREAM_DSC_DISABLE', - 1: 'STREAM_DSC_444_RGB', - 2: 'STREAM_DSC_NATIVE_422_420', -} -STREAM_DSC_DISABLE = 0 -STREAM_DSC_444_RGB = 1 -STREAM_DSC_NATIVE_422_420 = 2 -HDMI_STREAM_ENC_DSC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_ENABLE_CONTROL' -HDMI_STREAM_ENC_ENABLE_CONTROL__enumvalues = { - 0: 'HDMI_STREAM_ENC_DISABLE', - 1: 'HDMI_STREAM_ENC_ENABLE', -} -HDMI_STREAM_ENC_DISABLE = 0 -HDMI_STREAM_ENC_ENABLE = 1 -HDMI_STREAM_ENC_ENABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_ODM_COMBINE_MODE' -HDMI_STREAM_ENC_ODM_COMBINE_MODE__enumvalues = { - 0: 'STREAM_ODM_COMBINE_1_SEGMENT', - 1: 'STREAM_ODM_COMBINE_2_SEGMENT', - 2: 'STREAM_ODM_COMBINE_RESERVED', - 3: 'STREAM_ODM_COMBINE_4_SEGMENT', -} -STREAM_ODM_COMBINE_1_SEGMENT = 0 -STREAM_ODM_COMBINE_2_SEGMENT = 1 -STREAM_ODM_COMBINE_RESERVED = 2 -STREAM_ODM_COMBINE_4_SEGMENT = 3 -HDMI_STREAM_ENC_ODM_COMBINE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR' -HDMI_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR__enumvalues = { - 0: 'HDMI_STREAM_ENC_NO_ERROR_OCCURRED', - 1: 'HDMI_STREAM_ENC_UNDERFLOW_OCCURRED', - 2: 'HDMI_STREAM_ENC_OVERFLOW_OCCURRED', -} -HDMI_STREAM_ENC_NO_ERROR_OCCURRED = 0 -HDMI_STREAM_ENC_UNDERFLOW_OCCURRED = 1 -HDMI_STREAM_ENC_OVERFLOW_OCCURRED = 2 -HDMI_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_OVERWRITE_LEVEL_SELECT' -HDMI_STREAM_ENC_OVERWRITE_LEVEL_SELECT__enumvalues = { - 0: 'HDMI_STREAM_ENC_HARDWARE', - 1: 'HDMI_STREAM_ENC_PROGRAMMABLE', -} -HDMI_STREAM_ENC_HARDWARE = 0 -HDMI_STREAM_ENC_PROGRAMMABLE = 1 -HDMI_STREAM_ENC_OVERWRITE_LEVEL_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_PIXEL_ENCODING' -HDMI_STREAM_ENC_PIXEL_ENCODING__enumvalues = { - 0: 'STREAM_PIXEL_ENCODING_444_RGB', - 1: 'STREAM_PIXEL_ENCODING_422', - 2: 'STREAM_PIXEL_ENCODING_420', -} -STREAM_PIXEL_ENCODING_444_RGB = 0 -STREAM_PIXEL_ENCODING_422 = 1 -STREAM_PIXEL_ENCODING_420 = 2 -HDMI_STREAM_ENC_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_READ_CLOCK_CONTROL' -HDMI_STREAM_ENC_READ_CLOCK_CONTROL__enumvalues = { - 0: 'HDMI_STREAM_ENC_DCCG', - 1: 'HDMI_STREAM_ENC_DISPLAY_PIPE', -} -HDMI_STREAM_ENC_DCCG = 0 -HDMI_STREAM_ENC_DISPLAY_PIPE = 1 -HDMI_STREAM_ENC_READ_CLOCK_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_RESET_CONTROL' -HDMI_STREAM_ENC_RESET_CONTROL__enumvalues = { - 0: 'HDMI_STREAM_ENC_NOT_RESET', - 1: 'HDMI_STREAM_ENC_RESET', -} -HDMI_STREAM_ENC_NOT_RESET = 0 -HDMI_STREAM_ENC_RESET = 1 -HDMI_STREAM_ENC_RESET_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_STREAM_ENC_STREAM_ACTIVE' -HDMI_STREAM_ENC_STREAM_ACTIVE__enumvalues = { - 0: 'HDMI_STREAM_ENC_VIDEO_STREAM_NOT_ACTIVE', - 1: 'HDMI_STREAM_ENC_VIDEO_STREAM_ACTIVE', -} -HDMI_STREAM_ENC_VIDEO_STREAM_NOT_ACTIVE = 0 -HDMI_STREAM_ENC_VIDEO_STREAM_ACTIVE = 1 -HDMI_STREAM_ENC_STREAM_ACTIVE = ctypes.c_uint32 # enum - -# values for enumeration 'BORROWBUFFER_MEM_POWER_STATE_ENUM' -BORROWBUFFER_MEM_POWER_STATE_ENUM__enumvalues = { - 0: 'BORROWBUFFER_MEM_POWER_STATE_ENUM_ON', - 1: 'BORROWBUFFER_MEM_POWER_STATE_ENUM_LS', - 2: 'BORROWBUFFER_MEM_POWER_STATE_ENUM_DS', - 3: 'BORROWBUFFER_MEM_POWER_STATE_ENUM_SD', -} -BORROWBUFFER_MEM_POWER_STATE_ENUM_ON = 0 -BORROWBUFFER_MEM_POWER_STATE_ENUM_LS = 1 -BORROWBUFFER_MEM_POWER_STATE_ENUM_DS = 2 -BORROWBUFFER_MEM_POWER_STATE_ENUM_SD = 3 -BORROWBUFFER_MEM_POWER_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_BORROW_MODE' -HDMI_BORROW_MODE__enumvalues = { - 0: 'TB_BORROW_MODE_NONE', - 1: 'TB_BORROW_MODE_ACTIVE', - 2: 'TB_BORROW_MODE_BLANK', - 3: 'TB_BORROW_MODE_RESERVED', -} -TB_BORROW_MODE_NONE = 0 -TB_BORROW_MODE_ACTIVE = 1 -TB_BORROW_MODE_BLANK = 2 -TB_BORROW_MODE_RESERVED = 3 -HDMI_BORROW_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ACP_SEND' -HDMI_TB_ENC_ACP_SEND__enumvalues = { - 0: 'TB_ACP_NOT_SEND', - 1: 'TB_ACP_PKT_SEND', -} -TB_ACP_NOT_SEND = 0 -TB_ACP_PKT_SEND = 1 -HDMI_TB_ENC_ACP_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ACR_AUDIO_PRIORITY' -HDMI_TB_ENC_ACR_AUDIO_PRIORITY__enumvalues = { - 0: 'TB_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE', - 1: 'TB_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT', -} -TB_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE = 0 -TB_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT = 1 -HDMI_TB_ENC_ACR_AUDIO_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ACR_CONT' -HDMI_TB_ENC_ACR_CONT__enumvalues = { - 0: 'TB_ACR_CONT_DISABLE', - 1: 'TB_ACR_CONT_ENABLE', -} -TB_ACR_CONT_DISABLE = 0 -TB_ACR_CONT_ENABLE = 1 -HDMI_TB_ENC_ACR_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ACR_N_MULTIPLE' -HDMI_TB_ENC_ACR_N_MULTIPLE__enumvalues = { - 0: 'TB_ACR_0_MULTIPLE_RESERVED', - 1: 'TB_ACR_1_MULTIPLE', - 2: 'TB_ACR_2_MULTIPLE', - 3: 'TB_ACR_3_MULTIPLE_RESERVED', - 4: 'TB_ACR_4_MULTIPLE', - 5: 'TB_ACR_5_MULTIPLE_RESERVED', - 6: 'TB_ACR_6_MULTIPLE_RESERVED', - 7: 'TB_ACR_7_MULTIPLE_RESERVED', -} -TB_ACR_0_MULTIPLE_RESERVED = 0 -TB_ACR_1_MULTIPLE = 1 -TB_ACR_2_MULTIPLE = 2 -TB_ACR_3_MULTIPLE_RESERVED = 3 -TB_ACR_4_MULTIPLE = 4 -TB_ACR_5_MULTIPLE_RESERVED = 5 -TB_ACR_6_MULTIPLE_RESERVED = 6 -TB_ACR_7_MULTIPLE_RESERVED = 7 -HDMI_TB_ENC_ACR_N_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ACR_SELECT' -HDMI_TB_ENC_ACR_SELECT__enumvalues = { - 0: 'TB_ACR_SELECT_HW', - 1: 'TB_ACR_SELECT_32K', - 2: 'TB_ACR_SELECT_44K', - 3: 'TB_ACR_SELECT_48K', -} -TB_ACR_SELECT_HW = 0 -TB_ACR_SELECT_32K = 1 -TB_ACR_SELECT_44K = 2 -TB_ACR_SELECT_48K = 3 -HDMI_TB_ENC_ACR_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ACR_SEND' -HDMI_TB_ENC_ACR_SEND__enumvalues = { - 0: 'TB_ACR_NOT_SEND', - 1: 'TB_ACR_PKT_SEND', -} -TB_ACR_NOT_SEND = 0 -TB_ACR_PKT_SEND = 1 -HDMI_TB_ENC_ACR_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ACR_SOURCE' -HDMI_TB_ENC_ACR_SOURCE__enumvalues = { - 0: 'TB_ACR_SOURCE_HW', - 1: 'TB_ACR_SOURCE_SW', -} -TB_ACR_SOURCE_HW = 0 -TB_ACR_SOURCE_SW = 1 -HDMI_TB_ENC_ACR_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_AUDIO_INFO_CONT' -HDMI_TB_ENC_AUDIO_INFO_CONT__enumvalues = { - 0: 'TB_AUDIO_INFO_CONT_DISABLE', - 1: 'TB_AUDIO_INFO_CONT_ENABLE', -} -TB_AUDIO_INFO_CONT_DISABLE = 0 -TB_AUDIO_INFO_CONT_ENABLE = 1 -HDMI_TB_ENC_AUDIO_INFO_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_AUDIO_INFO_SEND' -HDMI_TB_ENC_AUDIO_INFO_SEND__enumvalues = { - 0: 'TB_AUDIO_INFO_NOT_SEND', - 1: 'TB_AUDIO_INFO_PKT_SEND', -} -TB_AUDIO_INFO_NOT_SEND = 0 -TB_AUDIO_INFO_PKT_SEND = 1 -HDMI_TB_ENC_AUDIO_INFO_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_CRC_SRC_SEL' -HDMI_TB_ENC_CRC_SRC_SEL__enumvalues = { - 0: 'TB_CRC_TB_ENC_INPUT', - 1: 'TB_CRC_DSC_PACKER', - 2: 'TB_CRC_DEEP_COLOR_PACKER', - 3: 'TB_CRC_ENCRYPTOR_INPUT', -} -TB_CRC_TB_ENC_INPUT = 0 -TB_CRC_DSC_PACKER = 1 -TB_CRC_DEEP_COLOR_PACKER = 2 -TB_CRC_ENCRYPTOR_INPUT = 3 -HDMI_TB_ENC_CRC_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_CRC_TYPE' -HDMI_TB_ENC_CRC_TYPE__enumvalues = { - 0: 'TB_CRC_ALL_TRIBYTES', - 1: 'TB_CRC_ACTIVE_TRIBYTES', - 2: 'TB_CRC_DATAISLAND_TRIBYTES', - 3: 'TB_CRC_ACTIVE_AND_DATAISLAND_TRIBYTES', -} -TB_CRC_ALL_TRIBYTES = 0 -TB_CRC_ACTIVE_TRIBYTES = 1 -TB_CRC_DATAISLAND_TRIBYTES = 2 -TB_CRC_ACTIVE_AND_DATAISLAND_TRIBYTES = 3 -HDMI_TB_ENC_CRC_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_DEEP_COLOR_DEPTH' -HDMI_TB_ENC_DEEP_COLOR_DEPTH__enumvalues = { - 0: 'TB_DEEP_COLOR_DEPTH_24BPP', - 1: 'TB_DEEP_COLOR_DEPTH_30BPP', - 2: 'TB_DEEP_COLOR_DEPTH_36BPP', - 3: 'TB_DEEP_COLOR_DEPTH_RESERVED', -} -TB_DEEP_COLOR_DEPTH_24BPP = 0 -TB_DEEP_COLOR_DEPTH_30BPP = 1 -TB_DEEP_COLOR_DEPTH_36BPP = 2 -TB_DEEP_COLOR_DEPTH_RESERVED = 3 -HDMI_TB_ENC_DEEP_COLOR_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_DEFAULT_PAHSE' -HDMI_TB_ENC_DEFAULT_PAHSE__enumvalues = { - 0: 'TB_DEFAULT_PHASE_IS_0', - 1: 'TB_DEFAULT_PHASE_IS_1', -} -TB_DEFAULT_PHASE_IS_0 = 0 -TB_DEFAULT_PHASE_IS_1 = 1 -HDMI_TB_ENC_DEFAULT_PAHSE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_DSC_MODE' -HDMI_TB_ENC_DSC_MODE__enumvalues = { - 0: 'TB_DSC_DISABLE', - 1: 'TB_DSC_444_RGB', - 2: 'TB_DSC_NATIVE_422_420', -} -TB_DSC_DISABLE = 0 -TB_DSC_444_RGB = 1 -TB_DSC_NATIVE_422_420 = 2 -HDMI_TB_ENC_DSC_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ENABLE' -HDMI_TB_ENC_ENABLE__enumvalues = { - 0: 'TB_DISABLE', - 1: 'TB_ENABLE', -} -TB_DISABLE = 0 -TB_ENABLE = 1 -HDMI_TB_ENC_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_GC_AVMUTE' -HDMI_TB_ENC_GC_AVMUTE__enumvalues = { - 0: 'TB_GC_AVMUTE_SET', - 1: 'TB_GC_AVMUTE_UNSET', -} -TB_GC_AVMUTE_SET = 0 -TB_GC_AVMUTE_UNSET = 1 -HDMI_TB_ENC_GC_AVMUTE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_GC_AVMUTE_CONT' -HDMI_TB_ENC_GC_AVMUTE_CONT__enumvalues = { - 0: 'TB_GC_AVMUTE_CONT_DISABLE', - 1: 'TB_GC_AVMUTE_CONT_ENABLE', -} -TB_GC_AVMUTE_CONT_DISABLE = 0 -TB_GC_AVMUTE_CONT_ENABLE = 1 -HDMI_TB_ENC_GC_AVMUTE_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_GC_CONT' -HDMI_TB_ENC_GC_CONT__enumvalues = { - 0: 'TB_GC_CONT_DISABLE', - 1: 'TB_GC_CONT_ENABLE', -} -TB_GC_CONT_DISABLE = 0 -TB_GC_CONT_ENABLE = 1 -HDMI_TB_ENC_GC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_GC_SEND' -HDMI_TB_ENC_GC_SEND__enumvalues = { - 0: 'TB_GC_NOT_SEND', - 1: 'TB_GC_PKT_SEND', -} -TB_GC_NOT_SEND = 0 -TB_GC_PKT_SEND = 1 -HDMI_TB_ENC_GC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_GENERIC_CONT' -HDMI_TB_ENC_GENERIC_CONT__enumvalues = { - 0: 'TB_GENERIC_CONT_DISABLE', - 1: 'TB_GENERIC_CONT_ENABLE', -} -TB_GENERIC_CONT_DISABLE = 0 -TB_GENERIC_CONT_ENABLE = 1 -HDMI_TB_ENC_GENERIC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_GENERIC_LOCK_EN' -HDMI_TB_ENC_GENERIC_LOCK_EN__enumvalues = { - 0: 'HDMI_TB_ENC_GENERIC_LOCK_DISABLE', - 1: 'HDMI_TB_ENC_GENERIC_LOCK_ENABLE', -} -HDMI_TB_ENC_GENERIC_LOCK_DISABLE = 0 -HDMI_TB_ENC_GENERIC_LOCK_ENABLE = 1 -HDMI_TB_ENC_GENERIC_LOCK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_GENERIC_SEND' -HDMI_TB_ENC_GENERIC_SEND__enumvalues = { - 0: 'TB_GENERIC_NOT_SEND', - 1: 'TB_GENERIC_PKT_SEND', -} -TB_GENERIC_NOT_SEND = 0 -TB_GENERIC_PKT_SEND = 1 -HDMI_TB_ENC_GENERIC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ISRC_CONT' -HDMI_TB_ENC_ISRC_CONT__enumvalues = { - 0: 'TB_ISRC_CONT_DISABLE', - 1: 'TB_ISRC_CONT_ENABLE', -} -TB_ISRC_CONT_DISABLE = 0 -TB_ISRC_CONT_ENABLE = 1 -HDMI_TB_ENC_ISRC_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_ISRC_SEND' -HDMI_TB_ENC_ISRC_SEND__enumvalues = { - 0: 'TB_ISRC_NOT_SEND', - 1: 'TB_ISRC_PKT_SEND', -} -TB_ISRC_NOT_SEND = 0 -TB_ISRC_PKT_SEND = 1 -HDMI_TB_ENC_ISRC_SEND = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_METADATA_ENABLE' -HDMI_TB_ENC_METADATA_ENABLE__enumvalues = { - 0: 'TB_METADATA_NOT_SEND', - 1: 'TB_METADATA_PKT_SEND', -} -TB_METADATA_NOT_SEND = 0 -TB_METADATA_PKT_SEND = 1 -HDMI_TB_ENC_METADATA_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_PACKET_LINE_REFERENCE' -HDMI_TB_ENC_PACKET_LINE_REFERENCE__enumvalues = { - 0: 'TB_PKT_LINE_REF_END_OF_ACTIVE', - 1: 'TB_PKT_LINE_REF_OTGSOF', -} -TB_PKT_LINE_REF_END_OF_ACTIVE = 0 -TB_PKT_LINE_REF_OTGSOF = 1 -HDMI_TB_ENC_PACKET_LINE_REFERENCE = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_PIXEL_ENCODING' -HDMI_TB_ENC_PIXEL_ENCODING__enumvalues = { - 0: 'TB_PIXEL_ENCODING_444_RGB', - 1: 'TB_PIXEL_ENCODING_422', - 2: 'TB_PIXEL_ENCODING_420', -} -TB_PIXEL_ENCODING_444_RGB = 0 -TB_PIXEL_ENCODING_422 = 1 -TB_PIXEL_ENCODING_420 = 2 -HDMI_TB_ENC_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_RESET' -HDMI_TB_ENC_RESET__enumvalues = { - 0: 'TB_NOT_RESET', - 1: 'TB_RESET', -} -TB_NOT_RESET = 0 -TB_RESET = 1 -HDMI_TB_ENC_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'HDMI_TB_ENC_SYNC_PHASE' -HDMI_TB_ENC_SYNC_PHASE__enumvalues = { - 0: 'TB_NOT_SYNC_PHASE_ON_FRAME_START', - 1: 'TB_SYNC_PHASE_ON_FRAME_START', -} -TB_NOT_SYNC_PHASE_ON_FRAME_START = 0 -TB_SYNC_PHASE_ON_FRAME_START = 1 -HDMI_TB_ENC_SYNC_PHASE = ctypes.c_uint32 # enum - -# values for enumeration 'INPUT_FIFO_ERROR_TYPE' -INPUT_FIFO_ERROR_TYPE__enumvalues = { - 0: 'TB_NO_ERROR_OCCURRED', - 1: 'TB_OVERFLOW_OCCURRED', -} -TB_NO_ERROR_OCCURRED = 0 -TB_OVERFLOW_OCCURRED = 1 -INPUT_FIFO_ERROR_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR' -DP_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR__enumvalues = { - 0: 'DP_STREAM_ENC_NO_ERROR_OCCURRED', - 1: 'DP_STREAM_ENC_UNDERFLOW_OCCURRED', - 2: 'DP_STREAM_ENC_OVERFLOW_OCCURRED', -} -DP_STREAM_ENC_NO_ERROR_OCCURRED = 0 -DP_STREAM_ENC_UNDERFLOW_OCCURRED = 1 -DP_STREAM_ENC_OVERFLOW_OCCURRED = 2 -DP_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STREAM_ENC_OVERWRITE_LEVEL_SELECT' -DP_STREAM_ENC_OVERWRITE_LEVEL_SELECT__enumvalues = { - 0: 'DP_STREAM_ENC_HARDWARE', - 1: 'DP_STREAM_ENC_PROGRAMMABLE', -} -DP_STREAM_ENC_HARDWARE = 0 -DP_STREAM_ENC_PROGRAMMABLE = 1 -DP_STREAM_ENC_OVERWRITE_LEVEL_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STREAM_ENC_READ_CLOCK_CONTROL' -DP_STREAM_ENC_READ_CLOCK_CONTROL__enumvalues = { - 0: 'DP_STREAM_ENC_DCCG', - 1: 'DP_STREAM_ENC_DISPLAY_PIPE', -} -DP_STREAM_ENC_DCCG = 0 -DP_STREAM_ENC_DISPLAY_PIPE = 1 -DP_STREAM_ENC_READ_CLOCK_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STREAM_ENC_RESET_CONTROL' -DP_STREAM_ENC_RESET_CONTROL__enumvalues = { - 0: 'DP_STREAM_ENC_NOT_RESET', - 1: 'DP_STREAM_ENC_RESET', -} -DP_STREAM_ENC_NOT_RESET = 0 -DP_STREAM_ENC_RESET = 1 -DP_STREAM_ENC_RESET_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'DP_STREAM_ENC_STREAM_ACTIVE' -DP_STREAM_ENC_STREAM_ACTIVE__enumvalues = { - 0: 'DP_STREAM_ENC_VIDEO_STREAM_NOT_ACTIVE', - 1: 'DP_STREAM_ENC_VIDEO_STREAM_ACTIVE', -} -DP_STREAM_ENC_VIDEO_STREAM_NOT_ACTIVE = 0 -DP_STREAM_ENC_VIDEO_STREAM_ACTIVE = 1 -DP_STREAM_ENC_STREAM_ACTIVE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_AUDIO_MUTE' -ENUM_DP_SYM32_ENC_AUDIO_MUTE__enumvalues = { - 0: 'DP_SYM32_ENC_SDP_AUDIO_MUTE_NOT_FORCED', - 1: 'DP_SYM32_ENC_SDP_AUDIO_MUTE_FORCED', -} -DP_SYM32_ENC_SDP_AUDIO_MUTE_NOT_FORCED = 0 -DP_SYM32_ENC_SDP_AUDIO_MUTE_FORCED = 1 -ENUM_DP_SYM32_ENC_AUDIO_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_CONTINUOUS_MODE' -ENUM_DP_SYM32_ENC_CONTINUOUS_MODE__enumvalues = { - 0: 'DP_SYM32_ENC_ONE_SHOT_MODE', - 1: 'DP_SYM32_ENC_CONTINUOUS_MODE', -} -DP_SYM32_ENC_ONE_SHOT_MODE = 0 -DP_SYM32_ENC_CONTINUOUS_MODE = 1 -ENUM_DP_SYM32_ENC_CONTINUOUS_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_CRC_VALID' -ENUM_DP_SYM32_ENC_CRC_VALID__enumvalues = { - 0: 'DP_SYM32_ENC_CRC_NOT_VALID', - 1: 'DP_SYM32_ENC_CRC_VALID', -} -DP_SYM32_ENC_CRC_NOT_VALID = 0 -DP_SYM32_ENC_CRC_VALID = 1 -ENUM_DP_SYM32_ENC_CRC_VALID = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_DP_COMPONENT_DEPTH' -ENUM_DP_SYM32_ENC_DP_COMPONENT_DEPTH__enumvalues = { - 0: 'DP_SYM32_ENC_COMPONENT_DEPTH_6BPC', - 1: 'DP_SYM32_ENC_COMPONENT_DEPTH_8BPC', - 2: 'DP_SYM32_ENC_COMPONENT_DEPTH_10BPC', - 3: 'DP_SYM32_ENC_COMPONENT_DEPTH_12BPC', -} -DP_SYM32_ENC_COMPONENT_DEPTH_6BPC = 0 -DP_SYM32_ENC_COMPONENT_DEPTH_8BPC = 1 -DP_SYM32_ENC_COMPONENT_DEPTH_10BPC = 2 -DP_SYM32_ENC_COMPONENT_DEPTH_12BPC = 3 -ENUM_DP_SYM32_ENC_DP_COMPONENT_DEPTH = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_ENABLE' -ENUM_DP_SYM32_ENC_ENABLE__enumvalues = { - 0: 'DP_SYM32_ENC_DISABLE', - 1: 'DP_SYM32_ENC_ENABLE', -} -DP_SYM32_ENC_DISABLE = 0 -DP_SYM32_ENC_ENABLE = 1 -ENUM_DP_SYM32_ENC_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_GSP_DEADLINE_MISSED' -ENUM_DP_SYM32_ENC_GSP_DEADLINE_MISSED__enumvalues = { - 0: 'DP_SYM32_ENC_GSP_DEADLINE_NOT_MISSED', - 1: 'DP_SYM32_ENC_GSP_DEADLINE_MISSED', -} -DP_SYM32_ENC_GSP_DEADLINE_NOT_MISSED = 0 -DP_SYM32_ENC_GSP_DEADLINE_MISSED = 1 -ENUM_DP_SYM32_ENC_GSP_DEADLINE_MISSED = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_GSP_ONE_SHOT_TRIGGER_POSITION' -ENUM_DP_SYM32_ENC_GSP_ONE_SHOT_TRIGGER_POSITION__enumvalues = { - 0: 'DP_SYM32_ENC_GSP_SEND_AT_LINE_NUMBER', - 1: 'DP_SYM32_ENC_GSP_SEND_AT_EARLIEST_TIME', -} -DP_SYM32_ENC_GSP_SEND_AT_LINE_NUMBER = 0 -DP_SYM32_ENC_GSP_SEND_AT_EARLIEST_TIME = 1 -ENUM_DP_SYM32_ENC_GSP_ONE_SHOT_TRIGGER_POSITION = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_GSP_PAYLOAD_SIZE' -ENUM_DP_SYM32_ENC_GSP_PAYLOAD_SIZE__enumvalues = { - 0: 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_32', - 1: 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_RESERVED0', - 2: 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_RESERVED1', - 3: 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_128', -} -DP_SYM32_ENC_GSP_PAYLOAD_SIZE_32 = 0 -DP_SYM32_ENC_GSP_PAYLOAD_SIZE_RESERVED0 = 1 -DP_SYM32_ENC_GSP_PAYLOAD_SIZE_RESERVED1 = 2 -DP_SYM32_ENC_GSP_PAYLOAD_SIZE_128 = 3 -ENUM_DP_SYM32_ENC_GSP_PAYLOAD_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_GSP_TRIGGER_PENDING' -ENUM_DP_SYM32_ENC_GSP_TRIGGER_PENDING__enumvalues = { - 0: 'DP_SYM32_ENC_GSP_TRIGGER_NOT_PENDING', - 1: 'DP_SYM32_ENC_GSP_TRIGGER_PENDING', -} -DP_SYM32_ENC_GSP_TRIGGER_NOT_PENDING = 0 -DP_SYM32_ENC_GSP_TRIGGER_PENDING = 1 -ENUM_DP_SYM32_ENC_GSP_TRIGGER_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_MEM_PWR_FORCE_ENUM' -ENUM_DP_SYM32_ENC_MEM_PWR_FORCE_ENUM__enumvalues = { - 0: 'DP_SYM32_ENC_MEM_PWR_NO_FORCE_REQUEST', - 1: 'DP_SYM32_ENC_MEM_PWR_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'DP_SYM32_ENC_MEM_PWR_FORCE_DEEP_SLEEP_REQUEST', - 3: 'DP_SYM32_ENC_MEM_PWR_FORCE_SHUT_DOWN_REQUEST', -} -DP_SYM32_ENC_MEM_PWR_NO_FORCE_REQUEST = 0 -DP_SYM32_ENC_MEM_PWR_FORCE_LIGHT_SLEEP_REQUEST = 1 -DP_SYM32_ENC_MEM_PWR_FORCE_DEEP_SLEEP_REQUEST = 2 -DP_SYM32_ENC_MEM_PWR_FORCE_SHUT_DOWN_REQUEST = 3 -ENUM_DP_SYM32_ENC_MEM_PWR_FORCE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_OVERFLOW_STATUS' -ENUM_DP_SYM32_ENC_OVERFLOW_STATUS__enumvalues = { - 0: 'DP_SYM32_ENC_NO_OVERFLOW_OCCURRED', - 1: 'DP_SYM32_ENC_OVERFLOW_OCCURRED', -} -DP_SYM32_ENC_NO_OVERFLOW_OCCURRED = 0 -DP_SYM32_ENC_OVERFLOW_OCCURRED = 1 -ENUM_DP_SYM32_ENC_OVERFLOW_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_PENDING' -ENUM_DP_SYM32_ENC_PENDING__enumvalues = { - 0: 'DP_SYM32_ENC_NOT_PENDING', - 1: 'DP_SYM32_ENC_PENDING', -} -DP_SYM32_ENC_NOT_PENDING = 0 -DP_SYM32_ENC_PENDING = 1 -ENUM_DP_SYM32_ENC_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_PIXEL_ENCODING' -ENUM_DP_SYM32_ENC_PIXEL_ENCODING__enumvalues = { - 0: 'DP_SYM32_ENC_PIXEL_ENCODING_RGB_YCBCR444', - 1: 'DP_SYM32_ENC_PIXEL_ENCODING_YCBCR422', - 2: 'DP_SYM32_ENC_PIXEL_ENCODING_YCBCR420', - 3: 'DP_SYM32_ENC_PIXEL_ENCODING_Y_ONLY', -} -DP_SYM32_ENC_PIXEL_ENCODING_RGB_YCBCR444 = 0 -DP_SYM32_ENC_PIXEL_ENCODING_YCBCR422 = 1 -DP_SYM32_ENC_PIXEL_ENCODING_YCBCR420 = 2 -DP_SYM32_ENC_PIXEL_ENCODING_Y_ONLY = 3 -ENUM_DP_SYM32_ENC_PIXEL_ENCODING = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_PIXEL_ENCODING_TYPE' -ENUM_DP_SYM32_ENC_PIXEL_ENCODING_TYPE__enumvalues = { - 0: 'DP_SYM32_ENC_UNCOMPRESSED_FORMAT', - 1: 'DP_SYM32_ENC_COMPRESSED_FORMAT', -} -DP_SYM32_ENC_UNCOMPRESSED_FORMAT = 0 -DP_SYM32_ENC_COMPRESSED_FORMAT = 1 -ENUM_DP_SYM32_ENC_PIXEL_ENCODING_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_POWER_STATE_ENUM' -ENUM_DP_SYM32_ENC_POWER_STATE_ENUM__enumvalues = { - 0: 'DP_SYM32_ENC_POWER_STATE_ENUM_ON', - 1: 'DP_SYM32_ENC_POWER_STATE_ENUM_LS', - 2: 'DP_SYM32_ENC_POWER_STATE_ENUM_DS', - 3: 'DP_SYM32_ENC_POWER_STATE_ENUM_SD', -} -DP_SYM32_ENC_POWER_STATE_ENUM_ON = 0 -DP_SYM32_ENC_POWER_STATE_ENUM_LS = 1 -DP_SYM32_ENC_POWER_STATE_ENUM_DS = 2 -DP_SYM32_ENC_POWER_STATE_ENUM_SD = 3 -ENUM_DP_SYM32_ENC_POWER_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_RESET' -ENUM_DP_SYM32_ENC_RESET__enumvalues = { - 0: 'DP_SYM32_ENC_NOT_RESET', - 1: 'DP_SYM32_ENC_RESET', -} -DP_SYM32_ENC_NOT_RESET = 0 -DP_SYM32_ENC_RESET = 1 -ENUM_DP_SYM32_ENC_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_SDP_PRIORITY' -ENUM_DP_SYM32_ENC_SDP_PRIORITY__enumvalues = { - 0: 'DP_SYM32_ENC_SDP_LOW_PRIORITY', - 1: 'DP_SYM32_ENC_SDP_HIGH_PRIORITY', -} -DP_SYM32_ENC_SDP_LOW_PRIORITY = 0 -DP_SYM32_ENC_SDP_HIGH_PRIORITY = 1 -ENUM_DP_SYM32_ENC_SDP_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_SOF_REFERENCE' -ENUM_DP_SYM32_ENC_SOF_REFERENCE__enumvalues = { - 0: 'DP_SYM32_ENC_DP_SOF', - 1: 'DP_SYM32_ENC_OTG_SOF', -} -DP_SYM32_ENC_DP_SOF = 0 -DP_SYM32_ENC_OTG_SOF = 1 -ENUM_DP_SYM32_ENC_SOF_REFERENCE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_SYM32_ENC_VID_STREAM_DEFER' -ENUM_DP_SYM32_ENC_VID_STREAM_DEFER__enumvalues = { - 0: 'DP_SYM32_ENC_VID_STREAM_NO_DEFER', - 1: 'DP_SYM32_ENC_VID_STREAM_DEFER_TO_HBLANK', - 2: 'DP_SYM32_ENC_VID_STREAM_DEFER_TO_VBLANK', -} -DP_SYM32_ENC_VID_STREAM_NO_DEFER = 0 -DP_SYM32_ENC_VID_STREAM_DEFER_TO_HBLANK = 1 -DP_SYM32_ENC_VID_STREAM_DEFER_TO_VBLANK = 2 -ENUM_DP_SYM32_ENC_VID_STREAM_DEFER = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_CRC_END_EVENT' -ENUM_DP_DPHY_SYM32_CRC_END_EVENT__enumvalues = { - 0: 'DP_DPHY_SYM32_CRC_END_LLCP', - 1: 'DP_DPHY_SYM32_CRC_END_PS_ONLY', - 2: 'DP_DPHY_SYM32_CRC_END_PS_LT_SR', - 3: 'DP_DPHY_SYM32_CRC_END_PS_ANY', -} -DP_DPHY_SYM32_CRC_END_LLCP = 0 -DP_DPHY_SYM32_CRC_END_PS_ONLY = 1 -DP_DPHY_SYM32_CRC_END_PS_LT_SR = 2 -DP_DPHY_SYM32_CRC_END_PS_ANY = 3 -ENUM_DP_DPHY_SYM32_CRC_END_EVENT = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_CRC_START_EVENT' -ENUM_DP_DPHY_SYM32_CRC_START_EVENT__enumvalues = { - 0: 'DP_DPHY_SYM32_CRC_START_LLCP', - 1: 'DP_DPHY_SYM32_CRC_START_PS_ONLY', - 2: 'DP_DPHY_SYM32_CRC_START_PS_LT_SR', - 3: 'DP_DPHY_SYM32_CRC_START_PS_POST_LT_SR', - 4: 'DP_DPHY_SYM32_CRC_START_TP_START', -} -DP_DPHY_SYM32_CRC_START_LLCP = 0 -DP_DPHY_SYM32_CRC_START_PS_ONLY = 1 -DP_DPHY_SYM32_CRC_START_PS_LT_SR = 2 -DP_DPHY_SYM32_CRC_START_PS_POST_LT_SR = 3 -DP_DPHY_SYM32_CRC_START_TP_START = 4 -ENUM_DP_DPHY_SYM32_CRC_START_EVENT = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_CRC_TAP_SOURCE' -ENUM_DP_DPHY_SYM32_CRC_TAP_SOURCE__enumvalues = { - 0: 'DP_DPHY_SYM32_CRC_TAP_SOURCE_SCHEDULER', - 1: 'DP_DPHY_SYM32_CRC_TAP_SOURCE_SYMBOL_HANDLER', - 2: 'DP_DPHY_SYM32_CRC_TAP_SOURCE_TP_GEN_MUX', -} -DP_DPHY_SYM32_CRC_TAP_SOURCE_SCHEDULER = 0 -DP_DPHY_SYM32_CRC_TAP_SOURCE_SYMBOL_HANDLER = 1 -DP_DPHY_SYM32_CRC_TAP_SOURCE_TP_GEN_MUX = 2 -ENUM_DP_DPHY_SYM32_CRC_TAP_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS' -ENUM_DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS__enumvalues = { - 0: 'DP_DPHY_SYM32_CRC_USE_END_EVENT', - 1: 'DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS', -} -DP_DPHY_SYM32_CRC_USE_END_EVENT = 0 -DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS = 1 -ENUM_DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_ENABLE' -ENUM_DP_DPHY_SYM32_ENABLE__enumvalues = { - 0: 'DP_DPHY_SYM32_DISABLE', - 1: 'DP_DPHY_SYM32_ENABLE', -} -DP_DPHY_SYM32_DISABLE = 0 -DP_DPHY_SYM32_ENABLE = 1 -ENUM_DP_DPHY_SYM32_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_ENCRYPT_TYPE' -ENUM_DP_DPHY_SYM32_ENCRYPT_TYPE__enumvalues = { - 0: 'DP_DPHY_SYM32_ENCRYPT_TYPE0', - 1: 'DP_DPHY_SYM32_ENCRYPT_TYPE1', -} -DP_DPHY_SYM32_ENCRYPT_TYPE0 = 0 -DP_DPHY_SYM32_ENCRYPT_TYPE1 = 1 -ENUM_DP_DPHY_SYM32_ENCRYPT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_MODE' -ENUM_DP_DPHY_SYM32_MODE__enumvalues = { - 0: 'DP_DPHY_SYM32_LT_TPS1', - 1: 'DP_DPHY_SYM32_LT_TPS2', - 2: 'DP_DPHY_SYM32_ACTIVE', - 3: 'DP_DPHY_SYM32_TEST', -} -DP_DPHY_SYM32_LT_TPS1 = 0 -DP_DPHY_SYM32_LT_TPS2 = 1 -DP_DPHY_SYM32_ACTIVE = 2 -DP_DPHY_SYM32_TEST = 3 -ENUM_DP_DPHY_SYM32_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_NUM_LANES' -ENUM_DP_DPHY_SYM32_NUM_LANES__enumvalues = { - 0: 'DP_DPHY_SYM32_1LANE', - 1: 'DP_DPHY_SYM32_2LANE', - 2: 'DP_DPHY_SYM32_RESERVED', - 3: 'DP_DPHY_SYM32_4LANE', -} -DP_DPHY_SYM32_1LANE = 0 -DP_DPHY_SYM32_2LANE = 1 -DP_DPHY_SYM32_RESERVED = 2 -DP_DPHY_SYM32_4LANE = 3 -ENUM_DP_DPHY_SYM32_NUM_LANES = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_RATE_UPDATE_PENDING' -ENUM_DP_DPHY_SYM32_RATE_UPDATE_PENDING__enumvalues = { - 0: 'DP_DPHY_SYM32_NO_RATE_UPDATE_PENDING', - 1: 'DP_DPHY_SYM32_RATE_UPDATE_PENDING', -} -DP_DPHY_SYM32_NO_RATE_UPDATE_PENDING = 0 -DP_DPHY_SYM32_RATE_UPDATE_PENDING = 1 -ENUM_DP_DPHY_SYM32_RATE_UPDATE_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_RESET' -ENUM_DP_DPHY_SYM32_RESET__enumvalues = { - 0: 'DP_DPHY_SYM32_NOT_RESET', - 1: 'DP_DPHY_SYM32_RESET', -} -DP_DPHY_SYM32_NOT_RESET = 0 -DP_DPHY_SYM32_RESET = 1 -ENUM_DP_DPHY_SYM32_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_RESET_STATUS' -ENUM_DP_DPHY_SYM32_RESET_STATUS__enumvalues = { - 0: 'DP_DPHY_SYM32_RESET_STATUS_DEASSERTED', - 1: 'DP_DPHY_SYM32_RESET_STATUS_ASSERTED', -} -DP_DPHY_SYM32_RESET_STATUS_DEASSERTED = 0 -DP_DPHY_SYM32_RESET_STATUS_ASSERTED = 1 -ENUM_DP_DPHY_SYM32_RESET_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_SAT_UPDATE' -ENUM_DP_DPHY_SYM32_SAT_UPDATE__enumvalues = { - 0: 'DP_DPHY_SYM32_SAT_NO_UPDATE', - 1: 'DP_DPHY_SYM32_SAT_TRIGGER_UPDATE', - 2: 'DP_DPHY_SYM32_SAT_NOTRIGGER_UPDATE', -} -DP_DPHY_SYM32_SAT_NO_UPDATE = 0 -DP_DPHY_SYM32_SAT_TRIGGER_UPDATE = 1 -DP_DPHY_SYM32_SAT_NOTRIGGER_UPDATE = 2 -ENUM_DP_DPHY_SYM32_SAT_UPDATE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_SAT_UPDATE_PENDING' -ENUM_DP_DPHY_SYM32_SAT_UPDATE_PENDING__enumvalues = { - 0: 'DP_DPHY_SYM32_SAT_NO_UPDATE_PENDING', - 1: 'DP_DPHY_SYM32_SAT_TRIGGER_UPDATE_PENDING', - 2: 'DP_DPHY_SYM32_SAT_NOTRIGGER_UPDATE_PENDING', -} -DP_DPHY_SYM32_SAT_NO_UPDATE_PENDING = 0 -DP_DPHY_SYM32_SAT_TRIGGER_UPDATE_PENDING = 1 -DP_DPHY_SYM32_SAT_NOTRIGGER_UPDATE_PENDING = 2 -ENUM_DP_DPHY_SYM32_SAT_UPDATE_PENDING = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_STATUS' -ENUM_DP_DPHY_SYM32_STATUS__enumvalues = { - 0: 'DP_DPHY_SYM32_STATUS_IDLE', - 1: 'DP_DPHY_SYM32_STATUS_ENABLED', -} -DP_DPHY_SYM32_STATUS_IDLE = 0 -DP_DPHY_SYM32_STATUS_ENABLED = 1 -ENUM_DP_DPHY_SYM32_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_STREAM_OVR_ENABLE' -ENUM_DP_DPHY_SYM32_STREAM_OVR_ENABLE__enumvalues = { - 0: 'DP_DPHY_SYM32_STREAM_OVR_NONE', - 1: 'DP_DPHY_SYM32_STREAM_OVR_REPLACE', - 2: 'DP_DPHY_SYM32_STREAM_OVR_ALWAYS', -} -DP_DPHY_SYM32_STREAM_OVR_NONE = 0 -DP_DPHY_SYM32_STREAM_OVR_REPLACE = 1 -DP_DPHY_SYM32_STREAM_OVR_ALWAYS = 2 -ENUM_DP_DPHY_SYM32_STREAM_OVR_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_STREAM_OVR_TYPE' -ENUM_DP_DPHY_SYM32_STREAM_OVR_TYPE__enumvalues = { - 0: 'DP_DPHY_SYM32_STREAM_OVR_TYPE_DATA', - 1: 'DP_DPHY_SYM32_STREAM_OVR_TYPE_CONTROL', -} -DP_DPHY_SYM32_STREAM_OVR_TYPE_DATA = 0 -DP_DPHY_SYM32_STREAM_OVR_TYPE_CONTROL = 1 -ENUM_DP_DPHY_SYM32_STREAM_OVR_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_TP_PRBS_SEL' -ENUM_DP_DPHY_SYM32_TP_PRBS_SEL__enumvalues = { - 0: 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS7', - 1: 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS9', - 2: 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS11', - 3: 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS15', - 4: 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS23', - 5: 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS31', -} -DP_DPHY_SYM32_TP_PRBS_SEL_PRBS7 = 0 -DP_DPHY_SYM32_TP_PRBS_SEL_PRBS9 = 1 -DP_DPHY_SYM32_TP_PRBS_SEL_PRBS11 = 2 -DP_DPHY_SYM32_TP_PRBS_SEL_PRBS15 = 3 -DP_DPHY_SYM32_TP_PRBS_SEL_PRBS23 = 4 -DP_DPHY_SYM32_TP_PRBS_SEL_PRBS31 = 5 -ENUM_DP_DPHY_SYM32_TP_PRBS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'ENUM_DP_DPHY_SYM32_TP_SELECT' -ENUM_DP_DPHY_SYM32_TP_SELECT__enumvalues = { - 0: 'DP_DPHY_SYM32_TP_SELECT_TPS1', - 1: 'DP_DPHY_SYM32_TP_SELECT_TPS2', - 2: 'DP_DPHY_SYM32_TP_SELECT_PRBS', - 3: 'DP_DPHY_SYM32_TP_SELECT_CUSTOM', - 4: 'DP_DPHY_SYM32_TP_SELECT_SQUARE', -} -DP_DPHY_SYM32_TP_SELECT_TPS1 = 0 -DP_DPHY_SYM32_TP_SELECT_TPS2 = 1 -DP_DPHY_SYM32_TP_SELECT_PRBS = 2 -DP_DPHY_SYM32_TP_SELECT_CUSTOM = 3 -DP_DPHY_SYM32_TP_SELECT_SQUARE = 4 -ENUM_DP_DPHY_SYM32_TP_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'APG_AUDIO_CRC_CONTROL_CH_SEL' -APG_AUDIO_CRC_CONTROL_CH_SEL__enumvalues = { - 0: 'APG_AUDIO_CRC_CH0_SIG', - 1: 'APG_AUDIO_CRC_CH1_SIG', - 2: 'APG_AUDIO_CRC_CH2_SIG', - 3: 'APG_AUDIO_CRC_CH3_SIG', - 4: 'APG_AUDIO_CRC_CH4_SIG', - 5: 'APG_AUDIO_CRC_CH5_SIG', - 6: 'APG_AUDIO_CRC_CH6_SIG', - 7: 'APG_AUDIO_CRC_CH7_SIG', - 8: 'APG_AUDIO_CRC_RESERVED_8', - 9: 'APG_AUDIO_CRC_RESERVED_9', - 10: 'APG_AUDIO_CRC_RESERVED_10', - 11: 'APG_AUDIO_CRC_RESERVED_11', - 12: 'APG_AUDIO_CRC_RESERVED_12', - 13: 'APG_AUDIO_CRC_RESERVED_13', - 14: 'APG_AUDIO_CRC_RESERVED_14', - 15: 'APG_AUDIO_CRC_RESERVED_15', -} -APG_AUDIO_CRC_CH0_SIG = 0 -APG_AUDIO_CRC_CH1_SIG = 1 -APG_AUDIO_CRC_CH2_SIG = 2 -APG_AUDIO_CRC_CH3_SIG = 3 -APG_AUDIO_CRC_CH4_SIG = 4 -APG_AUDIO_CRC_CH5_SIG = 5 -APG_AUDIO_CRC_CH6_SIG = 6 -APG_AUDIO_CRC_CH7_SIG = 7 -APG_AUDIO_CRC_RESERVED_8 = 8 -APG_AUDIO_CRC_RESERVED_9 = 9 -APG_AUDIO_CRC_RESERVED_10 = 10 -APG_AUDIO_CRC_RESERVED_11 = 11 -APG_AUDIO_CRC_RESERVED_12 = 12 -APG_AUDIO_CRC_RESERVED_13 = 13 -APG_AUDIO_CRC_RESERVED_14 = 14 -APG_AUDIO_CRC_RESERVED_15 = 15 -APG_AUDIO_CRC_CONTROL_CH_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'APG_AUDIO_CRC_CONTROL_CONT' -APG_AUDIO_CRC_CONTROL_CONT__enumvalues = { - 0: 'APG_AUDIO_CRC_ONESHOT', - 1: 'APG_AUDIO_CRC_CONTINUOUS', -} -APG_AUDIO_CRC_ONESHOT = 0 -APG_AUDIO_CRC_CONTINUOUS = 1 -APG_AUDIO_CRC_CONTROL_CONT = ctypes.c_uint32 # enum - -# values for enumeration 'APG_DBG_ACP_TYPE' -APG_DBG_ACP_TYPE__enumvalues = { - 0: 'APG_ACP_TYPE_GENERIC_AUDIO', - 1: 'APG_ACP_TYPE_ICE60958_AUDIO', - 2: 'APG_ACP_TYPE_DVD_AUDIO', - 3: 'APG_ACP_TYPE_SUPER_AUDIO_CD', -} -APG_ACP_TYPE_GENERIC_AUDIO = 0 -APG_ACP_TYPE_ICE60958_AUDIO = 1 -APG_ACP_TYPE_DVD_AUDIO = 2 -APG_ACP_TYPE_SUPER_AUDIO_CD = 3 -APG_DBG_ACP_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'APG_DBG_AUDIO_DTO_BASE' -APG_DBG_AUDIO_DTO_BASE__enumvalues = { - 0: 'BASE_RATE_48KHZ', - 1: 'BASE_RATE_44P1KHZ', -} -BASE_RATE_48KHZ = 0 -BASE_RATE_44P1KHZ = 1 -APG_DBG_AUDIO_DTO_BASE = ctypes.c_uint32 # enum - -# values for enumeration 'APG_DBG_AUDIO_DTO_DIV' -APG_DBG_AUDIO_DTO_DIV__enumvalues = { - 0: 'DIVISOR_BY1', - 1: 'DIVISOR_BY2_RESERVED', - 2: 'DIVISOR_BY3', - 3: 'DIVISOR_BY4_RESERVED', - 4: 'DIVISOR_BY5_RESERVED', - 5: 'DIVISOR_BY6_RESERVED', - 6: 'DIVISOR_BY7_RESERVED', - 7: 'DIVISOR_BY8_RESERVED', -} -DIVISOR_BY1 = 0 -DIVISOR_BY2_RESERVED = 1 -DIVISOR_BY3 = 2 -DIVISOR_BY4_RESERVED = 3 -DIVISOR_BY5_RESERVED = 4 -DIVISOR_BY6_RESERVED = 5 -DIVISOR_BY7_RESERVED = 6 -DIVISOR_BY8_RESERVED = 7 -APG_DBG_AUDIO_DTO_DIV = ctypes.c_uint32 # enum - -# values for enumeration 'APG_DBG_AUDIO_DTO_MULTI' -APG_DBG_AUDIO_DTO_MULTI__enumvalues = { - 0: 'MULTIPLE_BY1', - 1: 'MULTIPLE_BY2', - 2: 'MULTIPLE_BY3_RESERVED', - 3: 'MULTIPLE_BY4', - 4: 'MULTIPLE_RESERVED', -} -MULTIPLE_BY1 = 0 -MULTIPLE_BY2 = 1 -MULTIPLE_BY3_RESERVED = 2 -MULTIPLE_BY4 = 3 -MULTIPLE_RESERVED = 4 -APG_DBG_AUDIO_DTO_MULTI = ctypes.c_uint32 # enum - -# values for enumeration 'APG_DBG_MUX_SEL' -APG_DBG_MUX_SEL__enumvalues = { - 0: 'APG_FUNCTIONAL_MODE', - 1: 'APG_DEBUG_AUDIO_MODE', -} -APG_FUNCTIONAL_MODE = 0 -APG_DEBUG_AUDIO_MODE = 1 -APG_DBG_MUX_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'APG_DP_ASP_CHANNEL_COUNT_OVERRIDE' -APG_DP_ASP_CHANNEL_COUNT_OVERRIDE__enumvalues = { - 0: 'APG_DP_ASP_CHANNEL_COUNT_FROM_AZ', - 1: 'APG_DP_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED', -} -APG_DP_ASP_CHANNEL_COUNT_FROM_AZ = 0 -APG_DP_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED = 1 -APG_DP_ASP_CHANNEL_COUNT_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'APG_MEM_POWER_STATE' -APG_MEM_POWER_STATE__enumvalues = { - 0: 'APG_MEM_POWER_STATE_ON', - 1: 'APG_MEM_POWER_STATE_LS', - 2: 'APG_MEM_POWER_STATE_DS', - 3: 'APG_MEM_POWER_STATE_SD', -} -APG_MEM_POWER_STATE_ON = 0 -APG_MEM_POWER_STATE_LS = 1 -APG_MEM_POWER_STATE_DS = 2 -APG_MEM_POWER_STATE_SD = 3 -APG_MEM_POWER_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'APG_MEM_PWR_DIS_CTRL' -APG_MEM_PWR_DIS_CTRL__enumvalues = { - 0: 'APG_MEM_ENABLE_MEM_PWR_CTRL', - 1: 'APG_MEM_DISABLE_MEM_PWR_CTRL', -} -APG_MEM_ENABLE_MEM_PWR_CTRL = 0 -APG_MEM_DISABLE_MEM_PWR_CTRL = 1 -APG_MEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'APG_MEM_PWR_FORCE_CTRL' -APG_MEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'APG_MEM_NO_FORCE_REQUEST', - 1: 'APG_MEM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'APG_MEM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'APG_MEM_FORCE_SHUT_DOWN_REQUEST', -} -APG_MEM_NO_FORCE_REQUEST = 0 -APG_MEM_FORCE_LIGHT_SLEEP_REQUEST = 1 -APG_MEM_FORCE_DEEP_SLEEP_REQUEST = 2 -APG_MEM_FORCE_SHUT_DOWN_REQUEST = 3 -APG_MEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'APG_PACKET_CONTROL_ACP_SOURCE' -APG_PACKET_CONTROL_ACP_SOURCE__enumvalues = { - 0: 'APG_ACP_SOURCE_NO_OVERRIDE', - 1: 'APG_ACP_OVERRIDE', -} -APG_ACP_SOURCE_NO_OVERRIDE = 0 -APG_ACP_OVERRIDE = 1 -APG_PACKET_CONTROL_ACP_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'APG_PACKET_CONTROL_AUDIO_INFO_SOURCE' -APG_PACKET_CONTROL_AUDIO_INFO_SOURCE__enumvalues = { - 0: 'APG_INFOFRAME_SOURCE_NO_OVERRIDE', - 1: 'APG_INFOFRAME_SOURCE_FROM_APG_REGISTERS', -} -APG_INFOFRAME_SOURCE_NO_OVERRIDE = 0 -APG_INFOFRAME_SOURCE_FROM_APG_REGISTERS = 1 -APG_PACKET_CONTROL_AUDIO_INFO_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'APG_RAMP_CONTROL_SIGN' -APG_RAMP_CONTROL_SIGN__enumvalues = { - 0: 'APG_RAMP_SIGNED', - 1: 'APG_RAMP_UNSIGNED', -} -APG_RAMP_SIGNED = 0 -APG_RAMP_UNSIGNED = 1 -APG_RAMP_CONTROL_SIGN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL' -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL__enumvalues = { - 0: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER1', - 1: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER2', - 2: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER3', - 3: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER4', - 4: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER5', - 5: 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER6', -} -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER1 = 0 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER2 = 1 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER3 = 2 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER4 = 3 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER5 = 4 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER6 = 5 -DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL' -DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL__enumvalues = { - 0: 'DCIO_TEST_CLK_SEL_DISPCLK', - 1: 'DCIO_TEST_CLK_SEL_GATED_DISPCLK', - 2: 'DCIO_TEST_CLK_SEL_SOCCLK', -} -DCIO_TEST_CLK_SEL_DISPCLK = 0 -DCIO_TEST_CLK_SEL_GATED_DISPCLK = 1 -DCIO_TEST_CLK_SEL_SOCCLK = 2 -DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS' -DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS__enumvalues = { - 0: 'DCIO_DISPCLK_R_DCIO_GATE_DISABLE', - 1: 'DCIO_DISPCLK_R_DCIO_GATE_ENABLE', -} -DCIO_DISPCLK_R_DCIO_GATE_DISABLE = 0 -DCIO_DISPCLK_R_DCIO_GATE_ENABLE = 1 -DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DBG_ASYNC_4BIT_SEL' -DCIO_DBG_ASYNC_4BIT_SEL__enumvalues = { - 0: 'DCIO_DBG_ASYNC_4BIT_SEL_3TO0', - 1: 'DCIO_DBG_ASYNC_4BIT_SEL_7TO4', - 2: 'DCIO_DBG_ASYNC_4BIT_SEL_11TO8', - 3: 'DCIO_DBG_ASYNC_4BIT_SEL_15TO12', - 4: 'DCIO_DBG_ASYNC_4BIT_SEL_19TO16', - 5: 'DCIO_DBG_ASYNC_4BIT_SEL_23TO20', - 6: 'DCIO_DBG_ASYNC_4BIT_SEL_27TO24', - 7: 'DCIO_DBG_ASYNC_4BIT_SEL_31TO28', -} -DCIO_DBG_ASYNC_4BIT_SEL_3TO0 = 0 -DCIO_DBG_ASYNC_4BIT_SEL_7TO4 = 1 -DCIO_DBG_ASYNC_4BIT_SEL_11TO8 = 2 -DCIO_DBG_ASYNC_4BIT_SEL_15TO12 = 3 -DCIO_DBG_ASYNC_4BIT_SEL_19TO16 = 4 -DCIO_DBG_ASYNC_4BIT_SEL_23TO20 = 5 -DCIO_DBG_ASYNC_4BIT_SEL_27TO24 = 6 -DCIO_DBG_ASYNC_4BIT_SEL_31TO28 = 7 -DCIO_DBG_ASYNC_4BIT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DBG_ASYNC_BLOCK_SEL' -DCIO_DBG_ASYNC_BLOCK_SEL__enumvalues = { - 0: 'DCIO_DBG_ASYNC_BLOCK_SEL_OVERRIDE', - 1: 'DCIO_DBG_ASYNC_BLOCK_SEL_DCCG', - 2: 'DCIO_DBG_ASYNC_BLOCK_SEL_DCIO', - 3: 'DCIO_DBG_ASYNC_BLOCK_SEL_DIO', -} -DCIO_DBG_ASYNC_BLOCK_SEL_OVERRIDE = 0 -DCIO_DBG_ASYNC_BLOCK_SEL_DCCG = 1 -DCIO_DBG_ASYNC_BLOCK_SEL_DCIO = 2 -DCIO_DBG_ASYNC_BLOCK_SEL_DIO = 3 -DCIO_DBG_ASYNC_BLOCK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DCRXPHY_SOFT_RESET' -DCIO_DCRXPHY_SOFT_RESET__enumvalues = { - 0: 'DCIO_DCRXPHY_SOFT_RESET_DEASSERT', - 1: 'DCIO_DCRXPHY_SOFT_RESET_ASSERT', -} -DCIO_DCRXPHY_SOFT_RESET_DEASSERT = 0 -DCIO_DCRXPHY_SOFT_RESET_ASSERT = 1 -DCIO_DCRXPHY_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERICA_SEL' -DCIO_DC_GENERICA_SEL__enumvalues = { - 1: 'DCIO_GENERICA_SEL_STEREOSYNC', - 10: 'DCIO_GENERICA_SEL_GENERICA_DCCG', - 11: 'DCIO_GENERICA_SEL_SYNCEN', -} -DCIO_GENERICA_SEL_STEREOSYNC = 1 -DCIO_GENERICA_SEL_GENERICA_DCCG = 10 -DCIO_GENERICA_SEL_SYNCEN = 11 -DCIO_DC_GENERICA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERICB_SEL' -DCIO_DC_GENERICB_SEL__enumvalues = { - 1: 'DCIO_GENERICB_SEL_STEREOSYNC', - 10: 'DCIO_GENERICB_SEL_GENERICB_DCCG', - 11: 'DCIO_GENERICB_SEL_SYNCEN', -} -DCIO_GENERICB_SEL_STEREOSYNC = 1 -DCIO_GENERICB_SEL_GENERICB_DCCG = 10 -DCIO_GENERICB_SEL_SYNCEN = 11 -DCIO_DC_GENERICB_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL' -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_TEST_FBDIV_CLK_DIV2', - 1: 'DCIO_UNIPHYB_TEST_FBDIV_CLK_DIV2', - 2: 'DCIO_UNIPHYC_TEST_FBDIV_CLK_DIV2', - 3: 'DCIO_UNIPHYD_TEST_FBDIV_CLK_DIV2', - 4: 'DCIO_UNIPHYE_TEST_FBDIV_CLK_DIV2', - 5: 'DCIO_UNIPHYF_TEST_FBDIV_CLK_DIV2', - 6: 'DCIO_UNIPHYG_TEST_FBDIV_CLK_DIV2', -} -DCIO_UNIPHYA_TEST_FBDIV_CLK_DIV2 = 0 -DCIO_UNIPHYB_TEST_FBDIV_CLK_DIV2 = 1 -DCIO_UNIPHYC_TEST_FBDIV_CLK_DIV2 = 2 -DCIO_UNIPHYD_TEST_FBDIV_CLK_DIV2 = 3 -DCIO_UNIPHYE_TEST_FBDIV_CLK_DIV2 = 4 -DCIO_UNIPHYF_TEST_FBDIV_CLK_DIV2 = 5 -DCIO_UNIPHYG_TEST_FBDIV_CLK_DIV2 = 6 -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL' -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_FBDIV_CLK', - 1: 'DCIO_UNIPHYB_FBDIV_CLK', - 2: 'DCIO_UNIPHYC_FBDIV_CLK', - 3: 'DCIO_UNIPHYD_FBDIV_CLK', - 4: 'DCIO_UNIPHYE_FBDIV_CLK', - 5: 'DCIO_UNIPHYF_FBDIV_CLK', - 6: 'DCIO_UNIPHYG_FBDIV_CLK', -} -DCIO_UNIPHYA_FBDIV_CLK = 0 -DCIO_UNIPHYB_FBDIV_CLK = 1 -DCIO_UNIPHYC_FBDIV_CLK = 2 -DCIO_UNIPHYD_FBDIV_CLK = 3 -DCIO_UNIPHYE_FBDIV_CLK = 4 -DCIO_UNIPHYF_FBDIV_CLK = 5 -DCIO_UNIPHYG_FBDIV_CLK = 6 -DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL' -DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_FBDIV_SSC_CLK', - 1: 'DCIO_UNIPHYB_FBDIV_SSC_CLK', - 2: 'DCIO_UNIPHYC_FBDIV_SSC_CLK', - 3: 'DCIO_UNIPHYD_FBDIV_SSC_CLK', - 4: 'DCIO_UNIPHYE_FBDIV_SSC_CLK', - 5: 'DCIO_UNIPHYF_FBDIV_SSC_CLK', - 6: 'DCIO_UNIPHYG_FBDIV_SSC_CLK', -} -DCIO_UNIPHYA_FBDIV_SSC_CLK = 0 -DCIO_UNIPHYB_FBDIV_SSC_CLK = 1 -DCIO_UNIPHYC_FBDIV_SSC_CLK = 2 -DCIO_UNIPHYD_FBDIV_SSC_CLK = 3 -DCIO_UNIPHYE_FBDIV_SSC_CLK = 4 -DCIO_UNIPHYF_FBDIV_SSC_CLK = 5 -DCIO_UNIPHYG_FBDIV_SSC_CLK = 6 -DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL' -DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL__enumvalues = { - 0: 'DCIO_UNIPHYA_TEST_REFDIV_CLK', - 1: 'DCIO_UNIPHYB_TEST_REFDIV_CLK', - 2: 'DCIO_UNIPHYC_TEST_REFDIV_CLK', - 3: 'DCIO_UNIPHYD_TEST_REFDIV_CLK', - 4: 'DCIO_UNIPHYE_TEST_REFDIV_CLK', - 5: 'DCIO_UNIPHYF_TEST_REFDIV_CLK', - 6: 'DCIO_UNIPHYG_TEST_REFDIV_CLK', -} -DCIO_UNIPHYA_TEST_REFDIV_CLK = 0 -DCIO_UNIPHYB_TEST_REFDIV_CLK = 1 -DCIO_UNIPHYC_TEST_REFDIV_CLK = 2 -DCIO_UNIPHYD_TEST_REFDIV_CLK = 3 -DCIO_UNIPHYE_TEST_REFDIV_CLK = 4 -DCIO_UNIPHYF_TEST_REFDIV_CLK = 5 -DCIO_UNIPHYG_TEST_REFDIV_CLK = 6 -DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GPIO_DEBUG_DPRX_LOOPBACK_ENABLE' -DCIO_DC_GPIO_DEBUG_DPRX_LOOPBACK_ENABLE__enumvalues = { - 0: 'DCIO_DPRX_LOOPBACK_ENABLE_NORMAL', - 1: 'DCIO_DPRX_LOOPBACK_ENABLE_LOOP', -} -DCIO_DPRX_LOOPBACK_ENABLE_NORMAL = 0 -DCIO_DPRX_LOOPBACK_ENABLE_LOOP = 1 -DCIO_DC_GPIO_DEBUG_DPRX_LOOPBACK_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GPU_TIMER_READ_SELECT' -DCIO_DC_GPU_TIMER_READ_SELECT__enumvalues = { - 0: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE', - 1: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE', - 2: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_P_FLIP', - 3: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_P_FLIP', - 4: 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM', - 5: 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM', -} -DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE = 0 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE = 1 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_P_FLIP = 2 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_P_FLIP = 3 -DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM = 4 -DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM = 5 -DCIO_DC_GPU_TIMER_READ_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_GPU_TIMER_START_POSITION' -DCIO_DC_GPU_TIMER_START_POSITION__enumvalues = { - 0: 'DCIO_GPU_TIMER_START_0_END_27', - 1: 'DCIO_GPU_TIMER_START_1_END_28', - 2: 'DCIO_GPU_TIMER_START_2_END_29', - 3: 'DCIO_GPU_TIMER_START_3_END_30', - 4: 'DCIO_GPU_TIMER_START_4_END_31', - 5: 'DCIO_GPU_TIMER_START_6_END_33', - 6: 'DCIO_GPU_TIMER_START_8_END_35', - 7: 'DCIO_GPU_TIMER_START_10_END_37', -} -DCIO_GPU_TIMER_START_0_END_27 = 0 -DCIO_GPU_TIMER_START_1_END_28 = 1 -DCIO_GPU_TIMER_START_2_END_29 = 2 -DCIO_GPU_TIMER_START_3_END_30 = 3 -DCIO_GPU_TIMER_START_4_END_31 = 4 -DCIO_GPU_TIMER_START_6_END_33 = 5 -DCIO_GPU_TIMER_START_8_END_35 = 6 -DCIO_GPU_TIMER_START_10_END_37 = 7 -DCIO_DC_GPU_TIMER_START_POSITION = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL' -DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL__enumvalues = { - 0: 'DCIO_GENLK_CLK_OUTPUT_SEL_DISABLE', - 1: 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL1', - 2: 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL2', - 3: 'DCIO_GENLK_CLK_OUTPUT_SEL_RESERVED_VALUE3', -} -DCIO_GENLK_CLK_OUTPUT_SEL_DISABLE = 0 -DCIO_GENLK_CLK_OUTPUT_SEL_PPLL1 = 1 -DCIO_GENLK_CLK_OUTPUT_SEL_PPLL2 = 2 -DCIO_GENLK_CLK_OUTPUT_SEL_RESERVED_VALUE3 = 3 -DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DC_REF_CLK_CNTL_HSYNCA_OUTPUT_SEL' -DCIO_DC_REF_CLK_CNTL_HSYNCA_OUTPUT_SEL__enumvalues = { - 0: 'DCIO_HSYNCA_OUTPUT_SEL_DISABLE', - 1: 'DCIO_HSYNCA_OUTPUT_SEL_PPLL1', - 2: 'DCIO_HSYNCA_OUTPUT_SEL_PPLL2', - 3: 'DCIO_HSYNCA_OUTPUT_SEL_RESERVED', -} -DCIO_HSYNCA_OUTPUT_SEL_DISABLE = 0 -DCIO_HSYNCA_OUTPUT_SEL_PPLL1 = 1 -DCIO_HSYNCA_OUTPUT_SEL_PPLL2 = 2 -DCIO_HSYNCA_OUTPUT_SEL_RESERVED = 3 -DCIO_DC_REF_CLK_CNTL_HSYNCA_OUTPUT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DIO_EXT_VSYNC_MASK' -DCIO_DIO_EXT_VSYNC_MASK__enumvalues = { - 0: 'DCIO_EXT_VSYNC_MASK_NONE', - 1: 'DCIO_EXT_VSYNC_MASK_PIPE0', - 2: 'DCIO_EXT_VSYNC_MASK_PIPE1', - 3: 'DCIO_EXT_VSYNC_MASK_PIPE2', - 4: 'DCIO_EXT_VSYNC_MASK_PIPE3', - 5: 'DCIO_EXT_VSYNC_MASK_PIPE4', - 6: 'DCIO_EXT_VSYNC_MASK_PIPE5', - 7: 'DCIO_EXT_VSYNC_MASK_NONE_DUPLICATE', -} -DCIO_EXT_VSYNC_MASK_NONE = 0 -DCIO_EXT_VSYNC_MASK_PIPE0 = 1 -DCIO_EXT_VSYNC_MASK_PIPE1 = 2 -DCIO_EXT_VSYNC_MASK_PIPE2 = 3 -DCIO_EXT_VSYNC_MASK_PIPE3 = 4 -DCIO_EXT_VSYNC_MASK_PIPE4 = 5 -DCIO_EXT_VSYNC_MASK_PIPE5 = 6 -DCIO_EXT_VSYNC_MASK_NONE_DUPLICATE = 7 -DCIO_DIO_EXT_VSYNC_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DIO_OTG_EXT_VSYNC_MUX' -DCIO_DIO_OTG_EXT_VSYNC_MUX__enumvalues = { - 0: 'DCIO_EXT_VSYNC_MUX_SWAPLOCKB', - 1: 'DCIO_EXT_VSYNC_MUX_OTG0', - 2: 'DCIO_EXT_VSYNC_MUX_OTG1', - 3: 'DCIO_EXT_VSYNC_MUX_OTG2', - 4: 'DCIO_EXT_VSYNC_MUX_OTG3', - 5: 'DCIO_EXT_VSYNC_MUX_OTG4', - 6: 'DCIO_EXT_VSYNC_MUX_OTG5', - 7: 'DCIO_EXT_VSYNC_MUX_GENERICB', -} -DCIO_EXT_VSYNC_MUX_SWAPLOCKB = 0 -DCIO_EXT_VSYNC_MUX_OTG0 = 1 -DCIO_EXT_VSYNC_MUX_OTG1 = 2 -DCIO_EXT_VSYNC_MUX_OTG2 = 3 -DCIO_EXT_VSYNC_MUX_OTG3 = 4 -DCIO_EXT_VSYNC_MUX_OTG4 = 5 -DCIO_EXT_VSYNC_MUX_OTG5 = 6 -DCIO_EXT_VSYNC_MUX_GENERICB = 7 -DCIO_DIO_OTG_EXT_VSYNC_MUX = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DPCS_INTERRUPT_MASK' -DCIO_DPCS_INTERRUPT_MASK__enumvalues = { - 0: 'DCIO_DPCS_INTERRUPT_DISABLE', - 1: 'DCIO_DPCS_INTERRUPT_ENABLE', -} -DCIO_DPCS_INTERRUPT_DISABLE = 0 -DCIO_DPCS_INTERRUPT_ENABLE = 1 -DCIO_DPCS_INTERRUPT_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DPCS_INTERRUPT_TYPE' -DCIO_DPCS_INTERRUPT_TYPE__enumvalues = { - 0: 'DCIO_DPCS_INTERRUPT_TYPE_LEVEL_BASED', - 1: 'DCIO_DPCS_INTERRUPT_TYPE_PULSE_BASED', -} -DCIO_DPCS_INTERRUPT_TYPE_LEVEL_BASED = 0 -DCIO_DPCS_INTERRUPT_TYPE_PULSE_BASED = 1 -DCIO_DPCS_INTERRUPT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_DSYNC_SOFT_RESET' -DCIO_DSYNC_SOFT_RESET__enumvalues = { - 0: 'DCIO_DSYNC_SOFT_RESET_DEASSERT', - 1: 'DCIO_DSYNC_SOFT_RESET_ASSERT', -} -DCIO_DSYNC_SOFT_RESET_DEASSERT = 0 -DCIO_DSYNC_SOFT_RESET_ASSERT = 1 -DCIO_DSYNC_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GENLK_CLK_GSL_MASK' -DCIO_GENLK_CLK_GSL_MASK__enumvalues = { - 0: 'DCIO_GENLK_CLK_GSL_MASK_NO', - 1: 'DCIO_GENLK_CLK_GSL_MASK_TIMING', - 2: 'DCIO_GENLK_CLK_GSL_MASK_STEREO', -} -DCIO_GENLK_CLK_GSL_MASK_NO = 0 -DCIO_GENLK_CLK_GSL_MASK_TIMING = 1 -DCIO_GENLK_CLK_GSL_MASK_STEREO = 2 -DCIO_GENLK_CLK_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GENLK_VSYNC_GSL_MASK' -DCIO_GENLK_VSYNC_GSL_MASK__enumvalues = { - 0: 'DCIO_GENLK_VSYNC_GSL_MASK_NO', - 1: 'DCIO_GENLK_VSYNC_GSL_MASK_TIMING', - 2: 'DCIO_GENLK_VSYNC_GSL_MASK_STEREO', -} -DCIO_GENLK_VSYNC_GSL_MASK_NO = 0 -DCIO_GENLK_VSYNC_GSL_MASK_TIMING = 1 -DCIO_GENLK_VSYNC_GSL_MASK_STEREO = 2 -DCIO_GENLK_VSYNC_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_GSL_SEL' -DCIO_GSL_SEL__enumvalues = { - 0: 'DCIO_GSL_SEL_GROUP_0', - 1: 'DCIO_GSL_SEL_GROUP_1', - 2: 'DCIO_GSL_SEL_GROUP_2', -} -DCIO_GSL_SEL_GROUP_0 = 0 -DCIO_GSL_SEL_GROUP_1 = 1 -DCIO_GSL_SEL_GROUP_2 = 2 -DCIO_GSL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_PHY_HPO_ENC_SRC_SEL' -DCIO_PHY_HPO_ENC_SRC_SEL__enumvalues = { - 0: 'HPO_SRC0', - 1: 'HPO_SRC_RESERVED', -} -HPO_SRC0 = 0 -HPO_SRC_RESERVED = 1 -DCIO_PHY_HPO_ENC_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_SWAPLOCK_A_GSL_MASK' -DCIO_SWAPLOCK_A_GSL_MASK__enumvalues = { - 0: 'DCIO_SWAPLOCK_A_GSL_MASK_NO', - 1: 'DCIO_SWAPLOCK_A_GSL_MASK_TIMING', - 2: 'DCIO_SWAPLOCK_A_GSL_MASK_STEREO', -} -DCIO_SWAPLOCK_A_GSL_MASK_NO = 0 -DCIO_SWAPLOCK_A_GSL_MASK_TIMING = 1 -DCIO_SWAPLOCK_A_GSL_MASK_STEREO = 2 -DCIO_SWAPLOCK_A_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_SWAPLOCK_B_GSL_MASK' -DCIO_SWAPLOCK_B_GSL_MASK__enumvalues = { - 0: 'DCIO_SWAPLOCK_B_GSL_MASK_NO', - 1: 'DCIO_SWAPLOCK_B_GSL_MASK_TIMING', - 2: 'DCIO_SWAPLOCK_B_GSL_MASK_STEREO', -} -DCIO_SWAPLOCK_B_GSL_MASK_NO = 0 -DCIO_SWAPLOCK_B_GSL_MASK_TIMING = 1 -DCIO_SWAPLOCK_B_GSL_MASK_STEREO = 2 -DCIO_SWAPLOCK_B_GSL_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE' -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE__enumvalues = { - 0: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH0', - 1: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH1', - 2: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH2', - 3: 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH3', -} -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH0 = 0 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH1 = 1 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH2 = 2 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH3 = 3 -DCIO_UNIPHY_CHANNEL_XBAR_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_IMPCAL_SEL' -DCIO_UNIPHY_IMPCAL_SEL__enumvalues = { - 0: 'DCIO_UNIPHY_IMPCAL_SEL_TEMPERATURE', - 1: 'DCIO_UNIPHY_IMPCAL_SEL_BINARY', -} -DCIO_UNIPHY_IMPCAL_SEL_TEMPERATURE = 0 -DCIO_UNIPHY_IMPCAL_SEL_BINARY = 1 -DCIO_UNIPHY_IMPCAL_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT' -DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT__enumvalues = { - 0: 'DCIO_UNIPHY_CHANNEL_NO_INVERSION', - 1: 'DCIO_UNIPHY_CHANNEL_INVERTED', -} -DCIO_UNIPHY_CHANNEL_NO_INVERSION = 0 -DCIO_UNIPHY_CHANNEL_INVERTED = 1 -DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK' -DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK__enumvalues = { - 0: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_DISALLOW', - 1: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW', - 2: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_DEBOUNCED', - 3: 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_TOGGLE_FILTERED', -} -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_DISALLOW = 0 -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW = 1 -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_DEBOUNCED = 2 -DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_TOGGLE_FILTERED = 3 -DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_ALL_PWR_OK' -DCIOCHIP_AUX_ALL_PWR_OK__enumvalues = { - 0: 'DCIOCHIP_AUX_ALL_PWR_OK_0', - 1: 'DCIOCHIP_AUX_ALL_PWR_OK_1', -} -DCIOCHIP_AUX_ALL_PWR_OK_0 = 0 -DCIOCHIP_AUX_ALL_PWR_OK_1 = 1 -DCIOCHIP_AUX_ALL_PWR_OK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_CSEL0P9' -DCIOCHIP_AUX_CSEL0P9__enumvalues = { - 0: 'DCIOCHIP_AUX_CSEL_DEC1P0', - 1: 'DCIOCHIP_AUX_CSEL_DEC0P9', -} -DCIOCHIP_AUX_CSEL_DEC1P0 = 0 -DCIOCHIP_AUX_CSEL_DEC0P9 = 1 -DCIOCHIP_AUX_CSEL0P9 = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_CSEL1P1' -DCIOCHIP_AUX_CSEL1P1__enumvalues = { - 0: 'DCIOCHIP_AUX_CSEL_INC1P0', - 1: 'DCIOCHIP_AUX_CSEL_INC1P1', -} -DCIOCHIP_AUX_CSEL_INC1P0 = 0 -DCIOCHIP_AUX_CSEL_INC1P1 = 1 -DCIOCHIP_AUX_CSEL1P1 = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_FALLSLEWSEL' -DCIOCHIP_AUX_FALLSLEWSEL__enumvalues = { - 0: 'DCIOCHIP_AUX_FALLSLEWSEL_LOW', - 1: 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH0', - 2: 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH1', - 3: 'DCIOCHIP_AUX_FALLSLEWSEL_ULTRAHIGH', -} -DCIOCHIP_AUX_FALLSLEWSEL_LOW = 0 -DCIOCHIP_AUX_FALLSLEWSEL_HIGH0 = 1 -DCIOCHIP_AUX_FALLSLEWSEL_HIGH1 = 2 -DCIOCHIP_AUX_FALLSLEWSEL_ULTRAHIGH = 3 -DCIOCHIP_AUX_FALLSLEWSEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_HYS_TUNE' -DCIOCHIP_AUX_HYS_TUNE__enumvalues = { - 0: 'DCIOCHIP_AUX_HYS_TUNE_0', - 1: 'DCIOCHIP_AUX_HYS_TUNE_1', - 2: 'DCIOCHIP_AUX_HYS_TUNE_2', - 3: 'DCIOCHIP_AUX_HYS_TUNE_3', -} -DCIOCHIP_AUX_HYS_TUNE_0 = 0 -DCIOCHIP_AUX_HYS_TUNE_1 = 1 -DCIOCHIP_AUX_HYS_TUNE_2 = 2 -DCIOCHIP_AUX_HYS_TUNE_3 = 3 -DCIOCHIP_AUX_HYS_TUNE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_RECEIVER_SEL' -DCIOCHIP_AUX_RECEIVER_SEL__enumvalues = { - 0: 'DCIOCHIP_AUX_RECEIVER_SEL_0', - 1: 'DCIOCHIP_AUX_RECEIVER_SEL_1', - 2: 'DCIOCHIP_AUX_RECEIVER_SEL_2', - 3: 'DCIOCHIP_AUX_RECEIVER_SEL_3', -} -DCIOCHIP_AUX_RECEIVER_SEL_0 = 0 -DCIOCHIP_AUX_RECEIVER_SEL_1 = 1 -DCIOCHIP_AUX_RECEIVER_SEL_2 = 2 -DCIOCHIP_AUX_RECEIVER_SEL_3 = 3 -DCIOCHIP_AUX_RECEIVER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_RSEL0P9' -DCIOCHIP_AUX_RSEL0P9__enumvalues = { - 0: 'DCIOCHIP_AUX_RSEL_DEC1P0', - 1: 'DCIOCHIP_AUX_RSEL_DEC0P9', -} -DCIOCHIP_AUX_RSEL_DEC1P0 = 0 -DCIOCHIP_AUX_RSEL_DEC0P9 = 1 -DCIOCHIP_AUX_RSEL0P9 = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_RSEL1P1' -DCIOCHIP_AUX_RSEL1P1__enumvalues = { - 0: 'DCIOCHIP_AUX_RSEL_INC1P0', - 1: 'DCIOCHIP_AUX_RSEL_INC1P1', -} -DCIOCHIP_AUX_RSEL_INC1P0 = 0 -DCIOCHIP_AUX_RSEL_INC1P1 = 1 -DCIOCHIP_AUX_RSEL1P1 = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_SPIKESEL' -DCIOCHIP_AUX_SPIKESEL__enumvalues = { - 0: 'DCIOCHIP_AUX_SPIKESEL_50NS', - 1: 'DCIOCHIP_AUX_SPIKESEL_10NS', -} -DCIOCHIP_AUX_SPIKESEL_50NS = 0 -DCIOCHIP_AUX_SPIKESEL_10NS = 1 -DCIOCHIP_AUX_SPIKESEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_AUX_VOD_TUNE' -DCIOCHIP_AUX_VOD_TUNE__enumvalues = { - 0: 'DCIOCHIP_AUX_VOD_TUNE_0', - 1: 'DCIOCHIP_AUX_VOD_TUNE_1', - 2: 'DCIOCHIP_AUX_VOD_TUNE_2', - 3: 'DCIOCHIP_AUX_VOD_TUNE_3', -} -DCIOCHIP_AUX_VOD_TUNE_0 = 0 -DCIOCHIP_AUX_VOD_TUNE_1 = 1 -DCIOCHIP_AUX_VOD_TUNE_2 = 2 -DCIOCHIP_AUX_VOD_TUNE_3 = 3 -DCIOCHIP_AUX_VOD_TUNE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_GPIO_MASK_EN' -DCIOCHIP_GPIO_MASK_EN__enumvalues = { - 0: 'DCIOCHIP_GPIO_MASK_EN_HARDWARE', - 1: 'DCIOCHIP_GPIO_MASK_EN_SOFTWARE', -} -DCIOCHIP_GPIO_MASK_EN_HARDWARE = 0 -DCIOCHIP_GPIO_MASK_EN_SOFTWARE = 1 -DCIOCHIP_GPIO_MASK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_HPD_SEL' -DCIOCHIP_HPD_SEL__enumvalues = { - 0: 'DCIOCHIP_HPD_SEL_ASYNC', - 1: 'DCIOCHIP_HPD_SEL_CLOCKED', -} -DCIOCHIP_HPD_SEL_ASYNC = 0 -DCIOCHIP_HPD_SEL_CLOCKED = 1 -DCIOCHIP_HPD_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_I2C_COMPSEL' -DCIOCHIP_I2C_COMPSEL__enumvalues = { - 0: 'DCIOCHIP_I2C_REC_SCHMIT', - 1: 'DCIOCHIP_I2C_REC_COMPARATOR', -} -DCIOCHIP_I2C_REC_SCHMIT = 0 -DCIOCHIP_I2C_REC_COMPARATOR = 1 -DCIOCHIP_I2C_COMPSEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_I2C_FALLSLEWSEL' -DCIOCHIP_I2C_FALLSLEWSEL__enumvalues = { - 0: 'DCIOCHIP_I2C_FALLSLEWSEL_00', - 1: 'DCIOCHIP_I2C_FALLSLEWSEL_01', - 2: 'DCIOCHIP_I2C_FALLSLEWSEL_10', - 3: 'DCIOCHIP_I2C_FALLSLEWSEL_11', -} -DCIOCHIP_I2C_FALLSLEWSEL_00 = 0 -DCIOCHIP_I2C_FALLSLEWSEL_01 = 1 -DCIOCHIP_I2C_FALLSLEWSEL_10 = 2 -DCIOCHIP_I2C_FALLSLEWSEL_11 = 3 -DCIOCHIP_I2C_FALLSLEWSEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_I2C_RECEIVER_SEL' -DCIOCHIP_I2C_RECEIVER_SEL__enumvalues = { - 0: 'DCIOCHIP_I2C_RECEIVER_SEL_0', - 1: 'DCIOCHIP_I2C_RECEIVER_SEL_1', - 2: 'DCIOCHIP_I2C_RECEIVER_SEL_2', - 3: 'DCIOCHIP_I2C_RECEIVER_SEL_3', -} -DCIOCHIP_I2C_RECEIVER_SEL_0 = 0 -DCIOCHIP_I2C_RECEIVER_SEL_1 = 1 -DCIOCHIP_I2C_RECEIVER_SEL_2 = 2 -DCIOCHIP_I2C_RECEIVER_SEL_3 = 3 -DCIOCHIP_I2C_RECEIVER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_I2C_VPH_1V2_EN' -DCIOCHIP_I2C_VPH_1V2_EN__enumvalues = { - 0: 'DCIOCHIP_I2C_VPH_1V2_EN_0', - 1: 'DCIOCHIP_I2C_VPH_1V2_EN_1', -} -DCIOCHIP_I2C_VPH_1V2_EN_0 = 0 -DCIOCHIP_I2C_VPH_1V2_EN_1 = 1 -DCIOCHIP_I2C_VPH_1V2_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_INVERT' -DCIOCHIP_INVERT__enumvalues = { - 0: 'DCIOCHIP_POL_NON_INVERT', - 1: 'DCIOCHIP_POL_INVERT', -} -DCIOCHIP_POL_NON_INVERT = 0 -DCIOCHIP_POL_INVERT = 1 -DCIOCHIP_INVERT = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_MASK' -DCIOCHIP_MASK__enumvalues = { - 0: 'DCIOCHIP_MASK_DISABLE', - 1: 'DCIOCHIP_MASK_ENABLE', -} -DCIOCHIP_MASK_DISABLE = 0 -DCIOCHIP_MASK_ENABLE = 1 -DCIOCHIP_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_PAD_MODE' -DCIOCHIP_PAD_MODE__enumvalues = { - 0: 'DCIOCHIP_PAD_MODE_DDC', - 1: 'DCIOCHIP_PAD_MODE_DP', -} -DCIOCHIP_PAD_MODE_DDC = 0 -DCIOCHIP_PAD_MODE_DP = 1 -DCIOCHIP_PAD_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_PD_EN' -DCIOCHIP_PD_EN__enumvalues = { - 0: 'DCIOCHIP_PD_EN_NOTALLOW', - 1: 'DCIOCHIP_PD_EN_ALLOW', -} -DCIOCHIP_PD_EN_NOTALLOW = 0 -DCIOCHIP_PD_EN_ALLOW = 1 -DCIOCHIP_PD_EN = ctypes.c_uint32 # enum - -# values for enumeration 'DCIOCHIP_REF_27_SRC_SEL' -DCIOCHIP_REF_27_SRC_SEL__enumvalues = { - 0: 'DCIOCHIP_REF_27_SRC_SEL_XTAL_DIVIDER', - 1: 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_DIVIDER', - 2: 'DCIOCHIP_REF_27_SRC_SEL_XTAL_BYPASS', - 3: 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_BYPASS', -} -DCIOCHIP_REF_27_SRC_SEL_XTAL_DIVIDER = 0 -DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_DIVIDER = 1 -DCIOCHIP_REF_27_SRC_SEL_XTAL_BYPASS = 2 -DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_BYPASS = 3 -DCIOCHIP_REF_27_SRC_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE' -PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE__enumvalues = { - 0: 'PWRSEQ_BL_PWM_OVERRIDE_BL_OUT_DISABLE', - 1: 'PWRSEQ_BL_PWM_OVERRIDE_BL_OUT_ENABLE', -} -PWRSEQ_BL_PWM_OVERRIDE_BL_OUT_DISABLE = 0 -PWRSEQ_BL_PWM_OVERRIDE_BL_OUT_ENABLE = 1 -PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN' -PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN__enumvalues = { - 0: 'PWRSEQ_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN_NORMAL', - 1: 'PWRSEQ_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN_PWM', -} -PWRSEQ_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN_NORMAL = 0 -PWRSEQ_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN_PWM = 1 -PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_CNTL2_DBG_BL_PWM_INPUT_REFCLK_SELECT' -PWRSEQ_BL_PWM_CNTL2_DBG_BL_PWM_INPUT_REFCLK_SELECT__enumvalues = { - 0: 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_NORMAL', - 1: 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG1', - 2: 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG2', - 3: 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG3', -} -PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_NORMAL = 0 -PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG1 = 1 -PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG2 = 2 -PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG3 = 3 -PWRSEQ_BL_PWM_CNTL2_DBG_BL_PWM_INPUT_REFCLK_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_CNTL_BL_PWM_EN' -PWRSEQ_BL_PWM_CNTL_BL_PWM_EN__enumvalues = { - 0: 'PWRSEQ_BL_PWM_DISABLE', - 1: 'PWRSEQ_BL_PWM_ENABLE', -} -PWRSEQ_BL_PWM_DISABLE = 0 -PWRSEQ_BL_PWM_ENABLE = 1 -PWRSEQ_BL_PWM_CNTL_BL_PWM_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN' -PWRSEQ_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN__enumvalues = { - 0: 'PWRSEQ_BL_PWM_FRACTIONAL_DISABLE', - 1: 'PWRSEQ_BL_PWM_FRACTIONAL_ENABLE', -} -PWRSEQ_BL_PWM_FRACTIONAL_DISABLE = 0 -PWRSEQ_BL_PWM_FRACTIONAL_ENABLE = 1 -PWRSEQ_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN' -PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN__enumvalues = { - 0: 'PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_ENABLE', - 1: 'PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_DISABLE', -} -PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_ENABLE = 0 -PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_DISABLE = 1 -PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN' -PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN__enumvalues = { - 0: 'PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL_PWM', - 1: 'PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL1_PWM', -} -PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL_PWM = 0 -PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL1_PWM = 1 -PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_GRP1_REG_LOCK' -PWRSEQ_BL_PWM_GRP1_REG_LOCK__enumvalues = { - 0: 'PWRSEQ_BL_PWM_GRP1_REG_LOCK_DISABLE', - 1: 'PWRSEQ_BL_PWM_GRP1_REG_LOCK_ENABLE', -} -PWRSEQ_BL_PWM_GRP1_REG_LOCK_DISABLE = 0 -PWRSEQ_BL_PWM_GRP1_REG_LOCK_ENABLE = 1 -PWRSEQ_BL_PWM_GRP1_REG_LOCK = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START' -PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START__enumvalues = { - 0: 'PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START_DISABLE', - 1: 'PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START_ENABLE', -} -PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START_DISABLE = 0 -PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START_ENABLE = 1 -PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_GPIO_MASK_EN' -PWRSEQ_GPIO_MASK_EN__enumvalues = { - 0: 'PWRSEQ_GPIO_MASK_EN_HARDWARE', - 1: 'PWRSEQ_GPIO_MASK_EN_SOFTWARE', -} -PWRSEQ_GPIO_MASK_EN_HARDWARE = 0 -PWRSEQ_GPIO_MASK_EN_SOFTWARE = 1 -PWRSEQ_GPIO_MASK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON' -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON__enumvalues = { - 0: 'PWRSEQ_PANEL_BLON_OFF', - 1: 'PWRSEQ_PANEL_BLON_ON', -} -PWRSEQ_PANEL_BLON_OFF = 0 -PWRSEQ_PANEL_BLON_ON = 1 -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON_POL' -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON_POL__enumvalues = { - 0: 'PWRSEQ_PANEL_BLON_POL_NON_INVERT', - 1: 'PWRSEQ_PANEL_BLON_POL_INVERT', -} -PWRSEQ_PANEL_BLON_POL_NON_INVERT = 0 -PWRSEQ_PANEL_BLON_POL_INVERT = 1 -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON_POL = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON' -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON__enumvalues = { - 0: 'PWRSEQ_PANEL_DIGON_OFF', - 1: 'PWRSEQ_PANEL_DIGON_ON', -} -PWRSEQ_PANEL_DIGON_OFF = 0 -PWRSEQ_PANEL_DIGON_ON = 1 -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON_POL' -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON_POL__enumvalues = { - 0: 'PWRSEQ_PANEL_DIGON_POL_NON_INVERT', - 1: 'PWRSEQ_PANEL_DIGON_POL_INVERT', -} -PWRSEQ_PANEL_DIGON_POL_NON_INVERT = 0 -PWRSEQ_PANEL_DIGON_POL_INVERT = 1 -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON_POL = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_SYNCEN_POL' -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_SYNCEN_POL__enumvalues = { - 0: 'PWRSEQ_PANEL_SYNCEN_POL_NON_INVERT', - 1: 'PWRSEQ_PANEL_SYNCEN_POL_INVERT', -} -PWRSEQ_PANEL_SYNCEN_POL_NON_INVERT = 0 -PWRSEQ_PANEL_SYNCEN_POL_INVERT = 1 -PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_SYNCEN_POL = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_CNTL_TARGET_STATE' -PWRSEQ_PANEL_PWRSEQ_CNTL_TARGET_STATE__enumvalues = { - 0: 'PWRSEQ_PANEL_PWRSEQ_TARGET_STATE_LCD_OFF', - 1: 'PWRSEQ_PANEL_PWRSEQ_TARGET_STATE_LCD_ON', -} -PWRSEQ_PANEL_PWRSEQ_TARGET_STATE_LCD_OFF = 0 -PWRSEQ_PANEL_PWRSEQ_TARGET_STATE_LCD_ON = 1 -PWRSEQ_PANEL_PWRSEQ_CNTL_TARGET_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'PWRSEQ_PANEL_PWRSEQ_DELAY2_PANEL_VARY_BL_OVERRIDE_EN' -PWRSEQ_PANEL_PWRSEQ_DELAY2_PANEL_VARY_BL_OVERRIDE_EN__enumvalues = { - 0: 'PWRSEQ_PANEL_VARY_BL_OVERRIDE_EN_BLON', - 1: 'PWRSEQ_PANEL_VARY_BL_OVERRIDE_EN_SEPARATE', -} -PWRSEQ_PANEL_VARY_BL_OVERRIDE_EN_BLON = 0 -PWRSEQ_PANEL_VARY_BL_OVERRIDE_EN_SEPARATE = 1 -PWRSEQ_PANEL_PWRSEQ_DELAY2_PANEL_VARY_BL_OVERRIDE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_CORB_SIZE' -AZ_CORB_SIZE__enumvalues = { - 0: 'AZ_CORB_SIZE_2ENTRIES_RESERVED', - 1: 'AZ_CORB_SIZE_16ENTRIES_RESERVED', - 2: 'AZ_CORB_SIZE_256ENTRIES', - 3: 'AZ_CORB_SIZE_RESERVED', -} -AZ_CORB_SIZE_2ENTRIES_RESERVED = 0 -AZ_CORB_SIZE_16ENTRIES_RESERVED = 1 -AZ_CORB_SIZE_256ENTRIES = 2 -AZ_CORB_SIZE_RESERVED = 3 -AZ_CORB_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_GLOBAL_CAPABILITIES' -AZ_GLOBAL_CAPABILITIES__enumvalues = { - 0: 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_NOT_SUPPORTED', - 1: 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_SUPPORTED', -} -AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_NOT_SUPPORTED = 0 -AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_SUPPORTED = 1 -AZ_GLOBAL_CAPABILITIES = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_RIRB_SIZE' -AZ_RIRB_SIZE__enumvalues = { - 0: 'AZ_RIRB_SIZE_2ENTRIES_RESERVED', - 1: 'AZ_RIRB_SIZE_16ENTRIES_RESERVED', - 2: 'AZ_RIRB_SIZE_256ENTRIES', - 3: 'AZ_RIRB_SIZE_UNDEFINED', -} -AZ_RIRB_SIZE_2ENTRIES_RESERVED = 0 -AZ_RIRB_SIZE_16ENTRIES_RESERVED = 1 -AZ_RIRB_SIZE_256ENTRIES = 2 -AZ_RIRB_SIZE_UNDEFINED = 3 -AZ_RIRB_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_RIRB_WRITE_POINTER_RESET' -AZ_RIRB_WRITE_POINTER_RESET__enumvalues = { - 0: 'AZ_RIRB_WRITE_POINTER_NOT_RESET', - 1: 'AZ_RIRB_WRITE_POINTER_DO_RESET', -} -AZ_RIRB_WRITE_POINTER_NOT_RESET = 0 -AZ_RIRB_WRITE_POINTER_DO_RESET = 1 -AZ_RIRB_WRITE_POINTER_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_STATE_CHANGE_STATUS' -AZ_STATE_CHANGE_STATUS__enumvalues = { - 0: 'AZ_STATE_CHANGE_STATUS_CODEC_NOT_PRESENT', - 1: 'AZ_STATE_CHANGE_STATUS_CODEC_PRESENT', -} -AZ_STATE_CHANGE_STATUS_CODEC_NOT_PRESENT = 0 -AZ_STATE_CHANGE_STATUS_CODEC_PRESENT = 1 -AZ_STATE_CHANGE_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'CORB_READ_POINTER_RESET' -CORB_READ_POINTER_RESET__enumvalues = { - 0: 'CORB_READ_POINTER_RESET_CORB_DMA_IS_NOT_RESET', - 1: 'CORB_READ_POINTER_RESET_CORB_DMA_IS_RESET', -} -CORB_READ_POINTER_RESET_CORB_DMA_IS_NOT_RESET = 0 -CORB_READ_POINTER_RESET_CORB_DMA_IS_RESET = 1 -CORB_READ_POINTER_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE' -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE__enumvalues = { - 0: 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_DISABLE', - 1: 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_ENABLE', -} -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_DISABLE = 0 -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_ENABLE = 1 -DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL' -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE', -} -GENERIC_AZ_CONTROLLER_REGISTER_DISABLE = 0 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE = 1 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED' -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE_RESERVED', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_RESERVED', -} -GENERIC_AZ_CONTROLLER_REGISTER_DISABLE_RESERVED = 0 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_RESERVED = 1 -GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS' -GENERIC_AZ_CONTROLLER_REGISTER_STATUS__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET', -} -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET = 0 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET = 1 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED' -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED__enumvalues = { - 0: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET_RESERVED', - 1: 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET_RESERVED', -} -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET_RESERVED = 0 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET_RESERVED = 1 -GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE' -GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE__enumvalues = { - 0: 'ACCEPT_UNSOLICITED_RESPONSE_NOT_ENABLE', - 1: 'ACCEPT_UNSOLICITED_RESPONSE_ENABLE', -} -ACCEPT_UNSOLICITED_RESPONSE_NOT_ENABLE = 0 -ACCEPT_UNSOLICITED_RESPONSE_ENABLE = 1 -GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_CONTROL_CONTROLLER_RESET' -GLOBAL_CONTROL_CONTROLLER_RESET__enumvalues = { - 0: 'CONTROLLER_RESET_AZ_CONTROLLER_IN_RESET', - 1: 'CONTROLLER_RESET_AZ_CONTROLLER_NOT_IN_RESET', -} -CONTROLLER_RESET_AZ_CONTROLLER_IN_RESET = 0 -CONTROLLER_RESET_AZ_CONTROLLER_NOT_IN_RESET = 1 -GLOBAL_CONTROL_CONTROLLER_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_CONTROL_FLUSH_CONTROL' -GLOBAL_CONTROL_FLUSH_CONTROL__enumvalues = { - 0: 'FLUSH_CONTROL_FLUSH_NOT_STARTED', - 1: 'FLUSH_CONTROL_FLUSH_STARTED', -} -FLUSH_CONTROL_FLUSH_NOT_STARTED = 0 -FLUSH_CONTROL_FLUSH_STARTED = 1 -GLOBAL_CONTROL_FLUSH_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'GLOBAL_STATUS_FLUSH_STATUS' -GLOBAL_STATUS_FLUSH_STATUS__enumvalues = { - 0: 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_NOT_ENDED', - 1: 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_ENDED', -} -GLOBAL_STATUS_FLUSH_STATUS_FLUSH_NOT_ENDED = 0 -GLOBAL_STATUS_FLUSH_STATUS_FLUSH_ENDED = 1 -GLOBAL_STATUS_FLUSH_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY' -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY__enumvalues = { - 0: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_NOT_BUSY', - 1: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_IS_BUSY', -} -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_NOT_BUSY = 0 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_IS_BUSY = 1 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY = ctypes.c_uint32 # enum - -# values for enumeration 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID' -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID__enumvalues = { - 0: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_NO_IMMEDIATE_RESPONSE_VALID', - 1: 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_IMMEDIATE_RESPONSE_VALID', -} -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_NO_IMMEDIATE_RESPONSE_VALID = 0 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_IMMEDIATE_RESPONSE_VALID = 1 -IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID = ctypes.c_uint32 # enum - -# values for enumeration 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL' -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL__enumvalues = { - 0: 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 1: 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_ENABLED', -} -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_DISABLED = 0 -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_ENABLED = 1 -RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL' -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL__enumvalues = { - 0: 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 1: 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_ENABLED', -} -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_DISABLED = 0 -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_ENABLED = 1 -RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_0_SYNCHRONIZATION' -STREAM_0_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_0_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_0_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_0_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_0_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_0_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_10_SYNCHRONIZATION' -STREAM_10_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_10_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_10_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_10_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_10_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_10_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_11_SYNCHRONIZATION' -STREAM_11_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_11_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_11_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_11_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_11_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_11_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_12_SYNCHRONIZATION' -STREAM_12_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_12_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_12_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_12_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_12_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_12_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_13_SYNCHRONIZATION' -STREAM_13_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_13_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_13_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_13_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_13_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_13_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_14_SYNCHRONIZATION' -STREAM_14_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_14_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_14_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_14_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_14_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_14_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_15_SYNCHRONIZATION' -STREAM_15_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_15_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_15_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_15_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_15_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_15_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_1_SYNCHRONIZATION' -STREAM_1_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_1_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_1_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_1_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_1_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_1_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_2_SYNCHRONIZATION' -STREAM_2_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_2_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_2_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_2_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_2_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_2_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_3_SYNCHRONIZATION' -STREAM_3_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_3_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 1: 'STREAM_3_SYNCHRONIZATION_STEAM_STOPPED', -} -STREAM_3_SYNCHRONIZATION_STEAM_NOT_STOPPED = 0 -STREAM_3_SYNCHRONIZATION_STEAM_STOPPED = 1 -STREAM_3_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_4_SYNCHRONIZATION' -STREAM_4_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_4_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_4_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_4_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_4_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_4_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_5_SYNCHRONIZATION' -STREAM_5_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_5_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_5_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_5_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_5_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_5_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_6_SYNCHRONIZATION' -STREAM_6_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_6_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_6_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_6_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_6_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_6_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_7_SYNCHRONIZATION' -STREAM_7_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_7_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_7_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_7_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_7_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_7_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_8_SYNCHRONIZATION' -STREAM_8_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_8_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_8_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_8_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_8_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_8_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'STREAM_9_SYNCHRONIZATION' -STREAM_9_SYNCHRONIZATION__enumvalues = { - 0: 'STREAM_9_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 1: 'STREAM_9_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', -} -STREAM_9_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED = 0 -STREAM_9_SYNCHRONIZATION_STEAM_STOPPED_RESERVED = 1 -STREAM_9_SYNCHRONIZATION = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 5: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16 = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20 = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24 = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED = 5 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 5: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 6: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 7: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 8: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1 = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2 = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3 = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4 = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5 = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6 = 5 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7 = 6 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8 = 7 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED = 8 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 5: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 6: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 7: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1 = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3 = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED = 5 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED = 6 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED = 7 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 2: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 3: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 4: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1 = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2 = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED = 2 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4 = 3 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED = 4 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_NOT_ENABLE', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_ENABLE', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_NOT_ENABLE = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_ENABLE = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_IS_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_NOT_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_IS_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_NOT_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_NOT_SET', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_IS_SET', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_NOT_SET = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_IS_SET = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ZERO', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ONE', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ZERO = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ONE = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG' -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG__enumvalues = { - 0: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_NOT_ON', - 1: 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_ON', -} -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_NOT_ON = 0 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_ON = 1 -AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE' -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_0', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_1', - 2: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_2', - 3: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_3', - 4: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_4', - 5: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_5', - 6: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_6', - 7: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_7', - 8: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_8', - 9: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_9', - 10: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_10', - 11: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_11', - 12: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_12', - 13: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_13', - 14: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_14', - 15: 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_15', -} -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_0 = 0 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_1 = 1 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_2 = 2 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_3 = 3 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_4 = 4 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_5 = 5 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_6 = 6 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_7 = 7 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_8 = 8 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_9 = 9 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_10 = 10 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_11 = 11 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_12 = 12 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_13 = 13 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_14 = 14 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_15 = 15 -AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT' -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_NO_INFO_OR_PERMITTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_FORBIDDEN', -} -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_NO_INFO_OR_PERMITTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_FORBIDDEN = 1 -AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE' -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', -} -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE = 0 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE = 1 -AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE' -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', -} -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED = 0 -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED = 1 -AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE' -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_SHUT_OFF', - 1: 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_DRIVEN', -} -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_SHUT_OFF = 0 -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_DRIVEN = 1 -AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET' -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET__enumvalues = { - 0: 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_NOT_RESET', - 1: 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_RESET_REFCLK_LOGIC', -} -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_NOT_RESET = 0 -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_RESET_REFCLK_LOGIC = 1 -AZALIA_SOFT_RESET_REFCLK_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_DIS_CTRL' -MEM_PWR_DIS_CTRL__enumvalues = { - 0: 'ENABLE_MEM_PWR_CTRL', - 1: 'DISABLE_MEM_PWR_CTRL', -} -ENABLE_MEM_PWR_CTRL = 0 -DISABLE_MEM_PWR_CTRL = 1 -MEM_PWR_DIS_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_FORCE_CTRL' -MEM_PWR_FORCE_CTRL__enumvalues = { - 0: 'NO_FORCE_REQUEST', - 1: 'FORCE_LIGHT_SLEEP_REQUEST', - 2: 'FORCE_DEEP_SLEEP_REQUEST', - 3: 'FORCE_SHUT_DOWN_REQUEST', -} -NO_FORCE_REQUEST = 0 -FORCE_LIGHT_SLEEP_REQUEST = 1 -FORCE_DEEP_SLEEP_REQUEST = 2 -FORCE_SHUT_DOWN_REQUEST = 3 -MEM_PWR_FORCE_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_FORCE_CTRL2' -MEM_PWR_FORCE_CTRL2__enumvalues = { - 0: 'NO_FORCE_REQ', - 1: 'FORCE_LIGHT_SLEEP_REQ', -} -NO_FORCE_REQ = 0 -FORCE_LIGHT_SLEEP_REQ = 1 -MEM_PWR_FORCE_CTRL2 = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_SEL_CTRL' -MEM_PWR_SEL_CTRL__enumvalues = { - 0: 'DYNAMIC_SHUT_DOWN_ENABLE', - 1: 'DYNAMIC_DEEP_SLEEP_ENABLE', - 2: 'DYNAMIC_LIGHT_SLEEP_ENABLE', -} -DYNAMIC_SHUT_DOWN_ENABLE = 0 -DYNAMIC_DEEP_SLEEP_ENABLE = 1 -DYNAMIC_LIGHT_SLEEP_ENABLE = 2 -MEM_PWR_SEL_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'MEM_PWR_SEL_CTRL2' -MEM_PWR_SEL_CTRL2__enumvalues = { - 0: 'DYNAMIC_DEEP_SLEEP_EN', - 1: 'DYNAMIC_LIGHT_SLEEP_EN', -} -DYNAMIC_DEEP_SLEEP_EN = 0 -DYNAMIC_LIGHT_SLEEP_EN = 1 -MEM_PWR_SEL_CTRL2 = ctypes.c_uint32 # enum - -# values for enumeration 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY' -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY__enumvalues = { - 0: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_ALL', - 1: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_6', - 2: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_5', - 3: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_4', - 4: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_3', - 5: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_2', - 6: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_1', - 7: 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_0', -} -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_ALL = 0 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_6 = 1 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_5 = 2 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_4 = 3 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_3 = 4 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_2 = 5 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_1 = 6 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_0 = 7 -CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY = ctypes.c_uint32 # enum - -# values for enumeration 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY' -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY__enumvalues = { - 0: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_ALL', - 1: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_6', - 2: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_5', - 3: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_4', - 4: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_3', - 5: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_2', - 6: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_1', - 7: 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_0', -} -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_ALL = 0 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_6 = 1 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_5 = 2 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_4 = 3 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_3 = 4 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_2 = 5 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_1 = 6 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_0 = 7 -CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 5: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16 = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20 = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24 = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED = 5 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 5: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 6: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 7: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 8: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1 = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2 = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3 = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4 = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5 = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6 = 5 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7 = 6 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8 = 7 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED = 8 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 5: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 6: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 7: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1 = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3 = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED = 5 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED = 6 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED = 7 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 2: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 3: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 4: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1 = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2 = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED = 2 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4 = 3 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED = 4 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN' -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 1: 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', -} -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED = 0 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED = 1 -AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE' -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE__enumvalues = { - 0: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_SHUT_OFF', - 1: 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_DRIVEN', -} -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_SHUT_OFF = 0 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_DRIVEN = 1 -AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET' -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET__enumvalues = { - 0: 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_NOT_RESET', - 1: 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_DO_RESET', -} -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_NOT_RESET = 0 -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_DO_RESET = 1 -AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'AZ_LATENCY_COUNTER_CONTROL' -AZ_LATENCY_COUNTER_CONTROL__enumvalues = { - 0: 'AZ_LATENCY_COUNTER_NO_RESET', - 1: 'AZ_LATENCY_COUNTER_RESET_DONE', -} -AZ_LATENCY_COUNTER_NO_RESET = 0 -AZ_LATENCY_COUNTER_RESET_DONE = 1 -AZ_LATENCY_COUNTER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_NOT_SET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_SET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_NOT_SET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_SET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_NOT_SET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_SET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_NOT_SET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_SET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_DISABLED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLED', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_DISABLED = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLED = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_NOT_SET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_SET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_NOT_SET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_SET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_DISABLED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLED', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_DISABLED = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLED = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_DISABLED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_ENABLED', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_DISABLED = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_ENABLED = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RESET', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_IS_RESET', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RESET = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_IS_RESET = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RUN', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_DO_RUN', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RUN = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_DO_RUN = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY' -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_NO_TRAFFIC_PRIORITY', - 1: 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_YES_TRAFFIC_PRIORITY', -} -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_NO_TRAFFIC_PRIORITY = 0 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_YES_TRAFFIC_PRIORITY = 1 -OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_16', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_20', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_24', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 5: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_8_RESERVED = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_16 = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_20 = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_24 = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_32_RESERVED = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_RESERVED = 5 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_1', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_2', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_3', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_4', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_5', - 5: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_6', - 6: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_7', - 7: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_8', - 8: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_9_RESERVED', - 9: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_10_RESERVED', - 10: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_11_RESERVED', - 11: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_12_RESERVED', - 12: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_13_RESERVED', - 13: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_14_RESERVED', - 14: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_15_RESERVED', - 15: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_16_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_1 = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_2 = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_3 = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_4 = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_5 = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_6 = 5 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_7 = 6 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_8 = 7 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_9_RESERVED = 8 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_10_RESERVED = 9 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_11_RESERVED = 10 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_12_RESERVED = 11 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_13_RESERVED = 12 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_14_RESERVED = 13 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_15_RESERVED = 14 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_16_RESERVED = 15 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 5: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 6: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 7: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY1 = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY3 = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED = 5 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED = 6 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED = 7 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 2: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 3: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 4: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY1 = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY2 = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED = 2 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY4 = 3 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED = 4 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE = ctypes.c_uint32 # enum - -# values for enumeration 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE' -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE__enumvalues = { - 0: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 1: 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', -} -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_48KHZ = 0 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_44P1KHZ = 1 -OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_FORMAT_OVERRIDE', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_FORMAT_OVERRIDE = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 9: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED = 8 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE' -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 1: 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', -} -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE = 0 -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE = 1 -AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE' -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABLILITY', - 1: 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABLILITY', -} -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABLILITY = 0 -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABLILITY = 1 -AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER_PRESENT', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER_PRESENT = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 9: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED = 8 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_NOT_BALANCED', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_NOT_BALANCED = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_EAPD_PIN', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_EAPD_PIN', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_EAPD_PIN = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_EAPD_PIN = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_JACK_DETECTION_CAPABILITY', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_DETECTION_CAPABILITY', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_JACK_DETECTION_CAPABILITY = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_DETECTION_CAPABILITY = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED' -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED__enumvalues = { - 0: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 1: 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', -} -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 0 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 1 -AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_DIGITAL', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_ANALOG = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_DIGITAL = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_FORMAT_OVERRIDE', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_FORMAT_OVERRIDE = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_NO_PROCESSING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_PROCESSING_CAPABILITIES', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_NO_PROCESSING_CAPABILITIES = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_PROCESSING_CAPABILITIES = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NOT_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NOT_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 9: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED = 8 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESING_CAPABILITIES', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESING_CAPABILITIES', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESING_CAPABILITIES = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESING_CAPABILITIES = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 2: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 3: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 4: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 5: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 6: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 7: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 8: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 9: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED = 2 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED = 3 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED = 4 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED = 5 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED = 6 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED = 7 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED = 8 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED = 9 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_NOT_BALANCED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_NOT_BALANCED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_NOT_ENABLED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_ENABLED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_NOT_ENABLED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_ENABLED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_NO_EAPD_PIN', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_HAVE_EAPD_PIN', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_NO_EAPD_PIN = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_HAVE_EAPD_PIN = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_NOT_ENABLED', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_ENABLED', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_NOT_ENABLED = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_ENABLED = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_JACK_PRESENCE_DETECTION_CAPABILITY', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_PRESENCE_DETECTION_CAPABILITY', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_JACK_PRESENCE_DETECTION_CAPABILITY = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_PRESENCE_DETECTION_CAPABILITY = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE = ctypes.c_uint32 # enum - -# values for enumeration 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED' -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED__enumvalues = { - 0: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 1: 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', -} -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 0 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT = 1 -AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_BITS_PER_COMPONENT_ENUM' -DSCC_BITS_PER_COMPONENT_ENUM__enumvalues = { - 8: 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT', - 10: 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT', - 12: 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT', -} -DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT = 8 -DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT = 10 -DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT = 12 -DSCC_BITS_PER_COMPONENT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_DSC_VERSION_MAJOR_ENUM' -DSCC_DSC_VERSION_MAJOR_ENUM__enumvalues = { - 1: 'DSCC_DSC_VERSION_MAJOR_ENUM_DSC_1_X_MAJOR_VERSION', -} -DSCC_DSC_VERSION_MAJOR_ENUM_DSC_1_X_MAJOR_VERSION = 1 -DSCC_DSC_VERSION_MAJOR_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_DSC_VERSION_MINOR_ENUM' -DSCC_DSC_VERSION_MINOR_ENUM__enumvalues = { - 1: 'DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_1_MINOR_VERSION', - 2: 'DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_2_MINOR_VERSION', -} -DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_1_MINOR_VERSION = 1 -DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_2_MINOR_VERSION = 2 -DSCC_DSC_VERSION_MINOR_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_ENABLE_ENUM' -DSCC_ENABLE_ENUM__enumvalues = { - 0: 'DSCC_ENABLE_ENUM_DISABLED', - 1: 'DSCC_ENABLE_ENUM_ENABLED', -} -DSCC_ENABLE_ENUM_DISABLED = 0 -DSCC_ENABLE_ENUM_ENABLED = 1 -DSCC_ENABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_ICH_RESET_ENUM' -DSCC_ICH_RESET_ENUM__enumvalues = { - 1: 'DSCC_ICH_RESET_ENUM_SLICE0_ICH_RESET', - 2: 'DSCC_ICH_RESET_ENUM_SLICE1_ICH_RESET', - 4: 'DSCC_ICH_RESET_ENUM_SLICE2_ICH_RESET', - 8: 'DSCC_ICH_RESET_ENUM_SLICE3_ICH_RESET', -} -DSCC_ICH_RESET_ENUM_SLICE0_ICH_RESET = 1 -DSCC_ICH_RESET_ENUM_SLICE1_ICH_RESET = 2 -DSCC_ICH_RESET_ENUM_SLICE2_ICH_RESET = 4 -DSCC_ICH_RESET_ENUM_SLICE3_ICH_RESET = 8 -DSCC_ICH_RESET_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_LINEBUF_DEPTH_ENUM' -DSCC_LINEBUF_DEPTH_ENUM__enumvalues = { - 8: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_8_BIT', - 9: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_9_BIT', - 10: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_10_BIT', - 11: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_11_BIT', - 12: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_12_BIT', - 13: 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_13_BIT', -} -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_8_BIT = 8 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_9_BIT = 9 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_10_BIT = 10 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_11_BIT = 11 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_12_BIT = 12 -DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_13_BIT = 13 -DSCC_LINEBUF_DEPTH_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_MEM_PWR_DIS_ENUM' -DSCC_MEM_PWR_DIS_ENUM__enumvalues = { - 0: 'DSCC_MEM_PWR_DIS_ENUM_REQUEST_EN', - 1: 'DSCC_MEM_PWR_DIS_ENUM_REQUEST_DIS', -} -DSCC_MEM_PWR_DIS_ENUM_REQUEST_EN = 0 -DSCC_MEM_PWR_DIS_ENUM_REQUEST_DIS = 1 -DSCC_MEM_PWR_DIS_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCC_MEM_PWR_FORCE_ENUM' -DSCC_MEM_PWR_FORCE_ENUM__enumvalues = { - 0: 'DSCC_MEM_PWR_FORCE_ENUM_NO_FORCE_REQUEST', - 1: 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_LIGHT_SLEEP_REQUEST', - 2: 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_DEEP_SLEEP_REQUEST', - 3: 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_SHUT_DOWN_REQUEST', -} -DSCC_MEM_PWR_FORCE_ENUM_NO_FORCE_REQUEST = 0 -DSCC_MEM_PWR_FORCE_ENUM_FORCE_LIGHT_SLEEP_REQUEST = 1 -DSCC_MEM_PWR_FORCE_ENUM_FORCE_DEEP_SLEEP_REQUEST = 2 -DSCC_MEM_PWR_FORCE_ENUM_FORCE_SHUT_DOWN_REQUEST = 3 -DSCC_MEM_PWR_FORCE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'POWER_STATE_ENUM' -POWER_STATE_ENUM__enumvalues = { - 0: 'POWER_STATE_ENUM_ON', - 1: 'POWER_STATE_ENUM_LS', - 2: 'POWER_STATE_ENUM_DS', - 3: 'POWER_STATE_ENUM_SD', -} -POWER_STATE_ENUM_ON = 0 -POWER_STATE_ENUM_LS = 1 -POWER_STATE_ENUM_DS = 2 -POWER_STATE_ENUM_SD = 3 -POWER_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCCIF_BITS_PER_COMPONENT_ENUM' -DSCCIF_BITS_PER_COMPONENT_ENUM__enumvalues = { - 8: 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT', - 10: 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT', - 12: 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT', -} -DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT = 8 -DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT = 10 -DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT = 12 -DSCCIF_BITS_PER_COMPONENT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCCIF_ENABLE_ENUM' -DSCCIF_ENABLE_ENUM__enumvalues = { - 0: 'DSCCIF_ENABLE_ENUM_DISABLED', - 1: 'DSCCIF_ENABLE_ENUM_ENABLED', -} -DSCCIF_ENABLE_ENUM_DISABLED = 0 -DSCCIF_ENABLE_ENUM_ENABLED = 1 -DSCCIF_ENABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM' -DSCCIF_INPUT_PIXEL_FORMAT_ENUM__enumvalues = { - 0: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_RGB', - 1: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_YCBCR_444', - 2: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_SIMPLE_YCBCR_422', - 3: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_422', - 4: 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_420', -} -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_RGB = 0 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_YCBCR_444 = 1 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_SIMPLE_YCBCR_422 = 2 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_422 = 3 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_420 = 4 -DSCCIF_INPUT_PIXEL_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'CLOCK_GATING_DISABLE_ENUM' -CLOCK_GATING_DISABLE_ENUM__enumvalues = { - 0: 'CLOCK_GATING_DISABLE_ENUM_ENABLED', - 1: 'CLOCK_GATING_DISABLE_ENUM_DISABLED', -} -CLOCK_GATING_DISABLE_ENUM_ENABLED = 0 -CLOCK_GATING_DISABLE_ENUM_DISABLED = 1 -CLOCK_GATING_DISABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'ENABLE_ENUM' -ENABLE_ENUM__enumvalues = { - 0: 'ENABLE_ENUM_DISABLED', - 1: 'ENABLE_ENUM_ENABLED', -} -ENABLE_ENUM_DISABLED = 0 -ENABLE_ENUM_ENABLED = 1 -ENABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'TEST_CLOCK_MUX_SELECT_ENUM' -TEST_CLOCK_MUX_SELECT_ENUM__enumvalues = { - 0: 'TEST_CLOCK_MUX_SELECT_DISPCLK_P', - 1: 'TEST_CLOCK_MUX_SELECT_DISPCLK_G', - 2: 'TEST_CLOCK_MUX_SELECT_DISPCLK_R', - 3: 'TEST_CLOCK_MUX_SELECT_DSCCLK_P', - 4: 'TEST_CLOCK_MUX_SELECT_DSCCLK_G', - 5: 'TEST_CLOCK_MUX_SELECT_DSCCLK_R', -} -TEST_CLOCK_MUX_SELECT_DISPCLK_P = 0 -TEST_CLOCK_MUX_SELECT_DISPCLK_G = 1 -TEST_CLOCK_MUX_SELECT_DISPCLK_R = 2 -TEST_CLOCK_MUX_SELECT_DSCCLK_P = 3 -TEST_CLOCK_MUX_SELECT_DSCCLK_G = 4 -TEST_CLOCK_MUX_SELECT_DSCCLK_R = 5 -TEST_CLOCK_MUX_SELECT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_CRC_CONT_EN_ENUM' -DWB_CRC_CONT_EN_ENUM__enumvalues = { - 0: 'DWB_CRC_CONT_EN_ONE_SHOT', - 1: 'DWB_CRC_CONT_EN_CONT', -} -DWB_CRC_CONT_EN_ONE_SHOT = 0 -DWB_CRC_CONT_EN_CONT = 1 -DWB_CRC_CONT_EN_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_CRC_SRC_SEL_ENUM' -DWB_CRC_SRC_SEL_ENUM__enumvalues = { - 0: 'DWB_CRC_SRC_SEL_DWB_IN', - 1: 'DWB_CRC_SRC_SEL_OGAM_OUT', - 2: 'DWB_CRC_SRC_SEL_DWB_OUT', -} -DWB_CRC_SRC_SEL_DWB_IN = 0 -DWB_CRC_SRC_SEL_OGAM_OUT = 1 -DWB_CRC_SRC_SEL_DWB_OUT = 2 -DWB_CRC_SRC_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_DATA_OVERFLOW_INT_TYPE_ENUM' -DWB_DATA_OVERFLOW_INT_TYPE_ENUM__enumvalues = { - 0: 'DWB_DATA_OVERFLOW_INT_TYPE_0', - 1: 'DWB_DATA_OVERFLOW_INT_TYPE_1', -} -DWB_DATA_OVERFLOW_INT_TYPE_0 = 0 -DWB_DATA_OVERFLOW_INT_TYPE_1 = 1 -DWB_DATA_OVERFLOW_INT_TYPE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_DATA_OVERFLOW_TYPE_ENUM' -DWB_DATA_OVERFLOW_TYPE_ENUM__enumvalues = { - 0: 'DWB_DATA_OVERFLOW_TYPE_NO_OVERFLOW', - 1: 'DWB_DATA_OVERFLOW_TYPE_BUFFER', - 2: 'DWB_DATA_OVERFLOW_TYPE_VUPDATE', - 3: 'DWB_DATA_OVERFLOW_TYPE_VREADY', -} -DWB_DATA_OVERFLOW_TYPE_NO_OVERFLOW = 0 -DWB_DATA_OVERFLOW_TYPE_BUFFER = 1 -DWB_DATA_OVERFLOW_TYPE_VUPDATE = 2 -DWB_DATA_OVERFLOW_TYPE_VREADY = 3 -DWB_DATA_OVERFLOW_TYPE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_DEBUG_SEL_ENUM' -DWB_DEBUG_SEL_ENUM__enumvalues = { - 0: 'DWB_DEBUG_SEL_FC', - 1: 'DWB_DEBUG_SEL_RESERVED', - 2: 'DWB_DEBUG_SEL_DWBCP', - 3: 'DWB_DEBUG_SEL_PERFMON', -} -DWB_DEBUG_SEL_FC = 0 -DWB_DEBUG_SEL_RESERVED = 1 -DWB_DEBUG_SEL_DWBCP = 2 -DWB_DEBUG_SEL_PERFMON = 3 -DWB_DEBUG_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_MEM_PWR_FORCE_ENUM' -DWB_MEM_PWR_FORCE_ENUM__enumvalues = { - 0: 'DWB_MEM_PWR_FORCE_DIS', - 1: 'DWB_MEM_PWR_FORCE_LS', - 2: 'DWB_MEM_PWR_FORCE_DS', - 3: 'DWB_MEM_PWR_FORCE_SD', -} -DWB_MEM_PWR_FORCE_DIS = 0 -DWB_MEM_PWR_FORCE_LS = 1 -DWB_MEM_PWR_FORCE_DS = 2 -DWB_MEM_PWR_FORCE_SD = 3 -DWB_MEM_PWR_FORCE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_MEM_PWR_STATE_ENUM' -DWB_MEM_PWR_STATE_ENUM__enumvalues = { - 0: 'DWB_MEM_PWR_STATE_ON', - 1: 'DWB_MEM_PWR_STATE_LS', - 2: 'DWB_MEM_PWR_STATE_DS', - 3: 'DWB_MEM_PWR_STATE_SD', -} -DWB_MEM_PWR_STATE_ON = 0 -DWB_MEM_PWR_STATE_LS = 1 -DWB_MEM_PWR_STATE_DS = 2 -DWB_MEM_PWR_STATE_SD = 3 -DWB_MEM_PWR_STATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_TEST_CLK_SEL_ENUM' -DWB_TEST_CLK_SEL_ENUM__enumvalues = { - 0: 'DWB_TEST_CLK_SEL_R', - 1: 'DWB_TEST_CLK_SEL_G', - 2: 'DWB_TEST_CLK_SEL_P', -} -DWB_TEST_CLK_SEL_R = 0 -DWB_TEST_CLK_SEL_G = 1 -DWB_TEST_CLK_SEL_P = 2 -DWB_TEST_CLK_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'FC_EYE_SELECTION_ENUM' -FC_EYE_SELECTION_ENUM__enumvalues = { - 0: 'FC_EYE_SELECTION_STEREO_DIS', - 1: 'FC_EYE_SELECTION_LEFT_EYE', - 2: 'FC_EYE_SELECTION_RIGHT_EYE', -} -FC_EYE_SELECTION_STEREO_DIS = 0 -FC_EYE_SELECTION_LEFT_EYE = 1 -FC_EYE_SELECTION_RIGHT_EYE = 2 -FC_EYE_SELECTION_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'FC_FRAME_CAPTURE_RATE_ENUM' -FC_FRAME_CAPTURE_RATE_ENUM__enumvalues = { - 0: 'FC_FRAME_CAPTURE_RATE_FULL', - 1: 'FC_FRAME_CAPTURE_RATE_HALF', - 2: 'FC_FRAME_CAPTURE_RATE_THIRD', - 3: 'FC_FRAME_CAPTURE_RATE_QUARTER', -} -FC_FRAME_CAPTURE_RATE_FULL = 0 -FC_FRAME_CAPTURE_RATE_HALF = 1 -FC_FRAME_CAPTURE_RATE_THIRD = 2 -FC_FRAME_CAPTURE_RATE_QUARTER = 3 -FC_FRAME_CAPTURE_RATE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'FC_STEREO_EYE_POLARITY_ENUM' -FC_STEREO_EYE_POLARITY_ENUM__enumvalues = { - 0: 'FC_STEREO_EYE_POLARITY_LEFT', - 1: 'FC_STEREO_EYE_POLARITY_RIGHT', -} -FC_STEREO_EYE_POLARITY_LEFT = 0 -FC_STEREO_EYE_POLARITY_RIGHT = 1 -FC_STEREO_EYE_POLARITY_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_GAMUT_REMAP_COEF_FORMAT_ENUM' -DWB_GAMUT_REMAP_COEF_FORMAT_ENUM__enumvalues = { - 0: 'DWB_GAMUT_REMAP_COEF_FORMAT_S2_13', - 1: 'DWB_GAMUT_REMAP_COEF_FORMAT_S3_12', -} -DWB_GAMUT_REMAP_COEF_FORMAT_S2_13 = 0 -DWB_GAMUT_REMAP_COEF_FORMAT_S3_12 = 1 -DWB_GAMUT_REMAP_COEF_FORMAT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_GAMUT_REMAP_MODE_ENUM' -DWB_GAMUT_REMAP_MODE_ENUM__enumvalues = { - 0: 'DWB_GAMUT_REMAP_MODE_BYPASS', - 1: 'DWB_GAMUT_REMAP_MODE_COEF_A', - 2: 'DWB_GAMUT_REMAP_MODE_COEF_B', - 3: 'DWB_GAMUT_REMAP_MODE_RESERVED', -} -DWB_GAMUT_REMAP_MODE_BYPASS = 0 -DWB_GAMUT_REMAP_MODE_COEF_A = 1 -DWB_GAMUT_REMAP_MODE_COEF_B = 2 -DWB_GAMUT_REMAP_MODE_RESERVED = 3 -DWB_GAMUT_REMAP_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_LUT_NUM_SEG' -DWB_LUT_NUM_SEG__enumvalues = { - 0: 'DWB_SEGMENTS_1', - 1: 'DWB_SEGMENTS_2', - 2: 'DWB_SEGMENTS_4', - 3: 'DWB_SEGMENTS_8', - 4: 'DWB_SEGMENTS_16', - 5: 'DWB_SEGMENTS_32', - 6: 'DWB_SEGMENTS_64', - 7: 'DWB_SEGMENTS_128', -} -DWB_SEGMENTS_1 = 0 -DWB_SEGMENTS_2 = 1 -DWB_SEGMENTS_4 = 2 -DWB_SEGMENTS_8 = 3 -DWB_SEGMENTS_16 = 4 -DWB_SEGMENTS_32 = 5 -DWB_SEGMENTS_64 = 6 -DWB_SEGMENTS_128 = 7 -DWB_LUT_NUM_SEG = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_LUT_CONFIG_MODE_ENUM' -DWB_OGAM_LUT_CONFIG_MODE_ENUM__enumvalues = { - 0: 'DWB_OGAM_LUT_CONFIG_MODE_DIFF', - 1: 'DWB_OGAM_LUT_CONFIG_MODE_SAME', -} -DWB_OGAM_LUT_CONFIG_MODE_DIFF = 0 -DWB_OGAM_LUT_CONFIG_MODE_SAME = 1 -DWB_OGAM_LUT_CONFIG_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_LUT_HOST_SEL_ENUM' -DWB_OGAM_LUT_HOST_SEL_ENUM__enumvalues = { - 0: 'DWB_OGAM_LUT_HOST_SEL_RAMA', - 1: 'DWB_OGAM_LUT_HOST_SEL_RAMB', -} -DWB_OGAM_LUT_HOST_SEL_RAMA = 0 -DWB_OGAM_LUT_HOST_SEL_RAMB = 1 -DWB_OGAM_LUT_HOST_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_LUT_READ_COLOR_SEL_ENUM' -DWB_OGAM_LUT_READ_COLOR_SEL_ENUM__enumvalues = { - 0: 'DWB_OGAM_LUT_READ_COLOR_SEL_B', - 1: 'DWB_OGAM_LUT_READ_COLOR_SEL_G', - 2: 'DWB_OGAM_LUT_READ_COLOR_SEL_R', - 3: 'DWB_OGAM_LUT_READ_COLOR_SEL_RESERVED', -} -DWB_OGAM_LUT_READ_COLOR_SEL_B = 0 -DWB_OGAM_LUT_READ_COLOR_SEL_G = 1 -DWB_OGAM_LUT_READ_COLOR_SEL_R = 2 -DWB_OGAM_LUT_READ_COLOR_SEL_RESERVED = 3 -DWB_OGAM_LUT_READ_COLOR_SEL_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_LUT_READ_DBG_ENUM' -DWB_OGAM_LUT_READ_DBG_ENUM__enumvalues = { - 0: 'DWB_OGAM_LUT_READ_DBG_DISABLE', - 1: 'DWB_OGAM_LUT_READ_DBG_ENABLE', -} -DWB_OGAM_LUT_READ_DBG_DISABLE = 0 -DWB_OGAM_LUT_READ_DBG_ENABLE = 1 -DWB_OGAM_LUT_READ_DBG_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_MODE_ENUM' -DWB_OGAM_MODE_ENUM__enumvalues = { - 0: 'DWB_OGAM_MODE_BYPASS', - 1: 'DWB_OGAM_MODE_RESERVED', - 2: 'DWB_OGAM_MODE_RAM_LUT_ENABLED', -} -DWB_OGAM_MODE_BYPASS = 0 -DWB_OGAM_MODE_RESERVED = 1 -DWB_OGAM_MODE_RAM_LUT_ENABLED = 2 -DWB_OGAM_MODE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_PWL_DISABLE_ENUM' -DWB_OGAM_PWL_DISABLE_ENUM__enumvalues = { - 0: 'DWB_OGAM_PWL_DISABLE_FALSE', - 1: 'DWB_OGAM_PWL_DISABLE_TRUE', -} -DWB_OGAM_PWL_DISABLE_FALSE = 0 -DWB_OGAM_PWL_DISABLE_TRUE = 1 -DWB_OGAM_PWL_DISABLE_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'DWB_OGAM_SELECT_ENUM' -DWB_OGAM_SELECT_ENUM__enumvalues = { - 0: 'DWB_OGAM_SELECT_A', - 1: 'DWB_OGAM_SELECT_B', -} -DWB_OGAM_SELECT_A = 0 -DWB_OGAM_SELECT_B = 1 -DWB_OGAM_SELECT_ENUM = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_LANE_CLK_EN' -RDPCSPIPE_CLOCK_CNTL_LANE_CLK_EN__enumvalues = { - 0: 'RDPCSPIPE_EXT_PCLK_EN_DISABLE', - 1: 'RDPCSPIPE_EXT_PCLK_EN_ENABLE', -} -RDPCSPIPE_EXT_PCLK_EN_DISABLE = 0 -RDPCSPIPE_EXT_PCLK_EN_ENABLE = 1 -RDPCSPIPE_CLOCK_CNTL_LANE_CLK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_RDPCS_APBCLK_EN' -RDPCSPIPE_CLOCK_CNTL_RDPCS_APBCLK_EN__enumvalues = { - 0: 'RDPCSPIPE_APBCLK_DISABLE', - 1: 'RDPCSPIPE_APBCLK_ENABLE', -} -RDPCSPIPE_APBCLK_DISABLE = 0 -RDPCSPIPE_APBCLK_ENABLE = 1 -RDPCSPIPE_CLOCK_CNTL_RDPCS_APBCLK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_CLOCK_ON' -RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_CLOCK_ON__enumvalues = { - 0: 'RDPCS_PIPE_CLK_CLOCK_OFF', - 1: 'RDPCS_PIPE_CLK_CLOCK_ON', -} -RDPCS_PIPE_CLK_CLOCK_OFF = 0 -RDPCS_PIPE_CLK_CLOCK_ON = 1 -RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_CLOCK_ON = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_EN' -RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_EN__enumvalues = { - 0: 'RDPCS_PIPE_CLK_DISABLE', - 1: 'RDPCS_PIPE_CLK_ENABLE', -} -RDPCS_PIPE_CLK_DISABLE = 0 -RDPCS_PIPE_CLK_ENABLE = 1 -RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_GATE_DIS' -RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_GATE_DIS__enumvalues = { - 0: 'RDPCS_PIPE_CLK_GATE_ENABLE', - 1: 'RDPCS_PIPE_CLK_GATE_DISABLE', -} -RDPCS_PIPE_CLK_GATE_ENABLE = 0 -RDPCS_PIPE_CLK_GATE_DISABLE = 1 -RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_GATE_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_PHYD32CLK_CLOCK_ON' -RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_PHYD32CLK_CLOCK_ON__enumvalues = { - 0: 'RDPCS_PIPE_PHYD32CLK_CLOCK_OFF', - 1: 'RDPCS_PIPE_PHYD32CLK_CLOCK_ON', -} -RDPCS_PIPE_PHYD32CLK_CLOCK_OFF = 0 -RDPCS_PIPE_PHYD32CLK_CLOCK_ON = 1 -RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_PHYD32CLK_CLOCK_ON = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_CLOCK_ON' -RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_CLOCK_ON__enumvalues = { - 0: 'RDPCSPIPE_SYMCLK_SRAMCLK_CLOCK_OFF', - 1: 'RDPCSPIPE_SYMCLK_SRAMCLK_CLOCK_ON', -} -RDPCSPIPE_SYMCLK_SRAMCLK_CLOCK_OFF = 0 -RDPCSPIPE_SYMCLK_SRAMCLK_CLOCK_ON = 1 -RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_CLOCK_ON = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_EN' -RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_EN__enumvalues = { - 0: 'RDPCSPIPE_SRAMCLK_DISABLE', - 1: 'RDPCSPIPE_SRAMCLK_ENABLE', -} -RDPCSPIPE_SRAMCLK_DISABLE = 0 -RDPCSPIPE_SRAMCLK_ENABLE = 1 -RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_GATE_DIS' -RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_GATE_DIS__enumvalues = { - 0: 'RDPCSPIPE_SRAMCLK_GATE_ENABLE', - 1: 'RDPCSPIPE_SRAMCLK_GATE_DISABLE', -} -RDPCSPIPE_SRAMCLK_GATE_ENABLE = 0 -RDPCSPIPE_SRAMCLK_GATE_DISABLE = 1 -RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_GATE_DIS = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_PASS' -RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_PASS__enumvalues = { - 0: 'RDPCSPIPE_SRAMCLK_NOT_PASS', - 1: 'RDPCSPIPE_SRAMCLK_PASS', -} -RDPCSPIPE_SRAMCLK_NOT_PASS = 0 -RDPCSPIPE_SRAMCLK_PASS = 1 -RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_PASS = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CNTL_RDPCS_PIPE_FIFO_EN' -RDPCSPIPE_CNTL_RDPCS_PIPE_FIFO_EN__enumvalues = { - 0: 'RDPCS_PIPE_FIFO_DISABLE', - 1: 'RDPCS_PIPE_FIFO_ENABLE', -} -RDPCS_PIPE_FIFO_DISABLE = 0 -RDPCS_PIPE_FIFO_ENABLE = 1 -RDPCSPIPE_CNTL_RDPCS_PIPE_FIFO_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CNTL_RDPCS_PIPE_FIFO_LANE_EN' -RDPCSPIPE_CNTL_RDPCS_PIPE_FIFO_LANE_EN__enumvalues = { - 0: 'RDPCS_PIPE_FIFO_LANE_DISABLE', - 1: 'RDPCS_PIPE_FIFO_LANE_ENABLE', -} -RDPCS_PIPE_FIFO_LANE_DISABLE = 0 -RDPCS_PIPE_FIFO_LANE_ENABLE = 1 -RDPCSPIPE_CNTL_RDPCS_PIPE_FIFO_LANE_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CNTL_RDPCS_PIPE_SOFT_RESET' -RDPCSPIPE_CNTL_RDPCS_PIPE_SOFT_RESET__enumvalues = { - 0: 'RDPCS_PIPE_SOFT_RESET_DISABLE', - 1: 'RDPCS_PIPE_SOFT_RESET_ENABLE', -} -RDPCS_PIPE_SOFT_RESET_DISABLE = 0 -RDPCS_PIPE_SOFT_RESET_ENABLE = 1 -RDPCSPIPE_CNTL_RDPCS_PIPE_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_CNTL_RDPCS_SRAM_SOFT_RESET' -RDPCSPIPE_CNTL_RDPCS_SRAM_SOFT_RESET__enumvalues = { - 0: 'RDPCSPIPE_SRAM_SRAM_RESET_DISABLE', - 1: 'RDPCSPIPE_SRAM_SRAM_RESET_ENABLE', -} -RDPCSPIPE_SRAM_SRAM_RESET_DISABLE = 0 -RDPCSPIPE_SRAM_SRAM_RESET_ENABLE = 1 -RDPCSPIPE_CNTL_RDPCS_SRAM_SOFT_RESET = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK' -RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK__enumvalues = { - 0: 'RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK_DISABLE', - 1: 'RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK_ENABLE', -} -RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK_DISABLE = 0 -RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK_ENABLE = 1 -RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_DBG_OCLA_SEL' -RDPCSPIPE_DBG_OCLA_SEL__enumvalues = { - 0: 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_7_0', - 1: 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_15_8', - 2: 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_23_16', - 3: 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_31_24', - 4: 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_39_32', - 5: 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_47_40', - 6: 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_55_48', - 7: 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_63_56', -} -RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_7_0 = 0 -RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_15_8 = 1 -RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_23_16 = 2 -RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_31_24 = 3 -RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_39_32 = 4 -RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_47_40 = 5 -RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_55_48 = 6 -RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_63_56 = 7 -RDPCSPIPE_DBG_OCLA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_ENC_TYPE' -RDPCSPIPE_ENC_TYPE__enumvalues = { - 0: 'HDMI_TMDS_OR_DP_8B10B', - 1: 'HDMI_FRL', - 2: 'DP_128B132B', -} -HDMI_TMDS_OR_DP_8B10B = 0 -HDMI_FRL = 1 -DP_128B132B = 2 -RDPCSPIPE_ENC_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_FIFO_EMPTY' -RDPCSPIPE_FIFO_EMPTY__enumvalues = { - 0: 'RDPCSPIPE_FIFO_NOT_EMPTY', - 1: 'RDPCSPIPE_FIFO_IS_EMPTY', -} -RDPCSPIPE_FIFO_NOT_EMPTY = 0 -RDPCSPIPE_FIFO_IS_EMPTY = 1 -RDPCSPIPE_FIFO_EMPTY = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_FIFO_FULL' -RDPCSPIPE_FIFO_FULL__enumvalues = { - 0: 'RDPCSPIPE_FIFO_NOT_FULL', - 1: 'RDPCSPIPE_FIFO_IS_FULL', -} -RDPCSPIPE_FIFO_NOT_FULL = 0 -RDPCSPIPE_FIFO_IS_FULL = 1 -RDPCSPIPE_FIFO_FULL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_APB_PSLVERR_MASK' -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_APB_PSLVERR_MASK__enumvalues = { - 0: 'RDPCSPIPE_APB_PSLVERR_MASK_DISABLE', - 1: 'RDPCSPIPE_APB_PSLVERR_MASK_ENABLE', -} -RDPCSPIPE_APB_PSLVERR_MASK_DISABLE = 0 -RDPCSPIPE_APB_PSLVERR_MASK_ENABLE = 1 -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_APB_PSLVERR_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE' -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE__enumvalues = { - 0: 'RDPCSPIPE_DPALT_4LANE_TOGGLE_2LANE', - 1: 'RDPCSPIPE_DPALT_4LANE_TOGGLE_4LANE', -} -RDPCSPIPE_DPALT_4LANE_TOGGLE_2LANE = 0 -RDPCSPIPE_DPALT_4LANE_TOGGLE_4LANE = 1 -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE_MASK' -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE_MASK__enumvalues = { - 0: 'RDPCSPIPE_DPALT_4LANE_TOGGLE_MASK_DISABLE', - 1: 'RDPCSPIPE_DPALT_4LANE_TOGGLE_MASK_ENABLE', -} -RDPCSPIPE_DPALT_4LANE_TOGGLE_MASK_DISABLE = 0 -RDPCSPIPE_DPALT_4LANE_TOGGLE_MASK_ENABLE = 1 -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE' -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE__enumvalues = { - 0: 'RDPCSPIPE_DPALT_DISABLE_TOGGLE_ENABLE', - 1: 'RDPCSPIPE_DPALT_DISABLE_TOGGLE_DISABLE', -} -RDPCSPIPE_DPALT_DISABLE_TOGGLE_ENABLE = 0 -RDPCSPIPE_DPALT_DISABLE_TOGGLE_DISABLE = 1 -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE_MASK' -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE_MASK__enumvalues = { - 0: 'RDPCSPIPE_DPALT_DISABLE_TOGGLE_MASK_DISABLE', - 1: 'RDPCSPIPE_DPALT_DISABLE_TOGGLE_MASK_ENABLE', -} -RDPCSPIPE_DPALT_DISABLE_TOGGLE_MASK_DISABLE = 0 -RDPCSPIPE_DPALT_DISABLE_TOGGLE_MASK_ENABLE = 1 -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_PIPE_FIFO_ERROR_MASK' -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_PIPE_FIFO_ERROR_MASK__enumvalues = { - 0: 'RDPCSPIPE_PIPE_FIFO_ERROR_MASK_DISABLE', - 1: 'RDPCSPIPE_PIPE_FIFO_ERROR_MASK_ENABLE', -} -RDPCSPIPE_PIPE_FIFO_ERROR_MASK_DISABLE = 0 -RDPCSPIPE_PIPE_FIFO_ERROR_MASK_ENABLE = 1 -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_PIPE_FIFO_ERROR_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_REG_FIFO_ERROR_MASK' -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_REG_FIFO_ERROR_MASK__enumvalues = { - 0: 'RDPCSPIPE_REG_FIFO_ERROR_MASK_DISABLE', - 1: 'RDPCSPIPE_REG_FIFO_ERROR_MASK_ENABLE', -} -RDPCSPIPE_REG_FIFO_ERROR_MASK_DISABLE = 0 -RDPCSPIPE_REG_FIFO_ERROR_MASK_ENABLE = 1 -RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_REG_FIFO_ERROR_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK' -RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK__enumvalues = { - 0: 'RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK_DISABLE', - 1: 'RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK_ENABLE', -} -RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK_DISABLE = 0 -RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK_ENABLE = 1 -RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PACK_MODE' -RDPCSPIPE_PACK_MODE__enumvalues = { - 0: 'TIGHT_PACK', - 1: 'LOOSE_PACK', -} -TIGHT_PACK = 0 -LOOSE_PACK = 1 -RDPCSPIPE_PACK_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_CR_MUX_SEL' -RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_CR_MUX_SEL__enumvalues = { - 0: 'RDPCSPIPE_PHY_CR_MUX_SEL_FOR_USB', - 1: 'RDPCSPIPE_PHY_CR_MUX_SEL_FOR_DC', -} -RDPCSPIPE_PHY_CR_MUX_SEL_FOR_USB = 0 -RDPCSPIPE_PHY_CR_MUX_SEL_FOR_DC = 1 -RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_CR_MUX_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_CR_PARA_SEL' -RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_CR_PARA_SEL__enumvalues = { - 0: 'RDPCSPIPE_PHY_CR_PARA_SEL_JTAG', - 1: 'RDPCSPIPE_PHY_CR_PARA_SEL_CR', -} -RDPCSPIPE_PHY_CR_PARA_SEL_JTAG = 0 -RDPCSPIPE_PHY_CR_PARA_SEL_CR = 1 -RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_CR_PARA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_REF_RANGE' -RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_REF_RANGE__enumvalues = { - 0: 'RDPCSPIPE_PHY_REF_RANGE_0', - 1: 'RDPCSPIPE_PHY_REF_RANGE_1', - 2: 'RDPCSPIPE_PHY_REF_RANGE_2', - 3: 'RDPCSPIPE_PHY_REF_RANGE_3', - 4: 'RDPCSPIPE_PHY_REF_RANGE_4', - 5: 'RDPCSPIPE_PHY_REF_RANGE_5', - 6: 'RDPCSPIPE_PHY_REF_RANGE_6', - 7: 'RDPCSPIPE_PHY_REF_RANGE_7', -} -RDPCSPIPE_PHY_REF_RANGE_0 = 0 -RDPCSPIPE_PHY_REF_RANGE_1 = 1 -RDPCSPIPE_PHY_REF_RANGE_2 = 2 -RDPCSPIPE_PHY_REF_RANGE_3 = 3 -RDPCSPIPE_PHY_REF_RANGE_4 = 4 -RDPCSPIPE_PHY_REF_RANGE_5 = 5 -RDPCSPIPE_PHY_REF_RANGE_6 = 6 -RDPCSPIPE_PHY_REF_RANGE_7 = 7 -RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_REF_RANGE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL0_RDPCS_SRAM_EXT_LD_DONE' -RDPCSPIPE_PHY_CNTL0_RDPCS_SRAM_EXT_LD_DONE__enumvalues = { - 0: 'RDPCSPIPE_SRAM_EXT_LD_NOT_DONE', - 1: 'RDPCSPIPE_SRAM_EXT_LD_DONE', -} -RDPCSPIPE_SRAM_EXT_LD_NOT_DONE = 0 -RDPCSPIPE_SRAM_EXT_LD_DONE = 1 -RDPCSPIPE_PHY_CNTL0_RDPCS_SRAM_EXT_LD_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL0_RDPCS_SRAM_INIT_DONE' -RDPCSPIPE_PHY_CNTL0_RDPCS_SRAM_INIT_DONE__enumvalues = { - 0: 'RDPCSPIPE_SRAM_INIT_NOT_DONE', - 1: 'RDPCSPIPE_SRAM_INIT_DONE', -} -RDPCSPIPE_SRAM_INIT_NOT_DONE = 0 -RDPCSPIPE_SRAM_INIT_DONE = 1 -RDPCSPIPE_PHY_CNTL0_RDPCS_SRAM_INIT_DONE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL11_RDPCS_PHY_DP_REF_CLK_MPLLB_DIV' -RDPCSPIPE_PHY_CNTL11_RDPCS_PHY_DP_REF_CLK_MPLLB_DIV__enumvalues = { - 0: 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV1', - 1: 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV2', - 2: 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV3', - 3: 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV8', - 4: 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV16', -} -RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV1 = 0 -RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV2 = 1 -RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV3 = 2 -RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV8 = 3 -RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV16 = 4 -RDPCSPIPE_PHY_CNTL11_RDPCS_PHY_DP_REF_CLK_MPLLB_DIV = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL11_RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV' -RDPCSPIPE_PHY_CNTL11_RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV__enumvalues = { - 0: 'RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_0', - 1: 'RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_1', - 2: 'RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_2', - 3: 'RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_3', -} -RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_0 = 0 -RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_1 = 1 -RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_2 = 2 -RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_3 = 3 -RDPCSPIPE_PHY_CNTL11_RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL12_RDPCS_PHY_DP_MPLLB_TX_CLK_DIV' -RDPCSPIPE_PHY_CNTL12_RDPCS_PHY_DP_MPLLB_TX_CLK_DIV__enumvalues = { - 0: 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV', - 1: 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV2', - 2: 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV4', - 3: 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV8', - 4: 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV3', - 5: 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV5', - 6: 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV6', - 7: 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV10', -} -RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV = 0 -RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV2 = 1 -RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV4 = 2 -RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV8 = 3 -RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV3 = 4 -RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV5 = 5 -RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV6 = 6 -RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV10 = 7 -RDPCSPIPE_PHY_CNTL12_RDPCS_PHY_DP_MPLLB_TX_CLK_DIV = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL4_RDPCS_PHY_DP_TX_TERM_CTRL' -RDPCSPIPE_PHY_CNTL4_RDPCS_PHY_DP_TX_TERM_CTRL__enumvalues = { - 0: 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_54', - 1: 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_52', - 2: 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_50', - 3: 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_48', - 4: 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_46', - 5: 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_44', - 6: 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_42', - 7: 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_40', -} -RDPCSPIPE_PHY_DP_TX_TERM_CTRL_54 = 0 -RDPCSPIPE_PHY_DP_TX_TERM_CTRL_52 = 1 -RDPCSPIPE_PHY_DP_TX_TERM_CTRL_50 = 2 -RDPCSPIPE_PHY_DP_TX_TERM_CTRL_48 = 3 -RDPCSPIPE_PHY_DP_TX_TERM_CTRL_46 = 4 -RDPCSPIPE_PHY_DP_TX_TERM_CTRL_44 = 5 -RDPCSPIPE_PHY_DP_TX_TERM_CTRL_42 = 6 -RDPCSPIPE_PHY_DP_TX_TERM_CTRL_40 = 7 -RDPCSPIPE_PHY_CNTL4_RDPCS_PHY_DP_TX_TERM_CTRL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_DETRX_RESULT' -RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_DETRX_RESULT__enumvalues = { - 0: 'RDPCSPIPE_PHY_DP_TX_DETRX_RESULT_NO_DETECT', - 1: 'RDPCSPIPE_PHY_DP_TX_DETRX_RESULT_DETECT', -} -RDPCSPIPE_PHY_DP_TX_DETRX_RESULT_NO_DETECT = 0 -RDPCSPIPE_PHY_DP_TX_DETRX_RESULT_DETECT = 1 -RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_DETRX_RESULT = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_RATE' -RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_RATE__enumvalues = { - 0: 'RDPCSPIPE_PHY_DP_TX_RATE', - 1: 'RDPCSPIPE_PHY_DP_TX_RATE_DIV2', - 2: 'RDPCSPIPE_PHY_DP_TX_RATE_DIV4', -} -RDPCSPIPE_PHY_DP_TX_RATE = 0 -RDPCSPIPE_PHY_DP_TX_RATE_DIV2 = 1 -RDPCSPIPE_PHY_DP_TX_RATE_DIV4 = 2 -RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_WIDTH' -RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_WIDTH__enumvalues = { - 0: 'RDPCSPIPE_PHY_DP_TX_WIDTH_8', - 1: 'RDPCSPIPE_PHY_DP_TX_WIDTH_10', - 2: 'RDPCSPIPE_PHY_DP_TX_WIDTH_16', - 3: 'RDPCSPIPE_PHY_DP_TX_WIDTH_20', -} -RDPCSPIPE_PHY_DP_TX_WIDTH_8 = 0 -RDPCSPIPE_PHY_DP_TX_WIDTH_10 = 1 -RDPCSPIPE_PHY_DP_TX_WIDTH_16 = 2 -RDPCSPIPE_PHY_DP_TX_WIDTH_20 = 3 -RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_WIDTH = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_CNTL_RRDPCS_PHY_DP_TX_PSTATE' -RDPCSPIPE_PHY_CNTL_RRDPCS_PHY_DP_TX_PSTATE__enumvalues = { - 0: 'RRDPCSPIPE_PHY_DP_TX_PSTATE_POWER_UP', - 1: 'RRDPCSPIPE_PHY_DP_TX_PSTATE_HOLD', - 2: 'RRDPCSPIPE_PHY_DP_TX_PSTATE_HOLD_OFF', - 3: 'RRDPCSPIPE_PHY_DP_TX_PSTATE_POWER_DOWN', -} -RRDPCSPIPE_PHY_DP_TX_PSTATE_POWER_UP = 0 -RRDPCSPIPE_PHY_DP_TX_PSTATE_HOLD = 1 -RRDPCSPIPE_PHY_DP_TX_PSTATE_HOLD_OFF = 2 -RRDPCSPIPE_PHY_DP_TX_PSTATE_POWER_DOWN = 3 -RDPCSPIPE_PHY_CNTL_RRDPCS_PHY_DP_TX_PSTATE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_IF_WIDTH' -RDPCSPIPE_PHY_IF_WIDTH__enumvalues = { - 0: 'PHY_IF_WIDTH_10BIT', - 1: 'PHY_IF_WIDTH_20BIT', - 2: 'PHY_IF_WIDTH_40BIT', - 3: 'PHY_IF_WIDTH_80BIT', -} -PHY_IF_WIDTH_10BIT = 0 -PHY_IF_WIDTH_20BIT = 1 -PHY_IF_WIDTH_40BIT = 2 -PHY_IF_WIDTH_80BIT = 3 -RDPCSPIPE_PHY_IF_WIDTH = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_RATE' -RDPCSPIPE_PHY_RATE__enumvalues = { - 0: 'PHY_DP_RATE_1P62', - 1: 'PHY_DP_RATE_2P7', - 2: 'PHY_DP_RATE_5P4', - 3: 'PHY_DP_RATE_8P1', - 4: 'PHY_DP_RATE_2P16', - 5: 'PHY_DP_RATE_2P43', - 6: 'PHY_DP_RATE_3P24', - 7: 'PHY_DP_RATE_4P32', - 8: 'PHY_DP_RATE_10P', - 9: 'PHY_DP_RATE_13P5', - 10: 'PHY_DP_RATE_20P', - 15: 'PHY_CUSTOM_RATE', -} -PHY_DP_RATE_1P62 = 0 -PHY_DP_RATE_2P7 = 1 -PHY_DP_RATE_5P4 = 2 -PHY_DP_RATE_8P1 = 3 -PHY_DP_RATE_2P16 = 4 -PHY_DP_RATE_2P43 = 5 -PHY_DP_RATE_3P24 = 6 -PHY_DP_RATE_4P32 = 7 -PHY_DP_RATE_10P = 8 -PHY_DP_RATE_13P5 = 9 -PHY_DP_RATE_20P = 10 -PHY_CUSTOM_RATE = 15 -RDPCSPIPE_PHY_RATE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_PHY_REF_ALT_CLK_EN' -RDPCSPIPE_PHY_REF_ALT_CLK_EN__enumvalues = { - 0: 'RDPCSPIPE_PHY_REF_ALT_CLK_DISABLE', - 1: 'RDPCSPIPE_PHY_REF_ALT_CLK_ENABLE', -} -RDPCSPIPE_PHY_REF_ALT_CLK_DISABLE = 0 -RDPCSPIPE_PHY_REF_ALT_CLK_ENABLE = 1 -RDPCSPIPE_PHY_REF_ALT_CLK_EN = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCSPIPE_TEST_CLK_SEL' -RDPCSPIPE_TEST_CLK_SEL__enumvalues = { - 0: 'RDPCSPIPE_TEST_CLK_SEL_NONE', - 1: 'RDPCSPIPE_TEST_CLK_SEL_CFGCLK', - 2: 'RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS', - 3: 'RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS', - 4: 'RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS_DIV4', - 5: 'RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS_DIV4', - 6: 'RDPCSPIPE_TEST_CLK_SEL_SRAMCLK', - 7: 'RDPCSPIPE_TEST_CLK_SEL_EXT_CR_CLK', - 8: 'RDPCSPIPE_TEST_CLK_SEL_DP_TX0_WORD_CLK', - 9: 'RDPCSPIPE_TEST_CLK_SEL_DP_TX1_WORD_CLK', - 10: 'RDPCSPIPE_TEST_CLK_SEL_DP_TX2_WORD_CLK', - 11: 'RDPCSPIPE_TEST_CLK_SEL_DP_TX3_WORD_CLK', - 12: 'RDPCSPIPE_TEST_CLK_SEL_DP_MPLLB_DIV_CLK', - 13: 'RDPCSPIPE_TEST_CLK_SEL_HDMI_MPLLB_HDMI_PIXEL_CLK', - 14: 'RDPCSPIPE_TEST_CLK_SEL_PHY_REF_DIG_CLK', - 15: 'RDPCSPIPE_TEST_CLK_SEL_REF_DIG_FR_clk', - 16: 'RDPCSPIPE_TEST_CLK_SEL_dtb_out0', - 17: 'RDPCSPIPE_TEST_CLK_SEL_dtb_out1', -} -RDPCSPIPE_TEST_CLK_SEL_NONE = 0 -RDPCSPIPE_TEST_CLK_SEL_CFGCLK = 1 -RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS = 2 -RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS = 3 -RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS_DIV4 = 4 -RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS_DIV4 = 5 -RDPCSPIPE_TEST_CLK_SEL_SRAMCLK = 6 -RDPCSPIPE_TEST_CLK_SEL_EXT_CR_CLK = 7 -RDPCSPIPE_TEST_CLK_SEL_DP_TX0_WORD_CLK = 8 -RDPCSPIPE_TEST_CLK_SEL_DP_TX1_WORD_CLK = 9 -RDPCSPIPE_TEST_CLK_SEL_DP_TX2_WORD_CLK = 10 -RDPCSPIPE_TEST_CLK_SEL_DP_TX3_WORD_CLK = 11 -RDPCSPIPE_TEST_CLK_SEL_DP_MPLLB_DIV_CLK = 12 -RDPCSPIPE_TEST_CLK_SEL_HDMI_MPLLB_HDMI_PIXEL_CLK = 13 -RDPCSPIPE_TEST_CLK_SEL_PHY_REF_DIG_CLK = 14 -RDPCSPIPE_TEST_CLK_SEL_REF_DIG_FR_clk = 15 -RDPCSPIPE_TEST_CLK_SEL_dtb_out0 = 16 -RDPCSPIPE_TEST_CLK_SEL_dtb_out1 = 17 -RDPCSPIPE_TEST_CLK_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCS_PIPE_CNTL_TX_LANE_PACK_FROM_MSB' -RDPCS_PIPE_CNTL_TX_LANE_PACK_FROM_MSB__enumvalues = { - 0: 'RDPCSPIPE_LANE_PACK_FROM_MSB_DISABLE', - 1: 'RDPCSPIPE_LANE_PACK_FROM_MSB_ENABLE', -} -RDPCSPIPE_LANE_PACK_FROM_MSB_DISABLE = 0 -RDPCSPIPE_LANE_PACK_FROM_MSB_ENABLE = 1 -RDPCS_PIPE_CNTL_TX_LANE_PACK_FROM_MSB = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCS_PIPE_SRAM_CNTL_RDPCS_MEM_PWR_FORCE' -RDPCS_PIPE_SRAM_CNTL_RDPCS_MEM_PWR_FORCE__enumvalues = { - 0: 'RDPCSPIPE_MEM_PWR_NO_FORCE', - 1: 'RDPCSPIPE_MEM_PWR_LIGHT_SLEEP', - 2: 'RDPCSPIPE_MEM_PWR_DEEP_SLEEP', - 3: 'RDPCSPIPE_MEM_PWR_SHUT_DOWN', -} -RDPCSPIPE_MEM_PWR_NO_FORCE = 0 -RDPCSPIPE_MEM_PWR_LIGHT_SLEEP = 1 -RDPCSPIPE_MEM_PWR_DEEP_SLEEP = 2 -RDPCSPIPE_MEM_PWR_SHUT_DOWN = 3 -RDPCS_PIPE_SRAM_CNTL_RDPCS_MEM_PWR_FORCE = ctypes.c_uint32 # enum - -# values for enumeration 'RDPCS_PIPE_SRAM_CNTL_RDPCS_MEM_PWR_PWR_STATE' -RDPCS_PIPE_SRAM_CNTL_RDPCS_MEM_PWR_PWR_STATE__enumvalues = { - 0: 'RDPCSPIPE_MEM_PWR_PWR_STATE_ON', - 1: 'RDPCSPIPE_MEM_PWR_PWR_STATE_LIGHT_SLEEP', - 2: 'RDPCSPIPE_MEM_PWR_PWR_STATE_DEEP_SLEEP', - 3: 'RDPCSPIPE_MEM_PWR_PWR_STATE_SHUT_DOWN', -} -RDPCSPIPE_MEM_PWR_PWR_STATE_ON = 0 -RDPCSPIPE_MEM_PWR_PWR_STATE_LIGHT_SLEEP = 1 -RDPCSPIPE_MEM_PWR_PWR_STATE_DEEP_SLEEP = 2 -RDPCSPIPE_MEM_PWR_PWR_STATE_SHUT_DOWN = 3 -RDPCS_PIPE_SRAM_CNTL_RDPCS_MEM_PWR_PWR_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'RPDCSPIPE_CNTL_TX_LANE_BIT_ORDER_REVERSE_BEFORE_PACK' -RPDCSPIPE_CNTL_TX_LANE_BIT_ORDER_REVERSE_BEFORE_PACK__enumvalues = { - 0: 'RDPCSPIPE_LANE_BIT_ORDER_REVERSE_DISABLE', - 1: 'RDPCSPIPE_LANE_BIT_ORDER_REVERSE_ENABLE', -} -RDPCSPIPE_LANE_BIT_ORDER_REVERSE_DISABLE = 0 -RDPCSPIPE_LANE_BIT_ORDER_REVERSE_ENABLE = 1 -RPDCSPIPE_CNTL_TX_LANE_BIT_ORDER_REVERSE_BEFORE_PACK = ctypes.c_uint32 # enum - -# values for enumeration 'GDS_PERFCOUNT_SELECT' -GDS_PERFCOUNT_SELECT__enumvalues = { - 0: 'GDS_PERF_SEL_WR_COMP', - 1: 'GDS_PERF_SEL_WBUF_WR', - 2: 'GDS_PERF_SEL_SE0_NORET', - 3: 'GDS_PERF_SEL_SE0_RET', - 4: 'GDS_PERF_SEL_SE0_ORD_CNT', - 5: 'GDS_PERF_SEL_SE0_2COMP_REQ', - 6: 'GDS_PERF_SEL_SE0_ORD_WAVE_VALID', - 7: 'GDS_PERF_SEL_SE0_GDS_STALL_BY_ORD', - 8: 'GDS_PERF_SEL_SE0_GDS_WR_OP', - 9: 'GDS_PERF_SEL_SE0_GDS_RD_OP', - 10: 'GDS_PERF_SEL_SE0_GDS_ATOM_OP', - 11: 'GDS_PERF_SEL_SE0_GDS_REL_OP', - 12: 'GDS_PERF_SEL_SE0_GDS_CMPXCH_OP', - 13: 'GDS_PERF_SEL_SE0_GDS_BYTE_OP', - 14: 'GDS_PERF_SEL_SE0_GDS_SHORT_OP', - 15: 'GDS_PERF_SEL_SE1_NORET', - 16: 'GDS_PERF_SEL_SE1_RET', - 17: 'GDS_PERF_SEL_SE1_ORD_CNT', - 18: 'GDS_PERF_SEL_SE1_2COMP_REQ', - 19: 'GDS_PERF_SEL_SE1_ORD_WAVE_VALID', - 20: 'GDS_PERF_SEL_SE1_GDS_STALL_BY_ORD', - 21: 'GDS_PERF_SEL_SE1_GDS_WR_OP', - 22: 'GDS_PERF_SEL_SE1_GDS_RD_OP', - 23: 'GDS_PERF_SEL_SE1_GDS_ATOM_OP', - 24: 'GDS_PERF_SEL_SE1_GDS_REL_OP', - 25: 'GDS_PERF_SEL_SE1_GDS_CMPXCH_OP', - 26: 'GDS_PERF_SEL_SE1_GDS_BYTE_OP', - 27: 'GDS_PERF_SEL_SE1_GDS_SHORT_OP', - 28: 'GDS_PERF_SEL_SE2_NORET', - 29: 'GDS_PERF_SEL_SE2_RET', - 30: 'GDS_PERF_SEL_SE2_ORD_CNT', - 31: 'GDS_PERF_SEL_SE2_2COMP_REQ', - 32: 'GDS_PERF_SEL_SE2_ORD_WAVE_VALID', - 33: 'GDS_PERF_SEL_SE2_GDS_STALL_BY_ORD', - 34: 'GDS_PERF_SEL_SE2_GDS_WR_OP', - 35: 'GDS_PERF_SEL_SE2_GDS_RD_OP', - 36: 'GDS_PERF_SEL_SE2_GDS_ATOM_OP', - 37: 'GDS_PERF_SEL_SE2_GDS_REL_OP', - 38: 'GDS_PERF_SEL_SE2_GDS_CMPXCH_OP', - 39: 'GDS_PERF_SEL_SE2_GDS_BYTE_OP', - 40: 'GDS_PERF_SEL_SE2_GDS_SHORT_OP', - 41: 'GDS_PERF_SEL_SE3_NORET', - 42: 'GDS_PERF_SEL_SE3_RET', - 43: 'GDS_PERF_SEL_SE3_ORD_CNT', - 44: 'GDS_PERF_SEL_SE3_2COMP_REQ', - 45: 'GDS_PERF_SEL_SE3_ORD_WAVE_VALID', - 46: 'GDS_PERF_SEL_SE3_GDS_STALL_BY_ORD', - 47: 'GDS_PERF_SEL_SE3_GDS_WR_OP', - 48: 'GDS_PERF_SEL_SE3_GDS_RD_OP', - 49: 'GDS_PERF_SEL_SE3_GDS_ATOM_OP', - 50: 'GDS_PERF_SEL_SE3_GDS_REL_OP', - 51: 'GDS_PERF_SEL_SE3_GDS_CMPXCH_OP', - 52: 'GDS_PERF_SEL_SE3_GDS_BYTE_OP', - 53: 'GDS_PERF_SEL_SE3_GDS_SHORT_OP', - 54: 'GDS_PERF_SEL_SE4_NORET', - 55: 'GDS_PERF_SEL_SE4_RET', - 56: 'GDS_PERF_SEL_SE4_ORD_CNT', - 57: 'GDS_PERF_SEL_SE4_2COMP_REQ', - 58: 'GDS_PERF_SEL_SE4_ORD_WAVE_VALID', - 59: 'GDS_PERF_SEL_SE4_GDS_STALL_BY_ORD', - 60: 'GDS_PERF_SEL_SE4_GDS_WR_OP', - 61: 'GDS_PERF_SEL_SE4_GDS_RD_OP', - 62: 'GDS_PERF_SEL_SE4_GDS_ATOM_OP', - 63: 'GDS_PERF_SEL_SE4_GDS_REL_OP', - 64: 'GDS_PERF_SEL_SE4_GDS_CMPXCH_OP', - 65: 'GDS_PERF_SEL_SE4_GDS_BYTE_OP', - 66: 'GDS_PERF_SEL_SE4_GDS_SHORT_OP', - 67: 'GDS_PERF_SEL_SE5_NORET', - 68: 'GDS_PERF_SEL_SE5_RET', - 69: 'GDS_PERF_SEL_SE5_ORD_CNT', - 70: 'GDS_PERF_SEL_SE5_2COMP_REQ', - 71: 'GDS_PERF_SEL_SE5_ORD_WAVE_VALID', - 72: 'GDS_PERF_SEL_SE5_GDS_STALL_BY_ORD', - 73: 'GDS_PERF_SEL_SE5_GDS_WR_OP', - 74: 'GDS_PERF_SEL_SE5_GDS_RD_OP', - 75: 'GDS_PERF_SEL_SE5_GDS_ATOM_OP', - 76: 'GDS_PERF_SEL_SE5_GDS_REL_OP', - 77: 'GDS_PERF_SEL_SE5_GDS_CMPXCH_OP', - 78: 'GDS_PERF_SEL_SE5_GDS_BYTE_OP', - 79: 'GDS_PERF_SEL_SE5_GDS_SHORT_OP', - 80: 'GDS_PERF_SEL_SE6_NORET', - 81: 'GDS_PERF_SEL_SE6_RET', - 82: 'GDS_PERF_SEL_SE6_ORD_CNT', - 83: 'GDS_PERF_SEL_SE6_2COMP_REQ', - 84: 'GDS_PERF_SEL_SE6_ORD_WAVE_VALID', - 85: 'GDS_PERF_SEL_SE6_GDS_STALL_BY_ORD', - 86: 'GDS_PERF_SEL_SE6_GDS_WR_OP', - 87: 'GDS_PERF_SEL_SE6_GDS_RD_OP', - 88: 'GDS_PERF_SEL_SE6_GDS_ATOM_OP', - 89: 'GDS_PERF_SEL_SE6_GDS_REL_OP', - 90: 'GDS_PERF_SEL_SE6_GDS_CMPXCH_OP', - 91: 'GDS_PERF_SEL_SE6_GDS_BYTE_OP', - 92: 'GDS_PERF_SEL_SE6_GDS_SHORT_OP', - 93: 'GDS_PERF_SEL_SE7_NORET', - 94: 'GDS_PERF_SEL_SE7_RET', - 95: 'GDS_PERF_SEL_SE7_ORD_CNT', - 96: 'GDS_PERF_SEL_SE7_2COMP_REQ', - 97: 'GDS_PERF_SEL_SE7_ORD_WAVE_VALID', - 98: 'GDS_PERF_SEL_SE7_GDS_STALL_BY_ORD', - 99: 'GDS_PERF_SEL_SE7_GDS_WR_OP', - 100: 'GDS_PERF_SEL_SE7_GDS_RD_OP', - 101: 'GDS_PERF_SEL_SE7_GDS_ATOM_OP', - 102: 'GDS_PERF_SEL_SE7_GDS_REL_OP', - 103: 'GDS_PERF_SEL_SE7_GDS_CMPXCH_OP', - 104: 'GDS_PERF_SEL_SE7_GDS_BYTE_OP', - 105: 'GDS_PERF_SEL_SE7_GDS_SHORT_OP', - 106: 'GDS_PERF_SEL_GWS_RELEASED', - 107: 'GDS_PERF_SEL_GWS_BYPASS', -} -GDS_PERF_SEL_WR_COMP = 0 -GDS_PERF_SEL_WBUF_WR = 1 -GDS_PERF_SEL_SE0_NORET = 2 -GDS_PERF_SEL_SE0_RET = 3 -GDS_PERF_SEL_SE0_ORD_CNT = 4 -GDS_PERF_SEL_SE0_2COMP_REQ = 5 -GDS_PERF_SEL_SE0_ORD_WAVE_VALID = 6 -GDS_PERF_SEL_SE0_GDS_STALL_BY_ORD = 7 -GDS_PERF_SEL_SE0_GDS_WR_OP = 8 -GDS_PERF_SEL_SE0_GDS_RD_OP = 9 -GDS_PERF_SEL_SE0_GDS_ATOM_OP = 10 -GDS_PERF_SEL_SE0_GDS_REL_OP = 11 -GDS_PERF_SEL_SE0_GDS_CMPXCH_OP = 12 -GDS_PERF_SEL_SE0_GDS_BYTE_OP = 13 -GDS_PERF_SEL_SE0_GDS_SHORT_OP = 14 -GDS_PERF_SEL_SE1_NORET = 15 -GDS_PERF_SEL_SE1_RET = 16 -GDS_PERF_SEL_SE1_ORD_CNT = 17 -GDS_PERF_SEL_SE1_2COMP_REQ = 18 -GDS_PERF_SEL_SE1_ORD_WAVE_VALID = 19 -GDS_PERF_SEL_SE1_GDS_STALL_BY_ORD = 20 -GDS_PERF_SEL_SE1_GDS_WR_OP = 21 -GDS_PERF_SEL_SE1_GDS_RD_OP = 22 -GDS_PERF_SEL_SE1_GDS_ATOM_OP = 23 -GDS_PERF_SEL_SE1_GDS_REL_OP = 24 -GDS_PERF_SEL_SE1_GDS_CMPXCH_OP = 25 -GDS_PERF_SEL_SE1_GDS_BYTE_OP = 26 -GDS_PERF_SEL_SE1_GDS_SHORT_OP = 27 -GDS_PERF_SEL_SE2_NORET = 28 -GDS_PERF_SEL_SE2_RET = 29 -GDS_PERF_SEL_SE2_ORD_CNT = 30 -GDS_PERF_SEL_SE2_2COMP_REQ = 31 -GDS_PERF_SEL_SE2_ORD_WAVE_VALID = 32 -GDS_PERF_SEL_SE2_GDS_STALL_BY_ORD = 33 -GDS_PERF_SEL_SE2_GDS_WR_OP = 34 -GDS_PERF_SEL_SE2_GDS_RD_OP = 35 -GDS_PERF_SEL_SE2_GDS_ATOM_OP = 36 -GDS_PERF_SEL_SE2_GDS_REL_OP = 37 -GDS_PERF_SEL_SE2_GDS_CMPXCH_OP = 38 -GDS_PERF_SEL_SE2_GDS_BYTE_OP = 39 -GDS_PERF_SEL_SE2_GDS_SHORT_OP = 40 -GDS_PERF_SEL_SE3_NORET = 41 -GDS_PERF_SEL_SE3_RET = 42 -GDS_PERF_SEL_SE3_ORD_CNT = 43 -GDS_PERF_SEL_SE3_2COMP_REQ = 44 -GDS_PERF_SEL_SE3_ORD_WAVE_VALID = 45 -GDS_PERF_SEL_SE3_GDS_STALL_BY_ORD = 46 -GDS_PERF_SEL_SE3_GDS_WR_OP = 47 -GDS_PERF_SEL_SE3_GDS_RD_OP = 48 -GDS_PERF_SEL_SE3_GDS_ATOM_OP = 49 -GDS_PERF_SEL_SE3_GDS_REL_OP = 50 -GDS_PERF_SEL_SE3_GDS_CMPXCH_OP = 51 -GDS_PERF_SEL_SE3_GDS_BYTE_OP = 52 -GDS_PERF_SEL_SE3_GDS_SHORT_OP = 53 -GDS_PERF_SEL_SE4_NORET = 54 -GDS_PERF_SEL_SE4_RET = 55 -GDS_PERF_SEL_SE4_ORD_CNT = 56 -GDS_PERF_SEL_SE4_2COMP_REQ = 57 -GDS_PERF_SEL_SE4_ORD_WAVE_VALID = 58 -GDS_PERF_SEL_SE4_GDS_STALL_BY_ORD = 59 -GDS_PERF_SEL_SE4_GDS_WR_OP = 60 -GDS_PERF_SEL_SE4_GDS_RD_OP = 61 -GDS_PERF_SEL_SE4_GDS_ATOM_OP = 62 -GDS_PERF_SEL_SE4_GDS_REL_OP = 63 -GDS_PERF_SEL_SE4_GDS_CMPXCH_OP = 64 -GDS_PERF_SEL_SE4_GDS_BYTE_OP = 65 -GDS_PERF_SEL_SE4_GDS_SHORT_OP = 66 -GDS_PERF_SEL_SE5_NORET = 67 -GDS_PERF_SEL_SE5_RET = 68 -GDS_PERF_SEL_SE5_ORD_CNT = 69 -GDS_PERF_SEL_SE5_2COMP_REQ = 70 -GDS_PERF_SEL_SE5_ORD_WAVE_VALID = 71 -GDS_PERF_SEL_SE5_GDS_STALL_BY_ORD = 72 -GDS_PERF_SEL_SE5_GDS_WR_OP = 73 -GDS_PERF_SEL_SE5_GDS_RD_OP = 74 -GDS_PERF_SEL_SE5_GDS_ATOM_OP = 75 -GDS_PERF_SEL_SE5_GDS_REL_OP = 76 -GDS_PERF_SEL_SE5_GDS_CMPXCH_OP = 77 -GDS_PERF_SEL_SE5_GDS_BYTE_OP = 78 -GDS_PERF_SEL_SE5_GDS_SHORT_OP = 79 -GDS_PERF_SEL_SE6_NORET = 80 -GDS_PERF_SEL_SE6_RET = 81 -GDS_PERF_SEL_SE6_ORD_CNT = 82 -GDS_PERF_SEL_SE6_2COMP_REQ = 83 -GDS_PERF_SEL_SE6_ORD_WAVE_VALID = 84 -GDS_PERF_SEL_SE6_GDS_STALL_BY_ORD = 85 -GDS_PERF_SEL_SE6_GDS_WR_OP = 86 -GDS_PERF_SEL_SE6_GDS_RD_OP = 87 -GDS_PERF_SEL_SE6_GDS_ATOM_OP = 88 -GDS_PERF_SEL_SE6_GDS_REL_OP = 89 -GDS_PERF_SEL_SE6_GDS_CMPXCH_OP = 90 -GDS_PERF_SEL_SE6_GDS_BYTE_OP = 91 -GDS_PERF_SEL_SE6_GDS_SHORT_OP = 92 -GDS_PERF_SEL_SE7_NORET = 93 -GDS_PERF_SEL_SE7_RET = 94 -GDS_PERF_SEL_SE7_ORD_CNT = 95 -GDS_PERF_SEL_SE7_2COMP_REQ = 96 -GDS_PERF_SEL_SE7_ORD_WAVE_VALID = 97 -GDS_PERF_SEL_SE7_GDS_STALL_BY_ORD = 98 -GDS_PERF_SEL_SE7_GDS_WR_OP = 99 -GDS_PERF_SEL_SE7_GDS_RD_OP = 100 -GDS_PERF_SEL_SE7_GDS_ATOM_OP = 101 -GDS_PERF_SEL_SE7_GDS_REL_OP = 102 -GDS_PERF_SEL_SE7_GDS_CMPXCH_OP = 103 -GDS_PERF_SEL_SE7_GDS_BYTE_OP = 104 -GDS_PERF_SEL_SE7_GDS_SHORT_OP = 105 -GDS_PERF_SEL_GWS_RELEASED = 106 -GDS_PERF_SEL_GWS_BYPASS = 107 -GDS_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'BlendOp' -BlendOp__enumvalues = { - 0: 'BLEND_ZERO', - 1: 'BLEND_ONE', - 2: 'BLEND_SRC_COLOR', - 3: 'BLEND_ONE_MINUS_SRC_COLOR', - 4: 'BLEND_SRC_ALPHA', - 5: 'BLEND_ONE_MINUS_SRC_ALPHA', - 6: 'BLEND_DST_ALPHA', - 7: 'BLEND_ONE_MINUS_DST_ALPHA', - 8: 'BLEND_DST_COLOR', - 9: 'BLEND_ONE_MINUS_DST_COLOR', - 10: 'BLEND_SRC_ALPHA_SATURATE', - 11: 'BLEND_CONSTANT_COLOR', - 12: 'BLEND_ONE_MINUS_CONSTANT_COLOR', - 13: 'BLEND_SRC1_COLOR', - 14: 'BLEND_INV_SRC1_COLOR', - 15: 'BLEND_SRC1_ALPHA', - 16: 'BLEND_INV_SRC1_ALPHA', - 17: 'BLEND_CONSTANT_ALPHA', - 18: 'BLEND_ONE_MINUS_CONSTANT_ALPHA', -} -BLEND_ZERO = 0 -BLEND_ONE = 1 -BLEND_SRC_COLOR = 2 -BLEND_ONE_MINUS_SRC_COLOR = 3 -BLEND_SRC_ALPHA = 4 -BLEND_ONE_MINUS_SRC_ALPHA = 5 -BLEND_DST_ALPHA = 6 -BLEND_ONE_MINUS_DST_ALPHA = 7 -BLEND_DST_COLOR = 8 -BLEND_ONE_MINUS_DST_COLOR = 9 -BLEND_SRC_ALPHA_SATURATE = 10 -BLEND_CONSTANT_COLOR = 11 -BLEND_ONE_MINUS_CONSTANT_COLOR = 12 -BLEND_SRC1_COLOR = 13 -BLEND_INV_SRC1_COLOR = 14 -BLEND_SRC1_ALPHA = 15 -BLEND_INV_SRC1_ALPHA = 16 -BLEND_CONSTANT_ALPHA = 17 -BLEND_ONE_MINUS_CONSTANT_ALPHA = 18 -BlendOp = ctypes.c_uint32 # enum -GL__ZERO = BLEND_ZERO # macro -GL__ONE = BLEND_ONE # macro -GL__SRC_COLOR = BLEND_SRC_COLOR # macro -GL__ONE_MINUS_SRC_COLOR = BLEND_ONE_MINUS_SRC_COLOR # macro -GL__DST_COLOR = BLEND_DST_COLOR # macro -GL__ONE_MINUS_DST_COLOR = BLEND_ONE_MINUS_DST_COLOR # macro -GL__SRC_ALPHA = BLEND_SRC_ALPHA # macro -GL__ONE_MINUS_SRC_ALPHA = BLEND_ONE_MINUS_SRC_ALPHA # macro -GL__DST_ALPHA = BLEND_DST_ALPHA # macro -GL__ONE_MINUS_DST_ALPHA = BLEND_ONE_MINUS_DST_ALPHA # macro -GL__SRC_ALPHA_SATURATE = BLEND_SRC_ALPHA_SATURATE # macro -GL__CONSTANT_COLOR = BLEND_CONSTANT_COLOR # macro -GL__ONE_MINUS_CONSTANT_COLOR = BLEND_ONE_MINUS_CONSTANT_COLOR # macro -GL__CONSTANT_ALPHA = BLEND_CONSTANT_ALPHA # macro -GL__ONE_MINUS_CONSTANT_ALPHA = BLEND_ONE_MINUS_CONSTANT_ALPHA # macro - -# values for enumeration 'BlendOpt' -BlendOpt__enumvalues = { - 0: 'FORCE_OPT_AUTO', - 1: 'FORCE_OPT_DISABLE', - 2: 'FORCE_OPT_ENABLE_IF_SRC_A_0', - 3: 'FORCE_OPT_ENABLE_IF_SRC_RGB_0', - 4: 'FORCE_OPT_ENABLE_IF_SRC_ARGB_0', - 5: 'FORCE_OPT_ENABLE_IF_SRC_A_1', - 6: 'FORCE_OPT_ENABLE_IF_SRC_RGB_1', - 7: 'FORCE_OPT_ENABLE_IF_SRC_ARGB_1', -} -FORCE_OPT_AUTO = 0 -FORCE_OPT_DISABLE = 1 -FORCE_OPT_ENABLE_IF_SRC_A_0 = 2 -FORCE_OPT_ENABLE_IF_SRC_RGB_0 = 3 -FORCE_OPT_ENABLE_IF_SRC_ARGB_0 = 4 -FORCE_OPT_ENABLE_IF_SRC_A_1 = 5 -FORCE_OPT_ENABLE_IF_SRC_RGB_1 = 6 -FORCE_OPT_ENABLE_IF_SRC_ARGB_1 = 7 -BlendOpt = ctypes.c_uint32 # enum - -# values for enumeration 'CBMode' -CBMode__enumvalues = { - 0: 'CB_DISABLE', - 1: 'CB_NORMAL', - 2: 'CB_ELIMINATE_FAST_CLEAR', - 3: 'CB_DCC_DECOMPRESS', - 4: 'CB_RESERVED', -} -CB_DISABLE = 0 -CB_NORMAL = 1 -CB_ELIMINATE_FAST_CLEAR = 2 -CB_DCC_DECOMPRESS = 3 -CB_RESERVED = 4 -CBMode = ctypes.c_uint32 # enum - -# values for enumeration 'CBPerfClearFilterSel' -CBPerfClearFilterSel__enumvalues = { - 0: 'CB_PERF_CLEAR_FILTER_SEL_NONCLEAR', - 1: 'CB_PERF_CLEAR_FILTER_SEL_CLEAR', -} -CB_PERF_CLEAR_FILTER_SEL_NONCLEAR = 0 -CB_PERF_CLEAR_FILTER_SEL_CLEAR = 1 -CBPerfClearFilterSel = ctypes.c_uint32 # enum - -# values for enumeration 'CBPerfOpFilterSel' -CBPerfOpFilterSel__enumvalues = { - 0: 'CB_PERF_OP_FILTER_SEL_WRITE_ONLY', - 1: 'CB_PERF_OP_FILTER_SEL_NEEDS_DESTINATION', - 2: 'CB_PERF_OP_FILTER_SEL_RESOLVE', - 3: 'CB_PERF_OP_FILTER_SEL_DECOMPRESS', - 4: 'CB_PERF_OP_FILTER_SEL_FMASK_DECOMPRESS', - 5: 'CB_PERF_OP_FILTER_SEL_ELIMINATE_FAST_CLEAR', -} -CB_PERF_OP_FILTER_SEL_WRITE_ONLY = 0 -CB_PERF_OP_FILTER_SEL_NEEDS_DESTINATION = 1 -CB_PERF_OP_FILTER_SEL_RESOLVE = 2 -CB_PERF_OP_FILTER_SEL_DECOMPRESS = 3 -CB_PERF_OP_FILTER_SEL_FMASK_DECOMPRESS = 4 -CB_PERF_OP_FILTER_SEL_ELIMINATE_FAST_CLEAR = 5 -CBPerfOpFilterSel = ctypes.c_uint32 # enum - -# values for enumeration 'CBPerfSel' -CBPerfSel__enumvalues = { - 0: 'CB_PERF_SEL_NONE', - 1: 'CB_PERF_SEL_DRAWN_PIXEL', - 2: 'CB_PERF_SEL_DRAWN_QUAD', - 3: 'CB_PERF_SEL_DRAWN_QUAD_FRAGMENT', - 4: 'CB_PERF_SEL_DRAWN_TILE', - 5: 'CB_PERF_SEL_FILTER_DRAWN_PIXEL', - 6: 'CB_PERF_SEL_FILTER_DRAWN_QUAD', - 7: 'CB_PERF_SEL_FILTER_DRAWN_QUAD_FRAGMENT', - 8: 'CB_PERF_SEL_FILTER_DRAWN_TILE', - 9: 'CB_PERF_SEL_CC_DCC_DECOMPRESS_TID_IN', - 10: 'CB_PERF_SEL_CC_DCC_DECOMPRESS_TID_OUT', - 11: 'CB_PERF_SEL_CC_DCC_COMPRESS_TID_IN', - 12: 'CB_PERF_SEL_CC_DCC_COMPRESS_TID_OUT', - 13: 'CB_PERF_SEL_CC_MC_WRITE_REQUEST', - 14: 'CB_PERF_SEL_CC_MC_WRITE_REQUESTS_IN_FLIGHT', - 15: 'CB_PERF_SEL_CC_MC_READ_REQUEST', - 16: 'CB_PERF_SEL_CC_MC_READ_REQUESTS_IN_FLIGHT', - 17: 'CB_PERF_SEL_DB_CB_EXPORT_VALID_READY', - 18: 'CB_PERF_SEL_DB_CB_EXPORT_VALID_READYB', - 19: 'CB_PERF_SEL_DB_CB_EXPORT_VALIDB_READY', - 20: 'CB_PERF_SEL_DB_CB_EXPORT_VALIDB_READYB', - 21: 'CB_PERF_SEL_RESERVED_21', - 22: 'CB_PERF_SEL_RESERVED_22', - 23: 'CB_PERF_SEL_RESERVED_23', - 24: 'CB_PERF_SEL_RESERVED_24', - 25: 'CB_PERF_SEL_RESERVED_25', - 26: 'CB_PERF_SEL_RESERVED_26', - 27: 'CB_PERF_SEL_RESERVED_27', - 28: 'CB_PERF_SEL_RESERVED_28', - 29: 'CB_PERF_SEL_RESERVED_29', - 30: 'CB_PERF_SEL_CB_RMI_WRREQ_VALID_READY', - 31: 'CB_PERF_SEL_CB_RMI_WRREQ_VALID_READYB', - 32: 'CB_PERF_SEL_CB_RMI_WRREQ_VALIDB_READY', - 33: 'CB_PERF_SEL_CB_RMI_WRREQ_VALIDB_READYB', - 34: 'CB_PERF_SEL_CB_RMI_RDREQ_VALID_READY', - 35: 'CB_PERF_SEL_CB_RMI_RDREQ_VALID_READYB', - 36: 'CB_PERF_SEL_CB_RMI_RDREQ_VALIDB_READY', - 37: 'CB_PERF_SEL_CB_RMI_RDREQ_VALIDB_READYB', - 38: 'CB_PERF_SEL_RESERVED_38', - 39: 'CB_PERF_SEL_RESERVED_39', - 40: 'CB_PERF_SEL_RESERVED_40', - 41: 'CB_PERF_SEL_RESERVED_41', - 42: 'CB_PERF_SEL_RESERVED_42', - 43: 'CB_PERF_SEL_RESERVED_43', - 44: 'CB_PERF_SEL_RESERVED_44', - 45: 'CB_PERF_SEL_RESERVED_45', - 46: 'CB_PERF_SEL_RESERVED_46', - 47: 'CB_PERF_SEL_RESERVED_47', - 48: 'CB_PERF_SEL_RESERVED_48', - 49: 'CB_PERF_SEL_RESERVED_49', - 50: 'CB_PERF_SEL_STATIC_CLOCK_EN', - 51: 'CB_PERF_SEL_PERFMON_CLOCK_EN', - 52: 'CB_PERF_SEL_BLEND_CLOCK_EN', - 53: 'CB_PERF_SEL_COLOR_STORE_CLOCK_EN', - 54: 'CB_PERF_SEL_BACKEND_READ_CLOCK_EN', - 55: 'CB_PERF_SEL_GRBM_CLOCK_EN', - 56: 'CB_PERF_SEL_MEMARB_CLOCK_EN', - 57: 'CB_PERF_SEL_BACKEND_EVICT_PIPE_CLOCK_EN', - 58: 'CB_PERF_SEL_BACKEND_FRAGOP_CLOCK_EN', - 59: 'CB_PERF_SEL_BACKEND_SRC_FIFO_CLOCK_EN', - 60: 'CB_PERF_SEL_BACKEND_CACHE_CTL_CLOCK_EN', - 61: 'CB_PERF_SEL_FRONTEND_INPUT_CLOCK_EN', - 62: 'CB_PERF_SEL_FRONTEND_ADDR_CLOCK_EN', - 63: 'CB_PERF_SEL_FRONTEND_FDCC_CLOCK_EN', - 64: 'CB_PERF_SEL_FRONTEND_SAMPLE_MASK_TRACKER_CLOCK_EN', - 65: 'CB_PERF_SEL_RESERVED_65', - 66: 'CB_PERF_SEL_RESERVED_66', - 67: 'CB_PERF_SEL_RESERVED_67', - 68: 'CB_PERF_SEL_RESERVED_68', - 69: 'CB_PERF_SEL_RESERVED_69', - 70: 'CB_PERF_SEL_RESERVED_70', - 71: 'CB_PERF_SEL_RESERVED_71', - 72: 'CB_PERF_SEL_RESERVED_72', - 73: 'CB_PERF_SEL_RESERVED_73', - 74: 'CB_PERF_SEL_RESERVED_74', - 75: 'CB_PERF_SEL_RESERVED_75', - 76: 'CB_PERF_SEL_RESERVED_76', - 77: 'CB_PERF_SEL_RESERVED_77', - 78: 'CB_PERF_SEL_RESERVED_78', - 79: 'CB_PERF_SEL_RESERVED_79', - 80: 'CB_PERF_SEL_RESERVED_80', - 81: 'CB_PERF_SEL_RESERVED_81', - 82: 'CB_PERF_SEL_RESERVED_82', - 83: 'CB_PERF_SEL_RESERVED_83', - 84: 'CB_PERF_SEL_RESERVED_84', - 85: 'CB_PERF_SEL_RESERVED_85', - 86: 'CB_PERF_SEL_RESERVED_86', - 87: 'CB_PERF_SEL_RESERVED_87', - 88: 'CB_PERF_SEL_RESERVED_88', - 89: 'CB_PERF_SEL_RESERVED_89', - 90: 'CB_PERF_SEL_RESERVED_90', - 91: 'CB_PERF_SEL_RESERVED_91', - 92: 'CB_PERF_SEL_RESERVED_92', - 93: 'CB_PERF_SEL_RESERVED_93', - 94: 'CB_PERF_SEL_RESERVED_94', - 95: 'CB_PERF_SEL_RESERVED_95', - 96: 'CB_PERF_SEL_RESERVED_96', - 97: 'CB_PERF_SEL_RESERVED_97', - 98: 'CB_PERF_SEL_RESERVED_98', - 99: 'CB_PERF_SEL_RESERVED_99', - 100: 'CB_PERF_SEL_CC_TAG_HIT', - 101: 'CB_PERF_SEL_CC_CACHE_TAG_MISS', - 102: 'CB_PERF_SEL_CC_CACHE_SECTOR_MISS', - 103: 'CB_PERF_SEL_CC_CACHE_SECTOR_HIT', - 104: 'CB_PERF_SEL_CC_CACHE_REEVICTION_STALL', - 105: 'CB_PERF_SEL_CC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 106: 'CB_PERF_SEL_CC_CACHE_REPLACE_PENDING_EVICT_STALL', - 107: 'CB_PERF_SEL_CC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 108: 'CB_PERF_SEL_CC_CACHE_READ_OUTPUT_STALL', - 109: 'CB_PERF_SEL_CC_CACHE_WRITE_OUTPUT_STALL', - 110: 'CB_PERF_SEL_CC_CACHE_ACK_OUTPUT_STALL', - 111: 'CB_PERF_SEL_CC_CACHE_STALL', - 112: 'CB_PERF_SEL_CC_CACHE_FLUSH', - 113: 'CB_PERF_SEL_CC_CACHE_TAGS_FLUSHED', - 114: 'CB_PERF_SEL_CC_CACHE_WA_TO_RMW_CONVERSION', - 115: 'CB_PERF_SEL_CC_CACHE_SECTORS_FLUSHED', - 116: 'CB_PERF_SEL_CC_CACHE_DIRTY_SECTORS_FLUSHED', - 117: 'CB_PERF_SEL_CC_CACHE_READS_SAVED_DUE_TO_DCC', - 118: 'CB_PERF_SEL_RESERVED_118', - 119: 'CB_PERF_SEL_RESERVED_119', - 120: 'CB_PERF_SEL_RESERVED_120', - 121: 'CB_PERF_SEL_RESERVED_121', - 122: 'CB_PERF_SEL_RESERVED_122', - 123: 'CB_PERF_SEL_RESERVED_123', - 124: 'CB_PERF_SEL_RESERVED_124', - 125: 'CB_PERF_SEL_RESERVED_125', - 126: 'CB_PERF_SEL_RESERVED_126', - 127: 'CB_PERF_SEL_RESERVED_127', - 128: 'CB_PERF_SEL_RESERVED_128', - 129: 'CB_PERF_SEL_RESERVED_129', - 130: 'CB_PERF_SEL_RESERVED_130', - 131: 'CB_PERF_SEL_RESERVED_131', - 132: 'CB_PERF_SEL_RESERVED_132', - 133: 'CB_PERF_SEL_RESERVED_133', - 134: 'CB_PERF_SEL_RESERVED_134', - 135: 'CB_PERF_SEL_RESERVED_135', - 136: 'CB_PERF_SEL_RESERVED_136', - 137: 'CB_PERF_SEL_RESERVED_137', - 138: 'CB_PERF_SEL_RESERVED_138', - 139: 'CB_PERF_SEL_RESERVED_139', - 140: 'CB_PERF_SEL_RESERVED_140', - 141: 'CB_PERF_SEL_RESERVED_141', - 142: 'CB_PERF_SEL_RESERVED_142', - 143: 'CB_PERF_SEL_RESERVED_143', - 144: 'CB_PERF_SEL_RESERVED_144', - 145: 'CB_PERF_SEL_RESERVED_145', - 146: 'CB_PERF_SEL_RESERVED_146', - 147: 'CB_PERF_SEL_RESERVED_147', - 148: 'CB_PERF_SEL_RESERVED_148', - 149: 'CB_PERF_SEL_RESERVED_149', - 150: 'CB_PERF_SEL_DCC_CACHE_PERF_HIT', - 151: 'CB_PERF_SEL_DCC_CACHE_TAG_MISS', - 152: 'CB_PERF_SEL_DCC_CACHE_SECTOR_MISS', - 153: 'CB_PERF_SEL_DCC_CACHE_REEVICTION_STALL', - 154: 'CB_PERF_SEL_DCC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 155: 'CB_PERF_SEL_DCC_CACHE_REPLACE_PENDING_EVICT_STALL', - 156: 'CB_PERF_SEL_DCC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 157: 'CB_PERF_SEL_DCC_CACHE_READ_OUTPUT_STALL', - 158: 'CB_PERF_SEL_DCC_CACHE_WRITE_OUTPUT_STALL', - 159: 'CB_PERF_SEL_DCC_CACHE_ACK_OUTPUT_STALL', - 160: 'CB_PERF_SEL_DCC_CACHE_STALL', - 161: 'CB_PERF_SEL_DCC_CACHE_FLUSH', - 162: 'CB_PERF_SEL_DCC_CACHE_SECTORS_FLUSHED', - 163: 'CB_PERF_SEL_DCC_CACHE_DIRTY_SECTORS_FLUSHED', - 164: 'CB_PERF_SEL_DCC_CACHE_TAGS_FLUSHED', - 165: 'CB_PERF_SEL_RESERVED_165', - 166: 'CB_PERF_SEL_RESERVED_166', - 167: 'CB_PERF_SEL_RESERVED_167', - 168: 'CB_PERF_SEL_RESERVED_168', - 169: 'CB_PERF_SEL_RESERVED_169', - 170: 'CB_PERF_SEL_RESERVED_170', - 171: 'CB_PERF_SEL_RESERVED_171', - 172: 'CB_PERF_SEL_RESERVED_172', - 173: 'CB_PERF_SEL_RESERVED_173', - 174: 'CB_PERF_SEL_RESERVED_174', - 175: 'CB_PERF_SEL_RESERVED_175', - 176: 'CB_PERF_SEL_RESERVED_176', - 177: 'CB_PERF_SEL_RESERVED_177', - 178: 'CB_PERF_SEL_RESERVED_178', - 179: 'CB_PERF_SEL_RESERVED_179', - 180: 'CB_PERF_SEL_RESERVED_180', - 181: 'CB_PERF_SEL_RESERVED_181', - 182: 'CB_PERF_SEL_RESERVED_182', - 183: 'CB_PERF_SEL_RESERVED_183', - 184: 'CB_PERF_SEL_RESERVED_184', - 185: 'CB_PERF_SEL_RESERVED_185', - 186: 'CB_PERF_SEL_RESERVED_186', - 187: 'CB_PERF_SEL_RESERVED_187', - 188: 'CB_PERF_SEL_RESERVED_188', - 189: 'CB_PERF_SEL_RESERVED_189', - 190: 'CB_PERF_SEL_RESERVED_190', - 191: 'CB_PERF_SEL_RESERVED_191', - 192: 'CB_PERF_SEL_RESERVED_192', - 193: 'CB_PERF_SEL_RESERVED_193', - 194: 'CB_PERF_SEL_RESERVED_194', - 195: 'CB_PERF_SEL_RESERVED_195', - 196: 'CB_PERF_SEL_RESERVED_196', - 197: 'CB_PERF_SEL_RESERVED_197', - 198: 'CB_PERF_SEL_RESERVED_198', - 199: 'CB_PERF_SEL_RESERVED_199', - 200: 'CB_PERF_SEL_BLEND_QUAD_DST_READ_COULD_HAVE_BEEN_OPTIMIZED', - 201: 'CB_PERF_SEL_BLEND_QUAD_BLENDING_COULD_HAVE_BEEN_BYPASSED', - 202: 'CB_PERF_SEL_BLEND_QUAD_COULD_HAVE_BEEN_DISCARDED', - 203: 'CB_PERF_SEL_BLEND_OPT_PIXELS_RESULT_EQ_DEST', - 204: 'CB_PERF_SEL_BLEND_STALL_AT_OUTPUT', - 205: 'CB_PERF_SEL_RESERVED_205', - 206: 'CB_PERF_SEL_RESERVED_206', - 207: 'CB_PERF_SEL_RESERVED_207', - 208: 'CB_PERF_SEL_RESERVED_208', - 209: 'CB_PERF_SEL_RESERVED_209', - 210: 'CB_PERF_SEL_RESERVED_210', - 211: 'CB_PERF_SEL_RESERVED_211', - 212: 'CB_PERF_SEL_RESERVED_212', - 213: 'CB_PERF_SEL_RESERVED_213', - 214: 'CB_PERF_SEL_RESERVED_214', - 215: 'CB_PERF_SEL_RESERVED_215', - 216: 'CB_PERF_SEL_RESERVED_216', - 217: 'CB_PERF_SEL_RESERVED_217', - 218: 'CB_PERF_SEL_RESERVED_218', - 219: 'CB_PERF_SEL_RESERVED_219', - 220: 'CB_PERF_SEL_RESERVED_220', - 221: 'CB_PERF_SEL_RESERVED_221', - 222: 'CB_PERF_SEL_RESERVED_222', - 223: 'CB_PERF_SEL_RESERVED_223', - 224: 'CB_PERF_SEL_RESERVED_224', - 225: 'CB_PERF_SEL_RESERVED_225', - 226: 'CB_PERF_SEL_RESERVED_226', - 227: 'CB_PERF_SEL_RESERVED_227', - 228: 'CB_PERF_SEL_RESERVED_228', - 229: 'CB_PERF_SEL_RESERVED_229', - 230: 'CB_PERF_SEL_RESERVED_230', - 231: 'CB_PERF_SEL_RESERVED_231', - 232: 'CB_PERF_SEL_RESERVED_232', - 233: 'CB_PERF_SEL_RESERVED_233', - 234: 'CB_PERF_SEL_RESERVED_234', - 235: 'CB_PERF_SEL_RESERVED_235', - 236: 'CB_PERF_SEL_RESERVED_236', - 237: 'CB_PERF_SEL_RESERVED_237', - 238: 'CB_PERF_SEL_RESERVED_238', - 239: 'CB_PERF_SEL_RESERVED_239', - 240: 'CB_PERF_SEL_RESERVED_240', - 241: 'CB_PERF_SEL_RESERVED_241', - 242: 'CB_PERF_SEL_RESERVED_242', - 243: 'CB_PERF_SEL_RESERVED_243', - 244: 'CB_PERF_SEL_RESERVED_244', - 245: 'CB_PERF_SEL_RESERVED_245', - 246: 'CB_PERF_SEL_RESERVED_246', - 247: 'CB_PERF_SEL_RESERVED_247', - 248: 'CB_PERF_SEL_RESERVED_248', - 249: 'CB_PERF_SEL_RESERVED_249', - 250: 'CB_PERF_SEL_EVENT', - 251: 'CB_PERF_SEL_EVENT_CACHE_FLUSH_TS', - 252: 'CB_PERF_SEL_EVENT_CONTEXT_DONE', - 253: 'CB_PERF_SEL_EVENT_CACHE_FLUSH', - 254: 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_TS_EVENT', - 255: 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_EVENT', - 256: 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_DATA_TS', - 257: 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_META', - 258: 'CB_PERF_SEL_CC_SURFACE_SYNC', - 259: 'CB_PERF_SEL_RESERVED_259', - 260: 'CB_PERF_SEL_RESERVED_260', - 261: 'CB_PERF_SEL_RESERVED_261', - 262: 'CB_PERF_SEL_RESERVED_262', - 263: 'CB_PERF_SEL_RESERVED_263', - 264: 'CB_PERF_SEL_RESERVED_264', - 265: 'CB_PERF_SEL_RESERVED_265', - 266: 'CB_PERF_SEL_RESERVED_266', - 267: 'CB_PERF_SEL_RESERVED_267', - 268: 'CB_PERF_SEL_RESERVED_268', - 269: 'CB_PERF_SEL_RESERVED_269', - 270: 'CB_PERF_SEL_RESERVED_270', - 271: 'CB_PERF_SEL_RESERVED_271', - 272: 'CB_PERF_SEL_RESERVED_272', - 273: 'CB_PERF_SEL_RESERVED_273', - 274: 'CB_PERF_SEL_RESERVED_274', - 275: 'CB_PERF_SEL_RESERVED_275', - 276: 'CB_PERF_SEL_RESERVED_276', - 277: 'CB_PERF_SEL_RESERVED_277', - 278: 'CB_PERF_SEL_RESERVED_278', - 279: 'CB_PERF_SEL_RESERVED_279', - 280: 'CB_PERF_SEL_RESERVED_280', - 281: 'CB_PERF_SEL_RESERVED_281', - 282: 'CB_PERF_SEL_RESERVED_282', - 283: 'CB_PERF_SEL_RESERVED_283', - 284: 'CB_PERF_SEL_RESERVED_284', - 285: 'CB_PERF_SEL_RESERVED_285', - 286: 'CB_PERF_SEL_RESERVED_286', - 287: 'CB_PERF_SEL_RESERVED_287', - 288: 'CB_PERF_SEL_RESERVED_288', - 289: 'CB_PERF_SEL_RESERVED_289', - 290: 'CB_PERF_SEL_RESERVED_290', - 291: 'CB_PERF_SEL_RESERVED_291', - 292: 'CB_PERF_SEL_RESERVED_292', - 293: 'CB_PERF_SEL_RESERVED_293', - 294: 'CB_PERF_SEL_RESERVED_294', - 295: 'CB_PERF_SEL_RESERVED_295', - 296: 'CB_PERF_SEL_RESERVED_296', - 297: 'CB_PERF_SEL_RESERVED_297', - 298: 'CB_PERF_SEL_RESERVED_298', - 299: 'CB_PERF_SEL_RESERVED_299', - 300: 'CB_PERF_SEL_NACK_CC_READ', - 301: 'CB_PERF_SEL_NACK_CC_WRITE', - 302: 'CB_PERF_SEL_EXPORT_32_ABGR_QUAD_FRAGMENT', - 303: 'CB_PERF_SEL_RESERVED_303', - 304: 'CB_PERF_SEL_RESERVED_304', - 305: 'CB_PERF_SEL_RESERVED_305', - 306: 'CB_PERF_SEL_RESERVED_306', - 307: 'CB_PERF_SEL_RESERVED_307', - 308: 'CB_PERF_SEL_RESERVED_308', - 309: 'CB_PERF_SEL_RESERVED_309', - 310: 'CB_PERF_SEL_RESERVED_310', - 311: 'CB_PERF_SEL_RESERVED_311', - 312: 'CB_PERF_SEL_RESERVED_312', - 313: 'CB_PERF_SEL_RESERVED_313', - 314: 'CB_PERF_SEL_RESERVED_314', - 315: 'CB_PERF_SEL_RESERVED_315', - 316: 'CB_PERF_SEL_RESERVED_316', - 317: 'CB_PERF_SEL_RESERVED_317', - 318: 'CB_PERF_SEL_RESERVED_318', - 319: 'CB_PERF_SEL_RESERVED_319', - 320: 'CB_PERF_SEL_RESERVED_320', - 321: 'CB_PERF_SEL_RESERVED_321', - 322: 'CB_PERF_SEL_RESERVED_322', - 323: 'CB_PERF_SEL_RESERVED_323', - 324: 'CB_PERF_SEL_RESERVED_324', - 325: 'CB_PERF_SEL_RESERVED_325', - 326: 'CB_PERF_SEL_RESERVED_326', - 327: 'CB_PERF_SEL_RESERVED_327', - 328: 'CB_PERF_SEL_RESERVED_328', - 329: 'CB_PERF_SEL_RESERVED_329', - 330: 'CB_PERF_SEL_RESERVED_330', - 331: 'CB_PERF_SEL_RESERVED_331', - 332: 'CB_PERF_SEL_RESERVED_332', - 333: 'CB_PERF_SEL_RESERVED_333', - 334: 'CB_PERF_SEL_RESERVED_334', - 335: 'CB_PERF_SEL_RESERVED_335', - 336: 'CB_PERF_SEL_RESERVED_336', - 337: 'CB_PERF_SEL_RESERVED_337', - 338: 'CB_PERF_SEL_RESERVED_338', - 339: 'CB_PERF_SEL_RESERVED_339', - 340: 'CB_PERF_SEL_RESERVED_340', - 341: 'CB_PERF_SEL_RESERVED_341', - 342: 'CB_PERF_SEL_RESERVED_342', - 343: 'CB_PERF_SEL_RESERVED_343', - 344: 'CB_PERF_SEL_RESERVED_344', - 345: 'CB_PERF_SEL_RESERVED_345', - 346: 'CB_PERF_SEL_RESERVED_346', - 347: 'CB_PERF_SEL_RESERVED_347', - 348: 'CB_PERF_SEL_RESERVED_348', - 349: 'CB_PERF_SEL_RESERVED_349', - 350: 'CB_PERF_SEL_RESERVED_350', - 351: 'CB_PERF_SEL_RESERVED_351', - 352: 'CB_PERF_SEL_RESERVED_352', - 353: 'CB_PERF_SEL_RESERVED_353', - 354: 'CB_PERF_SEL_RESERVED_354', - 355: 'CB_PERF_SEL_RESERVED_355', - 356: 'CB_PERF_SEL_RESERVED_356', - 357: 'CB_PERF_SEL_RESERVED_357', - 358: 'CB_PERF_SEL_RESERVED_358', - 359: 'CB_PERF_SEL_RESERVED_359', - 360: 'CB_PERF_SEL_RESERVED_360', - 361: 'CB_PERF_SEL_RESERVED_361', - 362: 'CB_PERF_SEL_RESERVED_362', - 363: 'CB_PERF_SEL_RESERVED_363', - 364: 'CB_PERF_SEL_RESERVED_364', - 365: 'CB_PERF_SEL_RESERVED_365', - 366: 'CB_PERF_SEL_RESERVED_366', - 367: 'CB_PERF_SEL_RESERVED_367', - 368: 'CB_PERF_SEL_RESERVED_368', - 369: 'CB_PERF_SEL_RESERVED_369', - 370: 'CB_PERF_SEL_RESERVED_370', - 371: 'CB_PERF_SEL_RESERVED_371', - 372: 'CB_PERF_SEL_RESERVED_372', - 373: 'CB_PERF_SEL_RESERVED_373', - 374: 'CB_PERF_SEL_RESERVED_374', - 375: 'CB_PERF_SEL_RESERVED_375', - 376: 'CB_PERF_SEL_RESERVED_376', - 377: 'CB_PERF_SEL_RESERVED_377', - 378: 'CB_PERF_SEL_RESERVED_378', - 379: 'CB_PERF_SEL_RESERVED_379', - 380: 'CB_PERF_SEL_RESERVED_380', - 381: 'CB_PERF_SEL_RESERVED_381', - 382: 'CB_PERF_SEL_RESERVED_382', - 383: 'CB_PERF_SEL_RESERVED_383', - 384: 'CB_PERF_SEL_RESERVED_384', - 385: 'CB_PERF_SEL_RESERVED_385', - 386: 'CB_PERF_SEL_RESERVED_386', - 387: 'CB_PERF_SEL_RESERVED_387', - 388: 'CB_PERF_SEL_RESERVED_388', - 389: 'CB_PERF_SEL_RESERVED_389', - 390: 'CB_PERF_SEL_RESERVED_390', - 391: 'CB_PERF_SEL_RESERVED_391', - 392: 'CB_PERF_SEL_RESERVED_392', - 393: 'CB_PERF_SEL_RESERVED_393', - 394: 'CB_PERF_SEL_RESERVED_394', - 395: 'CB_PERF_SEL_RESERVED_395', - 396: 'CB_PERF_SEL_RESERVED_396', - 397: 'CB_PERF_SEL_RESERVED_397', - 398: 'CB_PERF_SEL_RESERVED_398', - 399: 'CB_PERF_SEL_RESERVED_399', - 400: 'CB_PERF_SEL_RESERVED_400', - 401: 'CB_PERF_SEL_RESERVED_401', - 402: 'CB_PERF_SEL_RESERVED_402', - 403: 'CB_PERF_SEL_RESERVED_403', - 404: 'CB_PERF_SEL_RESERVED_404', - 405: 'CB_PERF_SEL_RESERVED_405', - 406: 'CB_PERF_SEL_RESERVED_406', - 407: 'CB_PERF_SEL_RESERVED_407', - 408: 'CB_PERF_SEL_RESERVED_408', - 409: 'CB_PERF_SEL_RESERVED_409', - 410: 'CB_PERF_SEL_RESERVED_410', - 411: 'CB_PERF_SEL_RESERVED_411', - 412: 'CB_PERF_SEL_RESERVED_412', - 413: 'CB_PERF_SEL_RESERVED_413', - 414: 'CB_PERF_SEL_RESERVED_414', - 415: 'CB_PERF_SEL_RESERVED_415', - 416: 'CB_PERF_SEL_RESERVED_416', - 417: 'CB_PERF_SEL_RESERVED_417', - 418: 'CB_PERF_SEL_RESERVED_418', - 419: 'CB_PERF_SEL_RESERVED_419', - 420: 'CB_PERF_SEL_RESERVED_420', - 421: 'CB_PERF_SEL_RESERVED_421', - 422: 'CB_PERF_SEL_RESERVED_422', - 423: 'CB_PERF_SEL_RESERVED_423', - 424: 'CB_PERF_SEL_RESERVED_424', - 425: 'CB_PERF_SEL_RESERVED_425', - 426: 'CB_PERF_SEL_RESERVED_426', - 427: 'CB_PERF_SEL_RESERVED_427', - 428: 'CB_PERF_SEL_RESERVED_428', - 429: 'CB_PERF_SEL_RESERVED_429', - 430: 'CB_PERF_SEL_RESERVED_430', - 431: 'CB_PERF_SEL_RESERVED_431', - 432: 'CB_PERF_SEL_RESERVED_432', - 433: 'CB_PERF_SEL_RESERVED_433', - 434: 'CB_PERF_SEL_RESERVED_434', - 435: 'CB_PERF_SEL_RESERVED_435', - 436: 'CB_PERF_SEL_RESERVED_436', - 437: 'CB_PERF_SEL_RESERVED_437', - 438: 'CB_PERF_SEL_RESERVED_438', - 439: 'CB_PERF_SEL_RESERVED_439', - 440: 'CB_PERF_SEL_RESERVED_440', - 441: 'CB_PERF_SEL_RESERVED_441', - 442: 'CB_PERF_SEL_RESERVED_442', - 443: 'CB_PERF_SEL_RESERVED_443', - 444: 'CB_PERF_SEL_RESERVED_444', - 445: 'CB_PERF_SEL_RESERVED_445', - 446: 'CB_PERF_SEL_RESERVED_446', - 447: 'CB_PERF_SEL_RESERVED_447', - 448: 'CB_PERF_SEL_RESERVED_448', - 449: 'CB_PERF_SEL_RESERVED_449', - 450: 'CB_PERF_SEL_RESERVED_450', - 451: 'CB_PERF_SEL_RESERVED_451', - 452: 'CB_PERF_SEL_RESERVED_452', - 453: 'CB_PERF_SEL_RESERVED_453', - 454: 'CB_PERF_SEL_RESERVED_454', - 455: 'CB_PERF_SEL_RESERVED_455', - 456: 'CB_PERF_SEL_RESERVED_456', - 457: 'CB_PERF_SEL_RESERVED_457', - 458: 'CB_PERF_SEL_RESERVED_458', - 459: 'CB_PERF_SEL_RESERVED_459', - 460: 'CB_PERF_SEL_RESERVED_460', - 461: 'CB_PERF_SEL_RESERVED_461', - 462: 'CB_PERF_SEL_RESERVED_462', - 463: 'CB_PERF_SEL_RESERVED_463', - 464: 'CB_PERF_SEL_RESERVED_464', - 465: 'CB_PERF_SEL_RESERVED_465', -} -CB_PERF_SEL_NONE = 0 -CB_PERF_SEL_DRAWN_PIXEL = 1 -CB_PERF_SEL_DRAWN_QUAD = 2 -CB_PERF_SEL_DRAWN_QUAD_FRAGMENT = 3 -CB_PERF_SEL_DRAWN_TILE = 4 -CB_PERF_SEL_FILTER_DRAWN_PIXEL = 5 -CB_PERF_SEL_FILTER_DRAWN_QUAD = 6 -CB_PERF_SEL_FILTER_DRAWN_QUAD_FRAGMENT = 7 -CB_PERF_SEL_FILTER_DRAWN_TILE = 8 -CB_PERF_SEL_CC_DCC_DECOMPRESS_TID_IN = 9 -CB_PERF_SEL_CC_DCC_DECOMPRESS_TID_OUT = 10 -CB_PERF_SEL_CC_DCC_COMPRESS_TID_IN = 11 -CB_PERF_SEL_CC_DCC_COMPRESS_TID_OUT = 12 -CB_PERF_SEL_CC_MC_WRITE_REQUEST = 13 -CB_PERF_SEL_CC_MC_WRITE_REQUESTS_IN_FLIGHT = 14 -CB_PERF_SEL_CC_MC_READ_REQUEST = 15 -CB_PERF_SEL_CC_MC_READ_REQUESTS_IN_FLIGHT = 16 -CB_PERF_SEL_DB_CB_EXPORT_VALID_READY = 17 -CB_PERF_SEL_DB_CB_EXPORT_VALID_READYB = 18 -CB_PERF_SEL_DB_CB_EXPORT_VALIDB_READY = 19 -CB_PERF_SEL_DB_CB_EXPORT_VALIDB_READYB = 20 -CB_PERF_SEL_RESERVED_21 = 21 -CB_PERF_SEL_RESERVED_22 = 22 -CB_PERF_SEL_RESERVED_23 = 23 -CB_PERF_SEL_RESERVED_24 = 24 -CB_PERF_SEL_RESERVED_25 = 25 -CB_PERF_SEL_RESERVED_26 = 26 -CB_PERF_SEL_RESERVED_27 = 27 -CB_PERF_SEL_RESERVED_28 = 28 -CB_PERF_SEL_RESERVED_29 = 29 -CB_PERF_SEL_CB_RMI_WRREQ_VALID_READY = 30 -CB_PERF_SEL_CB_RMI_WRREQ_VALID_READYB = 31 -CB_PERF_SEL_CB_RMI_WRREQ_VALIDB_READY = 32 -CB_PERF_SEL_CB_RMI_WRREQ_VALIDB_READYB = 33 -CB_PERF_SEL_CB_RMI_RDREQ_VALID_READY = 34 -CB_PERF_SEL_CB_RMI_RDREQ_VALID_READYB = 35 -CB_PERF_SEL_CB_RMI_RDREQ_VALIDB_READY = 36 -CB_PERF_SEL_CB_RMI_RDREQ_VALIDB_READYB = 37 -CB_PERF_SEL_RESERVED_38 = 38 -CB_PERF_SEL_RESERVED_39 = 39 -CB_PERF_SEL_RESERVED_40 = 40 -CB_PERF_SEL_RESERVED_41 = 41 -CB_PERF_SEL_RESERVED_42 = 42 -CB_PERF_SEL_RESERVED_43 = 43 -CB_PERF_SEL_RESERVED_44 = 44 -CB_PERF_SEL_RESERVED_45 = 45 -CB_PERF_SEL_RESERVED_46 = 46 -CB_PERF_SEL_RESERVED_47 = 47 -CB_PERF_SEL_RESERVED_48 = 48 -CB_PERF_SEL_RESERVED_49 = 49 -CB_PERF_SEL_STATIC_CLOCK_EN = 50 -CB_PERF_SEL_PERFMON_CLOCK_EN = 51 -CB_PERF_SEL_BLEND_CLOCK_EN = 52 -CB_PERF_SEL_COLOR_STORE_CLOCK_EN = 53 -CB_PERF_SEL_BACKEND_READ_CLOCK_EN = 54 -CB_PERF_SEL_GRBM_CLOCK_EN = 55 -CB_PERF_SEL_MEMARB_CLOCK_EN = 56 -CB_PERF_SEL_BACKEND_EVICT_PIPE_CLOCK_EN = 57 -CB_PERF_SEL_BACKEND_FRAGOP_CLOCK_EN = 58 -CB_PERF_SEL_BACKEND_SRC_FIFO_CLOCK_EN = 59 -CB_PERF_SEL_BACKEND_CACHE_CTL_CLOCK_EN = 60 -CB_PERF_SEL_FRONTEND_INPUT_CLOCK_EN = 61 -CB_PERF_SEL_FRONTEND_ADDR_CLOCK_EN = 62 -CB_PERF_SEL_FRONTEND_FDCC_CLOCK_EN = 63 -CB_PERF_SEL_FRONTEND_SAMPLE_MASK_TRACKER_CLOCK_EN = 64 -CB_PERF_SEL_RESERVED_65 = 65 -CB_PERF_SEL_RESERVED_66 = 66 -CB_PERF_SEL_RESERVED_67 = 67 -CB_PERF_SEL_RESERVED_68 = 68 -CB_PERF_SEL_RESERVED_69 = 69 -CB_PERF_SEL_RESERVED_70 = 70 -CB_PERF_SEL_RESERVED_71 = 71 -CB_PERF_SEL_RESERVED_72 = 72 -CB_PERF_SEL_RESERVED_73 = 73 -CB_PERF_SEL_RESERVED_74 = 74 -CB_PERF_SEL_RESERVED_75 = 75 -CB_PERF_SEL_RESERVED_76 = 76 -CB_PERF_SEL_RESERVED_77 = 77 -CB_PERF_SEL_RESERVED_78 = 78 -CB_PERF_SEL_RESERVED_79 = 79 -CB_PERF_SEL_RESERVED_80 = 80 -CB_PERF_SEL_RESERVED_81 = 81 -CB_PERF_SEL_RESERVED_82 = 82 -CB_PERF_SEL_RESERVED_83 = 83 -CB_PERF_SEL_RESERVED_84 = 84 -CB_PERF_SEL_RESERVED_85 = 85 -CB_PERF_SEL_RESERVED_86 = 86 -CB_PERF_SEL_RESERVED_87 = 87 -CB_PERF_SEL_RESERVED_88 = 88 -CB_PERF_SEL_RESERVED_89 = 89 -CB_PERF_SEL_RESERVED_90 = 90 -CB_PERF_SEL_RESERVED_91 = 91 -CB_PERF_SEL_RESERVED_92 = 92 -CB_PERF_SEL_RESERVED_93 = 93 -CB_PERF_SEL_RESERVED_94 = 94 -CB_PERF_SEL_RESERVED_95 = 95 -CB_PERF_SEL_RESERVED_96 = 96 -CB_PERF_SEL_RESERVED_97 = 97 -CB_PERF_SEL_RESERVED_98 = 98 -CB_PERF_SEL_RESERVED_99 = 99 -CB_PERF_SEL_CC_TAG_HIT = 100 -CB_PERF_SEL_CC_CACHE_TAG_MISS = 101 -CB_PERF_SEL_CC_CACHE_SECTOR_MISS = 102 -CB_PERF_SEL_CC_CACHE_SECTOR_HIT = 103 -CB_PERF_SEL_CC_CACHE_REEVICTION_STALL = 104 -CB_PERF_SEL_CC_CACHE_EVICT_NONZERO_INFLIGHT_STALL = 105 -CB_PERF_SEL_CC_CACHE_REPLACE_PENDING_EVICT_STALL = 106 -CB_PERF_SEL_CC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL = 107 -CB_PERF_SEL_CC_CACHE_READ_OUTPUT_STALL = 108 -CB_PERF_SEL_CC_CACHE_WRITE_OUTPUT_STALL = 109 -CB_PERF_SEL_CC_CACHE_ACK_OUTPUT_STALL = 110 -CB_PERF_SEL_CC_CACHE_STALL = 111 -CB_PERF_SEL_CC_CACHE_FLUSH = 112 -CB_PERF_SEL_CC_CACHE_TAGS_FLUSHED = 113 -CB_PERF_SEL_CC_CACHE_WA_TO_RMW_CONVERSION = 114 -CB_PERF_SEL_CC_CACHE_SECTORS_FLUSHED = 115 -CB_PERF_SEL_CC_CACHE_DIRTY_SECTORS_FLUSHED = 116 -CB_PERF_SEL_CC_CACHE_READS_SAVED_DUE_TO_DCC = 117 -CB_PERF_SEL_RESERVED_118 = 118 -CB_PERF_SEL_RESERVED_119 = 119 -CB_PERF_SEL_RESERVED_120 = 120 -CB_PERF_SEL_RESERVED_121 = 121 -CB_PERF_SEL_RESERVED_122 = 122 -CB_PERF_SEL_RESERVED_123 = 123 -CB_PERF_SEL_RESERVED_124 = 124 -CB_PERF_SEL_RESERVED_125 = 125 -CB_PERF_SEL_RESERVED_126 = 126 -CB_PERF_SEL_RESERVED_127 = 127 -CB_PERF_SEL_RESERVED_128 = 128 -CB_PERF_SEL_RESERVED_129 = 129 -CB_PERF_SEL_RESERVED_130 = 130 -CB_PERF_SEL_RESERVED_131 = 131 -CB_PERF_SEL_RESERVED_132 = 132 -CB_PERF_SEL_RESERVED_133 = 133 -CB_PERF_SEL_RESERVED_134 = 134 -CB_PERF_SEL_RESERVED_135 = 135 -CB_PERF_SEL_RESERVED_136 = 136 -CB_PERF_SEL_RESERVED_137 = 137 -CB_PERF_SEL_RESERVED_138 = 138 -CB_PERF_SEL_RESERVED_139 = 139 -CB_PERF_SEL_RESERVED_140 = 140 -CB_PERF_SEL_RESERVED_141 = 141 -CB_PERF_SEL_RESERVED_142 = 142 -CB_PERF_SEL_RESERVED_143 = 143 -CB_PERF_SEL_RESERVED_144 = 144 -CB_PERF_SEL_RESERVED_145 = 145 -CB_PERF_SEL_RESERVED_146 = 146 -CB_PERF_SEL_RESERVED_147 = 147 -CB_PERF_SEL_RESERVED_148 = 148 -CB_PERF_SEL_RESERVED_149 = 149 -CB_PERF_SEL_DCC_CACHE_PERF_HIT = 150 -CB_PERF_SEL_DCC_CACHE_TAG_MISS = 151 -CB_PERF_SEL_DCC_CACHE_SECTOR_MISS = 152 -CB_PERF_SEL_DCC_CACHE_REEVICTION_STALL = 153 -CB_PERF_SEL_DCC_CACHE_EVICT_NONZERO_INFLIGHT_STALL = 154 -CB_PERF_SEL_DCC_CACHE_REPLACE_PENDING_EVICT_STALL = 155 -CB_PERF_SEL_DCC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL = 156 -CB_PERF_SEL_DCC_CACHE_READ_OUTPUT_STALL = 157 -CB_PERF_SEL_DCC_CACHE_WRITE_OUTPUT_STALL = 158 -CB_PERF_SEL_DCC_CACHE_ACK_OUTPUT_STALL = 159 -CB_PERF_SEL_DCC_CACHE_STALL = 160 -CB_PERF_SEL_DCC_CACHE_FLUSH = 161 -CB_PERF_SEL_DCC_CACHE_SECTORS_FLUSHED = 162 -CB_PERF_SEL_DCC_CACHE_DIRTY_SECTORS_FLUSHED = 163 -CB_PERF_SEL_DCC_CACHE_TAGS_FLUSHED = 164 -CB_PERF_SEL_RESERVED_165 = 165 -CB_PERF_SEL_RESERVED_166 = 166 -CB_PERF_SEL_RESERVED_167 = 167 -CB_PERF_SEL_RESERVED_168 = 168 -CB_PERF_SEL_RESERVED_169 = 169 -CB_PERF_SEL_RESERVED_170 = 170 -CB_PERF_SEL_RESERVED_171 = 171 -CB_PERF_SEL_RESERVED_172 = 172 -CB_PERF_SEL_RESERVED_173 = 173 -CB_PERF_SEL_RESERVED_174 = 174 -CB_PERF_SEL_RESERVED_175 = 175 -CB_PERF_SEL_RESERVED_176 = 176 -CB_PERF_SEL_RESERVED_177 = 177 -CB_PERF_SEL_RESERVED_178 = 178 -CB_PERF_SEL_RESERVED_179 = 179 -CB_PERF_SEL_RESERVED_180 = 180 -CB_PERF_SEL_RESERVED_181 = 181 -CB_PERF_SEL_RESERVED_182 = 182 -CB_PERF_SEL_RESERVED_183 = 183 -CB_PERF_SEL_RESERVED_184 = 184 -CB_PERF_SEL_RESERVED_185 = 185 -CB_PERF_SEL_RESERVED_186 = 186 -CB_PERF_SEL_RESERVED_187 = 187 -CB_PERF_SEL_RESERVED_188 = 188 -CB_PERF_SEL_RESERVED_189 = 189 -CB_PERF_SEL_RESERVED_190 = 190 -CB_PERF_SEL_RESERVED_191 = 191 -CB_PERF_SEL_RESERVED_192 = 192 -CB_PERF_SEL_RESERVED_193 = 193 -CB_PERF_SEL_RESERVED_194 = 194 -CB_PERF_SEL_RESERVED_195 = 195 -CB_PERF_SEL_RESERVED_196 = 196 -CB_PERF_SEL_RESERVED_197 = 197 -CB_PERF_SEL_RESERVED_198 = 198 -CB_PERF_SEL_RESERVED_199 = 199 -CB_PERF_SEL_BLEND_QUAD_DST_READ_COULD_HAVE_BEEN_OPTIMIZED = 200 -CB_PERF_SEL_BLEND_QUAD_BLENDING_COULD_HAVE_BEEN_BYPASSED = 201 -CB_PERF_SEL_BLEND_QUAD_COULD_HAVE_BEEN_DISCARDED = 202 -CB_PERF_SEL_BLEND_OPT_PIXELS_RESULT_EQ_DEST = 203 -CB_PERF_SEL_BLEND_STALL_AT_OUTPUT = 204 -CB_PERF_SEL_RESERVED_205 = 205 -CB_PERF_SEL_RESERVED_206 = 206 -CB_PERF_SEL_RESERVED_207 = 207 -CB_PERF_SEL_RESERVED_208 = 208 -CB_PERF_SEL_RESERVED_209 = 209 -CB_PERF_SEL_RESERVED_210 = 210 -CB_PERF_SEL_RESERVED_211 = 211 -CB_PERF_SEL_RESERVED_212 = 212 -CB_PERF_SEL_RESERVED_213 = 213 -CB_PERF_SEL_RESERVED_214 = 214 -CB_PERF_SEL_RESERVED_215 = 215 -CB_PERF_SEL_RESERVED_216 = 216 -CB_PERF_SEL_RESERVED_217 = 217 -CB_PERF_SEL_RESERVED_218 = 218 -CB_PERF_SEL_RESERVED_219 = 219 -CB_PERF_SEL_RESERVED_220 = 220 -CB_PERF_SEL_RESERVED_221 = 221 -CB_PERF_SEL_RESERVED_222 = 222 -CB_PERF_SEL_RESERVED_223 = 223 -CB_PERF_SEL_RESERVED_224 = 224 -CB_PERF_SEL_RESERVED_225 = 225 -CB_PERF_SEL_RESERVED_226 = 226 -CB_PERF_SEL_RESERVED_227 = 227 -CB_PERF_SEL_RESERVED_228 = 228 -CB_PERF_SEL_RESERVED_229 = 229 -CB_PERF_SEL_RESERVED_230 = 230 -CB_PERF_SEL_RESERVED_231 = 231 -CB_PERF_SEL_RESERVED_232 = 232 -CB_PERF_SEL_RESERVED_233 = 233 -CB_PERF_SEL_RESERVED_234 = 234 -CB_PERF_SEL_RESERVED_235 = 235 -CB_PERF_SEL_RESERVED_236 = 236 -CB_PERF_SEL_RESERVED_237 = 237 -CB_PERF_SEL_RESERVED_238 = 238 -CB_PERF_SEL_RESERVED_239 = 239 -CB_PERF_SEL_RESERVED_240 = 240 -CB_PERF_SEL_RESERVED_241 = 241 -CB_PERF_SEL_RESERVED_242 = 242 -CB_PERF_SEL_RESERVED_243 = 243 -CB_PERF_SEL_RESERVED_244 = 244 -CB_PERF_SEL_RESERVED_245 = 245 -CB_PERF_SEL_RESERVED_246 = 246 -CB_PERF_SEL_RESERVED_247 = 247 -CB_PERF_SEL_RESERVED_248 = 248 -CB_PERF_SEL_RESERVED_249 = 249 -CB_PERF_SEL_EVENT = 250 -CB_PERF_SEL_EVENT_CACHE_FLUSH_TS = 251 -CB_PERF_SEL_EVENT_CONTEXT_DONE = 252 -CB_PERF_SEL_EVENT_CACHE_FLUSH = 253 -CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_TS_EVENT = 254 -CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_EVENT = 255 -CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_DATA_TS = 256 -CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_META = 257 -CB_PERF_SEL_CC_SURFACE_SYNC = 258 -CB_PERF_SEL_RESERVED_259 = 259 -CB_PERF_SEL_RESERVED_260 = 260 -CB_PERF_SEL_RESERVED_261 = 261 -CB_PERF_SEL_RESERVED_262 = 262 -CB_PERF_SEL_RESERVED_263 = 263 -CB_PERF_SEL_RESERVED_264 = 264 -CB_PERF_SEL_RESERVED_265 = 265 -CB_PERF_SEL_RESERVED_266 = 266 -CB_PERF_SEL_RESERVED_267 = 267 -CB_PERF_SEL_RESERVED_268 = 268 -CB_PERF_SEL_RESERVED_269 = 269 -CB_PERF_SEL_RESERVED_270 = 270 -CB_PERF_SEL_RESERVED_271 = 271 -CB_PERF_SEL_RESERVED_272 = 272 -CB_PERF_SEL_RESERVED_273 = 273 -CB_PERF_SEL_RESERVED_274 = 274 -CB_PERF_SEL_RESERVED_275 = 275 -CB_PERF_SEL_RESERVED_276 = 276 -CB_PERF_SEL_RESERVED_277 = 277 -CB_PERF_SEL_RESERVED_278 = 278 -CB_PERF_SEL_RESERVED_279 = 279 -CB_PERF_SEL_RESERVED_280 = 280 -CB_PERF_SEL_RESERVED_281 = 281 -CB_PERF_SEL_RESERVED_282 = 282 -CB_PERF_SEL_RESERVED_283 = 283 -CB_PERF_SEL_RESERVED_284 = 284 -CB_PERF_SEL_RESERVED_285 = 285 -CB_PERF_SEL_RESERVED_286 = 286 -CB_PERF_SEL_RESERVED_287 = 287 -CB_PERF_SEL_RESERVED_288 = 288 -CB_PERF_SEL_RESERVED_289 = 289 -CB_PERF_SEL_RESERVED_290 = 290 -CB_PERF_SEL_RESERVED_291 = 291 -CB_PERF_SEL_RESERVED_292 = 292 -CB_PERF_SEL_RESERVED_293 = 293 -CB_PERF_SEL_RESERVED_294 = 294 -CB_PERF_SEL_RESERVED_295 = 295 -CB_PERF_SEL_RESERVED_296 = 296 -CB_PERF_SEL_RESERVED_297 = 297 -CB_PERF_SEL_RESERVED_298 = 298 -CB_PERF_SEL_RESERVED_299 = 299 -CB_PERF_SEL_NACK_CC_READ = 300 -CB_PERF_SEL_NACK_CC_WRITE = 301 -CB_PERF_SEL_EXPORT_32_ABGR_QUAD_FRAGMENT = 302 -CB_PERF_SEL_RESERVED_303 = 303 -CB_PERF_SEL_RESERVED_304 = 304 -CB_PERF_SEL_RESERVED_305 = 305 -CB_PERF_SEL_RESERVED_306 = 306 -CB_PERF_SEL_RESERVED_307 = 307 -CB_PERF_SEL_RESERVED_308 = 308 -CB_PERF_SEL_RESERVED_309 = 309 -CB_PERF_SEL_RESERVED_310 = 310 -CB_PERF_SEL_RESERVED_311 = 311 -CB_PERF_SEL_RESERVED_312 = 312 -CB_PERF_SEL_RESERVED_313 = 313 -CB_PERF_SEL_RESERVED_314 = 314 -CB_PERF_SEL_RESERVED_315 = 315 -CB_PERF_SEL_RESERVED_316 = 316 -CB_PERF_SEL_RESERVED_317 = 317 -CB_PERF_SEL_RESERVED_318 = 318 -CB_PERF_SEL_RESERVED_319 = 319 -CB_PERF_SEL_RESERVED_320 = 320 -CB_PERF_SEL_RESERVED_321 = 321 -CB_PERF_SEL_RESERVED_322 = 322 -CB_PERF_SEL_RESERVED_323 = 323 -CB_PERF_SEL_RESERVED_324 = 324 -CB_PERF_SEL_RESERVED_325 = 325 -CB_PERF_SEL_RESERVED_326 = 326 -CB_PERF_SEL_RESERVED_327 = 327 -CB_PERF_SEL_RESERVED_328 = 328 -CB_PERF_SEL_RESERVED_329 = 329 -CB_PERF_SEL_RESERVED_330 = 330 -CB_PERF_SEL_RESERVED_331 = 331 -CB_PERF_SEL_RESERVED_332 = 332 -CB_PERF_SEL_RESERVED_333 = 333 -CB_PERF_SEL_RESERVED_334 = 334 -CB_PERF_SEL_RESERVED_335 = 335 -CB_PERF_SEL_RESERVED_336 = 336 -CB_PERF_SEL_RESERVED_337 = 337 -CB_PERF_SEL_RESERVED_338 = 338 -CB_PERF_SEL_RESERVED_339 = 339 -CB_PERF_SEL_RESERVED_340 = 340 -CB_PERF_SEL_RESERVED_341 = 341 -CB_PERF_SEL_RESERVED_342 = 342 -CB_PERF_SEL_RESERVED_343 = 343 -CB_PERF_SEL_RESERVED_344 = 344 -CB_PERF_SEL_RESERVED_345 = 345 -CB_PERF_SEL_RESERVED_346 = 346 -CB_PERF_SEL_RESERVED_347 = 347 -CB_PERF_SEL_RESERVED_348 = 348 -CB_PERF_SEL_RESERVED_349 = 349 -CB_PERF_SEL_RESERVED_350 = 350 -CB_PERF_SEL_RESERVED_351 = 351 -CB_PERF_SEL_RESERVED_352 = 352 -CB_PERF_SEL_RESERVED_353 = 353 -CB_PERF_SEL_RESERVED_354 = 354 -CB_PERF_SEL_RESERVED_355 = 355 -CB_PERF_SEL_RESERVED_356 = 356 -CB_PERF_SEL_RESERVED_357 = 357 -CB_PERF_SEL_RESERVED_358 = 358 -CB_PERF_SEL_RESERVED_359 = 359 -CB_PERF_SEL_RESERVED_360 = 360 -CB_PERF_SEL_RESERVED_361 = 361 -CB_PERF_SEL_RESERVED_362 = 362 -CB_PERF_SEL_RESERVED_363 = 363 -CB_PERF_SEL_RESERVED_364 = 364 -CB_PERF_SEL_RESERVED_365 = 365 -CB_PERF_SEL_RESERVED_366 = 366 -CB_PERF_SEL_RESERVED_367 = 367 -CB_PERF_SEL_RESERVED_368 = 368 -CB_PERF_SEL_RESERVED_369 = 369 -CB_PERF_SEL_RESERVED_370 = 370 -CB_PERF_SEL_RESERVED_371 = 371 -CB_PERF_SEL_RESERVED_372 = 372 -CB_PERF_SEL_RESERVED_373 = 373 -CB_PERF_SEL_RESERVED_374 = 374 -CB_PERF_SEL_RESERVED_375 = 375 -CB_PERF_SEL_RESERVED_376 = 376 -CB_PERF_SEL_RESERVED_377 = 377 -CB_PERF_SEL_RESERVED_378 = 378 -CB_PERF_SEL_RESERVED_379 = 379 -CB_PERF_SEL_RESERVED_380 = 380 -CB_PERF_SEL_RESERVED_381 = 381 -CB_PERF_SEL_RESERVED_382 = 382 -CB_PERF_SEL_RESERVED_383 = 383 -CB_PERF_SEL_RESERVED_384 = 384 -CB_PERF_SEL_RESERVED_385 = 385 -CB_PERF_SEL_RESERVED_386 = 386 -CB_PERF_SEL_RESERVED_387 = 387 -CB_PERF_SEL_RESERVED_388 = 388 -CB_PERF_SEL_RESERVED_389 = 389 -CB_PERF_SEL_RESERVED_390 = 390 -CB_PERF_SEL_RESERVED_391 = 391 -CB_PERF_SEL_RESERVED_392 = 392 -CB_PERF_SEL_RESERVED_393 = 393 -CB_PERF_SEL_RESERVED_394 = 394 -CB_PERF_SEL_RESERVED_395 = 395 -CB_PERF_SEL_RESERVED_396 = 396 -CB_PERF_SEL_RESERVED_397 = 397 -CB_PERF_SEL_RESERVED_398 = 398 -CB_PERF_SEL_RESERVED_399 = 399 -CB_PERF_SEL_RESERVED_400 = 400 -CB_PERF_SEL_RESERVED_401 = 401 -CB_PERF_SEL_RESERVED_402 = 402 -CB_PERF_SEL_RESERVED_403 = 403 -CB_PERF_SEL_RESERVED_404 = 404 -CB_PERF_SEL_RESERVED_405 = 405 -CB_PERF_SEL_RESERVED_406 = 406 -CB_PERF_SEL_RESERVED_407 = 407 -CB_PERF_SEL_RESERVED_408 = 408 -CB_PERF_SEL_RESERVED_409 = 409 -CB_PERF_SEL_RESERVED_410 = 410 -CB_PERF_SEL_RESERVED_411 = 411 -CB_PERF_SEL_RESERVED_412 = 412 -CB_PERF_SEL_RESERVED_413 = 413 -CB_PERF_SEL_RESERVED_414 = 414 -CB_PERF_SEL_RESERVED_415 = 415 -CB_PERF_SEL_RESERVED_416 = 416 -CB_PERF_SEL_RESERVED_417 = 417 -CB_PERF_SEL_RESERVED_418 = 418 -CB_PERF_SEL_RESERVED_419 = 419 -CB_PERF_SEL_RESERVED_420 = 420 -CB_PERF_SEL_RESERVED_421 = 421 -CB_PERF_SEL_RESERVED_422 = 422 -CB_PERF_SEL_RESERVED_423 = 423 -CB_PERF_SEL_RESERVED_424 = 424 -CB_PERF_SEL_RESERVED_425 = 425 -CB_PERF_SEL_RESERVED_426 = 426 -CB_PERF_SEL_RESERVED_427 = 427 -CB_PERF_SEL_RESERVED_428 = 428 -CB_PERF_SEL_RESERVED_429 = 429 -CB_PERF_SEL_RESERVED_430 = 430 -CB_PERF_SEL_RESERVED_431 = 431 -CB_PERF_SEL_RESERVED_432 = 432 -CB_PERF_SEL_RESERVED_433 = 433 -CB_PERF_SEL_RESERVED_434 = 434 -CB_PERF_SEL_RESERVED_435 = 435 -CB_PERF_SEL_RESERVED_436 = 436 -CB_PERF_SEL_RESERVED_437 = 437 -CB_PERF_SEL_RESERVED_438 = 438 -CB_PERF_SEL_RESERVED_439 = 439 -CB_PERF_SEL_RESERVED_440 = 440 -CB_PERF_SEL_RESERVED_441 = 441 -CB_PERF_SEL_RESERVED_442 = 442 -CB_PERF_SEL_RESERVED_443 = 443 -CB_PERF_SEL_RESERVED_444 = 444 -CB_PERF_SEL_RESERVED_445 = 445 -CB_PERF_SEL_RESERVED_446 = 446 -CB_PERF_SEL_RESERVED_447 = 447 -CB_PERF_SEL_RESERVED_448 = 448 -CB_PERF_SEL_RESERVED_449 = 449 -CB_PERF_SEL_RESERVED_450 = 450 -CB_PERF_SEL_RESERVED_451 = 451 -CB_PERF_SEL_RESERVED_452 = 452 -CB_PERF_SEL_RESERVED_453 = 453 -CB_PERF_SEL_RESERVED_454 = 454 -CB_PERF_SEL_RESERVED_455 = 455 -CB_PERF_SEL_RESERVED_456 = 456 -CB_PERF_SEL_RESERVED_457 = 457 -CB_PERF_SEL_RESERVED_458 = 458 -CB_PERF_SEL_RESERVED_459 = 459 -CB_PERF_SEL_RESERVED_460 = 460 -CB_PERF_SEL_RESERVED_461 = 461 -CB_PERF_SEL_RESERVED_462 = 462 -CB_PERF_SEL_RESERVED_463 = 463 -CB_PERF_SEL_RESERVED_464 = 464 -CB_PERF_SEL_RESERVED_465 = 465 -CBPerfSel = ctypes.c_uint32 # enum - -# values for enumeration 'CBRamList' -CBRamList__enumvalues = { - 0: 'CB_DCG_CCC_CAS_TAG_ARRAY', - 1: 'CB_DCG_CCC_CAS_FRAG_PTR', - 2: 'CB_DCG_CCC_CAS_COLOR_PTR', - 3: 'CB_DCG_CCC_CAS_SURF_PARAM', - 4: 'CB_DCG_CCC_CAS_KEYID', - 5: 'CB_DCG_BACKEND_RDLAT_FIFO', - 6: 'CB_DCG_FRONTEND_RDLAT_FIFO', - 7: 'CB_DCG_SRC_FIFO', - 8: 'CB_DCG_COLOR_STORE', - 9: 'CB_DCG_COLOR_STORE_DIRTY_BYTE', - 10: 'CB_DCG_FMASK_CACHE_STORE', - 11: 'CB_DCG_READ_SKID_FIFO', - 12: 'CB_DCG_QUAD_PTR_FIFO', - 13: 'CB_DCG_OUTPUT_FIFO', - 14: 'CB_DCG_DCC_CACHE', - 15: 'CB_DCG_DCC_DIRTY_BITS', - 16: 'CB_DCG_QBLOCK_ALLOC', -} -CB_DCG_CCC_CAS_TAG_ARRAY = 0 -CB_DCG_CCC_CAS_FRAG_PTR = 1 -CB_DCG_CCC_CAS_COLOR_PTR = 2 -CB_DCG_CCC_CAS_SURF_PARAM = 3 -CB_DCG_CCC_CAS_KEYID = 4 -CB_DCG_BACKEND_RDLAT_FIFO = 5 -CB_DCG_FRONTEND_RDLAT_FIFO = 6 -CB_DCG_SRC_FIFO = 7 -CB_DCG_COLOR_STORE = 8 -CB_DCG_COLOR_STORE_DIRTY_BYTE = 9 -CB_DCG_FMASK_CACHE_STORE = 10 -CB_DCG_READ_SKID_FIFO = 11 -CB_DCG_QUAD_PTR_FIFO = 12 -CB_DCG_OUTPUT_FIFO = 13 -CB_DCG_DCC_CACHE = 14 -CB_DCG_DCC_DIRTY_BITS = 15 -CB_DCG_QBLOCK_ALLOC = 16 -CBRamList = ctypes.c_uint32 # enum - -# values for enumeration 'CmaskCode' -CmaskCode__enumvalues = { - 0: 'CMASK_CLR00_F0', - 1: 'CMASK_CLR00_F1', - 2: 'CMASK_CLR00_F2', - 3: 'CMASK_CLR00_FX', - 4: 'CMASK_CLR01_F0', - 5: 'CMASK_CLR01_F1', - 6: 'CMASK_CLR01_F2', - 7: 'CMASK_CLR01_FX', - 8: 'CMASK_CLR10_F0', - 9: 'CMASK_CLR10_F1', - 10: 'CMASK_CLR10_F2', - 11: 'CMASK_CLR10_FX', - 12: 'CMASK_CLR11_F0', - 13: 'CMASK_CLR11_F1', - 14: 'CMASK_CLR11_F2', - 15: 'CMASK_CLR11_FX', -} -CMASK_CLR00_F0 = 0 -CMASK_CLR00_F1 = 1 -CMASK_CLR00_F2 = 2 -CMASK_CLR00_FX = 3 -CMASK_CLR01_F0 = 4 -CMASK_CLR01_F1 = 5 -CMASK_CLR01_F2 = 6 -CMASK_CLR01_FX = 7 -CMASK_CLR10_F0 = 8 -CMASK_CLR10_F1 = 9 -CMASK_CLR10_F2 = 10 -CMASK_CLR10_FX = 11 -CMASK_CLR11_F0 = 12 -CMASK_CLR11_F1 = 13 -CMASK_CLR11_F2 = 14 -CMASK_CLR11_FX = 15 -CmaskCode = ctypes.c_uint32 # enum - -# values for enumeration 'CombFunc' -CombFunc__enumvalues = { - 0: 'COMB_DST_PLUS_SRC', - 1: 'COMB_SRC_MINUS_DST', - 2: 'COMB_MIN_DST_SRC', - 3: 'COMB_MAX_DST_SRC', - 4: 'COMB_DST_MINUS_SRC', -} -COMB_DST_PLUS_SRC = 0 -COMB_SRC_MINUS_DST = 1 -COMB_MIN_DST_SRC = 2 -COMB_MAX_DST_SRC = 3 -COMB_DST_MINUS_SRC = 4 -CombFunc = ctypes.c_uint32 # enum - -# values for enumeration 'MemArbMode' -MemArbMode__enumvalues = { - 0: 'MEM_ARB_MODE_FIXED', - 1: 'MEM_ARB_MODE_AGE', - 2: 'MEM_ARB_MODE_WEIGHT', - 3: 'MEM_ARB_MODE_BOTH', -} -MEM_ARB_MODE_FIXED = 0 -MEM_ARB_MODE_AGE = 1 -MEM_ARB_MODE_WEIGHT = 2 -MEM_ARB_MODE_BOTH = 3 -MemArbMode = ctypes.c_uint32 # enum - -# values for enumeration 'SourceFormat' -SourceFormat__enumvalues = { - 0: 'EXPORT_4C_32BPC', - 1: 'EXPORT_4C_16BPC', - 2: 'EXPORT_2C_32BPC_GR', - 3: 'EXPORT_2C_32BPC_AR', -} -EXPORT_4C_32BPC = 0 -EXPORT_4C_16BPC = 1 -EXPORT_2C_32BPC_GR = 2 -EXPORT_2C_32BPC_AR = 3 -SourceFormat = ctypes.c_uint32 # enum - -# values for enumeration 'BinEventCntl' -BinEventCntl__enumvalues = { - 0: 'BINNER_BREAK_BATCH', - 1: 'BINNER_PIPELINE', - 2: 'BINNER_DROP', - 3: 'BINNER_PIPELINE_BREAK', -} -BINNER_BREAK_BATCH = 0 -BINNER_PIPELINE = 1 -BINNER_DROP = 2 -BINNER_PIPELINE_BREAK = 3 -BinEventCntl = ctypes.c_uint32 # enum - -# values for enumeration 'BinMapMode' -BinMapMode__enumvalues = { - 0: 'BIN_MAP_MODE_NONE', - 1: 'BIN_MAP_MODE_RTA_INDEX', - 2: 'BIN_MAP_MODE_POPS', -} -BIN_MAP_MODE_NONE = 0 -BIN_MAP_MODE_RTA_INDEX = 1 -BIN_MAP_MODE_POPS = 2 -BinMapMode = ctypes.c_uint32 # enum - -# values for enumeration 'BinSizeExtend' -BinSizeExtend__enumvalues = { - 0: 'BIN_SIZE_32_PIXELS', - 1: 'BIN_SIZE_64_PIXELS', - 2: 'BIN_SIZE_128_PIXELS', - 3: 'BIN_SIZE_256_PIXELS', - 4: 'BIN_SIZE_512_PIXELS', -} -BIN_SIZE_32_PIXELS = 0 -BIN_SIZE_64_PIXELS = 1 -BIN_SIZE_128_PIXELS = 2 -BIN_SIZE_256_PIXELS = 3 -BIN_SIZE_512_PIXELS = 4 -BinSizeExtend = ctypes.c_uint32 # enum - -# values for enumeration 'BinningMode' -BinningMode__enumvalues = { - 0: 'BINNING_ALLOWED', - 1: 'FORCE_BINNING_ON', - 2: 'DISABLE_BINNING_USE_NEW_SC', - 3: 'DISABLE_BINNING_USE_LEGACY_SC', -} -BINNING_ALLOWED = 0 -FORCE_BINNING_ON = 1 -DISABLE_BINNING_USE_NEW_SC = 2 -DISABLE_BINNING_USE_LEGACY_SC = 3 -BinningMode = ctypes.c_uint32 # enum - -# values for enumeration 'CovToShaderSel' -CovToShaderSel__enumvalues = { - 0: 'INPUT_COVERAGE', - 1: 'INPUT_INNER_COVERAGE', - 2: 'INPUT_DEPTH_COVERAGE', - 3: 'RAW', -} -INPUT_COVERAGE = 0 -INPUT_INNER_COVERAGE = 1 -INPUT_DEPTH_COVERAGE = 2 -RAW = 3 -CovToShaderSel = ctypes.c_uint32 # enum - -# values for enumeration 'PkrMap' -PkrMap__enumvalues = { - 0: 'RASTER_CONFIG_PKR_MAP_0', - 1: 'RASTER_CONFIG_PKR_MAP_1', - 2: 'RASTER_CONFIG_PKR_MAP_2', - 3: 'RASTER_CONFIG_PKR_MAP_3', -} -RASTER_CONFIG_PKR_MAP_0 = 0 -RASTER_CONFIG_PKR_MAP_1 = 1 -RASTER_CONFIG_PKR_MAP_2 = 2 -RASTER_CONFIG_PKR_MAP_3 = 3 -PkrMap = ctypes.c_uint32 # enum - -# values for enumeration 'PkrXsel' -PkrXsel__enumvalues = { - 0: 'RASTER_CONFIG_PKR_XSEL_0', - 1: 'RASTER_CONFIG_PKR_XSEL_1', - 2: 'RASTER_CONFIG_PKR_XSEL_2', - 3: 'RASTER_CONFIG_PKR_XSEL_3', -} -RASTER_CONFIG_PKR_XSEL_0 = 0 -RASTER_CONFIG_PKR_XSEL_1 = 1 -RASTER_CONFIG_PKR_XSEL_2 = 2 -RASTER_CONFIG_PKR_XSEL_3 = 3 -PkrXsel = ctypes.c_uint32 # enum - -# values for enumeration 'PkrXsel2' -PkrXsel2__enumvalues = { - 0: 'RASTER_CONFIG_PKR_XSEL2_0', - 1: 'RASTER_CONFIG_PKR_XSEL2_1', - 2: 'RASTER_CONFIG_PKR_XSEL2_2', - 3: 'RASTER_CONFIG_PKR_XSEL2_3', -} -RASTER_CONFIG_PKR_XSEL2_0 = 0 -RASTER_CONFIG_PKR_XSEL2_1 = 1 -RASTER_CONFIG_PKR_XSEL2_2 = 2 -RASTER_CONFIG_PKR_XSEL2_3 = 3 -PkrXsel2 = ctypes.c_uint32 # enum - -# values for enumeration 'PkrYsel' -PkrYsel__enumvalues = { - 0: 'RASTER_CONFIG_PKR_YSEL_0', - 1: 'RASTER_CONFIG_PKR_YSEL_1', - 2: 'RASTER_CONFIG_PKR_YSEL_2', - 3: 'RASTER_CONFIG_PKR_YSEL_3', -} -RASTER_CONFIG_PKR_YSEL_0 = 0 -RASTER_CONFIG_PKR_YSEL_1 = 1 -RASTER_CONFIG_PKR_YSEL_2 = 2 -RASTER_CONFIG_PKR_YSEL_3 = 3 -PkrYsel = ctypes.c_uint32 # enum - -# values for enumeration 'RbMap' -RbMap__enumvalues = { - 0: 'RASTER_CONFIG_RB_MAP_0', - 1: 'RASTER_CONFIG_RB_MAP_1', - 2: 'RASTER_CONFIG_RB_MAP_2', - 3: 'RASTER_CONFIG_RB_MAP_3', -} -RASTER_CONFIG_RB_MAP_0 = 0 -RASTER_CONFIG_RB_MAP_1 = 1 -RASTER_CONFIG_RB_MAP_2 = 2 -RASTER_CONFIG_RB_MAP_3 = 3 -RbMap = ctypes.c_uint32 # enum - -# values for enumeration 'RbXsel' -RbXsel__enumvalues = { - 0: 'RASTER_CONFIG_RB_XSEL_0', - 1: 'RASTER_CONFIG_RB_XSEL_1', -} -RASTER_CONFIG_RB_XSEL_0 = 0 -RASTER_CONFIG_RB_XSEL_1 = 1 -RbXsel = ctypes.c_uint32 # enum - -# values for enumeration 'RbXsel2' -RbXsel2__enumvalues = { - 0: 'RASTER_CONFIG_RB_XSEL2_0', - 1: 'RASTER_CONFIG_RB_XSEL2_1', - 2: 'RASTER_CONFIG_RB_XSEL2_2', - 3: 'RASTER_CONFIG_RB_XSEL2_3', -} -RASTER_CONFIG_RB_XSEL2_0 = 0 -RASTER_CONFIG_RB_XSEL2_1 = 1 -RASTER_CONFIG_RB_XSEL2_2 = 2 -RASTER_CONFIG_RB_XSEL2_3 = 3 -RbXsel2 = ctypes.c_uint32 # enum - -# values for enumeration 'RbYsel' -RbYsel__enumvalues = { - 0: 'RASTER_CONFIG_RB_YSEL_0', - 1: 'RASTER_CONFIG_RB_YSEL_1', -} -RASTER_CONFIG_RB_YSEL_0 = 0 -RASTER_CONFIG_RB_YSEL_1 = 1 -RbYsel = ctypes.c_uint32 # enum - -# values for enumeration 'SC_PERFCNT_SEL' -SC_PERFCNT_SEL__enumvalues = { - 0: 'SC_SRPS_WINDOW_VALID', - 1: 'SC_PSSW_WINDOW_VALID', - 2: 'SC_TPQZ_WINDOW_VALID', - 3: 'SC_QZQP_WINDOW_VALID', - 4: 'SC_TRPK_WINDOW_VALID', - 5: 'SC_SRPS_WINDOW_VALID_BUSY', - 6: 'SC_PSSW_WINDOW_VALID_BUSY', - 7: 'SC_TPQZ_WINDOW_VALID_BUSY', - 8: 'SC_QZQP_WINDOW_VALID_BUSY', - 9: 'SC_TRPK_WINDOW_VALID_BUSY', - 10: 'SC_STARVED_BY_PA', - 11: 'SC_STALLED_BY_PRIMFIFO', - 12: 'SC_STALLED_BY_DB_TILE', - 13: 'SC_STARVED_BY_DB_TILE', - 14: 'SC_STALLED_BY_TILEORDERFIFO', - 15: 'SC_STALLED_BY_TILEFIFO', - 16: 'SC_STALLED_BY_DB_QUAD', - 17: 'SC_STARVED_BY_DB_QUAD', - 18: 'SC_STALLED_BY_QUADFIFO', - 19: 'SC_STALLED_BY_BCI', - 20: 'SC_STALLED_BY_SPI', - 21: 'SC_SCISSOR_DISCARD', - 22: 'SC_BB_DISCARD', - 23: 'SC_SUPERTILE_COUNT', - 24: 'SC_SUPERTILE_PER_PRIM_H0', - 25: 'SC_SUPERTILE_PER_PRIM_H1', - 26: 'SC_SUPERTILE_PER_PRIM_H2', - 27: 'SC_SUPERTILE_PER_PRIM_H3', - 28: 'SC_SUPERTILE_PER_PRIM_H4', - 29: 'SC_SUPERTILE_PER_PRIM_H5', - 30: 'SC_SUPERTILE_PER_PRIM_H6', - 31: 'SC_SUPERTILE_PER_PRIM_H7', - 32: 'SC_SUPERTILE_PER_PRIM_H8', - 33: 'SC_SUPERTILE_PER_PRIM_H9', - 34: 'SC_SUPERTILE_PER_PRIM_H10', - 35: 'SC_SUPERTILE_PER_PRIM_H11', - 36: 'SC_SUPERTILE_PER_PRIM_H12', - 37: 'SC_SUPERTILE_PER_PRIM_H13', - 38: 'SC_SUPERTILE_PER_PRIM_H14', - 39: 'SC_SUPERTILE_PER_PRIM_H15', - 40: 'SC_SUPERTILE_PER_PRIM_H16', - 41: 'SC_TILE_PER_PRIM_H0', - 42: 'SC_TILE_PER_PRIM_H1', - 43: 'SC_TILE_PER_PRIM_H2', - 44: 'SC_TILE_PER_PRIM_H3', - 45: 'SC_TILE_PER_PRIM_H4', - 46: 'SC_TILE_PER_PRIM_H5', - 47: 'SC_TILE_PER_PRIM_H6', - 48: 'SC_TILE_PER_PRIM_H7', - 49: 'SC_TILE_PER_PRIM_H8', - 50: 'SC_TILE_PER_PRIM_H9', - 51: 'SC_TILE_PER_PRIM_H10', - 52: 'SC_TILE_PER_PRIM_H11', - 53: 'SC_TILE_PER_PRIM_H12', - 54: 'SC_TILE_PER_PRIM_H13', - 55: 'SC_TILE_PER_PRIM_H14', - 56: 'SC_TILE_PER_PRIM_H15', - 57: 'SC_TILE_PER_PRIM_H16', - 58: 'SC_TILE_PER_SUPERTILE_H0', - 59: 'SC_TILE_PER_SUPERTILE_H1', - 60: 'SC_TILE_PER_SUPERTILE_H2', - 61: 'SC_TILE_PER_SUPERTILE_H3', - 62: 'SC_TILE_PER_SUPERTILE_H4', - 63: 'SC_TILE_PER_SUPERTILE_H5', - 64: 'SC_TILE_PER_SUPERTILE_H6', - 65: 'SC_TILE_PER_SUPERTILE_H7', - 66: 'SC_TILE_PER_SUPERTILE_H8', - 67: 'SC_TILE_PER_SUPERTILE_H9', - 68: 'SC_TILE_PER_SUPERTILE_H10', - 69: 'SC_TILE_PER_SUPERTILE_H11', - 70: 'SC_TILE_PER_SUPERTILE_H12', - 71: 'SC_TILE_PER_SUPERTILE_H13', - 72: 'SC_TILE_PER_SUPERTILE_H14', - 73: 'SC_TILE_PER_SUPERTILE_H15', - 74: 'SC_TILE_PER_SUPERTILE_H16', - 75: 'SC_TILE_PICKED_H1', - 76: 'SC_TILE_PICKED_H2', - 77: 'SC_TILE_PICKED_H3', - 78: 'SC_TILE_PICKED_H4', - 79: 'SC_QZ0_TILE_COUNT', - 80: 'SC_QZ1_TILE_COUNT', - 81: 'SC_QZ2_TILE_COUNT', - 82: 'SC_QZ3_TILE_COUNT', - 83: 'SC_QZ0_TILE_COVERED_COUNT', - 84: 'SC_QZ1_TILE_COVERED_COUNT', - 85: 'SC_QZ2_TILE_COVERED_COUNT', - 86: 'SC_QZ3_TILE_COVERED_COUNT', - 87: 'SC_QZ0_TILE_NOT_COVERED_COUNT', - 88: 'SC_QZ1_TILE_NOT_COVERED_COUNT', - 89: 'SC_QZ2_TILE_NOT_COVERED_COUNT', - 90: 'SC_QZ3_TILE_NOT_COVERED_COUNT', - 91: 'SC_QZ0_QUAD_PER_TILE_H0', - 92: 'SC_QZ0_QUAD_PER_TILE_H1', - 93: 'SC_QZ0_QUAD_PER_TILE_H2', - 94: 'SC_QZ0_QUAD_PER_TILE_H3', - 95: 'SC_QZ0_QUAD_PER_TILE_H4', - 96: 'SC_QZ0_QUAD_PER_TILE_H5', - 97: 'SC_QZ0_QUAD_PER_TILE_H6', - 98: 'SC_QZ0_QUAD_PER_TILE_H7', - 99: 'SC_QZ0_QUAD_PER_TILE_H8', - 100: 'SC_QZ0_QUAD_PER_TILE_H9', - 101: 'SC_QZ0_QUAD_PER_TILE_H10', - 102: 'SC_QZ0_QUAD_PER_TILE_H11', - 103: 'SC_QZ0_QUAD_PER_TILE_H12', - 104: 'SC_QZ0_QUAD_PER_TILE_H13', - 105: 'SC_QZ0_QUAD_PER_TILE_H14', - 106: 'SC_QZ0_QUAD_PER_TILE_H15', - 107: 'SC_QZ0_QUAD_PER_TILE_H16', - 108: 'SC_QZ1_QUAD_PER_TILE_H0', - 109: 'SC_QZ1_QUAD_PER_TILE_H1', - 110: 'SC_QZ1_QUAD_PER_TILE_H2', - 111: 'SC_QZ1_QUAD_PER_TILE_H3', - 112: 'SC_QZ1_QUAD_PER_TILE_H4', - 113: 'SC_QZ1_QUAD_PER_TILE_H5', - 114: 'SC_QZ1_QUAD_PER_TILE_H6', - 115: 'SC_QZ1_QUAD_PER_TILE_H7', - 116: 'SC_QZ1_QUAD_PER_TILE_H8', - 117: 'SC_QZ1_QUAD_PER_TILE_H9', - 118: 'SC_QZ1_QUAD_PER_TILE_H10', - 119: 'SC_QZ1_QUAD_PER_TILE_H11', - 120: 'SC_QZ1_QUAD_PER_TILE_H12', - 121: 'SC_QZ1_QUAD_PER_TILE_H13', - 122: 'SC_QZ1_QUAD_PER_TILE_H14', - 123: 'SC_QZ1_QUAD_PER_TILE_H15', - 124: 'SC_QZ1_QUAD_PER_TILE_H16', - 125: 'SC_QZ2_QUAD_PER_TILE_H0', - 126: 'SC_QZ2_QUAD_PER_TILE_H1', - 127: 'SC_QZ2_QUAD_PER_TILE_H2', - 128: 'SC_QZ2_QUAD_PER_TILE_H3', - 129: 'SC_QZ2_QUAD_PER_TILE_H4', - 130: 'SC_QZ2_QUAD_PER_TILE_H5', - 131: 'SC_QZ2_QUAD_PER_TILE_H6', - 132: 'SC_QZ2_QUAD_PER_TILE_H7', - 133: 'SC_QZ2_QUAD_PER_TILE_H8', - 134: 'SC_QZ2_QUAD_PER_TILE_H9', - 135: 'SC_QZ2_QUAD_PER_TILE_H10', - 136: 'SC_QZ2_QUAD_PER_TILE_H11', - 137: 'SC_QZ2_QUAD_PER_TILE_H12', - 138: 'SC_QZ2_QUAD_PER_TILE_H13', - 139: 'SC_QZ2_QUAD_PER_TILE_H14', - 140: 'SC_QZ2_QUAD_PER_TILE_H15', - 141: 'SC_QZ2_QUAD_PER_TILE_H16', - 142: 'SC_QZ3_QUAD_PER_TILE_H0', - 143: 'SC_QZ3_QUAD_PER_TILE_H1', - 144: 'SC_QZ3_QUAD_PER_TILE_H2', - 145: 'SC_QZ3_QUAD_PER_TILE_H3', - 146: 'SC_QZ3_QUAD_PER_TILE_H4', - 147: 'SC_QZ3_QUAD_PER_TILE_H5', - 148: 'SC_QZ3_QUAD_PER_TILE_H6', - 149: 'SC_QZ3_QUAD_PER_TILE_H7', - 150: 'SC_QZ3_QUAD_PER_TILE_H8', - 151: 'SC_QZ3_QUAD_PER_TILE_H9', - 152: 'SC_QZ3_QUAD_PER_TILE_H10', - 153: 'SC_QZ3_QUAD_PER_TILE_H11', - 154: 'SC_QZ3_QUAD_PER_TILE_H12', - 155: 'SC_QZ3_QUAD_PER_TILE_H13', - 156: 'SC_QZ3_QUAD_PER_TILE_H14', - 157: 'SC_QZ3_QUAD_PER_TILE_H15', - 158: 'SC_QZ3_QUAD_PER_TILE_H16', - 159: 'SC_QZ0_QUAD_COUNT', - 160: 'SC_QZ1_QUAD_COUNT', - 161: 'SC_QZ2_QUAD_COUNT', - 162: 'SC_QZ3_QUAD_COUNT', - 163: 'SC_P0_HIZ_TILE_COUNT', - 164: 'SC_P1_HIZ_TILE_COUNT', - 165: 'SC_P2_HIZ_TILE_COUNT', - 166: 'SC_P3_HIZ_TILE_COUNT', - 167: 'SC_P0_HIZ_QUAD_PER_TILE_H0', - 168: 'SC_P0_HIZ_QUAD_PER_TILE_H1', - 169: 'SC_P0_HIZ_QUAD_PER_TILE_H2', - 170: 'SC_P0_HIZ_QUAD_PER_TILE_H3', - 171: 'SC_P0_HIZ_QUAD_PER_TILE_H4', - 172: 'SC_P0_HIZ_QUAD_PER_TILE_H5', - 173: 'SC_P0_HIZ_QUAD_PER_TILE_H6', - 174: 'SC_P0_HIZ_QUAD_PER_TILE_H7', - 175: 'SC_P0_HIZ_QUAD_PER_TILE_H8', - 176: 'SC_P0_HIZ_QUAD_PER_TILE_H9', - 177: 'SC_P0_HIZ_QUAD_PER_TILE_H10', - 178: 'SC_P0_HIZ_QUAD_PER_TILE_H11', - 179: 'SC_P0_HIZ_QUAD_PER_TILE_H12', - 180: 'SC_P0_HIZ_QUAD_PER_TILE_H13', - 181: 'SC_P0_HIZ_QUAD_PER_TILE_H14', - 182: 'SC_P0_HIZ_QUAD_PER_TILE_H15', - 183: 'SC_P0_HIZ_QUAD_PER_TILE_H16', - 184: 'SC_P1_HIZ_QUAD_PER_TILE_H0', - 185: 'SC_P1_HIZ_QUAD_PER_TILE_H1', - 186: 'SC_P1_HIZ_QUAD_PER_TILE_H2', - 187: 'SC_P1_HIZ_QUAD_PER_TILE_H3', - 188: 'SC_P1_HIZ_QUAD_PER_TILE_H4', - 189: 'SC_P1_HIZ_QUAD_PER_TILE_H5', - 190: 'SC_P1_HIZ_QUAD_PER_TILE_H6', - 191: 'SC_P1_HIZ_QUAD_PER_TILE_H7', - 192: 'SC_P1_HIZ_QUAD_PER_TILE_H8', - 193: 'SC_P1_HIZ_QUAD_PER_TILE_H9', - 194: 'SC_P1_HIZ_QUAD_PER_TILE_H10', - 195: 'SC_P1_HIZ_QUAD_PER_TILE_H11', - 196: 'SC_P1_HIZ_QUAD_PER_TILE_H12', - 197: 'SC_P1_HIZ_QUAD_PER_TILE_H13', - 198: 'SC_P1_HIZ_QUAD_PER_TILE_H14', - 199: 'SC_P1_HIZ_QUAD_PER_TILE_H15', - 200: 'SC_P1_HIZ_QUAD_PER_TILE_H16', - 201: 'SC_P2_HIZ_QUAD_PER_TILE_H0', - 202: 'SC_P2_HIZ_QUAD_PER_TILE_H1', - 203: 'SC_P2_HIZ_QUAD_PER_TILE_H2', - 204: 'SC_P2_HIZ_QUAD_PER_TILE_H3', - 205: 'SC_P2_HIZ_QUAD_PER_TILE_H4', - 206: 'SC_P2_HIZ_QUAD_PER_TILE_H5', - 207: 'SC_P2_HIZ_QUAD_PER_TILE_H6', - 208: 'SC_P2_HIZ_QUAD_PER_TILE_H7', - 209: 'SC_P2_HIZ_QUAD_PER_TILE_H8', - 210: 'SC_P2_HIZ_QUAD_PER_TILE_H9', - 211: 'SC_P2_HIZ_QUAD_PER_TILE_H10', - 212: 'SC_P2_HIZ_QUAD_PER_TILE_H11', - 213: 'SC_P2_HIZ_QUAD_PER_TILE_H12', - 214: 'SC_P2_HIZ_QUAD_PER_TILE_H13', - 215: 'SC_P2_HIZ_QUAD_PER_TILE_H14', - 216: 'SC_P2_HIZ_QUAD_PER_TILE_H15', - 217: 'SC_P2_HIZ_QUAD_PER_TILE_H16', - 218: 'SC_P3_HIZ_QUAD_PER_TILE_H0', - 219: 'SC_P3_HIZ_QUAD_PER_TILE_H1', - 220: 'SC_P3_HIZ_QUAD_PER_TILE_H2', - 221: 'SC_P3_HIZ_QUAD_PER_TILE_H3', - 222: 'SC_P3_HIZ_QUAD_PER_TILE_H4', - 223: 'SC_P3_HIZ_QUAD_PER_TILE_H5', - 224: 'SC_P3_HIZ_QUAD_PER_TILE_H6', - 225: 'SC_P3_HIZ_QUAD_PER_TILE_H7', - 226: 'SC_P3_HIZ_QUAD_PER_TILE_H8', - 227: 'SC_P3_HIZ_QUAD_PER_TILE_H9', - 228: 'SC_P3_HIZ_QUAD_PER_TILE_H10', - 229: 'SC_P3_HIZ_QUAD_PER_TILE_H11', - 230: 'SC_P3_HIZ_QUAD_PER_TILE_H12', - 231: 'SC_P3_HIZ_QUAD_PER_TILE_H13', - 232: 'SC_P3_HIZ_QUAD_PER_TILE_H14', - 233: 'SC_P3_HIZ_QUAD_PER_TILE_H15', - 234: 'SC_P3_HIZ_QUAD_PER_TILE_H16', - 235: 'SC_P0_HIZ_QUAD_COUNT', - 236: 'SC_P1_HIZ_QUAD_COUNT', - 237: 'SC_P2_HIZ_QUAD_COUNT', - 238: 'SC_P3_HIZ_QUAD_COUNT', - 239: 'SC_P0_DETAIL_QUAD_COUNT', - 240: 'SC_P1_DETAIL_QUAD_COUNT', - 241: 'SC_P2_DETAIL_QUAD_COUNT', - 242: 'SC_P3_DETAIL_QUAD_COUNT', - 243: 'SC_P0_DETAIL_QUAD_WITH_1_PIX', - 244: 'SC_P0_DETAIL_QUAD_WITH_2_PIX', - 245: 'SC_P0_DETAIL_QUAD_WITH_3_PIX', - 246: 'SC_P0_DETAIL_QUAD_WITH_4_PIX', - 247: 'SC_P1_DETAIL_QUAD_WITH_1_PIX', - 248: 'SC_P1_DETAIL_QUAD_WITH_2_PIX', - 249: 'SC_P1_DETAIL_QUAD_WITH_3_PIX', - 250: 'SC_P1_DETAIL_QUAD_WITH_4_PIX', - 251: 'SC_P2_DETAIL_QUAD_WITH_1_PIX', - 252: 'SC_P2_DETAIL_QUAD_WITH_2_PIX', - 253: 'SC_P2_DETAIL_QUAD_WITH_3_PIX', - 254: 'SC_P2_DETAIL_QUAD_WITH_4_PIX', - 255: 'SC_P3_DETAIL_QUAD_WITH_1_PIX', - 256: 'SC_P3_DETAIL_QUAD_WITH_2_PIX', - 257: 'SC_P3_DETAIL_QUAD_WITH_3_PIX', - 258: 'SC_P3_DETAIL_QUAD_WITH_4_PIX', - 259: 'SC_EARLYZ_QUAD_COUNT', - 260: 'SC_EARLYZ_QUAD_WITH_1_PIX', - 261: 'SC_EARLYZ_QUAD_WITH_2_PIX', - 262: 'SC_EARLYZ_QUAD_WITH_3_PIX', - 263: 'SC_EARLYZ_QUAD_WITH_4_PIX', - 264: 'SC_PKR_QUAD_PER_ROW_H1', - 265: 'SC_PKR_QUAD_PER_ROW_H2', - 266: 'SC_PKR_4X2_QUAD_SPLIT', - 267: 'SC_PKR_4X2_FILL_QUAD', - 268: 'SC_PKR_END_OF_VECTOR', - 269: 'SC_PKR_CONTROL_XFER', - 270: 'SC_PKR_DBHANG_FORCE_EOV', - 271: 'SC_REG_SCLK_BUSY', - 272: 'SC_GRP0_DYN_SCLK_BUSY', - 273: 'SC_GRP1_DYN_SCLK_BUSY', - 274: 'SC_GRP2_DYN_SCLK_BUSY', - 275: 'SC_GRP3_DYN_SCLK_BUSY', - 276: 'SC_GRP4_DYN_SCLK_BUSY', - 277: 'SC_PA0_SC_DATA_FIFO_RD', - 278: 'SC_PA0_SC_DATA_FIFO_WE', - 279: 'SC_PA1_SC_DATA_FIFO_RD', - 280: 'SC_PA1_SC_DATA_FIFO_WE', - 281: 'SC_PS_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 282: 'SC_PS_ARB_XFC_ONLY_PRIM_CYCLES', - 283: 'SC_PS_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 284: 'SC_PS_ARB_STALLED_FROM_BELOW', - 285: 'SC_PS_ARB_STARVED_FROM_ABOVE', - 286: 'SC_PS_ARB_SC_BUSY', - 287: 'SC_PS_ARB_PA_SC_BUSY', - 288: 'SC_PA2_SC_DATA_FIFO_RD', - 289: 'SC_PA2_SC_DATA_FIFO_WE', - 290: 'SC_PA3_SC_DATA_FIFO_RD', - 291: 'SC_PA3_SC_DATA_FIFO_WE', - 292: 'SC_PA_SC_DEALLOC_0_0_WE', - 293: 'SC_PA_SC_DEALLOC_0_1_WE', - 294: 'SC_PA_SC_DEALLOC_1_0_WE', - 295: 'SC_PA_SC_DEALLOC_1_1_WE', - 296: 'SC_PA_SC_DEALLOC_2_0_WE', - 297: 'SC_PA_SC_DEALLOC_2_1_WE', - 298: 'SC_PA_SC_DEALLOC_3_0_WE', - 299: 'SC_PA_SC_DEALLOC_3_1_WE', - 300: 'SC_PA0_SC_EOP_WE', - 301: 'SC_PA0_SC_EOPG_WE', - 302: 'SC_PA0_SC_EVENT_WE', - 303: 'SC_PA1_SC_EOP_WE', - 304: 'SC_PA1_SC_EOPG_WE', - 305: 'SC_PA1_SC_EVENT_WE', - 306: 'SC_PA2_SC_EOP_WE', - 307: 'SC_PA2_SC_EOPG_WE', - 308: 'SC_PA2_SC_EVENT_WE', - 309: 'SC_PA3_SC_EOP_WE', - 310: 'SC_PA3_SC_EOPG_WE', - 311: 'SC_PA3_SC_EVENT_WE', - 312: 'SC_PS_ARB_OOO_THRESHOLD_SWITCH_TO_DESIRED_FIFO', - 313: 'SC_PS_ARB_OOO_FIFO_EMPTY_SWITCH', - 314: 'SC_PS_ARB_NULL_PRIM_BUBBLE_POP', - 315: 'SC_PS_ARB_EOP_POP_SYNC_POP', - 316: 'SC_PS_ARB_EVENT_SYNC_POP', - 317: 'SC_PS_ENG_MULTICYCLE_BUBBLE', - 318: 'SC_PA0_SC_FPOV_WE', - 319: 'SC_PA1_SC_FPOV_WE', - 320: 'SC_PA2_SC_FPOV_WE', - 321: 'SC_PA3_SC_FPOV_WE', - 322: 'SC_PA0_SC_LPOV_WE', - 323: 'SC_PA1_SC_LPOV_WE', - 324: 'SC_PA2_SC_LPOV_WE', - 325: 'SC_PA3_SC_LPOV_WE', - 326: 'SC_SPI_DEALLOC_0_0', - 327: 'SC_SPI_DEALLOC_0_1', - 328: 'SC_SPI_DEALLOC_0_2', - 329: 'SC_SPI_DEALLOC_1_0', - 330: 'SC_SPI_DEALLOC_1_1', - 331: 'SC_SPI_DEALLOC_1_2', - 332: 'SC_SPI_DEALLOC_2_0', - 333: 'SC_SPI_DEALLOC_2_1', - 334: 'SC_SPI_DEALLOC_2_2', - 335: 'SC_SPI_DEALLOC_3_0', - 336: 'SC_SPI_DEALLOC_3_1', - 337: 'SC_SPI_DEALLOC_3_2', - 338: 'SC_SPI_FPOV_0', - 339: 'SC_SPI_FPOV_1', - 340: 'SC_SPI_FPOV_2', - 341: 'SC_SPI_FPOV_3', - 342: 'SC_SPI_EVENT', - 343: 'SC_PS_TS_EVENT_FIFO_PUSH', - 344: 'SC_PS_TS_EVENT_FIFO_POP', - 345: 'SC_PS_CTX_DONE_FIFO_PUSH', - 346: 'SC_PS_CTX_DONE_FIFO_POP', - 347: 'SC_MULTICYCLE_BUBBLE_FREEZE', - 348: 'SC_EOP_SYNC_WINDOW', - 349: 'SC_PA0_SC_NULL_WE', - 350: 'SC_PA0_SC_NULL_DEALLOC_WE', - 351: 'SC_PA0_SC_DATA_FIFO_EOPG_RD', - 352: 'SC_PA0_SC_DATA_FIFO_EOP_RD', - 353: 'SC_PA0_SC_DEALLOC_0_RD', - 354: 'SC_PA0_SC_DEALLOC_1_RD', - 355: 'SC_PA1_SC_DATA_FIFO_EOPG_RD', - 356: 'SC_PA1_SC_DATA_FIFO_EOP_RD', - 357: 'SC_PA1_SC_DEALLOC_0_RD', - 358: 'SC_PA1_SC_DEALLOC_1_RD', - 359: 'SC_PA1_SC_NULL_WE', - 360: 'SC_PA1_SC_NULL_DEALLOC_WE', - 361: 'SC_PA2_SC_DATA_FIFO_EOPG_RD', - 362: 'SC_PA2_SC_DATA_FIFO_EOP_RD', - 363: 'SC_PA2_SC_DEALLOC_0_RD', - 364: 'SC_PA2_SC_DEALLOC_1_RD', - 365: 'SC_PA2_SC_NULL_WE', - 366: 'SC_PA2_SC_NULL_DEALLOC_WE', - 367: 'SC_PA3_SC_DATA_FIFO_EOPG_RD', - 368: 'SC_PA3_SC_DATA_FIFO_EOP_RD', - 369: 'SC_PA3_SC_DEALLOC_0_RD', - 370: 'SC_PA3_SC_DEALLOC_1_RD', - 371: 'SC_PA3_SC_NULL_WE', - 372: 'SC_PA3_SC_NULL_DEALLOC_WE', - 373: 'SC_PS_PA0_SC_FIFO_EMPTY', - 374: 'SC_PS_PA0_SC_FIFO_FULL', - 375: 'SC_RESERVED_0', - 376: 'SC_PS_PA1_SC_FIFO_EMPTY', - 377: 'SC_PS_PA1_SC_FIFO_FULL', - 378: 'SC_RESERVED_1', - 379: 'SC_PS_PA2_SC_FIFO_EMPTY', - 380: 'SC_PS_PA2_SC_FIFO_FULL', - 381: 'SC_RESERVED_2', - 382: 'SC_PS_PA3_SC_FIFO_EMPTY', - 383: 'SC_PS_PA3_SC_FIFO_FULL', - 384: 'SC_RESERVED_3', - 385: 'SC_BUSY_PROCESSING_MULTICYCLE_PRIM', - 386: 'SC_BUSY_CNT_NOT_ZERO', - 387: 'SC_BM_BUSY', - 388: 'SC_BACKEND_BUSY', - 389: 'SC_SCF_SCB_INTERFACE_BUSY', - 390: 'SC_SCB_BUSY', - 391: 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_NOT_EMPTY', - 392: 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_FULL', - 393: 'SC_PBB_BIN_HIST_NUM_PRIMS', - 394: 'SC_PBB_BATCH_HIST_NUM_PRIMS', - 395: 'SC_PBB_BIN_HIST_NUM_CONTEXTS', - 396: 'SC_PBB_BATCH_HIST_NUM_CONTEXTS', - 397: 'SC_PBB_BIN_HIST_NUM_PERSISTENT_STATES', - 398: 'SC_PBB_BATCH_HIST_NUM_PERSISTENT_STATES', - 399: 'SC_PBB_BATCH_HIST_NUM_PS_WAVE_BREAKS', - 400: 'SC_PBB_BATCH_HIST_NUM_TRIV_REJECTED_PRIMS', - 401: 'SC_PBB_BATCH_HIST_NUM_ROWS_PER_PRIM', - 402: 'SC_PBB_BATCH_HIST_NUM_COLUMNS_PER_ROW', - 403: 'SC_PBB_BUSY', - 404: 'SC_PBB_BUSY_AND_NO_SENDS', - 405: 'SC_PBB_STALLS_PA_DUE_TO_NO_TILES', - 406: 'SC_PBB_NUM_BINS', - 407: 'SC_PBB_END_OF_BIN', - 408: 'SC_PBB_END_OF_BATCH', - 409: 'SC_PBB_PRIMBIN_PROCESSED', - 410: 'SC_PBB_PRIM_ADDED_TO_BATCH', - 411: 'SC_PBB_NONBINNED_PRIM', - 412: 'SC_PBB_TOTAL_REAL_PRIMS_OUT_OF_PBB', - 413: 'SC_PBB_TOTAL_NULL_PRIMS_OUT_OF_PBB', - 414: 'SC_PBB_IDLE_CLK_DUE_TO_ROW_TO_COLUMN_TRANSITION', - 415: 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_ROW', - 416: 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_COLUMN', - 417: 'SC_PBB_BATCH_BREAK_DUE_TO_PERSISTENT_STATE', - 418: 'SC_PBB_BATCH_BREAK_DUE_TO_CONTEXT_STATE', - 419: 'SC_PBB_BATCH_BREAK_DUE_TO_PRIM', - 420: 'SC_PBB_BATCH_BREAK_DUE_TO_PC_STORAGE', - 421: 'SC_PBB_BATCH_BREAK_DUE_TO_EVENT', - 422: 'SC_PBB_BATCH_BREAK_DUE_TO_FPOV_LIMIT', - 423: 'SC_POPS_INTRA_WAVE_OVERLAPS', - 424: 'SC_POPS_FORCE_EOV', - 425: 'SC_PKR_QUAD_OVLP_NOT_FOUND_IN_WAVE_TABLE_AND_WAVES_SINCE_OVLP_SET_TO_MAX', - 426: 'SC_PKR_QUAD_OVLP_NOT_FOUND_IN_WAVE_TABLE_AND_NO_CHANGE_TO_WAVES_SINCE_OVLP', - 427: 'SC_PKR_QUAD_OVLP_FOUND_IN_WAVE_TABLE', - 428: 'SC_FULL_FULL_QUAD', - 429: 'SC_FULL_HALF_QUAD', - 430: 'SC_FULL_QTR_QUAD', - 431: 'SC_HALF_FULL_QUAD', - 432: 'SC_HALF_HALF_QUAD', - 433: 'SC_HALF_QTR_QUAD', - 434: 'SC_QTR_FULL_QUAD', - 435: 'SC_QTR_HALF_QUAD', - 436: 'SC_QTR_QTR_QUAD', - 437: 'SC_GRP5_DYN_SCLK_BUSY', - 438: 'SC_GRP6_DYN_SCLK_BUSY', - 439: 'SC_GRP7_DYN_SCLK_BUSY', - 440: 'SC_GRP8_DYN_SCLK_BUSY', - 441: 'SC_GRP9_DYN_SCLK_BUSY', - 442: 'SC_PS_TO_BE_SCLK_GATE_STALL', - 443: 'SC_PA_TO_PBB_SCLK_GATE_STALL_STALL', - 444: 'SC_PK_BUSY', - 445: 'SC_PK_MAX_DEALLOC_FORCE_EOV', - 446: 'SC_PK_DEALLOC_WAVE_BREAK', - 447: 'SC_SPI_SEND', - 448: 'SC_SPI_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 449: 'SC_SPI_CREDIT_AT_MAX', - 450: 'SC_SPI_CREDIT_AT_MAX_NO_PENDING_SEND', - 451: 'SC_BCI_SEND', - 452: 'SC_BCI_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 453: 'SC_BCI_CREDIT_AT_MAX', - 454: 'SC_BCI_CREDIT_AT_MAX_NO_PENDING_SEND', - 455: 'SC_SPIBC_FULL_FREEZE', - 456: 'SC_PW_BM_PASS_EMPTY_PRIM', - 457: 'SC_SUPERTILE_COUNT_EXCLUDE_PASS_EMPTY_PRIM', - 458: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H0', - 459: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H1', - 460: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H2', - 461: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H3', - 462: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H4', - 463: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H5', - 464: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H6', - 465: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H7', - 466: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H8', - 467: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H9', - 468: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H10', - 469: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H11', - 470: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H12', - 471: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H13', - 472: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H14', - 473: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H15', - 474: 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H16', - 475: 'SC_DB0_TILE_INTERFACE_BUSY', - 476: 'SC_DB0_TILE_INTERFACE_SEND', - 477: 'SC_DB0_TILE_INTERFACE_SEND_EVENT', - 478: 'SC_DB0_TILE_INTERFACE_SEND_SOP_ONLY_EVENT', - 479: 'SC_DB0_TILE_INTERFACE_SEND_SOP', - 480: 'SC_DB0_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 481: 'SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX', - 482: 'SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND', - 483: 'SC_DB1_TILE_INTERFACE_BUSY', - 484: 'SC_DB1_TILE_INTERFACE_SEND', - 485: 'SC_DB1_TILE_INTERFACE_SEND_EVENT', - 486: 'SC_DB1_TILE_INTERFACE_SEND_SOP_ONLY_EVENT', - 487: 'SC_DB1_TILE_INTERFACE_SEND_SOP', - 488: 'SC_DB1_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 489: 'SC_DB1_TILE_INTERFACE_CREDIT_AT_MAX', - 490: 'SC_DB1_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND', - 491: 'SC_BACKEND_PRIM_FIFO_FULL', - 492: 'SC_PBB_BATCH_BREAK_DUE_TO_TIMEOUT_COUNTER', - 493: 'SC_PBB_BATCH_BREAK_DUE_TO_NONBINNED_BATCH', - 494: 'SC_PBB_BATCH_BREAK_DUE_TO_DEBUG_DATA_PER_DRAW_DISPATCH', - 495: 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_PERSISTENT', - 496: 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_CONTEXT', - 497: 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_FPOV', - 498: 'SC_PBB_BATCH_BREAK_DUE_TO_NEW_SC_MODE', - 499: 'SC_PBB_BATCH_BREAK_DUE_TO_BINNING_MODE_CHANGE', - 500: 'SC_PBB_BATCH_BREAK_DUE_TO_PIPELINE_EVENT_COUNT', - 501: 'SC_PBB_BATCH_BREAK_DUE_TO_PIPE_RESET', - 502: 'SC_PBB_BATCH_BREAK_DUE_TO_GFX_PIPE_CHANGE', - 503: 'SC_STALLED_BY_DB0_TILEFIFO', - 504: 'SC_DB0_QUAD_INTF_SEND', - 505: 'SC_DB0_QUAD_INTF_BUSY', - 506: 'SC_DB0_QUAD_INTF_STALLED_BY_DB', - 507: 'SC_DB0_QUAD_INTF_CREDIT_AT_MAX', - 508: 'SC_DB0_QUAD_INTF_IDLE', - 509: 'SC_DB1_QUAD_INTF_SEND', - 510: 'SC_STALLED_BY_DB1_TILEFIFO', - 511: 'SC_DB1_QUAD_INTF_BUSY', - 512: 'SC_DB1_QUAD_INTF_STALLED_BY_DB', - 513: 'SC_DB1_QUAD_INTF_CREDIT_AT_MAX', - 514: 'SC_DB1_QUAD_INTF_IDLE', - 515: 'SC_PKR_WAVE_BREAK_OUTSIDE_REGION', - 516: 'SC_PKR_WAVE_BREAK_FULL_TILE', - 517: 'SC_FSR_WALKED', - 518: 'SC_PBB_EMPTY_INPUT_CYCLE_WHEN_BATCH_OPEN', - 519: 'SC_PBB_BATCH_BREAK_DUE_TO_NULL_PRIM_BREAK_BATCH_LIMIT', - 520: 'SC_DB0_WE_STALLED_BY_RSLT_FIFO_FULL', - 521: 'SC_DB0_WE_TILE_MASK_RETURN_FIFO_FULL_WITH_WE_RSLT_FIFO_STALL', - 522: 'SC_DB0_TILE_MASK_FIFO_FULL', - 523: 'SC_DB1_WE_STALLED_BY_RSLT_FIFO_FULL', - 524: 'SC_DB1_WE_TILE_MASK_RETURN_FIFO_FULL_WITH_WE_RSLT_FIFO_STALL', - 525: 'SC_DB1_TILE_MASK_FIFO_FULL', - 526: 'SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_PFF_PW_FULL', - 527: 'SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_ZFF_PW_FULL', - 528: 'SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_PBB_TO_PSE_FIFO_FULL', - 529: 'SC_PS_PM_PFF_PW_FULL', - 530: 'SC_PS_PM_ZFF_PW_FULL', - 531: 'SC_PS_PM_PBB_TO_PSE_FIFO_FULL', - 532: 'SC_PK_PM_QD1_FD_CONFLICT_WAVE_BRK_1H', - 533: 'SC_PK_PM_QD1_FORCE_PARTIAL_FOR_DEALLOC_WAVE_BRK_1H', - 534: 'SC_PK_PM_QD1_AVOID_DEALLOC_ADD_WAVE_BRK_1H', - 535: 'SC_PK_PM_4X2_SPLIT_WAVE_BRK_1H', - 536: 'SC_PK_PM_PKR_FILL_4X2_WAVE_BRK_1H', - 537: 'SC_PK_PM_SPLIT_OR_FILL_4X2_WAVE_BRK_1H', - 538: 'SC_PK_PM_END_OF_VECTOR_WAVE_BRK_1H', - 539: 'SC_PK_PM_LAST_AND_DEALLOC_WAVE_BRK_1H', - 540: 'SC_PK_PM_CTL_ONLY_CMD_WAVE_BRK_1H', - 541: 'SC_PK_PM_AVOID_DEALLOC_ADD_WAVE_BRK_1H', - 542: 'SC_PK_PM_FD_CONFLICT_WAVE_BRK_1H', - 543: 'SC_PK_PM_FORCE_PARTIAL_FOR_DEALLOC_WAVE_BRK_1H', - 544: 'SC_PK_PM_AE_CONFLICT_WAVE_BRK_1H', - 545: 'SC_PK_PM_EOP_OR_LAD_WAVE_BRK_1H', - 546: 'SC_PK_PM_FULL_TILE_WAVE_BRK_1H', - 547: 'SC_PK_PM_POPS_FORCE_EOV_WAVE_BRK_1H', - 548: 'SC_PK_PM_MAX_DEALLOC_FORCE_EOV_WAVE_BRK_1H', - 549: 'SC_PK_PM_WAVE_BREAK_OUTSIDE_REGION_WAVE_BRK_1H', - 550: 'SC_PK_PM_MAX_CLK_CNT_FORCE_EOV_WAVE_BRK_1H', - 551: 'SC_PK_PM_MAX_REZ_CNT_FORCE_EOV_WAVE_BRK_1H', - 552: 'SC_PK_PM_VRS_RATE_X_00_Y_00_QUAD', - 553: 'SC_PK_PM_VRS_RATE_X_00_Y_01_QUAD', - 554: 'SC_PK_PM_VRS_RATE_X_00_Y_10_QUAD', - 555: 'SC_PK_PM_VRS_RATE_X_00_Y_11_QUAD', - 556: 'SC_PK_PM_VRS_RATE_X_01_Y_00_QUAD', - 557: 'SC_PK_PM_VRS_RATE_X_01_Y_01_QUAD', - 558: 'SC_PK_PM_VRS_RATE_X_01_Y_10_QUAD', - 559: 'SC_PK_PM_VRS_RATE_X_01_Y_11_QUAD', - 560: 'SC_PK_PM_VRS_RATE_X_10_Y_00_QUAD', - 561: 'SC_PK_PM_VRS_RATE_X_10_Y_01_QUAD', - 562: 'SC_PK_PM_VRS_RATE_X_10_Y_10_QUAD', - 563: 'SC_PK_PM_VRS_RATE_X_10_Y_11_QUAD', - 564: 'SC_PK_PM_VRS_RATE_X_11_Y_00_QUAD', - 565: 'SC_PK_PM_VRS_RATE_X_11_Y_01_QUAD', - 566: 'SC_PK_PM_VRS_RATE_X_11_Y_10_QUAD', - 567: 'SC_PK_PM_VRS_RATE_X_11_Y_11_QUAD', - 568: 'SC_PBB_BATCH_BREAK_DUE_TO_PIPELINE_MODE_CHANGE', - 569: 'SC_PBB_RESERVED', - 570: 'SC_BM_BE0_STALLED', - 571: 'SC_BM_BE1_STALLED', - 572: 'SC_BM_BE2_STALLED', - 573: 'SC_BM_BE3_STALLED', - 574: 'SC_BM_MULTI_ACCUM_1_BE_STALLED', - 575: 'SC_BM_MULTI_ACCUM_2_BE_STALLED', - 576: 'SC_BM_MULTI_ACCUM_3_BE_STALLED', - 577: 'SC_BM_MULTI_ACCUM_4_BE_STALLED', -} -SC_SRPS_WINDOW_VALID = 0 -SC_PSSW_WINDOW_VALID = 1 -SC_TPQZ_WINDOW_VALID = 2 -SC_QZQP_WINDOW_VALID = 3 -SC_TRPK_WINDOW_VALID = 4 -SC_SRPS_WINDOW_VALID_BUSY = 5 -SC_PSSW_WINDOW_VALID_BUSY = 6 -SC_TPQZ_WINDOW_VALID_BUSY = 7 -SC_QZQP_WINDOW_VALID_BUSY = 8 -SC_TRPK_WINDOW_VALID_BUSY = 9 -SC_STARVED_BY_PA = 10 -SC_STALLED_BY_PRIMFIFO = 11 -SC_STALLED_BY_DB_TILE = 12 -SC_STARVED_BY_DB_TILE = 13 -SC_STALLED_BY_TILEORDERFIFO = 14 -SC_STALLED_BY_TILEFIFO = 15 -SC_STALLED_BY_DB_QUAD = 16 -SC_STARVED_BY_DB_QUAD = 17 -SC_STALLED_BY_QUADFIFO = 18 -SC_STALLED_BY_BCI = 19 -SC_STALLED_BY_SPI = 20 -SC_SCISSOR_DISCARD = 21 -SC_BB_DISCARD = 22 -SC_SUPERTILE_COUNT = 23 -SC_SUPERTILE_PER_PRIM_H0 = 24 -SC_SUPERTILE_PER_PRIM_H1 = 25 -SC_SUPERTILE_PER_PRIM_H2 = 26 -SC_SUPERTILE_PER_PRIM_H3 = 27 -SC_SUPERTILE_PER_PRIM_H4 = 28 -SC_SUPERTILE_PER_PRIM_H5 = 29 -SC_SUPERTILE_PER_PRIM_H6 = 30 -SC_SUPERTILE_PER_PRIM_H7 = 31 -SC_SUPERTILE_PER_PRIM_H8 = 32 -SC_SUPERTILE_PER_PRIM_H9 = 33 -SC_SUPERTILE_PER_PRIM_H10 = 34 -SC_SUPERTILE_PER_PRIM_H11 = 35 -SC_SUPERTILE_PER_PRIM_H12 = 36 -SC_SUPERTILE_PER_PRIM_H13 = 37 -SC_SUPERTILE_PER_PRIM_H14 = 38 -SC_SUPERTILE_PER_PRIM_H15 = 39 -SC_SUPERTILE_PER_PRIM_H16 = 40 -SC_TILE_PER_PRIM_H0 = 41 -SC_TILE_PER_PRIM_H1 = 42 -SC_TILE_PER_PRIM_H2 = 43 -SC_TILE_PER_PRIM_H3 = 44 -SC_TILE_PER_PRIM_H4 = 45 -SC_TILE_PER_PRIM_H5 = 46 -SC_TILE_PER_PRIM_H6 = 47 -SC_TILE_PER_PRIM_H7 = 48 -SC_TILE_PER_PRIM_H8 = 49 -SC_TILE_PER_PRIM_H9 = 50 -SC_TILE_PER_PRIM_H10 = 51 -SC_TILE_PER_PRIM_H11 = 52 -SC_TILE_PER_PRIM_H12 = 53 -SC_TILE_PER_PRIM_H13 = 54 -SC_TILE_PER_PRIM_H14 = 55 -SC_TILE_PER_PRIM_H15 = 56 -SC_TILE_PER_PRIM_H16 = 57 -SC_TILE_PER_SUPERTILE_H0 = 58 -SC_TILE_PER_SUPERTILE_H1 = 59 -SC_TILE_PER_SUPERTILE_H2 = 60 -SC_TILE_PER_SUPERTILE_H3 = 61 -SC_TILE_PER_SUPERTILE_H4 = 62 -SC_TILE_PER_SUPERTILE_H5 = 63 -SC_TILE_PER_SUPERTILE_H6 = 64 -SC_TILE_PER_SUPERTILE_H7 = 65 -SC_TILE_PER_SUPERTILE_H8 = 66 -SC_TILE_PER_SUPERTILE_H9 = 67 -SC_TILE_PER_SUPERTILE_H10 = 68 -SC_TILE_PER_SUPERTILE_H11 = 69 -SC_TILE_PER_SUPERTILE_H12 = 70 -SC_TILE_PER_SUPERTILE_H13 = 71 -SC_TILE_PER_SUPERTILE_H14 = 72 -SC_TILE_PER_SUPERTILE_H15 = 73 -SC_TILE_PER_SUPERTILE_H16 = 74 -SC_TILE_PICKED_H1 = 75 -SC_TILE_PICKED_H2 = 76 -SC_TILE_PICKED_H3 = 77 -SC_TILE_PICKED_H4 = 78 -SC_QZ0_TILE_COUNT = 79 -SC_QZ1_TILE_COUNT = 80 -SC_QZ2_TILE_COUNT = 81 -SC_QZ3_TILE_COUNT = 82 -SC_QZ0_TILE_COVERED_COUNT = 83 -SC_QZ1_TILE_COVERED_COUNT = 84 -SC_QZ2_TILE_COVERED_COUNT = 85 -SC_QZ3_TILE_COVERED_COUNT = 86 -SC_QZ0_TILE_NOT_COVERED_COUNT = 87 -SC_QZ1_TILE_NOT_COVERED_COUNT = 88 -SC_QZ2_TILE_NOT_COVERED_COUNT = 89 -SC_QZ3_TILE_NOT_COVERED_COUNT = 90 -SC_QZ0_QUAD_PER_TILE_H0 = 91 -SC_QZ0_QUAD_PER_TILE_H1 = 92 -SC_QZ0_QUAD_PER_TILE_H2 = 93 -SC_QZ0_QUAD_PER_TILE_H3 = 94 -SC_QZ0_QUAD_PER_TILE_H4 = 95 -SC_QZ0_QUAD_PER_TILE_H5 = 96 -SC_QZ0_QUAD_PER_TILE_H6 = 97 -SC_QZ0_QUAD_PER_TILE_H7 = 98 -SC_QZ0_QUAD_PER_TILE_H8 = 99 -SC_QZ0_QUAD_PER_TILE_H9 = 100 -SC_QZ0_QUAD_PER_TILE_H10 = 101 -SC_QZ0_QUAD_PER_TILE_H11 = 102 -SC_QZ0_QUAD_PER_TILE_H12 = 103 -SC_QZ0_QUAD_PER_TILE_H13 = 104 -SC_QZ0_QUAD_PER_TILE_H14 = 105 -SC_QZ0_QUAD_PER_TILE_H15 = 106 -SC_QZ0_QUAD_PER_TILE_H16 = 107 -SC_QZ1_QUAD_PER_TILE_H0 = 108 -SC_QZ1_QUAD_PER_TILE_H1 = 109 -SC_QZ1_QUAD_PER_TILE_H2 = 110 -SC_QZ1_QUAD_PER_TILE_H3 = 111 -SC_QZ1_QUAD_PER_TILE_H4 = 112 -SC_QZ1_QUAD_PER_TILE_H5 = 113 -SC_QZ1_QUAD_PER_TILE_H6 = 114 -SC_QZ1_QUAD_PER_TILE_H7 = 115 -SC_QZ1_QUAD_PER_TILE_H8 = 116 -SC_QZ1_QUAD_PER_TILE_H9 = 117 -SC_QZ1_QUAD_PER_TILE_H10 = 118 -SC_QZ1_QUAD_PER_TILE_H11 = 119 -SC_QZ1_QUAD_PER_TILE_H12 = 120 -SC_QZ1_QUAD_PER_TILE_H13 = 121 -SC_QZ1_QUAD_PER_TILE_H14 = 122 -SC_QZ1_QUAD_PER_TILE_H15 = 123 -SC_QZ1_QUAD_PER_TILE_H16 = 124 -SC_QZ2_QUAD_PER_TILE_H0 = 125 -SC_QZ2_QUAD_PER_TILE_H1 = 126 -SC_QZ2_QUAD_PER_TILE_H2 = 127 -SC_QZ2_QUAD_PER_TILE_H3 = 128 -SC_QZ2_QUAD_PER_TILE_H4 = 129 -SC_QZ2_QUAD_PER_TILE_H5 = 130 -SC_QZ2_QUAD_PER_TILE_H6 = 131 -SC_QZ2_QUAD_PER_TILE_H7 = 132 -SC_QZ2_QUAD_PER_TILE_H8 = 133 -SC_QZ2_QUAD_PER_TILE_H9 = 134 -SC_QZ2_QUAD_PER_TILE_H10 = 135 -SC_QZ2_QUAD_PER_TILE_H11 = 136 -SC_QZ2_QUAD_PER_TILE_H12 = 137 -SC_QZ2_QUAD_PER_TILE_H13 = 138 -SC_QZ2_QUAD_PER_TILE_H14 = 139 -SC_QZ2_QUAD_PER_TILE_H15 = 140 -SC_QZ2_QUAD_PER_TILE_H16 = 141 -SC_QZ3_QUAD_PER_TILE_H0 = 142 -SC_QZ3_QUAD_PER_TILE_H1 = 143 -SC_QZ3_QUAD_PER_TILE_H2 = 144 -SC_QZ3_QUAD_PER_TILE_H3 = 145 -SC_QZ3_QUAD_PER_TILE_H4 = 146 -SC_QZ3_QUAD_PER_TILE_H5 = 147 -SC_QZ3_QUAD_PER_TILE_H6 = 148 -SC_QZ3_QUAD_PER_TILE_H7 = 149 -SC_QZ3_QUAD_PER_TILE_H8 = 150 -SC_QZ3_QUAD_PER_TILE_H9 = 151 -SC_QZ3_QUAD_PER_TILE_H10 = 152 -SC_QZ3_QUAD_PER_TILE_H11 = 153 -SC_QZ3_QUAD_PER_TILE_H12 = 154 -SC_QZ3_QUAD_PER_TILE_H13 = 155 -SC_QZ3_QUAD_PER_TILE_H14 = 156 -SC_QZ3_QUAD_PER_TILE_H15 = 157 -SC_QZ3_QUAD_PER_TILE_H16 = 158 -SC_QZ0_QUAD_COUNT = 159 -SC_QZ1_QUAD_COUNT = 160 -SC_QZ2_QUAD_COUNT = 161 -SC_QZ3_QUAD_COUNT = 162 -SC_P0_HIZ_TILE_COUNT = 163 -SC_P1_HIZ_TILE_COUNT = 164 -SC_P2_HIZ_TILE_COUNT = 165 -SC_P3_HIZ_TILE_COUNT = 166 -SC_P0_HIZ_QUAD_PER_TILE_H0 = 167 -SC_P0_HIZ_QUAD_PER_TILE_H1 = 168 -SC_P0_HIZ_QUAD_PER_TILE_H2 = 169 -SC_P0_HIZ_QUAD_PER_TILE_H3 = 170 -SC_P0_HIZ_QUAD_PER_TILE_H4 = 171 -SC_P0_HIZ_QUAD_PER_TILE_H5 = 172 -SC_P0_HIZ_QUAD_PER_TILE_H6 = 173 -SC_P0_HIZ_QUAD_PER_TILE_H7 = 174 -SC_P0_HIZ_QUAD_PER_TILE_H8 = 175 -SC_P0_HIZ_QUAD_PER_TILE_H9 = 176 -SC_P0_HIZ_QUAD_PER_TILE_H10 = 177 -SC_P0_HIZ_QUAD_PER_TILE_H11 = 178 -SC_P0_HIZ_QUAD_PER_TILE_H12 = 179 -SC_P0_HIZ_QUAD_PER_TILE_H13 = 180 -SC_P0_HIZ_QUAD_PER_TILE_H14 = 181 -SC_P0_HIZ_QUAD_PER_TILE_H15 = 182 -SC_P0_HIZ_QUAD_PER_TILE_H16 = 183 -SC_P1_HIZ_QUAD_PER_TILE_H0 = 184 -SC_P1_HIZ_QUAD_PER_TILE_H1 = 185 -SC_P1_HIZ_QUAD_PER_TILE_H2 = 186 -SC_P1_HIZ_QUAD_PER_TILE_H3 = 187 -SC_P1_HIZ_QUAD_PER_TILE_H4 = 188 -SC_P1_HIZ_QUAD_PER_TILE_H5 = 189 -SC_P1_HIZ_QUAD_PER_TILE_H6 = 190 -SC_P1_HIZ_QUAD_PER_TILE_H7 = 191 -SC_P1_HIZ_QUAD_PER_TILE_H8 = 192 -SC_P1_HIZ_QUAD_PER_TILE_H9 = 193 -SC_P1_HIZ_QUAD_PER_TILE_H10 = 194 -SC_P1_HIZ_QUAD_PER_TILE_H11 = 195 -SC_P1_HIZ_QUAD_PER_TILE_H12 = 196 -SC_P1_HIZ_QUAD_PER_TILE_H13 = 197 -SC_P1_HIZ_QUAD_PER_TILE_H14 = 198 -SC_P1_HIZ_QUAD_PER_TILE_H15 = 199 -SC_P1_HIZ_QUAD_PER_TILE_H16 = 200 -SC_P2_HIZ_QUAD_PER_TILE_H0 = 201 -SC_P2_HIZ_QUAD_PER_TILE_H1 = 202 -SC_P2_HIZ_QUAD_PER_TILE_H2 = 203 -SC_P2_HIZ_QUAD_PER_TILE_H3 = 204 -SC_P2_HIZ_QUAD_PER_TILE_H4 = 205 -SC_P2_HIZ_QUAD_PER_TILE_H5 = 206 -SC_P2_HIZ_QUAD_PER_TILE_H6 = 207 -SC_P2_HIZ_QUAD_PER_TILE_H7 = 208 -SC_P2_HIZ_QUAD_PER_TILE_H8 = 209 -SC_P2_HIZ_QUAD_PER_TILE_H9 = 210 -SC_P2_HIZ_QUAD_PER_TILE_H10 = 211 -SC_P2_HIZ_QUAD_PER_TILE_H11 = 212 -SC_P2_HIZ_QUAD_PER_TILE_H12 = 213 -SC_P2_HIZ_QUAD_PER_TILE_H13 = 214 -SC_P2_HIZ_QUAD_PER_TILE_H14 = 215 -SC_P2_HIZ_QUAD_PER_TILE_H15 = 216 -SC_P2_HIZ_QUAD_PER_TILE_H16 = 217 -SC_P3_HIZ_QUAD_PER_TILE_H0 = 218 -SC_P3_HIZ_QUAD_PER_TILE_H1 = 219 -SC_P3_HIZ_QUAD_PER_TILE_H2 = 220 -SC_P3_HIZ_QUAD_PER_TILE_H3 = 221 -SC_P3_HIZ_QUAD_PER_TILE_H4 = 222 -SC_P3_HIZ_QUAD_PER_TILE_H5 = 223 -SC_P3_HIZ_QUAD_PER_TILE_H6 = 224 -SC_P3_HIZ_QUAD_PER_TILE_H7 = 225 -SC_P3_HIZ_QUAD_PER_TILE_H8 = 226 -SC_P3_HIZ_QUAD_PER_TILE_H9 = 227 -SC_P3_HIZ_QUAD_PER_TILE_H10 = 228 -SC_P3_HIZ_QUAD_PER_TILE_H11 = 229 -SC_P3_HIZ_QUAD_PER_TILE_H12 = 230 -SC_P3_HIZ_QUAD_PER_TILE_H13 = 231 -SC_P3_HIZ_QUAD_PER_TILE_H14 = 232 -SC_P3_HIZ_QUAD_PER_TILE_H15 = 233 -SC_P3_HIZ_QUAD_PER_TILE_H16 = 234 -SC_P0_HIZ_QUAD_COUNT = 235 -SC_P1_HIZ_QUAD_COUNT = 236 -SC_P2_HIZ_QUAD_COUNT = 237 -SC_P3_HIZ_QUAD_COUNT = 238 -SC_P0_DETAIL_QUAD_COUNT = 239 -SC_P1_DETAIL_QUAD_COUNT = 240 -SC_P2_DETAIL_QUAD_COUNT = 241 -SC_P3_DETAIL_QUAD_COUNT = 242 -SC_P0_DETAIL_QUAD_WITH_1_PIX = 243 -SC_P0_DETAIL_QUAD_WITH_2_PIX = 244 -SC_P0_DETAIL_QUAD_WITH_3_PIX = 245 -SC_P0_DETAIL_QUAD_WITH_4_PIX = 246 -SC_P1_DETAIL_QUAD_WITH_1_PIX = 247 -SC_P1_DETAIL_QUAD_WITH_2_PIX = 248 -SC_P1_DETAIL_QUAD_WITH_3_PIX = 249 -SC_P1_DETAIL_QUAD_WITH_4_PIX = 250 -SC_P2_DETAIL_QUAD_WITH_1_PIX = 251 -SC_P2_DETAIL_QUAD_WITH_2_PIX = 252 -SC_P2_DETAIL_QUAD_WITH_3_PIX = 253 -SC_P2_DETAIL_QUAD_WITH_4_PIX = 254 -SC_P3_DETAIL_QUAD_WITH_1_PIX = 255 -SC_P3_DETAIL_QUAD_WITH_2_PIX = 256 -SC_P3_DETAIL_QUAD_WITH_3_PIX = 257 -SC_P3_DETAIL_QUAD_WITH_4_PIX = 258 -SC_EARLYZ_QUAD_COUNT = 259 -SC_EARLYZ_QUAD_WITH_1_PIX = 260 -SC_EARLYZ_QUAD_WITH_2_PIX = 261 -SC_EARLYZ_QUAD_WITH_3_PIX = 262 -SC_EARLYZ_QUAD_WITH_4_PIX = 263 -SC_PKR_QUAD_PER_ROW_H1 = 264 -SC_PKR_QUAD_PER_ROW_H2 = 265 -SC_PKR_4X2_QUAD_SPLIT = 266 -SC_PKR_4X2_FILL_QUAD = 267 -SC_PKR_END_OF_VECTOR = 268 -SC_PKR_CONTROL_XFER = 269 -SC_PKR_DBHANG_FORCE_EOV = 270 -SC_REG_SCLK_BUSY = 271 -SC_GRP0_DYN_SCLK_BUSY = 272 -SC_GRP1_DYN_SCLK_BUSY = 273 -SC_GRP2_DYN_SCLK_BUSY = 274 -SC_GRP3_DYN_SCLK_BUSY = 275 -SC_GRP4_DYN_SCLK_BUSY = 276 -SC_PA0_SC_DATA_FIFO_RD = 277 -SC_PA0_SC_DATA_FIFO_WE = 278 -SC_PA1_SC_DATA_FIFO_RD = 279 -SC_PA1_SC_DATA_FIFO_WE = 280 -SC_PS_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 281 -SC_PS_ARB_XFC_ONLY_PRIM_CYCLES = 282 -SC_PS_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 283 -SC_PS_ARB_STALLED_FROM_BELOW = 284 -SC_PS_ARB_STARVED_FROM_ABOVE = 285 -SC_PS_ARB_SC_BUSY = 286 -SC_PS_ARB_PA_SC_BUSY = 287 -SC_PA2_SC_DATA_FIFO_RD = 288 -SC_PA2_SC_DATA_FIFO_WE = 289 -SC_PA3_SC_DATA_FIFO_RD = 290 -SC_PA3_SC_DATA_FIFO_WE = 291 -SC_PA_SC_DEALLOC_0_0_WE = 292 -SC_PA_SC_DEALLOC_0_1_WE = 293 -SC_PA_SC_DEALLOC_1_0_WE = 294 -SC_PA_SC_DEALLOC_1_1_WE = 295 -SC_PA_SC_DEALLOC_2_0_WE = 296 -SC_PA_SC_DEALLOC_2_1_WE = 297 -SC_PA_SC_DEALLOC_3_0_WE = 298 -SC_PA_SC_DEALLOC_3_1_WE = 299 -SC_PA0_SC_EOP_WE = 300 -SC_PA0_SC_EOPG_WE = 301 -SC_PA0_SC_EVENT_WE = 302 -SC_PA1_SC_EOP_WE = 303 -SC_PA1_SC_EOPG_WE = 304 -SC_PA1_SC_EVENT_WE = 305 -SC_PA2_SC_EOP_WE = 306 -SC_PA2_SC_EOPG_WE = 307 -SC_PA2_SC_EVENT_WE = 308 -SC_PA3_SC_EOP_WE = 309 -SC_PA3_SC_EOPG_WE = 310 -SC_PA3_SC_EVENT_WE = 311 -SC_PS_ARB_OOO_THRESHOLD_SWITCH_TO_DESIRED_FIFO = 312 -SC_PS_ARB_OOO_FIFO_EMPTY_SWITCH = 313 -SC_PS_ARB_NULL_PRIM_BUBBLE_POP = 314 -SC_PS_ARB_EOP_POP_SYNC_POP = 315 -SC_PS_ARB_EVENT_SYNC_POP = 316 -SC_PS_ENG_MULTICYCLE_BUBBLE = 317 -SC_PA0_SC_FPOV_WE = 318 -SC_PA1_SC_FPOV_WE = 319 -SC_PA2_SC_FPOV_WE = 320 -SC_PA3_SC_FPOV_WE = 321 -SC_PA0_SC_LPOV_WE = 322 -SC_PA1_SC_LPOV_WE = 323 -SC_PA2_SC_LPOV_WE = 324 -SC_PA3_SC_LPOV_WE = 325 -SC_SPI_DEALLOC_0_0 = 326 -SC_SPI_DEALLOC_0_1 = 327 -SC_SPI_DEALLOC_0_2 = 328 -SC_SPI_DEALLOC_1_0 = 329 -SC_SPI_DEALLOC_1_1 = 330 -SC_SPI_DEALLOC_1_2 = 331 -SC_SPI_DEALLOC_2_0 = 332 -SC_SPI_DEALLOC_2_1 = 333 -SC_SPI_DEALLOC_2_2 = 334 -SC_SPI_DEALLOC_3_0 = 335 -SC_SPI_DEALLOC_3_1 = 336 -SC_SPI_DEALLOC_3_2 = 337 -SC_SPI_FPOV_0 = 338 -SC_SPI_FPOV_1 = 339 -SC_SPI_FPOV_2 = 340 -SC_SPI_FPOV_3 = 341 -SC_SPI_EVENT = 342 -SC_PS_TS_EVENT_FIFO_PUSH = 343 -SC_PS_TS_EVENT_FIFO_POP = 344 -SC_PS_CTX_DONE_FIFO_PUSH = 345 -SC_PS_CTX_DONE_FIFO_POP = 346 -SC_MULTICYCLE_BUBBLE_FREEZE = 347 -SC_EOP_SYNC_WINDOW = 348 -SC_PA0_SC_NULL_WE = 349 -SC_PA0_SC_NULL_DEALLOC_WE = 350 -SC_PA0_SC_DATA_FIFO_EOPG_RD = 351 -SC_PA0_SC_DATA_FIFO_EOP_RD = 352 -SC_PA0_SC_DEALLOC_0_RD = 353 -SC_PA0_SC_DEALLOC_1_RD = 354 -SC_PA1_SC_DATA_FIFO_EOPG_RD = 355 -SC_PA1_SC_DATA_FIFO_EOP_RD = 356 -SC_PA1_SC_DEALLOC_0_RD = 357 -SC_PA1_SC_DEALLOC_1_RD = 358 -SC_PA1_SC_NULL_WE = 359 -SC_PA1_SC_NULL_DEALLOC_WE = 360 -SC_PA2_SC_DATA_FIFO_EOPG_RD = 361 -SC_PA2_SC_DATA_FIFO_EOP_RD = 362 -SC_PA2_SC_DEALLOC_0_RD = 363 -SC_PA2_SC_DEALLOC_1_RD = 364 -SC_PA2_SC_NULL_WE = 365 -SC_PA2_SC_NULL_DEALLOC_WE = 366 -SC_PA3_SC_DATA_FIFO_EOPG_RD = 367 -SC_PA3_SC_DATA_FIFO_EOP_RD = 368 -SC_PA3_SC_DEALLOC_0_RD = 369 -SC_PA3_SC_DEALLOC_1_RD = 370 -SC_PA3_SC_NULL_WE = 371 -SC_PA3_SC_NULL_DEALLOC_WE = 372 -SC_PS_PA0_SC_FIFO_EMPTY = 373 -SC_PS_PA0_SC_FIFO_FULL = 374 -SC_RESERVED_0 = 375 -SC_PS_PA1_SC_FIFO_EMPTY = 376 -SC_PS_PA1_SC_FIFO_FULL = 377 -SC_RESERVED_1 = 378 -SC_PS_PA2_SC_FIFO_EMPTY = 379 -SC_PS_PA2_SC_FIFO_FULL = 380 -SC_RESERVED_2 = 381 -SC_PS_PA3_SC_FIFO_EMPTY = 382 -SC_PS_PA3_SC_FIFO_FULL = 383 -SC_RESERVED_3 = 384 -SC_BUSY_PROCESSING_MULTICYCLE_PRIM = 385 -SC_BUSY_CNT_NOT_ZERO = 386 -SC_BM_BUSY = 387 -SC_BACKEND_BUSY = 388 -SC_SCF_SCB_INTERFACE_BUSY = 389 -SC_SCB_BUSY = 390 -SC_STARVED_BY_PA_WITH_UNSELECTED_PA_NOT_EMPTY = 391 -SC_STARVED_BY_PA_WITH_UNSELECTED_PA_FULL = 392 -SC_PBB_BIN_HIST_NUM_PRIMS = 393 -SC_PBB_BATCH_HIST_NUM_PRIMS = 394 -SC_PBB_BIN_HIST_NUM_CONTEXTS = 395 -SC_PBB_BATCH_HIST_NUM_CONTEXTS = 396 -SC_PBB_BIN_HIST_NUM_PERSISTENT_STATES = 397 -SC_PBB_BATCH_HIST_NUM_PERSISTENT_STATES = 398 -SC_PBB_BATCH_HIST_NUM_PS_WAVE_BREAKS = 399 -SC_PBB_BATCH_HIST_NUM_TRIV_REJECTED_PRIMS = 400 -SC_PBB_BATCH_HIST_NUM_ROWS_PER_PRIM = 401 -SC_PBB_BATCH_HIST_NUM_COLUMNS_PER_ROW = 402 -SC_PBB_BUSY = 403 -SC_PBB_BUSY_AND_NO_SENDS = 404 -SC_PBB_STALLS_PA_DUE_TO_NO_TILES = 405 -SC_PBB_NUM_BINS = 406 -SC_PBB_END_OF_BIN = 407 -SC_PBB_END_OF_BATCH = 408 -SC_PBB_PRIMBIN_PROCESSED = 409 -SC_PBB_PRIM_ADDED_TO_BATCH = 410 -SC_PBB_NONBINNED_PRIM = 411 -SC_PBB_TOTAL_REAL_PRIMS_OUT_OF_PBB = 412 -SC_PBB_TOTAL_NULL_PRIMS_OUT_OF_PBB = 413 -SC_PBB_IDLE_CLK_DUE_TO_ROW_TO_COLUMN_TRANSITION = 414 -SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_ROW = 415 -SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_COLUMN = 416 -SC_PBB_BATCH_BREAK_DUE_TO_PERSISTENT_STATE = 417 -SC_PBB_BATCH_BREAK_DUE_TO_CONTEXT_STATE = 418 -SC_PBB_BATCH_BREAK_DUE_TO_PRIM = 419 -SC_PBB_BATCH_BREAK_DUE_TO_PC_STORAGE = 420 -SC_PBB_BATCH_BREAK_DUE_TO_EVENT = 421 -SC_PBB_BATCH_BREAK_DUE_TO_FPOV_LIMIT = 422 -SC_POPS_INTRA_WAVE_OVERLAPS = 423 -SC_POPS_FORCE_EOV = 424 -SC_PKR_QUAD_OVLP_NOT_FOUND_IN_WAVE_TABLE_AND_WAVES_SINCE_OVLP_SET_TO_MAX = 425 -SC_PKR_QUAD_OVLP_NOT_FOUND_IN_WAVE_TABLE_AND_NO_CHANGE_TO_WAVES_SINCE_OVLP = 426 -SC_PKR_QUAD_OVLP_FOUND_IN_WAVE_TABLE = 427 -SC_FULL_FULL_QUAD = 428 -SC_FULL_HALF_QUAD = 429 -SC_FULL_QTR_QUAD = 430 -SC_HALF_FULL_QUAD = 431 -SC_HALF_HALF_QUAD = 432 -SC_HALF_QTR_QUAD = 433 -SC_QTR_FULL_QUAD = 434 -SC_QTR_HALF_QUAD = 435 -SC_QTR_QTR_QUAD = 436 -SC_GRP5_DYN_SCLK_BUSY = 437 -SC_GRP6_DYN_SCLK_BUSY = 438 -SC_GRP7_DYN_SCLK_BUSY = 439 -SC_GRP8_DYN_SCLK_BUSY = 440 -SC_GRP9_DYN_SCLK_BUSY = 441 -SC_PS_TO_BE_SCLK_GATE_STALL = 442 -SC_PA_TO_PBB_SCLK_GATE_STALL_STALL = 443 -SC_PK_BUSY = 444 -SC_PK_MAX_DEALLOC_FORCE_EOV = 445 -SC_PK_DEALLOC_WAVE_BREAK = 446 -SC_SPI_SEND = 447 -SC_SPI_CREDIT_AT_ZERO_WITH_PENDING_SEND = 448 -SC_SPI_CREDIT_AT_MAX = 449 -SC_SPI_CREDIT_AT_MAX_NO_PENDING_SEND = 450 -SC_BCI_SEND = 451 -SC_BCI_CREDIT_AT_ZERO_WITH_PENDING_SEND = 452 -SC_BCI_CREDIT_AT_MAX = 453 -SC_BCI_CREDIT_AT_MAX_NO_PENDING_SEND = 454 -SC_SPIBC_FULL_FREEZE = 455 -SC_PW_BM_PASS_EMPTY_PRIM = 456 -SC_SUPERTILE_COUNT_EXCLUDE_PASS_EMPTY_PRIM = 457 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H0 = 458 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H1 = 459 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H2 = 460 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H3 = 461 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H4 = 462 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H5 = 463 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H6 = 464 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H7 = 465 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H8 = 466 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H9 = 467 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H10 = 468 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H11 = 469 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H12 = 470 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H13 = 471 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H14 = 472 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H15 = 473 -SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H16 = 474 -SC_DB0_TILE_INTERFACE_BUSY = 475 -SC_DB0_TILE_INTERFACE_SEND = 476 -SC_DB0_TILE_INTERFACE_SEND_EVENT = 477 -SC_DB0_TILE_INTERFACE_SEND_SOP_ONLY_EVENT = 478 -SC_DB0_TILE_INTERFACE_SEND_SOP = 479 -SC_DB0_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND = 480 -SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX = 481 -SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND = 482 -SC_DB1_TILE_INTERFACE_BUSY = 483 -SC_DB1_TILE_INTERFACE_SEND = 484 -SC_DB1_TILE_INTERFACE_SEND_EVENT = 485 -SC_DB1_TILE_INTERFACE_SEND_SOP_ONLY_EVENT = 486 -SC_DB1_TILE_INTERFACE_SEND_SOP = 487 -SC_DB1_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND = 488 -SC_DB1_TILE_INTERFACE_CREDIT_AT_MAX = 489 -SC_DB1_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND = 490 -SC_BACKEND_PRIM_FIFO_FULL = 491 -SC_PBB_BATCH_BREAK_DUE_TO_TIMEOUT_COUNTER = 492 -SC_PBB_BATCH_BREAK_DUE_TO_NONBINNED_BATCH = 493 -SC_PBB_BATCH_BREAK_DUE_TO_DEBUG_DATA_PER_DRAW_DISPATCH = 494 -SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_PERSISTENT = 495 -SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_CONTEXT = 496 -SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_FPOV = 497 -SC_PBB_BATCH_BREAK_DUE_TO_NEW_SC_MODE = 498 -SC_PBB_BATCH_BREAK_DUE_TO_BINNING_MODE_CHANGE = 499 -SC_PBB_BATCH_BREAK_DUE_TO_PIPELINE_EVENT_COUNT = 500 -SC_PBB_BATCH_BREAK_DUE_TO_PIPE_RESET = 501 -SC_PBB_BATCH_BREAK_DUE_TO_GFX_PIPE_CHANGE = 502 -SC_STALLED_BY_DB0_TILEFIFO = 503 -SC_DB0_QUAD_INTF_SEND = 504 -SC_DB0_QUAD_INTF_BUSY = 505 -SC_DB0_QUAD_INTF_STALLED_BY_DB = 506 -SC_DB0_QUAD_INTF_CREDIT_AT_MAX = 507 -SC_DB0_QUAD_INTF_IDLE = 508 -SC_DB1_QUAD_INTF_SEND = 509 -SC_STALLED_BY_DB1_TILEFIFO = 510 -SC_DB1_QUAD_INTF_BUSY = 511 -SC_DB1_QUAD_INTF_STALLED_BY_DB = 512 -SC_DB1_QUAD_INTF_CREDIT_AT_MAX = 513 -SC_DB1_QUAD_INTF_IDLE = 514 -SC_PKR_WAVE_BREAK_OUTSIDE_REGION = 515 -SC_PKR_WAVE_BREAK_FULL_TILE = 516 -SC_FSR_WALKED = 517 -SC_PBB_EMPTY_INPUT_CYCLE_WHEN_BATCH_OPEN = 518 -SC_PBB_BATCH_BREAK_DUE_TO_NULL_PRIM_BREAK_BATCH_LIMIT = 519 -SC_DB0_WE_STALLED_BY_RSLT_FIFO_FULL = 520 -SC_DB0_WE_TILE_MASK_RETURN_FIFO_FULL_WITH_WE_RSLT_FIFO_STALL = 521 -SC_DB0_TILE_MASK_FIFO_FULL = 522 -SC_DB1_WE_STALLED_BY_RSLT_FIFO_FULL = 523 -SC_DB1_WE_TILE_MASK_RETURN_FIFO_FULL_WITH_WE_RSLT_FIFO_STALL = 524 -SC_DB1_TILE_MASK_FIFO_FULL = 525 -SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_PFF_PW_FULL = 526 -SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_ZFF_PW_FULL = 527 -SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_PBB_TO_PSE_FIFO_FULL = 528 -SC_PS_PM_PFF_PW_FULL = 529 -SC_PS_PM_ZFF_PW_FULL = 530 -SC_PS_PM_PBB_TO_PSE_FIFO_FULL = 531 -SC_PK_PM_QD1_FD_CONFLICT_WAVE_BRK_1H = 532 -SC_PK_PM_QD1_FORCE_PARTIAL_FOR_DEALLOC_WAVE_BRK_1H = 533 -SC_PK_PM_QD1_AVOID_DEALLOC_ADD_WAVE_BRK_1H = 534 -SC_PK_PM_4X2_SPLIT_WAVE_BRK_1H = 535 -SC_PK_PM_PKR_FILL_4X2_WAVE_BRK_1H = 536 -SC_PK_PM_SPLIT_OR_FILL_4X2_WAVE_BRK_1H = 537 -SC_PK_PM_END_OF_VECTOR_WAVE_BRK_1H = 538 -SC_PK_PM_LAST_AND_DEALLOC_WAVE_BRK_1H = 539 -SC_PK_PM_CTL_ONLY_CMD_WAVE_BRK_1H = 540 -SC_PK_PM_AVOID_DEALLOC_ADD_WAVE_BRK_1H = 541 -SC_PK_PM_FD_CONFLICT_WAVE_BRK_1H = 542 -SC_PK_PM_FORCE_PARTIAL_FOR_DEALLOC_WAVE_BRK_1H = 543 -SC_PK_PM_AE_CONFLICT_WAVE_BRK_1H = 544 -SC_PK_PM_EOP_OR_LAD_WAVE_BRK_1H = 545 -SC_PK_PM_FULL_TILE_WAVE_BRK_1H = 546 -SC_PK_PM_POPS_FORCE_EOV_WAVE_BRK_1H = 547 -SC_PK_PM_MAX_DEALLOC_FORCE_EOV_WAVE_BRK_1H = 548 -SC_PK_PM_WAVE_BREAK_OUTSIDE_REGION_WAVE_BRK_1H = 549 -SC_PK_PM_MAX_CLK_CNT_FORCE_EOV_WAVE_BRK_1H = 550 -SC_PK_PM_MAX_REZ_CNT_FORCE_EOV_WAVE_BRK_1H = 551 -SC_PK_PM_VRS_RATE_X_00_Y_00_QUAD = 552 -SC_PK_PM_VRS_RATE_X_00_Y_01_QUAD = 553 -SC_PK_PM_VRS_RATE_X_00_Y_10_QUAD = 554 -SC_PK_PM_VRS_RATE_X_00_Y_11_QUAD = 555 -SC_PK_PM_VRS_RATE_X_01_Y_00_QUAD = 556 -SC_PK_PM_VRS_RATE_X_01_Y_01_QUAD = 557 -SC_PK_PM_VRS_RATE_X_01_Y_10_QUAD = 558 -SC_PK_PM_VRS_RATE_X_01_Y_11_QUAD = 559 -SC_PK_PM_VRS_RATE_X_10_Y_00_QUAD = 560 -SC_PK_PM_VRS_RATE_X_10_Y_01_QUAD = 561 -SC_PK_PM_VRS_RATE_X_10_Y_10_QUAD = 562 -SC_PK_PM_VRS_RATE_X_10_Y_11_QUAD = 563 -SC_PK_PM_VRS_RATE_X_11_Y_00_QUAD = 564 -SC_PK_PM_VRS_RATE_X_11_Y_01_QUAD = 565 -SC_PK_PM_VRS_RATE_X_11_Y_10_QUAD = 566 -SC_PK_PM_VRS_RATE_X_11_Y_11_QUAD = 567 -SC_PBB_BATCH_BREAK_DUE_TO_PIPELINE_MODE_CHANGE = 568 -SC_PBB_RESERVED = 569 -SC_BM_BE0_STALLED = 570 -SC_BM_BE1_STALLED = 571 -SC_BM_BE2_STALLED = 572 -SC_BM_BE3_STALLED = 573 -SC_BM_MULTI_ACCUM_1_BE_STALLED = 574 -SC_BM_MULTI_ACCUM_2_BE_STALLED = 575 -SC_BM_MULTI_ACCUM_3_BE_STALLED = 576 -SC_BM_MULTI_ACCUM_4_BE_STALLED = 577 -SC_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'ScMap' -ScMap__enumvalues = { - 0: 'RASTER_CONFIG_SC_MAP_0', - 1: 'RASTER_CONFIG_SC_MAP_1', - 2: 'RASTER_CONFIG_SC_MAP_2', - 3: 'RASTER_CONFIG_SC_MAP_3', -} -RASTER_CONFIG_SC_MAP_0 = 0 -RASTER_CONFIG_SC_MAP_1 = 1 -RASTER_CONFIG_SC_MAP_2 = 2 -RASTER_CONFIG_SC_MAP_3 = 3 -ScMap = ctypes.c_uint32 # enum - -# values for enumeration 'ScUncertaintyRegionMode' -ScUncertaintyRegionMode__enumvalues = { - 0: 'SC_HALF_LSB', - 1: 'SC_LSB_ONE_SIDED', - 2: 'SC_LSB_TWO_SIDED', -} -SC_HALF_LSB = 0 -SC_LSB_ONE_SIDED = 1 -SC_LSB_TWO_SIDED = 2 -ScUncertaintyRegionMode = ctypes.c_uint32 # enum - -# values for enumeration 'ScUncertaintyRegionMult' -ScUncertaintyRegionMult__enumvalues = { - 0: 'SC_UR_1X', - 1: 'SC_UR_2X', - 2: 'SC_UR_4X', - 3: 'SC_UR_8X', -} -SC_UR_1X = 0 -SC_UR_2X = 1 -SC_UR_4X = 2 -SC_UR_8X = 3 -ScUncertaintyRegionMult = ctypes.c_uint32 # enum - -# values for enumeration 'ScXsel' -ScXsel__enumvalues = { - 0: 'RASTER_CONFIG_SC_XSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SC_XSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SC_XSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SC_XSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SC_XSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SC_XSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SC_XSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SC_XSEL_64_WIDE_TILE = 3 -ScXsel = ctypes.c_uint32 # enum - -# values for enumeration 'ScYsel' -ScYsel__enumvalues = { - 0: 'RASTER_CONFIG_SC_YSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SC_YSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SC_YSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SC_YSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SC_YSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SC_YSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SC_YSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SC_YSEL_64_WIDE_TILE = 3 -ScYsel = ctypes.c_uint32 # enum - -# values for enumeration 'SeMap' -SeMap__enumvalues = { - 0: 'RASTER_CONFIG_SE_MAP_0', - 1: 'RASTER_CONFIG_SE_MAP_1', - 2: 'RASTER_CONFIG_SE_MAP_2', - 3: 'RASTER_CONFIG_SE_MAP_3', -} -RASTER_CONFIG_SE_MAP_0 = 0 -RASTER_CONFIG_SE_MAP_1 = 1 -RASTER_CONFIG_SE_MAP_2 = 2 -RASTER_CONFIG_SE_MAP_3 = 3 -SeMap = ctypes.c_uint32 # enum - -# values for enumeration 'SePairMap' -SePairMap__enumvalues = { - 0: 'RASTER_CONFIG_SE_PAIR_MAP_0', - 1: 'RASTER_CONFIG_SE_PAIR_MAP_1', - 2: 'RASTER_CONFIG_SE_PAIR_MAP_2', - 3: 'RASTER_CONFIG_SE_PAIR_MAP_3', -} -RASTER_CONFIG_SE_PAIR_MAP_0 = 0 -RASTER_CONFIG_SE_PAIR_MAP_1 = 1 -RASTER_CONFIG_SE_PAIR_MAP_2 = 2 -RASTER_CONFIG_SE_PAIR_MAP_3 = 3 -SePairMap = ctypes.c_uint32 # enum - -# values for enumeration 'SePairXsel' -SePairXsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_PAIR_XSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_PAIR_XSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_PAIR_XSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_PAIR_XSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SE_PAIR_XSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_PAIR_XSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_PAIR_XSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_PAIR_XSEL_64_WIDE_TILE = 3 -SePairXsel = ctypes.c_uint32 # enum - -# values for enumeration 'SePairYsel' -SePairYsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_PAIR_YSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_PAIR_YSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_PAIR_YSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_PAIR_YSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SE_PAIR_YSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_PAIR_YSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_PAIR_YSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_PAIR_YSEL_64_WIDE_TILE = 3 -SePairYsel = ctypes.c_uint32 # enum - -# values for enumeration 'SeXsel' -SeXsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_XSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_XSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_XSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_XSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SE_XSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_XSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_XSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_XSEL_64_WIDE_TILE = 3 -SeXsel = ctypes.c_uint32 # enum - -# values for enumeration 'SeYsel' -SeYsel__enumvalues = { - 0: 'RASTER_CONFIG_SE_YSEL_8_WIDE_TILE', - 1: 'RASTER_CONFIG_SE_YSEL_16_WIDE_TILE', - 2: 'RASTER_CONFIG_SE_YSEL_32_WIDE_TILE', - 3: 'RASTER_CONFIG_SE_YSEL_64_WIDE_TILE', -} -RASTER_CONFIG_SE_YSEL_8_WIDE_TILE = 0 -RASTER_CONFIG_SE_YSEL_16_WIDE_TILE = 1 -RASTER_CONFIG_SE_YSEL_32_WIDE_TILE = 2 -RASTER_CONFIG_SE_YSEL_64_WIDE_TILE = 3 -SeYsel = ctypes.c_uint32 # enum - -# values for enumeration 'VRSCombinerModeSC' -VRSCombinerModeSC__enumvalues = { - 0: 'SC_VRS_COMB_MODE_PASSTHRU', - 1: 'SC_VRS_COMB_MODE_OVERRIDE', - 2: 'SC_VRS_COMB_MODE_MIN', - 3: 'SC_VRS_COMB_MODE_MAX', - 4: 'SC_VRS_COMB_MODE_SATURATE', -} -SC_VRS_COMB_MODE_PASSTHRU = 0 -SC_VRS_COMB_MODE_OVERRIDE = 1 -SC_VRS_COMB_MODE_MIN = 2 -SC_VRS_COMB_MODE_MAX = 3 -SC_VRS_COMB_MODE_SATURATE = 4 -VRSCombinerModeSC = ctypes.c_uint32 # enum - -# values for enumeration 'VRSrate' -VRSrate__enumvalues = { - 0: 'VRS_SHADING_RATE_1X1', - 1: 'VRS_SHADING_RATE_1X2', - 2: 'VRS_SHADING_RATE_UNDEFINED0', - 3: 'VRS_SHADING_RATE_UNDEFINED1', - 4: 'VRS_SHADING_RATE_2X1', - 5: 'VRS_SHADING_RATE_2X2', - 6: 'VRS_SHADING_RATE_2X4', - 7: 'VRS_SHADING_RATE_UNDEFINED2', - 8: 'VRS_SHADING_RATE_UNDEFINED3', - 9: 'VRS_SHADING_RATE_4X2', - 10: 'VRS_SHADING_RATE_4X4', - 11: 'VRS_SHADING_RATE_UNDEFINED4', - 12: 'VRS_SHADING_RATE_16X_SSAA', - 13: 'VRS_SHADING_RATE_8X_SSAA', - 14: 'VRS_SHADING_RATE_4X_SSAA', - 15: 'VRS_SHADING_RATE_2X_SSAA', -} -VRS_SHADING_RATE_1X1 = 0 -VRS_SHADING_RATE_1X2 = 1 -VRS_SHADING_RATE_UNDEFINED0 = 2 -VRS_SHADING_RATE_UNDEFINED1 = 3 -VRS_SHADING_RATE_2X1 = 4 -VRS_SHADING_RATE_2X2 = 5 -VRS_SHADING_RATE_2X4 = 6 -VRS_SHADING_RATE_UNDEFINED2 = 7 -VRS_SHADING_RATE_UNDEFINED3 = 8 -VRS_SHADING_RATE_4X2 = 9 -VRS_SHADING_RATE_4X4 = 10 -VRS_SHADING_RATE_UNDEFINED4 = 11 -VRS_SHADING_RATE_16X_SSAA = 12 -VRS_SHADING_RATE_8X_SSAA = 13 -VRS_SHADING_RATE_4X_SSAA = 14 -VRS_SHADING_RATE_2X_SSAA = 15 -VRSrate = ctypes.c_uint32 # enum - -# values for enumeration 'TC_EA_CID' -TC_EA_CID__enumvalues = { - 0: 'TC_EA_CID_RT', - 1: 'TC_EA_CID_FMASK', - 2: 'TC_EA_CID_DCC', - 3: 'TC_EA_CID_TCPMETA', - 4: 'TC_EA_CID_Z', - 5: 'TC_EA_CID_STENCIL', - 6: 'TC_EA_CID_HTILE', - 7: 'TC_EA_CID_MISC', - 8: 'TC_EA_CID_TCP', - 9: 'TC_EA_CID_SQC', - 10: 'TC_EA_CID_CPF', - 11: 'TC_EA_CID_CPG', - 12: 'TC_EA_CID_IA', - 13: 'TC_EA_CID_WD', - 14: 'TC_EA_CID_PA', - 15: 'TC_EA_CID_UTCL2_TPI', -} -TC_EA_CID_RT = 0 -TC_EA_CID_FMASK = 1 -TC_EA_CID_DCC = 2 -TC_EA_CID_TCPMETA = 3 -TC_EA_CID_Z = 4 -TC_EA_CID_STENCIL = 5 -TC_EA_CID_HTILE = 6 -TC_EA_CID_MISC = 7 -TC_EA_CID_TCP = 8 -TC_EA_CID_SQC = 9 -TC_EA_CID_CPF = 10 -TC_EA_CID_CPG = 11 -TC_EA_CID_IA = 12 -TC_EA_CID_WD = 13 -TC_EA_CID_PA = 14 -TC_EA_CID_UTCL2_TPI = 15 -TC_EA_CID = ctypes.c_uint32 # enum - -# values for enumeration 'TC_NACKS' -TC_NACKS__enumvalues = { - 0: 'TC_NACK_NO_FAULT', - 1: 'TC_NACK_PAGE_FAULT', - 2: 'TC_NACK_PROTECTION_FAULT', - 3: 'TC_NACK_DATA_ERROR', -} -TC_NACK_NO_FAULT = 0 -TC_NACK_PAGE_FAULT = 1 -TC_NACK_PROTECTION_FAULT = 2 -TC_NACK_DATA_ERROR = 3 -TC_NACKS = ctypes.c_uint32 # enum - -# values for enumeration 'TC_OP' -TC_OP__enumvalues = { - 0: 'TC_OP_READ', - 1: 'TC_OP_ATOMIC_FCMPSWAP_RTN_32', - 2: 'TC_OP_ATOMIC_FMIN_RTN_32', - 3: 'TC_OP_ATOMIC_FMAX_RTN_32', - 4: 'TC_OP_RESERVED_FOP_RTN_32_0', - 5: 'TC_OP_RESERVED_FADD_RTN_32', - 6: 'TC_OP_RESERVED_FOP_RTN_32_2', - 7: 'TC_OP_ATOMIC_SWAP_RTN_32', - 8: 'TC_OP_ATOMIC_CMPSWAP_RTN_32', - 9: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32', - 10: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32', - 11: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32', - 12: 'TC_OP_PROBE_FILTER', - 13: 'TC_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32', - 14: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2', - 15: 'TC_OP_ATOMIC_ADD_RTN_32', - 16: 'TC_OP_ATOMIC_SUB_RTN_32', - 17: 'TC_OP_ATOMIC_SMIN_RTN_32', - 18: 'TC_OP_ATOMIC_UMIN_RTN_32', - 19: 'TC_OP_ATOMIC_SMAX_RTN_32', - 20: 'TC_OP_ATOMIC_UMAX_RTN_32', - 21: 'TC_OP_ATOMIC_AND_RTN_32', - 22: 'TC_OP_ATOMIC_OR_RTN_32', - 23: 'TC_OP_ATOMIC_XOR_RTN_32', - 24: 'TC_OP_ATOMIC_INC_RTN_32', - 25: 'TC_OP_ATOMIC_DEC_RTN_32', - 26: 'TC_OP_WBINVL1_VOL', - 27: 'TC_OP_WBINVL1_SD', - 28: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_0', - 29: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_1', - 30: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_2', - 31: 'TC_OP_RESERVED_NON_FLOAT_RTN_32_3', - 32: 'TC_OP_WRITE', - 33: 'TC_OP_ATOMIC_FCMPSWAP_RTN_64', - 34: 'TC_OP_ATOMIC_FMIN_RTN_64', - 35: 'TC_OP_ATOMIC_FMAX_RTN_64', - 36: 'TC_OP_RESERVED_FOP_RTN_64_0', - 37: 'TC_OP_RESERVED_FOP_RTN_64_1', - 38: 'TC_OP_RESERVED_FOP_RTN_64_2', - 39: 'TC_OP_ATOMIC_SWAP_RTN_64', - 40: 'TC_OP_ATOMIC_CMPSWAP_RTN_64', - 41: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64', - 42: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64', - 43: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64', - 44: 'TC_OP_WBINVL2_SD', - 45: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_0', - 46: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_1', - 47: 'TC_OP_ATOMIC_ADD_RTN_64', - 48: 'TC_OP_ATOMIC_SUB_RTN_64', - 49: 'TC_OP_ATOMIC_SMIN_RTN_64', - 50: 'TC_OP_ATOMIC_UMIN_RTN_64', - 51: 'TC_OP_ATOMIC_SMAX_RTN_64', - 52: 'TC_OP_ATOMIC_UMAX_RTN_64', - 53: 'TC_OP_ATOMIC_AND_RTN_64', - 54: 'TC_OP_ATOMIC_OR_RTN_64', - 55: 'TC_OP_ATOMIC_XOR_RTN_64', - 56: 'TC_OP_ATOMIC_INC_RTN_64', - 57: 'TC_OP_ATOMIC_DEC_RTN_64', - 58: 'TC_OP_WBL2_NC', - 59: 'TC_OP_WBL2_WC', - 60: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_1', - 61: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_2', - 62: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_3', - 63: 'TC_OP_RESERVED_NON_FLOAT_RTN_64_4', - 64: 'TC_OP_WBINVL1', - 65: 'TC_OP_ATOMIC_FCMPSWAP_32', - 66: 'TC_OP_ATOMIC_FMIN_32', - 67: 'TC_OP_ATOMIC_FMAX_32', - 68: 'TC_OP_RESERVED_FOP_32_0', - 69: 'TC_OP_RESERVED_FADD_32', - 70: 'TC_OP_RESERVED_FOP_32_2', - 71: 'TC_OP_ATOMIC_SWAP_32', - 72: 'TC_OP_ATOMIC_CMPSWAP_32', - 73: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32', - 74: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_32', - 75: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_32', - 76: 'TC_OP_INV_METADATA', - 77: 'TC_OP_ATOMIC_FADD_FLUSH_DENORM_32', - 78: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_32_2', - 79: 'TC_OP_ATOMIC_ADD_32', - 80: 'TC_OP_ATOMIC_SUB_32', - 81: 'TC_OP_ATOMIC_SMIN_32', - 82: 'TC_OP_ATOMIC_UMIN_32', - 83: 'TC_OP_ATOMIC_SMAX_32', - 84: 'TC_OP_ATOMIC_UMAX_32', - 85: 'TC_OP_ATOMIC_AND_32', - 86: 'TC_OP_ATOMIC_OR_32', - 87: 'TC_OP_ATOMIC_XOR_32', - 88: 'TC_OP_ATOMIC_INC_32', - 89: 'TC_OP_ATOMIC_DEC_32', - 90: 'TC_OP_INVL2_NC', - 91: 'TC_OP_NOP_RTN0', - 92: 'TC_OP_RESERVED_NON_FLOAT_32_1', - 93: 'TC_OP_RESERVED_NON_FLOAT_32_2', - 94: 'TC_OP_RESERVED_NON_FLOAT_32_3', - 95: 'TC_OP_RESERVED_NON_FLOAT_32_4', - 96: 'TC_OP_WBINVL2', - 97: 'TC_OP_ATOMIC_FCMPSWAP_64', - 98: 'TC_OP_ATOMIC_FMIN_64', - 99: 'TC_OP_ATOMIC_FMAX_64', - 100: 'TC_OP_RESERVED_FOP_64_0', - 101: 'TC_OP_RESERVED_FOP_64_1', - 102: 'TC_OP_RESERVED_FOP_64_2', - 103: 'TC_OP_ATOMIC_SWAP_64', - 104: 'TC_OP_ATOMIC_CMPSWAP_64', - 105: 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64', - 106: 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_64', - 107: 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_64', - 108: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_0', - 109: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_1', - 110: 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_2', - 111: 'TC_OP_ATOMIC_ADD_64', - 112: 'TC_OP_ATOMIC_SUB_64', - 113: 'TC_OP_ATOMIC_SMIN_64', - 114: 'TC_OP_ATOMIC_UMIN_64', - 115: 'TC_OP_ATOMIC_SMAX_64', - 116: 'TC_OP_ATOMIC_UMAX_64', - 117: 'TC_OP_ATOMIC_AND_64', - 118: 'TC_OP_ATOMIC_OR_64', - 119: 'TC_OP_ATOMIC_XOR_64', - 120: 'TC_OP_ATOMIC_INC_64', - 121: 'TC_OP_ATOMIC_DEC_64', - 122: 'TC_OP_WBINVL2_NC', - 123: 'TC_OP_NOP_ACK', - 124: 'TC_OP_RESERVED_NON_FLOAT_64_1', - 125: 'TC_OP_RESERVED_NON_FLOAT_64_2', - 126: 'TC_OP_RESERVED_NON_FLOAT_64_3', - 127: 'TC_OP_RESERVED_NON_FLOAT_64_4', -} -TC_OP_READ = 0 -TC_OP_ATOMIC_FCMPSWAP_RTN_32 = 1 -TC_OP_ATOMIC_FMIN_RTN_32 = 2 -TC_OP_ATOMIC_FMAX_RTN_32 = 3 -TC_OP_RESERVED_FOP_RTN_32_0 = 4 -TC_OP_RESERVED_FADD_RTN_32 = 5 -TC_OP_RESERVED_FOP_RTN_32_2 = 6 -TC_OP_ATOMIC_SWAP_RTN_32 = 7 -TC_OP_ATOMIC_CMPSWAP_RTN_32 = 8 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32 = 9 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32 = 10 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32 = 11 -TC_OP_PROBE_FILTER = 12 -TC_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32 = 13 -TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2 = 14 -TC_OP_ATOMIC_ADD_RTN_32 = 15 -TC_OP_ATOMIC_SUB_RTN_32 = 16 -TC_OP_ATOMIC_SMIN_RTN_32 = 17 -TC_OP_ATOMIC_UMIN_RTN_32 = 18 -TC_OP_ATOMIC_SMAX_RTN_32 = 19 -TC_OP_ATOMIC_UMAX_RTN_32 = 20 -TC_OP_ATOMIC_AND_RTN_32 = 21 -TC_OP_ATOMIC_OR_RTN_32 = 22 -TC_OP_ATOMIC_XOR_RTN_32 = 23 -TC_OP_ATOMIC_INC_RTN_32 = 24 -TC_OP_ATOMIC_DEC_RTN_32 = 25 -TC_OP_WBINVL1_VOL = 26 -TC_OP_WBINVL1_SD = 27 -TC_OP_RESERVED_NON_FLOAT_RTN_32_0 = 28 -TC_OP_RESERVED_NON_FLOAT_RTN_32_1 = 29 -TC_OP_RESERVED_NON_FLOAT_RTN_32_2 = 30 -TC_OP_RESERVED_NON_FLOAT_RTN_32_3 = 31 -TC_OP_WRITE = 32 -TC_OP_ATOMIC_FCMPSWAP_RTN_64 = 33 -TC_OP_ATOMIC_FMIN_RTN_64 = 34 -TC_OP_ATOMIC_FMAX_RTN_64 = 35 -TC_OP_RESERVED_FOP_RTN_64_0 = 36 -TC_OP_RESERVED_FOP_RTN_64_1 = 37 -TC_OP_RESERVED_FOP_RTN_64_2 = 38 -TC_OP_ATOMIC_SWAP_RTN_64 = 39 -TC_OP_ATOMIC_CMPSWAP_RTN_64 = 40 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64 = 41 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64 = 42 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64 = 43 -TC_OP_WBINVL2_SD = 44 -TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_0 = 45 -TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_1 = 46 -TC_OP_ATOMIC_ADD_RTN_64 = 47 -TC_OP_ATOMIC_SUB_RTN_64 = 48 -TC_OP_ATOMIC_SMIN_RTN_64 = 49 -TC_OP_ATOMIC_UMIN_RTN_64 = 50 -TC_OP_ATOMIC_SMAX_RTN_64 = 51 -TC_OP_ATOMIC_UMAX_RTN_64 = 52 -TC_OP_ATOMIC_AND_RTN_64 = 53 -TC_OP_ATOMIC_OR_RTN_64 = 54 -TC_OP_ATOMIC_XOR_RTN_64 = 55 -TC_OP_ATOMIC_INC_RTN_64 = 56 -TC_OP_ATOMIC_DEC_RTN_64 = 57 -TC_OP_WBL2_NC = 58 -TC_OP_WBL2_WC = 59 -TC_OP_RESERVED_NON_FLOAT_RTN_64_1 = 60 -TC_OP_RESERVED_NON_FLOAT_RTN_64_2 = 61 -TC_OP_RESERVED_NON_FLOAT_RTN_64_3 = 62 -TC_OP_RESERVED_NON_FLOAT_RTN_64_4 = 63 -TC_OP_WBINVL1 = 64 -TC_OP_ATOMIC_FCMPSWAP_32 = 65 -TC_OP_ATOMIC_FMIN_32 = 66 -TC_OP_ATOMIC_FMAX_32 = 67 -TC_OP_RESERVED_FOP_32_0 = 68 -TC_OP_RESERVED_FADD_32 = 69 -TC_OP_RESERVED_FOP_32_2 = 70 -TC_OP_ATOMIC_SWAP_32 = 71 -TC_OP_ATOMIC_CMPSWAP_32 = 72 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32 = 73 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_32 = 74 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_32 = 75 -TC_OP_INV_METADATA = 76 -TC_OP_ATOMIC_FADD_FLUSH_DENORM_32 = 77 -TC_OP_RESERVED_FOP_FLUSH_DENORM_32_2 = 78 -TC_OP_ATOMIC_ADD_32 = 79 -TC_OP_ATOMIC_SUB_32 = 80 -TC_OP_ATOMIC_SMIN_32 = 81 -TC_OP_ATOMIC_UMIN_32 = 82 -TC_OP_ATOMIC_SMAX_32 = 83 -TC_OP_ATOMIC_UMAX_32 = 84 -TC_OP_ATOMIC_AND_32 = 85 -TC_OP_ATOMIC_OR_32 = 86 -TC_OP_ATOMIC_XOR_32 = 87 -TC_OP_ATOMIC_INC_32 = 88 -TC_OP_ATOMIC_DEC_32 = 89 -TC_OP_INVL2_NC = 90 -TC_OP_NOP_RTN0 = 91 -TC_OP_RESERVED_NON_FLOAT_32_1 = 92 -TC_OP_RESERVED_NON_FLOAT_32_2 = 93 -TC_OP_RESERVED_NON_FLOAT_32_3 = 94 -TC_OP_RESERVED_NON_FLOAT_32_4 = 95 -TC_OP_WBINVL2 = 96 -TC_OP_ATOMIC_FCMPSWAP_64 = 97 -TC_OP_ATOMIC_FMIN_64 = 98 -TC_OP_ATOMIC_FMAX_64 = 99 -TC_OP_RESERVED_FOP_64_0 = 100 -TC_OP_RESERVED_FOP_64_1 = 101 -TC_OP_RESERVED_FOP_64_2 = 102 -TC_OP_ATOMIC_SWAP_64 = 103 -TC_OP_ATOMIC_CMPSWAP_64 = 104 -TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64 = 105 -TC_OP_ATOMIC_FMIN_FLUSH_DENORM_64 = 106 -TC_OP_ATOMIC_FMAX_FLUSH_DENORM_64 = 107 -TC_OP_RESERVED_FOP_FLUSH_DENORM_64_0 = 108 -TC_OP_RESERVED_FOP_FLUSH_DENORM_64_1 = 109 -TC_OP_RESERVED_FOP_FLUSH_DENORM_64_2 = 110 -TC_OP_ATOMIC_ADD_64 = 111 -TC_OP_ATOMIC_SUB_64 = 112 -TC_OP_ATOMIC_SMIN_64 = 113 -TC_OP_ATOMIC_UMIN_64 = 114 -TC_OP_ATOMIC_SMAX_64 = 115 -TC_OP_ATOMIC_UMAX_64 = 116 -TC_OP_ATOMIC_AND_64 = 117 -TC_OP_ATOMIC_OR_64 = 118 -TC_OP_ATOMIC_XOR_64 = 119 -TC_OP_ATOMIC_INC_64 = 120 -TC_OP_ATOMIC_DEC_64 = 121 -TC_OP_WBINVL2_NC = 122 -TC_OP_NOP_ACK = 123 -TC_OP_RESERVED_NON_FLOAT_64_1 = 124 -TC_OP_RESERVED_NON_FLOAT_64_2 = 125 -TC_OP_RESERVED_NON_FLOAT_64_3 = 126 -TC_OP_RESERVED_NON_FLOAT_64_4 = 127 -TC_OP = ctypes.c_uint32 # enum - -# values for enumeration 'TC_OP_MASKS' -TC_OP_MASKS__enumvalues = { - 8: 'TC_OP_MASK_FLUSH_DENROM', - 32: 'TC_OP_MASK_64', - 64: 'TC_OP_MASK_NO_RTN', -} -TC_OP_MASK_FLUSH_DENROM = 8 -TC_OP_MASK_64 = 32 -TC_OP_MASK_NO_RTN = 64 -TC_OP_MASKS = ctypes.c_uint32 # enum - -# values for enumeration 'GL2_EA_CID' -GL2_EA_CID__enumvalues = { - 0: 'GL2_EA_CID_CLIENT', - 1: 'GL2_EA_CID_SDMA', - 2: 'GL2_EA_CID_RLC', - 3: 'GL2_EA_CID_SQC', - 4: 'GL2_EA_CID_CP', - 5: 'GL2_EA_CID_CPDMA', - 6: 'GL2_EA_CID_UTCL2', - 7: 'GL2_EA_CID_RT', - 8: 'GL2_EA_CID_FMASK', - 9: 'GL2_EA_CID_DCC', - 10: 'GL2_EA_CID_Z_STENCIL', - 11: 'GL2_EA_CID_ZPCPSD', - 12: 'GL2_EA_CID_HTILE', - 13: 'GL2_EA_CID_MES', - 15: 'GL2_EA_CID_TCPMETA', -} -GL2_EA_CID_CLIENT = 0 -GL2_EA_CID_SDMA = 1 -GL2_EA_CID_RLC = 2 -GL2_EA_CID_SQC = 3 -GL2_EA_CID_CP = 4 -GL2_EA_CID_CPDMA = 5 -GL2_EA_CID_UTCL2 = 6 -GL2_EA_CID_RT = 7 -GL2_EA_CID_FMASK = 8 -GL2_EA_CID_DCC = 9 -GL2_EA_CID_Z_STENCIL = 10 -GL2_EA_CID_ZPCPSD = 11 -GL2_EA_CID_HTILE = 12 -GL2_EA_CID_MES = 13 -GL2_EA_CID_TCPMETA = 15 -GL2_EA_CID = ctypes.c_uint32 # enum - -# values for enumeration 'GL2_NACKS' -GL2_NACKS__enumvalues = { - 0: 'GL2_NACK_NO_FAULT', - 1: 'GL2_NACK_PAGE_FAULT', - 2: 'GL2_NACK_PROTECTION_FAULT', - 3: 'GL2_NACK_DATA_ERROR', -} -GL2_NACK_NO_FAULT = 0 -GL2_NACK_PAGE_FAULT = 1 -GL2_NACK_PROTECTION_FAULT = 2 -GL2_NACK_DATA_ERROR = 3 -GL2_NACKS = ctypes.c_uint32 # enum - -# values for enumeration 'GL2_OP' -GL2_OP__enumvalues = { - 0: 'GL2_OP_READ', - 1: 'GL2_OP_ATOMIC_FCMPSWAP_RTN_32', - 2: 'GL2_OP_ATOMIC_FMIN_RTN_32', - 3: 'GL2_OP_ATOMIC_FMAX_RTN_32', - 7: 'GL2_OP_ATOMIC_SWAP_RTN_32', - 8: 'GL2_OP_ATOMIC_CMPSWAP_RTN_32', - 9: 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32', - 10: 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32', - 11: 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32', - 12: 'GL2_OP_PROBE_FILTER', - 13: 'GL2_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32', - 14: 'GL2_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2', - 15: 'GL2_OP_ATOMIC_ADD_RTN_32', - 16: 'GL2_OP_ATOMIC_SUB_RTN_32', - 17: 'GL2_OP_ATOMIC_SMIN_RTN_32', - 18: 'GL2_OP_ATOMIC_UMIN_RTN_32', - 19: 'GL2_OP_ATOMIC_SMAX_RTN_32', - 20: 'GL2_OP_ATOMIC_UMAX_RTN_32', - 21: 'GL2_OP_ATOMIC_AND_RTN_32', - 22: 'GL2_OP_ATOMIC_OR_RTN_32', - 23: 'GL2_OP_ATOMIC_XOR_RTN_32', - 24: 'GL2_OP_ATOMIC_INC_RTN_32', - 25: 'GL2_OP_ATOMIC_DEC_RTN_32', - 26: 'GL2_OP_ATOMIC_CLAMP_SUB_RTN_32', - 32: 'GL2_OP_WRITE', - 33: 'GL2_OP_ATOMIC_FCMPSWAP_RTN_64', - 34: 'GL2_OP_ATOMIC_FMIN_RTN_64', - 35: 'GL2_OP_ATOMIC_FMAX_RTN_64', - 39: 'GL2_OP_ATOMIC_SWAP_RTN_64', - 40: 'GL2_OP_ATOMIC_CMPSWAP_RTN_64', - 41: 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64', - 42: 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64', - 43: 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64', - 47: 'GL2_OP_ATOMIC_ADD_RTN_64', - 48: 'GL2_OP_ATOMIC_SUB_RTN_64', - 49: 'GL2_OP_ATOMIC_SMIN_RTN_64', - 50: 'GL2_OP_ATOMIC_UMIN_RTN_64', - 51: 'GL2_OP_ATOMIC_SMAX_RTN_64', - 52: 'GL2_OP_ATOMIC_UMAX_RTN_64', - 53: 'GL2_OP_ATOMIC_AND_RTN_64', - 54: 'GL2_OP_ATOMIC_OR_RTN_64', - 55: 'GL2_OP_ATOMIC_XOR_RTN_64', - 56: 'GL2_OP_ATOMIC_INC_RTN_64', - 57: 'GL2_OP_ATOMIC_DEC_RTN_64', - 64: 'GL2_OP_GL1_INV', - 65: 'GL2_OP_ATOMIC_FCMPSWAP_32', - 66: 'GL2_OP_ATOMIC_FMIN_32', - 67: 'GL2_OP_ATOMIC_FMAX_32', - 71: 'GL2_OP_ATOMIC_SWAP_32', - 72: 'GL2_OP_ATOMIC_CMPSWAP_32', - 73: 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32', - 74: 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_32', - 75: 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_32', - 76: 'GL2_OP_ATOMIC_UMIN_8', - 77: 'GL2_OP_ATOMIC_FADD_FLUSH_DENORM_32', - 79: 'GL2_OP_ATOMIC_ADD_32', - 80: 'GL2_OP_ATOMIC_SUB_32', - 81: 'GL2_OP_ATOMIC_SMIN_32', - 82: 'GL2_OP_ATOMIC_UMIN_32', - 83: 'GL2_OP_ATOMIC_SMAX_32', - 84: 'GL2_OP_ATOMIC_UMAX_32', - 85: 'GL2_OP_ATOMIC_AND_32', - 86: 'GL2_OP_ATOMIC_OR_32', - 87: 'GL2_OP_ATOMIC_XOR_32', - 88: 'GL2_OP_ATOMIC_INC_32', - 89: 'GL2_OP_ATOMIC_DEC_32', - 91: 'GL2_OP_NOP_RTN0', - 97: 'GL2_OP_ATOMIC_FCMPSWAP_64', - 98: 'GL2_OP_ATOMIC_FMIN_64', - 99: 'GL2_OP_ATOMIC_FMAX_64', - 103: 'GL2_OP_ATOMIC_SWAP_64', - 104: 'GL2_OP_ATOMIC_CMPSWAP_64', - 105: 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64', - 106: 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_64', - 107: 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_64', - 111: 'GL2_OP_ATOMIC_ADD_64', - 112: 'GL2_OP_ATOMIC_SUB_64', - 113: 'GL2_OP_ATOMIC_SMIN_64', - 114: 'GL2_OP_ATOMIC_UMIN_64', - 115: 'GL2_OP_ATOMIC_SMAX_64', - 116: 'GL2_OP_ATOMIC_UMAX_64', - 117: 'GL2_OP_ATOMIC_AND_64', - 118: 'GL2_OP_ATOMIC_OR_64', - 119: 'GL2_OP_ATOMIC_XOR_64', - 120: 'GL2_OP_ATOMIC_INC_64', - 121: 'GL2_OP_ATOMIC_DEC_64', - 122: 'GL2_OP_ATOMIC_UMAX_8', - 123: 'GL2_OP_NOP_ACK', -} -GL2_OP_READ = 0 -GL2_OP_ATOMIC_FCMPSWAP_RTN_32 = 1 -GL2_OP_ATOMIC_FMIN_RTN_32 = 2 -GL2_OP_ATOMIC_FMAX_RTN_32 = 3 -GL2_OP_ATOMIC_SWAP_RTN_32 = 7 -GL2_OP_ATOMIC_CMPSWAP_RTN_32 = 8 -GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32 = 9 -GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32 = 10 -GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32 = 11 -GL2_OP_PROBE_FILTER = 12 -GL2_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32 = 13 -GL2_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2 = 14 -GL2_OP_ATOMIC_ADD_RTN_32 = 15 -GL2_OP_ATOMIC_SUB_RTN_32 = 16 -GL2_OP_ATOMIC_SMIN_RTN_32 = 17 -GL2_OP_ATOMIC_UMIN_RTN_32 = 18 -GL2_OP_ATOMIC_SMAX_RTN_32 = 19 -GL2_OP_ATOMIC_UMAX_RTN_32 = 20 -GL2_OP_ATOMIC_AND_RTN_32 = 21 -GL2_OP_ATOMIC_OR_RTN_32 = 22 -GL2_OP_ATOMIC_XOR_RTN_32 = 23 -GL2_OP_ATOMIC_INC_RTN_32 = 24 -GL2_OP_ATOMIC_DEC_RTN_32 = 25 -GL2_OP_ATOMIC_CLAMP_SUB_RTN_32 = 26 -GL2_OP_WRITE = 32 -GL2_OP_ATOMIC_FCMPSWAP_RTN_64 = 33 -GL2_OP_ATOMIC_FMIN_RTN_64 = 34 -GL2_OP_ATOMIC_FMAX_RTN_64 = 35 -GL2_OP_ATOMIC_SWAP_RTN_64 = 39 -GL2_OP_ATOMIC_CMPSWAP_RTN_64 = 40 -GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64 = 41 -GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64 = 42 -GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64 = 43 -GL2_OP_ATOMIC_ADD_RTN_64 = 47 -GL2_OP_ATOMIC_SUB_RTN_64 = 48 -GL2_OP_ATOMIC_SMIN_RTN_64 = 49 -GL2_OP_ATOMIC_UMIN_RTN_64 = 50 -GL2_OP_ATOMIC_SMAX_RTN_64 = 51 -GL2_OP_ATOMIC_UMAX_RTN_64 = 52 -GL2_OP_ATOMIC_AND_RTN_64 = 53 -GL2_OP_ATOMIC_OR_RTN_64 = 54 -GL2_OP_ATOMIC_XOR_RTN_64 = 55 -GL2_OP_ATOMIC_INC_RTN_64 = 56 -GL2_OP_ATOMIC_DEC_RTN_64 = 57 -GL2_OP_GL1_INV = 64 -GL2_OP_ATOMIC_FCMPSWAP_32 = 65 -GL2_OP_ATOMIC_FMIN_32 = 66 -GL2_OP_ATOMIC_FMAX_32 = 67 -GL2_OP_ATOMIC_SWAP_32 = 71 -GL2_OP_ATOMIC_CMPSWAP_32 = 72 -GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32 = 73 -GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_32 = 74 -GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_32 = 75 -GL2_OP_ATOMIC_UMIN_8 = 76 -GL2_OP_ATOMIC_FADD_FLUSH_DENORM_32 = 77 -GL2_OP_ATOMIC_ADD_32 = 79 -GL2_OP_ATOMIC_SUB_32 = 80 -GL2_OP_ATOMIC_SMIN_32 = 81 -GL2_OP_ATOMIC_UMIN_32 = 82 -GL2_OP_ATOMIC_SMAX_32 = 83 -GL2_OP_ATOMIC_UMAX_32 = 84 -GL2_OP_ATOMIC_AND_32 = 85 -GL2_OP_ATOMIC_OR_32 = 86 -GL2_OP_ATOMIC_XOR_32 = 87 -GL2_OP_ATOMIC_INC_32 = 88 -GL2_OP_ATOMIC_DEC_32 = 89 -GL2_OP_NOP_RTN0 = 91 -GL2_OP_ATOMIC_FCMPSWAP_64 = 97 -GL2_OP_ATOMIC_FMIN_64 = 98 -GL2_OP_ATOMIC_FMAX_64 = 99 -GL2_OP_ATOMIC_SWAP_64 = 103 -GL2_OP_ATOMIC_CMPSWAP_64 = 104 -GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64 = 105 -GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_64 = 106 -GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_64 = 107 -GL2_OP_ATOMIC_ADD_64 = 111 -GL2_OP_ATOMIC_SUB_64 = 112 -GL2_OP_ATOMIC_SMIN_64 = 113 -GL2_OP_ATOMIC_UMIN_64 = 114 -GL2_OP_ATOMIC_SMAX_64 = 115 -GL2_OP_ATOMIC_UMAX_64 = 116 -GL2_OP_ATOMIC_AND_64 = 117 -GL2_OP_ATOMIC_OR_64 = 118 -GL2_OP_ATOMIC_XOR_64 = 119 -GL2_OP_ATOMIC_INC_64 = 120 -GL2_OP_ATOMIC_DEC_64 = 121 -GL2_OP_ATOMIC_UMAX_8 = 122 -GL2_OP_NOP_ACK = 123 -GL2_OP = ctypes.c_uint32 # enum - -# values for enumeration 'GL2_OP_MASKS' -GL2_OP_MASKS__enumvalues = { - 8: 'GL2_OP_MASK_FLUSH_DENROM', - 32: 'GL2_OP_MASK_64', - 64: 'GL2_OP_MASK_NO_RTN', -} -GL2_OP_MASK_FLUSH_DENROM = 8 -GL2_OP_MASK_64 = 32 -GL2_OP_MASK_NO_RTN = 64 -GL2_OP_MASKS = ctypes.c_uint32 # enum - -# values for enumeration 'RLC_DOORBELL_MODE' -RLC_DOORBELL_MODE__enumvalues = { - 0: 'RLC_DOORBELL_MODE_DISABLE', - 1: 'RLC_DOORBELL_MODE_ENABLE', - 2: 'RLC_DOORBELL_MODE_ENABLE_PF', - 3: 'RLC_DOORBELL_MODE_ENABLE_PF_VF', -} -RLC_DOORBELL_MODE_DISABLE = 0 -RLC_DOORBELL_MODE_ENABLE = 1 -RLC_DOORBELL_MODE_ENABLE_PF = 2 -RLC_DOORBELL_MODE_ENABLE_PF_VF = 3 -RLC_DOORBELL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'RLC_PERFCOUNTER_SEL' -RLC_PERFCOUNTER_SEL__enumvalues = { - 0: 'RLC_PERF_SEL_POWER_FEATURE_0', - 1: 'RLC_PERF_SEL_POWER_FEATURE_1', - 2: 'RLC_PERF_SEL_CP_INTERRUPT', - 3: 'RLC_PERF_SEL_GRBM_INTERRUPT', - 4: 'RLC_PERF_SEL_SPM_INTERRUPT', - 5: 'RLC_PERF_SEL_IH_INTERRUPT', - 6: 'RLC_PERF_SEL_SERDES_COMMAND_WRITE', -} -RLC_PERF_SEL_POWER_FEATURE_0 = 0 -RLC_PERF_SEL_POWER_FEATURE_1 = 1 -RLC_PERF_SEL_CP_INTERRUPT = 2 -RLC_PERF_SEL_GRBM_INTERRUPT = 3 -RLC_PERF_SEL_SPM_INTERRUPT = 4 -RLC_PERF_SEL_IH_INTERRUPT = 5 -RLC_PERF_SEL_SERDES_COMMAND_WRITE = 6 -RLC_PERFCOUNTER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'RLC_PERFMON_STATE' -RLC_PERFMON_STATE__enumvalues = { - 0: 'RLC_PERFMON_STATE_RESET', - 1: 'RLC_PERFMON_STATE_ENABLE', - 2: 'RLC_PERFMON_STATE_DISABLE', - 3: 'RLC_PERFMON_STATE_RESERVED_3', - 4: 'RLC_PERFMON_STATE_RESERVED_4', - 5: 'RLC_PERFMON_STATE_RESERVED_5', - 6: 'RLC_PERFMON_STATE_RESERVED_6', - 7: 'RLC_PERFMON_STATE_ROLLOVER', -} -RLC_PERFMON_STATE_RESET = 0 -RLC_PERFMON_STATE_ENABLE = 1 -RLC_PERFMON_STATE_DISABLE = 2 -RLC_PERFMON_STATE_RESERVED_3 = 3 -RLC_PERFMON_STATE_RESERVED_4 = 4 -RLC_PERFMON_STATE_RESERVED_5 = 5 -RLC_PERFMON_STATE_RESERVED_6 = 6 -RLC_PERFMON_STATE_ROLLOVER = 7 -RLC_PERFMON_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'RSPM_CMD' -RSPM_CMD__enumvalues = { - 0: 'RSPM_CMD_INVALID', - 1: 'RSPM_CMD_IDLE', - 2: 'RSPM_CMD_CALIBRATE', - 3: 'RSPM_CMD_SPM_RESET', - 4: 'RSPM_CMD_SPM_START', - 5: 'RSPM_CMD_SPM_STOP', - 6: 'RSPM_CMD_PERF_RESET', - 7: 'RSPM_CMD_PERF_SAMPLE', - 8: 'RSPM_CMD_PROF_START', - 9: 'RSPM_CMD_PROF_STOP', - 10: 'RSPM_CMD_FORCE_SAMPLE', -} -RSPM_CMD_INVALID = 0 -RSPM_CMD_IDLE = 1 -RSPM_CMD_CALIBRATE = 2 -RSPM_CMD_SPM_RESET = 3 -RSPM_CMD_SPM_START = 4 -RSPM_CMD_SPM_STOP = 5 -RSPM_CMD_PERF_RESET = 6 -RSPM_CMD_PERF_SAMPLE = 7 -RSPM_CMD_PROF_START = 8 -RSPM_CMD_PROF_STOP = 9 -RSPM_CMD_FORCE_SAMPLE = 10 -RSPM_CMD = ctypes.c_uint32 # enum - -# values for enumeration 'CLKGATE_BASE_MODE' -CLKGATE_BASE_MODE__enumvalues = { - 0: 'MULT_8', - 1: 'MULT_16', -} -MULT_8 = 0 -MULT_16 = 1 -CLKGATE_BASE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CLKGATE_SM_MODE' -CLKGATE_SM_MODE__enumvalues = { - 0: 'ON_SEQ', - 1: 'OFF_SEQ', - 2: 'PROG_SEQ', - 3: 'READ_SEQ', - 4: 'SM_MODE_RESERVED', -} -ON_SEQ = 0 -OFF_SEQ = 1 -PROG_SEQ = 2 -READ_SEQ = 3 -SM_MODE_RESERVED = 4 -CLKGATE_SM_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_FOG_MODE' -SPI_FOG_MODE__enumvalues = { - 0: 'SPI_FOG_NONE', - 1: 'SPI_FOG_EXP', - 2: 'SPI_FOG_EXP2', - 3: 'SPI_FOG_LINEAR', -} -SPI_FOG_NONE = 0 -SPI_FOG_EXP = 1 -SPI_FOG_EXP2 = 2 -SPI_FOG_LINEAR = 3 -SPI_FOG_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_LB_WAVES_SELECT' -SPI_LB_WAVES_SELECT__enumvalues = { - 0: 'HS_GS', - 1: 'PS', - 2: 'CS_NA', - 3: 'SPI_LB_WAVES_RSVD', -} -HS_GS = 0 -PS = 1 -CS_NA = 2 -SPI_LB_WAVES_RSVD = 3 -SPI_LB_WAVES_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_PERFCNT_SEL' -SPI_PERFCNT_SEL__enumvalues = { - 1: 'SPI_PERF_GS_WINDOW_VALID', - 2: 'SPI_PERF_GS_BUSY', - 3: 'SPI_PERF_GS_CRAWLER_STALL', - 4: 'SPI_PERF_GS_EVENT_WAVE', - 5: 'SPI_PERF_GS_WAVE', - 6: 'SPI_PERF_GS_PERS_UPD_FULL0', - 7: 'SPI_PERF_GS_PERS_UPD_FULL1', - 8: 'SPI_PERF_GS_FIRST_SUBGRP', - 9: 'SPI_PERF_GS_HS_DEALLOC', - 10: 'SPI_PERF_GS_NGG_SE_LATE_ALLOC_LIMIT', - 11: 'SPI_PERF_GS_POS0_STALL', - 12: 'SPI_PERF_GS_POS1_STALL', - 13: 'SPI_PERF_GS_INDX0_STALL', - 14: 'SPI_PERF_GS_INDX1_STALL', - 15: 'SPI_PERF_GS_PWS_STALL', - 21: 'SPI_PERF_HS_WINDOW_VALID', - 22: 'SPI_PERF_HS_BUSY', - 23: 'SPI_PERF_HS_CRAWLER_STALL', - 24: 'SPI_PERF_HS_FIRST_WAVE', - 25: 'SPI_PERF_HS_OFFCHIP_LDS_STALL', - 26: 'SPI_PERF_HS_EVENT_WAVE', - 27: 'SPI_PERF_HS_WAVE', - 28: 'SPI_PERF_HS_PERS_UPD_FULL0', - 29: 'SPI_PERF_HS_PERS_UPD_FULL1', - 30: 'SPI_PERF_HS_PWS_STALL', - 37: 'SPI_PERF_CSGN_WINDOW_VALID', - 38: 'SPI_PERF_CSGN_BUSY', - 39: 'SPI_PERF_CSGN_NUM_THREADGROUPS', - 40: 'SPI_PERF_CSGN_CRAWLER_STALL', - 41: 'SPI_PERF_CSGN_EVENT_WAVE', - 42: 'SPI_PERF_CSGN_WAVE', - 43: 'SPI_PERF_CSGN_PWS_STALL', - 44: 'SPI_PERF_CSN_WINDOW_VALID', - 45: 'SPI_PERF_CSN_BUSY', - 46: 'SPI_PERF_CSN_NUM_THREADGROUPS', - 47: 'SPI_PERF_CSN_CRAWLER_STALL', - 48: 'SPI_PERF_CSN_EVENT_WAVE', - 49: 'SPI_PERF_CSN_WAVE', - 53: 'SPI_PERF_PS0_WINDOW_VALID', - 54: 'SPI_PERF_PS1_WINDOW_VALID', - 55: 'SPI_PERF_PS2_WINDOW_VALID', - 56: 'SPI_PERF_PS3_WINDOW_VALID', - 57: 'SPI_PERF_PS0_BUSY', - 58: 'SPI_PERF_PS1_BUSY', - 59: 'SPI_PERF_PS2_BUSY', - 60: 'SPI_PERF_PS3_BUSY', - 61: 'SPI_PERF_PS0_ACTIVE', - 62: 'SPI_PERF_PS1_ACTIVE', - 63: 'SPI_PERF_PS2_ACTIVE', - 64: 'SPI_PERF_PS3_ACTIVE', - 65: 'SPI_PERF_PS0_DEALLOC', - 66: 'SPI_PERF_PS1_DEALLOC', - 67: 'SPI_PERF_PS2_DEALLOC', - 68: 'SPI_PERF_PS3_DEALLOC', - 69: 'SPI_PERF_PS0_EVENT_WAVE', - 70: 'SPI_PERF_PS1_EVENT_WAVE', - 71: 'SPI_PERF_PS2_EVENT_WAVE', - 72: 'SPI_PERF_PS3_EVENT_WAVE', - 73: 'SPI_PERF_PS0_WAVE', - 74: 'SPI_PERF_PS1_WAVE', - 75: 'SPI_PERF_PS2_WAVE', - 76: 'SPI_PERF_PS3_WAVE', - 77: 'SPI_PERF_PS0_OPT_WAVE', - 78: 'SPI_PERF_PS1_OPT_WAVE', - 79: 'SPI_PERF_PS2_OPT_WAVE', - 80: 'SPI_PERF_PS3_OPT_WAVE', - 81: 'SPI_PERF_PS0_PRIM_BIN0', - 82: 'SPI_PERF_PS1_PRIM_BIN0', - 83: 'SPI_PERF_PS2_PRIM_BIN0', - 84: 'SPI_PERF_PS3_PRIM_BIN0', - 85: 'SPI_PERF_PS0_PRIM_BIN1', - 86: 'SPI_PERF_PS1_PRIM_BIN1', - 87: 'SPI_PERF_PS2_PRIM_BIN1', - 88: 'SPI_PERF_PS3_PRIM_BIN1', - 89: 'SPI_PERF_PS0_CRAWLER_STALL', - 90: 'SPI_PERF_PS1_CRAWLER_STALL', - 91: 'SPI_PERF_PS2_CRAWLER_STALL', - 92: 'SPI_PERF_PS3_CRAWLER_STALL', - 93: 'SPI_PERF_PS_PERS_UPD_FULL0', - 94: 'SPI_PERF_PS_PERS_UPD_FULL1', - 95: 'SPI_PERF_PS0_2_WAVE_GROUPS', - 96: 'SPI_PERF_PS1_2_WAVE_GROUPS', - 97: 'SPI_PERF_PS2_2_WAVE_GROUPS', - 98: 'SPI_PERF_PS3_2_WAVE_GROUPS', - 99: 'SPI_PERF_PS0_WAVE_GROUP_CLOCK_DELAY', - 100: 'SPI_PERF_PS1_WAVE_GROUP_CLOCK_DELAY', - 101: 'SPI_PERF_PS2_WAVE_GROUP_CLOCK_DELAY', - 102: 'SPI_PERF_PS3_WAVE_GROUP_CLOCK_DELAY', - 103: 'SPI_PERF_PS0_WAVE_GROUP_TIMEOUTS', - 104: 'SPI_PERF_PS1_WAVE_GROUP_TIMEOUTS', - 105: 'SPI_PERF_PS2_WAVE_GROUP_TIMEOUTS', - 106: 'SPI_PERF_PS3_WAVE_GROUP_TIMEOUTS', - 107: 'SPI_PERF_PS_PWS_STALL', - 141: 'SPI_PERF_RA_PIPE_REQ_BIN2', - 142: 'SPI_PERF_RA_TASK_REQ_BIN3', - 143: 'SPI_PERF_RA_WR_CTL_FULL', - 144: 'SPI_PERF_RA_REQ_NO_ALLOC', - 145: 'SPI_PERF_RA_REQ_NO_ALLOC_PS', - 146: 'SPI_PERF_RA_REQ_NO_ALLOC_GS', - 147: 'SPI_PERF_RA_REQ_NO_ALLOC_HS', - 148: 'SPI_PERF_RA_REQ_NO_ALLOC_CSG', - 149: 'SPI_PERF_RA_REQ_NO_ALLOC_CSN', - 150: 'SPI_PERF_RA_RES_STALL_PS', - 151: 'SPI_PERF_RA_RES_STALL_GS', - 152: 'SPI_PERF_RA_RES_STALL_HS', - 153: 'SPI_PERF_RA_RES_STALL_CSG', - 154: 'SPI_PERF_RA_RES_STALL_CSN', - 155: 'SPI_PERF_RA_TMP_STALL_PS', - 156: 'SPI_PERF_RA_TMP_STALL_GS', - 157: 'SPI_PERF_RA_TMP_STALL_HS', - 158: 'SPI_PERF_RA_TMP_STALL_CSG', - 159: 'SPI_PERF_RA_TMP_STALL_CSN', - 160: 'SPI_PERF_RA_WAVE_SIMD_FULL_PS', - 161: 'SPI_PERF_RA_WAVE_SIMD_FULL_GS', - 162: 'SPI_PERF_RA_WAVE_SIMD_FULL_HS', - 163: 'SPI_PERF_RA_WAVE_SIMD_FULL_CSG', - 164: 'SPI_PERF_RA_WAVE_SIMD_FULL_CSN', - 165: 'SPI_PERF_RA_VGPR_SIMD_FULL_PS', - 166: 'SPI_PERF_RA_VGPR_SIMD_FULL_GS', - 167: 'SPI_PERF_RA_VGPR_SIMD_FULL_HS', - 168: 'SPI_PERF_RA_VGPR_SIMD_FULL_CSG', - 169: 'SPI_PERF_RA_VGPR_SIMD_FULL_CSN', - 170: 'SPI_PERF_RA_LDS_CU_FULL_PS', - 171: 'SPI_PERF_RA_LDS_CU_FULL_HS', - 172: 'SPI_PERF_RA_LDS_CU_FULL_GS', - 173: 'SPI_PERF_RA_LDS_CU_FULL_CSG', - 174: 'SPI_PERF_RA_LDS_CU_FULL_CSN', - 175: 'SPI_PERF_RA_BAR_CU_FULL_HS', - 176: 'SPI_PERF_RA_BAR_CU_FULL_CSG', - 177: 'SPI_PERF_RA_BAR_CU_FULL_CSN', - 178: 'SPI_PERF_RA_BULKY_CU_FULL_CSG', - 179: 'SPI_PERF_RA_BULKY_CU_FULL_CSN', - 180: 'SPI_PERF_RA_TGLIM_CU_FULL_CSG', - 181: 'SPI_PERF_RA_TGLIM_CU_FULL_CSN', - 182: 'SPI_PERF_RA_WVLIM_STALL_PS', - 183: 'SPI_PERF_RA_WVLIM_STALL_GS', - 184: 'SPI_PERF_RA_WVLIM_STALL_HS', - 185: 'SPI_PERF_RA_WVLIM_STALL_CSG', - 186: 'SPI_PERF_RA_WVLIM_STALL_CSN', - 187: 'SPI_PERF_RA_GS_LOCK', - 188: 'SPI_PERF_RA_HS_LOCK', - 189: 'SPI_PERF_RA_CSG_LOCK', - 190: 'SPI_PERF_RA_CSN_LOCK', - 191: 'SPI_PERF_RA_RSV_UPD', - 192: 'SPI_PERF_RA_PRE_ALLOC_STALL', - 193: 'SPI_PERF_RA_GFX_UNDER_TUNNEL', - 194: 'SPI_PERF_RA_CSC_UNDER_TUNNEL', - 195: 'SPI_PERF_RA_WVALLOC_STALL', - 196: 'SPI_PERF_RA_ACCUM0_SIMD_FULL_PS', - 197: 'SPI_PERF_RA_ACCUM1_SIMD_FULL_PS', - 198: 'SPI_PERF_RA_ACCUM2_SIMD_FULL_PS', - 199: 'SPI_PERF_RA_ACCUM3_SIMD_FULL_PS', - 200: 'SPI_PERF_RA_ACCUM0_SIMD_FULL_GS', - 201: 'SPI_PERF_RA_ACCUM1_SIMD_FULL_GS', - 202: 'SPI_PERF_RA_ACCUM2_SIMD_FULL_GS', - 203: 'SPI_PERF_RA_ACCUM3_SIMD_FULL_GS', - 204: 'SPI_PERF_RA_ACCUM0_SIMD_FULL_HS', - 205: 'SPI_PERF_RA_ACCUM1_SIMD_FULL_HS', - 206: 'SPI_PERF_RA_ACCUM2_SIMD_FULL_HS', - 207: 'SPI_PERF_RA_ACCUM3_SIMD_FULL_HS', - 208: 'SPI_PERF_RA_ACCUM0_SIMD_FULL_CSG', - 209: 'SPI_PERF_RA_ACCUM1_SIMD_FULL_CSG', - 210: 'SPI_PERF_RA_ACCUM2_SIMD_FULL_CSG', - 211: 'SPI_PERF_RA_ACCUM3_SIMD_FULL_CSG', - 212: 'SPI_PERF_RA_ACCUM0_SIMD_FULL_CSN', - 213: 'SPI_PERF_RA_ACCUM1_SIMD_FULL_CSN', - 214: 'SPI_PERF_RA_ACCUM2_SIMD_FULL_CSN', - 215: 'SPI_PERF_RA_ACCUM3_SIMD_FULL_CSN', - 216: 'SPI_PERF_EXP_ARB_COL_CNT', - 217: 'SPI_PERF_EXP_ARB_POS_CNT', - 218: 'SPI_PERF_EXP_ARB_GDS_CNT', - 219: 'SPI_PERF_EXP_ARB_IDX_CNT', - 220: 'SPI_PERF_EXP_WITH_CONFLICT', - 221: 'SPI_PERF_EXP_WITH_CONFLICT_CLEAR', - 222: 'SPI_PERF_GS_EXP_DONE', - 223: 'SPI_PERF_PS_EXP_DONE', - 224: 'SPI_PERF_PS_EXP_ARB_CONFLICT', - 225: 'SPI_PERF_PS_EXP_ALLOC', - 226: 'SPI_PERF_PS0_WAVEID_STARVED', - 227: 'SPI_PERF_PS1_WAVEID_STARVED', - 228: 'SPI_PERF_PS2_WAVEID_STARVED', - 229: 'SPI_PERF_PS3_WAVEID_STARVED', - 230: 'SPI_PERF_PS0_EXP_ALLOC_WITH_CONFLICT', - 231: 'SPI_PERF_PS1_EXP_ALLOC_WITH_CONFLICT', - 232: 'SPI_PERF_PS2_EXP_ALLOC_WITH_CONFLICT', - 233: 'SPI_PERF_PS3_EXP_ALLOC_WITH_CONFLICT', - 234: 'SPI_PERF_NUM_PS_COL_SA0SQ0_EXPORTS', - 235: 'SPI_PERF_NUM_PS_COL_SA0SQ1_EXPORTS', - 236: 'SPI_PERF_NUM_PS_COL_SA1SQ0_EXPORTS', - 237: 'SPI_PERF_NUM_PS_COL_SA1SQ1_EXPORTS', - 238: 'SPI_PERF_NUM_POS_SA0SQ0_EXPORTS', - 239: 'SPI_PERF_NUM_POS_SA0SQ1_EXPORTS', - 240: 'SPI_PERF_NUM_POS_SA1SQ0_EXPORTS', - 241: 'SPI_PERF_NUM_POS_SA1SQ1_EXPORTS', - 242: 'SPI_PERF_NUM_GDS_SA0SQ0_EXPORTS', - 243: 'SPI_PERF_NUM_GDS_SA0SQ1_EXPORTS', - 244: 'SPI_PERF_NUM_GDS_SA1SQ0_EXPORTS', - 245: 'SPI_PERF_NUM_GDS_SA1SQ1_EXPORTS', - 246: 'SPI_PERF_NUM_EXPGRANT_EXPORTS', - 253: 'SPI_PERF_PIX_ALLOC_PEND_CNT', - 254: 'SPI_PERF_EXPORT_SCB0_STALL', - 255: 'SPI_PERF_EXPORT_SCB1_STALL', - 256: 'SPI_PERF_EXPORT_SCB2_STALL', - 257: 'SPI_PERF_EXPORT_SCB3_STALL', - 258: 'SPI_PERF_EXPORT_DB0_STALL', - 259: 'SPI_PERF_EXPORT_DB1_STALL', - 260: 'SPI_PERF_EXPORT_DB2_STALL', - 261: 'SPI_PERF_EXPORT_DB3_STALL', - 262: 'SPI_PERF_EXPORT_DB4_STALL', - 263: 'SPI_PERF_EXPORT_DB5_STALL', - 264: 'SPI_PERF_EXPORT_DB6_STALL', - 265: 'SPI_PERF_EXPORT_DB7_STALL', - 266: 'SPI_PERF_GS_NGG_SE_SEND_GS_ALLOC', - 267: 'SPI_PERF_GS_NGG_STALL_MSG_VAL', - 268: 'SPI_PERF_SWC_PS_WR', - 269: 'SPI_PERF_SWC_GS_WR', - 270: 'SPI_PERF_SWC_HS_WR', - 271: 'SPI_PERF_SWC_CSGN_WR', - 272: 'SPI_PERF_SWC_CSN_WR', - 273: 'SPI_PERF_VWC_PS_WR', - 274: 'SPI_PERF_VWC_ES_WR', - 275: 'SPI_PERF_VWC_GS_WR', - 276: 'SPI_PERF_VWC_LS_WR', - 277: 'SPI_PERF_VWC_HS_WR', - 278: 'SPI_PERF_VWC_CSGN_WR', - 279: 'SPI_PERF_VWC_CSN_WR', - 280: 'SPI_PERF_EXP_THROT_UPSTEP', - 281: 'SPI_PERF_EXP_THROT_DOWNSTEP', - 282: 'SPI_PERF_EXP_THROT_CAUSALITY_DETECTED', - 283: 'SPI_PERF_BUSY', -} -SPI_PERF_GS_WINDOW_VALID = 1 -SPI_PERF_GS_BUSY = 2 -SPI_PERF_GS_CRAWLER_STALL = 3 -SPI_PERF_GS_EVENT_WAVE = 4 -SPI_PERF_GS_WAVE = 5 -SPI_PERF_GS_PERS_UPD_FULL0 = 6 -SPI_PERF_GS_PERS_UPD_FULL1 = 7 -SPI_PERF_GS_FIRST_SUBGRP = 8 -SPI_PERF_GS_HS_DEALLOC = 9 -SPI_PERF_GS_NGG_SE_LATE_ALLOC_LIMIT = 10 -SPI_PERF_GS_POS0_STALL = 11 -SPI_PERF_GS_POS1_STALL = 12 -SPI_PERF_GS_INDX0_STALL = 13 -SPI_PERF_GS_INDX1_STALL = 14 -SPI_PERF_GS_PWS_STALL = 15 -SPI_PERF_HS_WINDOW_VALID = 21 -SPI_PERF_HS_BUSY = 22 -SPI_PERF_HS_CRAWLER_STALL = 23 -SPI_PERF_HS_FIRST_WAVE = 24 -SPI_PERF_HS_OFFCHIP_LDS_STALL = 25 -SPI_PERF_HS_EVENT_WAVE = 26 -SPI_PERF_HS_WAVE = 27 -SPI_PERF_HS_PERS_UPD_FULL0 = 28 -SPI_PERF_HS_PERS_UPD_FULL1 = 29 -SPI_PERF_HS_PWS_STALL = 30 -SPI_PERF_CSGN_WINDOW_VALID = 37 -SPI_PERF_CSGN_BUSY = 38 -SPI_PERF_CSGN_NUM_THREADGROUPS = 39 -SPI_PERF_CSGN_CRAWLER_STALL = 40 -SPI_PERF_CSGN_EVENT_WAVE = 41 -SPI_PERF_CSGN_WAVE = 42 -SPI_PERF_CSGN_PWS_STALL = 43 -SPI_PERF_CSN_WINDOW_VALID = 44 -SPI_PERF_CSN_BUSY = 45 -SPI_PERF_CSN_NUM_THREADGROUPS = 46 -SPI_PERF_CSN_CRAWLER_STALL = 47 -SPI_PERF_CSN_EVENT_WAVE = 48 -SPI_PERF_CSN_WAVE = 49 -SPI_PERF_PS0_WINDOW_VALID = 53 -SPI_PERF_PS1_WINDOW_VALID = 54 -SPI_PERF_PS2_WINDOW_VALID = 55 -SPI_PERF_PS3_WINDOW_VALID = 56 -SPI_PERF_PS0_BUSY = 57 -SPI_PERF_PS1_BUSY = 58 -SPI_PERF_PS2_BUSY = 59 -SPI_PERF_PS3_BUSY = 60 -SPI_PERF_PS0_ACTIVE = 61 -SPI_PERF_PS1_ACTIVE = 62 -SPI_PERF_PS2_ACTIVE = 63 -SPI_PERF_PS3_ACTIVE = 64 -SPI_PERF_PS0_DEALLOC = 65 -SPI_PERF_PS1_DEALLOC = 66 -SPI_PERF_PS2_DEALLOC = 67 -SPI_PERF_PS3_DEALLOC = 68 -SPI_PERF_PS0_EVENT_WAVE = 69 -SPI_PERF_PS1_EVENT_WAVE = 70 -SPI_PERF_PS2_EVENT_WAVE = 71 -SPI_PERF_PS3_EVENT_WAVE = 72 -SPI_PERF_PS0_WAVE = 73 -SPI_PERF_PS1_WAVE = 74 -SPI_PERF_PS2_WAVE = 75 -SPI_PERF_PS3_WAVE = 76 -SPI_PERF_PS0_OPT_WAVE = 77 -SPI_PERF_PS1_OPT_WAVE = 78 -SPI_PERF_PS2_OPT_WAVE = 79 -SPI_PERF_PS3_OPT_WAVE = 80 -SPI_PERF_PS0_PRIM_BIN0 = 81 -SPI_PERF_PS1_PRIM_BIN0 = 82 -SPI_PERF_PS2_PRIM_BIN0 = 83 -SPI_PERF_PS3_PRIM_BIN0 = 84 -SPI_PERF_PS0_PRIM_BIN1 = 85 -SPI_PERF_PS1_PRIM_BIN1 = 86 -SPI_PERF_PS2_PRIM_BIN1 = 87 -SPI_PERF_PS3_PRIM_BIN1 = 88 -SPI_PERF_PS0_CRAWLER_STALL = 89 -SPI_PERF_PS1_CRAWLER_STALL = 90 -SPI_PERF_PS2_CRAWLER_STALL = 91 -SPI_PERF_PS3_CRAWLER_STALL = 92 -SPI_PERF_PS_PERS_UPD_FULL0 = 93 -SPI_PERF_PS_PERS_UPD_FULL1 = 94 -SPI_PERF_PS0_2_WAVE_GROUPS = 95 -SPI_PERF_PS1_2_WAVE_GROUPS = 96 -SPI_PERF_PS2_2_WAVE_GROUPS = 97 -SPI_PERF_PS3_2_WAVE_GROUPS = 98 -SPI_PERF_PS0_WAVE_GROUP_CLOCK_DELAY = 99 -SPI_PERF_PS1_WAVE_GROUP_CLOCK_DELAY = 100 -SPI_PERF_PS2_WAVE_GROUP_CLOCK_DELAY = 101 -SPI_PERF_PS3_WAVE_GROUP_CLOCK_DELAY = 102 -SPI_PERF_PS0_WAVE_GROUP_TIMEOUTS = 103 -SPI_PERF_PS1_WAVE_GROUP_TIMEOUTS = 104 -SPI_PERF_PS2_WAVE_GROUP_TIMEOUTS = 105 -SPI_PERF_PS3_WAVE_GROUP_TIMEOUTS = 106 -SPI_PERF_PS_PWS_STALL = 107 -SPI_PERF_RA_PIPE_REQ_BIN2 = 141 -SPI_PERF_RA_TASK_REQ_BIN3 = 142 -SPI_PERF_RA_WR_CTL_FULL = 143 -SPI_PERF_RA_REQ_NO_ALLOC = 144 -SPI_PERF_RA_REQ_NO_ALLOC_PS = 145 -SPI_PERF_RA_REQ_NO_ALLOC_GS = 146 -SPI_PERF_RA_REQ_NO_ALLOC_HS = 147 -SPI_PERF_RA_REQ_NO_ALLOC_CSG = 148 -SPI_PERF_RA_REQ_NO_ALLOC_CSN = 149 -SPI_PERF_RA_RES_STALL_PS = 150 -SPI_PERF_RA_RES_STALL_GS = 151 -SPI_PERF_RA_RES_STALL_HS = 152 -SPI_PERF_RA_RES_STALL_CSG = 153 -SPI_PERF_RA_RES_STALL_CSN = 154 -SPI_PERF_RA_TMP_STALL_PS = 155 -SPI_PERF_RA_TMP_STALL_GS = 156 -SPI_PERF_RA_TMP_STALL_HS = 157 -SPI_PERF_RA_TMP_STALL_CSG = 158 -SPI_PERF_RA_TMP_STALL_CSN = 159 -SPI_PERF_RA_WAVE_SIMD_FULL_PS = 160 -SPI_PERF_RA_WAVE_SIMD_FULL_GS = 161 -SPI_PERF_RA_WAVE_SIMD_FULL_HS = 162 -SPI_PERF_RA_WAVE_SIMD_FULL_CSG = 163 -SPI_PERF_RA_WAVE_SIMD_FULL_CSN = 164 -SPI_PERF_RA_VGPR_SIMD_FULL_PS = 165 -SPI_PERF_RA_VGPR_SIMD_FULL_GS = 166 -SPI_PERF_RA_VGPR_SIMD_FULL_HS = 167 -SPI_PERF_RA_VGPR_SIMD_FULL_CSG = 168 -SPI_PERF_RA_VGPR_SIMD_FULL_CSN = 169 -SPI_PERF_RA_LDS_CU_FULL_PS = 170 -SPI_PERF_RA_LDS_CU_FULL_HS = 171 -SPI_PERF_RA_LDS_CU_FULL_GS = 172 -SPI_PERF_RA_LDS_CU_FULL_CSG = 173 -SPI_PERF_RA_LDS_CU_FULL_CSN = 174 -SPI_PERF_RA_BAR_CU_FULL_HS = 175 -SPI_PERF_RA_BAR_CU_FULL_CSG = 176 -SPI_PERF_RA_BAR_CU_FULL_CSN = 177 -SPI_PERF_RA_BULKY_CU_FULL_CSG = 178 -SPI_PERF_RA_BULKY_CU_FULL_CSN = 179 -SPI_PERF_RA_TGLIM_CU_FULL_CSG = 180 -SPI_PERF_RA_TGLIM_CU_FULL_CSN = 181 -SPI_PERF_RA_WVLIM_STALL_PS = 182 -SPI_PERF_RA_WVLIM_STALL_GS = 183 -SPI_PERF_RA_WVLIM_STALL_HS = 184 -SPI_PERF_RA_WVLIM_STALL_CSG = 185 -SPI_PERF_RA_WVLIM_STALL_CSN = 186 -SPI_PERF_RA_GS_LOCK = 187 -SPI_PERF_RA_HS_LOCK = 188 -SPI_PERF_RA_CSG_LOCK = 189 -SPI_PERF_RA_CSN_LOCK = 190 -SPI_PERF_RA_RSV_UPD = 191 -SPI_PERF_RA_PRE_ALLOC_STALL = 192 -SPI_PERF_RA_GFX_UNDER_TUNNEL = 193 -SPI_PERF_RA_CSC_UNDER_TUNNEL = 194 -SPI_PERF_RA_WVALLOC_STALL = 195 -SPI_PERF_RA_ACCUM0_SIMD_FULL_PS = 196 -SPI_PERF_RA_ACCUM1_SIMD_FULL_PS = 197 -SPI_PERF_RA_ACCUM2_SIMD_FULL_PS = 198 -SPI_PERF_RA_ACCUM3_SIMD_FULL_PS = 199 -SPI_PERF_RA_ACCUM0_SIMD_FULL_GS = 200 -SPI_PERF_RA_ACCUM1_SIMD_FULL_GS = 201 -SPI_PERF_RA_ACCUM2_SIMD_FULL_GS = 202 -SPI_PERF_RA_ACCUM3_SIMD_FULL_GS = 203 -SPI_PERF_RA_ACCUM0_SIMD_FULL_HS = 204 -SPI_PERF_RA_ACCUM1_SIMD_FULL_HS = 205 -SPI_PERF_RA_ACCUM2_SIMD_FULL_HS = 206 -SPI_PERF_RA_ACCUM3_SIMD_FULL_HS = 207 -SPI_PERF_RA_ACCUM0_SIMD_FULL_CSG = 208 -SPI_PERF_RA_ACCUM1_SIMD_FULL_CSG = 209 -SPI_PERF_RA_ACCUM2_SIMD_FULL_CSG = 210 -SPI_PERF_RA_ACCUM3_SIMD_FULL_CSG = 211 -SPI_PERF_RA_ACCUM0_SIMD_FULL_CSN = 212 -SPI_PERF_RA_ACCUM1_SIMD_FULL_CSN = 213 -SPI_PERF_RA_ACCUM2_SIMD_FULL_CSN = 214 -SPI_PERF_RA_ACCUM3_SIMD_FULL_CSN = 215 -SPI_PERF_EXP_ARB_COL_CNT = 216 -SPI_PERF_EXP_ARB_POS_CNT = 217 -SPI_PERF_EXP_ARB_GDS_CNT = 218 -SPI_PERF_EXP_ARB_IDX_CNT = 219 -SPI_PERF_EXP_WITH_CONFLICT = 220 -SPI_PERF_EXP_WITH_CONFLICT_CLEAR = 221 -SPI_PERF_GS_EXP_DONE = 222 -SPI_PERF_PS_EXP_DONE = 223 -SPI_PERF_PS_EXP_ARB_CONFLICT = 224 -SPI_PERF_PS_EXP_ALLOC = 225 -SPI_PERF_PS0_WAVEID_STARVED = 226 -SPI_PERF_PS1_WAVEID_STARVED = 227 -SPI_PERF_PS2_WAVEID_STARVED = 228 -SPI_PERF_PS3_WAVEID_STARVED = 229 -SPI_PERF_PS0_EXP_ALLOC_WITH_CONFLICT = 230 -SPI_PERF_PS1_EXP_ALLOC_WITH_CONFLICT = 231 -SPI_PERF_PS2_EXP_ALLOC_WITH_CONFLICT = 232 -SPI_PERF_PS3_EXP_ALLOC_WITH_CONFLICT = 233 -SPI_PERF_NUM_PS_COL_SA0SQ0_EXPORTS = 234 -SPI_PERF_NUM_PS_COL_SA0SQ1_EXPORTS = 235 -SPI_PERF_NUM_PS_COL_SA1SQ0_EXPORTS = 236 -SPI_PERF_NUM_PS_COL_SA1SQ1_EXPORTS = 237 -SPI_PERF_NUM_POS_SA0SQ0_EXPORTS = 238 -SPI_PERF_NUM_POS_SA0SQ1_EXPORTS = 239 -SPI_PERF_NUM_POS_SA1SQ0_EXPORTS = 240 -SPI_PERF_NUM_POS_SA1SQ1_EXPORTS = 241 -SPI_PERF_NUM_GDS_SA0SQ0_EXPORTS = 242 -SPI_PERF_NUM_GDS_SA0SQ1_EXPORTS = 243 -SPI_PERF_NUM_GDS_SA1SQ0_EXPORTS = 244 -SPI_PERF_NUM_GDS_SA1SQ1_EXPORTS = 245 -SPI_PERF_NUM_EXPGRANT_EXPORTS = 246 -SPI_PERF_PIX_ALLOC_PEND_CNT = 253 -SPI_PERF_EXPORT_SCB0_STALL = 254 -SPI_PERF_EXPORT_SCB1_STALL = 255 -SPI_PERF_EXPORT_SCB2_STALL = 256 -SPI_PERF_EXPORT_SCB3_STALL = 257 -SPI_PERF_EXPORT_DB0_STALL = 258 -SPI_PERF_EXPORT_DB1_STALL = 259 -SPI_PERF_EXPORT_DB2_STALL = 260 -SPI_PERF_EXPORT_DB3_STALL = 261 -SPI_PERF_EXPORT_DB4_STALL = 262 -SPI_PERF_EXPORT_DB5_STALL = 263 -SPI_PERF_EXPORT_DB6_STALL = 264 -SPI_PERF_EXPORT_DB7_STALL = 265 -SPI_PERF_GS_NGG_SE_SEND_GS_ALLOC = 266 -SPI_PERF_GS_NGG_STALL_MSG_VAL = 267 -SPI_PERF_SWC_PS_WR = 268 -SPI_PERF_SWC_GS_WR = 269 -SPI_PERF_SWC_HS_WR = 270 -SPI_PERF_SWC_CSGN_WR = 271 -SPI_PERF_SWC_CSN_WR = 272 -SPI_PERF_VWC_PS_WR = 273 -SPI_PERF_VWC_ES_WR = 274 -SPI_PERF_VWC_GS_WR = 275 -SPI_PERF_VWC_LS_WR = 276 -SPI_PERF_VWC_HS_WR = 277 -SPI_PERF_VWC_CSGN_WR = 278 -SPI_PERF_VWC_CSN_WR = 279 -SPI_PERF_EXP_THROT_UPSTEP = 280 -SPI_PERF_EXP_THROT_DOWNSTEP = 281 -SPI_PERF_EXP_THROT_CAUSALITY_DETECTED = 282 -SPI_PERF_BUSY = 283 -SPI_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_PNT_SPRITE_OVERRIDE' -SPI_PNT_SPRITE_OVERRIDE__enumvalues = { - 0: 'SPI_PNT_SPRITE_SEL_0', - 1: 'SPI_PNT_SPRITE_SEL_1', - 2: 'SPI_PNT_SPRITE_SEL_S', - 3: 'SPI_PNT_SPRITE_SEL_T', - 4: 'SPI_PNT_SPRITE_SEL_NONE', -} -SPI_PNT_SPRITE_SEL_0 = 0 -SPI_PNT_SPRITE_SEL_1 = 1 -SPI_PNT_SPRITE_SEL_S = 2 -SPI_PNT_SPRITE_SEL_T = 3 -SPI_PNT_SPRITE_SEL_NONE = 4 -SPI_PNT_SPRITE_OVERRIDE = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_PS_LDS_GROUP_SIZE' -SPI_PS_LDS_GROUP_SIZE__enumvalues = { - 0: 'SPI_PS_LDS_GROUP_1', - 1: 'SPI_PS_LDS_GROUP_2', - 2: 'SPI_PS_LDS_GROUP_4', -} -SPI_PS_LDS_GROUP_1 = 0 -SPI_PS_LDS_GROUP_2 = 1 -SPI_PS_LDS_GROUP_4 = 2 -SPI_PS_LDS_GROUP_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_SAMPLE_CNTL' -SPI_SAMPLE_CNTL__enumvalues = { - 0: 'CENTROIDS_ONLY', - 1: 'CENTERS_ONLY', - 2: 'CENTROIDS_AND_CENTERS', - 3: 'UNDEF', -} -CENTROIDS_ONLY = 0 -CENTERS_ONLY = 1 -CENTROIDS_AND_CENTERS = 2 -UNDEF = 3 -SPI_SAMPLE_CNTL = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_SHADER_EX_FORMAT' -SPI_SHADER_EX_FORMAT__enumvalues = { - 0: 'SPI_SHADER_ZERO', - 1: 'SPI_SHADER_32_R', - 2: 'SPI_SHADER_32_GR', - 3: 'SPI_SHADER_32_AR', - 4: 'SPI_SHADER_FP16_ABGR', - 5: 'SPI_SHADER_UNORM16_ABGR', - 6: 'SPI_SHADER_SNORM16_ABGR', - 7: 'SPI_SHADER_UINT16_ABGR', - 8: 'SPI_SHADER_SINT16_ABGR', - 9: 'SPI_SHADER_32_ABGR', -} -SPI_SHADER_ZERO = 0 -SPI_SHADER_32_R = 1 -SPI_SHADER_32_GR = 2 -SPI_SHADER_32_AR = 3 -SPI_SHADER_FP16_ABGR = 4 -SPI_SHADER_UNORM16_ABGR = 5 -SPI_SHADER_SNORM16_ABGR = 6 -SPI_SHADER_UINT16_ABGR = 7 -SPI_SHADER_SINT16_ABGR = 8 -SPI_SHADER_32_ABGR = 9 -SPI_SHADER_EX_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'SPI_SHADER_FORMAT' -SPI_SHADER_FORMAT__enumvalues = { - 0: 'SPI_SHADER_NONE', - 1: 'SPI_SHADER_1COMP', - 2: 'SPI_SHADER_2COMP', - 3: 'SPI_SHADER_4COMPRESS', - 4: 'SPI_SHADER_4COMP', -} -SPI_SHADER_NONE = 0 -SPI_SHADER_1COMP = 1 -SPI_SHADER_2COMP = 2 -SPI_SHADER_4COMPRESS = 3 -SPI_SHADER_4COMP = 4 -SPI_SHADER_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'SH_MEM_ADDRESS_MODE' -SH_MEM_ADDRESS_MODE__enumvalues = { - 0: 'SH_MEM_ADDRESS_MODE_64', - 1: 'SH_MEM_ADDRESS_MODE_32', -} -SH_MEM_ADDRESS_MODE_64 = 0 -SH_MEM_ADDRESS_MODE_32 = 1 -SH_MEM_ADDRESS_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SH_MEM_ALIGNMENT_MODE' -SH_MEM_ALIGNMENT_MODE__enumvalues = { - 0: 'SH_MEM_ALIGNMENT_MODE_DWORD', - 1: 'SH_MEM_ALIGNMENT_MODE_DWORD_STRICT', - 2: 'SH_MEM_ALIGNMENT_MODE_STRICT', - 3: 'SH_MEM_ALIGNMENT_MODE_UNALIGNED', -} -SH_MEM_ALIGNMENT_MODE_DWORD = 0 -SH_MEM_ALIGNMENT_MODE_DWORD_STRICT = 1 -SH_MEM_ALIGNMENT_MODE_STRICT = 2 -SH_MEM_ALIGNMENT_MODE_UNALIGNED = 3 -SH_MEM_ALIGNMENT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQG_PERF_SEL' -SQG_PERF_SEL__enumvalues = { - 0: 'SQG_PERF_SEL_NONE', - 1: 'SQG_PERF_SEL_MSG_BUS_BUSY', - 2: 'SQG_PERF_SEL_EXP_REQ0_BUS_BUSY', - 3: 'SQG_PERF_SEL_EXP_REQ1_BUS_BUSY', - 4: 'SQG_PERF_SEL_EXP_BUS0_BUSY', - 5: 'SQG_PERF_SEL_EXP_BUS1_BUSY', - 6: 'SQG_PERF_SEL_TTRACE_REQS', - 7: 'SQG_PERF_SEL_TTRACE_INFLIGHT_REQS', - 8: 'SQG_PERF_SEL_TTRACE_STALL', - 9: 'SQG_PERF_SEL_TTRACE_LOST_PACKETS', - 10: 'SQG_PERF_SEL_WAVES_INITIAL_PREFETCH', - 11: 'SQG_PERF_SEL_EVENTS', - 12: 'SQG_PERF_SEL_WAVES_RESTORED', - 13: 'SQG_PERF_SEL_WAVES_SAVED', - 14: 'SQG_PERF_SEL_ACCUM_PREV', - 15: 'SQG_PERF_SEL_CYCLES', - 16: 'SQG_PERF_SEL_BUSY_CYCLES', - 17: 'SQG_PERF_SEL_WAVE_CYCLES', - 18: 'SQG_PERF_SEL_MSG', - 19: 'SQG_PERF_SEL_MSG_INTERRUPT', - 20: 'SQG_PERF_SEL_WAVES', - 21: 'SQG_PERF_SEL_WAVES_32', - 22: 'SQG_PERF_SEL_WAVES_64', - 23: 'SQG_PERF_SEL_LEVEL_WAVES', - 24: 'SQG_PERF_SEL_ITEMS', - 25: 'SQG_PERF_SEL_WAVE32_ITEMS', - 26: 'SQG_PERF_SEL_WAVE64_ITEMS', - 27: 'SQG_PERF_SEL_PS_QUADS', - 28: 'SQG_PERF_SEL_WAVES_EQ_64', - 29: 'SQG_PERF_SEL_WAVES_EQ_32', - 30: 'SQG_PERF_SEL_WAVES_LT_64', - 31: 'SQG_PERF_SEL_WAVES_LT_48', - 32: 'SQG_PERF_SEL_WAVES_LT_32', - 33: 'SQG_PERF_SEL_WAVES_LT_16', - 34: 'SQG_PERF_SEL_DUMMY_LAST', -} -SQG_PERF_SEL_NONE = 0 -SQG_PERF_SEL_MSG_BUS_BUSY = 1 -SQG_PERF_SEL_EXP_REQ0_BUS_BUSY = 2 -SQG_PERF_SEL_EXP_REQ1_BUS_BUSY = 3 -SQG_PERF_SEL_EXP_BUS0_BUSY = 4 -SQG_PERF_SEL_EXP_BUS1_BUSY = 5 -SQG_PERF_SEL_TTRACE_REQS = 6 -SQG_PERF_SEL_TTRACE_INFLIGHT_REQS = 7 -SQG_PERF_SEL_TTRACE_STALL = 8 -SQG_PERF_SEL_TTRACE_LOST_PACKETS = 9 -SQG_PERF_SEL_WAVES_INITIAL_PREFETCH = 10 -SQG_PERF_SEL_EVENTS = 11 -SQG_PERF_SEL_WAVES_RESTORED = 12 -SQG_PERF_SEL_WAVES_SAVED = 13 -SQG_PERF_SEL_ACCUM_PREV = 14 -SQG_PERF_SEL_CYCLES = 15 -SQG_PERF_SEL_BUSY_CYCLES = 16 -SQG_PERF_SEL_WAVE_CYCLES = 17 -SQG_PERF_SEL_MSG = 18 -SQG_PERF_SEL_MSG_INTERRUPT = 19 -SQG_PERF_SEL_WAVES = 20 -SQG_PERF_SEL_WAVES_32 = 21 -SQG_PERF_SEL_WAVES_64 = 22 -SQG_PERF_SEL_LEVEL_WAVES = 23 -SQG_PERF_SEL_ITEMS = 24 -SQG_PERF_SEL_WAVE32_ITEMS = 25 -SQG_PERF_SEL_WAVE64_ITEMS = 26 -SQG_PERF_SEL_PS_QUADS = 27 -SQG_PERF_SEL_WAVES_EQ_64 = 28 -SQG_PERF_SEL_WAVES_EQ_32 = 29 -SQG_PERF_SEL_WAVES_LT_64 = 30 -SQG_PERF_SEL_WAVES_LT_48 = 31 -SQG_PERF_SEL_WAVES_LT_32 = 32 -SQG_PERF_SEL_WAVES_LT_16 = 33 -SQG_PERF_SEL_DUMMY_LAST = 34 -SQG_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_CAC_POWER_SEL' -SQ_CAC_POWER_SEL__enumvalues = { - 0: 'SQ_CAC_POWER_VALU', - 1: 'SQ_CAC_POWER_VALU0', - 2: 'SQ_CAC_POWER_VALU1', - 3: 'SQ_CAC_POWER_VALU2', - 4: 'SQ_CAC_POWER_GPR_RD', - 5: 'SQ_CAC_POWER_GPR_WR', - 6: 'SQ_CAC_POWER_LDS_BUSY', - 7: 'SQ_CAC_POWER_ALU_BUSY', - 8: 'SQ_CAC_POWER_TEX_BUSY', -} -SQ_CAC_POWER_VALU = 0 -SQ_CAC_POWER_VALU0 = 1 -SQ_CAC_POWER_VALU1 = 2 -SQ_CAC_POWER_VALU2 = 3 -SQ_CAC_POWER_GPR_RD = 4 -SQ_CAC_POWER_GPR_WR = 5 -SQ_CAC_POWER_LDS_BUSY = 6 -SQ_CAC_POWER_ALU_BUSY = 7 -SQ_CAC_POWER_TEX_BUSY = 8 -SQ_CAC_POWER_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_EDC_INFO_SOURCE' -SQ_EDC_INFO_SOURCE__enumvalues = { - 0: 'SQ_EDC_INFO_SOURCE_INVALID', - 1: 'SQ_EDC_INFO_SOURCE_INST', - 2: 'SQ_EDC_INFO_SOURCE_SGPR', - 3: 'SQ_EDC_INFO_SOURCE_VGPR', - 4: 'SQ_EDC_INFO_SOURCE_LDS', - 5: 'SQ_EDC_INFO_SOURCE_GDS', - 6: 'SQ_EDC_INFO_SOURCE_TA', -} -SQ_EDC_INFO_SOURCE_INVALID = 0 -SQ_EDC_INFO_SOURCE_INST = 1 -SQ_EDC_INFO_SOURCE_SGPR = 2 -SQ_EDC_INFO_SOURCE_VGPR = 3 -SQ_EDC_INFO_SOURCE_LDS = 4 -SQ_EDC_INFO_SOURCE_GDS = 5 -SQ_EDC_INFO_SOURCE_TA = 6 -SQ_EDC_INFO_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IBUF_ST' -SQ_IBUF_ST__enumvalues = { - 0: 'SQ_IBUF_IB_IDLE', - 1: 'SQ_IBUF_IB_INI_WAIT_GNT', - 2: 'SQ_IBUF_IB_INI_WAIT_DRET', - 3: 'SQ_IBUF_IB_LE_4DW', - 4: 'SQ_IBUF_IB_WAIT_DRET', - 5: 'SQ_IBUF_IB_EMPTY_WAIT_DRET', - 6: 'SQ_IBUF_IB_DRET', - 7: 'SQ_IBUF_IB_EMPTY_WAIT_GNT', -} -SQ_IBUF_IB_IDLE = 0 -SQ_IBUF_IB_INI_WAIT_GNT = 1 -SQ_IBUF_IB_INI_WAIT_DRET = 2 -SQ_IBUF_IB_LE_4DW = 3 -SQ_IBUF_IB_WAIT_DRET = 4 -SQ_IBUF_IB_EMPTY_WAIT_DRET = 5 -SQ_IBUF_IB_DRET = 6 -SQ_IBUF_IB_EMPTY_WAIT_GNT = 7 -SQ_IBUF_ST = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IMG_FILTER_TYPE' -SQ_IMG_FILTER_TYPE__enumvalues = { - 0: 'SQ_IMG_FILTER_MODE_BLEND', - 1: 'SQ_IMG_FILTER_MODE_MIN', - 2: 'SQ_IMG_FILTER_MODE_MAX', -} -SQ_IMG_FILTER_MODE_BLEND = 0 -SQ_IMG_FILTER_MODE_MIN = 1 -SQ_IMG_FILTER_MODE_MAX = 2 -SQ_IMG_FILTER_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IND_CMD_CMD' -SQ_IND_CMD_CMD__enumvalues = { - 0: 'SQ_IND_CMD_CMD_NULL', - 1: 'SQ_IND_CMD_CMD_SETHALT', - 2: 'SQ_IND_CMD_CMD_SAVECTX', - 3: 'SQ_IND_CMD_CMD_KILL', - 4: 'SQ_IND_CMD_CMD_TRAP_AFTER_INST', - 5: 'SQ_IND_CMD_CMD_TRAP', - 6: 'SQ_IND_CMD_CMD_SET_SPI_PRIO', - 7: 'SQ_IND_CMD_CMD_SETFATALHALT', - 8: 'SQ_IND_CMD_CMD_SINGLE_STEP', -} -SQ_IND_CMD_CMD_NULL = 0 -SQ_IND_CMD_CMD_SETHALT = 1 -SQ_IND_CMD_CMD_SAVECTX = 2 -SQ_IND_CMD_CMD_KILL = 3 -SQ_IND_CMD_CMD_TRAP_AFTER_INST = 4 -SQ_IND_CMD_CMD_TRAP = 5 -SQ_IND_CMD_CMD_SET_SPI_PRIO = 6 -SQ_IND_CMD_CMD_SETFATALHALT = 7 -SQ_IND_CMD_CMD_SINGLE_STEP = 8 -SQ_IND_CMD_CMD = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_IND_CMD_MODE' -SQ_IND_CMD_MODE__enumvalues = { - 0: 'SQ_IND_CMD_MODE_SINGLE', - 1: 'SQ_IND_CMD_MODE_BROADCAST', - 2: 'SQ_IND_CMD_MODE_BROADCAST_QUEUE', - 3: 'SQ_IND_CMD_MODE_BROADCAST_PIPE', - 4: 'SQ_IND_CMD_MODE_BROADCAST_ME', -} -SQ_IND_CMD_MODE_SINGLE = 0 -SQ_IND_CMD_MODE_BROADCAST = 1 -SQ_IND_CMD_MODE_BROADCAST_QUEUE = 2 -SQ_IND_CMD_MODE_BROADCAST_PIPE = 3 -SQ_IND_CMD_MODE_BROADCAST_ME = 4 -SQ_IND_CMD_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_INST_STR_ST' -SQ_INST_STR_ST__enumvalues = { - 0: 'SQ_INST_STR_IB_WAVE_NORML', - 1: 'SQ_INST_STR_IB_WAVE2ID_NORMAL_INST_AV', - 2: 'SQ_INST_STR_IB_WAVE_INTERNAL_INST_AV', - 3: 'SQ_INST_STR_IB_WAVE_INST_SKIP_AV', - 4: 'SQ_INST_STR_IB_WAVE_NOP_SLEEP_WAIT', - 5: 'SQ_INST_STR_IB_WAVE_PC_FROM_SGPR_MSG_WAIT', -} -SQ_INST_STR_IB_WAVE_NORML = 0 -SQ_INST_STR_IB_WAVE2ID_NORMAL_INST_AV = 1 -SQ_INST_STR_IB_WAVE_INTERNAL_INST_AV = 2 -SQ_INST_STR_IB_WAVE_INST_SKIP_AV = 3 -SQ_INST_STR_IB_WAVE_NOP_SLEEP_WAIT = 4 -SQ_INST_STR_IB_WAVE_PC_FROM_SGPR_MSG_WAIT = 5 -SQ_INST_STR_ST = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_INST_TYPE' -SQ_INST_TYPE__enumvalues = { - 0: 'SQ_INST_TYPE_VALU', - 1: 'SQ_INST_TYPE_SCALAR', - 2: 'SQ_INST_TYPE_TEX', - 3: 'SQ_INST_TYPE_LDS', - 4: 'SQ_INST_TYPE_LDS_DIRECT', - 5: 'SQ_INST_TYPE_EXP', - 6: 'SQ_INST_TYPE_MSG', - 7: 'SQ_INST_TYPE_BARRIER', - 8: 'SQ_INST_TYPE_BRANCH_NOT_TAKEN', - 9: 'SQ_INST_TYPE_BRANCH_TAKEN', - 10: 'SQ_INST_TYPE_JUMP', - 11: 'SQ_INST_TYPE_OTHER', - 12: 'SQ_INST_TYPE_NONE', -} -SQ_INST_TYPE_VALU = 0 -SQ_INST_TYPE_SCALAR = 1 -SQ_INST_TYPE_TEX = 2 -SQ_INST_TYPE_LDS = 3 -SQ_INST_TYPE_LDS_DIRECT = 4 -SQ_INST_TYPE_EXP = 5 -SQ_INST_TYPE_MSG = 6 -SQ_INST_TYPE_BARRIER = 7 -SQ_INST_TYPE_BRANCH_NOT_TAKEN = 8 -SQ_INST_TYPE_BRANCH_TAKEN = 9 -SQ_INST_TYPE_JUMP = 10 -SQ_INST_TYPE_OTHER = 11 -SQ_INST_TYPE_NONE = 12 -SQ_INST_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_LLC_CTL' -SQ_LLC_CTL__enumvalues = { - 0: 'SQ_LLC_0', - 1: 'SQ_LLC_1', - 2: 'SQ_LLC_RSVD_2', - 3: 'SQ_LLC_BYPASS', -} -SQ_LLC_0 = 0 -SQ_LLC_1 = 1 -SQ_LLC_RSVD_2 = 2 -SQ_LLC_BYPASS = 3 -SQ_LLC_CTL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_NO_INST_ISSUE' -SQ_NO_INST_ISSUE__enumvalues = { - 0: 'SQ_NO_INST_ISSUE_NO_INSTS', - 1: 'SQ_NO_INST_ISSUE_ALU_DEP', - 2: 'SQ_NO_INST_ISSUE_S_WAITCNT', - 3: 'SQ_NO_INST_ISSUE_NO_ARB_WIN', - 4: 'SQ_NO_INST_ISSUE_SLEEP_WAIT', - 5: 'SQ_NO_INST_ISSUE_BARRIER_WAIT', - 6: 'SQ_NO_INST_ISSUE_OTHER', -} -SQ_NO_INST_ISSUE_NO_INSTS = 0 -SQ_NO_INST_ISSUE_ALU_DEP = 1 -SQ_NO_INST_ISSUE_S_WAITCNT = 2 -SQ_NO_INST_ISSUE_NO_ARB_WIN = 3 -SQ_NO_INST_ISSUE_SLEEP_WAIT = 4 -SQ_NO_INST_ISSUE_BARRIER_WAIT = 5 -SQ_NO_INST_ISSUE_OTHER = 6 -SQ_NO_INST_ISSUE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_OOB_SELECT' -SQ_OOB_SELECT__enumvalues = { - 0: 'SQ_OOB_INDEX_AND_OFFSET', - 1: 'SQ_OOB_INDEX_ONLY', - 2: 'SQ_OOB_NUM_RECORDS_0', - 3: 'SQ_OOB_COMPLETE', -} -SQ_OOB_INDEX_AND_OFFSET = 0 -SQ_OOB_INDEX_ONLY = 1 -SQ_OOB_NUM_RECORDS_0 = 2 -SQ_OOB_COMPLETE = 3 -SQ_OOB_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_PERF_SEL' -SQ_PERF_SEL__enumvalues = { - 0: 'SQ_PERF_SEL_NONE', - 1: 'SQ_PERF_SEL_ACCUM_PREV', - 2: 'SQ_PERF_SEL_CYCLES', - 3: 'SQ_PERF_SEL_BUSY_CYCLES', - 4: 'SQ_PERF_SEL_WAVES', - 5: 'SQ_PERF_SEL_WAVES_32', - 6: 'SQ_PERF_SEL_WAVES_64', - 7: 'SQ_PERF_SEL_LEVEL_WAVES', - 8: 'SQ_PERF_SEL_ITEMS', - 9: 'SQ_PERF_SEL_WAVE32_ITEMS', - 10: 'SQ_PERF_SEL_WAVE64_ITEMS', - 11: 'SQ_PERF_SEL_PS_QUADS', - 12: 'SQ_PERF_SEL_EVENTS', - 13: 'SQ_PERF_SEL_WAVES_EQ_32', - 14: 'SQ_PERF_SEL_WAVES_EQ_64', - 15: 'SQ_PERF_SEL_WAVES_LT_64', - 16: 'SQ_PERF_SEL_WAVES_LT_48', - 17: 'SQ_PERF_SEL_WAVES_LT_32', - 18: 'SQ_PERF_SEL_WAVES_LT_16', - 19: 'SQ_PERF_SEL_WAVES_RESTORED', - 20: 'SQ_PERF_SEL_WAVES_SAVED', - 21: 'SQ_PERF_SEL_MSG', - 22: 'SQ_PERF_SEL_MSG_INTERRUPT', - 23: 'SQ_PERF_SEL_WAVES_INITIAL_PREFETCH', - 24: 'SQ_PERF_SEL_WAVE_CYCLES', - 25: 'SQ_PERF_SEL_WAVE_READY', - 26: 'SQ_PERF_SEL_WAIT_INST_ANY', - 27: 'SQ_PERF_SEL_WAIT_INST_VALU', - 28: 'SQ_PERF_SEL_WAIT_INST_SCA', - 29: 'SQ_PERF_SEL_WAIT_INST_LDS', - 30: 'SQ_PERF_SEL_WAIT_INST_TEX', - 31: 'SQ_PERF_SEL_WAIT_INST_FLAT', - 32: 'SQ_PERF_SEL_WAIT_INST_VMEM', - 33: 'SQ_PERF_SEL_WAIT_INST_EXP_GDS', - 34: 'SQ_PERF_SEL_WAIT_INST_BR_MSG', - 35: 'SQ_PERF_SEL_WAIT_ANY', - 36: 'SQ_PERF_SEL_WAIT_CNT_ANY', - 37: 'SQ_PERF_SEL_WAIT_CNT_VMVS', - 38: 'SQ_PERF_SEL_WAIT_CNT_LGKM', - 39: 'SQ_PERF_SEL_WAIT_CNT_EXP', - 40: 'SQ_PERF_SEL_WAIT_TTRACE', - 41: 'SQ_PERF_SEL_WAIT_IFETCH', - 42: 'SQ_PERF_SEL_WAIT_BARRIER', - 43: 'SQ_PERF_SEL_WAIT_EXP_ALLOC', - 44: 'SQ_PERF_SEL_WAIT_SLEEP', - 45: 'SQ_PERF_SEL_WAIT_DELAY_ALU', - 46: 'SQ_PERF_SEL_WAIT_DEPCTR', - 47: 'SQ_PERF_SEL_WAIT_OTHER', - 48: 'SQ_PERF_SEL_INSTS_ALL', - 49: 'SQ_PERF_SEL_INSTS_BRANCH', - 50: 'SQ_PERF_SEL_INSTS_CBRANCH_NOT_TAKEN', - 51: 'SQ_PERF_SEL_INSTS_CBRANCH_TAKEN', - 52: 'SQ_PERF_SEL_INSTS_CBRANCH_TAKEN_HIT_IS', - 53: 'SQ_PERF_SEL_INSTS_EXP_GDS', - 54: 'SQ_PERF_SEL_INSTS_GDS', - 55: 'SQ_PERF_SEL_INSTS_EXP', - 56: 'SQ_PERF_SEL_INSTS_FLAT', - 57: 'SQ_PERF_SEL_INSTS_LDS', - 58: 'SQ_PERF_SEL_INSTS_SALU', - 59: 'SQ_PERF_SEL_INSTS_SMEM', - 60: 'SQ_PERF_SEL_INSTS_SMEM_NORM', - 61: 'SQ_PERF_SEL_INSTS_SENDMSG', - 62: 'SQ_PERF_SEL_INSTS_VALU', - 63: 'SQ_PERF_SEL_INSTS_VALU_TRANS32', - 64: 'SQ_PERF_SEL_INSTS_VALU_NO_COEXEC', - 65: 'SQ_PERF_SEL_INSTS_TEX', - 66: 'SQ_PERF_SEL_INSTS_TEX_LOAD', - 67: 'SQ_PERF_SEL_INSTS_TEX_STORE', - 68: 'SQ_PERF_SEL_INSTS_DELAY_ALU', - 69: 'SQ_PERF_SEL_INSTS_INTERNAL', - 70: 'SQ_PERF_SEL_INSTS_WAVE32', - 71: 'SQ_PERF_SEL_INSTS_WAVE32_FLAT', - 72: 'SQ_PERF_SEL_INSTS_WAVE32_LDS', - 73: 'SQ_PERF_SEL_INSTS_WAVE32_VALU', - 74: 'SQ_PERF_SEL_WAVE32_INSTS_EXP_GDS', - 75: 'SQ_PERF_SEL_INSTS_WAVE32_VALU_TRANS32', - 76: 'SQ_PERF_SEL_INSTS_WAVE32_VALU_NO_COEXEC', - 77: 'SQ_PERF_SEL_INSTS_WAVE32_TEX', - 78: 'SQ_PERF_SEL_INSTS_WAVE32_TEX_LOAD', - 79: 'SQ_PERF_SEL_INSTS_WAVE32_TEX_STORE', - 80: 'SQ_PERF_SEL_ITEM_CYCLES_VALU', - 81: 'SQ_PERF_SEL_VALU_READWRITELANE_CYCLES', - 82: 'SQ_PERF_SEL_WAVE32_INSTS', - 83: 'SQ_PERF_SEL_WAVE64_INSTS', - 84: 'SQ_PERF_SEL_INSTS_VALU_EXEC_SKIPPED', - 85: 'SQ_PERF_SEL_WAVE64_HALF_SKIP', - 86: 'SQ_PERF_SEL_INST_LEVEL_EXP', - 87: 'SQ_PERF_SEL_INST_LEVEL_GDS', - 88: 'SQ_PERF_SEL_INST_LEVEL_LDS', - 89: 'SQ_PERF_SEL_INST_LEVEL_SMEM', - 90: 'SQ_PERF_SEL_INST_LEVEL_TEX_LOAD', - 91: 'SQ_PERF_SEL_INST_LEVEL_TEX_STORE', - 92: 'SQ_PERF_SEL_IFETCH_REQS', - 93: 'SQ_PERF_SEL_IFETCH_LEVEL', - 94: 'SQ_PERF_SEL_LDS_DIRECT_CMD_FIFO_FULL_STALL', - 95: 'SQ_PERF_SEL_VALU_SGATHER_STALL', - 96: 'SQ_PERF_SEL_VALU_FWD_BUFFER_FULL_STALL', - 97: 'SQ_PERF_SEL_VALU_SGPR_RD_FIFO_FULL_STALL', - 98: 'SQ_PERF_SEL_VALU_SGATHER_FULL_STALL', - 99: 'SQ_PERF_SEL_SALU_SGATHER_STALL', - 100: 'SQ_PERF_SEL_SALU_SGPR_RD_FIFO_FULL_STALL', - 101: 'SQ_PERF_SEL_SALU_GATHER_FULL_STALL', - 102: 'SQ_PERF_SEL_SMEM_DCACHE_FIFO_FULL_STALL', - 103: 'SQ_PERF_SEL_INST_CYCLES_VALU', - 104: 'SQ_PERF_SEL_INST_CYCLES_VALU_TRANS32', - 105: 'SQ_PERF_SEL_INST_CYCLES_VALU_NO_COEXEC', - 106: 'SQ_PERF_SEL_INST_CYCLES_VMEM', - 107: 'SQ_PERF_SEL_INST_CYCLES_VMEM_LOAD', - 108: 'SQ_PERF_SEL_INST_CYCLES_VMEM_STORE', - 109: 'SQ_PERF_SEL_INST_CYCLES_LDS', - 110: 'SQ_PERF_SEL_INST_CYCLES_TEX', - 111: 'SQ_PERF_SEL_INST_CYCLES_FLAT', - 112: 'SQ_PERF_SEL_INST_CYCLES_EXP_GDS', - 113: 'SQ_PERF_SEL_INST_CYCLES_EXP', - 114: 'SQ_PERF_SEL_INST_CYCLES_GDS', - 115: 'SQ_PERF_SEL_VALU_STARVE', - 116: 'SQ_PERF_SEL_VMEM_ARB_FIFO_FULL', - 117: 'SQ_PERF_SEL_MSG_FIFO_FULL_STALL', - 118: 'SQ_PERF_SEL_EXP_REQ_FIFO_FULL', - 119: 'SQ_PERF_SEL_VMEM_BUS_ACTIVE', - 120: 'SQ_PERF_SEL_VMEM_BUS_STALL', - 121: 'SQ_PERF_SEL_VMEM_BUS_STALL_TA_ADDR_FIFO_FULL', - 122: 'SQ_PERF_SEL_VMEM_BUS_STALL_TA_CMD_FIFO_FULL', - 123: 'SQ_PERF_SEL_VMEM_BUS_STALL_LDS_ADDR_FIFO_FULL', - 124: 'SQ_PERF_SEL_VMEM_BUS_STALL_LDS_CMD_FIFO_FULL', - 125: 'SQ_PERF_SEL_VMEM_STARVE_TA_ADDR_EMPTY', - 126: 'SQ_PERF_SEL_VMEM_STARVE_LDS_ADDR_EMPTY', - 127: 'SQ_PERF_SEL_SALU_PIPE_STALL', - 128: 'SQ_PERF_SEL_SMEM_DCACHE_RETURN_CYCLES', - 129: 'SQ_PERF_SEL_MSG_BUS_BUSY', - 130: 'SQ_PERF_SEL_EXP_REQ_BUS_STALL', - 131: 'SQ_PERF_SEL_EXP_REQ0_BUS_BUSY', - 132: 'SQ_PERF_SEL_EXP_REQ1_BUS_BUSY', - 133: 'SQ_PERF_SEL_EXP_BUS0_BUSY', - 134: 'SQ_PERF_SEL_EXP_BUS1_BUSY', - 135: 'SQ_PERF_SEL_INST_CACHE_REQ_STALL', - 136: 'SQ_PERF_SEL_USER0', - 137: 'SQ_PERF_SEL_USER1', - 138: 'SQ_PERF_SEL_USER2', - 139: 'SQ_PERF_SEL_USER3', - 140: 'SQ_PERF_SEL_USER4', - 141: 'SQ_PERF_SEL_USER5', - 142: 'SQ_PERF_SEL_USER6', - 143: 'SQ_PERF_SEL_USER7', - 144: 'SQ_PERF_SEL_USER8', - 145: 'SQ_PERF_SEL_USER9', - 146: 'SQ_PERF_SEL_USER10', - 147: 'SQ_PERF_SEL_USER11', - 148: 'SQ_PERF_SEL_USER12', - 149: 'SQ_PERF_SEL_USER13', - 150: 'SQ_PERF_SEL_USER14', - 151: 'SQ_PERF_SEL_USER15', - 152: 'SQ_PERF_SEL_USER_LEVEL0', - 153: 'SQ_PERF_SEL_USER_LEVEL1', - 154: 'SQ_PERF_SEL_USER_LEVEL2', - 155: 'SQ_PERF_SEL_USER_LEVEL3', - 156: 'SQ_PERF_SEL_USER_LEVEL4', - 157: 'SQ_PERF_SEL_USER_LEVEL5', - 158: 'SQ_PERF_SEL_USER_LEVEL6', - 159: 'SQ_PERF_SEL_USER_LEVEL7', - 160: 'SQ_PERF_SEL_USER_LEVEL8', - 161: 'SQ_PERF_SEL_USER_LEVEL9', - 162: 'SQ_PERF_SEL_USER_LEVEL10', - 163: 'SQ_PERF_SEL_USER_LEVEL11', - 164: 'SQ_PERF_SEL_USER_LEVEL12', - 165: 'SQ_PERF_SEL_USER_LEVEL13', - 166: 'SQ_PERF_SEL_USER_LEVEL14', - 167: 'SQ_PERF_SEL_USER_LEVEL15', - 168: 'SQ_PERF_SEL_VALU_RETURN_SDST', - 169: 'SQ_PERF_SEL_VMEM_VGPR_READ_STALLED_BY_EXPORT', - 170: 'SQ_PERF_SEL_INSTS_VALU_TRANS', - 171: 'SQ_PERF_SEL_INSTS_LDS_DIRECT_LOAD', - 172: 'SQ_PERF_SEL_INSTS_LDS_PARAM_LOAD', - 173: 'SQ_PERF_SEL_INSTS_WAVE32_LDS_PARAM_LOAD', - 174: 'SQ_PERF_SEL_INSTS_VALU_ONE_CYCLE_WAVE64', - 175: 'SQ_PERF_SEL_INSTS_VALU_VINTERP', - 176: 'SQ_PERF_SEL_INSTS_VALU_WAVE32_VINTERP', - 177: 'SQ_PERF_SEL_OVERFLOW_PREV', - 178: 'SQ_PERF_SEL_INSTS_DUAL_VALU_WAVE32', - 179: 'SQ_PERF_SEL_INSTS_VALU_1_PASS', - 180: 'SQ_PERF_SEL_INSTS_VALU_2_PASS', - 181: 'SQ_PERF_SEL_INSTS_VALU_4_PASS', - 182: 'SQ_PERF_SEL_INSTS_VALU_DP', - 183: 'SQ_PERF_SEL_SP_CONST_CYCLES', - 184: 'SQ_PERF_SEL_SP_CONST_STALL_CYCLES', - 185: 'SQ_PERF_SEL_ITEMS_VALU', - 186: 'SQ_PERF_SEL_ITEMS_MAX_VALU', - 187: 'SQ_PERF_SEL_ITEM_CYCLES_VMEM', - 188: 'SQ_PERF_SEL_DUMMY_END', - 255: 'SQ_PERF_SEL_DUMMY_LAST', - 256: 'SQC_PERF_SEL_LDS_BANK_CONFLICT', - 257: 'SQC_PERF_SEL_LDS_ADDR_CONFLICT', - 258: 'SQC_PERF_SEL_LDS_UNALIGNED_STALL', - 259: 'SQC_PERF_SEL_LDS_MEM_VIOLATIONS', - 260: 'SQC_PERF_SEL_LDS_ATOMIC_RETURN', - 261: 'SQC_PERF_SEL_LDS_IDX_ACTIVE', - 262: 'SQC_PERF_SEL_LDS_ADDR_STALL', - 263: 'SQC_PERF_SEL_LDS_ADDR_ACTIVE', - 264: 'SQC_PERF_SEL_LDS_PC_LDS_WRITE_STALL_TD', - 265: 'SQC_PERF_SEL_LDS_SPI_VGPR_WRITE_STALL_TD', - 266: 'SQC_PERF_SEL_LDS_LDS_VGPR_WRITE_STALL', - 267: 'SQC_PERF_SEL_LDS_FP_ADD_CYCLES', - 268: 'SQC_PERF_SEL_ICACHE_BUSY_CYCLES', - 269: 'SQC_PERF_SEL_ICACHE_REQ', - 270: 'SQC_PERF_SEL_ICACHE_HITS', - 271: 'SQC_PERF_SEL_ICACHE_MISSES', - 272: 'SQC_PERF_SEL_ICACHE_MISSES_DUPLICATE', - 273: 'SQC_PERF_SEL_ICACHE_INVAL_INST', - 274: 'SQC_PERF_SEL_ICACHE_INVAL_ASYNC', - 275: 'SQC_PERF_SEL_ICACHE_INFLIGHT_LEVEL', - 276: 'SQC_PERF_SEL_DCACHE_INFLIGHT_LEVEL', - 277: 'SQC_PERF_SEL_TC_INFLIGHT_LEVEL', - 278: 'SQC_PERF_SEL_ICACHE_TC_INFLIGHT_LEVEL', - 279: 'SQC_PERF_SEL_DCACHE_TC_INFLIGHT_LEVEL', - 280: 'SQC_PERF_SEL_ICACHE_INPUT_VALID_READYB', - 281: 'SQC_PERF_SEL_DCACHE_INPUT_VALID_READYB', - 282: 'SQC_PERF_SEL_TC_REQ', - 283: 'SQC_PERF_SEL_TC_INST_REQ', - 284: 'SQC_PERF_SEL_TC_DATA_READ_REQ', - 285: 'SQC_PERF_SEL_TC_STALL', - 286: 'SQC_PERF_SEL_TC_STARVE', - 287: 'SQC_PERF_SEL_ICACHE_INPUT_STALL_ARB_NO_GRANT', - 288: 'SQC_PERF_SEL_ICACHE_INPUT_STALL_BANK_READYB', - 289: 'SQC_PERF_SEL_ICACHE_CACHE_STALLED', - 290: 'SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_MAX', - 291: 'SQC_PERF_SEL_ICACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 292: 'SQC_PERF_SEL_DCACHE_BUSY_CYCLES', - 293: 'SQC_PERF_SEL_DCACHE_REQ', - 294: 'SQC_PERF_SEL_DCACHE_HITS', - 295: 'SQC_PERF_SEL_DCACHE_MISSES', - 296: 'SQC_PERF_SEL_DCACHE_MISSES_DUPLICATE', - 297: 'SQC_PERF_SEL_DCACHE_INVAL_INST', - 298: 'SQC_PERF_SEL_DCACHE_INVAL_ASYNC', - 299: 'SQC_PERF_SEL_DCACHE_HIT_LRU_READ', - 300: 'SQC_PERF_SEL_DCACHE_INPUT_STALL_ARB_NO_GRANT', - 301: 'SQC_PERF_SEL_DCACHE_INPUT_STALL_BANK_READYB', - 302: 'SQC_PERF_SEL_DCACHE_CACHE_STALLED', - 303: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_INFLIGHT_MAX', - 304: 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT', - 305: 'SQC_PERF_SEL_DCACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 306: 'SQC_PERF_SEL_DCACHE_REQ_READ_1', - 307: 'SQC_PERF_SEL_DCACHE_REQ_READ_2', - 308: 'SQC_PERF_SEL_DCACHE_REQ_READ_4', - 309: 'SQC_PERF_SEL_DCACHE_REQ_READ_8', - 310: 'SQC_PERF_SEL_DCACHE_REQ_READ_16', - 311: 'SQC_PERF_SEL_DCACHE_REQ_ATC_PROBE', - 312: 'SQC_PERF_SEL_SQ_DCACHE_REQS', - 313: 'SQC_PERF_SEL_DCACHE_FLAT_REQ', - 314: 'SQC_PERF_SEL_TD_VGPR_BUSY', - 315: 'SQC_PERF_SEL_LDS_VGPR_BUSY', - 316: 'SQC_PERF_SEL_LDS_TD_VGPR_CONF_STALL', - 317: 'SQC_PERF_SEL_ICACHE_GCR', - 318: 'SQC_PERF_SEL_ICACHE_GCR_HITS', - 319: 'SQC_PERF_SEL_DCACHE_GCR', - 320: 'SQC_PERF_SEL_DCACHE_GCR_HITS', - 321: 'SQC_PERF_SEL_ICACHE_GCR_INVALIDATE', - 322: 'SQC_PERF_SEL_DCACHE_GCR_INVALIDATE', - 323: 'SQC_PERF_SEL_DCACHE_SPI_RETURN_STALL', - 324: 'SQC_PERF_SEL_DUMMY_LAST', - 448: 'SP_PERF_SEL_DST_BUF_ALLOC_STALL', - 449: 'SP_PERF_SEL_DST_BUF_WB_CONF_W_TD_LDS', - 450: 'SP_PERF_SEL_DST_BUF_WB_CONF_W_SPI', - 451: 'SP_PERF_SEL_DST_BUF_EVEN_DIRTY', - 452: 'SP_PERF_SEL_DST_BUF_ODD_DIRTY', - 453: 'SP_PERF_SEL_SRC_CACHE_HIT_B0', - 454: 'SP_PERF_SEL_SRC_CACHE_HIT_B1', - 455: 'SP_PERF_SEL_SRC_CACHE_HIT_B2', - 456: 'SP_PERF_SEL_SRC_CACHE_HIT_B3', - 457: 'SP_PERF_SEL_SRC_CACHE_PROBE_B0', - 458: 'SP_PERF_SEL_SRC_CACHE_PROBE_B1', - 459: 'SP_PERF_SEL_SRC_CACHE_PROBE_B2', - 460: 'SP_PERF_SEL_SRC_CACHE_PROBE_B3', - 461: 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B0', - 462: 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B1', - 463: 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B2', - 464: 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B3', - 465: 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B0', - 466: 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B1', - 467: 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B2', - 468: 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B3', - 469: 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B0', - 470: 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B1', - 471: 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B2', - 472: 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B3', - 473: 'SP_PERF_SEL_VALU_PENDING_QUEUE_STALL', - 474: 'SP_PERF_SEL_VALU_OPERAND', - 475: 'SP_PERF_SEL_VALU_VGPR_OPERAND', - 476: 'SP_PERF_SEL_VALU_OPERAND_FROM_DST_BUF', - 477: 'SP_PERF_SEL_VALU_EXEC_MASK_CHANGE', - 478: 'SP_PERF_SEL_VALU_COEXEC_WITH_TRANS', - 479: 'SP_PERF_SEL_VALU_SGPR_FWD_BUF_FULL', - 480: 'SP_PERF_SEL_VALU_STALL', - 481: 'SP_PERF_SEL_VALU_STALL_VGPR_NOT_READY', - 482: 'SP_PERF_SEL_VALU_STALL_SGPR_NOT_READY', - 483: 'SP_PERF_SEL_VALU_STALL_VDST_FWD', - 484: 'SP_PERF_SEL_VALU_STALL_SDST_FWD', - 485: 'SP_PERF_SEL_VALU_STALL_DST_STALL', - 486: 'SP_PERF_SEL_VALU_FAST_OP_STALL_VGPR_NOT_READY', - 487: 'SP_PERF_SEL_VGPR_VMEM_RD', - 488: 'SP_PERF_SEL_VGPR_EXP_RD', - 489: 'SP_PERF_SEL_VGPR_SPI_WR', - 490: 'SP_PERF_SEL_VGPR_TDLDS_DATA_WR', - 491: 'SP_PERF_SEL_VGPR_WR', - 492: 'SP_PERF_SEL_VGPR_RD', - 493: 'SP_PERF_SEL_DUMMY_LAST', - 511: 'SQ_PERF_SEL_NONE2', -} -SQ_PERF_SEL_NONE = 0 -SQ_PERF_SEL_ACCUM_PREV = 1 -SQ_PERF_SEL_CYCLES = 2 -SQ_PERF_SEL_BUSY_CYCLES = 3 -SQ_PERF_SEL_WAVES = 4 -SQ_PERF_SEL_WAVES_32 = 5 -SQ_PERF_SEL_WAVES_64 = 6 -SQ_PERF_SEL_LEVEL_WAVES = 7 -SQ_PERF_SEL_ITEMS = 8 -SQ_PERF_SEL_WAVE32_ITEMS = 9 -SQ_PERF_SEL_WAVE64_ITEMS = 10 -SQ_PERF_SEL_PS_QUADS = 11 -SQ_PERF_SEL_EVENTS = 12 -SQ_PERF_SEL_WAVES_EQ_32 = 13 -SQ_PERF_SEL_WAVES_EQ_64 = 14 -SQ_PERF_SEL_WAVES_LT_64 = 15 -SQ_PERF_SEL_WAVES_LT_48 = 16 -SQ_PERF_SEL_WAVES_LT_32 = 17 -SQ_PERF_SEL_WAVES_LT_16 = 18 -SQ_PERF_SEL_WAVES_RESTORED = 19 -SQ_PERF_SEL_WAVES_SAVED = 20 -SQ_PERF_SEL_MSG = 21 -SQ_PERF_SEL_MSG_INTERRUPT = 22 -SQ_PERF_SEL_WAVES_INITIAL_PREFETCH = 23 -SQ_PERF_SEL_WAVE_CYCLES = 24 -SQ_PERF_SEL_WAVE_READY = 25 -SQ_PERF_SEL_WAIT_INST_ANY = 26 -SQ_PERF_SEL_WAIT_INST_VALU = 27 -SQ_PERF_SEL_WAIT_INST_SCA = 28 -SQ_PERF_SEL_WAIT_INST_LDS = 29 -SQ_PERF_SEL_WAIT_INST_TEX = 30 -SQ_PERF_SEL_WAIT_INST_FLAT = 31 -SQ_PERF_SEL_WAIT_INST_VMEM = 32 -SQ_PERF_SEL_WAIT_INST_EXP_GDS = 33 -SQ_PERF_SEL_WAIT_INST_BR_MSG = 34 -SQ_PERF_SEL_WAIT_ANY = 35 -SQ_PERF_SEL_WAIT_CNT_ANY = 36 -SQ_PERF_SEL_WAIT_CNT_VMVS = 37 -SQ_PERF_SEL_WAIT_CNT_LGKM = 38 -SQ_PERF_SEL_WAIT_CNT_EXP = 39 -SQ_PERF_SEL_WAIT_TTRACE = 40 -SQ_PERF_SEL_WAIT_IFETCH = 41 -SQ_PERF_SEL_WAIT_BARRIER = 42 -SQ_PERF_SEL_WAIT_EXP_ALLOC = 43 -SQ_PERF_SEL_WAIT_SLEEP = 44 -SQ_PERF_SEL_WAIT_DELAY_ALU = 45 -SQ_PERF_SEL_WAIT_DEPCTR = 46 -SQ_PERF_SEL_WAIT_OTHER = 47 -SQ_PERF_SEL_INSTS_ALL = 48 -SQ_PERF_SEL_INSTS_BRANCH = 49 -SQ_PERF_SEL_INSTS_CBRANCH_NOT_TAKEN = 50 -SQ_PERF_SEL_INSTS_CBRANCH_TAKEN = 51 -SQ_PERF_SEL_INSTS_CBRANCH_TAKEN_HIT_IS = 52 -SQ_PERF_SEL_INSTS_EXP_GDS = 53 -SQ_PERF_SEL_INSTS_GDS = 54 -SQ_PERF_SEL_INSTS_EXP = 55 -SQ_PERF_SEL_INSTS_FLAT = 56 -SQ_PERF_SEL_INSTS_LDS = 57 -SQ_PERF_SEL_INSTS_SALU = 58 -SQ_PERF_SEL_INSTS_SMEM = 59 -SQ_PERF_SEL_INSTS_SMEM_NORM = 60 -SQ_PERF_SEL_INSTS_SENDMSG = 61 -SQ_PERF_SEL_INSTS_VALU = 62 -SQ_PERF_SEL_INSTS_VALU_TRANS32 = 63 -SQ_PERF_SEL_INSTS_VALU_NO_COEXEC = 64 -SQ_PERF_SEL_INSTS_TEX = 65 -SQ_PERF_SEL_INSTS_TEX_LOAD = 66 -SQ_PERF_SEL_INSTS_TEX_STORE = 67 -SQ_PERF_SEL_INSTS_DELAY_ALU = 68 -SQ_PERF_SEL_INSTS_INTERNAL = 69 -SQ_PERF_SEL_INSTS_WAVE32 = 70 -SQ_PERF_SEL_INSTS_WAVE32_FLAT = 71 -SQ_PERF_SEL_INSTS_WAVE32_LDS = 72 -SQ_PERF_SEL_INSTS_WAVE32_VALU = 73 -SQ_PERF_SEL_WAVE32_INSTS_EXP_GDS = 74 -SQ_PERF_SEL_INSTS_WAVE32_VALU_TRANS32 = 75 -SQ_PERF_SEL_INSTS_WAVE32_VALU_NO_COEXEC = 76 -SQ_PERF_SEL_INSTS_WAVE32_TEX = 77 -SQ_PERF_SEL_INSTS_WAVE32_TEX_LOAD = 78 -SQ_PERF_SEL_INSTS_WAVE32_TEX_STORE = 79 -SQ_PERF_SEL_ITEM_CYCLES_VALU = 80 -SQ_PERF_SEL_VALU_READWRITELANE_CYCLES = 81 -SQ_PERF_SEL_WAVE32_INSTS = 82 -SQ_PERF_SEL_WAVE64_INSTS = 83 -SQ_PERF_SEL_INSTS_VALU_EXEC_SKIPPED = 84 -SQ_PERF_SEL_WAVE64_HALF_SKIP = 85 -SQ_PERF_SEL_INST_LEVEL_EXP = 86 -SQ_PERF_SEL_INST_LEVEL_GDS = 87 -SQ_PERF_SEL_INST_LEVEL_LDS = 88 -SQ_PERF_SEL_INST_LEVEL_SMEM = 89 -SQ_PERF_SEL_INST_LEVEL_TEX_LOAD = 90 -SQ_PERF_SEL_INST_LEVEL_TEX_STORE = 91 -SQ_PERF_SEL_IFETCH_REQS = 92 -SQ_PERF_SEL_IFETCH_LEVEL = 93 -SQ_PERF_SEL_LDS_DIRECT_CMD_FIFO_FULL_STALL = 94 -SQ_PERF_SEL_VALU_SGATHER_STALL = 95 -SQ_PERF_SEL_VALU_FWD_BUFFER_FULL_STALL = 96 -SQ_PERF_SEL_VALU_SGPR_RD_FIFO_FULL_STALL = 97 -SQ_PERF_SEL_VALU_SGATHER_FULL_STALL = 98 -SQ_PERF_SEL_SALU_SGATHER_STALL = 99 -SQ_PERF_SEL_SALU_SGPR_RD_FIFO_FULL_STALL = 100 -SQ_PERF_SEL_SALU_GATHER_FULL_STALL = 101 -SQ_PERF_SEL_SMEM_DCACHE_FIFO_FULL_STALL = 102 -SQ_PERF_SEL_INST_CYCLES_VALU = 103 -SQ_PERF_SEL_INST_CYCLES_VALU_TRANS32 = 104 -SQ_PERF_SEL_INST_CYCLES_VALU_NO_COEXEC = 105 -SQ_PERF_SEL_INST_CYCLES_VMEM = 106 -SQ_PERF_SEL_INST_CYCLES_VMEM_LOAD = 107 -SQ_PERF_SEL_INST_CYCLES_VMEM_STORE = 108 -SQ_PERF_SEL_INST_CYCLES_LDS = 109 -SQ_PERF_SEL_INST_CYCLES_TEX = 110 -SQ_PERF_SEL_INST_CYCLES_FLAT = 111 -SQ_PERF_SEL_INST_CYCLES_EXP_GDS = 112 -SQ_PERF_SEL_INST_CYCLES_EXP = 113 -SQ_PERF_SEL_INST_CYCLES_GDS = 114 -SQ_PERF_SEL_VALU_STARVE = 115 -SQ_PERF_SEL_VMEM_ARB_FIFO_FULL = 116 -SQ_PERF_SEL_MSG_FIFO_FULL_STALL = 117 -SQ_PERF_SEL_EXP_REQ_FIFO_FULL = 118 -SQ_PERF_SEL_VMEM_BUS_ACTIVE = 119 -SQ_PERF_SEL_VMEM_BUS_STALL = 120 -SQ_PERF_SEL_VMEM_BUS_STALL_TA_ADDR_FIFO_FULL = 121 -SQ_PERF_SEL_VMEM_BUS_STALL_TA_CMD_FIFO_FULL = 122 -SQ_PERF_SEL_VMEM_BUS_STALL_LDS_ADDR_FIFO_FULL = 123 -SQ_PERF_SEL_VMEM_BUS_STALL_LDS_CMD_FIFO_FULL = 124 -SQ_PERF_SEL_VMEM_STARVE_TA_ADDR_EMPTY = 125 -SQ_PERF_SEL_VMEM_STARVE_LDS_ADDR_EMPTY = 126 -SQ_PERF_SEL_SALU_PIPE_STALL = 127 -SQ_PERF_SEL_SMEM_DCACHE_RETURN_CYCLES = 128 -SQ_PERF_SEL_MSG_BUS_BUSY = 129 -SQ_PERF_SEL_EXP_REQ_BUS_STALL = 130 -SQ_PERF_SEL_EXP_REQ0_BUS_BUSY = 131 -SQ_PERF_SEL_EXP_REQ1_BUS_BUSY = 132 -SQ_PERF_SEL_EXP_BUS0_BUSY = 133 -SQ_PERF_SEL_EXP_BUS1_BUSY = 134 -SQ_PERF_SEL_INST_CACHE_REQ_STALL = 135 -SQ_PERF_SEL_USER0 = 136 -SQ_PERF_SEL_USER1 = 137 -SQ_PERF_SEL_USER2 = 138 -SQ_PERF_SEL_USER3 = 139 -SQ_PERF_SEL_USER4 = 140 -SQ_PERF_SEL_USER5 = 141 -SQ_PERF_SEL_USER6 = 142 -SQ_PERF_SEL_USER7 = 143 -SQ_PERF_SEL_USER8 = 144 -SQ_PERF_SEL_USER9 = 145 -SQ_PERF_SEL_USER10 = 146 -SQ_PERF_SEL_USER11 = 147 -SQ_PERF_SEL_USER12 = 148 -SQ_PERF_SEL_USER13 = 149 -SQ_PERF_SEL_USER14 = 150 -SQ_PERF_SEL_USER15 = 151 -SQ_PERF_SEL_USER_LEVEL0 = 152 -SQ_PERF_SEL_USER_LEVEL1 = 153 -SQ_PERF_SEL_USER_LEVEL2 = 154 -SQ_PERF_SEL_USER_LEVEL3 = 155 -SQ_PERF_SEL_USER_LEVEL4 = 156 -SQ_PERF_SEL_USER_LEVEL5 = 157 -SQ_PERF_SEL_USER_LEVEL6 = 158 -SQ_PERF_SEL_USER_LEVEL7 = 159 -SQ_PERF_SEL_USER_LEVEL8 = 160 -SQ_PERF_SEL_USER_LEVEL9 = 161 -SQ_PERF_SEL_USER_LEVEL10 = 162 -SQ_PERF_SEL_USER_LEVEL11 = 163 -SQ_PERF_SEL_USER_LEVEL12 = 164 -SQ_PERF_SEL_USER_LEVEL13 = 165 -SQ_PERF_SEL_USER_LEVEL14 = 166 -SQ_PERF_SEL_USER_LEVEL15 = 167 -SQ_PERF_SEL_VALU_RETURN_SDST = 168 -SQ_PERF_SEL_VMEM_VGPR_READ_STALLED_BY_EXPORT = 169 -SQ_PERF_SEL_INSTS_VALU_TRANS = 170 -SQ_PERF_SEL_INSTS_LDS_DIRECT_LOAD = 171 -SQ_PERF_SEL_INSTS_LDS_PARAM_LOAD = 172 -SQ_PERF_SEL_INSTS_WAVE32_LDS_PARAM_LOAD = 173 -SQ_PERF_SEL_INSTS_VALU_ONE_CYCLE_WAVE64 = 174 -SQ_PERF_SEL_INSTS_VALU_VINTERP = 175 -SQ_PERF_SEL_INSTS_VALU_WAVE32_VINTERP = 176 -SQ_PERF_SEL_OVERFLOW_PREV = 177 -SQ_PERF_SEL_INSTS_DUAL_VALU_WAVE32 = 178 -SQ_PERF_SEL_INSTS_VALU_1_PASS = 179 -SQ_PERF_SEL_INSTS_VALU_2_PASS = 180 -SQ_PERF_SEL_INSTS_VALU_4_PASS = 181 -SQ_PERF_SEL_INSTS_VALU_DP = 182 -SQ_PERF_SEL_SP_CONST_CYCLES = 183 -SQ_PERF_SEL_SP_CONST_STALL_CYCLES = 184 -SQ_PERF_SEL_ITEMS_VALU = 185 -SQ_PERF_SEL_ITEMS_MAX_VALU = 186 -SQ_PERF_SEL_ITEM_CYCLES_VMEM = 187 -SQ_PERF_SEL_DUMMY_END = 188 -SQ_PERF_SEL_DUMMY_LAST = 255 -SQC_PERF_SEL_LDS_BANK_CONFLICT = 256 -SQC_PERF_SEL_LDS_ADDR_CONFLICT = 257 -SQC_PERF_SEL_LDS_UNALIGNED_STALL = 258 -SQC_PERF_SEL_LDS_MEM_VIOLATIONS = 259 -SQC_PERF_SEL_LDS_ATOMIC_RETURN = 260 -SQC_PERF_SEL_LDS_IDX_ACTIVE = 261 -SQC_PERF_SEL_LDS_ADDR_STALL = 262 -SQC_PERF_SEL_LDS_ADDR_ACTIVE = 263 -SQC_PERF_SEL_LDS_PC_LDS_WRITE_STALL_TD = 264 -SQC_PERF_SEL_LDS_SPI_VGPR_WRITE_STALL_TD = 265 -SQC_PERF_SEL_LDS_LDS_VGPR_WRITE_STALL = 266 -SQC_PERF_SEL_LDS_FP_ADD_CYCLES = 267 -SQC_PERF_SEL_ICACHE_BUSY_CYCLES = 268 -SQC_PERF_SEL_ICACHE_REQ = 269 -SQC_PERF_SEL_ICACHE_HITS = 270 -SQC_PERF_SEL_ICACHE_MISSES = 271 -SQC_PERF_SEL_ICACHE_MISSES_DUPLICATE = 272 -SQC_PERF_SEL_ICACHE_INVAL_INST = 273 -SQC_PERF_SEL_ICACHE_INVAL_ASYNC = 274 -SQC_PERF_SEL_ICACHE_INFLIGHT_LEVEL = 275 -SQC_PERF_SEL_DCACHE_INFLIGHT_LEVEL = 276 -SQC_PERF_SEL_TC_INFLIGHT_LEVEL = 277 -SQC_PERF_SEL_ICACHE_TC_INFLIGHT_LEVEL = 278 -SQC_PERF_SEL_DCACHE_TC_INFLIGHT_LEVEL = 279 -SQC_PERF_SEL_ICACHE_INPUT_VALID_READYB = 280 -SQC_PERF_SEL_DCACHE_INPUT_VALID_READYB = 281 -SQC_PERF_SEL_TC_REQ = 282 -SQC_PERF_SEL_TC_INST_REQ = 283 -SQC_PERF_SEL_TC_DATA_READ_REQ = 284 -SQC_PERF_SEL_TC_STALL = 285 -SQC_PERF_SEL_TC_STARVE = 286 -SQC_PERF_SEL_ICACHE_INPUT_STALL_ARB_NO_GRANT = 287 -SQC_PERF_SEL_ICACHE_INPUT_STALL_BANK_READYB = 288 -SQC_PERF_SEL_ICACHE_CACHE_STALLED = 289 -SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_MAX = 290 -SQC_PERF_SEL_ICACHE_STALL_OUTXBAR_ARB_NO_GRANT = 291 -SQC_PERF_SEL_DCACHE_BUSY_CYCLES = 292 -SQC_PERF_SEL_DCACHE_REQ = 293 -SQC_PERF_SEL_DCACHE_HITS = 294 -SQC_PERF_SEL_DCACHE_MISSES = 295 -SQC_PERF_SEL_DCACHE_MISSES_DUPLICATE = 296 -SQC_PERF_SEL_DCACHE_INVAL_INST = 297 -SQC_PERF_SEL_DCACHE_INVAL_ASYNC = 298 -SQC_PERF_SEL_DCACHE_HIT_LRU_READ = 299 -SQC_PERF_SEL_DCACHE_INPUT_STALL_ARB_NO_GRANT = 300 -SQC_PERF_SEL_DCACHE_INPUT_STALL_BANK_READYB = 301 -SQC_PERF_SEL_DCACHE_CACHE_STALLED = 302 -SQC_PERF_SEL_DCACHE_CACHE_STALL_INFLIGHT_MAX = 303 -SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT = 304 -SQC_PERF_SEL_DCACHE_STALL_OUTXBAR_ARB_NO_GRANT = 305 -SQC_PERF_SEL_DCACHE_REQ_READ_1 = 306 -SQC_PERF_SEL_DCACHE_REQ_READ_2 = 307 -SQC_PERF_SEL_DCACHE_REQ_READ_4 = 308 -SQC_PERF_SEL_DCACHE_REQ_READ_8 = 309 -SQC_PERF_SEL_DCACHE_REQ_READ_16 = 310 -SQC_PERF_SEL_DCACHE_REQ_ATC_PROBE = 311 -SQC_PERF_SEL_SQ_DCACHE_REQS = 312 -SQC_PERF_SEL_DCACHE_FLAT_REQ = 313 -SQC_PERF_SEL_TD_VGPR_BUSY = 314 -SQC_PERF_SEL_LDS_VGPR_BUSY = 315 -SQC_PERF_SEL_LDS_TD_VGPR_CONF_STALL = 316 -SQC_PERF_SEL_ICACHE_GCR = 317 -SQC_PERF_SEL_ICACHE_GCR_HITS = 318 -SQC_PERF_SEL_DCACHE_GCR = 319 -SQC_PERF_SEL_DCACHE_GCR_HITS = 320 -SQC_PERF_SEL_ICACHE_GCR_INVALIDATE = 321 -SQC_PERF_SEL_DCACHE_GCR_INVALIDATE = 322 -SQC_PERF_SEL_DCACHE_SPI_RETURN_STALL = 323 -SQC_PERF_SEL_DUMMY_LAST = 324 -SP_PERF_SEL_DST_BUF_ALLOC_STALL = 448 -SP_PERF_SEL_DST_BUF_WB_CONF_W_TD_LDS = 449 -SP_PERF_SEL_DST_BUF_WB_CONF_W_SPI = 450 -SP_PERF_SEL_DST_BUF_EVEN_DIRTY = 451 -SP_PERF_SEL_DST_BUF_ODD_DIRTY = 452 -SP_PERF_SEL_SRC_CACHE_HIT_B0 = 453 -SP_PERF_SEL_SRC_CACHE_HIT_B1 = 454 -SP_PERF_SEL_SRC_CACHE_HIT_B2 = 455 -SP_PERF_SEL_SRC_CACHE_HIT_B3 = 456 -SP_PERF_SEL_SRC_CACHE_PROBE_B0 = 457 -SP_PERF_SEL_SRC_CACHE_PROBE_B1 = 458 -SP_PERF_SEL_SRC_CACHE_PROBE_B2 = 459 -SP_PERF_SEL_SRC_CACHE_PROBE_B3 = 460 -SP_PERF_SEL_SRC_CACHE_VGPR_RD_B0 = 461 -SP_PERF_SEL_SRC_CACHE_VGPR_RD_B1 = 462 -SP_PERF_SEL_SRC_CACHE_VGPR_RD_B2 = 463 -SP_PERF_SEL_SRC_CACHE_VGPR_RD_B3 = 464 -SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B0 = 465 -SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B1 = 466 -SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B2 = 467 -SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B3 = 468 -SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B0 = 469 -SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B1 = 470 -SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B2 = 471 -SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B3 = 472 -SP_PERF_SEL_VALU_PENDING_QUEUE_STALL = 473 -SP_PERF_SEL_VALU_OPERAND = 474 -SP_PERF_SEL_VALU_VGPR_OPERAND = 475 -SP_PERF_SEL_VALU_OPERAND_FROM_DST_BUF = 476 -SP_PERF_SEL_VALU_EXEC_MASK_CHANGE = 477 -SP_PERF_SEL_VALU_COEXEC_WITH_TRANS = 478 -SP_PERF_SEL_VALU_SGPR_FWD_BUF_FULL = 479 -SP_PERF_SEL_VALU_STALL = 480 -SP_PERF_SEL_VALU_STALL_VGPR_NOT_READY = 481 -SP_PERF_SEL_VALU_STALL_SGPR_NOT_READY = 482 -SP_PERF_SEL_VALU_STALL_VDST_FWD = 483 -SP_PERF_SEL_VALU_STALL_SDST_FWD = 484 -SP_PERF_SEL_VALU_STALL_DST_STALL = 485 -SP_PERF_SEL_VALU_FAST_OP_STALL_VGPR_NOT_READY = 486 -SP_PERF_SEL_VGPR_VMEM_RD = 487 -SP_PERF_SEL_VGPR_EXP_RD = 488 -SP_PERF_SEL_VGPR_SPI_WR = 489 -SP_PERF_SEL_VGPR_TDLDS_DATA_WR = 490 -SP_PERF_SEL_VGPR_WR = 491 -SP_PERF_SEL_VGPR_RD = 492 -SP_PERF_SEL_DUMMY_LAST = 493 -SQ_PERF_SEL_NONE2 = 511 -SQ_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_ROUND_MODE' -SQ_ROUND_MODE__enumvalues = { - 0: 'SQ_ROUND_NEAREST_EVEN', - 1: 'SQ_ROUND_PLUS_INFINITY', - 2: 'SQ_ROUND_MINUS_INFINITY', - 3: 'SQ_ROUND_TO_ZERO', -} -SQ_ROUND_NEAREST_EVEN = 0 -SQ_ROUND_PLUS_INFINITY = 1 -SQ_ROUND_MINUS_INFINITY = 2 -SQ_ROUND_TO_ZERO = 3 -SQ_ROUND_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_RSRC_BUF_TYPE' -SQ_RSRC_BUF_TYPE__enumvalues = { - 0: 'SQ_RSRC_BUF', - 1: 'SQ_RSRC_BUF_RSVD_1', - 2: 'SQ_RSRC_BUF_RSVD_2', - 3: 'SQ_RSRC_BUF_RSVD_3', -} -SQ_RSRC_BUF = 0 -SQ_RSRC_BUF_RSVD_1 = 1 -SQ_RSRC_BUF_RSVD_2 = 2 -SQ_RSRC_BUF_RSVD_3 = 3 -SQ_RSRC_BUF_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_RSRC_FLAT_TYPE' -SQ_RSRC_FLAT_TYPE__enumvalues = { - 0: 'SQ_RSRC_FLAT_RSVD_0', - 1: 'SQ_RSRC_FLAT', - 2: 'SQ_RSRC_FLAT_RSVD_2', - 3: 'SQ_RSRC_FLAT_RSVD_3', -} -SQ_RSRC_FLAT_RSVD_0 = 0 -SQ_RSRC_FLAT = 1 -SQ_RSRC_FLAT_RSVD_2 = 2 -SQ_RSRC_FLAT_RSVD_3 = 3 -SQ_RSRC_FLAT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_RSRC_IMG_TYPE' -SQ_RSRC_IMG_TYPE__enumvalues = { - 0: 'SQ_RSRC_IMG_RSVD_0', - 1: 'SQ_RSRC_IMG_RSVD_1', - 2: 'SQ_RSRC_IMG_RSVD_2', - 3: 'SQ_RSRC_IMG_RSVD_3', - 4: 'SQ_RSRC_IMG_RSVD_4', - 5: 'SQ_RSRC_IMG_RSVD_5', - 6: 'SQ_RSRC_IMG_RSVD_6', - 7: 'SQ_RSRC_IMG_RSVD_7', - 8: 'SQ_RSRC_IMG_1D', - 9: 'SQ_RSRC_IMG_2D', - 10: 'SQ_RSRC_IMG_3D', - 11: 'SQ_RSRC_IMG_CUBE', - 12: 'SQ_RSRC_IMG_1D_ARRAY', - 13: 'SQ_RSRC_IMG_2D_ARRAY', - 14: 'SQ_RSRC_IMG_2D_MSAA', - 15: 'SQ_RSRC_IMG_2D_MSAA_ARRAY', -} -SQ_RSRC_IMG_RSVD_0 = 0 -SQ_RSRC_IMG_RSVD_1 = 1 -SQ_RSRC_IMG_RSVD_2 = 2 -SQ_RSRC_IMG_RSVD_3 = 3 -SQ_RSRC_IMG_RSVD_4 = 4 -SQ_RSRC_IMG_RSVD_5 = 5 -SQ_RSRC_IMG_RSVD_6 = 6 -SQ_RSRC_IMG_RSVD_7 = 7 -SQ_RSRC_IMG_1D = 8 -SQ_RSRC_IMG_2D = 9 -SQ_RSRC_IMG_3D = 10 -SQ_RSRC_IMG_CUBE = 11 -SQ_RSRC_IMG_1D_ARRAY = 12 -SQ_RSRC_IMG_2D_ARRAY = 13 -SQ_RSRC_IMG_2D_MSAA = 14 -SQ_RSRC_IMG_2D_MSAA_ARRAY = 15 -SQ_RSRC_IMG_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_SEL_XYZW01' -SQ_SEL_XYZW01__enumvalues = { - 0: 'SQ_SEL_0', - 1: 'SQ_SEL_1', - 2: 'SQ_SEL_N_BC_1', - 3: 'SQ_SEL_RESERVED_1', - 4: 'SQ_SEL_X', - 5: 'SQ_SEL_Y', - 6: 'SQ_SEL_Z', - 7: 'SQ_SEL_W', -} -SQ_SEL_0 = 0 -SQ_SEL_1 = 1 -SQ_SEL_N_BC_1 = 2 -SQ_SEL_RESERVED_1 = 3 -SQ_SEL_X = 4 -SQ_SEL_Y = 5 -SQ_SEL_Z = 6 -SQ_SEL_W = 7 -SQ_SEL_XYZW01 = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_ANISO_RATIO' -SQ_TEX_ANISO_RATIO__enumvalues = { - 0: 'SQ_TEX_ANISO_RATIO_1', - 1: 'SQ_TEX_ANISO_RATIO_2', - 2: 'SQ_TEX_ANISO_RATIO_4', - 3: 'SQ_TEX_ANISO_RATIO_8', - 4: 'SQ_TEX_ANISO_RATIO_16', -} -SQ_TEX_ANISO_RATIO_1 = 0 -SQ_TEX_ANISO_RATIO_2 = 1 -SQ_TEX_ANISO_RATIO_4 = 2 -SQ_TEX_ANISO_RATIO_8 = 3 -SQ_TEX_ANISO_RATIO_16 = 4 -SQ_TEX_ANISO_RATIO = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_BORDER_COLOR' -SQ_TEX_BORDER_COLOR__enumvalues = { - 0: 'SQ_TEX_BORDER_COLOR_TRANS_BLACK', - 1: 'SQ_TEX_BORDER_COLOR_OPAQUE_BLACK', - 2: 'SQ_TEX_BORDER_COLOR_OPAQUE_WHITE', - 3: 'SQ_TEX_BORDER_COLOR_REGISTER', -} -SQ_TEX_BORDER_COLOR_TRANS_BLACK = 0 -SQ_TEX_BORDER_COLOR_OPAQUE_BLACK = 1 -SQ_TEX_BORDER_COLOR_OPAQUE_WHITE = 2 -SQ_TEX_BORDER_COLOR_REGISTER = 3 -SQ_TEX_BORDER_COLOR = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_CLAMP' -SQ_TEX_CLAMP__enumvalues = { - 0: 'SQ_TEX_WRAP', - 1: 'SQ_TEX_MIRROR', - 2: 'SQ_TEX_CLAMP_LAST_TEXEL', - 3: 'SQ_TEX_MIRROR_ONCE_LAST_TEXEL', - 4: 'SQ_TEX_CLAMP_HALF_BORDER', - 5: 'SQ_TEX_MIRROR_ONCE_HALF_BORDER', - 6: 'SQ_TEX_CLAMP_BORDER', - 7: 'SQ_TEX_MIRROR_ONCE_BORDER', -} -SQ_TEX_WRAP = 0 -SQ_TEX_MIRROR = 1 -SQ_TEX_CLAMP_LAST_TEXEL = 2 -SQ_TEX_MIRROR_ONCE_LAST_TEXEL = 3 -SQ_TEX_CLAMP_HALF_BORDER = 4 -SQ_TEX_MIRROR_ONCE_HALF_BORDER = 5 -SQ_TEX_CLAMP_BORDER = 6 -SQ_TEX_MIRROR_ONCE_BORDER = 7 -SQ_TEX_CLAMP = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_DEPTH_COMPARE' -SQ_TEX_DEPTH_COMPARE__enumvalues = { - 0: 'SQ_TEX_DEPTH_COMPARE_NEVER', - 1: 'SQ_TEX_DEPTH_COMPARE_LESS', - 2: 'SQ_TEX_DEPTH_COMPARE_EQUAL', - 3: 'SQ_TEX_DEPTH_COMPARE_LESSEQUAL', - 4: 'SQ_TEX_DEPTH_COMPARE_GREATER', - 5: 'SQ_TEX_DEPTH_COMPARE_NOTEQUAL', - 6: 'SQ_TEX_DEPTH_COMPARE_GREATEREQUAL', - 7: 'SQ_TEX_DEPTH_COMPARE_ALWAYS', -} -SQ_TEX_DEPTH_COMPARE_NEVER = 0 -SQ_TEX_DEPTH_COMPARE_LESS = 1 -SQ_TEX_DEPTH_COMPARE_EQUAL = 2 -SQ_TEX_DEPTH_COMPARE_LESSEQUAL = 3 -SQ_TEX_DEPTH_COMPARE_GREATER = 4 -SQ_TEX_DEPTH_COMPARE_NOTEQUAL = 5 -SQ_TEX_DEPTH_COMPARE_GREATEREQUAL = 6 -SQ_TEX_DEPTH_COMPARE_ALWAYS = 7 -SQ_TEX_DEPTH_COMPARE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_MIP_FILTER' -SQ_TEX_MIP_FILTER__enumvalues = { - 0: 'SQ_TEX_MIP_FILTER_NONE', - 1: 'SQ_TEX_MIP_FILTER_POINT', - 2: 'SQ_TEX_MIP_FILTER_LINEAR', - 3: 'SQ_TEX_MIP_FILTER_POINT_ANISO_ADJ', -} -SQ_TEX_MIP_FILTER_NONE = 0 -SQ_TEX_MIP_FILTER_POINT = 1 -SQ_TEX_MIP_FILTER_LINEAR = 2 -SQ_TEX_MIP_FILTER_POINT_ANISO_ADJ = 3 -SQ_TEX_MIP_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_XY_FILTER' -SQ_TEX_XY_FILTER__enumvalues = { - 0: 'SQ_TEX_XY_FILTER_POINT', - 1: 'SQ_TEX_XY_FILTER_BILINEAR', - 2: 'SQ_TEX_XY_FILTER_ANISO_POINT', - 3: 'SQ_TEX_XY_FILTER_ANISO_BILINEAR', -} -SQ_TEX_XY_FILTER_POINT = 0 -SQ_TEX_XY_FILTER_BILINEAR = 1 -SQ_TEX_XY_FILTER_ANISO_POINT = 2 -SQ_TEX_XY_FILTER_ANISO_BILINEAR = 3 -SQ_TEX_XY_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TEX_Z_FILTER' -SQ_TEX_Z_FILTER__enumvalues = { - 0: 'SQ_TEX_Z_FILTER_NONE', - 1: 'SQ_TEX_Z_FILTER_POINT', - 2: 'SQ_TEX_Z_FILTER_LINEAR', -} -SQ_TEX_Z_FILTER_NONE = 0 -SQ_TEX_Z_FILTER_POINT = 1 -SQ_TEX_Z_FILTER_LINEAR = 2 -SQ_TEX_Z_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_MODE' -SQ_TT_MODE__enumvalues = { - 0: 'SQ_TT_MODE_OFF', - 1: 'SQ_TT_MODE_ON', - 2: 'SQ_TT_MODE_GLOBAL', - 3: 'SQ_TT_MODE_DETAIL', -} -SQ_TT_MODE_OFF = 0 -SQ_TT_MODE_ON = 1 -SQ_TT_MODE_GLOBAL = 2 -SQ_TT_MODE_DETAIL = 3 -SQ_TT_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_RT_FREQ' -SQ_TT_RT_FREQ__enumvalues = { - 0: 'SQ_TT_RT_FREQ_NEVER', - 1: 'SQ_TT_RT_FREQ_1024_CLK', - 2: 'SQ_TT_RT_FREQ_4096_CLK', -} -SQ_TT_RT_FREQ_NEVER = 0 -SQ_TT_RT_FREQ_1024_CLK = 1 -SQ_TT_RT_FREQ_4096_CLK = 2 -SQ_TT_RT_FREQ = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_TOKEN_MASK_INST_EXCLUDE' -SQ_TT_TOKEN_MASK_INST_EXCLUDE__enumvalues = { - 1: 'SQ_TT_INST_EXCLUDE_VMEM_OTHER_SIMD_BIT', - 2: 'SQ_TT_INST_EXCLUDE_EXPGNT234_BIT', -} -SQ_TT_INST_EXCLUDE_VMEM_OTHER_SIMD_BIT = 1 -SQ_TT_INST_EXCLUDE_EXPGNT234_BIT = 2 -SQ_TT_TOKEN_MASK_INST_EXCLUDE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_TOKEN_MASK_INST_EXCLUDE_SHIFT' -SQ_TT_TOKEN_MASK_INST_EXCLUDE_SHIFT__enumvalues = { - 0: 'SQ_TT_INST_EXCLUDE_VMEM_OTHER_SIMD_SHIFT', - 1: 'SQ_TT_INST_EXCLUDE_EXPGNT234_SHIFT', -} -SQ_TT_INST_EXCLUDE_VMEM_OTHER_SIMD_SHIFT = 0 -SQ_TT_INST_EXCLUDE_EXPGNT234_SHIFT = 1 -SQ_TT_TOKEN_MASK_INST_EXCLUDE_SHIFT = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_TOKEN_MASK_REG_EXCLUDE' -SQ_TT_TOKEN_MASK_REG_EXCLUDE__enumvalues = { - 1: 'SQ_TT_REG_EXCLUDE_USER_DATA_BIT', - 2: 'SQ_TT_REG_EXCLUDE_CP_ME_MC_RADDR_BIT', - 4: 'SQ_TT_REG_EXCLUDE_GRBM_COMPUTE_EXCLUDE_BIT', -} -SQ_TT_REG_EXCLUDE_USER_DATA_BIT = 1 -SQ_TT_REG_EXCLUDE_CP_ME_MC_RADDR_BIT = 2 -SQ_TT_REG_EXCLUDE_GRBM_COMPUTE_EXCLUDE_BIT = 4 -SQ_TT_TOKEN_MASK_REG_EXCLUDE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_TOKEN_MASK_REG_EXCLUDE_SHIFT' -SQ_TT_TOKEN_MASK_REG_EXCLUDE_SHIFT__enumvalues = { - 0: 'SQ_TT_REG_EXCLUDE_USER_DATA_SHIFT', - 1: 'SQ_TT_REG_EXCLUDE_CP_ME_MC_RADDR_SHIFT', - 2: 'SQ_TT_REG_EXCLUDE_GRBM_COMPUTE_EXCLUDE_SHIFT', -} -SQ_TT_REG_EXCLUDE_USER_DATA_SHIFT = 0 -SQ_TT_REG_EXCLUDE_CP_ME_MC_RADDR_SHIFT = 1 -SQ_TT_REG_EXCLUDE_GRBM_COMPUTE_EXCLUDE_SHIFT = 2 -SQ_TT_TOKEN_MASK_REG_EXCLUDE_SHIFT = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_TOKEN_MASK_REG_INCLUDE' -SQ_TT_TOKEN_MASK_REG_INCLUDE__enumvalues = { - 1: 'SQ_TT_TOKEN_MASK_SQDEC_BIT', - 2: 'SQ_TT_TOKEN_MASK_SHDEC_BIT', - 4: 'SQ_TT_TOKEN_MASK_GFXUDEC_BIT', - 8: 'SQ_TT_TOKEN_MASK_COMP_BIT', - 16: 'SQ_TT_TOKEN_MASK_CONTEXT_BIT', - 32: 'SQ_TT_TOKEN_MASK_CONFIG_BIT', - 64: 'SQ_TT_TOKEN_MASK_ALL_BIT', - 128: 'SQ_TT_TOKEN_MASK_RSVD_BIT', -} -SQ_TT_TOKEN_MASK_SQDEC_BIT = 1 -SQ_TT_TOKEN_MASK_SHDEC_BIT = 2 -SQ_TT_TOKEN_MASK_GFXUDEC_BIT = 4 -SQ_TT_TOKEN_MASK_COMP_BIT = 8 -SQ_TT_TOKEN_MASK_CONTEXT_BIT = 16 -SQ_TT_TOKEN_MASK_CONFIG_BIT = 32 -SQ_TT_TOKEN_MASK_ALL_BIT = 64 -SQ_TT_TOKEN_MASK_RSVD_BIT = 128 -SQ_TT_TOKEN_MASK_REG_INCLUDE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_TOKEN_MASK_REG_INCLUDE_SHIFT' -SQ_TT_TOKEN_MASK_REG_INCLUDE_SHIFT__enumvalues = { - 0: 'SQ_TT_TOKEN_MASK_SQDEC_SHIFT', - 1: 'SQ_TT_TOKEN_MASK_SHDEC_SHIFT', - 2: 'SQ_TT_TOKEN_MASK_GFXUDEC_SHIFT', - 3: 'SQ_TT_TOKEN_MASK_COMP_SHIFT', - 4: 'SQ_TT_TOKEN_MASK_CONTEXT_SHIFT', - 5: 'SQ_TT_TOKEN_MASK_CONFIG_SHIFT', - 6: 'SQ_TT_TOKEN_MASK_ALL_SHIFT', - 7: 'SQ_TT_TOKEN_MASK_RSVD_SHIFT', -} -SQ_TT_TOKEN_MASK_SQDEC_SHIFT = 0 -SQ_TT_TOKEN_MASK_SHDEC_SHIFT = 1 -SQ_TT_TOKEN_MASK_GFXUDEC_SHIFT = 2 -SQ_TT_TOKEN_MASK_COMP_SHIFT = 3 -SQ_TT_TOKEN_MASK_CONTEXT_SHIFT = 4 -SQ_TT_TOKEN_MASK_CONFIG_SHIFT = 5 -SQ_TT_TOKEN_MASK_ALL_SHIFT = 6 -SQ_TT_TOKEN_MASK_RSVD_SHIFT = 7 -SQ_TT_TOKEN_MASK_REG_INCLUDE_SHIFT = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_TOKEN_MASK_TOKEN_EXCLUDE_SHIFT' -SQ_TT_TOKEN_MASK_TOKEN_EXCLUDE_SHIFT__enumvalues = { - 0: 'SQ_TT_TOKEN_EXCLUDE_VMEMEXEC_SHIFT', - 1: 'SQ_TT_TOKEN_EXCLUDE_ALUEXEC_SHIFT', - 2: 'SQ_TT_TOKEN_EXCLUDE_VALUINST_SHIFT', - 3: 'SQ_TT_TOKEN_EXCLUDE_WAVERDY_SHIFT', - 4: 'SQ_TT_TOKEN_EXCLUDE_WAVESTARTEND_SHIFT', - 5: 'SQ_TT_TOKEN_EXCLUDE_IMMEDIATE_SHIFT', - 6: 'SQ_TT_TOKEN_EXCLUDE_REG_SHIFT', - 7: 'SQ_TT_TOKEN_EXCLUDE_EVENT_SHIFT', - 8: 'SQ_TT_TOKEN_EXCLUDE_INST_SHIFT', - 9: 'SQ_TT_TOKEN_EXCLUDE_UTILCTR_SHIFT', - 10: 'SQ_TT_TOKEN_EXCLUDE_WAVEALLOC_SHIFT', - 11: 'SQ_TT_TOKEN_EXCLUDE_PERF_SHIFT', -} -SQ_TT_TOKEN_EXCLUDE_VMEMEXEC_SHIFT = 0 -SQ_TT_TOKEN_EXCLUDE_ALUEXEC_SHIFT = 1 -SQ_TT_TOKEN_EXCLUDE_VALUINST_SHIFT = 2 -SQ_TT_TOKEN_EXCLUDE_WAVERDY_SHIFT = 3 -SQ_TT_TOKEN_EXCLUDE_WAVESTARTEND_SHIFT = 4 -SQ_TT_TOKEN_EXCLUDE_IMMEDIATE_SHIFT = 5 -SQ_TT_TOKEN_EXCLUDE_REG_SHIFT = 6 -SQ_TT_TOKEN_EXCLUDE_EVENT_SHIFT = 7 -SQ_TT_TOKEN_EXCLUDE_INST_SHIFT = 8 -SQ_TT_TOKEN_EXCLUDE_UTILCTR_SHIFT = 9 -SQ_TT_TOKEN_EXCLUDE_WAVEALLOC_SHIFT = 10 -SQ_TT_TOKEN_EXCLUDE_PERF_SHIFT = 11 -SQ_TT_TOKEN_MASK_TOKEN_EXCLUDE_SHIFT = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_UTIL_TIMER' -SQ_TT_UTIL_TIMER__enumvalues = { - 0: 'SQ_TT_UTIL_TIMER_100_CLK', - 1: 'SQ_TT_UTIL_TIMER_250_CLK', -} -SQ_TT_UTIL_TIMER_100_CLK = 0 -SQ_TT_UTIL_TIMER_250_CLK = 1 -SQ_TT_UTIL_TIMER = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_WAVESTART_MODE' -SQ_TT_WAVESTART_MODE__enumvalues = { - 0: 'SQ_TT_WAVESTART_MODE_SHORT', - 1: 'SQ_TT_WAVESTART_MODE_ALLOC', - 2: 'SQ_TT_WAVESTART_MODE_PBB_ID', -} -SQ_TT_WAVESTART_MODE_SHORT = 0 -SQ_TT_WAVESTART_MODE_ALLOC = 1 -SQ_TT_WAVESTART_MODE_PBB_ID = 2 -SQ_TT_WAVESTART_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_WTYPE_INCLUDE' -SQ_TT_WTYPE_INCLUDE__enumvalues = { - 1: 'SQ_TT_WTYPE_INCLUDE_PS_BIT', - 2: 'SQ_TT_WTYPE_INCLUDE_RSVD0_BIT', - 4: 'SQ_TT_WTYPE_INCLUDE_GS_BIT', - 8: 'SQ_TT_WTYPE_INCLUDE_RSVD1_BIT', - 16: 'SQ_TT_WTYPE_INCLUDE_HS_BIT', - 32: 'SQ_TT_WTYPE_INCLUDE_RSVD2_BIT', - 64: 'SQ_TT_WTYPE_INCLUDE_CS_BIT', -} -SQ_TT_WTYPE_INCLUDE_PS_BIT = 1 -SQ_TT_WTYPE_INCLUDE_RSVD0_BIT = 2 -SQ_TT_WTYPE_INCLUDE_GS_BIT = 4 -SQ_TT_WTYPE_INCLUDE_RSVD1_BIT = 8 -SQ_TT_WTYPE_INCLUDE_HS_BIT = 16 -SQ_TT_WTYPE_INCLUDE_RSVD2_BIT = 32 -SQ_TT_WTYPE_INCLUDE_CS_BIT = 64 -SQ_TT_WTYPE_INCLUDE = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_TT_WTYPE_INCLUDE_SHIFT' -SQ_TT_WTYPE_INCLUDE_SHIFT__enumvalues = { - 0: 'SQ_TT_WTYPE_INCLUDE_PS_SHIFT', - 1: 'SQ_TT_WTYPE_INCLUDE_RSVD0_SHIFT', - 2: 'SQ_TT_WTYPE_INCLUDE_GS_SHIFT', - 3: 'SQ_TT_WTYPE_INCLUDE_RSVD1_SHIFT', - 4: 'SQ_TT_WTYPE_INCLUDE_HS_SHIFT', - 5: 'SQ_TT_WTYPE_INCLUDE_RSVD2_SHIFT', - 6: 'SQ_TT_WTYPE_INCLUDE_CS_SHIFT', -} -SQ_TT_WTYPE_INCLUDE_PS_SHIFT = 0 -SQ_TT_WTYPE_INCLUDE_RSVD0_SHIFT = 1 -SQ_TT_WTYPE_INCLUDE_GS_SHIFT = 2 -SQ_TT_WTYPE_INCLUDE_RSVD1_SHIFT = 3 -SQ_TT_WTYPE_INCLUDE_HS_SHIFT = 4 -SQ_TT_WTYPE_INCLUDE_RSVD2_SHIFT = 5 -SQ_TT_WTYPE_INCLUDE_CS_SHIFT = 6 -SQ_TT_WTYPE_INCLUDE_SHIFT = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WATCH_MODES' -SQ_WATCH_MODES__enumvalues = { - 0: 'SQ_WATCH_MODE_READ', - 1: 'SQ_WATCH_MODE_NONREAD', - 2: 'SQ_WATCH_MODE_ATOMIC', - 3: 'SQ_WATCH_MODE_ALL', -} -SQ_WATCH_MODE_READ = 0 -SQ_WATCH_MODE_NONREAD = 1 -SQ_WATCH_MODE_ATOMIC = 2 -SQ_WATCH_MODE_ALL = 3 -SQ_WATCH_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WAVE_FWD_PROG_INTERVAL' -SQ_WAVE_FWD_PROG_INTERVAL__enumvalues = { - 0: 'SQ_WAVE_FWD_PROG_INTERVAL_NEVER', - 1: 'SQ_WAVE_FWD_PROG_INTERVAL_256', - 2: 'SQ_WAVE_FWD_PROG_INTERVAL_1024', - 3: 'SQ_WAVE_FWD_PROG_INTERVAL_4096', -} -SQ_WAVE_FWD_PROG_INTERVAL_NEVER = 0 -SQ_WAVE_FWD_PROG_INTERVAL_256 = 1 -SQ_WAVE_FWD_PROG_INTERVAL_1024 = 2 -SQ_WAVE_FWD_PROG_INTERVAL_4096 = 3 -SQ_WAVE_FWD_PROG_INTERVAL = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WAVE_IB_ECC_ST' -SQ_WAVE_IB_ECC_ST__enumvalues = { - 0: 'SQ_WAVE_IB_ECC_CLEAN', - 1: 'SQ_WAVE_IB_ECC_ERR_CONTINUE', - 2: 'SQ_WAVE_IB_ECC_ERR_HALT', - 3: 'SQ_WAVE_IB_ECC_WITH_ERR_MSG', -} -SQ_WAVE_IB_ECC_CLEAN = 0 -SQ_WAVE_IB_ECC_ERR_CONTINUE = 1 -SQ_WAVE_IB_ECC_ERR_HALT = 2 -SQ_WAVE_IB_ECC_WITH_ERR_MSG = 3 -SQ_WAVE_IB_ECC_ST = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WAVE_SCHED_MODES' -SQ_WAVE_SCHED_MODES__enumvalues = { - 0: 'SQ_WAVE_SCHED_MODE_NORMAL', - 1: 'SQ_WAVE_SCHED_MODE_EXPERT', - 2: 'SQ_WAVE_SCHED_MODE_DISABLE_VA_VDST', -} -SQ_WAVE_SCHED_MODE_NORMAL = 0 -SQ_WAVE_SCHED_MODE_EXPERT = 1 -SQ_WAVE_SCHED_MODE_DISABLE_VA_VDST = 2 -SQ_WAVE_SCHED_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'SQ_WAVE_TYPE' -SQ_WAVE_TYPE__enumvalues = { - 0: 'SQ_WAVE_TYPE_PS', - 1: 'SQ_WAVE_TYPE_RSVD0', - 2: 'SQ_WAVE_TYPE_GS', - 3: 'SQ_WAVE_TYPE_RSVD1', - 4: 'SQ_WAVE_TYPE_HS', - 5: 'SQ_WAVE_TYPE_RSVD2', - 6: 'SQ_WAVE_TYPE_CS', - 7: 'SQ_WAVE_TYPE_PS1', - 8: 'SQ_WAVE_TYPE_PS2', - 9: 'SQ_WAVE_TYPE_PS3', -} -SQ_WAVE_TYPE_PS = 0 -SQ_WAVE_TYPE_RSVD0 = 1 -SQ_WAVE_TYPE_GS = 2 -SQ_WAVE_TYPE_RSVD1 = 3 -SQ_WAVE_TYPE_HS = 4 -SQ_WAVE_TYPE_RSVD2 = 5 -SQ_WAVE_TYPE_CS = 6 -SQ_WAVE_TYPE_PS1 = 7 -SQ_WAVE_TYPE_PS2 = 8 -SQ_WAVE_TYPE_PS3 = 9 -SQ_WAVE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CSCNTL_TYPE' -CSCNTL_TYPE__enumvalues = { - 0: 'CSCNTL_TYPE_TG', - 1: 'CSCNTL_TYPE_STATE', - 2: 'CSCNTL_TYPE_EVENT', - 3: 'CSCNTL_TYPE_PRIVATE', -} -CSCNTL_TYPE_TG = 0 -CSCNTL_TYPE_STATE = 1 -CSCNTL_TYPE_EVENT = 2 -CSCNTL_TYPE_PRIVATE = 3 -CSCNTL_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'CSDATA_TYPE' -CSDATA_TYPE__enumvalues = { - 0: 'CSDATA_TYPE_TG', - 1: 'CSDATA_TYPE_STATE', - 2: 'CSDATA_TYPE_EVENT', - 3: 'CSDATA_TYPE_PRIVATE', -} -CSDATA_TYPE_TG = 0 -CSDATA_TYPE_STATE = 1 -CSDATA_TYPE_EVENT = 2 -CSDATA_TYPE_PRIVATE = 3 -CSDATA_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'GE1_PERFCOUNT_SELECT' -GE1_PERFCOUNT_SELECT__enumvalues = { - 0: 'ge1_assembler_busy', - 1: 'ge1_assembler_stalled', - 2: 'ge1_dma_busy', - 3: 'ge1_dma_lat_bin_0', - 4: 'ge1_dma_lat_bin_1', - 5: 'ge1_dma_lat_bin_2', - 6: 'ge1_dma_lat_bin_3', - 7: 'ge1_dma_lat_bin_4', - 8: 'ge1_dma_lat_bin_5', - 9: 'ge1_dma_lat_bin_6', - 10: 'ge1_dma_lat_bin_7', - 11: 'ge1_dma_return_cl0', - 12: 'ge1_dma_return_cl1', - 13: 'ge1_dma_utcl1_consecutive_retry_event', - 14: 'ge1_dma_utcl1_request_event', - 15: 'ge1_dma_utcl1_retry_event', - 16: 'ge1_dma_utcl1_stall_event', - 17: 'ge1_dma_utcl1_stall_utcl2_event', - 18: 'ge1_dma_utcl1_translation_hit_event', - 19: 'ge1_dma_utcl1_translation_miss_event', - 20: 'ge1_assembler_dma_starved', - 21: 'ge1_rbiu_di_fifo_stalled_p0', - 22: 'ge1_rbiu_di_fifo_starved_p0', - 23: 'ge1_rbiu_dr_fifo_stalled_p0', - 24: 'ge1_rbiu_dr_fifo_starved_p0', - 25: 'ge1_sclk_reg_vld', - 26: 'ge1_stat_busy', - 27: 'ge1_stat_no_dma_busy', - 28: 'ge1_pipe0_to_pipe1', - 29: 'ge1_pipe1_to_pipe0', - 30: 'ge1_dma_return_size_cl0', - 31: 'ge1_dma_return_size_cl1', - 32: 'ge1_small_draws_one_instance', - 33: 'ge1_sclk_input_vld', - 34: 'ge1_prim_group_limit_hit', - 35: 'ge1_unopt_multi_instance_draws', - 36: 'ge1_rbiu_di_fifo_stalled_p1', - 37: 'ge1_rbiu_di_fifo_starved_p1', - 38: 'ge1_rbiu_dr_fifo_stalled_p1', - 39: 'ge1_rbiu_dr_fifo_starved_p1', -} -ge1_assembler_busy = 0 -ge1_assembler_stalled = 1 -ge1_dma_busy = 2 -ge1_dma_lat_bin_0 = 3 -ge1_dma_lat_bin_1 = 4 -ge1_dma_lat_bin_2 = 5 -ge1_dma_lat_bin_3 = 6 -ge1_dma_lat_bin_4 = 7 -ge1_dma_lat_bin_5 = 8 -ge1_dma_lat_bin_6 = 9 -ge1_dma_lat_bin_7 = 10 -ge1_dma_return_cl0 = 11 -ge1_dma_return_cl1 = 12 -ge1_dma_utcl1_consecutive_retry_event = 13 -ge1_dma_utcl1_request_event = 14 -ge1_dma_utcl1_retry_event = 15 -ge1_dma_utcl1_stall_event = 16 -ge1_dma_utcl1_stall_utcl2_event = 17 -ge1_dma_utcl1_translation_hit_event = 18 -ge1_dma_utcl1_translation_miss_event = 19 -ge1_assembler_dma_starved = 20 -ge1_rbiu_di_fifo_stalled_p0 = 21 -ge1_rbiu_di_fifo_starved_p0 = 22 -ge1_rbiu_dr_fifo_stalled_p0 = 23 -ge1_rbiu_dr_fifo_starved_p0 = 24 -ge1_sclk_reg_vld = 25 -ge1_stat_busy = 26 -ge1_stat_no_dma_busy = 27 -ge1_pipe0_to_pipe1 = 28 -ge1_pipe1_to_pipe0 = 29 -ge1_dma_return_size_cl0 = 30 -ge1_dma_return_size_cl1 = 31 -ge1_small_draws_one_instance = 32 -ge1_sclk_input_vld = 33 -ge1_prim_group_limit_hit = 34 -ge1_unopt_multi_instance_draws = 35 -ge1_rbiu_di_fifo_stalled_p1 = 36 -ge1_rbiu_di_fifo_starved_p1 = 37 -ge1_rbiu_dr_fifo_stalled_p1 = 38 -ge1_rbiu_dr_fifo_starved_p1 = 39 -GE1_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'GE2_DIST_PERFCOUNT_SELECT' -GE2_DIST_PERFCOUNT_SELECT__enumvalues = { - 0: 'ge_dist_hs_done', - 1: 'ge_dist_hs_done_latency_se0', - 2: 'ge_dist_hs_done_latency_se1', - 3: 'ge_dist_hs_done_latency_se2', - 4: 'ge_dist_hs_done_latency_se3', - 5: 'ge_dist_hs_done_latency_se4', - 6: 'ge_dist_hs_done_latency_se5', - 7: 'ge_dist_hs_done_latency_se6', - 8: 'ge_dist_hs_done_latency_se7', - 9: 'ge_dist_inside_tf_bin_0', - 10: 'ge_dist_inside_tf_bin_1', - 11: 'ge_dist_inside_tf_bin_2', - 12: 'ge_dist_inside_tf_bin_3', - 13: 'ge_dist_inside_tf_bin_4', - 14: 'ge_dist_inside_tf_bin_5', - 15: 'ge_dist_inside_tf_bin_6', - 16: 'ge_dist_inside_tf_bin_7', - 17: 'ge_dist_inside_tf_bin_8', - 18: 'ge_dist_null_patch', - 19: 'ge_dist_sclk_core_vld', - 20: 'ge_dist_sclk_wd_te11_vld', - 21: 'ge_dist_tfreq_lat_bin_0', - 22: 'ge_dist_tfreq_lat_bin_1', - 23: 'ge_dist_tfreq_lat_bin_2', - 24: 'ge_dist_tfreq_lat_bin_3', - 25: 'ge_dist_tfreq_lat_bin_4', - 26: 'ge_dist_tfreq_lat_bin_5', - 27: 'ge_dist_tfreq_lat_bin_6', - 28: 'ge_dist_tfreq_lat_bin_7', - 29: 'ge_dist_tfreq_utcl1_consecutive_retry_event', - 30: 'ge_dist_tfreq_utcl1_request_event', - 31: 'ge_dist_tfreq_utcl1_retry_event', - 32: 'ge_dist_tfreq_utcl1_stall_event', - 33: 'ge_dist_tfreq_utcl1_stall_utcl2_event', - 34: 'ge_dist_tfreq_utcl1_translation_hit_event', - 35: 'ge_dist_tfreq_utcl1_translation_miss_event', - 36: 'ge_dist_vs_pc_stall', - 37: 'ge_dist_pc_feorder_fifo_full', - 38: 'ge_dist_pc_ge_manager_busy', - 39: 'ge_dist_pc_req_stall_se0', - 40: 'ge_dist_pc_req_stall_se1', - 41: 'ge_dist_pc_req_stall_se2', - 42: 'ge_dist_pc_req_stall_se3', - 43: 'ge_dist_pc_req_stall_se4', - 44: 'ge_dist_pc_req_stall_se5', - 45: 'ge_dist_pc_req_stall_se6', - 46: 'ge_dist_pc_req_stall_se7', - 47: 'ge_dist_pc_space_zero', - 48: 'ge_dist_sclk_input_vld', - 49: 'ge_dist_reserved', - 50: 'ge_dist_wd_te11_busy', - 51: 'ge_dist_te11_starved', - 52: 'ge_dist_switch_mode_stall', - 53: 'ge_all_tf_eq', - 54: 'ge_all_tf2', - 55: 'ge_all_tf3', - 56: 'ge_all_tf4', - 57: 'ge_all_tf5', - 58: 'ge_all_tf6', - 59: 'ge_se0_te11_starved_on_hs_done', - 60: 'ge_se1_te11_starved_on_hs_done', - 61: 'ge_se2_te11_starved_on_hs_done', - 62: 'ge_se3_te11_starved_on_hs_done', - 63: 'ge_se4_te11_starved_on_hs_done', - 64: 'ge_se5_te11_starved_on_hs_done', - 65: 'ge_se6_te11_starved_on_hs_done', - 66: 'ge_se7_te11_starved_on_hs_done', - 67: 'ge_dist_op_fifo_full_starve', - 68: 'ge_dist_hs_done_se0', - 69: 'ge_dist_hs_done_se1', - 70: 'ge_dist_hs_done_se2', - 71: 'ge_dist_hs_done_se3', - 72: 'ge_dist_hs_done_se4', - 73: 'ge_dist_hs_done_se5', - 74: 'ge_dist_hs_done_se6', - 75: 'ge_dist_hs_done_se7', - 76: 'ge_dist_hs_done_latency', - 77: 'ge_dist_distributer_busy', - 78: 'ge_tf_ret_data_stalling_hs_done', - 79: 'ge_num_of_no_dist_patches', - 80: 'ge_num_of_donut_dist_patches', - 81: 'ge_num_of_patch_dist_patches', - 82: 'ge_num_of_se_switches_due_to_patch_accum', - 83: 'ge_num_of_se_switches_due_to_donut', - 84: 'ge_num_of_se_switches_due_to_trap', - 85: 'ge_num_of_hs_alloc_events', - 86: 'ge_agm_gcr_req', - 87: 'ge_agm_gcr_tag_stall', - 88: 'ge_agm_gcr_crd_stall', - 89: 'ge_agm_gcr_stall', - 90: 'ge_agm_gcr_latency', - 91: 'ge_distclk_vld', -} -ge_dist_hs_done = 0 -ge_dist_hs_done_latency_se0 = 1 -ge_dist_hs_done_latency_se1 = 2 -ge_dist_hs_done_latency_se2 = 3 -ge_dist_hs_done_latency_se3 = 4 -ge_dist_hs_done_latency_se4 = 5 -ge_dist_hs_done_latency_se5 = 6 -ge_dist_hs_done_latency_se6 = 7 -ge_dist_hs_done_latency_se7 = 8 -ge_dist_inside_tf_bin_0 = 9 -ge_dist_inside_tf_bin_1 = 10 -ge_dist_inside_tf_bin_2 = 11 -ge_dist_inside_tf_bin_3 = 12 -ge_dist_inside_tf_bin_4 = 13 -ge_dist_inside_tf_bin_5 = 14 -ge_dist_inside_tf_bin_6 = 15 -ge_dist_inside_tf_bin_7 = 16 -ge_dist_inside_tf_bin_8 = 17 -ge_dist_null_patch = 18 -ge_dist_sclk_core_vld = 19 -ge_dist_sclk_wd_te11_vld = 20 -ge_dist_tfreq_lat_bin_0 = 21 -ge_dist_tfreq_lat_bin_1 = 22 -ge_dist_tfreq_lat_bin_2 = 23 -ge_dist_tfreq_lat_bin_3 = 24 -ge_dist_tfreq_lat_bin_4 = 25 -ge_dist_tfreq_lat_bin_5 = 26 -ge_dist_tfreq_lat_bin_6 = 27 -ge_dist_tfreq_lat_bin_7 = 28 -ge_dist_tfreq_utcl1_consecutive_retry_event = 29 -ge_dist_tfreq_utcl1_request_event = 30 -ge_dist_tfreq_utcl1_retry_event = 31 -ge_dist_tfreq_utcl1_stall_event = 32 -ge_dist_tfreq_utcl1_stall_utcl2_event = 33 -ge_dist_tfreq_utcl1_translation_hit_event = 34 -ge_dist_tfreq_utcl1_translation_miss_event = 35 -ge_dist_vs_pc_stall = 36 -ge_dist_pc_feorder_fifo_full = 37 -ge_dist_pc_ge_manager_busy = 38 -ge_dist_pc_req_stall_se0 = 39 -ge_dist_pc_req_stall_se1 = 40 -ge_dist_pc_req_stall_se2 = 41 -ge_dist_pc_req_stall_se3 = 42 -ge_dist_pc_req_stall_se4 = 43 -ge_dist_pc_req_stall_se5 = 44 -ge_dist_pc_req_stall_se6 = 45 -ge_dist_pc_req_stall_se7 = 46 -ge_dist_pc_space_zero = 47 -ge_dist_sclk_input_vld = 48 -ge_dist_reserved = 49 -ge_dist_wd_te11_busy = 50 -ge_dist_te11_starved = 51 -ge_dist_switch_mode_stall = 52 -ge_all_tf_eq = 53 -ge_all_tf2 = 54 -ge_all_tf3 = 55 -ge_all_tf4 = 56 -ge_all_tf5 = 57 -ge_all_tf6 = 58 -ge_se0_te11_starved_on_hs_done = 59 -ge_se1_te11_starved_on_hs_done = 60 -ge_se2_te11_starved_on_hs_done = 61 -ge_se3_te11_starved_on_hs_done = 62 -ge_se4_te11_starved_on_hs_done = 63 -ge_se5_te11_starved_on_hs_done = 64 -ge_se6_te11_starved_on_hs_done = 65 -ge_se7_te11_starved_on_hs_done = 66 -ge_dist_op_fifo_full_starve = 67 -ge_dist_hs_done_se0 = 68 -ge_dist_hs_done_se1 = 69 -ge_dist_hs_done_se2 = 70 -ge_dist_hs_done_se3 = 71 -ge_dist_hs_done_se4 = 72 -ge_dist_hs_done_se5 = 73 -ge_dist_hs_done_se6 = 74 -ge_dist_hs_done_se7 = 75 -ge_dist_hs_done_latency = 76 -ge_dist_distributer_busy = 77 -ge_tf_ret_data_stalling_hs_done = 78 -ge_num_of_no_dist_patches = 79 -ge_num_of_donut_dist_patches = 80 -ge_num_of_patch_dist_patches = 81 -ge_num_of_se_switches_due_to_patch_accum = 82 -ge_num_of_se_switches_due_to_donut = 83 -ge_num_of_se_switches_due_to_trap = 84 -ge_num_of_hs_alloc_events = 85 -ge_agm_gcr_req = 86 -ge_agm_gcr_tag_stall = 87 -ge_agm_gcr_crd_stall = 88 -ge_agm_gcr_stall = 89 -ge_agm_gcr_latency = 90 -ge_distclk_vld = 91 -GE2_DIST_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'GE2_SE_PERFCOUNT_SELECT' -GE2_SE_PERFCOUNT_SELECT__enumvalues = { - 0: 'ge_se_ds_prims', - 1: 'ge_se_es_thread_groups', - 2: 'ge_se_esvert_stalled_gsprim', - 3: 'ge_se_hs_tfm_stall', - 4: 'ge_se_hs_tgs_active_high_water_mark', - 5: 'ge_se_hs_thread_groups', - 6: 'ge_se_reused_es_indices', - 7: 'ge_se_sclk_ngg_vld', - 8: 'ge_se_sclk_te11_vld', - 9: 'ge_se_spi_esvert_eov', - 10: 'ge_se_spi_esvert_stalled', - 11: 'ge_se_spi_esvert_starved_busy', - 12: 'ge_se_spi_esvert_valid', - 13: 'ge_se_spi_gsprim_cont', - 14: 'ge_se_spi_gsprim_eov', - 15: 'ge_se_spi_gsprim_stalled', - 16: 'ge_se_spi_gsprim_starved_busy', - 17: 'ge_se_spi_gsprim_valid', - 18: 'ge_se_spi_gssubgrp_is_event', - 19: 'ge_se_spi_gssubgrp_send', - 20: 'ge_se_spi_hsvert_eov', - 21: 'ge_se_spi_hsvert_stalled', - 22: 'ge_se_spi_hsvert_starved_busy', - 23: 'ge_se_spi_hsvert_valid', - 24: 'ge_se_spi_hswave_is_event', - 25: 'ge_se_spi_hswave_send', - 26: 'ge_se_spi_lsvert_eov', - 27: 'ge_se_spi_lsvert_stalled', - 28: 'ge_se_spi_lsvert_starved_busy', - 29: 'ge_se_spi_lsvert_valid', - 30: 'ge_se_spi_hsvert_fifo_full_stall', - 31: 'ge_se_spi_tgrp_fifo_stall', - 32: 'ge_spi_hsgrp_spi_stall', - 33: 'ge_se_spi_gssubgrp_event_window_active', - 34: 'ge_se_hs_input_stall', - 35: 'ge_se_sending_vert_or_prim', - 36: 'ge_se_sclk_input_vld', - 37: 'ge_spi_lswave_fifo_full_stall', - 38: 'ge_spi_hswave_fifo_full_stall', - 39: 'ge_hs_tif_stall', - 40: 'ge_csb_spi_bp', - 41: 'ge_ngg_starving_for_pc_grant', - 42: 'ge_pa0_csb_eop', - 43: 'ge_pa1_csb_eop', - 44: 'ge_ngg_starved_idle', - 45: 'ge_gsprim_send', - 46: 'ge_esvert_send', - 47: 'ge_ngg_starved_after_work', - 48: 'ge_ngg_subgrp_fifo_stall', - 49: 'ge_ngg_ord_id_req_stall', - 50: 'ge_ngg_indx_bus_stall', - 51: 'ge_hs_stall_tfmm_fifo_full', - 52: 'ge_gs_issue_rtr_stalled', - 53: 'ge_gsprim_stalled_esvert', - 54: 'ge_gsthread_stalled', - 55: 'ge_te11_stall_prim_funnel', - 56: 'ge_te11_stall_vert_funnel', - 57: 'ge_ngg_attr_grp_alloc', - 58: 'ge_ngg_attr_discard_alloc', - 59: 'ge_ngg_pc_space_not_avail', - 60: 'ge_ngg_agm_req_stall', - 61: 'ge_ngg_spi_esvert_partial_eov', - 62: 'ge_ngg_spi_gsprim_partial_eov', - 63: 'ge_spi_gsgrp_valid', - 64: 'ge_ngg_attr_grp_latency', - 65: 'ge_ngg_reuse_prim_limit_hit', - 66: 'ge_ngg_reuse_vert_limit_hit', - 67: 'ge_te11_con_stall', - 68: 'ge_te11_compactor_starved', - 69: 'ge_ngg_stall_tess_off_tess_on', - 70: 'ge_ngg_stall_tess_on_tess_off', -} -ge_se_ds_prims = 0 -ge_se_es_thread_groups = 1 -ge_se_esvert_stalled_gsprim = 2 -ge_se_hs_tfm_stall = 3 -ge_se_hs_tgs_active_high_water_mark = 4 -ge_se_hs_thread_groups = 5 -ge_se_reused_es_indices = 6 -ge_se_sclk_ngg_vld = 7 -ge_se_sclk_te11_vld = 8 -ge_se_spi_esvert_eov = 9 -ge_se_spi_esvert_stalled = 10 -ge_se_spi_esvert_starved_busy = 11 -ge_se_spi_esvert_valid = 12 -ge_se_spi_gsprim_cont = 13 -ge_se_spi_gsprim_eov = 14 -ge_se_spi_gsprim_stalled = 15 -ge_se_spi_gsprim_starved_busy = 16 -ge_se_spi_gsprim_valid = 17 -ge_se_spi_gssubgrp_is_event = 18 -ge_se_spi_gssubgrp_send = 19 -ge_se_spi_hsvert_eov = 20 -ge_se_spi_hsvert_stalled = 21 -ge_se_spi_hsvert_starved_busy = 22 -ge_se_spi_hsvert_valid = 23 -ge_se_spi_hswave_is_event = 24 -ge_se_spi_hswave_send = 25 -ge_se_spi_lsvert_eov = 26 -ge_se_spi_lsvert_stalled = 27 -ge_se_spi_lsvert_starved_busy = 28 -ge_se_spi_lsvert_valid = 29 -ge_se_spi_hsvert_fifo_full_stall = 30 -ge_se_spi_tgrp_fifo_stall = 31 -ge_spi_hsgrp_spi_stall = 32 -ge_se_spi_gssubgrp_event_window_active = 33 -ge_se_hs_input_stall = 34 -ge_se_sending_vert_or_prim = 35 -ge_se_sclk_input_vld = 36 -ge_spi_lswave_fifo_full_stall = 37 -ge_spi_hswave_fifo_full_stall = 38 -ge_hs_tif_stall = 39 -ge_csb_spi_bp = 40 -ge_ngg_starving_for_pc_grant = 41 -ge_pa0_csb_eop = 42 -ge_pa1_csb_eop = 43 -ge_ngg_starved_idle = 44 -ge_gsprim_send = 45 -ge_esvert_send = 46 -ge_ngg_starved_after_work = 47 -ge_ngg_subgrp_fifo_stall = 48 -ge_ngg_ord_id_req_stall = 49 -ge_ngg_indx_bus_stall = 50 -ge_hs_stall_tfmm_fifo_full = 51 -ge_gs_issue_rtr_stalled = 52 -ge_gsprim_stalled_esvert = 53 -ge_gsthread_stalled = 54 -ge_te11_stall_prim_funnel = 55 -ge_te11_stall_vert_funnel = 56 -ge_ngg_attr_grp_alloc = 57 -ge_ngg_attr_discard_alloc = 58 -ge_ngg_pc_space_not_avail = 59 -ge_ngg_agm_req_stall = 60 -ge_ngg_spi_esvert_partial_eov = 61 -ge_ngg_spi_gsprim_partial_eov = 62 -ge_spi_gsgrp_valid = 63 -ge_ngg_attr_grp_latency = 64 -ge_ngg_reuse_prim_limit_hit = 65 -ge_ngg_reuse_vert_limit_hit = 66 -ge_te11_con_stall = 67 -ge_te11_compactor_starved = 68 -ge_ngg_stall_tess_off_tess_on = 69 -ge_ngg_stall_tess_on_tess_off = 70 -GE2_SE_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DETECT_ONE' -VGT_DETECT_ONE__enumvalues = { - 0: 'ENABLE_TF1_OPT', - 1: 'DISABLE_TF1_OPT', -} -ENABLE_TF1_OPT = 0 -DISABLE_TF1_OPT = 1 -VGT_DETECT_ONE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DETECT_ZERO' -VGT_DETECT_ZERO__enumvalues = { - 0: 'ENABLE_TF0_OPT', - 1: 'DISABLE_TF0_OPT', -} -ENABLE_TF0_OPT = 0 -DISABLE_TF0_OPT = 1 -VGT_DETECT_ZERO = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DIST_MODE' -VGT_DIST_MODE__enumvalues = { - 0: 'NO_DIST', - 1: 'PATCHES', - 2: 'DONUTS', - 3: 'TRAPEZOIDS', -} -NO_DIST = 0 -PATCHES = 1 -DONUTS = 2 -TRAPEZOIDS = 3 -VGT_DIST_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DI_INDEX_SIZE' -VGT_DI_INDEX_SIZE__enumvalues = { - 0: 'DI_INDEX_SIZE_16_BIT', - 1: 'DI_INDEX_SIZE_32_BIT', - 2: 'DI_INDEX_SIZE_8_BIT', -} -DI_INDEX_SIZE_16_BIT = 0 -DI_INDEX_SIZE_32_BIT = 1 -DI_INDEX_SIZE_8_BIT = 2 -VGT_DI_INDEX_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DI_MAJOR_MODE_SELECT' -VGT_DI_MAJOR_MODE_SELECT__enumvalues = { - 0: 'DI_MAJOR_MODE_0', - 1: 'DI_MAJOR_MODE_1', -} -DI_MAJOR_MODE_0 = 0 -DI_MAJOR_MODE_1 = 1 -VGT_DI_MAJOR_MODE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DI_PRIM_TYPE' -VGT_DI_PRIM_TYPE__enumvalues = { - 0: 'DI_PT_NONE', - 1: 'DI_PT_POINTLIST', - 2: 'DI_PT_LINELIST', - 3: 'DI_PT_LINESTRIP', - 4: 'DI_PT_TRILIST', - 5: 'DI_PT_TRIFAN', - 6: 'DI_PT_TRISTRIP', - 7: 'DI_PT_2D_RECTANGLE', - 8: 'DI_PT_UNUSED_1', - 9: 'DI_PT_PATCH', - 10: 'DI_PT_LINELIST_ADJ', - 11: 'DI_PT_LINESTRIP_ADJ', - 12: 'DI_PT_TRILIST_ADJ', - 13: 'DI_PT_TRISTRIP_ADJ', - 14: 'DI_PT_UNUSED_3', - 15: 'DI_PT_UNUSED_4', - 16: 'DI_PT_UNUSED_5', - 17: 'DI_PT_RECTLIST', - 18: 'DI_PT_LINELOOP', - 19: 'DI_PT_QUADLIST', - 20: 'DI_PT_QUADSTRIP', - 21: 'DI_PT_POLYGON', -} -DI_PT_NONE = 0 -DI_PT_POINTLIST = 1 -DI_PT_LINELIST = 2 -DI_PT_LINESTRIP = 3 -DI_PT_TRILIST = 4 -DI_PT_TRIFAN = 5 -DI_PT_TRISTRIP = 6 -DI_PT_2D_RECTANGLE = 7 -DI_PT_UNUSED_1 = 8 -DI_PT_PATCH = 9 -DI_PT_LINELIST_ADJ = 10 -DI_PT_LINESTRIP_ADJ = 11 -DI_PT_TRILIST_ADJ = 12 -DI_PT_TRISTRIP_ADJ = 13 -DI_PT_UNUSED_3 = 14 -DI_PT_UNUSED_4 = 15 -DI_PT_UNUSED_5 = 16 -DI_PT_RECTLIST = 17 -DI_PT_LINELOOP = 18 -DI_PT_QUADLIST = 19 -DI_PT_QUADSTRIP = 20 -DI_PT_POLYGON = 21 -VGT_DI_PRIM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DI_SOURCE_SELECT' -VGT_DI_SOURCE_SELECT__enumvalues = { - 0: 'DI_SRC_SEL_DMA', - 1: 'DI_SRC_SEL_IMMEDIATE', - 2: 'DI_SRC_SEL_AUTO_INDEX', - 3: 'DI_SRC_SEL_RESERVED', -} -DI_SRC_SEL_DMA = 0 -DI_SRC_SEL_IMMEDIATE = 1 -DI_SRC_SEL_AUTO_INDEX = 2 -DI_SRC_SEL_RESERVED = 3 -VGT_DI_SOURCE_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DMA_BUF_TYPE' -VGT_DMA_BUF_TYPE__enumvalues = { - 0: 'VGT_DMA_BUF_MEM', - 1: 'VGT_DMA_BUF_RING', - 2: 'VGT_DMA_BUF_SETUP', - 3: 'VGT_DMA_PTR_UPDATE', -} -VGT_DMA_BUF_MEM = 0 -VGT_DMA_BUF_RING = 1 -VGT_DMA_BUF_SETUP = 2 -VGT_DMA_PTR_UPDATE = 3 -VGT_DMA_BUF_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_DMA_SWAP_MODE' -VGT_DMA_SWAP_MODE__enumvalues = { - 0: 'VGT_DMA_SWAP_NONE', - 1: 'VGT_DMA_SWAP_16_BIT', - 2: 'VGT_DMA_SWAP_32_BIT', - 3: 'VGT_DMA_SWAP_WORD', -} -VGT_DMA_SWAP_NONE = 0 -VGT_DMA_SWAP_16_BIT = 1 -VGT_DMA_SWAP_32_BIT = 2 -VGT_DMA_SWAP_WORD = 3 -VGT_DMA_SWAP_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_EVENT_TYPE' -VGT_EVENT_TYPE__enumvalues = { - 0: 'Reserved_0x00', - 1: 'SAMPLE_STREAMOUTSTATS1', - 2: 'SAMPLE_STREAMOUTSTATS2', - 3: 'SAMPLE_STREAMOUTSTATS3', - 4: 'CACHE_FLUSH_TS', - 5: 'CONTEXT_DONE', - 6: 'CACHE_FLUSH', - 7: 'CS_PARTIAL_FLUSH', - 8: 'VGT_STREAMOUT_SYNC', - 9: 'Reserved_0x09', - 10: 'VGT_STREAMOUT_RESET', - 11: 'END_OF_PIPE_INCR_DE', - 12: 'END_OF_PIPE_IB_END', - 13: 'RST_PIX_CNT', - 14: 'BREAK_BATCH', - 15: 'VS_PARTIAL_FLUSH', - 16: 'PS_PARTIAL_FLUSH', - 17: 'FLUSH_HS_OUTPUT', - 18: 'FLUSH_DFSM', - 19: 'RESET_TO_LOWEST_VGT', - 20: 'CACHE_FLUSH_AND_INV_TS_EVENT', - 21: 'WAIT_SYNC', - 22: 'CACHE_FLUSH_AND_INV_EVENT', - 23: 'PERFCOUNTER_START', - 24: 'PERFCOUNTER_STOP', - 25: 'PIPELINESTAT_START', - 26: 'PIPELINESTAT_STOP', - 27: 'PERFCOUNTER_SAMPLE', - 28: 'FLUSH_ES_OUTPUT', - 29: 'BIN_CONF_OVERRIDE_CHECK', - 30: 'SAMPLE_PIPELINESTAT', - 31: 'SO_VGTSTREAMOUT_FLUSH', - 32: 'SAMPLE_STREAMOUTSTATS', - 33: 'RESET_VTX_CNT', - 34: 'BLOCK_CONTEXT_DONE', - 35: 'CS_CONTEXT_DONE', - 36: 'VGT_FLUSH', - 37: 'TGID_ROLLOVER', - 38: 'SQ_NON_EVENT', - 39: 'SC_SEND_DB_VPZ', - 40: 'BOTTOM_OF_PIPE_TS', - 41: 'FLUSH_SX_TS', - 42: 'DB_CACHE_FLUSH_AND_INV', - 43: 'FLUSH_AND_INV_DB_DATA_TS', - 44: 'FLUSH_AND_INV_DB_META', - 45: 'FLUSH_AND_INV_CB_DATA_TS', - 46: 'FLUSH_AND_INV_CB_META', - 47: 'CS_DONE', - 48: 'PS_DONE', - 49: 'FLUSH_AND_INV_CB_PIXEL_DATA', - 50: 'SX_CB_RAT_ACK_REQUEST', - 51: 'THREAD_TRACE_START', - 52: 'THREAD_TRACE_STOP', - 53: 'THREAD_TRACE_MARKER', - 54: 'THREAD_TRACE_DRAW', - 55: 'THREAD_TRACE_FINISH', - 56: 'PIXEL_PIPE_STAT_CONTROL', - 57: 'PIXEL_PIPE_STAT_DUMP', - 58: 'PIXEL_PIPE_STAT_RESET', - 59: 'CONTEXT_SUSPEND', - 60: 'OFFCHIP_HS_DEALLOC', - 61: 'ENABLE_NGG_PIPELINE', - 62: 'ENABLE_LEGACY_PIPELINE', - 63: 'DRAW_DONE', -} -Reserved_0x00 = 0 -SAMPLE_STREAMOUTSTATS1 = 1 -SAMPLE_STREAMOUTSTATS2 = 2 -SAMPLE_STREAMOUTSTATS3 = 3 -CACHE_FLUSH_TS = 4 -CONTEXT_DONE = 5 -CACHE_FLUSH = 6 -CS_PARTIAL_FLUSH = 7 -VGT_STREAMOUT_SYNC = 8 -Reserved_0x09 = 9 -VGT_STREAMOUT_RESET = 10 -END_OF_PIPE_INCR_DE = 11 -END_OF_PIPE_IB_END = 12 -RST_PIX_CNT = 13 -BREAK_BATCH = 14 -VS_PARTIAL_FLUSH = 15 -PS_PARTIAL_FLUSH = 16 -FLUSH_HS_OUTPUT = 17 -FLUSH_DFSM = 18 -RESET_TO_LOWEST_VGT = 19 -CACHE_FLUSH_AND_INV_TS_EVENT = 20 -WAIT_SYNC = 21 -CACHE_FLUSH_AND_INV_EVENT = 22 -PERFCOUNTER_START = 23 -PERFCOUNTER_STOP = 24 -PIPELINESTAT_START = 25 -PIPELINESTAT_STOP = 26 -PERFCOUNTER_SAMPLE = 27 -FLUSH_ES_OUTPUT = 28 -BIN_CONF_OVERRIDE_CHECK = 29 -SAMPLE_PIPELINESTAT = 30 -SO_VGTSTREAMOUT_FLUSH = 31 -SAMPLE_STREAMOUTSTATS = 32 -RESET_VTX_CNT = 33 -BLOCK_CONTEXT_DONE = 34 -CS_CONTEXT_DONE = 35 -VGT_FLUSH = 36 -TGID_ROLLOVER = 37 -SQ_NON_EVENT = 38 -SC_SEND_DB_VPZ = 39 -BOTTOM_OF_PIPE_TS = 40 -FLUSH_SX_TS = 41 -DB_CACHE_FLUSH_AND_INV = 42 -FLUSH_AND_INV_DB_DATA_TS = 43 -FLUSH_AND_INV_DB_META = 44 -FLUSH_AND_INV_CB_DATA_TS = 45 -FLUSH_AND_INV_CB_META = 46 -CS_DONE = 47 -PS_DONE = 48 -FLUSH_AND_INV_CB_PIXEL_DATA = 49 -SX_CB_RAT_ACK_REQUEST = 50 -THREAD_TRACE_START = 51 -THREAD_TRACE_STOP = 52 -THREAD_TRACE_MARKER = 53 -THREAD_TRACE_DRAW = 54 -THREAD_TRACE_FINISH = 55 -PIXEL_PIPE_STAT_CONTROL = 56 -PIXEL_PIPE_STAT_DUMP = 57 -PIXEL_PIPE_STAT_RESET = 58 -CONTEXT_SUSPEND = 59 -OFFCHIP_HS_DEALLOC = 60 -ENABLE_NGG_PIPELINE = 61 -ENABLE_LEGACY_PIPELINE = 62 -DRAW_DONE = 63 -VGT_EVENT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GROUP_CONV_SEL' -VGT_GROUP_CONV_SEL__enumvalues = { - 0: 'VGT_GRP_INDEX_16', - 1: 'VGT_GRP_INDEX_32', - 2: 'VGT_GRP_UINT_16', - 3: 'VGT_GRP_UINT_32', - 4: 'VGT_GRP_SINT_16', - 5: 'VGT_GRP_SINT_32', - 6: 'VGT_GRP_FLOAT_32', - 7: 'VGT_GRP_AUTO_PRIM', - 8: 'VGT_GRP_FIX_1_23_TO_FLOAT', -} -VGT_GRP_INDEX_16 = 0 -VGT_GRP_INDEX_32 = 1 -VGT_GRP_UINT_16 = 2 -VGT_GRP_UINT_32 = 3 -VGT_GRP_SINT_16 = 4 -VGT_GRP_SINT_32 = 5 -VGT_GRP_FLOAT_32 = 6 -VGT_GRP_AUTO_PRIM = 7 -VGT_GRP_FIX_1_23_TO_FLOAT = 8 -VGT_GROUP_CONV_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GS_MODE_TYPE' -VGT_GS_MODE_TYPE__enumvalues = { - 0: 'GS_OFF', - 1: 'GS_SCENARIO_A', - 2: 'GS_SCENARIO_B', - 3: 'GS_SCENARIO_G', - 4: 'GS_SCENARIO_C', - 5: 'SPRITE_EN', -} -GS_OFF = 0 -GS_SCENARIO_A = 1 -GS_SCENARIO_B = 2 -GS_SCENARIO_G = 3 -GS_SCENARIO_C = 4 -SPRITE_EN = 5 -VGT_GS_MODE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_GS_OUTPRIM_TYPE' -VGT_GS_OUTPRIM_TYPE__enumvalues = { - 0: 'POINTLIST', - 1: 'LINESTRIP', - 2: 'TRISTRIP', - 3: 'RECT_2D', - 4: 'RECTLIST', -} -POINTLIST = 0 -LINESTRIP = 1 -TRISTRIP = 2 -RECT_2D = 3 -RECTLIST = 4 -VGT_GS_OUTPRIM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_INDEX_TYPE_MODE' -VGT_INDEX_TYPE_MODE__enumvalues = { - 0: 'VGT_INDEX_16', - 1: 'VGT_INDEX_32', - 2: 'VGT_INDEX_8', -} -VGT_INDEX_16 = 0 -VGT_INDEX_32 = 1 -VGT_INDEX_8 = 2 -VGT_INDEX_TYPE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_OUTPATH_SELECT' -VGT_OUTPATH_SELECT__enumvalues = { - 0: 'VGT_OUTPATH_VTX_REUSE', - 1: 'VGT_OUTPATH_GS_BLOCK', - 2: 'VGT_OUTPATH_HS_BLOCK', - 3: 'VGT_OUTPATH_PRIM_GEN', - 4: 'VGT_OUTPATH_TE_PRIM_GEN', - 5: 'VGT_OUTPATH_TE_GS_BLOCK', - 6: 'VGT_OUTPATH_TE_OUTPUT', -} -VGT_OUTPATH_VTX_REUSE = 0 -VGT_OUTPATH_GS_BLOCK = 1 -VGT_OUTPATH_HS_BLOCK = 2 -VGT_OUTPATH_PRIM_GEN = 3 -VGT_OUTPATH_TE_PRIM_GEN = 4 -VGT_OUTPATH_TE_GS_BLOCK = 5 -VGT_OUTPATH_TE_OUTPUT = 6 -VGT_OUTPATH_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_OUT_PRIM_TYPE' -VGT_OUT_PRIM_TYPE__enumvalues = { - 0: 'VGT_OUT_POINT', - 1: 'VGT_OUT_LINE', - 2: 'VGT_OUT_TRI', - 3: 'VGT_OUT_RECT_V0', - 4: 'VGT_OUT_RECT_V1', - 5: 'VGT_OUT_RECT_V2', - 6: 'VGT_OUT_RECT_V3', - 7: 'VGT_OUT_2D_RECT', - 8: 'VGT_TE_QUAD', - 9: 'VGT_TE_PRIM_INDEX_LINE', - 10: 'VGT_TE_PRIM_INDEX_TRI', - 11: 'VGT_TE_PRIM_INDEX_QUAD', - 12: 'VGT_OUT_LINE_ADJ', - 13: 'VGT_OUT_TRI_ADJ', - 14: 'VGT_OUT_PATCH', -} -VGT_OUT_POINT = 0 -VGT_OUT_LINE = 1 -VGT_OUT_TRI = 2 -VGT_OUT_RECT_V0 = 3 -VGT_OUT_RECT_V1 = 4 -VGT_OUT_RECT_V2 = 5 -VGT_OUT_RECT_V3 = 6 -VGT_OUT_2D_RECT = 7 -VGT_TE_QUAD = 8 -VGT_TE_PRIM_INDEX_LINE = 9 -VGT_TE_PRIM_INDEX_TRI = 10 -VGT_TE_PRIM_INDEX_QUAD = 11 -VGT_OUT_LINE_ADJ = 12 -VGT_OUT_TRI_ADJ = 13 -VGT_OUT_PATCH = 14 -VGT_OUT_PRIM_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_RDREQ_POLICY' -VGT_RDREQ_POLICY__enumvalues = { - 0: 'VGT_POLICY_LRU', - 1: 'VGT_POLICY_STREAM', - 2: 'VGT_POLICY_BYPASS', -} -VGT_POLICY_LRU = 0 -VGT_POLICY_STREAM = 1 -VGT_POLICY_BYPASS = 2 -VGT_RDREQ_POLICY = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_ES_EN' -VGT_STAGES_ES_EN__enumvalues = { - 0: 'ES_STAGE_OFF', - 1: 'ES_STAGE_DS', - 2: 'ES_STAGE_REAL', - 3: 'RESERVED_ES', -} -ES_STAGE_OFF = 0 -ES_STAGE_DS = 1 -ES_STAGE_REAL = 2 -RESERVED_ES = 3 -VGT_STAGES_ES_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_GS_EN' -VGT_STAGES_GS_EN__enumvalues = { - 0: 'GS_STAGE_OFF', - 1: 'GS_STAGE_ON', -} -GS_STAGE_OFF = 0 -GS_STAGE_ON = 1 -VGT_STAGES_GS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_HS_EN' -VGT_STAGES_HS_EN__enumvalues = { - 0: 'HS_STAGE_OFF', - 1: 'HS_STAGE_ON', -} -HS_STAGE_OFF = 0 -HS_STAGE_ON = 1 -VGT_STAGES_HS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_LS_EN' -VGT_STAGES_LS_EN__enumvalues = { - 0: 'LS_STAGE_OFF', - 1: 'LS_STAGE_ON', - 2: 'CS_STAGE_ON', - 3: 'RESERVED_LS', -} -LS_STAGE_OFF = 0 -LS_STAGE_ON = 1 -CS_STAGE_ON = 2 -RESERVED_LS = 3 -VGT_STAGES_LS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_STAGES_VS_EN' -VGT_STAGES_VS_EN__enumvalues = { - 0: 'VS_STAGE_REAL', - 1: 'VS_STAGE_DS', - 2: 'VS_STAGE_COPY_SHADER', - 3: 'RESERVED_VS', -} -VS_STAGE_REAL = 0 -VS_STAGE_DS = 1 -VS_STAGE_COPY_SHADER = 2 -RESERVED_VS = 3 -VGT_STAGES_VS_EN = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_TESS_PARTITION' -VGT_TESS_PARTITION__enumvalues = { - 0: 'PART_INTEGER', - 1: 'PART_POW2', - 2: 'PART_FRAC_ODD', - 3: 'PART_FRAC_EVEN', -} -PART_INTEGER = 0 -PART_POW2 = 1 -PART_FRAC_ODD = 2 -PART_FRAC_EVEN = 3 -VGT_TESS_PARTITION = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_TESS_TOPOLOGY' -VGT_TESS_TOPOLOGY__enumvalues = { - 0: 'OUTPUT_POINT', - 1: 'OUTPUT_LINE', - 2: 'OUTPUT_TRIANGLE_CW', - 3: 'OUTPUT_TRIANGLE_CCW', -} -OUTPUT_POINT = 0 -OUTPUT_LINE = 1 -OUTPUT_TRIANGLE_CW = 2 -OUTPUT_TRIANGLE_CCW = 3 -VGT_TESS_TOPOLOGY = ctypes.c_uint32 # enum - -# values for enumeration 'VGT_TESS_TYPE' -VGT_TESS_TYPE__enumvalues = { - 0: 'TESS_ISOLINE', - 1: 'TESS_TRIANGLE', - 2: 'TESS_QUAD', -} -TESS_ISOLINE = 0 -TESS_TRIANGLE = 1 -TESS_QUAD = 2 -VGT_TESS_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'WD_IA_DRAW_REG_XFER' -WD_IA_DRAW_REG_XFER__enumvalues = { - 0: 'WD_IA_DRAW_REG_XFER_IA_MULTI_VGT_PARAM', - 1: 'WD_IA_DRAW_REG_XFER_VGT_MULTI_PRIM_IB_RESET_EN', - 2: 'WD_IA_DRAW_REG_XFER_VGT_INSTANCE_BASE_ID', - 3: 'WD_IA_DRAW_REG_XFER_GE_CNTL', - 4: 'WD_IA_DRAW_REG_XFER_GE_USER_VGPR_EN', - 5: 'WD_IA_DRAW_REG_XFER_FL_MS_WG_DIM', - 6: 'WD_IA_DRAW_REG_XFER_FL_MS_WG_DIM_1', - 7: 'WD_IA_DRAW_REG_XFER_FL_MS_TG_SIZE', - 8: 'WD_IA_DRAW_REG_XFER_FL_MS_EXP_ALLOC', -} -WD_IA_DRAW_REG_XFER_IA_MULTI_VGT_PARAM = 0 -WD_IA_DRAW_REG_XFER_VGT_MULTI_PRIM_IB_RESET_EN = 1 -WD_IA_DRAW_REG_XFER_VGT_INSTANCE_BASE_ID = 2 -WD_IA_DRAW_REG_XFER_GE_CNTL = 3 -WD_IA_DRAW_REG_XFER_GE_USER_VGPR_EN = 4 -WD_IA_DRAW_REG_XFER_FL_MS_WG_DIM = 5 -WD_IA_DRAW_REG_XFER_FL_MS_WG_DIM_1 = 6 -WD_IA_DRAW_REG_XFER_FL_MS_TG_SIZE = 7 -WD_IA_DRAW_REG_XFER_FL_MS_EXP_ALLOC = 8 -WD_IA_DRAW_REG_XFER = ctypes.c_uint32 # enum - -# values for enumeration 'WD_IA_DRAW_SOURCE' -WD_IA_DRAW_SOURCE__enumvalues = { - 0: 'WD_IA_DRAW_SOURCE_DMA', - 1: 'WD_IA_DRAW_SOURCE_IMMD', - 2: 'WD_IA_DRAW_SOURCE_AUTO', - 3: 'WD_IA_DRAW_SOURCE_OPAQ', -} -WD_IA_DRAW_SOURCE_DMA = 0 -WD_IA_DRAW_SOURCE_IMMD = 1 -WD_IA_DRAW_SOURCE_AUTO = 2 -WD_IA_DRAW_SOURCE_OPAQ = 3 -WD_IA_DRAW_SOURCE = ctypes.c_uint32 # enum - -# values for enumeration 'WD_IA_DRAW_TYPE' -WD_IA_DRAW_TYPE__enumvalues = { - 0: 'WD_IA_DRAW_TYPE_DI_MM0', - 1: 'WD_IA_DRAW_TYPE_REG_XFER', - 2: 'WD_IA_DRAW_TYPE_EVENT_INIT', - 3: 'WD_IA_DRAW_TYPE_EVENT_ADDR', - 4: 'WD_IA_DRAW_TYPE_MIN_INDX', - 5: 'WD_IA_DRAW_TYPE_MAX_INDX', - 6: 'WD_IA_DRAW_TYPE_INDX_OFF', - 7: 'WD_IA_DRAW_TYPE_IMM_DATA', -} -WD_IA_DRAW_TYPE_DI_MM0 = 0 -WD_IA_DRAW_TYPE_REG_XFER = 1 -WD_IA_DRAW_TYPE_EVENT_INIT = 2 -WD_IA_DRAW_TYPE_EVENT_ADDR = 3 -WD_IA_DRAW_TYPE_MIN_INDX = 4 -WD_IA_DRAW_TYPE_MAX_INDX = 5 -WD_IA_DRAW_TYPE_INDX_OFF = 6 -WD_IA_DRAW_TYPE_IMM_DATA = 7 -WD_IA_DRAW_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'GB_EDC_DED_MODE' -GB_EDC_DED_MODE__enumvalues = { - 0: 'GB_EDC_DED_MODE_LOG', - 1: 'GB_EDC_DED_MODE_HALT', - 2: 'GB_EDC_DED_MODE_INT_HALT', -} -GB_EDC_DED_MODE_LOG = 0 -GB_EDC_DED_MODE_HALT = 1 -GB_EDC_DED_MODE_INT_HALT = 2 -GB_EDC_DED_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CHA_PERF_SEL' -CHA_PERF_SEL__enumvalues = { - 0: 'CHA_PERF_SEL_BUSY', - 1: 'CHA_PERF_SEL_STALL_CHC0', - 2: 'CHA_PERF_SEL_STALL_CHC1', - 3: 'CHA_PERF_SEL_STALL_CHC2', - 4: 'CHA_PERF_SEL_STALL_CHC3', - 5: 'CHA_PERF_SEL_STALL_CHC4', - 6: 'CHA_PERF_SEL_STALL_CHC5', - 7: 'CHA_PERF_SEL_REQUEST_CHC0', - 8: 'CHA_PERF_SEL_REQUEST_CHC1', - 9: 'CHA_PERF_SEL_REQUEST_CHC2', - 10: 'CHA_PERF_SEL_REQUEST_CHC3', - 11: 'CHA_PERF_SEL_REQUEST_CHC4', - 12: 'CHA_PERF_SEL_MEM_32B_WDS_CHC0', - 13: 'CHA_PERF_SEL_MEM_32B_WDS_CHC1', - 14: 'CHA_PERF_SEL_MEM_32B_WDS_CHC2', - 15: 'CHA_PERF_SEL_MEM_32B_WDS_CHC3', - 16: 'CHA_PERF_SEL_MEM_32B_WDS_CHC4', - 17: 'CHA_PERF_SEL_IO_32B_WDS_CHC0', - 18: 'CHA_PERF_SEL_IO_32B_WDS_CHC1', - 19: 'CHA_PERF_SEL_IO_32B_WDS_CHC2', - 20: 'CHA_PERF_SEL_IO_32B_WDS_CHC3', - 21: 'CHA_PERF_SEL_IO_32B_WDS_CHC4', - 22: 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC0', - 23: 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC1', - 24: 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC2', - 25: 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC3', - 26: 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC4', - 27: 'CHA_PERF_SEL_IO_BURST_COUNT_CHC0', - 28: 'CHA_PERF_SEL_IO_BURST_COUNT_CHC1', - 29: 'CHA_PERF_SEL_IO_BURST_COUNT_CHC2', - 30: 'CHA_PERF_SEL_IO_BURST_COUNT_CHC3', - 31: 'CHA_PERF_SEL_IO_BURST_COUNT_CHC4', - 32: 'CHA_PERF_SEL_ARB_REQUESTS', - 33: 'CHA_PERF_SEL_REQ_INFLIGHT_LEVEL', - 34: 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC0', - 35: 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC1', - 36: 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC2', - 37: 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC3', - 38: 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC4', - 39: 'CHA_PERF_SEL_CYCLE', -} -CHA_PERF_SEL_BUSY = 0 -CHA_PERF_SEL_STALL_CHC0 = 1 -CHA_PERF_SEL_STALL_CHC1 = 2 -CHA_PERF_SEL_STALL_CHC2 = 3 -CHA_PERF_SEL_STALL_CHC3 = 4 -CHA_PERF_SEL_STALL_CHC4 = 5 -CHA_PERF_SEL_STALL_CHC5 = 6 -CHA_PERF_SEL_REQUEST_CHC0 = 7 -CHA_PERF_SEL_REQUEST_CHC1 = 8 -CHA_PERF_SEL_REQUEST_CHC2 = 9 -CHA_PERF_SEL_REQUEST_CHC3 = 10 -CHA_PERF_SEL_REQUEST_CHC4 = 11 -CHA_PERF_SEL_MEM_32B_WDS_CHC0 = 12 -CHA_PERF_SEL_MEM_32B_WDS_CHC1 = 13 -CHA_PERF_SEL_MEM_32B_WDS_CHC2 = 14 -CHA_PERF_SEL_MEM_32B_WDS_CHC3 = 15 -CHA_PERF_SEL_MEM_32B_WDS_CHC4 = 16 -CHA_PERF_SEL_IO_32B_WDS_CHC0 = 17 -CHA_PERF_SEL_IO_32B_WDS_CHC1 = 18 -CHA_PERF_SEL_IO_32B_WDS_CHC2 = 19 -CHA_PERF_SEL_IO_32B_WDS_CHC3 = 20 -CHA_PERF_SEL_IO_32B_WDS_CHC4 = 21 -CHA_PERF_SEL_MEM_BURST_COUNT_CHC0 = 22 -CHA_PERF_SEL_MEM_BURST_COUNT_CHC1 = 23 -CHA_PERF_SEL_MEM_BURST_COUNT_CHC2 = 24 -CHA_PERF_SEL_MEM_BURST_COUNT_CHC3 = 25 -CHA_PERF_SEL_MEM_BURST_COUNT_CHC4 = 26 -CHA_PERF_SEL_IO_BURST_COUNT_CHC0 = 27 -CHA_PERF_SEL_IO_BURST_COUNT_CHC1 = 28 -CHA_PERF_SEL_IO_BURST_COUNT_CHC2 = 29 -CHA_PERF_SEL_IO_BURST_COUNT_CHC3 = 30 -CHA_PERF_SEL_IO_BURST_COUNT_CHC4 = 31 -CHA_PERF_SEL_ARB_REQUESTS = 32 -CHA_PERF_SEL_REQ_INFLIGHT_LEVEL = 33 -CHA_PERF_SEL_STALL_RET_CONFLICT_CHC0 = 34 -CHA_PERF_SEL_STALL_RET_CONFLICT_CHC1 = 35 -CHA_PERF_SEL_STALL_RET_CONFLICT_CHC2 = 36 -CHA_PERF_SEL_STALL_RET_CONFLICT_CHC3 = 37 -CHA_PERF_SEL_STALL_RET_CONFLICT_CHC4 = 38 -CHA_PERF_SEL_CYCLE = 39 -CHA_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CHCG_PERF_SEL' -CHCG_PERF_SEL__enumvalues = { - 0: 'CHCG_PERF_SEL_CYCLE', - 1: 'CHCG_PERF_SEL_BUSY', - 2: 'CHCG_PERF_SEL_STARVE', - 3: 'CHCG_PERF_SEL_ARB_RET_LEVEL', - 4: 'CHCG_PERF_SEL_GL2_REQ_READ_LATENCY', - 5: 'CHCG_PERF_SEL_GL2_REQ_WRITE_LATENCY', - 6: 'CHCG_PERF_SEL_REQ', - 7: 'CHCG_PERF_SEL_REQ_ATOMIC_WITH_RET', - 8: 'CHCG_PERF_SEL_REQ_ATOMIC_WITHOUT_RET', - 9: 'CHCG_PERF_SEL_REQ_NOP_ACK', - 10: 'CHCG_PERF_SEL_REQ_NOP_RTN0', - 11: 'CHCG_PERF_SEL_REQ_READ', - 12: 'CHCG_PERF_SEL_REQ_READ_128B', - 13: 'CHCG_PERF_SEL_REQ_READ_32B', - 14: 'CHCG_PERF_SEL_REQ_READ_64B', - 15: 'CHCG_PERF_SEL_REQ_WRITE', - 16: 'CHCG_PERF_SEL_REQ_WRITE_32B', - 17: 'CHCG_PERF_SEL_REQ_WRITE_64B', - 18: 'CHCG_PERF_SEL_STALL_GUS_GL1', - 19: 'CHCG_PERF_SEL_STALL_BUFFER_FULL', - 20: 'CHCG_PERF_SEL_REQ_CLIENT0', - 21: 'CHCG_PERF_SEL_REQ_CLIENT1', - 22: 'CHCG_PERF_SEL_REQ_CLIENT2', - 23: 'CHCG_PERF_SEL_REQ_CLIENT3', - 24: 'CHCG_PERF_SEL_REQ_CLIENT4', - 25: 'CHCG_PERF_SEL_REQ_CLIENT5', - 26: 'CHCG_PERF_SEL_REQ_CLIENT6', - 27: 'CHCG_PERF_SEL_REQ_CLIENT7', - 28: 'CHCG_PERF_SEL_REQ_CLIENT8', - 29: 'CHCG_PERF_SEL_REQ_CLIENT9', - 30: 'CHCG_PERF_SEL_REQ_CLIENT10', - 31: 'CHCG_PERF_SEL_REQ_CLIENT11', - 32: 'CHCG_PERF_SEL_REQ_CLIENT12', - 33: 'CHCG_PERF_SEL_REQ_CLIENT13', - 34: 'CHCG_PERF_SEL_REQ_CLIENT14', - 35: 'CHCG_PERF_SEL_REQ_CLIENT15', - 36: 'CHCG_PERF_SEL_REQ_CLIENT16', - 37: 'CHCG_PERF_SEL_REQ_CLIENT17', - 38: 'CHCG_PERF_SEL_REQ_CLIENT18', - 39: 'CHCG_PERF_SEL_REQ_CLIENT19', - 40: 'CHCG_PERF_SEL_REQ_CLIENT20', - 41: 'CHCG_PERF_SEL_REQ_CLIENT21', - 42: 'CHCG_PERF_SEL_REQ_CLIENT22', - 43: 'CHCG_PERF_SEL_REQ_CLIENT23', -} -CHCG_PERF_SEL_CYCLE = 0 -CHCG_PERF_SEL_BUSY = 1 -CHCG_PERF_SEL_STARVE = 2 -CHCG_PERF_SEL_ARB_RET_LEVEL = 3 -CHCG_PERF_SEL_GL2_REQ_READ_LATENCY = 4 -CHCG_PERF_SEL_GL2_REQ_WRITE_LATENCY = 5 -CHCG_PERF_SEL_REQ = 6 -CHCG_PERF_SEL_REQ_ATOMIC_WITH_RET = 7 -CHCG_PERF_SEL_REQ_ATOMIC_WITHOUT_RET = 8 -CHCG_PERF_SEL_REQ_NOP_ACK = 9 -CHCG_PERF_SEL_REQ_NOP_RTN0 = 10 -CHCG_PERF_SEL_REQ_READ = 11 -CHCG_PERF_SEL_REQ_READ_128B = 12 -CHCG_PERF_SEL_REQ_READ_32B = 13 -CHCG_PERF_SEL_REQ_READ_64B = 14 -CHCG_PERF_SEL_REQ_WRITE = 15 -CHCG_PERF_SEL_REQ_WRITE_32B = 16 -CHCG_PERF_SEL_REQ_WRITE_64B = 17 -CHCG_PERF_SEL_STALL_GUS_GL1 = 18 -CHCG_PERF_SEL_STALL_BUFFER_FULL = 19 -CHCG_PERF_SEL_REQ_CLIENT0 = 20 -CHCG_PERF_SEL_REQ_CLIENT1 = 21 -CHCG_PERF_SEL_REQ_CLIENT2 = 22 -CHCG_PERF_SEL_REQ_CLIENT3 = 23 -CHCG_PERF_SEL_REQ_CLIENT4 = 24 -CHCG_PERF_SEL_REQ_CLIENT5 = 25 -CHCG_PERF_SEL_REQ_CLIENT6 = 26 -CHCG_PERF_SEL_REQ_CLIENT7 = 27 -CHCG_PERF_SEL_REQ_CLIENT8 = 28 -CHCG_PERF_SEL_REQ_CLIENT9 = 29 -CHCG_PERF_SEL_REQ_CLIENT10 = 30 -CHCG_PERF_SEL_REQ_CLIENT11 = 31 -CHCG_PERF_SEL_REQ_CLIENT12 = 32 -CHCG_PERF_SEL_REQ_CLIENT13 = 33 -CHCG_PERF_SEL_REQ_CLIENT14 = 34 -CHCG_PERF_SEL_REQ_CLIENT15 = 35 -CHCG_PERF_SEL_REQ_CLIENT16 = 36 -CHCG_PERF_SEL_REQ_CLIENT17 = 37 -CHCG_PERF_SEL_REQ_CLIENT18 = 38 -CHCG_PERF_SEL_REQ_CLIENT19 = 39 -CHCG_PERF_SEL_REQ_CLIENT20 = 40 -CHCG_PERF_SEL_REQ_CLIENT21 = 41 -CHCG_PERF_SEL_REQ_CLIENT22 = 42 -CHCG_PERF_SEL_REQ_CLIENT23 = 43 -CHCG_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CHC_PERF_SEL' -CHC_PERF_SEL__enumvalues = { - 0: 'CHC_PERF_SEL_CYCLE', - 1: 'CHC_PERF_SEL_BUSY', - 2: 'CHC_PERF_SEL_STARVE', - 3: 'CHC_PERF_SEL_ARB_RET_LEVEL', - 4: 'CHC_PERF_SEL_GL2_REQ_READ_LATENCY', - 5: 'CHC_PERF_SEL_GL2_REQ_WRITE_LATENCY', - 6: 'CHC_PERF_SEL_REQ', - 7: 'CHC_PERF_SEL_REQ_ATOMIC_WITH_RET', - 8: 'CHC_PERF_SEL_REQ_ATOMIC_WITHOUT_RET', - 9: 'CHC_PERF_SEL_REQ_NOP_ACK', - 10: 'CHC_PERF_SEL_REQ_NOP_RTN0', - 11: 'CHC_PERF_SEL_REQ_READ', - 12: 'CHC_PERF_SEL_REQ_READ_128B', - 13: 'CHC_PERF_SEL_REQ_READ_32B', - 14: 'CHC_PERF_SEL_REQ_READ_64B', - 15: 'CHC_PERF_SEL_REQ_WRITE', - 16: 'CHC_PERF_SEL_REQ_WRITE_32B', - 17: 'CHC_PERF_SEL_REQ_WRITE_64B', - 18: 'CHC_PERF_SEL_STALL_GL2_GL1', - 19: 'CHC_PERF_SEL_STALL_BUFFER_FULL', - 20: 'CHC_PERF_SEL_REQ_CLIENT0', - 21: 'CHC_PERF_SEL_REQ_CLIENT1', - 22: 'CHC_PERF_SEL_REQ_CLIENT2', - 23: 'CHC_PERF_SEL_REQ_CLIENT3', - 24: 'CHC_PERF_SEL_REQ_CLIENT4', - 25: 'CHC_PERF_SEL_REQ_CLIENT5', - 26: 'CHC_PERF_SEL_REQ_CLIENT6', - 27: 'CHC_PERF_SEL_REQ_CLIENT7', - 28: 'CHC_PERF_SEL_REQ_CLIENT8', - 29: 'CHC_PERF_SEL_REQ_CLIENT9', - 30: 'CHC_PERF_SEL_REQ_CLIENT10', - 31: 'CHC_PERF_SEL_REQ_CLIENT11', - 32: 'CHC_PERF_SEL_REQ_CLIENT12', - 33: 'CHC_PERF_SEL_REQ_CLIENT13', - 34: 'CHC_PERF_SEL_REQ_CLIENT14', - 35: 'CHC_PERF_SEL_REQ_CLIENT15', - 36: 'CHC_PERF_SEL_REQ_CLIENT16', - 37: 'CHC_PERF_SEL_REQ_CLIENT17', - 38: 'CHC_PERF_SEL_REQ_CLIENT18', - 39: 'CHC_PERF_SEL_REQ_CLIENT19', - 40: 'CHC_PERF_SEL_REQ_CLIENT20', - 41: 'CHC_PERF_SEL_REQ_CLIENT21', - 42: 'CHC_PERF_SEL_REQ_CLIENT22', - 43: 'CHC_PERF_SEL_REQ_CLIENT23', -} -CHC_PERF_SEL_CYCLE = 0 -CHC_PERF_SEL_BUSY = 1 -CHC_PERF_SEL_STARVE = 2 -CHC_PERF_SEL_ARB_RET_LEVEL = 3 -CHC_PERF_SEL_GL2_REQ_READ_LATENCY = 4 -CHC_PERF_SEL_GL2_REQ_WRITE_LATENCY = 5 -CHC_PERF_SEL_REQ = 6 -CHC_PERF_SEL_REQ_ATOMIC_WITH_RET = 7 -CHC_PERF_SEL_REQ_ATOMIC_WITHOUT_RET = 8 -CHC_PERF_SEL_REQ_NOP_ACK = 9 -CHC_PERF_SEL_REQ_NOP_RTN0 = 10 -CHC_PERF_SEL_REQ_READ = 11 -CHC_PERF_SEL_REQ_READ_128B = 12 -CHC_PERF_SEL_REQ_READ_32B = 13 -CHC_PERF_SEL_REQ_READ_64B = 14 -CHC_PERF_SEL_REQ_WRITE = 15 -CHC_PERF_SEL_REQ_WRITE_32B = 16 -CHC_PERF_SEL_REQ_WRITE_64B = 17 -CHC_PERF_SEL_STALL_GL2_GL1 = 18 -CHC_PERF_SEL_STALL_BUFFER_FULL = 19 -CHC_PERF_SEL_REQ_CLIENT0 = 20 -CHC_PERF_SEL_REQ_CLIENT1 = 21 -CHC_PERF_SEL_REQ_CLIENT2 = 22 -CHC_PERF_SEL_REQ_CLIENT3 = 23 -CHC_PERF_SEL_REQ_CLIENT4 = 24 -CHC_PERF_SEL_REQ_CLIENT5 = 25 -CHC_PERF_SEL_REQ_CLIENT6 = 26 -CHC_PERF_SEL_REQ_CLIENT7 = 27 -CHC_PERF_SEL_REQ_CLIENT8 = 28 -CHC_PERF_SEL_REQ_CLIENT9 = 29 -CHC_PERF_SEL_REQ_CLIENT10 = 30 -CHC_PERF_SEL_REQ_CLIENT11 = 31 -CHC_PERF_SEL_REQ_CLIENT12 = 32 -CHC_PERF_SEL_REQ_CLIENT13 = 33 -CHC_PERF_SEL_REQ_CLIENT14 = 34 -CHC_PERF_SEL_REQ_CLIENT15 = 35 -CHC_PERF_SEL_REQ_CLIENT16 = 36 -CHC_PERF_SEL_REQ_CLIENT17 = 37 -CHC_PERF_SEL_REQ_CLIENT18 = 38 -CHC_PERF_SEL_REQ_CLIENT19 = 39 -CHC_PERF_SEL_REQ_CLIENT20 = 40 -CHC_PERF_SEL_REQ_CLIENT21 = 41 -CHC_PERF_SEL_REQ_CLIENT22 = 42 -CHC_PERF_SEL_REQ_CLIENT23 = 43 -CHC_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GL1A_PERF_SEL' -GL1A_PERF_SEL__enumvalues = { - 0: 'GL1A_PERF_SEL_BUSY', - 1: 'GL1A_PERF_SEL_STALL_GL1C0', - 2: 'GL1A_PERF_SEL_STALL_GL1C1', - 3: 'GL1A_PERF_SEL_STALL_GL1C2', - 4: 'GL1A_PERF_SEL_STALL_GL1C3', - 5: 'GL1A_PERF_SEL_REQUEST_GL1C0', - 6: 'GL1A_PERF_SEL_REQUEST_GL1C1', - 7: 'GL1A_PERF_SEL_REQUEST_GL1C2', - 8: 'GL1A_PERF_SEL_REQUEST_GL1C3', - 9: 'GL1A_PERF_SEL_WDS_32B_GL1C0', - 10: 'GL1A_PERF_SEL_WDS_32B_GL1C1', - 11: 'GL1A_PERF_SEL_WDS_32B_GL1C2', - 12: 'GL1A_PERF_SEL_WDS_32B_GL1C3', - 13: 'GL1A_PERF_SEL_BURST_COUNT_GL1C0', - 14: 'GL1A_PERF_SEL_BURST_COUNT_GL1C1', - 15: 'GL1A_PERF_SEL_BURST_COUNT_GL1C2', - 16: 'GL1A_PERF_SEL_BURST_COUNT_GL1C3', - 17: 'GL1A_PERF_SEL_ARB_REQUESTS', - 18: 'GL1A_PERF_SEL_REQ_INFLIGHT_LEVEL', - 19: 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C0', - 20: 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C1', - 21: 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C2', - 22: 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C3', - 23: 'GL1A_PERF_SEL_CYCLE', -} -GL1A_PERF_SEL_BUSY = 0 -GL1A_PERF_SEL_STALL_GL1C0 = 1 -GL1A_PERF_SEL_STALL_GL1C1 = 2 -GL1A_PERF_SEL_STALL_GL1C2 = 3 -GL1A_PERF_SEL_STALL_GL1C3 = 4 -GL1A_PERF_SEL_REQUEST_GL1C0 = 5 -GL1A_PERF_SEL_REQUEST_GL1C1 = 6 -GL1A_PERF_SEL_REQUEST_GL1C2 = 7 -GL1A_PERF_SEL_REQUEST_GL1C3 = 8 -GL1A_PERF_SEL_WDS_32B_GL1C0 = 9 -GL1A_PERF_SEL_WDS_32B_GL1C1 = 10 -GL1A_PERF_SEL_WDS_32B_GL1C2 = 11 -GL1A_PERF_SEL_WDS_32B_GL1C3 = 12 -GL1A_PERF_SEL_BURST_COUNT_GL1C0 = 13 -GL1A_PERF_SEL_BURST_COUNT_GL1C1 = 14 -GL1A_PERF_SEL_BURST_COUNT_GL1C2 = 15 -GL1A_PERF_SEL_BURST_COUNT_GL1C3 = 16 -GL1A_PERF_SEL_ARB_REQUESTS = 17 -GL1A_PERF_SEL_REQ_INFLIGHT_LEVEL = 18 -GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C0 = 19 -GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C1 = 20 -GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C2 = 21 -GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C3 = 22 -GL1A_PERF_SEL_CYCLE = 23 -GL1A_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GL1C_PERF_SEL' -GL1C_PERF_SEL__enumvalues = { - 0: 'GL1C_PERF_SEL_CYCLE', - 1: 'GL1C_PERF_SEL_BUSY', - 2: 'GL1C_PERF_SEL_STARVE', - 3: 'GL1C_PERF_SEL_ARB_RET_LEVEL', - 4: 'GL1C_PERF_SEL_GL2_REQ_READ', - 5: 'GL1C_PERF_SEL_GL2_REQ_READ_128B', - 6: 'GL1C_PERF_SEL_GL2_REQ_READ_32B', - 7: 'GL1C_PERF_SEL_GL2_REQ_READ_64B', - 8: 'GL1C_PERF_SEL_GL2_REQ_READ_LATENCY', - 9: 'GL1C_PERF_SEL_GL2_REQ_WRITE', - 10: 'GL1C_PERF_SEL_GL2_REQ_WRITE_32B', - 11: 'GL1C_PERF_SEL_GL2_REQ_WRITE_64B', - 12: 'GL1C_PERF_SEL_GL2_REQ_WRITE_LATENCY', - 13: 'GL1C_PERF_SEL_GL2_REQ_PREFETCH', - 14: 'GL1C_PERF_SEL_REQ', - 15: 'GL1C_PERF_SEL_REQ_ATOMIC_WITH_RET', - 16: 'GL1C_PERF_SEL_REQ_ATOMIC_WITHOUT_RET', - 17: 'GL1C_PERF_SEL_REQ_SHADER_INV', - 18: 'GL1C_PERF_SEL_REQ_MISS', - 19: 'GL1C_PERF_SEL_REQ_NOP_ACK', - 20: 'GL1C_PERF_SEL_REQ_NOP_RTN0', - 21: 'GL1C_PERF_SEL_REQ_READ', - 22: 'GL1C_PERF_SEL_REQ_READ_128B', - 23: 'GL1C_PERF_SEL_REQ_READ_32B', - 24: 'GL1C_PERF_SEL_REQ_READ_64B', - 25: 'GL1C_PERF_SEL_REQ_READ_POLICY_HIT_EVICT', - 26: 'GL1C_PERF_SEL_REQ_READ_POLICY_HIT_LRU', - 27: 'GL1C_PERF_SEL_REQ_READ_POLICY_MISS_EVICT', - 28: 'GL1C_PERF_SEL_REQ_WRITE', - 29: 'GL1C_PERF_SEL_REQ_WRITE_32B', - 30: 'GL1C_PERF_SEL_REQ_WRITE_64B', - 31: 'GL1C_PERF_SEL_STALL_GL2_GL1', - 32: 'GL1C_PERF_SEL_STALL_LFIFO_FULL', - 33: 'GL1C_PERF_SEL_STALL_NO_AVAILABLE_ACK_ALLOC', - 34: 'GL1C_PERF_SEL_STALL_NOTHING_REPLACEABLE', - 35: 'GL1C_PERF_SEL_STALL_GCR_INV', - 36: 'GL1C_PERF_SEL_STALL_VM', - 37: 'GL1C_PERF_SEL_REQ_CLIENT0', - 38: 'GL1C_PERF_SEL_REQ_CLIENT1', - 39: 'GL1C_PERF_SEL_REQ_CLIENT2', - 40: 'GL1C_PERF_SEL_REQ_CLIENT3', - 41: 'GL1C_PERF_SEL_REQ_CLIENT4', - 42: 'GL1C_PERF_SEL_REQ_CLIENT5', - 43: 'GL1C_PERF_SEL_REQ_CLIENT6', - 44: 'GL1C_PERF_SEL_REQ_CLIENT7', - 45: 'GL1C_PERF_SEL_REQ_CLIENT8', - 46: 'GL1C_PERF_SEL_REQ_CLIENT9', - 47: 'GL1C_PERF_SEL_REQ_CLIENT10', - 48: 'GL1C_PERF_SEL_REQ_CLIENT11', - 49: 'GL1C_PERF_SEL_REQ_CLIENT12', - 50: 'GL1C_PERF_SEL_REQ_CLIENT13', - 51: 'GL1C_PERF_SEL_REQ_CLIENT14', - 52: 'GL1C_PERF_SEL_REQ_CLIENT15', - 53: 'GL1C_PERF_SEL_REQ_CLIENT16', - 54: 'GL1C_PERF_SEL_REQ_CLIENT17', - 55: 'GL1C_PERF_SEL_REQ_CLIENT18', - 56: 'GL1C_PERF_SEL_REQ_CLIENT19', - 57: 'GL1C_PERF_SEL_REQ_CLIENT20', - 58: 'GL1C_PERF_SEL_REQ_CLIENT21', - 59: 'GL1C_PERF_SEL_REQ_CLIENT22', - 60: 'GL1C_PERF_SEL_REQ_CLIENT23', - 61: 'GL1C_PERF_SEL_REQ_CLIENT24', - 62: 'GL1C_PERF_SEL_REQ_CLIENT25', - 63: 'GL1C_PERF_SEL_REQ_CLIENT26', - 64: 'GL1C_PERF_SEL_REQ_CLIENT27', - 65: 'GL1C_PERF_SEL_UTCL0_REQUEST', - 66: 'GL1C_PERF_SEL_UTCL0_TRANSLATION_HIT', - 67: 'GL1C_PERF_SEL_UTCL0_TRANSLATION_MISS', - 68: 'GL1C_PERF_SEL_UTCL0_PERMISSION_MISS', - 69: 'GL1C_PERF_SEL_UTCL0_MISS_UNDER_MISS', - 70: 'GL1C_PERF_SEL_UTCL0_LFIFO_FULL', - 71: 'GL1C_PERF_SEL_UTCL0_STALL_INFLIGHT_MAX', - 72: 'GL1C_PERF_SEL_UTCL0_STALL_LFIFO_NOT_RES', - 73: 'GL1C_PERF_SEL_UTCL0_STALL_LRU_INFLIGHT', - 74: 'GL1C_PERF_SEL_UTCL0_STALL_MISSFIFO_FULL', - 75: 'GL1C_PERF_SEL_UTCL0_STALL_MULTI_MISS', - 76: 'GL1C_PERF_SEL_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS', - 77: 'GL1C_PERF_SEL_UTCL0_UTCL1_PERM_FAULT', - 78: 'GL1C_PERF_SEL_CLIENT_UTCL0_INFLIGHT', - 79: 'GL1C_PERF_SEL_UTCL0_UTCL1_INFLIGHT', - 80: 'GL1C_PERF_SEL_UTCL0_INTERNAL_RETRY_REQ', - 81: 'GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_RETRY_FAULT', - 82: 'GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_PRT_FAULT', - 83: 'GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_NO_RETRY_FAULT', -} -GL1C_PERF_SEL_CYCLE = 0 -GL1C_PERF_SEL_BUSY = 1 -GL1C_PERF_SEL_STARVE = 2 -GL1C_PERF_SEL_ARB_RET_LEVEL = 3 -GL1C_PERF_SEL_GL2_REQ_READ = 4 -GL1C_PERF_SEL_GL2_REQ_READ_128B = 5 -GL1C_PERF_SEL_GL2_REQ_READ_32B = 6 -GL1C_PERF_SEL_GL2_REQ_READ_64B = 7 -GL1C_PERF_SEL_GL2_REQ_READ_LATENCY = 8 -GL1C_PERF_SEL_GL2_REQ_WRITE = 9 -GL1C_PERF_SEL_GL2_REQ_WRITE_32B = 10 -GL1C_PERF_SEL_GL2_REQ_WRITE_64B = 11 -GL1C_PERF_SEL_GL2_REQ_WRITE_LATENCY = 12 -GL1C_PERF_SEL_GL2_REQ_PREFETCH = 13 -GL1C_PERF_SEL_REQ = 14 -GL1C_PERF_SEL_REQ_ATOMIC_WITH_RET = 15 -GL1C_PERF_SEL_REQ_ATOMIC_WITHOUT_RET = 16 -GL1C_PERF_SEL_REQ_SHADER_INV = 17 -GL1C_PERF_SEL_REQ_MISS = 18 -GL1C_PERF_SEL_REQ_NOP_ACK = 19 -GL1C_PERF_SEL_REQ_NOP_RTN0 = 20 -GL1C_PERF_SEL_REQ_READ = 21 -GL1C_PERF_SEL_REQ_READ_128B = 22 -GL1C_PERF_SEL_REQ_READ_32B = 23 -GL1C_PERF_SEL_REQ_READ_64B = 24 -GL1C_PERF_SEL_REQ_READ_POLICY_HIT_EVICT = 25 -GL1C_PERF_SEL_REQ_READ_POLICY_HIT_LRU = 26 -GL1C_PERF_SEL_REQ_READ_POLICY_MISS_EVICT = 27 -GL1C_PERF_SEL_REQ_WRITE = 28 -GL1C_PERF_SEL_REQ_WRITE_32B = 29 -GL1C_PERF_SEL_REQ_WRITE_64B = 30 -GL1C_PERF_SEL_STALL_GL2_GL1 = 31 -GL1C_PERF_SEL_STALL_LFIFO_FULL = 32 -GL1C_PERF_SEL_STALL_NO_AVAILABLE_ACK_ALLOC = 33 -GL1C_PERF_SEL_STALL_NOTHING_REPLACEABLE = 34 -GL1C_PERF_SEL_STALL_GCR_INV = 35 -GL1C_PERF_SEL_STALL_VM = 36 -GL1C_PERF_SEL_REQ_CLIENT0 = 37 -GL1C_PERF_SEL_REQ_CLIENT1 = 38 -GL1C_PERF_SEL_REQ_CLIENT2 = 39 -GL1C_PERF_SEL_REQ_CLIENT3 = 40 -GL1C_PERF_SEL_REQ_CLIENT4 = 41 -GL1C_PERF_SEL_REQ_CLIENT5 = 42 -GL1C_PERF_SEL_REQ_CLIENT6 = 43 -GL1C_PERF_SEL_REQ_CLIENT7 = 44 -GL1C_PERF_SEL_REQ_CLIENT8 = 45 -GL1C_PERF_SEL_REQ_CLIENT9 = 46 -GL1C_PERF_SEL_REQ_CLIENT10 = 47 -GL1C_PERF_SEL_REQ_CLIENT11 = 48 -GL1C_PERF_SEL_REQ_CLIENT12 = 49 -GL1C_PERF_SEL_REQ_CLIENT13 = 50 -GL1C_PERF_SEL_REQ_CLIENT14 = 51 -GL1C_PERF_SEL_REQ_CLIENT15 = 52 -GL1C_PERF_SEL_REQ_CLIENT16 = 53 -GL1C_PERF_SEL_REQ_CLIENT17 = 54 -GL1C_PERF_SEL_REQ_CLIENT18 = 55 -GL1C_PERF_SEL_REQ_CLIENT19 = 56 -GL1C_PERF_SEL_REQ_CLIENT20 = 57 -GL1C_PERF_SEL_REQ_CLIENT21 = 58 -GL1C_PERF_SEL_REQ_CLIENT22 = 59 -GL1C_PERF_SEL_REQ_CLIENT23 = 60 -GL1C_PERF_SEL_REQ_CLIENT24 = 61 -GL1C_PERF_SEL_REQ_CLIENT25 = 62 -GL1C_PERF_SEL_REQ_CLIENT26 = 63 -GL1C_PERF_SEL_REQ_CLIENT27 = 64 -GL1C_PERF_SEL_UTCL0_REQUEST = 65 -GL1C_PERF_SEL_UTCL0_TRANSLATION_HIT = 66 -GL1C_PERF_SEL_UTCL0_TRANSLATION_MISS = 67 -GL1C_PERF_SEL_UTCL0_PERMISSION_MISS = 68 -GL1C_PERF_SEL_UTCL0_MISS_UNDER_MISS = 69 -GL1C_PERF_SEL_UTCL0_LFIFO_FULL = 70 -GL1C_PERF_SEL_UTCL0_STALL_INFLIGHT_MAX = 71 -GL1C_PERF_SEL_UTCL0_STALL_LFIFO_NOT_RES = 72 -GL1C_PERF_SEL_UTCL0_STALL_LRU_INFLIGHT = 73 -GL1C_PERF_SEL_UTCL0_STALL_MISSFIFO_FULL = 74 -GL1C_PERF_SEL_UTCL0_STALL_MULTI_MISS = 75 -GL1C_PERF_SEL_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS = 76 -GL1C_PERF_SEL_UTCL0_UTCL1_PERM_FAULT = 77 -GL1C_PERF_SEL_CLIENT_UTCL0_INFLIGHT = 78 -GL1C_PERF_SEL_UTCL0_UTCL1_INFLIGHT = 79 -GL1C_PERF_SEL_UTCL0_INTERNAL_RETRY_REQ = 80 -GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_RETRY_FAULT = 81 -GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_PRT_FAULT = 82 -GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_NO_RETRY_FAULT = 83 -GL1C_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GL1H_REQ_PERF_SEL' -GL1H_REQ_PERF_SEL__enumvalues = { - 0: 'GL1H_REQ_PERF_SEL_BUSY', - 1: 'GL1H_REQ_PERF_SEL_STALL_GL1_0', - 2: 'GL1H_REQ_PERF_SEL_STALL_GL1_1', - 3: 'GL1H_REQ_PERF_SEL_REQUEST_GL1_0', - 4: 'GL1H_REQ_PERF_SEL_REQUEST_GL1_1', - 5: 'GL1H_REQ_PERF_SEL_WDS_32B_GL1_0', - 6: 'GL1H_REQ_PERF_SEL_WDS_32B_GL1_1', - 7: 'GL1H_REQ_PERF_SEL_BURST_COUNT_GL1_0', - 8: 'GL1H_REQ_PERF_SEL_BURST_COUNT_GL1_1', - 9: 'GL1H_REQ_PERF_SEL_ARB_REQUESTS', - 10: 'GL1H_REQ_PERF_SEL_REQ_INFLIGHT_LEVEL', - 11: 'GL1H_REQ_PERF_SEL_CYCLE', -} -GL1H_REQ_PERF_SEL_BUSY = 0 -GL1H_REQ_PERF_SEL_STALL_GL1_0 = 1 -GL1H_REQ_PERF_SEL_STALL_GL1_1 = 2 -GL1H_REQ_PERF_SEL_REQUEST_GL1_0 = 3 -GL1H_REQ_PERF_SEL_REQUEST_GL1_1 = 4 -GL1H_REQ_PERF_SEL_WDS_32B_GL1_0 = 5 -GL1H_REQ_PERF_SEL_WDS_32B_GL1_1 = 6 -GL1H_REQ_PERF_SEL_BURST_COUNT_GL1_0 = 7 -GL1H_REQ_PERF_SEL_BURST_COUNT_GL1_1 = 8 -GL1H_REQ_PERF_SEL_ARB_REQUESTS = 9 -GL1H_REQ_PERF_SEL_REQ_INFLIGHT_LEVEL = 10 -GL1H_REQ_PERF_SEL_CYCLE = 11 -GL1H_REQ_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TA_PERFCOUNT_SEL' -TA_PERFCOUNT_SEL__enumvalues = { - 0: 'TA_PERF_SEL_NULL', - 1: 'TA_PERF_SEL_image_sampler_has_offset_instructions', - 2: 'TA_PERF_SEL_image_sampler_has_bias_instructions', - 3: 'TA_PERF_SEL_image_sampler_has_reference_instructions', - 4: 'TA_PERF_SEL_image_sampler_has_ds_instructions', - 5: 'TA_PERF_SEL_image_sampler_has_dt_instructions', - 6: 'TA_PERF_SEL_image_sampler_has_dr_instructions', - 7: 'TA_PERF_SEL_gradient_busy', - 8: 'TA_PERF_SEL_gradient_fifo_busy', - 9: 'TA_PERF_SEL_lod_busy', - 10: 'TA_PERF_SEL_lod_fifo_busy', - 11: 'TA_PERF_SEL_addresser_busy', - 12: 'TA_PERF_SEL_addresser_fifo_busy', - 13: 'TA_PERF_SEL_aligner_busy', - 14: 'TA_PERF_SEL_write_path_busy', - 15: 'TA_PERF_SEL_ta_busy', - 16: 'TA_PERF_SEL_image_sampler_1_input_vgpr_instructions', - 17: 'TA_PERF_SEL_image_sampler_2_input_vgpr_instructions', - 18: 'TA_PERF_SEL_image_sampler_3_input_vgpr_instructions', - 19: 'TA_PERF_SEL_image_sampler_4_input_vgpr_instructions', - 20: 'TA_PERF_SEL_image_sampler_5_input_vgpr_instructions', - 21: 'TA_PERF_SEL_image_sampler_6_input_vgpr_instructions', - 22: 'TA_PERF_SEL_image_sampler_7_input_vgpr_instructions', - 23: 'TA_PERF_SEL_image_sampler_8_input_vgpr_instructions', - 24: 'TA_PERF_SEL_image_sampler_9_input_vgpr_instructions', - 25: 'TA_PERF_SEL_image_sampler_10_input_vgpr_instructions', - 26: 'TA_PERF_SEL_image_sampler_11_input_vgpr_instructions', - 27: 'TA_PERF_SEL_image_sampler_12_input_vgpr_instructions', - 28: 'TA_PERF_SEL_image_sampler_has_t_instructions', - 29: 'TA_PERF_SEL_image_sampler_has_r_instructions', - 30: 'TA_PERF_SEL_image_sampler_has_q_instructions', - 32: 'TA_PERF_SEL_total_wavefronts', - 33: 'TA_PERF_SEL_gradient_cycles', - 34: 'TA_PERF_SEL_walker_cycles', - 35: 'TA_PERF_SEL_aligner_cycles', - 36: 'TA_PERF_SEL_image_wavefronts', - 37: 'TA_PERF_SEL_image_read_wavefronts', - 38: 'TA_PERF_SEL_image_store_wavefronts', - 39: 'TA_PERF_SEL_image_atomic_wavefronts', - 40: 'TA_PERF_SEL_image_sampler_total_cycles', - 41: 'TA_PERF_SEL_image_nosampler_total_cycles', - 42: 'TA_PERF_SEL_flat_total_cycles', - 43: 'TA_PERF_SEL_bvh_total_cycles', - 44: 'TA_PERF_SEL_buffer_wavefronts', - 45: 'TA_PERF_SEL_buffer_load_wavefronts', - 46: 'TA_PERF_SEL_buffer_store_wavefronts', - 47: 'TA_PERF_SEL_buffer_atomic_wavefronts', - 49: 'TA_PERF_SEL_buffer_total_cycles', - 50: 'TA_PERF_SEL_buffer_1_address_input_vgpr_instructions', - 51: 'TA_PERF_SEL_buffer_2_address_input_vgpr_instructions', - 52: 'TA_PERF_SEL_buffer_has_index_instructions', - 53: 'TA_PERF_SEL_buffer_has_offset_instructions', - 54: 'TA_PERF_SEL_addr_stalled_by_tc_cycles', - 55: 'TA_PERF_SEL_addr_stalled_by_td_cycles', - 56: 'TA_PERF_SEL_image_sampler_wavefronts', - 57: 'TA_PERF_SEL_addresser_stalled_by_aligner_only_cycles', - 58: 'TA_PERF_SEL_addresser_stalled_cycles', - 59: 'TA_PERF_SEL_aniso_stalled_by_addresser_only_cycles', - 60: 'TA_PERF_SEL_aniso_stalled_cycles', - 61: 'TA_PERF_SEL_deriv_stalled_by_aniso_only_cycles', - 62: 'TA_PERF_SEL_deriv_stalled_cycles', - 63: 'TA_PERF_SEL_aniso_gt1_cycle_quads', - 64: 'TA_PERF_SEL_color_1_cycle_quads', - 65: 'TA_PERF_SEL_color_2_cycle_quads', - 66: 'TA_PERF_SEL_color_3_cycle_quads', - 68: 'TA_PERF_SEL_mip_1_cycle_quads', - 69: 'TA_PERF_SEL_mip_2_cycle_quads', - 70: 'TA_PERF_SEL_vol_1_cycle_quads', - 71: 'TA_PERF_SEL_vol_2_cycle_quads', - 72: 'TA_PERF_SEL_sampler_op_quads', - 73: 'TA_PERF_SEL_mipmap_lod_0_samples', - 74: 'TA_PERF_SEL_mipmap_lod_1_samples', - 75: 'TA_PERF_SEL_mipmap_lod_2_samples', - 76: 'TA_PERF_SEL_mipmap_lod_3_samples', - 77: 'TA_PERF_SEL_mipmap_lod_4_samples', - 78: 'TA_PERF_SEL_mipmap_lod_5_samples', - 79: 'TA_PERF_SEL_mipmap_lod_6_samples', - 80: 'TA_PERF_SEL_mipmap_lod_7_samples', - 81: 'TA_PERF_SEL_mipmap_lod_8_samples', - 82: 'TA_PERF_SEL_mipmap_lod_9_samples', - 83: 'TA_PERF_SEL_mipmap_lod_10_samples', - 84: 'TA_PERF_SEL_mipmap_lod_11_samples', - 85: 'TA_PERF_SEL_mipmap_lod_12_samples', - 86: 'TA_PERF_SEL_mipmap_lod_13_samples', - 87: 'TA_PERF_SEL_mipmap_lod_14_samples', - 88: 'TA_PERF_SEL_mipmap_invalid_samples', - 89: 'TA_PERF_SEL_aniso_1_cycle_quads', - 90: 'TA_PERF_SEL_aniso_2_cycle_quads', - 91: 'TA_PERF_SEL_aniso_4_cycle_quads', - 92: 'TA_PERF_SEL_aniso_6_cycle_quads', - 93: 'TA_PERF_SEL_aniso_8_cycle_quads', - 94: 'TA_PERF_SEL_aniso_10_cycle_quads', - 95: 'TA_PERF_SEL_aniso_12_cycle_quads', - 96: 'TA_PERF_SEL_aniso_14_cycle_quads', - 97: 'TA_PERF_SEL_aniso_16_cycle_quads', - 98: 'TA_PERF_SEL_store_write_data_input_cycles', - 99: 'TA_PERF_SEL_store_write_data_output_cycles', - 100: 'TA_PERF_SEL_flat_wavefronts', - 101: 'TA_PERF_SEL_flat_load_wavefronts', - 102: 'TA_PERF_SEL_flat_store_wavefronts', - 103: 'TA_PERF_SEL_flat_atomic_wavefronts', - 104: 'TA_PERF_SEL_flat_1_address_input_vgpr_instructions', - 105: 'TA_PERF_SEL_register_clk_valid_cycles', - 106: 'TA_PERF_SEL_non_harvestable_clk_enabled_cycles', - 107: 'TA_PERF_SEL_harvestable_clk_enabled_cycles', - 108: 'TA_PERF_SEL_harvestable_register_clk_enabled_cycles', - 109: 'TA_PERF_SEL_boundary_non_harvestable_clk_enabled_cycles', - 110: 'TA_PERF_SEL_boundary_harvestable_clk_enabled_cycles', - 114: 'TA_PERF_SEL_store_2_write_data_vgpr_instructions', - 115: 'TA_PERF_SEL_store_3_write_data_vgpr_instructions', - 116: 'TA_PERF_SEL_store_4_write_data_vgpr_instructions', - 117: 'TA_PERF_SEL_store_has_x_instructions', - 118: 'TA_PERF_SEL_store_has_y_instructions', - 119: 'TA_PERF_SEL_store_has_z_instructions', - 120: 'TA_PERF_SEL_store_has_w_instructions', - 121: 'TA_PERF_SEL_image_nosampler_has_t_instructions', - 122: 'TA_PERF_SEL_image_nosampler_has_r_instructions', - 123: 'TA_PERF_SEL_image_nosampler_has_q_instructions', - 124: 'TA_PERF_SEL_image_nosampler_1_address_input_vgpr_instructions', - 125: 'TA_PERF_SEL_image_nosampler_2_address_input_vgpr_instructions', - 126: 'TA_PERF_SEL_image_nosampler_3_address_input_vgpr_instructions', - 127: 'TA_PERF_SEL_image_nosampler_4_address_input_vgpr_instructions', - 128: 'TA_PERF_SEL_in_busy', - 129: 'TA_PERF_SEL_in_fifos_busy', - 130: 'TA_PERF_SEL_in_cfifo_busy', - 131: 'TA_PERF_SEL_in_qfifo_busy', - 132: 'TA_PERF_SEL_in_wfifo_busy', - 133: 'TA_PERF_SEL_in_rfifo_busy', - 134: 'TA_PERF_SEL_bf_busy', - 135: 'TA_PERF_SEL_ns_busy', - 136: 'TA_PERF_SEL_smp_busy_ns_idle', - 137: 'TA_PERF_SEL_smp_idle_ns_busy', - 144: 'TA_PERF_SEL_vmemcmd_cycles', - 145: 'TA_PERF_SEL_vmemreq_cycles', - 146: 'TA_PERF_SEL_in_waiting_on_req_cycles', - 150: 'TA_PERF_SEL_in_addr_cycles', - 151: 'TA_PERF_SEL_in_data_cycles', - 154: 'TA_PERF_SEL_latency_ram_weights_written_cycles', - 155: 'TA_PERF_SEL_latency_ram_ws_required_quads', - 156: 'TA_PERF_SEL_latency_ram_whv_required_quads', - 157: 'TA_PERF_SEL_latency_ram_ws_required_instructions', - 158: 'TA_PERF_SEL_latency_ram_whv_required_instructions', - 159: 'TA_PERF_SEL_latency_ram_ref_required_instructions', - 160: 'TA_PERF_SEL_point_sampled_quads', - 162: 'TA_PERF_SEL_atomic_2_write_data_vgpr_instructions', - 163: 'TA_PERF_SEL_atomic_4_write_data_vgpr_instructions', - 164: 'TA_PERF_SEL_atomic_write_data_input_cycles', - 165: 'TA_PERF_SEL_atomic_write_data_output_cycles', - 173: 'TA_PERF_SEL_num_unlit_nodes_ta_opt', - 174: 'TA_PERF_SEL_num_nodes_invalidated_due_to_bad_input', - 175: 'TA_PERF_SEL_num_nodes_invalidated_due_to_oob', - 176: 'TA_PERF_SEL_num_of_bvh_valid_first_tri', - 177: 'TA_PERF_SEL_num_of_bvh_valid_second_tri', - 178: 'TA_PERF_SEL_num_of_bvh_valid_third_tri', - 179: 'TA_PERF_SEL_num_of_bvh_valid_fourth_tri', - 180: 'TA_PERF_SEL_num_of_bvh_valid_fp16_box', - 181: 'TA_PERF_SEL_num_of_bvh_valid_fp32_box', - 182: 'TA_PERF_SEL_num_of_bvh_invalidated_first_tri', - 183: 'TA_PERF_SEL_num_of_bvh_invalidated_second_tri', - 184: 'TA_PERF_SEL_num_of_bvh_invalidated_third_tri', - 185: 'TA_PERF_SEL_num_of_bvh_invalidated_fourth_tri', - 186: 'TA_PERF_SEL_num_of_bvh_invalidated_fp16_box', - 187: 'TA_PERF_SEL_num_of_bvh_invalidated_fp32_box', - 188: 'TA_PERF_SEL_image_bvh_8_input_vgpr_instructions', - 189: 'TA_PERF_SEL_image_bvh_9_input_vgpr_instructions', - 190: 'TA_PERF_SEL_image_bvh_11_input_vgpr_instructions', - 191: 'TA_PERF_SEL_image_bvh_12_input_vgpr_instructions', - 192: 'TA_PERF_SEL_image_sampler_1_op_burst', - 193: 'TA_PERF_SEL_image_sampler_2to3_op_burst', - 194: 'TA_PERF_SEL_image_sampler_4to7_op_burst', - 195: 'TA_PERF_SEL_image_sampler_ge8_op_burst', - 196: 'TA_PERF_SEL_image_linked_1_op_burst', - 197: 'TA_PERF_SEL_image_linked_2to3_op_burst', - 198: 'TA_PERF_SEL_image_linked_4to7_op_burst', - 199: 'TA_PERF_SEL_image_linked_ge8_op_burst', - 200: 'TA_PERF_SEL_image_bvh_1_op_burst', - 201: 'TA_PERF_SEL_image_bvh_2to3_op_burst', - 202: 'TA_PERF_SEL_image_bvh_4to7_op_burst', - 203: 'TA_PERF_SEL_image_bvh_ge8_op_burst', - 204: 'TA_PERF_SEL_image_nosampler_1_op_burst', - 205: 'TA_PERF_SEL_image_nosampler_2to3_op_burst', - 206: 'TA_PERF_SEL_image_nosampler_4to31_op_burst', - 207: 'TA_PERF_SEL_image_nosampler_ge32_op_burst', - 208: 'TA_PERF_SEL_buffer_flat_1_op_burst', - 209: 'TA_PERF_SEL_buffer_flat_2to3_op_burst', - 210: 'TA_PERF_SEL_buffer_flat_4to31_op_burst', - 211: 'TA_PERF_SEL_buffer_flat_ge32_op_burst', - 212: 'TA_PERF_SEL_write_1_op_burst', - 213: 'TA_PERF_SEL_write_2to3_op_burst', - 214: 'TA_PERF_SEL_write_4to31_op_burst', - 215: 'TA_PERF_SEL_write_ge32_op_burst', - 216: 'TA_PERF_SEL_ibubble_1_cycle_burst', - 217: 'TA_PERF_SEL_ibubble_2to3_cycle_burst', - 218: 'TA_PERF_SEL_ibubble_4to15_cycle_burst', - 219: 'TA_PERF_SEL_ibubble_16to31_cycle_burst', - 220: 'TA_PERF_SEL_ibubble_32to63_cycle_burst', - 221: 'TA_PERF_SEL_ibubble_ge64_cycle_burst', - 224: 'TA_PERF_SEL_sampler_clk_valid_cycles', - 225: 'TA_PERF_SEL_nonsampler_clk_valid_cycles', - 226: 'TA_PERF_SEL_buffer_flat_clk_valid_cycles', - 227: 'TA_PERF_SEL_write_data_clk_valid_cycles', - 228: 'TA_PERF_SEL_gradient_clk_valid_cycles', - 229: 'TA_PERF_SEL_lod_aniso_clk_valid_cycles', - 230: 'TA_PERF_SEL_sampler_addressing_clk_valid_cycles', - 231: 'TA_PERF_SEL_sync_sampler_sstate_fifo_clk_valid_cycles', - 232: 'TA_PERF_SEL_sync_sampler_cstate_fifo_clk_valid_cycles', - 233: 'TA_PERF_SEL_sync_nonsampler_fifo_clk_valid_cycles', - 234: 'TA_PERF_SEL_aligner_clk_valid_cycles', - 235: 'TA_PERF_SEL_tcreq_clk_valid_cycles', -} -TA_PERF_SEL_NULL = 0 -TA_PERF_SEL_image_sampler_has_offset_instructions = 1 -TA_PERF_SEL_image_sampler_has_bias_instructions = 2 -TA_PERF_SEL_image_sampler_has_reference_instructions = 3 -TA_PERF_SEL_image_sampler_has_ds_instructions = 4 -TA_PERF_SEL_image_sampler_has_dt_instructions = 5 -TA_PERF_SEL_image_sampler_has_dr_instructions = 6 -TA_PERF_SEL_gradient_busy = 7 -TA_PERF_SEL_gradient_fifo_busy = 8 -TA_PERF_SEL_lod_busy = 9 -TA_PERF_SEL_lod_fifo_busy = 10 -TA_PERF_SEL_addresser_busy = 11 -TA_PERF_SEL_addresser_fifo_busy = 12 -TA_PERF_SEL_aligner_busy = 13 -TA_PERF_SEL_write_path_busy = 14 -TA_PERF_SEL_ta_busy = 15 -TA_PERF_SEL_image_sampler_1_input_vgpr_instructions = 16 -TA_PERF_SEL_image_sampler_2_input_vgpr_instructions = 17 -TA_PERF_SEL_image_sampler_3_input_vgpr_instructions = 18 -TA_PERF_SEL_image_sampler_4_input_vgpr_instructions = 19 -TA_PERF_SEL_image_sampler_5_input_vgpr_instructions = 20 -TA_PERF_SEL_image_sampler_6_input_vgpr_instructions = 21 -TA_PERF_SEL_image_sampler_7_input_vgpr_instructions = 22 -TA_PERF_SEL_image_sampler_8_input_vgpr_instructions = 23 -TA_PERF_SEL_image_sampler_9_input_vgpr_instructions = 24 -TA_PERF_SEL_image_sampler_10_input_vgpr_instructions = 25 -TA_PERF_SEL_image_sampler_11_input_vgpr_instructions = 26 -TA_PERF_SEL_image_sampler_12_input_vgpr_instructions = 27 -TA_PERF_SEL_image_sampler_has_t_instructions = 28 -TA_PERF_SEL_image_sampler_has_r_instructions = 29 -TA_PERF_SEL_image_sampler_has_q_instructions = 30 -TA_PERF_SEL_total_wavefronts = 32 -TA_PERF_SEL_gradient_cycles = 33 -TA_PERF_SEL_walker_cycles = 34 -TA_PERF_SEL_aligner_cycles = 35 -TA_PERF_SEL_image_wavefronts = 36 -TA_PERF_SEL_image_read_wavefronts = 37 -TA_PERF_SEL_image_store_wavefronts = 38 -TA_PERF_SEL_image_atomic_wavefronts = 39 -TA_PERF_SEL_image_sampler_total_cycles = 40 -TA_PERF_SEL_image_nosampler_total_cycles = 41 -TA_PERF_SEL_flat_total_cycles = 42 -TA_PERF_SEL_bvh_total_cycles = 43 -TA_PERF_SEL_buffer_wavefronts = 44 -TA_PERF_SEL_buffer_load_wavefronts = 45 -TA_PERF_SEL_buffer_store_wavefronts = 46 -TA_PERF_SEL_buffer_atomic_wavefronts = 47 -TA_PERF_SEL_buffer_total_cycles = 49 -TA_PERF_SEL_buffer_1_address_input_vgpr_instructions = 50 -TA_PERF_SEL_buffer_2_address_input_vgpr_instructions = 51 -TA_PERF_SEL_buffer_has_index_instructions = 52 -TA_PERF_SEL_buffer_has_offset_instructions = 53 -TA_PERF_SEL_addr_stalled_by_tc_cycles = 54 -TA_PERF_SEL_addr_stalled_by_td_cycles = 55 -TA_PERF_SEL_image_sampler_wavefronts = 56 -TA_PERF_SEL_addresser_stalled_by_aligner_only_cycles = 57 -TA_PERF_SEL_addresser_stalled_cycles = 58 -TA_PERF_SEL_aniso_stalled_by_addresser_only_cycles = 59 -TA_PERF_SEL_aniso_stalled_cycles = 60 -TA_PERF_SEL_deriv_stalled_by_aniso_only_cycles = 61 -TA_PERF_SEL_deriv_stalled_cycles = 62 -TA_PERF_SEL_aniso_gt1_cycle_quads = 63 -TA_PERF_SEL_color_1_cycle_quads = 64 -TA_PERF_SEL_color_2_cycle_quads = 65 -TA_PERF_SEL_color_3_cycle_quads = 66 -TA_PERF_SEL_mip_1_cycle_quads = 68 -TA_PERF_SEL_mip_2_cycle_quads = 69 -TA_PERF_SEL_vol_1_cycle_quads = 70 -TA_PERF_SEL_vol_2_cycle_quads = 71 -TA_PERF_SEL_sampler_op_quads = 72 -TA_PERF_SEL_mipmap_lod_0_samples = 73 -TA_PERF_SEL_mipmap_lod_1_samples = 74 -TA_PERF_SEL_mipmap_lod_2_samples = 75 -TA_PERF_SEL_mipmap_lod_3_samples = 76 -TA_PERF_SEL_mipmap_lod_4_samples = 77 -TA_PERF_SEL_mipmap_lod_5_samples = 78 -TA_PERF_SEL_mipmap_lod_6_samples = 79 -TA_PERF_SEL_mipmap_lod_7_samples = 80 -TA_PERF_SEL_mipmap_lod_8_samples = 81 -TA_PERF_SEL_mipmap_lod_9_samples = 82 -TA_PERF_SEL_mipmap_lod_10_samples = 83 -TA_PERF_SEL_mipmap_lod_11_samples = 84 -TA_PERF_SEL_mipmap_lod_12_samples = 85 -TA_PERF_SEL_mipmap_lod_13_samples = 86 -TA_PERF_SEL_mipmap_lod_14_samples = 87 -TA_PERF_SEL_mipmap_invalid_samples = 88 -TA_PERF_SEL_aniso_1_cycle_quads = 89 -TA_PERF_SEL_aniso_2_cycle_quads = 90 -TA_PERF_SEL_aniso_4_cycle_quads = 91 -TA_PERF_SEL_aniso_6_cycle_quads = 92 -TA_PERF_SEL_aniso_8_cycle_quads = 93 -TA_PERF_SEL_aniso_10_cycle_quads = 94 -TA_PERF_SEL_aniso_12_cycle_quads = 95 -TA_PERF_SEL_aniso_14_cycle_quads = 96 -TA_PERF_SEL_aniso_16_cycle_quads = 97 -TA_PERF_SEL_store_write_data_input_cycles = 98 -TA_PERF_SEL_store_write_data_output_cycles = 99 -TA_PERF_SEL_flat_wavefronts = 100 -TA_PERF_SEL_flat_load_wavefronts = 101 -TA_PERF_SEL_flat_store_wavefronts = 102 -TA_PERF_SEL_flat_atomic_wavefronts = 103 -TA_PERF_SEL_flat_1_address_input_vgpr_instructions = 104 -TA_PERF_SEL_register_clk_valid_cycles = 105 -TA_PERF_SEL_non_harvestable_clk_enabled_cycles = 106 -TA_PERF_SEL_harvestable_clk_enabled_cycles = 107 -TA_PERF_SEL_harvestable_register_clk_enabled_cycles = 108 -TA_PERF_SEL_boundary_non_harvestable_clk_enabled_cycles = 109 -TA_PERF_SEL_boundary_harvestable_clk_enabled_cycles = 110 -TA_PERF_SEL_store_2_write_data_vgpr_instructions = 114 -TA_PERF_SEL_store_3_write_data_vgpr_instructions = 115 -TA_PERF_SEL_store_4_write_data_vgpr_instructions = 116 -TA_PERF_SEL_store_has_x_instructions = 117 -TA_PERF_SEL_store_has_y_instructions = 118 -TA_PERF_SEL_store_has_z_instructions = 119 -TA_PERF_SEL_store_has_w_instructions = 120 -TA_PERF_SEL_image_nosampler_has_t_instructions = 121 -TA_PERF_SEL_image_nosampler_has_r_instructions = 122 -TA_PERF_SEL_image_nosampler_has_q_instructions = 123 -TA_PERF_SEL_image_nosampler_1_address_input_vgpr_instructions = 124 -TA_PERF_SEL_image_nosampler_2_address_input_vgpr_instructions = 125 -TA_PERF_SEL_image_nosampler_3_address_input_vgpr_instructions = 126 -TA_PERF_SEL_image_nosampler_4_address_input_vgpr_instructions = 127 -TA_PERF_SEL_in_busy = 128 -TA_PERF_SEL_in_fifos_busy = 129 -TA_PERF_SEL_in_cfifo_busy = 130 -TA_PERF_SEL_in_qfifo_busy = 131 -TA_PERF_SEL_in_wfifo_busy = 132 -TA_PERF_SEL_in_rfifo_busy = 133 -TA_PERF_SEL_bf_busy = 134 -TA_PERF_SEL_ns_busy = 135 -TA_PERF_SEL_smp_busy_ns_idle = 136 -TA_PERF_SEL_smp_idle_ns_busy = 137 -TA_PERF_SEL_vmemcmd_cycles = 144 -TA_PERF_SEL_vmemreq_cycles = 145 -TA_PERF_SEL_in_waiting_on_req_cycles = 146 -TA_PERF_SEL_in_addr_cycles = 150 -TA_PERF_SEL_in_data_cycles = 151 -TA_PERF_SEL_latency_ram_weights_written_cycles = 154 -TA_PERF_SEL_latency_ram_ws_required_quads = 155 -TA_PERF_SEL_latency_ram_whv_required_quads = 156 -TA_PERF_SEL_latency_ram_ws_required_instructions = 157 -TA_PERF_SEL_latency_ram_whv_required_instructions = 158 -TA_PERF_SEL_latency_ram_ref_required_instructions = 159 -TA_PERF_SEL_point_sampled_quads = 160 -TA_PERF_SEL_atomic_2_write_data_vgpr_instructions = 162 -TA_PERF_SEL_atomic_4_write_data_vgpr_instructions = 163 -TA_PERF_SEL_atomic_write_data_input_cycles = 164 -TA_PERF_SEL_atomic_write_data_output_cycles = 165 -TA_PERF_SEL_num_unlit_nodes_ta_opt = 173 -TA_PERF_SEL_num_nodes_invalidated_due_to_bad_input = 174 -TA_PERF_SEL_num_nodes_invalidated_due_to_oob = 175 -TA_PERF_SEL_num_of_bvh_valid_first_tri = 176 -TA_PERF_SEL_num_of_bvh_valid_second_tri = 177 -TA_PERF_SEL_num_of_bvh_valid_third_tri = 178 -TA_PERF_SEL_num_of_bvh_valid_fourth_tri = 179 -TA_PERF_SEL_num_of_bvh_valid_fp16_box = 180 -TA_PERF_SEL_num_of_bvh_valid_fp32_box = 181 -TA_PERF_SEL_num_of_bvh_invalidated_first_tri = 182 -TA_PERF_SEL_num_of_bvh_invalidated_second_tri = 183 -TA_PERF_SEL_num_of_bvh_invalidated_third_tri = 184 -TA_PERF_SEL_num_of_bvh_invalidated_fourth_tri = 185 -TA_PERF_SEL_num_of_bvh_invalidated_fp16_box = 186 -TA_PERF_SEL_num_of_bvh_invalidated_fp32_box = 187 -TA_PERF_SEL_image_bvh_8_input_vgpr_instructions = 188 -TA_PERF_SEL_image_bvh_9_input_vgpr_instructions = 189 -TA_PERF_SEL_image_bvh_11_input_vgpr_instructions = 190 -TA_PERF_SEL_image_bvh_12_input_vgpr_instructions = 191 -TA_PERF_SEL_image_sampler_1_op_burst = 192 -TA_PERF_SEL_image_sampler_2to3_op_burst = 193 -TA_PERF_SEL_image_sampler_4to7_op_burst = 194 -TA_PERF_SEL_image_sampler_ge8_op_burst = 195 -TA_PERF_SEL_image_linked_1_op_burst = 196 -TA_PERF_SEL_image_linked_2to3_op_burst = 197 -TA_PERF_SEL_image_linked_4to7_op_burst = 198 -TA_PERF_SEL_image_linked_ge8_op_burst = 199 -TA_PERF_SEL_image_bvh_1_op_burst = 200 -TA_PERF_SEL_image_bvh_2to3_op_burst = 201 -TA_PERF_SEL_image_bvh_4to7_op_burst = 202 -TA_PERF_SEL_image_bvh_ge8_op_burst = 203 -TA_PERF_SEL_image_nosampler_1_op_burst = 204 -TA_PERF_SEL_image_nosampler_2to3_op_burst = 205 -TA_PERF_SEL_image_nosampler_4to31_op_burst = 206 -TA_PERF_SEL_image_nosampler_ge32_op_burst = 207 -TA_PERF_SEL_buffer_flat_1_op_burst = 208 -TA_PERF_SEL_buffer_flat_2to3_op_burst = 209 -TA_PERF_SEL_buffer_flat_4to31_op_burst = 210 -TA_PERF_SEL_buffer_flat_ge32_op_burst = 211 -TA_PERF_SEL_write_1_op_burst = 212 -TA_PERF_SEL_write_2to3_op_burst = 213 -TA_PERF_SEL_write_4to31_op_burst = 214 -TA_PERF_SEL_write_ge32_op_burst = 215 -TA_PERF_SEL_ibubble_1_cycle_burst = 216 -TA_PERF_SEL_ibubble_2to3_cycle_burst = 217 -TA_PERF_SEL_ibubble_4to15_cycle_burst = 218 -TA_PERF_SEL_ibubble_16to31_cycle_burst = 219 -TA_PERF_SEL_ibubble_32to63_cycle_burst = 220 -TA_PERF_SEL_ibubble_ge64_cycle_burst = 221 -TA_PERF_SEL_sampler_clk_valid_cycles = 224 -TA_PERF_SEL_nonsampler_clk_valid_cycles = 225 -TA_PERF_SEL_buffer_flat_clk_valid_cycles = 226 -TA_PERF_SEL_write_data_clk_valid_cycles = 227 -TA_PERF_SEL_gradient_clk_valid_cycles = 228 -TA_PERF_SEL_lod_aniso_clk_valid_cycles = 229 -TA_PERF_SEL_sampler_addressing_clk_valid_cycles = 230 -TA_PERF_SEL_sync_sampler_sstate_fifo_clk_valid_cycles = 231 -TA_PERF_SEL_sync_sampler_cstate_fifo_clk_valid_cycles = 232 -TA_PERF_SEL_sync_nonsampler_fifo_clk_valid_cycles = 233 -TA_PERF_SEL_aligner_clk_valid_cycles = 234 -TA_PERF_SEL_tcreq_clk_valid_cycles = 235 -TA_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_BC_SWIZZLE' -TEX_BC_SWIZZLE__enumvalues = { - 0: 'TEX_BC_Swizzle_XYZW', - 1: 'TEX_BC_Swizzle_XWYZ', - 2: 'TEX_BC_Swizzle_WZYX', - 3: 'TEX_BC_Swizzle_WXYZ', - 4: 'TEX_BC_Swizzle_ZYXW', - 5: 'TEX_BC_Swizzle_YXWZ', -} -TEX_BC_Swizzle_XYZW = 0 -TEX_BC_Swizzle_XWYZ = 1 -TEX_BC_Swizzle_WZYX = 2 -TEX_BC_Swizzle_WXYZ = 3 -TEX_BC_Swizzle_ZYXW = 4 -TEX_BC_Swizzle_YXWZ = 5 -TEX_BC_SWIZZLE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_BORDER_COLOR_TYPE' -TEX_BORDER_COLOR_TYPE__enumvalues = { - 0: 'TEX_BorderColor_TransparentBlack', - 1: 'TEX_BorderColor_OpaqueBlack', - 2: 'TEX_BorderColor_OpaqueWhite', - 3: 'TEX_BorderColor_Register', -} -TEX_BorderColor_TransparentBlack = 0 -TEX_BorderColor_OpaqueBlack = 1 -TEX_BorderColor_OpaqueWhite = 2 -TEX_BorderColor_Register = 3 -TEX_BORDER_COLOR_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_CHROMA_KEY' -TEX_CHROMA_KEY__enumvalues = { - 0: 'TEX_ChromaKey_Disabled', - 1: 'TEX_ChromaKey_Kill', - 2: 'TEX_ChromaKey_Blend', - 3: 'TEX_ChromaKey_RESERVED_3', -} -TEX_ChromaKey_Disabled = 0 -TEX_ChromaKey_Kill = 1 -TEX_ChromaKey_Blend = 2 -TEX_ChromaKey_RESERVED_3 = 3 -TEX_CHROMA_KEY = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_CLAMP' -TEX_CLAMP__enumvalues = { - 0: 'TEX_Clamp_Repeat', - 1: 'TEX_Clamp_Mirror', - 2: 'TEX_Clamp_ClampToLast', - 3: 'TEX_Clamp_MirrorOnceToLast', - 4: 'TEX_Clamp_ClampHalfToBorder', - 5: 'TEX_Clamp_MirrorOnceHalfToBorder', - 6: 'TEX_Clamp_ClampToBorder', - 7: 'TEX_Clamp_MirrorOnceToBorder', -} -TEX_Clamp_Repeat = 0 -TEX_Clamp_Mirror = 1 -TEX_Clamp_ClampToLast = 2 -TEX_Clamp_MirrorOnceToLast = 3 -TEX_Clamp_ClampHalfToBorder = 4 -TEX_Clamp_MirrorOnceHalfToBorder = 5 -TEX_Clamp_ClampToBorder = 6 -TEX_Clamp_MirrorOnceToBorder = 7 -TEX_CLAMP = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_COORD_TYPE' -TEX_COORD_TYPE__enumvalues = { - 0: 'TEX_CoordType_Unnormalized', - 1: 'TEX_CoordType_Normalized', -} -TEX_CoordType_Unnormalized = 0 -TEX_CoordType_Normalized = 1 -TEX_COORD_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_DEPTH_COMPARE_FUNCTION' -TEX_DEPTH_COMPARE_FUNCTION__enumvalues = { - 0: 'TEX_DepthCompareFunction_Never', - 1: 'TEX_DepthCompareFunction_Less', - 2: 'TEX_DepthCompareFunction_Equal', - 3: 'TEX_DepthCompareFunction_LessEqual', - 4: 'TEX_DepthCompareFunction_Greater', - 5: 'TEX_DepthCompareFunction_NotEqual', - 6: 'TEX_DepthCompareFunction_GreaterEqual', - 7: 'TEX_DepthCompareFunction_Always', -} -TEX_DepthCompareFunction_Never = 0 -TEX_DepthCompareFunction_Less = 1 -TEX_DepthCompareFunction_Equal = 2 -TEX_DepthCompareFunction_LessEqual = 3 -TEX_DepthCompareFunction_Greater = 4 -TEX_DepthCompareFunction_NotEqual = 5 -TEX_DepthCompareFunction_GreaterEqual = 6 -TEX_DepthCompareFunction_Always = 7 -TEX_DEPTH_COMPARE_FUNCTION = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_FORMAT_COMP' -TEX_FORMAT_COMP__enumvalues = { - 0: 'TEX_FormatComp_Unsigned', - 1: 'TEX_FormatComp_Signed', - 2: 'TEX_FormatComp_UnsignedBiased', - 3: 'TEX_FormatComp_RESERVED_3', -} -TEX_FormatComp_Unsigned = 0 -TEX_FormatComp_Signed = 1 -TEX_FormatComp_UnsignedBiased = 2 -TEX_FormatComp_RESERVED_3 = 3 -TEX_FORMAT_COMP = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_MAX_ANISO_RATIO' -TEX_MAX_ANISO_RATIO__enumvalues = { - 0: 'TEX_MaxAnisoRatio_1to1', - 1: 'TEX_MaxAnisoRatio_2to1', - 2: 'TEX_MaxAnisoRatio_4to1', - 3: 'TEX_MaxAnisoRatio_8to1', - 4: 'TEX_MaxAnisoRatio_16to1', - 5: 'TEX_MaxAnisoRatio_RESERVED_5', - 6: 'TEX_MaxAnisoRatio_RESERVED_6', - 7: 'TEX_MaxAnisoRatio_RESERVED_7', -} -TEX_MaxAnisoRatio_1to1 = 0 -TEX_MaxAnisoRatio_2to1 = 1 -TEX_MaxAnisoRatio_4to1 = 2 -TEX_MaxAnisoRatio_8to1 = 3 -TEX_MaxAnisoRatio_16to1 = 4 -TEX_MaxAnisoRatio_RESERVED_5 = 5 -TEX_MaxAnisoRatio_RESERVED_6 = 6 -TEX_MaxAnisoRatio_RESERVED_7 = 7 -TEX_MAX_ANISO_RATIO = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_MIP_FILTER' -TEX_MIP_FILTER__enumvalues = { - 0: 'TEX_MipFilter_None', - 1: 'TEX_MipFilter_Point', - 2: 'TEX_MipFilter_Linear', - 3: 'TEX_MipFilter_Point_Aniso_Adj', -} -TEX_MipFilter_None = 0 -TEX_MipFilter_Point = 1 -TEX_MipFilter_Linear = 2 -TEX_MipFilter_Point_Aniso_Adj = 3 -TEX_MIP_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_REQUEST_SIZE' -TEX_REQUEST_SIZE__enumvalues = { - 0: 'TEX_RequestSize_32B', - 1: 'TEX_RequestSize_64B', - 2: 'TEX_RequestSize_128B', - 3: 'TEX_RequestSize_2X64B', -} -TEX_RequestSize_32B = 0 -TEX_RequestSize_64B = 1 -TEX_RequestSize_128B = 2 -TEX_RequestSize_2X64B = 3 -TEX_REQUEST_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_SAMPLER_TYPE' -TEX_SAMPLER_TYPE__enumvalues = { - 0: 'TEX_SamplerType_Invalid', - 1: 'TEX_SamplerType_Valid', -} -TEX_SamplerType_Invalid = 0 -TEX_SamplerType_Valid = 1 -TEX_SAMPLER_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_XY_FILTER' -TEX_XY_FILTER__enumvalues = { - 0: 'TEX_XYFilter_Point', - 1: 'TEX_XYFilter_Linear', - 2: 'TEX_XYFilter_AnisoPoint', - 3: 'TEX_XYFilter_AnisoLinear', -} -TEX_XYFilter_Point = 0 -TEX_XYFilter_Linear = 1 -TEX_XYFilter_AnisoPoint = 2 -TEX_XYFilter_AnisoLinear = 3 -TEX_XY_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'TEX_Z_FILTER' -TEX_Z_FILTER__enumvalues = { - 0: 'TEX_ZFilter_None', - 1: 'TEX_ZFilter_Point', - 2: 'TEX_ZFilter_Linear', - 3: 'TEX_ZFilter_RESERVED_3', -} -TEX_ZFilter_None = 0 -TEX_ZFilter_Point = 1 -TEX_ZFilter_Linear = 2 -TEX_ZFilter_RESERVED_3 = 3 -TEX_Z_FILTER = ctypes.c_uint32 # enum - -# values for enumeration 'TVX_TYPE' -TVX_TYPE__enumvalues = { - 0: 'TVX_Type_InvalidTextureResource', - 1: 'TVX_Type_InvalidVertexBuffer', - 2: 'TVX_Type_ValidTextureResource', - 3: 'TVX_Type_ValidVertexBuffer', -} -TVX_Type_InvalidTextureResource = 0 -TVX_Type_InvalidVertexBuffer = 1 -TVX_Type_ValidTextureResource = 2 -TVX_Type_ValidVertexBuffer = 3 -TVX_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TA_TC_ADDR_MODES' -TA_TC_ADDR_MODES__enumvalues = { - 0: 'TA_TC_ADDR_MODE_DEFAULT', - 1: 'TA_TC_ADDR_MODE_COMP0', - 2: 'TA_TC_ADDR_MODE_COMP1', - 3: 'TA_TC_ADDR_MODE_COMP2', - 4: 'TA_TC_ADDR_MODE_COMP3', - 5: 'TA_TC_ADDR_MODE_UNALIGNED', - 6: 'TA_TC_ADDR_MODE_BORDER_COLOR', -} -TA_TC_ADDR_MODE_DEFAULT = 0 -TA_TC_ADDR_MODE_COMP0 = 1 -TA_TC_ADDR_MODE_COMP1 = 2 -TA_TC_ADDR_MODE_COMP2 = 3 -TA_TC_ADDR_MODE_COMP3 = 4 -TA_TC_ADDR_MODE_UNALIGNED = 5 -TA_TC_ADDR_MODE_BORDER_COLOR = 6 -TA_TC_ADDR_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'TA_TC_REQ_MODES' -TA_TC_REQ_MODES__enumvalues = { - 0: 'TA_TC_REQ_MODE_BORDER', - 1: 'TA_TC_REQ_MODE_TEX2', - 2: 'TA_TC_REQ_MODE_TEX1', - 3: 'TA_TC_REQ_MODE_TEX0', - 4: 'TA_TC_REQ_MODE_NORMAL', - 5: 'TA_TC_REQ_MODE_DWORD', - 6: 'TA_TC_REQ_MODE_BYTE', - 7: 'TA_TC_REQ_MODE_BYTE_NV', -} -TA_TC_REQ_MODE_BORDER = 0 -TA_TC_REQ_MODE_TEX2 = 1 -TA_TC_REQ_MODE_TEX1 = 2 -TA_TC_REQ_MODE_TEX0 = 3 -TA_TC_REQ_MODE_NORMAL = 4 -TA_TC_REQ_MODE_DWORD = 5 -TA_TC_REQ_MODE_BYTE = 6 -TA_TC_REQ_MODE_BYTE_NV = 7 -TA_TC_REQ_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_CACHE_POLICIES' -TCP_CACHE_POLICIES__enumvalues = { - 0: 'TCP_CACHE_POLICY_MISS_LRU', - 1: 'TCP_CACHE_POLICY_MISS_EVICT', - 2: 'TCP_CACHE_POLICY_HIT_LRU', - 3: 'TCP_CACHE_POLICY_HIT_EVICT', -} -TCP_CACHE_POLICY_MISS_LRU = 0 -TCP_CACHE_POLICY_MISS_EVICT = 1 -TCP_CACHE_POLICY_HIT_LRU = 2 -TCP_CACHE_POLICY_HIT_EVICT = 3 -TCP_CACHE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_CACHE_STORE_POLICIES' -TCP_CACHE_STORE_POLICIES__enumvalues = { - 0: 'TCP_CACHE_STORE_POLICY_WT_LRU', - 1: 'TCP_CACHE_STORE_POLICY_WT_EVICT', -} -TCP_CACHE_STORE_POLICY_WT_LRU = 0 -TCP_CACHE_STORE_POLICY_WT_EVICT = 1 -TCP_CACHE_STORE_POLICIES = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_DSM_DATA_SEL' -TCP_DSM_DATA_SEL__enumvalues = { - 0: 'TCP_DSM_DISABLE', - 1: 'TCP_DSM_SEL0', - 2: 'TCP_DSM_SEL1', - 3: 'TCP_DSM_SEL_BOTH', -} -TCP_DSM_DISABLE = 0 -TCP_DSM_SEL0 = 1 -TCP_DSM_SEL1 = 2 -TCP_DSM_SEL_BOTH = 3 -TCP_DSM_DATA_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_DSM_INJECT_SEL' -TCP_DSM_INJECT_SEL__enumvalues = { - 0: 'TCP_DSM_INJECT_SEL0', - 1: 'TCP_DSM_INJECT_SEL1', - 2: 'TCP_DSM_INJECT_SEL2', - 3: 'TCP_DSM_INJECT_SEL3', -} -TCP_DSM_INJECT_SEL0 = 0 -TCP_DSM_INJECT_SEL1 = 1 -TCP_DSM_INJECT_SEL2 = 2 -TCP_DSM_INJECT_SEL3 = 3 -TCP_DSM_INJECT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_DSM_SINGLE_WRITE' -TCP_DSM_SINGLE_WRITE__enumvalues = { - 0: 'TCP_DSM_SINGLE_WRITE_DIS', - 1: 'TCP_DSM_SINGLE_WRITE_EN', -} -TCP_DSM_SINGLE_WRITE_DIS = 0 -TCP_DSM_SINGLE_WRITE_EN = 1 -TCP_DSM_SINGLE_WRITE = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_OPCODE_TYPE' -TCP_OPCODE_TYPE__enumvalues = { - 0: 'TCP_OPCODE_READ', - 1: 'TCP_OPCODE_WRITE', - 2: 'TCP_OPCODE_ATOMIC', - 3: 'TCP_OPCODE_INV', - 4: 'TCP_OPCODE_ATOMIC_CMPSWAP', - 5: 'TCP_OPCODE_SAMPLER', - 6: 'TCP_OPCODE_LOAD', - 7: 'TCP_OPCODE_GATHERH', -} -TCP_OPCODE_READ = 0 -TCP_OPCODE_WRITE = 1 -TCP_OPCODE_ATOMIC = 2 -TCP_OPCODE_INV = 3 -TCP_OPCODE_ATOMIC_CMPSWAP = 4 -TCP_OPCODE_SAMPLER = 5 -TCP_OPCODE_LOAD = 6 -TCP_OPCODE_GATHERH = 7 -TCP_OPCODE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_PERFCOUNT_SELECT' -TCP_PERFCOUNT_SELECT__enumvalues = { - 0: 'TCP_PERF_SEL_GATE_EN1', - 1: 'TCP_PERF_SEL_GATE_EN2', - 2: 'TCP_PERF_SEL_TA_REQ', - 3: 'TCP_PERF_SEL_TA_REQ_STATE_READ', - 4: 'TCP_PERF_SEL_TA_REQ_READ', - 5: 'TCP_PERF_SEL_TA_REQ_WRITE', - 6: 'TCP_PERF_SEL_TA_REQ_ATOMIC_WITH_RET', - 7: 'TCP_PERF_SEL_TA_REQ_ATOMIC_WITHOUT_RET', - 8: 'TCP_PERF_SEL_TA_REQ_GL0_INV', - 9: 'TCP_PERF_SEL_REQ', - 10: 'TCP_PERF_SEL_REQ_READ', - 11: 'TCP_PERF_SEL_REQ_READ_HIT_EVICT', - 12: 'TCP_PERF_SEL_REQ_READ_HIT_LRU', - 13: 'TCP_PERF_SEL_REQ_READ_MISS_EVICT', - 14: 'TCP_PERF_SEL_REQ_WRITE', - 15: 'TCP_PERF_SEL_REQ_WRITE_MISS_EVICT', - 16: 'TCP_PERF_SEL_REQ_WRITE_MISS_LRU', - 17: 'TCP_PERF_SEL_REQ_NON_READ', - 18: 'TCP_PERF_SEL_REQ_MISS', - 19: 'TCP_PERF_SEL_REQ_TAGBANK0_SET0', - 20: 'TCP_PERF_SEL_REQ_TAGBANK0_SET1', - 21: 'TCP_PERF_SEL_REQ_TAGBANK1_SET0', - 22: 'TCP_PERF_SEL_REQ_TAGBANK1_SET1', - 23: 'TCP_PERF_SEL_REQ_TAGBANK2_SET0', - 24: 'TCP_PERF_SEL_REQ_TAGBANK2_SET1', - 25: 'TCP_PERF_SEL_REQ_TAGBANK3_SET0', - 26: 'TCP_PERF_SEL_REQ_TAGBANK3_SET1', - 27: 'TCP_PERF_SEL_REQ_MISS_TAGBANK0', - 28: 'TCP_PERF_SEL_REQ_MISS_TAGBANK1', - 29: 'TCP_PERF_SEL_REQ_MISS_TAGBANK2', - 30: 'TCP_PERF_SEL_REQ_MISS_TAGBANK3', - 31: 'TCP_PERF_SEL_GL1_REQ_READ', - 32: 'TCP_PERF_SEL_GL1_REQ_READ_128B', - 33: 'TCP_PERF_SEL_GL1_REQ_READ_64B', - 34: 'TCP_PERF_SEL_GL1_REQ_WRITE', - 35: 'TCP_PERF_SEL_GL1_REQ_ATOMIC_WITH_RET', - 36: 'TCP_PERF_SEL_GL1_REQ_ATOMIC_WITHOUT_RET', - 37: 'TCP_PERF_SEL_GL1_READ_LATENCY', - 38: 'TCP_PERF_SEL_GL1_WRITE_LATENCY', - 39: 'TCP_PERF_SEL_TCP_LATENCY', - 40: 'TCP_PERF_SEL_TCP_TA_REQ_STALL', - 41: 'TCP_PERF_SEL_TA_TCP_REQ_STARVE', - 42: 'TCP_PERF_SEL_DATA_FIFO_STALL', - 43: 'TCP_PERF_SEL_LOD_STALL', - 44: 'TCP_PERF_SEL_POWER_STALL', - 45: 'TCP_PERF_SEL_ALLOC_STALL', - 46: 'TCP_PERF_SEL_UNORDERED_MTYPE_STALL', - 47: 'TCP_PERF_SEL_READ_TAGCONFLICT_STALL', - 48: 'TCP_PERF_SEL_WRITE_TAGCONFLICT_STALL', - 49: 'TCP_PERF_SEL_ATOMIC_TAGCONFLICT_STALL', - 50: 'TCP_PERF_SEL_LFIFO_STALL', - 51: 'TCP_PERF_SEL_MEM_REQ_FIFO_STALL', - 52: 'TCP_PERF_SEL_GL1_TCP_BACK_PRESSURE', - 53: 'TCP_PERF_SEL_GL1_TCP_RDRET_STALL', - 54: 'TCP_PERF_SEL_GL1_GRANT_READ_STALL', - 55: 'TCP_PERF_SEL_GL1_PENDING_STALL', - 56: 'TCP_PERF_SEL_OFIFO_INCOMPLETE_STALL', - 57: 'TCP_PERF_SEL_OFIFO_AGE_ORDER_STALL', - 58: 'TCP_PERF_SEL_TD_DATA_CYCLE_STALL', - 59: 'TCP_PERF_SEL_COMP_TEX_LOAD_STALL', - 60: 'TCP_PERF_SEL_READ_DATACONFLICT_STALL', - 61: 'TCP_PERF_SEL_WRITE_DATACONFLICT_STALL', - 62: 'TCP_PERF_SEL_TD_TCP_STALL', -} -TCP_PERF_SEL_GATE_EN1 = 0 -TCP_PERF_SEL_GATE_EN2 = 1 -TCP_PERF_SEL_TA_REQ = 2 -TCP_PERF_SEL_TA_REQ_STATE_READ = 3 -TCP_PERF_SEL_TA_REQ_READ = 4 -TCP_PERF_SEL_TA_REQ_WRITE = 5 -TCP_PERF_SEL_TA_REQ_ATOMIC_WITH_RET = 6 -TCP_PERF_SEL_TA_REQ_ATOMIC_WITHOUT_RET = 7 -TCP_PERF_SEL_TA_REQ_GL0_INV = 8 -TCP_PERF_SEL_REQ = 9 -TCP_PERF_SEL_REQ_READ = 10 -TCP_PERF_SEL_REQ_READ_HIT_EVICT = 11 -TCP_PERF_SEL_REQ_READ_HIT_LRU = 12 -TCP_PERF_SEL_REQ_READ_MISS_EVICT = 13 -TCP_PERF_SEL_REQ_WRITE = 14 -TCP_PERF_SEL_REQ_WRITE_MISS_EVICT = 15 -TCP_PERF_SEL_REQ_WRITE_MISS_LRU = 16 -TCP_PERF_SEL_REQ_NON_READ = 17 -TCP_PERF_SEL_REQ_MISS = 18 -TCP_PERF_SEL_REQ_TAGBANK0_SET0 = 19 -TCP_PERF_SEL_REQ_TAGBANK0_SET1 = 20 -TCP_PERF_SEL_REQ_TAGBANK1_SET0 = 21 -TCP_PERF_SEL_REQ_TAGBANK1_SET1 = 22 -TCP_PERF_SEL_REQ_TAGBANK2_SET0 = 23 -TCP_PERF_SEL_REQ_TAGBANK2_SET1 = 24 -TCP_PERF_SEL_REQ_TAGBANK3_SET0 = 25 -TCP_PERF_SEL_REQ_TAGBANK3_SET1 = 26 -TCP_PERF_SEL_REQ_MISS_TAGBANK0 = 27 -TCP_PERF_SEL_REQ_MISS_TAGBANK1 = 28 -TCP_PERF_SEL_REQ_MISS_TAGBANK2 = 29 -TCP_PERF_SEL_REQ_MISS_TAGBANK3 = 30 -TCP_PERF_SEL_GL1_REQ_READ = 31 -TCP_PERF_SEL_GL1_REQ_READ_128B = 32 -TCP_PERF_SEL_GL1_REQ_READ_64B = 33 -TCP_PERF_SEL_GL1_REQ_WRITE = 34 -TCP_PERF_SEL_GL1_REQ_ATOMIC_WITH_RET = 35 -TCP_PERF_SEL_GL1_REQ_ATOMIC_WITHOUT_RET = 36 -TCP_PERF_SEL_GL1_READ_LATENCY = 37 -TCP_PERF_SEL_GL1_WRITE_LATENCY = 38 -TCP_PERF_SEL_TCP_LATENCY = 39 -TCP_PERF_SEL_TCP_TA_REQ_STALL = 40 -TCP_PERF_SEL_TA_TCP_REQ_STARVE = 41 -TCP_PERF_SEL_DATA_FIFO_STALL = 42 -TCP_PERF_SEL_LOD_STALL = 43 -TCP_PERF_SEL_POWER_STALL = 44 -TCP_PERF_SEL_ALLOC_STALL = 45 -TCP_PERF_SEL_UNORDERED_MTYPE_STALL = 46 -TCP_PERF_SEL_READ_TAGCONFLICT_STALL = 47 -TCP_PERF_SEL_WRITE_TAGCONFLICT_STALL = 48 -TCP_PERF_SEL_ATOMIC_TAGCONFLICT_STALL = 49 -TCP_PERF_SEL_LFIFO_STALL = 50 -TCP_PERF_SEL_MEM_REQ_FIFO_STALL = 51 -TCP_PERF_SEL_GL1_TCP_BACK_PRESSURE = 52 -TCP_PERF_SEL_GL1_TCP_RDRET_STALL = 53 -TCP_PERF_SEL_GL1_GRANT_READ_STALL = 54 -TCP_PERF_SEL_GL1_PENDING_STALL = 55 -TCP_PERF_SEL_OFIFO_INCOMPLETE_STALL = 56 -TCP_PERF_SEL_OFIFO_AGE_ORDER_STALL = 57 -TCP_PERF_SEL_TD_DATA_CYCLE_STALL = 58 -TCP_PERF_SEL_COMP_TEX_LOAD_STALL = 59 -TCP_PERF_SEL_READ_DATACONFLICT_STALL = 60 -TCP_PERF_SEL_WRITE_DATACONFLICT_STALL = 61 -TCP_PERF_SEL_TD_TCP_STALL = 62 -TCP_PERFCOUNT_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'TCP_WATCH_MODES' -TCP_WATCH_MODES__enumvalues = { - 0: 'TCP_WATCH_MODE_READ', - 1: 'TCP_WATCH_MODE_NONREAD', - 2: 'TCP_WATCH_MODE_ATOMIC', - 3: 'TCP_WATCH_MODE_ALL', -} -TCP_WATCH_MODE_READ = 0 -TCP_WATCH_MODE_NONREAD = 1 -TCP_WATCH_MODE_ATOMIC = 2 -TCP_WATCH_MODE_ALL = 3 -TCP_WATCH_MODES = ctypes.c_uint32 # enum - -# values for enumeration 'TD_PERFCOUNT_SEL' -TD_PERFCOUNT_SEL__enumvalues = { - 0: 'TD_PERF_SEL_none', - 1: 'TD_PERF_SEL_td_busy', - 2: 'TD_PERF_SEL_input_busy', - 3: 'TD_PERF_SEL_sampler_lerp_busy', - 4: 'TD_PERF_SEL_sampler_out_busy', - 5: 'TD_PERF_SEL_nofilter_busy', - 6: 'TD_PERF_SEL_ray_tracing_bvh4_busy', - 7: 'TD_PERF_SEL_sampler_core_sclk_en', - 8: 'TD_PERF_SEL_sampler_preformatter_sclk_en', - 9: 'TD_PERF_SEL_sampler_bilerp_sclk_en', - 10: 'TD_PERF_SEL_sampler_bypass_sclk_en', - 11: 'TD_PERF_SEL_sampler_minmax_sclk_en', - 12: 'TD_PERF_SEL_sampler_accum_sclk_en', - 13: 'TD_PERF_SEL_sampler_format_flt_sclk_en', - 14: 'TD_PERF_SEL_sampler_format_fxdpt_sclk_en', - 15: 'TD_PERF_SEL_sampler_out_sclk_en', - 16: 'TD_PERF_SEL_nofilter_sclk_en', - 17: 'TD_PERF_SEL_nofilter_d32_sclk_en', - 18: 'TD_PERF_SEL_nofilter_d16_sclk_en', - 22: 'TD_PERF_SEL_ray_tracing_bvh4_sclk_en', - 23: 'TD_PERF_SEL_ray_tracing_bvh4_ip_sclk_en', - 24: 'TD_PERF_SEL_ray_tracing_bvh4_box_sclk_en', - 25: 'TD_PERF_SEL_ray_tracing_bvh4_tri_sclk_en', - 26: 'TD_PERF_SEL_sampler_sclk_on_nofilter_sclk_off', - 27: 'TD_PERF_SEL_nofilter_sclk_on_sampler_sclk_off', - 28: 'TD_PERF_SEL_all_pipes_sclk_on_at_same_time', - 29: 'TD_PERF_SEL_sampler_and_nofilter_sclk_on_bvh4_sclk_off', - 30: 'TD_PERF_SEL_sampler_and_bvh4_sclk_on_nofilter_sclk_off', - 31: 'TD_PERF_SEL_nofilter_and_bvh4_sclk_on_sampler_sclk_off', - 32: 'TD_PERF_SEL_core_state_ram_max_cnt', - 33: 'TD_PERF_SEL_core_state_rams_read', - 34: 'TD_PERF_SEL_weight_data_rams_read', - 35: 'TD_PERF_SEL_reference_data_rams_read', - 36: 'TD_PERF_SEL_tc_td_ram_fifo_full', - 37: 'TD_PERF_SEL_tc_td_ram_fifo_max_cnt', - 38: 'TD_PERF_SEL_tc_td_data_fifo_full', - 39: 'TD_PERF_SEL_input_state_fifo_full', - 40: 'TD_PERF_SEL_ta_data_stall', - 41: 'TD_PERF_SEL_tc_data_stall', - 42: 'TD_PERF_SEL_tc_ram_stall', - 43: 'TD_PERF_SEL_lds_stall', - 44: 'TD_PERF_SEL_sampler_pkr_full', - 45: 'TD_PERF_SEL_sampler_pkr_full_due_to_arb', - 46: 'TD_PERF_SEL_nofilter_pkr_full', - 47: 'TD_PERF_SEL_nofilter_pkr_full_due_to_arb', - 48: 'TD_PERF_SEL_ray_tracing_bvh4_pkr_full', - 49: 'TD_PERF_SEL_ray_tracing_bvh4_pkr_full_due_to_arb', - 50: 'TD_PERF_SEL_gather4_instr', - 51: 'TD_PERF_SEL_gather4h_instr', - 54: 'TD_PERF_SEL_sample_instr', - 55: 'TD_PERF_SEL_sample_c_instr', - 56: 'TD_PERF_SEL_load_instr', - 57: 'TD_PERF_SEL_ldfptr_instr', - 58: 'TD_PERF_SEL_write_ack_instr', - 59: 'TD_PERF_SEL_d16_en_instr', - 60: 'TD_PERF_SEL_bypassLerp_instr', - 61: 'TD_PERF_SEL_min_max_filter_instr', - 62: 'TD_PERF_SEL_one_comp_return_instr', - 63: 'TD_PERF_SEL_two_comp_return_instr', - 64: 'TD_PERF_SEL_three_comp_return_instr', - 65: 'TD_PERF_SEL_four_comp_return_instr', - 66: 'TD_PERF_SEL_user_defined_border', - 67: 'TD_PERF_SEL_white_border', - 68: 'TD_PERF_SEL_opaque_black_border', - 69: 'TD_PERF_SEL_lod_warn_from_ta', - 70: 'TD_PERF_SEL_instruction_dest_is_lds', - 71: 'TD_PERF_SEL_td_cycling_of_nofilter_instr_2cycles', - 72: 'TD_PERF_SEL_td_cycling_of_nofilter_instr_4cycles', - 73: 'TD_PERF_SEL_tc_cycling_of_nofilter_instr_2cycles', - 74: 'TD_PERF_SEL_tc_cycling_of_nofilter_instr_4cycles', - 75: 'TD_PERF_SEL_out_of_order_instr', - 76: 'TD_PERF_SEL_total_num_instr', - 77: 'TD_PERF_SEL_total_num_instr_with_perf_wdw', - 78: 'TD_PERF_SEL_total_num_sampler_instr', - 79: 'TD_PERF_SEL_total_num_sampler_instr_with_perf_wdw', - 80: 'TD_PERF_SEL_total_num_nofilter_instr', - 81: 'TD_PERF_SEL_total_num_nofilter_instr_with_perf_wdw', - 82: 'TD_PERF_SEL_total_num_ray_tracing_bvh4_instr', - 83: 'TD_PERF_SEL_total_num_ray_tracing_bvh4_instr_with_perf_wdw', - 84: 'TD_PERF_SEL_mixmode_instr', - 85: 'TD_PERF_SEL_mixmode_resource', - 86: 'TD_PERF_SEL_status_packet', - 87: 'TD_PERF_SEL_address_cmd_poison', - 88: 'TD_PERF_SEL_data_poison', - 89: 'TD_PERF_SEL_done_scoreboard_max_stored_cnt', - 90: 'TD_PERF_SEL_done_scoreboard_max_waiting_cnt', - 91: 'TD_PERF_SEL_done_scoreboard_not_empty', - 92: 'TD_PERF_SEL_done_scoreboard_is_full', - 93: 'TD_PERF_SEL_done_scoreboard_bp_due_to_ooo', - 94: 'TD_PERF_SEL_done_scoreboard_bp_due_to_lds', - 95: 'TD_PERF_SEL_nofilter_formatters_turned_on', - 96: 'TD_PERF_SEL_nofilter_insert_extra_comps', - 97: 'TD_PERF_SEL_nofilter_popcount_dmask_gt_num_comp_of_fmt', - 98: 'TD_PERF_SEL_nofilter_popcount_dmask_lt_num_comp_of_fmt', - 99: 'TD_PERF_SEL_msaa_load_instr', - 100: 'TD_PERF_SEL_blend_prt_with_prt_default_0', - 101: 'TD_PERF_SEL_blend_prt_with_prt_default_1', - 102: 'TD_PERF_SEL_resmap_instr', - 103: 'TD_PERF_SEL_prt_ack_instr', - 104: 'TD_PERF_SEL_resmap_with_volume_filtering', - 105: 'TD_PERF_SEL_resmap_with_aniso_filtering', - 106: 'TD_PERF_SEL_resmap_with_no_more_filtering', - 107: 'TD_PERF_SEL_resmap_with_cubemap_corner', - 108: 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_0', - 109: 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_1', - 110: 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_2', - 111: 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_3to4', - 112: 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_5to8', - 113: 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_9to16', - 114: 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_17to31', - 115: 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_32', - 116: 'TD_PERF_SEL_ray_tracing_bvh4_fp16_box_node', - 117: 'TD_PERF_SEL_ray_tracing_bvh4_fp32_box_node', - 118: 'TD_PERF_SEL_ray_tracing_bvh4_tri_node', - 119: 'TD_PERF_SEL_ray_tracing_bvh4_dropped_box_node', - 120: 'TD_PERF_SEL_ray_tracing_bvh4_dropped_tri_node', - 121: 'TD_PERF_SEL_ray_tracing_bvh4_invalid_box_node', - 122: 'TD_PERF_SEL_ray_tracing_bvh4_invalid_tri_node', - 123: 'TD_PERF_SEL_ray_tracing_bvh4_box_sort_en', - 124: 'TD_PERF_SEL_ray_tracing_bvh4_box_grow_val_nonzero', - 125: 'TD_PERF_SEL_ray_tracing_bvh4_num_box_with_inf_or_nan_vtx', - 126: 'TD_PERF_SEL_ray_tracing_bvh4_num_tri_with_inf_or_nan_vtx', - 127: 'TD_PERF_SEL_ray_tracing_bvh4_num_box_that_squashed_a_nan', - 128: 'TD_PERF_SEL_ray_tracing_bvh4_num_box_misses', - 129: 'TD_PERF_SEL_ray_tracing_bvh4_num_tri_misses', - 130: 'TD_PERF_SEL_ray_tracing_bvh4_num_tri_tie_breakers', - 131: 'TD_PERF_SEL_burst_bin_preempting_nofilter_1', - 132: 'TD_PERF_SEL_burst_bin_preempting_nofilter_2to4', - 133: 'TD_PERF_SEL_burst_bin_preempting_nofilter_5to7', - 134: 'TD_PERF_SEL_burst_bin_preempting_nofilter_8to16', - 135: 'TD_PERF_SEL_burst_bin_preempting_nofilter_gt16', - 136: 'TD_PERF_SEL_burst_bin_sampler_1', - 137: 'TD_PERF_SEL_burst_bin_sampler_2to8', - 138: 'TD_PERF_SEL_burst_bin_sampler_9to16', - 139: 'TD_PERF_SEL_burst_bin_sampler_gt16', - 140: 'TD_PERF_SEL_burst_bin_gather_1', - 141: 'TD_PERF_SEL_burst_bin_gather_2to8', - 142: 'TD_PERF_SEL_burst_bin_gather_9to16', - 143: 'TD_PERF_SEL_burst_bin_gather_gt16', - 144: 'TD_PERF_SEL_burst_bin_nofilter_1', - 145: 'TD_PERF_SEL_burst_bin_nofilter_2to4', - 146: 'TD_PERF_SEL_burst_bin_nofilter_5to7', - 147: 'TD_PERF_SEL_burst_bin_nofilter_8to16', - 148: 'TD_PERF_SEL_burst_bin_nofilter_gt16', - 149: 'TD_PERF_SEL_burst_bin_bvh4_1', - 150: 'TD_PERF_SEL_burst_bin_bvh4_2to8', - 151: 'TD_PERF_SEL_burst_bin_bvh4_9to16', - 152: 'TD_PERF_SEL_burst_bin_bvh4_gt16', - 153: 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_1', - 154: 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_2to4', - 155: 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_5to7', - 156: 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_8to16', - 157: 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_gt16', - 158: 'TD_PERF_SEL_burst_bin_bvh4_tri_nodes_1', - 159: 'TD_PERF_SEL_burst_bin_bvh4_tri_nodes_2to8', - 160: 'TD_PERF_SEL_burst_bin_bvh4_tri_nodes_9to16', - 161: 'TD_PERF_SEL_burst_bin_bvh4_tri_nodes_gt16', - 162: 'TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_1', - 163: 'TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_2to8', - 164: 'TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_9to16', - 165: 'TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_gt16', - 166: 'TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_1', - 167: 'TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_2to8', - 168: 'TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_9to16', - 169: 'TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_gt16', - 170: 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_0', - 171: 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_1', - 172: 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_2to31', - 173: 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_32to127', - 174: 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_128to511', - 175: 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_gt511', - 176: 'TD_PERF_SEL_bubble_bin_lds_stall_1to3', - 177: 'TD_PERF_SEL_bubble_bin_lds_stall_4to7', - 178: 'TD_PERF_SEL_bubble_bin_lds_stall_8to15', - 179: 'TD_PERF_SEL_bubble_bin_lds_stall_gt15', - 180: 'TD_PERF_SEL_preempting_nofilter_max_cnt', - 181: 'TD_PERF_SEL_sampler_lerp0_active', - 182: 'TD_PERF_SEL_sampler_lerp1_active', - 183: 'TD_PERF_SEL_sampler_lerp2_active', - 184: 'TD_PERF_SEL_sampler_lerp3_active', - 185: 'TD_PERF_SEL_nofilter_total_num_comps_to_lds', - 186: 'TD_PERF_SEL_nofilter_byte_cycling_4cycles', - 187: 'TD_PERF_SEL_nofilter_byte_cycling_8cycles', - 188: 'TD_PERF_SEL_nofilter_byte_cycling_16cycles', - 189: 'TD_PERF_SEL_nofilter_dword_cycling_2cycles', - 190: 'TD_PERF_SEL_nofilter_dword_cycling_4cycles', - 191: 'TD_PERF_SEL_input_bp_due_to_done_scoreboard_full', - 192: 'TD_PERF_SEL_ray_tracing_bvh4_instr_invld_thread_cnt', -} -TD_PERF_SEL_none = 0 -TD_PERF_SEL_td_busy = 1 -TD_PERF_SEL_input_busy = 2 -TD_PERF_SEL_sampler_lerp_busy = 3 -TD_PERF_SEL_sampler_out_busy = 4 -TD_PERF_SEL_nofilter_busy = 5 -TD_PERF_SEL_ray_tracing_bvh4_busy = 6 -TD_PERF_SEL_sampler_core_sclk_en = 7 -TD_PERF_SEL_sampler_preformatter_sclk_en = 8 -TD_PERF_SEL_sampler_bilerp_sclk_en = 9 -TD_PERF_SEL_sampler_bypass_sclk_en = 10 -TD_PERF_SEL_sampler_minmax_sclk_en = 11 -TD_PERF_SEL_sampler_accum_sclk_en = 12 -TD_PERF_SEL_sampler_format_flt_sclk_en = 13 -TD_PERF_SEL_sampler_format_fxdpt_sclk_en = 14 -TD_PERF_SEL_sampler_out_sclk_en = 15 -TD_PERF_SEL_nofilter_sclk_en = 16 -TD_PERF_SEL_nofilter_d32_sclk_en = 17 -TD_PERF_SEL_nofilter_d16_sclk_en = 18 -TD_PERF_SEL_ray_tracing_bvh4_sclk_en = 22 -TD_PERF_SEL_ray_tracing_bvh4_ip_sclk_en = 23 -TD_PERF_SEL_ray_tracing_bvh4_box_sclk_en = 24 -TD_PERF_SEL_ray_tracing_bvh4_tri_sclk_en = 25 -TD_PERF_SEL_sampler_sclk_on_nofilter_sclk_off = 26 -TD_PERF_SEL_nofilter_sclk_on_sampler_sclk_off = 27 -TD_PERF_SEL_all_pipes_sclk_on_at_same_time = 28 -TD_PERF_SEL_sampler_and_nofilter_sclk_on_bvh4_sclk_off = 29 -TD_PERF_SEL_sampler_and_bvh4_sclk_on_nofilter_sclk_off = 30 -TD_PERF_SEL_nofilter_and_bvh4_sclk_on_sampler_sclk_off = 31 -TD_PERF_SEL_core_state_ram_max_cnt = 32 -TD_PERF_SEL_core_state_rams_read = 33 -TD_PERF_SEL_weight_data_rams_read = 34 -TD_PERF_SEL_reference_data_rams_read = 35 -TD_PERF_SEL_tc_td_ram_fifo_full = 36 -TD_PERF_SEL_tc_td_ram_fifo_max_cnt = 37 -TD_PERF_SEL_tc_td_data_fifo_full = 38 -TD_PERF_SEL_input_state_fifo_full = 39 -TD_PERF_SEL_ta_data_stall = 40 -TD_PERF_SEL_tc_data_stall = 41 -TD_PERF_SEL_tc_ram_stall = 42 -TD_PERF_SEL_lds_stall = 43 -TD_PERF_SEL_sampler_pkr_full = 44 -TD_PERF_SEL_sampler_pkr_full_due_to_arb = 45 -TD_PERF_SEL_nofilter_pkr_full = 46 -TD_PERF_SEL_nofilter_pkr_full_due_to_arb = 47 -TD_PERF_SEL_ray_tracing_bvh4_pkr_full = 48 -TD_PERF_SEL_ray_tracing_bvh4_pkr_full_due_to_arb = 49 -TD_PERF_SEL_gather4_instr = 50 -TD_PERF_SEL_gather4h_instr = 51 -TD_PERF_SEL_sample_instr = 54 -TD_PERF_SEL_sample_c_instr = 55 -TD_PERF_SEL_load_instr = 56 -TD_PERF_SEL_ldfptr_instr = 57 -TD_PERF_SEL_write_ack_instr = 58 -TD_PERF_SEL_d16_en_instr = 59 -TD_PERF_SEL_bypassLerp_instr = 60 -TD_PERF_SEL_min_max_filter_instr = 61 -TD_PERF_SEL_one_comp_return_instr = 62 -TD_PERF_SEL_two_comp_return_instr = 63 -TD_PERF_SEL_three_comp_return_instr = 64 -TD_PERF_SEL_four_comp_return_instr = 65 -TD_PERF_SEL_user_defined_border = 66 -TD_PERF_SEL_white_border = 67 -TD_PERF_SEL_opaque_black_border = 68 -TD_PERF_SEL_lod_warn_from_ta = 69 -TD_PERF_SEL_instruction_dest_is_lds = 70 -TD_PERF_SEL_td_cycling_of_nofilter_instr_2cycles = 71 -TD_PERF_SEL_td_cycling_of_nofilter_instr_4cycles = 72 -TD_PERF_SEL_tc_cycling_of_nofilter_instr_2cycles = 73 -TD_PERF_SEL_tc_cycling_of_nofilter_instr_4cycles = 74 -TD_PERF_SEL_out_of_order_instr = 75 -TD_PERF_SEL_total_num_instr = 76 -TD_PERF_SEL_total_num_instr_with_perf_wdw = 77 -TD_PERF_SEL_total_num_sampler_instr = 78 -TD_PERF_SEL_total_num_sampler_instr_with_perf_wdw = 79 -TD_PERF_SEL_total_num_nofilter_instr = 80 -TD_PERF_SEL_total_num_nofilter_instr_with_perf_wdw = 81 -TD_PERF_SEL_total_num_ray_tracing_bvh4_instr = 82 -TD_PERF_SEL_total_num_ray_tracing_bvh4_instr_with_perf_wdw = 83 -TD_PERF_SEL_mixmode_instr = 84 -TD_PERF_SEL_mixmode_resource = 85 -TD_PERF_SEL_status_packet = 86 -TD_PERF_SEL_address_cmd_poison = 87 -TD_PERF_SEL_data_poison = 88 -TD_PERF_SEL_done_scoreboard_max_stored_cnt = 89 -TD_PERF_SEL_done_scoreboard_max_waiting_cnt = 90 -TD_PERF_SEL_done_scoreboard_not_empty = 91 -TD_PERF_SEL_done_scoreboard_is_full = 92 -TD_PERF_SEL_done_scoreboard_bp_due_to_ooo = 93 -TD_PERF_SEL_done_scoreboard_bp_due_to_lds = 94 -TD_PERF_SEL_nofilter_formatters_turned_on = 95 -TD_PERF_SEL_nofilter_insert_extra_comps = 96 -TD_PERF_SEL_nofilter_popcount_dmask_gt_num_comp_of_fmt = 97 -TD_PERF_SEL_nofilter_popcount_dmask_lt_num_comp_of_fmt = 98 -TD_PERF_SEL_msaa_load_instr = 99 -TD_PERF_SEL_blend_prt_with_prt_default_0 = 100 -TD_PERF_SEL_blend_prt_with_prt_default_1 = 101 -TD_PERF_SEL_resmap_instr = 102 -TD_PERF_SEL_prt_ack_instr = 103 -TD_PERF_SEL_resmap_with_volume_filtering = 104 -TD_PERF_SEL_resmap_with_aniso_filtering = 105 -TD_PERF_SEL_resmap_with_no_more_filtering = 106 -TD_PERF_SEL_resmap_with_cubemap_corner = 107 -TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_0 = 108 -TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_1 = 109 -TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_2 = 110 -TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_3to4 = 111 -TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_5to8 = 112 -TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_9to16 = 113 -TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_17to31 = 114 -TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_32 = 115 -TD_PERF_SEL_ray_tracing_bvh4_fp16_box_node = 116 -TD_PERF_SEL_ray_tracing_bvh4_fp32_box_node = 117 -TD_PERF_SEL_ray_tracing_bvh4_tri_node = 118 -TD_PERF_SEL_ray_tracing_bvh4_dropped_box_node = 119 -TD_PERF_SEL_ray_tracing_bvh4_dropped_tri_node = 120 -TD_PERF_SEL_ray_tracing_bvh4_invalid_box_node = 121 -TD_PERF_SEL_ray_tracing_bvh4_invalid_tri_node = 122 -TD_PERF_SEL_ray_tracing_bvh4_box_sort_en = 123 -TD_PERF_SEL_ray_tracing_bvh4_box_grow_val_nonzero = 124 -TD_PERF_SEL_ray_tracing_bvh4_num_box_with_inf_or_nan_vtx = 125 -TD_PERF_SEL_ray_tracing_bvh4_num_tri_with_inf_or_nan_vtx = 126 -TD_PERF_SEL_ray_tracing_bvh4_num_box_that_squashed_a_nan = 127 -TD_PERF_SEL_ray_tracing_bvh4_num_box_misses = 128 -TD_PERF_SEL_ray_tracing_bvh4_num_tri_misses = 129 -TD_PERF_SEL_ray_tracing_bvh4_num_tri_tie_breakers = 130 -TD_PERF_SEL_burst_bin_preempting_nofilter_1 = 131 -TD_PERF_SEL_burst_bin_preempting_nofilter_2to4 = 132 -TD_PERF_SEL_burst_bin_preempting_nofilter_5to7 = 133 -TD_PERF_SEL_burst_bin_preempting_nofilter_8to16 = 134 -TD_PERF_SEL_burst_bin_preempting_nofilter_gt16 = 135 -TD_PERF_SEL_burst_bin_sampler_1 = 136 -TD_PERF_SEL_burst_bin_sampler_2to8 = 137 -TD_PERF_SEL_burst_bin_sampler_9to16 = 138 -TD_PERF_SEL_burst_bin_sampler_gt16 = 139 -TD_PERF_SEL_burst_bin_gather_1 = 140 -TD_PERF_SEL_burst_bin_gather_2to8 = 141 -TD_PERF_SEL_burst_bin_gather_9to16 = 142 -TD_PERF_SEL_burst_bin_gather_gt16 = 143 -TD_PERF_SEL_burst_bin_nofilter_1 = 144 -TD_PERF_SEL_burst_bin_nofilter_2to4 = 145 -TD_PERF_SEL_burst_bin_nofilter_5to7 = 146 -TD_PERF_SEL_burst_bin_nofilter_8to16 = 147 -TD_PERF_SEL_burst_bin_nofilter_gt16 = 148 -TD_PERF_SEL_burst_bin_bvh4_1 = 149 -TD_PERF_SEL_burst_bin_bvh4_2to8 = 150 -TD_PERF_SEL_burst_bin_bvh4_9to16 = 151 -TD_PERF_SEL_burst_bin_bvh4_gt16 = 152 -TD_PERF_SEL_burst_bin_bvh4_box_nodes_1 = 153 -TD_PERF_SEL_burst_bin_bvh4_box_nodes_2to4 = 154 -TD_PERF_SEL_burst_bin_bvh4_box_nodes_5to7 = 155 -TD_PERF_SEL_burst_bin_bvh4_box_nodes_8to16 = 156 -TD_PERF_SEL_burst_bin_bvh4_box_nodes_gt16 = 157 -TD_PERF_SEL_burst_bin_bvh4_tri_nodes_1 = 158 -TD_PERF_SEL_burst_bin_bvh4_tri_nodes_2to8 = 159 -TD_PERF_SEL_burst_bin_bvh4_tri_nodes_9to16 = 160 -TD_PERF_SEL_burst_bin_bvh4_tri_nodes_gt16 = 161 -TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_1 = 162 -TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_2to8 = 163 -TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_9to16 = 164 -TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_gt16 = 165 -TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_1 = 166 -TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_2to8 = 167 -TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_9to16 = 168 -TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_gt16 = 169 -TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_0 = 170 -TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_1 = 171 -TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_2to31 = 172 -TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_32to127 = 173 -TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_128to511 = 174 -TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_gt511 = 175 -TD_PERF_SEL_bubble_bin_lds_stall_1to3 = 176 -TD_PERF_SEL_bubble_bin_lds_stall_4to7 = 177 -TD_PERF_SEL_bubble_bin_lds_stall_8to15 = 178 -TD_PERF_SEL_bubble_bin_lds_stall_gt15 = 179 -TD_PERF_SEL_preempting_nofilter_max_cnt = 180 -TD_PERF_SEL_sampler_lerp0_active = 181 -TD_PERF_SEL_sampler_lerp1_active = 182 -TD_PERF_SEL_sampler_lerp2_active = 183 -TD_PERF_SEL_sampler_lerp3_active = 184 -TD_PERF_SEL_nofilter_total_num_comps_to_lds = 185 -TD_PERF_SEL_nofilter_byte_cycling_4cycles = 186 -TD_PERF_SEL_nofilter_byte_cycling_8cycles = 187 -TD_PERF_SEL_nofilter_byte_cycling_16cycles = 188 -TD_PERF_SEL_nofilter_dword_cycling_2cycles = 189 -TD_PERF_SEL_nofilter_dword_cycling_4cycles = 190 -TD_PERF_SEL_input_bp_due_to_done_scoreboard_full = 191 -TD_PERF_SEL_ray_tracing_bvh4_instr_invld_thread_cnt = 192 -TD_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GL2A_PERF_SEL' -GL2A_PERF_SEL__enumvalues = { - 0: 'GL2A_PERF_SEL_NONE', - 1: 'GL2A_PERF_SEL_CYCLE', - 2: 'GL2A_PERF_SEL_BUSY', - 3: 'GL2A_PERF_SEL_REQ_GL2C0', - 4: 'GL2A_PERF_SEL_REQ_GL2C1', - 5: 'GL2A_PERF_SEL_REQ_GL2C2', - 6: 'GL2A_PERF_SEL_REQ_GL2C3', - 7: 'GL2A_PERF_SEL_REQ_GL2C4', - 8: 'GL2A_PERF_SEL_REQ_GL2C5', - 9: 'GL2A_PERF_SEL_REQ_GL2C6', - 10: 'GL2A_PERF_SEL_REQ_GL2C7', - 11: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C0', - 12: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C1', - 13: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C2', - 14: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C3', - 15: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C4', - 16: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C5', - 17: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C6', - 18: 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C7', - 19: 'GL2A_PERF_SEL_REQ_BURST_GL2C0', - 20: 'GL2A_PERF_SEL_REQ_BURST_GL2C1', - 21: 'GL2A_PERF_SEL_REQ_BURST_GL2C2', - 22: 'GL2A_PERF_SEL_REQ_BURST_GL2C3', - 23: 'GL2A_PERF_SEL_REQ_BURST_GL2C4', - 24: 'GL2A_PERF_SEL_REQ_BURST_GL2C5', - 25: 'GL2A_PERF_SEL_REQ_BURST_GL2C6', - 26: 'GL2A_PERF_SEL_REQ_BURST_GL2C7', - 27: 'GL2A_PERF_SEL_REQ_STALL_GL2C0', - 28: 'GL2A_PERF_SEL_REQ_STALL_GL2C1', - 29: 'GL2A_PERF_SEL_REQ_STALL_GL2C2', - 30: 'GL2A_PERF_SEL_REQ_STALL_GL2C3', - 31: 'GL2A_PERF_SEL_REQ_STALL_GL2C4', - 32: 'GL2A_PERF_SEL_REQ_STALL_GL2C5', - 33: 'GL2A_PERF_SEL_REQ_STALL_GL2C6', - 34: 'GL2A_PERF_SEL_REQ_STALL_GL2C7', - 35: 'GL2A_PERF_SEL_RTN_STALL_GL2C0', - 36: 'GL2A_PERF_SEL_RTN_STALL_GL2C1', - 37: 'GL2A_PERF_SEL_RTN_STALL_GL2C2', - 38: 'GL2A_PERF_SEL_RTN_STALL_GL2C3', - 39: 'GL2A_PERF_SEL_RTN_STALL_GL2C4', - 40: 'GL2A_PERF_SEL_RTN_STALL_GL2C5', - 41: 'GL2A_PERF_SEL_RTN_STALL_GL2C6', - 42: 'GL2A_PERF_SEL_RTN_STALL_GL2C7', - 43: 'GL2A_PERF_SEL_RTN_CLIENT0', - 44: 'GL2A_PERF_SEL_RTN_CLIENT1', - 45: 'GL2A_PERF_SEL_RTN_CLIENT2', - 46: 'GL2A_PERF_SEL_RTN_CLIENT3', - 47: 'GL2A_PERF_SEL_RTN_CLIENT4', - 48: 'GL2A_PERF_SEL_RTN_CLIENT5', - 49: 'GL2A_PERF_SEL_RTN_CLIENT6', - 50: 'GL2A_PERF_SEL_RTN_CLIENT7', - 51: 'GL2A_PERF_SEL_RTN_CLIENT8', - 52: 'GL2A_PERF_SEL_RTN_CLIENT9', - 53: 'GL2A_PERF_SEL_RTN_CLIENT10', - 54: 'GL2A_PERF_SEL_RTN_CLIENT11', - 55: 'GL2A_PERF_SEL_RTN_CLIENT12', - 56: 'GL2A_PERF_SEL_RTN_CLIENT13', - 57: 'GL2A_PERF_SEL_RTN_CLIENT14', - 58: 'GL2A_PERF_SEL_RTN_CLIENT15', - 59: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT0', - 60: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT1', - 61: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT2', - 62: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT3', - 63: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT4', - 64: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT5', - 65: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT6', - 66: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT7', - 67: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT8', - 68: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT9', - 69: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT10', - 70: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT11', - 71: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT12', - 72: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT13', - 73: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT14', - 74: 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT15', - 75: 'GL2A_PERF_SEL_REQ_BURST_CLIENT0', - 76: 'GL2A_PERF_SEL_REQ_BURST_CLIENT1', - 77: 'GL2A_PERF_SEL_REQ_BURST_CLIENT2', - 78: 'GL2A_PERF_SEL_REQ_BURST_CLIENT3', - 79: 'GL2A_PERF_SEL_REQ_BURST_CLIENT4', - 80: 'GL2A_PERF_SEL_REQ_BURST_CLIENT5', - 81: 'GL2A_PERF_SEL_REQ_BURST_CLIENT6', - 82: 'GL2A_PERF_SEL_REQ_BURST_CLIENT7', - 83: 'GL2A_PERF_SEL_REQ_BURST_CLIENT8', - 84: 'GL2A_PERF_SEL_REQ_BURST_CLIENT9', - 85: 'GL2A_PERF_SEL_REQ_BURST_CLIENT10', - 86: 'GL2A_PERF_SEL_REQ_BURST_CLIENT11', - 87: 'GL2A_PERF_SEL_REQ_BURST_CLIENT12', - 88: 'GL2A_PERF_SEL_REQ_BURST_CLIENT13', - 89: 'GL2A_PERF_SEL_REQ_BURST_CLIENT14', - 90: 'GL2A_PERF_SEL_REQ_BURST_CLIENT15', - 91: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT0', - 92: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT1', - 93: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT2', - 94: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT3', - 95: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT4', - 96: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT5', - 97: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT6', - 98: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT7', - 99: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT8', - 100: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT9', - 101: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT10', - 103: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT11', - 104: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT12', - 105: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT13', - 106: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT14', - 107: 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT15', -} -GL2A_PERF_SEL_NONE = 0 -GL2A_PERF_SEL_CYCLE = 1 -GL2A_PERF_SEL_BUSY = 2 -GL2A_PERF_SEL_REQ_GL2C0 = 3 -GL2A_PERF_SEL_REQ_GL2C1 = 4 -GL2A_PERF_SEL_REQ_GL2C2 = 5 -GL2A_PERF_SEL_REQ_GL2C3 = 6 -GL2A_PERF_SEL_REQ_GL2C4 = 7 -GL2A_PERF_SEL_REQ_GL2C5 = 8 -GL2A_PERF_SEL_REQ_GL2C6 = 9 -GL2A_PERF_SEL_REQ_GL2C7 = 10 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C0 = 11 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C1 = 12 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C2 = 13 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C3 = 14 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C4 = 15 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C5 = 16 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C6 = 17 -GL2A_PERF_SEL_REQ_HI_PRIO_GL2C7 = 18 -GL2A_PERF_SEL_REQ_BURST_GL2C0 = 19 -GL2A_PERF_SEL_REQ_BURST_GL2C1 = 20 -GL2A_PERF_SEL_REQ_BURST_GL2C2 = 21 -GL2A_PERF_SEL_REQ_BURST_GL2C3 = 22 -GL2A_PERF_SEL_REQ_BURST_GL2C4 = 23 -GL2A_PERF_SEL_REQ_BURST_GL2C5 = 24 -GL2A_PERF_SEL_REQ_BURST_GL2C6 = 25 -GL2A_PERF_SEL_REQ_BURST_GL2C7 = 26 -GL2A_PERF_SEL_REQ_STALL_GL2C0 = 27 -GL2A_PERF_SEL_REQ_STALL_GL2C1 = 28 -GL2A_PERF_SEL_REQ_STALL_GL2C2 = 29 -GL2A_PERF_SEL_REQ_STALL_GL2C3 = 30 -GL2A_PERF_SEL_REQ_STALL_GL2C4 = 31 -GL2A_PERF_SEL_REQ_STALL_GL2C5 = 32 -GL2A_PERF_SEL_REQ_STALL_GL2C6 = 33 -GL2A_PERF_SEL_REQ_STALL_GL2C7 = 34 -GL2A_PERF_SEL_RTN_STALL_GL2C0 = 35 -GL2A_PERF_SEL_RTN_STALL_GL2C1 = 36 -GL2A_PERF_SEL_RTN_STALL_GL2C2 = 37 -GL2A_PERF_SEL_RTN_STALL_GL2C3 = 38 -GL2A_PERF_SEL_RTN_STALL_GL2C4 = 39 -GL2A_PERF_SEL_RTN_STALL_GL2C5 = 40 -GL2A_PERF_SEL_RTN_STALL_GL2C6 = 41 -GL2A_PERF_SEL_RTN_STALL_GL2C7 = 42 -GL2A_PERF_SEL_RTN_CLIENT0 = 43 -GL2A_PERF_SEL_RTN_CLIENT1 = 44 -GL2A_PERF_SEL_RTN_CLIENT2 = 45 -GL2A_PERF_SEL_RTN_CLIENT3 = 46 -GL2A_PERF_SEL_RTN_CLIENT4 = 47 -GL2A_PERF_SEL_RTN_CLIENT5 = 48 -GL2A_PERF_SEL_RTN_CLIENT6 = 49 -GL2A_PERF_SEL_RTN_CLIENT7 = 50 -GL2A_PERF_SEL_RTN_CLIENT8 = 51 -GL2A_PERF_SEL_RTN_CLIENT9 = 52 -GL2A_PERF_SEL_RTN_CLIENT10 = 53 -GL2A_PERF_SEL_RTN_CLIENT11 = 54 -GL2A_PERF_SEL_RTN_CLIENT12 = 55 -GL2A_PERF_SEL_RTN_CLIENT13 = 56 -GL2A_PERF_SEL_RTN_CLIENT14 = 57 -GL2A_PERF_SEL_RTN_CLIENT15 = 58 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT0 = 59 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT1 = 60 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT2 = 61 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT3 = 62 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT4 = 63 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT5 = 64 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT6 = 65 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT7 = 66 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT8 = 67 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT9 = 68 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT10 = 69 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT11 = 70 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT12 = 71 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT13 = 72 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT14 = 73 -GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT15 = 74 -GL2A_PERF_SEL_REQ_BURST_CLIENT0 = 75 -GL2A_PERF_SEL_REQ_BURST_CLIENT1 = 76 -GL2A_PERF_SEL_REQ_BURST_CLIENT2 = 77 -GL2A_PERF_SEL_REQ_BURST_CLIENT3 = 78 -GL2A_PERF_SEL_REQ_BURST_CLIENT4 = 79 -GL2A_PERF_SEL_REQ_BURST_CLIENT5 = 80 -GL2A_PERF_SEL_REQ_BURST_CLIENT6 = 81 -GL2A_PERF_SEL_REQ_BURST_CLIENT7 = 82 -GL2A_PERF_SEL_REQ_BURST_CLIENT8 = 83 -GL2A_PERF_SEL_REQ_BURST_CLIENT9 = 84 -GL2A_PERF_SEL_REQ_BURST_CLIENT10 = 85 -GL2A_PERF_SEL_REQ_BURST_CLIENT11 = 86 -GL2A_PERF_SEL_REQ_BURST_CLIENT12 = 87 -GL2A_PERF_SEL_REQ_BURST_CLIENT13 = 88 -GL2A_PERF_SEL_REQ_BURST_CLIENT14 = 89 -GL2A_PERF_SEL_REQ_BURST_CLIENT15 = 90 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT0 = 91 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT1 = 92 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT2 = 93 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT3 = 94 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT4 = 95 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT5 = 96 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT6 = 97 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT7 = 98 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT8 = 99 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT9 = 100 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT10 = 101 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT11 = 103 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT12 = 104 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT13 = 105 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT14 = 106 -GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT15 = 107 -GL2A_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GL2C_PERF_SEL' -GL2C_PERF_SEL__enumvalues = { - 0: 'GL2C_PERF_SEL_NONE', - 1: 'GL2C_PERF_SEL_CYCLE', - 2: 'GL2C_PERF_SEL_BUSY', - 3: 'GL2C_PERF_SEL_REQ', - 4: 'GL2C_PERF_SEL_VOL_REQ', - 5: 'GL2C_PERF_SEL_HIGH_PRIORITY_REQ', - 6: 'GL2C_PERF_SEL_READ', - 7: 'GL2C_PERF_SEL_WRITE', - 8: 'GL2C_PERF_SEL_ATOMIC', - 9: 'GL2C_PERF_SEL_NOP_ACK', - 10: 'GL2C_PERF_SEL_NOP_RTN0', - 11: 'GL2C_PERF_SEL_PROBE', - 12: 'GL2C_PERF_SEL_PROBE_ALL', - 13: 'GL2C_PERF_SEL_INTERNAL_PROBE', - 14: 'GL2C_PERF_SEL_COMPRESSED_READ_REQ', - 15: 'GL2C_PERF_SEL_METADATA_READ_REQ', - 16: 'GL2C_PERF_SEL_CLIENT0_REQ', - 17: 'GL2C_PERF_SEL_CLIENT1_REQ', - 18: 'GL2C_PERF_SEL_CLIENT2_REQ', - 19: 'GL2C_PERF_SEL_CLIENT3_REQ', - 20: 'GL2C_PERF_SEL_CLIENT4_REQ', - 21: 'GL2C_PERF_SEL_CLIENT5_REQ', - 22: 'GL2C_PERF_SEL_CLIENT6_REQ', - 23: 'GL2C_PERF_SEL_CLIENT7_REQ', - 24: 'GL2C_PERF_SEL_CLIENT8_REQ', - 25: 'GL2C_PERF_SEL_CLIENT9_REQ', - 26: 'GL2C_PERF_SEL_CLIENT10_REQ', - 27: 'GL2C_PERF_SEL_CLIENT11_REQ', - 28: 'GL2C_PERF_SEL_CLIENT12_REQ', - 29: 'GL2C_PERF_SEL_CLIENT13_REQ', - 30: 'GL2C_PERF_SEL_CLIENT14_REQ', - 31: 'GL2C_PERF_SEL_CLIENT15_REQ', - 32: 'GL2C_PERF_SEL_C_RW_S_REQ', - 33: 'GL2C_PERF_SEL_C_RW_US_REQ', - 34: 'GL2C_PERF_SEL_C_RO_S_REQ', - 35: 'GL2C_PERF_SEL_C_RO_US_REQ', - 36: 'GL2C_PERF_SEL_UC_REQ', - 37: 'GL2C_PERF_SEL_LRU_REQ', - 38: 'GL2C_PERF_SEL_STREAM_REQ', - 39: 'GL2C_PERF_SEL_BYPASS_REQ', - 40: 'GL2C_PERF_SEL_NOA_REQ', - 41: 'GL2C_PERF_SEL_SHARED_REQ', - 42: 'GL2C_PERF_SEL_HIT', - 43: 'GL2C_PERF_SEL_MISS', - 44: 'GL2C_PERF_SEL_FULL_HIT', - 45: 'GL2C_PERF_SEL_PARTIAL_32B_HIT', - 46: 'GL2C_PERF_SEL_PARTIAL_64B_HIT', - 47: 'GL2C_PERF_SEL_PARTIAL_96B_HIT', - 48: 'GL2C_PERF_SEL_DEWRITE_ALLOCATE_HIT', - 49: 'GL2C_PERF_SEL_FULLY_WRITTEN_HIT', - 50: 'GL2C_PERF_SEL_UNCACHED_WRITE', - 51: 'GL2C_PERF_SEL_WRITEBACK', - 52: 'GL2C_PERF_SEL_NORMAL_WRITEBACK', - 53: 'GL2C_PERF_SEL_EVICT', - 54: 'GL2C_PERF_SEL_NORMAL_EVICT', - 55: 'GL2C_PERF_SEL_PROBE_EVICT', - 56: 'GL2C_PERF_SEL_REQ_TO_MISS_QUEUE', - 57: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT0', - 58: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT1', - 59: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT2', - 60: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT3', - 61: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT4', - 62: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT5', - 63: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT6', - 64: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT7', - 65: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT8', - 66: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT9', - 67: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT10', - 68: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT11', - 69: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT12', - 70: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT13', - 71: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT14', - 72: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT15', - 73: 'GL2C_PERF_SEL_READ_32_REQ', - 74: 'GL2C_PERF_SEL_READ_64_REQ', - 75: 'GL2C_PERF_SEL_READ_128_REQ', - 76: 'GL2C_PERF_SEL_WRITE_32_REQ', - 77: 'GL2C_PERF_SEL_WRITE_64_REQ', - 78: 'GL2C_PERF_SEL_COMPRESSED_READ_0_REQ', - 79: 'GL2C_PERF_SEL_COMPRESSED_READ_32_REQ', - 80: 'GL2C_PERF_SEL_COMPRESSED_READ_64_REQ', - 81: 'GL2C_PERF_SEL_COMPRESSED_READ_96_REQ', - 82: 'GL2C_PERF_SEL_COMPRESSED_READ_128_REQ', - 83: 'GL2C_PERF_SEL_MC_WRREQ', - 84: 'GL2C_PERF_SEL_EA_WRREQ_SNOOP', - 85: 'GL2C_PERF_SEL_EA_WRREQ_64B', - 86: 'GL2C_PERF_SEL_EA_WRREQ_PROBE_COMMAND', - 87: 'GL2C_PERF_SEL_EA_WR_UNCACHED_32B', - 88: 'GL2C_PERF_SEL_MC_WRREQ_STALL', - 89: 'GL2C_PERF_SEL_EA_WRREQ_IO_CREDIT_STALL', - 90: 'GL2C_PERF_SEL_EA_WRREQ_GMI_CREDIT_STALL', - 91: 'GL2C_PERF_SEL_EA_WRREQ_DRAM_CREDIT_STALL', - 92: 'GL2C_PERF_SEL_TOO_MANY_EA_WRREQS_STALL', - 93: 'GL2C_PERF_SEL_MC_WRREQ_LEVEL', - 94: 'GL2C_PERF_SEL_EA_ATOMIC', - 95: 'GL2C_PERF_SEL_EA_ATOMIC_LEVEL', - 96: 'GL2C_PERF_SEL_MC_RDREQ', - 97: 'GL2C_PERF_SEL_EA_RDREQ_SNOOP', - 98: 'GL2C_PERF_SEL_EA_RDREQ_SPLIT', - 99: 'GL2C_PERF_SEL_EA_RDREQ_32B', - 100: 'GL2C_PERF_SEL_EA_RDREQ_64B', - 101: 'GL2C_PERF_SEL_EA_RDREQ_96B', - 102: 'GL2C_PERF_SEL_EA_RDREQ_128B', - 103: 'GL2C_PERF_SEL_EA_RD_UNCACHED_32B', - 104: 'GL2C_PERF_SEL_EA_RD_MDC_32B', - 105: 'GL2C_PERF_SEL_EA_RD_COMPRESSED_32B', - 106: 'GL2C_PERF_SEL_EA_RDREQ_IO_CREDIT_STALL', - 107: 'GL2C_PERF_SEL_EA_RDREQ_GMI_CREDIT_STALL', - 108: 'GL2C_PERF_SEL_EA_RDREQ_DRAM_CREDIT_STALL', - 109: 'GL2C_PERF_SEL_MC_RDREQ_LEVEL', - 110: 'GL2C_PERF_SEL_EA_RDREQ_DRAM', - 111: 'GL2C_PERF_SEL_EA_WRREQ_DRAM', - 112: 'GL2C_PERF_SEL_EA_RDREQ_DRAM_32B', - 113: 'GL2C_PERF_SEL_EA_WRREQ_DRAM_32B', - 114: 'GL2C_PERF_SEL_ONION_READ', - 115: 'GL2C_PERF_SEL_ONION_WRITE', - 116: 'GL2C_PERF_SEL_IO_READ', - 117: 'GL2C_PERF_SEL_IO_WRITE', - 118: 'GL2C_PERF_SEL_GARLIC_READ', - 119: 'GL2C_PERF_SEL_GARLIC_WRITE', - 120: 'GL2C_PERF_SEL_EA_OUTSTANDING', - 121: 'GL2C_PERF_SEL_LATENCY_FIFO_FULL', - 122: 'GL2C_PERF_SEL_SRC_FIFO_FULL', - 123: 'GL2C_PERF_SEL_TAG_STALL', - 124: 'GL2C_PERF_SEL_TAG_WRITEBACK_FIFO_FULL_STALL', - 125: 'GL2C_PERF_SEL_TAG_MISS_NOTHING_REPLACEABLE_STALL', - 126: 'GL2C_PERF_SEL_TAG_UNCACHED_WRITE_ATOMIC_FIFO_FULL_STALL', - 127: 'GL2C_PERF_SEL_TAG_NO_UNCACHED_WRITE_ATOMIC_ENTRIES_STALL', - 128: 'GL2C_PERF_SEL_TAG_PROBE_STALL', - 129: 'GL2C_PERF_SEL_TAG_PROBE_FILTER_STALL', - 130: 'GL2C_PERF_SEL_TAG_PROBE_FIFO_FULL_STALL', - 131: 'GL2C_PERF_SEL_TAG_READ_DST_STALL', - 132: 'GL2C_PERF_SEL_READ_RETURN_TIMEOUT', - 133: 'GL2C_PERF_SEL_WRITEBACK_READ_TIMEOUT', - 134: 'GL2C_PERF_SEL_READ_RETURN_FULL_BUBBLE', - 135: 'GL2C_PERF_SEL_BUBBLE', - 136: 'GL2C_PERF_SEL_IB_REQ', - 137: 'GL2C_PERF_SEL_IB_STALL', - 138: 'GL2C_PERF_SEL_IB_TAG_STALL', - 139: 'GL2C_PERF_SEL_IB_CM_STALL', - 140: 'GL2C_PERF_SEL_RETURN_ACK', - 141: 'GL2C_PERF_SEL_RETURN_DATA', - 142: 'GL2C_PERF_SEL_EA_RDRET_NACK', - 143: 'GL2C_PERF_SEL_EA_WRRET_NACK', - 144: 'GL2C_PERF_SEL_GL2A_LEVEL', - 145: 'GL2C_PERF_SEL_PROBE_FILTER_DISABLE_TRANSITION', - 146: 'GL2C_PERF_SEL_PROBE_FILTER_DISABLED', - 147: 'GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_START', - 148: 'GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_VOL_START', - 149: 'GL2C_PERF_SEL_GCR_INV', - 150: 'GL2C_PERF_SEL_GCR_WB', - 151: 'GL2C_PERF_SEL_GCR_DISCARD', - 152: 'GL2C_PERF_SEL_GCR_RANGE', - 153: 'GL2C_PERF_SEL_GCR_ALL', - 154: 'GL2C_PERF_SEL_GCR_VOL', - 155: 'GL2C_PERF_SEL_GCR_UNSHARED', - 156: 'GL2C_PERF_SEL_GCR_MDC_INV', - 157: 'GL2C_PERF_SEL_GCR_GL2_INV_ALL', - 158: 'GL2C_PERF_SEL_GCR_GL2_WB_ALL', - 159: 'GL2C_PERF_SEL_GCR_MDC_INV_ALL', - 160: 'GL2C_PERF_SEL_GCR_GL2_INV_RANGE', - 161: 'GL2C_PERF_SEL_GCR_GL2_WB_RANGE', - 162: 'GL2C_PERF_SEL_GCR_GL2_WB_INV_RANGE', - 163: 'GL2C_PERF_SEL_GCR_MDC_INV_RANGE', - 164: 'GL2C_PERF_SEL_ALL_GCR_INV_EVICT', - 165: 'GL2C_PERF_SEL_ALL_GCR_INV_VOL_EVICT', - 166: 'GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_CYCLE', - 167: 'GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_VOL_CYCLE', - 168: 'GL2C_PERF_SEL_ALL_GCR_WB_WRITEBACK', - 169: 'GL2C_PERF_SEL_GCR_INVL2_VOL_CYCLE', - 170: 'GL2C_PERF_SEL_GCR_INVL2_VOL_EVICT', - 171: 'GL2C_PERF_SEL_GCR_INVL2_VOL_START', - 172: 'GL2C_PERF_SEL_GCR_WBL2_VOL_CYCLE', - 173: 'GL2C_PERF_SEL_GCR_WBL2_VOL_START', - 174: 'GL2C_PERF_SEL_GCR_WBINVL2_CYCLE', - 175: 'GL2C_PERF_SEL_GCR_WBINVL2_EVICT', - 176: 'GL2C_PERF_SEL_GCR_WBINVL2_START', - 177: 'GL2C_PERF_SEL_MDC_INV_METADATA', - 178: 'GL2C_PERF_SEL_MDC_REQ', - 179: 'GL2C_PERF_SEL_MDC_LEVEL', - 180: 'GL2C_PERF_SEL_MDC_TAG_HIT', - 181: 'GL2C_PERF_SEL_MDC_SECTOR_HIT', - 182: 'GL2C_PERF_SEL_MDC_SECTOR_MISS', - 183: 'GL2C_PERF_SEL_MDC_TAG_STALL', - 184: 'GL2C_PERF_SEL_MDC_TAG_REPLACEMENT_LINE_IN_USE_STALL', - 185: 'GL2C_PERF_SEL_MDC_TAG_DESECTORIZATION_FIFO_FULL_STALL', - 186: 'GL2C_PERF_SEL_MDC_TAG_WAITING_FOR_INVALIDATE_COMPLETION_STALL', - 187: 'GL2C_PERF_SEL_CM_CHANNEL0_REQ', - 188: 'GL2C_PERF_SEL_CM_CHANNEL1_REQ', - 189: 'GL2C_PERF_SEL_CM_CHANNEL2_REQ', - 190: 'GL2C_PERF_SEL_CM_CHANNEL3_REQ', - 191: 'GL2C_PERF_SEL_CM_CHANNEL4_REQ', - 192: 'GL2C_PERF_SEL_CM_CHANNEL5_REQ', - 193: 'GL2C_PERF_SEL_CM_CHANNEL6_REQ', - 194: 'GL2C_PERF_SEL_CM_CHANNEL7_REQ', - 195: 'GL2C_PERF_SEL_CM_CHANNEL8_REQ', - 196: 'GL2C_PERF_SEL_CM_CHANNEL9_REQ', - 197: 'GL2C_PERF_SEL_CM_CHANNEL10_REQ', - 198: 'GL2C_PERF_SEL_CM_CHANNEL11_REQ', - 199: 'GL2C_PERF_SEL_CM_CHANNEL12_REQ', - 200: 'GL2C_PERF_SEL_CM_CHANNEL13_REQ', - 201: 'GL2C_PERF_SEL_CM_CHANNEL14_REQ', - 202: 'GL2C_PERF_SEL_CM_CHANNEL15_REQ', - 203: 'GL2C_PERF_SEL_CM_CHANNEL16_REQ', - 204: 'GL2C_PERF_SEL_CM_CHANNEL17_REQ', - 205: 'GL2C_PERF_SEL_CM_CHANNEL18_REQ', - 206: 'GL2C_PERF_SEL_CM_CHANNEL19_REQ', - 207: 'GL2C_PERF_SEL_CM_CHANNEL20_REQ', - 208: 'GL2C_PERF_SEL_CM_CHANNEL21_REQ', - 209: 'GL2C_PERF_SEL_CM_CHANNEL22_REQ', - 210: 'GL2C_PERF_SEL_CM_CHANNEL23_REQ', - 211: 'GL2C_PERF_SEL_CM_CHANNEL24_REQ', - 212: 'GL2C_PERF_SEL_CM_CHANNEL25_REQ', - 213: 'GL2C_PERF_SEL_CM_CHANNEL26_REQ', - 214: 'GL2C_PERF_SEL_CM_CHANNEL27_REQ', - 215: 'GL2C_PERF_SEL_CM_CHANNEL28_REQ', - 216: 'GL2C_PERF_SEL_CM_CHANNEL29_REQ', - 217: 'GL2C_PERF_SEL_CM_CHANNEL30_REQ', - 218: 'GL2C_PERF_SEL_CM_CHANNEL31_REQ', - 219: 'GL2C_PERF_SEL_CM_COMP_ATOMIC_COLOR_REQ', - 220: 'GL2C_PERF_SEL_CM_COMP_ATOMIC_DEPTH16_REQ', - 221: 'GL2C_PERF_SEL_CM_COMP_ATOMIC_DEPTH32_REQ', - 222: 'GL2C_PERF_SEL_CM_COMP_ATOMIC_STENCIL_REQ', - 223: 'GL2C_PERF_SEL_CM_COMP_WRITE_COLOR_REQ', - 224: 'GL2C_PERF_SEL_CM_COMP_WRITE_DEPTH16_REQ', - 225: 'GL2C_PERF_SEL_CM_COMP_WRITE_DEPTH32_REQ', - 226: 'GL2C_PERF_SEL_CM_COMP_WRITE_STENCIL_REQ', - 227: 'GL2C_PERF_SEL_CM_COMP_READ_REQ', - 228: 'GL2C_PERF_SEL_CM_READ_BACK_REQ', - 229: 'GL2C_PERF_SEL_CM_METADATA_WR_REQ', - 230: 'GL2C_PERF_SEL_CM_WR_ACK_REQ', - 231: 'GL2C_PERF_SEL_CM_NO_ACK_REQ', - 232: 'GL2C_PERF_SEL_CM_NOOP_REQ', - 233: 'GL2C_PERF_SEL_CM_COMP_COLOR_EN_REQ', - 234: 'GL2C_PERF_SEL_CM_COMP_COLOR_DIS_REQ', - 235: 'GL2C_PERF_SEL_CM_COMP_STENCIL_REQ', - 236: 'GL2C_PERF_SEL_CM_COMP_DEPTH16_REQ', - 237: 'GL2C_PERF_SEL_CM_COMP_DEPTH32_REQ', - 238: 'GL2C_PERF_SEL_CM_COMP_RB_SKIP_REQ', - 239: 'GL2C_PERF_SEL_CM_COLOR_32B_WR_REQ', - 240: 'GL2C_PERF_SEL_CM_COLOR_64B_WR_REQ', - 241: 'GL2C_PERF_SEL_CM_FULL_WRITE_REQ', - 242: 'GL2C_PERF_SEL_CM_RVF_FULL', - 243: 'GL2C_PERF_SEL_CM_SDR_FULL', - 244: 'GL2C_PERF_SEL_CM_MERGE_BUF_FULL', - 245: 'GL2C_PERF_SEL_CM_DCC_STALL', - 246: 'GL2C_PERF_SEL_CM_DCC_IN_XFC', - 247: 'GL2C_PERF_SEL_CM_DCC_OUT_XFC', - 248: 'GL2C_PERF_SEL_CM_DCC_OUT_1x1', - 249: 'GL2C_PERF_SEL_CM_DCC_OUT_1x2', - 250: 'GL2C_PERF_SEL_CM_DCC_OUT_2x1', - 251: 'GL2C_PERF_SEL_CM_DCC_OUT_2x2', - 252: 'GL2C_PERF_SEL_CM_DCC_OUT_UNCOMP', - 253: 'GL2C_PERF_SEL_CM_DCC_OUT_CONST', - 254: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT16', - 255: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT17', - 256: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT18', - 257: 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT19', -} -GL2C_PERF_SEL_NONE = 0 -GL2C_PERF_SEL_CYCLE = 1 -GL2C_PERF_SEL_BUSY = 2 -GL2C_PERF_SEL_REQ = 3 -GL2C_PERF_SEL_VOL_REQ = 4 -GL2C_PERF_SEL_HIGH_PRIORITY_REQ = 5 -GL2C_PERF_SEL_READ = 6 -GL2C_PERF_SEL_WRITE = 7 -GL2C_PERF_SEL_ATOMIC = 8 -GL2C_PERF_SEL_NOP_ACK = 9 -GL2C_PERF_SEL_NOP_RTN0 = 10 -GL2C_PERF_SEL_PROBE = 11 -GL2C_PERF_SEL_PROBE_ALL = 12 -GL2C_PERF_SEL_INTERNAL_PROBE = 13 -GL2C_PERF_SEL_COMPRESSED_READ_REQ = 14 -GL2C_PERF_SEL_METADATA_READ_REQ = 15 -GL2C_PERF_SEL_CLIENT0_REQ = 16 -GL2C_PERF_SEL_CLIENT1_REQ = 17 -GL2C_PERF_SEL_CLIENT2_REQ = 18 -GL2C_PERF_SEL_CLIENT3_REQ = 19 -GL2C_PERF_SEL_CLIENT4_REQ = 20 -GL2C_PERF_SEL_CLIENT5_REQ = 21 -GL2C_PERF_SEL_CLIENT6_REQ = 22 -GL2C_PERF_SEL_CLIENT7_REQ = 23 -GL2C_PERF_SEL_CLIENT8_REQ = 24 -GL2C_PERF_SEL_CLIENT9_REQ = 25 -GL2C_PERF_SEL_CLIENT10_REQ = 26 -GL2C_PERF_SEL_CLIENT11_REQ = 27 -GL2C_PERF_SEL_CLIENT12_REQ = 28 -GL2C_PERF_SEL_CLIENT13_REQ = 29 -GL2C_PERF_SEL_CLIENT14_REQ = 30 -GL2C_PERF_SEL_CLIENT15_REQ = 31 -GL2C_PERF_SEL_C_RW_S_REQ = 32 -GL2C_PERF_SEL_C_RW_US_REQ = 33 -GL2C_PERF_SEL_C_RO_S_REQ = 34 -GL2C_PERF_SEL_C_RO_US_REQ = 35 -GL2C_PERF_SEL_UC_REQ = 36 -GL2C_PERF_SEL_LRU_REQ = 37 -GL2C_PERF_SEL_STREAM_REQ = 38 -GL2C_PERF_SEL_BYPASS_REQ = 39 -GL2C_PERF_SEL_NOA_REQ = 40 -GL2C_PERF_SEL_SHARED_REQ = 41 -GL2C_PERF_SEL_HIT = 42 -GL2C_PERF_SEL_MISS = 43 -GL2C_PERF_SEL_FULL_HIT = 44 -GL2C_PERF_SEL_PARTIAL_32B_HIT = 45 -GL2C_PERF_SEL_PARTIAL_64B_HIT = 46 -GL2C_PERF_SEL_PARTIAL_96B_HIT = 47 -GL2C_PERF_SEL_DEWRITE_ALLOCATE_HIT = 48 -GL2C_PERF_SEL_FULLY_WRITTEN_HIT = 49 -GL2C_PERF_SEL_UNCACHED_WRITE = 50 -GL2C_PERF_SEL_WRITEBACK = 51 -GL2C_PERF_SEL_NORMAL_WRITEBACK = 52 -GL2C_PERF_SEL_EVICT = 53 -GL2C_PERF_SEL_NORMAL_EVICT = 54 -GL2C_PERF_SEL_PROBE_EVICT = 55 -GL2C_PERF_SEL_REQ_TO_MISS_QUEUE = 56 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT0 = 57 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT1 = 58 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT2 = 59 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT3 = 60 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT4 = 61 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT5 = 62 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT6 = 63 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT7 = 64 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT8 = 65 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT9 = 66 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT10 = 67 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT11 = 68 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT12 = 69 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT13 = 70 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT14 = 71 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT15 = 72 -GL2C_PERF_SEL_READ_32_REQ = 73 -GL2C_PERF_SEL_READ_64_REQ = 74 -GL2C_PERF_SEL_READ_128_REQ = 75 -GL2C_PERF_SEL_WRITE_32_REQ = 76 -GL2C_PERF_SEL_WRITE_64_REQ = 77 -GL2C_PERF_SEL_COMPRESSED_READ_0_REQ = 78 -GL2C_PERF_SEL_COMPRESSED_READ_32_REQ = 79 -GL2C_PERF_SEL_COMPRESSED_READ_64_REQ = 80 -GL2C_PERF_SEL_COMPRESSED_READ_96_REQ = 81 -GL2C_PERF_SEL_COMPRESSED_READ_128_REQ = 82 -GL2C_PERF_SEL_MC_WRREQ = 83 -GL2C_PERF_SEL_EA_WRREQ_SNOOP = 84 -GL2C_PERF_SEL_EA_WRREQ_64B = 85 -GL2C_PERF_SEL_EA_WRREQ_PROBE_COMMAND = 86 -GL2C_PERF_SEL_EA_WR_UNCACHED_32B = 87 -GL2C_PERF_SEL_MC_WRREQ_STALL = 88 -GL2C_PERF_SEL_EA_WRREQ_IO_CREDIT_STALL = 89 -GL2C_PERF_SEL_EA_WRREQ_GMI_CREDIT_STALL = 90 -GL2C_PERF_SEL_EA_WRREQ_DRAM_CREDIT_STALL = 91 -GL2C_PERF_SEL_TOO_MANY_EA_WRREQS_STALL = 92 -GL2C_PERF_SEL_MC_WRREQ_LEVEL = 93 -GL2C_PERF_SEL_EA_ATOMIC = 94 -GL2C_PERF_SEL_EA_ATOMIC_LEVEL = 95 -GL2C_PERF_SEL_MC_RDREQ = 96 -GL2C_PERF_SEL_EA_RDREQ_SNOOP = 97 -GL2C_PERF_SEL_EA_RDREQ_SPLIT = 98 -GL2C_PERF_SEL_EA_RDREQ_32B = 99 -GL2C_PERF_SEL_EA_RDREQ_64B = 100 -GL2C_PERF_SEL_EA_RDREQ_96B = 101 -GL2C_PERF_SEL_EA_RDREQ_128B = 102 -GL2C_PERF_SEL_EA_RD_UNCACHED_32B = 103 -GL2C_PERF_SEL_EA_RD_MDC_32B = 104 -GL2C_PERF_SEL_EA_RD_COMPRESSED_32B = 105 -GL2C_PERF_SEL_EA_RDREQ_IO_CREDIT_STALL = 106 -GL2C_PERF_SEL_EA_RDREQ_GMI_CREDIT_STALL = 107 -GL2C_PERF_SEL_EA_RDREQ_DRAM_CREDIT_STALL = 108 -GL2C_PERF_SEL_MC_RDREQ_LEVEL = 109 -GL2C_PERF_SEL_EA_RDREQ_DRAM = 110 -GL2C_PERF_SEL_EA_WRREQ_DRAM = 111 -GL2C_PERF_SEL_EA_RDREQ_DRAM_32B = 112 -GL2C_PERF_SEL_EA_WRREQ_DRAM_32B = 113 -GL2C_PERF_SEL_ONION_READ = 114 -GL2C_PERF_SEL_ONION_WRITE = 115 -GL2C_PERF_SEL_IO_READ = 116 -GL2C_PERF_SEL_IO_WRITE = 117 -GL2C_PERF_SEL_GARLIC_READ = 118 -GL2C_PERF_SEL_GARLIC_WRITE = 119 -GL2C_PERF_SEL_EA_OUTSTANDING = 120 -GL2C_PERF_SEL_LATENCY_FIFO_FULL = 121 -GL2C_PERF_SEL_SRC_FIFO_FULL = 122 -GL2C_PERF_SEL_TAG_STALL = 123 -GL2C_PERF_SEL_TAG_WRITEBACK_FIFO_FULL_STALL = 124 -GL2C_PERF_SEL_TAG_MISS_NOTHING_REPLACEABLE_STALL = 125 -GL2C_PERF_SEL_TAG_UNCACHED_WRITE_ATOMIC_FIFO_FULL_STALL = 126 -GL2C_PERF_SEL_TAG_NO_UNCACHED_WRITE_ATOMIC_ENTRIES_STALL = 127 -GL2C_PERF_SEL_TAG_PROBE_STALL = 128 -GL2C_PERF_SEL_TAG_PROBE_FILTER_STALL = 129 -GL2C_PERF_SEL_TAG_PROBE_FIFO_FULL_STALL = 130 -GL2C_PERF_SEL_TAG_READ_DST_STALL = 131 -GL2C_PERF_SEL_READ_RETURN_TIMEOUT = 132 -GL2C_PERF_SEL_WRITEBACK_READ_TIMEOUT = 133 -GL2C_PERF_SEL_READ_RETURN_FULL_BUBBLE = 134 -GL2C_PERF_SEL_BUBBLE = 135 -GL2C_PERF_SEL_IB_REQ = 136 -GL2C_PERF_SEL_IB_STALL = 137 -GL2C_PERF_SEL_IB_TAG_STALL = 138 -GL2C_PERF_SEL_IB_CM_STALL = 139 -GL2C_PERF_SEL_RETURN_ACK = 140 -GL2C_PERF_SEL_RETURN_DATA = 141 -GL2C_PERF_SEL_EA_RDRET_NACK = 142 -GL2C_PERF_SEL_EA_WRRET_NACK = 143 -GL2C_PERF_SEL_GL2A_LEVEL = 144 -GL2C_PERF_SEL_PROBE_FILTER_DISABLE_TRANSITION = 145 -GL2C_PERF_SEL_PROBE_FILTER_DISABLED = 146 -GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_START = 147 -GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_VOL_START = 148 -GL2C_PERF_SEL_GCR_INV = 149 -GL2C_PERF_SEL_GCR_WB = 150 -GL2C_PERF_SEL_GCR_DISCARD = 151 -GL2C_PERF_SEL_GCR_RANGE = 152 -GL2C_PERF_SEL_GCR_ALL = 153 -GL2C_PERF_SEL_GCR_VOL = 154 -GL2C_PERF_SEL_GCR_UNSHARED = 155 -GL2C_PERF_SEL_GCR_MDC_INV = 156 -GL2C_PERF_SEL_GCR_GL2_INV_ALL = 157 -GL2C_PERF_SEL_GCR_GL2_WB_ALL = 158 -GL2C_PERF_SEL_GCR_MDC_INV_ALL = 159 -GL2C_PERF_SEL_GCR_GL2_INV_RANGE = 160 -GL2C_PERF_SEL_GCR_GL2_WB_RANGE = 161 -GL2C_PERF_SEL_GCR_GL2_WB_INV_RANGE = 162 -GL2C_PERF_SEL_GCR_MDC_INV_RANGE = 163 -GL2C_PERF_SEL_ALL_GCR_INV_EVICT = 164 -GL2C_PERF_SEL_ALL_GCR_INV_VOL_EVICT = 165 -GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_CYCLE = 166 -GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_VOL_CYCLE = 167 -GL2C_PERF_SEL_ALL_GCR_WB_WRITEBACK = 168 -GL2C_PERF_SEL_GCR_INVL2_VOL_CYCLE = 169 -GL2C_PERF_SEL_GCR_INVL2_VOL_EVICT = 170 -GL2C_PERF_SEL_GCR_INVL2_VOL_START = 171 -GL2C_PERF_SEL_GCR_WBL2_VOL_CYCLE = 172 -GL2C_PERF_SEL_GCR_WBL2_VOL_START = 173 -GL2C_PERF_SEL_GCR_WBINVL2_CYCLE = 174 -GL2C_PERF_SEL_GCR_WBINVL2_EVICT = 175 -GL2C_PERF_SEL_GCR_WBINVL2_START = 176 -GL2C_PERF_SEL_MDC_INV_METADATA = 177 -GL2C_PERF_SEL_MDC_REQ = 178 -GL2C_PERF_SEL_MDC_LEVEL = 179 -GL2C_PERF_SEL_MDC_TAG_HIT = 180 -GL2C_PERF_SEL_MDC_SECTOR_HIT = 181 -GL2C_PERF_SEL_MDC_SECTOR_MISS = 182 -GL2C_PERF_SEL_MDC_TAG_STALL = 183 -GL2C_PERF_SEL_MDC_TAG_REPLACEMENT_LINE_IN_USE_STALL = 184 -GL2C_PERF_SEL_MDC_TAG_DESECTORIZATION_FIFO_FULL_STALL = 185 -GL2C_PERF_SEL_MDC_TAG_WAITING_FOR_INVALIDATE_COMPLETION_STALL = 186 -GL2C_PERF_SEL_CM_CHANNEL0_REQ = 187 -GL2C_PERF_SEL_CM_CHANNEL1_REQ = 188 -GL2C_PERF_SEL_CM_CHANNEL2_REQ = 189 -GL2C_PERF_SEL_CM_CHANNEL3_REQ = 190 -GL2C_PERF_SEL_CM_CHANNEL4_REQ = 191 -GL2C_PERF_SEL_CM_CHANNEL5_REQ = 192 -GL2C_PERF_SEL_CM_CHANNEL6_REQ = 193 -GL2C_PERF_SEL_CM_CHANNEL7_REQ = 194 -GL2C_PERF_SEL_CM_CHANNEL8_REQ = 195 -GL2C_PERF_SEL_CM_CHANNEL9_REQ = 196 -GL2C_PERF_SEL_CM_CHANNEL10_REQ = 197 -GL2C_PERF_SEL_CM_CHANNEL11_REQ = 198 -GL2C_PERF_SEL_CM_CHANNEL12_REQ = 199 -GL2C_PERF_SEL_CM_CHANNEL13_REQ = 200 -GL2C_PERF_SEL_CM_CHANNEL14_REQ = 201 -GL2C_PERF_SEL_CM_CHANNEL15_REQ = 202 -GL2C_PERF_SEL_CM_CHANNEL16_REQ = 203 -GL2C_PERF_SEL_CM_CHANNEL17_REQ = 204 -GL2C_PERF_SEL_CM_CHANNEL18_REQ = 205 -GL2C_PERF_SEL_CM_CHANNEL19_REQ = 206 -GL2C_PERF_SEL_CM_CHANNEL20_REQ = 207 -GL2C_PERF_SEL_CM_CHANNEL21_REQ = 208 -GL2C_PERF_SEL_CM_CHANNEL22_REQ = 209 -GL2C_PERF_SEL_CM_CHANNEL23_REQ = 210 -GL2C_PERF_SEL_CM_CHANNEL24_REQ = 211 -GL2C_PERF_SEL_CM_CHANNEL25_REQ = 212 -GL2C_PERF_SEL_CM_CHANNEL26_REQ = 213 -GL2C_PERF_SEL_CM_CHANNEL27_REQ = 214 -GL2C_PERF_SEL_CM_CHANNEL28_REQ = 215 -GL2C_PERF_SEL_CM_CHANNEL29_REQ = 216 -GL2C_PERF_SEL_CM_CHANNEL30_REQ = 217 -GL2C_PERF_SEL_CM_CHANNEL31_REQ = 218 -GL2C_PERF_SEL_CM_COMP_ATOMIC_COLOR_REQ = 219 -GL2C_PERF_SEL_CM_COMP_ATOMIC_DEPTH16_REQ = 220 -GL2C_PERF_SEL_CM_COMP_ATOMIC_DEPTH32_REQ = 221 -GL2C_PERF_SEL_CM_COMP_ATOMIC_STENCIL_REQ = 222 -GL2C_PERF_SEL_CM_COMP_WRITE_COLOR_REQ = 223 -GL2C_PERF_SEL_CM_COMP_WRITE_DEPTH16_REQ = 224 -GL2C_PERF_SEL_CM_COMP_WRITE_DEPTH32_REQ = 225 -GL2C_PERF_SEL_CM_COMP_WRITE_STENCIL_REQ = 226 -GL2C_PERF_SEL_CM_COMP_READ_REQ = 227 -GL2C_PERF_SEL_CM_READ_BACK_REQ = 228 -GL2C_PERF_SEL_CM_METADATA_WR_REQ = 229 -GL2C_PERF_SEL_CM_WR_ACK_REQ = 230 -GL2C_PERF_SEL_CM_NO_ACK_REQ = 231 -GL2C_PERF_SEL_CM_NOOP_REQ = 232 -GL2C_PERF_SEL_CM_COMP_COLOR_EN_REQ = 233 -GL2C_PERF_SEL_CM_COMP_COLOR_DIS_REQ = 234 -GL2C_PERF_SEL_CM_COMP_STENCIL_REQ = 235 -GL2C_PERF_SEL_CM_COMP_DEPTH16_REQ = 236 -GL2C_PERF_SEL_CM_COMP_DEPTH32_REQ = 237 -GL2C_PERF_SEL_CM_COMP_RB_SKIP_REQ = 238 -GL2C_PERF_SEL_CM_COLOR_32B_WR_REQ = 239 -GL2C_PERF_SEL_CM_COLOR_64B_WR_REQ = 240 -GL2C_PERF_SEL_CM_FULL_WRITE_REQ = 241 -GL2C_PERF_SEL_CM_RVF_FULL = 242 -GL2C_PERF_SEL_CM_SDR_FULL = 243 -GL2C_PERF_SEL_CM_MERGE_BUF_FULL = 244 -GL2C_PERF_SEL_CM_DCC_STALL = 245 -GL2C_PERF_SEL_CM_DCC_IN_XFC = 246 -GL2C_PERF_SEL_CM_DCC_OUT_XFC = 247 -GL2C_PERF_SEL_CM_DCC_OUT_1x1 = 248 -GL2C_PERF_SEL_CM_DCC_OUT_1x2 = 249 -GL2C_PERF_SEL_CM_DCC_OUT_2x1 = 250 -GL2C_PERF_SEL_CM_DCC_OUT_2x2 = 251 -GL2C_PERF_SEL_CM_DCC_OUT_UNCOMP = 252 -GL2C_PERF_SEL_CM_DCC_OUT_CONST = 253 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT16 = 254 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT17 = 255 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT18 = 256 -GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT19 = 257 -GL2C_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_PERF_SEL' -GRBM_PERF_SEL__enumvalues = { - 0: 'GRBM_PERF_SEL_COUNT', - 1: 'GRBM_PERF_SEL_USER_DEFINED', - 2: 'GRBM_PERF_SEL_GUI_ACTIVE', - 3: 'GRBM_PERF_SEL_CP_BUSY', - 4: 'GRBM_PERF_SEL_CP_COHER_BUSY', - 5: 'GRBM_PERF_SEL_CP_DMA_BUSY', - 6: 'GRBM_PERF_SEL_CB_BUSY', - 7: 'GRBM_PERF_SEL_DB_BUSY', - 8: 'GRBM_PERF_SEL_PA_BUSY', - 9: 'GRBM_PERF_SEL_SC_BUSY', - 11: 'GRBM_PERF_SEL_SPI_BUSY', - 12: 'GRBM_PERF_SEL_SX_BUSY', - 13: 'GRBM_PERF_SEL_TA_BUSY', - 14: 'GRBM_PERF_SEL_CB_CLEAN', - 15: 'GRBM_PERF_SEL_DB_CLEAN', - 25: 'GRBM_PERF_SEL_GDS_BUSY', - 26: 'GRBM_PERF_SEL_BCI_BUSY', - 27: 'GRBM_PERF_SEL_RLC_BUSY', - 28: 'GRBM_PERF_SEL_TCP_BUSY', - 29: 'GRBM_PERF_SEL_CPG_BUSY', - 30: 'GRBM_PERF_SEL_CPC_BUSY', - 31: 'GRBM_PERF_SEL_CPF_BUSY', - 32: 'GRBM_PERF_SEL_GE_BUSY', - 33: 'GRBM_PERF_SEL_GE_NO_DMA_BUSY', - 34: 'GRBM_PERF_SEL_UTCL2_BUSY', - 35: 'GRBM_PERF_SEL_EA_BUSY', - 36: 'GRBM_PERF_SEL_RMI_BUSY', - 37: 'GRBM_PERF_SEL_CPAXI_BUSY', - 39: 'GRBM_PERF_SEL_UTCL1_BUSY', - 40: 'GRBM_PERF_SEL_GL2CC_BUSY', - 41: 'GRBM_PERF_SEL_SDMA_BUSY', - 42: 'GRBM_PERF_SEL_CH_BUSY', - 43: 'GRBM_PERF_SEL_PH_BUSY', - 44: 'GRBM_PERF_SEL_PMM_BUSY', - 45: 'GRBM_PERF_SEL_GUS_BUSY', - 46: 'GRBM_PERF_SEL_GL1CC_BUSY', - 47: 'GRBM_PERF_SEL_ANY_ACTIVE_F_BUSY', - 48: 'GRBM_PERF_SEL_GL1H_BUSY', - 49: 'GRBM_PERF_SEL_PC_BUSY', -} -GRBM_PERF_SEL_COUNT = 0 -GRBM_PERF_SEL_USER_DEFINED = 1 -GRBM_PERF_SEL_GUI_ACTIVE = 2 -GRBM_PERF_SEL_CP_BUSY = 3 -GRBM_PERF_SEL_CP_COHER_BUSY = 4 -GRBM_PERF_SEL_CP_DMA_BUSY = 5 -GRBM_PERF_SEL_CB_BUSY = 6 -GRBM_PERF_SEL_DB_BUSY = 7 -GRBM_PERF_SEL_PA_BUSY = 8 -GRBM_PERF_SEL_SC_BUSY = 9 -GRBM_PERF_SEL_SPI_BUSY = 11 -GRBM_PERF_SEL_SX_BUSY = 12 -GRBM_PERF_SEL_TA_BUSY = 13 -GRBM_PERF_SEL_CB_CLEAN = 14 -GRBM_PERF_SEL_DB_CLEAN = 15 -GRBM_PERF_SEL_GDS_BUSY = 25 -GRBM_PERF_SEL_BCI_BUSY = 26 -GRBM_PERF_SEL_RLC_BUSY = 27 -GRBM_PERF_SEL_TCP_BUSY = 28 -GRBM_PERF_SEL_CPG_BUSY = 29 -GRBM_PERF_SEL_CPC_BUSY = 30 -GRBM_PERF_SEL_CPF_BUSY = 31 -GRBM_PERF_SEL_GE_BUSY = 32 -GRBM_PERF_SEL_GE_NO_DMA_BUSY = 33 -GRBM_PERF_SEL_UTCL2_BUSY = 34 -GRBM_PERF_SEL_EA_BUSY = 35 -GRBM_PERF_SEL_RMI_BUSY = 36 -GRBM_PERF_SEL_CPAXI_BUSY = 37 -GRBM_PERF_SEL_UTCL1_BUSY = 39 -GRBM_PERF_SEL_GL2CC_BUSY = 40 -GRBM_PERF_SEL_SDMA_BUSY = 41 -GRBM_PERF_SEL_CH_BUSY = 42 -GRBM_PERF_SEL_PH_BUSY = 43 -GRBM_PERF_SEL_PMM_BUSY = 44 -GRBM_PERF_SEL_GUS_BUSY = 45 -GRBM_PERF_SEL_GL1CC_BUSY = 46 -GRBM_PERF_SEL_ANY_ACTIVE_F_BUSY = 47 -GRBM_PERF_SEL_GL1H_BUSY = 48 -GRBM_PERF_SEL_PC_BUSY = 49 -GRBM_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE0_PERF_SEL' -GRBM_SE0_PERF_SEL__enumvalues = { - 0: 'GRBM_SE0_PERF_SEL_COUNT', - 1: 'GRBM_SE0_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE0_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE0_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE0_PERF_SEL_SC_BUSY', - 6: 'GRBM_SE0_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE0_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE0_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE0_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE0_PERF_SEL_DB_CLEAN', - 12: 'GRBM_SE0_PERF_SEL_PA_BUSY', - 14: 'GRBM_SE0_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE0_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE0_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE0_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE0_PERF_SEL_GL1CC_BUSY', - 19: 'GRBM_SE0_PERF_SEL_GL1H_BUSY', - 20: 'GRBM_SE0_PERF_SEL_PC_BUSY', -} -GRBM_SE0_PERF_SEL_COUNT = 0 -GRBM_SE0_PERF_SEL_USER_DEFINED = 1 -GRBM_SE0_PERF_SEL_CB_BUSY = 2 -GRBM_SE0_PERF_SEL_DB_BUSY = 3 -GRBM_SE0_PERF_SEL_SC_BUSY = 4 -GRBM_SE0_PERF_SEL_SPI_BUSY = 6 -GRBM_SE0_PERF_SEL_SX_BUSY = 7 -GRBM_SE0_PERF_SEL_TA_BUSY = 8 -GRBM_SE0_PERF_SEL_CB_CLEAN = 9 -GRBM_SE0_PERF_SEL_DB_CLEAN = 10 -GRBM_SE0_PERF_SEL_PA_BUSY = 12 -GRBM_SE0_PERF_SEL_BCI_BUSY = 14 -GRBM_SE0_PERF_SEL_RMI_BUSY = 15 -GRBM_SE0_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE0_PERF_SEL_TCP_BUSY = 17 -GRBM_SE0_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE0_PERF_SEL_GL1H_BUSY = 19 -GRBM_SE0_PERF_SEL_PC_BUSY = 20 -GRBM_SE0_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE1_PERF_SEL' -GRBM_SE1_PERF_SEL__enumvalues = { - 0: 'GRBM_SE1_PERF_SEL_COUNT', - 1: 'GRBM_SE1_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE1_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE1_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE1_PERF_SEL_SC_BUSY', - 6: 'GRBM_SE1_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE1_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE1_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE1_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE1_PERF_SEL_DB_CLEAN', - 12: 'GRBM_SE1_PERF_SEL_PA_BUSY', - 14: 'GRBM_SE1_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE1_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE1_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE1_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE1_PERF_SEL_GL1CC_BUSY', - 19: 'GRBM_SE1_PERF_SEL_GL1H_BUSY', - 20: 'GRBM_SE1_PERF_SEL_PC_BUSY', -} -GRBM_SE1_PERF_SEL_COUNT = 0 -GRBM_SE1_PERF_SEL_USER_DEFINED = 1 -GRBM_SE1_PERF_SEL_CB_BUSY = 2 -GRBM_SE1_PERF_SEL_DB_BUSY = 3 -GRBM_SE1_PERF_SEL_SC_BUSY = 4 -GRBM_SE1_PERF_SEL_SPI_BUSY = 6 -GRBM_SE1_PERF_SEL_SX_BUSY = 7 -GRBM_SE1_PERF_SEL_TA_BUSY = 8 -GRBM_SE1_PERF_SEL_CB_CLEAN = 9 -GRBM_SE1_PERF_SEL_DB_CLEAN = 10 -GRBM_SE1_PERF_SEL_PA_BUSY = 12 -GRBM_SE1_PERF_SEL_BCI_BUSY = 14 -GRBM_SE1_PERF_SEL_RMI_BUSY = 15 -GRBM_SE1_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE1_PERF_SEL_TCP_BUSY = 17 -GRBM_SE1_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE1_PERF_SEL_GL1H_BUSY = 19 -GRBM_SE1_PERF_SEL_PC_BUSY = 20 -GRBM_SE1_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE2_PERF_SEL' -GRBM_SE2_PERF_SEL__enumvalues = { - 0: 'GRBM_SE2_PERF_SEL_COUNT', - 1: 'GRBM_SE2_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE2_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE2_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE2_PERF_SEL_SC_BUSY', - 6: 'GRBM_SE2_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE2_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE2_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE2_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE2_PERF_SEL_DB_CLEAN', - 12: 'GRBM_SE2_PERF_SEL_PA_BUSY', - 14: 'GRBM_SE2_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE2_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE2_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE2_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE2_PERF_SEL_GL1CC_BUSY', - 19: 'GRBM_SE2_PERF_SEL_GL1H_BUSY', - 20: 'GRBM_SE2_PERF_SEL_PC_BUSY', -} -GRBM_SE2_PERF_SEL_COUNT = 0 -GRBM_SE2_PERF_SEL_USER_DEFINED = 1 -GRBM_SE2_PERF_SEL_CB_BUSY = 2 -GRBM_SE2_PERF_SEL_DB_BUSY = 3 -GRBM_SE2_PERF_SEL_SC_BUSY = 4 -GRBM_SE2_PERF_SEL_SPI_BUSY = 6 -GRBM_SE2_PERF_SEL_SX_BUSY = 7 -GRBM_SE2_PERF_SEL_TA_BUSY = 8 -GRBM_SE2_PERF_SEL_CB_CLEAN = 9 -GRBM_SE2_PERF_SEL_DB_CLEAN = 10 -GRBM_SE2_PERF_SEL_PA_BUSY = 12 -GRBM_SE2_PERF_SEL_BCI_BUSY = 14 -GRBM_SE2_PERF_SEL_RMI_BUSY = 15 -GRBM_SE2_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE2_PERF_SEL_TCP_BUSY = 17 -GRBM_SE2_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE2_PERF_SEL_GL1H_BUSY = 19 -GRBM_SE2_PERF_SEL_PC_BUSY = 20 -GRBM_SE2_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE3_PERF_SEL' -GRBM_SE3_PERF_SEL__enumvalues = { - 0: 'GRBM_SE3_PERF_SEL_COUNT', - 1: 'GRBM_SE3_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE3_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE3_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE3_PERF_SEL_SC_BUSY', - 6: 'GRBM_SE3_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE3_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE3_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE3_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE3_PERF_SEL_DB_CLEAN', - 12: 'GRBM_SE3_PERF_SEL_PA_BUSY', - 14: 'GRBM_SE3_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE3_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE3_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE3_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE3_PERF_SEL_GL1CC_BUSY', - 19: 'GRBM_SE3_PERF_SEL_GL1H_BUSY', - 20: 'GRBM_SE3_PERF_SEL_PC_BUSY', -} -GRBM_SE3_PERF_SEL_COUNT = 0 -GRBM_SE3_PERF_SEL_USER_DEFINED = 1 -GRBM_SE3_PERF_SEL_CB_BUSY = 2 -GRBM_SE3_PERF_SEL_DB_BUSY = 3 -GRBM_SE3_PERF_SEL_SC_BUSY = 4 -GRBM_SE3_PERF_SEL_SPI_BUSY = 6 -GRBM_SE3_PERF_SEL_SX_BUSY = 7 -GRBM_SE3_PERF_SEL_TA_BUSY = 8 -GRBM_SE3_PERF_SEL_CB_CLEAN = 9 -GRBM_SE3_PERF_SEL_DB_CLEAN = 10 -GRBM_SE3_PERF_SEL_PA_BUSY = 12 -GRBM_SE3_PERF_SEL_BCI_BUSY = 14 -GRBM_SE3_PERF_SEL_RMI_BUSY = 15 -GRBM_SE3_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE3_PERF_SEL_TCP_BUSY = 17 -GRBM_SE3_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE3_PERF_SEL_GL1H_BUSY = 19 -GRBM_SE3_PERF_SEL_PC_BUSY = 20 -GRBM_SE3_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE4_PERF_SEL' -GRBM_SE4_PERF_SEL__enumvalues = { - 0: 'GRBM_SE4_PERF_SEL_COUNT', - 1: 'GRBM_SE4_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE4_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE4_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE4_PERF_SEL_SC_BUSY', - 6: 'GRBM_SE4_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE4_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE4_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE4_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE4_PERF_SEL_DB_CLEAN', - 12: 'GRBM_SE4_PERF_SEL_PA_BUSY', - 14: 'GRBM_SE4_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE4_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE4_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE4_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE4_PERF_SEL_GL1CC_BUSY', - 19: 'GRBM_SE4_PERF_SEL_GL1H_BUSY', - 20: 'GRBM_SE4_PERF_SEL_PC_BUSY', -} -GRBM_SE4_PERF_SEL_COUNT = 0 -GRBM_SE4_PERF_SEL_USER_DEFINED = 1 -GRBM_SE4_PERF_SEL_CB_BUSY = 2 -GRBM_SE4_PERF_SEL_DB_BUSY = 3 -GRBM_SE4_PERF_SEL_SC_BUSY = 4 -GRBM_SE4_PERF_SEL_SPI_BUSY = 6 -GRBM_SE4_PERF_SEL_SX_BUSY = 7 -GRBM_SE4_PERF_SEL_TA_BUSY = 8 -GRBM_SE4_PERF_SEL_CB_CLEAN = 9 -GRBM_SE4_PERF_SEL_DB_CLEAN = 10 -GRBM_SE4_PERF_SEL_PA_BUSY = 12 -GRBM_SE4_PERF_SEL_BCI_BUSY = 14 -GRBM_SE4_PERF_SEL_RMI_BUSY = 15 -GRBM_SE4_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE4_PERF_SEL_TCP_BUSY = 17 -GRBM_SE4_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE4_PERF_SEL_GL1H_BUSY = 19 -GRBM_SE4_PERF_SEL_PC_BUSY = 20 -GRBM_SE4_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE5_PERF_SEL' -GRBM_SE5_PERF_SEL__enumvalues = { - 0: 'GRBM_SE5_PERF_SEL_COUNT', - 1: 'GRBM_SE5_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE5_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE5_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE5_PERF_SEL_SC_BUSY', - 6: 'GRBM_SE5_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE5_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE5_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE5_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE5_PERF_SEL_DB_CLEAN', - 12: 'GRBM_SE5_PERF_SEL_PA_BUSY', - 14: 'GRBM_SE5_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE5_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE5_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE5_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE5_PERF_SEL_GL1CC_BUSY', - 19: 'GRBM_SE5_PERF_SEL_GL1H_BUSY', - 20: 'GRBM_SE5_PERF_SEL_PC_BUSY', -} -GRBM_SE5_PERF_SEL_COUNT = 0 -GRBM_SE5_PERF_SEL_USER_DEFINED = 1 -GRBM_SE5_PERF_SEL_CB_BUSY = 2 -GRBM_SE5_PERF_SEL_DB_BUSY = 3 -GRBM_SE5_PERF_SEL_SC_BUSY = 4 -GRBM_SE5_PERF_SEL_SPI_BUSY = 6 -GRBM_SE5_PERF_SEL_SX_BUSY = 7 -GRBM_SE5_PERF_SEL_TA_BUSY = 8 -GRBM_SE5_PERF_SEL_CB_CLEAN = 9 -GRBM_SE5_PERF_SEL_DB_CLEAN = 10 -GRBM_SE5_PERF_SEL_PA_BUSY = 12 -GRBM_SE5_PERF_SEL_BCI_BUSY = 14 -GRBM_SE5_PERF_SEL_RMI_BUSY = 15 -GRBM_SE5_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE5_PERF_SEL_TCP_BUSY = 17 -GRBM_SE5_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE5_PERF_SEL_GL1H_BUSY = 19 -GRBM_SE5_PERF_SEL_PC_BUSY = 20 -GRBM_SE5_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE6_PERF_SEL' -GRBM_SE6_PERF_SEL__enumvalues = { - 0: 'GRBM_SE6_PERF_SEL_COUNT', - 1: 'GRBM_SE6_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE6_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE6_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE6_PERF_SEL_SC_BUSY', - 6: 'GRBM_SE6_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE6_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE6_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE6_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE6_PERF_SEL_DB_CLEAN', - 12: 'GRBM_SE6_PERF_SEL_PA_BUSY', - 14: 'GRBM_SE6_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE6_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE6_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE6_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE6_PERF_SEL_GL1CC_BUSY', - 19: 'GRBM_SE6_PERF_SEL_GL1H_BUSY', - 20: 'GRBM_SE6_PERF_SEL_PC_BUSY', -} -GRBM_SE6_PERF_SEL_COUNT = 0 -GRBM_SE6_PERF_SEL_USER_DEFINED = 1 -GRBM_SE6_PERF_SEL_CB_BUSY = 2 -GRBM_SE6_PERF_SEL_DB_BUSY = 3 -GRBM_SE6_PERF_SEL_SC_BUSY = 4 -GRBM_SE6_PERF_SEL_SPI_BUSY = 6 -GRBM_SE6_PERF_SEL_SX_BUSY = 7 -GRBM_SE6_PERF_SEL_TA_BUSY = 8 -GRBM_SE6_PERF_SEL_CB_CLEAN = 9 -GRBM_SE6_PERF_SEL_DB_CLEAN = 10 -GRBM_SE6_PERF_SEL_PA_BUSY = 12 -GRBM_SE6_PERF_SEL_BCI_BUSY = 14 -GRBM_SE6_PERF_SEL_RMI_BUSY = 15 -GRBM_SE6_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE6_PERF_SEL_TCP_BUSY = 17 -GRBM_SE6_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE6_PERF_SEL_GL1H_BUSY = 19 -GRBM_SE6_PERF_SEL_PC_BUSY = 20 -GRBM_SE6_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'GRBM_SE7_PERF_SEL' -GRBM_SE7_PERF_SEL__enumvalues = { - 0: 'GRBM_SE7_PERF_SEL_COUNT', - 1: 'GRBM_SE7_PERF_SEL_USER_DEFINED', - 2: 'GRBM_SE7_PERF_SEL_CB_BUSY', - 3: 'GRBM_SE7_PERF_SEL_DB_BUSY', - 4: 'GRBM_SE7_PERF_SEL_SC_BUSY', - 6: 'GRBM_SE7_PERF_SEL_SPI_BUSY', - 7: 'GRBM_SE7_PERF_SEL_SX_BUSY', - 8: 'GRBM_SE7_PERF_SEL_TA_BUSY', - 9: 'GRBM_SE7_PERF_SEL_CB_CLEAN', - 10: 'GRBM_SE7_PERF_SEL_DB_CLEAN', - 12: 'GRBM_SE7_PERF_SEL_PA_BUSY', - 14: 'GRBM_SE7_PERF_SEL_BCI_BUSY', - 15: 'GRBM_SE7_PERF_SEL_RMI_BUSY', - 16: 'GRBM_SE7_PERF_SEL_UTCL1_BUSY', - 17: 'GRBM_SE7_PERF_SEL_TCP_BUSY', - 18: 'GRBM_SE7_PERF_SEL_GL1CC_BUSY', - 19: 'GRBM_SE7_PERF_SEL_GL1H_BUSY', - 20: 'GRBM_SE7_PERF_SEL_PC_BUSY', -} -GRBM_SE7_PERF_SEL_COUNT = 0 -GRBM_SE7_PERF_SEL_USER_DEFINED = 1 -GRBM_SE7_PERF_SEL_CB_BUSY = 2 -GRBM_SE7_PERF_SEL_DB_BUSY = 3 -GRBM_SE7_PERF_SEL_SC_BUSY = 4 -GRBM_SE7_PERF_SEL_SPI_BUSY = 6 -GRBM_SE7_PERF_SEL_SX_BUSY = 7 -GRBM_SE7_PERF_SEL_TA_BUSY = 8 -GRBM_SE7_PERF_SEL_CB_CLEAN = 9 -GRBM_SE7_PERF_SEL_DB_CLEAN = 10 -GRBM_SE7_PERF_SEL_PA_BUSY = 12 -GRBM_SE7_PERF_SEL_BCI_BUSY = 14 -GRBM_SE7_PERF_SEL_RMI_BUSY = 15 -GRBM_SE7_PERF_SEL_UTCL1_BUSY = 16 -GRBM_SE7_PERF_SEL_TCP_BUSY = 17 -GRBM_SE7_PERF_SEL_GL1CC_BUSY = 18 -GRBM_SE7_PERF_SEL_GL1H_BUSY = 19 -GRBM_SE7_PERF_SEL_PC_BUSY = 20 -GRBM_SE7_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PIPE_COMPAT_LEVEL' -PIPE_COMPAT_LEVEL__enumvalues = { - 0: 'GEN_ZERO', - 1: 'GEN_ONE', - 2: 'GEN_TWO', - 3: 'GEN_RESERVED', -} -GEN_ZERO = 0 -GEN_ONE = 1 -GEN_TWO = 2 -GEN_RESERVED = 3 -PIPE_COMPAT_LEVEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPC_LATENCY_STATS_SEL' -CPC_LATENCY_STATS_SEL__enumvalues = { - 0: 'CPC_LATENCY_STATS_SEL_XACK_MAX', - 1: 'CPC_LATENCY_STATS_SEL_XACK_MIN', - 2: 'CPC_LATENCY_STATS_SEL_XACK_LAST', - 3: 'CPC_LATENCY_STATS_SEL_XNACK_MAX', - 4: 'CPC_LATENCY_STATS_SEL_XNACK_MIN', - 5: 'CPC_LATENCY_STATS_SEL_XNACK_LAST', - 6: 'CPC_LATENCY_STATS_SEL_INVAL_MAX', - 7: 'CPC_LATENCY_STATS_SEL_INVAL_MIN', - 8: 'CPC_LATENCY_STATS_SEL_INVAL_LAST', -} -CPC_LATENCY_STATS_SEL_XACK_MAX = 0 -CPC_LATENCY_STATS_SEL_XACK_MIN = 1 -CPC_LATENCY_STATS_SEL_XACK_LAST = 2 -CPC_LATENCY_STATS_SEL_XNACK_MAX = 3 -CPC_LATENCY_STATS_SEL_XNACK_MIN = 4 -CPC_LATENCY_STATS_SEL_XNACK_LAST = 5 -CPC_LATENCY_STATS_SEL_INVAL_MAX = 6 -CPC_LATENCY_STATS_SEL_INVAL_MIN = 7 -CPC_LATENCY_STATS_SEL_INVAL_LAST = 8 -CPC_LATENCY_STATS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPC_PERFCOUNT_SEL' -CPC_PERFCOUNT_SEL__enumvalues = { - 0: 'CPC_PERF_SEL_ALWAYS_COUNT', - 1: 'CPC_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', - 2: 'CPC_PERF_SEL_RCIU_STALL_PRIV_VIOLATION', - 5: 'CPC_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 6: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY', - 7: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY_PERF', - 8: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READ', - 9: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_GUS_READ', - 10: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_GUS_WRITE', - 11: 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ', - 12: 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ_PERF', - 13: 'CPC_PERF_SEL_ME1_BUSY_FOR_PACKET_DECODE', - 14: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY', - 15: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY_PERF', - 16: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READ', - 17: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_GUS_READ', - 18: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_GUS_WRITE', - 19: 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ', - 20: 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ_PERF', - 21: 'CPC_PERF_SEL_ME2_BUSY_FOR_PACKET_DECODE', - 22: 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 23: 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', - 24: 'CPC_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 25: 'CPC_PERF_SEL_CPC_STAT_BUSY', - 26: 'CPC_PERF_SEL_CPC_STAT_IDLE', - 27: 'CPC_PERF_SEL_CPC_STAT_STALL', - 28: 'CPC_PERF_SEL_CPC_TCIU_BUSY', - 29: 'CPC_PERF_SEL_CPC_TCIU_IDLE', - 30: 'CPC_PERF_SEL_CPC_UTCL2IU_BUSY', - 31: 'CPC_PERF_SEL_CPC_UTCL2IU_IDLE', - 32: 'CPC_PERF_SEL_CPC_UTCL2IU_STALL', - 33: 'CPC_PERF_SEL_ME1_DC0_SPI_BUSY', - 34: 'CPC_PERF_SEL_ME2_DC1_SPI_BUSY', - 35: 'CPC_PERF_SEL_CPC_GCRIU_BUSY', - 36: 'CPC_PERF_SEL_CPC_GCRIU_IDLE', - 37: 'CPC_PERF_SEL_CPC_GCRIU_STALL', - 38: 'CPC_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 39: 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_TCIU_READ', - 40: 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_TCIU_READ', - 41: 'CPC_PERF_SEL_CPC_UTCL2IU_XACK', - 42: 'CPC_PERF_SEL_CPC_UTCL2IU_XNACK', - 43: 'CPC_PERF_SEL_MEC_INSTR_CACHE_HIT', - 44: 'CPC_PERF_SEL_MEC_INSTR_CACHE_MISS', - 45: 'CPC_PERF_SEL_MES_THREAD0', - 46: 'CPC_PERF_SEL_MES_THREAD1', -} -CPC_PERF_SEL_ALWAYS_COUNT = 0 -CPC_PERF_SEL_RCIU_STALL_WAIT_ON_FREE = 1 -CPC_PERF_SEL_RCIU_STALL_PRIV_VIOLATION = 2 -CPC_PERF_SEL_TCIU_STALL_WAIT_ON_FREE = 5 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY = 6 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY_PERF = 7 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READ = 8 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_GUS_READ = 9 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_GUS_WRITE = 10 -CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ = 11 -CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ_PERF = 12 -CPC_PERF_SEL_ME1_BUSY_FOR_PACKET_DECODE = 13 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY = 14 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY_PERF = 15 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READ = 16 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_GUS_READ = 17 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_GUS_WRITE = 18 -CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ = 19 -CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ_PERF = 20 -CPC_PERF_SEL_ME2_BUSY_FOR_PACKET_DECODE = 21 -CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE = 22 -CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS = 23 -CPC_PERF_SEL_UTCL1_STALL_ON_TRANSLATION = 24 -CPC_PERF_SEL_CPC_STAT_BUSY = 25 -CPC_PERF_SEL_CPC_STAT_IDLE = 26 -CPC_PERF_SEL_CPC_STAT_STALL = 27 -CPC_PERF_SEL_CPC_TCIU_BUSY = 28 -CPC_PERF_SEL_CPC_TCIU_IDLE = 29 -CPC_PERF_SEL_CPC_UTCL2IU_BUSY = 30 -CPC_PERF_SEL_CPC_UTCL2IU_IDLE = 31 -CPC_PERF_SEL_CPC_UTCL2IU_STALL = 32 -CPC_PERF_SEL_ME1_DC0_SPI_BUSY = 33 -CPC_PERF_SEL_ME2_DC1_SPI_BUSY = 34 -CPC_PERF_SEL_CPC_GCRIU_BUSY = 35 -CPC_PERF_SEL_CPC_GCRIU_IDLE = 36 -CPC_PERF_SEL_CPC_GCRIU_STALL = 37 -CPC_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE = 38 -CPC_PERF_SEL_ME1_STALL_WAIT_ON_TCIU_READ = 39 -CPC_PERF_SEL_ME2_STALL_WAIT_ON_TCIU_READ = 40 -CPC_PERF_SEL_CPC_UTCL2IU_XACK = 41 -CPC_PERF_SEL_CPC_UTCL2IU_XNACK = 42 -CPC_PERF_SEL_MEC_INSTR_CACHE_HIT = 43 -CPC_PERF_SEL_MEC_INSTR_CACHE_MISS = 44 -CPC_PERF_SEL_MES_THREAD0 = 45 -CPC_PERF_SEL_MES_THREAD1 = 46 -CPC_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPF_LATENCY_STATS_SEL' -CPF_LATENCY_STATS_SEL__enumvalues = { - 0: 'CPF_LATENCY_STATS_SEL_XACK_MAX', - 1: 'CPF_LATENCY_STATS_SEL_XACK_MIN', - 2: 'CPF_LATENCY_STATS_SEL_XACK_LAST', - 3: 'CPF_LATENCY_STATS_SEL_XNACK_MAX', - 4: 'CPF_LATENCY_STATS_SEL_XNACK_MIN', - 5: 'CPF_LATENCY_STATS_SEL_XNACK_LAST', - 6: 'CPF_LATENCY_STATS_SEL_READ_MAX', - 7: 'CPF_LATENCY_STATS_SEL_READ_MIN', - 8: 'CPF_LATENCY_STATS_SEL_READ_LAST', - 9: 'CPF_LATENCY_STATS_SEL_INVAL_MAX', - 10: 'CPF_LATENCY_STATS_SEL_INVAL_MIN', - 11: 'CPF_LATENCY_STATS_SEL_INVAL_LAST', -} -CPF_LATENCY_STATS_SEL_XACK_MAX = 0 -CPF_LATENCY_STATS_SEL_XACK_MIN = 1 -CPF_LATENCY_STATS_SEL_XACK_LAST = 2 -CPF_LATENCY_STATS_SEL_XNACK_MAX = 3 -CPF_LATENCY_STATS_SEL_XNACK_MIN = 4 -CPF_LATENCY_STATS_SEL_XNACK_LAST = 5 -CPF_LATENCY_STATS_SEL_READ_MAX = 6 -CPF_LATENCY_STATS_SEL_READ_MIN = 7 -CPF_LATENCY_STATS_SEL_READ_LAST = 8 -CPF_LATENCY_STATS_SEL_INVAL_MAX = 9 -CPF_LATENCY_STATS_SEL_INVAL_MIN = 10 -CPF_LATENCY_STATS_SEL_INVAL_LAST = 11 -CPF_LATENCY_STATS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPF_PERFCOUNTWINDOW_SEL' -CPF_PERFCOUNTWINDOW_SEL__enumvalues = { - 0: 'CPF_PERFWINDOW_SEL_CSF', - 1: 'CPF_PERFWINDOW_SEL_HQD1', - 2: 'CPF_PERFWINDOW_SEL_HQD2', - 3: 'CPF_PERFWINDOW_SEL_RDMA', - 4: 'CPF_PERFWINDOW_SEL_RWPP', -} -CPF_PERFWINDOW_SEL_CSF = 0 -CPF_PERFWINDOW_SEL_HQD1 = 1 -CPF_PERFWINDOW_SEL_HQD2 = 2 -CPF_PERFWINDOW_SEL_RDMA = 3 -CPF_PERFWINDOW_SEL_RWPP = 4 -CPF_PERFCOUNTWINDOW_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPF_PERFCOUNT_SEL' -CPF_PERFCOUNT_SEL__enumvalues = { - 0: 'CPF_PERF_SEL_ALWAYS_COUNT', - 2: 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_FREE', - 3: 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_TAGS', - 4: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_RING', - 5: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB1', - 6: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB2', - 7: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_STATE', - 10: 'CPF_PERF_SEL_CSF_STATE_FIFO_NOT_RTR', - 11: 'CPF_PERF_SEL_CSF_FETCHING_CMD_BUFFERS', - 12: 'CPF_PERF_SEL_GRBM_DWORDS_SENT', - 13: 'CPF_PERF_SEL_DYNAMIC_CLOCK_VALID', - 14: 'CPF_PERF_SEL_REGISTER_CLOCK_VALID', - 15: 'CPF_PERF_SEL_GUS_WRITE_REQUEST_SENT', - 16: 'CPF_PERF_SEL_GUS_READ_REQUEST_SENT', - 17: 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 18: 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', - 19: 'CPF_PERF_SEL_GFX_UTCL1_STALL_ON_TRANSLATION', - 20: 'CPF_PERF_SEL_CMP_UTCL1_STALL_ON_TRANSLATION', - 21: 'CPF_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', - 22: 'CPF_PERF_SEL_TCIU_WRITE_REQUEST_SENT', - 23: 'CPF_PERF_SEL_TCIU_READ_REQUEST_SENT', - 24: 'CPF_PERF_SEL_CPF_STAT_BUSY', - 25: 'CPF_PERF_SEL_CPF_STAT_IDLE', - 26: 'CPF_PERF_SEL_CPF_STAT_STALL', - 27: 'CPF_PERF_SEL_CPF_TCIU_BUSY', - 28: 'CPF_PERF_SEL_CPF_TCIU_IDLE', - 29: 'CPF_PERF_SEL_CPF_TCIU_STALL', - 30: 'CPF_PERF_SEL_CPF_UTCL2IU_BUSY', - 31: 'CPF_PERF_SEL_CPF_UTCL2IU_IDLE', - 32: 'CPF_PERF_SEL_CPF_UTCL2IU_STALL', - 33: 'CPF_PERF_SEL_CPF_GCRIU_BUSY', - 34: 'CPF_PERF_SEL_CPF_GCRIU_IDLE', - 35: 'CPF_PERF_SEL_CPF_GCRIU_STALL', - 36: 'CPF_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 37: 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_DB', - 38: 'CPF_PERF_SEL_CPF_UTCL2IU_XACK', - 39: 'CPF_PERF_SEL_CPF_UTCL2IU_XNACK', - 40: 'CPF_PERF_SEL_CP_SDMA_MNGR_DMA_REQ', - 41: 'CPF_PERF_SEL_CP_SDMA_MNGR_DMA_DONE', - 42: 'CPF_PERF_SEL_CP_SDMA_MNGR_LATENCY', - 43: 'CPF_PERF_SEL_CP_SDMA_MNGR_SDMABUSY', -} -CPF_PERF_SEL_ALWAYS_COUNT = 0 -CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_FREE = 2 -CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_TAGS = 3 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_RING = 4 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB1 = 5 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB2 = 6 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_STATE = 7 -CPF_PERF_SEL_CSF_STATE_FIFO_NOT_RTR = 10 -CPF_PERF_SEL_CSF_FETCHING_CMD_BUFFERS = 11 -CPF_PERF_SEL_GRBM_DWORDS_SENT = 12 -CPF_PERF_SEL_DYNAMIC_CLOCK_VALID = 13 -CPF_PERF_SEL_REGISTER_CLOCK_VALID = 14 -CPF_PERF_SEL_GUS_WRITE_REQUEST_SENT = 15 -CPF_PERF_SEL_GUS_READ_REQUEST_SENT = 16 -CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE = 17 -CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS = 18 -CPF_PERF_SEL_GFX_UTCL1_STALL_ON_TRANSLATION = 19 -CPF_PERF_SEL_CMP_UTCL1_STALL_ON_TRANSLATION = 20 -CPF_PERF_SEL_RCIU_STALL_WAIT_ON_FREE = 21 -CPF_PERF_SEL_TCIU_WRITE_REQUEST_SENT = 22 -CPF_PERF_SEL_TCIU_READ_REQUEST_SENT = 23 -CPF_PERF_SEL_CPF_STAT_BUSY = 24 -CPF_PERF_SEL_CPF_STAT_IDLE = 25 -CPF_PERF_SEL_CPF_STAT_STALL = 26 -CPF_PERF_SEL_CPF_TCIU_BUSY = 27 -CPF_PERF_SEL_CPF_TCIU_IDLE = 28 -CPF_PERF_SEL_CPF_TCIU_STALL = 29 -CPF_PERF_SEL_CPF_UTCL2IU_BUSY = 30 -CPF_PERF_SEL_CPF_UTCL2IU_IDLE = 31 -CPF_PERF_SEL_CPF_UTCL2IU_STALL = 32 -CPF_PERF_SEL_CPF_GCRIU_BUSY = 33 -CPF_PERF_SEL_CPF_GCRIU_IDLE = 34 -CPF_PERF_SEL_CPF_GCRIU_STALL = 35 -CPF_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE = 36 -CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_DB = 37 -CPF_PERF_SEL_CPF_UTCL2IU_XACK = 38 -CPF_PERF_SEL_CPF_UTCL2IU_XNACK = 39 -CPF_PERF_SEL_CP_SDMA_MNGR_DMA_REQ = 40 -CPF_PERF_SEL_CP_SDMA_MNGR_DMA_DONE = 41 -CPF_PERF_SEL_CP_SDMA_MNGR_LATENCY = 42 -CPF_PERF_SEL_CP_SDMA_MNGR_SDMABUSY = 43 -CPF_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPF_SCRATCH_REG_ATOMIC_OP' -CPF_SCRATCH_REG_ATOMIC_OP__enumvalues = { - 0: 'CPF_SCRATCH_REG_ATOMIC_ADD', - 1: 'CPF_SCRATCH_REG_ATOMIC_SUB', - 2: 'CPF_SCRATCH_REG_ATOMIC_OR', - 3: 'CPF_SCRATCH_REG_ATOMIC_AND', - 4: 'CPF_SCRATCH_REG_ATOMIC_NOT', - 5: 'CPF_SCRATCH_REG_ATOMIC_MIN', - 6: 'CPF_SCRATCH_REG_ATOMIC_MAX', - 7: 'CPF_SCRATCH_REG_ATOMIC_CMPSWAP', -} -CPF_SCRATCH_REG_ATOMIC_ADD = 0 -CPF_SCRATCH_REG_ATOMIC_SUB = 1 -CPF_SCRATCH_REG_ATOMIC_OR = 2 -CPF_SCRATCH_REG_ATOMIC_AND = 3 -CPF_SCRATCH_REG_ATOMIC_NOT = 4 -CPF_SCRATCH_REG_ATOMIC_MIN = 5 -CPF_SCRATCH_REG_ATOMIC_MAX = 6 -CPF_SCRATCH_REG_ATOMIC_CMPSWAP = 7 -CPF_SCRATCH_REG_ATOMIC_OP = ctypes.c_uint32 # enum - -# values for enumeration 'CPG_LATENCY_STATS_SEL' -CPG_LATENCY_STATS_SEL__enumvalues = { - 0: 'CPG_LATENCY_STATS_SEL_XACK_MAX', - 1: 'CPG_LATENCY_STATS_SEL_XACK_MIN', - 2: 'CPG_LATENCY_STATS_SEL_XACK_LAST', - 3: 'CPG_LATENCY_STATS_SEL_XNACK_MAX', - 4: 'CPG_LATENCY_STATS_SEL_XNACK_MIN', - 5: 'CPG_LATENCY_STATS_SEL_XNACK_LAST', - 6: 'CPG_LATENCY_STATS_SEL_WRITE_MAX', - 7: 'CPG_LATENCY_STATS_SEL_WRITE_MIN', - 8: 'CPG_LATENCY_STATS_SEL_WRITE_LAST', - 9: 'CPG_LATENCY_STATS_SEL_READ_MAX', - 10: 'CPG_LATENCY_STATS_SEL_READ_MIN', - 11: 'CPG_LATENCY_STATS_SEL_READ_LAST', - 12: 'CPG_LATENCY_STATS_SEL_ATOMIC_MAX', - 13: 'CPG_LATENCY_STATS_SEL_ATOMIC_MIN', - 14: 'CPG_LATENCY_STATS_SEL_ATOMIC_LAST', - 15: 'CPG_LATENCY_STATS_SEL_INVAL_MAX', - 16: 'CPG_LATENCY_STATS_SEL_INVAL_MIN', - 17: 'CPG_LATENCY_STATS_SEL_INVAL_LAST', -} -CPG_LATENCY_STATS_SEL_XACK_MAX = 0 -CPG_LATENCY_STATS_SEL_XACK_MIN = 1 -CPG_LATENCY_STATS_SEL_XACK_LAST = 2 -CPG_LATENCY_STATS_SEL_XNACK_MAX = 3 -CPG_LATENCY_STATS_SEL_XNACK_MIN = 4 -CPG_LATENCY_STATS_SEL_XNACK_LAST = 5 -CPG_LATENCY_STATS_SEL_WRITE_MAX = 6 -CPG_LATENCY_STATS_SEL_WRITE_MIN = 7 -CPG_LATENCY_STATS_SEL_WRITE_LAST = 8 -CPG_LATENCY_STATS_SEL_READ_MAX = 9 -CPG_LATENCY_STATS_SEL_READ_MIN = 10 -CPG_LATENCY_STATS_SEL_READ_LAST = 11 -CPG_LATENCY_STATS_SEL_ATOMIC_MAX = 12 -CPG_LATENCY_STATS_SEL_ATOMIC_MIN = 13 -CPG_LATENCY_STATS_SEL_ATOMIC_LAST = 14 -CPG_LATENCY_STATS_SEL_INVAL_MAX = 15 -CPG_LATENCY_STATS_SEL_INVAL_MIN = 16 -CPG_LATENCY_STATS_SEL_INVAL_LAST = 17 -CPG_LATENCY_STATS_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPG_PERFCOUNTWINDOW_SEL' -CPG_PERFCOUNTWINDOW_SEL__enumvalues = { - 0: 'CPG_PERFWINDOW_SEL_PFP', - 1: 'CPG_PERFWINDOW_SEL_ME', - 2: 'CPG_PERFWINDOW_SEL_CE', - 3: 'CPG_PERFWINDOW_SEL_MES', - 4: 'CPG_PERFWINDOW_SEL_MEC1', - 5: 'CPG_PERFWINDOW_SEL_MEC2', - 6: 'CPG_PERFWINDOW_SEL_DFY', - 7: 'CPG_PERFWINDOW_SEL_DMA', - 8: 'CPG_PERFWINDOW_SEL_SHADOW', - 9: 'CPG_PERFWINDOW_SEL_RB', - 10: 'CPG_PERFWINDOW_SEL_CEDMA', - 11: 'CPG_PERFWINDOW_SEL_PRT_HDR_RPTR', - 12: 'CPG_PERFWINDOW_SEL_PRT_SMP_RPTR', - 13: 'CPG_PERFWINDOW_SEL_PQ1', - 14: 'CPG_PERFWINDOW_SEL_PQ2', - 15: 'CPG_PERFWINDOW_SEL_PQ3', - 16: 'CPG_PERFWINDOW_SEL_MEMWR', - 17: 'CPG_PERFWINDOW_SEL_MEMRD', - 18: 'CPG_PERFWINDOW_SEL_VGT0', - 19: 'CPG_PERFWINDOW_SEL_VGT1', - 20: 'CPG_PERFWINDOW_SEL_APPEND', - 21: 'CPG_PERFWINDOW_SEL_QURD', - 22: 'CPG_PERFWINDOW_SEL_DDID', - 23: 'CPG_PERFWINDOW_SEL_SR', - 24: 'CPG_PERFWINDOW_SEL_QU_EOP', - 25: 'CPG_PERFWINDOW_SEL_QU_STRM', - 26: 'CPG_PERFWINDOW_SEL_QU_PIPE', - 27: 'CPG_PERFWINDOW_SEL_RESERVED1', - 28: 'CPG_PERFWINDOW_SEL_CPC_IC', - 29: 'CPG_PERFWINDOW_SEL_RESERVED2', - 30: 'CPG_PERFWINDOW_SEL_CPG_IC', -} -CPG_PERFWINDOW_SEL_PFP = 0 -CPG_PERFWINDOW_SEL_ME = 1 -CPG_PERFWINDOW_SEL_CE = 2 -CPG_PERFWINDOW_SEL_MES = 3 -CPG_PERFWINDOW_SEL_MEC1 = 4 -CPG_PERFWINDOW_SEL_MEC2 = 5 -CPG_PERFWINDOW_SEL_DFY = 6 -CPG_PERFWINDOW_SEL_DMA = 7 -CPG_PERFWINDOW_SEL_SHADOW = 8 -CPG_PERFWINDOW_SEL_RB = 9 -CPG_PERFWINDOW_SEL_CEDMA = 10 -CPG_PERFWINDOW_SEL_PRT_HDR_RPTR = 11 -CPG_PERFWINDOW_SEL_PRT_SMP_RPTR = 12 -CPG_PERFWINDOW_SEL_PQ1 = 13 -CPG_PERFWINDOW_SEL_PQ2 = 14 -CPG_PERFWINDOW_SEL_PQ3 = 15 -CPG_PERFWINDOW_SEL_MEMWR = 16 -CPG_PERFWINDOW_SEL_MEMRD = 17 -CPG_PERFWINDOW_SEL_VGT0 = 18 -CPG_PERFWINDOW_SEL_VGT1 = 19 -CPG_PERFWINDOW_SEL_APPEND = 20 -CPG_PERFWINDOW_SEL_QURD = 21 -CPG_PERFWINDOW_SEL_DDID = 22 -CPG_PERFWINDOW_SEL_SR = 23 -CPG_PERFWINDOW_SEL_QU_EOP = 24 -CPG_PERFWINDOW_SEL_QU_STRM = 25 -CPG_PERFWINDOW_SEL_QU_PIPE = 26 -CPG_PERFWINDOW_SEL_RESERVED1 = 27 -CPG_PERFWINDOW_SEL_CPC_IC = 28 -CPG_PERFWINDOW_SEL_RESERVED2 = 29 -CPG_PERFWINDOW_SEL_CPG_IC = 30 -CPG_PERFCOUNTWINDOW_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CPG_PERFCOUNT_SEL' -CPG_PERFCOUNT_SEL__enumvalues = { - 0: 'CPG_PERF_SEL_ALWAYS_COUNT', - 1: 'CPG_PERF_SEL_RBIU_FIFO_FULL', - 4: 'CPG_PERF_SEL_CP_GRBM_DWORDS_SENT', - 5: 'CPG_PERF_SEL_ME_PARSER_BUSY', - 6: 'CPG_PERF_SEL_COUNT_TYPE0_PACKETS', - 7: 'CPG_PERF_SEL_COUNT_TYPE3_PACKETS', - 9: 'CPG_PERF_SEL_CP_GRBM_OUT_OF_CREDITS', - 10: 'CPG_PERF_SEL_CP_PFP_GRBM_OUT_OF_CREDITS', - 11: 'CPG_PERF_SEL_CP_GDS_GRBM_OUT_OF_CREDITS', - 12: 'CPG_PERF_SEL_RCIU_STALLED_ON_ME_READ', - 13: 'CPG_PERF_SEL_RCIU_STALLED_ON_DMA_READ', - 14: 'CPG_PERF_SEL_SSU_STALLED_ON_ACTIVE_CNTX', - 15: 'CPG_PERF_SEL_SSU_STALLED_ON_CLEAN_SIGNALS', - 16: 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_PULSE', - 17: 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_WR_CONFIRM', - 18: 'CPG_PERF_SEL_PFP_STALLED_ON_CSF_READY', - 19: 'CPG_PERF_SEL_PFP_STALLED_ON_MEQ_READY', - 20: 'CPG_PERF_SEL_PFP_STALLED_ON_RCIU_READY', - 21: 'CPG_PERF_SEL_PFP_STALLED_FOR_DATA_FROM_ROQ', - 22: 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_PFP', - 23: 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_STQ', - 24: 'CPG_PERF_SEL_ME_STALLED_ON_NO_AVAIL_GFX_CNTX', - 25: 'CPG_PERF_SEL_ME_STALLED_WRITING_TO_RCIU', - 26: 'CPG_PERF_SEL_ME_STALLED_WRITING_CONSTANTS', - 27: 'CPG_PERF_SEL_ME_STALLED_ON_PARTIAL_FLUSH', - 28: 'CPG_PERF_SEL_ME_WAIT_ON_CE_COUNTER', - 29: 'CPG_PERF_SEL_ME_WAIT_ON_AVAIL_BUFFER', - 31: 'CPG_PERF_SEL_LOAD_STALLED_ON_SET_COHERENCY', - 32: 'CPG_PERF_SEL_DYNAMIC_CLK_VALID', - 33: 'CPG_PERF_SEL_REGISTER_CLK_VALID', - 34: 'CPG_PERF_SEL_GUS_WRITE_REQUEST_SENT', - 35: 'CPG_PERF_SEL_GUS_READ_REQUEST_SENT', - 36: 'CPG_PERF_SEL_CE_STALL_RAM_DUMP', - 37: 'CPG_PERF_SEL_CE_STALL_RAM_WRITE', - 38: 'CPG_PERF_SEL_CE_STALL_ON_INC_FIFO', - 39: 'CPG_PERF_SEL_CE_STALL_ON_WR_RAM_FIFO', - 41: 'CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_ROQ', - 42: 'CPG_PERF_SEL_CE_STALL_ON_CE_BUFFER_FLAG', - 43: 'CPG_PERF_SEL_CE_STALL_ON_DE_COUNTER', - 44: 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 45: 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_TAGS', - 46: 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 47: 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', - 48: 'CPG_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 49: 'CPG_PERF_SEL_TCIU_WRITE_REQUEST_SENT', - 50: 'CPG_PERF_SEL_TCIU_READ_REQUEST_SENT', - 51: 'CPG_PERF_SEL_CPG_STAT_BUSY', - 52: 'CPG_PERF_SEL_CPG_STAT_IDLE', - 53: 'CPG_PERF_SEL_CPG_STAT_STALL', - 54: 'CPG_PERF_SEL_CPG_TCIU_BUSY', - 55: 'CPG_PERF_SEL_CPG_TCIU_IDLE', - 56: 'CPG_PERF_SEL_CPG_TCIU_STALL', - 57: 'CPG_PERF_SEL_CPG_UTCL2IU_BUSY', - 58: 'CPG_PERF_SEL_CPG_UTCL2IU_IDLE', - 59: 'CPG_PERF_SEL_CPG_UTCL2IU_STALL', - 60: 'CPG_PERF_SEL_CPG_GCRIU_BUSY', - 61: 'CPG_PERF_SEL_CPG_GCRIU_IDLE', - 62: 'CPG_PERF_SEL_CPG_GCRIU_STALL', - 63: 'CPG_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 64: 'CPG_PERF_SEL_ALL_GFX_PIPES_BUSY', - 65: 'CPG_PERF_SEL_CPG_UTCL2IU_XACK', - 66: 'CPG_PERF_SEL_CPG_UTCL2IU_XNACK', - 67: 'CPG_PERF_SEL_PFP_STALLED_ON_MEQ_DDID_READY', - 68: 'CPG_PERF_SEL_PFP_INSTR_CACHE_HIT', - 69: 'CPG_PERF_SEL_PFP_INSTR_CACHE_MISS', - 70: 'CPG_PERF_SEL_CE_INSTR_CACHE_HIT', - 71: 'CPG_PERF_SEL_CE_INSTR_CACHE_MISS', - 72: 'CPG_PERF_SEL_ME_INSTR_CACHE_HIT', - 73: 'CPG_PERF_SEL_ME_INSTR_CACHE_MISS', - 74: 'CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB1', - 75: 'CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB1', - 76: 'CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB2', - 77: 'CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB2', - 78: 'CPG_PERF_SEL_DMA_BUSY', - 79: 'CPG_PERF_SEL_DMA_STARVED', - 80: 'CPG_PERF_SEL_DMA_STALLED', - 81: 'CPG_PERF_SEL_DMA_FETCHER_STALLED_ON_ROQ_FULL', - 82: 'CPG_PERF_SEL_PFP_PWS_STALLED0', - 83: 'CPG_PERF_SEL_ME_PWS_STALLED0', - 84: 'CPG_PERF_SEL_PFP_PWS_STALLED1', - 85: 'CPG_PERF_SEL_ME_PWS_STALLED1', -} -CPG_PERF_SEL_ALWAYS_COUNT = 0 -CPG_PERF_SEL_RBIU_FIFO_FULL = 1 -CPG_PERF_SEL_CP_GRBM_DWORDS_SENT = 4 -CPG_PERF_SEL_ME_PARSER_BUSY = 5 -CPG_PERF_SEL_COUNT_TYPE0_PACKETS = 6 -CPG_PERF_SEL_COUNT_TYPE3_PACKETS = 7 -CPG_PERF_SEL_CP_GRBM_OUT_OF_CREDITS = 9 -CPG_PERF_SEL_CP_PFP_GRBM_OUT_OF_CREDITS = 10 -CPG_PERF_SEL_CP_GDS_GRBM_OUT_OF_CREDITS = 11 -CPG_PERF_SEL_RCIU_STALLED_ON_ME_READ = 12 -CPG_PERF_SEL_RCIU_STALLED_ON_DMA_READ = 13 -CPG_PERF_SEL_SSU_STALLED_ON_ACTIVE_CNTX = 14 -CPG_PERF_SEL_SSU_STALLED_ON_CLEAN_SIGNALS = 15 -CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_PULSE = 16 -CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_WR_CONFIRM = 17 -CPG_PERF_SEL_PFP_STALLED_ON_CSF_READY = 18 -CPG_PERF_SEL_PFP_STALLED_ON_MEQ_READY = 19 -CPG_PERF_SEL_PFP_STALLED_ON_RCIU_READY = 20 -CPG_PERF_SEL_PFP_STALLED_FOR_DATA_FROM_ROQ = 21 -CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_PFP = 22 -CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_STQ = 23 -CPG_PERF_SEL_ME_STALLED_ON_NO_AVAIL_GFX_CNTX = 24 -CPG_PERF_SEL_ME_STALLED_WRITING_TO_RCIU = 25 -CPG_PERF_SEL_ME_STALLED_WRITING_CONSTANTS = 26 -CPG_PERF_SEL_ME_STALLED_ON_PARTIAL_FLUSH = 27 -CPG_PERF_SEL_ME_WAIT_ON_CE_COUNTER = 28 -CPG_PERF_SEL_ME_WAIT_ON_AVAIL_BUFFER = 29 -CPG_PERF_SEL_LOAD_STALLED_ON_SET_COHERENCY = 31 -CPG_PERF_SEL_DYNAMIC_CLK_VALID = 32 -CPG_PERF_SEL_REGISTER_CLK_VALID = 33 -CPG_PERF_SEL_GUS_WRITE_REQUEST_SENT = 34 -CPG_PERF_SEL_GUS_READ_REQUEST_SENT = 35 -CPG_PERF_SEL_CE_STALL_RAM_DUMP = 36 -CPG_PERF_SEL_CE_STALL_RAM_WRITE = 37 -CPG_PERF_SEL_CE_STALL_ON_INC_FIFO = 38 -CPG_PERF_SEL_CE_STALL_ON_WR_RAM_FIFO = 39 -CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_ROQ = 41 -CPG_PERF_SEL_CE_STALL_ON_CE_BUFFER_FLAG = 42 -CPG_PERF_SEL_CE_STALL_ON_DE_COUNTER = 43 -CPG_PERF_SEL_TCIU_STALL_WAIT_ON_FREE = 44 -CPG_PERF_SEL_TCIU_STALL_WAIT_ON_TAGS = 45 -CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE = 46 -CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS = 47 -CPG_PERF_SEL_UTCL1_STALL_ON_TRANSLATION = 48 -CPG_PERF_SEL_TCIU_WRITE_REQUEST_SENT = 49 -CPG_PERF_SEL_TCIU_READ_REQUEST_SENT = 50 -CPG_PERF_SEL_CPG_STAT_BUSY = 51 -CPG_PERF_SEL_CPG_STAT_IDLE = 52 -CPG_PERF_SEL_CPG_STAT_STALL = 53 -CPG_PERF_SEL_CPG_TCIU_BUSY = 54 -CPG_PERF_SEL_CPG_TCIU_IDLE = 55 -CPG_PERF_SEL_CPG_TCIU_STALL = 56 -CPG_PERF_SEL_CPG_UTCL2IU_BUSY = 57 -CPG_PERF_SEL_CPG_UTCL2IU_IDLE = 58 -CPG_PERF_SEL_CPG_UTCL2IU_STALL = 59 -CPG_PERF_SEL_CPG_GCRIU_BUSY = 60 -CPG_PERF_SEL_CPG_GCRIU_IDLE = 61 -CPG_PERF_SEL_CPG_GCRIU_STALL = 62 -CPG_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE = 63 -CPG_PERF_SEL_ALL_GFX_PIPES_BUSY = 64 -CPG_PERF_SEL_CPG_UTCL2IU_XACK = 65 -CPG_PERF_SEL_CPG_UTCL2IU_XNACK = 66 -CPG_PERF_SEL_PFP_STALLED_ON_MEQ_DDID_READY = 67 -CPG_PERF_SEL_PFP_INSTR_CACHE_HIT = 68 -CPG_PERF_SEL_PFP_INSTR_CACHE_MISS = 69 -CPG_PERF_SEL_CE_INSTR_CACHE_HIT = 70 -CPG_PERF_SEL_CE_INSTR_CACHE_MISS = 71 -CPG_PERF_SEL_ME_INSTR_CACHE_HIT = 72 -CPG_PERF_SEL_ME_INSTR_CACHE_MISS = 73 -CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB1 = 74 -CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB1 = 75 -CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB2 = 76 -CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB2 = 77 -CPG_PERF_SEL_DMA_BUSY = 78 -CPG_PERF_SEL_DMA_STARVED = 79 -CPG_PERF_SEL_DMA_STALLED = 80 -CPG_PERF_SEL_DMA_FETCHER_STALLED_ON_ROQ_FULL = 81 -CPG_PERF_SEL_PFP_PWS_STALLED0 = 82 -CPG_PERF_SEL_ME_PWS_STALLED0 = 83 -CPG_PERF_SEL_PFP_PWS_STALLED1 = 84 -CPG_PERF_SEL_ME_PWS_STALLED1 = 85 -CPG_PERFCOUNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CP_ALPHA_TAG_RAM_SEL' -CP_ALPHA_TAG_RAM_SEL__enumvalues = { - 0: 'CPG_TAG_RAM', - 1: 'CPC_TAG_RAM', - 2: 'CPF_TAG_RAM', - 3: 'RSV_TAG_RAM', -} -CPG_TAG_RAM = 0 -CPC_TAG_RAM = 1 -CPF_TAG_RAM = 2 -RSV_TAG_RAM = 3 -CP_ALPHA_TAG_RAM_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CP_DDID_CNTL_MODE' -CP_DDID_CNTL_MODE__enumvalues = { - 0: 'STALL', - 1: 'OVERRUN', -} -STALL = 0 -OVERRUN = 1 -CP_DDID_CNTL_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CP_DDID_CNTL_SIZE' -CP_DDID_CNTL_SIZE__enumvalues = { - 0: 'SIZE_8K', - 1: 'SIZE_16K', -} -SIZE_8K = 0 -SIZE_16K = 1 -CP_DDID_CNTL_SIZE = ctypes.c_uint32 # enum - -# values for enumeration 'CP_DDID_CNTL_VMID_SEL' -CP_DDID_CNTL_VMID_SEL__enumvalues = { - 0: 'DDID_VMID_PIPE', - 1: 'DDID_VMID_CNTL', -} -DDID_VMID_PIPE = 0 -DDID_VMID_CNTL = 1 -CP_DDID_CNTL_VMID_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'CP_ME_ID' -CP_ME_ID__enumvalues = { - 0: 'ME_ID0', - 1: 'ME_ID1', - 2: 'ME_ID2', - 3: 'ME_ID3', -} -ME_ID0 = 0 -ME_ID1 = 1 -ME_ID2 = 2 -ME_ID3 = 3 -CP_ME_ID = ctypes.c_uint32 # enum - -# values for enumeration 'CP_PERFMON_ENABLE_MODE' -CP_PERFMON_ENABLE_MODE__enumvalues = { - 0: 'CP_PERFMON_ENABLE_MODE_ALWAYS_COUNT', - 1: 'CP_PERFMON_ENABLE_MODE_RESERVED_1', - 2: 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_TRUE', - 3: 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_FALSE', -} -CP_PERFMON_ENABLE_MODE_ALWAYS_COUNT = 0 -CP_PERFMON_ENABLE_MODE_RESERVED_1 = 1 -CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_TRUE = 2 -CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_FALSE = 3 -CP_PERFMON_ENABLE_MODE = ctypes.c_uint32 # enum - -# values for enumeration 'CP_PERFMON_STATE' -CP_PERFMON_STATE__enumvalues = { - 0: 'CP_PERFMON_STATE_DISABLE_AND_RESET', - 1: 'CP_PERFMON_STATE_START_COUNTING', - 2: 'CP_PERFMON_STATE_STOP_COUNTING', - 3: 'CP_PERFMON_STATE_RESERVED_3', - 4: 'CP_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 5: 'CP_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', -} -CP_PERFMON_STATE_DISABLE_AND_RESET = 0 -CP_PERFMON_STATE_START_COUNTING = 1 -CP_PERFMON_STATE_STOP_COUNTING = 2 -CP_PERFMON_STATE_RESERVED_3 = 3 -CP_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM = 4 -CP_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM = 5 -CP_PERFMON_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'CP_PIPE_ID' -CP_PIPE_ID__enumvalues = { - 0: 'PIPE_ID0', - 1: 'PIPE_ID1', - 2: 'PIPE_ID2', - 3: 'PIPE_ID3', -} -PIPE_ID0 = 0 -PIPE_ID1 = 1 -PIPE_ID2 = 2 -PIPE_ID3 = 3 -CP_PIPE_ID = ctypes.c_uint32 # enum - -# values for enumeration 'CP_RING_ID' -CP_RING_ID__enumvalues = { - 0: 'RINGID0', - 1: 'RINGID1', - 2: 'RINGID2', - 3: 'RINGID3', -} -RINGID0 = 0 -RINGID1 = 1 -RINGID2 = 2 -RINGID3 = 3 -CP_RING_ID = ctypes.c_uint32 # enum - -# values for enumeration 'SPM_PERFMON_STATE' -SPM_PERFMON_STATE__enumvalues = { - 0: 'STRM_PERFMON_STATE_DISABLE_AND_RESET', - 1: 'STRM_PERFMON_STATE_START_COUNTING', - 2: 'STRM_PERFMON_STATE_STOP_COUNTING', - 3: 'STRM_PERFMON_STATE_RESERVED_3', - 4: 'STRM_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 5: 'STRM_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', -} -STRM_PERFMON_STATE_DISABLE_AND_RESET = 0 -STRM_PERFMON_STATE_START_COUNTING = 1 -STRM_PERFMON_STATE_STOP_COUNTING = 2 -STRM_PERFMON_STATE_RESERVED_3 = 3 -STRM_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM = 4 -STRM_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM = 5 -SPM_PERFMON_STATE = ctypes.c_uint32 # enum - -# values for enumeration 'SX_BLEND_OPT' -SX_BLEND_OPT__enumvalues = { - 0: 'BLEND_OPT_PRESERVE_NONE_IGNORE_ALL', - 1: 'BLEND_OPT_PRESERVE_ALL_IGNORE_NONE', - 2: 'BLEND_OPT_PRESERVE_C1_IGNORE_C0', - 3: 'BLEND_OPT_PRESERVE_C0_IGNORE_C1', - 4: 'BLEND_OPT_PRESERVE_A1_IGNORE_A0', - 5: 'BLEND_OPT_PRESERVE_A0_IGNORE_A1', - 6: 'BLEND_OPT_PRESERVE_NONE_IGNORE_A0', - 7: 'BLEND_OPT_PRESERVE_NONE_IGNORE_NONE', -} -BLEND_OPT_PRESERVE_NONE_IGNORE_ALL = 0 -BLEND_OPT_PRESERVE_ALL_IGNORE_NONE = 1 -BLEND_OPT_PRESERVE_C1_IGNORE_C0 = 2 -BLEND_OPT_PRESERVE_C0_IGNORE_C1 = 3 -BLEND_OPT_PRESERVE_A1_IGNORE_A0 = 4 -BLEND_OPT_PRESERVE_A0_IGNORE_A1 = 5 -BLEND_OPT_PRESERVE_NONE_IGNORE_A0 = 6 -BLEND_OPT_PRESERVE_NONE_IGNORE_NONE = 7 -SX_BLEND_OPT = ctypes.c_uint32 # enum - -# values for enumeration 'SX_DOWNCONVERT_FORMAT' -SX_DOWNCONVERT_FORMAT__enumvalues = { - 0: 'SX_RT_EXPORT_NO_CONVERSION', - 1: 'SX_RT_EXPORT_32_R', - 2: 'SX_RT_EXPORT_32_A', - 3: 'SX_RT_EXPORT_10_11_11', - 4: 'SX_RT_EXPORT_2_10_10_10', - 5: 'SX_RT_EXPORT_8_8_8_8', - 6: 'SX_RT_EXPORT_5_6_5', - 7: 'SX_RT_EXPORT_1_5_5_5', - 8: 'SX_RT_EXPORT_4_4_4_4', - 9: 'SX_RT_EXPORT_16_16_GR', - 10: 'SX_RT_EXPORT_16_16_AR', - 11: 'SX_RT_EXPORT_9_9_9_E5', - 12: 'SX_RT_EXPORT_2_10_10_10_7E3', - 13: 'SX_RT_EXPORT_2_10_10_10_6E4', -} -SX_RT_EXPORT_NO_CONVERSION = 0 -SX_RT_EXPORT_32_R = 1 -SX_RT_EXPORT_32_A = 2 -SX_RT_EXPORT_10_11_11 = 3 -SX_RT_EXPORT_2_10_10_10 = 4 -SX_RT_EXPORT_8_8_8_8 = 5 -SX_RT_EXPORT_5_6_5 = 6 -SX_RT_EXPORT_1_5_5_5 = 7 -SX_RT_EXPORT_4_4_4_4 = 8 -SX_RT_EXPORT_16_16_GR = 9 -SX_RT_EXPORT_16_16_AR = 10 -SX_RT_EXPORT_9_9_9_E5 = 11 -SX_RT_EXPORT_2_10_10_10_7E3 = 12 -SX_RT_EXPORT_2_10_10_10_6E4 = 13 -SX_DOWNCONVERT_FORMAT = ctypes.c_uint32 # enum - -# values for enumeration 'SX_OPT_COMB_FCN' -SX_OPT_COMB_FCN__enumvalues = { - 0: 'OPT_COMB_NONE', - 1: 'OPT_COMB_ADD', - 2: 'OPT_COMB_SUBTRACT', - 3: 'OPT_COMB_MIN', - 4: 'OPT_COMB_MAX', - 5: 'OPT_COMB_REVSUBTRACT', - 6: 'OPT_COMB_BLEND_DISABLED', - 7: 'OPT_COMB_SAFE_ADD', -} -OPT_COMB_NONE = 0 -OPT_COMB_ADD = 1 -OPT_COMB_SUBTRACT = 2 -OPT_COMB_MIN = 3 -OPT_COMB_MAX = 4 -OPT_COMB_REVSUBTRACT = 5 -OPT_COMB_BLEND_DISABLED = 6 -OPT_COMB_SAFE_ADD = 7 -SX_OPT_COMB_FCN = ctypes.c_uint32 # enum - -# values for enumeration 'SX_PERFCOUNTER_VALS' -SX_PERFCOUNTER_VALS__enumvalues = { - 0: 'SX_PERF_SEL_PA_IDLE_CYCLES', - 1: 'SX_PERF_SEL_PA_REQ', - 2: 'SX_PERF_SEL_PA_POS', - 3: 'SX_PERF_SEL_CLOCK', - 4: 'SX_PERF_SEL_GATE_EN1', - 5: 'SX_PERF_SEL_GATE_EN2', - 6: 'SX_PERF_SEL_GATE_EN3', - 7: 'SX_PERF_SEL_GATE_EN4', - 8: 'SX_PERF_SEL_SH_POS_STARVE', - 9: 'SX_PERF_SEL_SH_COLOR_STARVE', - 10: 'SX_PERF_SEL_SH_POS_STALL', - 11: 'SX_PERF_SEL_SH_COLOR_STALL', - 12: 'SX_PERF_SEL_DB0_PIXELS', - 13: 'SX_PERF_SEL_DB0_HALF_QUADS', - 14: 'SX_PERF_SEL_DB0_PIXEL_STALL', - 15: 'SX_PERF_SEL_DB0_PIXEL_IDLE', - 16: 'SX_PERF_SEL_DB0_PRED_PIXELS', - 17: 'SX_PERF_SEL_DB1_PIXELS', - 18: 'SX_PERF_SEL_DB1_HALF_QUADS', - 19: 'SX_PERF_SEL_DB1_PIXEL_STALL', - 20: 'SX_PERF_SEL_DB1_PIXEL_IDLE', - 21: 'SX_PERF_SEL_DB1_PRED_PIXELS', - 22: 'SX_PERF_SEL_DB2_PIXELS', - 23: 'SX_PERF_SEL_DB2_HALF_QUADS', - 24: 'SX_PERF_SEL_DB2_PIXEL_STALL', - 25: 'SX_PERF_SEL_DB2_PIXEL_IDLE', - 26: 'SX_PERF_SEL_DB2_PRED_PIXELS', - 27: 'SX_PERF_SEL_DB3_PIXELS', - 28: 'SX_PERF_SEL_DB3_HALF_QUADS', - 29: 'SX_PERF_SEL_DB3_PIXEL_STALL', - 30: 'SX_PERF_SEL_DB3_PIXEL_IDLE', - 31: 'SX_PERF_SEL_DB3_PRED_PIXELS', - 32: 'SX_PERF_SEL_COL_BUSY', - 33: 'SX_PERF_SEL_POS_BUSY', - 34: 'SX_PERF_SEL_DB0_MRT_BLEND_BYPASS', - 35: 'SX_PERF_SEL_DB0_MRT_DONT_RD_DEST', - 36: 'SX_PERF_SEL_DB0_MRT_DISCARD_SRC', - 37: 'SX_PERF_SEL_DB0_MRT_SINGLE_QUADS', - 38: 'SX_PERF_SEL_DB0_MRT_DOUBLE_QUADS', - 39: 'SX_PERF_SEL_DB1_MRT_BLEND_BYPASS', - 40: 'SX_PERF_SEL_DB1_MRT_DONT_RD_DEST', - 41: 'SX_PERF_SEL_DB1_MRT_DISCARD_SRC', - 42: 'SX_PERF_SEL_DB1_MRT_SINGLE_QUADS', - 43: 'SX_PERF_SEL_DB1_MRT_DOUBLE_QUADS', - 44: 'SX_PERF_SEL_DB2_MRT_BLEND_BYPASS', - 45: 'SX_PERF_SEL_DB2_MRT_DONT_RD_DEST', - 46: 'SX_PERF_SEL_DB2_MRT_DISCARD_SRC', - 47: 'SX_PERF_SEL_DB2_MRT_SINGLE_QUADS', - 48: 'SX_PERF_SEL_DB2_MRT_DOUBLE_QUADS', - 49: 'SX_PERF_SEL_DB3_MRT_BLEND_BYPASS', - 50: 'SX_PERF_SEL_DB3_MRT_DONT_RD_DEST', - 51: 'SX_PERF_SEL_DB3_MRT_DISCARD_SRC', - 52: 'SX_PERF_SEL_DB3_MRT_SINGLE_QUADS', - 53: 'SX_PERF_SEL_DB3_MRT_DOUBLE_QUADS', - 54: 'SX_PERF_SEL_PA_REQ_LATENCY', - 55: 'SX_PERF_SEL_POS_SCBD_STALL', - 56: 'SX_PERF_SEL_CLOCK_DROP_STALL', - 57: 'SX_PERF_SEL_GATE_EN5', - 58: 'SX_PERF_SEL_GATE_EN6', - 59: 'SX_PERF_SEL_DB0_SIZE', - 60: 'SX_PERF_SEL_DB1_SIZE', - 61: 'SX_PERF_SEL_DB2_SIZE', - 62: 'SX_PERF_SEL_DB3_SIZE', - 63: 'SX_PERF_SEL_IDX_STALL_CYCLES', - 64: 'SX_PERF_SEL_IDX_IDLE_CYCLES', - 65: 'SX_PERF_SEL_IDX_REQ', - 66: 'SX_PERF_SEL_IDX_RET', - 67: 'SX_PERF_SEL_IDX_REQ_LATENCY', - 68: 'SX_PERF_SEL_IDX_SCBD_STALL', - 69: 'SX_PERF_SEL_GATE_EN7', - 70: 'SX_PERF_SEL_GATE_EN8', - 71: 'SX_PERF_SEL_SH_IDX_STARVE', - 72: 'SX_PERF_SEL_IDX_BUSY', - 73: 'SX_PERF_SEL_PA_POS_BANK_CONF', - 74: 'SX_PERF_SEL_DB0_END_OF_WAVE', - 75: 'SX_PERF_SEL_DB0_4X2_DISCARD', - 76: 'SX_PERF_SEL_DB1_END_OF_WAVE', - 77: 'SX_PERF_SEL_DB1_4X2_DISCARD', - 78: 'SX_PERF_SEL_DB2_END_OF_WAVE', - 79: 'SX_PERF_SEL_DB2_4X2_DISCARD', - 80: 'SX_PERF_SEL_DB3_END_OF_WAVE', - 81: 'SX_PERF_SEL_DB3_4X2_DISCARD', -} -SX_PERF_SEL_PA_IDLE_CYCLES = 0 -SX_PERF_SEL_PA_REQ = 1 -SX_PERF_SEL_PA_POS = 2 -SX_PERF_SEL_CLOCK = 3 -SX_PERF_SEL_GATE_EN1 = 4 -SX_PERF_SEL_GATE_EN2 = 5 -SX_PERF_SEL_GATE_EN3 = 6 -SX_PERF_SEL_GATE_EN4 = 7 -SX_PERF_SEL_SH_POS_STARVE = 8 -SX_PERF_SEL_SH_COLOR_STARVE = 9 -SX_PERF_SEL_SH_POS_STALL = 10 -SX_PERF_SEL_SH_COLOR_STALL = 11 -SX_PERF_SEL_DB0_PIXELS = 12 -SX_PERF_SEL_DB0_HALF_QUADS = 13 -SX_PERF_SEL_DB0_PIXEL_STALL = 14 -SX_PERF_SEL_DB0_PIXEL_IDLE = 15 -SX_PERF_SEL_DB0_PRED_PIXELS = 16 -SX_PERF_SEL_DB1_PIXELS = 17 -SX_PERF_SEL_DB1_HALF_QUADS = 18 -SX_PERF_SEL_DB1_PIXEL_STALL = 19 -SX_PERF_SEL_DB1_PIXEL_IDLE = 20 -SX_PERF_SEL_DB1_PRED_PIXELS = 21 -SX_PERF_SEL_DB2_PIXELS = 22 -SX_PERF_SEL_DB2_HALF_QUADS = 23 -SX_PERF_SEL_DB2_PIXEL_STALL = 24 -SX_PERF_SEL_DB2_PIXEL_IDLE = 25 -SX_PERF_SEL_DB2_PRED_PIXELS = 26 -SX_PERF_SEL_DB3_PIXELS = 27 -SX_PERF_SEL_DB3_HALF_QUADS = 28 -SX_PERF_SEL_DB3_PIXEL_STALL = 29 -SX_PERF_SEL_DB3_PIXEL_IDLE = 30 -SX_PERF_SEL_DB3_PRED_PIXELS = 31 -SX_PERF_SEL_COL_BUSY = 32 -SX_PERF_SEL_POS_BUSY = 33 -SX_PERF_SEL_DB0_MRT_BLEND_BYPASS = 34 -SX_PERF_SEL_DB0_MRT_DONT_RD_DEST = 35 -SX_PERF_SEL_DB0_MRT_DISCARD_SRC = 36 -SX_PERF_SEL_DB0_MRT_SINGLE_QUADS = 37 -SX_PERF_SEL_DB0_MRT_DOUBLE_QUADS = 38 -SX_PERF_SEL_DB1_MRT_BLEND_BYPASS = 39 -SX_PERF_SEL_DB1_MRT_DONT_RD_DEST = 40 -SX_PERF_SEL_DB1_MRT_DISCARD_SRC = 41 -SX_PERF_SEL_DB1_MRT_SINGLE_QUADS = 42 -SX_PERF_SEL_DB1_MRT_DOUBLE_QUADS = 43 -SX_PERF_SEL_DB2_MRT_BLEND_BYPASS = 44 -SX_PERF_SEL_DB2_MRT_DONT_RD_DEST = 45 -SX_PERF_SEL_DB2_MRT_DISCARD_SRC = 46 -SX_PERF_SEL_DB2_MRT_SINGLE_QUADS = 47 -SX_PERF_SEL_DB2_MRT_DOUBLE_QUADS = 48 -SX_PERF_SEL_DB3_MRT_BLEND_BYPASS = 49 -SX_PERF_SEL_DB3_MRT_DONT_RD_DEST = 50 -SX_PERF_SEL_DB3_MRT_DISCARD_SRC = 51 -SX_PERF_SEL_DB3_MRT_SINGLE_QUADS = 52 -SX_PERF_SEL_DB3_MRT_DOUBLE_QUADS = 53 -SX_PERF_SEL_PA_REQ_LATENCY = 54 -SX_PERF_SEL_POS_SCBD_STALL = 55 -SX_PERF_SEL_CLOCK_DROP_STALL = 56 -SX_PERF_SEL_GATE_EN5 = 57 -SX_PERF_SEL_GATE_EN6 = 58 -SX_PERF_SEL_DB0_SIZE = 59 -SX_PERF_SEL_DB1_SIZE = 60 -SX_PERF_SEL_DB2_SIZE = 61 -SX_PERF_SEL_DB3_SIZE = 62 -SX_PERF_SEL_IDX_STALL_CYCLES = 63 -SX_PERF_SEL_IDX_IDLE_CYCLES = 64 -SX_PERF_SEL_IDX_REQ = 65 -SX_PERF_SEL_IDX_RET = 66 -SX_PERF_SEL_IDX_REQ_LATENCY = 67 -SX_PERF_SEL_IDX_SCBD_STALL = 68 -SX_PERF_SEL_GATE_EN7 = 69 -SX_PERF_SEL_GATE_EN8 = 70 -SX_PERF_SEL_SH_IDX_STARVE = 71 -SX_PERF_SEL_IDX_BUSY = 72 -SX_PERF_SEL_PA_POS_BANK_CONF = 73 -SX_PERF_SEL_DB0_END_OF_WAVE = 74 -SX_PERF_SEL_DB0_4X2_DISCARD = 75 -SX_PERF_SEL_DB1_END_OF_WAVE = 76 -SX_PERF_SEL_DB1_4X2_DISCARD = 77 -SX_PERF_SEL_DB2_END_OF_WAVE = 78 -SX_PERF_SEL_DB2_4X2_DISCARD = 79 -SX_PERF_SEL_DB3_END_OF_WAVE = 80 -SX_PERF_SEL_DB3_4X2_DISCARD = 81 -SX_PERFCOUNTER_VALS = ctypes.c_uint32 # enum - -# values for enumeration 'CompareFrag' -CompareFrag__enumvalues = { - 0: 'FRAG_NEVER', - 1: 'FRAG_LESS', - 2: 'FRAG_EQUAL', - 3: 'FRAG_LEQUAL', - 4: 'FRAG_GREATER', - 5: 'FRAG_NOTEQUAL', - 6: 'FRAG_GEQUAL', - 7: 'FRAG_ALWAYS', -} -FRAG_NEVER = 0 -FRAG_LESS = 1 -FRAG_EQUAL = 2 -FRAG_LEQUAL = 3 -FRAG_GREATER = 4 -FRAG_NOTEQUAL = 5 -FRAG_GEQUAL = 6 -FRAG_ALWAYS = 7 -CompareFrag = ctypes.c_uint32 # enum - -# values for enumeration 'ConservativeZExport' -ConservativeZExport__enumvalues = { - 0: 'EXPORT_ANY_Z', - 1: 'EXPORT_LESS_THAN_Z', - 2: 'EXPORT_GREATER_THAN_Z', - 3: 'EXPORT_RESERVED', -} -EXPORT_ANY_Z = 0 -EXPORT_LESS_THAN_Z = 1 -EXPORT_GREATER_THAN_Z = 2 -EXPORT_RESERVED = 3 -ConservativeZExport = ctypes.c_uint32 # enum - -# values for enumeration 'DFSMFlushEvents' -DFSMFlushEvents__enumvalues = { - 0: 'DB_FLUSH_AND_INV_DB_DATA_TS', - 1: 'DB_FLUSH_AND_INV_DB_META', - 2: 'DB_CACHE_FLUSH', - 3: 'DB_CACHE_FLUSH_TS', - 4: 'DB_CACHE_FLUSH_AND_INV_EVENT', - 5: 'DB_CACHE_FLUSH_AND_INV_TS_EVENT', - 6: 'DB_VPORT_CHANGED_EVENT', - 7: 'DB_CONTEXT_DONE_EVENT', - 8: 'DB_BREAK_BATCH_EVENT', - 9: 'DB_INVOKE_CHANGE_EVENT', - 10: 'DB_CONTEXT_SUSPEND_EVENT', -} -DB_FLUSH_AND_INV_DB_DATA_TS = 0 -DB_FLUSH_AND_INV_DB_META = 1 -DB_CACHE_FLUSH = 2 -DB_CACHE_FLUSH_TS = 3 -DB_CACHE_FLUSH_AND_INV_EVENT = 4 -DB_CACHE_FLUSH_AND_INV_TS_EVENT = 5 -DB_VPORT_CHANGED_EVENT = 6 -DB_CONTEXT_DONE_EVENT = 7 -DB_BREAK_BATCH_EVENT = 8 -DB_INVOKE_CHANGE_EVENT = 9 -DB_CONTEXT_SUSPEND_EVENT = 10 -DFSMFlushEvents = ctypes.c_uint32 # enum - -# values for enumeration 'DbMemArbWatermarks' -DbMemArbWatermarks__enumvalues = { - 0: 'TRANSFERRED_64_BYTES', - 1: 'TRANSFERRED_128_BYTES', - 2: 'TRANSFERRED_256_BYTES', - 3: 'TRANSFERRED_512_BYTES', - 4: 'TRANSFERRED_1024_BYTES', - 5: 'TRANSFERRED_2048_BYTES', - 6: 'TRANSFERRED_4096_BYTES', - 7: 'TRANSFERRED_8192_BYTES', -} -TRANSFERRED_64_BYTES = 0 -TRANSFERRED_128_BYTES = 1 -TRANSFERRED_256_BYTES = 2 -TRANSFERRED_512_BYTES = 3 -TRANSFERRED_1024_BYTES = 4 -TRANSFERRED_2048_BYTES = 5 -TRANSFERRED_4096_BYTES = 6 -TRANSFERRED_8192_BYTES = 7 -DbMemArbWatermarks = ctypes.c_uint32 # enum - -# values for enumeration 'DbPRTFaultBehavior' -DbPRTFaultBehavior__enumvalues = { - 0: 'FAULT_ZERO', - 1: 'FAULT_ONE', - 2: 'FAULT_FAIL', - 3: 'FAULT_PASS', -} -FAULT_ZERO = 0 -FAULT_ONE = 1 -FAULT_FAIL = 2 -FAULT_PASS = 3 -DbPRTFaultBehavior = ctypes.c_uint32 # enum - -# values for enumeration 'DbPSLControl' -DbPSLControl__enumvalues = { - 0: 'PSLC_AUTO', - 1: 'PSLC_ON_HANG_ONLY', - 2: 'PSLC_ASAP', - 3: 'PSLC_COUNTDOWN', -} -PSLC_AUTO = 0 -PSLC_ON_HANG_ONLY = 1 -PSLC_ASAP = 2 -PSLC_COUNTDOWN = 3 -DbPSLControl = ctypes.c_uint32 # enum - -# values for enumeration 'ForceControl' -ForceControl__enumvalues = { - 0: 'FORCE_OFF', - 1: 'FORCE_ENABLE', - 2: 'FORCE_DISABLE', - 3: 'FORCE_RESERVED', -} -FORCE_OFF = 0 -FORCE_ENABLE = 1 -FORCE_DISABLE = 2 -FORCE_RESERVED = 3 -ForceControl = ctypes.c_uint32 # enum - -# values for enumeration 'OreoMode' -OreoMode__enumvalues = { - 0: 'OMODE_BLEND', - 1: 'OMODE_O_THEN_B', - 2: 'OMODE_P_THEN_O_THEN_B', - 3: 'OMODE_RESERVED_3', -} -OMODE_BLEND = 0 -OMODE_O_THEN_B = 1 -OMODE_P_THEN_O_THEN_B = 2 -OMODE_RESERVED_3 = 3 -OreoMode = ctypes.c_uint32 # enum - -# values for enumeration 'PerfCounter_Vals' -PerfCounter_Vals__enumvalues = { - 0: 'DB_PERF_SEL_SC_DB_tile_sends', - 1: 'DB_PERF_SEL_SC_DB_tile_busy', - 2: 'DB_PERF_SEL_SC_DB_tile_stalls', - 3: 'DB_PERF_SEL_SC_DB_tile_events', - 4: 'DB_PERF_SEL_SC_DB_tile_tiles', - 5: 'DB_PERF_SEL_SC_DB_tile_covered', - 6: 'DB_PERF_SEL_hiz_tc_read_starved', - 7: 'DB_PERF_SEL_hiz_tc_write_stall', - 8: 'DB_PERF_SEL_hiz_tile_culled', - 9: 'DB_PERF_SEL_his_tile_culled', - 10: 'DB_PERF_SEL_DB_SC_tile_sends', - 11: 'DB_PERF_SEL_DB_SC_tile_busy', - 12: 'DB_PERF_SEL_DB_SC_tile_stalls', - 13: 'DB_PERF_SEL_DB_SC_tile_df_stalls', - 14: 'DB_PERF_SEL_DB_SC_tile_tiles', - 15: 'DB_PERF_SEL_DB_SC_tile_culled', - 16: 'DB_PERF_SEL_DB_SC_tile_hier_kill', - 17: 'DB_PERF_SEL_DB_SC_tile_fast_ops', - 18: 'DB_PERF_SEL_DB_SC_tile_no_ops', - 19: 'DB_PERF_SEL_DB_SC_tile_tile_rate', - 20: 'DB_PERF_SEL_DB_SC_tile_ssaa_kill', - 21: 'DB_PERF_SEL_DB_SC_tile_fast_z_ops', - 22: 'DB_PERF_SEL_DB_SC_tile_fast_stencil_ops', - 23: 'DB_PERF_SEL_SC_DB_quad_sends', - 24: 'DB_PERF_SEL_SC_DB_quad_busy', - 25: 'DB_PERF_SEL_SC_DB_quad_squads', - 26: 'DB_PERF_SEL_SC_DB_quad_tiles', - 27: 'DB_PERF_SEL_SC_DB_quad_pixels', - 28: 'DB_PERF_SEL_SC_DB_quad_killed_tiles', - 29: 'DB_PERF_SEL_DB_SC_quad_sends', - 30: 'DB_PERF_SEL_DB_SC_quad_busy', - 31: 'DB_PERF_SEL_DB_SC_quad_stalls', - 32: 'DB_PERF_SEL_DB_SC_quad_tiles', - 33: 'DB_PERF_SEL_DB_SC_quad_lit_quad', - 34: 'DB_PERF_SEL_DB_CB_tile_sends', - 35: 'DB_PERF_SEL_DB_CB_tile_busy', - 36: 'DB_PERF_SEL_DB_CB_tile_stalls', - 37: 'DB_PERF_SEL_SX_DB_quad_sends', - 38: 'DB_PERF_SEL_SX_DB_quad_busy', - 39: 'DB_PERF_SEL_SX_DB_quad_stalls', - 40: 'DB_PERF_SEL_SX_DB_quad_quads', - 41: 'DB_PERF_SEL_SX_DB_quad_pixels', - 42: 'DB_PERF_SEL_SX_DB_quad_exports', - 43: 'DB_PERF_SEL_SH_quads_outstanding_sum', - 44: 'DB_PERF_SEL_DB_CB_lquad_sends', - 45: 'DB_PERF_SEL_DB_CB_lquad_busy', - 46: 'DB_PERF_SEL_DB_CB_lquad_stalls', - 47: 'DB_PERF_SEL_DB_CB_lquad_quads', - 48: 'DB_PERF_SEL_tile_rd_sends', - 49: 'DB_PERF_SEL_mi_tile_rd_outstanding_sum', - 50: 'DB_PERF_SEL_quad_rd_sends', - 51: 'DB_PERF_SEL_quad_rd_busy', - 52: 'DB_PERF_SEL_quad_rd_mi_stall', - 53: 'DB_PERF_SEL_quad_rd_rw_collision', - 54: 'DB_PERF_SEL_quad_rd_tag_stall', - 55: 'DB_PERF_SEL_quad_rd_32byte_reqs', - 56: 'DB_PERF_SEL_quad_rd_panic', - 57: 'DB_PERF_SEL_mi_quad_rd_outstanding_sum', - 58: 'DB_PERF_SEL_quad_rdret_sends', - 59: 'DB_PERF_SEL_quad_rdret_busy', - 60: 'DB_PERF_SEL_tile_wr_sends', - 61: 'DB_PERF_SEL_tile_wr_acks', - 62: 'DB_PERF_SEL_mi_tile_wr_outstanding_sum', - 63: 'DB_PERF_SEL_quad_wr_sends', - 64: 'DB_PERF_SEL_quad_wr_busy', - 65: 'DB_PERF_SEL_quad_wr_mi_stall', - 66: 'DB_PERF_SEL_quad_wr_coherency_stall', - 67: 'DB_PERF_SEL_quad_wr_acks', - 68: 'DB_PERF_SEL_mi_quad_wr_outstanding_sum', - 69: 'DB_PERF_SEL_Tile_Cache_misses', - 70: 'DB_PERF_SEL_Tile_Cache_hits', - 71: 'DB_PERF_SEL_Tile_Cache_flushes', - 72: 'DB_PERF_SEL_Tile_Cache_surface_stall', - 73: 'DB_PERF_SEL_Tile_Cache_starves', - 74: 'DB_PERF_SEL_Tile_Cache_mem_return_starve', - 75: 'DB_PERF_SEL_tcp_dispatcher_reads', - 76: 'DB_PERF_SEL_tcp_prefetcher_reads', - 77: 'DB_PERF_SEL_tcp_preloader_reads', - 78: 'DB_PERF_SEL_tcp_dispatcher_flushes', - 79: 'DB_PERF_SEL_tcp_prefetcher_flushes', - 80: 'DB_PERF_SEL_tcp_preloader_flushes', - 81: 'DB_PERF_SEL_Depth_Tile_Cache_sends', - 82: 'DB_PERF_SEL_Depth_Tile_Cache_busy', - 83: 'DB_PERF_SEL_Depth_Tile_Cache_starves', - 84: 'DB_PERF_SEL_Depth_Tile_Cache_dtile_locked', - 85: 'DB_PERF_SEL_Depth_Tile_Cache_alloc_stall', - 86: 'DB_PERF_SEL_Depth_Tile_Cache_misses', - 87: 'DB_PERF_SEL_Depth_Tile_Cache_hits', - 88: 'DB_PERF_SEL_Depth_Tile_Cache_flushes', - 89: 'DB_PERF_SEL_Depth_Tile_Cache_noop_tile', - 90: 'DB_PERF_SEL_Depth_Tile_Cache_detailed_noop', - 91: 'DB_PERF_SEL_Depth_Tile_Cache_event', - 92: 'DB_PERF_SEL_Depth_Tile_Cache_tile_frees', - 93: 'DB_PERF_SEL_Depth_Tile_Cache_data_frees', - 94: 'DB_PERF_SEL_Depth_Tile_Cache_mem_return_starve', - 95: 'DB_PERF_SEL_Stencil_Cache_misses', - 96: 'DB_PERF_SEL_Stencil_Cache_hits', - 97: 'DB_PERF_SEL_Stencil_Cache_flushes', - 98: 'DB_PERF_SEL_Stencil_Cache_starves', - 99: 'DB_PERF_SEL_Stencil_Cache_frees', - 100: 'DB_PERF_SEL_Z_Cache_separate_Z_misses', - 101: 'DB_PERF_SEL_Z_Cache_separate_Z_hits', - 102: 'DB_PERF_SEL_Z_Cache_separate_Z_flushes', - 103: 'DB_PERF_SEL_Z_Cache_separate_Z_starves', - 104: 'DB_PERF_SEL_Z_Cache_pmask_misses', - 105: 'DB_PERF_SEL_Z_Cache_pmask_hits', - 106: 'DB_PERF_SEL_Z_Cache_pmask_flushes', - 107: 'DB_PERF_SEL_Z_Cache_pmask_starves', - 108: 'DB_PERF_SEL_Z_Cache_frees', - 109: 'DB_PERF_SEL_Plane_Cache_misses', - 110: 'DB_PERF_SEL_Plane_Cache_hits', - 111: 'DB_PERF_SEL_Plane_Cache_flushes', - 112: 'DB_PERF_SEL_Plane_Cache_starves', - 113: 'DB_PERF_SEL_Plane_Cache_frees', - 114: 'DB_PERF_SEL_flush_expanded_stencil', - 115: 'DB_PERF_SEL_flush_compressed_stencil', - 116: 'DB_PERF_SEL_flush_single_stencil', - 117: 'DB_PERF_SEL_planes_flushed', - 118: 'DB_PERF_SEL_flush_1plane', - 119: 'DB_PERF_SEL_flush_2plane', - 120: 'DB_PERF_SEL_flush_3plane', - 121: 'DB_PERF_SEL_flush_4plane', - 122: 'DB_PERF_SEL_flush_5plane', - 123: 'DB_PERF_SEL_flush_6plane', - 124: 'DB_PERF_SEL_flush_7plane', - 125: 'DB_PERF_SEL_flush_8plane', - 126: 'DB_PERF_SEL_flush_9plane', - 127: 'DB_PERF_SEL_flush_10plane', - 128: 'DB_PERF_SEL_flush_11plane', - 129: 'DB_PERF_SEL_flush_12plane', - 130: 'DB_PERF_SEL_flush_13plane', - 131: 'DB_PERF_SEL_flush_14plane', - 132: 'DB_PERF_SEL_flush_15plane', - 133: 'DB_PERF_SEL_flush_16plane', - 134: 'DB_PERF_SEL_flush_expanded_z', - 135: 'DB_PERF_SEL_earlyZ_waiting_for_postZ_done', - 136: 'DB_PERF_SEL_reZ_waiting_for_postZ_done', - 137: 'DB_PERF_SEL_dk_tile_sends', - 138: 'DB_PERF_SEL_dk_tile_busy', - 139: 'DB_PERF_SEL_dk_tile_quad_starves', - 140: 'DB_PERF_SEL_dk_tile_stalls', - 141: 'DB_PERF_SEL_dk_squad_sends', - 142: 'DB_PERF_SEL_dk_squad_busy', - 143: 'DB_PERF_SEL_dk_squad_stalls', - 144: 'DB_PERF_SEL_Op_Pipe_Busy', - 145: 'DB_PERF_SEL_Op_Pipe_MC_Read_stall', - 146: 'DB_PERF_SEL_qc_busy', - 147: 'DB_PERF_SEL_qc_xfc', - 148: 'DB_PERF_SEL_qc_conflicts', - 149: 'DB_PERF_SEL_qc_full_stall', - 150: 'DB_PERF_SEL_qc_in_preZ_tile_stalls_postZ', - 151: 'DB_PERF_SEL_qc_in_postZ_tile_stalls_preZ', - 152: 'DB_PERF_SEL_tsc_insert_summarize_stall', - 153: 'DB_PERF_SEL_tl_busy', - 154: 'DB_PERF_SEL_tl_dtc_read_starved', - 155: 'DB_PERF_SEL_tl_z_fetch_stall', - 156: 'DB_PERF_SEL_tl_stencil_stall', - 157: 'DB_PERF_SEL_tl_z_decompress_stall', - 158: 'DB_PERF_SEL_tl_stencil_locked_stall', - 159: 'DB_PERF_SEL_tl_events', - 160: 'DB_PERF_SEL_tl_summarize_squads', - 161: 'DB_PERF_SEL_tl_flush_expand_squads', - 162: 'DB_PERF_SEL_tl_expand_squads', - 163: 'DB_PERF_SEL_tl_preZ_squads', - 164: 'DB_PERF_SEL_tl_postZ_squads', - 165: 'DB_PERF_SEL_tl_preZ_noop_squads', - 166: 'DB_PERF_SEL_tl_postZ_noop_squads', - 167: 'DB_PERF_SEL_tl_tile_ops', - 168: 'DB_PERF_SEL_tl_in_xfc', - 169: 'DB_PERF_SEL_tl_in_single_stencil_expand_stall', - 170: 'DB_PERF_SEL_tl_in_fast_z_stall', - 171: 'DB_PERF_SEL_tl_out_xfc', - 172: 'DB_PERF_SEL_tl_out_squads', - 173: 'DB_PERF_SEL_zf_plane_multicycle', - 174: 'DB_PERF_SEL_PostZ_Samples_passing_Z', - 175: 'DB_PERF_SEL_PostZ_Samples_failing_Z', - 176: 'DB_PERF_SEL_PostZ_Samples_failing_S', - 177: 'DB_PERF_SEL_PreZ_Samples_passing_Z', - 178: 'DB_PERF_SEL_PreZ_Samples_failing_Z', - 179: 'DB_PERF_SEL_PreZ_Samples_failing_S', - 180: 'DB_PERF_SEL_ts_tc_update_stall', - 181: 'DB_PERF_SEL_sc_kick_start', - 182: 'DB_PERF_SEL_sc_kick_end', - 183: 'DB_PERF_SEL_clock_reg_active', - 184: 'DB_PERF_SEL_clock_main_active', - 185: 'DB_PERF_SEL_clock_mem_export_active', - 186: 'DB_PERF_SEL_esr_ps_out_busy', - 187: 'DB_PERF_SEL_esr_ps_lqf_busy', - 188: 'DB_PERF_SEL_esr_ps_lqf_stall', - 189: 'DB_PERF_SEL_etr_out_send', - 190: 'DB_PERF_SEL_etr_out_busy', - 191: 'DB_PERF_SEL_etr_out_ltile_probe_fifo_full_stall', - 192: 'DB_PERF_SEL_etr_out_cb_tile_stall', - 193: 'DB_PERF_SEL_etr_out_esr_stall', - 194: 'DB_PERF_SEL_esr_ps_vic_busy', - 195: 'DB_PERF_SEL_esr_ps_vic_stall', - 196: 'DB_PERF_SEL_esr_eot_fwd_busy', - 197: 'DB_PERF_SEL_esr_eot_fwd_holding_squad', - 198: 'DB_PERF_SEL_esr_eot_fwd_forward', - 199: 'DB_PERF_SEL_esr_sqq_zi_busy', - 200: 'DB_PERF_SEL_esr_sqq_zi_stall', - 201: 'DB_PERF_SEL_postzl_sq_pt_busy', - 202: 'DB_PERF_SEL_postzl_sq_pt_stall', - 203: 'DB_PERF_SEL_postzl_se_busy', - 204: 'DB_PERF_SEL_postzl_se_stall', - 205: 'DB_PERF_SEL_postzl_partial_launch', - 206: 'DB_PERF_SEL_postzl_full_launch', - 207: 'DB_PERF_SEL_postzl_partial_waiting', - 208: 'DB_PERF_SEL_postzl_tile_mem_stall', - 209: 'DB_PERF_SEL_postzl_tile_init_stall', - 210: 'DB_PERF_SEL_prezl_tile_mem_stall', - 211: 'DB_PERF_SEL_prezl_tile_init_stall', - 212: 'DB_PERF_SEL_dtt_sm_clash_stall', - 213: 'DB_PERF_SEL_dtt_sm_slot_stall', - 214: 'DB_PERF_SEL_dtt_sm_miss_stall', - 215: 'DB_PERF_SEL_mi_rdreq_busy', - 216: 'DB_PERF_SEL_mi_rdreq_stall', - 217: 'DB_PERF_SEL_mi_wrreq_busy', - 218: 'DB_PERF_SEL_mi_wrreq_stall', - 219: 'DB_PERF_SEL_recomp_tile_to_1zplane_no_fastop', - 220: 'DB_PERF_SEL_dkg_tile_rate_tile', - 221: 'DB_PERF_SEL_prezl_src_in_sends', - 222: 'DB_PERF_SEL_prezl_src_in_stall', - 223: 'DB_PERF_SEL_prezl_src_in_squads', - 224: 'DB_PERF_SEL_prezl_src_in_squads_unrolled', - 225: 'DB_PERF_SEL_prezl_src_in_tile_rate', - 226: 'DB_PERF_SEL_prezl_src_in_tile_rate_unrolled', - 227: 'DB_PERF_SEL_prezl_src_out_stall', - 228: 'DB_PERF_SEL_postzl_src_in_sends', - 229: 'DB_PERF_SEL_postzl_src_in_stall', - 230: 'DB_PERF_SEL_postzl_src_in_squads', - 231: 'DB_PERF_SEL_postzl_src_in_squads_unrolled', - 232: 'DB_PERF_SEL_postzl_src_in_tile_rate', - 233: 'DB_PERF_SEL_postzl_src_in_tile_rate_unrolled', - 234: 'DB_PERF_SEL_postzl_src_out_stall', - 235: 'DB_PERF_SEL_esr_ps_src_in_sends', - 236: 'DB_PERF_SEL_esr_ps_src_in_stall', - 237: 'DB_PERF_SEL_esr_ps_src_in_squads', - 238: 'DB_PERF_SEL_esr_ps_src_in_squads_unrolled', - 239: 'DB_PERF_SEL_esr_ps_src_in_tile_rate', - 240: 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled', - 241: 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled_to_pixel_rate', - 242: 'DB_PERF_SEL_esr_ps_src_out_stall', - 243: 'DB_PERF_SEL_depth_bounds_tile_culled', - 244: 'DB_PERF_SEL_PreZ_Samples_failing_DB', - 245: 'DB_PERF_SEL_PostZ_Samples_failing_DB', - 246: 'DB_PERF_SEL_flush_compressed', - 247: 'DB_PERF_SEL_flush_plane_le4', - 248: 'DB_PERF_SEL_tiles_z_fully_summarized', - 249: 'DB_PERF_SEL_tiles_stencil_fully_summarized', - 250: 'DB_PERF_SEL_tiles_z_clear_on_expclear', - 251: 'DB_PERF_SEL_tiles_s_clear_on_expclear', - 252: 'DB_PERF_SEL_tiles_decomp_on_expclear', - 253: 'DB_PERF_SEL_tiles_compressed_to_decompressed', - 254: 'DB_PERF_SEL_Op_Pipe_Prez_Busy', - 255: 'DB_PERF_SEL_Op_Pipe_Postz_Busy', - 256: 'DB_PERF_SEL_di_dt_stall', - 257: 'Spare_257', - 258: 'DB_PERF_SEL_DB_SC_s_tile_rate', - 259: 'DB_PERF_SEL_DB_SC_c_tile_rate', - 260: 'DB_PERF_SEL_DB_SC_z_tile_rate', - 261: 'DB_PERF_SEL_DB_CB_lquad_export_quads', - 262: 'DB_PERF_SEL_DB_CB_lquad_double_format', - 263: 'DB_PERF_SEL_DB_CB_lquad_fast_format', - 264: 'DB_PERF_SEL_DB_CB_lquad_slow_format', - 265: 'DB_PERF_SEL_CB_DB_rdreq_sends', - 266: 'DB_PERF_SEL_CB_DB_rdreq_prt_sends', - 267: 'DB_PERF_SEL_CB_DB_wrreq_sends', - 268: 'DB_PERF_SEL_CB_DB_wrreq_prt_sends', - 269: 'DB_PERF_SEL_DB_CB_rdret_ack', - 270: 'DB_PERF_SEL_DB_CB_rdret_nack', - 271: 'DB_PERF_SEL_DB_CB_wrret_ack', - 272: 'DB_PERF_SEL_DB_CB_wrret_nack', - 273: 'DB_PERF_SEL_MI_tile_req_wrack_counter_stall', - 274: 'DB_PERF_SEL_MI_quad_req_wrack_counter_stall', - 275: 'DB_PERF_SEL_MI_zpc_req_wrack_counter_stall', - 276: 'DB_PERF_SEL_MI_psd_req_wrack_counter_stall', - 277: 'DB_PERF_SEL_unmapped_z_tile_culled', - 278: 'DB_PERF_SEL_DB_CB_tile_is_event_FLUSH_AND_INV_DB_DATA_TS', - 279: 'DB_PERF_SEL_DB_CB_tile_is_event_FLUSH_AND_INV_CB_PIXEL_DATA', - 280: 'DB_PERF_SEL_DB_CB_tile_is_event_BOTTOM_OF_PIPE_TS', - 281: 'DB_PERF_SEL_DB_CB_tile_waiting_for_perfcounter_stop_event', - 282: 'DB_PERF_SEL_DB_CB_lquad_fmt_32bpp_8pix', - 283: 'DB_PERF_SEL_DB_CB_lquad_fmt_16_16_unsigned_8pix', - 284: 'DB_PERF_SEL_DB_CB_lquad_fmt_16_16_signed_8pix', - 285: 'DB_PERF_SEL_DB_CB_lquad_fmt_16_16_float_8pix', - 286: 'DB_PERF_SEL_DB_CB_lquad_num_pixels_need_blending', - 287: 'DB_PERF_SEL_DB_CB_context_dones', - 288: 'DB_PERF_SEL_DB_CB_eop_dones', - 289: 'DB_PERF_SEL_SX_DB_quad_all_pixels_killed', - 290: 'DB_PERF_SEL_SX_DB_quad_all_pixels_enabled', - 291: 'DB_PERF_SEL_SX_DB_quad_need_blending_and_dst_read', - 292: 'DB_PERF_SEL_SC_DB_tile_backface', - 293: 'DB_PERF_SEL_SC_DB_quad_quads', - 294: 'DB_PERF_SEL_DB_SC_quad_quads_with_1_pixel', - 295: 'DB_PERF_SEL_DB_SC_quad_quads_with_2_pixels', - 296: 'DB_PERF_SEL_DB_SC_quad_quads_with_3_pixels', - 297: 'DB_PERF_SEL_DB_SC_quad_quads_with_4_pixels', - 298: 'DB_PERF_SEL_DB_SC_quad_double_quad', - 299: 'DB_PERF_SEL_SX_DB_quad_export_quads', - 300: 'DB_PERF_SEL_SX_DB_quad_double_format', - 301: 'DB_PERF_SEL_SX_DB_quad_fast_format', - 302: 'DB_PERF_SEL_SX_DB_quad_slow_format', - 303: 'DB_PERF_SEL_quad_rd_sends_unc', - 304: 'DB_PERF_SEL_quad_rd_mi_stall_unc', - 305: 'DB_PERF_SEL_SC_DB_tile_tiles_pipe0', - 306: 'DB_PERF_SEL_SC_DB_tile_tiles_pipe1', - 307: 'DB_PERF_SEL_SC_DB_quad_quads_pipe0', - 308: 'DB_PERF_SEL_SC_DB_quad_quads_pipe1', - 309: 'DB_PERF_SEL_PERF_fg_lob_fwdr_timeout_hits', - 310: 'DB_PERF_SEL_noz_waiting_for_postz_done', - 311: 'DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_1x1', - 312: 'DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_2x1', - 313: 'DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_1x2', - 314: 'DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_2x2', - 315: 'DB_PERF_SEL_RMI_rd_tile_32byte_req', - 316: 'DB_PERF_SEL_RMI_rd_z_32byte_req', - 317: 'DB_PERF_SEL_RMI_rd_s_32byte_req', - 318: 'DB_PERF_SEL_RMI_wr_tile_32byte_req', - 319: 'DB_PERF_SEL_RMI_wr_z_32byte_req', - 320: 'DB_PERF_SEL_RMI_wr_s_32byte_req', - 321: 'DB_PERF_SEL_RMI_wr_psdzpc_32byte_req', - 322: 'DB_PERF_SEL_RMI_rd_tile_32byte_ret', - 323: 'DB_PERF_SEL_RMI_rd_z_32byte_ret', - 324: 'DB_PERF_SEL_RMI_rd_s_32byte_ret', - 325: 'DB_PERF_SEL_RMI_wr_tile_32byte_ack', - 326: 'DB_PERF_SEL_RMI_wr_z_32byte_ack', - 327: 'DB_PERF_SEL_RMI_wr_s_32byte_ack', - 328: 'DB_PERF_SEL_RMI_wr_psdzpc_32byte_ack', - 329: 'DB_PERF_SEL_esr_vic_sqq_busy', - 330: 'DB_PERF_SEL_esr_vic_sqq_stall', - 331: 'DB_PERF_SEL_esr_psi_vic_tile_rate', - 332: 'DB_PERF_SEL_esr_vic_footprint_match_2x2', - 333: 'DB_PERF_SEL_esr_vic_footprint_match_2x1', - 334: 'DB_PERF_SEL_esr_vic_footprint_match_1x2', - 335: 'DB_PERF_SEL_DB_SC_quad_num_null_2x2_coarse_pixels', - 336: 'DB_PERF_SEL_DB_SC_quad_num_null_2x1_coarse_pixels', - 337: 'DB_PERF_SEL_DB_SC_quad_num_null_1x2_coarse_pixels', - 338: 'DB_PERF_SEL_hi_z_s_checker_force_coarse_vrs_1x1', - 339: 'DB_PERF_SEL_hi_z_s_checker_force_ssaa_vrs_1x1', - 340: 'DB_PERF_SEL_esr_ps_woc_1squadIn_2squadOut', - 341: 'DB_PERF_SEL_esr_ps_woc_2squadIn_1squadOut', - 342: 'DB_PERF_SEL_prez_ps_invoked_pixel_cnt', - 343: 'DB_PERF_SEL_postz_ps_invoked_pixel_cnt', - 344: 'DB_PERF_SEL_ts_events_pws_enable', - 345: 'DB_PERF_SEL_ps_events_pws_enable', - 346: 'DB_PERF_SEL_cs_events_pws_enable', - 347: 'DB_PERF_SEL_DB_SC_quad_noz_tiles', - 348: 'DB_PERF_SEL_DB_SC_quad_lit_noz_quad', -} -DB_PERF_SEL_SC_DB_tile_sends = 0 -DB_PERF_SEL_SC_DB_tile_busy = 1 -DB_PERF_SEL_SC_DB_tile_stalls = 2 -DB_PERF_SEL_SC_DB_tile_events = 3 -DB_PERF_SEL_SC_DB_tile_tiles = 4 -DB_PERF_SEL_SC_DB_tile_covered = 5 -DB_PERF_SEL_hiz_tc_read_starved = 6 -DB_PERF_SEL_hiz_tc_write_stall = 7 -DB_PERF_SEL_hiz_tile_culled = 8 -DB_PERF_SEL_his_tile_culled = 9 -DB_PERF_SEL_DB_SC_tile_sends = 10 -DB_PERF_SEL_DB_SC_tile_busy = 11 -DB_PERF_SEL_DB_SC_tile_stalls = 12 -DB_PERF_SEL_DB_SC_tile_df_stalls = 13 -DB_PERF_SEL_DB_SC_tile_tiles = 14 -DB_PERF_SEL_DB_SC_tile_culled = 15 -DB_PERF_SEL_DB_SC_tile_hier_kill = 16 -DB_PERF_SEL_DB_SC_tile_fast_ops = 17 -DB_PERF_SEL_DB_SC_tile_no_ops = 18 -DB_PERF_SEL_DB_SC_tile_tile_rate = 19 -DB_PERF_SEL_DB_SC_tile_ssaa_kill = 20 -DB_PERF_SEL_DB_SC_tile_fast_z_ops = 21 -DB_PERF_SEL_DB_SC_tile_fast_stencil_ops = 22 -DB_PERF_SEL_SC_DB_quad_sends = 23 -DB_PERF_SEL_SC_DB_quad_busy = 24 -DB_PERF_SEL_SC_DB_quad_squads = 25 -DB_PERF_SEL_SC_DB_quad_tiles = 26 -DB_PERF_SEL_SC_DB_quad_pixels = 27 -DB_PERF_SEL_SC_DB_quad_killed_tiles = 28 -DB_PERF_SEL_DB_SC_quad_sends = 29 -DB_PERF_SEL_DB_SC_quad_busy = 30 -DB_PERF_SEL_DB_SC_quad_stalls = 31 -DB_PERF_SEL_DB_SC_quad_tiles = 32 -DB_PERF_SEL_DB_SC_quad_lit_quad = 33 -DB_PERF_SEL_DB_CB_tile_sends = 34 -DB_PERF_SEL_DB_CB_tile_busy = 35 -DB_PERF_SEL_DB_CB_tile_stalls = 36 -DB_PERF_SEL_SX_DB_quad_sends = 37 -DB_PERF_SEL_SX_DB_quad_busy = 38 -DB_PERF_SEL_SX_DB_quad_stalls = 39 -DB_PERF_SEL_SX_DB_quad_quads = 40 -DB_PERF_SEL_SX_DB_quad_pixels = 41 -DB_PERF_SEL_SX_DB_quad_exports = 42 -DB_PERF_SEL_SH_quads_outstanding_sum = 43 -DB_PERF_SEL_DB_CB_lquad_sends = 44 -DB_PERF_SEL_DB_CB_lquad_busy = 45 -DB_PERF_SEL_DB_CB_lquad_stalls = 46 -DB_PERF_SEL_DB_CB_lquad_quads = 47 -DB_PERF_SEL_tile_rd_sends = 48 -DB_PERF_SEL_mi_tile_rd_outstanding_sum = 49 -DB_PERF_SEL_quad_rd_sends = 50 -DB_PERF_SEL_quad_rd_busy = 51 -DB_PERF_SEL_quad_rd_mi_stall = 52 -DB_PERF_SEL_quad_rd_rw_collision = 53 -DB_PERF_SEL_quad_rd_tag_stall = 54 -DB_PERF_SEL_quad_rd_32byte_reqs = 55 -DB_PERF_SEL_quad_rd_panic = 56 -DB_PERF_SEL_mi_quad_rd_outstanding_sum = 57 -DB_PERF_SEL_quad_rdret_sends = 58 -DB_PERF_SEL_quad_rdret_busy = 59 -DB_PERF_SEL_tile_wr_sends = 60 -DB_PERF_SEL_tile_wr_acks = 61 -DB_PERF_SEL_mi_tile_wr_outstanding_sum = 62 -DB_PERF_SEL_quad_wr_sends = 63 -DB_PERF_SEL_quad_wr_busy = 64 -DB_PERF_SEL_quad_wr_mi_stall = 65 -DB_PERF_SEL_quad_wr_coherency_stall = 66 -DB_PERF_SEL_quad_wr_acks = 67 -DB_PERF_SEL_mi_quad_wr_outstanding_sum = 68 -DB_PERF_SEL_Tile_Cache_misses = 69 -DB_PERF_SEL_Tile_Cache_hits = 70 -DB_PERF_SEL_Tile_Cache_flushes = 71 -DB_PERF_SEL_Tile_Cache_surface_stall = 72 -DB_PERF_SEL_Tile_Cache_starves = 73 -DB_PERF_SEL_Tile_Cache_mem_return_starve = 74 -DB_PERF_SEL_tcp_dispatcher_reads = 75 -DB_PERF_SEL_tcp_prefetcher_reads = 76 -DB_PERF_SEL_tcp_preloader_reads = 77 -DB_PERF_SEL_tcp_dispatcher_flushes = 78 -DB_PERF_SEL_tcp_prefetcher_flushes = 79 -DB_PERF_SEL_tcp_preloader_flushes = 80 -DB_PERF_SEL_Depth_Tile_Cache_sends = 81 -DB_PERF_SEL_Depth_Tile_Cache_busy = 82 -DB_PERF_SEL_Depth_Tile_Cache_starves = 83 -DB_PERF_SEL_Depth_Tile_Cache_dtile_locked = 84 -DB_PERF_SEL_Depth_Tile_Cache_alloc_stall = 85 -DB_PERF_SEL_Depth_Tile_Cache_misses = 86 -DB_PERF_SEL_Depth_Tile_Cache_hits = 87 -DB_PERF_SEL_Depth_Tile_Cache_flushes = 88 -DB_PERF_SEL_Depth_Tile_Cache_noop_tile = 89 -DB_PERF_SEL_Depth_Tile_Cache_detailed_noop = 90 -DB_PERF_SEL_Depth_Tile_Cache_event = 91 -DB_PERF_SEL_Depth_Tile_Cache_tile_frees = 92 -DB_PERF_SEL_Depth_Tile_Cache_data_frees = 93 -DB_PERF_SEL_Depth_Tile_Cache_mem_return_starve = 94 -DB_PERF_SEL_Stencil_Cache_misses = 95 -DB_PERF_SEL_Stencil_Cache_hits = 96 -DB_PERF_SEL_Stencil_Cache_flushes = 97 -DB_PERF_SEL_Stencil_Cache_starves = 98 -DB_PERF_SEL_Stencil_Cache_frees = 99 -DB_PERF_SEL_Z_Cache_separate_Z_misses = 100 -DB_PERF_SEL_Z_Cache_separate_Z_hits = 101 -DB_PERF_SEL_Z_Cache_separate_Z_flushes = 102 -DB_PERF_SEL_Z_Cache_separate_Z_starves = 103 -DB_PERF_SEL_Z_Cache_pmask_misses = 104 -DB_PERF_SEL_Z_Cache_pmask_hits = 105 -DB_PERF_SEL_Z_Cache_pmask_flushes = 106 -DB_PERF_SEL_Z_Cache_pmask_starves = 107 -DB_PERF_SEL_Z_Cache_frees = 108 -DB_PERF_SEL_Plane_Cache_misses = 109 -DB_PERF_SEL_Plane_Cache_hits = 110 -DB_PERF_SEL_Plane_Cache_flushes = 111 -DB_PERF_SEL_Plane_Cache_starves = 112 -DB_PERF_SEL_Plane_Cache_frees = 113 -DB_PERF_SEL_flush_expanded_stencil = 114 -DB_PERF_SEL_flush_compressed_stencil = 115 -DB_PERF_SEL_flush_single_stencil = 116 -DB_PERF_SEL_planes_flushed = 117 -DB_PERF_SEL_flush_1plane = 118 -DB_PERF_SEL_flush_2plane = 119 -DB_PERF_SEL_flush_3plane = 120 -DB_PERF_SEL_flush_4plane = 121 -DB_PERF_SEL_flush_5plane = 122 -DB_PERF_SEL_flush_6plane = 123 -DB_PERF_SEL_flush_7plane = 124 -DB_PERF_SEL_flush_8plane = 125 -DB_PERF_SEL_flush_9plane = 126 -DB_PERF_SEL_flush_10plane = 127 -DB_PERF_SEL_flush_11plane = 128 -DB_PERF_SEL_flush_12plane = 129 -DB_PERF_SEL_flush_13plane = 130 -DB_PERF_SEL_flush_14plane = 131 -DB_PERF_SEL_flush_15plane = 132 -DB_PERF_SEL_flush_16plane = 133 -DB_PERF_SEL_flush_expanded_z = 134 -DB_PERF_SEL_earlyZ_waiting_for_postZ_done = 135 -DB_PERF_SEL_reZ_waiting_for_postZ_done = 136 -DB_PERF_SEL_dk_tile_sends = 137 -DB_PERF_SEL_dk_tile_busy = 138 -DB_PERF_SEL_dk_tile_quad_starves = 139 -DB_PERF_SEL_dk_tile_stalls = 140 -DB_PERF_SEL_dk_squad_sends = 141 -DB_PERF_SEL_dk_squad_busy = 142 -DB_PERF_SEL_dk_squad_stalls = 143 -DB_PERF_SEL_Op_Pipe_Busy = 144 -DB_PERF_SEL_Op_Pipe_MC_Read_stall = 145 -DB_PERF_SEL_qc_busy = 146 -DB_PERF_SEL_qc_xfc = 147 -DB_PERF_SEL_qc_conflicts = 148 -DB_PERF_SEL_qc_full_stall = 149 -DB_PERF_SEL_qc_in_preZ_tile_stalls_postZ = 150 -DB_PERF_SEL_qc_in_postZ_tile_stalls_preZ = 151 -DB_PERF_SEL_tsc_insert_summarize_stall = 152 -DB_PERF_SEL_tl_busy = 153 -DB_PERF_SEL_tl_dtc_read_starved = 154 -DB_PERF_SEL_tl_z_fetch_stall = 155 -DB_PERF_SEL_tl_stencil_stall = 156 -DB_PERF_SEL_tl_z_decompress_stall = 157 -DB_PERF_SEL_tl_stencil_locked_stall = 158 -DB_PERF_SEL_tl_events = 159 -DB_PERF_SEL_tl_summarize_squads = 160 -DB_PERF_SEL_tl_flush_expand_squads = 161 -DB_PERF_SEL_tl_expand_squads = 162 -DB_PERF_SEL_tl_preZ_squads = 163 -DB_PERF_SEL_tl_postZ_squads = 164 -DB_PERF_SEL_tl_preZ_noop_squads = 165 -DB_PERF_SEL_tl_postZ_noop_squads = 166 -DB_PERF_SEL_tl_tile_ops = 167 -DB_PERF_SEL_tl_in_xfc = 168 -DB_PERF_SEL_tl_in_single_stencil_expand_stall = 169 -DB_PERF_SEL_tl_in_fast_z_stall = 170 -DB_PERF_SEL_tl_out_xfc = 171 -DB_PERF_SEL_tl_out_squads = 172 -DB_PERF_SEL_zf_plane_multicycle = 173 -DB_PERF_SEL_PostZ_Samples_passing_Z = 174 -DB_PERF_SEL_PostZ_Samples_failing_Z = 175 -DB_PERF_SEL_PostZ_Samples_failing_S = 176 -DB_PERF_SEL_PreZ_Samples_passing_Z = 177 -DB_PERF_SEL_PreZ_Samples_failing_Z = 178 -DB_PERF_SEL_PreZ_Samples_failing_S = 179 -DB_PERF_SEL_ts_tc_update_stall = 180 -DB_PERF_SEL_sc_kick_start = 181 -DB_PERF_SEL_sc_kick_end = 182 -DB_PERF_SEL_clock_reg_active = 183 -DB_PERF_SEL_clock_main_active = 184 -DB_PERF_SEL_clock_mem_export_active = 185 -DB_PERF_SEL_esr_ps_out_busy = 186 -DB_PERF_SEL_esr_ps_lqf_busy = 187 -DB_PERF_SEL_esr_ps_lqf_stall = 188 -DB_PERF_SEL_etr_out_send = 189 -DB_PERF_SEL_etr_out_busy = 190 -DB_PERF_SEL_etr_out_ltile_probe_fifo_full_stall = 191 -DB_PERF_SEL_etr_out_cb_tile_stall = 192 -DB_PERF_SEL_etr_out_esr_stall = 193 -DB_PERF_SEL_esr_ps_vic_busy = 194 -DB_PERF_SEL_esr_ps_vic_stall = 195 -DB_PERF_SEL_esr_eot_fwd_busy = 196 -DB_PERF_SEL_esr_eot_fwd_holding_squad = 197 -DB_PERF_SEL_esr_eot_fwd_forward = 198 -DB_PERF_SEL_esr_sqq_zi_busy = 199 -DB_PERF_SEL_esr_sqq_zi_stall = 200 -DB_PERF_SEL_postzl_sq_pt_busy = 201 -DB_PERF_SEL_postzl_sq_pt_stall = 202 -DB_PERF_SEL_postzl_se_busy = 203 -DB_PERF_SEL_postzl_se_stall = 204 -DB_PERF_SEL_postzl_partial_launch = 205 -DB_PERF_SEL_postzl_full_launch = 206 -DB_PERF_SEL_postzl_partial_waiting = 207 -DB_PERF_SEL_postzl_tile_mem_stall = 208 -DB_PERF_SEL_postzl_tile_init_stall = 209 -DB_PERF_SEL_prezl_tile_mem_stall = 210 -DB_PERF_SEL_prezl_tile_init_stall = 211 -DB_PERF_SEL_dtt_sm_clash_stall = 212 -DB_PERF_SEL_dtt_sm_slot_stall = 213 -DB_PERF_SEL_dtt_sm_miss_stall = 214 -DB_PERF_SEL_mi_rdreq_busy = 215 -DB_PERF_SEL_mi_rdreq_stall = 216 -DB_PERF_SEL_mi_wrreq_busy = 217 -DB_PERF_SEL_mi_wrreq_stall = 218 -DB_PERF_SEL_recomp_tile_to_1zplane_no_fastop = 219 -DB_PERF_SEL_dkg_tile_rate_tile = 220 -DB_PERF_SEL_prezl_src_in_sends = 221 -DB_PERF_SEL_prezl_src_in_stall = 222 -DB_PERF_SEL_prezl_src_in_squads = 223 -DB_PERF_SEL_prezl_src_in_squads_unrolled = 224 -DB_PERF_SEL_prezl_src_in_tile_rate = 225 -DB_PERF_SEL_prezl_src_in_tile_rate_unrolled = 226 -DB_PERF_SEL_prezl_src_out_stall = 227 -DB_PERF_SEL_postzl_src_in_sends = 228 -DB_PERF_SEL_postzl_src_in_stall = 229 -DB_PERF_SEL_postzl_src_in_squads = 230 -DB_PERF_SEL_postzl_src_in_squads_unrolled = 231 -DB_PERF_SEL_postzl_src_in_tile_rate = 232 -DB_PERF_SEL_postzl_src_in_tile_rate_unrolled = 233 -DB_PERF_SEL_postzl_src_out_stall = 234 -DB_PERF_SEL_esr_ps_src_in_sends = 235 -DB_PERF_SEL_esr_ps_src_in_stall = 236 -DB_PERF_SEL_esr_ps_src_in_squads = 237 -DB_PERF_SEL_esr_ps_src_in_squads_unrolled = 238 -DB_PERF_SEL_esr_ps_src_in_tile_rate = 239 -DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled = 240 -DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled_to_pixel_rate = 241 -DB_PERF_SEL_esr_ps_src_out_stall = 242 -DB_PERF_SEL_depth_bounds_tile_culled = 243 -DB_PERF_SEL_PreZ_Samples_failing_DB = 244 -DB_PERF_SEL_PostZ_Samples_failing_DB = 245 -DB_PERF_SEL_flush_compressed = 246 -DB_PERF_SEL_flush_plane_le4 = 247 -DB_PERF_SEL_tiles_z_fully_summarized = 248 -DB_PERF_SEL_tiles_stencil_fully_summarized = 249 -DB_PERF_SEL_tiles_z_clear_on_expclear = 250 -DB_PERF_SEL_tiles_s_clear_on_expclear = 251 -DB_PERF_SEL_tiles_decomp_on_expclear = 252 -DB_PERF_SEL_tiles_compressed_to_decompressed = 253 -DB_PERF_SEL_Op_Pipe_Prez_Busy = 254 -DB_PERF_SEL_Op_Pipe_Postz_Busy = 255 -DB_PERF_SEL_di_dt_stall = 256 -Spare_257 = 257 -DB_PERF_SEL_DB_SC_s_tile_rate = 258 -DB_PERF_SEL_DB_SC_c_tile_rate = 259 -DB_PERF_SEL_DB_SC_z_tile_rate = 260 -DB_PERF_SEL_DB_CB_lquad_export_quads = 261 -DB_PERF_SEL_DB_CB_lquad_double_format = 262 -DB_PERF_SEL_DB_CB_lquad_fast_format = 263 -DB_PERF_SEL_DB_CB_lquad_slow_format = 264 -DB_PERF_SEL_CB_DB_rdreq_sends = 265 -DB_PERF_SEL_CB_DB_rdreq_prt_sends = 266 -DB_PERF_SEL_CB_DB_wrreq_sends = 267 -DB_PERF_SEL_CB_DB_wrreq_prt_sends = 268 -DB_PERF_SEL_DB_CB_rdret_ack = 269 -DB_PERF_SEL_DB_CB_rdret_nack = 270 -DB_PERF_SEL_DB_CB_wrret_ack = 271 -DB_PERF_SEL_DB_CB_wrret_nack = 272 -DB_PERF_SEL_MI_tile_req_wrack_counter_stall = 273 -DB_PERF_SEL_MI_quad_req_wrack_counter_stall = 274 -DB_PERF_SEL_MI_zpc_req_wrack_counter_stall = 275 -DB_PERF_SEL_MI_psd_req_wrack_counter_stall = 276 -DB_PERF_SEL_unmapped_z_tile_culled = 277 -DB_PERF_SEL_DB_CB_tile_is_event_FLUSH_AND_INV_DB_DATA_TS = 278 -DB_PERF_SEL_DB_CB_tile_is_event_FLUSH_AND_INV_CB_PIXEL_DATA = 279 -DB_PERF_SEL_DB_CB_tile_is_event_BOTTOM_OF_PIPE_TS = 280 -DB_PERF_SEL_DB_CB_tile_waiting_for_perfcounter_stop_event = 281 -DB_PERF_SEL_DB_CB_lquad_fmt_32bpp_8pix = 282 -DB_PERF_SEL_DB_CB_lquad_fmt_16_16_unsigned_8pix = 283 -DB_PERF_SEL_DB_CB_lquad_fmt_16_16_signed_8pix = 284 -DB_PERF_SEL_DB_CB_lquad_fmt_16_16_float_8pix = 285 -DB_PERF_SEL_DB_CB_lquad_num_pixels_need_blending = 286 -DB_PERF_SEL_DB_CB_context_dones = 287 -DB_PERF_SEL_DB_CB_eop_dones = 288 -DB_PERF_SEL_SX_DB_quad_all_pixels_killed = 289 -DB_PERF_SEL_SX_DB_quad_all_pixels_enabled = 290 -DB_PERF_SEL_SX_DB_quad_need_blending_and_dst_read = 291 -DB_PERF_SEL_SC_DB_tile_backface = 292 -DB_PERF_SEL_SC_DB_quad_quads = 293 -DB_PERF_SEL_DB_SC_quad_quads_with_1_pixel = 294 -DB_PERF_SEL_DB_SC_quad_quads_with_2_pixels = 295 -DB_PERF_SEL_DB_SC_quad_quads_with_3_pixels = 296 -DB_PERF_SEL_DB_SC_quad_quads_with_4_pixels = 297 -DB_PERF_SEL_DB_SC_quad_double_quad = 298 -DB_PERF_SEL_SX_DB_quad_export_quads = 299 -DB_PERF_SEL_SX_DB_quad_double_format = 300 -DB_PERF_SEL_SX_DB_quad_fast_format = 301 -DB_PERF_SEL_SX_DB_quad_slow_format = 302 -DB_PERF_SEL_quad_rd_sends_unc = 303 -DB_PERF_SEL_quad_rd_mi_stall_unc = 304 -DB_PERF_SEL_SC_DB_tile_tiles_pipe0 = 305 -DB_PERF_SEL_SC_DB_tile_tiles_pipe1 = 306 -DB_PERF_SEL_SC_DB_quad_quads_pipe0 = 307 -DB_PERF_SEL_SC_DB_quad_quads_pipe1 = 308 -DB_PERF_SEL_PERF_fg_lob_fwdr_timeout_hits = 309 -DB_PERF_SEL_noz_waiting_for_postz_done = 310 -DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_1x1 = 311 -DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_2x1 = 312 -DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_1x2 = 313 -DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_2x2 = 314 -DB_PERF_SEL_RMI_rd_tile_32byte_req = 315 -DB_PERF_SEL_RMI_rd_z_32byte_req = 316 -DB_PERF_SEL_RMI_rd_s_32byte_req = 317 -DB_PERF_SEL_RMI_wr_tile_32byte_req = 318 -DB_PERF_SEL_RMI_wr_z_32byte_req = 319 -DB_PERF_SEL_RMI_wr_s_32byte_req = 320 -DB_PERF_SEL_RMI_wr_psdzpc_32byte_req = 321 -DB_PERF_SEL_RMI_rd_tile_32byte_ret = 322 -DB_PERF_SEL_RMI_rd_z_32byte_ret = 323 -DB_PERF_SEL_RMI_rd_s_32byte_ret = 324 -DB_PERF_SEL_RMI_wr_tile_32byte_ack = 325 -DB_PERF_SEL_RMI_wr_z_32byte_ack = 326 -DB_PERF_SEL_RMI_wr_s_32byte_ack = 327 -DB_PERF_SEL_RMI_wr_psdzpc_32byte_ack = 328 -DB_PERF_SEL_esr_vic_sqq_busy = 329 -DB_PERF_SEL_esr_vic_sqq_stall = 330 -DB_PERF_SEL_esr_psi_vic_tile_rate = 331 -DB_PERF_SEL_esr_vic_footprint_match_2x2 = 332 -DB_PERF_SEL_esr_vic_footprint_match_2x1 = 333 -DB_PERF_SEL_esr_vic_footprint_match_1x2 = 334 -DB_PERF_SEL_DB_SC_quad_num_null_2x2_coarse_pixels = 335 -DB_PERF_SEL_DB_SC_quad_num_null_2x1_coarse_pixels = 336 -DB_PERF_SEL_DB_SC_quad_num_null_1x2_coarse_pixels = 337 -DB_PERF_SEL_hi_z_s_checker_force_coarse_vrs_1x1 = 338 -DB_PERF_SEL_hi_z_s_checker_force_ssaa_vrs_1x1 = 339 -DB_PERF_SEL_esr_ps_woc_1squadIn_2squadOut = 340 -DB_PERF_SEL_esr_ps_woc_2squadIn_1squadOut = 341 -DB_PERF_SEL_prez_ps_invoked_pixel_cnt = 342 -DB_PERF_SEL_postz_ps_invoked_pixel_cnt = 343 -DB_PERF_SEL_ts_events_pws_enable = 344 -DB_PERF_SEL_ps_events_pws_enable = 345 -DB_PERF_SEL_cs_events_pws_enable = 346 -DB_PERF_SEL_DB_SC_quad_noz_tiles = 347 -DB_PERF_SEL_DB_SC_quad_lit_noz_quad = 348 -PerfCounter_Vals = ctypes.c_uint32 # enum - -# values for enumeration 'PixelPipeCounterId' -PixelPipeCounterId__enumvalues = { - 0: 'PIXEL_PIPE_OCCLUSION_COUNT_0', - 1: 'PIXEL_PIPE_OCCLUSION_COUNT_1', - 2: 'PIXEL_PIPE_OCCLUSION_COUNT_2', - 3: 'PIXEL_PIPE_OCCLUSION_COUNT_3', - 4: 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_0', - 5: 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_0', - 6: 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_1', - 7: 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_1', -} -PIXEL_PIPE_OCCLUSION_COUNT_0 = 0 -PIXEL_PIPE_OCCLUSION_COUNT_1 = 1 -PIXEL_PIPE_OCCLUSION_COUNT_2 = 2 -PIXEL_PIPE_OCCLUSION_COUNT_3 = 3 -PIXEL_PIPE_SCREEN_MIN_EXTENTS_0 = 4 -PIXEL_PIPE_SCREEN_MAX_EXTENTS_0 = 5 -PIXEL_PIPE_SCREEN_MIN_EXTENTS_1 = 6 -PIXEL_PIPE_SCREEN_MAX_EXTENTS_1 = 7 -PixelPipeCounterId = ctypes.c_uint32 # enum - -# values for enumeration 'PixelPipeStride' -PixelPipeStride__enumvalues = { - 0: 'PIXEL_PIPE_STRIDE_32_BITS', - 1: 'PIXEL_PIPE_STRIDE_64_BITS', - 2: 'PIXEL_PIPE_STRIDE_128_BITS', - 3: 'PIXEL_PIPE_STRIDE_256_BITS', -} -PIXEL_PIPE_STRIDE_32_BITS = 0 -PIXEL_PIPE_STRIDE_64_BITS = 1 -PIXEL_PIPE_STRIDE_128_BITS = 2 -PIXEL_PIPE_STRIDE_256_BITS = 3 -PixelPipeStride = ctypes.c_uint32 # enum - -# values for enumeration 'RingCounterControl' -RingCounterControl__enumvalues = { - 0: 'COUNTER_RING_SPLIT', - 1: 'COUNTER_RING_0', - 2: 'COUNTER_RING_1', -} -COUNTER_RING_SPLIT = 0 -COUNTER_RING_0 = 1 -COUNTER_RING_1 = 2 -RingCounterControl = ctypes.c_uint32 # enum - -# values for enumeration 'StencilOp' -StencilOp__enumvalues = { - 0: 'STENCIL_KEEP', - 1: 'STENCIL_ZERO', - 2: 'STENCIL_ONES', - 3: 'STENCIL_REPLACE_TEST', - 4: 'STENCIL_REPLACE_OP', - 5: 'STENCIL_ADD_CLAMP', - 6: 'STENCIL_SUB_CLAMP', - 7: 'STENCIL_INVERT', - 8: 'STENCIL_ADD_WRAP', - 9: 'STENCIL_SUB_WRAP', - 10: 'STENCIL_AND', - 11: 'STENCIL_OR', - 12: 'STENCIL_XOR', - 13: 'STENCIL_NAND', - 14: 'STENCIL_NOR', - 15: 'STENCIL_XNOR', -} -STENCIL_KEEP = 0 -STENCIL_ZERO = 1 -STENCIL_ONES = 2 -STENCIL_REPLACE_TEST = 3 -STENCIL_REPLACE_OP = 4 -STENCIL_ADD_CLAMP = 5 -STENCIL_SUB_CLAMP = 6 -STENCIL_INVERT = 7 -STENCIL_ADD_WRAP = 8 -STENCIL_SUB_WRAP = 9 -STENCIL_AND = 10 -STENCIL_OR = 11 -STENCIL_XOR = 12 -STENCIL_NAND = 13 -STENCIL_NOR = 14 -STENCIL_XNOR = 15 -StencilOp = ctypes.c_uint32 # enum - -# values for enumeration 'ZLimitSumm' -ZLimitSumm__enumvalues = { - 0: 'FORCE_SUMM_OFF', - 1: 'FORCE_SUMM_MINZ', - 2: 'FORCE_SUMM_MAXZ', - 3: 'FORCE_SUMM_BOTH', -} -FORCE_SUMM_OFF = 0 -FORCE_SUMM_MINZ = 1 -FORCE_SUMM_MAXZ = 2 -FORCE_SUMM_BOTH = 3 -ZLimitSumm = ctypes.c_uint32 # enum - -# values for enumeration 'ZModeForce' -ZModeForce__enumvalues = { - 0: 'NO_FORCE', - 1: 'FORCE_EARLY_Z', - 2: 'FORCE_LATE_Z', - 3: 'FORCE_RE_Z', -} -NO_FORCE = 0 -FORCE_EARLY_Z = 1 -FORCE_LATE_Z = 2 -FORCE_RE_Z = 3 -ZModeForce = ctypes.c_uint32 # enum - -# values for enumeration 'ZOrder' -ZOrder__enumvalues = { - 0: 'LATE_Z', - 1: 'EARLY_Z_THEN_LATE_Z', - 2: 'RE_Z', - 3: 'EARLY_Z_THEN_RE_Z', -} -LATE_Z = 0 -EARLY_Z_THEN_LATE_Z = 1 -RE_Z = 2 -EARLY_Z_THEN_RE_Z = 3 -ZOrder = ctypes.c_uint32 # enum - -# values for enumeration 'ZSamplePosition' -ZSamplePosition__enumvalues = { - 0: 'Z_SAMPLE_CENTER', - 1: 'Z_SAMPLE_CENTROID', -} -Z_SAMPLE_CENTER = 0 -Z_SAMPLE_CENTROID = 1 -ZSamplePosition = ctypes.c_uint32 # enum - -# values for enumeration 'ZpassControl' -ZpassControl__enumvalues = { - 0: 'ZPASS_DISABLE', - 1: 'ZPASS_SAMPLES', - 2: 'ZPASS_PIXELS', -} -ZPASS_DISABLE = 0 -ZPASS_SAMPLES = 1 -ZPASS_PIXELS = 2 -ZpassControl = ctypes.c_uint32 # enum - -# values for enumeration 'SU_PERFCNT_SEL' -SU_PERFCNT_SEL__enumvalues = { - 0: 'PERF_PAPC_PASX_REQ', - 1: 'PERF_PAPC_PASX_DISABLE_PIPE', - 2: 'PERF_PAPC_PASX_FIRST_VECTOR', - 3: 'PERF_PAPC_PASX_SECOND_VECTOR', - 4: 'PERF_PAPC_PASX_FIRST_DEAD', - 5: 'PERF_PAPC_PASX_SECOND_DEAD', - 6: 'PERF_PAPC_PASX_VTX_KILL_DISCARD', - 7: 'PERF_PAPC_PASX_VTX_NAN_DISCARD', - 8: 'PERF_PAPC_PA_INPUT_PRIM', - 9: 'PERF_PAPC_PA_INPUT_NULL_PRIM', - 10: 'PERF_PAPC_PA_INPUT_EVENT_FLAG', - 11: 'PERF_PAPC_PA_INPUT_FIRST_PRIM_SLOT', - 12: 'PERF_PAPC_PA_INPUT_END_OF_PACKET', - 13: 'PERF_PAPC_PA_INPUT_EXTENDED_EVENT', - 14: 'PERF_PAPC_CLPR_CULL_PRIM', - 15: 'PERF_PAPC_CLPR_VVUCP_CULL_PRIM', - 16: 'PERF_PAPC_CLPR_VV_CULL_PRIM', - 17: 'PERF_PAPC_CLPR_UCP_CULL_PRIM', - 18: 'PERF_PAPC_CLPR_VTX_KILL_CULL_PRIM', - 19: 'PERF_PAPC_CLPR_VTX_NAN_CULL_PRIM', - 20: 'PERF_PAPC_CLPR_CULL_TO_NULL_PRIM', - 21: 'PERF_PAPC_CLPR_VVUCP_CLIP_PRIM', - 22: 'PERF_PAPC_CLPR_VV_CLIP_PRIM', - 23: 'PERF_PAPC_CLPR_UCP_CLIP_PRIM', - 24: 'PERF_PAPC_CLPR_POINT_CLIP_CANDIDATE', - 25: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_1', - 26: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_2', - 27: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_3', - 28: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_4', - 29: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_5_8', - 30: 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_9_12', - 31: 'PERF_PAPC_CLPR_CLIP_PLANE_NEAR', - 32: 'PERF_PAPC_CLPR_CLIP_PLANE_FAR', - 33: 'PERF_PAPC_CLPR_CLIP_PLANE_LEFT', - 34: 'PERF_PAPC_CLPR_CLIP_PLANE_RIGHT', - 35: 'PERF_PAPC_CLPR_CLIP_PLANE_TOP', - 36: 'PERF_PAPC_CLPR_CLIP_PLANE_BOTTOM', - 37: 'PERF_PAPC_CLPR_GSC_KILL_CULL_PRIM', - 38: 'PERF_PAPC_CLPR_RASTER_KILL_CULL_PRIM', - 39: 'PERF_PAPC_CLSM_NULL_PRIM', - 40: 'PERF_PAPC_CLSM_TOTALLY_VISIBLE_PRIM', - 41: 'PERF_PAPC_CLSM_CULL_TO_NULL_PRIM', - 42: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_1', - 43: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_2', - 44: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_3', - 45: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_4', - 46: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_5_8', - 47: 'PERF_PAPC_CLSM_OUT_PRIM_CNT_9_13', - 48: 'PERF_PAPC_CLIPGA_VTE_KILL_PRIM', - 49: 'PERF_PAPC_SU_INPUT_PRIM', - 50: 'PERF_PAPC_SU_INPUT_CLIP_PRIM', - 51: 'PERF_PAPC_SU_INPUT_NULL_PRIM', - 52: 'PERF_PAPC_SU_INPUT_PRIM_DUAL', - 53: 'PERF_PAPC_SU_INPUT_CLIP_PRIM_DUAL', - 54: 'PERF_PAPC_SU_ZERO_AREA_CULL_PRIM', - 55: 'PERF_PAPC_SU_BACK_FACE_CULL_PRIM', - 56: 'PERF_PAPC_SU_FRONT_FACE_CULL_PRIM', - 57: 'PERF_PAPC_SU_POLYMODE_FACE_CULL', - 58: 'PERF_PAPC_SU_POLYMODE_BACK_CULL', - 59: 'PERF_PAPC_SU_POLYMODE_FRONT_CULL', - 60: 'PERF_PAPC_SU_POLYMODE_INVALID_FILL', - 61: 'PERF_PAPC_SU_OUTPUT_PRIM', - 62: 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM', - 63: 'PERF_PAPC_SU_OUTPUT_NULL_PRIM', - 64: 'PERF_PAPC_SU_OUTPUT_EVENT_FLAG', - 65: 'PERF_PAPC_SU_OUTPUT_FIRST_PRIM_SLOT', - 66: 'PERF_PAPC_SU_OUTPUT_END_OF_PACKET', - 67: 'PERF_PAPC_SU_OUTPUT_POLYMODE_FACE', - 68: 'PERF_PAPC_SU_OUTPUT_POLYMODE_BACK', - 69: 'PERF_PAPC_SU_OUTPUT_POLYMODE_FRONT', - 70: 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FACE', - 71: 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_BACK', - 72: 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FRONT', - 73: 'PERF_PAPC_SU_OUTPUT_PRIM_DUAL', - 74: 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM_DUAL', - 75: 'PERF_PAPC_SU_OUTPUT_POLYMODE_DUAL', - 76: 'PERF_PAPC_SU_OUTPUT_CLIP_POLYMODE_DUAL', - 77: 'PERF_PAPC_PASX_REQ_IDLE', - 78: 'PERF_PAPC_PASX_REQ_BUSY', - 79: 'PERF_PAPC_PASX_REQ_STALLED', - 80: 'PERF_PAPC_PASX_REC_IDLE', - 81: 'PERF_PAPC_PASX_REC_BUSY', - 82: 'PERF_PAPC_PASX_REC_STARVED_SX', - 83: 'PERF_PAPC_PASX_REC_STALLED', - 84: 'PERF_PAPC_PASX_REC_STALLED_POS_MEM', - 85: 'PERF_PAPC_PASX_REC_STALLED_CCGSM_IN', - 86: 'PERF_PAPC_CCGSM_IDLE', - 87: 'PERF_PAPC_CCGSM_BUSY', - 88: 'PERF_PAPC_CCGSM_STALLED', - 89: 'PERF_PAPC_CLPRIM_IDLE', - 90: 'PERF_PAPC_CLPRIM_BUSY', - 91: 'PERF_PAPC_CLPRIM_STALLED', - 92: 'PERF_PAPC_CLPRIM_STARVED_CCGSM', - 93: 'PERF_PAPC_CLIPSM_IDLE', - 94: 'PERF_PAPC_CLIPSM_BUSY', - 95: 'PERF_PAPC_CLIPSM_WAIT_CLIP_VERT_ENGH', - 96: 'PERF_PAPC_CLIPSM_WAIT_HIGH_PRI_SEQ', - 97: 'PERF_PAPC_CLIPSM_WAIT_CLIPGA', - 98: 'PERF_PAPC_CLIPSM_WAIT_AVAIL_VTE_CLIP', - 99: 'PERF_PAPC_CLIPSM_WAIT_CLIP_OUTSM', - 100: 'PERF_PAPC_CLIPGA_IDLE', - 101: 'PERF_PAPC_CLIPGA_BUSY', - 102: 'PERF_PAPC_CLIPGA_STARVED_VTE_CLIP', - 103: 'PERF_PAPC_CLIPGA_STALLED', - 104: 'PERF_PAPC_CLIP_IDLE', - 105: 'PERF_PAPC_CLIP_BUSY', - 106: 'PERF_PAPC_SU_IDLE', - 107: 'PERF_PAPC_SU_BUSY', - 108: 'PERF_PAPC_SU_STARVED_CLIP', - 109: 'PERF_PAPC_SU_STALLED_SC', - 110: 'PERF_PAPC_CL_DYN_SCLK_VLD', - 111: 'PERF_PAPC_SU_DYN_SCLK_VLD', - 112: 'PERF_PAPC_PA_REG_SCLK_VLD', - 113: 'PERF_PAPC_SU_MULTI_GPU_PRIM_FILTER_CULL', - 114: 'PERF_PAPC_PASX_SE0_REQ', - 115: 'PERF_PAPC_PASX_SE1_REQ', - 116: 'PERF_PAPC_PASX_SE0_FIRST_VECTOR', - 117: 'PERF_PAPC_PASX_SE0_SECOND_VECTOR', - 118: 'PERF_PAPC_PASX_SE1_FIRST_VECTOR', - 119: 'PERF_PAPC_PASX_SE1_SECOND_VECTOR', - 120: 'PERF_PAPC_SU_SE0_PRIM_FILTER_CULL', - 121: 'PERF_PAPC_SU_SE1_PRIM_FILTER_CULL', - 122: 'PERF_PAPC_SU_SE01_PRIM_FILTER_CULL', - 123: 'PERF_PAPC_SU_SE0_OUTPUT_PRIM', - 124: 'PERF_PAPC_SU_SE1_OUTPUT_PRIM', - 125: 'PERF_PAPC_SU_SE01_OUTPUT_PRIM', - 126: 'PERF_PAPC_SU_SE0_OUTPUT_NULL_PRIM', - 127: 'PERF_PAPC_SU_SE1_OUTPUT_NULL_PRIM', - 128: 'PERF_PAPC_SU_SE01_OUTPUT_NULL_PRIM', - 129: 'PERF_PAPC_SU_SE0_OUTPUT_FIRST_PRIM_SLOT', - 130: 'PERF_PAPC_SU_SE1_OUTPUT_FIRST_PRIM_SLOT', - 131: 'PERF_PAPC_SU_SE0_STALLED_SC', - 132: 'PERF_PAPC_SU_SE1_STALLED_SC', - 133: 'PERF_PAPC_SU_SE01_STALLED_SC', - 134: 'PERF_PAPC_CLSM_CLIPPING_PRIM', - 135: 'PERF_PAPC_SU_CULLED_PRIM', - 136: 'PERF_PAPC_SU_OUTPUT_EOPG', - 137: 'PERF_PAPC_SU_SE2_PRIM_FILTER_CULL', - 138: 'PERF_PAPC_SU_SE3_PRIM_FILTER_CULL', - 139: 'PERF_PAPC_SU_SE2_OUTPUT_PRIM', - 140: 'PERF_PAPC_SU_SE3_OUTPUT_PRIM', - 141: 'PERF_PAPC_SU_SE2_OUTPUT_NULL_PRIM', - 142: 'PERF_PAPC_SU_SE3_OUTPUT_NULL_PRIM', - 143: 'PERF_PAPC_SU_SE0_OUTPUT_END_OF_PACKET', - 144: 'PERF_PAPC_SU_SE1_OUTPUT_END_OF_PACKET', - 145: 'PERF_PAPC_SU_SE2_OUTPUT_END_OF_PACKET', - 146: 'PERF_PAPC_SU_SE3_OUTPUT_END_OF_PACKET', - 147: 'PERF_PAPC_SU_SE0_OUTPUT_EOPG', - 148: 'PERF_PAPC_SU_SE1_OUTPUT_EOPG', - 149: 'PERF_PAPC_SU_SE2_OUTPUT_EOPG', - 150: 'PERF_PAPC_SU_SE3_OUTPUT_EOPG', - 151: 'PERF_PAPC_SU_SE2_STALLED_SC', - 152: 'PERF_PAPC_SU_SE3_STALLED_SC', - 153: 'PERF_SU_SMALL_PRIM_FILTER_CULL_CNT', - 154: 'PERF_SMALL_PRIM_CULL_PRIM_1X1', - 155: 'PERF_SMALL_PRIM_CULL_PRIM_2X1', - 156: 'PERF_SMALL_PRIM_CULL_PRIM_1X2', - 157: 'PERF_SMALL_PRIM_CULL_PRIM_2X2', - 158: 'PERF_SMALL_PRIM_CULL_PRIM_3X1', - 159: 'PERF_SMALL_PRIM_CULL_PRIM_1X3', - 160: 'PERF_SMALL_PRIM_CULL_PRIM_3X2', - 161: 'PERF_SMALL_PRIM_CULL_PRIM_2X3', - 162: 'PERF_SMALL_PRIM_CULL_PRIM_NX1', - 163: 'PERF_SMALL_PRIM_CULL_PRIM_1XN', - 164: 'PERF_SMALL_PRIM_CULL_PRIM_NX2', - 165: 'PERF_SMALL_PRIM_CULL_PRIM_2XN', - 166: 'PERF_SMALL_PRIM_CULL_PRIM_FULL_RES_EVENT', - 167: 'PERF_SMALL_PRIM_CULL_PRIM_HALF_RES_EVENT', - 168: 'PERF_SMALL_PRIM_CULL_PRIM_QUARTER_RES_EVENT', - 170: 'PERF_SC0_QUALIFIED_SEND_BUSY_EVENT', - 171: 'PERF_SC0_QUALIFIED_SEND_NOT_BUSY_EVENT', - 172: 'PERF_SC1_QUALIFIED_SEND_BUSY_EVENT', - 173: 'PERF_SC1_QUALIFIED_SEND_NOT_BUSY_EVENT', - 174: 'PERF_SC2_QUALIFIED_SEND_BUSY_EVENT', - 175: 'PERF_SC2_QUALIFIED_SEND_NOT_BUSY_EVENT', - 176: 'PERF_SC3_QUALIFIED_SEND_BUSY_EVENT', - 177: 'PERF_SC3_QUALIFIED_SEND_NOT_BUSY_EVENT', - 179: 'PERF_PA_VERTEX_FIFO_FULL', - 180: 'PERF_PA_PRIMIC_TO_CLPRIM_FIFO_FULL', - 182: 'PERF_PA_FETCH_TO_PRIMIC_P_FIFO_FULL', - 183: 'PERF_PA_FETCH_TO_SXIF_FIFO_FULL', - 185: 'PERF_PA_PIPE0_SWITCHED_GEN', - 186: 'PERF_PA_PIPE1_SWITCHED_GEN', - 188: 'PERF_ENGG_CSB_MACHINE_IS_STARVED', - 189: 'PERF_ENGG_CSB_MACHINE_STALLED_BY_CSB_MEMORY', - 190: 'PERF_ENGG_CSB_MACHINE_STALLED_BY_SPI', - 191: 'PERF_ENGG_CSB_GE_INPUT_FIFO_FULL', - 192: 'PERF_ENGG_CSB_SPI_INPUT_FIFO_FULL', - 193: 'PERF_ENGG_CSB_PAYLOAD_INPUT_FIFO_FULL', - 194: 'PERF_ENGG_CSB_GE_INPUT_FIFO_POP_BIT', - 195: 'PERF_ENGG_CSB_PRIM_COUNT_EQ0', - 196: 'PERF_ENGG_CSB_NULL_SUBGROUP', - 197: 'PERF_ENGG_CSB_GE_SENDING_SUBGROUP', - 198: 'PERF_ENGG_CSB_GE_MEMORY_FULL', - 199: 'PERF_ENGG_CSB_GE_MEMORY_EMPTY', - 200: 'PERF_ENGG_CSB_SPI_MEMORY_FULL', - 201: 'PERF_ENGG_CSB_SPI_MEMORY_EMPTY', - 202: 'PERF_ENGG_CSB_DELAY_BIN00', - 203: 'PERF_ENGG_CSB_DELAY_BIN01', - 204: 'PERF_ENGG_CSB_DELAY_BIN02', - 205: 'PERF_ENGG_CSB_DELAY_BIN03', - 206: 'PERF_ENGG_CSB_DELAY_BIN04', - 207: 'PERF_ENGG_CSB_DELAY_BIN05', - 208: 'PERF_ENGG_CSB_DELAY_BIN06', - 209: 'PERF_ENGG_CSB_DELAY_BIN07', - 210: 'PERF_ENGG_CSB_DELAY_BIN08', - 211: 'PERF_ENGG_CSB_DELAY_BIN09', - 212: 'PERF_ENGG_CSB_DELAY_BIN10', - 213: 'PERF_ENGG_CSB_DELAY_BIN11', - 214: 'PERF_ENGG_CSB_DELAY_BIN12', - 215: 'PERF_ENGG_CSB_DELAY_BIN13', - 216: 'PERF_ENGG_CSB_DELAY_BIN14', - 217: 'PERF_ENGG_CSB_DELAY_BIN15', - 218: 'PERF_ENGG_CSB_SPI_DELAY_BIN00', - 219: 'PERF_ENGG_CSB_SPI_DELAY_BIN01', - 220: 'PERF_ENGG_CSB_SPI_DELAY_BIN02', - 221: 'PERF_ENGG_CSB_SPI_DELAY_BIN03', - 222: 'PERF_ENGG_CSB_SPI_DELAY_BIN04', - 223: 'PERF_ENGG_CSB_SPI_DELAY_BIN05', - 224: 'PERF_ENGG_CSB_SPI_DELAY_BIN06', - 225: 'PERF_ENGG_CSB_SPI_DELAY_BIN07', - 226: 'PERF_ENGG_CSB_SPI_DELAY_BIN08', - 227: 'PERF_ENGG_CSB_SPI_DELAY_BIN09', - 228: 'PERF_ENGG_CSB_SPI_DELAY_BIN10', - 229: 'PERF_ENGG_INDEX_REQ_NULL_REQUEST', - 230: 'PERF_ENGG_INDEX_REQ_0_NEW_VERTS_THIS_PRIM', - 231: 'PERF_ENGG_INDEX_REQ_1_NEW_VERTS_THIS_PRIM', - 232: 'PERF_ENGG_INDEX_REQ_2_NEW_VERTS_THIS_PRIM', - 233: 'PERF_ENGG_INDEX_REQ_3_NEW_VERTS_THIS_PRIM', - 234: 'PERF_ENGG_INDEX_REQ_STARVED', - 235: 'PERF_ENGG_INDEX_REQ_IDLE_AND_STALLED_BY_REQ2RTN_FIFO_FULL', - 236: 'PERF_ENGG_INDEX_REQ_BUSY_AND_STALLED_BY_REQ2RTN_FIFO_FULL', - 237: 'PERF_ENGG_INDEX_REQ_STALLED_BY_SX_CREDITS', - 238: 'PERF_ENGG_INDEX_RET_REQ2RTN_FIFO_FULL', - 239: 'PERF_ENGG_INDEX_RET_REQ2RTN_FIFO_EMPTY', - 240: 'PERF_ENGG_INDEX_RET_SX_RECEIVE_FIFO_FULL', - 241: 'PERF_ENGG_INDEX_RET_SXRX_STARVED_BY_CSB', - 242: 'PERF_ENGG_INDEX_RET_SXRX_STARVED_BY_PRIMS', - 243: 'PERF_ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_CSB_FIFO', - 244: 'PERF_ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_FIFO', - 245: 'PERF_ENGG_INDEX_RET_SXRX_READING_EVENT', - 246: 'PERF_ENGG_INDEX_RET_SXRX_READING_NULL_SUBGROUP', - 247: 'PERF_ENGG_INDEX_RET_SXRX_READING_SUBGROUP_PRIMCOUNT_EQ0', - 248: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_NOPL', - 249: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_NOPL', - 250: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS_NOPL', - 251: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS_NOPL', - 252: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS_NOPL', - 253: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_PL', - 254: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_PL', - 255: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS_PL', - 256: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS_PL', - 257: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS_PL', - 258: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_NULL_PRIMS', - 259: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_NULL_PRIMS', - 260: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_NULL_PRIMS', - 261: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_NULL_PRIMS', - 262: 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_NULL_PRIMS', - 263: 'PERF_ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_P_FIFO', - 264: 'PERF_ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_S_FIFO', - 265: 'PERF_ENGG_INDEX_PRIM_IF_STARVED_BY_NO_CSB', - 266: 'PERF_ENGG_INDEX_PRIM_IF_STARVED_BY_NO_PRIM', - 267: 'PERF_ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_WRITE', - 268: 'PERF_ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_NO_WRITE', - 269: 'PERF_ENGG_POS_REQ_STARVED', - 270: 'PERF_ENGG_INDEX_RET_SXRX_NULL_DROPPER_STALLED_BY_FULL_PRIM_FIFO', - 271: 'PERF_ENGG_BUSY', - 272: 'PERF_CLIPSM_CULL_PRIMS_CNT', - 273: 'PERF_PH_SEND_1_SC', - 274: 'PERF_PH_SEND_2_SC', - 275: 'PERF_PH_SEND_3_SC', - 276: 'PERF_PH_SEND_4_SC', - 277: 'PERF_OUTPUT_PRIM_1_SC', - 278: 'PERF_OUTPUT_PRIM_2_SC', - 279: 'PERF_OUTPUT_PRIM_3_SC', - 280: 'PERF_OUTPUT_PRIM_4_SC', -} -PERF_PAPC_PASX_REQ = 0 -PERF_PAPC_PASX_DISABLE_PIPE = 1 -PERF_PAPC_PASX_FIRST_VECTOR = 2 -PERF_PAPC_PASX_SECOND_VECTOR = 3 -PERF_PAPC_PASX_FIRST_DEAD = 4 -PERF_PAPC_PASX_SECOND_DEAD = 5 -PERF_PAPC_PASX_VTX_KILL_DISCARD = 6 -PERF_PAPC_PASX_VTX_NAN_DISCARD = 7 -PERF_PAPC_PA_INPUT_PRIM = 8 -PERF_PAPC_PA_INPUT_NULL_PRIM = 9 -PERF_PAPC_PA_INPUT_EVENT_FLAG = 10 -PERF_PAPC_PA_INPUT_FIRST_PRIM_SLOT = 11 -PERF_PAPC_PA_INPUT_END_OF_PACKET = 12 -PERF_PAPC_PA_INPUT_EXTENDED_EVENT = 13 -PERF_PAPC_CLPR_CULL_PRIM = 14 -PERF_PAPC_CLPR_VVUCP_CULL_PRIM = 15 -PERF_PAPC_CLPR_VV_CULL_PRIM = 16 -PERF_PAPC_CLPR_UCP_CULL_PRIM = 17 -PERF_PAPC_CLPR_VTX_KILL_CULL_PRIM = 18 -PERF_PAPC_CLPR_VTX_NAN_CULL_PRIM = 19 -PERF_PAPC_CLPR_CULL_TO_NULL_PRIM = 20 -PERF_PAPC_CLPR_VVUCP_CLIP_PRIM = 21 -PERF_PAPC_CLPR_VV_CLIP_PRIM = 22 -PERF_PAPC_CLPR_UCP_CLIP_PRIM = 23 -PERF_PAPC_CLPR_POINT_CLIP_CANDIDATE = 24 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_1 = 25 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_2 = 26 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_3 = 27 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_4 = 28 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_5_8 = 29 -PERF_PAPC_CLPR_CLIP_PLANE_CNT_9_12 = 30 -PERF_PAPC_CLPR_CLIP_PLANE_NEAR = 31 -PERF_PAPC_CLPR_CLIP_PLANE_FAR = 32 -PERF_PAPC_CLPR_CLIP_PLANE_LEFT = 33 -PERF_PAPC_CLPR_CLIP_PLANE_RIGHT = 34 -PERF_PAPC_CLPR_CLIP_PLANE_TOP = 35 -PERF_PAPC_CLPR_CLIP_PLANE_BOTTOM = 36 -PERF_PAPC_CLPR_GSC_KILL_CULL_PRIM = 37 -PERF_PAPC_CLPR_RASTER_KILL_CULL_PRIM = 38 -PERF_PAPC_CLSM_NULL_PRIM = 39 -PERF_PAPC_CLSM_TOTALLY_VISIBLE_PRIM = 40 -PERF_PAPC_CLSM_CULL_TO_NULL_PRIM = 41 -PERF_PAPC_CLSM_OUT_PRIM_CNT_1 = 42 -PERF_PAPC_CLSM_OUT_PRIM_CNT_2 = 43 -PERF_PAPC_CLSM_OUT_PRIM_CNT_3 = 44 -PERF_PAPC_CLSM_OUT_PRIM_CNT_4 = 45 -PERF_PAPC_CLSM_OUT_PRIM_CNT_5_8 = 46 -PERF_PAPC_CLSM_OUT_PRIM_CNT_9_13 = 47 -PERF_PAPC_CLIPGA_VTE_KILL_PRIM = 48 -PERF_PAPC_SU_INPUT_PRIM = 49 -PERF_PAPC_SU_INPUT_CLIP_PRIM = 50 -PERF_PAPC_SU_INPUT_NULL_PRIM = 51 -PERF_PAPC_SU_INPUT_PRIM_DUAL = 52 -PERF_PAPC_SU_INPUT_CLIP_PRIM_DUAL = 53 -PERF_PAPC_SU_ZERO_AREA_CULL_PRIM = 54 -PERF_PAPC_SU_BACK_FACE_CULL_PRIM = 55 -PERF_PAPC_SU_FRONT_FACE_CULL_PRIM = 56 -PERF_PAPC_SU_POLYMODE_FACE_CULL = 57 -PERF_PAPC_SU_POLYMODE_BACK_CULL = 58 -PERF_PAPC_SU_POLYMODE_FRONT_CULL = 59 -PERF_PAPC_SU_POLYMODE_INVALID_FILL = 60 -PERF_PAPC_SU_OUTPUT_PRIM = 61 -PERF_PAPC_SU_OUTPUT_CLIP_PRIM = 62 -PERF_PAPC_SU_OUTPUT_NULL_PRIM = 63 -PERF_PAPC_SU_OUTPUT_EVENT_FLAG = 64 -PERF_PAPC_SU_OUTPUT_FIRST_PRIM_SLOT = 65 -PERF_PAPC_SU_OUTPUT_END_OF_PACKET = 66 -PERF_PAPC_SU_OUTPUT_POLYMODE_FACE = 67 -PERF_PAPC_SU_OUTPUT_POLYMODE_BACK = 68 -PERF_PAPC_SU_OUTPUT_POLYMODE_FRONT = 69 -PERF_PAPC_SU_OUT_CLIP_POLYMODE_FACE = 70 -PERF_PAPC_SU_OUT_CLIP_POLYMODE_BACK = 71 -PERF_PAPC_SU_OUT_CLIP_POLYMODE_FRONT = 72 -PERF_PAPC_SU_OUTPUT_PRIM_DUAL = 73 -PERF_PAPC_SU_OUTPUT_CLIP_PRIM_DUAL = 74 -PERF_PAPC_SU_OUTPUT_POLYMODE_DUAL = 75 -PERF_PAPC_SU_OUTPUT_CLIP_POLYMODE_DUAL = 76 -PERF_PAPC_PASX_REQ_IDLE = 77 -PERF_PAPC_PASX_REQ_BUSY = 78 -PERF_PAPC_PASX_REQ_STALLED = 79 -PERF_PAPC_PASX_REC_IDLE = 80 -PERF_PAPC_PASX_REC_BUSY = 81 -PERF_PAPC_PASX_REC_STARVED_SX = 82 -PERF_PAPC_PASX_REC_STALLED = 83 -PERF_PAPC_PASX_REC_STALLED_POS_MEM = 84 -PERF_PAPC_PASX_REC_STALLED_CCGSM_IN = 85 -PERF_PAPC_CCGSM_IDLE = 86 -PERF_PAPC_CCGSM_BUSY = 87 -PERF_PAPC_CCGSM_STALLED = 88 -PERF_PAPC_CLPRIM_IDLE = 89 -PERF_PAPC_CLPRIM_BUSY = 90 -PERF_PAPC_CLPRIM_STALLED = 91 -PERF_PAPC_CLPRIM_STARVED_CCGSM = 92 -PERF_PAPC_CLIPSM_IDLE = 93 -PERF_PAPC_CLIPSM_BUSY = 94 -PERF_PAPC_CLIPSM_WAIT_CLIP_VERT_ENGH = 95 -PERF_PAPC_CLIPSM_WAIT_HIGH_PRI_SEQ = 96 -PERF_PAPC_CLIPSM_WAIT_CLIPGA = 97 -PERF_PAPC_CLIPSM_WAIT_AVAIL_VTE_CLIP = 98 -PERF_PAPC_CLIPSM_WAIT_CLIP_OUTSM = 99 -PERF_PAPC_CLIPGA_IDLE = 100 -PERF_PAPC_CLIPGA_BUSY = 101 -PERF_PAPC_CLIPGA_STARVED_VTE_CLIP = 102 -PERF_PAPC_CLIPGA_STALLED = 103 -PERF_PAPC_CLIP_IDLE = 104 -PERF_PAPC_CLIP_BUSY = 105 -PERF_PAPC_SU_IDLE = 106 -PERF_PAPC_SU_BUSY = 107 -PERF_PAPC_SU_STARVED_CLIP = 108 -PERF_PAPC_SU_STALLED_SC = 109 -PERF_PAPC_CL_DYN_SCLK_VLD = 110 -PERF_PAPC_SU_DYN_SCLK_VLD = 111 -PERF_PAPC_PA_REG_SCLK_VLD = 112 -PERF_PAPC_SU_MULTI_GPU_PRIM_FILTER_CULL = 113 -PERF_PAPC_PASX_SE0_REQ = 114 -PERF_PAPC_PASX_SE1_REQ = 115 -PERF_PAPC_PASX_SE0_FIRST_VECTOR = 116 -PERF_PAPC_PASX_SE0_SECOND_VECTOR = 117 -PERF_PAPC_PASX_SE1_FIRST_VECTOR = 118 -PERF_PAPC_PASX_SE1_SECOND_VECTOR = 119 -PERF_PAPC_SU_SE0_PRIM_FILTER_CULL = 120 -PERF_PAPC_SU_SE1_PRIM_FILTER_CULL = 121 -PERF_PAPC_SU_SE01_PRIM_FILTER_CULL = 122 -PERF_PAPC_SU_SE0_OUTPUT_PRIM = 123 -PERF_PAPC_SU_SE1_OUTPUT_PRIM = 124 -PERF_PAPC_SU_SE01_OUTPUT_PRIM = 125 -PERF_PAPC_SU_SE0_OUTPUT_NULL_PRIM = 126 -PERF_PAPC_SU_SE1_OUTPUT_NULL_PRIM = 127 -PERF_PAPC_SU_SE01_OUTPUT_NULL_PRIM = 128 -PERF_PAPC_SU_SE0_OUTPUT_FIRST_PRIM_SLOT = 129 -PERF_PAPC_SU_SE1_OUTPUT_FIRST_PRIM_SLOT = 130 -PERF_PAPC_SU_SE0_STALLED_SC = 131 -PERF_PAPC_SU_SE1_STALLED_SC = 132 -PERF_PAPC_SU_SE01_STALLED_SC = 133 -PERF_PAPC_CLSM_CLIPPING_PRIM = 134 -PERF_PAPC_SU_CULLED_PRIM = 135 -PERF_PAPC_SU_OUTPUT_EOPG = 136 -PERF_PAPC_SU_SE2_PRIM_FILTER_CULL = 137 -PERF_PAPC_SU_SE3_PRIM_FILTER_CULL = 138 -PERF_PAPC_SU_SE2_OUTPUT_PRIM = 139 -PERF_PAPC_SU_SE3_OUTPUT_PRIM = 140 -PERF_PAPC_SU_SE2_OUTPUT_NULL_PRIM = 141 -PERF_PAPC_SU_SE3_OUTPUT_NULL_PRIM = 142 -PERF_PAPC_SU_SE0_OUTPUT_END_OF_PACKET = 143 -PERF_PAPC_SU_SE1_OUTPUT_END_OF_PACKET = 144 -PERF_PAPC_SU_SE2_OUTPUT_END_OF_PACKET = 145 -PERF_PAPC_SU_SE3_OUTPUT_END_OF_PACKET = 146 -PERF_PAPC_SU_SE0_OUTPUT_EOPG = 147 -PERF_PAPC_SU_SE1_OUTPUT_EOPG = 148 -PERF_PAPC_SU_SE2_OUTPUT_EOPG = 149 -PERF_PAPC_SU_SE3_OUTPUT_EOPG = 150 -PERF_PAPC_SU_SE2_STALLED_SC = 151 -PERF_PAPC_SU_SE3_STALLED_SC = 152 -PERF_SU_SMALL_PRIM_FILTER_CULL_CNT = 153 -PERF_SMALL_PRIM_CULL_PRIM_1X1 = 154 -PERF_SMALL_PRIM_CULL_PRIM_2X1 = 155 -PERF_SMALL_PRIM_CULL_PRIM_1X2 = 156 -PERF_SMALL_PRIM_CULL_PRIM_2X2 = 157 -PERF_SMALL_PRIM_CULL_PRIM_3X1 = 158 -PERF_SMALL_PRIM_CULL_PRIM_1X3 = 159 -PERF_SMALL_PRIM_CULL_PRIM_3X2 = 160 -PERF_SMALL_PRIM_CULL_PRIM_2X3 = 161 -PERF_SMALL_PRIM_CULL_PRIM_NX1 = 162 -PERF_SMALL_PRIM_CULL_PRIM_1XN = 163 -PERF_SMALL_PRIM_CULL_PRIM_NX2 = 164 -PERF_SMALL_PRIM_CULL_PRIM_2XN = 165 -PERF_SMALL_PRIM_CULL_PRIM_FULL_RES_EVENT = 166 -PERF_SMALL_PRIM_CULL_PRIM_HALF_RES_EVENT = 167 -PERF_SMALL_PRIM_CULL_PRIM_QUARTER_RES_EVENT = 168 -PERF_SC0_QUALIFIED_SEND_BUSY_EVENT = 170 -PERF_SC0_QUALIFIED_SEND_NOT_BUSY_EVENT = 171 -PERF_SC1_QUALIFIED_SEND_BUSY_EVENT = 172 -PERF_SC1_QUALIFIED_SEND_NOT_BUSY_EVENT = 173 -PERF_SC2_QUALIFIED_SEND_BUSY_EVENT = 174 -PERF_SC2_QUALIFIED_SEND_NOT_BUSY_EVENT = 175 -PERF_SC3_QUALIFIED_SEND_BUSY_EVENT = 176 -PERF_SC3_QUALIFIED_SEND_NOT_BUSY_EVENT = 177 -PERF_PA_VERTEX_FIFO_FULL = 179 -PERF_PA_PRIMIC_TO_CLPRIM_FIFO_FULL = 180 -PERF_PA_FETCH_TO_PRIMIC_P_FIFO_FULL = 182 -PERF_PA_FETCH_TO_SXIF_FIFO_FULL = 183 -PERF_PA_PIPE0_SWITCHED_GEN = 185 -PERF_PA_PIPE1_SWITCHED_GEN = 186 -PERF_ENGG_CSB_MACHINE_IS_STARVED = 188 -PERF_ENGG_CSB_MACHINE_STALLED_BY_CSB_MEMORY = 189 -PERF_ENGG_CSB_MACHINE_STALLED_BY_SPI = 190 -PERF_ENGG_CSB_GE_INPUT_FIFO_FULL = 191 -PERF_ENGG_CSB_SPI_INPUT_FIFO_FULL = 192 -PERF_ENGG_CSB_PAYLOAD_INPUT_FIFO_FULL = 193 -PERF_ENGG_CSB_GE_INPUT_FIFO_POP_BIT = 194 -PERF_ENGG_CSB_PRIM_COUNT_EQ0 = 195 -PERF_ENGG_CSB_NULL_SUBGROUP = 196 -PERF_ENGG_CSB_GE_SENDING_SUBGROUP = 197 -PERF_ENGG_CSB_GE_MEMORY_FULL = 198 -PERF_ENGG_CSB_GE_MEMORY_EMPTY = 199 -PERF_ENGG_CSB_SPI_MEMORY_FULL = 200 -PERF_ENGG_CSB_SPI_MEMORY_EMPTY = 201 -PERF_ENGG_CSB_DELAY_BIN00 = 202 -PERF_ENGG_CSB_DELAY_BIN01 = 203 -PERF_ENGG_CSB_DELAY_BIN02 = 204 -PERF_ENGG_CSB_DELAY_BIN03 = 205 -PERF_ENGG_CSB_DELAY_BIN04 = 206 -PERF_ENGG_CSB_DELAY_BIN05 = 207 -PERF_ENGG_CSB_DELAY_BIN06 = 208 -PERF_ENGG_CSB_DELAY_BIN07 = 209 -PERF_ENGG_CSB_DELAY_BIN08 = 210 -PERF_ENGG_CSB_DELAY_BIN09 = 211 -PERF_ENGG_CSB_DELAY_BIN10 = 212 -PERF_ENGG_CSB_DELAY_BIN11 = 213 -PERF_ENGG_CSB_DELAY_BIN12 = 214 -PERF_ENGG_CSB_DELAY_BIN13 = 215 -PERF_ENGG_CSB_DELAY_BIN14 = 216 -PERF_ENGG_CSB_DELAY_BIN15 = 217 -PERF_ENGG_CSB_SPI_DELAY_BIN00 = 218 -PERF_ENGG_CSB_SPI_DELAY_BIN01 = 219 -PERF_ENGG_CSB_SPI_DELAY_BIN02 = 220 -PERF_ENGG_CSB_SPI_DELAY_BIN03 = 221 -PERF_ENGG_CSB_SPI_DELAY_BIN04 = 222 -PERF_ENGG_CSB_SPI_DELAY_BIN05 = 223 -PERF_ENGG_CSB_SPI_DELAY_BIN06 = 224 -PERF_ENGG_CSB_SPI_DELAY_BIN07 = 225 -PERF_ENGG_CSB_SPI_DELAY_BIN08 = 226 -PERF_ENGG_CSB_SPI_DELAY_BIN09 = 227 -PERF_ENGG_CSB_SPI_DELAY_BIN10 = 228 -PERF_ENGG_INDEX_REQ_NULL_REQUEST = 229 -PERF_ENGG_INDEX_REQ_0_NEW_VERTS_THIS_PRIM = 230 -PERF_ENGG_INDEX_REQ_1_NEW_VERTS_THIS_PRIM = 231 -PERF_ENGG_INDEX_REQ_2_NEW_VERTS_THIS_PRIM = 232 -PERF_ENGG_INDEX_REQ_3_NEW_VERTS_THIS_PRIM = 233 -PERF_ENGG_INDEX_REQ_STARVED = 234 -PERF_ENGG_INDEX_REQ_IDLE_AND_STALLED_BY_REQ2RTN_FIFO_FULL = 235 -PERF_ENGG_INDEX_REQ_BUSY_AND_STALLED_BY_REQ2RTN_FIFO_FULL = 236 -PERF_ENGG_INDEX_REQ_STALLED_BY_SX_CREDITS = 237 -PERF_ENGG_INDEX_RET_REQ2RTN_FIFO_FULL = 238 -PERF_ENGG_INDEX_RET_REQ2RTN_FIFO_EMPTY = 239 -PERF_ENGG_INDEX_RET_SX_RECEIVE_FIFO_FULL = 240 -PERF_ENGG_INDEX_RET_SXRX_STARVED_BY_CSB = 241 -PERF_ENGG_INDEX_RET_SXRX_STARVED_BY_PRIMS = 242 -PERF_ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_CSB_FIFO = 243 -PERF_ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_FIFO = 244 -PERF_ENGG_INDEX_RET_SXRX_READING_EVENT = 245 -PERF_ENGG_INDEX_RET_SXRX_READING_NULL_SUBGROUP = 246 -PERF_ENGG_INDEX_RET_SXRX_READING_SUBGROUP_PRIMCOUNT_EQ0 = 247 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_NOPL = 248 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_NOPL = 249 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS_NOPL = 250 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS_NOPL = 251 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS_NOPL = 252 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_PL = 253 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_PL = 254 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS_PL = 255 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS_PL = 256 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS_PL = 257 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_NULL_PRIMS = 258 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_NULL_PRIMS = 259 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_NULL_PRIMS = 260 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_NULL_PRIMS = 261 -PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_NULL_PRIMS = 262 -PERF_ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_P_FIFO = 263 -PERF_ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_S_FIFO = 264 -PERF_ENGG_INDEX_PRIM_IF_STARVED_BY_NO_CSB = 265 -PERF_ENGG_INDEX_PRIM_IF_STARVED_BY_NO_PRIM = 266 -PERF_ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_WRITE = 267 -PERF_ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_NO_WRITE = 268 -PERF_ENGG_POS_REQ_STARVED = 269 -PERF_ENGG_INDEX_RET_SXRX_NULL_DROPPER_STALLED_BY_FULL_PRIM_FIFO = 270 -PERF_ENGG_BUSY = 271 -PERF_CLIPSM_CULL_PRIMS_CNT = 272 -PERF_PH_SEND_1_SC = 273 -PERF_PH_SEND_2_SC = 274 -PERF_PH_SEND_3_SC = 275 -PERF_PH_SEND_4_SC = 276 -PERF_OUTPUT_PRIM_1_SC = 277 -PERF_OUTPUT_PRIM_2_SC = 278 -PERF_OUTPUT_PRIM_3_SC = 279 -PERF_OUTPUT_PRIM_4_SC = 280 -SU_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PH_PERFCNT_SEL' -PH_PERFCNT_SEL__enumvalues = { - 0: 'PH_PERF_SEL_SC0_SRPS_WINDOW_VALID', - 1: 'PH_PERF_SEL_SC0_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 2: 'PH_PERF_SEL_SC0_ARB_XFC_ONLY_PRIM_CYCLES', - 3: 'PH_PERF_SEL_SC0_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 4: 'PH_PERF_SEL_SC0_ARB_STALLED_FROM_BELOW', - 5: 'PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE', - 6: 'PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 7: 'PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 8: 'PH_PERF_SEL_SC0_ARB_BUSY', - 9: 'PH_PERF_SEL_SC0_ARB_PA_BUSY_SOP', - 10: 'PH_PERF_SEL_SC0_ARB_EOP_POP_SYNC_POP', - 11: 'PH_PERF_SEL_SC0_ARB_EVENT_SYNC_POP', - 12: 'PH_PERF_SEL_SC0_PS_ENG_MULTICYCLE_BUBBLE', - 13: 'PH_PERF_SEL_SC0_EOP_SYNC_WINDOW', - 14: 'PH_PERF_SEL_SC0_BUSY_PROCESSING_MULTICYCLE_PRIM', - 15: 'PH_PERF_SEL_SC0_BUSY_CNT_NOT_ZERO', - 16: 'PH_PERF_SEL_SC0_SEND', - 17: 'PH_PERF_SEL_SC0_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 18: 'PH_PERF_SEL_SC0_CREDIT_AT_MAX', - 19: 'PH_PERF_SEL_SC0_CREDIT_AT_MAX_NO_PENDING_SEND', - 20: 'PH_PERF_SEL_SC0_GFX_PIPE0_TO_1_TRANSITION', - 21: 'PH_PERF_SEL_SC0_GFX_PIPE1_TO_0_TRANSITION', - 22: 'PH_PERF_SEL_SC0_GFX_PIPE_PRIM_PROVOKED_TRANSITION', - 23: 'PH_PERF_SEL_SC0_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 24: 'PH_PERF_SEL_SC0_PA0_DATA_FIFO_RD', - 25: 'PH_PERF_SEL_SC0_PA0_DATA_FIFO_WE', - 26: 'PH_PERF_SEL_SC0_PA0_FIFO_EMPTY', - 27: 'PH_PERF_SEL_SC0_PA0_FIFO_FULL', - 28: 'PH_PERF_SEL_SC0_PA0_NULL_WE', - 29: 'PH_PERF_SEL_SC0_PA0_EVENT_WE', - 30: 'PH_PERF_SEL_SC0_PA0_FPOV_WE', - 31: 'PH_PERF_SEL_SC0_PA0_LPOV_WE', - 32: 'PH_PERF_SEL_SC0_PA0_EOP_WE', - 33: 'PH_PERF_SEL_SC0_PA0_DATA_FIFO_EOP_RD', - 34: 'PH_PERF_SEL_SC0_PA0_EOPG_WE', - 35: 'PH_PERF_SEL_SC0_PA0_DEALLOC_4_0_RD', - 36: 'PH_PERF_SEL_SC0_PA1_DATA_FIFO_RD', - 37: 'PH_PERF_SEL_SC0_PA1_DATA_FIFO_WE', - 38: 'PH_PERF_SEL_SC0_PA1_FIFO_EMPTY', - 39: 'PH_PERF_SEL_SC0_PA1_FIFO_FULL', - 40: 'PH_PERF_SEL_SC0_PA1_NULL_WE', - 41: 'PH_PERF_SEL_SC0_PA1_EVENT_WE', - 42: 'PH_PERF_SEL_SC0_PA1_FPOV_WE', - 43: 'PH_PERF_SEL_SC0_PA1_LPOV_WE', - 44: 'PH_PERF_SEL_SC0_PA1_EOP_WE', - 45: 'PH_PERF_SEL_SC0_PA1_DATA_FIFO_EOP_RD', - 46: 'PH_PERF_SEL_SC0_PA1_EOPG_WE', - 47: 'PH_PERF_SEL_SC0_PA1_DEALLOC_4_0_RD', - 48: 'PH_PERF_SEL_SC0_PA2_DATA_FIFO_RD', - 49: 'PH_PERF_SEL_SC0_PA2_DATA_FIFO_WE', - 50: 'PH_PERF_SEL_SC0_PA2_FIFO_EMPTY', - 51: 'PH_PERF_SEL_SC0_PA2_FIFO_FULL', - 52: 'PH_PERF_SEL_SC0_PA2_NULL_WE', - 53: 'PH_PERF_SEL_SC0_PA2_EVENT_WE', - 54: 'PH_PERF_SEL_SC0_PA2_FPOV_WE', - 55: 'PH_PERF_SEL_SC0_PA2_LPOV_WE', - 56: 'PH_PERF_SEL_SC0_PA2_EOP_WE', - 57: 'PH_PERF_SEL_SC0_PA2_DATA_FIFO_EOP_RD', - 58: 'PH_PERF_SEL_SC0_PA2_EOPG_WE', - 59: 'PH_PERF_SEL_SC0_PA2_DEALLOC_4_0_RD', - 60: 'PH_PERF_SEL_SC0_PA3_DATA_FIFO_RD', - 61: 'PH_PERF_SEL_SC0_PA3_DATA_FIFO_WE', - 62: 'PH_PERF_SEL_SC0_PA3_FIFO_EMPTY', - 63: 'PH_PERF_SEL_SC0_PA3_FIFO_FULL', - 64: 'PH_PERF_SEL_SC0_PA3_NULL_WE', - 65: 'PH_PERF_SEL_SC0_PA3_EVENT_WE', - 66: 'PH_PERF_SEL_SC0_PA3_FPOV_WE', - 67: 'PH_PERF_SEL_SC0_PA3_LPOV_WE', - 68: 'PH_PERF_SEL_SC0_PA3_EOP_WE', - 69: 'PH_PERF_SEL_SC0_PA3_DATA_FIFO_EOP_RD', - 70: 'PH_PERF_SEL_SC0_PA3_EOPG_WE', - 71: 'PH_PERF_SEL_SC0_PA3_DEALLOC_4_0_RD', - 72: 'PH_PERF_SEL_SC0_PA4_DATA_FIFO_RD', - 73: 'PH_PERF_SEL_SC0_PA4_DATA_FIFO_WE', - 74: 'PH_PERF_SEL_SC0_PA4_FIFO_EMPTY', - 75: 'PH_PERF_SEL_SC0_PA4_FIFO_FULL', - 76: 'PH_PERF_SEL_SC0_PA4_NULL_WE', - 77: 'PH_PERF_SEL_SC0_PA4_EVENT_WE', - 78: 'PH_PERF_SEL_SC0_PA4_FPOV_WE', - 79: 'PH_PERF_SEL_SC0_PA4_LPOV_WE', - 80: 'PH_PERF_SEL_SC0_PA4_EOP_WE', - 81: 'PH_PERF_SEL_SC0_PA4_DATA_FIFO_EOP_RD', - 82: 'PH_PERF_SEL_SC0_PA4_EOPG_WE', - 83: 'PH_PERF_SEL_SC0_PA4_DEALLOC_4_0_RD', - 84: 'PH_PERF_SEL_SC0_PA5_DATA_FIFO_RD', - 85: 'PH_PERF_SEL_SC0_PA5_DATA_FIFO_WE', - 86: 'PH_PERF_SEL_SC0_PA5_FIFO_EMPTY', - 87: 'PH_PERF_SEL_SC0_PA5_FIFO_FULL', - 88: 'PH_PERF_SEL_SC0_PA5_NULL_WE', - 89: 'PH_PERF_SEL_SC0_PA5_EVENT_WE', - 90: 'PH_PERF_SEL_SC0_PA5_FPOV_WE', - 91: 'PH_PERF_SEL_SC0_PA5_LPOV_WE', - 92: 'PH_PERF_SEL_SC0_PA5_EOP_WE', - 93: 'PH_PERF_SEL_SC0_PA5_DATA_FIFO_EOP_RD', - 94: 'PH_PERF_SEL_SC0_PA5_EOPG_WE', - 95: 'PH_PERF_SEL_SC0_PA5_DEALLOC_4_0_RD', - 96: 'PH_PERF_SEL_SC0_PA6_DATA_FIFO_RD', - 97: 'PH_PERF_SEL_SC0_PA6_DATA_FIFO_WE', - 98: 'PH_PERF_SEL_SC0_PA6_FIFO_EMPTY', - 99: 'PH_PERF_SEL_SC0_PA6_FIFO_FULL', - 100: 'PH_PERF_SEL_SC0_PA6_NULL_WE', - 101: 'PH_PERF_SEL_SC0_PA6_EVENT_WE', - 102: 'PH_PERF_SEL_SC0_PA6_FPOV_WE', - 103: 'PH_PERF_SEL_SC0_PA6_LPOV_WE', - 104: 'PH_PERF_SEL_SC0_PA6_EOP_WE', - 105: 'PH_PERF_SEL_SC0_PA6_DATA_FIFO_EOP_RD', - 106: 'PH_PERF_SEL_SC0_PA6_EOPG_WE', - 107: 'PH_PERF_SEL_SC0_PA6_DEALLOC_4_0_RD', - 108: 'PH_PERF_SEL_SC0_PA7_DATA_FIFO_RD', - 109: 'PH_PERF_SEL_SC0_PA7_DATA_FIFO_WE', - 110: 'PH_PERF_SEL_SC0_PA7_FIFO_EMPTY', - 111: 'PH_PERF_SEL_SC0_PA7_FIFO_FULL', - 112: 'PH_PERF_SEL_SC0_PA7_NULL_WE', - 113: 'PH_PERF_SEL_SC0_PA7_EVENT_WE', - 114: 'PH_PERF_SEL_SC0_PA7_FPOV_WE', - 115: 'PH_PERF_SEL_SC0_PA7_LPOV_WE', - 116: 'PH_PERF_SEL_SC0_PA7_EOP_WE', - 117: 'PH_PERF_SEL_SC0_PA7_DATA_FIFO_EOP_RD', - 118: 'PH_PERF_SEL_SC0_PA7_EOPG_WE', - 119: 'PH_PERF_SEL_SC0_PA7_DEALLOC_4_0_RD', - 120: 'PH_PERF_SEL_SC1_SRPS_WINDOW_VALID', - 121: 'PH_PERF_SEL_SC1_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 122: 'PH_PERF_SEL_SC1_ARB_XFC_ONLY_PRIM_CYCLES', - 123: 'PH_PERF_SEL_SC1_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 124: 'PH_PERF_SEL_SC1_ARB_STALLED_FROM_BELOW', - 125: 'PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE', - 126: 'PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 127: 'PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 128: 'PH_PERF_SEL_SC1_ARB_BUSY', - 129: 'PH_PERF_SEL_SC1_ARB_PA_BUSY_SOP', - 130: 'PH_PERF_SEL_SC1_ARB_EOP_POP_SYNC_POP', - 131: 'PH_PERF_SEL_SC1_ARB_EVENT_SYNC_POP', - 132: 'PH_PERF_SEL_SC1_PS_ENG_MULTICYCLE_BUBBLE', - 133: 'PH_PERF_SEL_SC1_EOP_SYNC_WINDOW', - 134: 'PH_PERF_SEL_SC1_BUSY_PROCESSING_MULTICYCLE_PRIM', - 135: 'PH_PERF_SEL_SC1_BUSY_CNT_NOT_ZERO', - 136: 'PH_PERF_SEL_SC1_SEND', - 137: 'PH_PERF_SEL_SC1_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 138: 'PH_PERF_SEL_SC1_CREDIT_AT_MAX', - 139: 'PH_PERF_SEL_SC1_CREDIT_AT_MAX_NO_PENDING_SEND', - 140: 'PH_PERF_SEL_SC1_GFX_PIPE0_TO_1_TRANSITION', - 141: 'PH_PERF_SEL_SC1_GFX_PIPE1_TO_0_TRANSITION', - 142: 'PH_PERF_SEL_SC1_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 143: 'PH_PERF_SEL_SC1_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 144: 'PH_PERF_SEL_SC1_PA0_DATA_FIFO_RD', - 145: 'PH_PERF_SEL_SC1_PA0_DATA_FIFO_WE', - 146: 'PH_PERF_SEL_SC1_PA0_FIFO_EMPTY', - 147: 'PH_PERF_SEL_SC1_PA0_FIFO_FULL', - 148: 'PH_PERF_SEL_SC1_PA0_NULL_WE', - 149: 'PH_PERF_SEL_SC1_PA0_EVENT_WE', - 150: 'PH_PERF_SEL_SC1_PA0_FPOV_WE', - 151: 'PH_PERF_SEL_SC1_PA0_LPOV_WE', - 152: 'PH_PERF_SEL_SC1_PA0_EOP_WE', - 153: 'PH_PERF_SEL_SC1_PA0_DATA_FIFO_EOP_RD', - 154: 'PH_PERF_SEL_SC1_PA0_EOPG_WE', - 155: 'PH_PERF_SEL_SC1_PA0_DEALLOC_4_0_RD', - 156: 'PH_PERF_SEL_SC1_PA1_DATA_FIFO_RD', - 157: 'PH_PERF_SEL_SC1_PA1_DATA_FIFO_WE', - 158: 'PH_PERF_SEL_SC1_PA1_FIFO_EMPTY', - 159: 'PH_PERF_SEL_SC1_PA1_FIFO_FULL', - 160: 'PH_PERF_SEL_SC1_PA1_NULL_WE', - 161: 'PH_PERF_SEL_SC1_PA1_EVENT_WE', - 162: 'PH_PERF_SEL_SC1_PA1_FPOV_WE', - 163: 'PH_PERF_SEL_SC1_PA1_LPOV_WE', - 164: 'PH_PERF_SEL_SC1_PA1_EOP_WE', - 165: 'PH_PERF_SEL_SC1_PA1_DATA_FIFO_EOP_RD', - 166: 'PH_PERF_SEL_SC1_PA1_EOPG_WE', - 167: 'PH_PERF_SEL_SC1_PA1_DEALLOC_4_0_RD', - 168: 'PH_PERF_SEL_SC1_PA2_DATA_FIFO_RD', - 169: 'PH_PERF_SEL_SC1_PA2_DATA_FIFO_WE', - 170: 'PH_PERF_SEL_SC1_PA2_FIFO_EMPTY', - 171: 'PH_PERF_SEL_SC1_PA2_FIFO_FULL', - 172: 'PH_PERF_SEL_SC1_PA2_NULL_WE', - 173: 'PH_PERF_SEL_SC1_PA2_EVENT_WE', - 174: 'PH_PERF_SEL_SC1_PA2_FPOV_WE', - 175: 'PH_PERF_SEL_SC1_PA2_LPOV_WE', - 176: 'PH_PERF_SEL_SC1_PA2_EOP_WE', - 177: 'PH_PERF_SEL_SC1_PA2_DATA_FIFO_EOP_RD', - 178: 'PH_PERF_SEL_SC1_PA2_EOPG_WE', - 179: 'PH_PERF_SEL_SC1_PA2_DEALLOC_4_0_RD', - 180: 'PH_PERF_SEL_SC1_PA3_DATA_FIFO_RD', - 181: 'PH_PERF_SEL_SC1_PA3_DATA_FIFO_WE', - 182: 'PH_PERF_SEL_SC1_PA3_FIFO_EMPTY', - 183: 'PH_PERF_SEL_SC1_PA3_FIFO_FULL', - 184: 'PH_PERF_SEL_SC1_PA3_NULL_WE', - 185: 'PH_PERF_SEL_SC1_PA3_EVENT_WE', - 186: 'PH_PERF_SEL_SC1_PA3_FPOV_WE', - 187: 'PH_PERF_SEL_SC1_PA3_LPOV_WE', - 188: 'PH_PERF_SEL_SC1_PA3_EOP_WE', - 189: 'PH_PERF_SEL_SC1_PA3_DATA_FIFO_EOP_RD', - 190: 'PH_PERF_SEL_SC1_PA3_EOPG_WE', - 191: 'PH_PERF_SEL_SC1_PA3_DEALLOC_4_0_RD', - 192: 'PH_PERF_SEL_SC1_PA4_DATA_FIFO_RD', - 193: 'PH_PERF_SEL_SC1_PA4_DATA_FIFO_WE', - 194: 'PH_PERF_SEL_SC1_PA4_FIFO_EMPTY', - 195: 'PH_PERF_SEL_SC1_PA4_FIFO_FULL', - 196: 'PH_PERF_SEL_SC1_PA4_NULL_WE', - 197: 'PH_PERF_SEL_SC1_PA4_EVENT_WE', - 198: 'PH_PERF_SEL_SC1_PA4_FPOV_WE', - 199: 'PH_PERF_SEL_SC1_PA4_LPOV_WE', - 200: 'PH_PERF_SEL_SC1_PA4_EOP_WE', - 201: 'PH_PERF_SEL_SC1_PA4_DATA_FIFO_EOP_RD', - 202: 'PH_PERF_SEL_SC1_PA4_EOPG_WE', - 203: 'PH_PERF_SEL_SC1_PA4_DEALLOC_4_0_RD', - 204: 'PH_PERF_SEL_SC1_PA5_DATA_FIFO_RD', - 205: 'PH_PERF_SEL_SC1_PA5_DATA_FIFO_WE', - 206: 'PH_PERF_SEL_SC1_PA5_FIFO_EMPTY', - 207: 'PH_PERF_SEL_SC1_PA5_FIFO_FULL', - 208: 'PH_PERF_SEL_SC1_PA5_NULL_WE', - 209: 'PH_PERF_SEL_SC1_PA5_EVENT_WE', - 210: 'PH_PERF_SEL_SC1_PA5_FPOV_WE', - 211: 'PH_PERF_SEL_SC1_PA5_LPOV_WE', - 212: 'PH_PERF_SEL_SC1_PA5_EOP_WE', - 213: 'PH_PERF_SEL_SC1_PA5_DATA_FIFO_EOP_RD', - 214: 'PH_PERF_SEL_SC1_PA5_EOPG_WE', - 215: 'PH_PERF_SEL_SC1_PA5_DEALLOC_4_0_RD', - 216: 'PH_PERF_SEL_SC1_PA6_DATA_FIFO_RD', - 217: 'PH_PERF_SEL_SC1_PA6_DATA_FIFO_WE', - 218: 'PH_PERF_SEL_SC1_PA6_FIFO_EMPTY', - 219: 'PH_PERF_SEL_SC1_PA6_FIFO_FULL', - 220: 'PH_PERF_SEL_SC1_PA6_NULL_WE', - 221: 'PH_PERF_SEL_SC1_PA6_EVENT_WE', - 222: 'PH_PERF_SEL_SC1_PA6_FPOV_WE', - 223: 'PH_PERF_SEL_SC1_PA6_LPOV_WE', - 224: 'PH_PERF_SEL_SC1_PA6_EOP_WE', - 225: 'PH_PERF_SEL_SC1_PA6_DATA_FIFO_EOP_RD', - 226: 'PH_PERF_SEL_SC1_PA6_EOPG_WE', - 227: 'PH_PERF_SEL_SC1_PA6_DEALLOC_4_0_RD', - 228: 'PH_PERF_SEL_SC1_PA7_DATA_FIFO_RD', - 229: 'PH_PERF_SEL_SC1_PA7_DATA_FIFO_WE', - 230: 'PH_PERF_SEL_SC1_PA7_FIFO_EMPTY', - 231: 'PH_PERF_SEL_SC1_PA7_FIFO_FULL', - 232: 'PH_PERF_SEL_SC1_PA7_NULL_WE', - 233: 'PH_PERF_SEL_SC1_PA7_EVENT_WE', - 234: 'PH_PERF_SEL_SC1_PA7_FPOV_WE', - 235: 'PH_PERF_SEL_SC1_PA7_LPOV_WE', - 236: 'PH_PERF_SEL_SC1_PA7_EOP_WE', - 237: 'PH_PERF_SEL_SC1_PA7_DATA_FIFO_EOP_RD', - 238: 'PH_PERF_SEL_SC1_PA7_EOPG_WE', - 239: 'PH_PERF_SEL_SC1_PA7_DEALLOC_4_0_RD', - 240: 'PH_PERF_SEL_SC2_SRPS_WINDOW_VALID', - 241: 'PH_PERF_SEL_SC2_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 242: 'PH_PERF_SEL_SC2_ARB_XFC_ONLY_PRIM_CYCLES', - 243: 'PH_PERF_SEL_SC2_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 244: 'PH_PERF_SEL_SC2_ARB_STALLED_FROM_BELOW', - 245: 'PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE', - 246: 'PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 247: 'PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 248: 'PH_PERF_SEL_SC2_ARB_BUSY', - 249: 'PH_PERF_SEL_SC2_ARB_PA_BUSY_SOP', - 250: 'PH_PERF_SEL_SC2_ARB_EOP_POP_SYNC_POP', - 251: 'PH_PERF_SEL_SC2_ARB_EVENT_SYNC_POP', - 252: 'PH_PERF_SEL_SC2_PS_ENG_MULTICYCLE_BUBBLE', - 253: 'PH_PERF_SEL_SC2_EOP_SYNC_WINDOW', - 254: 'PH_PERF_SEL_SC2_BUSY_PROCESSING_MULTICYCLE_PRIM', - 255: 'PH_PERF_SEL_SC2_BUSY_CNT_NOT_ZERO', - 256: 'PH_PERF_SEL_SC2_SEND', - 257: 'PH_PERF_SEL_SC2_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 258: 'PH_PERF_SEL_SC2_CREDIT_AT_MAX', - 259: 'PH_PERF_SEL_SC2_CREDIT_AT_MAX_NO_PENDING_SEND', - 260: 'PH_PERF_SEL_SC2_GFX_PIPE0_TO_1_TRANSITION', - 261: 'PH_PERF_SEL_SC2_GFX_PIPE1_TO_0_TRANSITION', - 262: 'PH_PERF_SEL_SC2_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 263: 'PH_PERF_SEL_SC2_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 264: 'PH_PERF_SEL_SC2_PA0_DATA_FIFO_RD', - 265: 'PH_PERF_SEL_SC2_PA0_DATA_FIFO_WE', - 266: 'PH_PERF_SEL_SC2_PA0_FIFO_EMPTY', - 267: 'PH_PERF_SEL_SC2_PA0_FIFO_FULL', - 268: 'PH_PERF_SEL_SC2_PA0_NULL_WE', - 269: 'PH_PERF_SEL_SC2_PA0_EVENT_WE', - 270: 'PH_PERF_SEL_SC2_PA0_FPOV_WE', - 271: 'PH_PERF_SEL_SC2_PA0_LPOV_WE', - 272: 'PH_PERF_SEL_SC2_PA0_EOP_WE', - 273: 'PH_PERF_SEL_SC2_PA0_DATA_FIFO_EOP_RD', - 274: 'PH_PERF_SEL_SC2_PA0_EOPG_WE', - 275: 'PH_PERF_SEL_SC2_PA0_DEALLOC_4_0_RD', - 276: 'PH_PERF_SEL_SC2_PA1_DATA_FIFO_RD', - 277: 'PH_PERF_SEL_SC2_PA1_DATA_FIFO_WE', - 278: 'PH_PERF_SEL_SC2_PA1_FIFO_EMPTY', - 279: 'PH_PERF_SEL_SC2_PA1_FIFO_FULL', - 280: 'PH_PERF_SEL_SC2_PA1_NULL_WE', - 281: 'PH_PERF_SEL_SC2_PA1_EVENT_WE', - 282: 'PH_PERF_SEL_SC2_PA1_FPOV_WE', - 283: 'PH_PERF_SEL_SC2_PA1_LPOV_WE', - 284: 'PH_PERF_SEL_SC2_PA1_EOP_WE', - 285: 'PH_PERF_SEL_SC2_PA1_DATA_FIFO_EOP_RD', - 286: 'PH_PERF_SEL_SC2_PA1_EOPG_WE', - 287: 'PH_PERF_SEL_SC2_PA1_DEALLOC_4_0_RD', - 288: 'PH_PERF_SEL_SC2_PA2_DATA_FIFO_RD', - 289: 'PH_PERF_SEL_SC2_PA2_DATA_FIFO_WE', - 290: 'PH_PERF_SEL_SC2_PA2_FIFO_EMPTY', - 291: 'PH_PERF_SEL_SC2_PA2_FIFO_FULL', - 292: 'PH_PERF_SEL_SC2_PA2_NULL_WE', - 293: 'PH_PERF_SEL_SC2_PA2_EVENT_WE', - 294: 'PH_PERF_SEL_SC2_PA2_FPOV_WE', - 295: 'PH_PERF_SEL_SC2_PA2_LPOV_WE', - 296: 'PH_PERF_SEL_SC2_PA2_EOP_WE', - 297: 'PH_PERF_SEL_SC2_PA2_DATA_FIFO_EOP_RD', - 298: 'PH_PERF_SEL_SC2_PA2_EOPG_WE', - 299: 'PH_PERF_SEL_SC2_PA2_DEALLOC_4_0_RD', - 300: 'PH_PERF_SEL_SC2_PA3_DATA_FIFO_RD', - 301: 'PH_PERF_SEL_SC2_PA3_DATA_FIFO_WE', - 302: 'PH_PERF_SEL_SC2_PA3_FIFO_EMPTY', - 303: 'PH_PERF_SEL_SC2_PA3_FIFO_FULL', - 304: 'PH_PERF_SEL_SC2_PA3_NULL_WE', - 305: 'PH_PERF_SEL_SC2_PA3_EVENT_WE', - 306: 'PH_PERF_SEL_SC2_PA3_FPOV_WE', - 307: 'PH_PERF_SEL_SC2_PA3_LPOV_WE', - 308: 'PH_PERF_SEL_SC2_PA3_EOP_WE', - 309: 'PH_PERF_SEL_SC2_PA3_DATA_FIFO_EOP_RD', - 310: 'PH_PERF_SEL_SC2_PA3_EOPG_WE', - 311: 'PH_PERF_SEL_SC2_PA3_DEALLOC_4_0_RD', - 312: 'PH_PERF_SEL_SC2_PA4_DATA_FIFO_RD', - 313: 'PH_PERF_SEL_SC2_PA4_DATA_FIFO_WE', - 314: 'PH_PERF_SEL_SC2_PA4_FIFO_EMPTY', - 315: 'PH_PERF_SEL_SC2_PA4_FIFO_FULL', - 316: 'PH_PERF_SEL_SC2_PA4_NULL_WE', - 317: 'PH_PERF_SEL_SC2_PA4_EVENT_WE', - 318: 'PH_PERF_SEL_SC2_PA4_FPOV_WE', - 319: 'PH_PERF_SEL_SC2_PA4_LPOV_WE', - 320: 'PH_PERF_SEL_SC2_PA4_EOP_WE', - 321: 'PH_PERF_SEL_SC2_PA4_DATA_FIFO_EOP_RD', - 322: 'PH_PERF_SEL_SC2_PA4_EOPG_WE', - 323: 'PH_PERF_SEL_SC2_PA4_DEALLOC_4_0_RD', - 324: 'PH_PERF_SEL_SC2_PA5_DATA_FIFO_RD', - 325: 'PH_PERF_SEL_SC2_PA5_DATA_FIFO_WE', - 326: 'PH_PERF_SEL_SC2_PA5_FIFO_EMPTY', - 327: 'PH_PERF_SEL_SC2_PA5_FIFO_FULL', - 328: 'PH_PERF_SEL_SC2_PA5_NULL_WE', - 329: 'PH_PERF_SEL_SC2_PA5_EVENT_WE', - 330: 'PH_PERF_SEL_SC2_PA5_FPOV_WE', - 331: 'PH_PERF_SEL_SC2_PA5_LPOV_WE', - 332: 'PH_PERF_SEL_SC2_PA5_EOP_WE', - 333: 'PH_PERF_SEL_SC2_PA5_DATA_FIFO_EOP_RD', - 334: 'PH_PERF_SEL_SC2_PA5_EOPG_WE', - 335: 'PH_PERF_SEL_SC2_PA5_DEALLOC_4_0_RD', - 336: 'PH_PERF_SEL_SC2_PA6_DATA_FIFO_RD', - 337: 'PH_PERF_SEL_SC2_PA6_DATA_FIFO_WE', - 338: 'PH_PERF_SEL_SC2_PA6_FIFO_EMPTY', - 339: 'PH_PERF_SEL_SC2_PA6_FIFO_FULL', - 340: 'PH_PERF_SEL_SC2_PA6_NULL_WE', - 341: 'PH_PERF_SEL_SC2_PA6_EVENT_WE', - 342: 'PH_PERF_SEL_SC2_PA6_FPOV_WE', - 343: 'PH_PERF_SEL_SC2_PA6_LPOV_WE', - 344: 'PH_PERF_SEL_SC2_PA6_EOP_WE', - 345: 'PH_PERF_SEL_SC2_PA6_DATA_FIFO_EOP_RD', - 346: 'PH_PERF_SEL_SC2_PA6_EOPG_WE', - 347: 'PH_PERF_SEL_SC2_PA6_DEALLOC_4_0_RD', - 348: 'PH_PERF_SEL_SC2_PA7_DATA_FIFO_RD', - 349: 'PH_PERF_SEL_SC2_PA7_DATA_FIFO_WE', - 350: 'PH_PERF_SEL_SC2_PA7_FIFO_EMPTY', - 351: 'PH_PERF_SEL_SC2_PA7_FIFO_FULL', - 352: 'PH_PERF_SEL_SC2_PA7_NULL_WE', - 353: 'PH_PERF_SEL_SC2_PA7_EVENT_WE', - 354: 'PH_PERF_SEL_SC2_PA7_FPOV_WE', - 355: 'PH_PERF_SEL_SC2_PA7_LPOV_WE', - 356: 'PH_PERF_SEL_SC2_PA7_EOP_WE', - 357: 'PH_PERF_SEL_SC2_PA7_DATA_FIFO_EOP_RD', - 358: 'PH_PERF_SEL_SC2_PA7_EOPG_WE', - 359: 'PH_PERF_SEL_SC2_PA7_DEALLOC_4_0_RD', - 360: 'PH_PERF_SEL_SC3_SRPS_WINDOW_VALID', - 361: 'PH_PERF_SEL_SC3_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 362: 'PH_PERF_SEL_SC3_ARB_XFC_ONLY_PRIM_CYCLES', - 363: 'PH_PERF_SEL_SC3_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 364: 'PH_PERF_SEL_SC3_ARB_STALLED_FROM_BELOW', - 365: 'PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE', - 366: 'PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 367: 'PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 368: 'PH_PERF_SEL_SC3_ARB_BUSY', - 369: 'PH_PERF_SEL_SC3_ARB_PA_BUSY_SOP', - 370: 'PH_PERF_SEL_SC3_ARB_EOP_POP_SYNC_POP', - 371: 'PH_PERF_SEL_SC3_ARB_EVENT_SYNC_POP', - 372: 'PH_PERF_SEL_SC3_PS_ENG_MULTICYCLE_BUBBLE', - 373: 'PH_PERF_SEL_SC3_EOP_SYNC_WINDOW', - 374: 'PH_PERF_SEL_SC3_BUSY_PROCESSING_MULTICYCLE_PRIM', - 375: 'PH_PERF_SEL_SC3_BUSY_CNT_NOT_ZERO', - 376: 'PH_PERF_SEL_SC3_SEND', - 377: 'PH_PERF_SEL_SC3_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 378: 'PH_PERF_SEL_SC3_CREDIT_AT_MAX', - 379: 'PH_PERF_SEL_SC3_CREDIT_AT_MAX_NO_PENDING_SEND', - 380: 'PH_PERF_SEL_SC3_GFX_PIPE0_TO_1_TRANSITION', - 381: 'PH_PERF_SEL_SC3_GFX_PIPE1_TO_0_TRANSITION', - 382: 'PH_PERF_SEL_SC3_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 383: 'PH_PERF_SEL_SC3_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 384: 'PH_PERF_SEL_SC3_PA0_DATA_FIFO_RD', - 385: 'PH_PERF_SEL_SC3_PA0_DATA_FIFO_WE', - 386: 'PH_PERF_SEL_SC3_PA0_FIFO_EMPTY', - 387: 'PH_PERF_SEL_SC3_PA0_FIFO_FULL', - 388: 'PH_PERF_SEL_SC3_PA0_NULL_WE', - 389: 'PH_PERF_SEL_SC3_PA0_EVENT_WE', - 390: 'PH_PERF_SEL_SC3_PA0_FPOV_WE', - 391: 'PH_PERF_SEL_SC3_PA0_LPOV_WE', - 392: 'PH_PERF_SEL_SC3_PA0_EOP_WE', - 393: 'PH_PERF_SEL_SC3_PA0_DATA_FIFO_EOP_RD', - 394: 'PH_PERF_SEL_SC3_PA0_EOPG_WE', - 395: 'PH_PERF_SEL_SC3_PA0_DEALLOC_4_0_RD', - 396: 'PH_PERF_SEL_SC3_PA1_DATA_FIFO_RD', - 397: 'PH_PERF_SEL_SC3_PA1_DATA_FIFO_WE', - 398: 'PH_PERF_SEL_SC3_PA1_FIFO_EMPTY', - 399: 'PH_PERF_SEL_SC3_PA1_FIFO_FULL', - 400: 'PH_PERF_SEL_SC3_PA1_NULL_WE', - 401: 'PH_PERF_SEL_SC3_PA1_EVENT_WE', - 402: 'PH_PERF_SEL_SC3_PA1_FPOV_WE', - 403: 'PH_PERF_SEL_SC3_PA1_LPOV_WE', - 404: 'PH_PERF_SEL_SC3_PA1_EOP_WE', - 405: 'PH_PERF_SEL_SC3_PA1_DATA_FIFO_EOP_RD', - 406: 'PH_PERF_SEL_SC3_PA1_EOPG_WE', - 407: 'PH_PERF_SEL_SC3_PA1_DEALLOC_4_0_RD', - 408: 'PH_PERF_SEL_SC3_PA2_DATA_FIFO_RD', - 409: 'PH_PERF_SEL_SC3_PA2_DATA_FIFO_WE', - 410: 'PH_PERF_SEL_SC3_PA2_FIFO_EMPTY', - 411: 'PH_PERF_SEL_SC3_PA2_FIFO_FULL', - 412: 'PH_PERF_SEL_SC3_PA2_NULL_WE', - 413: 'PH_PERF_SEL_SC3_PA2_EVENT_WE', - 414: 'PH_PERF_SEL_SC3_PA2_FPOV_WE', - 415: 'PH_PERF_SEL_SC3_PA2_LPOV_WE', - 416: 'PH_PERF_SEL_SC3_PA2_EOP_WE', - 417: 'PH_PERF_SEL_SC3_PA2_DATA_FIFO_EOP_RD', - 418: 'PH_PERF_SEL_SC3_PA2_EOPG_WE', - 419: 'PH_PERF_SEL_SC3_PA2_DEALLOC_4_0_RD', - 420: 'PH_PERF_SEL_SC3_PA3_DATA_FIFO_RD', - 421: 'PH_PERF_SEL_SC3_PA3_DATA_FIFO_WE', - 422: 'PH_PERF_SEL_SC3_PA3_FIFO_EMPTY', - 423: 'PH_PERF_SEL_SC3_PA3_FIFO_FULL', - 424: 'PH_PERF_SEL_SC3_PA3_NULL_WE', - 425: 'PH_PERF_SEL_SC3_PA3_EVENT_WE', - 426: 'PH_PERF_SEL_SC3_PA3_FPOV_WE', - 427: 'PH_PERF_SEL_SC3_PA3_LPOV_WE', - 428: 'PH_PERF_SEL_SC3_PA3_EOP_WE', - 429: 'PH_PERF_SEL_SC3_PA3_DATA_FIFO_EOP_RD', - 430: 'PH_PERF_SEL_SC3_PA3_EOPG_WE', - 431: 'PH_PERF_SEL_SC3_PA3_DEALLOC_4_0_RD', - 432: 'PH_PERF_SEL_SC3_PA4_DATA_FIFO_RD', - 433: 'PH_PERF_SEL_SC3_PA4_DATA_FIFO_WE', - 434: 'PH_PERF_SEL_SC3_PA4_FIFO_EMPTY', - 435: 'PH_PERF_SEL_SC3_PA4_FIFO_FULL', - 436: 'PH_PERF_SEL_SC3_PA4_NULL_WE', - 437: 'PH_PERF_SEL_SC3_PA4_EVENT_WE', - 438: 'PH_PERF_SEL_SC3_PA4_FPOV_WE', - 439: 'PH_PERF_SEL_SC3_PA4_LPOV_WE', - 440: 'PH_PERF_SEL_SC3_PA4_EOP_WE', - 441: 'PH_PERF_SEL_SC3_PA4_DATA_FIFO_EOP_RD', - 442: 'PH_PERF_SEL_SC3_PA4_EOPG_WE', - 443: 'PH_PERF_SEL_SC3_PA4_DEALLOC_4_0_RD', - 444: 'PH_PERF_SEL_SC3_PA5_DATA_FIFO_RD', - 445: 'PH_PERF_SEL_SC3_PA5_DATA_FIFO_WE', - 446: 'PH_PERF_SEL_SC3_PA5_FIFO_EMPTY', - 447: 'PH_PERF_SEL_SC3_PA5_FIFO_FULL', - 448: 'PH_PERF_SEL_SC3_PA5_NULL_WE', - 449: 'PH_PERF_SEL_SC3_PA5_EVENT_WE', - 450: 'PH_PERF_SEL_SC3_PA5_FPOV_WE', - 451: 'PH_PERF_SEL_SC3_PA5_LPOV_WE', - 452: 'PH_PERF_SEL_SC3_PA5_EOP_WE', - 453: 'PH_PERF_SEL_SC3_PA5_DATA_FIFO_EOP_RD', - 454: 'PH_PERF_SEL_SC3_PA5_EOPG_WE', - 455: 'PH_PERF_SEL_SC3_PA5_DEALLOC_4_0_RD', - 456: 'PH_PERF_SEL_SC3_PA6_DATA_FIFO_RD', - 457: 'PH_PERF_SEL_SC3_PA6_DATA_FIFO_WE', - 458: 'PH_PERF_SEL_SC3_PA6_FIFO_EMPTY', - 459: 'PH_PERF_SEL_SC3_PA6_FIFO_FULL', - 460: 'PH_PERF_SEL_SC3_PA6_NULL_WE', - 461: 'PH_PERF_SEL_SC3_PA6_EVENT_WE', - 462: 'PH_PERF_SEL_SC3_PA6_FPOV_WE', - 463: 'PH_PERF_SEL_SC3_PA6_LPOV_WE', - 464: 'PH_PERF_SEL_SC3_PA6_EOP_WE', - 465: 'PH_PERF_SEL_SC3_PA6_DATA_FIFO_EOP_RD', - 466: 'PH_PERF_SEL_SC3_PA6_EOPG_WE', - 467: 'PH_PERF_SEL_SC3_PA6_DEALLOC_4_0_RD', - 468: 'PH_PERF_SEL_SC3_PA7_DATA_FIFO_RD', - 469: 'PH_PERF_SEL_SC3_PA7_DATA_FIFO_WE', - 470: 'PH_PERF_SEL_SC3_PA7_FIFO_EMPTY', - 471: 'PH_PERF_SEL_SC3_PA7_FIFO_FULL', - 472: 'PH_PERF_SEL_SC3_PA7_NULL_WE', - 473: 'PH_PERF_SEL_SC3_PA7_EVENT_WE', - 474: 'PH_PERF_SEL_SC3_PA7_FPOV_WE', - 475: 'PH_PERF_SEL_SC3_PA7_LPOV_WE', - 476: 'PH_PERF_SEL_SC3_PA7_EOP_WE', - 477: 'PH_PERF_SEL_SC3_PA7_DATA_FIFO_EOP_RD', - 478: 'PH_PERF_SEL_SC3_PA7_EOPG_WE', - 479: 'PH_PERF_SEL_SC3_PA7_DEALLOC_4_0_RD', - 480: 'PH_PERF_SEL_SC4_SRPS_WINDOW_VALID', - 481: 'PH_PERF_SEL_SC4_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 482: 'PH_PERF_SEL_SC4_ARB_XFC_ONLY_PRIM_CYCLES', - 483: 'PH_PERF_SEL_SC4_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 484: 'PH_PERF_SEL_SC4_ARB_STALLED_FROM_BELOW', - 485: 'PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE', - 486: 'PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 487: 'PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 488: 'PH_PERF_SEL_SC4_ARB_BUSY', - 489: 'PH_PERF_SEL_SC4_ARB_PA_BUSY_SOP', - 490: 'PH_PERF_SEL_SC4_ARB_EOP_POP_SYNC_POP', - 491: 'PH_PERF_SEL_SC4_ARB_EVENT_SYNC_POP', - 492: 'PH_PERF_SEL_SC4_PS_ENG_MULTICYCLE_BUBBLE', - 493: 'PH_PERF_SEL_SC4_EOP_SYNC_WINDOW', - 494: 'PH_PERF_SEL_SC4_BUSY_PROCESSING_MULTICYCLE_PRIM', - 495: 'PH_PERF_SEL_SC4_BUSY_CNT_NOT_ZERO', - 496: 'PH_PERF_SEL_SC4_SEND', - 497: 'PH_PERF_SEL_SC4_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 498: 'PH_PERF_SEL_SC4_CREDIT_AT_MAX', - 499: 'PH_PERF_SEL_SC4_CREDIT_AT_MAX_NO_PENDING_SEND', - 500: 'PH_PERF_SEL_SC4_GFX_PIPE0_TO_1_TRANSITION', - 501: 'PH_PERF_SEL_SC4_GFX_PIPE1_TO_0_TRANSITION', - 502: 'PH_PERF_SEL_SC4_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 503: 'PH_PERF_SEL_SC4_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 504: 'PH_PERF_SEL_SC4_PA0_DATA_FIFO_RD', - 505: 'PH_PERF_SEL_SC4_PA0_DATA_FIFO_WE', - 506: 'PH_PERF_SEL_SC4_PA0_FIFO_EMPTY', - 507: 'PH_PERF_SEL_SC4_PA0_FIFO_FULL', - 508: 'PH_PERF_SEL_SC4_PA0_NULL_WE', - 509: 'PH_PERF_SEL_SC4_PA0_EVENT_WE', - 510: 'PH_PERF_SEL_SC4_PA0_FPOV_WE', - 511: 'PH_PERF_SEL_SC4_PA0_LPOV_WE', - 512: 'PH_PERF_SEL_SC4_PA0_EOP_WE', - 513: 'PH_PERF_SEL_SC4_PA0_DATA_FIFO_EOP_RD', - 514: 'PH_PERF_SEL_SC4_PA0_EOPG_WE', - 515: 'PH_PERF_SEL_SC4_PA0_DEALLOC_4_0_RD', - 516: 'PH_PERF_SEL_SC4_PA1_DATA_FIFO_RD', - 517: 'PH_PERF_SEL_SC4_PA1_DATA_FIFO_WE', - 518: 'PH_PERF_SEL_SC4_PA1_FIFO_EMPTY', - 519: 'PH_PERF_SEL_SC4_PA1_FIFO_FULL', - 520: 'PH_PERF_SEL_SC4_PA1_NULL_WE', - 521: 'PH_PERF_SEL_SC4_PA1_EVENT_WE', - 522: 'PH_PERF_SEL_SC4_PA1_FPOV_WE', - 523: 'PH_PERF_SEL_SC4_PA1_LPOV_WE', - 524: 'PH_PERF_SEL_SC4_PA1_EOP_WE', - 525: 'PH_PERF_SEL_SC4_PA1_DATA_FIFO_EOP_RD', - 526: 'PH_PERF_SEL_SC4_PA1_EOPG_WE', - 527: 'PH_PERF_SEL_SC4_PA1_DEALLOC_4_0_RD', - 528: 'PH_PERF_SEL_SC4_PA2_DATA_FIFO_RD', - 529: 'PH_PERF_SEL_SC4_PA2_DATA_FIFO_WE', - 530: 'PH_PERF_SEL_SC4_PA2_FIFO_EMPTY', - 531: 'PH_PERF_SEL_SC4_PA2_FIFO_FULL', - 532: 'PH_PERF_SEL_SC4_PA2_NULL_WE', - 533: 'PH_PERF_SEL_SC4_PA2_EVENT_WE', - 534: 'PH_PERF_SEL_SC4_PA2_FPOV_WE', - 535: 'PH_PERF_SEL_SC4_PA2_LPOV_WE', - 536: 'PH_PERF_SEL_SC4_PA2_EOP_WE', - 537: 'PH_PERF_SEL_SC4_PA2_DATA_FIFO_EOP_RD', - 538: 'PH_PERF_SEL_SC4_PA2_EOPG_WE', - 539: 'PH_PERF_SEL_SC4_PA2_DEALLOC_4_0_RD', - 540: 'PH_PERF_SEL_SC4_PA3_DATA_FIFO_RD', - 541: 'PH_PERF_SEL_SC4_PA3_DATA_FIFO_WE', - 542: 'PH_PERF_SEL_SC4_PA3_FIFO_EMPTY', - 543: 'PH_PERF_SEL_SC4_PA3_FIFO_FULL', - 544: 'PH_PERF_SEL_SC4_PA3_NULL_WE', - 545: 'PH_PERF_SEL_SC4_PA3_EVENT_WE', - 546: 'PH_PERF_SEL_SC4_PA3_FPOV_WE', - 547: 'PH_PERF_SEL_SC4_PA3_LPOV_WE', - 548: 'PH_PERF_SEL_SC4_PA3_EOP_WE', - 549: 'PH_PERF_SEL_SC4_PA3_DATA_FIFO_EOP_RD', - 550: 'PH_PERF_SEL_SC4_PA3_EOPG_WE', - 551: 'PH_PERF_SEL_SC4_PA3_DEALLOC_4_0_RD', - 552: 'PH_PERF_SEL_SC4_PA4_DATA_FIFO_RD', - 553: 'PH_PERF_SEL_SC4_PA4_DATA_FIFO_WE', - 554: 'PH_PERF_SEL_SC4_PA4_FIFO_EMPTY', - 555: 'PH_PERF_SEL_SC4_PA4_FIFO_FULL', - 556: 'PH_PERF_SEL_SC4_PA4_NULL_WE', - 557: 'PH_PERF_SEL_SC4_PA4_EVENT_WE', - 558: 'PH_PERF_SEL_SC4_PA4_FPOV_WE', - 559: 'PH_PERF_SEL_SC4_PA4_LPOV_WE', - 560: 'PH_PERF_SEL_SC4_PA4_EOP_WE', - 561: 'PH_PERF_SEL_SC4_PA4_DATA_FIFO_EOP_RD', - 562: 'PH_PERF_SEL_SC4_PA4_EOPG_WE', - 563: 'PH_PERF_SEL_SC4_PA4_DEALLOC_4_0_RD', - 564: 'PH_PERF_SEL_SC4_PA5_DATA_FIFO_RD', - 565: 'PH_PERF_SEL_SC4_PA5_DATA_FIFO_WE', - 566: 'PH_PERF_SEL_SC4_PA5_FIFO_EMPTY', - 567: 'PH_PERF_SEL_SC4_PA5_FIFO_FULL', - 568: 'PH_PERF_SEL_SC4_PA5_NULL_WE', - 569: 'PH_PERF_SEL_SC4_PA5_EVENT_WE', - 570: 'PH_PERF_SEL_SC4_PA5_FPOV_WE', - 571: 'PH_PERF_SEL_SC4_PA5_LPOV_WE', - 572: 'PH_PERF_SEL_SC4_PA5_EOP_WE', - 573: 'PH_PERF_SEL_SC4_PA5_DATA_FIFO_EOP_RD', - 574: 'PH_PERF_SEL_SC4_PA5_EOPG_WE', - 575: 'PH_PERF_SEL_SC4_PA5_DEALLOC_4_0_RD', - 576: 'PH_PERF_SEL_SC4_PA6_DATA_FIFO_RD', - 577: 'PH_PERF_SEL_SC4_PA6_DATA_FIFO_WE', - 578: 'PH_PERF_SEL_SC4_PA6_FIFO_EMPTY', - 579: 'PH_PERF_SEL_SC4_PA6_FIFO_FULL', - 580: 'PH_PERF_SEL_SC4_PA6_NULL_WE', - 581: 'PH_PERF_SEL_SC4_PA6_EVENT_WE', - 582: 'PH_PERF_SEL_SC4_PA6_FPOV_WE', - 583: 'PH_PERF_SEL_SC4_PA6_LPOV_WE', - 584: 'PH_PERF_SEL_SC4_PA6_EOP_WE', - 585: 'PH_PERF_SEL_SC4_PA6_DATA_FIFO_EOP_RD', - 586: 'PH_PERF_SEL_SC4_PA6_EOPG_WE', - 587: 'PH_PERF_SEL_SC4_PA6_DEALLOC_4_0_RD', - 588: 'PH_PERF_SEL_SC4_PA7_DATA_FIFO_RD', - 589: 'PH_PERF_SEL_SC4_PA7_DATA_FIFO_WE', - 590: 'PH_PERF_SEL_SC4_PA7_FIFO_EMPTY', - 591: 'PH_PERF_SEL_SC4_PA7_FIFO_FULL', - 592: 'PH_PERF_SEL_SC4_PA7_NULL_WE', - 593: 'PH_PERF_SEL_SC4_PA7_EVENT_WE', - 594: 'PH_PERF_SEL_SC4_PA7_FPOV_WE', - 595: 'PH_PERF_SEL_SC4_PA7_LPOV_WE', - 596: 'PH_PERF_SEL_SC4_PA7_EOP_WE', - 597: 'PH_PERF_SEL_SC4_PA7_DATA_FIFO_EOP_RD', - 598: 'PH_PERF_SEL_SC4_PA7_EOPG_WE', - 599: 'PH_PERF_SEL_SC4_PA7_DEALLOC_4_0_RD', - 600: 'PH_PERF_SEL_SC5_SRPS_WINDOW_VALID', - 601: 'PH_PERF_SEL_SC5_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 602: 'PH_PERF_SEL_SC5_ARB_XFC_ONLY_PRIM_CYCLES', - 603: 'PH_PERF_SEL_SC5_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 604: 'PH_PERF_SEL_SC5_ARB_STALLED_FROM_BELOW', - 605: 'PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE', - 606: 'PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 607: 'PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 608: 'PH_PERF_SEL_SC5_ARB_BUSY', - 609: 'PH_PERF_SEL_SC5_ARB_PA_BUSY_SOP', - 610: 'PH_PERF_SEL_SC5_ARB_EOP_POP_SYNC_POP', - 611: 'PH_PERF_SEL_SC5_ARB_EVENT_SYNC_POP', - 612: 'PH_PERF_SEL_SC5_PS_ENG_MULTICYCLE_BUBBLE', - 613: 'PH_PERF_SEL_SC5_EOP_SYNC_WINDOW', - 614: 'PH_PERF_SEL_SC5_BUSY_PROCESSING_MULTICYCLE_PRIM', - 615: 'PH_PERF_SEL_SC5_BUSY_CNT_NOT_ZERO', - 616: 'PH_PERF_SEL_SC5_SEND', - 617: 'PH_PERF_SEL_SC5_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 618: 'PH_PERF_SEL_SC5_CREDIT_AT_MAX', - 619: 'PH_PERF_SEL_SC5_CREDIT_AT_MAX_NO_PENDING_SEND', - 620: 'PH_PERF_SEL_SC5_GFX_PIPE0_TO_1_TRANSITION', - 621: 'PH_PERF_SEL_SC5_GFX_PIPE1_TO_0_TRANSITION', - 622: 'PH_PERF_SEL_SC5_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 623: 'PH_PERF_SEL_SC5_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 624: 'PH_PERF_SEL_SC5_PA0_DATA_FIFO_RD', - 625: 'PH_PERF_SEL_SC5_PA0_DATA_FIFO_WE', - 626: 'PH_PERF_SEL_SC5_PA0_FIFO_EMPTY', - 627: 'PH_PERF_SEL_SC5_PA0_FIFO_FULL', - 628: 'PH_PERF_SEL_SC5_PA0_NULL_WE', - 629: 'PH_PERF_SEL_SC5_PA0_EVENT_WE', - 630: 'PH_PERF_SEL_SC5_PA0_FPOV_WE', - 631: 'PH_PERF_SEL_SC5_PA0_LPOV_WE', - 632: 'PH_PERF_SEL_SC5_PA0_EOP_WE', - 633: 'PH_PERF_SEL_SC5_PA0_DATA_FIFO_EOP_RD', - 634: 'PH_PERF_SEL_SC5_PA0_EOPG_WE', - 635: 'PH_PERF_SEL_SC5_PA0_DEALLOC_4_0_RD', - 636: 'PH_PERF_SEL_SC5_PA1_DATA_FIFO_RD', - 637: 'PH_PERF_SEL_SC5_PA1_DATA_FIFO_WE', - 638: 'PH_PERF_SEL_SC5_PA1_FIFO_EMPTY', - 639: 'PH_PERF_SEL_SC5_PA1_FIFO_FULL', - 640: 'PH_PERF_SEL_SC5_PA1_NULL_WE', - 641: 'PH_PERF_SEL_SC5_PA1_EVENT_WE', - 642: 'PH_PERF_SEL_SC5_PA1_FPOV_WE', - 643: 'PH_PERF_SEL_SC5_PA1_LPOV_WE', - 644: 'PH_PERF_SEL_SC5_PA1_EOP_WE', - 645: 'PH_PERF_SEL_SC5_PA1_DATA_FIFO_EOP_RD', - 646: 'PH_PERF_SEL_SC5_PA1_EOPG_WE', - 647: 'PH_PERF_SEL_SC5_PA1_DEALLOC_4_0_RD', - 648: 'PH_PERF_SEL_SC5_PA2_DATA_FIFO_RD', - 649: 'PH_PERF_SEL_SC5_PA2_DATA_FIFO_WE', - 650: 'PH_PERF_SEL_SC5_PA2_FIFO_EMPTY', - 651: 'PH_PERF_SEL_SC5_PA2_FIFO_FULL', - 652: 'PH_PERF_SEL_SC5_PA2_NULL_WE', - 653: 'PH_PERF_SEL_SC5_PA2_EVENT_WE', - 654: 'PH_PERF_SEL_SC5_PA2_FPOV_WE', - 655: 'PH_PERF_SEL_SC5_PA2_LPOV_WE', - 656: 'PH_PERF_SEL_SC5_PA2_EOP_WE', - 657: 'PH_PERF_SEL_SC5_PA2_DATA_FIFO_EOP_RD', - 658: 'PH_PERF_SEL_SC5_PA2_EOPG_WE', - 659: 'PH_PERF_SEL_SC5_PA2_DEALLOC_4_0_RD', - 660: 'PH_PERF_SEL_SC5_PA3_DATA_FIFO_RD', - 661: 'PH_PERF_SEL_SC5_PA3_DATA_FIFO_WE', - 662: 'PH_PERF_SEL_SC5_PA3_FIFO_EMPTY', - 663: 'PH_PERF_SEL_SC5_PA3_FIFO_FULL', - 664: 'PH_PERF_SEL_SC5_PA3_NULL_WE', - 665: 'PH_PERF_SEL_SC5_PA3_EVENT_WE', - 666: 'PH_PERF_SEL_SC5_PA3_FPOV_WE', - 667: 'PH_PERF_SEL_SC5_PA3_LPOV_WE', - 668: 'PH_PERF_SEL_SC5_PA3_EOP_WE', - 669: 'PH_PERF_SEL_SC5_PA3_DATA_FIFO_EOP_RD', - 670: 'PH_PERF_SEL_SC5_PA3_EOPG_WE', - 671: 'PH_PERF_SEL_SC5_PA3_DEALLOC_4_0_RD', - 672: 'PH_PERF_SEL_SC5_PA4_DATA_FIFO_RD', - 673: 'PH_PERF_SEL_SC5_PA4_DATA_FIFO_WE', - 674: 'PH_PERF_SEL_SC5_PA4_FIFO_EMPTY', - 675: 'PH_PERF_SEL_SC5_PA4_FIFO_FULL', - 676: 'PH_PERF_SEL_SC5_PA4_NULL_WE', - 677: 'PH_PERF_SEL_SC5_PA4_EVENT_WE', - 678: 'PH_PERF_SEL_SC5_PA4_FPOV_WE', - 679: 'PH_PERF_SEL_SC5_PA4_LPOV_WE', - 680: 'PH_PERF_SEL_SC5_PA4_EOP_WE', - 681: 'PH_PERF_SEL_SC5_PA4_DATA_FIFO_EOP_RD', - 682: 'PH_PERF_SEL_SC5_PA4_EOPG_WE', - 683: 'PH_PERF_SEL_SC5_PA4_DEALLOC_4_0_RD', - 684: 'PH_PERF_SEL_SC5_PA5_DATA_FIFO_RD', - 685: 'PH_PERF_SEL_SC5_PA5_DATA_FIFO_WE', - 686: 'PH_PERF_SEL_SC5_PA5_FIFO_EMPTY', - 687: 'PH_PERF_SEL_SC5_PA5_FIFO_FULL', - 688: 'PH_PERF_SEL_SC5_PA5_NULL_WE', - 689: 'PH_PERF_SEL_SC5_PA5_EVENT_WE', - 690: 'PH_PERF_SEL_SC5_PA5_FPOV_WE', - 691: 'PH_PERF_SEL_SC5_PA5_LPOV_WE', - 692: 'PH_PERF_SEL_SC5_PA5_EOP_WE', - 693: 'PH_PERF_SEL_SC5_PA5_DATA_FIFO_EOP_RD', - 694: 'PH_PERF_SEL_SC5_PA5_EOPG_WE', - 695: 'PH_PERF_SEL_SC5_PA5_DEALLOC_4_0_RD', - 696: 'PH_PERF_SEL_SC5_PA6_DATA_FIFO_RD', - 697: 'PH_PERF_SEL_SC5_PA6_DATA_FIFO_WE', - 698: 'PH_PERF_SEL_SC5_PA6_FIFO_EMPTY', - 699: 'PH_PERF_SEL_SC5_PA6_FIFO_FULL', - 700: 'PH_PERF_SEL_SC5_PA6_NULL_WE', - 701: 'PH_PERF_SEL_SC5_PA6_EVENT_WE', - 702: 'PH_PERF_SEL_SC5_PA6_FPOV_WE', - 703: 'PH_PERF_SEL_SC5_PA6_LPOV_WE', - 704: 'PH_PERF_SEL_SC5_PA6_EOP_WE', - 705: 'PH_PERF_SEL_SC5_PA6_DATA_FIFO_EOP_RD', - 706: 'PH_PERF_SEL_SC5_PA6_EOPG_WE', - 707: 'PH_PERF_SEL_SC5_PA6_DEALLOC_4_0_RD', - 708: 'PH_PERF_SEL_SC5_PA7_DATA_FIFO_RD', - 709: 'PH_PERF_SEL_SC5_PA7_DATA_FIFO_WE', - 710: 'PH_PERF_SEL_SC5_PA7_FIFO_EMPTY', - 711: 'PH_PERF_SEL_SC5_PA7_FIFO_FULL', - 712: 'PH_PERF_SEL_SC5_PA7_NULL_WE', - 713: 'PH_PERF_SEL_SC5_PA7_EVENT_WE', - 714: 'PH_PERF_SEL_SC5_PA7_FPOV_WE', - 715: 'PH_PERF_SEL_SC5_PA7_LPOV_WE', - 716: 'PH_PERF_SEL_SC5_PA7_EOP_WE', - 717: 'PH_PERF_SEL_SC5_PA7_DATA_FIFO_EOP_RD', - 718: 'PH_PERF_SEL_SC5_PA7_EOPG_WE', - 719: 'PH_PERF_SEL_SC5_PA7_DEALLOC_4_0_RD', - 720: 'PH_PERF_SEL_SC6_SRPS_WINDOW_VALID', - 721: 'PH_PERF_SEL_SC6_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 722: 'PH_PERF_SEL_SC6_ARB_XFC_ONLY_PRIM_CYCLES', - 723: 'PH_PERF_SEL_SC6_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 724: 'PH_PERF_SEL_SC6_ARB_STALLED_FROM_BELOW', - 725: 'PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE', - 726: 'PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 727: 'PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 728: 'PH_PERF_SEL_SC6_ARB_BUSY', - 729: 'PH_PERF_SEL_SC6_ARB_PA_BUSY_SOP', - 730: 'PH_PERF_SEL_SC6_ARB_EOP_POP_SYNC_POP', - 731: 'PH_PERF_SEL_SC6_ARB_EVENT_SYNC_POP', - 732: 'PH_PERF_SEL_SC6_PS_ENG_MULTICYCLE_BUBBLE', - 733: 'PH_PERF_SEL_SC6_EOP_SYNC_WINDOW', - 734: 'PH_PERF_SEL_SC6_BUSY_PROCESSING_MULTICYCLE_PRIM', - 735: 'PH_PERF_SEL_SC6_BUSY_CNT_NOT_ZERO', - 736: 'PH_PERF_SEL_SC6_SEND', - 737: 'PH_PERF_SEL_SC6_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 738: 'PH_PERF_SEL_SC6_CREDIT_AT_MAX', - 739: 'PH_PERF_SEL_SC6_CREDIT_AT_MAX_NO_PENDING_SEND', - 740: 'PH_PERF_SEL_SC6_GFX_PIPE0_TO_1_TRANSITION', - 741: 'PH_PERF_SEL_SC6_GFX_PIPE1_TO_0_TRANSITION', - 742: 'PH_PERF_SEL_SC6_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 743: 'PH_PERF_SEL_SC6_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 744: 'PH_PERF_SEL_SC6_PA0_DATA_FIFO_RD', - 745: 'PH_PERF_SEL_SC6_PA0_DATA_FIFO_WE', - 746: 'PH_PERF_SEL_SC6_PA0_FIFO_EMPTY', - 747: 'PH_PERF_SEL_SC6_PA0_FIFO_FULL', - 748: 'PH_PERF_SEL_SC6_PA0_NULL_WE', - 749: 'PH_PERF_SEL_SC6_PA0_EVENT_WE', - 750: 'PH_PERF_SEL_SC6_PA0_FPOV_WE', - 751: 'PH_PERF_SEL_SC6_PA0_LPOV_WE', - 752: 'PH_PERF_SEL_SC6_PA0_EOP_WE', - 753: 'PH_PERF_SEL_SC6_PA0_DATA_FIFO_EOP_RD', - 754: 'PH_PERF_SEL_SC6_PA0_EOPG_WE', - 755: 'PH_PERF_SEL_SC6_PA0_DEALLOC_4_0_RD', - 756: 'PH_PERF_SEL_SC6_PA1_DATA_FIFO_RD', - 757: 'PH_PERF_SEL_SC6_PA1_DATA_FIFO_WE', - 758: 'PH_PERF_SEL_SC6_PA1_FIFO_EMPTY', - 759: 'PH_PERF_SEL_SC6_PA1_FIFO_FULL', - 760: 'PH_PERF_SEL_SC6_PA1_NULL_WE', - 761: 'PH_PERF_SEL_SC6_PA1_EVENT_WE', - 762: 'PH_PERF_SEL_SC6_PA1_FPOV_WE', - 763: 'PH_PERF_SEL_SC6_PA1_LPOV_WE', - 764: 'PH_PERF_SEL_SC6_PA1_EOP_WE', - 765: 'PH_PERF_SEL_SC6_PA1_DATA_FIFO_EOP_RD', - 766: 'PH_PERF_SEL_SC6_PA1_EOPG_WE', - 767: 'PH_PERF_SEL_SC6_PA1_DEALLOC_4_0_RD', - 768: 'PH_PERF_SEL_SC6_PA2_DATA_FIFO_RD', - 769: 'PH_PERF_SEL_SC6_PA2_DATA_FIFO_WE', - 770: 'PH_PERF_SEL_SC6_PA2_FIFO_EMPTY', - 771: 'PH_PERF_SEL_SC6_PA2_FIFO_FULL', - 772: 'PH_PERF_SEL_SC6_PA2_NULL_WE', - 773: 'PH_PERF_SEL_SC6_PA2_EVENT_WE', - 774: 'PH_PERF_SEL_SC6_PA2_FPOV_WE', - 775: 'PH_PERF_SEL_SC6_PA2_LPOV_WE', - 776: 'PH_PERF_SEL_SC6_PA2_EOP_WE', - 777: 'PH_PERF_SEL_SC6_PA2_DATA_FIFO_EOP_RD', - 778: 'PH_PERF_SEL_SC6_PA2_EOPG_WE', - 779: 'PH_PERF_SEL_SC6_PA2_DEALLOC_4_0_RD', - 780: 'PH_PERF_SEL_SC6_PA3_DATA_FIFO_RD', - 781: 'PH_PERF_SEL_SC6_PA3_DATA_FIFO_WE', - 782: 'PH_PERF_SEL_SC6_PA3_FIFO_EMPTY', - 783: 'PH_PERF_SEL_SC6_PA3_FIFO_FULL', - 784: 'PH_PERF_SEL_SC6_PA3_NULL_WE', - 785: 'PH_PERF_SEL_SC6_PA3_EVENT_WE', - 786: 'PH_PERF_SEL_SC6_PA3_FPOV_WE', - 787: 'PH_PERF_SEL_SC6_PA3_LPOV_WE', - 788: 'PH_PERF_SEL_SC6_PA3_EOP_WE', - 789: 'PH_PERF_SEL_SC6_PA3_DATA_FIFO_EOP_RD', - 790: 'PH_PERF_SEL_SC6_PA3_EOPG_WE', - 791: 'PH_PERF_SEL_SC6_PA3_DEALLOC_4_0_RD', - 792: 'PH_PERF_SEL_SC6_PA4_DATA_FIFO_RD', - 793: 'PH_PERF_SEL_SC6_PA4_DATA_FIFO_WE', - 794: 'PH_PERF_SEL_SC6_PA4_FIFO_EMPTY', - 795: 'PH_PERF_SEL_SC6_PA4_FIFO_FULL', - 796: 'PH_PERF_SEL_SC6_PA4_NULL_WE', - 797: 'PH_PERF_SEL_SC6_PA4_EVENT_WE', - 798: 'PH_PERF_SEL_SC6_PA4_FPOV_WE', - 799: 'PH_PERF_SEL_SC6_PA4_LPOV_WE', - 800: 'PH_PERF_SEL_SC6_PA4_EOP_WE', - 801: 'PH_PERF_SEL_SC6_PA4_DATA_FIFO_EOP_RD', - 802: 'PH_PERF_SEL_SC6_PA4_EOPG_WE', - 803: 'PH_PERF_SEL_SC6_PA4_DEALLOC_4_0_RD', - 804: 'PH_PERF_SEL_SC6_PA5_DATA_FIFO_RD', - 805: 'PH_PERF_SEL_SC6_PA5_DATA_FIFO_WE', - 806: 'PH_PERF_SEL_SC6_PA5_FIFO_EMPTY', - 807: 'PH_PERF_SEL_SC6_PA5_FIFO_FULL', - 808: 'PH_PERF_SEL_SC6_PA5_NULL_WE', - 809: 'PH_PERF_SEL_SC6_PA5_EVENT_WE', - 810: 'PH_PERF_SEL_SC6_PA5_FPOV_WE', - 811: 'PH_PERF_SEL_SC6_PA5_LPOV_WE', - 812: 'PH_PERF_SEL_SC6_PA5_EOP_WE', - 813: 'PH_PERF_SEL_SC6_PA5_DATA_FIFO_EOP_RD', - 814: 'PH_PERF_SEL_SC6_PA5_EOPG_WE', - 815: 'PH_PERF_SEL_SC6_PA5_DEALLOC_4_0_RD', - 816: 'PH_PERF_SEL_SC6_PA6_DATA_FIFO_RD', - 817: 'PH_PERF_SEL_SC6_PA6_DATA_FIFO_WE', - 818: 'PH_PERF_SEL_SC6_PA6_FIFO_EMPTY', - 819: 'PH_PERF_SEL_SC6_PA6_FIFO_FULL', - 820: 'PH_PERF_SEL_SC6_PA6_NULL_WE', - 821: 'PH_PERF_SEL_SC6_PA6_EVENT_WE', - 822: 'PH_PERF_SEL_SC6_PA6_FPOV_WE', - 823: 'PH_PERF_SEL_SC6_PA6_LPOV_WE', - 824: 'PH_PERF_SEL_SC6_PA6_EOP_WE', - 825: 'PH_PERF_SEL_SC6_PA6_DATA_FIFO_EOP_RD', - 826: 'PH_PERF_SEL_SC6_PA6_EOPG_WE', - 827: 'PH_PERF_SEL_SC6_PA6_DEALLOC_4_0_RD', - 828: 'PH_PERF_SEL_SC6_PA7_DATA_FIFO_RD', - 829: 'PH_PERF_SEL_SC6_PA7_DATA_FIFO_WE', - 830: 'PH_PERF_SEL_SC6_PA7_FIFO_EMPTY', - 831: 'PH_PERF_SEL_SC6_PA7_FIFO_FULL', - 832: 'PH_PERF_SEL_SC6_PA7_NULL_WE', - 833: 'PH_PERF_SEL_SC6_PA7_EVENT_WE', - 834: 'PH_PERF_SEL_SC6_PA7_FPOV_WE', - 835: 'PH_PERF_SEL_SC6_PA7_LPOV_WE', - 836: 'PH_PERF_SEL_SC6_PA7_EOP_WE', - 837: 'PH_PERF_SEL_SC6_PA7_DATA_FIFO_EOP_RD', - 838: 'PH_PERF_SEL_SC6_PA7_EOPG_WE', - 839: 'PH_PERF_SEL_SC6_PA7_DEALLOC_4_0_RD', - 840: 'PH_PERF_SEL_SC7_SRPS_WINDOW_VALID', - 841: 'PH_PERF_SEL_SC7_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 842: 'PH_PERF_SEL_SC7_ARB_XFC_ONLY_PRIM_CYCLES', - 843: 'PH_PERF_SEL_SC7_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 844: 'PH_PERF_SEL_SC7_ARB_STALLED_FROM_BELOW', - 845: 'PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE', - 846: 'PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 847: 'PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 848: 'PH_PERF_SEL_SC7_ARB_BUSY', - 849: 'PH_PERF_SEL_SC7_ARB_PA_BUSY_SOP', - 850: 'PH_PERF_SEL_SC7_ARB_EOP_POP_SYNC_POP', - 851: 'PH_PERF_SEL_SC7_ARB_EVENT_SYNC_POP', - 852: 'PH_PERF_SEL_SC7_PS_ENG_MULTICYCLE_BUBBLE', - 853: 'PH_PERF_SEL_SC7_EOP_SYNC_WINDOW', - 854: 'PH_PERF_SEL_SC7_BUSY_PROCESSING_MULTICYCLE_PRIM', - 855: 'PH_PERF_SEL_SC7_BUSY_CNT_NOT_ZERO', - 856: 'PH_PERF_SEL_SC7_SEND', - 857: 'PH_PERF_SEL_SC7_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 858: 'PH_PERF_SEL_SC7_CREDIT_AT_MAX', - 859: 'PH_PERF_SEL_SC7_CREDIT_AT_MAX_NO_PENDING_SEND', - 860: 'PH_PERF_SEL_SC7_GFX_PIPE0_TO_1_TRANSITION', - 861: 'PH_PERF_SEL_SC7_GFX_PIPE1_TO_0_TRANSITION', - 862: 'PH_PERF_SEL_SC7_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 863: 'PH_PERF_SEL_SC7_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 864: 'PH_PERF_SEL_SC7_PA0_DATA_FIFO_RD', - 865: 'PH_PERF_SEL_SC7_PA0_DATA_FIFO_WE', - 866: 'PH_PERF_SEL_SC7_PA0_FIFO_EMPTY', - 867: 'PH_PERF_SEL_SC7_PA0_FIFO_FULL', - 868: 'PH_PERF_SEL_SC7_PA0_NULL_WE', - 869: 'PH_PERF_SEL_SC7_PA0_EVENT_WE', - 870: 'PH_PERF_SEL_SC7_PA0_FPOV_WE', - 871: 'PH_PERF_SEL_SC7_PA0_LPOV_WE', - 872: 'PH_PERF_SEL_SC7_PA0_EOP_WE', - 873: 'PH_PERF_SEL_SC7_PA0_DATA_FIFO_EOP_RD', - 874: 'PH_PERF_SEL_SC7_PA0_EOPG_WE', - 875: 'PH_PERF_SEL_SC7_PA0_DEALLOC_4_0_RD', - 876: 'PH_PERF_SEL_SC7_PA1_DATA_FIFO_RD', - 877: 'PH_PERF_SEL_SC7_PA1_DATA_FIFO_WE', - 878: 'PH_PERF_SEL_SC7_PA1_FIFO_EMPTY', - 879: 'PH_PERF_SEL_SC7_PA1_FIFO_FULL', - 880: 'PH_PERF_SEL_SC7_PA1_NULL_WE', - 881: 'PH_PERF_SEL_SC7_PA1_EVENT_WE', - 882: 'PH_PERF_SEL_SC7_PA1_FPOV_WE', - 883: 'PH_PERF_SEL_SC7_PA1_LPOV_WE', - 884: 'PH_PERF_SEL_SC7_PA1_EOP_WE', - 885: 'PH_PERF_SEL_SC7_PA1_DATA_FIFO_EOP_RD', - 886: 'PH_PERF_SEL_SC7_PA1_EOPG_WE', - 887: 'PH_PERF_SEL_SC7_PA1_DEALLOC_4_0_RD', - 888: 'PH_PERF_SEL_SC7_PA2_DATA_FIFO_RD', - 889: 'PH_PERF_SEL_SC7_PA2_DATA_FIFO_WE', - 890: 'PH_PERF_SEL_SC7_PA2_FIFO_EMPTY', - 891: 'PH_PERF_SEL_SC7_PA2_FIFO_FULL', - 892: 'PH_PERF_SEL_SC7_PA2_NULL_WE', - 893: 'PH_PERF_SEL_SC7_PA2_EVENT_WE', - 894: 'PH_PERF_SEL_SC7_PA2_FPOV_WE', - 895: 'PH_PERF_SEL_SC7_PA2_LPOV_WE', - 896: 'PH_PERF_SEL_SC7_PA2_EOP_WE', - 897: 'PH_PERF_SEL_SC7_PA2_DATA_FIFO_EOP_RD', - 898: 'PH_PERF_SEL_SC7_PA2_EOPG_WE', - 899: 'PH_PERF_SEL_SC7_PA2_DEALLOC_4_0_RD', - 900: 'PH_PERF_SEL_SC7_PA3_DATA_FIFO_RD', - 901: 'PH_PERF_SEL_SC7_PA3_DATA_FIFO_WE', - 902: 'PH_PERF_SEL_SC7_PA3_FIFO_EMPTY', - 903: 'PH_PERF_SEL_SC7_PA3_FIFO_FULL', - 904: 'PH_PERF_SEL_SC7_PA3_NULL_WE', - 905: 'PH_PERF_SEL_SC7_PA3_EVENT_WE', - 906: 'PH_PERF_SEL_SC7_PA3_FPOV_WE', - 907: 'PH_PERF_SEL_SC7_PA3_LPOV_WE', - 908: 'PH_PERF_SEL_SC7_PA3_EOP_WE', - 909: 'PH_PERF_SEL_SC7_PA3_DATA_FIFO_EOP_RD', - 910: 'PH_PERF_SEL_SC7_PA3_EOPG_WE', - 911: 'PH_PERF_SEL_SC7_PA3_DEALLOC_4_0_RD', - 912: 'PH_PERF_SEL_SC7_PA4_DATA_FIFO_RD', - 913: 'PH_PERF_SEL_SC7_PA4_DATA_FIFO_WE', - 914: 'PH_PERF_SEL_SC7_PA4_FIFO_EMPTY', - 915: 'PH_PERF_SEL_SC7_PA4_FIFO_FULL', - 916: 'PH_PERF_SEL_SC7_PA4_NULL_WE', - 917: 'PH_PERF_SEL_SC7_PA4_EVENT_WE', - 918: 'PH_PERF_SEL_SC7_PA4_FPOV_WE', - 919: 'PH_PERF_SEL_SC7_PA4_LPOV_WE', - 920: 'PH_PERF_SEL_SC7_PA4_EOP_WE', - 921: 'PH_PERF_SEL_SC7_PA4_DATA_FIFO_EOP_RD', - 922: 'PH_PERF_SEL_SC7_PA4_EOPG_WE', - 923: 'PH_PERF_SEL_SC7_PA4_DEALLOC_4_0_RD', - 924: 'PH_PERF_SEL_SC7_PA5_DATA_FIFO_RD', - 925: 'PH_PERF_SEL_SC7_PA5_DATA_FIFO_WE', - 926: 'PH_PERF_SEL_SC7_PA5_FIFO_EMPTY', - 927: 'PH_PERF_SEL_SC7_PA5_FIFO_FULL', - 928: 'PH_PERF_SEL_SC7_PA5_NULL_WE', - 929: 'PH_PERF_SEL_SC7_PA5_EVENT_WE', - 930: 'PH_PERF_SEL_SC7_PA5_FPOV_WE', - 931: 'PH_PERF_SEL_SC7_PA5_LPOV_WE', - 932: 'PH_PERF_SEL_SC7_PA5_EOP_WE', - 933: 'PH_PERF_SEL_SC7_PA5_DATA_FIFO_EOP_RD', - 934: 'PH_PERF_SEL_SC7_PA5_EOPG_WE', - 935: 'PH_PERF_SEL_SC7_PA5_DEALLOC_4_0_RD', - 936: 'PH_PERF_SEL_SC7_PA6_DATA_FIFO_RD', - 937: 'PH_PERF_SEL_SC7_PA6_DATA_FIFO_WE', - 938: 'PH_PERF_SEL_SC7_PA6_FIFO_EMPTY', - 939: 'PH_PERF_SEL_SC7_PA6_FIFO_FULL', - 940: 'PH_PERF_SEL_SC7_PA6_NULL_WE', - 941: 'PH_PERF_SEL_SC7_PA6_EVENT_WE', - 942: 'PH_PERF_SEL_SC7_PA6_FPOV_WE', - 943: 'PH_PERF_SEL_SC7_PA6_LPOV_WE', - 944: 'PH_PERF_SEL_SC7_PA6_EOP_WE', - 945: 'PH_PERF_SEL_SC7_PA6_DATA_FIFO_EOP_RD', - 946: 'PH_PERF_SEL_SC7_PA6_EOPG_WE', - 947: 'PH_PERF_SEL_SC7_PA6_DEALLOC_4_0_RD', - 948: 'PH_PERF_SEL_SC7_PA7_DATA_FIFO_RD', - 949: 'PH_PERF_SEL_SC7_PA7_DATA_FIFO_WE', - 950: 'PH_PERF_SEL_SC7_PA7_FIFO_EMPTY', - 951: 'PH_PERF_SEL_SC7_PA7_FIFO_FULL', - 952: 'PH_PERF_SEL_SC7_PA7_NULL_WE', - 953: 'PH_PERF_SEL_SC7_PA7_EVENT_WE', - 954: 'PH_PERF_SEL_SC7_PA7_FPOV_WE', - 955: 'PH_PERF_SEL_SC7_PA7_LPOV_WE', - 956: 'PH_PERF_SEL_SC7_PA7_EOP_WE', - 957: 'PH_PERF_SEL_SC7_PA7_DATA_FIFO_EOP_RD', - 958: 'PH_PERF_SEL_SC7_PA7_EOPG_WE', - 959: 'PH_PERF_SEL_SC7_PA7_DEALLOC_4_0_RD', - 960: 'PH_PERF_SEL_1_SC_ARB_STALLED_FROM_BELOW', - 961: 'PH_PERF_SEL_2_SC_ARB_STALLED_FROM_BELOW', - 962: 'PH_PERF_SEL_3_SC_ARB_STALLED_FROM_BELOW', - 963: 'PH_PERF_SEL_4_SC_ARB_STALLED_FROM_BELOW', - 964: 'PH_PERF_SEL_5_SC_ARB_STALLED_FROM_BELOW', - 965: 'PH_PERF_SEL_6_SC_ARB_STALLED_FROM_BELOW', - 966: 'PH_PERF_SEL_7_SC_ARB_STALLED_FROM_BELOW', - 967: 'PH_PERF_SEL_8_SC_ARB_STALLED_FROM_BELOW', - 968: 'PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE', - 969: 'PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE', - 970: 'PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE', - 971: 'PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE', - 972: 'PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE', - 973: 'PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE', - 974: 'PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE', - 975: 'PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE', - 976: 'PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 977: 'PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 978: 'PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 979: 'PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 980: 'PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 981: 'PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 982: 'PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 983: 'PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 984: 'PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 985: 'PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 986: 'PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 987: 'PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 988: 'PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 989: 'PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 990: 'PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 991: 'PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 992: 'PH_PERF_SC0_FIFO_STATUS_0', - 993: 'PH_PERF_SC0_FIFO_STATUS_1', - 994: 'PH_PERF_SC0_FIFO_STATUS_2', - 995: 'PH_PERF_SC0_FIFO_STATUS_3', - 996: 'PH_PERF_SC1_FIFO_STATUS_0', - 997: 'PH_PERF_SC1_FIFO_STATUS_1', - 998: 'PH_PERF_SC1_FIFO_STATUS_2', - 999: 'PH_PERF_SC1_FIFO_STATUS_3', - 1000: 'PH_PERF_SC2_FIFO_STATUS_0', - 1001: 'PH_PERF_SC2_FIFO_STATUS_1', - 1002: 'PH_PERF_SC2_FIFO_STATUS_2', - 1003: 'PH_PERF_SC2_FIFO_STATUS_3', - 1004: 'PH_PERF_SC3_FIFO_STATUS_0', - 1005: 'PH_PERF_SC3_FIFO_STATUS_1', - 1006: 'PH_PERF_SC3_FIFO_STATUS_2', - 1007: 'PH_PERF_SC3_FIFO_STATUS_3', - 1008: 'PH_PERF_SC4_FIFO_STATUS_0', - 1009: 'PH_PERF_SC4_FIFO_STATUS_1', - 1010: 'PH_PERF_SC4_FIFO_STATUS_2', - 1011: 'PH_PERF_SC4_FIFO_STATUS_3', - 1012: 'PH_PERF_SC5_FIFO_STATUS_0', - 1013: 'PH_PERF_SC5_FIFO_STATUS_1', - 1014: 'PH_PERF_SC5_FIFO_STATUS_2', - 1015: 'PH_PERF_SC5_FIFO_STATUS_3', - 1016: 'PH_PERF_SC6_FIFO_STATUS_0', - 1017: 'PH_PERF_SC6_FIFO_STATUS_1', - 1018: 'PH_PERF_SC6_FIFO_STATUS_2', - 1019: 'PH_PERF_SC6_FIFO_STATUS_3', - 1020: 'PH_PERF_SC7_FIFO_STATUS_0', - 1021: 'PH_PERF_SC7_FIFO_STATUS_1', - 1022: 'PH_PERF_SC7_FIFO_STATUS_2', - 1023: 'PH_PERF_SC7_FIFO_STATUS_3', -} -PH_PERF_SEL_SC0_SRPS_WINDOW_VALID = 0 -PH_PERF_SEL_SC0_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 1 -PH_PERF_SEL_SC0_ARB_XFC_ONLY_PRIM_CYCLES = 2 -PH_PERF_SEL_SC0_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 3 -PH_PERF_SEL_SC0_ARB_STALLED_FROM_BELOW = 4 -PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE = 5 -PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 6 -PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 7 -PH_PERF_SEL_SC0_ARB_BUSY = 8 -PH_PERF_SEL_SC0_ARB_PA_BUSY_SOP = 9 -PH_PERF_SEL_SC0_ARB_EOP_POP_SYNC_POP = 10 -PH_PERF_SEL_SC0_ARB_EVENT_SYNC_POP = 11 -PH_PERF_SEL_SC0_PS_ENG_MULTICYCLE_BUBBLE = 12 -PH_PERF_SEL_SC0_EOP_SYNC_WINDOW = 13 -PH_PERF_SEL_SC0_BUSY_PROCESSING_MULTICYCLE_PRIM = 14 -PH_PERF_SEL_SC0_BUSY_CNT_NOT_ZERO = 15 -PH_PERF_SEL_SC0_SEND = 16 -PH_PERF_SEL_SC0_CREDIT_AT_ZERO_WITH_PENDING_SEND = 17 -PH_PERF_SEL_SC0_CREDIT_AT_MAX = 18 -PH_PERF_SEL_SC0_CREDIT_AT_MAX_NO_PENDING_SEND = 19 -PH_PERF_SEL_SC0_GFX_PIPE0_TO_1_TRANSITION = 20 -PH_PERF_SEL_SC0_GFX_PIPE1_TO_0_TRANSITION = 21 -PH_PERF_SEL_SC0_GFX_PIPE_PRIM_PROVOKED_TRANSITION = 22 -PH_PERF_SEL_SC0_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 23 -PH_PERF_SEL_SC0_PA0_DATA_FIFO_RD = 24 -PH_PERF_SEL_SC0_PA0_DATA_FIFO_WE = 25 -PH_PERF_SEL_SC0_PA0_FIFO_EMPTY = 26 -PH_PERF_SEL_SC0_PA0_FIFO_FULL = 27 -PH_PERF_SEL_SC0_PA0_NULL_WE = 28 -PH_PERF_SEL_SC0_PA0_EVENT_WE = 29 -PH_PERF_SEL_SC0_PA0_FPOV_WE = 30 -PH_PERF_SEL_SC0_PA0_LPOV_WE = 31 -PH_PERF_SEL_SC0_PA0_EOP_WE = 32 -PH_PERF_SEL_SC0_PA0_DATA_FIFO_EOP_RD = 33 -PH_PERF_SEL_SC0_PA0_EOPG_WE = 34 -PH_PERF_SEL_SC0_PA0_DEALLOC_4_0_RD = 35 -PH_PERF_SEL_SC0_PA1_DATA_FIFO_RD = 36 -PH_PERF_SEL_SC0_PA1_DATA_FIFO_WE = 37 -PH_PERF_SEL_SC0_PA1_FIFO_EMPTY = 38 -PH_PERF_SEL_SC0_PA1_FIFO_FULL = 39 -PH_PERF_SEL_SC0_PA1_NULL_WE = 40 -PH_PERF_SEL_SC0_PA1_EVENT_WE = 41 -PH_PERF_SEL_SC0_PA1_FPOV_WE = 42 -PH_PERF_SEL_SC0_PA1_LPOV_WE = 43 -PH_PERF_SEL_SC0_PA1_EOP_WE = 44 -PH_PERF_SEL_SC0_PA1_DATA_FIFO_EOP_RD = 45 -PH_PERF_SEL_SC0_PA1_EOPG_WE = 46 -PH_PERF_SEL_SC0_PA1_DEALLOC_4_0_RD = 47 -PH_PERF_SEL_SC0_PA2_DATA_FIFO_RD = 48 -PH_PERF_SEL_SC0_PA2_DATA_FIFO_WE = 49 -PH_PERF_SEL_SC0_PA2_FIFO_EMPTY = 50 -PH_PERF_SEL_SC0_PA2_FIFO_FULL = 51 -PH_PERF_SEL_SC0_PA2_NULL_WE = 52 -PH_PERF_SEL_SC0_PA2_EVENT_WE = 53 -PH_PERF_SEL_SC0_PA2_FPOV_WE = 54 -PH_PERF_SEL_SC0_PA2_LPOV_WE = 55 -PH_PERF_SEL_SC0_PA2_EOP_WE = 56 -PH_PERF_SEL_SC0_PA2_DATA_FIFO_EOP_RD = 57 -PH_PERF_SEL_SC0_PA2_EOPG_WE = 58 -PH_PERF_SEL_SC0_PA2_DEALLOC_4_0_RD = 59 -PH_PERF_SEL_SC0_PA3_DATA_FIFO_RD = 60 -PH_PERF_SEL_SC0_PA3_DATA_FIFO_WE = 61 -PH_PERF_SEL_SC0_PA3_FIFO_EMPTY = 62 -PH_PERF_SEL_SC0_PA3_FIFO_FULL = 63 -PH_PERF_SEL_SC0_PA3_NULL_WE = 64 -PH_PERF_SEL_SC0_PA3_EVENT_WE = 65 -PH_PERF_SEL_SC0_PA3_FPOV_WE = 66 -PH_PERF_SEL_SC0_PA3_LPOV_WE = 67 -PH_PERF_SEL_SC0_PA3_EOP_WE = 68 -PH_PERF_SEL_SC0_PA3_DATA_FIFO_EOP_RD = 69 -PH_PERF_SEL_SC0_PA3_EOPG_WE = 70 -PH_PERF_SEL_SC0_PA3_DEALLOC_4_0_RD = 71 -PH_PERF_SEL_SC0_PA4_DATA_FIFO_RD = 72 -PH_PERF_SEL_SC0_PA4_DATA_FIFO_WE = 73 -PH_PERF_SEL_SC0_PA4_FIFO_EMPTY = 74 -PH_PERF_SEL_SC0_PA4_FIFO_FULL = 75 -PH_PERF_SEL_SC0_PA4_NULL_WE = 76 -PH_PERF_SEL_SC0_PA4_EVENT_WE = 77 -PH_PERF_SEL_SC0_PA4_FPOV_WE = 78 -PH_PERF_SEL_SC0_PA4_LPOV_WE = 79 -PH_PERF_SEL_SC0_PA4_EOP_WE = 80 -PH_PERF_SEL_SC0_PA4_DATA_FIFO_EOP_RD = 81 -PH_PERF_SEL_SC0_PA4_EOPG_WE = 82 -PH_PERF_SEL_SC0_PA4_DEALLOC_4_0_RD = 83 -PH_PERF_SEL_SC0_PA5_DATA_FIFO_RD = 84 -PH_PERF_SEL_SC0_PA5_DATA_FIFO_WE = 85 -PH_PERF_SEL_SC0_PA5_FIFO_EMPTY = 86 -PH_PERF_SEL_SC0_PA5_FIFO_FULL = 87 -PH_PERF_SEL_SC0_PA5_NULL_WE = 88 -PH_PERF_SEL_SC0_PA5_EVENT_WE = 89 -PH_PERF_SEL_SC0_PA5_FPOV_WE = 90 -PH_PERF_SEL_SC0_PA5_LPOV_WE = 91 -PH_PERF_SEL_SC0_PA5_EOP_WE = 92 -PH_PERF_SEL_SC0_PA5_DATA_FIFO_EOP_RD = 93 -PH_PERF_SEL_SC0_PA5_EOPG_WE = 94 -PH_PERF_SEL_SC0_PA5_DEALLOC_4_0_RD = 95 -PH_PERF_SEL_SC0_PA6_DATA_FIFO_RD = 96 -PH_PERF_SEL_SC0_PA6_DATA_FIFO_WE = 97 -PH_PERF_SEL_SC0_PA6_FIFO_EMPTY = 98 -PH_PERF_SEL_SC0_PA6_FIFO_FULL = 99 -PH_PERF_SEL_SC0_PA6_NULL_WE = 100 -PH_PERF_SEL_SC0_PA6_EVENT_WE = 101 -PH_PERF_SEL_SC0_PA6_FPOV_WE = 102 -PH_PERF_SEL_SC0_PA6_LPOV_WE = 103 -PH_PERF_SEL_SC0_PA6_EOP_WE = 104 -PH_PERF_SEL_SC0_PA6_DATA_FIFO_EOP_RD = 105 -PH_PERF_SEL_SC0_PA6_EOPG_WE = 106 -PH_PERF_SEL_SC0_PA6_DEALLOC_4_0_RD = 107 -PH_PERF_SEL_SC0_PA7_DATA_FIFO_RD = 108 -PH_PERF_SEL_SC0_PA7_DATA_FIFO_WE = 109 -PH_PERF_SEL_SC0_PA7_FIFO_EMPTY = 110 -PH_PERF_SEL_SC0_PA7_FIFO_FULL = 111 -PH_PERF_SEL_SC0_PA7_NULL_WE = 112 -PH_PERF_SEL_SC0_PA7_EVENT_WE = 113 -PH_PERF_SEL_SC0_PA7_FPOV_WE = 114 -PH_PERF_SEL_SC0_PA7_LPOV_WE = 115 -PH_PERF_SEL_SC0_PA7_EOP_WE = 116 -PH_PERF_SEL_SC0_PA7_DATA_FIFO_EOP_RD = 117 -PH_PERF_SEL_SC0_PA7_EOPG_WE = 118 -PH_PERF_SEL_SC0_PA7_DEALLOC_4_0_RD = 119 -PH_PERF_SEL_SC1_SRPS_WINDOW_VALID = 120 -PH_PERF_SEL_SC1_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 121 -PH_PERF_SEL_SC1_ARB_XFC_ONLY_PRIM_CYCLES = 122 -PH_PERF_SEL_SC1_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 123 -PH_PERF_SEL_SC1_ARB_STALLED_FROM_BELOW = 124 -PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE = 125 -PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 126 -PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 127 -PH_PERF_SEL_SC1_ARB_BUSY = 128 -PH_PERF_SEL_SC1_ARB_PA_BUSY_SOP = 129 -PH_PERF_SEL_SC1_ARB_EOP_POP_SYNC_POP = 130 -PH_PERF_SEL_SC1_ARB_EVENT_SYNC_POP = 131 -PH_PERF_SEL_SC1_PS_ENG_MULTICYCLE_BUBBLE = 132 -PH_PERF_SEL_SC1_EOP_SYNC_WINDOW = 133 -PH_PERF_SEL_SC1_BUSY_PROCESSING_MULTICYCLE_PRIM = 134 -PH_PERF_SEL_SC1_BUSY_CNT_NOT_ZERO = 135 -PH_PERF_SEL_SC1_SEND = 136 -PH_PERF_SEL_SC1_CREDIT_AT_ZERO_WITH_PENDING_SEND = 137 -PH_PERF_SEL_SC1_CREDIT_AT_MAX = 138 -PH_PERF_SEL_SC1_CREDIT_AT_MAX_NO_PENDING_SEND = 139 -PH_PERF_SEL_SC1_GFX_PIPE0_TO_1_TRANSITION = 140 -PH_PERF_SEL_SC1_GFX_PIPE1_TO_0_TRANSITION = 141 -PH_PERF_SEL_SC1_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 142 -PH_PERF_SEL_SC1_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 143 -PH_PERF_SEL_SC1_PA0_DATA_FIFO_RD = 144 -PH_PERF_SEL_SC1_PA0_DATA_FIFO_WE = 145 -PH_PERF_SEL_SC1_PA0_FIFO_EMPTY = 146 -PH_PERF_SEL_SC1_PA0_FIFO_FULL = 147 -PH_PERF_SEL_SC1_PA0_NULL_WE = 148 -PH_PERF_SEL_SC1_PA0_EVENT_WE = 149 -PH_PERF_SEL_SC1_PA0_FPOV_WE = 150 -PH_PERF_SEL_SC1_PA0_LPOV_WE = 151 -PH_PERF_SEL_SC1_PA0_EOP_WE = 152 -PH_PERF_SEL_SC1_PA0_DATA_FIFO_EOP_RD = 153 -PH_PERF_SEL_SC1_PA0_EOPG_WE = 154 -PH_PERF_SEL_SC1_PA0_DEALLOC_4_0_RD = 155 -PH_PERF_SEL_SC1_PA1_DATA_FIFO_RD = 156 -PH_PERF_SEL_SC1_PA1_DATA_FIFO_WE = 157 -PH_PERF_SEL_SC1_PA1_FIFO_EMPTY = 158 -PH_PERF_SEL_SC1_PA1_FIFO_FULL = 159 -PH_PERF_SEL_SC1_PA1_NULL_WE = 160 -PH_PERF_SEL_SC1_PA1_EVENT_WE = 161 -PH_PERF_SEL_SC1_PA1_FPOV_WE = 162 -PH_PERF_SEL_SC1_PA1_LPOV_WE = 163 -PH_PERF_SEL_SC1_PA1_EOP_WE = 164 -PH_PERF_SEL_SC1_PA1_DATA_FIFO_EOP_RD = 165 -PH_PERF_SEL_SC1_PA1_EOPG_WE = 166 -PH_PERF_SEL_SC1_PA1_DEALLOC_4_0_RD = 167 -PH_PERF_SEL_SC1_PA2_DATA_FIFO_RD = 168 -PH_PERF_SEL_SC1_PA2_DATA_FIFO_WE = 169 -PH_PERF_SEL_SC1_PA2_FIFO_EMPTY = 170 -PH_PERF_SEL_SC1_PA2_FIFO_FULL = 171 -PH_PERF_SEL_SC1_PA2_NULL_WE = 172 -PH_PERF_SEL_SC1_PA2_EVENT_WE = 173 -PH_PERF_SEL_SC1_PA2_FPOV_WE = 174 -PH_PERF_SEL_SC1_PA2_LPOV_WE = 175 -PH_PERF_SEL_SC1_PA2_EOP_WE = 176 -PH_PERF_SEL_SC1_PA2_DATA_FIFO_EOP_RD = 177 -PH_PERF_SEL_SC1_PA2_EOPG_WE = 178 -PH_PERF_SEL_SC1_PA2_DEALLOC_4_0_RD = 179 -PH_PERF_SEL_SC1_PA3_DATA_FIFO_RD = 180 -PH_PERF_SEL_SC1_PA3_DATA_FIFO_WE = 181 -PH_PERF_SEL_SC1_PA3_FIFO_EMPTY = 182 -PH_PERF_SEL_SC1_PA3_FIFO_FULL = 183 -PH_PERF_SEL_SC1_PA3_NULL_WE = 184 -PH_PERF_SEL_SC1_PA3_EVENT_WE = 185 -PH_PERF_SEL_SC1_PA3_FPOV_WE = 186 -PH_PERF_SEL_SC1_PA3_LPOV_WE = 187 -PH_PERF_SEL_SC1_PA3_EOP_WE = 188 -PH_PERF_SEL_SC1_PA3_DATA_FIFO_EOP_RD = 189 -PH_PERF_SEL_SC1_PA3_EOPG_WE = 190 -PH_PERF_SEL_SC1_PA3_DEALLOC_4_0_RD = 191 -PH_PERF_SEL_SC1_PA4_DATA_FIFO_RD = 192 -PH_PERF_SEL_SC1_PA4_DATA_FIFO_WE = 193 -PH_PERF_SEL_SC1_PA4_FIFO_EMPTY = 194 -PH_PERF_SEL_SC1_PA4_FIFO_FULL = 195 -PH_PERF_SEL_SC1_PA4_NULL_WE = 196 -PH_PERF_SEL_SC1_PA4_EVENT_WE = 197 -PH_PERF_SEL_SC1_PA4_FPOV_WE = 198 -PH_PERF_SEL_SC1_PA4_LPOV_WE = 199 -PH_PERF_SEL_SC1_PA4_EOP_WE = 200 -PH_PERF_SEL_SC1_PA4_DATA_FIFO_EOP_RD = 201 -PH_PERF_SEL_SC1_PA4_EOPG_WE = 202 -PH_PERF_SEL_SC1_PA4_DEALLOC_4_0_RD = 203 -PH_PERF_SEL_SC1_PA5_DATA_FIFO_RD = 204 -PH_PERF_SEL_SC1_PA5_DATA_FIFO_WE = 205 -PH_PERF_SEL_SC1_PA5_FIFO_EMPTY = 206 -PH_PERF_SEL_SC1_PA5_FIFO_FULL = 207 -PH_PERF_SEL_SC1_PA5_NULL_WE = 208 -PH_PERF_SEL_SC1_PA5_EVENT_WE = 209 -PH_PERF_SEL_SC1_PA5_FPOV_WE = 210 -PH_PERF_SEL_SC1_PA5_LPOV_WE = 211 -PH_PERF_SEL_SC1_PA5_EOP_WE = 212 -PH_PERF_SEL_SC1_PA5_DATA_FIFO_EOP_RD = 213 -PH_PERF_SEL_SC1_PA5_EOPG_WE = 214 -PH_PERF_SEL_SC1_PA5_DEALLOC_4_0_RD = 215 -PH_PERF_SEL_SC1_PA6_DATA_FIFO_RD = 216 -PH_PERF_SEL_SC1_PA6_DATA_FIFO_WE = 217 -PH_PERF_SEL_SC1_PA6_FIFO_EMPTY = 218 -PH_PERF_SEL_SC1_PA6_FIFO_FULL = 219 -PH_PERF_SEL_SC1_PA6_NULL_WE = 220 -PH_PERF_SEL_SC1_PA6_EVENT_WE = 221 -PH_PERF_SEL_SC1_PA6_FPOV_WE = 222 -PH_PERF_SEL_SC1_PA6_LPOV_WE = 223 -PH_PERF_SEL_SC1_PA6_EOP_WE = 224 -PH_PERF_SEL_SC1_PA6_DATA_FIFO_EOP_RD = 225 -PH_PERF_SEL_SC1_PA6_EOPG_WE = 226 -PH_PERF_SEL_SC1_PA6_DEALLOC_4_0_RD = 227 -PH_PERF_SEL_SC1_PA7_DATA_FIFO_RD = 228 -PH_PERF_SEL_SC1_PA7_DATA_FIFO_WE = 229 -PH_PERF_SEL_SC1_PA7_FIFO_EMPTY = 230 -PH_PERF_SEL_SC1_PA7_FIFO_FULL = 231 -PH_PERF_SEL_SC1_PA7_NULL_WE = 232 -PH_PERF_SEL_SC1_PA7_EVENT_WE = 233 -PH_PERF_SEL_SC1_PA7_FPOV_WE = 234 -PH_PERF_SEL_SC1_PA7_LPOV_WE = 235 -PH_PERF_SEL_SC1_PA7_EOP_WE = 236 -PH_PERF_SEL_SC1_PA7_DATA_FIFO_EOP_RD = 237 -PH_PERF_SEL_SC1_PA7_EOPG_WE = 238 -PH_PERF_SEL_SC1_PA7_DEALLOC_4_0_RD = 239 -PH_PERF_SEL_SC2_SRPS_WINDOW_VALID = 240 -PH_PERF_SEL_SC2_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 241 -PH_PERF_SEL_SC2_ARB_XFC_ONLY_PRIM_CYCLES = 242 -PH_PERF_SEL_SC2_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 243 -PH_PERF_SEL_SC2_ARB_STALLED_FROM_BELOW = 244 -PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE = 245 -PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 246 -PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 247 -PH_PERF_SEL_SC2_ARB_BUSY = 248 -PH_PERF_SEL_SC2_ARB_PA_BUSY_SOP = 249 -PH_PERF_SEL_SC2_ARB_EOP_POP_SYNC_POP = 250 -PH_PERF_SEL_SC2_ARB_EVENT_SYNC_POP = 251 -PH_PERF_SEL_SC2_PS_ENG_MULTICYCLE_BUBBLE = 252 -PH_PERF_SEL_SC2_EOP_SYNC_WINDOW = 253 -PH_PERF_SEL_SC2_BUSY_PROCESSING_MULTICYCLE_PRIM = 254 -PH_PERF_SEL_SC2_BUSY_CNT_NOT_ZERO = 255 -PH_PERF_SEL_SC2_SEND = 256 -PH_PERF_SEL_SC2_CREDIT_AT_ZERO_WITH_PENDING_SEND = 257 -PH_PERF_SEL_SC2_CREDIT_AT_MAX = 258 -PH_PERF_SEL_SC2_CREDIT_AT_MAX_NO_PENDING_SEND = 259 -PH_PERF_SEL_SC2_GFX_PIPE0_TO_1_TRANSITION = 260 -PH_PERF_SEL_SC2_GFX_PIPE1_TO_0_TRANSITION = 261 -PH_PERF_SEL_SC2_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 262 -PH_PERF_SEL_SC2_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 263 -PH_PERF_SEL_SC2_PA0_DATA_FIFO_RD = 264 -PH_PERF_SEL_SC2_PA0_DATA_FIFO_WE = 265 -PH_PERF_SEL_SC2_PA0_FIFO_EMPTY = 266 -PH_PERF_SEL_SC2_PA0_FIFO_FULL = 267 -PH_PERF_SEL_SC2_PA0_NULL_WE = 268 -PH_PERF_SEL_SC2_PA0_EVENT_WE = 269 -PH_PERF_SEL_SC2_PA0_FPOV_WE = 270 -PH_PERF_SEL_SC2_PA0_LPOV_WE = 271 -PH_PERF_SEL_SC2_PA0_EOP_WE = 272 -PH_PERF_SEL_SC2_PA0_DATA_FIFO_EOP_RD = 273 -PH_PERF_SEL_SC2_PA0_EOPG_WE = 274 -PH_PERF_SEL_SC2_PA0_DEALLOC_4_0_RD = 275 -PH_PERF_SEL_SC2_PA1_DATA_FIFO_RD = 276 -PH_PERF_SEL_SC2_PA1_DATA_FIFO_WE = 277 -PH_PERF_SEL_SC2_PA1_FIFO_EMPTY = 278 -PH_PERF_SEL_SC2_PA1_FIFO_FULL = 279 -PH_PERF_SEL_SC2_PA1_NULL_WE = 280 -PH_PERF_SEL_SC2_PA1_EVENT_WE = 281 -PH_PERF_SEL_SC2_PA1_FPOV_WE = 282 -PH_PERF_SEL_SC2_PA1_LPOV_WE = 283 -PH_PERF_SEL_SC2_PA1_EOP_WE = 284 -PH_PERF_SEL_SC2_PA1_DATA_FIFO_EOP_RD = 285 -PH_PERF_SEL_SC2_PA1_EOPG_WE = 286 -PH_PERF_SEL_SC2_PA1_DEALLOC_4_0_RD = 287 -PH_PERF_SEL_SC2_PA2_DATA_FIFO_RD = 288 -PH_PERF_SEL_SC2_PA2_DATA_FIFO_WE = 289 -PH_PERF_SEL_SC2_PA2_FIFO_EMPTY = 290 -PH_PERF_SEL_SC2_PA2_FIFO_FULL = 291 -PH_PERF_SEL_SC2_PA2_NULL_WE = 292 -PH_PERF_SEL_SC2_PA2_EVENT_WE = 293 -PH_PERF_SEL_SC2_PA2_FPOV_WE = 294 -PH_PERF_SEL_SC2_PA2_LPOV_WE = 295 -PH_PERF_SEL_SC2_PA2_EOP_WE = 296 -PH_PERF_SEL_SC2_PA2_DATA_FIFO_EOP_RD = 297 -PH_PERF_SEL_SC2_PA2_EOPG_WE = 298 -PH_PERF_SEL_SC2_PA2_DEALLOC_4_0_RD = 299 -PH_PERF_SEL_SC2_PA3_DATA_FIFO_RD = 300 -PH_PERF_SEL_SC2_PA3_DATA_FIFO_WE = 301 -PH_PERF_SEL_SC2_PA3_FIFO_EMPTY = 302 -PH_PERF_SEL_SC2_PA3_FIFO_FULL = 303 -PH_PERF_SEL_SC2_PA3_NULL_WE = 304 -PH_PERF_SEL_SC2_PA3_EVENT_WE = 305 -PH_PERF_SEL_SC2_PA3_FPOV_WE = 306 -PH_PERF_SEL_SC2_PA3_LPOV_WE = 307 -PH_PERF_SEL_SC2_PA3_EOP_WE = 308 -PH_PERF_SEL_SC2_PA3_DATA_FIFO_EOP_RD = 309 -PH_PERF_SEL_SC2_PA3_EOPG_WE = 310 -PH_PERF_SEL_SC2_PA3_DEALLOC_4_0_RD = 311 -PH_PERF_SEL_SC2_PA4_DATA_FIFO_RD = 312 -PH_PERF_SEL_SC2_PA4_DATA_FIFO_WE = 313 -PH_PERF_SEL_SC2_PA4_FIFO_EMPTY = 314 -PH_PERF_SEL_SC2_PA4_FIFO_FULL = 315 -PH_PERF_SEL_SC2_PA4_NULL_WE = 316 -PH_PERF_SEL_SC2_PA4_EVENT_WE = 317 -PH_PERF_SEL_SC2_PA4_FPOV_WE = 318 -PH_PERF_SEL_SC2_PA4_LPOV_WE = 319 -PH_PERF_SEL_SC2_PA4_EOP_WE = 320 -PH_PERF_SEL_SC2_PA4_DATA_FIFO_EOP_RD = 321 -PH_PERF_SEL_SC2_PA4_EOPG_WE = 322 -PH_PERF_SEL_SC2_PA4_DEALLOC_4_0_RD = 323 -PH_PERF_SEL_SC2_PA5_DATA_FIFO_RD = 324 -PH_PERF_SEL_SC2_PA5_DATA_FIFO_WE = 325 -PH_PERF_SEL_SC2_PA5_FIFO_EMPTY = 326 -PH_PERF_SEL_SC2_PA5_FIFO_FULL = 327 -PH_PERF_SEL_SC2_PA5_NULL_WE = 328 -PH_PERF_SEL_SC2_PA5_EVENT_WE = 329 -PH_PERF_SEL_SC2_PA5_FPOV_WE = 330 -PH_PERF_SEL_SC2_PA5_LPOV_WE = 331 -PH_PERF_SEL_SC2_PA5_EOP_WE = 332 -PH_PERF_SEL_SC2_PA5_DATA_FIFO_EOP_RD = 333 -PH_PERF_SEL_SC2_PA5_EOPG_WE = 334 -PH_PERF_SEL_SC2_PA5_DEALLOC_4_0_RD = 335 -PH_PERF_SEL_SC2_PA6_DATA_FIFO_RD = 336 -PH_PERF_SEL_SC2_PA6_DATA_FIFO_WE = 337 -PH_PERF_SEL_SC2_PA6_FIFO_EMPTY = 338 -PH_PERF_SEL_SC2_PA6_FIFO_FULL = 339 -PH_PERF_SEL_SC2_PA6_NULL_WE = 340 -PH_PERF_SEL_SC2_PA6_EVENT_WE = 341 -PH_PERF_SEL_SC2_PA6_FPOV_WE = 342 -PH_PERF_SEL_SC2_PA6_LPOV_WE = 343 -PH_PERF_SEL_SC2_PA6_EOP_WE = 344 -PH_PERF_SEL_SC2_PA6_DATA_FIFO_EOP_RD = 345 -PH_PERF_SEL_SC2_PA6_EOPG_WE = 346 -PH_PERF_SEL_SC2_PA6_DEALLOC_4_0_RD = 347 -PH_PERF_SEL_SC2_PA7_DATA_FIFO_RD = 348 -PH_PERF_SEL_SC2_PA7_DATA_FIFO_WE = 349 -PH_PERF_SEL_SC2_PA7_FIFO_EMPTY = 350 -PH_PERF_SEL_SC2_PA7_FIFO_FULL = 351 -PH_PERF_SEL_SC2_PA7_NULL_WE = 352 -PH_PERF_SEL_SC2_PA7_EVENT_WE = 353 -PH_PERF_SEL_SC2_PA7_FPOV_WE = 354 -PH_PERF_SEL_SC2_PA7_LPOV_WE = 355 -PH_PERF_SEL_SC2_PA7_EOP_WE = 356 -PH_PERF_SEL_SC2_PA7_DATA_FIFO_EOP_RD = 357 -PH_PERF_SEL_SC2_PA7_EOPG_WE = 358 -PH_PERF_SEL_SC2_PA7_DEALLOC_4_0_RD = 359 -PH_PERF_SEL_SC3_SRPS_WINDOW_VALID = 360 -PH_PERF_SEL_SC3_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 361 -PH_PERF_SEL_SC3_ARB_XFC_ONLY_PRIM_CYCLES = 362 -PH_PERF_SEL_SC3_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 363 -PH_PERF_SEL_SC3_ARB_STALLED_FROM_BELOW = 364 -PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE = 365 -PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 366 -PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 367 -PH_PERF_SEL_SC3_ARB_BUSY = 368 -PH_PERF_SEL_SC3_ARB_PA_BUSY_SOP = 369 -PH_PERF_SEL_SC3_ARB_EOP_POP_SYNC_POP = 370 -PH_PERF_SEL_SC3_ARB_EVENT_SYNC_POP = 371 -PH_PERF_SEL_SC3_PS_ENG_MULTICYCLE_BUBBLE = 372 -PH_PERF_SEL_SC3_EOP_SYNC_WINDOW = 373 -PH_PERF_SEL_SC3_BUSY_PROCESSING_MULTICYCLE_PRIM = 374 -PH_PERF_SEL_SC3_BUSY_CNT_NOT_ZERO = 375 -PH_PERF_SEL_SC3_SEND = 376 -PH_PERF_SEL_SC3_CREDIT_AT_ZERO_WITH_PENDING_SEND = 377 -PH_PERF_SEL_SC3_CREDIT_AT_MAX = 378 -PH_PERF_SEL_SC3_CREDIT_AT_MAX_NO_PENDING_SEND = 379 -PH_PERF_SEL_SC3_GFX_PIPE0_TO_1_TRANSITION = 380 -PH_PERF_SEL_SC3_GFX_PIPE1_TO_0_TRANSITION = 381 -PH_PERF_SEL_SC3_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 382 -PH_PERF_SEL_SC3_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 383 -PH_PERF_SEL_SC3_PA0_DATA_FIFO_RD = 384 -PH_PERF_SEL_SC3_PA0_DATA_FIFO_WE = 385 -PH_PERF_SEL_SC3_PA0_FIFO_EMPTY = 386 -PH_PERF_SEL_SC3_PA0_FIFO_FULL = 387 -PH_PERF_SEL_SC3_PA0_NULL_WE = 388 -PH_PERF_SEL_SC3_PA0_EVENT_WE = 389 -PH_PERF_SEL_SC3_PA0_FPOV_WE = 390 -PH_PERF_SEL_SC3_PA0_LPOV_WE = 391 -PH_PERF_SEL_SC3_PA0_EOP_WE = 392 -PH_PERF_SEL_SC3_PA0_DATA_FIFO_EOP_RD = 393 -PH_PERF_SEL_SC3_PA0_EOPG_WE = 394 -PH_PERF_SEL_SC3_PA0_DEALLOC_4_0_RD = 395 -PH_PERF_SEL_SC3_PA1_DATA_FIFO_RD = 396 -PH_PERF_SEL_SC3_PA1_DATA_FIFO_WE = 397 -PH_PERF_SEL_SC3_PA1_FIFO_EMPTY = 398 -PH_PERF_SEL_SC3_PA1_FIFO_FULL = 399 -PH_PERF_SEL_SC3_PA1_NULL_WE = 400 -PH_PERF_SEL_SC3_PA1_EVENT_WE = 401 -PH_PERF_SEL_SC3_PA1_FPOV_WE = 402 -PH_PERF_SEL_SC3_PA1_LPOV_WE = 403 -PH_PERF_SEL_SC3_PA1_EOP_WE = 404 -PH_PERF_SEL_SC3_PA1_DATA_FIFO_EOP_RD = 405 -PH_PERF_SEL_SC3_PA1_EOPG_WE = 406 -PH_PERF_SEL_SC3_PA1_DEALLOC_4_0_RD = 407 -PH_PERF_SEL_SC3_PA2_DATA_FIFO_RD = 408 -PH_PERF_SEL_SC3_PA2_DATA_FIFO_WE = 409 -PH_PERF_SEL_SC3_PA2_FIFO_EMPTY = 410 -PH_PERF_SEL_SC3_PA2_FIFO_FULL = 411 -PH_PERF_SEL_SC3_PA2_NULL_WE = 412 -PH_PERF_SEL_SC3_PA2_EVENT_WE = 413 -PH_PERF_SEL_SC3_PA2_FPOV_WE = 414 -PH_PERF_SEL_SC3_PA2_LPOV_WE = 415 -PH_PERF_SEL_SC3_PA2_EOP_WE = 416 -PH_PERF_SEL_SC3_PA2_DATA_FIFO_EOP_RD = 417 -PH_PERF_SEL_SC3_PA2_EOPG_WE = 418 -PH_PERF_SEL_SC3_PA2_DEALLOC_4_0_RD = 419 -PH_PERF_SEL_SC3_PA3_DATA_FIFO_RD = 420 -PH_PERF_SEL_SC3_PA3_DATA_FIFO_WE = 421 -PH_PERF_SEL_SC3_PA3_FIFO_EMPTY = 422 -PH_PERF_SEL_SC3_PA3_FIFO_FULL = 423 -PH_PERF_SEL_SC3_PA3_NULL_WE = 424 -PH_PERF_SEL_SC3_PA3_EVENT_WE = 425 -PH_PERF_SEL_SC3_PA3_FPOV_WE = 426 -PH_PERF_SEL_SC3_PA3_LPOV_WE = 427 -PH_PERF_SEL_SC3_PA3_EOP_WE = 428 -PH_PERF_SEL_SC3_PA3_DATA_FIFO_EOP_RD = 429 -PH_PERF_SEL_SC3_PA3_EOPG_WE = 430 -PH_PERF_SEL_SC3_PA3_DEALLOC_4_0_RD = 431 -PH_PERF_SEL_SC3_PA4_DATA_FIFO_RD = 432 -PH_PERF_SEL_SC3_PA4_DATA_FIFO_WE = 433 -PH_PERF_SEL_SC3_PA4_FIFO_EMPTY = 434 -PH_PERF_SEL_SC3_PA4_FIFO_FULL = 435 -PH_PERF_SEL_SC3_PA4_NULL_WE = 436 -PH_PERF_SEL_SC3_PA4_EVENT_WE = 437 -PH_PERF_SEL_SC3_PA4_FPOV_WE = 438 -PH_PERF_SEL_SC3_PA4_LPOV_WE = 439 -PH_PERF_SEL_SC3_PA4_EOP_WE = 440 -PH_PERF_SEL_SC3_PA4_DATA_FIFO_EOP_RD = 441 -PH_PERF_SEL_SC3_PA4_EOPG_WE = 442 -PH_PERF_SEL_SC3_PA4_DEALLOC_4_0_RD = 443 -PH_PERF_SEL_SC3_PA5_DATA_FIFO_RD = 444 -PH_PERF_SEL_SC3_PA5_DATA_FIFO_WE = 445 -PH_PERF_SEL_SC3_PA5_FIFO_EMPTY = 446 -PH_PERF_SEL_SC3_PA5_FIFO_FULL = 447 -PH_PERF_SEL_SC3_PA5_NULL_WE = 448 -PH_PERF_SEL_SC3_PA5_EVENT_WE = 449 -PH_PERF_SEL_SC3_PA5_FPOV_WE = 450 -PH_PERF_SEL_SC3_PA5_LPOV_WE = 451 -PH_PERF_SEL_SC3_PA5_EOP_WE = 452 -PH_PERF_SEL_SC3_PA5_DATA_FIFO_EOP_RD = 453 -PH_PERF_SEL_SC3_PA5_EOPG_WE = 454 -PH_PERF_SEL_SC3_PA5_DEALLOC_4_0_RD = 455 -PH_PERF_SEL_SC3_PA6_DATA_FIFO_RD = 456 -PH_PERF_SEL_SC3_PA6_DATA_FIFO_WE = 457 -PH_PERF_SEL_SC3_PA6_FIFO_EMPTY = 458 -PH_PERF_SEL_SC3_PA6_FIFO_FULL = 459 -PH_PERF_SEL_SC3_PA6_NULL_WE = 460 -PH_PERF_SEL_SC3_PA6_EVENT_WE = 461 -PH_PERF_SEL_SC3_PA6_FPOV_WE = 462 -PH_PERF_SEL_SC3_PA6_LPOV_WE = 463 -PH_PERF_SEL_SC3_PA6_EOP_WE = 464 -PH_PERF_SEL_SC3_PA6_DATA_FIFO_EOP_RD = 465 -PH_PERF_SEL_SC3_PA6_EOPG_WE = 466 -PH_PERF_SEL_SC3_PA6_DEALLOC_4_0_RD = 467 -PH_PERF_SEL_SC3_PA7_DATA_FIFO_RD = 468 -PH_PERF_SEL_SC3_PA7_DATA_FIFO_WE = 469 -PH_PERF_SEL_SC3_PA7_FIFO_EMPTY = 470 -PH_PERF_SEL_SC3_PA7_FIFO_FULL = 471 -PH_PERF_SEL_SC3_PA7_NULL_WE = 472 -PH_PERF_SEL_SC3_PA7_EVENT_WE = 473 -PH_PERF_SEL_SC3_PA7_FPOV_WE = 474 -PH_PERF_SEL_SC3_PA7_LPOV_WE = 475 -PH_PERF_SEL_SC3_PA7_EOP_WE = 476 -PH_PERF_SEL_SC3_PA7_DATA_FIFO_EOP_RD = 477 -PH_PERF_SEL_SC3_PA7_EOPG_WE = 478 -PH_PERF_SEL_SC3_PA7_DEALLOC_4_0_RD = 479 -PH_PERF_SEL_SC4_SRPS_WINDOW_VALID = 480 -PH_PERF_SEL_SC4_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 481 -PH_PERF_SEL_SC4_ARB_XFC_ONLY_PRIM_CYCLES = 482 -PH_PERF_SEL_SC4_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 483 -PH_PERF_SEL_SC4_ARB_STALLED_FROM_BELOW = 484 -PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE = 485 -PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 486 -PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 487 -PH_PERF_SEL_SC4_ARB_BUSY = 488 -PH_PERF_SEL_SC4_ARB_PA_BUSY_SOP = 489 -PH_PERF_SEL_SC4_ARB_EOP_POP_SYNC_POP = 490 -PH_PERF_SEL_SC4_ARB_EVENT_SYNC_POP = 491 -PH_PERF_SEL_SC4_PS_ENG_MULTICYCLE_BUBBLE = 492 -PH_PERF_SEL_SC4_EOP_SYNC_WINDOW = 493 -PH_PERF_SEL_SC4_BUSY_PROCESSING_MULTICYCLE_PRIM = 494 -PH_PERF_SEL_SC4_BUSY_CNT_NOT_ZERO = 495 -PH_PERF_SEL_SC4_SEND = 496 -PH_PERF_SEL_SC4_CREDIT_AT_ZERO_WITH_PENDING_SEND = 497 -PH_PERF_SEL_SC4_CREDIT_AT_MAX = 498 -PH_PERF_SEL_SC4_CREDIT_AT_MAX_NO_PENDING_SEND = 499 -PH_PERF_SEL_SC4_GFX_PIPE0_TO_1_TRANSITION = 500 -PH_PERF_SEL_SC4_GFX_PIPE1_TO_0_TRANSITION = 501 -PH_PERF_SEL_SC4_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 502 -PH_PERF_SEL_SC4_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 503 -PH_PERF_SEL_SC4_PA0_DATA_FIFO_RD = 504 -PH_PERF_SEL_SC4_PA0_DATA_FIFO_WE = 505 -PH_PERF_SEL_SC4_PA0_FIFO_EMPTY = 506 -PH_PERF_SEL_SC4_PA0_FIFO_FULL = 507 -PH_PERF_SEL_SC4_PA0_NULL_WE = 508 -PH_PERF_SEL_SC4_PA0_EVENT_WE = 509 -PH_PERF_SEL_SC4_PA0_FPOV_WE = 510 -PH_PERF_SEL_SC4_PA0_LPOV_WE = 511 -PH_PERF_SEL_SC4_PA0_EOP_WE = 512 -PH_PERF_SEL_SC4_PA0_DATA_FIFO_EOP_RD = 513 -PH_PERF_SEL_SC4_PA0_EOPG_WE = 514 -PH_PERF_SEL_SC4_PA0_DEALLOC_4_0_RD = 515 -PH_PERF_SEL_SC4_PA1_DATA_FIFO_RD = 516 -PH_PERF_SEL_SC4_PA1_DATA_FIFO_WE = 517 -PH_PERF_SEL_SC4_PA1_FIFO_EMPTY = 518 -PH_PERF_SEL_SC4_PA1_FIFO_FULL = 519 -PH_PERF_SEL_SC4_PA1_NULL_WE = 520 -PH_PERF_SEL_SC4_PA1_EVENT_WE = 521 -PH_PERF_SEL_SC4_PA1_FPOV_WE = 522 -PH_PERF_SEL_SC4_PA1_LPOV_WE = 523 -PH_PERF_SEL_SC4_PA1_EOP_WE = 524 -PH_PERF_SEL_SC4_PA1_DATA_FIFO_EOP_RD = 525 -PH_PERF_SEL_SC4_PA1_EOPG_WE = 526 -PH_PERF_SEL_SC4_PA1_DEALLOC_4_0_RD = 527 -PH_PERF_SEL_SC4_PA2_DATA_FIFO_RD = 528 -PH_PERF_SEL_SC4_PA2_DATA_FIFO_WE = 529 -PH_PERF_SEL_SC4_PA2_FIFO_EMPTY = 530 -PH_PERF_SEL_SC4_PA2_FIFO_FULL = 531 -PH_PERF_SEL_SC4_PA2_NULL_WE = 532 -PH_PERF_SEL_SC4_PA2_EVENT_WE = 533 -PH_PERF_SEL_SC4_PA2_FPOV_WE = 534 -PH_PERF_SEL_SC4_PA2_LPOV_WE = 535 -PH_PERF_SEL_SC4_PA2_EOP_WE = 536 -PH_PERF_SEL_SC4_PA2_DATA_FIFO_EOP_RD = 537 -PH_PERF_SEL_SC4_PA2_EOPG_WE = 538 -PH_PERF_SEL_SC4_PA2_DEALLOC_4_0_RD = 539 -PH_PERF_SEL_SC4_PA3_DATA_FIFO_RD = 540 -PH_PERF_SEL_SC4_PA3_DATA_FIFO_WE = 541 -PH_PERF_SEL_SC4_PA3_FIFO_EMPTY = 542 -PH_PERF_SEL_SC4_PA3_FIFO_FULL = 543 -PH_PERF_SEL_SC4_PA3_NULL_WE = 544 -PH_PERF_SEL_SC4_PA3_EVENT_WE = 545 -PH_PERF_SEL_SC4_PA3_FPOV_WE = 546 -PH_PERF_SEL_SC4_PA3_LPOV_WE = 547 -PH_PERF_SEL_SC4_PA3_EOP_WE = 548 -PH_PERF_SEL_SC4_PA3_DATA_FIFO_EOP_RD = 549 -PH_PERF_SEL_SC4_PA3_EOPG_WE = 550 -PH_PERF_SEL_SC4_PA3_DEALLOC_4_0_RD = 551 -PH_PERF_SEL_SC4_PA4_DATA_FIFO_RD = 552 -PH_PERF_SEL_SC4_PA4_DATA_FIFO_WE = 553 -PH_PERF_SEL_SC4_PA4_FIFO_EMPTY = 554 -PH_PERF_SEL_SC4_PA4_FIFO_FULL = 555 -PH_PERF_SEL_SC4_PA4_NULL_WE = 556 -PH_PERF_SEL_SC4_PA4_EVENT_WE = 557 -PH_PERF_SEL_SC4_PA4_FPOV_WE = 558 -PH_PERF_SEL_SC4_PA4_LPOV_WE = 559 -PH_PERF_SEL_SC4_PA4_EOP_WE = 560 -PH_PERF_SEL_SC4_PA4_DATA_FIFO_EOP_RD = 561 -PH_PERF_SEL_SC4_PA4_EOPG_WE = 562 -PH_PERF_SEL_SC4_PA4_DEALLOC_4_0_RD = 563 -PH_PERF_SEL_SC4_PA5_DATA_FIFO_RD = 564 -PH_PERF_SEL_SC4_PA5_DATA_FIFO_WE = 565 -PH_PERF_SEL_SC4_PA5_FIFO_EMPTY = 566 -PH_PERF_SEL_SC4_PA5_FIFO_FULL = 567 -PH_PERF_SEL_SC4_PA5_NULL_WE = 568 -PH_PERF_SEL_SC4_PA5_EVENT_WE = 569 -PH_PERF_SEL_SC4_PA5_FPOV_WE = 570 -PH_PERF_SEL_SC4_PA5_LPOV_WE = 571 -PH_PERF_SEL_SC4_PA5_EOP_WE = 572 -PH_PERF_SEL_SC4_PA5_DATA_FIFO_EOP_RD = 573 -PH_PERF_SEL_SC4_PA5_EOPG_WE = 574 -PH_PERF_SEL_SC4_PA5_DEALLOC_4_0_RD = 575 -PH_PERF_SEL_SC4_PA6_DATA_FIFO_RD = 576 -PH_PERF_SEL_SC4_PA6_DATA_FIFO_WE = 577 -PH_PERF_SEL_SC4_PA6_FIFO_EMPTY = 578 -PH_PERF_SEL_SC4_PA6_FIFO_FULL = 579 -PH_PERF_SEL_SC4_PA6_NULL_WE = 580 -PH_PERF_SEL_SC4_PA6_EVENT_WE = 581 -PH_PERF_SEL_SC4_PA6_FPOV_WE = 582 -PH_PERF_SEL_SC4_PA6_LPOV_WE = 583 -PH_PERF_SEL_SC4_PA6_EOP_WE = 584 -PH_PERF_SEL_SC4_PA6_DATA_FIFO_EOP_RD = 585 -PH_PERF_SEL_SC4_PA6_EOPG_WE = 586 -PH_PERF_SEL_SC4_PA6_DEALLOC_4_0_RD = 587 -PH_PERF_SEL_SC4_PA7_DATA_FIFO_RD = 588 -PH_PERF_SEL_SC4_PA7_DATA_FIFO_WE = 589 -PH_PERF_SEL_SC4_PA7_FIFO_EMPTY = 590 -PH_PERF_SEL_SC4_PA7_FIFO_FULL = 591 -PH_PERF_SEL_SC4_PA7_NULL_WE = 592 -PH_PERF_SEL_SC4_PA7_EVENT_WE = 593 -PH_PERF_SEL_SC4_PA7_FPOV_WE = 594 -PH_PERF_SEL_SC4_PA7_LPOV_WE = 595 -PH_PERF_SEL_SC4_PA7_EOP_WE = 596 -PH_PERF_SEL_SC4_PA7_DATA_FIFO_EOP_RD = 597 -PH_PERF_SEL_SC4_PA7_EOPG_WE = 598 -PH_PERF_SEL_SC4_PA7_DEALLOC_4_0_RD = 599 -PH_PERF_SEL_SC5_SRPS_WINDOW_VALID = 600 -PH_PERF_SEL_SC5_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 601 -PH_PERF_SEL_SC5_ARB_XFC_ONLY_PRIM_CYCLES = 602 -PH_PERF_SEL_SC5_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 603 -PH_PERF_SEL_SC5_ARB_STALLED_FROM_BELOW = 604 -PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE = 605 -PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 606 -PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 607 -PH_PERF_SEL_SC5_ARB_BUSY = 608 -PH_PERF_SEL_SC5_ARB_PA_BUSY_SOP = 609 -PH_PERF_SEL_SC5_ARB_EOP_POP_SYNC_POP = 610 -PH_PERF_SEL_SC5_ARB_EVENT_SYNC_POP = 611 -PH_PERF_SEL_SC5_PS_ENG_MULTICYCLE_BUBBLE = 612 -PH_PERF_SEL_SC5_EOP_SYNC_WINDOW = 613 -PH_PERF_SEL_SC5_BUSY_PROCESSING_MULTICYCLE_PRIM = 614 -PH_PERF_SEL_SC5_BUSY_CNT_NOT_ZERO = 615 -PH_PERF_SEL_SC5_SEND = 616 -PH_PERF_SEL_SC5_CREDIT_AT_ZERO_WITH_PENDING_SEND = 617 -PH_PERF_SEL_SC5_CREDIT_AT_MAX = 618 -PH_PERF_SEL_SC5_CREDIT_AT_MAX_NO_PENDING_SEND = 619 -PH_PERF_SEL_SC5_GFX_PIPE0_TO_1_TRANSITION = 620 -PH_PERF_SEL_SC5_GFX_PIPE1_TO_0_TRANSITION = 621 -PH_PERF_SEL_SC5_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 622 -PH_PERF_SEL_SC5_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 623 -PH_PERF_SEL_SC5_PA0_DATA_FIFO_RD = 624 -PH_PERF_SEL_SC5_PA0_DATA_FIFO_WE = 625 -PH_PERF_SEL_SC5_PA0_FIFO_EMPTY = 626 -PH_PERF_SEL_SC5_PA0_FIFO_FULL = 627 -PH_PERF_SEL_SC5_PA0_NULL_WE = 628 -PH_PERF_SEL_SC5_PA0_EVENT_WE = 629 -PH_PERF_SEL_SC5_PA0_FPOV_WE = 630 -PH_PERF_SEL_SC5_PA0_LPOV_WE = 631 -PH_PERF_SEL_SC5_PA0_EOP_WE = 632 -PH_PERF_SEL_SC5_PA0_DATA_FIFO_EOP_RD = 633 -PH_PERF_SEL_SC5_PA0_EOPG_WE = 634 -PH_PERF_SEL_SC5_PA0_DEALLOC_4_0_RD = 635 -PH_PERF_SEL_SC5_PA1_DATA_FIFO_RD = 636 -PH_PERF_SEL_SC5_PA1_DATA_FIFO_WE = 637 -PH_PERF_SEL_SC5_PA1_FIFO_EMPTY = 638 -PH_PERF_SEL_SC5_PA1_FIFO_FULL = 639 -PH_PERF_SEL_SC5_PA1_NULL_WE = 640 -PH_PERF_SEL_SC5_PA1_EVENT_WE = 641 -PH_PERF_SEL_SC5_PA1_FPOV_WE = 642 -PH_PERF_SEL_SC5_PA1_LPOV_WE = 643 -PH_PERF_SEL_SC5_PA1_EOP_WE = 644 -PH_PERF_SEL_SC5_PA1_DATA_FIFO_EOP_RD = 645 -PH_PERF_SEL_SC5_PA1_EOPG_WE = 646 -PH_PERF_SEL_SC5_PA1_DEALLOC_4_0_RD = 647 -PH_PERF_SEL_SC5_PA2_DATA_FIFO_RD = 648 -PH_PERF_SEL_SC5_PA2_DATA_FIFO_WE = 649 -PH_PERF_SEL_SC5_PA2_FIFO_EMPTY = 650 -PH_PERF_SEL_SC5_PA2_FIFO_FULL = 651 -PH_PERF_SEL_SC5_PA2_NULL_WE = 652 -PH_PERF_SEL_SC5_PA2_EVENT_WE = 653 -PH_PERF_SEL_SC5_PA2_FPOV_WE = 654 -PH_PERF_SEL_SC5_PA2_LPOV_WE = 655 -PH_PERF_SEL_SC5_PA2_EOP_WE = 656 -PH_PERF_SEL_SC5_PA2_DATA_FIFO_EOP_RD = 657 -PH_PERF_SEL_SC5_PA2_EOPG_WE = 658 -PH_PERF_SEL_SC5_PA2_DEALLOC_4_0_RD = 659 -PH_PERF_SEL_SC5_PA3_DATA_FIFO_RD = 660 -PH_PERF_SEL_SC5_PA3_DATA_FIFO_WE = 661 -PH_PERF_SEL_SC5_PA3_FIFO_EMPTY = 662 -PH_PERF_SEL_SC5_PA3_FIFO_FULL = 663 -PH_PERF_SEL_SC5_PA3_NULL_WE = 664 -PH_PERF_SEL_SC5_PA3_EVENT_WE = 665 -PH_PERF_SEL_SC5_PA3_FPOV_WE = 666 -PH_PERF_SEL_SC5_PA3_LPOV_WE = 667 -PH_PERF_SEL_SC5_PA3_EOP_WE = 668 -PH_PERF_SEL_SC5_PA3_DATA_FIFO_EOP_RD = 669 -PH_PERF_SEL_SC5_PA3_EOPG_WE = 670 -PH_PERF_SEL_SC5_PA3_DEALLOC_4_0_RD = 671 -PH_PERF_SEL_SC5_PA4_DATA_FIFO_RD = 672 -PH_PERF_SEL_SC5_PA4_DATA_FIFO_WE = 673 -PH_PERF_SEL_SC5_PA4_FIFO_EMPTY = 674 -PH_PERF_SEL_SC5_PA4_FIFO_FULL = 675 -PH_PERF_SEL_SC5_PA4_NULL_WE = 676 -PH_PERF_SEL_SC5_PA4_EVENT_WE = 677 -PH_PERF_SEL_SC5_PA4_FPOV_WE = 678 -PH_PERF_SEL_SC5_PA4_LPOV_WE = 679 -PH_PERF_SEL_SC5_PA4_EOP_WE = 680 -PH_PERF_SEL_SC5_PA4_DATA_FIFO_EOP_RD = 681 -PH_PERF_SEL_SC5_PA4_EOPG_WE = 682 -PH_PERF_SEL_SC5_PA4_DEALLOC_4_0_RD = 683 -PH_PERF_SEL_SC5_PA5_DATA_FIFO_RD = 684 -PH_PERF_SEL_SC5_PA5_DATA_FIFO_WE = 685 -PH_PERF_SEL_SC5_PA5_FIFO_EMPTY = 686 -PH_PERF_SEL_SC5_PA5_FIFO_FULL = 687 -PH_PERF_SEL_SC5_PA5_NULL_WE = 688 -PH_PERF_SEL_SC5_PA5_EVENT_WE = 689 -PH_PERF_SEL_SC5_PA5_FPOV_WE = 690 -PH_PERF_SEL_SC5_PA5_LPOV_WE = 691 -PH_PERF_SEL_SC5_PA5_EOP_WE = 692 -PH_PERF_SEL_SC5_PA5_DATA_FIFO_EOP_RD = 693 -PH_PERF_SEL_SC5_PA5_EOPG_WE = 694 -PH_PERF_SEL_SC5_PA5_DEALLOC_4_0_RD = 695 -PH_PERF_SEL_SC5_PA6_DATA_FIFO_RD = 696 -PH_PERF_SEL_SC5_PA6_DATA_FIFO_WE = 697 -PH_PERF_SEL_SC5_PA6_FIFO_EMPTY = 698 -PH_PERF_SEL_SC5_PA6_FIFO_FULL = 699 -PH_PERF_SEL_SC5_PA6_NULL_WE = 700 -PH_PERF_SEL_SC5_PA6_EVENT_WE = 701 -PH_PERF_SEL_SC5_PA6_FPOV_WE = 702 -PH_PERF_SEL_SC5_PA6_LPOV_WE = 703 -PH_PERF_SEL_SC5_PA6_EOP_WE = 704 -PH_PERF_SEL_SC5_PA6_DATA_FIFO_EOP_RD = 705 -PH_PERF_SEL_SC5_PA6_EOPG_WE = 706 -PH_PERF_SEL_SC5_PA6_DEALLOC_4_0_RD = 707 -PH_PERF_SEL_SC5_PA7_DATA_FIFO_RD = 708 -PH_PERF_SEL_SC5_PA7_DATA_FIFO_WE = 709 -PH_PERF_SEL_SC5_PA7_FIFO_EMPTY = 710 -PH_PERF_SEL_SC5_PA7_FIFO_FULL = 711 -PH_PERF_SEL_SC5_PA7_NULL_WE = 712 -PH_PERF_SEL_SC5_PA7_EVENT_WE = 713 -PH_PERF_SEL_SC5_PA7_FPOV_WE = 714 -PH_PERF_SEL_SC5_PA7_LPOV_WE = 715 -PH_PERF_SEL_SC5_PA7_EOP_WE = 716 -PH_PERF_SEL_SC5_PA7_DATA_FIFO_EOP_RD = 717 -PH_PERF_SEL_SC5_PA7_EOPG_WE = 718 -PH_PERF_SEL_SC5_PA7_DEALLOC_4_0_RD = 719 -PH_PERF_SEL_SC6_SRPS_WINDOW_VALID = 720 -PH_PERF_SEL_SC6_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 721 -PH_PERF_SEL_SC6_ARB_XFC_ONLY_PRIM_CYCLES = 722 -PH_PERF_SEL_SC6_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 723 -PH_PERF_SEL_SC6_ARB_STALLED_FROM_BELOW = 724 -PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE = 725 -PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 726 -PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 727 -PH_PERF_SEL_SC6_ARB_BUSY = 728 -PH_PERF_SEL_SC6_ARB_PA_BUSY_SOP = 729 -PH_PERF_SEL_SC6_ARB_EOP_POP_SYNC_POP = 730 -PH_PERF_SEL_SC6_ARB_EVENT_SYNC_POP = 731 -PH_PERF_SEL_SC6_PS_ENG_MULTICYCLE_BUBBLE = 732 -PH_PERF_SEL_SC6_EOP_SYNC_WINDOW = 733 -PH_PERF_SEL_SC6_BUSY_PROCESSING_MULTICYCLE_PRIM = 734 -PH_PERF_SEL_SC6_BUSY_CNT_NOT_ZERO = 735 -PH_PERF_SEL_SC6_SEND = 736 -PH_PERF_SEL_SC6_CREDIT_AT_ZERO_WITH_PENDING_SEND = 737 -PH_PERF_SEL_SC6_CREDIT_AT_MAX = 738 -PH_PERF_SEL_SC6_CREDIT_AT_MAX_NO_PENDING_SEND = 739 -PH_PERF_SEL_SC6_GFX_PIPE0_TO_1_TRANSITION = 740 -PH_PERF_SEL_SC6_GFX_PIPE1_TO_0_TRANSITION = 741 -PH_PERF_SEL_SC6_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 742 -PH_PERF_SEL_SC6_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 743 -PH_PERF_SEL_SC6_PA0_DATA_FIFO_RD = 744 -PH_PERF_SEL_SC6_PA0_DATA_FIFO_WE = 745 -PH_PERF_SEL_SC6_PA0_FIFO_EMPTY = 746 -PH_PERF_SEL_SC6_PA0_FIFO_FULL = 747 -PH_PERF_SEL_SC6_PA0_NULL_WE = 748 -PH_PERF_SEL_SC6_PA0_EVENT_WE = 749 -PH_PERF_SEL_SC6_PA0_FPOV_WE = 750 -PH_PERF_SEL_SC6_PA0_LPOV_WE = 751 -PH_PERF_SEL_SC6_PA0_EOP_WE = 752 -PH_PERF_SEL_SC6_PA0_DATA_FIFO_EOP_RD = 753 -PH_PERF_SEL_SC6_PA0_EOPG_WE = 754 -PH_PERF_SEL_SC6_PA0_DEALLOC_4_0_RD = 755 -PH_PERF_SEL_SC6_PA1_DATA_FIFO_RD = 756 -PH_PERF_SEL_SC6_PA1_DATA_FIFO_WE = 757 -PH_PERF_SEL_SC6_PA1_FIFO_EMPTY = 758 -PH_PERF_SEL_SC6_PA1_FIFO_FULL = 759 -PH_PERF_SEL_SC6_PA1_NULL_WE = 760 -PH_PERF_SEL_SC6_PA1_EVENT_WE = 761 -PH_PERF_SEL_SC6_PA1_FPOV_WE = 762 -PH_PERF_SEL_SC6_PA1_LPOV_WE = 763 -PH_PERF_SEL_SC6_PA1_EOP_WE = 764 -PH_PERF_SEL_SC6_PA1_DATA_FIFO_EOP_RD = 765 -PH_PERF_SEL_SC6_PA1_EOPG_WE = 766 -PH_PERF_SEL_SC6_PA1_DEALLOC_4_0_RD = 767 -PH_PERF_SEL_SC6_PA2_DATA_FIFO_RD = 768 -PH_PERF_SEL_SC6_PA2_DATA_FIFO_WE = 769 -PH_PERF_SEL_SC6_PA2_FIFO_EMPTY = 770 -PH_PERF_SEL_SC6_PA2_FIFO_FULL = 771 -PH_PERF_SEL_SC6_PA2_NULL_WE = 772 -PH_PERF_SEL_SC6_PA2_EVENT_WE = 773 -PH_PERF_SEL_SC6_PA2_FPOV_WE = 774 -PH_PERF_SEL_SC6_PA2_LPOV_WE = 775 -PH_PERF_SEL_SC6_PA2_EOP_WE = 776 -PH_PERF_SEL_SC6_PA2_DATA_FIFO_EOP_RD = 777 -PH_PERF_SEL_SC6_PA2_EOPG_WE = 778 -PH_PERF_SEL_SC6_PA2_DEALLOC_4_0_RD = 779 -PH_PERF_SEL_SC6_PA3_DATA_FIFO_RD = 780 -PH_PERF_SEL_SC6_PA3_DATA_FIFO_WE = 781 -PH_PERF_SEL_SC6_PA3_FIFO_EMPTY = 782 -PH_PERF_SEL_SC6_PA3_FIFO_FULL = 783 -PH_PERF_SEL_SC6_PA3_NULL_WE = 784 -PH_PERF_SEL_SC6_PA3_EVENT_WE = 785 -PH_PERF_SEL_SC6_PA3_FPOV_WE = 786 -PH_PERF_SEL_SC6_PA3_LPOV_WE = 787 -PH_PERF_SEL_SC6_PA3_EOP_WE = 788 -PH_PERF_SEL_SC6_PA3_DATA_FIFO_EOP_RD = 789 -PH_PERF_SEL_SC6_PA3_EOPG_WE = 790 -PH_PERF_SEL_SC6_PA3_DEALLOC_4_0_RD = 791 -PH_PERF_SEL_SC6_PA4_DATA_FIFO_RD = 792 -PH_PERF_SEL_SC6_PA4_DATA_FIFO_WE = 793 -PH_PERF_SEL_SC6_PA4_FIFO_EMPTY = 794 -PH_PERF_SEL_SC6_PA4_FIFO_FULL = 795 -PH_PERF_SEL_SC6_PA4_NULL_WE = 796 -PH_PERF_SEL_SC6_PA4_EVENT_WE = 797 -PH_PERF_SEL_SC6_PA4_FPOV_WE = 798 -PH_PERF_SEL_SC6_PA4_LPOV_WE = 799 -PH_PERF_SEL_SC6_PA4_EOP_WE = 800 -PH_PERF_SEL_SC6_PA4_DATA_FIFO_EOP_RD = 801 -PH_PERF_SEL_SC6_PA4_EOPG_WE = 802 -PH_PERF_SEL_SC6_PA4_DEALLOC_4_0_RD = 803 -PH_PERF_SEL_SC6_PA5_DATA_FIFO_RD = 804 -PH_PERF_SEL_SC6_PA5_DATA_FIFO_WE = 805 -PH_PERF_SEL_SC6_PA5_FIFO_EMPTY = 806 -PH_PERF_SEL_SC6_PA5_FIFO_FULL = 807 -PH_PERF_SEL_SC6_PA5_NULL_WE = 808 -PH_PERF_SEL_SC6_PA5_EVENT_WE = 809 -PH_PERF_SEL_SC6_PA5_FPOV_WE = 810 -PH_PERF_SEL_SC6_PA5_LPOV_WE = 811 -PH_PERF_SEL_SC6_PA5_EOP_WE = 812 -PH_PERF_SEL_SC6_PA5_DATA_FIFO_EOP_RD = 813 -PH_PERF_SEL_SC6_PA5_EOPG_WE = 814 -PH_PERF_SEL_SC6_PA5_DEALLOC_4_0_RD = 815 -PH_PERF_SEL_SC6_PA6_DATA_FIFO_RD = 816 -PH_PERF_SEL_SC6_PA6_DATA_FIFO_WE = 817 -PH_PERF_SEL_SC6_PA6_FIFO_EMPTY = 818 -PH_PERF_SEL_SC6_PA6_FIFO_FULL = 819 -PH_PERF_SEL_SC6_PA6_NULL_WE = 820 -PH_PERF_SEL_SC6_PA6_EVENT_WE = 821 -PH_PERF_SEL_SC6_PA6_FPOV_WE = 822 -PH_PERF_SEL_SC6_PA6_LPOV_WE = 823 -PH_PERF_SEL_SC6_PA6_EOP_WE = 824 -PH_PERF_SEL_SC6_PA6_DATA_FIFO_EOP_RD = 825 -PH_PERF_SEL_SC6_PA6_EOPG_WE = 826 -PH_PERF_SEL_SC6_PA6_DEALLOC_4_0_RD = 827 -PH_PERF_SEL_SC6_PA7_DATA_FIFO_RD = 828 -PH_PERF_SEL_SC6_PA7_DATA_FIFO_WE = 829 -PH_PERF_SEL_SC6_PA7_FIFO_EMPTY = 830 -PH_PERF_SEL_SC6_PA7_FIFO_FULL = 831 -PH_PERF_SEL_SC6_PA7_NULL_WE = 832 -PH_PERF_SEL_SC6_PA7_EVENT_WE = 833 -PH_PERF_SEL_SC6_PA7_FPOV_WE = 834 -PH_PERF_SEL_SC6_PA7_LPOV_WE = 835 -PH_PERF_SEL_SC6_PA7_EOP_WE = 836 -PH_PERF_SEL_SC6_PA7_DATA_FIFO_EOP_RD = 837 -PH_PERF_SEL_SC6_PA7_EOPG_WE = 838 -PH_PERF_SEL_SC6_PA7_DEALLOC_4_0_RD = 839 -PH_PERF_SEL_SC7_SRPS_WINDOW_VALID = 840 -PH_PERF_SEL_SC7_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES = 841 -PH_PERF_SEL_SC7_ARB_XFC_ONLY_PRIM_CYCLES = 842 -PH_PERF_SEL_SC7_ARB_XFC_ONLY_ONE_INC_PER_PRIM = 843 -PH_PERF_SEL_SC7_ARB_STALLED_FROM_BELOW = 844 -PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE = 845 -PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 846 -PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 847 -PH_PERF_SEL_SC7_ARB_BUSY = 848 -PH_PERF_SEL_SC7_ARB_PA_BUSY_SOP = 849 -PH_PERF_SEL_SC7_ARB_EOP_POP_SYNC_POP = 850 -PH_PERF_SEL_SC7_ARB_EVENT_SYNC_POP = 851 -PH_PERF_SEL_SC7_PS_ENG_MULTICYCLE_BUBBLE = 852 -PH_PERF_SEL_SC7_EOP_SYNC_WINDOW = 853 -PH_PERF_SEL_SC7_BUSY_PROCESSING_MULTICYCLE_PRIM = 854 -PH_PERF_SEL_SC7_BUSY_CNT_NOT_ZERO = 855 -PH_PERF_SEL_SC7_SEND = 856 -PH_PERF_SEL_SC7_CREDIT_AT_ZERO_WITH_PENDING_SEND = 857 -PH_PERF_SEL_SC7_CREDIT_AT_MAX = 858 -PH_PERF_SEL_SC7_CREDIT_AT_MAX_NO_PENDING_SEND = 859 -PH_PERF_SEL_SC7_GFX_PIPE0_TO_1_TRANSITION = 860 -PH_PERF_SEL_SC7_GFX_PIPE1_TO_0_TRANSITION = 861 -PH_PERF_SEL_SC7_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION = 862 -PH_PERF_SEL_SC7_GFX_PIPE_EVENT_PROVOKED_TRANSITION = 863 -PH_PERF_SEL_SC7_PA0_DATA_FIFO_RD = 864 -PH_PERF_SEL_SC7_PA0_DATA_FIFO_WE = 865 -PH_PERF_SEL_SC7_PA0_FIFO_EMPTY = 866 -PH_PERF_SEL_SC7_PA0_FIFO_FULL = 867 -PH_PERF_SEL_SC7_PA0_NULL_WE = 868 -PH_PERF_SEL_SC7_PA0_EVENT_WE = 869 -PH_PERF_SEL_SC7_PA0_FPOV_WE = 870 -PH_PERF_SEL_SC7_PA0_LPOV_WE = 871 -PH_PERF_SEL_SC7_PA0_EOP_WE = 872 -PH_PERF_SEL_SC7_PA0_DATA_FIFO_EOP_RD = 873 -PH_PERF_SEL_SC7_PA0_EOPG_WE = 874 -PH_PERF_SEL_SC7_PA0_DEALLOC_4_0_RD = 875 -PH_PERF_SEL_SC7_PA1_DATA_FIFO_RD = 876 -PH_PERF_SEL_SC7_PA1_DATA_FIFO_WE = 877 -PH_PERF_SEL_SC7_PA1_FIFO_EMPTY = 878 -PH_PERF_SEL_SC7_PA1_FIFO_FULL = 879 -PH_PERF_SEL_SC7_PA1_NULL_WE = 880 -PH_PERF_SEL_SC7_PA1_EVENT_WE = 881 -PH_PERF_SEL_SC7_PA1_FPOV_WE = 882 -PH_PERF_SEL_SC7_PA1_LPOV_WE = 883 -PH_PERF_SEL_SC7_PA1_EOP_WE = 884 -PH_PERF_SEL_SC7_PA1_DATA_FIFO_EOP_RD = 885 -PH_PERF_SEL_SC7_PA1_EOPG_WE = 886 -PH_PERF_SEL_SC7_PA1_DEALLOC_4_0_RD = 887 -PH_PERF_SEL_SC7_PA2_DATA_FIFO_RD = 888 -PH_PERF_SEL_SC7_PA2_DATA_FIFO_WE = 889 -PH_PERF_SEL_SC7_PA2_FIFO_EMPTY = 890 -PH_PERF_SEL_SC7_PA2_FIFO_FULL = 891 -PH_PERF_SEL_SC7_PA2_NULL_WE = 892 -PH_PERF_SEL_SC7_PA2_EVENT_WE = 893 -PH_PERF_SEL_SC7_PA2_FPOV_WE = 894 -PH_PERF_SEL_SC7_PA2_LPOV_WE = 895 -PH_PERF_SEL_SC7_PA2_EOP_WE = 896 -PH_PERF_SEL_SC7_PA2_DATA_FIFO_EOP_RD = 897 -PH_PERF_SEL_SC7_PA2_EOPG_WE = 898 -PH_PERF_SEL_SC7_PA2_DEALLOC_4_0_RD = 899 -PH_PERF_SEL_SC7_PA3_DATA_FIFO_RD = 900 -PH_PERF_SEL_SC7_PA3_DATA_FIFO_WE = 901 -PH_PERF_SEL_SC7_PA3_FIFO_EMPTY = 902 -PH_PERF_SEL_SC7_PA3_FIFO_FULL = 903 -PH_PERF_SEL_SC7_PA3_NULL_WE = 904 -PH_PERF_SEL_SC7_PA3_EVENT_WE = 905 -PH_PERF_SEL_SC7_PA3_FPOV_WE = 906 -PH_PERF_SEL_SC7_PA3_LPOV_WE = 907 -PH_PERF_SEL_SC7_PA3_EOP_WE = 908 -PH_PERF_SEL_SC7_PA3_DATA_FIFO_EOP_RD = 909 -PH_PERF_SEL_SC7_PA3_EOPG_WE = 910 -PH_PERF_SEL_SC7_PA3_DEALLOC_4_0_RD = 911 -PH_PERF_SEL_SC7_PA4_DATA_FIFO_RD = 912 -PH_PERF_SEL_SC7_PA4_DATA_FIFO_WE = 913 -PH_PERF_SEL_SC7_PA4_FIFO_EMPTY = 914 -PH_PERF_SEL_SC7_PA4_FIFO_FULL = 915 -PH_PERF_SEL_SC7_PA4_NULL_WE = 916 -PH_PERF_SEL_SC7_PA4_EVENT_WE = 917 -PH_PERF_SEL_SC7_PA4_FPOV_WE = 918 -PH_PERF_SEL_SC7_PA4_LPOV_WE = 919 -PH_PERF_SEL_SC7_PA4_EOP_WE = 920 -PH_PERF_SEL_SC7_PA4_DATA_FIFO_EOP_RD = 921 -PH_PERF_SEL_SC7_PA4_EOPG_WE = 922 -PH_PERF_SEL_SC7_PA4_DEALLOC_4_0_RD = 923 -PH_PERF_SEL_SC7_PA5_DATA_FIFO_RD = 924 -PH_PERF_SEL_SC7_PA5_DATA_FIFO_WE = 925 -PH_PERF_SEL_SC7_PA5_FIFO_EMPTY = 926 -PH_PERF_SEL_SC7_PA5_FIFO_FULL = 927 -PH_PERF_SEL_SC7_PA5_NULL_WE = 928 -PH_PERF_SEL_SC7_PA5_EVENT_WE = 929 -PH_PERF_SEL_SC7_PA5_FPOV_WE = 930 -PH_PERF_SEL_SC7_PA5_LPOV_WE = 931 -PH_PERF_SEL_SC7_PA5_EOP_WE = 932 -PH_PERF_SEL_SC7_PA5_DATA_FIFO_EOP_RD = 933 -PH_PERF_SEL_SC7_PA5_EOPG_WE = 934 -PH_PERF_SEL_SC7_PA5_DEALLOC_4_0_RD = 935 -PH_PERF_SEL_SC7_PA6_DATA_FIFO_RD = 936 -PH_PERF_SEL_SC7_PA6_DATA_FIFO_WE = 937 -PH_PERF_SEL_SC7_PA6_FIFO_EMPTY = 938 -PH_PERF_SEL_SC7_PA6_FIFO_FULL = 939 -PH_PERF_SEL_SC7_PA6_NULL_WE = 940 -PH_PERF_SEL_SC7_PA6_EVENT_WE = 941 -PH_PERF_SEL_SC7_PA6_FPOV_WE = 942 -PH_PERF_SEL_SC7_PA6_LPOV_WE = 943 -PH_PERF_SEL_SC7_PA6_EOP_WE = 944 -PH_PERF_SEL_SC7_PA6_DATA_FIFO_EOP_RD = 945 -PH_PERF_SEL_SC7_PA6_EOPG_WE = 946 -PH_PERF_SEL_SC7_PA6_DEALLOC_4_0_RD = 947 -PH_PERF_SEL_SC7_PA7_DATA_FIFO_RD = 948 -PH_PERF_SEL_SC7_PA7_DATA_FIFO_WE = 949 -PH_PERF_SEL_SC7_PA7_FIFO_EMPTY = 950 -PH_PERF_SEL_SC7_PA7_FIFO_FULL = 951 -PH_PERF_SEL_SC7_PA7_NULL_WE = 952 -PH_PERF_SEL_SC7_PA7_EVENT_WE = 953 -PH_PERF_SEL_SC7_PA7_FPOV_WE = 954 -PH_PERF_SEL_SC7_PA7_LPOV_WE = 955 -PH_PERF_SEL_SC7_PA7_EOP_WE = 956 -PH_PERF_SEL_SC7_PA7_DATA_FIFO_EOP_RD = 957 -PH_PERF_SEL_SC7_PA7_EOPG_WE = 958 -PH_PERF_SEL_SC7_PA7_DEALLOC_4_0_RD = 959 -PH_PERF_SEL_1_SC_ARB_STALLED_FROM_BELOW = 960 -PH_PERF_SEL_2_SC_ARB_STALLED_FROM_BELOW = 961 -PH_PERF_SEL_3_SC_ARB_STALLED_FROM_BELOW = 962 -PH_PERF_SEL_4_SC_ARB_STALLED_FROM_BELOW = 963 -PH_PERF_SEL_5_SC_ARB_STALLED_FROM_BELOW = 964 -PH_PERF_SEL_6_SC_ARB_STALLED_FROM_BELOW = 965 -PH_PERF_SEL_7_SC_ARB_STALLED_FROM_BELOW = 966 -PH_PERF_SEL_8_SC_ARB_STALLED_FROM_BELOW = 967 -PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE = 968 -PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE = 969 -PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE = 970 -PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE = 971 -PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE = 972 -PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE = 973 -PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE = 974 -PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE = 975 -PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 976 -PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 977 -PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 978 -PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 979 -PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 980 -PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 981 -PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 982 -PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY = 983 -PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 984 -PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 985 -PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 986 -PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 987 -PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 988 -PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 989 -PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 990 -PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL = 991 -PH_PERF_SC0_FIFO_STATUS_0 = 992 -PH_PERF_SC0_FIFO_STATUS_1 = 993 -PH_PERF_SC0_FIFO_STATUS_2 = 994 -PH_PERF_SC0_FIFO_STATUS_3 = 995 -PH_PERF_SC1_FIFO_STATUS_0 = 996 -PH_PERF_SC1_FIFO_STATUS_1 = 997 -PH_PERF_SC1_FIFO_STATUS_2 = 998 -PH_PERF_SC1_FIFO_STATUS_3 = 999 -PH_PERF_SC2_FIFO_STATUS_0 = 1000 -PH_PERF_SC2_FIFO_STATUS_1 = 1001 -PH_PERF_SC2_FIFO_STATUS_2 = 1002 -PH_PERF_SC2_FIFO_STATUS_3 = 1003 -PH_PERF_SC3_FIFO_STATUS_0 = 1004 -PH_PERF_SC3_FIFO_STATUS_1 = 1005 -PH_PERF_SC3_FIFO_STATUS_2 = 1006 -PH_PERF_SC3_FIFO_STATUS_3 = 1007 -PH_PERF_SC4_FIFO_STATUS_0 = 1008 -PH_PERF_SC4_FIFO_STATUS_1 = 1009 -PH_PERF_SC4_FIFO_STATUS_2 = 1010 -PH_PERF_SC4_FIFO_STATUS_3 = 1011 -PH_PERF_SC5_FIFO_STATUS_0 = 1012 -PH_PERF_SC5_FIFO_STATUS_1 = 1013 -PH_PERF_SC5_FIFO_STATUS_2 = 1014 -PH_PERF_SC5_FIFO_STATUS_3 = 1015 -PH_PERF_SC6_FIFO_STATUS_0 = 1016 -PH_PERF_SC6_FIFO_STATUS_1 = 1017 -PH_PERF_SC6_FIFO_STATUS_2 = 1018 -PH_PERF_SC6_FIFO_STATUS_3 = 1019 -PH_PERF_SC7_FIFO_STATUS_0 = 1020 -PH_PERF_SC7_FIFO_STATUS_1 = 1021 -PH_PERF_SC7_FIFO_STATUS_2 = 1022 -PH_PERF_SC7_FIFO_STATUS_3 = 1023 -PH_PERFCNT_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'PhSPIstatusMode' -PhSPIstatusMode__enumvalues = { - 0: 'PH_SPI_MODE_LARGEST_PA_PH_FIFO_COUNT', - 1: 'PH_SPI_MODE_ARBITER_SELECTED_PA_PH_FIFO_COUNT', - 2: 'PH_SPI_MODE_DISABLED', -} -PH_SPI_MODE_LARGEST_PA_PH_FIFO_COUNT = 0 -PH_SPI_MODE_ARBITER_SELECTED_PA_PH_FIFO_COUNT = 1 -PH_SPI_MODE_DISABLED = 2 -PhSPIstatusMode = ctypes.c_uint32 # enum - -# values for enumeration 'RMIPerfSel' -RMIPerfSel__enumvalues = { - 0: 'RMI_PERF_SEL_RB_RMI_WRREQ_ALL_CID', - 1: 'RMI_PERF_SEL_RB_RMI_RDREQ_ALL_CID', -} -RMI_PERF_SEL_RB_RMI_WRREQ_ALL_CID = 0 -RMI_PERF_SEL_RB_RMI_RDREQ_ALL_CID = 1 -RMIPerfSel = ctypes.c_uint32 # enum - -# values for enumeration 'GCRPerfSel' -GCRPerfSel__enumvalues = { - 0: 'GCR_PERF_SEL_NONE', - 1: 'GCR_PERF_SEL_SDMA0_ALL_REQ', - 2: 'GCR_PERF_SEL_SDMA0_GL2_RANGE_REQ', - 3: 'GCR_PERF_SEL_SDMA0_GL2_RANGE_LT16K_REQ', - 4: 'GCR_PERF_SEL_SDMA0_GL2_RANGE_16K_REQ', - 5: 'GCR_PERF_SEL_SDMA0_GL2_RANGE_GT16K_REQ', - 6: 'GCR_PERF_SEL_SDMA0_GL2_ALL_REQ', - 7: 'GCR_PERF_SEL_SDMA0_GL1_RANGE_REQ', - 8: 'GCR_PERF_SEL_SDMA0_GL1_RANGE_LT16K_REQ', - 9: 'GCR_PERF_SEL_SDMA0_GL1_RANGE_16K_REQ', - 10: 'GCR_PERF_SEL_SDMA0_GL1_RANGE_GT16K_REQ', - 11: 'GCR_PERF_SEL_SDMA0_GL1_ALL_REQ', - 12: 'GCR_PERF_SEL_SDMA0_METADATA_REQ', - 13: 'GCR_PERF_SEL_SDMA0_SQC_DATA_REQ', - 14: 'GCR_PERF_SEL_SDMA0_SQC_INST_REQ', - 15: 'GCR_PERF_SEL_SDMA0_TCP_REQ', - 16: 'GCR_PERF_SEL_SDMA0_TCP_TLB_SHOOTDOWN_REQ', - 17: 'GCR_PERF_SEL_SDMA1_ALL_REQ', - 18: 'GCR_PERF_SEL_SDMA1_GL2_RANGE_REQ', - 19: 'GCR_PERF_SEL_SDMA1_GL2_RANGE_LT16K_REQ', - 20: 'GCR_PERF_SEL_SDMA1_GL2_RANGE_16K_REQ', - 21: 'GCR_PERF_SEL_SDMA1_GL2_RANGE_GT16K_REQ', - 22: 'GCR_PERF_SEL_SDMA1_GL2_ALL_REQ', - 23: 'GCR_PERF_SEL_SDMA1_GL1_RANGE_REQ', - 24: 'GCR_PERF_SEL_SDMA1_GL1_RANGE_LT16K_REQ', - 25: 'GCR_PERF_SEL_SDMA1_GL1_RANGE_16K_REQ', - 26: 'GCR_PERF_SEL_SDMA1_GL1_RANGE_GT16K_REQ', - 27: 'GCR_PERF_SEL_SDMA1_GL1_ALL_REQ', - 28: 'GCR_PERF_SEL_SDMA1_METADATA_REQ', - 29: 'GCR_PERF_SEL_SDMA1_SQC_DATA_REQ', - 30: 'GCR_PERF_SEL_SDMA1_SQC_INST_REQ', - 31: 'GCR_PERF_SEL_SDMA1_TCP_REQ', - 32: 'GCR_PERF_SEL_SDMA1_TCP_TLB_SHOOTDOWN_REQ', - 33: 'GCR_PERF_SEL_CPC_ALL_REQ', - 34: 'GCR_PERF_SEL_CPC_GL2_RANGE_REQ', - 35: 'GCR_PERF_SEL_CPC_GL2_RANGE_LT16K_REQ', - 36: 'GCR_PERF_SEL_CPC_GL2_RANGE_16K_REQ', - 37: 'GCR_PERF_SEL_CPC_GL2_RANGE_GT16K_REQ', - 38: 'GCR_PERF_SEL_CPC_GL2_ALL_REQ', - 39: 'GCR_PERF_SEL_CPC_GL1_RANGE_REQ', - 40: 'GCR_PERF_SEL_CPC_GL1_RANGE_LT16K_REQ', - 41: 'GCR_PERF_SEL_CPC_GL1_RANGE_16K_REQ', - 42: 'GCR_PERF_SEL_CPC_GL1_RANGE_GT16K_REQ', - 43: 'GCR_PERF_SEL_CPC_GL1_ALL_REQ', - 44: 'GCR_PERF_SEL_CPC_METADATA_REQ', - 45: 'GCR_PERF_SEL_CPC_SQC_DATA_REQ', - 46: 'GCR_PERF_SEL_CPC_SQC_INST_REQ', - 47: 'GCR_PERF_SEL_CPC_TCP_REQ', - 48: 'GCR_PERF_SEL_CPC_TCP_TLB_SHOOTDOWN_REQ', - 49: 'GCR_PERF_SEL_CPG_ALL_REQ', - 50: 'GCR_PERF_SEL_CPG_GL2_RANGE_REQ', - 51: 'GCR_PERF_SEL_CPG_GL2_RANGE_LT16K_REQ', - 52: 'GCR_PERF_SEL_CPG_GL2_RANGE_16K_REQ', - 53: 'GCR_PERF_SEL_CPG_GL2_RANGE_GT16K_REQ', - 54: 'GCR_PERF_SEL_CPG_GL2_ALL_REQ', - 55: 'GCR_PERF_SEL_CPG_GL1_RANGE_REQ', - 56: 'GCR_PERF_SEL_CPG_GL1_RANGE_LT16K_REQ', - 57: 'GCR_PERF_SEL_CPG_GL1_RANGE_16K_REQ', - 58: 'GCR_PERF_SEL_CPG_GL1_RANGE_GT16K_REQ', - 59: 'GCR_PERF_SEL_CPG_GL1_ALL_REQ', - 60: 'GCR_PERF_SEL_CPG_METADATA_REQ', - 61: 'GCR_PERF_SEL_CPG_SQC_DATA_REQ', - 62: 'GCR_PERF_SEL_CPG_SQC_INST_REQ', - 63: 'GCR_PERF_SEL_CPG_TCP_REQ', - 64: 'GCR_PERF_SEL_CPG_TCP_TLB_SHOOTDOWN_REQ', - 65: 'GCR_PERF_SEL_CPF_ALL_REQ', - 66: 'GCR_PERF_SEL_CPF_GL2_RANGE_REQ', - 67: 'GCR_PERF_SEL_CPF_GL2_RANGE_LT16K_REQ', - 68: 'GCR_PERF_SEL_CPF_GL2_RANGE_16K_REQ', - 69: 'GCR_PERF_SEL_CPF_GL2_RANGE_GT16K_REQ', - 70: 'GCR_PERF_SEL_CPF_GL2_ALL_REQ', - 71: 'GCR_PERF_SEL_CPF_GL1_RANGE_REQ', - 72: 'GCR_PERF_SEL_CPF_GL1_RANGE_LT16K_REQ', - 73: 'GCR_PERF_SEL_CPF_GL1_RANGE_16K_REQ', - 74: 'GCR_PERF_SEL_CPF_GL1_RANGE_GT16K_REQ', - 75: 'GCR_PERF_SEL_CPF_GL1_ALL_REQ', - 76: 'GCR_PERF_SEL_CPF_METADATA_REQ', - 77: 'GCR_PERF_SEL_CPF_SQC_DATA_REQ', - 78: 'GCR_PERF_SEL_CPF_SQC_INST_REQ', - 79: 'GCR_PERF_SEL_CPF_TCP_REQ', - 80: 'GCR_PERF_SEL_CPF_TCP_TLB_SHOOTDOWN_REQ', - 81: 'GCR_PERF_SEL_VIRT_REQ', - 82: 'GCR_PERF_SEL_PHY_REQ', - 83: 'GCR_PERF_SEL_TLB_SHOOTDOWN_HEAVY_REQ', - 84: 'GCR_PERF_SEL_TLB_SHOOTDOWN_LIGHT_REQ', - 85: 'GCR_PERF_SEL_ALL_REQ', - 86: 'GCR_PERF_SEL_CLK_FOR_PHY_OUTSTANDING_REQ', - 87: 'GCR_PERF_SEL_CLK_FOR_VIRT_OUTSTANDING_REQ', - 88: 'GCR_PERF_SEL_CLK_FOR_ALL_OUTSTANDING_REQ', - 89: 'GCR_PERF_SEL_UTCL2_REQ', - 90: 'GCR_PERF_SEL_UTCL2_RET', - 91: 'GCR_PERF_SEL_UTCL2_OUT_OF_CREDIT_EVENT', - 92: 'GCR_PERF_SEL_UTCL2_INFLIGHT_REQ', - 93: 'GCR_PERF_SEL_UTCL2_FILTERED_RET', - 94: 'GCR_PERF_SEL_RLC_ALL_REQ', - 95: 'GCR_PERF_SEL_RLC_GL2_RANGE_REQ', - 96: 'GCR_PERF_SEL_RLC_GL2_RANGE_LT16K_REQ', - 97: 'GCR_PERF_SEL_RLC_GL2_RANGE_16K_REQ', - 98: 'GCR_PERF_SEL_RLC_GL2_RANGE_GT16K_REQ', - 99: 'GCR_PERF_SEL_RLC_GL2_ALL_REQ', - 100: 'GCR_PERF_SEL_RLC_GL1_RANGE_REQ', - 101: 'GCR_PERF_SEL_RLC_GL1_RANGE_LT16K_REQ', - 102: 'GCR_PERF_SEL_RLC_GL1_RANGE_16K_REQ', - 103: 'GCR_PERF_SEL_RLC_GL1_RANGE_GT16K_REQ', - 104: 'GCR_PERF_SEL_RLC_GL1_ALL_REQ', - 105: 'GCR_PERF_SEL_RLC_METADATA_REQ', - 106: 'GCR_PERF_SEL_RLC_SQC_DATA_REQ', - 107: 'GCR_PERF_SEL_RLC_SQC_INST_REQ', - 108: 'GCR_PERF_SEL_RLC_TCP_REQ', - 109: 'GCR_PERF_SEL_RLC_TCP_TLB_SHOOTDOWN_REQ', - 110: 'GCR_PERF_SEL_PM_ALL_REQ', - 111: 'GCR_PERF_SEL_PM_GL2_RANGE_REQ', - 112: 'GCR_PERF_SEL_PM_GL2_RANGE_LT16K_REQ', - 113: 'GCR_PERF_SEL_PM_GL2_RANGE_16K_REQ', - 114: 'GCR_PERF_SEL_PM_GL2_RANGE_GT16K_REQ', - 115: 'GCR_PERF_SEL_PM_GL2_ALL_REQ', - 116: 'GCR_PERF_SEL_PM_GL1_RANGE_REQ', - 117: 'GCR_PERF_SEL_PM_GL1_RANGE_LT16K_REQ', - 118: 'GCR_PERF_SEL_PM_GL1_RANGE_16K_REQ', - 119: 'GCR_PERF_SEL_PM_GL1_RANGE_GT16K_REQ', - 120: 'GCR_PERF_SEL_PM_GL1_ALL_REQ', - 121: 'GCR_PERF_SEL_PM_METADATA_REQ', - 122: 'GCR_PERF_SEL_PM_SQC_DATA_REQ', - 123: 'GCR_PERF_SEL_PM_SQC_INST_REQ', - 124: 'GCR_PERF_SEL_PM_TCP_REQ', - 125: 'GCR_PERF_SEL_PM_TCP_TLB_SHOOTDOWN_REQ', - 126: 'GCR_PERF_SEL_PIO_ALL_REQ', - 127: 'GCR_PERF_SEL_PIO_GL2_RANGE_REQ', - 128: 'GCR_PERF_SEL_PIO_GL2_RANGE_LT16K_REQ', - 129: 'GCR_PERF_SEL_PIO_GL2_RANGE_16K_REQ', - 130: 'GCR_PERF_SEL_PIO_GL2_RANGE_GT16K_REQ', - 131: 'GCR_PERF_SEL_PIO_GL2_ALL_REQ', - 132: 'GCR_PERF_SEL_PIO_GL1_RANGE_REQ', - 133: 'GCR_PERF_SEL_PIO_GL1_RANGE_LT16K_REQ', - 134: 'GCR_PERF_SEL_PIO_GL1_RANGE_16K_REQ', - 135: 'GCR_PERF_SEL_PIO_GL1_RANGE_GT16K_REQ', - 136: 'GCR_PERF_SEL_PIO_GL1_ALL_REQ', - 137: 'GCR_PERF_SEL_PIO_METADATA_REQ', - 138: 'GCR_PERF_SEL_PIO_SQC_DATA_REQ', - 139: 'GCR_PERF_SEL_PIO_SQC_INST_REQ', - 140: 'GCR_PERF_SEL_PIO_TCP_REQ', - 141: 'GCR_PERF_SEL_PIO_TCP_TLB_SHOOTDOWN_REQ', -} -GCR_PERF_SEL_NONE = 0 -GCR_PERF_SEL_SDMA0_ALL_REQ = 1 -GCR_PERF_SEL_SDMA0_GL2_RANGE_REQ = 2 -GCR_PERF_SEL_SDMA0_GL2_RANGE_LT16K_REQ = 3 -GCR_PERF_SEL_SDMA0_GL2_RANGE_16K_REQ = 4 -GCR_PERF_SEL_SDMA0_GL2_RANGE_GT16K_REQ = 5 -GCR_PERF_SEL_SDMA0_GL2_ALL_REQ = 6 -GCR_PERF_SEL_SDMA0_GL1_RANGE_REQ = 7 -GCR_PERF_SEL_SDMA0_GL1_RANGE_LT16K_REQ = 8 -GCR_PERF_SEL_SDMA0_GL1_RANGE_16K_REQ = 9 -GCR_PERF_SEL_SDMA0_GL1_RANGE_GT16K_REQ = 10 -GCR_PERF_SEL_SDMA0_GL1_ALL_REQ = 11 -GCR_PERF_SEL_SDMA0_METADATA_REQ = 12 -GCR_PERF_SEL_SDMA0_SQC_DATA_REQ = 13 -GCR_PERF_SEL_SDMA0_SQC_INST_REQ = 14 -GCR_PERF_SEL_SDMA0_TCP_REQ = 15 -GCR_PERF_SEL_SDMA0_TCP_TLB_SHOOTDOWN_REQ = 16 -GCR_PERF_SEL_SDMA1_ALL_REQ = 17 -GCR_PERF_SEL_SDMA1_GL2_RANGE_REQ = 18 -GCR_PERF_SEL_SDMA1_GL2_RANGE_LT16K_REQ = 19 -GCR_PERF_SEL_SDMA1_GL2_RANGE_16K_REQ = 20 -GCR_PERF_SEL_SDMA1_GL2_RANGE_GT16K_REQ = 21 -GCR_PERF_SEL_SDMA1_GL2_ALL_REQ = 22 -GCR_PERF_SEL_SDMA1_GL1_RANGE_REQ = 23 -GCR_PERF_SEL_SDMA1_GL1_RANGE_LT16K_REQ = 24 -GCR_PERF_SEL_SDMA1_GL1_RANGE_16K_REQ = 25 -GCR_PERF_SEL_SDMA1_GL1_RANGE_GT16K_REQ = 26 -GCR_PERF_SEL_SDMA1_GL1_ALL_REQ = 27 -GCR_PERF_SEL_SDMA1_METADATA_REQ = 28 -GCR_PERF_SEL_SDMA1_SQC_DATA_REQ = 29 -GCR_PERF_SEL_SDMA1_SQC_INST_REQ = 30 -GCR_PERF_SEL_SDMA1_TCP_REQ = 31 -GCR_PERF_SEL_SDMA1_TCP_TLB_SHOOTDOWN_REQ = 32 -GCR_PERF_SEL_CPC_ALL_REQ = 33 -GCR_PERF_SEL_CPC_GL2_RANGE_REQ = 34 -GCR_PERF_SEL_CPC_GL2_RANGE_LT16K_REQ = 35 -GCR_PERF_SEL_CPC_GL2_RANGE_16K_REQ = 36 -GCR_PERF_SEL_CPC_GL2_RANGE_GT16K_REQ = 37 -GCR_PERF_SEL_CPC_GL2_ALL_REQ = 38 -GCR_PERF_SEL_CPC_GL1_RANGE_REQ = 39 -GCR_PERF_SEL_CPC_GL1_RANGE_LT16K_REQ = 40 -GCR_PERF_SEL_CPC_GL1_RANGE_16K_REQ = 41 -GCR_PERF_SEL_CPC_GL1_RANGE_GT16K_REQ = 42 -GCR_PERF_SEL_CPC_GL1_ALL_REQ = 43 -GCR_PERF_SEL_CPC_METADATA_REQ = 44 -GCR_PERF_SEL_CPC_SQC_DATA_REQ = 45 -GCR_PERF_SEL_CPC_SQC_INST_REQ = 46 -GCR_PERF_SEL_CPC_TCP_REQ = 47 -GCR_PERF_SEL_CPC_TCP_TLB_SHOOTDOWN_REQ = 48 -GCR_PERF_SEL_CPG_ALL_REQ = 49 -GCR_PERF_SEL_CPG_GL2_RANGE_REQ = 50 -GCR_PERF_SEL_CPG_GL2_RANGE_LT16K_REQ = 51 -GCR_PERF_SEL_CPG_GL2_RANGE_16K_REQ = 52 -GCR_PERF_SEL_CPG_GL2_RANGE_GT16K_REQ = 53 -GCR_PERF_SEL_CPG_GL2_ALL_REQ = 54 -GCR_PERF_SEL_CPG_GL1_RANGE_REQ = 55 -GCR_PERF_SEL_CPG_GL1_RANGE_LT16K_REQ = 56 -GCR_PERF_SEL_CPG_GL1_RANGE_16K_REQ = 57 -GCR_PERF_SEL_CPG_GL1_RANGE_GT16K_REQ = 58 -GCR_PERF_SEL_CPG_GL1_ALL_REQ = 59 -GCR_PERF_SEL_CPG_METADATA_REQ = 60 -GCR_PERF_SEL_CPG_SQC_DATA_REQ = 61 -GCR_PERF_SEL_CPG_SQC_INST_REQ = 62 -GCR_PERF_SEL_CPG_TCP_REQ = 63 -GCR_PERF_SEL_CPG_TCP_TLB_SHOOTDOWN_REQ = 64 -GCR_PERF_SEL_CPF_ALL_REQ = 65 -GCR_PERF_SEL_CPF_GL2_RANGE_REQ = 66 -GCR_PERF_SEL_CPF_GL2_RANGE_LT16K_REQ = 67 -GCR_PERF_SEL_CPF_GL2_RANGE_16K_REQ = 68 -GCR_PERF_SEL_CPF_GL2_RANGE_GT16K_REQ = 69 -GCR_PERF_SEL_CPF_GL2_ALL_REQ = 70 -GCR_PERF_SEL_CPF_GL1_RANGE_REQ = 71 -GCR_PERF_SEL_CPF_GL1_RANGE_LT16K_REQ = 72 -GCR_PERF_SEL_CPF_GL1_RANGE_16K_REQ = 73 -GCR_PERF_SEL_CPF_GL1_RANGE_GT16K_REQ = 74 -GCR_PERF_SEL_CPF_GL1_ALL_REQ = 75 -GCR_PERF_SEL_CPF_METADATA_REQ = 76 -GCR_PERF_SEL_CPF_SQC_DATA_REQ = 77 -GCR_PERF_SEL_CPF_SQC_INST_REQ = 78 -GCR_PERF_SEL_CPF_TCP_REQ = 79 -GCR_PERF_SEL_CPF_TCP_TLB_SHOOTDOWN_REQ = 80 -GCR_PERF_SEL_VIRT_REQ = 81 -GCR_PERF_SEL_PHY_REQ = 82 -GCR_PERF_SEL_TLB_SHOOTDOWN_HEAVY_REQ = 83 -GCR_PERF_SEL_TLB_SHOOTDOWN_LIGHT_REQ = 84 -GCR_PERF_SEL_ALL_REQ = 85 -GCR_PERF_SEL_CLK_FOR_PHY_OUTSTANDING_REQ = 86 -GCR_PERF_SEL_CLK_FOR_VIRT_OUTSTANDING_REQ = 87 -GCR_PERF_SEL_CLK_FOR_ALL_OUTSTANDING_REQ = 88 -GCR_PERF_SEL_UTCL2_REQ = 89 -GCR_PERF_SEL_UTCL2_RET = 90 -GCR_PERF_SEL_UTCL2_OUT_OF_CREDIT_EVENT = 91 -GCR_PERF_SEL_UTCL2_INFLIGHT_REQ = 92 -GCR_PERF_SEL_UTCL2_FILTERED_RET = 93 -GCR_PERF_SEL_RLC_ALL_REQ = 94 -GCR_PERF_SEL_RLC_GL2_RANGE_REQ = 95 -GCR_PERF_SEL_RLC_GL2_RANGE_LT16K_REQ = 96 -GCR_PERF_SEL_RLC_GL2_RANGE_16K_REQ = 97 -GCR_PERF_SEL_RLC_GL2_RANGE_GT16K_REQ = 98 -GCR_PERF_SEL_RLC_GL2_ALL_REQ = 99 -GCR_PERF_SEL_RLC_GL1_RANGE_REQ = 100 -GCR_PERF_SEL_RLC_GL1_RANGE_LT16K_REQ = 101 -GCR_PERF_SEL_RLC_GL1_RANGE_16K_REQ = 102 -GCR_PERF_SEL_RLC_GL1_RANGE_GT16K_REQ = 103 -GCR_PERF_SEL_RLC_GL1_ALL_REQ = 104 -GCR_PERF_SEL_RLC_METADATA_REQ = 105 -GCR_PERF_SEL_RLC_SQC_DATA_REQ = 106 -GCR_PERF_SEL_RLC_SQC_INST_REQ = 107 -GCR_PERF_SEL_RLC_TCP_REQ = 108 -GCR_PERF_SEL_RLC_TCP_TLB_SHOOTDOWN_REQ = 109 -GCR_PERF_SEL_PM_ALL_REQ = 110 -GCR_PERF_SEL_PM_GL2_RANGE_REQ = 111 -GCR_PERF_SEL_PM_GL2_RANGE_LT16K_REQ = 112 -GCR_PERF_SEL_PM_GL2_RANGE_16K_REQ = 113 -GCR_PERF_SEL_PM_GL2_RANGE_GT16K_REQ = 114 -GCR_PERF_SEL_PM_GL2_ALL_REQ = 115 -GCR_PERF_SEL_PM_GL1_RANGE_REQ = 116 -GCR_PERF_SEL_PM_GL1_RANGE_LT16K_REQ = 117 -GCR_PERF_SEL_PM_GL1_RANGE_16K_REQ = 118 -GCR_PERF_SEL_PM_GL1_RANGE_GT16K_REQ = 119 -GCR_PERF_SEL_PM_GL1_ALL_REQ = 120 -GCR_PERF_SEL_PM_METADATA_REQ = 121 -GCR_PERF_SEL_PM_SQC_DATA_REQ = 122 -GCR_PERF_SEL_PM_SQC_INST_REQ = 123 -GCR_PERF_SEL_PM_TCP_REQ = 124 -GCR_PERF_SEL_PM_TCP_TLB_SHOOTDOWN_REQ = 125 -GCR_PERF_SEL_PIO_ALL_REQ = 126 -GCR_PERF_SEL_PIO_GL2_RANGE_REQ = 127 -GCR_PERF_SEL_PIO_GL2_RANGE_LT16K_REQ = 128 -GCR_PERF_SEL_PIO_GL2_RANGE_16K_REQ = 129 -GCR_PERF_SEL_PIO_GL2_RANGE_GT16K_REQ = 130 -GCR_PERF_SEL_PIO_GL2_ALL_REQ = 131 -GCR_PERF_SEL_PIO_GL1_RANGE_REQ = 132 -GCR_PERF_SEL_PIO_GL1_RANGE_LT16K_REQ = 133 -GCR_PERF_SEL_PIO_GL1_RANGE_16K_REQ = 134 -GCR_PERF_SEL_PIO_GL1_RANGE_GT16K_REQ = 135 -GCR_PERF_SEL_PIO_GL1_ALL_REQ = 136 -GCR_PERF_SEL_PIO_METADATA_REQ = 137 -GCR_PERF_SEL_PIO_SQC_DATA_REQ = 138 -GCR_PERF_SEL_PIO_SQC_INST_REQ = 139 -GCR_PERF_SEL_PIO_TCP_REQ = 140 -GCR_PERF_SEL_PIO_TCP_TLB_SHOOTDOWN_REQ = 141 -GCRPerfSel = ctypes.c_uint32 # enum - -# values for enumeration 'UTCL1PerfSel' -UTCL1PerfSel__enumvalues = { - 0: 'UTCL1_PERF_SEL_NONE', - 1: 'UTCL1_PERF_SEL_REQS', - 2: 'UTCL1_PERF_SEL_HITS', - 3: 'UTCL1_PERF_SEL_MISSES', - 4: 'UTCL1_PERF_SEL_MH_RECENT_BUF_HIT', - 5: 'UTCL1_PERF_SEL_MH_DUPLICATE_DETECT', - 6: 'UTCL1_PERF_SEL_UTCL2_REQS', - 7: 'UTCL1_PERF_SEL_UTCL2_RET_XNACK_RETRY', - 8: 'UTCL1_PERF_SEL_UTCL2_RET_FAULT', - 9: 'UTCL1_PERF_SEL_STALL_UTCL2_CREDITS', - 10: 'UTCL1_PERF_SEL_STALL_MH_FULL', - 11: 'UTCL1_PERF_SEL_UTCL2_REQS_OUTSTANDING_ACCUM', - 12: 'UTCL1_PERF_SEL_UTCL2_RET_CNT', - 13: 'UTCL1_PERF_SEL_RTNS', - 14: 'UTCL1_PERF_SEL_XLAT_REQ_BUSY', - 15: 'UTCL1_PERF_SEL_BYPASS_REQS', - 16: 'UTCL1_PERF_SEL_HIT_INV_FILTER_REQS', - 17: 'UTCL1_PERF_SEL_UTCL2_RET_PERM_FAULT', - 18: 'UTCL1_PERF_SEL_UTCL2_RET_PRT_FAULT', - 19: 'UTCL1_PERF_SEL_CP_INVREQS', - 20: 'UTCL1_PERF_SEL_UTCL2_UTCL1_INVREQS', - 21: 'UTCL1_PERF_SEL_RANGE_INVREQS', - 22: 'UTCL1_PERF_SEL_INV_ALL_VMID_INVREQS', -} -UTCL1_PERF_SEL_NONE = 0 -UTCL1_PERF_SEL_REQS = 1 -UTCL1_PERF_SEL_HITS = 2 -UTCL1_PERF_SEL_MISSES = 3 -UTCL1_PERF_SEL_MH_RECENT_BUF_HIT = 4 -UTCL1_PERF_SEL_MH_DUPLICATE_DETECT = 5 -UTCL1_PERF_SEL_UTCL2_REQS = 6 -UTCL1_PERF_SEL_UTCL2_RET_XNACK_RETRY = 7 -UTCL1_PERF_SEL_UTCL2_RET_FAULT = 8 -UTCL1_PERF_SEL_STALL_UTCL2_CREDITS = 9 -UTCL1_PERF_SEL_STALL_MH_FULL = 10 -UTCL1_PERF_SEL_UTCL2_REQS_OUTSTANDING_ACCUM = 11 -UTCL1_PERF_SEL_UTCL2_RET_CNT = 12 -UTCL1_PERF_SEL_RTNS = 13 -UTCL1_PERF_SEL_XLAT_REQ_BUSY = 14 -UTCL1_PERF_SEL_BYPASS_REQS = 15 -UTCL1_PERF_SEL_HIT_INV_FILTER_REQS = 16 -UTCL1_PERF_SEL_UTCL2_RET_PERM_FAULT = 17 -UTCL1_PERF_SEL_UTCL2_RET_PRT_FAULT = 18 -UTCL1_PERF_SEL_CP_INVREQS = 19 -UTCL1_PERF_SEL_UTCL2_UTCL1_INVREQS = 20 -UTCL1_PERF_SEL_RANGE_INVREQS = 21 -UTCL1_PERF_SEL_INV_ALL_VMID_INVREQS = 22 -UTCL1PerfSel = ctypes.c_uint32 # enum - -# values for enumeration 'IH_CLIENT_TYPE' -IH_CLIENT_TYPE__enumvalues = { - 0: 'IH_GFX_VMID_CLIENT', - 1: 'IH_MM_VMID_CLIENT', - 2: 'IH_MULTI_VMID_CLIENT', - 3: 'IH_CLIENT_TYPE_RESERVED', -} -IH_GFX_VMID_CLIENT = 0 -IH_MM_VMID_CLIENT = 1 -IH_MULTI_VMID_CLIENT = 2 -IH_CLIENT_TYPE_RESERVED = 3 -IH_CLIENT_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'IH_INTERFACE_TYPE' -IH_INTERFACE_TYPE__enumvalues = { - 0: 'IH_LEGACY_INTERFACE', - 1: 'IH_REGISTER_WRITE_INTERFACE', -} -IH_LEGACY_INTERFACE = 0 -IH_REGISTER_WRITE_INTERFACE = 1 -IH_INTERFACE_TYPE = ctypes.c_uint32 # enum - -# values for enumeration 'IH_PERF_SEL' -IH_PERF_SEL__enumvalues = { - 0: 'IH_PERF_SEL_CYCLE', - 1: 'IH_PERF_SEL_IDLE', - 2: 'IH_PERF_SEL_INPUT_IDLE', - 3: 'IH_PERF_SEL_BUFFER_IDLE', - 4: 'IH_PERF_SEL_RB0_FULL', - 5: 'IH_PERF_SEL_RB0_OVERFLOW', - 6: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK', - 7: 'IH_PERF_SEL_RB0_WPTR_WRAP', - 8: 'IH_PERF_SEL_RB0_RPTR_WRAP', - 9: 'IH_PERF_SEL_MC_WR_IDLE', - 10: 'IH_PERF_SEL_MC_WR_COUNT', - 11: 'IH_PERF_SEL_MC_WR_STALL', - 12: 'IH_PERF_SEL_MC_WR_CLEAN_PENDING', - 13: 'IH_PERF_SEL_MC_WR_CLEAN_STALL', - 14: 'IH_PERF_SEL_BIF_LINE0_RISING', - 15: 'IH_PERF_SEL_BIF_LINE0_FALLING', - 16: 'IH_PERF_SEL_RB1_FULL', - 17: 'IH_PERF_SEL_RB1_OVERFLOW', - 18: 'IH_PERF_SEL_COOKIE_REC_ERROR', - 19: 'IH_PERF_SEL_RB1_WPTR_WRAP', - 20: 'IH_PERF_SEL_RB1_RPTR_WRAP', - 21: 'IH_PERF_SEL_RB2_FULL', - 22: 'IH_PERF_SEL_RB2_OVERFLOW', - 23: 'IH_PERF_SEL_CLIENT_CREDIT_ERROR', - 24: 'IH_PERF_SEL_RB2_WPTR_WRAP', - 25: 'IH_PERF_SEL_RB2_RPTR_WRAP', - 26: 'IH_PERF_SEL_STORM_CLIENT_INT_DROP', - 27: 'IH_PERF_SEL_SELF_IV_VALID', - 28: 'IH_PERF_SEL_BUFFER_FIFO_FULL', - 29: 'IH_PERF_SEL_RB0_FULL_VF0', - 30: 'IH_PERF_SEL_RB0_FULL_VF1', - 31: 'IH_PERF_SEL_RB0_FULL_VF2', - 32: 'IH_PERF_SEL_RB0_FULL_VF3', - 33: 'IH_PERF_SEL_RB0_FULL_VF4', - 34: 'IH_PERF_SEL_RB0_FULL_VF5', - 35: 'IH_PERF_SEL_RB0_FULL_VF6', - 36: 'IH_PERF_SEL_RB0_FULL_VF7', - 37: 'IH_PERF_SEL_RB0_FULL_VF8', - 38: 'IH_PERF_SEL_RB0_FULL_VF9', - 39: 'IH_PERF_SEL_RB0_FULL_VF10', - 40: 'IH_PERF_SEL_RB0_FULL_VF11', - 41: 'IH_PERF_SEL_RB0_FULL_VF12', - 42: 'IH_PERF_SEL_RB0_FULL_VF13', - 43: 'IH_PERF_SEL_RB0_FULL_VF14', - 44: 'IH_PERF_SEL_RB0_FULL_VF15', - 45: 'IH_PERF_SEL_RB0_OVERFLOW_VF0', - 46: 'IH_PERF_SEL_RB0_OVERFLOW_VF1', - 47: 'IH_PERF_SEL_RB0_OVERFLOW_VF2', - 48: 'IH_PERF_SEL_RB0_OVERFLOW_VF3', - 49: 'IH_PERF_SEL_RB0_OVERFLOW_VF4', - 50: 'IH_PERF_SEL_RB0_OVERFLOW_VF5', - 51: 'IH_PERF_SEL_RB0_OVERFLOW_VF6', - 52: 'IH_PERF_SEL_RB0_OVERFLOW_VF7', - 53: 'IH_PERF_SEL_RB0_OVERFLOW_VF8', - 54: 'IH_PERF_SEL_RB0_OVERFLOW_VF9', - 55: 'IH_PERF_SEL_RB0_OVERFLOW_VF10', - 56: 'IH_PERF_SEL_RB0_OVERFLOW_VF11', - 57: 'IH_PERF_SEL_RB0_OVERFLOW_VF12', - 58: 'IH_PERF_SEL_RB0_OVERFLOW_VF13', - 59: 'IH_PERF_SEL_RB0_OVERFLOW_VF14', - 60: 'IH_PERF_SEL_RB0_OVERFLOW_VF15', - 61: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF0', - 62: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF1', - 63: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF2', - 64: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF3', - 65: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF4', - 66: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF5', - 67: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF6', - 68: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF7', - 69: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF8', - 70: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF9', - 71: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF10', - 72: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF11', - 73: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF12', - 74: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF13', - 75: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF14', - 76: 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF15', - 77: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF0', - 78: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF1', - 79: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF2', - 80: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF3', - 81: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF4', - 82: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF5', - 83: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF6', - 84: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF7', - 85: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF8', - 86: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF9', - 87: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF10', - 88: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF11', - 89: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF12', - 90: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF13', - 91: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF14', - 92: 'IH_PERF_SEL_RB0_WPTR_WRAP_VF15', - 93: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF0', - 94: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF1', - 95: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF2', - 96: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF3', - 97: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF4', - 98: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF5', - 99: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF6', - 100: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF7', - 101: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF8', - 102: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF9', - 103: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF10', - 104: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF11', - 105: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF12', - 106: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF13', - 107: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF14', - 108: 'IH_PERF_SEL_RB0_RPTR_WRAP_VF15', - 109: 'IH_PERF_SEL_BIF_LINE0_RISING_VF0', - 110: 'IH_PERF_SEL_BIF_LINE0_RISING_VF1', - 111: 'IH_PERF_SEL_BIF_LINE0_RISING_VF2', - 112: 'IH_PERF_SEL_BIF_LINE0_RISING_VF3', - 113: 'IH_PERF_SEL_BIF_LINE0_RISING_VF4', - 114: 'IH_PERF_SEL_BIF_LINE0_RISING_VF5', - 115: 'IH_PERF_SEL_BIF_LINE0_RISING_VF6', - 116: 'IH_PERF_SEL_BIF_LINE0_RISING_VF7', - 117: 'IH_PERF_SEL_BIF_LINE0_RISING_VF8', - 118: 'IH_PERF_SEL_BIF_LINE0_RISING_VF9', - 119: 'IH_PERF_SEL_BIF_LINE0_RISING_VF10', - 120: 'IH_PERF_SEL_BIF_LINE0_RISING_VF11', - 121: 'IH_PERF_SEL_BIF_LINE0_RISING_VF12', - 122: 'IH_PERF_SEL_BIF_LINE0_RISING_VF13', - 123: 'IH_PERF_SEL_BIF_LINE0_RISING_VF14', - 124: 'IH_PERF_SEL_BIF_LINE0_RISING_VF15', - 125: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF0', - 126: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF1', - 127: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF2', - 128: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF3', - 129: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF4', - 130: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF5', - 131: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF6', - 132: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF7', - 133: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF8', - 134: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF9', - 135: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF10', - 136: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF11', - 137: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF12', - 138: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF13', - 139: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF14', - 140: 'IH_PERF_SEL_BIF_LINE0_FALLING_VF15', - 141: 'IH_PERF_SEL_CLIENT0_INT', - 142: 'IH_PERF_SEL_CLIENT1_INT', - 143: 'IH_PERF_SEL_CLIENT2_INT', - 144: 'IH_PERF_SEL_CLIENT3_INT', - 145: 'IH_PERF_SEL_CLIENT4_INT', - 146: 'IH_PERF_SEL_CLIENT5_INT', - 147: 'IH_PERF_SEL_CLIENT6_INT', - 148: 'IH_PERF_SEL_CLIENT7_INT', - 149: 'IH_PERF_SEL_CLIENT8_INT', - 150: 'IH_PERF_SEL_CLIENT9_INT', - 151: 'IH_PERF_SEL_CLIENT10_INT', - 152: 'IH_PERF_SEL_CLIENT11_INT', - 153: 'IH_PERF_SEL_CLIENT12_INT', - 154: 'IH_PERF_SEL_CLIENT13_INT', - 155: 'IH_PERF_SEL_CLIENT14_INT', - 156: 'IH_PERF_SEL_CLIENT15_INT', - 157: 'IH_PERF_SEL_CLIENT16_INT', - 158: 'IH_PERF_SEL_CLIENT17_INT', - 159: 'IH_PERF_SEL_CLIENT18_INT', - 160: 'IH_PERF_SEL_CLIENT19_INT', - 161: 'IH_PERF_SEL_CLIENT20_INT', - 162: 'IH_PERF_SEL_CLIENT21_INT', - 163: 'IH_PERF_SEL_CLIENT22_INT', - 164: 'IH_PERF_SEL_CLIENT23_INT', - 165: 'IH_PERF_SEL_CLIENT24_INT', - 166: 'IH_PERF_SEL_CLIENT25_INT', - 167: 'IH_PERF_SEL_CLIENT26_INT', - 168: 'IH_PERF_SEL_CLIENT27_INT', - 169: 'IH_PERF_SEL_CLIENT28_INT', - 170: 'IH_PERF_SEL_CLIENT29_INT', - 171: 'IH_PERF_SEL_CLIENT30_INT', - 172: 'IH_PERF_SEL_CLIENT31_INT', - 173: 'IH_PERF_SEL_RB1_FULL_VF0', - 174: 'IH_PERF_SEL_RB1_FULL_VF1', - 175: 'IH_PERF_SEL_RB1_FULL_VF2', - 176: 'IH_PERF_SEL_RB1_FULL_VF3', - 177: 'IH_PERF_SEL_RB1_FULL_VF4', - 178: 'IH_PERF_SEL_RB1_FULL_VF5', - 179: 'IH_PERF_SEL_RB1_FULL_VF6', - 180: 'IH_PERF_SEL_RB1_FULL_VF7', - 181: 'IH_PERF_SEL_RB1_FULL_VF8', - 182: 'IH_PERF_SEL_RB1_FULL_VF9', - 183: 'IH_PERF_SEL_RB1_FULL_VF10', - 184: 'IH_PERF_SEL_RB1_FULL_VF11', - 185: 'IH_PERF_SEL_RB1_FULL_VF12', - 186: 'IH_PERF_SEL_RB1_FULL_VF13', - 187: 'IH_PERF_SEL_RB1_FULL_VF14', - 188: 'IH_PERF_SEL_RB1_FULL_VF15', - 189: 'IH_PERF_SEL_RB1_OVERFLOW_VF0', - 190: 'IH_PERF_SEL_RB1_OVERFLOW_VF1', - 191: 'IH_PERF_SEL_RB1_OVERFLOW_VF2', - 192: 'IH_PERF_SEL_RB1_OVERFLOW_VF3', - 193: 'IH_PERF_SEL_RB1_OVERFLOW_VF4', - 194: 'IH_PERF_SEL_RB1_OVERFLOW_VF5', - 195: 'IH_PERF_SEL_RB1_OVERFLOW_VF6', - 196: 'IH_PERF_SEL_RB1_OVERFLOW_VF7', - 197: 'IH_PERF_SEL_RB1_OVERFLOW_VF8', - 198: 'IH_PERF_SEL_RB1_OVERFLOW_VF9', - 199: 'IH_PERF_SEL_RB1_OVERFLOW_VF10', - 200: 'IH_PERF_SEL_RB1_OVERFLOW_VF11', - 201: 'IH_PERF_SEL_RB1_OVERFLOW_VF12', - 202: 'IH_PERF_SEL_RB1_OVERFLOW_VF13', - 203: 'IH_PERF_SEL_RB1_OVERFLOW_VF14', - 204: 'IH_PERF_SEL_RB1_OVERFLOW_VF15', - 205: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF0', - 206: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF1', - 207: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF2', - 208: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF3', - 209: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF4', - 210: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF5', - 211: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF6', - 212: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF7', - 213: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF8', - 214: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF9', - 215: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF10', - 216: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF11', - 217: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF12', - 218: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF13', - 219: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF14', - 220: 'IH_PERF_SEL_RB1_WPTR_WRAP_VF15', - 221: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF0', - 222: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF1', - 223: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF2', - 224: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF3', - 225: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF4', - 226: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF5', - 227: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF6', - 228: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF7', - 229: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF8', - 230: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF9', - 231: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF10', - 232: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF11', - 233: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF12', - 234: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF13', - 235: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF14', - 236: 'IH_PERF_SEL_RB1_RPTR_WRAP_VF15', - 237: 'IH_PERF_SEL_RB2_FULL_VF0', - 238: 'IH_PERF_SEL_RB2_FULL_VF1', - 239: 'IH_PERF_SEL_RB2_FULL_VF2', - 240: 'IH_PERF_SEL_RB2_FULL_VF3', - 241: 'IH_PERF_SEL_RB2_FULL_VF4', - 242: 'IH_PERF_SEL_RB2_FULL_VF5', - 243: 'IH_PERF_SEL_RB2_FULL_VF6', - 244: 'IH_PERF_SEL_RB2_FULL_VF7', - 245: 'IH_PERF_SEL_RB2_FULL_VF8', - 246: 'IH_PERF_SEL_RB2_FULL_VF9', - 247: 'IH_PERF_SEL_RB2_FULL_VF10', - 248: 'IH_PERF_SEL_RB2_FULL_VF11', - 249: 'IH_PERF_SEL_RB2_FULL_VF12', - 250: 'IH_PERF_SEL_RB2_FULL_VF13', - 251: 'IH_PERF_SEL_RB2_FULL_VF14', - 252: 'IH_PERF_SEL_RB2_FULL_VF15', - 253: 'IH_PERF_SEL_RB2_OVERFLOW_VF0', - 254: 'IH_PERF_SEL_RB2_OVERFLOW_VF1', - 255: 'IH_PERF_SEL_RB2_OVERFLOW_VF2', - 256: 'IH_PERF_SEL_RB2_OVERFLOW_VF3', - 257: 'IH_PERF_SEL_RB2_OVERFLOW_VF4', - 258: 'IH_PERF_SEL_RB2_OVERFLOW_VF5', - 259: 'IH_PERF_SEL_RB2_OVERFLOW_VF6', - 260: 'IH_PERF_SEL_RB2_OVERFLOW_VF7', - 261: 'IH_PERF_SEL_RB2_OVERFLOW_VF8', - 262: 'IH_PERF_SEL_RB2_OVERFLOW_VF9', - 263: 'IH_PERF_SEL_RB2_OVERFLOW_VF10', - 264: 'IH_PERF_SEL_RB2_OVERFLOW_VF11', - 265: 'IH_PERF_SEL_RB2_OVERFLOW_VF12', - 266: 'IH_PERF_SEL_RB2_OVERFLOW_VF13', - 267: 'IH_PERF_SEL_RB2_OVERFLOW_VF14', - 268: 'IH_PERF_SEL_RB2_OVERFLOW_VF15', - 269: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF0', - 270: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF1', - 271: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF2', - 272: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF3', - 273: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF4', - 274: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF5', - 275: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF6', - 276: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF7', - 277: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF8', - 278: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF9', - 279: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF10', - 280: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF11', - 281: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF12', - 282: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF13', - 283: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF14', - 284: 'IH_PERF_SEL_RB2_WPTR_WRAP_VF15', - 285: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF0', - 286: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF1', - 287: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF2', - 288: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF3', - 289: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF4', - 290: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF5', - 291: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF6', - 292: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF7', - 293: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF8', - 294: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF9', - 295: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF10', - 296: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF11', - 297: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF12', - 298: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF13', - 299: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF14', - 300: 'IH_PERF_SEL_RB2_RPTR_WRAP_VF15', - 301: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP', - 302: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF0', - 303: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF1', - 304: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF2', - 305: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF3', - 306: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF4', - 307: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF5', - 308: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF6', - 309: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF7', - 310: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF8', - 311: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF9', - 312: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF10', - 313: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF11', - 314: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF12', - 315: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF13', - 316: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF14', - 317: 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF15', - 318: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP', - 319: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF0', - 320: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF1', - 321: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF2', - 322: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF3', - 323: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF4', - 324: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF5', - 325: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF6', - 326: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF7', - 327: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF8', - 328: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF9', - 329: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF10', - 330: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF11', - 331: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF12', - 332: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF13', - 333: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF14', - 334: 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF15', - 335: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP', - 336: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF0', - 337: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF1', - 338: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF2', - 339: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF3', - 340: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF4', - 341: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF5', - 342: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF6', - 343: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF7', - 344: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF8', - 345: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF9', - 346: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF10', - 347: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF11', - 348: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF12', - 349: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF13', - 350: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF14', - 351: 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF15', - 352: 'IH_PERF_SEL_RB0_LOAD_RPTR', - 353: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF0', - 354: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF1', - 355: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF2', - 356: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF3', - 357: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF4', - 358: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF5', - 359: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF6', - 360: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF7', - 361: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF8', - 362: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF9', - 363: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF10', - 364: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF11', - 365: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF12', - 366: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF13', - 367: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF14', - 368: 'IH_PERF_SEL_RB0_LOAD_RPTR_VF15', - 369: 'IH_PERF_SEL_RB1_LOAD_RPTR', - 370: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF0', - 371: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF1', - 372: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF2', - 373: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF3', - 374: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF4', - 375: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF5', - 376: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF6', - 377: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF7', - 378: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF8', - 379: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF9', - 380: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF10', - 381: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF11', - 382: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF12', - 383: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF13', - 384: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF14', - 385: 'IH_PERF_SEL_RB1_LOAD_RPTR_VF15', - 386: 'IH_PERF_SEL_RB2_LOAD_RPTR', - 387: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF0', - 388: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF1', - 389: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF2', - 390: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF3', - 391: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF4', - 392: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF5', - 393: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF6', - 394: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF7', - 395: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF8', - 396: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF9', - 397: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF10', - 398: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF11', - 399: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF12', - 400: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF13', - 401: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF14', - 402: 'IH_PERF_SEL_RB2_LOAD_RPTR_VF15', -} -IH_PERF_SEL_CYCLE = 0 -IH_PERF_SEL_IDLE = 1 -IH_PERF_SEL_INPUT_IDLE = 2 -IH_PERF_SEL_BUFFER_IDLE = 3 -IH_PERF_SEL_RB0_FULL = 4 -IH_PERF_SEL_RB0_OVERFLOW = 5 -IH_PERF_SEL_RB0_WPTR_WRITEBACK = 6 -IH_PERF_SEL_RB0_WPTR_WRAP = 7 -IH_PERF_SEL_RB0_RPTR_WRAP = 8 -IH_PERF_SEL_MC_WR_IDLE = 9 -IH_PERF_SEL_MC_WR_COUNT = 10 -IH_PERF_SEL_MC_WR_STALL = 11 -IH_PERF_SEL_MC_WR_CLEAN_PENDING = 12 -IH_PERF_SEL_MC_WR_CLEAN_STALL = 13 -IH_PERF_SEL_BIF_LINE0_RISING = 14 -IH_PERF_SEL_BIF_LINE0_FALLING = 15 -IH_PERF_SEL_RB1_FULL = 16 -IH_PERF_SEL_RB1_OVERFLOW = 17 -IH_PERF_SEL_COOKIE_REC_ERROR = 18 -IH_PERF_SEL_RB1_WPTR_WRAP = 19 -IH_PERF_SEL_RB1_RPTR_WRAP = 20 -IH_PERF_SEL_RB2_FULL = 21 -IH_PERF_SEL_RB2_OVERFLOW = 22 -IH_PERF_SEL_CLIENT_CREDIT_ERROR = 23 -IH_PERF_SEL_RB2_WPTR_WRAP = 24 -IH_PERF_SEL_RB2_RPTR_WRAP = 25 -IH_PERF_SEL_STORM_CLIENT_INT_DROP = 26 -IH_PERF_SEL_SELF_IV_VALID = 27 -IH_PERF_SEL_BUFFER_FIFO_FULL = 28 -IH_PERF_SEL_RB0_FULL_VF0 = 29 -IH_PERF_SEL_RB0_FULL_VF1 = 30 -IH_PERF_SEL_RB0_FULL_VF2 = 31 -IH_PERF_SEL_RB0_FULL_VF3 = 32 -IH_PERF_SEL_RB0_FULL_VF4 = 33 -IH_PERF_SEL_RB0_FULL_VF5 = 34 -IH_PERF_SEL_RB0_FULL_VF6 = 35 -IH_PERF_SEL_RB0_FULL_VF7 = 36 -IH_PERF_SEL_RB0_FULL_VF8 = 37 -IH_PERF_SEL_RB0_FULL_VF9 = 38 -IH_PERF_SEL_RB0_FULL_VF10 = 39 -IH_PERF_SEL_RB0_FULL_VF11 = 40 -IH_PERF_SEL_RB0_FULL_VF12 = 41 -IH_PERF_SEL_RB0_FULL_VF13 = 42 -IH_PERF_SEL_RB0_FULL_VF14 = 43 -IH_PERF_SEL_RB0_FULL_VF15 = 44 -IH_PERF_SEL_RB0_OVERFLOW_VF0 = 45 -IH_PERF_SEL_RB0_OVERFLOW_VF1 = 46 -IH_PERF_SEL_RB0_OVERFLOW_VF2 = 47 -IH_PERF_SEL_RB0_OVERFLOW_VF3 = 48 -IH_PERF_SEL_RB0_OVERFLOW_VF4 = 49 -IH_PERF_SEL_RB0_OVERFLOW_VF5 = 50 -IH_PERF_SEL_RB0_OVERFLOW_VF6 = 51 -IH_PERF_SEL_RB0_OVERFLOW_VF7 = 52 -IH_PERF_SEL_RB0_OVERFLOW_VF8 = 53 -IH_PERF_SEL_RB0_OVERFLOW_VF9 = 54 -IH_PERF_SEL_RB0_OVERFLOW_VF10 = 55 -IH_PERF_SEL_RB0_OVERFLOW_VF11 = 56 -IH_PERF_SEL_RB0_OVERFLOW_VF12 = 57 -IH_PERF_SEL_RB0_OVERFLOW_VF13 = 58 -IH_PERF_SEL_RB0_OVERFLOW_VF14 = 59 -IH_PERF_SEL_RB0_OVERFLOW_VF15 = 60 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF0 = 61 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF1 = 62 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF2 = 63 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF3 = 64 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF4 = 65 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF5 = 66 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF6 = 67 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF7 = 68 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF8 = 69 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF9 = 70 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF10 = 71 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF11 = 72 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF12 = 73 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF13 = 74 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF14 = 75 -IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF15 = 76 -IH_PERF_SEL_RB0_WPTR_WRAP_VF0 = 77 -IH_PERF_SEL_RB0_WPTR_WRAP_VF1 = 78 -IH_PERF_SEL_RB0_WPTR_WRAP_VF2 = 79 -IH_PERF_SEL_RB0_WPTR_WRAP_VF3 = 80 -IH_PERF_SEL_RB0_WPTR_WRAP_VF4 = 81 -IH_PERF_SEL_RB0_WPTR_WRAP_VF5 = 82 -IH_PERF_SEL_RB0_WPTR_WRAP_VF6 = 83 -IH_PERF_SEL_RB0_WPTR_WRAP_VF7 = 84 -IH_PERF_SEL_RB0_WPTR_WRAP_VF8 = 85 -IH_PERF_SEL_RB0_WPTR_WRAP_VF9 = 86 -IH_PERF_SEL_RB0_WPTR_WRAP_VF10 = 87 -IH_PERF_SEL_RB0_WPTR_WRAP_VF11 = 88 -IH_PERF_SEL_RB0_WPTR_WRAP_VF12 = 89 -IH_PERF_SEL_RB0_WPTR_WRAP_VF13 = 90 -IH_PERF_SEL_RB0_WPTR_WRAP_VF14 = 91 -IH_PERF_SEL_RB0_WPTR_WRAP_VF15 = 92 -IH_PERF_SEL_RB0_RPTR_WRAP_VF0 = 93 -IH_PERF_SEL_RB0_RPTR_WRAP_VF1 = 94 -IH_PERF_SEL_RB0_RPTR_WRAP_VF2 = 95 -IH_PERF_SEL_RB0_RPTR_WRAP_VF3 = 96 -IH_PERF_SEL_RB0_RPTR_WRAP_VF4 = 97 -IH_PERF_SEL_RB0_RPTR_WRAP_VF5 = 98 -IH_PERF_SEL_RB0_RPTR_WRAP_VF6 = 99 -IH_PERF_SEL_RB0_RPTR_WRAP_VF7 = 100 -IH_PERF_SEL_RB0_RPTR_WRAP_VF8 = 101 -IH_PERF_SEL_RB0_RPTR_WRAP_VF9 = 102 -IH_PERF_SEL_RB0_RPTR_WRAP_VF10 = 103 -IH_PERF_SEL_RB0_RPTR_WRAP_VF11 = 104 -IH_PERF_SEL_RB0_RPTR_WRAP_VF12 = 105 -IH_PERF_SEL_RB0_RPTR_WRAP_VF13 = 106 -IH_PERF_SEL_RB0_RPTR_WRAP_VF14 = 107 -IH_PERF_SEL_RB0_RPTR_WRAP_VF15 = 108 -IH_PERF_SEL_BIF_LINE0_RISING_VF0 = 109 -IH_PERF_SEL_BIF_LINE0_RISING_VF1 = 110 -IH_PERF_SEL_BIF_LINE0_RISING_VF2 = 111 -IH_PERF_SEL_BIF_LINE0_RISING_VF3 = 112 -IH_PERF_SEL_BIF_LINE0_RISING_VF4 = 113 -IH_PERF_SEL_BIF_LINE0_RISING_VF5 = 114 -IH_PERF_SEL_BIF_LINE0_RISING_VF6 = 115 -IH_PERF_SEL_BIF_LINE0_RISING_VF7 = 116 -IH_PERF_SEL_BIF_LINE0_RISING_VF8 = 117 -IH_PERF_SEL_BIF_LINE0_RISING_VF9 = 118 -IH_PERF_SEL_BIF_LINE0_RISING_VF10 = 119 -IH_PERF_SEL_BIF_LINE0_RISING_VF11 = 120 -IH_PERF_SEL_BIF_LINE0_RISING_VF12 = 121 -IH_PERF_SEL_BIF_LINE0_RISING_VF13 = 122 -IH_PERF_SEL_BIF_LINE0_RISING_VF14 = 123 -IH_PERF_SEL_BIF_LINE0_RISING_VF15 = 124 -IH_PERF_SEL_BIF_LINE0_FALLING_VF0 = 125 -IH_PERF_SEL_BIF_LINE0_FALLING_VF1 = 126 -IH_PERF_SEL_BIF_LINE0_FALLING_VF2 = 127 -IH_PERF_SEL_BIF_LINE0_FALLING_VF3 = 128 -IH_PERF_SEL_BIF_LINE0_FALLING_VF4 = 129 -IH_PERF_SEL_BIF_LINE0_FALLING_VF5 = 130 -IH_PERF_SEL_BIF_LINE0_FALLING_VF6 = 131 -IH_PERF_SEL_BIF_LINE0_FALLING_VF7 = 132 -IH_PERF_SEL_BIF_LINE0_FALLING_VF8 = 133 -IH_PERF_SEL_BIF_LINE0_FALLING_VF9 = 134 -IH_PERF_SEL_BIF_LINE0_FALLING_VF10 = 135 -IH_PERF_SEL_BIF_LINE0_FALLING_VF11 = 136 -IH_PERF_SEL_BIF_LINE0_FALLING_VF12 = 137 -IH_PERF_SEL_BIF_LINE0_FALLING_VF13 = 138 -IH_PERF_SEL_BIF_LINE0_FALLING_VF14 = 139 -IH_PERF_SEL_BIF_LINE0_FALLING_VF15 = 140 -IH_PERF_SEL_CLIENT0_INT = 141 -IH_PERF_SEL_CLIENT1_INT = 142 -IH_PERF_SEL_CLIENT2_INT = 143 -IH_PERF_SEL_CLIENT3_INT = 144 -IH_PERF_SEL_CLIENT4_INT = 145 -IH_PERF_SEL_CLIENT5_INT = 146 -IH_PERF_SEL_CLIENT6_INT = 147 -IH_PERF_SEL_CLIENT7_INT = 148 -IH_PERF_SEL_CLIENT8_INT = 149 -IH_PERF_SEL_CLIENT9_INT = 150 -IH_PERF_SEL_CLIENT10_INT = 151 -IH_PERF_SEL_CLIENT11_INT = 152 -IH_PERF_SEL_CLIENT12_INT = 153 -IH_PERF_SEL_CLIENT13_INT = 154 -IH_PERF_SEL_CLIENT14_INT = 155 -IH_PERF_SEL_CLIENT15_INT = 156 -IH_PERF_SEL_CLIENT16_INT = 157 -IH_PERF_SEL_CLIENT17_INT = 158 -IH_PERF_SEL_CLIENT18_INT = 159 -IH_PERF_SEL_CLIENT19_INT = 160 -IH_PERF_SEL_CLIENT20_INT = 161 -IH_PERF_SEL_CLIENT21_INT = 162 -IH_PERF_SEL_CLIENT22_INT = 163 -IH_PERF_SEL_CLIENT23_INT = 164 -IH_PERF_SEL_CLIENT24_INT = 165 -IH_PERF_SEL_CLIENT25_INT = 166 -IH_PERF_SEL_CLIENT26_INT = 167 -IH_PERF_SEL_CLIENT27_INT = 168 -IH_PERF_SEL_CLIENT28_INT = 169 -IH_PERF_SEL_CLIENT29_INT = 170 -IH_PERF_SEL_CLIENT30_INT = 171 -IH_PERF_SEL_CLIENT31_INT = 172 -IH_PERF_SEL_RB1_FULL_VF0 = 173 -IH_PERF_SEL_RB1_FULL_VF1 = 174 -IH_PERF_SEL_RB1_FULL_VF2 = 175 -IH_PERF_SEL_RB1_FULL_VF3 = 176 -IH_PERF_SEL_RB1_FULL_VF4 = 177 -IH_PERF_SEL_RB1_FULL_VF5 = 178 -IH_PERF_SEL_RB1_FULL_VF6 = 179 -IH_PERF_SEL_RB1_FULL_VF7 = 180 -IH_PERF_SEL_RB1_FULL_VF8 = 181 -IH_PERF_SEL_RB1_FULL_VF9 = 182 -IH_PERF_SEL_RB1_FULL_VF10 = 183 -IH_PERF_SEL_RB1_FULL_VF11 = 184 -IH_PERF_SEL_RB1_FULL_VF12 = 185 -IH_PERF_SEL_RB1_FULL_VF13 = 186 -IH_PERF_SEL_RB1_FULL_VF14 = 187 -IH_PERF_SEL_RB1_FULL_VF15 = 188 -IH_PERF_SEL_RB1_OVERFLOW_VF0 = 189 -IH_PERF_SEL_RB1_OVERFLOW_VF1 = 190 -IH_PERF_SEL_RB1_OVERFLOW_VF2 = 191 -IH_PERF_SEL_RB1_OVERFLOW_VF3 = 192 -IH_PERF_SEL_RB1_OVERFLOW_VF4 = 193 -IH_PERF_SEL_RB1_OVERFLOW_VF5 = 194 -IH_PERF_SEL_RB1_OVERFLOW_VF6 = 195 -IH_PERF_SEL_RB1_OVERFLOW_VF7 = 196 -IH_PERF_SEL_RB1_OVERFLOW_VF8 = 197 -IH_PERF_SEL_RB1_OVERFLOW_VF9 = 198 -IH_PERF_SEL_RB1_OVERFLOW_VF10 = 199 -IH_PERF_SEL_RB1_OVERFLOW_VF11 = 200 -IH_PERF_SEL_RB1_OVERFLOW_VF12 = 201 -IH_PERF_SEL_RB1_OVERFLOW_VF13 = 202 -IH_PERF_SEL_RB1_OVERFLOW_VF14 = 203 -IH_PERF_SEL_RB1_OVERFLOW_VF15 = 204 -IH_PERF_SEL_RB1_WPTR_WRAP_VF0 = 205 -IH_PERF_SEL_RB1_WPTR_WRAP_VF1 = 206 -IH_PERF_SEL_RB1_WPTR_WRAP_VF2 = 207 -IH_PERF_SEL_RB1_WPTR_WRAP_VF3 = 208 -IH_PERF_SEL_RB1_WPTR_WRAP_VF4 = 209 -IH_PERF_SEL_RB1_WPTR_WRAP_VF5 = 210 -IH_PERF_SEL_RB1_WPTR_WRAP_VF6 = 211 -IH_PERF_SEL_RB1_WPTR_WRAP_VF7 = 212 -IH_PERF_SEL_RB1_WPTR_WRAP_VF8 = 213 -IH_PERF_SEL_RB1_WPTR_WRAP_VF9 = 214 -IH_PERF_SEL_RB1_WPTR_WRAP_VF10 = 215 -IH_PERF_SEL_RB1_WPTR_WRAP_VF11 = 216 -IH_PERF_SEL_RB1_WPTR_WRAP_VF12 = 217 -IH_PERF_SEL_RB1_WPTR_WRAP_VF13 = 218 -IH_PERF_SEL_RB1_WPTR_WRAP_VF14 = 219 -IH_PERF_SEL_RB1_WPTR_WRAP_VF15 = 220 -IH_PERF_SEL_RB1_RPTR_WRAP_VF0 = 221 -IH_PERF_SEL_RB1_RPTR_WRAP_VF1 = 222 -IH_PERF_SEL_RB1_RPTR_WRAP_VF2 = 223 -IH_PERF_SEL_RB1_RPTR_WRAP_VF3 = 224 -IH_PERF_SEL_RB1_RPTR_WRAP_VF4 = 225 -IH_PERF_SEL_RB1_RPTR_WRAP_VF5 = 226 -IH_PERF_SEL_RB1_RPTR_WRAP_VF6 = 227 -IH_PERF_SEL_RB1_RPTR_WRAP_VF7 = 228 -IH_PERF_SEL_RB1_RPTR_WRAP_VF8 = 229 -IH_PERF_SEL_RB1_RPTR_WRAP_VF9 = 230 -IH_PERF_SEL_RB1_RPTR_WRAP_VF10 = 231 -IH_PERF_SEL_RB1_RPTR_WRAP_VF11 = 232 -IH_PERF_SEL_RB1_RPTR_WRAP_VF12 = 233 -IH_PERF_SEL_RB1_RPTR_WRAP_VF13 = 234 -IH_PERF_SEL_RB1_RPTR_WRAP_VF14 = 235 -IH_PERF_SEL_RB1_RPTR_WRAP_VF15 = 236 -IH_PERF_SEL_RB2_FULL_VF0 = 237 -IH_PERF_SEL_RB2_FULL_VF1 = 238 -IH_PERF_SEL_RB2_FULL_VF2 = 239 -IH_PERF_SEL_RB2_FULL_VF3 = 240 -IH_PERF_SEL_RB2_FULL_VF4 = 241 -IH_PERF_SEL_RB2_FULL_VF5 = 242 -IH_PERF_SEL_RB2_FULL_VF6 = 243 -IH_PERF_SEL_RB2_FULL_VF7 = 244 -IH_PERF_SEL_RB2_FULL_VF8 = 245 -IH_PERF_SEL_RB2_FULL_VF9 = 246 -IH_PERF_SEL_RB2_FULL_VF10 = 247 -IH_PERF_SEL_RB2_FULL_VF11 = 248 -IH_PERF_SEL_RB2_FULL_VF12 = 249 -IH_PERF_SEL_RB2_FULL_VF13 = 250 -IH_PERF_SEL_RB2_FULL_VF14 = 251 -IH_PERF_SEL_RB2_FULL_VF15 = 252 -IH_PERF_SEL_RB2_OVERFLOW_VF0 = 253 -IH_PERF_SEL_RB2_OVERFLOW_VF1 = 254 -IH_PERF_SEL_RB2_OVERFLOW_VF2 = 255 -IH_PERF_SEL_RB2_OVERFLOW_VF3 = 256 -IH_PERF_SEL_RB2_OVERFLOW_VF4 = 257 -IH_PERF_SEL_RB2_OVERFLOW_VF5 = 258 -IH_PERF_SEL_RB2_OVERFLOW_VF6 = 259 -IH_PERF_SEL_RB2_OVERFLOW_VF7 = 260 -IH_PERF_SEL_RB2_OVERFLOW_VF8 = 261 -IH_PERF_SEL_RB2_OVERFLOW_VF9 = 262 -IH_PERF_SEL_RB2_OVERFLOW_VF10 = 263 -IH_PERF_SEL_RB2_OVERFLOW_VF11 = 264 -IH_PERF_SEL_RB2_OVERFLOW_VF12 = 265 -IH_PERF_SEL_RB2_OVERFLOW_VF13 = 266 -IH_PERF_SEL_RB2_OVERFLOW_VF14 = 267 -IH_PERF_SEL_RB2_OVERFLOW_VF15 = 268 -IH_PERF_SEL_RB2_WPTR_WRAP_VF0 = 269 -IH_PERF_SEL_RB2_WPTR_WRAP_VF1 = 270 -IH_PERF_SEL_RB2_WPTR_WRAP_VF2 = 271 -IH_PERF_SEL_RB2_WPTR_WRAP_VF3 = 272 -IH_PERF_SEL_RB2_WPTR_WRAP_VF4 = 273 -IH_PERF_SEL_RB2_WPTR_WRAP_VF5 = 274 -IH_PERF_SEL_RB2_WPTR_WRAP_VF6 = 275 -IH_PERF_SEL_RB2_WPTR_WRAP_VF7 = 276 -IH_PERF_SEL_RB2_WPTR_WRAP_VF8 = 277 -IH_PERF_SEL_RB2_WPTR_WRAP_VF9 = 278 -IH_PERF_SEL_RB2_WPTR_WRAP_VF10 = 279 -IH_PERF_SEL_RB2_WPTR_WRAP_VF11 = 280 -IH_PERF_SEL_RB2_WPTR_WRAP_VF12 = 281 -IH_PERF_SEL_RB2_WPTR_WRAP_VF13 = 282 -IH_PERF_SEL_RB2_WPTR_WRAP_VF14 = 283 -IH_PERF_SEL_RB2_WPTR_WRAP_VF15 = 284 -IH_PERF_SEL_RB2_RPTR_WRAP_VF0 = 285 -IH_PERF_SEL_RB2_RPTR_WRAP_VF1 = 286 -IH_PERF_SEL_RB2_RPTR_WRAP_VF2 = 287 -IH_PERF_SEL_RB2_RPTR_WRAP_VF3 = 288 -IH_PERF_SEL_RB2_RPTR_WRAP_VF4 = 289 -IH_PERF_SEL_RB2_RPTR_WRAP_VF5 = 290 -IH_PERF_SEL_RB2_RPTR_WRAP_VF6 = 291 -IH_PERF_SEL_RB2_RPTR_WRAP_VF7 = 292 -IH_PERF_SEL_RB2_RPTR_WRAP_VF8 = 293 -IH_PERF_SEL_RB2_RPTR_WRAP_VF9 = 294 -IH_PERF_SEL_RB2_RPTR_WRAP_VF10 = 295 -IH_PERF_SEL_RB2_RPTR_WRAP_VF11 = 296 -IH_PERF_SEL_RB2_RPTR_WRAP_VF12 = 297 -IH_PERF_SEL_RB2_RPTR_WRAP_VF13 = 298 -IH_PERF_SEL_RB2_RPTR_WRAP_VF14 = 299 -IH_PERF_SEL_RB2_RPTR_WRAP_VF15 = 300 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP = 301 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF0 = 302 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF1 = 303 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF2 = 304 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF3 = 305 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF4 = 306 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF5 = 307 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF6 = 308 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF7 = 309 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF8 = 310 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF9 = 311 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF10 = 312 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF11 = 313 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF12 = 314 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF13 = 315 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF14 = 316 -IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF15 = 317 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP = 318 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF0 = 319 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF1 = 320 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF2 = 321 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF3 = 322 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF4 = 323 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF5 = 324 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF6 = 325 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF7 = 326 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF8 = 327 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF9 = 328 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF10 = 329 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF11 = 330 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF12 = 331 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF13 = 332 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF14 = 333 -IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF15 = 334 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP = 335 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF0 = 336 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF1 = 337 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF2 = 338 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF3 = 339 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF4 = 340 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF5 = 341 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF6 = 342 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF7 = 343 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF8 = 344 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF9 = 345 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF10 = 346 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF11 = 347 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF12 = 348 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF13 = 349 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF14 = 350 -IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF15 = 351 -IH_PERF_SEL_RB0_LOAD_RPTR = 352 -IH_PERF_SEL_RB0_LOAD_RPTR_VF0 = 353 -IH_PERF_SEL_RB0_LOAD_RPTR_VF1 = 354 -IH_PERF_SEL_RB0_LOAD_RPTR_VF2 = 355 -IH_PERF_SEL_RB0_LOAD_RPTR_VF3 = 356 -IH_PERF_SEL_RB0_LOAD_RPTR_VF4 = 357 -IH_PERF_SEL_RB0_LOAD_RPTR_VF5 = 358 -IH_PERF_SEL_RB0_LOAD_RPTR_VF6 = 359 -IH_PERF_SEL_RB0_LOAD_RPTR_VF7 = 360 -IH_PERF_SEL_RB0_LOAD_RPTR_VF8 = 361 -IH_PERF_SEL_RB0_LOAD_RPTR_VF9 = 362 -IH_PERF_SEL_RB0_LOAD_RPTR_VF10 = 363 -IH_PERF_SEL_RB0_LOAD_RPTR_VF11 = 364 -IH_PERF_SEL_RB0_LOAD_RPTR_VF12 = 365 -IH_PERF_SEL_RB0_LOAD_RPTR_VF13 = 366 -IH_PERF_SEL_RB0_LOAD_RPTR_VF14 = 367 -IH_PERF_SEL_RB0_LOAD_RPTR_VF15 = 368 -IH_PERF_SEL_RB1_LOAD_RPTR = 369 -IH_PERF_SEL_RB1_LOAD_RPTR_VF0 = 370 -IH_PERF_SEL_RB1_LOAD_RPTR_VF1 = 371 -IH_PERF_SEL_RB1_LOAD_RPTR_VF2 = 372 -IH_PERF_SEL_RB1_LOAD_RPTR_VF3 = 373 -IH_PERF_SEL_RB1_LOAD_RPTR_VF4 = 374 -IH_PERF_SEL_RB1_LOAD_RPTR_VF5 = 375 -IH_PERF_SEL_RB1_LOAD_RPTR_VF6 = 376 -IH_PERF_SEL_RB1_LOAD_RPTR_VF7 = 377 -IH_PERF_SEL_RB1_LOAD_RPTR_VF8 = 378 -IH_PERF_SEL_RB1_LOAD_RPTR_VF9 = 379 -IH_PERF_SEL_RB1_LOAD_RPTR_VF10 = 380 -IH_PERF_SEL_RB1_LOAD_RPTR_VF11 = 381 -IH_PERF_SEL_RB1_LOAD_RPTR_VF12 = 382 -IH_PERF_SEL_RB1_LOAD_RPTR_VF13 = 383 -IH_PERF_SEL_RB1_LOAD_RPTR_VF14 = 384 -IH_PERF_SEL_RB1_LOAD_RPTR_VF15 = 385 -IH_PERF_SEL_RB2_LOAD_RPTR = 386 -IH_PERF_SEL_RB2_LOAD_RPTR_VF0 = 387 -IH_PERF_SEL_RB2_LOAD_RPTR_VF1 = 388 -IH_PERF_SEL_RB2_LOAD_RPTR_VF2 = 389 -IH_PERF_SEL_RB2_LOAD_RPTR_VF3 = 390 -IH_PERF_SEL_RB2_LOAD_RPTR_VF4 = 391 -IH_PERF_SEL_RB2_LOAD_RPTR_VF5 = 392 -IH_PERF_SEL_RB2_LOAD_RPTR_VF6 = 393 -IH_PERF_SEL_RB2_LOAD_RPTR_VF7 = 394 -IH_PERF_SEL_RB2_LOAD_RPTR_VF8 = 395 -IH_PERF_SEL_RB2_LOAD_RPTR_VF9 = 396 -IH_PERF_SEL_RB2_LOAD_RPTR_VF10 = 397 -IH_PERF_SEL_RB2_LOAD_RPTR_VF11 = 398 -IH_PERF_SEL_RB2_LOAD_RPTR_VF12 = 399 -IH_PERF_SEL_RB2_LOAD_RPTR_VF13 = 400 -IH_PERF_SEL_RB2_LOAD_RPTR_VF14 = 401 -IH_PERF_SEL_RB2_LOAD_RPTR_VF15 = 402 -IH_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'IH_RING_ID' -IH_RING_ID__enumvalues = { - 0: 'IH_RING_ID_INTERRUPT', - 1: 'IH_RING_ID_REQUEST', - 2: 'IH_RING_ID_TRANSLATION', - 3: 'IH_RING_ID_RESERVED', -} -IH_RING_ID_INTERRUPT = 0 -IH_RING_ID_REQUEST = 1 -IH_RING_ID_TRANSLATION = 2 -IH_RING_ID_RESERVED = 3 -IH_RING_ID = ctypes.c_uint32 # enum - -# values for enumeration 'IH_VF_RB_SELECT' -IH_VF_RB_SELECT__enumvalues = { - 0: 'IH_VF_RB_SELECT_CLIENT_FCN_ID', - 1: 'IH_VF_RB_SELECT_IH_FCN_ID', - 2: 'IH_VF_RB_SELECT_PF', - 3: 'IH_VF_RB_SELECT_RESERVED', -} -IH_VF_RB_SELECT_CLIENT_FCN_ID = 0 -IH_VF_RB_SELECT_IH_FCN_ID = 1 -IH_VF_RB_SELECT_PF = 2 -IH_VF_RB_SELECT_RESERVED = 3 -IH_VF_RB_SELECT = ctypes.c_uint32 # enum - -# values for enumeration 'SEM_PERF_SEL' -SEM_PERF_SEL__enumvalues = { - 0: 'SEM_PERF_SEL_CYCLE', - 1: 'SEM_PERF_SEL_IDLE', - 2: 'SEM_PERF_SEL_SDMA0_REQ_SIGNAL', - 3: 'SEM_PERF_SEL_SDMA1_REQ_SIGNAL', - 4: 'SEM_PERF_SEL_SDMA2_REQ_SIGNAL', - 5: 'SEM_PERF_SEL_SDMA3_REQ_SIGNAL', - 6: 'SEM_PERF_SEL_UVD_REQ_SIGNAL', - 7: 'SEM_PERF_SEL_UVD1_REQ_SIGNAL', - 8: 'SEM_PERF_SEL_VCE0_REQ_SIGNAL', - 9: 'SEM_PERF_SEL_ACP_REQ_SIGNAL', - 10: 'SEM_PERF_SEL_ISP_REQ_SIGNAL', - 11: 'SEM_PERF_SEL_VCE1_REQ_SIGNAL', - 12: 'SEM_PERF_SEL_VP8_REQ_SIGNAL', - 13: 'SEM_PERF_SEL_CPG_E0_REQ_SIGNAL', - 14: 'SEM_PERF_SEL_CPG_E1_REQ_SIGNAL', - 15: 'SEM_PERF_SEL_CPC1_IMME_E0_REQ_SIGNAL', - 16: 'SEM_PERF_SEL_CPC1_IMME_E1_REQ_SIGNAL', - 17: 'SEM_PERF_SEL_CPC1_IMME_E2_REQ_SIGNAL', - 18: 'SEM_PERF_SEL_CPC1_IMME_E3_REQ_SIGNAL', - 19: 'SEM_PERF_SEL_CPC2_IMME_E0_REQ_SIGNAL', - 20: 'SEM_PERF_SEL_CPC2_IMME_E1_REQ_SIGNAL', - 21: 'SEM_PERF_SEL_CPC2_IMME_E2_REQ_SIGNAL', - 22: 'SEM_PERF_SEL_CPC2_IMME_E3_REQ_SIGNAL', - 23: 'SEM_PERF_SEL_SDMA0_REQ_WAIT', - 24: 'SEM_PERF_SEL_SDMA1_REQ_WAIT', - 25: 'SEM_PERF_SEL_SDMA2_REQ_WAIT', - 26: 'SEM_PERF_SEL_SDMA3_REQ_WAIT', - 27: 'SEM_PERF_SEL_UVD_REQ_WAIT', - 28: 'SEM_PERF_SEL_UVD1_REQ_WAIT', - 29: 'SEM_PERF_SEL_VCE0_REQ_WAIT', - 30: 'SEM_PERF_SEL_ACP_REQ_WAIT', - 31: 'SEM_PERF_SEL_ISP_REQ_WAIT', - 32: 'SEM_PERF_SEL_VCE1_REQ_WAIT', - 33: 'SEM_PERF_SEL_VP8_REQ_WAIT', - 34: 'SEM_PERF_SEL_CPG_E0_REQ_WAIT', - 35: 'SEM_PERF_SEL_CPG_E1_REQ_WAIT', - 36: 'SEM_PERF_SEL_CPC1_IMME_E0_REQ_WAIT', - 37: 'SEM_PERF_SEL_CPC1_IMME_E1_REQ_WAIT', - 38: 'SEM_PERF_SEL_CPC1_IMME_E2_REQ_WAIT', - 39: 'SEM_PERF_SEL_CPC1_IMME_E3_REQ_WAIT', - 40: 'SEM_PERF_SEL_CPC2_IMME_E0_REQ_WAIT', - 41: 'SEM_PERF_SEL_CPC2_IMME_E1_REQ_WAIT', - 42: 'SEM_PERF_SEL_CPC2_IMME_E2_REQ_WAIT', - 43: 'SEM_PERF_SEL_CPC2_IMME_E3_REQ_WAIT', - 44: 'SEM_PERF_SEL_CPC1_OFFL_E0_REQ_WAIT', - 45: 'SEM_PERF_SEL_CPC1_OFFL_E1_REQ_WAIT', - 46: 'SEM_PERF_SEL_CPC1_OFFL_E2_REQ_WAIT', - 47: 'SEM_PERF_SEL_CPC1_OFFL_E3_REQ_WAIT', - 48: 'SEM_PERF_SEL_CPC1_OFFL_E4_REQ_WAIT', - 49: 'SEM_PERF_SEL_CPC1_OFFL_E5_REQ_WAIT', - 50: 'SEM_PERF_SEL_CPC1_OFFL_E6_REQ_WAIT', - 51: 'SEM_PERF_SEL_CPC1_OFFL_E7_REQ_WAIT', - 52: 'SEM_PERF_SEL_CPC1_OFFL_E8_REQ_WAIT', - 53: 'SEM_PERF_SEL_CPC1_OFFL_E9_REQ_WAIT', - 54: 'SEM_PERF_SEL_CPC1_OFFL_E10_REQ_WAIT', - 55: 'SEM_PERF_SEL_CPC1_OFFL_E11_REQ_WAIT', - 56: 'SEM_PERF_SEL_CPC1_OFFL_E12_REQ_WAIT', - 57: 'SEM_PERF_SEL_CPC1_OFFL_E13_REQ_WAIT', - 58: 'SEM_PERF_SEL_CPC1_OFFL_E14_REQ_WAIT', - 59: 'SEM_PERF_SEL_CPC1_OFFL_E15_REQ_WAIT', - 60: 'SEM_PERF_SEL_CPC1_OFFL_E16_REQ_WAIT', - 61: 'SEM_PERF_SEL_CPC1_OFFL_E17_REQ_WAIT', - 62: 'SEM_PERF_SEL_CPC1_OFFL_E18_REQ_WAIT', - 63: 'SEM_PERF_SEL_CPC1_OFFL_E19_REQ_WAIT', - 64: 'SEM_PERF_SEL_CPC1_OFFL_E20_REQ_WAIT', - 65: 'SEM_PERF_SEL_CPC1_OFFL_E21_REQ_WAIT', - 66: 'SEM_PERF_SEL_CPC1_OFFL_E22_REQ_WAIT', - 67: 'SEM_PERF_SEL_CPC1_OFFL_E23_REQ_WAIT', - 68: 'SEM_PERF_SEL_CPC1_OFFL_E24_REQ_WAIT', - 69: 'SEM_PERF_SEL_CPC1_OFFL_E25_REQ_WAIT', - 70: 'SEM_PERF_SEL_CPC1_OFFL_E26_REQ_WAIT', - 71: 'SEM_PERF_SEL_CPC1_OFFL_E27_REQ_WAIT', - 72: 'SEM_PERF_SEL_CPC1_OFFL_E28_REQ_WAIT', - 73: 'SEM_PERF_SEL_CPC1_OFFL_E29_REQ_WAIT', - 74: 'SEM_PERF_SEL_CPC1_OFFL_E30_REQ_WAIT', - 75: 'SEM_PERF_SEL_CPC1_OFFL_E31_REQ_WAIT', - 76: 'SEM_PERF_SEL_CPC2_OFFL_E0_REQ_WAIT', - 77: 'SEM_PERF_SEL_CPC2_OFFL_E1_REQ_WAIT', - 78: 'SEM_PERF_SEL_CPC2_OFFL_E2_REQ_WAIT', - 79: 'SEM_PERF_SEL_CPC2_OFFL_E3_REQ_WAIT', - 80: 'SEM_PERF_SEL_CPC2_OFFL_E4_REQ_WAIT', - 81: 'SEM_PERF_SEL_CPC2_OFFL_E5_REQ_WAIT', - 82: 'SEM_PERF_SEL_CPC2_OFFL_E6_REQ_WAIT', - 83: 'SEM_PERF_SEL_CPC2_OFFL_E7_REQ_WAIT', - 84: 'SEM_PERF_SEL_CPC2_OFFL_E8_REQ_WAIT', - 85: 'SEM_PERF_SEL_CPC2_OFFL_E9_REQ_WAIT', - 86: 'SEM_PERF_SEL_CPC2_OFFL_E10_REQ_WAIT', - 87: 'SEM_PERF_SEL_CPC2_OFFL_E11_REQ_WAIT', - 88: 'SEM_PERF_SEL_CPC2_OFFL_E12_REQ_WAIT', - 89: 'SEM_PERF_SEL_CPC2_OFFL_E13_REQ_WAIT', - 90: 'SEM_PERF_SEL_CPC2_OFFL_E14_REQ_WAIT', - 91: 'SEM_PERF_SEL_CPC2_OFFL_E15_REQ_WAIT', - 92: 'SEM_PERF_SEL_CPC2_OFFL_E16_REQ_WAIT', - 93: 'SEM_PERF_SEL_CPC2_OFFL_E17_REQ_WAIT', - 94: 'SEM_PERF_SEL_CPC2_OFFL_E18_REQ_WAIT', - 95: 'SEM_PERF_SEL_CPC2_OFFL_E19_REQ_WAIT', - 96: 'SEM_PERF_SEL_CPC2_OFFL_E20_REQ_WAIT', - 97: 'SEM_PERF_SEL_CPC2_OFFL_E21_REQ_WAIT', - 98: 'SEM_PERF_SEL_CPC2_OFFL_E22_REQ_WAIT', - 99: 'SEM_PERF_SEL_CPC2_OFFL_E23_REQ_WAIT', - 100: 'SEM_PERF_SEL_CPC2_OFFL_E24_REQ_WAIT', - 101: 'SEM_PERF_SEL_CPC2_OFFL_E25_REQ_WAIT', - 102: 'SEM_PERF_SEL_CPC2_OFFL_E26_REQ_WAIT', - 103: 'SEM_PERF_SEL_CPC2_OFFL_E27_REQ_WAIT', - 104: 'SEM_PERF_SEL_CPC2_OFFL_E28_REQ_WAIT', - 105: 'SEM_PERF_SEL_CPC2_OFFL_E29_REQ_WAIT', - 106: 'SEM_PERF_SEL_CPC2_OFFL_E30_REQ_WAIT', - 107: 'SEM_PERF_SEL_CPC2_OFFL_E31_REQ_WAIT', - 108: 'SEM_PERF_SEL_CPC1_OFFL_E0_POLL_WAIT', - 109: 'SEM_PERF_SEL_CPC1_OFFL_E1_POLL_WAIT', - 110: 'SEM_PERF_SEL_CPC1_OFFL_E2_POLL_WAIT', - 111: 'SEM_PERF_SEL_CPC1_OFFL_E3_POLL_WAIT', - 112: 'SEM_PERF_SEL_CPC1_OFFL_E4_POLL_WAIT', - 113: 'SEM_PERF_SEL_CPC1_OFFL_E5_POLL_WAIT', - 114: 'SEM_PERF_SEL_CPC1_OFFL_E6_POLL_WAIT', - 115: 'SEM_PERF_SEL_CPC1_OFFL_E7_POLL_WAIT', - 116: 'SEM_PERF_SEL_CPC1_OFFL_E8_POLL_WAIT', - 117: 'SEM_PERF_SEL_CPC1_OFFL_E9_POLL_WAIT', - 118: 'SEM_PERF_SEL_CPC1_OFFL_E10_POLL_WAIT', - 119: 'SEM_PERF_SEL_CPC1_OFFL_E11_POLL_WAIT', - 120: 'SEM_PERF_SEL_CPC1_OFFL_E12_POLL_WAIT', - 121: 'SEM_PERF_SEL_CPC1_OFFL_E13_POLL_WAIT', - 122: 'SEM_PERF_SEL_CPC1_OFFL_E14_POLL_WAIT', - 123: 'SEM_PERF_SEL_CPC1_OFFL_E15_POLL_WAIT', - 124: 'SEM_PERF_SEL_CPC1_OFFL_E16_POLL_WAIT', - 125: 'SEM_PERF_SEL_CPC1_OFFL_E17_POLL_WAIT', - 126: 'SEM_PERF_SEL_CPC1_OFFL_E18_POLL_WAIT', - 127: 'SEM_PERF_SEL_CPC1_OFFL_E19_POLL_WAIT', - 128: 'SEM_PERF_SEL_CPC1_OFFL_E20_POLL_WAIT', - 129: 'SEM_PERF_SEL_CPC1_OFFL_E21_POLL_WAIT', - 130: 'SEM_PERF_SEL_CPC1_OFFL_E22_POLL_WAIT', - 131: 'SEM_PERF_SEL_CPC1_OFFL_E23_POLL_WAIT', - 132: 'SEM_PERF_SEL_CPC1_OFFL_E24_POLL_WAIT', - 133: 'SEM_PERF_SEL_CPC1_OFFL_E25_POLL_WAIT', - 134: 'SEM_PERF_SEL_CPC1_OFFL_E26_POLL_WAIT', - 135: 'SEM_PERF_SEL_CPC1_OFFL_E27_POLL_WAIT', - 136: 'SEM_PERF_SEL_CPC1_OFFL_E28_POLL_WAIT', - 137: 'SEM_PERF_SEL_CPC1_OFFL_E29_POLL_WAIT', - 138: 'SEM_PERF_SEL_CPC1_OFFL_E30_POLL_WAIT', - 139: 'SEM_PERF_SEL_CPC1_OFFL_E31_POLL_WAIT', - 140: 'SEM_PERF_SEL_CPC2_OFFL_E0_POLL_WAIT', - 141: 'SEM_PERF_SEL_CPC2_OFFL_E1_POLL_WAIT', - 142: 'SEM_PERF_SEL_CPC2_OFFL_E2_POLL_WAIT', - 143: 'SEM_PERF_SEL_CPC2_OFFL_E3_POLL_WAIT', - 144: 'SEM_PERF_SEL_CPC2_OFFL_E4_POLL_WAIT', - 145: 'SEM_PERF_SEL_CPC2_OFFL_E5_POLL_WAIT', - 146: 'SEM_PERF_SEL_CPC2_OFFL_E6_POLL_WAIT', - 147: 'SEM_PERF_SEL_CPC2_OFFL_E7_POLL_WAIT', - 148: 'SEM_PERF_SEL_CPC2_OFFL_E8_POLL_WAIT', - 149: 'SEM_PERF_SEL_CPC2_OFFL_E9_POLL_WAIT', - 150: 'SEM_PERF_SEL_CPC2_OFFL_E10_POLL_WAIT', - 151: 'SEM_PERF_SEL_CPC2_OFFL_E11_POLL_WAIT', - 152: 'SEM_PERF_SEL_CPC2_OFFL_E12_POLL_WAIT', - 153: 'SEM_PERF_SEL_CPC2_OFFL_E13_POLL_WAIT', - 154: 'SEM_PERF_SEL_CPC2_OFFL_E14_POLL_WAIT', - 155: 'SEM_PERF_SEL_CPC2_OFFL_E15_POLL_WAIT', - 156: 'SEM_PERF_SEL_CPC2_OFFL_E16_POLL_WAIT', - 157: 'SEM_PERF_SEL_CPC2_OFFL_E17_POLL_WAIT', - 158: 'SEM_PERF_SEL_CPC2_OFFL_E18_POLL_WAIT', - 159: 'SEM_PERF_SEL_CPC2_OFFL_E19_POLL_WAIT', - 160: 'SEM_PERF_SEL_CPC2_OFFL_E20_POLL_WAIT', - 161: 'SEM_PERF_SEL_CPC2_OFFL_E21_POLL_WAIT', - 162: 'SEM_PERF_SEL_CPC2_OFFL_E22_POLL_WAIT', - 163: 'SEM_PERF_SEL_CPC2_OFFL_E23_POLL_WAIT', - 164: 'SEM_PERF_SEL_CPC2_OFFL_E24_POLL_WAIT', - 165: 'SEM_PERF_SEL_CPC2_OFFL_E25_POLL_WAIT', - 166: 'SEM_PERF_SEL_CPC2_OFFL_E26_POLL_WAIT', - 167: 'SEM_PERF_SEL_CPC2_OFFL_E27_POLL_WAIT', - 168: 'SEM_PERF_SEL_CPC2_OFFL_E28_POLL_WAIT', - 169: 'SEM_PERF_SEL_CPC2_OFFL_E29_POLL_WAIT', - 170: 'SEM_PERF_SEL_CPC2_OFFL_E30_POLL_WAIT', - 171: 'SEM_PERF_SEL_CPC2_OFFL_E31_POLL_WAIT', - 172: 'SEM_PERF_SEL_MC_RD_REQ', - 173: 'SEM_PERF_SEL_MC_RD_RET', - 174: 'SEM_PERF_SEL_MC_WR_REQ', - 175: 'SEM_PERF_SEL_MC_WR_RET', - 176: 'SEM_PERF_SEL_ATC_REQ', - 177: 'SEM_PERF_SEL_ATC_RET', - 178: 'SEM_PERF_SEL_ATC_XNACK', - 179: 'SEM_PERF_SEL_ATC_INVALIDATION', - 180: 'SEM_PERF_SEL_ATC_VM_INVALIDATION', -} -SEM_PERF_SEL_CYCLE = 0 -SEM_PERF_SEL_IDLE = 1 -SEM_PERF_SEL_SDMA0_REQ_SIGNAL = 2 -SEM_PERF_SEL_SDMA1_REQ_SIGNAL = 3 -SEM_PERF_SEL_SDMA2_REQ_SIGNAL = 4 -SEM_PERF_SEL_SDMA3_REQ_SIGNAL = 5 -SEM_PERF_SEL_UVD_REQ_SIGNAL = 6 -SEM_PERF_SEL_UVD1_REQ_SIGNAL = 7 -SEM_PERF_SEL_VCE0_REQ_SIGNAL = 8 -SEM_PERF_SEL_ACP_REQ_SIGNAL = 9 -SEM_PERF_SEL_ISP_REQ_SIGNAL = 10 -SEM_PERF_SEL_VCE1_REQ_SIGNAL = 11 -SEM_PERF_SEL_VP8_REQ_SIGNAL = 12 -SEM_PERF_SEL_CPG_E0_REQ_SIGNAL = 13 -SEM_PERF_SEL_CPG_E1_REQ_SIGNAL = 14 -SEM_PERF_SEL_CPC1_IMME_E0_REQ_SIGNAL = 15 -SEM_PERF_SEL_CPC1_IMME_E1_REQ_SIGNAL = 16 -SEM_PERF_SEL_CPC1_IMME_E2_REQ_SIGNAL = 17 -SEM_PERF_SEL_CPC1_IMME_E3_REQ_SIGNAL = 18 -SEM_PERF_SEL_CPC2_IMME_E0_REQ_SIGNAL = 19 -SEM_PERF_SEL_CPC2_IMME_E1_REQ_SIGNAL = 20 -SEM_PERF_SEL_CPC2_IMME_E2_REQ_SIGNAL = 21 -SEM_PERF_SEL_CPC2_IMME_E3_REQ_SIGNAL = 22 -SEM_PERF_SEL_SDMA0_REQ_WAIT = 23 -SEM_PERF_SEL_SDMA1_REQ_WAIT = 24 -SEM_PERF_SEL_SDMA2_REQ_WAIT = 25 -SEM_PERF_SEL_SDMA3_REQ_WAIT = 26 -SEM_PERF_SEL_UVD_REQ_WAIT = 27 -SEM_PERF_SEL_UVD1_REQ_WAIT = 28 -SEM_PERF_SEL_VCE0_REQ_WAIT = 29 -SEM_PERF_SEL_ACP_REQ_WAIT = 30 -SEM_PERF_SEL_ISP_REQ_WAIT = 31 -SEM_PERF_SEL_VCE1_REQ_WAIT = 32 -SEM_PERF_SEL_VP8_REQ_WAIT = 33 -SEM_PERF_SEL_CPG_E0_REQ_WAIT = 34 -SEM_PERF_SEL_CPG_E1_REQ_WAIT = 35 -SEM_PERF_SEL_CPC1_IMME_E0_REQ_WAIT = 36 -SEM_PERF_SEL_CPC1_IMME_E1_REQ_WAIT = 37 -SEM_PERF_SEL_CPC1_IMME_E2_REQ_WAIT = 38 -SEM_PERF_SEL_CPC1_IMME_E3_REQ_WAIT = 39 -SEM_PERF_SEL_CPC2_IMME_E0_REQ_WAIT = 40 -SEM_PERF_SEL_CPC2_IMME_E1_REQ_WAIT = 41 -SEM_PERF_SEL_CPC2_IMME_E2_REQ_WAIT = 42 -SEM_PERF_SEL_CPC2_IMME_E3_REQ_WAIT = 43 -SEM_PERF_SEL_CPC1_OFFL_E0_REQ_WAIT = 44 -SEM_PERF_SEL_CPC1_OFFL_E1_REQ_WAIT = 45 -SEM_PERF_SEL_CPC1_OFFL_E2_REQ_WAIT = 46 -SEM_PERF_SEL_CPC1_OFFL_E3_REQ_WAIT = 47 -SEM_PERF_SEL_CPC1_OFFL_E4_REQ_WAIT = 48 -SEM_PERF_SEL_CPC1_OFFL_E5_REQ_WAIT = 49 -SEM_PERF_SEL_CPC1_OFFL_E6_REQ_WAIT = 50 -SEM_PERF_SEL_CPC1_OFFL_E7_REQ_WAIT = 51 -SEM_PERF_SEL_CPC1_OFFL_E8_REQ_WAIT = 52 -SEM_PERF_SEL_CPC1_OFFL_E9_REQ_WAIT = 53 -SEM_PERF_SEL_CPC1_OFFL_E10_REQ_WAIT = 54 -SEM_PERF_SEL_CPC1_OFFL_E11_REQ_WAIT = 55 -SEM_PERF_SEL_CPC1_OFFL_E12_REQ_WAIT = 56 -SEM_PERF_SEL_CPC1_OFFL_E13_REQ_WAIT = 57 -SEM_PERF_SEL_CPC1_OFFL_E14_REQ_WAIT = 58 -SEM_PERF_SEL_CPC1_OFFL_E15_REQ_WAIT = 59 -SEM_PERF_SEL_CPC1_OFFL_E16_REQ_WAIT = 60 -SEM_PERF_SEL_CPC1_OFFL_E17_REQ_WAIT = 61 -SEM_PERF_SEL_CPC1_OFFL_E18_REQ_WAIT = 62 -SEM_PERF_SEL_CPC1_OFFL_E19_REQ_WAIT = 63 -SEM_PERF_SEL_CPC1_OFFL_E20_REQ_WAIT = 64 -SEM_PERF_SEL_CPC1_OFFL_E21_REQ_WAIT = 65 -SEM_PERF_SEL_CPC1_OFFL_E22_REQ_WAIT = 66 -SEM_PERF_SEL_CPC1_OFFL_E23_REQ_WAIT = 67 -SEM_PERF_SEL_CPC1_OFFL_E24_REQ_WAIT = 68 -SEM_PERF_SEL_CPC1_OFFL_E25_REQ_WAIT = 69 -SEM_PERF_SEL_CPC1_OFFL_E26_REQ_WAIT = 70 -SEM_PERF_SEL_CPC1_OFFL_E27_REQ_WAIT = 71 -SEM_PERF_SEL_CPC1_OFFL_E28_REQ_WAIT = 72 -SEM_PERF_SEL_CPC1_OFFL_E29_REQ_WAIT = 73 -SEM_PERF_SEL_CPC1_OFFL_E30_REQ_WAIT = 74 -SEM_PERF_SEL_CPC1_OFFL_E31_REQ_WAIT = 75 -SEM_PERF_SEL_CPC2_OFFL_E0_REQ_WAIT = 76 -SEM_PERF_SEL_CPC2_OFFL_E1_REQ_WAIT = 77 -SEM_PERF_SEL_CPC2_OFFL_E2_REQ_WAIT = 78 -SEM_PERF_SEL_CPC2_OFFL_E3_REQ_WAIT = 79 -SEM_PERF_SEL_CPC2_OFFL_E4_REQ_WAIT = 80 -SEM_PERF_SEL_CPC2_OFFL_E5_REQ_WAIT = 81 -SEM_PERF_SEL_CPC2_OFFL_E6_REQ_WAIT = 82 -SEM_PERF_SEL_CPC2_OFFL_E7_REQ_WAIT = 83 -SEM_PERF_SEL_CPC2_OFFL_E8_REQ_WAIT = 84 -SEM_PERF_SEL_CPC2_OFFL_E9_REQ_WAIT = 85 -SEM_PERF_SEL_CPC2_OFFL_E10_REQ_WAIT = 86 -SEM_PERF_SEL_CPC2_OFFL_E11_REQ_WAIT = 87 -SEM_PERF_SEL_CPC2_OFFL_E12_REQ_WAIT = 88 -SEM_PERF_SEL_CPC2_OFFL_E13_REQ_WAIT = 89 -SEM_PERF_SEL_CPC2_OFFL_E14_REQ_WAIT = 90 -SEM_PERF_SEL_CPC2_OFFL_E15_REQ_WAIT = 91 -SEM_PERF_SEL_CPC2_OFFL_E16_REQ_WAIT = 92 -SEM_PERF_SEL_CPC2_OFFL_E17_REQ_WAIT = 93 -SEM_PERF_SEL_CPC2_OFFL_E18_REQ_WAIT = 94 -SEM_PERF_SEL_CPC2_OFFL_E19_REQ_WAIT = 95 -SEM_PERF_SEL_CPC2_OFFL_E20_REQ_WAIT = 96 -SEM_PERF_SEL_CPC2_OFFL_E21_REQ_WAIT = 97 -SEM_PERF_SEL_CPC2_OFFL_E22_REQ_WAIT = 98 -SEM_PERF_SEL_CPC2_OFFL_E23_REQ_WAIT = 99 -SEM_PERF_SEL_CPC2_OFFL_E24_REQ_WAIT = 100 -SEM_PERF_SEL_CPC2_OFFL_E25_REQ_WAIT = 101 -SEM_PERF_SEL_CPC2_OFFL_E26_REQ_WAIT = 102 -SEM_PERF_SEL_CPC2_OFFL_E27_REQ_WAIT = 103 -SEM_PERF_SEL_CPC2_OFFL_E28_REQ_WAIT = 104 -SEM_PERF_SEL_CPC2_OFFL_E29_REQ_WAIT = 105 -SEM_PERF_SEL_CPC2_OFFL_E30_REQ_WAIT = 106 -SEM_PERF_SEL_CPC2_OFFL_E31_REQ_WAIT = 107 -SEM_PERF_SEL_CPC1_OFFL_E0_POLL_WAIT = 108 -SEM_PERF_SEL_CPC1_OFFL_E1_POLL_WAIT = 109 -SEM_PERF_SEL_CPC1_OFFL_E2_POLL_WAIT = 110 -SEM_PERF_SEL_CPC1_OFFL_E3_POLL_WAIT = 111 -SEM_PERF_SEL_CPC1_OFFL_E4_POLL_WAIT = 112 -SEM_PERF_SEL_CPC1_OFFL_E5_POLL_WAIT = 113 -SEM_PERF_SEL_CPC1_OFFL_E6_POLL_WAIT = 114 -SEM_PERF_SEL_CPC1_OFFL_E7_POLL_WAIT = 115 -SEM_PERF_SEL_CPC1_OFFL_E8_POLL_WAIT = 116 -SEM_PERF_SEL_CPC1_OFFL_E9_POLL_WAIT = 117 -SEM_PERF_SEL_CPC1_OFFL_E10_POLL_WAIT = 118 -SEM_PERF_SEL_CPC1_OFFL_E11_POLL_WAIT = 119 -SEM_PERF_SEL_CPC1_OFFL_E12_POLL_WAIT = 120 -SEM_PERF_SEL_CPC1_OFFL_E13_POLL_WAIT = 121 -SEM_PERF_SEL_CPC1_OFFL_E14_POLL_WAIT = 122 -SEM_PERF_SEL_CPC1_OFFL_E15_POLL_WAIT = 123 -SEM_PERF_SEL_CPC1_OFFL_E16_POLL_WAIT = 124 -SEM_PERF_SEL_CPC1_OFFL_E17_POLL_WAIT = 125 -SEM_PERF_SEL_CPC1_OFFL_E18_POLL_WAIT = 126 -SEM_PERF_SEL_CPC1_OFFL_E19_POLL_WAIT = 127 -SEM_PERF_SEL_CPC1_OFFL_E20_POLL_WAIT = 128 -SEM_PERF_SEL_CPC1_OFFL_E21_POLL_WAIT = 129 -SEM_PERF_SEL_CPC1_OFFL_E22_POLL_WAIT = 130 -SEM_PERF_SEL_CPC1_OFFL_E23_POLL_WAIT = 131 -SEM_PERF_SEL_CPC1_OFFL_E24_POLL_WAIT = 132 -SEM_PERF_SEL_CPC1_OFFL_E25_POLL_WAIT = 133 -SEM_PERF_SEL_CPC1_OFFL_E26_POLL_WAIT = 134 -SEM_PERF_SEL_CPC1_OFFL_E27_POLL_WAIT = 135 -SEM_PERF_SEL_CPC1_OFFL_E28_POLL_WAIT = 136 -SEM_PERF_SEL_CPC1_OFFL_E29_POLL_WAIT = 137 -SEM_PERF_SEL_CPC1_OFFL_E30_POLL_WAIT = 138 -SEM_PERF_SEL_CPC1_OFFL_E31_POLL_WAIT = 139 -SEM_PERF_SEL_CPC2_OFFL_E0_POLL_WAIT = 140 -SEM_PERF_SEL_CPC2_OFFL_E1_POLL_WAIT = 141 -SEM_PERF_SEL_CPC2_OFFL_E2_POLL_WAIT = 142 -SEM_PERF_SEL_CPC2_OFFL_E3_POLL_WAIT = 143 -SEM_PERF_SEL_CPC2_OFFL_E4_POLL_WAIT = 144 -SEM_PERF_SEL_CPC2_OFFL_E5_POLL_WAIT = 145 -SEM_PERF_SEL_CPC2_OFFL_E6_POLL_WAIT = 146 -SEM_PERF_SEL_CPC2_OFFL_E7_POLL_WAIT = 147 -SEM_PERF_SEL_CPC2_OFFL_E8_POLL_WAIT = 148 -SEM_PERF_SEL_CPC2_OFFL_E9_POLL_WAIT = 149 -SEM_PERF_SEL_CPC2_OFFL_E10_POLL_WAIT = 150 -SEM_PERF_SEL_CPC2_OFFL_E11_POLL_WAIT = 151 -SEM_PERF_SEL_CPC2_OFFL_E12_POLL_WAIT = 152 -SEM_PERF_SEL_CPC2_OFFL_E13_POLL_WAIT = 153 -SEM_PERF_SEL_CPC2_OFFL_E14_POLL_WAIT = 154 -SEM_PERF_SEL_CPC2_OFFL_E15_POLL_WAIT = 155 -SEM_PERF_SEL_CPC2_OFFL_E16_POLL_WAIT = 156 -SEM_PERF_SEL_CPC2_OFFL_E17_POLL_WAIT = 157 -SEM_PERF_SEL_CPC2_OFFL_E18_POLL_WAIT = 158 -SEM_PERF_SEL_CPC2_OFFL_E19_POLL_WAIT = 159 -SEM_PERF_SEL_CPC2_OFFL_E20_POLL_WAIT = 160 -SEM_PERF_SEL_CPC2_OFFL_E21_POLL_WAIT = 161 -SEM_PERF_SEL_CPC2_OFFL_E22_POLL_WAIT = 162 -SEM_PERF_SEL_CPC2_OFFL_E23_POLL_WAIT = 163 -SEM_PERF_SEL_CPC2_OFFL_E24_POLL_WAIT = 164 -SEM_PERF_SEL_CPC2_OFFL_E25_POLL_WAIT = 165 -SEM_PERF_SEL_CPC2_OFFL_E26_POLL_WAIT = 166 -SEM_PERF_SEL_CPC2_OFFL_E27_POLL_WAIT = 167 -SEM_PERF_SEL_CPC2_OFFL_E28_POLL_WAIT = 168 -SEM_PERF_SEL_CPC2_OFFL_E29_POLL_WAIT = 169 -SEM_PERF_SEL_CPC2_OFFL_E30_POLL_WAIT = 170 -SEM_PERF_SEL_CPC2_OFFL_E31_POLL_WAIT = 171 -SEM_PERF_SEL_MC_RD_REQ = 172 -SEM_PERF_SEL_MC_RD_RET = 173 -SEM_PERF_SEL_MC_WR_REQ = 174 -SEM_PERF_SEL_MC_WR_RET = 175 -SEM_PERF_SEL_ATC_REQ = 176 -SEM_PERF_SEL_ATC_RET = 177 -SEM_PERF_SEL_ATC_XNACK = 178 -SEM_PERF_SEL_ATC_INVALIDATION = 179 -SEM_PERF_SEL_ATC_VM_INVALIDATION = 180 -SEM_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'LSDMA_PERF_SEL' -LSDMA_PERF_SEL__enumvalues = { - 0: 'LSDMA_PERF_SEL_CYCLE', - 1: 'LSDMA_PERF_SEL_IDLE', - 2: 'LSDMA_PERF_SEL_REG_IDLE', - 3: 'LSDMA_PERF_SEL_RB_EMPTY', - 4: 'LSDMA_PERF_SEL_RB_FULL', - 5: 'LSDMA_PERF_SEL_RB_WPTR_WRAP', - 6: 'LSDMA_PERF_SEL_RB_RPTR_WRAP', - 7: 'LSDMA_PERF_SEL_RB_WPTR_POLL_READ', - 8: 'LSDMA_PERF_SEL_RB_RPTR_WB', - 9: 'LSDMA_PERF_SEL_RB_CMD_IDLE', - 10: 'LSDMA_PERF_SEL_RB_CMD_FULL', - 11: 'LSDMA_PERF_SEL_IB_CMD_IDLE', - 12: 'LSDMA_PERF_SEL_IB_CMD_FULL', - 13: 'LSDMA_PERF_SEL_EX_IDLE', - 14: 'LSDMA_PERF_SEL_SRBM_REG_SEND', - 15: 'LSDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 16: 'LSDMA_PERF_SEL_MC_WR_IDLE', - 17: 'LSDMA_PERF_SEL_MC_WR_COUNT', - 18: 'LSDMA_PERF_SEL_MC_RD_IDLE', - 19: 'LSDMA_PERF_SEL_MC_RD_COUNT', - 20: 'LSDMA_PERF_SEL_MC_RD_RET_STALL', - 21: 'LSDMA_PERF_SEL_MC_RD_NO_POLL_IDLE', - 24: 'LSDMA_PERF_SEL_SEM_IDLE', - 25: 'LSDMA_PERF_SEL_SEM_REQ_STALL', - 26: 'LSDMA_PERF_SEL_SEM_REQ_COUNT', - 27: 'LSDMA_PERF_SEL_SEM_RESP_INCOMPLETE', - 28: 'LSDMA_PERF_SEL_SEM_RESP_FAIL', - 29: 'LSDMA_PERF_SEL_SEM_RESP_PASS', - 30: 'LSDMA_PERF_SEL_INT_IDLE', - 31: 'LSDMA_PERF_SEL_INT_REQ_STALL', - 32: 'LSDMA_PERF_SEL_INT_REQ_COUNT', - 33: 'LSDMA_PERF_SEL_INT_RESP_ACCEPTED', - 34: 'LSDMA_PERF_SEL_INT_RESP_RETRY', - 35: 'LSDMA_PERF_SEL_NUM_PACKET', - 37: 'LSDMA_PERF_SEL_CE_WREQ_IDLE', - 38: 'LSDMA_PERF_SEL_CE_WR_IDLE', - 39: 'LSDMA_PERF_SEL_CE_SPLIT_IDLE', - 40: 'LSDMA_PERF_SEL_CE_RREQ_IDLE', - 41: 'LSDMA_PERF_SEL_CE_OUT_IDLE', - 42: 'LSDMA_PERF_SEL_CE_IN_IDLE', - 43: 'LSDMA_PERF_SEL_CE_DST_IDLE', - 46: 'LSDMA_PERF_SEL_CE_AFIFO_FULL', - 49: 'LSDMA_PERF_SEL_CE_INFO_FULL', - 50: 'LSDMA_PERF_SEL_CE_INFO1_FULL', - 51: 'LSDMA_PERF_SEL_CE_RD_STALL', - 52: 'LSDMA_PERF_SEL_CE_WR_STALL', - 53: 'LSDMA_PERF_SEL_GFX_SELECT', - 54: 'LSDMA_PERF_SEL_RLC0_SELECT', - 55: 'LSDMA_PERF_SEL_RLC1_SELECT', - 56: 'LSDMA_PERF_SEL_PAGE_SELECT', - 57: 'LSDMA_PERF_SEL_CTX_CHANGE', - 58: 'LSDMA_PERF_SEL_CTX_CHANGE_EXPIRED', - 59: 'LSDMA_PERF_SEL_CTX_CHANGE_EXCEPTION', - 60: 'LSDMA_PERF_SEL_DOORBELL', - 61: 'LSDMA_PERF_SEL_RD_BA_RTR', - 62: 'LSDMA_PERF_SEL_WR_BA_RTR', - 63: 'LSDMA_PERF_SEL_F32_L1_WR_VLD', - 64: 'LSDMA_PERF_SEL_CE_L1_WR_VLD', - 65: 'LSDMA_PERF_SEL_CE_L1_STALL', - 66: 'LSDMA_PERF_SEL_SDMA_INVACK_NFLUSH', - 67: 'LSDMA_PERF_SEL_SDMA_INVACK_FLUSH', - 68: 'LSDMA_PERF_SEL_ATCL2_INVREQ_NFLUSH', - 69: 'LSDMA_PERF_SEL_ATCL2_INVREQ_FLUSH', - 70: 'LSDMA_PERF_SEL_ATCL2_RET_XNACK', - 71: 'LSDMA_PERF_SEL_ATCL2_RET_ACK', - 72: 'LSDMA_PERF_SEL_ATCL2_FREE', - 73: 'LSDMA_PERF_SEL_SDMA_ATCL2_SEND', - 74: 'LSDMA_PERF_SEL_DMA_L1_WR_SEND', - 75: 'LSDMA_PERF_SEL_DMA_L1_RD_SEND', - 76: 'LSDMA_PERF_SEL_DMA_MC_WR_SEND', - 77: 'LSDMA_PERF_SEL_DMA_MC_RD_SEND', - 78: 'LSDMA_PERF_SEL_L1_WR_FIFO_IDLE', - 79: 'LSDMA_PERF_SEL_L1_RD_FIFO_IDLE', - 80: 'LSDMA_PERF_SEL_L1_WRL2_IDLE', - 81: 'LSDMA_PERF_SEL_L1_RDL2_IDLE', - 82: 'LSDMA_PERF_SEL_L1_WRMC_IDLE', - 83: 'LSDMA_PERF_SEL_L1_RDMC_IDLE', - 84: 'LSDMA_PERF_SEL_L1_WR_INV_IDLE', - 85: 'LSDMA_PERF_SEL_L1_RD_INV_IDLE', - 86: 'LSDMA_PERF_SEL_L1_WR_INV_EN', - 87: 'LSDMA_PERF_SEL_L1_RD_INV_EN', - 88: 'LSDMA_PERF_SEL_L1_WR_WAIT_INVADR', - 89: 'LSDMA_PERF_SEL_L1_RD_WAIT_INVADR', - 90: 'LSDMA_PERF_SEL_IS_INVREQ_ADDR_WR', - 91: 'LSDMA_PERF_SEL_IS_INVREQ_ADDR_RD', - 92: 'LSDMA_PERF_SEL_L1_WR_XNACK_TIMEOUT', - 93: 'LSDMA_PERF_SEL_L1_RD_XNACK_TIMEOUT', - 94: 'LSDMA_PERF_SEL_L1_INV_MIDDLE', - 95: 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_WR_REQ', - 96: 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_WR_RET', - 97: 'LSDMA_PERF_SEL_ATOMIC_MMHUB_WR_REQ', - 98: 'LSDMA_PERF_SEL_ATOMIC_MMHUB_WR_RET', - 99: 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_RD_REQ', - 100: 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_RD_RET', - 101: 'LSDMA_PERF_SEL_RB_MMHUB_RD_REQ', - 102: 'LSDMA_PERF_SEL_RB_MMHUB_RD_RET', - 103: 'LSDMA_PERF_SEL_IB_MMHUB_RD_REQ', - 104: 'LSDMA_PERF_SEL_IB_MMHUB_RD_RET', - 105: 'LSDMA_PERF_SEL_WPTR_MMHUB_RD_REQ', - 106: 'LSDMA_PERF_SEL_WPTR_MMHUB_RD_RET', - 107: 'LSDMA_PERF_SEL_UTCL1_UTCL2_REQ', - 108: 'LSDMA_PERF_SEL_UTCL1_UTCL2_RET', - 109: 'LSDMA_PERF_SEL_CMD_OP_MATCH', - 110: 'LSDMA_PERF_SEL_CMD_OP_START', - 111: 'LSDMA_PERF_SEL_CMD_OP_END', - 112: 'LSDMA_PERF_SEL_CE_BUSY', - 113: 'LSDMA_PERF_SEL_CE_BUSY_START', - 114: 'LSDMA_PERF_SEL_CE_BUSY_END', - 115: 'LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER', - 116: 'LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER_START', - 117: 'LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER_END', - 118: 'LSDMA_PERF_SEL_CE_MMHUB_WRREQ_SEND', - 119: 'LSDMA_PERF_SEL_MMHUB_CE_WRRET_VALID', - 120: 'LSDMA_PERF_SEL_CE_MMHUB_RDREQ_SEND', - 121: 'LSDMA_PERF_SEL_MMHUB_CE_RDRET_VALID', - 122: 'LSDMA_PERF_SEL_DRAM_ECC', - 123: 'LSDMA_PERF_SEL_NACK_GEN_ERR', -} -LSDMA_PERF_SEL_CYCLE = 0 -LSDMA_PERF_SEL_IDLE = 1 -LSDMA_PERF_SEL_REG_IDLE = 2 -LSDMA_PERF_SEL_RB_EMPTY = 3 -LSDMA_PERF_SEL_RB_FULL = 4 -LSDMA_PERF_SEL_RB_WPTR_WRAP = 5 -LSDMA_PERF_SEL_RB_RPTR_WRAP = 6 -LSDMA_PERF_SEL_RB_WPTR_POLL_READ = 7 -LSDMA_PERF_SEL_RB_RPTR_WB = 8 -LSDMA_PERF_SEL_RB_CMD_IDLE = 9 -LSDMA_PERF_SEL_RB_CMD_FULL = 10 -LSDMA_PERF_SEL_IB_CMD_IDLE = 11 -LSDMA_PERF_SEL_IB_CMD_FULL = 12 -LSDMA_PERF_SEL_EX_IDLE = 13 -LSDMA_PERF_SEL_SRBM_REG_SEND = 14 -LSDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE = 15 -LSDMA_PERF_SEL_MC_WR_IDLE = 16 -LSDMA_PERF_SEL_MC_WR_COUNT = 17 -LSDMA_PERF_SEL_MC_RD_IDLE = 18 -LSDMA_PERF_SEL_MC_RD_COUNT = 19 -LSDMA_PERF_SEL_MC_RD_RET_STALL = 20 -LSDMA_PERF_SEL_MC_RD_NO_POLL_IDLE = 21 -LSDMA_PERF_SEL_SEM_IDLE = 24 -LSDMA_PERF_SEL_SEM_REQ_STALL = 25 -LSDMA_PERF_SEL_SEM_REQ_COUNT = 26 -LSDMA_PERF_SEL_SEM_RESP_INCOMPLETE = 27 -LSDMA_PERF_SEL_SEM_RESP_FAIL = 28 -LSDMA_PERF_SEL_SEM_RESP_PASS = 29 -LSDMA_PERF_SEL_INT_IDLE = 30 -LSDMA_PERF_SEL_INT_REQ_STALL = 31 -LSDMA_PERF_SEL_INT_REQ_COUNT = 32 -LSDMA_PERF_SEL_INT_RESP_ACCEPTED = 33 -LSDMA_PERF_SEL_INT_RESP_RETRY = 34 -LSDMA_PERF_SEL_NUM_PACKET = 35 -LSDMA_PERF_SEL_CE_WREQ_IDLE = 37 -LSDMA_PERF_SEL_CE_WR_IDLE = 38 -LSDMA_PERF_SEL_CE_SPLIT_IDLE = 39 -LSDMA_PERF_SEL_CE_RREQ_IDLE = 40 -LSDMA_PERF_SEL_CE_OUT_IDLE = 41 -LSDMA_PERF_SEL_CE_IN_IDLE = 42 -LSDMA_PERF_SEL_CE_DST_IDLE = 43 -LSDMA_PERF_SEL_CE_AFIFO_FULL = 46 -LSDMA_PERF_SEL_CE_INFO_FULL = 49 -LSDMA_PERF_SEL_CE_INFO1_FULL = 50 -LSDMA_PERF_SEL_CE_RD_STALL = 51 -LSDMA_PERF_SEL_CE_WR_STALL = 52 -LSDMA_PERF_SEL_GFX_SELECT = 53 -LSDMA_PERF_SEL_RLC0_SELECT = 54 -LSDMA_PERF_SEL_RLC1_SELECT = 55 -LSDMA_PERF_SEL_PAGE_SELECT = 56 -LSDMA_PERF_SEL_CTX_CHANGE = 57 -LSDMA_PERF_SEL_CTX_CHANGE_EXPIRED = 58 -LSDMA_PERF_SEL_CTX_CHANGE_EXCEPTION = 59 -LSDMA_PERF_SEL_DOORBELL = 60 -LSDMA_PERF_SEL_RD_BA_RTR = 61 -LSDMA_PERF_SEL_WR_BA_RTR = 62 -LSDMA_PERF_SEL_F32_L1_WR_VLD = 63 -LSDMA_PERF_SEL_CE_L1_WR_VLD = 64 -LSDMA_PERF_SEL_CE_L1_STALL = 65 -LSDMA_PERF_SEL_SDMA_INVACK_NFLUSH = 66 -LSDMA_PERF_SEL_SDMA_INVACK_FLUSH = 67 -LSDMA_PERF_SEL_ATCL2_INVREQ_NFLUSH = 68 -LSDMA_PERF_SEL_ATCL2_INVREQ_FLUSH = 69 -LSDMA_PERF_SEL_ATCL2_RET_XNACK = 70 -LSDMA_PERF_SEL_ATCL2_RET_ACK = 71 -LSDMA_PERF_SEL_ATCL2_FREE = 72 -LSDMA_PERF_SEL_SDMA_ATCL2_SEND = 73 -LSDMA_PERF_SEL_DMA_L1_WR_SEND = 74 -LSDMA_PERF_SEL_DMA_L1_RD_SEND = 75 -LSDMA_PERF_SEL_DMA_MC_WR_SEND = 76 -LSDMA_PERF_SEL_DMA_MC_RD_SEND = 77 -LSDMA_PERF_SEL_L1_WR_FIFO_IDLE = 78 -LSDMA_PERF_SEL_L1_RD_FIFO_IDLE = 79 -LSDMA_PERF_SEL_L1_WRL2_IDLE = 80 -LSDMA_PERF_SEL_L1_RDL2_IDLE = 81 -LSDMA_PERF_SEL_L1_WRMC_IDLE = 82 -LSDMA_PERF_SEL_L1_RDMC_IDLE = 83 -LSDMA_PERF_SEL_L1_WR_INV_IDLE = 84 -LSDMA_PERF_SEL_L1_RD_INV_IDLE = 85 -LSDMA_PERF_SEL_L1_WR_INV_EN = 86 -LSDMA_PERF_SEL_L1_RD_INV_EN = 87 -LSDMA_PERF_SEL_L1_WR_WAIT_INVADR = 88 -LSDMA_PERF_SEL_L1_RD_WAIT_INVADR = 89 -LSDMA_PERF_SEL_IS_INVREQ_ADDR_WR = 90 -LSDMA_PERF_SEL_IS_INVREQ_ADDR_RD = 91 -LSDMA_PERF_SEL_L1_WR_XNACK_TIMEOUT = 92 -LSDMA_PERF_SEL_L1_RD_XNACK_TIMEOUT = 93 -LSDMA_PERF_SEL_L1_INV_MIDDLE = 94 -LSDMA_PERF_SEL_CE_OR_F32_MMHUB_WR_REQ = 95 -LSDMA_PERF_SEL_CE_OR_F32_MMHUB_WR_RET = 96 -LSDMA_PERF_SEL_ATOMIC_MMHUB_WR_REQ = 97 -LSDMA_PERF_SEL_ATOMIC_MMHUB_WR_RET = 98 -LSDMA_PERF_SEL_CE_OR_F32_MMHUB_RD_REQ = 99 -LSDMA_PERF_SEL_CE_OR_F32_MMHUB_RD_RET = 100 -LSDMA_PERF_SEL_RB_MMHUB_RD_REQ = 101 -LSDMA_PERF_SEL_RB_MMHUB_RD_RET = 102 -LSDMA_PERF_SEL_IB_MMHUB_RD_REQ = 103 -LSDMA_PERF_SEL_IB_MMHUB_RD_RET = 104 -LSDMA_PERF_SEL_WPTR_MMHUB_RD_REQ = 105 -LSDMA_PERF_SEL_WPTR_MMHUB_RD_RET = 106 -LSDMA_PERF_SEL_UTCL1_UTCL2_REQ = 107 -LSDMA_PERF_SEL_UTCL1_UTCL2_RET = 108 -LSDMA_PERF_SEL_CMD_OP_MATCH = 109 -LSDMA_PERF_SEL_CMD_OP_START = 110 -LSDMA_PERF_SEL_CMD_OP_END = 111 -LSDMA_PERF_SEL_CE_BUSY = 112 -LSDMA_PERF_SEL_CE_BUSY_START = 113 -LSDMA_PERF_SEL_CE_BUSY_END = 114 -LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER = 115 -LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER_START = 116 -LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER_END = 117 -LSDMA_PERF_SEL_CE_MMHUB_WRREQ_SEND = 118 -LSDMA_PERF_SEL_MMHUB_CE_WRRET_VALID = 119 -LSDMA_PERF_SEL_CE_MMHUB_RDREQ_SEND = 120 -LSDMA_PERF_SEL_MMHUB_CE_RDRET_VALID = 121 -LSDMA_PERF_SEL_DRAM_ECC = 122 -LSDMA_PERF_SEL_NACK_GEN_ERR = 123 -LSDMA_PERF_SEL = ctypes.c_uint32 # enum - -# values for enumeration 'EFC_SURFACE_PIXEL_FORMAT' -EFC_SURFACE_PIXEL_FORMAT__enumvalues = { - 1: 'EFC_ARGB1555', - 2: 'EFC_RGBA5551', - 3: 'EFC_RGB565', - 4: 'EFC_BGR565', - 5: 'EFC_ARGB4444', - 6: 'EFC_RGBA4444', - 8: 'EFC_ARGB8888', - 9: 'EFC_RGBA8888', - 10: 'EFC_ARGB2101010', - 11: 'EFC_RGBA1010102', - 12: 'EFC_AYCrCb8888', - 13: 'EFC_YCrCbA8888', - 14: 'EFC_ACrYCb8888', - 15: 'EFC_CrYCbA8888', - 16: 'EFC_ARGB16161616_10MSB', - 17: 'EFC_RGBA16161616_10MSB', - 18: 'EFC_ARGB16161616_10LSB', - 19: 'EFC_RGBA16161616_10LSB', - 20: 'EFC_ARGB16161616_12MSB', - 21: 'EFC_RGBA16161616_12MSB', - 22: 'EFC_ARGB16161616_12LSB', - 23: 'EFC_RGBA16161616_12LSB', - 24: 'EFC_ARGB16161616_FLOAT', - 25: 'EFC_RGBA16161616_FLOAT', - 26: 'EFC_ARGB16161616_UNORM', - 27: 'EFC_RGBA16161616_UNORM', - 28: 'EFC_ARGB16161616_SNORM', - 29: 'EFC_RGBA16161616_SNORM', - 32: 'EFC_AYCrCb16161616_10MSB', - 33: 'EFC_AYCrCb16161616_10LSB', - 34: 'EFC_YCrCbA16161616_10MSB', - 35: 'EFC_YCrCbA16161616_10LSB', - 36: 'EFC_ACrYCb16161616_10MSB', - 37: 'EFC_ACrYCb16161616_10LSB', - 38: 'EFC_CrYCbA16161616_10MSB', - 39: 'EFC_CrYCbA16161616_10LSB', - 40: 'EFC_AYCrCb16161616_12MSB', - 41: 'EFC_AYCrCb16161616_12LSB', - 42: 'EFC_YCrCbA16161616_12MSB', - 43: 'EFC_YCrCbA16161616_12LSB', - 44: 'EFC_ACrYCb16161616_12MSB', - 45: 'EFC_ACrYCb16161616_12LSB', - 46: 'EFC_CrYCbA16161616_12MSB', - 47: 'EFC_CrYCbA16161616_12LSB', - 64: 'EFC_Y8_CrCb88_420_PLANAR', - 65: 'EFC_Y8_CbCr88_420_PLANAR', - 66: 'EFC_Y10_CrCb1010_420_PLANAR', - 67: 'EFC_Y10_CbCr1010_420_PLANAR', - 68: 'EFC_Y12_CrCb1212_420_PLANAR', - 69: 'EFC_Y12_CbCr1212_420_PLANAR', - 72: 'EFC_YCrYCb8888_422_PACKED', - 73: 'EFC_YCbYCr8888_422_PACKED', - 74: 'EFC_CrYCbY8888_422_PACKED', - 75: 'EFC_CbYCrY8888_422_PACKED', - 76: 'EFC_YCrYCb10101010_422_PACKED', - 77: 'EFC_YCbYCr10101010_422_PACKED', - 78: 'EFC_CrYCbY10101010_422_PACKED', - 79: 'EFC_CbYCrY10101010_422_PACKED', - 80: 'EFC_YCrYCb12121212_422_PACKED', - 81: 'EFC_YCbYCr12121212_422_PACKED', - 82: 'EFC_CrYCbY12121212_422_PACKED', - 83: 'EFC_CbYCrY12121212_422_PACKED', - 112: 'EFC_RGB111110_FIX', - 113: 'EFC_BGR101111_FIX', - 114: 'EFC_ACrYCb2101010', - 115: 'EFC_CrYCbA1010102', - 118: 'EFC_RGB111110_FLOAT', - 119: 'EFC_BGR101111_FLOAT', - 120: 'EFC_MONO_8', - 121: 'EFC_MONO_10MSB', - 122: 'EFC_MONO_10LSB', - 123: 'EFC_MONO_12MSB', - 124: 'EFC_MONO_12LSB', - 125: 'EFC_MONO_16', -} -EFC_ARGB1555 = 1 -EFC_RGBA5551 = 2 -EFC_RGB565 = 3 -EFC_BGR565 = 4 -EFC_ARGB4444 = 5 -EFC_RGBA4444 = 6 -EFC_ARGB8888 = 8 -EFC_RGBA8888 = 9 -EFC_ARGB2101010 = 10 -EFC_RGBA1010102 = 11 -EFC_AYCrCb8888 = 12 -EFC_YCrCbA8888 = 13 -EFC_ACrYCb8888 = 14 -EFC_CrYCbA8888 = 15 -EFC_ARGB16161616_10MSB = 16 -EFC_RGBA16161616_10MSB = 17 -EFC_ARGB16161616_10LSB = 18 -EFC_RGBA16161616_10LSB = 19 -EFC_ARGB16161616_12MSB = 20 -EFC_RGBA16161616_12MSB = 21 -EFC_ARGB16161616_12LSB = 22 -EFC_RGBA16161616_12LSB = 23 -EFC_ARGB16161616_FLOAT = 24 -EFC_RGBA16161616_FLOAT = 25 -EFC_ARGB16161616_UNORM = 26 -EFC_RGBA16161616_UNORM = 27 -EFC_ARGB16161616_SNORM = 28 -EFC_RGBA16161616_SNORM = 29 -EFC_AYCrCb16161616_10MSB = 32 -EFC_AYCrCb16161616_10LSB = 33 -EFC_YCrCbA16161616_10MSB = 34 -EFC_YCrCbA16161616_10LSB = 35 -EFC_ACrYCb16161616_10MSB = 36 -EFC_ACrYCb16161616_10LSB = 37 -EFC_CrYCbA16161616_10MSB = 38 -EFC_CrYCbA16161616_10LSB = 39 -EFC_AYCrCb16161616_12MSB = 40 -EFC_AYCrCb16161616_12LSB = 41 -EFC_YCrCbA16161616_12MSB = 42 -EFC_YCrCbA16161616_12LSB = 43 -EFC_ACrYCb16161616_12MSB = 44 -EFC_ACrYCb16161616_12LSB = 45 -EFC_CrYCbA16161616_12MSB = 46 -EFC_CrYCbA16161616_12LSB = 47 -EFC_Y8_CrCb88_420_PLANAR = 64 -EFC_Y8_CbCr88_420_PLANAR = 65 -EFC_Y10_CrCb1010_420_PLANAR = 66 -EFC_Y10_CbCr1010_420_PLANAR = 67 -EFC_Y12_CrCb1212_420_PLANAR = 68 -EFC_Y12_CbCr1212_420_PLANAR = 69 -EFC_YCrYCb8888_422_PACKED = 72 -EFC_YCbYCr8888_422_PACKED = 73 -EFC_CrYCbY8888_422_PACKED = 74 -EFC_CbYCrY8888_422_PACKED = 75 -EFC_YCrYCb10101010_422_PACKED = 76 -EFC_YCbYCr10101010_422_PACKED = 77 -EFC_CrYCbY10101010_422_PACKED = 78 -EFC_CbYCrY10101010_422_PACKED = 79 -EFC_YCrYCb12121212_422_PACKED = 80 -EFC_YCbYCr12121212_422_PACKED = 81 -EFC_CrYCbY12121212_422_PACKED = 82 -EFC_CbYCrY12121212_422_PACKED = 83 -EFC_RGB111110_FIX = 112 -EFC_BGR101111_FIX = 113 -EFC_ACrYCb2101010 = 114 -EFC_CrYCbA1010102 = 115 -EFC_RGB111110_FLOAT = 118 -EFC_BGR101111_FLOAT = 119 -EFC_MONO_8 = 120 -EFC_MONO_10MSB = 121 -EFC_MONO_10LSB = 122 -EFC_MONO_12MSB = 123 -EFC_MONO_12LSB = 124 -EFC_MONO_16 = 125 -EFC_SURFACE_PIXEL_FORMAT = ctypes.c_uint32 # enum -__SDMA_V6_0_0_PKT_OPEN_H_ = True # macro -SDMA_OP_NOP = 0 # macro -SDMA_OP_WRITE = 2 # macro -SDMA_OP_INDIRECT = 4 # macro -SDMA_OP_SEM = 7 # macro -SDMA_OP_COND_EXE = 9 # macro -SDMA_OP_PTEPDE = 12 # macro -SDMA_OP_SRBM_WRITE = 14 # macro -SDMA_OP_PRE_EXE = 15 # macro -SDMA_OP_GPUVM_INV = 16 # macro -SDMA_OP_GCR_REQ = 17 # macro -SDMA_OP_DUMMY_TRAP = 32 # macro -SDMA_SUBOP_TIMESTAMP_SET = 0 # macro -SDMA_SUBOP_TIMESTAMP_GET = 1 # macro -SDMA_SUBOP_COPY_LINEAR_SUB_WIND = 4 # macro -SDMA_SUBOP_COPY_TILED = 1 # macro -SDMA_SUBOP_COPY_TILED_SUB_WIND = 5 # macro -SDMA_SUBOP_COPY_T2T_SUB_WIND = 6 # macro -SDMA_SUBOP_COPY_SOA = 3 # macro -SDMA_SUBOP_COPY_DIRTY_PAGE = 7 # macro -SDMA_SUBOP_COPY_LINEAR_PHY = 8 # macro -SDMA_SUBOP_COPY_LINEAR_SUB_WIND_LARGE = 36 # macro -SDMA_SUBOP_COPY_LINEAR_BC = 16 # macro -SDMA_SUBOP_COPY_TILED_BC = 17 # macro -SDMA_SUBOP_COPY_LINEAR_SUB_WIND_BC = 20 # macro -SDMA_SUBOP_COPY_TILED_SUB_WIND_BC = 21 # macro -SDMA_SUBOP_COPY_T2T_SUB_WIND_BC = 22 # macro -SDMA_SUBOP_WRITE_LINEAR = 0 # macro -SDMA_SUBOP_WRITE_TILED = 1 # macro -SDMA_SUBOP_WRITE_TILED_BC = 17 # macro -SDMA_SUBOP_PTEPDE_GEN = 0 # macro -SDMA_SUBOP_PTEPDE_COPY = 1 # macro -SDMA_SUBOP_PTEPDE_RMW = 2 # macro -SDMA_SUBOP_PTEPDE_COPY_BACKWARDS = 3 # macro -SDMA_SUBOP_MEM_INCR = 1 # macro -SDMA_SUBOP_DATA_FILL_MULTI = 1 # macro -SDMA_SUBOP_POLL_REG_WRITE_MEM = 1 # macro -SDMA_SUBOP_POLL_DBIT_WRITE_MEM = 2 # macro -SDMA_SUBOP_POLL_MEM_VERIFY = 3 # macro -SDMA_SUBOP_VM_INVALIDATION = 4 # macro -HEADER_AGENT_DISPATCH = 4 # macro -HEADER_BARRIER = 5 # macro -SDMA_OP_AQL_COPY = 0 # macro -SDMA_OP_AQL_BARRIER_OR = 0 # macro -SDMA_GCR_RANGE_IS_PA = (1<<18) # macro -def SDMA_GCR_SEQ(x): # macro - return (((x)&0x3)<<16) -SDMA_GCR_GL2_WB = (1<<15) # macro -SDMA_GCR_GL2_INV = (1<<14) # macro -SDMA_GCR_GL2_DISCARD = (1<<13) # macro -def SDMA_GCR_GL2_RANGE(x): # macro - return (((x)&0x3)<<11) -SDMA_GCR_GL2_US = (1<<10) # macro -SDMA_GCR_GL1_INV = (1<<9) # macro -SDMA_GCR_GLV_INV = (1<<8) # macro -SDMA_GCR_GLK_INV = (1<<7) # macro -SDMA_GCR_GLK_WB = (1<<6) # macro -SDMA_GCR_GLM_INV = (1<<5) # macro -SDMA_GCR_GLM_WB = (1<<4) # macro -def SDMA_GCR_GL1_RANGE(x): # macro - return (((x)&0x3)<<2) -def SDMA_GCR_GLI_INV(x): # macro - return (((x)&0x3)<<0) -SDMA_PKT_COPY_LINEAR_HEADER_op_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_LINEAR_HEADER_op_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_COPY_LINEAR_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_LINEAR_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_COPY_LINEAR_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_COPY_LINEAR_HEADER_encrypt_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_HEADER_encrypt_mask = 0x00000001 # macro -SDMA_PKT_COPY_LINEAR_HEADER_encrypt_shift = 16 # macro -def SDMA_PKT_COPY_LINEAR_HEADER_ENCRYPT(x): # macro - return (((x)&0x00000001)<<16) -SDMA_PKT_COPY_LINEAR_HEADER_tmz_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_HEADER_tmz_mask = 0x00000001 # macro -SDMA_PKT_COPY_LINEAR_HEADER_tmz_shift = 18 # macro -def SDMA_PKT_COPY_LINEAR_HEADER_TMZ(x): # macro - return (((x)&0x00000001)<<18) -SDMA_PKT_COPY_LINEAR_HEADER_cpv_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_COPY_LINEAR_HEADER_cpv_shift = 19 # macro -def SDMA_PKT_COPY_LINEAR_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<19) -SDMA_PKT_COPY_LINEAR_HEADER_backwards_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_HEADER_backwards_mask = 0x00000001 # macro -SDMA_PKT_COPY_LINEAR_HEADER_backwards_shift = 25 # macro -def SDMA_PKT_COPY_LINEAR_HEADER_BACKWARDS(x): # macro - return (((x)&0x00000001)<<25) -SDMA_PKT_COPY_LINEAR_HEADER_broadcast_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_HEADER_broadcast_mask = 0x00000001 # macro -SDMA_PKT_COPY_LINEAR_HEADER_broadcast_shift = 27 # macro -def SDMA_PKT_COPY_LINEAR_HEADER_BROADCAST(x): # macro - return (((x)&0x00000001)<<27) -SDMA_PKT_COPY_LINEAR_COUNT_count_offset = 1 # macro -SDMA_PKT_COPY_LINEAR_COUNT_count_mask = 0x3FFFFFFF # macro -SDMA_PKT_COPY_LINEAR_COUNT_count_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_COUNT_COUNT(x): # macro - return (((x)&0x3FFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_PARAMETER_dst_sw_offset = 2 # macro -SDMA_PKT_COPY_LINEAR_PARAMETER_dst_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_LINEAR_PARAMETER_dst_sw_shift = 16 # macro -def SDMA_PKT_COPY_LINEAR_PARAMETER_DST_SW(x): # macro - return (((x)&0x00000003)<<16) -SDMA_PKT_COPY_LINEAR_PARAMETER_dst_cache_policy_offset = 2 # macro -SDMA_PKT_COPY_LINEAR_PARAMETER_dst_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_LINEAR_PARAMETER_dst_cache_policy_shift = 18 # macro -def SDMA_PKT_COPY_LINEAR_PARAMETER_DST_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<18) -SDMA_PKT_COPY_LINEAR_PARAMETER_src_sw_offset = 2 # macro -SDMA_PKT_COPY_LINEAR_PARAMETER_src_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_LINEAR_PARAMETER_src_sw_shift = 24 # macro -def SDMA_PKT_COPY_LINEAR_PARAMETER_SRC_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_LINEAR_PARAMETER_src_cache_policy_offset = 2 # macro -SDMA_PKT_COPY_LINEAR_PARAMETER_src_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_LINEAR_PARAMETER_src_cache_policy_shift = 26 # macro -def SDMA_PKT_COPY_LINEAR_PARAMETER_SRC_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<26) -SDMA_PKT_COPY_LINEAR_SRC_ADDR_LO_src_addr_31_0_offset = 3 # macro -SDMA_PKT_COPY_LINEAR_SRC_ADDR_LO_src_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SRC_ADDR_LO_src_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SRC_ADDR_LO_SRC_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SRC_ADDR_HI_src_addr_63_32_offset = 4 # macro -SDMA_PKT_COPY_LINEAR_SRC_ADDR_HI_src_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SRC_ADDR_HI_src_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SRC_ADDR_HI_SRC_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_DST_ADDR_LO_dst_addr_31_0_offset = 5 # macro -SDMA_PKT_COPY_LINEAR_DST_ADDR_LO_dst_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_DST_ADDR_LO_dst_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_DST_ADDR_LO_DST_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_DST_ADDR_HI_dst_addr_63_32_offset = 6 # macro -SDMA_PKT_COPY_LINEAR_DST_ADDR_HI_dst_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_DST_ADDR_HI_dst_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_DST_ADDR_HI_DST_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_BC_HEADER_op_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_BC_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_LINEAR_BC_HEADER_op_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_BC_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_COPY_LINEAR_BC_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_BC_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_LINEAR_BC_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_COPY_LINEAR_BC_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_COPY_LINEAR_BC_COUNT_count_offset = 1 # macro -SDMA_PKT_COPY_LINEAR_BC_COUNT_count_mask = 0x003FFFFF # macro -SDMA_PKT_COPY_LINEAR_BC_COUNT_count_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_BC_COUNT_COUNT(x): # macro - return (((x)&0x003FFFFF)<<0) -SDMA_PKT_COPY_LINEAR_BC_PARAMETER_dst_sw_offset = 2 # macro -SDMA_PKT_COPY_LINEAR_BC_PARAMETER_dst_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_LINEAR_BC_PARAMETER_dst_sw_shift = 16 # macro -def SDMA_PKT_COPY_LINEAR_BC_PARAMETER_DST_SW(x): # macro - return (((x)&0x00000003)<<16) -SDMA_PKT_COPY_LINEAR_BC_PARAMETER_dst_ha_offset = 2 # macro -SDMA_PKT_COPY_LINEAR_BC_PARAMETER_dst_ha_mask = 0x00000001 # macro -SDMA_PKT_COPY_LINEAR_BC_PARAMETER_dst_ha_shift = 19 # macro -def SDMA_PKT_COPY_LINEAR_BC_PARAMETER_DST_HA(x): # macro - return (((x)&0x00000001)<<19) -SDMA_PKT_COPY_LINEAR_BC_PARAMETER_src_sw_offset = 2 # macro -SDMA_PKT_COPY_LINEAR_BC_PARAMETER_src_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_LINEAR_BC_PARAMETER_src_sw_shift = 24 # macro -def SDMA_PKT_COPY_LINEAR_BC_PARAMETER_SRC_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_LINEAR_BC_PARAMETER_src_ha_offset = 2 # macro -SDMA_PKT_COPY_LINEAR_BC_PARAMETER_src_ha_mask = 0x00000001 # macro -SDMA_PKT_COPY_LINEAR_BC_PARAMETER_src_ha_shift = 27 # macro -def SDMA_PKT_COPY_LINEAR_BC_PARAMETER_SRC_HA(x): # macro - return (((x)&0x00000001)<<27) -SDMA_PKT_COPY_LINEAR_BC_SRC_ADDR_LO_src_addr_31_0_offset = 3 # macro -SDMA_PKT_COPY_LINEAR_BC_SRC_ADDR_LO_src_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_BC_SRC_ADDR_LO_src_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_BC_SRC_ADDR_LO_SRC_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_BC_SRC_ADDR_HI_src_addr_63_32_offset = 4 # macro -SDMA_PKT_COPY_LINEAR_BC_SRC_ADDR_HI_src_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_BC_SRC_ADDR_HI_src_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_BC_SRC_ADDR_HI_SRC_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_BC_DST_ADDR_LO_dst_addr_31_0_offset = 5 # macro -SDMA_PKT_COPY_LINEAR_BC_DST_ADDR_LO_dst_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_BC_DST_ADDR_LO_dst_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_BC_DST_ADDR_LO_DST_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_BC_DST_ADDR_HI_dst_addr_63_32_offset = 6 # macro -SDMA_PKT_COPY_LINEAR_BC_DST_ADDR_HI_dst_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_BC_DST_ADDR_HI_dst_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_BC_DST_ADDR_HI_DST_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_DIRTY_PAGE_HEADER_op_offset = 0 # macro -SDMA_PKT_COPY_DIRTY_PAGE_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_DIRTY_PAGE_HEADER_op_shift = 0 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_COPY_DIRTY_PAGE_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_COPY_DIRTY_PAGE_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_DIRTY_PAGE_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_COPY_DIRTY_PAGE_HEADER_tmz_offset = 0 # macro -SDMA_PKT_COPY_DIRTY_PAGE_HEADER_tmz_mask = 0x00000001 # macro -SDMA_PKT_COPY_DIRTY_PAGE_HEADER_tmz_shift = 18 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_HEADER_TMZ(x): # macro - return (((x)&0x00000001)<<18) -SDMA_PKT_COPY_DIRTY_PAGE_HEADER_cpv_offset = 0 # macro -SDMA_PKT_COPY_DIRTY_PAGE_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_COPY_DIRTY_PAGE_HEADER_cpv_shift = 19 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<19) -SDMA_PKT_COPY_DIRTY_PAGE_HEADER_all_offset = 0 # macro -SDMA_PKT_COPY_DIRTY_PAGE_HEADER_all_mask = 0x00000001 # macro -SDMA_PKT_COPY_DIRTY_PAGE_HEADER_all_shift = 31 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_HEADER_ALL(x): # macro - return (((x)&0x00000001)<<31) -SDMA_PKT_COPY_DIRTY_PAGE_COUNT_count_offset = 1 # macro -SDMA_PKT_COPY_DIRTY_PAGE_COUNT_count_mask = 0x003FFFFF # macro -SDMA_PKT_COPY_DIRTY_PAGE_COUNT_count_shift = 0 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_COUNT_COUNT(x): # macro - return (((x)&0x003FFFFF)<<0) -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_mtype_offset = 2 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_mtype_mask = 0x00000007 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_mtype_shift = 3 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_DST_MTYPE(x): # macro - return (((x)&0x00000007)<<3) -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_l2_policy_offset = 2 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_l2_policy_mask = 0x00000003 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_l2_policy_shift = 6 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_DST_L2_POLICY(x): # macro - return (((x)&0x00000003)<<6) -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_llc_offset = 2 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_llc_mask = 0x00000001 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_llc_shift = 8 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_DST_LLC(x): # macro - return (((x)&0x00000001)<<8) -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_mtype_offset = 2 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_mtype_mask = 0x00000007 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_mtype_shift = 11 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_SRC_MTYPE(x): # macro - return (((x)&0x00000007)<<11) -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_l2_policy_offset = 2 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_l2_policy_mask = 0x00000003 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_l2_policy_shift = 14 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_SRC_L2_POLICY(x): # macro - return (((x)&0x00000003)<<14) -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_llc_offset = 2 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_llc_mask = 0x00000001 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_llc_shift = 16 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_SRC_LLC(x): # macro - return (((x)&0x00000001)<<16) -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_sw_offset = 2 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_sw_shift = 17 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_DST_SW(x): # macro - return (((x)&0x00000003)<<17) -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_gcc_offset = 2 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_gcc_mask = 0x00000001 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_gcc_shift = 19 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_DST_GCC(x): # macro - return (((x)&0x00000001)<<19) -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_sys_offset = 2 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_sys_mask = 0x00000001 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_sys_shift = 20 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_DST_SYS(x): # macro - return (((x)&0x00000001)<<20) -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_snoop_offset = 2 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_snoop_mask = 0x00000001 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_snoop_shift = 22 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_DST_SNOOP(x): # macro - return (((x)&0x00000001)<<22) -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_gpa_offset = 2 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_gpa_mask = 0x00000001 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_gpa_shift = 23 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_DST_GPA(x): # macro - return (((x)&0x00000001)<<23) -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_sw_offset = 2 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_sw_shift = 24 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_SRC_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_sys_offset = 2 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_sys_mask = 0x00000001 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_sys_shift = 28 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_SRC_SYS(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_snoop_offset = 2 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_snoop_mask = 0x00000001 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_snoop_shift = 30 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_SRC_SNOOP(x): # macro - return (((x)&0x00000001)<<30) -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_gpa_offset = 2 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_gpa_mask = 0x00000001 # macro -SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_gpa_shift = 31 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_SRC_GPA(x): # macro - return (((x)&0x00000001)<<31) -SDMA_PKT_COPY_DIRTY_PAGE_SRC_ADDR_LO_src_addr_31_0_offset = 3 # macro -SDMA_PKT_COPY_DIRTY_PAGE_SRC_ADDR_LO_src_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_DIRTY_PAGE_SRC_ADDR_LO_src_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_SRC_ADDR_LO_SRC_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_DIRTY_PAGE_SRC_ADDR_HI_src_addr_63_32_offset = 4 # macro -SDMA_PKT_COPY_DIRTY_PAGE_SRC_ADDR_HI_src_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_DIRTY_PAGE_SRC_ADDR_HI_src_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_SRC_ADDR_HI_SRC_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_DIRTY_PAGE_DST_ADDR_LO_dst_addr_31_0_offset = 5 # macro -SDMA_PKT_COPY_DIRTY_PAGE_DST_ADDR_LO_dst_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_DIRTY_PAGE_DST_ADDR_LO_dst_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_DST_ADDR_LO_DST_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_DIRTY_PAGE_DST_ADDR_HI_dst_addr_63_32_offset = 6 # macro -SDMA_PKT_COPY_DIRTY_PAGE_DST_ADDR_HI_dst_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_DIRTY_PAGE_DST_ADDR_HI_dst_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_DIRTY_PAGE_DST_ADDR_HI_DST_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_op_offset = 0 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_op_shift = 0 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_tmz_offset = 0 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_tmz_mask = 0x00000001 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_tmz_shift = 18 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_TMZ(x): # macro - return (((x)&0x00000001)<<18) -SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_cpv_offset = 0 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_cpv_shift = 19 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<19) -SDMA_PKT_COPY_PHYSICAL_LINEAR_COUNT_count_offset = 1 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_COUNT_count_mask = 0x003FFFFF # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_COUNT_count_shift = 0 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_COUNT_COUNT(x): # macro - return (((x)&0x003FFFFF)<<0) -SDMA_PKT_COPY_PHYSICAL_LINEAR_COUNT_addr_pair_num_offset = 1 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_COUNT_addr_pair_num_mask = 0x000000FF # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_COUNT_addr_pair_num_shift = 24 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_COUNT_ADDR_PAIR_NUM(x): # macro - return (((x)&0x000000FF)<<24) -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_mtype_offset = 2 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_mtype_mask = 0x00000007 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_mtype_shift = 3 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_DST_MTYPE(x): # macro - return (((x)&0x00000007)<<3) -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_l2_policy_offset = 2 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_l2_policy_mask = 0x00000003 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_l2_policy_shift = 6 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_DST_L2_POLICY(x): # macro - return (((x)&0x00000003)<<6) -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_llc_offset = 2 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_llc_mask = 0x00000001 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_llc_shift = 8 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_DST_LLC(x): # macro - return (((x)&0x00000001)<<8) -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_mtype_offset = 2 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_mtype_mask = 0x00000007 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_mtype_shift = 11 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_SRC_MTYPE(x): # macro - return (((x)&0x00000007)<<11) -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_l2_policy_offset = 2 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_l2_policy_mask = 0x00000003 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_l2_policy_shift = 14 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_SRC_L2_POLICY(x): # macro - return (((x)&0x00000003)<<14) -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_llc_offset = 2 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_llc_mask = 0x00000001 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_llc_shift = 16 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_SRC_LLC(x): # macro - return (((x)&0x00000001)<<16) -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_sw_offset = 2 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_sw_shift = 17 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_DST_SW(x): # macro - return (((x)&0x00000003)<<17) -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_gcc_offset = 2 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_gcc_mask = 0x00000001 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_gcc_shift = 19 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_DST_GCC(x): # macro - return (((x)&0x00000001)<<19) -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_sys_offset = 2 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_sys_mask = 0x00000001 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_sys_shift = 20 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_DST_SYS(x): # macro - return (((x)&0x00000001)<<20) -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_log_offset = 2 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_log_mask = 0x00000001 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_log_shift = 21 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_DST_LOG(x): # macro - return (((x)&0x00000001)<<21) -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_snoop_offset = 2 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_snoop_mask = 0x00000001 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_snoop_shift = 22 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_DST_SNOOP(x): # macro - return (((x)&0x00000001)<<22) -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_gpa_offset = 2 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_gpa_mask = 0x00000001 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_gpa_shift = 23 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_DST_GPA(x): # macro - return (((x)&0x00000001)<<23) -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_sw_offset = 2 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_sw_shift = 24 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_SRC_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_gcc_offset = 2 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_gcc_mask = 0x00000001 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_gcc_shift = 27 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_SRC_GCC(x): # macro - return (((x)&0x00000001)<<27) -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_sys_offset = 2 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_sys_mask = 0x00000001 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_sys_shift = 28 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_SRC_SYS(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_snoop_offset = 2 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_snoop_mask = 0x00000001 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_snoop_shift = 30 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_SRC_SNOOP(x): # macro - return (((x)&0x00000001)<<30) -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_gpa_offset = 2 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_gpa_mask = 0x00000001 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_gpa_shift = 31 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_SRC_GPA(x): # macro - return (((x)&0x00000001)<<31) -SDMA_PKT_COPY_PHYSICAL_LINEAR_SRC_ADDR_LO_src_addr_31_0_offset = 3 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_SRC_ADDR_LO_src_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_SRC_ADDR_LO_src_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_SRC_ADDR_LO_SRC_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_PHYSICAL_LINEAR_SRC_ADDR_HI_src_addr_63_32_offset = 4 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_SRC_ADDR_HI_src_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_SRC_ADDR_HI_src_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_SRC_ADDR_HI_SRC_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_PHYSICAL_LINEAR_DST_ADDR_LO_dst_addr_31_0_offset = 5 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_DST_ADDR_LO_dst_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_DST_ADDR_LO_dst_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_DST_ADDR_LO_DST_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_PHYSICAL_LINEAR_DST_ADDR_HI_dst_addr_63_32_offset = 6 # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_DST_ADDR_HI_dst_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_PHYSICAL_LINEAR_DST_ADDR_HI_dst_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_PHYSICAL_LINEAR_DST_ADDR_HI_DST_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_op_offset = 0 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_op_shift = 0 # macro -def SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_encrypt_offset = 0 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_encrypt_mask = 0x00000001 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_encrypt_shift = 16 # macro -def SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_ENCRYPT(x): # macro - return (((x)&0x00000001)<<16) -SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_tmz_offset = 0 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_tmz_mask = 0x00000001 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_tmz_shift = 18 # macro -def SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_TMZ(x): # macro - return (((x)&0x00000001)<<18) -SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_cpv_offset = 0 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_cpv_shift = 19 # macro -def SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<19) -SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_broadcast_offset = 0 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_broadcast_mask = 0x00000001 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_broadcast_shift = 27 # macro -def SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_BROADCAST(x): # macro - return (((x)&0x00000001)<<27) -SDMA_PKT_COPY_BROADCAST_LINEAR_COUNT_count_offset = 1 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_COUNT_count_mask = 0x3FFFFFFF # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_COUNT_count_shift = 0 # macro -def SDMA_PKT_COPY_BROADCAST_LINEAR_COUNT_COUNT(x): # macro - return (((x)&0x3FFFFFFF)<<0) -SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst2_sw_offset = 2 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst2_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst2_sw_shift = 8 # macro -def SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_DST2_SW(x): # macro - return (((x)&0x00000003)<<8) -SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst2_cache_policy_offset = 2 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst2_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst2_cache_policy_shift = 10 # macro -def SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_DST2_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<10) -SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst1_sw_offset = 2 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst1_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst1_sw_shift = 16 # macro -def SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_DST1_SW(x): # macro - return (((x)&0x00000003)<<16) -SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst1_cache_policy_offset = 2 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst1_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst1_cache_policy_shift = 18 # macro -def SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_DST1_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<18) -SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_src_sw_offset = 2 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_src_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_src_sw_shift = 24 # macro -def SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_SRC_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_src_cache_policy_offset = 2 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_src_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_src_cache_policy_shift = 26 # macro -def SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_SRC_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<26) -SDMA_PKT_COPY_BROADCAST_LINEAR_SRC_ADDR_LO_src_addr_31_0_offset = 3 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_SRC_ADDR_LO_src_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_SRC_ADDR_LO_src_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_BROADCAST_LINEAR_SRC_ADDR_LO_SRC_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_BROADCAST_LINEAR_SRC_ADDR_HI_src_addr_63_32_offset = 4 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_SRC_ADDR_HI_src_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_SRC_ADDR_HI_src_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_BROADCAST_LINEAR_SRC_ADDR_HI_SRC_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_BROADCAST_LINEAR_DST1_ADDR_LO_dst1_addr_31_0_offset = 5 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_DST1_ADDR_LO_dst1_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_DST1_ADDR_LO_dst1_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_BROADCAST_LINEAR_DST1_ADDR_LO_DST1_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_BROADCAST_LINEAR_DST1_ADDR_HI_dst1_addr_63_32_offset = 6 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_DST1_ADDR_HI_dst1_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_DST1_ADDR_HI_dst1_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_BROADCAST_LINEAR_DST1_ADDR_HI_DST1_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_BROADCAST_LINEAR_DST2_ADDR_LO_dst2_addr_31_0_offset = 7 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_DST2_ADDR_LO_dst2_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_DST2_ADDR_LO_dst2_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_BROADCAST_LINEAR_DST2_ADDR_LO_DST2_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_BROADCAST_LINEAR_DST2_ADDR_HI_dst2_addr_63_32_offset = 8 # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_DST2_ADDR_HI_dst2_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_BROADCAST_LINEAR_DST2_ADDR_HI_dst2_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_BROADCAST_LINEAR_DST2_ADDR_HI_DST2_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_op_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_op_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_tmz_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_tmz_mask = 0x00000001 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_tmz_shift = 18 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_TMZ(x): # macro - return (((x)&0x00000001)<<18) -SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_cpv_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_cpv_shift = 19 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<19) -SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_elementsize_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_elementsize_mask = 0x00000007 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_elementsize_shift = 29 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_ELEMENTSIZE(x): # macro - return (((x)&0x00000007)<<29) -SDMA_PKT_COPY_LINEAR_SUBWIN_SRC_ADDR_LO_src_addr_31_0_offset = 1 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_SRC_ADDR_LO_src_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_SRC_ADDR_LO_src_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_SRC_ADDR_LO_SRC_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_SRC_ADDR_HI_src_addr_63_32_offset = 2 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_SRC_ADDR_HI_src_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_SRC_ADDR_HI_src_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_SRC_ADDR_HI_SRC_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_3_src_x_offset = 3 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_3_src_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_3_src_x_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_DW_3_SRC_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_3_src_y_offset = 3 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_3_src_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_3_src_y_shift = 16 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_DW_3_SRC_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_4_src_z_offset = 4 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_4_src_z_mask = 0x00001FFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_4_src_z_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_DW_4_SRC_Z(x): # macro - return (((x)&0x00001FFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_4_src_pitch_offset = 4 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_4_src_pitch_mask = 0x0007FFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_4_src_pitch_shift = 13 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_DW_4_SRC_PITCH(x): # macro - return (((x)&0x0007FFFF)<<13) -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_5_src_slice_pitch_offset = 5 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_5_src_slice_pitch_mask = 0x0FFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_5_src_slice_pitch_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_DW_5_SRC_SLICE_PITCH(x): # macro - return (((x)&0x0FFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_DST_ADDR_LO_dst_addr_31_0_offset = 6 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DST_ADDR_LO_dst_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DST_ADDR_LO_dst_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_DST_ADDR_LO_DST_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_DST_ADDR_HI_dst_addr_63_32_offset = 7 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DST_ADDR_HI_dst_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DST_ADDR_HI_dst_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_DST_ADDR_HI_DST_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_8_dst_x_offset = 8 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_8_dst_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_8_dst_x_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_DW_8_DST_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_8_dst_y_offset = 8 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_8_dst_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_8_dst_y_shift = 16 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_DW_8_DST_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_9_dst_z_offset = 9 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_9_dst_z_mask = 0x00001FFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_9_dst_z_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_DW_9_DST_Z(x): # macro - return (((x)&0x00001FFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_9_dst_pitch_offset = 9 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_9_dst_pitch_mask = 0x0007FFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_9_dst_pitch_shift = 13 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_DW_9_DST_PITCH(x): # macro - return (((x)&0x0007FFFF)<<13) -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_10_dst_slice_pitch_offset = 10 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_10_dst_slice_pitch_mask = 0x0FFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_10_dst_slice_pitch_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_DW_10_DST_SLICE_PITCH(x): # macro - return (((x)&0x0FFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_11_rect_x_offset = 11 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_11_rect_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_11_rect_x_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_DW_11_RECT_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_11_rect_y_offset = 11 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_11_rect_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_11_rect_y_shift = 16 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_DW_11_RECT_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_rect_z_offset = 12 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_rect_z_mask = 0x00001FFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_rect_z_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_RECT_Z(x): # macro - return (((x)&0x00001FFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_dst_sw_offset = 12 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_dst_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_dst_sw_shift = 16 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_DST_SW(x): # macro - return (((x)&0x00000003)<<16) -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_dst_cache_policy_offset = 12 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_dst_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_dst_cache_policy_shift = 18 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_DST_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<18) -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_src_sw_offset = 12 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_src_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_src_sw_shift = 24 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_SRC_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_src_cache_policy_offset = 12 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_src_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_src_cache_policy_shift = 26 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_SRC_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<26) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_op_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_op_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_tmz_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_tmz_mask = 0x00000001 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_tmz_shift = 18 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_TMZ(x): # macro - return (((x)&0x00000001)<<18) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_cpv_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_cpv_shift = 19 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<19) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_SRC_ADDR_LO_src_addr_31_0_offset = 1 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_SRC_ADDR_LO_src_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_SRC_ADDR_LO_src_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_SRC_ADDR_LO_SRC_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_SRC_ADDR_HI_src_addr_63_32_offset = 2 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_SRC_ADDR_HI_src_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_SRC_ADDR_HI_src_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_SRC_ADDR_HI_SRC_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_3_src_x_offset = 3 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_3_src_x_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_3_src_x_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_3_SRC_X(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_4_src_y_offset = 4 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_4_src_y_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_4_src_y_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_4_SRC_Y(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_5_src_z_offset = 5 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_5_src_z_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_5_src_z_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_5_SRC_Z(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_6_src_pitch_offset = 6 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_6_src_pitch_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_6_src_pitch_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_6_SRC_PITCH(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_7_src_slice_pitch_31_0_offset = 7 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_7_src_slice_pitch_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_7_src_slice_pitch_31_0_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_7_SRC_SLICE_PITCH_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_8_src_slice_pitch_47_32_offset = 8 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_8_src_slice_pitch_47_32_mask = 0x0000FFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_8_src_slice_pitch_47_32_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_8_SRC_SLICE_PITCH_47_32(x): # macro - return (((x)&0x0000FFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DST_ADDR_LO_dst_addr_31_0_offset = 9 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DST_ADDR_LO_dst_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DST_ADDR_LO_dst_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DST_ADDR_LO_DST_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DST_ADDR_HI_dst_addr_63_32_offset = 10 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DST_ADDR_HI_dst_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DST_ADDR_HI_dst_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DST_ADDR_HI_DST_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_11_dst_x_offset = 11 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_11_dst_x_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_11_dst_x_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_11_DST_X(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_12_dst_y_offset = 12 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_12_dst_y_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_12_dst_y_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_12_DST_Y(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_13_dst_z_offset = 13 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_13_dst_z_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_13_dst_z_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_13_DST_Z(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_14_dst_pitch_offset = 14 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_14_dst_pitch_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_14_dst_pitch_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_14_DST_PITCH(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_15_dst_slice_pitch_31_0_offset = 15 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_15_dst_slice_pitch_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_15_dst_slice_pitch_31_0_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_15_DST_SLICE_PITCH_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_dst_slice_pitch_47_32_offset = 16 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_dst_slice_pitch_47_32_mask = 0x0000FFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_dst_slice_pitch_47_32_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_DST_SLICE_PITCH_47_32(x): # macro - return (((x)&0x0000FFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_dst_sw_offset = 16 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_dst_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_dst_sw_shift = 16 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_DST_SW(x): # macro - return (((x)&0x00000003)<<16) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_dst_policy_offset = 16 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_dst_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_dst_policy_shift = 18 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_DST_POLICY(x): # macro - return (((x)&0x00000007)<<18) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_src_sw_offset = 16 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_src_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_src_sw_shift = 24 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_SRC_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_src_policy_offset = 16 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_src_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_src_policy_shift = 26 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_SRC_POLICY(x): # macro - return (((x)&0x00000007)<<26) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_17_rect_x_offset = 17 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_17_rect_x_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_17_rect_x_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_17_RECT_X(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_18_rect_y_offset = 18 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_18_rect_y_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_18_rect_y_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_18_RECT_Y(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_19_rect_z_offset = 19 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_19_rect_z_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_19_rect_z_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_19_RECT_Z(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_op_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_op_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_elementsize_offset = 0 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_elementsize_mask = 0x00000007 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_elementsize_shift = 29 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_ELEMENTSIZE(x): # macro - return (((x)&0x00000007)<<29) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_SRC_ADDR_LO_src_addr_31_0_offset = 1 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_SRC_ADDR_LO_src_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_SRC_ADDR_LO_src_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_SRC_ADDR_LO_SRC_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_SRC_ADDR_HI_src_addr_63_32_offset = 2 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_SRC_ADDR_HI_src_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_SRC_ADDR_HI_src_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_SRC_ADDR_HI_SRC_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_3_src_x_offset = 3 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_3_src_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_3_src_x_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_3_SRC_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_3_src_y_offset = 3 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_3_src_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_3_src_y_shift = 16 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_3_SRC_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_4_src_z_offset = 4 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_4_src_z_mask = 0x000007FF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_4_src_z_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_4_SRC_Z(x): # macro - return (((x)&0x000007FF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_4_src_pitch_offset = 4 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_4_src_pitch_mask = 0x00003FFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_4_src_pitch_shift = 13 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_4_SRC_PITCH(x): # macro - return (((x)&0x00003FFF)<<13) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_5_src_slice_pitch_offset = 5 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_5_src_slice_pitch_mask = 0x0FFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_5_src_slice_pitch_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_5_SRC_SLICE_PITCH(x): # macro - return (((x)&0x0FFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DST_ADDR_LO_dst_addr_31_0_offset = 6 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DST_ADDR_LO_dst_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DST_ADDR_LO_dst_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DST_ADDR_LO_DST_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DST_ADDR_HI_dst_addr_63_32_offset = 7 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DST_ADDR_HI_dst_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DST_ADDR_HI_dst_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DST_ADDR_HI_DST_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_8_dst_x_offset = 8 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_8_dst_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_8_dst_x_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_8_DST_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_8_dst_y_offset = 8 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_8_dst_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_8_dst_y_shift = 16 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_8_DST_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_9_dst_z_offset = 9 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_9_dst_z_mask = 0x000007FF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_9_dst_z_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_9_DST_Z(x): # macro - return (((x)&0x000007FF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_9_dst_pitch_offset = 9 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_9_dst_pitch_mask = 0x00003FFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_9_dst_pitch_shift = 13 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_9_DST_PITCH(x): # macro - return (((x)&0x00003FFF)<<13) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_10_dst_slice_pitch_offset = 10 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_10_dst_slice_pitch_mask = 0x0FFFFFFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_10_dst_slice_pitch_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_10_DST_SLICE_PITCH(x): # macro - return (((x)&0x0FFFFFFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_11_rect_x_offset = 11 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_11_rect_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_11_rect_x_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_11_RECT_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_11_rect_y_offset = 11 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_11_rect_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_11_rect_y_shift = 16 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_11_RECT_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_rect_z_offset = 12 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_rect_z_mask = 0x000007FF # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_rect_z_shift = 0 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_RECT_Z(x): # macro - return (((x)&0x000007FF)<<0) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_dst_sw_offset = 12 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_dst_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_dst_sw_shift = 16 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_DST_SW(x): # macro - return (((x)&0x00000003)<<16) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_dst_ha_offset = 12 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_dst_ha_mask = 0x00000001 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_dst_ha_shift = 19 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_DST_HA(x): # macro - return (((x)&0x00000001)<<19) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_src_sw_offset = 12 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_src_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_src_sw_shift = 24 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_SRC_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_src_ha_offset = 12 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_src_ha_mask = 0x00000001 # macro -SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_src_ha_shift = 27 # macro -def SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_SRC_HA(x): # macro - return (((x)&0x00000001)<<27) -SDMA_PKT_COPY_TILED_HEADER_op_offset = 0 # macro -SDMA_PKT_COPY_TILED_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_TILED_HEADER_op_shift = 0 # macro -def SDMA_PKT_COPY_TILED_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_COPY_TILED_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_COPY_TILED_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_TILED_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_COPY_TILED_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_COPY_TILED_HEADER_encrypt_offset = 0 # macro -SDMA_PKT_COPY_TILED_HEADER_encrypt_mask = 0x00000001 # macro -SDMA_PKT_COPY_TILED_HEADER_encrypt_shift = 16 # macro -def SDMA_PKT_COPY_TILED_HEADER_ENCRYPT(x): # macro - return (((x)&0x00000001)<<16) -SDMA_PKT_COPY_TILED_HEADER_tmz_offset = 0 # macro -SDMA_PKT_COPY_TILED_HEADER_tmz_mask = 0x00000001 # macro -SDMA_PKT_COPY_TILED_HEADER_tmz_shift = 18 # macro -def SDMA_PKT_COPY_TILED_HEADER_TMZ(x): # macro - return (((x)&0x00000001)<<18) -SDMA_PKT_COPY_TILED_HEADER_cpv_offset = 0 # macro -SDMA_PKT_COPY_TILED_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_COPY_TILED_HEADER_cpv_shift = 19 # macro -def SDMA_PKT_COPY_TILED_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<19) -SDMA_PKT_COPY_TILED_HEADER_detile_offset = 0 # macro -SDMA_PKT_COPY_TILED_HEADER_detile_mask = 0x00000001 # macro -SDMA_PKT_COPY_TILED_HEADER_detile_shift = 31 # macro -def SDMA_PKT_COPY_TILED_HEADER_DETILE(x): # macro - return (((x)&0x00000001)<<31) -SDMA_PKT_COPY_TILED_TILED_ADDR_LO_tiled_addr_31_0_offset = 1 # macro -SDMA_PKT_COPY_TILED_TILED_ADDR_LO_tiled_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_TILED_ADDR_LO_tiled_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_TILED_TILED_ADDR_LO_TILED_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_TILED_ADDR_HI_tiled_addr_63_32_offset = 2 # macro -SDMA_PKT_COPY_TILED_TILED_ADDR_HI_tiled_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_TILED_ADDR_HI_tiled_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_TILED_TILED_ADDR_HI_TILED_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_DW_3_width_offset = 3 # macro -SDMA_PKT_COPY_TILED_DW_3_width_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_DW_3_width_shift = 0 # macro -def SDMA_PKT_COPY_TILED_DW_3_WIDTH(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_TILED_DW_4_height_offset = 4 # macro -SDMA_PKT_COPY_TILED_DW_4_height_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_DW_4_height_shift = 0 # macro -def SDMA_PKT_COPY_TILED_DW_4_HEIGHT(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_TILED_DW_4_depth_offset = 4 # macro -SDMA_PKT_COPY_TILED_DW_4_depth_mask = 0x00001FFF # macro -SDMA_PKT_COPY_TILED_DW_4_depth_shift = 16 # macro -def SDMA_PKT_COPY_TILED_DW_4_DEPTH(x): # macro - return (((x)&0x00001FFF)<<16) -SDMA_PKT_COPY_TILED_DW_5_element_size_offset = 5 # macro -SDMA_PKT_COPY_TILED_DW_5_element_size_mask = 0x00000007 # macro -SDMA_PKT_COPY_TILED_DW_5_element_size_shift = 0 # macro -def SDMA_PKT_COPY_TILED_DW_5_ELEMENT_SIZE(x): # macro - return (((x)&0x00000007)<<0) -SDMA_PKT_COPY_TILED_DW_5_swizzle_mode_offset = 5 # macro -SDMA_PKT_COPY_TILED_DW_5_swizzle_mode_mask = 0x0000001F # macro -SDMA_PKT_COPY_TILED_DW_5_swizzle_mode_shift = 3 # macro -def SDMA_PKT_COPY_TILED_DW_5_SWIZZLE_MODE(x): # macro - return (((x)&0x0000001F)<<3) -SDMA_PKT_COPY_TILED_DW_5_dimension_offset = 5 # macro -SDMA_PKT_COPY_TILED_DW_5_dimension_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_DW_5_dimension_shift = 9 # macro -def SDMA_PKT_COPY_TILED_DW_5_DIMENSION(x): # macro - return (((x)&0x00000003)<<9) -SDMA_PKT_COPY_TILED_DW_5_mip_max_offset = 5 # macro -SDMA_PKT_COPY_TILED_DW_5_mip_max_mask = 0x0000000F # macro -SDMA_PKT_COPY_TILED_DW_5_mip_max_shift = 16 # macro -def SDMA_PKT_COPY_TILED_DW_5_MIP_MAX(x): # macro - return (((x)&0x0000000F)<<16) -SDMA_PKT_COPY_TILED_DW_6_x_offset = 6 # macro -SDMA_PKT_COPY_TILED_DW_6_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_DW_6_x_shift = 0 # macro -def SDMA_PKT_COPY_TILED_DW_6_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_TILED_DW_6_y_offset = 6 # macro -SDMA_PKT_COPY_TILED_DW_6_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_DW_6_y_shift = 16 # macro -def SDMA_PKT_COPY_TILED_DW_6_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_TILED_DW_7_z_offset = 7 # macro -SDMA_PKT_COPY_TILED_DW_7_z_mask = 0x00001FFF # macro -SDMA_PKT_COPY_TILED_DW_7_z_shift = 0 # macro -def SDMA_PKT_COPY_TILED_DW_7_Z(x): # macro - return (((x)&0x00001FFF)<<0) -SDMA_PKT_COPY_TILED_DW_7_linear_sw_offset = 7 # macro -SDMA_PKT_COPY_TILED_DW_7_linear_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_DW_7_linear_sw_shift = 16 # macro -def SDMA_PKT_COPY_TILED_DW_7_LINEAR_SW(x): # macro - return (((x)&0x00000003)<<16) -SDMA_PKT_COPY_TILED_DW_7_linear_cache_policy_offset = 7 # macro -SDMA_PKT_COPY_TILED_DW_7_linear_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_TILED_DW_7_linear_cache_policy_shift = 18 # macro -def SDMA_PKT_COPY_TILED_DW_7_LINEAR_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<18) -SDMA_PKT_COPY_TILED_DW_7_tile_sw_offset = 7 # macro -SDMA_PKT_COPY_TILED_DW_7_tile_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_DW_7_tile_sw_shift = 24 # macro -def SDMA_PKT_COPY_TILED_DW_7_TILE_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_TILED_DW_7_tile_cache_policy_offset = 7 # macro -SDMA_PKT_COPY_TILED_DW_7_tile_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_TILED_DW_7_tile_cache_policy_shift = 26 # macro -def SDMA_PKT_COPY_TILED_DW_7_TILE_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<26) -SDMA_PKT_COPY_TILED_LINEAR_ADDR_LO_linear_addr_31_0_offset = 8 # macro -SDMA_PKT_COPY_TILED_LINEAR_ADDR_LO_linear_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_LINEAR_ADDR_LO_linear_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_TILED_LINEAR_ADDR_LO_LINEAR_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_LINEAR_ADDR_HI_linear_addr_63_32_offset = 9 # macro -SDMA_PKT_COPY_TILED_LINEAR_ADDR_HI_linear_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_LINEAR_ADDR_HI_linear_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_TILED_LINEAR_ADDR_HI_LINEAR_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_LINEAR_PITCH_linear_pitch_offset = 10 # macro -SDMA_PKT_COPY_TILED_LINEAR_PITCH_linear_pitch_mask = 0x0007FFFF # macro -SDMA_PKT_COPY_TILED_LINEAR_PITCH_linear_pitch_shift = 0 # macro -def SDMA_PKT_COPY_TILED_LINEAR_PITCH_LINEAR_PITCH(x): # macro - return (((x)&0x0007FFFF)<<0) -SDMA_PKT_COPY_TILED_LINEAR_SLICE_PITCH_linear_slice_pitch_offset = 11 # macro -SDMA_PKT_COPY_TILED_LINEAR_SLICE_PITCH_linear_slice_pitch_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_LINEAR_SLICE_PITCH_linear_slice_pitch_shift = 0 # macro -def SDMA_PKT_COPY_TILED_LINEAR_SLICE_PITCH_LINEAR_SLICE_PITCH(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_COUNT_count_offset = 12 # macro -SDMA_PKT_COPY_TILED_COUNT_count_mask = 0x3FFFFFFF # macro -SDMA_PKT_COPY_TILED_COUNT_count_shift = 0 # macro -def SDMA_PKT_COPY_TILED_COUNT_COUNT(x): # macro - return (((x)&0x3FFFFFFF)<<0) -SDMA_PKT_COPY_TILED_BC_HEADER_op_offset = 0 # macro -SDMA_PKT_COPY_TILED_BC_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_TILED_BC_HEADER_op_shift = 0 # macro -def SDMA_PKT_COPY_TILED_BC_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_COPY_TILED_BC_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_COPY_TILED_BC_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_TILED_BC_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_COPY_TILED_BC_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_COPY_TILED_BC_HEADER_detile_offset = 0 # macro -SDMA_PKT_COPY_TILED_BC_HEADER_detile_mask = 0x00000001 # macro -SDMA_PKT_COPY_TILED_BC_HEADER_detile_shift = 31 # macro -def SDMA_PKT_COPY_TILED_BC_HEADER_DETILE(x): # macro - return (((x)&0x00000001)<<31) -SDMA_PKT_COPY_TILED_BC_TILED_ADDR_LO_tiled_addr_31_0_offset = 1 # macro -SDMA_PKT_COPY_TILED_BC_TILED_ADDR_LO_tiled_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_BC_TILED_ADDR_LO_tiled_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_TILED_BC_TILED_ADDR_LO_TILED_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_BC_TILED_ADDR_HI_tiled_addr_63_32_offset = 2 # macro -SDMA_PKT_COPY_TILED_BC_TILED_ADDR_HI_tiled_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_BC_TILED_ADDR_HI_tiled_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_TILED_BC_TILED_ADDR_HI_TILED_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_BC_DW_3_width_offset = 3 # macro -SDMA_PKT_COPY_TILED_BC_DW_3_width_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_BC_DW_3_width_shift = 0 # macro -def SDMA_PKT_COPY_TILED_BC_DW_3_WIDTH(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_TILED_BC_DW_4_height_offset = 4 # macro -SDMA_PKT_COPY_TILED_BC_DW_4_height_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_BC_DW_4_height_shift = 0 # macro -def SDMA_PKT_COPY_TILED_BC_DW_4_HEIGHT(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_TILED_BC_DW_4_depth_offset = 4 # macro -SDMA_PKT_COPY_TILED_BC_DW_4_depth_mask = 0x000007FF # macro -SDMA_PKT_COPY_TILED_BC_DW_4_depth_shift = 16 # macro -def SDMA_PKT_COPY_TILED_BC_DW_4_DEPTH(x): # macro - return (((x)&0x000007FF)<<16) -SDMA_PKT_COPY_TILED_BC_DW_5_element_size_offset = 5 # macro -SDMA_PKT_COPY_TILED_BC_DW_5_element_size_mask = 0x00000007 # macro -SDMA_PKT_COPY_TILED_BC_DW_5_element_size_shift = 0 # macro -def SDMA_PKT_COPY_TILED_BC_DW_5_ELEMENT_SIZE(x): # macro - return (((x)&0x00000007)<<0) -SDMA_PKT_COPY_TILED_BC_DW_5_array_mode_offset = 5 # macro -SDMA_PKT_COPY_TILED_BC_DW_5_array_mode_mask = 0x0000000F # macro -SDMA_PKT_COPY_TILED_BC_DW_5_array_mode_shift = 3 # macro -def SDMA_PKT_COPY_TILED_BC_DW_5_ARRAY_MODE(x): # macro - return (((x)&0x0000000F)<<3) -SDMA_PKT_COPY_TILED_BC_DW_5_mit_mode_offset = 5 # macro -SDMA_PKT_COPY_TILED_BC_DW_5_mit_mode_mask = 0x00000007 # macro -SDMA_PKT_COPY_TILED_BC_DW_5_mit_mode_shift = 8 # macro -def SDMA_PKT_COPY_TILED_BC_DW_5_MIT_MODE(x): # macro - return (((x)&0x00000007)<<8) -SDMA_PKT_COPY_TILED_BC_DW_5_tilesplit_size_offset = 5 # macro -SDMA_PKT_COPY_TILED_BC_DW_5_tilesplit_size_mask = 0x00000007 # macro -SDMA_PKT_COPY_TILED_BC_DW_5_tilesplit_size_shift = 11 # macro -def SDMA_PKT_COPY_TILED_BC_DW_5_TILESPLIT_SIZE(x): # macro - return (((x)&0x00000007)<<11) -SDMA_PKT_COPY_TILED_BC_DW_5_bank_w_offset = 5 # macro -SDMA_PKT_COPY_TILED_BC_DW_5_bank_w_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_BC_DW_5_bank_w_shift = 15 # macro -def SDMA_PKT_COPY_TILED_BC_DW_5_BANK_W(x): # macro - return (((x)&0x00000003)<<15) -SDMA_PKT_COPY_TILED_BC_DW_5_bank_h_offset = 5 # macro -SDMA_PKT_COPY_TILED_BC_DW_5_bank_h_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_BC_DW_5_bank_h_shift = 18 # macro -def SDMA_PKT_COPY_TILED_BC_DW_5_BANK_H(x): # macro - return (((x)&0x00000003)<<18) -SDMA_PKT_COPY_TILED_BC_DW_5_num_bank_offset = 5 # macro -SDMA_PKT_COPY_TILED_BC_DW_5_num_bank_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_BC_DW_5_num_bank_shift = 21 # macro -def SDMA_PKT_COPY_TILED_BC_DW_5_NUM_BANK(x): # macro - return (((x)&0x00000003)<<21) -SDMA_PKT_COPY_TILED_BC_DW_5_mat_aspt_offset = 5 # macro -SDMA_PKT_COPY_TILED_BC_DW_5_mat_aspt_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_BC_DW_5_mat_aspt_shift = 24 # macro -def SDMA_PKT_COPY_TILED_BC_DW_5_MAT_ASPT(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_TILED_BC_DW_5_pipe_config_offset = 5 # macro -SDMA_PKT_COPY_TILED_BC_DW_5_pipe_config_mask = 0x0000001F # macro -SDMA_PKT_COPY_TILED_BC_DW_5_pipe_config_shift = 26 # macro -def SDMA_PKT_COPY_TILED_BC_DW_5_PIPE_CONFIG(x): # macro - return (((x)&0x0000001F)<<26) -SDMA_PKT_COPY_TILED_BC_DW_6_x_offset = 6 # macro -SDMA_PKT_COPY_TILED_BC_DW_6_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_BC_DW_6_x_shift = 0 # macro -def SDMA_PKT_COPY_TILED_BC_DW_6_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_TILED_BC_DW_6_y_offset = 6 # macro -SDMA_PKT_COPY_TILED_BC_DW_6_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_BC_DW_6_y_shift = 16 # macro -def SDMA_PKT_COPY_TILED_BC_DW_6_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_TILED_BC_DW_7_z_offset = 7 # macro -SDMA_PKT_COPY_TILED_BC_DW_7_z_mask = 0x000007FF # macro -SDMA_PKT_COPY_TILED_BC_DW_7_z_shift = 0 # macro -def SDMA_PKT_COPY_TILED_BC_DW_7_Z(x): # macro - return (((x)&0x000007FF)<<0) -SDMA_PKT_COPY_TILED_BC_DW_7_linear_sw_offset = 7 # macro -SDMA_PKT_COPY_TILED_BC_DW_7_linear_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_BC_DW_7_linear_sw_shift = 16 # macro -def SDMA_PKT_COPY_TILED_BC_DW_7_LINEAR_SW(x): # macro - return (((x)&0x00000003)<<16) -SDMA_PKT_COPY_TILED_BC_DW_7_tile_sw_offset = 7 # macro -SDMA_PKT_COPY_TILED_BC_DW_7_tile_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_BC_DW_7_tile_sw_shift = 24 # macro -def SDMA_PKT_COPY_TILED_BC_DW_7_TILE_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_TILED_BC_LINEAR_ADDR_LO_linear_addr_31_0_offset = 8 # macro -SDMA_PKT_COPY_TILED_BC_LINEAR_ADDR_LO_linear_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_BC_LINEAR_ADDR_LO_linear_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_TILED_BC_LINEAR_ADDR_LO_LINEAR_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_BC_LINEAR_ADDR_HI_linear_addr_63_32_offset = 9 # macro -SDMA_PKT_COPY_TILED_BC_LINEAR_ADDR_HI_linear_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_BC_LINEAR_ADDR_HI_linear_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_TILED_BC_LINEAR_ADDR_HI_LINEAR_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_BC_LINEAR_PITCH_linear_pitch_offset = 10 # macro -SDMA_PKT_COPY_TILED_BC_LINEAR_PITCH_linear_pitch_mask = 0x0007FFFF # macro -SDMA_PKT_COPY_TILED_BC_LINEAR_PITCH_linear_pitch_shift = 0 # macro -def SDMA_PKT_COPY_TILED_BC_LINEAR_PITCH_LINEAR_PITCH(x): # macro - return (((x)&0x0007FFFF)<<0) -SDMA_PKT_COPY_TILED_BC_LINEAR_SLICE_PITCH_linear_slice_pitch_offset = 11 # macro -SDMA_PKT_COPY_TILED_BC_LINEAR_SLICE_PITCH_linear_slice_pitch_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_BC_LINEAR_SLICE_PITCH_linear_slice_pitch_shift = 0 # macro -def SDMA_PKT_COPY_TILED_BC_LINEAR_SLICE_PITCH_LINEAR_SLICE_PITCH(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_BC_COUNT_count_offset = 12 # macro -SDMA_PKT_COPY_TILED_BC_COUNT_count_mask = 0x000FFFFF # macro -SDMA_PKT_COPY_TILED_BC_COUNT_count_shift = 2 # macro -def SDMA_PKT_COPY_TILED_BC_COUNT_COUNT(x): # macro - return (((x)&0x000FFFFF)<<2) -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_op_offset = 0 # macro -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_op_shift = 0 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_encrypt_offset = 0 # macro -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_encrypt_mask = 0x00000001 # macro -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_encrypt_shift = 16 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_HEADER_ENCRYPT(x): # macro - return (((x)&0x00000001)<<16) -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_tmz_offset = 0 # macro -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_tmz_mask = 0x00000001 # macro -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_tmz_shift = 18 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_HEADER_TMZ(x): # macro - return (((x)&0x00000001)<<18) -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_cpv_offset = 0 # macro -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_cpv_shift = 19 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<19) -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_videocopy_offset = 0 # macro -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_videocopy_mask = 0x00000001 # macro -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_videocopy_shift = 26 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_HEADER_VIDEOCOPY(x): # macro - return (((x)&0x00000001)<<26) -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_broadcast_offset = 0 # macro -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_broadcast_mask = 0x00000001 # macro -SDMA_PKT_COPY_L2T_BROADCAST_HEADER_broadcast_shift = 27 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_HEADER_BROADCAST(x): # macro - return (((x)&0x00000001)<<27) -SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_LO_0_tiled_addr0_31_0_offset = 1 # macro -SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_LO_0_tiled_addr0_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_LO_0_tiled_addr0_31_0_shift = 0 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_LO_0_TILED_ADDR0_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_HI_0_tiled_addr0_63_32_offset = 2 # macro -SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_HI_0_tiled_addr0_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_HI_0_tiled_addr0_63_32_shift = 0 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_HI_0_TILED_ADDR0_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_LO_1_tiled_addr1_31_0_offset = 3 # macro -SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_LO_1_tiled_addr1_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_LO_1_tiled_addr1_31_0_shift = 0 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_LO_1_TILED_ADDR1_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_HI_1_tiled_addr1_63_32_offset = 4 # macro -SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_HI_1_tiled_addr1_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_HI_1_tiled_addr1_63_32_shift = 0 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_HI_1_TILED_ADDR1_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_L2T_BROADCAST_DW_5_width_offset = 5 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_5_width_mask = 0x00003FFF # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_5_width_shift = 0 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_DW_5_WIDTH(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_L2T_BROADCAST_DW_6_height_offset = 6 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_6_height_mask = 0x00003FFF # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_6_height_shift = 0 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_DW_6_HEIGHT(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_L2T_BROADCAST_DW_6_depth_offset = 6 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_6_depth_mask = 0x00001FFF # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_6_depth_shift = 16 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_DW_6_DEPTH(x): # macro - return (((x)&0x00001FFF)<<16) -SDMA_PKT_COPY_L2T_BROADCAST_DW_7_element_size_offset = 7 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_7_element_size_mask = 0x00000007 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_7_element_size_shift = 0 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_DW_7_ELEMENT_SIZE(x): # macro - return (((x)&0x00000007)<<0) -SDMA_PKT_COPY_L2T_BROADCAST_DW_7_swizzle_mode_offset = 7 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_7_swizzle_mode_mask = 0x0000001F # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_7_swizzle_mode_shift = 3 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_DW_7_SWIZZLE_MODE(x): # macro - return (((x)&0x0000001F)<<3) -SDMA_PKT_COPY_L2T_BROADCAST_DW_7_dimension_offset = 7 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_7_dimension_mask = 0x00000003 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_7_dimension_shift = 9 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_DW_7_DIMENSION(x): # macro - return (((x)&0x00000003)<<9) -SDMA_PKT_COPY_L2T_BROADCAST_DW_7_mip_max_offset = 7 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_7_mip_max_mask = 0x0000000F # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_7_mip_max_shift = 16 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_DW_7_MIP_MAX(x): # macro - return (((x)&0x0000000F)<<16) -SDMA_PKT_COPY_L2T_BROADCAST_DW_8_x_offset = 8 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_8_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_8_x_shift = 0 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_DW_8_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_L2T_BROADCAST_DW_8_y_offset = 8 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_8_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_8_y_shift = 16 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_DW_8_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_L2T_BROADCAST_DW_9_z_offset = 9 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_9_z_mask = 0x00001FFF # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_9_z_shift = 0 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_DW_9_Z(x): # macro - return (((x)&0x00001FFF)<<0) -SDMA_PKT_COPY_L2T_BROADCAST_DW_10_dst2_sw_offset = 10 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_10_dst2_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_10_dst2_sw_shift = 8 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_DW_10_DST2_SW(x): # macro - return (((x)&0x00000003)<<8) -SDMA_PKT_COPY_L2T_BROADCAST_DW_10_dst2_cache_policy_offset = 10 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_10_dst2_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_10_dst2_cache_policy_shift = 10 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_DW_10_DST2_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<10) -SDMA_PKT_COPY_L2T_BROADCAST_DW_10_linear_sw_offset = 10 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_10_linear_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_10_linear_sw_shift = 16 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_DW_10_LINEAR_SW(x): # macro - return (((x)&0x00000003)<<16) -SDMA_PKT_COPY_L2T_BROADCAST_DW_10_linear_cache_policy_offset = 10 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_10_linear_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_10_linear_cache_policy_shift = 18 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_DW_10_LINEAR_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<18) -SDMA_PKT_COPY_L2T_BROADCAST_DW_10_tile_sw_offset = 10 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_10_tile_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_10_tile_sw_shift = 24 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_DW_10_TILE_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_L2T_BROADCAST_DW_10_tile_cache_policy_offset = 10 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_10_tile_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_L2T_BROADCAST_DW_10_tile_cache_policy_shift = 26 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_DW_10_TILE_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<26) -SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_ADDR_LO_linear_addr_31_0_offset = 11 # macro -SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_ADDR_LO_linear_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_ADDR_LO_linear_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_ADDR_LO_LINEAR_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_ADDR_HI_linear_addr_63_32_offset = 12 # macro -SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_ADDR_HI_linear_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_ADDR_HI_linear_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_ADDR_HI_LINEAR_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_PITCH_linear_pitch_offset = 13 # macro -SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_PITCH_linear_pitch_mask = 0x0007FFFF # macro -SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_PITCH_linear_pitch_shift = 0 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_PITCH_LINEAR_PITCH(x): # macro - return (((x)&0x0007FFFF)<<0) -SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_SLICE_PITCH_linear_slice_pitch_offset = 14 # macro -SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_SLICE_PITCH_linear_slice_pitch_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_SLICE_PITCH_linear_slice_pitch_shift = 0 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_SLICE_PITCH_LINEAR_SLICE_PITCH(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_L2T_BROADCAST_COUNT_count_offset = 15 # macro -SDMA_PKT_COPY_L2T_BROADCAST_COUNT_count_mask = 0x3FFFFFFF # macro -SDMA_PKT_COPY_L2T_BROADCAST_COUNT_count_shift = 0 # macro -def SDMA_PKT_COPY_L2T_BROADCAST_COUNT_COUNT(x): # macro - return (((x)&0x3FFFFFFF)<<0) -SDMA_PKT_COPY_T2T_HEADER_op_offset = 0 # macro -SDMA_PKT_COPY_T2T_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_T2T_HEADER_op_shift = 0 # macro -def SDMA_PKT_COPY_T2T_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_COPY_T2T_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_COPY_T2T_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_T2T_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_COPY_T2T_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_COPY_T2T_HEADER_tmz_offset = 0 # macro -SDMA_PKT_COPY_T2T_HEADER_tmz_mask = 0x00000001 # macro -SDMA_PKT_COPY_T2T_HEADER_tmz_shift = 18 # macro -def SDMA_PKT_COPY_T2T_HEADER_TMZ(x): # macro - return (((x)&0x00000001)<<18) -SDMA_PKT_COPY_T2T_HEADER_dcc_offset = 0 # macro -SDMA_PKT_COPY_T2T_HEADER_dcc_mask = 0x00000001 # macro -SDMA_PKT_COPY_T2T_HEADER_dcc_shift = 19 # macro -def SDMA_PKT_COPY_T2T_HEADER_DCC(x): # macro - return (((x)&0x00000001)<<19) -SDMA_PKT_COPY_T2T_HEADER_cpv_offset = 0 # macro -SDMA_PKT_COPY_T2T_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_COPY_T2T_HEADER_cpv_shift = 28 # macro -def SDMA_PKT_COPY_T2T_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_COPY_T2T_HEADER_dcc_dir_offset = 0 # macro -SDMA_PKT_COPY_T2T_HEADER_dcc_dir_mask = 0x00000001 # macro -SDMA_PKT_COPY_T2T_HEADER_dcc_dir_shift = 31 # macro -def SDMA_PKT_COPY_T2T_HEADER_DCC_DIR(x): # macro - return (((x)&0x00000001)<<31) -SDMA_PKT_COPY_T2T_SRC_ADDR_LO_src_addr_31_0_offset = 1 # macro -SDMA_PKT_COPY_T2T_SRC_ADDR_LO_src_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_T2T_SRC_ADDR_LO_src_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_T2T_SRC_ADDR_LO_SRC_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_T2T_SRC_ADDR_HI_src_addr_63_32_offset = 2 # macro -SDMA_PKT_COPY_T2T_SRC_ADDR_HI_src_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_T2T_SRC_ADDR_HI_src_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_T2T_SRC_ADDR_HI_SRC_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_T2T_DW_3_src_x_offset = 3 # macro -SDMA_PKT_COPY_T2T_DW_3_src_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_DW_3_src_x_shift = 0 # macro -def SDMA_PKT_COPY_T2T_DW_3_SRC_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_T2T_DW_3_src_y_offset = 3 # macro -SDMA_PKT_COPY_T2T_DW_3_src_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_DW_3_src_y_shift = 16 # macro -def SDMA_PKT_COPY_T2T_DW_3_SRC_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_T2T_DW_4_src_z_offset = 4 # macro -SDMA_PKT_COPY_T2T_DW_4_src_z_mask = 0x00001FFF # macro -SDMA_PKT_COPY_T2T_DW_4_src_z_shift = 0 # macro -def SDMA_PKT_COPY_T2T_DW_4_SRC_Z(x): # macro - return (((x)&0x00001FFF)<<0) -SDMA_PKT_COPY_T2T_DW_4_src_width_offset = 4 # macro -SDMA_PKT_COPY_T2T_DW_4_src_width_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_DW_4_src_width_shift = 16 # macro -def SDMA_PKT_COPY_T2T_DW_4_SRC_WIDTH(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_T2T_DW_5_src_height_offset = 5 # macro -SDMA_PKT_COPY_T2T_DW_5_src_height_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_DW_5_src_height_shift = 0 # macro -def SDMA_PKT_COPY_T2T_DW_5_SRC_HEIGHT(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_T2T_DW_5_src_depth_offset = 5 # macro -SDMA_PKT_COPY_T2T_DW_5_src_depth_mask = 0x00001FFF # macro -SDMA_PKT_COPY_T2T_DW_5_src_depth_shift = 16 # macro -def SDMA_PKT_COPY_T2T_DW_5_SRC_DEPTH(x): # macro - return (((x)&0x00001FFF)<<16) -SDMA_PKT_COPY_T2T_DW_6_src_element_size_offset = 6 # macro -SDMA_PKT_COPY_T2T_DW_6_src_element_size_mask = 0x00000007 # macro -SDMA_PKT_COPY_T2T_DW_6_src_element_size_shift = 0 # macro -def SDMA_PKT_COPY_T2T_DW_6_SRC_ELEMENT_SIZE(x): # macro - return (((x)&0x00000007)<<0) -SDMA_PKT_COPY_T2T_DW_6_src_swizzle_mode_offset = 6 # macro -SDMA_PKT_COPY_T2T_DW_6_src_swizzle_mode_mask = 0x0000001F # macro -SDMA_PKT_COPY_T2T_DW_6_src_swizzle_mode_shift = 3 # macro -def SDMA_PKT_COPY_T2T_DW_6_SRC_SWIZZLE_MODE(x): # macro - return (((x)&0x0000001F)<<3) -SDMA_PKT_COPY_T2T_DW_6_src_dimension_offset = 6 # macro -SDMA_PKT_COPY_T2T_DW_6_src_dimension_mask = 0x00000003 # macro -SDMA_PKT_COPY_T2T_DW_6_src_dimension_shift = 9 # macro -def SDMA_PKT_COPY_T2T_DW_6_SRC_DIMENSION(x): # macro - return (((x)&0x00000003)<<9) -SDMA_PKT_COPY_T2T_DW_6_src_mip_max_offset = 6 # macro -SDMA_PKT_COPY_T2T_DW_6_src_mip_max_mask = 0x0000000F # macro -SDMA_PKT_COPY_T2T_DW_6_src_mip_max_shift = 16 # macro -def SDMA_PKT_COPY_T2T_DW_6_SRC_MIP_MAX(x): # macro - return (((x)&0x0000000F)<<16) -SDMA_PKT_COPY_T2T_DW_6_src_mip_id_offset = 6 # macro -SDMA_PKT_COPY_T2T_DW_6_src_mip_id_mask = 0x0000000F # macro -SDMA_PKT_COPY_T2T_DW_6_src_mip_id_shift = 20 # macro -def SDMA_PKT_COPY_T2T_DW_6_SRC_MIP_ID(x): # macro - return (((x)&0x0000000F)<<20) -SDMA_PKT_COPY_T2T_DST_ADDR_LO_dst_addr_31_0_offset = 7 # macro -SDMA_PKT_COPY_T2T_DST_ADDR_LO_dst_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_T2T_DST_ADDR_LO_dst_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_T2T_DST_ADDR_LO_DST_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_T2T_DST_ADDR_HI_dst_addr_63_32_offset = 8 # macro -SDMA_PKT_COPY_T2T_DST_ADDR_HI_dst_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_T2T_DST_ADDR_HI_dst_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_T2T_DST_ADDR_HI_DST_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_T2T_DW_9_dst_x_offset = 9 # macro -SDMA_PKT_COPY_T2T_DW_9_dst_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_DW_9_dst_x_shift = 0 # macro -def SDMA_PKT_COPY_T2T_DW_9_DST_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_T2T_DW_9_dst_y_offset = 9 # macro -SDMA_PKT_COPY_T2T_DW_9_dst_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_DW_9_dst_y_shift = 16 # macro -def SDMA_PKT_COPY_T2T_DW_9_DST_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_T2T_DW_10_dst_z_offset = 10 # macro -SDMA_PKT_COPY_T2T_DW_10_dst_z_mask = 0x00001FFF # macro -SDMA_PKT_COPY_T2T_DW_10_dst_z_shift = 0 # macro -def SDMA_PKT_COPY_T2T_DW_10_DST_Z(x): # macro - return (((x)&0x00001FFF)<<0) -SDMA_PKT_COPY_T2T_DW_10_dst_width_offset = 10 # macro -SDMA_PKT_COPY_T2T_DW_10_dst_width_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_DW_10_dst_width_shift = 16 # macro -def SDMA_PKT_COPY_T2T_DW_10_DST_WIDTH(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_T2T_DW_11_dst_height_offset = 11 # macro -SDMA_PKT_COPY_T2T_DW_11_dst_height_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_DW_11_dst_height_shift = 0 # macro -def SDMA_PKT_COPY_T2T_DW_11_DST_HEIGHT(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_T2T_DW_11_dst_depth_offset = 11 # macro -SDMA_PKT_COPY_T2T_DW_11_dst_depth_mask = 0x00001FFF # macro -SDMA_PKT_COPY_T2T_DW_11_dst_depth_shift = 16 # macro -def SDMA_PKT_COPY_T2T_DW_11_DST_DEPTH(x): # macro - return (((x)&0x00001FFF)<<16) -SDMA_PKT_COPY_T2T_DW_12_dst_element_size_offset = 12 # macro -SDMA_PKT_COPY_T2T_DW_12_dst_element_size_mask = 0x00000007 # macro -SDMA_PKT_COPY_T2T_DW_12_dst_element_size_shift = 0 # macro -def SDMA_PKT_COPY_T2T_DW_12_DST_ELEMENT_SIZE(x): # macro - return (((x)&0x00000007)<<0) -SDMA_PKT_COPY_T2T_DW_12_dst_swizzle_mode_offset = 12 # macro -SDMA_PKT_COPY_T2T_DW_12_dst_swizzle_mode_mask = 0x0000001F # macro -SDMA_PKT_COPY_T2T_DW_12_dst_swizzle_mode_shift = 3 # macro -def SDMA_PKT_COPY_T2T_DW_12_DST_SWIZZLE_MODE(x): # macro - return (((x)&0x0000001F)<<3) -SDMA_PKT_COPY_T2T_DW_12_dst_dimension_offset = 12 # macro -SDMA_PKT_COPY_T2T_DW_12_dst_dimension_mask = 0x00000003 # macro -SDMA_PKT_COPY_T2T_DW_12_dst_dimension_shift = 9 # macro -def SDMA_PKT_COPY_T2T_DW_12_DST_DIMENSION(x): # macro - return (((x)&0x00000003)<<9) -SDMA_PKT_COPY_T2T_DW_12_dst_mip_max_offset = 12 # macro -SDMA_PKT_COPY_T2T_DW_12_dst_mip_max_mask = 0x0000000F # macro -SDMA_PKT_COPY_T2T_DW_12_dst_mip_max_shift = 16 # macro -def SDMA_PKT_COPY_T2T_DW_12_DST_MIP_MAX(x): # macro - return (((x)&0x0000000F)<<16) -SDMA_PKT_COPY_T2T_DW_12_dst_mip_id_offset = 12 # macro -SDMA_PKT_COPY_T2T_DW_12_dst_mip_id_mask = 0x0000000F # macro -SDMA_PKT_COPY_T2T_DW_12_dst_mip_id_shift = 20 # macro -def SDMA_PKT_COPY_T2T_DW_12_DST_MIP_ID(x): # macro - return (((x)&0x0000000F)<<20) -SDMA_PKT_COPY_T2T_DW_13_rect_x_offset = 13 # macro -SDMA_PKT_COPY_T2T_DW_13_rect_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_DW_13_rect_x_shift = 0 # macro -def SDMA_PKT_COPY_T2T_DW_13_RECT_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_T2T_DW_13_rect_y_offset = 13 # macro -SDMA_PKT_COPY_T2T_DW_13_rect_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_DW_13_rect_y_shift = 16 # macro -def SDMA_PKT_COPY_T2T_DW_13_RECT_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_T2T_DW_14_rect_z_offset = 14 # macro -SDMA_PKT_COPY_T2T_DW_14_rect_z_mask = 0x00001FFF # macro -SDMA_PKT_COPY_T2T_DW_14_rect_z_shift = 0 # macro -def SDMA_PKT_COPY_T2T_DW_14_RECT_Z(x): # macro - return (((x)&0x00001FFF)<<0) -SDMA_PKT_COPY_T2T_DW_14_dst_sw_offset = 14 # macro -SDMA_PKT_COPY_T2T_DW_14_dst_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_T2T_DW_14_dst_sw_shift = 16 # macro -def SDMA_PKT_COPY_T2T_DW_14_DST_SW(x): # macro - return (((x)&0x00000003)<<16) -SDMA_PKT_COPY_T2T_DW_14_dst_cache_policy_offset = 14 # macro -SDMA_PKT_COPY_T2T_DW_14_dst_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_T2T_DW_14_dst_cache_policy_shift = 18 # macro -def SDMA_PKT_COPY_T2T_DW_14_DST_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<18) -SDMA_PKT_COPY_T2T_DW_14_src_sw_offset = 14 # macro -SDMA_PKT_COPY_T2T_DW_14_src_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_T2T_DW_14_src_sw_shift = 24 # macro -def SDMA_PKT_COPY_T2T_DW_14_SRC_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_T2T_DW_14_src_cache_policy_offset = 14 # macro -SDMA_PKT_COPY_T2T_DW_14_src_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_T2T_DW_14_src_cache_policy_shift = 26 # macro -def SDMA_PKT_COPY_T2T_DW_14_SRC_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<26) -SDMA_PKT_COPY_T2T_META_ADDR_LO_meta_addr_31_0_offset = 15 # macro -SDMA_PKT_COPY_T2T_META_ADDR_LO_meta_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_T2T_META_ADDR_LO_meta_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_T2T_META_ADDR_LO_META_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_T2T_META_ADDR_HI_meta_addr_63_32_offset = 16 # macro -SDMA_PKT_COPY_T2T_META_ADDR_HI_meta_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_T2T_META_ADDR_HI_meta_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_T2T_META_ADDR_HI_META_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_T2T_META_CONFIG_data_format_offset = 17 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_data_format_mask = 0x0000007F # macro -SDMA_PKT_COPY_T2T_META_CONFIG_data_format_shift = 0 # macro -def SDMA_PKT_COPY_T2T_META_CONFIG_DATA_FORMAT(x): # macro - return (((x)&0x0000007F)<<0) -SDMA_PKT_COPY_T2T_META_CONFIG_color_transform_disable_offset = 17 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_color_transform_disable_mask = 0x00000001 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_color_transform_disable_shift = 7 # macro -def SDMA_PKT_COPY_T2T_META_CONFIG_COLOR_TRANSFORM_DISABLE(x): # macro - return (((x)&0x00000001)<<7) -SDMA_PKT_COPY_T2T_META_CONFIG_alpha_is_on_msb_offset = 17 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_alpha_is_on_msb_mask = 0x00000001 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_alpha_is_on_msb_shift = 8 # macro -def SDMA_PKT_COPY_T2T_META_CONFIG_ALPHA_IS_ON_MSB(x): # macro - return (((x)&0x00000001)<<8) -SDMA_PKT_COPY_T2T_META_CONFIG_number_type_offset = 17 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_number_type_mask = 0x00000007 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_number_type_shift = 9 # macro -def SDMA_PKT_COPY_T2T_META_CONFIG_NUMBER_TYPE(x): # macro - return (((x)&0x00000007)<<9) -SDMA_PKT_COPY_T2T_META_CONFIG_surface_type_offset = 17 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_surface_type_mask = 0x00000003 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_surface_type_shift = 12 # macro -def SDMA_PKT_COPY_T2T_META_CONFIG_SURFACE_TYPE(x): # macro - return (((x)&0x00000003)<<12) -SDMA_PKT_COPY_T2T_META_CONFIG_meta_llc_offset = 17 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_meta_llc_mask = 0x00000001 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_meta_llc_shift = 14 # macro -def SDMA_PKT_COPY_T2T_META_CONFIG_META_LLC(x): # macro - return (((x)&0x00000001)<<14) -SDMA_PKT_COPY_T2T_META_CONFIG_max_comp_block_size_offset = 17 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_max_comp_block_size_mask = 0x00000003 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_max_comp_block_size_shift = 24 # macro -def SDMA_PKT_COPY_T2T_META_CONFIG_MAX_COMP_BLOCK_SIZE(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_T2T_META_CONFIG_max_uncomp_block_size_offset = 17 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_max_uncomp_block_size_mask = 0x00000003 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_max_uncomp_block_size_shift = 26 # macro -def SDMA_PKT_COPY_T2T_META_CONFIG_MAX_UNCOMP_BLOCK_SIZE(x): # macro - return (((x)&0x00000003)<<26) -SDMA_PKT_COPY_T2T_META_CONFIG_write_compress_enable_offset = 17 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_write_compress_enable_mask = 0x00000001 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_write_compress_enable_shift = 28 # macro -def SDMA_PKT_COPY_T2T_META_CONFIG_WRITE_COMPRESS_ENABLE(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_COPY_T2T_META_CONFIG_meta_tmz_offset = 17 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_meta_tmz_mask = 0x00000001 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_meta_tmz_shift = 29 # macro -def SDMA_PKT_COPY_T2T_META_CONFIG_META_TMZ(x): # macro - return (((x)&0x00000001)<<29) -SDMA_PKT_COPY_T2T_META_CONFIG_pipe_aligned_offset = 17 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_pipe_aligned_mask = 0x00000001 # macro -SDMA_PKT_COPY_T2T_META_CONFIG_pipe_aligned_shift = 31 # macro -def SDMA_PKT_COPY_T2T_META_CONFIG_PIPE_ALIGNED(x): # macro - return (((x)&0x00000001)<<31) -SDMA_PKT_COPY_T2T_BC_HEADER_op_offset = 0 # macro -SDMA_PKT_COPY_T2T_BC_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_T2T_BC_HEADER_op_shift = 0 # macro -def SDMA_PKT_COPY_T2T_BC_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_COPY_T2T_BC_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_COPY_T2T_BC_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_T2T_BC_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_COPY_T2T_BC_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_COPY_T2T_BC_SRC_ADDR_LO_src_addr_31_0_offset = 1 # macro -SDMA_PKT_COPY_T2T_BC_SRC_ADDR_LO_src_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_T2T_BC_SRC_ADDR_LO_src_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_T2T_BC_SRC_ADDR_LO_SRC_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_T2T_BC_SRC_ADDR_HI_src_addr_63_32_offset = 2 # macro -SDMA_PKT_COPY_T2T_BC_SRC_ADDR_HI_src_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_T2T_BC_SRC_ADDR_HI_src_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_T2T_BC_SRC_ADDR_HI_SRC_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_T2T_BC_DW_3_src_x_offset = 3 # macro -SDMA_PKT_COPY_T2T_BC_DW_3_src_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_BC_DW_3_src_x_shift = 0 # macro -def SDMA_PKT_COPY_T2T_BC_DW_3_SRC_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_T2T_BC_DW_3_src_y_offset = 3 # macro -SDMA_PKT_COPY_T2T_BC_DW_3_src_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_BC_DW_3_src_y_shift = 16 # macro -def SDMA_PKT_COPY_T2T_BC_DW_3_SRC_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_T2T_BC_DW_4_src_z_offset = 4 # macro -SDMA_PKT_COPY_T2T_BC_DW_4_src_z_mask = 0x000007FF # macro -SDMA_PKT_COPY_T2T_BC_DW_4_src_z_shift = 0 # macro -def SDMA_PKT_COPY_T2T_BC_DW_4_SRC_Z(x): # macro - return (((x)&0x000007FF)<<0) -SDMA_PKT_COPY_T2T_BC_DW_4_src_width_offset = 4 # macro -SDMA_PKT_COPY_T2T_BC_DW_4_src_width_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_BC_DW_4_src_width_shift = 16 # macro -def SDMA_PKT_COPY_T2T_BC_DW_4_SRC_WIDTH(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_T2T_BC_DW_5_src_height_offset = 5 # macro -SDMA_PKT_COPY_T2T_BC_DW_5_src_height_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_BC_DW_5_src_height_shift = 0 # macro -def SDMA_PKT_COPY_T2T_BC_DW_5_SRC_HEIGHT(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_T2T_BC_DW_5_src_depth_offset = 5 # macro -SDMA_PKT_COPY_T2T_BC_DW_5_src_depth_mask = 0x000007FF # macro -SDMA_PKT_COPY_T2T_BC_DW_5_src_depth_shift = 16 # macro -def SDMA_PKT_COPY_T2T_BC_DW_5_SRC_DEPTH(x): # macro - return (((x)&0x000007FF)<<16) -SDMA_PKT_COPY_T2T_BC_DW_6_src_element_size_offset = 6 # macro -SDMA_PKT_COPY_T2T_BC_DW_6_src_element_size_mask = 0x00000007 # macro -SDMA_PKT_COPY_T2T_BC_DW_6_src_element_size_shift = 0 # macro -def SDMA_PKT_COPY_T2T_BC_DW_6_SRC_ELEMENT_SIZE(x): # macro - return (((x)&0x00000007)<<0) -SDMA_PKT_COPY_T2T_BC_DW_6_src_array_mode_offset = 6 # macro -SDMA_PKT_COPY_T2T_BC_DW_6_src_array_mode_mask = 0x0000000F # macro -SDMA_PKT_COPY_T2T_BC_DW_6_src_array_mode_shift = 3 # macro -def SDMA_PKT_COPY_T2T_BC_DW_6_SRC_ARRAY_MODE(x): # macro - return (((x)&0x0000000F)<<3) -SDMA_PKT_COPY_T2T_BC_DW_6_src_mit_mode_offset = 6 # macro -SDMA_PKT_COPY_T2T_BC_DW_6_src_mit_mode_mask = 0x00000007 # macro -SDMA_PKT_COPY_T2T_BC_DW_6_src_mit_mode_shift = 8 # macro -def SDMA_PKT_COPY_T2T_BC_DW_6_SRC_MIT_MODE(x): # macro - return (((x)&0x00000007)<<8) -SDMA_PKT_COPY_T2T_BC_DW_6_src_tilesplit_size_offset = 6 # macro -SDMA_PKT_COPY_T2T_BC_DW_6_src_tilesplit_size_mask = 0x00000007 # macro -SDMA_PKT_COPY_T2T_BC_DW_6_src_tilesplit_size_shift = 11 # macro -def SDMA_PKT_COPY_T2T_BC_DW_6_SRC_TILESPLIT_SIZE(x): # macro - return (((x)&0x00000007)<<11) -SDMA_PKT_COPY_T2T_BC_DW_6_src_bank_w_offset = 6 # macro -SDMA_PKT_COPY_T2T_BC_DW_6_src_bank_w_mask = 0x00000003 # macro -SDMA_PKT_COPY_T2T_BC_DW_6_src_bank_w_shift = 15 # macro -def SDMA_PKT_COPY_T2T_BC_DW_6_SRC_BANK_W(x): # macro - return (((x)&0x00000003)<<15) -SDMA_PKT_COPY_T2T_BC_DW_6_src_bank_h_offset = 6 # macro -SDMA_PKT_COPY_T2T_BC_DW_6_src_bank_h_mask = 0x00000003 # macro -SDMA_PKT_COPY_T2T_BC_DW_6_src_bank_h_shift = 18 # macro -def SDMA_PKT_COPY_T2T_BC_DW_6_SRC_BANK_H(x): # macro - return (((x)&0x00000003)<<18) -SDMA_PKT_COPY_T2T_BC_DW_6_src_num_bank_offset = 6 # macro -SDMA_PKT_COPY_T2T_BC_DW_6_src_num_bank_mask = 0x00000003 # macro -SDMA_PKT_COPY_T2T_BC_DW_6_src_num_bank_shift = 21 # macro -def SDMA_PKT_COPY_T2T_BC_DW_6_SRC_NUM_BANK(x): # macro - return (((x)&0x00000003)<<21) -SDMA_PKT_COPY_T2T_BC_DW_6_src_mat_aspt_offset = 6 # macro -SDMA_PKT_COPY_T2T_BC_DW_6_src_mat_aspt_mask = 0x00000003 # macro -SDMA_PKT_COPY_T2T_BC_DW_6_src_mat_aspt_shift = 24 # macro -def SDMA_PKT_COPY_T2T_BC_DW_6_SRC_MAT_ASPT(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_T2T_BC_DW_6_src_pipe_config_offset = 6 # macro -SDMA_PKT_COPY_T2T_BC_DW_6_src_pipe_config_mask = 0x0000001F # macro -SDMA_PKT_COPY_T2T_BC_DW_6_src_pipe_config_shift = 26 # macro -def SDMA_PKT_COPY_T2T_BC_DW_6_SRC_PIPE_CONFIG(x): # macro - return (((x)&0x0000001F)<<26) -SDMA_PKT_COPY_T2T_BC_DST_ADDR_LO_dst_addr_31_0_offset = 7 # macro -SDMA_PKT_COPY_T2T_BC_DST_ADDR_LO_dst_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_T2T_BC_DST_ADDR_LO_dst_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_T2T_BC_DST_ADDR_LO_DST_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_T2T_BC_DST_ADDR_HI_dst_addr_63_32_offset = 8 # macro -SDMA_PKT_COPY_T2T_BC_DST_ADDR_HI_dst_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_T2T_BC_DST_ADDR_HI_dst_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_T2T_BC_DST_ADDR_HI_DST_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_T2T_BC_DW_9_dst_x_offset = 9 # macro -SDMA_PKT_COPY_T2T_BC_DW_9_dst_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_BC_DW_9_dst_x_shift = 0 # macro -def SDMA_PKT_COPY_T2T_BC_DW_9_DST_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_T2T_BC_DW_9_dst_y_offset = 9 # macro -SDMA_PKT_COPY_T2T_BC_DW_9_dst_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_BC_DW_9_dst_y_shift = 16 # macro -def SDMA_PKT_COPY_T2T_BC_DW_9_DST_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_T2T_BC_DW_10_dst_z_offset = 10 # macro -SDMA_PKT_COPY_T2T_BC_DW_10_dst_z_mask = 0x000007FF # macro -SDMA_PKT_COPY_T2T_BC_DW_10_dst_z_shift = 0 # macro -def SDMA_PKT_COPY_T2T_BC_DW_10_DST_Z(x): # macro - return (((x)&0x000007FF)<<0) -SDMA_PKT_COPY_T2T_BC_DW_10_dst_width_offset = 10 # macro -SDMA_PKT_COPY_T2T_BC_DW_10_dst_width_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_BC_DW_10_dst_width_shift = 16 # macro -def SDMA_PKT_COPY_T2T_BC_DW_10_DST_WIDTH(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_T2T_BC_DW_11_dst_height_offset = 11 # macro -SDMA_PKT_COPY_T2T_BC_DW_11_dst_height_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_BC_DW_11_dst_height_shift = 0 # macro -def SDMA_PKT_COPY_T2T_BC_DW_11_DST_HEIGHT(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_T2T_BC_DW_11_dst_depth_offset = 11 # macro -SDMA_PKT_COPY_T2T_BC_DW_11_dst_depth_mask = 0x00000FFF # macro -SDMA_PKT_COPY_T2T_BC_DW_11_dst_depth_shift = 16 # macro -def SDMA_PKT_COPY_T2T_BC_DW_11_DST_DEPTH(x): # macro - return (((x)&0x00000FFF)<<16) -SDMA_PKT_COPY_T2T_BC_DW_12_dst_element_size_offset = 12 # macro -SDMA_PKT_COPY_T2T_BC_DW_12_dst_element_size_mask = 0x00000007 # macro -SDMA_PKT_COPY_T2T_BC_DW_12_dst_element_size_shift = 0 # macro -def SDMA_PKT_COPY_T2T_BC_DW_12_DST_ELEMENT_SIZE(x): # macro - return (((x)&0x00000007)<<0) -SDMA_PKT_COPY_T2T_BC_DW_12_dst_array_mode_offset = 12 # macro -SDMA_PKT_COPY_T2T_BC_DW_12_dst_array_mode_mask = 0x0000000F # macro -SDMA_PKT_COPY_T2T_BC_DW_12_dst_array_mode_shift = 3 # macro -def SDMA_PKT_COPY_T2T_BC_DW_12_DST_ARRAY_MODE(x): # macro - return (((x)&0x0000000F)<<3) -SDMA_PKT_COPY_T2T_BC_DW_12_dst_mit_mode_offset = 12 # macro -SDMA_PKT_COPY_T2T_BC_DW_12_dst_mit_mode_mask = 0x00000007 # macro -SDMA_PKT_COPY_T2T_BC_DW_12_dst_mit_mode_shift = 8 # macro -def SDMA_PKT_COPY_T2T_BC_DW_12_DST_MIT_MODE(x): # macro - return (((x)&0x00000007)<<8) -SDMA_PKT_COPY_T2T_BC_DW_12_dst_tilesplit_size_offset = 12 # macro -SDMA_PKT_COPY_T2T_BC_DW_12_dst_tilesplit_size_mask = 0x00000007 # macro -SDMA_PKT_COPY_T2T_BC_DW_12_dst_tilesplit_size_shift = 11 # macro -def SDMA_PKT_COPY_T2T_BC_DW_12_DST_TILESPLIT_SIZE(x): # macro - return (((x)&0x00000007)<<11) -SDMA_PKT_COPY_T2T_BC_DW_12_dst_bank_w_offset = 12 # macro -SDMA_PKT_COPY_T2T_BC_DW_12_dst_bank_w_mask = 0x00000003 # macro -SDMA_PKT_COPY_T2T_BC_DW_12_dst_bank_w_shift = 15 # macro -def SDMA_PKT_COPY_T2T_BC_DW_12_DST_BANK_W(x): # macro - return (((x)&0x00000003)<<15) -SDMA_PKT_COPY_T2T_BC_DW_12_dst_bank_h_offset = 12 # macro -SDMA_PKT_COPY_T2T_BC_DW_12_dst_bank_h_mask = 0x00000003 # macro -SDMA_PKT_COPY_T2T_BC_DW_12_dst_bank_h_shift = 18 # macro -def SDMA_PKT_COPY_T2T_BC_DW_12_DST_BANK_H(x): # macro - return (((x)&0x00000003)<<18) -SDMA_PKT_COPY_T2T_BC_DW_12_dst_num_bank_offset = 12 # macro -SDMA_PKT_COPY_T2T_BC_DW_12_dst_num_bank_mask = 0x00000003 # macro -SDMA_PKT_COPY_T2T_BC_DW_12_dst_num_bank_shift = 21 # macro -def SDMA_PKT_COPY_T2T_BC_DW_12_DST_NUM_BANK(x): # macro - return (((x)&0x00000003)<<21) -SDMA_PKT_COPY_T2T_BC_DW_12_dst_mat_aspt_offset = 12 # macro -SDMA_PKT_COPY_T2T_BC_DW_12_dst_mat_aspt_mask = 0x00000003 # macro -SDMA_PKT_COPY_T2T_BC_DW_12_dst_mat_aspt_shift = 24 # macro -def SDMA_PKT_COPY_T2T_BC_DW_12_DST_MAT_ASPT(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_T2T_BC_DW_12_dst_pipe_config_offset = 12 # macro -SDMA_PKT_COPY_T2T_BC_DW_12_dst_pipe_config_mask = 0x0000001F # macro -SDMA_PKT_COPY_T2T_BC_DW_12_dst_pipe_config_shift = 26 # macro -def SDMA_PKT_COPY_T2T_BC_DW_12_DST_PIPE_CONFIG(x): # macro - return (((x)&0x0000001F)<<26) -SDMA_PKT_COPY_T2T_BC_DW_13_rect_x_offset = 13 # macro -SDMA_PKT_COPY_T2T_BC_DW_13_rect_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_BC_DW_13_rect_x_shift = 0 # macro -def SDMA_PKT_COPY_T2T_BC_DW_13_RECT_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_T2T_BC_DW_13_rect_y_offset = 13 # macro -SDMA_PKT_COPY_T2T_BC_DW_13_rect_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_T2T_BC_DW_13_rect_y_shift = 16 # macro -def SDMA_PKT_COPY_T2T_BC_DW_13_RECT_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_T2T_BC_DW_14_rect_z_offset = 14 # macro -SDMA_PKT_COPY_T2T_BC_DW_14_rect_z_mask = 0x000007FF # macro -SDMA_PKT_COPY_T2T_BC_DW_14_rect_z_shift = 0 # macro -def SDMA_PKT_COPY_T2T_BC_DW_14_RECT_Z(x): # macro - return (((x)&0x000007FF)<<0) -SDMA_PKT_COPY_T2T_BC_DW_14_dst_sw_offset = 14 # macro -SDMA_PKT_COPY_T2T_BC_DW_14_dst_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_T2T_BC_DW_14_dst_sw_shift = 16 # macro -def SDMA_PKT_COPY_T2T_BC_DW_14_DST_SW(x): # macro - return (((x)&0x00000003)<<16) -SDMA_PKT_COPY_T2T_BC_DW_14_src_sw_offset = 14 # macro -SDMA_PKT_COPY_T2T_BC_DW_14_src_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_T2T_BC_DW_14_src_sw_shift = 24 # macro -def SDMA_PKT_COPY_T2T_BC_DW_14_SRC_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_TILED_SUBWIN_HEADER_op_offset = 0 # macro -SDMA_PKT_COPY_TILED_SUBWIN_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_TILED_SUBWIN_HEADER_op_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_COPY_TILED_SUBWIN_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_TILED_SUBWIN_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_COPY_TILED_SUBWIN_HEADER_tmz_offset = 0 # macro -SDMA_PKT_COPY_TILED_SUBWIN_HEADER_tmz_mask = 0x00000001 # macro -SDMA_PKT_COPY_TILED_SUBWIN_HEADER_tmz_shift = 18 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_HEADER_TMZ(x): # macro - return (((x)&0x00000001)<<18) -SDMA_PKT_COPY_TILED_SUBWIN_HEADER_dcc_offset = 0 # macro -SDMA_PKT_COPY_TILED_SUBWIN_HEADER_dcc_mask = 0x00000001 # macro -SDMA_PKT_COPY_TILED_SUBWIN_HEADER_dcc_shift = 19 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_HEADER_DCC(x): # macro - return (((x)&0x00000001)<<19) -SDMA_PKT_COPY_TILED_SUBWIN_HEADER_cpv_offset = 0 # macro -SDMA_PKT_COPY_TILED_SUBWIN_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_COPY_TILED_SUBWIN_HEADER_cpv_shift = 28 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_COPY_TILED_SUBWIN_HEADER_detile_offset = 0 # macro -SDMA_PKT_COPY_TILED_SUBWIN_HEADER_detile_mask = 0x00000001 # macro -SDMA_PKT_COPY_TILED_SUBWIN_HEADER_detile_shift = 31 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_HEADER_DETILE(x): # macro - return (((x)&0x00000001)<<31) -SDMA_PKT_COPY_TILED_SUBWIN_TILED_ADDR_LO_tiled_addr_31_0_offset = 1 # macro -SDMA_PKT_COPY_TILED_SUBWIN_TILED_ADDR_LO_tiled_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_TILED_ADDR_LO_tiled_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_TILED_ADDR_LO_TILED_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_TILED_ADDR_HI_tiled_addr_63_32_offset = 2 # macro -SDMA_PKT_COPY_TILED_SUBWIN_TILED_ADDR_HI_tiled_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_TILED_ADDR_HI_tiled_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_TILED_ADDR_HI_TILED_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_DW_3_tiled_x_offset = 3 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_3_tiled_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_3_tiled_x_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_3_TILED_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_DW_3_tiled_y_offset = 3 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_3_tiled_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_3_tiled_y_shift = 16 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_3_TILED_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_TILED_SUBWIN_DW_4_tiled_z_offset = 4 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_4_tiled_z_mask = 0x00001FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_4_tiled_z_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_4_TILED_Z(x): # macro - return (((x)&0x00001FFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_DW_4_width_offset = 4 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_4_width_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_4_width_shift = 16 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_4_WIDTH(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_TILED_SUBWIN_DW_5_height_offset = 5 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_5_height_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_5_height_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_5_HEIGHT(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_DW_5_depth_offset = 5 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_5_depth_mask = 0x00001FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_5_depth_shift = 16 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_5_DEPTH(x): # macro - return (((x)&0x00001FFF)<<16) -SDMA_PKT_COPY_TILED_SUBWIN_DW_6_element_size_offset = 6 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_6_element_size_mask = 0x00000007 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_6_element_size_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_6_ELEMENT_SIZE(x): # macro - return (((x)&0x00000007)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_DW_6_swizzle_mode_offset = 6 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_6_swizzle_mode_mask = 0x0000001F # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_6_swizzle_mode_shift = 3 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_6_SWIZZLE_MODE(x): # macro - return (((x)&0x0000001F)<<3) -SDMA_PKT_COPY_TILED_SUBWIN_DW_6_dimension_offset = 6 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_6_dimension_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_6_dimension_shift = 9 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_6_DIMENSION(x): # macro - return (((x)&0x00000003)<<9) -SDMA_PKT_COPY_TILED_SUBWIN_DW_6_mip_max_offset = 6 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_6_mip_max_mask = 0x0000000F # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_6_mip_max_shift = 16 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_6_MIP_MAX(x): # macro - return (((x)&0x0000000F)<<16) -SDMA_PKT_COPY_TILED_SUBWIN_DW_6_mip_id_offset = 6 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_6_mip_id_mask = 0x0000000F # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_6_mip_id_shift = 20 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_6_MIP_ID(x): # macro - return (((x)&0x0000000F)<<20) -SDMA_PKT_COPY_TILED_SUBWIN_LINEAR_ADDR_LO_linear_addr_31_0_offset = 7 # macro -SDMA_PKT_COPY_TILED_SUBWIN_LINEAR_ADDR_LO_linear_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_LINEAR_ADDR_LO_linear_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_LINEAR_ADDR_LO_LINEAR_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_LINEAR_ADDR_HI_linear_addr_63_32_offset = 8 # macro -SDMA_PKT_COPY_TILED_SUBWIN_LINEAR_ADDR_HI_linear_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_LINEAR_ADDR_HI_linear_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_LINEAR_ADDR_HI_LINEAR_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_DW_9_linear_x_offset = 9 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_9_linear_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_9_linear_x_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_9_LINEAR_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_DW_9_linear_y_offset = 9 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_9_linear_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_9_linear_y_shift = 16 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_9_LINEAR_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_TILED_SUBWIN_DW_10_linear_z_offset = 10 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_10_linear_z_mask = 0x00001FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_10_linear_z_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_10_LINEAR_Z(x): # macro - return (((x)&0x00001FFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_DW_10_linear_pitch_offset = 10 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_10_linear_pitch_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_10_linear_pitch_shift = 16 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_10_LINEAR_PITCH(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_TILED_SUBWIN_DW_11_linear_slice_pitch_offset = 11 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_11_linear_slice_pitch_mask = 0x0FFFFFFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_11_linear_slice_pitch_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_11_LINEAR_SLICE_PITCH(x): # macro - return (((x)&0x0FFFFFFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_DW_12_rect_x_offset = 12 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_12_rect_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_12_rect_x_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_12_RECT_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_DW_12_rect_y_offset = 12 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_12_rect_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_12_rect_y_shift = 16 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_12_RECT_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_TILED_SUBWIN_DW_13_rect_z_offset = 13 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_13_rect_z_mask = 0x00001FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_13_rect_z_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_13_RECT_Z(x): # macro - return (((x)&0x00001FFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_DW_13_linear_sw_offset = 13 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_13_linear_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_13_linear_sw_shift = 16 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_13_LINEAR_SW(x): # macro - return (((x)&0x00000003)<<16) -SDMA_PKT_COPY_TILED_SUBWIN_DW_13_linear_cache_policy_offset = 13 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_13_linear_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_13_linear_cache_policy_shift = 18 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_13_LINEAR_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<18) -SDMA_PKT_COPY_TILED_SUBWIN_DW_13_tile_sw_offset = 13 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_13_tile_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_13_tile_sw_shift = 24 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_13_TILE_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_TILED_SUBWIN_DW_13_tile_cache_policy_offset = 13 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_13_tile_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_TILED_SUBWIN_DW_13_tile_cache_policy_shift = 26 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_DW_13_TILE_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<26) -SDMA_PKT_COPY_TILED_SUBWIN_META_ADDR_LO_meta_addr_31_0_offset = 14 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_ADDR_LO_meta_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_ADDR_LO_meta_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_META_ADDR_LO_META_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_META_ADDR_HI_meta_addr_63_32_offset = 15 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_ADDR_HI_meta_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_ADDR_HI_meta_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_META_ADDR_HI_META_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_data_format_offset = 16 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_data_format_mask = 0x0000007F # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_data_format_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_DATA_FORMAT(x): # macro - return (((x)&0x0000007F)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_color_transform_disable_offset = 16 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_color_transform_disable_mask = 0x00000001 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_color_transform_disable_shift = 7 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_COLOR_TRANSFORM_DISABLE(x): # macro - return (((x)&0x00000001)<<7) -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_alpha_is_on_msb_offset = 16 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_alpha_is_on_msb_mask = 0x00000001 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_alpha_is_on_msb_shift = 8 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_ALPHA_IS_ON_MSB(x): # macro - return (((x)&0x00000001)<<8) -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_number_type_offset = 16 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_number_type_mask = 0x00000007 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_number_type_shift = 9 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_NUMBER_TYPE(x): # macro - return (((x)&0x00000007)<<9) -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_surface_type_offset = 16 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_surface_type_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_surface_type_shift = 12 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_SURFACE_TYPE(x): # macro - return (((x)&0x00000003)<<12) -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_meta_llc_offset = 16 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_meta_llc_mask = 0x00000001 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_meta_llc_shift = 14 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_META_LLC(x): # macro - return (((x)&0x00000001)<<14) -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_max_comp_block_size_offset = 16 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_max_comp_block_size_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_max_comp_block_size_shift = 24 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_MAX_COMP_BLOCK_SIZE(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_max_uncomp_block_size_offset = 16 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_max_uncomp_block_size_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_max_uncomp_block_size_shift = 26 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_MAX_UNCOMP_BLOCK_SIZE(x): # macro - return (((x)&0x00000003)<<26) -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_write_compress_enable_offset = 16 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_write_compress_enable_mask = 0x00000001 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_write_compress_enable_shift = 28 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_WRITE_COMPRESS_ENABLE(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_meta_tmz_offset = 16 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_meta_tmz_mask = 0x00000001 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_meta_tmz_shift = 29 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_META_TMZ(x): # macro - return (((x)&0x00000001)<<29) -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_pipe_aligned_offset = 16 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_pipe_aligned_mask = 0x00000001 # macro -SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_pipe_aligned_shift = 31 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_PIPE_ALIGNED(x): # macro - return (((x)&0x00000001)<<31) -SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_op_offset = 0 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_op_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_detile_offset = 0 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_detile_mask = 0x00000001 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_detile_shift = 31 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_DETILE(x): # macro - return (((x)&0x00000001)<<31) -SDMA_PKT_COPY_TILED_SUBWIN_BC_TILED_ADDR_LO_tiled_addr_31_0_offset = 1 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_TILED_ADDR_LO_tiled_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_TILED_ADDR_LO_tiled_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_TILED_ADDR_LO_TILED_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_BC_TILED_ADDR_HI_tiled_addr_63_32_offset = 2 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_TILED_ADDR_HI_tiled_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_TILED_ADDR_HI_tiled_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_TILED_ADDR_HI_TILED_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_3_tiled_x_offset = 3 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_3_tiled_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_3_tiled_x_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_3_TILED_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_3_tiled_y_offset = 3 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_3_tiled_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_3_tiled_y_shift = 16 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_3_TILED_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_4_tiled_z_offset = 4 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_4_tiled_z_mask = 0x000007FF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_4_tiled_z_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_4_TILED_Z(x): # macro - return (((x)&0x000007FF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_4_width_offset = 4 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_4_width_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_4_width_shift = 16 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_4_WIDTH(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_5_height_offset = 5 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_5_height_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_5_height_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_5_HEIGHT(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_5_depth_offset = 5 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_5_depth_mask = 0x000007FF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_5_depth_shift = 16 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_5_DEPTH(x): # macro - return (((x)&0x000007FF)<<16) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_element_size_offset = 6 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_element_size_mask = 0x00000007 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_element_size_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_ELEMENT_SIZE(x): # macro - return (((x)&0x00000007)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_array_mode_offset = 6 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_array_mode_mask = 0x0000000F # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_array_mode_shift = 3 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_ARRAY_MODE(x): # macro - return (((x)&0x0000000F)<<3) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_mit_mode_offset = 6 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_mit_mode_mask = 0x00000007 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_mit_mode_shift = 8 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_MIT_MODE(x): # macro - return (((x)&0x00000007)<<8) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_tilesplit_size_offset = 6 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_tilesplit_size_mask = 0x00000007 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_tilesplit_size_shift = 11 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_TILESPLIT_SIZE(x): # macro - return (((x)&0x00000007)<<11) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_bank_w_offset = 6 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_bank_w_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_bank_w_shift = 15 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_BANK_W(x): # macro - return (((x)&0x00000003)<<15) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_bank_h_offset = 6 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_bank_h_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_bank_h_shift = 18 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_BANK_H(x): # macro - return (((x)&0x00000003)<<18) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_num_bank_offset = 6 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_num_bank_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_num_bank_shift = 21 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_NUM_BANK(x): # macro - return (((x)&0x00000003)<<21) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_mat_aspt_offset = 6 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_mat_aspt_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_mat_aspt_shift = 24 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_MAT_ASPT(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_pipe_config_offset = 6 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_pipe_config_mask = 0x0000001F # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_pipe_config_shift = 26 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_PIPE_CONFIG(x): # macro - return (((x)&0x0000001F)<<26) -SDMA_PKT_COPY_TILED_SUBWIN_BC_LINEAR_ADDR_LO_linear_addr_31_0_offset = 7 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_LINEAR_ADDR_LO_linear_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_LINEAR_ADDR_LO_linear_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_LINEAR_ADDR_LO_LINEAR_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_BC_LINEAR_ADDR_HI_linear_addr_63_32_offset = 8 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_LINEAR_ADDR_HI_linear_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_LINEAR_ADDR_HI_linear_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_LINEAR_ADDR_HI_LINEAR_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_9_linear_x_offset = 9 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_9_linear_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_9_linear_x_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_9_LINEAR_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_9_linear_y_offset = 9 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_9_linear_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_9_linear_y_shift = 16 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_9_LINEAR_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_10_linear_z_offset = 10 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_10_linear_z_mask = 0x000007FF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_10_linear_z_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_10_LINEAR_Z(x): # macro - return (((x)&0x000007FF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_10_linear_pitch_offset = 10 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_10_linear_pitch_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_10_linear_pitch_shift = 16 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_10_LINEAR_PITCH(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_11_linear_slice_pitch_offset = 11 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_11_linear_slice_pitch_mask = 0x0FFFFFFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_11_linear_slice_pitch_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_11_LINEAR_SLICE_PITCH(x): # macro - return (((x)&0x0FFFFFFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_12_rect_x_offset = 12 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_12_rect_x_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_12_rect_x_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_12_RECT_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_12_rect_y_offset = 12 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_12_rect_y_mask = 0x00003FFF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_12_rect_y_shift = 16 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_12_RECT_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_rect_z_offset = 13 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_rect_z_mask = 0x000007FF # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_rect_z_shift = 0 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_RECT_Z(x): # macro - return (((x)&0x000007FF)<<0) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_linear_sw_offset = 13 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_linear_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_linear_sw_shift = 16 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_LINEAR_SW(x): # macro - return (((x)&0x00000003)<<16) -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_tile_sw_offset = 13 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_tile_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_tile_sw_shift = 24 # macro -def SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_TILE_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_STRUCT_HEADER_op_offset = 0 # macro -SDMA_PKT_COPY_STRUCT_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_STRUCT_HEADER_op_shift = 0 # macro -def SDMA_PKT_COPY_STRUCT_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_COPY_STRUCT_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_COPY_STRUCT_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_COPY_STRUCT_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_COPY_STRUCT_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_COPY_STRUCT_HEADER_tmz_offset = 0 # macro -SDMA_PKT_COPY_STRUCT_HEADER_tmz_mask = 0x00000001 # macro -SDMA_PKT_COPY_STRUCT_HEADER_tmz_shift = 18 # macro -def SDMA_PKT_COPY_STRUCT_HEADER_TMZ(x): # macro - return (((x)&0x00000001)<<18) -SDMA_PKT_COPY_STRUCT_HEADER_cpv_offset = 0 # macro -SDMA_PKT_COPY_STRUCT_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_COPY_STRUCT_HEADER_cpv_shift = 28 # macro -def SDMA_PKT_COPY_STRUCT_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_COPY_STRUCT_HEADER_detile_offset = 0 # macro -SDMA_PKT_COPY_STRUCT_HEADER_detile_mask = 0x00000001 # macro -SDMA_PKT_COPY_STRUCT_HEADER_detile_shift = 31 # macro -def SDMA_PKT_COPY_STRUCT_HEADER_DETILE(x): # macro - return (((x)&0x00000001)<<31) -SDMA_PKT_COPY_STRUCT_SB_ADDR_LO_sb_addr_31_0_offset = 1 # macro -SDMA_PKT_COPY_STRUCT_SB_ADDR_LO_sb_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_STRUCT_SB_ADDR_LO_sb_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_STRUCT_SB_ADDR_LO_SB_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_STRUCT_SB_ADDR_HI_sb_addr_63_32_offset = 2 # macro -SDMA_PKT_COPY_STRUCT_SB_ADDR_HI_sb_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_STRUCT_SB_ADDR_HI_sb_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_STRUCT_SB_ADDR_HI_SB_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_STRUCT_START_INDEX_start_index_offset = 3 # macro -SDMA_PKT_COPY_STRUCT_START_INDEX_start_index_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_STRUCT_START_INDEX_start_index_shift = 0 # macro -def SDMA_PKT_COPY_STRUCT_START_INDEX_START_INDEX(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_STRUCT_COUNT_count_offset = 4 # macro -SDMA_PKT_COPY_STRUCT_COUNT_count_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_STRUCT_COUNT_count_shift = 0 # macro -def SDMA_PKT_COPY_STRUCT_COUNT_COUNT(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_STRUCT_DW_5_stride_offset = 5 # macro -SDMA_PKT_COPY_STRUCT_DW_5_stride_mask = 0x000007FF # macro -SDMA_PKT_COPY_STRUCT_DW_5_stride_shift = 0 # macro -def SDMA_PKT_COPY_STRUCT_DW_5_STRIDE(x): # macro - return (((x)&0x000007FF)<<0) -SDMA_PKT_COPY_STRUCT_DW_5_linear_sw_offset = 5 # macro -SDMA_PKT_COPY_STRUCT_DW_5_linear_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_STRUCT_DW_5_linear_sw_shift = 16 # macro -def SDMA_PKT_COPY_STRUCT_DW_5_LINEAR_SW(x): # macro - return (((x)&0x00000003)<<16) -SDMA_PKT_COPY_STRUCT_DW_5_linear_cache_policy_offset = 5 # macro -SDMA_PKT_COPY_STRUCT_DW_5_linear_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_STRUCT_DW_5_linear_cache_policy_shift = 18 # macro -def SDMA_PKT_COPY_STRUCT_DW_5_LINEAR_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<18) -SDMA_PKT_COPY_STRUCT_DW_5_struct_sw_offset = 5 # macro -SDMA_PKT_COPY_STRUCT_DW_5_struct_sw_mask = 0x00000003 # macro -SDMA_PKT_COPY_STRUCT_DW_5_struct_sw_shift = 24 # macro -def SDMA_PKT_COPY_STRUCT_DW_5_STRUCT_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_COPY_STRUCT_DW_5_struct_cache_policy_offset = 5 # macro -SDMA_PKT_COPY_STRUCT_DW_5_struct_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_COPY_STRUCT_DW_5_struct_cache_policy_shift = 26 # macro -def SDMA_PKT_COPY_STRUCT_DW_5_STRUCT_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<26) -SDMA_PKT_COPY_STRUCT_LINEAR_ADDR_LO_linear_addr_31_0_offset = 6 # macro -SDMA_PKT_COPY_STRUCT_LINEAR_ADDR_LO_linear_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_STRUCT_LINEAR_ADDR_LO_linear_addr_31_0_shift = 0 # macro -def SDMA_PKT_COPY_STRUCT_LINEAR_ADDR_LO_LINEAR_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COPY_STRUCT_LINEAR_ADDR_HI_linear_addr_63_32_offset = 7 # macro -SDMA_PKT_COPY_STRUCT_LINEAR_ADDR_HI_linear_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COPY_STRUCT_LINEAR_ADDR_HI_linear_addr_63_32_shift = 0 # macro -def SDMA_PKT_COPY_STRUCT_LINEAR_ADDR_HI_LINEAR_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_WRITE_UNTILED_HEADER_op_offset = 0 # macro -SDMA_PKT_WRITE_UNTILED_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_WRITE_UNTILED_HEADER_op_shift = 0 # macro -def SDMA_PKT_WRITE_UNTILED_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_WRITE_UNTILED_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_WRITE_UNTILED_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_WRITE_UNTILED_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_WRITE_UNTILED_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_WRITE_UNTILED_HEADER_encrypt_offset = 0 # macro -SDMA_PKT_WRITE_UNTILED_HEADER_encrypt_mask = 0x00000001 # macro -SDMA_PKT_WRITE_UNTILED_HEADER_encrypt_shift = 16 # macro -def SDMA_PKT_WRITE_UNTILED_HEADER_ENCRYPT(x): # macro - return (((x)&0x00000001)<<16) -SDMA_PKT_WRITE_UNTILED_HEADER_tmz_offset = 0 # macro -SDMA_PKT_WRITE_UNTILED_HEADER_tmz_mask = 0x00000001 # macro -SDMA_PKT_WRITE_UNTILED_HEADER_tmz_shift = 18 # macro -def SDMA_PKT_WRITE_UNTILED_HEADER_TMZ(x): # macro - return (((x)&0x00000001)<<18) -SDMA_PKT_WRITE_UNTILED_HEADER_cpv_offset = 0 # macro -SDMA_PKT_WRITE_UNTILED_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_WRITE_UNTILED_HEADER_cpv_shift = 28 # macro -def SDMA_PKT_WRITE_UNTILED_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_WRITE_UNTILED_DST_ADDR_LO_dst_addr_31_0_offset = 1 # macro -SDMA_PKT_WRITE_UNTILED_DST_ADDR_LO_dst_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_WRITE_UNTILED_DST_ADDR_LO_dst_addr_31_0_shift = 0 # macro -def SDMA_PKT_WRITE_UNTILED_DST_ADDR_LO_DST_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_WRITE_UNTILED_DST_ADDR_HI_dst_addr_63_32_offset = 2 # macro -SDMA_PKT_WRITE_UNTILED_DST_ADDR_HI_dst_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_WRITE_UNTILED_DST_ADDR_HI_dst_addr_63_32_shift = 0 # macro -def SDMA_PKT_WRITE_UNTILED_DST_ADDR_HI_DST_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_WRITE_UNTILED_DW_3_count_offset = 3 # macro -SDMA_PKT_WRITE_UNTILED_DW_3_count_mask = 0x000FFFFF # macro -SDMA_PKT_WRITE_UNTILED_DW_3_count_shift = 0 # macro -def SDMA_PKT_WRITE_UNTILED_DW_3_COUNT(x): # macro - return (((x)&0x000FFFFF)<<0) -SDMA_PKT_WRITE_UNTILED_DW_3_sw_offset = 3 # macro -SDMA_PKT_WRITE_UNTILED_DW_3_sw_mask = 0x00000003 # macro -SDMA_PKT_WRITE_UNTILED_DW_3_sw_shift = 24 # macro -def SDMA_PKT_WRITE_UNTILED_DW_3_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_WRITE_UNTILED_DW_3_cache_policy_offset = 3 # macro -SDMA_PKT_WRITE_UNTILED_DW_3_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_WRITE_UNTILED_DW_3_cache_policy_shift = 26 # macro -def SDMA_PKT_WRITE_UNTILED_DW_3_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<26) -SDMA_PKT_WRITE_UNTILED_DATA0_data0_offset = 4 # macro -SDMA_PKT_WRITE_UNTILED_DATA0_data0_mask = 0xFFFFFFFF # macro -SDMA_PKT_WRITE_UNTILED_DATA0_data0_shift = 0 # macro -def SDMA_PKT_WRITE_UNTILED_DATA0_DATA0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_WRITE_TILED_HEADER_op_offset = 0 # macro -SDMA_PKT_WRITE_TILED_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_WRITE_TILED_HEADER_op_shift = 0 # macro -def SDMA_PKT_WRITE_TILED_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_WRITE_TILED_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_WRITE_TILED_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_WRITE_TILED_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_WRITE_TILED_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_WRITE_TILED_HEADER_encrypt_offset = 0 # macro -SDMA_PKT_WRITE_TILED_HEADER_encrypt_mask = 0x00000001 # macro -SDMA_PKT_WRITE_TILED_HEADER_encrypt_shift = 16 # macro -def SDMA_PKT_WRITE_TILED_HEADER_ENCRYPT(x): # macro - return (((x)&0x00000001)<<16) -SDMA_PKT_WRITE_TILED_HEADER_tmz_offset = 0 # macro -SDMA_PKT_WRITE_TILED_HEADER_tmz_mask = 0x00000001 # macro -SDMA_PKT_WRITE_TILED_HEADER_tmz_shift = 18 # macro -def SDMA_PKT_WRITE_TILED_HEADER_TMZ(x): # macro - return (((x)&0x00000001)<<18) -SDMA_PKT_WRITE_TILED_HEADER_cpv_offset = 0 # macro -SDMA_PKT_WRITE_TILED_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_WRITE_TILED_HEADER_cpv_shift = 28 # macro -def SDMA_PKT_WRITE_TILED_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_WRITE_TILED_DST_ADDR_LO_dst_addr_31_0_offset = 1 # macro -SDMA_PKT_WRITE_TILED_DST_ADDR_LO_dst_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_WRITE_TILED_DST_ADDR_LO_dst_addr_31_0_shift = 0 # macro -def SDMA_PKT_WRITE_TILED_DST_ADDR_LO_DST_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_WRITE_TILED_DST_ADDR_HI_dst_addr_63_32_offset = 2 # macro -SDMA_PKT_WRITE_TILED_DST_ADDR_HI_dst_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_WRITE_TILED_DST_ADDR_HI_dst_addr_63_32_shift = 0 # macro -def SDMA_PKT_WRITE_TILED_DST_ADDR_HI_DST_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_WRITE_TILED_DW_3_width_offset = 3 # macro -SDMA_PKT_WRITE_TILED_DW_3_width_mask = 0x00003FFF # macro -SDMA_PKT_WRITE_TILED_DW_3_width_shift = 0 # macro -def SDMA_PKT_WRITE_TILED_DW_3_WIDTH(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_WRITE_TILED_DW_4_height_offset = 4 # macro -SDMA_PKT_WRITE_TILED_DW_4_height_mask = 0x00003FFF # macro -SDMA_PKT_WRITE_TILED_DW_4_height_shift = 0 # macro -def SDMA_PKT_WRITE_TILED_DW_4_HEIGHT(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_WRITE_TILED_DW_4_depth_offset = 4 # macro -SDMA_PKT_WRITE_TILED_DW_4_depth_mask = 0x00001FFF # macro -SDMA_PKT_WRITE_TILED_DW_4_depth_shift = 16 # macro -def SDMA_PKT_WRITE_TILED_DW_4_DEPTH(x): # macro - return (((x)&0x00001FFF)<<16) -SDMA_PKT_WRITE_TILED_DW_5_element_size_offset = 5 # macro -SDMA_PKT_WRITE_TILED_DW_5_element_size_mask = 0x00000007 # macro -SDMA_PKT_WRITE_TILED_DW_5_element_size_shift = 0 # macro -def SDMA_PKT_WRITE_TILED_DW_5_ELEMENT_SIZE(x): # macro - return (((x)&0x00000007)<<0) -SDMA_PKT_WRITE_TILED_DW_5_swizzle_mode_offset = 5 # macro -SDMA_PKT_WRITE_TILED_DW_5_swizzle_mode_mask = 0x0000001F # macro -SDMA_PKT_WRITE_TILED_DW_5_swizzle_mode_shift = 3 # macro -def SDMA_PKT_WRITE_TILED_DW_5_SWIZZLE_MODE(x): # macro - return (((x)&0x0000001F)<<3) -SDMA_PKT_WRITE_TILED_DW_5_dimension_offset = 5 # macro -SDMA_PKT_WRITE_TILED_DW_5_dimension_mask = 0x00000003 # macro -SDMA_PKT_WRITE_TILED_DW_5_dimension_shift = 9 # macro -def SDMA_PKT_WRITE_TILED_DW_5_DIMENSION(x): # macro - return (((x)&0x00000003)<<9) -SDMA_PKT_WRITE_TILED_DW_5_mip_max_offset = 5 # macro -SDMA_PKT_WRITE_TILED_DW_5_mip_max_mask = 0x0000000F # macro -SDMA_PKT_WRITE_TILED_DW_5_mip_max_shift = 16 # macro -def SDMA_PKT_WRITE_TILED_DW_5_MIP_MAX(x): # macro - return (((x)&0x0000000F)<<16) -SDMA_PKT_WRITE_TILED_DW_6_x_offset = 6 # macro -SDMA_PKT_WRITE_TILED_DW_6_x_mask = 0x00003FFF # macro -SDMA_PKT_WRITE_TILED_DW_6_x_shift = 0 # macro -def SDMA_PKT_WRITE_TILED_DW_6_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_WRITE_TILED_DW_6_y_offset = 6 # macro -SDMA_PKT_WRITE_TILED_DW_6_y_mask = 0x00003FFF # macro -SDMA_PKT_WRITE_TILED_DW_6_y_shift = 16 # macro -def SDMA_PKT_WRITE_TILED_DW_6_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_WRITE_TILED_DW_7_z_offset = 7 # macro -SDMA_PKT_WRITE_TILED_DW_7_z_mask = 0x00001FFF # macro -SDMA_PKT_WRITE_TILED_DW_7_z_shift = 0 # macro -def SDMA_PKT_WRITE_TILED_DW_7_Z(x): # macro - return (((x)&0x00001FFF)<<0) -SDMA_PKT_WRITE_TILED_DW_7_sw_offset = 7 # macro -SDMA_PKT_WRITE_TILED_DW_7_sw_mask = 0x00000003 # macro -SDMA_PKT_WRITE_TILED_DW_7_sw_shift = 24 # macro -def SDMA_PKT_WRITE_TILED_DW_7_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_WRITE_TILED_DW_7_cache_policy_offset = 7 # macro -SDMA_PKT_WRITE_TILED_DW_7_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_WRITE_TILED_DW_7_cache_policy_shift = 26 # macro -def SDMA_PKT_WRITE_TILED_DW_7_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<26) -SDMA_PKT_WRITE_TILED_COUNT_count_offset = 8 # macro -SDMA_PKT_WRITE_TILED_COUNT_count_mask = 0x000FFFFF # macro -SDMA_PKT_WRITE_TILED_COUNT_count_shift = 0 # macro -def SDMA_PKT_WRITE_TILED_COUNT_COUNT(x): # macro - return (((x)&0x000FFFFF)<<0) -SDMA_PKT_WRITE_TILED_DATA0_data0_offset = 9 # macro -SDMA_PKT_WRITE_TILED_DATA0_data0_mask = 0xFFFFFFFF # macro -SDMA_PKT_WRITE_TILED_DATA0_data0_shift = 0 # macro -def SDMA_PKT_WRITE_TILED_DATA0_DATA0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_WRITE_TILED_BC_HEADER_op_offset = 0 # macro -SDMA_PKT_WRITE_TILED_BC_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_WRITE_TILED_BC_HEADER_op_shift = 0 # macro -def SDMA_PKT_WRITE_TILED_BC_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_WRITE_TILED_BC_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_WRITE_TILED_BC_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_WRITE_TILED_BC_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_WRITE_TILED_BC_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_WRITE_TILED_BC_DST_ADDR_LO_dst_addr_31_0_offset = 1 # macro -SDMA_PKT_WRITE_TILED_BC_DST_ADDR_LO_dst_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_WRITE_TILED_BC_DST_ADDR_LO_dst_addr_31_0_shift = 0 # macro -def SDMA_PKT_WRITE_TILED_BC_DST_ADDR_LO_DST_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_WRITE_TILED_BC_DST_ADDR_HI_dst_addr_63_32_offset = 2 # macro -SDMA_PKT_WRITE_TILED_BC_DST_ADDR_HI_dst_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_WRITE_TILED_BC_DST_ADDR_HI_dst_addr_63_32_shift = 0 # macro -def SDMA_PKT_WRITE_TILED_BC_DST_ADDR_HI_DST_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_WRITE_TILED_BC_DW_3_width_offset = 3 # macro -SDMA_PKT_WRITE_TILED_BC_DW_3_width_mask = 0x00003FFF # macro -SDMA_PKT_WRITE_TILED_BC_DW_3_width_shift = 0 # macro -def SDMA_PKT_WRITE_TILED_BC_DW_3_WIDTH(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_WRITE_TILED_BC_DW_4_height_offset = 4 # macro -SDMA_PKT_WRITE_TILED_BC_DW_4_height_mask = 0x00003FFF # macro -SDMA_PKT_WRITE_TILED_BC_DW_4_height_shift = 0 # macro -def SDMA_PKT_WRITE_TILED_BC_DW_4_HEIGHT(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_WRITE_TILED_BC_DW_4_depth_offset = 4 # macro -SDMA_PKT_WRITE_TILED_BC_DW_4_depth_mask = 0x000007FF # macro -SDMA_PKT_WRITE_TILED_BC_DW_4_depth_shift = 16 # macro -def SDMA_PKT_WRITE_TILED_BC_DW_4_DEPTH(x): # macro - return (((x)&0x000007FF)<<16) -SDMA_PKT_WRITE_TILED_BC_DW_5_element_size_offset = 5 # macro -SDMA_PKT_WRITE_TILED_BC_DW_5_element_size_mask = 0x00000007 # macro -SDMA_PKT_WRITE_TILED_BC_DW_5_element_size_shift = 0 # macro -def SDMA_PKT_WRITE_TILED_BC_DW_5_ELEMENT_SIZE(x): # macro - return (((x)&0x00000007)<<0) -SDMA_PKT_WRITE_TILED_BC_DW_5_array_mode_offset = 5 # macro -SDMA_PKT_WRITE_TILED_BC_DW_5_array_mode_mask = 0x0000000F # macro -SDMA_PKT_WRITE_TILED_BC_DW_5_array_mode_shift = 3 # macro -def SDMA_PKT_WRITE_TILED_BC_DW_5_ARRAY_MODE(x): # macro - return (((x)&0x0000000F)<<3) -SDMA_PKT_WRITE_TILED_BC_DW_5_mit_mode_offset = 5 # macro -SDMA_PKT_WRITE_TILED_BC_DW_5_mit_mode_mask = 0x00000007 # macro -SDMA_PKT_WRITE_TILED_BC_DW_5_mit_mode_shift = 8 # macro -def SDMA_PKT_WRITE_TILED_BC_DW_5_MIT_MODE(x): # macro - return (((x)&0x00000007)<<8) -SDMA_PKT_WRITE_TILED_BC_DW_5_tilesplit_size_offset = 5 # macro -SDMA_PKT_WRITE_TILED_BC_DW_5_tilesplit_size_mask = 0x00000007 # macro -SDMA_PKT_WRITE_TILED_BC_DW_5_tilesplit_size_shift = 11 # macro -def SDMA_PKT_WRITE_TILED_BC_DW_5_TILESPLIT_SIZE(x): # macro - return (((x)&0x00000007)<<11) -SDMA_PKT_WRITE_TILED_BC_DW_5_bank_w_offset = 5 # macro -SDMA_PKT_WRITE_TILED_BC_DW_5_bank_w_mask = 0x00000003 # macro -SDMA_PKT_WRITE_TILED_BC_DW_5_bank_w_shift = 15 # macro -def SDMA_PKT_WRITE_TILED_BC_DW_5_BANK_W(x): # macro - return (((x)&0x00000003)<<15) -SDMA_PKT_WRITE_TILED_BC_DW_5_bank_h_offset = 5 # macro -SDMA_PKT_WRITE_TILED_BC_DW_5_bank_h_mask = 0x00000003 # macro -SDMA_PKT_WRITE_TILED_BC_DW_5_bank_h_shift = 18 # macro -def SDMA_PKT_WRITE_TILED_BC_DW_5_BANK_H(x): # macro - return (((x)&0x00000003)<<18) -SDMA_PKT_WRITE_TILED_BC_DW_5_num_bank_offset = 5 # macro -SDMA_PKT_WRITE_TILED_BC_DW_5_num_bank_mask = 0x00000003 # macro -SDMA_PKT_WRITE_TILED_BC_DW_5_num_bank_shift = 21 # macro -def SDMA_PKT_WRITE_TILED_BC_DW_5_NUM_BANK(x): # macro - return (((x)&0x00000003)<<21) -SDMA_PKT_WRITE_TILED_BC_DW_5_mat_aspt_offset = 5 # macro -SDMA_PKT_WRITE_TILED_BC_DW_5_mat_aspt_mask = 0x00000003 # macro -SDMA_PKT_WRITE_TILED_BC_DW_5_mat_aspt_shift = 24 # macro -def SDMA_PKT_WRITE_TILED_BC_DW_5_MAT_ASPT(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_WRITE_TILED_BC_DW_5_pipe_config_offset = 5 # macro -SDMA_PKT_WRITE_TILED_BC_DW_5_pipe_config_mask = 0x0000001F # macro -SDMA_PKT_WRITE_TILED_BC_DW_5_pipe_config_shift = 26 # macro -def SDMA_PKT_WRITE_TILED_BC_DW_5_PIPE_CONFIG(x): # macro - return (((x)&0x0000001F)<<26) -SDMA_PKT_WRITE_TILED_BC_DW_6_x_offset = 6 # macro -SDMA_PKT_WRITE_TILED_BC_DW_6_x_mask = 0x00003FFF # macro -SDMA_PKT_WRITE_TILED_BC_DW_6_x_shift = 0 # macro -def SDMA_PKT_WRITE_TILED_BC_DW_6_X(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_WRITE_TILED_BC_DW_6_y_offset = 6 # macro -SDMA_PKT_WRITE_TILED_BC_DW_6_y_mask = 0x00003FFF # macro -SDMA_PKT_WRITE_TILED_BC_DW_6_y_shift = 16 # macro -def SDMA_PKT_WRITE_TILED_BC_DW_6_Y(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_WRITE_TILED_BC_DW_7_z_offset = 7 # macro -SDMA_PKT_WRITE_TILED_BC_DW_7_z_mask = 0x000007FF # macro -SDMA_PKT_WRITE_TILED_BC_DW_7_z_shift = 0 # macro -def SDMA_PKT_WRITE_TILED_BC_DW_7_Z(x): # macro - return (((x)&0x000007FF)<<0) -SDMA_PKT_WRITE_TILED_BC_DW_7_sw_offset = 7 # macro -SDMA_PKT_WRITE_TILED_BC_DW_7_sw_mask = 0x00000003 # macro -SDMA_PKT_WRITE_TILED_BC_DW_7_sw_shift = 24 # macro -def SDMA_PKT_WRITE_TILED_BC_DW_7_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_WRITE_TILED_BC_COUNT_count_offset = 8 # macro -SDMA_PKT_WRITE_TILED_BC_COUNT_count_mask = 0x000FFFFF # macro -SDMA_PKT_WRITE_TILED_BC_COUNT_count_shift = 2 # macro -def SDMA_PKT_WRITE_TILED_BC_COUNT_COUNT(x): # macro - return (((x)&0x000FFFFF)<<2) -SDMA_PKT_WRITE_TILED_BC_DATA0_data0_offset = 9 # macro -SDMA_PKT_WRITE_TILED_BC_DATA0_data0_mask = 0xFFFFFFFF # macro -SDMA_PKT_WRITE_TILED_BC_DATA0_data0_shift = 0 # macro -def SDMA_PKT_WRITE_TILED_BC_DATA0_DATA0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_PTEPDE_COPY_HEADER_op_offset = 0 # macro -SDMA_PKT_PTEPDE_COPY_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_PTEPDE_COPY_HEADER_op_shift = 0 # macro -def SDMA_PKT_PTEPDE_COPY_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_PTEPDE_COPY_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_PTEPDE_COPY_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_PTEPDE_COPY_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_PTEPDE_COPY_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_PTEPDE_COPY_HEADER_tmz_offset = 0 # macro -SDMA_PKT_PTEPDE_COPY_HEADER_tmz_mask = 0x00000001 # macro -SDMA_PKT_PTEPDE_COPY_HEADER_tmz_shift = 18 # macro -def SDMA_PKT_PTEPDE_COPY_HEADER_TMZ(x): # macro - return (((x)&0x00000001)<<18) -SDMA_PKT_PTEPDE_COPY_HEADER_cpv_offset = 0 # macro -SDMA_PKT_PTEPDE_COPY_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_PTEPDE_COPY_HEADER_cpv_shift = 28 # macro -def SDMA_PKT_PTEPDE_COPY_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_PTEPDE_COPY_HEADER_ptepde_op_offset = 0 # macro -SDMA_PKT_PTEPDE_COPY_HEADER_ptepde_op_mask = 0x00000001 # macro -SDMA_PKT_PTEPDE_COPY_HEADER_ptepde_op_shift = 31 # macro -def SDMA_PKT_PTEPDE_COPY_HEADER_PTEPDE_OP(x): # macro - return (((x)&0x00000001)<<31) -SDMA_PKT_PTEPDE_COPY_SRC_ADDR_LO_src_addr_31_0_offset = 1 # macro -SDMA_PKT_PTEPDE_COPY_SRC_ADDR_LO_src_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_PTEPDE_COPY_SRC_ADDR_LO_src_addr_31_0_shift = 0 # macro -def SDMA_PKT_PTEPDE_COPY_SRC_ADDR_LO_SRC_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_PTEPDE_COPY_SRC_ADDR_HI_src_addr_63_32_offset = 2 # macro -SDMA_PKT_PTEPDE_COPY_SRC_ADDR_HI_src_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_PTEPDE_COPY_SRC_ADDR_HI_src_addr_63_32_shift = 0 # macro -def SDMA_PKT_PTEPDE_COPY_SRC_ADDR_HI_SRC_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_PTEPDE_COPY_DST_ADDR_LO_dst_addr_31_0_offset = 3 # macro -SDMA_PKT_PTEPDE_COPY_DST_ADDR_LO_dst_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_PTEPDE_COPY_DST_ADDR_LO_dst_addr_31_0_shift = 0 # macro -def SDMA_PKT_PTEPDE_COPY_DST_ADDR_LO_DST_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_PTEPDE_COPY_DST_ADDR_HI_dst_addr_63_32_offset = 4 # macro -SDMA_PKT_PTEPDE_COPY_DST_ADDR_HI_dst_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_PTEPDE_COPY_DST_ADDR_HI_dst_addr_63_32_shift = 0 # macro -def SDMA_PKT_PTEPDE_COPY_DST_ADDR_HI_DST_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_PTEPDE_COPY_MASK_DW0_mask_dw0_offset = 5 # macro -SDMA_PKT_PTEPDE_COPY_MASK_DW0_mask_dw0_mask = 0xFFFFFFFF # macro -SDMA_PKT_PTEPDE_COPY_MASK_DW0_mask_dw0_shift = 0 # macro -def SDMA_PKT_PTEPDE_COPY_MASK_DW0_MASK_DW0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_PTEPDE_COPY_MASK_DW1_mask_dw1_offset = 6 # macro -SDMA_PKT_PTEPDE_COPY_MASK_DW1_mask_dw1_mask = 0xFFFFFFFF # macro -SDMA_PKT_PTEPDE_COPY_MASK_DW1_mask_dw1_shift = 0 # macro -def SDMA_PKT_PTEPDE_COPY_MASK_DW1_MASK_DW1(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_PTEPDE_COPY_COUNT_count_offset = 7 # macro -SDMA_PKT_PTEPDE_COPY_COUNT_count_mask = 0x0007FFFF # macro -SDMA_PKT_PTEPDE_COPY_COUNT_count_shift = 0 # macro -def SDMA_PKT_PTEPDE_COPY_COUNT_COUNT(x): # macro - return (((x)&0x0007FFFF)<<0) -SDMA_PKT_PTEPDE_COPY_COUNT_dst_cache_policy_offset = 7 # macro -SDMA_PKT_PTEPDE_COPY_COUNT_dst_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_PTEPDE_COPY_COUNT_dst_cache_policy_shift = 22 # macro -def SDMA_PKT_PTEPDE_COPY_COUNT_DST_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<22) -SDMA_PKT_PTEPDE_COPY_COUNT_src_cache_policy_offset = 7 # macro -SDMA_PKT_PTEPDE_COPY_COUNT_src_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_PTEPDE_COPY_COUNT_src_cache_policy_shift = 29 # macro -def SDMA_PKT_PTEPDE_COPY_COUNT_SRC_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<29) -SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_op_offset = 0 # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_op_shift = 0 # macro -def SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_pte_size_offset = 0 # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_pte_size_mask = 0x00000003 # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_pte_size_shift = 28 # macro -def SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_PTE_SIZE(x): # macro - return (((x)&0x00000003)<<28) -SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_direction_offset = 0 # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_direction_mask = 0x00000001 # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_direction_shift = 30 # macro -def SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_DIRECTION(x): # macro - return (((x)&0x00000001)<<30) -SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_ptepde_op_offset = 0 # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_ptepde_op_mask = 0x00000001 # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_ptepde_op_shift = 31 # macro -def SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_PTEPDE_OP(x): # macro - return (((x)&0x00000001)<<31) -SDMA_PKT_PTEPDE_COPY_BACKWARDS_SRC_ADDR_LO_src_addr_31_0_offset = 1 # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_SRC_ADDR_LO_src_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_SRC_ADDR_LO_src_addr_31_0_shift = 0 # macro -def SDMA_PKT_PTEPDE_COPY_BACKWARDS_SRC_ADDR_LO_SRC_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_PTEPDE_COPY_BACKWARDS_SRC_ADDR_HI_src_addr_63_32_offset = 2 # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_SRC_ADDR_HI_src_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_SRC_ADDR_HI_src_addr_63_32_shift = 0 # macro -def SDMA_PKT_PTEPDE_COPY_BACKWARDS_SRC_ADDR_HI_SRC_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_PTEPDE_COPY_BACKWARDS_DST_ADDR_LO_dst_addr_31_0_offset = 3 # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_DST_ADDR_LO_dst_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_DST_ADDR_LO_dst_addr_31_0_shift = 0 # macro -def SDMA_PKT_PTEPDE_COPY_BACKWARDS_DST_ADDR_LO_DST_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_PTEPDE_COPY_BACKWARDS_DST_ADDR_HI_dst_addr_63_32_offset = 4 # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_DST_ADDR_HI_dst_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_DST_ADDR_HI_dst_addr_63_32_shift = 0 # macro -def SDMA_PKT_PTEPDE_COPY_BACKWARDS_DST_ADDR_HI_DST_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_PTEPDE_COPY_BACKWARDS_MASK_BIT_FOR_DW_mask_first_xfer_offset = 5 # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_MASK_BIT_FOR_DW_mask_first_xfer_mask = 0x000000FF # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_MASK_BIT_FOR_DW_mask_first_xfer_shift = 0 # macro -def SDMA_PKT_PTEPDE_COPY_BACKWARDS_MASK_BIT_FOR_DW_MASK_FIRST_XFER(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_PTEPDE_COPY_BACKWARDS_MASK_BIT_FOR_DW_mask_last_xfer_offset = 5 # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_MASK_BIT_FOR_DW_mask_last_xfer_mask = 0x000000FF # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_MASK_BIT_FOR_DW_mask_last_xfer_shift = 8 # macro -def SDMA_PKT_PTEPDE_COPY_BACKWARDS_MASK_BIT_FOR_DW_MASK_LAST_XFER(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_PTEPDE_COPY_BACKWARDS_COUNT_IN_32B_XFER_count_offset = 6 # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_COUNT_IN_32B_XFER_count_mask = 0x0001FFFF # macro -SDMA_PKT_PTEPDE_COPY_BACKWARDS_COUNT_IN_32B_XFER_count_shift = 0 # macro -def SDMA_PKT_PTEPDE_COPY_BACKWARDS_COUNT_IN_32B_XFER_COUNT(x): # macro - return (((x)&0x0001FFFF)<<0) -SDMA_PKT_PTEPDE_RMW_HEADER_op_offset = 0 # macro -SDMA_PKT_PTEPDE_RMW_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_PTEPDE_RMW_HEADER_op_shift = 0 # macro -def SDMA_PKT_PTEPDE_RMW_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_PTEPDE_RMW_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_PTEPDE_RMW_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_PTEPDE_RMW_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_PTEPDE_RMW_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_PTEPDE_RMW_HEADER_mtype_offset = 0 # macro -SDMA_PKT_PTEPDE_RMW_HEADER_mtype_mask = 0x00000007 # macro -SDMA_PKT_PTEPDE_RMW_HEADER_mtype_shift = 16 # macro -def SDMA_PKT_PTEPDE_RMW_HEADER_MTYPE(x): # macro - return (((x)&0x00000007)<<16) -SDMA_PKT_PTEPDE_RMW_HEADER_gcc_offset = 0 # macro -SDMA_PKT_PTEPDE_RMW_HEADER_gcc_mask = 0x00000001 # macro -SDMA_PKT_PTEPDE_RMW_HEADER_gcc_shift = 19 # macro -def SDMA_PKT_PTEPDE_RMW_HEADER_GCC(x): # macro - return (((x)&0x00000001)<<19) -SDMA_PKT_PTEPDE_RMW_HEADER_sys_offset = 0 # macro -SDMA_PKT_PTEPDE_RMW_HEADER_sys_mask = 0x00000001 # macro -SDMA_PKT_PTEPDE_RMW_HEADER_sys_shift = 20 # macro -def SDMA_PKT_PTEPDE_RMW_HEADER_SYS(x): # macro - return (((x)&0x00000001)<<20) -SDMA_PKT_PTEPDE_RMW_HEADER_snp_offset = 0 # macro -SDMA_PKT_PTEPDE_RMW_HEADER_snp_mask = 0x00000001 # macro -SDMA_PKT_PTEPDE_RMW_HEADER_snp_shift = 22 # macro -def SDMA_PKT_PTEPDE_RMW_HEADER_SNP(x): # macro - return (((x)&0x00000001)<<22) -SDMA_PKT_PTEPDE_RMW_HEADER_gpa_offset = 0 # macro -SDMA_PKT_PTEPDE_RMW_HEADER_gpa_mask = 0x00000001 # macro -SDMA_PKT_PTEPDE_RMW_HEADER_gpa_shift = 23 # macro -def SDMA_PKT_PTEPDE_RMW_HEADER_GPA(x): # macro - return (((x)&0x00000001)<<23) -SDMA_PKT_PTEPDE_RMW_HEADER_l2_policy_offset = 0 # macro -SDMA_PKT_PTEPDE_RMW_HEADER_l2_policy_mask = 0x00000003 # macro -SDMA_PKT_PTEPDE_RMW_HEADER_l2_policy_shift = 24 # macro -def SDMA_PKT_PTEPDE_RMW_HEADER_L2_POLICY(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_PTEPDE_RMW_HEADER_llc_policy_offset = 0 # macro -SDMA_PKT_PTEPDE_RMW_HEADER_llc_policy_mask = 0x00000001 # macro -SDMA_PKT_PTEPDE_RMW_HEADER_llc_policy_shift = 26 # macro -def SDMA_PKT_PTEPDE_RMW_HEADER_LLC_POLICY(x): # macro - return (((x)&0x00000001)<<26) -SDMA_PKT_PTEPDE_RMW_HEADER_cpv_offset = 0 # macro -SDMA_PKT_PTEPDE_RMW_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_PTEPDE_RMW_HEADER_cpv_shift = 28 # macro -def SDMA_PKT_PTEPDE_RMW_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_PTEPDE_RMW_ADDR_LO_addr_31_0_offset = 1 # macro -SDMA_PKT_PTEPDE_RMW_ADDR_LO_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_PTEPDE_RMW_ADDR_LO_addr_31_0_shift = 0 # macro -def SDMA_PKT_PTEPDE_RMW_ADDR_LO_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_PTEPDE_RMW_ADDR_HI_addr_63_32_offset = 2 # macro -SDMA_PKT_PTEPDE_RMW_ADDR_HI_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_PTEPDE_RMW_ADDR_HI_addr_63_32_shift = 0 # macro -def SDMA_PKT_PTEPDE_RMW_ADDR_HI_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_PTEPDE_RMW_MASK_LO_mask_31_0_offset = 3 # macro -SDMA_PKT_PTEPDE_RMW_MASK_LO_mask_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_PTEPDE_RMW_MASK_LO_mask_31_0_shift = 0 # macro -def SDMA_PKT_PTEPDE_RMW_MASK_LO_MASK_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_PTEPDE_RMW_MASK_HI_mask_63_32_offset = 4 # macro -SDMA_PKT_PTEPDE_RMW_MASK_HI_mask_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_PTEPDE_RMW_MASK_HI_mask_63_32_shift = 0 # macro -def SDMA_PKT_PTEPDE_RMW_MASK_HI_MASK_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_PTEPDE_RMW_VALUE_LO_value_31_0_offset = 5 # macro -SDMA_PKT_PTEPDE_RMW_VALUE_LO_value_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_PTEPDE_RMW_VALUE_LO_value_31_0_shift = 0 # macro -def SDMA_PKT_PTEPDE_RMW_VALUE_LO_VALUE_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_PTEPDE_RMW_VALUE_HI_value_63_32_offset = 6 # macro -SDMA_PKT_PTEPDE_RMW_VALUE_HI_value_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_PTEPDE_RMW_VALUE_HI_value_63_32_shift = 0 # macro -def SDMA_PKT_PTEPDE_RMW_VALUE_HI_VALUE_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_PTEPDE_RMW_COUNT_num_of_pte_offset = 7 # macro -SDMA_PKT_PTEPDE_RMW_COUNT_num_of_pte_mask = 0xFFFFFFFF # macro -SDMA_PKT_PTEPDE_RMW_COUNT_num_of_pte_shift = 0 # macro -def SDMA_PKT_PTEPDE_RMW_COUNT_NUM_OF_PTE(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_REGISTER_RMW_HEADER_op_offset = 0 # macro -SDMA_PKT_REGISTER_RMW_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_REGISTER_RMW_HEADER_op_shift = 0 # macro -def SDMA_PKT_REGISTER_RMW_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_REGISTER_RMW_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_REGISTER_RMW_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_REGISTER_RMW_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_REGISTER_RMW_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_REGISTER_RMW_ADDR_addr_offset = 1 # macro -SDMA_PKT_REGISTER_RMW_ADDR_addr_mask = 0x000FFFFF # macro -SDMA_PKT_REGISTER_RMW_ADDR_addr_shift = 0 # macro -def SDMA_PKT_REGISTER_RMW_ADDR_ADDR(x): # macro - return (((x)&0x000FFFFF)<<0) -SDMA_PKT_REGISTER_RMW_ADDR_aperture_id_offset = 1 # macro -SDMA_PKT_REGISTER_RMW_ADDR_aperture_id_mask = 0x00000FFF # macro -SDMA_PKT_REGISTER_RMW_ADDR_aperture_id_shift = 20 # macro -def SDMA_PKT_REGISTER_RMW_ADDR_APERTURE_ID(x): # macro - return (((x)&0x00000FFF)<<20) -SDMA_PKT_REGISTER_RMW_MASK_mask_offset = 2 # macro -SDMA_PKT_REGISTER_RMW_MASK_mask_mask = 0xFFFFFFFF # macro -SDMA_PKT_REGISTER_RMW_MASK_mask_shift = 0 # macro -def SDMA_PKT_REGISTER_RMW_MASK_MASK(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_REGISTER_RMW_VALUE_value_offset = 3 # macro -SDMA_PKT_REGISTER_RMW_VALUE_value_mask = 0xFFFFFFFF # macro -SDMA_PKT_REGISTER_RMW_VALUE_value_shift = 0 # macro -def SDMA_PKT_REGISTER_RMW_VALUE_VALUE(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_REGISTER_RMW_MISC_stride_offset = 4 # macro -SDMA_PKT_REGISTER_RMW_MISC_stride_mask = 0x000FFFFF # macro -SDMA_PKT_REGISTER_RMW_MISC_stride_shift = 0 # macro -def SDMA_PKT_REGISTER_RMW_MISC_STRIDE(x): # macro - return (((x)&0x000FFFFF)<<0) -SDMA_PKT_REGISTER_RMW_MISC_num_of_reg_offset = 4 # macro -SDMA_PKT_REGISTER_RMW_MISC_num_of_reg_mask = 0x00000FFF # macro -SDMA_PKT_REGISTER_RMW_MISC_num_of_reg_shift = 20 # macro -def SDMA_PKT_REGISTER_RMW_MISC_NUM_OF_REG(x): # macro - return (((x)&0x00000FFF)<<20) -SDMA_PKT_WRITE_INCR_HEADER_op_offset = 0 # macro -SDMA_PKT_WRITE_INCR_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_WRITE_INCR_HEADER_op_shift = 0 # macro -def SDMA_PKT_WRITE_INCR_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_WRITE_INCR_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_WRITE_INCR_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_WRITE_INCR_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_WRITE_INCR_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_WRITE_INCR_HEADER_cache_policy_offset = 0 # macro -SDMA_PKT_WRITE_INCR_HEADER_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_WRITE_INCR_HEADER_cache_policy_shift = 24 # macro -def SDMA_PKT_WRITE_INCR_HEADER_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<24) -SDMA_PKT_WRITE_INCR_HEADER_cpv_offset = 0 # macro -SDMA_PKT_WRITE_INCR_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_WRITE_INCR_HEADER_cpv_shift = 28 # macro -def SDMA_PKT_WRITE_INCR_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_WRITE_INCR_DST_ADDR_LO_dst_addr_31_0_offset = 1 # macro -SDMA_PKT_WRITE_INCR_DST_ADDR_LO_dst_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_WRITE_INCR_DST_ADDR_LO_dst_addr_31_0_shift = 0 # macro -def SDMA_PKT_WRITE_INCR_DST_ADDR_LO_DST_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_WRITE_INCR_DST_ADDR_HI_dst_addr_63_32_offset = 2 # macro -SDMA_PKT_WRITE_INCR_DST_ADDR_HI_dst_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_WRITE_INCR_DST_ADDR_HI_dst_addr_63_32_shift = 0 # macro -def SDMA_PKT_WRITE_INCR_DST_ADDR_HI_DST_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_WRITE_INCR_MASK_DW0_mask_dw0_offset = 3 # macro -SDMA_PKT_WRITE_INCR_MASK_DW0_mask_dw0_mask = 0xFFFFFFFF # macro -SDMA_PKT_WRITE_INCR_MASK_DW0_mask_dw0_shift = 0 # macro -def SDMA_PKT_WRITE_INCR_MASK_DW0_MASK_DW0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_WRITE_INCR_MASK_DW1_mask_dw1_offset = 4 # macro -SDMA_PKT_WRITE_INCR_MASK_DW1_mask_dw1_mask = 0xFFFFFFFF # macro -SDMA_PKT_WRITE_INCR_MASK_DW1_mask_dw1_shift = 0 # macro -def SDMA_PKT_WRITE_INCR_MASK_DW1_MASK_DW1(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_WRITE_INCR_INIT_DW0_init_dw0_offset = 5 # macro -SDMA_PKT_WRITE_INCR_INIT_DW0_init_dw0_mask = 0xFFFFFFFF # macro -SDMA_PKT_WRITE_INCR_INIT_DW0_init_dw0_shift = 0 # macro -def SDMA_PKT_WRITE_INCR_INIT_DW0_INIT_DW0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_WRITE_INCR_INIT_DW1_init_dw1_offset = 6 # macro -SDMA_PKT_WRITE_INCR_INIT_DW1_init_dw1_mask = 0xFFFFFFFF # macro -SDMA_PKT_WRITE_INCR_INIT_DW1_init_dw1_shift = 0 # macro -def SDMA_PKT_WRITE_INCR_INIT_DW1_INIT_DW1(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_WRITE_INCR_INCR_DW0_incr_dw0_offset = 7 # macro -SDMA_PKT_WRITE_INCR_INCR_DW0_incr_dw0_mask = 0xFFFFFFFF # macro -SDMA_PKT_WRITE_INCR_INCR_DW0_incr_dw0_shift = 0 # macro -def SDMA_PKT_WRITE_INCR_INCR_DW0_INCR_DW0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_WRITE_INCR_INCR_DW1_incr_dw1_offset = 8 # macro -SDMA_PKT_WRITE_INCR_INCR_DW1_incr_dw1_mask = 0xFFFFFFFF # macro -SDMA_PKT_WRITE_INCR_INCR_DW1_incr_dw1_shift = 0 # macro -def SDMA_PKT_WRITE_INCR_INCR_DW1_INCR_DW1(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_WRITE_INCR_COUNT_count_offset = 9 # macro -SDMA_PKT_WRITE_INCR_COUNT_count_mask = 0x0007FFFF # macro -SDMA_PKT_WRITE_INCR_COUNT_count_shift = 0 # macro -def SDMA_PKT_WRITE_INCR_COUNT_COUNT(x): # macro - return (((x)&0x0007FFFF)<<0) -SDMA_PKT_INDIRECT_HEADER_op_offset = 0 # macro -SDMA_PKT_INDIRECT_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_INDIRECT_HEADER_op_shift = 0 # macro -def SDMA_PKT_INDIRECT_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_INDIRECT_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_INDIRECT_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_INDIRECT_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_INDIRECT_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_INDIRECT_HEADER_vmid_offset = 0 # macro -SDMA_PKT_INDIRECT_HEADER_vmid_mask = 0x0000000F # macro -SDMA_PKT_INDIRECT_HEADER_vmid_shift = 16 # macro -def SDMA_PKT_INDIRECT_HEADER_VMID(x): # macro - return (((x)&0x0000000F)<<16) -SDMA_PKT_INDIRECT_HEADER_priv_offset = 0 # macro -SDMA_PKT_INDIRECT_HEADER_priv_mask = 0x00000001 # macro -SDMA_PKT_INDIRECT_HEADER_priv_shift = 31 # macro -def SDMA_PKT_INDIRECT_HEADER_PRIV(x): # macro - return (((x)&0x00000001)<<31) -SDMA_PKT_INDIRECT_BASE_LO_ib_base_31_0_offset = 1 # macro -SDMA_PKT_INDIRECT_BASE_LO_ib_base_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_INDIRECT_BASE_LO_ib_base_31_0_shift = 0 # macro -def SDMA_PKT_INDIRECT_BASE_LO_IB_BASE_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_INDIRECT_BASE_HI_ib_base_63_32_offset = 2 # macro -SDMA_PKT_INDIRECT_BASE_HI_ib_base_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_INDIRECT_BASE_HI_ib_base_63_32_shift = 0 # macro -def SDMA_PKT_INDIRECT_BASE_HI_IB_BASE_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_INDIRECT_IB_SIZE_ib_size_offset = 3 # macro -SDMA_PKT_INDIRECT_IB_SIZE_ib_size_mask = 0x000FFFFF # macro -SDMA_PKT_INDIRECT_IB_SIZE_ib_size_shift = 0 # macro -def SDMA_PKT_INDIRECT_IB_SIZE_IB_SIZE(x): # macro - return (((x)&0x000FFFFF)<<0) -SDMA_PKT_INDIRECT_CSA_ADDR_LO_csa_addr_31_0_offset = 4 # macro -SDMA_PKT_INDIRECT_CSA_ADDR_LO_csa_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_INDIRECT_CSA_ADDR_LO_csa_addr_31_0_shift = 0 # macro -def SDMA_PKT_INDIRECT_CSA_ADDR_LO_CSA_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_INDIRECT_CSA_ADDR_HI_csa_addr_63_32_offset = 5 # macro -SDMA_PKT_INDIRECT_CSA_ADDR_HI_csa_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_INDIRECT_CSA_ADDR_HI_csa_addr_63_32_shift = 0 # macro -def SDMA_PKT_INDIRECT_CSA_ADDR_HI_CSA_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_SEMAPHORE_HEADER_op_offset = 0 # macro -SDMA_PKT_SEMAPHORE_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_SEMAPHORE_HEADER_op_shift = 0 # macro -def SDMA_PKT_SEMAPHORE_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_SEMAPHORE_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_SEMAPHORE_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_SEMAPHORE_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_SEMAPHORE_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_SEMAPHORE_HEADER_write_one_offset = 0 # macro -SDMA_PKT_SEMAPHORE_HEADER_write_one_mask = 0x00000001 # macro -SDMA_PKT_SEMAPHORE_HEADER_write_one_shift = 29 # macro -def SDMA_PKT_SEMAPHORE_HEADER_WRITE_ONE(x): # macro - return (((x)&0x00000001)<<29) -SDMA_PKT_SEMAPHORE_HEADER_signal_offset = 0 # macro -SDMA_PKT_SEMAPHORE_HEADER_signal_mask = 0x00000001 # macro -SDMA_PKT_SEMAPHORE_HEADER_signal_shift = 30 # macro -def SDMA_PKT_SEMAPHORE_HEADER_SIGNAL(x): # macro - return (((x)&0x00000001)<<30) -SDMA_PKT_SEMAPHORE_HEADER_mailbox_offset = 0 # macro -SDMA_PKT_SEMAPHORE_HEADER_mailbox_mask = 0x00000001 # macro -SDMA_PKT_SEMAPHORE_HEADER_mailbox_shift = 31 # macro -def SDMA_PKT_SEMAPHORE_HEADER_MAILBOX(x): # macro - return (((x)&0x00000001)<<31) -SDMA_PKT_SEMAPHORE_ADDR_LO_addr_31_0_offset = 1 # macro -SDMA_PKT_SEMAPHORE_ADDR_LO_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_SEMAPHORE_ADDR_LO_addr_31_0_shift = 0 # macro -def SDMA_PKT_SEMAPHORE_ADDR_LO_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_SEMAPHORE_ADDR_HI_addr_63_32_offset = 2 # macro -SDMA_PKT_SEMAPHORE_ADDR_HI_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_SEMAPHORE_ADDR_HI_addr_63_32_shift = 0 # macro -def SDMA_PKT_SEMAPHORE_ADDR_HI_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_MEM_INCR_HEADER_op_offset = 0 # macro -SDMA_PKT_MEM_INCR_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_MEM_INCR_HEADER_op_shift = 0 # macro -def SDMA_PKT_MEM_INCR_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_MEM_INCR_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_MEM_INCR_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_MEM_INCR_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_MEM_INCR_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_MEM_INCR_HEADER_l2_policy_offset = 0 # macro -SDMA_PKT_MEM_INCR_HEADER_l2_policy_mask = 0x00000003 # macro -SDMA_PKT_MEM_INCR_HEADER_l2_policy_shift = 24 # macro -def SDMA_PKT_MEM_INCR_HEADER_L2_POLICY(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_MEM_INCR_HEADER_llc_policy_offset = 0 # macro -SDMA_PKT_MEM_INCR_HEADER_llc_policy_mask = 0x00000001 # macro -SDMA_PKT_MEM_INCR_HEADER_llc_policy_shift = 26 # macro -def SDMA_PKT_MEM_INCR_HEADER_LLC_POLICY(x): # macro - return (((x)&0x00000001)<<26) -SDMA_PKT_MEM_INCR_HEADER_cpv_offset = 0 # macro -SDMA_PKT_MEM_INCR_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_MEM_INCR_HEADER_cpv_shift = 28 # macro -def SDMA_PKT_MEM_INCR_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_MEM_INCR_ADDR_LO_addr_31_0_offset = 1 # macro -SDMA_PKT_MEM_INCR_ADDR_LO_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_MEM_INCR_ADDR_LO_addr_31_0_shift = 0 # macro -def SDMA_PKT_MEM_INCR_ADDR_LO_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_MEM_INCR_ADDR_HI_addr_63_32_offset = 2 # macro -SDMA_PKT_MEM_INCR_ADDR_HI_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_MEM_INCR_ADDR_HI_addr_63_32_shift = 0 # macro -def SDMA_PKT_MEM_INCR_ADDR_HI_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_VM_INVALIDATION_HEADER_op_offset = 0 # macro -SDMA_PKT_VM_INVALIDATION_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_VM_INVALIDATION_HEADER_op_shift = 0 # macro -def SDMA_PKT_VM_INVALIDATION_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_VM_INVALIDATION_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_VM_INVALIDATION_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_VM_INVALIDATION_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_VM_INVALIDATION_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_VM_INVALIDATION_HEADER_gfx_eng_id_offset = 0 # macro -SDMA_PKT_VM_INVALIDATION_HEADER_gfx_eng_id_mask = 0x0000001F # macro -SDMA_PKT_VM_INVALIDATION_HEADER_gfx_eng_id_shift = 16 # macro -def SDMA_PKT_VM_INVALIDATION_HEADER_GFX_ENG_ID(x): # macro - return (((x)&0x0000001F)<<16) -SDMA_PKT_VM_INVALIDATION_HEADER_mm_eng_id_offset = 0 # macro -SDMA_PKT_VM_INVALIDATION_HEADER_mm_eng_id_mask = 0x0000001F # macro -SDMA_PKT_VM_INVALIDATION_HEADER_mm_eng_id_shift = 24 # macro -def SDMA_PKT_VM_INVALIDATION_HEADER_MM_ENG_ID(x): # macro - return (((x)&0x0000001F)<<24) -SDMA_PKT_VM_INVALIDATION_INVALIDATEREQ_invalidatereq_offset = 1 # macro -SDMA_PKT_VM_INVALIDATION_INVALIDATEREQ_invalidatereq_mask = 0xFFFFFFFF # macro -SDMA_PKT_VM_INVALIDATION_INVALIDATEREQ_invalidatereq_shift = 0 # macro -def SDMA_PKT_VM_INVALIDATION_INVALIDATEREQ_INVALIDATEREQ(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_VM_INVALIDATION_ADDRESSRANGELO_addressrangelo_offset = 2 # macro -SDMA_PKT_VM_INVALIDATION_ADDRESSRANGELO_addressrangelo_mask = 0xFFFFFFFF # macro -SDMA_PKT_VM_INVALIDATION_ADDRESSRANGELO_addressrangelo_shift = 0 # macro -def SDMA_PKT_VM_INVALIDATION_ADDRESSRANGELO_ADDRESSRANGELO(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_invalidateack_offset = 3 # macro -SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_invalidateack_mask = 0x0000FFFF # macro -SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_invalidateack_shift = 0 # macro -def SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_INVALIDATEACK(x): # macro - return (((x)&0x0000FFFF)<<0) -SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_addressrangehi_offset = 3 # macro -SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_addressrangehi_mask = 0x0000001F # macro -SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_addressrangehi_shift = 16 # macro -def SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_ADDRESSRANGEHI(x): # macro - return (((x)&0x0000001F)<<16) -SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_reserved_offset = 3 # macro -SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_reserved_mask = 0x000001FF # macro -SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_reserved_shift = 23 # macro -def SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_RESERVED(x): # macro - return (((x)&0x000001FF)<<23) -SDMA_PKT_FENCE_HEADER_op_offset = 0 # macro -SDMA_PKT_FENCE_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_FENCE_HEADER_op_shift = 0 # macro -def SDMA_PKT_FENCE_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_FENCE_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_FENCE_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_FENCE_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_FENCE_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_FENCE_HEADER_mtype_offset = 0 # macro -SDMA_PKT_FENCE_HEADER_mtype_mask = 0x00000007 # macro -SDMA_PKT_FENCE_HEADER_mtype_shift = 16 # macro -def SDMA_PKT_FENCE_HEADER_MTYPE(x): # macro - return (((x)&0x00000007)<<16) -SDMA_PKT_FENCE_HEADER_gcc_offset = 0 # macro -SDMA_PKT_FENCE_HEADER_gcc_mask = 0x00000001 # macro -SDMA_PKT_FENCE_HEADER_gcc_shift = 19 # macro -def SDMA_PKT_FENCE_HEADER_GCC(x): # macro - return (((x)&0x00000001)<<19) -SDMA_PKT_FENCE_HEADER_sys_offset = 0 # macro -SDMA_PKT_FENCE_HEADER_sys_mask = 0x00000001 # macro -SDMA_PKT_FENCE_HEADER_sys_shift = 20 # macro -def SDMA_PKT_FENCE_HEADER_SYS(x): # macro - return (((x)&0x00000001)<<20) -SDMA_PKT_FENCE_HEADER_snp_offset = 0 # macro -SDMA_PKT_FENCE_HEADER_snp_mask = 0x00000001 # macro -SDMA_PKT_FENCE_HEADER_snp_shift = 22 # macro -def SDMA_PKT_FENCE_HEADER_SNP(x): # macro - return (((x)&0x00000001)<<22) -SDMA_PKT_FENCE_HEADER_gpa_offset = 0 # macro -SDMA_PKT_FENCE_HEADER_gpa_mask = 0x00000001 # macro -SDMA_PKT_FENCE_HEADER_gpa_shift = 23 # macro -def SDMA_PKT_FENCE_HEADER_GPA(x): # macro - return (((x)&0x00000001)<<23) -SDMA_PKT_FENCE_HEADER_l2_policy_offset = 0 # macro -SDMA_PKT_FENCE_HEADER_l2_policy_mask = 0x00000003 # macro -SDMA_PKT_FENCE_HEADER_l2_policy_shift = 24 # macro -def SDMA_PKT_FENCE_HEADER_L2_POLICY(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_FENCE_HEADER_llc_policy_offset = 0 # macro -SDMA_PKT_FENCE_HEADER_llc_policy_mask = 0x00000001 # macro -SDMA_PKT_FENCE_HEADER_llc_policy_shift = 26 # macro -def SDMA_PKT_FENCE_HEADER_LLC_POLICY(x): # macro - return (((x)&0x00000001)<<26) -SDMA_PKT_FENCE_HEADER_cpv_offset = 0 # macro -SDMA_PKT_FENCE_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_FENCE_HEADER_cpv_shift = 28 # macro -def SDMA_PKT_FENCE_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_FENCE_ADDR_LO_addr_31_0_offset = 1 # macro -SDMA_PKT_FENCE_ADDR_LO_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_FENCE_ADDR_LO_addr_31_0_shift = 0 # macro -def SDMA_PKT_FENCE_ADDR_LO_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_FENCE_ADDR_HI_addr_63_32_offset = 2 # macro -SDMA_PKT_FENCE_ADDR_HI_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_FENCE_ADDR_HI_addr_63_32_shift = 0 # macro -def SDMA_PKT_FENCE_ADDR_HI_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_FENCE_DATA_data_offset = 3 # macro -SDMA_PKT_FENCE_DATA_data_mask = 0xFFFFFFFF # macro -SDMA_PKT_FENCE_DATA_data_shift = 0 # macro -def SDMA_PKT_FENCE_DATA_DATA(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_SRBM_WRITE_HEADER_op_offset = 0 # macro -SDMA_PKT_SRBM_WRITE_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_SRBM_WRITE_HEADER_op_shift = 0 # macro -def SDMA_PKT_SRBM_WRITE_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_SRBM_WRITE_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_SRBM_WRITE_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_SRBM_WRITE_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_SRBM_WRITE_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_SRBM_WRITE_HEADER_byte_en_offset = 0 # macro -SDMA_PKT_SRBM_WRITE_HEADER_byte_en_mask = 0x0000000F # macro -SDMA_PKT_SRBM_WRITE_HEADER_byte_en_shift = 28 # macro -def SDMA_PKT_SRBM_WRITE_HEADER_BYTE_EN(x): # macro - return (((x)&0x0000000F)<<28) -SDMA_PKT_SRBM_WRITE_ADDR_addr_offset = 1 # macro -SDMA_PKT_SRBM_WRITE_ADDR_addr_mask = 0x0003FFFF # macro -SDMA_PKT_SRBM_WRITE_ADDR_addr_shift = 0 # macro -def SDMA_PKT_SRBM_WRITE_ADDR_ADDR(x): # macro - return (((x)&0x0003FFFF)<<0) -SDMA_PKT_SRBM_WRITE_ADDR_apertureid_offset = 1 # macro -SDMA_PKT_SRBM_WRITE_ADDR_apertureid_mask = 0x00000FFF # macro -SDMA_PKT_SRBM_WRITE_ADDR_apertureid_shift = 20 # macro -def SDMA_PKT_SRBM_WRITE_ADDR_APERTUREID(x): # macro - return (((x)&0x00000FFF)<<20) -SDMA_PKT_SRBM_WRITE_DATA_data_offset = 2 # macro -SDMA_PKT_SRBM_WRITE_DATA_data_mask = 0xFFFFFFFF # macro -SDMA_PKT_SRBM_WRITE_DATA_data_shift = 0 # macro -def SDMA_PKT_SRBM_WRITE_DATA_DATA(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_PRE_EXE_HEADER_op_offset = 0 # macro -SDMA_PKT_PRE_EXE_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_PRE_EXE_HEADER_op_shift = 0 # macro -def SDMA_PKT_PRE_EXE_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_PRE_EXE_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_PRE_EXE_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_PRE_EXE_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_PRE_EXE_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_PRE_EXE_HEADER_dev_sel_offset = 0 # macro -SDMA_PKT_PRE_EXE_HEADER_dev_sel_mask = 0x000000FF # macro -SDMA_PKT_PRE_EXE_HEADER_dev_sel_shift = 16 # macro -def SDMA_PKT_PRE_EXE_HEADER_DEV_SEL(x): # macro - return (((x)&0x000000FF)<<16) -SDMA_PKT_PRE_EXE_EXEC_COUNT_exec_count_offset = 1 # macro -SDMA_PKT_PRE_EXE_EXEC_COUNT_exec_count_mask = 0x00003FFF # macro -SDMA_PKT_PRE_EXE_EXEC_COUNT_exec_count_shift = 0 # macro -def SDMA_PKT_PRE_EXE_EXEC_COUNT_EXEC_COUNT(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_COND_EXE_HEADER_op_offset = 0 # macro -SDMA_PKT_COND_EXE_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_COND_EXE_HEADER_op_shift = 0 # macro -def SDMA_PKT_COND_EXE_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_COND_EXE_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_COND_EXE_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_COND_EXE_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_COND_EXE_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_COND_EXE_HEADER_cache_policy_offset = 0 # macro -SDMA_PKT_COND_EXE_HEADER_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_COND_EXE_HEADER_cache_policy_shift = 24 # macro -def SDMA_PKT_COND_EXE_HEADER_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<24) -SDMA_PKT_COND_EXE_HEADER_cpv_offset = 0 # macro -SDMA_PKT_COND_EXE_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_COND_EXE_HEADER_cpv_shift = 28 # macro -def SDMA_PKT_COND_EXE_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_COND_EXE_ADDR_LO_addr_31_0_offset = 1 # macro -SDMA_PKT_COND_EXE_ADDR_LO_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_COND_EXE_ADDR_LO_addr_31_0_shift = 0 # macro -def SDMA_PKT_COND_EXE_ADDR_LO_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COND_EXE_ADDR_HI_addr_63_32_offset = 2 # macro -SDMA_PKT_COND_EXE_ADDR_HI_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_COND_EXE_ADDR_HI_addr_63_32_shift = 0 # macro -def SDMA_PKT_COND_EXE_ADDR_HI_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COND_EXE_REFERENCE_reference_offset = 3 # macro -SDMA_PKT_COND_EXE_REFERENCE_reference_mask = 0xFFFFFFFF # macro -SDMA_PKT_COND_EXE_REFERENCE_reference_shift = 0 # macro -def SDMA_PKT_COND_EXE_REFERENCE_REFERENCE(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_COND_EXE_EXEC_COUNT_exec_count_offset = 4 # macro -SDMA_PKT_COND_EXE_EXEC_COUNT_exec_count_mask = 0x00003FFF # macro -SDMA_PKT_COND_EXE_EXEC_COUNT_exec_count_shift = 0 # macro -def SDMA_PKT_COND_EXE_EXEC_COUNT_EXEC_COUNT(x): # macro - return (((x)&0x00003FFF)<<0) -SDMA_PKT_CONSTANT_FILL_HEADER_op_offset = 0 # macro -SDMA_PKT_CONSTANT_FILL_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_CONSTANT_FILL_HEADER_op_shift = 0 # macro -def SDMA_PKT_CONSTANT_FILL_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_CONSTANT_FILL_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_CONSTANT_FILL_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_CONSTANT_FILL_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_CONSTANT_FILL_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_CONSTANT_FILL_HEADER_sw_offset = 0 # macro -SDMA_PKT_CONSTANT_FILL_HEADER_sw_mask = 0x00000003 # macro -SDMA_PKT_CONSTANT_FILL_HEADER_sw_shift = 16 # macro -def SDMA_PKT_CONSTANT_FILL_HEADER_SW(x): # macro - return (((x)&0x00000003)<<16) -SDMA_PKT_CONSTANT_FILL_HEADER_cache_policy_offset = 0 # macro -SDMA_PKT_CONSTANT_FILL_HEADER_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_CONSTANT_FILL_HEADER_cache_policy_shift = 24 # macro -def SDMA_PKT_CONSTANT_FILL_HEADER_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<24) -SDMA_PKT_CONSTANT_FILL_HEADER_cpv_offset = 0 # macro -SDMA_PKT_CONSTANT_FILL_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_CONSTANT_FILL_HEADER_cpv_shift = 28 # macro -def SDMA_PKT_CONSTANT_FILL_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_CONSTANT_FILL_HEADER_fillsize_offset = 0 # macro -SDMA_PKT_CONSTANT_FILL_HEADER_fillsize_mask = 0x00000003 # macro -SDMA_PKT_CONSTANT_FILL_HEADER_fillsize_shift = 30 # macro -def SDMA_PKT_CONSTANT_FILL_HEADER_FILLSIZE(x): # macro - return (((x)&0x00000003)<<30) -SDMA_PKT_CONSTANT_FILL_DST_ADDR_LO_dst_addr_31_0_offset = 1 # macro -SDMA_PKT_CONSTANT_FILL_DST_ADDR_LO_dst_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_CONSTANT_FILL_DST_ADDR_LO_dst_addr_31_0_shift = 0 # macro -def SDMA_PKT_CONSTANT_FILL_DST_ADDR_LO_DST_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_CONSTANT_FILL_DST_ADDR_HI_dst_addr_63_32_offset = 2 # macro -SDMA_PKT_CONSTANT_FILL_DST_ADDR_HI_dst_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_CONSTANT_FILL_DST_ADDR_HI_dst_addr_63_32_shift = 0 # macro -def SDMA_PKT_CONSTANT_FILL_DST_ADDR_HI_DST_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_CONSTANT_FILL_DATA_src_data_31_0_offset = 3 # macro -SDMA_PKT_CONSTANT_FILL_DATA_src_data_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_CONSTANT_FILL_DATA_src_data_31_0_shift = 0 # macro -def SDMA_PKT_CONSTANT_FILL_DATA_SRC_DATA_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_CONSTANT_FILL_COUNT_count_offset = 4 # macro -SDMA_PKT_CONSTANT_FILL_COUNT_count_mask = 0x3FFFFFFF # macro -SDMA_PKT_CONSTANT_FILL_COUNT_count_shift = 0 # macro -def SDMA_PKT_CONSTANT_FILL_COUNT_COUNT(x): # macro - return (((x)&0x3FFFFFFF)<<0) -SDMA_PKT_DATA_FILL_MULTI_HEADER_op_offset = 0 # macro -SDMA_PKT_DATA_FILL_MULTI_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_DATA_FILL_MULTI_HEADER_op_shift = 0 # macro -def SDMA_PKT_DATA_FILL_MULTI_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_DATA_FILL_MULTI_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_DATA_FILL_MULTI_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_DATA_FILL_MULTI_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_DATA_FILL_MULTI_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_DATA_FILL_MULTI_HEADER_cache_policy_offset = 0 # macro -SDMA_PKT_DATA_FILL_MULTI_HEADER_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_DATA_FILL_MULTI_HEADER_cache_policy_shift = 24 # macro -def SDMA_PKT_DATA_FILL_MULTI_HEADER_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<24) -SDMA_PKT_DATA_FILL_MULTI_HEADER_cpv_offset = 0 # macro -SDMA_PKT_DATA_FILL_MULTI_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_DATA_FILL_MULTI_HEADER_cpv_shift = 28 # macro -def SDMA_PKT_DATA_FILL_MULTI_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_DATA_FILL_MULTI_HEADER_memlog_clr_offset = 0 # macro -SDMA_PKT_DATA_FILL_MULTI_HEADER_memlog_clr_mask = 0x00000001 # macro -SDMA_PKT_DATA_FILL_MULTI_HEADER_memlog_clr_shift = 31 # macro -def SDMA_PKT_DATA_FILL_MULTI_HEADER_MEMLOG_CLR(x): # macro - return (((x)&0x00000001)<<31) -SDMA_PKT_DATA_FILL_MULTI_BYTE_STRIDE_byte_stride_offset = 1 # macro -SDMA_PKT_DATA_FILL_MULTI_BYTE_STRIDE_byte_stride_mask = 0xFFFFFFFF # macro -SDMA_PKT_DATA_FILL_MULTI_BYTE_STRIDE_byte_stride_shift = 0 # macro -def SDMA_PKT_DATA_FILL_MULTI_BYTE_STRIDE_BYTE_STRIDE(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_DATA_FILL_MULTI_DMA_COUNT_dma_count_offset = 2 # macro -SDMA_PKT_DATA_FILL_MULTI_DMA_COUNT_dma_count_mask = 0xFFFFFFFF # macro -SDMA_PKT_DATA_FILL_MULTI_DMA_COUNT_dma_count_shift = 0 # macro -def SDMA_PKT_DATA_FILL_MULTI_DMA_COUNT_DMA_COUNT(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_DATA_FILL_MULTI_DST_ADDR_LO_dst_addr_31_0_offset = 3 # macro -SDMA_PKT_DATA_FILL_MULTI_DST_ADDR_LO_dst_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_DATA_FILL_MULTI_DST_ADDR_LO_dst_addr_31_0_shift = 0 # macro -def SDMA_PKT_DATA_FILL_MULTI_DST_ADDR_LO_DST_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_DATA_FILL_MULTI_DST_ADDR_HI_dst_addr_63_32_offset = 4 # macro -SDMA_PKT_DATA_FILL_MULTI_DST_ADDR_HI_dst_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_DATA_FILL_MULTI_DST_ADDR_HI_dst_addr_63_32_shift = 0 # macro -def SDMA_PKT_DATA_FILL_MULTI_DST_ADDR_HI_DST_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_DATA_FILL_MULTI_BYTE_COUNT_count_offset = 5 # macro -SDMA_PKT_DATA_FILL_MULTI_BYTE_COUNT_count_mask = 0x03FFFFFF # macro -SDMA_PKT_DATA_FILL_MULTI_BYTE_COUNT_count_shift = 0 # macro -def SDMA_PKT_DATA_FILL_MULTI_BYTE_COUNT_COUNT(x): # macro - return (((x)&0x03FFFFFF)<<0) -SDMA_PKT_POLL_REGMEM_HEADER_op_offset = 0 # macro -SDMA_PKT_POLL_REGMEM_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_POLL_REGMEM_HEADER_op_shift = 0 # macro -def SDMA_PKT_POLL_REGMEM_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_POLL_REGMEM_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_POLL_REGMEM_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_POLL_REGMEM_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_POLL_REGMEM_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_POLL_REGMEM_HEADER_cache_policy_offset = 0 # macro -SDMA_PKT_POLL_REGMEM_HEADER_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_POLL_REGMEM_HEADER_cache_policy_shift = 20 # macro -def SDMA_PKT_POLL_REGMEM_HEADER_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<20) -SDMA_PKT_POLL_REGMEM_HEADER_cpv_offset = 0 # macro -SDMA_PKT_POLL_REGMEM_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_POLL_REGMEM_HEADER_cpv_shift = 24 # macro -def SDMA_PKT_POLL_REGMEM_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<24) -SDMA_PKT_POLL_REGMEM_HEADER_hdp_flush_offset = 0 # macro -SDMA_PKT_POLL_REGMEM_HEADER_hdp_flush_mask = 0x00000001 # macro -SDMA_PKT_POLL_REGMEM_HEADER_hdp_flush_shift = 26 # macro -def SDMA_PKT_POLL_REGMEM_HEADER_HDP_FLUSH(x): # macro - return (((x)&0x00000001)<<26) -SDMA_PKT_POLL_REGMEM_HEADER_func_offset = 0 # macro -SDMA_PKT_POLL_REGMEM_HEADER_func_mask = 0x00000007 # macro -SDMA_PKT_POLL_REGMEM_HEADER_func_shift = 28 # macro -def SDMA_PKT_POLL_REGMEM_HEADER_FUNC(x): # macro - return (((x)&0x00000007)<<28) -SDMA_PKT_POLL_REGMEM_HEADER_mem_poll_offset = 0 # macro -SDMA_PKT_POLL_REGMEM_HEADER_mem_poll_mask = 0x00000001 # macro -SDMA_PKT_POLL_REGMEM_HEADER_mem_poll_shift = 31 # macro -def SDMA_PKT_POLL_REGMEM_HEADER_MEM_POLL(x): # macro - return (((x)&0x00000001)<<31) -SDMA_PKT_POLL_REGMEM_ADDR_LO_addr_31_0_offset = 1 # macro -SDMA_PKT_POLL_REGMEM_ADDR_LO_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_REGMEM_ADDR_LO_addr_31_0_shift = 0 # macro -def SDMA_PKT_POLL_REGMEM_ADDR_LO_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_REGMEM_ADDR_HI_addr_63_32_offset = 2 # macro -SDMA_PKT_POLL_REGMEM_ADDR_HI_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_REGMEM_ADDR_HI_addr_63_32_shift = 0 # macro -def SDMA_PKT_POLL_REGMEM_ADDR_HI_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_REGMEM_VALUE_value_offset = 3 # macro -SDMA_PKT_POLL_REGMEM_VALUE_value_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_REGMEM_VALUE_value_shift = 0 # macro -def SDMA_PKT_POLL_REGMEM_VALUE_VALUE(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_REGMEM_MASK_mask_offset = 4 # macro -SDMA_PKT_POLL_REGMEM_MASK_mask_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_REGMEM_MASK_mask_shift = 0 # macro -def SDMA_PKT_POLL_REGMEM_MASK_MASK(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_REGMEM_DW5_interval_offset = 5 # macro -SDMA_PKT_POLL_REGMEM_DW5_interval_mask = 0x0000FFFF # macro -SDMA_PKT_POLL_REGMEM_DW5_interval_shift = 0 # macro -def SDMA_PKT_POLL_REGMEM_DW5_INTERVAL(x): # macro - return (((x)&0x0000FFFF)<<0) -SDMA_PKT_POLL_REGMEM_DW5_retry_count_offset = 5 # macro -SDMA_PKT_POLL_REGMEM_DW5_retry_count_mask = 0x00000FFF # macro -SDMA_PKT_POLL_REGMEM_DW5_retry_count_shift = 16 # macro -def SDMA_PKT_POLL_REGMEM_DW5_RETRY_COUNT(x): # macro - return (((x)&0x00000FFF)<<16) -SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_op_offset = 0 # macro -SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_op_shift = 0 # macro -def SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_cache_policy_offset = 0 # macro -SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_cache_policy_shift = 24 # macro -def SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<24) -SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_cpv_offset = 0 # macro -SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_cpv_shift = 28 # macro -def SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_POLL_REG_WRITE_MEM_SRC_ADDR_addr_31_2_offset = 1 # macro -SDMA_PKT_POLL_REG_WRITE_MEM_SRC_ADDR_addr_31_2_mask = 0x3FFFFFFF # macro -SDMA_PKT_POLL_REG_WRITE_MEM_SRC_ADDR_addr_31_2_shift = 2 # macro -def SDMA_PKT_POLL_REG_WRITE_MEM_SRC_ADDR_ADDR_31_2(x): # macro - return (((x)&0x3FFFFFFF)<<2) -SDMA_PKT_POLL_REG_WRITE_MEM_DST_ADDR_LO_addr_31_0_offset = 2 # macro -SDMA_PKT_POLL_REG_WRITE_MEM_DST_ADDR_LO_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_REG_WRITE_MEM_DST_ADDR_LO_addr_31_0_shift = 0 # macro -def SDMA_PKT_POLL_REG_WRITE_MEM_DST_ADDR_LO_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_REG_WRITE_MEM_DST_ADDR_HI_addr_63_32_offset = 3 # macro -SDMA_PKT_POLL_REG_WRITE_MEM_DST_ADDR_HI_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_REG_WRITE_MEM_DST_ADDR_HI_addr_63_32_shift = 0 # macro -def SDMA_PKT_POLL_REG_WRITE_MEM_DST_ADDR_HI_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_op_offset = 0 # macro -SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_op_shift = 0 # macro -def SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_ea_offset = 0 # macro -SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_ea_mask = 0x00000003 # macro -SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_ea_shift = 16 # macro -def SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_EA(x): # macro - return (((x)&0x00000003)<<16) -SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_cache_policy_offset = 0 # macro -SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_cache_policy_shift = 24 # macro -def SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<24) -SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_cpv_offset = 0 # macro -SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_cpv_shift = 28 # macro -def SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_POLL_DBIT_WRITE_MEM_DST_ADDR_LO_addr_31_0_offset = 1 # macro -SDMA_PKT_POLL_DBIT_WRITE_MEM_DST_ADDR_LO_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_DBIT_WRITE_MEM_DST_ADDR_LO_addr_31_0_shift = 0 # macro -def SDMA_PKT_POLL_DBIT_WRITE_MEM_DST_ADDR_LO_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_DBIT_WRITE_MEM_DST_ADDR_HI_addr_63_32_offset = 2 # macro -SDMA_PKT_POLL_DBIT_WRITE_MEM_DST_ADDR_HI_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_DBIT_WRITE_MEM_DST_ADDR_HI_addr_63_32_shift = 0 # macro -def SDMA_PKT_POLL_DBIT_WRITE_MEM_DST_ADDR_HI_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_DBIT_WRITE_MEM_START_PAGE_addr_31_4_offset = 3 # macro -SDMA_PKT_POLL_DBIT_WRITE_MEM_START_PAGE_addr_31_4_mask = 0x0FFFFFFF # macro -SDMA_PKT_POLL_DBIT_WRITE_MEM_START_PAGE_addr_31_4_shift = 4 # macro -def SDMA_PKT_POLL_DBIT_WRITE_MEM_START_PAGE_ADDR_31_4(x): # macro - return (((x)&0x0FFFFFFF)<<4) -SDMA_PKT_POLL_DBIT_WRITE_MEM_PAGE_NUM_page_num_31_0_offset = 4 # macro -SDMA_PKT_POLL_DBIT_WRITE_MEM_PAGE_NUM_page_num_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_DBIT_WRITE_MEM_PAGE_NUM_page_num_31_0_shift = 0 # macro -def SDMA_PKT_POLL_DBIT_WRITE_MEM_PAGE_NUM_PAGE_NUM_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_MEM_VERIFY_HEADER_op_offset = 0 # macro -SDMA_PKT_POLL_MEM_VERIFY_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_POLL_MEM_VERIFY_HEADER_op_shift = 0 # macro -def SDMA_PKT_POLL_MEM_VERIFY_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_POLL_MEM_VERIFY_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_POLL_MEM_VERIFY_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_POLL_MEM_VERIFY_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_POLL_MEM_VERIFY_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_POLL_MEM_VERIFY_HEADER_cache_policy_offset = 0 # macro -SDMA_PKT_POLL_MEM_VERIFY_HEADER_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_POLL_MEM_VERIFY_HEADER_cache_policy_shift = 24 # macro -def SDMA_PKT_POLL_MEM_VERIFY_HEADER_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<24) -SDMA_PKT_POLL_MEM_VERIFY_HEADER_cpv_offset = 0 # macro -SDMA_PKT_POLL_MEM_VERIFY_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_POLL_MEM_VERIFY_HEADER_cpv_shift = 28 # macro -def SDMA_PKT_POLL_MEM_VERIFY_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_POLL_MEM_VERIFY_HEADER_mode_offset = 0 # macro -SDMA_PKT_POLL_MEM_VERIFY_HEADER_mode_mask = 0x00000001 # macro -SDMA_PKT_POLL_MEM_VERIFY_HEADER_mode_shift = 31 # macro -def SDMA_PKT_POLL_MEM_VERIFY_HEADER_MODE(x): # macro - return (((x)&0x00000001)<<31) -SDMA_PKT_POLL_MEM_VERIFY_PATTERN_pattern_offset = 1 # macro -SDMA_PKT_POLL_MEM_VERIFY_PATTERN_pattern_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_MEM_VERIFY_PATTERN_pattern_shift = 0 # macro -def SDMA_PKT_POLL_MEM_VERIFY_PATTERN_PATTERN(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_START_LO_cmp0_start_31_0_offset = 2 # macro -SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_START_LO_cmp0_start_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_START_LO_cmp0_start_31_0_shift = 0 # macro -def SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_START_LO_CMP0_START_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_START_HI_cmp0_start_63_32_offset = 3 # macro -SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_START_HI_cmp0_start_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_START_HI_cmp0_start_63_32_shift = 0 # macro -def SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_START_HI_CMP0_START_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_END_LO_cmp0_end_31_0_offset = 4 # macro -SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_END_LO_cmp0_end_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_END_LO_cmp0_end_31_0_shift = 0 # macro -def SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_END_LO_CMP0_END_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_END_HI_cmp0_end_63_32_offset = 5 # macro -SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_END_HI_cmp0_end_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_END_HI_cmp0_end_63_32_shift = 0 # macro -def SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_END_HI_CMP0_END_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_START_LO_cmp1_start_31_0_offset = 6 # macro -SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_START_LO_cmp1_start_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_START_LO_cmp1_start_31_0_shift = 0 # macro -def SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_START_LO_CMP1_START_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_START_HI_cmp1_start_63_32_offset = 7 # macro -SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_START_HI_cmp1_start_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_START_HI_cmp1_start_63_32_shift = 0 # macro -def SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_START_HI_CMP1_START_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_END_LO_cmp1_end_31_0_offset = 8 # macro -SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_END_LO_cmp1_end_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_END_LO_cmp1_end_31_0_shift = 0 # macro -def SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_END_LO_CMP1_END_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_END_HI_cmp1_end_63_32_offset = 9 # macro -SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_END_HI_cmp1_end_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_END_HI_cmp1_end_63_32_shift = 0 # macro -def SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_END_HI_CMP1_END_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_MEM_VERIFY_REC_ADDR_LO_rec_31_0_offset = 10 # macro -SDMA_PKT_POLL_MEM_VERIFY_REC_ADDR_LO_rec_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_MEM_VERIFY_REC_ADDR_LO_rec_31_0_shift = 0 # macro -def SDMA_PKT_POLL_MEM_VERIFY_REC_ADDR_LO_REC_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_MEM_VERIFY_REC_ADDR_HI_rec_63_32_offset = 11 # macro -SDMA_PKT_POLL_MEM_VERIFY_REC_ADDR_HI_rec_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_MEM_VERIFY_REC_ADDR_HI_rec_63_32_shift = 0 # macro -def SDMA_PKT_POLL_MEM_VERIFY_REC_ADDR_HI_REC_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_POLL_MEM_VERIFY_RESERVED_reserved_offset = 12 # macro -SDMA_PKT_POLL_MEM_VERIFY_RESERVED_reserved_mask = 0xFFFFFFFF # macro -SDMA_PKT_POLL_MEM_VERIFY_RESERVED_reserved_shift = 0 # macro -def SDMA_PKT_POLL_MEM_VERIFY_RESERVED_RESERVED(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_ATOMIC_HEADER_op_offset = 0 # macro -SDMA_PKT_ATOMIC_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_ATOMIC_HEADER_op_shift = 0 # macro -def SDMA_PKT_ATOMIC_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_ATOMIC_HEADER_loop_offset = 0 # macro -SDMA_PKT_ATOMIC_HEADER_loop_mask = 0x00000001 # macro -SDMA_PKT_ATOMIC_HEADER_loop_shift = 16 # macro -def SDMA_PKT_ATOMIC_HEADER_LOOP(x): # macro - return (((x)&0x00000001)<<16) -SDMA_PKT_ATOMIC_HEADER_tmz_offset = 0 # macro -SDMA_PKT_ATOMIC_HEADER_tmz_mask = 0x00000001 # macro -SDMA_PKT_ATOMIC_HEADER_tmz_shift = 18 # macro -def SDMA_PKT_ATOMIC_HEADER_TMZ(x): # macro - return (((x)&0x00000001)<<18) -SDMA_PKT_ATOMIC_HEADER_cache_policy_offset = 0 # macro -SDMA_PKT_ATOMIC_HEADER_cache_policy_mask = 0x00000007 # macro -SDMA_PKT_ATOMIC_HEADER_cache_policy_shift = 20 # macro -def SDMA_PKT_ATOMIC_HEADER_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<20) -SDMA_PKT_ATOMIC_HEADER_cpv_offset = 0 # macro -SDMA_PKT_ATOMIC_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_ATOMIC_HEADER_cpv_shift = 24 # macro -def SDMA_PKT_ATOMIC_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<24) -SDMA_PKT_ATOMIC_HEADER_atomic_op_offset = 0 # macro -SDMA_PKT_ATOMIC_HEADER_atomic_op_mask = 0x0000007F # macro -SDMA_PKT_ATOMIC_HEADER_atomic_op_shift = 25 # macro -def SDMA_PKT_ATOMIC_HEADER_ATOMIC_OP(x): # macro - return (((x)&0x0000007F)<<25) -SDMA_PKT_ATOMIC_ADDR_LO_addr_31_0_offset = 1 # macro -SDMA_PKT_ATOMIC_ADDR_LO_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_ATOMIC_ADDR_LO_addr_31_0_shift = 0 # macro -def SDMA_PKT_ATOMIC_ADDR_LO_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_ATOMIC_ADDR_HI_addr_63_32_offset = 2 # macro -SDMA_PKT_ATOMIC_ADDR_HI_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_ATOMIC_ADDR_HI_addr_63_32_shift = 0 # macro -def SDMA_PKT_ATOMIC_ADDR_HI_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_ATOMIC_SRC_DATA_LO_src_data_31_0_offset = 3 # macro -SDMA_PKT_ATOMIC_SRC_DATA_LO_src_data_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_ATOMIC_SRC_DATA_LO_src_data_31_0_shift = 0 # macro -def SDMA_PKT_ATOMIC_SRC_DATA_LO_SRC_DATA_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_ATOMIC_SRC_DATA_HI_src_data_63_32_offset = 4 # macro -SDMA_PKT_ATOMIC_SRC_DATA_HI_src_data_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_ATOMIC_SRC_DATA_HI_src_data_63_32_shift = 0 # macro -def SDMA_PKT_ATOMIC_SRC_DATA_HI_SRC_DATA_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_ATOMIC_CMP_DATA_LO_cmp_data_31_0_offset = 5 # macro -SDMA_PKT_ATOMIC_CMP_DATA_LO_cmp_data_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_ATOMIC_CMP_DATA_LO_cmp_data_31_0_shift = 0 # macro -def SDMA_PKT_ATOMIC_CMP_DATA_LO_CMP_DATA_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_ATOMIC_CMP_DATA_HI_cmp_data_63_32_offset = 6 # macro -SDMA_PKT_ATOMIC_CMP_DATA_HI_cmp_data_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_ATOMIC_CMP_DATA_HI_cmp_data_63_32_shift = 0 # macro -def SDMA_PKT_ATOMIC_CMP_DATA_HI_CMP_DATA_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_ATOMIC_LOOP_INTERVAL_loop_interval_offset = 7 # macro -SDMA_PKT_ATOMIC_LOOP_INTERVAL_loop_interval_mask = 0x00001FFF # macro -SDMA_PKT_ATOMIC_LOOP_INTERVAL_loop_interval_shift = 0 # macro -def SDMA_PKT_ATOMIC_LOOP_INTERVAL_LOOP_INTERVAL(x): # macro - return (((x)&0x00001FFF)<<0) -SDMA_PKT_TIMESTAMP_SET_HEADER_op_offset = 0 # macro -SDMA_PKT_TIMESTAMP_SET_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_TIMESTAMP_SET_HEADER_op_shift = 0 # macro -def SDMA_PKT_TIMESTAMP_SET_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_TIMESTAMP_SET_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_TIMESTAMP_SET_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_TIMESTAMP_SET_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_TIMESTAMP_SET_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_TIMESTAMP_SET_INIT_DATA_LO_init_data_31_0_offset = 1 # macro -SDMA_PKT_TIMESTAMP_SET_INIT_DATA_LO_init_data_31_0_mask = 0xFFFFFFFF # macro -SDMA_PKT_TIMESTAMP_SET_INIT_DATA_LO_init_data_31_0_shift = 0 # macro -def SDMA_PKT_TIMESTAMP_SET_INIT_DATA_LO_INIT_DATA_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_TIMESTAMP_SET_INIT_DATA_HI_init_data_63_32_offset = 2 # macro -SDMA_PKT_TIMESTAMP_SET_INIT_DATA_HI_init_data_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_TIMESTAMP_SET_INIT_DATA_HI_init_data_63_32_shift = 0 # macro -def SDMA_PKT_TIMESTAMP_SET_INIT_DATA_HI_INIT_DATA_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_TIMESTAMP_GET_HEADER_op_offset = 0 # macro -SDMA_PKT_TIMESTAMP_GET_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_TIMESTAMP_GET_HEADER_op_shift = 0 # macro -def SDMA_PKT_TIMESTAMP_GET_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_TIMESTAMP_GET_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_TIMESTAMP_GET_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_TIMESTAMP_GET_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_TIMESTAMP_GET_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_TIMESTAMP_GET_HEADER_l2_policy_offset = 0 # macro -SDMA_PKT_TIMESTAMP_GET_HEADER_l2_policy_mask = 0x00000003 # macro -SDMA_PKT_TIMESTAMP_GET_HEADER_l2_policy_shift = 24 # macro -def SDMA_PKT_TIMESTAMP_GET_HEADER_L2_POLICY(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_TIMESTAMP_GET_HEADER_llc_policy_offset = 0 # macro -SDMA_PKT_TIMESTAMP_GET_HEADER_llc_policy_mask = 0x00000001 # macro -SDMA_PKT_TIMESTAMP_GET_HEADER_llc_policy_shift = 26 # macro -def SDMA_PKT_TIMESTAMP_GET_HEADER_LLC_POLICY(x): # macro - return (((x)&0x00000001)<<26) -SDMA_PKT_TIMESTAMP_GET_HEADER_cpv_offset = 0 # macro -SDMA_PKT_TIMESTAMP_GET_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_TIMESTAMP_GET_HEADER_cpv_shift = 28 # macro -def SDMA_PKT_TIMESTAMP_GET_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_TIMESTAMP_GET_WRITE_ADDR_LO_write_addr_31_3_offset = 1 # macro -SDMA_PKT_TIMESTAMP_GET_WRITE_ADDR_LO_write_addr_31_3_mask = 0x1FFFFFFF # macro -SDMA_PKT_TIMESTAMP_GET_WRITE_ADDR_LO_write_addr_31_3_shift = 3 # macro -def SDMA_PKT_TIMESTAMP_GET_WRITE_ADDR_LO_WRITE_ADDR_31_3(x): # macro - return (((x)&0x1FFFFFFF)<<3) -SDMA_PKT_TIMESTAMP_GET_WRITE_ADDR_HI_write_addr_63_32_offset = 2 # macro -SDMA_PKT_TIMESTAMP_GET_WRITE_ADDR_HI_write_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_TIMESTAMP_GET_WRITE_ADDR_HI_write_addr_63_32_shift = 0 # macro -def SDMA_PKT_TIMESTAMP_GET_WRITE_ADDR_HI_WRITE_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_op_offset = 0 # macro -SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_op_shift = 0 # macro -def SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_l2_policy_offset = 0 # macro -SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_l2_policy_mask = 0x00000003 # macro -SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_l2_policy_shift = 24 # macro -def SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_L2_POLICY(x): # macro - return (((x)&0x00000003)<<24) -SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_llc_policy_offset = 0 # macro -SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_llc_policy_mask = 0x00000001 # macro -SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_llc_policy_shift = 26 # macro -def SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_LLC_POLICY(x): # macro - return (((x)&0x00000001)<<26) -SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_cpv_offset = 0 # macro -SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_cpv_mask = 0x00000001 # macro -SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_cpv_shift = 28 # macro -def SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_PKT_TIMESTAMP_GET_GLOBAL_WRITE_ADDR_LO_write_addr_31_3_offset = 1 # macro -SDMA_PKT_TIMESTAMP_GET_GLOBAL_WRITE_ADDR_LO_write_addr_31_3_mask = 0x1FFFFFFF # macro -SDMA_PKT_TIMESTAMP_GET_GLOBAL_WRITE_ADDR_LO_write_addr_31_3_shift = 3 # macro -def SDMA_PKT_TIMESTAMP_GET_GLOBAL_WRITE_ADDR_LO_WRITE_ADDR_31_3(x): # macro - return (((x)&0x1FFFFFFF)<<3) -SDMA_PKT_TIMESTAMP_GET_GLOBAL_WRITE_ADDR_HI_write_addr_63_32_offset = 2 # macro -SDMA_PKT_TIMESTAMP_GET_GLOBAL_WRITE_ADDR_HI_write_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_PKT_TIMESTAMP_GET_GLOBAL_WRITE_ADDR_HI_write_addr_63_32_shift = 0 # macro -def SDMA_PKT_TIMESTAMP_GET_GLOBAL_WRITE_ADDR_HI_WRITE_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_PKT_TRAP_HEADER_op_offset = 0 # macro -SDMA_PKT_TRAP_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_TRAP_HEADER_op_shift = 0 # macro -def SDMA_PKT_TRAP_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_TRAP_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_TRAP_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_TRAP_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_TRAP_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_TRAP_INT_CONTEXT_int_context_offset = 1 # macro -SDMA_PKT_TRAP_INT_CONTEXT_int_context_mask = 0x0FFFFFFF # macro -SDMA_PKT_TRAP_INT_CONTEXT_int_context_shift = 0 # macro -def SDMA_PKT_TRAP_INT_CONTEXT_INT_CONTEXT(x): # macro - return (((x)&0x0FFFFFFF)<<0) -SDMA_PKT_DUMMY_TRAP_HEADER_op_offset = 0 # macro -SDMA_PKT_DUMMY_TRAP_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_DUMMY_TRAP_HEADER_op_shift = 0 # macro -def SDMA_PKT_DUMMY_TRAP_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_DUMMY_TRAP_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_DUMMY_TRAP_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_DUMMY_TRAP_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_DUMMY_TRAP_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_DUMMY_TRAP_INT_CONTEXT_int_context_offset = 1 # macro -SDMA_PKT_DUMMY_TRAP_INT_CONTEXT_int_context_mask = 0x0FFFFFFF # macro -SDMA_PKT_DUMMY_TRAP_INT_CONTEXT_int_context_shift = 0 # macro -def SDMA_PKT_DUMMY_TRAP_INT_CONTEXT_INT_CONTEXT(x): # macro - return (((x)&0x0FFFFFFF)<<0) -SDMA_PKT_GPUVM_INV_HEADER_op_offset = 0 # macro -SDMA_PKT_GPUVM_INV_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_GPUVM_INV_HEADER_op_shift = 0 # macro -def SDMA_PKT_GPUVM_INV_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_GPUVM_INV_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_GPUVM_INV_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_GPUVM_INV_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_GPUVM_INV_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_GPUVM_INV_PAYLOAD1_per_vmid_inv_req_offset = 1 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_per_vmid_inv_req_mask = 0x0000FFFF # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_per_vmid_inv_req_shift = 0 # macro -def SDMA_PKT_GPUVM_INV_PAYLOAD1_PER_VMID_INV_REQ(x): # macro - return (((x)&0x0000FFFF)<<0) -SDMA_PKT_GPUVM_INV_PAYLOAD1_flush_type_offset = 1 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_flush_type_mask = 0x00000007 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_flush_type_shift = 16 # macro -def SDMA_PKT_GPUVM_INV_PAYLOAD1_FLUSH_TYPE(x): # macro - return (((x)&0x00000007)<<16) -SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_ptes_offset = 1 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_ptes_mask = 0x00000001 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_ptes_shift = 19 # macro -def SDMA_PKT_GPUVM_INV_PAYLOAD1_L2_PTES(x): # macro - return (((x)&0x00000001)<<19) -SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_pde0_offset = 1 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_pde0_mask = 0x00000001 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_pde0_shift = 20 # macro -def SDMA_PKT_GPUVM_INV_PAYLOAD1_L2_PDE0(x): # macro - return (((x)&0x00000001)<<20) -SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_pde1_offset = 1 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_pde1_mask = 0x00000001 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_pde1_shift = 21 # macro -def SDMA_PKT_GPUVM_INV_PAYLOAD1_L2_PDE1(x): # macro - return (((x)&0x00000001)<<21) -SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_pde2_offset = 1 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_pde2_mask = 0x00000001 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_pde2_shift = 22 # macro -def SDMA_PKT_GPUVM_INV_PAYLOAD1_L2_PDE2(x): # macro - return (((x)&0x00000001)<<22) -SDMA_PKT_GPUVM_INV_PAYLOAD1_l1_ptes_offset = 1 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_l1_ptes_mask = 0x00000001 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_l1_ptes_shift = 23 # macro -def SDMA_PKT_GPUVM_INV_PAYLOAD1_L1_PTES(x): # macro - return (((x)&0x00000001)<<23) -SDMA_PKT_GPUVM_INV_PAYLOAD1_clr_protection_fault_status_addr_offset = 1 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_clr_protection_fault_status_addr_mask = 0x00000001 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_clr_protection_fault_status_addr_shift = 24 # macro -def SDMA_PKT_GPUVM_INV_PAYLOAD1_CLR_PROTECTION_FAULT_STATUS_ADDR(x): # macro - return (((x)&0x00000001)<<24) -SDMA_PKT_GPUVM_INV_PAYLOAD1_log_request_offset = 1 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_log_request_mask = 0x00000001 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_log_request_shift = 25 # macro -def SDMA_PKT_GPUVM_INV_PAYLOAD1_LOG_REQUEST(x): # macro - return (((x)&0x00000001)<<25) -SDMA_PKT_GPUVM_INV_PAYLOAD1_four_kilobytes_offset = 1 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_four_kilobytes_mask = 0x00000001 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD1_four_kilobytes_shift = 26 # macro -def SDMA_PKT_GPUVM_INV_PAYLOAD1_FOUR_KILOBYTES(x): # macro - return (((x)&0x00000001)<<26) -SDMA_PKT_GPUVM_INV_PAYLOAD2_s_offset = 2 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD2_s_mask = 0x00000001 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD2_s_shift = 0 # macro -def SDMA_PKT_GPUVM_INV_PAYLOAD2_S(x): # macro - return (((x)&0x00000001)<<0) -SDMA_PKT_GPUVM_INV_PAYLOAD2_page_va_42_12_offset = 2 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD2_page_va_42_12_mask = 0x7FFFFFFF # macro -SDMA_PKT_GPUVM_INV_PAYLOAD2_page_va_42_12_shift = 1 # macro -def SDMA_PKT_GPUVM_INV_PAYLOAD2_PAGE_VA_42_12(x): # macro - return (((x)&0x7FFFFFFF)<<1) -SDMA_PKT_GPUVM_INV_PAYLOAD3_page_va_47_43_offset = 3 # macro -SDMA_PKT_GPUVM_INV_PAYLOAD3_page_va_47_43_mask = 0x0000003F # macro -SDMA_PKT_GPUVM_INV_PAYLOAD3_page_va_47_43_shift = 0 # macro -def SDMA_PKT_GPUVM_INV_PAYLOAD3_PAGE_VA_47_43(x): # macro - return (((x)&0x0000003F)<<0) -SDMA_PKT_GCR_REQ_HEADER_op_offset = 0 # macro -SDMA_PKT_GCR_REQ_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_GCR_REQ_HEADER_op_shift = 0 # macro -def SDMA_PKT_GCR_REQ_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_GCR_REQ_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_GCR_REQ_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_GCR_REQ_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_GCR_REQ_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_GCR_REQ_PAYLOAD1_base_va_31_7_offset = 1 # macro -SDMA_PKT_GCR_REQ_PAYLOAD1_base_va_31_7_mask = 0x01FFFFFF # macro -SDMA_PKT_GCR_REQ_PAYLOAD1_base_va_31_7_shift = 7 # macro -def SDMA_PKT_GCR_REQ_PAYLOAD1_BASE_VA_31_7(x): # macro - return (((x)&0x01FFFFFF)<<7) -SDMA_PKT_GCR_REQ_PAYLOAD2_base_va_47_32_offset = 2 # macro -SDMA_PKT_GCR_REQ_PAYLOAD2_base_va_47_32_mask = 0x0000FFFF # macro -SDMA_PKT_GCR_REQ_PAYLOAD2_base_va_47_32_shift = 0 # macro -def SDMA_PKT_GCR_REQ_PAYLOAD2_BASE_VA_47_32(x): # macro - return (((x)&0x0000FFFF)<<0) -SDMA_PKT_GCR_REQ_PAYLOAD2_gcr_control_15_0_offset = 2 # macro -SDMA_PKT_GCR_REQ_PAYLOAD2_gcr_control_15_0_mask = 0x0000FFFF # macro -SDMA_PKT_GCR_REQ_PAYLOAD2_gcr_control_15_0_shift = 16 # macro -def SDMA_PKT_GCR_REQ_PAYLOAD2_GCR_CONTROL_15_0(x): # macro - return (((x)&0x0000FFFF)<<16) -SDMA_PKT_GCR_REQ_PAYLOAD3_gcr_control_18_16_offset = 3 # macro -SDMA_PKT_GCR_REQ_PAYLOAD3_gcr_control_18_16_mask = 0x00000007 # macro -SDMA_PKT_GCR_REQ_PAYLOAD3_gcr_control_18_16_shift = 0 # macro -def SDMA_PKT_GCR_REQ_PAYLOAD3_GCR_CONTROL_18_16(x): # macro - return (((x)&0x00000007)<<0) -SDMA_PKT_GCR_REQ_PAYLOAD3_limit_va_31_7_offset = 3 # macro -SDMA_PKT_GCR_REQ_PAYLOAD3_limit_va_31_7_mask = 0x01FFFFFF # macro -SDMA_PKT_GCR_REQ_PAYLOAD3_limit_va_31_7_shift = 7 # macro -def SDMA_PKT_GCR_REQ_PAYLOAD3_LIMIT_VA_31_7(x): # macro - return (((x)&0x01FFFFFF)<<7) -SDMA_PKT_GCR_REQ_PAYLOAD4_limit_va_47_32_offset = 4 # macro -SDMA_PKT_GCR_REQ_PAYLOAD4_limit_va_47_32_mask = 0x0000FFFF # macro -SDMA_PKT_GCR_REQ_PAYLOAD4_limit_va_47_32_shift = 0 # macro -def SDMA_PKT_GCR_REQ_PAYLOAD4_LIMIT_VA_47_32(x): # macro - return (((x)&0x0000FFFF)<<0) -SDMA_PKT_GCR_REQ_PAYLOAD4_vmid_offset = 4 # macro -SDMA_PKT_GCR_REQ_PAYLOAD4_vmid_mask = 0x0000000F # macro -SDMA_PKT_GCR_REQ_PAYLOAD4_vmid_shift = 24 # macro -def SDMA_PKT_GCR_REQ_PAYLOAD4_VMID(x): # macro - return (((x)&0x0000000F)<<24) -SDMA_PKT_NOP_HEADER_op_offset = 0 # macro -SDMA_PKT_NOP_HEADER_op_mask = 0x000000FF # macro -SDMA_PKT_NOP_HEADER_op_shift = 0 # macro -def SDMA_PKT_NOP_HEADER_OP(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_PKT_NOP_HEADER_sub_op_offset = 0 # macro -SDMA_PKT_NOP_HEADER_sub_op_mask = 0x000000FF # macro -SDMA_PKT_NOP_HEADER_sub_op_shift = 8 # macro -def SDMA_PKT_NOP_HEADER_SUB_OP(x): # macro - return (((x)&0x000000FF)<<8) -SDMA_PKT_NOP_HEADER_count_offset = 0 # macro -SDMA_PKT_NOP_HEADER_count_mask = 0x00003FFF # macro -SDMA_PKT_NOP_HEADER_count_shift = 16 # macro -def SDMA_PKT_NOP_HEADER_COUNT(x): # macro - return (((x)&0x00003FFF)<<16) -SDMA_PKT_NOP_DATA0_data0_offset = 1 # macro -SDMA_PKT_NOP_DATA0_data0_mask = 0xFFFFFFFF # macro -SDMA_PKT_NOP_DATA0_data0_shift = 0 # macro -def SDMA_PKT_NOP_DATA0_DATA0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_HEADER_HEADER_format_offset = 0 # macro -SDMA_AQL_PKT_HEADER_HEADER_format_mask = 0x000000FF # macro -SDMA_AQL_PKT_HEADER_HEADER_format_shift = 0 # macro -def SDMA_AQL_PKT_HEADER_HEADER_FORMAT(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_AQL_PKT_HEADER_HEADER_barrier_offset = 0 # macro -SDMA_AQL_PKT_HEADER_HEADER_barrier_mask = 0x00000001 # macro -SDMA_AQL_PKT_HEADER_HEADER_barrier_shift = 8 # macro -def SDMA_AQL_PKT_HEADER_HEADER_BARRIER(x): # macro - return (((x)&0x00000001)<<8) -SDMA_AQL_PKT_HEADER_HEADER_acquire_fence_scope_offset = 0 # macro -SDMA_AQL_PKT_HEADER_HEADER_acquire_fence_scope_mask = 0x00000003 # macro -SDMA_AQL_PKT_HEADER_HEADER_acquire_fence_scope_shift = 9 # macro -def SDMA_AQL_PKT_HEADER_HEADER_ACQUIRE_FENCE_SCOPE(x): # macro - return (((x)&0x00000003)<<9) -SDMA_AQL_PKT_HEADER_HEADER_release_fence_scope_offset = 0 # macro -SDMA_AQL_PKT_HEADER_HEADER_release_fence_scope_mask = 0x00000003 # macro -SDMA_AQL_PKT_HEADER_HEADER_release_fence_scope_shift = 11 # macro -def SDMA_AQL_PKT_HEADER_HEADER_RELEASE_FENCE_SCOPE(x): # macro - return (((x)&0x00000003)<<11) -SDMA_AQL_PKT_HEADER_HEADER_reserved_offset = 0 # macro -SDMA_AQL_PKT_HEADER_HEADER_reserved_mask = 0x00000007 # macro -SDMA_AQL_PKT_HEADER_HEADER_reserved_shift = 13 # macro -def SDMA_AQL_PKT_HEADER_HEADER_RESERVED(x): # macro - return (((x)&0x00000007)<<13) -SDMA_AQL_PKT_HEADER_HEADER_op_offset = 0 # macro -SDMA_AQL_PKT_HEADER_HEADER_op_mask = 0x0000000F # macro -SDMA_AQL_PKT_HEADER_HEADER_op_shift = 16 # macro -def SDMA_AQL_PKT_HEADER_HEADER_OP(x): # macro - return (((x)&0x0000000F)<<16) -SDMA_AQL_PKT_HEADER_HEADER_subop_offset = 0 # macro -SDMA_AQL_PKT_HEADER_HEADER_subop_mask = 0x00000007 # macro -SDMA_AQL_PKT_HEADER_HEADER_subop_shift = 20 # macro -def SDMA_AQL_PKT_HEADER_HEADER_SUBOP(x): # macro - return (((x)&0x00000007)<<20) -SDMA_AQL_PKT_HEADER_HEADER_cpv_offset = 0 # macro -SDMA_AQL_PKT_HEADER_HEADER_cpv_mask = 0x00000001 # macro -SDMA_AQL_PKT_HEADER_HEADER_cpv_shift = 28 # macro -def SDMA_AQL_PKT_HEADER_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_AQL_PKT_COPY_LINEAR_HEADER_format_offset = 0 # macro -SDMA_AQL_PKT_COPY_LINEAR_HEADER_format_mask = 0x000000FF # macro -SDMA_AQL_PKT_COPY_LINEAR_HEADER_format_shift = 0 # macro -def SDMA_AQL_PKT_COPY_LINEAR_HEADER_FORMAT(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_AQL_PKT_COPY_LINEAR_HEADER_barrier_offset = 0 # macro -SDMA_AQL_PKT_COPY_LINEAR_HEADER_barrier_mask = 0x00000001 # macro -SDMA_AQL_PKT_COPY_LINEAR_HEADER_barrier_shift = 8 # macro -def SDMA_AQL_PKT_COPY_LINEAR_HEADER_BARRIER(x): # macro - return (((x)&0x00000001)<<8) -SDMA_AQL_PKT_COPY_LINEAR_HEADER_acquire_fence_scope_offset = 0 # macro -SDMA_AQL_PKT_COPY_LINEAR_HEADER_acquire_fence_scope_mask = 0x00000003 # macro -SDMA_AQL_PKT_COPY_LINEAR_HEADER_acquire_fence_scope_shift = 9 # macro -def SDMA_AQL_PKT_COPY_LINEAR_HEADER_ACQUIRE_FENCE_SCOPE(x): # macro - return (((x)&0x00000003)<<9) -SDMA_AQL_PKT_COPY_LINEAR_HEADER_release_fence_scope_offset = 0 # macro -SDMA_AQL_PKT_COPY_LINEAR_HEADER_release_fence_scope_mask = 0x00000003 # macro -SDMA_AQL_PKT_COPY_LINEAR_HEADER_release_fence_scope_shift = 11 # macro -def SDMA_AQL_PKT_COPY_LINEAR_HEADER_RELEASE_FENCE_SCOPE(x): # macro - return (((x)&0x00000003)<<11) -SDMA_AQL_PKT_COPY_LINEAR_HEADER_reserved_offset = 0 # macro -SDMA_AQL_PKT_COPY_LINEAR_HEADER_reserved_mask = 0x00000007 # macro -SDMA_AQL_PKT_COPY_LINEAR_HEADER_reserved_shift = 13 # macro -def SDMA_AQL_PKT_COPY_LINEAR_HEADER_RESERVED(x): # macro - return (((x)&0x00000007)<<13) -SDMA_AQL_PKT_COPY_LINEAR_HEADER_op_offset = 0 # macro -SDMA_AQL_PKT_COPY_LINEAR_HEADER_op_mask = 0x0000000F # macro -SDMA_AQL_PKT_COPY_LINEAR_HEADER_op_shift = 16 # macro -def SDMA_AQL_PKT_COPY_LINEAR_HEADER_OP(x): # macro - return (((x)&0x0000000F)<<16) -SDMA_AQL_PKT_COPY_LINEAR_HEADER_subop_offset = 0 # macro -SDMA_AQL_PKT_COPY_LINEAR_HEADER_subop_mask = 0x00000007 # macro -SDMA_AQL_PKT_COPY_LINEAR_HEADER_subop_shift = 20 # macro -def SDMA_AQL_PKT_COPY_LINEAR_HEADER_SUBOP(x): # macro - return (((x)&0x00000007)<<20) -SDMA_AQL_PKT_COPY_LINEAR_HEADER_cpv_offset = 0 # macro -SDMA_AQL_PKT_COPY_LINEAR_HEADER_cpv_mask = 0x00000001 # macro -SDMA_AQL_PKT_COPY_LINEAR_HEADER_cpv_shift = 28 # macro -def SDMA_AQL_PKT_COPY_LINEAR_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW1_reserved_dw1_offset = 1 # macro -SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW1_reserved_dw1_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW1_reserved_dw1_shift = 0 # macro -def SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW1_RESERVED_DW1(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_COPY_LINEAR_RETURN_ADDR_LO_return_addr_31_0_offset = 2 # macro -SDMA_AQL_PKT_COPY_LINEAR_RETURN_ADDR_LO_return_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_COPY_LINEAR_RETURN_ADDR_LO_return_addr_31_0_shift = 0 # macro -def SDMA_AQL_PKT_COPY_LINEAR_RETURN_ADDR_LO_RETURN_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_COPY_LINEAR_RETURN_ADDR_HI_return_addr_63_32_offset = 3 # macro -SDMA_AQL_PKT_COPY_LINEAR_RETURN_ADDR_HI_return_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_COPY_LINEAR_RETURN_ADDR_HI_return_addr_63_32_shift = 0 # macro -def SDMA_AQL_PKT_COPY_LINEAR_RETURN_ADDR_HI_RETURN_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_COPY_LINEAR_COUNT_count_offset = 4 # macro -SDMA_AQL_PKT_COPY_LINEAR_COUNT_count_mask = 0x003FFFFF # macro -SDMA_AQL_PKT_COPY_LINEAR_COUNT_count_shift = 0 # macro -def SDMA_AQL_PKT_COPY_LINEAR_COUNT_COUNT(x): # macro - return (((x)&0x003FFFFF)<<0) -SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_dst_sw_offset = 5 # macro -SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_dst_sw_mask = 0x00000003 # macro -SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_dst_sw_shift = 16 # macro -def SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_DST_SW(x): # macro - return (((x)&0x00000003)<<16) -SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_dst_cache_policy_offset = 5 # macro -SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_dst_cache_policy_mask = 0x00000007 # macro -SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_dst_cache_policy_shift = 18 # macro -def SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_DST_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<18) -SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_src_sw_offset = 5 # macro -SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_src_sw_mask = 0x00000003 # macro -SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_src_sw_shift = 24 # macro -def SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_SRC_SW(x): # macro - return (((x)&0x00000003)<<24) -SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_src_cache_policy_offset = 5 # macro -SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_src_cache_policy_mask = 0x00000007 # macro -SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_src_cache_policy_shift = 26 # macro -def SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_SRC_CACHE_POLICY(x): # macro - return (((x)&0x00000007)<<26) -SDMA_AQL_PKT_COPY_LINEAR_SRC_ADDR_LO_src_addr_31_0_offset = 6 # macro -SDMA_AQL_PKT_COPY_LINEAR_SRC_ADDR_LO_src_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_COPY_LINEAR_SRC_ADDR_LO_src_addr_31_0_shift = 0 # macro -def SDMA_AQL_PKT_COPY_LINEAR_SRC_ADDR_LO_SRC_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_COPY_LINEAR_SRC_ADDR_HI_src_addr_63_32_offset = 7 # macro -SDMA_AQL_PKT_COPY_LINEAR_SRC_ADDR_HI_src_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_COPY_LINEAR_SRC_ADDR_HI_src_addr_63_32_shift = 0 # macro -def SDMA_AQL_PKT_COPY_LINEAR_SRC_ADDR_HI_SRC_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_COPY_LINEAR_DST_ADDR_LO_dst_addr_31_0_offset = 8 # macro -SDMA_AQL_PKT_COPY_LINEAR_DST_ADDR_LO_dst_addr_31_0_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_COPY_LINEAR_DST_ADDR_LO_dst_addr_31_0_shift = 0 # macro -def SDMA_AQL_PKT_COPY_LINEAR_DST_ADDR_LO_DST_ADDR_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_COPY_LINEAR_DST_ADDR_HI_dst_addr_63_32_offset = 9 # macro -SDMA_AQL_PKT_COPY_LINEAR_DST_ADDR_HI_dst_addr_63_32_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_COPY_LINEAR_DST_ADDR_HI_dst_addr_63_32_shift = 0 # macro -def SDMA_AQL_PKT_COPY_LINEAR_DST_ADDR_HI_DST_ADDR_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW10_reserved_dw10_offset = 10 # macro -SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW10_reserved_dw10_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW10_reserved_dw10_shift = 0 # macro -def SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW10_RESERVED_DW10(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW11_reserved_dw11_offset = 11 # macro -SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW11_reserved_dw11_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW11_reserved_dw11_shift = 0 # macro -def SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW11_RESERVED_DW11(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW12_reserved_dw12_offset = 12 # macro -SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW12_reserved_dw12_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW12_reserved_dw12_shift = 0 # macro -def SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW12_RESERVED_DW12(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW13_reserved_dw13_offset = 13 # macro -SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW13_reserved_dw13_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW13_reserved_dw13_shift = 0 # macro -def SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW13_RESERVED_DW13(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_COPY_LINEAR_COMPLETION_SIGNAL_LO_completion_signal_31_0_offset = 14 # macro -SDMA_AQL_PKT_COPY_LINEAR_COMPLETION_SIGNAL_LO_completion_signal_31_0_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_COPY_LINEAR_COMPLETION_SIGNAL_LO_completion_signal_31_0_shift = 0 # macro -def SDMA_AQL_PKT_COPY_LINEAR_COMPLETION_SIGNAL_LO_COMPLETION_SIGNAL_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_COPY_LINEAR_COMPLETION_SIGNAL_HI_completion_signal_63_32_offset = 15 # macro -SDMA_AQL_PKT_COPY_LINEAR_COMPLETION_SIGNAL_HI_completion_signal_63_32_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_COPY_LINEAR_COMPLETION_SIGNAL_HI_completion_signal_63_32_shift = 0 # macro -def SDMA_AQL_PKT_COPY_LINEAR_COMPLETION_SIGNAL_HI_COMPLETION_SIGNAL_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_BARRIER_OR_HEADER_format_offset = 0 # macro -SDMA_AQL_PKT_BARRIER_OR_HEADER_format_mask = 0x000000FF # macro -SDMA_AQL_PKT_BARRIER_OR_HEADER_format_shift = 0 # macro -def SDMA_AQL_PKT_BARRIER_OR_HEADER_FORMAT(x): # macro - return (((x)&0x000000FF)<<0) -SDMA_AQL_PKT_BARRIER_OR_HEADER_barrier_offset = 0 # macro -SDMA_AQL_PKT_BARRIER_OR_HEADER_barrier_mask = 0x00000001 # macro -SDMA_AQL_PKT_BARRIER_OR_HEADER_barrier_shift = 8 # macro -def SDMA_AQL_PKT_BARRIER_OR_HEADER_BARRIER(x): # macro - return (((x)&0x00000001)<<8) -SDMA_AQL_PKT_BARRIER_OR_HEADER_acquire_fence_scope_offset = 0 # macro -SDMA_AQL_PKT_BARRIER_OR_HEADER_acquire_fence_scope_mask = 0x00000003 # macro -SDMA_AQL_PKT_BARRIER_OR_HEADER_acquire_fence_scope_shift = 9 # macro -def SDMA_AQL_PKT_BARRIER_OR_HEADER_ACQUIRE_FENCE_SCOPE(x): # macro - return (((x)&0x00000003)<<9) -SDMA_AQL_PKT_BARRIER_OR_HEADER_release_fence_scope_offset = 0 # macro -SDMA_AQL_PKT_BARRIER_OR_HEADER_release_fence_scope_mask = 0x00000003 # macro -SDMA_AQL_PKT_BARRIER_OR_HEADER_release_fence_scope_shift = 11 # macro -def SDMA_AQL_PKT_BARRIER_OR_HEADER_RELEASE_FENCE_SCOPE(x): # macro - return (((x)&0x00000003)<<11) -SDMA_AQL_PKT_BARRIER_OR_HEADER_reserved_offset = 0 # macro -SDMA_AQL_PKT_BARRIER_OR_HEADER_reserved_mask = 0x00000007 # macro -SDMA_AQL_PKT_BARRIER_OR_HEADER_reserved_shift = 13 # macro -def SDMA_AQL_PKT_BARRIER_OR_HEADER_RESERVED(x): # macro - return (((x)&0x00000007)<<13) -SDMA_AQL_PKT_BARRIER_OR_HEADER_op_offset = 0 # macro -SDMA_AQL_PKT_BARRIER_OR_HEADER_op_mask = 0x0000000F # macro -SDMA_AQL_PKT_BARRIER_OR_HEADER_op_shift = 16 # macro -def SDMA_AQL_PKT_BARRIER_OR_HEADER_OP(x): # macro - return (((x)&0x0000000F)<<16) -SDMA_AQL_PKT_BARRIER_OR_HEADER_subop_offset = 0 # macro -SDMA_AQL_PKT_BARRIER_OR_HEADER_subop_mask = 0x00000007 # macro -SDMA_AQL_PKT_BARRIER_OR_HEADER_subop_shift = 20 # macro -def SDMA_AQL_PKT_BARRIER_OR_HEADER_SUBOP(x): # macro - return (((x)&0x00000007)<<20) -SDMA_AQL_PKT_BARRIER_OR_HEADER_cpv_offset = 0 # macro -SDMA_AQL_PKT_BARRIER_OR_HEADER_cpv_mask = 0x00000001 # macro -SDMA_AQL_PKT_BARRIER_OR_HEADER_cpv_shift = 28 # macro -def SDMA_AQL_PKT_BARRIER_OR_HEADER_CPV(x): # macro - return (((x)&0x00000001)<<28) -SDMA_AQL_PKT_BARRIER_OR_RESERVED_DW1_reserved_dw1_offset = 1 # macro -SDMA_AQL_PKT_BARRIER_OR_RESERVED_DW1_reserved_dw1_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_BARRIER_OR_RESERVED_DW1_reserved_dw1_shift = 0 # macro -def SDMA_AQL_PKT_BARRIER_OR_RESERVED_DW1_RESERVED_DW1(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_0_LO_dependent_addr_0_31_0_offset = 2 # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_0_LO_dependent_addr_0_31_0_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_0_LO_dependent_addr_0_31_0_shift = 0 # macro -def SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_0_LO_DEPENDENT_ADDR_0_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_0_HI_dependent_addr_0_63_32_offset = 3 # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_0_HI_dependent_addr_0_63_32_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_0_HI_dependent_addr_0_63_32_shift = 0 # macro -def SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_0_HI_DEPENDENT_ADDR_0_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_1_LO_dependent_addr_1_31_0_offset = 4 # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_1_LO_dependent_addr_1_31_0_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_1_LO_dependent_addr_1_31_0_shift = 0 # macro -def SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_1_LO_DEPENDENT_ADDR_1_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_1_HI_dependent_addr_1_63_32_offset = 5 # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_1_HI_dependent_addr_1_63_32_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_1_HI_dependent_addr_1_63_32_shift = 0 # macro -def SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_1_HI_DEPENDENT_ADDR_1_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_2_LO_dependent_addr_2_31_0_offset = 6 # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_2_LO_dependent_addr_2_31_0_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_2_LO_dependent_addr_2_31_0_shift = 0 # macro -def SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_2_LO_DEPENDENT_ADDR_2_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_2_HI_dependent_addr_2_63_32_offset = 7 # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_2_HI_dependent_addr_2_63_32_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_2_HI_dependent_addr_2_63_32_shift = 0 # macro -def SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_2_HI_DEPENDENT_ADDR_2_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_3_LO_dependent_addr_3_31_0_offset = 8 # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_3_LO_dependent_addr_3_31_0_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_3_LO_dependent_addr_3_31_0_shift = 0 # macro -def SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_3_LO_DEPENDENT_ADDR_3_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_3_HI_dependent_addr_3_63_32_offset = 9 # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_3_HI_dependent_addr_3_63_32_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_3_HI_dependent_addr_3_63_32_shift = 0 # macro -def SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_3_HI_DEPENDENT_ADDR_3_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_4_LO_dependent_addr_4_31_0_offset = 10 # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_4_LO_dependent_addr_4_31_0_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_4_LO_dependent_addr_4_31_0_shift = 0 # macro -def SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_4_LO_DEPENDENT_ADDR_4_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_4_HI_dependent_addr_4_63_32_offset = 11 # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_4_HI_dependent_addr_4_63_32_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_4_HI_dependent_addr_4_63_32_shift = 0 # macro -def SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_4_HI_DEPENDENT_ADDR_4_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy0_offset = 12 # macro -SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy0_mask = 0x00000007 # macro -SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy0_shift = 0 # macro -def SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_CACHE_POLICY0(x): # macro - return (((x)&0x00000007)<<0) -SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy1_offset = 12 # macro -SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy1_mask = 0x00000007 # macro -SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy1_shift = 5 # macro -def SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_CACHE_POLICY1(x): # macro - return (((x)&0x00000007)<<5) -SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy2_offset = 12 # macro -SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy2_mask = 0x00000007 # macro -SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy2_shift = 10 # macro -def SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_CACHE_POLICY2(x): # macro - return (((x)&0x00000007)<<10) -SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy3_offset = 12 # macro -SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy3_mask = 0x00000007 # macro -SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy3_shift = 15 # macro -def SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_CACHE_POLICY3(x): # macro - return (((x)&0x00000007)<<15) -SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy4_offset = 12 # macro -SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy4_mask = 0x00000007 # macro -SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy4_shift = 20 # macro -def SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_CACHE_POLICY4(x): # macro - return (((x)&0x00000007)<<20) -SDMA_AQL_PKT_BARRIER_OR_RESERVED_DW13_reserved_dw13_offset = 13 # macro -SDMA_AQL_PKT_BARRIER_OR_RESERVED_DW13_reserved_dw13_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_BARRIER_OR_RESERVED_DW13_reserved_dw13_shift = 0 # macro -def SDMA_AQL_PKT_BARRIER_OR_RESERVED_DW13_RESERVED_DW13(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_BARRIER_OR_COMPLETION_SIGNAL_LO_completion_signal_31_0_offset = 14 # macro -SDMA_AQL_PKT_BARRIER_OR_COMPLETION_SIGNAL_LO_completion_signal_31_0_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_BARRIER_OR_COMPLETION_SIGNAL_LO_completion_signal_31_0_shift = 0 # macro -def SDMA_AQL_PKT_BARRIER_OR_COMPLETION_SIGNAL_LO_COMPLETION_SIGNAL_31_0(x): # macro - return (((x)&0xFFFFFFFF)<<0) -SDMA_AQL_PKT_BARRIER_OR_COMPLETION_SIGNAL_HI_completion_signal_63_32_offset = 15 # macro -SDMA_AQL_PKT_BARRIER_OR_COMPLETION_SIGNAL_HI_completion_signal_63_32_mask = 0xFFFFFFFF # macro -SDMA_AQL_PKT_BARRIER_OR_COMPLETION_SIGNAL_HI_completion_signal_63_32_shift = 0 # macro -def SDMA_AQL_PKT_BARRIER_OR_COMPLETION_SIGNAL_HI_COMPLETION_SIGNAL_63_32(x): # macro - return (((x)&0xFFFFFFFF)<<0) _gc_11_0_0_OFFSET_HEADER = True # macro regSDMA0_DEC_START = 0x0000 # macro regSDMA0_DEC_START_BASE_IDX = 0 # macro @@ -47635,119 +12626,119 @@ regGFX_IMU_I_RAM_ADDR = 0x5f90 # macro regGFX_IMU_I_RAM_ADDR_BASE_IDX = 1 # macro regGFX_IMU_I_RAM_DATA = 0x5f91 # macro regGFX_IMU_I_RAM_DATA_BASE_IDX = 1 # macro -ixGC_CAC_ID = 0x0020 # macro -ixGC_CAC_CNTL = 0x0021 # macro -ixGC_CAC_ACC_CP0 = 0x0115 # macro -ixGC_CAC_ACC_CP1 = 0x0116 # macro -ixGC_CAC_ACC_CP2 = 0x0117 # macro -ixGC_CAC_ACC_EA0 = 0x016c # macro -ixGC_CAC_ACC_EA1 = 0x016d # macro -ixGC_CAC_ACC_EA2 = 0x016e # macro -ixGC_CAC_ACC_EA3 = 0x016f # macro -ixGC_CAC_ACC_EA4 = 0x0170 # macro -ixGC_CAC_ACC_EA5 = 0x0171 # macro -ixGC_CAC_ACC_UTCL2_ROUTER0 = 0x0177 # macro -ixGC_CAC_ACC_UTCL2_ROUTER1 = 0x0178 # macro -ixGC_CAC_ACC_UTCL2_ROUTER2 = 0x0179 # macro -ixGC_CAC_ACC_UTCL2_ROUTER3 = 0x017a # macro -ixGC_CAC_ACC_UTCL2_ROUTER4 = 0x017b # macro -ixGC_CAC_ACC_UTCL2_ROUTER5 = 0x017c # macro -ixGC_CAC_ACC_UTCL2_ROUTER6 = 0x017d # macro -ixGC_CAC_ACC_UTCL2_ROUTER7 = 0x017e # macro -ixGC_CAC_ACC_UTCL2_ROUTER8 = 0x017f # macro -ixGC_CAC_ACC_UTCL2_ROUTER9 = 0x0180 # macro -ixGC_CAC_ACC_UTCL2_VML20 = 0x0181 # macro -ixGC_CAC_ACC_UTCL2_VML21 = 0x0182 # macro -ixGC_CAC_ACC_UTCL2_VML22 = 0x0183 # macro -ixGC_CAC_ACC_UTCL2_VML23 = 0x0184 # macro -ixGC_CAC_ACC_UTCL2_VML24 = 0x0185 # macro -ixGC_CAC_ACC_UTCL2_WALKER0 = 0x0186 # macro -ixGC_CAC_ACC_UTCL2_WALKER1 = 0x0187 # macro -ixGC_CAC_ACC_UTCL2_WALKER2 = 0x0188 # macro -ixGC_CAC_ACC_UTCL2_WALKER3 = 0x0189 # macro -ixGC_CAC_ACC_UTCL2_WALKER4 = 0x018a # macro -ixGC_CAC_ACC_GDS0 = 0x0122 # macro -ixGC_CAC_ACC_GDS1 = 0x0123 # macro -ixGC_CAC_ACC_GDS2 = 0x0124 # macro -ixGC_CAC_ACC_GDS3 = 0x0125 # macro -ixGC_CAC_ACC_GDS4 = 0x0126 # macro -ixGC_CAC_ACC_GE0 = 0x0190 # macro -ixGC_CAC_ACC_GE1 = 0x0191 # macro -ixGC_CAC_ACC_GE2 = 0x0192 # macro -ixGC_CAC_ACC_GE3 = 0x0193 # macro -ixGC_CAC_ACC_GE4 = 0x0194 # macro -ixGC_CAC_ACC_GE5 = 0x0195 # macro -ixGC_CAC_ACC_GE6 = 0x0196 # macro -ixGC_CAC_ACC_GE7 = 0x0197 # macro -ixGC_CAC_ACC_GE8 = 0x0198 # macro -ixGC_CAC_ACC_GE9 = 0x0199 # macro -ixGC_CAC_ACC_GE10 = 0x019a # macro -ixGC_CAC_ACC_GE11 = 0x019b # macro -ixGC_CAC_ACC_GE12 = 0x019c # macro -ixGC_CAC_ACC_GE13 = 0x019d # macro -ixGC_CAC_ACC_GE14 = 0x019e # macro -ixGC_CAC_ACC_GE15 = 0x019f # macro -ixGC_CAC_ACC_GE16 = 0x01a0 # macro -ixGC_CAC_ACC_GE17 = 0x01a1 # macro -ixGC_CAC_ACC_GE18 = 0x01a2 # macro -ixGC_CAC_ACC_GE19 = 0x01a3 # macro -ixGC_CAC_ACC_GE20 = 0x01a4 # macro -ixGC_CAC_ACC_PMM0 = 0x01a5 # macro -ixGC_CAC_ACC_GL2C0 = 0x01a6 # macro -ixGC_CAC_ACC_GL2C1 = 0x01a7 # macro -ixGC_CAC_ACC_GL2C2 = 0x01a8 # macro -ixGC_CAC_ACC_GL2C3 = 0x01a9 # macro -ixGC_CAC_ACC_GL2C4 = 0x01aa # macro -ixGC_CAC_ACC_PH0 = 0x01ae # macro -ixGC_CAC_ACC_PH1 = 0x01af # macro -ixGC_CAC_ACC_PH2 = 0x01b0 # macro -ixGC_CAC_ACC_PH3 = 0x01b1 # macro -ixGC_CAC_ACC_PH4 = 0x01b2 # macro -ixGC_CAC_ACC_PH5 = 0x01b3 # macro -ixGC_CAC_ACC_PH6 = 0x01b4 # macro -ixGC_CAC_ACC_PH7 = 0x01b5 # macro -ixGC_CAC_ACC_SDMA0 = 0x01b6 # macro -ixGC_CAC_ACC_SDMA1 = 0x01b7 # macro -ixGC_CAC_ACC_SDMA2 = 0x01b8 # macro -ixGC_CAC_ACC_SDMA3 = 0x01b9 # macro -ixGC_CAC_ACC_SDMA4 = 0x01ba # macro -ixGC_CAC_ACC_SDMA5 = 0x01bb # macro -ixGC_CAC_ACC_SDMA6 = 0x01bc # macro -ixGC_CAC_ACC_SDMA7 = 0x01bd # macro -ixGC_CAC_ACC_SDMA8 = 0x01be # macro -ixGC_CAC_ACC_SDMA9 = 0x01bf # macro -ixGC_CAC_ACC_SDMA10 = 0x01c0 # macro -ixGC_CAC_ACC_SDMA11 = 0x01c1 # macro -ixGC_CAC_ACC_CHC0 = 0x018d # macro -ixGC_CAC_ACC_CHC1 = 0x018e # macro -ixGC_CAC_ACC_CHC2 = 0x018f # macro -ixGC_CAC_ACC_GUS0 = 0x01ab # macro -ixGC_CAC_ACC_GUS1 = 0x01ac # macro -ixGC_CAC_ACC_GUS2 = 0x01ad # macro -ixGC_CAC_ACC_RLC0 = 0x01d0 # macro -ixRELEASE_TO_STALL_LUT_1_8 = 0x0230 # macro -ixRELEASE_TO_STALL_LUT_9_16 = 0x0231 # macro -ixRELEASE_TO_STALL_LUT_17_20 = 0x0232 # macro -ixSTALL_TO_RELEASE_LUT_1_4 = 0x0233 # macro -ixSTALL_TO_RELEASE_LUT_5_7 = 0x0234 # macro -ixSTALL_TO_PWRBRK_LUT_1_4 = 0x0235 # macro -ixSTALL_TO_PWRBRK_LUT_5_7 = 0x0236 # macro -ixPWRBRK_STALL_TO_RELEASE_LUT_1_4 = 0x0237 # macro -ixPWRBRK_STALL_TO_RELEASE_LUT_5_7 = 0x0238 # macro -ixPWRBRK_RELEASE_TO_STALL_LUT_1_8 = 0x0239 # macro -ixPWRBRK_RELEASE_TO_STALL_LUT_9_16 = 0x023a # macro -ixPWRBRK_RELEASE_TO_STALL_LUT_17_20 = 0x023b # macro -ixFIXED_PATTERN_PERF_COUNTER_1 = 0x023c # macro -ixFIXED_PATTERN_PERF_COUNTER_2 = 0x023d # macro -ixFIXED_PATTERN_PERF_COUNTER_3 = 0x023e # macro -ixFIXED_PATTERN_PERF_COUNTER_4 = 0x023f # macro -ixFIXED_PATTERN_PERF_COUNTER_5 = 0x0240 # macro -ixFIXED_PATTERN_PERF_COUNTER_6 = 0x0241 # macro -ixFIXED_PATTERN_PERF_COUNTER_7 = 0x0242 # macro -ixFIXED_PATTERN_PERF_COUNTER_8 = 0x0243 # macro -ixFIXED_PATTERN_PERF_COUNTER_9 = 0x0244 # macro -ixFIXED_PATTERN_PERF_COUNTER_10 = 0x0245 # macro -ixHW_LUT_UPDATE_STATUS = 0x0246 # macro +ixGC_CAC_ID = 0x0000 # macro +ixGC_CAC_CNTL = 0x0001 # macro +ixGC_CAC_ACC_CP0 = 0x0010 # macro +ixGC_CAC_ACC_CP1 = 0x0011 # macro +ixGC_CAC_ACC_CP2 = 0x0012 # macro +ixGC_CAC_ACC_EA0 = 0x0013 # macro +ixGC_CAC_ACC_EA1 = 0x0014 # macro +ixGC_CAC_ACC_EA2 = 0x0015 # macro +ixGC_CAC_ACC_EA3 = 0x0016 # macro +ixGC_CAC_ACC_EA4 = 0x0017 # macro +ixGC_CAC_ACC_EA5 = 0x0018 # macro +ixGC_CAC_ACC_UTCL2_ROUTER0 = 0x0019 # macro +ixGC_CAC_ACC_UTCL2_ROUTER1 = 0x001a # macro +ixGC_CAC_ACC_UTCL2_ROUTER2 = 0x001b # macro +ixGC_CAC_ACC_UTCL2_ROUTER3 = 0x001c # macro +ixGC_CAC_ACC_UTCL2_ROUTER4 = 0x001d # macro +ixGC_CAC_ACC_UTCL2_ROUTER5 = 0x001e # macro +ixGC_CAC_ACC_UTCL2_ROUTER6 = 0x001f # macro +ixGC_CAC_ACC_UTCL2_ROUTER7 = 0x0020 # macro +ixGC_CAC_ACC_UTCL2_ROUTER8 = 0x0021 # macro +ixGC_CAC_ACC_UTCL2_ROUTER9 = 0x0022 # macro +ixGC_CAC_ACC_UTCL2_VML20 = 0x0023 # macro +ixGC_CAC_ACC_UTCL2_VML21 = 0x0024 # macro +ixGC_CAC_ACC_UTCL2_VML22 = 0x0025 # macro +ixGC_CAC_ACC_UTCL2_VML23 = 0x0026 # macro +ixGC_CAC_ACC_UTCL2_VML24 = 0x0027 # macro +ixGC_CAC_ACC_UTCL2_WALKER0 = 0x0028 # macro +ixGC_CAC_ACC_UTCL2_WALKER1 = 0x0029 # macro +ixGC_CAC_ACC_UTCL2_WALKER2 = 0x002a # macro +ixGC_CAC_ACC_UTCL2_WALKER3 = 0x002b # macro +ixGC_CAC_ACC_UTCL2_WALKER4 = 0x002c # macro +ixGC_CAC_ACC_GDS0 = 0x002d # macro +ixGC_CAC_ACC_GDS1 = 0x002e # macro +ixGC_CAC_ACC_GDS2 = 0x002f # macro +ixGC_CAC_ACC_GDS3 = 0x0030 # macro +ixGC_CAC_ACC_GDS4 = 0x0031 # macro +ixGC_CAC_ACC_GE0 = 0x0032 # macro +ixGC_CAC_ACC_GE1 = 0x0033 # macro +ixGC_CAC_ACC_GE2 = 0x0034 # macro +ixGC_CAC_ACC_GE3 = 0x0035 # macro +ixGC_CAC_ACC_GE4 = 0x0036 # macro +ixGC_CAC_ACC_GE5 = 0x0037 # macro +ixGC_CAC_ACC_GE6 = 0x0038 # macro +ixGC_CAC_ACC_GE7 = 0x0039 # macro +ixGC_CAC_ACC_GE8 = 0x003a # macro +ixGC_CAC_ACC_GE9 = 0x003b # macro +ixGC_CAC_ACC_GE10 = 0x003c # macro +ixGC_CAC_ACC_GE11 = 0x003d # macro +ixGC_CAC_ACC_GE12 = 0x003e # macro +ixGC_CAC_ACC_GE13 = 0x003f # macro +ixGC_CAC_ACC_GE14 = 0x0040 # macro +ixGC_CAC_ACC_GE15 = 0x0041 # macro +ixGC_CAC_ACC_GE16 = 0x0042 # macro +ixGC_CAC_ACC_GE17 = 0x0043 # macro +ixGC_CAC_ACC_GE18 = 0x0044 # macro +ixGC_CAC_ACC_GE19 = 0x0045 # macro +ixGC_CAC_ACC_GE20 = 0x0046 # macro +ixGC_CAC_ACC_PMM0 = 0x0047 # macro +ixGC_CAC_ACC_GL2C0 = 0x0048 # macro +ixGC_CAC_ACC_GL2C1 = 0x0049 # macro +ixGC_CAC_ACC_GL2C2 = 0x004a # macro +ixGC_CAC_ACC_GL2C3 = 0x004b # macro +ixGC_CAC_ACC_GL2C4 = 0x004c # macro +ixGC_CAC_ACC_PH0 = 0x004d # macro +ixGC_CAC_ACC_PH1 = 0x004e # macro +ixGC_CAC_ACC_PH2 = 0x004f # macro +ixGC_CAC_ACC_PH3 = 0x0050 # macro +ixGC_CAC_ACC_PH4 = 0x0051 # macro +ixGC_CAC_ACC_PH5 = 0x0052 # macro +ixGC_CAC_ACC_PH6 = 0x0053 # macro +ixGC_CAC_ACC_PH7 = 0x0054 # macro +ixGC_CAC_ACC_SDMA0 = 0x0055 # macro +ixGC_CAC_ACC_SDMA1 = 0x0056 # macro +ixGC_CAC_ACC_SDMA2 = 0x0057 # macro +ixGC_CAC_ACC_SDMA3 = 0x0058 # macro +ixGC_CAC_ACC_SDMA4 = 0x0059 # macro +ixGC_CAC_ACC_SDMA5 = 0x005a # macro +ixGC_CAC_ACC_SDMA6 = 0x005b # macro +ixGC_CAC_ACC_SDMA7 = 0x005c # macro +ixGC_CAC_ACC_SDMA8 = 0x005d # macro +ixGC_CAC_ACC_SDMA9 = 0x005e # macro +ixGC_CAC_ACC_SDMA10 = 0x005f # macro +ixGC_CAC_ACC_SDMA11 = 0x0060 # macro +ixGC_CAC_ACC_CHC0 = 0x0061 # macro +ixGC_CAC_ACC_CHC1 = 0x0062 # macro +ixGC_CAC_ACC_CHC2 = 0x0063 # macro +ixGC_CAC_ACC_GUS0 = 0x0064 # macro +ixGC_CAC_ACC_GUS1 = 0x0065 # macro +ixGC_CAC_ACC_GUS2 = 0x0066 # macro +ixGC_CAC_ACC_RLC0 = 0x0067 # macro +ixRELEASE_TO_STALL_LUT_1_8 = 0x0100 # macro +ixRELEASE_TO_STALL_LUT_9_16 = 0x0101 # macro +ixRELEASE_TO_STALL_LUT_17_20 = 0x0102 # macro +ixSTALL_TO_RELEASE_LUT_1_4 = 0x0103 # macro +ixSTALL_TO_RELEASE_LUT_5_7 = 0x0104 # macro +ixSTALL_TO_PWRBRK_LUT_1_4 = 0x0105 # macro +ixSTALL_TO_PWRBRK_LUT_5_7 = 0x0106 # macro +ixPWRBRK_STALL_TO_RELEASE_LUT_1_4 = 0x0107 # macro +ixPWRBRK_STALL_TO_RELEASE_LUT_5_7 = 0x0108 # macro +ixPWRBRK_RELEASE_TO_STALL_LUT_1_8 = 0x0109 # macro +ixPWRBRK_RELEASE_TO_STALL_LUT_9_16 = 0x010a # macro +ixPWRBRK_RELEASE_TO_STALL_LUT_17_20 = 0x010b # macro +ixFIXED_PATTERN_PERF_COUNTER_1 = 0x010c # macro +ixFIXED_PATTERN_PERF_COUNTER_2 = 0x010d # macro +ixFIXED_PATTERN_PERF_COUNTER_3 = 0x010e # macro +ixFIXED_PATTERN_PERF_COUNTER_4 = 0x010f # macro +ixFIXED_PATTERN_PERF_COUNTER_5 = 0x0110 # macro +ixFIXED_PATTERN_PERF_COUNTER_6 = 0x0111 # macro +ixFIXED_PATTERN_PERF_COUNTER_7 = 0x0112 # macro +ixFIXED_PATTERN_PERF_COUNTER_8 = 0x0113 # macro +ixFIXED_PATTERN_PERF_COUNTER_9 = 0x0114 # macro +ixFIXED_PATTERN_PERF_COUNTER_10 = 0x0115 # macro +ixHW_LUT_UPDATE_STATUS = 0x0116 # macro ixSE_CAC_ID = 0x0000 # macro ixSE_CAC_CNTL = 0x0001 # macro ixRTAVFS_REG0 = 0x0000 # macro @@ -47982,12967 +12973,9 @@ ixSQ_WAVE_TTMP12 = 0x0278 # macro ixSQ_WAVE_TTMP13 = 0x0279 # macro ixSQ_WAVE_TTMP14 = 0x027a # macro ixSQ_WAVE_TTMP15 = 0x027b # macro -ixSQ_WAVE_M0 = 0x027c # macro +ixSQ_WAVE_M0 = 0x027d # macro ixSQ_WAVE_EXEC_LO = 0x027e # macro ixSQ_WAVE_EXEC_HI = 0x027f # macro -_gc_10_3_0_OFFSET_HEADER = True # macro -mmSQ_DEBUG_STS_GLOBAL = 0x10A9 # macro -mmSQ_DEBUG_STS_GLOBAL_BASE_IDX = 0 # macro -mmSQ_DEBUG_STS_GLOBAL2 = 0x10B0 # macro -mmSQ_DEBUG_STS_GLOBAL2_BASE_IDX = 0 # macro -mmSQ_DEBUG = 0x10B1 # macro -mmSQ_DEBUG_BASE_IDX = 0 # macro -mmSDMA0_DEC_START = 0x0000 # macro -mmSDMA0_DEC_START_BASE_IDX = 0 # macro -mmSDMA0_GLOBAL_TIMESTAMP_LO = 0x000f # macro -mmSDMA0_GLOBAL_TIMESTAMP_LO_BASE_IDX = 0 # macro -mmSDMA0_GLOBAL_TIMESTAMP_HI = 0x0010 # macro -mmSDMA0_GLOBAL_TIMESTAMP_HI_BASE_IDX = 0 # macro -mmSDMA0_PG_CNTL = 0x0016 # macro -mmSDMA0_PG_CNTL_BASE_IDX = 0 # macro -mmSDMA0_PG_CTX_LO = 0x0017 # macro -mmSDMA0_PG_CTX_LO_BASE_IDX = 0 # macro -mmSDMA0_PG_CTX_HI = 0x0018 # macro -mmSDMA0_PG_CTX_HI_BASE_IDX = 0 # macro -mmSDMA0_PG_CTX_CNTL = 0x0019 # macro -mmSDMA0_PG_CTX_CNTL_BASE_IDX = 0 # macro -mmSDMA0_POWER_CNTL = 0x001a # macro -mmSDMA0_POWER_CNTL_BASE_IDX = 0 # macro -mmSDMA0_CLK_CTRL = 0x001b # macro -mmSDMA0_CLK_CTRL_BASE_IDX = 0 # macro -mmSDMA0_CNTL = 0x001c # macro -mmSDMA0_CNTL_BASE_IDX = 0 # macro -mmSDMA0_CHICKEN_BITS = 0x001d # macro -mmSDMA0_CHICKEN_BITS_BASE_IDX = 0 # macro -mmSDMA0_GB_ADDR_CONFIG = 0x001e # macro -mmSDMA0_GB_ADDR_CONFIG_BASE_IDX = 0 # macro -mmSDMA0_GB_ADDR_CONFIG_READ = 0x001f # macro -mmSDMA0_GB_ADDR_CONFIG_READ_BASE_IDX = 0 # macro -mmSDMA0_RB_RPTR_FETCH_HI = 0x0020 # macro -mmSDMA0_RB_RPTR_FETCH_HI_BASE_IDX = 0 # macro -mmSDMA0_SEM_WAIT_FAIL_TIMER_CNTL = 0x0021 # macro -mmSDMA0_SEM_WAIT_FAIL_TIMER_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RB_RPTR_FETCH = 0x0022 # macro -mmSDMA0_RB_RPTR_FETCH_BASE_IDX = 0 # macro -mmSDMA0_IB_OFFSET_FETCH = 0x0023 # macro -mmSDMA0_IB_OFFSET_FETCH_BASE_IDX = 0 # macro -mmSDMA0_PROGRAM = 0x0024 # macro -mmSDMA0_PROGRAM_BASE_IDX = 0 # macro -mmSDMA0_STATUS_REG = 0x0025 # macro -mmSDMA0_STATUS_REG_BASE_IDX = 0 # macro -mmSDMA0_STATUS1_REG = 0x0026 # macro -mmSDMA0_STATUS1_REG_BASE_IDX = 0 # macro -mmSDMA0_RD_BURST_CNTL = 0x0027 # macro -mmSDMA0_RD_BURST_CNTL_BASE_IDX = 0 # macro -mmSDMA0_HBM_PAGE_CONFIG = 0x0028 # macro -mmSDMA0_HBM_PAGE_CONFIG_BASE_IDX = 0 # macro -mmSDMA0_UCODE_CHECKSUM = 0x0029 # macro -mmSDMA0_UCODE_CHECKSUM_BASE_IDX = 0 # macro -mmSDMA0_F32_CNTL = 0x002a # macro -mmSDMA0_F32_CNTL_BASE_IDX = 0 # macro -mmSDMA0_FREEZE = 0x002b # macro -mmSDMA0_FREEZE_BASE_IDX = 0 # macro -mmSDMA0_PHASE0_QUANTUM = 0x002c # macro -mmSDMA0_PHASE0_QUANTUM_BASE_IDX = 0 # macro -mmSDMA0_PHASE1_QUANTUM = 0x002d # macro -mmSDMA0_PHASE1_QUANTUM_BASE_IDX = 0 # macro -mmSDMA0_EDC_CONFIG = 0x0032 # macro -mmSDMA0_EDC_CONFIG_BASE_IDX = 0 # macro -mmSDMA0_BA_THRESHOLD = 0x0033 # macro -mmSDMA0_BA_THRESHOLD_BASE_IDX = 0 # macro -mmSDMA0_ID = 0x0034 # macro -mmSDMA0_ID_BASE_IDX = 0 # macro -mmSDMA0_VERSION = 0x0035 # macro -mmSDMA0_VERSION_BASE_IDX = 0 # macro -mmSDMA0_EDC_COUNTER = 0x0036 # macro -mmSDMA0_EDC_COUNTER_BASE_IDX = 0 # macro -mmSDMA0_EDC_COUNTER_CLEAR = 0x0037 # macro -mmSDMA0_EDC_COUNTER_CLEAR_BASE_IDX = 0 # macro -mmSDMA0_STATUS2_REG = 0x0038 # macro -mmSDMA0_STATUS2_REG_BASE_IDX = 0 # macro -mmSDMA0_ATOMIC_CNTL = 0x0039 # macro -mmSDMA0_ATOMIC_CNTL_BASE_IDX = 0 # macro -mmSDMA0_ATOMIC_PREOP_LO = 0x003a # macro -mmSDMA0_ATOMIC_PREOP_LO_BASE_IDX = 0 # macro -mmSDMA0_ATOMIC_PREOP_HI = 0x003b # macro -mmSDMA0_ATOMIC_PREOP_HI_BASE_IDX = 0 # macro -mmSDMA0_UTCL1_CNTL = 0x003c # macro -mmSDMA0_UTCL1_CNTL_BASE_IDX = 0 # macro -mmSDMA0_UTCL1_WATERMK = 0x003d # macro -mmSDMA0_UTCL1_WATERMK_BASE_IDX = 0 # macro -mmSDMA0_UTCL1_RD_STATUS = 0x003e # macro -mmSDMA0_UTCL1_RD_STATUS_BASE_IDX = 0 # macro -mmSDMA0_UTCL1_WR_STATUS = 0x003f # macro -mmSDMA0_UTCL1_WR_STATUS_BASE_IDX = 0 # macro -mmSDMA0_UTCL1_INV0 = 0x0040 # macro -mmSDMA0_UTCL1_INV0_BASE_IDX = 0 # macro -mmSDMA0_UTCL1_INV1 = 0x0041 # macro -mmSDMA0_UTCL1_INV1_BASE_IDX = 0 # macro -mmSDMA0_UTCL1_INV2 = 0x0042 # macro -mmSDMA0_UTCL1_INV2_BASE_IDX = 0 # macro -mmSDMA0_UTCL1_RD_XNACK0 = 0x0043 # macro -mmSDMA0_UTCL1_RD_XNACK0_BASE_IDX = 0 # macro -mmSDMA0_UTCL1_RD_XNACK1 = 0x0044 # macro -mmSDMA0_UTCL1_RD_XNACK1_BASE_IDX = 0 # macro -mmSDMA0_UTCL1_WR_XNACK0 = 0x0045 # macro -mmSDMA0_UTCL1_WR_XNACK0_BASE_IDX = 0 # macro -mmSDMA0_UTCL1_WR_XNACK1 = 0x0046 # macro -mmSDMA0_UTCL1_WR_XNACK1_BASE_IDX = 0 # macro -mmSDMA0_UTCL1_TIMEOUT = 0x0047 # macro -mmSDMA0_UTCL1_TIMEOUT_BASE_IDX = 0 # macro -mmSDMA0_UTCL1_PAGE = 0x0048 # macro -mmSDMA0_UTCL1_PAGE_BASE_IDX = 0 # macro -mmSDMA0_RELAX_ORDERING_LUT = 0x004a # macro -mmSDMA0_RELAX_ORDERING_LUT_BASE_IDX = 0 # macro -mmSDMA0_CHICKEN_BITS_2 = 0x004b # macro -mmSDMA0_CHICKEN_BITS_2_BASE_IDX = 0 # macro -mmSDMA0_STATUS3_REG = 0x004c # macro -mmSDMA0_STATUS3_REG_BASE_IDX = 0 # macro -mmSDMA0_PHYSICAL_ADDR_LO = 0x004d # macro -mmSDMA0_PHYSICAL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_PHYSICAL_ADDR_HI = 0x004e # macro -mmSDMA0_PHYSICAL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_PHASE2_QUANTUM = 0x004f # macro -mmSDMA0_PHASE2_QUANTUM_BASE_IDX = 0 # macro -mmSDMA0_ERROR_LOG = 0x0050 # macro -mmSDMA0_ERROR_LOG_BASE_IDX = 0 # macro -mmSDMA0_PUB_DUMMY_REG0 = 0x0051 # macro -mmSDMA0_PUB_DUMMY_REG0_BASE_IDX = 0 # macro -mmSDMA0_PUB_DUMMY_REG1 = 0x0052 # macro -mmSDMA0_PUB_DUMMY_REG1_BASE_IDX = 0 # macro -mmSDMA0_PUB_DUMMY_REG2 = 0x0053 # macro -mmSDMA0_PUB_DUMMY_REG2_BASE_IDX = 0 # macro -mmSDMA0_PUB_DUMMY_REG3 = 0x0054 # macro -mmSDMA0_PUB_DUMMY_REG3_BASE_IDX = 0 # macro -mmSDMA0_F32_COUNTER = 0x0055 # macro -mmSDMA0_F32_COUNTER_BASE_IDX = 0 # macro -mmSDMA0_CRD_CNTL = 0x005b # macro -mmSDMA0_CRD_CNTL_BASE_IDX = 0 # macro -mmSDMA0_AQL_STATUS = 0x005f # macro -mmSDMA0_AQL_STATUS_BASE_IDX = 0 # macro -mmSDMA0_EA_DBIT_ADDR_DATA = 0x0060 # macro -mmSDMA0_EA_DBIT_ADDR_DATA_BASE_IDX = 0 # macro -mmSDMA0_EA_DBIT_ADDR_INDEX = 0x0061 # macro -mmSDMA0_EA_DBIT_ADDR_INDEX_BASE_IDX = 0 # macro -mmSDMA0_TLBI_GCR_CNTL = 0x0062 # macro -mmSDMA0_TLBI_GCR_CNTL_BASE_IDX = 0 # macro -mmSDMA0_TILING_CONFIG = 0x0063 # macro -mmSDMA0_TILING_CONFIG_BASE_IDX = 0 # macro -mmSDMA0_INT_STATUS = 0x0070 # macro -mmSDMA0_INT_STATUS_BASE_IDX = 0 # macro -mmSDMA0_HOLE_ADDR_LO = 0x0072 # macro -mmSDMA0_HOLE_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_HOLE_ADDR_HI = 0x0073 # macro -mmSDMA0_HOLE_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_CLOCK_GATING_REG = 0x0075 # macro -mmSDMA0_CLOCK_GATING_REG_BASE_IDX = 0 # macro -mmSDMA0_STATUS4_REG = 0x0076 # macro -mmSDMA0_STATUS4_REG_BASE_IDX = 0 # macro -mmSDMA0_SCRATCH_RAM_DATA = 0x0077 # macro -mmSDMA0_SCRATCH_RAM_DATA_BASE_IDX = 0 # macro -mmSDMA0_SCRATCH_RAM_ADDR = 0x0078 # macro -mmSDMA0_SCRATCH_RAM_ADDR_BASE_IDX = 0 # macro -mmSDMA0_TIMESTAMP_CNTL = 0x0079 # macro -mmSDMA0_TIMESTAMP_CNTL_BASE_IDX = 0 # macro -mmSDMA0_STATUS5_REG = 0x007a # macro -mmSDMA0_STATUS5_REG_BASE_IDX = 0 # macro -mmSDMA0_QUEUE_RESET_REQ = 0x007b # macro -mmSDMA0_QUEUE_RESET_REQ_BASE_IDX = 0 # macro -mmSDMA0_GFX_RB_CNTL = 0x0080 # macro -mmSDMA0_GFX_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_GFX_RB_BASE = 0x0081 # macro -mmSDMA0_GFX_RB_BASE_BASE_IDX = 0 # macro -mmSDMA0_GFX_RB_BASE_HI = 0x0082 # macro -mmSDMA0_GFX_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_GFX_RB_RPTR = 0x0083 # macro -mmSDMA0_GFX_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_GFX_RB_RPTR_HI = 0x0084 # macro -mmSDMA0_GFX_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_GFX_RB_WPTR = 0x0085 # macro -mmSDMA0_GFX_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA0_GFX_RB_WPTR_HI = 0x0086 # macro -mmSDMA0_GFX_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_GFX_RB_WPTR_POLL_CNTL = 0x0087 # macro -mmSDMA0_GFX_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_GFX_RB_RPTR_ADDR_HI = 0x0088 # macro -mmSDMA0_GFX_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_GFX_RB_RPTR_ADDR_LO = 0x0089 # macro -mmSDMA0_GFX_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_GFX_IB_CNTL = 0x008a # macro -mmSDMA0_GFX_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_GFX_IB_RPTR = 0x008b # macro -mmSDMA0_GFX_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_GFX_IB_OFFSET = 0x008c # macro -mmSDMA0_GFX_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_GFX_IB_BASE_LO = 0x008d # macro -mmSDMA0_GFX_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA0_GFX_IB_BASE_HI = 0x008e # macro -mmSDMA0_GFX_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_GFX_IB_SIZE = 0x008f # macro -mmSDMA0_GFX_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA0_GFX_SKIP_CNTL = 0x0090 # macro -mmSDMA0_GFX_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA0_GFX_CONTEXT_STATUS = 0x0091 # macro -mmSDMA0_GFX_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA0_GFX_DOORBELL = 0x0092 # macro -mmSDMA0_GFX_DOORBELL_BASE_IDX = 0 # macro -mmSDMA0_GFX_CONTEXT_CNTL = 0x0093 # macro -mmSDMA0_GFX_CONTEXT_CNTL_BASE_IDX = 0 # macro -mmSDMA0_GFX_STATUS = 0x00a8 # macro -mmSDMA0_GFX_STATUS_BASE_IDX = 0 # macro -mmSDMA0_GFX_DOORBELL_LOG = 0x00a9 # macro -mmSDMA0_GFX_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA0_GFX_WATERMARK = 0x00aa # macro -mmSDMA0_GFX_WATERMARK_BASE_IDX = 0 # macro -mmSDMA0_GFX_DOORBELL_OFFSET = 0x00ab # macro -mmSDMA0_GFX_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_GFX_CSA_ADDR_LO = 0x00ac # macro -mmSDMA0_GFX_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_GFX_CSA_ADDR_HI = 0x00ad # macro -mmSDMA0_GFX_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_GFX_IB_SUB_REMAIN = 0x00af # macro -mmSDMA0_GFX_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA0_GFX_PREEMPT = 0x00b0 # macro -mmSDMA0_GFX_PREEMPT_BASE_IDX = 0 # macro -mmSDMA0_GFX_DUMMY_REG = 0x00b1 # macro -mmSDMA0_GFX_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA0_GFX_RB_WPTR_POLL_ADDR_HI = 0x00b2 # macro -mmSDMA0_GFX_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_GFX_RB_WPTR_POLL_ADDR_LO = 0x00b3 # macro -mmSDMA0_GFX_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_GFX_RB_AQL_CNTL = 0x00b4 # macro -mmSDMA0_GFX_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_GFX_MINOR_PTR_UPDATE = 0x00b5 # macro -mmSDMA0_GFX_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA0_GFX_MIDCMD_DATA0 = 0x00c0 # macro -mmSDMA0_GFX_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA0_GFX_MIDCMD_DATA1 = 0x00c1 # macro -mmSDMA0_GFX_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA0_GFX_MIDCMD_DATA2 = 0x00c2 # macro -mmSDMA0_GFX_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA0_GFX_MIDCMD_DATA3 = 0x00c3 # macro -mmSDMA0_GFX_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA0_GFX_MIDCMD_DATA4 = 0x00c4 # macro -mmSDMA0_GFX_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA0_GFX_MIDCMD_DATA5 = 0x00c5 # macro -mmSDMA0_GFX_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA0_GFX_MIDCMD_DATA6 = 0x00c6 # macro -mmSDMA0_GFX_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA0_GFX_MIDCMD_DATA7 = 0x00c7 # macro -mmSDMA0_GFX_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA0_GFX_MIDCMD_DATA8 = 0x00c8 # macro -mmSDMA0_GFX_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA0_GFX_MIDCMD_DATA9 = 0x00c9 # macro -mmSDMA0_GFX_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA0_GFX_MIDCMD_DATA10 = 0x00ca # macro -mmSDMA0_GFX_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA0_GFX_MIDCMD_CNTL = 0x00cb # macro -mmSDMA0_GFX_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmSDMA0_PAGE_RB_CNTL = 0x00d8 # macro -mmSDMA0_PAGE_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_PAGE_RB_BASE = 0x00d9 # macro -mmSDMA0_PAGE_RB_BASE_BASE_IDX = 0 # macro -mmSDMA0_PAGE_RB_BASE_HI = 0x00da # macro -mmSDMA0_PAGE_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_PAGE_RB_RPTR = 0x00db # macro -mmSDMA0_PAGE_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_PAGE_RB_RPTR_HI = 0x00dc # macro -mmSDMA0_PAGE_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_PAGE_RB_WPTR = 0x00dd # macro -mmSDMA0_PAGE_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA0_PAGE_RB_WPTR_HI = 0x00de # macro -mmSDMA0_PAGE_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_PAGE_RB_WPTR_POLL_CNTL = 0x00df # macro -mmSDMA0_PAGE_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_PAGE_RB_RPTR_ADDR_HI = 0x00e0 # macro -mmSDMA0_PAGE_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_PAGE_RB_RPTR_ADDR_LO = 0x00e1 # macro -mmSDMA0_PAGE_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_PAGE_IB_CNTL = 0x00e2 # macro -mmSDMA0_PAGE_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_PAGE_IB_RPTR = 0x00e3 # macro -mmSDMA0_PAGE_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_PAGE_IB_OFFSET = 0x00e4 # macro -mmSDMA0_PAGE_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_PAGE_IB_BASE_LO = 0x00e5 # macro -mmSDMA0_PAGE_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA0_PAGE_IB_BASE_HI = 0x00e6 # macro -mmSDMA0_PAGE_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_PAGE_IB_SIZE = 0x00e7 # macro -mmSDMA0_PAGE_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA0_PAGE_SKIP_CNTL = 0x00e8 # macro -mmSDMA0_PAGE_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA0_PAGE_CONTEXT_STATUS = 0x00e9 # macro -mmSDMA0_PAGE_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA0_PAGE_DOORBELL = 0x00ea # macro -mmSDMA0_PAGE_DOORBELL_BASE_IDX = 0 # macro -mmSDMA0_PAGE_STATUS = 0x0100 # macro -mmSDMA0_PAGE_STATUS_BASE_IDX = 0 # macro -mmSDMA0_PAGE_DOORBELL_LOG = 0x0101 # macro -mmSDMA0_PAGE_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA0_PAGE_WATERMARK = 0x0102 # macro -mmSDMA0_PAGE_WATERMARK_BASE_IDX = 0 # macro -mmSDMA0_PAGE_DOORBELL_OFFSET = 0x0103 # macro -mmSDMA0_PAGE_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_PAGE_CSA_ADDR_LO = 0x0104 # macro -mmSDMA0_PAGE_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_PAGE_CSA_ADDR_HI = 0x0105 # macro -mmSDMA0_PAGE_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_PAGE_IB_SUB_REMAIN = 0x0107 # macro -mmSDMA0_PAGE_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA0_PAGE_PREEMPT = 0x0108 # macro -mmSDMA0_PAGE_PREEMPT_BASE_IDX = 0 # macro -mmSDMA0_PAGE_DUMMY_REG = 0x0109 # macro -mmSDMA0_PAGE_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA0_PAGE_RB_WPTR_POLL_ADDR_HI = 0x010a # macro -mmSDMA0_PAGE_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_PAGE_RB_WPTR_POLL_ADDR_LO = 0x010b # macro -mmSDMA0_PAGE_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_PAGE_RB_AQL_CNTL = 0x010c # macro -mmSDMA0_PAGE_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_PAGE_MINOR_PTR_UPDATE = 0x010d # macro -mmSDMA0_PAGE_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA0_PAGE_MIDCMD_DATA0 = 0x0118 # macro -mmSDMA0_PAGE_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA0_PAGE_MIDCMD_DATA1 = 0x0119 # macro -mmSDMA0_PAGE_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA0_PAGE_MIDCMD_DATA2 = 0x011a # macro -mmSDMA0_PAGE_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA0_PAGE_MIDCMD_DATA3 = 0x011b # macro -mmSDMA0_PAGE_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA0_PAGE_MIDCMD_DATA4 = 0x011c # macro -mmSDMA0_PAGE_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA0_PAGE_MIDCMD_DATA5 = 0x011d # macro -mmSDMA0_PAGE_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA0_PAGE_MIDCMD_DATA6 = 0x011e # macro -mmSDMA0_PAGE_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA0_PAGE_MIDCMD_DATA7 = 0x011f # macro -mmSDMA0_PAGE_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA0_PAGE_MIDCMD_DATA8 = 0x0120 # macro -mmSDMA0_PAGE_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA0_PAGE_MIDCMD_DATA9 = 0x0121 # macro -mmSDMA0_PAGE_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA0_PAGE_MIDCMD_DATA10 = 0x0122 # macro -mmSDMA0_PAGE_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA0_PAGE_MIDCMD_CNTL = 0x0123 # macro -mmSDMA0_PAGE_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC0_RB_CNTL = 0x0130 # macro -mmSDMA0_RLC0_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC0_RB_BASE = 0x0131 # macro -mmSDMA0_RLC0_RB_BASE_BASE_IDX = 0 # macro -mmSDMA0_RLC0_RB_BASE_HI = 0x0132 # macro -mmSDMA0_RLC0_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC0_RB_RPTR = 0x0133 # macro -mmSDMA0_RLC0_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC0_RB_RPTR_HI = 0x0134 # macro -mmSDMA0_RLC0_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC0_RB_WPTR = 0x0135 # macro -mmSDMA0_RLC0_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC0_RB_WPTR_HI = 0x0136 # macro -mmSDMA0_RLC0_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC0_RB_WPTR_POLL_CNTL = 0x0137 # macro -mmSDMA0_RLC0_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC0_RB_RPTR_ADDR_HI = 0x0138 # macro -mmSDMA0_RLC0_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC0_RB_RPTR_ADDR_LO = 0x0139 # macro -mmSDMA0_RLC0_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC0_IB_CNTL = 0x013a # macro -mmSDMA0_RLC0_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC0_IB_RPTR = 0x013b # macro -mmSDMA0_RLC0_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC0_IB_OFFSET = 0x013c # macro -mmSDMA0_RLC0_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_RLC0_IB_BASE_LO = 0x013d # macro -mmSDMA0_RLC0_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC0_IB_BASE_HI = 0x013e # macro -mmSDMA0_RLC0_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC0_IB_SIZE = 0x013f # macro -mmSDMA0_RLC0_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA0_RLC0_SKIP_CNTL = 0x0140 # macro -mmSDMA0_RLC0_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC0_CONTEXT_STATUS = 0x0141 # macro -mmSDMA0_RLC0_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA0_RLC0_DOORBELL = 0x0142 # macro -mmSDMA0_RLC0_DOORBELL_BASE_IDX = 0 # macro -mmSDMA0_RLC0_STATUS = 0x0158 # macro -mmSDMA0_RLC0_STATUS_BASE_IDX = 0 # macro -mmSDMA0_RLC0_DOORBELL_LOG = 0x0159 # macro -mmSDMA0_RLC0_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA0_RLC0_WATERMARK = 0x015a # macro -mmSDMA0_RLC0_WATERMARK_BASE_IDX = 0 # macro -mmSDMA0_RLC0_DOORBELL_OFFSET = 0x015b # macro -mmSDMA0_RLC0_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_RLC0_CSA_ADDR_LO = 0x015c # macro -mmSDMA0_RLC0_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC0_CSA_ADDR_HI = 0x015d # macro -mmSDMA0_RLC0_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC0_IB_SUB_REMAIN = 0x015f # macro -mmSDMA0_RLC0_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA0_RLC0_PREEMPT = 0x0160 # macro -mmSDMA0_RLC0_PREEMPT_BASE_IDX = 0 # macro -mmSDMA0_RLC0_DUMMY_REG = 0x0161 # macro -mmSDMA0_RLC0_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA0_RLC0_RB_WPTR_POLL_ADDR_HI = 0x0162 # macro -mmSDMA0_RLC0_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC0_RB_WPTR_POLL_ADDR_LO = 0x0163 # macro -mmSDMA0_RLC0_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC0_RB_AQL_CNTL = 0x0164 # macro -mmSDMA0_RLC0_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC0_MINOR_PTR_UPDATE = 0x0165 # macro -mmSDMA0_RLC0_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA0_RLC0_MIDCMD_DATA0 = 0x0170 # macro -mmSDMA0_RLC0_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA0_RLC0_MIDCMD_DATA1 = 0x0171 # macro -mmSDMA0_RLC0_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA0_RLC0_MIDCMD_DATA2 = 0x0172 # macro -mmSDMA0_RLC0_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA0_RLC0_MIDCMD_DATA3 = 0x0173 # macro -mmSDMA0_RLC0_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA0_RLC0_MIDCMD_DATA4 = 0x0174 # macro -mmSDMA0_RLC0_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA0_RLC0_MIDCMD_DATA5 = 0x0175 # macro -mmSDMA0_RLC0_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA0_RLC0_MIDCMD_DATA6 = 0x0176 # macro -mmSDMA0_RLC0_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA0_RLC0_MIDCMD_DATA7 = 0x0177 # macro -mmSDMA0_RLC0_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA0_RLC0_MIDCMD_DATA8 = 0x0178 # macro -mmSDMA0_RLC0_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA0_RLC0_MIDCMD_DATA9 = 0x0179 # macro -mmSDMA0_RLC0_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA0_RLC0_MIDCMD_DATA10 = 0x017a # macro -mmSDMA0_RLC0_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA0_RLC0_MIDCMD_CNTL = 0x017b # macro -mmSDMA0_RLC0_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC1_RB_CNTL = 0x0188 # macro -mmSDMA0_RLC1_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC1_RB_BASE = 0x0189 # macro -mmSDMA0_RLC1_RB_BASE_BASE_IDX = 0 # macro -mmSDMA0_RLC1_RB_BASE_HI = 0x018a # macro -mmSDMA0_RLC1_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC1_RB_RPTR = 0x018b # macro -mmSDMA0_RLC1_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC1_RB_RPTR_HI = 0x018c # macro -mmSDMA0_RLC1_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC1_RB_WPTR = 0x018d # macro -mmSDMA0_RLC1_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC1_RB_WPTR_HI = 0x018e # macro -mmSDMA0_RLC1_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC1_RB_WPTR_POLL_CNTL = 0x018f # macro -mmSDMA0_RLC1_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC1_RB_RPTR_ADDR_HI = 0x0190 # macro -mmSDMA0_RLC1_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC1_RB_RPTR_ADDR_LO = 0x0191 # macro -mmSDMA0_RLC1_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC1_IB_CNTL = 0x0192 # macro -mmSDMA0_RLC1_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC1_IB_RPTR = 0x0193 # macro -mmSDMA0_RLC1_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC1_IB_OFFSET = 0x0194 # macro -mmSDMA0_RLC1_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_RLC1_IB_BASE_LO = 0x0195 # macro -mmSDMA0_RLC1_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC1_IB_BASE_HI = 0x0196 # macro -mmSDMA0_RLC1_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC1_IB_SIZE = 0x0197 # macro -mmSDMA0_RLC1_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA0_RLC1_SKIP_CNTL = 0x0198 # macro -mmSDMA0_RLC1_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC1_CONTEXT_STATUS = 0x0199 # macro -mmSDMA0_RLC1_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA0_RLC1_DOORBELL = 0x019a # macro -mmSDMA0_RLC1_DOORBELL_BASE_IDX = 0 # macro -mmSDMA0_RLC1_STATUS = 0x01b0 # macro -mmSDMA0_RLC1_STATUS_BASE_IDX = 0 # macro -mmSDMA0_RLC1_DOORBELL_LOG = 0x01b1 # macro -mmSDMA0_RLC1_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA0_RLC1_WATERMARK = 0x01b2 # macro -mmSDMA0_RLC1_WATERMARK_BASE_IDX = 0 # macro -mmSDMA0_RLC1_DOORBELL_OFFSET = 0x01b3 # macro -mmSDMA0_RLC1_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_RLC1_CSA_ADDR_LO = 0x01b4 # macro -mmSDMA0_RLC1_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC1_CSA_ADDR_HI = 0x01b5 # macro -mmSDMA0_RLC1_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC1_IB_SUB_REMAIN = 0x01b7 # macro -mmSDMA0_RLC1_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA0_RLC1_PREEMPT = 0x01b8 # macro -mmSDMA0_RLC1_PREEMPT_BASE_IDX = 0 # macro -mmSDMA0_RLC1_DUMMY_REG = 0x01b9 # macro -mmSDMA0_RLC1_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA0_RLC1_RB_WPTR_POLL_ADDR_HI = 0x01ba # macro -mmSDMA0_RLC1_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC1_RB_WPTR_POLL_ADDR_LO = 0x01bb # macro -mmSDMA0_RLC1_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC1_RB_AQL_CNTL = 0x01bc # macro -mmSDMA0_RLC1_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC1_MINOR_PTR_UPDATE = 0x01bd # macro -mmSDMA0_RLC1_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA0_RLC1_MIDCMD_DATA0 = 0x01c8 # macro -mmSDMA0_RLC1_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA0_RLC1_MIDCMD_DATA1 = 0x01c9 # macro -mmSDMA0_RLC1_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA0_RLC1_MIDCMD_DATA2 = 0x01ca # macro -mmSDMA0_RLC1_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA0_RLC1_MIDCMD_DATA3 = 0x01cb # macro -mmSDMA0_RLC1_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA0_RLC1_MIDCMD_DATA4 = 0x01cc # macro -mmSDMA0_RLC1_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA0_RLC1_MIDCMD_DATA5 = 0x01cd # macro -mmSDMA0_RLC1_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA0_RLC1_MIDCMD_DATA6 = 0x01ce # macro -mmSDMA0_RLC1_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA0_RLC1_MIDCMD_DATA7 = 0x01cf # macro -mmSDMA0_RLC1_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA0_RLC1_MIDCMD_DATA8 = 0x01d0 # macro -mmSDMA0_RLC1_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA0_RLC1_MIDCMD_DATA9 = 0x01d1 # macro -mmSDMA0_RLC1_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA0_RLC1_MIDCMD_DATA10 = 0x01d2 # macro -mmSDMA0_RLC1_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA0_RLC1_MIDCMD_CNTL = 0x01d3 # macro -mmSDMA0_RLC1_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC2_RB_CNTL = 0x01e0 # macro -mmSDMA0_RLC2_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC2_RB_BASE = 0x01e1 # macro -mmSDMA0_RLC2_RB_BASE_BASE_IDX = 0 # macro -mmSDMA0_RLC2_RB_BASE_HI = 0x01e2 # macro -mmSDMA0_RLC2_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC2_RB_RPTR = 0x01e3 # macro -mmSDMA0_RLC2_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC2_RB_RPTR_HI = 0x01e4 # macro -mmSDMA0_RLC2_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC2_RB_WPTR = 0x01e5 # macro -mmSDMA0_RLC2_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC2_RB_WPTR_HI = 0x01e6 # macro -mmSDMA0_RLC2_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC2_RB_WPTR_POLL_CNTL = 0x01e7 # macro -mmSDMA0_RLC2_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC2_RB_RPTR_ADDR_HI = 0x01e8 # macro -mmSDMA0_RLC2_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC2_RB_RPTR_ADDR_LO = 0x01e9 # macro -mmSDMA0_RLC2_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC2_IB_CNTL = 0x01ea # macro -mmSDMA0_RLC2_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC2_IB_RPTR = 0x01eb # macro -mmSDMA0_RLC2_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC2_IB_OFFSET = 0x01ec # macro -mmSDMA0_RLC2_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_RLC2_IB_BASE_LO = 0x01ed # macro -mmSDMA0_RLC2_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC2_IB_BASE_HI = 0x01ee # macro -mmSDMA0_RLC2_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC2_IB_SIZE = 0x01ef # macro -mmSDMA0_RLC2_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA0_RLC2_SKIP_CNTL = 0x01f0 # macro -mmSDMA0_RLC2_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC2_CONTEXT_STATUS = 0x01f1 # macro -mmSDMA0_RLC2_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA0_RLC2_DOORBELL = 0x01f2 # macro -mmSDMA0_RLC2_DOORBELL_BASE_IDX = 0 # macro -mmSDMA0_RLC2_STATUS = 0x0208 # macro -mmSDMA0_RLC2_STATUS_BASE_IDX = 0 # macro -mmSDMA0_RLC2_DOORBELL_LOG = 0x0209 # macro -mmSDMA0_RLC2_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA0_RLC2_WATERMARK = 0x020a # macro -mmSDMA0_RLC2_WATERMARK_BASE_IDX = 0 # macro -mmSDMA0_RLC2_DOORBELL_OFFSET = 0x020b # macro -mmSDMA0_RLC2_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_RLC2_CSA_ADDR_LO = 0x020c # macro -mmSDMA0_RLC2_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC2_CSA_ADDR_HI = 0x020d # macro -mmSDMA0_RLC2_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC2_IB_SUB_REMAIN = 0x020f # macro -mmSDMA0_RLC2_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA0_RLC2_PREEMPT = 0x0210 # macro -mmSDMA0_RLC2_PREEMPT_BASE_IDX = 0 # macro -mmSDMA0_RLC2_DUMMY_REG = 0x0211 # macro -mmSDMA0_RLC2_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA0_RLC2_RB_WPTR_POLL_ADDR_HI = 0x0212 # macro -mmSDMA0_RLC2_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC2_RB_WPTR_POLL_ADDR_LO = 0x0213 # macro -mmSDMA0_RLC2_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC2_RB_AQL_CNTL = 0x0214 # macro -mmSDMA0_RLC2_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC2_MINOR_PTR_UPDATE = 0x0215 # macro -mmSDMA0_RLC2_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA0_RLC2_MIDCMD_DATA0 = 0x0220 # macro -mmSDMA0_RLC2_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA0_RLC2_MIDCMD_DATA1 = 0x0221 # macro -mmSDMA0_RLC2_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA0_RLC2_MIDCMD_DATA2 = 0x0222 # macro -mmSDMA0_RLC2_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA0_RLC2_MIDCMD_DATA3 = 0x0223 # macro -mmSDMA0_RLC2_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA0_RLC2_MIDCMD_DATA4 = 0x0224 # macro -mmSDMA0_RLC2_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA0_RLC2_MIDCMD_DATA5 = 0x0225 # macro -mmSDMA0_RLC2_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA0_RLC2_MIDCMD_DATA6 = 0x0226 # macro -mmSDMA0_RLC2_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA0_RLC2_MIDCMD_DATA7 = 0x0227 # macro -mmSDMA0_RLC2_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA0_RLC2_MIDCMD_DATA8 = 0x0228 # macro -mmSDMA0_RLC2_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA0_RLC2_MIDCMD_DATA9 = 0x0229 # macro -mmSDMA0_RLC2_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA0_RLC2_MIDCMD_DATA10 = 0x022a # macro -mmSDMA0_RLC2_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA0_RLC2_MIDCMD_CNTL = 0x022b # macro -mmSDMA0_RLC2_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC3_RB_CNTL = 0x0238 # macro -mmSDMA0_RLC3_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC3_RB_BASE = 0x0239 # macro -mmSDMA0_RLC3_RB_BASE_BASE_IDX = 0 # macro -mmSDMA0_RLC3_RB_BASE_HI = 0x023a # macro -mmSDMA0_RLC3_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC3_RB_RPTR = 0x023b # macro -mmSDMA0_RLC3_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC3_RB_RPTR_HI = 0x023c # macro -mmSDMA0_RLC3_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC3_RB_WPTR = 0x023d # macro -mmSDMA0_RLC3_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC3_RB_WPTR_HI = 0x023e # macro -mmSDMA0_RLC3_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC3_RB_WPTR_POLL_CNTL = 0x023f # macro -mmSDMA0_RLC3_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC3_RB_RPTR_ADDR_HI = 0x0240 # macro -mmSDMA0_RLC3_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC3_RB_RPTR_ADDR_LO = 0x0241 # macro -mmSDMA0_RLC3_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC3_IB_CNTL = 0x0242 # macro -mmSDMA0_RLC3_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC3_IB_RPTR = 0x0243 # macro -mmSDMA0_RLC3_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC3_IB_OFFSET = 0x0244 # macro -mmSDMA0_RLC3_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_RLC3_IB_BASE_LO = 0x0245 # macro -mmSDMA0_RLC3_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC3_IB_BASE_HI = 0x0246 # macro -mmSDMA0_RLC3_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC3_IB_SIZE = 0x0247 # macro -mmSDMA0_RLC3_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA0_RLC3_SKIP_CNTL = 0x0248 # macro -mmSDMA0_RLC3_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC3_CONTEXT_STATUS = 0x0249 # macro -mmSDMA0_RLC3_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA0_RLC3_DOORBELL = 0x024a # macro -mmSDMA0_RLC3_DOORBELL_BASE_IDX = 0 # macro -mmSDMA0_RLC3_STATUS = 0x0260 # macro -mmSDMA0_RLC3_STATUS_BASE_IDX = 0 # macro -mmSDMA0_RLC3_DOORBELL_LOG = 0x0261 # macro -mmSDMA0_RLC3_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA0_RLC3_WATERMARK = 0x0262 # macro -mmSDMA0_RLC3_WATERMARK_BASE_IDX = 0 # macro -mmSDMA0_RLC3_DOORBELL_OFFSET = 0x0263 # macro -mmSDMA0_RLC3_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_RLC3_CSA_ADDR_LO = 0x0264 # macro -mmSDMA0_RLC3_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC3_CSA_ADDR_HI = 0x0265 # macro -mmSDMA0_RLC3_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC3_IB_SUB_REMAIN = 0x0267 # macro -mmSDMA0_RLC3_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA0_RLC3_PREEMPT = 0x0268 # macro -mmSDMA0_RLC3_PREEMPT_BASE_IDX = 0 # macro -mmSDMA0_RLC3_DUMMY_REG = 0x0269 # macro -mmSDMA0_RLC3_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA0_RLC3_RB_WPTR_POLL_ADDR_HI = 0x026a # macro -mmSDMA0_RLC3_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC3_RB_WPTR_POLL_ADDR_LO = 0x026b # macro -mmSDMA0_RLC3_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC3_RB_AQL_CNTL = 0x026c # macro -mmSDMA0_RLC3_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC3_MINOR_PTR_UPDATE = 0x026d # macro -mmSDMA0_RLC3_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA0_RLC3_MIDCMD_DATA0 = 0x0278 # macro -mmSDMA0_RLC3_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA0_RLC3_MIDCMD_DATA1 = 0x0279 # macro -mmSDMA0_RLC3_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA0_RLC3_MIDCMD_DATA2 = 0x027a # macro -mmSDMA0_RLC3_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA0_RLC3_MIDCMD_DATA3 = 0x027b # macro -mmSDMA0_RLC3_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA0_RLC3_MIDCMD_DATA4 = 0x027c # macro -mmSDMA0_RLC3_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA0_RLC3_MIDCMD_DATA5 = 0x027d # macro -mmSDMA0_RLC3_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA0_RLC3_MIDCMD_DATA6 = 0x027e # macro -mmSDMA0_RLC3_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA0_RLC3_MIDCMD_DATA7 = 0x027f # macro -mmSDMA0_RLC3_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA0_RLC3_MIDCMD_DATA8 = 0x0280 # macro -mmSDMA0_RLC3_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA0_RLC3_MIDCMD_DATA9 = 0x0281 # macro -mmSDMA0_RLC3_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA0_RLC3_MIDCMD_DATA10 = 0x0282 # macro -mmSDMA0_RLC3_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA0_RLC3_MIDCMD_CNTL = 0x0283 # macro -mmSDMA0_RLC3_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC4_RB_CNTL = 0x0290 # macro -mmSDMA0_RLC4_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC4_RB_BASE = 0x0291 # macro -mmSDMA0_RLC4_RB_BASE_BASE_IDX = 0 # macro -mmSDMA0_RLC4_RB_BASE_HI = 0x0292 # macro -mmSDMA0_RLC4_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC4_RB_RPTR = 0x0293 # macro -mmSDMA0_RLC4_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC4_RB_RPTR_HI = 0x0294 # macro -mmSDMA0_RLC4_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC4_RB_WPTR = 0x0295 # macro -mmSDMA0_RLC4_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC4_RB_WPTR_HI = 0x0296 # macro -mmSDMA0_RLC4_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC4_RB_WPTR_POLL_CNTL = 0x0297 # macro -mmSDMA0_RLC4_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC4_RB_RPTR_ADDR_HI = 0x0298 # macro -mmSDMA0_RLC4_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC4_RB_RPTR_ADDR_LO = 0x0299 # macro -mmSDMA0_RLC4_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC4_IB_CNTL = 0x029a # macro -mmSDMA0_RLC4_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC4_IB_RPTR = 0x029b # macro -mmSDMA0_RLC4_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC4_IB_OFFSET = 0x029c # macro -mmSDMA0_RLC4_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_RLC4_IB_BASE_LO = 0x029d # macro -mmSDMA0_RLC4_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC4_IB_BASE_HI = 0x029e # macro -mmSDMA0_RLC4_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC4_IB_SIZE = 0x029f # macro -mmSDMA0_RLC4_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA0_RLC4_SKIP_CNTL = 0x02a0 # macro -mmSDMA0_RLC4_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC4_CONTEXT_STATUS = 0x02a1 # macro -mmSDMA0_RLC4_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA0_RLC4_DOORBELL = 0x02a2 # macro -mmSDMA0_RLC4_DOORBELL_BASE_IDX = 0 # macro -mmSDMA0_RLC4_STATUS = 0x02b8 # macro -mmSDMA0_RLC4_STATUS_BASE_IDX = 0 # macro -mmSDMA0_RLC4_DOORBELL_LOG = 0x02b9 # macro -mmSDMA0_RLC4_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA0_RLC4_WATERMARK = 0x02ba # macro -mmSDMA0_RLC4_WATERMARK_BASE_IDX = 0 # macro -mmSDMA0_RLC4_DOORBELL_OFFSET = 0x02bb # macro -mmSDMA0_RLC4_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_RLC4_CSA_ADDR_LO = 0x02bc # macro -mmSDMA0_RLC4_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC4_CSA_ADDR_HI = 0x02bd # macro -mmSDMA0_RLC4_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC4_IB_SUB_REMAIN = 0x02bf # macro -mmSDMA0_RLC4_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA0_RLC4_PREEMPT = 0x02c0 # macro -mmSDMA0_RLC4_PREEMPT_BASE_IDX = 0 # macro -mmSDMA0_RLC4_DUMMY_REG = 0x02c1 # macro -mmSDMA0_RLC4_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA0_RLC4_RB_WPTR_POLL_ADDR_HI = 0x02c2 # macro -mmSDMA0_RLC4_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC4_RB_WPTR_POLL_ADDR_LO = 0x02c3 # macro -mmSDMA0_RLC4_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC4_RB_AQL_CNTL = 0x02c4 # macro -mmSDMA0_RLC4_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC4_MINOR_PTR_UPDATE = 0x02c5 # macro -mmSDMA0_RLC4_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA0_RLC4_MIDCMD_DATA0 = 0x02d0 # macro -mmSDMA0_RLC4_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA0_RLC4_MIDCMD_DATA1 = 0x02d1 # macro -mmSDMA0_RLC4_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA0_RLC4_MIDCMD_DATA2 = 0x02d2 # macro -mmSDMA0_RLC4_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA0_RLC4_MIDCMD_DATA3 = 0x02d3 # macro -mmSDMA0_RLC4_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA0_RLC4_MIDCMD_DATA4 = 0x02d4 # macro -mmSDMA0_RLC4_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA0_RLC4_MIDCMD_DATA5 = 0x02d5 # macro -mmSDMA0_RLC4_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA0_RLC4_MIDCMD_DATA6 = 0x02d6 # macro -mmSDMA0_RLC4_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA0_RLC4_MIDCMD_DATA7 = 0x02d7 # macro -mmSDMA0_RLC4_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA0_RLC4_MIDCMD_DATA8 = 0x02d8 # macro -mmSDMA0_RLC4_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA0_RLC4_MIDCMD_DATA9 = 0x02d9 # macro -mmSDMA0_RLC4_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA0_RLC4_MIDCMD_DATA10 = 0x02da # macro -mmSDMA0_RLC4_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA0_RLC4_MIDCMD_CNTL = 0x02db # macro -mmSDMA0_RLC4_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC5_RB_CNTL = 0x02e8 # macro -mmSDMA0_RLC5_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC5_RB_BASE = 0x02e9 # macro -mmSDMA0_RLC5_RB_BASE_BASE_IDX = 0 # macro -mmSDMA0_RLC5_RB_BASE_HI = 0x02ea # macro -mmSDMA0_RLC5_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC5_RB_RPTR = 0x02eb # macro -mmSDMA0_RLC5_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC5_RB_RPTR_HI = 0x02ec # macro -mmSDMA0_RLC5_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC5_RB_WPTR = 0x02ed # macro -mmSDMA0_RLC5_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC5_RB_WPTR_HI = 0x02ee # macro -mmSDMA0_RLC5_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC5_RB_WPTR_POLL_CNTL = 0x02ef # macro -mmSDMA0_RLC5_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC5_RB_RPTR_ADDR_HI = 0x02f0 # macro -mmSDMA0_RLC5_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC5_RB_RPTR_ADDR_LO = 0x02f1 # macro -mmSDMA0_RLC5_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC5_IB_CNTL = 0x02f2 # macro -mmSDMA0_RLC5_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC5_IB_RPTR = 0x02f3 # macro -mmSDMA0_RLC5_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC5_IB_OFFSET = 0x02f4 # macro -mmSDMA0_RLC5_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_RLC5_IB_BASE_LO = 0x02f5 # macro -mmSDMA0_RLC5_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC5_IB_BASE_HI = 0x02f6 # macro -mmSDMA0_RLC5_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC5_IB_SIZE = 0x02f7 # macro -mmSDMA0_RLC5_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA0_RLC5_SKIP_CNTL = 0x02f8 # macro -mmSDMA0_RLC5_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC5_CONTEXT_STATUS = 0x02f9 # macro -mmSDMA0_RLC5_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA0_RLC5_DOORBELL = 0x02fa # macro -mmSDMA0_RLC5_DOORBELL_BASE_IDX = 0 # macro -mmSDMA0_RLC5_STATUS = 0x0310 # macro -mmSDMA0_RLC5_STATUS_BASE_IDX = 0 # macro -mmSDMA0_RLC5_DOORBELL_LOG = 0x0311 # macro -mmSDMA0_RLC5_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA0_RLC5_WATERMARK = 0x0312 # macro -mmSDMA0_RLC5_WATERMARK_BASE_IDX = 0 # macro -mmSDMA0_RLC5_DOORBELL_OFFSET = 0x0313 # macro -mmSDMA0_RLC5_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_RLC5_CSA_ADDR_LO = 0x0314 # macro -mmSDMA0_RLC5_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC5_CSA_ADDR_HI = 0x0315 # macro -mmSDMA0_RLC5_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC5_IB_SUB_REMAIN = 0x0317 # macro -mmSDMA0_RLC5_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA0_RLC5_PREEMPT = 0x0318 # macro -mmSDMA0_RLC5_PREEMPT_BASE_IDX = 0 # macro -mmSDMA0_RLC5_DUMMY_REG = 0x0319 # macro -mmSDMA0_RLC5_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA0_RLC5_RB_WPTR_POLL_ADDR_HI = 0x031a # macro -mmSDMA0_RLC5_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC5_RB_WPTR_POLL_ADDR_LO = 0x031b # macro -mmSDMA0_RLC5_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC5_RB_AQL_CNTL = 0x031c # macro -mmSDMA0_RLC5_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC5_MINOR_PTR_UPDATE = 0x031d # macro -mmSDMA0_RLC5_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA0_RLC5_MIDCMD_DATA0 = 0x0328 # macro -mmSDMA0_RLC5_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA0_RLC5_MIDCMD_DATA1 = 0x0329 # macro -mmSDMA0_RLC5_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA0_RLC5_MIDCMD_DATA2 = 0x032a # macro -mmSDMA0_RLC5_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA0_RLC5_MIDCMD_DATA3 = 0x032b # macro -mmSDMA0_RLC5_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA0_RLC5_MIDCMD_DATA4 = 0x032c # macro -mmSDMA0_RLC5_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA0_RLC5_MIDCMD_DATA5 = 0x032d # macro -mmSDMA0_RLC5_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA0_RLC5_MIDCMD_DATA6 = 0x032e # macro -mmSDMA0_RLC5_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA0_RLC5_MIDCMD_DATA7 = 0x032f # macro -mmSDMA0_RLC5_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA0_RLC5_MIDCMD_DATA8 = 0x0330 # macro -mmSDMA0_RLC5_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA0_RLC5_MIDCMD_DATA9 = 0x0331 # macro -mmSDMA0_RLC5_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA0_RLC5_MIDCMD_DATA10 = 0x0332 # macro -mmSDMA0_RLC5_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA0_RLC5_MIDCMD_CNTL = 0x0333 # macro -mmSDMA0_RLC5_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC6_RB_CNTL = 0x0340 # macro -mmSDMA0_RLC6_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC6_RB_BASE = 0x0341 # macro -mmSDMA0_RLC6_RB_BASE_BASE_IDX = 0 # macro -mmSDMA0_RLC6_RB_BASE_HI = 0x0342 # macro -mmSDMA0_RLC6_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC6_RB_RPTR = 0x0343 # macro -mmSDMA0_RLC6_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC6_RB_RPTR_HI = 0x0344 # macro -mmSDMA0_RLC6_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC6_RB_WPTR = 0x0345 # macro -mmSDMA0_RLC6_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC6_RB_WPTR_HI = 0x0346 # macro -mmSDMA0_RLC6_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC6_RB_WPTR_POLL_CNTL = 0x0347 # macro -mmSDMA0_RLC6_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC6_RB_RPTR_ADDR_HI = 0x0348 # macro -mmSDMA0_RLC6_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC6_RB_RPTR_ADDR_LO = 0x0349 # macro -mmSDMA0_RLC6_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC6_IB_CNTL = 0x034a # macro -mmSDMA0_RLC6_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC6_IB_RPTR = 0x034b # macro -mmSDMA0_RLC6_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC6_IB_OFFSET = 0x034c # macro -mmSDMA0_RLC6_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_RLC6_IB_BASE_LO = 0x034d # macro -mmSDMA0_RLC6_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC6_IB_BASE_HI = 0x034e # macro -mmSDMA0_RLC6_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC6_IB_SIZE = 0x034f # macro -mmSDMA0_RLC6_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA0_RLC6_SKIP_CNTL = 0x0350 # macro -mmSDMA0_RLC6_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC6_CONTEXT_STATUS = 0x0351 # macro -mmSDMA0_RLC6_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA0_RLC6_DOORBELL = 0x0352 # macro -mmSDMA0_RLC6_DOORBELL_BASE_IDX = 0 # macro -mmSDMA0_RLC6_STATUS = 0x0368 # macro -mmSDMA0_RLC6_STATUS_BASE_IDX = 0 # macro -mmSDMA0_RLC6_DOORBELL_LOG = 0x0369 # macro -mmSDMA0_RLC6_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA0_RLC6_WATERMARK = 0x036a # macro -mmSDMA0_RLC6_WATERMARK_BASE_IDX = 0 # macro -mmSDMA0_RLC6_DOORBELL_OFFSET = 0x036b # macro -mmSDMA0_RLC6_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_RLC6_CSA_ADDR_LO = 0x036c # macro -mmSDMA0_RLC6_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC6_CSA_ADDR_HI = 0x036d # macro -mmSDMA0_RLC6_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC6_IB_SUB_REMAIN = 0x036f # macro -mmSDMA0_RLC6_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA0_RLC6_PREEMPT = 0x0370 # macro -mmSDMA0_RLC6_PREEMPT_BASE_IDX = 0 # macro -mmSDMA0_RLC6_DUMMY_REG = 0x0371 # macro -mmSDMA0_RLC6_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA0_RLC6_RB_WPTR_POLL_ADDR_HI = 0x0372 # macro -mmSDMA0_RLC6_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC6_RB_WPTR_POLL_ADDR_LO = 0x0373 # macro -mmSDMA0_RLC6_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC6_RB_AQL_CNTL = 0x0374 # macro -mmSDMA0_RLC6_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC6_MINOR_PTR_UPDATE = 0x0375 # macro -mmSDMA0_RLC6_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA0_RLC6_MIDCMD_DATA0 = 0x0380 # macro -mmSDMA0_RLC6_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA0_RLC6_MIDCMD_DATA1 = 0x0381 # macro -mmSDMA0_RLC6_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA0_RLC6_MIDCMD_DATA2 = 0x0382 # macro -mmSDMA0_RLC6_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA0_RLC6_MIDCMD_DATA3 = 0x0383 # macro -mmSDMA0_RLC6_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA0_RLC6_MIDCMD_DATA4 = 0x0384 # macro -mmSDMA0_RLC6_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA0_RLC6_MIDCMD_DATA5 = 0x0385 # macro -mmSDMA0_RLC6_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA0_RLC6_MIDCMD_DATA6 = 0x0386 # macro -mmSDMA0_RLC6_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA0_RLC6_MIDCMD_DATA7 = 0x0387 # macro -mmSDMA0_RLC6_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA0_RLC6_MIDCMD_DATA8 = 0x0388 # macro -mmSDMA0_RLC6_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA0_RLC6_MIDCMD_DATA9 = 0x0389 # macro -mmSDMA0_RLC6_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA0_RLC6_MIDCMD_DATA10 = 0x038a # macro -mmSDMA0_RLC6_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA0_RLC6_MIDCMD_CNTL = 0x038b # macro -mmSDMA0_RLC6_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC7_RB_CNTL = 0x0398 # macro -mmSDMA0_RLC7_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC7_RB_BASE = 0x0399 # macro -mmSDMA0_RLC7_RB_BASE_BASE_IDX = 0 # macro -mmSDMA0_RLC7_RB_BASE_HI = 0x039a # macro -mmSDMA0_RLC7_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC7_RB_RPTR = 0x039b # macro -mmSDMA0_RLC7_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC7_RB_RPTR_HI = 0x039c # macro -mmSDMA0_RLC7_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC7_RB_WPTR = 0x039d # macro -mmSDMA0_RLC7_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC7_RB_WPTR_HI = 0x039e # macro -mmSDMA0_RLC7_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC7_RB_WPTR_POLL_CNTL = 0x039f # macro -mmSDMA0_RLC7_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC7_RB_RPTR_ADDR_HI = 0x03a0 # macro -mmSDMA0_RLC7_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC7_RB_RPTR_ADDR_LO = 0x03a1 # macro -mmSDMA0_RLC7_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC7_IB_CNTL = 0x03a2 # macro -mmSDMA0_RLC7_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC7_IB_RPTR = 0x03a3 # macro -mmSDMA0_RLC7_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA0_RLC7_IB_OFFSET = 0x03a4 # macro -mmSDMA0_RLC7_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_RLC7_IB_BASE_LO = 0x03a5 # macro -mmSDMA0_RLC7_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC7_IB_BASE_HI = 0x03a6 # macro -mmSDMA0_RLC7_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC7_IB_SIZE = 0x03a7 # macro -mmSDMA0_RLC7_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA0_RLC7_SKIP_CNTL = 0x03a8 # macro -mmSDMA0_RLC7_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC7_CONTEXT_STATUS = 0x03a9 # macro -mmSDMA0_RLC7_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA0_RLC7_DOORBELL = 0x03aa # macro -mmSDMA0_RLC7_DOORBELL_BASE_IDX = 0 # macro -mmSDMA0_RLC7_STATUS = 0x03c0 # macro -mmSDMA0_RLC7_STATUS_BASE_IDX = 0 # macro -mmSDMA0_RLC7_DOORBELL_LOG = 0x03c1 # macro -mmSDMA0_RLC7_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA0_RLC7_WATERMARK = 0x03c2 # macro -mmSDMA0_RLC7_WATERMARK_BASE_IDX = 0 # macro -mmSDMA0_RLC7_DOORBELL_OFFSET = 0x03c3 # macro -mmSDMA0_RLC7_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA0_RLC7_CSA_ADDR_LO = 0x03c4 # macro -mmSDMA0_RLC7_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC7_CSA_ADDR_HI = 0x03c5 # macro -mmSDMA0_RLC7_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC7_IB_SUB_REMAIN = 0x03c7 # macro -mmSDMA0_RLC7_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA0_RLC7_PREEMPT = 0x03c8 # macro -mmSDMA0_RLC7_PREEMPT_BASE_IDX = 0 # macro -mmSDMA0_RLC7_DUMMY_REG = 0x03c9 # macro -mmSDMA0_RLC7_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA0_RLC7_RB_WPTR_POLL_ADDR_HI = 0x03ca # macro -mmSDMA0_RLC7_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA0_RLC7_RB_WPTR_POLL_ADDR_LO = 0x03cb # macro -mmSDMA0_RLC7_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA0_RLC7_RB_AQL_CNTL = 0x03cc # macro -mmSDMA0_RLC7_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA0_RLC7_MINOR_PTR_UPDATE = 0x03cd # macro -mmSDMA0_RLC7_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA0_RLC7_MIDCMD_DATA0 = 0x03d8 # macro -mmSDMA0_RLC7_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA0_RLC7_MIDCMD_DATA1 = 0x03d9 # macro -mmSDMA0_RLC7_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA0_RLC7_MIDCMD_DATA2 = 0x03da # macro -mmSDMA0_RLC7_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA0_RLC7_MIDCMD_DATA3 = 0x03db # macro -mmSDMA0_RLC7_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA0_RLC7_MIDCMD_DATA4 = 0x03dc # macro -mmSDMA0_RLC7_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA0_RLC7_MIDCMD_DATA5 = 0x03dd # macro -mmSDMA0_RLC7_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA0_RLC7_MIDCMD_DATA6 = 0x03de # macro -mmSDMA0_RLC7_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA0_RLC7_MIDCMD_DATA7 = 0x03df # macro -mmSDMA0_RLC7_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA0_RLC7_MIDCMD_DATA8 = 0x03e0 # macro -mmSDMA0_RLC7_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA0_RLC7_MIDCMD_DATA9 = 0x03e1 # macro -mmSDMA0_RLC7_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA0_RLC7_MIDCMD_DATA10 = 0x03e2 # macro -mmSDMA0_RLC7_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA0_RLC7_MIDCMD_CNTL = 0x03e3 # macro -mmSDMA0_RLC7_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmSDMA1_DEC_START = 0x0600 # macro -mmSDMA1_DEC_START_BASE_IDX = 0 # macro -mmSDMA1_GLOBAL_TIMESTAMP_LO = 0x060f # macro -mmSDMA1_GLOBAL_TIMESTAMP_LO_BASE_IDX = 0 # macro -mmSDMA1_GLOBAL_TIMESTAMP_HI = 0x0610 # macro -mmSDMA1_GLOBAL_TIMESTAMP_HI_BASE_IDX = 0 # macro -mmSDMA1_PG_CNTL = 0x0616 # macro -mmSDMA1_PG_CNTL_BASE_IDX = 0 # macro -mmSDMA1_PG_CTX_LO = 0x0617 # macro -mmSDMA1_PG_CTX_LO_BASE_IDX = 0 # macro -mmSDMA1_PG_CTX_HI = 0x0618 # macro -mmSDMA1_PG_CTX_HI_BASE_IDX = 0 # macro -mmSDMA1_PG_CTX_CNTL = 0x0619 # macro -mmSDMA1_PG_CTX_CNTL_BASE_IDX = 0 # macro -mmSDMA1_POWER_CNTL = 0x061a # macro -mmSDMA1_POWER_CNTL_BASE_IDX = 0 # macro -mmSDMA1_CLK_CTRL = 0x061b # macro -mmSDMA1_CLK_CTRL_BASE_IDX = 0 # macro -mmSDMA1_CNTL = 0x061c # macro -mmSDMA1_CNTL_BASE_IDX = 0 # macro -mmSDMA1_CHICKEN_BITS = 0x061d # macro -mmSDMA1_CHICKEN_BITS_BASE_IDX = 0 # macro -mmSDMA1_GB_ADDR_CONFIG = 0x061e # macro -mmSDMA1_GB_ADDR_CONFIG_BASE_IDX = 0 # macro -mmSDMA1_GB_ADDR_CONFIG_READ = 0x061f # macro -mmSDMA1_GB_ADDR_CONFIG_READ_BASE_IDX = 0 # macro -mmSDMA1_RB_RPTR_FETCH_HI = 0x0620 # macro -mmSDMA1_RB_RPTR_FETCH_HI_BASE_IDX = 0 # macro -mmSDMA1_SEM_WAIT_FAIL_TIMER_CNTL = 0x0621 # macro -mmSDMA1_SEM_WAIT_FAIL_TIMER_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RB_RPTR_FETCH = 0x0622 # macro -mmSDMA1_RB_RPTR_FETCH_BASE_IDX = 0 # macro -mmSDMA1_IB_OFFSET_FETCH = 0x0623 # macro -mmSDMA1_IB_OFFSET_FETCH_BASE_IDX = 0 # macro -mmSDMA1_PROGRAM = 0x0624 # macro -mmSDMA1_PROGRAM_BASE_IDX = 0 # macro -mmSDMA1_STATUS_REG = 0x0625 # macro -mmSDMA1_STATUS_REG_BASE_IDX = 0 # macro -mmSDMA1_STATUS1_REG = 0x0626 # macro -mmSDMA1_STATUS1_REG_BASE_IDX = 0 # macro -mmSDMA1_RD_BURST_CNTL = 0x0627 # macro -mmSDMA1_RD_BURST_CNTL_BASE_IDX = 0 # macro -mmSDMA1_HBM_PAGE_CONFIG = 0x0628 # macro -mmSDMA1_HBM_PAGE_CONFIG_BASE_IDX = 0 # macro -mmSDMA1_UCODE_CHECKSUM = 0x0629 # macro -mmSDMA1_UCODE_CHECKSUM_BASE_IDX = 0 # macro -mmSDMA1_F32_CNTL = 0x062a # macro -mmSDMA1_F32_CNTL_BASE_IDX = 0 # macro -mmSDMA1_FREEZE = 0x062b # macro -mmSDMA1_FREEZE_BASE_IDX = 0 # macro -mmSDMA1_PHASE0_QUANTUM = 0x062c # macro -mmSDMA1_PHASE0_QUANTUM_BASE_IDX = 0 # macro -mmSDMA1_PHASE1_QUANTUM = 0x062d # macro -mmSDMA1_PHASE1_QUANTUM_BASE_IDX = 0 # macro -mmSDMA1_EDC_CONFIG = 0x0632 # macro -mmSDMA1_EDC_CONFIG_BASE_IDX = 0 # macro -mmSDMA1_BA_THRESHOLD = 0x0633 # macro -mmSDMA1_BA_THRESHOLD_BASE_IDX = 0 # macro -mmSDMA1_ID = 0x0634 # macro -mmSDMA1_ID_BASE_IDX = 0 # macro -mmSDMA1_VERSION = 0x0635 # macro -mmSDMA1_VERSION_BASE_IDX = 0 # macro -mmSDMA1_EDC_COUNTER = 0x0636 # macro -mmSDMA1_EDC_COUNTER_BASE_IDX = 0 # macro -mmSDMA1_EDC_COUNTER_CLEAR = 0x0637 # macro -mmSDMA1_EDC_COUNTER_CLEAR_BASE_IDX = 0 # macro -mmSDMA1_STATUS2_REG = 0x0638 # macro -mmSDMA1_STATUS2_REG_BASE_IDX = 0 # macro -mmSDMA1_ATOMIC_CNTL = 0x0639 # macro -mmSDMA1_ATOMIC_CNTL_BASE_IDX = 0 # macro -mmSDMA1_ATOMIC_PREOP_LO = 0x063a # macro -mmSDMA1_ATOMIC_PREOP_LO_BASE_IDX = 0 # macro -mmSDMA1_ATOMIC_PREOP_HI = 0x063b # macro -mmSDMA1_ATOMIC_PREOP_HI_BASE_IDX = 0 # macro -mmSDMA1_UTCL1_CNTL = 0x063c # macro -mmSDMA1_UTCL1_CNTL_BASE_IDX = 0 # macro -mmSDMA1_UTCL1_WATERMK = 0x063d # macro -mmSDMA1_UTCL1_WATERMK_BASE_IDX = 0 # macro -mmSDMA1_UTCL1_RD_STATUS = 0x063e # macro -mmSDMA1_UTCL1_RD_STATUS_BASE_IDX = 0 # macro -mmSDMA1_UTCL1_WR_STATUS = 0x063f # macro -mmSDMA1_UTCL1_WR_STATUS_BASE_IDX = 0 # macro -mmSDMA1_UTCL1_INV0 = 0x0640 # macro -mmSDMA1_UTCL1_INV0_BASE_IDX = 0 # macro -mmSDMA1_UTCL1_INV1 = 0x0641 # macro -mmSDMA1_UTCL1_INV1_BASE_IDX = 0 # macro -mmSDMA1_UTCL1_INV2 = 0x0642 # macro -mmSDMA1_UTCL1_INV2_BASE_IDX = 0 # macro -mmSDMA1_UTCL1_RD_XNACK0 = 0x0643 # macro -mmSDMA1_UTCL1_RD_XNACK0_BASE_IDX = 0 # macro -mmSDMA1_UTCL1_RD_XNACK1 = 0x0644 # macro -mmSDMA1_UTCL1_RD_XNACK1_BASE_IDX = 0 # macro -mmSDMA1_UTCL1_WR_XNACK0 = 0x0645 # macro -mmSDMA1_UTCL1_WR_XNACK0_BASE_IDX = 0 # macro -mmSDMA1_UTCL1_WR_XNACK1 = 0x0646 # macro -mmSDMA1_UTCL1_WR_XNACK1_BASE_IDX = 0 # macro -mmSDMA1_UTCL1_TIMEOUT = 0x0647 # macro -mmSDMA1_UTCL1_TIMEOUT_BASE_IDX = 0 # macro -mmSDMA1_UTCL1_PAGE = 0x0648 # macro -mmSDMA1_UTCL1_PAGE_BASE_IDX = 0 # macro -mmSDMA1_RELAX_ORDERING_LUT = 0x064a # macro -mmSDMA1_RELAX_ORDERING_LUT_BASE_IDX = 0 # macro -mmSDMA1_CHICKEN_BITS_2 = 0x064b # macro -mmSDMA1_CHICKEN_BITS_2_BASE_IDX = 0 # macro -mmSDMA1_STATUS3_REG = 0x064c # macro -mmSDMA1_STATUS3_REG_BASE_IDX = 0 # macro -mmSDMA1_PHYSICAL_ADDR_LO = 0x064d # macro -mmSDMA1_PHYSICAL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_PHYSICAL_ADDR_HI = 0x064e # macro -mmSDMA1_PHYSICAL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_PHASE2_QUANTUM = 0x064f # macro -mmSDMA1_PHASE2_QUANTUM_BASE_IDX = 0 # macro -mmSDMA1_ERROR_LOG = 0x0650 # macro -mmSDMA1_ERROR_LOG_BASE_IDX = 0 # macro -mmSDMA1_PUB_DUMMY_REG0 = 0x0651 # macro -mmSDMA1_PUB_DUMMY_REG0_BASE_IDX = 0 # macro -mmSDMA1_PUB_DUMMY_REG1 = 0x0652 # macro -mmSDMA1_PUB_DUMMY_REG1_BASE_IDX = 0 # macro -mmSDMA1_PUB_DUMMY_REG2 = 0x0653 # macro -mmSDMA1_PUB_DUMMY_REG2_BASE_IDX = 0 # macro -mmSDMA1_PUB_DUMMY_REG3 = 0x0654 # macro -mmSDMA1_PUB_DUMMY_REG3_BASE_IDX = 0 # macro -mmSDMA1_F32_COUNTER = 0x0655 # macro -mmSDMA1_F32_COUNTER_BASE_IDX = 0 # macro -mmSDMA1_CRD_CNTL = 0x065b # macro -mmSDMA1_CRD_CNTL_BASE_IDX = 0 # macro -mmSDMA1_AQL_STATUS = 0x065f # macro -mmSDMA1_AQL_STATUS_BASE_IDX = 0 # macro -mmSDMA1_EA_DBIT_ADDR_DATA = 0x0660 # macro -mmSDMA1_EA_DBIT_ADDR_DATA_BASE_IDX = 0 # macro -mmSDMA1_EA_DBIT_ADDR_INDEX = 0x0661 # macro -mmSDMA1_EA_DBIT_ADDR_INDEX_BASE_IDX = 0 # macro -mmSDMA1_TLBI_GCR_CNTL = 0x0662 # macro -mmSDMA1_TLBI_GCR_CNTL_BASE_IDX = 0 # macro -mmSDMA1_TILING_CONFIG = 0x0663 # macro -mmSDMA1_TILING_CONFIG_BASE_IDX = 0 # macro -mmSDMA1_INT_STATUS = 0x0670 # macro -mmSDMA1_INT_STATUS_BASE_IDX = 0 # macro -mmSDMA1_HOLE_ADDR_LO = 0x0672 # macro -mmSDMA1_HOLE_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_HOLE_ADDR_HI = 0x0673 # macro -mmSDMA1_HOLE_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_CLOCK_GATING_REG = 0x0675 # macro -mmSDMA1_CLOCK_GATING_REG_BASE_IDX = 0 # macro -mmSDMA1_STATUS4_REG = 0x0676 # macro -mmSDMA1_STATUS4_REG_BASE_IDX = 0 # macro -mmSDMA1_SCRATCH_RAM_DATA = 0x0677 # macro -mmSDMA1_SCRATCH_RAM_DATA_BASE_IDX = 0 # macro -mmSDMA1_SCRATCH_RAM_ADDR = 0x0678 # macro -mmSDMA1_SCRATCH_RAM_ADDR_BASE_IDX = 0 # macro -mmSDMA1_TIMESTAMP_CNTL = 0x0679 # macro -mmSDMA1_TIMESTAMP_CNTL_BASE_IDX = 0 # macro -mmSDMA1_STATUS5_REG = 0x067a # macro -mmSDMA1_STATUS5_REG_BASE_IDX = 0 # macro -mmSDMA1_QUEUE_RESET_REQ = 0x067b # macro -mmSDMA1_QUEUE_RESET_REQ_BASE_IDX = 0 # macro -mmSDMA1_GFX_RB_CNTL = 0x0680 # macro -mmSDMA1_GFX_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_GFX_RB_BASE = 0x0681 # macro -mmSDMA1_GFX_RB_BASE_BASE_IDX = 0 # macro -mmSDMA1_GFX_RB_BASE_HI = 0x0682 # macro -mmSDMA1_GFX_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_GFX_RB_RPTR = 0x0683 # macro -mmSDMA1_GFX_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_GFX_RB_RPTR_HI = 0x0684 # macro -mmSDMA1_GFX_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_GFX_RB_WPTR = 0x0685 # macro -mmSDMA1_GFX_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA1_GFX_RB_WPTR_HI = 0x0686 # macro -mmSDMA1_GFX_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_GFX_RB_WPTR_POLL_CNTL = 0x0687 # macro -mmSDMA1_GFX_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_GFX_RB_RPTR_ADDR_HI = 0x0688 # macro -mmSDMA1_GFX_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_GFX_RB_RPTR_ADDR_LO = 0x0689 # macro -mmSDMA1_GFX_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_GFX_IB_CNTL = 0x068a # macro -mmSDMA1_GFX_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_GFX_IB_RPTR = 0x068b # macro -mmSDMA1_GFX_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_GFX_IB_OFFSET = 0x068c # macro -mmSDMA1_GFX_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_GFX_IB_BASE_LO = 0x068d # macro -mmSDMA1_GFX_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA1_GFX_IB_BASE_HI = 0x068e # macro -mmSDMA1_GFX_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_GFX_IB_SIZE = 0x068f # macro -mmSDMA1_GFX_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA1_GFX_SKIP_CNTL = 0x0690 # macro -mmSDMA1_GFX_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA1_GFX_CONTEXT_STATUS = 0x0691 # macro -mmSDMA1_GFX_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA1_GFX_DOORBELL = 0x0692 # macro -mmSDMA1_GFX_DOORBELL_BASE_IDX = 0 # macro -mmSDMA1_GFX_CONTEXT_CNTL = 0x0693 # macro -mmSDMA1_GFX_CONTEXT_CNTL_BASE_IDX = 0 # macro -mmSDMA1_GFX_STATUS = 0x06a8 # macro -mmSDMA1_GFX_STATUS_BASE_IDX = 0 # macro -mmSDMA1_GFX_DOORBELL_LOG = 0x06a9 # macro -mmSDMA1_GFX_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA1_GFX_WATERMARK = 0x06aa # macro -mmSDMA1_GFX_WATERMARK_BASE_IDX = 0 # macro -mmSDMA1_GFX_DOORBELL_OFFSET = 0x06ab # macro -mmSDMA1_GFX_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_GFX_CSA_ADDR_LO = 0x06ac # macro -mmSDMA1_GFX_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_GFX_CSA_ADDR_HI = 0x06ad # macro -mmSDMA1_GFX_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_GFX_IB_SUB_REMAIN = 0x06af # macro -mmSDMA1_GFX_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA1_GFX_PREEMPT = 0x06b0 # macro -mmSDMA1_GFX_PREEMPT_BASE_IDX = 0 # macro -mmSDMA1_GFX_DUMMY_REG = 0x06b1 # macro -mmSDMA1_GFX_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA1_GFX_RB_WPTR_POLL_ADDR_HI = 0x06b2 # macro -mmSDMA1_GFX_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_GFX_RB_WPTR_POLL_ADDR_LO = 0x06b3 # macro -mmSDMA1_GFX_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_GFX_RB_AQL_CNTL = 0x06b4 # macro -mmSDMA1_GFX_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_GFX_MINOR_PTR_UPDATE = 0x06b5 # macro -mmSDMA1_GFX_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA1_GFX_MIDCMD_DATA0 = 0x06c0 # macro -mmSDMA1_GFX_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA1_GFX_MIDCMD_DATA1 = 0x06c1 # macro -mmSDMA1_GFX_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA1_GFX_MIDCMD_DATA2 = 0x06c2 # macro -mmSDMA1_GFX_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA1_GFX_MIDCMD_DATA3 = 0x06c3 # macro -mmSDMA1_GFX_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA1_GFX_MIDCMD_DATA4 = 0x06c4 # macro -mmSDMA1_GFX_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA1_GFX_MIDCMD_DATA5 = 0x06c5 # macro -mmSDMA1_GFX_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA1_GFX_MIDCMD_DATA6 = 0x06c6 # macro -mmSDMA1_GFX_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA1_GFX_MIDCMD_DATA7 = 0x06c7 # macro -mmSDMA1_GFX_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA1_GFX_MIDCMD_DATA8 = 0x06c8 # macro -mmSDMA1_GFX_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA1_GFX_MIDCMD_DATA9 = 0x06c9 # macro -mmSDMA1_GFX_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA1_GFX_MIDCMD_DATA10 = 0x06ca # macro -mmSDMA1_GFX_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA1_GFX_MIDCMD_CNTL = 0x06cb # macro -mmSDMA1_GFX_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmSDMA1_PAGE_RB_CNTL = 0x06d8 # macro -mmSDMA1_PAGE_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_PAGE_RB_BASE = 0x06d9 # macro -mmSDMA1_PAGE_RB_BASE_BASE_IDX = 0 # macro -mmSDMA1_PAGE_RB_BASE_HI = 0x06da # macro -mmSDMA1_PAGE_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_PAGE_RB_RPTR = 0x06db # macro -mmSDMA1_PAGE_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_PAGE_RB_RPTR_HI = 0x06dc # macro -mmSDMA1_PAGE_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_PAGE_RB_WPTR = 0x06dd # macro -mmSDMA1_PAGE_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA1_PAGE_RB_WPTR_HI = 0x06de # macro -mmSDMA1_PAGE_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_PAGE_RB_WPTR_POLL_CNTL = 0x06df # macro -mmSDMA1_PAGE_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_PAGE_RB_RPTR_ADDR_HI = 0x06e0 # macro -mmSDMA1_PAGE_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_PAGE_RB_RPTR_ADDR_LO = 0x06e1 # macro -mmSDMA1_PAGE_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_PAGE_IB_CNTL = 0x06e2 # macro -mmSDMA1_PAGE_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_PAGE_IB_RPTR = 0x06e3 # macro -mmSDMA1_PAGE_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_PAGE_IB_OFFSET = 0x06e4 # macro -mmSDMA1_PAGE_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_PAGE_IB_BASE_LO = 0x06e5 # macro -mmSDMA1_PAGE_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA1_PAGE_IB_BASE_HI = 0x06e6 # macro -mmSDMA1_PAGE_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_PAGE_IB_SIZE = 0x06e7 # macro -mmSDMA1_PAGE_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA1_PAGE_SKIP_CNTL = 0x06e8 # macro -mmSDMA1_PAGE_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA1_PAGE_CONTEXT_STATUS = 0x06e9 # macro -mmSDMA1_PAGE_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA1_PAGE_DOORBELL = 0x06ea # macro -mmSDMA1_PAGE_DOORBELL_BASE_IDX = 0 # macro -mmSDMA1_PAGE_STATUS = 0x0700 # macro -mmSDMA1_PAGE_STATUS_BASE_IDX = 0 # macro -mmSDMA1_PAGE_DOORBELL_LOG = 0x0701 # macro -mmSDMA1_PAGE_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA1_PAGE_WATERMARK = 0x0702 # macro -mmSDMA1_PAGE_WATERMARK_BASE_IDX = 0 # macro -mmSDMA1_PAGE_DOORBELL_OFFSET = 0x0703 # macro -mmSDMA1_PAGE_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_PAGE_CSA_ADDR_LO = 0x0704 # macro -mmSDMA1_PAGE_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_PAGE_CSA_ADDR_HI = 0x0705 # macro -mmSDMA1_PAGE_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_PAGE_IB_SUB_REMAIN = 0x0707 # macro -mmSDMA1_PAGE_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA1_PAGE_PREEMPT = 0x0708 # macro -mmSDMA1_PAGE_PREEMPT_BASE_IDX = 0 # macro -mmSDMA1_PAGE_DUMMY_REG = 0x0709 # macro -mmSDMA1_PAGE_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA1_PAGE_RB_WPTR_POLL_ADDR_HI = 0x070a # macro -mmSDMA1_PAGE_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_PAGE_RB_WPTR_POLL_ADDR_LO = 0x070b # macro -mmSDMA1_PAGE_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_PAGE_RB_AQL_CNTL = 0x070c # macro -mmSDMA1_PAGE_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_PAGE_MINOR_PTR_UPDATE = 0x070d # macro -mmSDMA1_PAGE_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA1_PAGE_MIDCMD_DATA0 = 0x0718 # macro -mmSDMA1_PAGE_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA1_PAGE_MIDCMD_DATA1 = 0x0719 # macro -mmSDMA1_PAGE_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA1_PAGE_MIDCMD_DATA2 = 0x071a # macro -mmSDMA1_PAGE_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA1_PAGE_MIDCMD_DATA3 = 0x071b # macro -mmSDMA1_PAGE_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA1_PAGE_MIDCMD_DATA4 = 0x071c # macro -mmSDMA1_PAGE_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA1_PAGE_MIDCMD_DATA5 = 0x071d # macro -mmSDMA1_PAGE_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA1_PAGE_MIDCMD_DATA6 = 0x071e # macro -mmSDMA1_PAGE_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA1_PAGE_MIDCMD_DATA7 = 0x071f # macro -mmSDMA1_PAGE_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA1_PAGE_MIDCMD_DATA8 = 0x0720 # macro -mmSDMA1_PAGE_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA1_PAGE_MIDCMD_DATA9 = 0x0721 # macro -mmSDMA1_PAGE_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA1_PAGE_MIDCMD_DATA10 = 0x0722 # macro -mmSDMA1_PAGE_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA1_PAGE_MIDCMD_CNTL = 0x0723 # macro -mmSDMA1_PAGE_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC0_RB_CNTL = 0x0730 # macro -mmSDMA1_RLC0_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC0_RB_BASE = 0x0731 # macro -mmSDMA1_RLC0_RB_BASE_BASE_IDX = 0 # macro -mmSDMA1_RLC0_RB_BASE_HI = 0x0732 # macro -mmSDMA1_RLC0_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC0_RB_RPTR = 0x0733 # macro -mmSDMA1_RLC0_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC0_RB_RPTR_HI = 0x0734 # macro -mmSDMA1_RLC0_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC0_RB_WPTR = 0x0735 # macro -mmSDMA1_RLC0_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC0_RB_WPTR_HI = 0x0736 # macro -mmSDMA1_RLC0_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC0_RB_WPTR_POLL_CNTL = 0x0737 # macro -mmSDMA1_RLC0_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC0_RB_RPTR_ADDR_HI = 0x0738 # macro -mmSDMA1_RLC0_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC0_RB_RPTR_ADDR_LO = 0x0739 # macro -mmSDMA1_RLC0_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC0_IB_CNTL = 0x073a # macro -mmSDMA1_RLC0_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC0_IB_RPTR = 0x073b # macro -mmSDMA1_RLC0_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC0_IB_OFFSET = 0x073c # macro -mmSDMA1_RLC0_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_RLC0_IB_BASE_LO = 0x073d # macro -mmSDMA1_RLC0_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC0_IB_BASE_HI = 0x073e # macro -mmSDMA1_RLC0_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC0_IB_SIZE = 0x073f # macro -mmSDMA1_RLC0_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA1_RLC0_SKIP_CNTL = 0x0740 # macro -mmSDMA1_RLC0_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC0_CONTEXT_STATUS = 0x0741 # macro -mmSDMA1_RLC0_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA1_RLC0_DOORBELL = 0x0742 # macro -mmSDMA1_RLC0_DOORBELL_BASE_IDX = 0 # macro -mmSDMA1_RLC0_STATUS = 0x0758 # macro -mmSDMA1_RLC0_STATUS_BASE_IDX = 0 # macro -mmSDMA1_RLC0_DOORBELL_LOG = 0x0759 # macro -mmSDMA1_RLC0_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA1_RLC0_WATERMARK = 0x075a # macro -mmSDMA1_RLC0_WATERMARK_BASE_IDX = 0 # macro -mmSDMA1_RLC0_DOORBELL_OFFSET = 0x075b # macro -mmSDMA1_RLC0_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_RLC0_CSA_ADDR_LO = 0x075c # macro -mmSDMA1_RLC0_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC0_CSA_ADDR_HI = 0x075d # macro -mmSDMA1_RLC0_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC0_IB_SUB_REMAIN = 0x075f # macro -mmSDMA1_RLC0_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA1_RLC0_PREEMPT = 0x0760 # macro -mmSDMA1_RLC0_PREEMPT_BASE_IDX = 0 # macro -mmSDMA1_RLC0_DUMMY_REG = 0x0761 # macro -mmSDMA1_RLC0_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA1_RLC0_RB_WPTR_POLL_ADDR_HI = 0x0762 # macro -mmSDMA1_RLC0_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC0_RB_WPTR_POLL_ADDR_LO = 0x0763 # macro -mmSDMA1_RLC0_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC0_RB_AQL_CNTL = 0x0764 # macro -mmSDMA1_RLC0_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC0_MINOR_PTR_UPDATE = 0x0765 # macro -mmSDMA1_RLC0_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA1_RLC0_MIDCMD_DATA0 = 0x0770 # macro -mmSDMA1_RLC0_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA1_RLC0_MIDCMD_DATA1 = 0x0771 # macro -mmSDMA1_RLC0_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA1_RLC0_MIDCMD_DATA2 = 0x0772 # macro -mmSDMA1_RLC0_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA1_RLC0_MIDCMD_DATA3 = 0x0773 # macro -mmSDMA1_RLC0_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA1_RLC0_MIDCMD_DATA4 = 0x0774 # macro -mmSDMA1_RLC0_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA1_RLC0_MIDCMD_DATA5 = 0x0775 # macro -mmSDMA1_RLC0_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA1_RLC0_MIDCMD_DATA6 = 0x0776 # macro -mmSDMA1_RLC0_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA1_RLC0_MIDCMD_DATA7 = 0x0777 # macro -mmSDMA1_RLC0_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA1_RLC0_MIDCMD_DATA8 = 0x0778 # macro -mmSDMA1_RLC0_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA1_RLC0_MIDCMD_DATA9 = 0x0779 # macro -mmSDMA1_RLC0_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA1_RLC0_MIDCMD_DATA10 = 0x077a # macro -mmSDMA1_RLC0_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA1_RLC0_MIDCMD_CNTL = 0x077b # macro -mmSDMA1_RLC0_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC1_RB_CNTL = 0x0788 # macro -mmSDMA1_RLC1_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC1_RB_BASE = 0x0789 # macro -mmSDMA1_RLC1_RB_BASE_BASE_IDX = 0 # macro -mmSDMA1_RLC1_RB_BASE_HI = 0x078a # macro -mmSDMA1_RLC1_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC1_RB_RPTR = 0x078b # macro -mmSDMA1_RLC1_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC1_RB_RPTR_HI = 0x078c # macro -mmSDMA1_RLC1_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC1_RB_WPTR = 0x078d # macro -mmSDMA1_RLC1_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC1_RB_WPTR_HI = 0x078e # macro -mmSDMA1_RLC1_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC1_RB_WPTR_POLL_CNTL = 0x078f # macro -mmSDMA1_RLC1_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC1_RB_RPTR_ADDR_HI = 0x0790 # macro -mmSDMA1_RLC1_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC1_RB_RPTR_ADDR_LO = 0x0791 # macro -mmSDMA1_RLC1_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC1_IB_CNTL = 0x0792 # macro -mmSDMA1_RLC1_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC1_IB_RPTR = 0x0793 # macro -mmSDMA1_RLC1_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC1_IB_OFFSET = 0x0794 # macro -mmSDMA1_RLC1_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_RLC1_IB_BASE_LO = 0x0795 # macro -mmSDMA1_RLC1_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC1_IB_BASE_HI = 0x0796 # macro -mmSDMA1_RLC1_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC1_IB_SIZE = 0x0797 # macro -mmSDMA1_RLC1_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA1_RLC1_SKIP_CNTL = 0x0798 # macro -mmSDMA1_RLC1_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC1_CONTEXT_STATUS = 0x0799 # macro -mmSDMA1_RLC1_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA1_RLC1_DOORBELL = 0x079a # macro -mmSDMA1_RLC1_DOORBELL_BASE_IDX = 0 # macro -mmSDMA1_RLC1_STATUS = 0x07b0 # macro -mmSDMA1_RLC1_STATUS_BASE_IDX = 0 # macro -mmSDMA1_RLC1_DOORBELL_LOG = 0x07b1 # macro -mmSDMA1_RLC1_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA1_RLC1_WATERMARK = 0x07b2 # macro -mmSDMA1_RLC1_WATERMARK_BASE_IDX = 0 # macro -mmSDMA1_RLC1_DOORBELL_OFFSET = 0x07b3 # macro -mmSDMA1_RLC1_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_RLC1_CSA_ADDR_LO = 0x07b4 # macro -mmSDMA1_RLC1_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC1_CSA_ADDR_HI = 0x07b5 # macro -mmSDMA1_RLC1_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC1_IB_SUB_REMAIN = 0x07b7 # macro -mmSDMA1_RLC1_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA1_RLC1_PREEMPT = 0x07b8 # macro -mmSDMA1_RLC1_PREEMPT_BASE_IDX = 0 # macro -mmSDMA1_RLC1_DUMMY_REG = 0x07b9 # macro -mmSDMA1_RLC1_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA1_RLC1_RB_WPTR_POLL_ADDR_HI = 0x07ba # macro -mmSDMA1_RLC1_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC1_RB_WPTR_POLL_ADDR_LO = 0x07bb # macro -mmSDMA1_RLC1_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC1_RB_AQL_CNTL = 0x07bc # macro -mmSDMA1_RLC1_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC1_MINOR_PTR_UPDATE = 0x07bd # macro -mmSDMA1_RLC1_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA1_RLC1_MIDCMD_DATA0 = 0x07c8 # macro -mmSDMA1_RLC1_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA1_RLC1_MIDCMD_DATA1 = 0x07c9 # macro -mmSDMA1_RLC1_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA1_RLC1_MIDCMD_DATA2 = 0x07ca # macro -mmSDMA1_RLC1_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA1_RLC1_MIDCMD_DATA3 = 0x07cb # macro -mmSDMA1_RLC1_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA1_RLC1_MIDCMD_DATA4 = 0x07cc # macro -mmSDMA1_RLC1_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA1_RLC1_MIDCMD_DATA5 = 0x07cd # macro -mmSDMA1_RLC1_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA1_RLC1_MIDCMD_DATA6 = 0x07ce # macro -mmSDMA1_RLC1_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA1_RLC1_MIDCMD_DATA7 = 0x07cf # macro -mmSDMA1_RLC1_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA1_RLC1_MIDCMD_DATA8 = 0x07d0 # macro -mmSDMA1_RLC1_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA1_RLC1_MIDCMD_DATA9 = 0x07d1 # macro -mmSDMA1_RLC1_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA1_RLC1_MIDCMD_DATA10 = 0x07d2 # macro -mmSDMA1_RLC1_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA1_RLC1_MIDCMD_CNTL = 0x07d3 # macro -mmSDMA1_RLC1_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC2_RB_CNTL = 0x07e0 # macro -mmSDMA1_RLC2_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC2_RB_BASE = 0x07e1 # macro -mmSDMA1_RLC2_RB_BASE_BASE_IDX = 0 # macro -mmSDMA1_RLC2_RB_BASE_HI = 0x07e2 # macro -mmSDMA1_RLC2_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC2_RB_RPTR = 0x07e3 # macro -mmSDMA1_RLC2_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC2_RB_RPTR_HI = 0x07e4 # macro -mmSDMA1_RLC2_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC2_RB_WPTR = 0x07e5 # macro -mmSDMA1_RLC2_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC2_RB_WPTR_HI = 0x07e6 # macro -mmSDMA1_RLC2_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC2_RB_WPTR_POLL_CNTL = 0x07e7 # macro -mmSDMA1_RLC2_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC2_RB_RPTR_ADDR_HI = 0x07e8 # macro -mmSDMA1_RLC2_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC2_RB_RPTR_ADDR_LO = 0x07e9 # macro -mmSDMA1_RLC2_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC2_IB_CNTL = 0x07ea # macro -mmSDMA1_RLC2_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC2_IB_RPTR = 0x07eb # macro -mmSDMA1_RLC2_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC2_IB_OFFSET = 0x07ec # macro -mmSDMA1_RLC2_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_RLC2_IB_BASE_LO = 0x07ed # macro -mmSDMA1_RLC2_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC2_IB_BASE_HI = 0x07ee # macro -mmSDMA1_RLC2_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC2_IB_SIZE = 0x07ef # macro -mmSDMA1_RLC2_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA1_RLC2_SKIP_CNTL = 0x07f0 # macro -mmSDMA1_RLC2_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC2_CONTEXT_STATUS = 0x07f1 # macro -mmSDMA1_RLC2_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA1_RLC2_DOORBELL = 0x07f2 # macro -mmSDMA1_RLC2_DOORBELL_BASE_IDX = 0 # macro -mmSDMA1_RLC2_STATUS = 0x0808 # macro -mmSDMA1_RLC2_STATUS_BASE_IDX = 0 # macro -mmSDMA1_RLC2_DOORBELL_LOG = 0x0809 # macro -mmSDMA1_RLC2_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA1_RLC2_WATERMARK = 0x080a # macro -mmSDMA1_RLC2_WATERMARK_BASE_IDX = 0 # macro -mmSDMA1_RLC2_DOORBELL_OFFSET = 0x080b # macro -mmSDMA1_RLC2_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_RLC2_CSA_ADDR_LO = 0x080c # macro -mmSDMA1_RLC2_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC2_CSA_ADDR_HI = 0x080d # macro -mmSDMA1_RLC2_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC2_IB_SUB_REMAIN = 0x080f # macro -mmSDMA1_RLC2_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA1_RLC2_PREEMPT = 0x0810 # macro -mmSDMA1_RLC2_PREEMPT_BASE_IDX = 0 # macro -mmSDMA1_RLC2_DUMMY_REG = 0x0811 # macro -mmSDMA1_RLC2_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA1_RLC2_RB_WPTR_POLL_ADDR_HI = 0x0812 # macro -mmSDMA1_RLC2_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC2_RB_WPTR_POLL_ADDR_LO = 0x0813 # macro -mmSDMA1_RLC2_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC2_RB_AQL_CNTL = 0x0814 # macro -mmSDMA1_RLC2_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC2_MINOR_PTR_UPDATE = 0x0815 # macro -mmSDMA1_RLC2_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA1_RLC2_MIDCMD_DATA0 = 0x0820 # macro -mmSDMA1_RLC2_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA1_RLC2_MIDCMD_DATA1 = 0x0821 # macro -mmSDMA1_RLC2_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA1_RLC2_MIDCMD_DATA2 = 0x0822 # macro -mmSDMA1_RLC2_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA1_RLC2_MIDCMD_DATA3 = 0x0823 # macro -mmSDMA1_RLC2_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA1_RLC2_MIDCMD_DATA4 = 0x0824 # macro -mmSDMA1_RLC2_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA1_RLC2_MIDCMD_DATA5 = 0x0825 # macro -mmSDMA1_RLC2_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA1_RLC2_MIDCMD_DATA6 = 0x0826 # macro -mmSDMA1_RLC2_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA1_RLC2_MIDCMD_DATA7 = 0x0827 # macro -mmSDMA1_RLC2_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA1_RLC2_MIDCMD_DATA8 = 0x0828 # macro -mmSDMA1_RLC2_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA1_RLC2_MIDCMD_DATA9 = 0x0829 # macro -mmSDMA1_RLC2_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA1_RLC2_MIDCMD_DATA10 = 0x082a # macro -mmSDMA1_RLC2_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA1_RLC2_MIDCMD_CNTL = 0x082b # macro -mmSDMA1_RLC2_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC3_RB_CNTL = 0x0838 # macro -mmSDMA1_RLC3_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC3_RB_BASE = 0x0839 # macro -mmSDMA1_RLC3_RB_BASE_BASE_IDX = 0 # macro -mmSDMA1_RLC3_RB_BASE_HI = 0x083a # macro -mmSDMA1_RLC3_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC3_RB_RPTR = 0x083b # macro -mmSDMA1_RLC3_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC3_RB_RPTR_HI = 0x083c # macro -mmSDMA1_RLC3_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC3_RB_WPTR = 0x083d # macro -mmSDMA1_RLC3_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC3_RB_WPTR_HI = 0x083e # macro -mmSDMA1_RLC3_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC3_RB_WPTR_POLL_CNTL = 0x083f # macro -mmSDMA1_RLC3_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC3_RB_RPTR_ADDR_HI = 0x0840 # macro -mmSDMA1_RLC3_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC3_RB_RPTR_ADDR_LO = 0x0841 # macro -mmSDMA1_RLC3_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC3_IB_CNTL = 0x0842 # macro -mmSDMA1_RLC3_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC3_IB_RPTR = 0x0843 # macro -mmSDMA1_RLC3_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC3_IB_OFFSET = 0x0844 # macro -mmSDMA1_RLC3_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_RLC3_IB_BASE_LO = 0x0845 # macro -mmSDMA1_RLC3_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC3_IB_BASE_HI = 0x0846 # macro -mmSDMA1_RLC3_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC3_IB_SIZE = 0x0847 # macro -mmSDMA1_RLC3_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA1_RLC3_SKIP_CNTL = 0x0848 # macro -mmSDMA1_RLC3_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC3_CONTEXT_STATUS = 0x0849 # macro -mmSDMA1_RLC3_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA1_RLC3_DOORBELL = 0x084a # macro -mmSDMA1_RLC3_DOORBELL_BASE_IDX = 0 # macro -mmSDMA1_RLC3_STATUS = 0x0860 # macro -mmSDMA1_RLC3_STATUS_BASE_IDX = 0 # macro -mmSDMA1_RLC3_DOORBELL_LOG = 0x0861 # macro -mmSDMA1_RLC3_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA1_RLC3_WATERMARK = 0x0862 # macro -mmSDMA1_RLC3_WATERMARK_BASE_IDX = 0 # macro -mmSDMA1_RLC3_DOORBELL_OFFSET = 0x0863 # macro -mmSDMA1_RLC3_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_RLC3_CSA_ADDR_LO = 0x0864 # macro -mmSDMA1_RLC3_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC3_CSA_ADDR_HI = 0x0865 # macro -mmSDMA1_RLC3_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC3_IB_SUB_REMAIN = 0x0867 # macro -mmSDMA1_RLC3_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA1_RLC3_PREEMPT = 0x0868 # macro -mmSDMA1_RLC3_PREEMPT_BASE_IDX = 0 # macro -mmSDMA1_RLC3_DUMMY_REG = 0x0869 # macro -mmSDMA1_RLC3_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA1_RLC3_RB_WPTR_POLL_ADDR_HI = 0x086a # macro -mmSDMA1_RLC3_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC3_RB_WPTR_POLL_ADDR_LO = 0x086b # macro -mmSDMA1_RLC3_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC3_RB_AQL_CNTL = 0x086c # macro -mmSDMA1_RLC3_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC3_MINOR_PTR_UPDATE = 0x086d # macro -mmSDMA1_RLC3_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA1_RLC3_MIDCMD_DATA0 = 0x0878 # macro -mmSDMA1_RLC3_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA1_RLC3_MIDCMD_DATA1 = 0x0879 # macro -mmSDMA1_RLC3_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA1_RLC3_MIDCMD_DATA2 = 0x087a # macro -mmSDMA1_RLC3_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA1_RLC3_MIDCMD_DATA3 = 0x087b # macro -mmSDMA1_RLC3_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA1_RLC3_MIDCMD_DATA4 = 0x087c # macro -mmSDMA1_RLC3_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA1_RLC3_MIDCMD_DATA5 = 0x087d # macro -mmSDMA1_RLC3_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA1_RLC3_MIDCMD_DATA6 = 0x087e # macro -mmSDMA1_RLC3_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA1_RLC3_MIDCMD_DATA7 = 0x087f # macro -mmSDMA1_RLC3_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA1_RLC3_MIDCMD_DATA8 = 0x0880 # macro -mmSDMA1_RLC3_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA1_RLC3_MIDCMD_DATA9 = 0x0881 # macro -mmSDMA1_RLC3_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA1_RLC3_MIDCMD_DATA10 = 0x0882 # macro -mmSDMA1_RLC3_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA1_RLC3_MIDCMD_CNTL = 0x0883 # macro -mmSDMA1_RLC3_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC4_RB_CNTL = 0x0890 # macro -mmSDMA1_RLC4_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC4_RB_BASE = 0x0891 # macro -mmSDMA1_RLC4_RB_BASE_BASE_IDX = 0 # macro -mmSDMA1_RLC4_RB_BASE_HI = 0x0892 # macro -mmSDMA1_RLC4_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC4_RB_RPTR = 0x0893 # macro -mmSDMA1_RLC4_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC4_RB_RPTR_HI = 0x0894 # macro -mmSDMA1_RLC4_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC4_RB_WPTR = 0x0895 # macro -mmSDMA1_RLC4_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC4_RB_WPTR_HI = 0x0896 # macro -mmSDMA1_RLC4_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC4_RB_WPTR_POLL_CNTL = 0x0897 # macro -mmSDMA1_RLC4_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC4_RB_RPTR_ADDR_HI = 0x0898 # macro -mmSDMA1_RLC4_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC4_RB_RPTR_ADDR_LO = 0x0899 # macro -mmSDMA1_RLC4_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC4_IB_CNTL = 0x089a # macro -mmSDMA1_RLC4_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC4_IB_RPTR = 0x089b # macro -mmSDMA1_RLC4_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC4_IB_OFFSET = 0x089c # macro -mmSDMA1_RLC4_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_RLC4_IB_BASE_LO = 0x089d # macro -mmSDMA1_RLC4_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC4_IB_BASE_HI = 0x089e # macro -mmSDMA1_RLC4_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC4_IB_SIZE = 0x089f # macro -mmSDMA1_RLC4_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA1_RLC4_SKIP_CNTL = 0x08a0 # macro -mmSDMA1_RLC4_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC4_CONTEXT_STATUS = 0x08a1 # macro -mmSDMA1_RLC4_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA1_RLC4_DOORBELL = 0x08a2 # macro -mmSDMA1_RLC4_DOORBELL_BASE_IDX = 0 # macro -mmSDMA1_RLC4_STATUS = 0x08b8 # macro -mmSDMA1_RLC4_STATUS_BASE_IDX = 0 # macro -mmSDMA1_RLC4_DOORBELL_LOG = 0x08b9 # macro -mmSDMA1_RLC4_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA1_RLC4_WATERMARK = 0x08ba # macro -mmSDMA1_RLC4_WATERMARK_BASE_IDX = 0 # macro -mmSDMA1_RLC4_DOORBELL_OFFSET = 0x08bb # macro -mmSDMA1_RLC4_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_RLC4_CSA_ADDR_LO = 0x08bc # macro -mmSDMA1_RLC4_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC4_CSA_ADDR_HI = 0x08bd # macro -mmSDMA1_RLC4_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC4_IB_SUB_REMAIN = 0x08bf # macro -mmSDMA1_RLC4_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA1_RLC4_PREEMPT = 0x08c0 # macro -mmSDMA1_RLC4_PREEMPT_BASE_IDX = 0 # macro -mmSDMA1_RLC4_DUMMY_REG = 0x08c1 # macro -mmSDMA1_RLC4_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA1_RLC4_RB_WPTR_POLL_ADDR_HI = 0x08c2 # macro -mmSDMA1_RLC4_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC4_RB_WPTR_POLL_ADDR_LO = 0x08c3 # macro -mmSDMA1_RLC4_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC4_RB_AQL_CNTL = 0x08c4 # macro -mmSDMA1_RLC4_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC4_MINOR_PTR_UPDATE = 0x08c5 # macro -mmSDMA1_RLC4_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA1_RLC4_MIDCMD_DATA0 = 0x08d0 # macro -mmSDMA1_RLC4_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA1_RLC4_MIDCMD_DATA1 = 0x08d1 # macro -mmSDMA1_RLC4_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA1_RLC4_MIDCMD_DATA2 = 0x08d2 # macro -mmSDMA1_RLC4_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA1_RLC4_MIDCMD_DATA3 = 0x08d3 # macro -mmSDMA1_RLC4_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA1_RLC4_MIDCMD_DATA4 = 0x08d4 # macro -mmSDMA1_RLC4_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA1_RLC4_MIDCMD_DATA5 = 0x08d5 # macro -mmSDMA1_RLC4_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA1_RLC4_MIDCMD_DATA6 = 0x08d6 # macro -mmSDMA1_RLC4_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA1_RLC4_MIDCMD_DATA7 = 0x08d7 # macro -mmSDMA1_RLC4_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA1_RLC4_MIDCMD_DATA8 = 0x08d8 # macro -mmSDMA1_RLC4_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA1_RLC4_MIDCMD_DATA9 = 0x08d9 # macro -mmSDMA1_RLC4_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA1_RLC4_MIDCMD_DATA10 = 0x08da # macro -mmSDMA1_RLC4_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA1_RLC4_MIDCMD_CNTL = 0x08db # macro -mmSDMA1_RLC4_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC5_RB_CNTL = 0x08e8 # macro -mmSDMA1_RLC5_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC5_RB_BASE = 0x08e9 # macro -mmSDMA1_RLC5_RB_BASE_BASE_IDX = 0 # macro -mmSDMA1_RLC5_RB_BASE_HI = 0x08ea # macro -mmSDMA1_RLC5_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC5_RB_RPTR = 0x08eb # macro -mmSDMA1_RLC5_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC5_RB_RPTR_HI = 0x08ec # macro -mmSDMA1_RLC5_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC5_RB_WPTR = 0x08ed # macro -mmSDMA1_RLC5_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC5_RB_WPTR_HI = 0x08ee # macro -mmSDMA1_RLC5_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC5_RB_WPTR_POLL_CNTL = 0x08ef # macro -mmSDMA1_RLC5_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC5_RB_RPTR_ADDR_HI = 0x08f0 # macro -mmSDMA1_RLC5_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC5_RB_RPTR_ADDR_LO = 0x08f1 # macro -mmSDMA1_RLC5_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC5_IB_CNTL = 0x08f2 # macro -mmSDMA1_RLC5_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC5_IB_RPTR = 0x08f3 # macro -mmSDMA1_RLC5_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC5_IB_OFFSET = 0x08f4 # macro -mmSDMA1_RLC5_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_RLC5_IB_BASE_LO = 0x08f5 # macro -mmSDMA1_RLC5_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC5_IB_BASE_HI = 0x08f6 # macro -mmSDMA1_RLC5_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC5_IB_SIZE = 0x08f7 # macro -mmSDMA1_RLC5_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA1_RLC5_SKIP_CNTL = 0x08f8 # macro -mmSDMA1_RLC5_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC5_CONTEXT_STATUS = 0x08f9 # macro -mmSDMA1_RLC5_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA1_RLC5_DOORBELL = 0x08fa # macro -mmSDMA1_RLC5_DOORBELL_BASE_IDX = 0 # macro -mmSDMA1_RLC5_STATUS = 0x0910 # macro -mmSDMA1_RLC5_STATUS_BASE_IDX = 0 # macro -mmSDMA1_RLC5_DOORBELL_LOG = 0x0911 # macro -mmSDMA1_RLC5_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA1_RLC5_WATERMARK = 0x0912 # macro -mmSDMA1_RLC5_WATERMARK_BASE_IDX = 0 # macro -mmSDMA1_RLC5_DOORBELL_OFFSET = 0x0913 # macro -mmSDMA1_RLC5_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_RLC5_CSA_ADDR_LO = 0x0914 # macro -mmSDMA1_RLC5_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC5_CSA_ADDR_HI = 0x0915 # macro -mmSDMA1_RLC5_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC5_IB_SUB_REMAIN = 0x0917 # macro -mmSDMA1_RLC5_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA1_RLC5_PREEMPT = 0x0918 # macro -mmSDMA1_RLC5_PREEMPT_BASE_IDX = 0 # macro -mmSDMA1_RLC5_DUMMY_REG = 0x0919 # macro -mmSDMA1_RLC5_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA1_RLC5_RB_WPTR_POLL_ADDR_HI = 0x091a # macro -mmSDMA1_RLC5_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC5_RB_WPTR_POLL_ADDR_LO = 0x091b # macro -mmSDMA1_RLC5_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC5_RB_AQL_CNTL = 0x091c # macro -mmSDMA1_RLC5_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC5_MINOR_PTR_UPDATE = 0x091d # macro -mmSDMA1_RLC5_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA1_RLC5_MIDCMD_DATA0 = 0x0928 # macro -mmSDMA1_RLC5_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA1_RLC5_MIDCMD_DATA1 = 0x0929 # macro -mmSDMA1_RLC5_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA1_RLC5_MIDCMD_DATA2 = 0x092a # macro -mmSDMA1_RLC5_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA1_RLC5_MIDCMD_DATA3 = 0x092b # macro -mmSDMA1_RLC5_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA1_RLC5_MIDCMD_DATA4 = 0x092c # macro -mmSDMA1_RLC5_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA1_RLC5_MIDCMD_DATA5 = 0x092d # macro -mmSDMA1_RLC5_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA1_RLC5_MIDCMD_DATA6 = 0x092e # macro -mmSDMA1_RLC5_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA1_RLC5_MIDCMD_DATA7 = 0x092f # macro -mmSDMA1_RLC5_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA1_RLC5_MIDCMD_DATA8 = 0x0930 # macro -mmSDMA1_RLC5_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA1_RLC5_MIDCMD_DATA9 = 0x0931 # macro -mmSDMA1_RLC5_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA1_RLC5_MIDCMD_DATA10 = 0x0932 # macro -mmSDMA1_RLC5_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA1_RLC5_MIDCMD_CNTL = 0x0933 # macro -mmSDMA1_RLC5_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC6_RB_CNTL = 0x0940 # macro -mmSDMA1_RLC6_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC6_RB_BASE = 0x0941 # macro -mmSDMA1_RLC6_RB_BASE_BASE_IDX = 0 # macro -mmSDMA1_RLC6_RB_BASE_HI = 0x0942 # macro -mmSDMA1_RLC6_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC6_RB_RPTR = 0x0943 # macro -mmSDMA1_RLC6_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC6_RB_RPTR_HI = 0x0944 # macro -mmSDMA1_RLC6_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC6_RB_WPTR = 0x0945 # macro -mmSDMA1_RLC6_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC6_RB_WPTR_HI = 0x0946 # macro -mmSDMA1_RLC6_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC6_RB_WPTR_POLL_CNTL = 0x0947 # macro -mmSDMA1_RLC6_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC6_RB_RPTR_ADDR_HI = 0x0948 # macro -mmSDMA1_RLC6_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC6_RB_RPTR_ADDR_LO = 0x0949 # macro -mmSDMA1_RLC6_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC6_IB_CNTL = 0x094a # macro -mmSDMA1_RLC6_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC6_IB_RPTR = 0x094b # macro -mmSDMA1_RLC6_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC6_IB_OFFSET = 0x094c # macro -mmSDMA1_RLC6_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_RLC6_IB_BASE_LO = 0x094d # macro -mmSDMA1_RLC6_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC6_IB_BASE_HI = 0x094e # macro -mmSDMA1_RLC6_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC6_IB_SIZE = 0x094f # macro -mmSDMA1_RLC6_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA1_RLC6_SKIP_CNTL = 0x0950 # macro -mmSDMA1_RLC6_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC6_CONTEXT_STATUS = 0x0951 # macro -mmSDMA1_RLC6_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA1_RLC6_DOORBELL = 0x0952 # macro -mmSDMA1_RLC6_DOORBELL_BASE_IDX = 0 # macro -mmSDMA1_RLC6_STATUS = 0x0968 # macro -mmSDMA1_RLC6_STATUS_BASE_IDX = 0 # macro -mmSDMA1_RLC6_DOORBELL_LOG = 0x0969 # macro -mmSDMA1_RLC6_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA1_RLC6_WATERMARK = 0x096a # macro -mmSDMA1_RLC6_WATERMARK_BASE_IDX = 0 # macro -mmSDMA1_RLC6_DOORBELL_OFFSET = 0x096b # macro -mmSDMA1_RLC6_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_RLC6_CSA_ADDR_LO = 0x096c # macro -mmSDMA1_RLC6_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC6_CSA_ADDR_HI = 0x096d # macro -mmSDMA1_RLC6_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC6_IB_SUB_REMAIN = 0x096f # macro -mmSDMA1_RLC6_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA1_RLC6_PREEMPT = 0x0970 # macro -mmSDMA1_RLC6_PREEMPT_BASE_IDX = 0 # macro -mmSDMA1_RLC6_DUMMY_REG = 0x0971 # macro -mmSDMA1_RLC6_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA1_RLC6_RB_WPTR_POLL_ADDR_HI = 0x0972 # macro -mmSDMA1_RLC6_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC6_RB_WPTR_POLL_ADDR_LO = 0x0973 # macro -mmSDMA1_RLC6_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC6_RB_AQL_CNTL = 0x0974 # macro -mmSDMA1_RLC6_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC6_MINOR_PTR_UPDATE = 0x0975 # macro -mmSDMA1_RLC6_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA1_RLC6_MIDCMD_DATA0 = 0x0980 # macro -mmSDMA1_RLC6_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA1_RLC6_MIDCMD_DATA1 = 0x0981 # macro -mmSDMA1_RLC6_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA1_RLC6_MIDCMD_DATA2 = 0x0982 # macro -mmSDMA1_RLC6_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA1_RLC6_MIDCMD_DATA3 = 0x0983 # macro -mmSDMA1_RLC6_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA1_RLC6_MIDCMD_DATA4 = 0x0984 # macro -mmSDMA1_RLC6_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA1_RLC6_MIDCMD_DATA5 = 0x0985 # macro -mmSDMA1_RLC6_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA1_RLC6_MIDCMD_DATA6 = 0x0986 # macro -mmSDMA1_RLC6_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA1_RLC6_MIDCMD_DATA7 = 0x0987 # macro -mmSDMA1_RLC6_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA1_RLC6_MIDCMD_DATA8 = 0x0988 # macro -mmSDMA1_RLC6_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA1_RLC6_MIDCMD_DATA9 = 0x0989 # macro -mmSDMA1_RLC6_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA1_RLC6_MIDCMD_DATA10 = 0x098a # macro -mmSDMA1_RLC6_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA1_RLC6_MIDCMD_CNTL = 0x098b # macro -mmSDMA1_RLC6_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC7_RB_CNTL = 0x0998 # macro -mmSDMA1_RLC7_RB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC7_RB_BASE = 0x0999 # macro -mmSDMA1_RLC7_RB_BASE_BASE_IDX = 0 # macro -mmSDMA1_RLC7_RB_BASE_HI = 0x099a # macro -mmSDMA1_RLC7_RB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC7_RB_RPTR = 0x099b # macro -mmSDMA1_RLC7_RB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC7_RB_RPTR_HI = 0x099c # macro -mmSDMA1_RLC7_RB_RPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC7_RB_WPTR = 0x099d # macro -mmSDMA1_RLC7_RB_WPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC7_RB_WPTR_HI = 0x099e # macro -mmSDMA1_RLC7_RB_WPTR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC7_RB_WPTR_POLL_CNTL = 0x099f # macro -mmSDMA1_RLC7_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC7_RB_RPTR_ADDR_HI = 0x09a0 # macro -mmSDMA1_RLC7_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC7_RB_RPTR_ADDR_LO = 0x09a1 # macro -mmSDMA1_RLC7_RB_RPTR_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC7_IB_CNTL = 0x09a2 # macro -mmSDMA1_RLC7_IB_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC7_IB_RPTR = 0x09a3 # macro -mmSDMA1_RLC7_IB_RPTR_BASE_IDX = 0 # macro -mmSDMA1_RLC7_IB_OFFSET = 0x09a4 # macro -mmSDMA1_RLC7_IB_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_RLC7_IB_BASE_LO = 0x09a5 # macro -mmSDMA1_RLC7_IB_BASE_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC7_IB_BASE_HI = 0x09a6 # macro -mmSDMA1_RLC7_IB_BASE_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC7_IB_SIZE = 0x09a7 # macro -mmSDMA1_RLC7_IB_SIZE_BASE_IDX = 0 # macro -mmSDMA1_RLC7_SKIP_CNTL = 0x09a8 # macro -mmSDMA1_RLC7_SKIP_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC7_CONTEXT_STATUS = 0x09a9 # macro -mmSDMA1_RLC7_CONTEXT_STATUS_BASE_IDX = 0 # macro -mmSDMA1_RLC7_DOORBELL = 0x09aa # macro -mmSDMA1_RLC7_DOORBELL_BASE_IDX = 0 # macro -mmSDMA1_RLC7_STATUS = 0x09c0 # macro -mmSDMA1_RLC7_STATUS_BASE_IDX = 0 # macro -mmSDMA1_RLC7_DOORBELL_LOG = 0x09c1 # macro -mmSDMA1_RLC7_DOORBELL_LOG_BASE_IDX = 0 # macro -mmSDMA1_RLC7_WATERMARK = 0x09c2 # macro -mmSDMA1_RLC7_WATERMARK_BASE_IDX = 0 # macro -mmSDMA1_RLC7_DOORBELL_OFFSET = 0x09c3 # macro -mmSDMA1_RLC7_DOORBELL_OFFSET_BASE_IDX = 0 # macro -mmSDMA1_RLC7_CSA_ADDR_LO = 0x09c4 # macro -mmSDMA1_RLC7_CSA_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC7_CSA_ADDR_HI = 0x09c5 # macro -mmSDMA1_RLC7_CSA_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC7_IB_SUB_REMAIN = 0x09c7 # macro -mmSDMA1_RLC7_IB_SUB_REMAIN_BASE_IDX = 0 # macro -mmSDMA1_RLC7_PREEMPT = 0x09c8 # macro -mmSDMA1_RLC7_PREEMPT_BASE_IDX = 0 # macro -mmSDMA1_RLC7_DUMMY_REG = 0x09c9 # macro -mmSDMA1_RLC7_DUMMY_REG_BASE_IDX = 0 # macro -mmSDMA1_RLC7_RB_WPTR_POLL_ADDR_HI = 0x09ca # macro -mmSDMA1_RLC7_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmSDMA1_RLC7_RB_WPTR_POLL_ADDR_LO = 0x09cb # macro -mmSDMA1_RLC7_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmSDMA1_RLC7_RB_AQL_CNTL = 0x09cc # macro -mmSDMA1_RLC7_RB_AQL_CNTL_BASE_IDX = 0 # macro -mmSDMA1_RLC7_MINOR_PTR_UPDATE = 0x09cd # macro -mmSDMA1_RLC7_MINOR_PTR_UPDATE_BASE_IDX = 0 # macro -mmSDMA1_RLC7_MIDCMD_DATA0 = 0x09d8 # macro -mmSDMA1_RLC7_MIDCMD_DATA0_BASE_IDX = 0 # macro -mmSDMA1_RLC7_MIDCMD_DATA1 = 0x09d9 # macro -mmSDMA1_RLC7_MIDCMD_DATA1_BASE_IDX = 0 # macro -mmSDMA1_RLC7_MIDCMD_DATA2 = 0x09da # macro -mmSDMA1_RLC7_MIDCMD_DATA2_BASE_IDX = 0 # macro -mmSDMA1_RLC7_MIDCMD_DATA3 = 0x09db # macro -mmSDMA1_RLC7_MIDCMD_DATA3_BASE_IDX = 0 # macro -mmSDMA1_RLC7_MIDCMD_DATA4 = 0x09dc # macro -mmSDMA1_RLC7_MIDCMD_DATA4_BASE_IDX = 0 # macro -mmSDMA1_RLC7_MIDCMD_DATA5 = 0x09dd # macro -mmSDMA1_RLC7_MIDCMD_DATA5_BASE_IDX = 0 # macro -mmSDMA1_RLC7_MIDCMD_DATA6 = 0x09de # macro -mmSDMA1_RLC7_MIDCMD_DATA6_BASE_IDX = 0 # macro -mmSDMA1_RLC7_MIDCMD_DATA7 = 0x09df # macro -mmSDMA1_RLC7_MIDCMD_DATA7_BASE_IDX = 0 # macro -mmSDMA1_RLC7_MIDCMD_DATA8 = 0x09e0 # macro -mmSDMA1_RLC7_MIDCMD_DATA8_BASE_IDX = 0 # macro -mmSDMA1_RLC7_MIDCMD_DATA9 = 0x09e1 # macro -mmSDMA1_RLC7_MIDCMD_DATA9_BASE_IDX = 0 # macro -mmSDMA1_RLC7_MIDCMD_DATA10 = 0x09e2 # macro -mmSDMA1_RLC7_MIDCMD_DATA10_BASE_IDX = 0 # macro -mmSDMA1_RLC7_MIDCMD_CNTL = 0x09e3 # macro -mmSDMA1_RLC7_MIDCMD_CNTL_BASE_IDX = 0 # macro -mmGRBM_CNTL = 0x0da0 # macro -mmGRBM_CNTL_BASE_IDX = 0 # macro -mmGRBM_SKEW_CNTL = 0x0da1 # macro -mmGRBM_SKEW_CNTL_BASE_IDX = 0 # macro -mmGRBM_STATUS2 = 0x0da2 # macro -mmGRBM_STATUS2_BASE_IDX = 0 # macro -mmGRBM_PWR_CNTL = 0x0da3 # macro -mmGRBM_PWR_CNTL_BASE_IDX = 0 # macro -mmGRBM_STATUS = 0x0da4 # macro -mmGRBM_STATUS_BASE_IDX = 0 # macro -mmGRBM_STATUS_SE0 = 0x0da5 # macro -mmGRBM_STATUS_SE0_BASE_IDX = 0 # macro -mmGRBM_STATUS_SE1 = 0x0da6 # macro -mmGRBM_STATUS_SE1_BASE_IDX = 0 # macro -mmGRBM_STATUS3 = 0x0da7 # macro -mmGRBM_STATUS3_BASE_IDX = 0 # macro -mmGRBM_SOFT_RESET = 0x0da8 # macro -mmGRBM_SOFT_RESET_BASE_IDX = 0 # macro -mmGRBM_GFX_CLKEN_CNTL = 0x0dac # macro -mmGRBM_GFX_CLKEN_CNTL_BASE_IDX = 0 # macro -mmGRBM_WAIT_IDLE_CLOCKS = 0x0dad # macro -mmGRBM_WAIT_IDLE_CLOCKS_BASE_IDX = 0 # macro -mmGRBM_STATUS_SE2 = 0x0dae # macro -mmGRBM_STATUS_SE2_BASE_IDX = 0 # macro -mmGRBM_STATUS_SE3 = 0x0daf # macro -mmGRBM_STATUS_SE3_BASE_IDX = 0 # macro -mmGRBM_READ_ERROR = 0x0db6 # macro -mmGRBM_READ_ERROR_BASE_IDX = 0 # macro -mmGRBM_READ_ERROR2 = 0x0db7 # macro -mmGRBM_READ_ERROR2_BASE_IDX = 0 # macro -mmGRBM_INT_CNTL = 0x0db8 # macro -mmGRBM_INT_CNTL_BASE_IDX = 0 # macro -mmGRBM_TRAP_OP = 0x0db9 # macro -mmGRBM_TRAP_OP_BASE_IDX = 0 # macro -mmGRBM_TRAP_ADDR = 0x0dba # macro -mmGRBM_TRAP_ADDR_BASE_IDX = 0 # macro -mmGRBM_TRAP_ADDR_MSK = 0x0dbb # macro -mmGRBM_TRAP_ADDR_MSK_BASE_IDX = 0 # macro -mmGRBM_TRAP_WD = 0x0dbc # macro -mmGRBM_TRAP_WD_BASE_IDX = 0 # macro -mmGRBM_TRAP_WD_MSK = 0x0dbd # macro -mmGRBM_TRAP_WD_MSK_BASE_IDX = 0 # macro -mmGRBM_DSM_BYPASS = 0x0dbe # macro -mmGRBM_DSM_BYPASS_BASE_IDX = 0 # macro -mmGRBM_WRITE_ERROR = 0x0dbf # macro -mmGRBM_WRITE_ERROR_BASE_IDX = 0 # macro -mmGRBM_CHIP_REVISION = 0x0dc1 # macro -mmGRBM_CHIP_REVISION_BASE_IDX = 0 # macro -mmGRBM_GFX_CNTL = 0x0dc2 # macro -mmGRBM_GFX_CNTL_BASE_IDX = 0 # macro -mmGRBM_IH_CREDIT = 0x0dc4 # macro -mmGRBM_IH_CREDIT_BASE_IDX = 0 # macro -mmGRBM_PWR_CNTL2 = 0x0dc5 # macro -mmGRBM_PWR_CNTL2_BASE_IDX = 0 # macro -mmGRBM_UTCL2_INVAL_RANGE_START = 0x0dc6 # macro -mmGRBM_UTCL2_INVAL_RANGE_START_BASE_IDX = 0 # macro -mmGRBM_UTCL2_INVAL_RANGE_END = 0x0dc7 # macro -mmGRBM_UTCL2_INVAL_RANGE_END_BASE_IDX = 0 # macro -mmGRBM_FENCE_RANGE0 = 0x0dca # macro -mmGRBM_FENCE_RANGE0_BASE_IDX = 0 # macro -mmGRBM_FENCE_RANGE1 = 0x0dcb # macro -mmGRBM_FENCE_RANGE1_BASE_IDX = 0 # macro -mmGRBM_NOWHERE = 0x0ddf # macro -mmGRBM_NOWHERE_BASE_IDX = 0 # macro -mmGRBM_SCRATCH_REG0 = 0x0de0 # macro -mmGRBM_SCRATCH_REG0_BASE_IDX = 0 # macro -mmGRBM_SCRATCH_REG1 = 0x0de1 # macro -mmGRBM_SCRATCH_REG1_BASE_IDX = 0 # macro -mmGRBM_SCRATCH_REG2 = 0x0de2 # macro -mmGRBM_SCRATCH_REG2_BASE_IDX = 0 # macro -mmGRBM_SCRATCH_REG3 = 0x0de3 # macro -mmGRBM_SCRATCH_REG3_BASE_IDX = 0 # macro -mmGRBM_SCRATCH_REG4 = 0x0de4 # macro -mmGRBM_SCRATCH_REG4_BASE_IDX = 0 # macro -mmGRBM_SCRATCH_REG5 = 0x0de5 # macro -mmGRBM_SCRATCH_REG5_BASE_IDX = 0 # macro -mmGRBM_SCRATCH_REG6 = 0x0de6 # macro -mmGRBM_SCRATCH_REG6_BASE_IDX = 0 # macro -mmGRBM_SCRATCH_REG7 = 0x0de7 # macro -mmGRBM_SCRATCH_REG7_BASE_IDX = 0 # macro -mmVIOLATION_DATA_ASYNC_VF_PROG = 0x0df1 # macro -mmVIOLATION_DATA_ASYNC_VF_PROG_BASE_IDX = 0 # macro -mmCP_CPC_STATUS = 0x0e24 # macro -mmCP_CPC_STATUS_BASE_IDX = 0 # macro -mmCP_CPC_BUSY_STAT = 0x0e25 # macro -mmCP_CPC_BUSY_STAT_BASE_IDX = 0 # macro -mmCP_CPC_STALLED_STAT1 = 0x0e26 # macro -mmCP_CPC_STALLED_STAT1_BASE_IDX = 0 # macro -mmCP_CPF_STATUS = 0x0e27 # macro -mmCP_CPF_STATUS_BASE_IDX = 0 # macro -mmCP_CPF_BUSY_STAT = 0x0e28 # macro -mmCP_CPF_BUSY_STAT_BASE_IDX = 0 # macro -mmCP_CPF_STALLED_STAT1 = 0x0e29 # macro -mmCP_CPF_STALLED_STAT1_BASE_IDX = 0 # macro -mmCP_CPC_BUSY_STAT2 = 0x0e2a # macro -mmCP_CPC_BUSY_STAT2_BASE_IDX = 0 # macro -mmCP_CPC_GRBM_FREE_COUNT = 0x0e2b # macro -mmCP_CPC_GRBM_FREE_COUNT_BASE_IDX = 0 # macro -mmCP_CPC_PRIV_VIOLATION_ADDR = 0x0e2c # macro -mmCP_CPC_PRIV_VIOLATION_ADDR_BASE_IDX = 0 # macro -mmCP_MEC_ME1_HEADER_DUMP = 0x0e2e # macro -mmCP_MEC_ME1_HEADER_DUMP_BASE_IDX = 0 # macro -mmCP_MEC_ME2_HEADER_DUMP = 0x0e2f # macro -mmCP_MEC_ME2_HEADER_DUMP_BASE_IDX = 0 # macro -mmCP_CPC_SCRATCH_INDEX = 0x0e30 # macro -mmCP_CPC_SCRATCH_INDEX_BASE_IDX = 0 # macro -mmCP_CPC_SCRATCH_DATA = 0x0e31 # macro -mmCP_CPC_SCRATCH_DATA_BASE_IDX = 0 # macro -mmCP_CPF_GRBM_FREE_COUNT = 0x0e32 # macro -mmCP_CPF_GRBM_FREE_COUNT_BASE_IDX = 0 # macro -mmCP_CPF_BUSY_STAT2 = 0x0e33 # macro -mmCP_CPF_BUSY_STAT2_BASE_IDX = 0 # macro -mmCONFIG_RESERVED_REG0 = 0x0e34 # macro -mmCONFIG_RESERVED_REG0_BASE_IDX = 0 # macro -mmCONFIG_RESERVED_REG1 = 0x0e35 # macro -mmCONFIG_RESERVED_REG1_BASE_IDX = 0 # macro -mmCP_CPC_HALT_HYST_COUNT = 0x0e47 # macro -mmCP_CPC_HALT_HYST_COUNT_BASE_IDX = 0 # macro -mmCP_CE_COMPARE_COUNT = 0x0e60 # macro -mmCP_CE_COMPARE_COUNT_BASE_IDX = 0 # macro -mmCP_CE_DE_COUNT = 0x0e61 # macro -mmCP_CE_DE_COUNT_BASE_IDX = 0 # macro -mmCP_DE_CE_COUNT = 0x0e62 # macro -mmCP_DE_CE_COUNT_BASE_IDX = 0 # macro -mmCP_DE_LAST_INVAL_COUNT = 0x0e63 # macro -mmCP_DE_LAST_INVAL_COUNT_BASE_IDX = 0 # macro -mmCP_DE_DE_COUNT = 0x0e64 # macro -mmCP_DE_DE_COUNT_BASE_IDX = 0 # macro -mmCP_STALLED_STAT3 = 0x0f3c # macro -mmCP_STALLED_STAT3_BASE_IDX = 0 # macro -mmCP_STALLED_STAT1 = 0x0f3d # macro -mmCP_STALLED_STAT1_BASE_IDX = 0 # macro -mmCP_STALLED_STAT2 = 0x0f3e # macro -mmCP_STALLED_STAT2_BASE_IDX = 0 # macro -mmCP_BUSY_STAT = 0x0f3f # macro -mmCP_BUSY_STAT_BASE_IDX = 0 # macro -mmCP_STAT = 0x0f40 # macro -mmCP_STAT_BASE_IDX = 0 # macro -mmCP_ME_HEADER_DUMP = 0x0f41 # macro -mmCP_ME_HEADER_DUMP_BASE_IDX = 0 # macro -mmCP_PFP_HEADER_DUMP = 0x0f42 # macro -mmCP_PFP_HEADER_DUMP_BASE_IDX = 0 # macro -mmCP_GRBM_FREE_COUNT = 0x0f43 # macro -mmCP_GRBM_FREE_COUNT_BASE_IDX = 0 # macro -mmCP_CE_HEADER_DUMP = 0x0f44 # macro -mmCP_CE_HEADER_DUMP_BASE_IDX = 0 # macro -mmCP_PFP_INSTR_PNTR = 0x0f45 # macro -mmCP_PFP_INSTR_PNTR_BASE_IDX = 0 # macro -mmCP_ME_INSTR_PNTR = 0x0f46 # macro -mmCP_ME_INSTR_PNTR_BASE_IDX = 0 # macro -mmCP_CE_INSTR_PNTR = 0x0f47 # macro -mmCP_CE_INSTR_PNTR_BASE_IDX = 0 # macro -mmCP_MEC1_INSTR_PNTR = 0x0f48 # macro -mmCP_MEC1_INSTR_PNTR_BASE_IDX = 0 # macro -mmCP_MEC2_INSTR_PNTR = 0x0f49 # macro -mmCP_MEC2_INSTR_PNTR_BASE_IDX = 0 # macro -mmCP_CSF_STAT = 0x0f54 # macro -mmCP_CSF_STAT_BASE_IDX = 0 # macro -mmCP_MEC_CNTL = 0x0f55 # macro -mmCP_MEC_CNTL_BASE_IDX = 0 # macro -mmCP_ME_CNTL = 0x0f56 # macro -mmCP_ME_CNTL_BASE_IDX = 0 # macro -mmCP_CNTX_STAT = 0x0f58 # macro -mmCP_CNTX_STAT_BASE_IDX = 0 # macro -mmCP_ME_PREEMPTION = 0x0f59 # macro -mmCP_ME_PREEMPTION_BASE_IDX = 0 # macro -mmCP_ROQ_THRESHOLDS = 0x0f5c # macro -mmCP_ROQ_THRESHOLDS_BASE_IDX = 0 # macro -mmCP_MEQ_STQ_THRESHOLD = 0x0f5d # macro -mmCP_MEQ_STQ_THRESHOLD_BASE_IDX = 0 # macro -mmCP_RB2_RPTR = 0x0f5e # macro -mmCP_RB2_RPTR_BASE_IDX = 0 # macro -mmCP_RB1_RPTR = 0x0f5f # macro -mmCP_RB1_RPTR_BASE_IDX = 0 # macro -mmCP_RB0_RPTR = 0x0f60 # macro -mmCP_RB0_RPTR_BASE_IDX = 0 # macro -mmCP_RB_RPTR = 0x0f60 # macro -mmCP_RB_RPTR_BASE_IDX = 0 # macro -mmCP_RB_WPTR_DELAY = 0x0f61 # macro -mmCP_RB_WPTR_DELAY_BASE_IDX = 0 # macro -mmCP_RB_WPTR_POLL_CNTL = 0x0f62 # macro -mmCP_RB_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmCP_ROQ1_THRESHOLDS = 0x0f75 # macro -mmCP_ROQ1_THRESHOLDS_BASE_IDX = 0 # macro -mmCP_ROQ2_THRESHOLDS = 0x0f76 # macro -mmCP_ROQ2_THRESHOLDS_BASE_IDX = 0 # macro -mmCP_STQ_THRESHOLDS = 0x0f77 # macro -mmCP_STQ_THRESHOLDS_BASE_IDX = 0 # macro -mmCP_QUEUE_THRESHOLDS = 0x0f78 # macro -mmCP_QUEUE_THRESHOLDS_BASE_IDX = 0 # macro -mmCP_MEQ_THRESHOLDS = 0x0f79 # macro -mmCP_MEQ_THRESHOLDS_BASE_IDX = 0 # macro -mmCP_ROQ_AVAIL = 0x0f7a # macro -mmCP_ROQ_AVAIL_BASE_IDX = 0 # macro -mmCP_STQ_AVAIL = 0x0f7b # macro -mmCP_STQ_AVAIL_BASE_IDX = 0 # macro -mmCP_ROQ2_AVAIL = 0x0f7c # macro -mmCP_ROQ2_AVAIL_BASE_IDX = 0 # macro -mmCP_MEQ_AVAIL = 0x0f7d # macro -mmCP_MEQ_AVAIL_BASE_IDX = 0 # macro -mmCP_CMD_INDEX = 0x0f7e # macro -mmCP_CMD_INDEX_BASE_IDX = 0 # macro -mmCP_CMD_DATA = 0x0f7f # macro -mmCP_CMD_DATA_BASE_IDX = 0 # macro -mmCP_ROQ_RB_STAT = 0x0f80 # macro -mmCP_ROQ_RB_STAT_BASE_IDX = 0 # macro -mmCP_ROQ_IB1_STAT = 0x0f81 # macro -mmCP_ROQ_IB1_STAT_BASE_IDX = 0 # macro -mmCP_ROQ_IB2_STAT = 0x0f82 # macro -mmCP_ROQ_IB2_STAT_BASE_IDX = 0 # macro -mmCP_STQ_STAT = 0x0f83 # macro -mmCP_STQ_STAT_BASE_IDX = 0 # macro -mmCP_STQ_WR_STAT = 0x0f84 # macro -mmCP_STQ_WR_STAT_BASE_IDX = 0 # macro -mmCP_MEQ_STAT = 0x0f85 # macro -mmCP_MEQ_STAT_BASE_IDX = 0 # macro -mmCP_CEQ1_AVAIL = 0x0f86 # macro -mmCP_CEQ1_AVAIL_BASE_IDX = 0 # macro -mmCP_CEQ2_AVAIL = 0x0f87 # macro -mmCP_CEQ2_AVAIL_BASE_IDX = 0 # macro -mmCP_CE_ROQ_RB_STAT = 0x0f88 # macro -mmCP_CE_ROQ_RB_STAT_BASE_IDX = 0 # macro -mmCP_CE_ROQ_IB1_STAT = 0x0f89 # macro -mmCP_CE_ROQ_IB1_STAT_BASE_IDX = 0 # macro -mmCP_CE_ROQ_IB2_STAT = 0x0f8a # macro -mmCP_CE_ROQ_IB2_STAT_BASE_IDX = 0 # macro -mmCP_CE_ROQ_DB_STAT = 0x0f8b # macro -mmCP_CE_ROQ_DB_STAT_BASE_IDX = 0 # macro -mmCP_ROQ3_THRESHOLDS = 0x0f8c # macro -mmCP_ROQ3_THRESHOLDS_BASE_IDX = 0 # macro -mmCP_ROQ_DB_STAT = 0x0f8d # macro -mmCP_ROQ_DB_STAT_BASE_IDX = 0 # macro -mmCP_PRIV_VIOLATION_ADDR = 0x0f9a # macro -mmCP_PRIV_VIOLATION_ADDR_BASE_IDX = 0 # macro -mmVGT_CACHE_INVALIDATION = 0x0fc0 # macro -mmVGT_CACHE_INVALIDATION_BASE_IDX = 0 # macro -mmVGT_ESGS_RING_SIZE = 0x0fc1 # macro -mmVGT_ESGS_RING_SIZE_BASE_IDX = 0 # macro -mmVGT_GSVS_RING_SIZE = 0x0fc2 # macro -mmVGT_GSVS_RING_SIZE_BASE_IDX = 0 # macro -mmVGT_TF_RING_SIZE = 0x0fc3 # macro -mmVGT_TF_RING_SIZE_BASE_IDX = 0 # macro -mmVGT_HS_OFFCHIP_PARAM = 0x0fc4 # macro -mmVGT_HS_OFFCHIP_PARAM_BASE_IDX = 0 # macro -mmVGT_TF_MEMORY_BASE = 0x0fc5 # macro -mmVGT_TF_MEMORY_BASE_BASE_IDX = 0 # macro -mmVGT_TF_MEMORY_BASE_HI = 0x0fc6 # macro -mmVGT_TF_MEMORY_BASE_HI_BASE_IDX = 0 # macro -mmVGT_VTX_VECT_EJECT_REG = 0x0fcc # macro -mmVGT_VTX_VECT_EJECT_REG_BASE_IDX = 0 # macro -mmVGT_DMA_DATA_FIFO_DEPTH = 0x0fcd # macro -mmVGT_DMA_DATA_FIFO_DEPTH_BASE_IDX = 0 # macro -mmVGT_DMA_REQ_FIFO_DEPTH = 0x0fce # macro -mmVGT_DMA_REQ_FIFO_DEPTH_BASE_IDX = 0 # macro -mmVGT_DRAW_INIT_FIFO_DEPTH = 0x0fcf # macro -mmVGT_DRAW_INIT_FIFO_DEPTH_BASE_IDX = 0 # macro -mmVGT_LAST_COPY_STATE = 0x0fd0 # macro -mmVGT_LAST_COPY_STATE_BASE_IDX = 0 # macro -mmVGT_FIFO_DEPTHS = 0x0fd4 # macro -mmVGT_FIFO_DEPTHS_BASE_IDX = 0 # macro -mmVGT_GS_VERTEX_REUSE = 0x0fd5 # macro -mmVGT_GS_VERTEX_REUSE_BASE_IDX = 0 # macro -mmVGT_MC_LAT_CNTL = 0x0fd6 # macro -mmVGT_MC_LAT_CNTL_BASE_IDX = 0 # macro -mmIA_UTCL1_STATUS_2 = 0x0fd7 # macro -mmIA_UTCL1_STATUS_2_BASE_IDX = 0 # macro -mmWD_CNTL_STATUS = 0x0fdf # macro -mmWD_CNTL_STATUS_BASE_IDX = 0 # macro -mmCC_GC_PRIM_CONFIG = 0x0fe0 # macro -mmCC_GC_PRIM_CONFIG_BASE_IDX = 0 # macro -mmGC_USER_PRIM_CONFIG = 0x0fe1 # macro -mmGC_USER_PRIM_CONFIG_BASE_IDX = 0 # macro -mmWD_QOS = 0x0fe2 # macro -mmWD_QOS_BASE_IDX = 0 # macro -mmWD_UTCL1_CNTL = 0x0fe3 # macro -mmWD_UTCL1_CNTL_BASE_IDX = 0 # macro -mmWD_UTCL1_STATUS = 0x0fe4 # macro -mmWD_UTCL1_STATUS_BASE_IDX = 0 # macro -mmGE_PC_CNTL = 0x0fe5 # macro -mmGE_PC_CNTL_BASE_IDX = 0 # macro -mmIA_UTCL1_CNTL = 0x0fe6 # macro -mmIA_UTCL1_CNTL_BASE_IDX = 0 # macro -mmIA_UTCL1_STATUS = 0x0fe7 # macro -mmIA_UTCL1_STATUS_BASE_IDX = 0 # macro -mmCC_GC_SA_UNIT_DISABLE = 0x0fe9 # macro -mmCC_GC_SA_UNIT_DISABLE_BASE_IDX = 0 # macro -mmGC_USER_SA_UNIT_DISABLE = 0x0fea # macro -mmGC_USER_SA_UNIT_DISABLE_BASE_IDX = 0 # macro -mmVGT_SYS_CONFIG = 0x1003 # macro -mmVGT_SYS_CONFIG_BASE_IDX = 0 # macro -mmGE_PRIV_CONTROL = 0x1004 # macro -mmGE_PRIV_CONTROL_BASE_IDX = 0 # macro -mmGE_STATUS = 0x1005 # macro -mmGE_STATUS_BASE_IDX = 0 # macro -mmVGT_VS_MAX_WAVE_ID = 0x1008 # macro -mmVGT_VS_MAX_WAVE_ID_BASE_IDX = 0 # macro -mmVGT_GS_MAX_WAVE_ID = 0x1009 # macro -mmVGT_GS_MAX_WAVE_ID_BASE_IDX = 0 # macro -mmCC_GC_SHADER_ARRAY_CONFIG_GEN1 = 0x100a # macro -mmCC_GC_SHADER_ARRAY_CONFIG_GEN1_BASE_IDX = 0 # macro -mmCC_GC_SHADER_ARRAY_CONFIG_GEN0 = 0x100b # macro -mmCC_GC_SHADER_ARRAY_CONFIG_GEN0_BASE_IDX = 0 # macro -mmGFX_PIPE_CONTROL = 0x100d # macro -mmGFX_PIPE_CONTROL_BASE_IDX = 0 # macro -mmCC_GC_SHADER_ARRAY_CONFIG = 0x100f # macro -mmCC_GC_SHADER_ARRAY_CONFIG_BASE_IDX = 0 # macro -mmGC_USER_SHADER_ARRAY_CONFIG = 0x1010 # macro -mmGC_USER_SHADER_ARRAY_CONFIG_BASE_IDX = 0 # macro -mmVGT_DMA_PRIMITIVE_TYPE = 0x1011 # macro -mmVGT_DMA_PRIMITIVE_TYPE_BASE_IDX = 0 # macro -mmVGT_DMA_CONTROL = 0x1012 # macro -mmVGT_DMA_CONTROL_BASE_IDX = 0 # macro -mmVGT_DMA_LS_HS_CONFIG = 0x1013 # macro -mmVGT_DMA_LS_HS_CONFIG_BASE_IDX = 0 # macro -mmVGT_STRMOUT_DELAY = 0x1015 # macro -mmVGT_STRMOUT_DELAY_BASE_IDX = 0 # macro -mmWD_BUF_RESOURCE_1 = 0x1016 # macro -mmWD_BUF_RESOURCE_1_BASE_IDX = 0 # macro -mmWD_BUF_RESOURCE_2 = 0x1017 # macro -mmWD_BUF_RESOURCE_2_BASE_IDX = 0 # macro -mmPA_CL_CNTL_STATUS = 0x1024 # macro -mmPA_CL_CNTL_STATUS_BASE_IDX = 0 # macro -mmPA_CL_ENHANCE = 0x1025 # macro -mmPA_CL_ENHANCE_BASE_IDX = 0 # macro -mmPA_SU_CNTL_STATUS = 0x1034 # macro -mmPA_SU_CNTL_STATUS_BASE_IDX = 0 # macro -mmPA_SC_FIFO_DEPTH_CNTL = 0x1035 # macro -mmPA_SC_FIFO_DEPTH_CNTL_BASE_IDX = 0 # macro -mmPA_SC_P3D_TRAP_SCREEN_HV_LOCK = 0x1060 # macro -mmPA_SC_P3D_TRAP_SCREEN_HV_LOCK_BASE_IDX = 0 # macro -mmPA_SC_HP3D_TRAP_SCREEN_HV_LOCK = 0x1061 # macro -mmPA_SC_HP3D_TRAP_SCREEN_HV_LOCK_BASE_IDX = 0 # macro -mmPA_SC_TRAP_SCREEN_HV_LOCK = 0x1062 # macro -mmPA_SC_TRAP_SCREEN_HV_LOCK_BASE_IDX = 0 # macro -mmPA_SC_FORCE_EOV_MAX_CNTS = 0x1069 # macro -mmPA_SC_FORCE_EOV_MAX_CNTS_BASE_IDX = 0 # macro -mmPA_SC_BINNER_EVENT_CNTL_0 = 0x106c # macro -mmPA_SC_BINNER_EVENT_CNTL_0_BASE_IDX = 0 # macro -mmPA_SC_BINNER_EVENT_CNTL_1 = 0x106d # macro -mmPA_SC_BINNER_EVENT_CNTL_1_BASE_IDX = 0 # macro -mmPA_SC_BINNER_EVENT_CNTL_2 = 0x106e # macro -mmPA_SC_BINNER_EVENT_CNTL_2_BASE_IDX = 0 # macro -mmPA_SC_BINNER_EVENT_CNTL_3 = 0x106f # macro -mmPA_SC_BINNER_EVENT_CNTL_3_BASE_IDX = 0 # macro -mmPA_SC_BINNER_TIMEOUT_COUNTER = 0x1070 # macro -mmPA_SC_BINNER_TIMEOUT_COUNTER_BASE_IDX = 0 # macro -mmPA_SC_BINNER_PERF_CNTL_0 = 0x1071 # macro -mmPA_SC_BINNER_PERF_CNTL_0_BASE_IDX = 0 # macro -mmPA_SC_BINNER_PERF_CNTL_1 = 0x1072 # macro -mmPA_SC_BINNER_PERF_CNTL_1_BASE_IDX = 0 # macro -mmPA_SC_BINNER_PERF_CNTL_2 = 0x1073 # macro -mmPA_SC_BINNER_PERF_CNTL_2_BASE_IDX = 0 # macro -mmPA_SC_BINNER_PERF_CNTL_3 = 0x1074 # macro -mmPA_SC_BINNER_PERF_CNTL_3_BASE_IDX = 0 # macro -mmPA_SC_ENHANCE_2 = 0x107c # macro -mmPA_SC_ENHANCE_2_BASE_IDX = 0 # macro -mmPA_SC_ENHANCE_INTERNAL = 0x107d # macro -mmPA_SC_ENHANCE_INTERNAL_BASE_IDX = 0 # macro -mmPA_SC_BINNER_CNTL_OVERRIDE = 0x107e # macro -mmPA_SC_BINNER_CNTL_OVERRIDE_BASE_IDX = 0 # macro -mmPA_SC_PBB_OVERRIDE_FLAG = 0x107f # macro -mmPA_SC_PBB_OVERRIDE_FLAG_BASE_IDX = 0 # macro -mmPA_PH_INTERFACE_FIFO_SIZE = 0x1080 # macro -mmPA_PH_INTERFACE_FIFO_SIZE_BASE_IDX = 0 # macro -mmPA_PH_ENHANCE = 0x1081 # macro -mmPA_PH_ENHANCE_BASE_IDX = 0 # macro -mmPA_SC_BC_WAVE_BREAK = 0x1084 # macro -mmPA_SC_BC_WAVE_BREAK_BASE_IDX = 0 # macro -mmPA_SC_ENHANCE_3 = 0x1085 # macro -mmPA_SC_ENHANCE_3_BASE_IDX = 0 # macro -mmPA_SC_FIFO_SIZE = 0x1093 # macro -mmPA_SC_FIFO_SIZE_BASE_IDX = 0 # macro -mmPA_SC_IF_FIFO_SIZE = 0x1095 # macro -mmPA_SC_IF_FIFO_SIZE_BASE_IDX = 0 # macro -mmPA_SC_PKR_WAVE_TABLE_CNTL = 0x1098 # macro -mmPA_SC_PKR_WAVE_TABLE_CNTL_BASE_IDX = 0 # macro -mmPA_SIDEBAND_REQUEST_DELAYS = 0x109b # macro -mmPA_SIDEBAND_REQUEST_DELAYS_BASE_IDX = 0 # macro -mmPA_SC_ENHANCE = 0x109c # macro -mmPA_SC_ENHANCE_BASE_IDX = 0 # macro -mmPA_SC_ENHANCE_1 = 0x109d # macro -mmPA_SC_ENHANCE_1_BASE_IDX = 0 # macro -mmPA_SC_DSM_CNTL = 0x109e # macro -mmPA_SC_DSM_CNTL_BASE_IDX = 0 # macro -mmPA_SC_TILE_STEERING_CREST_OVERRIDE = 0x109f # macro -mmPA_SC_TILE_STEERING_CREST_OVERRIDE_BASE_IDX = 0 # macro -mmSQ_CONFIG = 0x10a0 # macro -mmSQ_CONFIG_BASE_IDX = 0 # macro -mmSQC_CONFIG = 0x10a1 # macro -mmSQC_CONFIG_BASE_IDX = 0 # macro -mmLDS_CONFIG = 0x10a2 # macro -mmLDS_CONFIG_BASE_IDX = 0 # macro -mmSQ_RANDOM_WAVE_PRI = 0x10a3 # macro -mmSQ_RANDOM_WAVE_PRI_BASE_IDX = 0 # macro -mmSQG_STATUS = 0x10a4 # macro -mmSQG_STATUS_BASE_IDX = 0 # macro -mmSQ_FIFO_SIZES = 0x10a5 # macro -mmSQ_FIFO_SIZES_BASE_IDX = 0 # macro -mmSQ_DSM_CNTL = 0x10a6 # macro -mmSQ_DSM_CNTL_BASE_IDX = 0 # macro -mmSQ_DSM_CNTL2 = 0x10a7 # macro -mmSQ_DSM_CNTL2_BASE_IDX = 0 # macro -mmSQ_RUNTIME_CONFIG = 0x10a8 # macro -mmSQ_RUNTIME_CONFIG_BASE_IDX = 0 # macro -mmSH_MEM_BASES = 0x10aa # macro -mmSH_MEM_BASES_BASE_IDX = 0 # macro -mmSP_CONFIG = 0x10ab # macro -mmSP_CONFIG_BASE_IDX = 0 # macro -mmSQ_ARB_CONFIG = 0x10ac # macro -mmSQ_ARB_CONFIG_BASE_IDX = 0 # macro -mmSH_MEM_CONFIG = 0x10ad # macro -mmSH_MEM_CONFIG_BASE_IDX = 0 # macro -mmSQ_SHADER_TBA_LO = 0x10b2 # macro -mmSQ_SHADER_TBA_LO_BASE_IDX = 0 # macro -mmSQ_SHADER_TBA_HI = 0x10b3 # macro -mmSQ_SHADER_TBA_HI_BASE_IDX = 0 # macro -mmSQ_SHADER_TMA_LO = 0x10b4 # macro -mmSQ_SHADER_TMA_LO_BASE_IDX = 0 # macro -mmSQ_SHADER_TMA_HI = 0x10b5 # macro -mmSQ_SHADER_TMA_HI_BASE_IDX = 0 # macro -mmSQG_UTCL0_CNTL1 = 0x10b7 # macro -mmSQG_UTCL0_CNTL1_BASE_IDX = 0 # macro -mmSQG_UTCL0_CNTL2 = 0x10b8 # macro -mmSQG_UTCL0_CNTL2_BASE_IDX = 0 # macro -mmSQG_UTCL0_STATUS = 0x10b9 # macro -mmSQG_UTCL0_STATUS_BASE_IDX = 0 # macro -mmSQG_CONFIG = 0x10ba # macro -mmSQG_CONFIG_BASE_IDX = 0 # macro -mmCC_GC_SHADER_RATE_CONFIG = 0x10bc # macro -mmCC_GC_SHADER_RATE_CONFIG_BASE_IDX = 0 # macro -mmGC_USER_SHADER_RATE_CONFIG = 0x10bd # macro -mmGC_USER_SHADER_RATE_CONFIG_BASE_IDX = 0 # macro -mmSQ_INTERRUPT_AUTO_MASK = 0x10be # macro -mmSQ_INTERRUPT_AUTO_MASK_BASE_IDX = 0 # macro -mmSQ_INTERRUPT_MSG_CTRL = 0x10bf # macro -mmSQ_INTERRUPT_MSG_CTRL_BASE_IDX = 0 # macro -mmSQ_WATCH0_ADDR_H = 0x10d0 # macro -mmSQ_WATCH0_ADDR_H_BASE_IDX = 0 # macro -mmSQ_WATCH0_ADDR_L = 0x10d1 # macro -mmSQ_WATCH0_ADDR_L_BASE_IDX = 0 # macro -mmSQ_WATCH0_CNTL = 0x10d2 # macro -mmSQ_WATCH0_CNTL_BASE_IDX = 0 # macro -mmSQ_WATCH1_ADDR_H = 0x10d3 # macro -mmSQ_WATCH1_ADDR_H_BASE_IDX = 0 # macro -mmSQ_WATCH1_ADDR_L = 0x10d4 # macro -mmSQ_WATCH1_ADDR_L_BASE_IDX = 0 # macro -mmSQ_WATCH1_CNTL = 0x10d5 # macro -mmSQ_WATCH1_CNTL_BASE_IDX = 0 # macro -mmSQ_WATCH2_ADDR_H = 0x10d6 # macro -mmSQ_WATCH2_ADDR_H_BASE_IDX = 0 # macro -mmSQ_WATCH2_ADDR_L = 0x10d7 # macro -mmSQ_WATCH2_ADDR_L_BASE_IDX = 0 # macro -mmSQ_WATCH2_CNTL = 0x10d8 # macro -mmSQ_WATCH2_CNTL_BASE_IDX = 0 # macro -mmSQ_WATCH3_ADDR_H = 0x10d9 # macro -mmSQ_WATCH3_ADDR_H_BASE_IDX = 0 # macro -mmSQ_WATCH3_ADDR_L = 0x10da # macro -mmSQ_WATCH3_ADDR_L_BASE_IDX = 0 # macro -mmSQ_WATCH3_CNTL = 0x10db # macro -mmSQ_WATCH3_CNTL_BASE_IDX = 0 # macro -mmSQ_THREAD_TRACE_BUF0_BASE = 0x10e0 # macro -mmSQ_THREAD_TRACE_BUF0_BASE_BASE_IDX = 0 # macro -mmSQ_THREAD_TRACE_BUF0_SIZE = 0x10e1 # macro -mmSQ_THREAD_TRACE_BUF0_SIZE_BASE_IDX = 0 # macro -mmSQ_THREAD_TRACE_BUF1_BASE = 0x10e2 # macro -mmSQ_THREAD_TRACE_BUF1_BASE_BASE_IDX = 0 # macro -mmSQ_THREAD_TRACE_BUF1_SIZE = 0x10e3 # macro -mmSQ_THREAD_TRACE_BUF1_SIZE_BASE_IDX = 0 # macro -mmSQ_THREAD_TRACE_WPTR = 0x10e4 # macro -mmSQ_THREAD_TRACE_WPTR_BASE_IDX = 0 # macro -mmSQ_THREAD_TRACE_MASK = 0x10e5 # macro -mmSQ_THREAD_TRACE_MASK_BASE_IDX = 0 # macro -mmSQ_THREAD_TRACE_TOKEN_MASK = 0x10e6 # macro -mmSQ_THREAD_TRACE_TOKEN_MASK_BASE_IDX = 0 # macro -mmSQ_THREAD_TRACE_CTRL = 0x10e7 # macro -mmSQ_THREAD_TRACE_CTRL_BASE_IDX = 0 # macro -mmSQ_THREAD_TRACE_STATUS = 0x10e8 # macro -mmSQ_THREAD_TRACE_STATUS_BASE_IDX = 0 # macro -mmSQ_THREAD_TRACE_DROPPED_CNTR = 0x10e9 # macro -mmSQ_THREAD_TRACE_DROPPED_CNTR_BASE_IDX = 0 # macro -mmSQ_THREAD_TRACE_GFX_DRAW_CNTR = 0x10eb # macro -mmSQ_THREAD_TRACE_GFX_DRAW_CNTR_BASE_IDX = 0 # macro -mmSQ_THREAD_TRACE_GFX_MARKER_CNTR = 0x10ec # macro -mmSQ_THREAD_TRACE_GFX_MARKER_CNTR_BASE_IDX = 0 # macro -mmSQ_THREAD_TRACE_HP3D_DRAW_CNTR = 0x10ed # macro -mmSQ_THREAD_TRACE_HP3D_DRAW_CNTR_BASE_IDX = 0 # macro -mmSQ_THREAD_TRACE_HP3D_MARKER_CNTR = 0x10ee # macro -mmSQ_THREAD_TRACE_HP3D_MARKER_CNTR_BASE_IDX = 0 # macro -mmSQ_THREAD_TRACE_STATUS2 = 0x10ef # macro -mmSQ_THREAD_TRACE_STATUS2_BASE_IDX = 0 # macro -mmSQ_IND_INDEX = 0x1118 # macro -mmSQ_IND_INDEX_BASE_IDX = 0 # macro -mmSQ_IND_DATA = 0x1119 # macro -mmSQ_IND_DATA_BASE_IDX = 0 # macro -mmSQ_CMD = 0x111b # macro -mmSQ_CMD_BASE_IDX = 0 # macro -mmSQ_TIME_HI = 0x111c # macro -mmSQ_TIME_HI_BASE_IDX = 0 # macro -mmSQ_TIME_LO = 0x111d # macro -mmSQ_TIME_LO_BASE_IDX = 0 # macro -mmSQ_LB_CTR_CTRL = 0x1138 # macro -mmSQ_LB_CTR_CTRL_BASE_IDX = 0 # macro -mmSQ_LB_DATA0 = 0x1139 # macro -mmSQ_LB_DATA0_BASE_IDX = 0 # macro -mmSQ_LB_DATA1 = 0x113a # macro -mmSQ_LB_DATA1_BASE_IDX = 0 # macro -mmSQ_LB_DATA2 = 0x113b # macro -mmSQ_LB_DATA2_BASE_IDX = 0 # macro -mmSQ_LB_DATA3 = 0x113c # macro -mmSQ_LB_DATA3_BASE_IDX = 0 # macro -mmSQ_LB_CTR_SEL0 = 0x113d # macro -mmSQ_LB_CTR_SEL0_BASE_IDX = 0 # macro -mmSQ_LB_CTR_SEL1 = 0x113e # macro -mmSQ_LB_CTR_SEL1_BASE_IDX = 0 # macro -mmSQ_EDC_CNT = 0x1146 # macro -mmSQ_EDC_CNT_BASE_IDX = 0 # macro -mmSQ_EDC_FUE_CNTL = 0x1147 # macro -mmSQ_EDC_FUE_CNTL_BASE_IDX = 0 # macro -mmSQ_WREXEC_EXEC_HI = 0x1151 # macro -mmSQ_WREXEC_EXEC_HI_BASE_IDX = 0 # macro -mmSQ_WREXEC_EXEC_LO = 0x1151 # macro -mmSQ_WREXEC_EXEC_LO_BASE_IDX = 0 # macro -mmSQC_ICACHE_UTCL0_CNTL1 = 0x1173 # macro -mmSQC_ICACHE_UTCL0_CNTL1_BASE_IDX = 0 # macro -mmSQC_ICACHE_UTCL0_CNTL2 = 0x1174 # macro -mmSQC_ICACHE_UTCL0_CNTL2_BASE_IDX = 0 # macro -mmSQC_DCACHE_UTCL0_CNTL1 = 0x1175 # macro -mmSQC_DCACHE_UTCL0_CNTL1_BASE_IDX = 0 # macro -mmSQC_DCACHE_UTCL0_CNTL2 = 0x1176 # macro -mmSQC_DCACHE_UTCL0_CNTL2_BASE_IDX = 0 # macro -mmSQC_ICACHE_UTCL0_STATUS = 0x1177 # macro -mmSQC_ICACHE_UTCL0_STATUS_BASE_IDX = 0 # macro -mmSQC_DCACHE_UTCL0_STATUS = 0x1178 # macro -mmSQC_DCACHE_UTCL0_STATUS_BASE_IDX = 0 # macro -mmSX_DEBUG_1 = 0x11b8 # macro -mmSX_DEBUG_1_BASE_IDX = 0 # macro -mmSPI_PS_MAX_WAVE_ID = 0x11da # macro -mmSPI_PS_MAX_WAVE_ID_BASE_IDX = 0 # macro -mmSPI_START_PHASE = 0x11db # macro -mmSPI_START_PHASE_BASE_IDX = 0 # macro -mmSPI_GFX_CNTL = 0x11dc # macro -mmSPI_GFX_CNTL_BASE_IDX = 0 # macro -mmSPI_DSM_CNTL = 0x11e3 # macro -mmSPI_DSM_CNTL_BASE_IDX = 0 # macro -mmSPI_DSM_CNTL2 = 0x11e4 # macro -mmSPI_DSM_CNTL2_BASE_IDX = 0 # macro -mmSPI_EDC_CNT = 0x11e5 # macro -mmSPI_EDC_CNT_BASE_IDX = 0 # macro -mmSPI_USER_ACCUM_VMID_CNTL = 0x11eb # macro -mmSPI_USER_ACCUM_VMID_CNTL_BASE_IDX = 0 # macro -mmSPI_CONFIG_CNTL = 0x11ec # macro -mmSPI_CONFIG_CNTL_BASE_IDX = 0 # macro -mmSPI_WAVE_LIMIT_CNTL = 0x11ed # macro -mmSPI_WAVE_LIMIT_CNTL_BASE_IDX = 0 # macro -mmSPI_CONFIG_CNTL_2 = 0x11ee # macro -mmSPI_CONFIG_CNTL_2_BASE_IDX = 0 # macro -mmSPI_CONFIG_CNTL_1 = 0x11ef # macro -mmSPI_CONFIG_CNTL_1_BASE_IDX = 0 # macro -mmSPI_CONFIG_PS_CU_EN = 0x11f2 # macro -mmSPI_CONFIG_PS_CU_EN_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_CNTL = 0x124a # macro -mmSPI_WF_LIFETIME_CNTL_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_LIMIT_0 = 0x124b # macro -mmSPI_WF_LIFETIME_LIMIT_0_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_LIMIT_1 = 0x124c # macro -mmSPI_WF_LIFETIME_LIMIT_1_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_LIMIT_2 = 0x124d # macro -mmSPI_WF_LIFETIME_LIMIT_2_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_LIMIT_3 = 0x124e # macro -mmSPI_WF_LIFETIME_LIMIT_3_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_LIMIT_4 = 0x124f # macro -mmSPI_WF_LIFETIME_LIMIT_4_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_LIMIT_5 = 0x1250 # macro -mmSPI_WF_LIFETIME_LIMIT_5_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_STATUS_0 = 0x1255 # macro -mmSPI_WF_LIFETIME_STATUS_0_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_STATUS_1 = 0x1256 # macro -mmSPI_WF_LIFETIME_STATUS_1_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_STATUS_2 = 0x1257 # macro -mmSPI_WF_LIFETIME_STATUS_2_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_STATUS_4 = 0x1259 # macro -mmSPI_WF_LIFETIME_STATUS_4_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_STATUS_6 = 0x125b # macro -mmSPI_WF_LIFETIME_STATUS_6_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_STATUS_7 = 0x125c # macro -mmSPI_WF_LIFETIME_STATUS_7_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_STATUS_8 = 0x125d # macro -mmSPI_WF_LIFETIME_STATUS_8_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_STATUS_9 = 0x125e # macro -mmSPI_WF_LIFETIME_STATUS_9_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_STATUS_11 = 0x1260 # macro -mmSPI_WF_LIFETIME_STATUS_11_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_STATUS_13 = 0x1262 # macro -mmSPI_WF_LIFETIME_STATUS_13_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_STATUS_14 = 0x1263 # macro -mmSPI_WF_LIFETIME_STATUS_14_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_STATUS_15 = 0x1264 # macro -mmSPI_WF_LIFETIME_STATUS_15_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_STATUS_16 = 0x1265 # macro -mmSPI_WF_LIFETIME_STATUS_16_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_STATUS_17 = 0x1266 # macro -mmSPI_WF_LIFETIME_STATUS_17_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_STATUS_18 = 0x1267 # macro -mmSPI_WF_LIFETIME_STATUS_18_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_STATUS_19 = 0x1268 # macro -mmSPI_WF_LIFETIME_STATUS_19_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_STATUS_20 = 0x1269 # macro -mmSPI_WF_LIFETIME_STATUS_20_BASE_IDX = 0 # macro -mmSPI_WF_LIFETIME_STATUS_21 = 0x126b # macro -mmSPI_WF_LIFETIME_STATUS_21_BASE_IDX = 0 # macro -mmSPI_LB_CTR_CTRL = 0x1274 # macro -mmSPI_LB_CTR_CTRL_BASE_IDX = 0 # macro -mmSPI_LB_WGP_MASK = 0x1275 # macro -mmSPI_LB_WGP_MASK_BASE_IDX = 0 # macro -mmSPI_LB_DATA_REG = 0x1276 # macro -mmSPI_LB_DATA_REG_BASE_IDX = 0 # macro -mmSPI_PG_ENABLE_STATIC_WGP_MASK = 0x1277 # macro -mmSPI_PG_ENABLE_STATIC_WGP_MASK_BASE_IDX = 0 # macro -mmSPI_GDS_CREDITS = 0x1278 # macro -mmSPI_GDS_CREDITS_BASE_IDX = 0 # macro -mmSPI_SX_EXPORT_BUFFER_SIZES = 0x1279 # macro -mmSPI_SX_EXPORT_BUFFER_SIZES_BASE_IDX = 0 # macro -mmSPI_SX_SCOREBOARD_BUFFER_SIZES = 0x127a # macro -mmSPI_SX_SCOREBOARD_BUFFER_SIZES_BASE_IDX = 0 # macro -mmSPI_CSQ_WF_ACTIVE_STATUS = 0x127b # macro -mmSPI_CSQ_WF_ACTIVE_STATUS_BASE_IDX = 0 # macro -mmSPI_CSQ_WF_ACTIVE_COUNT_0 = 0x127c # macro -mmSPI_CSQ_WF_ACTIVE_COUNT_0_BASE_IDX = 0 # macro -mmSPI_CSQ_WF_ACTIVE_COUNT_1 = 0x127d # macro -mmSPI_CSQ_WF_ACTIVE_COUNT_1_BASE_IDX = 0 # macro -mmSPI_CSQ_WF_ACTIVE_COUNT_2 = 0x127e # macro -mmSPI_CSQ_WF_ACTIVE_COUNT_2_BASE_IDX = 0 # macro -mmSPI_CSQ_WF_ACTIVE_COUNT_3 = 0x127f # macro -mmSPI_CSQ_WF_ACTIVE_COUNT_3_BASE_IDX = 0 # macro -mmSPI_LB_DATA_WAVES = 0x1284 # macro -mmSPI_LB_DATA_WAVES_BASE_IDX = 0 # macro -mmSPI_LB_DATA_PERWGP_WAVE_HSGS = 0x1285 # macro -mmSPI_LB_DATA_PERWGP_WAVE_HSGS_BASE_IDX = 0 # macro -mmSPI_LB_DATA_PERWGP_WAVE_VSPS = 0x1286 # macro -mmSPI_LB_DATA_PERWGP_WAVE_VSPS_BASE_IDX = 0 # macro -mmSPI_LB_DATA_PERWGP_WAVE_CS = 0x1287 # macro -mmSPI_LB_DATA_PERWGP_WAVE_CS_BASE_IDX = 0 # macro -mmSPI_P0_TRAP_SCREEN_PSBA_LO = 0x128c # macro -mmSPI_P0_TRAP_SCREEN_PSBA_LO_BASE_IDX = 0 # macro -mmSPI_P0_TRAP_SCREEN_PSBA_HI = 0x128d # macro -mmSPI_P0_TRAP_SCREEN_PSBA_HI_BASE_IDX = 0 # macro -mmSPI_P0_TRAP_SCREEN_PSMA_LO = 0x128e # macro -mmSPI_P0_TRAP_SCREEN_PSMA_LO_BASE_IDX = 0 # macro -mmSPI_P0_TRAP_SCREEN_PSMA_HI = 0x128f # macro -mmSPI_P0_TRAP_SCREEN_PSMA_HI_BASE_IDX = 0 # macro -mmSPI_P0_TRAP_SCREEN_GPR_MIN = 0x1290 # macro -mmSPI_P0_TRAP_SCREEN_GPR_MIN_BASE_IDX = 0 # macro -mmSPI_P1_TRAP_SCREEN_PSBA_LO = 0x1291 # macro -mmSPI_P1_TRAP_SCREEN_PSBA_LO_BASE_IDX = 0 # macro -mmSPI_P1_TRAP_SCREEN_PSBA_HI = 0x1292 # macro -mmSPI_P1_TRAP_SCREEN_PSBA_HI_BASE_IDX = 0 # macro -mmSPI_P1_TRAP_SCREEN_PSMA_LO = 0x1293 # macro -mmSPI_P1_TRAP_SCREEN_PSMA_LO_BASE_IDX = 0 # macro -mmSPI_P1_TRAP_SCREEN_PSMA_HI = 0x1294 # macro -mmSPI_P1_TRAP_SCREEN_PSMA_HI_BASE_IDX = 0 # macro -mmSPI_P1_TRAP_SCREEN_GPR_MIN = 0x1295 # macro -mmSPI_P1_TRAP_SCREEN_GPR_MIN_BASE_IDX = 0 # macro -mmTD_STATUS = 0x12c6 # macro -mmTD_STATUS_BASE_IDX = 0 # macro -mmTD_DSM_CNTL = 0x12cf # macro -mmTD_DSM_CNTL_BASE_IDX = 0 # macro -mmTD_DSM_CNTL2 = 0x12d0 # macro -mmTD_DSM_CNTL2_BASE_IDX = 0 # macro -mmTD_SCRATCH = 0x12d3 # macro -mmTD_SCRATCH_BASE_IDX = 0 # macro -mmTA_CNTL = 0x12e1 # macro -mmTA_CNTL_BASE_IDX = 0 # macro -mmTA_RESERVED_010C = 0x12e3 # macro -mmTA_RESERVED_010C_BASE_IDX = 0 # macro -mmTA_STATUS = 0x12e8 # macro -mmTA_STATUS_BASE_IDX = 0 # macro -mmTA_SCRATCH = 0x1304 # macro -mmTA_SCRATCH_BASE_IDX = 0 # macro -mmGDS_CONFIG = 0x1360 # macro -mmGDS_CONFIG_BASE_IDX = 0 # macro -mmGDS_CNTL_STATUS = 0x1361 # macro -mmGDS_CNTL_STATUS_BASE_IDX = 0 # macro -mmGDS_ENHANCE = 0x1362 # macro -mmGDS_ENHANCE_BASE_IDX = 0 # macro -mmGDS_PROTECTION_FAULT = 0x1363 # macro -mmGDS_PROTECTION_FAULT_BASE_IDX = 0 # macro -mmGDS_VM_PROTECTION_FAULT = 0x1364 # macro -mmGDS_VM_PROTECTION_FAULT_BASE_IDX = 0 # macro -mmGDS_EDC_CNT = 0x1365 # macro -mmGDS_EDC_CNT_BASE_IDX = 0 # macro -mmGDS_EDC_GRBM_CNT = 0x1366 # macro -mmGDS_EDC_GRBM_CNT_BASE_IDX = 0 # macro -mmGDS_EDC_OA_DED = 0x1367 # macro -mmGDS_EDC_OA_DED_BASE_IDX = 0 # macro -mmGDS_DSM_CNTL = 0x136a # macro -mmGDS_DSM_CNTL_BASE_IDX = 0 # macro -mmGDS_EDC_OA_PHY_CNT = 0x136b # macro -mmGDS_EDC_OA_PHY_CNT_BASE_IDX = 0 # macro -mmGDS_EDC_OA_PIPE_CNT = 0x136c # macro -mmGDS_EDC_OA_PIPE_CNT_BASE_IDX = 0 # macro -mmGDS_DSM_CNTL2 = 0x136d # macro -mmGDS_DSM_CNTL2_BASE_IDX = 0 # macro -mmGDS_WD_GDS_CSB = 0x136e # macro -mmGDS_WD_GDS_CSB_BASE_IDX = 0 # macro -mmDB_DEBUG = 0x13ac # macro -mmDB_DEBUG_BASE_IDX = 0 # macro -mmDB_DEBUG2 = 0x13ad # macro -mmDB_DEBUG2_BASE_IDX = 0 # macro -mmDB_DEBUG3 = 0x13ae # macro -mmDB_DEBUG3_BASE_IDX = 0 # macro -mmDB_DEBUG4 = 0x13af # macro -mmDB_DEBUG4_BASE_IDX = 0 # macro -mmDB_ETILE_STUTTER_CONTROL = 0x13b0 # macro -mmDB_ETILE_STUTTER_CONTROL_BASE_IDX = 0 # macro -mmDB_LTILE_STUTTER_CONTROL = 0x13b1 # macro -mmDB_LTILE_STUTTER_CONTROL_BASE_IDX = 0 # macro -mmDB_EQUAD_STUTTER_CONTROL = 0x13b2 # macro -mmDB_EQUAD_STUTTER_CONTROL_BASE_IDX = 0 # macro -mmDB_LQUAD_STUTTER_CONTROL = 0x13b3 # macro -mmDB_LQUAD_STUTTER_CONTROL_BASE_IDX = 0 # macro -mmDB_CREDIT_LIMIT = 0x13b4 # macro -mmDB_CREDIT_LIMIT_BASE_IDX = 0 # macro -mmDB_WATERMARKS = 0x13b5 # macro -mmDB_WATERMARKS_BASE_IDX = 0 # macro -mmDB_SUBTILE_CONTROL = 0x13b6 # macro -mmDB_SUBTILE_CONTROL_BASE_IDX = 0 # macro -mmDB_FREE_CACHELINES = 0x13b7 # macro -mmDB_FREE_CACHELINES_BASE_IDX = 0 # macro -mmDB_FIFO_DEPTH1 = 0x13b8 # macro -mmDB_FIFO_DEPTH1_BASE_IDX = 0 # macro -mmDB_FIFO_DEPTH2 = 0x13b9 # macro -mmDB_FIFO_DEPTH2_BASE_IDX = 0 # macro -mmDB_LAST_OF_BURST_CONFIG = 0x13ba # macro -mmDB_LAST_OF_BURST_CONFIG_BASE_IDX = 0 # macro -mmDB_RING_CONTROL = 0x13bb # macro -mmDB_RING_CONTROL_BASE_IDX = 0 # macro -mmDB_MEM_ARB_WATERMARKS = 0x13bc # macro -mmDB_MEM_ARB_WATERMARKS_BASE_IDX = 0 # macro -mmDB_FIFO_DEPTH3 = 0x13bd # macro -mmDB_FIFO_DEPTH3_BASE_IDX = 0 # macro -mmDB_RMI_BC_GL2_CACHE_CONTROL = 0x13be # macro -mmDB_RMI_BC_GL2_CACHE_CONTROL_BASE_IDX = 0 # macro -mmDB_EXCEPTION_CONTROL = 0x13bf # macro -mmDB_EXCEPTION_CONTROL_BASE_IDX = 0 # macro -mmDB_DFSM_CONFIG = 0x13d0 # macro -mmDB_DFSM_CONFIG_BASE_IDX = 0 # macro -mmDB_DEBUG5 = 0x13d1 # macro -mmDB_DEBUG5_BASE_IDX = 0 # macro -mmDB_DFSM_TILES_IN_FLIGHT = 0x13d2 # macro -mmDB_DFSM_TILES_IN_FLIGHT_BASE_IDX = 0 # macro -mmDB_DFSM_PRIMS_IN_FLIGHT = 0x13d3 # macro -mmDB_DFSM_PRIMS_IN_FLIGHT_BASE_IDX = 0 # macro -mmDB_DFSM_WATCHDOG = 0x13d4 # macro -mmDB_DFSM_WATCHDOG_BASE_IDX = 0 # macro -mmDB_DFSM_FLUSH_ENABLE = 0x13d5 # macro -mmDB_DFSM_FLUSH_ENABLE_BASE_IDX = 0 # macro -mmDB_DFSM_FLUSH_AUX_EVENT = 0x13d6 # macro -mmDB_DFSM_FLUSH_AUX_EVENT_BASE_IDX = 0 # macro -mmDB_FGCG_SRAMS_CLK_CTRL = 0x13d7 # macro -mmDB_FGCG_SRAMS_CLK_CTRL_BASE_IDX = 0 # macro -mmDB_FGCG_INTERFACES_CLK_CTRL = 0x13d8 # macro -mmDB_FGCG_INTERFACES_CLK_CTRL_BASE_IDX = 0 # macro -mmCC_RB_REDUNDANCY = 0x13dc # macro -mmCC_RB_REDUNDANCY_BASE_IDX = 0 # macro -mmCC_RB_BACKEND_DISABLE = 0x13dd # macro -mmCC_RB_BACKEND_DISABLE_BASE_IDX = 0 # macro -mmGB_ADDR_CONFIG = 0x13de # macro -mmGB_ADDR_CONFIG_BASE_IDX = 0 # macro -mmGB_BACKEND_MAP = 0x13df # macro -mmGB_BACKEND_MAP_BASE_IDX = 0 # macro -mmGB_GPU_ID = 0x13e0 # macro -mmGB_GPU_ID_BASE_IDX = 0 # macro -mmCC_RB_DAISY_CHAIN = 0x13e1 # macro -mmCC_RB_DAISY_CHAIN_BASE_IDX = 0 # macro -mmGB_ADDR_CONFIG_READ = 0x13e2 # macro -mmGB_ADDR_CONFIG_READ_BASE_IDX = 0 # macro -mmCB_HW_CONTROL_4 = 0x1422 # macro -mmCB_HW_CONTROL_4_BASE_IDX = 0 # macro -mmCB_HW_CONTROL_3 = 0x1423 # macro -mmCB_HW_CONTROL_3_BASE_IDX = 0 # macro -mmCB_HW_CONTROL = 0x1424 # macro -mmCB_HW_CONTROL_BASE_IDX = 0 # macro -mmCB_HW_CONTROL_1 = 0x1425 # macro -mmCB_HW_CONTROL_1_BASE_IDX = 0 # macro -mmCB_HW_CONTROL_2 = 0x1426 # macro -mmCB_HW_CONTROL_2_BASE_IDX = 0 # macro -mmCB_DCC_CONFIG = 0x1427 # macro -mmCB_DCC_CONFIG_BASE_IDX = 0 # macro -mmCB_HW_MEM_ARBITER_RD = 0x1428 # macro -mmCB_HW_MEM_ARBITER_RD_BASE_IDX = 0 # macro -mmCB_HW_MEM_ARBITER_WR = 0x1429 # macro -mmCB_HW_MEM_ARBITER_WR_BASE_IDX = 0 # macro -mmCB_RMI_BC_GL2_CACHE_CONTROL = 0x142a # macro -mmCB_RMI_BC_GL2_CACHE_CONTROL_BASE_IDX = 0 # macro -mmCB_STUTTER_CONTROL_CMASK_RDLAT = 0x142b # macro -mmCB_STUTTER_CONTROL_CMASK_RDLAT_BASE_IDX = 0 # macro -mmCB_STUTTER_CONTROL_FMASK_RDLAT = 0x142c # macro -mmCB_STUTTER_CONTROL_FMASK_RDLAT_BASE_IDX = 0 # macro -mmCB_STUTTER_CONTROL_COLOR_RDLAT = 0x142d # macro -mmCB_STUTTER_CONTROL_COLOR_RDLAT_BASE_IDX = 0 # macro -mmCB_CACHE_EVICT_POINTS = 0x142e # macro -mmCB_CACHE_EVICT_POINTS_BASE_IDX = 0 # macro -mmGC_USER_RB_REDUNDANCY = 0x147e # macro -mmGC_USER_RB_REDUNDANCY_BASE_IDX = 0 # macro -mmGC_USER_RB_BACKEND_DISABLE = 0x147f # macro -mmGC_USER_RB_BACKEND_DISABLE_BASE_IDX = 0 # macro -mmGCEA_MISC = 0x14a2 # macro -mmGCEA_MISC_BASE_IDX = 0 # macro -mmGCEA_LATENCY_SAMPLING = 0x14a3 # macro -mmGCEA_LATENCY_SAMPLING_BASE_IDX = 0 # macro -mmGCEA_DSM_CNTL = 0x14b4 # macro -mmGCEA_DSM_CNTL_BASE_IDX = 0 # macro -mmGCEA_DSM_CNTLA = 0x14b5 # macro -mmGCEA_DSM_CNTLA_BASE_IDX = 0 # macro -mmGCEA_DSM_CNTLB = 0x14b6 # macro -mmGCEA_DSM_CNTLB_BASE_IDX = 0 # macro -mmGCEA_DSM_CNTL2 = 0x14b7 # macro -mmGCEA_DSM_CNTL2_BASE_IDX = 0 # macro -mmGCEA_DSM_CNTL2A = 0x14b8 # macro -mmGCEA_DSM_CNTL2A_BASE_IDX = 0 # macro -mmGCEA_DSM_CNTL2B = 0x14b9 # macro -mmGCEA_DSM_CNTL2B_BASE_IDX = 0 # macro -mmGCEA_GL2C_XBR_CREDITS = 0x14ba # macro -mmGCEA_GL2C_XBR_CREDITS_BASE_IDX = 0 # macro -mmGCEA_GL2C_XBR_MAXBURST = 0x14bb # macro -mmGCEA_GL2C_XBR_MAXBURST_BASE_IDX = 0 # macro -mmGCEA_PROBE_CNTL = 0x14bc # macro -mmGCEA_PROBE_CNTL_BASE_IDX = 0 # macro -mmGCEA_PROBE_MAP = 0x14bd # macro -mmGCEA_PROBE_MAP_BASE_IDX = 0 # macro -mmGCEA_ERR_STATUS = 0x14be # macro -mmGCEA_ERR_STATUS_BASE_IDX = 0 # macro -mmGCEA_MISC2 = 0x14bf # macro -mmGCEA_MISC2_BASE_IDX = 0 # macro -mmSPI_PQEV_CTRL = 0x14c0 # macro -mmSPI_PQEV_CTRL_BASE_IDX = 0 # macro -mmSPI_EXP_THROTTLE_CTRL = 0x14c3 # macro -mmSPI_EXP_THROTTLE_CTRL_BASE_IDX = 0 # macro -mmGCEA_RRET_MEM_RESERVE = 0x1518 # macro -mmGCEA_RRET_MEM_RESERVE_BASE_IDX = 0 # macro -mmRMI_GENERAL_CNTL = 0x1520 # macro -mmRMI_GENERAL_CNTL_BASE_IDX = 0 # macro -mmRMI_GENERAL_CNTL1 = 0x1521 # macro -mmRMI_GENERAL_CNTL1_BASE_IDX = 0 # macro -mmRMI_GENERAL_STATUS = 0x1522 # macro -mmRMI_GENERAL_STATUS_BASE_IDX = 0 # macro -mmRMI_SUBBLOCK_STATUS0 = 0x1523 # macro -mmRMI_SUBBLOCK_STATUS0_BASE_IDX = 0 # macro -mmRMI_SUBBLOCK_STATUS1 = 0x1524 # macro -mmRMI_SUBBLOCK_STATUS1_BASE_IDX = 0 # macro -mmRMI_SUBBLOCK_STATUS2 = 0x1525 # macro -mmRMI_SUBBLOCK_STATUS2_BASE_IDX = 0 # macro -mmRMI_SUBBLOCK_STATUS3 = 0x1526 # macro -mmRMI_SUBBLOCK_STATUS3_BASE_IDX = 0 # macro -mmRMI_XBAR_CONFIG = 0x1527 # macro -mmRMI_XBAR_CONFIG_BASE_IDX = 0 # macro -mmRMI_PROBE_POP_LOGIC_CNTL = 0x1528 # macro -mmRMI_PROBE_POP_LOGIC_CNTL_BASE_IDX = 0 # macro -mmRMI_UTC_XNACK_N_MISC_CNTL = 0x1529 # macro -mmRMI_UTC_XNACK_N_MISC_CNTL_BASE_IDX = 0 # macro -mmRMI_DEMUX_CNTL = 0x152a # macro -mmRMI_DEMUX_CNTL_BASE_IDX = 0 # macro -mmRMI_UTCL1_CNTL1 = 0x152b # macro -mmRMI_UTCL1_CNTL1_BASE_IDX = 0 # macro -mmRMI_UTCL1_CNTL2 = 0x152c # macro -mmRMI_UTCL1_CNTL2_BASE_IDX = 0 # macro -mmRMI_UTC_UNIT_CONFIG = 0x152d # macro -mmRMI_UTC_UNIT_CONFIG_BASE_IDX = 0 # macro -mmRMI_TCIW_FORMATTER0_CNTL = 0x152e # macro -mmRMI_TCIW_FORMATTER0_CNTL_BASE_IDX = 0 # macro -mmRMI_TCIW_FORMATTER1_CNTL = 0x152f # macro -mmRMI_TCIW_FORMATTER1_CNTL_BASE_IDX = 0 # macro -mmRMI_SCOREBOARD_CNTL = 0x1530 # macro -mmRMI_SCOREBOARD_CNTL_BASE_IDX = 0 # macro -mmRMI_SCOREBOARD_STATUS0 = 0x1531 # macro -mmRMI_SCOREBOARD_STATUS0_BASE_IDX = 0 # macro -mmRMI_SCOREBOARD_STATUS1 = 0x1532 # macro -mmRMI_SCOREBOARD_STATUS1_BASE_IDX = 0 # macro -mmRMI_SCOREBOARD_STATUS2 = 0x1533 # macro -mmRMI_SCOREBOARD_STATUS2_BASE_IDX = 0 # macro -mmRMI_XBAR_ARBITER_CONFIG = 0x1534 # macro -mmRMI_XBAR_ARBITER_CONFIG_BASE_IDX = 0 # macro -mmRMI_XBAR_ARBITER_CONFIG_1 = 0x1535 # macro -mmRMI_XBAR_ARBITER_CONFIG_1_BASE_IDX = 0 # macro -mmRMI_CLOCK_CNTRL = 0x1536 # macro -mmRMI_CLOCK_CNTRL_BASE_IDX = 0 # macro -mmRMI_UTCL1_STATUS = 0x1537 # macro -mmRMI_UTCL1_STATUS_BASE_IDX = 0 # macro -mmRMI_RB_GLX_CID_MAP = 0x1538 # macro -mmRMI_RB_GLX_CID_MAP_BASE_IDX = 0 # macro -mmRMI_SPARE = 0x153f # macro -mmRMI_SPARE_BASE_IDX = 0 # macro -mmRMI_SPARE_1 = 0x1540 # macro -mmRMI_SPARE_1_BASE_IDX = 0 # macro -mmRMI_SPARE_2 = 0x1541 # macro -mmRMI_SPARE_2_BASE_IDX = 0 # macro -mmCC_RMI_REDUNDANCY = 0x1542 # macro -mmCC_RMI_REDUNDANCY_BASE_IDX = 0 # macro -mmGC_USER_RMI_REDUNDANCY = 0x1543 # macro -mmGC_USER_RMI_REDUNDANCY_BASE_IDX = 0 # macro -mmGCR_GENERAL_CNTL = 0x1580 # macro -mmGCR_GENERAL_CNTL_BASE_IDX = 0 # macro -mmGCR_CMD_STATUS = 0x1582 # macro -mmGCR_CMD_STATUS_BASE_IDX = 0 # macro -mmGCR_SPARE = 0x1583 # macro -mmGCR_SPARE_BASE_IDX = 0 # macro -mmPMM_GENERAL_CNTL = 0x1585 # macro -mmPMM_GENERAL_CNTL_BASE_IDX = 0 # macro -mmGCR_PIO_CNTL = 0x1586 # macro -mmGCR_PIO_CNTL_BASE_IDX = 0 # macro -mmGCR_PIO_DATA = 0x1587 # macro -mmGCR_PIO_DATA_BASE_IDX = 0 # macro -mmUTCL1_CTRL = 0x1588 # macro -mmUTCL1_CTRL_BASE_IDX = 0 # macro -mmUTCL1_ALOG = 0x1589 # macro -mmUTCL1_ALOG_BASE_IDX = 0 # macro -mmUTCL1_UTCL0_INVREQ_DISABLE = 0x158a # macro -mmUTCL1_UTCL0_INVREQ_DISABLE_BASE_IDX = 0 # macro -mmGCRD_SA_TARGETS_DISABLE = 0x158b # macro -mmGCRD_SA_TARGETS_DISABLE_BASE_IDX = 0 # macro -mmUTCL1_STATUS = 0x158c # macro -mmUTCL1_STATUS_BASE_IDX = 0 # macro -mmGCVM_L2_CNTL = 0x15bc # macro -mmGCVM_L2_CNTL_BASE_IDX = 0 # macro -mmGCVM_L2_CNTL2 = 0x15bd # macro -mmGCVM_L2_CNTL2_BASE_IDX = 0 # macro -mmGCVM_L2_CNTL3 = 0x15be # macro -mmGCVM_L2_CNTL3_BASE_IDX = 0 # macro -mmGCVM_L2_STATUS = 0x15bf # macro -mmGCVM_L2_STATUS_BASE_IDX = 0 # macro -mmGCVM_DUMMY_PAGE_FAULT_CNTL = 0x15c0 # macro -mmGCVM_DUMMY_PAGE_FAULT_CNTL_BASE_IDX = 0 # macro -mmGCVM_DUMMY_PAGE_FAULT_ADDR_LO32 = 0x15c1 # macro -mmGCVM_DUMMY_PAGE_FAULT_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_DUMMY_PAGE_FAULT_ADDR_HI32 = 0x15c2 # macro -mmGCVM_DUMMY_PAGE_FAULT_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_CNTL = 0x15c3 # macro -mmGCVM_INVALIDATE_CNTL_BASE_IDX = 0 # macro -mmGCVM_L2_PROTECTION_FAULT_CNTL = 0x15c4 # macro -mmGCVM_L2_PROTECTION_FAULT_CNTL_BASE_IDX = 0 # macro -mmGCVM_L2_PROTECTION_FAULT_CNTL2 = 0x15c5 # macro -mmGCVM_L2_PROTECTION_FAULT_CNTL2_BASE_IDX = 0 # macro -mmGCVM_L2_PROTECTION_FAULT_MM_CNTL3 = 0x15c6 # macro -mmGCVM_L2_PROTECTION_FAULT_MM_CNTL3_BASE_IDX = 0 # macro -mmGCVM_L2_PROTECTION_FAULT_MM_CNTL4 = 0x15c7 # macro -mmGCVM_L2_PROTECTION_FAULT_MM_CNTL4_BASE_IDX = 0 # macro -mmGCVM_L2_PROTECTION_FAULT_STATUS = 0x15c8 # macro -mmGCVM_L2_PROTECTION_FAULT_STATUS_BASE_IDX = 0 # macro -mmGCVM_L2_PROTECTION_FAULT_ADDR_LO32 = 0x15c9 # macro -mmGCVM_L2_PROTECTION_FAULT_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_L2_PROTECTION_FAULT_ADDR_HI32 = 0x15ca # macro -mmGCVM_L2_PROTECTION_FAULT_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_L2_PROTECTION_FAULT_DEFAULT_ADDR_LO32 = 0x15cb # macro -mmGCVM_L2_PROTECTION_FAULT_DEFAULT_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_L2_PROTECTION_FAULT_DEFAULT_ADDR_HI32 = 0x15cc # macro -mmGCVM_L2_PROTECTION_FAULT_DEFAULT_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_DEBUG = 0x15cd # macro -mmGCVM_DEBUG_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT1_IDENTITY_APERTURE_LOW_ADDR_LO32 = 0x15ce # macro -mmGCVM_L2_CONTEXT1_IDENTITY_APERTURE_LOW_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT1_IDENTITY_APERTURE_LOW_ADDR_HI32 = 0x15cf # macro -mmGCVM_L2_CONTEXT1_IDENTITY_APERTURE_LOW_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT1_IDENTITY_APERTURE_HIGH_ADDR_LO32 = 0x15d0 # macro -mmGCVM_L2_CONTEXT1_IDENTITY_APERTURE_HIGH_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT1_IDENTITY_APERTURE_HIGH_ADDR_HI32 = 0x15d1 # macro -mmGCVM_L2_CONTEXT1_IDENTITY_APERTURE_HIGH_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT_IDENTITY_PHYSICAL_OFFSET_LO32 = 0x15d2 # macro -mmGCVM_L2_CONTEXT_IDENTITY_PHYSICAL_OFFSET_LO32_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT_IDENTITY_PHYSICAL_OFFSET_HI32 = 0x15d3 # macro -mmGCVM_L2_CONTEXT_IDENTITY_PHYSICAL_OFFSET_HI32_BASE_IDX = 0 # macro -mmGCVM_L2_CNTL4 = 0x15d4 # macro -mmGCVM_L2_CNTL4_BASE_IDX = 0 # macro -mmGCVM_L2_MM_GROUP_RT_CLASSES = 0x15d5 # macro -mmGCVM_L2_MM_GROUP_RT_CLASSES_BASE_IDX = 0 # macro -mmGCVM_L2_BANK_SELECT_RESERVED_CID = 0x15d6 # macro -mmGCVM_L2_BANK_SELECT_RESERVED_CID_BASE_IDX = 0 # macro -mmGCVM_L2_BANK_SELECT_RESERVED_CID2 = 0x15d7 # macro -mmGCVM_L2_BANK_SELECT_RESERVED_CID2_BASE_IDX = 0 # macro -mmGCVM_L2_CACHE_PARITY_CNTL = 0x15d8 # macro -mmGCVM_L2_CACHE_PARITY_CNTL_BASE_IDX = 0 # macro -mmGCVM_L2_IH_LOG_CNTL = 0x15d9 # macro -mmGCVM_L2_IH_LOG_CNTL_BASE_IDX = 0 # macro -mmGCVM_L2_CNTL5 = 0x15dc # macro -mmGCVM_L2_CNTL5_BASE_IDX = 0 # macro -mmGCVM_L2_GCR_CNTL = 0x15dd # macro -mmGCVM_L2_GCR_CNTL_BASE_IDX = 0 # macro -mmGCVML2_WALKER_MACRO_THROTTLE_TIME = 0x15de # macro -mmGCVML2_WALKER_MACRO_THROTTLE_TIME_BASE_IDX = 0 # macro -mmGCVML2_WALKER_MACRO_THROTTLE_FETCH_LIMIT = 0x15df # macro -mmGCVML2_WALKER_MACRO_THROTTLE_FETCH_LIMIT_BASE_IDX = 0 # macro -mmGCVML2_WALKER_MICRO_THROTTLE_TIME = 0x15e0 # macro -mmGCVML2_WALKER_MICRO_THROTTLE_TIME_BASE_IDX = 0 # macro -mmGCVML2_WALKER_MICRO_THROTTLE_FETCH_LIMIT = 0x15e1 # macro -mmGCVML2_WALKER_MICRO_THROTTLE_FETCH_LIMIT_BASE_IDX = 0 # macro -mmGCVM_L2_PTE_CACHE_DUMP_CNTL = 0x15e3 # macro -mmGCVM_L2_PTE_CACHE_DUMP_CNTL_BASE_IDX = 0 # macro -mmGCVM_L2_PTE_CACHE_DUMP_READ = 0x15e4 # macro -mmGCVM_L2_PTE_CACHE_DUMP_READ_BASE_IDX = 0 # macro -mmGCVM_CONTEXT0_CNTL = 0x15fc # macro -mmGCVM_CONTEXT0_CNTL_BASE_IDX = 0 # macro -mmGCVM_CONTEXT1_CNTL = 0x15fd # macro -mmGCVM_CONTEXT1_CNTL_BASE_IDX = 0 # macro -mmGCVM_CONTEXT2_CNTL = 0x15fe # macro -mmGCVM_CONTEXT2_CNTL_BASE_IDX = 0 # macro -mmGCVM_CONTEXT3_CNTL = 0x15ff # macro -mmGCVM_CONTEXT3_CNTL_BASE_IDX = 0 # macro -mmGCVM_CONTEXT4_CNTL = 0x1600 # macro -mmGCVM_CONTEXT4_CNTL_BASE_IDX = 0 # macro -mmGCVM_CONTEXT5_CNTL = 0x1601 # macro -mmGCVM_CONTEXT5_CNTL_BASE_IDX = 0 # macro -mmGCVM_CONTEXT6_CNTL = 0x1602 # macro -mmGCVM_CONTEXT6_CNTL_BASE_IDX = 0 # macro -mmGCVM_CONTEXT7_CNTL = 0x1603 # macro -mmGCVM_CONTEXT7_CNTL_BASE_IDX = 0 # macro -mmGCVM_CONTEXT8_CNTL = 0x1604 # macro -mmGCVM_CONTEXT8_CNTL_BASE_IDX = 0 # macro -mmGCVM_CONTEXT9_CNTL = 0x1605 # macro -mmGCVM_CONTEXT9_CNTL_BASE_IDX = 0 # macro -mmGCVM_CONTEXT10_CNTL = 0x1606 # macro -mmGCVM_CONTEXT10_CNTL_BASE_IDX = 0 # macro -mmGCVM_CONTEXT11_CNTL = 0x1607 # macro -mmGCVM_CONTEXT11_CNTL_BASE_IDX = 0 # macro -mmGCVM_CONTEXT12_CNTL = 0x1608 # macro -mmGCVM_CONTEXT12_CNTL_BASE_IDX = 0 # macro -mmGCVM_CONTEXT13_CNTL = 0x1609 # macro -mmGCVM_CONTEXT13_CNTL_BASE_IDX = 0 # macro -mmGCVM_CONTEXT14_CNTL = 0x160a # macro -mmGCVM_CONTEXT14_CNTL_BASE_IDX = 0 # macro -mmGCVM_CONTEXT15_CNTL = 0x160b # macro -mmGCVM_CONTEXT15_CNTL_BASE_IDX = 0 # macro -mmGCVM_CONTEXTS_DISABLE = 0x160c # macro -mmGCVM_CONTEXTS_DISABLE_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG0_SEM = 0x160d # macro -mmGCVM_INVALIDATE_ENG0_SEM_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG1_SEM = 0x160e # macro -mmGCVM_INVALIDATE_ENG1_SEM_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG2_SEM = 0x160f # macro -mmGCVM_INVALIDATE_ENG2_SEM_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG3_SEM = 0x1610 # macro -mmGCVM_INVALIDATE_ENG3_SEM_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG4_SEM = 0x1611 # macro -mmGCVM_INVALIDATE_ENG4_SEM_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG5_SEM = 0x1612 # macro -mmGCVM_INVALIDATE_ENG5_SEM_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG6_SEM = 0x1613 # macro -mmGCVM_INVALIDATE_ENG6_SEM_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG7_SEM = 0x1614 # macro -mmGCVM_INVALIDATE_ENG7_SEM_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG8_SEM = 0x1615 # macro -mmGCVM_INVALIDATE_ENG8_SEM_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG9_SEM = 0x1616 # macro -mmGCVM_INVALIDATE_ENG9_SEM_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG10_SEM = 0x1617 # macro -mmGCVM_INVALIDATE_ENG10_SEM_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG11_SEM = 0x1618 # macro -mmGCVM_INVALIDATE_ENG11_SEM_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG12_SEM = 0x1619 # macro -mmGCVM_INVALIDATE_ENG12_SEM_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG13_SEM = 0x161a # macro -mmGCVM_INVALIDATE_ENG13_SEM_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG14_SEM = 0x161b # macro -mmGCVM_INVALIDATE_ENG14_SEM_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG15_SEM = 0x161c # macro -mmGCVM_INVALIDATE_ENG15_SEM_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG16_SEM = 0x161d # macro -mmGCVM_INVALIDATE_ENG16_SEM_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG17_SEM = 0x161e # macro -mmGCVM_INVALIDATE_ENG17_SEM_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG0_REQ = 0x161f # macro -mmGCVM_INVALIDATE_ENG0_REQ_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG1_REQ = 0x1620 # macro -mmGCVM_INVALIDATE_ENG1_REQ_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG2_REQ = 0x1621 # macro -mmGCVM_INVALIDATE_ENG2_REQ_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG3_REQ = 0x1622 # macro -mmGCVM_INVALIDATE_ENG3_REQ_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG4_REQ = 0x1623 # macro -mmGCVM_INVALIDATE_ENG4_REQ_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG5_REQ = 0x1624 # macro -mmGCVM_INVALIDATE_ENG5_REQ_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG6_REQ = 0x1625 # macro -mmGCVM_INVALIDATE_ENG6_REQ_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG7_REQ = 0x1626 # macro -mmGCVM_INVALIDATE_ENG7_REQ_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG8_REQ = 0x1627 # macro -mmGCVM_INVALIDATE_ENG8_REQ_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG9_REQ = 0x1628 # macro -mmGCVM_INVALIDATE_ENG9_REQ_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG10_REQ = 0x1629 # macro -mmGCVM_INVALIDATE_ENG10_REQ_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG11_REQ = 0x162a # macro -mmGCVM_INVALIDATE_ENG11_REQ_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG12_REQ = 0x162b # macro -mmGCVM_INVALIDATE_ENG12_REQ_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG13_REQ = 0x162c # macro -mmGCVM_INVALIDATE_ENG13_REQ_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG14_REQ = 0x162d # macro -mmGCVM_INVALIDATE_ENG14_REQ_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG15_REQ = 0x162e # macro -mmGCVM_INVALIDATE_ENG15_REQ_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG16_REQ = 0x162f # macro -mmGCVM_INVALIDATE_ENG16_REQ_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG17_REQ = 0x1630 # macro -mmGCVM_INVALIDATE_ENG17_REQ_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG0_ACK = 0x1631 # macro -mmGCVM_INVALIDATE_ENG0_ACK_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG1_ACK = 0x1632 # macro -mmGCVM_INVALIDATE_ENG1_ACK_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG2_ACK = 0x1633 # macro -mmGCVM_INVALIDATE_ENG2_ACK_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG3_ACK = 0x1634 # macro -mmGCVM_INVALIDATE_ENG3_ACK_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG4_ACK = 0x1635 # macro -mmGCVM_INVALIDATE_ENG4_ACK_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG5_ACK = 0x1636 # macro -mmGCVM_INVALIDATE_ENG5_ACK_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG6_ACK = 0x1637 # macro -mmGCVM_INVALIDATE_ENG6_ACK_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG7_ACK = 0x1638 # macro -mmGCVM_INVALIDATE_ENG7_ACK_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG8_ACK = 0x1639 # macro -mmGCVM_INVALIDATE_ENG8_ACK_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG9_ACK = 0x163a # macro -mmGCVM_INVALIDATE_ENG9_ACK_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG10_ACK = 0x163b # macro -mmGCVM_INVALIDATE_ENG10_ACK_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG11_ACK = 0x163c # macro -mmGCVM_INVALIDATE_ENG11_ACK_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG12_ACK = 0x163d # macro -mmGCVM_INVALIDATE_ENG12_ACK_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG13_ACK = 0x163e # macro -mmGCVM_INVALIDATE_ENG13_ACK_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG14_ACK = 0x163f # macro -mmGCVM_INVALIDATE_ENG14_ACK_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG15_ACK = 0x1640 # macro -mmGCVM_INVALIDATE_ENG15_ACK_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG16_ACK = 0x1641 # macro -mmGCVM_INVALIDATE_ENG16_ACK_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG17_ACK = 0x1642 # macro -mmGCVM_INVALIDATE_ENG17_ACK_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG0_ADDR_RANGE_LO32 = 0x1643 # macro -mmGCVM_INVALIDATE_ENG0_ADDR_RANGE_LO32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG0_ADDR_RANGE_HI32 = 0x1644 # macro -mmGCVM_INVALIDATE_ENG0_ADDR_RANGE_HI32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG1_ADDR_RANGE_LO32 = 0x1645 # macro -mmGCVM_INVALIDATE_ENG1_ADDR_RANGE_LO32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG1_ADDR_RANGE_HI32 = 0x1646 # macro -mmGCVM_INVALIDATE_ENG1_ADDR_RANGE_HI32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG2_ADDR_RANGE_LO32 = 0x1647 # macro -mmGCVM_INVALIDATE_ENG2_ADDR_RANGE_LO32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG2_ADDR_RANGE_HI32 = 0x1648 # macro -mmGCVM_INVALIDATE_ENG2_ADDR_RANGE_HI32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG3_ADDR_RANGE_LO32 = 0x1649 # macro -mmGCVM_INVALIDATE_ENG3_ADDR_RANGE_LO32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG3_ADDR_RANGE_HI32 = 0x164a # macro -mmGCVM_INVALIDATE_ENG3_ADDR_RANGE_HI32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG4_ADDR_RANGE_LO32 = 0x164b # macro -mmGCVM_INVALIDATE_ENG4_ADDR_RANGE_LO32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG4_ADDR_RANGE_HI32 = 0x164c # macro -mmGCVM_INVALIDATE_ENG4_ADDR_RANGE_HI32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG5_ADDR_RANGE_LO32 = 0x164d # macro -mmGCVM_INVALIDATE_ENG5_ADDR_RANGE_LO32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG5_ADDR_RANGE_HI32 = 0x164e # macro -mmGCVM_INVALIDATE_ENG5_ADDR_RANGE_HI32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG6_ADDR_RANGE_LO32 = 0x164f # macro -mmGCVM_INVALIDATE_ENG6_ADDR_RANGE_LO32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG6_ADDR_RANGE_HI32 = 0x1650 # macro -mmGCVM_INVALIDATE_ENG6_ADDR_RANGE_HI32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG7_ADDR_RANGE_LO32 = 0x1651 # macro -mmGCVM_INVALIDATE_ENG7_ADDR_RANGE_LO32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG7_ADDR_RANGE_HI32 = 0x1652 # macro -mmGCVM_INVALIDATE_ENG7_ADDR_RANGE_HI32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG8_ADDR_RANGE_LO32 = 0x1653 # macro -mmGCVM_INVALIDATE_ENG8_ADDR_RANGE_LO32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG8_ADDR_RANGE_HI32 = 0x1654 # macro -mmGCVM_INVALIDATE_ENG8_ADDR_RANGE_HI32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG9_ADDR_RANGE_LO32 = 0x1655 # macro -mmGCVM_INVALIDATE_ENG9_ADDR_RANGE_LO32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG9_ADDR_RANGE_HI32 = 0x1656 # macro -mmGCVM_INVALIDATE_ENG9_ADDR_RANGE_HI32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG10_ADDR_RANGE_LO32 = 0x1657 # macro -mmGCVM_INVALIDATE_ENG10_ADDR_RANGE_LO32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG10_ADDR_RANGE_HI32 = 0x1658 # macro -mmGCVM_INVALIDATE_ENG10_ADDR_RANGE_HI32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG11_ADDR_RANGE_LO32 = 0x1659 # macro -mmGCVM_INVALIDATE_ENG11_ADDR_RANGE_LO32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG11_ADDR_RANGE_HI32 = 0x165a # macro -mmGCVM_INVALIDATE_ENG11_ADDR_RANGE_HI32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG12_ADDR_RANGE_LO32 = 0x165b # macro -mmGCVM_INVALIDATE_ENG12_ADDR_RANGE_LO32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG12_ADDR_RANGE_HI32 = 0x165c # macro -mmGCVM_INVALIDATE_ENG12_ADDR_RANGE_HI32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG13_ADDR_RANGE_LO32 = 0x165d # macro -mmGCVM_INVALIDATE_ENG13_ADDR_RANGE_LO32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG13_ADDR_RANGE_HI32 = 0x165e # macro -mmGCVM_INVALIDATE_ENG13_ADDR_RANGE_HI32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG14_ADDR_RANGE_LO32 = 0x165f # macro -mmGCVM_INVALIDATE_ENG14_ADDR_RANGE_LO32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG14_ADDR_RANGE_HI32 = 0x1660 # macro -mmGCVM_INVALIDATE_ENG14_ADDR_RANGE_HI32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG15_ADDR_RANGE_LO32 = 0x1661 # macro -mmGCVM_INVALIDATE_ENG15_ADDR_RANGE_LO32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG15_ADDR_RANGE_HI32 = 0x1662 # macro -mmGCVM_INVALIDATE_ENG15_ADDR_RANGE_HI32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG16_ADDR_RANGE_LO32 = 0x1663 # macro -mmGCVM_INVALIDATE_ENG16_ADDR_RANGE_LO32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG16_ADDR_RANGE_HI32 = 0x1664 # macro -mmGCVM_INVALIDATE_ENG16_ADDR_RANGE_HI32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG17_ADDR_RANGE_LO32 = 0x1665 # macro -mmGCVM_INVALIDATE_ENG17_ADDR_RANGE_LO32_BASE_IDX = 0 # macro -mmGCVM_INVALIDATE_ENG17_ADDR_RANGE_HI32 = 0x1666 # macro -mmGCVM_INVALIDATE_ENG17_ADDR_RANGE_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LO32 = 0x1667 # macro -mmGCVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_HI32 = 0x1668 # macro -mmGCVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT1_PAGE_TABLE_BASE_ADDR_LO32 = 0x1669 # macro -mmGCVM_CONTEXT1_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT1_PAGE_TABLE_BASE_ADDR_HI32 = 0x166a # macro -mmGCVM_CONTEXT1_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT2_PAGE_TABLE_BASE_ADDR_LO32 = 0x166b # macro -mmGCVM_CONTEXT2_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT2_PAGE_TABLE_BASE_ADDR_HI32 = 0x166c # macro -mmGCVM_CONTEXT2_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT3_PAGE_TABLE_BASE_ADDR_LO32 = 0x166d # macro -mmGCVM_CONTEXT3_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT3_PAGE_TABLE_BASE_ADDR_HI32 = 0x166e # macro -mmGCVM_CONTEXT3_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT4_PAGE_TABLE_BASE_ADDR_LO32 = 0x166f # macro -mmGCVM_CONTEXT4_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT4_PAGE_TABLE_BASE_ADDR_HI32 = 0x1670 # macro -mmGCVM_CONTEXT4_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT5_PAGE_TABLE_BASE_ADDR_LO32 = 0x1671 # macro -mmGCVM_CONTEXT5_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT5_PAGE_TABLE_BASE_ADDR_HI32 = 0x1672 # macro -mmGCVM_CONTEXT5_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT6_PAGE_TABLE_BASE_ADDR_LO32 = 0x1673 # macro -mmGCVM_CONTEXT6_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT6_PAGE_TABLE_BASE_ADDR_HI32 = 0x1674 # macro -mmGCVM_CONTEXT6_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT7_PAGE_TABLE_BASE_ADDR_LO32 = 0x1675 # macro -mmGCVM_CONTEXT7_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT7_PAGE_TABLE_BASE_ADDR_HI32 = 0x1676 # macro -mmGCVM_CONTEXT7_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT8_PAGE_TABLE_BASE_ADDR_LO32 = 0x1677 # macro -mmGCVM_CONTEXT8_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT8_PAGE_TABLE_BASE_ADDR_HI32 = 0x1678 # macro -mmGCVM_CONTEXT8_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT9_PAGE_TABLE_BASE_ADDR_LO32 = 0x1679 # macro -mmGCVM_CONTEXT9_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT9_PAGE_TABLE_BASE_ADDR_HI32 = 0x167a # macro -mmGCVM_CONTEXT9_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT10_PAGE_TABLE_BASE_ADDR_LO32 = 0x167b # macro -mmGCVM_CONTEXT10_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT10_PAGE_TABLE_BASE_ADDR_HI32 = 0x167c # macro -mmGCVM_CONTEXT10_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT11_PAGE_TABLE_BASE_ADDR_LO32 = 0x167d # macro -mmGCVM_CONTEXT11_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT11_PAGE_TABLE_BASE_ADDR_HI32 = 0x167e # macro -mmGCVM_CONTEXT11_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT12_PAGE_TABLE_BASE_ADDR_LO32 = 0x167f # macro -mmGCVM_CONTEXT12_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT12_PAGE_TABLE_BASE_ADDR_HI32 = 0x1680 # macro -mmGCVM_CONTEXT12_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT13_PAGE_TABLE_BASE_ADDR_LO32 = 0x1681 # macro -mmGCVM_CONTEXT13_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT13_PAGE_TABLE_BASE_ADDR_HI32 = 0x1682 # macro -mmGCVM_CONTEXT13_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT14_PAGE_TABLE_BASE_ADDR_LO32 = 0x1683 # macro -mmGCVM_CONTEXT14_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT14_PAGE_TABLE_BASE_ADDR_HI32 = 0x1684 # macro -mmGCVM_CONTEXT14_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT15_PAGE_TABLE_BASE_ADDR_LO32 = 0x1685 # macro -mmGCVM_CONTEXT15_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT15_PAGE_TABLE_BASE_ADDR_HI32 = 0x1686 # macro -mmGCVM_CONTEXT15_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT0_PAGE_TABLE_START_ADDR_LO32 = 0x1687 # macro -mmGCVM_CONTEXT0_PAGE_TABLE_START_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT0_PAGE_TABLE_START_ADDR_HI32 = 0x1688 # macro -mmGCVM_CONTEXT0_PAGE_TABLE_START_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT1_PAGE_TABLE_START_ADDR_LO32 = 0x1689 # macro -mmGCVM_CONTEXT1_PAGE_TABLE_START_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT1_PAGE_TABLE_START_ADDR_HI32 = 0x168a # macro -mmGCVM_CONTEXT1_PAGE_TABLE_START_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT2_PAGE_TABLE_START_ADDR_LO32 = 0x168b # macro -mmGCVM_CONTEXT2_PAGE_TABLE_START_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT2_PAGE_TABLE_START_ADDR_HI32 = 0x168c # macro -mmGCVM_CONTEXT2_PAGE_TABLE_START_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT3_PAGE_TABLE_START_ADDR_LO32 = 0x168d # macro -mmGCVM_CONTEXT3_PAGE_TABLE_START_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT3_PAGE_TABLE_START_ADDR_HI32 = 0x168e # macro -mmGCVM_CONTEXT3_PAGE_TABLE_START_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT4_PAGE_TABLE_START_ADDR_LO32 = 0x168f # macro -mmGCVM_CONTEXT4_PAGE_TABLE_START_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT4_PAGE_TABLE_START_ADDR_HI32 = 0x1690 # macro -mmGCVM_CONTEXT4_PAGE_TABLE_START_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT5_PAGE_TABLE_START_ADDR_LO32 = 0x1691 # macro -mmGCVM_CONTEXT5_PAGE_TABLE_START_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT5_PAGE_TABLE_START_ADDR_HI32 = 0x1692 # macro -mmGCVM_CONTEXT5_PAGE_TABLE_START_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT6_PAGE_TABLE_START_ADDR_LO32 = 0x1693 # macro -mmGCVM_CONTEXT6_PAGE_TABLE_START_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT6_PAGE_TABLE_START_ADDR_HI32 = 0x1694 # macro -mmGCVM_CONTEXT6_PAGE_TABLE_START_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT7_PAGE_TABLE_START_ADDR_LO32 = 0x1695 # macro -mmGCVM_CONTEXT7_PAGE_TABLE_START_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT7_PAGE_TABLE_START_ADDR_HI32 = 0x1696 # macro -mmGCVM_CONTEXT7_PAGE_TABLE_START_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT8_PAGE_TABLE_START_ADDR_LO32 = 0x1697 # macro -mmGCVM_CONTEXT8_PAGE_TABLE_START_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT8_PAGE_TABLE_START_ADDR_HI32 = 0x1698 # macro -mmGCVM_CONTEXT8_PAGE_TABLE_START_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT9_PAGE_TABLE_START_ADDR_LO32 = 0x1699 # macro -mmGCVM_CONTEXT9_PAGE_TABLE_START_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT9_PAGE_TABLE_START_ADDR_HI32 = 0x169a # macro -mmGCVM_CONTEXT9_PAGE_TABLE_START_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT10_PAGE_TABLE_START_ADDR_LO32 = 0x169b # macro -mmGCVM_CONTEXT10_PAGE_TABLE_START_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT10_PAGE_TABLE_START_ADDR_HI32 = 0x169c # macro -mmGCVM_CONTEXT10_PAGE_TABLE_START_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT11_PAGE_TABLE_START_ADDR_LO32 = 0x169d # macro -mmGCVM_CONTEXT11_PAGE_TABLE_START_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT11_PAGE_TABLE_START_ADDR_HI32 = 0x169e # macro -mmGCVM_CONTEXT11_PAGE_TABLE_START_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT12_PAGE_TABLE_START_ADDR_LO32 = 0x169f # macro -mmGCVM_CONTEXT12_PAGE_TABLE_START_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT12_PAGE_TABLE_START_ADDR_HI32 = 0x16a0 # macro -mmGCVM_CONTEXT12_PAGE_TABLE_START_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT13_PAGE_TABLE_START_ADDR_LO32 = 0x16a1 # macro -mmGCVM_CONTEXT13_PAGE_TABLE_START_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT13_PAGE_TABLE_START_ADDR_HI32 = 0x16a2 # macro -mmGCVM_CONTEXT13_PAGE_TABLE_START_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT14_PAGE_TABLE_START_ADDR_LO32 = 0x16a3 # macro -mmGCVM_CONTEXT14_PAGE_TABLE_START_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT14_PAGE_TABLE_START_ADDR_HI32 = 0x16a4 # macro -mmGCVM_CONTEXT14_PAGE_TABLE_START_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT15_PAGE_TABLE_START_ADDR_LO32 = 0x16a5 # macro -mmGCVM_CONTEXT15_PAGE_TABLE_START_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT15_PAGE_TABLE_START_ADDR_HI32 = 0x16a6 # macro -mmGCVM_CONTEXT15_PAGE_TABLE_START_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT0_PAGE_TABLE_END_ADDR_LO32 = 0x16a7 # macro -mmGCVM_CONTEXT0_PAGE_TABLE_END_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT0_PAGE_TABLE_END_ADDR_HI32 = 0x16a8 # macro -mmGCVM_CONTEXT0_PAGE_TABLE_END_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT1_PAGE_TABLE_END_ADDR_LO32 = 0x16a9 # macro -mmGCVM_CONTEXT1_PAGE_TABLE_END_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT1_PAGE_TABLE_END_ADDR_HI32 = 0x16aa # macro -mmGCVM_CONTEXT1_PAGE_TABLE_END_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT2_PAGE_TABLE_END_ADDR_LO32 = 0x16ab # macro -mmGCVM_CONTEXT2_PAGE_TABLE_END_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT2_PAGE_TABLE_END_ADDR_HI32 = 0x16ac # macro -mmGCVM_CONTEXT2_PAGE_TABLE_END_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT3_PAGE_TABLE_END_ADDR_LO32 = 0x16ad # macro -mmGCVM_CONTEXT3_PAGE_TABLE_END_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT3_PAGE_TABLE_END_ADDR_HI32 = 0x16ae # macro -mmGCVM_CONTEXT3_PAGE_TABLE_END_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT4_PAGE_TABLE_END_ADDR_LO32 = 0x16af # macro -mmGCVM_CONTEXT4_PAGE_TABLE_END_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT4_PAGE_TABLE_END_ADDR_HI32 = 0x16b0 # macro -mmGCVM_CONTEXT4_PAGE_TABLE_END_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT5_PAGE_TABLE_END_ADDR_LO32 = 0x16b1 # macro -mmGCVM_CONTEXT5_PAGE_TABLE_END_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT5_PAGE_TABLE_END_ADDR_HI32 = 0x16b2 # macro -mmGCVM_CONTEXT5_PAGE_TABLE_END_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT6_PAGE_TABLE_END_ADDR_LO32 = 0x16b3 # macro -mmGCVM_CONTEXT6_PAGE_TABLE_END_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT6_PAGE_TABLE_END_ADDR_HI32 = 0x16b4 # macro -mmGCVM_CONTEXT6_PAGE_TABLE_END_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT7_PAGE_TABLE_END_ADDR_LO32 = 0x16b5 # macro -mmGCVM_CONTEXT7_PAGE_TABLE_END_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT7_PAGE_TABLE_END_ADDR_HI32 = 0x16b6 # macro -mmGCVM_CONTEXT7_PAGE_TABLE_END_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT8_PAGE_TABLE_END_ADDR_LO32 = 0x16b7 # macro -mmGCVM_CONTEXT8_PAGE_TABLE_END_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT8_PAGE_TABLE_END_ADDR_HI32 = 0x16b8 # macro -mmGCVM_CONTEXT8_PAGE_TABLE_END_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT9_PAGE_TABLE_END_ADDR_LO32 = 0x16b9 # macro -mmGCVM_CONTEXT9_PAGE_TABLE_END_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT9_PAGE_TABLE_END_ADDR_HI32 = 0x16ba # macro -mmGCVM_CONTEXT9_PAGE_TABLE_END_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT10_PAGE_TABLE_END_ADDR_LO32 = 0x16bb # macro -mmGCVM_CONTEXT10_PAGE_TABLE_END_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT10_PAGE_TABLE_END_ADDR_HI32 = 0x16bc # macro -mmGCVM_CONTEXT10_PAGE_TABLE_END_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT11_PAGE_TABLE_END_ADDR_LO32 = 0x16bd # macro -mmGCVM_CONTEXT11_PAGE_TABLE_END_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT11_PAGE_TABLE_END_ADDR_HI32 = 0x16be # macro -mmGCVM_CONTEXT11_PAGE_TABLE_END_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT12_PAGE_TABLE_END_ADDR_LO32 = 0x16bf # macro -mmGCVM_CONTEXT12_PAGE_TABLE_END_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT12_PAGE_TABLE_END_ADDR_HI32 = 0x16c0 # macro -mmGCVM_CONTEXT12_PAGE_TABLE_END_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT13_PAGE_TABLE_END_ADDR_LO32 = 0x16c1 # macro -mmGCVM_CONTEXT13_PAGE_TABLE_END_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT13_PAGE_TABLE_END_ADDR_HI32 = 0x16c2 # macro -mmGCVM_CONTEXT13_PAGE_TABLE_END_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT14_PAGE_TABLE_END_ADDR_LO32 = 0x16c3 # macro -mmGCVM_CONTEXT14_PAGE_TABLE_END_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT14_PAGE_TABLE_END_ADDR_HI32 = 0x16c4 # macro -mmGCVM_CONTEXT14_PAGE_TABLE_END_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT15_PAGE_TABLE_END_ADDR_LO32 = 0x16c5 # macro -mmGCVM_CONTEXT15_PAGE_TABLE_END_ADDR_LO32_BASE_IDX = 0 # macro -mmGCVM_CONTEXT15_PAGE_TABLE_END_ADDR_HI32 = 0x16c6 # macro -mmGCVM_CONTEXT15_PAGE_TABLE_END_ADDR_HI32_BASE_IDX = 0 # macro -mmGCVM_L2_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES = 0x16c7 # macro -mmGCVM_L2_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT0_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES = 0x16c8 # macro -mmGCVM_L2_CONTEXT0_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT1_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES = 0x16c9 # macro -mmGCVM_L2_CONTEXT1_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT2_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES = 0x16ca # macro -mmGCVM_L2_CONTEXT2_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT3_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES = 0x16cb # macro -mmGCVM_L2_CONTEXT3_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT4_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES = 0x16cc # macro -mmGCVM_L2_CONTEXT4_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT5_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES = 0x16cd # macro -mmGCVM_L2_CONTEXT5_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT6_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES = 0x16ce # macro -mmGCVM_L2_CONTEXT6_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT7_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES = 0x16cf # macro -mmGCVM_L2_CONTEXT7_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT8_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES = 0x16d0 # macro -mmGCVM_L2_CONTEXT8_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT9_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES = 0x16d1 # macro -mmGCVM_L2_CONTEXT9_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT10_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES = 0x16d2 # macro -mmGCVM_L2_CONTEXT10_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT11_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES = 0x16d3 # macro -mmGCVM_L2_CONTEXT11_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT12_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES = 0x16d4 # macro -mmGCVM_L2_CONTEXT12_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT13_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES = 0x16d5 # macro -mmGCVM_L2_CONTEXT13_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT14_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES = 0x16d6 # macro -mmGCVM_L2_CONTEXT14_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX = 0 # macro -mmGCVM_L2_CONTEXT15_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES = 0x16d7 # macro -mmGCVM_L2_CONTEXT15_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX = 0 # macro -mmGCMC_VM_NB_MMIOBASE = 0x16e0 # macro -mmGCMC_VM_NB_MMIOBASE_BASE_IDX = 0 # macro -mmGCMC_VM_NB_MMIOLIMIT = 0x16e1 # macro -mmGCMC_VM_NB_MMIOLIMIT_BASE_IDX = 0 # macro -mmGCMC_VM_NB_PCI_CTRL = 0x16e2 # macro -mmGCMC_VM_NB_PCI_CTRL_BASE_IDX = 0 # macro -mmGCMC_VM_NB_PCI_ARB = 0x16e3 # macro -mmGCMC_VM_NB_PCI_ARB_BASE_IDX = 0 # macro -mmGCMC_VM_NB_TOP_OF_DRAM_SLOT1 = 0x16e4 # macro -mmGCMC_VM_NB_TOP_OF_DRAM_SLOT1_BASE_IDX = 0 # macro -mmGCMC_VM_NB_LOWER_TOP_OF_DRAM2 = 0x16e5 # macro -mmGCMC_VM_NB_LOWER_TOP_OF_DRAM2_BASE_IDX = 0 # macro -mmGCMC_VM_NB_UPPER_TOP_OF_DRAM2 = 0x16e6 # macro -mmGCMC_VM_NB_UPPER_TOP_OF_DRAM2_BASE_IDX = 0 # macro -mmGCMC_VM_FB_OFFSET = 0x16e7 # macro -mmGCMC_VM_FB_OFFSET_BASE_IDX = 0 # macro -mmGCMC_VM_SYSTEM_APERTURE_DEFAULT_ADDR_LSB = 0x16e8 # macro -mmGCMC_VM_SYSTEM_APERTURE_DEFAULT_ADDR_LSB_BASE_IDX = 0 # macro -mmGCMC_VM_SYSTEM_APERTURE_DEFAULT_ADDR_MSB = 0x16e9 # macro -mmGCMC_VM_SYSTEM_APERTURE_DEFAULT_ADDR_MSB_BASE_IDX = 0 # macro -mmGCMC_VM_STEERING = 0x16ea # macro -mmGCMC_VM_STEERING_BASE_IDX = 0 # macro -mmGCMC_SHARED_VIRT_RESET_REQ = 0x16eb # macro -mmGCMC_SHARED_VIRT_RESET_REQ_BASE_IDX = 0 # macro -mmGCMC_MEM_POWER_LS = 0x16ec # macro -mmGCMC_MEM_POWER_LS_BASE_IDX = 0 # macro -mmGCMC_VM_CACHEABLE_DRAM_ADDRESS_START = 0x16ed # macro -mmGCMC_VM_CACHEABLE_DRAM_ADDRESS_START_BASE_IDX = 0 # macro -mmGCMC_VM_CACHEABLE_DRAM_ADDRESS_END = 0x16ee # macro -mmGCMC_VM_CACHEABLE_DRAM_ADDRESS_END_BASE_IDX = 0 # macro -mmGCMC_VM_APT_CNTL = 0x16ef # macro -mmGCMC_VM_APT_CNTL_BASE_IDX = 0 # macro -mmGCMC_VM_LOCAL_HBM_ADDRESS_LOCK_CNTL = 0x16f0 # macro -mmGCMC_VM_LOCAL_HBM_ADDRESS_LOCK_CNTL_BASE_IDX = 0 # macro -mmGCMC_VM_LOCAL_HBM_ADDRESS_START = 0x16f1 # macro -mmGCMC_VM_LOCAL_HBM_ADDRESS_START_BASE_IDX = 0 # macro -mmGCMC_VM_LOCAL_HBM_ADDRESS_END = 0x16f2 # macro -mmGCMC_VM_LOCAL_HBM_ADDRESS_END_BASE_IDX = 0 # macro -mmGCMC_SHARED_ACTIVE_FCN_ID = 0x16f4 # macro -mmGCMC_SHARED_ACTIVE_FCN_ID_BASE_IDX = 0 # macro -mmGCMC_SHARED_VIRT_RESET_REQ2 = 0x16f5 # macro -mmGCMC_SHARED_VIRT_RESET_REQ2_BASE_IDX = 0 # macro -mmGCMC_VM_XGMI_LFB_CNTL = 0x16f7 # macro -mmGCMC_VM_XGMI_LFB_CNTL_BASE_IDX = 0 # macro -mmGCMC_VM_XGMI_LFB_SIZE = 0x16f8 # macro -mmGCMC_VM_XGMI_LFB_SIZE_BASE_IDX = 0 # macro -mmGCMC_VM_FB_NOALLOC_CNTL = 0x16f9 # macro -mmGCMC_VM_FB_NOALLOC_CNTL_BASE_IDX = 0 # macro -mmGCUTCL2_HARVEST_BYPASS_GROUPS = 0x16fa # macro -mmGCUTCL2_HARVEST_BYPASS_GROUPS_BASE_IDX = 0 # macro -mmGCMC_VM_FB_LOCATION_BASE = 0x16fc # macro -mmGCMC_VM_FB_LOCATION_BASE_BASE_IDX = 0 # macro -mmGCMC_VM_FB_LOCATION_TOP = 0x16fd # macro -mmGCMC_VM_FB_LOCATION_TOP_BASE_IDX = 0 # macro -mmGCMC_VM_AGP_TOP = 0x16fe # macro -mmGCMC_VM_AGP_TOP_BASE_IDX = 0 # macro -mmGCMC_VM_AGP_BOT = 0x16ff # macro -mmGCMC_VM_AGP_BOT_BASE_IDX = 0 # macro -mmGCMC_VM_AGP_BASE = 0x1700 # macro -mmGCMC_VM_AGP_BASE_BASE_IDX = 0 # macro -mmGCMC_VM_SYSTEM_APERTURE_LOW_ADDR = 0x1701 # macro -mmGCMC_VM_SYSTEM_APERTURE_LOW_ADDR_BASE_IDX = 0 # macro -mmGCMC_VM_SYSTEM_APERTURE_HIGH_ADDR = 0x1702 # macro -mmGCMC_VM_SYSTEM_APERTURE_HIGH_ADDR_BASE_IDX = 0 # macro -mmGCMC_VM_MX_L1_TLB_CNTL = 0x1703 # macro -mmGCMC_VM_MX_L1_TLB_CNTL_BASE_IDX = 0 # macro -mmGCEA_DRAM_RD_CLI2GRP_MAP0 = 0x17a0 # macro -mmGCEA_DRAM_RD_CLI2GRP_MAP0_BASE_IDX = 0 # macro -mmGCEA_DRAM_RD_CLI2GRP_MAP1 = 0x17a1 # macro -mmGCEA_DRAM_RD_CLI2GRP_MAP1_BASE_IDX = 0 # macro -mmGCEA_DRAM_WR_CLI2GRP_MAP0 = 0x17a2 # macro -mmGCEA_DRAM_WR_CLI2GRP_MAP0_BASE_IDX = 0 # macro -mmGCEA_DRAM_WR_CLI2GRP_MAP1 = 0x17a3 # macro -mmGCEA_DRAM_WR_CLI2GRP_MAP1_BASE_IDX = 0 # macro -mmGCEA_DRAM_RD_GRP2VC_MAP = 0x17a4 # macro -mmGCEA_DRAM_RD_GRP2VC_MAP_BASE_IDX = 0 # macro -mmGCEA_DRAM_WR_GRP2VC_MAP = 0x17a5 # macro -mmGCEA_DRAM_WR_GRP2VC_MAP_BASE_IDX = 0 # macro -mmGCEA_DRAM_RD_LAZY = 0x17a6 # macro -mmGCEA_DRAM_RD_LAZY_BASE_IDX = 0 # macro -mmGCEA_DRAM_WR_LAZY = 0x17a7 # macro -mmGCEA_DRAM_WR_LAZY_BASE_IDX = 0 # macro -mmGCEA_DRAM_RD_CAM_CNTL = 0x17a8 # macro -mmGCEA_DRAM_RD_CAM_CNTL_BASE_IDX = 0 # macro -mmGCEA_DRAM_WR_CAM_CNTL = 0x17a9 # macro -mmGCEA_DRAM_WR_CAM_CNTL_BASE_IDX = 0 # macro -mmGCEA_DRAM_PAGE_BURST = 0x17aa # macro -mmGCEA_DRAM_PAGE_BURST_BASE_IDX = 0 # macro -mmGCEA_DRAM_RD_PRI_AGE = 0x17ab # macro -mmGCEA_DRAM_RD_PRI_AGE_BASE_IDX = 0 # macro -mmGCEA_DRAM_WR_PRI_AGE = 0x17ac # macro -mmGCEA_DRAM_WR_PRI_AGE_BASE_IDX = 0 # macro -mmGCEA_DRAM_RD_PRI_QUEUING = 0x17ad # macro -mmGCEA_DRAM_RD_PRI_QUEUING_BASE_IDX = 0 # macro -mmGCEA_DRAM_WR_PRI_QUEUING = 0x17ae # macro -mmGCEA_DRAM_WR_PRI_QUEUING_BASE_IDX = 0 # macro -mmGCEA_DRAM_RD_PRI_FIXED = 0x17af # macro -mmGCEA_DRAM_RD_PRI_FIXED_BASE_IDX = 0 # macro -mmGCEA_DRAM_WR_PRI_FIXED = 0x17b0 # macro -mmGCEA_DRAM_WR_PRI_FIXED_BASE_IDX = 0 # macro -mmGCEA_DRAM_RD_PRI_URGENCY = 0x17b1 # macro -mmGCEA_DRAM_RD_PRI_URGENCY_BASE_IDX = 0 # macro -mmGCEA_DRAM_WR_PRI_URGENCY = 0x17b2 # macro -mmGCEA_DRAM_WR_PRI_URGENCY_BASE_IDX = 0 # macro -mmGCEA_DRAM_RD_PRI_QUANT_PRI1 = 0x17b3 # macro -mmGCEA_DRAM_RD_PRI_QUANT_PRI1_BASE_IDX = 0 # macro -mmGCEA_DRAM_RD_PRI_QUANT_PRI2 = 0x17b4 # macro -mmGCEA_DRAM_RD_PRI_QUANT_PRI2_BASE_IDX = 0 # macro -mmGCEA_DRAM_RD_PRI_QUANT_PRI3 = 0x17b5 # macro -mmGCEA_DRAM_RD_PRI_QUANT_PRI3_BASE_IDX = 0 # macro -mmGCEA_DRAM_WR_PRI_QUANT_PRI1 = 0x17b6 # macro -mmGCEA_DRAM_WR_PRI_QUANT_PRI1_BASE_IDX = 0 # macro -mmGCEA_DRAM_WR_PRI_QUANT_PRI2 = 0x17b7 # macro -mmGCEA_DRAM_WR_PRI_QUANT_PRI2_BASE_IDX = 0 # macro -mmGCEA_DRAM_WR_PRI_QUANT_PRI3 = 0x17b8 # macro -mmGCEA_DRAM_WR_PRI_QUANT_PRI3_BASE_IDX = 0 # macro -mmGCEA_IO_RD_CLI2GRP_MAP0 = 0x187d # macro -mmGCEA_IO_RD_CLI2GRP_MAP0_BASE_IDX = 0 # macro -mmGCEA_IO_RD_CLI2GRP_MAP1 = 0x187e # macro -mmGCEA_IO_RD_CLI2GRP_MAP1_BASE_IDX = 0 # macro -mmGCEA_IO_WR_CLI2GRP_MAP0 = 0x187f # macro -mmGCEA_IO_WR_CLI2GRP_MAP0_BASE_IDX = 0 # macro -mmGCEA_IO_WR_CLI2GRP_MAP1 = 0x1880 # macro -mmGCEA_IO_WR_CLI2GRP_MAP1_BASE_IDX = 0 # macro -mmGCEA_IO_RD_COMBINE_FLUSH = 0x1881 # macro -mmGCEA_IO_RD_COMBINE_FLUSH_BASE_IDX = 0 # macro -mmGCEA_IO_WR_COMBINE_FLUSH = 0x1882 # macro -mmGCEA_IO_WR_COMBINE_FLUSH_BASE_IDX = 0 # macro -mmGCEA_IO_GROUP_BURST = 0x1883 # macro -mmGCEA_IO_GROUP_BURST_BASE_IDX = 0 # macro -mmGCEA_IO_RD_PRI_AGE = 0x1884 # macro -mmGCEA_IO_RD_PRI_AGE_BASE_IDX = 0 # macro -mmGCEA_IO_WR_PRI_AGE = 0x1885 # macro -mmGCEA_IO_WR_PRI_AGE_BASE_IDX = 0 # macro -mmGCEA_IO_RD_PRI_QUEUING = 0x1886 # macro -mmGCEA_IO_RD_PRI_QUEUING_BASE_IDX = 0 # macro -mmGCEA_IO_WR_PRI_QUEUING = 0x1887 # macro -mmGCEA_IO_WR_PRI_QUEUING_BASE_IDX = 0 # macro -mmGCEA_IO_RD_PRI_FIXED = 0x1888 # macro -mmGCEA_IO_RD_PRI_FIXED_BASE_IDX = 0 # macro -mmGCEA_IO_WR_PRI_FIXED = 0x1889 # macro -mmGCEA_IO_WR_PRI_FIXED_BASE_IDX = 0 # macro -mmGCEA_IO_RD_PRI_URGENCY = 0x188a # macro -mmGCEA_IO_RD_PRI_URGENCY_BASE_IDX = 0 # macro -mmGCEA_IO_WR_PRI_URGENCY = 0x188b # macro -mmGCEA_IO_WR_PRI_URGENCY_BASE_IDX = 0 # macro -mmGCEA_IO_RD_PRI_URGENCY_MASKING = 0x188c # macro -mmGCEA_IO_RD_PRI_URGENCY_MASKING_BASE_IDX = 0 # macro -mmGCEA_IO_WR_PRI_URGENCY_MASKING = 0x188d # macro -mmGCEA_IO_WR_PRI_URGENCY_MASKING_BASE_IDX = 0 # macro -mmGCEA_IO_RD_PRI_QUANT_PRI1 = 0x188e # macro -mmGCEA_IO_RD_PRI_QUANT_PRI1_BASE_IDX = 0 # macro -mmGCEA_IO_RD_PRI_QUANT_PRI2 = 0x188f # macro -mmGCEA_IO_RD_PRI_QUANT_PRI2_BASE_IDX = 0 # macro -mmGCEA_IO_RD_PRI_QUANT_PRI3 = 0x1890 # macro -mmGCEA_IO_RD_PRI_QUANT_PRI3_BASE_IDX = 0 # macro -mmGCEA_IO_WR_PRI_QUANT_PRI1 = 0x1891 # macro -mmGCEA_IO_WR_PRI_QUANT_PRI1_BASE_IDX = 0 # macro -mmGCEA_IO_WR_PRI_QUANT_PRI2 = 0x1892 # macro -mmGCEA_IO_WR_PRI_QUANT_PRI2_BASE_IDX = 0 # macro -mmGCEA_IO_WR_PRI_QUANT_PRI3 = 0x1893 # macro -mmGCEA_IO_WR_PRI_QUANT_PRI3_BASE_IDX = 0 # macro -mmTCP_INVALIDATE = 0x18a0 # macro -mmTCP_INVALIDATE_BASE_IDX = 0 # macro -mmTCP_STATUS = 0x18a1 # macro -mmTCP_STATUS_BASE_IDX = 0 # macro -mmTCP_EDC_CNT = 0x18b7 # macro -mmTCP_EDC_CNT_BASE_IDX = 0 # macro -mmTCI_STATUS = 0x1901 # macro -mmTCI_STATUS_BASE_IDX = 0 # macro -mmTCI_CNTL_1 = 0x1902 # macro -mmTCI_CNTL_1_BASE_IDX = 0 # macro -mmTCI_CNTL_2 = 0x1903 # macro -mmTCI_CNTL_2_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_RSRC4_PS = 0x19a1 # macro -mmSPI_SHADER_PGM_RSRC4_PS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_CHKSUM_PS = 0x19a6 # macro -mmSPI_SHADER_PGM_CHKSUM_PS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_RSRC3_PS = 0x19a7 # macro -mmSPI_SHADER_PGM_RSRC3_PS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_LO_PS = 0x19a8 # macro -mmSPI_SHADER_PGM_LO_PS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_HI_PS = 0x19a9 # macro -mmSPI_SHADER_PGM_HI_PS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_RSRC1_PS = 0x19aa # macro -mmSPI_SHADER_PGM_RSRC1_PS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_RSRC2_PS = 0x19ab # macro -mmSPI_SHADER_PGM_RSRC2_PS_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_0 = 0x19ac # macro -mmSPI_SHADER_USER_DATA_PS_0_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_1 = 0x19ad # macro -mmSPI_SHADER_USER_DATA_PS_1_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_2 = 0x19ae # macro -mmSPI_SHADER_USER_DATA_PS_2_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_3 = 0x19af # macro -mmSPI_SHADER_USER_DATA_PS_3_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_4 = 0x19b0 # macro -mmSPI_SHADER_USER_DATA_PS_4_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_5 = 0x19b1 # macro -mmSPI_SHADER_USER_DATA_PS_5_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_6 = 0x19b2 # macro -mmSPI_SHADER_USER_DATA_PS_6_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_7 = 0x19b3 # macro -mmSPI_SHADER_USER_DATA_PS_7_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_8 = 0x19b4 # macro -mmSPI_SHADER_USER_DATA_PS_8_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_9 = 0x19b5 # macro -mmSPI_SHADER_USER_DATA_PS_9_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_10 = 0x19b6 # macro -mmSPI_SHADER_USER_DATA_PS_10_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_11 = 0x19b7 # macro -mmSPI_SHADER_USER_DATA_PS_11_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_12 = 0x19b8 # macro -mmSPI_SHADER_USER_DATA_PS_12_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_13 = 0x19b9 # macro -mmSPI_SHADER_USER_DATA_PS_13_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_14 = 0x19ba # macro -mmSPI_SHADER_USER_DATA_PS_14_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_15 = 0x19bb # macro -mmSPI_SHADER_USER_DATA_PS_15_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_16 = 0x19bc # macro -mmSPI_SHADER_USER_DATA_PS_16_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_17 = 0x19bd # macro -mmSPI_SHADER_USER_DATA_PS_17_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_18 = 0x19be # macro -mmSPI_SHADER_USER_DATA_PS_18_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_19 = 0x19bf # macro -mmSPI_SHADER_USER_DATA_PS_19_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_20 = 0x19c0 # macro -mmSPI_SHADER_USER_DATA_PS_20_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_21 = 0x19c1 # macro -mmSPI_SHADER_USER_DATA_PS_21_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_22 = 0x19c2 # macro -mmSPI_SHADER_USER_DATA_PS_22_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_23 = 0x19c3 # macro -mmSPI_SHADER_USER_DATA_PS_23_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_24 = 0x19c4 # macro -mmSPI_SHADER_USER_DATA_PS_24_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_25 = 0x19c5 # macro -mmSPI_SHADER_USER_DATA_PS_25_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_26 = 0x19c6 # macro -mmSPI_SHADER_USER_DATA_PS_26_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_27 = 0x19c7 # macro -mmSPI_SHADER_USER_DATA_PS_27_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_28 = 0x19c8 # macro -mmSPI_SHADER_USER_DATA_PS_28_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_29 = 0x19c9 # macro -mmSPI_SHADER_USER_DATA_PS_29_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_30 = 0x19ca # macro -mmSPI_SHADER_USER_DATA_PS_30_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_PS_31 = 0x19cb # macro -mmSPI_SHADER_USER_DATA_PS_31_BASE_IDX = 0 # macro -mmSPI_SHADER_REQ_CTRL_PS = 0x19d0 # macro -mmSPI_SHADER_REQ_CTRL_PS_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_ACCUM_PS_0 = 0x19d2 # macro -mmSPI_SHADER_USER_ACCUM_PS_0_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_ACCUM_PS_1 = 0x19d3 # macro -mmSPI_SHADER_USER_ACCUM_PS_1_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_ACCUM_PS_2 = 0x19d4 # macro -mmSPI_SHADER_USER_ACCUM_PS_2_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_ACCUM_PS_3 = 0x19d5 # macro -mmSPI_SHADER_USER_ACCUM_PS_3_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_RSRC4_VS = 0x19e1 # macro -mmSPI_SHADER_PGM_RSRC4_VS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_CHKSUM_VS = 0x19e5 # macro -mmSPI_SHADER_PGM_CHKSUM_VS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_RSRC3_VS = 0x19e6 # macro -mmSPI_SHADER_PGM_RSRC3_VS_BASE_IDX = 0 # macro -mmSPI_SHADER_LATE_ALLOC_VS = 0x19e7 # macro -mmSPI_SHADER_LATE_ALLOC_VS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_LO_VS = 0x19e8 # macro -mmSPI_SHADER_PGM_LO_VS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_HI_VS = 0x19e9 # macro -mmSPI_SHADER_PGM_HI_VS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_RSRC1_VS = 0x19ea # macro -mmSPI_SHADER_PGM_RSRC1_VS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_RSRC2_VS = 0x19eb # macro -mmSPI_SHADER_PGM_RSRC2_VS_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_0 = 0x19ec # macro -mmSPI_SHADER_USER_DATA_VS_0_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_1 = 0x19ed # macro -mmSPI_SHADER_USER_DATA_VS_1_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_2 = 0x19ee # macro -mmSPI_SHADER_USER_DATA_VS_2_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_3 = 0x19ef # macro -mmSPI_SHADER_USER_DATA_VS_3_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_4 = 0x19f0 # macro -mmSPI_SHADER_USER_DATA_VS_4_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_5 = 0x19f1 # macro -mmSPI_SHADER_USER_DATA_VS_5_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_6 = 0x19f2 # macro -mmSPI_SHADER_USER_DATA_VS_6_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_7 = 0x19f3 # macro -mmSPI_SHADER_USER_DATA_VS_7_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_8 = 0x19f4 # macro -mmSPI_SHADER_USER_DATA_VS_8_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_9 = 0x19f5 # macro -mmSPI_SHADER_USER_DATA_VS_9_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_10 = 0x19f6 # macro -mmSPI_SHADER_USER_DATA_VS_10_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_11 = 0x19f7 # macro -mmSPI_SHADER_USER_DATA_VS_11_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_12 = 0x19f8 # macro -mmSPI_SHADER_USER_DATA_VS_12_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_13 = 0x19f9 # macro -mmSPI_SHADER_USER_DATA_VS_13_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_14 = 0x19fa # macro -mmSPI_SHADER_USER_DATA_VS_14_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_15 = 0x19fb # macro -mmSPI_SHADER_USER_DATA_VS_15_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_16 = 0x19fc # macro -mmSPI_SHADER_USER_DATA_VS_16_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_17 = 0x19fd # macro -mmSPI_SHADER_USER_DATA_VS_17_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_18 = 0x19fe # macro -mmSPI_SHADER_USER_DATA_VS_18_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_19 = 0x19ff # macro -mmSPI_SHADER_USER_DATA_VS_19_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_20 = 0x1a00 # macro -mmSPI_SHADER_USER_DATA_VS_20_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_21 = 0x1a01 # macro -mmSPI_SHADER_USER_DATA_VS_21_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_22 = 0x1a02 # macro -mmSPI_SHADER_USER_DATA_VS_22_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_23 = 0x1a03 # macro -mmSPI_SHADER_USER_DATA_VS_23_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_24 = 0x1a04 # macro -mmSPI_SHADER_USER_DATA_VS_24_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_25 = 0x1a05 # macro -mmSPI_SHADER_USER_DATA_VS_25_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_26 = 0x1a06 # macro -mmSPI_SHADER_USER_DATA_VS_26_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_27 = 0x1a07 # macro -mmSPI_SHADER_USER_DATA_VS_27_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_28 = 0x1a08 # macro -mmSPI_SHADER_USER_DATA_VS_28_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_29 = 0x1a09 # macro -mmSPI_SHADER_USER_DATA_VS_29_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_30 = 0x1a0a # macro -mmSPI_SHADER_USER_DATA_VS_30_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_VS_31 = 0x1a0b # macro -mmSPI_SHADER_USER_DATA_VS_31_BASE_IDX = 0 # macro -mmSPI_SHADER_REQ_CTRL_VS = 0x1a10 # macro -mmSPI_SHADER_REQ_CTRL_VS_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_ACCUM_VS_0 = 0x1a12 # macro -mmSPI_SHADER_USER_ACCUM_VS_0_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_ACCUM_VS_1 = 0x1a13 # macro -mmSPI_SHADER_USER_ACCUM_VS_1_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_ACCUM_VS_2 = 0x1a14 # macro -mmSPI_SHADER_USER_ACCUM_VS_2_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_ACCUM_VS_3 = 0x1a15 # macro -mmSPI_SHADER_USER_ACCUM_VS_3_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_RSRC2_GS_VS = 0x1a1b # macro -mmSPI_SHADER_PGM_RSRC2_GS_VS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_CHKSUM_GS = 0x1a20 # macro -mmSPI_SHADER_PGM_CHKSUM_GS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_RSRC4_GS = 0x1a21 # macro -mmSPI_SHADER_PGM_RSRC4_GS_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_ADDR_LO_GS = 0x1a22 # macro -mmSPI_SHADER_USER_DATA_ADDR_LO_GS_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_ADDR_HI_GS = 0x1a23 # macro -mmSPI_SHADER_USER_DATA_ADDR_HI_GS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_LO_ES_GS = 0x1a24 # macro -mmSPI_SHADER_PGM_LO_ES_GS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_HI_ES_GS = 0x1a25 # macro -mmSPI_SHADER_PGM_HI_ES_GS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_RSRC3_GS = 0x1a27 # macro -mmSPI_SHADER_PGM_RSRC3_GS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_LO_GS = 0x1a28 # macro -mmSPI_SHADER_PGM_LO_GS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_HI_GS = 0x1a29 # macro -mmSPI_SHADER_PGM_HI_GS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_RSRC1_GS = 0x1a2a # macro -mmSPI_SHADER_PGM_RSRC1_GS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_RSRC2_GS = 0x1a2b # macro -mmSPI_SHADER_PGM_RSRC2_GS_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_0 = 0x1a2c # macro -mmSPI_SHADER_USER_DATA_GS_0_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_1 = 0x1a2d # macro -mmSPI_SHADER_USER_DATA_GS_1_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_2 = 0x1a2e # macro -mmSPI_SHADER_USER_DATA_GS_2_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_3 = 0x1a2f # macro -mmSPI_SHADER_USER_DATA_GS_3_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_4 = 0x1a30 # macro -mmSPI_SHADER_USER_DATA_GS_4_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_5 = 0x1a31 # macro -mmSPI_SHADER_USER_DATA_GS_5_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_6 = 0x1a32 # macro -mmSPI_SHADER_USER_DATA_GS_6_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_7 = 0x1a33 # macro -mmSPI_SHADER_USER_DATA_GS_7_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_8 = 0x1a34 # macro -mmSPI_SHADER_USER_DATA_GS_8_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_9 = 0x1a35 # macro -mmSPI_SHADER_USER_DATA_GS_9_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_10 = 0x1a36 # macro -mmSPI_SHADER_USER_DATA_GS_10_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_11 = 0x1a37 # macro -mmSPI_SHADER_USER_DATA_GS_11_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_12 = 0x1a38 # macro -mmSPI_SHADER_USER_DATA_GS_12_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_13 = 0x1a39 # macro -mmSPI_SHADER_USER_DATA_GS_13_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_14 = 0x1a3a # macro -mmSPI_SHADER_USER_DATA_GS_14_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_15 = 0x1a3b # macro -mmSPI_SHADER_USER_DATA_GS_15_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_16 = 0x1a3c # macro -mmSPI_SHADER_USER_DATA_GS_16_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_17 = 0x1a3d # macro -mmSPI_SHADER_USER_DATA_GS_17_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_18 = 0x1a3e # macro -mmSPI_SHADER_USER_DATA_GS_18_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_19 = 0x1a3f # macro -mmSPI_SHADER_USER_DATA_GS_19_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_20 = 0x1a40 # macro -mmSPI_SHADER_USER_DATA_GS_20_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_21 = 0x1a41 # macro -mmSPI_SHADER_USER_DATA_GS_21_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_22 = 0x1a42 # macro -mmSPI_SHADER_USER_DATA_GS_22_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_23 = 0x1a43 # macro -mmSPI_SHADER_USER_DATA_GS_23_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_24 = 0x1a44 # macro -mmSPI_SHADER_USER_DATA_GS_24_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_25 = 0x1a45 # macro -mmSPI_SHADER_USER_DATA_GS_25_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_26 = 0x1a46 # macro -mmSPI_SHADER_USER_DATA_GS_26_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_27 = 0x1a47 # macro -mmSPI_SHADER_USER_DATA_GS_27_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_28 = 0x1a48 # macro -mmSPI_SHADER_USER_DATA_GS_28_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_29 = 0x1a49 # macro -mmSPI_SHADER_USER_DATA_GS_29_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_30 = 0x1a4a # macro -mmSPI_SHADER_USER_DATA_GS_30_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_GS_31 = 0x1a4b # macro -mmSPI_SHADER_USER_DATA_GS_31_BASE_IDX = 0 # macro -mmSPI_SHADER_REQ_CTRL_ESGS = 0x1a50 # macro -mmSPI_SHADER_REQ_CTRL_ESGS_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_ACCUM_ESGS_0 = 0x1a52 # macro -mmSPI_SHADER_USER_ACCUM_ESGS_0_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_ACCUM_ESGS_1 = 0x1a53 # macro -mmSPI_SHADER_USER_ACCUM_ESGS_1_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_ACCUM_ESGS_2 = 0x1a54 # macro -mmSPI_SHADER_USER_ACCUM_ESGS_2_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_ACCUM_ESGS_3 = 0x1a55 # macro -mmSPI_SHADER_USER_ACCUM_ESGS_3_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_LO_ES = 0x1a68 # macro -mmSPI_SHADER_PGM_LO_ES_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_HI_ES = 0x1a69 # macro -mmSPI_SHADER_PGM_HI_ES_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_CHKSUM_HS = 0x1aa0 # macro -mmSPI_SHADER_PGM_CHKSUM_HS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_RSRC4_HS = 0x1aa1 # macro -mmSPI_SHADER_PGM_RSRC4_HS_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_ADDR_LO_HS = 0x1aa2 # macro -mmSPI_SHADER_USER_DATA_ADDR_LO_HS_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_ADDR_HI_HS = 0x1aa3 # macro -mmSPI_SHADER_USER_DATA_ADDR_HI_HS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_LO_LS_HS = 0x1aa4 # macro -mmSPI_SHADER_PGM_LO_LS_HS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_HI_LS_HS = 0x1aa5 # macro -mmSPI_SHADER_PGM_HI_LS_HS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_RSRC3_HS = 0x1aa7 # macro -mmSPI_SHADER_PGM_RSRC3_HS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_LO_HS = 0x1aa8 # macro -mmSPI_SHADER_PGM_LO_HS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_HI_HS = 0x1aa9 # macro -mmSPI_SHADER_PGM_HI_HS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_RSRC1_HS = 0x1aaa # macro -mmSPI_SHADER_PGM_RSRC1_HS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_RSRC2_HS = 0x1aab # macro -mmSPI_SHADER_PGM_RSRC2_HS_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_0 = 0x1aac # macro -mmSPI_SHADER_USER_DATA_HS_0_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_1 = 0x1aad # macro -mmSPI_SHADER_USER_DATA_HS_1_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_2 = 0x1aae # macro -mmSPI_SHADER_USER_DATA_HS_2_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_3 = 0x1aaf # macro -mmSPI_SHADER_USER_DATA_HS_3_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_4 = 0x1ab0 # macro -mmSPI_SHADER_USER_DATA_HS_4_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_5 = 0x1ab1 # macro -mmSPI_SHADER_USER_DATA_HS_5_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_6 = 0x1ab2 # macro -mmSPI_SHADER_USER_DATA_HS_6_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_7 = 0x1ab3 # macro -mmSPI_SHADER_USER_DATA_HS_7_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_8 = 0x1ab4 # macro -mmSPI_SHADER_USER_DATA_HS_8_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_9 = 0x1ab5 # macro -mmSPI_SHADER_USER_DATA_HS_9_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_10 = 0x1ab6 # macro -mmSPI_SHADER_USER_DATA_HS_10_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_11 = 0x1ab7 # macro -mmSPI_SHADER_USER_DATA_HS_11_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_12 = 0x1ab8 # macro -mmSPI_SHADER_USER_DATA_HS_12_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_13 = 0x1ab9 # macro -mmSPI_SHADER_USER_DATA_HS_13_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_14 = 0x1aba # macro -mmSPI_SHADER_USER_DATA_HS_14_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_15 = 0x1abb # macro -mmSPI_SHADER_USER_DATA_HS_15_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_16 = 0x1abc # macro -mmSPI_SHADER_USER_DATA_HS_16_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_17 = 0x1abd # macro -mmSPI_SHADER_USER_DATA_HS_17_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_18 = 0x1abe # macro -mmSPI_SHADER_USER_DATA_HS_18_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_19 = 0x1abf # macro -mmSPI_SHADER_USER_DATA_HS_19_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_20 = 0x1ac0 # macro -mmSPI_SHADER_USER_DATA_HS_20_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_21 = 0x1ac1 # macro -mmSPI_SHADER_USER_DATA_HS_21_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_22 = 0x1ac2 # macro -mmSPI_SHADER_USER_DATA_HS_22_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_23 = 0x1ac3 # macro -mmSPI_SHADER_USER_DATA_HS_23_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_24 = 0x1ac4 # macro -mmSPI_SHADER_USER_DATA_HS_24_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_25 = 0x1ac5 # macro -mmSPI_SHADER_USER_DATA_HS_25_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_26 = 0x1ac6 # macro -mmSPI_SHADER_USER_DATA_HS_26_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_27 = 0x1ac7 # macro -mmSPI_SHADER_USER_DATA_HS_27_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_28 = 0x1ac8 # macro -mmSPI_SHADER_USER_DATA_HS_28_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_29 = 0x1ac9 # macro -mmSPI_SHADER_USER_DATA_HS_29_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_30 = 0x1aca # macro -mmSPI_SHADER_USER_DATA_HS_30_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_DATA_HS_31 = 0x1acb # macro -mmSPI_SHADER_USER_DATA_HS_31_BASE_IDX = 0 # macro -mmSPI_SHADER_REQ_CTRL_LSHS = 0x1ad0 # macro -mmSPI_SHADER_REQ_CTRL_LSHS_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_ACCUM_LSHS_0 = 0x1ad2 # macro -mmSPI_SHADER_USER_ACCUM_LSHS_0_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_ACCUM_LSHS_1 = 0x1ad3 # macro -mmSPI_SHADER_USER_ACCUM_LSHS_1_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_ACCUM_LSHS_2 = 0x1ad4 # macro -mmSPI_SHADER_USER_ACCUM_LSHS_2_BASE_IDX = 0 # macro -mmSPI_SHADER_USER_ACCUM_LSHS_3 = 0x1ad5 # macro -mmSPI_SHADER_USER_ACCUM_LSHS_3_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_LO_LS = 0x1ae8 # macro -mmSPI_SHADER_PGM_LO_LS_BASE_IDX = 0 # macro -mmSPI_SHADER_PGM_HI_LS = 0x1ae9 # macro -mmSPI_SHADER_PGM_HI_LS_BASE_IDX = 0 # macro -mmCOMPUTE_DISPATCH_INITIATOR = 0x1ba0 # macro -mmCOMPUTE_DISPATCH_INITIATOR_BASE_IDX = 0 # macro -mmCOMPUTE_DIM_X = 0x1ba1 # macro -mmCOMPUTE_DIM_X_BASE_IDX = 0 # macro -mmCOMPUTE_DIM_Y = 0x1ba2 # macro -mmCOMPUTE_DIM_Y_BASE_IDX = 0 # macro -mmCOMPUTE_DIM_Z = 0x1ba3 # macro -mmCOMPUTE_DIM_Z_BASE_IDX = 0 # macro -mmCOMPUTE_START_X = 0x1ba4 # macro -mmCOMPUTE_START_X_BASE_IDX = 0 # macro -mmCOMPUTE_START_Y = 0x1ba5 # macro -mmCOMPUTE_START_Y_BASE_IDX = 0 # macro -mmCOMPUTE_START_Z = 0x1ba6 # macro -mmCOMPUTE_START_Z_BASE_IDX = 0 # macro -mmCOMPUTE_NUM_THREAD_X = 0x1ba7 # macro -mmCOMPUTE_NUM_THREAD_X_BASE_IDX = 0 # macro -mmCOMPUTE_NUM_THREAD_Y = 0x1ba8 # macro -mmCOMPUTE_NUM_THREAD_Y_BASE_IDX = 0 # macro -mmCOMPUTE_NUM_THREAD_Z = 0x1ba9 # macro -mmCOMPUTE_NUM_THREAD_Z_BASE_IDX = 0 # macro -mmCOMPUTE_PIPELINESTAT_ENABLE = 0x1baa # macro -mmCOMPUTE_PIPELINESTAT_ENABLE_BASE_IDX = 0 # macro -mmCOMPUTE_PERFCOUNT_ENABLE = 0x1bab # macro -mmCOMPUTE_PERFCOUNT_ENABLE_BASE_IDX = 0 # macro -mmCOMPUTE_PGM_LO = 0x1bac # macro -mmCOMPUTE_PGM_LO_BASE_IDX = 0 # macro -mmCOMPUTE_PGM_HI = 0x1bad # macro -mmCOMPUTE_PGM_HI_BASE_IDX = 0 # macro -mmCOMPUTE_DISPATCH_PKT_ADDR_LO = 0x1bae # macro -mmCOMPUTE_DISPATCH_PKT_ADDR_LO_BASE_IDX = 0 # macro -mmCOMPUTE_DISPATCH_PKT_ADDR_HI = 0x1baf # macro -mmCOMPUTE_DISPATCH_PKT_ADDR_HI_BASE_IDX = 0 # macro -mmCOMPUTE_DISPATCH_SCRATCH_BASE_LO = 0x1bb0 # macro -mmCOMPUTE_DISPATCH_SCRATCH_BASE_LO_BASE_IDX = 0 # macro -mmCOMPUTE_DISPATCH_SCRATCH_BASE_HI = 0x1bb1 # macro -mmCOMPUTE_DISPATCH_SCRATCH_BASE_HI_BASE_IDX = 0 # macro -mmCOMPUTE_PGM_RSRC1 = 0x1bb2 # macro -mmCOMPUTE_PGM_RSRC1_BASE_IDX = 0 # macro -mmCOMPUTE_PGM_RSRC2 = 0x1bb3 # macro -mmCOMPUTE_PGM_RSRC2_BASE_IDX = 0 # macro -mmCOMPUTE_VMID = 0x1bb4 # macro -mmCOMPUTE_VMID_BASE_IDX = 0 # macro -mmCOMPUTE_RESOURCE_LIMITS = 0x1bb5 # macro -mmCOMPUTE_RESOURCE_LIMITS_BASE_IDX = 0 # macro -mmCOMPUTE_DESTINATION_EN_SE0 = 0x1bb6 # macro -mmCOMPUTE_DESTINATION_EN_SE0_BASE_IDX = 0 # macro -mmCOMPUTE_STATIC_THREAD_MGMT_SE0 = 0x1bb6 # macro -mmCOMPUTE_STATIC_THREAD_MGMT_SE0_BASE_IDX = 0 # macro -mmCOMPUTE_DESTINATION_EN_SE1 = 0x1bb7 # macro -mmCOMPUTE_DESTINATION_EN_SE1_BASE_IDX = 0 # macro -mmCOMPUTE_STATIC_THREAD_MGMT_SE1 = 0x1bb7 # macro -mmCOMPUTE_STATIC_THREAD_MGMT_SE1_BASE_IDX = 0 # macro -mmCOMPUTE_TMPRING_SIZE = 0x1bb8 # macro -mmCOMPUTE_TMPRING_SIZE_BASE_IDX = 0 # macro -mmCOMPUTE_DESTINATION_EN_SE2 = 0x1bb9 # macro -mmCOMPUTE_DESTINATION_EN_SE2_BASE_IDX = 0 # macro -mmCOMPUTE_STATIC_THREAD_MGMT_SE2 = 0x1bb9 # macro -mmCOMPUTE_STATIC_THREAD_MGMT_SE2_BASE_IDX = 0 # macro -mmCOMPUTE_DESTINATION_EN_SE3 = 0x1bba # macro -mmCOMPUTE_DESTINATION_EN_SE3_BASE_IDX = 0 # macro -mmCOMPUTE_STATIC_THREAD_MGMT_SE3 = 0x1bba # macro -mmCOMPUTE_STATIC_THREAD_MGMT_SE3_BASE_IDX = 0 # macro -mmCOMPUTE_RESTART_X = 0x1bbb # macro -mmCOMPUTE_RESTART_X_BASE_IDX = 0 # macro -mmCOMPUTE_RESTART_Y = 0x1bbc # macro -mmCOMPUTE_RESTART_Y_BASE_IDX = 0 # macro -mmCOMPUTE_RESTART_Z = 0x1bbd # macro -mmCOMPUTE_RESTART_Z_BASE_IDX = 0 # macro -mmCOMPUTE_THREAD_TRACE_ENABLE = 0x1bbe # macro -mmCOMPUTE_THREAD_TRACE_ENABLE_BASE_IDX = 0 # macro -mmCOMPUTE_MISC_RESERVED = 0x1bbf # macro -mmCOMPUTE_MISC_RESERVED_BASE_IDX = 0 # macro -mmCOMPUTE_DISPATCH_ID = 0x1bc0 # macro -mmCOMPUTE_DISPATCH_ID_BASE_IDX = 0 # macro -mmCOMPUTE_THREADGROUP_ID = 0x1bc1 # macro -mmCOMPUTE_THREADGROUP_ID_BASE_IDX = 0 # macro -mmCOMPUTE_REQ_CTRL = 0x1bc2 # macro -mmCOMPUTE_REQ_CTRL_BASE_IDX = 0 # macro -mmCOMPUTE_USER_ACCUM_0 = 0x1bc4 # macro -mmCOMPUTE_USER_ACCUM_0_BASE_IDX = 0 # macro -mmCOMPUTE_USER_ACCUM_1 = 0x1bc5 # macro -mmCOMPUTE_USER_ACCUM_1_BASE_IDX = 0 # macro -mmCOMPUTE_USER_ACCUM_2 = 0x1bc6 # macro -mmCOMPUTE_USER_ACCUM_2_BASE_IDX = 0 # macro -mmCOMPUTE_USER_ACCUM_3 = 0x1bc7 # macro -mmCOMPUTE_USER_ACCUM_3_BASE_IDX = 0 # macro -mmCOMPUTE_PGM_RSRC3 = 0x1bc8 # macro -mmCOMPUTE_PGM_RSRC3_BASE_IDX = 0 # macro -mmCOMPUTE_DDID_INDEX = 0x1bc9 # macro -mmCOMPUTE_DDID_INDEX_BASE_IDX = 0 # macro -mmCOMPUTE_SHADER_CHKSUM = 0x1bca # macro -mmCOMPUTE_SHADER_CHKSUM_BASE_IDX = 0 # macro -mmCOMPUTE_RELAUNCH = 0x1bcb # macro -mmCOMPUTE_RELAUNCH_BASE_IDX = 0 # macro -mmCOMPUTE_WAVE_RESTORE_ADDR_LO = 0x1bcc # macro -mmCOMPUTE_WAVE_RESTORE_ADDR_LO_BASE_IDX = 0 # macro -mmCOMPUTE_WAVE_RESTORE_ADDR_HI = 0x1bcd # macro -mmCOMPUTE_WAVE_RESTORE_ADDR_HI_BASE_IDX = 0 # macro -mmCOMPUTE_RELAUNCH2 = 0x1bce # macro -mmCOMPUTE_RELAUNCH2_BASE_IDX = 0 # macro -mmCOMPUTE_USER_DATA_0 = 0x1be0 # macro -mmCOMPUTE_USER_DATA_0_BASE_IDX = 0 # macro -mmCOMPUTE_USER_DATA_1 = 0x1be1 # macro -mmCOMPUTE_USER_DATA_1_BASE_IDX = 0 # macro -mmCOMPUTE_USER_DATA_2 = 0x1be2 # macro -mmCOMPUTE_USER_DATA_2_BASE_IDX = 0 # macro -mmCOMPUTE_USER_DATA_3 = 0x1be3 # macro -mmCOMPUTE_USER_DATA_3_BASE_IDX = 0 # macro -mmCOMPUTE_USER_DATA_4 = 0x1be4 # macro -mmCOMPUTE_USER_DATA_4_BASE_IDX = 0 # macro -mmCOMPUTE_USER_DATA_5 = 0x1be5 # macro -mmCOMPUTE_USER_DATA_5_BASE_IDX = 0 # macro -mmCOMPUTE_USER_DATA_6 = 0x1be6 # macro -mmCOMPUTE_USER_DATA_6_BASE_IDX = 0 # macro -mmCOMPUTE_USER_DATA_7 = 0x1be7 # macro -mmCOMPUTE_USER_DATA_7_BASE_IDX = 0 # macro -mmCOMPUTE_USER_DATA_8 = 0x1be8 # macro -mmCOMPUTE_USER_DATA_8_BASE_IDX = 0 # macro -mmCOMPUTE_USER_DATA_9 = 0x1be9 # macro -mmCOMPUTE_USER_DATA_9_BASE_IDX = 0 # macro -mmCOMPUTE_USER_DATA_10 = 0x1bea # macro -mmCOMPUTE_USER_DATA_10_BASE_IDX = 0 # macro -mmCOMPUTE_USER_DATA_11 = 0x1beb # macro -mmCOMPUTE_USER_DATA_11_BASE_IDX = 0 # macro -mmCOMPUTE_USER_DATA_12 = 0x1bec # macro -mmCOMPUTE_USER_DATA_12_BASE_IDX = 0 # macro -mmCOMPUTE_USER_DATA_13 = 0x1bed # macro -mmCOMPUTE_USER_DATA_13_BASE_IDX = 0 # macro -mmCOMPUTE_USER_DATA_14 = 0x1bee # macro -mmCOMPUTE_USER_DATA_14_BASE_IDX = 0 # macro -mmCOMPUTE_USER_DATA_15 = 0x1bef # macro -mmCOMPUTE_USER_DATA_15_BASE_IDX = 0 # macro -mmCOMPUTE_DISPATCH_TUNNEL = 0x1c1d # macro -mmCOMPUTE_DISPATCH_TUNNEL_BASE_IDX = 0 # macro -mmCOMPUTE_DISPATCH_END = 0x1c1e # macro -mmCOMPUTE_DISPATCH_END_BASE_IDX = 0 # macro -mmCOMPUTE_NOWHERE = 0x1c1f # macro -mmCOMPUTE_NOWHERE_BASE_IDX = 0 # macro -mmSH_RESERVED_REG0 = 0x1c20 # macro -mmSH_RESERVED_REG0_BASE_IDX = 0 # macro -mmSH_RESERVED_REG1 = 0x1c21 # macro -mmSH_RESERVED_REG1_BASE_IDX = 0 # macro -mmCP_EOPQ_WAIT_TIME = 0x1dd5 # macro -mmCP_EOPQ_WAIT_TIME_BASE_IDX = 0 # macro -mmCP_CPC_MGCG_SYNC_CNTL = 0x1dd6 # macro -mmCP_CPC_MGCG_SYNC_CNTL_BASE_IDX = 0 # macro -mmCPC_INT_INFO = 0x1dd7 # macro -mmCPC_INT_INFO_BASE_IDX = 0 # macro -mmCP_VIRT_STATUS = 0x1dd8 # macro -mmCP_VIRT_STATUS_BASE_IDX = 0 # macro -mmCPC_INT_ADDR = 0x1dd9 # macro -mmCPC_INT_ADDR_BASE_IDX = 0 # macro -mmCPC_INT_PASID = 0x1dda # macro -mmCPC_INT_PASID_BASE_IDX = 0 # macro -mmCP_GFX_ERROR = 0x1ddb # macro -mmCP_GFX_ERROR_BASE_IDX = 0 # macro -mmCPG_UTCL1_CNTL = 0x1ddc # macro -mmCPG_UTCL1_CNTL_BASE_IDX = 0 # macro -mmCPC_UTCL1_CNTL = 0x1ddd # macro -mmCPC_UTCL1_CNTL_BASE_IDX = 0 # macro -mmCPF_UTCL1_CNTL = 0x1dde # macro -mmCPF_UTCL1_CNTL_BASE_IDX = 0 # macro -mmCP_AQL_SMM_STATUS = 0x1ddf # macro -mmCP_AQL_SMM_STATUS_BASE_IDX = 0 # macro -mmCP_RB0_BASE = 0x1de0 # macro -mmCP_RB0_BASE_BASE_IDX = 0 # macro -mmCP_RB_BASE = 0x1de0 # macro -mmCP_RB_BASE_BASE_IDX = 0 # macro -mmCP_RB0_CNTL = 0x1de1 # macro -mmCP_RB0_CNTL_BASE_IDX = 0 # macro -mmCP_RB_CNTL = 0x1de1 # macro -mmCP_RB_CNTL_BASE_IDX = 0 # macro -mmCP_RB_RPTR_WR = 0x1de2 # macro -mmCP_RB_RPTR_WR_BASE_IDX = 0 # macro -mmCP_RB0_RPTR_ADDR = 0x1de3 # macro -mmCP_RB0_RPTR_ADDR_BASE_IDX = 0 # macro -mmCP_RB_RPTR_ADDR = 0x1de3 # macro -mmCP_RB_RPTR_ADDR_BASE_IDX = 0 # macro -mmCP_RB0_RPTR_ADDR_HI = 0x1de4 # macro -mmCP_RB0_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmCP_RB_RPTR_ADDR_HI = 0x1de4 # macro -mmCP_RB_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmCP_RB0_BUFSZ_MASK = 0x1de5 # macro -mmCP_RB0_BUFSZ_MASK_BASE_IDX = 0 # macro -mmCP_RB_BUFSZ_MASK = 0x1de5 # macro -mmCP_RB_BUFSZ_MASK_BASE_IDX = 0 # macro -mmCP_INT_CNTL = 0x1de9 # macro -mmCP_INT_CNTL_BASE_IDX = 0 # macro -mmCP_INT_STATUS = 0x1dea # macro -mmCP_INT_STATUS_BASE_IDX = 0 # macro -mmCP_DEVICE_ID = 0x1deb # macro -mmCP_DEVICE_ID_BASE_IDX = 0 # macro -mmCP_ME0_PIPE_PRIORITY_CNTS = 0x1dec # macro -mmCP_ME0_PIPE_PRIORITY_CNTS_BASE_IDX = 0 # macro -mmCP_RING_PRIORITY_CNTS = 0x1dec # macro -mmCP_RING_PRIORITY_CNTS_BASE_IDX = 0 # macro -mmCP_ME0_PIPE0_PRIORITY = 0x1ded # macro -mmCP_ME0_PIPE0_PRIORITY_BASE_IDX = 0 # macro -mmCP_RING0_PRIORITY = 0x1ded # macro -mmCP_RING0_PRIORITY_BASE_IDX = 0 # macro -mmCP_ME0_PIPE1_PRIORITY = 0x1dee # macro -mmCP_ME0_PIPE1_PRIORITY_BASE_IDX = 0 # macro -mmCP_RING1_PRIORITY = 0x1dee # macro -mmCP_RING1_PRIORITY_BASE_IDX = 0 # macro -mmCP_ME0_PIPE2_PRIORITY = 0x1def # macro -mmCP_ME0_PIPE2_PRIORITY_BASE_IDX = 0 # macro -mmCP_RING2_PRIORITY = 0x1def # macro -mmCP_RING2_PRIORITY_BASE_IDX = 0 # macro -mmCP_FATAL_ERROR = 0x1df0 # macro -mmCP_FATAL_ERROR_BASE_IDX = 0 # macro -mmCP_RB_VMID = 0x1df1 # macro -mmCP_RB_VMID_BASE_IDX = 0 # macro -mmCP_ME0_PIPE0_VMID = 0x1df2 # macro -mmCP_ME0_PIPE0_VMID_BASE_IDX = 0 # macro -mmCP_ME0_PIPE1_VMID = 0x1df3 # macro -mmCP_ME0_PIPE1_VMID_BASE_IDX = 0 # macro -mmCP_RB0_WPTR = 0x1df4 # macro -mmCP_RB0_WPTR_BASE_IDX = 0 # macro -mmCP_RB_WPTR = 0x1df4 # macro -mmCP_RB_WPTR_BASE_IDX = 0 # macro -mmCP_RB0_WPTR_HI = 0x1df5 # macro -mmCP_RB0_WPTR_HI_BASE_IDX = 0 # macro -mmCP_RB_WPTR_HI = 0x1df5 # macro -mmCP_RB_WPTR_HI_BASE_IDX = 0 # macro -mmCP_RB1_WPTR = 0x1df6 # macro -mmCP_RB1_WPTR_BASE_IDX = 0 # macro -mmCP_RB1_WPTR_HI = 0x1df7 # macro -mmCP_RB1_WPTR_HI_BASE_IDX = 0 # macro -mmCP_RB2_WPTR = 0x1df8 # macro -mmCP_RB2_WPTR_BASE_IDX = 0 # macro -mmCP_PROCESS_QUANTUM = 0x1df9 # macro -mmCP_PROCESS_QUANTUM_BASE_IDX = 0 # macro -mmCP_RB_DOORBELL_RANGE_LOWER = 0x1dfa # macro -mmCP_RB_DOORBELL_RANGE_LOWER_BASE_IDX = 0 # macro -mmCP_RB_DOORBELL_RANGE_UPPER = 0x1dfb # macro -mmCP_RB_DOORBELL_RANGE_UPPER_BASE_IDX = 0 # macro -mmCP_MEC_DOORBELL_RANGE_LOWER = 0x1dfc # macro -mmCP_MEC_DOORBELL_RANGE_LOWER_BASE_IDX = 0 # macro -mmCP_MEC_DOORBELL_RANGE_UPPER = 0x1dfd # macro -mmCP_MEC_DOORBELL_RANGE_UPPER_BASE_IDX = 0 # macro -mmCPG_UTCL1_ERROR = 0x1dfe # macro -mmCPG_UTCL1_ERROR_BASE_IDX = 0 # macro -mmCPC_UTCL1_ERROR = 0x1dff # macro -mmCPC_UTCL1_ERROR_BASE_IDX = 0 # macro -mmCP_RB1_BASE = 0x1e00 # macro -mmCP_RB1_BASE_BASE_IDX = 0 # macro -mmCP_RB1_CNTL = 0x1e01 # macro -mmCP_RB1_CNTL_BASE_IDX = 0 # macro -mmCP_RB1_RPTR_ADDR = 0x1e02 # macro -mmCP_RB1_RPTR_ADDR_BASE_IDX = 0 # macro -mmCP_RB1_RPTR_ADDR_HI = 0x1e03 # macro -mmCP_RB1_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmCP_RB1_BUFSZ_MASK = 0x1e04 # macro -mmCP_RB1_BUFSZ_MASK_BASE_IDX = 0 # macro -mmCP_RB2_BASE = 0x1e05 # macro -mmCP_RB2_BASE_BASE_IDX = 0 # macro -mmCP_RB2_CNTL = 0x1e06 # macro -mmCP_RB2_CNTL_BASE_IDX = 0 # macro -mmCP_RB2_RPTR_ADDR = 0x1e07 # macro -mmCP_RB2_RPTR_ADDR_BASE_IDX = 0 # macro -mmCP_RB2_RPTR_ADDR_HI = 0x1e08 # macro -mmCP_RB2_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmCP_INT_CNTL_RING0 = 0x1e0a # macro -mmCP_INT_CNTL_RING0_BASE_IDX = 0 # macro -mmCP_INT_CNTL_RING1 = 0x1e0b # macro -mmCP_INT_CNTL_RING1_BASE_IDX = 0 # macro -mmCP_INT_CNTL_RING2 = 0x1e0c # macro -mmCP_INT_CNTL_RING2_BASE_IDX = 0 # macro -mmCP_INT_STATUS_RING0 = 0x1e0d # macro -mmCP_INT_STATUS_RING0_BASE_IDX = 0 # macro -mmCP_INT_STATUS_RING1 = 0x1e0e # macro -mmCP_INT_STATUS_RING1_BASE_IDX = 0 # macro -mmCP_INT_STATUS_RING2 = 0x1e0f # macro -mmCP_INT_STATUS_RING2_BASE_IDX = 0 # macro -mmCP_ME_F32_INTERRUPT = 0x1e13 # macro -mmCP_ME_F32_INTERRUPT_BASE_IDX = 0 # macro -mmCP_PFP_F32_INTERRUPT = 0x1e14 # macro -mmCP_PFP_F32_INTERRUPT_BASE_IDX = 0 # macro -mmCP_CE_F32_INTERRUPT = 0x1e15 # macro -mmCP_CE_F32_INTERRUPT_BASE_IDX = 0 # macro -mmCP_MEC1_F32_INTERRUPT = 0x1e16 # macro -mmCP_MEC1_F32_INTERRUPT_BASE_IDX = 0 # macro -mmCP_MEC2_F32_INTERRUPT = 0x1e17 # macro -mmCP_MEC2_F32_INTERRUPT_BASE_IDX = 0 # macro -mmCP_PWR_CNTL = 0x1e18 # macro -mmCP_PWR_CNTL_BASE_IDX = 0 # macro -mmCP_MEM_SLP_CNTL = 0x1e19 # macro -mmCP_MEM_SLP_CNTL_BASE_IDX = 0 # macro -mmCP_ECC_FIRSTOCCURRENCE = 0x1e1a # macro -mmCP_ECC_FIRSTOCCURRENCE_BASE_IDX = 0 # macro -mmCP_ECC_FIRSTOCCURRENCE_RING0 = 0x1e1b # macro -mmCP_ECC_FIRSTOCCURRENCE_RING0_BASE_IDX = 0 # macro -mmCP_ECC_FIRSTOCCURRENCE_RING1 = 0x1e1c # macro -mmCP_ECC_FIRSTOCCURRENCE_RING1_BASE_IDX = 0 # macro -mmCP_ECC_FIRSTOCCURRENCE_RING2 = 0x1e1d # macro -mmCP_ECC_FIRSTOCCURRENCE_RING2_BASE_IDX = 0 # macro -mmGB_EDC_MODE = 0x1e1e # macro -mmGB_EDC_MODE_BASE_IDX = 0 # macro -mmCP_PQ_WPTR_POLL_CNTL = 0x1e23 # macro -mmCP_PQ_WPTR_POLL_CNTL_BASE_IDX = 0 # macro -mmCP_PQ_WPTR_POLL_CNTL1 = 0x1e24 # macro -mmCP_PQ_WPTR_POLL_CNTL1_BASE_IDX = 0 # macro -mmCP_ME1_PIPE0_INT_CNTL = 0x1e25 # macro -mmCP_ME1_PIPE0_INT_CNTL_BASE_IDX = 0 # macro -mmCP_ME1_PIPE1_INT_CNTL = 0x1e26 # macro -mmCP_ME1_PIPE1_INT_CNTL_BASE_IDX = 0 # macro -mmCP_ME1_PIPE2_INT_CNTL = 0x1e27 # macro -mmCP_ME1_PIPE2_INT_CNTL_BASE_IDX = 0 # macro -mmCP_ME1_PIPE3_INT_CNTL = 0x1e28 # macro -mmCP_ME1_PIPE3_INT_CNTL_BASE_IDX = 0 # macro -mmCP_ME2_PIPE0_INT_CNTL = 0x1e29 # macro -mmCP_ME2_PIPE0_INT_CNTL_BASE_IDX = 0 # macro -mmCP_ME2_PIPE1_INT_CNTL = 0x1e2a # macro -mmCP_ME2_PIPE1_INT_CNTL_BASE_IDX = 0 # macro -mmCP_ME2_PIPE2_INT_CNTL = 0x1e2b # macro -mmCP_ME2_PIPE2_INT_CNTL_BASE_IDX = 0 # macro -mmCP_ME2_PIPE3_INT_CNTL = 0x1e2c # macro -mmCP_ME2_PIPE3_INT_CNTL_BASE_IDX = 0 # macro -mmCP_ME1_PIPE0_INT_STATUS = 0x1e2d # macro -mmCP_ME1_PIPE0_INT_STATUS_BASE_IDX = 0 # macro -mmCP_ME1_PIPE1_INT_STATUS = 0x1e2e # macro -mmCP_ME1_PIPE1_INT_STATUS_BASE_IDX = 0 # macro -mmCP_ME1_PIPE2_INT_STATUS = 0x1e2f # macro -mmCP_ME1_PIPE2_INT_STATUS_BASE_IDX = 0 # macro -mmCP_ME1_PIPE3_INT_STATUS = 0x1e30 # macro -mmCP_ME1_PIPE3_INT_STATUS_BASE_IDX = 0 # macro -mmCP_ME2_PIPE0_INT_STATUS = 0x1e31 # macro -mmCP_ME2_PIPE0_INT_STATUS_BASE_IDX = 0 # macro -mmCP_ME2_PIPE1_INT_STATUS = 0x1e32 # macro -mmCP_ME2_PIPE1_INT_STATUS_BASE_IDX = 0 # macro -mmCP_ME2_PIPE2_INT_STATUS = 0x1e33 # macro -mmCP_ME2_PIPE2_INT_STATUS_BASE_IDX = 0 # macro -mmCP_ME2_PIPE3_INT_STATUS = 0x1e34 # macro -mmCP_ME2_PIPE3_INT_STATUS_BASE_IDX = 0 # macro -mmCP_GFX_QUEUE_INDEX = 0x1e37 # macro -mmCP_GFX_QUEUE_INDEX_BASE_IDX = 0 # macro -mmCC_GC_EDC_CONFIG = 0x1e38 # macro -mmCC_GC_EDC_CONFIG_BASE_IDX = 0 # macro -mmCP_ME1_INT_STAT_DEBUG = 0x1e35 # macro -mmCP_ME1_INT_STAT_DEBUG_BASE_IDX = 0 # macro -mmCP_ME2_INT_STAT_DEBUG = 0x1e36 # macro -mmCP_ME2_INT_STAT_DEBUG_BASE_IDX = 0 # macro -mmCP_ME1_PIPE_PRIORITY_CNTS = 0x1e39 # macro -mmCP_ME1_PIPE_PRIORITY_CNTS_BASE_IDX = 0 # macro -mmCP_ME1_PIPE0_PRIORITY = 0x1e3a # macro -mmCP_ME1_PIPE0_PRIORITY_BASE_IDX = 0 # macro -mmCP_ME1_PIPE1_PRIORITY = 0x1e3b # macro -mmCP_ME1_PIPE1_PRIORITY_BASE_IDX = 0 # macro -mmCP_ME1_PIPE2_PRIORITY = 0x1e3c # macro -mmCP_ME1_PIPE2_PRIORITY_BASE_IDX = 0 # macro -mmCP_ME1_PIPE3_PRIORITY = 0x1e3d # macro -mmCP_ME1_PIPE3_PRIORITY_BASE_IDX = 0 # macro -mmCP_ME2_PIPE_PRIORITY_CNTS = 0x1e3e # macro -mmCP_ME2_PIPE_PRIORITY_CNTS_BASE_IDX = 0 # macro -mmCP_ME2_PIPE0_PRIORITY = 0x1e3f # macro -mmCP_ME2_PIPE0_PRIORITY_BASE_IDX = 0 # macro -mmCP_ME2_PIPE1_PRIORITY = 0x1e40 # macro -mmCP_ME2_PIPE1_PRIORITY_BASE_IDX = 0 # macro -mmCP_ME2_PIPE2_PRIORITY = 0x1e41 # macro -mmCP_ME2_PIPE2_PRIORITY_BASE_IDX = 0 # macro -mmCP_ME2_PIPE3_PRIORITY = 0x1e42 # macro -mmCP_ME2_PIPE3_PRIORITY_BASE_IDX = 0 # macro -mmCP_CE_PRGRM_CNTR_START = 0x1e43 # macro -mmCP_CE_PRGRM_CNTR_START_BASE_IDX = 0 # macro -mmCP_PFP_PRGRM_CNTR_START = 0x1e44 # macro -mmCP_PFP_PRGRM_CNTR_START_BASE_IDX = 0 # macro -mmCP_ME_PRGRM_CNTR_START = 0x1e45 # macro -mmCP_ME_PRGRM_CNTR_START_BASE_IDX = 0 # macro -mmCP_MEC1_PRGRM_CNTR_START = 0x1e46 # macro -mmCP_MEC1_PRGRM_CNTR_START_BASE_IDX = 0 # macro -mmCP_MEC2_PRGRM_CNTR_START = 0x1e47 # macro -mmCP_MEC2_PRGRM_CNTR_START_BASE_IDX = 0 # macro -mmCP_CE_INTR_ROUTINE_START = 0x1e48 # macro -mmCP_CE_INTR_ROUTINE_START_BASE_IDX = 0 # macro -mmCP_PFP_INTR_ROUTINE_START = 0x1e49 # macro -mmCP_PFP_INTR_ROUTINE_START_BASE_IDX = 0 # macro -mmCP_ME_INTR_ROUTINE_START = 0x1e4a # macro -mmCP_ME_INTR_ROUTINE_START_BASE_IDX = 0 # macro -mmCP_MEC1_INTR_ROUTINE_START = 0x1e4b # macro -mmCP_MEC1_INTR_ROUTINE_START_BASE_IDX = 0 # macro -mmCP_MEC2_INTR_ROUTINE_START = 0x1e4c # macro -mmCP_MEC2_INTR_ROUTINE_START_BASE_IDX = 0 # macro -mmCP_CONTEXT_CNTL = 0x1e4d # macro -mmCP_CONTEXT_CNTL_BASE_IDX = 0 # macro -mmCP_MAX_CONTEXT = 0x1e4e # macro -mmCP_MAX_CONTEXT_BASE_IDX = 0 # macro -mmCP_IQ_WAIT_TIME1 = 0x1e4f # macro -mmCP_IQ_WAIT_TIME1_BASE_IDX = 0 # macro -mmCP_IQ_WAIT_TIME2 = 0x1e50 # macro -mmCP_IQ_WAIT_TIME2_BASE_IDX = 0 # macro -mmCP_RB0_BASE_HI = 0x1e51 # macro -mmCP_RB0_BASE_HI_BASE_IDX = 0 # macro -mmCP_RB1_BASE_HI = 0x1e52 # macro -mmCP_RB1_BASE_HI_BASE_IDX = 0 # macro -mmCP_VMID_RESET = 0x1e53 # macro -mmCP_VMID_RESET_BASE_IDX = 0 # macro -mmCPC_INT_CNTL = 0x1e54 # macro -mmCPC_INT_CNTL_BASE_IDX = 0 # macro -mmCPC_INT_STATUS = 0x1e55 # macro -mmCPC_INT_STATUS_BASE_IDX = 0 # macro -mmCP_VMID_PREEMPT = 0x1e56 # macro -mmCP_VMID_PREEMPT_BASE_IDX = 0 # macro -mmCPC_INT_CNTX_ID = 0x1e57 # macro -mmCPC_INT_CNTX_ID_BASE_IDX = 0 # macro -mmCP_PQ_STATUS = 0x1e58 # macro -mmCP_PQ_STATUS_BASE_IDX = 0 # macro -mmCP_MEC1_F32_INT_DIS = 0x1e5d # macro -mmCP_MEC1_F32_INT_DIS_BASE_IDX = 0 # macro -mmCP_MEC2_F32_INT_DIS = 0x1e5e # macro -mmCP_MEC2_F32_INT_DIS_BASE_IDX = 0 # macro -mmCP_VMID_STATUS = 0x1e5f # macro -mmCP_VMID_STATUS_BASE_IDX = 0 # macro -mmCPC_SUSPEND_CTX_SAVE_BASE_ADDR_LO = 0x1e60 # macro -mmCPC_SUSPEND_CTX_SAVE_BASE_ADDR_LO_BASE_IDX = 0 # macro -mmCPC_SUSPEND_CTX_SAVE_BASE_ADDR_HI = 0x1e61 # macro -mmCPC_SUSPEND_CTX_SAVE_BASE_ADDR_HI_BASE_IDX = 0 # macro -mmCPC_SUSPEND_CTX_SAVE_CONTROL = 0x1e62 # macro -mmCPC_SUSPEND_CTX_SAVE_CONTROL_BASE_IDX = 0 # macro -mmCPC_SUSPEND_CNTL_STACK_OFFSET = 0x1e63 # macro -mmCPC_SUSPEND_CNTL_STACK_OFFSET_BASE_IDX = 0 # macro -mmCPC_SUSPEND_CNTL_STACK_SIZE = 0x1e64 # macro -mmCPC_SUSPEND_CNTL_STACK_SIZE_BASE_IDX = 0 # macro -mmCPC_SUSPEND_WG_STATE_OFFSET = 0x1e65 # macro -mmCPC_SUSPEND_WG_STATE_OFFSET_BASE_IDX = 0 # macro -mmCPC_SUSPEND_CTX_SAVE_SIZE = 0x1e66 # macro -mmCPC_SUSPEND_CTX_SAVE_SIZE_BASE_IDX = 0 # macro -mmCPC_OS_PIPES = 0x1e67 # macro -mmCPC_OS_PIPES_BASE_IDX = 0 # macro -mmCP_SUSPEND_RESUME_REQ = 0x1e68 # macro -mmCP_SUSPEND_RESUME_REQ_BASE_IDX = 0 # macro -mmCP_SUSPEND_CNTL = 0x1e69 # macro -mmCP_SUSPEND_CNTL_BASE_IDX = 0 # macro -mmCP_IQ_WAIT_TIME3 = 0x1e6a # macro -mmCP_IQ_WAIT_TIME3_BASE_IDX = 0 # macro -mmCPC_DDID_BASE_ADDR_LO = 0x1e6b # macro -mmCPC_DDID_BASE_ADDR_LO_BASE_IDX = 0 # macro -mmCP_DDID_BASE_ADDR_LO = 0x1e6b # macro -mmCP_DDID_BASE_ADDR_LO_BASE_IDX = 0 # macro -mmCPC_DDID_BASE_ADDR_HI = 0x1e6c # macro -mmCPC_DDID_BASE_ADDR_HI_BASE_IDX = 0 # macro -mmCP_DDID_BASE_ADDR_HI = 0x1e6c # macro -mmCP_DDID_BASE_ADDR_HI_BASE_IDX = 0 # macro -mmCPC_DDID_CNTL = 0x1e6d # macro -mmCPC_DDID_CNTL_BASE_IDX = 0 # macro -mmCP_DDID_CNTL = 0x1e6d # macro -mmCP_DDID_CNTL_BASE_IDX = 0 # macro -mmCP_GFX_DDID_INFLIGHT_COUNT = 0x1e6e # macro -mmCP_GFX_DDID_INFLIGHT_COUNT_BASE_IDX = 0 # macro -mmCP_GFX_DDID_WPTR = 0x1e6f # macro -mmCP_GFX_DDID_WPTR_BASE_IDX = 0 # macro -mmCP_GFX_DDID_RPTR = 0x1e70 # macro -mmCP_GFX_DDID_RPTR_BASE_IDX = 0 # macro -mmCP_GFX_DDID_DELTA_RPT_COUNT = 0x1e71 # macro -mmCP_GFX_DDID_DELTA_RPT_COUNT_BASE_IDX = 0 # macro -mmCP_GFX_HPD_STATUS0 = 0x1e72 # macro -mmCP_GFX_HPD_STATUS0_BASE_IDX = 0 # macro -mmCP_GFX_HPD_CONTROL0 = 0x1e73 # macro -mmCP_GFX_HPD_CONTROL0_BASE_IDX = 0 # macro -mmCP_GFX_HPD_OSPRE_FENCE_ADDR_LO = 0x1e74 # macro -mmCP_GFX_HPD_OSPRE_FENCE_ADDR_LO_BASE_IDX = 0 # macro -mmCP_GFX_HPD_OSPRE_FENCE_ADDR_HI = 0x1e75 # macro -mmCP_GFX_HPD_OSPRE_FENCE_ADDR_HI_BASE_IDX = 0 # macro -mmCP_GFX_HPD_OSPRE_FENCE_DATA_LO = 0x1e76 # macro -mmCP_GFX_HPD_OSPRE_FENCE_DATA_LO_BASE_IDX = 0 # macro -mmCP_GFX_HPD_OSPRE_FENCE_DATA_HI = 0x1e77 # macro -mmCP_GFX_HPD_OSPRE_FENCE_DATA_HI_BASE_IDX = 0 # macro -mmCP_GFX_INDEX_MUTEX = 0x1e78 # macro -mmCP_GFX_INDEX_MUTEX_BASE_IDX = 0 # macro -mmCP_GFX_MQD_BASE_ADDR = 0x1e7e # macro -mmCP_GFX_MQD_BASE_ADDR_BASE_IDX = 0 # macro -mmCP_GFX_MQD_BASE_ADDR_HI = 0x1e7f # macro -mmCP_GFX_MQD_BASE_ADDR_HI_BASE_IDX = 0 # macro -mmCP_GFX_HQD_ACTIVE = 0x1e80 # macro -mmCP_GFX_HQD_ACTIVE_BASE_IDX = 0 # macro -mmCP_GFX_HQD_VMID = 0x1e81 # macro -mmCP_GFX_HQD_VMID_BASE_IDX = 0 # macro -mmCP_GFX_HQD_QUEUE_PRIORITY = 0x1e84 # macro -mmCP_GFX_HQD_QUEUE_PRIORITY_BASE_IDX = 0 # macro -mmCP_GFX_HQD_QUANTUM = 0x1e85 # macro -mmCP_GFX_HQD_QUANTUM_BASE_IDX = 0 # macro -mmCP_GFX_HQD_BASE = 0x1e86 # macro -mmCP_GFX_HQD_BASE_BASE_IDX = 0 # macro -mmCP_GFX_HQD_BASE_HI = 0x1e87 # macro -mmCP_GFX_HQD_BASE_HI_BASE_IDX = 0 # macro -mmCP_GFX_HQD_RPTR = 0x1e88 # macro -mmCP_GFX_HQD_RPTR_BASE_IDX = 0 # macro -mmCP_GFX_HQD_RPTR_ADDR = 0x1e89 # macro -mmCP_GFX_HQD_RPTR_ADDR_BASE_IDX = 0 # macro -mmCP_GFX_HQD_RPTR_ADDR_HI = 0x1e8a # macro -mmCP_GFX_HQD_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmCP_RB_WPTR_POLL_ADDR_LO = 0x1e8b # macro -mmCP_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmCP_RB_WPTR_POLL_ADDR_HI = 0x1e8c # macro -mmCP_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmCP_RB_DOORBELL_CONTROL = 0x1e8d # macro -mmCP_RB_DOORBELL_CONTROL_BASE_IDX = 0 # macro -mmCP_GFX_HQD_OFFSET = 0x1e8e # macro -mmCP_GFX_HQD_OFFSET_BASE_IDX = 0 # macro -mmCP_GFX_HQD_CNTL = 0x1e8f # macro -mmCP_GFX_HQD_CNTL_BASE_IDX = 0 # macro -mmCP_GFX_HQD_CSMD_RPTR = 0x1e90 # macro -mmCP_GFX_HQD_CSMD_RPTR_BASE_IDX = 0 # macro -mmCP_GFX_HQD_WPTR = 0x1e91 # macro -mmCP_GFX_HQD_WPTR_BASE_IDX = 0 # macro -mmCP_GFX_HQD_WPTR_HI = 0x1e92 # macro -mmCP_GFX_HQD_WPTR_HI_BASE_IDX = 0 # macro -mmCP_GFX_HQD_DEQUEUE_REQUEST = 0x1e93 # macro -mmCP_GFX_HQD_DEQUEUE_REQUEST_BASE_IDX = 0 # macro -mmCP_GFX_HQD_MAPPED = 0x1e94 # macro -mmCP_GFX_HQD_MAPPED_BASE_IDX = 0 # macro -mmCP_GFX_HQD_QUE_MGR_CONTROL = 0x1e95 # macro -mmCP_GFX_HQD_QUE_MGR_CONTROL_BASE_IDX = 0 # macro -mmCP_GFX_HQD_HQ_STATUS0 = 0x1e98 # macro -mmCP_GFX_HQD_HQ_STATUS0_BASE_IDX = 0 # macro -mmCP_GFX_HQD_HQ_CONTROL0 = 0x1e99 # macro -mmCP_GFX_HQD_HQ_CONTROL0_BASE_IDX = 0 # macro -mmCP_GFX_MQD_CONTROL = 0x1e9a # macro -mmCP_GFX_MQD_CONTROL_BASE_IDX = 0 # macro -mmCP_HQD_GFX_CONTROL = 0x1e9f # macro -mmCP_HQD_GFX_CONTROL_BASE_IDX = 0 # macro -mmCP_HQD_GFX_STATUS = 0x1ea0 # macro -mmCP_HQD_GFX_STATUS_BASE_IDX = 0 # macro -mmCP_GFX_HQD_CE_RPTR_WR = 0x1ea1 # macro -mmCP_GFX_HQD_CE_RPTR_WR_BASE_IDX = 0 # macro -mmCP_GFX_HQD_CE_BASE = 0x1ea2 # macro -mmCP_GFX_HQD_CE_BASE_BASE_IDX = 0 # macro -mmCP_GFX_HQD_CE_BASE_HI = 0x1ea3 # macro -mmCP_GFX_HQD_CE_BASE_HI_BASE_IDX = 0 # macro -mmCP_GFX_HQD_CE_RPTR = 0x1ea4 # macro -mmCP_GFX_HQD_CE_RPTR_BASE_IDX = 0 # macro -mmCP_GFX_HQD_CE_RPTR_ADDR = 0x1ea5 # macro -mmCP_GFX_HQD_CE_RPTR_ADDR_BASE_IDX = 0 # macro -mmCP_GFX_HQD_CE_RPTR_ADDR_HI = 0x1ea6 # macro -mmCP_GFX_HQD_CE_RPTR_ADDR_HI_BASE_IDX = 0 # macro -mmCP_GFX_HQD_CE_WPTR_POLL_ADDR_LO = 0x1ea7 # macro -mmCP_GFX_HQD_CE_WPTR_POLL_ADDR_LO_BASE_IDX = 0 # macro -mmCP_GFX_HQD_CE_WPTR_POLL_ADDR_HI = 0x1ea8 # macro -mmCP_GFX_HQD_CE_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmCP_GFX_HQD_CE_OFFSET = 0x1ea9 # macro -mmCP_GFX_HQD_CE_OFFSET_BASE_IDX = 0 # macro -mmCP_GFX_HQD_CE_CNTL = 0x1eaa # macro -mmCP_GFX_HQD_CE_CNTL_BASE_IDX = 0 # macro -mmCP_GFX_HQD_CE_CSMD_RPTR = 0x1eab # macro -mmCP_GFX_HQD_CE_CSMD_RPTR_BASE_IDX = 0 # macro -mmCP_GFX_HQD_CE_WPTR = 0x1eac # macro -mmCP_GFX_HQD_CE_WPTR_BASE_IDX = 0 # macro -mmCP_GFX_HQD_CE_WPTR_HI = 0x1ead # macro -mmCP_GFX_HQD_CE_WPTR_HI_BASE_IDX = 0 # macro -mmCP_CE_DOORBELL_CONTROL = 0x1eae # macro -mmCP_CE_DOORBELL_CONTROL_BASE_IDX = 0 # macro -mmCP_DMA_WATCH0_ADDR_LO = 0x1ec0 # macro -mmCP_DMA_WATCH0_ADDR_LO_BASE_IDX = 0 # macro -mmCP_DMA_WATCH0_ADDR_HI = 0x1ec1 # macro -mmCP_DMA_WATCH0_ADDR_HI_BASE_IDX = 0 # macro -mmCP_DMA_WATCH0_MASK = 0x1ec2 # macro -mmCP_DMA_WATCH0_MASK_BASE_IDX = 0 # macro -mmCP_DMA_WATCH0_CNTL = 0x1ec3 # macro -mmCP_DMA_WATCH0_CNTL_BASE_IDX = 0 # macro -mmCP_DMA_WATCH1_ADDR_LO = 0x1ec4 # macro -mmCP_DMA_WATCH1_ADDR_LO_BASE_IDX = 0 # macro -mmCP_DMA_WATCH1_ADDR_HI = 0x1ec5 # macro -mmCP_DMA_WATCH1_ADDR_HI_BASE_IDX = 0 # macro -mmCP_DMA_WATCH1_MASK = 0x1ec6 # macro -mmCP_DMA_WATCH1_MASK_BASE_IDX = 0 # macro -mmCP_DMA_WATCH1_CNTL = 0x1ec7 # macro -mmCP_DMA_WATCH1_CNTL_BASE_IDX = 0 # macro -mmCP_DMA_WATCH2_ADDR_LO = 0x1ec8 # macro -mmCP_DMA_WATCH2_ADDR_LO_BASE_IDX = 0 # macro -mmCP_DMA_WATCH2_ADDR_HI = 0x1ec9 # macro -mmCP_DMA_WATCH2_ADDR_HI_BASE_IDX = 0 # macro -mmCP_DMA_WATCH2_MASK = 0x1eca # macro -mmCP_DMA_WATCH2_MASK_BASE_IDX = 0 # macro -mmCP_DMA_WATCH2_CNTL = 0x1ecb # macro -mmCP_DMA_WATCH2_CNTL_BASE_IDX = 0 # macro -mmCP_DMA_WATCH3_ADDR_LO = 0x1ecc # macro -mmCP_DMA_WATCH3_ADDR_LO_BASE_IDX = 0 # macro -mmCP_DMA_WATCH3_ADDR_HI = 0x1ecd # macro -mmCP_DMA_WATCH3_ADDR_HI_BASE_IDX = 0 # macro -mmCP_DMA_WATCH3_MASK = 0x1ece # macro -mmCP_DMA_WATCH3_MASK_BASE_IDX = 0 # macro -mmCP_DMA_WATCH3_CNTL = 0x1ecf # macro -mmCP_DMA_WATCH3_CNTL_BASE_IDX = 0 # macro -mmCP_DMA_WATCH_STAT_ADDR_LO = 0x1ed0 # macro -mmCP_DMA_WATCH_STAT_ADDR_LO_BASE_IDX = 0 # macro -mmCP_DMA_WATCH_STAT_ADDR_HI = 0x1ed1 # macro -mmCP_DMA_WATCH_STAT_ADDR_HI_BASE_IDX = 0 # macro -mmCP_DMA_WATCH_STAT = 0x1ed2 # macro -mmCP_DMA_WATCH_STAT_BASE_IDX = 0 # macro -mmCP_PFP_JT_STAT = 0x1ed3 # macro -mmCP_PFP_JT_STAT_BASE_IDX = 0 # macro -mmCP_CE_JT_STAT = 0x1ed4 # macro -mmCP_CE_JT_STAT_BASE_IDX = 0 # macro -mmCP_MEC_JT_STAT = 0x1ed5 # macro -mmCP_MEC_JT_STAT_BASE_IDX = 0 # macro -mmCP_FETCHER_SOURCE = 0x1f1e # macro -mmCP_FETCHER_SOURCE_BASE_IDX = 0 # macro -mmCP_CE_CS_PARTITION_INDEX = 0x1f1f # macro -mmCP_CE_CS_PARTITION_INDEX_BASE_IDX = 0 # macro -mmCP_RB_DOORBELL_CLEAR = 0x1f28 # macro -mmCP_RB_DOORBELL_CLEAR_BASE_IDX = 0 # macro -mmCP_RB0_ACTIVE = 0x1f40 # macro -mmCP_RB0_ACTIVE_BASE_IDX = 0 # macro -mmCP_RB_ACTIVE = 0x1f40 # macro -mmCP_RB_ACTIVE_BASE_IDX = 0 # macro -mmCP_RB1_ACTIVE = 0x1f41 # macro -mmCP_RB1_ACTIVE_BASE_IDX = 0 # macro -mmCP_RB_STATUS = 0x1f43 # macro -mmCP_RB_STATUS_BASE_IDX = 0 # macro -mmCPG_RCIU_CAM_INDEX = 0x1f44 # macro -mmCPG_RCIU_CAM_INDEX_BASE_IDX = 0 # macro -mmCPG_RCIU_CAM_DATA = 0x1f45 # macro -mmCPG_RCIU_CAM_DATA_BASE_IDX = 0 # macro -mmCPG_RCIU_CAM_DATA_PHASE0 = 0x1f45 # macro -mmCPG_RCIU_CAM_DATA_PHASE0_BASE_IDX = 0 # macro -mmCPG_RCIU_CAM_DATA_PHASE1 = 0x1f45 # macro -mmCPG_RCIU_CAM_DATA_PHASE1_BASE_IDX = 0 # macro -mmCPG_RCIU_CAM_DATA_PHASE2 = 0x1f45 # macro -mmCPG_RCIU_CAM_DATA_PHASE2_BASE_IDX = 0 # macro -mmCP_GPU_TIMESTAMP_OFFSET_LO = 0x1f4c # macro -mmCP_GPU_TIMESTAMP_OFFSET_LO_BASE_IDX = 0 # macro -mmCP_GPU_TIMESTAMP_OFFSET_HI = 0x1f4d # macro -mmCP_GPU_TIMESTAMP_OFFSET_HI_BASE_IDX = 0 # macro -mmCPF_GCR_CNTL = 0x1f53 # macro -mmCPF_GCR_CNTL_BASE_IDX = 0 # macro -mmCPG_UTCL1_STATUS = 0x1f54 # macro -mmCPG_UTCL1_STATUS_BASE_IDX = 0 # macro -mmCPC_UTCL1_STATUS = 0x1f55 # macro -mmCPC_UTCL1_STATUS_BASE_IDX = 0 # macro -mmCPF_UTCL1_STATUS = 0x1f56 # macro -mmCPF_UTCL1_STATUS_BASE_IDX = 0 # macro -mmCP_SD_CNTL = 0x1f57 # macro -mmCP_SD_CNTL_BASE_IDX = 0 # macro -mmCP_SOFT_RESET_CNTL = 0x1f59 # macro -mmCP_SOFT_RESET_CNTL_BASE_IDX = 0 # macro -mmCP_CPC_GFX_CNTL = 0x1f5a # macro -mmCP_CPC_GFX_CNTL_BASE_IDX = 0 # macro -mmSPI_ARB_PRIORITY = 0x1f60 # macro -mmSPI_ARB_PRIORITY_BASE_IDX = 0 # macro -mmSPI_ARB_CYCLES_0 = 0x1f61 # macro -mmSPI_ARB_CYCLES_0_BASE_IDX = 0 # macro -mmSPI_ARB_CYCLES_1 = 0x1f62 # macro -mmSPI_ARB_CYCLES_1_BASE_IDX = 0 # macro -mmSPI_WCL_PIPE_PERCENT_GFX = 0x1f67 # macro -mmSPI_WCL_PIPE_PERCENT_GFX_BASE_IDX = 0 # macro -mmSPI_WCL_PIPE_PERCENT_HP3D = 0x1f68 # macro -mmSPI_WCL_PIPE_PERCENT_HP3D_BASE_IDX = 0 # macro -mmSPI_WCL_PIPE_PERCENT_CS0 = 0x1f69 # macro -mmSPI_WCL_PIPE_PERCENT_CS0_BASE_IDX = 0 # macro -mmSPI_WCL_PIPE_PERCENT_CS1 = 0x1f6a # macro -mmSPI_WCL_PIPE_PERCENT_CS1_BASE_IDX = 0 # macro -mmSPI_WCL_PIPE_PERCENT_CS2 = 0x1f6b # macro -mmSPI_WCL_PIPE_PERCENT_CS2_BASE_IDX = 0 # macro -mmSPI_WCL_PIPE_PERCENT_CS3 = 0x1f6c # macro -mmSPI_WCL_PIPE_PERCENT_CS3_BASE_IDX = 0 # macro -mmSPI_GDBG_WAVE_CNTL = 0x1f71 # macro -mmSPI_GDBG_WAVE_CNTL_BASE_IDX = 0 # macro -mmSPI_GDBG_TRAP_CONFIG = 0x1f72 # macro -mmSPI_GDBG_TRAP_CONFIG_BASE_IDX = 0 # macro -mmSPI_GDBG_TRAP_MASK = 0x1f73 # macro -mmSPI_GDBG_TRAP_MASK_BASE_IDX = 0 # macro -mmSPI_GDBG_WAVE_CNTL2 = 0x1f74 # macro -mmSPI_GDBG_WAVE_CNTL2_BASE_IDX = 0 # macro -mmSPI_GDBG_WAVE_CNTL3 = 0x1f75 # macro -mmSPI_GDBG_WAVE_CNTL3_BASE_IDX = 0 # macro -mmSPI_GDBG_TRAP_DATA0 = 0x1f78 # macro -mmSPI_GDBG_TRAP_DATA0_BASE_IDX = 0 # macro -mmSPI_GDBG_TRAP_DATA1 = 0x1f79 # macro -mmSPI_GDBG_TRAP_DATA1_BASE_IDX = 0 # macro -mmSPI_COMPUTE_QUEUE_RESET = 0x1f7b # macro -mmSPI_COMPUTE_QUEUE_RESET_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_CU_0 = 0x1f7c # macro -mmSPI_RESOURCE_RESERVE_CU_0_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_CU_1 = 0x1f7d # macro -mmSPI_RESOURCE_RESERVE_CU_1_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_CU_2 = 0x1f7e # macro -mmSPI_RESOURCE_RESERVE_CU_2_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_CU_3 = 0x1f7f # macro -mmSPI_RESOURCE_RESERVE_CU_3_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_CU_4 = 0x1f80 # macro -mmSPI_RESOURCE_RESERVE_CU_4_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_CU_5 = 0x1f81 # macro -mmSPI_RESOURCE_RESERVE_CU_5_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_CU_6 = 0x1f82 # macro -mmSPI_RESOURCE_RESERVE_CU_6_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_CU_7 = 0x1f83 # macro -mmSPI_RESOURCE_RESERVE_CU_7_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_CU_8 = 0x1f84 # macro -mmSPI_RESOURCE_RESERVE_CU_8_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_CU_9 = 0x1f85 # macro -mmSPI_RESOURCE_RESERVE_CU_9_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_EN_CU_0 = 0x1f86 # macro -mmSPI_RESOURCE_RESERVE_EN_CU_0_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_EN_CU_1 = 0x1f87 # macro -mmSPI_RESOURCE_RESERVE_EN_CU_1_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_EN_CU_2 = 0x1f88 # macro -mmSPI_RESOURCE_RESERVE_EN_CU_2_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_EN_CU_3 = 0x1f89 # macro -mmSPI_RESOURCE_RESERVE_EN_CU_3_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_EN_CU_4 = 0x1f8a # macro -mmSPI_RESOURCE_RESERVE_EN_CU_4_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_EN_CU_5 = 0x1f8b # macro -mmSPI_RESOURCE_RESERVE_EN_CU_5_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_EN_CU_6 = 0x1f8c # macro -mmSPI_RESOURCE_RESERVE_EN_CU_6_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_EN_CU_7 = 0x1f8d # macro -mmSPI_RESOURCE_RESERVE_EN_CU_7_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_EN_CU_8 = 0x1f8e # macro -mmSPI_RESOURCE_RESERVE_EN_CU_8_BASE_IDX = 0 # macro -mmSPI_RESOURCE_RESERVE_EN_CU_9 = 0x1f8f # macro -mmSPI_RESOURCE_RESERVE_EN_CU_9_BASE_IDX = 0 # macro -mmSPI_COMPUTE_WF_CTX_SAVE = 0x1f9c # macro -mmSPI_COMPUTE_WF_CTX_SAVE_BASE_IDX = 0 # macro -mmSPI_ARB_CNTL_0 = 0x1f9d # macro -mmSPI_ARB_CNTL_0_BASE_IDX = 0 # macro -mmSPI_FEATURE_CTRL = 0x1f9e # macro -mmSPI_FEATURE_CTRL_BASE_IDX = 0 # macro -mmSPI_SHADER_RSRC_LIMIT_CTRL = 0x1f9f # macro -mmSPI_SHADER_RSRC_LIMIT_CTRL_BASE_IDX = 0 # macro -mmCP_HPD_MES_ROQ_OFFSETS = 0x1fa4 # macro -mmCP_HPD_MES_ROQ_OFFSETS_BASE_IDX = 0 # macro -mmCP_HPD_ROQ_OFFSETS = 0x1fa4 # macro -mmCP_HPD_ROQ_OFFSETS_BASE_IDX = 0 # macro -mmCP_HPD_STATUS0 = 0x1fa5 # macro -mmCP_HPD_STATUS0_BASE_IDX = 0 # macro -mmCP_HPD_UTCL1_CNTL = 0x1fa6 # macro -mmCP_HPD_UTCL1_CNTL_BASE_IDX = 0 # macro -mmCP_HPD_UTCL1_ERROR = 0x1fa7 # macro -mmCP_HPD_UTCL1_ERROR_BASE_IDX = 0 # macro -mmCP_HPD_UTCL1_ERROR_ADDR = 0x1fa8 # macro -mmCP_HPD_UTCL1_ERROR_ADDR_BASE_IDX = 0 # macro -mmCP_MQD_BASE_ADDR = 0x1fa9 # macro -mmCP_MQD_BASE_ADDR_BASE_IDX = 0 # macro -mmCP_MQD_BASE_ADDR_HI = 0x1faa # macro -mmCP_MQD_BASE_ADDR_HI_BASE_IDX = 0 # macro -mmCP_HQD_ACTIVE = 0x1fab # macro -mmCP_HQD_ACTIVE_BASE_IDX = 0 # macro -mmCP_HQD_VMID = 0x1fac # macro -mmCP_HQD_VMID_BASE_IDX = 0 # macro -mmCP_HQD_PERSISTENT_STATE = 0x1fad # macro -mmCP_HQD_PERSISTENT_STATE_BASE_IDX = 0 # macro -mmCP_HQD_PIPE_PRIORITY = 0x1fae # macro -mmCP_HQD_PIPE_PRIORITY_BASE_IDX = 0 # macro -mmCP_HQD_QUEUE_PRIORITY = 0x1faf # macro -mmCP_HQD_QUEUE_PRIORITY_BASE_IDX = 0 # macro -mmCP_HQD_QUANTUM = 0x1fb0 # macro -mmCP_HQD_QUANTUM_BASE_IDX = 0 # macro -mmCP_HQD_PQ_BASE = 0x1fb1 # macro -mmCP_HQD_PQ_BASE_BASE_IDX = 0 # macro -mmCP_HQD_PQ_BASE_HI = 0x1fb2 # macro -mmCP_HQD_PQ_BASE_HI_BASE_IDX = 0 # macro -mmCP_HQD_PQ_RPTR = 0x1fb3 # macro -mmCP_HQD_PQ_RPTR_BASE_IDX = 0 # macro -mmCP_HQD_PQ_RPTR_REPORT_ADDR = 0x1fb4 # macro -mmCP_HQD_PQ_RPTR_REPORT_ADDR_BASE_IDX = 0 # macro -mmCP_HQD_PQ_RPTR_REPORT_ADDR_HI = 0x1fb5 # macro -mmCP_HQD_PQ_RPTR_REPORT_ADDR_HI_BASE_IDX = 0 # macro -mmCP_HQD_PQ_WPTR_POLL_ADDR = 0x1fb6 # macro -mmCP_HQD_PQ_WPTR_POLL_ADDR_BASE_IDX = 0 # macro -mmCP_HQD_PQ_WPTR_POLL_ADDR_HI = 0x1fb7 # macro -mmCP_HQD_PQ_WPTR_POLL_ADDR_HI_BASE_IDX = 0 # macro -mmCP_HQD_PQ_DOORBELL_CONTROL = 0x1fb8 # macro -mmCP_HQD_PQ_DOORBELL_CONTROL_BASE_IDX = 0 # macro -mmCP_HQD_PQ_CONTROL = 0x1fba # macro -mmCP_HQD_PQ_CONTROL_BASE_IDX = 0 # macro -mmCP_HQD_IB_BASE_ADDR = 0x1fbb # macro -mmCP_HQD_IB_BASE_ADDR_BASE_IDX = 0 # macro -mmCP_HQD_IB_BASE_ADDR_HI = 0x1fbc # macro -mmCP_HQD_IB_BASE_ADDR_HI_BASE_IDX = 0 # macro -mmCP_HQD_IB_RPTR = 0x1fbd # macro -mmCP_HQD_IB_RPTR_BASE_IDX = 0 # macro -mmCP_HQD_IB_CONTROL = 0x1fbe # macro -mmCP_HQD_IB_CONTROL_BASE_IDX = 0 # macro -mmCP_HQD_IQ_TIMER = 0x1fbf # macro -mmCP_HQD_IQ_TIMER_BASE_IDX = 0 # macro -mmCP_HQD_IQ_RPTR = 0x1fc0 # macro -mmCP_HQD_IQ_RPTR_BASE_IDX = 0 # macro -mmCP_HQD_DEQUEUE_REQUEST = 0x1fc1 # macro -mmCP_HQD_DEQUEUE_REQUEST_BASE_IDX = 0 # macro -mmCP_HQD_DMA_OFFLOAD = 0x1fc2 # macro -mmCP_HQD_DMA_OFFLOAD_BASE_IDX = 0 # macro -mmCP_HQD_OFFLOAD = 0x1fc2 # macro -mmCP_HQD_OFFLOAD_BASE_IDX = 0 # macro -mmCP_HQD_SEMA_CMD = 0x1fc3 # macro -mmCP_HQD_SEMA_CMD_BASE_IDX = 0 # macro -mmCP_HQD_MSG_TYPE = 0x1fc4 # macro -mmCP_HQD_MSG_TYPE_BASE_IDX = 0 # macro -mmCP_HQD_ATOMIC0_PREOP_LO = 0x1fc5 # macro -mmCP_HQD_ATOMIC0_PREOP_LO_BASE_IDX = 0 # macro -mmCP_HQD_ATOMIC0_PREOP_HI = 0x1fc6 # macro -mmCP_HQD_ATOMIC0_PREOP_HI_BASE_IDX = 0 # macro -mmCP_HQD_ATOMIC1_PREOP_LO = 0x1fc7 # macro -mmCP_HQD_ATOMIC1_PREOP_LO_BASE_IDX = 0 # macro -mmCP_HQD_ATOMIC1_PREOP_HI = 0x1fc8 # macro -mmCP_HQD_ATOMIC1_PREOP_HI_BASE_IDX = 0 # macro -mmCP_HQD_HQ_SCHEDULER0 = 0x1fc9 # macro -mmCP_HQD_HQ_SCHEDULER0_BASE_IDX = 0 # macro -mmCP_HQD_HQ_STATUS0 = 0x1fc9 # macro -mmCP_HQD_HQ_STATUS0_BASE_IDX = 0 # macro -mmCP_HQD_HQ_CONTROL0 = 0x1fca # macro -mmCP_HQD_HQ_CONTROL0_BASE_IDX = 0 # macro -mmCP_HQD_HQ_SCHEDULER1 = 0x1fca # macro -mmCP_HQD_HQ_SCHEDULER1_BASE_IDX = 0 # macro -mmCP_MQD_CONTROL = 0x1fcb # macro -mmCP_MQD_CONTROL_BASE_IDX = 0 # macro -mmCP_HQD_HQ_STATUS1 = 0x1fcc # macro -mmCP_HQD_HQ_STATUS1_BASE_IDX = 0 # macro -mmCP_HQD_HQ_CONTROL1 = 0x1fcd # macro -mmCP_HQD_HQ_CONTROL1_BASE_IDX = 0 # macro -mmCP_HQD_EOP_BASE_ADDR = 0x1fce # macro -mmCP_HQD_EOP_BASE_ADDR_BASE_IDX = 0 # macro -mmCP_HQD_EOP_BASE_ADDR_HI = 0x1fcf # macro -mmCP_HQD_EOP_BASE_ADDR_HI_BASE_IDX = 0 # macro -mmCP_HQD_EOP_CONTROL = 0x1fd0 # macro -mmCP_HQD_EOP_CONTROL_BASE_IDX = 0 # macro -mmCP_HQD_EOP_RPTR = 0x1fd1 # macro -mmCP_HQD_EOP_RPTR_BASE_IDX = 0 # macro -mmCP_HQD_EOP_WPTR = 0x1fd2 # macro -mmCP_HQD_EOP_WPTR_BASE_IDX = 0 # macro -mmCP_HQD_EOP_EVENTS = 0x1fd3 # macro -mmCP_HQD_EOP_EVENTS_BASE_IDX = 0 # macro -mmCP_HQD_CTX_SAVE_BASE_ADDR_LO = 0x1fd4 # macro -mmCP_HQD_CTX_SAVE_BASE_ADDR_LO_BASE_IDX = 0 # macro -mmCP_HQD_CTX_SAVE_BASE_ADDR_HI = 0x1fd5 # macro -mmCP_HQD_CTX_SAVE_BASE_ADDR_HI_BASE_IDX = 0 # macro -mmCP_HQD_CTX_SAVE_CONTROL = 0x1fd6 # macro -mmCP_HQD_CTX_SAVE_CONTROL_BASE_IDX = 0 # macro -mmCP_HQD_CNTL_STACK_OFFSET = 0x1fd7 # macro -mmCP_HQD_CNTL_STACK_OFFSET_BASE_IDX = 0 # macro -mmCP_HQD_CNTL_STACK_SIZE = 0x1fd8 # macro -mmCP_HQD_CNTL_STACK_SIZE_BASE_IDX = 0 # macro -mmCP_HQD_WG_STATE_OFFSET = 0x1fd9 # macro -mmCP_HQD_WG_STATE_OFFSET_BASE_IDX = 0 # macro -mmCP_HQD_CTX_SAVE_SIZE = 0x1fda # macro -mmCP_HQD_CTX_SAVE_SIZE_BASE_IDX = 0 # macro -mmCP_HQD_GDS_RESOURCE_STATE = 0x1fdb # macro -mmCP_HQD_GDS_RESOURCE_STATE_BASE_IDX = 0 # macro -mmCP_HQD_ERROR = 0x1fdc # macro -mmCP_HQD_ERROR_BASE_IDX = 0 # macro -mmCP_HQD_EOP_WPTR_MEM = 0x1fdd # macro -mmCP_HQD_EOP_WPTR_MEM_BASE_IDX = 0 # macro -mmCP_HQD_AQL_CONTROL = 0x1fde # macro -mmCP_HQD_AQL_CONTROL_BASE_IDX = 0 # macro -mmCP_HQD_PQ_WPTR_LO = 0x1fdf # macro -mmCP_HQD_PQ_WPTR_LO_BASE_IDX = 0 # macro -mmCP_HQD_PQ_WPTR_HI = 0x1fe0 # macro -mmCP_HQD_PQ_WPTR_HI_BASE_IDX = 0 # macro -mmCP_HQD_SUSPEND_CNTL_STACK_OFFSET = 0x1fe1 # macro -mmCP_HQD_SUSPEND_CNTL_STACK_OFFSET_BASE_IDX = 0 # macro -mmCP_HQD_SUSPEND_CNTL_STACK_DW_CNT = 0x1fe2 # macro -mmCP_HQD_SUSPEND_CNTL_STACK_DW_CNT_BASE_IDX = 0 # macro -mmCP_HQD_SUSPEND_WG_STATE_OFFSET = 0x1fe3 # macro -mmCP_HQD_SUSPEND_WG_STATE_OFFSET_BASE_IDX = 0 # macro -mmCP_HQD_DDID_RPTR = 0x1fe4 # macro -mmCP_HQD_DDID_RPTR_BASE_IDX = 0 # macro -mmCP_HQD_DDID_WPTR = 0x1fe5 # macro -mmCP_HQD_DDID_WPTR_BASE_IDX = 0 # macro -mmCP_HQD_DDID_INFLIGHT_COUNT = 0x1fe6 # macro -mmCP_HQD_DDID_INFLIGHT_COUNT_BASE_IDX = 0 # macro -mmCP_HQD_DDID_DELTA_RPT_COUNT = 0x1fe7 # macro -mmCP_HQD_DDID_DELTA_RPT_COUNT_BASE_IDX = 0 # macro -mmCP_HQD_DEQUEUE_STATUS = 0x1fe8 # macro -mmCP_HQD_DEQUEUE_STATUS_BASE_IDX = 0 # macro -mmDIDT_IND_INDEX = 0x2020 # macro -mmDIDT_IND_INDEX_BASE_IDX = 0 # macro -mmDIDT_IND_DATA = 0x2021 # macro -mmDIDT_IND_DATA_BASE_IDX = 0 # macro -mmDIDT_INDEX_AUTO_INCR_EN = 0x2022 # macro -mmDIDT_INDEX_AUTO_INCR_EN_BASE_IDX = 0 # macro -mmGC_CAC_CTRL_1 = 0x2024 # macro -mmGC_CAC_CTRL_1_BASE_IDX = 0 # macro -mmGC_CAC_CTRL_2 = 0x2025 # macro -mmGC_CAC_CTRL_2_BASE_IDX = 0 # macro -mmGC_CAC_AGGR_LOWER = 0x2026 # macro -mmGC_CAC_AGGR_LOWER_BASE_IDX = 0 # macro -mmGC_CAC_AGGR_UPPER = 0x2027 # macro -mmGC_CAC_AGGR_UPPER_BASE_IDX = 0 # macro -mmGC_CAC_SOFT_CTRL = 0x202a # macro -mmGC_CAC_SOFT_CTRL_BASE_IDX = 0 # macro -mmGC_EDC_CTRL = 0x202b # macro -mmGC_EDC_CTRL_BASE_IDX = 0 # macro -mmGC_EDC_THRESHOLD = 0x202c # macro -mmGC_EDC_THRESHOLD_BASE_IDX = 0 # macro -mmGC_EDC_STATUS = 0x202d # macro -mmGC_EDC_STATUS_BASE_IDX = 0 # macro -mmGC_EDC_OVERFLOW = 0x202e # macro -mmGC_EDC_OVERFLOW_BASE_IDX = 0 # macro -mmGC_EDC_ROLLING_POWER_DELTA = 0x202f # macro -mmGC_EDC_ROLLING_POWER_DELTA_BASE_IDX = 0 # macro -mmGC_THROTTLE_CTRL = 0x2030 # macro -mmGC_THROTTLE_CTRL_BASE_IDX = 0 # macro -mmGC_THROTTLE_CTRL1 = 0x2031 # macro -mmGC_THROTTLE_CTRL1_BASE_IDX = 0 # macro -mmGC_THROTTLE_STATUS = 0x2032 # macro -mmGC_THROTTLE_STATUS_BASE_IDX = 0 # macro -mmEDC_PERF_COUNTER = 0x2033 # macro -mmEDC_PERF_COUNTER_BASE_IDX = 0 # macro -mmPCC_PERF_COUNTER = 0x2034 # macro -mmPCC_PERF_COUNTER_BASE_IDX = 0 # macro -mmPWRBRK_PERF_COUNTER = 0x2035 # macro -mmPWRBRK_PERF_COUNTER_BASE_IDX = 0 # macro -mmGC_EDC_STRETCH_CTRL = 0x2036 # macro -mmGC_EDC_STRETCH_CTRL_BASE_IDX = 0 # macro -mmGC_EDC_STRETCH_THRESHOLD = 0x2037 # macro -mmGC_EDC_STRETCH_THRESHOLD_BASE_IDX = 0 # macro -mmEDC_HYSTERESIS_CNTL = 0x2038 # macro -mmEDC_HYSTERESIS_CNTL_BASE_IDX = 0 # macro -mmEDC_HYSTERESIS_STAT = 0x2039 # macro -mmEDC_HYSTERESIS_STAT_BASE_IDX = 0 # macro -mmGC_CAC_IND_INDEX = 0x203c # macro -mmGC_CAC_IND_INDEX_BASE_IDX = 0 # macro -mmGC_CAC_IND_DATA = 0x203d # macro -mmGC_CAC_IND_DATA_BASE_IDX = 0 # macro -mmSE_CAC_IND_INDEX = 0x203e # macro -mmSE_CAC_IND_INDEX_BASE_IDX = 0 # macro -mmSE_CAC_IND_DATA = 0x203f # macro -mmSE_CAC_IND_DATA_BASE_IDX = 0 # macro -mmTCP_WATCH0_ADDR_H = 0x2040 # macro -mmTCP_WATCH0_ADDR_H_BASE_IDX = 0 # macro -mmTCP_WATCH0_ADDR_L = 0x2041 # macro -mmTCP_WATCH0_ADDR_L_BASE_IDX = 0 # macro -mmTCP_WATCH0_CNTL = 0x2042 # macro -mmTCP_WATCH0_CNTL_BASE_IDX = 0 # macro -mmTCP_WATCH1_ADDR_H = 0x2043 # macro -mmTCP_WATCH1_ADDR_H_BASE_IDX = 0 # macro -mmTCP_WATCH1_ADDR_L = 0x2044 # macro -mmTCP_WATCH1_ADDR_L_BASE_IDX = 0 # macro -mmTCP_WATCH1_CNTL = 0x2045 # macro -mmTCP_WATCH1_CNTL_BASE_IDX = 0 # macro -mmTCP_WATCH2_ADDR_H = 0x2046 # macro -mmTCP_WATCH2_ADDR_H_BASE_IDX = 0 # macro -mmTCP_WATCH2_ADDR_L = 0x2047 # macro -mmTCP_WATCH2_ADDR_L_BASE_IDX = 0 # macro -mmTCP_WATCH2_CNTL = 0x2048 # macro -mmTCP_WATCH2_CNTL_BASE_IDX = 0 # macro -mmTCP_WATCH3_ADDR_H = 0x2049 # macro -mmTCP_WATCH3_ADDR_H_BASE_IDX = 0 # macro -mmTCP_WATCH3_ADDR_L = 0x204a # macro -mmTCP_WATCH3_ADDR_L_BASE_IDX = 0 # macro -mmTCP_WATCH3_CNTL = 0x204b # macro -mmTCP_WATCH3_CNTL_BASE_IDX = 0 # macro -mmTCP_PERFCOUNTER_FILTER = 0x2059 # macro -mmTCP_PERFCOUNTER_FILTER_BASE_IDX = 0 # macro -mmTCP_PERFCOUNTER_FILTER_EN = 0x205a # macro -mmTCP_PERFCOUNTER_FILTER_EN_BASE_IDX = 0 # macro -mmTCP_PERFCOUNTER_FILTER2 = 0x205b # macro -mmTCP_PERFCOUNTER_FILTER2_BASE_IDX = 0 # macro -mmGDS_VMID0_BASE = 0x20a0 # macro -mmGDS_VMID0_BASE_BASE_IDX = 0 # macro -mmGDS_VMID0_SIZE = 0x20a1 # macro -mmGDS_VMID0_SIZE_BASE_IDX = 0 # macro -mmGDS_VMID1_BASE = 0x20a2 # macro -mmGDS_VMID1_BASE_BASE_IDX = 0 # macro -mmGDS_VMID1_SIZE = 0x20a3 # macro -mmGDS_VMID1_SIZE_BASE_IDX = 0 # macro -mmGDS_VMID2_BASE = 0x20a4 # macro -mmGDS_VMID2_BASE_BASE_IDX = 0 # macro -mmGDS_VMID2_SIZE = 0x20a5 # macro -mmGDS_VMID2_SIZE_BASE_IDX = 0 # macro -mmGDS_VMID3_BASE = 0x20a6 # macro -mmGDS_VMID3_BASE_BASE_IDX = 0 # macro -mmGDS_VMID3_SIZE = 0x20a7 # macro -mmGDS_VMID3_SIZE_BASE_IDX = 0 # macro -mmGDS_VMID4_BASE = 0x20a8 # macro -mmGDS_VMID4_BASE_BASE_IDX = 0 # macro -mmGDS_VMID4_SIZE = 0x20a9 # macro -mmGDS_VMID4_SIZE_BASE_IDX = 0 # macro -mmGDS_VMID5_BASE = 0x20aa # macro -mmGDS_VMID5_BASE_BASE_IDX = 0 # macro -mmGDS_VMID5_SIZE = 0x20ab # macro -mmGDS_VMID5_SIZE_BASE_IDX = 0 # macro -mmGDS_VMID6_BASE = 0x20ac # macro -mmGDS_VMID6_BASE_BASE_IDX = 0 # macro -mmGDS_VMID6_SIZE = 0x20ad # macro -mmGDS_VMID6_SIZE_BASE_IDX = 0 # macro -mmGDS_VMID7_BASE = 0x20ae # macro -mmGDS_VMID7_BASE_BASE_IDX = 0 # macro -mmGDS_VMID7_SIZE = 0x20af # macro -mmGDS_VMID7_SIZE_BASE_IDX = 0 # macro -mmGDS_VMID8_BASE = 0x20b0 # macro -mmGDS_VMID8_BASE_BASE_IDX = 0 # macro -mmGDS_VMID8_SIZE = 0x20b1 # macro -mmGDS_VMID8_SIZE_BASE_IDX = 0 # macro -mmGDS_VMID9_BASE = 0x20b2 # macro -mmGDS_VMID9_BASE_BASE_IDX = 0 # macro -mmGDS_VMID9_SIZE = 0x20b3 # macro -mmGDS_VMID9_SIZE_BASE_IDX = 0 # macro -mmGDS_VMID10_BASE = 0x20b4 # macro -mmGDS_VMID10_BASE_BASE_IDX = 0 # macro -mmGDS_VMID10_SIZE = 0x20b5 # macro -mmGDS_VMID10_SIZE_BASE_IDX = 0 # macro -mmGDS_VMID11_BASE = 0x20b6 # macro -mmGDS_VMID11_BASE_BASE_IDX = 0 # macro -mmGDS_VMID11_SIZE = 0x20b7 # macro -mmGDS_VMID11_SIZE_BASE_IDX = 0 # macro -mmGDS_VMID12_BASE = 0x20b8 # macro -mmGDS_VMID12_BASE_BASE_IDX = 0 # macro -mmGDS_VMID12_SIZE = 0x20b9 # macro -mmGDS_VMID12_SIZE_BASE_IDX = 0 # macro -mmGDS_VMID13_BASE = 0x20ba # macro -mmGDS_VMID13_BASE_BASE_IDX = 0 # macro -mmGDS_VMID13_SIZE = 0x20bb # macro -mmGDS_VMID13_SIZE_BASE_IDX = 0 # macro -mmGDS_VMID14_BASE = 0x20bc # macro -mmGDS_VMID14_BASE_BASE_IDX = 0 # macro -mmGDS_VMID14_SIZE = 0x20bd # macro -mmGDS_VMID14_SIZE_BASE_IDX = 0 # macro -mmGDS_VMID15_BASE = 0x20be # macro -mmGDS_VMID15_BASE_BASE_IDX = 0 # macro -mmGDS_VMID15_SIZE = 0x20bf # macro -mmGDS_VMID15_SIZE_BASE_IDX = 0 # macro -mmGDS_GWS_VMID0 = 0x20c0 # macro -mmGDS_GWS_VMID0_BASE_IDX = 0 # macro -mmGDS_GWS_VMID1 = 0x20c1 # macro -mmGDS_GWS_VMID1_BASE_IDX = 0 # macro -mmGDS_GWS_VMID2 = 0x20c2 # macro -mmGDS_GWS_VMID2_BASE_IDX = 0 # macro -mmGDS_GWS_VMID3 = 0x20c3 # macro -mmGDS_GWS_VMID3_BASE_IDX = 0 # macro -mmGDS_GWS_VMID4 = 0x20c4 # macro -mmGDS_GWS_VMID4_BASE_IDX = 0 # macro -mmGDS_GWS_VMID5 = 0x20c5 # macro -mmGDS_GWS_VMID5_BASE_IDX = 0 # macro -mmGDS_GWS_VMID6 = 0x20c6 # macro -mmGDS_GWS_VMID6_BASE_IDX = 0 # macro -mmGDS_GWS_VMID7 = 0x20c7 # macro -mmGDS_GWS_VMID7_BASE_IDX = 0 # macro -mmGDS_GWS_VMID8 = 0x20c8 # macro -mmGDS_GWS_VMID8_BASE_IDX = 0 # macro -mmGDS_GWS_VMID9 = 0x20c9 # macro -mmGDS_GWS_VMID9_BASE_IDX = 0 # macro -mmGDS_GWS_VMID10 = 0x20ca # macro -mmGDS_GWS_VMID10_BASE_IDX = 0 # macro -mmGDS_GWS_VMID11 = 0x20cb # macro -mmGDS_GWS_VMID11_BASE_IDX = 0 # macro -mmGDS_GWS_VMID12 = 0x20cc # macro -mmGDS_GWS_VMID12_BASE_IDX = 0 # macro -mmGDS_GWS_VMID13 = 0x20cd # macro -mmGDS_GWS_VMID13_BASE_IDX = 0 # macro -mmGDS_GWS_VMID14 = 0x20ce # macro -mmGDS_GWS_VMID14_BASE_IDX = 0 # macro -mmGDS_GWS_VMID15 = 0x20cf # macro -mmGDS_GWS_VMID15_BASE_IDX = 0 # macro -mmGDS_OA_VMID0 = 0x20d0 # macro -mmGDS_OA_VMID0_BASE_IDX = 0 # macro -mmGDS_OA_VMID1 = 0x20d1 # macro -mmGDS_OA_VMID1_BASE_IDX = 0 # macro -mmGDS_OA_VMID2 = 0x20d2 # macro -mmGDS_OA_VMID2_BASE_IDX = 0 # macro -mmGDS_OA_VMID3 = 0x20d3 # macro -mmGDS_OA_VMID3_BASE_IDX = 0 # macro -mmGDS_OA_VMID4 = 0x20d4 # macro -mmGDS_OA_VMID4_BASE_IDX = 0 # macro -mmGDS_OA_VMID5 = 0x20d5 # macro -mmGDS_OA_VMID5_BASE_IDX = 0 # macro -mmGDS_OA_VMID6 = 0x20d6 # macro -mmGDS_OA_VMID6_BASE_IDX = 0 # macro -mmGDS_OA_VMID7 = 0x20d7 # macro -mmGDS_OA_VMID7_BASE_IDX = 0 # macro -mmGDS_OA_VMID8 = 0x20d8 # macro -mmGDS_OA_VMID8_BASE_IDX = 0 # macro -mmGDS_OA_VMID9 = 0x20d9 # macro -mmGDS_OA_VMID9_BASE_IDX = 0 # macro -mmGDS_OA_VMID10 = 0x20da # macro -mmGDS_OA_VMID10_BASE_IDX = 0 # macro -mmGDS_OA_VMID11 = 0x20db # macro -mmGDS_OA_VMID11_BASE_IDX = 0 # macro -mmGDS_OA_VMID12 = 0x20dc # macro -mmGDS_OA_VMID12_BASE_IDX = 0 # macro -mmGDS_OA_VMID13 = 0x20dd # macro -mmGDS_OA_VMID13_BASE_IDX = 0 # macro -mmGDS_OA_VMID14 = 0x20de # macro -mmGDS_OA_VMID14_BASE_IDX = 0 # macro -mmGDS_OA_VMID15 = 0x20df # macro -mmGDS_OA_VMID15_BASE_IDX = 0 # macro -mmGDS_GWS_RESET0 = 0x20e4 # macro -mmGDS_GWS_RESET0_BASE_IDX = 0 # macro -mmGDS_GWS_RESET1 = 0x20e5 # macro -mmGDS_GWS_RESET1_BASE_IDX = 0 # macro -mmGDS_GWS_RESOURCE_RESET = 0x20e6 # macro -mmGDS_GWS_RESOURCE_RESET_BASE_IDX = 0 # macro -mmGDS_COMPUTE_MAX_WAVE_ID = 0x20e8 # macro -mmGDS_COMPUTE_MAX_WAVE_ID_BASE_IDX = 0 # macro -mmGDS_OA_RESET_MASK = 0x20e9 # macro -mmGDS_OA_RESET_MASK_BASE_IDX = 0 # macro -mmGDS_OA_RESET = 0x20ea # macro -mmGDS_OA_RESET_BASE_IDX = 0 # macro -mmGDS_ENHANCE2 = 0x20eb # macro -mmGDS_ENHANCE2_BASE_IDX = 0 # macro -mmGDS_OA_CGPG_RESTORE = 0x20ec # macro -mmGDS_OA_CGPG_RESTORE_BASE_IDX = 0 # macro -mmGDS_CS_CTXSW_STATUS = 0x20ed # macro -mmGDS_CS_CTXSW_STATUS_BASE_IDX = 0 # macro -mmGDS_CS_CTXSW_CNT0 = 0x20ee # macro -mmGDS_CS_CTXSW_CNT0_BASE_IDX = 0 # macro -mmGDS_CS_CTXSW_CNT1 = 0x20ef # macro -mmGDS_CS_CTXSW_CNT1_BASE_IDX = 0 # macro -mmGDS_CS_CTXSW_CNT2 = 0x20f0 # macro -mmGDS_CS_CTXSW_CNT2_BASE_IDX = 0 # macro -mmGDS_CS_CTXSW_CNT3 = 0x20f1 # macro -mmGDS_CS_CTXSW_CNT3_BASE_IDX = 0 # macro -mmGDS_GFX_CTXSW_STATUS = 0x20f2 # macro -mmGDS_GFX_CTXSW_STATUS_BASE_IDX = 0 # macro -mmGDS_VS_CTXSW_CNT0 = 0x20f3 # macro -mmGDS_VS_CTXSW_CNT0_BASE_IDX = 0 # macro -mmGDS_VS_CTXSW_CNT1 = 0x20f4 # macro -mmGDS_VS_CTXSW_CNT1_BASE_IDX = 0 # macro -mmGDS_VS_CTXSW_CNT2 = 0x20f5 # macro -mmGDS_VS_CTXSW_CNT2_BASE_IDX = 0 # macro -mmGDS_VS_CTXSW_CNT3 = 0x20f6 # macro -mmGDS_VS_CTXSW_CNT3_BASE_IDX = 0 # macro -mmGDS_PS_CTXSW_CNT0 = 0x20f7 # macro -mmGDS_PS_CTXSW_CNT0_BASE_IDX = 0 # macro -mmGDS_PS_CTXSW_CNT1 = 0x20f8 # macro -mmGDS_PS_CTXSW_CNT1_BASE_IDX = 0 # macro -mmGDS_PS_CTXSW_CNT2 = 0x20f9 # macro -mmGDS_PS_CTXSW_CNT2_BASE_IDX = 0 # macro -mmGDS_PS_CTXSW_CNT3 = 0x20fa # macro -mmGDS_PS_CTXSW_CNT3_BASE_IDX = 0 # macro -mmGDS_PS_CTXSW_IDX = 0x20fb # macro -mmGDS_PS_CTXSW_IDX_BASE_IDX = 0 # macro -mmGDS_GS_CTXSW_CNT0 = 0x2117 # macro -mmGDS_GS_CTXSW_CNT0_BASE_IDX = 0 # macro -mmGDS_GS_CTXSW_CNT1 = 0x2118 # macro -mmGDS_GS_CTXSW_CNT1_BASE_IDX = 0 # macro -mmGDS_GS_CTXSW_CNT2 = 0x2119 # macro -mmGDS_GS_CTXSW_CNT2_BASE_IDX = 0 # macro -mmGDS_GS_CTXSW_CNT3 = 0x211a # macro -mmGDS_GS_CTXSW_CNT3_BASE_IDX = 0 # macro -mmGDS_MEMORY_CLEAN = 0x211f # macro -mmGDS_MEMORY_CLEAN_BASE_IDX = 0 # macro -mmDB_RENDER_CONTROL = 0x0000 # macro -mmDB_RENDER_CONTROL_BASE_IDX = 1 # macro -mmDB_COUNT_CONTROL = 0x0001 # macro -mmDB_COUNT_CONTROL_BASE_IDX = 1 # macro -mmDB_DEPTH_VIEW = 0x0002 # macro -mmDB_DEPTH_VIEW_BASE_IDX = 1 # macro -mmDB_RENDER_OVERRIDE = 0x0003 # macro -mmDB_RENDER_OVERRIDE_BASE_IDX = 1 # macro -mmDB_RENDER_OVERRIDE2 = 0x0004 # macro -mmDB_RENDER_OVERRIDE2_BASE_IDX = 1 # macro -mmDB_HTILE_DATA_BASE = 0x0005 # macro -mmDB_HTILE_DATA_BASE_BASE_IDX = 1 # macro -mmDB_DEPTH_SIZE_XY = 0x0007 # macro -mmDB_DEPTH_SIZE_XY_BASE_IDX = 1 # macro -mmDB_DEPTH_BOUNDS_MIN = 0x0008 # macro -mmDB_DEPTH_BOUNDS_MIN_BASE_IDX = 1 # macro -mmDB_DEPTH_BOUNDS_MAX = 0x0009 # macro -mmDB_DEPTH_BOUNDS_MAX_BASE_IDX = 1 # macro -mmDB_STENCIL_CLEAR = 0x000a # macro -mmDB_STENCIL_CLEAR_BASE_IDX = 1 # macro -mmDB_DEPTH_CLEAR = 0x000b # macro -mmDB_DEPTH_CLEAR_BASE_IDX = 1 # macro -mmPA_SC_SCREEN_SCISSOR_TL = 0x000c # macro -mmPA_SC_SCREEN_SCISSOR_TL_BASE_IDX = 1 # macro -mmPA_SC_SCREEN_SCISSOR_BR = 0x000d # macro -mmPA_SC_SCREEN_SCISSOR_BR_BASE_IDX = 1 # macro -mmDB_DFSM_CONTROL = 0x000e # macro -mmDB_DFSM_CONTROL_BASE_IDX = 1 # macro -mmDB_RESERVED_REG_2 = 0x000f # macro -mmDB_RESERVED_REG_2_BASE_IDX = 1 # macro -mmDB_Z_INFO = 0x0010 # macro -mmDB_Z_INFO_BASE_IDX = 1 # macro -mmDB_STENCIL_INFO = 0x0011 # macro -mmDB_STENCIL_INFO_BASE_IDX = 1 # macro -mmDB_Z_READ_BASE = 0x0012 # macro -mmDB_Z_READ_BASE_BASE_IDX = 1 # macro -mmDB_STENCIL_READ_BASE = 0x0013 # macro -mmDB_STENCIL_READ_BASE_BASE_IDX = 1 # macro -mmDB_Z_WRITE_BASE = 0x0014 # macro -mmDB_Z_WRITE_BASE_BASE_IDX = 1 # macro -mmDB_STENCIL_WRITE_BASE = 0x0015 # macro -mmDB_STENCIL_WRITE_BASE_BASE_IDX = 1 # macro -mmDB_RESERVED_REG_1 = 0x0016 # macro -mmDB_RESERVED_REG_1_BASE_IDX = 1 # macro -mmDB_RESERVED_REG_3 = 0x0017 # macro -mmDB_RESERVED_REG_3_BASE_IDX = 1 # macro -mmDB_VRS_OVERRIDE_CNTL = 0x0019 # macro -mmDB_VRS_OVERRIDE_CNTL_BASE_IDX = 1 # macro -mmDB_Z_READ_BASE_HI = 0x001a # macro -mmDB_Z_READ_BASE_HI_BASE_IDX = 1 # macro -mmDB_STENCIL_READ_BASE_HI = 0x001b # macro -mmDB_STENCIL_READ_BASE_HI_BASE_IDX = 1 # macro -mmDB_Z_WRITE_BASE_HI = 0x001c # macro -mmDB_Z_WRITE_BASE_HI_BASE_IDX = 1 # macro -mmDB_STENCIL_WRITE_BASE_HI = 0x001d # macro -mmDB_STENCIL_WRITE_BASE_HI_BASE_IDX = 1 # macro -mmDB_HTILE_DATA_BASE_HI = 0x001e # macro -mmDB_HTILE_DATA_BASE_HI_BASE_IDX = 1 # macro -mmDB_RMI_L2_CACHE_CONTROL = 0x001f # macro -mmDB_RMI_L2_CACHE_CONTROL_BASE_IDX = 1 # macro -mmTA_BC_BASE_ADDR = 0x0020 # macro -mmTA_BC_BASE_ADDR_BASE_IDX = 1 # macro -mmTA_BC_BASE_ADDR_HI = 0x0021 # macro -mmTA_BC_BASE_ADDR_HI_BASE_IDX = 1 # macro -mmCOHER_DEST_BASE_HI_0 = 0x007a # macro -mmCOHER_DEST_BASE_HI_0_BASE_IDX = 1 # macro -mmCOHER_DEST_BASE_HI_1 = 0x007b # macro -mmCOHER_DEST_BASE_HI_1_BASE_IDX = 1 # macro -mmCOHER_DEST_BASE_HI_2 = 0x007c # macro -mmCOHER_DEST_BASE_HI_2_BASE_IDX = 1 # macro -mmCOHER_DEST_BASE_HI_3 = 0x007d # macro -mmCOHER_DEST_BASE_HI_3_BASE_IDX = 1 # macro -mmCOHER_DEST_BASE_2 = 0x007e # macro -mmCOHER_DEST_BASE_2_BASE_IDX = 1 # macro -mmCOHER_DEST_BASE_3 = 0x007f # macro -mmCOHER_DEST_BASE_3_BASE_IDX = 1 # macro -mmPA_SC_WINDOW_OFFSET = 0x0080 # macro -mmPA_SC_WINDOW_OFFSET_BASE_IDX = 1 # macro -mmPA_SC_WINDOW_SCISSOR_TL = 0x0081 # macro -mmPA_SC_WINDOW_SCISSOR_TL_BASE_IDX = 1 # macro -mmPA_SC_WINDOW_SCISSOR_BR = 0x0082 # macro -mmPA_SC_WINDOW_SCISSOR_BR_BASE_IDX = 1 # macro -mmPA_SC_CLIPRECT_RULE = 0x0083 # macro -mmPA_SC_CLIPRECT_RULE_BASE_IDX = 1 # macro -mmPA_SC_CLIPRECT_0_TL = 0x0084 # macro -mmPA_SC_CLIPRECT_0_TL_BASE_IDX = 1 # macro -mmPA_SC_CLIPRECT_0_BR = 0x0085 # macro -mmPA_SC_CLIPRECT_0_BR_BASE_IDX = 1 # macro -mmPA_SC_CLIPRECT_1_TL = 0x0086 # macro -mmPA_SC_CLIPRECT_1_TL_BASE_IDX = 1 # macro -mmPA_SC_CLIPRECT_1_BR = 0x0087 # macro -mmPA_SC_CLIPRECT_1_BR_BASE_IDX = 1 # macro -mmPA_SC_CLIPRECT_2_TL = 0x0088 # macro -mmPA_SC_CLIPRECT_2_TL_BASE_IDX = 1 # macro -mmPA_SC_CLIPRECT_2_BR = 0x0089 # macro -mmPA_SC_CLIPRECT_2_BR_BASE_IDX = 1 # macro -mmPA_SC_CLIPRECT_3_TL = 0x008a # macro -mmPA_SC_CLIPRECT_3_TL_BASE_IDX = 1 # macro -mmPA_SC_CLIPRECT_3_BR = 0x008b # macro -mmPA_SC_CLIPRECT_3_BR_BASE_IDX = 1 # macro -mmPA_SC_EDGERULE = 0x008c # macro -mmPA_SC_EDGERULE_BASE_IDX = 1 # macro -mmPA_SU_HARDWARE_SCREEN_OFFSET = 0x008d # macro -mmPA_SU_HARDWARE_SCREEN_OFFSET_BASE_IDX = 1 # macro -mmCB_TARGET_MASK = 0x008e # macro -mmCB_TARGET_MASK_BASE_IDX = 1 # macro -mmCB_SHADER_MASK = 0x008f # macro -mmCB_SHADER_MASK_BASE_IDX = 1 # macro -mmPA_SC_GENERIC_SCISSOR_TL = 0x0090 # macro -mmPA_SC_GENERIC_SCISSOR_TL_BASE_IDX = 1 # macro -mmPA_SC_GENERIC_SCISSOR_BR = 0x0091 # macro -mmPA_SC_GENERIC_SCISSOR_BR_BASE_IDX = 1 # macro -mmCOHER_DEST_BASE_0 = 0x0092 # macro -mmCOHER_DEST_BASE_0_BASE_IDX = 1 # macro -mmCOHER_DEST_BASE_1 = 0x0093 # macro -mmCOHER_DEST_BASE_1_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_0_TL = 0x0094 # macro -mmPA_SC_VPORT_SCISSOR_0_TL_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_0_BR = 0x0095 # macro -mmPA_SC_VPORT_SCISSOR_0_BR_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_1_TL = 0x0096 # macro -mmPA_SC_VPORT_SCISSOR_1_TL_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_1_BR = 0x0097 # macro -mmPA_SC_VPORT_SCISSOR_1_BR_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_2_TL = 0x0098 # macro -mmPA_SC_VPORT_SCISSOR_2_TL_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_2_BR = 0x0099 # macro -mmPA_SC_VPORT_SCISSOR_2_BR_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_3_TL = 0x009a # macro -mmPA_SC_VPORT_SCISSOR_3_TL_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_3_BR = 0x009b # macro -mmPA_SC_VPORT_SCISSOR_3_BR_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_4_TL = 0x009c # macro -mmPA_SC_VPORT_SCISSOR_4_TL_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_4_BR = 0x009d # macro -mmPA_SC_VPORT_SCISSOR_4_BR_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_5_TL = 0x009e # macro -mmPA_SC_VPORT_SCISSOR_5_TL_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_5_BR = 0x009f # macro -mmPA_SC_VPORT_SCISSOR_5_BR_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_6_TL = 0x00a0 # macro -mmPA_SC_VPORT_SCISSOR_6_TL_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_6_BR = 0x00a1 # macro -mmPA_SC_VPORT_SCISSOR_6_BR_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_7_TL = 0x00a2 # macro -mmPA_SC_VPORT_SCISSOR_7_TL_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_7_BR = 0x00a3 # macro -mmPA_SC_VPORT_SCISSOR_7_BR_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_8_TL = 0x00a4 # macro -mmPA_SC_VPORT_SCISSOR_8_TL_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_8_BR = 0x00a5 # macro -mmPA_SC_VPORT_SCISSOR_8_BR_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_9_TL = 0x00a6 # macro -mmPA_SC_VPORT_SCISSOR_9_TL_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_9_BR = 0x00a7 # macro -mmPA_SC_VPORT_SCISSOR_9_BR_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_10_TL = 0x00a8 # macro -mmPA_SC_VPORT_SCISSOR_10_TL_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_10_BR = 0x00a9 # macro -mmPA_SC_VPORT_SCISSOR_10_BR_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_11_TL = 0x00aa # macro -mmPA_SC_VPORT_SCISSOR_11_TL_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_11_BR = 0x00ab # macro -mmPA_SC_VPORT_SCISSOR_11_BR_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_12_TL = 0x00ac # macro -mmPA_SC_VPORT_SCISSOR_12_TL_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_12_BR = 0x00ad # macro -mmPA_SC_VPORT_SCISSOR_12_BR_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_13_TL = 0x00ae # macro -mmPA_SC_VPORT_SCISSOR_13_TL_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_13_BR = 0x00af # macro -mmPA_SC_VPORT_SCISSOR_13_BR_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_14_TL = 0x00b0 # macro -mmPA_SC_VPORT_SCISSOR_14_TL_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_14_BR = 0x00b1 # macro -mmPA_SC_VPORT_SCISSOR_14_BR_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_15_TL = 0x00b2 # macro -mmPA_SC_VPORT_SCISSOR_15_TL_BASE_IDX = 1 # macro -mmPA_SC_VPORT_SCISSOR_15_BR = 0x00b3 # macro -mmPA_SC_VPORT_SCISSOR_15_BR_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMIN_0 = 0x00b4 # macro -mmPA_SC_VPORT_ZMIN_0_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMAX_0 = 0x00b5 # macro -mmPA_SC_VPORT_ZMAX_0_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMIN_1 = 0x00b6 # macro -mmPA_SC_VPORT_ZMIN_1_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMAX_1 = 0x00b7 # macro -mmPA_SC_VPORT_ZMAX_1_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMIN_2 = 0x00b8 # macro -mmPA_SC_VPORT_ZMIN_2_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMAX_2 = 0x00b9 # macro -mmPA_SC_VPORT_ZMAX_2_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMIN_3 = 0x00ba # macro -mmPA_SC_VPORT_ZMIN_3_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMAX_3 = 0x00bb # macro -mmPA_SC_VPORT_ZMAX_3_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMIN_4 = 0x00bc # macro -mmPA_SC_VPORT_ZMIN_4_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMAX_4 = 0x00bd # macro -mmPA_SC_VPORT_ZMAX_4_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMIN_5 = 0x00be # macro -mmPA_SC_VPORT_ZMIN_5_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMAX_5 = 0x00bf # macro -mmPA_SC_VPORT_ZMAX_5_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMIN_6 = 0x00c0 # macro -mmPA_SC_VPORT_ZMIN_6_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMAX_6 = 0x00c1 # macro -mmPA_SC_VPORT_ZMAX_6_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMIN_7 = 0x00c2 # macro -mmPA_SC_VPORT_ZMIN_7_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMAX_7 = 0x00c3 # macro -mmPA_SC_VPORT_ZMAX_7_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMIN_8 = 0x00c4 # macro -mmPA_SC_VPORT_ZMIN_8_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMAX_8 = 0x00c5 # macro -mmPA_SC_VPORT_ZMAX_8_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMIN_9 = 0x00c6 # macro -mmPA_SC_VPORT_ZMIN_9_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMAX_9 = 0x00c7 # macro -mmPA_SC_VPORT_ZMAX_9_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMIN_10 = 0x00c8 # macro -mmPA_SC_VPORT_ZMIN_10_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMAX_10 = 0x00c9 # macro -mmPA_SC_VPORT_ZMAX_10_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMIN_11 = 0x00ca # macro -mmPA_SC_VPORT_ZMIN_11_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMAX_11 = 0x00cb # macro -mmPA_SC_VPORT_ZMAX_11_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMIN_12 = 0x00cc # macro -mmPA_SC_VPORT_ZMIN_12_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMAX_12 = 0x00cd # macro -mmPA_SC_VPORT_ZMAX_12_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMIN_13 = 0x00ce # macro -mmPA_SC_VPORT_ZMIN_13_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMAX_13 = 0x00cf # macro -mmPA_SC_VPORT_ZMAX_13_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMIN_14 = 0x00d0 # macro -mmPA_SC_VPORT_ZMIN_14_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMAX_14 = 0x00d1 # macro -mmPA_SC_VPORT_ZMAX_14_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMIN_15 = 0x00d2 # macro -mmPA_SC_VPORT_ZMIN_15_BASE_IDX = 1 # macro -mmPA_SC_VPORT_ZMAX_15 = 0x00d3 # macro -mmPA_SC_VPORT_ZMAX_15_BASE_IDX = 1 # macro -mmPA_SC_RASTER_CONFIG = 0x00d4 # macro -mmPA_SC_RASTER_CONFIG_BASE_IDX = 1 # macro -mmPA_SC_RASTER_CONFIG_1 = 0x00d5 # macro -mmPA_SC_RASTER_CONFIG_1_BASE_IDX = 1 # macro -mmPA_SC_SCREEN_EXTENT_CONTROL = 0x00d6 # macro -mmPA_SC_SCREEN_EXTENT_CONTROL_BASE_IDX = 1 # macro -mmPA_SC_TILE_STEERING_OVERRIDE = 0x00d7 # macro -mmPA_SC_TILE_STEERING_OVERRIDE_BASE_IDX = 1 # macro -mmCP_PERFMON_CNTX_CNTL = 0x00d8 # macro -mmCP_PERFMON_CNTX_CNTL_BASE_IDX = 1 # macro -mmCP_PIPEID = 0x00d9 # macro -mmCP_PIPEID_BASE_IDX = 1 # macro -mmCP_RINGID = 0x00d9 # macro -mmCP_RINGID_BASE_IDX = 1 # macro -mmCP_VMID = 0x00da # macro -mmCP_VMID_BASE_IDX = 1 # macro -mmCONTEXT_RESERVED_REG0 = 0x00db # macro -mmCONTEXT_RESERVED_REG0_BASE_IDX = 1 # macro -mmCONTEXT_RESERVED_REG1 = 0x00dc # macro -mmCONTEXT_RESERVED_REG1_BASE_IDX = 1 # macro -mmVGT_MAX_VTX_INDX = 0x0100 # macro -mmVGT_MAX_VTX_INDX_BASE_IDX = 1 # macro -mmVGT_MIN_VTX_INDX = 0x0101 # macro -mmVGT_MIN_VTX_INDX_BASE_IDX = 1 # macro -mmVGT_INDX_OFFSET = 0x0102 # macro -mmVGT_INDX_OFFSET_BASE_IDX = 1 # macro -mmVGT_MULTI_PRIM_IB_RESET_INDX = 0x0103 # macro -mmVGT_MULTI_PRIM_IB_RESET_INDX_BASE_IDX = 1 # macro -mmCB_RMI_GL2_CACHE_CONTROL = 0x0104 # macro -mmCB_RMI_GL2_CACHE_CONTROL_BASE_IDX = 1 # macro -mmCB_BLEND_RED = 0x0105 # macro -mmCB_BLEND_RED_BASE_IDX = 1 # macro -mmCB_BLEND_GREEN = 0x0106 # macro -mmCB_BLEND_GREEN_BASE_IDX = 1 # macro -mmCB_BLEND_BLUE = 0x0107 # macro -mmCB_BLEND_BLUE_BASE_IDX = 1 # macro -mmCB_BLEND_ALPHA = 0x0108 # macro -mmCB_BLEND_ALPHA_BASE_IDX = 1 # macro -mmCB_DCC_CONTROL = 0x0109 # macro -mmCB_DCC_CONTROL_BASE_IDX = 1 # macro -mmCB_COVERAGE_OUT_CONTROL = 0x010a # macro -mmCB_COVERAGE_OUT_CONTROL_BASE_IDX = 1 # macro -mmDB_STENCIL_CONTROL = 0x010b # macro -mmDB_STENCIL_CONTROL_BASE_IDX = 1 # macro -mmDB_STENCILREFMASK = 0x010c # macro -mmDB_STENCILREFMASK_BASE_IDX = 1 # macro -mmDB_STENCILREFMASK_BF = 0x010d # macro -mmDB_STENCILREFMASK_BF_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XSCALE = 0x010f # macro -mmPA_CL_VPORT_XSCALE_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XOFFSET = 0x0110 # macro -mmPA_CL_VPORT_XOFFSET_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YSCALE = 0x0111 # macro -mmPA_CL_VPORT_YSCALE_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YOFFSET = 0x0112 # macro -mmPA_CL_VPORT_YOFFSET_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZSCALE = 0x0113 # macro -mmPA_CL_VPORT_ZSCALE_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZOFFSET = 0x0114 # macro -mmPA_CL_VPORT_ZOFFSET_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XSCALE_1 = 0x0115 # macro -mmPA_CL_VPORT_XSCALE_1_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XOFFSET_1 = 0x0116 # macro -mmPA_CL_VPORT_XOFFSET_1_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YSCALE_1 = 0x0117 # macro -mmPA_CL_VPORT_YSCALE_1_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YOFFSET_1 = 0x0118 # macro -mmPA_CL_VPORT_YOFFSET_1_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZSCALE_1 = 0x0119 # macro -mmPA_CL_VPORT_ZSCALE_1_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZOFFSET_1 = 0x011a # macro -mmPA_CL_VPORT_ZOFFSET_1_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XSCALE_2 = 0x011b # macro -mmPA_CL_VPORT_XSCALE_2_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XOFFSET_2 = 0x011c # macro -mmPA_CL_VPORT_XOFFSET_2_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YSCALE_2 = 0x011d # macro -mmPA_CL_VPORT_YSCALE_2_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YOFFSET_2 = 0x011e # macro -mmPA_CL_VPORT_YOFFSET_2_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZSCALE_2 = 0x011f # macro -mmPA_CL_VPORT_ZSCALE_2_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZOFFSET_2 = 0x0120 # macro -mmPA_CL_VPORT_ZOFFSET_2_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XSCALE_3 = 0x0121 # macro -mmPA_CL_VPORT_XSCALE_3_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XOFFSET_3 = 0x0122 # macro -mmPA_CL_VPORT_XOFFSET_3_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YSCALE_3 = 0x0123 # macro -mmPA_CL_VPORT_YSCALE_3_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YOFFSET_3 = 0x0124 # macro -mmPA_CL_VPORT_YOFFSET_3_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZSCALE_3 = 0x0125 # macro -mmPA_CL_VPORT_ZSCALE_3_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZOFFSET_3 = 0x0126 # macro -mmPA_CL_VPORT_ZOFFSET_3_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XSCALE_4 = 0x0127 # macro -mmPA_CL_VPORT_XSCALE_4_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XOFFSET_4 = 0x0128 # macro -mmPA_CL_VPORT_XOFFSET_4_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YSCALE_4 = 0x0129 # macro -mmPA_CL_VPORT_YSCALE_4_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YOFFSET_4 = 0x012a # macro -mmPA_CL_VPORT_YOFFSET_4_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZSCALE_4 = 0x012b # macro -mmPA_CL_VPORT_ZSCALE_4_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZOFFSET_4 = 0x012c # macro -mmPA_CL_VPORT_ZOFFSET_4_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XSCALE_5 = 0x012d # macro -mmPA_CL_VPORT_XSCALE_5_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XOFFSET_5 = 0x012e # macro -mmPA_CL_VPORT_XOFFSET_5_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YSCALE_5 = 0x012f # macro -mmPA_CL_VPORT_YSCALE_5_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YOFFSET_5 = 0x0130 # macro -mmPA_CL_VPORT_YOFFSET_5_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZSCALE_5 = 0x0131 # macro -mmPA_CL_VPORT_ZSCALE_5_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZOFFSET_5 = 0x0132 # macro -mmPA_CL_VPORT_ZOFFSET_5_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XSCALE_6 = 0x0133 # macro -mmPA_CL_VPORT_XSCALE_6_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XOFFSET_6 = 0x0134 # macro -mmPA_CL_VPORT_XOFFSET_6_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YSCALE_6 = 0x0135 # macro -mmPA_CL_VPORT_YSCALE_6_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YOFFSET_6 = 0x0136 # macro -mmPA_CL_VPORT_YOFFSET_6_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZSCALE_6 = 0x0137 # macro -mmPA_CL_VPORT_ZSCALE_6_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZOFFSET_6 = 0x0138 # macro -mmPA_CL_VPORT_ZOFFSET_6_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XSCALE_7 = 0x0139 # macro -mmPA_CL_VPORT_XSCALE_7_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XOFFSET_7 = 0x013a # macro -mmPA_CL_VPORT_XOFFSET_7_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YSCALE_7 = 0x013b # macro -mmPA_CL_VPORT_YSCALE_7_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YOFFSET_7 = 0x013c # macro -mmPA_CL_VPORT_YOFFSET_7_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZSCALE_7 = 0x013d # macro -mmPA_CL_VPORT_ZSCALE_7_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZOFFSET_7 = 0x013e # macro -mmPA_CL_VPORT_ZOFFSET_7_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XSCALE_8 = 0x013f # macro -mmPA_CL_VPORT_XSCALE_8_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XOFFSET_8 = 0x0140 # macro -mmPA_CL_VPORT_XOFFSET_8_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YSCALE_8 = 0x0141 # macro -mmPA_CL_VPORT_YSCALE_8_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YOFFSET_8 = 0x0142 # macro -mmPA_CL_VPORT_YOFFSET_8_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZSCALE_8 = 0x0143 # macro -mmPA_CL_VPORT_ZSCALE_8_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZOFFSET_8 = 0x0144 # macro -mmPA_CL_VPORT_ZOFFSET_8_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XSCALE_9 = 0x0145 # macro -mmPA_CL_VPORT_XSCALE_9_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XOFFSET_9 = 0x0146 # macro -mmPA_CL_VPORT_XOFFSET_9_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YSCALE_9 = 0x0147 # macro -mmPA_CL_VPORT_YSCALE_9_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YOFFSET_9 = 0x0148 # macro -mmPA_CL_VPORT_YOFFSET_9_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZSCALE_9 = 0x0149 # macro -mmPA_CL_VPORT_ZSCALE_9_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZOFFSET_9 = 0x014a # macro -mmPA_CL_VPORT_ZOFFSET_9_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XSCALE_10 = 0x014b # macro -mmPA_CL_VPORT_XSCALE_10_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XOFFSET_10 = 0x014c # macro -mmPA_CL_VPORT_XOFFSET_10_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YSCALE_10 = 0x014d # macro -mmPA_CL_VPORT_YSCALE_10_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YOFFSET_10 = 0x014e # macro -mmPA_CL_VPORT_YOFFSET_10_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZSCALE_10 = 0x014f # macro -mmPA_CL_VPORT_ZSCALE_10_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZOFFSET_10 = 0x0150 # macro -mmPA_CL_VPORT_ZOFFSET_10_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XSCALE_11 = 0x0151 # macro -mmPA_CL_VPORT_XSCALE_11_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XOFFSET_11 = 0x0152 # macro -mmPA_CL_VPORT_XOFFSET_11_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YSCALE_11 = 0x0153 # macro -mmPA_CL_VPORT_YSCALE_11_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YOFFSET_11 = 0x0154 # macro -mmPA_CL_VPORT_YOFFSET_11_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZSCALE_11 = 0x0155 # macro -mmPA_CL_VPORT_ZSCALE_11_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZOFFSET_11 = 0x0156 # macro -mmPA_CL_VPORT_ZOFFSET_11_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XSCALE_12 = 0x0157 # macro -mmPA_CL_VPORT_XSCALE_12_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XOFFSET_12 = 0x0158 # macro -mmPA_CL_VPORT_XOFFSET_12_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YSCALE_12 = 0x0159 # macro -mmPA_CL_VPORT_YSCALE_12_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YOFFSET_12 = 0x015a # macro -mmPA_CL_VPORT_YOFFSET_12_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZSCALE_12 = 0x015b # macro -mmPA_CL_VPORT_ZSCALE_12_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZOFFSET_12 = 0x015c # macro -mmPA_CL_VPORT_ZOFFSET_12_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XSCALE_13 = 0x015d # macro -mmPA_CL_VPORT_XSCALE_13_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XOFFSET_13 = 0x015e # macro -mmPA_CL_VPORT_XOFFSET_13_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YSCALE_13 = 0x015f # macro -mmPA_CL_VPORT_YSCALE_13_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YOFFSET_13 = 0x0160 # macro -mmPA_CL_VPORT_YOFFSET_13_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZSCALE_13 = 0x0161 # macro -mmPA_CL_VPORT_ZSCALE_13_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZOFFSET_13 = 0x0162 # macro -mmPA_CL_VPORT_ZOFFSET_13_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XSCALE_14 = 0x0163 # macro -mmPA_CL_VPORT_XSCALE_14_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XOFFSET_14 = 0x0164 # macro -mmPA_CL_VPORT_XOFFSET_14_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YSCALE_14 = 0x0165 # macro -mmPA_CL_VPORT_YSCALE_14_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YOFFSET_14 = 0x0166 # macro -mmPA_CL_VPORT_YOFFSET_14_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZSCALE_14 = 0x0167 # macro -mmPA_CL_VPORT_ZSCALE_14_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZOFFSET_14 = 0x0168 # macro -mmPA_CL_VPORT_ZOFFSET_14_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XSCALE_15 = 0x0169 # macro -mmPA_CL_VPORT_XSCALE_15_BASE_IDX = 1 # macro -mmPA_CL_VPORT_XOFFSET_15 = 0x016a # macro -mmPA_CL_VPORT_XOFFSET_15_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YSCALE_15 = 0x016b # macro -mmPA_CL_VPORT_YSCALE_15_BASE_IDX = 1 # macro -mmPA_CL_VPORT_YOFFSET_15 = 0x016c # macro -mmPA_CL_VPORT_YOFFSET_15_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZSCALE_15 = 0x016d # macro -mmPA_CL_VPORT_ZSCALE_15_BASE_IDX = 1 # macro -mmPA_CL_VPORT_ZOFFSET_15 = 0x016e # macro -mmPA_CL_VPORT_ZOFFSET_15_BASE_IDX = 1 # macro -mmPA_CL_UCP_0_X = 0x016f # macro -mmPA_CL_UCP_0_X_BASE_IDX = 1 # macro -mmPA_CL_UCP_0_Y = 0x0170 # macro -mmPA_CL_UCP_0_Y_BASE_IDX = 1 # macro -mmPA_CL_UCP_0_Z = 0x0171 # macro -mmPA_CL_UCP_0_Z_BASE_IDX = 1 # macro -mmPA_CL_UCP_0_W = 0x0172 # macro -mmPA_CL_UCP_0_W_BASE_IDX = 1 # macro -mmPA_CL_UCP_1_X = 0x0173 # macro -mmPA_CL_UCP_1_X_BASE_IDX = 1 # macro -mmPA_CL_UCP_1_Y = 0x0174 # macro -mmPA_CL_UCP_1_Y_BASE_IDX = 1 # macro -mmPA_CL_UCP_1_Z = 0x0175 # macro -mmPA_CL_UCP_1_Z_BASE_IDX = 1 # macro -mmPA_CL_UCP_1_W = 0x0176 # macro -mmPA_CL_UCP_1_W_BASE_IDX = 1 # macro -mmPA_CL_UCP_2_X = 0x0177 # macro -mmPA_CL_UCP_2_X_BASE_IDX = 1 # macro -mmPA_CL_UCP_2_Y = 0x0178 # macro -mmPA_CL_UCP_2_Y_BASE_IDX = 1 # macro -mmPA_CL_UCP_2_Z = 0x0179 # macro -mmPA_CL_UCP_2_Z_BASE_IDX = 1 # macro -mmPA_CL_UCP_2_W = 0x017a # macro -mmPA_CL_UCP_2_W_BASE_IDX = 1 # macro -mmPA_CL_UCP_3_X = 0x017b # macro -mmPA_CL_UCP_3_X_BASE_IDX = 1 # macro -mmPA_CL_UCP_3_Y = 0x017c # macro -mmPA_CL_UCP_3_Y_BASE_IDX = 1 # macro -mmPA_CL_UCP_3_Z = 0x017d # macro -mmPA_CL_UCP_3_Z_BASE_IDX = 1 # macro -mmPA_CL_UCP_3_W = 0x017e # macro -mmPA_CL_UCP_3_W_BASE_IDX = 1 # macro -mmPA_CL_UCP_4_X = 0x017f # macro -mmPA_CL_UCP_4_X_BASE_IDX = 1 # macro -mmPA_CL_UCP_4_Y = 0x0180 # macro -mmPA_CL_UCP_4_Y_BASE_IDX = 1 # macro -mmPA_CL_UCP_4_Z = 0x0181 # macro -mmPA_CL_UCP_4_Z_BASE_IDX = 1 # macro -mmPA_CL_UCP_4_W = 0x0182 # macro -mmPA_CL_UCP_4_W_BASE_IDX = 1 # macro -mmPA_CL_UCP_5_X = 0x0183 # macro -mmPA_CL_UCP_5_X_BASE_IDX = 1 # macro -mmPA_CL_UCP_5_Y = 0x0184 # macro -mmPA_CL_UCP_5_Y_BASE_IDX = 1 # macro -mmPA_CL_UCP_5_Z = 0x0185 # macro -mmPA_CL_UCP_5_Z_BASE_IDX = 1 # macro -mmPA_CL_UCP_5_W = 0x0186 # macro -mmPA_CL_UCP_5_W_BASE_IDX = 1 # macro -mmPA_CL_PROG_NEAR_CLIP_Z = 0x0187 # macro -mmPA_CL_PROG_NEAR_CLIP_Z_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_0 = 0x0191 # macro -mmSPI_PS_INPUT_CNTL_0_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_1 = 0x0192 # macro -mmSPI_PS_INPUT_CNTL_1_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_2 = 0x0193 # macro -mmSPI_PS_INPUT_CNTL_2_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_3 = 0x0194 # macro -mmSPI_PS_INPUT_CNTL_3_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_4 = 0x0195 # macro -mmSPI_PS_INPUT_CNTL_4_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_5 = 0x0196 # macro -mmSPI_PS_INPUT_CNTL_5_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_6 = 0x0197 # macro -mmSPI_PS_INPUT_CNTL_6_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_7 = 0x0198 # macro -mmSPI_PS_INPUT_CNTL_7_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_8 = 0x0199 # macro -mmSPI_PS_INPUT_CNTL_8_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_9 = 0x019a # macro -mmSPI_PS_INPUT_CNTL_9_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_10 = 0x019b # macro -mmSPI_PS_INPUT_CNTL_10_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_11 = 0x019c # macro -mmSPI_PS_INPUT_CNTL_11_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_12 = 0x019d # macro -mmSPI_PS_INPUT_CNTL_12_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_13 = 0x019e # macro -mmSPI_PS_INPUT_CNTL_13_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_14 = 0x019f # macro -mmSPI_PS_INPUT_CNTL_14_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_15 = 0x01a0 # macro -mmSPI_PS_INPUT_CNTL_15_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_16 = 0x01a1 # macro -mmSPI_PS_INPUT_CNTL_16_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_17 = 0x01a2 # macro -mmSPI_PS_INPUT_CNTL_17_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_18 = 0x01a3 # macro -mmSPI_PS_INPUT_CNTL_18_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_19 = 0x01a4 # macro -mmSPI_PS_INPUT_CNTL_19_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_20 = 0x01a5 # macro -mmSPI_PS_INPUT_CNTL_20_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_21 = 0x01a6 # macro -mmSPI_PS_INPUT_CNTL_21_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_22 = 0x01a7 # macro -mmSPI_PS_INPUT_CNTL_22_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_23 = 0x01a8 # macro -mmSPI_PS_INPUT_CNTL_23_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_24 = 0x01a9 # macro -mmSPI_PS_INPUT_CNTL_24_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_25 = 0x01aa # macro -mmSPI_PS_INPUT_CNTL_25_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_26 = 0x01ab # macro -mmSPI_PS_INPUT_CNTL_26_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_27 = 0x01ac # macro -mmSPI_PS_INPUT_CNTL_27_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_28 = 0x01ad # macro -mmSPI_PS_INPUT_CNTL_28_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_29 = 0x01ae # macro -mmSPI_PS_INPUT_CNTL_29_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_30 = 0x01af # macro -mmSPI_PS_INPUT_CNTL_30_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_CNTL_31 = 0x01b0 # macro -mmSPI_PS_INPUT_CNTL_31_BASE_IDX = 1 # macro -mmSPI_VS_OUT_CONFIG = 0x01b1 # macro -mmSPI_VS_OUT_CONFIG_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_ENA = 0x01b3 # macro -mmSPI_PS_INPUT_ENA_BASE_IDX = 1 # macro -mmSPI_PS_INPUT_ADDR = 0x01b4 # macro -mmSPI_PS_INPUT_ADDR_BASE_IDX = 1 # macro -mmSPI_INTERP_CONTROL_0 = 0x01b5 # macro -mmSPI_INTERP_CONTROL_0_BASE_IDX = 1 # macro -mmSPI_PS_IN_CONTROL = 0x01b6 # macro -mmSPI_PS_IN_CONTROL_BASE_IDX = 1 # macro -mmSPI_BARYC_CNTL = 0x01b8 # macro -mmSPI_BARYC_CNTL_BASE_IDX = 1 # macro -mmSPI_TMPRING_SIZE = 0x01ba # macro -mmSPI_TMPRING_SIZE_BASE_IDX = 1 # macro -mmSPI_SHADER_IDX_FORMAT = 0x01c2 # macro -mmSPI_SHADER_IDX_FORMAT_BASE_IDX = 1 # macro -mmSPI_SHADER_POS_FORMAT = 0x01c3 # macro -mmSPI_SHADER_POS_FORMAT_BASE_IDX = 1 # macro -mmSPI_SHADER_Z_FORMAT = 0x01c4 # macro -mmSPI_SHADER_Z_FORMAT_BASE_IDX = 1 # macro -mmSPI_SHADER_COL_FORMAT = 0x01c5 # macro -mmSPI_SHADER_COL_FORMAT_BASE_IDX = 1 # macro -mmSX_PS_DOWNCONVERT_CONTROL = 0x01d4 # macro -mmSX_PS_DOWNCONVERT_CONTROL_BASE_IDX = 1 # macro -mmSX_PS_DOWNCONVERT = 0x01d5 # macro -mmSX_PS_DOWNCONVERT_BASE_IDX = 1 # macro -mmSX_BLEND_OPT_EPSILON = 0x01d6 # macro -mmSX_BLEND_OPT_EPSILON_BASE_IDX = 1 # macro -mmSX_BLEND_OPT_CONTROL = 0x01d7 # macro -mmSX_BLEND_OPT_CONTROL_BASE_IDX = 1 # macro -mmSX_MRT0_BLEND_OPT = 0x01d8 # macro -mmSX_MRT0_BLEND_OPT_BASE_IDX = 1 # macro -mmSX_MRT1_BLEND_OPT = 0x01d9 # macro -mmSX_MRT1_BLEND_OPT_BASE_IDX = 1 # macro -mmSX_MRT2_BLEND_OPT = 0x01da # macro -mmSX_MRT2_BLEND_OPT_BASE_IDX = 1 # macro -mmSX_MRT3_BLEND_OPT = 0x01db # macro -mmSX_MRT3_BLEND_OPT_BASE_IDX = 1 # macro -mmSX_MRT4_BLEND_OPT = 0x01dc # macro -mmSX_MRT4_BLEND_OPT_BASE_IDX = 1 # macro -mmSX_MRT5_BLEND_OPT = 0x01dd # macro -mmSX_MRT5_BLEND_OPT_BASE_IDX = 1 # macro -mmSX_MRT6_BLEND_OPT = 0x01de # macro -mmSX_MRT6_BLEND_OPT_BASE_IDX = 1 # macro -mmSX_MRT7_BLEND_OPT = 0x01df # macro -mmSX_MRT7_BLEND_OPT_BASE_IDX = 1 # macro -mmCB_BLEND0_CONTROL = 0x01e0 # macro -mmCB_BLEND0_CONTROL_BASE_IDX = 1 # macro -mmCB_BLEND1_CONTROL = 0x01e1 # macro -mmCB_BLEND1_CONTROL_BASE_IDX = 1 # macro -mmCB_BLEND2_CONTROL = 0x01e2 # macro -mmCB_BLEND2_CONTROL_BASE_IDX = 1 # macro -mmCB_BLEND3_CONTROL = 0x01e3 # macro -mmCB_BLEND3_CONTROL_BASE_IDX = 1 # macro -mmCB_BLEND4_CONTROL = 0x01e4 # macro -mmCB_BLEND4_CONTROL_BASE_IDX = 1 # macro -mmCB_BLEND5_CONTROL = 0x01e5 # macro -mmCB_BLEND5_CONTROL_BASE_IDX = 1 # macro -mmCB_BLEND6_CONTROL = 0x01e6 # macro -mmCB_BLEND6_CONTROL_BASE_IDX = 1 # macro -mmCB_BLEND7_CONTROL = 0x01e7 # macro -mmCB_BLEND7_CONTROL_BASE_IDX = 1 # macro -mmCS_COPY_STATE = 0x01f3 # macro -mmCS_COPY_STATE_BASE_IDX = 1 # macro -mmGFX_COPY_STATE = 0x01f4 # macro -mmGFX_COPY_STATE_BASE_IDX = 1 # macro -mmPA_CL_POINT_X_RAD = 0x01f5 # macro -mmPA_CL_POINT_X_RAD_BASE_IDX = 1 # macro -mmPA_CL_POINT_Y_RAD = 0x01f6 # macro -mmPA_CL_POINT_Y_RAD_BASE_IDX = 1 # macro -mmPA_CL_POINT_SIZE = 0x01f7 # macro -mmPA_CL_POINT_SIZE_BASE_IDX = 1 # macro -mmPA_CL_POINT_CULL_RAD = 0x01f8 # macro -mmPA_CL_POINT_CULL_RAD_BASE_IDX = 1 # macro -mmVGT_DMA_BASE_HI = 0x01f9 # macro -mmVGT_DMA_BASE_HI_BASE_IDX = 1 # macro -mmVGT_DMA_BASE = 0x01fa # macro -mmVGT_DMA_BASE_BASE_IDX = 1 # macro -mmVGT_DRAW_INITIATOR = 0x01fc # macro -mmVGT_DRAW_INITIATOR_BASE_IDX = 1 # macro -mmVGT_IMMED_DATA = 0x01fd # macro -mmVGT_IMMED_DATA_BASE_IDX = 1 # macro -mmVGT_EVENT_ADDRESS_REG = 0x01fe # macro -mmVGT_EVENT_ADDRESS_REG_BASE_IDX = 1 # macro -mmGE_MAX_OUTPUT_PER_SUBGROUP = 0x01ff # macro -mmGE_MAX_OUTPUT_PER_SUBGROUP_BASE_IDX = 1 # macro -mmDB_DEPTH_CONTROL = 0x0200 # macro -mmDB_DEPTH_CONTROL_BASE_IDX = 1 # macro -mmDB_EQAA = 0x0201 # macro -mmDB_EQAA_BASE_IDX = 1 # macro -mmCB_COLOR_CONTROL = 0x0202 # macro -mmCB_COLOR_CONTROL_BASE_IDX = 1 # macro -mmDB_SHADER_CONTROL = 0x0203 # macro -mmDB_SHADER_CONTROL_BASE_IDX = 1 # macro -mmPA_CL_CLIP_CNTL = 0x0204 # macro -mmPA_CL_CLIP_CNTL_BASE_IDX = 1 # macro -mmPA_SU_SC_MODE_CNTL = 0x0205 # macro -mmPA_SU_SC_MODE_CNTL_BASE_IDX = 1 # macro -mmPA_CL_VTE_CNTL = 0x0206 # macro -mmPA_CL_VTE_CNTL_BASE_IDX = 1 # macro -mmPA_CL_VS_OUT_CNTL = 0x0207 # macro -mmPA_CL_VS_OUT_CNTL_BASE_IDX = 1 # macro -mmPA_CL_NANINF_CNTL = 0x0208 # macro -mmPA_CL_NANINF_CNTL_BASE_IDX = 1 # macro -mmPA_SU_LINE_STIPPLE_CNTL = 0x0209 # macro -mmPA_SU_LINE_STIPPLE_CNTL_BASE_IDX = 1 # macro -mmPA_SU_LINE_STIPPLE_SCALE = 0x020a # macro -mmPA_SU_LINE_STIPPLE_SCALE_BASE_IDX = 1 # macro -mmPA_SU_PRIM_FILTER_CNTL = 0x020b # macro -mmPA_SU_PRIM_FILTER_CNTL_BASE_IDX = 1 # macro -mmPA_SU_SMALL_PRIM_FILTER_CNTL = 0x020c # macro -mmPA_SU_SMALL_PRIM_FILTER_CNTL_BASE_IDX = 1 # macro -mmPA_CL_NGG_CNTL = 0x020e # macro -mmPA_CL_NGG_CNTL_BASE_IDX = 1 # macro -mmPA_SU_OVER_RASTERIZATION_CNTL = 0x020f # macro -mmPA_SU_OVER_RASTERIZATION_CNTL_BASE_IDX = 1 # macro -mmPA_STEREO_CNTL = 0x0210 # macro -mmPA_STEREO_CNTL_BASE_IDX = 1 # macro -mmPA_STATE_STEREO_X = 0x0211 # macro -mmPA_STATE_STEREO_X_BASE_IDX = 1 # macro -mmPA_CL_VRS_CNTL = 0x0212 # macro -mmPA_CL_VRS_CNTL_BASE_IDX = 1 # macro -mmPA_SU_POINT_SIZE = 0x0280 # macro -mmPA_SU_POINT_SIZE_BASE_IDX = 1 # macro -mmPA_SU_POINT_MINMAX = 0x0281 # macro -mmPA_SU_POINT_MINMAX_BASE_IDX = 1 # macro -mmPA_SU_LINE_CNTL = 0x0282 # macro -mmPA_SU_LINE_CNTL_BASE_IDX = 1 # macro -mmPA_SC_LINE_STIPPLE = 0x0283 # macro -mmPA_SC_LINE_STIPPLE_BASE_IDX = 1 # macro -mmVGT_OUTPUT_PATH_CNTL = 0x0284 # macro -mmVGT_OUTPUT_PATH_CNTL_BASE_IDX = 1 # macro -mmVGT_HOS_CNTL = 0x0285 # macro -mmVGT_HOS_CNTL_BASE_IDX = 1 # macro -mmVGT_HOS_MAX_TESS_LEVEL = 0x0286 # macro -mmVGT_HOS_MAX_TESS_LEVEL_BASE_IDX = 1 # macro -mmVGT_HOS_MIN_TESS_LEVEL = 0x0287 # macro -mmVGT_HOS_MIN_TESS_LEVEL_BASE_IDX = 1 # macro -mmVGT_HOS_REUSE_DEPTH = 0x0288 # macro -mmVGT_HOS_REUSE_DEPTH_BASE_IDX = 1 # macro -mmVGT_GROUP_PRIM_TYPE = 0x0289 # macro -mmVGT_GROUP_PRIM_TYPE_BASE_IDX = 1 # macro -mmVGT_GROUP_FIRST_DECR = 0x028a # macro -mmVGT_GROUP_FIRST_DECR_BASE_IDX = 1 # macro -mmVGT_GROUP_DECR = 0x028b # macro -mmVGT_GROUP_DECR_BASE_IDX = 1 # macro -mmVGT_GROUP_VECT_0_CNTL = 0x028c # macro -mmVGT_GROUP_VECT_0_CNTL_BASE_IDX = 1 # macro -mmVGT_GROUP_VECT_1_CNTL = 0x028d # macro -mmVGT_GROUP_VECT_1_CNTL_BASE_IDX = 1 # macro -mmVGT_GROUP_VECT_0_FMT_CNTL = 0x028e # macro -mmVGT_GROUP_VECT_0_FMT_CNTL_BASE_IDX = 1 # macro -mmVGT_GROUP_VECT_1_FMT_CNTL = 0x028f # macro -mmVGT_GROUP_VECT_1_FMT_CNTL_BASE_IDX = 1 # macro -mmVGT_GS_MODE = 0x0290 # macro -mmVGT_GS_MODE_BASE_IDX = 1 # macro -mmVGT_GS_ONCHIP_CNTL = 0x0291 # macro -mmVGT_GS_ONCHIP_CNTL_BASE_IDX = 1 # macro -mmPA_SC_MODE_CNTL_0 = 0x0292 # macro -mmPA_SC_MODE_CNTL_0_BASE_IDX = 1 # macro -mmPA_SC_MODE_CNTL_1 = 0x0293 # macro -mmPA_SC_MODE_CNTL_1_BASE_IDX = 1 # macro -mmVGT_ENHANCE = 0x0294 # macro -mmVGT_ENHANCE_BASE_IDX = 1 # macro -mmVGT_GS_PER_ES = 0x0295 # macro -mmVGT_GS_PER_ES_BASE_IDX = 1 # macro -mmVGT_ES_PER_GS = 0x0296 # macro -mmVGT_ES_PER_GS_BASE_IDX = 1 # macro -mmVGT_GS_PER_VS = 0x0297 # macro -mmVGT_GS_PER_VS_BASE_IDX = 1 # macro -mmVGT_GSVS_RING_OFFSET_1 = 0x0298 # macro -mmVGT_GSVS_RING_OFFSET_1_BASE_IDX = 1 # macro -mmVGT_GSVS_RING_OFFSET_2 = 0x0299 # macro -mmVGT_GSVS_RING_OFFSET_2_BASE_IDX = 1 # macro -mmVGT_GSVS_RING_OFFSET_3 = 0x029a # macro -mmVGT_GSVS_RING_OFFSET_3_BASE_IDX = 1 # macro -mmVGT_GS_OUT_PRIM_TYPE = 0x029b # macro -mmVGT_GS_OUT_PRIM_TYPE_BASE_IDX = 1 # macro -mmIA_ENHANCE = 0x029c # macro -mmIA_ENHANCE_BASE_IDX = 1 # macro -mmVGT_DMA_SIZE = 0x029d # macro -mmVGT_DMA_SIZE_BASE_IDX = 1 # macro -mmVGT_DMA_MAX_SIZE = 0x029e # macro -mmVGT_DMA_MAX_SIZE_BASE_IDX = 1 # macro -mmVGT_DMA_INDEX_TYPE = 0x029f # macro -mmVGT_DMA_INDEX_TYPE_BASE_IDX = 1 # macro -mmWD_ENHANCE = 0x02a0 # macro -mmWD_ENHANCE_BASE_IDX = 1 # macro -mmVGT_PRIMITIVEID_EN = 0x02a1 # macro -mmVGT_PRIMITIVEID_EN_BASE_IDX = 1 # macro -mmVGT_DMA_NUM_INSTANCES = 0x02a2 # macro -mmVGT_DMA_NUM_INSTANCES_BASE_IDX = 1 # macro -mmVGT_PRIMITIVEID_RESET = 0x02a3 # macro -mmVGT_PRIMITIVEID_RESET_BASE_IDX = 1 # macro -mmVGT_EVENT_INITIATOR = 0x02a4 # macro -mmVGT_EVENT_INITIATOR_BASE_IDX = 1 # macro -mmVGT_MULTI_PRIM_IB_RESET_EN = 0x02a5 # macro -mmVGT_MULTI_PRIM_IB_RESET_EN_BASE_IDX = 1 # macro -mmVGT_DRAW_PAYLOAD_CNTL = 0x02a6 # macro -mmVGT_DRAW_PAYLOAD_CNTL_BASE_IDX = 1 # macro -mmVGT_INSTANCE_STEP_RATE_0 = 0x02a8 # macro -mmVGT_INSTANCE_STEP_RATE_0_BASE_IDX = 1 # macro -mmVGT_INSTANCE_STEP_RATE_1 = 0x02a9 # macro -mmVGT_INSTANCE_STEP_RATE_1_BASE_IDX = 1 # macro -mmIA_MULTI_VGT_PARAM = 0x02aa # macro -mmIA_MULTI_VGT_PARAM_BASE_IDX = 1 # macro -mmVGT_ESGS_RING_ITEMSIZE = 0x02ab # macro -mmVGT_ESGS_RING_ITEMSIZE_BASE_IDX = 1 # macro -mmVGT_GSVS_RING_ITEMSIZE = 0x02ac # macro -mmVGT_GSVS_RING_ITEMSIZE_BASE_IDX = 1 # macro -mmVGT_REUSE_OFF = 0x02ad # macro -mmVGT_REUSE_OFF_BASE_IDX = 1 # macro -mmVGT_VTX_CNT_EN = 0x02ae # macro -mmVGT_VTX_CNT_EN_BASE_IDX = 1 # macro -mmDB_HTILE_SURFACE = 0x02af # macro -mmDB_HTILE_SURFACE_BASE_IDX = 1 # macro -mmDB_SRESULTS_COMPARE_STATE0 = 0x02b0 # macro -mmDB_SRESULTS_COMPARE_STATE0_BASE_IDX = 1 # macro -mmDB_SRESULTS_COMPARE_STATE1 = 0x02b1 # macro -mmDB_SRESULTS_COMPARE_STATE1_BASE_IDX = 1 # macro -mmDB_PRELOAD_CONTROL = 0x02b2 # macro -mmDB_PRELOAD_CONTROL_BASE_IDX = 1 # macro -mmVGT_STRMOUT_BUFFER_SIZE_0 = 0x02b4 # macro -mmVGT_STRMOUT_BUFFER_SIZE_0_BASE_IDX = 1 # macro -mmVGT_STRMOUT_VTX_STRIDE_0 = 0x02b5 # macro -mmVGT_STRMOUT_VTX_STRIDE_0_BASE_IDX = 1 # macro -mmVGT_STRMOUT_BUFFER_OFFSET_0 = 0x02b7 # macro -mmVGT_STRMOUT_BUFFER_OFFSET_0_BASE_IDX = 1 # macro -mmVGT_STRMOUT_BUFFER_SIZE_1 = 0x02b8 # macro -mmVGT_STRMOUT_BUFFER_SIZE_1_BASE_IDX = 1 # macro -mmVGT_STRMOUT_VTX_STRIDE_1 = 0x02b9 # macro -mmVGT_STRMOUT_VTX_STRIDE_1_BASE_IDX = 1 # macro -mmVGT_STRMOUT_BUFFER_OFFSET_1 = 0x02bb # macro -mmVGT_STRMOUT_BUFFER_OFFSET_1_BASE_IDX = 1 # macro -mmVGT_STRMOUT_BUFFER_SIZE_2 = 0x02bc # macro -mmVGT_STRMOUT_BUFFER_SIZE_2_BASE_IDX = 1 # macro -mmVGT_STRMOUT_VTX_STRIDE_2 = 0x02bd # macro -mmVGT_STRMOUT_VTX_STRIDE_2_BASE_IDX = 1 # macro -mmVGT_STRMOUT_BUFFER_OFFSET_2 = 0x02bf # macro -mmVGT_STRMOUT_BUFFER_OFFSET_2_BASE_IDX = 1 # macro -mmVGT_STRMOUT_BUFFER_SIZE_3 = 0x02c0 # macro -mmVGT_STRMOUT_BUFFER_SIZE_3_BASE_IDX = 1 # macro -mmVGT_STRMOUT_VTX_STRIDE_3 = 0x02c1 # macro -mmVGT_STRMOUT_VTX_STRIDE_3_BASE_IDX = 1 # macro -mmVGT_STRMOUT_BUFFER_OFFSET_3 = 0x02c3 # macro -mmVGT_STRMOUT_BUFFER_OFFSET_3_BASE_IDX = 1 # macro -mmVGT_STRMOUT_DRAW_OPAQUE_OFFSET = 0x02ca # macro -mmVGT_STRMOUT_DRAW_OPAQUE_OFFSET_BASE_IDX = 1 # macro -mmVGT_STRMOUT_DRAW_OPAQUE_BUFFER_FILLED_SIZE = 0x02cb # macro -mmVGT_STRMOUT_DRAW_OPAQUE_BUFFER_FILLED_SIZE_BASE_IDX = 1 # macro -mmVGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE = 0x02cc # macro -mmVGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE_BASE_IDX = 1 # macro -mmVGT_GS_MAX_VERT_OUT = 0x02ce # macro -mmVGT_GS_MAX_VERT_OUT_BASE_IDX = 1 # macro -mmGE_NGG_SUBGRP_CNTL = 0x02d3 # macro -mmGE_NGG_SUBGRP_CNTL_BASE_IDX = 1 # macro -mmVGT_TESS_DISTRIBUTION = 0x02d4 # macro -mmVGT_TESS_DISTRIBUTION_BASE_IDX = 1 # macro -mmVGT_SHADER_STAGES_EN = 0x02d5 # macro -mmVGT_SHADER_STAGES_EN_BASE_IDX = 1 # macro -mmVGT_LS_HS_CONFIG = 0x02d6 # macro -mmVGT_LS_HS_CONFIG_BASE_IDX = 1 # macro -mmVGT_GS_VERT_ITEMSIZE = 0x02d7 # macro -mmVGT_GS_VERT_ITEMSIZE_BASE_IDX = 1 # macro -mmVGT_GS_VERT_ITEMSIZE_1 = 0x02d8 # macro -mmVGT_GS_VERT_ITEMSIZE_1_BASE_IDX = 1 # macro -mmVGT_GS_VERT_ITEMSIZE_2 = 0x02d9 # macro -mmVGT_GS_VERT_ITEMSIZE_2_BASE_IDX = 1 # macro -mmVGT_GS_VERT_ITEMSIZE_3 = 0x02da # macro -mmVGT_GS_VERT_ITEMSIZE_3_BASE_IDX = 1 # macro -mmVGT_TF_PARAM = 0x02db # macro -mmVGT_TF_PARAM_BASE_IDX = 1 # macro -mmDB_ALPHA_TO_MASK = 0x02dc # macro -mmDB_ALPHA_TO_MASK_BASE_IDX = 1 # macro -mmVGT_DISPATCH_DRAW_INDEX = 0x02dd # macro -mmVGT_DISPATCH_DRAW_INDEX_BASE_IDX = 1 # macro -mmPA_SU_POLY_OFFSET_DB_FMT_CNTL = 0x02de # macro -mmPA_SU_POLY_OFFSET_DB_FMT_CNTL_BASE_IDX = 1 # macro -mmPA_SU_POLY_OFFSET_CLAMP = 0x02df # macro -mmPA_SU_POLY_OFFSET_CLAMP_BASE_IDX = 1 # macro -mmPA_SU_POLY_OFFSET_FRONT_SCALE = 0x02e0 # macro -mmPA_SU_POLY_OFFSET_FRONT_SCALE_BASE_IDX = 1 # macro -mmPA_SU_POLY_OFFSET_FRONT_OFFSET = 0x02e1 # macro -mmPA_SU_POLY_OFFSET_FRONT_OFFSET_BASE_IDX = 1 # macro -mmPA_SU_POLY_OFFSET_BACK_SCALE = 0x02e2 # macro -mmPA_SU_POLY_OFFSET_BACK_SCALE_BASE_IDX = 1 # macro -mmPA_SU_POLY_OFFSET_BACK_OFFSET = 0x02e3 # macro -mmPA_SU_POLY_OFFSET_BACK_OFFSET_BASE_IDX = 1 # macro -mmVGT_GS_INSTANCE_CNT = 0x02e4 # macro -mmVGT_GS_INSTANCE_CNT_BASE_IDX = 1 # macro -mmVGT_STRMOUT_CONFIG = 0x02e5 # macro -mmVGT_STRMOUT_CONFIG_BASE_IDX = 1 # macro -mmVGT_STRMOUT_BUFFER_CONFIG = 0x02e6 # macro -mmVGT_STRMOUT_BUFFER_CONFIG_BASE_IDX = 1 # macro -mmVGT_DMA_EVENT_INITIATOR = 0x02e7 # macro -mmVGT_DMA_EVENT_INITIATOR_BASE_IDX = 1 # macro -mmPA_SC_CENTROID_PRIORITY_0 = 0x02f5 # macro -mmPA_SC_CENTROID_PRIORITY_0_BASE_IDX = 1 # macro -mmPA_SC_CENTROID_PRIORITY_1 = 0x02f6 # macro -mmPA_SC_CENTROID_PRIORITY_1_BASE_IDX = 1 # macro -mmPA_SC_LINE_CNTL = 0x02f7 # macro -mmPA_SC_LINE_CNTL_BASE_IDX = 1 # macro -mmPA_SC_AA_CONFIG = 0x02f8 # macro -mmPA_SC_AA_CONFIG_BASE_IDX = 1 # macro -mmPA_SU_VTX_CNTL = 0x02f9 # macro -mmPA_SU_VTX_CNTL_BASE_IDX = 1 # macro -mmPA_CL_GB_VERT_CLIP_ADJ = 0x02fa # macro -mmPA_CL_GB_VERT_CLIP_ADJ_BASE_IDX = 1 # macro -mmPA_CL_GB_VERT_DISC_ADJ = 0x02fb # macro -mmPA_CL_GB_VERT_DISC_ADJ_BASE_IDX = 1 # macro -mmPA_CL_GB_HORZ_CLIP_ADJ = 0x02fc # macro -mmPA_CL_GB_HORZ_CLIP_ADJ_BASE_IDX = 1 # macro -mmPA_CL_GB_HORZ_DISC_ADJ = 0x02fd # macro -mmPA_CL_GB_HORZ_DISC_ADJ_BASE_IDX = 1 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_0 = 0x02fe # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_0_BASE_IDX = 1 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_1 = 0x02ff # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_1_BASE_IDX = 1 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_2 = 0x0300 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_2_BASE_IDX = 1 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_3 = 0x0301 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_3_BASE_IDX = 1 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_0 = 0x0302 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_0_BASE_IDX = 1 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_1 = 0x0303 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_1_BASE_IDX = 1 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_2 = 0x0304 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_2_BASE_IDX = 1 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_3 = 0x0305 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_3_BASE_IDX = 1 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_0 = 0x0306 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_0_BASE_IDX = 1 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_1 = 0x0307 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_1_BASE_IDX = 1 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_2 = 0x0308 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_2_BASE_IDX = 1 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_3 = 0x0309 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_3_BASE_IDX = 1 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_0 = 0x030a # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_0_BASE_IDX = 1 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_1 = 0x030b # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_1_BASE_IDX = 1 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_2 = 0x030c # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_2_BASE_IDX = 1 # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_3 = 0x030d # macro -mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_3_BASE_IDX = 1 # macro -mmPA_SC_AA_MASK_X0Y0_X1Y0 = 0x030e # macro -mmPA_SC_AA_MASK_X0Y0_X1Y0_BASE_IDX = 1 # macro -mmPA_SC_AA_MASK_X0Y1_X1Y1 = 0x030f # macro -mmPA_SC_AA_MASK_X0Y1_X1Y1_BASE_IDX = 1 # macro -mmPA_SC_SHADER_CONTROL = 0x0310 # macro -mmPA_SC_SHADER_CONTROL_BASE_IDX = 1 # macro -mmPA_SC_BINNER_CNTL_0 = 0x0311 # macro -mmPA_SC_BINNER_CNTL_0_BASE_IDX = 1 # macro -mmPA_SC_BINNER_CNTL_1 = 0x0312 # macro -mmPA_SC_BINNER_CNTL_1_BASE_IDX = 1 # macro -mmPA_SC_CONSERVATIVE_RASTERIZATION_CNTL = 0x0313 # macro -mmPA_SC_CONSERVATIVE_RASTERIZATION_CNTL_BASE_IDX = 1 # macro -mmPA_SC_NGG_MODE_CNTL = 0x0314 # macro -mmPA_SC_NGG_MODE_CNTL_BASE_IDX = 1 # macro -mmVGT_VERTEX_REUSE_BLOCK_CNTL = 0x0316 # macro -mmVGT_VERTEX_REUSE_BLOCK_CNTL_BASE_IDX = 1 # macro -mmVGT_OUT_DEALLOC_CNTL = 0x0317 # macro -mmVGT_OUT_DEALLOC_CNTL_BASE_IDX = 1 # macro -mmCB_COLOR0_BASE = 0x0318 # macro -mmCB_COLOR0_BASE_BASE_IDX = 1 # macro -mmCB_COLOR0_PITCH = 0x0319 # macro -mmCB_COLOR0_PITCH_BASE_IDX = 1 # macro -mmCB_COLOR0_SLICE = 0x031a # macro -mmCB_COLOR0_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR0_VIEW = 0x031b # macro -mmCB_COLOR0_VIEW_BASE_IDX = 1 # macro -mmCB_COLOR0_INFO = 0x031c # macro -mmCB_COLOR0_INFO_BASE_IDX = 1 # macro -mmCB_COLOR0_ATTRIB = 0x031d # macro -mmCB_COLOR0_ATTRIB_BASE_IDX = 1 # macro -mmCB_COLOR0_DCC_CONTROL = 0x031e # macro -mmCB_COLOR0_DCC_CONTROL_BASE_IDX = 1 # macro -mmCB_COLOR0_CMASK = 0x031f # macro -mmCB_COLOR0_CMASK_BASE_IDX = 1 # macro -mmCB_COLOR0_CMASK_SLICE = 0x0320 # macro -mmCB_COLOR0_CMASK_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR0_FMASK = 0x0321 # macro -mmCB_COLOR0_FMASK_BASE_IDX = 1 # macro -mmCB_COLOR0_FMASK_SLICE = 0x0322 # macro -mmCB_COLOR0_FMASK_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR0_CLEAR_WORD0 = 0x0323 # macro -mmCB_COLOR0_CLEAR_WORD0_BASE_IDX = 1 # macro -mmCB_COLOR0_CLEAR_WORD1 = 0x0324 # macro -mmCB_COLOR0_CLEAR_WORD1_BASE_IDX = 1 # macro -mmCB_COLOR0_DCC_BASE = 0x0325 # macro -mmCB_COLOR0_DCC_BASE_BASE_IDX = 1 # macro -mmCB_COLOR1_BASE = 0x0327 # macro -mmCB_COLOR1_BASE_BASE_IDX = 1 # macro -mmCB_COLOR1_PITCH = 0x0328 # macro -mmCB_COLOR1_PITCH_BASE_IDX = 1 # macro -mmCB_COLOR1_SLICE = 0x0329 # macro -mmCB_COLOR1_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR1_VIEW = 0x032a # macro -mmCB_COLOR1_VIEW_BASE_IDX = 1 # macro -mmCB_COLOR1_INFO = 0x032b # macro -mmCB_COLOR1_INFO_BASE_IDX = 1 # macro -mmCB_COLOR1_ATTRIB = 0x032c # macro -mmCB_COLOR1_ATTRIB_BASE_IDX = 1 # macro -mmCB_COLOR1_DCC_CONTROL = 0x032d # macro -mmCB_COLOR1_DCC_CONTROL_BASE_IDX = 1 # macro -mmCB_COLOR1_CMASK = 0x032e # macro -mmCB_COLOR1_CMASK_BASE_IDX = 1 # macro -mmCB_COLOR1_CMASK_SLICE = 0x032f # macro -mmCB_COLOR1_CMASK_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR1_FMASK = 0x0330 # macro -mmCB_COLOR1_FMASK_BASE_IDX = 1 # macro -mmCB_COLOR1_FMASK_SLICE = 0x0331 # macro -mmCB_COLOR1_FMASK_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR1_CLEAR_WORD0 = 0x0332 # macro -mmCB_COLOR1_CLEAR_WORD0_BASE_IDX = 1 # macro -mmCB_COLOR1_CLEAR_WORD1 = 0x0333 # macro -mmCB_COLOR1_CLEAR_WORD1_BASE_IDX = 1 # macro -mmCB_COLOR1_DCC_BASE = 0x0334 # macro -mmCB_COLOR1_DCC_BASE_BASE_IDX = 1 # macro -mmCB_COLOR2_BASE = 0x0336 # macro -mmCB_COLOR2_BASE_BASE_IDX = 1 # macro -mmCB_COLOR2_PITCH = 0x0337 # macro -mmCB_COLOR2_PITCH_BASE_IDX = 1 # macro -mmCB_COLOR2_SLICE = 0x0338 # macro -mmCB_COLOR2_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR2_VIEW = 0x0339 # macro -mmCB_COLOR2_VIEW_BASE_IDX = 1 # macro -mmCB_COLOR2_INFO = 0x033a # macro -mmCB_COLOR2_INFO_BASE_IDX = 1 # macro -mmCB_COLOR2_ATTRIB = 0x033b # macro -mmCB_COLOR2_ATTRIB_BASE_IDX = 1 # macro -mmCB_COLOR2_DCC_CONTROL = 0x033c # macro -mmCB_COLOR2_DCC_CONTROL_BASE_IDX = 1 # macro -mmCB_COLOR2_CMASK = 0x033d # macro -mmCB_COLOR2_CMASK_BASE_IDX = 1 # macro -mmCB_COLOR2_CMASK_SLICE = 0x033e # macro -mmCB_COLOR2_CMASK_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR2_FMASK = 0x033f # macro -mmCB_COLOR2_FMASK_BASE_IDX = 1 # macro -mmCB_COLOR2_FMASK_SLICE = 0x0340 # macro -mmCB_COLOR2_FMASK_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR2_CLEAR_WORD0 = 0x0341 # macro -mmCB_COLOR2_CLEAR_WORD0_BASE_IDX = 1 # macro -mmCB_COLOR2_CLEAR_WORD1 = 0x0342 # macro -mmCB_COLOR2_CLEAR_WORD1_BASE_IDX = 1 # macro -mmCB_COLOR2_DCC_BASE = 0x0343 # macro -mmCB_COLOR2_DCC_BASE_BASE_IDX = 1 # macro -mmCB_COLOR3_BASE = 0x0345 # macro -mmCB_COLOR3_BASE_BASE_IDX = 1 # macro -mmCB_COLOR3_PITCH = 0x0346 # macro -mmCB_COLOR3_PITCH_BASE_IDX = 1 # macro -mmCB_COLOR3_SLICE = 0x0347 # macro -mmCB_COLOR3_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR3_VIEW = 0x0348 # macro -mmCB_COLOR3_VIEW_BASE_IDX = 1 # macro -mmCB_COLOR3_INFO = 0x0349 # macro -mmCB_COLOR3_INFO_BASE_IDX = 1 # macro -mmCB_COLOR3_ATTRIB = 0x034a # macro -mmCB_COLOR3_ATTRIB_BASE_IDX = 1 # macro -mmCB_COLOR3_DCC_CONTROL = 0x034b # macro -mmCB_COLOR3_DCC_CONTROL_BASE_IDX = 1 # macro -mmCB_COLOR3_CMASK = 0x034c # macro -mmCB_COLOR3_CMASK_BASE_IDX = 1 # macro -mmCB_COLOR3_CMASK_SLICE = 0x034d # macro -mmCB_COLOR3_CMASK_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR3_FMASK = 0x034e # macro -mmCB_COLOR3_FMASK_BASE_IDX = 1 # macro -mmCB_COLOR3_FMASK_SLICE = 0x034f # macro -mmCB_COLOR3_FMASK_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR3_CLEAR_WORD0 = 0x0350 # macro -mmCB_COLOR3_CLEAR_WORD0_BASE_IDX = 1 # macro -mmCB_COLOR3_CLEAR_WORD1 = 0x0351 # macro -mmCB_COLOR3_CLEAR_WORD1_BASE_IDX = 1 # macro -mmCB_COLOR3_DCC_BASE = 0x0352 # macro -mmCB_COLOR3_DCC_BASE_BASE_IDX = 1 # macro -mmCB_COLOR4_BASE = 0x0354 # macro -mmCB_COLOR4_BASE_BASE_IDX = 1 # macro -mmCB_COLOR4_PITCH = 0x0355 # macro -mmCB_COLOR4_PITCH_BASE_IDX = 1 # macro -mmCB_COLOR4_SLICE = 0x0356 # macro -mmCB_COLOR4_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR4_VIEW = 0x0357 # macro -mmCB_COLOR4_VIEW_BASE_IDX = 1 # macro -mmCB_COLOR4_INFO = 0x0358 # macro -mmCB_COLOR4_INFO_BASE_IDX = 1 # macro -mmCB_COLOR4_ATTRIB = 0x0359 # macro -mmCB_COLOR4_ATTRIB_BASE_IDX = 1 # macro -mmCB_COLOR4_DCC_CONTROL = 0x035a # macro -mmCB_COLOR4_DCC_CONTROL_BASE_IDX = 1 # macro -mmCB_COLOR4_CMASK = 0x035b # macro -mmCB_COLOR4_CMASK_BASE_IDX = 1 # macro -mmCB_COLOR4_CMASK_SLICE = 0x035c # macro -mmCB_COLOR4_CMASK_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR4_FMASK = 0x035d # macro -mmCB_COLOR4_FMASK_BASE_IDX = 1 # macro -mmCB_COLOR4_FMASK_SLICE = 0x035e # macro -mmCB_COLOR4_FMASK_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR4_CLEAR_WORD0 = 0x035f # macro -mmCB_COLOR4_CLEAR_WORD0_BASE_IDX = 1 # macro -mmCB_COLOR4_CLEAR_WORD1 = 0x0360 # macro -mmCB_COLOR4_CLEAR_WORD1_BASE_IDX = 1 # macro -mmCB_COLOR4_DCC_BASE = 0x0361 # macro -mmCB_COLOR4_DCC_BASE_BASE_IDX = 1 # macro -mmCB_COLOR5_BASE = 0x0363 # macro -mmCB_COLOR5_BASE_BASE_IDX = 1 # macro -mmCB_COLOR5_PITCH = 0x0364 # macro -mmCB_COLOR5_PITCH_BASE_IDX = 1 # macro -mmCB_COLOR5_SLICE = 0x0365 # macro -mmCB_COLOR5_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR5_VIEW = 0x0366 # macro -mmCB_COLOR5_VIEW_BASE_IDX = 1 # macro -mmCB_COLOR5_INFO = 0x0367 # macro -mmCB_COLOR5_INFO_BASE_IDX = 1 # macro -mmCB_COLOR5_ATTRIB = 0x0368 # macro -mmCB_COLOR5_ATTRIB_BASE_IDX = 1 # macro -mmCB_COLOR5_DCC_CONTROL = 0x0369 # macro -mmCB_COLOR5_DCC_CONTROL_BASE_IDX = 1 # macro -mmCB_COLOR5_CMASK = 0x036a # macro -mmCB_COLOR5_CMASK_BASE_IDX = 1 # macro -mmCB_COLOR5_CMASK_SLICE = 0x036b # macro -mmCB_COLOR5_CMASK_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR5_FMASK = 0x036c # macro -mmCB_COLOR5_FMASK_BASE_IDX = 1 # macro -mmCB_COLOR5_FMASK_SLICE = 0x036d # macro -mmCB_COLOR5_FMASK_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR5_CLEAR_WORD0 = 0x036e # macro -mmCB_COLOR5_CLEAR_WORD0_BASE_IDX = 1 # macro -mmCB_COLOR5_CLEAR_WORD1 = 0x036f # macro -mmCB_COLOR5_CLEAR_WORD1_BASE_IDX = 1 # macro -mmCB_COLOR5_DCC_BASE = 0x0370 # macro -mmCB_COLOR5_DCC_BASE_BASE_IDX = 1 # macro -mmCB_COLOR6_BASE = 0x0372 # macro -mmCB_COLOR6_BASE_BASE_IDX = 1 # macro -mmCB_COLOR6_PITCH = 0x0373 # macro -mmCB_COLOR6_PITCH_BASE_IDX = 1 # macro -mmCB_COLOR6_SLICE = 0x0374 # macro -mmCB_COLOR6_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR6_VIEW = 0x0375 # macro -mmCB_COLOR6_VIEW_BASE_IDX = 1 # macro -mmCB_COLOR6_INFO = 0x0376 # macro -mmCB_COLOR6_INFO_BASE_IDX = 1 # macro -mmCB_COLOR6_ATTRIB = 0x0377 # macro -mmCB_COLOR6_ATTRIB_BASE_IDX = 1 # macro -mmCB_COLOR6_DCC_CONTROL = 0x0378 # macro -mmCB_COLOR6_DCC_CONTROL_BASE_IDX = 1 # macro -mmCB_COLOR6_CMASK = 0x0379 # macro -mmCB_COLOR6_CMASK_BASE_IDX = 1 # macro -mmCB_COLOR6_CMASK_SLICE = 0x037a # macro -mmCB_COLOR6_CMASK_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR6_FMASK = 0x037b # macro -mmCB_COLOR6_FMASK_BASE_IDX = 1 # macro -mmCB_COLOR6_FMASK_SLICE = 0x037c # macro -mmCB_COLOR6_FMASK_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR6_CLEAR_WORD0 = 0x037d # macro -mmCB_COLOR6_CLEAR_WORD0_BASE_IDX = 1 # macro -mmCB_COLOR6_CLEAR_WORD1 = 0x037e # macro -mmCB_COLOR6_CLEAR_WORD1_BASE_IDX = 1 # macro -mmCB_COLOR6_DCC_BASE = 0x037f # macro -mmCB_COLOR6_DCC_BASE_BASE_IDX = 1 # macro -mmCB_COLOR7_BASE = 0x0381 # macro -mmCB_COLOR7_BASE_BASE_IDX = 1 # macro -mmCB_COLOR7_PITCH = 0x0382 # macro -mmCB_COLOR7_PITCH_BASE_IDX = 1 # macro -mmCB_COLOR7_SLICE = 0x0383 # macro -mmCB_COLOR7_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR7_VIEW = 0x0384 # macro -mmCB_COLOR7_VIEW_BASE_IDX = 1 # macro -mmCB_COLOR7_INFO = 0x0385 # macro -mmCB_COLOR7_INFO_BASE_IDX = 1 # macro -mmCB_COLOR7_ATTRIB = 0x0386 # macro -mmCB_COLOR7_ATTRIB_BASE_IDX = 1 # macro -mmCB_COLOR7_DCC_CONTROL = 0x0387 # macro -mmCB_COLOR7_DCC_CONTROL_BASE_IDX = 1 # macro -mmCB_COLOR7_CMASK = 0x0388 # macro -mmCB_COLOR7_CMASK_BASE_IDX = 1 # macro -mmCB_COLOR7_CMASK_SLICE = 0x0389 # macro -mmCB_COLOR7_CMASK_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR7_FMASK = 0x038a # macro -mmCB_COLOR7_FMASK_BASE_IDX = 1 # macro -mmCB_COLOR7_FMASK_SLICE = 0x038b # macro -mmCB_COLOR7_FMASK_SLICE_BASE_IDX = 1 # macro -mmCB_COLOR7_CLEAR_WORD0 = 0x038c # macro -mmCB_COLOR7_CLEAR_WORD0_BASE_IDX = 1 # macro -mmCB_COLOR7_CLEAR_WORD1 = 0x038d # macro -mmCB_COLOR7_CLEAR_WORD1_BASE_IDX = 1 # macro -mmCB_COLOR7_DCC_BASE = 0x038e # macro -mmCB_COLOR7_DCC_BASE_BASE_IDX = 1 # macro -mmCB_COLOR0_BASE_EXT = 0x0390 # macro -mmCB_COLOR0_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR1_BASE_EXT = 0x0391 # macro -mmCB_COLOR1_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR2_BASE_EXT = 0x0392 # macro -mmCB_COLOR2_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR3_BASE_EXT = 0x0393 # macro -mmCB_COLOR3_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR4_BASE_EXT = 0x0394 # macro -mmCB_COLOR4_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR5_BASE_EXT = 0x0395 # macro -mmCB_COLOR5_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR6_BASE_EXT = 0x0396 # macro -mmCB_COLOR6_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR7_BASE_EXT = 0x0397 # macro -mmCB_COLOR7_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR0_CMASK_BASE_EXT = 0x0398 # macro -mmCB_COLOR0_CMASK_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR1_CMASK_BASE_EXT = 0x0399 # macro -mmCB_COLOR1_CMASK_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR2_CMASK_BASE_EXT = 0x039a # macro -mmCB_COLOR2_CMASK_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR3_CMASK_BASE_EXT = 0x039b # macro -mmCB_COLOR3_CMASK_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR4_CMASK_BASE_EXT = 0x039c # macro -mmCB_COLOR4_CMASK_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR5_CMASK_BASE_EXT = 0x039d # macro -mmCB_COLOR5_CMASK_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR6_CMASK_BASE_EXT = 0x039e # macro -mmCB_COLOR6_CMASK_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR7_CMASK_BASE_EXT = 0x039f # macro -mmCB_COLOR7_CMASK_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR0_FMASK_BASE_EXT = 0x03a0 # macro -mmCB_COLOR0_FMASK_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR1_FMASK_BASE_EXT = 0x03a1 # macro -mmCB_COLOR1_FMASK_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR2_FMASK_BASE_EXT = 0x03a2 # macro -mmCB_COLOR2_FMASK_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR3_FMASK_BASE_EXT = 0x03a3 # macro -mmCB_COLOR3_FMASK_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR4_FMASK_BASE_EXT = 0x03a4 # macro -mmCB_COLOR4_FMASK_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR5_FMASK_BASE_EXT = 0x03a5 # macro -mmCB_COLOR5_FMASK_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR6_FMASK_BASE_EXT = 0x03a6 # macro -mmCB_COLOR6_FMASK_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR7_FMASK_BASE_EXT = 0x03a7 # macro -mmCB_COLOR7_FMASK_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR0_DCC_BASE_EXT = 0x03a8 # macro -mmCB_COLOR0_DCC_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR1_DCC_BASE_EXT = 0x03a9 # macro -mmCB_COLOR1_DCC_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR2_DCC_BASE_EXT = 0x03aa # macro -mmCB_COLOR2_DCC_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR3_DCC_BASE_EXT = 0x03ab # macro -mmCB_COLOR3_DCC_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR4_DCC_BASE_EXT = 0x03ac # macro -mmCB_COLOR4_DCC_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR5_DCC_BASE_EXT = 0x03ad # macro -mmCB_COLOR5_DCC_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR6_DCC_BASE_EXT = 0x03ae # macro -mmCB_COLOR6_DCC_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR7_DCC_BASE_EXT = 0x03af # macro -mmCB_COLOR7_DCC_BASE_EXT_BASE_IDX = 1 # macro -mmCB_COLOR0_ATTRIB2 = 0x03b0 # macro -mmCB_COLOR0_ATTRIB2_BASE_IDX = 1 # macro -mmCB_COLOR1_ATTRIB2 = 0x03b1 # macro -mmCB_COLOR1_ATTRIB2_BASE_IDX = 1 # macro -mmCB_COLOR2_ATTRIB2 = 0x03b2 # macro -mmCB_COLOR2_ATTRIB2_BASE_IDX = 1 # macro -mmCB_COLOR3_ATTRIB2 = 0x03b3 # macro -mmCB_COLOR3_ATTRIB2_BASE_IDX = 1 # macro -mmCB_COLOR4_ATTRIB2 = 0x03b4 # macro -mmCB_COLOR4_ATTRIB2_BASE_IDX = 1 # macro -mmCB_COLOR5_ATTRIB2 = 0x03b5 # macro -mmCB_COLOR5_ATTRIB2_BASE_IDX = 1 # macro -mmCB_COLOR6_ATTRIB2 = 0x03b6 # macro -mmCB_COLOR6_ATTRIB2_BASE_IDX = 1 # macro -mmCB_COLOR7_ATTRIB2 = 0x03b7 # macro -mmCB_COLOR7_ATTRIB2_BASE_IDX = 1 # macro -mmCB_COLOR0_ATTRIB3 = 0x03b8 # macro -mmCB_COLOR0_ATTRIB3_BASE_IDX = 1 # macro -mmCB_COLOR1_ATTRIB3 = 0x03b9 # macro -mmCB_COLOR1_ATTRIB3_BASE_IDX = 1 # macro -mmCB_COLOR2_ATTRIB3 = 0x03ba # macro -mmCB_COLOR2_ATTRIB3_BASE_IDX = 1 # macro -mmCB_COLOR3_ATTRIB3 = 0x03bb # macro -mmCB_COLOR3_ATTRIB3_BASE_IDX = 1 # macro -mmCB_COLOR4_ATTRIB3 = 0x03bc # macro -mmCB_COLOR4_ATTRIB3_BASE_IDX = 1 # macro -mmCB_COLOR5_ATTRIB3 = 0x03bd # macro -mmCB_COLOR5_ATTRIB3_BASE_IDX = 1 # macro -mmCB_COLOR6_ATTRIB3 = 0x03be # macro -mmCB_COLOR6_ATTRIB3_BASE_IDX = 1 # macro -mmCB_COLOR7_ATTRIB3 = 0x03bf # macro -mmCB_COLOR7_ATTRIB3_BASE_IDX = 1 # macro -mmCP_EOP_DONE_ADDR_LO = 0x2000 # macro -mmCP_EOP_DONE_ADDR_LO_BASE_IDX = 1 # macro -mmCP_EOP_DONE_ADDR_HI = 0x2001 # macro -mmCP_EOP_DONE_ADDR_HI_BASE_IDX = 1 # macro -mmCP_EOP_DONE_DATA_LO = 0x2002 # macro -mmCP_EOP_DONE_DATA_LO_BASE_IDX = 1 # macro -mmCP_EOP_DONE_DATA_HI = 0x2003 # macro -mmCP_EOP_DONE_DATA_HI_BASE_IDX = 1 # macro -mmCP_EOP_LAST_FENCE_LO = 0x2004 # macro -mmCP_EOP_LAST_FENCE_LO_BASE_IDX = 1 # macro -mmCP_EOP_LAST_FENCE_HI = 0x2005 # macro -mmCP_EOP_LAST_FENCE_HI_BASE_IDX = 1 # macro -mmCP_STREAM_OUT_ADDR_LO = 0x2006 # macro -mmCP_STREAM_OUT_ADDR_LO_BASE_IDX = 1 # macro -mmCP_STREAM_OUT_ADDR_HI = 0x2007 # macro -mmCP_STREAM_OUT_ADDR_HI_BASE_IDX = 1 # macro -mmCP_NUM_PRIM_WRITTEN_COUNT0_LO = 0x2008 # macro -mmCP_NUM_PRIM_WRITTEN_COUNT0_LO_BASE_IDX = 1 # macro -mmCP_NUM_PRIM_WRITTEN_COUNT0_HI = 0x2009 # macro -mmCP_NUM_PRIM_WRITTEN_COUNT0_HI_BASE_IDX = 1 # macro -mmCP_NUM_PRIM_NEEDED_COUNT0_LO = 0x200a # macro -mmCP_NUM_PRIM_NEEDED_COUNT0_LO_BASE_IDX = 1 # macro -mmCP_NUM_PRIM_NEEDED_COUNT0_HI = 0x200b # macro -mmCP_NUM_PRIM_NEEDED_COUNT0_HI_BASE_IDX = 1 # macro -mmCP_NUM_PRIM_WRITTEN_COUNT1_LO = 0x200c # macro -mmCP_NUM_PRIM_WRITTEN_COUNT1_LO_BASE_IDX = 1 # macro -mmCP_NUM_PRIM_WRITTEN_COUNT1_HI = 0x200d # macro -mmCP_NUM_PRIM_WRITTEN_COUNT1_HI_BASE_IDX = 1 # macro -mmCP_NUM_PRIM_NEEDED_COUNT1_LO = 0x200e # macro -mmCP_NUM_PRIM_NEEDED_COUNT1_LO_BASE_IDX = 1 # macro -mmCP_NUM_PRIM_NEEDED_COUNT1_HI = 0x200f # macro -mmCP_NUM_PRIM_NEEDED_COUNT1_HI_BASE_IDX = 1 # macro -mmCP_NUM_PRIM_WRITTEN_COUNT2_LO = 0x2010 # macro -mmCP_NUM_PRIM_WRITTEN_COUNT2_LO_BASE_IDX = 1 # macro -mmCP_NUM_PRIM_WRITTEN_COUNT2_HI = 0x2011 # macro -mmCP_NUM_PRIM_WRITTEN_COUNT2_HI_BASE_IDX = 1 # macro -mmCP_NUM_PRIM_NEEDED_COUNT2_LO = 0x2012 # macro -mmCP_NUM_PRIM_NEEDED_COUNT2_LO_BASE_IDX = 1 # macro -mmCP_NUM_PRIM_NEEDED_COUNT2_HI = 0x2013 # macro -mmCP_NUM_PRIM_NEEDED_COUNT2_HI_BASE_IDX = 1 # macro -mmCP_NUM_PRIM_WRITTEN_COUNT3_LO = 0x2014 # macro -mmCP_NUM_PRIM_WRITTEN_COUNT3_LO_BASE_IDX = 1 # macro -mmCP_NUM_PRIM_WRITTEN_COUNT3_HI = 0x2015 # macro -mmCP_NUM_PRIM_WRITTEN_COUNT3_HI_BASE_IDX = 1 # macro -mmCP_NUM_PRIM_NEEDED_COUNT3_LO = 0x2016 # macro -mmCP_NUM_PRIM_NEEDED_COUNT3_LO_BASE_IDX = 1 # macro -mmCP_NUM_PRIM_NEEDED_COUNT3_HI = 0x2017 # macro -mmCP_NUM_PRIM_NEEDED_COUNT3_HI_BASE_IDX = 1 # macro -mmCP_PIPE_STATS_ADDR_LO = 0x2018 # macro -mmCP_PIPE_STATS_ADDR_LO_BASE_IDX = 1 # macro -mmCP_PIPE_STATS_ADDR_HI = 0x2019 # macro -mmCP_PIPE_STATS_ADDR_HI_BASE_IDX = 1 # macro -mmCP_VGT_IAVERT_COUNT_LO = 0x201a # macro -mmCP_VGT_IAVERT_COUNT_LO_BASE_IDX = 1 # macro -mmCP_VGT_IAVERT_COUNT_HI = 0x201b # macro -mmCP_VGT_IAVERT_COUNT_HI_BASE_IDX = 1 # macro -mmCP_VGT_IAPRIM_COUNT_LO = 0x201c # macro -mmCP_VGT_IAPRIM_COUNT_LO_BASE_IDX = 1 # macro -mmCP_VGT_IAPRIM_COUNT_HI = 0x201d # macro -mmCP_VGT_IAPRIM_COUNT_HI_BASE_IDX = 1 # macro -mmCP_VGT_GSPRIM_COUNT_LO = 0x201e # macro -mmCP_VGT_GSPRIM_COUNT_LO_BASE_IDX = 1 # macro -mmCP_VGT_GSPRIM_COUNT_HI = 0x201f # macro -mmCP_VGT_GSPRIM_COUNT_HI_BASE_IDX = 1 # macro -mmCP_VGT_VSINVOC_COUNT_LO = 0x2020 # macro -mmCP_VGT_VSINVOC_COUNT_LO_BASE_IDX = 1 # macro -mmCP_VGT_VSINVOC_COUNT_HI = 0x2021 # macro -mmCP_VGT_VSINVOC_COUNT_HI_BASE_IDX = 1 # macro -mmCP_VGT_GSINVOC_COUNT_LO = 0x2022 # macro -mmCP_VGT_GSINVOC_COUNT_LO_BASE_IDX = 1 # macro -mmCP_VGT_GSINVOC_COUNT_HI = 0x2023 # macro -mmCP_VGT_GSINVOC_COUNT_HI_BASE_IDX = 1 # macro -mmCP_VGT_HSINVOC_COUNT_LO = 0x2024 # macro -mmCP_VGT_HSINVOC_COUNT_LO_BASE_IDX = 1 # macro -mmCP_VGT_HSINVOC_COUNT_HI = 0x2025 # macro -mmCP_VGT_HSINVOC_COUNT_HI_BASE_IDX = 1 # macro -mmCP_VGT_DSINVOC_COUNT_LO = 0x2026 # macro -mmCP_VGT_DSINVOC_COUNT_LO_BASE_IDX = 1 # macro -mmCP_VGT_DSINVOC_COUNT_HI = 0x2027 # macro -mmCP_VGT_DSINVOC_COUNT_HI_BASE_IDX = 1 # macro -mmCP_PA_CINVOC_COUNT_LO = 0x2028 # macro -mmCP_PA_CINVOC_COUNT_LO_BASE_IDX = 1 # macro -mmCP_PA_CINVOC_COUNT_HI = 0x2029 # macro -mmCP_PA_CINVOC_COUNT_HI_BASE_IDX = 1 # macro -mmCP_PA_CPRIM_COUNT_LO = 0x202a # macro -mmCP_PA_CPRIM_COUNT_LO_BASE_IDX = 1 # macro -mmCP_PA_CPRIM_COUNT_HI = 0x202b # macro -mmCP_PA_CPRIM_COUNT_HI_BASE_IDX = 1 # macro -mmCP_SC_PSINVOC_COUNT0_LO = 0x202c # macro -mmCP_SC_PSINVOC_COUNT0_LO_BASE_IDX = 1 # macro -mmCP_SC_PSINVOC_COUNT0_HI = 0x202d # macro -mmCP_SC_PSINVOC_COUNT0_HI_BASE_IDX = 1 # macro -mmCP_SC_PSINVOC_COUNT1_LO = 0x202e # macro -mmCP_SC_PSINVOC_COUNT1_LO_BASE_IDX = 1 # macro -mmCP_SC_PSINVOC_COUNT1_HI = 0x202f # macro -mmCP_SC_PSINVOC_COUNT1_HI_BASE_IDX = 1 # macro -mmCP_VGT_CSINVOC_COUNT_LO = 0x2030 # macro -mmCP_VGT_CSINVOC_COUNT_LO_BASE_IDX = 1 # macro -mmCP_VGT_CSINVOC_COUNT_HI = 0x2031 # macro -mmCP_VGT_CSINVOC_COUNT_HI_BASE_IDX = 1 # macro -mmCP_PIPE_STATS_CONTROL = 0x203d # macro -mmCP_PIPE_STATS_CONTROL_BASE_IDX = 1 # macro -mmCP_STREAM_OUT_CONTROL = 0x203e # macro -mmCP_STREAM_OUT_CONTROL_BASE_IDX = 1 # macro -mmCP_STRMOUT_CNTL = 0x203f # macro -mmCP_STRMOUT_CNTL_BASE_IDX = 1 # macro -mmSCRATCH_REG0 = 0x2040 # macro -mmSCRATCH_REG0_BASE_IDX = 1 # macro -mmSCRATCH_REG1 = 0x2041 # macro -mmSCRATCH_REG1_BASE_IDX = 1 # macro -mmSCRATCH_REG2 = 0x2042 # macro -mmSCRATCH_REG2_BASE_IDX = 1 # macro -mmSCRATCH_REG3 = 0x2043 # macro -mmSCRATCH_REG3_BASE_IDX = 1 # macro -mmSCRATCH_REG4 = 0x2044 # macro -mmSCRATCH_REG4_BASE_IDX = 1 # macro -mmSCRATCH_REG5 = 0x2045 # macro -mmSCRATCH_REG5_BASE_IDX = 1 # macro -mmSCRATCH_REG6 = 0x2046 # macro -mmSCRATCH_REG6_BASE_IDX = 1 # macro -mmSCRATCH_REG7 = 0x2047 # macro -mmSCRATCH_REG7_BASE_IDX = 1 # macro -mmSCRATCH_REG_ATOMIC = 0x2048 # macro -mmSCRATCH_REG_ATOMIC_BASE_IDX = 1 # macro -mmSCRATCH_REG_CMPSWAP_ATOMIC = 0x2048 # macro -mmSCRATCH_REG_CMPSWAP_ATOMIC_BASE_IDX = 1 # macro -mmCP_APPEND_DDID_CNT = 0x204b # macro -mmCP_APPEND_DDID_CNT_BASE_IDX = 1 # macro -mmCP_APPEND_DATA_HI = 0x204c # macro -mmCP_APPEND_DATA_HI_BASE_IDX = 1 # macro -mmCP_APPEND_LAST_CS_FENCE_HI = 0x204d # macro -mmCP_APPEND_LAST_CS_FENCE_HI_BASE_IDX = 1 # macro -mmCP_APPEND_LAST_PS_FENCE_HI = 0x204e # macro -mmCP_APPEND_LAST_PS_FENCE_HI_BASE_IDX = 1 # macro -mmSCRATCH_UMSK = 0x2050 # macro -mmSCRATCH_UMSK_BASE_IDX = 1 # macro -mmSCRATCH_ADDR = 0x2051 # macro -mmSCRATCH_ADDR_BASE_IDX = 1 # macro -mmCP_PFP_ATOMIC_PREOP_LO = 0x2052 # macro -mmCP_PFP_ATOMIC_PREOP_LO_BASE_IDX = 1 # macro -mmCP_PFP_ATOMIC_PREOP_HI = 0x2053 # macro -mmCP_PFP_ATOMIC_PREOP_HI_BASE_IDX = 1 # macro -mmCP_PFP_GDS_ATOMIC0_PREOP_LO = 0x2054 # macro -mmCP_PFP_GDS_ATOMIC0_PREOP_LO_BASE_IDX = 1 # macro -mmCP_PFP_GDS_ATOMIC0_PREOP_HI = 0x2055 # macro -mmCP_PFP_GDS_ATOMIC0_PREOP_HI_BASE_IDX = 1 # macro -mmCP_PFP_GDS_ATOMIC1_PREOP_LO = 0x2056 # macro -mmCP_PFP_GDS_ATOMIC1_PREOP_LO_BASE_IDX = 1 # macro -mmCP_PFP_GDS_ATOMIC1_PREOP_HI = 0x2057 # macro -mmCP_PFP_GDS_ATOMIC1_PREOP_HI_BASE_IDX = 1 # macro -mmCP_APPEND_ADDR_LO = 0x2058 # macro -mmCP_APPEND_ADDR_LO_BASE_IDX = 1 # macro -mmCP_APPEND_ADDR_HI = 0x2059 # macro -mmCP_APPEND_ADDR_HI_BASE_IDX = 1 # macro -mmCP_APPEND_DATA = 0x205a # macro -mmCP_APPEND_DATA_BASE_IDX = 1 # macro -mmCP_APPEND_DATA_LO = 0x205a # macro -mmCP_APPEND_DATA_LO_BASE_IDX = 1 # macro -mmCP_APPEND_LAST_CS_FENCE = 0x205b # macro -mmCP_APPEND_LAST_CS_FENCE_BASE_IDX = 1 # macro -mmCP_APPEND_LAST_CS_FENCE_LO = 0x205b # macro -mmCP_APPEND_LAST_CS_FENCE_LO_BASE_IDX = 1 # macro -mmCP_APPEND_LAST_PS_FENCE = 0x205c # macro -mmCP_APPEND_LAST_PS_FENCE_BASE_IDX = 1 # macro -mmCP_APPEND_LAST_PS_FENCE_LO = 0x205c # macro -mmCP_APPEND_LAST_PS_FENCE_LO_BASE_IDX = 1 # macro -mmCP_ATOMIC_PREOP_LO = 0x205d # macro -mmCP_ATOMIC_PREOP_LO_BASE_IDX = 1 # macro -mmCP_ME_ATOMIC_PREOP_LO = 0x205d # macro -mmCP_ME_ATOMIC_PREOP_LO_BASE_IDX = 1 # macro -mmCP_ATOMIC_PREOP_HI = 0x205e # macro -mmCP_ATOMIC_PREOP_HI_BASE_IDX = 1 # macro -mmCP_ME_ATOMIC_PREOP_HI = 0x205e # macro -mmCP_ME_ATOMIC_PREOP_HI_BASE_IDX = 1 # macro -mmCP_GDS_ATOMIC0_PREOP_LO = 0x205f # macro -mmCP_GDS_ATOMIC0_PREOP_LO_BASE_IDX = 1 # macro -mmCP_ME_GDS_ATOMIC0_PREOP_LO = 0x205f # macro -mmCP_ME_GDS_ATOMIC0_PREOP_LO_BASE_IDX = 1 # macro -mmCP_GDS_ATOMIC0_PREOP_HI = 0x2060 # macro -mmCP_GDS_ATOMIC0_PREOP_HI_BASE_IDX = 1 # macro -mmCP_ME_GDS_ATOMIC0_PREOP_HI = 0x2060 # macro -mmCP_ME_GDS_ATOMIC0_PREOP_HI_BASE_IDX = 1 # macro -mmCP_GDS_ATOMIC1_PREOP_LO = 0x2061 # macro -mmCP_GDS_ATOMIC1_PREOP_LO_BASE_IDX = 1 # macro -mmCP_ME_GDS_ATOMIC1_PREOP_LO = 0x2061 # macro -mmCP_ME_GDS_ATOMIC1_PREOP_LO_BASE_IDX = 1 # macro -mmCP_GDS_ATOMIC1_PREOP_HI = 0x2062 # macro -mmCP_GDS_ATOMIC1_PREOP_HI_BASE_IDX = 1 # macro -mmCP_ME_GDS_ATOMIC1_PREOP_HI = 0x2062 # macro -mmCP_ME_GDS_ATOMIC1_PREOP_HI_BASE_IDX = 1 # macro -mmCP_ME_MC_WADDR_LO = 0x2069 # macro -mmCP_ME_MC_WADDR_LO_BASE_IDX = 1 # macro -mmCP_ME_MC_WADDR_HI = 0x206a # macro -mmCP_ME_MC_WADDR_HI_BASE_IDX = 1 # macro -mmCP_ME_MC_WDATA_LO = 0x206b # macro -mmCP_ME_MC_WDATA_LO_BASE_IDX = 1 # macro -mmCP_ME_MC_WDATA_HI = 0x206c # macro -mmCP_ME_MC_WDATA_HI_BASE_IDX = 1 # macro -mmCP_ME_MC_RADDR_LO = 0x206d # macro -mmCP_ME_MC_RADDR_LO_BASE_IDX = 1 # macro -mmCP_ME_MC_RADDR_HI = 0x206e # macro -mmCP_ME_MC_RADDR_HI_BASE_IDX = 1 # macro -mmCP_SEM_WAIT_TIMER = 0x206f # macro -mmCP_SEM_WAIT_TIMER_BASE_IDX = 1 # macro -mmCP_SIG_SEM_ADDR_LO = 0x2070 # macro -mmCP_SIG_SEM_ADDR_LO_BASE_IDX = 1 # macro -mmCP_SIG_SEM_ADDR_HI = 0x2071 # macro -mmCP_SIG_SEM_ADDR_HI_BASE_IDX = 1 # macro -mmCP_WAIT_REG_MEM_TIMEOUT = 0x2074 # macro -mmCP_WAIT_REG_MEM_TIMEOUT_BASE_IDX = 1 # macro -mmCP_WAIT_SEM_ADDR_LO = 0x2075 # macro -mmCP_WAIT_SEM_ADDR_LO_BASE_IDX = 1 # macro -mmCP_WAIT_SEM_ADDR_HI = 0x2076 # macro -mmCP_WAIT_SEM_ADDR_HI_BASE_IDX = 1 # macro -mmCP_DMA_PFP_CONTROL = 0x2077 # macro -mmCP_DMA_PFP_CONTROL_BASE_IDX = 1 # macro -mmCP_DMA_ME_CONTROL = 0x2078 # macro -mmCP_DMA_ME_CONTROL_BASE_IDX = 1 # macro -mmCP_COHER_BASE_HI = 0x2079 # macro -mmCP_COHER_BASE_HI_BASE_IDX = 1 # macro -mmCP_COHER_START_DELAY = 0x207b # macro -mmCP_COHER_START_DELAY_BASE_IDX = 1 # macro -mmCP_COHER_CNTL = 0x207c # macro -mmCP_COHER_CNTL_BASE_IDX = 1 # macro -mmCP_COHER_SIZE = 0x207d # macro -mmCP_COHER_SIZE_BASE_IDX = 1 # macro -mmCP_COHER_BASE = 0x207e # macro -mmCP_COHER_BASE_BASE_IDX = 1 # macro -mmCP_COHER_STATUS = 0x207f # macro -mmCP_COHER_STATUS_BASE_IDX = 1 # macro -mmCP_DMA_ME_SRC_ADDR = 0x2080 # macro -mmCP_DMA_ME_SRC_ADDR_BASE_IDX = 1 # macro -mmCP_DMA_ME_SRC_ADDR_HI = 0x2081 # macro -mmCP_DMA_ME_SRC_ADDR_HI_BASE_IDX = 1 # macro -mmCP_DMA_ME_DST_ADDR = 0x2082 # macro -mmCP_DMA_ME_DST_ADDR_BASE_IDX = 1 # macro -mmCP_DMA_ME_DST_ADDR_HI = 0x2083 # macro -mmCP_DMA_ME_DST_ADDR_HI_BASE_IDX = 1 # macro -mmCP_DMA_ME_COMMAND = 0x2084 # macro -mmCP_DMA_ME_COMMAND_BASE_IDX = 1 # macro -mmCP_DMA_PFP_SRC_ADDR = 0x2085 # macro -mmCP_DMA_PFP_SRC_ADDR_BASE_IDX = 1 # macro -mmCP_DMA_PFP_SRC_ADDR_HI = 0x2086 # macro -mmCP_DMA_PFP_SRC_ADDR_HI_BASE_IDX = 1 # macro -mmCP_DMA_PFP_DST_ADDR = 0x2087 # macro -mmCP_DMA_PFP_DST_ADDR_BASE_IDX = 1 # macro -mmCP_DMA_PFP_DST_ADDR_HI = 0x2088 # macro -mmCP_DMA_PFP_DST_ADDR_HI_BASE_IDX = 1 # macro -mmCP_DMA_PFP_COMMAND = 0x2089 # macro -mmCP_DMA_PFP_COMMAND_BASE_IDX = 1 # macro -mmCP_DMA_CNTL = 0x208a # macro -mmCP_DMA_CNTL_BASE_IDX = 1 # macro -mmCP_DMA_READ_TAGS = 0x208b # macro -mmCP_DMA_READ_TAGS_BASE_IDX = 1 # macro -mmCP_COHER_SIZE_HI = 0x208c # macro -mmCP_COHER_SIZE_HI_BASE_IDX = 1 # macro -mmCP_PFP_IB_CONTROL = 0x208d # macro -mmCP_PFP_IB_CONTROL_BASE_IDX = 1 # macro -mmCP_PFP_LOAD_CONTROL = 0x208e # macro -mmCP_PFP_LOAD_CONTROL_BASE_IDX = 1 # macro -mmCP_SCRATCH_INDEX = 0x208f # macro -mmCP_SCRATCH_INDEX_BASE_IDX = 1 # macro -mmCP_SCRATCH_DATA = 0x2090 # macro -mmCP_SCRATCH_DATA_BASE_IDX = 1 # macro -mmCP_RB_OFFSET = 0x2091 # macro -mmCP_RB_OFFSET_BASE_IDX = 1 # macro -mmCP_IB2_OFFSET = 0x2093 # macro -mmCP_IB2_OFFSET_BASE_IDX = 1 # macro -mmCP_IB2_PREAMBLE_BEGIN = 0x2096 # macro -mmCP_IB2_PREAMBLE_BEGIN_BASE_IDX = 1 # macro -mmCP_IB2_PREAMBLE_END = 0x2097 # macro -mmCP_IB2_PREAMBLE_END_BASE_IDX = 1 # macro -mmCP_CE_IB1_OFFSET = 0x2098 # macro -mmCP_CE_IB1_OFFSET_BASE_IDX = 1 # macro -mmCP_CE_IB2_OFFSET = 0x2099 # macro -mmCP_CE_IB2_OFFSET_BASE_IDX = 1 # macro -mmCP_CE_COUNTER = 0x209a # macro -mmCP_CE_COUNTER_BASE_IDX = 1 # macro -mmCP_DMA_ME_CMD_ADDR_LO = 0x209c # macro -mmCP_DMA_ME_CMD_ADDR_LO_BASE_IDX = 1 # macro -mmCP_DMA_ME_CMD_ADDR_HI = 0x209d # macro -mmCP_DMA_ME_CMD_ADDR_HI_BASE_IDX = 1 # macro -mmCP_DMA_PFP_CMD_ADDR_LO = 0x209e # macro -mmCP_DMA_PFP_CMD_ADDR_LO_BASE_IDX = 1 # macro -mmCP_DMA_PFP_CMD_ADDR_HI = 0x209f # macro -mmCP_DMA_PFP_CMD_ADDR_HI_BASE_IDX = 1 # macro -mmCP_APPEND_CMD_ADDR_LO = 0x20a0 # macro -mmCP_APPEND_CMD_ADDR_LO_BASE_IDX = 1 # macro -mmCP_APPEND_CMD_ADDR_HI = 0x20a1 # macro -mmCP_APPEND_CMD_ADDR_HI_BASE_IDX = 1 # macro -mmUCONFIG_RESERVED_REG0 = 0x20a2 # macro -mmUCONFIG_RESERVED_REG0_BASE_IDX = 1 # macro -mmUCONFIG_RESERVED_REG1 = 0x20a3 # macro -mmUCONFIG_RESERVED_REG1_BASE_IDX = 1 # macro -mmCP_CE_ATOMIC_PREOP_LO = 0x20a8 # macro -mmCP_CE_ATOMIC_PREOP_LO_BASE_IDX = 1 # macro -mmCP_CE_ATOMIC_PREOP_HI = 0x20a9 # macro -mmCP_CE_ATOMIC_PREOP_HI_BASE_IDX = 1 # macro -mmCP_CE_GDS_ATOMIC0_PREOP_LO = 0x20aa # macro -mmCP_CE_GDS_ATOMIC0_PREOP_LO_BASE_IDX = 1 # macro -mmCP_CE_GDS_ATOMIC0_PREOP_HI = 0x20ab # macro -mmCP_CE_GDS_ATOMIC0_PREOP_HI_BASE_IDX = 1 # macro -mmCP_CE_GDS_ATOMIC1_PREOP_LO = 0x20ac # macro -mmCP_CE_GDS_ATOMIC1_PREOP_LO_BASE_IDX = 1 # macro -mmCP_CE_GDS_ATOMIC1_PREOP_HI = 0x20ad # macro -mmCP_CE_GDS_ATOMIC1_PREOP_HI_BASE_IDX = 1 # macro -mmCP_CE_INIT_CMD_BUFSZ = 0x20bd # macro -mmCP_CE_INIT_CMD_BUFSZ_BASE_IDX = 1 # macro -mmCP_CE_IB1_CMD_BUFSZ = 0x20be # macro -mmCP_CE_IB1_CMD_BUFSZ_BASE_IDX = 1 # macro -mmCP_CE_IB2_CMD_BUFSZ = 0x20bf # macro -mmCP_CE_IB2_CMD_BUFSZ_BASE_IDX = 1 # macro -mmCP_IB2_CMD_BUFSZ = 0x20c1 # macro -mmCP_IB2_CMD_BUFSZ_BASE_IDX = 1 # macro -mmCP_ST_CMD_BUFSZ = 0x20c2 # macro -mmCP_ST_CMD_BUFSZ_BASE_IDX = 1 # macro -mmCP_CE_INIT_BASE_LO = 0x20c3 # macro -mmCP_CE_INIT_BASE_LO_BASE_IDX = 1 # macro -mmCP_CE_INIT_BASE_HI = 0x20c4 # macro -mmCP_CE_INIT_BASE_HI_BASE_IDX = 1 # macro -mmCP_CE_INIT_BUFSZ = 0x20c5 # macro -mmCP_CE_INIT_BUFSZ_BASE_IDX = 1 # macro -mmCP_CE_IB1_BASE_LO = 0x20c6 # macro -mmCP_CE_IB1_BASE_LO_BASE_IDX = 1 # macro -mmCP_CE_IB1_BASE_HI = 0x20c7 # macro -mmCP_CE_IB1_BASE_HI_BASE_IDX = 1 # macro -mmCP_CE_IB1_BUFSZ = 0x20c8 # macro -mmCP_CE_IB1_BUFSZ_BASE_IDX = 1 # macro -mmCP_CE_IB2_BASE_LO = 0x20c9 # macro -mmCP_CE_IB2_BASE_LO_BASE_IDX = 1 # macro -mmCP_CE_IB2_BASE_HI = 0x20ca # macro -mmCP_CE_IB2_BASE_HI_BASE_IDX = 1 # macro -mmCP_CE_IB2_BUFSZ = 0x20cb # macro -mmCP_CE_IB2_BUFSZ_BASE_IDX = 1 # macro -mmCP_IB1_BASE_LO = 0x20cc # macro -mmCP_IB1_BASE_LO_BASE_IDX = 1 # macro -mmCP_IB1_BASE_HI = 0x20cd # macro -mmCP_IB1_BASE_HI_BASE_IDX = 1 # macro -mmCP_IB1_BUFSZ = 0x20ce # macro -mmCP_IB1_BUFSZ_BASE_IDX = 1 # macro -mmCP_IB2_BASE_LO = 0x20cf # macro -mmCP_IB2_BASE_LO_BASE_IDX = 1 # macro -mmCP_IB2_BASE_HI = 0x20d0 # macro -mmCP_IB2_BASE_HI_BASE_IDX = 1 # macro -mmCP_IB2_BUFSZ = 0x20d1 # macro -mmCP_IB2_BUFSZ_BASE_IDX = 1 # macro -mmCP_ST_BASE_LO = 0x20d2 # macro -mmCP_ST_BASE_LO_BASE_IDX = 1 # macro -mmCP_ST_BASE_HI = 0x20d3 # macro -mmCP_ST_BASE_HI_BASE_IDX = 1 # macro -mmCP_ST_BUFSZ = 0x20d4 # macro -mmCP_ST_BUFSZ_BASE_IDX = 1 # macro -mmCP_EOP_DONE_EVENT_CNTL = 0x20d5 # macro -mmCP_EOP_DONE_EVENT_CNTL_BASE_IDX = 1 # macro -mmCP_EOP_DONE_DATA_CNTL = 0x20d6 # macro -mmCP_EOP_DONE_DATA_CNTL_BASE_IDX = 1 # macro -mmCP_EOP_DONE_CNTX_ID = 0x20d7 # macro -mmCP_EOP_DONE_CNTX_ID_BASE_IDX = 1 # macro -mmCP_DB_BASE_LO = 0x20d8 # macro -mmCP_DB_BASE_LO_BASE_IDX = 1 # macro -mmCP_DB_BASE_HI = 0x20d9 # macro -mmCP_DB_BASE_HI_BASE_IDX = 1 # macro -mmCP_DB_BUFSZ = 0x20da # macro -mmCP_DB_BUFSZ_BASE_IDX = 1 # macro -mmCP_DB_CMD_BUFSZ = 0x20db # macro -mmCP_DB_CMD_BUFSZ_BASE_IDX = 1 # macro -mmCP_CE_DB_BASE_LO = 0x20dc # macro -mmCP_CE_DB_BASE_LO_BASE_IDX = 1 # macro -mmCP_CE_DB_BASE_HI = 0x20dd # macro -mmCP_CE_DB_BASE_HI_BASE_IDX = 1 # macro -mmCP_CE_DB_BUFSZ = 0x20de # macro -mmCP_CE_DB_BUFSZ_BASE_IDX = 1 # macro -mmCP_CE_DB_CMD_BUFSZ = 0x20df # macro -mmCP_CE_DB_CMD_BUFSZ_BASE_IDX = 1 # macro -mmCP_PFP_COMPLETION_STATUS = 0x20ec # macro -mmCP_PFP_COMPLETION_STATUS_BASE_IDX = 1 # macro -mmCP_CE_COMPLETION_STATUS = 0x20ed # macro -mmCP_CE_COMPLETION_STATUS_BASE_IDX = 1 # macro -mmCP_PRED_NOT_VISIBLE = 0x20ee # macro -mmCP_PRED_NOT_VISIBLE_BASE_IDX = 1 # macro -mmCP_PFP_METADATA_BASE_ADDR = 0x20f0 # macro -mmCP_PFP_METADATA_BASE_ADDR_BASE_IDX = 1 # macro -mmCP_PFP_METADATA_BASE_ADDR_HI = 0x20f1 # macro -mmCP_PFP_METADATA_BASE_ADDR_HI_BASE_IDX = 1 # macro -mmCP_CE_METADATA_BASE_ADDR = 0x20f2 # macro -mmCP_CE_METADATA_BASE_ADDR_BASE_IDX = 1 # macro -mmCP_CE_METADATA_BASE_ADDR_HI = 0x20f3 # macro -mmCP_CE_METADATA_BASE_ADDR_HI_BASE_IDX = 1 # macro -mmCP_DRAW_INDX_INDR_ADDR = 0x20f4 # macro -mmCP_DRAW_INDX_INDR_ADDR_BASE_IDX = 1 # macro -mmCP_DRAW_INDX_INDR_ADDR_HI = 0x20f5 # macro -mmCP_DRAW_INDX_INDR_ADDR_HI_BASE_IDX = 1 # macro -mmCP_DISPATCH_INDR_ADDR = 0x20f6 # macro -mmCP_DISPATCH_INDR_ADDR_BASE_IDX = 1 # macro -mmCP_DISPATCH_INDR_ADDR_HI = 0x20f7 # macro -mmCP_DISPATCH_INDR_ADDR_HI_BASE_IDX = 1 # macro -mmCP_INDEX_BASE_ADDR = 0x20f8 # macro -mmCP_INDEX_BASE_ADDR_BASE_IDX = 1 # macro -mmCP_INDEX_BASE_ADDR_HI = 0x20f9 # macro -mmCP_INDEX_BASE_ADDR_HI_BASE_IDX = 1 # macro -mmCP_INDEX_TYPE = 0x20fa # macro -mmCP_INDEX_TYPE_BASE_IDX = 1 # macro -mmCP_GDS_BKUP_ADDR = 0x20fb # macro -mmCP_GDS_BKUP_ADDR_BASE_IDX = 1 # macro -mmCP_GDS_BKUP_ADDR_HI = 0x20fc # macro -mmCP_GDS_BKUP_ADDR_HI_BASE_IDX = 1 # macro -mmCP_SAMPLE_STATUS = 0x20fd # macro -mmCP_SAMPLE_STATUS_BASE_IDX = 1 # macro -mmCP_ME_COHER_CNTL = 0x20fe # macro -mmCP_ME_COHER_CNTL_BASE_IDX = 1 # macro -mmCP_ME_COHER_SIZE = 0x20ff # macro -mmCP_ME_COHER_SIZE_BASE_IDX = 1 # macro -mmCP_ME_COHER_SIZE_HI = 0x2100 # macro -mmCP_ME_COHER_SIZE_HI_BASE_IDX = 1 # macro -mmCP_ME_COHER_BASE = 0x2101 # macro -mmCP_ME_COHER_BASE_BASE_IDX = 1 # macro -mmCP_ME_COHER_BASE_HI = 0x2102 # macro -mmCP_ME_COHER_BASE_HI_BASE_IDX = 1 # macro -mmCP_ME_COHER_STATUS = 0x2103 # macro -mmCP_ME_COHER_STATUS_BASE_IDX = 1 # macro -mmRLC_GPM_PERF_COUNT_0 = 0x2140 # macro -mmRLC_GPM_PERF_COUNT_0_BASE_IDX = 1 # macro -mmRLC_GPM_PERF_COUNT_1 = 0x2141 # macro -mmRLC_GPM_PERF_COUNT_1_BASE_IDX = 1 # macro -mmGRBM_GFX_INDEX = 0x2200 # macro -mmGRBM_GFX_INDEX_BASE_IDX = 1 # macro -mmVGT_ESGS_RING_SIZE_UMD = 0x2240 # macro -mmVGT_ESGS_RING_SIZE_UMD_BASE_IDX = 1 # macro -mmVGT_GSVS_RING_SIZE_UMD = 0x2241 # macro -mmVGT_GSVS_RING_SIZE_UMD_BASE_IDX = 1 # macro -mmVGT_PRIMITIVE_TYPE = 0x2242 # macro -mmVGT_PRIMITIVE_TYPE_BASE_IDX = 1 # macro -mmVGT_INDEX_TYPE = 0x2243 # macro -mmVGT_INDEX_TYPE_BASE_IDX = 1 # macro -mmVGT_STRMOUT_BUFFER_FILLED_SIZE_0 = 0x2244 # macro -mmVGT_STRMOUT_BUFFER_FILLED_SIZE_0_BASE_IDX = 1 # macro -mmVGT_STRMOUT_BUFFER_FILLED_SIZE_1 = 0x2245 # macro -mmVGT_STRMOUT_BUFFER_FILLED_SIZE_1_BASE_IDX = 1 # macro -mmVGT_STRMOUT_BUFFER_FILLED_SIZE_2 = 0x2246 # macro -mmVGT_STRMOUT_BUFFER_FILLED_SIZE_2_BASE_IDX = 1 # macro -mmVGT_STRMOUT_BUFFER_FILLED_SIZE_3 = 0x2247 # macro -mmVGT_STRMOUT_BUFFER_FILLED_SIZE_3_BASE_IDX = 1 # macro -mmGE_MIN_VTX_INDX = 0x2249 # macro -mmGE_MIN_VTX_INDX_BASE_IDX = 1 # macro -mmGE_INDX_OFFSET = 0x224a # macro -mmGE_INDX_OFFSET_BASE_IDX = 1 # macro -mmGE_MULTI_PRIM_IB_RESET_EN = 0x224b # macro -mmGE_MULTI_PRIM_IB_RESET_EN_BASE_IDX = 1 # macro -mmVGT_NUM_INDICES = 0x224c # macro -mmVGT_NUM_INDICES_BASE_IDX = 1 # macro -mmVGT_NUM_INSTANCES = 0x224d # macro -mmVGT_NUM_INSTANCES_BASE_IDX = 1 # macro -mmVGT_TF_RING_SIZE_UMD = 0x224e # macro -mmVGT_TF_RING_SIZE_UMD_BASE_IDX = 1 # macro -mmVGT_HS_OFFCHIP_PARAM_UMD = 0x224f # macro -mmVGT_HS_OFFCHIP_PARAM_UMD_BASE_IDX = 1 # macro -mmVGT_TF_MEMORY_BASE_UMD = 0x2250 # macro -mmVGT_TF_MEMORY_BASE_UMD_BASE_IDX = 1 # macro -mmGE_DMA_FIRST_INDEX = 0x2251 # macro -mmGE_DMA_FIRST_INDEX_BASE_IDX = 1 # macro -mmWD_POS_BUF_BASE = 0x2252 # macro -mmWD_POS_BUF_BASE_BASE_IDX = 1 # macro -mmWD_POS_BUF_BASE_HI = 0x2253 # macro -mmWD_POS_BUF_BASE_HI_BASE_IDX = 1 # macro -mmWD_CNTL_SB_BUF_BASE = 0x2254 # macro -mmWD_CNTL_SB_BUF_BASE_BASE_IDX = 1 # macro -mmWD_CNTL_SB_BUF_BASE_HI = 0x2255 # macro -mmWD_CNTL_SB_BUF_BASE_HI_BASE_IDX = 1 # macro -mmWD_INDEX_BUF_BASE = 0x2256 # macro -mmWD_INDEX_BUF_BASE_BASE_IDX = 1 # macro -mmWD_INDEX_BUF_BASE_HI = 0x2257 # macro -mmWD_INDEX_BUF_BASE_HI_BASE_IDX = 1 # macro -mmIA_MULTI_VGT_PARAM_PIPED = 0x2258 # macro -mmIA_MULTI_VGT_PARAM_PIPED_BASE_IDX = 1 # macro -mmGE_MAX_VTX_INDX = 0x2259 # macro -mmGE_MAX_VTX_INDX_BASE_IDX = 1 # macro -mmVGT_INSTANCE_BASE_ID = 0x225a # macro -mmVGT_INSTANCE_BASE_ID_BASE_IDX = 1 # macro -mmGE_CNTL = 0x225b # macro -mmGE_CNTL_BASE_IDX = 1 # macro -mmGE_USER_VGPR1 = 0x225c # macro -mmGE_USER_VGPR1_BASE_IDX = 1 # macro -mmGE_USER_VGPR2 = 0x225d # macro -mmGE_USER_VGPR2_BASE_IDX = 1 # macro -mmGE_USER_VGPR3 = 0x225e # macro -mmGE_USER_VGPR3_BASE_IDX = 1 # macro -mmGE_STEREO_CNTL = 0x225f # macro -mmGE_STEREO_CNTL_BASE_IDX = 1 # macro -mmGE_PC_ALLOC = 0x2260 # macro -mmGE_PC_ALLOC_BASE_IDX = 1 # macro -mmVGT_TF_MEMORY_BASE_HI_UMD = 0x2261 # macro -mmVGT_TF_MEMORY_BASE_HI_UMD_BASE_IDX = 1 # macro -mmGE_USER_VGPR_EN = 0x2262 # macro -mmGE_USER_VGPR_EN_BASE_IDX = 1 # macro -mmPA_SU_LINE_STIPPLE_VALUE = 0x2280 # macro -mmPA_SU_LINE_STIPPLE_VALUE_BASE_IDX = 1 # macro -mmPA_SC_LINE_STIPPLE_STATE = 0x2281 # macro -mmPA_SC_LINE_STIPPLE_STATE_BASE_IDX = 1 # macro -mmPA_SC_SCREEN_EXTENT_MIN_0 = 0x2284 # macro -mmPA_SC_SCREEN_EXTENT_MIN_0_BASE_IDX = 1 # macro -mmPA_SC_SCREEN_EXTENT_MAX_0 = 0x2285 # macro -mmPA_SC_SCREEN_EXTENT_MAX_0_BASE_IDX = 1 # macro -mmPA_SC_SCREEN_EXTENT_MIN_1 = 0x2286 # macro -mmPA_SC_SCREEN_EXTENT_MIN_1_BASE_IDX = 1 # macro -mmPA_SC_SCREEN_EXTENT_MAX_1 = 0x228b # macro -mmPA_SC_SCREEN_EXTENT_MAX_1_BASE_IDX = 1 # macro -mmPA_SC_P3D_TRAP_SCREEN_HV_EN = 0x22a0 # macro -mmPA_SC_P3D_TRAP_SCREEN_HV_EN_BASE_IDX = 1 # macro -mmPA_SC_P3D_TRAP_SCREEN_H = 0x22a1 # macro -mmPA_SC_P3D_TRAP_SCREEN_H_BASE_IDX = 1 # macro -mmPA_SC_P3D_TRAP_SCREEN_V = 0x22a2 # macro -mmPA_SC_P3D_TRAP_SCREEN_V_BASE_IDX = 1 # macro -mmPA_SC_P3D_TRAP_SCREEN_OCCURRENCE = 0x22a3 # macro -mmPA_SC_P3D_TRAP_SCREEN_OCCURRENCE_BASE_IDX = 1 # macro -mmPA_SC_P3D_TRAP_SCREEN_COUNT = 0x22a4 # macro -mmPA_SC_P3D_TRAP_SCREEN_COUNT_BASE_IDX = 1 # macro -mmPA_SC_HP3D_TRAP_SCREEN_HV_EN = 0x22a8 # macro -mmPA_SC_HP3D_TRAP_SCREEN_HV_EN_BASE_IDX = 1 # macro -mmPA_SC_HP3D_TRAP_SCREEN_H = 0x22a9 # macro -mmPA_SC_HP3D_TRAP_SCREEN_H_BASE_IDX = 1 # macro -mmPA_SC_HP3D_TRAP_SCREEN_V = 0x22aa # macro -mmPA_SC_HP3D_TRAP_SCREEN_V_BASE_IDX = 1 # macro -mmPA_SC_HP3D_TRAP_SCREEN_OCCURRENCE = 0x22ab # macro -mmPA_SC_HP3D_TRAP_SCREEN_OCCURRENCE_BASE_IDX = 1 # macro -mmPA_SC_HP3D_TRAP_SCREEN_COUNT = 0x22ac # macro -mmPA_SC_HP3D_TRAP_SCREEN_COUNT_BASE_IDX = 1 # macro -mmPA_SC_TRAP_SCREEN_HV_EN = 0x22b0 # macro -mmPA_SC_TRAP_SCREEN_HV_EN_BASE_IDX = 1 # macro -mmPA_SC_TRAP_SCREEN_H = 0x22b1 # macro -mmPA_SC_TRAP_SCREEN_H_BASE_IDX = 1 # macro -mmPA_SC_TRAP_SCREEN_V = 0x22b2 # macro -mmPA_SC_TRAP_SCREEN_V_BASE_IDX = 1 # macro -mmPA_SC_TRAP_SCREEN_OCCURRENCE = 0x22b3 # macro -mmPA_SC_TRAP_SCREEN_OCCURRENCE_BASE_IDX = 1 # macro -mmPA_SC_TRAP_SCREEN_COUNT = 0x22b4 # macro -mmPA_SC_TRAP_SCREEN_COUNT_BASE_IDX = 1 # macro -mmSQ_THREAD_TRACE_USERDATA_0 = 0x2340 # macro -mmSQ_THREAD_TRACE_USERDATA_0_BASE_IDX = 1 # macro -mmSQ_THREAD_TRACE_USERDATA_1 = 0x2341 # macro -mmSQ_THREAD_TRACE_USERDATA_1_BASE_IDX = 1 # macro -mmSQ_THREAD_TRACE_USERDATA_2 = 0x2342 # macro -mmSQ_THREAD_TRACE_USERDATA_2_BASE_IDX = 1 # macro -mmSQ_THREAD_TRACE_USERDATA_3 = 0x2343 # macro -mmSQ_THREAD_TRACE_USERDATA_3_BASE_IDX = 1 # macro -mmSQ_THREAD_TRACE_USERDATA_4 = 0x2344 # macro -mmSQ_THREAD_TRACE_USERDATA_4_BASE_IDX = 1 # macro -mmSQ_THREAD_TRACE_USERDATA_5 = 0x2345 # macro -mmSQ_THREAD_TRACE_USERDATA_5_BASE_IDX = 1 # macro -mmSQ_THREAD_TRACE_USERDATA_6 = 0x2346 # macro -mmSQ_THREAD_TRACE_USERDATA_6_BASE_IDX = 1 # macro -mmSQ_THREAD_TRACE_USERDATA_7 = 0x2347 # macro -mmSQ_THREAD_TRACE_USERDATA_7_BASE_IDX = 1 # macro -mmSQC_CACHES = 0x2348 # macro -mmSQC_CACHES_BASE_IDX = 1 # macro -mmTA_CS_BC_BASE_ADDR = 0x2380 # macro -mmTA_CS_BC_BASE_ADDR_BASE_IDX = 1 # macro -mmTA_CS_BC_BASE_ADDR_HI = 0x2381 # macro -mmTA_CS_BC_BASE_ADDR_HI_BASE_IDX = 1 # macro -mmDB_OCCLUSION_COUNT0_LOW = 0x23c0 # macro -mmDB_OCCLUSION_COUNT0_LOW_BASE_IDX = 1 # macro -mmDB_OCCLUSION_COUNT0_HI = 0x23c1 # macro -mmDB_OCCLUSION_COUNT0_HI_BASE_IDX = 1 # macro -mmDB_OCCLUSION_COUNT1_LOW = 0x23c2 # macro -mmDB_OCCLUSION_COUNT1_LOW_BASE_IDX = 1 # macro -mmDB_OCCLUSION_COUNT1_HI = 0x23c3 # macro -mmDB_OCCLUSION_COUNT1_HI_BASE_IDX = 1 # macro -mmDB_OCCLUSION_COUNT2_LOW = 0x23c4 # macro -mmDB_OCCLUSION_COUNT2_LOW_BASE_IDX = 1 # macro -mmDB_OCCLUSION_COUNT2_HI = 0x23c5 # macro -mmDB_OCCLUSION_COUNT2_HI_BASE_IDX = 1 # macro -mmDB_OCCLUSION_COUNT3_LOW = 0x23c6 # macro -mmDB_OCCLUSION_COUNT3_LOW_BASE_IDX = 1 # macro -mmDB_OCCLUSION_COUNT3_HI = 0x23c7 # macro -mmDB_OCCLUSION_COUNT3_HI_BASE_IDX = 1 # macro -mmDB_ZPASS_COUNT_LOW = 0x23fe # macro -mmDB_ZPASS_COUNT_LOW_BASE_IDX = 1 # macro -mmDB_ZPASS_COUNT_HI = 0x23ff # macro -mmDB_ZPASS_COUNT_HI_BASE_IDX = 1 # macro -mmGDS_RD_ADDR = 0x2400 # macro -mmGDS_RD_ADDR_BASE_IDX = 1 # macro -mmGDS_RD_DATA = 0x2401 # macro -mmGDS_RD_DATA_BASE_IDX = 1 # macro -mmGDS_RD_BURST_ADDR = 0x2402 # macro -mmGDS_RD_BURST_ADDR_BASE_IDX = 1 # macro -mmGDS_RD_BURST_COUNT = 0x2403 # macro -mmGDS_RD_BURST_COUNT_BASE_IDX = 1 # macro -mmGDS_RD_BURST_DATA = 0x2404 # macro -mmGDS_RD_BURST_DATA_BASE_IDX = 1 # macro -mmGDS_WR_ADDR = 0x2405 # macro -mmGDS_WR_ADDR_BASE_IDX = 1 # macro -mmGDS_WR_DATA = 0x2406 # macro -mmGDS_WR_DATA_BASE_IDX = 1 # macro -mmGDS_WR_BURST_ADDR = 0x2407 # macro -mmGDS_WR_BURST_ADDR_BASE_IDX = 1 # macro -mmGDS_WR_BURST_DATA = 0x2408 # macro -mmGDS_WR_BURST_DATA_BASE_IDX = 1 # macro -mmGDS_WRITE_COMPLETE = 0x2409 # macro -mmGDS_WRITE_COMPLETE_BASE_IDX = 1 # macro -mmGDS_ATOM_CNTL = 0x240a # macro -mmGDS_ATOM_CNTL_BASE_IDX = 1 # macro -mmGDS_ATOM_COMPLETE = 0x240b # macro -mmGDS_ATOM_COMPLETE_BASE_IDX = 1 # macro -mmGDS_ATOM_BASE = 0x240c # macro -mmGDS_ATOM_BASE_BASE_IDX = 1 # macro -mmGDS_ATOM_SIZE = 0x240d # macro -mmGDS_ATOM_SIZE_BASE_IDX = 1 # macro -mmGDS_ATOM_OFFSET0 = 0x240e # macro -mmGDS_ATOM_OFFSET0_BASE_IDX = 1 # macro -mmGDS_ATOM_OFFSET1 = 0x240f # macro -mmGDS_ATOM_OFFSET1_BASE_IDX = 1 # macro -mmGDS_ATOM_DST = 0x2410 # macro -mmGDS_ATOM_DST_BASE_IDX = 1 # macro -mmGDS_ATOM_OP = 0x2411 # macro -mmGDS_ATOM_OP_BASE_IDX = 1 # macro -mmGDS_ATOM_SRC0 = 0x2412 # macro -mmGDS_ATOM_SRC0_BASE_IDX = 1 # macro -mmGDS_ATOM_SRC0_U = 0x2413 # macro -mmGDS_ATOM_SRC0_U_BASE_IDX = 1 # macro -mmGDS_ATOM_SRC1 = 0x2414 # macro -mmGDS_ATOM_SRC1_BASE_IDX = 1 # macro -mmGDS_ATOM_SRC1_U = 0x2415 # macro -mmGDS_ATOM_SRC1_U_BASE_IDX = 1 # macro -mmGDS_ATOM_READ0 = 0x2416 # macro -mmGDS_ATOM_READ0_BASE_IDX = 1 # macro -mmGDS_ATOM_READ0_U = 0x2417 # macro -mmGDS_ATOM_READ0_U_BASE_IDX = 1 # macro -mmGDS_ATOM_READ1 = 0x2418 # macro -mmGDS_ATOM_READ1_BASE_IDX = 1 # macro -mmGDS_ATOM_READ1_U = 0x2419 # macro -mmGDS_ATOM_READ1_U_BASE_IDX = 1 # macro -mmGDS_GWS_RESOURCE_CNTL = 0x241a # macro -mmGDS_GWS_RESOURCE_CNTL_BASE_IDX = 1 # macro -mmGDS_GWS_RESOURCE = 0x241b # macro -mmGDS_GWS_RESOURCE_BASE_IDX = 1 # macro -mmGDS_GWS_RESOURCE_CNT = 0x241c # macro -mmGDS_GWS_RESOURCE_CNT_BASE_IDX = 1 # macro -mmGDS_OA_CNTL = 0x241d # macro -mmGDS_OA_CNTL_BASE_IDX = 1 # macro -mmGDS_OA_COUNTER = 0x241e # macro -mmGDS_OA_COUNTER_BASE_IDX = 1 # macro -mmGDS_OA_ADDRESS = 0x241f # macro -mmGDS_OA_ADDRESS_BASE_IDX = 1 # macro -mmGDS_OA_INCDEC = 0x2420 # macro -mmGDS_OA_INCDEC_BASE_IDX = 1 # macro -mmGDS_OA_RING_SIZE = 0x2421 # macro -mmGDS_OA_RING_SIZE_BASE_IDX = 1 # macro -mmSPI_CONFIG_CNTL_REMAP = 0x2440 # macro -mmSPI_CONFIG_CNTL_REMAP_BASE_IDX = 1 # macro -mmSPI_CONFIG_CNTL_1_REMAP = 0x2441 # macro -mmSPI_CONFIG_CNTL_1_REMAP_BASE_IDX = 1 # macro -mmSPI_CONFIG_CNTL_2_REMAP = 0x2442 # macro -mmSPI_CONFIG_CNTL_2_REMAP_BASE_IDX = 1 # macro -mmSPI_WAVE_LIMIT_CNTL_REMAP = 0x2443 # macro -mmSPI_WAVE_LIMIT_CNTL_REMAP_BASE_IDX = 1 # macro -mmCP_MES_PRGRM_CNTR_START = 0x2800 # macro -mmCP_MES_PRGRM_CNTR_START_BASE_IDX = 1 # macro -mmCP_MES_INTR_ROUTINE_START = 0x2801 # macro -mmCP_MES_INTR_ROUTINE_START_BASE_IDX = 1 # macro -mmCP_MES_MTVEC_LO = 0x2801 # macro -mmCP_MES_MTVEC_LO_BASE_IDX = 1 # macro -mmCP_MES_MTVEC_HI = 0x2802 # macro -mmCP_MES_MTVEC_HI_BASE_IDX = 1 # macro -mmCP_MES_CNTL = 0x2807 # macro -mmCP_MES_CNTL_BASE_IDX = 1 # macro -mmCP_MES_PIPE_PRIORITY_CNTS = 0x2808 # macro -mmCP_MES_PIPE_PRIORITY_CNTS_BASE_IDX = 1 # macro -mmCP_MES_PIPE0_PRIORITY = 0x2809 # macro -mmCP_MES_PIPE0_PRIORITY_BASE_IDX = 1 # macro -mmCP_MES_PIPE1_PRIORITY = 0x280a # macro -mmCP_MES_PIPE1_PRIORITY_BASE_IDX = 1 # macro -mmCP_MES_PIPE2_PRIORITY = 0x280b # macro -mmCP_MES_PIPE2_PRIORITY_BASE_IDX = 1 # macro -mmCP_MES_PIPE3_PRIORITY = 0x280c # macro -mmCP_MES_PIPE3_PRIORITY_BASE_IDX = 1 # macro -mmCP_MES_HEADER_DUMP = 0x280d # macro -mmCP_MES_HEADER_DUMP_BASE_IDX = 1 # macro -mmCP_MES_MIE_LO = 0x280e # macro -mmCP_MES_MIE_LO_BASE_IDX = 1 # macro -mmCP_MES_MIE_HI = 0x280f # macro -mmCP_MES_MIE_HI_BASE_IDX = 1 # macro -mmCP_MES_INTERRUPT = 0x2810 # macro -mmCP_MES_INTERRUPT_BASE_IDX = 1 # macro -mmCP_MES_SCRATCH_INDEX = 0x2811 # macro -mmCP_MES_SCRATCH_INDEX_BASE_IDX = 1 # macro -mmCP_MES_SCRATCH_DATA = 0x2812 # macro -mmCP_MES_SCRATCH_DATA_BASE_IDX = 1 # macro -mmCP_MES_INSTR_PNTR = 0x2813 # macro -mmCP_MES_INSTR_PNTR_BASE_IDX = 1 # macro -mmCP_MES_MSCRATCH_HI = 0x2814 # macro -mmCP_MES_MSCRATCH_HI_BASE_IDX = 1 # macro -mmCP_MES_MSCRATCH_LO = 0x2815 # macro -mmCP_MES_MSCRATCH_LO_BASE_IDX = 1 # macro -mmCP_MES_MSTATUS_LO = 0x2816 # macro -mmCP_MES_MSTATUS_LO_BASE_IDX = 1 # macro -mmCP_MES_MSTATUS_HI = 0x2817 # macro -mmCP_MES_MSTATUS_HI_BASE_IDX = 1 # macro -mmCP_MES_MEPC_LO = 0x2818 # macro -mmCP_MES_MEPC_LO_BASE_IDX = 1 # macro -mmCP_MES_MEPC_HI = 0x2819 # macro -mmCP_MES_MEPC_HI_BASE_IDX = 1 # macro -mmCP_MES_MCAUSE_LO = 0x281a # macro -mmCP_MES_MCAUSE_LO_BASE_IDX = 1 # macro -mmCP_MES_MCAUSE_HI = 0x281b # macro -mmCP_MES_MCAUSE_HI_BASE_IDX = 1 # macro -mmCP_MES_MBADADDR_LO = 0x281c # macro -mmCP_MES_MBADADDR_LO_BASE_IDX = 1 # macro -mmCP_MES_MBADADDR_HI = 0x281d # macro -mmCP_MES_MBADADDR_HI_BASE_IDX = 1 # macro -mmCP_MES_MIP_LO = 0x281e # macro -mmCP_MES_MIP_LO_BASE_IDX = 1 # macro -mmCP_MES_MIP_HI = 0x281f # macro -mmCP_MES_MIP_HI_BASE_IDX = 1 # macro -mmCP_MES_IC_OP_CNTL = 0x2820 # macro -mmCP_MES_IC_OP_CNTL_BASE_IDX = 1 # macro -mmCP_MES_MCYCLE_LO = 0x2826 # macro -mmCP_MES_MCYCLE_LO_BASE_IDX = 1 # macro -mmCP_MES_MCYCLE_HI = 0x2827 # macro -mmCP_MES_MCYCLE_HI_BASE_IDX = 1 # macro -mmCP_MES_MTIME_LO = 0x2828 # macro -mmCP_MES_MTIME_LO_BASE_IDX = 1 # macro -mmCP_MES_MTIME_HI = 0x2829 # macro -mmCP_MES_MTIME_HI_BASE_IDX = 1 # macro -mmCP_MES_MINSTRET_LO = 0x282a # macro -mmCP_MES_MINSTRET_LO_BASE_IDX = 1 # macro -mmCP_MES_MINSTRET_HI = 0x282b # macro -mmCP_MES_MINSTRET_HI_BASE_IDX = 1 # macro -mmCP_MES_MISA_LO = 0x282c # macro -mmCP_MES_MISA_LO_BASE_IDX = 1 # macro -mmCP_MES_MISA_HI = 0x282d # macro -mmCP_MES_MISA_HI_BASE_IDX = 1 # macro -mmCP_MES_MVENDORID_LO = 0x282e # macro -mmCP_MES_MVENDORID_LO_BASE_IDX = 1 # macro -mmCP_MES_MVENDORID_HI = 0x282f # macro -mmCP_MES_MVENDORID_HI_BASE_IDX = 1 # macro -mmCP_MES_MARCHID_LO = 0x2830 # macro -mmCP_MES_MARCHID_LO_BASE_IDX = 1 # macro -mmCP_MES_MARCHID_HI = 0x2831 # macro -mmCP_MES_MARCHID_HI_BASE_IDX = 1 # macro -mmCP_MES_MIMPID_LO = 0x2832 # macro -mmCP_MES_MIMPID_LO_BASE_IDX = 1 # macro -mmCP_MES_MIMPID_HI = 0x2833 # macro -mmCP_MES_MIMPID_HI_BASE_IDX = 1 # macro -mmCP_MES_MHARTID_LO = 0x2834 # macro -mmCP_MES_MHARTID_LO_BASE_IDX = 1 # macro -mmCP_MES_MHARTID_HI = 0x2835 # macro -mmCP_MES_MHARTID_HI_BASE_IDX = 1 # macro -mmCP_MES_DC_BASE_CNTL = 0x2836 # macro -mmCP_MES_DC_BASE_CNTL_BASE_IDX = 1 # macro -mmCP_MES_DC_OP_CNTL = 0x2837 # macro -mmCP_MES_DC_OP_CNTL_BASE_IDX = 1 # macro -mmCP_MES_MTIMECMP_LO = 0x2838 # macro -mmCP_MES_MTIMECMP_LO_BASE_IDX = 1 # macro -mmCP_MES_MTIMECMP_HI = 0x2839 # macro -mmCP_MES_MTIMECMP_HI_BASE_IDX = 1 # macro -mmCP_MES_PROCESS_QUANTUM_PIPE0 = 0x283a # macro -mmCP_MES_PROCESS_QUANTUM_PIPE0_BASE_IDX = 1 # macro -mmCP_MES_PROCESS_QUANTUM_PIPE1 = 0x283b # macro -mmCP_MES_PROCESS_QUANTUM_PIPE1_BASE_IDX = 1 # macro -mmCP_MES_DOORBELL_CONTROL1 = 0x283c # macro -mmCP_MES_DOORBELL_CONTROL1_BASE_IDX = 1 # macro -mmCP_MES_DOORBELL_CONTROL2 = 0x283d # macro -mmCP_MES_DOORBELL_CONTROL2_BASE_IDX = 1 # macro -mmCP_MES_DOORBELL_CONTROL3 = 0x283e # macro -mmCP_MES_DOORBELL_CONTROL3_BASE_IDX = 1 # macro -mmCP_MES_DOORBELL_CONTROL4 = 0x283f # macro -mmCP_MES_DOORBELL_CONTROL4_BASE_IDX = 1 # macro -mmCP_MES_DOORBELL_CONTROL5 = 0x2840 # macro -mmCP_MES_DOORBELL_CONTROL5_BASE_IDX = 1 # macro -mmCP_MES_DOORBELL_CONTROL6 = 0x2841 # macro -mmCP_MES_DOORBELL_CONTROL6_BASE_IDX = 1 # macro -mmCP_MES_GP0_LO = 0x2843 # macro -mmCP_MES_GP0_LO_BASE_IDX = 1 # macro -mmCP_MES_GP0_HI = 0x2844 # macro -mmCP_MES_GP0_HI_BASE_IDX = 1 # macro -mmCP_MES_GP1_LO = 0x2845 # macro -mmCP_MES_GP1_LO_BASE_IDX = 1 # macro -mmCP_MES_GP1_HI = 0x2846 # macro -mmCP_MES_GP1_HI_BASE_IDX = 1 # macro -mmCP_MES_GP2_LO = 0x2847 # macro -mmCP_MES_GP2_LO_BASE_IDX = 1 # macro -mmCP_MES_GP2_HI = 0x2848 # macro -mmCP_MES_GP2_HI_BASE_IDX = 1 # macro -mmCP_MES_GP3_LO = 0x2849 # macro -mmCP_MES_GP3_LO_BASE_IDX = 1 # macro -mmCP_MES_GP3_HI = 0x284a # macro -mmCP_MES_GP3_HI_BASE_IDX = 1 # macro -mmCP_MES_GP4_LO = 0x284b # macro -mmCP_MES_GP4_LO_BASE_IDX = 1 # macro -mmCP_MES_GP4_HI = 0x284c # macro -mmCP_MES_GP4_HI_BASE_IDX = 1 # macro -mmCP_MES_GP5_LO = 0x284d # macro -mmCP_MES_GP5_LO_BASE_IDX = 1 # macro -mmCP_MES_GP5_HI = 0x284e # macro -mmCP_MES_GP5_HI_BASE_IDX = 1 # macro -mmCP_MES_GP6_LO = 0x284f # macro -mmCP_MES_GP6_LO_BASE_IDX = 1 # macro -mmCP_MES_GP6_HI = 0x2850 # macro -mmCP_MES_GP6_HI_BASE_IDX = 1 # macro -mmCP_MES_GP7_LO = 0x2851 # macro -mmCP_MES_GP7_LO_BASE_IDX = 1 # macro -mmCP_MES_GP7_HI = 0x2852 # macro -mmCP_MES_GP7_HI_BASE_IDX = 1 # macro -mmCP_MES_GP8_LO = 0x2853 # macro -mmCP_MES_GP8_LO_BASE_IDX = 1 # macro -mmCP_MES_GP8_HI = 0x2854 # macro -mmCP_MES_GP8_HI_BASE_IDX = 1 # macro -mmCP_MES_GP9_LO = 0x2855 # macro -mmCP_MES_GP9_LO_BASE_IDX = 1 # macro -mmCP_MES_GP9_HI = 0x2856 # macro -mmCP_MES_GP9_HI_BASE_IDX = 1 # macro -mmCP_MES_DM_INDEX_ADDR = 0x2880 # macro -mmCP_MES_DM_INDEX_ADDR_BASE_IDX = 1 # macro -mmCP_MES_DM_INDEX_DATA = 0x2881 # macro -mmCP_MES_DM_INDEX_DATA_BASE_IDX = 1 # macro -mmCP_MES_PERFCOUNT_CNTL = 0x2899 # macro -mmCP_MES_PERFCOUNT_CNTL_BASE_IDX = 1 # macro -mmCP_MES_PENDING_INTERRUPT = 0x289a # macro -mmCP_MES_PENDING_INTERRUPT_BASE_IDX = 1 # macro -mmGUS_IO_RD_COMBINE_FLUSH = 0x2c00 # macro -mmGUS_IO_RD_COMBINE_FLUSH_BASE_IDX = 1 # macro -mmGUS_IO_WR_COMBINE_FLUSH = 0x2c01 # macro -mmGUS_IO_WR_COMBINE_FLUSH_BASE_IDX = 1 # macro -mmGUS_IO_RD_PRI_AGE_RATE = 0x2c02 # macro -mmGUS_IO_RD_PRI_AGE_RATE_BASE_IDX = 1 # macro -mmGUS_IO_WR_PRI_AGE_RATE = 0x2c03 # macro -mmGUS_IO_WR_PRI_AGE_RATE_BASE_IDX = 1 # macro -mmGUS_IO_RD_PRI_AGE_COEFF = 0x2c04 # macro -mmGUS_IO_RD_PRI_AGE_COEFF_BASE_IDX = 1 # macro -mmGUS_IO_WR_PRI_AGE_COEFF = 0x2c05 # macro -mmGUS_IO_WR_PRI_AGE_COEFF_BASE_IDX = 1 # macro -mmGUS_IO_RD_PRI_QUEUING = 0x2c06 # macro -mmGUS_IO_RD_PRI_QUEUING_BASE_IDX = 1 # macro -mmGUS_IO_WR_PRI_QUEUING = 0x2c07 # macro -mmGUS_IO_WR_PRI_QUEUING_BASE_IDX = 1 # macro -mmGUS_IO_RD_PRI_FIXED = 0x2c08 # macro -mmGUS_IO_RD_PRI_FIXED_BASE_IDX = 1 # macro -mmGUS_IO_WR_PRI_FIXED = 0x2c09 # macro -mmGUS_IO_WR_PRI_FIXED_BASE_IDX = 1 # macro -mmGUS_IO_RD_PRI_URGENCY_COEFF = 0x2c0a # macro -mmGUS_IO_RD_PRI_URGENCY_COEFF_BASE_IDX = 1 # macro -mmGUS_IO_WR_PRI_URGENCY_COEFF = 0x2c0b # macro -mmGUS_IO_WR_PRI_URGENCY_COEFF_BASE_IDX = 1 # macro -mmGUS_IO_RD_PRI_URGENCY_MODE = 0x2c0c # macro -mmGUS_IO_RD_PRI_URGENCY_MODE_BASE_IDX = 1 # macro -mmGUS_IO_WR_PRI_URGENCY_MODE = 0x2c0d # macro -mmGUS_IO_WR_PRI_URGENCY_MODE_BASE_IDX = 1 # macro -mmGUS_IO_RD_PRI_QUANT_PRI1 = 0x2c0e # macro -mmGUS_IO_RD_PRI_QUANT_PRI1_BASE_IDX = 1 # macro -mmGUS_IO_RD_PRI_QUANT_PRI2 = 0x2c0f # macro -mmGUS_IO_RD_PRI_QUANT_PRI2_BASE_IDX = 1 # macro -mmGUS_IO_RD_PRI_QUANT_PRI3 = 0x2c10 # macro -mmGUS_IO_RD_PRI_QUANT_PRI3_BASE_IDX = 1 # macro -mmGUS_IO_RD_PRI_QUANT_PRI4 = 0x2c11 # macro -mmGUS_IO_RD_PRI_QUANT_PRI4_BASE_IDX = 1 # macro -mmGUS_IO_WR_PRI_QUANT_PRI1 = 0x2c12 # macro -mmGUS_IO_WR_PRI_QUANT_PRI1_BASE_IDX = 1 # macro -mmGUS_IO_WR_PRI_QUANT_PRI2 = 0x2c13 # macro -mmGUS_IO_WR_PRI_QUANT_PRI2_BASE_IDX = 1 # macro -mmGUS_IO_WR_PRI_QUANT_PRI3 = 0x2c14 # macro -mmGUS_IO_WR_PRI_QUANT_PRI3_BASE_IDX = 1 # macro -mmGUS_IO_WR_PRI_QUANT_PRI4 = 0x2c15 # macro -mmGUS_IO_WR_PRI_QUANT_PRI4_BASE_IDX = 1 # macro -mmGUS_IO_RD_PRI_QUANT1_PRI1 = 0x2c16 # macro -mmGUS_IO_RD_PRI_QUANT1_PRI1_BASE_IDX = 1 # macro -mmGUS_IO_RD_PRI_QUANT1_PRI2 = 0x2c17 # macro -mmGUS_IO_RD_PRI_QUANT1_PRI2_BASE_IDX = 1 # macro -mmGUS_IO_RD_PRI_QUANT1_PRI3 = 0x2c18 # macro -mmGUS_IO_RD_PRI_QUANT1_PRI3_BASE_IDX = 1 # macro -mmGUS_IO_RD_PRI_QUANT1_PRI4 = 0x2c19 # macro -mmGUS_IO_RD_PRI_QUANT1_PRI4_BASE_IDX = 1 # macro -mmGUS_IO_WR_PRI_QUANT1_PRI1 = 0x2c1a # macro -mmGUS_IO_WR_PRI_QUANT1_PRI1_BASE_IDX = 1 # macro -mmGUS_IO_WR_PRI_QUANT1_PRI2 = 0x2c1b # macro -mmGUS_IO_WR_PRI_QUANT1_PRI2_BASE_IDX = 1 # macro -mmGUS_IO_WR_PRI_QUANT1_PRI3 = 0x2c1c # macro -mmGUS_IO_WR_PRI_QUANT1_PRI3_BASE_IDX = 1 # macro -mmGUS_IO_WR_PRI_QUANT1_PRI4 = 0x2c1d # macro -mmGUS_IO_WR_PRI_QUANT1_PRI4_BASE_IDX = 1 # macro -mmGUS_DRAM_COMBINE_FLUSH = 0x2c1e # macro -mmGUS_DRAM_COMBINE_FLUSH_BASE_IDX = 1 # macro -mmGUS_DRAM_COMBINE_RD_WR_EN = 0x2c1f # macro -mmGUS_DRAM_COMBINE_RD_WR_EN_BASE_IDX = 1 # macro -mmGUS_DRAM_PRI_AGE_RATE = 0x2c20 # macro -mmGUS_DRAM_PRI_AGE_RATE_BASE_IDX = 1 # macro -mmGUS_DRAM_PRI_AGE_COEFF = 0x2c21 # macro -mmGUS_DRAM_PRI_AGE_COEFF_BASE_IDX = 1 # macro -mmGUS_DRAM_PRI_QUEUING = 0x2c22 # macro -mmGUS_DRAM_PRI_QUEUING_BASE_IDX = 1 # macro -mmGUS_DRAM_PRI_FIXED = 0x2c23 # macro -mmGUS_DRAM_PRI_FIXED_BASE_IDX = 1 # macro -mmGUS_DRAM_PRI_URGENCY_COEFF = 0x2c24 # macro -mmGUS_DRAM_PRI_URGENCY_COEFF_BASE_IDX = 1 # macro -mmGUS_DRAM_PRI_URGENCY_MODE = 0x2c25 # macro -mmGUS_DRAM_PRI_URGENCY_MODE_BASE_IDX = 1 # macro -mmGUS_DRAM_PRI_QUANT_PRI1 = 0x2c26 # macro -mmGUS_DRAM_PRI_QUANT_PRI1_BASE_IDX = 1 # macro -mmGUS_DRAM_PRI_QUANT_PRI2 = 0x2c27 # macro -mmGUS_DRAM_PRI_QUANT_PRI2_BASE_IDX = 1 # macro -mmGUS_DRAM_PRI_QUANT_PRI3 = 0x2c28 # macro -mmGUS_DRAM_PRI_QUANT_PRI3_BASE_IDX = 1 # macro -mmGUS_DRAM_PRI_QUANT_PRI4 = 0x2c29 # macro -mmGUS_DRAM_PRI_QUANT_PRI4_BASE_IDX = 1 # macro -mmGUS_DRAM_PRI_QUANT_PRI5 = 0x2c2a # macro -mmGUS_DRAM_PRI_QUANT_PRI5_BASE_IDX = 1 # macro -mmGUS_DRAM_PRI_QUANT1_PRI1 = 0x2c2b # macro -mmGUS_DRAM_PRI_QUANT1_PRI1_BASE_IDX = 1 # macro -mmGUS_DRAM_PRI_QUANT1_PRI2 = 0x2c2c # macro -mmGUS_DRAM_PRI_QUANT1_PRI2_BASE_IDX = 1 # macro -mmGUS_DRAM_PRI_QUANT1_PRI3 = 0x2c2d # macro -mmGUS_DRAM_PRI_QUANT1_PRI3_BASE_IDX = 1 # macro -mmGUS_DRAM_PRI_QUANT1_PRI4 = 0x2c2e # macro -mmGUS_DRAM_PRI_QUANT1_PRI4_BASE_IDX = 1 # macro -mmGUS_DRAM_PRI_QUANT1_PRI5 = 0x2c2f # macro -mmGUS_DRAM_PRI_QUANT1_PRI5_BASE_IDX = 1 # macro -mmGUS_IO_GROUP_BURST = 0x2c30 # macro -mmGUS_IO_GROUP_BURST_BASE_IDX = 1 # macro -mmGUS_DRAM_GROUP_BURST = 0x2c31 # macro -mmGUS_DRAM_GROUP_BURST_BASE_IDX = 1 # macro -mmGUS_SDP_ARB_FINAL = 0x2c32 # macro -mmGUS_SDP_ARB_FINAL_BASE_IDX = 1 # macro -mmGUS_SDP_QOS_VC_PRIORITY = 0x2c33 # macro -mmGUS_SDP_QOS_VC_PRIORITY_BASE_IDX = 1 # macro -mmGUS_SDP_CREDITS = 0x2c34 # macro -mmGUS_SDP_CREDITS_BASE_IDX = 1 # macro -mmGUS_SDP_TAG_RESERVE0 = 0x2c35 # macro -mmGUS_SDP_TAG_RESERVE0_BASE_IDX = 1 # macro -mmGUS_SDP_TAG_RESERVE1 = 0x2c36 # macro -mmGUS_SDP_TAG_RESERVE1_BASE_IDX = 1 # macro -mmGUS_SDP_VCC_RESERVE0 = 0x2c37 # macro -mmGUS_SDP_VCC_RESERVE0_BASE_IDX = 1 # macro -mmGUS_SDP_VCC_RESERVE1 = 0x2c38 # macro -mmGUS_SDP_VCC_RESERVE1_BASE_IDX = 1 # macro -mmGUS_SDP_VCD_RESERVE0 = 0x2c39 # macro -mmGUS_SDP_VCD_RESERVE0_BASE_IDX = 1 # macro -mmGUS_SDP_VCD_RESERVE1 = 0x2c3a # macro -mmGUS_SDP_VCD_RESERVE1_BASE_IDX = 1 # macro -mmGUS_SDP_REQ_CNTL = 0x2c3b # macro -mmGUS_SDP_REQ_CNTL_BASE_IDX = 1 # macro -mmGUS_MISC = 0x2c3c # macro -mmGUS_MISC_BASE_IDX = 1 # macro -mmGUS_LATENCY_SAMPLING = 0x2c3d # macro -mmGUS_LATENCY_SAMPLING_BASE_IDX = 1 # macro -mmGUS_ERR_STATUS = 0x2c3e # macro -mmGUS_ERR_STATUS_BASE_IDX = 1 # macro -mmGUS_MISC2 = 0x2c3f # macro -mmGUS_MISC2_BASE_IDX = 1 # macro -mmGUS_SDP_ENABLE = 0x2c45 # macro -mmGUS_SDP_ENABLE_BASE_IDX = 1 # macro -mmGUS_L1_CH0_CMD_IN = 0x2c46 # macro -mmGUS_L1_CH0_CMD_IN_BASE_IDX = 1 # macro -mmGUS_L1_CH0_CMD_OUT = 0x2c47 # macro -mmGUS_L1_CH0_CMD_OUT_BASE_IDX = 1 # macro -mmGUS_L1_CH0_DATA_IN = 0x2c48 # macro -mmGUS_L1_CH0_DATA_IN_BASE_IDX = 1 # macro -mmGUS_L1_CH0_DATA_OUT = 0x2c49 # macro -mmGUS_L1_CH0_DATA_OUT_BASE_IDX = 1 # macro -mmGUS_L1_CH0_DATA_U_IN = 0x2c4a # macro -mmGUS_L1_CH0_DATA_U_IN_BASE_IDX = 1 # macro -mmGUS_L1_CH0_DATA_U_OUT = 0x2c4b # macro -mmGUS_L1_CH0_DATA_U_OUT_BASE_IDX = 1 # macro -mmGUS_L1_CH1_CMD_IN = 0x2c4c # macro -mmGUS_L1_CH1_CMD_IN_BASE_IDX = 1 # macro -mmGUS_L1_CH1_CMD_OUT = 0x2c4d # macro -mmGUS_L1_CH1_CMD_OUT_BASE_IDX = 1 # macro -mmGUS_L1_CH1_DATA_IN = 0x2c4e # macro -mmGUS_L1_CH1_DATA_IN_BASE_IDX = 1 # macro -mmGUS_L1_CH1_DATA_OUT = 0x2c4f # macro -mmGUS_L1_CH1_DATA_OUT_BASE_IDX = 1 # macro -mmGUS_L1_CH1_DATA_U_IN = 0x2c50 # macro -mmGUS_L1_CH1_DATA_U_IN_BASE_IDX = 1 # macro -mmGUS_L1_CH1_DATA_U_OUT = 0x2c51 # macro -mmGUS_L1_CH1_DATA_U_OUT_BASE_IDX = 1 # macro -mmGUS_L1_SA0_CMD_IN = 0x2c52 # macro -mmGUS_L1_SA0_CMD_IN_BASE_IDX = 1 # macro -mmGUS_L1_SA0_CMD_OUT = 0x2c53 # macro -mmGUS_L1_SA0_CMD_OUT_BASE_IDX = 1 # macro -mmGUS_L1_SA0_DATA_IN = 0x2c54 # macro -mmGUS_L1_SA0_DATA_IN_BASE_IDX = 1 # macro -mmGUS_L1_SA0_DATA_OUT = 0x2c55 # macro -mmGUS_L1_SA0_DATA_OUT_BASE_IDX = 1 # macro -mmGUS_L1_SA0_DATA_U_IN = 0x2c56 # macro -mmGUS_L1_SA0_DATA_U_IN_BASE_IDX = 1 # macro -mmGUS_L1_SA0_DATA_U_OUT = 0x2c57 # macro -mmGUS_L1_SA0_DATA_U_OUT_BASE_IDX = 1 # macro -mmGUS_L1_SA1_CMD_IN = 0x2c58 # macro -mmGUS_L1_SA1_CMD_IN_BASE_IDX = 1 # macro -mmGUS_L1_SA1_CMD_OUT = 0x2c59 # macro -mmGUS_L1_SA1_CMD_OUT_BASE_IDX = 1 # macro -mmGUS_L1_SA1_DATA_IN = 0x2c5a # macro -mmGUS_L1_SA1_DATA_IN_BASE_IDX = 1 # macro -mmGUS_L1_SA1_DATA_OUT = 0x2c5b # macro -mmGUS_L1_SA1_DATA_OUT_BASE_IDX = 1 # macro -mmGUS_L1_SA1_DATA_U_IN = 0x2c5c # macro -mmGUS_L1_SA1_DATA_U_IN_BASE_IDX = 1 # macro -mmGUS_L1_SA1_DATA_U_OUT = 0x2c5d # macro -mmGUS_L1_SA1_DATA_U_OUT_BASE_IDX = 1 # macro -mmGUS_L1_SA2_CMD_IN = 0x2c5e # macro -mmGUS_L1_SA2_CMD_IN_BASE_IDX = 1 # macro -mmGUS_L1_SA2_CMD_OUT = 0x2c5f # macro -mmGUS_L1_SA2_CMD_OUT_BASE_IDX = 1 # macro -mmGUS_L1_SA2_DATA_IN = 0x2c60 # macro -mmGUS_L1_SA2_DATA_IN_BASE_IDX = 1 # macro -mmGUS_L1_SA2_DATA_OUT = 0x2c61 # macro -mmGUS_L1_SA2_DATA_OUT_BASE_IDX = 1 # macro -mmGUS_L1_SA2_DATA_U_IN = 0x2c62 # macro -mmGUS_L1_SA2_DATA_U_IN_BASE_IDX = 1 # macro -mmGUS_L1_SA2_DATA_U_OUT = 0x2c63 # macro -mmGUS_L1_SA2_DATA_U_OUT_BASE_IDX = 1 # macro -mmGUS_L1_SA3_CMD_IN = 0x2c64 # macro -mmGUS_L1_SA3_CMD_IN_BASE_IDX = 1 # macro -mmGUS_L1_SA3_CMD_OUT = 0x2c65 # macro -mmGUS_L1_SA3_CMD_OUT_BASE_IDX = 1 # macro -mmGUS_L1_SA3_DATA_IN = 0x2c66 # macro -mmGUS_L1_SA3_DATA_IN_BASE_IDX = 1 # macro -mmGUS_L1_SA3_DATA_OUT = 0x2c67 # macro -mmGUS_L1_SA3_DATA_OUT_BASE_IDX = 1 # macro -mmGUS_L1_SA3_DATA_U_IN = 0x2c68 # macro -mmGUS_L1_SA3_DATA_U_IN_BASE_IDX = 1 # macro -mmGUS_L1_SA3_DATA_U_OUT = 0x2c69 # macro -mmGUS_L1_SA3_DATA_U_OUT_BASE_IDX = 1 # macro -mmGUS_MISC3 = 0x2c6a # macro -mmGUS_MISC3_BASE_IDX = 1 # macro -mmGUS_WRRSP_FIFO_CNTL = 0x2c6b # macro -mmGUS_WRRSP_FIFO_CNTL_BASE_IDX = 1 # macro -mmGL1_DRAM_BURST_MASK = 0x2d02 # macro -mmGL1_DRAM_BURST_MASK_BASE_IDX = 1 # macro -mmGL1_ARB_STATUS = 0x2d03 # macro -mmGL1_ARB_STATUS_BASE_IDX = 1 # macro -mmGL1_PIPE_STEER = 0x2d10 # macro -mmGL1_PIPE_STEER_BASE_IDX = 1 # macro -mmGL1C_STATUS = 0x2d41 # macro -mmGL1C_STATUS_BASE_IDX = 1 # macro -mmGL1C_UTCL0_CNTL2 = 0x2d43 # macro -mmGL1C_UTCL0_CNTL2_BASE_IDX = 1 # macro -mmGL1C_UTCL0_STATUS = 0x2d44 # macro -mmGL1C_UTCL0_STATUS_BASE_IDX = 1 # macro -mmGL1C_UTCL0_RETRY = 0x2d45 # macro -mmGL1C_UTCL0_RETRY_BASE_IDX = 1 # macro -mmCH_ARB_CTRL = 0x2d80 # macro -mmCH_ARB_CTRL_BASE_IDX = 1 # macro -mmCH_DRAM_BURST_MASK = 0x2d82 # macro -mmCH_DRAM_BURST_MASK_BASE_IDX = 1 # macro -mmCH_ARB_STATUS = 0x2d83 # macro -mmCH_ARB_STATUS_BASE_IDX = 1 # macro -mmCH_DRAM_BURST_CTRL = 0x2d84 # macro -mmCH_DRAM_BURST_CTRL_BASE_IDX = 1 # macro -mmCHA_CHC_CREDITS = 0x2d88 # macro -mmCHA_CHC_CREDITS_BASE_IDX = 1 # macro -mmCHA_CLIENT_FREE_DELAY = 0x2d89 # macro -mmCHA_CLIENT_FREE_DELAY_BASE_IDX = 1 # macro -mmCH_PIPE_STEER = 0x2d90 # macro -mmCH_PIPE_STEER_BASE_IDX = 1 # macro -mmCH_VC5_ENABLE = 0x2d94 # macro -mmCH_VC5_ENABLE_BASE_IDX = 1 # macro -mmCHC_CTRL = 0x2dc0 # macro -mmCHC_CTRL_BASE_IDX = 1 # macro -mmCHC_STATUS = 0x2dc1 # macro -mmCHC_STATUS_BASE_IDX = 1 # macro -mmCHCG_CTRL = 0x2dc2 # macro -mmCHCG_CTRL_BASE_IDX = 1 # macro -mmCHCG_STATUS = 0x2dc3 # macro -mmCHCG_STATUS_BASE_IDX = 1 # macro -mmGL2C_CTRL = 0x2e00 # macro -mmGL2C_CTRL_BASE_IDX = 1 # macro -mmGL2C_CTRL2 = 0x2e01 # macro -mmGL2C_CTRL2_BASE_IDX = 1 # macro -mmGL2C_ADDR_MATCH_MASK = 0x2e03 # macro -mmGL2C_ADDR_MATCH_MASK_BASE_IDX = 1 # macro -mmGL2C_ADDR_MATCH_SIZE = 0x2e04 # macro -mmGL2C_ADDR_MATCH_SIZE_BASE_IDX = 1 # macro -mmGL2C_WBINVL2 = 0x2e05 # macro -mmGL2C_WBINVL2_BASE_IDX = 1 # macro -mmGL2C_SOFT_RESET = 0x2e06 # macro -mmGL2C_SOFT_RESET_BASE_IDX = 1 # macro -mmGL2C_CM_CTRL0 = 0x2e07 # macro -mmGL2C_CM_CTRL0_BASE_IDX = 1 # macro -mmGL2C_CM_CTRL1 = 0x2e08 # macro -mmGL2C_CM_CTRL1_BASE_IDX = 1 # macro -mmGL2C_CM_STALL = 0x2e09 # macro -mmGL2C_CM_STALL_BASE_IDX = 1 # macro -mmGL2C_MDC_PF_FLAG_CTRL = 0x2e0a # macro -mmGL2C_MDC_PF_FLAG_CTRL_BASE_IDX = 1 # macro -mmGL2C_LB_CTR_CTRL = 0x2e0d # macro -mmGL2C_LB_CTR_CTRL_BASE_IDX = 1 # macro -mmGL2C_LB_DATA0 = 0x2e0e # macro -mmGL2C_LB_DATA0_BASE_IDX = 1 # macro -mmGL2C_LB_DATA1 = 0x2e0f # macro -mmGL2C_LB_DATA1_BASE_IDX = 1 # macro -mmGL2C_LB_DATA2 = 0x2e10 # macro -mmGL2C_LB_DATA2_BASE_IDX = 1 # macro -mmGL2C_LB_DATA3 = 0x2e11 # macro -mmGL2C_LB_DATA3_BASE_IDX = 1 # macro -mmGL2C_LB_CTR_SEL0 = 0x2e12 # macro -mmGL2C_LB_CTR_SEL0_BASE_IDX = 1 # macro -mmGL2C_LB_CTR_SEL1 = 0x2e13 # macro -mmGL2C_LB_CTR_SEL1_BASE_IDX = 1 # macro -mmGL2A_ADDR_MATCH_CTRL = 0x2e20 # macro -mmGL2A_ADDR_MATCH_CTRL_BASE_IDX = 1 # macro -mmGL2A_ADDR_MATCH_MASK = 0x2e21 # macro -mmGL2A_ADDR_MATCH_MASK_BASE_IDX = 1 # macro -mmGL2A_ADDR_MATCH_SIZE = 0x2e22 # macro -mmGL2A_ADDR_MATCH_SIZE_BASE_IDX = 1 # macro -mmGL2A_PRIORITY_CTRL = 0x2e23 # macro -mmGL2A_PRIORITY_CTRL_BASE_IDX = 1 # macro -mmGL2_PIPE_STEER_0 = 0x2e25 # macro -mmGL2_PIPE_STEER_0_BASE_IDX = 1 # macro -mmGL2_PIPE_STEER_1 = 0x2e26 # macro -mmGL2_PIPE_STEER_1_BASE_IDX = 1 # macro -mmCPG_PERFCOUNTER1_LO = 0x3000 # macro -mmCPG_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmCPG_PERFCOUNTER1_HI = 0x3001 # macro -mmCPG_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmCPG_PERFCOUNTER0_LO = 0x3002 # macro -mmCPG_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmCPG_PERFCOUNTER0_HI = 0x3003 # macro -mmCPG_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmCPC_PERFCOUNTER1_LO = 0x3004 # macro -mmCPC_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmCPC_PERFCOUNTER1_HI = 0x3005 # macro -mmCPC_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmCPC_PERFCOUNTER0_LO = 0x3006 # macro -mmCPC_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmCPC_PERFCOUNTER0_HI = 0x3007 # macro -mmCPC_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmCPF_PERFCOUNTER1_LO = 0x3008 # macro -mmCPF_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmCPF_PERFCOUNTER1_HI = 0x3009 # macro -mmCPF_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmCPF_PERFCOUNTER0_LO = 0x300a # macro -mmCPF_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmCPF_PERFCOUNTER0_HI = 0x300b # macro -mmCPF_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmCPF_LATENCY_STATS_DATA = 0x300c # macro -mmCPF_LATENCY_STATS_DATA_BASE_IDX = 1 # macro -mmCPG_LATENCY_STATS_DATA = 0x300d # macro -mmCPG_LATENCY_STATS_DATA_BASE_IDX = 1 # macro -mmCPC_LATENCY_STATS_DATA = 0x300e # macro -mmCPC_LATENCY_STATS_DATA_BASE_IDX = 1 # macro -mmGRBM_PERFCOUNTER0_LO = 0x3040 # macro -mmGRBM_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmGRBM_PERFCOUNTER0_HI = 0x3041 # macro -mmGRBM_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmGRBM_PERFCOUNTER1_LO = 0x3043 # macro -mmGRBM_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmGRBM_PERFCOUNTER1_HI = 0x3044 # macro -mmGRBM_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmGRBM_SE0_PERFCOUNTER_LO = 0x3045 # macro -mmGRBM_SE0_PERFCOUNTER_LO_BASE_IDX = 1 # macro -mmGRBM_SE0_PERFCOUNTER_HI = 0x3046 # macro -mmGRBM_SE0_PERFCOUNTER_HI_BASE_IDX = 1 # macro -mmGRBM_SE1_PERFCOUNTER_LO = 0x3047 # macro -mmGRBM_SE1_PERFCOUNTER_LO_BASE_IDX = 1 # macro -mmGRBM_SE1_PERFCOUNTER_HI = 0x3048 # macro -mmGRBM_SE1_PERFCOUNTER_HI_BASE_IDX = 1 # macro -mmGRBM_SE2_PERFCOUNTER_LO = 0x3049 # macro -mmGRBM_SE2_PERFCOUNTER_LO_BASE_IDX = 1 # macro -mmGRBM_SE2_PERFCOUNTER_HI = 0x304a # macro -mmGRBM_SE2_PERFCOUNTER_HI_BASE_IDX = 1 # macro -mmGRBM_SE3_PERFCOUNTER_LO = 0x304b # macro -mmGRBM_SE3_PERFCOUNTER_LO_BASE_IDX = 1 # macro -mmGRBM_SE3_PERFCOUNTER_HI = 0x304c # macro -mmGRBM_SE3_PERFCOUNTER_HI_BASE_IDX = 1 # macro -mmGE1_PERFCOUNTER0_LO = 0x30a4 # macro -mmGE1_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmGE1_PERFCOUNTER0_HI = 0x30a5 # macro -mmGE1_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmGE1_PERFCOUNTER1_LO = 0x30a6 # macro -mmGE1_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmGE1_PERFCOUNTER1_HI = 0x30a7 # macro -mmGE1_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmGE1_PERFCOUNTER2_LO = 0x30a8 # macro -mmGE1_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmGE1_PERFCOUNTER2_HI = 0x30a9 # macro -mmGE1_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmGE1_PERFCOUNTER3_LO = 0x30aa # macro -mmGE1_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmGE1_PERFCOUNTER3_HI = 0x30ab # macro -mmGE1_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmGE2_DIST_PERFCOUNTER0_LO = 0x30ac # macro -mmGE2_DIST_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmGE2_DIST_PERFCOUNTER0_HI = 0x30ad # macro -mmGE2_DIST_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmGE2_DIST_PERFCOUNTER1_LO = 0x30ae # macro -mmGE2_DIST_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmGE2_DIST_PERFCOUNTER1_HI = 0x30af # macro -mmGE2_DIST_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmGE2_DIST_PERFCOUNTER2_LO = 0x30b0 # macro -mmGE2_DIST_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmGE2_DIST_PERFCOUNTER2_HI = 0x30b1 # macro -mmGE2_DIST_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmGE2_DIST_PERFCOUNTER3_LO = 0x30b2 # macro -mmGE2_DIST_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmGE2_DIST_PERFCOUNTER3_HI = 0x30b3 # macro -mmGE2_DIST_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmGE2_SE_PERFCOUNTER0_LO = 0x30b4 # macro -mmGE2_SE_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmGE2_SE_PERFCOUNTER0_HI = 0x30b5 # macro -mmGE2_SE_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmGE2_SE_PERFCOUNTER1_LO = 0x30b6 # macro -mmGE2_SE_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmGE2_SE_PERFCOUNTER1_HI = 0x30b7 # macro -mmGE2_SE_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmGE2_SE_PERFCOUNTER2_LO = 0x30b8 # macro -mmGE2_SE_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmGE2_SE_PERFCOUNTER2_HI = 0x30b9 # macro -mmGE2_SE_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmGE2_SE_PERFCOUNTER3_LO = 0x30ba # macro -mmGE2_SE_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmGE2_SE_PERFCOUNTER3_HI = 0x30bb # macro -mmGE2_SE_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmPA_SU_PERFCOUNTER0_LO = 0x3100 # macro -mmPA_SU_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmPA_SU_PERFCOUNTER0_HI = 0x3101 # macro -mmPA_SU_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmPA_SU_PERFCOUNTER1_LO = 0x3102 # macro -mmPA_SU_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmPA_SU_PERFCOUNTER1_HI = 0x3103 # macro -mmPA_SU_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmPA_SU_PERFCOUNTER2_LO = 0x3104 # macro -mmPA_SU_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmPA_SU_PERFCOUNTER2_HI = 0x3105 # macro -mmPA_SU_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmPA_SU_PERFCOUNTER3_LO = 0x3106 # macro -mmPA_SU_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmPA_SU_PERFCOUNTER3_HI = 0x3107 # macro -mmPA_SU_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER0_LO = 0x3140 # macro -mmPA_SC_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER0_HI = 0x3141 # macro -mmPA_SC_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER1_LO = 0x3142 # macro -mmPA_SC_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER1_HI = 0x3143 # macro -mmPA_SC_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER2_LO = 0x3144 # macro -mmPA_SC_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER2_HI = 0x3145 # macro -mmPA_SC_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER3_LO = 0x3146 # macro -mmPA_SC_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER3_HI = 0x3147 # macro -mmPA_SC_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER4_LO = 0x3148 # macro -mmPA_SC_PERFCOUNTER4_LO_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER4_HI = 0x3149 # macro -mmPA_SC_PERFCOUNTER4_HI_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER5_LO = 0x314a # macro -mmPA_SC_PERFCOUNTER5_LO_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER5_HI = 0x314b # macro -mmPA_SC_PERFCOUNTER5_HI_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER6_LO = 0x314c # macro -mmPA_SC_PERFCOUNTER6_LO_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER6_HI = 0x314d # macro -mmPA_SC_PERFCOUNTER6_HI_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER7_LO = 0x314e # macro -mmPA_SC_PERFCOUNTER7_LO_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER7_HI = 0x314f # macro -mmPA_SC_PERFCOUNTER7_HI_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER0_HI = 0x3180 # macro -mmSPI_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER0_LO = 0x3181 # macro -mmSPI_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER1_HI = 0x3182 # macro -mmSPI_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER1_LO = 0x3183 # macro -mmSPI_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER2_HI = 0x3184 # macro -mmSPI_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER2_LO = 0x3185 # macro -mmSPI_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER3_HI = 0x3186 # macro -mmSPI_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER3_LO = 0x3187 # macro -mmSPI_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER4_HI = 0x3188 # macro -mmSPI_PERFCOUNTER4_HI_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER4_LO = 0x3189 # macro -mmSPI_PERFCOUNTER4_LO_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER5_HI = 0x318a # macro -mmSPI_PERFCOUNTER5_HI_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER5_LO = 0x318b # macro -mmSPI_PERFCOUNTER5_LO_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER0_LO = 0x31c0 # macro -mmSQ_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER0_HI = 0x31c1 # macro -mmSQ_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER1_LO = 0x31c2 # macro -mmSQ_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER1_HI = 0x31c3 # macro -mmSQ_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER2_LO = 0x31c4 # macro -mmSQ_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER2_HI = 0x31c5 # macro -mmSQ_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER3_LO = 0x31c6 # macro -mmSQ_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER3_HI = 0x31c7 # macro -mmSQ_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER4_LO = 0x31c8 # macro -mmSQ_PERFCOUNTER4_LO_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER4_HI = 0x31c9 # macro -mmSQ_PERFCOUNTER4_HI_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER5_LO = 0x31ca # macro -mmSQ_PERFCOUNTER5_LO_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER5_HI = 0x31cb # macro -mmSQ_PERFCOUNTER5_HI_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER6_LO = 0x31cc # macro -mmSQ_PERFCOUNTER6_LO_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER6_HI = 0x31cd # macro -mmSQ_PERFCOUNTER6_HI_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER7_LO = 0x31ce # macro -mmSQ_PERFCOUNTER7_LO_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER7_HI = 0x31cf # macro -mmSQ_PERFCOUNTER7_HI_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER8_LO = 0x31d0 # macro -mmSQ_PERFCOUNTER8_LO_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER8_HI = 0x31d1 # macro -mmSQ_PERFCOUNTER8_HI_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER9_LO = 0x31d2 # macro -mmSQ_PERFCOUNTER9_LO_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER9_HI = 0x31d3 # macro -mmSQ_PERFCOUNTER9_HI_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER10_LO = 0x31d4 # macro -mmSQ_PERFCOUNTER10_LO_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER10_HI = 0x31d5 # macro -mmSQ_PERFCOUNTER10_HI_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER11_LO = 0x31d6 # macro -mmSQ_PERFCOUNTER11_LO_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER11_HI = 0x31d7 # macro -mmSQ_PERFCOUNTER11_HI_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER12_LO = 0x31d8 # macro -mmSQ_PERFCOUNTER12_LO_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER12_HI = 0x31d9 # macro -mmSQ_PERFCOUNTER12_HI_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER13_LO = 0x31da # macro -mmSQ_PERFCOUNTER13_LO_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER13_HI = 0x31db # macro -mmSQ_PERFCOUNTER13_HI_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER14_LO = 0x31dc # macro -mmSQ_PERFCOUNTER14_LO_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER14_HI = 0x31dd # macro -mmSQ_PERFCOUNTER14_HI_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER15_LO = 0x31de # macro -mmSQ_PERFCOUNTER15_LO_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER15_HI = 0x31df # macro -mmSQ_PERFCOUNTER15_HI_BASE_IDX = 1 # macro -mmSX_PERFCOUNTER0_LO = 0x3240 # macro -mmSX_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmSX_PERFCOUNTER0_HI = 0x3241 # macro -mmSX_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmSX_PERFCOUNTER1_LO = 0x3242 # macro -mmSX_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmSX_PERFCOUNTER1_HI = 0x3243 # macro -mmSX_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmSX_PERFCOUNTER2_LO = 0x3244 # macro -mmSX_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmSX_PERFCOUNTER2_HI = 0x3245 # macro -mmSX_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmSX_PERFCOUNTER3_LO = 0x3246 # macro -mmSX_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmSX_PERFCOUNTER3_HI = 0x3247 # macro -mmSX_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmGCEA_PERFCOUNTER2_LO = 0x3260 # macro -mmGCEA_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmGCEA_PERFCOUNTER2_HI = 0x3261 # macro -mmGCEA_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmGCEA_PERFCOUNTER_LO = 0x3262 # macro -mmGCEA_PERFCOUNTER_LO_BASE_IDX = 1 # macro -mmGCEA_PERFCOUNTER_HI = 0x3263 # macro -mmGCEA_PERFCOUNTER_HI_BASE_IDX = 1 # macro -mmGDS_PERFCOUNTER0_LO = 0x3280 # macro -mmGDS_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmGDS_PERFCOUNTER0_HI = 0x3281 # macro -mmGDS_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmGDS_PERFCOUNTER1_LO = 0x3282 # macro -mmGDS_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmGDS_PERFCOUNTER1_HI = 0x3283 # macro -mmGDS_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmGDS_PERFCOUNTER2_LO = 0x3284 # macro -mmGDS_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmGDS_PERFCOUNTER2_HI = 0x3285 # macro -mmGDS_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmGDS_PERFCOUNTER3_LO = 0x3286 # macro -mmGDS_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmGDS_PERFCOUNTER3_HI = 0x3287 # macro -mmGDS_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmTA_PERFCOUNTER0_LO = 0x32c0 # macro -mmTA_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmTA_PERFCOUNTER0_HI = 0x32c1 # macro -mmTA_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmTA_PERFCOUNTER1_LO = 0x32c2 # macro -mmTA_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmTA_PERFCOUNTER1_HI = 0x32c3 # macro -mmTA_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmTD_PERFCOUNTER0_LO = 0x3300 # macro -mmTD_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmTD_PERFCOUNTER0_HI = 0x3301 # macro -mmTD_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmTD_PERFCOUNTER1_LO = 0x3302 # macro -mmTD_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmTD_PERFCOUNTER1_HI = 0x3303 # macro -mmTD_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmTCP_PERFCOUNTER0_LO = 0x3340 # macro -mmTCP_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmTCP_PERFCOUNTER0_HI = 0x3341 # macro -mmTCP_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmTCP_PERFCOUNTER1_LO = 0x3342 # macro -mmTCP_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmTCP_PERFCOUNTER1_HI = 0x3343 # macro -mmTCP_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmTCP_PERFCOUNTER2_LO = 0x3344 # macro -mmTCP_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmTCP_PERFCOUNTER2_HI = 0x3345 # macro -mmTCP_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmTCP_PERFCOUNTER3_LO = 0x3346 # macro -mmTCP_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmTCP_PERFCOUNTER3_HI = 0x3347 # macro -mmTCP_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmGL2C_PERFCOUNTER0_LO = 0x3380 # macro -mmGL2C_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmGL2C_PERFCOUNTER0_HI = 0x3381 # macro -mmGL2C_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmGL2C_PERFCOUNTER1_LO = 0x3382 # macro -mmGL2C_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmGL2C_PERFCOUNTER1_HI = 0x3383 # macro -mmGL2C_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmGL2C_PERFCOUNTER2_LO = 0x3384 # macro -mmGL2C_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmGL2C_PERFCOUNTER2_HI = 0x3385 # macro -mmGL2C_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmGL2C_PERFCOUNTER3_LO = 0x3386 # macro -mmGL2C_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmGL2C_PERFCOUNTER3_HI = 0x3387 # macro -mmGL2C_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmGL2A_PERFCOUNTER0_LO = 0x3390 # macro -mmGL2A_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmGL2A_PERFCOUNTER0_HI = 0x3391 # macro -mmGL2A_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmGL2A_PERFCOUNTER1_LO = 0x3392 # macro -mmGL2A_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmGL2A_PERFCOUNTER1_HI = 0x3393 # macro -mmGL2A_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmGL2A_PERFCOUNTER2_LO = 0x3394 # macro -mmGL2A_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmGL2A_PERFCOUNTER2_HI = 0x3395 # macro -mmGL2A_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmGL2A_PERFCOUNTER3_LO = 0x3396 # macro -mmGL2A_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmGL2A_PERFCOUNTER3_HI = 0x3397 # macro -mmGL2A_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmGL1C_PERFCOUNTER0_LO = 0x33a0 # macro -mmGL1C_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmGL1C_PERFCOUNTER0_HI = 0x33a1 # macro -mmGL1C_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmGL1C_PERFCOUNTER1_LO = 0x33a2 # macro -mmGL1C_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmGL1C_PERFCOUNTER1_HI = 0x33a3 # macro -mmGL1C_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmGL1C_PERFCOUNTER2_LO = 0x33a4 # macro -mmGL1C_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmGL1C_PERFCOUNTER2_HI = 0x33a5 # macro -mmGL1C_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmGL1C_PERFCOUNTER3_LO = 0x33a6 # macro -mmGL1C_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmGL1C_PERFCOUNTER3_HI = 0x33a7 # macro -mmGL1C_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmCHC_PERFCOUNTER0_LO = 0x33c0 # macro -mmCHC_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmCHC_PERFCOUNTER0_HI = 0x33c1 # macro -mmCHC_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmCHC_PERFCOUNTER1_LO = 0x33c2 # macro -mmCHC_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmCHC_PERFCOUNTER1_HI = 0x33c3 # macro -mmCHC_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmCHC_PERFCOUNTER2_LO = 0x33c4 # macro -mmCHC_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmCHC_PERFCOUNTER2_HI = 0x33c5 # macro -mmCHC_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmCHC_PERFCOUNTER3_LO = 0x33c6 # macro -mmCHC_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmCHC_PERFCOUNTER3_HI = 0x33c7 # macro -mmCHC_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmCHCG_PERFCOUNTER0_LO = 0x33c8 # macro -mmCHCG_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmCHCG_PERFCOUNTER0_HI = 0x33c9 # macro -mmCHCG_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmCHCG_PERFCOUNTER1_LO = 0x33ca # macro -mmCHCG_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmCHCG_PERFCOUNTER1_HI = 0x33cb # macro -mmCHCG_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmCHCG_PERFCOUNTER2_LO = 0x33cc # macro -mmCHCG_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmCHCG_PERFCOUNTER2_HI = 0x33cd # macro -mmCHCG_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmCHCG_PERFCOUNTER3_LO = 0x33ce # macro -mmCHCG_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmCHCG_PERFCOUNTER3_HI = 0x33cf # macro -mmCHCG_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmCB_PERFCOUNTER0_LO = 0x3406 # macro -mmCB_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmCB_PERFCOUNTER0_HI = 0x3407 # macro -mmCB_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmCB_PERFCOUNTER1_LO = 0x3408 # macro -mmCB_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmCB_PERFCOUNTER1_HI = 0x3409 # macro -mmCB_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmCB_PERFCOUNTER2_LO = 0x340a # macro -mmCB_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmCB_PERFCOUNTER2_HI = 0x340b # macro -mmCB_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmCB_PERFCOUNTER3_LO = 0x340c # macro -mmCB_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmCB_PERFCOUNTER3_HI = 0x340d # macro -mmCB_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmDB_PERFCOUNTER0_LO = 0x3440 # macro -mmDB_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmDB_PERFCOUNTER0_HI = 0x3441 # macro -mmDB_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmDB_PERFCOUNTER1_LO = 0x3442 # macro -mmDB_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmDB_PERFCOUNTER1_HI = 0x3443 # macro -mmDB_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmDB_PERFCOUNTER2_LO = 0x3444 # macro -mmDB_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmDB_PERFCOUNTER2_HI = 0x3445 # macro -mmDB_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmDB_PERFCOUNTER3_LO = 0x3446 # macro -mmDB_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmDB_PERFCOUNTER3_HI = 0x3447 # macro -mmDB_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmRLC_PERFCOUNTER0_LO = 0x3480 # macro -mmRLC_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmRLC_PERFCOUNTER0_HI = 0x3481 # macro -mmRLC_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmRLC_PERFCOUNTER1_LO = 0x3482 # macro -mmRLC_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmRLC_PERFCOUNTER1_HI = 0x3483 # macro -mmRLC_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmRMI_PERFCOUNTER0_LO = 0x34c0 # macro -mmRMI_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmRMI_PERFCOUNTER0_HI = 0x34c1 # macro -mmRMI_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmRMI_PERFCOUNTER1_LO = 0x34c2 # macro -mmRMI_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmRMI_PERFCOUNTER1_HI = 0x34c3 # macro -mmRMI_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmRMI_PERFCOUNTER2_LO = 0x34c4 # macro -mmRMI_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmRMI_PERFCOUNTER2_HI = 0x34c5 # macro -mmRMI_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmRMI_PERFCOUNTER3_LO = 0x34c6 # macro -mmRMI_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmRMI_PERFCOUNTER3_HI = 0x34c7 # macro -mmRMI_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmUTCL1_PERFCOUNTER0_LO = 0x351c # macro -mmUTCL1_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmUTCL1_PERFCOUNTER0_HI = 0x351d # macro -mmUTCL1_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmUTCL1_PERFCOUNTER1_LO = 0x351e # macro -mmUTCL1_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmUTCL1_PERFCOUNTER1_HI = 0x351f # macro -mmUTCL1_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmGCR_PERFCOUNTER0_LO = 0x3520 # macro -mmGCR_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmGCR_PERFCOUNTER0_HI = 0x3521 # macro -mmGCR_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmGCR_PERFCOUNTER1_LO = 0x3522 # macro -mmGCR_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmGCR_PERFCOUNTER1_HI = 0x3523 # macro -mmGCR_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER0_LO = 0x3580 # macro -mmPA_PH_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER0_HI = 0x3581 # macro -mmPA_PH_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER1_LO = 0x3582 # macro -mmPA_PH_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER1_HI = 0x3583 # macro -mmPA_PH_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER2_LO = 0x3584 # macro -mmPA_PH_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER2_HI = 0x3585 # macro -mmPA_PH_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER3_LO = 0x3586 # macro -mmPA_PH_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER3_HI = 0x3587 # macro -mmPA_PH_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER4_LO = 0x3588 # macro -mmPA_PH_PERFCOUNTER4_LO_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER4_HI = 0x3589 # macro -mmPA_PH_PERFCOUNTER4_HI_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER5_LO = 0x358a # macro -mmPA_PH_PERFCOUNTER5_LO_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER5_HI = 0x358b # macro -mmPA_PH_PERFCOUNTER5_HI_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER6_LO = 0x358c # macro -mmPA_PH_PERFCOUNTER6_LO_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER6_HI = 0x358d # macro -mmPA_PH_PERFCOUNTER6_HI_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER7_LO = 0x358e # macro -mmPA_PH_PERFCOUNTER7_LO_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER7_HI = 0x358f # macro -mmPA_PH_PERFCOUNTER7_HI_BASE_IDX = 1 # macro -mmGL1A_PERFCOUNTER0_LO = 0x35c0 # macro -mmGL1A_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmGL1A_PERFCOUNTER0_HI = 0x35c1 # macro -mmGL1A_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmGL1A_PERFCOUNTER1_LO = 0x35c2 # macro -mmGL1A_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmGL1A_PERFCOUNTER1_HI = 0x35c3 # macro -mmGL1A_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmGL1A_PERFCOUNTER2_LO = 0x35c4 # macro -mmGL1A_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmGL1A_PERFCOUNTER2_HI = 0x35c5 # macro -mmGL1A_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmGL1A_PERFCOUNTER3_LO = 0x35c6 # macro -mmGL1A_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmGL1A_PERFCOUNTER3_HI = 0x35c7 # macro -mmGL1A_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmCHA_PERFCOUNTER0_LO = 0x3600 # macro -mmCHA_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmCHA_PERFCOUNTER0_HI = 0x3601 # macro -mmCHA_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmCHA_PERFCOUNTER1_LO = 0x3602 # macro -mmCHA_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmCHA_PERFCOUNTER1_HI = 0x3603 # macro -mmCHA_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmCHA_PERFCOUNTER2_LO = 0x3604 # macro -mmCHA_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmCHA_PERFCOUNTER2_HI = 0x3605 # macro -mmCHA_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmCHA_PERFCOUNTER3_LO = 0x3606 # macro -mmCHA_PERFCOUNTER3_LO_BASE_IDX = 1 # macro -mmCHA_PERFCOUNTER3_HI = 0x3607 # macro -mmCHA_PERFCOUNTER3_HI_BASE_IDX = 1 # macro -mmGUS_PERFCOUNTER2_LO = 0x3640 # macro -mmGUS_PERFCOUNTER2_LO_BASE_IDX = 1 # macro -mmGUS_PERFCOUNTER2_HI = 0x3641 # macro -mmGUS_PERFCOUNTER2_HI_BASE_IDX = 1 # macro -mmGUS_PERFCOUNTER_LO = 0x3642 # macro -mmGUS_PERFCOUNTER_LO_BASE_IDX = 1 # macro -mmGUS_PERFCOUNTER_HI = 0x3643 # macro -mmGUS_PERFCOUNTER_HI_BASE_IDX = 1 # macro -mmGCMC_VM_L2_PERFCOUNTER_LO = 0x34e8 # macro -mmGCMC_VM_L2_PERFCOUNTER_LO_BASE_IDX = 1 # macro -mmGCMC_VM_L2_PERFCOUNTER_HI = 0x34e9 # macro -mmGCMC_VM_L2_PERFCOUNTER_HI_BASE_IDX = 1 # macro -mmGCUTCL2_PERFCOUNTER_LO = 0x34ea # macro -mmGCUTCL2_PERFCOUNTER_LO_BASE_IDX = 1 # macro -mmGCUTCL2_PERFCOUNTER_HI = 0x34eb # macro -mmGCUTCL2_PERFCOUNTER_HI_BASE_IDX = 1 # macro -mmGCVML2_PERFCOUNTER2_0_LO = 0x34f8 # macro -mmGCVML2_PERFCOUNTER2_0_LO_BASE_IDX = 1 # macro -mmGCVML2_PERFCOUNTER2_1_LO = 0x34f9 # macro -mmGCVML2_PERFCOUNTER2_1_LO_BASE_IDX = 1 # macro -mmGCVML2_PERFCOUNTER2_0_HI = 0x34fa # macro -mmGCVML2_PERFCOUNTER2_0_HI_BASE_IDX = 1 # macro -mmGCVML2_PERFCOUNTER2_1_HI = 0x34fb # macro -mmGCVML2_PERFCOUNTER2_1_HI_BASE_IDX = 1 # macro -mmSDMA0_PERFCNT_PERFCOUNTER_LO = 0x3660 # macro -mmSDMA0_PERFCNT_PERFCOUNTER_LO_BASE_IDX = 1 # macro -mmSDMA0_PERFCNT_PERFCOUNTER_HI = 0x3661 # macro -mmSDMA0_PERFCNT_PERFCOUNTER_HI_BASE_IDX = 1 # macro -mmSDMA0_PERFCOUNTER0_LO = 0x3662 # macro -mmSDMA0_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmSDMA0_PERFCOUNTER0_HI = 0x3663 # macro -mmSDMA0_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmSDMA0_PERFCOUNTER1_LO = 0x3664 # macro -mmSDMA0_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmSDMA0_PERFCOUNTER1_HI = 0x3665 # macro -mmSDMA0_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmSDMA1_PERFCNT_PERFCOUNTER_LO = 0x366c # macro -mmSDMA1_PERFCNT_PERFCOUNTER_LO_BASE_IDX = 1 # macro -mmSDMA1_PERFCNT_PERFCOUNTER_HI = 0x366d # macro -mmSDMA1_PERFCNT_PERFCOUNTER_HI_BASE_IDX = 1 # macro -mmSDMA1_PERFCOUNTER0_LO = 0x366e # macro -mmSDMA1_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmSDMA1_PERFCOUNTER0_HI = 0x366f # macro -mmSDMA1_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmSDMA1_PERFCOUNTER1_LO = 0x3670 # macro -mmSDMA1_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmSDMA1_PERFCOUNTER1_HI = 0x3671 # macro -mmSDMA1_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmSDMA2_PERFCNT_PERFCOUNTER_LO = 0x3678 # macro -mmSDMA2_PERFCNT_PERFCOUNTER_LO_BASE_IDX = 1 # macro -mmSDMA2_PERFCNT_PERFCOUNTER_HI = 0x3679 # macro -mmSDMA2_PERFCNT_PERFCOUNTER_HI_BASE_IDX = 1 # macro -mmSDMA2_PERFCOUNTER0_LO = 0x367a # macro -mmSDMA2_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmSDMA2_PERFCOUNTER0_HI = 0x367b # macro -mmSDMA2_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmSDMA2_PERFCOUNTER1_LO = 0x367c # macro -mmSDMA2_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmSDMA2_PERFCOUNTER1_HI = 0x367d # macro -mmSDMA2_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmSDMA3_PERFCNT_PERFCOUNTER_LO = 0x3684 # macro -mmSDMA3_PERFCNT_PERFCOUNTER_LO_BASE_IDX = 1 # macro -mmSDMA3_PERFCNT_PERFCOUNTER_HI = 0x3685 # macro -mmSDMA3_PERFCNT_PERFCOUNTER_HI_BASE_IDX = 1 # macro -mmSDMA3_PERFCOUNTER0_LO = 0x3686 # macro -mmSDMA3_PERFCOUNTER0_LO_BASE_IDX = 1 # macro -mmSDMA3_PERFCOUNTER0_HI = 0x3687 # macro -mmSDMA3_PERFCOUNTER0_HI_BASE_IDX = 1 # macro -mmSDMA3_PERFCOUNTER1_LO = 0x3688 # macro -mmSDMA3_PERFCOUNTER1_LO_BASE_IDX = 1 # macro -mmSDMA3_PERFCOUNTER1_HI = 0x3689 # macro -mmSDMA3_PERFCOUNTER1_HI_BASE_IDX = 1 # macro -mmCPG_PERFCOUNTER1_SELECT = 0x3800 # macro -mmCPG_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmCPG_PERFCOUNTER0_SELECT1 = 0x3801 # macro -mmCPG_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmCPG_PERFCOUNTER0_SELECT = 0x3802 # macro -mmCPG_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmCPC_PERFCOUNTER1_SELECT = 0x3803 # macro -mmCPC_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmCPC_PERFCOUNTER0_SELECT1 = 0x3804 # macro -mmCPC_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmCPF_PERFCOUNTER1_SELECT = 0x3805 # macro -mmCPF_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmCPF_PERFCOUNTER0_SELECT1 = 0x3806 # macro -mmCPF_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmCPF_PERFCOUNTER0_SELECT = 0x3807 # macro -mmCPF_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmCP_PERFMON_CNTL = 0x3808 # macro -mmCP_PERFMON_CNTL_BASE_IDX = 1 # macro -mmCPC_PERFCOUNTER0_SELECT = 0x3809 # macro -mmCPC_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmCPF_TC_PERF_COUNTER_WINDOW_SELECT = 0x380a # macro -mmCPF_TC_PERF_COUNTER_WINDOW_SELECT_BASE_IDX = 1 # macro -mmCPG_TC_PERF_COUNTER_WINDOW_SELECT = 0x380b # macro -mmCPG_TC_PERF_COUNTER_WINDOW_SELECT_BASE_IDX = 1 # macro -mmCPF_LATENCY_STATS_SELECT = 0x380c # macro -mmCPF_LATENCY_STATS_SELECT_BASE_IDX = 1 # macro -mmCPG_LATENCY_STATS_SELECT = 0x380d # macro -mmCPG_LATENCY_STATS_SELECT_BASE_IDX = 1 # macro -mmCPC_LATENCY_STATS_SELECT = 0x380e # macro -mmCPC_LATENCY_STATS_SELECT_BASE_IDX = 1 # macro -mmCP_DRAW_OBJECT = 0x3810 # macro -mmCP_DRAW_OBJECT_BASE_IDX = 1 # macro -mmCP_DRAW_OBJECT_COUNTER = 0x3811 # macro -mmCP_DRAW_OBJECT_COUNTER_BASE_IDX = 1 # macro -mmCP_DRAW_WINDOW_MASK_HI = 0x3812 # macro -mmCP_DRAW_WINDOW_MASK_HI_BASE_IDX = 1 # macro -mmCP_DRAW_WINDOW_HI = 0x3813 # macro -mmCP_DRAW_WINDOW_HI_BASE_IDX = 1 # macro -mmCP_DRAW_WINDOW_LO = 0x3814 # macro -mmCP_DRAW_WINDOW_LO_BASE_IDX = 1 # macro -mmCP_DRAW_WINDOW_CNTL = 0x3815 # macro -mmCP_DRAW_WINDOW_CNTL_BASE_IDX = 1 # macro -mmGRBM_PERFCOUNTER0_SELECT = 0x3840 # macro -mmGRBM_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmGRBM_PERFCOUNTER1_SELECT = 0x3841 # macro -mmGRBM_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmGRBM_SE0_PERFCOUNTER_SELECT = 0x3842 # macro -mmGRBM_SE0_PERFCOUNTER_SELECT_BASE_IDX = 1 # macro -mmGRBM_SE1_PERFCOUNTER_SELECT = 0x3843 # macro -mmGRBM_SE1_PERFCOUNTER_SELECT_BASE_IDX = 1 # macro -mmGRBM_SE2_PERFCOUNTER_SELECT = 0x3844 # macro -mmGRBM_SE2_PERFCOUNTER_SELECT_BASE_IDX = 1 # macro -mmGRBM_SE3_PERFCOUNTER_SELECT = 0x3845 # macro -mmGRBM_SE3_PERFCOUNTER_SELECT_BASE_IDX = 1 # macro -mmGRBM_PERFCOUNTER0_SELECT_HI = 0x384d # macro -mmGRBM_PERFCOUNTER0_SELECT_HI_BASE_IDX = 1 # macro -mmGRBM_PERFCOUNTER1_SELECT_HI = 0x384e # macro -mmGRBM_PERFCOUNTER1_SELECT_HI_BASE_IDX = 1 # macro -mmGE1_PERFCOUNTER0_SELECT = 0x38a4 # macro -mmGE1_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmGE1_PERFCOUNTER0_SELECT1 = 0x38a5 # macro -mmGE1_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmGE1_PERFCOUNTER1_SELECT = 0x38a6 # macro -mmGE1_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmGE1_PERFCOUNTER1_SELECT1 = 0x38a7 # macro -mmGE1_PERFCOUNTER1_SELECT1_BASE_IDX = 1 # macro -mmGE1_PERFCOUNTER2_SELECT = 0x38a8 # macro -mmGE1_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmGE1_PERFCOUNTER2_SELECT1 = 0x38a9 # macro -mmGE1_PERFCOUNTER2_SELECT1_BASE_IDX = 1 # macro -mmGE1_PERFCOUNTER3_SELECT = 0x38aa # macro -mmGE1_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmGE1_PERFCOUNTER3_SELECT1 = 0x38ab # macro -mmGE1_PERFCOUNTER3_SELECT1_BASE_IDX = 1 # macro -mmGE2_DIST_PERFCOUNTER0_SELECT = 0x38ac # macro -mmGE2_DIST_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmGE2_DIST_PERFCOUNTER0_SELECT1 = 0x38ad # macro -mmGE2_DIST_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmGE2_DIST_PERFCOUNTER1_SELECT = 0x38ae # macro -mmGE2_DIST_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmGE2_DIST_PERFCOUNTER1_SELECT1 = 0x38af # macro -mmGE2_DIST_PERFCOUNTER1_SELECT1_BASE_IDX = 1 # macro -mmGE2_DIST_PERFCOUNTER2_SELECT = 0x38b0 # macro -mmGE2_DIST_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmGE2_DIST_PERFCOUNTER2_SELECT1 = 0x38b1 # macro -mmGE2_DIST_PERFCOUNTER2_SELECT1_BASE_IDX = 1 # macro -mmGE2_DIST_PERFCOUNTER3_SELECT = 0x38b2 # macro -mmGE2_DIST_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmGE2_DIST_PERFCOUNTER3_SELECT1 = 0x38b3 # macro -mmGE2_DIST_PERFCOUNTER3_SELECT1_BASE_IDX = 1 # macro -mmGE2_SE_PERFCOUNTER0_SELECT = 0x38b4 # macro -mmGE2_SE_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmGE2_SE_PERFCOUNTER0_SELECT1 = 0x38b5 # macro -mmGE2_SE_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmGE2_SE_PERFCOUNTER1_SELECT = 0x38b6 # macro -mmGE2_SE_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmGE2_SE_PERFCOUNTER1_SELECT1 = 0x38b7 # macro -mmGE2_SE_PERFCOUNTER1_SELECT1_BASE_IDX = 1 # macro -mmGE2_SE_PERFCOUNTER2_SELECT = 0x38b8 # macro -mmGE2_SE_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmGE2_SE_PERFCOUNTER2_SELECT1 = 0x38b9 # macro -mmGE2_SE_PERFCOUNTER2_SELECT1_BASE_IDX = 1 # macro -mmGE2_SE_PERFCOUNTER3_SELECT = 0x38ba # macro -mmGE2_SE_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmGE2_SE_PERFCOUNTER3_SELECT1 = 0x38bb # macro -mmGE2_SE_PERFCOUNTER3_SELECT1_BASE_IDX = 1 # macro -mmPA_SU_PERFCOUNTER0_SELECT = 0x3900 # macro -mmPA_SU_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmPA_SU_PERFCOUNTER0_SELECT1 = 0x3901 # macro -mmPA_SU_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmPA_SU_PERFCOUNTER1_SELECT = 0x3902 # macro -mmPA_SU_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmPA_SU_PERFCOUNTER1_SELECT1 = 0x3903 # macro -mmPA_SU_PERFCOUNTER1_SELECT1_BASE_IDX = 1 # macro -mmPA_SU_PERFCOUNTER2_SELECT = 0x3904 # macro -mmPA_SU_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmPA_SU_PERFCOUNTER2_SELECT1 = 0x3905 # macro -mmPA_SU_PERFCOUNTER2_SELECT1_BASE_IDX = 1 # macro -mmPA_SU_PERFCOUNTER3_SELECT = 0x3906 # macro -mmPA_SU_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmPA_SU_PERFCOUNTER3_SELECT1 = 0x3907 # macro -mmPA_SU_PERFCOUNTER3_SELECT1_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER0_SELECT = 0x3940 # macro -mmPA_SC_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER0_SELECT1 = 0x3941 # macro -mmPA_SC_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER1_SELECT = 0x3942 # macro -mmPA_SC_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER2_SELECT = 0x3943 # macro -mmPA_SC_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER3_SELECT = 0x3944 # macro -mmPA_SC_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER4_SELECT = 0x3945 # macro -mmPA_SC_PERFCOUNTER4_SELECT_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER5_SELECT = 0x3946 # macro -mmPA_SC_PERFCOUNTER5_SELECT_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER6_SELECT = 0x3947 # macro -mmPA_SC_PERFCOUNTER6_SELECT_BASE_IDX = 1 # macro -mmPA_SC_PERFCOUNTER7_SELECT = 0x3948 # macro -mmPA_SC_PERFCOUNTER7_SELECT_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER0_SELECT = 0x3980 # macro -mmSPI_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER1_SELECT = 0x3981 # macro -mmSPI_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER2_SELECT = 0x3982 # macro -mmSPI_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER3_SELECT = 0x3983 # macro -mmSPI_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER0_SELECT1 = 0x3984 # macro -mmSPI_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER1_SELECT1 = 0x3985 # macro -mmSPI_PERFCOUNTER1_SELECT1_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER2_SELECT1 = 0x3986 # macro -mmSPI_PERFCOUNTER2_SELECT1_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER3_SELECT1 = 0x3987 # macro -mmSPI_PERFCOUNTER3_SELECT1_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER4_SELECT = 0x3988 # macro -mmSPI_PERFCOUNTER4_SELECT_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER5_SELECT = 0x3989 # macro -mmSPI_PERFCOUNTER5_SELECT_BASE_IDX = 1 # macro -mmSPI_PERFCOUNTER_BINS = 0x398a # macro -mmSPI_PERFCOUNTER_BINS_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER0_SELECT = 0x39c0 # macro -mmSQ_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER1_SELECT = 0x39c1 # macro -mmSQ_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER2_SELECT = 0x39c2 # macro -mmSQ_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER3_SELECT = 0x39c3 # macro -mmSQ_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER4_SELECT = 0x39c4 # macro -mmSQ_PERFCOUNTER4_SELECT_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER5_SELECT = 0x39c5 # macro -mmSQ_PERFCOUNTER5_SELECT_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER6_SELECT = 0x39c6 # macro -mmSQ_PERFCOUNTER6_SELECT_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER7_SELECT = 0x39c7 # macro -mmSQ_PERFCOUNTER7_SELECT_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER8_SELECT = 0x39c8 # macro -mmSQ_PERFCOUNTER8_SELECT_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER9_SELECT = 0x39c9 # macro -mmSQ_PERFCOUNTER9_SELECT_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER10_SELECT = 0x39ca # macro -mmSQ_PERFCOUNTER10_SELECT_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER11_SELECT = 0x39cb # macro -mmSQ_PERFCOUNTER11_SELECT_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER12_SELECT = 0x39cc # macro -mmSQ_PERFCOUNTER12_SELECT_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER13_SELECT = 0x39cd # macro -mmSQ_PERFCOUNTER13_SELECT_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER14_SELECT = 0x39ce # macro -mmSQ_PERFCOUNTER14_SELECT_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER15_SELECT = 0x39cf # macro -mmSQ_PERFCOUNTER15_SELECT_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER_CTRL = 0x39e0 # macro -mmSQ_PERFCOUNTER_CTRL_BASE_IDX = 1 # macro -mmSQ_PERFCOUNTER_CTRL2 = 0x39e2 # macro -mmSQ_PERFCOUNTER_CTRL2_BASE_IDX = 1 # macro -mmGCEA_PERFCOUNTER2_SELECT = 0x3a00 # macro -mmGCEA_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmGCEA_PERFCOUNTER2_SELECT1 = 0x3a01 # macro -mmGCEA_PERFCOUNTER2_SELECT1_BASE_IDX = 1 # macro -mmGCEA_PERFCOUNTER2_MODE = 0x3a02 # macro -mmGCEA_PERFCOUNTER2_MODE_BASE_IDX = 1 # macro -mmGCEA_PERFCOUNTER0_CFG = 0x3a03 # macro -mmGCEA_PERFCOUNTER0_CFG_BASE_IDX = 1 # macro -mmGCEA_PERFCOUNTER1_CFG = 0x3a04 # macro -mmGCEA_PERFCOUNTER1_CFG_BASE_IDX = 1 # macro -mmGCEA_PERFCOUNTER_RSLT_CNTL = 0x3a05 # macro -mmGCEA_PERFCOUNTER_RSLT_CNTL_BASE_IDX = 1 # macro -mmSX_PERFCOUNTER0_SELECT = 0x3a40 # macro -mmSX_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmSX_PERFCOUNTER1_SELECT = 0x3a41 # macro -mmSX_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmSX_PERFCOUNTER2_SELECT = 0x3a42 # macro -mmSX_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmSX_PERFCOUNTER3_SELECT = 0x3a43 # macro -mmSX_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmSX_PERFCOUNTER0_SELECT1 = 0x3a44 # macro -mmSX_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmSX_PERFCOUNTER1_SELECT1 = 0x3a45 # macro -mmSX_PERFCOUNTER1_SELECT1_BASE_IDX = 1 # macro -mmGDS_PERFCOUNTER0_SELECT = 0x3a80 # macro -mmGDS_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmGDS_PERFCOUNTER1_SELECT = 0x3a81 # macro -mmGDS_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmGDS_PERFCOUNTER2_SELECT = 0x3a82 # macro -mmGDS_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmGDS_PERFCOUNTER3_SELECT = 0x3a83 # macro -mmGDS_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmGDS_PERFCOUNTER0_SELECT1 = 0x3a84 # macro -mmGDS_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmGDS_PERFCOUNTER1_SELECT1 = 0x3a85 # macro -mmGDS_PERFCOUNTER1_SELECT1_BASE_IDX = 1 # macro -mmGDS_PERFCOUNTER2_SELECT1 = 0x3a86 # macro -mmGDS_PERFCOUNTER2_SELECT1_BASE_IDX = 1 # macro -mmGDS_PERFCOUNTER3_SELECT1 = 0x3a87 # macro -mmGDS_PERFCOUNTER3_SELECT1_BASE_IDX = 1 # macro -mmTA_PERFCOUNTER0_SELECT = 0x3ac0 # macro -mmTA_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmTA_PERFCOUNTER0_SELECT1 = 0x3ac1 # macro -mmTA_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmTA_PERFCOUNTER1_SELECT = 0x3ac2 # macro -mmTA_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmTD_PERFCOUNTER0_SELECT = 0x3b00 # macro -mmTD_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmTD_PERFCOUNTER0_SELECT1 = 0x3b01 # macro -mmTD_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmTD_PERFCOUNTER1_SELECT = 0x3b02 # macro -mmTD_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmTCP_PERFCOUNTER0_SELECT = 0x3b40 # macro -mmTCP_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmTCP_PERFCOUNTER0_SELECT1 = 0x3b41 # macro -mmTCP_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmTCP_PERFCOUNTER1_SELECT = 0x3b42 # macro -mmTCP_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmTCP_PERFCOUNTER1_SELECT1 = 0x3b43 # macro -mmTCP_PERFCOUNTER1_SELECT1_BASE_IDX = 1 # macro -mmTCP_PERFCOUNTER2_SELECT = 0x3b44 # macro -mmTCP_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmTCP_PERFCOUNTER3_SELECT = 0x3b45 # macro -mmTCP_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmGL2C_PERFCOUNTER0_SELECT = 0x3b80 # macro -mmGL2C_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmGL2C_PERFCOUNTER0_SELECT1 = 0x3b81 # macro -mmGL2C_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmGL2C_PERFCOUNTER1_SELECT = 0x3b82 # macro -mmGL2C_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmGL2C_PERFCOUNTER1_SELECT1 = 0x3b83 # macro -mmGL2C_PERFCOUNTER1_SELECT1_BASE_IDX = 1 # macro -mmGL2C_PERFCOUNTER2_SELECT = 0x3b84 # macro -mmGL2C_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmGL2C_PERFCOUNTER3_SELECT = 0x3b85 # macro -mmGL2C_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmGL2A_PERFCOUNTER0_SELECT = 0x3b90 # macro -mmGL2A_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmGL2A_PERFCOUNTER0_SELECT1 = 0x3b91 # macro -mmGL2A_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmGL2A_PERFCOUNTER1_SELECT = 0x3b92 # macro -mmGL2A_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmGL2A_PERFCOUNTER1_SELECT1 = 0x3b93 # macro -mmGL2A_PERFCOUNTER1_SELECT1_BASE_IDX = 1 # macro -mmGL2A_PERFCOUNTER2_SELECT = 0x3b94 # macro -mmGL2A_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmGL2A_PERFCOUNTER3_SELECT = 0x3b95 # macro -mmGL2A_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmGL1C_PERFCOUNTER0_SELECT = 0x3ba0 # macro -mmGL1C_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmGL1C_PERFCOUNTER0_SELECT1 = 0x3ba1 # macro -mmGL1C_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmGL1C_PERFCOUNTER1_SELECT = 0x3ba2 # macro -mmGL1C_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmGL1C_PERFCOUNTER2_SELECT = 0x3ba3 # macro -mmGL1C_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmGL1C_PERFCOUNTER3_SELECT = 0x3ba4 # macro -mmGL1C_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmCHC_PERFCOUNTER0_SELECT = 0x3bc0 # macro -mmCHC_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmCHC_PERFCOUNTER0_SELECT1 = 0x3bc1 # macro -mmCHC_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmCHC_PERFCOUNTER1_SELECT = 0x3bc2 # macro -mmCHC_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmCHC_PERFCOUNTER2_SELECT = 0x3bc3 # macro -mmCHC_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmCHC_PERFCOUNTER3_SELECT = 0x3bc4 # macro -mmCHC_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmCHCG_PERFCOUNTER0_SELECT = 0x3bc6 # macro -mmCHCG_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmCHCG_PERFCOUNTER0_SELECT1 = 0x3bc7 # macro -mmCHCG_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmCHCG_PERFCOUNTER1_SELECT = 0x3bc8 # macro -mmCHCG_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmCHCG_PERFCOUNTER2_SELECT = 0x3bc9 # macro -mmCHCG_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmCHCG_PERFCOUNTER3_SELECT = 0x3bca # macro -mmCHCG_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmCB_PERFCOUNTER_FILTER = 0x3c00 # macro -mmCB_PERFCOUNTER_FILTER_BASE_IDX = 1 # macro -mmCB_PERFCOUNTER0_SELECT = 0x3c01 # macro -mmCB_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmCB_PERFCOUNTER0_SELECT1 = 0x3c02 # macro -mmCB_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmCB_PERFCOUNTER1_SELECT = 0x3c03 # macro -mmCB_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmCB_PERFCOUNTER2_SELECT = 0x3c04 # macro -mmCB_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmCB_PERFCOUNTER3_SELECT = 0x3c05 # macro -mmCB_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmDB_PERFCOUNTER0_SELECT = 0x3c40 # macro -mmDB_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmDB_PERFCOUNTER0_SELECT1 = 0x3c41 # macro -mmDB_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmDB_PERFCOUNTER1_SELECT = 0x3c42 # macro -mmDB_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmDB_PERFCOUNTER1_SELECT1 = 0x3c43 # macro -mmDB_PERFCOUNTER1_SELECT1_BASE_IDX = 1 # macro -mmDB_PERFCOUNTER2_SELECT = 0x3c44 # macro -mmDB_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmDB_PERFCOUNTER3_SELECT = 0x3c46 # macro -mmDB_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmRLC_SPM_PERFMON_CNTL = 0x3c80 # macro -mmRLC_SPM_PERFMON_CNTL_BASE_IDX = 1 # macro -mmRLC_SPM_PERFMON_RING_BASE_LO = 0x3c81 # macro -mmRLC_SPM_PERFMON_RING_BASE_LO_BASE_IDX = 1 # macro -mmRLC_SPM_PERFMON_RING_BASE_HI = 0x3c82 # macro -mmRLC_SPM_PERFMON_RING_BASE_HI_BASE_IDX = 1 # macro -mmRLC_SPM_PERFMON_RING_SIZE = 0x3c83 # macro -mmRLC_SPM_PERFMON_RING_SIZE_BASE_IDX = 1 # macro -mmRLC_SPM_PERFMON_SEGMENT_SIZE = 0x3c84 # macro -mmRLC_SPM_PERFMON_SEGMENT_SIZE_BASE_IDX = 1 # macro -mmRLC_SPM_RING_RDPTR = 0x3c85 # macro -mmRLC_SPM_RING_RDPTR_BASE_IDX = 1 # macro -mmRLC_SPM_SEGMENT_THRESHOLD = 0x3c86 # macro -mmRLC_SPM_SEGMENT_THRESHOLD_BASE_IDX = 1 # macro -mmRLC_SPM_SE_MUXSEL_ADDR = 0x3c87 # macro -mmRLC_SPM_SE_MUXSEL_ADDR_BASE_IDX = 1 # macro -mmRLC_SPM_SE_MUXSEL_DATA = 0x3c88 # macro -mmRLC_SPM_SE_MUXSEL_DATA_BASE_IDX = 1 # macro -mmRLC_SPM_GLOBAL_MUXSEL_ADDR = 0x3c89 # macro -mmRLC_SPM_GLOBAL_MUXSEL_ADDR_BASE_IDX = 1 # macro -mmRLC_SPM_GLOBAL_MUXSEL_DATA = 0x3c8a # macro -mmRLC_SPM_GLOBAL_MUXSEL_DATA_BASE_IDX = 1 # macro -mmRLC_SPM_DESER_START_SKEW = 0x3c8b # macro -mmRLC_SPM_DESER_START_SKEW_BASE_IDX = 1 # macro -mmRLC_SPM_GLOBALS_SAMPLE_SKEW = 0x3c8c # macro -mmRLC_SPM_GLOBALS_SAMPLE_SKEW_BASE_IDX = 1 # macro -mmRLC_SPM_GLOBALS_MUXSEL_SKEW = 0x3c8d # macro -mmRLC_SPM_GLOBALS_MUXSEL_SKEW_BASE_IDX = 1 # macro -mmRLC_SPM_SE_SAMPLE_SKEW = 0x3c8e # macro -mmRLC_SPM_SE_SAMPLE_SKEW_BASE_IDX = 1 # macro -mmRLC_SPM_SE_MUXSEL_SKEW = 0x3c8f # macro -mmRLC_SPM_SE_MUXSEL_SKEW_BASE_IDX = 1 # macro -mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR = 0x3c90 # macro -mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR_BASE_IDX = 1 # macro -mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA = 0x3c91 # macro -mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA_BASE_IDX = 1 # macro -mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR = 0x3c92 # macro -mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR_BASE_IDX = 1 # macro -mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA = 0x3c93 # macro -mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA_BASE_IDX = 1 # macro -mmRLC_SPM_RING_WRPTR = 0x3c94 # macro -mmRLC_SPM_RING_WRPTR_BASE_IDX = 1 # macro -mmRLC_SPM_ACCUM_DATARAM_ADDR = 0x3c95 # macro -mmRLC_SPM_ACCUM_DATARAM_ADDR_BASE_IDX = 1 # macro -mmRLC_SPM_ACCUM_DATARAM_DATA = 0x3c96 # macro -mmRLC_SPM_ACCUM_DATARAM_DATA_BASE_IDX = 1 # macro -mmRLC_SPM_ACCUM_CTRLRAM_ADDR = 0x3c97 # macro -mmRLC_SPM_ACCUM_CTRLRAM_ADDR_BASE_IDX = 1 # macro -mmRLC_SPM_ACCUM_CTRLRAM_DATA = 0x3c98 # macro -mmRLC_SPM_ACCUM_CTRLRAM_DATA_BASE_IDX = 1 # macro -mmRLC_SPM_ACCUM_STATUS = 0x3c99 # macro -mmRLC_SPM_ACCUM_STATUS_BASE_IDX = 1 # macro -mmRLC_SPM_ACCUM_CTRL = 0x3c9a # macro -mmRLC_SPM_ACCUM_CTRL_BASE_IDX = 1 # macro -mmRLC_SPM_ACCUM_MODE = 0x3c9b # macro -mmRLC_SPM_ACCUM_MODE_BASE_IDX = 1 # macro -mmRLC_SPM_ACCUM_THRESHOLD = 0x3c9c # macro -mmRLC_SPM_ACCUM_THRESHOLD_BASE_IDX = 1 # macro -mmRLC_SPM_ACCUM_SAMPLES_REQUESTED = 0x3c9d # macro -mmRLC_SPM_ACCUM_SAMPLES_REQUESTED_BASE_IDX = 1 # macro -mmRLC_SPM_ACCUM_DATARAM_WRCOUNT = 0x3c9e # macro -mmRLC_SPM_ACCUM_DATARAM_WRCOUNT_BASE_IDX = 1 # macro -mmRLC_SPM_PERFMON_SE3TO0_SEGMENT_SIZE = 0x3c9f # macro -mmRLC_SPM_PERFMON_SE3TO0_SEGMENT_SIZE_BASE_IDX = 1 # macro -mmRLC_SPM_PERFMON_GLB_SEGMENT_SIZE = 0x3ca0 # macro -mmRLC_SPM_PERFMON_GLB_SEGMENT_SIZE_BASE_IDX = 1 # macro -mmRLC_SPM_VIRT_CTRL = 0x3ca1 # macro -mmRLC_SPM_VIRT_CTRL_BASE_IDX = 1 # macro -mmRLC_SPM_PERFMON_SWA_SEGMENT_SIZE = 0x3ca2 # macro -mmRLC_SPM_PERFMON_SWA_SEGMENT_SIZE_BASE_IDX = 1 # macro -mmRLC_SPM_VIRT_STATUS = 0x3ca3 # macro -mmRLC_SPM_VIRT_STATUS_BASE_IDX = 1 # macro -mmRLC_SPM_GFXCLOCK_HIGHCOUNT = 0x3ca4 # macro -mmRLC_SPM_GFXCLOCK_HIGHCOUNT_BASE_IDX = 1 # macro -mmRLC_SPM_GFXCLOCK_LOWCOUNT = 0x3ca5 # macro -mmRLC_SPM_GFXCLOCK_LOWCOUNT_BASE_IDX = 1 # macro -mmRLC_SPM_PERFMON_SWA_SE3TO0_SEGMENT_SIZE = 0x3ca6 # macro -mmRLC_SPM_PERFMON_SWA_SE3TO0_SEGMENT_SIZE_BASE_IDX = 1 # macro -mmRLC_SPM_GLOBAL_MUXSEL_ADDR_OFFSET = 0x3ca7 # macro -mmRLC_SPM_GLOBAL_MUXSEL_ADDR_OFFSET_BASE_IDX = 1 # macro -mmRLC_SPM_SE_MUXSEL_ADDR_OFFSET = 0x3ca8 # macro -mmRLC_SPM_SE_MUXSEL_ADDR_OFFSET_BASE_IDX = 1 # macro -mmRLC_SPM_ACCUM_SWA_DATARAM_ADDR = 0x3ca9 # macro -mmRLC_SPM_ACCUM_SWA_DATARAM_ADDR_BASE_IDX = 1 # macro -mmRLC_SPM_ACCUM_SWA_DATARAM_DATA = 0x3caa # macro -mmRLC_SPM_ACCUM_SWA_DATARAM_DATA_BASE_IDX = 1 # macro -mmRLC_SPM_ACCUM_CTRLRAM_ADDR_OFFSET = 0x3cab # macro -mmRLC_SPM_ACCUM_CTRLRAM_ADDR_OFFSET_BASE_IDX = 1 # macro -mmRLC_SPM_PERFMON_SWA_GLB_SEGMENT_SIZE = 0x3cac # macro -mmRLC_SPM_PERFMON_SWA_GLB_SEGMENT_SIZE_BASE_IDX = 1 # macro -mmRLC_SPM_ACCUM_DATARAM_32BITCNTRS_REGIONS = 0x3cad # macro -mmRLC_SPM_ACCUM_DATARAM_32BITCNTRS_REGIONS_BASE_IDX = 1 # macro -mmRLC_PERFMON_CNTL = 0x3cc0 # macro -mmRLC_PERFMON_CNTL_BASE_IDX = 1 # macro -mmRLC_PERFCOUNTER0_SELECT = 0x3cc1 # macro -mmRLC_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmRLC_PERFCOUNTER1_SELECT = 0x3cc2 # macro -mmRLC_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_PERF_CNT_CNTL = 0x3cc3 # macro -mmRLC_GPU_IOV_PERF_CNT_CNTL_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_PERF_CNT_WR_ADDR = 0x3cc4 # macro -mmRLC_GPU_IOV_PERF_CNT_WR_ADDR_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_PERF_CNT_WR_DATA = 0x3cc5 # macro -mmRLC_GPU_IOV_PERF_CNT_WR_DATA_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_PERF_CNT_RD_ADDR = 0x3cc6 # macro -mmRLC_GPU_IOV_PERF_CNT_RD_ADDR_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_PERF_CNT_RD_DATA = 0x3cc7 # macro -mmRLC_GPU_IOV_PERF_CNT_RD_DATA_BASE_IDX = 1 # macro -mmRLC_PERFMON_CLK_CNTL = 0x3ce4 # macro -mmRLC_PERFMON_CLK_CNTL_BASE_IDX = 1 # macro -mmRMI_PERFCOUNTER0_SELECT = 0x3d00 # macro -mmRMI_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmRMI_PERFCOUNTER0_SELECT1 = 0x3d01 # macro -mmRMI_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmRMI_PERFCOUNTER1_SELECT = 0x3d02 # macro -mmRMI_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmRMI_PERFCOUNTER2_SELECT = 0x3d03 # macro -mmRMI_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmRMI_PERFCOUNTER2_SELECT1 = 0x3d04 # macro -mmRMI_PERFCOUNTER2_SELECT1_BASE_IDX = 1 # macro -mmRMI_PERFCOUNTER3_SELECT = 0x3d05 # macro -mmRMI_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmRMI_PERF_COUNTER_CNTL = 0x3d06 # macro -mmRMI_PERF_COUNTER_CNTL_BASE_IDX = 1 # macro -mmGCR_PERFCOUNTER0_SELECT = 0x3d60 # macro -mmGCR_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmGCR_PERFCOUNTER0_SELECT1 = 0x3d61 # macro -mmGCR_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmGCR_PERFCOUNTER1_SELECT = 0x3d62 # macro -mmGCR_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmUTCL1_PERFCOUNTER0_SELECT = 0x3d63 # macro -mmUTCL1_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmUTCL1_PERFCOUNTER1_SELECT = 0x3d64 # macro -mmUTCL1_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER0_SELECT = 0x3d80 # macro -mmPA_PH_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER0_SELECT1 = 0x3d81 # macro -mmPA_PH_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER1_SELECT = 0x3d82 # macro -mmPA_PH_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER2_SELECT = 0x3d83 # macro -mmPA_PH_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER3_SELECT = 0x3d84 # macro -mmPA_PH_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER4_SELECT = 0x3d85 # macro -mmPA_PH_PERFCOUNTER4_SELECT_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER5_SELECT = 0x3d86 # macro -mmPA_PH_PERFCOUNTER5_SELECT_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER6_SELECT = 0x3d87 # macro -mmPA_PH_PERFCOUNTER6_SELECT_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER7_SELECT = 0x3d88 # macro -mmPA_PH_PERFCOUNTER7_SELECT_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER1_SELECT1 = 0x3d90 # macro -mmPA_PH_PERFCOUNTER1_SELECT1_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER2_SELECT1 = 0x3d91 # macro -mmPA_PH_PERFCOUNTER2_SELECT1_BASE_IDX = 1 # macro -mmPA_PH_PERFCOUNTER3_SELECT1 = 0x3d92 # macro -mmPA_PH_PERFCOUNTER3_SELECT1_BASE_IDX = 1 # macro -mmGL1A_PERFCOUNTER0_SELECT = 0x3dc0 # macro -mmGL1A_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmGL1A_PERFCOUNTER0_SELECT1 = 0x3dc1 # macro -mmGL1A_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmGL1A_PERFCOUNTER1_SELECT = 0x3dc2 # macro -mmGL1A_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmGL1A_PERFCOUNTER2_SELECT = 0x3dc3 # macro -mmGL1A_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmGL1A_PERFCOUNTER3_SELECT = 0x3dc4 # macro -mmGL1A_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmCHA_PERFCOUNTER0_SELECT = 0x3de0 # macro -mmCHA_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmCHA_PERFCOUNTER0_SELECT1 = 0x3de1 # macro -mmCHA_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmCHA_PERFCOUNTER1_SELECT = 0x3de2 # macro -mmCHA_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmCHA_PERFCOUNTER2_SELECT = 0x3de3 # macro -mmCHA_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmCHA_PERFCOUNTER3_SELECT = 0x3de4 # macro -mmCHA_PERFCOUNTER3_SELECT_BASE_IDX = 1 # macro -mmGUS_PERFCOUNTER2_SELECT = 0x3e00 # macro -mmGUS_PERFCOUNTER2_SELECT_BASE_IDX = 1 # macro -mmGUS_PERFCOUNTER2_SELECT1 = 0x3e01 # macro -mmGUS_PERFCOUNTER2_SELECT1_BASE_IDX = 1 # macro -mmGUS_PERFCOUNTER2_MODE = 0x3e02 # macro -mmGUS_PERFCOUNTER2_MODE_BASE_IDX = 1 # macro -mmGUS_PERFCOUNTER0_CFG = 0x3e03 # macro -mmGUS_PERFCOUNTER0_CFG_BASE_IDX = 1 # macro -mmGUS_PERFCOUNTER1_CFG = 0x3e04 # macro -mmGUS_PERFCOUNTER1_CFG_BASE_IDX = 1 # macro -mmGUS_PERFCOUNTER_RSLT_CNTL = 0x3e05 # macro -mmGUS_PERFCOUNTER_RSLT_CNTL_BASE_IDX = 1 # macro -mmGCMC_VM_L2_PERFCOUNTER0_CFG = 0x3d2c # macro -mmGCMC_VM_L2_PERFCOUNTER0_CFG_BASE_IDX = 1 # macro -mmGCMC_VM_L2_PERFCOUNTER1_CFG = 0x3d2d # macro -mmGCMC_VM_L2_PERFCOUNTER1_CFG_BASE_IDX = 1 # macro -mmGCMC_VM_L2_PERFCOUNTER2_CFG = 0x3d2e # macro -mmGCMC_VM_L2_PERFCOUNTER2_CFG_BASE_IDX = 1 # macro -mmGCMC_VM_L2_PERFCOUNTER3_CFG = 0x3d2f # macro -mmGCMC_VM_L2_PERFCOUNTER3_CFG_BASE_IDX = 1 # macro -mmGCMC_VM_L2_PERFCOUNTER4_CFG = 0x3d30 # macro -mmGCMC_VM_L2_PERFCOUNTER4_CFG_BASE_IDX = 1 # macro -mmGCMC_VM_L2_PERFCOUNTER5_CFG = 0x3d31 # macro -mmGCMC_VM_L2_PERFCOUNTER5_CFG_BASE_IDX = 1 # macro -mmGCMC_VM_L2_PERFCOUNTER6_CFG = 0x3d32 # macro -mmGCMC_VM_L2_PERFCOUNTER6_CFG_BASE_IDX = 1 # macro -mmGCMC_VM_L2_PERFCOUNTER7_CFG = 0x3d33 # macro -mmGCMC_VM_L2_PERFCOUNTER7_CFG_BASE_IDX = 1 # macro -mmGCMC_VM_L2_PERFCOUNTER_RSLT_CNTL = 0x3d34 # macro -mmGCMC_VM_L2_PERFCOUNTER_RSLT_CNTL_BASE_IDX = 1 # macro -mmGCUTCL2_PERFCOUNTER0_CFG = 0x3d35 # macro -mmGCUTCL2_PERFCOUNTER0_CFG_BASE_IDX = 1 # macro -mmGCUTCL2_PERFCOUNTER1_CFG = 0x3d36 # macro -mmGCUTCL2_PERFCOUNTER1_CFG_BASE_IDX = 1 # macro -mmGCUTCL2_PERFCOUNTER2_CFG = 0x3d37 # macro -mmGCUTCL2_PERFCOUNTER2_CFG_BASE_IDX = 1 # macro -mmGCUTCL2_PERFCOUNTER3_CFG = 0x3d38 # macro -mmGCUTCL2_PERFCOUNTER3_CFG_BASE_IDX = 1 # macro -mmGCUTCL2_PERFCOUNTER_RSLT_CNTL = 0x3d39 # macro -mmGCUTCL2_PERFCOUNTER_RSLT_CNTL_BASE_IDX = 1 # macro -mmGCVML2_PERFCOUNTER2_0_SELECT = 0x3d3c # macro -mmGCVML2_PERFCOUNTER2_0_SELECT_BASE_IDX = 1 # macro -mmGCVML2_PERFCOUNTER2_1_SELECT = 0x3d3d # macro -mmGCVML2_PERFCOUNTER2_1_SELECT_BASE_IDX = 1 # macro -mmGCVML2_PERFCOUNTER2_0_SELECT1 = 0x3d3e # macro -mmGCVML2_PERFCOUNTER2_0_SELECT1_BASE_IDX = 1 # macro -mmGCVML2_PERFCOUNTER2_1_SELECT1 = 0x3d3f # macro -mmGCVML2_PERFCOUNTER2_1_SELECT1_BASE_IDX = 1 # macro -mmGCVML2_PERFCOUNTER2_0_MODE = 0x3d40 # macro -mmGCVML2_PERFCOUNTER2_0_MODE_BASE_IDX = 1 # macro -mmGCVML2_PERFCOUNTER2_1_MODE = 0x3d41 # macro -mmGCVML2_PERFCOUNTER2_1_MODE_BASE_IDX = 1 # macro -mmSDMA0_PERFCNT_PERFCOUNTER0_CFG = 0x3e20 # macro -mmSDMA0_PERFCNT_PERFCOUNTER0_CFG_BASE_IDX = 1 # macro -mmSDMA0_PERFCNT_PERFCOUNTER1_CFG = 0x3e21 # macro -mmSDMA0_PERFCNT_PERFCOUNTER1_CFG_BASE_IDX = 1 # macro -mmSDMA0_PERFCNT_PERFCOUNTER_RSLT_CNTL = 0x3e22 # macro -mmSDMA0_PERFCNT_PERFCOUNTER_RSLT_CNTL_BASE_IDX = 1 # macro -mmSDMA0_PERFCNT_MISC_CNTL = 0x3e23 # macro -mmSDMA0_PERFCNT_MISC_CNTL_BASE_IDX = 1 # macro -mmSDMA0_PERFCOUNTER0_SELECT = 0x3e24 # macro -mmSDMA0_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmSDMA0_PERFCOUNTER0_SELECT1 = 0x3e25 # macro -mmSDMA0_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmSDMA0_PERFCOUNTER1_SELECT = 0x3e26 # macro -mmSDMA0_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmSDMA0_PERFCOUNTER1_SELECT1 = 0x3e27 # macro -mmSDMA0_PERFCOUNTER1_SELECT1_BASE_IDX = 1 # macro -mmSDMA1_PERFCNT_PERFCOUNTER0_CFG = 0x3e2c # macro -mmSDMA1_PERFCNT_PERFCOUNTER0_CFG_BASE_IDX = 1 # macro -mmSDMA1_PERFCNT_PERFCOUNTER1_CFG = 0x3e2d # macro -mmSDMA1_PERFCNT_PERFCOUNTER1_CFG_BASE_IDX = 1 # macro -mmSDMA1_PERFCNT_PERFCOUNTER_RSLT_CNTL = 0x3e2e # macro -mmSDMA1_PERFCNT_PERFCOUNTER_RSLT_CNTL_BASE_IDX = 1 # macro -mmSDMA1_PERFCNT_MISC_CNTL = 0x3e2f # macro -mmSDMA1_PERFCNT_MISC_CNTL_BASE_IDX = 1 # macro -mmSDMA1_PERFCOUNTER0_SELECT = 0x3e30 # macro -mmSDMA1_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmSDMA1_PERFCOUNTER0_SELECT1 = 0x3e31 # macro -mmSDMA1_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmSDMA1_PERFCOUNTER1_SELECT = 0x3e32 # macro -mmSDMA1_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmSDMA1_PERFCOUNTER1_SELECT1 = 0x3e33 # macro -mmSDMA1_PERFCOUNTER1_SELECT1_BASE_IDX = 1 # macro -mmSDMA2_PERFCNT_PERFCOUNTER0_CFG = 0x3e38 # macro -mmSDMA2_PERFCNT_PERFCOUNTER0_CFG_BASE_IDX = 1 # macro -mmSDMA2_PERFCNT_PERFCOUNTER1_CFG = 0x3e39 # macro -mmSDMA2_PERFCNT_PERFCOUNTER1_CFG_BASE_IDX = 1 # macro -mmSDMA2_PERFCNT_PERFCOUNTER_RSLT_CNTL = 0x3e3a # macro -mmSDMA2_PERFCNT_PERFCOUNTER_RSLT_CNTL_BASE_IDX = 1 # macro -mmSDMA2_PERFCNT_MISC_CNTL = 0x3e3b # macro -mmSDMA2_PERFCNT_MISC_CNTL_BASE_IDX = 1 # macro -mmSDMA2_PERFCOUNTER0_SELECT = 0x3e3c # macro -mmSDMA2_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmSDMA2_PERFCOUNTER0_SELECT1 = 0x3e3d # macro -mmSDMA2_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmSDMA2_PERFCOUNTER1_SELECT = 0x3e3e # macro -mmSDMA2_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmSDMA2_PERFCOUNTER1_SELECT1 = 0x3e3f # macro -mmSDMA2_PERFCOUNTER1_SELECT1_BASE_IDX = 1 # macro -mmSDMA3_PERFCNT_PERFCOUNTER0_CFG = 0x3e44 # macro -mmSDMA3_PERFCNT_PERFCOUNTER0_CFG_BASE_IDX = 1 # macro -mmSDMA3_PERFCNT_PERFCOUNTER1_CFG = 0x3e45 # macro -mmSDMA3_PERFCNT_PERFCOUNTER1_CFG_BASE_IDX = 1 # macro -mmSDMA3_PERFCNT_PERFCOUNTER_RSLT_CNTL = 0x3e46 # macro -mmSDMA3_PERFCNT_PERFCOUNTER_RSLT_CNTL_BASE_IDX = 1 # macro -mmSDMA3_PERFCNT_MISC_CNTL = 0x3e47 # macro -mmSDMA3_PERFCNT_MISC_CNTL_BASE_IDX = 1 # macro -mmSDMA3_PERFCOUNTER0_SELECT = 0x3e48 # macro -mmSDMA3_PERFCOUNTER0_SELECT_BASE_IDX = 1 # macro -mmSDMA3_PERFCOUNTER0_SELECT1 = 0x3e49 # macro -mmSDMA3_PERFCOUNTER0_SELECT1_BASE_IDX = 1 # macro -mmSDMA3_PERFCOUNTER1_SELECT = 0x3e4a # macro -mmSDMA3_PERFCOUNTER1_SELECT_BASE_IDX = 1 # macro -mmSDMA3_PERFCOUNTER1_SELECT1 = 0x3e4b # macro -mmSDMA3_PERFCOUNTER1_SELECT1_BASE_IDX = 1 # macro -mmGRTAVFS_RTAVFS_REG_ADDR = 0x4b00 # macro -mmGRTAVFS_RTAVFS_REG_ADDR_BASE_IDX = 1 # macro -mmRTAVFS_RTAVFS_REG_ADDR = 0x4b00 # macro -mmRTAVFS_RTAVFS_REG_ADDR_BASE_IDX = 1 # macro -mmGRTAVFS_RTAVFS_WR_DATA = 0x4b01 # macro -mmGRTAVFS_RTAVFS_WR_DATA_BASE_IDX = 1 # macro -mmRTAVFS_RTAVFS_WR_DATA = 0x4b01 # macro -mmRTAVFS_RTAVFS_WR_DATA_BASE_IDX = 1 # macro -mmGRTAVFS_GENERAL_0 = 0x4b02 # macro -mmGRTAVFS_GENERAL_0_BASE_IDX = 1 # macro -mmGRTAVFS_RTAVFS_RD_DATA = 0x4b03 # macro -mmGRTAVFS_RTAVFS_RD_DATA_BASE_IDX = 1 # macro -mmGRTAVFS_RTAVFS_REG_CTRL = 0x4b04 # macro -mmGRTAVFS_RTAVFS_REG_CTRL_BASE_IDX = 1 # macro -mmGRTAVFS_RTAVFS_REG_STATUS = 0x4b05 # macro -mmGRTAVFS_RTAVFS_REG_STATUS_BASE_IDX = 1 # macro -mmGRTAVFS_TARG_FREQ = 0x4b06 # macro -mmGRTAVFS_TARG_FREQ_BASE_IDX = 1 # macro -mmGRTAVFS_TARG_VOLT = 0x4b07 # macro -mmGRTAVFS_TARG_VOLT_BASE_IDX = 1 # macro -mmGRTAVFS_SOFT_RESET = 0x4b0f # macro -mmGRTAVFS_SOFT_RESET_BASE_IDX = 1 # macro -mmGRTAVFS_PSM_CNTL = 0x4b10 # macro -mmGRTAVFS_PSM_CNTL_BASE_IDX = 1 # macro -mmGRTAVFS_CLK_CNTL = 0x4b11 # macro -mmGRTAVFS_CLK_CNTL_BASE_IDX = 1 # macro -mmRLC_CNTL = 0x4c00 # macro -mmRLC_CNTL_BASE_IDX = 1 # macro -mmRLC_F32_UCODE_VERSION = 0x4c03 # macro -mmRLC_F32_UCODE_VERSION_BASE_IDX = 1 # macro -mmRLC_STAT = 0x4c04 # macro -mmRLC_STAT_BASE_IDX = 1 # macro -mmRLC_MEM_SLP_CNTL = 0x4c06 # macro -mmRLC_MEM_SLP_CNTL_BASE_IDX = 1 # macro -mmSMU_RLC_RESPONSE = 0x4c07 # macro -mmSMU_RLC_RESPONSE_BASE_IDX = 1 # macro -mmRLC_RLCV_SAFE_MODE = 0x4c08 # macro -mmRLC_RLCV_SAFE_MODE_BASE_IDX = 1 # macro -mmRLC_SMU_SAFE_MODE = 0x4c09 # macro -mmRLC_SMU_SAFE_MODE_BASE_IDX = 1 # macro -mmRLC_RLCV_COMMAND = 0x4c0a # macro -mmRLC_RLCV_COMMAND_BASE_IDX = 1 # macro -mmRLC_REFCLOCK_TIMESTAMP_LSB = 0x4c0c # macro -mmRLC_REFCLOCK_TIMESTAMP_LSB_BASE_IDX = 1 # macro -mmRLC_REFCLOCK_TIMESTAMP_MSB = 0x4c0d # macro -mmRLC_REFCLOCK_TIMESTAMP_MSB_BASE_IDX = 1 # macro -mmRLC_GPM_TIMER_INT_0 = 0x4c0e # macro -mmRLC_GPM_TIMER_INT_0_BASE_IDX = 1 # macro -mmRLC_GPM_TIMER_INT_1 = 0x4c0f # macro -mmRLC_GPM_TIMER_INT_1_BASE_IDX = 1 # macro -mmRLC_GPM_TIMER_INT_2 = 0x4c10 # macro -mmRLC_GPM_TIMER_INT_2_BASE_IDX = 1 # macro -mmRLC_GPM_TIMER_CTRL = 0x4c11 # macro -mmRLC_GPM_TIMER_CTRL_BASE_IDX = 1 # macro -mmRLC_LB_CNTR_MAX_1 = 0x4c12 # macro -mmRLC_LB_CNTR_MAX_1_BASE_IDX = 1 # macro -mmRLC_GPM_TIMER_STAT = 0x4c13 # macro -mmRLC_GPM_TIMER_STAT_BASE_IDX = 1 # macro -mmRLC_GPM_TIMER_INT_3 = 0x4c15 # macro -mmRLC_GPM_TIMER_INT_3_BASE_IDX = 1 # macro -mmRLC_GPM_LEGACY_INT_STAT = 0x4c16 # macro -mmRLC_GPM_LEGACY_INT_STAT_BASE_IDX = 1 # macro -mmRLC_GPM_LEGACY_INT_CLEAR = 0x4c17 # macro -mmRLC_GPM_LEGACY_INT_CLEAR_BASE_IDX = 1 # macro -mmRLC_INT_STAT = 0x4c18 # macro -mmRLC_INT_STAT_BASE_IDX = 1 # macro -mmRLC_LB_CNTL = 0x4c19 # macro -mmRLC_LB_CNTL_BASE_IDX = 1 # macro -mmRLC_MGCG_CTRL = 0x4c1a # macro -mmRLC_MGCG_CTRL_BASE_IDX = 1 # macro -mmRLC_LB_CNTR_INIT_1 = 0x4c1b # macro -mmRLC_LB_CNTR_INIT_1_BASE_IDX = 1 # macro -mmRLC_LB_CNTR_1 = 0x4c1c # macro -mmRLC_LB_CNTR_1_BASE_IDX = 1 # macro -mmRLC_JUMP_TABLE_RESTORE = 0x4c1e # macro -mmRLC_JUMP_TABLE_RESTORE_BASE_IDX = 1 # macro -mmRLC_PG_DELAY_2 = 0x4c1f # macro -mmRLC_PG_DELAY_2_BASE_IDX = 1 # macro -mmRLC_GPU_CLOCK_COUNT_LSB = 0x4c24 # macro -mmRLC_GPU_CLOCK_COUNT_LSB_BASE_IDX = 1 # macro -mmRLC_GPU_CLOCK_COUNT_MSB = 0x4c25 # macro -mmRLC_GPU_CLOCK_COUNT_MSB_BASE_IDX = 1 # macro -mmRLC_CAPTURE_GPU_CLOCK_COUNT = 0x4c26 # macro -mmRLC_CAPTURE_GPU_CLOCK_COUNT_BASE_IDX = 1 # macro -mmRLC_UCODE_CNTL = 0x4c27 # macro -mmRLC_UCODE_CNTL_BASE_IDX = 1 # macro -mmRLC_GPM_THREAD_RESET = 0x4c28 # macro -mmRLC_GPM_THREAD_RESET_BASE_IDX = 1 # macro -mmRLC_GPM_CP_DMA_COMPLETE_T0 = 0x4c29 # macro -mmRLC_GPM_CP_DMA_COMPLETE_T0_BASE_IDX = 1 # macro -mmRLC_GPM_CP_DMA_COMPLETE_T1 = 0x4c2a # macro -mmRLC_GPM_CP_DMA_COMPLETE_T1_BASE_IDX = 1 # macro -mmRLC_LB_CNTR_INIT_2 = 0x4c2b # macro -mmRLC_LB_CNTR_INIT_2_BASE_IDX = 1 # macro -mmRLC_LB_CNTR_MAX_2 = 0x4c2c # macro -mmRLC_LB_CNTR_MAX_2_BASE_IDX = 1 # macro -mmRLC_LB_CONFIG_5 = 0x4c2e # macro -mmRLC_LB_CONFIG_5_BASE_IDX = 1 # macro -mmRLC_GPM_TIMER_INT_4 = 0x4c2f # macro -mmRLC_GPM_TIMER_INT_4_BASE_IDX = 1 # macro -mmRLC_CLK_COUNT_GFXCLK_LSB = 0x4c30 # macro -mmRLC_CLK_COUNT_GFXCLK_LSB_BASE_IDX = 1 # macro -mmRLC_CLK_COUNT_GFXCLK_MSB = 0x4c31 # macro -mmRLC_CLK_COUNT_GFXCLK_MSB_BASE_IDX = 1 # macro -mmRLC_CLK_COUNT_REFCLK_LSB = 0x4c32 # macro -mmRLC_CLK_COUNT_REFCLK_LSB_BASE_IDX = 1 # macro -mmRLC_CLK_COUNT_REFCLK_MSB = 0x4c33 # macro -mmRLC_CLK_COUNT_REFCLK_MSB_BASE_IDX = 1 # macro -mmRLC_CLK_COUNT_CTRL = 0x4c34 # macro -mmRLC_CLK_COUNT_CTRL_BASE_IDX = 1 # macro -mmRLC_CLK_COUNT_STAT = 0x4c35 # macro -mmRLC_CLK_COUNT_STAT_BASE_IDX = 1 # macro -mmRLC_RLCG_DOORBELL_CNTL = 0x4c36 # macro -mmRLC_RLCG_DOORBELL_CNTL_BASE_IDX = 1 # macro -mmRLC_RLCG_DOORBELL_STAT = 0x4c37 # macro -mmRLC_RLCG_DOORBELL_STAT_BASE_IDX = 1 # macro -mmRLC_RLCG_DOORBELL_0_DATA_LO = 0x4c38 # macro -mmRLC_RLCG_DOORBELL_0_DATA_LO_BASE_IDX = 1 # macro -mmRLC_RLCG_DOORBELL_0_DATA_HI = 0x4c39 # macro -mmRLC_RLCG_DOORBELL_0_DATA_HI_BASE_IDX = 1 # macro -mmRLC_RLCG_DOORBELL_1_DATA_LO = 0x4c3a # macro -mmRLC_RLCG_DOORBELL_1_DATA_LO_BASE_IDX = 1 # macro -mmRLC_RLCG_DOORBELL_1_DATA_HI = 0x4c3b # macro -mmRLC_RLCG_DOORBELL_1_DATA_HI_BASE_IDX = 1 # macro -mmRLC_RLCG_DOORBELL_2_DATA_LO = 0x4c3c # macro -mmRLC_RLCG_DOORBELL_2_DATA_LO_BASE_IDX = 1 # macro -mmRLC_RLCG_DOORBELL_2_DATA_HI = 0x4c3d # macro -mmRLC_RLCG_DOORBELL_2_DATA_HI_BASE_IDX = 1 # macro -mmRLC_RLCG_DOORBELL_3_DATA_LO = 0x4c3e # macro -mmRLC_RLCG_DOORBELL_3_DATA_LO_BASE_IDX = 1 # macro -mmRLC_RLCG_DOORBELL_3_DATA_HI = 0x4c3f # macro -mmRLC_RLCG_DOORBELL_3_DATA_HI_BASE_IDX = 1 # macro -mmRLC_GPU_CLOCK_32_RES_SEL = 0x4c41 # macro -mmRLC_GPU_CLOCK_32_RES_SEL_BASE_IDX = 1 # macro -mmRLC_GPU_CLOCK_32 = 0x4c42 # macro -mmRLC_GPU_CLOCK_32_BASE_IDX = 1 # macro -mmRLC_PG_CNTL = 0x4c43 # macro -mmRLC_PG_CNTL_BASE_IDX = 1 # macro -mmRLC_GPM_THREAD_PRIORITY = 0x4c44 # macro -mmRLC_GPM_THREAD_PRIORITY_BASE_IDX = 1 # macro -mmRLC_GPM_THREAD_ENABLE = 0x4c45 # macro -mmRLC_GPM_THREAD_ENABLE_BASE_IDX = 1 # macro -mmRLC_RLCG_DOORBELL_RANGE = 0x4c47 # macro -mmRLC_RLCG_DOORBELL_RANGE_BASE_IDX = 1 # macro -mmRLC_CGTT_MGCG_OVERRIDE = 0x4c48 # macro -mmRLC_CGTT_MGCG_OVERRIDE_BASE_IDX = 1 # macro -mmRLC_CGCG_CGLS_CTRL = 0x4c49 # macro -mmRLC_CGCG_CGLS_CTRL_BASE_IDX = 1 # macro -mmRLC_CGCG_RAMP_CTRL = 0x4c4a # macro -mmRLC_CGCG_RAMP_CTRL_BASE_IDX = 1 # macro -mmRLC_DYN_PG_STATUS = 0x4c4b # macro -mmRLC_DYN_PG_STATUS_BASE_IDX = 1 # macro -mmRLC_DYN_PG_REQUEST = 0x4c4c # macro -mmRLC_DYN_PG_REQUEST_BASE_IDX = 1 # macro -mmRLC_PG_DELAY = 0x4c4d # macro -mmRLC_PG_DELAY_BASE_IDX = 1 # macro -mmRLC_WGP_STATUS = 0x4c4e # macro -mmRLC_WGP_STATUS_BASE_IDX = 1 # macro -mmRLC_LB_INIT_WGP_MASK = 0x4c4f # macro -mmRLC_LB_INIT_WGP_MASK_BASE_IDX = 1 # macro -mmRLC_LB_ALWAYS_ACTIVE_WGP_MASK = 0x4c50 # macro -mmRLC_LB_ALWAYS_ACTIVE_WGP_MASK_BASE_IDX = 1 # macro -mmRLC_LB_PARAMS = 0x4c51 # macro -mmRLC_LB_PARAMS_BASE_IDX = 1 # macro -mmRLC_LB_DELAY = 0x4c52 # macro -mmRLC_LB_DELAY_BASE_IDX = 1 # macro -mmRLC_PG_ALWAYS_ON_WGP_MASK = 0x4c53 # macro -mmRLC_PG_ALWAYS_ON_WGP_MASK_BASE_IDX = 1 # macro -mmRLC_MAX_PG_WGP = 0x4c54 # macro -mmRLC_MAX_PG_WGP_BASE_IDX = 1 # macro -mmRLC_AUTO_PG_CTRL = 0x4c55 # macro -mmRLC_AUTO_PG_CTRL_BASE_IDX = 1 # macro -mmRLC_SMU_GRBM_REG_SAVE_CTRL = 0x4c56 # macro -mmRLC_SMU_GRBM_REG_SAVE_CTRL_BASE_IDX = 1 # macro -mmRLC_SERDES_RD_INDEX = 0x4c59 # macro -mmRLC_SERDES_RD_INDEX_BASE_IDX = 1 # macro -mmRLC_SERDES_RD_DATA_0 = 0x4c5a # macro -mmRLC_SERDES_RD_DATA_0_BASE_IDX = 1 # macro -mmRLC_SERDES_RD_DATA_1 = 0x4c5b # macro -mmRLC_SERDES_RD_DATA_1_BASE_IDX = 1 # macro -mmRLC_SERDES_RD_DATA_2 = 0x4c5c # macro -mmRLC_SERDES_RD_DATA_2_BASE_IDX = 1 # macro -mmRLC_SERDES_RD_DATA_3 = 0x4c5d # macro -mmRLC_SERDES_RD_DATA_3_BASE_IDX = 1 # macro -mmRLC_SERDES_MASK = 0x4c5e # macro -mmRLC_SERDES_MASK_BASE_IDX = 1 # macro -mmRLC_SERDES_CTRL = 0x4c5f # macro -mmRLC_SERDES_CTRL_BASE_IDX = 1 # macro -mmRLC_SERDES_DATA = 0x4c60 # macro -mmRLC_SERDES_DATA_BASE_IDX = 1 # macro -mmRLC_SERDES_BUSY = 0x4c61 # macro -mmRLC_SERDES_BUSY_BASE_IDX = 1 # macro -mmRLC_GPM_GENERAL_0 = 0x4c63 # macro -mmRLC_GPM_GENERAL_0_BASE_IDX = 1 # macro -mmRLC_GPM_GENERAL_1 = 0x4c64 # macro -mmRLC_GPM_GENERAL_1_BASE_IDX = 1 # macro -mmRLC_GPM_GENERAL_2 = 0x4c65 # macro -mmRLC_GPM_GENERAL_2_BASE_IDX = 1 # macro -mmRLC_GPM_GENERAL_3 = 0x4c66 # macro -mmRLC_GPM_GENERAL_3_BASE_IDX = 1 # macro -mmRLC_GPM_GENERAL_4 = 0x4c67 # macro -mmRLC_GPM_GENERAL_4_BASE_IDX = 1 # macro -mmRLC_GPM_GENERAL_5 = 0x4c68 # macro -mmRLC_GPM_GENERAL_5_BASE_IDX = 1 # macro -mmRLC_GPM_GENERAL_6 = 0x4c69 # macro -mmRLC_GPM_GENERAL_6_BASE_IDX = 1 # macro -mmRLC_GPM_GENERAL_7 = 0x4c6a # macro -mmRLC_GPM_GENERAL_7_BASE_IDX = 1 # macro -mmRLC_STATIC_PG_STATUS = 0x4c6e # macro -mmRLC_STATIC_PG_STATUS_BASE_IDX = 1 # macro -mmRLC_SPM_INT_INFO_1 = 0x4c6f # macro -mmRLC_SPM_INT_INFO_1_BASE_IDX = 1 # macro -mmRLC_SPM_INT_INFO_2 = 0x4c70 # macro -mmRLC_SPM_INT_INFO_2_BASE_IDX = 1 # macro -mmRLC_SPM_MC_CNTL = 0x4c71 # macro -mmRLC_SPM_MC_CNTL_BASE_IDX = 1 # macro -mmRLC_SPM_INT_CNTL = 0x4c72 # macro -mmRLC_SPM_INT_CNTL_BASE_IDX = 1 # macro -mmRLC_SPM_INT_STATUS = 0x4c73 # macro -mmRLC_SPM_INT_STATUS_BASE_IDX = 1 # macro -mmRLC_SMU_MESSAGE = 0x4c76 # macro -mmRLC_SMU_MESSAGE_BASE_IDX = 1 # macro -mmRLC_GPM_LOG_SIZE = 0x4c77 # macro -mmRLC_GPM_LOG_SIZE_BASE_IDX = 1 # macro -mmRLC_PG_DELAY_3 = 0x4c78 # macro -mmRLC_PG_DELAY_3_BASE_IDX = 1 # macro -mmRLC_GPR_REG1 = 0x4c79 # macro -mmRLC_GPR_REG1_BASE_IDX = 1 # macro -mmRLC_GPR_REG2 = 0x4c7a # macro -mmRLC_GPR_REG2_BASE_IDX = 1 # macro -mmRLC_GPM_LOG_CONT = 0x4c7b # macro -mmRLC_GPM_LOG_CONT_BASE_IDX = 1 # macro -mmRLC_GPM_INT_DISABLE_TH0 = 0x4c7c # macro -mmRLC_GPM_INT_DISABLE_TH0_BASE_IDX = 1 # macro -mmRLC_GPM_LEGACY_INT_DISABLE = 0x4c7d # macro -mmRLC_GPM_LEGACY_INT_DISABLE_BASE_IDX = 1 # macro -mmRLC_GPM_INT_FORCE_TH0 = 0x4c7e # macro -mmRLC_GPM_INT_FORCE_TH0_BASE_IDX = 1 # macro -mmRLC_SRM_CNTL = 0x4c80 # macro -mmRLC_SRM_CNTL_BASE_IDX = 1 # macro -mmRLC_SRM_GPM_COMMAND = 0x4c87 # macro -mmRLC_SRM_GPM_COMMAND_BASE_IDX = 1 # macro -mmRLC_SRM_GPM_COMMAND_STATUS = 0x4c88 # macro -mmRLC_SRM_GPM_COMMAND_STATUS_BASE_IDX = 1 # macro -mmRLC_SRM_RLCV_COMMAND = 0x4c89 # macro -mmRLC_SRM_RLCV_COMMAND_BASE_IDX = 1 # macro -mmRLC_SRM_RLCV_COMMAND_STATUS = 0x4c8a # macro -mmRLC_SRM_RLCV_COMMAND_STATUS_BASE_IDX = 1 # macro -mmRLC_SRM_INDEX_CNTL_ADDR_0 = 0x4c8b # macro -mmRLC_SRM_INDEX_CNTL_ADDR_0_BASE_IDX = 1 # macro -mmRLC_SRM_INDEX_CNTL_ADDR_1 = 0x4c8c # macro -mmRLC_SRM_INDEX_CNTL_ADDR_1_BASE_IDX = 1 # macro -mmRLC_SRM_INDEX_CNTL_ADDR_2 = 0x4c8d # macro -mmRLC_SRM_INDEX_CNTL_ADDR_2_BASE_IDX = 1 # macro -mmRLC_SRM_INDEX_CNTL_ADDR_3 = 0x4c8e # macro -mmRLC_SRM_INDEX_CNTL_ADDR_3_BASE_IDX = 1 # macro -mmRLC_SRM_INDEX_CNTL_ADDR_4 = 0x4c8f # macro -mmRLC_SRM_INDEX_CNTL_ADDR_4_BASE_IDX = 1 # macro -mmRLC_SRM_INDEX_CNTL_ADDR_5 = 0x4c90 # macro -mmRLC_SRM_INDEX_CNTL_ADDR_5_BASE_IDX = 1 # macro -mmRLC_SRM_INDEX_CNTL_ADDR_6 = 0x4c91 # macro -mmRLC_SRM_INDEX_CNTL_ADDR_6_BASE_IDX = 1 # macro -mmRLC_SRM_INDEX_CNTL_ADDR_7 = 0x4c92 # macro -mmRLC_SRM_INDEX_CNTL_ADDR_7_BASE_IDX = 1 # macro -mmRLC_SRM_INDEX_CNTL_DATA_0 = 0x4c93 # macro -mmRLC_SRM_INDEX_CNTL_DATA_0_BASE_IDX = 1 # macro -mmRLC_SRM_INDEX_CNTL_DATA_1 = 0x4c94 # macro -mmRLC_SRM_INDEX_CNTL_DATA_1_BASE_IDX = 1 # macro -mmRLC_SRM_INDEX_CNTL_DATA_2 = 0x4c95 # macro -mmRLC_SRM_INDEX_CNTL_DATA_2_BASE_IDX = 1 # macro -mmRLC_SRM_INDEX_CNTL_DATA_3 = 0x4c96 # macro -mmRLC_SRM_INDEX_CNTL_DATA_3_BASE_IDX = 1 # macro -mmRLC_SRM_INDEX_CNTL_DATA_4 = 0x4c97 # macro -mmRLC_SRM_INDEX_CNTL_DATA_4_BASE_IDX = 1 # macro -mmRLC_SRM_INDEX_CNTL_DATA_5 = 0x4c98 # macro -mmRLC_SRM_INDEX_CNTL_DATA_5_BASE_IDX = 1 # macro -mmRLC_SRM_INDEX_CNTL_DATA_6 = 0x4c99 # macro -mmRLC_SRM_INDEX_CNTL_DATA_6_BASE_IDX = 1 # macro -mmRLC_SRM_INDEX_CNTL_DATA_7 = 0x4c9a # macro -mmRLC_SRM_INDEX_CNTL_DATA_7_BASE_IDX = 1 # macro -mmRLC_SRM_STAT = 0x4c9b # macro -mmRLC_SRM_STAT_BASE_IDX = 1 # macro -mmRLC_SRM_GPM_ABORT = 0x4c9c # macro -mmRLC_SRM_GPM_ABORT_BASE_IDX = 1 # macro -mmRLC_SPARE_INT_2 = 0x4c9d # macro -mmRLC_SPARE_INT_2_BASE_IDX = 1 # macro -mmRLC_RLCV_SPARE_INT_1 = 0x4c9e # macro -mmRLC_RLCV_SPARE_INT_1_BASE_IDX = 1 # macro -mmRLC_PACE_SPARE_INT_1 = 0x4c9f # macro -mmRLC_PACE_SPARE_INT_1_BASE_IDX = 1 # macro -mmRLC_SAFE_MODE = 0x4ca0 # macro -mmRLC_SAFE_MODE_BASE_IDX = 1 # macro -mmRLC_CP_SCHEDULERS = 0x4ca1 # macro -mmRLC_CP_SCHEDULERS_BASE_IDX = 1 # macro -mmRLC_CSIB_ADDR_LO = 0x4ca2 # macro -mmRLC_CSIB_ADDR_LO_BASE_IDX = 1 # macro -mmRLC_CSIB_ADDR_HI = 0x4ca3 # macro -mmRLC_CSIB_ADDR_HI_BASE_IDX = 1 # macro -mmRLC_CSIB_LENGTH = 0x4ca4 # macro -mmRLC_CSIB_LENGTH_BASE_IDX = 1 # macro -mmRLC_SPARE_INT_0 = 0x4ca5 # macro -mmRLC_SPARE_INT_0_BASE_IDX = 1 # macro -mmRLC_CP_EOF_INT_CNT = 0x4ca6 # macro -mmRLC_CP_EOF_INT_CNT_BASE_IDX = 1 # macro -mmRLC_CP_EOF_INT = 0x4ca7 # macro -mmRLC_CP_EOF_INT_BASE_IDX = 1 # macro -mmRLC_SMU_COMMAND = 0x4ca9 # macro -mmRLC_SMU_COMMAND_BASE_IDX = 1 # macro -mmRLC_SMU_ARGUMENT_1 = 0x4cab # macro -mmRLC_SMU_ARGUMENT_1_BASE_IDX = 1 # macro -mmRLC_SMU_ARGUMENT_2 = 0x4cac # macro -mmRLC_SMU_ARGUMENT_2_BASE_IDX = 1 # macro -mmRLC_GPM_GENERAL_8 = 0x4cad # macro -mmRLC_GPM_GENERAL_8_BASE_IDX = 1 # macro -mmRLC_GPM_GENERAL_9 = 0x4cae # macro -mmRLC_GPM_GENERAL_9_BASE_IDX = 1 # macro -mmRLC_GPM_GENERAL_10 = 0x4caf # macro -mmRLC_GPM_GENERAL_10_BASE_IDX = 1 # macro -mmRLC_GPM_GENERAL_11 = 0x4cb0 # macro -mmRLC_GPM_GENERAL_11_BASE_IDX = 1 # macro -mmRLC_GPM_GENERAL_12 = 0x4cb1 # macro -mmRLC_GPM_GENERAL_12_BASE_IDX = 1 # macro -mmRLC_GPM_UTCL1_CNTL_0 = 0x4cb2 # macro -mmRLC_GPM_UTCL1_CNTL_0_BASE_IDX = 1 # macro -mmRLC_GPM_UTCL1_CNTL_1 = 0x4cb3 # macro -mmRLC_GPM_UTCL1_CNTL_1_BASE_IDX = 1 # macro -mmRLC_GPM_UTCL1_CNTL_2 = 0x4cb4 # macro -mmRLC_GPM_UTCL1_CNTL_2_BASE_IDX = 1 # macro -mmRLC_SPM_UTCL1_CNTL = 0x4cb5 # macro -mmRLC_SPM_UTCL1_CNTL_BASE_IDX = 1 # macro -mmRLC_UTCL1_STATUS_2 = 0x4cb6 # macro -mmRLC_UTCL1_STATUS_2_BASE_IDX = 1 # macro -mmRLC_LB_CONFIG_2 = 0x4cb8 # macro -mmRLC_LB_CONFIG_2_BASE_IDX = 1 # macro -mmRLC_LB_CONFIG_3 = 0x4cb9 # macro -mmRLC_LB_CONFIG_3_BASE_IDX = 1 # macro -mmRLC_LB_CONFIG_4 = 0x4cba # macro -mmRLC_LB_CONFIG_4_BASE_IDX = 1 # macro -mmRLC_SPM_UTCL1_ERROR_1 = 0x4cbc # macro -mmRLC_SPM_UTCL1_ERROR_1_BASE_IDX = 1 # macro -mmRLC_SPM_UTCL1_ERROR_2 = 0x4cbd # macro -mmRLC_SPM_UTCL1_ERROR_2_BASE_IDX = 1 # macro -mmRLC_GPM_UTCL1_TH0_ERROR_1 = 0x4cbe # macro -mmRLC_GPM_UTCL1_TH0_ERROR_1_BASE_IDX = 1 # macro -mmRLC_LB_CONFIG_1 = 0x4cbf # macro -mmRLC_LB_CONFIG_1_BASE_IDX = 1 # macro -mmRLC_GPM_UTCL1_TH0_ERROR_2 = 0x4cc0 # macro -mmRLC_GPM_UTCL1_TH0_ERROR_2_BASE_IDX = 1 # macro -mmRLC_GPM_UTCL1_TH1_ERROR_1 = 0x4cc1 # macro -mmRLC_GPM_UTCL1_TH1_ERROR_1_BASE_IDX = 1 # macro -mmRLC_GPM_UTCL1_TH1_ERROR_2 = 0x4cc2 # macro -mmRLC_GPM_UTCL1_TH1_ERROR_2_BASE_IDX = 1 # macro -mmRLC_GPM_UTCL1_TH2_ERROR_1 = 0x4cc3 # macro -mmRLC_GPM_UTCL1_TH2_ERROR_1_BASE_IDX = 1 # macro -mmRLC_GPM_UTCL1_TH2_ERROR_2 = 0x4cc4 # macro -mmRLC_GPM_UTCL1_TH2_ERROR_2_BASE_IDX = 1 # macro -mmRLC_CGCG_CGLS_CTRL_3D = 0x4cc5 # macro -mmRLC_CGCG_CGLS_CTRL_3D_BASE_IDX = 1 # macro -mmRLC_CGCG_RAMP_CTRL_3D = 0x4cc6 # macro -mmRLC_CGCG_RAMP_CTRL_3D_BASE_IDX = 1 # macro -mmRLC_SEMAPHORE_0 = 0x4cc7 # macro -mmRLC_SEMAPHORE_0_BASE_IDX = 1 # macro -mmRLC_SEMAPHORE_1 = 0x4cc8 # macro -mmRLC_SEMAPHORE_1_BASE_IDX = 1 # macro -mmRLC_PACE_INT_STAT = 0x4ccc # macro -mmRLC_PACE_INT_STAT_BASE_IDX = 1 # macro -mmRLC_PREWALKER_UTCL1_CNTL = 0x4ccd # macro -mmRLC_PREWALKER_UTCL1_CNTL_BASE_IDX = 1 # macro -mmRLC_PREWALKER_UTCL1_TRIG = 0x4cce # macro -mmRLC_PREWALKER_UTCL1_TRIG_BASE_IDX = 1 # macro -mmRLC_PREWALKER_UTCL1_ADDR_LSB = 0x4ccf # macro -mmRLC_PREWALKER_UTCL1_ADDR_LSB_BASE_IDX = 1 # macro -mmRLC_PREWALKER_UTCL1_ADDR_MSB = 0x4cd0 # macro -mmRLC_PREWALKER_UTCL1_ADDR_MSB_BASE_IDX = 1 # macro -mmRLC_PREWALKER_UTCL1_SIZE_LSB = 0x4cd1 # macro -mmRLC_PREWALKER_UTCL1_SIZE_LSB_BASE_IDX = 1 # macro -mmRLC_PREWALKER_UTCL1_SIZE_MSB = 0x4cd2 # macro -mmRLC_PREWALKER_UTCL1_SIZE_MSB_BASE_IDX = 1 # macro -mmRLC_UTCL1_STATUS = 0x4cd4 # macro -mmRLC_UTCL1_STATUS_BASE_IDX = 1 # macro -mmRLC_R2I_CNTL_0 = 0x4cd5 # macro -mmRLC_R2I_CNTL_0_BASE_IDX = 1 # macro -mmRLC_R2I_CNTL_1 = 0x4cd6 # macro -mmRLC_R2I_CNTL_1_BASE_IDX = 1 # macro -mmRLC_R2I_CNTL_2 = 0x4cd7 # macro -mmRLC_R2I_CNTL_2_BASE_IDX = 1 # macro -mmRLC_R2I_CNTL_3 = 0x4cd8 # macro -mmRLC_R2I_CNTL_3_BASE_IDX = 1 # macro -mmRLC_LB_WGP_STAT = 0x4cda # macro -mmRLC_LB_WGP_STAT_BASE_IDX = 1 # macro -mmRLC_GPM_INT_STAT_TH0 = 0x4cdc # macro -mmRLC_GPM_INT_STAT_TH0_BASE_IDX = 1 # macro -mmRLC_GPM_GENERAL_13 = 0x4cdd # macro -mmRLC_GPM_GENERAL_13_BASE_IDX = 1 # macro -mmRLC_GPM_GENERAL_14 = 0x4cde # macro -mmRLC_GPM_GENERAL_14_BASE_IDX = 1 # macro -mmRLC_GPM_GENERAL_15 = 0x4cdf # macro -mmRLC_GPM_GENERAL_15_BASE_IDX = 1 # macro -mmRLC_SPARE_INT_1 = 0x4ce0 # macro -mmRLC_SPARE_INT_1_BASE_IDX = 1 # macro -mmRLC_SEMAPHORE_2 = 0x4ce3 # macro -mmRLC_SEMAPHORE_2_BASE_IDX = 1 # macro -mmRLC_SEMAPHORE_3 = 0x4ce4 # macro -mmRLC_SEMAPHORE_3_BASE_IDX = 1 # macro -mmRLC_SMU_ARGUMENT_3 = 0x4ce5 # macro -mmRLC_SMU_ARGUMENT_3_BASE_IDX = 1 # macro -mmRLC_SMU_ARGUMENT_4 = 0x4ce6 # macro -mmRLC_SMU_ARGUMENT_4_BASE_IDX = 1 # macro -mmRLC_GPU_CLOCK_COUNT_LSB_1 = 0x4ce8 # macro -mmRLC_GPU_CLOCK_COUNT_LSB_1_BASE_IDX = 1 # macro -mmRLC_GPU_CLOCK_COUNT_MSB_1 = 0x4ce9 # macro -mmRLC_GPU_CLOCK_COUNT_MSB_1_BASE_IDX = 1 # macro -mmRLC_CAPTURE_GPU_CLOCK_COUNT_1 = 0x4cea # macro -mmRLC_CAPTURE_GPU_CLOCK_COUNT_1_BASE_IDX = 1 # macro -mmRLC_GPU_CLOCK_COUNT_LSB_2 = 0x4ceb # macro -mmRLC_GPU_CLOCK_COUNT_LSB_2_BASE_IDX = 1 # macro -mmRLC_GPU_CLOCK_COUNT_MSB_2 = 0x4cec # macro -mmRLC_GPU_CLOCK_COUNT_MSB_2_BASE_IDX = 1 # macro -mmRLC_PACE_INT_DISABLE = 0x4ced # macro -mmRLC_PACE_INT_DISABLE_BASE_IDX = 1 # macro -mmRLC_CAPTURE_GPU_CLOCK_COUNT_2 = 0x4cef # macro -mmRLC_CAPTURE_GPU_CLOCK_COUNT_2_BASE_IDX = 1 # macro -mmRLC_RLCV_DOORBELL_RANGE = 0x4cf0 # macro -mmRLC_RLCV_DOORBELL_RANGE_BASE_IDX = 1 # macro -mmRLC_RLCV_DOORBELL_CNTL = 0x4cf1 # macro -mmRLC_RLCV_DOORBELL_CNTL_BASE_IDX = 1 # macro -mmRLC_RLCV_DOORBELL_STAT = 0x4cf2 # macro -mmRLC_RLCV_DOORBELL_STAT_BASE_IDX = 1 # macro -mmRLC_RLCV_DOORBELL_0_DATA_LO = 0x4cf3 # macro -mmRLC_RLCV_DOORBELL_0_DATA_LO_BASE_IDX = 1 # macro -mmRLC_RLCV_DOORBELL_0_DATA_HI = 0x4cf4 # macro -mmRLC_RLCV_DOORBELL_0_DATA_HI_BASE_IDX = 1 # macro -mmRLC_RLCV_DOORBELL_1_DATA_LO = 0x4cf5 # macro -mmRLC_RLCV_DOORBELL_1_DATA_LO_BASE_IDX = 1 # macro -mmRLC_RLCV_DOORBELL_1_DATA_HI = 0x4cf6 # macro -mmRLC_RLCV_DOORBELL_1_DATA_HI_BASE_IDX = 1 # macro -mmRLC_RLCV_DOORBELL_2_DATA_LO = 0x4cf7 # macro -mmRLC_RLCV_DOORBELL_2_DATA_LO_BASE_IDX = 1 # macro -mmRLC_RLCV_DOORBELL_2_DATA_HI = 0x4cf8 # macro -mmRLC_RLCV_DOORBELL_2_DATA_HI_BASE_IDX = 1 # macro -mmRLC_RLCV_DOORBELL_3_DATA_LO = 0x4cf9 # macro -mmRLC_RLCV_DOORBELL_3_DATA_LO_BASE_IDX = 1 # macro -mmRLC_RLCV_DOORBELL_3_DATA_HI = 0x4cfa # macro -mmRLC_RLCV_DOORBELL_3_DATA_HI_BASE_IDX = 1 # macro -mmRLC_RLCV_SPARE_INT = 0x4d00 # macro -mmRLC_RLCV_SPARE_INT_BASE_IDX = 1 # macro -mmRLC_PACE_TIMER_INT_0 = 0x4d04 # macro -mmRLC_PACE_TIMER_INT_0_BASE_IDX = 1 # macro -mmRLC_PACE_TIMER_CTRL = 0x4d05 # macro -mmRLC_PACE_TIMER_CTRL_BASE_IDX = 1 # macro -mmRLC_PACE_TIMER_INT_1 = 0x4d06 # macro -mmRLC_PACE_TIMER_INT_1_BASE_IDX = 1 # macro -mmRLC_PACE_SPARE_INT = 0x4d07 # macro -mmRLC_PACE_SPARE_INT_BASE_IDX = 1 # macro -mmRLC_SMU_CLK_REQ = 0x4d08 # macro -mmRLC_SMU_CLK_REQ_BASE_IDX = 1 # macro -mmRLC_CP_STAT_INVAL_STAT = 0x4d09 # macro -mmRLC_CP_STAT_INVAL_STAT_BASE_IDX = 1 # macro -mmRLC_CP_STAT_INVAL_CTRL = 0x4d0a # macro -mmRLC_CP_STAT_INVAL_CTRL_BASE_IDX = 1 # macro -mmRLC_CLK_STATUS = 0x4d0b # macro -mmRLC_CLK_STATUS_BASE_IDX = 1 # macro -mmRLC_SPP_CTRL = 0x4d0c # macro -mmRLC_SPP_CTRL_BASE_IDX = 1 # macro -mmRLC_SPP_SHADER_PROFILE_EN = 0x4d0d # macro -mmRLC_SPP_SHADER_PROFILE_EN_BASE_IDX = 1 # macro -mmRLC_SPP_SSF_CAPTURE_EN = 0x4d0e # macro -mmRLC_SPP_SSF_CAPTURE_EN_BASE_IDX = 1 # macro -mmRLC_SPP_SSF_THRESHOLD_0 = 0x4d0f # macro -mmRLC_SPP_SSF_THRESHOLD_0_BASE_IDX = 1 # macro -mmRLC_SPP_SSF_THRESHOLD_1 = 0x4d10 # macro -mmRLC_SPP_SSF_THRESHOLD_1_BASE_IDX = 1 # macro -mmRLC_SPP_SSF_THRESHOLD_2 = 0x4d11 # macro -mmRLC_SPP_SSF_THRESHOLD_2_BASE_IDX = 1 # macro -mmRLC_SPP_INFLIGHT_RD_ADDR = 0x4d12 # macro -mmRLC_SPP_INFLIGHT_RD_ADDR_BASE_IDX = 1 # macro -mmRLC_SPP_INFLIGHT_RD_DATA = 0x4d13 # macro -mmRLC_SPP_INFLIGHT_RD_DATA_BASE_IDX = 1 # macro -mmRLC_GPM_GENERAL_16 = 0x4d14 # macro -mmRLC_GPM_GENERAL_16_BASE_IDX = 1 # macro -mmRLC_SPP_PROF_INFO_1 = 0x4d18 # macro -mmRLC_SPP_PROF_INFO_1_BASE_IDX = 1 # macro -mmRLC_SPP_PROF_INFO_2 = 0x4d19 # macro -mmRLC_SPP_PROF_INFO_2_BASE_IDX = 1 # macro -mmRLC_SPP_GLOBAL_SH_ID = 0x4d1a # macro -mmRLC_SPP_GLOBAL_SH_ID_BASE_IDX = 1 # macro -mmRLC_SPP_GLOBAL_SH_ID_VALID = 0x4d1b # macro -mmRLC_SPP_GLOBAL_SH_ID_VALID_BASE_IDX = 1 # macro -mmRLC_SPP_STATUS = 0x4d1c # macro -mmRLC_SPP_STATUS_BASE_IDX = 1 # macro -mmRLC_SPP_PVT_STAT_0 = 0x4d1d # macro -mmRLC_SPP_PVT_STAT_0_BASE_IDX = 1 # macro -mmRLC_SPP_PVT_STAT_1 = 0x4d1e # macro -mmRLC_SPP_PVT_STAT_1_BASE_IDX = 1 # macro -mmRLC_SPP_PVT_STAT_2 = 0x4d1f # macro -mmRLC_SPP_PVT_STAT_2_BASE_IDX = 1 # macro -mmRLC_SPP_PVT_STAT_3 = 0x4d20 # macro -mmRLC_SPP_PVT_STAT_3_BASE_IDX = 1 # macro -mmRLC_SPP_PVT_LEVEL_MAX = 0x4d21 # macro -mmRLC_SPP_PVT_LEVEL_MAX_BASE_IDX = 1 # macro -mmRLC_SPP_STALL_STATE_UPDATE = 0x4d22 # macro -mmRLC_SPP_STALL_STATE_UPDATE_BASE_IDX = 1 # macro -mmRLC_SPP_PBB_INFO = 0x4d23 # macro -mmRLC_SPP_PBB_INFO_BASE_IDX = 1 # macro -mmRLC_SPP_RESET = 0x4d24 # macro -mmRLC_SPP_RESET_BASE_IDX = 1 # macro -mmRLC_SPM_SAMPLE_CNT = 0x4d25 # macro -mmRLC_SPM_SAMPLE_CNT_BASE_IDX = 1 # macro -mmRLC_RLCP_DOORBELL_RANGE = 0x4d26 # macro -mmRLC_RLCP_DOORBELL_RANGE_BASE_IDX = 1 # macro -mmRLC_RLCP_DOORBELL_CNTL = 0x4d27 # macro -mmRLC_RLCP_DOORBELL_CNTL_BASE_IDX = 1 # macro -mmRLC_RLCP_DOORBELL_STAT = 0x4d28 # macro -mmRLC_RLCP_DOORBELL_STAT_BASE_IDX = 1 # macro -mmRLC_RLCP_DOORBELL_0_DATA_LO = 0x4d29 # macro -mmRLC_RLCP_DOORBELL_0_DATA_LO_BASE_IDX = 1 # macro -mmRLC_RLCP_DOORBELL_0_DATA_HI = 0x4d2a # macro -mmRLC_RLCP_DOORBELL_0_DATA_HI_BASE_IDX = 1 # macro -mmRLC_RLCP_DOORBELL_1_DATA_LO = 0x4d2b # macro -mmRLC_RLCP_DOORBELL_1_DATA_LO_BASE_IDX = 1 # macro -mmRLC_RLCP_DOORBELL_1_DATA_HI = 0x4d2c # macro -mmRLC_RLCP_DOORBELL_1_DATA_HI_BASE_IDX = 1 # macro -mmRLC_RLCP_DOORBELL_2_DATA_LO = 0x4d2d # macro -mmRLC_RLCP_DOORBELL_2_DATA_LO_BASE_IDX = 1 # macro -mmRLC_RLCP_DOORBELL_2_DATA_HI = 0x4d2e # macro -mmRLC_RLCP_DOORBELL_2_DATA_HI_BASE_IDX = 1 # macro -mmRLC_RLCP_DOORBELL_3_DATA_LO = 0x4d2f # macro -mmRLC_RLCP_DOORBELL_3_DATA_LO_BASE_IDX = 1 # macro -mmRLC_RLCP_DOORBELL_3_DATA_HI = 0x4d30 # macro -mmRLC_RLCP_DOORBELL_3_DATA_HI_BASE_IDX = 1 # macro -mmRLC_PCC_STRETCH_HYSTERESIS_CNTL = 0x4d44 # macro -mmRLC_PCC_STRETCH_HYSTERESIS_CNTL_BASE_IDX = 1 # macro -mmRLC_CAC_MASK_CNTL = 0x4d45 # macro -mmRLC_CAC_MASK_CNTL_BASE_IDX = 1 # macro -mmRLC_GPU_CLOCK_COUNT_SPM_LSB = 0x4de4 # macro -mmRLC_GPU_CLOCK_COUNT_SPM_LSB_BASE_IDX = 1 # macro -mmRLC_GPU_CLOCK_COUNT_SPM_MSB = 0x4de5 # macro -mmRLC_GPU_CLOCK_COUNT_SPM_MSB_BASE_IDX = 1 # macro -mmRLC_SPM_THREAD_TRACE_CTRL = 0x4de6 # macro -mmRLC_SPM_THREAD_TRACE_CTRL_BASE_IDX = 1 # macro -mmRLC_LB_CNTR_2 = 0x4de7 # macro -mmRLC_LB_CNTR_2_BASE_IDX = 1 # macro -mmRLC_CPAXI_DOORBELL_MON_CTRL = 0x4df1 # macro -mmRLC_CPAXI_DOORBELL_MON_CTRL_BASE_IDX = 1 # macro -mmRLC_CPAXI_DOORBELL_MON_STAT = 0x4df2 # macro -mmRLC_CPAXI_DOORBELL_MON_STAT_BASE_IDX = 1 # macro -mmRLC_CPAXI_DOORBELL_MON_DATA_LSB = 0x4df3 # macro -mmRLC_CPAXI_DOORBELL_MON_DATA_LSB_BASE_IDX = 1 # macro -mmRLC_CPAXI_DOORBELL_MON_DATA_MSB = 0x4df4 # macro -mmRLC_CPAXI_DOORBELL_MON_DATA_MSB_BASE_IDX = 1 # macro -mmRLC_XT_DOORBELL_RANGE = 0x4df5 # macro -mmRLC_XT_DOORBELL_RANGE_BASE_IDX = 1 # macro -mmRLC_XT_DOORBELL_CNTL = 0x4df6 # macro -mmRLC_XT_DOORBELL_CNTL_BASE_IDX = 1 # macro -mmRLC_XT_DOORBELL_STAT = 0x4df7 # macro -mmRLC_XT_DOORBELL_STAT_BASE_IDX = 1 # macro -mmRLC_XT_DOORBELL_0_DATA_LO = 0x4df8 # macro -mmRLC_XT_DOORBELL_0_DATA_LO_BASE_IDX = 1 # macro -mmRLC_XT_DOORBELL_0_DATA_HI = 0x4df9 # macro -mmRLC_XT_DOORBELL_0_DATA_HI_BASE_IDX = 1 # macro -mmRLC_XT_DOORBELL_1_DATA_LO = 0x4dfa # macro -mmRLC_XT_DOORBELL_1_DATA_LO_BASE_IDX = 1 # macro -mmRLC_XT_DOORBELL_1_DATA_HI = 0x4dfb # macro -mmRLC_XT_DOORBELL_1_DATA_HI_BASE_IDX = 1 # macro -mmRLC_XT_DOORBELL_2_DATA_LO = 0x4dfc # macro -mmRLC_XT_DOORBELL_2_DATA_LO_BASE_IDX = 1 # macro -mmRLC_XT_DOORBELL_2_DATA_HI = 0x4dfd # macro -mmRLC_XT_DOORBELL_2_DATA_HI_BASE_IDX = 1 # macro -mmRLC_XT_DOORBELL_3_DATA_LO = 0x4dfe # macro -mmRLC_XT_DOORBELL_3_DATA_LO_BASE_IDX = 1 # macro -mmRLC_XT_DOORBELL_3_DATA_HI = 0x4dff # macro -mmRLC_XT_DOORBELL_3_DATA_HI_BASE_IDX = 1 # macro -mmRLC_SPP_CAM_ADDR = 0x4e00 # macro -mmRLC_SPP_CAM_ADDR_BASE_IDX = 1 # macro -mmRLC_SPP_CAM_DATA = 0x4e01 # macro -mmRLC_SPP_CAM_DATA_BASE_IDX = 1 # macro -mmRLC_SPP_CAM_EXT_ADDR = 0x4e02 # macro -mmRLC_SPP_CAM_EXT_ADDR_BASE_IDX = 1 # macro -mmRLC_SPP_CAM_EXT_DATA = 0x4e03 # macro -mmRLC_SPP_CAM_EXT_DATA_BASE_IDX = 1 # macro -mmRLC_PACE_SCRATCH_ADDR = 0x4e04 # macro -mmRLC_PACE_SCRATCH_ADDR_BASE_IDX = 1 # macro -mmRLC_PACE_SCRATCH_DATA = 0x4e05 # macro -mmRLC_PACE_SCRATCH_DATA_BASE_IDX = 1 # macro -mmRLC_RLCS_DEC_START = 0x4e60 # macro -mmRLC_RLCS_DEC_START_BASE_IDX = 1 # macro -mmRLC_RLCS_DEC_DUMP_ADDR = 0x4e61 # macro -mmRLC_RLCS_DEC_DUMP_ADDR_BASE_IDX = 1 # macro -mmRLC_RLCS_EXCEPTION_REG_1 = 0x4e62 # macro -mmRLC_RLCS_EXCEPTION_REG_1_BASE_IDX = 1 # macro -mmRLC_RLCS_EXCEPTION_REG_2 = 0x4e63 # macro -mmRLC_RLCS_EXCEPTION_REG_2_BASE_IDX = 1 # macro -mmRLC_RLCS_EXCEPTION_REG_3 = 0x4e64 # macro -mmRLC_RLCS_EXCEPTION_REG_3_BASE_IDX = 1 # macro -mmRLC_RLCS_EXCEPTION_REG_4 = 0x4e65 # macro -mmRLC_RLCS_EXCEPTION_REG_4_BASE_IDX = 1 # macro -mmRLC_RLCS_GENERAL_6 = 0x4e66 # macro -mmRLC_RLCS_GENERAL_6_BASE_IDX = 1 # macro -mmRLC_RLCS_GENERAL_7 = 0x4e67 # macro -mmRLC_RLCS_GENERAL_7_BASE_IDX = 1 # macro -mmRLC_RLCS_CGCG_REQUEST = 0x4e68 # macro -mmRLC_RLCS_CGCG_REQUEST_BASE_IDX = 1 # macro -mmRLC_RLCS_CGCG_STATUS = 0x4e69 # macro -mmRLC_RLCS_CGCG_STATUS_BASE_IDX = 1 # macro -mmRLC_RLCS_SMU_GFXCLK_STATUS = 0x4e6a # macro -mmRLC_RLCS_SMU_GFXCLK_STATUS_BASE_IDX = 1 # macro -mmRLC_RLCS_SMU_GFXCLK_CONTROL = 0x4e6b # macro -mmRLC_RLCS_SMU_GFXCLK_CONTROL_BASE_IDX = 1 # macro -mmRLC_RLCS_SOC_DS_CNTL = 0x4e6c # macro -mmRLC_RLCS_SOC_DS_CNTL_BASE_IDX = 1 # macro -mmRLC_RLCS_GFX_DS_CNTL = 0x4e6d # macro -mmRLC_RLCS_GFX_DS_CNTL_BASE_IDX = 1 # macro -mmRLC_GPM_STAT = 0x4e6e # macro -mmRLC_GPM_STAT_BASE_IDX = 1 # macro -mmRLC_RLCS_GPM_STAT = 0x4e6e # macro -mmRLC_RLCS_GPM_STAT_BASE_IDX = 1 # macro -mmRLC_RLCS_ABORTED_PD_SEQUENCE = 0x4e6f # macro -mmRLC_RLCS_ABORTED_PD_SEQUENCE_BASE_IDX = 1 # macro -mmRLC_RLCS_DIDT_FORCE_STALL = 0x4e70 # macro -mmRLC_RLCS_DIDT_FORCE_STALL_BASE_IDX = 1 # macro -mmRLC_RLCS_IOV_CMD_STATUS = 0x4e71 # macro -mmRLC_RLCS_IOV_CMD_STATUS_BASE_IDX = 1 # macro -mmRLC_RLCS_IOV_CNTX_LOC_SIZE = 0x4e72 # macro -mmRLC_RLCS_IOV_CNTX_LOC_SIZE_BASE_IDX = 1 # macro -mmRLC_RLCS_IOV_SCH_BLOCK = 0x4e73 # macro -mmRLC_RLCS_IOV_SCH_BLOCK_BASE_IDX = 1 # macro -mmRLC_RLCS_IOV_VM_BUSY_STATUS = 0x4e74 # macro -mmRLC_RLCS_IOV_VM_BUSY_STATUS_BASE_IDX = 1 # macro -mmRLC_RLCS_GPM_STAT_2 = 0x4e75 # macro -mmRLC_RLCS_GPM_STAT_2_BASE_IDX = 1 # macro -mmRLC_RLCS_GRBM_SOFT_RESET = 0x4e76 # macro -mmRLC_RLCS_GRBM_SOFT_RESET_BASE_IDX = 1 # macro -mmRLC_RLCS_PG_CHANGE_STATUS = 0x4e77 # macro -mmRLC_RLCS_PG_CHANGE_STATUS_BASE_IDX = 1 # macro -mmRLC_RLCS_PG_CHANGE_READ = 0x4e78 # macro -mmRLC_RLCS_PG_CHANGE_READ_BASE_IDX = 1 # macro -mmRLC_RLCS_LB_STATUS = 0x4e79 # macro -mmRLC_RLCS_LB_STATUS_BASE_IDX = 1 # macro -mmRLC_RLCS_LB_READ = 0x4e7a # macro -mmRLC_RLCS_LB_READ_BASE_IDX = 1 # macro -mmRLC_RLCS_LB_CONTROL = 0x4e7b # macro -mmRLC_RLCS_LB_CONTROL_BASE_IDX = 1 # macro -mmRLC_RLCS_IH_SEMAPHORE = 0x4e7c # macro -mmRLC_RLCS_IH_SEMAPHORE_BASE_IDX = 1 # macro -mmRLC_RLCS_IH_COOKIE_SEMAPHORE = 0x4e7d # macro -mmRLC_RLCS_IH_COOKIE_SEMAPHORE_BASE_IDX = 1 # macro -mmRLC_RLCS_IH_CTRL_1 = 0x4e7e # macro -mmRLC_RLCS_IH_CTRL_1_BASE_IDX = 1 # macro -mmRLC_RLCS_IH_CTRL_2 = 0x4e7f # macro -mmRLC_RLCS_IH_CTRL_2_BASE_IDX = 1 # macro -mmRLC_RLCS_IH_CTRL_3 = 0x4e80 # macro -mmRLC_RLCS_IH_CTRL_3_BASE_IDX = 1 # macro -mmRLC_RLCS_IH_STATUS = 0x4e81 # macro -mmRLC_RLCS_IH_STATUS_BASE_IDX = 1 # macro -mmRLC_RLCS_WGP_STATUS = 0x4e82 # macro -mmRLC_RLCS_WGP_STATUS_BASE_IDX = 1 # macro -mmRLC_RLCS_WGP_READ = 0x4e83 # macro -mmRLC_RLCS_WGP_READ_BASE_IDX = 1 # macro -mmRLC_RLCS_CP_INT_CTRL_1 = 0x4e84 # macro -mmRLC_RLCS_CP_INT_CTRL_1_BASE_IDX = 1 # macro -mmRLC_RLCS_CP_INT_CTRL_2 = 0x4e85 # macro -mmRLC_RLCS_CP_INT_CTRL_2_BASE_IDX = 1 # macro -mmRLC_RLCS_CP_INT_INFO_1 = 0x4e86 # macro -mmRLC_RLCS_CP_INT_INFO_1_BASE_IDX = 1 # macro -mmRLC_RLCS_CP_INT_INFO_2 = 0x4e87 # macro -mmRLC_RLCS_CP_INT_INFO_2_BASE_IDX = 1 # macro -mmRLC_RLCS_SPM_INT_CTRL = 0x4e88 # macro -mmRLC_RLCS_SPM_INT_CTRL_BASE_IDX = 1 # macro -mmRLC_RLCS_SPM_INT_INFO_1 = 0x4e89 # macro -mmRLC_RLCS_SPM_INT_INFO_1_BASE_IDX = 1 # macro -mmRLC_RLCS_SPM_INT_INFO_2 = 0x4e8a # macro -mmRLC_RLCS_SPM_INT_INFO_2_BASE_IDX = 1 # macro -mmRLC_RLCS_DSM_TRIG = 0x4e8b # macro -mmRLC_RLCS_DSM_TRIG_BASE_IDX = 1 # macro -mmRLC_RLCS_BOOTLOAD_STATUS = 0x4e8d # macro -mmRLC_RLCS_BOOTLOAD_STATUS_BASE_IDX = 1 # macro -mmRLC_RLCS_POWER_BRAKE_CNTL = 0x4e8e # macro -mmRLC_RLCS_POWER_BRAKE_CNTL_BASE_IDX = 1 # macro -mmRLC_RLCS_GENERAL_0 = 0x4e8f # macro -mmRLC_RLCS_GENERAL_0_BASE_IDX = 1 # macro -mmRLC_RLCS_GENERAL_1 = 0x4e90 # macro -mmRLC_RLCS_GENERAL_1_BASE_IDX = 1 # macro -mmRLC_RLCS_GENERAL_2 = 0x4e91 # macro -mmRLC_RLCS_GENERAL_2_BASE_IDX = 1 # macro -mmRLC_RLCS_GENERAL_3 = 0x4e92 # macro -mmRLC_RLCS_GENERAL_3_BASE_IDX = 1 # macro -mmRLC_RLCS_GENERAL_4 = 0x4e93 # macro -mmRLC_RLCS_GENERAL_4_BASE_IDX = 1 # macro -mmRLC_RLCS_GENERAL_5 = 0x4e94 # macro -mmRLC_RLCS_GENERAL_5_BASE_IDX = 1 # macro -mmRLC_RLCS_GRBM_IDLE_BUSY_STAT = 0x4ec1 # macro -mmRLC_RLCS_GRBM_IDLE_BUSY_STAT_BASE_IDX = 1 # macro -mmRLC_RLCS_GRBM_IDLE_BUSY_INT_CNTL = 0x4ec2 # macro -mmRLC_RLCS_GRBM_IDLE_BUSY_INT_CNTL_BASE_IDX = 1 # macro -mmRLC_RLCS_CMP_IDLE_CNTL = 0x4ec3 # macro -mmRLC_RLCS_CMP_IDLE_CNTL_BASE_IDX = 1 # macro -mmRLC_RLCS_POWER_BRAKE_CNTL_TH1 = 0x4ec4 # macro -mmRLC_RLCS_POWER_BRAKE_CNTL_TH1_BASE_IDX = 1 # macro -mmRLC_RLCS_AUXILIARY_REG_1 = 0x4ec5 # macro -mmRLC_RLCS_AUXILIARY_REG_1_BASE_IDX = 1 # macro -mmRLC_RLCS_AUXILIARY_REG_2 = 0x4ec6 # macro -mmRLC_RLCS_AUXILIARY_REG_2_BASE_IDX = 1 # macro -mmRLC_RLCS_AUXILIARY_REG_3 = 0x4ec7 # macro -mmRLC_RLCS_AUXILIARY_REG_3_BASE_IDX = 1 # macro -mmRLC_RLCS_AUXILIARY_REG_4 = 0x4ec8 # macro -mmRLC_RLCS_AUXILIARY_REG_4_BASE_IDX = 1 # macro -mmRLC_RLCS_SPM_SQTT_MODE = 0x4ee0 # macro -mmRLC_RLCS_SPM_SQTT_MODE_BASE_IDX = 1 # macro -mmRLC_RLCS_CP_DMA_SRCID_OVER = 0x4ee4 # macro -mmRLC_RLCS_CP_DMA_SRCID_OVER_BASE_IDX = 1 # macro -mmRLC_RLCS_UTCL2_CNTL = 0x4ee6 # macro -mmRLC_RLCS_UTCL2_CNTL_BASE_IDX = 1 # macro -mmRLC_RLCS_MP1_RLC_DOORBELL_CTRL = 0x4ee8 # macro -mmRLC_RLCS_MP1_RLC_DOORBELL_CTRL_BASE_IDX = 1 # macro -mmRLC_RLCS_BOOTLOAD_ID_STATUS1 = 0x4eec # macro -mmRLC_RLCS_BOOTLOAD_ID_STATUS1_BASE_IDX = 1 # macro -mmRLC_RLCS_BOOTLOAD_ID_STATUS2 = 0x4eed # macro -mmRLC_RLCS_BOOTLOAD_ID_STATUS2_BASE_IDX = 1 # macro -mmRLC_RLCS_SMUIO_VIDCHG_CTRL = 0x4eee # macro -mmRLC_RLCS_SMUIO_VIDCHG_CTRL_BASE_IDX = 1 # macro -mmRLC_RLCS_EDC_INT_CNTL = 0x4eef # macro -mmRLC_RLCS_EDC_INT_CNTL_BASE_IDX = 1 # macro -mmRLC_RLCS_KMD_LOG_CNTL1 = 0x4ef1 # macro -mmRLC_RLCS_KMD_LOG_CNTL1_BASE_IDX = 1 # macro -mmRLC_RLCS_KMD_LOG_CNTL2 = 0x4ef2 # macro -mmRLC_RLCS_KMD_LOG_CNTL2_BASE_IDX = 1 # macro -mmRLC_RLCS_GPM_LEGACY_INT_STAT = 0x4ef3 # macro -mmRLC_RLCS_GPM_LEGACY_INT_STAT_BASE_IDX = 1 # macro -mmRLC_RLCS_GPM_LEGACY_INT_DISABLE = 0x4ef4 # macro -mmRLC_RLCS_GPM_LEGACY_INT_DISABLE_BASE_IDX = 1 # macro -mmRLC_RLCS_SRM_SRCID_CNTL = 0x4efd # macro -mmRLC_RLCS_SRM_SRCID_CNTL_BASE_IDX = 1 # macro -mmRLC_RLCS_PERFMON_CLK_CNTL_UCODE = 0x4f03 # macro -mmRLC_RLCS_PERFMON_CLK_CNTL_UCODE_BASE_IDX = 1 # macro -mmRLC_RLCS_DEC_END = 0x4fff # macro -mmRLC_RLCS_DEC_END_BASE_IDX = 1 # macro -mmCGTS_RD_CTRL_REG = 0x5004 # macro -mmCGTS_RD_CTRL_REG_BASE_IDX = 1 # macro -mmCGTS_RD_REG = 0x5005 # macro -mmCGTS_RD_REG_BASE_IDX = 1 # macro -mmCGTS_TCC_DISABLE = 0x5006 # macro -mmCGTS_TCC_DISABLE_BASE_IDX = 1 # macro -mmCGTS_USER_TCC_DISABLE = 0x5007 # macro -mmCGTS_USER_TCC_DISABLE_BASE_IDX = 1 # macro -mmCGTS_STATUS_REG = 0x5008 # macro -mmCGTS_STATUS_REG_BASE_IDX = 1 # macro -mmCGTT_SPI_CGTSSM_CLK_CTRL = 0x5009 # macro -mmCGTT_SPI_CGTSSM_CLK_CTRL_BASE_IDX = 1 # macro -mmCGTT_SPI_PS_CLK_CTRL = 0x507d # macro -mmCGTT_SPI_PS_CLK_CTRL_BASE_IDX = 1 # macro -mmCGTT_SPIS_CLK_CTRL = 0x507e # macro -mmCGTT_SPIS_CLK_CTRL_BASE_IDX = 1 # macro -mmCGTT_SPI_CLK_CTRL = 0x5080 # macro -mmCGTT_SPI_CLK_CTRL_BASE_IDX = 1 # macro -mmCGTT_PC_CLK_CTRL = 0x5081 # macro -mmCGTT_PC_CLK_CTRL_BASE_IDX = 1 # macro -mmCGTT_BCI_CLK_CTRL = 0x5082 # macro -mmCGTT_BCI_CLK_CTRL_BASE_IDX = 1 # macro -mmCGTT_VGT_CLK_CTRL = 0x5084 # macro -mmCGTT_VGT_CLK_CTRL_BASE_IDX = 1 # macro -mmCGTT_IA_CLK_CTRL = 0x5085 # macro -mmCGTT_IA_CLK_CTRL_BASE_IDX = 1 # macro -mmCGTT_WD_CLK_CTRL = 0x5086 # macro -mmCGTT_WD_CLK_CTRL_BASE_IDX = 1 # macro -mmCGTT_GS_NGG_CLK_CTRL = 0x5087 # macro -mmCGTT_GS_NGG_CLK_CTRL_BASE_IDX = 1 # macro -mmCGTT_PA_CLK_CTRL = 0x5088 # macro -mmCGTT_PA_CLK_CTRL_BASE_IDX = 1 # macro -mmCGTT_SC_CLK_CTRL0 = 0x5089 # macro -mmCGTT_SC_CLK_CTRL0_BASE_IDX = 1 # macro -mmCGTT_SC_CLK_CTRL1 = 0x508a # macro -mmCGTT_SC_CLK_CTRL1_BASE_IDX = 1 # macro -mmCGTT_SC_CLK_CTRL2 = 0x508b # macro -mmCGTT_SC_CLK_CTRL2_BASE_IDX = 1 # macro -mmCGTT_SQ_CLK_CTRL = 0x508c # macro -mmCGTT_SQ_CLK_CTRL_BASE_IDX = 1 # macro -mmCGTT_SQG_CLK_CTRL = 0x508d # macro -mmCGTT_SQG_CLK_CTRL_BASE_IDX = 1 # macro -mmSQ_ALU_CLK_CTRL = 0x508e # macro -mmSQ_ALU_CLK_CTRL_BASE_IDX = 1 # macro -mmSQ_TEX_CLK_CTRL = 0x508f # macro -mmSQ_TEX_CLK_CTRL_BASE_IDX = 1 # macro -mmSQ_LDS_CLK_CTRL = 0x5090 # macro -mmSQ_LDS_CLK_CTRL_BASE_IDX = 1 # macro -mmCGTT_SX_CLK_CTRL0 = 0x5094 # macro -mmCGTT_SX_CLK_CTRL0_BASE_IDX = 1 # macro -mmCGTT_SX_CLK_CTRL1 = 0x5095 # macro -mmCGTT_SX_CLK_CTRL1_BASE_IDX = 1 # macro -mmCGTT_SX_CLK_CTRL2 = 0x5096 # macro -mmCGTT_SX_CLK_CTRL2_BASE_IDX = 1 # macro -mmCGTT_SX_CLK_CTRL3 = 0x5097 # macro -mmCGTT_SX_CLK_CTRL3_BASE_IDX = 1 # macro -mmCGTT_SX_CLK_CTRL4 = 0x5098 # macro -mmCGTT_SX_CLK_CTRL4_BASE_IDX = 1 # macro -mmTD_CGTT_CTRL = 0x509c # macro -mmTD_CGTT_CTRL_BASE_IDX = 1 # macro -mmTA_CGTT_CTRL = 0x509d # macro -mmTA_CGTT_CTRL_BASE_IDX = 1 # macro -mmCGTT_TCPI_CLK_CTRL = 0x5109 # macro -mmCGTT_TCPI_CLK_CTRL_BASE_IDX = 1 # macro -mmCGTT_GDS_CLK_CTRL = 0x50a0 # macro -mmCGTT_GDS_CLK_CTRL_BASE_IDX = 1 # macro -mmDB_CGTT_CLK_CTRL_0 = 0x50a4 # macro -mmDB_CGTT_CLK_CTRL_0_BASE_IDX = 1 # macro -mmCB_CGTT_SCLK_CTRL = 0x50a8 # macro -mmCB_CGTT_SCLK_CTRL_BASE_IDX = 1 # macro -mmGL2C_CGTT_SCLK_CTRL = 0x50fc # macro -mmGL2C_CGTT_SCLK_CTRL_BASE_IDX = 1 # macro -mmGL2A_CGTT_SCLK_CTRL = 0x50ac # macro -mmGL2A_CGTT_SCLK_CTRL_BASE_IDX = 1 # macro -mmGL2A_CGTT_SCLK_CTRL_1 = 0x50ad # macro -mmGL2A_CGTT_SCLK_CTRL_1_BASE_IDX = 1 # macro -mmCGTT_CP_CLK_CTRL = 0x50b0 # macro -mmCGTT_CP_CLK_CTRL_BASE_IDX = 1 # macro -mmCGTT_CPF_CLK_CTRL = 0x50b1 # macro -mmCGTT_CPF_CLK_CTRL_BASE_IDX = 1 # macro -mmCGTT_CPC_CLK_CTRL = 0x50b2 # macro -mmCGTT_CPC_CLK_CTRL_BASE_IDX = 1 # macro -mmCGTT_RLC_CLK_CTRL = 0x50b5 # macro -mmCGTT_RLC_CLK_CTRL_BASE_IDX = 1 # macro -mmRLC_GFX_RM_CNTL = 0x50b6 # macro -mmRLC_GFX_RM_CNTL_BASE_IDX = 1 # macro -mmRMI_CGTT_SCLK_CTRL = 0x50c0 # macro -mmRMI_CGTT_SCLK_CTRL_BASE_IDX = 1 # macro -mmCGTT_TCPF_CLK_CTRL = 0x5111 # macro -mmCGTT_TCPF_CLK_CTRL_BASE_IDX = 1 # macro -mmGCR_CGTT_SCLK_CTRL = 0x50c2 # macro -mmGCR_CGTT_SCLK_CTRL_BASE_IDX = 1 # macro -mmUTCL1_CGTT_CLK_CTRL = 0x50c3 # macro -mmUTCL1_CGTT_CLK_CTRL_BASE_IDX = 1 # macro -mmGCEA_CGTT_CLK_CTRL = 0x50c4 # macro -mmGCEA_CGTT_CLK_CTRL_BASE_IDX = 1 # macro -mmSE_CAC_CGTT_CLK_CTRL = 0x50d0 # macro -mmSE_CAC_CGTT_CLK_CTRL_BASE_IDX = 1 # macro -mmGC_CAC_CGTT_CLK_CTRL = 0x50d8 # macro -mmGC_CAC_CGTT_CLK_CTRL_BASE_IDX = 1 # macro -mmGRBM_CGTT_CLK_CNTL = 0x50e0 # macro -mmGRBM_CGTT_CLK_CNTL_BASE_IDX = 1 # macro -mmGUS_CGTT_CLK_CTRL = 0x50f4 # macro -mmGUS_CGTT_CLK_CTRL_BASE_IDX = 1 # macro -mmCGTT_PH_CLK_CTRL0 = 0x50f8 # macro -mmCGTT_PH_CLK_CTRL0_BASE_IDX = 1 # macro -mmCGTT_PH_CLK_CTRL1 = 0x50f9 # macro -mmCGTT_PH_CLK_CTRL1_BASE_IDX = 1 # macro -mmCGTT_PH_CLK_CTRL2 = 0x50fa # macro -mmCGTT_PH_CLK_CTRL2_BASE_IDX = 1 # macro -mmCGTT_PH_CLK_CTRL3 = 0x50fb # macro -mmCGTT_PH_CLK_CTRL3_BASE_IDX = 1 # macro -mmCP_HYP_PFP_UCODE_ADDR = 0x5814 # macro -mmCP_HYP_PFP_UCODE_ADDR_BASE_IDX = 1 # macro -mmCP_PFP_UCODE_ADDR = 0x5814 # macro -mmCP_PFP_UCODE_ADDR_BASE_IDX = 1 # macro -mmCP_HYP_PFP_UCODE_DATA = 0x5815 # macro -mmCP_HYP_PFP_UCODE_DATA_BASE_IDX = 1 # macro -mmCP_PFP_UCODE_DATA = 0x5815 # macro -mmCP_PFP_UCODE_DATA_BASE_IDX = 1 # macro -mmCP_HYP_ME_UCODE_ADDR = 0x5816 # macro -mmCP_HYP_ME_UCODE_ADDR_BASE_IDX = 1 # macro -mmCP_ME_RAM_RADDR = 0x5816 # macro -mmCP_ME_RAM_RADDR_BASE_IDX = 1 # macro -mmCP_ME_RAM_WADDR = 0x5816 # macro -mmCP_ME_RAM_WADDR_BASE_IDX = 1 # macro -mmCP_HYP_ME_UCODE_DATA = 0x5817 # macro -mmCP_HYP_ME_UCODE_DATA_BASE_IDX = 1 # macro -mmCP_ME_RAM_DATA = 0x5817 # macro -mmCP_ME_RAM_DATA_BASE_IDX = 1 # macro -mmCP_CE_UCODE_ADDR = 0x5818 # macro -mmCP_CE_UCODE_ADDR_BASE_IDX = 1 # macro -mmCP_HYP_CE_UCODE_ADDR = 0x5818 # macro -mmCP_HYP_CE_UCODE_ADDR_BASE_IDX = 1 # macro -mmCP_CE_UCODE_DATA = 0x5819 # macro -mmCP_CE_UCODE_DATA_BASE_IDX = 1 # macro -mmCP_HYP_CE_UCODE_DATA = 0x5819 # macro -mmCP_HYP_CE_UCODE_DATA_BASE_IDX = 1 # macro -mmCP_HYP_MEC1_UCODE_ADDR = 0x581a # macro -mmCP_HYP_MEC1_UCODE_ADDR_BASE_IDX = 1 # macro -mmCP_MEC_ME1_UCODE_ADDR = 0x581a # macro -mmCP_MEC_ME1_UCODE_ADDR_BASE_IDX = 1 # macro -mmCP_HYP_MEC1_UCODE_DATA = 0x581b # macro -mmCP_HYP_MEC1_UCODE_DATA_BASE_IDX = 1 # macro -mmCP_MEC_ME1_UCODE_DATA = 0x581b # macro -mmCP_MEC_ME1_UCODE_DATA_BASE_IDX = 1 # macro -mmCP_HYP_MEC2_UCODE_ADDR = 0x581c # macro -mmCP_HYP_MEC2_UCODE_ADDR_BASE_IDX = 1 # macro -mmCP_MEC_ME2_UCODE_ADDR = 0x581c # macro -mmCP_MEC_ME2_UCODE_ADDR_BASE_IDX = 1 # macro -mmCP_HYP_MEC2_UCODE_DATA = 0x581d # macro -mmCP_HYP_MEC2_UCODE_DATA_BASE_IDX = 1 # macro -mmCP_MEC_ME2_UCODE_DATA = 0x581d # macro -mmCP_MEC_ME2_UCODE_DATA_BASE_IDX = 1 # macro -mmCP_PFP_IC_BASE_LO = 0x5840 # macro -mmCP_PFP_IC_BASE_LO_BASE_IDX = 1 # macro -mmCP_PFP_IC_BASE_HI = 0x5841 # macro -mmCP_PFP_IC_BASE_HI_BASE_IDX = 1 # macro -mmCP_PFP_IC_BASE_CNTL = 0x5842 # macro -mmCP_PFP_IC_BASE_CNTL_BASE_IDX = 1 # macro -mmCP_PFP_IC_OP_CNTL = 0x5843 # macro -mmCP_PFP_IC_OP_CNTL_BASE_IDX = 1 # macro -mmCP_ME_IC_BASE_LO = 0x5844 # macro -mmCP_ME_IC_BASE_LO_BASE_IDX = 1 # macro -mmCP_ME_IC_BASE_HI = 0x5845 # macro -mmCP_ME_IC_BASE_HI_BASE_IDX = 1 # macro -mmCP_ME_IC_BASE_CNTL = 0x5846 # macro -mmCP_ME_IC_BASE_CNTL_BASE_IDX = 1 # macro -mmCP_ME_IC_OP_CNTL = 0x5847 # macro -mmCP_ME_IC_OP_CNTL_BASE_IDX = 1 # macro -mmCP_CE_IC_BASE_LO = 0x5848 # macro -mmCP_CE_IC_BASE_LO_BASE_IDX = 1 # macro -mmCP_CE_IC_BASE_HI = 0x5849 # macro -mmCP_CE_IC_BASE_HI_BASE_IDX = 1 # macro -mmCP_CE_IC_BASE_CNTL = 0x584a # macro -mmCP_CE_IC_BASE_CNTL_BASE_IDX = 1 # macro -mmCP_CE_IC_OP_CNTL = 0x584b # macro -mmCP_CE_IC_OP_CNTL_BASE_IDX = 1 # macro -mmCP_CPC_IC_BASE_LO = 0x584c # macro -mmCP_CPC_IC_BASE_LO_BASE_IDX = 1 # macro -mmCP_CPC_IC_BASE_HI = 0x584d # macro -mmCP_CPC_IC_BASE_HI_BASE_IDX = 1 # macro -mmCP_CPC_IC_BASE_CNTL = 0x584e # macro -mmCP_CPC_IC_BASE_CNTL_BASE_IDX = 1 # macro -mmCP_CPC_IC_OP_CNTL = 0x584f # macro -mmCP_CPC_IC_OP_CNTL_BASE_IDX = 1 # macro -mmCP_MES_IC_BASE_LO = 0x5850 # macro -mmCP_MES_IC_BASE_LO_BASE_IDX = 1 # macro -mmCP_MES_MIBASE_LO = 0x5850 # macro -mmCP_MES_MIBASE_LO_BASE_IDX = 1 # macro -mmCP_MES_IC_BASE_HI = 0x5851 # macro -mmCP_MES_IC_BASE_HI_BASE_IDX = 1 # macro -mmCP_MES_MIBASE_HI = 0x5851 # macro -mmCP_MES_MIBASE_HI_BASE_IDX = 1 # macro -mmCP_MES_IC_BASE_CNTL = 0x5852 # macro -mmCP_MES_IC_BASE_CNTL_BASE_IDX = 1 # macro -mmCP_MES_DC_BASE_LO = 0x5854 # macro -mmCP_MES_DC_BASE_LO_BASE_IDX = 1 # macro -mmCP_MES_MDBASE_LO = 0x5854 # macro -mmCP_MES_MDBASE_LO_BASE_IDX = 1 # macro -mmCP_MES_DC_BASE_HI = 0x5855 # macro -mmCP_MES_DC_BASE_HI_BASE_IDX = 1 # macro -mmCP_MES_MDBASE_HI = 0x5855 # macro -mmCP_MES_MDBASE_HI_BASE_IDX = 1 # macro -mmCP_MES_LOCAL_BASE0_LO = 0x5856 # macro -mmCP_MES_LOCAL_BASE0_LO_BASE_IDX = 1 # macro -mmCP_MES_LOCAL_BASE0_HI = 0x5857 # macro -mmCP_MES_LOCAL_BASE0_HI_BASE_IDX = 1 # macro -mmCP_MES_LOCAL_MASK0_LO = 0x5858 # macro -mmCP_MES_LOCAL_MASK0_LO_BASE_IDX = 1 # macro -mmCP_MES_LOCAL_MASK0_HI = 0x5859 # macro -mmCP_MES_LOCAL_MASK0_HI_BASE_IDX = 1 # macro -mmCP_MES_LOCAL_APERTURE = 0x585a # macro -mmCP_MES_LOCAL_APERTURE_BASE_IDX = 1 # macro -mmCP_MES_MIBOUND_LO = 0x585b # macro -mmCP_MES_MIBOUND_LO_BASE_IDX = 1 # macro -mmCP_MES_MIBOUND_HI = 0x585c # macro -mmCP_MES_MIBOUND_HI_BASE_IDX = 1 # macro -mmCP_MES_MDBOUND_LO = 0x585d # macro -mmCP_MES_MDBOUND_LO_BASE_IDX = 1 # macro -mmCP_MES_MDBOUND_HI = 0x585e # macro -mmCP_MES_MDBOUND_HI_BASE_IDX = 1 # macro -mmGFX_PIPE_PRIORITY = 0x587f # macro -mmGFX_PIPE_PRIORITY_BASE_IDX = 1 # macro -mmGRBM_GFX_INDEX_SR_SELECT = 0x5a00 # macro -mmGRBM_GFX_INDEX_SR_SELECT_BASE_IDX = 1 # macro -mmGRBM_GFX_INDEX_SR_DATA = 0x5a01 # macro -mmGRBM_GFX_INDEX_SR_DATA_BASE_IDX = 1 # macro -mmGRBM_GFX_CNTL_SR_SELECT = 0x5a02 # macro -mmGRBM_GFX_CNTL_SR_SELECT_BASE_IDX = 1 # macro -mmGRBM_GFX_CNTL_SR_DATA = 0x5a03 # macro -mmGRBM_GFX_CNTL_SR_DATA_BASE_IDX = 1 # macro -mmGRBM_CAM_INDEX = 0x5a04 # macro -mmGRBM_CAM_INDEX_BASE_IDX = 1 # macro -mmGRBM_HYP_CAM_INDEX = 0x5a04 # macro -mmGRBM_HYP_CAM_INDEX_BASE_IDX = 1 # macro -mmGRBM_CAM_DATA = 0x5a05 # macro -mmGRBM_CAM_DATA_BASE_IDX = 1 # macro -mmGRBM_HYP_CAM_DATA = 0x5a05 # macro -mmGRBM_HYP_CAM_DATA_BASE_IDX = 1 # macro -mmGRBM_CAM_DATA_UPPER = 0x5a06 # macro -mmGRBM_CAM_DATA_UPPER_BASE_IDX = 1 # macro -mmGRBM_HYP_CAM_DATA_UPPER = 0x5a06 # macro -mmGRBM_HYP_CAM_DATA_UPPER_BASE_IDX = 1 # macro -mmGC_IH_COOKIE_0_PTR = 0x5a07 # macro -mmGC_IH_COOKIE_0_PTR_BASE_IDX = 1 # macro -mmGRBM_SE_REMAP_CNTL = 0x5a08 # macro -mmGRBM_SE_REMAP_CNTL_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_VF_ENABLE = 0x5b00 # macro -mmRLC_GPU_IOV_VF_ENABLE_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_CFG_REG6 = 0x5b06 # macro -mmRLC_GPU_IOV_CFG_REG6_BASE_IDX = 1 # macro -mmRLC_SDMA0_STATUS = 0x5b12 # macro -mmRLC_SDMA0_STATUS_BASE_IDX = 1 # macro -mmRLC_SDMA1_STATUS = 0x5b13 # macro -mmRLC_SDMA1_STATUS_BASE_IDX = 1 # macro -mmRLC_SDMA2_STATUS = 0x5b14 # macro -mmRLC_SDMA2_STATUS_BASE_IDX = 1 # macro -mmRLC_SDMA3_STATUS = 0x5b15 # macro -mmRLC_SDMA3_STATUS_BASE_IDX = 1 # macro -mmRLC_SDMA0_BUSY_STATUS = 0x5b16 # macro -mmRLC_SDMA0_BUSY_STATUS_BASE_IDX = 1 # macro -mmRLC_SDMA1_BUSY_STATUS = 0x5b17 # macro -mmRLC_SDMA1_BUSY_STATUS_BASE_IDX = 1 # macro -mmRLC_SDMA2_BUSY_STATUS = 0x5b18 # macro -mmRLC_SDMA2_BUSY_STATUS_BASE_IDX = 1 # macro -mmRLC_SDMA3_BUSY_STATUS = 0x5b19 # macro -mmRLC_SDMA3_BUSY_STATUS_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_CFG_REG8 = 0x5b20 # macro -mmRLC_GPU_IOV_CFG_REG8_BASE_IDX = 1 # macro -mmRLC_RLCV_TIMER_INT_0 = 0x5b25 # macro -mmRLC_RLCV_TIMER_INT_0_BASE_IDX = 1 # macro -mmRLC_RLCV_TIMER_CTRL = 0x5b26 # macro -mmRLC_RLCV_TIMER_CTRL_BASE_IDX = 1 # macro -mmRLC_RLCV_TIMER_STAT = 0x5b27 # macro -mmRLC_RLCV_TIMER_STAT_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_VF_DOORBELL_STATUS = 0x5b2a # macro -mmRLC_GPU_IOV_VF_DOORBELL_STATUS_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_VF_DOORBELL_STATUS_SET = 0x5b2b # macro -mmRLC_GPU_IOV_VF_DOORBELL_STATUS_SET_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_VF_DOORBELL_STATUS_CLR = 0x5b2c # macro -mmRLC_GPU_IOV_VF_DOORBELL_STATUS_CLR_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_VF_MASK = 0x5b2d # macro -mmRLC_GPU_IOV_VF_MASK_BASE_IDX = 1 # macro -mmRLC_HYP_SEMAPHORE_0 = 0x5b2e # macro -mmRLC_HYP_SEMAPHORE_0_BASE_IDX = 1 # macro -mmRLC_HYP_SEMAPHORE_1 = 0x5b2f # macro -mmRLC_HYP_SEMAPHORE_1_BASE_IDX = 1 # macro -mmRLC_BUSY_CLK_CNTL = 0x5b30 # macro -mmRLC_BUSY_CLK_CNTL_BASE_IDX = 1 # macro -mmRLC_CLK_CNTL = 0x5b31 # macro -mmRLC_CLK_CNTL_BASE_IDX = 1 # macro -mmRLC_PACE_TIMER_STAT = 0x5b33 # macro -mmRLC_PACE_TIMER_STAT_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SCH_BLOCK = 0x5b34 # macro -mmRLC_GPU_IOV_SCH_BLOCK_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_CFG_REG1 = 0x5b35 # macro -mmRLC_GPU_IOV_CFG_REG1_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_CFG_REG2 = 0x5b36 # macro -mmRLC_GPU_IOV_CFG_REG2_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_VM_BUSY_STATUS = 0x5b37 # macro -mmRLC_GPU_IOV_VM_BUSY_STATUS_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SCH_0 = 0x5b38 # macro -mmRLC_GPU_IOV_SCH_0_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_ACTIVE_FCN_ID = 0x5b39 # macro -mmRLC_GPU_IOV_ACTIVE_FCN_ID_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SCH_3 = 0x5b3a # macro -mmRLC_GPU_IOV_SCH_3_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SCH_1 = 0x5b3b # macro -mmRLC_GPU_IOV_SCH_1_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SCH_2 = 0x5b3c # macro -mmRLC_GPU_IOV_SCH_2_BASE_IDX = 1 # macro -mmRLC_PACE_INT_FORCE = 0x5b3d # macro -mmRLC_PACE_INT_FORCE_BASE_IDX = 1 # macro -mmRLC_PACE_INT_CLEAR = 0x5b3e # macro -mmRLC_PACE_INT_CLEAR_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_INT_STAT = 0x5b3f # macro -mmRLC_GPU_IOV_INT_STAT_BASE_IDX = 1 # macro -mmRLC_RLCV_TIMER_INT_1 = 0x5b40 # macro -mmRLC_RLCV_TIMER_INT_1_BASE_IDX = 1 # macro -mmRLC_IH_COOKIE = 0x5b41 # macro -mmRLC_IH_COOKIE_BASE_IDX = 1 # macro -mmRLC_IH_COOKIE_CNTL = 0x5b42 # macro -mmRLC_IH_COOKIE_CNTL_BASE_IDX = 1 # macro -mmRLC_HYP_RLCG_UCODE_CHKSUM = 0x5b43 # macro -mmRLC_HYP_RLCG_UCODE_CHKSUM_BASE_IDX = 1 # macro -mmRLC_HYP_RLCP_UCODE_CHKSUM = 0x5b44 # macro -mmRLC_HYP_RLCP_UCODE_CHKSUM_BASE_IDX = 1 # macro -mmRLC_HYP_RLCV_UCODE_CHKSUM = 0x5b45 # macro -mmRLC_HYP_RLCV_UCODE_CHKSUM_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_F32_CNTL = 0x5b46 # macro -mmRLC_GPU_IOV_F32_CNTL_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_F32_RESET = 0x5b47 # macro -mmRLC_GPU_IOV_F32_RESET_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SMU_RESPONSE = 0x5b4a # macro -mmRLC_GPU_IOV_SMU_RESPONSE_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_VIRT_RESET_REQ = 0x5b4c # macro -mmRLC_GPU_IOV_VIRT_RESET_REQ_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_RLC_RESPONSE = 0x5b4d # macro -mmRLC_GPU_IOV_RLC_RESPONSE_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_INT_DISABLE = 0x5b4e # macro -mmRLC_GPU_IOV_INT_DISABLE_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_INT_FORCE = 0x5b4f # macro -mmRLC_GPU_IOV_INT_FORCE_BASE_IDX = 1 # macro -mmRLC_HYP_SEMAPHORE_2 = 0x5b52 # macro -mmRLC_HYP_SEMAPHORE_2_BASE_IDX = 1 # macro -mmRLC_HYP_SEMAPHORE_3 = 0x5b53 # macro -mmRLC_HYP_SEMAPHORE_3_BASE_IDX = 1 # macro -mmRLC_HYP_RESET_VECTOR = 0x5b54 # macro -mmRLC_HYP_RESET_VECTOR_BASE_IDX = 1 # macro -mmRLC_HYP_BOOTLOAD_SIZE = 0x5b5c # macro -mmRLC_HYP_BOOTLOAD_SIZE_BASE_IDX = 1 # macro -mmRLC_HYP_BOOTLOAD_ADDR_LO = 0x5b5d # macro -mmRLC_HYP_BOOTLOAD_ADDR_LO_BASE_IDX = 1 # macro -mmRLC_HYP_BOOTLOAD_ADDR_HI = 0x5b5e # macro -mmRLC_HYP_BOOTLOAD_ADDR_HI_BASE_IDX = 1 # macro -mmRLC_GPM_IRAM_ADDR = 0x5b5f # macro -mmRLC_GPM_IRAM_ADDR_BASE_IDX = 1 # macro -mmRLC_GPM_IRAM_DATA = 0x5b60 # macro -mmRLC_GPM_IRAM_DATA_BASE_IDX = 1 # macro -mmRLC_GPM_UCODE_ADDR = 0x5b61 # macro -mmRLC_GPM_UCODE_ADDR_BASE_IDX = 1 # macro -mmRLC_GPM_UCODE_DATA = 0x5b62 # macro -mmRLC_GPM_UCODE_DATA_BASE_IDX = 1 # macro -mmRLC_PACE_UCODE_ADDR = 0x5b63 # macro -mmRLC_PACE_UCODE_ADDR_BASE_IDX = 1 # macro -mmRLC_PACE_UCODE_DATA = 0x5b64 # macro -mmRLC_PACE_UCODE_DATA_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_UCODE_ADDR = 0x5b65 # macro -mmRLC_GPU_IOV_UCODE_ADDR_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_UCODE_DATA = 0x5b66 # macro -mmRLC_GPU_IOV_UCODE_DATA_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SCRATCH_ADDR = 0x5b67 # macro -mmRLC_GPU_IOV_SCRATCH_ADDR_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SCRATCH_DATA = 0x5b68 # macro -mmRLC_GPU_IOV_SCRATCH_DATA_BASE_IDX = 1 # macro -mmRLC_RLCV_IRAM_ADDR = 0x5b69 # macro -mmRLC_RLCV_IRAM_ADDR_BASE_IDX = 1 # macro -mmRLC_RLCV_IRAM_DATA = 0x5b6a # macro -mmRLC_RLCV_IRAM_DATA_BASE_IDX = 1 # macro -mmRLC_RLCP_IRAM_ADDR = 0x5b6b # macro -mmRLC_RLCP_IRAM_ADDR_BASE_IDX = 1 # macro -mmRLC_RLCP_IRAM_DATA = 0x5b6c # macro -mmRLC_RLCP_IRAM_DATA_BASE_IDX = 1 # macro -mmRLC_SRM_DRAM_ADDR = 0x5b71 # macro -mmRLC_SRM_DRAM_ADDR_BASE_IDX = 1 # macro -mmRLC_SRM_DRAM_DATA = 0x5b72 # macro -mmRLC_SRM_DRAM_DATA_BASE_IDX = 1 # macro -mmRLC_SRM_ARAM_ADDR = 0x5b73 # macro -mmRLC_SRM_ARAM_ADDR_BASE_IDX = 1 # macro -mmRLC_SRM_ARAM_DATA = 0x5b74 # macro -mmRLC_SRM_ARAM_DATA_BASE_IDX = 1 # macro -mmRLC_GPM_SCRATCH_ADDR = 0x5b75 # macro -mmRLC_GPM_SCRATCH_ADDR_BASE_IDX = 1 # macro -mmRLC_GPM_SCRATCH_DATA = 0x5b76 # macro -mmRLC_GPM_SCRATCH_DATA_BASE_IDX = 1 # macro -mmRLC_GTS_OFFSET_LSB = 0x5b79 # macro -mmRLC_GTS_OFFSET_LSB_BASE_IDX = 1 # macro -mmRLC_GTS_OFFSET_MSB = 0x5b7a # macro -mmRLC_GTS_OFFSET_MSB_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SDMA0_STATUS = 0x5bc0 # macro -mmRLC_GPU_IOV_SDMA0_STATUS_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SDMA1_STATUS = 0x5bc1 # macro -mmRLC_GPU_IOV_SDMA1_STATUS_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SDMA2_STATUS = 0x5bc2 # macro -mmRLC_GPU_IOV_SDMA2_STATUS_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SDMA3_STATUS = 0x5bc3 # macro -mmRLC_GPU_IOV_SDMA3_STATUS_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SDMA4_STATUS = 0x5bc4 # macro -mmRLC_GPU_IOV_SDMA4_STATUS_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SDMA5_STATUS = 0x5bc5 # macro -mmRLC_GPU_IOV_SDMA5_STATUS_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SDMA6_STATUS = 0x5bc6 # macro -mmRLC_GPU_IOV_SDMA6_STATUS_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SDMA7_STATUS = 0x5bc7 # macro -mmRLC_GPU_IOV_SDMA7_STATUS_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SDMA0_BUSY_STATUS = 0x5bc8 # macro -mmRLC_GPU_IOV_SDMA0_BUSY_STATUS_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SDMA1_BUSY_STATUS = 0x5bc9 # macro -mmRLC_GPU_IOV_SDMA1_BUSY_STATUS_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SDMA2_BUSY_STATUS = 0x5bca # macro -mmRLC_GPU_IOV_SDMA2_BUSY_STATUS_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SDMA3_BUSY_STATUS = 0x5bcb # macro -mmRLC_GPU_IOV_SDMA3_BUSY_STATUS_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SDMA4_BUSY_STATUS = 0x5bcc # macro -mmRLC_GPU_IOV_SDMA4_BUSY_STATUS_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SDMA5_BUSY_STATUS = 0x5bcd # macro -mmRLC_GPU_IOV_SDMA5_BUSY_STATUS_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SDMA6_BUSY_STATUS = 0x5bce # macro -mmRLC_GPU_IOV_SDMA6_BUSY_STATUS_BASE_IDX = 1 # macro -mmRLC_GPU_IOV_SDMA7_BUSY_STATUS = 0x5bcf # macro -mmRLC_GPU_IOV_SDMA7_BUSY_STATUS_BASE_IDX = 1 # macro -mmSDMA0_UCODE_ADDR = 0x5880 # macro -mmSDMA0_UCODE_ADDR_BASE_IDX = 1 # macro -mmSDMA0_UCODE_DATA = 0x5881 # macro -mmSDMA0_UCODE_DATA_BASE_IDX = 1 # macro -mmSDMA0_VM_CTX_LO = 0x5882 # macro -mmSDMA0_VM_CTX_LO_BASE_IDX = 1 # macro -mmSDMA0_VM_CTX_HI = 0x5883 # macro -mmSDMA0_VM_CTX_HI_BASE_IDX = 1 # macro -mmSDMA0_ACTIVE_FCN_ID = 0x5884 # macro -mmSDMA0_ACTIVE_FCN_ID_BASE_IDX = 1 # macro -mmSDMA0_VM_CTX_CNTL = 0x5885 # macro -mmSDMA0_VM_CTX_CNTL_BASE_IDX = 1 # macro -mmSDMA0_VIRT_RESET_REQ = 0x5886 # macro -mmSDMA0_VIRT_RESET_REQ_BASE_IDX = 1 # macro -mmSDMA0_VF_ENABLE = 0x5887 # macro -mmSDMA0_VF_ENABLE_BASE_IDX = 1 # macro -mmSDMA0_CONTEXT_REG_TYPE0 = 0x5888 # macro -mmSDMA0_CONTEXT_REG_TYPE0_BASE_IDX = 1 # macro -mmSDMA0_CONTEXT_REG_TYPE1 = 0x5889 # macro -mmSDMA0_CONTEXT_REG_TYPE1_BASE_IDX = 1 # macro -mmSDMA0_CONTEXT_REG_TYPE2 = 0x588a # macro -mmSDMA0_CONTEXT_REG_TYPE2_BASE_IDX = 1 # macro -mmSDMA0_CONTEXT_REG_TYPE3 = 0x588b # macro -mmSDMA0_CONTEXT_REG_TYPE3_BASE_IDX = 1 # macro -mmSDMA0_PUB_REG_TYPE0 = 0x588c # macro -mmSDMA0_PUB_REG_TYPE0_BASE_IDX = 1 # macro -mmSDMA0_PUB_REG_TYPE1 = 0x588d # macro -mmSDMA0_PUB_REG_TYPE1_BASE_IDX = 1 # macro -mmSDMA0_PUB_REG_TYPE2 = 0x588e # macro -mmSDMA0_PUB_REG_TYPE2_BASE_IDX = 1 # macro -mmSDMA0_PUB_REG_TYPE3 = 0x588f # macro -mmSDMA0_PUB_REG_TYPE3_BASE_IDX = 1 # macro -mmSDMA0_VM_CNTL = 0x5893 # macro -mmSDMA0_VM_CNTL_BASE_IDX = 1 # macro -mmSDMA0_BROADCAST_UCODE_ADDR = 0x589c # macro -mmSDMA0_BROADCAST_UCODE_ADDR_BASE_IDX = 1 # macro -mmSDMA0_BROADCAST_UCODE_DATA = 0x589d # macro -mmSDMA0_BROADCAST_UCODE_DATA_BASE_IDX = 1 # macro -mmSDMA1_UCODE_ADDR = 0x58a0 # macro -mmSDMA1_UCODE_ADDR_BASE_IDX = 1 # macro -mmSDMA1_UCODE_DATA = 0x58a1 # macro -mmSDMA1_UCODE_DATA_BASE_IDX = 1 # macro -mmSDMA1_VM_CTX_LO = 0x58a2 # macro -mmSDMA1_VM_CTX_LO_BASE_IDX = 1 # macro -mmSDMA1_VM_CTX_HI = 0x58a3 # macro -mmSDMA1_VM_CTX_HI_BASE_IDX = 1 # macro -mmSDMA1_ACTIVE_FCN_ID = 0x58a4 # macro -mmSDMA1_ACTIVE_FCN_ID_BASE_IDX = 1 # macro -mmSDMA1_VM_CTX_CNTL = 0x58a5 # macro -mmSDMA1_VM_CTX_CNTL_BASE_IDX = 1 # macro -mmSDMA1_VIRT_RESET_REQ = 0x58a6 # macro -mmSDMA1_VIRT_RESET_REQ_BASE_IDX = 1 # macro -mmSDMA1_VF_ENABLE = 0x58a7 # macro -mmSDMA1_VF_ENABLE_BASE_IDX = 1 # macro -mmSDMA1_CONTEXT_REG_TYPE0 = 0x58a8 # macro -mmSDMA1_CONTEXT_REG_TYPE0_BASE_IDX = 1 # macro -mmSDMA1_CONTEXT_REG_TYPE1 = 0x58a9 # macro -mmSDMA1_CONTEXT_REG_TYPE1_BASE_IDX = 1 # macro -mmSDMA1_CONTEXT_REG_TYPE2 = 0x58aa # macro -mmSDMA1_CONTEXT_REG_TYPE2_BASE_IDX = 1 # macro -mmSDMA1_CONTEXT_REG_TYPE3 = 0x58ab # macro -mmSDMA1_CONTEXT_REG_TYPE3_BASE_IDX = 1 # macro -mmSDMA1_PUB_REG_TYPE0 = 0x58ac # macro -mmSDMA1_PUB_REG_TYPE0_BASE_IDX = 1 # macro -mmSDMA1_PUB_REG_TYPE1 = 0x58ad # macro -mmSDMA1_PUB_REG_TYPE1_BASE_IDX = 1 # macro -mmSDMA1_PUB_REG_TYPE2 = 0x58ae # macro -mmSDMA1_PUB_REG_TYPE2_BASE_IDX = 1 # macro -mmSDMA1_PUB_REG_TYPE3 = 0x58af # macro -mmSDMA1_PUB_REG_TYPE3_BASE_IDX = 1 # macro -mmSDMA1_VM_CNTL = 0x58b3 # macro -mmSDMA1_VM_CNTL_BASE_IDX = 1 # macro -mmSDMA2_UCODE_ADDR = 0x58c0 # macro -mmSDMA2_UCODE_ADDR_BASE_IDX = 1 # macro -mmSDMA2_UCODE_DATA = 0x58c1 # macro -mmSDMA2_UCODE_DATA_BASE_IDX = 1 # macro -mmSDMA2_VM_CTX_LO = 0x58c2 # macro -mmSDMA2_VM_CTX_LO_BASE_IDX = 1 # macro -mmSDMA2_VM_CTX_HI = 0x58c3 # macro -mmSDMA2_VM_CTX_HI_BASE_IDX = 1 # macro -mmSDMA2_ACTIVE_FCN_ID = 0x58c4 # macro -mmSDMA2_ACTIVE_FCN_ID_BASE_IDX = 1 # macro -mmSDMA2_VM_CTX_CNTL = 0x58c5 # macro -mmSDMA2_VM_CTX_CNTL_BASE_IDX = 1 # macro -mmSDMA2_VIRT_RESET_REQ = 0x58c6 # macro -mmSDMA2_VIRT_RESET_REQ_BASE_IDX = 1 # macro -mmSDMA2_VF_ENABLE = 0x58c7 # macro -mmSDMA2_VF_ENABLE_BASE_IDX = 1 # macro -mmSDMA2_CONTEXT_REG_TYPE0 = 0x58c8 # macro -mmSDMA2_CONTEXT_REG_TYPE0_BASE_IDX = 1 # macro -mmSDMA2_CONTEXT_REG_TYPE1 = 0x58c9 # macro -mmSDMA2_CONTEXT_REG_TYPE1_BASE_IDX = 1 # macro -mmSDMA2_CONTEXT_REG_TYPE2 = 0x58ca # macro -mmSDMA2_CONTEXT_REG_TYPE2_BASE_IDX = 1 # macro -mmSDMA2_CONTEXT_REG_TYPE3 = 0x58cb # macro -mmSDMA2_CONTEXT_REG_TYPE3_BASE_IDX = 1 # macro -mmSDMA2_PUB_REG_TYPE0 = 0x58cc # macro -mmSDMA2_PUB_REG_TYPE0_BASE_IDX = 1 # macro -mmSDMA2_PUB_REG_TYPE1 = 0x58cd # macro -mmSDMA2_PUB_REG_TYPE1_BASE_IDX = 1 # macro -mmSDMA2_PUB_REG_TYPE2 = 0x58ce # macro -mmSDMA2_PUB_REG_TYPE2_BASE_IDX = 1 # macro -mmSDMA2_PUB_REG_TYPE3 = 0x58cf # macro -mmSDMA2_PUB_REG_TYPE3_BASE_IDX = 1 # macro -mmSDMA2_VM_CNTL = 0x58d3 # macro -mmSDMA2_VM_CNTL_BASE_IDX = 1 # macro -mmSDMA3_UCODE_ADDR = 0x58e0 # macro -mmSDMA3_UCODE_ADDR_BASE_IDX = 1 # macro -mmSDMA3_UCODE_DATA = 0x58e1 # macro -mmSDMA3_UCODE_DATA_BASE_IDX = 1 # macro -mmSDMA3_VM_CTX_LO = 0x58e2 # macro -mmSDMA3_VM_CTX_LO_BASE_IDX = 1 # macro -mmSDMA3_VM_CTX_HI = 0x58e3 # macro -mmSDMA3_VM_CTX_HI_BASE_IDX = 1 # macro -mmSDMA3_ACTIVE_FCN_ID = 0x58e4 # macro -mmSDMA3_ACTIVE_FCN_ID_BASE_IDX = 1 # macro -mmSDMA3_VM_CTX_CNTL = 0x58e5 # macro -mmSDMA3_VM_CTX_CNTL_BASE_IDX = 1 # macro -mmSDMA3_VIRT_RESET_REQ = 0x58e6 # macro -mmSDMA3_VIRT_RESET_REQ_BASE_IDX = 1 # macro -mmSDMA3_VF_ENABLE = 0x58e7 # macro -mmSDMA3_VF_ENABLE_BASE_IDX = 1 # macro -mmSDMA3_CONTEXT_REG_TYPE0 = 0x58e8 # macro -mmSDMA3_CONTEXT_REG_TYPE0_BASE_IDX = 1 # macro -mmSDMA3_CONTEXT_REG_TYPE1 = 0x58e9 # macro -mmSDMA3_CONTEXT_REG_TYPE1_BASE_IDX = 1 # macro -mmSDMA3_CONTEXT_REG_TYPE2 = 0x58ea # macro -mmSDMA3_CONTEXT_REG_TYPE2_BASE_IDX = 1 # macro -mmSDMA3_CONTEXT_REG_TYPE3 = 0x58eb # macro -mmSDMA3_CONTEXT_REG_TYPE3_BASE_IDX = 1 # macro -mmSDMA3_PUB_REG_TYPE0 = 0x58ec # macro -mmSDMA3_PUB_REG_TYPE0_BASE_IDX = 1 # macro -mmSDMA3_PUB_REG_TYPE1 = 0x58ed # macro -mmSDMA3_PUB_REG_TYPE1_BASE_IDX = 1 # macro -mmSDMA3_PUB_REG_TYPE2 = 0x58ee # macro -mmSDMA3_PUB_REG_TYPE2_BASE_IDX = 1 # macro -mmSDMA3_PUB_REG_TYPE3 = 0x58ef # macro -mmSDMA3_PUB_REG_TYPE3_BASE_IDX = 1 # macro -mmSDMA3_VM_CNTL = 0x58f3 # macro -mmSDMA3_VM_CNTL_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF0 = 0x5a80 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF0_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF1 = 0x5a81 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF1_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF2 = 0x5a82 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF2_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF3 = 0x5a83 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF3_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF4 = 0x5a84 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF4_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF5 = 0x5a85 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF5_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF6 = 0x5a86 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF6_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF7 = 0x5a87 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF7_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF8 = 0x5a88 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF8_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF9 = 0x5a89 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF9_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF10 = 0x5a8a # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF10_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF11 = 0x5a8b # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF11_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF12 = 0x5a8c # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF12_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF13 = 0x5a8d # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF13_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF14 = 0x5a8e # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF14_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF15 = 0x5a8f # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF15_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF16 = 0x5a90 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF16_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF17 = 0x5a91 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF17_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF18 = 0x5a92 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF18_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF19 = 0x5a93 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF19_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF20 = 0x5a94 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF20_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF21 = 0x5a95 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF21_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF22 = 0x5a96 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF22_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF23 = 0x5a97 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF23_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF24 = 0x5a98 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF24_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF25 = 0x5a99 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF25_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF26 = 0x5a9a # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF26_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF27 = 0x5a9b # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF27_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF28 = 0x5a9c # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF28_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF29 = 0x5a9d # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF29_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF30 = 0x5a9e # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF30_BASE_IDX = 1 # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF31 = 0x5a9f # macro -mmGCMC_VM_FB_SIZE_OFFSET_VF31_BASE_IDX = 1 # macro -mmGCVM_IOMMU_MMIO_CNTRL_1 = 0x5aa0 # macro -mmGCVM_IOMMU_MMIO_CNTRL_1_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_BASE_LO_0 = 0x5aa1 # macro -mmGCMC_VM_MARC_BASE_LO_0_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_BASE_LO_1 = 0x5aa2 # macro -mmGCMC_VM_MARC_BASE_LO_1_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_BASE_LO_2 = 0x5aa3 # macro -mmGCMC_VM_MARC_BASE_LO_2_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_BASE_LO_3 = 0x5aa4 # macro -mmGCMC_VM_MARC_BASE_LO_3_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_BASE_HI_0 = 0x5aa5 # macro -mmGCMC_VM_MARC_BASE_HI_0_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_BASE_HI_1 = 0x5aa6 # macro -mmGCMC_VM_MARC_BASE_HI_1_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_BASE_HI_2 = 0x5aa7 # macro -mmGCMC_VM_MARC_BASE_HI_2_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_BASE_HI_3 = 0x5aa8 # macro -mmGCMC_VM_MARC_BASE_HI_3_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_RELOC_LO_0 = 0x5aa9 # macro -mmGCMC_VM_MARC_RELOC_LO_0_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_RELOC_LO_1 = 0x5aaa # macro -mmGCMC_VM_MARC_RELOC_LO_1_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_RELOC_LO_2 = 0x5aab # macro -mmGCMC_VM_MARC_RELOC_LO_2_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_RELOC_LO_3 = 0x5aac # macro -mmGCMC_VM_MARC_RELOC_LO_3_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_RELOC_HI_0 = 0x5aad # macro -mmGCMC_VM_MARC_RELOC_HI_0_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_RELOC_HI_1 = 0x5aae # macro -mmGCMC_VM_MARC_RELOC_HI_1_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_RELOC_HI_2 = 0x5aaf # macro -mmGCMC_VM_MARC_RELOC_HI_2_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_RELOC_HI_3 = 0x5ab0 # macro -mmGCMC_VM_MARC_RELOC_HI_3_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_LEN_LO_0 = 0x5ab1 # macro -mmGCMC_VM_MARC_LEN_LO_0_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_LEN_LO_1 = 0x5ab2 # macro -mmGCMC_VM_MARC_LEN_LO_1_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_LEN_LO_2 = 0x5ab3 # macro -mmGCMC_VM_MARC_LEN_LO_2_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_LEN_LO_3 = 0x5ab4 # macro -mmGCMC_VM_MARC_LEN_LO_3_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_LEN_HI_0 = 0x5ab5 # macro -mmGCMC_VM_MARC_LEN_HI_0_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_LEN_HI_1 = 0x5ab6 # macro -mmGCMC_VM_MARC_LEN_HI_1_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_LEN_HI_2 = 0x5ab7 # macro -mmGCMC_VM_MARC_LEN_HI_2_BASE_IDX = 1 # macro -mmGCMC_VM_MARC_LEN_HI_3 = 0x5ab8 # macro -mmGCMC_VM_MARC_LEN_HI_3_BASE_IDX = 1 # macro -mmGCVM_IOMMU_CONTROL_REGISTER = 0x5ab9 # macro -mmGCVM_IOMMU_CONTROL_REGISTER_BASE_IDX = 1 # macro -mmGCVM_IOMMU_PERFORMANCE_OPTIMIZATION_CONTROL_REGISTER = 0x5aba # macro -mmGCVM_IOMMU_PERFORMANCE_OPTIMIZATION_CONTROL_REGISTER_BASE_IDX = 1 # macro -mmGCMC_VM_XGMI_GPUIOV_ENABLE = 0x5abb # macro -mmGCMC_VM_XGMI_GPUIOV_ENABLE_BASE_IDX = 1 # macro -mmCPG_PSP_DEBUG = 0x5c10 # macro -mmCPG_PSP_DEBUG_BASE_IDX = 1 # macro -mmCPC_PSP_DEBUG = 0x5c11 # macro -mmCPC_PSP_DEBUG_BASE_IDX = 1 # macro -mmGRBM_SEC_CNTL = 0x5e0d # macro -mmGRBM_SEC_CNTL_BASE_IDX = 1 # macro -mmRLC_FWL_FIRST_VIOL_ADDR = 0x5f12 # macro -mmRLC_FWL_FIRST_VIOL_ADDR_BASE_IDX = 1 # macro -mmRLC_SRM_FWL_FIRST_VIOL_ADDR = 0x5f3d # macro -mmRLC_SRM_FWL_FIRST_VIOL_ADDR_BASE_IDX = 1 # macro -mmGCVM_L2_ID_CTRL0 = 0x5dc0 # macro -mmGCVM_L2_ID_CTRL0_BASE_IDX = 1 # macro -mmGCVM_L2_ID_CTRL1 = 0x5dc1 # macro -mmGCVM_L2_ID_CTRL1_BASE_IDX = 1 # macro -mmGCVM_L2_ID_CTRL2 = 0x5dc2 # macro -mmGCVM_L2_ID_CTRL2_BASE_IDX = 1 # macro -mmGCVM_L2_ID_CTRL3 = 0x5dc3 # macro -mmGCVM_L2_ID_CTRL3_BASE_IDX = 1 # macro -mmGCVM_L2_ID_CTRL4 = 0x5dc4 # macro -mmGCVM_L2_ID_CTRL4_BASE_IDX = 1 # macro -mmGCVM_L2_ID_CTRL5 = 0x5dc5 # macro -mmGCVM_L2_ID_CTRL5_BASE_IDX = 1 # macro -mmGCVM_L2_ID_CTRL6 = 0x5dc6 # macro -mmGCVM_L2_ID_CTRL6_BASE_IDX = 1 # macro -mmGCVM_L2_ID_CTRL7 = 0x5dc7 # macro -mmGCVM_L2_ID_CTRL7_BASE_IDX = 1 # macro -mmGCVM_L2_ID_CTRL_HI = 0x5dc8 # macro -mmGCVM_L2_ID_CTRL_HI_BASE_IDX = 1 # macro -mmGCVM_L2_ID_STATUS = 0x5dc9 # macro -mmGCVM_L2_ID_STATUS_BASE_IDX = 1 # macro -mmGCUTCL2_TRANSLATION_BYPASS_BY_VMID = 0x5dcb # macro -mmGCUTCL2_TRANSLATION_BYPASS_BY_VMID_BASE_IDX = 1 # macro -mmGCVM_IOMMU_GPU_HOST_TRANSLATION_ENABLE = 0x5dcd # macro -mmGCVM_IOMMU_GPU_HOST_TRANSLATION_ENABLE_BASE_IDX = 1 # macro -mmGCUTC_GPUVA_VMID_TRANSLATION_ASSIST_REQUEST_LO = 0x5dce # macro -mmGCUTC_GPUVA_VMID_TRANSLATION_ASSIST_REQUEST_LO_BASE_IDX = 1 # macro -mmGCUTC_GPUVA_VMID_TRANSLATION_ASSIST_REQUEST_HI = 0x5dcf # macro -mmGCUTC_GPUVA_VMID_TRANSLATION_ASSIST_REQUEST_HI_BASE_IDX = 1 # macro -mmGCUTC_GPUVA_VMID_TRANSLATION_ASSIST_RESPONSE_LO = 0x5dd0 # macro -mmGCUTC_GPUVA_VMID_TRANSLATION_ASSIST_RESPONSE_LO_BASE_IDX = 1 # macro -mmGCUTC_GPUVA_VMID_TRANSLATION_ASSIST_RESPONSE_HI = 0x5dd1 # macro -mmGCUTC_GPUVA_VMID_TRANSLATION_ASSIST_RESPONSE_HI_BASE_IDX = 1 # macro -mmSDMA2_DEC_START = 0x0000 # macro -mmSDMA2_DEC_START_BASE_IDX = 2 # macro -mmSDMA2_GLOBAL_TIMESTAMP_LO = 0x000f # macro -mmSDMA2_GLOBAL_TIMESTAMP_LO_BASE_IDX = 2 # macro -mmSDMA2_GLOBAL_TIMESTAMP_HI = 0x0010 # macro -mmSDMA2_GLOBAL_TIMESTAMP_HI_BASE_IDX = 2 # macro -mmSDMA2_PG_CNTL = 0x0016 # macro -mmSDMA2_PG_CNTL_BASE_IDX = 2 # macro -mmSDMA2_PG_CTX_LO = 0x0017 # macro -mmSDMA2_PG_CTX_LO_BASE_IDX = 2 # macro -mmSDMA2_PG_CTX_HI = 0x0018 # macro -mmSDMA2_PG_CTX_HI_BASE_IDX = 2 # macro -mmSDMA2_PG_CTX_CNTL = 0x0019 # macro -mmSDMA2_PG_CTX_CNTL_BASE_IDX = 2 # macro -mmSDMA2_POWER_CNTL = 0x001a # macro -mmSDMA2_POWER_CNTL_BASE_IDX = 2 # macro -mmSDMA2_CLK_CTRL = 0x001b # macro -mmSDMA2_CLK_CTRL_BASE_IDX = 2 # macro -mmSDMA2_CNTL = 0x001c # macro -mmSDMA2_CNTL_BASE_IDX = 2 # macro -mmSDMA2_CHICKEN_BITS = 0x001d # macro -mmSDMA2_CHICKEN_BITS_BASE_IDX = 2 # macro -mmSDMA2_GB_ADDR_CONFIG = 0x001e # macro -mmSDMA2_GB_ADDR_CONFIG_BASE_IDX = 2 # macro -mmSDMA2_GB_ADDR_CONFIG_READ = 0x001f # macro -mmSDMA2_GB_ADDR_CONFIG_READ_BASE_IDX = 2 # macro -mmSDMA2_RB_RPTR_FETCH_HI = 0x0020 # macro -mmSDMA2_RB_RPTR_FETCH_HI_BASE_IDX = 2 # macro -mmSDMA2_SEM_WAIT_FAIL_TIMER_CNTL = 0x0021 # macro -mmSDMA2_SEM_WAIT_FAIL_TIMER_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RB_RPTR_FETCH = 0x0022 # macro -mmSDMA2_RB_RPTR_FETCH_BASE_IDX = 2 # macro -mmSDMA2_IB_OFFSET_FETCH = 0x0023 # macro -mmSDMA2_IB_OFFSET_FETCH_BASE_IDX = 2 # macro -mmSDMA2_PROGRAM = 0x0024 # macro -mmSDMA2_PROGRAM_BASE_IDX = 2 # macro -mmSDMA2_STATUS_REG = 0x0025 # macro -mmSDMA2_STATUS_REG_BASE_IDX = 2 # macro -mmSDMA2_STATUS1_REG = 0x0026 # macro -mmSDMA2_STATUS1_REG_BASE_IDX = 2 # macro -mmSDMA2_RD_BURST_CNTL = 0x0027 # macro -mmSDMA2_RD_BURST_CNTL_BASE_IDX = 2 # macro -mmSDMA2_HBM_PAGE_CONFIG = 0x0028 # macro -mmSDMA2_HBM_PAGE_CONFIG_BASE_IDX = 2 # macro -mmSDMA2_UCODE_CHECKSUM = 0x0029 # macro -mmSDMA2_UCODE_CHECKSUM_BASE_IDX = 2 # macro -mmSDMA2_F32_CNTL = 0x002a # macro -mmSDMA2_F32_CNTL_BASE_IDX = 2 # macro -mmSDMA2_FREEZE = 0x002b # macro -mmSDMA2_FREEZE_BASE_IDX = 2 # macro -mmSDMA2_PHASE0_QUANTUM = 0x002c # macro -mmSDMA2_PHASE0_QUANTUM_BASE_IDX = 2 # macro -mmSDMA2_PHASE1_QUANTUM = 0x002d # macro -mmSDMA2_PHASE1_QUANTUM_BASE_IDX = 2 # macro -mmSDMA2_EDC_CONFIG = 0x0032 # macro -mmSDMA2_EDC_CONFIG_BASE_IDX = 2 # macro -mmSDMA2_BA_THRESHOLD = 0x0033 # macro -mmSDMA2_BA_THRESHOLD_BASE_IDX = 2 # macro -mmSDMA2_ID = 0x0034 # macro -mmSDMA2_ID_BASE_IDX = 2 # macro -mmSDMA2_VERSION = 0x0035 # macro -mmSDMA2_VERSION_BASE_IDX = 2 # macro -mmSDMA2_EDC_COUNTER = 0x0036 # macro -mmSDMA2_EDC_COUNTER_BASE_IDX = 2 # macro -mmSDMA2_EDC_COUNTER_CLEAR = 0x0037 # macro -mmSDMA2_EDC_COUNTER_CLEAR_BASE_IDX = 2 # macro -mmSDMA2_STATUS2_REG = 0x0038 # macro -mmSDMA2_STATUS2_REG_BASE_IDX = 2 # macro -mmSDMA2_ATOMIC_CNTL = 0x0039 # macro -mmSDMA2_ATOMIC_CNTL_BASE_IDX = 2 # macro -mmSDMA2_ATOMIC_PREOP_LO = 0x003a # macro -mmSDMA2_ATOMIC_PREOP_LO_BASE_IDX = 2 # macro -mmSDMA2_ATOMIC_PREOP_HI = 0x003b # macro -mmSDMA2_ATOMIC_PREOP_HI_BASE_IDX = 2 # macro -mmSDMA2_UTCL1_CNTL = 0x003c # macro -mmSDMA2_UTCL1_CNTL_BASE_IDX = 2 # macro -mmSDMA2_UTCL1_WATERMK = 0x003d # macro -mmSDMA2_UTCL1_WATERMK_BASE_IDX = 2 # macro -mmSDMA2_UTCL1_RD_STATUS = 0x003e # macro -mmSDMA2_UTCL1_RD_STATUS_BASE_IDX = 2 # macro -mmSDMA2_UTCL1_WR_STATUS = 0x003f # macro -mmSDMA2_UTCL1_WR_STATUS_BASE_IDX = 2 # macro -mmSDMA2_UTCL1_INV0 = 0x0040 # macro -mmSDMA2_UTCL1_INV0_BASE_IDX = 2 # macro -mmSDMA2_UTCL1_INV1 = 0x0041 # macro -mmSDMA2_UTCL1_INV1_BASE_IDX = 2 # macro -mmSDMA2_UTCL1_INV2 = 0x0042 # macro -mmSDMA2_UTCL1_INV2_BASE_IDX = 2 # macro -mmSDMA2_UTCL1_RD_XNACK0 = 0x0043 # macro -mmSDMA2_UTCL1_RD_XNACK0_BASE_IDX = 2 # macro -mmSDMA2_UTCL1_RD_XNACK1 = 0x0044 # macro -mmSDMA2_UTCL1_RD_XNACK1_BASE_IDX = 2 # macro -mmSDMA2_UTCL1_WR_XNACK0 = 0x0045 # macro -mmSDMA2_UTCL1_WR_XNACK0_BASE_IDX = 2 # macro -mmSDMA2_UTCL1_WR_XNACK1 = 0x0046 # macro -mmSDMA2_UTCL1_WR_XNACK1_BASE_IDX = 2 # macro -mmSDMA2_UTCL1_TIMEOUT = 0x0047 # macro -mmSDMA2_UTCL1_TIMEOUT_BASE_IDX = 2 # macro -mmSDMA2_UTCL1_PAGE = 0x0048 # macro -mmSDMA2_UTCL1_PAGE_BASE_IDX = 2 # macro -mmSDMA2_RELAX_ORDERING_LUT = 0x004a # macro -mmSDMA2_RELAX_ORDERING_LUT_BASE_IDX = 2 # macro -mmSDMA2_CHICKEN_BITS_2 = 0x004b # macro -mmSDMA2_CHICKEN_BITS_2_BASE_IDX = 2 # macro -mmSDMA2_STATUS3_REG = 0x004c # macro -mmSDMA2_STATUS3_REG_BASE_IDX = 2 # macro -mmSDMA2_PHYSICAL_ADDR_LO = 0x004d # macro -mmSDMA2_PHYSICAL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_PHYSICAL_ADDR_HI = 0x004e # macro -mmSDMA2_PHYSICAL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_PHASE2_QUANTUM = 0x004f # macro -mmSDMA2_PHASE2_QUANTUM_BASE_IDX = 2 # macro -mmSDMA2_ERROR_LOG = 0x0050 # macro -mmSDMA2_ERROR_LOG_BASE_IDX = 2 # macro -mmSDMA2_PUB_DUMMY_REG0 = 0x0051 # macro -mmSDMA2_PUB_DUMMY_REG0_BASE_IDX = 2 # macro -mmSDMA2_PUB_DUMMY_REG1 = 0x0052 # macro -mmSDMA2_PUB_DUMMY_REG1_BASE_IDX = 2 # macro -mmSDMA2_PUB_DUMMY_REG2 = 0x0053 # macro -mmSDMA2_PUB_DUMMY_REG2_BASE_IDX = 2 # macro -mmSDMA2_PUB_DUMMY_REG3 = 0x0054 # macro -mmSDMA2_PUB_DUMMY_REG3_BASE_IDX = 2 # macro -mmSDMA2_F32_COUNTER = 0x0055 # macro -mmSDMA2_F32_COUNTER_BASE_IDX = 2 # macro -mmSDMA2_CRD_CNTL = 0x005b # macro -mmSDMA2_CRD_CNTL_BASE_IDX = 2 # macro -mmSDMA2_AQL_STATUS = 0x005f # macro -mmSDMA2_AQL_STATUS_BASE_IDX = 2 # macro -mmSDMA2_EA_DBIT_ADDR_DATA = 0x0060 # macro -mmSDMA2_EA_DBIT_ADDR_DATA_BASE_IDX = 2 # macro -mmSDMA2_EA_DBIT_ADDR_INDEX = 0x0061 # macro -mmSDMA2_EA_DBIT_ADDR_INDEX_BASE_IDX = 2 # macro -mmSDMA2_TLBI_GCR_CNTL = 0x0062 # macro -mmSDMA2_TLBI_GCR_CNTL_BASE_IDX = 2 # macro -mmSDMA2_TILING_CONFIG = 0x0063 # macro -mmSDMA2_TILING_CONFIG_BASE_IDX = 2 # macro -mmSDMA2_INT_STATUS = 0x0070 # macro -mmSDMA2_INT_STATUS_BASE_IDX = 2 # macro -mmSDMA2_HOLE_ADDR_LO = 0x0072 # macro -mmSDMA2_HOLE_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_HOLE_ADDR_HI = 0x0073 # macro -mmSDMA2_HOLE_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_CLOCK_GATING_REG = 0x0075 # macro -mmSDMA2_CLOCK_GATING_REG_BASE_IDX = 2 # macro -mmSDMA2_STATUS4_REG = 0x0076 # macro -mmSDMA2_STATUS4_REG_BASE_IDX = 2 # macro -mmSDMA2_SCRATCH_RAM_DATA = 0x0077 # macro -mmSDMA2_SCRATCH_RAM_DATA_BASE_IDX = 2 # macro -mmSDMA2_SCRATCH_RAM_ADDR = 0x0078 # macro -mmSDMA2_SCRATCH_RAM_ADDR_BASE_IDX = 2 # macro -mmSDMA2_TIMESTAMP_CNTL = 0x0079 # macro -mmSDMA2_TIMESTAMP_CNTL_BASE_IDX = 2 # macro -mmSDMA2_STATUS5_REG = 0x007a # macro -mmSDMA2_STATUS5_REG_BASE_IDX = 2 # macro -mmSDMA2_QUEUE_RESET_REQ = 0x007b # macro -mmSDMA2_QUEUE_RESET_REQ_BASE_IDX = 2 # macro -mmSDMA2_GFX_RB_CNTL = 0x0080 # macro -mmSDMA2_GFX_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_GFX_RB_BASE = 0x0081 # macro -mmSDMA2_GFX_RB_BASE_BASE_IDX = 2 # macro -mmSDMA2_GFX_RB_BASE_HI = 0x0082 # macro -mmSDMA2_GFX_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_GFX_RB_RPTR = 0x0083 # macro -mmSDMA2_GFX_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_GFX_RB_RPTR_HI = 0x0084 # macro -mmSDMA2_GFX_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_GFX_RB_WPTR = 0x0085 # macro -mmSDMA2_GFX_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA2_GFX_RB_WPTR_HI = 0x0086 # macro -mmSDMA2_GFX_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_GFX_RB_WPTR_POLL_CNTL = 0x0087 # macro -mmSDMA2_GFX_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_GFX_RB_RPTR_ADDR_HI = 0x0088 # macro -mmSDMA2_GFX_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_GFX_RB_RPTR_ADDR_LO = 0x0089 # macro -mmSDMA2_GFX_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_GFX_IB_CNTL = 0x008a # macro -mmSDMA2_GFX_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_GFX_IB_RPTR = 0x008b # macro -mmSDMA2_GFX_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_GFX_IB_OFFSET = 0x008c # macro -mmSDMA2_GFX_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_GFX_IB_BASE_LO = 0x008d # macro -mmSDMA2_GFX_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA2_GFX_IB_BASE_HI = 0x008e # macro -mmSDMA2_GFX_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_GFX_IB_SIZE = 0x008f # macro -mmSDMA2_GFX_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA2_GFX_SKIP_CNTL = 0x0090 # macro -mmSDMA2_GFX_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA2_GFX_CONTEXT_STATUS = 0x0091 # macro -mmSDMA2_GFX_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA2_GFX_DOORBELL = 0x0092 # macro -mmSDMA2_GFX_DOORBELL_BASE_IDX = 2 # macro -mmSDMA2_GFX_CONTEXT_CNTL = 0x0093 # macro -mmSDMA2_GFX_CONTEXT_CNTL_BASE_IDX = 2 # macro -mmSDMA2_GFX_STATUS = 0x00a8 # macro -mmSDMA2_GFX_STATUS_BASE_IDX = 2 # macro -mmSDMA2_GFX_DOORBELL_LOG = 0x00a9 # macro -mmSDMA2_GFX_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA2_GFX_WATERMARK = 0x00aa # macro -mmSDMA2_GFX_WATERMARK_BASE_IDX = 2 # macro -mmSDMA2_GFX_DOORBELL_OFFSET = 0x00ab # macro -mmSDMA2_GFX_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_GFX_CSA_ADDR_LO = 0x00ac # macro -mmSDMA2_GFX_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_GFX_CSA_ADDR_HI = 0x00ad # macro -mmSDMA2_GFX_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_GFX_IB_SUB_REMAIN = 0x00af # macro -mmSDMA2_GFX_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA2_GFX_PREEMPT = 0x00b0 # macro -mmSDMA2_GFX_PREEMPT_BASE_IDX = 2 # macro -mmSDMA2_GFX_DUMMY_REG = 0x00b1 # macro -mmSDMA2_GFX_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA2_GFX_RB_WPTR_POLL_ADDR_HI = 0x00b2 # macro -mmSDMA2_GFX_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_GFX_RB_WPTR_POLL_ADDR_LO = 0x00b3 # macro -mmSDMA2_GFX_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_GFX_RB_AQL_CNTL = 0x00b4 # macro -mmSDMA2_GFX_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_GFX_MINOR_PTR_UPDATE = 0x00b5 # macro -mmSDMA2_GFX_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA2_GFX_MIDCMD_DATA0 = 0x00c0 # macro -mmSDMA2_GFX_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA2_GFX_MIDCMD_DATA1 = 0x00c1 # macro -mmSDMA2_GFX_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA2_GFX_MIDCMD_DATA2 = 0x00c2 # macro -mmSDMA2_GFX_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA2_GFX_MIDCMD_DATA3 = 0x00c3 # macro -mmSDMA2_GFX_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA2_GFX_MIDCMD_DATA4 = 0x00c4 # macro -mmSDMA2_GFX_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA2_GFX_MIDCMD_DATA5 = 0x00c5 # macro -mmSDMA2_GFX_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA2_GFX_MIDCMD_DATA6 = 0x00c6 # macro -mmSDMA2_GFX_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA2_GFX_MIDCMD_DATA7 = 0x00c7 # macro -mmSDMA2_GFX_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA2_GFX_MIDCMD_DATA8 = 0x00c8 # macro -mmSDMA2_GFX_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA2_GFX_MIDCMD_DATA9 = 0x00c9 # macro -mmSDMA2_GFX_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA2_GFX_MIDCMD_DATA10 = 0x00ca # macro -mmSDMA2_GFX_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA2_GFX_MIDCMD_CNTL = 0x00cb # macro -mmSDMA2_GFX_MIDCMD_CNTL_BASE_IDX = 2 # macro -mmSDMA2_PAGE_RB_CNTL = 0x00d8 # macro -mmSDMA2_PAGE_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_PAGE_RB_BASE = 0x00d9 # macro -mmSDMA2_PAGE_RB_BASE_BASE_IDX = 2 # macro -mmSDMA2_PAGE_RB_BASE_HI = 0x00da # macro -mmSDMA2_PAGE_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_PAGE_RB_RPTR = 0x00db # macro -mmSDMA2_PAGE_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_PAGE_RB_RPTR_HI = 0x00dc # macro -mmSDMA2_PAGE_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_PAGE_RB_WPTR = 0x00dd # macro -mmSDMA2_PAGE_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA2_PAGE_RB_WPTR_HI = 0x00de # macro -mmSDMA2_PAGE_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_PAGE_RB_WPTR_POLL_CNTL = 0x00df # macro -mmSDMA2_PAGE_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_PAGE_RB_RPTR_ADDR_HI = 0x00e0 # macro -mmSDMA2_PAGE_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_PAGE_RB_RPTR_ADDR_LO = 0x00e1 # macro -mmSDMA2_PAGE_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_PAGE_IB_CNTL = 0x00e2 # macro -mmSDMA2_PAGE_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_PAGE_IB_RPTR = 0x00e3 # macro -mmSDMA2_PAGE_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_PAGE_IB_OFFSET = 0x00e4 # macro -mmSDMA2_PAGE_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_PAGE_IB_BASE_LO = 0x00e5 # macro -mmSDMA2_PAGE_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA2_PAGE_IB_BASE_HI = 0x00e6 # macro -mmSDMA2_PAGE_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_PAGE_IB_SIZE = 0x00e7 # macro -mmSDMA2_PAGE_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA2_PAGE_SKIP_CNTL = 0x00e8 # macro -mmSDMA2_PAGE_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA2_PAGE_CONTEXT_STATUS = 0x00e9 # macro -mmSDMA2_PAGE_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA2_PAGE_DOORBELL = 0x00ea # macro -mmSDMA2_PAGE_DOORBELL_BASE_IDX = 2 # macro -mmSDMA2_PAGE_STATUS = 0x0100 # macro -mmSDMA2_PAGE_STATUS_BASE_IDX = 2 # macro -mmSDMA2_PAGE_DOORBELL_LOG = 0x0101 # macro -mmSDMA2_PAGE_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA2_PAGE_WATERMARK = 0x0102 # macro -mmSDMA2_PAGE_WATERMARK_BASE_IDX = 2 # macro -mmSDMA2_PAGE_DOORBELL_OFFSET = 0x0103 # macro -mmSDMA2_PAGE_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_PAGE_CSA_ADDR_LO = 0x0104 # macro -mmSDMA2_PAGE_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_PAGE_CSA_ADDR_HI = 0x0105 # macro -mmSDMA2_PAGE_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_PAGE_IB_SUB_REMAIN = 0x0107 # macro -mmSDMA2_PAGE_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA2_PAGE_PREEMPT = 0x0108 # macro -mmSDMA2_PAGE_PREEMPT_BASE_IDX = 2 # macro -mmSDMA2_PAGE_DUMMY_REG = 0x0109 # macro -mmSDMA2_PAGE_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA2_PAGE_RB_WPTR_POLL_ADDR_HI = 0x010a # macro -mmSDMA2_PAGE_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_PAGE_RB_WPTR_POLL_ADDR_LO = 0x010b # macro -mmSDMA2_PAGE_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_PAGE_RB_AQL_CNTL = 0x010c # macro -mmSDMA2_PAGE_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_PAGE_MINOR_PTR_UPDATE = 0x010d # macro -mmSDMA2_PAGE_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA2_PAGE_MIDCMD_DATA0 = 0x0118 # macro -mmSDMA2_PAGE_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA2_PAGE_MIDCMD_DATA1 = 0x0119 # macro -mmSDMA2_PAGE_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA2_PAGE_MIDCMD_DATA2 = 0x011a # macro -mmSDMA2_PAGE_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA2_PAGE_MIDCMD_DATA3 = 0x011b # macro -mmSDMA2_PAGE_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA2_PAGE_MIDCMD_DATA4 = 0x011c # macro -mmSDMA2_PAGE_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA2_PAGE_MIDCMD_DATA5 = 0x011d # macro -mmSDMA2_PAGE_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA2_PAGE_MIDCMD_DATA6 = 0x011e # macro -mmSDMA2_PAGE_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA2_PAGE_MIDCMD_DATA7 = 0x011f # macro -mmSDMA2_PAGE_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA2_PAGE_MIDCMD_DATA8 = 0x0120 # macro -mmSDMA2_PAGE_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA2_PAGE_MIDCMD_DATA9 = 0x0121 # macro -mmSDMA2_PAGE_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA2_PAGE_MIDCMD_DATA10 = 0x0122 # macro -mmSDMA2_PAGE_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA2_PAGE_MIDCMD_CNTL = 0x0123 # macro -mmSDMA2_PAGE_MIDCMD_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC0_RB_CNTL = 0x0130 # macro -mmSDMA2_RLC0_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC0_RB_BASE = 0x0131 # macro -mmSDMA2_RLC0_RB_BASE_BASE_IDX = 2 # macro -mmSDMA2_RLC0_RB_BASE_HI = 0x0132 # macro -mmSDMA2_RLC0_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC0_RB_RPTR = 0x0133 # macro -mmSDMA2_RLC0_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC0_RB_RPTR_HI = 0x0134 # macro -mmSDMA2_RLC0_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC0_RB_WPTR = 0x0135 # macro -mmSDMA2_RLC0_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC0_RB_WPTR_HI = 0x0136 # macro -mmSDMA2_RLC0_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC0_RB_WPTR_POLL_CNTL = 0x0137 # macro -mmSDMA2_RLC0_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC0_RB_RPTR_ADDR_HI = 0x0138 # macro -mmSDMA2_RLC0_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC0_RB_RPTR_ADDR_LO = 0x0139 # macro -mmSDMA2_RLC0_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC0_IB_CNTL = 0x013a # macro -mmSDMA2_RLC0_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC0_IB_RPTR = 0x013b # macro -mmSDMA2_RLC0_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC0_IB_OFFSET = 0x013c # macro -mmSDMA2_RLC0_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_RLC0_IB_BASE_LO = 0x013d # macro -mmSDMA2_RLC0_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC0_IB_BASE_HI = 0x013e # macro -mmSDMA2_RLC0_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC0_IB_SIZE = 0x013f # macro -mmSDMA2_RLC0_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA2_RLC0_SKIP_CNTL = 0x0140 # macro -mmSDMA2_RLC0_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC0_CONTEXT_STATUS = 0x0141 # macro -mmSDMA2_RLC0_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA2_RLC0_DOORBELL = 0x0142 # macro -mmSDMA2_RLC0_DOORBELL_BASE_IDX = 2 # macro -mmSDMA2_RLC0_STATUS = 0x0158 # macro -mmSDMA2_RLC0_STATUS_BASE_IDX = 2 # macro -mmSDMA2_RLC0_DOORBELL_LOG = 0x0159 # macro -mmSDMA2_RLC0_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA2_RLC0_WATERMARK = 0x015a # macro -mmSDMA2_RLC0_WATERMARK_BASE_IDX = 2 # macro -mmSDMA2_RLC0_DOORBELL_OFFSET = 0x015b # macro -mmSDMA2_RLC0_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_RLC0_CSA_ADDR_LO = 0x015c # macro -mmSDMA2_RLC0_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC0_CSA_ADDR_HI = 0x015d # macro -mmSDMA2_RLC0_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC0_IB_SUB_REMAIN = 0x015f # macro -mmSDMA2_RLC0_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA2_RLC0_PREEMPT = 0x0160 # macro -mmSDMA2_RLC0_PREEMPT_BASE_IDX = 2 # macro -mmSDMA2_RLC0_DUMMY_REG = 0x0161 # macro -mmSDMA2_RLC0_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA2_RLC0_RB_WPTR_POLL_ADDR_HI = 0x0162 # macro -mmSDMA2_RLC0_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC0_RB_WPTR_POLL_ADDR_LO = 0x0163 # macro -mmSDMA2_RLC0_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC0_RB_AQL_CNTL = 0x0164 # macro -mmSDMA2_RLC0_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC0_MINOR_PTR_UPDATE = 0x0165 # macro -mmSDMA2_RLC0_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA2_RLC0_MIDCMD_DATA0 = 0x0170 # macro -mmSDMA2_RLC0_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA2_RLC0_MIDCMD_DATA1 = 0x0171 # macro -mmSDMA2_RLC0_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA2_RLC0_MIDCMD_DATA2 = 0x0172 # macro -mmSDMA2_RLC0_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA2_RLC0_MIDCMD_DATA3 = 0x0173 # macro -mmSDMA2_RLC0_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA2_RLC0_MIDCMD_DATA4 = 0x0174 # macro -mmSDMA2_RLC0_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA2_RLC0_MIDCMD_DATA5 = 0x0175 # macro -mmSDMA2_RLC0_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA2_RLC0_MIDCMD_DATA6 = 0x0176 # macro -mmSDMA2_RLC0_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA2_RLC0_MIDCMD_DATA7 = 0x0177 # macro -mmSDMA2_RLC0_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA2_RLC0_MIDCMD_DATA8 = 0x0178 # macro -mmSDMA2_RLC0_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA2_RLC0_MIDCMD_DATA9 = 0x0179 # macro -mmSDMA2_RLC0_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA2_RLC0_MIDCMD_DATA10 = 0x017a # macro -mmSDMA2_RLC0_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA2_RLC0_MIDCMD_CNTL = 0x017b # macro -mmSDMA2_RLC0_MIDCMD_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC1_RB_CNTL = 0x0188 # macro -mmSDMA2_RLC1_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC1_RB_BASE = 0x0189 # macro -mmSDMA2_RLC1_RB_BASE_BASE_IDX = 2 # macro -mmSDMA2_RLC1_RB_BASE_HI = 0x018a # macro -mmSDMA2_RLC1_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC1_RB_RPTR = 0x018b # macro -mmSDMA2_RLC1_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC1_RB_RPTR_HI = 0x018c # macro -mmSDMA2_RLC1_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC1_RB_WPTR = 0x018d # macro -mmSDMA2_RLC1_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC1_RB_WPTR_HI = 0x018e # macro -mmSDMA2_RLC1_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC1_RB_WPTR_POLL_CNTL = 0x018f # macro -mmSDMA2_RLC1_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC1_RB_RPTR_ADDR_HI = 0x0190 # macro -mmSDMA2_RLC1_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC1_RB_RPTR_ADDR_LO = 0x0191 # macro -mmSDMA2_RLC1_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC1_IB_CNTL = 0x0192 # macro -mmSDMA2_RLC1_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC1_IB_RPTR = 0x0193 # macro -mmSDMA2_RLC1_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC1_IB_OFFSET = 0x0194 # macro -mmSDMA2_RLC1_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_RLC1_IB_BASE_LO = 0x0195 # macro -mmSDMA2_RLC1_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC1_IB_BASE_HI = 0x0196 # macro -mmSDMA2_RLC1_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC1_IB_SIZE = 0x0197 # macro -mmSDMA2_RLC1_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA2_RLC1_SKIP_CNTL = 0x0198 # macro -mmSDMA2_RLC1_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC1_CONTEXT_STATUS = 0x0199 # macro -mmSDMA2_RLC1_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA2_RLC1_DOORBELL = 0x019a # macro -mmSDMA2_RLC1_DOORBELL_BASE_IDX = 2 # macro -mmSDMA2_RLC1_STATUS = 0x01b0 # macro -mmSDMA2_RLC1_STATUS_BASE_IDX = 2 # macro -mmSDMA2_RLC1_DOORBELL_LOG = 0x01b1 # macro -mmSDMA2_RLC1_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA2_RLC1_WATERMARK = 0x01b2 # macro -mmSDMA2_RLC1_WATERMARK_BASE_IDX = 2 # macro -mmSDMA2_RLC1_DOORBELL_OFFSET = 0x01b3 # macro -mmSDMA2_RLC1_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_RLC1_CSA_ADDR_LO = 0x01b4 # macro -mmSDMA2_RLC1_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC1_CSA_ADDR_HI = 0x01b5 # macro -mmSDMA2_RLC1_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC1_IB_SUB_REMAIN = 0x01b7 # macro -mmSDMA2_RLC1_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA2_RLC1_PREEMPT = 0x01b8 # macro -mmSDMA2_RLC1_PREEMPT_BASE_IDX = 2 # macro -mmSDMA2_RLC1_DUMMY_REG = 0x01b9 # macro -mmSDMA2_RLC1_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA2_RLC1_RB_WPTR_POLL_ADDR_HI = 0x01ba # macro -mmSDMA2_RLC1_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC1_RB_WPTR_POLL_ADDR_LO = 0x01bb # macro -mmSDMA2_RLC1_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC1_RB_AQL_CNTL = 0x01bc # macro -mmSDMA2_RLC1_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC1_MINOR_PTR_UPDATE = 0x01bd # macro -mmSDMA2_RLC1_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA2_RLC1_MIDCMD_DATA0 = 0x01c8 # macro -mmSDMA2_RLC1_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA2_RLC1_MIDCMD_DATA1 = 0x01c9 # macro -mmSDMA2_RLC1_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA2_RLC1_MIDCMD_DATA2 = 0x01ca # macro -mmSDMA2_RLC1_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA2_RLC1_MIDCMD_DATA3 = 0x01cb # macro -mmSDMA2_RLC1_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA2_RLC1_MIDCMD_DATA4 = 0x01cc # macro -mmSDMA2_RLC1_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA2_RLC1_MIDCMD_DATA5 = 0x01cd # macro -mmSDMA2_RLC1_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA2_RLC1_MIDCMD_DATA6 = 0x01ce # macro -mmSDMA2_RLC1_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA2_RLC1_MIDCMD_DATA7 = 0x01cf # macro -mmSDMA2_RLC1_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA2_RLC1_MIDCMD_DATA8 = 0x01d0 # macro -mmSDMA2_RLC1_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA2_RLC1_MIDCMD_DATA9 = 0x01d1 # macro -mmSDMA2_RLC1_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA2_RLC1_MIDCMD_DATA10 = 0x01d2 # macro -mmSDMA2_RLC1_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA2_RLC1_MIDCMD_CNTL = 0x01d3 # macro -mmSDMA2_RLC1_MIDCMD_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC2_RB_CNTL = 0x01e0 # macro -mmSDMA2_RLC2_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC2_RB_BASE = 0x01e1 # macro -mmSDMA2_RLC2_RB_BASE_BASE_IDX = 2 # macro -mmSDMA2_RLC2_RB_BASE_HI = 0x01e2 # macro -mmSDMA2_RLC2_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC2_RB_RPTR = 0x01e3 # macro -mmSDMA2_RLC2_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC2_RB_RPTR_HI = 0x01e4 # macro -mmSDMA2_RLC2_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC2_RB_WPTR = 0x01e5 # macro -mmSDMA2_RLC2_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC2_RB_WPTR_HI = 0x01e6 # macro -mmSDMA2_RLC2_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC2_RB_WPTR_POLL_CNTL = 0x01e7 # macro -mmSDMA2_RLC2_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC2_RB_RPTR_ADDR_HI = 0x01e8 # macro -mmSDMA2_RLC2_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC2_RB_RPTR_ADDR_LO = 0x01e9 # macro -mmSDMA2_RLC2_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC2_IB_CNTL = 0x01ea # macro -mmSDMA2_RLC2_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC2_IB_RPTR = 0x01eb # macro -mmSDMA2_RLC2_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC2_IB_OFFSET = 0x01ec # macro -mmSDMA2_RLC2_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_RLC2_IB_BASE_LO = 0x01ed # macro -mmSDMA2_RLC2_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC2_IB_BASE_HI = 0x01ee # macro -mmSDMA2_RLC2_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC2_IB_SIZE = 0x01ef # macro -mmSDMA2_RLC2_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA2_RLC2_SKIP_CNTL = 0x01f0 # macro -mmSDMA2_RLC2_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC2_CONTEXT_STATUS = 0x01f1 # macro -mmSDMA2_RLC2_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA2_RLC2_DOORBELL = 0x01f2 # macro -mmSDMA2_RLC2_DOORBELL_BASE_IDX = 2 # macro -mmSDMA2_RLC2_STATUS = 0x0208 # macro -mmSDMA2_RLC2_STATUS_BASE_IDX = 2 # macro -mmSDMA2_RLC2_DOORBELL_LOG = 0x0209 # macro -mmSDMA2_RLC2_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA2_RLC2_WATERMARK = 0x020a # macro -mmSDMA2_RLC2_WATERMARK_BASE_IDX = 2 # macro -mmSDMA2_RLC2_DOORBELL_OFFSET = 0x020b # macro -mmSDMA2_RLC2_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_RLC2_CSA_ADDR_LO = 0x020c # macro -mmSDMA2_RLC2_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC2_CSA_ADDR_HI = 0x020d # macro -mmSDMA2_RLC2_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC2_IB_SUB_REMAIN = 0x020f # macro -mmSDMA2_RLC2_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA2_RLC2_PREEMPT = 0x0210 # macro -mmSDMA2_RLC2_PREEMPT_BASE_IDX = 2 # macro -mmSDMA2_RLC2_DUMMY_REG = 0x0211 # macro -mmSDMA2_RLC2_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA2_RLC2_RB_WPTR_POLL_ADDR_HI = 0x0212 # macro -mmSDMA2_RLC2_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC2_RB_WPTR_POLL_ADDR_LO = 0x0213 # macro -mmSDMA2_RLC2_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC2_RB_AQL_CNTL = 0x0214 # macro -mmSDMA2_RLC2_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC2_MINOR_PTR_UPDATE = 0x0215 # macro -mmSDMA2_RLC2_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA2_RLC2_MIDCMD_DATA0 = 0x0220 # macro -mmSDMA2_RLC2_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA2_RLC2_MIDCMD_DATA1 = 0x0221 # macro -mmSDMA2_RLC2_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA2_RLC2_MIDCMD_DATA2 = 0x0222 # macro -mmSDMA2_RLC2_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA2_RLC2_MIDCMD_DATA3 = 0x0223 # macro -mmSDMA2_RLC2_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA2_RLC2_MIDCMD_DATA4 = 0x0224 # macro -mmSDMA2_RLC2_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA2_RLC2_MIDCMD_DATA5 = 0x0225 # macro -mmSDMA2_RLC2_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA2_RLC2_MIDCMD_DATA6 = 0x0226 # macro -mmSDMA2_RLC2_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA2_RLC2_MIDCMD_DATA7 = 0x0227 # macro -mmSDMA2_RLC2_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA2_RLC2_MIDCMD_DATA8 = 0x0228 # macro -mmSDMA2_RLC2_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA2_RLC2_MIDCMD_DATA9 = 0x0229 # macro -mmSDMA2_RLC2_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA2_RLC2_MIDCMD_DATA10 = 0x022a # macro -mmSDMA2_RLC2_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA2_RLC2_MIDCMD_CNTL = 0x022b # macro -mmSDMA2_RLC2_MIDCMD_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC3_RB_CNTL = 0x0238 # macro -mmSDMA2_RLC3_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC3_RB_BASE = 0x0239 # macro -mmSDMA2_RLC3_RB_BASE_BASE_IDX = 2 # macro -mmSDMA2_RLC3_RB_BASE_HI = 0x023a # macro -mmSDMA2_RLC3_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC3_RB_RPTR = 0x023b # macro -mmSDMA2_RLC3_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC3_RB_RPTR_HI = 0x023c # macro -mmSDMA2_RLC3_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC3_RB_WPTR = 0x023d # macro -mmSDMA2_RLC3_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC3_RB_WPTR_HI = 0x023e # macro -mmSDMA2_RLC3_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC3_RB_WPTR_POLL_CNTL = 0x023f # macro -mmSDMA2_RLC3_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC3_RB_RPTR_ADDR_HI = 0x0240 # macro -mmSDMA2_RLC3_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC3_RB_RPTR_ADDR_LO = 0x0241 # macro -mmSDMA2_RLC3_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC3_IB_CNTL = 0x0242 # macro -mmSDMA2_RLC3_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC3_IB_RPTR = 0x0243 # macro -mmSDMA2_RLC3_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC3_IB_OFFSET = 0x0244 # macro -mmSDMA2_RLC3_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_RLC3_IB_BASE_LO = 0x0245 # macro -mmSDMA2_RLC3_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC3_IB_BASE_HI = 0x0246 # macro -mmSDMA2_RLC3_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC3_IB_SIZE = 0x0247 # macro -mmSDMA2_RLC3_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA2_RLC3_SKIP_CNTL = 0x0248 # macro -mmSDMA2_RLC3_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC3_CONTEXT_STATUS = 0x0249 # macro -mmSDMA2_RLC3_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA2_RLC3_DOORBELL = 0x024a # macro -mmSDMA2_RLC3_DOORBELL_BASE_IDX = 2 # macro -mmSDMA2_RLC3_STATUS = 0x0260 # macro -mmSDMA2_RLC3_STATUS_BASE_IDX = 2 # macro -mmSDMA2_RLC3_DOORBELL_LOG = 0x0261 # macro -mmSDMA2_RLC3_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA2_RLC3_WATERMARK = 0x0262 # macro -mmSDMA2_RLC3_WATERMARK_BASE_IDX = 2 # macro -mmSDMA2_RLC3_DOORBELL_OFFSET = 0x0263 # macro -mmSDMA2_RLC3_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_RLC3_CSA_ADDR_LO = 0x0264 # macro -mmSDMA2_RLC3_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC3_CSA_ADDR_HI = 0x0265 # macro -mmSDMA2_RLC3_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC3_IB_SUB_REMAIN = 0x0267 # macro -mmSDMA2_RLC3_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA2_RLC3_PREEMPT = 0x0268 # macro -mmSDMA2_RLC3_PREEMPT_BASE_IDX = 2 # macro -mmSDMA2_RLC3_DUMMY_REG = 0x0269 # macro -mmSDMA2_RLC3_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA2_RLC3_RB_WPTR_POLL_ADDR_HI = 0x026a # macro -mmSDMA2_RLC3_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC3_RB_WPTR_POLL_ADDR_LO = 0x026b # macro -mmSDMA2_RLC3_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC3_RB_AQL_CNTL = 0x026c # macro -mmSDMA2_RLC3_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC3_MINOR_PTR_UPDATE = 0x026d # macro -mmSDMA2_RLC3_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA2_RLC3_MIDCMD_DATA0 = 0x0278 # macro -mmSDMA2_RLC3_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA2_RLC3_MIDCMD_DATA1 = 0x0279 # macro -mmSDMA2_RLC3_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA2_RLC3_MIDCMD_DATA2 = 0x027a # macro -mmSDMA2_RLC3_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA2_RLC3_MIDCMD_DATA3 = 0x027b # macro -mmSDMA2_RLC3_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA2_RLC3_MIDCMD_DATA4 = 0x027c # macro -mmSDMA2_RLC3_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA2_RLC3_MIDCMD_DATA5 = 0x027d # macro -mmSDMA2_RLC3_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA2_RLC3_MIDCMD_DATA6 = 0x027e # macro -mmSDMA2_RLC3_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA2_RLC3_MIDCMD_DATA7 = 0x027f # macro -mmSDMA2_RLC3_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA2_RLC3_MIDCMD_DATA8 = 0x0280 # macro -mmSDMA2_RLC3_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA2_RLC3_MIDCMD_DATA9 = 0x0281 # macro -mmSDMA2_RLC3_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA2_RLC3_MIDCMD_DATA10 = 0x0282 # macro -mmSDMA2_RLC3_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA2_RLC3_MIDCMD_CNTL = 0x0283 # macro -mmSDMA2_RLC3_MIDCMD_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC4_RB_CNTL = 0x0290 # macro -mmSDMA2_RLC4_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC4_RB_BASE = 0x0291 # macro -mmSDMA2_RLC4_RB_BASE_BASE_IDX = 2 # macro -mmSDMA2_RLC4_RB_BASE_HI = 0x0292 # macro -mmSDMA2_RLC4_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC4_RB_RPTR = 0x0293 # macro -mmSDMA2_RLC4_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC4_RB_RPTR_HI = 0x0294 # macro -mmSDMA2_RLC4_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC4_RB_WPTR = 0x0295 # macro -mmSDMA2_RLC4_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC4_RB_WPTR_HI = 0x0296 # macro -mmSDMA2_RLC4_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC4_RB_WPTR_POLL_CNTL = 0x0297 # macro -mmSDMA2_RLC4_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC4_RB_RPTR_ADDR_HI = 0x0298 # macro -mmSDMA2_RLC4_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC4_RB_RPTR_ADDR_LO = 0x0299 # macro -mmSDMA2_RLC4_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC4_IB_CNTL = 0x029a # macro -mmSDMA2_RLC4_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC4_IB_RPTR = 0x029b # macro -mmSDMA2_RLC4_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC4_IB_OFFSET = 0x029c # macro -mmSDMA2_RLC4_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_RLC4_IB_BASE_LO = 0x029d # macro -mmSDMA2_RLC4_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC4_IB_BASE_HI = 0x029e # macro -mmSDMA2_RLC4_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC4_IB_SIZE = 0x029f # macro -mmSDMA2_RLC4_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA2_RLC4_SKIP_CNTL = 0x02a0 # macro -mmSDMA2_RLC4_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC4_CONTEXT_STATUS = 0x02a1 # macro -mmSDMA2_RLC4_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA2_RLC4_DOORBELL = 0x02a2 # macro -mmSDMA2_RLC4_DOORBELL_BASE_IDX = 2 # macro -mmSDMA2_RLC4_STATUS = 0x02b8 # macro -mmSDMA2_RLC4_STATUS_BASE_IDX = 2 # macro -mmSDMA2_RLC4_DOORBELL_LOG = 0x02b9 # macro -mmSDMA2_RLC4_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA2_RLC4_WATERMARK = 0x02ba # macro -mmSDMA2_RLC4_WATERMARK_BASE_IDX = 2 # macro -mmSDMA2_RLC4_DOORBELL_OFFSET = 0x02bb # macro -mmSDMA2_RLC4_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_RLC4_CSA_ADDR_LO = 0x02bc # macro -mmSDMA2_RLC4_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC4_CSA_ADDR_HI = 0x02bd # macro -mmSDMA2_RLC4_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC4_IB_SUB_REMAIN = 0x02bf # macro -mmSDMA2_RLC4_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA2_RLC4_PREEMPT = 0x02c0 # macro -mmSDMA2_RLC4_PREEMPT_BASE_IDX = 2 # macro -mmSDMA2_RLC4_DUMMY_REG = 0x02c1 # macro -mmSDMA2_RLC4_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA2_RLC4_RB_WPTR_POLL_ADDR_HI = 0x02c2 # macro -mmSDMA2_RLC4_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC4_RB_WPTR_POLL_ADDR_LO = 0x02c3 # macro -mmSDMA2_RLC4_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC4_RB_AQL_CNTL = 0x02c4 # macro -mmSDMA2_RLC4_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC4_MINOR_PTR_UPDATE = 0x02c5 # macro -mmSDMA2_RLC4_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA2_RLC4_MIDCMD_DATA0 = 0x02d0 # macro -mmSDMA2_RLC4_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA2_RLC4_MIDCMD_DATA1 = 0x02d1 # macro -mmSDMA2_RLC4_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA2_RLC4_MIDCMD_DATA2 = 0x02d2 # macro -mmSDMA2_RLC4_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA2_RLC4_MIDCMD_DATA3 = 0x02d3 # macro -mmSDMA2_RLC4_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA2_RLC4_MIDCMD_DATA4 = 0x02d4 # macro -mmSDMA2_RLC4_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA2_RLC4_MIDCMD_DATA5 = 0x02d5 # macro -mmSDMA2_RLC4_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA2_RLC4_MIDCMD_DATA6 = 0x02d6 # macro -mmSDMA2_RLC4_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA2_RLC4_MIDCMD_DATA7 = 0x02d7 # macro -mmSDMA2_RLC4_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA2_RLC4_MIDCMD_DATA8 = 0x02d8 # macro -mmSDMA2_RLC4_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA2_RLC4_MIDCMD_DATA9 = 0x02d9 # macro -mmSDMA2_RLC4_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA2_RLC4_MIDCMD_DATA10 = 0x02da # macro -mmSDMA2_RLC4_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA2_RLC4_MIDCMD_CNTL = 0x02db # macro -mmSDMA2_RLC4_MIDCMD_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC5_RB_CNTL = 0x02e8 # macro -mmSDMA2_RLC5_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC5_RB_BASE = 0x02e9 # macro -mmSDMA2_RLC5_RB_BASE_BASE_IDX = 2 # macro -mmSDMA2_RLC5_RB_BASE_HI = 0x02ea # macro -mmSDMA2_RLC5_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC5_RB_RPTR = 0x02eb # macro -mmSDMA2_RLC5_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC5_RB_RPTR_HI = 0x02ec # macro -mmSDMA2_RLC5_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC5_RB_WPTR = 0x02ed # macro -mmSDMA2_RLC5_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC5_RB_WPTR_HI = 0x02ee # macro -mmSDMA2_RLC5_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC5_RB_WPTR_POLL_CNTL = 0x02ef # macro -mmSDMA2_RLC5_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC5_RB_RPTR_ADDR_HI = 0x02f0 # macro -mmSDMA2_RLC5_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC5_RB_RPTR_ADDR_LO = 0x02f1 # macro -mmSDMA2_RLC5_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC5_IB_CNTL = 0x02f2 # macro -mmSDMA2_RLC5_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC5_IB_RPTR = 0x02f3 # macro -mmSDMA2_RLC5_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC5_IB_OFFSET = 0x02f4 # macro -mmSDMA2_RLC5_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_RLC5_IB_BASE_LO = 0x02f5 # macro -mmSDMA2_RLC5_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC5_IB_BASE_HI = 0x02f6 # macro -mmSDMA2_RLC5_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC5_IB_SIZE = 0x02f7 # macro -mmSDMA2_RLC5_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA2_RLC5_SKIP_CNTL = 0x02f8 # macro -mmSDMA2_RLC5_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC5_CONTEXT_STATUS = 0x02f9 # macro -mmSDMA2_RLC5_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA2_RLC5_DOORBELL = 0x02fa # macro -mmSDMA2_RLC5_DOORBELL_BASE_IDX = 2 # macro -mmSDMA2_RLC5_STATUS = 0x0310 # macro -mmSDMA2_RLC5_STATUS_BASE_IDX = 2 # macro -mmSDMA2_RLC5_DOORBELL_LOG = 0x0311 # macro -mmSDMA2_RLC5_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA2_RLC5_WATERMARK = 0x0312 # macro -mmSDMA2_RLC5_WATERMARK_BASE_IDX = 2 # macro -mmSDMA2_RLC5_DOORBELL_OFFSET = 0x0313 # macro -mmSDMA2_RLC5_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_RLC5_CSA_ADDR_LO = 0x0314 # macro -mmSDMA2_RLC5_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC5_CSA_ADDR_HI = 0x0315 # macro -mmSDMA2_RLC5_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC5_IB_SUB_REMAIN = 0x0317 # macro -mmSDMA2_RLC5_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA2_RLC5_PREEMPT = 0x0318 # macro -mmSDMA2_RLC5_PREEMPT_BASE_IDX = 2 # macro -mmSDMA2_RLC5_DUMMY_REG = 0x0319 # macro -mmSDMA2_RLC5_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA2_RLC5_RB_WPTR_POLL_ADDR_HI = 0x031a # macro -mmSDMA2_RLC5_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC5_RB_WPTR_POLL_ADDR_LO = 0x031b # macro -mmSDMA2_RLC5_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC5_RB_AQL_CNTL = 0x031c # macro -mmSDMA2_RLC5_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC5_MINOR_PTR_UPDATE = 0x031d # macro -mmSDMA2_RLC5_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA2_RLC5_MIDCMD_DATA0 = 0x0328 # macro -mmSDMA2_RLC5_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA2_RLC5_MIDCMD_DATA1 = 0x0329 # macro -mmSDMA2_RLC5_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA2_RLC5_MIDCMD_DATA2 = 0x032a # macro -mmSDMA2_RLC5_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA2_RLC5_MIDCMD_DATA3 = 0x032b # macro -mmSDMA2_RLC5_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA2_RLC5_MIDCMD_DATA4 = 0x032c # macro -mmSDMA2_RLC5_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA2_RLC5_MIDCMD_DATA5 = 0x032d # macro -mmSDMA2_RLC5_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA2_RLC5_MIDCMD_DATA6 = 0x032e # macro -mmSDMA2_RLC5_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA2_RLC5_MIDCMD_DATA7 = 0x032f # macro -mmSDMA2_RLC5_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA2_RLC5_MIDCMD_DATA8 = 0x0330 # macro -mmSDMA2_RLC5_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA2_RLC5_MIDCMD_DATA9 = 0x0331 # macro -mmSDMA2_RLC5_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA2_RLC5_MIDCMD_DATA10 = 0x0332 # macro -mmSDMA2_RLC5_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA2_RLC5_MIDCMD_CNTL = 0x0333 # macro -mmSDMA2_RLC5_MIDCMD_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC6_RB_CNTL = 0x0340 # macro -mmSDMA2_RLC6_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC6_RB_BASE = 0x0341 # macro -mmSDMA2_RLC6_RB_BASE_BASE_IDX = 2 # macro -mmSDMA2_RLC6_RB_BASE_HI = 0x0342 # macro -mmSDMA2_RLC6_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC6_RB_RPTR = 0x0343 # macro -mmSDMA2_RLC6_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC6_RB_RPTR_HI = 0x0344 # macro -mmSDMA2_RLC6_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC6_RB_WPTR = 0x0345 # macro -mmSDMA2_RLC6_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC6_RB_WPTR_HI = 0x0346 # macro -mmSDMA2_RLC6_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC6_RB_WPTR_POLL_CNTL = 0x0347 # macro -mmSDMA2_RLC6_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC6_RB_RPTR_ADDR_HI = 0x0348 # macro -mmSDMA2_RLC6_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC6_RB_RPTR_ADDR_LO = 0x0349 # macro -mmSDMA2_RLC6_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC6_IB_CNTL = 0x034a # macro -mmSDMA2_RLC6_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC6_IB_RPTR = 0x034b # macro -mmSDMA2_RLC6_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC6_IB_OFFSET = 0x034c # macro -mmSDMA2_RLC6_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_RLC6_IB_BASE_LO = 0x034d # macro -mmSDMA2_RLC6_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC6_IB_BASE_HI = 0x034e # macro -mmSDMA2_RLC6_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC6_IB_SIZE = 0x034f # macro -mmSDMA2_RLC6_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA2_RLC6_SKIP_CNTL = 0x0350 # macro -mmSDMA2_RLC6_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC6_CONTEXT_STATUS = 0x0351 # macro -mmSDMA2_RLC6_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA2_RLC6_DOORBELL = 0x0352 # macro -mmSDMA2_RLC6_DOORBELL_BASE_IDX = 2 # macro -mmSDMA2_RLC6_STATUS = 0x0368 # macro -mmSDMA2_RLC6_STATUS_BASE_IDX = 2 # macro -mmSDMA2_RLC6_DOORBELL_LOG = 0x0369 # macro -mmSDMA2_RLC6_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA2_RLC6_WATERMARK = 0x036a # macro -mmSDMA2_RLC6_WATERMARK_BASE_IDX = 2 # macro -mmSDMA2_RLC6_DOORBELL_OFFSET = 0x036b # macro -mmSDMA2_RLC6_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_RLC6_CSA_ADDR_LO = 0x036c # macro -mmSDMA2_RLC6_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC6_CSA_ADDR_HI = 0x036d # macro -mmSDMA2_RLC6_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC6_IB_SUB_REMAIN = 0x036f # macro -mmSDMA2_RLC6_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA2_RLC6_PREEMPT = 0x0370 # macro -mmSDMA2_RLC6_PREEMPT_BASE_IDX = 2 # macro -mmSDMA2_RLC6_DUMMY_REG = 0x0371 # macro -mmSDMA2_RLC6_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA2_RLC6_RB_WPTR_POLL_ADDR_HI = 0x0372 # macro -mmSDMA2_RLC6_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC6_RB_WPTR_POLL_ADDR_LO = 0x0373 # macro -mmSDMA2_RLC6_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC6_RB_AQL_CNTL = 0x0374 # macro -mmSDMA2_RLC6_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC6_MINOR_PTR_UPDATE = 0x0375 # macro -mmSDMA2_RLC6_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA2_RLC6_MIDCMD_DATA0 = 0x0380 # macro -mmSDMA2_RLC6_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA2_RLC6_MIDCMD_DATA1 = 0x0381 # macro -mmSDMA2_RLC6_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA2_RLC6_MIDCMD_DATA2 = 0x0382 # macro -mmSDMA2_RLC6_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA2_RLC6_MIDCMD_DATA3 = 0x0383 # macro -mmSDMA2_RLC6_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA2_RLC6_MIDCMD_DATA4 = 0x0384 # macro -mmSDMA2_RLC6_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA2_RLC6_MIDCMD_DATA5 = 0x0385 # macro -mmSDMA2_RLC6_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA2_RLC6_MIDCMD_DATA6 = 0x0386 # macro -mmSDMA2_RLC6_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA2_RLC6_MIDCMD_DATA7 = 0x0387 # macro -mmSDMA2_RLC6_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA2_RLC6_MIDCMD_DATA8 = 0x0388 # macro -mmSDMA2_RLC6_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA2_RLC6_MIDCMD_DATA9 = 0x0389 # macro -mmSDMA2_RLC6_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA2_RLC6_MIDCMD_DATA10 = 0x038a # macro -mmSDMA2_RLC6_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA2_RLC6_MIDCMD_CNTL = 0x038b # macro -mmSDMA2_RLC6_MIDCMD_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC7_RB_CNTL = 0x0398 # macro -mmSDMA2_RLC7_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC7_RB_BASE = 0x0399 # macro -mmSDMA2_RLC7_RB_BASE_BASE_IDX = 2 # macro -mmSDMA2_RLC7_RB_BASE_HI = 0x039a # macro -mmSDMA2_RLC7_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC7_RB_RPTR = 0x039b # macro -mmSDMA2_RLC7_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC7_RB_RPTR_HI = 0x039c # macro -mmSDMA2_RLC7_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC7_RB_WPTR = 0x039d # macro -mmSDMA2_RLC7_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC7_RB_WPTR_HI = 0x039e # macro -mmSDMA2_RLC7_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC7_RB_WPTR_POLL_CNTL = 0x039f # macro -mmSDMA2_RLC7_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC7_RB_RPTR_ADDR_HI = 0x03a0 # macro -mmSDMA2_RLC7_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC7_RB_RPTR_ADDR_LO = 0x03a1 # macro -mmSDMA2_RLC7_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC7_IB_CNTL = 0x03a2 # macro -mmSDMA2_RLC7_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC7_IB_RPTR = 0x03a3 # macro -mmSDMA2_RLC7_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA2_RLC7_IB_OFFSET = 0x03a4 # macro -mmSDMA2_RLC7_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_RLC7_IB_BASE_LO = 0x03a5 # macro -mmSDMA2_RLC7_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC7_IB_BASE_HI = 0x03a6 # macro -mmSDMA2_RLC7_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC7_IB_SIZE = 0x03a7 # macro -mmSDMA2_RLC7_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA2_RLC7_SKIP_CNTL = 0x03a8 # macro -mmSDMA2_RLC7_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC7_CONTEXT_STATUS = 0x03a9 # macro -mmSDMA2_RLC7_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA2_RLC7_DOORBELL = 0x03aa # macro -mmSDMA2_RLC7_DOORBELL_BASE_IDX = 2 # macro -mmSDMA2_RLC7_STATUS = 0x03c0 # macro -mmSDMA2_RLC7_STATUS_BASE_IDX = 2 # macro -mmSDMA2_RLC7_DOORBELL_LOG = 0x03c1 # macro -mmSDMA2_RLC7_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA2_RLC7_WATERMARK = 0x03c2 # macro -mmSDMA2_RLC7_WATERMARK_BASE_IDX = 2 # macro -mmSDMA2_RLC7_DOORBELL_OFFSET = 0x03c3 # macro -mmSDMA2_RLC7_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA2_RLC7_CSA_ADDR_LO = 0x03c4 # macro -mmSDMA2_RLC7_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC7_CSA_ADDR_HI = 0x03c5 # macro -mmSDMA2_RLC7_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC7_IB_SUB_REMAIN = 0x03c7 # macro -mmSDMA2_RLC7_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA2_RLC7_PREEMPT = 0x03c8 # macro -mmSDMA2_RLC7_PREEMPT_BASE_IDX = 2 # macro -mmSDMA2_RLC7_DUMMY_REG = 0x03c9 # macro -mmSDMA2_RLC7_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA2_RLC7_RB_WPTR_POLL_ADDR_HI = 0x03ca # macro -mmSDMA2_RLC7_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA2_RLC7_RB_WPTR_POLL_ADDR_LO = 0x03cb # macro -mmSDMA2_RLC7_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA2_RLC7_RB_AQL_CNTL = 0x03cc # macro -mmSDMA2_RLC7_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA2_RLC7_MINOR_PTR_UPDATE = 0x03cd # macro -mmSDMA2_RLC7_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA2_RLC7_MIDCMD_DATA0 = 0x03d8 # macro -mmSDMA2_RLC7_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA2_RLC7_MIDCMD_DATA1 = 0x03d9 # macro -mmSDMA2_RLC7_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA2_RLC7_MIDCMD_DATA2 = 0x03da # macro -mmSDMA2_RLC7_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA2_RLC7_MIDCMD_DATA3 = 0x03db # macro -mmSDMA2_RLC7_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA2_RLC7_MIDCMD_DATA4 = 0x03dc # macro -mmSDMA2_RLC7_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA2_RLC7_MIDCMD_DATA5 = 0x03dd # macro -mmSDMA2_RLC7_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA2_RLC7_MIDCMD_DATA6 = 0x03de # macro -mmSDMA2_RLC7_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA2_RLC7_MIDCMD_DATA7 = 0x03df # macro -mmSDMA2_RLC7_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA2_RLC7_MIDCMD_DATA8 = 0x03e0 # macro -mmSDMA2_RLC7_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA2_RLC7_MIDCMD_DATA9 = 0x03e1 # macro -mmSDMA2_RLC7_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA2_RLC7_MIDCMD_DATA10 = 0x03e2 # macro -mmSDMA2_RLC7_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA2_RLC7_MIDCMD_CNTL = 0x03e3 # macro -mmSDMA2_RLC7_MIDCMD_CNTL_BASE_IDX = 2 # macro -mmSDMA3_DEC_START = 0x0400 # macro -mmSDMA3_DEC_START_BASE_IDX = 2 # macro -mmSDMA3_GLOBAL_TIMESTAMP_LO = 0x040f # macro -mmSDMA3_GLOBAL_TIMESTAMP_LO_BASE_IDX = 2 # macro -mmSDMA3_GLOBAL_TIMESTAMP_HI = 0x0410 # macro -mmSDMA3_GLOBAL_TIMESTAMP_HI_BASE_IDX = 2 # macro -mmSDMA3_PG_CNTL = 0x0416 # macro -mmSDMA3_PG_CNTL_BASE_IDX = 2 # macro -mmSDMA3_PG_CTX_LO = 0x0417 # macro -mmSDMA3_PG_CTX_LO_BASE_IDX = 2 # macro -mmSDMA3_PG_CTX_HI = 0x0418 # macro -mmSDMA3_PG_CTX_HI_BASE_IDX = 2 # macro -mmSDMA3_PG_CTX_CNTL = 0x0419 # macro -mmSDMA3_PG_CTX_CNTL_BASE_IDX = 2 # macro -mmSDMA3_POWER_CNTL = 0x041a # macro -mmSDMA3_POWER_CNTL_BASE_IDX = 2 # macro -mmSDMA3_CLK_CTRL = 0x041b # macro -mmSDMA3_CLK_CTRL_BASE_IDX = 2 # macro -mmSDMA3_CNTL = 0x041c # macro -mmSDMA3_CNTL_BASE_IDX = 2 # macro -mmSDMA3_CHICKEN_BITS = 0x041d # macro -mmSDMA3_CHICKEN_BITS_BASE_IDX = 2 # macro -mmSDMA3_GB_ADDR_CONFIG = 0x041e # macro -mmSDMA3_GB_ADDR_CONFIG_BASE_IDX = 2 # macro -mmSDMA3_GB_ADDR_CONFIG_READ = 0x041f # macro -mmSDMA3_GB_ADDR_CONFIG_READ_BASE_IDX = 2 # macro -mmSDMA3_RB_RPTR_FETCH_HI = 0x0420 # macro -mmSDMA3_RB_RPTR_FETCH_HI_BASE_IDX = 2 # macro -mmSDMA3_SEM_WAIT_FAIL_TIMER_CNTL = 0x0421 # macro -mmSDMA3_SEM_WAIT_FAIL_TIMER_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RB_RPTR_FETCH = 0x0422 # macro -mmSDMA3_RB_RPTR_FETCH_BASE_IDX = 2 # macro -mmSDMA3_IB_OFFSET_FETCH = 0x0423 # macro -mmSDMA3_IB_OFFSET_FETCH_BASE_IDX = 2 # macro -mmSDMA3_PROGRAM = 0x0424 # macro -mmSDMA3_PROGRAM_BASE_IDX = 2 # macro -mmSDMA3_STATUS_REG = 0x0425 # macro -mmSDMA3_STATUS_REG_BASE_IDX = 2 # macro -mmSDMA3_STATUS1_REG = 0x0426 # macro -mmSDMA3_STATUS1_REG_BASE_IDX = 2 # macro -mmSDMA3_RD_BURST_CNTL = 0x0427 # macro -mmSDMA3_RD_BURST_CNTL_BASE_IDX = 2 # macro -mmSDMA3_HBM_PAGE_CONFIG = 0x0428 # macro -mmSDMA3_HBM_PAGE_CONFIG_BASE_IDX = 2 # macro -mmSDMA3_UCODE_CHECKSUM = 0x0429 # macro -mmSDMA3_UCODE_CHECKSUM_BASE_IDX = 2 # macro -mmSDMA3_F32_CNTL = 0x042a # macro -mmSDMA3_F32_CNTL_BASE_IDX = 2 # macro -mmSDMA3_FREEZE = 0x042b # macro -mmSDMA3_FREEZE_BASE_IDX = 2 # macro -mmSDMA3_PHASE0_QUANTUM = 0x042c # macro -mmSDMA3_PHASE0_QUANTUM_BASE_IDX = 2 # macro -mmSDMA3_PHASE1_QUANTUM = 0x042d # macro -mmSDMA3_PHASE1_QUANTUM_BASE_IDX = 2 # macro -mmSDMA3_EDC_CONFIG = 0x0432 # macro -mmSDMA3_EDC_CONFIG_BASE_IDX = 2 # macro -mmSDMA3_BA_THRESHOLD = 0x0433 # macro -mmSDMA3_BA_THRESHOLD_BASE_IDX = 2 # macro -mmSDMA3_ID = 0x0434 # macro -mmSDMA3_ID_BASE_IDX = 2 # macro -mmSDMA3_VERSION = 0x0435 # macro -mmSDMA3_VERSION_BASE_IDX = 2 # macro -mmSDMA3_EDC_COUNTER = 0x0436 # macro -mmSDMA3_EDC_COUNTER_BASE_IDX = 2 # macro -mmSDMA3_EDC_COUNTER_CLEAR = 0x0437 # macro -mmSDMA3_EDC_COUNTER_CLEAR_BASE_IDX = 2 # macro -mmSDMA3_STATUS2_REG = 0x0438 # macro -mmSDMA3_STATUS2_REG_BASE_IDX = 2 # macro -mmSDMA3_ATOMIC_CNTL = 0x0439 # macro -mmSDMA3_ATOMIC_CNTL_BASE_IDX = 2 # macro -mmSDMA3_ATOMIC_PREOP_LO = 0x043a # macro -mmSDMA3_ATOMIC_PREOP_LO_BASE_IDX = 2 # macro -mmSDMA3_ATOMIC_PREOP_HI = 0x043b # macro -mmSDMA3_ATOMIC_PREOP_HI_BASE_IDX = 2 # macro -mmSDMA3_UTCL1_CNTL = 0x043c # macro -mmSDMA3_UTCL1_CNTL_BASE_IDX = 2 # macro -mmSDMA3_UTCL1_WATERMK = 0x043d # macro -mmSDMA3_UTCL1_WATERMK_BASE_IDX = 2 # macro -mmSDMA3_UTCL1_RD_STATUS = 0x043e # macro -mmSDMA3_UTCL1_RD_STATUS_BASE_IDX = 2 # macro -mmSDMA3_UTCL1_WR_STATUS = 0x043f # macro -mmSDMA3_UTCL1_WR_STATUS_BASE_IDX = 2 # macro -mmSDMA3_UTCL1_INV0 = 0x0440 # macro -mmSDMA3_UTCL1_INV0_BASE_IDX = 2 # macro -mmSDMA3_UTCL1_INV1 = 0x0441 # macro -mmSDMA3_UTCL1_INV1_BASE_IDX = 2 # macro -mmSDMA3_UTCL1_INV2 = 0x0442 # macro -mmSDMA3_UTCL1_INV2_BASE_IDX = 2 # macro -mmSDMA3_UTCL1_RD_XNACK0 = 0x0443 # macro -mmSDMA3_UTCL1_RD_XNACK0_BASE_IDX = 2 # macro -mmSDMA3_UTCL1_RD_XNACK1 = 0x0444 # macro -mmSDMA3_UTCL1_RD_XNACK1_BASE_IDX = 2 # macro -mmSDMA3_UTCL1_WR_XNACK0 = 0x0445 # macro -mmSDMA3_UTCL1_WR_XNACK0_BASE_IDX = 2 # macro -mmSDMA3_UTCL1_WR_XNACK1 = 0x0446 # macro -mmSDMA3_UTCL1_WR_XNACK1_BASE_IDX = 2 # macro -mmSDMA3_UTCL1_TIMEOUT = 0x0447 # macro -mmSDMA3_UTCL1_TIMEOUT_BASE_IDX = 2 # macro -mmSDMA3_UTCL1_PAGE = 0x0448 # macro -mmSDMA3_UTCL1_PAGE_BASE_IDX = 2 # macro -mmSDMA3_RELAX_ORDERING_LUT = 0x044a # macro -mmSDMA3_RELAX_ORDERING_LUT_BASE_IDX = 2 # macro -mmSDMA3_CHICKEN_BITS_2 = 0x044b # macro -mmSDMA3_CHICKEN_BITS_2_BASE_IDX = 2 # macro -mmSDMA3_STATUS3_REG = 0x044c # macro -mmSDMA3_STATUS3_REG_BASE_IDX = 2 # macro -mmSDMA3_PHYSICAL_ADDR_LO = 0x044d # macro -mmSDMA3_PHYSICAL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_PHYSICAL_ADDR_HI = 0x044e # macro -mmSDMA3_PHYSICAL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_PHASE2_QUANTUM = 0x044f # macro -mmSDMA3_PHASE2_QUANTUM_BASE_IDX = 2 # macro -mmSDMA3_ERROR_LOG = 0x0450 # macro -mmSDMA3_ERROR_LOG_BASE_IDX = 2 # macro -mmSDMA3_PUB_DUMMY_REG0 = 0x0451 # macro -mmSDMA3_PUB_DUMMY_REG0_BASE_IDX = 2 # macro -mmSDMA3_PUB_DUMMY_REG1 = 0x0452 # macro -mmSDMA3_PUB_DUMMY_REG1_BASE_IDX = 2 # macro -mmSDMA3_PUB_DUMMY_REG2 = 0x0453 # macro -mmSDMA3_PUB_DUMMY_REG2_BASE_IDX = 2 # macro -mmSDMA3_PUB_DUMMY_REG3 = 0x0454 # macro -mmSDMA3_PUB_DUMMY_REG3_BASE_IDX = 2 # macro -mmSDMA3_F32_COUNTER = 0x0455 # macro -mmSDMA3_F32_COUNTER_BASE_IDX = 2 # macro -mmSDMA3_CRD_CNTL = 0x045b # macro -mmSDMA3_CRD_CNTL_BASE_IDX = 2 # macro -mmSDMA3_AQL_STATUS = 0x045f # macro -mmSDMA3_AQL_STATUS_BASE_IDX = 2 # macro -mmSDMA3_EA_DBIT_ADDR_DATA = 0x0460 # macro -mmSDMA3_EA_DBIT_ADDR_DATA_BASE_IDX = 2 # macro -mmSDMA3_EA_DBIT_ADDR_INDEX = 0x0461 # macro -mmSDMA3_EA_DBIT_ADDR_INDEX_BASE_IDX = 2 # macro -mmSDMA3_TLBI_GCR_CNTL = 0x0462 # macro -mmSDMA3_TLBI_GCR_CNTL_BASE_IDX = 2 # macro -mmSDMA3_TILING_CONFIG = 0x0463 # macro -mmSDMA3_TILING_CONFIG_BASE_IDX = 2 # macro -mmSDMA3_INT_STATUS = 0x0470 # macro -mmSDMA3_INT_STATUS_BASE_IDX = 2 # macro -mmSDMA3_HOLE_ADDR_LO = 0x0472 # macro -mmSDMA3_HOLE_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_HOLE_ADDR_HI = 0x0473 # macro -mmSDMA3_HOLE_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_CLOCK_GATING_REG = 0x0475 # macro -mmSDMA3_CLOCK_GATING_REG_BASE_IDX = 2 # macro -mmSDMA3_STATUS4_REG = 0x0476 # macro -mmSDMA3_STATUS4_REG_BASE_IDX = 2 # macro -mmSDMA3_SCRATCH_RAM_DATA = 0x0477 # macro -mmSDMA3_SCRATCH_RAM_DATA_BASE_IDX = 2 # macro -mmSDMA3_SCRATCH_RAM_ADDR = 0x0478 # macro -mmSDMA3_SCRATCH_RAM_ADDR_BASE_IDX = 2 # macro -mmSDMA3_TIMESTAMP_CNTL = 0x0479 # macro -mmSDMA3_TIMESTAMP_CNTL_BASE_IDX = 2 # macro -mmSDMA3_STATUS5_REG = 0x047a # macro -mmSDMA3_STATUS5_REG_BASE_IDX = 2 # macro -mmSDMA3_QUEUE_RESET_REQ = 0x047b # macro -mmSDMA3_QUEUE_RESET_REQ_BASE_IDX = 2 # macro -mmSDMA3_GFX_RB_CNTL = 0x0480 # macro -mmSDMA3_GFX_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_GFX_RB_BASE = 0x0481 # macro -mmSDMA3_GFX_RB_BASE_BASE_IDX = 2 # macro -mmSDMA3_GFX_RB_BASE_HI = 0x0482 # macro -mmSDMA3_GFX_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_GFX_RB_RPTR = 0x0483 # macro -mmSDMA3_GFX_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_GFX_RB_RPTR_HI = 0x0484 # macro -mmSDMA3_GFX_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_GFX_RB_WPTR = 0x0485 # macro -mmSDMA3_GFX_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA3_GFX_RB_WPTR_HI = 0x0486 # macro -mmSDMA3_GFX_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_GFX_RB_WPTR_POLL_CNTL = 0x0487 # macro -mmSDMA3_GFX_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_GFX_RB_RPTR_ADDR_HI = 0x0488 # macro -mmSDMA3_GFX_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_GFX_RB_RPTR_ADDR_LO = 0x0489 # macro -mmSDMA3_GFX_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_GFX_IB_CNTL = 0x048a # macro -mmSDMA3_GFX_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_GFX_IB_RPTR = 0x048b # macro -mmSDMA3_GFX_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_GFX_IB_OFFSET = 0x048c # macro -mmSDMA3_GFX_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_GFX_IB_BASE_LO = 0x048d # macro -mmSDMA3_GFX_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA3_GFX_IB_BASE_HI = 0x048e # macro -mmSDMA3_GFX_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_GFX_IB_SIZE = 0x048f # macro -mmSDMA3_GFX_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA3_GFX_SKIP_CNTL = 0x0490 # macro -mmSDMA3_GFX_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA3_GFX_CONTEXT_STATUS = 0x0491 # macro -mmSDMA3_GFX_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA3_GFX_DOORBELL = 0x0492 # macro -mmSDMA3_GFX_DOORBELL_BASE_IDX = 2 # macro -mmSDMA3_GFX_CONTEXT_CNTL = 0x0493 # macro -mmSDMA3_GFX_CONTEXT_CNTL_BASE_IDX = 2 # macro -mmSDMA3_GFX_STATUS = 0x04a8 # macro -mmSDMA3_GFX_STATUS_BASE_IDX = 2 # macro -mmSDMA3_GFX_DOORBELL_LOG = 0x04a9 # macro -mmSDMA3_GFX_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA3_GFX_WATERMARK = 0x04aa # macro -mmSDMA3_GFX_WATERMARK_BASE_IDX = 2 # macro -mmSDMA3_GFX_DOORBELL_OFFSET = 0x04ab # macro -mmSDMA3_GFX_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_GFX_CSA_ADDR_LO = 0x04ac # macro -mmSDMA3_GFX_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_GFX_CSA_ADDR_HI = 0x04ad # macro -mmSDMA3_GFX_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_GFX_IB_SUB_REMAIN = 0x04af # macro -mmSDMA3_GFX_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA3_GFX_PREEMPT = 0x04b0 # macro -mmSDMA3_GFX_PREEMPT_BASE_IDX = 2 # macro -mmSDMA3_GFX_DUMMY_REG = 0x04b1 # macro -mmSDMA3_GFX_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA3_GFX_RB_WPTR_POLL_ADDR_HI = 0x04b2 # macro -mmSDMA3_GFX_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_GFX_RB_WPTR_POLL_ADDR_LO = 0x04b3 # macro -mmSDMA3_GFX_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_GFX_RB_AQL_CNTL = 0x04b4 # macro -mmSDMA3_GFX_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_GFX_MINOR_PTR_UPDATE = 0x04b5 # macro -mmSDMA3_GFX_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA3_GFX_MIDCMD_DATA0 = 0x04c0 # macro -mmSDMA3_GFX_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA3_GFX_MIDCMD_DATA1 = 0x04c1 # macro -mmSDMA3_GFX_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA3_GFX_MIDCMD_DATA2 = 0x04c2 # macro -mmSDMA3_GFX_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA3_GFX_MIDCMD_DATA3 = 0x04c3 # macro -mmSDMA3_GFX_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA3_GFX_MIDCMD_DATA4 = 0x04c4 # macro -mmSDMA3_GFX_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA3_GFX_MIDCMD_DATA5 = 0x04c5 # macro -mmSDMA3_GFX_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA3_GFX_MIDCMD_DATA6 = 0x04c6 # macro -mmSDMA3_GFX_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA3_GFX_MIDCMD_DATA7 = 0x04c7 # macro -mmSDMA3_GFX_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA3_GFX_MIDCMD_DATA8 = 0x04c8 # macro -mmSDMA3_GFX_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA3_GFX_MIDCMD_DATA9 = 0x04c9 # macro -mmSDMA3_GFX_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA3_GFX_MIDCMD_DATA10 = 0x04ca # macro -mmSDMA3_GFX_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA3_GFX_MIDCMD_CNTL = 0x04cb # macro -mmSDMA3_GFX_MIDCMD_CNTL_BASE_IDX = 2 # macro -mmSDMA3_PAGE_RB_CNTL = 0x04d8 # macro -mmSDMA3_PAGE_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_PAGE_RB_BASE = 0x04d9 # macro -mmSDMA3_PAGE_RB_BASE_BASE_IDX = 2 # macro -mmSDMA3_PAGE_RB_BASE_HI = 0x04da # macro -mmSDMA3_PAGE_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_PAGE_RB_RPTR = 0x04db # macro -mmSDMA3_PAGE_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_PAGE_RB_RPTR_HI = 0x04dc # macro -mmSDMA3_PAGE_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_PAGE_RB_WPTR = 0x04dd # macro -mmSDMA3_PAGE_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA3_PAGE_RB_WPTR_HI = 0x04de # macro -mmSDMA3_PAGE_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_PAGE_RB_WPTR_POLL_CNTL = 0x04df # macro -mmSDMA3_PAGE_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_PAGE_RB_RPTR_ADDR_HI = 0x04e0 # macro -mmSDMA3_PAGE_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_PAGE_RB_RPTR_ADDR_LO = 0x04e1 # macro -mmSDMA3_PAGE_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_PAGE_IB_CNTL = 0x04e2 # macro -mmSDMA3_PAGE_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_PAGE_IB_RPTR = 0x04e3 # macro -mmSDMA3_PAGE_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_PAGE_IB_OFFSET = 0x04e4 # macro -mmSDMA3_PAGE_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_PAGE_IB_BASE_LO = 0x04e5 # macro -mmSDMA3_PAGE_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA3_PAGE_IB_BASE_HI = 0x04e6 # macro -mmSDMA3_PAGE_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_PAGE_IB_SIZE = 0x04e7 # macro -mmSDMA3_PAGE_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA3_PAGE_SKIP_CNTL = 0x04e8 # macro -mmSDMA3_PAGE_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA3_PAGE_CONTEXT_STATUS = 0x04e9 # macro -mmSDMA3_PAGE_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA3_PAGE_DOORBELL = 0x04ea # macro -mmSDMA3_PAGE_DOORBELL_BASE_IDX = 2 # macro -mmSDMA3_PAGE_STATUS = 0x0500 # macro -mmSDMA3_PAGE_STATUS_BASE_IDX = 2 # macro -mmSDMA3_PAGE_DOORBELL_LOG = 0x0501 # macro -mmSDMA3_PAGE_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA3_PAGE_WATERMARK = 0x0502 # macro -mmSDMA3_PAGE_WATERMARK_BASE_IDX = 2 # macro -mmSDMA3_PAGE_DOORBELL_OFFSET = 0x0503 # macro -mmSDMA3_PAGE_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_PAGE_CSA_ADDR_LO = 0x0504 # macro -mmSDMA3_PAGE_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_PAGE_CSA_ADDR_HI = 0x0505 # macro -mmSDMA3_PAGE_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_PAGE_IB_SUB_REMAIN = 0x0507 # macro -mmSDMA3_PAGE_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA3_PAGE_PREEMPT = 0x0508 # macro -mmSDMA3_PAGE_PREEMPT_BASE_IDX = 2 # macro -mmSDMA3_PAGE_DUMMY_REG = 0x0509 # macro -mmSDMA3_PAGE_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA3_PAGE_RB_WPTR_POLL_ADDR_HI = 0x050a # macro -mmSDMA3_PAGE_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_PAGE_RB_WPTR_POLL_ADDR_LO = 0x050b # macro -mmSDMA3_PAGE_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_PAGE_RB_AQL_CNTL = 0x050c # macro -mmSDMA3_PAGE_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_PAGE_MINOR_PTR_UPDATE = 0x050d # macro -mmSDMA3_PAGE_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA3_PAGE_MIDCMD_DATA0 = 0x0518 # macro -mmSDMA3_PAGE_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA3_PAGE_MIDCMD_DATA1 = 0x0519 # macro -mmSDMA3_PAGE_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA3_PAGE_MIDCMD_DATA2 = 0x051a # macro -mmSDMA3_PAGE_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA3_PAGE_MIDCMD_DATA3 = 0x051b # macro -mmSDMA3_PAGE_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA3_PAGE_MIDCMD_DATA4 = 0x051c # macro -mmSDMA3_PAGE_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA3_PAGE_MIDCMD_DATA5 = 0x051d # macro -mmSDMA3_PAGE_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA3_PAGE_MIDCMD_DATA6 = 0x051e # macro -mmSDMA3_PAGE_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA3_PAGE_MIDCMD_DATA7 = 0x051f # macro -mmSDMA3_PAGE_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA3_PAGE_MIDCMD_DATA8 = 0x0520 # macro -mmSDMA3_PAGE_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA3_PAGE_MIDCMD_DATA9 = 0x0521 # macro -mmSDMA3_PAGE_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA3_PAGE_MIDCMD_DATA10 = 0x0522 # macro -mmSDMA3_PAGE_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA3_PAGE_MIDCMD_CNTL = 0x0523 # macro -mmSDMA3_PAGE_MIDCMD_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC0_RB_CNTL = 0x0530 # macro -mmSDMA3_RLC0_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC0_RB_BASE = 0x0531 # macro -mmSDMA3_RLC0_RB_BASE_BASE_IDX = 2 # macro -mmSDMA3_RLC0_RB_BASE_HI = 0x0532 # macro -mmSDMA3_RLC0_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC0_RB_RPTR = 0x0533 # macro -mmSDMA3_RLC0_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC0_RB_RPTR_HI = 0x0534 # macro -mmSDMA3_RLC0_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC0_RB_WPTR = 0x0535 # macro -mmSDMA3_RLC0_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC0_RB_WPTR_HI = 0x0536 # macro -mmSDMA3_RLC0_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC0_RB_WPTR_POLL_CNTL = 0x0537 # macro -mmSDMA3_RLC0_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC0_RB_RPTR_ADDR_HI = 0x0538 # macro -mmSDMA3_RLC0_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC0_RB_RPTR_ADDR_LO = 0x0539 # macro -mmSDMA3_RLC0_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC0_IB_CNTL = 0x053a # macro -mmSDMA3_RLC0_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC0_IB_RPTR = 0x053b # macro -mmSDMA3_RLC0_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC0_IB_OFFSET = 0x053c # macro -mmSDMA3_RLC0_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_RLC0_IB_BASE_LO = 0x053d # macro -mmSDMA3_RLC0_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC0_IB_BASE_HI = 0x053e # macro -mmSDMA3_RLC0_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC0_IB_SIZE = 0x053f # macro -mmSDMA3_RLC0_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA3_RLC0_SKIP_CNTL = 0x0540 # macro -mmSDMA3_RLC0_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC0_CONTEXT_STATUS = 0x0541 # macro -mmSDMA3_RLC0_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA3_RLC0_DOORBELL = 0x0542 # macro -mmSDMA3_RLC0_DOORBELL_BASE_IDX = 2 # macro -mmSDMA3_RLC0_STATUS = 0x0558 # macro -mmSDMA3_RLC0_STATUS_BASE_IDX = 2 # macro -mmSDMA3_RLC0_DOORBELL_LOG = 0x0559 # macro -mmSDMA3_RLC0_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA3_RLC0_WATERMARK = 0x055a # macro -mmSDMA3_RLC0_WATERMARK_BASE_IDX = 2 # macro -mmSDMA3_RLC0_DOORBELL_OFFSET = 0x055b # macro -mmSDMA3_RLC0_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_RLC0_CSA_ADDR_LO = 0x055c # macro -mmSDMA3_RLC0_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC0_CSA_ADDR_HI = 0x055d # macro -mmSDMA3_RLC0_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC0_IB_SUB_REMAIN = 0x055f # macro -mmSDMA3_RLC0_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA3_RLC0_PREEMPT = 0x0560 # macro -mmSDMA3_RLC0_PREEMPT_BASE_IDX = 2 # macro -mmSDMA3_RLC0_DUMMY_REG = 0x0561 # macro -mmSDMA3_RLC0_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA3_RLC0_RB_WPTR_POLL_ADDR_HI = 0x0562 # macro -mmSDMA3_RLC0_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC0_RB_WPTR_POLL_ADDR_LO = 0x0563 # macro -mmSDMA3_RLC0_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC0_RB_AQL_CNTL = 0x0564 # macro -mmSDMA3_RLC0_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC0_MINOR_PTR_UPDATE = 0x0565 # macro -mmSDMA3_RLC0_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA3_RLC0_MIDCMD_DATA0 = 0x0570 # macro -mmSDMA3_RLC0_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA3_RLC0_MIDCMD_DATA1 = 0x0571 # macro -mmSDMA3_RLC0_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA3_RLC0_MIDCMD_DATA2 = 0x0572 # macro -mmSDMA3_RLC0_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA3_RLC0_MIDCMD_DATA3 = 0x0573 # macro -mmSDMA3_RLC0_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA3_RLC0_MIDCMD_DATA4 = 0x0574 # macro -mmSDMA3_RLC0_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA3_RLC0_MIDCMD_DATA5 = 0x0575 # macro -mmSDMA3_RLC0_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA3_RLC0_MIDCMD_DATA6 = 0x0576 # macro -mmSDMA3_RLC0_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA3_RLC0_MIDCMD_DATA7 = 0x0577 # macro -mmSDMA3_RLC0_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA3_RLC0_MIDCMD_DATA8 = 0x0578 # macro -mmSDMA3_RLC0_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA3_RLC0_MIDCMD_DATA9 = 0x0579 # macro -mmSDMA3_RLC0_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA3_RLC0_MIDCMD_DATA10 = 0x057a # macro -mmSDMA3_RLC0_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA3_RLC0_MIDCMD_CNTL = 0x057b # macro -mmSDMA3_RLC0_MIDCMD_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC1_RB_CNTL = 0x0588 # macro -mmSDMA3_RLC1_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC1_RB_BASE = 0x0589 # macro -mmSDMA3_RLC1_RB_BASE_BASE_IDX = 2 # macro -mmSDMA3_RLC1_RB_BASE_HI = 0x058a # macro -mmSDMA3_RLC1_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC1_RB_RPTR = 0x058b # macro -mmSDMA3_RLC1_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC1_RB_RPTR_HI = 0x058c # macro -mmSDMA3_RLC1_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC1_RB_WPTR = 0x058d # macro -mmSDMA3_RLC1_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC1_RB_WPTR_HI = 0x058e # macro -mmSDMA3_RLC1_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC1_RB_WPTR_POLL_CNTL = 0x058f # macro -mmSDMA3_RLC1_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC1_RB_RPTR_ADDR_HI = 0x0590 # macro -mmSDMA3_RLC1_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC1_RB_RPTR_ADDR_LO = 0x0591 # macro -mmSDMA3_RLC1_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC1_IB_CNTL = 0x0592 # macro -mmSDMA3_RLC1_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC1_IB_RPTR = 0x0593 # macro -mmSDMA3_RLC1_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC1_IB_OFFSET = 0x0594 # macro -mmSDMA3_RLC1_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_RLC1_IB_BASE_LO = 0x0595 # macro -mmSDMA3_RLC1_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC1_IB_BASE_HI = 0x0596 # macro -mmSDMA3_RLC1_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC1_IB_SIZE = 0x0597 # macro -mmSDMA3_RLC1_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA3_RLC1_SKIP_CNTL = 0x0598 # macro -mmSDMA3_RLC1_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC1_CONTEXT_STATUS = 0x0599 # macro -mmSDMA3_RLC1_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA3_RLC1_DOORBELL = 0x059a # macro -mmSDMA3_RLC1_DOORBELL_BASE_IDX = 2 # macro -mmSDMA3_RLC1_STATUS = 0x05b0 # macro -mmSDMA3_RLC1_STATUS_BASE_IDX = 2 # macro -mmSDMA3_RLC1_DOORBELL_LOG = 0x05b1 # macro -mmSDMA3_RLC1_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA3_RLC1_WATERMARK = 0x05b2 # macro -mmSDMA3_RLC1_WATERMARK_BASE_IDX = 2 # macro -mmSDMA3_RLC1_DOORBELL_OFFSET = 0x05b3 # macro -mmSDMA3_RLC1_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_RLC1_CSA_ADDR_LO = 0x05b4 # macro -mmSDMA3_RLC1_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC1_CSA_ADDR_HI = 0x05b5 # macro -mmSDMA3_RLC1_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC1_IB_SUB_REMAIN = 0x05b7 # macro -mmSDMA3_RLC1_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA3_RLC1_PREEMPT = 0x05b8 # macro -mmSDMA3_RLC1_PREEMPT_BASE_IDX = 2 # macro -mmSDMA3_RLC1_DUMMY_REG = 0x05b9 # macro -mmSDMA3_RLC1_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA3_RLC1_RB_WPTR_POLL_ADDR_HI = 0x05ba # macro -mmSDMA3_RLC1_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC1_RB_WPTR_POLL_ADDR_LO = 0x05bb # macro -mmSDMA3_RLC1_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC1_RB_AQL_CNTL = 0x05bc # macro -mmSDMA3_RLC1_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC1_MINOR_PTR_UPDATE = 0x05bd # macro -mmSDMA3_RLC1_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA3_RLC1_MIDCMD_DATA0 = 0x05c8 # macro -mmSDMA3_RLC1_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA3_RLC1_MIDCMD_DATA1 = 0x05c9 # macro -mmSDMA3_RLC1_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA3_RLC1_MIDCMD_DATA2 = 0x05ca # macro -mmSDMA3_RLC1_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA3_RLC1_MIDCMD_DATA3 = 0x05cb # macro -mmSDMA3_RLC1_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA3_RLC1_MIDCMD_DATA4 = 0x05cc # macro -mmSDMA3_RLC1_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA3_RLC1_MIDCMD_DATA5 = 0x05cd # macro -mmSDMA3_RLC1_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA3_RLC1_MIDCMD_DATA6 = 0x05ce # macro -mmSDMA3_RLC1_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA3_RLC1_MIDCMD_DATA7 = 0x05cf # macro -mmSDMA3_RLC1_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA3_RLC1_MIDCMD_DATA8 = 0x05d0 # macro -mmSDMA3_RLC1_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA3_RLC1_MIDCMD_DATA9 = 0x05d1 # macro -mmSDMA3_RLC1_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA3_RLC1_MIDCMD_DATA10 = 0x05d2 # macro -mmSDMA3_RLC1_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA3_RLC1_MIDCMD_CNTL = 0x05d3 # macro -mmSDMA3_RLC1_MIDCMD_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC2_RB_CNTL = 0x05e0 # macro -mmSDMA3_RLC2_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC2_RB_BASE = 0x05e1 # macro -mmSDMA3_RLC2_RB_BASE_BASE_IDX = 2 # macro -mmSDMA3_RLC2_RB_BASE_HI = 0x05e2 # macro -mmSDMA3_RLC2_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC2_RB_RPTR = 0x05e3 # macro -mmSDMA3_RLC2_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC2_RB_RPTR_HI = 0x05e4 # macro -mmSDMA3_RLC2_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC2_RB_WPTR = 0x05e5 # macro -mmSDMA3_RLC2_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC2_RB_WPTR_HI = 0x05e6 # macro -mmSDMA3_RLC2_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC2_RB_WPTR_POLL_CNTL = 0x05e7 # macro -mmSDMA3_RLC2_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC2_RB_RPTR_ADDR_HI = 0x05e8 # macro -mmSDMA3_RLC2_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC2_RB_RPTR_ADDR_LO = 0x05e9 # macro -mmSDMA3_RLC2_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC2_IB_CNTL = 0x05ea # macro -mmSDMA3_RLC2_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC2_IB_RPTR = 0x05eb # macro -mmSDMA3_RLC2_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC2_IB_OFFSET = 0x05ec # macro -mmSDMA3_RLC2_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_RLC2_IB_BASE_LO = 0x05ed # macro -mmSDMA3_RLC2_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC2_IB_BASE_HI = 0x05ee # macro -mmSDMA3_RLC2_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC2_IB_SIZE = 0x05ef # macro -mmSDMA3_RLC2_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA3_RLC2_SKIP_CNTL = 0x05f0 # macro -mmSDMA3_RLC2_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC2_CONTEXT_STATUS = 0x05f1 # macro -mmSDMA3_RLC2_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA3_RLC2_DOORBELL = 0x05f2 # macro -mmSDMA3_RLC2_DOORBELL_BASE_IDX = 2 # macro -mmSDMA3_RLC2_STATUS = 0x0608 # macro -mmSDMA3_RLC2_STATUS_BASE_IDX = 2 # macro -mmSDMA3_RLC2_DOORBELL_LOG = 0x0609 # macro -mmSDMA3_RLC2_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA3_RLC2_WATERMARK = 0x060a # macro -mmSDMA3_RLC2_WATERMARK_BASE_IDX = 2 # macro -mmSDMA3_RLC2_DOORBELL_OFFSET = 0x060b # macro -mmSDMA3_RLC2_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_RLC2_CSA_ADDR_LO = 0x060c # macro -mmSDMA3_RLC2_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC2_CSA_ADDR_HI = 0x060d # macro -mmSDMA3_RLC2_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC2_IB_SUB_REMAIN = 0x060f # macro -mmSDMA3_RLC2_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA3_RLC2_PREEMPT = 0x0610 # macro -mmSDMA3_RLC2_PREEMPT_BASE_IDX = 2 # macro -mmSDMA3_RLC2_DUMMY_REG = 0x0611 # macro -mmSDMA3_RLC2_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA3_RLC2_RB_WPTR_POLL_ADDR_HI = 0x0612 # macro -mmSDMA3_RLC2_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC2_RB_WPTR_POLL_ADDR_LO = 0x0613 # macro -mmSDMA3_RLC2_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC2_RB_AQL_CNTL = 0x0614 # macro -mmSDMA3_RLC2_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC2_MINOR_PTR_UPDATE = 0x0615 # macro -mmSDMA3_RLC2_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA3_RLC2_MIDCMD_DATA0 = 0x0620 # macro -mmSDMA3_RLC2_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA3_RLC2_MIDCMD_DATA1 = 0x0621 # macro -mmSDMA3_RLC2_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA3_RLC2_MIDCMD_DATA2 = 0x0622 # macro -mmSDMA3_RLC2_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA3_RLC2_MIDCMD_DATA3 = 0x0623 # macro -mmSDMA3_RLC2_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA3_RLC2_MIDCMD_DATA4 = 0x0624 # macro -mmSDMA3_RLC2_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA3_RLC2_MIDCMD_DATA5 = 0x0625 # macro -mmSDMA3_RLC2_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA3_RLC2_MIDCMD_DATA6 = 0x0626 # macro -mmSDMA3_RLC2_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA3_RLC2_MIDCMD_DATA7 = 0x0627 # macro -mmSDMA3_RLC2_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA3_RLC2_MIDCMD_DATA8 = 0x0628 # macro -mmSDMA3_RLC2_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA3_RLC2_MIDCMD_DATA9 = 0x0629 # macro -mmSDMA3_RLC2_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA3_RLC2_MIDCMD_DATA10 = 0x062a # macro -mmSDMA3_RLC2_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA3_RLC2_MIDCMD_CNTL = 0x062b # macro -mmSDMA3_RLC2_MIDCMD_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC3_RB_CNTL = 0x0638 # macro -mmSDMA3_RLC3_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC3_RB_BASE = 0x0639 # macro -mmSDMA3_RLC3_RB_BASE_BASE_IDX = 2 # macro -mmSDMA3_RLC3_RB_BASE_HI = 0x063a # macro -mmSDMA3_RLC3_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC3_RB_RPTR = 0x063b # macro -mmSDMA3_RLC3_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC3_RB_RPTR_HI = 0x063c # macro -mmSDMA3_RLC3_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC3_RB_WPTR = 0x063d # macro -mmSDMA3_RLC3_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC3_RB_WPTR_HI = 0x063e # macro -mmSDMA3_RLC3_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC3_RB_WPTR_POLL_CNTL = 0x063f # macro -mmSDMA3_RLC3_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC3_RB_RPTR_ADDR_HI = 0x0640 # macro -mmSDMA3_RLC3_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC3_RB_RPTR_ADDR_LO = 0x0641 # macro -mmSDMA3_RLC3_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC3_IB_CNTL = 0x0642 # macro -mmSDMA3_RLC3_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC3_IB_RPTR = 0x0643 # macro -mmSDMA3_RLC3_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC3_IB_OFFSET = 0x0644 # macro -mmSDMA3_RLC3_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_RLC3_IB_BASE_LO = 0x0645 # macro -mmSDMA3_RLC3_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC3_IB_BASE_HI = 0x0646 # macro -mmSDMA3_RLC3_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC3_IB_SIZE = 0x0647 # macro -mmSDMA3_RLC3_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA3_RLC3_SKIP_CNTL = 0x0648 # macro -mmSDMA3_RLC3_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC3_CONTEXT_STATUS = 0x0649 # macro -mmSDMA3_RLC3_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA3_RLC3_DOORBELL = 0x064a # macro -mmSDMA3_RLC3_DOORBELL_BASE_IDX = 2 # macro -mmSDMA3_RLC3_STATUS = 0x0660 # macro -mmSDMA3_RLC3_STATUS_BASE_IDX = 2 # macro -mmSDMA3_RLC3_DOORBELL_LOG = 0x0661 # macro -mmSDMA3_RLC3_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA3_RLC3_WATERMARK = 0x0662 # macro -mmSDMA3_RLC3_WATERMARK_BASE_IDX = 2 # macro -mmSDMA3_RLC3_DOORBELL_OFFSET = 0x0663 # macro -mmSDMA3_RLC3_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_RLC3_CSA_ADDR_LO = 0x0664 # macro -mmSDMA3_RLC3_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC3_CSA_ADDR_HI = 0x0665 # macro -mmSDMA3_RLC3_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC3_IB_SUB_REMAIN = 0x0667 # macro -mmSDMA3_RLC3_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA3_RLC3_PREEMPT = 0x0668 # macro -mmSDMA3_RLC3_PREEMPT_BASE_IDX = 2 # macro -mmSDMA3_RLC3_DUMMY_REG = 0x0669 # macro -mmSDMA3_RLC3_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA3_RLC3_RB_WPTR_POLL_ADDR_HI = 0x066a # macro -mmSDMA3_RLC3_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC3_RB_WPTR_POLL_ADDR_LO = 0x066b # macro -mmSDMA3_RLC3_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC3_RB_AQL_CNTL = 0x066c # macro -mmSDMA3_RLC3_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC3_MINOR_PTR_UPDATE = 0x066d # macro -mmSDMA3_RLC3_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA3_RLC3_MIDCMD_DATA0 = 0x0678 # macro -mmSDMA3_RLC3_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA3_RLC3_MIDCMD_DATA1 = 0x0679 # macro -mmSDMA3_RLC3_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA3_RLC3_MIDCMD_DATA2 = 0x067a # macro -mmSDMA3_RLC3_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA3_RLC3_MIDCMD_DATA3 = 0x067b # macro -mmSDMA3_RLC3_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA3_RLC3_MIDCMD_DATA4 = 0x067c # macro -mmSDMA3_RLC3_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA3_RLC3_MIDCMD_DATA5 = 0x067d # macro -mmSDMA3_RLC3_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA3_RLC3_MIDCMD_DATA6 = 0x067e # macro -mmSDMA3_RLC3_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA3_RLC3_MIDCMD_DATA7 = 0x067f # macro -mmSDMA3_RLC3_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA3_RLC3_MIDCMD_DATA8 = 0x0680 # macro -mmSDMA3_RLC3_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA3_RLC3_MIDCMD_DATA9 = 0x0681 # macro -mmSDMA3_RLC3_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA3_RLC3_MIDCMD_DATA10 = 0x0682 # macro -mmSDMA3_RLC3_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA3_RLC3_MIDCMD_CNTL = 0x0683 # macro -mmSDMA3_RLC3_MIDCMD_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC4_RB_CNTL = 0x0690 # macro -mmSDMA3_RLC4_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC4_RB_BASE = 0x0691 # macro -mmSDMA3_RLC4_RB_BASE_BASE_IDX = 2 # macro -mmSDMA3_RLC4_RB_BASE_HI = 0x0692 # macro -mmSDMA3_RLC4_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC4_RB_RPTR = 0x0693 # macro -mmSDMA3_RLC4_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC4_RB_RPTR_HI = 0x0694 # macro -mmSDMA3_RLC4_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC4_RB_WPTR = 0x0695 # macro -mmSDMA3_RLC4_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC4_RB_WPTR_HI = 0x0696 # macro -mmSDMA3_RLC4_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC4_RB_WPTR_POLL_CNTL = 0x0697 # macro -mmSDMA3_RLC4_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC4_RB_RPTR_ADDR_HI = 0x0698 # macro -mmSDMA3_RLC4_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC4_RB_RPTR_ADDR_LO = 0x0699 # macro -mmSDMA3_RLC4_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC4_IB_CNTL = 0x069a # macro -mmSDMA3_RLC4_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC4_IB_RPTR = 0x069b # macro -mmSDMA3_RLC4_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC4_IB_OFFSET = 0x069c # macro -mmSDMA3_RLC4_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_RLC4_IB_BASE_LO = 0x069d # macro -mmSDMA3_RLC4_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC4_IB_BASE_HI = 0x069e # macro -mmSDMA3_RLC4_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC4_IB_SIZE = 0x069f # macro -mmSDMA3_RLC4_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA3_RLC4_SKIP_CNTL = 0x06a0 # macro -mmSDMA3_RLC4_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC4_CONTEXT_STATUS = 0x06a1 # macro -mmSDMA3_RLC4_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA3_RLC4_DOORBELL = 0x06a2 # macro -mmSDMA3_RLC4_DOORBELL_BASE_IDX = 2 # macro -mmSDMA3_RLC4_STATUS = 0x06b8 # macro -mmSDMA3_RLC4_STATUS_BASE_IDX = 2 # macro -mmSDMA3_RLC4_DOORBELL_LOG = 0x06b9 # macro -mmSDMA3_RLC4_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA3_RLC4_WATERMARK = 0x06ba # macro -mmSDMA3_RLC4_WATERMARK_BASE_IDX = 2 # macro -mmSDMA3_RLC4_DOORBELL_OFFSET = 0x06bb # macro -mmSDMA3_RLC4_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_RLC4_CSA_ADDR_LO = 0x06bc # macro -mmSDMA3_RLC4_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC4_CSA_ADDR_HI = 0x06bd # macro -mmSDMA3_RLC4_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC4_IB_SUB_REMAIN = 0x06bf # macro -mmSDMA3_RLC4_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA3_RLC4_PREEMPT = 0x06c0 # macro -mmSDMA3_RLC4_PREEMPT_BASE_IDX = 2 # macro -mmSDMA3_RLC4_DUMMY_REG = 0x06c1 # macro -mmSDMA3_RLC4_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA3_RLC4_RB_WPTR_POLL_ADDR_HI = 0x06c2 # macro -mmSDMA3_RLC4_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC4_RB_WPTR_POLL_ADDR_LO = 0x06c3 # macro -mmSDMA3_RLC4_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC4_RB_AQL_CNTL = 0x06c4 # macro -mmSDMA3_RLC4_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC4_MINOR_PTR_UPDATE = 0x06c5 # macro -mmSDMA3_RLC4_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA3_RLC4_MIDCMD_DATA0 = 0x06d0 # macro -mmSDMA3_RLC4_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA3_RLC4_MIDCMD_DATA1 = 0x06d1 # macro -mmSDMA3_RLC4_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA3_RLC4_MIDCMD_DATA2 = 0x06d2 # macro -mmSDMA3_RLC4_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA3_RLC4_MIDCMD_DATA3 = 0x06d3 # macro -mmSDMA3_RLC4_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA3_RLC4_MIDCMD_DATA4 = 0x06d4 # macro -mmSDMA3_RLC4_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA3_RLC4_MIDCMD_DATA5 = 0x06d5 # macro -mmSDMA3_RLC4_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA3_RLC4_MIDCMD_DATA6 = 0x06d6 # macro -mmSDMA3_RLC4_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA3_RLC4_MIDCMD_DATA7 = 0x06d7 # macro -mmSDMA3_RLC4_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA3_RLC4_MIDCMD_DATA8 = 0x06d8 # macro -mmSDMA3_RLC4_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA3_RLC4_MIDCMD_DATA9 = 0x06d9 # macro -mmSDMA3_RLC4_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA3_RLC4_MIDCMD_DATA10 = 0x06da # macro -mmSDMA3_RLC4_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA3_RLC4_MIDCMD_CNTL = 0x06db # macro -mmSDMA3_RLC4_MIDCMD_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC5_RB_CNTL = 0x06e8 # macro -mmSDMA3_RLC5_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC5_RB_BASE = 0x06e9 # macro -mmSDMA3_RLC5_RB_BASE_BASE_IDX = 2 # macro -mmSDMA3_RLC5_RB_BASE_HI = 0x06ea # macro -mmSDMA3_RLC5_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC5_RB_RPTR = 0x06eb # macro -mmSDMA3_RLC5_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC5_RB_RPTR_HI = 0x06ec # macro -mmSDMA3_RLC5_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC5_RB_WPTR = 0x06ed # macro -mmSDMA3_RLC5_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC5_RB_WPTR_HI = 0x06ee # macro -mmSDMA3_RLC5_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC5_RB_WPTR_POLL_CNTL = 0x06ef # macro -mmSDMA3_RLC5_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC5_RB_RPTR_ADDR_HI = 0x06f0 # macro -mmSDMA3_RLC5_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC5_RB_RPTR_ADDR_LO = 0x06f1 # macro -mmSDMA3_RLC5_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC5_IB_CNTL = 0x06f2 # macro -mmSDMA3_RLC5_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC5_IB_RPTR = 0x06f3 # macro -mmSDMA3_RLC5_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC5_IB_OFFSET = 0x06f4 # macro -mmSDMA3_RLC5_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_RLC5_IB_BASE_LO = 0x06f5 # macro -mmSDMA3_RLC5_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC5_IB_BASE_HI = 0x06f6 # macro -mmSDMA3_RLC5_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC5_IB_SIZE = 0x06f7 # macro -mmSDMA3_RLC5_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA3_RLC5_SKIP_CNTL = 0x06f8 # macro -mmSDMA3_RLC5_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC5_CONTEXT_STATUS = 0x06f9 # macro -mmSDMA3_RLC5_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA3_RLC5_DOORBELL = 0x06fa # macro -mmSDMA3_RLC5_DOORBELL_BASE_IDX = 2 # macro -mmSDMA3_RLC5_STATUS = 0x0710 # macro -mmSDMA3_RLC5_STATUS_BASE_IDX = 2 # macro -mmSDMA3_RLC5_DOORBELL_LOG = 0x0711 # macro -mmSDMA3_RLC5_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA3_RLC5_WATERMARK = 0x0712 # macro -mmSDMA3_RLC5_WATERMARK_BASE_IDX = 2 # macro -mmSDMA3_RLC5_DOORBELL_OFFSET = 0x0713 # macro -mmSDMA3_RLC5_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_RLC5_CSA_ADDR_LO = 0x0714 # macro -mmSDMA3_RLC5_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC5_CSA_ADDR_HI = 0x0715 # macro -mmSDMA3_RLC5_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC5_IB_SUB_REMAIN = 0x0717 # macro -mmSDMA3_RLC5_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA3_RLC5_PREEMPT = 0x0718 # macro -mmSDMA3_RLC5_PREEMPT_BASE_IDX = 2 # macro -mmSDMA3_RLC5_DUMMY_REG = 0x0719 # macro -mmSDMA3_RLC5_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA3_RLC5_RB_WPTR_POLL_ADDR_HI = 0x071a # macro -mmSDMA3_RLC5_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC5_RB_WPTR_POLL_ADDR_LO = 0x071b # macro -mmSDMA3_RLC5_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC5_RB_AQL_CNTL = 0x071c # macro -mmSDMA3_RLC5_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC5_MINOR_PTR_UPDATE = 0x071d # macro -mmSDMA3_RLC5_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA3_RLC5_MIDCMD_DATA0 = 0x0728 # macro -mmSDMA3_RLC5_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA3_RLC5_MIDCMD_DATA1 = 0x0729 # macro -mmSDMA3_RLC5_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA3_RLC5_MIDCMD_DATA2 = 0x072a # macro -mmSDMA3_RLC5_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA3_RLC5_MIDCMD_DATA3 = 0x072b # macro -mmSDMA3_RLC5_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA3_RLC5_MIDCMD_DATA4 = 0x072c # macro -mmSDMA3_RLC5_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA3_RLC5_MIDCMD_DATA5 = 0x072d # macro -mmSDMA3_RLC5_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA3_RLC5_MIDCMD_DATA6 = 0x072e # macro -mmSDMA3_RLC5_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA3_RLC5_MIDCMD_DATA7 = 0x072f # macro -mmSDMA3_RLC5_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA3_RLC5_MIDCMD_DATA8 = 0x0730 # macro -mmSDMA3_RLC5_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA3_RLC5_MIDCMD_DATA9 = 0x0731 # macro -mmSDMA3_RLC5_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA3_RLC5_MIDCMD_DATA10 = 0x0732 # macro -mmSDMA3_RLC5_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA3_RLC5_MIDCMD_CNTL = 0x0733 # macro -mmSDMA3_RLC5_MIDCMD_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC6_RB_CNTL = 0x0740 # macro -mmSDMA3_RLC6_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC6_RB_BASE = 0x0741 # macro -mmSDMA3_RLC6_RB_BASE_BASE_IDX = 2 # macro -mmSDMA3_RLC6_RB_BASE_HI = 0x0742 # macro -mmSDMA3_RLC6_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC6_RB_RPTR = 0x0743 # macro -mmSDMA3_RLC6_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC6_RB_RPTR_HI = 0x0744 # macro -mmSDMA3_RLC6_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC6_RB_WPTR = 0x0745 # macro -mmSDMA3_RLC6_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC6_RB_WPTR_HI = 0x0746 # macro -mmSDMA3_RLC6_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC6_RB_WPTR_POLL_CNTL = 0x0747 # macro -mmSDMA3_RLC6_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC6_RB_RPTR_ADDR_HI = 0x0748 # macro -mmSDMA3_RLC6_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC6_RB_RPTR_ADDR_LO = 0x0749 # macro -mmSDMA3_RLC6_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC6_IB_CNTL = 0x074a # macro -mmSDMA3_RLC6_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC6_IB_RPTR = 0x074b # macro -mmSDMA3_RLC6_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC6_IB_OFFSET = 0x074c # macro -mmSDMA3_RLC6_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_RLC6_IB_BASE_LO = 0x074d # macro -mmSDMA3_RLC6_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC6_IB_BASE_HI = 0x074e # macro -mmSDMA3_RLC6_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC6_IB_SIZE = 0x074f # macro -mmSDMA3_RLC6_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA3_RLC6_SKIP_CNTL = 0x0750 # macro -mmSDMA3_RLC6_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC6_CONTEXT_STATUS = 0x0751 # macro -mmSDMA3_RLC6_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA3_RLC6_DOORBELL = 0x0752 # macro -mmSDMA3_RLC6_DOORBELL_BASE_IDX = 2 # macro -mmSDMA3_RLC6_STATUS = 0x0768 # macro -mmSDMA3_RLC6_STATUS_BASE_IDX = 2 # macro -mmSDMA3_RLC6_DOORBELL_LOG = 0x0769 # macro -mmSDMA3_RLC6_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA3_RLC6_WATERMARK = 0x076a # macro -mmSDMA3_RLC6_WATERMARK_BASE_IDX = 2 # macro -mmSDMA3_RLC6_DOORBELL_OFFSET = 0x076b # macro -mmSDMA3_RLC6_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_RLC6_CSA_ADDR_LO = 0x076c # macro -mmSDMA3_RLC6_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC6_CSA_ADDR_HI = 0x076d # macro -mmSDMA3_RLC6_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC6_IB_SUB_REMAIN = 0x076f # macro -mmSDMA3_RLC6_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA3_RLC6_PREEMPT = 0x0770 # macro -mmSDMA3_RLC6_PREEMPT_BASE_IDX = 2 # macro -mmSDMA3_RLC6_DUMMY_REG = 0x0771 # macro -mmSDMA3_RLC6_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA3_RLC6_RB_WPTR_POLL_ADDR_HI = 0x0772 # macro -mmSDMA3_RLC6_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC6_RB_WPTR_POLL_ADDR_LO = 0x0773 # macro -mmSDMA3_RLC6_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC6_RB_AQL_CNTL = 0x0774 # macro -mmSDMA3_RLC6_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC6_MINOR_PTR_UPDATE = 0x0775 # macro -mmSDMA3_RLC6_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA3_RLC6_MIDCMD_DATA0 = 0x0780 # macro -mmSDMA3_RLC6_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA3_RLC6_MIDCMD_DATA1 = 0x0781 # macro -mmSDMA3_RLC6_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA3_RLC6_MIDCMD_DATA2 = 0x0782 # macro -mmSDMA3_RLC6_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA3_RLC6_MIDCMD_DATA3 = 0x0783 # macro -mmSDMA3_RLC6_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA3_RLC6_MIDCMD_DATA4 = 0x0784 # macro -mmSDMA3_RLC6_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA3_RLC6_MIDCMD_DATA5 = 0x0785 # macro -mmSDMA3_RLC6_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA3_RLC6_MIDCMD_DATA6 = 0x0786 # macro -mmSDMA3_RLC6_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA3_RLC6_MIDCMD_DATA7 = 0x0787 # macro -mmSDMA3_RLC6_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA3_RLC6_MIDCMD_DATA8 = 0x0788 # macro -mmSDMA3_RLC6_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA3_RLC6_MIDCMD_DATA9 = 0x0789 # macro -mmSDMA3_RLC6_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA3_RLC6_MIDCMD_DATA10 = 0x078a # macro -mmSDMA3_RLC6_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA3_RLC6_MIDCMD_CNTL = 0x078b # macro -mmSDMA3_RLC6_MIDCMD_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC7_RB_CNTL = 0x0798 # macro -mmSDMA3_RLC7_RB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC7_RB_BASE = 0x0799 # macro -mmSDMA3_RLC7_RB_BASE_BASE_IDX = 2 # macro -mmSDMA3_RLC7_RB_BASE_HI = 0x079a # macro -mmSDMA3_RLC7_RB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC7_RB_RPTR = 0x079b # macro -mmSDMA3_RLC7_RB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC7_RB_RPTR_HI = 0x079c # macro -mmSDMA3_RLC7_RB_RPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC7_RB_WPTR = 0x079d # macro -mmSDMA3_RLC7_RB_WPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC7_RB_WPTR_HI = 0x079e # macro -mmSDMA3_RLC7_RB_WPTR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC7_RB_WPTR_POLL_CNTL = 0x079f # macro -mmSDMA3_RLC7_RB_WPTR_POLL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC7_RB_RPTR_ADDR_HI = 0x07a0 # macro -mmSDMA3_RLC7_RB_RPTR_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC7_RB_RPTR_ADDR_LO = 0x07a1 # macro -mmSDMA3_RLC7_RB_RPTR_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC7_IB_CNTL = 0x07a2 # macro -mmSDMA3_RLC7_IB_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC7_IB_RPTR = 0x07a3 # macro -mmSDMA3_RLC7_IB_RPTR_BASE_IDX = 2 # macro -mmSDMA3_RLC7_IB_OFFSET = 0x07a4 # macro -mmSDMA3_RLC7_IB_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_RLC7_IB_BASE_LO = 0x07a5 # macro -mmSDMA3_RLC7_IB_BASE_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC7_IB_BASE_HI = 0x07a6 # macro -mmSDMA3_RLC7_IB_BASE_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC7_IB_SIZE = 0x07a7 # macro -mmSDMA3_RLC7_IB_SIZE_BASE_IDX = 2 # macro -mmSDMA3_RLC7_SKIP_CNTL = 0x07a8 # macro -mmSDMA3_RLC7_SKIP_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC7_CONTEXT_STATUS = 0x07a9 # macro -mmSDMA3_RLC7_CONTEXT_STATUS_BASE_IDX = 2 # macro -mmSDMA3_RLC7_DOORBELL = 0x07aa # macro -mmSDMA3_RLC7_DOORBELL_BASE_IDX = 2 # macro -mmSDMA3_RLC7_STATUS = 0x07c0 # macro -mmSDMA3_RLC7_STATUS_BASE_IDX = 2 # macro -mmSDMA3_RLC7_DOORBELL_LOG = 0x07c1 # macro -mmSDMA3_RLC7_DOORBELL_LOG_BASE_IDX = 2 # macro -mmSDMA3_RLC7_WATERMARK = 0x07c2 # macro -mmSDMA3_RLC7_WATERMARK_BASE_IDX = 2 # macro -mmSDMA3_RLC7_DOORBELL_OFFSET = 0x07c3 # macro -mmSDMA3_RLC7_DOORBELL_OFFSET_BASE_IDX = 2 # macro -mmSDMA3_RLC7_CSA_ADDR_LO = 0x07c4 # macro -mmSDMA3_RLC7_CSA_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC7_CSA_ADDR_HI = 0x07c5 # macro -mmSDMA3_RLC7_CSA_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC7_IB_SUB_REMAIN = 0x07c7 # macro -mmSDMA3_RLC7_IB_SUB_REMAIN_BASE_IDX = 2 # macro -mmSDMA3_RLC7_PREEMPT = 0x07c8 # macro -mmSDMA3_RLC7_PREEMPT_BASE_IDX = 2 # macro -mmSDMA3_RLC7_DUMMY_REG = 0x07c9 # macro -mmSDMA3_RLC7_DUMMY_REG_BASE_IDX = 2 # macro -mmSDMA3_RLC7_RB_WPTR_POLL_ADDR_HI = 0x07ca # macro -mmSDMA3_RLC7_RB_WPTR_POLL_ADDR_HI_BASE_IDX = 2 # macro -mmSDMA3_RLC7_RB_WPTR_POLL_ADDR_LO = 0x07cb # macro -mmSDMA3_RLC7_RB_WPTR_POLL_ADDR_LO_BASE_IDX = 2 # macro -mmSDMA3_RLC7_RB_AQL_CNTL = 0x07cc # macro -mmSDMA3_RLC7_RB_AQL_CNTL_BASE_IDX = 2 # macro -mmSDMA3_RLC7_MINOR_PTR_UPDATE = 0x07cd # macro -mmSDMA3_RLC7_MINOR_PTR_UPDATE_BASE_IDX = 2 # macro -mmSDMA3_RLC7_MIDCMD_DATA0 = 0x07d8 # macro -mmSDMA3_RLC7_MIDCMD_DATA0_BASE_IDX = 2 # macro -mmSDMA3_RLC7_MIDCMD_DATA1 = 0x07d9 # macro -mmSDMA3_RLC7_MIDCMD_DATA1_BASE_IDX = 2 # macro -mmSDMA3_RLC7_MIDCMD_DATA2 = 0x07da # macro -mmSDMA3_RLC7_MIDCMD_DATA2_BASE_IDX = 2 # macro -mmSDMA3_RLC7_MIDCMD_DATA3 = 0x07db # macro -mmSDMA3_RLC7_MIDCMD_DATA3_BASE_IDX = 2 # macro -mmSDMA3_RLC7_MIDCMD_DATA4 = 0x07dc # macro -mmSDMA3_RLC7_MIDCMD_DATA4_BASE_IDX = 2 # macro -mmSDMA3_RLC7_MIDCMD_DATA5 = 0x07dd # macro -mmSDMA3_RLC7_MIDCMD_DATA5_BASE_IDX = 2 # macro -mmSDMA3_RLC7_MIDCMD_DATA6 = 0x07de # macro -mmSDMA3_RLC7_MIDCMD_DATA6_BASE_IDX = 2 # macro -mmSDMA3_RLC7_MIDCMD_DATA7 = 0x07df # macro -mmSDMA3_RLC7_MIDCMD_DATA7_BASE_IDX = 2 # macro -mmSDMA3_RLC7_MIDCMD_DATA8 = 0x07e0 # macro -mmSDMA3_RLC7_MIDCMD_DATA8_BASE_IDX = 2 # macro -mmSDMA3_RLC7_MIDCMD_DATA9 = 0x07e1 # macro -mmSDMA3_RLC7_MIDCMD_DATA9_BASE_IDX = 2 # macro -mmSDMA3_RLC7_MIDCMD_DATA10 = 0x07e2 # macro -mmSDMA3_RLC7_MIDCMD_DATA10_BASE_IDX = 2 # macro -mmSDMA3_RLC7_MIDCMD_CNTL = 0x07e3 # macro -mmSDMA3_RLC7_MIDCMD_CNTL_BASE_IDX = 2 # macro -ixPCC_STALL_PATTERN_CTRL = 0x0000 # macro -ixPWRBRK_STALL_PATTERN_CTRL = 0x0001 # macro -ixPCC_STALL_PATTERN_1_2 = 0x0006 # macro -ixPCC_STALL_PATTERN_3_4 = 0x0007 # macro -ixPCC_STALL_PATTERN_5_6 = 0x0008 # macro -ixPCC_STALL_PATTERN_7 = 0x0009 # macro -ixPWRBRK_STALL_PATTERN_1_2 = 0x000a # macro -ixPWRBRK_STALL_PATTERN_3_4 = 0x000b # macro -ixPWRBRK_STALL_PATTERN_5_6 = 0x000c # macro -ixPWRBRK_STALL_PATTERN_7 = 0x000d # macro -ixPCC_PWRBRK_HYSTERESIS_CTRL = 0x000e # macro -ixEDC_STRETCH_PERF_COUNTER = 0x000f # macro -ixEDC_UNSTRETCH_PERF_COUNTER = 0x0010 # macro -ixEDC_STRETCH_NUM_PERF_COUNTER = 0x0011 # macro -ixGC_CAC_OVR_SEL = 0x0022 # macro -ixGC_CAC_OVR_VAL = 0x0023 # macro -ixGC_CAC_WEIGHT_BCI_0 = 0x0024 # macro -ixGC_CAC_WEIGHT_CB_0 = 0x0025 # macro -ixGC_CAC_WEIGHT_CB_1 = 0x0026 # macro -ixGC_CAC_WEIGHT_CB_2 = 0x0027 # macro -ixGC_CAC_WEIGHT_CB_3 = 0x0028 # macro -ixGC_CAC_WEIGHT_CB_4 = 0x0029 # macro -ixGC_CAC_WEIGHT_CP_0 = 0x002a # macro -ixGC_CAC_WEIGHT_CP_1 = 0x002b # macro -ixGC_CAC_WEIGHT_DB_0 = 0x002c # macro -ixGC_CAC_WEIGHT_DB_1 = 0x002d # macro -ixGC_CAC_WEIGHT_DB_2 = 0x002e # macro -ixGC_CAC_WEIGHT_DB_3 = 0x002f # macro -ixGC_CAC_WEIGHT_DB_4 = 0x0030 # macro -ixGC_CAC_WEIGHT_GDS_0 = 0x0031 # macro -ixGC_CAC_WEIGHT_GDS_1 = 0x0032 # macro -ixGC_CAC_WEIGHT_GDS_2 = 0x0033 # macro -ixGC_CAC_WEIGHT_LDS_0 = 0x0034 # macro -ixGC_CAC_WEIGHT_LDS_1 = 0x0035 # macro -ixGC_CAC_WEIGHT_LDS_2 = 0x0036 # macro -ixGC_CAC_WEIGHT_LDS_3 = 0x0037 # macro -ixGC_CAC_WEIGHT_LDS_4 = 0x0038 # macro -ixGC_CAC_WEIGHT_PA_0 = 0x0039 # macro -ixGC_CAC_WEIGHT_PA_1 = 0x003a # macro -ixGC_CAC_WEIGHT_PA_2 = 0x003b # macro -ixGC_CAC_WEIGHT_PA_3 = 0x003c # macro -ixGC_CAC_WEIGHT_PC_0 = 0x003d # macro -ixGC_CAC_WEIGHT_SC_0 = 0x003e # macro -ixGC_CAC_WEIGHT_SC_1 = 0x003f # macro -ixGC_CAC_WEIGHT_SC_2 = 0x0040 # macro -ixGC_CAC_WEIGHT_SC_3 = 0x0041 # macro -ixGC_CAC_WEIGHT_SPI_0 = 0x0042 # macro -ixGC_CAC_WEIGHT_SPI_1 = 0x0043 # macro -ixGC_CAC_WEIGHT_SPI_2 = 0x0044 # macro -ixGC_CAC_WEIGHT_SQ_0 = 0x0045 # macro -ixGC_CAC_WEIGHT_SQ_1 = 0x0046 # macro -ixGC_CAC_WEIGHT_SQ_2 = 0x0047 # macro -ixGC_CAC_WEIGHT_SQ_3 = 0x0048 # macro -ixGC_CAC_WEIGHT_SX_0 = 0x0049 # macro -ixGC_CAC_WEIGHT_SXRB_0 = 0x004a # macro -ixGC_CAC_WEIGHT_TA_0 = 0x004b # macro -ixGC_CAC_WEIGHT_TCP_0 = 0x004c # macro -ixGC_CAC_WEIGHT_TCP_1 = 0x004d # macro -ixGC_CAC_WEIGHT_TCP_2 = 0x004e # macro -ixGC_CAC_WEIGHT_TCP_3 = 0x004f # macro -ixGC_CAC_WEIGHT_TD_0 = 0x0050 # macro -ixGC_CAC_WEIGHT_TD_1 = 0x0051 # macro -ixGC_CAC_WEIGHT_TD_2 = 0x0052 # macro -ixGC_CAC_WEIGHT_TD_3 = 0x0053 # macro -ixGC_CAC_WEIGHT_TD_4 = 0x0054 # macro -ixGC_CAC_WEIGHT_TD_5 = 0x0055 # macro -ixGC_CAC_WEIGHT_RMI_0 = 0x0056 # macro -ixGC_CAC_WEIGHT_RMI_1 = 0x0057 # macro -ixGC_CAC_WEIGHT_EA_0 = 0x0058 # macro -ixGC_CAC_WEIGHT_EA_1 = 0x0059 # macro -ixGC_CAC_WEIGHT_EA_2 = 0x005a # macro -ixGC_CAC_WEIGHT_UTCL2_ATCL2_0 = 0x005b # macro -ixGC_CAC_WEIGHT_UTCL2_ATCL2_1 = 0x005c # macro -ixGC_CAC_WEIGHT_UTCL2_ATCL2_2 = 0x005d # macro -ixGC_CAC_WEIGHT_UTCL2_ROUTER_0 = 0x005e # macro -ixGC_CAC_WEIGHT_UTCL2_ROUTER_1 = 0x005f # macro -ixGC_CAC_WEIGHT_UTCL2_ROUTER_2 = 0x0060 # macro -ixGC_CAC_WEIGHT_UTCL2_ROUTER_3 = 0x0061 # macro -ixGC_CAC_WEIGHT_UTCL2_ROUTER_4 = 0x0062 # macro -ixGC_CAC_WEIGHT_UTCL2_VML2_0 = 0x0063 # macro -ixGC_CAC_WEIGHT_UTCL2_VML2_1 = 0x0064 # macro -ixGC_CAC_WEIGHT_UTCL2_VML2_2 = 0x0065 # macro -ixGC_CAC_WEIGHT_UTCL2_WALKER_0 = 0x0066 # macro -ixGC_CAC_WEIGHT_UTCL2_WALKER_1 = 0x0067 # macro -ixGC_CAC_WEIGHT_UTCL2_WALKER_2 = 0x0068 # macro -ixGC_CAC_WEIGHT_CU_0 = 0x0069 # macro -ixGC_CAC_WEIGHT_UTCL1_0 = 0x006a # macro -ixGC_CAC_WEIGHT_GE_0 = 0x006b # macro -ixGC_CAC_WEIGHT_GE_1 = 0x006c # macro -ixGC_CAC_WEIGHT_GE_2 = 0x006d # macro -ixGC_CAC_WEIGHT_GE_3 = 0x006e # macro -ixGC_CAC_WEIGHT_GE_4 = 0x006f # macro -ixGC_CAC_WEIGHT_GE_5 = 0x0070 # macro -ixGC_CAC_WEIGHT_GE_6 = 0x0071 # macro -ixGC_CAC_WEIGHT_GE_7 = 0x0072 # macro -ixGC_CAC_WEIGHT_GE_8 = 0x0073 # macro -ixGC_CAC_WEIGHT_GE_9 = 0x0074 # macro -ixGC_CAC_WEIGHT_GE_10 = 0x0075 # macro -ixGC_CAC_WEIGHT_PMM_0 = 0x0076 # macro -ixGC_CAC_WEIGHT_GL2C_0 = 0x0077 # macro -ixGC_CAC_WEIGHT_GL2C_1 = 0x0078 # macro -ixGC_CAC_WEIGHT_GL2C_2 = 0x0079 # macro -ixGC_CAC_WEIGHT_GUS_0 = 0x007a # macro -ixGC_CAC_WEIGHT_GUS_1 = 0x007b # macro -ixGC_CAC_WEIGHT_PH_0 = 0x007c # macro -ixGC_CAC_WEIGHT_PH_1 = 0x007d # macro -ixGC_CAC_WEIGHT_PH_2 = 0x007e # macro -ixGC_CAC_WEIGHT_PH_3 = 0x007f # macro -ixGC_CAC_WEIGHT_SDMA_0 = 0x0080 # macro -ixGC_CAC_WEIGHT_SDMA_1 = 0x0081 # macro -ixGC_CAC_WEIGHT_SDMA_2 = 0x0082 # macro -ixGC_CAC_WEIGHT_SDMA_3 = 0x0083 # macro -ixGC_CAC_WEIGHT_SDMA_4 = 0x0084 # macro -ixGC_CAC_WEIGHT_SDMA_5 = 0x0085 # macro -ixGC_CAC_WEIGHT_SP_0 = 0x0086 # macro -ixGC_CAC_WEIGHT_SP_1 = 0x0087 # macro -ixGC_CAC_WEIGHT_GL1C_0 = 0x0088 # macro -ixGC_CAC_WEIGHT_GL1C_1 = 0x0089 # macro -ixGC_CAC_WEIGHT_GL1C_2 = 0x008a # macro -ixGC_CAC_WEIGHT_CHC_0 = 0x008b # macro -ixGC_CAC_WEIGHT_CHC_1 = 0x008c # macro -ixGC_CAC_WEIGHT_SQC_0 = 0x008d # macro -ixGC_CAC_WEIGHT_SQC_1 = 0x008e # macro -ixGC_CAC_WEIGHT_RLC_0 = 0x008f # macro -ixGC_CAC_ACC_LDS0 = 0x0100 # macro -ixGC_CAC_ACC_LDS1 = 0x0101 # macro -ixGC_CAC_ACC_LDS2 = 0x0102 # macro -ixGC_CAC_ACC_LDS3 = 0x0103 # macro -ixGC_CAC_ACC_LDS4 = 0x0104 # macro -ixGC_CAC_ACC_LDS5 = 0x0105 # macro -ixGC_CAC_ACC_LDS6 = 0x0106 # macro -ixGC_CAC_ACC_LDS7 = 0x0107 # macro -ixGC_CAC_ACC_LDS8 = 0x0108 # macro -ixGC_CAC_ACC_BCI0 = 0x0109 # macro -ixGC_CAC_ACC_BCI1 = 0x010a # macro -ixGC_CAC_ACC_CB0 = 0x010b # macro -ixGC_CAC_ACC_CB1 = 0x010c # macro -ixGC_CAC_ACC_CB2 = 0x010d # macro -ixGC_CAC_ACC_CB3 = 0x010e # macro -ixGC_CAC_ACC_CB4 = 0x010f # macro -ixGC_CAC_ACC_CB5 = 0x0110 # macro -ixGC_CAC_ACC_CB6 = 0x0111 # macro -ixGC_CAC_ACC_CB7 = 0x0112 # macro -ixGC_CAC_ACC_CB8 = 0x0113 # macro -ixGC_CAC_ACC_CB9 = 0x0114 # macro -ixGC_CAC_ACC_DB0 = 0x0118 # macro -ixGC_CAC_ACC_DB1 = 0x0119 # macro -ixGC_CAC_ACC_DB2 = 0x011a # macro -ixGC_CAC_ACC_DB3 = 0x011b # macro -ixGC_CAC_ACC_DB4 = 0x011c # macro -ixGC_CAC_ACC_DB5 = 0x011d # macro -ixGC_CAC_ACC_DB6 = 0x011e # macro -ixGC_CAC_ACC_DB7 = 0x011f # macro -ixGC_CAC_ACC_DB8 = 0x0120 # macro -ixGC_CAC_ACC_DB9 = 0x0121 # macro -ixGC_CAC_ACC_GDS5 = 0x0127 # macro -ixGC_CAC_ACC_GDS6 = 0x0128 # macro -ixGC_CAC_ACC_PA0 = 0x0129 # macro -ixGC_CAC_ACC_PA1 = 0x012a # macro -ixGC_CAC_ACC_PA2 = 0x012b # macro -ixGC_CAC_ACC_PA3 = 0x012c # macro -ixGC_CAC_ACC_PA4 = 0x012d # macro -ixGC_CAC_ACC_PA5 = 0x012e # macro -ixGC_CAC_ACC_PA6 = 0x012f # macro -ixGC_CAC_ACC_PA7 = 0x0130 # macro -ixGC_CAC_ACC_PC0 = 0x0131 # macro -ixGC_CAC_ACC_SC0 = 0x0132 # macro -ixGC_CAC_ACC_SC1 = 0x0133 # macro -ixGC_CAC_ACC_SC2 = 0x0134 # macro -ixGC_CAC_ACC_SC3 = 0x0135 # macro -ixGC_CAC_ACC_SC4 = 0x0136 # macro -ixGC_CAC_ACC_SC5 = 0x0137 # macro -ixGC_CAC_ACC_SC6 = 0x0138 # macro -ixGC_CAC_ACC_SC7 = 0x0139 # macro -ixGC_CAC_ACC_SPI0 = 0x013a # macro -ixGC_CAC_ACC_SPI1 = 0x013b # macro -ixGC_CAC_ACC_SPI2 = 0x013c # macro -ixGC_CAC_ACC_SPI3 = 0x013d # macro -ixGC_CAC_ACC_SPI4 = 0x013e # macro -ixGC_CAC_ACC_SPI5 = 0x013f # macro -ixGC_CAC_ACC_SQ0_LOWER = 0x0140 # macro -ixGC_CAC_ACC_SQ0_UPPER = 0x0141 # macro -ixGC_CAC_ACC_SQ1_LOWER = 0x0142 # macro -ixGC_CAC_ACC_SQ1_UPPER = 0x0143 # macro -ixGC_CAC_ACC_SQ2_LOWER = 0x0144 # macro -ixGC_CAC_ACC_SQ2_UPPER = 0x0145 # macro -ixGC_CAC_ACC_SQ3_LOWER = 0x0146 # macro -ixGC_CAC_ACC_SQ3_UPPER = 0x0147 # macro -ixGC_CAC_ACC_SQ4_LOWER = 0x0148 # macro -ixGC_CAC_ACC_SQ4_UPPER = 0x0149 # macro -ixGC_CAC_ACC_SQ5_LOWER = 0x014a # macro -ixGC_CAC_ACC_SQ5_UPPER = 0x014b # macro -ixGC_CAC_ACC_SQ6_LOWER = 0x014c # macro -ixGC_CAC_ACC_SQ6_UPPER = 0x014d # macro -ixGC_CAC_ACC_SQ7_LOWER = 0x014e # macro -ixGC_CAC_ACC_SQ7_UPPER = 0x014f # macro -ixGC_CAC_ACC_SQ8_LOWER = 0x0150 # macro -ixGC_CAC_ACC_SQ8_UPPER = 0x0151 # macro -ixGC_CAC_ACC_SX0 = 0x0152 # macro -ixGC_CAC_ACC_SXRB0 = 0x0153 # macro -ixGC_CAC_ACC_TA0 = 0x0154 # macro -ixGC_CAC_ACC_TCP0 = 0x0155 # macro -ixGC_CAC_ACC_TCP1 = 0x0156 # macro -ixGC_CAC_ACC_TCP2 = 0x0157 # macro -ixGC_CAC_ACC_TCP3 = 0x0158 # macro -ixGC_CAC_ACC_TCP4 = 0x0159 # macro -ixGC_CAC_ACC_TCP5 = 0x015a # macro -ixGC_CAC_ACC_TCP6 = 0x015b # macro -ixGC_CAC_ACC_TCP7 = 0x015c # macro -ixGC_CAC_ACC_TD0 = 0x015d # macro -ixGC_CAC_ACC_TD1 = 0x015e # macro -ixGC_CAC_ACC_TD2 = 0x015f # macro -ixGC_CAC_ACC_TD3 = 0x0160 # macro -ixGC_CAC_ACC_TD4 = 0x0161 # macro -ixGC_CAC_ACC_TD5 = 0x0162 # macro -ixGC_CAC_ACC_TD6 = 0x0163 # macro -ixGC_CAC_ACC_TD7 = 0x0164 # macro -ixGC_CAC_ACC_TD8 = 0x0165 # macro -ixGC_CAC_ACC_TD9 = 0x0166 # macro -ixGC_CAC_ACC_TD10 = 0x0167 # macro -ixGC_CAC_ACC_RMI0 = 0x0168 # macro -ixGC_CAC_ACC_RMI1 = 0x0169 # macro -ixGC_CAC_ACC_RMI2 = 0x016a # macro -ixGC_CAC_ACC_RMI3 = 0x016b # macro -ixGC_CAC_ACC_UTCL2_ATCL20 = 0x0172 # macro -ixGC_CAC_ACC_UTCL2_ATCL21 = 0x0173 # macro -ixGC_CAC_ACC_UTCL2_ATCL22 = 0x0174 # macro -ixGC_CAC_ACC_UTCL2_ATCL23 = 0x0175 # macro -ixGC_CAC_ACC_UTCL2_ATCL24 = 0x0176 # macro -ixGC_CAC_ACC_CU0 = 0x018b # macro -ixGC_CAC_ACC_UTCL10 = 0x018c # macro -ixGC_CAC_ACC_SP0_LOWER = 0x01c2 # macro -ixGC_CAC_ACC_SP0_UPPER = 0x01c3 # macro -ixGC_CAC_ACC_SP1_LOWER = 0x01c4 # macro -ixGC_CAC_ACC_SP1_UPPER = 0x01c5 # macro -ixGC_CAC_ACC_SP2_LOWER = 0x01c6 # macro -ixGC_CAC_ACC_SP2_UPPER = 0x01c7 # macro -ixGC_CAC_ACC_GL1C0 = 0x01c8 # macro -ixGC_CAC_ACC_GL1C1 = 0x01c9 # macro -ixGC_CAC_ACC_GL1C2 = 0x01ca # macro -ixGC_CAC_ACC_GL1C3 = 0x01cb # macro -ixGC_CAC_ACC_GL1C4 = 0x01cc # macro -ixGC_CAC_ACC_SQC0 = 0x01cd # macro -ixGC_CAC_ACC_SQC1 = 0x01ce # macro -ixGC_CAC_ACC_SQC2 = 0x01cf # macro -ixGC_CAC_OVRD_BCI = 0x0200 # macro -ixGC_CAC_OVRD_CB = 0x0201 # macro -ixGC_CAC_OVRD_CP = 0x0203 # macro -ixGC_CAC_OVRD_DB = 0x0204 # macro -ixGC_CAC_OVRD_GDS = 0x0206 # macro -ixGC_CAC_OVRD_LDS = 0x0207 # macro -ixGC_CAC_OVRD_PA = 0x0208 # macro -ixGC_CAC_OVRD_PC = 0x0209 # macro -ixGC_CAC_OVRD_SC = 0x020a # macro -ixGC_CAC_OVRD_SPI = 0x020b # macro -ixGC_CAC_OVRD_CU = 0x020c # macro -ixGC_CAC_OVRD_SQ = 0x020d # macro -ixGC_CAC_OVRD_SX = 0x020e # macro -ixGC_CAC_OVRD_SXRB = 0x020f # macro -ixGC_CAC_OVRD_TA = 0x0210 # macro -ixGC_CAC_OVRD_TCP = 0x0211 # macro -ixGC_CAC_OVRD_TD = 0x0212 # macro -ixGC_CAC_OVRD_RMI = 0x0213 # macro -ixGC_CAC_OVRD_EA = 0x0214 # macro -ixGC_CAC_OVRD_UTCL2_ATCL2 = 0x0215 # macro -ixGC_CAC_OVRD_UTCL2_ROUTER = 0x0216 # macro -ixGC_CAC_OVRD_UTCL2_VML2 = 0x0217 # macro -ixGC_CAC_OVRD_UTCL2_WALKER = 0x0218 # macro -ixGC_CAC_OVRD_SP = 0x0219 # macro -ixGC_CAC_OVRD_UTCL1 = 0x021a # macro -ixGC_CAC_OVRD_CHC = 0x021b # macro -ixGC_CAC_OVRD_GE = 0x021c # macro -ixGC_CAC_OVRD_PMM = 0x021d # macro -ixGC_CAC_OVRD_GL2C = 0x021e # macro -ixGC_CAC_OVRD_GUS = 0x021f # macro -ixGC_CAC_OVRD_PH = 0x0220 # macro -ixGC_CAC_OVRD_SDMA = 0x0221 # macro -ixGC_CAC_OVRD_GL1C = 0x0222 # macro -ixGC_CAC_OVRD_SQC = 0x0223 # macro -ixGC_CAC_OVRD_RLC = 0x0224 # macro -ixGC_CAC_OVRD_GE_HI = 0x0225 # macro -ixSE_CAC_OVR_SEL = 0x0002 # macro -ixSE_CAC_OVR_VAL = 0x0003 # macro -ixGLB_CPG_SAMPLEDELAY = 0x0000 # macro -ixGLB_CPC_SAMPLEDELAY = 0x0001 # macro -ixGLB_CPF_SAMPLEDELAY = 0x0002 # macro -ixGLB_GDS_SAMPLEDELAY = 0x0003 # macro -ixGLB_GCR_SAMPLEDELAY = 0x0004 # macro -ixGLB_PH_SAMPLEDELAY = 0x0005 # macro -ixGLB_GE1_SAMPLEDELAY = 0x0006 # macro -ixGLB_GE2DIST_SAMPLEDELAY = 0x0007 # macro -ixGLB_GUS_SAMPLEDELAY = 0x0008 # macro -ixGLB_CHA_SAMPLEDELAY = 0x0009 # macro -ixGLB_CHCG_SAMPLEDELAY = 0x000a # macro -ixGLB_ATCL2_SAMPLEDELAY = 0x000b # macro -ixGLB_VML2_SAMPLEDELAY = 0x000c # macro -ixGLB_SDMA0_SAMPLEDELAY = 0x000d # macro -ixGLB_SDMA1_SAMPLEDELAY = 0x000e # macro -ixGLB_SDMA2_SAMPLEDELAY = 0x000f # macro -ixGLB_SDMA3_SAMPLEDELAY = 0x0010 # macro -ixGLB_GL2A0_SAMPLEDELAY = 0x0011 # macro -ixGLB_GL2A1_SAMPLEDELAY = 0x0012 # macro -ixGLB_GL2A2_SAMPLEDELAY = 0x0013 # macro -ixGLB_GL2A3_SAMPLEDELAY = 0x0014 # macro -ixGLB_GL2C0_SAMPLEDELAY = 0x0015 # macro -ixGLB_GL2C1_SAMPLEDELAY = 0x0016 # macro -ixGLB_GL2C2_SAMPLEDELAY = 0x0017 # macro -ixGLB_GL2C3_SAMPLEDELAY = 0x0018 # macro -ixGLB_GL2C4_SAMPLEDELAY = 0x0019 # macro -ixGLB_GL2C5_SAMPLEDELAY = 0x001a # macro -ixGLB_GL2C6_SAMPLEDELAY = 0x001b # macro -ixGLB_GL2C7_SAMPLEDELAY = 0x001c # macro -ixGLB_GL2C8_SAMPLEDELAY = 0x001d # macro -ixGLB_GL2C9_SAMPLEDELAY = 0x001e # macro -ixGLB_GL2C10_SAMPLEDELAY = 0x001f # macro -ixGLB_GL2C11_SAMPLEDELAY = 0x0020 # macro -ixGLB_GL2C12_SAMPLEDELAY = 0x0021 # macro -ixGLB_GL2C13_SAMPLEDELAY = 0x0022 # macro -ixGLB_GL2C14_SAMPLEDELAY = 0x0023 # macro -ixGLB_GL2C15_SAMPLEDELAY = 0x0024 # macro -ixGLB_EA0_SAMPLEDELAY = 0x0025 # macro -ixGLB_EA1_SAMPLEDELAY = 0x0026 # macro -ixGLB_EA2_SAMPLEDELAY = 0x0027 # macro -ixGLB_EA3_SAMPLEDELAY = 0x0028 # macro -ixGLB_EA4_SAMPLEDELAY = 0x0029 # macro -ixGLB_EA5_SAMPLEDELAY = 0x002a # macro -ixGLB_EA6_SAMPLEDELAY = 0x002b # macro -ixGLB_EA7_SAMPLEDELAY = 0x002c # macro -ixGLB_EA8_SAMPLEDELAY = 0x002d # macro -ixGLB_EA9_SAMPLEDELAY = 0x002e # macro -ixGLB_EA10_SAMPLEDELAY = 0x002f # macro -ixGLB_EA11_SAMPLEDELAY = 0x0030 # macro -ixGLB_EA12_SAMPLEDELAY = 0x0031 # macro -ixGLB_EA13_SAMPLEDELAY = 0x0032 # macro -ixGLB_EA14_SAMPLEDELAY = 0x0033 # macro -ixGLB_EA15_SAMPLEDELAY = 0x0034 # macro -ixGLB_CHC0_SAMPLEDELAY = 0x0035 # macro -ixGLB_CHC1_SAMPLEDELAY = 0x0036 # macro -ixGLB_CHC2_SAMPLEDELAY = 0x0037 # macro -ixGLB_CHC3_SAMPLEDELAY = 0x0038 # macro -ixGLB_GE2SE0_SAMPLEDELAY = 0x0039 # macro -ixGLB_GE2SE1_SAMPLEDELAY = 0x003a # macro -ixGLB_GE2SE2_SAMPLEDELAY = 0x003b # macro -ixGLB_GE2SE3_SAMPLEDELAY = 0x003c # macro -ixSE_SPI_SAMPLEDELAY = 0x0000 # macro -ixSE_SQG_SAMPLEDELAY = 0x0001 # macro -ixSE_CBR_SAMPLEDELAY = 0x0002 # macro -ixSE_DBR_SAMPLEDELAY = 0x0003 # macro -ixSE_PA_SAMPLEDELAY = 0x0004 # macro -ixSE_SA0SX_SAMPLEDELAY = 0x0005 # macro -ixSE_SA0GL1A_SAMPLEDELAY = 0x0006 # macro -ixSE_SA0GL1CG_SAMPLEDELAY = 0x0007 # macro -ixSE_SA0CB0_SAMPLEDELAY = 0x0008 # macro -ixSE_SA0CB1_SAMPLEDELAY = 0x0009 # macro -ixSE_SA0DB0_SAMPLEDELAY = 0x000a # macro -ixSE_SA0DB1_SAMPLEDELAY = 0x000b # macro -ixSE_SA0SC0_SAMPLEDELAY = 0x000c # macro -ixSE_SA0SC1_SAMPLEDELAY = 0x000d # macro -ixSE_SA0RMI0_SAMPLEDELAY = 0x000e # macro -ixSE_SA0RMI1_SAMPLEDELAY = 0x000f # macro -ixSE_SA0GL1C0_SAMPLEDELAY = 0x0010 # macro -ixSE_SA0GL1C1_SAMPLEDELAY = 0x0011 # macro -ixSE_SA0GL1C2_SAMPLEDELAY = 0x0012 # macro -ixSE_SA0GL1C3_SAMPLEDELAY = 0x0013 # macro -ixSE_SA0WGP00TA0_SAMPLEDELAY = 0x0014 # macro -ixSE_SA0WGP00TA1_SAMPLEDELAY = 0x0015 # macro -ixSE_SA0WGP00TD0_SAMPLEDELAY = 0x0016 # macro -ixSE_SA0WGP00TD1_SAMPLEDELAY = 0x0017 # macro -ixSE_SA0WGP00TCP0_SAMPLEDELAY = 0x0018 # macro -ixSE_SA0WGP00TCP1_SAMPLEDELAY = 0x0019 # macro -ixSE_SA0WGP01TA0_SAMPLEDELAY = 0x001a # macro -ixSE_SA0WGP01TA1_SAMPLEDELAY = 0x001b # macro -ixSE_SA0WGP01TD0_SAMPLEDELAY = 0x001c # macro -ixSE_SA0WGP01TD1_SAMPLEDELAY = 0x001d # macro -ixSE_SA0WGP01TCP0_SAMPLEDELAY = 0x001e # macro -ixSE_SA0WGP01TCP1_SAMPLEDELAY = 0x001f # macro -ixSE_SA0WGP02TA0_SAMPLEDELAY = 0x0020 # macro -ixSE_SA0WGP02TA1_SAMPLEDELAY = 0x0021 # macro -ixSE_SA0WGP02TD0_SAMPLEDELAY = 0x0022 # macro -ixSE_SA0WGP02TD1_SAMPLEDELAY = 0x0023 # macro -ixSE_SA0WGP02TCP0_SAMPLEDELAY = 0x0024 # macro -ixSE_SA0WGP02TCP1_SAMPLEDELAY = 0x0025 # macro -ixSE_SA0WGP03TA0_SAMPLEDELAY = 0x0026 # macro -ixSE_SA0WGP03TA1_SAMPLEDELAY = 0x0027 # macro -ixSE_SA0WGP03TD0_SAMPLEDELAY = 0x0028 # macro -ixSE_SA0WGP03TD1_SAMPLEDELAY = 0x0029 # macro -ixSE_SA0WGP03TCP0_SAMPLEDELAY = 0x002a # macro -ixSE_SA0WGP03TCP1_SAMPLEDELAY = 0x002b # macro -ixSE_SA0WGP04TA0_SAMPLEDELAY = 0x002c # macro -ixSE_SA0WGP04TA1_SAMPLEDELAY = 0x002d # macro -ixSE_SA0WGP04TD0_SAMPLEDELAY = 0x002e # macro -ixSE_SA0WGP04TD1_SAMPLEDELAY = 0x002f # macro -ixSE_SA0WGP04TCP0_SAMPLEDELAY = 0x0030 # macro -ixSE_SA0WGP04TCP1_SAMPLEDELAY = 0x0031 # macro -ixSE_SA1SX_SAMPLEDELAY = 0x0032 # macro -ixSE_SA1GL1A_SAMPLEDELAY = 0x0033 # macro -ixSE_SA1GL1CG_SAMPLEDELAY = 0x0034 # macro -ixSE_SA1CB0_SAMPLEDELAY = 0x0035 # macro -ixSE_SA1CB1_SAMPLEDELAY = 0x0036 # macro -ixSE_SA1DB0_SAMPLEDELAY = 0x0037 # macro -ixSE_SA1DB1_SAMPLEDELAY = 0x0038 # macro -ixSE_SA1SC0_SAMPLEDELAY = 0x0039 # macro -ixSE_SA1SC1_SAMPLEDELAY = 0x003a # macro -ixSE_SA1RMI0_SAMPLEDELAY = 0x003b # macro -ixSE_SA1RMI1_SAMPLEDELAY = 0x003c # macro -ixSE_SA1GL1C0_SAMPLEDELAY = 0x003d # macro -ixSE_SA1GL1C1_SAMPLEDELAY = 0x003e # macro -ixSE_SA1GL1C2_SAMPLEDELAY = 0x003f # macro -ixSE_SA1GL1C3_SAMPLEDELAY = 0x0040 # macro -ixSE_SA1WGP00TA0_SAMPLEDELAY = 0x0041 # macro -ixSE_SA1WGP00TA1_SAMPLEDELAY = 0x0042 # macro -ixSE_SA1WGP00TD0_SAMPLEDELAY = 0x0043 # macro -ixSE_SA1WGP00TD1_SAMPLEDELAY = 0x0044 # macro -ixSE_SA1WGP00TCP0_SAMPLEDELAY = 0x0045 # macro -ixSE_SA1WGP00TCP1_SAMPLEDELAY = 0x0046 # macro -ixSE_SA1WGP01TA0_SAMPLEDELAY = 0x0047 # macro -ixSE_SA1WGP01TA1_SAMPLEDELAY = 0x0048 # macro -ixSE_SA1WGP01TD0_SAMPLEDELAY = 0x0049 # macro -ixSE_SA1WGP01TD1_SAMPLEDELAY = 0x004a # macro -ixSE_SA1WGP01TCP0_SAMPLEDELAY = 0x004b # macro -ixSE_SA1WGP01TCP1_SAMPLEDELAY = 0x004c # macro -ixSE_SA1WGP02TA0_SAMPLEDELAY = 0x004d # macro -ixSE_SA1WGP02TA1_SAMPLEDELAY = 0x004e # macro -ixSE_SA1WGP02TD0_SAMPLEDELAY = 0x004f # macro -ixSE_SA1WGP02TD1_SAMPLEDELAY = 0x0050 # macro -ixSE_SA1WGP02TCP0_SAMPLEDELAY = 0x0051 # macro -ixSE_SA1WGP02TCP1_SAMPLEDELAY = 0x0052 # macro -ixSE_SA1WGP03TA0_SAMPLEDELAY = 0x0053 # macro -ixSE_SA1WGP03TA1_SAMPLEDELAY = 0x0054 # macro -ixSE_SA1WGP03TD0_SAMPLEDELAY = 0x0055 # macro -ixSE_SA1WGP03TD1_SAMPLEDELAY = 0x0056 # macro -ixSE_SA1WGP03TCP0_SAMPLEDELAY = 0x0057 # macro -ixSE_SA1WGP03TCP1_SAMPLEDELAY = 0x0058 # macro -ixSE_SA1WGP04TA0_SAMPLEDELAY = 0x0059 # macro -ixSE_SA1WGP04TA1_SAMPLEDELAY = 0x005a # macro -ixSE_SA1WGP04TD0_SAMPLEDELAY = 0x005b # macro -ixSE_SA1WGP04TD1_SAMPLEDELAY = 0x005c # macro -ixSE_SA1WGP04TCP0_SAMPLEDELAY = 0x005d # macro -ixSE_SA1WGP04TCP1_SAMPLEDELAY = 0x005e # macro -ixSA_WGP_BLK_ID = 0x0000 # macro -ixSQ_WAVE_HW_ID_LEGACY = 0x0104 # macro -ixSQ_WAVE_INST_DW0 = 0x010a # macro -ixSQ_WAVE_VGPR_OFFSET = 0x011b # macro -ixSQ_WAVE_TTMP2 = 0x026e # macro -ixSQ_INTERRUPT_WORD_AUTO = 0x20c0 # macro -ixSQ_INTERRUPT_WORD_ERROR = 0x20c0 # macro -ixSQ_INTERRUPT_WORD_WAVE = 0x20c0 # macro -ixDIDT_SQ_CTRL0 = 0x0000 # macro -ixDIDT_SQ_CTRL1 = 0x0001 # macro -ixDIDT_SQ_CTRL2 = 0x0002 # macro -ixDIDT_SQ_CTRL_OCP = 0x0003 # macro -ixDIDT_SQ_STALL_CTRL = 0x0004 # macro -ixDIDT_SQ_TUNING_CTRL = 0x0005 # macro -ixDIDT_SQ_STALL_AUTO_RELEASE_CTRL = 0x0006 # macro -ixDIDT_SQ_CTRL3 = 0x0007 # macro -ixDIDT_SQ_STALL_PATTERN_1_2 = 0x0008 # macro -ixDIDT_SQ_STALL_PATTERN_3_4 = 0x0009 # macro -ixDIDT_SQ_STALL_PATTERN_5_6 = 0x000a # macro -ixDIDT_SQ_STALL_PATTERN_7 = 0x000b # macro -ixDIDT_SQ_MPD_SCALE_FACTOR = 0x000c # macro -ixDIDT_SQ_STALL_RELEASE_CNTL0 = 0x000d # macro -ixDIDT_SQ_STALL_RELEASE_CNTL1 = 0x000e # macro -ixDIDT_SQ_STALL_RELEASE_CNTL_STATUS = 0x000f # macro -ixDIDT_SQ_WEIGHT0_3 = 0x0010 # macro -ixDIDT_SQ_WEIGHT4_7 = 0x0011 # macro -ixDIDT_SQ_WEIGHT8_11 = 0x0012 # macro -ixDIDT_SQ_EDC_CTRL = 0x0013 # macro -ixDIDT_SQ_EDC_THRESHOLD = 0x0014 # macro -ixDIDT_SQ_EDC_STALL_PATTERN_1_2 = 0x0015 # macro -ixDIDT_SQ_EDC_STALL_PATTERN_3_4 = 0x0016 # macro -ixDIDT_SQ_EDC_STALL_PATTERN_5_6 = 0x0017 # macro -ixDIDT_SQ_EDC_STALL_PATTERN_7 = 0x0018 # macro -ixDIDT_SQ_EDC_TIMER_PERIOD = 0x0019 # macro -ixDIDT_SQ_THROTTLE_CTRL = 0x001a # macro -ixDIDT_SQ_EDC_STALL_DELAY_1 = 0x001b # macro -ixDIDT_SQ_EDC_STALL_DELAY_2 = 0x001c # macro -ixDIDT_SQ_EDC_STALL_DELAY_3 = 0x001d # macro -ixDIDT_SQ_EDC_STATUS = 0x001f # macro -ixDIDT_SQ_EDC_OVERFLOW = 0x0020 # macro -ixDIDT_SQ_EDC_ROLLING_POWER_DELTA = 0x0021 # macro -ixDIDT_SQ_EDC_PCC_PERF_COUNTER = 0x0022 # macro -ixDIDT_DB_CTRL0 = 0x0030 # macro -ixDIDT_DB_CTRL1 = 0x0031 # macro -ixDIDT_DB_CTRL2 = 0x0032 # macro -ixDIDT_DB_CTRL_OCP = 0x0033 # macro -ixDIDT_DB_STALL_CTRL = 0x0034 # macro -ixDIDT_DB_TUNING_CTRL = 0x0035 # macro -ixDIDT_DB_STALL_AUTO_RELEASE_CTRL = 0x0036 # macro -ixDIDT_DB_CTRL3 = 0x0037 # macro -ixDIDT_DB_STALL_PATTERN_1_2 = 0x0038 # macro -ixDIDT_DB_STALL_PATTERN_3_4 = 0x0039 # macro -ixDIDT_DB_STALL_PATTERN_5_6 = 0x003a # macro -ixDIDT_DB_STALL_PATTERN_7 = 0x003b # macro -ixDIDT_DB_MPD_SCALE_FACTOR = 0x003c # macro -ixDIDT_DB_STALL_RELEASE_CNTL0 = 0x003d # macro -ixDIDT_DB_STALL_RELEASE_CNTL1 = 0x003e # macro -ixDIDT_DB_STALL_RELEASE_CNTL_STATUS = 0x003f # macro -ixDIDT_DB_WEIGHT0_3 = 0x0040 # macro -ixDIDT_DB_WEIGHT4_7 = 0x0041 # macro -ixDIDT_DB_WEIGHT8_11 = 0x0042 # macro -ixDIDT_DB_EDC_CTRL = 0x0043 # macro -ixDIDT_DB_EDC_THRESHOLD = 0x0044 # macro -ixDIDT_DB_EDC_STALL_PATTERN_1_2 = 0x0045 # macro -ixDIDT_DB_EDC_STALL_PATTERN_3_4 = 0x0046 # macro -ixDIDT_DB_EDC_STALL_PATTERN_5_6 = 0x0047 # macro -ixDIDT_DB_EDC_STALL_PATTERN_7 = 0x0048 # macro -ixDIDT_DB_EDC_TIMER_PERIOD = 0x0049 # macro -ixDIDT_DB_THROTTLE_CTRL = 0x004a # macro -ixDIDT_DB_EDC_STALL_DELAY_1 = 0x004b # macro -ixDIDT_DB_EDC_STATUS = 0x004f # macro -ixDIDT_DB_EDC_OVERFLOW = 0x0050 # macro -ixDIDT_DB_EDC_ROLLING_POWER_DELTA = 0x0051 # macro -ixDIDT_DB_EDC_PCC_PERF_COUNTER = 0x0052 # macro -ixDIDT_TD_CTRL0 = 0x0060 # macro -ixDIDT_TD_CTRL1 = 0x0061 # macro -ixDIDT_TD_CTRL2 = 0x0062 # macro -ixDIDT_TD_CTRL_OCP = 0x0063 # macro -ixDIDT_TD_STALL_CTRL = 0x0064 # macro -ixDIDT_TD_TUNING_CTRL = 0x0065 # macro -ixDIDT_TD_STALL_AUTO_RELEASE_CTRL = 0x0066 # macro -ixDIDT_TD_CTRL3 = 0x0067 # macro -ixDIDT_TD_STALL_PATTERN_1_2 = 0x0068 # macro -ixDIDT_TD_STALL_PATTERN_3_4 = 0x0069 # macro -ixDIDT_TD_STALL_PATTERN_5_6 = 0x006a # macro -ixDIDT_TD_STALL_PATTERN_7 = 0x006b # macro -ixDIDT_TD_MPD_SCALE_FACTOR = 0x006c # macro -ixDIDT_TD_STALL_RELEASE_CNTL0 = 0x006d # macro -ixDIDT_TD_STALL_RELEASE_CNTL1 = 0x006e # macro -ixDIDT_TD_STALL_RELEASE_CNTL_STATUS = 0x006f # macro -ixDIDT_TD_WEIGHT0_3 = 0x0070 # macro -ixDIDT_TD_WEIGHT4_7 = 0x0071 # macro -ixDIDT_TD_WEIGHT8_11 = 0x0072 # macro -ixDIDT_TD_EDC_CTRL = 0x0073 # macro -ixDIDT_TD_EDC_THRESHOLD = 0x0074 # macro -ixDIDT_TD_EDC_STALL_PATTERN_1_2 = 0x0075 # macro -ixDIDT_TD_EDC_STALL_PATTERN_3_4 = 0x0076 # macro -ixDIDT_TD_EDC_STALL_PATTERN_5_6 = 0x0077 # macro -ixDIDT_TD_EDC_STALL_PATTERN_7 = 0x0078 # macro -ixDIDT_TD_EDC_TIMER_PERIOD = 0x0079 # macro -ixDIDT_TD_THROTTLE_CTRL = 0x007a # macro -ixDIDT_TD_EDC_STALL_DELAY_1 = 0x007b # macro -ixDIDT_TD_EDC_STALL_DELAY_2 = 0x007c # macro -ixDIDT_TD_EDC_STALL_DELAY_3 = 0x007d # macro -ixDIDT_TD_EDC_STATUS = 0x007f # macro -ixDIDT_TD_EDC_OVERFLOW = 0x0080 # macro -ixDIDT_TD_EDC_ROLLING_POWER_DELTA = 0x0081 # macro -ixDIDT_TD_EDC_PCC_PERF_COUNTER = 0x0082 # macro -ixDIDT_TCP_CTRL0 = 0x0090 # macro -ixDIDT_TCP_CTRL1 = 0x0091 # macro -ixDIDT_TCP_CTRL2 = 0x0092 # macro -ixDIDT_TCP_CTRL_OCP = 0x0093 # macro -ixDIDT_TCP_STALL_CTRL = 0x0094 # macro -ixDIDT_TCP_TUNING_CTRL = 0x0095 # macro -ixDIDT_TCP_STALL_AUTO_RELEASE_CTRL = 0x0096 # macro -ixDIDT_TCP_CTRL3 = 0x0097 # macro -ixDIDT_TCP_STALL_PATTERN_1_2 = 0x0098 # macro -ixDIDT_TCP_STALL_PATTERN_3_4 = 0x0099 # macro -ixDIDT_TCP_STALL_PATTERN_5_6 = 0x009a # macro -ixDIDT_TCP_STALL_PATTERN_7 = 0x009b # macro -ixDIDT_TCP_MPD_SCALE_FACTOR = 0x009c # macro -ixDIDT_TCP_STALL_RELEASE_CNTL0 = 0x009d # macro -ixDIDT_TCP_STALL_RELEASE_CNTL1 = 0x009e # macro -ixDIDT_TCP_STALL_RELEASE_CNTL_STATUS = 0x009f # macro -ixDIDT_TCP_WEIGHT0_3 = 0x00a0 # macro -ixDIDT_TCP_WEIGHT4_7 = 0x00a1 # macro -ixDIDT_TCP_WEIGHT8_11 = 0x00a2 # macro -ixDIDT_TCP_EDC_CTRL = 0x00a3 # macro -ixDIDT_TCP_EDC_THRESHOLD = 0x00a4 # macro -ixDIDT_TCP_EDC_STALL_PATTERN_1_2 = 0x00a5 # macro -ixDIDT_TCP_EDC_STALL_PATTERN_3_4 = 0x00a6 # macro -ixDIDT_TCP_EDC_STALL_PATTERN_5_6 = 0x00a7 # macro -ixDIDT_TCP_EDC_STALL_PATTERN_7 = 0x00a8 # macro -ixDIDT_TCP_EDC_TIMER_PERIOD = 0x00a9 # macro -ixDIDT_TCP_THROTTLE_CTRL = 0x00aa # macro -ixDIDT_TCP_EDC_STALL_DELAY_1 = 0x00ab # macro -ixDIDT_TCP_EDC_STALL_DELAY_2 = 0x00ac # macro -ixDIDT_TCP_EDC_STALL_DELAY_3 = 0x00ad # macro -ixDIDT_TCP_EDC_STATUS = 0x00af # macro -ixDIDT_TCP_EDC_OVERFLOW = 0x00b0 # macro -ixDIDT_TCP_EDC_ROLLING_POWER_DELTA = 0x00b1 # macro -ixDIDT_TCP_EDC_PCC_PERF_COUNTER = 0x00b2 # macro -ixDIDT_SQ_STALL_EVENT_COUNTER = 0x00c0 # macro -ixDIDT_DB_STALL_EVENT_COUNTER = 0x00c1 # macro -ixDIDT_TD_STALL_EVENT_COUNTER = 0x00c2 # macro -ixDIDT_TCP_STALL_EVENT_COUNTER = 0x00c3 # macro _sienna_cichlid_ip_offset_HEADER = True # macro MAX_INSTANCE = 7 # macro MAX_SEGMENT = 5 # macro @@ -61790,97 +13823,7 @@ UMC_BASE = struct_IP_BASE # Variable struct_IP_BASE USB0_BASE = struct_IP_BASE # Variable struct_IP_BASE VCN_BASE = struct_IP_BASE # Variable struct_IP_BASE __all__ = \ - ['ACCEPT_UNSOLICITED_RESPONSE_ENABLE', - 'ACCEPT_UNSOLICITED_RESPONSE_NOT_ENABLE', 'ACP_TYPE_DVD_AUDIO', - 'ACP_TYPE_GENERIC_AUDIO', 'ACP_TYPE_ICE60958_AUDIO', - 'ACP_TYPE_SUPER_AUDIO_CD', 'ACrYCb16161616_10LSB', - 'ACrYCb16161616_10MSB', 'ACrYCb16161616_12LSB', - 'ACrYCb16161616_12MSB', 'ACrYCb2101010', 'ACrYCb8888', - 'ADDR_GEN_ONE', 'ADDR_GEN_TWO', 'ADDR_GEN_ZERO', 'ADDR_RESERVED', - 'AFMT_ACP_SOURCE_FROM_AFMT_REGISTERS', - 'AFMT_ACP_SOURCE_FROM_AZALIA', 'AFMT_ACP_TYPE', - 'AFMT_AUDIO_CRC_AUDIO_SAMPLE_COUNT', - 'AFMT_AUDIO_CRC_AUTO_RESTART', 'AFMT_AUDIO_CRC_CH0_SIG', - 'AFMT_AUDIO_CRC_CH1_SIG', 'AFMT_AUDIO_CRC_CH2_SIG', - 'AFMT_AUDIO_CRC_CH3_SIG', 'AFMT_AUDIO_CRC_CH4_SIG', - 'AFMT_AUDIO_CRC_CH5_SIG', 'AFMT_AUDIO_CRC_CH6_SIG', - 'AFMT_AUDIO_CRC_CH7_SIG', 'AFMT_AUDIO_CRC_CONTROL_CH_SEL', - 'AFMT_AUDIO_CRC_CONTROL_CONT', 'AFMT_AUDIO_CRC_CONTROL_SOURCE', - 'AFMT_AUDIO_CRC_ONESHOT', 'AFMT_AUDIO_CRC_RESERVED_10', - 'AFMT_AUDIO_CRC_RESERVED_11', 'AFMT_AUDIO_CRC_RESERVED_12', - 'AFMT_AUDIO_CRC_RESERVED_13', 'AFMT_AUDIO_CRC_RESERVED_14', - 'AFMT_AUDIO_CRC_RESERVED_8', 'AFMT_AUDIO_CRC_RESERVED_9', - 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_INPUT', - 'AFMT_AUDIO_CRC_SOURCE_FROM_FIFO_OUTPUT', - 'AFMT_AUDIO_LAYOUT_DETERMINED_BY_AZ_AUDIO_CHANNEL_STATUS', - 'AFMT_AUDIO_LAYOUT_OVRD_BY_REGISTER', - 'AFMT_AUDIO_PACKET_CONTROL2_AUDIO_LAYOUT_OVRD', - 'AFMT_AUDIO_PACKET_CONTROL_AUDIO_SAMPLE_SEND', - 'AFMT_AUDIO_PACKET_CONTROL_RESET_FIFO_WHEN_AUDIO_DIS', - 'AFMT_AUDIO_PACKET_SENT_DISABLED', - 'AFMT_AUDIO_PACKET_SENT_ENABLED', 'AFMT_AUDIO_SRC_CONTROL_SELECT', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM0', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM1', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM2', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM3', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM4', - 'AFMT_AUDIO_SRC_FROM_AZ_STREAM5', - 'AFMT_HDMI_AUDIO_SEND_MAX_PACKETS', - 'AFMT_INFOFRAME_CONTROL0_AUDIO_INFO_SOURCE', - 'AFMT_INFOFRAME_SOURCE_FROM_AFMT_REGISTERS', - 'AFMT_INFOFRAME_SOURCE_FROM_AZALIA_BLOCK', - 'AFMT_INTERRUPT_DISABLE', 'AFMT_INTERRUPT_ENABLE', - 'AFMT_INTERRUPT_STATUS_CHG_MASK', 'AFMT_MEM_DISABLE_MEM_PWR_CTRL', - 'AFMT_MEM_ENABLE_MEM_PWR_CTRL', - 'AFMT_MEM_FORCE_DEEP_SLEEP_REQUEST', - 'AFMT_MEM_FORCE_LIGHT_SLEEP_REQUEST', - 'AFMT_MEM_FORCE_SHUT_DOWN_REQUEST', 'AFMT_MEM_NO_FORCE_REQUEST', - 'AFMT_MEM_PWR_DIS_CTRL', 'AFMT_MEM_PWR_FORCE_CTRL', - 'AFMT_NOT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED_RESERVED', - 'AFMT_RAMP_CONTROL0_SIGN', 'AFMT_RAMP_SIGNED', - 'AFMT_RAMP_UNSIGNED', 'AFMT_RESET_AUDIO_FIFO_WHEN_AUDIO_DISABLED', - 'AFMT_VBI_PACKET_CONTROL_ACP_SOURCE', 'ALLOW_SR_ON_TRANS_REQ', - 'ALLOW_SR_ON_TRANS_REQ_DISABLE', 'ALLOW_SR_ON_TRANS_REQ_ENABLE', - 'ALL_USE_R', 'ALPHA_DATA_ONTO_ALPHA_PORT', - 'ALPHA_DATA_ONTO_CB_B_PORT', 'ALPHA_DATA_ONTO_CR_R_PORT', - 'ALPHA_DATA_ONTO_Y_G_PORT', - 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_ACK', - 'ALPHA_DP_AUX_DEFINITE_ERR_REACHED_NOT_ACK', 'AMCLOCK_ENABLE', - 'APG_ACP_OVERRIDE', 'APG_ACP_SOURCE_NO_OVERRIDE', - 'APG_ACP_TYPE_DVD_AUDIO', 'APG_ACP_TYPE_GENERIC_AUDIO', - 'APG_ACP_TYPE_ICE60958_AUDIO', 'APG_ACP_TYPE_SUPER_AUDIO_CD', - 'APG_AUDIO_CRC_CH0_SIG', 'APG_AUDIO_CRC_CH1_SIG', - 'APG_AUDIO_CRC_CH2_SIG', 'APG_AUDIO_CRC_CH3_SIG', - 'APG_AUDIO_CRC_CH4_SIG', 'APG_AUDIO_CRC_CH5_SIG', - 'APG_AUDIO_CRC_CH6_SIG', 'APG_AUDIO_CRC_CH7_SIG', - 'APG_AUDIO_CRC_CONTINUOUS', 'APG_AUDIO_CRC_CONTROL_CH_SEL', - 'APG_AUDIO_CRC_CONTROL_CONT', 'APG_AUDIO_CRC_ONESHOT', - 'APG_AUDIO_CRC_RESERVED_10', 'APG_AUDIO_CRC_RESERVED_11', - 'APG_AUDIO_CRC_RESERVED_12', 'APG_AUDIO_CRC_RESERVED_13', - 'APG_AUDIO_CRC_RESERVED_14', 'APG_AUDIO_CRC_RESERVED_15', - 'APG_AUDIO_CRC_RESERVED_8', 'APG_AUDIO_CRC_RESERVED_9', - 'APG_DBG_ACP_TYPE', 'APG_DBG_AUDIO_DTO_BASE', - 'APG_DBG_AUDIO_DTO_DIV', 'APG_DBG_AUDIO_DTO_MULTI', - 'APG_DBG_MUX_SEL', 'APG_DEBUG_AUDIO_MODE', - 'APG_DP_ASP_CHANNEL_COUNT_FROM_AZ', - 'APG_DP_ASP_CHANNEL_COUNT_OVERRIDE', - 'APG_DP_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED', - 'APG_FUNCTIONAL_MODE', 'APG_INFOFRAME_SOURCE_FROM_APG_REGISTERS', - 'APG_INFOFRAME_SOURCE_NO_OVERRIDE', - 'APG_MEM_DISABLE_MEM_PWR_CTRL', 'APG_MEM_ENABLE_MEM_PWR_CTRL', - 'APG_MEM_FORCE_DEEP_SLEEP_REQUEST', - 'APG_MEM_FORCE_LIGHT_SLEEP_REQUEST', - 'APG_MEM_FORCE_SHUT_DOWN_REQUEST', 'APG_MEM_NO_FORCE_REQUEST', - 'APG_MEM_POWER_STATE', 'APG_MEM_POWER_STATE_DS', - 'APG_MEM_POWER_STATE_LS', 'APG_MEM_POWER_STATE_ON', - 'APG_MEM_POWER_STATE_SD', 'APG_MEM_PWR_DIS_CTRL', - 'APG_MEM_PWR_FORCE_CTRL', 'APG_PACKET_CONTROL_ACP_SOURCE', - 'APG_PACKET_CONTROL_AUDIO_INFO_SOURCE', 'APG_RAMP_CONTROL_SIGN', - 'APG_RAMP_SIGNED', 'APG_RAMP_UNSIGNED', 'ARGB1555', - 'ARGB16161616_10LSB', 'ARGB16161616_10MSB', 'ARGB16161616_12LSB', - 'ARGB16161616_12MSB', 'ARGB16161616_FLOAT', 'ARGB16161616_SNORM', - 'ARGB16161616_UNORM', 'ARGB2101010', 'ARGB4444', 'ARGB8888', - 'ATHUB_BASE', 'ATHUB_BASE__INST0_SEG0', 'ATHUB_BASE__INST0_SEG1', + ['ATHUB_BASE', 'ATHUB_BASE__INST0_SEG0', 'ATHUB_BASE__INST0_SEG1', 'ATHUB_BASE__INST0_SEG2', 'ATHUB_BASE__INST0_SEG3', 'ATHUB_BASE__INST0_SEG4', 'ATHUB_BASE__INST1_SEG0', 'ATHUB_BASE__INST1_SEG1', 'ATHUB_BASE__INST1_SEG2', @@ -61897,885 +13840,8 @@ __all__ = \ 'ATHUB_BASE__INST5_SEG3', 'ATHUB_BASE__INST5_SEG4', 'ATHUB_BASE__INST6_SEG0', 'ATHUB_BASE__INST6_SEG1', 'ATHUB_BASE__INST6_SEG2', 'ATHUB_BASE__INST6_SEG3', - 'ATHUB_BASE__INST6_SEG4', 'AUDIO_LAYOUT_0', 'AUDIO_LAYOUT_1', - 'AUDIO_LAYOUT_SELECT', 'AUTOCAL_MODE_AUTOCENTER', - 'AUTOCAL_MODE_AUTOREPLICATE', 'AUTOCAL_MODE_AUTOSCALE', - 'AUTOCAL_MODE_OFF', 'AYCrCb16161616_10LSB', - 'AYCrCb16161616_10MSB', 'AYCrCb16161616_12LSB', - 'AYCrCb16161616_12MSB', 'AYCrCb8888', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_MONOPHONIC', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AUDIO_CHANNEL_CAPABILITIES_STEREO', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_ANALOG', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CODEC_CONVERTER0_IS_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NOT_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_FORMAT_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_NO_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_CODEC_CONVERTER0_HAVE_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_INPUT_CONVERTER_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESING_CAPABILITIES', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_DP_NOT_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_HAVE_EAPD_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE_NO_EAPD_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_PRESENCE_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HDMI_NOT_ENABLED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_I_O_PINS_NOT_BALANCED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_JACK_PRESENCE_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED', - 'AZALIA_F0_CODEC_INPUT_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE', - 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 'AZALIA_F0_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', - 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HAVE_HBR_CAPABLILITY', - 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_HBR_CAPABLE', - 'AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR_NO_HBR_CAPABLILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_CONNECTION_LIST', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_DIGITAL', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_AMPLIFIER_PARAMETER_OVERRIDE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_CONNECTION_LIST', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_INPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_HAVE_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_ANALOG', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_IS_DIGITAL', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_LR_SWAP', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_AMPLIFIER_PARAMETER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_CONNECTION_LIST', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_INPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_LR_SWAP_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_OUTPUT_AMPLIFIER', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_POWER_CONTROL_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_NO_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_OUTPUT_AMPLIFIER_PRESENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_POWER_CONTROL', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_HAVE_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_PROCESSING_WIDGET_NO_PROCESSING_CAPABILITIES', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_STRIPE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_SUPPORT_STRIPING', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_BEEP_GENERATOR_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_INPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_MIXER_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_OUTPUT_CONVERTER_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_PIN_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_POWER_WIDGET_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_RESERVED_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_SELECTOR_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VENDOR_DEFINED_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_TYPE_VOLUME_KNOB_RESERVED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_AUDIO_WIDGET_CAPABILITIES_UNSOLICITED_RESPONSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_BALANCED_I_O_PINS', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_EAPD_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_EAPD_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_INPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HAVE_OUTPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_HEADPHONE_DRIVE_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_IMPEDANCE_SENSE_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_INPUT_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_BALANCED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_I_O_PINS_ARE_NOT_BALANCED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_EAPD_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_HEADPHONE_DRIVE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_IMPEDANCE_SENSE_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_INPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_JACK_DETECTION_CAPABILITY', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_OUTPUT_PIN', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_NO_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_OUTPUT_CAPABLE', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED', - 'AZALIA_F0_CODEC_PIN_PARAMETER_CAPABILITIES_TRIGGER_REQUIRED_FOR_IMPEDANCE_MEASUREMENT', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_ENABLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_3_KEEPALIVE_SILENT_STREAM_NOT_ENABLE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_COPY_BIT_C_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_L_BIT7_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_NON_AUDIO_BIT_B_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRE_LSB_OF_D_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_IS_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_PRO_BIT_A_NOT_SET', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_NOT_ON', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VALIDITY_CFG_ON', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_VCFG', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ONE', - 'AZALIA_F2_CODEC_CONVERTER_CONTROL_DIGITAL_CONVERTER_V_BIT28_IS_ZERO', - 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_DO_RESET', - 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_NOT_RESET', - 'AZALIA_F2_CODEC_FUNCTION_CONTROL_RESET_CODEC_RESET', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_16', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_20', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_24', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_BITS_PER_SAMPLE_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_1', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_2', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_3', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_4', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_5', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_6', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_7', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_8', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_NUMBER_OF_CHANNELS_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_NOT_PCM', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_CONVERTER_FORMAT_STREAM_TYPE_PCM', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_DISABLED', - 'AZALIA_F2_CODEC_INPUT_CONVERTER_CONTROL_DIGITAL_CONVERTER_DIGEN_DIGITAL_TRANSMISSION_ENABLED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL0_ENABLE_MULTICHANNEL0_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL2_ENABLE_MULTICHANNEL2_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL4_ENABLE_MULTICHANNEL4_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL6_ENABLE_MULTICHANNEL6_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_DRIVEN', - 'AZALIA_F2_CODEC_INPUT_PIN_CONTROL_WIDGET_CONTROL_IN_ENABLE_PIN_SHUT_OFF', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_0', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_1', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_10', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_11', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_12', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_13', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_14', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_15', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_2', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_3', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_4', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_5', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_6', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_7', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_8', - 'AZALIA_F2_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR_FORMAT_CODE_9', - 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_FORBIDDEN', - 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_INFO_DOWN_MIX_INHIBIT', - 'AZALIA_F2_CODEC_PIN_CONTROL_DOWN_MIX_NO_INFO_OR_PERMITTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL01_ENABLE_MULTICHANNEL01_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL1_ENABLE_MULTICHANNEL1_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL23_ENABLE_MULTICHANNEL23_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL3_ENABLE_MULTICHANNEL3_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL45_ENABLE_MULTICHANNEL45_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL5_ENABLE_MULTICHANNEL5_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL67_ENABLE_MULTICHANNEL67_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL7_ENABLE_MULTICHANNEL7_NOT_MUTED', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_MODE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_PAIR_MODE', - 'AZALIA_F2_CODEC_PIN_CONTROL_MULTICHANNEL_MODE_MULTICHANNEL_SINGLE_MODE', - 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_DISABLED', - 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLE', - 'AZALIA_F2_CODEC_PIN_CONTROL_UNSOLICITED_RESPONSE_ENABLED', - 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE', - 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_DRIVEN', - 'AZALIA_F2_CODEC_PIN_CONTROL_WIDGET_CONTROL_OUT_ENABLE_PIN_SHUT_OFF', - 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET', - 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_NOT_RESET', - 'AZALIA_SOFT_RESET_REFCLK_SOFT_RESET_RESET_REFCLK_LOGIC', - 'AZ_CORB_SIZE', 'AZ_CORB_SIZE_16ENTRIES_RESERVED', - 'AZ_CORB_SIZE_256ENTRIES', 'AZ_CORB_SIZE_2ENTRIES_RESERVED', - 'AZ_CORB_SIZE_RESERVED', 'AZ_GLOBAL_CAPABILITIES', - 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_NOT_SUPPORTED', - 'AZ_GLOBAL_CAPABILITIES_SIXTY_FOUR_BIT_ADDRESS_SUPPORTED', - 'AZ_LATENCY_COUNTER_CONTROL', 'AZ_LATENCY_COUNTER_NO_RESET', - 'AZ_LATENCY_COUNTER_RESET_DONE', 'AZ_RIRB_SIZE', - 'AZ_RIRB_SIZE_16ENTRIES_RESERVED', 'AZ_RIRB_SIZE_256ENTRIES', - 'AZ_RIRB_SIZE_2ENTRIES_RESERVED', 'AZ_RIRB_SIZE_UNDEFINED', - 'AZ_RIRB_WRITE_POINTER_DO_RESET', - 'AZ_RIRB_WRITE_POINTER_NOT_RESET', 'AZ_RIRB_WRITE_POINTER_RESET', - 'AZ_STATE_CHANGE_STATUS', - 'AZ_STATE_CHANGE_STATUS_CODEC_NOT_PRESENT', - 'AZ_STATE_CHANGE_STATUS_CODEC_PRESENT', 'BASE_RATE_44P1KHZ', - 'BASE_RATE_48KHZ', 'BGR101111_FIX', 'BGR101111_FLOAT', 'BGR565', - 'BIGK_FRAGMENT_SIZE', 'BINNER_BREAK_BATCH', 'BINNER_DROP', - 'BINNER_PIPELINE', 'BINNER_PIPELINE_BREAK', 'BINNING_ALLOWED', - 'BIN_CONF_OVERRIDE_CHECK', 'BIN_MAP_MODE_NONE', - 'BIN_MAP_MODE_POPS', 'BIN_MAP_MODE_RTA_INDEX', - 'BIN_SIZE_128_PIXELS', 'BIN_SIZE_256_PIXELS', - 'BIN_SIZE_32_PIXELS', 'BIN_SIZE_512_PIXELS', 'BIN_SIZE_64_PIXELS', - 'BITS_31_0', 'BITS_32_1', 'BITS_33_2', 'BITS_34_3', 'BITS_35_4', - 'BITS_36_5', 'BITS_37_6', 'BITS_38_7', 'BLEND_CONSTANT_ALPHA', - 'BLEND_CONSTANT_COLOR', 'BLEND_DST_ALPHA', 'BLEND_DST_COLOR', - 'BLEND_INV_SRC1_ALPHA', 'BLEND_INV_SRC1_COLOR', 'BLEND_ONE', - 'BLEND_ONE_MINUS_CONSTANT_ALPHA', - 'BLEND_ONE_MINUS_CONSTANT_COLOR', 'BLEND_ONE_MINUS_DST_ALPHA', - 'BLEND_ONE_MINUS_DST_COLOR', 'BLEND_ONE_MINUS_SRC_ALPHA', - 'BLEND_ONE_MINUS_SRC_COLOR', 'BLEND_OPT_PRESERVE_A0_IGNORE_A1', - 'BLEND_OPT_PRESERVE_A1_IGNORE_A0', - 'BLEND_OPT_PRESERVE_ALL_IGNORE_NONE', - 'BLEND_OPT_PRESERVE_C0_IGNORE_C1', - 'BLEND_OPT_PRESERVE_C1_IGNORE_C0', - 'BLEND_OPT_PRESERVE_NONE_IGNORE_A0', - 'BLEND_OPT_PRESERVE_NONE_IGNORE_ALL', - 'BLEND_OPT_PRESERVE_NONE_IGNORE_NONE', 'BLEND_SRC1_ALPHA', - 'BLEND_SRC1_COLOR', 'BLEND_SRC_ALPHA', 'BLEND_SRC_ALPHA_SATURATE', - 'BLEND_SRC_COLOR', 'BLEND_ZERO', 'BLOCK_CONTEXT_DONE', 'BLUE_LUT', - 'BORROWBUFFER_MEM_POWER_STATE_ENUM', - 'BORROWBUFFER_MEM_POWER_STATE_ENUM_DS', - 'BORROWBUFFER_MEM_POWER_STATE_ENUM_LS', - 'BORROWBUFFER_MEM_POWER_STATE_ENUM_ON', - 'BORROWBUFFER_MEM_POWER_STATE_ENUM_SD', 'BOTTOM_OF_PIPE_TS', - 'BREAK_BATCH', 'BYPASS', 'BYPASS_EN', 'BYPASS_GAMUT', - 'BYPASS_POST_CSC', 'BinEventCntl', 'BinMapMode', 'BinSizeExtend', - 'BinningMode', 'BlendOp', 'BlendOpt', 'CACHE_BYPASS', - 'CACHE_FLUSH', 'CACHE_FLUSH_AND_INV_EVENT', - 'CACHE_FLUSH_AND_INV_TS_EVENT', 'CACHE_FLUSH_AND_INV_TS_EVENT', - 'CACHE_FLUSH_TS', 'CACHE_LRU_RD', 'CACHE_LRU_WR', 'CACHE_NOA', - 'CACHE_NOA_WR', 'CACHE_STREAM', 'CACHE_STREAM_RD', 'CBMode', - 'CBPerfClearFilterSel', 'CBPerfOpFilterSel', 'CBPerfSel', - 'CBRamList', 'CB_B_DATA_ONTO_ALPHA_PORT', - 'CB_B_DATA_ONTO_CB_B_PORT', 'CB_B_DATA_ONTO_CR_R_PORT', - 'CB_B_DATA_ONTO_Y_G_PORT', 'CB_DCC_DECOMPRESS', - 'CB_DCG_BACKEND_RDLAT_FIFO', 'CB_DCG_CCC_CAS_COLOR_PTR', - 'CB_DCG_CCC_CAS_FRAG_PTR', 'CB_DCG_CCC_CAS_KEYID', - 'CB_DCG_CCC_CAS_SURF_PARAM', 'CB_DCG_CCC_CAS_TAG_ARRAY', - 'CB_DCG_COLOR_STORE', 'CB_DCG_COLOR_STORE_DIRTY_BYTE', - 'CB_DCG_DCC_CACHE', 'CB_DCG_DCC_DIRTY_BITS', - 'CB_DCG_FMASK_CACHE_STORE', 'CB_DCG_FRONTEND_RDLAT_FIFO', - 'CB_DCG_OUTPUT_FIFO', 'CB_DCG_QBLOCK_ALLOC', - 'CB_DCG_QUAD_PTR_FIFO', 'CB_DCG_READ_SKID_FIFO', - 'CB_DCG_SRC_FIFO', 'CB_DISABLE', 'CB_ELIMINATE_FAST_CLEAR', - 'CB_NORMAL', 'CB_PERF_CLEAR_FILTER_SEL_CLEAR', - 'CB_PERF_CLEAR_FILTER_SEL_NONCLEAR', - 'CB_PERF_OP_FILTER_SEL_DECOMPRESS', - 'CB_PERF_OP_FILTER_SEL_ELIMINATE_FAST_CLEAR', - 'CB_PERF_OP_FILTER_SEL_FMASK_DECOMPRESS', - 'CB_PERF_OP_FILTER_SEL_NEEDS_DESTINATION', - 'CB_PERF_OP_FILTER_SEL_RESOLVE', - 'CB_PERF_OP_FILTER_SEL_WRITE_ONLY', - 'CB_PERF_SEL_BACKEND_CACHE_CTL_CLOCK_EN', - 'CB_PERF_SEL_BACKEND_EVICT_PIPE_CLOCK_EN', - 'CB_PERF_SEL_BACKEND_FRAGOP_CLOCK_EN', - 'CB_PERF_SEL_BACKEND_READ_CLOCK_EN', - 'CB_PERF_SEL_BACKEND_SRC_FIFO_CLOCK_EN', - 'CB_PERF_SEL_BLEND_CLOCK_EN', - 'CB_PERF_SEL_BLEND_OPT_PIXELS_RESULT_EQ_DEST', - 'CB_PERF_SEL_BLEND_QUAD_BLENDING_COULD_HAVE_BEEN_BYPASSED', - 'CB_PERF_SEL_BLEND_QUAD_COULD_HAVE_BEEN_DISCARDED', - 'CB_PERF_SEL_BLEND_QUAD_DST_READ_COULD_HAVE_BEEN_OPTIMIZED', - 'CB_PERF_SEL_BLEND_STALL_AT_OUTPUT', - 'CB_PERF_SEL_CB_RMI_RDREQ_VALIDB_READY', - 'CB_PERF_SEL_CB_RMI_RDREQ_VALIDB_READYB', - 'CB_PERF_SEL_CB_RMI_RDREQ_VALID_READY', - 'CB_PERF_SEL_CB_RMI_RDREQ_VALID_READYB', - 'CB_PERF_SEL_CB_RMI_WRREQ_VALIDB_READY', - 'CB_PERF_SEL_CB_RMI_WRREQ_VALIDB_READYB', - 'CB_PERF_SEL_CB_RMI_WRREQ_VALID_READY', - 'CB_PERF_SEL_CB_RMI_WRREQ_VALID_READYB', - 'CB_PERF_SEL_CC_CACHE_ACK_OUTPUT_STALL', - 'CB_PERF_SEL_CC_CACHE_DIRTY_SECTORS_FLUSHED', - 'CB_PERF_SEL_CC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 'CB_PERF_SEL_CC_CACHE_FLUSH', - 'CB_PERF_SEL_CC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 'CB_PERF_SEL_CC_CACHE_READS_SAVED_DUE_TO_DCC', - 'CB_PERF_SEL_CC_CACHE_READ_OUTPUT_STALL', - 'CB_PERF_SEL_CC_CACHE_REEVICTION_STALL', - 'CB_PERF_SEL_CC_CACHE_REPLACE_PENDING_EVICT_STALL', - 'CB_PERF_SEL_CC_CACHE_SECTORS_FLUSHED', - 'CB_PERF_SEL_CC_CACHE_SECTOR_HIT', - 'CB_PERF_SEL_CC_CACHE_SECTOR_MISS', 'CB_PERF_SEL_CC_CACHE_STALL', - 'CB_PERF_SEL_CC_CACHE_TAGS_FLUSHED', - 'CB_PERF_SEL_CC_CACHE_TAG_MISS', - 'CB_PERF_SEL_CC_CACHE_WA_TO_RMW_CONVERSION', - 'CB_PERF_SEL_CC_CACHE_WRITE_OUTPUT_STALL', - 'CB_PERF_SEL_CC_DCC_COMPRESS_TID_IN', - 'CB_PERF_SEL_CC_DCC_COMPRESS_TID_OUT', - 'CB_PERF_SEL_CC_DCC_DECOMPRESS_TID_IN', - 'CB_PERF_SEL_CC_DCC_DECOMPRESS_TID_OUT', - 'CB_PERF_SEL_CC_MC_READ_REQUEST', - 'CB_PERF_SEL_CC_MC_READ_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_CC_MC_WRITE_REQUEST', - 'CB_PERF_SEL_CC_MC_WRITE_REQUESTS_IN_FLIGHT', - 'CB_PERF_SEL_CC_SURFACE_SYNC', 'CB_PERF_SEL_CC_TAG_HIT', - 'CB_PERF_SEL_COLOR_STORE_CLOCK_EN', - 'CB_PERF_SEL_DB_CB_EXPORT_VALIDB_READY', - 'CB_PERF_SEL_DB_CB_EXPORT_VALIDB_READYB', - 'CB_PERF_SEL_DB_CB_EXPORT_VALID_READY', - 'CB_PERF_SEL_DB_CB_EXPORT_VALID_READYB', - 'CB_PERF_SEL_DCC_CACHE_ACK_OUTPUT_STALL', - 'CB_PERF_SEL_DCC_CACHE_DIRTY_SECTORS_FLUSHED', - 'CB_PERF_SEL_DCC_CACHE_EVICT_NONZERO_INFLIGHT_STALL', - 'CB_PERF_SEL_DCC_CACHE_FLUSH', - 'CB_PERF_SEL_DCC_CACHE_INFLIGHT_COUNTER_MAXIMUM_STALL', - 'CB_PERF_SEL_DCC_CACHE_PERF_HIT', - 'CB_PERF_SEL_DCC_CACHE_READ_OUTPUT_STALL', - 'CB_PERF_SEL_DCC_CACHE_REEVICTION_STALL', - 'CB_PERF_SEL_DCC_CACHE_REPLACE_PENDING_EVICT_STALL', - 'CB_PERF_SEL_DCC_CACHE_SECTORS_FLUSHED', - 'CB_PERF_SEL_DCC_CACHE_SECTOR_MISS', - 'CB_PERF_SEL_DCC_CACHE_STALL', - 'CB_PERF_SEL_DCC_CACHE_TAGS_FLUSHED', - 'CB_PERF_SEL_DCC_CACHE_TAG_MISS', - 'CB_PERF_SEL_DCC_CACHE_WRITE_OUTPUT_STALL', - 'CB_PERF_SEL_DRAWN_PIXEL', 'CB_PERF_SEL_DRAWN_QUAD', - 'CB_PERF_SEL_DRAWN_QUAD_FRAGMENT', 'CB_PERF_SEL_DRAWN_TILE', - 'CB_PERF_SEL_EVENT', 'CB_PERF_SEL_EVENT_CACHE_FLUSH', - 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_EVENT', - 'CB_PERF_SEL_EVENT_CACHE_FLUSH_AND_INV_TS_EVENT', - 'CB_PERF_SEL_EVENT_CACHE_FLUSH_TS', - 'CB_PERF_SEL_EVENT_CONTEXT_DONE', - 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_DATA_TS', - 'CB_PERF_SEL_EVENT_FLUSH_AND_INV_CB_META', - 'CB_PERF_SEL_EXPORT_32_ABGR_QUAD_FRAGMENT', - 'CB_PERF_SEL_FILTER_DRAWN_PIXEL', 'CB_PERF_SEL_FILTER_DRAWN_QUAD', - 'CB_PERF_SEL_FILTER_DRAWN_QUAD_FRAGMENT', - 'CB_PERF_SEL_FILTER_DRAWN_TILE', - 'CB_PERF_SEL_FRONTEND_ADDR_CLOCK_EN', - 'CB_PERF_SEL_FRONTEND_FDCC_CLOCK_EN', - 'CB_PERF_SEL_FRONTEND_INPUT_CLOCK_EN', - 'CB_PERF_SEL_FRONTEND_SAMPLE_MASK_TRACKER_CLOCK_EN', - 'CB_PERF_SEL_GRBM_CLOCK_EN', 'CB_PERF_SEL_MEMARB_CLOCK_EN', - 'CB_PERF_SEL_NACK_CC_READ', 'CB_PERF_SEL_NACK_CC_WRITE', - 'CB_PERF_SEL_NONE', 'CB_PERF_SEL_PERFMON_CLOCK_EN', - 'CB_PERF_SEL_RESERVED_118', 'CB_PERF_SEL_RESERVED_119', - 'CB_PERF_SEL_RESERVED_120', 'CB_PERF_SEL_RESERVED_121', - 'CB_PERF_SEL_RESERVED_122', 'CB_PERF_SEL_RESERVED_123', - 'CB_PERF_SEL_RESERVED_124', 'CB_PERF_SEL_RESERVED_125', - 'CB_PERF_SEL_RESERVED_126', 'CB_PERF_SEL_RESERVED_127', - 'CB_PERF_SEL_RESERVED_128', 'CB_PERF_SEL_RESERVED_129', - 'CB_PERF_SEL_RESERVED_130', 'CB_PERF_SEL_RESERVED_131', - 'CB_PERF_SEL_RESERVED_132', 'CB_PERF_SEL_RESERVED_133', - 'CB_PERF_SEL_RESERVED_134', 'CB_PERF_SEL_RESERVED_135', - 'CB_PERF_SEL_RESERVED_136', 'CB_PERF_SEL_RESERVED_137', - 'CB_PERF_SEL_RESERVED_138', 'CB_PERF_SEL_RESERVED_139', - 'CB_PERF_SEL_RESERVED_140', 'CB_PERF_SEL_RESERVED_141', - 'CB_PERF_SEL_RESERVED_142', 'CB_PERF_SEL_RESERVED_143', - 'CB_PERF_SEL_RESERVED_144', 'CB_PERF_SEL_RESERVED_145', - 'CB_PERF_SEL_RESERVED_146', 'CB_PERF_SEL_RESERVED_147', - 'CB_PERF_SEL_RESERVED_148', 'CB_PERF_SEL_RESERVED_149', - 'CB_PERF_SEL_RESERVED_165', 'CB_PERF_SEL_RESERVED_166', - 'CB_PERF_SEL_RESERVED_167', 'CB_PERF_SEL_RESERVED_168', - 'CB_PERF_SEL_RESERVED_169', 'CB_PERF_SEL_RESERVED_170', - 'CB_PERF_SEL_RESERVED_171', 'CB_PERF_SEL_RESERVED_172', - 'CB_PERF_SEL_RESERVED_173', 'CB_PERF_SEL_RESERVED_174', - 'CB_PERF_SEL_RESERVED_175', 'CB_PERF_SEL_RESERVED_176', - 'CB_PERF_SEL_RESERVED_177', 'CB_PERF_SEL_RESERVED_178', - 'CB_PERF_SEL_RESERVED_179', 'CB_PERF_SEL_RESERVED_180', - 'CB_PERF_SEL_RESERVED_181', 'CB_PERF_SEL_RESERVED_182', - 'CB_PERF_SEL_RESERVED_183', 'CB_PERF_SEL_RESERVED_184', - 'CB_PERF_SEL_RESERVED_185', 'CB_PERF_SEL_RESERVED_186', - 'CB_PERF_SEL_RESERVED_187', 'CB_PERF_SEL_RESERVED_188', - 'CB_PERF_SEL_RESERVED_189', 'CB_PERF_SEL_RESERVED_190', - 'CB_PERF_SEL_RESERVED_191', 'CB_PERF_SEL_RESERVED_192', - 'CB_PERF_SEL_RESERVED_193', 'CB_PERF_SEL_RESERVED_194', - 'CB_PERF_SEL_RESERVED_195', 'CB_PERF_SEL_RESERVED_196', - 'CB_PERF_SEL_RESERVED_197', 'CB_PERF_SEL_RESERVED_198', - 'CB_PERF_SEL_RESERVED_199', 'CB_PERF_SEL_RESERVED_205', - 'CB_PERF_SEL_RESERVED_206', 'CB_PERF_SEL_RESERVED_207', - 'CB_PERF_SEL_RESERVED_208', 'CB_PERF_SEL_RESERVED_209', - 'CB_PERF_SEL_RESERVED_21', 'CB_PERF_SEL_RESERVED_210', - 'CB_PERF_SEL_RESERVED_211', 'CB_PERF_SEL_RESERVED_212', - 'CB_PERF_SEL_RESERVED_213', 'CB_PERF_SEL_RESERVED_214', - 'CB_PERF_SEL_RESERVED_215', 'CB_PERF_SEL_RESERVED_216', - 'CB_PERF_SEL_RESERVED_217', 'CB_PERF_SEL_RESERVED_218', - 'CB_PERF_SEL_RESERVED_219', 'CB_PERF_SEL_RESERVED_22', - 'CB_PERF_SEL_RESERVED_220', 'CB_PERF_SEL_RESERVED_221', - 'CB_PERF_SEL_RESERVED_222', 'CB_PERF_SEL_RESERVED_223', - 'CB_PERF_SEL_RESERVED_224', 'CB_PERF_SEL_RESERVED_225', - 'CB_PERF_SEL_RESERVED_226', 'CB_PERF_SEL_RESERVED_227', - 'CB_PERF_SEL_RESERVED_228', 'CB_PERF_SEL_RESERVED_229', - 'CB_PERF_SEL_RESERVED_23', 'CB_PERF_SEL_RESERVED_230', - 'CB_PERF_SEL_RESERVED_231', 'CB_PERF_SEL_RESERVED_232', - 'CB_PERF_SEL_RESERVED_233', 'CB_PERF_SEL_RESERVED_234', - 'CB_PERF_SEL_RESERVED_235', 'CB_PERF_SEL_RESERVED_236', - 'CB_PERF_SEL_RESERVED_237', 'CB_PERF_SEL_RESERVED_238', - 'CB_PERF_SEL_RESERVED_239', 'CB_PERF_SEL_RESERVED_24', - 'CB_PERF_SEL_RESERVED_240', 'CB_PERF_SEL_RESERVED_241', - 'CB_PERF_SEL_RESERVED_242', 'CB_PERF_SEL_RESERVED_243', - 'CB_PERF_SEL_RESERVED_244', 'CB_PERF_SEL_RESERVED_245', - 'CB_PERF_SEL_RESERVED_246', 'CB_PERF_SEL_RESERVED_247', - 'CB_PERF_SEL_RESERVED_248', 'CB_PERF_SEL_RESERVED_249', - 'CB_PERF_SEL_RESERVED_25', 'CB_PERF_SEL_RESERVED_259', - 'CB_PERF_SEL_RESERVED_26', 'CB_PERF_SEL_RESERVED_260', - 'CB_PERF_SEL_RESERVED_261', 'CB_PERF_SEL_RESERVED_262', - 'CB_PERF_SEL_RESERVED_263', 'CB_PERF_SEL_RESERVED_264', - 'CB_PERF_SEL_RESERVED_265', 'CB_PERF_SEL_RESERVED_266', - 'CB_PERF_SEL_RESERVED_267', 'CB_PERF_SEL_RESERVED_268', - 'CB_PERF_SEL_RESERVED_269', 'CB_PERF_SEL_RESERVED_27', - 'CB_PERF_SEL_RESERVED_270', 'CB_PERF_SEL_RESERVED_271', - 'CB_PERF_SEL_RESERVED_272', 'CB_PERF_SEL_RESERVED_273', - 'CB_PERF_SEL_RESERVED_274', 'CB_PERF_SEL_RESERVED_275', - 'CB_PERF_SEL_RESERVED_276', 'CB_PERF_SEL_RESERVED_277', - 'CB_PERF_SEL_RESERVED_278', 'CB_PERF_SEL_RESERVED_279', - 'CB_PERF_SEL_RESERVED_28', 'CB_PERF_SEL_RESERVED_280', - 'CB_PERF_SEL_RESERVED_281', 'CB_PERF_SEL_RESERVED_282', - 'CB_PERF_SEL_RESERVED_283', 'CB_PERF_SEL_RESERVED_284', - 'CB_PERF_SEL_RESERVED_285', 'CB_PERF_SEL_RESERVED_286', - 'CB_PERF_SEL_RESERVED_287', 'CB_PERF_SEL_RESERVED_288', - 'CB_PERF_SEL_RESERVED_289', 'CB_PERF_SEL_RESERVED_29', - 'CB_PERF_SEL_RESERVED_290', 'CB_PERF_SEL_RESERVED_291', - 'CB_PERF_SEL_RESERVED_292', 'CB_PERF_SEL_RESERVED_293', - 'CB_PERF_SEL_RESERVED_294', 'CB_PERF_SEL_RESERVED_295', - 'CB_PERF_SEL_RESERVED_296', 'CB_PERF_SEL_RESERVED_297', - 'CB_PERF_SEL_RESERVED_298', 'CB_PERF_SEL_RESERVED_299', - 'CB_PERF_SEL_RESERVED_303', 'CB_PERF_SEL_RESERVED_304', - 'CB_PERF_SEL_RESERVED_305', 'CB_PERF_SEL_RESERVED_306', - 'CB_PERF_SEL_RESERVED_307', 'CB_PERF_SEL_RESERVED_308', - 'CB_PERF_SEL_RESERVED_309', 'CB_PERF_SEL_RESERVED_310', - 'CB_PERF_SEL_RESERVED_311', 'CB_PERF_SEL_RESERVED_312', - 'CB_PERF_SEL_RESERVED_313', 'CB_PERF_SEL_RESERVED_314', - 'CB_PERF_SEL_RESERVED_315', 'CB_PERF_SEL_RESERVED_316', - 'CB_PERF_SEL_RESERVED_317', 'CB_PERF_SEL_RESERVED_318', - 'CB_PERF_SEL_RESERVED_319', 'CB_PERF_SEL_RESERVED_320', - 'CB_PERF_SEL_RESERVED_321', 'CB_PERF_SEL_RESERVED_322', - 'CB_PERF_SEL_RESERVED_323', 'CB_PERF_SEL_RESERVED_324', - 'CB_PERF_SEL_RESERVED_325', 'CB_PERF_SEL_RESERVED_326', - 'CB_PERF_SEL_RESERVED_327', 'CB_PERF_SEL_RESERVED_328', - 'CB_PERF_SEL_RESERVED_329', 'CB_PERF_SEL_RESERVED_330', - 'CB_PERF_SEL_RESERVED_331', 'CB_PERF_SEL_RESERVED_332', - 'CB_PERF_SEL_RESERVED_333', 'CB_PERF_SEL_RESERVED_334', - 'CB_PERF_SEL_RESERVED_335', 'CB_PERF_SEL_RESERVED_336', - 'CB_PERF_SEL_RESERVED_337', 'CB_PERF_SEL_RESERVED_338', - 'CB_PERF_SEL_RESERVED_339', 'CB_PERF_SEL_RESERVED_340', - 'CB_PERF_SEL_RESERVED_341', 'CB_PERF_SEL_RESERVED_342', - 'CB_PERF_SEL_RESERVED_343', 'CB_PERF_SEL_RESERVED_344', - 'CB_PERF_SEL_RESERVED_345', 'CB_PERF_SEL_RESERVED_346', - 'CB_PERF_SEL_RESERVED_347', 'CB_PERF_SEL_RESERVED_348', - 'CB_PERF_SEL_RESERVED_349', 'CB_PERF_SEL_RESERVED_350', - 'CB_PERF_SEL_RESERVED_351', 'CB_PERF_SEL_RESERVED_352', - 'CB_PERF_SEL_RESERVED_353', 'CB_PERF_SEL_RESERVED_354', - 'CB_PERF_SEL_RESERVED_355', 'CB_PERF_SEL_RESERVED_356', - 'CB_PERF_SEL_RESERVED_357', 'CB_PERF_SEL_RESERVED_358', - 'CB_PERF_SEL_RESERVED_359', 'CB_PERF_SEL_RESERVED_360', - 'CB_PERF_SEL_RESERVED_361', 'CB_PERF_SEL_RESERVED_362', - 'CB_PERF_SEL_RESERVED_363', 'CB_PERF_SEL_RESERVED_364', - 'CB_PERF_SEL_RESERVED_365', 'CB_PERF_SEL_RESERVED_366', - 'CB_PERF_SEL_RESERVED_367', 'CB_PERF_SEL_RESERVED_368', - 'CB_PERF_SEL_RESERVED_369', 'CB_PERF_SEL_RESERVED_370', - 'CB_PERF_SEL_RESERVED_371', 'CB_PERF_SEL_RESERVED_372', - 'CB_PERF_SEL_RESERVED_373', 'CB_PERF_SEL_RESERVED_374', - 'CB_PERF_SEL_RESERVED_375', 'CB_PERF_SEL_RESERVED_376', - 'CB_PERF_SEL_RESERVED_377', 'CB_PERF_SEL_RESERVED_378', - 'CB_PERF_SEL_RESERVED_379', 'CB_PERF_SEL_RESERVED_38', - 'CB_PERF_SEL_RESERVED_380', 'CB_PERF_SEL_RESERVED_381', - 'CB_PERF_SEL_RESERVED_382', 'CB_PERF_SEL_RESERVED_383', - 'CB_PERF_SEL_RESERVED_384', 'CB_PERF_SEL_RESERVED_385', - 'CB_PERF_SEL_RESERVED_386', 'CB_PERF_SEL_RESERVED_387', - 'CB_PERF_SEL_RESERVED_388', 'CB_PERF_SEL_RESERVED_389', - 'CB_PERF_SEL_RESERVED_39', 'CB_PERF_SEL_RESERVED_390', - 'CB_PERF_SEL_RESERVED_391', 'CB_PERF_SEL_RESERVED_392', - 'CB_PERF_SEL_RESERVED_393', 'CB_PERF_SEL_RESERVED_394', - 'CB_PERF_SEL_RESERVED_395', 'CB_PERF_SEL_RESERVED_396', - 'CB_PERF_SEL_RESERVED_397', 'CB_PERF_SEL_RESERVED_398', - 'CB_PERF_SEL_RESERVED_399', 'CB_PERF_SEL_RESERVED_40', - 'CB_PERF_SEL_RESERVED_400', 'CB_PERF_SEL_RESERVED_401', - 'CB_PERF_SEL_RESERVED_402', 'CB_PERF_SEL_RESERVED_403', - 'CB_PERF_SEL_RESERVED_404', 'CB_PERF_SEL_RESERVED_405', - 'CB_PERF_SEL_RESERVED_406', 'CB_PERF_SEL_RESERVED_407', - 'CB_PERF_SEL_RESERVED_408', 'CB_PERF_SEL_RESERVED_409', - 'CB_PERF_SEL_RESERVED_41', 'CB_PERF_SEL_RESERVED_410', - 'CB_PERF_SEL_RESERVED_411', 'CB_PERF_SEL_RESERVED_412', - 'CB_PERF_SEL_RESERVED_413', 'CB_PERF_SEL_RESERVED_414', - 'CB_PERF_SEL_RESERVED_415', 'CB_PERF_SEL_RESERVED_416', - 'CB_PERF_SEL_RESERVED_417', 'CB_PERF_SEL_RESERVED_418', - 'CB_PERF_SEL_RESERVED_419', 'CB_PERF_SEL_RESERVED_42', - 'CB_PERF_SEL_RESERVED_420', 'CB_PERF_SEL_RESERVED_421', - 'CB_PERF_SEL_RESERVED_422', 'CB_PERF_SEL_RESERVED_423', - 'CB_PERF_SEL_RESERVED_424', 'CB_PERF_SEL_RESERVED_425', - 'CB_PERF_SEL_RESERVED_426', 'CB_PERF_SEL_RESERVED_427', - 'CB_PERF_SEL_RESERVED_428', 'CB_PERF_SEL_RESERVED_429', - 'CB_PERF_SEL_RESERVED_43', 'CB_PERF_SEL_RESERVED_430', - 'CB_PERF_SEL_RESERVED_431', 'CB_PERF_SEL_RESERVED_432', - 'CB_PERF_SEL_RESERVED_433', 'CB_PERF_SEL_RESERVED_434', - 'CB_PERF_SEL_RESERVED_435', 'CB_PERF_SEL_RESERVED_436', - 'CB_PERF_SEL_RESERVED_437', 'CB_PERF_SEL_RESERVED_438', - 'CB_PERF_SEL_RESERVED_439', 'CB_PERF_SEL_RESERVED_44', - 'CB_PERF_SEL_RESERVED_440', 'CB_PERF_SEL_RESERVED_441', - 'CB_PERF_SEL_RESERVED_442', 'CB_PERF_SEL_RESERVED_443', - 'CB_PERF_SEL_RESERVED_444', 'CB_PERF_SEL_RESERVED_445', - 'CB_PERF_SEL_RESERVED_446', 'CB_PERF_SEL_RESERVED_447', - 'CB_PERF_SEL_RESERVED_448', 'CB_PERF_SEL_RESERVED_449', - 'CB_PERF_SEL_RESERVED_45', 'CB_PERF_SEL_RESERVED_450', - 'CB_PERF_SEL_RESERVED_451', 'CB_PERF_SEL_RESERVED_452', - 'CB_PERF_SEL_RESERVED_453', 'CB_PERF_SEL_RESERVED_454', - 'CB_PERF_SEL_RESERVED_455', 'CB_PERF_SEL_RESERVED_456', - 'CB_PERF_SEL_RESERVED_457', 'CB_PERF_SEL_RESERVED_458', - 'CB_PERF_SEL_RESERVED_459', 'CB_PERF_SEL_RESERVED_46', - 'CB_PERF_SEL_RESERVED_460', 'CB_PERF_SEL_RESERVED_461', - 'CB_PERF_SEL_RESERVED_462', 'CB_PERF_SEL_RESERVED_463', - 'CB_PERF_SEL_RESERVED_464', 'CB_PERF_SEL_RESERVED_465', - 'CB_PERF_SEL_RESERVED_47', 'CB_PERF_SEL_RESERVED_48', - 'CB_PERF_SEL_RESERVED_49', 'CB_PERF_SEL_RESERVED_65', - 'CB_PERF_SEL_RESERVED_66', 'CB_PERF_SEL_RESERVED_67', - 'CB_PERF_SEL_RESERVED_68', 'CB_PERF_SEL_RESERVED_69', - 'CB_PERF_SEL_RESERVED_70', 'CB_PERF_SEL_RESERVED_71', - 'CB_PERF_SEL_RESERVED_72', 'CB_PERF_SEL_RESERVED_73', - 'CB_PERF_SEL_RESERVED_74', 'CB_PERF_SEL_RESERVED_75', - 'CB_PERF_SEL_RESERVED_76', 'CB_PERF_SEL_RESERVED_77', - 'CB_PERF_SEL_RESERVED_78', 'CB_PERF_SEL_RESERVED_79', - 'CB_PERF_SEL_RESERVED_80', 'CB_PERF_SEL_RESERVED_81', - 'CB_PERF_SEL_RESERVED_82', 'CB_PERF_SEL_RESERVED_83', - 'CB_PERF_SEL_RESERVED_84', 'CB_PERF_SEL_RESERVED_85', - 'CB_PERF_SEL_RESERVED_86', 'CB_PERF_SEL_RESERVED_87', - 'CB_PERF_SEL_RESERVED_88', 'CB_PERF_SEL_RESERVED_89', - 'CB_PERF_SEL_RESERVED_90', 'CB_PERF_SEL_RESERVED_91', - 'CB_PERF_SEL_RESERVED_92', 'CB_PERF_SEL_RESERVED_93', - 'CB_PERF_SEL_RESERVED_94', 'CB_PERF_SEL_RESERVED_95', - 'CB_PERF_SEL_RESERVED_96', 'CB_PERF_SEL_RESERVED_97', - 'CB_PERF_SEL_RESERVED_98', 'CB_PERF_SEL_RESERVED_99', - 'CB_PERF_SEL_STATIC_CLOCK_EN', 'CB_RESERVED', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_0', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_1', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_2', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_3', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_4', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_5', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_6', - 'CC_RCU_DC_AUDIO_INPUT_PORT_CONNECTIVITY_INPUT_PORT_CONNECTIVITY_ALL', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_0', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_1', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_2', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_3', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_4', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_5', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_6', - 'CC_RCU_DC_AUDIO_PORT_CONNECTIVITY_PORT_CONNECTIVITY_ALL', - 'CENTERS_ONLY', 'CENTROIDS_AND_CENTERS', 'CENTROIDS_ONLY', - 'CE_PARTITION_BASE', 'CHA_PERF_SEL', 'CHA_PERF_SEL_ARB_REQUESTS', - 'CHA_PERF_SEL_BUSY', 'CHA_PERF_SEL_CYCLE', - 'CHA_PERF_SEL_IO_32B_WDS_CHC0', 'CHA_PERF_SEL_IO_32B_WDS_CHC1', - 'CHA_PERF_SEL_IO_32B_WDS_CHC2', 'CHA_PERF_SEL_IO_32B_WDS_CHC3', - 'CHA_PERF_SEL_IO_32B_WDS_CHC4', - 'CHA_PERF_SEL_IO_BURST_COUNT_CHC0', - 'CHA_PERF_SEL_IO_BURST_COUNT_CHC1', - 'CHA_PERF_SEL_IO_BURST_COUNT_CHC2', - 'CHA_PERF_SEL_IO_BURST_COUNT_CHC3', - 'CHA_PERF_SEL_IO_BURST_COUNT_CHC4', - 'CHA_PERF_SEL_MEM_32B_WDS_CHC0', 'CHA_PERF_SEL_MEM_32B_WDS_CHC1', - 'CHA_PERF_SEL_MEM_32B_WDS_CHC2', 'CHA_PERF_SEL_MEM_32B_WDS_CHC3', - 'CHA_PERF_SEL_MEM_32B_WDS_CHC4', - 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC0', - 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC1', - 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC2', - 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC3', - 'CHA_PERF_SEL_MEM_BURST_COUNT_CHC4', 'CHA_PERF_SEL_REQUEST_CHC0', - 'CHA_PERF_SEL_REQUEST_CHC1', 'CHA_PERF_SEL_REQUEST_CHC2', - 'CHA_PERF_SEL_REQUEST_CHC3', 'CHA_PERF_SEL_REQUEST_CHC4', - 'CHA_PERF_SEL_REQ_INFLIGHT_LEVEL', 'CHA_PERF_SEL_STALL_CHC0', - 'CHA_PERF_SEL_STALL_CHC1', 'CHA_PERF_SEL_STALL_CHC2', - 'CHA_PERF_SEL_STALL_CHC3', 'CHA_PERF_SEL_STALL_CHC4', - 'CHA_PERF_SEL_STALL_CHC5', 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC0', - 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC1', - 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC2', - 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC3', - 'CHA_PERF_SEL_STALL_RET_CONFLICT_CHC4', 'CHCG_PERF_SEL', - 'CHCG_PERF_SEL_ARB_RET_LEVEL', 'CHCG_PERF_SEL_BUSY', - 'CHCG_PERF_SEL_CYCLE', 'CHCG_PERF_SEL_GL2_REQ_READ_LATENCY', - 'CHCG_PERF_SEL_GL2_REQ_WRITE_LATENCY', 'CHCG_PERF_SEL_REQ', - 'CHCG_PERF_SEL_REQ_ATOMIC_WITHOUT_RET', - 'CHCG_PERF_SEL_REQ_ATOMIC_WITH_RET', 'CHCG_PERF_SEL_REQ_CLIENT0', - 'CHCG_PERF_SEL_REQ_CLIENT1', 'CHCG_PERF_SEL_REQ_CLIENT10', - 'CHCG_PERF_SEL_REQ_CLIENT11', 'CHCG_PERF_SEL_REQ_CLIENT12', - 'CHCG_PERF_SEL_REQ_CLIENT13', 'CHCG_PERF_SEL_REQ_CLIENT14', - 'CHCG_PERF_SEL_REQ_CLIENT15', 'CHCG_PERF_SEL_REQ_CLIENT16', - 'CHCG_PERF_SEL_REQ_CLIENT17', 'CHCG_PERF_SEL_REQ_CLIENT18', - 'CHCG_PERF_SEL_REQ_CLIENT19', 'CHCG_PERF_SEL_REQ_CLIENT2', - 'CHCG_PERF_SEL_REQ_CLIENT20', 'CHCG_PERF_SEL_REQ_CLIENT21', - 'CHCG_PERF_SEL_REQ_CLIENT22', 'CHCG_PERF_SEL_REQ_CLIENT23', - 'CHCG_PERF_SEL_REQ_CLIENT3', 'CHCG_PERF_SEL_REQ_CLIENT4', - 'CHCG_PERF_SEL_REQ_CLIENT5', 'CHCG_PERF_SEL_REQ_CLIENT6', - 'CHCG_PERF_SEL_REQ_CLIENT7', 'CHCG_PERF_SEL_REQ_CLIENT8', - 'CHCG_PERF_SEL_REQ_CLIENT9', 'CHCG_PERF_SEL_REQ_NOP_ACK', - 'CHCG_PERF_SEL_REQ_NOP_RTN0', 'CHCG_PERF_SEL_REQ_READ', - 'CHCG_PERF_SEL_REQ_READ_128B', 'CHCG_PERF_SEL_REQ_READ_32B', - 'CHCG_PERF_SEL_REQ_READ_64B', 'CHCG_PERF_SEL_REQ_WRITE', - 'CHCG_PERF_SEL_REQ_WRITE_32B', 'CHCG_PERF_SEL_REQ_WRITE_64B', - 'CHCG_PERF_SEL_STALL_BUFFER_FULL', 'CHCG_PERF_SEL_STALL_GUS_GL1', - 'CHCG_PERF_SEL_STARVE', 'CHC_PERF_SEL', - 'CHC_PERF_SEL_ARB_RET_LEVEL', 'CHC_PERF_SEL_BUSY', - 'CHC_PERF_SEL_CYCLE', 'CHC_PERF_SEL_GL2_REQ_READ_LATENCY', - 'CHC_PERF_SEL_GL2_REQ_WRITE_LATENCY', 'CHC_PERF_SEL_REQ', - 'CHC_PERF_SEL_REQ_ATOMIC_WITHOUT_RET', - 'CHC_PERF_SEL_REQ_ATOMIC_WITH_RET', 'CHC_PERF_SEL_REQ_CLIENT0', - 'CHC_PERF_SEL_REQ_CLIENT1', 'CHC_PERF_SEL_REQ_CLIENT10', - 'CHC_PERF_SEL_REQ_CLIENT11', 'CHC_PERF_SEL_REQ_CLIENT12', - 'CHC_PERF_SEL_REQ_CLIENT13', 'CHC_PERF_SEL_REQ_CLIENT14', - 'CHC_PERF_SEL_REQ_CLIENT15', 'CHC_PERF_SEL_REQ_CLIENT16', - 'CHC_PERF_SEL_REQ_CLIENT17', 'CHC_PERF_SEL_REQ_CLIENT18', - 'CHC_PERF_SEL_REQ_CLIENT19', 'CHC_PERF_SEL_REQ_CLIENT2', - 'CHC_PERF_SEL_REQ_CLIENT20', 'CHC_PERF_SEL_REQ_CLIENT21', - 'CHC_PERF_SEL_REQ_CLIENT22', 'CHC_PERF_SEL_REQ_CLIENT23', - 'CHC_PERF_SEL_REQ_CLIENT3', 'CHC_PERF_SEL_REQ_CLIENT4', - 'CHC_PERF_SEL_REQ_CLIENT5', 'CHC_PERF_SEL_REQ_CLIENT6', - 'CHC_PERF_SEL_REQ_CLIENT7', 'CHC_PERF_SEL_REQ_CLIENT8', - 'CHC_PERF_SEL_REQ_CLIENT9', 'CHC_PERF_SEL_REQ_NOP_ACK', - 'CHC_PERF_SEL_REQ_NOP_RTN0', 'CHC_PERF_SEL_REQ_READ', - 'CHC_PERF_SEL_REQ_READ_128B', 'CHC_PERF_SEL_REQ_READ_32B', - 'CHC_PERF_SEL_REQ_READ_64B', 'CHC_PERF_SEL_REQ_WRITE', - 'CHC_PERF_SEL_REQ_WRITE_32B', 'CHC_PERF_SEL_REQ_WRITE_64B', - 'CHC_PERF_SEL_STALL_BUFFER_FULL', 'CHC_PERF_SEL_STALL_GL2_GL1', - 'CHC_PERF_SEL_STARVE', 'CHUNK_SIZE', 'CHUNK_SIZE_16KB', - 'CHUNK_SIZE_1KB', 'CHUNK_SIZE_2KB', 'CHUNK_SIZE_32KB', - 'CHUNK_SIZE_4KB', 'CHUNK_SIZE_64KB', 'CHUNK_SIZE_8KB', - 'CLEAR_SMU_INTR', 'CLKGATE_BASE_MODE', 'CLKGATE_SM_MODE', - 'CLK_BASE', 'CLK_BASE__INST0_SEG0', 'CLK_BASE__INST0_SEG1', + 'ATHUB_BASE__INST6_SEG4', 'CE_PARTITION_BASE', 'CLK_BASE', + 'CLK_BASE__INST0_SEG0', 'CLK_BASE__INST0_SEG1', 'CLK_BASE__INST0_SEG2', 'CLK_BASE__INST0_SEG3', 'CLK_BASE__INST0_SEG4', 'CLK_BASE__INST1_SEG0', 'CLK_BASE__INST1_SEG1', 'CLK_BASE__INST1_SEG2', @@ -62792,806 +13858,7 @@ __all__ = \ 'CLK_BASE__INST5_SEG3', 'CLK_BASE__INST5_SEG4', 'CLK_BASE__INST6_SEG0', 'CLK_BASE__INST6_SEG1', 'CLK_BASE__INST6_SEG2', 'CLK_BASE__INST6_SEG3', - 'CLK_BASE__INST6_SEG4', 'CLOCK_BRANCH_SOFT_RESET', - 'CLOCK_BRANCH_SOFT_RESET_FORCE', 'CLOCK_BRANCH_SOFT_RESET_NOOP', - 'CLOCK_GATING_DISABLE', 'CLOCK_GATING_DISABLED', - 'CLOCK_GATING_DISABLED_IN_DCO', 'CLOCK_GATING_DISABLE_ENUM', - 'CLOCK_GATING_DISABLE_ENUM_DISABLED', - 'CLOCK_GATING_DISABLE_ENUM_ENABLED', 'CLOCK_GATING_EN', - 'CLOCK_GATING_ENABLE', 'CLOCK_GATING_ENABLED', - 'CLOCK_GATING_ENABLED_IN_DCO', 'CMASK_CLR00_F0', 'CMASK_CLR00_F1', - 'CMASK_CLR00_F2', 'CMASK_CLR00_FX', 'CMASK_CLR01_F0', - 'CMASK_CLR01_F1', 'CMASK_CLR01_F2', 'CMASK_CLR01_FX', - 'CMASK_CLR10_F0', 'CMASK_CLR10_F1', 'CMASK_CLR10_F2', - 'CMASK_CLR10_FX', 'CMASK_CLR11_F0', 'CMASK_CLR11_F1', - 'CMASK_CLR11_F2', 'CMASK_CLR11_FX', 'CMC_3DLUT_17CUBE', - 'CMC_3DLUT_30BIT', 'CMC_3DLUT_30BIT_ENUM', 'CMC_3DLUT_36BIT', - 'CMC_3DLUT_9CUBE', 'CMC_3DLUT_RAM_SEL', 'CMC_3DLUT_SIZE_ENUM', - 'CMC_LUT_2CFG_MEMORY_A', 'CMC_LUT_2CFG_MEMORY_B', - 'CMC_LUT_2CFG_NO_MEMORY', 'CMC_LUT_2_CONFIG_ENUM', - 'CMC_LUT_2_MODE_BYPASS', 'CMC_LUT_2_MODE_ENUM', - 'CMC_LUT_2_MODE_RAMA_LUT', 'CMC_LUT_2_MODE_RAMB_LUT', - 'CMC_LUT_NUM_SEG', 'CMC_LUT_RAM_SEL', 'CMC_RAM0_ACCESS', - 'CMC_RAM1_ACCESS', 'CMC_RAM2_ACCESS', 'CMC_RAM3_ACCESS', - 'CMC_RAMA_ACCESS', 'CMC_RAMB_ACCESS', 'CMC_SEGMENTS_1', - 'CMC_SEGMENTS_128', 'CMC_SEGMENTS_16', 'CMC_SEGMENTS_2', - 'CMC_SEGMENTS_32', 'CMC_SEGMENTS_4', 'CMC_SEGMENTS_64', - 'CMC_SEGMENTS_8', 'CMPTO', 'CM_BYPASS', 'CM_COEF_FORMAT_ENUM', - 'CM_DATA_SIGNED', 'CM_DISABLE', 'CM_EN', 'CM_ENABLE', - 'CM_GAMMA_LUT_MODE_ENUM', 'CM_GAMMA_LUT_PWL_DISABLE_ENUM', - 'CM_GAMMA_LUT_SEL_ENUM', 'CM_GAMUT_REMAP_MODE_ENUM', - 'CM_LUT_2_CONFIG_ENUM', 'CM_LUT_2_MODE_ENUM', - 'CM_LUT_4_CONFIG_ENUM', 'CM_LUT_4_MODE_ENUM', - 'CM_LUT_CONFIG_MODE', 'CM_LUT_NUM_SEG', 'CM_LUT_RAM_SEL', - 'CM_LUT_READ_COLOR_SEL', 'CM_LUT_READ_DBG', 'CM_NOT_PENDING', - 'CM_PENDING', 'CM_POST_CSC_MODE_ENUM', 'CM_WRITE_BASE_ONLY', - 'CM_YES_PENDING', 'CNVC_BYPASS', 'CNVC_BYPASS_DISABLE', - 'CNVC_BYPASS_EN', 'CNVC_COEF_FORMAT_ENUM', 'CNVC_DIS', 'CNVC_EN', - 'CNVC_ENABLE', 'CNVC_FIX_S2_13', 'CNVC_FIX_S3_12', - 'CNVC_NOT_PENDING', 'CNVC_PENDING', 'CNVC_ROUND', 'CNVC_TRUNCATE', - 'CNVC_YES_PENDING', 'COEF_POST_CSC', 'COEF_POST_CSC_B', - 'COEF_RAM_SELECT_BACK', 'COEF_RAM_SELECT_CURRENT', - 'COEF_RAM_SELECT_RD', 'COLOR_24BIT_1BIT_AND', - 'COLOR_24BIT_8BIT_ALPHA_PREMULT', - 'COLOR_24BIT_8BIT_ALPHA_UNPREMULT', 'COLOR_64BIT_FP_PREMULT', - 'COLOR_64BIT_FP_UNPREMULT', 'COLOR_KEYER_MODE', - 'COMB_DST_MINUS_SRC', 'COMB_DST_PLUS_SRC', 'COMB_MAX_DST_SRC', - 'COMB_MIN_DST_SRC', 'COMB_SRC_MINUS_DST', 'COMPAT_LEVEL', - 'CONFIG_SPACE1_END', 'CONFIG_SPACE1_START', 'CONFIG_SPACE2_END', - 'CONFIG_SPACE2_START', 'CONFIG_SPACE_END', 'CONFIG_SPACE_START', - 'CONTEXT_DONE', 'CONTEXT_SPACE_END', 'CONTEXT_SPACE_START', - 'CONTEXT_SUSPEND', 'CONTROLLER_RESET_AZ_CONTROLLER_IN_RESET', - 'CONTROLLER_RESET_AZ_CONTROLLER_NOT_IN_RESET', - 'CORB_READ_POINTER_RESET', - 'CORB_READ_POINTER_RESET_CORB_DMA_IS_NOT_RESET', - 'CORB_READ_POINTER_RESET_CORB_DMA_IS_RESET', 'COUNTER_RING_0', - 'COUNTER_RING_1', 'COUNTER_RING_SPLIT', 'CPC_LATENCY_STATS_SEL', - 'CPC_LATENCY_STATS_SEL_INVAL_LAST', - 'CPC_LATENCY_STATS_SEL_INVAL_MAX', - 'CPC_LATENCY_STATS_SEL_INVAL_MIN', - 'CPC_LATENCY_STATS_SEL_XACK_LAST', - 'CPC_LATENCY_STATS_SEL_XACK_MAX', - 'CPC_LATENCY_STATS_SEL_XACK_MIN', - 'CPC_LATENCY_STATS_SEL_XNACK_LAST', - 'CPC_LATENCY_STATS_SEL_XNACK_MAX', - 'CPC_LATENCY_STATS_SEL_XNACK_MIN', 'CPC_PERFCOUNT_SEL', - 'CPC_PERF_SEL_ALWAYS_COUNT', 'CPC_PERF_SEL_CPC_GCRIU_BUSY', - 'CPC_PERF_SEL_CPC_GCRIU_IDLE', 'CPC_PERF_SEL_CPC_GCRIU_STALL', - 'CPC_PERF_SEL_CPC_STAT_BUSY', 'CPC_PERF_SEL_CPC_STAT_IDLE', - 'CPC_PERF_SEL_CPC_STAT_STALL', 'CPC_PERF_SEL_CPC_TCIU_BUSY', - 'CPC_PERF_SEL_CPC_TCIU_IDLE', 'CPC_PERF_SEL_CPC_UTCL2IU_BUSY', - 'CPC_PERF_SEL_CPC_UTCL2IU_IDLE', 'CPC_PERF_SEL_CPC_UTCL2IU_STALL', - 'CPC_PERF_SEL_CPC_UTCL2IU_XACK', 'CPC_PERF_SEL_CPC_UTCL2IU_XNACK', - 'CPC_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 'CPC_PERF_SEL_ME1_BUSY_FOR_PACKET_DECODE', - 'CPC_PERF_SEL_ME1_DC0_SPI_BUSY', - 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ', - 'CPC_PERF_SEL_ME1_STALL_ON_DATA_FROM_ROQ_PERF', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_GUS_READ', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_GUS_WRITE', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READ', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_RCIU_READY_PERF', - 'CPC_PERF_SEL_ME1_STALL_WAIT_ON_TCIU_READ', - 'CPC_PERF_SEL_ME2_BUSY_FOR_PACKET_DECODE', - 'CPC_PERF_SEL_ME2_DC1_SPI_BUSY', - 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ', - 'CPC_PERF_SEL_ME2_STALL_ON_DATA_FROM_ROQ_PERF', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_GUS_READ', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_GUS_WRITE', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READ', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_RCIU_READY_PERF', - 'CPC_PERF_SEL_ME2_STALL_WAIT_ON_TCIU_READ', - 'CPC_PERF_SEL_MEC_INSTR_CACHE_HIT', - 'CPC_PERF_SEL_MEC_INSTR_CACHE_MISS', 'CPC_PERF_SEL_MES_THREAD0', - 'CPC_PERF_SEL_MES_THREAD1', - 'CPC_PERF_SEL_RCIU_STALL_PRIV_VIOLATION', - 'CPC_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', - 'CPC_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 'CPC_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 'CPC_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', 'CPC_TAG_RAM', - 'CPF_LATENCY_STATS_SEL', 'CPF_LATENCY_STATS_SEL_INVAL_LAST', - 'CPF_LATENCY_STATS_SEL_INVAL_MAX', - 'CPF_LATENCY_STATS_SEL_INVAL_MIN', - 'CPF_LATENCY_STATS_SEL_READ_LAST', - 'CPF_LATENCY_STATS_SEL_READ_MAX', - 'CPF_LATENCY_STATS_SEL_READ_MIN', - 'CPF_LATENCY_STATS_SEL_XACK_LAST', - 'CPF_LATENCY_STATS_SEL_XACK_MAX', - 'CPF_LATENCY_STATS_SEL_XACK_MIN', - 'CPF_LATENCY_STATS_SEL_XNACK_LAST', - 'CPF_LATENCY_STATS_SEL_XNACK_MAX', - 'CPF_LATENCY_STATS_SEL_XNACK_MIN', 'CPF_PERFCOUNTWINDOW_SEL', - 'CPF_PERFCOUNT_SEL', 'CPF_PERFWINDOW_SEL_CSF', - 'CPF_PERFWINDOW_SEL_HQD1', 'CPF_PERFWINDOW_SEL_HQD2', - 'CPF_PERFWINDOW_SEL_RDMA', 'CPF_PERFWINDOW_SEL_RWPP', - 'CPF_PERF_SEL_ALWAYS_COUNT', - 'CPF_PERF_SEL_CMP_UTCL1_STALL_ON_TRANSLATION', - 'CPF_PERF_SEL_CPF_GCRIU_BUSY', 'CPF_PERF_SEL_CPF_GCRIU_IDLE', - 'CPF_PERF_SEL_CPF_GCRIU_STALL', 'CPF_PERF_SEL_CPF_STAT_BUSY', - 'CPF_PERF_SEL_CPF_STAT_IDLE', 'CPF_PERF_SEL_CPF_STAT_STALL', - 'CPF_PERF_SEL_CPF_TCIU_BUSY', 'CPF_PERF_SEL_CPF_TCIU_IDLE', - 'CPF_PERF_SEL_CPF_TCIU_STALL', 'CPF_PERF_SEL_CPF_UTCL2IU_BUSY', - 'CPF_PERF_SEL_CPF_UTCL2IU_IDLE', 'CPF_PERF_SEL_CPF_UTCL2IU_STALL', - 'CPF_PERF_SEL_CPF_UTCL2IU_XACK', 'CPF_PERF_SEL_CPF_UTCL2IU_XNACK', - 'CPF_PERF_SEL_CP_SDMA_MNGR_DMA_DONE', - 'CPF_PERF_SEL_CP_SDMA_MNGR_DMA_REQ', - 'CPF_PERF_SEL_CP_SDMA_MNGR_LATENCY', - 'CPF_PERF_SEL_CP_SDMA_MNGR_SDMABUSY', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_DB', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB1', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_IB2', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_RING', - 'CPF_PERF_SEL_CSF_BUSY_FOR_FETCHING_STATE', - 'CPF_PERF_SEL_CSF_FETCHING_CMD_BUFFERS', - 'CPF_PERF_SEL_CSF_STATE_FIFO_NOT_RTR', - 'CPF_PERF_SEL_DYNAMIC_CLOCK_VALID', - 'CPF_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 'CPF_PERF_SEL_GFX_UTCL1_STALL_ON_TRANSLATION', - 'CPF_PERF_SEL_GRBM_DWORDS_SENT', - 'CPF_PERF_SEL_GUS_READ_REQUEST_SENT', - 'CPF_PERF_SEL_GUS_WRITE_REQUEST_SENT', - 'CPF_PERF_SEL_RCIU_STALL_WAIT_ON_FREE', - 'CPF_PERF_SEL_REGISTER_CLOCK_VALID', - 'CPF_PERF_SEL_TCIU_READ_REQUEST_SENT', - 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_FREE', - 'CPF_PERF_SEL_TCIU_STALLED_WAITING_ON_TAGS', - 'CPF_PERF_SEL_TCIU_WRITE_REQUEST_SENT', - 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 'CPF_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', - 'CPF_SCRATCH_REG_ATOMIC_ADD', 'CPF_SCRATCH_REG_ATOMIC_AND', - 'CPF_SCRATCH_REG_ATOMIC_CMPSWAP', 'CPF_SCRATCH_REG_ATOMIC_MAX', - 'CPF_SCRATCH_REG_ATOMIC_MIN', 'CPF_SCRATCH_REG_ATOMIC_NOT', - 'CPF_SCRATCH_REG_ATOMIC_OP', 'CPF_SCRATCH_REG_ATOMIC_OR', - 'CPF_SCRATCH_REG_ATOMIC_SUB', 'CPF_TAG_RAM', - 'CPG_LATENCY_STATS_SEL', 'CPG_LATENCY_STATS_SEL_ATOMIC_LAST', - 'CPG_LATENCY_STATS_SEL_ATOMIC_MAX', - 'CPG_LATENCY_STATS_SEL_ATOMIC_MIN', - 'CPG_LATENCY_STATS_SEL_INVAL_LAST', - 'CPG_LATENCY_STATS_SEL_INVAL_MAX', - 'CPG_LATENCY_STATS_SEL_INVAL_MIN', - 'CPG_LATENCY_STATS_SEL_READ_LAST', - 'CPG_LATENCY_STATS_SEL_READ_MAX', - 'CPG_LATENCY_STATS_SEL_READ_MIN', - 'CPG_LATENCY_STATS_SEL_WRITE_LAST', - 'CPG_LATENCY_STATS_SEL_WRITE_MAX', - 'CPG_LATENCY_STATS_SEL_WRITE_MIN', - 'CPG_LATENCY_STATS_SEL_XACK_LAST', - 'CPG_LATENCY_STATS_SEL_XACK_MAX', - 'CPG_LATENCY_STATS_SEL_XACK_MIN', - 'CPG_LATENCY_STATS_SEL_XNACK_LAST', - 'CPG_LATENCY_STATS_SEL_XNACK_MAX', - 'CPG_LATENCY_STATS_SEL_XNACK_MIN', 'CPG_PERFCOUNTWINDOW_SEL', - 'CPG_PERFCOUNT_SEL', 'CPG_PERFWINDOW_SEL_APPEND', - 'CPG_PERFWINDOW_SEL_CE', 'CPG_PERFWINDOW_SEL_CEDMA', - 'CPG_PERFWINDOW_SEL_CPC_IC', 'CPG_PERFWINDOW_SEL_CPG_IC', - 'CPG_PERFWINDOW_SEL_DDID', 'CPG_PERFWINDOW_SEL_DFY', - 'CPG_PERFWINDOW_SEL_DMA', 'CPG_PERFWINDOW_SEL_ME', - 'CPG_PERFWINDOW_SEL_MEC1', 'CPG_PERFWINDOW_SEL_MEC2', - 'CPG_PERFWINDOW_SEL_MEMRD', 'CPG_PERFWINDOW_SEL_MEMWR', - 'CPG_PERFWINDOW_SEL_MES', 'CPG_PERFWINDOW_SEL_PFP', - 'CPG_PERFWINDOW_SEL_PQ1', 'CPG_PERFWINDOW_SEL_PQ2', - 'CPG_PERFWINDOW_SEL_PQ3', 'CPG_PERFWINDOW_SEL_PRT_HDR_RPTR', - 'CPG_PERFWINDOW_SEL_PRT_SMP_RPTR', 'CPG_PERFWINDOW_SEL_QURD', - 'CPG_PERFWINDOW_SEL_QU_EOP', 'CPG_PERFWINDOW_SEL_QU_PIPE', - 'CPG_PERFWINDOW_SEL_QU_STRM', 'CPG_PERFWINDOW_SEL_RB', - 'CPG_PERFWINDOW_SEL_RESERVED1', 'CPG_PERFWINDOW_SEL_RESERVED2', - 'CPG_PERFWINDOW_SEL_SHADOW', 'CPG_PERFWINDOW_SEL_SR', - 'CPG_PERFWINDOW_SEL_VGT0', 'CPG_PERFWINDOW_SEL_VGT1', - 'CPG_PERF_SEL_ALL_GFX_PIPES_BUSY', 'CPG_PERF_SEL_ALWAYS_COUNT', - 'CPG_PERF_SEL_CE_INSTR_CACHE_HIT', - 'CPG_PERF_SEL_CE_INSTR_CACHE_MISS', - 'CPG_PERF_SEL_CE_STALL_ON_CE_BUFFER_FLAG', - 'CPG_PERF_SEL_CE_STALL_ON_DATA_FROM_ROQ', - 'CPG_PERF_SEL_CE_STALL_ON_DE_COUNTER', - 'CPG_PERF_SEL_CE_STALL_ON_INC_FIFO', - 'CPG_PERF_SEL_CE_STALL_ON_WR_RAM_FIFO', - 'CPG_PERF_SEL_CE_STALL_RAM_DUMP', - 'CPG_PERF_SEL_CE_STALL_RAM_WRITE', - 'CPG_PERF_SEL_COUNT_TYPE0_PACKETS', - 'CPG_PERF_SEL_COUNT_TYPE3_PACKETS', 'CPG_PERF_SEL_CPG_GCRIU_BUSY', - 'CPG_PERF_SEL_CPG_GCRIU_IDLE', 'CPG_PERF_SEL_CPG_GCRIU_STALL', - 'CPG_PERF_SEL_CPG_STAT_BUSY', 'CPG_PERF_SEL_CPG_STAT_IDLE', - 'CPG_PERF_SEL_CPG_STAT_STALL', 'CPG_PERF_SEL_CPG_TCIU_BUSY', - 'CPG_PERF_SEL_CPG_TCIU_IDLE', 'CPG_PERF_SEL_CPG_TCIU_STALL', - 'CPG_PERF_SEL_CPG_UTCL2IU_BUSY', 'CPG_PERF_SEL_CPG_UTCL2IU_IDLE', - 'CPG_PERF_SEL_CPG_UTCL2IU_STALL', 'CPG_PERF_SEL_CPG_UTCL2IU_XACK', - 'CPG_PERF_SEL_CPG_UTCL2IU_XNACK', - 'CPG_PERF_SEL_CP_GDS_GRBM_OUT_OF_CREDITS', - 'CPG_PERF_SEL_CP_GRBM_DWORDS_SENT', - 'CPG_PERF_SEL_CP_GRBM_OUT_OF_CREDITS', - 'CPG_PERF_SEL_CP_PFP_GRBM_OUT_OF_CREDITS', - 'CPG_PERF_SEL_DMA_BUSY', - 'CPG_PERF_SEL_DMA_FETCHER_STALLED_ON_ROQ_FULL', - 'CPG_PERF_SEL_DMA_STALLED', 'CPG_PERF_SEL_DMA_STARVED', - 'CPG_PERF_SEL_DYNAMIC_CLK_VALID', - 'CPG_PERF_SEL_GCRIU_STALL_WAIT_ON_FREE', - 'CPG_PERF_SEL_GUS_READ_REQUEST_SENT', - 'CPG_PERF_SEL_GUS_WRITE_REQUEST_SENT', - 'CPG_PERF_SEL_LOAD_STALLED_ON_SET_COHERENCY', - 'CPG_PERF_SEL_ME_INSTR_CACHE_HIT', - 'CPG_PERF_SEL_ME_INSTR_CACHE_MISS', 'CPG_PERF_SEL_ME_PARSER_BUSY', - 'CPG_PERF_SEL_ME_PWS_STALLED0', 'CPG_PERF_SEL_ME_PWS_STALLED1', - 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_PFP', - 'CPG_PERF_SEL_ME_STALLED_FOR_DATA_FROM_STQ', - 'CPG_PERF_SEL_ME_STALLED_ON_NO_AVAIL_GFX_CNTX', - 'CPG_PERF_SEL_ME_STALLED_ON_PARTIAL_FLUSH', - 'CPG_PERF_SEL_ME_STALLED_WRITING_CONSTANTS', - 'CPG_PERF_SEL_ME_STALLED_WRITING_TO_RCIU', - 'CPG_PERF_SEL_ME_WAIT_ON_AVAIL_BUFFER', - 'CPG_PERF_SEL_ME_WAIT_ON_CE_COUNTER', - 'CPG_PERF_SEL_PFP_INSTR_CACHE_HIT', - 'CPG_PERF_SEL_PFP_INSTR_CACHE_MISS', - 'CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB1', - 'CPG_PERF_SEL_PFP_PACKET_FILTER_HIT_IB2', - 'CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB1', - 'CPG_PERF_SEL_PFP_PACKET_FILTER_MISS_IB2', - 'CPG_PERF_SEL_PFP_PWS_STALLED0', 'CPG_PERF_SEL_PFP_PWS_STALLED1', - 'CPG_PERF_SEL_PFP_STALLED_FOR_DATA_FROM_ROQ', - 'CPG_PERF_SEL_PFP_STALLED_ON_CSF_READY', - 'CPG_PERF_SEL_PFP_STALLED_ON_MEQ_DDID_READY', - 'CPG_PERF_SEL_PFP_STALLED_ON_MEQ_READY', - 'CPG_PERF_SEL_PFP_STALLED_ON_RCIU_READY', - 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_PULSE', - 'CPG_PERF_SEL_QU_STALLED_ON_EOP_DONE_WR_CONFIRM', - 'CPG_PERF_SEL_RBIU_FIFO_FULL', - 'CPG_PERF_SEL_RCIU_STALLED_ON_DMA_READ', - 'CPG_PERF_SEL_RCIU_STALLED_ON_ME_READ', - 'CPG_PERF_SEL_REGISTER_CLK_VALID', - 'CPG_PERF_SEL_SSU_STALLED_ON_ACTIVE_CNTX', - 'CPG_PERF_SEL_SSU_STALLED_ON_CLEAN_SIGNALS', - 'CPG_PERF_SEL_TCIU_READ_REQUEST_SENT', - 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_FREE', - 'CPG_PERF_SEL_TCIU_STALL_WAIT_ON_TAGS', - 'CPG_PERF_SEL_TCIU_WRITE_REQUEST_SENT', - 'CPG_PERF_SEL_UTCL1_STALL_ON_TRANSLATION', - 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_FREE', - 'CPG_PERF_SEL_UTCL2IU_STALL_WAIT_ON_TAGS', 'CPG_TAG_RAM', - 'CP_ALPHA_TAG_RAM_SEL', 'CP_DDID_CNTL_MODE', 'CP_DDID_CNTL_SIZE', - 'CP_DDID_CNTL_VMID_SEL', 'CP_ME_ID', 'CP_PACKET2', - 'CP_PERFMON_ENABLE_MODE', 'CP_PERFMON_ENABLE_MODE_ALWAYS_COUNT', - 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_FALSE', - 'CP_PERFMON_ENABLE_MODE_COUNT_CONTEXT_TRUE', - 'CP_PERFMON_ENABLE_MODE_RESERVED_1', 'CP_PERFMON_STATE', - 'CP_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', - 'CP_PERFMON_STATE_DISABLE_AND_RESET', - 'CP_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 'CP_PERFMON_STATE_RESERVED_3', 'CP_PERFMON_STATE_START_COUNTING', - 'CP_PERFMON_STATE_STOP_COUNTING', 'CP_PIPE_ID', 'CP_RING_ID', - 'CRC_CUR_0', 'CRC_CUR_1', 'CRC_CUR_SEL', 'CRC_INTERLACE_0', - 'CRC_INTERLACE_1', 'CRC_INTERLACE_2', 'CRC_INTERLACE_3', - 'CRC_INTERLACE_SEL', 'CRC_IN_CUR_0', 'CRC_IN_CUR_1', - 'CRC_IN_CUR_2', 'CRC_IN_CUR_3', 'CRC_IN_CUR_SEL', 'CRC_IN_PIX_0', - 'CRC_IN_PIX_1', 'CRC_IN_PIX_2', 'CRC_IN_PIX_3', 'CRC_IN_PIX_4', - 'CRC_IN_PIX_5', 'CRC_IN_PIX_6', 'CRC_IN_PIX_7', 'CRC_IN_PIX_SEL', - 'CRC_SRC_0', 'CRC_SRC_1', 'CRC_SRC_2', 'CRC_SRC_3', 'CRC_SRC_SEL', - 'CRC_STEREO_0', 'CRC_STEREO_1', 'CRC_STEREO_2', 'CRC_STEREO_3', - 'CRC_STEREO_SEL', 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_1', - 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_2', - 'CROB_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 'CROB_MEM_PWR_LIGHT_SLEEP_MODE', 'CROSSBAR_FOR_ALPHA', - 'CROSSBAR_FOR_CB_B', 'CROSSBAR_FOR_CR_R', 'CROSSBAR_FOR_Y_G', - 'CRS', 'CR_R_DATA_ONTO_ALPHA_PORT', 'CR_R_DATA_ONTO_CB_B_PORT', - 'CR_R_DATA_ONTO_CR_R_PORT', 'CR_R_DATA_ONTO_Y_G_PORT', - 'CSCNTL_ADDR_WIDTH', 'CSCNTL_DATA_WIDTH', 'CSCNTL_TYPE', - 'CSCNTL_TYPE_EVENT', 'CSCNTL_TYPE_PRIVATE', 'CSCNTL_TYPE_STATE', - 'CSCNTL_TYPE_TG', 'CSCNTL_TYPE_WIDTH', 'CSDATA_ADDR_WIDTH', - 'CSDATA_DATA_WIDTH', 'CSDATA_TYPE', 'CSDATA_TYPE_EVENT', - 'CSDATA_TYPE_PRIVATE', 'CSDATA_TYPE_STATE', 'CSDATA_TYPE_TG', - 'CSDATA_TYPE_WIDTH', 'CS_CONTEXT_DONE', 'CS_DONE', 'CS_NA', - 'CS_PARTIAL_FLUSH', 'CS_STAGE_ON', 'CURSOR_2X_MAGNIFY', - 'CURSOR_2X_MAGNIFY_IS_DISABLE', 'CURSOR_2X_MAGNIFY_IS_ENABLE', - 'CURSOR_COLOR_24BIT_1BIT_AND', - 'CURSOR_COLOR_24BIT_8BIT_ALPHA_PREMULT', - 'CURSOR_COLOR_24BIT_8BIT_ALPHA_UNPREMULT', - 'CURSOR_COLOR_64BIT_FP_PREMULT', - 'CURSOR_COLOR_64BIT_FP_UNPREMULT', 'CURSOR_ENABLE', - 'CURSOR_IN_GUEST_PHYSICAL_ADDRESS', - 'CURSOR_IN_SYSTEM_PHYSICAL_ADDRESS', 'CURSOR_IS_DISABLE', - 'CURSOR_IS_ENABLE', 'CURSOR_IS_NOT_SNOOP', 'CURSOR_IS_SNOOP', - 'CURSOR_LINES_PER_CHUNK', 'CURSOR_LINE_PER_CHUNK_1', - 'CURSOR_LINE_PER_CHUNK_16', 'CURSOR_LINE_PER_CHUNK_2', - 'CURSOR_LINE_PER_CHUNK_4', 'CURSOR_LINE_PER_CHUNK_8', - 'CURSOR_MODE', 'CURSOR_MONO_2BIT', - 'CURSOR_PERFMON_LATENCY_MEASURE_CROB_LATENCY', - 'CURSOR_PERFMON_LATENCY_MEASURE_EN', - 'CURSOR_PERFMON_LATENCY_MEASURE_IS_DISABLED', - 'CURSOR_PERFMON_LATENCY_MEASURE_IS_ENABLED', - 'CURSOR_PERFMON_LATENCY_MEASURE_MC_LATENCY', - 'CURSOR_PERFMON_LATENCY_MEASURE_SEL', 'CURSOR_PITCH', - 'CURSOR_PITCH_128_PIXELS', 'CURSOR_PITCH_256_PIXELS', - 'CURSOR_PITCH_64_PIXELS', 'CURSOR_REQUEST_EARLY', - 'CURSOR_REQUEST_NORMALLY', 'CURSOR_REQ_MODE', 'CURSOR_SNOOP', - 'CURSOR_STEREO_EN', 'CURSOR_STEREO_IS_DISABLED', - 'CURSOR_STEREO_IS_ENABLED', 'CURSOR_SURFACE_IS_NOT_TMZ', - 'CURSOR_SURFACE_IS_TMZ', 'CURSOR_SURFACE_TMZ', 'CURSOR_SYSTEM', - 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS', - 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_0', - 'CURSOR_XY_POSITION_ROTATION_AND_MIRRORING_BYPASS_1', - 'CUR_CLAMP_DIS', 'CUR_CLAMP_EN', 'CUR_DIS', - 'CUR_DYNAMIC_EXPANSION', 'CUR_EN', 'CUR_ENABLE', - 'CUR_EXPAND_MODE', 'CUR_FP_NO_ROM', 'CUR_FP_USE_ROM', - 'CUR_INV_CLAMP', 'CUR_MODE', 'CUR_NOT_PENDING', 'CUR_PENDING', - 'CUR_ROM_EN', 'CUR_YES_PENDING', 'CUR_ZERO_EXPANSION', - 'CbYCrY10101010_422_PACKED', 'CbYCrY12121212_422_PACKED', - 'CbYCrY8888_422_PACKED', 'CmaskCode', 'CombFunc', 'CompareFrag', - 'ConservativeZExport', 'CovToShaderSel', 'CrYCbA1010102', - 'CrYCbA16161616_10LSB', 'CrYCbA16161616_10MSB', - 'CrYCbA16161616_12LSB', 'CrYCbA16161616_12MSB', 'CrYCbA8888', - 'CrYCbY10101010_422_PACKED', 'CrYCbY12121212_422_PACKED', - 'CrYCbY8888_422_PACKED', 'DAC_MUX_SELECT', 'DAC_MUX_SELECT_DACA', - 'DAC_MUX_SELECT_DACB', 'DB_BREAK_BATCH_EVENT', 'DB_CACHE_FLUSH', - 'DB_CACHE_FLUSH_AND_INV', 'DB_CACHE_FLUSH_AND_INV_EVENT', - 'DB_CACHE_FLUSH_AND_INV_TS_EVENT', 'DB_CACHE_FLUSH_TS', - 'DB_CONTEXT_DONE_EVENT', 'DB_CONTEXT_SUSPEND_EVENT', - 'DB_FLUSH_AND_INV_DB_DATA_TS', 'DB_FLUSH_AND_INV_DB_META', - 'DB_INVOKE_CHANGE_EVENT', 'DB_PERF_SEL_CB_DB_rdreq_prt_sends', - 'DB_PERF_SEL_CB_DB_rdreq_sends', - 'DB_PERF_SEL_CB_DB_wrreq_prt_sends', - 'DB_PERF_SEL_CB_DB_wrreq_sends', - 'DB_PERF_SEL_DB_CB_context_dones', 'DB_PERF_SEL_DB_CB_eop_dones', - 'DB_PERF_SEL_DB_CB_lquad_busy', - 'DB_PERF_SEL_DB_CB_lquad_double_format', - 'DB_PERF_SEL_DB_CB_lquad_export_quads', - 'DB_PERF_SEL_DB_CB_lquad_fast_format', - 'DB_PERF_SEL_DB_CB_lquad_fmt_16_16_float_8pix', - 'DB_PERF_SEL_DB_CB_lquad_fmt_16_16_signed_8pix', - 'DB_PERF_SEL_DB_CB_lquad_fmt_16_16_unsigned_8pix', - 'DB_PERF_SEL_DB_CB_lquad_fmt_32bpp_8pix', - 'DB_PERF_SEL_DB_CB_lquad_num_pixels_need_blending', - 'DB_PERF_SEL_DB_CB_lquad_quads', - 'DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_1x1', - 'DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_1x2', - 'DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_2x1', - 'DB_PERF_SEL_DB_CB_lquad_quads_vrs_rate_2x2', - 'DB_PERF_SEL_DB_CB_lquad_sends', - 'DB_PERF_SEL_DB_CB_lquad_slow_format', - 'DB_PERF_SEL_DB_CB_lquad_stalls', 'DB_PERF_SEL_DB_CB_rdret_ack', - 'DB_PERF_SEL_DB_CB_rdret_nack', 'DB_PERF_SEL_DB_CB_tile_busy', - 'DB_PERF_SEL_DB_CB_tile_is_event_BOTTOM_OF_PIPE_TS', - 'DB_PERF_SEL_DB_CB_tile_is_event_FLUSH_AND_INV_CB_PIXEL_DATA', - 'DB_PERF_SEL_DB_CB_tile_is_event_FLUSH_AND_INV_DB_DATA_TS', - 'DB_PERF_SEL_DB_CB_tile_sends', 'DB_PERF_SEL_DB_CB_tile_stalls', - 'DB_PERF_SEL_DB_CB_tile_waiting_for_perfcounter_stop_event', - 'DB_PERF_SEL_DB_CB_wrret_ack', 'DB_PERF_SEL_DB_CB_wrret_nack', - 'DB_PERF_SEL_DB_SC_c_tile_rate', 'DB_PERF_SEL_DB_SC_quad_busy', - 'DB_PERF_SEL_DB_SC_quad_double_quad', - 'DB_PERF_SEL_DB_SC_quad_lit_noz_quad', - 'DB_PERF_SEL_DB_SC_quad_lit_quad', - 'DB_PERF_SEL_DB_SC_quad_noz_tiles', - 'DB_PERF_SEL_DB_SC_quad_num_null_1x2_coarse_pixels', - 'DB_PERF_SEL_DB_SC_quad_num_null_2x1_coarse_pixels', - 'DB_PERF_SEL_DB_SC_quad_num_null_2x2_coarse_pixels', - 'DB_PERF_SEL_DB_SC_quad_quads_with_1_pixel', - 'DB_PERF_SEL_DB_SC_quad_quads_with_2_pixels', - 'DB_PERF_SEL_DB_SC_quad_quads_with_3_pixels', - 'DB_PERF_SEL_DB_SC_quad_quads_with_4_pixels', - 'DB_PERF_SEL_DB_SC_quad_sends', 'DB_PERF_SEL_DB_SC_quad_stalls', - 'DB_PERF_SEL_DB_SC_quad_tiles', 'DB_PERF_SEL_DB_SC_s_tile_rate', - 'DB_PERF_SEL_DB_SC_tile_busy', 'DB_PERF_SEL_DB_SC_tile_culled', - 'DB_PERF_SEL_DB_SC_tile_df_stalls', - 'DB_PERF_SEL_DB_SC_tile_fast_ops', - 'DB_PERF_SEL_DB_SC_tile_fast_stencil_ops', - 'DB_PERF_SEL_DB_SC_tile_fast_z_ops', - 'DB_PERF_SEL_DB_SC_tile_hier_kill', - 'DB_PERF_SEL_DB_SC_tile_no_ops', 'DB_PERF_SEL_DB_SC_tile_sends', - 'DB_PERF_SEL_DB_SC_tile_ssaa_kill', - 'DB_PERF_SEL_DB_SC_tile_stalls', - 'DB_PERF_SEL_DB_SC_tile_tile_rate', - 'DB_PERF_SEL_DB_SC_tile_tiles', 'DB_PERF_SEL_DB_SC_z_tile_rate', - 'DB_PERF_SEL_Depth_Tile_Cache_alloc_stall', - 'DB_PERF_SEL_Depth_Tile_Cache_busy', - 'DB_PERF_SEL_Depth_Tile_Cache_data_frees', - 'DB_PERF_SEL_Depth_Tile_Cache_detailed_noop', - 'DB_PERF_SEL_Depth_Tile_Cache_dtile_locked', - 'DB_PERF_SEL_Depth_Tile_Cache_event', - 'DB_PERF_SEL_Depth_Tile_Cache_flushes', - 'DB_PERF_SEL_Depth_Tile_Cache_hits', - 'DB_PERF_SEL_Depth_Tile_Cache_mem_return_starve', - 'DB_PERF_SEL_Depth_Tile_Cache_misses', - 'DB_PERF_SEL_Depth_Tile_Cache_noop_tile', - 'DB_PERF_SEL_Depth_Tile_Cache_sends', - 'DB_PERF_SEL_Depth_Tile_Cache_starves', - 'DB_PERF_SEL_Depth_Tile_Cache_tile_frees', - 'DB_PERF_SEL_MI_psd_req_wrack_counter_stall', - 'DB_PERF_SEL_MI_quad_req_wrack_counter_stall', - 'DB_PERF_SEL_MI_tile_req_wrack_counter_stall', - 'DB_PERF_SEL_MI_zpc_req_wrack_counter_stall', - 'DB_PERF_SEL_Op_Pipe_Busy', 'DB_PERF_SEL_Op_Pipe_MC_Read_stall', - 'DB_PERF_SEL_Op_Pipe_Postz_Busy', 'DB_PERF_SEL_Op_Pipe_Prez_Busy', - 'DB_PERF_SEL_PERF_fg_lob_fwdr_timeout_hits', - 'DB_PERF_SEL_Plane_Cache_flushes', - 'DB_PERF_SEL_Plane_Cache_frees', 'DB_PERF_SEL_Plane_Cache_hits', - 'DB_PERF_SEL_Plane_Cache_misses', - 'DB_PERF_SEL_Plane_Cache_starves', - 'DB_PERF_SEL_PostZ_Samples_failing_DB', - 'DB_PERF_SEL_PostZ_Samples_failing_S', - 'DB_PERF_SEL_PostZ_Samples_failing_Z', - 'DB_PERF_SEL_PostZ_Samples_passing_Z', - 'DB_PERF_SEL_PreZ_Samples_failing_DB', - 'DB_PERF_SEL_PreZ_Samples_failing_S', - 'DB_PERF_SEL_PreZ_Samples_failing_Z', - 'DB_PERF_SEL_PreZ_Samples_passing_Z', - 'DB_PERF_SEL_RMI_rd_s_32byte_req', - 'DB_PERF_SEL_RMI_rd_s_32byte_ret', - 'DB_PERF_SEL_RMI_rd_tile_32byte_req', - 'DB_PERF_SEL_RMI_rd_tile_32byte_ret', - 'DB_PERF_SEL_RMI_rd_z_32byte_req', - 'DB_PERF_SEL_RMI_rd_z_32byte_ret', - 'DB_PERF_SEL_RMI_wr_psdzpc_32byte_ack', - 'DB_PERF_SEL_RMI_wr_psdzpc_32byte_req', - 'DB_PERF_SEL_RMI_wr_s_32byte_ack', - 'DB_PERF_SEL_RMI_wr_s_32byte_req', - 'DB_PERF_SEL_RMI_wr_tile_32byte_ack', - 'DB_PERF_SEL_RMI_wr_tile_32byte_req', - 'DB_PERF_SEL_RMI_wr_z_32byte_ack', - 'DB_PERF_SEL_RMI_wr_z_32byte_req', 'DB_PERF_SEL_SC_DB_quad_busy', - 'DB_PERF_SEL_SC_DB_quad_killed_tiles', - 'DB_PERF_SEL_SC_DB_quad_pixels', 'DB_PERF_SEL_SC_DB_quad_quads', - 'DB_PERF_SEL_SC_DB_quad_quads_pipe0', - 'DB_PERF_SEL_SC_DB_quad_quads_pipe1', - 'DB_PERF_SEL_SC_DB_quad_sends', 'DB_PERF_SEL_SC_DB_quad_squads', - 'DB_PERF_SEL_SC_DB_quad_tiles', 'DB_PERF_SEL_SC_DB_tile_backface', - 'DB_PERF_SEL_SC_DB_tile_busy', 'DB_PERF_SEL_SC_DB_tile_covered', - 'DB_PERF_SEL_SC_DB_tile_events', 'DB_PERF_SEL_SC_DB_tile_sends', - 'DB_PERF_SEL_SC_DB_tile_stalls', 'DB_PERF_SEL_SC_DB_tile_tiles', - 'DB_PERF_SEL_SC_DB_tile_tiles_pipe0', - 'DB_PERF_SEL_SC_DB_tile_tiles_pipe1', - 'DB_PERF_SEL_SH_quads_outstanding_sum', - 'DB_PERF_SEL_SX_DB_quad_all_pixels_enabled', - 'DB_PERF_SEL_SX_DB_quad_all_pixels_killed', - 'DB_PERF_SEL_SX_DB_quad_busy', - 'DB_PERF_SEL_SX_DB_quad_double_format', - 'DB_PERF_SEL_SX_DB_quad_export_quads', - 'DB_PERF_SEL_SX_DB_quad_exports', - 'DB_PERF_SEL_SX_DB_quad_fast_format', - 'DB_PERF_SEL_SX_DB_quad_need_blending_and_dst_read', - 'DB_PERF_SEL_SX_DB_quad_pixels', 'DB_PERF_SEL_SX_DB_quad_quads', - 'DB_PERF_SEL_SX_DB_quad_sends', - 'DB_PERF_SEL_SX_DB_quad_slow_format', - 'DB_PERF_SEL_SX_DB_quad_stalls', - 'DB_PERF_SEL_Stencil_Cache_flushes', - 'DB_PERF_SEL_Stencil_Cache_frees', - 'DB_PERF_SEL_Stencil_Cache_hits', - 'DB_PERF_SEL_Stencil_Cache_misses', - 'DB_PERF_SEL_Stencil_Cache_starves', - 'DB_PERF_SEL_Tile_Cache_flushes', 'DB_PERF_SEL_Tile_Cache_hits', - 'DB_PERF_SEL_Tile_Cache_mem_return_starve', - 'DB_PERF_SEL_Tile_Cache_misses', 'DB_PERF_SEL_Tile_Cache_starves', - 'DB_PERF_SEL_Tile_Cache_surface_stall', - 'DB_PERF_SEL_Z_Cache_frees', 'DB_PERF_SEL_Z_Cache_pmask_flushes', - 'DB_PERF_SEL_Z_Cache_pmask_hits', - 'DB_PERF_SEL_Z_Cache_pmask_misses', - 'DB_PERF_SEL_Z_Cache_pmask_starves', - 'DB_PERF_SEL_Z_Cache_separate_Z_flushes', - 'DB_PERF_SEL_Z_Cache_separate_Z_hits', - 'DB_PERF_SEL_Z_Cache_separate_Z_misses', - 'DB_PERF_SEL_Z_Cache_separate_Z_starves', - 'DB_PERF_SEL_clock_main_active', - 'DB_PERF_SEL_clock_mem_export_active', - 'DB_PERF_SEL_clock_reg_active', - 'DB_PERF_SEL_cs_events_pws_enable', - 'DB_PERF_SEL_depth_bounds_tile_culled', 'DB_PERF_SEL_di_dt_stall', - 'DB_PERF_SEL_dk_squad_busy', 'DB_PERF_SEL_dk_squad_sends', - 'DB_PERF_SEL_dk_squad_stalls', 'DB_PERF_SEL_dk_tile_busy', - 'DB_PERF_SEL_dk_tile_quad_starves', 'DB_PERF_SEL_dk_tile_sends', - 'DB_PERF_SEL_dk_tile_stalls', 'DB_PERF_SEL_dkg_tile_rate_tile', - 'DB_PERF_SEL_dtt_sm_clash_stall', 'DB_PERF_SEL_dtt_sm_miss_stall', - 'DB_PERF_SEL_dtt_sm_slot_stall', - 'DB_PERF_SEL_earlyZ_waiting_for_postZ_done', - 'DB_PERF_SEL_esr_eot_fwd_busy', 'DB_PERF_SEL_esr_eot_fwd_forward', - 'DB_PERF_SEL_esr_eot_fwd_holding_squad', - 'DB_PERF_SEL_esr_ps_lqf_busy', 'DB_PERF_SEL_esr_ps_lqf_stall', - 'DB_PERF_SEL_esr_ps_out_busy', 'DB_PERF_SEL_esr_ps_src_in_sends', - 'DB_PERF_SEL_esr_ps_src_in_squads', - 'DB_PERF_SEL_esr_ps_src_in_squads_unrolled', - 'DB_PERF_SEL_esr_ps_src_in_stall', - 'DB_PERF_SEL_esr_ps_src_in_tile_rate', - 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled', - 'DB_PERF_SEL_esr_ps_src_in_tile_rate_unrolled_to_pixel_rate', - 'DB_PERF_SEL_esr_ps_src_out_stall', 'DB_PERF_SEL_esr_ps_vic_busy', - 'DB_PERF_SEL_esr_ps_vic_stall', - 'DB_PERF_SEL_esr_ps_woc_1squadIn_2squadOut', - 'DB_PERF_SEL_esr_ps_woc_2squadIn_1squadOut', - 'DB_PERF_SEL_esr_psi_vic_tile_rate', - 'DB_PERF_SEL_esr_sqq_zi_busy', 'DB_PERF_SEL_esr_sqq_zi_stall', - 'DB_PERF_SEL_esr_vic_footprint_match_1x2', - 'DB_PERF_SEL_esr_vic_footprint_match_2x1', - 'DB_PERF_SEL_esr_vic_footprint_match_2x2', - 'DB_PERF_SEL_esr_vic_sqq_busy', 'DB_PERF_SEL_esr_vic_sqq_stall', - 'DB_PERF_SEL_etr_out_busy', 'DB_PERF_SEL_etr_out_cb_tile_stall', - 'DB_PERF_SEL_etr_out_esr_stall', - 'DB_PERF_SEL_etr_out_ltile_probe_fifo_full_stall', - 'DB_PERF_SEL_etr_out_send', 'DB_PERF_SEL_flush_10plane', - 'DB_PERF_SEL_flush_11plane', 'DB_PERF_SEL_flush_12plane', - 'DB_PERF_SEL_flush_13plane', 'DB_PERF_SEL_flush_14plane', - 'DB_PERF_SEL_flush_15plane', 'DB_PERF_SEL_flush_16plane', - 'DB_PERF_SEL_flush_1plane', 'DB_PERF_SEL_flush_2plane', - 'DB_PERF_SEL_flush_3plane', 'DB_PERF_SEL_flush_4plane', - 'DB_PERF_SEL_flush_5plane', 'DB_PERF_SEL_flush_6plane', - 'DB_PERF_SEL_flush_7plane', 'DB_PERF_SEL_flush_8plane', - 'DB_PERF_SEL_flush_9plane', 'DB_PERF_SEL_flush_compressed', - 'DB_PERF_SEL_flush_compressed_stencil', - 'DB_PERF_SEL_flush_expanded_stencil', - 'DB_PERF_SEL_flush_expanded_z', 'DB_PERF_SEL_flush_plane_le4', - 'DB_PERF_SEL_flush_single_stencil', - 'DB_PERF_SEL_hi_z_s_checker_force_coarse_vrs_1x1', - 'DB_PERF_SEL_hi_z_s_checker_force_ssaa_vrs_1x1', - 'DB_PERF_SEL_his_tile_culled', 'DB_PERF_SEL_hiz_tc_read_starved', - 'DB_PERF_SEL_hiz_tc_write_stall', 'DB_PERF_SEL_hiz_tile_culled', - 'DB_PERF_SEL_mi_quad_rd_outstanding_sum', - 'DB_PERF_SEL_mi_quad_wr_outstanding_sum', - 'DB_PERF_SEL_mi_rdreq_busy', 'DB_PERF_SEL_mi_rdreq_stall', - 'DB_PERF_SEL_mi_tile_rd_outstanding_sum', - 'DB_PERF_SEL_mi_tile_wr_outstanding_sum', - 'DB_PERF_SEL_mi_wrreq_busy', 'DB_PERF_SEL_mi_wrreq_stall', - 'DB_PERF_SEL_noz_waiting_for_postz_done', - 'DB_PERF_SEL_planes_flushed', - 'DB_PERF_SEL_postz_ps_invoked_pixel_cnt', - 'DB_PERF_SEL_postzl_full_launch', - 'DB_PERF_SEL_postzl_partial_launch', - 'DB_PERF_SEL_postzl_partial_waiting', - 'DB_PERF_SEL_postzl_se_busy', 'DB_PERF_SEL_postzl_se_stall', - 'DB_PERF_SEL_postzl_sq_pt_busy', 'DB_PERF_SEL_postzl_sq_pt_stall', - 'DB_PERF_SEL_postzl_src_in_sends', - 'DB_PERF_SEL_postzl_src_in_squads', - 'DB_PERF_SEL_postzl_src_in_squads_unrolled', - 'DB_PERF_SEL_postzl_src_in_stall', - 'DB_PERF_SEL_postzl_src_in_tile_rate', - 'DB_PERF_SEL_postzl_src_in_tile_rate_unrolled', - 'DB_PERF_SEL_postzl_src_out_stall', - 'DB_PERF_SEL_postzl_tile_init_stall', - 'DB_PERF_SEL_postzl_tile_mem_stall', - 'DB_PERF_SEL_prez_ps_invoked_pixel_cnt', - 'DB_PERF_SEL_prezl_src_in_sends', - 'DB_PERF_SEL_prezl_src_in_squads', - 'DB_PERF_SEL_prezl_src_in_squads_unrolled', - 'DB_PERF_SEL_prezl_src_in_stall', - 'DB_PERF_SEL_prezl_src_in_tile_rate', - 'DB_PERF_SEL_prezl_src_in_tile_rate_unrolled', - 'DB_PERF_SEL_prezl_src_out_stall', - 'DB_PERF_SEL_prezl_tile_init_stall', - 'DB_PERF_SEL_prezl_tile_mem_stall', - 'DB_PERF_SEL_ps_events_pws_enable', 'DB_PERF_SEL_qc_busy', - 'DB_PERF_SEL_qc_conflicts', 'DB_PERF_SEL_qc_full_stall', - 'DB_PERF_SEL_qc_in_postZ_tile_stalls_preZ', - 'DB_PERF_SEL_qc_in_preZ_tile_stalls_postZ', 'DB_PERF_SEL_qc_xfc', - 'DB_PERF_SEL_quad_rd_32byte_reqs', 'DB_PERF_SEL_quad_rd_busy', - 'DB_PERF_SEL_quad_rd_mi_stall', - 'DB_PERF_SEL_quad_rd_mi_stall_unc', 'DB_PERF_SEL_quad_rd_panic', - 'DB_PERF_SEL_quad_rd_rw_collision', 'DB_PERF_SEL_quad_rd_sends', - 'DB_PERF_SEL_quad_rd_sends_unc', 'DB_PERF_SEL_quad_rd_tag_stall', - 'DB_PERF_SEL_quad_rdret_busy', 'DB_PERF_SEL_quad_rdret_sends', - 'DB_PERF_SEL_quad_wr_acks', 'DB_PERF_SEL_quad_wr_busy', - 'DB_PERF_SEL_quad_wr_coherency_stall', - 'DB_PERF_SEL_quad_wr_mi_stall', 'DB_PERF_SEL_quad_wr_sends', - 'DB_PERF_SEL_reZ_waiting_for_postZ_done', - 'DB_PERF_SEL_recomp_tile_to_1zplane_no_fastop', - 'DB_PERF_SEL_sc_kick_end', 'DB_PERF_SEL_sc_kick_start', - 'DB_PERF_SEL_tcp_dispatcher_flushes', - 'DB_PERF_SEL_tcp_dispatcher_reads', - 'DB_PERF_SEL_tcp_prefetcher_flushes', - 'DB_PERF_SEL_tcp_prefetcher_reads', - 'DB_PERF_SEL_tcp_preloader_flushes', - 'DB_PERF_SEL_tcp_preloader_reads', 'DB_PERF_SEL_tile_rd_sends', - 'DB_PERF_SEL_tile_wr_acks', 'DB_PERF_SEL_tile_wr_sends', - 'DB_PERF_SEL_tiles_compressed_to_decompressed', - 'DB_PERF_SEL_tiles_decomp_on_expclear', - 'DB_PERF_SEL_tiles_s_clear_on_expclear', - 'DB_PERF_SEL_tiles_stencil_fully_summarized', - 'DB_PERF_SEL_tiles_z_clear_on_expclear', - 'DB_PERF_SEL_tiles_z_fully_summarized', 'DB_PERF_SEL_tl_busy', - 'DB_PERF_SEL_tl_dtc_read_starved', 'DB_PERF_SEL_tl_events', - 'DB_PERF_SEL_tl_expand_squads', - 'DB_PERF_SEL_tl_flush_expand_squads', - 'DB_PERF_SEL_tl_in_fast_z_stall', - 'DB_PERF_SEL_tl_in_single_stencil_expand_stall', - 'DB_PERF_SEL_tl_in_xfc', 'DB_PERF_SEL_tl_out_squads', - 'DB_PERF_SEL_tl_out_xfc', 'DB_PERF_SEL_tl_postZ_noop_squads', - 'DB_PERF_SEL_tl_postZ_squads', 'DB_PERF_SEL_tl_preZ_noop_squads', - 'DB_PERF_SEL_tl_preZ_squads', - 'DB_PERF_SEL_tl_stencil_locked_stall', - 'DB_PERF_SEL_tl_stencil_stall', 'DB_PERF_SEL_tl_summarize_squads', - 'DB_PERF_SEL_tl_tile_ops', 'DB_PERF_SEL_tl_z_decompress_stall', - 'DB_PERF_SEL_tl_z_fetch_stall', - 'DB_PERF_SEL_ts_events_pws_enable', - 'DB_PERF_SEL_ts_tc_update_stall', - 'DB_PERF_SEL_tsc_insert_summarize_stall', - 'DB_PERF_SEL_unmapped_z_tile_culled', - 'DB_PERF_SEL_zf_plane_multicycle', 'DB_VPORT_CHANGED_EVENT', - 'DCCG_AUDIO_DTO0_SOURCE_SEL', 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG0', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG1', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG2', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_OTG3', - 'DCCG_AUDIO_DTO0_SOURCE_SEL_RESERVED', - 'DCCG_AUDIO_DTO2_SOURCE_SEL', 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0', - 'DCCG_AUDIO_DTO2_SOURCE_SEL_AMCLK0_DIV2', 'DCCG_AUDIO_DTO_SEL', - 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO0', 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO1', - 'DCCG_AUDIO_DTO_SEL_AUDIO_DTO_DTBCLK', - 'DCCG_AUDIO_DTO_SEL_NO_AUDIO_DTO', - 'DCCG_AUDIO_DTO_USE_128FBR_FOR_DP', - 'DCCG_AUDIO_DTO_USE_512FBR_DTO', - 'DCCG_AUDIO_DTO_USE_512FBR_FOR_DP', 'DCCG_DBG_BLOCK_SEL', - 'DCCG_DBG_BLOCK_SEL_DCCG', 'DCCG_DBG_BLOCK_SEL_PMON', - 'DCCG_DBG_BLOCK_SEL_PMON2', 'DCCG_DBG_EN', 'DCCG_DBG_EN_DISABLE', - 'DCCG_DBG_EN_ENABLE', 'DCCG_DEEP_COLOR_CNTL', - 'DCCG_DEEP_COLOR_DTO_2_1_RATIO', 'DCCG_DEEP_COLOR_DTO_3_2_RATIO', - 'DCCG_DEEP_COLOR_DTO_5_4_RATIO', 'DCCG_DEEP_COLOR_DTO_DISABLE', - 'DCCG_FIFO_ERRDET_OVR_DISABLE', 'DCCG_FIFO_ERRDET_OVR_EN', - 'DCCG_FIFO_ERRDET_OVR_ENABLE', 'DCCG_FIFO_ERRDET_RESET', - 'DCCG_FIFO_ERRDET_RESET_FORCE', 'DCCG_FIFO_ERRDET_RESET_NOOP', - 'DCCG_FIFO_ERRDET_STATE', 'DCCG_FIFO_ERRDET_STATE_CALIBRATION', - 'DCCG_FIFO_ERRDET_STATE_DETECTION', 'DCCG_PERF_MODE_HSYNC', - 'DCCG_PERF_MODE_HSYNC_NOOP', 'DCCG_PERF_MODE_HSYNC_START', - 'DCCG_PERF_MODE_VSYNC', 'DCCG_PERF_MODE_VSYNC_NOOP', - 'DCCG_PERF_MODE_VSYNC_START', 'DCCG_PERF_OTG_SELECT', - 'DCCG_PERF_RUN', 'DCCG_PERF_RUN_NOOP', 'DCCG_PERF_RUN_START', - 'DCCG_PERF_SEL_OTG0', 'DCCG_PERF_SEL_OTG1', 'DCCG_PERF_SEL_OTG2', - 'DCCG_PERF_SEL_OTG3', 'DCCG_PERF_SEL_RESERVED', - 'DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_1', - 'DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_2', - 'DCHUBBUB_DET_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 'DCHUBBUB_DET_MEM_PWR_LIGHT_SLEEP_MODE', - 'DCHUBBUB_MEM_POWER_DIS_MODE_DISABLE', - 'DCHUBBUB_MEM_POWER_DIS_MODE_ENABLE', - 'DCHUBBUB_MEM_POWER_MODE_DEEP_SLEEP', - 'DCHUBBUB_MEM_POWER_MODE_LIGHT_SLEEP', - 'DCHUBBUB_MEM_POWER_MODE_OFF', - 'DCHUBBUB_MEM_POWER_MODE_SHUT_DOWN', 'DCHUBBUB_MEM_PWR_DIS_MODE', - 'DCHUBBUB_MEM_PWR_MODE', 'DCIOCHIP_AUX_ALL_PWR_OK', - 'DCIOCHIP_AUX_ALL_PWR_OK_0', 'DCIOCHIP_AUX_ALL_PWR_OK_1', - 'DCIOCHIP_AUX_CSEL0P9', 'DCIOCHIP_AUX_CSEL1P1', - 'DCIOCHIP_AUX_CSEL_DEC0P9', 'DCIOCHIP_AUX_CSEL_DEC1P0', - 'DCIOCHIP_AUX_CSEL_INC1P0', 'DCIOCHIP_AUX_CSEL_INC1P1', - 'DCIOCHIP_AUX_FALLSLEWSEL', 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH0', - 'DCIOCHIP_AUX_FALLSLEWSEL_HIGH1', 'DCIOCHIP_AUX_FALLSLEWSEL_LOW', - 'DCIOCHIP_AUX_FALLSLEWSEL_ULTRAHIGH', 'DCIOCHIP_AUX_HYS_TUNE', - 'DCIOCHIP_AUX_HYS_TUNE_0', 'DCIOCHIP_AUX_HYS_TUNE_1', - 'DCIOCHIP_AUX_HYS_TUNE_2', 'DCIOCHIP_AUX_HYS_TUNE_3', - 'DCIOCHIP_AUX_RECEIVER_SEL', 'DCIOCHIP_AUX_RECEIVER_SEL_0', - 'DCIOCHIP_AUX_RECEIVER_SEL_1', 'DCIOCHIP_AUX_RECEIVER_SEL_2', - 'DCIOCHIP_AUX_RECEIVER_SEL_3', 'DCIOCHIP_AUX_RSEL0P9', - 'DCIOCHIP_AUX_RSEL1P1', 'DCIOCHIP_AUX_RSEL_DEC0P9', - 'DCIOCHIP_AUX_RSEL_DEC1P0', 'DCIOCHIP_AUX_RSEL_INC1P0', - 'DCIOCHIP_AUX_RSEL_INC1P1', 'DCIOCHIP_AUX_SPIKESEL', - 'DCIOCHIP_AUX_SPIKESEL_10NS', 'DCIOCHIP_AUX_SPIKESEL_50NS', - 'DCIOCHIP_AUX_VOD_TUNE', 'DCIOCHIP_AUX_VOD_TUNE_0', - 'DCIOCHIP_AUX_VOD_TUNE_1', 'DCIOCHIP_AUX_VOD_TUNE_2', - 'DCIOCHIP_AUX_VOD_TUNE_3', 'DCIOCHIP_GPIO_MASK_EN', - 'DCIOCHIP_GPIO_MASK_EN_HARDWARE', - 'DCIOCHIP_GPIO_MASK_EN_SOFTWARE', 'DCIOCHIP_HPD_SEL', - 'DCIOCHIP_HPD_SEL_ASYNC', 'DCIOCHIP_HPD_SEL_CLOCKED', - 'DCIOCHIP_I2C_COMPSEL', 'DCIOCHIP_I2C_FALLSLEWSEL', - 'DCIOCHIP_I2C_FALLSLEWSEL_00', 'DCIOCHIP_I2C_FALLSLEWSEL_01', - 'DCIOCHIP_I2C_FALLSLEWSEL_10', 'DCIOCHIP_I2C_FALLSLEWSEL_11', - 'DCIOCHIP_I2C_RECEIVER_SEL', 'DCIOCHIP_I2C_RECEIVER_SEL_0', - 'DCIOCHIP_I2C_RECEIVER_SEL_1', 'DCIOCHIP_I2C_RECEIVER_SEL_2', - 'DCIOCHIP_I2C_RECEIVER_SEL_3', 'DCIOCHIP_I2C_REC_COMPARATOR', - 'DCIOCHIP_I2C_REC_SCHMIT', 'DCIOCHIP_I2C_VPH_1V2_EN', - 'DCIOCHIP_I2C_VPH_1V2_EN_0', 'DCIOCHIP_I2C_VPH_1V2_EN_1', - 'DCIOCHIP_INVERT', 'DCIOCHIP_MASK', 'DCIOCHIP_MASK_DISABLE', - 'DCIOCHIP_MASK_ENABLE', 'DCIOCHIP_PAD_MODE', - 'DCIOCHIP_PAD_MODE_DDC', 'DCIOCHIP_PAD_MODE_DP', 'DCIOCHIP_PD_EN', - 'DCIOCHIP_PD_EN_ALLOW', 'DCIOCHIP_PD_EN_NOTALLOW', - 'DCIOCHIP_POL_INVERT', 'DCIOCHIP_POL_NON_INVERT', - 'DCIOCHIP_REF_27_SRC_SEL', - 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_BYPASS', - 'DCIOCHIP_REF_27_SRC_SEL_DISP_CLKIN2_DIVIDER', - 'DCIOCHIP_REF_27_SRC_SEL_XTAL_BYPASS', - 'DCIOCHIP_REF_27_SRC_SEL_XTAL_DIVIDER', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER1', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER2', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER3', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER4', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER5', - 'DCIO_BL_PWM_GRP1_FRAME_START_DISP_SEL_CONTROLLER6', - 'DCIO_CLOCK_CNTL_DCIO_TEST_CLK_SEL', - 'DCIO_CLOCK_CNTL_DISPCLK_R_DCIO_GATE_DIS', - 'DCIO_DBG_ASYNC_4BIT_SEL', 'DCIO_DBG_ASYNC_4BIT_SEL_11TO8', - 'DCIO_DBG_ASYNC_4BIT_SEL_15TO12', - 'DCIO_DBG_ASYNC_4BIT_SEL_19TO16', - 'DCIO_DBG_ASYNC_4BIT_SEL_23TO20', - 'DCIO_DBG_ASYNC_4BIT_SEL_27TO24', - 'DCIO_DBG_ASYNC_4BIT_SEL_31TO28', 'DCIO_DBG_ASYNC_4BIT_SEL_3TO0', - 'DCIO_DBG_ASYNC_4BIT_SEL_7TO4', 'DCIO_DBG_ASYNC_BLOCK_SEL', - 'DCIO_DBG_ASYNC_BLOCK_SEL_DCCG', 'DCIO_DBG_ASYNC_BLOCK_SEL_DCIO', - 'DCIO_DBG_ASYNC_BLOCK_SEL_DIO', - 'DCIO_DBG_ASYNC_BLOCK_SEL_OVERRIDE', 'DCIO_DCRXPHY_SOFT_RESET', - 'DCIO_DCRXPHY_SOFT_RESET_ASSERT', - 'DCIO_DCRXPHY_SOFT_RESET_DEASSERT', 'DCIO_DC_GENERICA_SEL', - 'DCIO_DC_GENERICB_SEL', - 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_DIV2_SEL', - 'DCIO_DC_GENERIC_UNIPHY_FBDIV_CLK_SEL', - 'DCIO_DC_GENERIC_UNIPHY_FBDIV_SSC_CLK_SEL', - 'DCIO_DC_GENERIC_UNIPHY_REFDIV_CLK_SEL', - 'DCIO_DC_GPIO_DEBUG_DPRX_LOOPBACK_ENABLE', - 'DCIO_DC_GPU_TIMER_READ_SELECT', - 'DCIO_DC_GPU_TIMER_START_POSITION', - 'DCIO_DC_REF_CLK_CNTL_GENLK_CLK_OUTPUT_SEL', - 'DCIO_DC_REF_CLK_CNTL_HSYNCA_OUTPUT_SEL', - 'DCIO_DIO_EXT_VSYNC_MASK', 'DCIO_DIO_OTG_EXT_VSYNC_MUX', - 'DCIO_DISPCLK_R_DCIO_GATE_DISABLE', - 'DCIO_DISPCLK_R_DCIO_GATE_ENABLE', 'DCIO_DPCS_INTERRUPT_DISABLE', - 'DCIO_DPCS_INTERRUPT_ENABLE', 'DCIO_DPCS_INTERRUPT_MASK', - 'DCIO_DPCS_INTERRUPT_TYPE', - 'DCIO_DPCS_INTERRUPT_TYPE_LEVEL_BASED', - 'DCIO_DPCS_INTERRUPT_TYPE_PULSE_BASED', - 'DCIO_DPRX_LOOPBACK_ENABLE_LOOP', - 'DCIO_DPRX_LOOPBACK_ENABLE_NORMAL', 'DCIO_DSYNC_SOFT_RESET', - 'DCIO_DSYNC_SOFT_RESET_ASSERT', 'DCIO_DSYNC_SOFT_RESET_DEASSERT', - 'DCIO_EXT_VSYNC_MASK_NONE', 'DCIO_EXT_VSYNC_MASK_NONE_DUPLICATE', - 'DCIO_EXT_VSYNC_MASK_PIPE0', 'DCIO_EXT_VSYNC_MASK_PIPE1', - 'DCIO_EXT_VSYNC_MASK_PIPE2', 'DCIO_EXT_VSYNC_MASK_PIPE3', - 'DCIO_EXT_VSYNC_MASK_PIPE4', 'DCIO_EXT_VSYNC_MASK_PIPE5', - 'DCIO_EXT_VSYNC_MUX_GENERICB', 'DCIO_EXT_VSYNC_MUX_OTG0', - 'DCIO_EXT_VSYNC_MUX_OTG1', 'DCIO_EXT_VSYNC_MUX_OTG2', - 'DCIO_EXT_VSYNC_MUX_OTG3', 'DCIO_EXT_VSYNC_MUX_OTG4', - 'DCIO_EXT_VSYNC_MUX_OTG5', 'DCIO_EXT_VSYNC_MUX_SWAPLOCKB', - 'DCIO_GENERICA_SEL_GENERICA_DCCG', 'DCIO_GENERICA_SEL_STEREOSYNC', - 'DCIO_GENERICA_SEL_SYNCEN', 'DCIO_GENERICB_SEL_GENERICB_DCCG', - 'DCIO_GENERICB_SEL_STEREOSYNC', 'DCIO_GENERICB_SEL_SYNCEN', - 'DCIO_GENLK_CLK_GSL_MASK', 'DCIO_GENLK_CLK_GSL_MASK_NO', - 'DCIO_GENLK_CLK_GSL_MASK_STEREO', - 'DCIO_GENLK_CLK_GSL_MASK_TIMING', - 'DCIO_GENLK_CLK_OUTPUT_SEL_DISABLE', - 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL1', - 'DCIO_GENLK_CLK_OUTPUT_SEL_PPLL2', - 'DCIO_GENLK_CLK_OUTPUT_SEL_RESERVED_VALUE3', - 'DCIO_GENLK_VSYNC_GSL_MASK', 'DCIO_GENLK_VSYNC_GSL_MASK_NO', - 'DCIO_GENLK_VSYNC_GSL_MASK_STEREO', - 'DCIO_GENLK_VSYNC_GSL_MASK_TIMING', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_P_FLIP', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM', - 'DCIO_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE', - 'DCIO_GPU_TIMER_START_0_END_27', 'DCIO_GPU_TIMER_START_10_END_37', - 'DCIO_GPU_TIMER_START_1_END_28', 'DCIO_GPU_TIMER_START_2_END_29', - 'DCIO_GPU_TIMER_START_3_END_30', 'DCIO_GPU_TIMER_START_4_END_31', - 'DCIO_GPU_TIMER_START_6_END_33', 'DCIO_GPU_TIMER_START_8_END_35', - 'DCIO_GSL_SEL', 'DCIO_GSL_SEL_GROUP_0', 'DCIO_GSL_SEL_GROUP_1', - 'DCIO_GSL_SEL_GROUP_2', 'DCIO_HSYNCA_OUTPUT_SEL_DISABLE', - 'DCIO_HSYNCA_OUTPUT_SEL_PPLL1', 'DCIO_HSYNCA_OUTPUT_SEL_PPLL2', - 'DCIO_HSYNCA_OUTPUT_SEL_RESERVED', 'DCIO_PHY_HPO_ENC_SRC_SEL', - 'DCIO_SWAPLOCK_A_GSL_MASK', 'DCIO_SWAPLOCK_A_GSL_MASK_NO', - 'DCIO_SWAPLOCK_A_GSL_MASK_STEREO', - 'DCIO_SWAPLOCK_A_GSL_MASK_TIMING', 'DCIO_SWAPLOCK_B_GSL_MASK', - 'DCIO_SWAPLOCK_B_GSL_MASK_NO', 'DCIO_SWAPLOCK_B_GSL_MASK_STEREO', - 'DCIO_SWAPLOCK_B_GSL_MASK_TIMING', 'DCIO_TEST_CLK_SEL_DISPCLK', - 'DCIO_TEST_CLK_SEL_GATED_DISPCLK', 'DCIO_TEST_CLK_SEL_SOCCLK', - 'DCIO_UNIPHYA_FBDIV_CLK', 'DCIO_UNIPHYA_FBDIV_SSC_CLK', - 'DCIO_UNIPHYA_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYA_TEST_REFDIV_CLK', 'DCIO_UNIPHYB_FBDIV_CLK', - 'DCIO_UNIPHYB_FBDIV_SSC_CLK', 'DCIO_UNIPHYB_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYB_TEST_REFDIV_CLK', 'DCIO_UNIPHYC_FBDIV_CLK', - 'DCIO_UNIPHYC_FBDIV_SSC_CLK', 'DCIO_UNIPHYC_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYC_TEST_REFDIV_CLK', 'DCIO_UNIPHYD_FBDIV_CLK', - 'DCIO_UNIPHYD_FBDIV_SSC_CLK', 'DCIO_UNIPHYD_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYD_TEST_REFDIV_CLK', 'DCIO_UNIPHYE_FBDIV_CLK', - 'DCIO_UNIPHYE_FBDIV_SSC_CLK', 'DCIO_UNIPHYE_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYE_TEST_REFDIV_CLK', 'DCIO_UNIPHYF_FBDIV_CLK', - 'DCIO_UNIPHYF_FBDIV_SSC_CLK', 'DCIO_UNIPHYF_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYF_TEST_REFDIV_CLK', 'DCIO_UNIPHYG_FBDIV_CLK', - 'DCIO_UNIPHYG_FBDIV_SSC_CLK', 'DCIO_UNIPHYG_TEST_FBDIV_CLK_DIV2', - 'DCIO_UNIPHYG_TEST_REFDIV_CLK', 'DCIO_UNIPHY_CHANNEL_INVERTED', - 'DCIO_UNIPHY_CHANNEL_NO_INVERSION', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH0', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH1', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH2', - 'DCIO_UNIPHY_CHANNEL_XBAR_SOURCE_CH3', 'DCIO_UNIPHY_IMPCAL_SEL', - 'DCIO_UNIPHY_IMPCAL_SEL_BINARY', - 'DCIO_UNIPHY_IMPCAL_SEL_TEMPERATURE', - 'DCIO_UNIPHY_LINK_CNTL_CHANNEL_INVERT', - 'DCIO_UNIPHY_LINK_CNTL_ENABLE_HPD_MASK', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_DEBOUNCED', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_ALLOW_TOGGLE_FILTERED', - 'DCIO_UNIPHY_LINK_ENABLE_HPD_MASK_DISALLOW', 'DCN_BASE', + 'CLK_BASE__INST6_SEG4', 'CP_PACKET2', 'DCN_BASE', 'DCN_BASE__INST0_SEG0', 'DCN_BASE__INST0_SEG1', 'DCN_BASE__INST0_SEG2', 'DCN_BASE__INST0_SEG3', 'DCN_BASE__INST0_SEG4', 'DCN_BASE__INST1_SEG0', @@ -63609,125 +13876,24 @@ __all__ = \ 'DCN_BASE__INST5_SEG3', 'DCN_BASE__INST5_SEG4', 'DCN_BASE__INST6_SEG0', 'DCN_BASE__INST6_SEG1', 'DCN_BASE__INST6_SEG2', 'DCN_BASE__INST6_SEG3', - 'DCN_BASE__INST6_SEG4', 'DC_DMCUB_INT_TYPE', - 'DC_DMCUB_TIMER_WINDOW', 'DC_MEM_GLOBAL_PWR_REQ_DIS', - 'DC_MEM_GLOBAL_PWR_REQ_DISABLE', 'DC_MEM_GLOBAL_PWR_REQ_ENABLE', - 'DC_SMU_INTERRUPT_ENABLE', 'DDID_VMID_CNTL', 'DDID_VMID_PIPE', - 'DEBUG_BUS_SELECT_ABM0', 'DEBUG_BUS_SELECT_ABM1', - 'DEBUG_BUS_SELECT_ABM2', 'DEBUG_BUS_SELECT_ABM3', - 'DEBUG_BUS_SELECT_ABM_RESERVED0', - 'DEBUG_BUS_SELECT_ABM_RESERVED1', 'DEBUG_BUS_SELECT_DPG0', - 'DEBUG_BUS_SELECT_DPG1', 'DEBUG_BUS_SELECT_DPG2', - 'DEBUG_BUS_SELECT_DPG3', 'DEBUG_BUS_SELECT_DPG_RESERVED0', - 'DEBUG_BUS_SELECT_DPG_RESERVED1', 'DEBUG_BUS_SELECT_FMT0', - 'DEBUG_BUS_SELECT_FMT1', 'DEBUG_BUS_SELECT_FMT2', - 'DEBUG_BUS_SELECT_FMT3', 'DEBUG_BUS_SELECT_FMT_RESERVED0', - 'DEBUG_BUS_SELECT_FMT_RESERVED1', 'DEBUG_BUS_SELECT_OPPBUF0', - 'DEBUG_BUS_SELECT_OPPBUF1', 'DEBUG_BUS_SELECT_OPPBUF2', - 'DEBUG_BUS_SELECT_OPPBUF3', 'DEBUG_BUS_SELECT_OPPBUF_RESERVED0', - 'DEBUG_BUS_SELECT_OPPBUF_RESERVED1', 'DEBUG_BUS_SELECT_OPP_PIPE0', - 'DEBUG_BUS_SELECT_OPP_PIPE1', 'DEBUG_BUS_SELECT_OPP_PIPE2', - 'DEBUG_BUS_SELECT_OPP_PIPE3', - 'DEBUG_BUS_SELECT_OPP_PIPE_RESERVED0', - 'DEBUG_BUS_SELECT_OPP_PIPE_RESERVED1', 'DECERR', - 'DENORM_TRUNCATE', 'DETILE_BUFFER_PACKER_ENABLE', - 'DETILE_BUFFER_PACKER_IS_DISABLE', - 'DETILE_BUFFER_PACKER_IS_ENABLE', 'DFQ_MIN_FREE_ENTRIES', - 'DFQ_MIN_FREE_ENTRIES_0', 'DFQ_MIN_FREE_ENTRIES_1', - 'DFQ_MIN_FREE_ENTRIES_2', 'DFQ_MIN_FREE_ENTRIES_3', - 'DFQ_MIN_FREE_ENTRIES_4', 'DFQ_MIN_FREE_ENTRIES_5', - 'DFQ_MIN_FREE_ENTRIES_6', 'DFQ_MIN_FREE_ENTRIES_7', - 'DFQ_NUM_ENTRIES', 'DFQ_NUM_ENTRIES_0', 'DFQ_NUM_ENTRIES_1', - 'DFQ_NUM_ENTRIES_2', 'DFQ_NUM_ENTRIES_3', 'DFQ_NUM_ENTRIES_4', - 'DFQ_NUM_ENTRIES_5', 'DFQ_NUM_ENTRIES_6', 'DFQ_NUM_ENTRIES_7', - 'DFQ_NUM_ENTRIES_8', 'DFQ_SIZE', 'DFQ_SIZE_0', 'DFQ_SIZE_1', - 'DFQ_SIZE_2', 'DFQ_SIZE_3', 'DFQ_SIZE_4', 'DFQ_SIZE_5', - 'DFQ_SIZE_6', 'DFQ_SIZE_7', 'DFSMFlushEvents', 'DF_BASE', - 'DF_BASE__INST0_SEG0', 'DF_BASE__INST0_SEG1', - 'DF_BASE__INST0_SEG2', 'DF_BASE__INST0_SEG3', - 'DF_BASE__INST0_SEG4', 'DF_BASE__INST1_SEG0', - 'DF_BASE__INST1_SEG1', 'DF_BASE__INST1_SEG2', - 'DF_BASE__INST1_SEG3', 'DF_BASE__INST1_SEG4', - 'DF_BASE__INST2_SEG0', 'DF_BASE__INST2_SEG1', - 'DF_BASE__INST2_SEG2', 'DF_BASE__INST2_SEG3', - 'DF_BASE__INST2_SEG4', 'DF_BASE__INST3_SEG0', - 'DF_BASE__INST3_SEG1', 'DF_BASE__INST3_SEG2', - 'DF_BASE__INST3_SEG3', 'DF_BASE__INST3_SEG4', - 'DF_BASE__INST4_SEG0', 'DF_BASE__INST4_SEG1', - 'DF_BASE__INST4_SEG2', 'DF_BASE__INST4_SEG3', - 'DF_BASE__INST4_SEG4', 'DF_BASE__INST5_SEG0', - 'DF_BASE__INST5_SEG1', 'DF_BASE__INST5_SEG2', - 'DF_BASE__INST5_SEG3', 'DF_BASE__INST5_SEG4', - 'DF_BASE__INST6_SEG0', 'DF_BASE__INST6_SEG1', - 'DF_BASE__INST6_SEG2', 'DF_BASE__INST6_SEG3', - 'DF_BASE__INST6_SEG4', 'DIFFERENT_RGB', 'DIG_10BIT_TEST_PATTERN', - 'DIG_ALL_PIXEL', 'DIG_ALTERNATING_TEST_PATTERN', - 'DIG_BE_CNTL_HPD1', 'DIG_BE_CNTL_HPD2', 'DIG_BE_CNTL_HPD3', - 'DIG_BE_CNTL_HPD4', 'DIG_BE_CNTL_HPD5', 'DIG_BE_CNTL_HPD_SELECT', - 'DIG_BE_CNTL_MODE', 'DIG_BE_CNTL_NO_HPD', 'DIG_BE_DP_MST_MODE', - 'DIG_BE_DP_SST_MODE', 'DIG_BE_RESERVED1', 'DIG_BE_RESERVED2', - 'DIG_BE_RESERVED3', 'DIG_BE_RESERVED4', 'DIG_BE_TMDS_DVI_MODE', - 'DIG_BE_TMDS_HDMI_MODE', 'DIG_DIGITAL_BYPASS_ENABLE', - 'DIG_DIGITAL_BYPASS_OFF', 'DIG_DIGITAL_BYPASS_ON', - 'DIG_DIGITAL_BYPASS_SEL', 'DIG_DIGITAL_BYPASS_SEL_10BPP_LSB', - 'DIG_DIGITAL_BYPASS_SEL_12BPC_LSB', - 'DIG_DIGITAL_BYPASS_SEL_36BPP', - 'DIG_DIGITAL_BYPASS_SEL_48BPP_LSB', - 'DIG_DIGITAL_BYPASS_SEL_48BPP_MSB', - 'DIG_DIGITAL_BYPASS_SEL_ALPHA', 'DIG_DIGITAL_BYPASS_SEL_BYPASS', - 'DIG_EVEN_PIXEL_ONLY', 'DIG_FE_CNTL_SOURCE_SELECT', - 'DIG_FE_CNTL_STEREOSYNC_SELECT', 'DIG_FE_SOURCE_FROM_OTG0', - 'DIG_FE_SOURCE_FROM_OTG1', 'DIG_FE_SOURCE_FROM_OTG2', - 'DIG_FE_SOURCE_FROM_OTG3', 'DIG_FE_SOURCE_RESERVED', - 'DIG_FE_STEREOSYNC_FROM_OTG0', 'DIG_FE_STEREOSYNC_FROM_OTG1', - 'DIG_FE_STEREOSYNC_FROM_OTG2', 'DIG_FE_STEREOSYNC_FROM_OTG3', - 'DIG_FE_STEREOSYNC_RESERVED', 'DIG_FIFO_1_PIX_PER_CYCLE', - 'DIG_FIFO_2_PIX_PER_CYCLE', 'DIG_FIFO_CTRL_FORCE_RECOMP_MINMAX', - 'DIG_FIFO_CTRL_USE_OVERWRITE_LEVEL', - 'DIG_FIFO_FORCE_RECAL_AVERAGE', - 'DIG_FIFO_FORCE_RECAL_AVERAGE_LEVEL', - 'DIG_FIFO_FORCE_RECOMP_MINMAX', - 'DIG_FIFO_NOT_FORCE_RECAL_AVERAGE', - 'DIG_FIFO_NOT_FORCE_RECOMP_MINMAX', 'DIG_FIFO_NO_ERROR_OCCURRED', - 'DIG_FIFO_OUTPUT_PROCESSING_MODE', 'DIG_FIFO_OVERFLOW_OCCURRED', - 'DIG_FIFO_OVERFLOW_UNDERFLOW_ERROR', 'DIG_FIFO_READ_CLOCK_SRC', - 'DIG_FIFO_READ_CLOCK_SRC_FROM_DCCG', - 'DIG_FIFO_READ_CLOCK_SRC_FROM_DISPLAY_PIPE', - 'DIG_FIFO_UNDERFLOW_OCCURRED', 'DIG_FIFO_USE_CAL_AVERAGE_LEVEL', - 'DIG_FIFO_USE_OVERWRITE_LEVEL', 'DIG_INPUT_PIXEL_SEL', - 'DIG_IN_DEBUG_MODE', 'DIG_IN_NORMAL_OPERATION', - 'DIG_ODD_PIXEL_ONLY', 'DIG_OUTPUT_CRC_CNTL_LINK_SEL', - 'DIG_OUTPUT_CRC_DATA_SEL', 'DIG_OUTPUT_CRC_FOR_ACTIVEONLY', - 'DIG_OUTPUT_CRC_FOR_AUDIO', 'DIG_OUTPUT_CRC_FOR_FULLFRAME', - 'DIG_OUTPUT_CRC_FOR_VBI', 'DIG_OUTPUT_CRC_ON_LINK0', - 'DIG_OUTPUT_CRC_ON_LINK1', 'DIG_PAIR_PIXELS', - 'DIG_RANDOM_PATTERN_ENABLED', 'DIG_RANDOM_PATTERN_RESETED', - 'DIG_RANDOM_PATTERN_SEED_RAN_PAT', - 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_ALL_PIXELS', - 'DIG_RANDOM_PATTERN_SEED_RAN_PAT_DE_HIGH', 'DIG_SINGLETON_PIXELS', - 'DIG_SL_PIXEL_GROUPING', - 'DIG_TEST_PATTERN_EXTERNAL_RESET_BY_EXT_SIG', - 'DIG_TEST_PATTERN_EXTERNAL_RESET_EN', - 'DIG_TEST_PATTERN_EXTERNAL_RESET_ENABLE', - 'DIG_TEST_PATTERN_HALF_CLOCK_PATTERN_SEL', - 'DIG_TEST_PATTERN_NORMAL', 'DIG_TEST_PATTERN_RANDOM', - 'DIG_TEST_PATTERN_RANDOM_PATTERN_OUT_EN', - 'DIG_TEST_PATTERN_RANDOM_PATTERN_RESET', - 'DIG_TEST_PATTERN_TEST_PATTERN_OUT_EN', 'DIG_UPDATE_EYE_SEL_BOTH', - 'DIG_UPDATE_EYE_SEL_LEFT', 'DIG_UPDATE_EYE_SEL_RIGHT', - 'DIG_UPDATE_FIELD_SEL_BOTH', 'DIG_UPDATE_FIELD_SEL_BOTTOM', - 'DIG_UPDATE_FIELD_SEL_RESERVED', 'DIG_UPDATE_FIELD_SEL_TOP', - 'DIOMEM_DISABLE_MEM_PWR_CTRL', 'DIOMEM_DYNAMIC_DEEP_SLEEP_EN', - 'DIOMEM_DYNAMIC_DEEP_SLEEP_ENABLE', - 'DIOMEM_DYNAMIC_LIGHT_SLEEP_EN', - 'DIOMEM_DYNAMIC_LIGHT_SLEEP_ENABLE', - 'DIOMEM_DYNAMIC_SHUT_DOWN_ENABLE', 'DIOMEM_ENABLE_MEM_PWR_CTRL', - 'DIOMEM_FORCE_DEEP_SLEEP_REQUEST', 'DIOMEM_FORCE_LIGHT_SLEEP_REQ', - 'DIOMEM_FORCE_LIGHT_SLEEP_REQUEST', - 'DIOMEM_FORCE_SHUT_DOWN_REQUEST', 'DIOMEM_NO_FORCE_REQ', - 'DIOMEM_NO_FORCE_REQUEST', 'DIOMEM_PWR_DIS_CTRL', - 'DIOMEM_PWR_FORCE_CTRL', 'DIOMEM_PWR_FORCE_CTRL2', - 'DIOMEM_PWR_SEL_CTRL', 'DIOMEM_PWR_SEL_CTRL2', 'DIO_BASE', + 'DCN_BASE__INST6_SEG4', 'DF_BASE', 'DF_BASE__INST0_SEG0', + 'DF_BASE__INST0_SEG1', 'DF_BASE__INST0_SEG2', + 'DF_BASE__INST0_SEG3', 'DF_BASE__INST0_SEG4', + 'DF_BASE__INST1_SEG0', 'DF_BASE__INST1_SEG1', + 'DF_BASE__INST1_SEG2', 'DF_BASE__INST1_SEG3', + 'DF_BASE__INST1_SEG4', 'DF_BASE__INST2_SEG0', + 'DF_BASE__INST2_SEG1', 'DF_BASE__INST2_SEG2', + 'DF_BASE__INST2_SEG3', 'DF_BASE__INST2_SEG4', + 'DF_BASE__INST3_SEG0', 'DF_BASE__INST3_SEG1', + 'DF_BASE__INST3_SEG2', 'DF_BASE__INST3_SEG3', + 'DF_BASE__INST3_SEG4', 'DF_BASE__INST4_SEG0', + 'DF_BASE__INST4_SEG1', 'DF_BASE__INST4_SEG2', + 'DF_BASE__INST4_SEG3', 'DF_BASE__INST4_SEG4', + 'DF_BASE__INST5_SEG0', 'DF_BASE__INST5_SEG1', + 'DF_BASE__INST5_SEG2', 'DF_BASE__INST5_SEG3', + 'DF_BASE__INST5_SEG4', 'DF_BASE__INST6_SEG0', + 'DF_BASE__INST6_SEG1', 'DF_BASE__INST6_SEG2', + 'DF_BASE__INST6_SEG3', 'DF_BASE__INST6_SEG4', 'DIO_BASE', 'DIO_BASE__INST0_SEG0', 'DIO_BASE__INST0_SEG1', 'DIO_BASE__INST0_SEG2', 'DIO_BASE__INST0_SEG3', 'DIO_BASE__INST0_SEG4', 'DIO_BASE__INST1_SEG0', @@ -63745,1078 +13911,42 @@ __all__ = \ 'DIO_BASE__INST5_SEG3', 'DIO_BASE__INST5_SEG4', 'DIO_BASE__INST6_SEG0', 'DIO_BASE__INST6_SEG1', 'DIO_BASE__INST6_SEG2', 'DIO_BASE__INST6_SEG3', - 'DIO_BASE__INST6_SEG4', 'DIO_DBG_BLOCK_SEL', - 'DIO_DBG_BLOCK_SEL_AUX0', 'DIO_DBG_BLOCK_SEL_AUX1', - 'DIO_DBG_BLOCK_SEL_AUX2', 'DIO_DBG_BLOCK_SEL_AUX3', - 'DIO_DBG_BLOCK_SEL_AUX4', 'DIO_DBG_BLOCK_SEL_DIGA', - 'DIO_DBG_BLOCK_SEL_DIGB', 'DIO_DBG_BLOCK_SEL_DIGC', - 'DIO_DBG_BLOCK_SEL_DIGD', 'DIO_DBG_BLOCK_SEL_DIGE', - 'DIO_DBG_BLOCK_SEL_DIGFE_A', 'DIO_DBG_BLOCK_SEL_DIGFE_B', - 'DIO_DBG_BLOCK_SEL_DIGFE_C', 'DIO_DBG_BLOCK_SEL_DIGFE_D', - 'DIO_DBG_BLOCK_SEL_DIGFE_E', 'DIO_DBG_BLOCK_SEL_DIO', - 'DIO_DBG_BLOCK_SEL_DPA', 'DIO_DBG_BLOCK_SEL_DPB', - 'DIO_DBG_BLOCK_SEL_DPC', 'DIO_DBG_BLOCK_SEL_DPD', - 'DIO_DBG_BLOCK_SEL_DPE', 'DIO_DBG_BLOCK_SEL_DPFE_A', - 'DIO_DBG_BLOCK_SEL_DPFE_B', 'DIO_DBG_BLOCK_SEL_DPFE_C', - 'DIO_DBG_BLOCK_SEL_DPFE_D', 'DIO_DBG_BLOCK_SEL_DPFE_E', - 'DIO_DBG_BLOCK_SEL_PERFMON_DIO', 'DIO_DBG_BLOCK_SEL_RESERVED', - 'DIO_FIFO_ERROR', 'DIO_FIFO_ERROR_00', 'DIO_FIFO_ERROR_01', - 'DIO_FIFO_ERROR_10', 'DIO_FIFO_ERROR_11', - 'DIO_HDMI_RXSTATUS_TIMER_CONTROL_DIO_HDMI_RXSTATUS_TIMER_TYPE', - 'DIO_HDMI_RXSTATUS_TIMER_TYPE_LEVEL', - 'DIO_HDMI_RXSTATUS_TIMER_TYPE_PULSE', - 'DISABLE_BINNING_USE_LEGACY_SC', 'DISABLE_BINNING_USE_NEW_SC', - 'DISABLE_CLOCK_GATING', 'DISABLE_CLOCK_GATING_IN_DCO', - 'DISABLE_DEBUG', 'DISABLE_JITTER_REMOVAL', 'DISABLE_MEM_PWR_CTRL', - 'DISABLE_PWL', 'DISABLE_TF0_OPT', 'DISABLE_TF1_OPT', - 'DISABLE_THE_FEATURE', 'DISABLE_THE_INTERRUPT', - 'DISPCLK_CHG_FWD_CORR_DISABLE', - 'DISPCLK_CHG_FWD_CORR_DISABLE_AT_BEGINNING', - 'DISPCLK_CHG_FWD_CORR_ENABLE_AT_BEGINNING', - 'DISPCLK_FREQ_RAMP_COMPLETED', 'DISPCLK_FREQ_RAMP_DONE', - 'DISPCLK_FREQ_RAMP_IN_PROGRESS', 'DIVISOR_BY1', - 'DIVISOR_BY2_RESERVED', 'DIVISOR_BY3', 'DIVISOR_BY4_RESERVED', - 'DIVISOR_BY5_RESERVED', 'DIVISOR_BY6_RESERVED', - 'DIVISOR_BY7_RESERVED', 'DIVISOR_BY8_RESERVED', 'DIV_2', 'DIV_4', - 'DIV_8', 'DI_INDEX_SIZE_16_BIT', 'DI_INDEX_SIZE_32_BIT', - 'DI_INDEX_SIZE_8_BIT', 'DI_MAJOR_MODE_0', 'DI_MAJOR_MODE_1', - 'DI_PT_2D_RECTANGLE', 'DI_PT_LINELIST', 'DI_PT_LINELIST_ADJ', - 'DI_PT_LINELOOP', 'DI_PT_LINESTRIP', 'DI_PT_LINESTRIP_ADJ', - 'DI_PT_NONE', 'DI_PT_PATCH', 'DI_PT_POINTLIST', 'DI_PT_POLYGON', - 'DI_PT_QUADLIST', 'DI_PT_QUADSTRIP', 'DI_PT_RECTLIST', - 'DI_PT_TRIFAN', 'DI_PT_TRILIST', 'DI_PT_TRILIST_ADJ', - 'DI_PT_TRISTRIP', 'DI_PT_TRISTRIP_ADJ', 'DI_PT_UNUSED_1', - 'DI_PT_UNUSED_3', 'DI_PT_UNUSED_4', 'DI_PT_UNUSED_5', - 'DI_SRC_SEL_AUTO_INDEX', 'DI_SRC_SEL_DMA', 'DI_SRC_SEL_IMMEDIATE', - 'DI_SRC_SEL_RESERVED', - 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE', - 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_DISABLE', - 'DMA_POSITION_LOWER_BASE_ADDRESS_BUFFER_ENABLE_DMA_ENABLE', - 'DMDATA_CLEAR_UNDERFLOW_STATUS', 'DMDATA_DONE', - 'DMDATA_DONT_CLEAR', 'DMDATA_HARDWARE_UPDATE_MODE', 'DMDATA_MODE', - 'DMDATA_NOT_SENT_TO_DIG', 'DMDATA_NOT_UNDERFLOW', - 'DMDATA_NOT_UPDATED', 'DMDATA_QOS_LEVEL_FROM_SOFTWARE', - 'DMDATA_QOS_LEVEL_FROM_TTU', 'DMDATA_QOS_MODE', 'DMDATA_REPEAT', - 'DMDATA_SENT_TO_DIG', 'DMDATA_SOFTWARE_UPDATE_MODE', - 'DMDATA_UNDERFLOW', 'DMDATA_UNDERFLOWED', - 'DMDATA_UNDERFLOW_CLEAR', 'DMDATA_UPDATED', - 'DMDATA_USE_FOR_CURRENT_AND_FUTURE_FRAMES', - 'DMDATA_USE_FOR_CURRENT_FRAME_ONLY', 'DMDATA_VM_DONE', - 'DMDATA_VM_IS_DONE', 'DMDATA_VM_IS_NOT_DONE', - 'DMDATA_WAS_UPDATED', 'DME_MEM_DISABLE_MEM_PWR_CTRL', - 'DME_MEM_ENABLE_MEM_PWR_CTRL', 'DME_MEM_FORCE_DEEP_SLEEP_REQUEST', - 'DME_MEM_FORCE_LIGHT_SLEEP_REQUEST', - 'DME_MEM_FORCE_SHUT_DOWN_REQUEST', 'DME_MEM_NO_FORCE_REQUEST', - 'DME_MEM_POWER_STATE_ENUM', 'DME_MEM_POWER_STATE_ENUM_DS', - 'DME_MEM_POWER_STATE_ENUM_LS', 'DME_MEM_POWER_STATE_ENUM_ON', - 'DME_MEM_POWER_STATE_ENUM_SD', 'DME_MEM_PWR_DIS_CTRL', - 'DME_MEM_PWR_FORCE_CTRL', 'DMU_CLOCK_ON', 'DMU_CLOCK_STATUS_OFF', - 'DMU_CLOCK_STATUS_ON', 'DMU_DC_GPU_TIMER_READ_SELECT', - 'DMU_DC_GPU_TIMER_START_POSITION', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_48', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_FLIP_AWAY_76', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VREADY_36', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_VSYNC_NOM_24', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_STARTUP_12', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_0', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D1_V_UPDATE_NO_LOCK_64', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_50', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_FLIP_AWAY_78', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VREADY_38', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_VSYNC_NOM_26', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_STARTUP_14', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_2', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D2_V_UPDATE_NO_LOCK_66', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_52', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_FLIP_AWAY_80', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VREADY_40', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_VSYNC_NOM_28', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_STARTUP_16', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_4', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D3_V_UPDATE_NO_LOCK_68', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_54', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_FLIP_AWAY_82', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VREADY_42', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_VSYNC_NOM_30', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_STARTUP_18', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_6', - 'DMU_GPU_TIMER_READ_SELECT_LOWER_D4_V_UPDATE_NO_LOCK_70', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_49', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_FLIP_AWAY_77', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VREADY_37', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_VSYNC_NOM_25', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_STARTUP_13', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_1', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D1_V_UPDATE_NO_LOCK_65', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_51', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_FLIP_AWAY_79', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VREADY_39', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_VSYNC_NOM_27', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_STARTUP_15', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_3', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D2_V_UPDATE_NO_LOCK_67', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_53', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_FLIP_AWAY_81', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VREADY_41', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_VSYNC_NOM_29', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_STARTUP_17', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_5', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D3_V_UPDATE_NO_LOCK_69', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_55', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_FLIP_AWAY_83', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VREADY_43', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_VSYNC_NOM_31', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_STARTUP_19', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_7', - 'DMU_GPU_TIMER_READ_SELECT_UPPER_D4_V_UPDATE_NO_LOCK_71', - 'DMU_GPU_TIMER_START_0_END_27', 'DMU_GPU_TIMER_START_10_END_37', - 'DMU_GPU_TIMER_START_1_END_28', 'DMU_GPU_TIMER_START_2_END_29', - 'DMU_GPU_TIMER_START_3_END_30', 'DMU_GPU_TIMER_START_4_END_31', - 'DMU_GPU_TIMER_START_6_END_33', 'DMU_GPU_TIMER_START_8_END_35', - 'DOLBY_VISION_DISABLED', 'DOLBY_VISION_ENABLE', - 'DOLBY_VISION_ENABLED', 'DONUTS', 'DOUT_I2C_ACK', - 'DOUT_I2C_ACK_TO_CLEAN', - 'DOUT_I2C_ARBITRATION_ABORT_CURRENT_TRANSFER', - 'DOUT_I2C_ARBITRATION_ABORT_XFER', - 'DOUT_I2C_ARBITRATION_DONE_USING_I2C_REG', - 'DOUT_I2C_ARBITRATION_DONE__NOT_USING_I2C_REG', - 'DOUT_I2C_ARBITRATION_DONE__USING_I2C_REG', - 'DOUT_I2C_ARBITRATION_NOT_ABORT_CURRENT_TRANSFER', - 'DOUT_I2C_ARBITRATION_NO_QUEUED_SW_GO', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_0_RESERVED', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_1_RESERVED', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_HIGH', - 'DOUT_I2C_ARBITRATION_SW_PRIORITY_NORMAL', - 'DOUT_I2C_ARBITRATION_SW_QUEUE_DISABLED', - 'DOUT_I2C_ARBITRATION_SW_QUEUE_ENABLED', - 'DOUT_I2C_ARBITRATION_USE_I2C_REG_REQ', - 'DOUT_I2C_ARBITRATION__NOT_USE_I2C_REG_REQ', - 'DOUT_I2C_ARBITRATION__USE_I2C_REG_REQ', - 'DOUT_I2C_CONTROL_DBG_REF_SEL', 'DOUT_I2C_CONTROL_DDC_SELECT', - 'DOUT_I2C_CONTROL_FAST_REFERENCE_DEBUG', 'DOUT_I2C_CONTROL_GO', - 'DOUT_I2C_CONTROL_NORMAL_DEBUG', - 'DOUT_I2C_CONTROL_NOT_RESET_I2C_CONTROLLER', - 'DOUT_I2C_CONTROL_NOT_RESET_SW_STATUS', - 'DOUT_I2C_CONTROL_RESET_I2C_CONTROLLER', - 'DOUT_I2C_CONTROL_RESET_SW_STATUS', - 'DOUT_I2C_CONTROL_SELECT_DDC1', 'DOUT_I2C_CONTROL_SELECT_DDC2', - 'DOUT_I2C_CONTROL_SELECT_DDC3', 'DOUT_I2C_CONTROL_SELECT_DDC4', - 'DOUT_I2C_CONTROL_SELECT_DDC5', 'DOUT_I2C_CONTROL_SELECT_DDCVGA', - 'DOUT_I2C_CONTROL_SEND_RESET', - 'DOUT_I2C_CONTROL_SEND_RESET_LENGTH', - 'DOUT_I2C_CONTROL_SOFT_RESET', 'DOUT_I2C_CONTROL_START_TRANSFER', - 'DOUT_I2C_CONTROL_STOP_TRANSFER', - 'DOUT_I2C_CONTROL_SW_STATUS_RESET', 'DOUT_I2C_CONTROL_TRANS0', - 'DOUT_I2C_CONTROL_TRANS0_TRANS1', - 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2', - 'DOUT_I2C_CONTROL_TRANS0_TRANS1_TRANS2_TRANS3', - 'DOUT_I2C_CONTROL_TRANSACTION_COUNT', - 'DOUT_I2C_CONTROL__NOT_SEND_RESET', - 'DOUT_I2C_CONTROL__SEND_RESET', - 'DOUT_I2C_CONTROL__SEND_RESET_LENGTH_10', - 'DOUT_I2C_CONTROL__SEND_RESET_LENGTH_9', - 'DOUT_I2C_DATA_INDEX_WRITE', 'DOUT_I2C_DATA__INDEX_WRITE', - 'DOUT_I2C_DATA__NOT_INDEX_WRITE', - 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_BY_EXTERNAL_RESISTOR', - 'DOUT_I2C_DDC_SETUP_CLK_DRIVE_EN', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_BY_EXTERNAL_RESISTOR', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_EN', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_10MCLKS', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_FOR_20MCLKS', - 'DOUT_I2C_DDC_SETUP_DATA_DRIVE_SEL', - 'DOUT_I2C_DDC_SETUP_EDID_DETECT_CONNECT', - 'DOUT_I2C_DDC_SETUP_EDID_DETECT_DISCONNECT', - 'DOUT_I2C_DDC_SETUP_EDID_DETECT_MODE', - 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SCL', - 'DOUT_I2C_DDC_SETUP_I2C_PAD_DRIVE_SDA', - 'DOUT_I2C_DDC_SPEED_THRESHOLD', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_BIG_THAN_ZERO', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_HALF_OF_TOTAL_SAMPLE', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_QUATER_OF_TOTAL_SAMPLE', - 'DOUT_I2C_DDC_SPEED_THRESHOLD_THREE_QUATERS_OF_TOTAL_SAMPLE', - 'DOUT_I2C_EDID_DETECT_CTRL_SEND_RESET', - 'DOUT_I2C_EDID_NOT_SEND_RESET_BEFORE_EDID_READ_TRACTION', - 'DOUT_I2C_EDID_SEND_RESET_BEFORE_EDID_READ_TRACTION', - 'DOUT_I2C_NO_ACK', 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE', - 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__LEVEL', - 'DOUT_I2C_READ_REQUEST_INTERRUPT_TYPE__PULSE', - 'DOUT_I2C_TRANSACTION_STOP_ALL_TRANS', - 'DOUT_I2C_TRANSACTION_STOP_CURRENT_TRANS', - 'DOUT_I2C_TRANSACTION_STOP_ON_NACK', 'DPCS_BASE', - 'DPCS_BASE__INST0_SEG0', 'DPCS_BASE__INST0_SEG1', - 'DPCS_BASE__INST0_SEG2', 'DPCS_BASE__INST0_SEG3', - 'DPCS_BASE__INST0_SEG4', 'DPCS_BASE__INST1_SEG0', - 'DPCS_BASE__INST1_SEG1', 'DPCS_BASE__INST1_SEG2', - 'DPCS_BASE__INST1_SEG3', 'DPCS_BASE__INST1_SEG4', - 'DPCS_BASE__INST2_SEG0', 'DPCS_BASE__INST2_SEG1', - 'DPCS_BASE__INST2_SEG2', 'DPCS_BASE__INST2_SEG3', - 'DPCS_BASE__INST2_SEG4', 'DPCS_BASE__INST3_SEG0', - 'DPCS_BASE__INST3_SEG1', 'DPCS_BASE__INST3_SEG2', - 'DPCS_BASE__INST3_SEG3', 'DPCS_BASE__INST3_SEG4', - 'DPCS_BASE__INST4_SEG0', 'DPCS_BASE__INST4_SEG1', - 'DPCS_BASE__INST4_SEG2', 'DPCS_BASE__INST4_SEG3', - 'DPCS_BASE__INST4_SEG4', 'DPCS_BASE__INST5_SEG0', - 'DPCS_BASE__INST5_SEG1', 'DPCS_BASE__INST5_SEG2', - 'DPCS_BASE__INST5_SEG3', 'DPCS_BASE__INST5_SEG4', - 'DPCS_BASE__INST6_SEG0', 'DPCS_BASE__INST6_SEG1', - 'DPCS_BASE__INST6_SEG2', 'DPCS_BASE__INST6_SEG3', - 'DPCS_BASE__INST6_SEG4', 'DPHY_8B10B_CUR_DISP', - 'DPHY_8B10B_CUR_DISP_ONE', 'DPHY_8B10B_CUR_DISP_ZERO', - 'DPHY_8B10B_NOT_RESET', 'DPHY_8B10B_OUTPUT', 'DPHY_8B10B_RESET', - 'DPHY_8B10B_RESETET', - 'DPHY_ALT_SCRAMBLER_INTERNAL_RESET_SOLUTION', - 'DPHY_ALT_SCRAMBLER_REGULAR_RESET_VALUE', - 'DPHY_ALT_SCRAMBLER_RESET_EN', 'DPHY_ALT_SCRAMBLER_RESET_SEL', - 'DPHY_ALT_SCRAMBLER_RESET_SEL_CUSTOM_RESET_VALUE', - 'DPHY_ALT_SCRAMBLER_RESET_SEL_EDP_RESET_VALUE', - 'DPHY_ATEST_LANE0_PRBS_PATTERN', 'DPHY_ATEST_LANE0_REG_PATTERN', - 'DPHY_ATEST_LANE1_PRBS_PATTERN', 'DPHY_ATEST_LANE1_REG_PATTERN', - 'DPHY_ATEST_LANE2_PRBS_PATTERN', 'DPHY_ATEST_LANE2_REG_PATTERN', - 'DPHY_ATEST_LANE3_PRBS_PATTERN', 'DPHY_ATEST_LANE3_REG_PATTERN', - 'DPHY_ATEST_SEL_LANE0', 'DPHY_ATEST_SEL_LANE1', - 'DPHY_ATEST_SEL_LANE2', 'DPHY_ATEST_SEL_LANE3', 'DPHY_BYPASS', - 'DPHY_CRC_CONTINUOUS', 'DPHY_CRC_CONT_EN', 'DPHY_CRC_DISABLED', - 'DPHY_CRC_EN', 'DPHY_CRC_ENABLED', 'DPHY_CRC_FIELD', - 'DPHY_CRC_LANE0_SELECTED', 'DPHY_CRC_LANE1_SELECTED', - 'DPHY_CRC_LANE2_SELECTED', 'DPHY_CRC_LANE3_SELECTED', - 'DPHY_CRC_MST_PHASE_ERROR_ACK', 'DPHY_CRC_MST_PHASE_ERROR_ACKED', - 'DPHY_CRC_MST_PHASE_ERROR_NO_ACK', 'DPHY_CRC_ONE_SHOT', - 'DPHY_CRC_SEL', 'DPHY_CRC_START_FROM_BOTTOM_FIELD', - 'DPHY_CRC_START_FROM_TOP_FIELD', 'DPHY_DBG_OUTPUT', - 'DPHY_DPHY_SCRAMBLER_ADVANCE_ON_DATA_SYMBOL_ONLY', - 'DPHY_FAST_TRAINING_CAPABLE', 'DPHY_FAST_TRAINING_NOT_CAPABLE_0', - 'DPHY_FEC_ACTIVE', 'DPHY_FEC_DISABLED', 'DPHY_FEC_ENABLE', - 'DPHY_FEC_ENABLED', 'DPHY_FEC_NOT_ACTIVE', 'DPHY_FEC_READY', - 'DPHY_FEC_READY_DIS', 'DPHY_FEC_READY_EN', - 'DPHY_LOAD_BS_COUNT_NOT_STARTED', 'DPHY_LOAD_BS_COUNT_START', - 'DPHY_LOAD_BS_COUNT_STARTED', 'DPHY_NO_SKEW', - 'DPHY_PRBS11_SELECTED', 'DPHY_PRBS23_SELECTED', - 'DPHY_PRBS7_SELECTED', 'DPHY_PRBS_DISABLE', 'DPHY_PRBS_EN', - 'DPHY_PRBS_ENABLE', 'DPHY_PRBS_SEL', - 'DPHY_RX_FAST_TRAINING_CAPABLE', 'DPHY_SCRAMBLER_ADVANCE', - 'DPHY_SCRAMBLER_ADVANCE_ON_BOTH_DATA_AND_CTRL', - 'DPHY_SCRAMBLER_DIS', 'DPHY_SCRAMBLER_KCODE', - 'DPHY_SCRAMBLER_KCODE_DISABLED', 'DPHY_SCRAMBLER_KCODE_ENABLED', - 'DPHY_SCRAMBLER_SEL', 'DPHY_SCRAMBLER_SEL_DBG_DATA', - 'DPHY_SCRAMBLER_SEL_LANE_DATA', 'DPHY_SCR_DISABLED', - 'DPHY_SCR_ENABLED', 'DPHY_SKEW_BYPASS', - 'DPHY_STREAM_RESET_DURING_FAST_TRAINING_ENUM', - 'DPHY_STREAM_RESET_DURING_FAST_TRAINING_NOT_RESET', - 'DPHY_STREAM_RESET_DURING_FAST_TRAINING_RESET', - 'DPHY_SW_FAST_TRAINING_NOT_STARTED', - 'DPHY_SW_FAST_TRAINING_START', 'DPHY_SW_FAST_TRAINING_STARTED', - 'DPHY_TRAINING_PATTERN_1', 'DPHY_TRAINING_PATTERN_2', - 'DPHY_TRAINING_PATTERN_3', 'DPHY_TRAINING_PATTERN_4', - 'DPHY_TRAINING_PATTERN_SEL', 'DPHY_WITH_SKEW', 'DPREFCLK_SRC_SEL', - 'DPREFCLK_SRC_SEL_CK', 'DPREFCLK_SRC_SEL_P0PLL', - 'DPREFCLK_SRC_SEL_P1PLL', 'DPREFCLK_SRC_SEL_P2PLL', - 'DPTE_GROUP_SIZE', 'DPTE_GROUP_SIZE_1024B', - 'DPTE_GROUP_SIZE_128B', 'DPTE_GROUP_SIZE_2048B', - 'DPTE_GROUP_SIZE_256B', 'DPTE_GROUP_SIZE_512B', - 'DPTE_GROUP_SIZE_64B', 'DP_128B132B', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__GTC_LS_SW', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__LS_GTC_SW', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_GTC_LS', - 'DP_AUX_ARB_CONTROL_ARB_PRIORITY__SW_LS_GTC', - 'DP_AUX_ARB_CONTROL_DONE_USING_AUX_REG', - 'DP_AUX_ARB_CONTROL_USE_AUX_REG_REQ', - 'DP_AUX_ARB_CONTROL__DONE_NOT_USING_AUX_REG', - 'DP_AUX_ARB_CONTROL__DONE_USING_AUX_REG', - 'DP_AUX_ARB_CONTROL__NOT_USE_AUX_REG_REQ', - 'DP_AUX_ARB_CONTROL__USE_AUX_REG_REQ', 'DP_AUX_ARB_STATUS', - 'DP_AUX_CONTROL_HPD1_SELECTED', 'DP_AUX_CONTROL_HPD2_SELECTED', - 'DP_AUX_CONTROL_HPD3_SELECTED', 'DP_AUX_CONTROL_HPD4_SELECTED', - 'DP_AUX_CONTROL_HPD5_SELECTED', 'DP_AUX_CONTROL_HPD_SEL', - 'DP_AUX_CONTROL_NO_HPD_SELECTED', 'DP_AUX_CONTROL_TEST_MODE', - 'DP_AUX_CONTROL_TEST_MODE_DISABLE', - 'DP_AUX_CONTROL_TEST_MODE_ENABLE', - 'DP_AUX_DEFINITE_ERR_REACHED_ACK', - 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_START', - 'DP_AUX_DPHY_RX_CONTROL_ALLOW_BELOW_THRESHOLD_STOP', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__10_EDGES', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__18_EDGES', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__6_EDGES', - 'DP_AUX_DPHY_RX_CONTROL_HALF_SYM_DETECT_LEN__RESERVED', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__2_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__4_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__6_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_PHASE_DETECT_LEN__8_HALF_SYMBOLS', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO128_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO16_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO256_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO2_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO32_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO4_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO64_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_RECEIVE_WINDOW__1TO8_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO128_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO16_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO256_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO2_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO32_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO4_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO64_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL_START_WINDOW__1TO8_PERIOD', - 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_START', - 'DP_AUX_DPHY_RX_CONTROL__ALLOW_BELOW_THRESHOLD_STOP', - 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_PHASE_DETECT', - 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_START', - 'DP_AUX_DPHY_RX_CONTROL__NOT_ALLOW_BELOW_THRESHOLD_STOP', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__127to128', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__15to16', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__1to2', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__255to256', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__31to32', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__3to4', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__63to64', - 'DP_AUX_DPHY_RX_DETECTION_THRESHOLD__7to8', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__0', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__128US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__16US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__256US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__32US', - 'DP_AUX_DPHY_TX_CONTROL_MODE_DET_CHECK_DELAY__64US', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__1MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__2MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__4MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_RATE__8MHZ', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__DIVIDED_SYM_CLK', - 'DP_AUX_DPHY_TX_REF_CONTROL_TX_REF_SEL__FROM_DCCG_MICROSECOND_REF', - 'DP_AUX_ERR_OCCURRED_ACK', 'DP_AUX_ERR_OCCURRED__ACK', - 'DP_AUX_ERR_OCCURRED__NOT_ACK', - 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_ALLOW_REQ_FROM_OTHER_AUX', - 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ', - 'DP_AUX_GTC_SYNC_CONTROL_GTC_SYNC_BLOCK_REQ_FROM_OTHER_AUX', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__300US', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__400US', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__500US', - 'DP_AUX_GTC_SYNC_CONTROL_INTERVAL_RESET_WINDOW__600US', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__16_ATTAMPS', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__4_ATTAMPS', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__8_ATTAMPS', - 'DP_AUX_GTC_SYNC_CONTROL_OFFSET_CALC_MAX_ATTEMPT__RESERVED', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__0', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__128', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__256', - 'DP_AUX_GTC_SYNC_ERROR_CONTROL_LOCK_ACQ_TIMEOUT_LEN__64', - 'DP_AUX_IDLE', 'DP_AUX_INT_ACK', 'DP_AUX_INT_LS_UPDATE_ACK', - 'DP_AUX_INT_LS_UPDATE_NOT_ACK', 'DP_AUX_INT__ACK', - 'DP_AUX_INT__NOT_ACK', 'DP_AUX_IN_USE_GTC', 'DP_AUX_IN_USE_LS', - 'DP_AUX_IN_USE_PHYWAKE', 'DP_AUX_IN_USE_SW', - 'DP_AUX_LS_UPDATE_ACK', 'DP_AUX_PHY_WAKE_HIGH_PRIORITY', - 'DP_AUX_PHY_WAKE_LOW_PRIORITY', 'DP_AUX_PHY_WAKE_PRIORITY', - 'DP_AUX_POTENTIAL_ERR_REACHED_ACK', - 'DP_AUX_POTENTIAL_ERR_REACHED__ACK', - 'DP_AUX_POTENTIAL_ERR_REACHED__NOT_ACK', 'DP_AUX_RESET', - 'DP_AUX_RESET_ASSERTED', 'DP_AUX_RESET_DEASSERTED', - 'DP_AUX_RESET_DONE', 'DP_AUX_RESET_SEQUENCE_DONE', - 'DP_AUX_RESET_SEQUENCE_NOT_DONE', 'DP_AUX_RX_TIMEOUT_LEN_MUL', - 'DP_AUX_RX_TIMEOUT_LEN_MUL_2', 'DP_AUX_RX_TIMEOUT_LEN_MUL_4', - 'DP_AUX_RX_TIMEOUT_LEN_MUL_8', 'DP_AUX_RX_TIMEOUT_LEN_NO_MUL', - 'DP_AUX_SW_CONTROL_LS_READ_TRIG', - 'DP_AUX_SW_CONTROL_LS_READ__NOT_TRIG', - 'DP_AUX_SW_CONTROL_LS_READ__TRIG', 'DP_AUX_SW_CONTROL_SW_GO', - 'DP_AUX_SW_CONTROL_SW__GO', 'DP_AUX_SW_CONTROL_SW__NOT_GO', - 'DP_AUX_TX_PRECHARGE_LEN_MUL', 'DP_AUX_TX_PRECHARGE_LEN_MUL_2', - 'DP_AUX_TX_PRECHARGE_LEN_MUL_4', 'DP_AUX_TX_PRECHARGE_LEN_MUL_8', - 'DP_AUX_TX_PRECHARGE_LEN_NO_MUL', 'DP_COMPONENT_DEPTH', - 'DP_COMPONENT_DEPTH_10BPC', 'DP_COMPONENT_DEPTH_12BPC', - 'DP_COMPONENT_DEPTH_16BPC', 'DP_COMPONENT_DEPTH_6BPC', - 'DP_COMPONENT_DEPTH_8BPC', 'DP_CP_ENCRYPTION_TYPE', - 'DP_CP_ENCRYPTION_TYPE_0', 'DP_CP_ENCRYPTION_TYPE_1', - 'DP_DPHY_8B10B_EXT_DISP', 'DP_DPHY_8B10B_EXT_DISP_ONE', - 'DP_DPHY_8B10B_EXT_DISP_ZERO', - 'DP_DPHY_FAST_TRAINING_COMPLETE_ACK', - 'DP_DPHY_FAST_TRAINING_COMPLETE_ACKED', - 'DP_DPHY_FAST_TRAINING_COMPLETE_MASK', - 'DP_DPHY_FAST_TRAINING_COMPLETE_MASKED', - 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_ACKED', - 'DP_DPHY_FAST_TRAINING_COMPLETE_NOT_MASKED', - 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_DISABLED', - 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_EN', - 'DP_DPHY_FAST_TRAINING_VBLANK_EDGE_DETECT_ENABLED', - 'DP_DPHY_HBR2_PASS_THROUGH', 'DP_DPHY_HBR2_PATTERN_1', - 'DP_DPHY_HBR2_PATTERN_2_NEG', 'DP_DPHY_HBR2_PATTERN_2_POS', - 'DP_DPHY_HBR2_PATTERN_3', 'DP_DPHY_HBR2_PATTERN_CONTROL_MODE', - 'DP_DPHY_SYM32_1LANE', 'DP_DPHY_SYM32_2LANE', - 'DP_DPHY_SYM32_4LANE', 'DP_DPHY_SYM32_ACTIVE', - 'DP_DPHY_SYM32_CRC_END_LLCP', 'DP_DPHY_SYM32_CRC_END_PS_ANY', - 'DP_DPHY_SYM32_CRC_END_PS_LT_SR', 'DP_DPHY_SYM32_CRC_END_PS_ONLY', - 'DP_DPHY_SYM32_CRC_START_LLCP', - 'DP_DPHY_SYM32_CRC_START_PS_LT_SR', - 'DP_DPHY_SYM32_CRC_START_PS_ONLY', - 'DP_DPHY_SYM32_CRC_START_PS_POST_LT_SR', - 'DP_DPHY_SYM32_CRC_START_TP_START', - 'DP_DPHY_SYM32_CRC_TAP_SOURCE_SCHEDULER', - 'DP_DPHY_SYM32_CRC_TAP_SOURCE_SYMBOL_HANDLER', - 'DP_DPHY_SYM32_CRC_TAP_SOURCE_TP_GEN_MUX', - 'DP_DPHY_SYM32_CRC_USE_END_EVENT', - 'DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS', 'DP_DPHY_SYM32_DISABLE', - 'DP_DPHY_SYM32_ENABLE', 'DP_DPHY_SYM32_ENCRYPT_TYPE0', - 'DP_DPHY_SYM32_ENCRYPT_TYPE1', 'DP_DPHY_SYM32_LT_TPS1', - 'DP_DPHY_SYM32_LT_TPS2', 'DP_DPHY_SYM32_NOT_RESET', - 'DP_DPHY_SYM32_NO_RATE_UPDATE_PENDING', - 'DP_DPHY_SYM32_RATE_UPDATE_PENDING', 'DP_DPHY_SYM32_RESERVED', - 'DP_DPHY_SYM32_RESET', 'DP_DPHY_SYM32_RESET_STATUS_ASSERTED', - 'DP_DPHY_SYM32_RESET_STATUS_DEASSERTED', - 'DP_DPHY_SYM32_SAT_NOTRIGGER_UPDATE', - 'DP_DPHY_SYM32_SAT_NOTRIGGER_UPDATE_PENDING', - 'DP_DPHY_SYM32_SAT_NO_UPDATE', - 'DP_DPHY_SYM32_SAT_NO_UPDATE_PENDING', - 'DP_DPHY_SYM32_SAT_TRIGGER_UPDATE', - 'DP_DPHY_SYM32_SAT_TRIGGER_UPDATE_PENDING', - 'DP_DPHY_SYM32_STATUS_ENABLED', 'DP_DPHY_SYM32_STATUS_IDLE', - 'DP_DPHY_SYM32_STREAM_OVR_ALWAYS', - 'DP_DPHY_SYM32_STREAM_OVR_NONE', - 'DP_DPHY_SYM32_STREAM_OVR_REPLACE', - 'DP_DPHY_SYM32_STREAM_OVR_TYPE_CONTROL', - 'DP_DPHY_SYM32_STREAM_OVR_TYPE_DATA', 'DP_DPHY_SYM32_TEST', - 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS11', - 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS15', - 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS23', - 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS31', - 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS7', - 'DP_DPHY_SYM32_TP_PRBS_SEL_PRBS9', - 'DP_DPHY_SYM32_TP_SELECT_CUSTOM', 'DP_DPHY_SYM32_TP_SELECT_PRBS', - 'DP_DPHY_SYM32_TP_SELECT_SQUARE', 'DP_DPHY_SYM32_TP_SELECT_TPS1', - 'DP_DPHY_SYM32_TP_SELECT_TPS2', 'DP_DSC_444_SIMPLE_422', - 'DP_DSC_DISABLE', 'DP_DSC_MODE', 'DP_DSC_NATIVE_422_420', - 'DP_DTO_DESPREAD_DISABLE', 'DP_DTO_DESPREAD_ENABLE', - 'DP_DTO_DS_DISABLE', 'DP_EMBEDDED_PANEL', - 'DP_EMBEDDED_PANEL_MODE', 'DP_EXTERNAL_PANEL', - 'DP_LINK_TRAINING_ALREADY_COMPLETE', 'DP_LINK_TRAINING_COMPLETE', - 'DP_LINK_TRAINING_NOT_COMPLETE', 'DP_LINK_TRAINING_SWITCH_MODE', - 'DP_LINK_TRAINING_SWITCH_TO_IDLE', - 'DP_LINK_TRAINING_SWITCH_TO_VIDEO', 'DP_ML_PHY_SEQ_IMMEDIATE', - 'DP_ML_PHY_SEQ_LINE_NUM', 'DP_ML_PHY_SEQ_MODE', - 'DP_MSA_V_TIMING_OVERRIDE_EN', 'DP_MSE_BLANK_CODE', - 'DP_MSE_BLANK_CODE_SF_FILLED', 'DP_MSE_BLANK_CODE_ZERO_FILLED', - 'DP_MSE_LINK_LINE', 'DP_MSE_LINK_LINE_128_MTP_LONG', - 'DP_MSE_LINK_LINE_256_MTP_LONG', 'DP_MSE_LINK_LINE_32_MTP_LONG', - 'DP_MSE_LINK_LINE_64_MTP_LONG', 'DP_MSE_NOT_ZERO_FE_ENCODER', - 'DP_MSE_SAT_ENCRYPT0', 'DP_MSE_SAT_ENCRYPT0_DISABLED', - 'DP_MSE_SAT_ENCRYPT0_ENABLED', 'DP_MSE_SAT_ENCRYPT1', - 'DP_MSE_SAT_ENCRYPT1_DISABLED', 'DP_MSE_SAT_ENCRYPT1_ENABLED', - 'DP_MSE_SAT_ENCRYPT2', 'DP_MSE_SAT_ENCRYPT2_DISABLED', - 'DP_MSE_SAT_ENCRYPT2_ENABLED', 'DP_MSE_SAT_ENCRYPT3', - 'DP_MSE_SAT_ENCRYPT3_DISABLED', 'DP_MSE_SAT_ENCRYPT3_ENABLED', - 'DP_MSE_SAT_ENCRYPT4', 'DP_MSE_SAT_ENCRYPT4_DISABLED', - 'DP_MSE_SAT_ENCRYPT4_ENABLED', 'DP_MSE_SAT_ENCRYPT5', - 'DP_MSE_SAT_ENCRYPT5_DISABLED', 'DP_MSE_SAT_ENCRYPT5_ENABLED', - 'DP_MSE_SAT_UPDATE_ACT', 'DP_MSE_SAT_UPDATE_NO_ACTION', - 'DP_MSE_SAT_UPDATE_WITHOUT_TRIGGER', - 'DP_MSE_SAT_UPDATE_WITH_TRIGGER', - 'DP_MSE_TIMESTAMP_CALC_BASED_ON_LINK_RATE', - 'DP_MSE_TIMESTAMP_CALC_BASED_ON_VC_RATE', 'DP_MSE_TIMESTAMP_MODE', - 'DP_MSE_ZERO_ENCODER', 'DP_MSE_ZERO_FE_ENCODER', - 'DP_MSO_FOUR_SSTLINK', 'DP_MSO_NUM_OF_SST_LINKS', - 'DP_MSO_ONE_SSTLINK', 'DP_MSO_TWO_SSTLINK', - 'DP_ONE_PIXEL_PER_CYCLE', 'DP_PIXEL_ENCODING', - 'DP_PIXEL_ENCODING_RGB444', 'DP_PIXEL_ENCODING_RGB_WIDE_GAMUT', - 'DP_PIXEL_ENCODING_YCBCR420', 'DP_PIXEL_ENCODING_YCBCR422', - 'DP_PIXEL_ENCODING_YCBCR444', 'DP_PIXEL_ENCODING_Y_ONLY', - 'DP_PIXEL_PER_CYCLE_PROCESSING_NUM', - 'DP_SEC_ASP_CHANNEL_COUNT_FROM_AZ', - 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE', - 'DP_SEC_ASP_CHANNEL_COUNT_OVERRIDE_ENABLED', - 'DP_SEC_ASP_HIGH_PRIORITY', 'DP_SEC_ASP_LOW_PRIORITY', - 'DP_SEC_ASP_PRIORITY', 'DP_SEC_AUDIO_MUTE', - 'DP_SEC_AUDIO_MUTE_HW_CTRL', 'DP_SEC_AUDIO_MUTE_SW_CTRL', - 'DP_SEC_COLLISION_ACK', 'DP_SEC_COLLISION_ACK_CLR_FLAG', - 'DP_SEC_COLLISION_ACK_NO_EFFECT', 'DP_SEC_GSP0_PRIORITY', - 'DP_SEC_GSP_SEND', 'DP_SEC_GSP_SEND_ANY_LINE', - 'DP_SEC_GSP_SEND_PPS', 'DP_SEC_LINE_REFERENCE', - 'DP_SEC_TIMESTAMP_AUTO_CALC_MODE', 'DP_SEC_TIMESTAMP_MODE', - 'DP_SEC_TIMESTAMP_PROGRAMMABLE_MODE', 'DP_STEER_OVERFLOW_ACK', - 'DP_STEER_OVERFLOW_ACK_CLR_INTERRUPT', - 'DP_STEER_OVERFLOW_ACK_NO_EFFECT', 'DP_STEER_OVERFLOW_MASK', - 'DP_STEER_OVERFLOW_MASKED', 'DP_STEER_OVERFLOW_UNMASK', - 'DP_STREAM_ENC_DCCG', 'DP_STREAM_ENC_DISPLAY_PIPE', - 'DP_STREAM_ENC_HARDWARE', 'DP_STREAM_ENC_NOT_RESET', - 'DP_STREAM_ENC_NO_ERROR_OCCURRED', - 'DP_STREAM_ENC_OVERFLOW_OCCURRED', - 'DP_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR', - 'DP_STREAM_ENC_OVERWRITE_LEVEL_SELECT', - 'DP_STREAM_ENC_PROGRAMMABLE', 'DP_STREAM_ENC_READ_CLOCK_CONTROL', - 'DP_STREAM_ENC_RESET', 'DP_STREAM_ENC_RESET_CONTROL', - 'DP_STREAM_ENC_STREAM_ACTIVE', 'DP_STREAM_ENC_UNDERFLOW_OCCURRED', - 'DP_STREAM_ENC_VIDEO_STREAM_ACTIVE', - 'DP_STREAM_ENC_VIDEO_STREAM_NOT_ACTIVE', - 'DP_STREAM_MAPPER_DP_STREAM_LINK_TARGET', - 'DP_STREAM_MAPPER_LINK0', 'DP_STREAM_MAPPER_LINK1', - 'DP_STREAM_MAPPER_RESERVED', 'DP_SYM32_ENC_COMPONENT_DEPTH_10BPC', - 'DP_SYM32_ENC_COMPONENT_DEPTH_12BPC', - 'DP_SYM32_ENC_COMPONENT_DEPTH_6BPC', - 'DP_SYM32_ENC_COMPONENT_DEPTH_8BPC', - 'DP_SYM32_ENC_COMPRESSED_FORMAT', 'DP_SYM32_ENC_CONTINUOUS_MODE', - 'DP_SYM32_ENC_CRC_NOT_VALID', 'DP_SYM32_ENC_CRC_VALID', - 'DP_SYM32_ENC_DISABLE', 'DP_SYM32_ENC_DP_SOF', - 'DP_SYM32_ENC_ENABLE', 'DP_SYM32_ENC_GSP_DEADLINE_MISSED', - 'DP_SYM32_ENC_GSP_DEADLINE_NOT_MISSED', - 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_128', - 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_32', - 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_RESERVED0', - 'DP_SYM32_ENC_GSP_PAYLOAD_SIZE_RESERVED1', - 'DP_SYM32_ENC_GSP_SEND_AT_EARLIEST_TIME', - 'DP_SYM32_ENC_GSP_SEND_AT_LINE_NUMBER', - 'DP_SYM32_ENC_GSP_TRIGGER_NOT_PENDING', - 'DP_SYM32_ENC_GSP_TRIGGER_PENDING', - 'DP_SYM32_ENC_MEM_PWR_FORCE_DEEP_SLEEP_REQUEST', - 'DP_SYM32_ENC_MEM_PWR_FORCE_LIGHT_SLEEP_REQUEST', - 'DP_SYM32_ENC_MEM_PWR_FORCE_SHUT_DOWN_REQUEST', - 'DP_SYM32_ENC_MEM_PWR_NO_FORCE_REQUEST', - 'DP_SYM32_ENC_NOT_PENDING', 'DP_SYM32_ENC_NOT_RESET', - 'DP_SYM32_ENC_NO_OVERFLOW_OCCURRED', 'DP_SYM32_ENC_ONE_SHOT_MODE', - 'DP_SYM32_ENC_OTG_SOF', 'DP_SYM32_ENC_OVERFLOW_OCCURRED', - 'DP_SYM32_ENC_PENDING', - 'DP_SYM32_ENC_PIXEL_ENCODING_RGB_YCBCR444', - 'DP_SYM32_ENC_PIXEL_ENCODING_YCBCR420', - 'DP_SYM32_ENC_PIXEL_ENCODING_YCBCR422', - 'DP_SYM32_ENC_PIXEL_ENCODING_Y_ONLY', - 'DP_SYM32_ENC_POWER_STATE_ENUM_DS', - 'DP_SYM32_ENC_POWER_STATE_ENUM_LS', - 'DP_SYM32_ENC_POWER_STATE_ENUM_ON', - 'DP_SYM32_ENC_POWER_STATE_ENUM_SD', 'DP_SYM32_ENC_RESET', - 'DP_SYM32_ENC_SDP_AUDIO_MUTE_FORCED', - 'DP_SYM32_ENC_SDP_AUDIO_MUTE_NOT_FORCED', - 'DP_SYM32_ENC_SDP_HIGH_PRIORITY', 'DP_SYM32_ENC_SDP_LOW_PRIORITY', - 'DP_SYM32_ENC_UNCOMPRESSED_FORMAT', - 'DP_SYM32_ENC_VID_STREAM_DEFER_TO_HBLANK', - 'DP_SYM32_ENC_VID_STREAM_DEFER_TO_VBLANK', - 'DP_SYM32_ENC_VID_STREAM_NO_DEFER', 'DP_SYNC_POLARITY', - 'DP_SYNC_POLARITY_ACTIVE_HIGH', 'DP_SYNC_POLARITY_ACTIVE_LOW', - 'DP_TU_OVERFLOW_ACK', 'DP_TU_OVERFLOW_ACK_CLR_INTERRUPT', - 'DP_TU_OVERFLOW_ACK_NO_EFFECT', 'DP_TWO_PIXEL_PER_CYCLE', - 'DP_UDI_1_LANE', 'DP_UDI_2_LANES', 'DP_UDI_4_LANES', - 'DP_UDI_LANES', 'DP_UDI_LANES_RESERVED', - 'DP_VID_ENHANCED_FRAME_MODE', 'DP_VID_M_1X_INPUT_PIXEL_RATE', - 'DP_VID_M_2X_INPUT_PIXEL_RATE', 'DP_VID_M_4X_INPUT_PIXEL_RATE', - 'DP_VID_M_8X_INPUT_PIXEL_RATE', 'DP_VID_M_N_CALC_AUTO', - 'DP_VID_M_N_DOUBLE_BUFFER_AFTER_VID_M_UPDATE', - 'DP_VID_M_N_DOUBLE_BUFFER_AT_FRAME_START', - 'DP_VID_M_N_DOUBLE_BUFFER_MODE', 'DP_VID_M_N_GEN_EN', - 'DP_VID_M_N_PROGRAMMED_VIA_REG', 'DP_VID_N_MUL', - 'DP_VID_STREAM_DISABLE_ACK', 'DP_VID_STREAM_DISABLE_MASK', - 'DP_VID_STREAM_DIS_DEFER', 'DP_VID_STREAM_DIS_DEFER_TO_HBLANK', - 'DP_VID_STREAM_DIS_DEFER_TO_VBLANK', 'DP_VID_STREAM_DIS_NO_DEFER', - 'DP_VID_VBID_FIELD_POL', 'DP_VID_VBID_FIELD_POL_INV', - 'DP_VID_VBID_FIELD_POL_NORMAL', 'DRAW_DONE', - 'DSCCIF_BITS_PER_COMPONENT_ENUM', - 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT', - 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT', - 'DSCCIF_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT', - 'DSCCIF_ENABLE_ENUM', 'DSCCIF_ENABLE_ENUM_DISABLED', - 'DSCCIF_ENABLE_ENUM_ENABLED', 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_420', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_NATIVE_YCBCR_422', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_RGB', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_SIMPLE_YCBCR_422', - 'DSCCIF_INPUT_PIXEL_FORMAT_ENUM_YCBCR_444', - 'DSCC_BITS_PER_COMPONENT_ENUM', - 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_10_BIT', - 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_12_BIT', - 'DSCC_BITS_PER_COMPONENT_ENUM_BITS_PER_COMPONENT_8_BIT', - 'DSCC_DSC_VERSION_MAJOR_ENUM', - 'DSCC_DSC_VERSION_MAJOR_ENUM_DSC_1_X_MAJOR_VERSION', - 'DSCC_DSC_VERSION_MINOR_ENUM', - 'DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_1_MINOR_VERSION', - 'DSCC_DSC_VERSION_MINOR_ENUM_DSC_X_2_MINOR_VERSION', - 'DSCC_ENABLE_ENUM', 'DSCC_ENABLE_ENUM_DISABLED', - 'DSCC_ENABLE_ENUM_ENABLED', 'DSCC_ICH_RESET_ENUM', - 'DSCC_ICH_RESET_ENUM_SLICE0_ICH_RESET', - 'DSCC_ICH_RESET_ENUM_SLICE1_ICH_RESET', - 'DSCC_ICH_RESET_ENUM_SLICE2_ICH_RESET', - 'DSCC_ICH_RESET_ENUM_SLICE3_ICH_RESET', 'DSCC_LINEBUF_DEPTH_ENUM', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_10_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_11_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_12_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_13_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_8_BIT', - 'DSCC_LINEBUF_DEPTH_ENUM_LINEBUF_DEPTH_9_BIT', - 'DSCC_MEM_PWR_DIS_ENUM', 'DSCC_MEM_PWR_DIS_ENUM_REQUEST_DIS', - 'DSCC_MEM_PWR_DIS_ENUM_REQUEST_EN', 'DSCC_MEM_PWR_FORCE_ENUM', - 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_DEEP_SLEEP_REQUEST', - 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_LIGHT_SLEEP_REQUEST', - 'DSCC_MEM_PWR_FORCE_ENUM_FORCE_SHUT_DOWN_REQUEST', - 'DSCC_MEM_PWR_FORCE_ENUM_NO_FORCE_REQUEST', - 'DSCL_MODE_CHROMA_SCALING_BYPASS', 'DSCL_MODE_DSCL_BYPASS', - 'DSCL_MODE_LUMA_SCALING_BYPASS', 'DSCL_MODE_SCALING_444_BYPASS', - 'DSCL_MODE_SCALING_444_RGB_ENABLE', - 'DSCL_MODE_SCALING_444_YCBCR_ENABLE', - 'DSCL_MODE_SCALING_YCBCR_ENABLE', 'DSCL_MODE_SEL', 'DSM_DATA_SEL', - 'DSM_DATA_SEL_0', 'DSM_DATA_SEL_1', 'DSM_DATA_SEL_BOTH', - 'DSM_DATA_SEL_DISABLE', 'DSM_ENABLE_ERROR_INJECT', - 'DSM_ENABLE_ERROR_INJECT_FED_IN', - 'DSM_ENABLE_ERROR_INJECT_SINGLE', - 'DSM_ENABLE_ERROR_INJECT_UNCORRECTABLE', - 'DSM_ENABLE_ERROR_INJECT_UNCORRECTABLE_LIMITED', - 'DSM_SELECT_INJECT_DELAY', 'DSM_SELECT_INJECT_DELAY_DELAY_ERROR', - 'DSM_SELECT_INJECT_DELAY_NO_DELAY', 'DSM_SINGLE_WRITE', - 'DSM_SINGLE_WRITE_DIS', 'DSM_SINGLE_WRITE_EN', 'DS_HW_CAL_DIS', - 'DS_HW_CAL_EN', 'DS_HW_CAL_ENABLE', 'DS_JITTER_COUNT_SRC_SEL', - 'DS_JITTER_COUNT_SRC_SEL0', 'DS_JITTER_COUNT_SRC_SEL1', - 'DS_REF_IS_EXT_GENLOCK', 'DS_REF_IS_PCIE', 'DS_REF_IS_XTALIN', - 'DS_REF_SRC', 'DTO_FORCE_BYPASS', 'DTO_FORCE_NO_BYPASS', - 'DVOACLKC_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', 'DVOACLKC_IN_PHASE', - 'DVOACLKC_IN_PHASE_WITH_PCLK_DVO', - 'DVOACLKC_MVP_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', - 'DVOACLKC_MVP_IN_PHASE', 'DVOACLKC_MVP_IN_PHASE_WITH_PCLK_DVO', - 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE', - 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_DISABLE', - 'DVOACLKC_MVP_SKEW_PHASE_OVERRIDE_ENABLE', - 'DVOACLKD_IN_OPPOSITE_PHASE_WITH_PCLK_DVO', 'DVOACLKD_IN_PHASE', - 'DVOACLKD_IN_PHASE_WITH_PCLK_DVO', 'DVOACLK_COARSE_SKEW_CNTL', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_10_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_11_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_12_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_13_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_14_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_15_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_1_STEP', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_2_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_3_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_4_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_5_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_6_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_7_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_8_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_DELAY_9_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_10_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_11_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_12_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_13_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_14_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_15_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_1_STEP', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_2_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_3_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_4_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_5_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_6_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_7_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_8_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_EARLY_9_STEPS', - 'DVOACLK_COARSE_SKEW_CNTL_NO_ADJUSTMENT', - 'DVOACLK_FINE_SKEW_CNTL', 'DVOACLK_FINE_SKEW_CNTL_DELAY_1_STEP', - 'DVOACLK_FINE_SKEW_CNTL_DELAY_2_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_DELAY_3_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_EARLY_1_STEP', - 'DVOACLK_FINE_SKEW_CNTL_EARLY_2_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_EARLY_3_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_EARLY_4_STEPS', - 'DVOACLK_FINE_SKEW_CNTL_NO_ADJUSTMENT', 'DVO_ENABLE_RST', - 'DVO_ENABLE_RST_DISABLE', 'DVO_ENABLE_RST_ENABLE', - 'DWB_CRC_CONT_EN_CONT', 'DWB_CRC_CONT_EN_ENUM', - 'DWB_CRC_CONT_EN_ONE_SHOT', 'DWB_CRC_SRC_SEL_DWB_IN', - 'DWB_CRC_SRC_SEL_DWB_OUT', 'DWB_CRC_SRC_SEL_ENUM', - 'DWB_CRC_SRC_SEL_OGAM_OUT', 'DWB_DATA_OVERFLOW_INT_TYPE_0', - 'DWB_DATA_OVERFLOW_INT_TYPE_1', 'DWB_DATA_OVERFLOW_INT_TYPE_ENUM', - 'DWB_DATA_OVERFLOW_TYPE_BUFFER', 'DWB_DATA_OVERFLOW_TYPE_ENUM', - 'DWB_DATA_OVERFLOW_TYPE_NO_OVERFLOW', - 'DWB_DATA_OVERFLOW_TYPE_VREADY', 'DWB_DATA_OVERFLOW_TYPE_VUPDATE', - 'DWB_DEBUG_SEL_DWBCP', 'DWB_DEBUG_SEL_ENUM', 'DWB_DEBUG_SEL_FC', - 'DWB_DEBUG_SEL_PERFMON', 'DWB_DEBUG_SEL_RESERVED', - 'DWB_GAMUT_REMAP_COEF_FORMAT_ENUM', - 'DWB_GAMUT_REMAP_COEF_FORMAT_S2_13', - 'DWB_GAMUT_REMAP_COEF_FORMAT_S3_12', - 'DWB_GAMUT_REMAP_MODE_BYPASS', 'DWB_GAMUT_REMAP_MODE_COEF_A', - 'DWB_GAMUT_REMAP_MODE_COEF_B', 'DWB_GAMUT_REMAP_MODE_ENUM', - 'DWB_GAMUT_REMAP_MODE_RESERVED', 'DWB_LUT_NUM_SEG', - 'DWB_MEM_PWR_FORCE_DIS', 'DWB_MEM_PWR_FORCE_DS', - 'DWB_MEM_PWR_FORCE_ENUM', 'DWB_MEM_PWR_FORCE_LS', - 'DWB_MEM_PWR_FORCE_SD', 'DWB_MEM_PWR_STATE_DS', - 'DWB_MEM_PWR_STATE_ENUM', 'DWB_MEM_PWR_STATE_LS', - 'DWB_MEM_PWR_STATE_ON', 'DWB_MEM_PWR_STATE_SD', - 'DWB_OGAM_LUT_CONFIG_MODE_DIFF', 'DWB_OGAM_LUT_CONFIG_MODE_ENUM', - 'DWB_OGAM_LUT_CONFIG_MODE_SAME', 'DWB_OGAM_LUT_HOST_SEL_ENUM', - 'DWB_OGAM_LUT_HOST_SEL_RAMA', 'DWB_OGAM_LUT_HOST_SEL_RAMB', - 'DWB_OGAM_LUT_READ_COLOR_SEL_B', - 'DWB_OGAM_LUT_READ_COLOR_SEL_ENUM', - 'DWB_OGAM_LUT_READ_COLOR_SEL_G', 'DWB_OGAM_LUT_READ_COLOR_SEL_R', - 'DWB_OGAM_LUT_READ_COLOR_SEL_RESERVED', - 'DWB_OGAM_LUT_READ_DBG_DISABLE', 'DWB_OGAM_LUT_READ_DBG_ENABLE', - 'DWB_OGAM_LUT_READ_DBG_ENUM', 'DWB_OGAM_MODE_BYPASS', - 'DWB_OGAM_MODE_ENUM', 'DWB_OGAM_MODE_RAM_LUT_ENABLED', - 'DWB_OGAM_MODE_RESERVED', 'DWB_OGAM_PWL_DISABLE_ENUM', - 'DWB_OGAM_PWL_DISABLE_FALSE', 'DWB_OGAM_PWL_DISABLE_TRUE', - 'DWB_OGAM_SELECT_A', 'DWB_OGAM_SELECT_B', 'DWB_OGAM_SELECT_ENUM', - 'DWB_SEGMENTS_1', 'DWB_SEGMENTS_128', 'DWB_SEGMENTS_16', - 'DWB_SEGMENTS_2', 'DWB_SEGMENTS_32', 'DWB_SEGMENTS_4', - 'DWB_SEGMENTS_64', 'DWB_SEGMENTS_8', 'DWB_TEST_CLK_SEL_ENUM', - 'DWB_TEST_CLK_SEL_G', 'DWB_TEST_CLK_SEL_P', 'DWB_TEST_CLK_SEL_R', - 'DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE', - 'DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE_0', - 'DX_PROTECTION_DX_PIPE_ENC_REQUIRED_TYPE_1', - 'DYNAMIC_DEEP_SLEEP_EN', 'DYNAMIC_DEEP_SLEEP_ENABLE', - 'DYNAMIC_LIGHT_SLEEP_EN', 'DYNAMIC_LIGHT_SLEEP_ENABLE', - 'DYNAMIC_SHUT_DOWN_ENABLE', 'DbMemArbWatermarks', - 'DbPRTFaultBehavior', 'DbPSLControl', 'EARLY', - 'EARLY_Z_THEN_LATE_Z', 'EARLY_Z_THEN_RE_Z', - 'EFC_ACrYCb16161616_10LSB', 'EFC_ACrYCb16161616_10MSB', - 'EFC_ACrYCb16161616_12LSB', 'EFC_ACrYCb16161616_12MSB', - 'EFC_ACrYCb2101010', 'EFC_ACrYCb8888', 'EFC_ARGB1555', - 'EFC_ARGB16161616_10LSB', 'EFC_ARGB16161616_10MSB', - 'EFC_ARGB16161616_12LSB', 'EFC_ARGB16161616_12MSB', - 'EFC_ARGB16161616_FLOAT', 'EFC_ARGB16161616_SNORM', - 'EFC_ARGB16161616_UNORM', 'EFC_ARGB2101010', 'EFC_ARGB4444', - 'EFC_ARGB8888', 'EFC_AYCrCb16161616_10LSB', - 'EFC_AYCrCb16161616_10MSB', 'EFC_AYCrCb16161616_12LSB', - 'EFC_AYCrCb16161616_12MSB', 'EFC_AYCrCb8888', 'EFC_BGR101111_FIX', - 'EFC_BGR101111_FLOAT', 'EFC_BGR565', - 'EFC_CbYCrY10101010_422_PACKED', 'EFC_CbYCrY12121212_422_PACKED', - 'EFC_CbYCrY8888_422_PACKED', 'EFC_CrYCbA1010102', - 'EFC_CrYCbA16161616_10LSB', 'EFC_CrYCbA16161616_10MSB', - 'EFC_CrYCbA16161616_12LSB', 'EFC_CrYCbA16161616_12MSB', - 'EFC_CrYCbA8888', 'EFC_CrYCbY10101010_422_PACKED', - 'EFC_CrYCbY12121212_422_PACKED', 'EFC_CrYCbY8888_422_PACKED', - 'EFC_MONO_10LSB', 'EFC_MONO_10MSB', 'EFC_MONO_12LSB', - 'EFC_MONO_12MSB', 'EFC_MONO_16', 'EFC_MONO_8', - 'EFC_RGB111110_FIX', 'EFC_RGB111110_FLOAT', 'EFC_RGB565', - 'EFC_RGBA1010102', 'EFC_RGBA16161616_10LSB', - 'EFC_RGBA16161616_10MSB', 'EFC_RGBA16161616_12LSB', - 'EFC_RGBA16161616_12MSB', 'EFC_RGBA16161616_FLOAT', - 'EFC_RGBA16161616_SNORM', 'EFC_RGBA16161616_UNORM', - 'EFC_RGBA4444', 'EFC_RGBA5551', 'EFC_RGBA8888', - 'EFC_SURFACE_PIXEL_FORMAT', 'EFC_Y10_CbCr1010_420_PLANAR', - 'EFC_Y10_CrCb1010_420_PLANAR', 'EFC_Y12_CbCr1212_420_PLANAR', - 'EFC_Y12_CrCb1212_420_PLANAR', 'EFC_Y8_CbCr88_420_PLANAR', - 'EFC_Y8_CrCb88_420_PLANAR', 'EFC_YCbYCr10101010_422_PACKED', - 'EFC_YCbYCr12121212_422_PACKED', 'EFC_YCbYCr8888_422_PACKED', - 'EFC_YCrCbA16161616_10LSB', 'EFC_YCrCbA16161616_10MSB', - 'EFC_YCrCbA16161616_12LSB', 'EFC_YCrCbA16161616_12MSB', - 'EFC_YCrCbA8888', 'EFC_YCrYCb10101010_422_PACKED', - 'EFC_YCrYCb12121212_422_PACKED', 'EFC_YCrYCb8888_422_PACKED', - 'ENABLE', 'ENABLE_AMCLK0', 'ENABLE_AMCLK1', 'ENABLE_CLOCK', - 'ENABLE_DEBUG', 'ENABLE_ENUM', 'ENABLE_ENUM_DISABLED', - 'ENABLE_ENUM_ENABLED', 'ENABLE_JITTER_REMOVAL', - 'ENABLE_LEGACY_PIPELINE', 'ENABLE_MEM_PWR_CTRL', - 'ENABLE_NGG_PIPELINE', 'ENABLE_PWL', 'ENABLE_TF0_OPT', - 'ENABLE_TF1_OPT', 'ENABLE_THE_FEATURE', 'ENABLE_THE_FUNC_CLOCK', - 'ENABLE_THE_INTERRUPT', 'ENABLE_THE_REFCLK', 'END_OF_PIPE_IB_END', - 'END_OF_PIPE_INCR_DE', 'END_OF_ROW_MODE', 'ENUM_DCN_ACTIVE', - 'ENUM_DCN_NOT_ACTIVE', 'ENUM_DIO_DCN_ACTIVE_STATUS', - 'ENUM_DPG_BIT_DEPTH', 'ENUM_DPG_BIT_DEPTH_10BPC', - 'ENUM_DPG_BIT_DEPTH_12BPC', 'ENUM_DPG_BIT_DEPTH_6BPC', - 'ENUM_DPG_BIT_DEPTH_8BPC', 'ENUM_DPG_DISABLE', - 'ENUM_DPG_DYNAMIC_RANGE', 'ENUM_DPG_DYNAMIC_RANGE_CEA', - 'ENUM_DPG_DYNAMIC_RANGE_VESA', 'ENUM_DPG_EN', 'ENUM_DPG_ENABLE', - 'ENUM_DPG_FIELD_POLARITY', - 'ENUM_DPG_FIELD_POLARITY_TOP_EVEN_BOTTOM_ODD', - 'ENUM_DPG_FIELD_POLARITY_TOP_ODD_BOTTOM_EVEN', 'ENUM_DPG_MODE', - 'ENUM_DPG_MODE_HORIZONTAL_BAR', 'ENUM_DPG_MODE_RGB_COLOUR_BLOCK', - 'ENUM_DPG_MODE_RGB_DUAL_RAMP', 'ENUM_DPG_MODE_RGB_SINGLE_RAMP', - 'ENUM_DPG_MODE_RGB_XR_BIAS', 'ENUM_DPG_MODE_VERTICAL_BAR', - 'ENUM_DPG_MODE_YCBCR_601_COLOUR_BLOCK', - 'ENUM_DPG_MODE_YCBCR_709_COLOUR_BLOCK', - 'ENUM_DP_DPHY_SYM32_CRC_END_EVENT', - 'ENUM_DP_DPHY_SYM32_CRC_START_EVENT', - 'ENUM_DP_DPHY_SYM32_CRC_TAP_SOURCE', - 'ENUM_DP_DPHY_SYM32_CRC_USE_NUM_SYMBOLS', - 'ENUM_DP_DPHY_SYM32_ENABLE', 'ENUM_DP_DPHY_SYM32_ENCRYPT_TYPE', - 'ENUM_DP_DPHY_SYM32_MODE', 'ENUM_DP_DPHY_SYM32_NUM_LANES', - 'ENUM_DP_DPHY_SYM32_RATE_UPDATE_PENDING', - 'ENUM_DP_DPHY_SYM32_RESET', 'ENUM_DP_DPHY_SYM32_RESET_STATUS', - 'ENUM_DP_DPHY_SYM32_SAT_UPDATE', - 'ENUM_DP_DPHY_SYM32_SAT_UPDATE_PENDING', - 'ENUM_DP_DPHY_SYM32_STATUS', - 'ENUM_DP_DPHY_SYM32_STREAM_OVR_ENABLE', - 'ENUM_DP_DPHY_SYM32_STREAM_OVR_TYPE', - 'ENUM_DP_DPHY_SYM32_TP_PRBS_SEL', 'ENUM_DP_DPHY_SYM32_TP_SELECT', - 'ENUM_DP_SYM32_ENC_AUDIO_MUTE', - 'ENUM_DP_SYM32_ENC_CONTINUOUS_MODE', - 'ENUM_DP_SYM32_ENC_CRC_VALID', - 'ENUM_DP_SYM32_ENC_DP_COMPONENT_DEPTH', - 'ENUM_DP_SYM32_ENC_ENABLE', - 'ENUM_DP_SYM32_ENC_GSP_DEADLINE_MISSED', - 'ENUM_DP_SYM32_ENC_GSP_ONE_SHOT_TRIGGER_POSITION', - 'ENUM_DP_SYM32_ENC_GSP_PAYLOAD_SIZE', - 'ENUM_DP_SYM32_ENC_GSP_TRIGGER_PENDING', - 'ENUM_DP_SYM32_ENC_MEM_PWR_FORCE_ENUM', - 'ENUM_DP_SYM32_ENC_OVERFLOW_STATUS', 'ENUM_DP_SYM32_ENC_PENDING', - 'ENUM_DP_SYM32_ENC_PIXEL_ENCODING', - 'ENUM_DP_SYM32_ENC_PIXEL_ENCODING_TYPE', - 'ENUM_DP_SYM32_ENC_POWER_STATE_ENUM', 'ENUM_DP_SYM32_ENC_RESET', - 'ENUM_DP_SYM32_ENC_SDP_PRIORITY', - 'ENUM_DP_SYM32_ENC_SOF_REFERENCE', - 'ENUM_DP_SYM32_ENC_VID_STREAM_DEFER', 'ENUM_DSCRM_DISABLE', - 'ENUM_DSCRM_EN', 'ENUM_DSCRM_ENABLE', 'ENUM_NUM_SIMD_PER_CU', - 'ES_STAGE_DS', 'ES_STAGE_OFF', 'ES_STAGE_REAL', 'EXOKAY', - 'EXPANSION_MODE', 'EXPANSION_MODE_CONSERVATIVE', - 'EXPANSION_MODE_OPTIMAL', 'EXPANSION_MODE_ZERO', - 'EXPORT_2C_32BPC_AR', 'EXPORT_2C_32BPC_GR', 'EXPORT_4C_16BPC', - 'EXPORT_4C_32BPC', 'EXPORT_ANY_Z', 'EXPORT_GREATER_THAN_Z', - 'EXPORT_LESS_THAN_Z', 'EXPORT_RESERVED', 'F32_MES_PM4_PACKETS_H', - 'FAULT_FAIL', 'FAULT_ONE', 'FAULT_PASS', 'FAULT_ZERO', - 'FC_EYE_SELECTION_ENUM', 'FC_EYE_SELECTION_LEFT_EYE', - 'FC_EYE_SELECTION_RIGHT_EYE', 'FC_EYE_SELECTION_STEREO_DIS', - 'FC_FRAME_CAPTURE_RATE_ENUM', 'FC_FRAME_CAPTURE_RATE_FULL', - 'FC_FRAME_CAPTURE_RATE_HALF', 'FC_FRAME_CAPTURE_RATE_QUARTER', - 'FC_FRAME_CAPTURE_RATE_THIRD', 'FC_STEREO_EYE_POLARITY_ENUM', - 'FC_STEREO_EYE_POLARITY_LEFT', 'FC_STEREO_EYE_POLARITY_RIGHT', - 'FEC_ACTIVE_STATUS', 'FIX_S2_13', 'FIX_S3_12', 'FLIP_ANY_FRAME', - 'FLIP_LEFT_EYE', 'FLIP_RATE', 'FLIP_RATE_0', 'FLIP_RATE_1', - 'FLIP_RATE_2', 'FLIP_RATE_3', 'FLIP_RATE_4', 'FLIP_RATE_5', - 'FLIP_RATE_6', 'FLIP_RATE_7', 'FLIP_RIGHT_EYE', - 'FLUSH_AND_INV_CB_DATA_TS', 'FLUSH_AND_INV_CB_META', - 'FLUSH_AND_INV_CB_PIXEL_DATA', 'FLUSH_AND_INV_DB_DATA_TS', - 'FLUSH_AND_INV_DB_META', 'FLUSH_CONTROL_FLUSH_NOT_STARTED', - 'FLUSH_CONTROL_FLUSH_STARTED', 'FLUSH_DFSM', 'FLUSH_ES_OUTPUT', - 'FLUSH_HS_OUTPUT', 'FLUSH_SX_TS', 'FMTMEM_DISABLE_MEM_PWR_CTRL', - 'FMTMEM_ENABLE_MEM_PWR_CTRL', 'FMTMEM_FORCE_DEEP_SLEEP_REQUEST', - 'FMTMEM_FORCE_LIGHT_SLEEP_REQUEST', - 'FMTMEM_FORCE_SHUT_DOWN_REQUEST', 'FMTMEM_NO_FORCE_REQUEST', - 'FMTMEM_PWR_DIS_CTRL', 'FMTMEM_PWR_FORCE_CTRL', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Ei', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Fi', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_Gi', - 'FMT_BIT_DEPTH_CONTROL_25FRC_SEL_RESERVED', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_A', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_B', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_C', - 'FMT_BIT_DEPTH_CONTROL_50FRC_SEL_D', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_E', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_F', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_G', - 'FMT_BIT_DEPTH_CONTROL_75FRC_SEL_RESERVED', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_18BPP', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_24BPP', - 'FMT_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH_30BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_18BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_24BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH_30BPP', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL2', - 'FMT_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL_GREY_LEVEL4', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_18BPP', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_24BPP', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH_30BPP', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_ROUNDING', - 'FMT_BIT_DEPTH_CONTROL_TRUNCATE_MODE_TRUNCATION', - 'FMT_CLAMP_CNTL_COLOR_FORMAT', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_10BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_12BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_6BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_8BPC', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_PROGRAMMABLE', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED1', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED2', - 'FMT_CLAMP_CNTL_COLOR_FORMAT_RESERVED3', - 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS', - 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_DISABLE', - 'FMT_CONTROL_CBCR_BIT_REDUCTION_BYPASS_ENABLE', - 'FMT_CONTROL_PIXEL_ENCODING', - 'FMT_CONTROL_PIXEL_ENCODING_RESERVED', - 'FMT_CONTROL_PIXEL_ENCODING_RGB444_OR_YCBCR444', - 'FMT_CONTROL_PIXEL_ENCODING_YCBCR420', - 'FMT_CONTROL_PIXEL_ENCODING_YCBCR422', - 'FMT_CONTROL_SUBSAMPLING_MODE', - 'FMT_CONTROL_SUBSAMPLING_MODE_AVERAGE', - 'FMT_CONTROL_SUBSAMPLING_MODE_DROP', - 'FMT_CONTROL_SUBSAMPLING_MOME_3_TAP', - 'FMT_CONTROL_SUBSAMPLING_MOME_RESERVED', - 'FMT_CONTROL_SUBSAMPLING_ORDER', - 'FMT_CONTROL_SUBSAMPLING_ORDER_CB_BEFORE_CR', - 'FMT_CONTROL_SUBSAMPLING_ORDER_CR_BEFORE_CB', - 'FMT_DEBUG_CNTL_COLOR_SELECT', 'FMT_DEBUG_CNTL_COLOR_SELECT_BLUE', - 'FMT_DEBUG_CNTL_COLOR_SELECT_GREEN', - 'FMT_DEBUG_CNTL_COLOR_SELECT_RED1', - 'FMT_DEBUG_CNTL_COLOR_SELECT_RED2', 'FMT_DYNAMIC_EXP_MODE', - 'FMT_DYNAMIC_EXP_MODE_10to12', 'FMT_DYNAMIC_EXP_MODE_8to12', - 'FMT_FRAME_RANDOM_ENABLE_CONTROL', - 'FMT_FRAME_RANDOM_ENABLE_RESET_EACH_FRAME', - 'FMT_FRAME_RANDOM_ENABLE_RESET_ONCE', 'FMT_POWER_STATE_ENUM', - 'FMT_POWER_STATE_ENUM_DS', 'FMT_POWER_STATE_ENUM_LS', - 'FMT_POWER_STATE_ENUM_ON', 'FMT_POWER_STATE_ENUM_SD', - 'FMT_RGB_RANDOM_ENABLE_CONTROL', - 'FMT_RGB_RANDOM_ENABLE_CONTROL_DISABLE', - 'FMT_RGB_RANDOM_ENABLE_CONTROL_ENABLE', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_1', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_2', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_CONTROL', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_NO_SWAP', - 'FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP_RESERVED', - 'FMT_SPATIAL_DITHER_MODE', 'FMT_SPATIAL_DITHER_MODE_0', - 'FMT_SPATIAL_DITHER_MODE_1', 'FMT_SPATIAL_DITHER_MODE_2', - 'FMT_SPATIAL_DITHER_MODE_3', 'FMT_STEREOSYNC_OVERRIDE_CONTROL', - 'FMT_STEREOSYNC_OVERRIDE_CONTROL_0', - 'FMT_STEREOSYNC_OVERRIDE_CONTROL_1', - 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0', - 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_BGR', - 'FMT_TEMPORAL_DITHER_PATTERN_CONTROL_RGB1_BGR0_RGB', 'FORCE_00', - 'FORCE_BINNING_ON', 'FORCE_DEEP_SLEEP_REQUEST', 'FORCE_DISABLE', - 'FORCE_DISABLE_CLOCK', 'FORCE_EARLY_Z', 'FORCE_ENABLE', - 'FORCE_FF', 'FORCE_LATE_Z', 'FORCE_LIGHT_SLEEP_REQ', - 'FORCE_LIGHT_SLEEP_REQUEST', 'FORCE_OFF', - 'FORCE_ONE_ROW_FOR_FRAME', 'FORCE_ONE_ROW_FOR_FRAME_0', - 'FORCE_ONE_ROW_FOR_FRAME_1', 'FORCE_OPT_AUTO', - 'FORCE_OPT_DISABLE', 'FORCE_OPT_ENABLE_IF_SRC_ARGB_0', - 'FORCE_OPT_ENABLE_IF_SRC_ARGB_1', 'FORCE_OPT_ENABLE_IF_SRC_A_0', - 'FORCE_OPT_ENABLE_IF_SRC_A_1', 'FORCE_OPT_ENABLE_IF_SRC_RGB_0', - 'FORCE_OPT_ENABLE_IF_SRC_RGB_1', 'FORCE_RESERVED', 'FORCE_RE_Z', - 'FORCE_SENT', 'FORCE_SHUT_DOWN_REQUEST', 'FORCE_SUMM_BOTH', - 'FORCE_SUMM_MAXZ', 'FORCE_SUMM_MINZ', 'FORCE_SUMM_OFF', - 'FORCE_THE_CLOCK_DISABLED', 'FORMAT_CROSSBAR', - 'FORMAT_CROSSBAR_B', 'FORMAT_CROSSBAR_G', 'FORMAT_CROSSBAR_R', - 'FRAG_ALWAYS', 'FRAG_EQUAL', 'FRAG_GEQUAL', 'FRAG_GREATER', - 'FRAG_LEQUAL', 'FRAG_LESS', 'FRAG_NEVER', 'FRAG_NOTEQUAL', - 'FRAME_TMZ', 'FUSE_BASE', 'FUSE_BASE__INST0_SEG0', - 'FUSE_BASE__INST0_SEG1', 'FUSE_BASE__INST0_SEG2', - 'FUSE_BASE__INST0_SEG3', 'FUSE_BASE__INST0_SEG4', - 'FUSE_BASE__INST1_SEG0', 'FUSE_BASE__INST1_SEG1', - 'FUSE_BASE__INST1_SEG2', 'FUSE_BASE__INST1_SEG3', - 'FUSE_BASE__INST1_SEG4', 'FUSE_BASE__INST2_SEG0', - 'FUSE_BASE__INST2_SEG1', 'FUSE_BASE__INST2_SEG2', - 'FUSE_BASE__INST2_SEG3', 'FUSE_BASE__INST2_SEG4', - 'FUSE_BASE__INST3_SEG0', 'FUSE_BASE__INST3_SEG1', - 'FUSE_BASE__INST3_SEG2', 'FUSE_BASE__INST3_SEG3', - 'FUSE_BASE__INST3_SEG4', 'FUSE_BASE__INST4_SEG0', - 'FUSE_BASE__INST4_SEG1', 'FUSE_BASE__INST4_SEG2', - 'FUSE_BASE__INST4_SEG3', 'FUSE_BASE__INST4_SEG4', - 'FUSE_BASE__INST5_SEG0', 'FUSE_BASE__INST5_SEG1', - 'FUSE_BASE__INST5_SEG2', 'FUSE_BASE__INST5_SEG3', - 'FUSE_BASE__INST5_SEG4', 'FUSE_BASE__INST6_SEG0', - 'FUSE_BASE__INST6_SEG1', 'FUSE_BASE__INST6_SEG2', - 'FUSE_BASE__INST6_SEG3', 'FUSE_BASE__INST6_SEG4', 'ForceControl', - 'GAMUT_COEF', 'GAMUT_COEF_B', 'GATCL1RequestType', - 'GATCL1_TYPE_BYPASS', 'GATCL1_TYPE_NORMAL', - 'GATCL1_TYPE_SHOOTDOWN', 'GB_EDC_DED_MODE', - 'GB_EDC_DED_MODE_HALT', 'GB_EDC_DED_MODE_INT_HALT', - 'GB_EDC_DED_MODE_LOG', 'GB_TILING_CONFIG_MACROTABLE_SIZE', - 'GB_TILING_CONFIG_TABLE_SIZE', 'GCRPerfSel', - 'GCR_PERF_SEL_ALL_REQ', - 'GCR_PERF_SEL_CLK_FOR_ALL_OUTSTANDING_REQ', - 'GCR_PERF_SEL_CLK_FOR_PHY_OUTSTANDING_REQ', - 'GCR_PERF_SEL_CLK_FOR_VIRT_OUTSTANDING_REQ', - 'GCR_PERF_SEL_CPC_ALL_REQ', 'GCR_PERF_SEL_CPC_GL1_ALL_REQ', - 'GCR_PERF_SEL_CPC_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPC_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPC_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPC_GL1_RANGE_REQ', 'GCR_PERF_SEL_CPC_GL2_ALL_REQ', - 'GCR_PERF_SEL_CPC_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPC_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPC_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPC_GL2_RANGE_REQ', 'GCR_PERF_SEL_CPC_METADATA_REQ', - 'GCR_PERF_SEL_CPC_SQC_DATA_REQ', 'GCR_PERF_SEL_CPC_SQC_INST_REQ', - 'GCR_PERF_SEL_CPC_TCP_REQ', - 'GCR_PERF_SEL_CPC_TCP_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_CPF_ALL_REQ', 'GCR_PERF_SEL_CPF_GL1_ALL_REQ', - 'GCR_PERF_SEL_CPF_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPF_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPF_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPF_GL1_RANGE_REQ', 'GCR_PERF_SEL_CPF_GL2_ALL_REQ', - 'GCR_PERF_SEL_CPF_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPF_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPF_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPF_GL2_RANGE_REQ', 'GCR_PERF_SEL_CPF_METADATA_REQ', - 'GCR_PERF_SEL_CPF_SQC_DATA_REQ', 'GCR_PERF_SEL_CPF_SQC_INST_REQ', - 'GCR_PERF_SEL_CPF_TCP_REQ', - 'GCR_PERF_SEL_CPF_TCP_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_CPG_ALL_REQ', 'GCR_PERF_SEL_CPG_GL1_ALL_REQ', - 'GCR_PERF_SEL_CPG_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPG_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPG_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPG_GL1_RANGE_REQ', 'GCR_PERF_SEL_CPG_GL2_ALL_REQ', - 'GCR_PERF_SEL_CPG_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_CPG_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_CPG_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_CPG_GL2_RANGE_REQ', 'GCR_PERF_SEL_CPG_METADATA_REQ', - 'GCR_PERF_SEL_CPG_SQC_DATA_REQ', 'GCR_PERF_SEL_CPG_SQC_INST_REQ', - 'GCR_PERF_SEL_CPG_TCP_REQ', - 'GCR_PERF_SEL_CPG_TCP_TLB_SHOOTDOWN_REQ', 'GCR_PERF_SEL_NONE', - 'GCR_PERF_SEL_PHY_REQ', 'GCR_PERF_SEL_PIO_ALL_REQ', - 'GCR_PERF_SEL_PIO_GL1_ALL_REQ', - 'GCR_PERF_SEL_PIO_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_PIO_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_PIO_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_PIO_GL1_RANGE_REQ', 'GCR_PERF_SEL_PIO_GL2_ALL_REQ', - 'GCR_PERF_SEL_PIO_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_PIO_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_PIO_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_PIO_GL2_RANGE_REQ', 'GCR_PERF_SEL_PIO_METADATA_REQ', - 'GCR_PERF_SEL_PIO_SQC_DATA_REQ', 'GCR_PERF_SEL_PIO_SQC_INST_REQ', - 'GCR_PERF_SEL_PIO_TCP_REQ', - 'GCR_PERF_SEL_PIO_TCP_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_PM_ALL_REQ', 'GCR_PERF_SEL_PM_GL1_ALL_REQ', - 'GCR_PERF_SEL_PM_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_PM_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_PM_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_PM_GL1_RANGE_REQ', 'GCR_PERF_SEL_PM_GL2_ALL_REQ', - 'GCR_PERF_SEL_PM_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_PM_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_PM_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_PM_GL2_RANGE_REQ', 'GCR_PERF_SEL_PM_METADATA_REQ', - 'GCR_PERF_SEL_PM_SQC_DATA_REQ', 'GCR_PERF_SEL_PM_SQC_INST_REQ', - 'GCR_PERF_SEL_PM_TCP_REQ', - 'GCR_PERF_SEL_PM_TCP_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_RLC_ALL_REQ', 'GCR_PERF_SEL_RLC_GL1_ALL_REQ', - 'GCR_PERF_SEL_RLC_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_RLC_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_RLC_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_RLC_GL1_RANGE_REQ', 'GCR_PERF_SEL_RLC_GL2_ALL_REQ', - 'GCR_PERF_SEL_RLC_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_RLC_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_RLC_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_RLC_GL2_RANGE_REQ', 'GCR_PERF_SEL_RLC_METADATA_REQ', - 'GCR_PERF_SEL_RLC_SQC_DATA_REQ', 'GCR_PERF_SEL_RLC_SQC_INST_REQ', - 'GCR_PERF_SEL_RLC_TCP_REQ', - 'GCR_PERF_SEL_RLC_TCP_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_SDMA0_ALL_REQ', 'GCR_PERF_SEL_SDMA0_GL1_ALL_REQ', - 'GCR_PERF_SEL_SDMA0_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL1_RANGE_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_ALL_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_SDMA0_GL2_RANGE_REQ', - 'GCR_PERF_SEL_SDMA0_METADATA_REQ', - 'GCR_PERF_SEL_SDMA0_SQC_DATA_REQ', - 'GCR_PERF_SEL_SDMA0_SQC_INST_REQ', 'GCR_PERF_SEL_SDMA0_TCP_REQ', - 'GCR_PERF_SEL_SDMA0_TCP_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_SDMA1_ALL_REQ', 'GCR_PERF_SEL_SDMA1_GL1_ALL_REQ', - 'GCR_PERF_SEL_SDMA1_GL1_RANGE_16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL1_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL1_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL1_RANGE_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_ALL_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_RANGE_16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_RANGE_GT16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_RANGE_LT16K_REQ', - 'GCR_PERF_SEL_SDMA1_GL2_RANGE_REQ', - 'GCR_PERF_SEL_SDMA1_METADATA_REQ', - 'GCR_PERF_SEL_SDMA1_SQC_DATA_REQ', - 'GCR_PERF_SEL_SDMA1_SQC_INST_REQ', 'GCR_PERF_SEL_SDMA1_TCP_REQ', - 'GCR_PERF_SEL_SDMA1_TCP_TLB_SHOOTDOWN_REQ', - 'GCR_PERF_SEL_TLB_SHOOTDOWN_HEAVY_REQ', - 'GCR_PERF_SEL_TLB_SHOOTDOWN_LIGHT_REQ', - 'GCR_PERF_SEL_UTCL2_FILTERED_RET', - 'GCR_PERF_SEL_UTCL2_INFLIGHT_REQ', - 'GCR_PERF_SEL_UTCL2_OUT_OF_CREDIT_EVENT', - 'GCR_PERF_SEL_UTCL2_REQ', 'GCR_PERF_SEL_UTCL2_RET', - 'GCR_PERF_SEL_VIRT_REQ', 'GC_BASE', 'GC_BASE__INST0_SEG0', + 'DIO_BASE__INST6_SEG4', 'DPCS_BASE', 'DPCS_BASE__INST0_SEG0', + 'DPCS_BASE__INST0_SEG1', 'DPCS_BASE__INST0_SEG2', + 'DPCS_BASE__INST0_SEG3', 'DPCS_BASE__INST0_SEG4', + 'DPCS_BASE__INST1_SEG0', 'DPCS_BASE__INST1_SEG1', + 'DPCS_BASE__INST1_SEG2', 'DPCS_BASE__INST1_SEG3', + 'DPCS_BASE__INST1_SEG4', 'DPCS_BASE__INST2_SEG0', + 'DPCS_BASE__INST2_SEG1', 'DPCS_BASE__INST2_SEG2', + 'DPCS_BASE__INST2_SEG3', 'DPCS_BASE__INST2_SEG4', + 'DPCS_BASE__INST3_SEG0', 'DPCS_BASE__INST3_SEG1', + 'DPCS_BASE__INST3_SEG2', 'DPCS_BASE__INST3_SEG3', + 'DPCS_BASE__INST3_SEG4', 'DPCS_BASE__INST4_SEG0', + 'DPCS_BASE__INST4_SEG1', 'DPCS_BASE__INST4_SEG2', + 'DPCS_BASE__INST4_SEG3', 'DPCS_BASE__INST4_SEG4', + 'DPCS_BASE__INST5_SEG0', 'DPCS_BASE__INST5_SEG1', + 'DPCS_BASE__INST5_SEG2', 'DPCS_BASE__INST5_SEG3', + 'DPCS_BASE__INST5_SEG4', 'DPCS_BASE__INST6_SEG0', + 'DPCS_BASE__INST6_SEG1', 'DPCS_BASE__INST6_SEG2', + 'DPCS_BASE__INST6_SEG3', 'DPCS_BASE__INST6_SEG4', 'FRAME_TMZ', + 'FUSE_BASE', 'FUSE_BASE__INST0_SEG0', 'FUSE_BASE__INST0_SEG1', + 'FUSE_BASE__INST0_SEG2', 'FUSE_BASE__INST0_SEG3', + 'FUSE_BASE__INST0_SEG4', 'FUSE_BASE__INST1_SEG0', + 'FUSE_BASE__INST1_SEG1', 'FUSE_BASE__INST1_SEG2', + 'FUSE_BASE__INST1_SEG3', 'FUSE_BASE__INST1_SEG4', + 'FUSE_BASE__INST2_SEG0', 'FUSE_BASE__INST2_SEG1', + 'FUSE_BASE__INST2_SEG2', 'FUSE_BASE__INST2_SEG3', + 'FUSE_BASE__INST2_SEG4', 'FUSE_BASE__INST3_SEG0', + 'FUSE_BASE__INST3_SEG1', 'FUSE_BASE__INST3_SEG2', + 'FUSE_BASE__INST3_SEG3', 'FUSE_BASE__INST3_SEG4', + 'FUSE_BASE__INST4_SEG0', 'FUSE_BASE__INST4_SEG1', + 'FUSE_BASE__INST4_SEG2', 'FUSE_BASE__INST4_SEG3', + 'FUSE_BASE__INST4_SEG4', 'FUSE_BASE__INST5_SEG0', + 'FUSE_BASE__INST5_SEG1', 'FUSE_BASE__INST5_SEG2', + 'FUSE_BASE__INST5_SEG3', 'FUSE_BASE__INST5_SEG4', + 'FUSE_BASE__INST6_SEG0', 'FUSE_BASE__INST6_SEG1', + 'FUSE_BASE__INST6_SEG2', 'FUSE_BASE__INST6_SEG3', + 'FUSE_BASE__INST6_SEG4', 'GC_BASE', 'GC_BASE__INST0_SEG0', 'GC_BASE__INST0_SEG1', 'GC_BASE__INST0_SEG2', 'GC_BASE__INST0_SEG3', 'GC_BASE__INST0_SEG4', 'GC_BASE__INST1_SEG0', 'GC_BASE__INST1_SEG1', @@ -64833,712 +13963,25 @@ __all__ = \ 'GC_BASE__INST5_SEG2', 'GC_BASE__INST5_SEG3', 'GC_BASE__INST5_SEG4', 'GC_BASE__INST6_SEG0', 'GC_BASE__INST6_SEG1', 'GC_BASE__INST6_SEG2', - 'GC_BASE__INST6_SEG3', 'GC_BASE__INST6_SEG4', - 'GDS_PERFCOUNT_SELECT', 'GDS_PERF_SEL_GWS_BYPASS', - 'GDS_PERF_SEL_GWS_RELEASED', 'GDS_PERF_SEL_SE0_2COMP_REQ', - 'GDS_PERF_SEL_SE0_GDS_ATOM_OP', 'GDS_PERF_SEL_SE0_GDS_BYTE_OP', - 'GDS_PERF_SEL_SE0_GDS_CMPXCH_OP', 'GDS_PERF_SEL_SE0_GDS_RD_OP', - 'GDS_PERF_SEL_SE0_GDS_REL_OP', 'GDS_PERF_SEL_SE0_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE0_GDS_STALL_BY_ORD', 'GDS_PERF_SEL_SE0_GDS_WR_OP', - 'GDS_PERF_SEL_SE0_NORET', 'GDS_PERF_SEL_SE0_ORD_CNT', - 'GDS_PERF_SEL_SE0_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE0_RET', - 'GDS_PERF_SEL_SE1_2COMP_REQ', 'GDS_PERF_SEL_SE1_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE1_GDS_BYTE_OP', 'GDS_PERF_SEL_SE1_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE1_GDS_RD_OP', 'GDS_PERF_SEL_SE1_GDS_REL_OP', - 'GDS_PERF_SEL_SE1_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE1_GDS_STALL_BY_ORD', 'GDS_PERF_SEL_SE1_GDS_WR_OP', - 'GDS_PERF_SEL_SE1_NORET', 'GDS_PERF_SEL_SE1_ORD_CNT', - 'GDS_PERF_SEL_SE1_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE1_RET', - 'GDS_PERF_SEL_SE2_2COMP_REQ', 'GDS_PERF_SEL_SE2_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE2_GDS_BYTE_OP', 'GDS_PERF_SEL_SE2_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE2_GDS_RD_OP', 'GDS_PERF_SEL_SE2_GDS_REL_OP', - 'GDS_PERF_SEL_SE2_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE2_GDS_STALL_BY_ORD', 'GDS_PERF_SEL_SE2_GDS_WR_OP', - 'GDS_PERF_SEL_SE2_NORET', 'GDS_PERF_SEL_SE2_ORD_CNT', - 'GDS_PERF_SEL_SE2_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE2_RET', - 'GDS_PERF_SEL_SE3_2COMP_REQ', 'GDS_PERF_SEL_SE3_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE3_GDS_BYTE_OP', 'GDS_PERF_SEL_SE3_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE3_GDS_RD_OP', 'GDS_PERF_SEL_SE3_GDS_REL_OP', - 'GDS_PERF_SEL_SE3_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE3_GDS_STALL_BY_ORD', 'GDS_PERF_SEL_SE3_GDS_WR_OP', - 'GDS_PERF_SEL_SE3_NORET', 'GDS_PERF_SEL_SE3_ORD_CNT', - 'GDS_PERF_SEL_SE3_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE3_RET', - 'GDS_PERF_SEL_SE4_2COMP_REQ', 'GDS_PERF_SEL_SE4_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE4_GDS_BYTE_OP', 'GDS_PERF_SEL_SE4_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE4_GDS_RD_OP', 'GDS_PERF_SEL_SE4_GDS_REL_OP', - 'GDS_PERF_SEL_SE4_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE4_GDS_STALL_BY_ORD', 'GDS_PERF_SEL_SE4_GDS_WR_OP', - 'GDS_PERF_SEL_SE4_NORET', 'GDS_PERF_SEL_SE4_ORD_CNT', - 'GDS_PERF_SEL_SE4_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE4_RET', - 'GDS_PERF_SEL_SE5_2COMP_REQ', 'GDS_PERF_SEL_SE5_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE5_GDS_BYTE_OP', 'GDS_PERF_SEL_SE5_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE5_GDS_RD_OP', 'GDS_PERF_SEL_SE5_GDS_REL_OP', - 'GDS_PERF_SEL_SE5_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE5_GDS_STALL_BY_ORD', 'GDS_PERF_SEL_SE5_GDS_WR_OP', - 'GDS_PERF_SEL_SE5_NORET', 'GDS_PERF_SEL_SE5_ORD_CNT', - 'GDS_PERF_SEL_SE5_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE5_RET', - 'GDS_PERF_SEL_SE6_2COMP_REQ', 'GDS_PERF_SEL_SE6_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE6_GDS_BYTE_OP', 'GDS_PERF_SEL_SE6_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE6_GDS_RD_OP', 'GDS_PERF_SEL_SE6_GDS_REL_OP', - 'GDS_PERF_SEL_SE6_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE6_GDS_STALL_BY_ORD', 'GDS_PERF_SEL_SE6_GDS_WR_OP', - 'GDS_PERF_SEL_SE6_NORET', 'GDS_PERF_SEL_SE6_ORD_CNT', - 'GDS_PERF_SEL_SE6_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE6_RET', - 'GDS_PERF_SEL_SE7_2COMP_REQ', 'GDS_PERF_SEL_SE7_GDS_ATOM_OP', - 'GDS_PERF_SEL_SE7_GDS_BYTE_OP', 'GDS_PERF_SEL_SE7_GDS_CMPXCH_OP', - 'GDS_PERF_SEL_SE7_GDS_RD_OP', 'GDS_PERF_SEL_SE7_GDS_REL_OP', - 'GDS_PERF_SEL_SE7_GDS_SHORT_OP', - 'GDS_PERF_SEL_SE7_GDS_STALL_BY_ORD', 'GDS_PERF_SEL_SE7_GDS_WR_OP', - 'GDS_PERF_SEL_SE7_NORET', 'GDS_PERF_SEL_SE7_ORD_CNT', - 'GDS_PERF_SEL_SE7_ORD_WAVE_VALID', 'GDS_PERF_SEL_SE7_RET', - 'GDS_PERF_SEL_WBUF_WR', 'GDS_PERF_SEL_WR_COMP', - 'GE1_PERFCOUNT_SELECT', 'GE2_DIST_PERFCOUNT_SELECT', - 'GE2_SE_PERFCOUNT_SELECT', - 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE', - 'GENERIC_AZ_CONTROLLER_REGISTER_DISABLE_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_CONTROL_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_ENABLE_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_NOT_SET_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_RESERVED', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET', - 'GENERIC_AZ_CONTROLLER_REGISTER_STATUS_SET_RESERVED', - 'GENERIC_STEREOSYNC_SEL', 'GENERIC_STEREOSYNC_SEL_D1', - 'GENERIC_STEREOSYNC_SEL_D2', 'GENERIC_STEREOSYNC_SEL_D3', - 'GENERIC_STEREOSYNC_SEL_D4', 'GENERIC_STEREOSYNC_SEL_RESERVED', - 'GEN_ONE', 'GEN_RESERVED', 'GEN_TWO', 'GEN_ZERO', - 'GL0V_CACHE_POLICIES', 'GL0V_CACHE_POLICY_HIT_EVICT', - 'GL0V_CACHE_POLICY_HIT_LRU', 'GL0V_CACHE_POLICY_MISS_EVICT', - 'GL0V_CACHE_POLICY_MISS_LRU', 'GL1A_PERF_SEL', - 'GL1A_PERF_SEL_ARB_REQUESTS', 'GL1A_PERF_SEL_BURST_COUNT_GL1C0', - 'GL1A_PERF_SEL_BURST_COUNT_GL1C1', - 'GL1A_PERF_SEL_BURST_COUNT_GL1C2', - 'GL1A_PERF_SEL_BURST_COUNT_GL1C3', 'GL1A_PERF_SEL_BUSY', - 'GL1A_PERF_SEL_CYCLE', 'GL1A_PERF_SEL_REQUEST_GL1C0', - 'GL1A_PERF_SEL_REQUEST_GL1C1', 'GL1A_PERF_SEL_REQUEST_GL1C2', - 'GL1A_PERF_SEL_REQUEST_GL1C3', 'GL1A_PERF_SEL_REQ_INFLIGHT_LEVEL', - 'GL1A_PERF_SEL_STALL_GL1C0', 'GL1A_PERF_SEL_STALL_GL1C1', - 'GL1A_PERF_SEL_STALL_GL1C2', 'GL1A_PERF_SEL_STALL_GL1C3', - 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C0', - 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C1', - 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C2', - 'GL1A_PERF_SEL_STALL_RET_CONFLICT_GL1C3', - 'GL1A_PERF_SEL_WDS_32B_GL1C0', 'GL1A_PERF_SEL_WDS_32B_GL1C1', - 'GL1A_PERF_SEL_WDS_32B_GL1C2', 'GL1A_PERF_SEL_WDS_32B_GL1C3', - 'GL1C_PERF_SEL', 'GL1C_PERF_SEL_ARB_RET_LEVEL', - 'GL1C_PERF_SEL_BUSY', 'GL1C_PERF_SEL_CLIENT_UTCL0_INFLIGHT', - 'GL1C_PERF_SEL_CYCLE', 'GL1C_PERF_SEL_GL2_REQ_PREFETCH', - 'GL1C_PERF_SEL_GL2_REQ_READ', 'GL1C_PERF_SEL_GL2_REQ_READ_128B', - 'GL1C_PERF_SEL_GL2_REQ_READ_32B', - 'GL1C_PERF_SEL_GL2_REQ_READ_64B', - 'GL1C_PERF_SEL_GL2_REQ_READ_LATENCY', - 'GL1C_PERF_SEL_GL2_REQ_WRITE', 'GL1C_PERF_SEL_GL2_REQ_WRITE_32B', - 'GL1C_PERF_SEL_GL2_REQ_WRITE_64B', - 'GL1C_PERF_SEL_GL2_REQ_WRITE_LATENCY', 'GL1C_PERF_SEL_REQ', - 'GL1C_PERF_SEL_REQ_ATOMIC_WITHOUT_RET', - 'GL1C_PERF_SEL_REQ_ATOMIC_WITH_RET', 'GL1C_PERF_SEL_REQ_CLIENT0', - 'GL1C_PERF_SEL_REQ_CLIENT1', 'GL1C_PERF_SEL_REQ_CLIENT10', - 'GL1C_PERF_SEL_REQ_CLIENT11', 'GL1C_PERF_SEL_REQ_CLIENT12', - 'GL1C_PERF_SEL_REQ_CLIENT13', 'GL1C_PERF_SEL_REQ_CLIENT14', - 'GL1C_PERF_SEL_REQ_CLIENT15', 'GL1C_PERF_SEL_REQ_CLIENT16', - 'GL1C_PERF_SEL_REQ_CLIENT17', 'GL1C_PERF_SEL_REQ_CLIENT18', - 'GL1C_PERF_SEL_REQ_CLIENT19', 'GL1C_PERF_SEL_REQ_CLIENT2', - 'GL1C_PERF_SEL_REQ_CLIENT20', 'GL1C_PERF_SEL_REQ_CLIENT21', - 'GL1C_PERF_SEL_REQ_CLIENT22', 'GL1C_PERF_SEL_REQ_CLIENT23', - 'GL1C_PERF_SEL_REQ_CLIENT24', 'GL1C_PERF_SEL_REQ_CLIENT25', - 'GL1C_PERF_SEL_REQ_CLIENT26', 'GL1C_PERF_SEL_REQ_CLIENT27', - 'GL1C_PERF_SEL_REQ_CLIENT3', 'GL1C_PERF_SEL_REQ_CLIENT4', - 'GL1C_PERF_SEL_REQ_CLIENT5', 'GL1C_PERF_SEL_REQ_CLIENT6', - 'GL1C_PERF_SEL_REQ_CLIENT7', 'GL1C_PERF_SEL_REQ_CLIENT8', - 'GL1C_PERF_SEL_REQ_CLIENT9', 'GL1C_PERF_SEL_REQ_MISS', - 'GL1C_PERF_SEL_REQ_NOP_ACK', 'GL1C_PERF_SEL_REQ_NOP_RTN0', - 'GL1C_PERF_SEL_REQ_READ', 'GL1C_PERF_SEL_REQ_READ_128B', - 'GL1C_PERF_SEL_REQ_READ_32B', 'GL1C_PERF_SEL_REQ_READ_64B', - 'GL1C_PERF_SEL_REQ_READ_POLICY_HIT_EVICT', - 'GL1C_PERF_SEL_REQ_READ_POLICY_HIT_LRU', - 'GL1C_PERF_SEL_REQ_READ_POLICY_MISS_EVICT', - 'GL1C_PERF_SEL_REQ_SHADER_INV', 'GL1C_PERF_SEL_REQ_WRITE', - 'GL1C_PERF_SEL_REQ_WRITE_32B', 'GL1C_PERF_SEL_REQ_WRITE_64B', - 'GL1C_PERF_SEL_STALL_GCR_INV', 'GL1C_PERF_SEL_STALL_GL2_GL1', - 'GL1C_PERF_SEL_STALL_LFIFO_FULL', - 'GL1C_PERF_SEL_STALL_NOTHING_REPLACEABLE', - 'GL1C_PERF_SEL_STALL_NO_AVAILABLE_ACK_ALLOC', - 'GL1C_PERF_SEL_STALL_VM', 'GL1C_PERF_SEL_STARVE', - 'GL1C_PERF_SEL_UTCL0_INTERNAL_RETRY_REQ', - 'GL1C_PERF_SEL_UTCL0_LFIFO_FULL', - 'GL1C_PERF_SEL_UTCL0_MISS_UNDER_MISS', - 'GL1C_PERF_SEL_UTCL0_PERMISSION_MISS', - 'GL1C_PERF_SEL_UTCL0_REQUEST', - 'GL1C_PERF_SEL_UTCL0_STALL_INFLIGHT_MAX', - 'GL1C_PERF_SEL_UTCL0_STALL_LFIFO_NOT_RES', - 'GL1C_PERF_SEL_UTCL0_STALL_LRU_INFLIGHT', - 'GL1C_PERF_SEL_UTCL0_STALL_MISSFIFO_FULL', - 'GL1C_PERF_SEL_UTCL0_STALL_MULTI_MISS', - 'GL1C_PERF_SEL_UTCL0_STALL_UTCL1_REQ_OUT_OF_CREDITS', - 'GL1C_PERF_SEL_UTCL0_TRANSLATION_HIT', - 'GL1C_PERF_SEL_UTCL0_TRANSLATION_MISS', - 'GL1C_PERF_SEL_UTCL0_UTCL1_INFLIGHT', - 'GL1C_PERF_SEL_UTCL0_UTCL1_PERM_FAULT', - 'GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_NO_RETRY_FAULT', - 'GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_PRT_FAULT', - 'GL1C_PERF_SEL_UTCL0_UTCL1_XNACK_RETRY_FAULT', - 'GL1H_REQ_PERF_SEL', 'GL1H_REQ_PERF_SEL_ARB_REQUESTS', - 'GL1H_REQ_PERF_SEL_BURST_COUNT_GL1_0', - 'GL1H_REQ_PERF_SEL_BURST_COUNT_GL1_1', 'GL1H_REQ_PERF_SEL_BUSY', - 'GL1H_REQ_PERF_SEL_CYCLE', 'GL1H_REQ_PERF_SEL_REQUEST_GL1_0', - 'GL1H_REQ_PERF_SEL_REQUEST_GL1_1', - 'GL1H_REQ_PERF_SEL_REQ_INFLIGHT_LEVEL', - 'GL1H_REQ_PERF_SEL_STALL_GL1_0', 'GL1H_REQ_PERF_SEL_STALL_GL1_1', - 'GL1H_REQ_PERF_SEL_WDS_32B_GL1_0', - 'GL1H_REQ_PERF_SEL_WDS_32B_GL1_1', 'GL1_CACHE_POLICIES', - 'GL1_CACHE_POLICY_HIT_EVICT', 'GL1_CACHE_POLICY_HIT_LRU', - 'GL1_CACHE_POLICY_MISS_EVICT', 'GL1_CACHE_POLICY_MISS_LRU', - 'GL1_CACHE_STORE_POLICIES', 'GL1_CACHE_STORE_POLICY_BYPASS', - 'GL2A_PERF_SEL', 'GL2A_PERF_SEL_BUSY', 'GL2A_PERF_SEL_CYCLE', - 'GL2A_PERF_SEL_NONE', 'GL2A_PERF_SEL_REQ_BURST_CLIENT0', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT1', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT10', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT11', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT12', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT13', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT14', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT15', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT2', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT3', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT4', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT5', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT6', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT7', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT8', - 'GL2A_PERF_SEL_REQ_BURST_CLIENT9', - 'GL2A_PERF_SEL_REQ_BURST_GL2C0', 'GL2A_PERF_SEL_REQ_BURST_GL2C1', - 'GL2A_PERF_SEL_REQ_BURST_GL2C2', 'GL2A_PERF_SEL_REQ_BURST_GL2C3', - 'GL2A_PERF_SEL_REQ_BURST_GL2C4', 'GL2A_PERF_SEL_REQ_BURST_GL2C5', - 'GL2A_PERF_SEL_REQ_BURST_GL2C6', 'GL2A_PERF_SEL_REQ_BURST_GL2C7', - 'GL2A_PERF_SEL_REQ_GL2C0', 'GL2A_PERF_SEL_REQ_GL2C1', - 'GL2A_PERF_SEL_REQ_GL2C2', 'GL2A_PERF_SEL_REQ_GL2C3', - 'GL2A_PERF_SEL_REQ_GL2C4', 'GL2A_PERF_SEL_REQ_GL2C5', - 'GL2A_PERF_SEL_REQ_GL2C6', 'GL2A_PERF_SEL_REQ_GL2C7', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C0', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C1', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C2', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C3', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C4', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C5', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C6', - 'GL2A_PERF_SEL_REQ_HI_PRIO_GL2C7', - 'GL2A_PERF_SEL_REQ_STALL_GL2C0', 'GL2A_PERF_SEL_REQ_STALL_GL2C1', - 'GL2A_PERF_SEL_REQ_STALL_GL2C2', 'GL2A_PERF_SEL_REQ_STALL_GL2C3', - 'GL2A_PERF_SEL_REQ_STALL_GL2C4', 'GL2A_PERF_SEL_REQ_STALL_GL2C5', - 'GL2A_PERF_SEL_REQ_STALL_GL2C6', 'GL2A_PERF_SEL_REQ_STALL_GL2C7', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT0', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT1', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT10', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT11', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT12', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT13', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT14', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT15', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT2', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT3', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT4', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT5', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT6', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT7', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT8', - 'GL2A_PERF_SEL_RTN_ARB_COLLISION_CLIENT9', - 'GL2A_PERF_SEL_RTN_CLIENT0', 'GL2A_PERF_SEL_RTN_CLIENT1', - 'GL2A_PERF_SEL_RTN_CLIENT10', 'GL2A_PERF_SEL_RTN_CLIENT11', - 'GL2A_PERF_SEL_RTN_CLIENT12', 'GL2A_PERF_SEL_RTN_CLIENT13', - 'GL2A_PERF_SEL_RTN_CLIENT14', 'GL2A_PERF_SEL_RTN_CLIENT15', - 'GL2A_PERF_SEL_RTN_CLIENT2', 'GL2A_PERF_SEL_RTN_CLIENT3', - 'GL2A_PERF_SEL_RTN_CLIENT4', 'GL2A_PERF_SEL_RTN_CLIENT5', - 'GL2A_PERF_SEL_RTN_CLIENT6', 'GL2A_PERF_SEL_RTN_CLIENT7', - 'GL2A_PERF_SEL_RTN_CLIENT8', 'GL2A_PERF_SEL_RTN_CLIENT9', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT0', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT1', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT10', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT11', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT12', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT13', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT14', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT15', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT2', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT3', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT4', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT5', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT6', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT7', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT8', - 'GL2A_PERF_SEL_RTN_CREDIT_STALL_CLIENT9', - 'GL2A_PERF_SEL_RTN_STALL_GL2C0', 'GL2A_PERF_SEL_RTN_STALL_GL2C1', - 'GL2A_PERF_SEL_RTN_STALL_GL2C2', 'GL2A_PERF_SEL_RTN_STALL_GL2C3', - 'GL2A_PERF_SEL_RTN_STALL_GL2C4', 'GL2A_PERF_SEL_RTN_STALL_GL2C5', - 'GL2A_PERF_SEL_RTN_STALL_GL2C6', 'GL2A_PERF_SEL_RTN_STALL_GL2C7', - 'GL2C_PERF_SEL', 'GL2C_PERF_SEL_ALL_GCR_INV_EVICT', - 'GL2C_PERF_SEL_ALL_GCR_INV_VOL_EVICT', - 'GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_CYCLE', - 'GL2C_PERF_SEL_ALL_GCR_WB_OR_INV_VOL_CYCLE', - 'GL2C_PERF_SEL_ALL_GCR_WB_WRITEBACK', - 'GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_START', - 'GL2C_PERF_SEL_ALL_TC_OP_WB_OR_INV_VOL_START', - 'GL2C_PERF_SEL_ATOMIC', 'GL2C_PERF_SEL_BUBBLE', - 'GL2C_PERF_SEL_BUSY', 'GL2C_PERF_SEL_BYPASS_REQ', - 'GL2C_PERF_SEL_CLIENT0_REQ', 'GL2C_PERF_SEL_CLIENT10_REQ', - 'GL2C_PERF_SEL_CLIENT11_REQ', 'GL2C_PERF_SEL_CLIENT12_REQ', - 'GL2C_PERF_SEL_CLIENT13_REQ', 'GL2C_PERF_SEL_CLIENT14_REQ', - 'GL2C_PERF_SEL_CLIENT15_REQ', 'GL2C_PERF_SEL_CLIENT1_REQ', - 'GL2C_PERF_SEL_CLIENT2_REQ', 'GL2C_PERF_SEL_CLIENT3_REQ', - 'GL2C_PERF_SEL_CLIENT4_REQ', 'GL2C_PERF_SEL_CLIENT5_REQ', - 'GL2C_PERF_SEL_CLIENT6_REQ', 'GL2C_PERF_SEL_CLIENT7_REQ', - 'GL2C_PERF_SEL_CLIENT8_REQ', 'GL2C_PERF_SEL_CLIENT9_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL0_REQ', 'GL2C_PERF_SEL_CM_CHANNEL10_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL11_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL12_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL13_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL14_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL15_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL16_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL17_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL18_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL19_REQ', 'GL2C_PERF_SEL_CM_CHANNEL1_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL20_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL21_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL22_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL23_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL24_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL25_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL26_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL27_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL28_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL29_REQ', 'GL2C_PERF_SEL_CM_CHANNEL2_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL30_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL31_REQ', 'GL2C_PERF_SEL_CM_CHANNEL3_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL4_REQ', 'GL2C_PERF_SEL_CM_CHANNEL5_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL6_REQ', 'GL2C_PERF_SEL_CM_CHANNEL7_REQ', - 'GL2C_PERF_SEL_CM_CHANNEL8_REQ', 'GL2C_PERF_SEL_CM_CHANNEL9_REQ', - 'GL2C_PERF_SEL_CM_COLOR_32B_WR_REQ', - 'GL2C_PERF_SEL_CM_COLOR_64B_WR_REQ', - 'GL2C_PERF_SEL_CM_COMP_ATOMIC_COLOR_REQ', - 'GL2C_PERF_SEL_CM_COMP_ATOMIC_DEPTH16_REQ', - 'GL2C_PERF_SEL_CM_COMP_ATOMIC_DEPTH32_REQ', - 'GL2C_PERF_SEL_CM_COMP_ATOMIC_STENCIL_REQ', - 'GL2C_PERF_SEL_CM_COMP_COLOR_DIS_REQ', - 'GL2C_PERF_SEL_CM_COMP_COLOR_EN_REQ', - 'GL2C_PERF_SEL_CM_COMP_DEPTH16_REQ', - 'GL2C_PERF_SEL_CM_COMP_DEPTH32_REQ', - 'GL2C_PERF_SEL_CM_COMP_RB_SKIP_REQ', - 'GL2C_PERF_SEL_CM_COMP_READ_REQ', - 'GL2C_PERF_SEL_CM_COMP_STENCIL_REQ', - 'GL2C_PERF_SEL_CM_COMP_WRITE_COLOR_REQ', - 'GL2C_PERF_SEL_CM_COMP_WRITE_DEPTH16_REQ', - 'GL2C_PERF_SEL_CM_COMP_WRITE_DEPTH32_REQ', - 'GL2C_PERF_SEL_CM_COMP_WRITE_STENCIL_REQ', - 'GL2C_PERF_SEL_CM_DCC_IN_XFC', 'GL2C_PERF_SEL_CM_DCC_OUT_1x1', - 'GL2C_PERF_SEL_CM_DCC_OUT_1x2', 'GL2C_PERF_SEL_CM_DCC_OUT_2x1', - 'GL2C_PERF_SEL_CM_DCC_OUT_2x2', 'GL2C_PERF_SEL_CM_DCC_OUT_CONST', - 'GL2C_PERF_SEL_CM_DCC_OUT_UNCOMP', 'GL2C_PERF_SEL_CM_DCC_OUT_XFC', - 'GL2C_PERF_SEL_CM_DCC_STALL', 'GL2C_PERF_SEL_CM_FULL_WRITE_REQ', - 'GL2C_PERF_SEL_CM_MERGE_BUF_FULL', - 'GL2C_PERF_SEL_CM_METADATA_WR_REQ', 'GL2C_PERF_SEL_CM_NOOP_REQ', - 'GL2C_PERF_SEL_CM_NO_ACK_REQ', 'GL2C_PERF_SEL_CM_READ_BACK_REQ', - 'GL2C_PERF_SEL_CM_RVF_FULL', 'GL2C_PERF_SEL_CM_SDR_FULL', - 'GL2C_PERF_SEL_CM_WR_ACK_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_0_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_128_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_32_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_64_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_96_REQ', - 'GL2C_PERF_SEL_COMPRESSED_READ_REQ', 'GL2C_PERF_SEL_CYCLE', - 'GL2C_PERF_SEL_C_RO_S_REQ', 'GL2C_PERF_SEL_C_RO_US_REQ', - 'GL2C_PERF_SEL_C_RW_S_REQ', 'GL2C_PERF_SEL_C_RW_US_REQ', - 'GL2C_PERF_SEL_DEWRITE_ALLOCATE_HIT', 'GL2C_PERF_SEL_EA_ATOMIC', - 'GL2C_PERF_SEL_EA_ATOMIC_LEVEL', 'GL2C_PERF_SEL_EA_OUTSTANDING', - 'GL2C_PERF_SEL_EA_RDREQ_128B', 'GL2C_PERF_SEL_EA_RDREQ_32B', - 'GL2C_PERF_SEL_EA_RDREQ_64B', 'GL2C_PERF_SEL_EA_RDREQ_96B', - 'GL2C_PERF_SEL_EA_RDREQ_DRAM', 'GL2C_PERF_SEL_EA_RDREQ_DRAM_32B', - 'GL2C_PERF_SEL_EA_RDREQ_DRAM_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_RDREQ_GMI_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_RDREQ_IO_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_RDREQ_SNOOP', 'GL2C_PERF_SEL_EA_RDREQ_SPLIT', - 'GL2C_PERF_SEL_EA_RDRET_NACK', - 'GL2C_PERF_SEL_EA_RD_COMPRESSED_32B', - 'GL2C_PERF_SEL_EA_RD_MDC_32B', 'GL2C_PERF_SEL_EA_RD_UNCACHED_32B', - 'GL2C_PERF_SEL_EA_WRREQ_64B', 'GL2C_PERF_SEL_EA_WRREQ_DRAM', - 'GL2C_PERF_SEL_EA_WRREQ_DRAM_32B', - 'GL2C_PERF_SEL_EA_WRREQ_DRAM_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_WRREQ_GMI_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_WRREQ_IO_CREDIT_STALL', - 'GL2C_PERF_SEL_EA_WRREQ_PROBE_COMMAND', - 'GL2C_PERF_SEL_EA_WRREQ_SNOOP', 'GL2C_PERF_SEL_EA_WRRET_NACK', - 'GL2C_PERF_SEL_EA_WR_UNCACHED_32B', 'GL2C_PERF_SEL_EVICT', - 'GL2C_PERF_SEL_FULLY_WRITTEN_HIT', 'GL2C_PERF_SEL_FULL_HIT', - 'GL2C_PERF_SEL_GARLIC_READ', 'GL2C_PERF_SEL_GARLIC_WRITE', - 'GL2C_PERF_SEL_GCR_ALL', 'GL2C_PERF_SEL_GCR_DISCARD', - 'GL2C_PERF_SEL_GCR_GL2_INV_ALL', - 'GL2C_PERF_SEL_GCR_GL2_INV_RANGE', 'GL2C_PERF_SEL_GCR_GL2_WB_ALL', - 'GL2C_PERF_SEL_GCR_GL2_WB_INV_RANGE', - 'GL2C_PERF_SEL_GCR_GL2_WB_RANGE', 'GL2C_PERF_SEL_GCR_INV', - 'GL2C_PERF_SEL_GCR_INVL2_VOL_CYCLE', - 'GL2C_PERF_SEL_GCR_INVL2_VOL_EVICT', - 'GL2C_PERF_SEL_GCR_INVL2_VOL_START', 'GL2C_PERF_SEL_GCR_MDC_INV', - 'GL2C_PERF_SEL_GCR_MDC_INV_ALL', - 'GL2C_PERF_SEL_GCR_MDC_INV_RANGE', 'GL2C_PERF_SEL_GCR_RANGE', - 'GL2C_PERF_SEL_GCR_UNSHARED', 'GL2C_PERF_SEL_GCR_VOL', - 'GL2C_PERF_SEL_GCR_WB', 'GL2C_PERF_SEL_GCR_WBINVL2_CYCLE', - 'GL2C_PERF_SEL_GCR_WBINVL2_EVICT', - 'GL2C_PERF_SEL_GCR_WBINVL2_START', - 'GL2C_PERF_SEL_GCR_WBL2_VOL_CYCLE', - 'GL2C_PERF_SEL_GCR_WBL2_VOL_START', 'GL2C_PERF_SEL_GL2A_LEVEL', - 'GL2C_PERF_SEL_HIGH_PRIORITY_REQ', 'GL2C_PERF_SEL_HIT', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT0', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT1', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT10', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT11', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT12', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT13', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT14', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT15', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT16', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT17', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT18', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT19', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT2', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT3', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT4', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT5', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT6', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT7', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT8', - 'GL2C_PERF_SEL_HIT_PASS_MISS_IN_CLIENT9', - 'GL2C_PERF_SEL_IB_CM_STALL', 'GL2C_PERF_SEL_IB_REQ', - 'GL2C_PERF_SEL_IB_STALL', 'GL2C_PERF_SEL_IB_TAG_STALL', - 'GL2C_PERF_SEL_INTERNAL_PROBE', 'GL2C_PERF_SEL_IO_READ', - 'GL2C_PERF_SEL_IO_WRITE', 'GL2C_PERF_SEL_LATENCY_FIFO_FULL', - 'GL2C_PERF_SEL_LRU_REQ', 'GL2C_PERF_SEL_MC_RDREQ', - 'GL2C_PERF_SEL_MC_RDREQ_LEVEL', 'GL2C_PERF_SEL_MC_WRREQ', - 'GL2C_PERF_SEL_MC_WRREQ_LEVEL', 'GL2C_PERF_SEL_MC_WRREQ_STALL', - 'GL2C_PERF_SEL_MDC_INV_METADATA', 'GL2C_PERF_SEL_MDC_LEVEL', - 'GL2C_PERF_SEL_MDC_REQ', 'GL2C_PERF_SEL_MDC_SECTOR_HIT', - 'GL2C_PERF_SEL_MDC_SECTOR_MISS', - 'GL2C_PERF_SEL_MDC_TAG_DESECTORIZATION_FIFO_FULL_STALL', - 'GL2C_PERF_SEL_MDC_TAG_HIT', - 'GL2C_PERF_SEL_MDC_TAG_REPLACEMENT_LINE_IN_USE_STALL', - 'GL2C_PERF_SEL_MDC_TAG_STALL', - 'GL2C_PERF_SEL_MDC_TAG_WAITING_FOR_INVALIDATE_COMPLETION_STALL', - 'GL2C_PERF_SEL_METADATA_READ_REQ', 'GL2C_PERF_SEL_MISS', - 'GL2C_PERF_SEL_NOA_REQ', 'GL2C_PERF_SEL_NONE', - 'GL2C_PERF_SEL_NOP_ACK', 'GL2C_PERF_SEL_NOP_RTN0', - 'GL2C_PERF_SEL_NORMAL_EVICT', 'GL2C_PERF_SEL_NORMAL_WRITEBACK', - 'GL2C_PERF_SEL_ONION_READ', 'GL2C_PERF_SEL_ONION_WRITE', - 'GL2C_PERF_SEL_PARTIAL_32B_HIT', 'GL2C_PERF_SEL_PARTIAL_64B_HIT', - 'GL2C_PERF_SEL_PARTIAL_96B_HIT', 'GL2C_PERF_SEL_PROBE', - 'GL2C_PERF_SEL_PROBE_ALL', 'GL2C_PERF_SEL_PROBE_EVICT', - 'GL2C_PERF_SEL_PROBE_FILTER_DISABLED', - 'GL2C_PERF_SEL_PROBE_FILTER_DISABLE_TRANSITION', - 'GL2C_PERF_SEL_READ', 'GL2C_PERF_SEL_READ_128_REQ', - 'GL2C_PERF_SEL_READ_32_REQ', 'GL2C_PERF_SEL_READ_64_REQ', - 'GL2C_PERF_SEL_READ_RETURN_FULL_BUBBLE', - 'GL2C_PERF_SEL_READ_RETURN_TIMEOUT', 'GL2C_PERF_SEL_REQ', - 'GL2C_PERF_SEL_REQ_TO_MISS_QUEUE', 'GL2C_PERF_SEL_RETURN_ACK', - 'GL2C_PERF_SEL_RETURN_DATA', 'GL2C_PERF_SEL_SHARED_REQ', - 'GL2C_PERF_SEL_SRC_FIFO_FULL', 'GL2C_PERF_SEL_STREAM_REQ', - 'GL2C_PERF_SEL_TAG_MISS_NOTHING_REPLACEABLE_STALL', - 'GL2C_PERF_SEL_TAG_NO_UNCACHED_WRITE_ATOMIC_ENTRIES_STALL', - 'GL2C_PERF_SEL_TAG_PROBE_FIFO_FULL_STALL', - 'GL2C_PERF_SEL_TAG_PROBE_FILTER_STALL', - 'GL2C_PERF_SEL_TAG_PROBE_STALL', - 'GL2C_PERF_SEL_TAG_READ_DST_STALL', 'GL2C_PERF_SEL_TAG_STALL', - 'GL2C_PERF_SEL_TAG_UNCACHED_WRITE_ATOMIC_FIFO_FULL_STALL', - 'GL2C_PERF_SEL_TAG_WRITEBACK_FIFO_FULL_STALL', - 'GL2C_PERF_SEL_TOO_MANY_EA_WRREQS_STALL', 'GL2C_PERF_SEL_UC_REQ', - 'GL2C_PERF_SEL_UNCACHED_WRITE', 'GL2C_PERF_SEL_VOL_REQ', - 'GL2C_PERF_SEL_WRITE', 'GL2C_PERF_SEL_WRITEBACK', - 'GL2C_PERF_SEL_WRITEBACK_READ_TIMEOUT', - 'GL2C_PERF_SEL_WRITE_32_REQ', 'GL2C_PERF_SEL_WRITE_64_REQ', - 'GL2_CACHE_POLICIES', 'GL2_CACHE_POLICY_BYPASS', - 'GL2_CACHE_POLICY_LRU', 'GL2_CACHE_POLICY_NOA', - 'GL2_CACHE_POLICY_STREAM', 'GL2_EA_CID', 'GL2_EA_CID_CLIENT', - 'GL2_EA_CID_CP', 'GL2_EA_CID_CPDMA', 'GL2_EA_CID_DCC', - 'GL2_EA_CID_FMASK', 'GL2_EA_CID_HTILE', 'GL2_EA_CID_MES', - 'GL2_EA_CID_RLC', 'GL2_EA_CID_RT', 'GL2_EA_CID_SDMA', - 'GL2_EA_CID_SQC', 'GL2_EA_CID_TCPMETA', 'GL2_EA_CID_UTCL2', - 'GL2_EA_CID_ZPCPSD', 'GL2_EA_CID_Z_STENCIL', 'GL2_NACKS', - 'GL2_NACK_DATA_ERROR', 'GL2_NACK_NO_FAULT', 'GL2_NACK_PAGE_FAULT', - 'GL2_NACK_PROTECTION_FAULT', 'GL2_OP', 'GL2_OP_ATOMIC_ADD_32', - 'GL2_OP_ATOMIC_ADD_64', 'GL2_OP_ATOMIC_ADD_RTN_32', - 'GL2_OP_ATOMIC_ADD_RTN_64', 'GL2_OP_ATOMIC_AND_32', - 'GL2_OP_ATOMIC_AND_64', 'GL2_OP_ATOMIC_AND_RTN_32', - 'GL2_OP_ATOMIC_AND_RTN_64', 'GL2_OP_ATOMIC_CLAMP_SUB_RTN_32', - 'GL2_OP_ATOMIC_CMPSWAP_32', 'GL2_OP_ATOMIC_CMPSWAP_64', - 'GL2_OP_ATOMIC_CMPSWAP_RTN_32', 'GL2_OP_ATOMIC_CMPSWAP_RTN_64', - 'GL2_OP_ATOMIC_DEC_32', 'GL2_OP_ATOMIC_DEC_64', - 'GL2_OP_ATOMIC_DEC_RTN_32', 'GL2_OP_ATOMIC_DEC_RTN_64', - 'GL2_OP_ATOMIC_FADD_FLUSH_DENORM_32', - 'GL2_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32', - 'GL2_OP_ATOMIC_FCMPSWAP_32', 'GL2_OP_ATOMIC_FCMPSWAP_64', - 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32', - 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64', - 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32', - 'GL2_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64', - 'GL2_OP_ATOMIC_FCMPSWAP_RTN_32', 'GL2_OP_ATOMIC_FCMPSWAP_RTN_64', - 'GL2_OP_ATOMIC_FMAX_32', 'GL2_OP_ATOMIC_FMAX_64', - 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_32', - 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_64', - 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32', - 'GL2_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64', - 'GL2_OP_ATOMIC_FMAX_RTN_32', 'GL2_OP_ATOMIC_FMAX_RTN_64', - 'GL2_OP_ATOMIC_FMIN_32', 'GL2_OP_ATOMIC_FMIN_64', - 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_32', - 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_64', - 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32', - 'GL2_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64', - 'GL2_OP_ATOMIC_FMIN_RTN_32', 'GL2_OP_ATOMIC_FMIN_RTN_64', - 'GL2_OP_ATOMIC_INC_32', 'GL2_OP_ATOMIC_INC_64', - 'GL2_OP_ATOMIC_INC_RTN_32', 'GL2_OP_ATOMIC_INC_RTN_64', - 'GL2_OP_ATOMIC_OR_32', 'GL2_OP_ATOMIC_OR_64', - 'GL2_OP_ATOMIC_OR_RTN_32', 'GL2_OP_ATOMIC_OR_RTN_64', - 'GL2_OP_ATOMIC_SMAX_32', 'GL2_OP_ATOMIC_SMAX_64', - 'GL2_OP_ATOMIC_SMAX_RTN_32', 'GL2_OP_ATOMIC_SMAX_RTN_64', - 'GL2_OP_ATOMIC_SMIN_32', 'GL2_OP_ATOMIC_SMIN_64', - 'GL2_OP_ATOMIC_SMIN_RTN_32', 'GL2_OP_ATOMIC_SMIN_RTN_64', - 'GL2_OP_ATOMIC_SUB_32', 'GL2_OP_ATOMIC_SUB_64', - 'GL2_OP_ATOMIC_SUB_RTN_32', 'GL2_OP_ATOMIC_SUB_RTN_64', - 'GL2_OP_ATOMIC_SWAP_32', 'GL2_OP_ATOMIC_SWAP_64', - 'GL2_OP_ATOMIC_SWAP_RTN_32', 'GL2_OP_ATOMIC_SWAP_RTN_64', - 'GL2_OP_ATOMIC_UMAX_32', 'GL2_OP_ATOMIC_UMAX_64', - 'GL2_OP_ATOMIC_UMAX_8', 'GL2_OP_ATOMIC_UMAX_RTN_32', - 'GL2_OP_ATOMIC_UMAX_RTN_64', 'GL2_OP_ATOMIC_UMIN_32', - 'GL2_OP_ATOMIC_UMIN_64', 'GL2_OP_ATOMIC_UMIN_8', - 'GL2_OP_ATOMIC_UMIN_RTN_32', 'GL2_OP_ATOMIC_UMIN_RTN_64', - 'GL2_OP_ATOMIC_XOR_32', 'GL2_OP_ATOMIC_XOR_64', - 'GL2_OP_ATOMIC_XOR_RTN_32', 'GL2_OP_ATOMIC_XOR_RTN_64', - 'GL2_OP_GL1_INV', 'GL2_OP_MASKS', 'GL2_OP_MASK_64', - 'GL2_OP_MASK_FLUSH_DENROM', 'GL2_OP_MASK_NO_RTN', - 'GL2_OP_NOP_ACK', 'GL2_OP_NOP_RTN0', 'GL2_OP_PROBE_FILTER', - 'GL2_OP_READ', 'GL2_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2', - 'GL2_OP_WRITE', 'GLOBAL_CONTROL_ACCEPT_UNSOLICITED_RESPONSE', - 'GLOBAL_CONTROL_CONTROLLER_RESET', 'GLOBAL_CONTROL_FLUSH_CONTROL', - 'GLOBAL_STATUS_FLUSH_STATUS', - 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_ENDED', - 'GLOBAL_STATUS_FLUSH_STATUS_FLUSH_NOT_ENDED', - 'GL__CONSTANT_ALPHA', 'GL__CONSTANT_COLOR', 'GL__DST_ALPHA', - 'GL__DST_COLOR', 'GL__ONE', 'GL__ONE_MINUS_CONSTANT_ALPHA', - 'GL__ONE_MINUS_CONSTANT_COLOR', 'GL__ONE_MINUS_DST_ALPHA', - 'GL__ONE_MINUS_DST_COLOR', 'GL__ONE_MINUS_SRC_ALPHA', - 'GL__ONE_MINUS_SRC_COLOR', 'GL__SRC_ALPHA', - 'GL__SRC_ALPHA_SATURATE', 'GL__SRC_COLOR', 'GL__ZERO', - 'GRBM_PERF_SEL', 'GRBM_PERF_SEL_ANY_ACTIVE_F_BUSY', - 'GRBM_PERF_SEL_BCI_BUSY', 'GRBM_PERF_SEL_CB_BUSY', - 'GRBM_PERF_SEL_CB_CLEAN', 'GRBM_PERF_SEL_CH_BUSY', - 'GRBM_PERF_SEL_COUNT', 'GRBM_PERF_SEL_CPAXI_BUSY', - 'GRBM_PERF_SEL_CPC_BUSY', 'GRBM_PERF_SEL_CPF_BUSY', - 'GRBM_PERF_SEL_CPG_BUSY', 'GRBM_PERF_SEL_CP_BUSY', - 'GRBM_PERF_SEL_CP_COHER_BUSY', 'GRBM_PERF_SEL_CP_DMA_BUSY', - 'GRBM_PERF_SEL_DB_BUSY', 'GRBM_PERF_SEL_DB_CLEAN', - 'GRBM_PERF_SEL_EA_BUSY', 'GRBM_PERF_SEL_GDS_BUSY', - 'GRBM_PERF_SEL_GE_BUSY', 'GRBM_PERF_SEL_GE_NO_DMA_BUSY', - 'GRBM_PERF_SEL_GL1CC_BUSY', 'GRBM_PERF_SEL_GL1H_BUSY', - 'GRBM_PERF_SEL_GL2CC_BUSY', 'GRBM_PERF_SEL_GUI_ACTIVE', - 'GRBM_PERF_SEL_GUS_BUSY', 'GRBM_PERF_SEL_PA_BUSY', - 'GRBM_PERF_SEL_PC_BUSY', 'GRBM_PERF_SEL_PH_BUSY', - 'GRBM_PERF_SEL_PMM_BUSY', 'GRBM_PERF_SEL_RLC_BUSY', - 'GRBM_PERF_SEL_RMI_BUSY', 'GRBM_PERF_SEL_SC_BUSY', - 'GRBM_PERF_SEL_SDMA_BUSY', 'GRBM_PERF_SEL_SPI_BUSY', - 'GRBM_PERF_SEL_SX_BUSY', 'GRBM_PERF_SEL_TA_BUSY', - 'GRBM_PERF_SEL_TCP_BUSY', 'GRBM_PERF_SEL_USER_DEFINED', - 'GRBM_PERF_SEL_UTCL1_BUSY', 'GRBM_PERF_SEL_UTCL2_BUSY', - 'GRBM_SE0_PERF_SEL', 'GRBM_SE0_PERF_SEL_BCI_BUSY', - 'GRBM_SE0_PERF_SEL_CB_BUSY', 'GRBM_SE0_PERF_SEL_CB_CLEAN', - 'GRBM_SE0_PERF_SEL_COUNT', 'GRBM_SE0_PERF_SEL_DB_BUSY', - 'GRBM_SE0_PERF_SEL_DB_CLEAN', 'GRBM_SE0_PERF_SEL_GL1CC_BUSY', - 'GRBM_SE0_PERF_SEL_GL1H_BUSY', 'GRBM_SE0_PERF_SEL_PA_BUSY', - 'GRBM_SE0_PERF_SEL_PC_BUSY', 'GRBM_SE0_PERF_SEL_RMI_BUSY', - 'GRBM_SE0_PERF_SEL_SC_BUSY', 'GRBM_SE0_PERF_SEL_SPI_BUSY', - 'GRBM_SE0_PERF_SEL_SX_BUSY', 'GRBM_SE0_PERF_SEL_TA_BUSY', - 'GRBM_SE0_PERF_SEL_TCP_BUSY', 'GRBM_SE0_PERF_SEL_USER_DEFINED', - 'GRBM_SE0_PERF_SEL_UTCL1_BUSY', 'GRBM_SE1_PERF_SEL', - 'GRBM_SE1_PERF_SEL_BCI_BUSY', 'GRBM_SE1_PERF_SEL_CB_BUSY', - 'GRBM_SE1_PERF_SEL_CB_CLEAN', 'GRBM_SE1_PERF_SEL_COUNT', - 'GRBM_SE1_PERF_SEL_DB_BUSY', 'GRBM_SE1_PERF_SEL_DB_CLEAN', - 'GRBM_SE1_PERF_SEL_GL1CC_BUSY', 'GRBM_SE1_PERF_SEL_GL1H_BUSY', - 'GRBM_SE1_PERF_SEL_PA_BUSY', 'GRBM_SE1_PERF_SEL_PC_BUSY', - 'GRBM_SE1_PERF_SEL_RMI_BUSY', 'GRBM_SE1_PERF_SEL_SC_BUSY', - 'GRBM_SE1_PERF_SEL_SPI_BUSY', 'GRBM_SE1_PERF_SEL_SX_BUSY', - 'GRBM_SE1_PERF_SEL_TA_BUSY', 'GRBM_SE1_PERF_SEL_TCP_BUSY', - 'GRBM_SE1_PERF_SEL_USER_DEFINED', 'GRBM_SE1_PERF_SEL_UTCL1_BUSY', - 'GRBM_SE2_PERF_SEL', 'GRBM_SE2_PERF_SEL_BCI_BUSY', - 'GRBM_SE2_PERF_SEL_CB_BUSY', 'GRBM_SE2_PERF_SEL_CB_CLEAN', - 'GRBM_SE2_PERF_SEL_COUNT', 'GRBM_SE2_PERF_SEL_DB_BUSY', - 'GRBM_SE2_PERF_SEL_DB_CLEAN', 'GRBM_SE2_PERF_SEL_GL1CC_BUSY', - 'GRBM_SE2_PERF_SEL_GL1H_BUSY', 'GRBM_SE2_PERF_SEL_PA_BUSY', - 'GRBM_SE2_PERF_SEL_PC_BUSY', 'GRBM_SE2_PERF_SEL_RMI_BUSY', - 'GRBM_SE2_PERF_SEL_SC_BUSY', 'GRBM_SE2_PERF_SEL_SPI_BUSY', - 'GRBM_SE2_PERF_SEL_SX_BUSY', 'GRBM_SE2_PERF_SEL_TA_BUSY', - 'GRBM_SE2_PERF_SEL_TCP_BUSY', 'GRBM_SE2_PERF_SEL_USER_DEFINED', - 'GRBM_SE2_PERF_SEL_UTCL1_BUSY', 'GRBM_SE3_PERF_SEL', - 'GRBM_SE3_PERF_SEL_BCI_BUSY', 'GRBM_SE3_PERF_SEL_CB_BUSY', - 'GRBM_SE3_PERF_SEL_CB_CLEAN', 'GRBM_SE3_PERF_SEL_COUNT', - 'GRBM_SE3_PERF_SEL_DB_BUSY', 'GRBM_SE3_PERF_SEL_DB_CLEAN', - 'GRBM_SE3_PERF_SEL_GL1CC_BUSY', 'GRBM_SE3_PERF_SEL_GL1H_BUSY', - 'GRBM_SE3_PERF_SEL_PA_BUSY', 'GRBM_SE3_PERF_SEL_PC_BUSY', - 'GRBM_SE3_PERF_SEL_RMI_BUSY', 'GRBM_SE3_PERF_SEL_SC_BUSY', - 'GRBM_SE3_PERF_SEL_SPI_BUSY', 'GRBM_SE3_PERF_SEL_SX_BUSY', - 'GRBM_SE3_PERF_SEL_TA_BUSY', 'GRBM_SE3_PERF_SEL_TCP_BUSY', - 'GRBM_SE3_PERF_SEL_USER_DEFINED', 'GRBM_SE3_PERF_SEL_UTCL1_BUSY', - 'GRBM_SE4_PERF_SEL', 'GRBM_SE4_PERF_SEL_BCI_BUSY', - 'GRBM_SE4_PERF_SEL_CB_BUSY', 'GRBM_SE4_PERF_SEL_CB_CLEAN', - 'GRBM_SE4_PERF_SEL_COUNT', 'GRBM_SE4_PERF_SEL_DB_BUSY', - 'GRBM_SE4_PERF_SEL_DB_CLEAN', 'GRBM_SE4_PERF_SEL_GL1CC_BUSY', - 'GRBM_SE4_PERF_SEL_GL1H_BUSY', 'GRBM_SE4_PERF_SEL_PA_BUSY', - 'GRBM_SE4_PERF_SEL_PC_BUSY', 'GRBM_SE4_PERF_SEL_RMI_BUSY', - 'GRBM_SE4_PERF_SEL_SC_BUSY', 'GRBM_SE4_PERF_SEL_SPI_BUSY', - 'GRBM_SE4_PERF_SEL_SX_BUSY', 'GRBM_SE4_PERF_SEL_TA_BUSY', - 'GRBM_SE4_PERF_SEL_TCP_BUSY', 'GRBM_SE4_PERF_SEL_USER_DEFINED', - 'GRBM_SE4_PERF_SEL_UTCL1_BUSY', 'GRBM_SE5_PERF_SEL', - 'GRBM_SE5_PERF_SEL_BCI_BUSY', 'GRBM_SE5_PERF_SEL_CB_BUSY', - 'GRBM_SE5_PERF_SEL_CB_CLEAN', 'GRBM_SE5_PERF_SEL_COUNT', - 'GRBM_SE5_PERF_SEL_DB_BUSY', 'GRBM_SE5_PERF_SEL_DB_CLEAN', - 'GRBM_SE5_PERF_SEL_GL1CC_BUSY', 'GRBM_SE5_PERF_SEL_GL1H_BUSY', - 'GRBM_SE5_PERF_SEL_PA_BUSY', 'GRBM_SE5_PERF_SEL_PC_BUSY', - 'GRBM_SE5_PERF_SEL_RMI_BUSY', 'GRBM_SE5_PERF_SEL_SC_BUSY', - 'GRBM_SE5_PERF_SEL_SPI_BUSY', 'GRBM_SE5_PERF_SEL_SX_BUSY', - 'GRBM_SE5_PERF_SEL_TA_BUSY', 'GRBM_SE5_PERF_SEL_TCP_BUSY', - 'GRBM_SE5_PERF_SEL_USER_DEFINED', 'GRBM_SE5_PERF_SEL_UTCL1_BUSY', - 'GRBM_SE6_PERF_SEL', 'GRBM_SE6_PERF_SEL_BCI_BUSY', - 'GRBM_SE6_PERF_SEL_CB_BUSY', 'GRBM_SE6_PERF_SEL_CB_CLEAN', - 'GRBM_SE6_PERF_SEL_COUNT', 'GRBM_SE6_PERF_SEL_DB_BUSY', - 'GRBM_SE6_PERF_SEL_DB_CLEAN', 'GRBM_SE6_PERF_SEL_GL1CC_BUSY', - 'GRBM_SE6_PERF_SEL_GL1H_BUSY', 'GRBM_SE6_PERF_SEL_PA_BUSY', - 'GRBM_SE6_PERF_SEL_PC_BUSY', 'GRBM_SE6_PERF_SEL_RMI_BUSY', - 'GRBM_SE6_PERF_SEL_SC_BUSY', 'GRBM_SE6_PERF_SEL_SPI_BUSY', - 'GRBM_SE6_PERF_SEL_SX_BUSY', 'GRBM_SE6_PERF_SEL_TA_BUSY', - 'GRBM_SE6_PERF_SEL_TCP_BUSY', 'GRBM_SE6_PERF_SEL_USER_DEFINED', - 'GRBM_SE6_PERF_SEL_UTCL1_BUSY', 'GRBM_SE7_PERF_SEL', - 'GRBM_SE7_PERF_SEL_BCI_BUSY', 'GRBM_SE7_PERF_SEL_CB_BUSY', - 'GRBM_SE7_PERF_SEL_CB_CLEAN', 'GRBM_SE7_PERF_SEL_COUNT', - 'GRBM_SE7_PERF_SEL_DB_BUSY', 'GRBM_SE7_PERF_SEL_DB_CLEAN', - 'GRBM_SE7_PERF_SEL_GL1CC_BUSY', 'GRBM_SE7_PERF_SEL_GL1H_BUSY', - 'GRBM_SE7_PERF_SEL_PA_BUSY', 'GRBM_SE7_PERF_SEL_PC_BUSY', - 'GRBM_SE7_PERF_SEL_RMI_BUSY', 'GRBM_SE7_PERF_SEL_SC_BUSY', - 'GRBM_SE7_PERF_SEL_SPI_BUSY', 'GRBM_SE7_PERF_SEL_SX_BUSY', - 'GRBM_SE7_PERF_SEL_TA_BUSY', 'GRBM_SE7_PERF_SEL_TCP_BUSY', - 'GRBM_SE7_PERF_SEL_USER_DEFINED', 'GRBM_SE7_PERF_SEL_UTCL1_BUSY', - 'GREEN_LUT', 'GSTHREADID_SIZE', 'GS_OFF', 'GS_SCENARIO_A', - 'GS_SCENARIO_B', 'GS_SCENARIO_C', 'GS_SCENARIO_G', 'GS_STAGE_OFF', - 'GS_STAGE_ON', 'HDA_BASE', 'HDA_BASE__INST0_SEG0', - 'HDA_BASE__INST0_SEG1', 'HDA_BASE__INST0_SEG2', - 'HDA_BASE__INST0_SEG3', 'HDA_BASE__INST0_SEG4', - 'HDA_BASE__INST1_SEG0', 'HDA_BASE__INST1_SEG1', - 'HDA_BASE__INST1_SEG2', 'HDA_BASE__INST1_SEG3', - 'HDA_BASE__INST1_SEG4', 'HDA_BASE__INST2_SEG0', - 'HDA_BASE__INST2_SEG1', 'HDA_BASE__INST2_SEG2', - 'HDA_BASE__INST2_SEG3', 'HDA_BASE__INST2_SEG4', - 'HDA_BASE__INST3_SEG0', 'HDA_BASE__INST3_SEG1', - 'HDA_BASE__INST3_SEG2', 'HDA_BASE__INST3_SEG3', - 'HDA_BASE__INST3_SEG4', 'HDA_BASE__INST4_SEG0', - 'HDA_BASE__INST4_SEG1', 'HDA_BASE__INST4_SEG2', - 'HDA_BASE__INST4_SEG3', 'HDA_BASE__INST4_SEG4', - 'HDA_BASE__INST5_SEG0', 'HDA_BASE__INST5_SEG1', - 'HDA_BASE__INST5_SEG2', 'HDA_BASE__INST5_SEG3', - 'HDA_BASE__INST5_SEG4', 'HDA_BASE__INST6_SEG0', - 'HDA_BASE__INST6_SEG1', 'HDA_BASE__INST6_SEG2', - 'HDA_BASE__INST6_SEG3', 'HDA_BASE__INST6_SEG4', - 'HDMICHARCLK_SRC_SEL', 'HDMICHARCLK_SRC_SEL_SRC_RESERVED', - 'HDMICHARCLK_SRC_SEL_UNIPHYA', 'HDMICHARCLK_SRC_SEL_UNIPHYB', - 'HDMICHARCLK_SRC_SEL_UNIPHYC', 'HDMICHARCLK_SRC_SEL_UNIPHYD', - 'HDMICHARCLK_SRC_SEL_UNIPHYE', 'HDMISTREAMCLK_DTO_FORCE_DIS', - 'HDMISTREAMCLK_SRC_SEL', 'HDMI_ACP_NOT_SEND', 'HDMI_ACP_PKT_SEND', - 'HDMI_ACP_SEND', 'HDMI_ACR_0_MULTIPLE_RESERVED', - 'HDMI_ACR_1_MULTIPLE', 'HDMI_ACR_2_MULTIPLE', - 'HDMI_ACR_3_MULTIPLE_RESERVED', 'HDMI_ACR_4_MULTIPLE', - 'HDMI_ACR_5_MULTIPLE_RESERVED', 'HDMI_ACR_6_MULTIPLE_RESERVED', - 'HDMI_ACR_7_MULTIPLE_RESERVED', 'HDMI_ACR_AUDIO_PRIORITY', - 'HDMI_ACR_CONT', 'HDMI_ACR_CONT_DISABLE', 'HDMI_ACR_CONT_ENABLE', - 'HDMI_ACR_NOT_SEND', 'HDMI_ACR_N_MULTIPLE', - 'HDMI_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE', - 'HDMI_ACR_PKT_SEND', 'HDMI_ACR_SELECT', 'HDMI_ACR_SELECT_32K', - 'HDMI_ACR_SELECT_44K', 'HDMI_ACR_SELECT_48K', - 'HDMI_ACR_SELECT_HW', 'HDMI_ACR_SEND', 'HDMI_ACR_SOURCE', - 'HDMI_ACR_SOURCE_HW', 'HDMI_ACR_SOURCE_SW', - 'HDMI_AUDIO_DELAY_56CLK', 'HDMI_AUDIO_DELAY_58CLK', - 'HDMI_AUDIO_DELAY_DISABLE', 'HDMI_AUDIO_DELAY_EN', - 'HDMI_AUDIO_DELAY_RESERVED', 'HDMI_AUDIO_INFO_CONT', - 'HDMI_AUDIO_INFO_CONT_DISABLE', 'HDMI_AUDIO_INFO_CONT_ENABLE', - 'HDMI_AUDIO_INFO_NOT_SEND', 'HDMI_AUDIO_INFO_PKT_SEND', - 'HDMI_AUDIO_INFO_SEND', - 'HDMI_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT', - 'HDMI_BORROW_MODE', 'HDMI_CLOCK_CHANNEL_FREQ_EQUAL_TO_CHAR_RATE', - 'HDMI_CLOCK_CHANNEL_FREQ_QUARTER_TO_CHAR_RATE', - 'HDMI_CLOCK_CHANNEL_RATE', 'HDMI_DATA_SCRAMBLE_DISABLE', - 'HDMI_DATA_SCRAMBLE_EN', 'HDMI_DATA_SCRAMBLE_ENABLE', - 'HDMI_DEEP_COLOR_DEPTH', 'HDMI_DEEP_COLOR_DEPTH_24BPP', - 'HDMI_DEEP_COLOR_DEPTH_30BPP', 'HDMI_DEEP_COLOR_DEPTH_36BPP', - 'HDMI_DEEP_COLOR_DEPTH_48BPP', 'HDMI_DEFAULT_PAHSE', - 'HDMI_DEFAULT_PHASE_IS_0', 'HDMI_DEFAULT_PHASE_IS_1', - 'HDMI_ERROR_ACK', 'HDMI_ERROR_ACK_INT', 'HDMI_ERROR_MASK', - 'HDMI_ERROR_MASK_INT', 'HDMI_ERROR_NOT_ACK', - 'HDMI_ERROR_NOT_MASK', 'HDMI_EXTRA_NULL_PACKET_FILLED_DISABLE', - 'HDMI_EXTRA_NULL_PACKET_FILLED_ENABLE', 'HDMI_FRL', - 'HDMI_GC_AVMUTE', 'HDMI_GC_AVMUTE_CONT', - 'HDMI_GC_AVMUTE_CONT_DISABLE', 'HDMI_GC_AVMUTE_CONT_ENABLE', - 'HDMI_GC_AVMUTE_SET', 'HDMI_GC_AVMUTE_UNSET', 'HDMI_GC_CONT', - 'HDMI_GC_CONT_DISABLE', 'HDMI_GC_CONT_ENABLE', 'HDMI_GC_NOT_SEND', - 'HDMI_GC_PKT_SEND', 'HDMI_GC_SEND', 'HDMI_GENERIC_CONT', - 'HDMI_GENERIC_CONT_DISABLE', 'HDMI_GENERIC_CONT_ENABLE', - 'HDMI_GENERIC_NOT_SEND', 'HDMI_GENERIC_PKT_SEND', - 'HDMI_GENERIC_SEND', 'HDMI_ISRC_CONT', 'HDMI_ISRC_CONT_DISABLE', - 'HDMI_ISRC_CONT_ENABLE', 'HDMI_ISRC_NOT_SEND', - 'HDMI_ISRC_PKT_SEND', 'HDMI_ISRC_SEND', - 'HDMI_KEEPOUT_0_650PIX_AFTER_VSYNC', - 'HDMI_KEEPOUT_509_650PIX_AFTER_VSYNC', 'HDMI_KEEPOUT_MODE', - 'HDMI_METADATA_ENABLE', 'HDMI_METADATA_NOT_SEND', - 'HDMI_METADATA_PKT_SEND', 'HDMI_MPEG_INFO_CONT', - 'HDMI_MPEG_INFO_CONT_DISABLE', 'HDMI_MPEG_INFO_CONT_ENABLE', - 'HDMI_MPEG_INFO_NOT_SEND', 'HDMI_MPEG_INFO_PKT_SEND', - 'HDMI_MPEG_INFO_SEND', 'HDMI_NOT_SEND_MAX_AUDIO_PACKETS', - 'HDMI_NO_EXTRA_NULL_PACKET_FILLED', 'HDMI_NULL_NOT_SEND', - 'HDMI_NULL_PKT_SEND', 'HDMI_NULL_SEND', 'HDMI_PACKET_GEN_VERSION', - 'HDMI_PACKET_GEN_VERSION_NEW', 'HDMI_PACKET_GEN_VERSION_OLD', - 'HDMI_PACKET_LINE_REFERENCE', 'HDMI_PACKING_PHASE_OVERRIDE', - 'HDMI_PACKING_PHASE_SET_BY_HW', 'HDMI_PACKING_PHASE_SET_BY_SW', - 'HDMI_PKT_LINE_REF_OTGSOF', 'HDMI_PKT_LINE_REF_VSYNC', - 'HDMI_SEND_MAX_AUDIO_PACKETS', 'HDMI_STREAM_ENC_DB_DISABLE', - 'HDMI_STREAM_ENC_DB_DISABLE_CONTROL', 'HDMI_STREAM_ENC_DB_ENABLE', - 'HDMI_STREAM_ENC_DCCG', 'HDMI_STREAM_ENC_DISABLE', - 'HDMI_STREAM_ENC_DISPLAY_PIPE', 'HDMI_STREAM_ENC_DSC_MODE', - 'HDMI_STREAM_ENC_ENABLE', 'HDMI_STREAM_ENC_ENABLE_CONTROL', - 'HDMI_STREAM_ENC_HARDWARE', 'HDMI_STREAM_ENC_NOT_RESET', - 'HDMI_STREAM_ENC_NO_ERROR_OCCURRED', - 'HDMI_STREAM_ENC_ODM_COMBINE_MODE', - 'HDMI_STREAM_ENC_OVERFLOW_OCCURRED', - 'HDMI_STREAM_ENC_OVERFLOW_UNDERFLOW_ERROR', - 'HDMI_STREAM_ENC_OVERWRITE_LEVEL_SELECT', - 'HDMI_STREAM_ENC_PIXEL_ENCODING', 'HDMI_STREAM_ENC_PROGRAMMABLE', - 'HDMI_STREAM_ENC_READ_CLOCK_CONTROL', 'HDMI_STREAM_ENC_RESET', - 'HDMI_STREAM_ENC_RESET_CONTROL', 'HDMI_STREAM_ENC_STREAM_ACTIVE', - 'HDMI_STREAM_ENC_UNDERFLOW_OCCURRED', - 'HDMI_STREAM_ENC_VIDEO_STREAM_ACTIVE', - 'HDMI_STREAM_ENC_VIDEO_STREAM_NOT_ACTIVE', 'HDMI_TB_ENC_ACP_SEND', - 'HDMI_TB_ENC_ACR_AUDIO_PRIORITY', 'HDMI_TB_ENC_ACR_CONT', - 'HDMI_TB_ENC_ACR_N_MULTIPLE', 'HDMI_TB_ENC_ACR_SELECT', - 'HDMI_TB_ENC_ACR_SEND', 'HDMI_TB_ENC_ACR_SOURCE', - 'HDMI_TB_ENC_AUDIO_INFO_CONT', 'HDMI_TB_ENC_AUDIO_INFO_SEND', - 'HDMI_TB_ENC_CRC_SRC_SEL', 'HDMI_TB_ENC_CRC_TYPE', - 'HDMI_TB_ENC_DEEP_COLOR_DEPTH', 'HDMI_TB_ENC_DEFAULT_PAHSE', - 'HDMI_TB_ENC_DSC_MODE', 'HDMI_TB_ENC_ENABLE', - 'HDMI_TB_ENC_GC_AVMUTE', 'HDMI_TB_ENC_GC_AVMUTE_CONT', - 'HDMI_TB_ENC_GC_CONT', 'HDMI_TB_ENC_GC_SEND', - 'HDMI_TB_ENC_GENERIC_CONT', 'HDMI_TB_ENC_GENERIC_LOCK_DISABLE', - 'HDMI_TB_ENC_GENERIC_LOCK_EN', 'HDMI_TB_ENC_GENERIC_LOCK_ENABLE', - 'HDMI_TB_ENC_GENERIC_SEND', 'HDMI_TB_ENC_ISRC_CONT', - 'HDMI_TB_ENC_ISRC_SEND', 'HDMI_TB_ENC_METADATA_ENABLE', - 'HDMI_TB_ENC_PACKET_LINE_REFERENCE', 'HDMI_TB_ENC_PIXEL_ENCODING', - 'HDMI_TB_ENC_RESET', 'HDMI_TB_ENC_SYNC_PHASE', - 'HDMI_TMDS_OR_DP_8B10B', 'HDP_BASE', 'HDP_BASE__INST0_SEG0', + 'GC_BASE__INST6_SEG3', 'GC_BASE__INST6_SEG4', 'HDA_BASE', + 'HDA_BASE__INST0_SEG0', 'HDA_BASE__INST0_SEG1', + 'HDA_BASE__INST0_SEG2', 'HDA_BASE__INST0_SEG3', + 'HDA_BASE__INST0_SEG4', 'HDA_BASE__INST1_SEG0', + 'HDA_BASE__INST1_SEG1', 'HDA_BASE__INST1_SEG2', + 'HDA_BASE__INST1_SEG3', 'HDA_BASE__INST1_SEG4', + 'HDA_BASE__INST2_SEG0', 'HDA_BASE__INST2_SEG1', + 'HDA_BASE__INST2_SEG2', 'HDA_BASE__INST2_SEG3', + 'HDA_BASE__INST2_SEG4', 'HDA_BASE__INST3_SEG0', + 'HDA_BASE__INST3_SEG1', 'HDA_BASE__INST3_SEG2', + 'HDA_BASE__INST3_SEG3', 'HDA_BASE__INST3_SEG4', + 'HDA_BASE__INST4_SEG0', 'HDA_BASE__INST4_SEG1', + 'HDA_BASE__INST4_SEG2', 'HDA_BASE__INST4_SEG3', + 'HDA_BASE__INST4_SEG4', 'HDA_BASE__INST5_SEG0', + 'HDA_BASE__INST5_SEG1', 'HDA_BASE__INST5_SEG2', + 'HDA_BASE__INST5_SEG3', 'HDA_BASE__INST5_SEG4', + 'HDA_BASE__INST6_SEG0', 'HDA_BASE__INST6_SEG1', + 'HDA_BASE__INST6_SEG2', 'HDA_BASE__INST6_SEG3', + 'HDA_BASE__INST6_SEG4', 'HDP_BASE', 'HDP_BASE__INST0_SEG0', 'HDP_BASE__INST0_SEG1', 'HDP_BASE__INST0_SEG2', 'HDP_BASE__INST0_SEG3', 'HDP_BASE__INST0_SEG4', 'HDP_BASE__INST1_SEG0', 'HDP_BASE__INST1_SEG1', @@ -65556,498 +13999,26 @@ __all__ = \ 'HDP_BASE__INST5_SEG4', 'HDP_BASE__INST6_SEG0', 'HDP_BASE__INST6_SEG1', 'HDP_BASE__INST6_SEG2', 'HDP_BASE__INST6_SEG3', 'HDP_BASE__INST6_SEG4', - 'HDP_ENDIAN_8IN16', 'HDP_ENDIAN_8IN32', 'HDP_ENDIAN_8IN64', - 'HDP_ENDIAN_NONE', 'HEADER_AGENT_DISPATCH', 'HEADER_BARRIER', - 'HPD_INT_CONTROL_ACK', 'HPD_INT_CONTROL_ACK_0', - 'HPD_INT_CONTROL_ACK_1', 'HPD_INT_CONTROL_GEN_INT_ON_CON', - 'HPD_INT_CONTROL_GEN_INT_ON_DISCON', 'HPD_INT_CONTROL_POLARITY', - 'HPD_INT_CONTROL_RX_INT_ACK', 'HPD_INT_CONTROL_RX_INT_ACK_0', - 'HPD_INT_CONTROL_RX_INT_ACK_1', 'HPO_SRC0', 'HPO_SRC_RESERVED', - 'HPO_TOP_CLOCK_GATING_DIS', 'HPO_TOP_CLOCK_GATING_DISABLE', - 'HPO_TOP_CLOCK_GATING_EN', - 'HPO_TOP_FEATURE_GATED_DISPCLK_IN_HDMISTREAMENC0', - 'HPO_TOP_FEATURE_GATED_HDMICHARCLK0', - 'HPO_TOP_FEATURE_GATED_HDMISTREAMCLK0', - 'HPO_TOP_FEATURE_GATED_SOCCLK_IN_HDMISTREAMENC0', - 'HPO_TOP_PERMANENT_DISPCLK', 'HPO_TOP_PERMANENT_HDMICHARCLK0', - 'HPO_TOP_PERMANENT_HDMISTREAMCLK0', 'HPO_TOP_PERMANENT_SOCCLK', - 'HPO_TOP_REGISTER_GATED_DISPCLK', - 'HPO_TOP_REGISTER_GATED_HDMICHARCLK0', - 'HPO_TOP_REGISTER_GATED_HDMISTREAMCLK0', 'HPO_TOP_TEST_CLK_SEL', - 'HPO_TOP_TEST_CLOCK_RESERVED', - 'HSA_RUNTIME_CORE_INC_SDMA_REGISTERS_H_', 'HS_GS', 'HS_STAGE_OFF', - 'HS_STAGE_ON', 'HUBP_BLANK_EN', 'HUBP_BLANK_SW_ASSERT', - 'HUBP_BLANK_SW_DEASSERT', 'HUBP_IN_ACTIVE', 'HUBP_IN_BLANK', - 'HUBP_IN_VBLANK', 'HUBP_MEASURE_WIN_MODE_DCFCLK', - 'HUBP_MEASURE_WIN_MODE_DCFCLK_0', - 'HUBP_MEASURE_WIN_MODE_DCFCLK_1', - 'HUBP_MEASURE_WIN_MODE_DCFCLK_2', - 'HUBP_MEASURE_WIN_MODE_DCFCLK_3', 'HUBP_NO_OUTSTANDING_REQ', - 'HUBP_SOFT_RESET', 'HUBP_SOFT_RESET_OFF', 'HUBP_SOFT_RESET_ON', - 'HUBP_TTU_DISABLE', 'HUBP_TTU_DISABLED', 'HUBP_TTU_ENABLED', - 'HUBP_VREADY_AT_OR_AFTER_VSYNC', 'HUBP_VTG_SEL', - 'HW_MIRRORING_DISABLE', 'HW_MIRRORING_ENABLE', 'H_MIRROR_EN', - 'Hdp_SurfaceEndian', 'ID_STREAM_DISABLE_ACKED', - 'ID_STREAM_DISABLE_NO_ACK', 'IHC_INTERRUPT_DEST', - 'IHC_INTERRUPT_LINE_STATUS', 'IH_CLIENT_TYPE', - 'IH_CLIENT_TYPE_RESERVED', 'IH_GFX_VMID_CLIENT', - 'IH_INTERFACE_TYPE', 'IH_LEGACY_INTERFACE', 'IH_MM_VMID_CLIENT', - 'IH_MULTI_VMID_CLIENT', 'IH_PERF_SEL', - 'IH_PERF_SEL_BIF_LINE0_FALLING', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF0', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF1', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF10', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF11', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF12', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF13', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF14', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF15', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF2', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF3', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF4', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF5', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF6', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF7', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF8', - 'IH_PERF_SEL_BIF_LINE0_FALLING_VF9', - 'IH_PERF_SEL_BIF_LINE0_RISING', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF0', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF1', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF10', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF11', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF12', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF13', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF14', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF15', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF2', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF3', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF4', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF5', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF6', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF7', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF8', - 'IH_PERF_SEL_BIF_LINE0_RISING_VF9', - 'IH_PERF_SEL_BUFFER_FIFO_FULL', 'IH_PERF_SEL_BUFFER_IDLE', - 'IH_PERF_SEL_CLIENT0_INT', 'IH_PERF_SEL_CLIENT10_INT', - 'IH_PERF_SEL_CLIENT11_INT', 'IH_PERF_SEL_CLIENT12_INT', - 'IH_PERF_SEL_CLIENT13_INT', 'IH_PERF_SEL_CLIENT14_INT', - 'IH_PERF_SEL_CLIENT15_INT', 'IH_PERF_SEL_CLIENT16_INT', - 'IH_PERF_SEL_CLIENT17_INT', 'IH_PERF_SEL_CLIENT18_INT', - 'IH_PERF_SEL_CLIENT19_INT', 'IH_PERF_SEL_CLIENT1_INT', - 'IH_PERF_SEL_CLIENT20_INT', 'IH_PERF_SEL_CLIENT21_INT', - 'IH_PERF_SEL_CLIENT22_INT', 'IH_PERF_SEL_CLIENT23_INT', - 'IH_PERF_SEL_CLIENT24_INT', 'IH_PERF_SEL_CLIENT25_INT', - 'IH_PERF_SEL_CLIENT26_INT', 'IH_PERF_SEL_CLIENT27_INT', - 'IH_PERF_SEL_CLIENT28_INT', 'IH_PERF_SEL_CLIENT29_INT', - 'IH_PERF_SEL_CLIENT2_INT', 'IH_PERF_SEL_CLIENT30_INT', - 'IH_PERF_SEL_CLIENT31_INT', 'IH_PERF_SEL_CLIENT3_INT', - 'IH_PERF_SEL_CLIENT4_INT', 'IH_PERF_SEL_CLIENT5_INT', - 'IH_PERF_SEL_CLIENT6_INT', 'IH_PERF_SEL_CLIENT7_INT', - 'IH_PERF_SEL_CLIENT8_INT', 'IH_PERF_SEL_CLIENT9_INT', - 'IH_PERF_SEL_CLIENT_CREDIT_ERROR', 'IH_PERF_SEL_COOKIE_REC_ERROR', - 'IH_PERF_SEL_CYCLE', 'IH_PERF_SEL_IDLE', 'IH_PERF_SEL_INPUT_IDLE', - 'IH_PERF_SEL_MC_WR_CLEAN_PENDING', - 'IH_PERF_SEL_MC_WR_CLEAN_STALL', 'IH_PERF_SEL_MC_WR_COUNT', - 'IH_PERF_SEL_MC_WR_IDLE', 'IH_PERF_SEL_MC_WR_STALL', - 'IH_PERF_SEL_RB0_FULL', 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF0', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF1', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF10', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF11', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF12', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF13', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF14', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF15', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF2', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF3', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF4', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF5', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF6', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF7', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF8', - 'IH_PERF_SEL_RB0_FULL_DRAIN_DROP_VF9', 'IH_PERF_SEL_RB0_FULL_VF0', - 'IH_PERF_SEL_RB0_FULL_VF1', 'IH_PERF_SEL_RB0_FULL_VF10', - 'IH_PERF_SEL_RB0_FULL_VF11', 'IH_PERF_SEL_RB0_FULL_VF12', - 'IH_PERF_SEL_RB0_FULL_VF13', 'IH_PERF_SEL_RB0_FULL_VF14', - 'IH_PERF_SEL_RB0_FULL_VF15', 'IH_PERF_SEL_RB0_FULL_VF2', - 'IH_PERF_SEL_RB0_FULL_VF3', 'IH_PERF_SEL_RB0_FULL_VF4', - 'IH_PERF_SEL_RB0_FULL_VF5', 'IH_PERF_SEL_RB0_FULL_VF6', - 'IH_PERF_SEL_RB0_FULL_VF7', 'IH_PERF_SEL_RB0_FULL_VF8', - 'IH_PERF_SEL_RB0_FULL_VF9', 'IH_PERF_SEL_RB0_LOAD_RPTR', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF0', 'IH_PERF_SEL_RB0_LOAD_RPTR_VF1', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF10', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF11', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF12', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF13', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF14', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF15', 'IH_PERF_SEL_RB0_LOAD_RPTR_VF2', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF3', 'IH_PERF_SEL_RB0_LOAD_RPTR_VF4', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF5', 'IH_PERF_SEL_RB0_LOAD_RPTR_VF6', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF7', 'IH_PERF_SEL_RB0_LOAD_RPTR_VF8', - 'IH_PERF_SEL_RB0_LOAD_RPTR_VF9', 'IH_PERF_SEL_RB0_OVERFLOW', - 'IH_PERF_SEL_RB0_OVERFLOW_VF0', 'IH_PERF_SEL_RB0_OVERFLOW_VF1', - 'IH_PERF_SEL_RB0_OVERFLOW_VF10', 'IH_PERF_SEL_RB0_OVERFLOW_VF11', - 'IH_PERF_SEL_RB0_OVERFLOW_VF12', 'IH_PERF_SEL_RB0_OVERFLOW_VF13', - 'IH_PERF_SEL_RB0_OVERFLOW_VF14', 'IH_PERF_SEL_RB0_OVERFLOW_VF15', - 'IH_PERF_SEL_RB0_OVERFLOW_VF2', 'IH_PERF_SEL_RB0_OVERFLOW_VF3', - 'IH_PERF_SEL_RB0_OVERFLOW_VF4', 'IH_PERF_SEL_RB0_OVERFLOW_VF5', - 'IH_PERF_SEL_RB0_OVERFLOW_VF6', 'IH_PERF_SEL_RB0_OVERFLOW_VF7', - 'IH_PERF_SEL_RB0_OVERFLOW_VF8', 'IH_PERF_SEL_RB0_OVERFLOW_VF9', - 'IH_PERF_SEL_RB0_RPTR_WRAP', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF0', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF1', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF10', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF11', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF12', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF13', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF14', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF15', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF2', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF3', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF4', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF5', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF6', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF7', 'IH_PERF_SEL_RB0_RPTR_WRAP_VF8', - 'IH_PERF_SEL_RB0_RPTR_WRAP_VF9', 'IH_PERF_SEL_RB0_WPTR_WRAP', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF0', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF1', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF10', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF11', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF12', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF13', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF14', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF15', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF2', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF3', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF4', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF5', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF6', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF7', 'IH_PERF_SEL_RB0_WPTR_WRAP_VF8', - 'IH_PERF_SEL_RB0_WPTR_WRAP_VF9', 'IH_PERF_SEL_RB0_WPTR_WRITEBACK', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF0', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF1', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF10', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF11', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF12', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF13', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF14', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF15', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF2', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF3', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF4', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF5', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF6', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF7', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF8', - 'IH_PERF_SEL_RB0_WPTR_WRITEBACK_VF9', 'IH_PERF_SEL_RB1_FULL', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF0', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF1', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF10', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF11', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF12', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF13', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF14', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF15', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF2', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF3', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF4', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF5', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF6', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF7', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF8', - 'IH_PERF_SEL_RB1_FULL_DRAIN_DROP_VF9', 'IH_PERF_SEL_RB1_FULL_VF0', - 'IH_PERF_SEL_RB1_FULL_VF1', 'IH_PERF_SEL_RB1_FULL_VF10', - 'IH_PERF_SEL_RB1_FULL_VF11', 'IH_PERF_SEL_RB1_FULL_VF12', - 'IH_PERF_SEL_RB1_FULL_VF13', 'IH_PERF_SEL_RB1_FULL_VF14', - 'IH_PERF_SEL_RB1_FULL_VF15', 'IH_PERF_SEL_RB1_FULL_VF2', - 'IH_PERF_SEL_RB1_FULL_VF3', 'IH_PERF_SEL_RB1_FULL_VF4', - 'IH_PERF_SEL_RB1_FULL_VF5', 'IH_PERF_SEL_RB1_FULL_VF6', - 'IH_PERF_SEL_RB1_FULL_VF7', 'IH_PERF_SEL_RB1_FULL_VF8', - 'IH_PERF_SEL_RB1_FULL_VF9', 'IH_PERF_SEL_RB1_LOAD_RPTR', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF0', 'IH_PERF_SEL_RB1_LOAD_RPTR_VF1', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF10', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF11', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF12', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF13', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF14', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF15', 'IH_PERF_SEL_RB1_LOAD_RPTR_VF2', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF3', 'IH_PERF_SEL_RB1_LOAD_RPTR_VF4', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF5', 'IH_PERF_SEL_RB1_LOAD_RPTR_VF6', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF7', 'IH_PERF_SEL_RB1_LOAD_RPTR_VF8', - 'IH_PERF_SEL_RB1_LOAD_RPTR_VF9', 'IH_PERF_SEL_RB1_OVERFLOW', - 'IH_PERF_SEL_RB1_OVERFLOW_VF0', 'IH_PERF_SEL_RB1_OVERFLOW_VF1', - 'IH_PERF_SEL_RB1_OVERFLOW_VF10', 'IH_PERF_SEL_RB1_OVERFLOW_VF11', - 'IH_PERF_SEL_RB1_OVERFLOW_VF12', 'IH_PERF_SEL_RB1_OVERFLOW_VF13', - 'IH_PERF_SEL_RB1_OVERFLOW_VF14', 'IH_PERF_SEL_RB1_OVERFLOW_VF15', - 'IH_PERF_SEL_RB1_OVERFLOW_VF2', 'IH_PERF_SEL_RB1_OVERFLOW_VF3', - 'IH_PERF_SEL_RB1_OVERFLOW_VF4', 'IH_PERF_SEL_RB1_OVERFLOW_VF5', - 'IH_PERF_SEL_RB1_OVERFLOW_VF6', 'IH_PERF_SEL_RB1_OVERFLOW_VF7', - 'IH_PERF_SEL_RB1_OVERFLOW_VF8', 'IH_PERF_SEL_RB1_OVERFLOW_VF9', - 'IH_PERF_SEL_RB1_RPTR_WRAP', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF0', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF1', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF10', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF11', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF12', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF13', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF14', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF15', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF2', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF3', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF4', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF5', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF6', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF7', 'IH_PERF_SEL_RB1_RPTR_WRAP_VF8', - 'IH_PERF_SEL_RB1_RPTR_WRAP_VF9', 'IH_PERF_SEL_RB1_WPTR_WRAP', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF0', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF1', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF10', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF11', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF12', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF13', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF14', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF15', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF2', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF3', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF4', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF5', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF6', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF7', 'IH_PERF_SEL_RB1_WPTR_WRAP_VF8', - 'IH_PERF_SEL_RB1_WPTR_WRAP_VF9', 'IH_PERF_SEL_RB2_FULL', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF0', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF1', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF10', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF11', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF12', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF13', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF14', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF15', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF2', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF3', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF4', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF5', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF6', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF7', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF8', - 'IH_PERF_SEL_RB2_FULL_DRAIN_DROP_VF9', 'IH_PERF_SEL_RB2_FULL_VF0', - 'IH_PERF_SEL_RB2_FULL_VF1', 'IH_PERF_SEL_RB2_FULL_VF10', - 'IH_PERF_SEL_RB2_FULL_VF11', 'IH_PERF_SEL_RB2_FULL_VF12', - 'IH_PERF_SEL_RB2_FULL_VF13', 'IH_PERF_SEL_RB2_FULL_VF14', - 'IH_PERF_SEL_RB2_FULL_VF15', 'IH_PERF_SEL_RB2_FULL_VF2', - 'IH_PERF_SEL_RB2_FULL_VF3', 'IH_PERF_SEL_RB2_FULL_VF4', - 'IH_PERF_SEL_RB2_FULL_VF5', 'IH_PERF_SEL_RB2_FULL_VF6', - 'IH_PERF_SEL_RB2_FULL_VF7', 'IH_PERF_SEL_RB2_FULL_VF8', - 'IH_PERF_SEL_RB2_FULL_VF9', 'IH_PERF_SEL_RB2_LOAD_RPTR', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF0', 'IH_PERF_SEL_RB2_LOAD_RPTR_VF1', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF10', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF11', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF12', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF13', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF14', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF15', 'IH_PERF_SEL_RB2_LOAD_RPTR_VF2', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF3', 'IH_PERF_SEL_RB2_LOAD_RPTR_VF4', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF5', 'IH_PERF_SEL_RB2_LOAD_RPTR_VF6', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF7', 'IH_PERF_SEL_RB2_LOAD_RPTR_VF8', - 'IH_PERF_SEL_RB2_LOAD_RPTR_VF9', 'IH_PERF_SEL_RB2_OVERFLOW', - 'IH_PERF_SEL_RB2_OVERFLOW_VF0', 'IH_PERF_SEL_RB2_OVERFLOW_VF1', - 'IH_PERF_SEL_RB2_OVERFLOW_VF10', 'IH_PERF_SEL_RB2_OVERFLOW_VF11', - 'IH_PERF_SEL_RB2_OVERFLOW_VF12', 'IH_PERF_SEL_RB2_OVERFLOW_VF13', - 'IH_PERF_SEL_RB2_OVERFLOW_VF14', 'IH_PERF_SEL_RB2_OVERFLOW_VF15', - 'IH_PERF_SEL_RB2_OVERFLOW_VF2', 'IH_PERF_SEL_RB2_OVERFLOW_VF3', - 'IH_PERF_SEL_RB2_OVERFLOW_VF4', 'IH_PERF_SEL_RB2_OVERFLOW_VF5', - 'IH_PERF_SEL_RB2_OVERFLOW_VF6', 'IH_PERF_SEL_RB2_OVERFLOW_VF7', - 'IH_PERF_SEL_RB2_OVERFLOW_VF8', 'IH_PERF_SEL_RB2_OVERFLOW_VF9', - 'IH_PERF_SEL_RB2_RPTR_WRAP', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF0', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF1', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF10', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF11', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF12', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF13', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF14', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF15', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF2', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF3', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF4', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF5', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF6', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF7', 'IH_PERF_SEL_RB2_RPTR_WRAP_VF8', - 'IH_PERF_SEL_RB2_RPTR_WRAP_VF9', 'IH_PERF_SEL_RB2_WPTR_WRAP', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF0', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF1', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF10', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF11', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF12', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF13', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF14', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF15', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF2', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF3', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF4', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF5', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF6', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF7', 'IH_PERF_SEL_RB2_WPTR_WRAP_VF8', - 'IH_PERF_SEL_RB2_WPTR_WRAP_VF9', 'IH_PERF_SEL_SELF_IV_VALID', - 'IH_PERF_SEL_STORM_CLIENT_INT_DROP', - 'IH_REGISTER_WRITE_INTERFACE', 'IH_RING_ID', - 'IH_RING_ID_INTERRUPT', 'IH_RING_ID_REQUEST', - 'IH_RING_ID_RESERVED', 'IH_RING_ID_TRANSLATION', - 'IH_VF_RB_SELECT', 'IH_VF_RB_SELECT_CLIENT_FCN_ID', - 'IH_VF_RB_SELECT_IH_FCN_ID', 'IH_VF_RB_SELECT_PF', - 'IH_VF_RB_SELECT_RESERVED', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_BUSY', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_IS_BUSY', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_COMMAND_NOT_BUSY', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_IMMEDIATE_RESPONSE_VALID', - 'IMMEDIATE_COMMAND_STATUS_IMMEDIATE_RESULT_VALID_NO_IMMEDIATE_RESPONSE_VALID', - 'INDIRECT_BUFFER_VALID', 'INPUT_COVERAGE', 'INPUT_DEPTH_COVERAGE', - 'INPUT_FIFO_ERROR_TYPE', 'INPUT_INNER_COVERAGE', - 'INST_ID_ECC_INTERRUPT_MSG', 'INST_ID_HOST_REG_TRAP_MSG', - 'INST_ID_HW_TRAP', 'INST_ID_HW_TRAP_GET_TBA', 'INST_ID_KILL_SEQ', - 'INST_ID_PRIV_START', 'INST_ID_SPI_WREXEC', - 'INST_ID_TTRACE_NEW_PC_MSG', 'INTERRUPT_LINE_ASSERTED', - 'INTERRUPT_LINE_NOT_ASSERTED', 'INTERRUPT_SENT_TO_DMCUB', - 'INTERRUPT_SENT_TO_IH', 'INT_DISABLED', 'INT_ENABLED', - 'INT_LEVEL', 'INT_MASK', 'INT_PULSE', 'INVALID_REG_ACCESS_TYPE', - 'IQ_DEQUEUE_RETRY', 'IQ_INTR_TYPE_IB', 'IQ_INTR_TYPE_MQD', - 'IQ_INTR_TYPE_PQ', 'IQ_OFFLOAD_RETRY', 'IQ_QUEUE_SLEEP', - 'IQ_SCH_WAVE_MSG', 'IQ_SEM_REARM', 'JITTER_REMOVE_DISABLE', - 'LATE_Z', 'LB_ALPHA_DISABLE', 'LB_ALPHA_EN', 'LB_ALPHA_ENABLE', - 'LB_INTERLEAVE_DISABLE', 'LB_INTERLEAVE_EN', - 'LB_INTERLEAVE_ENABLE', 'LB_MEMORY_CONFIG', 'LB_MEMORY_CONFIG_0', - 'LB_MEMORY_CONFIG_1', 'LB_MEMORY_CONFIG_2', 'LB_MEMORY_CONFIG_3', - 'LEGACY_PIPE_INTERLEAVE', 'LEGACY_PIPE_INTERLEAVE_256B', - 'LEGACY_PIPE_INTERLEAVE_512B', 'LINESTRIP', 'LOOSE_PACK', - 'LSDMA_PERF_SEL', 'LSDMA_PERF_SEL_ATCL2_FREE', - 'LSDMA_PERF_SEL_ATCL2_INVREQ_FLUSH', - 'LSDMA_PERF_SEL_ATCL2_INVREQ_NFLUSH', - 'LSDMA_PERF_SEL_ATCL2_RET_ACK', 'LSDMA_PERF_SEL_ATCL2_RET_XNACK', - 'LSDMA_PERF_SEL_ATOMIC_MMHUB_WR_REQ', - 'LSDMA_PERF_SEL_ATOMIC_MMHUB_WR_RET', - 'LSDMA_PERF_SEL_CE_AFIFO_FULL', 'LSDMA_PERF_SEL_CE_BUSY', - 'LSDMA_PERF_SEL_CE_BUSY_END', 'LSDMA_PERF_SEL_CE_BUSY_START', - 'LSDMA_PERF_SEL_CE_DST_IDLE', 'LSDMA_PERF_SEL_CE_INFO1_FULL', - 'LSDMA_PERF_SEL_CE_INFO_FULL', 'LSDMA_PERF_SEL_CE_IN_IDLE', - 'LSDMA_PERF_SEL_CE_L1_STALL', 'LSDMA_PERF_SEL_CE_L1_WR_VLD', - 'LSDMA_PERF_SEL_CE_MMHUB_RDREQ_SEND', - 'LSDMA_PERF_SEL_CE_MMHUB_WRREQ_SEND', - 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_RD_REQ', - 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_RD_RET', - 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_WR_REQ', - 'LSDMA_PERF_SEL_CE_OR_F32_MMHUB_WR_RET', - 'LSDMA_PERF_SEL_CE_OUT_IDLE', 'LSDMA_PERF_SEL_CE_RD_STALL', - 'LSDMA_PERF_SEL_CE_RREQ_IDLE', 'LSDMA_PERF_SEL_CE_SPLIT_IDLE', - 'LSDMA_PERF_SEL_CE_WREQ_IDLE', 'LSDMA_PERF_SEL_CE_WR_IDLE', - 'LSDMA_PERF_SEL_CE_WR_STALL', 'LSDMA_PERF_SEL_CMD_OP_END', - 'LSDMA_PERF_SEL_CMD_OP_MATCH', 'LSDMA_PERF_SEL_CMD_OP_START', - 'LSDMA_PERF_SEL_CTX_CHANGE', - 'LSDMA_PERF_SEL_CTX_CHANGE_EXCEPTION', - 'LSDMA_PERF_SEL_CTX_CHANGE_EXPIRED', 'LSDMA_PERF_SEL_CYCLE', - 'LSDMA_PERF_SEL_DMA_L1_RD_SEND', 'LSDMA_PERF_SEL_DMA_L1_WR_SEND', - 'LSDMA_PERF_SEL_DMA_MC_RD_SEND', 'LSDMA_PERF_SEL_DMA_MC_WR_SEND', - 'LSDMA_PERF_SEL_DOORBELL', 'LSDMA_PERF_SEL_DRAM_ECC', - 'LSDMA_PERF_SEL_EX_IDLE', - 'LSDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 'LSDMA_PERF_SEL_F32_L1_WR_VLD', - 'LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER', - 'LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER_END', - 'LSDMA_PERF_SEL_F32_PERFCNT_TRIGGER_START', - 'LSDMA_PERF_SEL_GFX_SELECT', 'LSDMA_PERF_SEL_IB_CMD_FULL', - 'LSDMA_PERF_SEL_IB_CMD_IDLE', 'LSDMA_PERF_SEL_IB_MMHUB_RD_REQ', - 'LSDMA_PERF_SEL_IB_MMHUB_RD_RET', 'LSDMA_PERF_SEL_IDLE', - 'LSDMA_PERF_SEL_INT_IDLE', 'LSDMA_PERF_SEL_INT_REQ_COUNT', - 'LSDMA_PERF_SEL_INT_REQ_STALL', - 'LSDMA_PERF_SEL_INT_RESP_ACCEPTED', - 'LSDMA_PERF_SEL_INT_RESP_RETRY', - 'LSDMA_PERF_SEL_IS_INVREQ_ADDR_RD', - 'LSDMA_PERF_SEL_IS_INVREQ_ADDR_WR', - 'LSDMA_PERF_SEL_L1_INV_MIDDLE', 'LSDMA_PERF_SEL_L1_RDL2_IDLE', - 'LSDMA_PERF_SEL_L1_RDMC_IDLE', 'LSDMA_PERF_SEL_L1_RD_FIFO_IDLE', - 'LSDMA_PERF_SEL_L1_RD_INV_EN', 'LSDMA_PERF_SEL_L1_RD_INV_IDLE', - 'LSDMA_PERF_SEL_L1_RD_WAIT_INVADR', - 'LSDMA_PERF_SEL_L1_RD_XNACK_TIMEOUT', - 'LSDMA_PERF_SEL_L1_WRL2_IDLE', 'LSDMA_PERF_SEL_L1_WRMC_IDLE', - 'LSDMA_PERF_SEL_L1_WR_FIFO_IDLE', 'LSDMA_PERF_SEL_L1_WR_INV_EN', - 'LSDMA_PERF_SEL_L1_WR_INV_IDLE', - 'LSDMA_PERF_SEL_L1_WR_WAIT_INVADR', - 'LSDMA_PERF_SEL_L1_WR_XNACK_TIMEOUT', - 'LSDMA_PERF_SEL_MC_RD_COUNT', 'LSDMA_PERF_SEL_MC_RD_IDLE', - 'LSDMA_PERF_SEL_MC_RD_NO_POLL_IDLE', - 'LSDMA_PERF_SEL_MC_RD_RET_STALL', 'LSDMA_PERF_SEL_MC_WR_COUNT', - 'LSDMA_PERF_SEL_MC_WR_IDLE', - 'LSDMA_PERF_SEL_MMHUB_CE_RDRET_VALID', - 'LSDMA_PERF_SEL_MMHUB_CE_WRRET_VALID', - 'LSDMA_PERF_SEL_NACK_GEN_ERR', 'LSDMA_PERF_SEL_NUM_PACKET', - 'LSDMA_PERF_SEL_PAGE_SELECT', 'LSDMA_PERF_SEL_RB_CMD_FULL', - 'LSDMA_PERF_SEL_RB_CMD_IDLE', 'LSDMA_PERF_SEL_RB_EMPTY', - 'LSDMA_PERF_SEL_RB_FULL', 'LSDMA_PERF_SEL_RB_MMHUB_RD_REQ', - 'LSDMA_PERF_SEL_RB_MMHUB_RD_RET', 'LSDMA_PERF_SEL_RB_RPTR_WB', - 'LSDMA_PERF_SEL_RB_RPTR_WRAP', 'LSDMA_PERF_SEL_RB_WPTR_POLL_READ', - 'LSDMA_PERF_SEL_RB_WPTR_WRAP', 'LSDMA_PERF_SEL_RD_BA_RTR', - 'LSDMA_PERF_SEL_REG_IDLE', 'LSDMA_PERF_SEL_RLC0_SELECT', - 'LSDMA_PERF_SEL_RLC1_SELECT', 'LSDMA_PERF_SEL_SDMA_ATCL2_SEND', - 'LSDMA_PERF_SEL_SDMA_INVACK_FLUSH', - 'LSDMA_PERF_SEL_SDMA_INVACK_NFLUSH', 'LSDMA_PERF_SEL_SEM_IDLE', - 'LSDMA_PERF_SEL_SEM_REQ_COUNT', 'LSDMA_PERF_SEL_SEM_REQ_STALL', - 'LSDMA_PERF_SEL_SEM_RESP_FAIL', - 'LSDMA_PERF_SEL_SEM_RESP_INCOMPLETE', - 'LSDMA_PERF_SEL_SEM_RESP_PASS', 'LSDMA_PERF_SEL_SRBM_REG_SEND', - 'LSDMA_PERF_SEL_UTCL1_UTCL2_REQ', - 'LSDMA_PERF_SEL_UTCL1_UTCL2_RET', - 'LSDMA_PERF_SEL_WPTR_MMHUB_RD_REQ', - 'LSDMA_PERF_SEL_WPTR_MMHUB_RD_RET', 'LSDMA_PERF_SEL_WR_BA_RTR', - 'LS_STAGE_OFF', 'LS_STAGE_ON', 'LUT_2CFG_MEMORY_A', - 'LUT_2CFG_MEMORY_B', 'LUT_2CFG_NO_MEMORY', 'LUT_2_MODE_BYPASS', - 'LUT_2_MODE_RAMA_LUT', 'LUT_2_MODE_RAMB_LUT', 'LUT_4CFG_MEMORY_A', - 'LUT_4CFG_MEMORY_B', 'LUT_4CFG_NO_MEMORY', 'LUT_4CFG_ROM_A', - 'LUT_4CFG_ROM_B', 'LUT_4_MODE_BYPASS', 'LUT_4_MODE_RAMA_LUT', - 'LUT_4_MODE_RAMB_LUT', 'LUT_4_MODE_ROMA_LUT', - 'LUT_4_MODE_ROMB_LUT', 'LVTMA_RANDOM_PATTERN_SEED_ALL_PIXELS', - 'LVTMA_RANDOM_PATTERN_SEED_ONLY_DE_HIGH', - 'LVTMA_RANDOM_PATTERN_SEED_RAN_PAT', - 'MASTER_UPDATE_LOCK_DB_FIELD_BOTH', - 'MASTER_UPDATE_LOCK_DB_FIELD_BOTTOM', - 'MASTER_UPDATE_LOCK_DB_FIELD_RESERVED', - 'MASTER_UPDATE_LOCK_DB_FIELD_TOP', - 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_BOTH', - 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_LEFT', - 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_RESERVED', - 'MASTER_UPDATE_LOCK_DB_STEREO_SEL_RIGHT', - 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK', - 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_FALSE', - 'MASTER_UPDATE_LOCK_MASTER_UPDATE_LOCK_TRUE', - 'MASTER_UPDATE_LOCK_SEL', 'MASTER_UPDATE_LOCK_SEL_0', - 'MASTER_UPDATE_LOCK_SEL_1', 'MASTER_UPDATE_LOCK_SEL_2', - 'MASTER_UPDATE_LOCK_SEL_3', 'MASTER_UPDATE_LOCK_SEL_RESERVED4', - 'MASTER_UPDATE_LOCK_SEL_RESERVED5', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTH', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_BOTTOM', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_RESERVED', - 'MASTER_UPDATE_MODE_MASTER_UPDATE_INTERLACED_MODE_TOP', - 'MAX_INSTANCE', 'MAX_SEGMENT', 'MEM_ARB_MODE_AGE', - 'MEM_ARB_MODE_BOTH', 'MEM_ARB_MODE_FIXED', 'MEM_ARB_MODE_WEIGHT', - 'MEM_POWER_DIS_MODE_DISABLE', 'MEM_POWER_DIS_MODE_ENABLE', - 'MEM_POWER_FORCE_MODE_DEEP_SLEEP', - 'MEM_POWER_FORCE_MODE_LIGHT_SLEEP', 'MEM_POWER_FORCE_MODE_OFF', - 'MEM_POWER_FORCE_MODE_SHUT_DOWN', 'MEM_POWER_STATUS_DEEP_SLEEP', - 'MEM_POWER_STATUS_LIGHT_SLEEP', 'MEM_POWER_STATUS_ON', - 'MEM_POWER_STATUS_SHUT_DOWN', 'MEM_PWR_DIS_CTRL', - 'MEM_PWR_DIS_MODE', 'MEM_PWR_FORCE_CTRL', 'MEM_PWR_FORCE_CTRL2', - 'MEM_PWR_FORCE_MODE', 'MEM_PWR_SEL_CTRL', 'MEM_PWR_SEL_CTRL2', - 'MEM_PWR_STATUS', 'METADATA_HUBP_SEL', 'METADATA_HUBP_SEL_0', - 'METADATA_HUBP_SEL_1', 'METADATA_HUBP_SEL_2', - 'METADATA_HUBP_SEL_3', 'METADATA_HUBP_SEL_RESERVED', - 'METADATA_STREAM_DP', 'METADATA_STREAM_DVE', - 'METADATA_STREAM_TYPE_SEL', 'META_CHUNK_SIZE', - 'META_CHUNK_SIZE_1KB', 'META_CHUNK_SIZE_2KB', - 'META_CHUNK_SIZE_4KB', 'META_CHUNK_SIZE_8KB', 'META_LINEAR', - 'META_SURF_LINEAR', 'META_SURF_TILED', 'ME_ID0', 'ME_ID1', - 'ME_ID2', 'ME_ID3', 'MICROSECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK', - 'MICROSECOND_TIME_BASE_CLOCK_IS_XTALIN', - 'MICROSECOND_TIME_BASE_CLOCK_SOURCE_SEL', - 'MILLISECOND_TIME_BASE_CLOCK_IS_DCCGREFCLK', - 'MILLISECOND_TIME_BASE_CLOCK_IS_XTALIN', - 'MILLISECOND_TIME_BASE_CLOCK_SOURCE_SEL', 'MIN_CHUNK_SIZE', - 'MIN_CHUNK_SIZE_1024B', 'MIN_CHUNK_SIZE_256B', - 'MIN_CHUNK_SIZE_512B', 'MIN_META_CHUNK_SIZE', - 'MIN_META_CHUNK_SIZE_128B', 'MIN_META_CHUNK_SIZE_256B', - 'MIN_META_CHUNK_SIZE_64B', 'MMHUB_BASE', 'MMHUB_BASE__INST0_SEG0', - 'MMHUB_BASE__INST0_SEG1', 'MMHUB_BASE__INST0_SEG2', - 'MMHUB_BASE__INST0_SEG3', 'MMHUB_BASE__INST0_SEG4', - 'MMHUB_BASE__INST1_SEG0', 'MMHUB_BASE__INST1_SEG1', - 'MMHUB_BASE__INST1_SEG2', 'MMHUB_BASE__INST1_SEG3', - 'MMHUB_BASE__INST1_SEG4', 'MMHUB_BASE__INST2_SEG0', - 'MMHUB_BASE__INST2_SEG1', 'MMHUB_BASE__INST2_SEG2', - 'MMHUB_BASE__INST2_SEG3', 'MMHUB_BASE__INST2_SEG4', - 'MMHUB_BASE__INST3_SEG0', 'MMHUB_BASE__INST3_SEG1', - 'MMHUB_BASE__INST3_SEG2', 'MMHUB_BASE__INST3_SEG3', - 'MMHUB_BASE__INST3_SEG4', 'MMHUB_BASE__INST4_SEG0', - 'MMHUB_BASE__INST4_SEG1', 'MMHUB_BASE__INST4_SEG2', - 'MMHUB_BASE__INST4_SEG3', 'MMHUB_BASE__INST4_SEG4', - 'MMHUB_BASE__INST5_SEG0', 'MMHUB_BASE__INST5_SEG1', - 'MMHUB_BASE__INST5_SEG2', 'MMHUB_BASE__INST5_SEG3', - 'MMHUB_BASE__INST5_SEG4', 'MMHUB_BASE__INST6_SEG0', - 'MMHUB_BASE__INST6_SEG1', 'MMHUB_BASE__INST6_SEG2', - 'MMHUB_BASE__INST6_SEG3', 'MMHUB_BASE__INST6_SEG4', 'MONO_10LSB', - 'MONO_10MSB', 'MONO_12LSB', 'MONO_12MSB', 'MONO_16', 'MONO_2BIT', - 'MONO_8', 'MP0_BASE', 'MP0_BASE__INST0_SEG0', + 'HSA_RUNTIME_CORE_INC_SDMA_REGISTERS_H_', 'INDIRECT_BUFFER_VALID', + 'MAX_INSTANCE', 'MAX_SEGMENT', 'MMHUB_BASE', + 'MMHUB_BASE__INST0_SEG0', 'MMHUB_BASE__INST0_SEG1', + 'MMHUB_BASE__INST0_SEG2', 'MMHUB_BASE__INST0_SEG3', + 'MMHUB_BASE__INST0_SEG4', 'MMHUB_BASE__INST1_SEG0', + 'MMHUB_BASE__INST1_SEG1', 'MMHUB_BASE__INST1_SEG2', + 'MMHUB_BASE__INST1_SEG3', 'MMHUB_BASE__INST1_SEG4', + 'MMHUB_BASE__INST2_SEG0', 'MMHUB_BASE__INST2_SEG1', + 'MMHUB_BASE__INST2_SEG2', 'MMHUB_BASE__INST2_SEG3', + 'MMHUB_BASE__INST2_SEG4', 'MMHUB_BASE__INST3_SEG0', + 'MMHUB_BASE__INST3_SEG1', 'MMHUB_BASE__INST3_SEG2', + 'MMHUB_BASE__INST3_SEG3', 'MMHUB_BASE__INST3_SEG4', + 'MMHUB_BASE__INST4_SEG0', 'MMHUB_BASE__INST4_SEG1', + 'MMHUB_BASE__INST4_SEG2', 'MMHUB_BASE__INST4_SEG3', + 'MMHUB_BASE__INST4_SEG4', 'MMHUB_BASE__INST5_SEG0', + 'MMHUB_BASE__INST5_SEG1', 'MMHUB_BASE__INST5_SEG2', + 'MMHUB_BASE__INST5_SEG3', 'MMHUB_BASE__INST5_SEG4', + 'MMHUB_BASE__INST6_SEG0', 'MMHUB_BASE__INST6_SEG1', + 'MMHUB_BASE__INST6_SEG2', 'MMHUB_BASE__INST6_SEG3', + 'MMHUB_BASE__INST6_SEG4', 'MP0_BASE', 'MP0_BASE__INST0_SEG0', 'MP0_BASE__INST0_SEG1', 'MP0_BASE__INST0_SEG2', 'MP0_BASE__INST0_SEG3', 'MP0_BASE__INST0_SEG4', 'MP0_BASE__INST1_SEG0', 'MP0_BASE__INST1_SEG1', @@ -66082,189 +14053,7 @@ __all__ = \ 'MP1_BASE__INST5_SEG3', 'MP1_BASE__INST5_SEG4', 'MP1_BASE__INST6_SEG0', 'MP1_BASE__INST6_SEG1', 'MP1_BASE__INST6_SEG2', 'MP1_BASE__INST6_SEG3', - 'MP1_BASE__INST6_SEG4', 'MPCC_BG_COLOR_BPC', - 'MPCC_BG_COLOR_BPC_10bit', 'MPCC_BG_COLOR_BPC_11bit', - 'MPCC_BG_COLOR_BPC_12bit', 'MPCC_BG_COLOR_BPC_8bit', - 'MPCC_BG_COLOR_BPC_9bit', 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY', - 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_FALSE', - 'MPCC_CONTROL_MPCC_ACTIVE_OVERLAP_ONLY_TRUE', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_GLOBAL_ALPHA', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN', - 'MPCC_CONTROL_MPCC_ALPHA_BLND_MODE_UNUSED', - 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE', - 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_FALSE', - 'MPCC_CONTROL_MPCC_ALPHA_MULTIPLIED_MODE_TRUE', - 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE', - 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE_0', - 'MPCC_CONTROL_MPCC_BOT_GAIN_MODE_1', 'MPCC_CONTROL_MPCC_MODE', - 'MPCC_CONTROL_MPCC_MODE_BYPASS', - 'MPCC_CONTROL_MPCC_MODE_TOP_BOT_BLENDING', - 'MPCC_CONTROL_MPCC_MODE_TOP_LAYER_ONLY', - 'MPCC_CONTROL_MPCC_MODE_TOP_LAYER_PASSTHROUGH', - 'MPCC_GAMUT_REMAP_COEF_FORMAT_ENUM', - 'MPCC_GAMUT_REMAP_COEF_FORMAT_S2_13', - 'MPCC_GAMUT_REMAP_COEF_FORMAT_S3_12', 'MPCC_GAMUT_REMAP_MODE_0', - 'MPCC_GAMUT_REMAP_MODE_1', 'MPCC_GAMUT_REMAP_MODE_2', - 'MPCC_GAMUT_REMAP_MODE_ENUM', 'MPCC_GAMUT_REMAP_MODE_RSV', - 'MPCC_MCM_3DLUT_17CUBE', 'MPCC_MCM_3DLUT_30BIT', - 'MPCC_MCM_3DLUT_30BIT_ENUM', 'MPCC_MCM_3DLUT_36BIT', - 'MPCC_MCM_3DLUT_9CUBE', 'MPCC_MCM_3DLUT_RAM_SEL', - 'MPCC_MCM_3DLUT_SIZE_ENUM', 'MPCC_MCM_GAMMA_LUT_BYPASS', - 'MPCC_MCM_GAMMA_LUT_DISABLE_PWL', 'MPCC_MCM_GAMMA_LUT_ENABLE_PWL', - 'MPCC_MCM_GAMMA_LUT_MODE_ENUM', - 'MPCC_MCM_GAMMA_LUT_PWL_DISABLE_ENUM', 'MPCC_MCM_GAMMA_LUT_RAMA', - 'MPCC_MCM_GAMMA_LUT_RAMB', 'MPCC_MCM_GAMMA_LUT_RAM_LUT', - 'MPCC_MCM_GAMMA_LUT_RESERVED_1', 'MPCC_MCM_GAMMA_LUT_RESERVED_3', - 'MPCC_MCM_GAMMA_LUT_SEL_ENUM', 'MPCC_MCM_LUT_2_MODE_BYPASS', - 'MPCC_MCM_LUT_2_MODE_ENUM', 'MPCC_MCM_LUT_2_MODE_RAMA_LUT', - 'MPCC_MCM_LUT_2_MODE_RAMB_LUT', 'MPCC_MCM_LUT_ALL_USE_R', - 'MPCC_MCM_LUT_BLUE_LUT', 'MPCC_MCM_LUT_CONFIG_MODE', - 'MPCC_MCM_LUT_DIFFERENT_RGB', 'MPCC_MCM_LUT_DISABLE_DEBUG', - 'MPCC_MCM_LUT_ENABLE_DEBUG', 'MPCC_MCM_LUT_GREEN_LUT', - 'MPCC_MCM_LUT_NUM_SEG', 'MPCC_MCM_LUT_RAMA_ACCESS', - 'MPCC_MCM_LUT_RAMB_ACCESS', 'MPCC_MCM_LUT_RAM_SEL', - 'MPCC_MCM_LUT_READ_COLOR_SEL', 'MPCC_MCM_LUT_READ_DBG', - 'MPCC_MCM_LUT_RED_LUT', 'MPCC_MCM_LUT_SEGMENTS_1', - 'MPCC_MCM_LUT_SEGMENTS_128', 'MPCC_MCM_LUT_SEGMENTS_16', - 'MPCC_MCM_LUT_SEGMENTS_2', 'MPCC_MCM_LUT_SEGMENTS_32', - 'MPCC_MCM_LUT_SEGMENTS_4', 'MPCC_MCM_LUT_SEGMENTS_64', - 'MPCC_MCM_LUT_SEGMENTS_8', 'MPCC_MCM_MEM_PWR_FORCE_DIS', - 'MPCC_MCM_MEM_PWR_FORCE_DS', 'MPCC_MCM_MEM_PWR_FORCE_ENUM', - 'MPCC_MCM_MEM_PWR_FORCE_LS', 'MPCC_MCM_MEM_PWR_FORCE_SD', - 'MPCC_MCM_MEM_PWR_STATE_DS', 'MPCC_MCM_MEM_PWR_STATE_ENUM', - 'MPCC_MCM_MEM_PWR_STATE_LS', 'MPCC_MCM_MEM_PWR_STATE_ON', - 'MPCC_MCM_MEM_PWR_STATE_SD', 'MPCC_MCM_RAM0_ACCESS', - 'MPCC_MCM_RAM1_ACCESS', 'MPCC_MCM_RAM2_ACCESS', - 'MPCC_MCM_RAM3_ACCESS', 'MPCC_OGAM_ALL_USE_R', - 'MPCC_OGAM_BLUE_LUT', 'MPCC_OGAM_DIFFERENT_RGB', - 'MPCC_OGAM_DISABLE_DEBUG', 'MPCC_OGAM_DISABLE_PWL', - 'MPCC_OGAM_ENABLE_DEBUG', 'MPCC_OGAM_ENABLE_PWL', - 'MPCC_OGAM_GREEN_LUT', 'MPCC_OGAM_LUT_2CFG_MEMORY_A', - 'MPCC_OGAM_LUT_2CFG_MEMORY_B', 'MPCC_OGAM_LUT_2CFG_NO_MEMORY', - 'MPCC_OGAM_LUT_2_CONFIG_ENUM', 'MPCC_OGAM_LUT_CONFIG_MODE', - 'MPCC_OGAM_LUT_PWL_DISABLE_ENUM', - 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL', - 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMA', - 'MPCC_OGAM_LUT_RAM_CONTROL_MPCC_OGAM_LUT_RAM_SEL_RAMB', - 'MPCC_OGAM_LUT_RAM_SEL', 'MPCC_OGAM_LUT_READ_COLOR_SEL', - 'MPCC_OGAM_LUT_READ_DBG', 'MPCC_OGAM_LUT_SEL_ENUM', - 'MPCC_OGAM_MODE_0', 'MPCC_OGAM_MODE_2', - 'MPCC_OGAM_MODE_MPCC_OGAM_MODE_ENUM', 'MPCC_OGAM_MODE_RSV', - 'MPCC_OGAM_MODE_RSV1', 'MPCC_OGAM_NUM_SEG', 'MPCC_OGAM_RAMA', - 'MPCC_OGAM_RAMA_ACCESS', 'MPCC_OGAM_RAMB', - 'MPCC_OGAM_RAMB_ACCESS', 'MPCC_OGAM_RED_LUT', - 'MPCC_OGAM_SEGMENTS_1', 'MPCC_OGAM_SEGMENTS_128', - 'MPCC_OGAM_SEGMENTS_16', 'MPCC_OGAM_SEGMENTS_2', - 'MPCC_OGAM_SEGMENTS_32', 'MPCC_OGAM_SEGMENTS_4', - 'MPCC_OGAM_SEGMENTS_64', 'MPCC_OGAM_SEGMENTS_8', - 'MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN', - 'MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN_FALSE', - 'MPCC_OGAM_TEST_DEBUG_INDEX_MPCC_OGAM_TEST_DEBUG_WRITE_EN_TRUE', - 'MPCC_SM_CONTROL_MPCC_SM_EN', 'MPCC_SM_CONTROL_MPCC_SM_EN_FALSE', - 'MPCC_SM_CONTROL_MPCC_SM_EN_TRUE', - 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT', - 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_FALSE', - 'MPCC_SM_CONTROL_MPCC_SM_FIELD_ALT_TRUE', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_HIGH', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_FORCE_LOW', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_NO_FORCE', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_FRAME_POL_RESERVED', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_HIGH', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_FORCE_LOW', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_NO_FORCE', - 'MPCC_SM_CONTROL_MPCC_SM_FORCE_NEXT_TOP_POL_RESERVED', - 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT', - 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_FALSE', - 'MPCC_SM_CONTROL_MPCC_SM_FRAME_ALT_TRUE', - 'MPCC_SM_CONTROL_MPCC_SM_MODE', - 'MPCC_SM_CONTROL_MPCC_SM_MODE_CHECKERBOARD_SUBSAMPLING', - 'MPCC_SM_CONTROL_MPCC_SM_MODE_COLUMN_SUBSAMPLING', - 'MPCC_SM_CONTROL_MPCC_SM_MODE_ROW_SUBSAMPLING', - 'MPCC_SM_CONTROL_MPCC_SM_MODE_SINGLE_PLANE', - 'MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN', - 'MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN_FALSE', - 'MPCC_TEST_DEBUG_INDEX_MPCC_TEST_DEBUG_WRITE_EN_TRUE', - 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET', - 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_ADR_CFG_CUR_VUPDATE_LOCK_SET_TRUE', - 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET', - 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_ADR_CFG_VUPDATE_LOCK_SET_TRUE', - 'MPC_CFG_ADR_VUPDATE_LOCK_SET', - 'MPC_CFG_ADR_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_ADR_VUPDATE_LOCK_SET_TRUE', - 'MPC_CFG_CFG_VUPDATE_LOCK_SET', - 'MPC_CFG_CFG_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_CFG_VUPDATE_LOCK_SET_TRUE', - 'MPC_CFG_CUR_VUPDATE_LOCK_SET', - 'MPC_CFG_CUR_VUPDATE_LOCK_SET_FALSE', - 'MPC_CFG_CUR_VUPDATE_LOCK_SET_TRUE', 'MPC_CFG_MPC_TEST_CLK_SEL', - 'MPC_CFG_MPC_TEST_CLK_SEL_0', 'MPC_CFG_MPC_TEST_CLK_SEL_1', - 'MPC_CFG_MPC_TEST_CLK_SEL_2', 'MPC_CFG_MPC_TEST_CLK_SEL_3', - 'MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN', - 'MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN_FALSE', - 'MPC_CFG_TEST_DEBUG_INDEX_MPC_CFG_TEST_DEBUG_WRITE_EN_TRUE', - 'MPC_CRC_CALC_INTERLACE_MODE', 'MPC_CRC_CALC_MODE', - 'MPC_CRC_CALC_STEREO_MODE', 'MPC_CRC_CONTINUOUS_MODE', - 'MPC_CRC_INTERLACE_MODE_BOTH_RESET_BOTTOM', - 'MPC_CRC_INTERLACE_MODE_BOTH_RESET_EACH', - 'MPC_CRC_INTERLACE_MODE_BOTTOM', 'MPC_CRC_INTERLACE_MODE_TOP', - 'MPC_CRC_ONE_SHOT_MODE', 'MPC_CRC_SOURCE_SELECT', - 'MPC_CRC_SOURCE_SEL_DPP', 'MPC_CRC_SOURCE_SEL_DWB', - 'MPC_CRC_SOURCE_SEL_OPP', 'MPC_CRC_SOURCE_SEL_OTHER', - 'MPC_CRC_STEREO_MODE_BOTH_RESET_EACH', - 'MPC_CRC_STEREO_MODE_BOTH_RESET_RIGHT', - 'MPC_CRC_STEREO_MODE_LEFT', 'MPC_CRC_STEREO_MODE_RIGHT', - 'MPC_DEBUG_BUS1_DATA_SELECT', - 'MPC_DEBUG_BUS1_DATA_SELECT_MPC_CFG', - 'MPC_DEBUG_BUS1_DATA_SELECT_MPC_CONT', - 'MPC_DEBUG_BUS1_DATA_SELECT_MPC_RSV', - 'MPC_DEBUG_BUS1_DATA_SELECT_MPC_RSV1', - 'MPC_DEBUG_BUS2_DATA_SELECT', 'MPC_DEBUG_BUS2_DATA_SELECT_MPCC', - 'MPC_DEBUG_BUS2_DATA_SELECT_MPCC_CONT', - 'MPC_DEBUG_BUS2_DATA_SELECT_MPCC_MCM', - 'MPC_DEBUG_BUS2_DATA_SELECT_RES', - 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT', - 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPCC_DEBUG_ID', - 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPCC_MCM_DEBUG_ID', - 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPCC_OGAM_DEBUG_ID', - 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPC_DEBUG_ID', - 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_MPC_OCSC_DEBUG_ID', - 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_RSV1', - 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_SFR_DEBUG_DATA', - 'MPC_DEBUG_BUS_DIRECT_OUT_DATA_SELECT_SFT_DEBUG_DATA', - 'MPC_DEBUG_BUS_MPCC_BYTE0', 'MPC_DEBUG_BUS_MPCC_BYTE1', - 'MPC_DEBUG_BUS_MPCC_BYTE2', 'MPC_DEBUG_BUS_MPCC_BYTE3', - 'MPC_DEBUG_BUS_MPCC_BYTE_SELECT', 'MPC_OCSC_COEF_FORMAT', - 'MPC_OCSC_COEF_FORMAT_S2_13', 'MPC_OCSC_COEF_FORMAT_S3_12', - 'MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN', - 'MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN_FALSE', - 'MPC_OCSC_TEST_DEBUG_INDEX_MPC_OCSC_TEST_DEBUG_WRITE_EN_TRUE', - 'MPC_OUT_CSC_MODE', 'MPC_OUT_CSC_MODE_0', 'MPC_OUT_CSC_MODE_1', - 'MPC_OUT_CSC_MODE_2', 'MPC_OUT_CSC_MODE_RSV', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_10BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_11BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_12BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_6BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_8BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_9BITS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_BYPASS', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_MODE', - 'MPC_OUT_DENORM_CONTROL_MPC_OUT_DENORM_PASSTHROUGH', - 'MPC_OUT_RATE_CONTROL_DISABLE_SET', - 'MPC_OUT_RATE_CONTROL_SET_DISABLE', - 'MPC_OUT_RATE_CONTROL_SET_ENABLE', - 'MSA_V_TIMING_OVERRIDE_DISABLED', 'MSA_V_TIMING_OVERRIDE_ENABLED', - 'MTYPE', 'MTYPE_CC', 'MTYPE_C_RO_S', 'MTYPE_C_RO_US', - 'MTYPE_C_RW_S', 'MTYPE_C_RW_US', 'MTYPE_NC', 'MTYPE_RESERVED_1', - 'MTYPE_RESERVED_5', 'MTYPE_RESERVED_7', 'MTYPE_UC', 'MTYPE_WC', - 'MULTIPLE_BY1', 'MULTIPLE_BY2', 'MULTIPLE_BY3_RESERVED', - 'MULTIPLE_BY4', 'MULTIPLE_RESERVED', 'MULT_16', 'MULT_8', - 'MemArbMode', 'NBIO_BASE', 'NBIO_BASE__INST0_SEG0', + 'MP1_BASE__INST6_SEG4', 'NBIO_BASE', 'NBIO_BASE__INST0_SEG0', 'NBIO_BASE__INST0_SEG1', 'NBIO_BASE__INST0_SEG2', 'NBIO_BASE__INST0_SEG3', 'NBIO_BASE__INST0_SEG4', 'NBIO_BASE__INST1_SEG0', 'NBIO_BASE__INST1_SEG1', @@ -66281,621 +14070,28 @@ __all__ = \ 'NBIO_BASE__INST5_SEG2', 'NBIO_BASE__INST5_SEG3', 'NBIO_BASE__INST5_SEG4', 'NBIO_BASE__INST6_SEG0', 'NBIO_BASE__INST6_SEG1', 'NBIO_BASE__INST6_SEG2', - 'NBIO_BASE__INST6_SEG3', 'NBIO_BASE__INST6_SEG4', 'NON_BYPASS', - 'NOT_FORCE_THE_CLOCK_DISABLED', 'NOT_SENT', 'NO_DIST', 'NO_DIV', - 'NO_FORCE', 'NO_FORCE_REQ', 'NO_FORCE_REQUEST', - 'NO_MIN_CHUNK_SIZE', 'NO_MIN_META_CHUNK_SIZE', - 'NO_OUTSTANDING_REQ', 'NUM_SIMD_PER_CU', 'NVD_H', - 'OBUF_BYPASS_DIS', 'OBUF_BYPASS_EN', 'OBUF_BYPASS_SEL', - 'OBUF_FULL', 'OBUF_FULL_RECOUT', 'OBUF_HALF_RECOUT', - 'OBUF_IS_HALF_RECOUT_WIDTH_SEL', 'OBUF_RECOUT', - 'OBUF_USE_FULL_BUFFER_SEL', 'OFFCHIP_HS_DEALLOC', 'OFF_SEQ', - 'OKAY', 'OKAY_NODATA', 'OMODE_BLEND', 'OMODE_O_THEN_B', - 'OMODE_P_THEN_O_THEN_B', 'OMODE_RESERVED_3', 'ON_SEQ', - 'OPPBUF_DISPLAY_SEGMENTATION', - 'OPPBUF_DISPLAY_SEGMENTATION_1_SEGMENT', - 'OPPBUF_DISPLAY_SEGMENTATION_2_SEGMENT', - 'OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT', - 'OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT_SPLIT_LEFT', - 'OPPBUF_DISPLAY_SEGMENTATION_4_SEGMENT_SPLIT_RIGHT', - 'OPP_ABM_DEBUG_BUS_SELECT_CONTROL', - 'OPP_DPG_DEBUG_BUS_SELECT_CONTROL', - 'OPP_FMT_DEBUG_BUS_SELECT_CONTROL', - 'OPP_OPPBUF_DEBUG_BUS_SELECT_CONTROL', - 'OPP_OPP_PIPE_DEBUG_BUS_SELECT_CONTROL', 'OPP_PIPE_CLOCK_DISABLE', - 'OPP_PIPE_CLOCK_ENABLE', 'OPP_PIPE_CLOCK_ENABLE_CONTROL', - 'OPP_PIPE_CRC_CONT_EN', 'OPP_PIPE_CRC_DISABLE', 'OPP_PIPE_CRC_EN', - 'OPP_PIPE_CRC_ENABLE', 'OPP_PIPE_CRC_INTERLACE_EN', - 'OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_INTERLACED', - 'OPP_PIPE_CRC_INTERLACE_EN_INTERPRET_AS_PROGRESSIVE', - 'OPP_PIPE_CRC_INTERLACE_MODE', - 'OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_BOTTOM_FIELD', - 'OPP_PIPE_CRC_INTERLACE_MODE_BOTH_RESET_AFTER_EACH_FIELD', - 'OPP_PIPE_CRC_INTERLACE_MODE_BOTTOM', - 'OPP_PIPE_CRC_INTERLACE_MODE_TOP', 'OPP_PIPE_CRC_MODE_CONTINUOUS', - 'OPP_PIPE_CRC_MODE_ONE_SHOT', 'OPP_PIPE_CRC_ONE_SHOT_PENDING', - 'OPP_PIPE_CRC_ONE_SHOT_PENDING_NOT_PENDING', - 'OPP_PIPE_CRC_ONE_SHOT_PENDING_PENDING', - 'OPP_PIPE_CRC_PIXEL_SELECT', - 'OPP_PIPE_CRC_PIXEL_SELECT_ALL_PIXELS', - 'OPP_PIPE_CRC_PIXEL_SELECT_EVEN_PIXELS', - 'OPP_PIPE_CRC_PIXEL_SELECT_ODD_PIXELS', - 'OPP_PIPE_CRC_PIXEL_SELECT_RESERVED', - 'OPP_PIPE_CRC_SOURCE_SELECT', 'OPP_PIPE_CRC_SOURCE_SELECT_FMT', - 'OPP_PIPE_CRC_SOURCE_SELECT_SFT', 'OPP_PIPE_CRC_STEREO_EN', - 'OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_NON_STEREO', - 'OPP_PIPE_CRC_STEREO_EN_INTERPRET_AS_STEREO', - 'OPP_PIPE_CRC_STEREO_MODE', - 'OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_EACH_EYE', - 'OPP_PIPE_CRC_STEREO_MODE_BOTH_RESET_AFTER_RIGHT_EYE', - 'OPP_PIPE_CRC_STEREO_MODE_LEFT', 'OPP_PIPE_CRC_STEREO_MODE_RIGHT', - 'OPP_PIPE_DIGTIAL_BYPASS_CONTROL', - 'OPP_PIPE_DIGTIAL_BYPASS_DISABLE', - 'OPP_PIPE_DIGTIAL_BYPASS_ENABLE', 'OPP_TEST_CLK_SEL_CONTROL', - 'OPP_TEST_CLK_SEL_DISPCLK_ABM0', 'OPP_TEST_CLK_SEL_DISPCLK_ABM1', - 'OPP_TEST_CLK_SEL_DISPCLK_ABM2', 'OPP_TEST_CLK_SEL_DISPCLK_ABM3', - 'OPP_TEST_CLK_SEL_DISPCLK_OPP0', 'OPP_TEST_CLK_SEL_DISPCLK_OPP1', - 'OPP_TEST_CLK_SEL_DISPCLK_OPP2', 'OPP_TEST_CLK_SEL_DISPCLK_OPP3', - 'OPP_TEST_CLK_SEL_DISPCLK_P', 'OPP_TEST_CLK_SEL_DISPCLK_R', - 'OPP_TEST_CLK_SEL_RESERVED0', 'OPP_TEST_CLK_SEL_RESERVED1', - 'OPP_TEST_CLK_SEL_RESERVED2', 'OPP_TEST_CLK_SEL_RESERVED3', - 'OPP_TOP_CLOCK_DISABLED_STATUS', 'OPP_TOP_CLOCK_ENABLED_STATUS', - 'OPP_TOP_CLOCK_ENABLE_STATUS', 'OPP_TOP_CLOCK_GATING_CONTROL', - 'OPP_TOP_CLOCK_GATING_DISABLED', 'OPP_TOP_CLOCK_GATING_ENABLED', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG0', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG1', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG2', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_OTG3', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_RESERVED4', - 'OPTC_GSL_SOURCE_SELECT_GSL_TIMING_SYNC_SEL_RESERVED5', - 'OPT_COMB_ADD', 'OPT_COMB_BLEND_DISABLED', 'OPT_COMB_MAX', - 'OPT_COMB_MIN', 'OPT_COMB_NONE', 'OPT_COMB_REVSUBTRACT', - 'OPT_COMB_SAFE_ADD', 'OPT_COMB_SUBTRACT', 'OSSSYS_BASE', - 'OSSSYS_BASE__INST0_SEG0', 'OSSSYS_BASE__INST0_SEG1', - 'OSSSYS_BASE__INST0_SEG2', 'OSSSYS_BASE__INST0_SEG3', - 'OSSSYS_BASE__INST0_SEG4', 'OSSSYS_BASE__INST1_SEG0', - 'OSSSYS_BASE__INST1_SEG1', 'OSSSYS_BASE__INST1_SEG2', - 'OSSSYS_BASE__INST1_SEG3', 'OSSSYS_BASE__INST1_SEG4', - 'OSSSYS_BASE__INST2_SEG0', 'OSSSYS_BASE__INST2_SEG1', - 'OSSSYS_BASE__INST2_SEG2', 'OSSSYS_BASE__INST2_SEG3', - 'OSSSYS_BASE__INST2_SEG4', 'OSSSYS_BASE__INST3_SEG0', - 'OSSSYS_BASE__INST3_SEG1', 'OSSSYS_BASE__INST3_SEG2', - 'OSSSYS_BASE__INST3_SEG3', 'OSSSYS_BASE__INST3_SEG4', - 'OSSSYS_BASE__INST4_SEG0', 'OSSSYS_BASE__INST4_SEG1', - 'OSSSYS_BASE__INST4_SEG2', 'OSSSYS_BASE__INST4_SEG3', - 'OSSSYS_BASE__INST4_SEG4', 'OSSSYS_BASE__INST5_SEG0', - 'OSSSYS_BASE__INST5_SEG1', 'OSSSYS_BASE__INST5_SEG2', - 'OSSSYS_BASE__INST5_SEG3', 'OSSSYS_BASE__INST5_SEG4', - 'OSSSYS_BASE__INST6_SEG0', 'OSSSYS_BASE__INST6_SEG1', - 'OSSSYS_BASE__INST6_SEG2', 'OSSSYS_BASE__INST6_SEG3', - 'OSSSYS_BASE__INST6_SEG4', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_FALSE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_DB_TRUE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_FALSE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_EN_TRUE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_FALSE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_STEREO_SEL_OVR_TRUE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_BOTH', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_INTERLACE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_BLOCK_PROGRASSIVE', - 'OTG_3D_STRUCTURE_CONTROL_OTG_3D_STRUCTURE_V_UPDATE_MODE_RESERVED', - 'OTG_ADD_PIXEL', 'OTG_ADD_PIXEL_FORCE', 'OTG_ADD_PIXEL_NOOP', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_CURRENT', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_FIRST', - 'OTG_CONTROL_OTG_DISABLE_POINT_CNTL_DISABLE_VUPDATE', - 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL', - 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_DP', - 'OTG_CONTROL_OTG_FIELD_NUMBER_CNTL_NORMAL', - 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY', - 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_FALSE', - 'OTG_CONTROL_OTG_FIELD_NUMBER_POLARITY_TRUE', - 'OTG_CONTROL_OTG_MASTER_EN', 'OTG_CONTROL_OTG_MASTER_EN_FALSE', - 'OTG_CONTROL_OTG_MASTER_EN_TRUE', 'OTG_CONTROL_OTG_OUT_MUX', - 'OTG_CONTROL_OTG_OUT_MUX_0', 'OTG_CONTROL_OTG_OUT_MUX_1', - 'OTG_CONTROL_OTG_OUT_MUX_2', 'OTG_CONTROL_OTG_START_POINT_CNTL', - 'OTG_CONTROL_OTG_START_POINT_CNTL_DP', - 'OTG_CONTROL_OTG_START_POINT_CNTL_NORMAL', - 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN', - 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_FALSE', - 'OTG_COUNT_CONTROL_OTG_HORZ_COUNT_BY2_EN_TRUE', - 'OTG_CRC_CNTL_OTG_CRC1_EN', 'OTG_CRC_CNTL_OTG_CRC1_EN_FALSE', - 'OTG_CRC_CNTL_OTG_CRC1_EN_TRUE', 'OTG_CRC_CNTL_OTG_CRC_CONT_EN', - 'OTG_CRC_CNTL_OTG_CRC_CONT_EN_FALSE', - 'OTG_CRC_CNTL_OTG_CRC_CONT_EN_TRUE', - 'OTG_CRC_CNTL_OTG_CRC_CONT_MODE', - 'OTG_CRC_CNTL_OTG_CRC_CONT_MODE_NORESET', - 'OTG_CRC_CNTL_OTG_CRC_CONT_MODE_RESET', 'OTG_CRC_CNTL_OTG_CRC_EN', - 'OTG_CRC_CNTL_OTG_CRC_EN_FALSE', 'OTG_CRC_CNTL_OTG_CRC_EN_TRUE', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_BOTTOM', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTH_FIELD', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_BOTTOM', - 'OTG_CRC_CNTL_OTG_CRC_INTERLACE_MODE_TOP', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_EYES', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_BOTH_FIELDS', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_LEFT', - 'OTG_CRC_CNTL_OTG_CRC_STEREO_MODE_RIGHT', - 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS', - 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_FALSE', - 'OTG_CRC_CNTL_OTG_CRC_USE_NEW_AND_REPEATED_PIXELS_TRUE', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IAB', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_IA_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_AB', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_I_A_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UAB', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_UA_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_AB', - 'OTG_CRC_CNTL_OTG_OTG_CRC0_SELECT_U_A_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IAB', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_IA_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_AB', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_I_A_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UAB', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_UA_B', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_AB', - 'OTG_CRC_CNTL_OTG_OTG_CRC1_SELECT_U_A_B', - 'OTG_DIG_UPDATE_VCOUNT_0', 'OTG_DIG_UPDATE_VCOUNT_1', - 'OTG_DIG_UPDATE_VCOUNT_MODE', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_0', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_1', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_2', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_DRR_TIMING_DBUF_UPDATE_MODE_3', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_FALSE', - 'OTG_DOUBLE_BUFFER_CONTROL_OTG_UPDATE_INSTANTLY_TRUE', - 'OTG_DROP_PIXEL', 'OTG_DROP_PIXEL_FORCE', 'OTG_DROP_PIXEL_NOOP', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_1FRAME', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_2FRAME', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_4FRAME', - 'OTG_DRR_CONTROL_OTG_DRR_AVERAGE_FRAME_8FRAME', - 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN', - 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_FALSE', - 'OTG_DTMTEST_CNTL_OTG_DTMTEST_OTG_EN_TRUE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_FALSE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_GRANULARITY_TRUE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_FALSE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_POLARITY_TRUE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1CLK', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC1DATA', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2CLK', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_DDC2DATA', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICA', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICB', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICC', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICD', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICE', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENERICF', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_CLK', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_GENLK_VSYNC', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD1', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_HPD2', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC0', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_LOGIC1', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_RESERVED', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKA', - 'OTG_FLOW_CONTROL_OTG_FLOW_CONTROL_SOURCE_SELECT_SWAPLOCKB', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_FALSE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CHECK_TRUE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_FALSE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_CLEAR_TRUE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_DISABLE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_HCOUNT_VCOUNT', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_MODE_RESERVED', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_FALSE', - 'OTG_FORCE_COUNT_NOW_CNTL_OTG_FORCE_COUNT_NOW_TRIG_SEL_TRUE', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG0', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG1', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG2', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_OTG3', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_RESERVED4', - 'OTG_GLOBAL_CONTROL2_MANUAL_FLOW_CONTROL_SEL_RESERVED5', - 'OTG_GLOBAL_CONTROL3_DIG_UPDATE_EYE_SEL', - 'OTG_GLOBAL_CONTROL3_DIG_UPDATE_FIELD_SEL', - 'OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_FIELD', - 'OTG_GLOBAL_CONTROL3_MASTER_UPDATE_LOCK_DB_STEREO_SEL', - 'OTG_GLOBAL_UPDATE_LOCK_DISABLE', 'OTG_GLOBAL_UPDATE_LOCK_EN', - 'OTG_GLOBAL_UPDATE_LOCK_ENABLE', 'OTG_GSL_MASTER_MODE', - 'OTG_GSL_MASTER_MODE_0', 'OTG_GSL_MASTER_MODE_1', - 'OTG_GSL_MASTER_MODE_2', 'OTG_GSL_MASTER_MODE_3', - 'OTG_HORZ_REPETITION_COUNT', 'OTG_HORZ_REPETITION_COUNT_0', - 'OTG_HORZ_REPETITION_COUNT_1', 'OTG_HORZ_REPETITION_COUNT_10', - 'OTG_HORZ_REPETITION_COUNT_11', 'OTG_HORZ_REPETITION_COUNT_12', - 'OTG_HORZ_REPETITION_COUNT_13', 'OTG_HORZ_REPETITION_COUNT_14', - 'OTG_HORZ_REPETITION_COUNT_15', 'OTG_HORZ_REPETITION_COUNT_2', - 'OTG_HORZ_REPETITION_COUNT_3', 'OTG_HORZ_REPETITION_COUNT_4', - 'OTG_HORZ_REPETITION_COUNT_5', 'OTG_HORZ_REPETITION_COUNT_6', - 'OTG_HORZ_REPETITION_COUNT_7', 'OTG_HORZ_REPETITION_COUNT_8', - 'OTG_HORZ_REPETITION_COUNT_9', 'OTG_H_SYNC_A_POL', - 'OTG_H_SYNC_A_POL_HIGH', 'OTG_H_SYNC_A_POL_LOW', - 'OTG_H_TIMING_DIV_MODE', 'OTG_H_TIMING_DIV_MODE_AUTO', - 'OTG_H_TIMING_DIV_MODE_DIV_BY2', 'OTG_H_TIMING_DIV_MODE_DIV_BY4', - 'OTG_H_TIMING_DIV_MODE_MANUAL', 'OTG_H_TIMING_DIV_MODE_NOAUTO', - 'OTG_H_TIMING_DIV_MODE_NO_DIV', 'OTG_H_TIMING_DIV_MODE_RESERVED', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_FALSE', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_ENABLE_TRUE', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_BOTTOM', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_NOT2', - 'OTG_INTERLACE_CONTROL_OTG_INTERLACE_FORCE_NEXT_FIELD_TOP', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_COUNT_NOW_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_GSL_VSYNC_GAP_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_SNAPSHOT_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGA_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_TRIGB_INT_TYPE_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_MSK_TRUE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_FALSE', - 'OTG_INTERRUPT_CONTROL_OTG_VSYNC_NOM_INT_TYPE_TRUE', - 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE', - 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_FALSE', - 'OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_OTG_MANUAL_FORCE_VSYNC_NEXT_LINE_TRUE', - 'OTG_MASTER_UPDATE_LOCK_DB_EN', 'OTG_MASTER_UPDATE_LOCK_DISABLE', - 'OTG_MASTER_UPDATE_LOCK_ENABLE', 'OTG_MASTER_UPDATE_LOCK_GSL_EN', - 'OTG_MASTER_UPDATE_LOCK_GSL_EN_FALSE', - 'OTG_MASTER_UPDATE_LOCK_GSL_EN_TRUE', - 'OTG_MASTER_UPDATE_LOCK_VCOUNT_0', - 'OTG_MASTER_UPDATE_LOCK_VCOUNT_1', - 'OTG_MASTER_UPDATE_LOCK_VCOUNT_MODE', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_DISABLE', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_RESERVED', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERA', - 'OTG_SNAPSHOT_CONTROL_OTG_AUTO_SNAPSHOT_TRIG_SEL_TRIGGERB', - 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR', - 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_FALSE', - 'OTG_SNAPSHOT_STATUS_OTG_SNAPSHOT_CLEAR_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_FALSE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_CLEAR_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_FALSE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_ENABLE_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_FALSE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_CPU_SS_INT_TYPE_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_FALSE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_TRUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_OFF', - 'OTG_STATIC_SCREEN_CONTROL_OTG_STATIC_SCREEN_OVERRIDE_VALUE_ON', - 'OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL', - 'OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL_FALSE', - 'OTG_STEREO_CONTROL_OTG_FIELD_NUM_SEL_TRUE', - 'OTG_STEREO_CONTROL_OTG_STEREO_EN', - 'OTG_STEREO_CONTROL_OTG_STEREO_EN_FALSE', - 'OTG_STEREO_CONTROL_OTG_STEREO_EN_TRUE', - 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY', - 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_FALSE', - 'OTG_STEREO_CONTROL_OTG_STEREO_EYE_FLAG_POLARITY_TRUE', - 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY', - 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_FALSE', - 'OTG_STEREO_CONTROL_OTG_STEREO_SYNC_OUTPUT_POLARITY_TRUE', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_LEFT', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_NO', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RESERVED', - 'OTG_STEREO_FORCE_NEXT_EYE_OTG_STEREO_FORCE_NEXT_EYE_RIGHT', - 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR', - 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_FALSE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_CLEAR_TRUE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICA', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICB', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICC', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_GENERICD', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_HSYNCA', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_INTERLACE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC0', - 'OTG_TRIGA_CNTL_OTG_TRIGA_POLARITY_SELECT_LOGIC1', - 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_FALSE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_RESYNC_BYPASS_EN_TRUE', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG0', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG1', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG2', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_OTG3', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_RESERVED4', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_PIPE_SELECT_RESERVED5', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_BLON_Y_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_FLIP_PENDING', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICA_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICB_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICC_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICD_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICE_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENERICF_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_CLK_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GENLK_VSYNC_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_GSL_ALLOW_FLIP', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD1', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HPD2', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_HSYNC', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC0', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_LOGIC1', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_SOF', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_RESERVED14', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKA_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_SWAPLOCKB_PIN', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_LOCK', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_UPDATE_PENDING', - 'OTG_TRIGA_CNTL_OTG_TRIGA_SOURCE_SELECT_VSYNC', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_0', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_1', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_2', - 'OTG_TRIGA_FALLING_EDGE_DETECT_CNTL_3', - 'OTG_TRIGA_FREQUENCY_SELECT', 'OTG_TRIGA_FREQUENCY_SELECT_0', - 'OTG_TRIGA_FREQUENCY_SELECT_1', 'OTG_TRIGA_FREQUENCY_SELECT_2', - 'OTG_TRIGA_FREQUENCY_SELECT_3', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_0', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_1', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_2', - 'OTG_TRIGA_RISING_EDGE_DETECT_CNTL_3', - 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR', - 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_FALSE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_CLEAR_TRUE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICA', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICB', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICC', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_GENERICD', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_HSYNCA', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_INTERLACE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC0', - 'OTG_TRIGB_CNTL_OTG_TRIGB_POLARITY_SELECT_LOGIC1', - 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_FALSE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_RESYNC_BYPASS_EN_TRUE', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG0', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG1', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG2', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_OTG3', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_RESERVED4', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_PIPE_SELECT_RESERVED5', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_BLON_Y_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_FLIP_PENDING', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICA_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICB_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICC_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICD_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICE_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENERICF_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_CLK_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GENLK_VSYNC_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_GSL_ALLOW_FLIP', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD1', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HPD2', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_HSYNC', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC0', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_LOGIC1', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_MANUAL_FLOW_CONTROL', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_SOF', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_OTG_TRIG_MANUAL_CONTROL', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_RESERVED14', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKA_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_SWAPLOCKB_PIN', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_LOCK', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_UPDATE_PENDING', - 'OTG_TRIGB_CNTL_OTG_TRIGB_SOURCE_SELECT_VSYNC', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_0', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_1', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_2', - 'OTG_TRIGB_FALLING_EDGE_DETECT_CNTL_3', - 'OTG_TRIGB_FREQUENCY_SELECT', 'OTG_TRIGB_FREQUENCY_SELECT_0', - 'OTG_TRIGB_FREQUENCY_SELECT_1', 'OTG_TRIGB_FREQUENCY_SELECT_2', - 'OTG_TRIGB_FREQUENCY_SELECT_3', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_0', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_1', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_2', - 'OTG_TRIGB_RISING_EDGE_DETECT_CNTL_3', - 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK', - 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_FALSE', - 'OTG_UPDATE_LOCK_OTG_UPDATE_LOCK_TRUE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_FALSE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_CLEAR_TRUE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_FALSE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_ENABLE_TRUE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_FALSE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_INT_TYPE_TRUE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_FALSE', - 'OTG_VERTICAL_INTERRUPT0_CONTROL_OTG_VERTICAL_INTERRUPT0_OUTPUT_POLARITY_TRUE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_CLEAR_FALSE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_CLEAR_TRUE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_FALSE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_ENABLE_TRUE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_FALSE', - 'OTG_VERTICAL_INTERRUPT1_CONTROL_OTG_VERTICAL_INTERRUPT1_INT_TYPE_TRUE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_CLEAR_FALSE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_CLEAR_TRUE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_FALSE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_ENABLE_TRUE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_FALSE', - 'OTG_VERTICAL_INTERRUPT2_CONTROL_OTG_VERTICAL_INTERRUPT2_INT_TYPE_TRUE', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_DISABLE', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_RESERVED', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERA', - 'OTG_VERT_SYNC_CONTROL_OTG_AUTO_FORCE_VSYNC_MODE_TRIGGERB', - 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR', - 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_FALSE', - 'OTG_VERT_SYNC_CONTROL_OTG_FORCE_VSYNC_NEXT_LINE_CLEAR_TRUE', - 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR', - 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_FALSE', - 'OTG_VSYNC_NOM_INT_STATUS_OTG_VSYNC_NOM_INT_CLEAR_TRUE', - 'OTG_VUPDATE_BLOCK_DISABLE', 'OTG_VUPDATE_BLOCK_DISABLE_OFF', - 'OTG_VUPDATE_BLOCK_DISABLE_ON', 'OTG_V_SYNC_A_POL', - 'OTG_V_SYNC_A_POL_HIGH', 'OTG_V_SYNC_A_POL_LOW', - 'OTG_V_SYNC_MODE', 'OTG_V_SYNC_MODE_HBLANK', - 'OTG_V_SYNC_MODE_HSYNC', - 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD', - 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_0', - 'OTG_V_TOTAL_CONTROL_OTG_DRR_EVENT_ACTIVE_PERIOD_1', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_DISABLE', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_ON_EVENT_ENABLE', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_DISABLE', - 'OTG_V_TOTAL_CONTROL_OTG_FORCE_LOCK_TO_MASTER_VSYNC_ENABLE', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_FALSE', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MAX_SEL_TRUE', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_FALSE', - 'OTG_V_TOTAL_CONTROL_OTG_V_TOTAL_MIN_SEL_TRUE', - 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK', - 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK_FALSE', - 'OTG_V_TOTAL_INT_STATUS_OTG_SET_V_TOTAL_MIN_EVENT_OCCURRED_ACK_TRUE', - 'OUTPUT_LINE', 'OUTPUT_POINT', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_NOT_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_BUFFER_COMPLETION_INTERRUPT_STATUS_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_DISABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLE', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_INTERRUPT_ENABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_NOT_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_DESCRIPTOR_ERROR_STATUS_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_DISABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLE', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_INTERRUPT_ENABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_NOT_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_FIFO_ERROR_STATUS_SET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_DISABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_INTERRUPT_ON_COMPLETION_ENABLE_INTERRUPT_ENABLED', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_NO_TRAFFIC_PRIORITY', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_DO_RUN', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_IS_RESET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RESET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_NOT_RUN', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RESET', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_STREAM_RUN', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_TRAFFIC_PRIORITY', - 'OUTPUT_STREAM_DESCRIPTOR_CONTROL_AND_STATUS_YES_TRAFFIC_PRIORITY', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_16', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_20', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_24', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_32_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_8_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_BITS_PER_SAMPLE_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_1', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_10_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_11_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_12_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_13_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_14_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_15_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_16_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_2', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_3', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_4', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_5', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_6', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_7', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_8', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_NUMBER_OF_CHANNELS_9_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY1', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY2_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY3', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY4_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY5_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY6_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY7_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_DIVISOR_BY8_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY1', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY2', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY3_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_BY4', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_MULTIPLE_RESERVED', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_44P1KHZ', - 'OUTPUT_STREAM_DESCRIPTOR_FORMAT_SAMPLE_BASE_RATE_48KHZ', - 'OUTPUT_TRIANGLE_CCW', 'OUTPUT_TRIANGLE_CW', 'OUTSTANDING_REQ', - 'OVERRUN', 'OreoMode', 'PACKET2_PAD_MASK', 'PACKET2_PAD_SHIFT', - 'PACKET3_ACQUIRE_MEM', 'PACKET3_ACQUIRE_MEM_GCR_RANGE_IS_PA', - 'PACKET3_AQL_PACKET', 'PACKET3_ATOMIC_GDS', 'PACKET3_ATOMIC_MEM', + 'NBIO_BASE__INST6_SEG3', 'NBIO_BASE__INST6_SEG4', 'NVD_H', + 'OSSSYS_BASE', 'OSSSYS_BASE__INST0_SEG0', + 'OSSSYS_BASE__INST0_SEG1', 'OSSSYS_BASE__INST0_SEG2', + 'OSSSYS_BASE__INST0_SEG3', 'OSSSYS_BASE__INST0_SEG4', + 'OSSSYS_BASE__INST1_SEG0', 'OSSSYS_BASE__INST1_SEG1', + 'OSSSYS_BASE__INST1_SEG2', 'OSSSYS_BASE__INST1_SEG3', + 'OSSSYS_BASE__INST1_SEG4', 'OSSSYS_BASE__INST2_SEG0', + 'OSSSYS_BASE__INST2_SEG1', 'OSSSYS_BASE__INST2_SEG2', + 'OSSSYS_BASE__INST2_SEG3', 'OSSSYS_BASE__INST2_SEG4', + 'OSSSYS_BASE__INST3_SEG0', 'OSSSYS_BASE__INST3_SEG1', + 'OSSSYS_BASE__INST3_SEG2', 'OSSSYS_BASE__INST3_SEG3', + 'OSSSYS_BASE__INST3_SEG4', 'OSSSYS_BASE__INST4_SEG0', + 'OSSSYS_BASE__INST4_SEG1', 'OSSSYS_BASE__INST4_SEG2', + 'OSSSYS_BASE__INST4_SEG3', 'OSSSYS_BASE__INST4_SEG4', + 'OSSSYS_BASE__INST5_SEG0', 'OSSSYS_BASE__INST5_SEG1', + 'OSSSYS_BASE__INST5_SEG2', 'OSSSYS_BASE__INST5_SEG3', + 'OSSSYS_BASE__INST5_SEG4', 'OSSSYS_BASE__INST6_SEG0', + 'OSSSYS_BASE__INST6_SEG1', 'OSSSYS_BASE__INST6_SEG2', + 'OSSSYS_BASE__INST6_SEG3', 'OSSSYS_BASE__INST6_SEG4', + 'PACKET2_PAD_MASK', 'PACKET2_PAD_SHIFT', 'PACKET3_ACQUIRE_MEM', + 'PACKET3_ACQUIRE_MEM_GCR_RANGE_IS_PA', 'PACKET3_AQL_PACKET', + 'PACKET3_ATOMIC_GDS', 'PACKET3_ATOMIC_MEM', 'PACKET3_BLK_CNTX_UPDATE', 'PACKET3_CLEAR_STATE', 'PACKET3_COND_EXEC', 'PACKET3_COND_INDIRECT_BUFFER', 'PACKET3_COND_INDIRECT_BUFFER_CNST', 'PACKET3_COND_PREEMPT', @@ -66975,8 +14171,7 @@ __all__ = \ 'PACKET3_WAIT_ON_DE_COUNTER_DIFF', 'PACKET3_WAIT_REG_MEM', 'PACKET3_WAIT_REG_MEM64', 'PACKET3_WRITE_CONST_RAM', 'PACKET3_WRITE_DATA', 'PACKET_TYPE0', 'PACKET_TYPE1', - 'PACKET_TYPE2', 'PACKET_TYPE3', 'PART_FRAC_EVEN', 'PART_FRAC_ODD', - 'PART_INTEGER', 'PART_POW2', 'PATCHES', 'PCIE0_BASE', + 'PACKET_TYPE2', 'PACKET_TYPE3', 'PCIE0_BASE', 'PCIE0_BASE__INST0_SEG0', 'PCIE0_BASE__INST0_SEG1', 'PCIE0_BASE__INST0_SEG2', 'PCIE0_BASE__INST0_SEG3', 'PCIE0_BASE__INST0_SEG4', 'PCIE0_BASE__INST1_SEG0', @@ -66994,6127 +14189,103 @@ __all__ = \ 'PCIE0_BASE__INST5_SEG3', 'PCIE0_BASE__INST5_SEG4', 'PCIE0_BASE__INST6_SEG0', 'PCIE0_BASE__INST6_SEG1', 'PCIE0_BASE__INST6_SEG2', 'PCIE0_BASE__INST6_SEG3', - 'PCIE0_BASE__INST6_SEG4', 'PERFCOUNTER_ACTIVE', - 'PERFCOUNTER_CNT0_STATE', 'PERFCOUNTER_CNT0_STATE_FREEZE', - 'PERFCOUNTER_CNT0_STATE_HW', 'PERFCOUNTER_CNT0_STATE_RESET', - 'PERFCOUNTER_CNT0_STATE_START', 'PERFCOUNTER_CNT1_STATE', - 'PERFCOUNTER_CNT1_STATE_FREEZE', 'PERFCOUNTER_CNT1_STATE_HW', - 'PERFCOUNTER_CNT1_STATE_RESET', 'PERFCOUNTER_CNT1_STATE_START', - 'PERFCOUNTER_CNT2_STATE', 'PERFCOUNTER_CNT2_STATE_FREEZE', - 'PERFCOUNTER_CNT2_STATE_HW', 'PERFCOUNTER_CNT2_STATE_RESET', - 'PERFCOUNTER_CNT2_STATE_START', 'PERFCOUNTER_CNT3_STATE', - 'PERFCOUNTER_CNT3_STATE_FREEZE', 'PERFCOUNTER_CNT3_STATE_HW', - 'PERFCOUNTER_CNT3_STATE_RESET', 'PERFCOUNTER_CNT3_STATE_START', - 'PERFCOUNTER_CNT4_STATE', 'PERFCOUNTER_CNT4_STATE_FREEZE', - 'PERFCOUNTER_CNT4_STATE_HW', 'PERFCOUNTER_CNT4_STATE_RESET', - 'PERFCOUNTER_CNT4_STATE_START', 'PERFCOUNTER_CNT5_STATE', - 'PERFCOUNTER_CNT5_STATE_FREEZE', 'PERFCOUNTER_CNT5_STATE_HW', - 'PERFCOUNTER_CNT5_STATE_RESET', 'PERFCOUNTER_CNT5_STATE_START', - 'PERFCOUNTER_CNT6_STATE', 'PERFCOUNTER_CNT6_STATE_FREEZE', - 'PERFCOUNTER_CNT6_STATE_HW', 'PERFCOUNTER_CNT6_STATE_RESET', - 'PERFCOUNTER_CNT6_STATE_START', 'PERFCOUNTER_CNT7_STATE', - 'PERFCOUNTER_CNT7_STATE_FREEZE', 'PERFCOUNTER_CNT7_STATE_HW', - 'PERFCOUNTER_CNT7_STATE_RESET', 'PERFCOUNTER_CNT7_STATE_START', - 'PERFCOUNTER_CNTL_SEL', 'PERFCOUNTER_CNTL_SEL_0', - 'PERFCOUNTER_CNTL_SEL_1', 'PERFCOUNTER_CNTL_SEL_2', - 'PERFCOUNTER_CNTL_SEL_3', 'PERFCOUNTER_CNTL_SEL_4', - 'PERFCOUNTER_CNTL_SEL_5', 'PERFCOUNTER_CNTL_SEL_6', - 'PERFCOUNTER_CNTL_SEL_7', 'PERFCOUNTER_CNTOFF_START_DIS', - 'PERFCOUNTER_CNTOFF_START_DISABLE', - 'PERFCOUNTER_CNTOFF_START_ENABLE', - 'PERFCOUNTER_COUNTED_VALUE_TYPE', - 'PERFCOUNTER_COUNTED_VALUE_TYPE_ACC', - 'PERFCOUNTER_COUNTED_VALUE_TYPE_MAX', - 'PERFCOUNTER_COUNTED_VALUE_TYPE_MIN', 'PERFCOUNTER_CVALUE_SEL', - 'PERFCOUNTER_CVALUE_SEL_11_0', 'PERFCOUNTER_CVALUE_SEL_15_0', - 'PERFCOUNTER_CVALUE_SEL_23_12', 'PERFCOUNTER_CVALUE_SEL_31_16', - 'PERFCOUNTER_CVALUE_SEL_35_24', 'PERFCOUNTER_CVALUE_SEL_47_0', - 'PERFCOUNTER_CVALUE_SEL_47_32', 'PERFCOUNTER_CVALUE_SEL_47_36', - 'PERFCOUNTER_HW_CNTL_SEL', 'PERFCOUNTER_HW_CNTL_SEL_CNTOFF', - 'PERFCOUNTER_HW_CNTL_SEL_RUNEN', 'PERFCOUNTER_HW_STOP1_0', - 'PERFCOUNTER_HW_STOP1_1', 'PERFCOUNTER_HW_STOP1_SEL', - 'PERFCOUNTER_HW_STOP2_0', 'PERFCOUNTER_HW_STOP2_1', - 'PERFCOUNTER_HW_STOP2_SEL', 'PERFCOUNTER_INC_MODE', - 'PERFCOUNTER_INC_MODE_BOTH_EDGE', 'PERFCOUNTER_INC_MODE_LSB', - 'PERFCOUNTER_INC_MODE_MULTI_BIT', 'PERFCOUNTER_INC_MODE_NEG_EDGE', - 'PERFCOUNTER_INC_MODE_POS_EDGE', 'PERFCOUNTER_INT_DISABLE', - 'PERFCOUNTER_INT_EN', 'PERFCOUNTER_INT_ENABLE', - 'PERFCOUNTER_INT_TYPE', 'PERFCOUNTER_INT_TYPE_LEVEL', - 'PERFCOUNTER_INT_TYPE_PULSE', 'PERFCOUNTER_IS_ACTIVE', - 'PERFCOUNTER_IS_IDLE', 'PERFCOUNTER_OFF_MASK', - 'PERFCOUNTER_OFF_MASK_DISABLE', 'PERFCOUNTER_OFF_MASK_ENABLE', - 'PERFCOUNTER_RESTART_DISABLE', 'PERFCOUNTER_RESTART_EN', - 'PERFCOUNTER_RESTART_ENABLE', 'PERFCOUNTER_RUNEN_MODE', - 'PERFCOUNTER_RUNEN_MODE_EDGE', 'PERFCOUNTER_RUNEN_MODE_LEVEL', - 'PERFCOUNTER_SAMPLE', 'PERFCOUNTER_START', - 'PERFCOUNTER_STATE_SEL0', 'PERFCOUNTER_STATE_SEL0_GLOBAL', - 'PERFCOUNTER_STATE_SEL0_LOCAL', 'PERFCOUNTER_STATE_SEL1', - 'PERFCOUNTER_STATE_SEL1_GLOBAL', 'PERFCOUNTER_STATE_SEL1_LOCAL', - 'PERFCOUNTER_STATE_SEL2', 'PERFCOUNTER_STATE_SEL2_GLOBAL', - 'PERFCOUNTER_STATE_SEL2_LOCAL', 'PERFCOUNTER_STATE_SEL3', - 'PERFCOUNTER_STATE_SEL3_GLOBAL', 'PERFCOUNTER_STATE_SEL3_LOCAL', - 'PERFCOUNTER_STATE_SEL4', 'PERFCOUNTER_STATE_SEL4_GLOBAL', - 'PERFCOUNTER_STATE_SEL4_LOCAL', 'PERFCOUNTER_STATE_SEL5', - 'PERFCOUNTER_STATE_SEL5_GLOBAL', 'PERFCOUNTER_STATE_SEL5_LOCAL', - 'PERFCOUNTER_STATE_SEL6', 'PERFCOUNTER_STATE_SEL6_GLOBAL', - 'PERFCOUNTER_STATE_SEL6_LOCAL', 'PERFCOUNTER_STATE_SEL7', - 'PERFCOUNTER_STATE_SEL7_GLOBAL', 'PERFCOUNTER_STATE_SEL7_LOCAL', - 'PERFCOUNTER_STOP', 'PERFMON_CNTOFF_AND', 'PERFMON_CNTOFF_AND_OR', - 'PERFMON_CNTOFF_INT_DISABLE', 'PERFMON_CNTOFF_INT_EN', - 'PERFMON_CNTOFF_INT_ENABLE', 'PERFMON_CNTOFF_INT_TYPE', - 'PERFMON_CNTOFF_INT_TYPE_LEVEL', 'PERFMON_CNTOFF_INT_TYPE_PULSE', - 'PERFMON_CNTOFF_OR', 'PERFMON_COUNTER_MODE', - 'PERFMON_COUNTER_MODE_ACCUM', - 'PERFMON_COUNTER_MODE_ACTIVE_CYCLES', - 'PERFMON_COUNTER_MODE_CYCLES_EQ_HI', - 'PERFMON_COUNTER_MODE_CYCLES_GE_HI', - 'PERFMON_COUNTER_MODE_CYCLES_SINCE_FIRST_EVENT', - 'PERFMON_COUNTER_MODE_CYCLES_SINCE_LAST_EVENT', - 'PERFMON_COUNTER_MODE_DIRTY', - 'PERFMON_COUNTER_MODE_INACTIVE_CYCLES', - 'PERFMON_COUNTER_MODE_MAX', 'PERFMON_COUNTER_MODE_RESERVED', - 'PERFMON_COUNTER_MODE_SAMPLE', 'PERFMON_SPM_MODE', - 'PERFMON_SPM_MODE_16BIT_CLAMP', 'PERFMON_SPM_MODE_16BIT_NO_CLAMP', - 'PERFMON_SPM_MODE_32BIT_CLAMP', 'PERFMON_SPM_MODE_32BIT_NO_CLAMP', - 'PERFMON_SPM_MODE_OFF', 'PERFMON_SPM_MODE_RESERVED_5', - 'PERFMON_SPM_MODE_RESERVED_6', 'PERFMON_SPM_MODE_RESERVED_7', - 'PERFMON_SPM_MODE_TEST_MODE_0', 'PERFMON_SPM_MODE_TEST_MODE_1', - 'PERFMON_SPM_MODE_TEST_MODE_2', 'PERFMON_STATE', - 'PERFMON_STATE_FREEZE', 'PERFMON_STATE_HW', 'PERFMON_STATE_RESET', - 'PERFMON_STATE_START', 'PERF_CLIPSM_CULL_PRIMS_CNT', - 'PERF_ENGG_BUSY', 'PERF_ENGG_CSB_DELAY_BIN00', - 'PERF_ENGG_CSB_DELAY_BIN01', 'PERF_ENGG_CSB_DELAY_BIN02', - 'PERF_ENGG_CSB_DELAY_BIN03', 'PERF_ENGG_CSB_DELAY_BIN04', - 'PERF_ENGG_CSB_DELAY_BIN05', 'PERF_ENGG_CSB_DELAY_BIN06', - 'PERF_ENGG_CSB_DELAY_BIN07', 'PERF_ENGG_CSB_DELAY_BIN08', - 'PERF_ENGG_CSB_DELAY_BIN09', 'PERF_ENGG_CSB_DELAY_BIN10', - 'PERF_ENGG_CSB_DELAY_BIN11', 'PERF_ENGG_CSB_DELAY_BIN12', - 'PERF_ENGG_CSB_DELAY_BIN13', 'PERF_ENGG_CSB_DELAY_BIN14', - 'PERF_ENGG_CSB_DELAY_BIN15', 'PERF_ENGG_CSB_GE_INPUT_FIFO_FULL', - 'PERF_ENGG_CSB_GE_INPUT_FIFO_POP_BIT', - 'PERF_ENGG_CSB_GE_MEMORY_EMPTY', 'PERF_ENGG_CSB_GE_MEMORY_FULL', - 'PERF_ENGG_CSB_GE_SENDING_SUBGROUP', - 'PERF_ENGG_CSB_MACHINE_IS_STARVED', - 'PERF_ENGG_CSB_MACHINE_STALLED_BY_CSB_MEMORY', - 'PERF_ENGG_CSB_MACHINE_STALLED_BY_SPI', - 'PERF_ENGG_CSB_NULL_SUBGROUP', - 'PERF_ENGG_CSB_PAYLOAD_INPUT_FIFO_FULL', - 'PERF_ENGG_CSB_PRIM_COUNT_EQ0', 'PERF_ENGG_CSB_SPI_DELAY_BIN00', - 'PERF_ENGG_CSB_SPI_DELAY_BIN01', 'PERF_ENGG_CSB_SPI_DELAY_BIN02', - 'PERF_ENGG_CSB_SPI_DELAY_BIN03', 'PERF_ENGG_CSB_SPI_DELAY_BIN04', - 'PERF_ENGG_CSB_SPI_DELAY_BIN05', 'PERF_ENGG_CSB_SPI_DELAY_BIN06', - 'PERF_ENGG_CSB_SPI_DELAY_BIN07', 'PERF_ENGG_CSB_SPI_DELAY_BIN08', - 'PERF_ENGG_CSB_SPI_DELAY_BIN09', 'PERF_ENGG_CSB_SPI_DELAY_BIN10', - 'PERF_ENGG_CSB_SPI_INPUT_FIFO_FULL', - 'PERF_ENGG_CSB_SPI_MEMORY_EMPTY', 'PERF_ENGG_CSB_SPI_MEMORY_FULL', - 'PERF_ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_NO_WRITE', - 'PERF_ENGG_INDEX_PRIM_IF_FETCH_TO_PRIMIC_P_FIFO_WRITE', - 'PERF_ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_P_FIFO', - 'PERF_ENGG_INDEX_PRIM_IF_STALLED_BY_FULL_FETCH_TO_PRIMIC_S_FIFO', - 'PERF_ENGG_INDEX_PRIM_IF_STARVED_BY_NO_CSB', - 'PERF_ENGG_INDEX_PRIM_IF_STARVED_BY_NO_PRIM', - 'PERF_ENGG_INDEX_REQ_0_NEW_VERTS_THIS_PRIM', - 'PERF_ENGG_INDEX_REQ_1_NEW_VERTS_THIS_PRIM', - 'PERF_ENGG_INDEX_REQ_2_NEW_VERTS_THIS_PRIM', - 'PERF_ENGG_INDEX_REQ_3_NEW_VERTS_THIS_PRIM', - 'PERF_ENGG_INDEX_REQ_BUSY_AND_STALLED_BY_REQ2RTN_FIFO_FULL', - 'PERF_ENGG_INDEX_REQ_IDLE_AND_STALLED_BY_REQ2RTN_FIFO_FULL', - 'PERF_ENGG_INDEX_REQ_NULL_REQUEST', - 'PERF_ENGG_INDEX_REQ_STALLED_BY_SX_CREDITS', - 'PERF_ENGG_INDEX_REQ_STARVED', - 'PERF_ENGG_INDEX_RET_REQ2RTN_FIFO_EMPTY', - 'PERF_ENGG_INDEX_RET_REQ2RTN_FIFO_FULL', - 'PERF_ENGG_INDEX_RET_SXRX_NULL_DROPPER_STALLED_BY_FULL_PRIM_FIFO', - 'PERF_ENGG_INDEX_RET_SXRX_READING_EVENT', - 'PERF_ENGG_INDEX_RET_SXRX_READING_NULL_SUBGROUP', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_NULL_PRIMS', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_NOPL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_0_VALID_PRIMS_PL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_NULL_PRIMS', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_NOPL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_1_VALID_PRIMS_PL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_NULL_PRIMS', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS_NOPL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_2_VALID_PRIMS_PL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_NULL_PRIMS', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS_NOPL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_3_VALID_PRIMS_PL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_NULL_PRIMS', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS_NOPL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_QDWORD_4_VALID_PRIMS_PL', - 'PERF_ENGG_INDEX_RET_SXRX_READING_SUBGROUP_PRIMCOUNT_EQ0', - 'PERF_ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_CSB_FIFO', - 'PERF_ENGG_INDEX_RET_SXRX_STALLED_BY_PRIM_INDICES_FIFO', - 'PERF_ENGG_INDEX_RET_SXRX_STARVED_BY_CSB', - 'PERF_ENGG_INDEX_RET_SXRX_STARVED_BY_PRIMS', - 'PERF_ENGG_INDEX_RET_SX_RECEIVE_FIFO_FULL', - 'PERF_ENGG_POS_REQ_STARVED', 'PERF_OUTPUT_PRIM_1_SC', - 'PERF_OUTPUT_PRIM_2_SC', 'PERF_OUTPUT_PRIM_3_SC', - 'PERF_OUTPUT_PRIM_4_SC', 'PERF_PAPC_CCGSM_BUSY', - 'PERF_PAPC_CCGSM_IDLE', 'PERF_PAPC_CCGSM_STALLED', - 'PERF_PAPC_CLIPGA_BUSY', 'PERF_PAPC_CLIPGA_IDLE', - 'PERF_PAPC_CLIPGA_STALLED', 'PERF_PAPC_CLIPGA_STARVED_VTE_CLIP', - 'PERF_PAPC_CLIPGA_VTE_KILL_PRIM', 'PERF_PAPC_CLIPSM_BUSY', - 'PERF_PAPC_CLIPSM_IDLE', 'PERF_PAPC_CLIPSM_WAIT_AVAIL_VTE_CLIP', - 'PERF_PAPC_CLIPSM_WAIT_CLIPGA', - 'PERF_PAPC_CLIPSM_WAIT_CLIP_OUTSM', - 'PERF_PAPC_CLIPSM_WAIT_CLIP_VERT_ENGH', - 'PERF_PAPC_CLIPSM_WAIT_HIGH_PRI_SEQ', 'PERF_PAPC_CLIP_BUSY', - 'PERF_PAPC_CLIP_IDLE', 'PERF_PAPC_CLPRIM_BUSY', - 'PERF_PAPC_CLPRIM_IDLE', 'PERF_PAPC_CLPRIM_STALLED', - 'PERF_PAPC_CLPRIM_STARVED_CCGSM', - 'PERF_PAPC_CLPR_CLIP_PLANE_BOTTOM', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_1', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_2', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_3', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_4', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_5_8', - 'PERF_PAPC_CLPR_CLIP_PLANE_CNT_9_12', - 'PERF_PAPC_CLPR_CLIP_PLANE_FAR', 'PERF_PAPC_CLPR_CLIP_PLANE_LEFT', - 'PERF_PAPC_CLPR_CLIP_PLANE_NEAR', - 'PERF_PAPC_CLPR_CLIP_PLANE_RIGHT', - 'PERF_PAPC_CLPR_CLIP_PLANE_TOP', 'PERF_PAPC_CLPR_CULL_PRIM', - 'PERF_PAPC_CLPR_CULL_TO_NULL_PRIM', - 'PERF_PAPC_CLPR_GSC_KILL_CULL_PRIM', - 'PERF_PAPC_CLPR_POINT_CLIP_CANDIDATE', - 'PERF_PAPC_CLPR_RASTER_KILL_CULL_PRIM', - 'PERF_PAPC_CLPR_UCP_CLIP_PRIM', 'PERF_PAPC_CLPR_UCP_CULL_PRIM', - 'PERF_PAPC_CLPR_VTX_KILL_CULL_PRIM', - 'PERF_PAPC_CLPR_VTX_NAN_CULL_PRIM', - 'PERF_PAPC_CLPR_VVUCP_CLIP_PRIM', - 'PERF_PAPC_CLPR_VVUCP_CULL_PRIM', 'PERF_PAPC_CLPR_VV_CLIP_PRIM', - 'PERF_PAPC_CLPR_VV_CULL_PRIM', 'PERF_PAPC_CLSM_CLIPPING_PRIM', - 'PERF_PAPC_CLSM_CULL_TO_NULL_PRIM', 'PERF_PAPC_CLSM_NULL_PRIM', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_1', 'PERF_PAPC_CLSM_OUT_PRIM_CNT_2', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_3', 'PERF_PAPC_CLSM_OUT_PRIM_CNT_4', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_5_8', - 'PERF_PAPC_CLSM_OUT_PRIM_CNT_9_13', - 'PERF_PAPC_CLSM_TOTALLY_VISIBLE_PRIM', - 'PERF_PAPC_CL_DYN_SCLK_VLD', 'PERF_PAPC_PASX_DISABLE_PIPE', - 'PERF_PAPC_PASX_FIRST_DEAD', 'PERF_PAPC_PASX_FIRST_VECTOR', - 'PERF_PAPC_PASX_REC_BUSY', 'PERF_PAPC_PASX_REC_IDLE', - 'PERF_PAPC_PASX_REC_STALLED', - 'PERF_PAPC_PASX_REC_STALLED_CCGSM_IN', - 'PERF_PAPC_PASX_REC_STALLED_POS_MEM', - 'PERF_PAPC_PASX_REC_STARVED_SX', 'PERF_PAPC_PASX_REQ', - 'PERF_PAPC_PASX_REQ_BUSY', 'PERF_PAPC_PASX_REQ_IDLE', - 'PERF_PAPC_PASX_REQ_STALLED', 'PERF_PAPC_PASX_SE0_FIRST_VECTOR', - 'PERF_PAPC_PASX_SE0_REQ', 'PERF_PAPC_PASX_SE0_SECOND_VECTOR', - 'PERF_PAPC_PASX_SE1_FIRST_VECTOR', 'PERF_PAPC_PASX_SE1_REQ', - 'PERF_PAPC_PASX_SE1_SECOND_VECTOR', 'PERF_PAPC_PASX_SECOND_DEAD', - 'PERF_PAPC_PASX_SECOND_VECTOR', 'PERF_PAPC_PASX_VTX_KILL_DISCARD', - 'PERF_PAPC_PASX_VTX_NAN_DISCARD', - 'PERF_PAPC_PA_INPUT_END_OF_PACKET', - 'PERF_PAPC_PA_INPUT_EVENT_FLAG', - 'PERF_PAPC_PA_INPUT_EXTENDED_EVENT', - 'PERF_PAPC_PA_INPUT_FIRST_PRIM_SLOT', - 'PERF_PAPC_PA_INPUT_NULL_PRIM', 'PERF_PAPC_PA_INPUT_PRIM', - 'PERF_PAPC_PA_REG_SCLK_VLD', 'PERF_PAPC_SU_BACK_FACE_CULL_PRIM', - 'PERF_PAPC_SU_BUSY', 'PERF_PAPC_SU_CULLED_PRIM', - 'PERF_PAPC_SU_DYN_SCLK_VLD', 'PERF_PAPC_SU_FRONT_FACE_CULL_PRIM', - 'PERF_PAPC_SU_IDLE', 'PERF_PAPC_SU_INPUT_CLIP_PRIM', - 'PERF_PAPC_SU_INPUT_CLIP_PRIM_DUAL', - 'PERF_PAPC_SU_INPUT_NULL_PRIM', 'PERF_PAPC_SU_INPUT_PRIM', - 'PERF_PAPC_SU_INPUT_PRIM_DUAL', - 'PERF_PAPC_SU_MULTI_GPU_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_OUTPUT_CLIP_POLYMODE_DUAL', - 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM', - 'PERF_PAPC_SU_OUTPUT_CLIP_PRIM_DUAL', - 'PERF_PAPC_SU_OUTPUT_END_OF_PACKET', 'PERF_PAPC_SU_OUTPUT_EOPG', - 'PERF_PAPC_SU_OUTPUT_EVENT_FLAG', - 'PERF_PAPC_SU_OUTPUT_FIRST_PRIM_SLOT', - 'PERF_PAPC_SU_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_BACK', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_DUAL', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_FACE', - 'PERF_PAPC_SU_OUTPUT_POLYMODE_FRONT', 'PERF_PAPC_SU_OUTPUT_PRIM', - 'PERF_PAPC_SU_OUTPUT_PRIM_DUAL', - 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_BACK', - 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FACE', - 'PERF_PAPC_SU_OUT_CLIP_POLYMODE_FRONT', - 'PERF_PAPC_SU_POLYMODE_BACK_CULL', - 'PERF_PAPC_SU_POLYMODE_FACE_CULL', - 'PERF_PAPC_SU_POLYMODE_FRONT_CULL', - 'PERF_PAPC_SU_POLYMODE_INVALID_FILL', - 'PERF_PAPC_SU_SE01_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE01_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE01_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE01_STALLED_SC', - 'PERF_PAPC_SU_SE0_OUTPUT_END_OF_PACKET', - 'PERF_PAPC_SU_SE0_OUTPUT_EOPG', - 'PERF_PAPC_SU_SE0_OUTPUT_FIRST_PRIM_SLOT', - 'PERF_PAPC_SU_SE0_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE0_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE0_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE0_STALLED_SC', - 'PERF_PAPC_SU_SE1_OUTPUT_END_OF_PACKET', - 'PERF_PAPC_SU_SE1_OUTPUT_EOPG', - 'PERF_PAPC_SU_SE1_OUTPUT_FIRST_PRIM_SLOT', - 'PERF_PAPC_SU_SE1_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE1_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE1_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE1_STALLED_SC', - 'PERF_PAPC_SU_SE2_OUTPUT_END_OF_PACKET', - 'PERF_PAPC_SU_SE2_OUTPUT_EOPG', - 'PERF_PAPC_SU_SE2_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE2_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE2_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE2_STALLED_SC', - 'PERF_PAPC_SU_SE3_OUTPUT_END_OF_PACKET', - 'PERF_PAPC_SU_SE3_OUTPUT_EOPG', - 'PERF_PAPC_SU_SE3_OUTPUT_NULL_PRIM', - 'PERF_PAPC_SU_SE3_OUTPUT_PRIM', - 'PERF_PAPC_SU_SE3_PRIM_FILTER_CULL', - 'PERF_PAPC_SU_SE3_STALLED_SC', 'PERF_PAPC_SU_STALLED_SC', - 'PERF_PAPC_SU_STARVED_CLIP', 'PERF_PAPC_SU_ZERO_AREA_CULL_PRIM', - 'PERF_PA_FETCH_TO_PRIMIC_P_FIFO_FULL', - 'PERF_PA_FETCH_TO_SXIF_FIFO_FULL', 'PERF_PA_PIPE0_SWITCHED_GEN', - 'PERF_PA_PIPE1_SWITCHED_GEN', - 'PERF_PA_PRIMIC_TO_CLPRIM_FIFO_FULL', 'PERF_PA_VERTEX_FIFO_FULL', - 'PERF_PH_SEND_1_SC', 'PERF_PH_SEND_2_SC', 'PERF_PH_SEND_3_SC', - 'PERF_PH_SEND_4_SC', 'PERF_SC0_QUALIFIED_SEND_BUSY_EVENT', - 'PERF_SC0_QUALIFIED_SEND_NOT_BUSY_EVENT', - 'PERF_SC1_QUALIFIED_SEND_BUSY_EVENT', - 'PERF_SC1_QUALIFIED_SEND_NOT_BUSY_EVENT', - 'PERF_SC2_QUALIFIED_SEND_BUSY_EVENT', - 'PERF_SC2_QUALIFIED_SEND_NOT_BUSY_EVENT', - 'PERF_SC3_QUALIFIED_SEND_BUSY_EVENT', - 'PERF_SC3_QUALIFIED_SEND_NOT_BUSY_EVENT', - 'PERF_SMALL_PRIM_CULL_PRIM_1X1', 'PERF_SMALL_PRIM_CULL_PRIM_1X2', - 'PERF_SMALL_PRIM_CULL_PRIM_1X3', 'PERF_SMALL_PRIM_CULL_PRIM_1XN', - 'PERF_SMALL_PRIM_CULL_PRIM_2X1', 'PERF_SMALL_PRIM_CULL_PRIM_2X2', - 'PERF_SMALL_PRIM_CULL_PRIM_2X3', 'PERF_SMALL_PRIM_CULL_PRIM_2XN', - 'PERF_SMALL_PRIM_CULL_PRIM_3X1', 'PERF_SMALL_PRIM_CULL_PRIM_3X2', - 'PERF_SMALL_PRIM_CULL_PRIM_FULL_RES_EVENT', - 'PERF_SMALL_PRIM_CULL_PRIM_HALF_RES_EVENT', - 'PERF_SMALL_PRIM_CULL_PRIM_NX1', 'PERF_SMALL_PRIM_CULL_PRIM_NX2', - 'PERF_SMALL_PRIM_CULL_PRIM_QUARTER_RES_EVENT', - 'PERF_SU_SMALL_PRIM_FILTER_CULL_CNT', 'PERSISTENT_SPACE_END', - 'PERSISTENT_SPACE_START', 'PHYSYMCLK_FORCE_EN', - 'PHYSYMCLK_FORCE_EN_DISABLE', 'PHYSYMCLK_FORCE_EN_ENABLE', - 'PHYSYMCLK_FORCE_SRC_PHYD18CLK', 'PHYSYMCLK_FORCE_SRC_PHYD32CLK', - 'PHYSYMCLK_FORCE_SRC_SEL', 'PHYSYMCLK_FORCE_SRC_SYMCLK', - 'PHY_CUSTOM_RATE', 'PHY_DP_RATE_10P', 'PHY_DP_RATE_13P5', - 'PHY_DP_RATE_1P62', 'PHY_DP_RATE_20P', 'PHY_DP_RATE_2P16', - 'PHY_DP_RATE_2P43', 'PHY_DP_RATE_2P7', 'PHY_DP_RATE_3P24', - 'PHY_DP_RATE_4P32', 'PHY_DP_RATE_5P4', 'PHY_DP_RATE_8P1', - 'PHY_IF_WIDTH_10BIT', 'PHY_IF_WIDTH_20BIT', 'PHY_IF_WIDTH_40BIT', - 'PHY_IF_WIDTH_80BIT', 'PH_PERFCNT_SEL', - 'PH_PERF_SC0_FIFO_STATUS_0', 'PH_PERF_SC0_FIFO_STATUS_1', - 'PH_PERF_SC0_FIFO_STATUS_2', 'PH_PERF_SC0_FIFO_STATUS_3', - 'PH_PERF_SC1_FIFO_STATUS_0', 'PH_PERF_SC1_FIFO_STATUS_1', - 'PH_PERF_SC1_FIFO_STATUS_2', 'PH_PERF_SC1_FIFO_STATUS_3', - 'PH_PERF_SC2_FIFO_STATUS_0', 'PH_PERF_SC2_FIFO_STATUS_1', - 'PH_PERF_SC2_FIFO_STATUS_2', 'PH_PERF_SC2_FIFO_STATUS_3', - 'PH_PERF_SC3_FIFO_STATUS_0', 'PH_PERF_SC3_FIFO_STATUS_1', - 'PH_PERF_SC3_FIFO_STATUS_2', 'PH_PERF_SC3_FIFO_STATUS_3', - 'PH_PERF_SC4_FIFO_STATUS_0', 'PH_PERF_SC4_FIFO_STATUS_1', - 'PH_PERF_SC4_FIFO_STATUS_2', 'PH_PERF_SC4_FIFO_STATUS_3', - 'PH_PERF_SC5_FIFO_STATUS_0', 'PH_PERF_SC5_FIFO_STATUS_1', - 'PH_PERF_SC5_FIFO_STATUS_2', 'PH_PERF_SC5_FIFO_STATUS_3', - 'PH_PERF_SC6_FIFO_STATUS_0', 'PH_PERF_SC6_FIFO_STATUS_1', - 'PH_PERF_SC6_FIFO_STATUS_2', 'PH_PERF_SC6_FIFO_STATUS_3', - 'PH_PERF_SC7_FIFO_STATUS_0', 'PH_PERF_SC7_FIFO_STATUS_1', - 'PH_PERF_SC7_FIFO_STATUS_2', 'PH_PERF_SC7_FIFO_STATUS_3', - 'PH_PERF_SEL_1_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_1_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_2_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_2_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_3_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_3_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_4_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_4_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_5_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_5_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_6_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_6_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_7_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_7_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_8_SC_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_8_SC_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC0_ARB_BUSY', - 'PH_PERF_SEL_SC0_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC0_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC0_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC0_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC0_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC0_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC0_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC0_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC0_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC0_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC0_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC0_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC0_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC0_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC0_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC0_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC0_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC0_GFX_PIPE_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC0_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA0_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC0_PA0_EOPG_WE', 'PH_PERF_SEL_SC0_PA0_EOP_WE', - 'PH_PERF_SEL_SC0_PA0_EVENT_WE', 'PH_PERF_SEL_SC0_PA0_FIFO_EMPTY', - 'PH_PERF_SEL_SC0_PA0_FIFO_FULL', 'PH_PERF_SEL_SC0_PA0_FPOV_WE', - 'PH_PERF_SEL_SC0_PA0_LPOV_WE', 'PH_PERF_SEL_SC0_PA0_NULL_WE', - 'PH_PERF_SEL_SC0_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA1_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC0_PA1_EOPG_WE', 'PH_PERF_SEL_SC0_PA1_EOP_WE', - 'PH_PERF_SEL_SC0_PA1_EVENT_WE', 'PH_PERF_SEL_SC0_PA1_FIFO_EMPTY', - 'PH_PERF_SEL_SC0_PA1_FIFO_FULL', 'PH_PERF_SEL_SC0_PA1_FPOV_WE', - 'PH_PERF_SEL_SC0_PA1_LPOV_WE', 'PH_PERF_SEL_SC0_PA1_NULL_WE', - 'PH_PERF_SEL_SC0_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA2_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC0_PA2_EOPG_WE', 'PH_PERF_SEL_SC0_PA2_EOP_WE', - 'PH_PERF_SEL_SC0_PA2_EVENT_WE', 'PH_PERF_SEL_SC0_PA2_FIFO_EMPTY', - 'PH_PERF_SEL_SC0_PA2_FIFO_FULL', 'PH_PERF_SEL_SC0_PA2_FPOV_WE', - 'PH_PERF_SEL_SC0_PA2_LPOV_WE', 'PH_PERF_SEL_SC0_PA2_NULL_WE', - 'PH_PERF_SEL_SC0_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA3_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC0_PA3_EOPG_WE', 'PH_PERF_SEL_SC0_PA3_EOP_WE', - 'PH_PERF_SEL_SC0_PA3_EVENT_WE', 'PH_PERF_SEL_SC0_PA3_FIFO_EMPTY', - 'PH_PERF_SEL_SC0_PA3_FIFO_FULL', 'PH_PERF_SEL_SC0_PA3_FPOV_WE', - 'PH_PERF_SEL_SC0_PA3_LPOV_WE', 'PH_PERF_SEL_SC0_PA3_NULL_WE', - 'PH_PERF_SEL_SC0_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA4_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC0_PA4_EOPG_WE', 'PH_PERF_SEL_SC0_PA4_EOP_WE', - 'PH_PERF_SEL_SC0_PA4_EVENT_WE', 'PH_PERF_SEL_SC0_PA4_FIFO_EMPTY', - 'PH_PERF_SEL_SC0_PA4_FIFO_FULL', 'PH_PERF_SEL_SC0_PA4_FPOV_WE', - 'PH_PERF_SEL_SC0_PA4_LPOV_WE', 'PH_PERF_SEL_SC0_PA4_NULL_WE', - 'PH_PERF_SEL_SC0_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA5_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC0_PA5_EOPG_WE', 'PH_PERF_SEL_SC0_PA5_EOP_WE', - 'PH_PERF_SEL_SC0_PA5_EVENT_WE', 'PH_PERF_SEL_SC0_PA5_FIFO_EMPTY', - 'PH_PERF_SEL_SC0_PA5_FIFO_FULL', 'PH_PERF_SEL_SC0_PA5_FPOV_WE', - 'PH_PERF_SEL_SC0_PA5_LPOV_WE', 'PH_PERF_SEL_SC0_PA5_NULL_WE', - 'PH_PERF_SEL_SC0_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA6_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC0_PA6_EOPG_WE', 'PH_PERF_SEL_SC0_PA6_EOP_WE', - 'PH_PERF_SEL_SC0_PA6_EVENT_WE', 'PH_PERF_SEL_SC0_PA6_FIFO_EMPTY', - 'PH_PERF_SEL_SC0_PA6_FIFO_FULL', 'PH_PERF_SEL_SC0_PA6_FPOV_WE', - 'PH_PERF_SEL_SC0_PA6_LPOV_WE', 'PH_PERF_SEL_SC0_PA6_NULL_WE', - 'PH_PERF_SEL_SC0_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC0_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC0_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC0_PA7_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC0_PA7_EOPG_WE', 'PH_PERF_SEL_SC0_PA7_EOP_WE', - 'PH_PERF_SEL_SC0_PA7_EVENT_WE', 'PH_PERF_SEL_SC0_PA7_FIFO_EMPTY', - 'PH_PERF_SEL_SC0_PA7_FIFO_FULL', 'PH_PERF_SEL_SC0_PA7_FPOV_WE', - 'PH_PERF_SEL_SC0_PA7_LPOV_WE', 'PH_PERF_SEL_SC0_PA7_NULL_WE', - 'PH_PERF_SEL_SC0_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC0_SEND', 'PH_PERF_SEL_SC0_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC1_ARB_BUSY', - 'PH_PERF_SEL_SC1_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC1_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC1_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC1_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC1_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC1_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC1_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC1_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC1_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC1_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC1_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC1_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC1_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC1_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC1_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC1_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC1_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC1_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC1_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA0_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC1_PA0_EOPG_WE', 'PH_PERF_SEL_SC1_PA0_EOP_WE', - 'PH_PERF_SEL_SC1_PA0_EVENT_WE', 'PH_PERF_SEL_SC1_PA0_FIFO_EMPTY', - 'PH_PERF_SEL_SC1_PA0_FIFO_FULL', 'PH_PERF_SEL_SC1_PA0_FPOV_WE', - 'PH_PERF_SEL_SC1_PA0_LPOV_WE', 'PH_PERF_SEL_SC1_PA0_NULL_WE', - 'PH_PERF_SEL_SC1_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA1_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC1_PA1_EOPG_WE', 'PH_PERF_SEL_SC1_PA1_EOP_WE', - 'PH_PERF_SEL_SC1_PA1_EVENT_WE', 'PH_PERF_SEL_SC1_PA1_FIFO_EMPTY', - 'PH_PERF_SEL_SC1_PA1_FIFO_FULL', 'PH_PERF_SEL_SC1_PA1_FPOV_WE', - 'PH_PERF_SEL_SC1_PA1_LPOV_WE', 'PH_PERF_SEL_SC1_PA1_NULL_WE', - 'PH_PERF_SEL_SC1_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA2_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC1_PA2_EOPG_WE', 'PH_PERF_SEL_SC1_PA2_EOP_WE', - 'PH_PERF_SEL_SC1_PA2_EVENT_WE', 'PH_PERF_SEL_SC1_PA2_FIFO_EMPTY', - 'PH_PERF_SEL_SC1_PA2_FIFO_FULL', 'PH_PERF_SEL_SC1_PA2_FPOV_WE', - 'PH_PERF_SEL_SC1_PA2_LPOV_WE', 'PH_PERF_SEL_SC1_PA2_NULL_WE', - 'PH_PERF_SEL_SC1_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA3_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC1_PA3_EOPG_WE', 'PH_PERF_SEL_SC1_PA3_EOP_WE', - 'PH_PERF_SEL_SC1_PA3_EVENT_WE', 'PH_PERF_SEL_SC1_PA3_FIFO_EMPTY', - 'PH_PERF_SEL_SC1_PA3_FIFO_FULL', 'PH_PERF_SEL_SC1_PA3_FPOV_WE', - 'PH_PERF_SEL_SC1_PA3_LPOV_WE', 'PH_PERF_SEL_SC1_PA3_NULL_WE', - 'PH_PERF_SEL_SC1_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA4_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC1_PA4_EOPG_WE', 'PH_PERF_SEL_SC1_PA4_EOP_WE', - 'PH_PERF_SEL_SC1_PA4_EVENT_WE', 'PH_PERF_SEL_SC1_PA4_FIFO_EMPTY', - 'PH_PERF_SEL_SC1_PA4_FIFO_FULL', 'PH_PERF_SEL_SC1_PA4_FPOV_WE', - 'PH_PERF_SEL_SC1_PA4_LPOV_WE', 'PH_PERF_SEL_SC1_PA4_NULL_WE', - 'PH_PERF_SEL_SC1_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA5_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC1_PA5_EOPG_WE', 'PH_PERF_SEL_SC1_PA5_EOP_WE', - 'PH_PERF_SEL_SC1_PA5_EVENT_WE', 'PH_PERF_SEL_SC1_PA5_FIFO_EMPTY', - 'PH_PERF_SEL_SC1_PA5_FIFO_FULL', 'PH_PERF_SEL_SC1_PA5_FPOV_WE', - 'PH_PERF_SEL_SC1_PA5_LPOV_WE', 'PH_PERF_SEL_SC1_PA5_NULL_WE', - 'PH_PERF_SEL_SC1_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA6_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC1_PA6_EOPG_WE', 'PH_PERF_SEL_SC1_PA6_EOP_WE', - 'PH_PERF_SEL_SC1_PA6_EVENT_WE', 'PH_PERF_SEL_SC1_PA6_FIFO_EMPTY', - 'PH_PERF_SEL_SC1_PA6_FIFO_FULL', 'PH_PERF_SEL_SC1_PA6_FPOV_WE', - 'PH_PERF_SEL_SC1_PA6_LPOV_WE', 'PH_PERF_SEL_SC1_PA6_NULL_WE', - 'PH_PERF_SEL_SC1_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC1_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC1_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC1_PA7_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC1_PA7_EOPG_WE', 'PH_PERF_SEL_SC1_PA7_EOP_WE', - 'PH_PERF_SEL_SC1_PA7_EVENT_WE', 'PH_PERF_SEL_SC1_PA7_FIFO_EMPTY', - 'PH_PERF_SEL_SC1_PA7_FIFO_FULL', 'PH_PERF_SEL_SC1_PA7_FPOV_WE', - 'PH_PERF_SEL_SC1_PA7_LPOV_WE', 'PH_PERF_SEL_SC1_PA7_NULL_WE', - 'PH_PERF_SEL_SC1_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC1_SEND', 'PH_PERF_SEL_SC1_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC2_ARB_BUSY', - 'PH_PERF_SEL_SC2_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC2_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC2_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC2_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC2_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC2_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC2_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC2_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC2_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC2_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC2_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC2_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC2_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC2_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC2_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC2_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC2_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC2_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC2_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA0_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC2_PA0_EOPG_WE', 'PH_PERF_SEL_SC2_PA0_EOP_WE', - 'PH_PERF_SEL_SC2_PA0_EVENT_WE', 'PH_PERF_SEL_SC2_PA0_FIFO_EMPTY', - 'PH_PERF_SEL_SC2_PA0_FIFO_FULL', 'PH_PERF_SEL_SC2_PA0_FPOV_WE', - 'PH_PERF_SEL_SC2_PA0_LPOV_WE', 'PH_PERF_SEL_SC2_PA0_NULL_WE', - 'PH_PERF_SEL_SC2_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA1_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC2_PA1_EOPG_WE', 'PH_PERF_SEL_SC2_PA1_EOP_WE', - 'PH_PERF_SEL_SC2_PA1_EVENT_WE', 'PH_PERF_SEL_SC2_PA1_FIFO_EMPTY', - 'PH_PERF_SEL_SC2_PA1_FIFO_FULL', 'PH_PERF_SEL_SC2_PA1_FPOV_WE', - 'PH_PERF_SEL_SC2_PA1_LPOV_WE', 'PH_PERF_SEL_SC2_PA1_NULL_WE', - 'PH_PERF_SEL_SC2_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA2_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC2_PA2_EOPG_WE', 'PH_PERF_SEL_SC2_PA2_EOP_WE', - 'PH_PERF_SEL_SC2_PA2_EVENT_WE', 'PH_PERF_SEL_SC2_PA2_FIFO_EMPTY', - 'PH_PERF_SEL_SC2_PA2_FIFO_FULL', 'PH_PERF_SEL_SC2_PA2_FPOV_WE', - 'PH_PERF_SEL_SC2_PA2_LPOV_WE', 'PH_PERF_SEL_SC2_PA2_NULL_WE', - 'PH_PERF_SEL_SC2_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA3_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC2_PA3_EOPG_WE', 'PH_PERF_SEL_SC2_PA3_EOP_WE', - 'PH_PERF_SEL_SC2_PA3_EVENT_WE', 'PH_PERF_SEL_SC2_PA3_FIFO_EMPTY', - 'PH_PERF_SEL_SC2_PA3_FIFO_FULL', 'PH_PERF_SEL_SC2_PA3_FPOV_WE', - 'PH_PERF_SEL_SC2_PA3_LPOV_WE', 'PH_PERF_SEL_SC2_PA3_NULL_WE', - 'PH_PERF_SEL_SC2_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA4_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC2_PA4_EOPG_WE', 'PH_PERF_SEL_SC2_PA4_EOP_WE', - 'PH_PERF_SEL_SC2_PA4_EVENT_WE', 'PH_PERF_SEL_SC2_PA4_FIFO_EMPTY', - 'PH_PERF_SEL_SC2_PA4_FIFO_FULL', 'PH_PERF_SEL_SC2_PA4_FPOV_WE', - 'PH_PERF_SEL_SC2_PA4_LPOV_WE', 'PH_PERF_SEL_SC2_PA4_NULL_WE', - 'PH_PERF_SEL_SC2_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA5_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC2_PA5_EOPG_WE', 'PH_PERF_SEL_SC2_PA5_EOP_WE', - 'PH_PERF_SEL_SC2_PA5_EVENT_WE', 'PH_PERF_SEL_SC2_PA5_FIFO_EMPTY', - 'PH_PERF_SEL_SC2_PA5_FIFO_FULL', 'PH_PERF_SEL_SC2_PA5_FPOV_WE', - 'PH_PERF_SEL_SC2_PA5_LPOV_WE', 'PH_PERF_SEL_SC2_PA5_NULL_WE', - 'PH_PERF_SEL_SC2_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA6_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC2_PA6_EOPG_WE', 'PH_PERF_SEL_SC2_PA6_EOP_WE', - 'PH_PERF_SEL_SC2_PA6_EVENT_WE', 'PH_PERF_SEL_SC2_PA6_FIFO_EMPTY', - 'PH_PERF_SEL_SC2_PA6_FIFO_FULL', 'PH_PERF_SEL_SC2_PA6_FPOV_WE', - 'PH_PERF_SEL_SC2_PA6_LPOV_WE', 'PH_PERF_SEL_SC2_PA6_NULL_WE', - 'PH_PERF_SEL_SC2_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC2_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC2_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC2_PA7_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC2_PA7_EOPG_WE', 'PH_PERF_SEL_SC2_PA7_EOP_WE', - 'PH_PERF_SEL_SC2_PA7_EVENT_WE', 'PH_PERF_SEL_SC2_PA7_FIFO_EMPTY', - 'PH_PERF_SEL_SC2_PA7_FIFO_FULL', 'PH_PERF_SEL_SC2_PA7_FPOV_WE', - 'PH_PERF_SEL_SC2_PA7_LPOV_WE', 'PH_PERF_SEL_SC2_PA7_NULL_WE', - 'PH_PERF_SEL_SC2_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC2_SEND', 'PH_PERF_SEL_SC2_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC3_ARB_BUSY', - 'PH_PERF_SEL_SC3_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC3_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC3_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC3_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC3_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC3_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC3_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC3_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC3_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC3_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC3_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC3_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC3_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC3_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC3_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC3_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC3_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC3_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC3_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA0_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC3_PA0_EOPG_WE', 'PH_PERF_SEL_SC3_PA0_EOP_WE', - 'PH_PERF_SEL_SC3_PA0_EVENT_WE', 'PH_PERF_SEL_SC3_PA0_FIFO_EMPTY', - 'PH_PERF_SEL_SC3_PA0_FIFO_FULL', 'PH_PERF_SEL_SC3_PA0_FPOV_WE', - 'PH_PERF_SEL_SC3_PA0_LPOV_WE', 'PH_PERF_SEL_SC3_PA0_NULL_WE', - 'PH_PERF_SEL_SC3_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA1_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC3_PA1_EOPG_WE', 'PH_PERF_SEL_SC3_PA1_EOP_WE', - 'PH_PERF_SEL_SC3_PA1_EVENT_WE', 'PH_PERF_SEL_SC3_PA1_FIFO_EMPTY', - 'PH_PERF_SEL_SC3_PA1_FIFO_FULL', 'PH_PERF_SEL_SC3_PA1_FPOV_WE', - 'PH_PERF_SEL_SC3_PA1_LPOV_WE', 'PH_PERF_SEL_SC3_PA1_NULL_WE', - 'PH_PERF_SEL_SC3_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA2_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC3_PA2_EOPG_WE', 'PH_PERF_SEL_SC3_PA2_EOP_WE', - 'PH_PERF_SEL_SC3_PA2_EVENT_WE', 'PH_PERF_SEL_SC3_PA2_FIFO_EMPTY', - 'PH_PERF_SEL_SC3_PA2_FIFO_FULL', 'PH_PERF_SEL_SC3_PA2_FPOV_WE', - 'PH_PERF_SEL_SC3_PA2_LPOV_WE', 'PH_PERF_SEL_SC3_PA2_NULL_WE', - 'PH_PERF_SEL_SC3_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA3_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC3_PA3_EOPG_WE', 'PH_PERF_SEL_SC3_PA3_EOP_WE', - 'PH_PERF_SEL_SC3_PA3_EVENT_WE', 'PH_PERF_SEL_SC3_PA3_FIFO_EMPTY', - 'PH_PERF_SEL_SC3_PA3_FIFO_FULL', 'PH_PERF_SEL_SC3_PA3_FPOV_WE', - 'PH_PERF_SEL_SC3_PA3_LPOV_WE', 'PH_PERF_SEL_SC3_PA3_NULL_WE', - 'PH_PERF_SEL_SC3_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA4_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC3_PA4_EOPG_WE', 'PH_PERF_SEL_SC3_PA4_EOP_WE', - 'PH_PERF_SEL_SC3_PA4_EVENT_WE', 'PH_PERF_SEL_SC3_PA4_FIFO_EMPTY', - 'PH_PERF_SEL_SC3_PA4_FIFO_FULL', 'PH_PERF_SEL_SC3_PA4_FPOV_WE', - 'PH_PERF_SEL_SC3_PA4_LPOV_WE', 'PH_PERF_SEL_SC3_PA4_NULL_WE', - 'PH_PERF_SEL_SC3_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA5_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC3_PA5_EOPG_WE', 'PH_PERF_SEL_SC3_PA5_EOP_WE', - 'PH_PERF_SEL_SC3_PA5_EVENT_WE', 'PH_PERF_SEL_SC3_PA5_FIFO_EMPTY', - 'PH_PERF_SEL_SC3_PA5_FIFO_FULL', 'PH_PERF_SEL_SC3_PA5_FPOV_WE', - 'PH_PERF_SEL_SC3_PA5_LPOV_WE', 'PH_PERF_SEL_SC3_PA5_NULL_WE', - 'PH_PERF_SEL_SC3_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA6_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC3_PA6_EOPG_WE', 'PH_PERF_SEL_SC3_PA6_EOP_WE', - 'PH_PERF_SEL_SC3_PA6_EVENT_WE', 'PH_PERF_SEL_SC3_PA6_FIFO_EMPTY', - 'PH_PERF_SEL_SC3_PA6_FIFO_FULL', 'PH_PERF_SEL_SC3_PA6_FPOV_WE', - 'PH_PERF_SEL_SC3_PA6_LPOV_WE', 'PH_PERF_SEL_SC3_PA6_NULL_WE', - 'PH_PERF_SEL_SC3_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC3_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC3_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC3_PA7_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC3_PA7_EOPG_WE', 'PH_PERF_SEL_SC3_PA7_EOP_WE', - 'PH_PERF_SEL_SC3_PA7_EVENT_WE', 'PH_PERF_SEL_SC3_PA7_FIFO_EMPTY', - 'PH_PERF_SEL_SC3_PA7_FIFO_FULL', 'PH_PERF_SEL_SC3_PA7_FPOV_WE', - 'PH_PERF_SEL_SC3_PA7_LPOV_WE', 'PH_PERF_SEL_SC3_PA7_NULL_WE', - 'PH_PERF_SEL_SC3_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC3_SEND', 'PH_PERF_SEL_SC3_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC4_ARB_BUSY', - 'PH_PERF_SEL_SC4_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC4_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC4_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC4_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC4_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC4_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC4_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC4_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC4_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC4_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC4_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC4_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC4_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC4_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC4_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC4_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC4_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC4_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC4_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA0_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC4_PA0_EOPG_WE', 'PH_PERF_SEL_SC4_PA0_EOP_WE', - 'PH_PERF_SEL_SC4_PA0_EVENT_WE', 'PH_PERF_SEL_SC4_PA0_FIFO_EMPTY', - 'PH_PERF_SEL_SC4_PA0_FIFO_FULL', 'PH_PERF_SEL_SC4_PA0_FPOV_WE', - 'PH_PERF_SEL_SC4_PA0_LPOV_WE', 'PH_PERF_SEL_SC4_PA0_NULL_WE', - 'PH_PERF_SEL_SC4_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA1_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC4_PA1_EOPG_WE', 'PH_PERF_SEL_SC4_PA1_EOP_WE', - 'PH_PERF_SEL_SC4_PA1_EVENT_WE', 'PH_PERF_SEL_SC4_PA1_FIFO_EMPTY', - 'PH_PERF_SEL_SC4_PA1_FIFO_FULL', 'PH_PERF_SEL_SC4_PA1_FPOV_WE', - 'PH_PERF_SEL_SC4_PA1_LPOV_WE', 'PH_PERF_SEL_SC4_PA1_NULL_WE', - 'PH_PERF_SEL_SC4_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA2_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC4_PA2_EOPG_WE', 'PH_PERF_SEL_SC4_PA2_EOP_WE', - 'PH_PERF_SEL_SC4_PA2_EVENT_WE', 'PH_PERF_SEL_SC4_PA2_FIFO_EMPTY', - 'PH_PERF_SEL_SC4_PA2_FIFO_FULL', 'PH_PERF_SEL_SC4_PA2_FPOV_WE', - 'PH_PERF_SEL_SC4_PA2_LPOV_WE', 'PH_PERF_SEL_SC4_PA2_NULL_WE', - 'PH_PERF_SEL_SC4_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA3_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC4_PA3_EOPG_WE', 'PH_PERF_SEL_SC4_PA3_EOP_WE', - 'PH_PERF_SEL_SC4_PA3_EVENT_WE', 'PH_PERF_SEL_SC4_PA3_FIFO_EMPTY', - 'PH_PERF_SEL_SC4_PA3_FIFO_FULL', 'PH_PERF_SEL_SC4_PA3_FPOV_WE', - 'PH_PERF_SEL_SC4_PA3_LPOV_WE', 'PH_PERF_SEL_SC4_PA3_NULL_WE', - 'PH_PERF_SEL_SC4_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA4_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC4_PA4_EOPG_WE', 'PH_PERF_SEL_SC4_PA4_EOP_WE', - 'PH_PERF_SEL_SC4_PA4_EVENT_WE', 'PH_PERF_SEL_SC4_PA4_FIFO_EMPTY', - 'PH_PERF_SEL_SC4_PA4_FIFO_FULL', 'PH_PERF_SEL_SC4_PA4_FPOV_WE', - 'PH_PERF_SEL_SC4_PA4_LPOV_WE', 'PH_PERF_SEL_SC4_PA4_NULL_WE', - 'PH_PERF_SEL_SC4_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA5_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC4_PA5_EOPG_WE', 'PH_PERF_SEL_SC4_PA5_EOP_WE', - 'PH_PERF_SEL_SC4_PA5_EVENT_WE', 'PH_PERF_SEL_SC4_PA5_FIFO_EMPTY', - 'PH_PERF_SEL_SC4_PA5_FIFO_FULL', 'PH_PERF_SEL_SC4_PA5_FPOV_WE', - 'PH_PERF_SEL_SC4_PA5_LPOV_WE', 'PH_PERF_SEL_SC4_PA5_NULL_WE', - 'PH_PERF_SEL_SC4_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA6_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC4_PA6_EOPG_WE', 'PH_PERF_SEL_SC4_PA6_EOP_WE', - 'PH_PERF_SEL_SC4_PA6_EVENT_WE', 'PH_PERF_SEL_SC4_PA6_FIFO_EMPTY', - 'PH_PERF_SEL_SC4_PA6_FIFO_FULL', 'PH_PERF_SEL_SC4_PA6_FPOV_WE', - 'PH_PERF_SEL_SC4_PA6_LPOV_WE', 'PH_PERF_SEL_SC4_PA6_NULL_WE', - 'PH_PERF_SEL_SC4_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC4_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC4_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC4_PA7_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC4_PA7_EOPG_WE', 'PH_PERF_SEL_SC4_PA7_EOP_WE', - 'PH_PERF_SEL_SC4_PA7_EVENT_WE', 'PH_PERF_SEL_SC4_PA7_FIFO_EMPTY', - 'PH_PERF_SEL_SC4_PA7_FIFO_FULL', 'PH_PERF_SEL_SC4_PA7_FPOV_WE', - 'PH_PERF_SEL_SC4_PA7_LPOV_WE', 'PH_PERF_SEL_SC4_PA7_NULL_WE', - 'PH_PERF_SEL_SC4_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC4_SEND', 'PH_PERF_SEL_SC4_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC5_ARB_BUSY', - 'PH_PERF_SEL_SC5_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC5_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC5_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC5_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC5_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC5_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC5_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC5_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC5_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC5_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC5_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC5_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC5_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC5_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC5_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC5_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC5_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC5_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC5_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA0_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC5_PA0_EOPG_WE', 'PH_PERF_SEL_SC5_PA0_EOP_WE', - 'PH_PERF_SEL_SC5_PA0_EVENT_WE', 'PH_PERF_SEL_SC5_PA0_FIFO_EMPTY', - 'PH_PERF_SEL_SC5_PA0_FIFO_FULL', 'PH_PERF_SEL_SC5_PA0_FPOV_WE', - 'PH_PERF_SEL_SC5_PA0_LPOV_WE', 'PH_PERF_SEL_SC5_PA0_NULL_WE', - 'PH_PERF_SEL_SC5_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA1_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC5_PA1_EOPG_WE', 'PH_PERF_SEL_SC5_PA1_EOP_WE', - 'PH_PERF_SEL_SC5_PA1_EVENT_WE', 'PH_PERF_SEL_SC5_PA1_FIFO_EMPTY', - 'PH_PERF_SEL_SC5_PA1_FIFO_FULL', 'PH_PERF_SEL_SC5_PA1_FPOV_WE', - 'PH_PERF_SEL_SC5_PA1_LPOV_WE', 'PH_PERF_SEL_SC5_PA1_NULL_WE', - 'PH_PERF_SEL_SC5_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA2_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC5_PA2_EOPG_WE', 'PH_PERF_SEL_SC5_PA2_EOP_WE', - 'PH_PERF_SEL_SC5_PA2_EVENT_WE', 'PH_PERF_SEL_SC5_PA2_FIFO_EMPTY', - 'PH_PERF_SEL_SC5_PA2_FIFO_FULL', 'PH_PERF_SEL_SC5_PA2_FPOV_WE', - 'PH_PERF_SEL_SC5_PA2_LPOV_WE', 'PH_PERF_SEL_SC5_PA2_NULL_WE', - 'PH_PERF_SEL_SC5_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA3_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC5_PA3_EOPG_WE', 'PH_PERF_SEL_SC5_PA3_EOP_WE', - 'PH_PERF_SEL_SC5_PA3_EVENT_WE', 'PH_PERF_SEL_SC5_PA3_FIFO_EMPTY', - 'PH_PERF_SEL_SC5_PA3_FIFO_FULL', 'PH_PERF_SEL_SC5_PA3_FPOV_WE', - 'PH_PERF_SEL_SC5_PA3_LPOV_WE', 'PH_PERF_SEL_SC5_PA3_NULL_WE', - 'PH_PERF_SEL_SC5_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA4_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC5_PA4_EOPG_WE', 'PH_PERF_SEL_SC5_PA4_EOP_WE', - 'PH_PERF_SEL_SC5_PA4_EVENT_WE', 'PH_PERF_SEL_SC5_PA4_FIFO_EMPTY', - 'PH_PERF_SEL_SC5_PA4_FIFO_FULL', 'PH_PERF_SEL_SC5_PA4_FPOV_WE', - 'PH_PERF_SEL_SC5_PA4_LPOV_WE', 'PH_PERF_SEL_SC5_PA4_NULL_WE', - 'PH_PERF_SEL_SC5_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA5_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC5_PA5_EOPG_WE', 'PH_PERF_SEL_SC5_PA5_EOP_WE', - 'PH_PERF_SEL_SC5_PA5_EVENT_WE', 'PH_PERF_SEL_SC5_PA5_FIFO_EMPTY', - 'PH_PERF_SEL_SC5_PA5_FIFO_FULL', 'PH_PERF_SEL_SC5_PA5_FPOV_WE', - 'PH_PERF_SEL_SC5_PA5_LPOV_WE', 'PH_PERF_SEL_SC5_PA5_NULL_WE', - 'PH_PERF_SEL_SC5_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA6_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC5_PA6_EOPG_WE', 'PH_PERF_SEL_SC5_PA6_EOP_WE', - 'PH_PERF_SEL_SC5_PA6_EVENT_WE', 'PH_PERF_SEL_SC5_PA6_FIFO_EMPTY', - 'PH_PERF_SEL_SC5_PA6_FIFO_FULL', 'PH_PERF_SEL_SC5_PA6_FPOV_WE', - 'PH_PERF_SEL_SC5_PA6_LPOV_WE', 'PH_PERF_SEL_SC5_PA6_NULL_WE', - 'PH_PERF_SEL_SC5_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC5_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC5_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC5_PA7_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC5_PA7_EOPG_WE', 'PH_PERF_SEL_SC5_PA7_EOP_WE', - 'PH_PERF_SEL_SC5_PA7_EVENT_WE', 'PH_PERF_SEL_SC5_PA7_FIFO_EMPTY', - 'PH_PERF_SEL_SC5_PA7_FIFO_FULL', 'PH_PERF_SEL_SC5_PA7_FPOV_WE', - 'PH_PERF_SEL_SC5_PA7_LPOV_WE', 'PH_PERF_SEL_SC5_PA7_NULL_WE', - 'PH_PERF_SEL_SC5_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC5_SEND', 'PH_PERF_SEL_SC5_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC6_ARB_BUSY', - 'PH_PERF_SEL_SC6_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC6_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC6_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC6_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC6_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC6_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC6_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC6_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC6_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC6_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC6_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC6_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC6_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC6_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC6_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC6_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC6_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC6_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC6_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA0_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC6_PA0_EOPG_WE', 'PH_PERF_SEL_SC6_PA0_EOP_WE', - 'PH_PERF_SEL_SC6_PA0_EVENT_WE', 'PH_PERF_SEL_SC6_PA0_FIFO_EMPTY', - 'PH_PERF_SEL_SC6_PA0_FIFO_FULL', 'PH_PERF_SEL_SC6_PA0_FPOV_WE', - 'PH_PERF_SEL_SC6_PA0_LPOV_WE', 'PH_PERF_SEL_SC6_PA0_NULL_WE', - 'PH_PERF_SEL_SC6_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA1_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC6_PA1_EOPG_WE', 'PH_PERF_SEL_SC6_PA1_EOP_WE', - 'PH_PERF_SEL_SC6_PA1_EVENT_WE', 'PH_PERF_SEL_SC6_PA1_FIFO_EMPTY', - 'PH_PERF_SEL_SC6_PA1_FIFO_FULL', 'PH_PERF_SEL_SC6_PA1_FPOV_WE', - 'PH_PERF_SEL_SC6_PA1_LPOV_WE', 'PH_PERF_SEL_SC6_PA1_NULL_WE', - 'PH_PERF_SEL_SC6_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA2_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC6_PA2_EOPG_WE', 'PH_PERF_SEL_SC6_PA2_EOP_WE', - 'PH_PERF_SEL_SC6_PA2_EVENT_WE', 'PH_PERF_SEL_SC6_PA2_FIFO_EMPTY', - 'PH_PERF_SEL_SC6_PA2_FIFO_FULL', 'PH_PERF_SEL_SC6_PA2_FPOV_WE', - 'PH_PERF_SEL_SC6_PA2_LPOV_WE', 'PH_PERF_SEL_SC6_PA2_NULL_WE', - 'PH_PERF_SEL_SC6_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA3_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC6_PA3_EOPG_WE', 'PH_PERF_SEL_SC6_PA3_EOP_WE', - 'PH_PERF_SEL_SC6_PA3_EVENT_WE', 'PH_PERF_SEL_SC6_PA3_FIFO_EMPTY', - 'PH_PERF_SEL_SC6_PA3_FIFO_FULL', 'PH_PERF_SEL_SC6_PA3_FPOV_WE', - 'PH_PERF_SEL_SC6_PA3_LPOV_WE', 'PH_PERF_SEL_SC6_PA3_NULL_WE', - 'PH_PERF_SEL_SC6_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA4_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC6_PA4_EOPG_WE', 'PH_PERF_SEL_SC6_PA4_EOP_WE', - 'PH_PERF_SEL_SC6_PA4_EVENT_WE', 'PH_PERF_SEL_SC6_PA4_FIFO_EMPTY', - 'PH_PERF_SEL_SC6_PA4_FIFO_FULL', 'PH_PERF_SEL_SC6_PA4_FPOV_WE', - 'PH_PERF_SEL_SC6_PA4_LPOV_WE', 'PH_PERF_SEL_SC6_PA4_NULL_WE', - 'PH_PERF_SEL_SC6_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA5_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC6_PA5_EOPG_WE', 'PH_PERF_SEL_SC6_PA5_EOP_WE', - 'PH_PERF_SEL_SC6_PA5_EVENT_WE', 'PH_PERF_SEL_SC6_PA5_FIFO_EMPTY', - 'PH_PERF_SEL_SC6_PA5_FIFO_FULL', 'PH_PERF_SEL_SC6_PA5_FPOV_WE', - 'PH_PERF_SEL_SC6_PA5_LPOV_WE', 'PH_PERF_SEL_SC6_PA5_NULL_WE', - 'PH_PERF_SEL_SC6_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA6_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC6_PA6_EOPG_WE', 'PH_PERF_SEL_SC6_PA6_EOP_WE', - 'PH_PERF_SEL_SC6_PA6_EVENT_WE', 'PH_PERF_SEL_SC6_PA6_FIFO_EMPTY', - 'PH_PERF_SEL_SC6_PA6_FIFO_FULL', 'PH_PERF_SEL_SC6_PA6_FPOV_WE', - 'PH_PERF_SEL_SC6_PA6_LPOV_WE', 'PH_PERF_SEL_SC6_PA6_NULL_WE', - 'PH_PERF_SEL_SC6_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC6_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC6_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC6_PA7_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC6_PA7_EOPG_WE', 'PH_PERF_SEL_SC6_PA7_EOP_WE', - 'PH_PERF_SEL_SC6_PA7_EVENT_WE', 'PH_PERF_SEL_SC6_PA7_FIFO_EMPTY', - 'PH_PERF_SEL_SC6_PA7_FIFO_FULL', 'PH_PERF_SEL_SC6_PA7_FPOV_WE', - 'PH_PERF_SEL_SC6_PA7_LPOV_WE', 'PH_PERF_SEL_SC6_PA7_NULL_WE', - 'PH_PERF_SEL_SC6_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC6_SEND', 'PH_PERF_SEL_SC6_SRPS_WINDOW_VALID', - 'PH_PERF_SEL_SC7_ARB_BUSY', - 'PH_PERF_SEL_SC7_ARB_EOP_POP_SYNC_POP', - 'PH_PERF_SEL_SC7_ARB_EVENT_SYNC_POP', - 'PH_PERF_SEL_SC7_ARB_PA_BUSY_SOP', - 'PH_PERF_SEL_SC7_ARB_STALLED_FROM_BELOW', - 'PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE', - 'PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_FULL', - 'PH_PERF_SEL_SC7_ARB_STARVED_FROM_ABOVE_WITH_UNSELECTED_FIFO_NOT_EMPTY', - 'PH_PERF_SEL_SC7_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'PH_PERF_SEL_SC7_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'PH_PERF_SEL_SC7_ARB_XFC_ONLY_PRIM_CYCLES', - 'PH_PERF_SEL_SC7_BUSY_CNT_NOT_ZERO', - 'PH_PERF_SEL_SC7_BUSY_PROCESSING_MULTICYCLE_PRIM', - 'PH_PERF_SEL_SC7_CREDIT_AT_MAX', - 'PH_PERF_SEL_SC7_CREDIT_AT_MAX_NO_PENDING_SEND', - 'PH_PERF_SEL_SC7_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'PH_PERF_SEL_SC7_EOP_SYNC_WINDOW', - 'PH_PERF_SEL_SC7_GFX_PIPE0_TO_1_TRANSITION', - 'PH_PERF_SEL_SC7_GFX_PIPE1_TO_0_TRANSITION', - 'PH_PERF_SEL_SC7_GFX_PIPE_EOP_PRIM_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC7_GFX_PIPE_EVENT_PROVOKED_TRANSITION', - 'PH_PERF_SEL_SC7_PA0_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA0_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA0_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA0_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC7_PA0_EOPG_WE', 'PH_PERF_SEL_SC7_PA0_EOP_WE', - 'PH_PERF_SEL_SC7_PA0_EVENT_WE', 'PH_PERF_SEL_SC7_PA0_FIFO_EMPTY', - 'PH_PERF_SEL_SC7_PA0_FIFO_FULL', 'PH_PERF_SEL_SC7_PA0_FPOV_WE', - 'PH_PERF_SEL_SC7_PA0_LPOV_WE', 'PH_PERF_SEL_SC7_PA0_NULL_WE', - 'PH_PERF_SEL_SC7_PA1_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA1_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA1_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA1_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC7_PA1_EOPG_WE', 'PH_PERF_SEL_SC7_PA1_EOP_WE', - 'PH_PERF_SEL_SC7_PA1_EVENT_WE', 'PH_PERF_SEL_SC7_PA1_FIFO_EMPTY', - 'PH_PERF_SEL_SC7_PA1_FIFO_FULL', 'PH_PERF_SEL_SC7_PA1_FPOV_WE', - 'PH_PERF_SEL_SC7_PA1_LPOV_WE', 'PH_PERF_SEL_SC7_PA1_NULL_WE', - 'PH_PERF_SEL_SC7_PA2_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA2_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA2_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA2_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC7_PA2_EOPG_WE', 'PH_PERF_SEL_SC7_PA2_EOP_WE', - 'PH_PERF_SEL_SC7_PA2_EVENT_WE', 'PH_PERF_SEL_SC7_PA2_FIFO_EMPTY', - 'PH_PERF_SEL_SC7_PA2_FIFO_FULL', 'PH_PERF_SEL_SC7_PA2_FPOV_WE', - 'PH_PERF_SEL_SC7_PA2_LPOV_WE', 'PH_PERF_SEL_SC7_PA2_NULL_WE', - 'PH_PERF_SEL_SC7_PA3_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA3_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA3_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA3_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC7_PA3_EOPG_WE', 'PH_PERF_SEL_SC7_PA3_EOP_WE', - 'PH_PERF_SEL_SC7_PA3_EVENT_WE', 'PH_PERF_SEL_SC7_PA3_FIFO_EMPTY', - 'PH_PERF_SEL_SC7_PA3_FIFO_FULL', 'PH_PERF_SEL_SC7_PA3_FPOV_WE', - 'PH_PERF_SEL_SC7_PA3_LPOV_WE', 'PH_PERF_SEL_SC7_PA3_NULL_WE', - 'PH_PERF_SEL_SC7_PA4_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA4_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA4_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA4_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC7_PA4_EOPG_WE', 'PH_PERF_SEL_SC7_PA4_EOP_WE', - 'PH_PERF_SEL_SC7_PA4_EVENT_WE', 'PH_PERF_SEL_SC7_PA4_FIFO_EMPTY', - 'PH_PERF_SEL_SC7_PA4_FIFO_FULL', 'PH_PERF_SEL_SC7_PA4_FPOV_WE', - 'PH_PERF_SEL_SC7_PA4_LPOV_WE', 'PH_PERF_SEL_SC7_PA4_NULL_WE', - 'PH_PERF_SEL_SC7_PA5_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA5_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA5_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA5_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC7_PA5_EOPG_WE', 'PH_PERF_SEL_SC7_PA5_EOP_WE', - 'PH_PERF_SEL_SC7_PA5_EVENT_WE', 'PH_PERF_SEL_SC7_PA5_FIFO_EMPTY', - 'PH_PERF_SEL_SC7_PA5_FIFO_FULL', 'PH_PERF_SEL_SC7_PA5_FPOV_WE', - 'PH_PERF_SEL_SC7_PA5_LPOV_WE', 'PH_PERF_SEL_SC7_PA5_NULL_WE', - 'PH_PERF_SEL_SC7_PA6_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA6_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA6_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA6_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC7_PA6_EOPG_WE', 'PH_PERF_SEL_SC7_PA6_EOP_WE', - 'PH_PERF_SEL_SC7_PA6_EVENT_WE', 'PH_PERF_SEL_SC7_PA6_FIFO_EMPTY', - 'PH_PERF_SEL_SC7_PA6_FIFO_FULL', 'PH_PERF_SEL_SC7_PA6_FPOV_WE', - 'PH_PERF_SEL_SC7_PA6_LPOV_WE', 'PH_PERF_SEL_SC7_PA6_NULL_WE', - 'PH_PERF_SEL_SC7_PA7_DATA_FIFO_EOP_RD', - 'PH_PERF_SEL_SC7_PA7_DATA_FIFO_RD', - 'PH_PERF_SEL_SC7_PA7_DATA_FIFO_WE', - 'PH_PERF_SEL_SC7_PA7_DEALLOC_4_0_RD', - 'PH_PERF_SEL_SC7_PA7_EOPG_WE', 'PH_PERF_SEL_SC7_PA7_EOP_WE', - 'PH_PERF_SEL_SC7_PA7_EVENT_WE', 'PH_PERF_SEL_SC7_PA7_FIFO_EMPTY', - 'PH_PERF_SEL_SC7_PA7_FIFO_FULL', 'PH_PERF_SEL_SC7_PA7_FPOV_WE', - 'PH_PERF_SEL_SC7_PA7_LPOV_WE', 'PH_PERF_SEL_SC7_PA7_NULL_WE', - 'PH_PERF_SEL_SC7_PS_ENG_MULTICYCLE_BUBBLE', - 'PH_PERF_SEL_SC7_SEND', 'PH_PERF_SEL_SC7_SRPS_WINDOW_VALID', - 'PH_SPI_MODE_ARBITER_SELECTED_PA_PH_FIFO_COUNT', - 'PH_SPI_MODE_DISABLED', 'PH_SPI_MODE_LARGEST_PA_PH_FIFO_COUNT', - 'PIPELINESTAT_START', 'PIPELINESTAT_STOP', 'PIPE_ALIGNED', - 'PIPE_ALIGNED_SURF', 'PIPE_COMPAT_LEVEL', 'PIPE_ID0', 'PIPE_ID1', - 'PIPE_ID2', 'PIPE_ID3', 'PIPE_INT_MASK_MODE', - 'PIPE_INT_MASK_MODE_DISABLE', 'PIPE_INT_MASK_MODE_ENABLE', - 'PIPE_INT_TYPE_MODE', 'PIPE_INT_TYPE_MODE_DISABLE', - 'PIPE_INT_TYPE_MODE_ENABLE', 'PIPE_IN_FLUSH_URGENT', - 'PIPE_IN_FLUSH_URGENT_DISABLE', 'PIPE_IN_FLUSH_URGENT_ENABLE', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_RESERVED', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYA', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYB', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYC', - 'PIPE_PHYPLL_PIXEL_RATE_SOURCE_UNIPHYD', - 'PIPE_PIXEL_RATE_PLL_SOURCE', - 'PIPE_PIXEL_RATE_PLL_SOURCE_DISPPLL', - 'PIPE_PIXEL_RATE_PLL_SOURCE_PHYPLL', 'PIPE_PIXEL_RATE_SOURCE', - 'PIPE_PIXEL_RATE_SOURCE_P0PLL', 'PIPE_PIXEL_RATE_SOURCE_P1PLL', - 'PIPE_PIXEL_RATE_SOURCE_P2PLL', 'PIPE_UNALIGNED_SURF', - 'PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_1', - 'PIXCDC_MEM_POWER_LIGHT_SLEEP_MODE_OFF', - 'PIXCDC_MEM_PWR_LIGHT_SLEEP_MODE', 'PIXEL_PIPE_OCCLUSION_COUNT_0', - 'PIXEL_PIPE_OCCLUSION_COUNT_1', 'PIXEL_PIPE_OCCLUSION_COUNT_2', - 'PIXEL_PIPE_OCCLUSION_COUNT_3', 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_0', - 'PIXEL_PIPE_SCREEN_MAX_EXTENTS_1', - 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_0', - 'PIXEL_PIPE_SCREEN_MIN_EXTENTS_1', 'PIXEL_PIPE_STAT_CONTROL', - 'PIXEL_PIPE_STAT_DUMP', 'PIXEL_PIPE_STAT_RESET', - 'PIXEL_PIPE_STRIDE_128_BITS', 'PIXEL_PIPE_STRIDE_256_BITS', - 'PIXEL_PIPE_STRIDE_32_BITS', 'PIXEL_PIPE_STRIDE_64_BITS', - 'PIX_DYNAMIC_EXPANSION', 'PIX_EXPAND_MODE', 'PIX_ZERO_EXPANSION', - 'PLL_CFG_IF_SOFT_RESET', 'PLL_CFG_IF_SOFT_RESET_FORCE', - 'PLL_CFG_IF_SOFT_RESET_NOOP', 'PM4_MEC_RELEASE_MEM_DEFINED', - 'PM4_MEC_WRITE_DATA_DEFINED', 'PM4_MES_HEADER_DEFINED', - 'PM_ASSERT_RESET', 'PM_ASSERT_RESET_0', 'PM_ASSERT_RESET_1', - 'POINTLIST', 'POWER_STATE_ENUM', 'POWER_STATE_ENUM_DS', - 'POWER_STATE_ENUM_LS', 'POWER_STATE_ENUM_ON', - 'POWER_STATE_ENUM_SD', 'PRE_CSC_BYPASS', 'PRE_CSC_MODE_ENUM', - 'PRE_CSC_SET_A', 'PRE_CSC_SET_B', 'PRE_DEGAM_BT2020', - 'PRE_DEGAM_BT2100HLG', 'PRE_DEGAM_BT2100PQ', 'PRE_DEGAM_BYPASS', - 'PRE_DEGAM_ENABLE', 'PRE_DEGAM_GAMMA_22', 'PRE_DEGAM_GAMMA_24', - 'PRE_DEGAM_GAMMA_26', 'PRE_DEGAM_MODE', 'PRE_DEGAM_SELECT', - 'PRE_DEGAM_SRGB', 'PROG_SEQ', 'PROTVIOL', 'PRQ_MRQ_FLUSH_URGENT', - 'PRQ_MRQ_FLUSH_URGENT_DISABLE', 'PRQ_MRQ_FLUSH_URGENT_ENABLE', - 'PS', 'PSLC_ASAP', 'PSLC_AUTO', 'PSLC_COUNTDOWN', - 'PSLC_ON_HANG_ONLY', 'PS_DONE', 'PS_PARTIAL_FLUSH', - 'PTE_BUFFER_MODE', 'PTE_BUFFER_MODE_0', 'PTE_BUFFER_MODE_1', - 'PTE_ROW_HEIGHT_LINEAR', 'PTE_ROW_HEIGHT_LINEAR_1024L', - 'PTE_ROW_HEIGHT_LINEAR_128L', 'PTE_ROW_HEIGHT_LINEAR_16L', - 'PTE_ROW_HEIGHT_LINEAR_256L', 'PTE_ROW_HEIGHT_LINEAR_32L', - 'PTE_ROW_HEIGHT_LINEAR_512L', 'PTE_ROW_HEIGHT_LINEAR_64L', - 'PTE_ROW_HEIGHT_LINEAR_8L', - 'PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_BL_OUT_ENABLE', - 'PWRSEQ_BL_PWM_CNTL2_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN', - 'PWRSEQ_BL_PWM_CNTL2_DBG_BL_PWM_INPUT_REFCLK_SELECT', - 'PWRSEQ_BL_PWM_CNTL_BL_PWM_EN', - 'PWRSEQ_BL_PWM_CNTL_BL_PWM_FRACTIONAL_EN', - 'PWRSEQ_BL_PWM_DISABLE', 'PWRSEQ_BL_PWM_ENABLE', - 'PWRSEQ_BL_PWM_FRACTIONAL_DISABLE', - 'PWRSEQ_BL_PWM_FRACTIONAL_ENABLE', - 'PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_DISABLE', - 'PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN', - 'PWRSEQ_BL_PWM_GRP1_IGNORE_MASTER_LOCK_ENABLE', - 'PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN', - 'PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL1_PWM', - 'PWRSEQ_BL_PWM_GRP1_READBACK_DB_REG_VALUE_EN_BL_PWM', - 'PWRSEQ_BL_PWM_GRP1_REG_LOCK', - 'PWRSEQ_BL_PWM_GRP1_REG_LOCK_DISABLE', - 'PWRSEQ_BL_PWM_GRP1_REG_LOCK_ENABLE', - 'PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START', - 'PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START_DISABLE', - 'PWRSEQ_BL_PWM_GRP1_UPDATE_AT_FRAME_START_ENABLE', - 'PWRSEQ_BL_PWM_OVERRIDE_BL_OUT_DISABLE', - 'PWRSEQ_BL_PWM_OVERRIDE_BL_OUT_ENABLE', - 'PWRSEQ_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN_NORMAL', - 'PWRSEQ_BL_PWM_OVERRIDE_PANEL_PWRSEQ_EN_PWM', - 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG1', - 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG2', - 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_DEBUG3', - 'PWRSEQ_DBG_BL_PWM_INPUT_REFCLK_SELECT_NORMAL', - 'PWRSEQ_GPIO_MASK_EN', 'PWRSEQ_GPIO_MASK_EN_HARDWARE', - 'PWRSEQ_GPIO_MASK_EN_SOFTWARE', 'PWRSEQ_PANEL_BLON_OFF', - 'PWRSEQ_PANEL_BLON_ON', 'PWRSEQ_PANEL_BLON_POL_INVERT', - 'PWRSEQ_PANEL_BLON_POL_NON_INVERT', 'PWRSEQ_PANEL_DIGON_OFF', - 'PWRSEQ_PANEL_DIGON_ON', 'PWRSEQ_PANEL_DIGON_POL_INVERT', - 'PWRSEQ_PANEL_DIGON_POL_NON_INVERT', - 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON', - 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_BLON_POL', - 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON', - 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_DIGON_POL', - 'PWRSEQ_PANEL_PWRSEQ_CNTL_PANEL_SYNCEN_POL', - 'PWRSEQ_PANEL_PWRSEQ_CNTL_TARGET_STATE', - 'PWRSEQ_PANEL_PWRSEQ_DELAY2_PANEL_VARY_BL_OVERRIDE_EN', - 'PWRSEQ_PANEL_PWRSEQ_TARGET_STATE_LCD_OFF', - 'PWRSEQ_PANEL_PWRSEQ_TARGET_STATE_LCD_ON', - 'PWRSEQ_PANEL_SYNCEN_POL_INVERT', - 'PWRSEQ_PANEL_SYNCEN_POL_NON_INVERT', - 'PWRSEQ_PANEL_VARY_BL_OVERRIDE_EN_BLON', - 'PWRSEQ_PANEL_VARY_BL_OVERRIDE_EN_SEPARATE', 'PerfCounter_Vals', - 'PhSPIstatusMode', 'PixelPipeCounterId', 'PixelPipeStride', - 'PkrMap', 'PkrXsel', 'PkrXsel2', 'PkrYsel', 'RAMA', 'RAMA_ACCESS', - 'RAMB', 'RAMB_ACCESS', 'RAM_LUT', 'RANGE_00', 'RANGE_FF', - 'RASTER_CONFIG_PKR_MAP_0', 'RASTER_CONFIG_PKR_MAP_1', - 'RASTER_CONFIG_PKR_MAP_2', 'RASTER_CONFIG_PKR_MAP_3', - 'RASTER_CONFIG_PKR_XSEL2_0', 'RASTER_CONFIG_PKR_XSEL2_1', - 'RASTER_CONFIG_PKR_XSEL2_2', 'RASTER_CONFIG_PKR_XSEL2_3', - 'RASTER_CONFIG_PKR_XSEL_0', 'RASTER_CONFIG_PKR_XSEL_1', - 'RASTER_CONFIG_PKR_XSEL_2', 'RASTER_CONFIG_PKR_XSEL_3', - 'RASTER_CONFIG_PKR_YSEL_0', 'RASTER_CONFIG_PKR_YSEL_1', - 'RASTER_CONFIG_PKR_YSEL_2', 'RASTER_CONFIG_PKR_YSEL_3', - 'RASTER_CONFIG_RB_MAP_0', 'RASTER_CONFIG_RB_MAP_1', - 'RASTER_CONFIG_RB_MAP_2', 'RASTER_CONFIG_RB_MAP_3', - 'RASTER_CONFIG_RB_XSEL2_0', 'RASTER_CONFIG_RB_XSEL2_1', - 'RASTER_CONFIG_RB_XSEL2_2', 'RASTER_CONFIG_RB_XSEL2_3', - 'RASTER_CONFIG_RB_XSEL_0', 'RASTER_CONFIG_RB_XSEL_1', - 'RASTER_CONFIG_RB_YSEL_0', 'RASTER_CONFIG_RB_YSEL_1', - 'RASTER_CONFIG_SC_MAP_0', 'RASTER_CONFIG_SC_MAP_1', - 'RASTER_CONFIG_SC_MAP_2', 'RASTER_CONFIG_SC_MAP_3', - 'RASTER_CONFIG_SC_XSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SC_XSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SC_XSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SC_XSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SC_YSEL_8_WIDE_TILE', 'RASTER_CONFIG_SE_MAP_0', - 'RASTER_CONFIG_SE_MAP_1', 'RASTER_CONFIG_SE_MAP_2', - 'RASTER_CONFIG_SE_MAP_3', 'RASTER_CONFIG_SE_PAIR_MAP_0', - 'RASTER_CONFIG_SE_PAIR_MAP_1', 'RASTER_CONFIG_SE_PAIR_MAP_2', - 'RASTER_CONFIG_SE_PAIR_MAP_3', - 'RASTER_CONFIG_SE_PAIR_XSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_XSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_XSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_XSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_PAIR_YSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_XSEL_8_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_16_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_32_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_64_WIDE_TILE', - 'RASTER_CONFIG_SE_YSEL_8_WIDE_TILE', 'RAW', - 'RDPCSPIPE_APBCLK_DISABLE', 'RDPCSPIPE_APBCLK_ENABLE', - 'RDPCSPIPE_APB_PSLVERR_MASK_DISABLE', - 'RDPCSPIPE_APB_PSLVERR_MASK_ENABLE', - 'RDPCSPIPE_CLOCK_CNTL_LANE_CLK_EN', - 'RDPCSPIPE_CLOCK_CNTL_RDPCS_APBCLK_EN', - 'RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_CLOCK_ON', - 'RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_EN', - 'RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_CLK_GATE_DIS', - 'RDPCSPIPE_CLOCK_CNTL_RDPCS_PIPE_PHYD32CLK_CLOCK_ON', - 'RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_CLOCK_ON', - 'RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_EN', - 'RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_GATE_DIS', - 'RDPCSPIPE_CLOCK_CNTL_RDPCS_SRAMCLK_PASS', - 'RDPCSPIPE_CNTL_RDPCS_PIPE_FIFO_EN', - 'RDPCSPIPE_CNTL_RDPCS_PIPE_FIFO_LANE_EN', - 'RDPCSPIPE_CNTL_RDPCS_PIPE_SOFT_RESET', - 'RDPCSPIPE_CNTL_RDPCS_SRAM_SOFT_RESET', - 'RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK', - 'RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK_DISABLE', - 'RDPCSPIPE_DBG_APB_COUNT_EXPIRE_MASK_ENABLE', - 'RDPCSPIPE_DBG_OCLA_SEL', 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_15_8', - 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_23_16', - 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_31_24', - 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_39_32', - 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_47_40', - 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_55_48', - 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_63_56', - 'RDPCSPIPE_DBG_OCLA_SEL_MON_OUT_7_0', - 'RDPCSPIPE_DPALT_4LANE_TOGGLE_2LANE', - 'RDPCSPIPE_DPALT_4LANE_TOGGLE_4LANE', - 'RDPCSPIPE_DPALT_4LANE_TOGGLE_MASK_DISABLE', - 'RDPCSPIPE_DPALT_4LANE_TOGGLE_MASK_ENABLE', - 'RDPCSPIPE_DPALT_DISABLE_TOGGLE_DISABLE', - 'RDPCSPIPE_DPALT_DISABLE_TOGGLE_ENABLE', - 'RDPCSPIPE_DPALT_DISABLE_TOGGLE_MASK_DISABLE', - 'RDPCSPIPE_DPALT_DISABLE_TOGGLE_MASK_ENABLE', - 'RDPCSPIPE_ENC_TYPE', 'RDPCSPIPE_EXT_PCLK_EN_DISABLE', - 'RDPCSPIPE_EXT_PCLK_EN_ENABLE', 'RDPCSPIPE_FIFO_EMPTY', - 'RDPCSPIPE_FIFO_FULL', 'RDPCSPIPE_FIFO_IS_EMPTY', - 'RDPCSPIPE_FIFO_IS_FULL', 'RDPCSPIPE_FIFO_NOT_EMPTY', - 'RDPCSPIPE_FIFO_NOT_FULL', - 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_APB_PSLVERR_MASK', - 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE', - 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_4LANE_TOGGLE_MASK', - 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE', - 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_DPALT_DISABLE_TOGGLE_MASK', - 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_PIPE_FIFO_ERROR_MASK', - 'RDPCSPIPE_INTERRUPT_CONTROL_RDPCS_REG_FIFO_ERROR_MASK', - 'RDPCSPIPE_LANE_BIT_ORDER_REVERSE_DISABLE', - 'RDPCSPIPE_LANE_BIT_ORDER_REVERSE_ENABLE', - 'RDPCSPIPE_LANE_PACK_FROM_MSB_DISABLE', - 'RDPCSPIPE_LANE_PACK_FROM_MSB_ENABLE', - 'RDPCSPIPE_MEM_PWR_DEEP_SLEEP', 'RDPCSPIPE_MEM_PWR_LIGHT_SLEEP', - 'RDPCSPIPE_MEM_PWR_NO_FORCE', - 'RDPCSPIPE_MEM_PWR_PWR_STATE_DEEP_SLEEP', - 'RDPCSPIPE_MEM_PWR_PWR_STATE_LIGHT_SLEEP', - 'RDPCSPIPE_MEM_PWR_PWR_STATE_ON', - 'RDPCSPIPE_MEM_PWR_PWR_STATE_SHUT_DOWN', - 'RDPCSPIPE_MEM_PWR_SHUT_DOWN', - 'RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK', - 'RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK_DISABLE', - 'RDPCSPIPE_MSG_BUS_COUNT_EXPIRE_MASK_ENABLE', - 'RDPCSPIPE_PACK_MODE', 'RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_CR_MUX_SEL', - 'RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_CR_PARA_SEL', - 'RDPCSPIPE_PHY_CNTL0_RDPCS_PHY_REF_RANGE', - 'RDPCSPIPE_PHY_CNTL0_RDPCS_SRAM_EXT_LD_DONE', - 'RDPCSPIPE_PHY_CNTL0_RDPCS_SRAM_INIT_DONE', - 'RDPCSPIPE_PHY_CNTL11_RDPCS_PHY_DP_REF_CLK_MPLLB_DIV', - 'RDPCSPIPE_PHY_CNTL11_RDPCS_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV', - 'RDPCSPIPE_PHY_CNTL12_RDPCS_PHY_DP_MPLLB_TX_CLK_DIV', - 'RDPCSPIPE_PHY_CNTL4_RDPCS_PHY_DP_TX_TERM_CTRL', - 'RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_DETRX_RESULT', - 'RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_RATE', - 'RDPCSPIPE_PHY_CNTL_RDPCS_PHY_DP_TX_WIDTH', - 'RDPCSPIPE_PHY_CNTL_RRDPCS_PHY_DP_TX_PSTATE', - 'RDPCSPIPE_PHY_CR_MUX_SEL_FOR_DC', - 'RDPCSPIPE_PHY_CR_MUX_SEL_FOR_USB', - 'RDPCSPIPE_PHY_CR_PARA_SEL_CR', 'RDPCSPIPE_PHY_CR_PARA_SEL_JTAG', - 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV', - 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV10', - 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV2', - 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV3', - 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV4', - 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV5', - 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV6', - 'RDPCSPIPE_PHY_DP_MPLLB_TX_CLK_DIV8', - 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV1', - 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV16', - 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV2', - 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV3', - 'RDPCSPIPE_PHY_DP_REF_CLK_MPLLB_DIV8', - 'RDPCSPIPE_PHY_DP_TX_DETRX_RESULT_DETECT', - 'RDPCSPIPE_PHY_DP_TX_DETRX_RESULT_NO_DETECT', - 'RDPCSPIPE_PHY_DP_TX_RATE', 'RDPCSPIPE_PHY_DP_TX_RATE_DIV2', - 'RDPCSPIPE_PHY_DP_TX_RATE_DIV4', - 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_40', - 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_42', - 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_44', - 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_46', - 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_48', - 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_50', - 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_52', - 'RDPCSPIPE_PHY_DP_TX_TERM_CTRL_54', - 'RDPCSPIPE_PHY_DP_TX_WIDTH_10', 'RDPCSPIPE_PHY_DP_TX_WIDTH_16', - 'RDPCSPIPE_PHY_DP_TX_WIDTH_20', 'RDPCSPIPE_PHY_DP_TX_WIDTH_8', - 'RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_0', - 'RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_1', - 'RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_2', - 'RDPCSPIPE_PHY_HDMI_MPLLB_HDMI_PIXEL_CLK_DIV_3', - 'RDPCSPIPE_PHY_IF_WIDTH', 'RDPCSPIPE_PHY_RATE', - 'RDPCSPIPE_PHY_REF_ALT_CLK_DISABLE', - 'RDPCSPIPE_PHY_REF_ALT_CLK_EN', - 'RDPCSPIPE_PHY_REF_ALT_CLK_ENABLE', 'RDPCSPIPE_PHY_REF_RANGE_0', - 'RDPCSPIPE_PHY_REF_RANGE_1', 'RDPCSPIPE_PHY_REF_RANGE_2', - 'RDPCSPIPE_PHY_REF_RANGE_3', 'RDPCSPIPE_PHY_REF_RANGE_4', - 'RDPCSPIPE_PHY_REF_RANGE_5', 'RDPCSPIPE_PHY_REF_RANGE_6', - 'RDPCSPIPE_PHY_REF_RANGE_7', - 'RDPCSPIPE_PIPE_FIFO_ERROR_MASK_DISABLE', - 'RDPCSPIPE_PIPE_FIFO_ERROR_MASK_ENABLE', - 'RDPCSPIPE_REG_FIFO_ERROR_MASK_DISABLE', - 'RDPCSPIPE_REG_FIFO_ERROR_MASK_ENABLE', - 'RDPCSPIPE_SRAMCLK_DISABLE', 'RDPCSPIPE_SRAMCLK_ENABLE', - 'RDPCSPIPE_SRAMCLK_GATE_DISABLE', 'RDPCSPIPE_SRAMCLK_GATE_ENABLE', - 'RDPCSPIPE_SRAMCLK_NOT_PASS', 'RDPCSPIPE_SRAMCLK_PASS', - 'RDPCSPIPE_SRAM_EXT_LD_DONE', 'RDPCSPIPE_SRAM_EXT_LD_NOT_DONE', - 'RDPCSPIPE_SRAM_INIT_DONE', 'RDPCSPIPE_SRAM_INIT_NOT_DONE', - 'RDPCSPIPE_SRAM_SRAM_RESET_DISABLE', - 'RDPCSPIPE_SRAM_SRAM_RESET_ENABLE', - 'RDPCSPIPE_SYMCLK_SRAMCLK_CLOCK_OFF', - 'RDPCSPIPE_SYMCLK_SRAMCLK_CLOCK_ON', 'RDPCSPIPE_TEST_CLK_SEL', - 'RDPCSPIPE_TEST_CLK_SEL_CFGCLK', - 'RDPCSPIPE_TEST_CLK_SEL_DP_MPLLB_DIV_CLK', - 'RDPCSPIPE_TEST_CLK_SEL_DP_TX0_WORD_CLK', - 'RDPCSPIPE_TEST_CLK_SEL_DP_TX1_WORD_CLK', - 'RDPCSPIPE_TEST_CLK_SEL_DP_TX2_WORD_CLK', - 'RDPCSPIPE_TEST_CLK_SEL_DP_TX3_WORD_CLK', - 'RDPCSPIPE_TEST_CLK_SEL_EXT_CR_CLK', - 'RDPCSPIPE_TEST_CLK_SEL_HDMI_MPLLB_HDMI_PIXEL_CLK', - 'RDPCSPIPE_TEST_CLK_SEL_NONE', - 'RDPCSPIPE_TEST_CLK_SEL_PHY_REF_DIG_CLK', - 'RDPCSPIPE_TEST_CLK_SEL_REF_DIG_FR_clk', - 'RDPCSPIPE_TEST_CLK_SEL_SRAMCLK', - 'RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS', - 'RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_LDPCS_DIV4', - 'RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS', - 'RDPCSPIPE_TEST_CLK_SEL_SYMCLK_DIV2_RDPCS_DIV4', - 'RDPCSPIPE_TEST_CLK_SEL_dtb_out0', - 'RDPCSPIPE_TEST_CLK_SEL_dtb_out1', 'RDPCS_PIPE_CLK_CLOCK_OFF', - 'RDPCS_PIPE_CLK_CLOCK_ON', 'RDPCS_PIPE_CLK_DISABLE', - 'RDPCS_PIPE_CLK_ENABLE', 'RDPCS_PIPE_CLK_GATE_DISABLE', - 'RDPCS_PIPE_CLK_GATE_ENABLE', - 'RDPCS_PIPE_CNTL_TX_LANE_PACK_FROM_MSB', - 'RDPCS_PIPE_FIFO_DISABLE', 'RDPCS_PIPE_FIFO_ENABLE', - 'RDPCS_PIPE_FIFO_LANE_DISABLE', 'RDPCS_PIPE_FIFO_LANE_ENABLE', - 'RDPCS_PIPE_PHYD32CLK_CLOCK_OFF', 'RDPCS_PIPE_PHYD32CLK_CLOCK_ON', - 'RDPCS_PIPE_SOFT_RESET_DISABLE', 'RDPCS_PIPE_SOFT_RESET_ENABLE', - 'RDPCS_PIPE_SRAM_CNTL_RDPCS_MEM_PWR_FORCE', - 'RDPCS_PIPE_SRAM_CNTL_RDPCS_MEM_PWR_PWR_STATE', 'READ_SEQ', - 'RECTLIST', 'RECT_2D', 'RED_LUT', 'REFER_TO_DP_SOF', - 'REFER_TO_OTG_SOF', 'REG_SECURE_VIOLATE_READ', - 'REG_SECURE_VIOLATE_WRITE', 'REG_UNALLOCATED_ADDR_READ', - 'REG_UNALLOCATED_ADDR_WRITE', 'REG_VIRTUAL_READ', - 'REG_VIRTUAL_WRITE', 'RESERVED_1', 'RESERVED_10', 'RESERVED_11', - 'RESERVED_20', 'RESERVED_21', 'RESERVED_22', 'RESERVED_23', - 'RESERVED_3', 'RESERVED_32', 'RESERVED_33', 'RESERVED_34', - 'RESERVED_35', 'RESERVED_44', 'RESERVED_45', 'RESERVED_46', - 'RESERVED_47', 'RESERVED_56', 'RESERVED_57', 'RESERVED_58', - 'RESERVED_59', 'RESERVED_60', 'RESERVED_61', 'RESERVED_62', - 'RESERVED_63', 'RESERVED_72', 'RESERVED_73', 'RESERVED_74', - 'RESERVED_75', 'RESERVED_8', 'RESERVED_84', 'RESERVED_85', - 'RESERVED_86', 'RESERVED_87', 'RESERVED_88', 'RESERVED_89', - 'RESERVED_9', 'RESERVED_90', 'RESERVED_91', 'RESERVED_ES', - 'RESERVED_LS', 'RESERVED_RDPOLICY', 'RESERVED_VS', - 'RESET_TO_LOWEST_VGT', 'RESET_VTX_CNT', 'RESPONSE_STATUS', 'RE_Z', - 'RGB111110_FIX', 'RGB111110_FLOAT', 'RGB565', 'RGBA1010102', - 'RGBA16161616_10LSB', 'RGBA16161616_10MSB', 'RGBA16161616_12LSB', - 'RGBA16161616_12MSB', 'RGBA16161616_FLOAT', 'RGBA16161616_SNORM', - 'RGBA16161616_UNORM', 'RGBA4444', 'RGBA5551', 'RGBA8888', 'RGBE', - 'RINGID0', 'RINGID1', 'RINGID2', 'RINGID3', - 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL', - 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 'RIRB_CONTROL_RESPONSE_INTERRUPT_CONTROL_INTERRUPT_ENABLED', - 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL', - 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_DISABLED', - 'RIRB_CONTROL_RESPONSE_OVERRUN_INTERRUPT_CONTROL_INTERRUPT_ENABLED', - 'RLC_DOORBELL_MODE', 'RLC_DOORBELL_MODE_DISABLE', - 'RLC_DOORBELL_MODE_ENABLE', 'RLC_DOORBELL_MODE_ENABLE_PF', - 'RLC_DOORBELL_MODE_ENABLE_PF_VF', 'RLC_PERFCOUNTER_SEL', - 'RLC_PERFMON_STATE', 'RLC_PERFMON_STATE_DISABLE', - 'RLC_PERFMON_STATE_ENABLE', 'RLC_PERFMON_STATE_RESERVED_3', - 'RLC_PERFMON_STATE_RESERVED_4', 'RLC_PERFMON_STATE_RESERVED_5', - 'RLC_PERFMON_STATE_RESERVED_6', 'RLC_PERFMON_STATE_RESET', - 'RLC_PERFMON_STATE_ROLLOVER', 'RLC_PERF_SEL_CP_INTERRUPT', - 'RLC_PERF_SEL_GRBM_INTERRUPT', 'RLC_PERF_SEL_IH_INTERRUPT', - 'RLC_PERF_SEL_POWER_FEATURE_0', 'RLC_PERF_SEL_POWER_FEATURE_1', - 'RLC_PERF_SEL_SERDES_COMMAND_WRITE', 'RLC_PERF_SEL_SPM_INTERRUPT', - 'RMIPerfSel', 'RMI_CID', 'RMI_CID_CC', 'RMI_CID_CM', 'RMI_CID_DC', - 'RMI_CID_FC', 'RMI_CID_S', 'RMI_CID_TILE', 'RMI_CID_Z', - 'RMI_CID_ZPCPSD', 'RMI_PERF_SEL_RB_RMI_RDREQ_ALL_CID', - 'RMI_PERF_SEL_RB_RMI_WRREQ_ALL_CID', 'ROM_SIGNATURE', - 'ROTATE_0_DEGREES', 'ROTATE_180_DEGREES', 'ROTATE_270_DEGREES', - 'ROTATE_90_DEGREES', 'ROTATION_ANGLE', 'ROW_TTU_MODE', - 'RPDCSPIPE_CNTL_TX_LANE_BIT_ORDER_REVERSE_BEFORE_PACK', - 'RRDPCSPIPE_PHY_DP_TX_PSTATE_HOLD', - 'RRDPCSPIPE_PHY_DP_TX_PSTATE_HOLD_OFF', - 'RRDPCSPIPE_PHY_DP_TX_PSTATE_POWER_DOWN', - 'RRDPCSPIPE_PHY_DP_TX_PSTATE_POWER_UP', 'RSPM_CMD', - 'RSPM_CMD_CALIBRATE', 'RSPM_CMD_FORCE_SAMPLE', 'RSPM_CMD_IDLE', - 'RSPM_CMD_INVALID', 'RSPM_CMD_PERF_RESET', 'RSPM_CMD_PERF_SAMPLE', - 'RSPM_CMD_PROF_START', 'RSPM_CMD_PROF_STOP', 'RSPM_CMD_SPM_RESET', - 'RSPM_CMD_SPM_START', 'RSPM_CMD_SPM_STOP', 'RST_PIX_CNT', - 'RSV_TAG_RAM', 'RbMap', 'RbXsel', 'RbXsel2', 'RbYsel', - 'ReadPolicy', 'Reserved_0x00', 'Reserved_0x09', - 'RingCounterControl', 'SAMPLE_PIPELINESTAT', - 'SAMPLE_STREAMOUTSTATS', 'SAMPLE_STREAMOUTSTATS1', - 'SAMPLE_STREAMOUTSTATS2', 'SAMPLE_STREAMOUTSTATS3', - 'SCL_2TAP_HARDCODE', 'SCL_ALPHA_COEF', 'SCL_ALPHA_COEF_FIRST', - 'SCL_ALPHA_COEF_SECOND', 'SCL_AUTOCAL_MODE', 'SCL_BOUNDARY', - 'SCL_BOUNDARY_BLACK', 'SCL_BOUNDARY_EDGE', 'SCL_CHROMA_COEF', - 'SCL_CHROMA_COEF_FIRST', 'SCL_CHROMA_COEF_SECOND', - 'SCL_COEF_2TAP_HARDCODE_OFF', 'SCL_COEF_2TAP_HARDCODE_ON', - 'SCL_COEF_CHROMA_HORZ_FILTER', 'SCL_COEF_CHROMA_VERT_FILTER', - 'SCL_COEF_FILTER_TYPE_SEL', 'SCL_COEF_LUMA_HORZ_FILTER', - 'SCL_COEF_LUMA_VERT_FILTER', 'SCL_COEF_RAM_SEL', - 'SCL_COEF_RAM_SEL_0', 'SCL_COEF_RAM_SEL_1', 'SCL_SHARP_DISABLE', - 'SCL_SHARP_EN', 'SCL_SHARP_ENABLE', 'SC_BACKEND_BUSY', - 'SC_BACKEND_PRIM_FIFO_FULL', 'SC_BB_DISCARD', - 'SC_BCI_CREDIT_AT_MAX', 'SC_BCI_CREDIT_AT_MAX_NO_PENDING_SEND', - 'SC_BCI_CREDIT_AT_ZERO_WITH_PENDING_SEND', 'SC_BCI_SEND', - 'SC_BM_BE0_STALLED', 'SC_BM_BE1_STALLED', 'SC_BM_BE2_STALLED', - 'SC_BM_BE3_STALLED', 'SC_BM_BUSY', - 'SC_BM_MULTI_ACCUM_1_BE_STALLED', - 'SC_BM_MULTI_ACCUM_2_BE_STALLED', - 'SC_BM_MULTI_ACCUM_3_BE_STALLED', - 'SC_BM_MULTI_ACCUM_4_BE_STALLED', 'SC_BUSY_CNT_NOT_ZERO', - 'SC_BUSY_PROCESSING_MULTICYCLE_PRIM', 'SC_DB0_QUAD_INTF_BUSY', - 'SC_DB0_QUAD_INTF_CREDIT_AT_MAX', 'SC_DB0_QUAD_INTF_IDLE', - 'SC_DB0_QUAD_INTF_SEND', 'SC_DB0_QUAD_INTF_STALLED_BY_DB', - 'SC_DB0_TILE_INTERFACE_BUSY', - 'SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX', - 'SC_DB0_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND', - 'SC_DB0_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'SC_DB0_TILE_INTERFACE_SEND', 'SC_DB0_TILE_INTERFACE_SEND_EVENT', - 'SC_DB0_TILE_INTERFACE_SEND_SOP', - 'SC_DB0_TILE_INTERFACE_SEND_SOP_ONLY_EVENT', - 'SC_DB0_TILE_MASK_FIFO_FULL', - 'SC_DB0_WE_STALLED_BY_RSLT_FIFO_FULL', - 'SC_DB0_WE_TILE_MASK_RETURN_FIFO_FULL_WITH_WE_RSLT_FIFO_STALL', - 'SC_DB1_QUAD_INTF_BUSY', 'SC_DB1_QUAD_INTF_CREDIT_AT_MAX', - 'SC_DB1_QUAD_INTF_IDLE', 'SC_DB1_QUAD_INTF_SEND', - 'SC_DB1_QUAD_INTF_STALLED_BY_DB', 'SC_DB1_TILE_INTERFACE_BUSY', - 'SC_DB1_TILE_INTERFACE_CREDIT_AT_MAX', - 'SC_DB1_TILE_INTERFACE_CREDIT_AT_MAX_WITH_NO_PENDING_SEND', - 'SC_DB1_TILE_INTERFACE_CREDIT_AT_ZERO_WITH_PENDING_SEND', - 'SC_DB1_TILE_INTERFACE_SEND', 'SC_DB1_TILE_INTERFACE_SEND_EVENT', - 'SC_DB1_TILE_INTERFACE_SEND_SOP', - 'SC_DB1_TILE_INTERFACE_SEND_SOP_ONLY_EVENT', - 'SC_DB1_TILE_MASK_FIFO_FULL', - 'SC_DB1_WE_STALLED_BY_RSLT_FIFO_FULL', - 'SC_DB1_WE_TILE_MASK_RETURN_FIFO_FULL_WITH_WE_RSLT_FIFO_STALL', - 'SC_EARLYZ_QUAD_COUNT', 'SC_EARLYZ_QUAD_WITH_1_PIX', - 'SC_EARLYZ_QUAD_WITH_2_PIX', 'SC_EARLYZ_QUAD_WITH_3_PIX', - 'SC_EARLYZ_QUAD_WITH_4_PIX', 'SC_EOP_SYNC_WINDOW', - 'SC_FSR_WALKED', 'SC_FULL_FULL_QUAD', 'SC_FULL_HALF_QUAD', - 'SC_FULL_QTR_QUAD', 'SC_GRP0_DYN_SCLK_BUSY', - 'SC_GRP1_DYN_SCLK_BUSY', 'SC_GRP2_DYN_SCLK_BUSY', - 'SC_GRP3_DYN_SCLK_BUSY', 'SC_GRP4_DYN_SCLK_BUSY', - 'SC_GRP5_DYN_SCLK_BUSY', 'SC_GRP6_DYN_SCLK_BUSY', - 'SC_GRP7_DYN_SCLK_BUSY', 'SC_GRP8_DYN_SCLK_BUSY', - 'SC_GRP9_DYN_SCLK_BUSY', 'SC_HALF_FULL_QUAD', 'SC_HALF_HALF_QUAD', - 'SC_HALF_LSB', 'SC_HALF_QTR_QUAD', 'SC_LSB_ONE_SIDED', - 'SC_LSB_TWO_SIDED', 'SC_MULTICYCLE_BUBBLE_FREEZE', - 'SC_P0_DETAIL_QUAD_COUNT', 'SC_P0_DETAIL_QUAD_WITH_1_PIX', - 'SC_P0_DETAIL_QUAD_WITH_2_PIX', 'SC_P0_DETAIL_QUAD_WITH_3_PIX', - 'SC_P0_DETAIL_QUAD_WITH_4_PIX', 'SC_P0_HIZ_QUAD_COUNT', - 'SC_P0_HIZ_QUAD_PER_TILE_H0', 'SC_P0_HIZ_QUAD_PER_TILE_H1', - 'SC_P0_HIZ_QUAD_PER_TILE_H10', 'SC_P0_HIZ_QUAD_PER_TILE_H11', - 'SC_P0_HIZ_QUAD_PER_TILE_H12', 'SC_P0_HIZ_QUAD_PER_TILE_H13', - 'SC_P0_HIZ_QUAD_PER_TILE_H14', 'SC_P0_HIZ_QUAD_PER_TILE_H15', - 'SC_P0_HIZ_QUAD_PER_TILE_H16', 'SC_P0_HIZ_QUAD_PER_TILE_H2', - 'SC_P0_HIZ_QUAD_PER_TILE_H3', 'SC_P0_HIZ_QUAD_PER_TILE_H4', - 'SC_P0_HIZ_QUAD_PER_TILE_H5', 'SC_P0_HIZ_QUAD_PER_TILE_H6', - 'SC_P0_HIZ_QUAD_PER_TILE_H7', 'SC_P0_HIZ_QUAD_PER_TILE_H8', - 'SC_P0_HIZ_QUAD_PER_TILE_H9', 'SC_P0_HIZ_TILE_COUNT', - 'SC_P1_DETAIL_QUAD_COUNT', 'SC_P1_DETAIL_QUAD_WITH_1_PIX', - 'SC_P1_DETAIL_QUAD_WITH_2_PIX', 'SC_P1_DETAIL_QUAD_WITH_3_PIX', - 'SC_P1_DETAIL_QUAD_WITH_4_PIX', 'SC_P1_HIZ_QUAD_COUNT', - 'SC_P1_HIZ_QUAD_PER_TILE_H0', 'SC_P1_HIZ_QUAD_PER_TILE_H1', - 'SC_P1_HIZ_QUAD_PER_TILE_H10', 'SC_P1_HIZ_QUAD_PER_TILE_H11', - 'SC_P1_HIZ_QUAD_PER_TILE_H12', 'SC_P1_HIZ_QUAD_PER_TILE_H13', - 'SC_P1_HIZ_QUAD_PER_TILE_H14', 'SC_P1_HIZ_QUAD_PER_TILE_H15', - 'SC_P1_HIZ_QUAD_PER_TILE_H16', 'SC_P1_HIZ_QUAD_PER_TILE_H2', - 'SC_P1_HIZ_QUAD_PER_TILE_H3', 'SC_P1_HIZ_QUAD_PER_TILE_H4', - 'SC_P1_HIZ_QUAD_PER_TILE_H5', 'SC_P1_HIZ_QUAD_PER_TILE_H6', - 'SC_P1_HIZ_QUAD_PER_TILE_H7', 'SC_P1_HIZ_QUAD_PER_TILE_H8', - 'SC_P1_HIZ_QUAD_PER_TILE_H9', 'SC_P1_HIZ_TILE_COUNT', - 'SC_P2_DETAIL_QUAD_COUNT', 'SC_P2_DETAIL_QUAD_WITH_1_PIX', - 'SC_P2_DETAIL_QUAD_WITH_2_PIX', 'SC_P2_DETAIL_QUAD_WITH_3_PIX', - 'SC_P2_DETAIL_QUAD_WITH_4_PIX', 'SC_P2_HIZ_QUAD_COUNT', - 'SC_P2_HIZ_QUAD_PER_TILE_H0', 'SC_P2_HIZ_QUAD_PER_TILE_H1', - 'SC_P2_HIZ_QUAD_PER_TILE_H10', 'SC_P2_HIZ_QUAD_PER_TILE_H11', - 'SC_P2_HIZ_QUAD_PER_TILE_H12', 'SC_P2_HIZ_QUAD_PER_TILE_H13', - 'SC_P2_HIZ_QUAD_PER_TILE_H14', 'SC_P2_HIZ_QUAD_PER_TILE_H15', - 'SC_P2_HIZ_QUAD_PER_TILE_H16', 'SC_P2_HIZ_QUAD_PER_TILE_H2', - 'SC_P2_HIZ_QUAD_PER_TILE_H3', 'SC_P2_HIZ_QUAD_PER_TILE_H4', - 'SC_P2_HIZ_QUAD_PER_TILE_H5', 'SC_P2_HIZ_QUAD_PER_TILE_H6', - 'SC_P2_HIZ_QUAD_PER_TILE_H7', 'SC_P2_HIZ_QUAD_PER_TILE_H8', - 'SC_P2_HIZ_QUAD_PER_TILE_H9', 'SC_P2_HIZ_TILE_COUNT', - 'SC_P3_DETAIL_QUAD_COUNT', 'SC_P3_DETAIL_QUAD_WITH_1_PIX', - 'SC_P3_DETAIL_QUAD_WITH_2_PIX', 'SC_P3_DETAIL_QUAD_WITH_3_PIX', - 'SC_P3_DETAIL_QUAD_WITH_4_PIX', 'SC_P3_HIZ_QUAD_COUNT', - 'SC_P3_HIZ_QUAD_PER_TILE_H0', 'SC_P3_HIZ_QUAD_PER_TILE_H1', - 'SC_P3_HIZ_QUAD_PER_TILE_H10', 'SC_P3_HIZ_QUAD_PER_TILE_H11', - 'SC_P3_HIZ_QUAD_PER_TILE_H12', 'SC_P3_HIZ_QUAD_PER_TILE_H13', - 'SC_P3_HIZ_QUAD_PER_TILE_H14', 'SC_P3_HIZ_QUAD_PER_TILE_H15', - 'SC_P3_HIZ_QUAD_PER_TILE_H16', 'SC_P3_HIZ_QUAD_PER_TILE_H2', - 'SC_P3_HIZ_QUAD_PER_TILE_H3', 'SC_P3_HIZ_QUAD_PER_TILE_H4', - 'SC_P3_HIZ_QUAD_PER_TILE_H5', 'SC_P3_HIZ_QUAD_PER_TILE_H6', - 'SC_P3_HIZ_QUAD_PER_TILE_H7', 'SC_P3_HIZ_QUAD_PER_TILE_H8', - 'SC_P3_HIZ_QUAD_PER_TILE_H9', 'SC_P3_HIZ_TILE_COUNT', - 'SC_PA0_SC_DATA_FIFO_EOPG_RD', 'SC_PA0_SC_DATA_FIFO_EOP_RD', - 'SC_PA0_SC_DATA_FIFO_RD', 'SC_PA0_SC_DATA_FIFO_WE', - 'SC_PA0_SC_DEALLOC_0_RD', 'SC_PA0_SC_DEALLOC_1_RD', - 'SC_PA0_SC_EOPG_WE', 'SC_PA0_SC_EOP_WE', 'SC_PA0_SC_EVENT_WE', - 'SC_PA0_SC_FPOV_WE', 'SC_PA0_SC_LPOV_WE', - 'SC_PA0_SC_NULL_DEALLOC_WE', 'SC_PA0_SC_NULL_WE', - 'SC_PA1_SC_DATA_FIFO_EOPG_RD', 'SC_PA1_SC_DATA_FIFO_EOP_RD', - 'SC_PA1_SC_DATA_FIFO_RD', 'SC_PA1_SC_DATA_FIFO_WE', - 'SC_PA1_SC_DEALLOC_0_RD', 'SC_PA1_SC_DEALLOC_1_RD', - 'SC_PA1_SC_EOPG_WE', 'SC_PA1_SC_EOP_WE', 'SC_PA1_SC_EVENT_WE', - 'SC_PA1_SC_FPOV_WE', 'SC_PA1_SC_LPOV_WE', - 'SC_PA1_SC_NULL_DEALLOC_WE', 'SC_PA1_SC_NULL_WE', - 'SC_PA2_SC_DATA_FIFO_EOPG_RD', 'SC_PA2_SC_DATA_FIFO_EOP_RD', - 'SC_PA2_SC_DATA_FIFO_RD', 'SC_PA2_SC_DATA_FIFO_WE', - 'SC_PA2_SC_DEALLOC_0_RD', 'SC_PA2_SC_DEALLOC_1_RD', - 'SC_PA2_SC_EOPG_WE', 'SC_PA2_SC_EOP_WE', 'SC_PA2_SC_EVENT_WE', - 'SC_PA2_SC_FPOV_WE', 'SC_PA2_SC_LPOV_WE', - 'SC_PA2_SC_NULL_DEALLOC_WE', 'SC_PA2_SC_NULL_WE', - 'SC_PA3_SC_DATA_FIFO_EOPG_RD', 'SC_PA3_SC_DATA_FIFO_EOP_RD', - 'SC_PA3_SC_DATA_FIFO_RD', 'SC_PA3_SC_DATA_FIFO_WE', - 'SC_PA3_SC_DEALLOC_0_RD', 'SC_PA3_SC_DEALLOC_1_RD', - 'SC_PA3_SC_EOPG_WE', 'SC_PA3_SC_EOP_WE', 'SC_PA3_SC_EVENT_WE', - 'SC_PA3_SC_FPOV_WE', 'SC_PA3_SC_LPOV_WE', - 'SC_PA3_SC_NULL_DEALLOC_WE', 'SC_PA3_SC_NULL_WE', - 'SC_PA_SC_DEALLOC_0_0_WE', 'SC_PA_SC_DEALLOC_0_1_WE', - 'SC_PA_SC_DEALLOC_1_0_WE', 'SC_PA_SC_DEALLOC_1_1_WE', - 'SC_PA_SC_DEALLOC_2_0_WE', 'SC_PA_SC_DEALLOC_2_1_WE', - 'SC_PA_SC_DEALLOC_3_0_WE', 'SC_PA_SC_DEALLOC_3_1_WE', - 'SC_PA_TO_PBB_SCLK_GATE_STALL_STALL', - 'SC_PBB_BATCH_BREAK_DUE_TO_BINNING_MODE_CHANGE', - 'SC_PBB_BATCH_BREAK_DUE_TO_CONTEXT_STATE', - 'SC_PBB_BATCH_BREAK_DUE_TO_DEBUG_DATA_PER_DRAW_DISPATCH', - 'SC_PBB_BATCH_BREAK_DUE_TO_EVENT', - 'SC_PBB_BATCH_BREAK_DUE_TO_FPOV_LIMIT', - 'SC_PBB_BATCH_BREAK_DUE_TO_GFX_PIPE_CHANGE', - 'SC_PBB_BATCH_BREAK_DUE_TO_NEW_SC_MODE', - 'SC_PBB_BATCH_BREAK_DUE_TO_NONBINNED_BATCH', - 'SC_PBB_BATCH_BREAK_DUE_TO_NULL_PRIM_BREAK_BATCH_LIMIT', - 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_CONTEXT', - 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_FPOV', - 'SC_PBB_BATCH_BREAK_DUE_TO_OVERRIDE_REGISTER_PERSISTENT', - 'SC_PBB_BATCH_BREAK_DUE_TO_PC_STORAGE', - 'SC_PBB_BATCH_BREAK_DUE_TO_PERSISTENT_STATE', - 'SC_PBB_BATCH_BREAK_DUE_TO_PIPELINE_EVENT_COUNT', - 'SC_PBB_BATCH_BREAK_DUE_TO_PIPELINE_MODE_CHANGE', - 'SC_PBB_BATCH_BREAK_DUE_TO_PIPE_RESET', - 'SC_PBB_BATCH_BREAK_DUE_TO_PRIM', - 'SC_PBB_BATCH_BREAK_DUE_TO_TIMEOUT_COUNTER', - 'SC_PBB_BATCH_HIST_NUM_COLUMNS_PER_ROW', - 'SC_PBB_BATCH_HIST_NUM_CONTEXTS', - 'SC_PBB_BATCH_HIST_NUM_PERSISTENT_STATES', - 'SC_PBB_BATCH_HIST_NUM_PRIMS', - 'SC_PBB_BATCH_HIST_NUM_PS_WAVE_BREAKS', - 'SC_PBB_BATCH_HIST_NUM_ROWS_PER_PRIM', - 'SC_PBB_BATCH_HIST_NUM_TRIV_REJECTED_PRIMS', - 'SC_PBB_BIN_HIST_NUM_CONTEXTS', - 'SC_PBB_BIN_HIST_NUM_PERSISTENT_STATES', - 'SC_PBB_BIN_HIST_NUM_PRIMS', 'SC_PBB_BUSY', - 'SC_PBB_BUSY_AND_NO_SENDS', - 'SC_PBB_EMPTY_INPUT_CYCLE_WHEN_BATCH_OPEN', 'SC_PBB_END_OF_BATCH', - 'SC_PBB_END_OF_BIN', - 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_COLUMN', - 'SC_PBB_IDLE_CLK_DUE_TO_FALSE_POSITIVE_ON_ROW', - 'SC_PBB_IDLE_CLK_DUE_TO_ROW_TO_COLUMN_TRANSITION', - 'SC_PBB_NONBINNED_PRIM', 'SC_PBB_NUM_BINS', - 'SC_PBB_PRIMBIN_PROCESSED', 'SC_PBB_PRIM_ADDED_TO_BATCH', - 'SC_PBB_RESERVED', 'SC_PBB_STALLS_PA_DUE_TO_NO_TILES', - 'SC_PBB_TOTAL_NULL_PRIMS_OUT_OF_PBB', - 'SC_PBB_TOTAL_REAL_PRIMS_OUT_OF_PBB', 'SC_PERFCNT_SEL', - 'SC_PKR_4X2_FILL_QUAD', 'SC_PKR_4X2_QUAD_SPLIT', - 'SC_PKR_CONTROL_XFER', 'SC_PKR_DBHANG_FORCE_EOV', - 'SC_PKR_END_OF_VECTOR', 'SC_PKR_QUAD_OVLP_FOUND_IN_WAVE_TABLE', - 'SC_PKR_QUAD_OVLP_NOT_FOUND_IN_WAVE_TABLE_AND_NO_CHANGE_TO_WAVES_SINCE_OVLP', - 'SC_PKR_QUAD_OVLP_NOT_FOUND_IN_WAVE_TABLE_AND_WAVES_SINCE_OVLP_SET_TO_MAX', - 'SC_PKR_QUAD_PER_ROW_H1', 'SC_PKR_QUAD_PER_ROW_H2', - 'SC_PKR_WAVE_BREAK_FULL_TILE', 'SC_PKR_WAVE_BREAK_OUTSIDE_REGION', - 'SC_PK_BUSY', 'SC_PK_DEALLOC_WAVE_BREAK', - 'SC_PK_MAX_DEALLOC_FORCE_EOV', 'SC_PK_PM_4X2_SPLIT_WAVE_BRK_1H', - 'SC_PK_PM_AE_CONFLICT_WAVE_BRK_1H', - 'SC_PK_PM_AVOID_DEALLOC_ADD_WAVE_BRK_1H', - 'SC_PK_PM_CTL_ONLY_CMD_WAVE_BRK_1H', - 'SC_PK_PM_END_OF_VECTOR_WAVE_BRK_1H', - 'SC_PK_PM_EOP_OR_LAD_WAVE_BRK_1H', - 'SC_PK_PM_FD_CONFLICT_WAVE_BRK_1H', - 'SC_PK_PM_FORCE_PARTIAL_FOR_DEALLOC_WAVE_BRK_1H', - 'SC_PK_PM_FULL_TILE_WAVE_BRK_1H', - 'SC_PK_PM_LAST_AND_DEALLOC_WAVE_BRK_1H', - 'SC_PK_PM_MAX_CLK_CNT_FORCE_EOV_WAVE_BRK_1H', - 'SC_PK_PM_MAX_DEALLOC_FORCE_EOV_WAVE_BRK_1H', - 'SC_PK_PM_MAX_REZ_CNT_FORCE_EOV_WAVE_BRK_1H', - 'SC_PK_PM_PKR_FILL_4X2_WAVE_BRK_1H', - 'SC_PK_PM_POPS_FORCE_EOV_WAVE_BRK_1H', - 'SC_PK_PM_QD1_AVOID_DEALLOC_ADD_WAVE_BRK_1H', - 'SC_PK_PM_QD1_FD_CONFLICT_WAVE_BRK_1H', - 'SC_PK_PM_QD1_FORCE_PARTIAL_FOR_DEALLOC_WAVE_BRK_1H', - 'SC_PK_PM_SPLIT_OR_FILL_4X2_WAVE_BRK_1H', - 'SC_PK_PM_VRS_RATE_X_00_Y_00_QUAD', - 'SC_PK_PM_VRS_RATE_X_00_Y_01_QUAD', - 'SC_PK_PM_VRS_RATE_X_00_Y_10_QUAD', - 'SC_PK_PM_VRS_RATE_X_00_Y_11_QUAD', - 'SC_PK_PM_VRS_RATE_X_01_Y_00_QUAD', - 'SC_PK_PM_VRS_RATE_X_01_Y_01_QUAD', - 'SC_PK_PM_VRS_RATE_X_01_Y_10_QUAD', - 'SC_PK_PM_VRS_RATE_X_01_Y_11_QUAD', - 'SC_PK_PM_VRS_RATE_X_10_Y_00_QUAD', - 'SC_PK_PM_VRS_RATE_X_10_Y_01_QUAD', - 'SC_PK_PM_VRS_RATE_X_10_Y_10_QUAD', - 'SC_PK_PM_VRS_RATE_X_10_Y_11_QUAD', - 'SC_PK_PM_VRS_RATE_X_11_Y_00_QUAD', - 'SC_PK_PM_VRS_RATE_X_11_Y_01_QUAD', - 'SC_PK_PM_VRS_RATE_X_11_Y_10_QUAD', - 'SC_PK_PM_VRS_RATE_X_11_Y_11_QUAD', - 'SC_PK_PM_WAVE_BREAK_OUTSIDE_REGION_WAVE_BRK_1H', - 'SC_POPS_FORCE_EOV', 'SC_POPS_INTRA_WAVE_OVERLAPS', - 'SC_PSSW_WINDOW_VALID', 'SC_PSSW_WINDOW_VALID_BUSY', - 'SC_PS_ARB_EOP_POP_SYNC_POP', 'SC_PS_ARB_EVENT_SYNC_POP', - 'SC_PS_ARB_NULL_PRIM_BUBBLE_POP', - 'SC_PS_ARB_OOO_FIFO_EMPTY_SWITCH', - 'SC_PS_ARB_OOO_THRESHOLD_SWITCH_TO_DESIRED_FIFO', - 'SC_PS_ARB_PA_SC_BUSY', 'SC_PS_ARB_SC_BUSY', - 'SC_PS_ARB_STALLED_FROM_BELOW', 'SC_PS_ARB_STARVED_FROM_ABOVE', - 'SC_PS_ARB_XFC_ALL_EVENT_OR_PRIM_CYCLES', - 'SC_PS_ARB_XFC_ONLY_ONE_INC_PER_PRIM', - 'SC_PS_ARB_XFC_ONLY_PRIM_CYCLES', 'SC_PS_CTX_DONE_FIFO_POP', - 'SC_PS_CTX_DONE_FIFO_PUSH', 'SC_PS_ENG_MULTICYCLE_BUBBLE', - 'SC_PS_PA0_SC_FIFO_EMPTY', 'SC_PS_PA0_SC_FIFO_FULL', - 'SC_PS_PA1_SC_FIFO_EMPTY', 'SC_PS_PA1_SC_FIFO_FULL', - 'SC_PS_PA2_SC_FIFO_EMPTY', 'SC_PS_PA2_SC_FIFO_FULL', - 'SC_PS_PA3_SC_FIFO_EMPTY', 'SC_PS_PA3_SC_FIFO_FULL', - 'SC_PS_PM_PBB_TO_PSE_FIFO_FULL', - 'SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_PBB_TO_PSE_FIFO_FULL', - 'SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_PFF_PW_FULL', - 'SC_PS_PM_PBB_TO_PSE_FIFO_WE_STALL_BY_ZFF_PW_FULL', - 'SC_PS_PM_PFF_PW_FULL', 'SC_PS_PM_ZFF_PW_FULL', - 'SC_PS_TO_BE_SCLK_GATE_STALL', 'SC_PS_TS_EVENT_FIFO_POP', - 'SC_PS_TS_EVENT_FIFO_PUSH', 'SC_PW_BM_PASS_EMPTY_PRIM', - 'SC_QTR_FULL_QUAD', 'SC_QTR_HALF_QUAD', 'SC_QTR_QTR_QUAD', - 'SC_QZ0_QUAD_COUNT', 'SC_QZ0_QUAD_PER_TILE_H0', - 'SC_QZ0_QUAD_PER_TILE_H1', 'SC_QZ0_QUAD_PER_TILE_H10', - 'SC_QZ0_QUAD_PER_TILE_H11', 'SC_QZ0_QUAD_PER_TILE_H12', - 'SC_QZ0_QUAD_PER_TILE_H13', 'SC_QZ0_QUAD_PER_TILE_H14', - 'SC_QZ0_QUAD_PER_TILE_H15', 'SC_QZ0_QUAD_PER_TILE_H16', - 'SC_QZ0_QUAD_PER_TILE_H2', 'SC_QZ0_QUAD_PER_TILE_H3', - 'SC_QZ0_QUAD_PER_TILE_H4', 'SC_QZ0_QUAD_PER_TILE_H5', - 'SC_QZ0_QUAD_PER_TILE_H6', 'SC_QZ0_QUAD_PER_TILE_H7', - 'SC_QZ0_QUAD_PER_TILE_H8', 'SC_QZ0_QUAD_PER_TILE_H9', - 'SC_QZ0_TILE_COUNT', 'SC_QZ0_TILE_COVERED_COUNT', - 'SC_QZ0_TILE_NOT_COVERED_COUNT', 'SC_QZ1_QUAD_COUNT', - 'SC_QZ1_QUAD_PER_TILE_H0', 'SC_QZ1_QUAD_PER_TILE_H1', - 'SC_QZ1_QUAD_PER_TILE_H10', 'SC_QZ1_QUAD_PER_TILE_H11', - 'SC_QZ1_QUAD_PER_TILE_H12', 'SC_QZ1_QUAD_PER_TILE_H13', - 'SC_QZ1_QUAD_PER_TILE_H14', 'SC_QZ1_QUAD_PER_TILE_H15', - 'SC_QZ1_QUAD_PER_TILE_H16', 'SC_QZ1_QUAD_PER_TILE_H2', - 'SC_QZ1_QUAD_PER_TILE_H3', 'SC_QZ1_QUAD_PER_TILE_H4', - 'SC_QZ1_QUAD_PER_TILE_H5', 'SC_QZ1_QUAD_PER_TILE_H6', - 'SC_QZ1_QUAD_PER_TILE_H7', 'SC_QZ1_QUAD_PER_TILE_H8', - 'SC_QZ1_QUAD_PER_TILE_H9', 'SC_QZ1_TILE_COUNT', - 'SC_QZ1_TILE_COVERED_COUNT', 'SC_QZ1_TILE_NOT_COVERED_COUNT', - 'SC_QZ2_QUAD_COUNT', 'SC_QZ2_QUAD_PER_TILE_H0', - 'SC_QZ2_QUAD_PER_TILE_H1', 'SC_QZ2_QUAD_PER_TILE_H10', - 'SC_QZ2_QUAD_PER_TILE_H11', 'SC_QZ2_QUAD_PER_TILE_H12', - 'SC_QZ2_QUAD_PER_TILE_H13', 'SC_QZ2_QUAD_PER_TILE_H14', - 'SC_QZ2_QUAD_PER_TILE_H15', 'SC_QZ2_QUAD_PER_TILE_H16', - 'SC_QZ2_QUAD_PER_TILE_H2', 'SC_QZ2_QUAD_PER_TILE_H3', - 'SC_QZ2_QUAD_PER_TILE_H4', 'SC_QZ2_QUAD_PER_TILE_H5', - 'SC_QZ2_QUAD_PER_TILE_H6', 'SC_QZ2_QUAD_PER_TILE_H7', - 'SC_QZ2_QUAD_PER_TILE_H8', 'SC_QZ2_QUAD_PER_TILE_H9', - 'SC_QZ2_TILE_COUNT', 'SC_QZ2_TILE_COVERED_COUNT', - 'SC_QZ2_TILE_NOT_COVERED_COUNT', 'SC_QZ3_QUAD_COUNT', - 'SC_QZ3_QUAD_PER_TILE_H0', 'SC_QZ3_QUAD_PER_TILE_H1', - 'SC_QZ3_QUAD_PER_TILE_H10', 'SC_QZ3_QUAD_PER_TILE_H11', - 'SC_QZ3_QUAD_PER_TILE_H12', 'SC_QZ3_QUAD_PER_TILE_H13', - 'SC_QZ3_QUAD_PER_TILE_H14', 'SC_QZ3_QUAD_PER_TILE_H15', - 'SC_QZ3_QUAD_PER_TILE_H16', 'SC_QZ3_QUAD_PER_TILE_H2', - 'SC_QZ3_QUAD_PER_TILE_H3', 'SC_QZ3_QUAD_PER_TILE_H4', - 'SC_QZ3_QUAD_PER_TILE_H5', 'SC_QZ3_QUAD_PER_TILE_H6', - 'SC_QZ3_QUAD_PER_TILE_H7', 'SC_QZ3_QUAD_PER_TILE_H8', - 'SC_QZ3_QUAD_PER_TILE_H9', 'SC_QZ3_TILE_COUNT', - 'SC_QZ3_TILE_COVERED_COUNT', 'SC_QZ3_TILE_NOT_COVERED_COUNT', - 'SC_QZQP_WINDOW_VALID', 'SC_QZQP_WINDOW_VALID_BUSY', - 'SC_REG_SCLK_BUSY', 'SC_RESERVED_0', 'SC_RESERVED_1', - 'SC_RESERVED_2', 'SC_RESERVED_3', 'SC_SCB_BUSY', - 'SC_SCF_SCB_INTERFACE_BUSY', 'SC_SCISSOR_DISCARD', - 'SC_SEND_DB_VPZ', 'SC_SPIBC_FULL_FREEZE', 'SC_SPI_CREDIT_AT_MAX', - 'SC_SPI_CREDIT_AT_MAX_NO_PENDING_SEND', - 'SC_SPI_CREDIT_AT_ZERO_WITH_PENDING_SEND', 'SC_SPI_DEALLOC_0_0', - 'SC_SPI_DEALLOC_0_1', 'SC_SPI_DEALLOC_0_2', 'SC_SPI_DEALLOC_1_0', - 'SC_SPI_DEALLOC_1_1', 'SC_SPI_DEALLOC_1_2', 'SC_SPI_DEALLOC_2_0', - 'SC_SPI_DEALLOC_2_1', 'SC_SPI_DEALLOC_2_2', 'SC_SPI_DEALLOC_3_0', - 'SC_SPI_DEALLOC_3_1', 'SC_SPI_DEALLOC_3_2', 'SC_SPI_EVENT', - 'SC_SPI_FPOV_0', 'SC_SPI_FPOV_1', 'SC_SPI_FPOV_2', - 'SC_SPI_FPOV_3', 'SC_SPI_SEND', 'SC_SRPS_WINDOW_VALID', - 'SC_SRPS_WINDOW_VALID_BUSY', 'SC_STALLED_BY_BCI', - 'SC_STALLED_BY_DB0_TILEFIFO', 'SC_STALLED_BY_DB1_TILEFIFO', - 'SC_STALLED_BY_DB_QUAD', 'SC_STALLED_BY_DB_TILE', - 'SC_STALLED_BY_PRIMFIFO', 'SC_STALLED_BY_QUADFIFO', - 'SC_STALLED_BY_SPI', 'SC_STALLED_BY_TILEFIFO', - 'SC_STALLED_BY_TILEORDERFIFO', 'SC_STARVED_BY_DB_QUAD', - 'SC_STARVED_BY_DB_TILE', 'SC_STARVED_BY_PA', - 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_FULL', - 'SC_STARVED_BY_PA_WITH_UNSELECTED_PA_NOT_EMPTY', - 'SC_SUPERTILE_COUNT', - 'SC_SUPERTILE_COUNT_EXCLUDE_PASS_EMPTY_PRIM', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H0', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H1', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H10', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H11', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H12', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H13', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H14', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H15', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H16', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H2', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H3', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H4', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H5', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H6', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H7', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H8', - 'SC_SUPERTILE_PER_PRIM_EXCLUDE_PASS_EMPTY_PRIM_H9', - 'SC_SUPERTILE_PER_PRIM_H0', 'SC_SUPERTILE_PER_PRIM_H1', - 'SC_SUPERTILE_PER_PRIM_H10', 'SC_SUPERTILE_PER_PRIM_H11', - 'SC_SUPERTILE_PER_PRIM_H12', 'SC_SUPERTILE_PER_PRIM_H13', - 'SC_SUPERTILE_PER_PRIM_H14', 'SC_SUPERTILE_PER_PRIM_H15', - 'SC_SUPERTILE_PER_PRIM_H16', 'SC_SUPERTILE_PER_PRIM_H2', - 'SC_SUPERTILE_PER_PRIM_H3', 'SC_SUPERTILE_PER_PRIM_H4', - 'SC_SUPERTILE_PER_PRIM_H5', 'SC_SUPERTILE_PER_PRIM_H6', - 'SC_SUPERTILE_PER_PRIM_H7', 'SC_SUPERTILE_PER_PRIM_H8', - 'SC_SUPERTILE_PER_PRIM_H9', 'SC_TILE_PER_PRIM_H0', - 'SC_TILE_PER_PRIM_H1', 'SC_TILE_PER_PRIM_H10', - 'SC_TILE_PER_PRIM_H11', 'SC_TILE_PER_PRIM_H12', - 'SC_TILE_PER_PRIM_H13', 'SC_TILE_PER_PRIM_H14', - 'SC_TILE_PER_PRIM_H15', 'SC_TILE_PER_PRIM_H16', - 'SC_TILE_PER_PRIM_H2', 'SC_TILE_PER_PRIM_H3', - 'SC_TILE_PER_PRIM_H4', 'SC_TILE_PER_PRIM_H5', - 'SC_TILE_PER_PRIM_H6', 'SC_TILE_PER_PRIM_H7', - 'SC_TILE_PER_PRIM_H8', 'SC_TILE_PER_PRIM_H9', - 'SC_TILE_PER_SUPERTILE_H0', 'SC_TILE_PER_SUPERTILE_H1', - 'SC_TILE_PER_SUPERTILE_H10', 'SC_TILE_PER_SUPERTILE_H11', - 'SC_TILE_PER_SUPERTILE_H12', 'SC_TILE_PER_SUPERTILE_H13', - 'SC_TILE_PER_SUPERTILE_H14', 'SC_TILE_PER_SUPERTILE_H15', - 'SC_TILE_PER_SUPERTILE_H16', 'SC_TILE_PER_SUPERTILE_H2', - 'SC_TILE_PER_SUPERTILE_H3', 'SC_TILE_PER_SUPERTILE_H4', - 'SC_TILE_PER_SUPERTILE_H5', 'SC_TILE_PER_SUPERTILE_H6', - 'SC_TILE_PER_SUPERTILE_H7', 'SC_TILE_PER_SUPERTILE_H8', - 'SC_TILE_PER_SUPERTILE_H9', 'SC_TILE_PICKED_H1', - 'SC_TILE_PICKED_H2', 'SC_TILE_PICKED_H3', 'SC_TILE_PICKED_H4', - 'SC_TPQZ_WINDOW_VALID', 'SC_TPQZ_WINDOW_VALID_BUSY', - 'SC_TRPK_WINDOW_VALID', 'SC_TRPK_WINDOW_VALID_BUSY', 'SC_UR_1X', - 'SC_UR_2X', 'SC_UR_4X', 'SC_UR_8X', 'SC_VRS_COMB_MODE_MAX', - 'SC_VRS_COMB_MODE_MIN', 'SC_VRS_COMB_MODE_OVERRIDE', - 'SC_VRS_COMB_MODE_PASSTHRU', 'SC_VRS_COMB_MODE_SATURATE', - 'SDMA0_BASE', 'SDMA0_BASE__INST0_SEG0', 'SDMA0_BASE__INST0_SEG1', - 'SDMA0_BASE__INST0_SEG2', 'SDMA0_BASE__INST0_SEG3', - 'SDMA0_BASE__INST0_SEG4', 'SDMA0_BASE__INST1_SEG0', - 'SDMA0_BASE__INST1_SEG1', 'SDMA0_BASE__INST1_SEG2', - 'SDMA0_BASE__INST1_SEG3', 'SDMA0_BASE__INST1_SEG4', - 'SDMA0_BASE__INST2_SEG0', 'SDMA0_BASE__INST2_SEG1', - 'SDMA0_BASE__INST2_SEG2', 'SDMA0_BASE__INST2_SEG3', - 'SDMA0_BASE__INST2_SEG4', 'SDMA0_BASE__INST3_SEG0', - 'SDMA0_BASE__INST3_SEG1', 'SDMA0_BASE__INST3_SEG2', - 'SDMA0_BASE__INST3_SEG3', 'SDMA0_BASE__INST3_SEG4', - 'SDMA0_BASE__INST4_SEG0', 'SDMA0_BASE__INST4_SEG1', - 'SDMA0_BASE__INST4_SEG2', 'SDMA0_BASE__INST4_SEG3', - 'SDMA0_BASE__INST4_SEG4', 'SDMA0_BASE__INST5_SEG0', - 'SDMA0_BASE__INST5_SEG1', 'SDMA0_BASE__INST5_SEG2', - 'SDMA0_BASE__INST5_SEG3', 'SDMA0_BASE__INST5_SEG4', - 'SDMA0_BASE__INST6_SEG0', 'SDMA0_BASE__INST6_SEG1', - 'SDMA0_BASE__INST6_SEG2', 'SDMA0_BASE__INST6_SEG3', - 'SDMA0_BASE__INST6_SEG4', 'SDMA1_BASE', 'SDMA1_BASE__INST0_SEG0', - 'SDMA1_BASE__INST0_SEG1', 'SDMA1_BASE__INST0_SEG2', - 'SDMA1_BASE__INST0_SEG3', 'SDMA1_BASE__INST0_SEG4', - 'SDMA1_BASE__INST1_SEG0', 'SDMA1_BASE__INST1_SEG1', - 'SDMA1_BASE__INST1_SEG2', 'SDMA1_BASE__INST1_SEG3', - 'SDMA1_BASE__INST1_SEG4', 'SDMA1_BASE__INST2_SEG0', - 'SDMA1_BASE__INST2_SEG1', 'SDMA1_BASE__INST2_SEG2', - 'SDMA1_BASE__INST2_SEG3', 'SDMA1_BASE__INST2_SEG4', - 'SDMA1_BASE__INST3_SEG0', 'SDMA1_BASE__INST3_SEG1', - 'SDMA1_BASE__INST3_SEG2', 'SDMA1_BASE__INST3_SEG3', - 'SDMA1_BASE__INST3_SEG4', 'SDMA1_BASE__INST4_SEG0', - 'SDMA1_BASE__INST4_SEG1', 'SDMA1_BASE__INST4_SEG2', - 'SDMA1_BASE__INST4_SEG3', 'SDMA1_BASE__INST4_SEG4', - 'SDMA1_BASE__INST5_SEG0', 'SDMA1_BASE__INST5_SEG1', - 'SDMA1_BASE__INST5_SEG2', 'SDMA1_BASE__INST5_SEG3', - 'SDMA1_BASE__INST5_SEG4', 'SDMA1_BASE__INST6_SEG0', - 'SDMA1_BASE__INST6_SEG1', 'SDMA1_BASE__INST6_SEG2', - 'SDMA1_BASE__INST6_SEG3', 'SDMA1_BASE__INST6_SEG4', - 'SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy0_mask', - 'SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy0_offset', - 'SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy0_shift', - 'SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy1_mask', - 'SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy1_offset', - 'SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy1_shift', - 'SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy2_mask', - 'SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy2_offset', - 'SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy2_shift', - 'SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy3_mask', - 'SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy3_offset', - 'SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy3_shift', - 'SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy4_mask', - 'SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy4_offset', - 'SDMA_AQL_PKT_BARRIER_OR_CACHE_POLICY_cache_policy4_shift', - 'SDMA_AQL_PKT_BARRIER_OR_COMPLETION_SIGNAL_HI_completion_signal_63_32_mask', - 'SDMA_AQL_PKT_BARRIER_OR_COMPLETION_SIGNAL_HI_completion_signal_63_32_offset', - 'SDMA_AQL_PKT_BARRIER_OR_COMPLETION_SIGNAL_HI_completion_signal_63_32_shift', - 'SDMA_AQL_PKT_BARRIER_OR_COMPLETION_SIGNAL_LO_completion_signal_31_0_mask', - 'SDMA_AQL_PKT_BARRIER_OR_COMPLETION_SIGNAL_LO_completion_signal_31_0_offset', - 'SDMA_AQL_PKT_BARRIER_OR_COMPLETION_SIGNAL_LO_completion_signal_31_0_shift', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_0_HI_dependent_addr_0_63_32_mask', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_0_HI_dependent_addr_0_63_32_offset', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_0_HI_dependent_addr_0_63_32_shift', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_0_LO_dependent_addr_0_31_0_mask', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_0_LO_dependent_addr_0_31_0_offset', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_0_LO_dependent_addr_0_31_0_shift', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_1_HI_dependent_addr_1_63_32_mask', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_1_HI_dependent_addr_1_63_32_offset', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_1_HI_dependent_addr_1_63_32_shift', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_1_LO_dependent_addr_1_31_0_mask', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_1_LO_dependent_addr_1_31_0_offset', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_1_LO_dependent_addr_1_31_0_shift', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_2_HI_dependent_addr_2_63_32_mask', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_2_HI_dependent_addr_2_63_32_offset', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_2_HI_dependent_addr_2_63_32_shift', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_2_LO_dependent_addr_2_31_0_mask', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_2_LO_dependent_addr_2_31_0_offset', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_2_LO_dependent_addr_2_31_0_shift', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_3_HI_dependent_addr_3_63_32_mask', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_3_HI_dependent_addr_3_63_32_offset', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_3_HI_dependent_addr_3_63_32_shift', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_3_LO_dependent_addr_3_31_0_mask', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_3_LO_dependent_addr_3_31_0_offset', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_3_LO_dependent_addr_3_31_0_shift', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_4_HI_dependent_addr_4_63_32_mask', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_4_HI_dependent_addr_4_63_32_offset', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_4_HI_dependent_addr_4_63_32_shift', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_4_LO_dependent_addr_4_31_0_mask', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_4_LO_dependent_addr_4_31_0_offset', - 'SDMA_AQL_PKT_BARRIER_OR_DEPENDENT_ADDR_4_LO_dependent_addr_4_31_0_shift', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_acquire_fence_scope_mask', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_acquire_fence_scope_offset', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_acquire_fence_scope_shift', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_barrier_mask', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_barrier_offset', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_barrier_shift', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_cpv_mask', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_cpv_offset', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_cpv_shift', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_format_mask', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_format_offset', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_format_shift', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_op_mask', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_op_offset', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_op_shift', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_release_fence_scope_mask', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_release_fence_scope_offset', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_release_fence_scope_shift', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_reserved_mask', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_reserved_offset', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_reserved_shift', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_subop_mask', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_subop_offset', - 'SDMA_AQL_PKT_BARRIER_OR_HEADER_subop_shift', - 'SDMA_AQL_PKT_BARRIER_OR_RESERVED_DW13_reserved_dw13_mask', - 'SDMA_AQL_PKT_BARRIER_OR_RESERVED_DW13_reserved_dw13_offset', - 'SDMA_AQL_PKT_BARRIER_OR_RESERVED_DW13_reserved_dw13_shift', - 'SDMA_AQL_PKT_BARRIER_OR_RESERVED_DW1_reserved_dw1_mask', - 'SDMA_AQL_PKT_BARRIER_OR_RESERVED_DW1_reserved_dw1_offset', - 'SDMA_AQL_PKT_BARRIER_OR_RESERVED_DW1_reserved_dw1_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_COMPLETION_SIGNAL_HI_completion_signal_63_32_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_COMPLETION_SIGNAL_HI_completion_signal_63_32_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_COMPLETION_SIGNAL_HI_completion_signal_63_32_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_COMPLETION_SIGNAL_LO_completion_signal_31_0_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_COMPLETION_SIGNAL_LO_completion_signal_31_0_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_COMPLETION_SIGNAL_LO_completion_signal_31_0_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_COUNT_count_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_COUNT_count_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_COUNT_count_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_DST_ADDR_HI_dst_addr_63_32_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_DST_ADDR_HI_dst_addr_63_32_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_DST_ADDR_HI_dst_addr_63_32_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_DST_ADDR_LO_dst_addr_31_0_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_DST_ADDR_LO_dst_addr_31_0_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_DST_ADDR_LO_dst_addr_31_0_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_acquire_fence_scope_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_acquire_fence_scope_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_acquire_fence_scope_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_barrier_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_barrier_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_barrier_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_cpv_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_cpv_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_cpv_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_format_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_format_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_format_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_op_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_op_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_op_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_release_fence_scope_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_release_fence_scope_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_release_fence_scope_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_reserved_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_reserved_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_reserved_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_subop_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_subop_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_HEADER_subop_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_dst_cache_policy_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_dst_cache_policy_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_dst_cache_policy_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_dst_sw_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_dst_sw_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_dst_sw_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_src_cache_policy_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_src_cache_policy_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_src_cache_policy_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_src_sw_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_src_sw_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_PARAMETER_src_sw_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW10_reserved_dw10_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW10_reserved_dw10_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW10_reserved_dw10_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW11_reserved_dw11_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW11_reserved_dw11_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW11_reserved_dw11_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW12_reserved_dw12_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW12_reserved_dw12_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW12_reserved_dw12_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW13_reserved_dw13_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW13_reserved_dw13_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW13_reserved_dw13_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW1_reserved_dw1_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW1_reserved_dw1_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_RESERVED_DW1_reserved_dw1_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_RETURN_ADDR_HI_return_addr_63_32_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_RETURN_ADDR_HI_return_addr_63_32_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_RETURN_ADDR_HI_return_addr_63_32_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_RETURN_ADDR_LO_return_addr_31_0_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_RETURN_ADDR_LO_return_addr_31_0_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_RETURN_ADDR_LO_return_addr_31_0_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_SRC_ADDR_HI_src_addr_63_32_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_SRC_ADDR_HI_src_addr_63_32_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_SRC_ADDR_HI_src_addr_63_32_shift', - 'SDMA_AQL_PKT_COPY_LINEAR_SRC_ADDR_LO_src_addr_31_0_mask', - 'SDMA_AQL_PKT_COPY_LINEAR_SRC_ADDR_LO_src_addr_31_0_offset', - 'SDMA_AQL_PKT_COPY_LINEAR_SRC_ADDR_LO_src_addr_31_0_shift', - 'SDMA_AQL_PKT_HEADER_HEADER_acquire_fence_scope_mask', - 'SDMA_AQL_PKT_HEADER_HEADER_acquire_fence_scope_offset', - 'SDMA_AQL_PKT_HEADER_HEADER_acquire_fence_scope_shift', - 'SDMA_AQL_PKT_HEADER_HEADER_barrier_mask', - 'SDMA_AQL_PKT_HEADER_HEADER_barrier_offset', - 'SDMA_AQL_PKT_HEADER_HEADER_barrier_shift', - 'SDMA_AQL_PKT_HEADER_HEADER_cpv_mask', - 'SDMA_AQL_PKT_HEADER_HEADER_cpv_offset', - 'SDMA_AQL_PKT_HEADER_HEADER_cpv_shift', - 'SDMA_AQL_PKT_HEADER_HEADER_format_mask', - 'SDMA_AQL_PKT_HEADER_HEADER_format_offset', - 'SDMA_AQL_PKT_HEADER_HEADER_format_shift', - 'SDMA_AQL_PKT_HEADER_HEADER_op_mask', - 'SDMA_AQL_PKT_HEADER_HEADER_op_offset', - 'SDMA_AQL_PKT_HEADER_HEADER_op_shift', - 'SDMA_AQL_PKT_HEADER_HEADER_release_fence_scope_mask', - 'SDMA_AQL_PKT_HEADER_HEADER_release_fence_scope_offset', - 'SDMA_AQL_PKT_HEADER_HEADER_release_fence_scope_shift', - 'SDMA_AQL_PKT_HEADER_HEADER_reserved_mask', - 'SDMA_AQL_PKT_HEADER_HEADER_reserved_offset', - 'SDMA_AQL_PKT_HEADER_HEADER_reserved_shift', - 'SDMA_AQL_PKT_HEADER_HEADER_subop_mask', - 'SDMA_AQL_PKT_HEADER_HEADER_subop_offset', - 'SDMA_AQL_PKT_HEADER_HEADER_subop_shift', 'SDMA_ATOMIC_ADD64', - 'SDMA_GCR_GL1_INV', 'SDMA_GCR_GL2_DISCARD', 'SDMA_GCR_GL2_INV', - 'SDMA_GCR_GL2_US', 'SDMA_GCR_GL2_WB', 'SDMA_GCR_GLK_INV', - 'SDMA_GCR_GLK_WB', 'SDMA_GCR_GLM_INV', 'SDMA_GCR_GLM_WB', - 'SDMA_GCR_GLV_INV', 'SDMA_GCR_RANGE_IS_PA', - 'SDMA_OP_AQL_BARRIER_OR', 'SDMA_OP_AQL_COPY', 'SDMA_OP_ATOMIC', - 'SDMA_OP_COND_EXE', 'SDMA_OP_CONST_FILL', 'SDMA_OP_COPY', - 'SDMA_OP_DUMMY_TRAP', 'SDMA_OP_FENCE', 'SDMA_OP_GCR', - 'SDMA_OP_GCR_REQ', 'SDMA_OP_GPUVM_INV', 'SDMA_OP_INDIRECT', - 'SDMA_OP_NOP', 'SDMA_OP_POLL_REGMEM', 'SDMA_OP_PRE_EXE', - 'SDMA_OP_PTEPDE', 'SDMA_OP_SEM', 'SDMA_OP_SRBM_WRITE', - 'SDMA_OP_TIMESTAMP', 'SDMA_OP_TRAP', 'SDMA_OP_WRITE', - 'SDMA_PERFMON_SEL', 'SDMA_PERFMON_SEL_CE_AFIFO_FULL', - 'SDMA_PERFMON_SEL_CE_DST_IDLE', 'SDMA_PERFMON_SEL_CE_INFO1_FULL', - 'SDMA_PERFMON_SEL_CE_INFO_FULL', 'SDMA_PERFMON_SEL_CE_IN_IDLE', - 'SDMA_PERFMON_SEL_CE_L1_WR_VLD', 'SDMA_PERFMON_SEL_CE_OUT_IDLE', - 'SDMA_PERFMON_SEL_CE_RD_STALL', 'SDMA_PERFMON_SEL_CE_RREQ_IDLE', - 'SDMA_PERFMON_SEL_CE_SPLIT_IDLE', 'SDMA_PERFMON_SEL_CE_WREQ_IDLE', - 'SDMA_PERFMON_SEL_CE_WR_IDLE', 'SDMA_PERFMON_SEL_CE_WR_STALL', - 'SDMA_PERFMON_SEL_CPF_SDMA_INVREQ', 'SDMA_PERFMON_SEL_CTX_CHANGE', - 'SDMA_PERFMON_SEL_CTX_CHANGE_EXCEPTION', - 'SDMA_PERFMON_SEL_CTX_CHANGE_EXPIRED', 'SDMA_PERFMON_SEL_CYCLE', - 'SDMA_PERFMON_SEL_DMA_L1_RD_SEND', - 'SDMA_PERFMON_SEL_DMA_L1_WR_SEND', - 'SDMA_PERFMON_SEL_DMA_MC_RD_SEND', - 'SDMA_PERFMON_SEL_DMA_MC_WR_SEND', 'SDMA_PERFMON_SEL_DOORBELL', - 'SDMA_PERFMON_SEL_EX_IDLE', - 'SDMA_PERFMON_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 'SDMA_PERFMON_SEL_F32_L1_WR_VLD', 'SDMA_PERFMON_SEL_GCR_RTN', - 'SDMA_PERFMON_SEL_GCR_SEND', 'SDMA_PERFMON_SEL_GFX_SELECT', - 'SDMA_PERFMON_SEL_GPUVM_INV_HIGH', - 'SDMA_PERFMON_SEL_GPUVM_INV_LOW', 'SDMA_PERFMON_SEL_IB_CMD_FULL', - 'SDMA_PERFMON_SEL_IB_CMD_IDLE', 'SDMA_PERFMON_SEL_IDLE', - 'SDMA_PERFMON_SEL_INT_IDLE', 'SDMA_PERFMON_SEL_INT_REQ_COUNT', - 'SDMA_PERFMON_SEL_INT_REQ_STALL', - 'SDMA_PERFMON_SEL_INT_RESP_ACCEPTED', - 'SDMA_PERFMON_SEL_INT_RESP_RETRY', - 'SDMA_PERFMON_SEL_L1_RDL2_IDLE', 'SDMA_PERFMON_SEL_L1_RDMC_IDLE', - 'SDMA_PERFMON_SEL_L1_RD_INV_IDLE', - 'SDMA_PERFMON_SEL_L1_WRL2_IDLE', 'SDMA_PERFMON_SEL_L1_WRMC_IDLE', - 'SDMA_PERFMON_SEL_L1_WR_INV_IDLE', - 'SDMA_PERFMON_SEL_L2_META_RET_VLD', - 'SDMA_PERFMON_SEL_MC_RD_COUNT', 'SDMA_PERFMON_SEL_MC_RD_IDLE', - 'SDMA_PERFMON_SEL_MC_RD_NO_POLL_IDLE', - 'SDMA_PERFMON_SEL_MC_RD_RET_STALL', - 'SDMA_PERFMON_SEL_MC_WR_COUNT', 'SDMA_PERFMON_SEL_MC_WR_IDLE', - 'SDMA_PERFMON_SEL_META_L2_REQ_SEND', - 'SDMA_PERFMON_SEL_META_REQ_SEND', 'SDMA_PERFMON_SEL_META_RTN_VLD', - 'SDMA_PERFMON_SEL_MMHUB_TAG_DELAY_COUNTER', - 'SDMA_PERFMON_SEL_NUM_PACKET', 'SDMA_PERFMON_SEL_PAGE_SELECT', - 'SDMA_PERFMON_SEL_RB_CMD_FULL', 'SDMA_PERFMON_SEL_RB_CMD_IDLE', - 'SDMA_PERFMON_SEL_RB_EMPTY', 'SDMA_PERFMON_SEL_RB_FULL', - 'SDMA_PERFMON_SEL_RB_RPTR_WB', 'SDMA_PERFMON_SEL_RB_RPTR_WRAP', - 'SDMA_PERFMON_SEL_RB_WPTR_POLL_READ', - 'SDMA_PERFMON_SEL_RB_WPTR_WRAP', 'SDMA_PERFMON_SEL_RD_BA_RTR', - 'SDMA_PERFMON_SEL_REG_IDLE', 'SDMA_PERFMON_SEL_RLC0_SELECT', - 'SDMA_PERFMON_SEL_RLC1_SELECT', - 'SDMA_PERFMON_SEL_SDMA_CPF_INVACK', - 'SDMA_PERFMON_SEL_SDMA_UTCL2_INVACK', - 'SDMA_PERFMON_SEL_SDMA_UTCL2_INVACK_ALL', - 'SDMA_PERFMON_SEL_SDMA_UTCL2_RD_SEND', - 'SDMA_PERFMON_SEL_SDMA_UTCL2_SEND', - 'SDMA_PERFMON_SEL_SDMA_UTCL2_WR_SEND', - 'SDMA_PERFMON_SEL_SEM_IDLE', 'SDMA_PERFMON_SEL_SEM_REQ_COUNT', - 'SDMA_PERFMON_SEL_SEM_REQ_STALL', - 'SDMA_PERFMON_SEL_SEM_RESP_FAIL', - 'SDMA_PERFMON_SEL_SEM_RESP_INCOMPLETE', - 'SDMA_PERFMON_SEL_SEM_RESP_PASS', - 'SDMA_PERFMON_SEL_SRBM_REG_SEND', 'SDMA_PERFMON_SEL_TLBI_RTN', - 'SDMA_PERFMON_SEL_TLBI_SEND', - 'SDMA_PERFMON_SEL_UTCL1_TAG_DELAY_COUNTER', - 'SDMA_PERFMON_SEL_UTCL2_FREE', 'SDMA_PERFMON_SEL_UTCL2_RET_ACK', - 'SDMA_PERFMON_SEL_UTCL2_RET_XNACK', - 'SDMA_PERFMON_SEL_UTCL2_SDMA_INVREQ', - 'SDMA_PERFMON_SEL_UTCL2_SDMA_INVREQ_ALL', - 'SDMA_PERFMON_SEL_UTCL2_SDMA_RD_RTN', - 'SDMA_PERFMON_SEL_UTCL2_SDMA_WR_RTN', - 'SDMA_PERFMON_SEL_WR_BA_RTR', 'SDMA_PERF_SEL', - 'SDMA_PERF_SEL_CE_AFIFO_FULL', 'SDMA_PERF_SEL_CE_BUSY', - 'SDMA_PERF_SEL_CE_BUSY_END', 'SDMA_PERF_SEL_CE_BUSY_START', - 'SDMA_PERF_SEL_CE_CH_RDREQ_SEND', - 'SDMA_PERF_SEL_CE_CH_WRREQ_SEND', 'SDMA_PERF_SEL_CE_CH_WR_REQ', - 'SDMA_PERF_SEL_CE_CH_WR_RET', 'SDMA_PERF_SEL_CE_DST_IDLE', - 'SDMA_PERF_SEL_CE_INFO1_FULL', 'SDMA_PERF_SEL_CE_INFO_FULL', - 'SDMA_PERF_SEL_CE_IN_IDLE', 'SDMA_PERF_SEL_CE_L1_WR_VLD', - 'SDMA_PERF_SEL_CE_OR_F32_CH_RD_REQ', - 'SDMA_PERF_SEL_CE_OR_F32_CH_RD_RET', 'SDMA_PERF_SEL_CE_OUT_IDLE', - 'SDMA_PERF_SEL_CE_RD_STALL', 'SDMA_PERF_SEL_CE_RREQ_IDLE', - 'SDMA_PERF_SEL_CE_SPLIT_IDLE', 'SDMA_PERF_SEL_CE_WREQ_IDLE', - 'SDMA_PERF_SEL_CE_WR_IDLE', 'SDMA_PERF_SEL_CE_WR_STALL', - 'SDMA_PERF_SEL_CGCG_FENCE', 'SDMA_PERF_SEL_CH_CE_RDRET_VALID', - 'SDMA_PERF_SEL_CH_CE_WRRET_VALID', 'SDMA_PERF_SEL_CMD_OP_END', - 'SDMA_PERF_SEL_CMD_OP_MATCH', 'SDMA_PERF_SEL_CMD_OP_START', - 'SDMA_PERF_SEL_CPF_SDMA_INVREQ', 'SDMA_PERF_SEL_CTX_CHANGE', - 'SDMA_PERF_SEL_CTX_CHANGE_EXCEPTION', - 'SDMA_PERF_SEL_CTX_CHANGE_EXPIRED', 'SDMA_PERF_SEL_CYCLE', - 'SDMA_PERF_SEL_DMA_L1_RD_SEND', 'SDMA_PERF_SEL_DMA_L1_WR_SEND', - 'SDMA_PERF_SEL_DMA_MC_RD_SEND', 'SDMA_PERF_SEL_DMA_MC_WR_SEND', - 'SDMA_PERF_SEL_DOORBELL', 'SDMA_PERF_SEL_EX_IDLE', - 'SDMA_PERF_SEL_EX_IDLE_POLL_TIMER_EXPIRE', - 'SDMA_PERF_SEL_F32_CH_WR_REQ', 'SDMA_PERF_SEL_F32_CH_WR_RET', - 'SDMA_PERF_SEL_F32_L1_WR_VLD', - 'SDMA_PERF_SEL_F32_PERFCNT_TRIGGER', - 'SDMA_PERF_SEL_F32_PERFCNT_TRIGGER_END', - 'SDMA_PERF_SEL_F32_PERFCNT_TRIGGER_START', - 'SDMA_PERF_SEL_GCR_RTN', 'SDMA_PERF_SEL_GCR_SEND', - 'SDMA_PERF_SEL_GFX_SELECT', 'SDMA_PERF_SEL_GPUVM_INV_HIGH', - 'SDMA_PERF_SEL_GPUVM_INV_LOW', 'SDMA_PERF_SEL_IB_CH_RD_REQ', - 'SDMA_PERF_SEL_IB_CH_RD_RET', 'SDMA_PERF_SEL_IB_CMD_FULL', - 'SDMA_PERF_SEL_IB_CMD_IDLE', 'SDMA_PERF_SEL_IDLE', - 'SDMA_PERF_SEL_INT_IDLE', 'SDMA_PERF_SEL_INT_REQ_COUNT', - 'SDMA_PERF_SEL_INT_REQ_STALL', 'SDMA_PERF_SEL_INT_RESP_ACCEPTED', - 'SDMA_PERF_SEL_INT_RESP_RETRY', 'SDMA_PERF_SEL_L1_RDL2_IDLE', - 'SDMA_PERF_SEL_L1_RDMC_IDLE', 'SDMA_PERF_SEL_L1_RD_INV_IDLE', - 'SDMA_PERF_SEL_L1_WRL2_IDLE', 'SDMA_PERF_SEL_L1_WRMC_IDLE', - 'SDMA_PERF_SEL_L1_WR_INV_IDLE', 'SDMA_PERF_SEL_L2_META_RET_VLD', - 'SDMA_PERF_SEL_MC_RD_COUNT', 'SDMA_PERF_SEL_MC_RD_IDLE', - 'SDMA_PERF_SEL_MC_RD_NO_POLL_IDLE', - 'SDMA_PERF_SEL_MC_RD_RET_STALL', 'SDMA_PERF_SEL_MC_WR_COUNT', - 'SDMA_PERF_SEL_MC_WR_IDLE', 'SDMA_PERF_SEL_META_L2_REQ_SEND', - 'SDMA_PERF_SEL_META_REQ_SEND', 'SDMA_PERF_SEL_META_RTN_VLD', - 'SDMA_PERF_SEL_NUM_PACKET', 'SDMA_PERF_SEL_PAGE_SELECT', - 'SDMA_PERF_SEL_RB_CH_RD_REQ', 'SDMA_PERF_SEL_RB_CH_RD_RET', - 'SDMA_PERF_SEL_RB_CMD_FULL', 'SDMA_PERF_SEL_RB_CMD_IDLE', - 'SDMA_PERF_SEL_RB_EMPTY', 'SDMA_PERF_SEL_RB_FULL', - 'SDMA_PERF_SEL_RB_RPTR_WB', 'SDMA_PERF_SEL_RB_RPTR_WRAP', - 'SDMA_PERF_SEL_RB_WPTR_POLL_READ', 'SDMA_PERF_SEL_RB_WPTR_WRAP', - 'SDMA_PERF_SEL_RD_BA_RTR', 'SDMA_PERF_SEL_REG_IDLE', - 'SDMA_PERF_SEL_RLC0_SELECT', 'SDMA_PERF_SEL_RLC1_SELECT', - 'SDMA_PERF_SEL_SDMA_CPF_INVACK', - 'SDMA_PERF_SEL_SDMA_UTCL2_INVACK', - 'SDMA_PERF_SEL_SDMA_UTCL2_INVACK_ALL', - 'SDMA_PERF_SEL_SDMA_UTCL2_RD_SEND', - 'SDMA_PERF_SEL_SDMA_UTCL2_SEND', - 'SDMA_PERF_SEL_SDMA_UTCL2_WR_SEND', 'SDMA_PERF_SEL_SEM_IDLE', - 'SDMA_PERF_SEL_SEM_REQ_COUNT', 'SDMA_PERF_SEL_SEM_REQ_STALL', - 'SDMA_PERF_SEL_SEM_RESP_FAIL', - 'SDMA_PERF_SEL_SEM_RESP_INCOMPLETE', - 'SDMA_PERF_SEL_SEM_RESP_PASS', 'SDMA_PERF_SEL_SRBM_REG_SEND', - 'SDMA_PERF_SEL_TLBI_RTN', 'SDMA_PERF_SEL_TLBI_SEND', - 'SDMA_PERF_SEL_UTCL1_UTCL2_REQ', 'SDMA_PERF_SEL_UTCL1_UTCL2_RET', - 'SDMA_PERF_SEL_UTCL2_FREE', 'SDMA_PERF_SEL_UTCL2_RET_ACK', - 'SDMA_PERF_SEL_UTCL2_RET_XNACK', - 'SDMA_PERF_SEL_UTCL2_SDMA_INVREQ', - 'SDMA_PERF_SEL_UTCL2_SDMA_INVREQ_ALL', - 'SDMA_PERF_SEL_UTCL2_SDMA_RD_RTN', - 'SDMA_PERF_SEL_UTCL2_SDMA_WR_RTN', 'SDMA_PERF_SEL_WPTR_CH_RD_REQ', - 'SDMA_PERF_SEL_WPTR_CH_RD_RET', 'SDMA_PERF_SEL_WR_BA_RTR', - 'SDMA_PKT_ATOMIC', 'SDMA_PKT_ATOMIC_ADDR_HI_addr_63_32_mask', - 'SDMA_PKT_ATOMIC_ADDR_HI_addr_63_32_offset', - 'SDMA_PKT_ATOMIC_ADDR_HI_addr_63_32_shift', - 'SDMA_PKT_ATOMIC_ADDR_LO_addr_31_0_mask', - 'SDMA_PKT_ATOMIC_ADDR_LO_addr_31_0_offset', - 'SDMA_PKT_ATOMIC_ADDR_LO_addr_31_0_shift', - 'SDMA_PKT_ATOMIC_CMP_DATA_HI_cmp_data_63_32_mask', - 'SDMA_PKT_ATOMIC_CMP_DATA_HI_cmp_data_63_32_offset', - 'SDMA_PKT_ATOMIC_CMP_DATA_HI_cmp_data_63_32_shift', - 'SDMA_PKT_ATOMIC_CMP_DATA_LO_cmp_data_31_0_mask', - 'SDMA_PKT_ATOMIC_CMP_DATA_LO_cmp_data_31_0_offset', - 'SDMA_PKT_ATOMIC_CMP_DATA_LO_cmp_data_31_0_shift', - 'SDMA_PKT_ATOMIC_HEADER_atomic_op_mask', - 'SDMA_PKT_ATOMIC_HEADER_atomic_op_offset', - 'SDMA_PKT_ATOMIC_HEADER_atomic_op_shift', - 'SDMA_PKT_ATOMIC_HEADER_cache_policy_mask', - 'SDMA_PKT_ATOMIC_HEADER_cache_policy_offset', - 'SDMA_PKT_ATOMIC_HEADER_cache_policy_shift', - 'SDMA_PKT_ATOMIC_HEADER_cpv_mask', - 'SDMA_PKT_ATOMIC_HEADER_cpv_offset', - 'SDMA_PKT_ATOMIC_HEADER_cpv_shift', - 'SDMA_PKT_ATOMIC_HEADER_loop_mask', - 'SDMA_PKT_ATOMIC_HEADER_loop_offset', - 'SDMA_PKT_ATOMIC_HEADER_loop_shift', - 'SDMA_PKT_ATOMIC_HEADER_op_mask', - 'SDMA_PKT_ATOMIC_HEADER_op_offset', - 'SDMA_PKT_ATOMIC_HEADER_op_shift', - 'SDMA_PKT_ATOMIC_HEADER_tmz_mask', - 'SDMA_PKT_ATOMIC_HEADER_tmz_offset', - 'SDMA_PKT_ATOMIC_HEADER_tmz_shift', - 'SDMA_PKT_ATOMIC_LOOP_INTERVAL_loop_interval_mask', - 'SDMA_PKT_ATOMIC_LOOP_INTERVAL_loop_interval_offset', - 'SDMA_PKT_ATOMIC_LOOP_INTERVAL_loop_interval_shift', - 'SDMA_PKT_ATOMIC_SRC_DATA_HI_src_data_63_32_mask', - 'SDMA_PKT_ATOMIC_SRC_DATA_HI_src_data_63_32_offset', - 'SDMA_PKT_ATOMIC_SRC_DATA_HI_src_data_63_32_shift', - 'SDMA_PKT_ATOMIC_SRC_DATA_LO_src_data_31_0_mask', - 'SDMA_PKT_ATOMIC_SRC_DATA_LO_src_data_31_0_offset', - 'SDMA_PKT_ATOMIC_SRC_DATA_LO_src_data_31_0_shift', - 'SDMA_PKT_COND_EXE_ADDR_HI_addr_63_32_mask', - 'SDMA_PKT_COND_EXE_ADDR_HI_addr_63_32_offset', - 'SDMA_PKT_COND_EXE_ADDR_HI_addr_63_32_shift', - 'SDMA_PKT_COND_EXE_ADDR_LO_addr_31_0_mask', - 'SDMA_PKT_COND_EXE_ADDR_LO_addr_31_0_offset', - 'SDMA_PKT_COND_EXE_ADDR_LO_addr_31_0_shift', - 'SDMA_PKT_COND_EXE_EXEC_COUNT_exec_count_mask', - 'SDMA_PKT_COND_EXE_EXEC_COUNT_exec_count_offset', - 'SDMA_PKT_COND_EXE_EXEC_COUNT_exec_count_shift', - 'SDMA_PKT_COND_EXE_HEADER_cache_policy_mask', - 'SDMA_PKT_COND_EXE_HEADER_cache_policy_offset', - 'SDMA_PKT_COND_EXE_HEADER_cache_policy_shift', - 'SDMA_PKT_COND_EXE_HEADER_cpv_mask', - 'SDMA_PKT_COND_EXE_HEADER_cpv_offset', - 'SDMA_PKT_COND_EXE_HEADER_cpv_shift', - 'SDMA_PKT_COND_EXE_HEADER_op_mask', - 'SDMA_PKT_COND_EXE_HEADER_op_offset', - 'SDMA_PKT_COND_EXE_HEADER_op_shift', - 'SDMA_PKT_COND_EXE_HEADER_sub_op_mask', - 'SDMA_PKT_COND_EXE_HEADER_sub_op_offset', - 'SDMA_PKT_COND_EXE_HEADER_sub_op_shift', - 'SDMA_PKT_COND_EXE_REFERENCE_reference_mask', - 'SDMA_PKT_COND_EXE_REFERENCE_reference_offset', - 'SDMA_PKT_COND_EXE_REFERENCE_reference_shift', - 'SDMA_PKT_CONSTANT_FILL', - 'SDMA_PKT_CONSTANT_FILL_COUNT_count_mask', - 'SDMA_PKT_CONSTANT_FILL_COUNT_count_offset', - 'SDMA_PKT_CONSTANT_FILL_COUNT_count_shift', - 'SDMA_PKT_CONSTANT_FILL_DATA_src_data_31_0_mask', - 'SDMA_PKT_CONSTANT_FILL_DATA_src_data_31_0_offset', - 'SDMA_PKT_CONSTANT_FILL_DATA_src_data_31_0_shift', - 'SDMA_PKT_CONSTANT_FILL_DST_ADDR_HI_dst_addr_63_32_mask', - 'SDMA_PKT_CONSTANT_FILL_DST_ADDR_HI_dst_addr_63_32_offset', - 'SDMA_PKT_CONSTANT_FILL_DST_ADDR_HI_dst_addr_63_32_shift', - 'SDMA_PKT_CONSTANT_FILL_DST_ADDR_LO_dst_addr_31_0_mask', - 'SDMA_PKT_CONSTANT_FILL_DST_ADDR_LO_dst_addr_31_0_offset', - 'SDMA_PKT_CONSTANT_FILL_DST_ADDR_LO_dst_addr_31_0_shift', - 'SDMA_PKT_CONSTANT_FILL_HEADER_cache_policy_mask', - 'SDMA_PKT_CONSTANT_FILL_HEADER_cache_policy_offset', - 'SDMA_PKT_CONSTANT_FILL_HEADER_cache_policy_shift', - 'SDMA_PKT_CONSTANT_FILL_HEADER_cpv_mask', - 'SDMA_PKT_CONSTANT_FILL_HEADER_cpv_offset', - 'SDMA_PKT_CONSTANT_FILL_HEADER_cpv_shift', - 'SDMA_PKT_CONSTANT_FILL_HEADER_fillsize_mask', - 'SDMA_PKT_CONSTANT_FILL_HEADER_fillsize_offset', - 'SDMA_PKT_CONSTANT_FILL_HEADER_fillsize_shift', - 'SDMA_PKT_CONSTANT_FILL_HEADER_op_mask', - 'SDMA_PKT_CONSTANT_FILL_HEADER_op_offset', - 'SDMA_PKT_CONSTANT_FILL_HEADER_op_shift', - 'SDMA_PKT_CONSTANT_FILL_HEADER_sub_op_mask', - 'SDMA_PKT_CONSTANT_FILL_HEADER_sub_op_offset', - 'SDMA_PKT_CONSTANT_FILL_HEADER_sub_op_shift', - 'SDMA_PKT_CONSTANT_FILL_HEADER_sw_mask', - 'SDMA_PKT_CONSTANT_FILL_HEADER_sw_offset', - 'SDMA_PKT_CONSTANT_FILL_HEADER_sw_shift', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_COUNT_count_mask', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_COUNT_count_offset', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_COUNT_count_shift', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_DST1_ADDR_HI_dst1_addr_63_32_mask', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_DST1_ADDR_HI_dst1_addr_63_32_offset', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_DST1_ADDR_HI_dst1_addr_63_32_shift', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_DST1_ADDR_LO_dst1_addr_31_0_mask', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_DST1_ADDR_LO_dst1_addr_31_0_offset', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_DST1_ADDR_LO_dst1_addr_31_0_shift', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_DST2_ADDR_HI_dst2_addr_63_32_mask', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_DST2_ADDR_HI_dst2_addr_63_32_offset', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_DST2_ADDR_HI_dst2_addr_63_32_shift', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_DST2_ADDR_LO_dst2_addr_31_0_mask', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_DST2_ADDR_LO_dst2_addr_31_0_offset', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_DST2_ADDR_LO_dst2_addr_31_0_shift', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_broadcast_mask', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_broadcast_offset', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_broadcast_shift', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_cpv_mask', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_cpv_offset', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_cpv_shift', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_encrypt_mask', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_encrypt_offset', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_encrypt_shift', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_op_mask', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_op_offset', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_op_shift', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_sub_op_mask', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_sub_op_offset', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_sub_op_shift', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_tmz_mask', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_tmz_offset', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_HEADER_tmz_shift', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst1_cache_policy_mask', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst1_cache_policy_offset', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst1_cache_policy_shift', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst1_sw_mask', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst1_sw_offset', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst1_sw_shift', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst2_cache_policy_mask', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst2_cache_policy_offset', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst2_cache_policy_shift', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst2_sw_mask', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst2_sw_offset', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_dst2_sw_shift', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_src_cache_policy_mask', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_src_cache_policy_offset', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_src_cache_policy_shift', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_src_sw_mask', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_src_sw_offset', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_PARAMETER_src_sw_shift', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_SRC_ADDR_HI_src_addr_63_32_mask', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_SRC_ADDR_HI_src_addr_63_32_offset', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_SRC_ADDR_HI_src_addr_63_32_shift', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_SRC_ADDR_LO_src_addr_31_0_mask', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_SRC_ADDR_LO_src_addr_31_0_offset', - 'SDMA_PKT_COPY_BROADCAST_LINEAR_SRC_ADDR_LO_src_addr_31_0_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_COUNT_count_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_COUNT_count_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_COUNT_count_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_DST_ADDR_HI_dst_addr_63_32_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_DST_ADDR_HI_dst_addr_63_32_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_DST_ADDR_HI_dst_addr_63_32_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_DST_ADDR_LO_dst_addr_31_0_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_DST_ADDR_LO_dst_addr_31_0_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_DST_ADDR_LO_dst_addr_31_0_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_HEADER_all_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_HEADER_all_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_HEADER_all_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_HEADER_cpv_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_HEADER_cpv_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_HEADER_cpv_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_HEADER_op_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_HEADER_op_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_HEADER_op_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_HEADER_sub_op_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_HEADER_sub_op_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_HEADER_sub_op_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_HEADER_tmz_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_HEADER_tmz_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_HEADER_tmz_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_gcc_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_gcc_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_gcc_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_gpa_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_gpa_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_gpa_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_l2_policy_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_l2_policy_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_l2_policy_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_llc_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_llc_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_llc_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_mtype_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_mtype_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_mtype_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_snoop_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_snoop_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_snoop_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_sw_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_sw_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_sw_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_sys_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_sys_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_dst_sys_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_gpa_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_gpa_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_gpa_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_l2_policy_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_l2_policy_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_l2_policy_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_llc_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_llc_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_llc_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_mtype_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_mtype_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_mtype_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_snoop_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_snoop_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_snoop_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_sw_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_sw_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_sw_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_sys_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_sys_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_PARAMETER_src_sys_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_SRC_ADDR_HI_src_addr_63_32_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_SRC_ADDR_HI_src_addr_63_32_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_SRC_ADDR_HI_src_addr_63_32_shift', - 'SDMA_PKT_COPY_DIRTY_PAGE_SRC_ADDR_LO_src_addr_31_0_mask', - 'SDMA_PKT_COPY_DIRTY_PAGE_SRC_ADDR_LO_src_addr_31_0_offset', - 'SDMA_PKT_COPY_DIRTY_PAGE_SRC_ADDR_LO_src_addr_31_0_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_COUNT_count_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_COUNT_count_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_COUNT_count_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_10_dst2_cache_policy_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_10_dst2_cache_policy_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_10_dst2_cache_policy_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_10_dst2_sw_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_10_dst2_sw_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_10_dst2_sw_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_10_linear_cache_policy_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_10_linear_cache_policy_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_10_linear_cache_policy_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_10_linear_sw_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_10_linear_sw_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_10_linear_sw_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_10_tile_cache_policy_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_10_tile_cache_policy_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_10_tile_cache_policy_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_10_tile_sw_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_10_tile_sw_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_10_tile_sw_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_5_width_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_5_width_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_5_width_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_6_depth_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_6_depth_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_6_depth_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_6_height_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_6_height_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_6_height_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_7_dimension_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_7_dimension_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_7_dimension_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_7_element_size_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_7_element_size_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_7_element_size_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_7_mip_max_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_7_mip_max_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_7_mip_max_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_7_swizzle_mode_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_7_swizzle_mode_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_7_swizzle_mode_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_8_x_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_8_x_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_8_x_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_8_y_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_8_y_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_8_y_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_9_z_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_9_z_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_DW_9_z_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_broadcast_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_broadcast_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_broadcast_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_cpv_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_cpv_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_cpv_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_encrypt_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_encrypt_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_encrypt_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_op_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_op_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_op_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_sub_op_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_sub_op_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_sub_op_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_tmz_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_tmz_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_tmz_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_videocopy_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_videocopy_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_HEADER_videocopy_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_ADDR_HI_linear_addr_63_32_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_ADDR_HI_linear_addr_63_32_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_ADDR_HI_linear_addr_63_32_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_ADDR_LO_linear_addr_31_0_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_ADDR_LO_linear_addr_31_0_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_ADDR_LO_linear_addr_31_0_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_PITCH_linear_pitch_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_PITCH_linear_pitch_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_PITCH_linear_pitch_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_SLICE_PITCH_linear_slice_pitch_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_SLICE_PITCH_linear_slice_pitch_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_LINEAR_SLICE_PITCH_linear_slice_pitch_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_HI_0_tiled_addr0_63_32_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_HI_0_tiled_addr0_63_32_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_HI_0_tiled_addr0_63_32_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_HI_1_tiled_addr1_63_32_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_HI_1_tiled_addr1_63_32_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_HI_1_tiled_addr1_63_32_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_LO_0_tiled_addr0_31_0_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_LO_0_tiled_addr0_31_0_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_LO_0_tiled_addr0_31_0_shift', - 'SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_LO_1_tiled_addr1_31_0_mask', - 'SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_LO_1_tiled_addr1_31_0_offset', - 'SDMA_PKT_COPY_L2T_BROADCAST_TILED_ADDR_LO_1_tiled_addr1_31_0_shift', - 'SDMA_PKT_COPY_LINEAR', - 'SDMA_PKT_COPY_LINEAR_BC_COUNT_count_mask', - 'SDMA_PKT_COPY_LINEAR_BC_COUNT_count_offset', - 'SDMA_PKT_COPY_LINEAR_BC_COUNT_count_shift', - 'SDMA_PKT_COPY_LINEAR_BC_DST_ADDR_HI_dst_addr_63_32_mask', - 'SDMA_PKT_COPY_LINEAR_BC_DST_ADDR_HI_dst_addr_63_32_offset', - 'SDMA_PKT_COPY_LINEAR_BC_DST_ADDR_HI_dst_addr_63_32_shift', - 'SDMA_PKT_COPY_LINEAR_BC_DST_ADDR_LO_dst_addr_31_0_mask', - 'SDMA_PKT_COPY_LINEAR_BC_DST_ADDR_LO_dst_addr_31_0_offset', - 'SDMA_PKT_COPY_LINEAR_BC_DST_ADDR_LO_dst_addr_31_0_shift', - 'SDMA_PKT_COPY_LINEAR_BC_HEADER_op_mask', - 'SDMA_PKT_COPY_LINEAR_BC_HEADER_op_offset', - 'SDMA_PKT_COPY_LINEAR_BC_HEADER_op_shift', - 'SDMA_PKT_COPY_LINEAR_BC_HEADER_sub_op_mask', - 'SDMA_PKT_COPY_LINEAR_BC_HEADER_sub_op_offset', - 'SDMA_PKT_COPY_LINEAR_BC_HEADER_sub_op_shift', - 'SDMA_PKT_COPY_LINEAR_BC_PARAMETER_dst_ha_mask', - 'SDMA_PKT_COPY_LINEAR_BC_PARAMETER_dst_ha_offset', - 'SDMA_PKT_COPY_LINEAR_BC_PARAMETER_dst_ha_shift', - 'SDMA_PKT_COPY_LINEAR_BC_PARAMETER_dst_sw_mask', - 'SDMA_PKT_COPY_LINEAR_BC_PARAMETER_dst_sw_offset', - 'SDMA_PKT_COPY_LINEAR_BC_PARAMETER_dst_sw_shift', - 'SDMA_PKT_COPY_LINEAR_BC_PARAMETER_src_ha_mask', - 'SDMA_PKT_COPY_LINEAR_BC_PARAMETER_src_ha_offset', - 'SDMA_PKT_COPY_LINEAR_BC_PARAMETER_src_ha_shift', - 'SDMA_PKT_COPY_LINEAR_BC_PARAMETER_src_sw_mask', - 'SDMA_PKT_COPY_LINEAR_BC_PARAMETER_src_sw_offset', - 'SDMA_PKT_COPY_LINEAR_BC_PARAMETER_src_sw_shift', - 'SDMA_PKT_COPY_LINEAR_BC_SRC_ADDR_HI_src_addr_63_32_mask', - 'SDMA_PKT_COPY_LINEAR_BC_SRC_ADDR_HI_src_addr_63_32_offset', - 'SDMA_PKT_COPY_LINEAR_BC_SRC_ADDR_HI_src_addr_63_32_shift', - 'SDMA_PKT_COPY_LINEAR_BC_SRC_ADDR_LO_src_addr_31_0_mask', - 'SDMA_PKT_COPY_LINEAR_BC_SRC_ADDR_LO_src_addr_31_0_offset', - 'SDMA_PKT_COPY_LINEAR_BC_SRC_ADDR_LO_src_addr_31_0_shift', - 'SDMA_PKT_COPY_LINEAR_COUNT_count_mask', - 'SDMA_PKT_COPY_LINEAR_COUNT_count_offset', - 'SDMA_PKT_COPY_LINEAR_COUNT_count_shift', - 'SDMA_PKT_COPY_LINEAR_DST_ADDR_HI_dst_addr_63_32_mask', - 'SDMA_PKT_COPY_LINEAR_DST_ADDR_HI_dst_addr_63_32_offset', - 'SDMA_PKT_COPY_LINEAR_DST_ADDR_HI_dst_addr_63_32_shift', - 'SDMA_PKT_COPY_LINEAR_DST_ADDR_LO_dst_addr_31_0_mask', - 'SDMA_PKT_COPY_LINEAR_DST_ADDR_LO_dst_addr_31_0_offset', - 'SDMA_PKT_COPY_LINEAR_DST_ADDR_LO_dst_addr_31_0_shift', - 'SDMA_PKT_COPY_LINEAR_HEADER_backwards_mask', - 'SDMA_PKT_COPY_LINEAR_HEADER_backwards_offset', - 'SDMA_PKT_COPY_LINEAR_HEADER_backwards_shift', - 'SDMA_PKT_COPY_LINEAR_HEADER_broadcast_mask', - 'SDMA_PKT_COPY_LINEAR_HEADER_broadcast_offset', - 'SDMA_PKT_COPY_LINEAR_HEADER_broadcast_shift', - 'SDMA_PKT_COPY_LINEAR_HEADER_cpv_mask', - 'SDMA_PKT_COPY_LINEAR_HEADER_cpv_offset', - 'SDMA_PKT_COPY_LINEAR_HEADER_cpv_shift', - 'SDMA_PKT_COPY_LINEAR_HEADER_encrypt_mask', - 'SDMA_PKT_COPY_LINEAR_HEADER_encrypt_offset', - 'SDMA_PKT_COPY_LINEAR_HEADER_encrypt_shift', - 'SDMA_PKT_COPY_LINEAR_HEADER_op_mask', - 'SDMA_PKT_COPY_LINEAR_HEADER_op_offset', - 'SDMA_PKT_COPY_LINEAR_HEADER_op_shift', - 'SDMA_PKT_COPY_LINEAR_HEADER_sub_op_mask', - 'SDMA_PKT_COPY_LINEAR_HEADER_sub_op_offset', - 'SDMA_PKT_COPY_LINEAR_HEADER_sub_op_shift', - 'SDMA_PKT_COPY_LINEAR_HEADER_tmz_mask', - 'SDMA_PKT_COPY_LINEAR_HEADER_tmz_offset', - 'SDMA_PKT_COPY_LINEAR_HEADER_tmz_shift', - 'SDMA_PKT_COPY_LINEAR_PARAMETER_dst_cache_policy_mask', - 'SDMA_PKT_COPY_LINEAR_PARAMETER_dst_cache_policy_offset', - 'SDMA_PKT_COPY_LINEAR_PARAMETER_dst_cache_policy_shift', - 'SDMA_PKT_COPY_LINEAR_PARAMETER_dst_sw_mask', - 'SDMA_PKT_COPY_LINEAR_PARAMETER_dst_sw_offset', - 'SDMA_PKT_COPY_LINEAR_PARAMETER_dst_sw_shift', - 'SDMA_PKT_COPY_LINEAR_PARAMETER_src_cache_policy_mask', - 'SDMA_PKT_COPY_LINEAR_PARAMETER_src_cache_policy_offset', - 'SDMA_PKT_COPY_LINEAR_PARAMETER_src_cache_policy_shift', - 'SDMA_PKT_COPY_LINEAR_PARAMETER_src_sw_mask', - 'SDMA_PKT_COPY_LINEAR_PARAMETER_src_sw_offset', - 'SDMA_PKT_COPY_LINEAR_PARAMETER_src_sw_shift', - 'SDMA_PKT_COPY_LINEAR_RECT', - 'SDMA_PKT_COPY_LINEAR_SRC_ADDR_HI_src_addr_63_32_mask', - 'SDMA_PKT_COPY_LINEAR_SRC_ADDR_HI_src_addr_63_32_offset', - 'SDMA_PKT_COPY_LINEAR_SRC_ADDR_HI_src_addr_63_32_shift', - 'SDMA_PKT_COPY_LINEAR_SRC_ADDR_LO_src_addr_31_0_mask', - 'SDMA_PKT_COPY_LINEAR_SRC_ADDR_LO_src_addr_31_0_offset', - 'SDMA_PKT_COPY_LINEAR_SRC_ADDR_LO_src_addr_31_0_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DST_ADDR_HI_dst_addr_63_32_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DST_ADDR_HI_dst_addr_63_32_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DST_ADDR_HI_dst_addr_63_32_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DST_ADDR_LO_dst_addr_31_0_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DST_ADDR_LO_dst_addr_31_0_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DST_ADDR_LO_dst_addr_31_0_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_10_dst_slice_pitch_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_10_dst_slice_pitch_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_10_dst_slice_pitch_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_11_rect_x_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_11_rect_x_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_11_rect_x_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_11_rect_y_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_11_rect_y_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_11_rect_y_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_dst_ha_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_dst_ha_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_dst_ha_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_dst_sw_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_dst_sw_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_dst_sw_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_rect_z_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_rect_z_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_rect_z_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_src_ha_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_src_ha_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_src_ha_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_src_sw_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_src_sw_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_12_src_sw_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_3_src_x_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_3_src_x_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_3_src_x_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_3_src_y_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_3_src_y_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_3_src_y_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_4_src_pitch_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_4_src_pitch_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_4_src_pitch_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_4_src_z_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_4_src_z_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_4_src_z_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_5_src_slice_pitch_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_5_src_slice_pitch_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_5_src_slice_pitch_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_8_dst_x_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_8_dst_x_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_8_dst_x_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_8_dst_y_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_8_dst_y_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_8_dst_y_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_9_dst_pitch_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_9_dst_pitch_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_9_dst_pitch_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_9_dst_z_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_9_dst_z_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_DW_9_dst_z_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_elementsize_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_elementsize_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_elementsize_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_op_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_op_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_op_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_sub_op_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_sub_op_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_HEADER_sub_op_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_SRC_ADDR_HI_src_addr_63_32_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_SRC_ADDR_HI_src_addr_63_32_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_SRC_ADDR_HI_src_addr_63_32_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_SRC_ADDR_LO_src_addr_31_0_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_SRC_ADDR_LO_src_addr_31_0_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_BC_SRC_ADDR_LO_src_addr_31_0_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DST_ADDR_HI_dst_addr_63_32_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DST_ADDR_HI_dst_addr_63_32_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DST_ADDR_HI_dst_addr_63_32_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DST_ADDR_LO_dst_addr_31_0_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DST_ADDR_LO_dst_addr_31_0_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DST_ADDR_LO_dst_addr_31_0_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_10_dst_slice_pitch_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_10_dst_slice_pitch_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_10_dst_slice_pitch_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_11_rect_x_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_11_rect_x_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_11_rect_x_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_11_rect_y_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_11_rect_y_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_11_rect_y_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_dst_cache_policy_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_dst_cache_policy_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_dst_cache_policy_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_dst_sw_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_dst_sw_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_dst_sw_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_rect_z_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_rect_z_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_rect_z_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_src_cache_policy_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_src_cache_policy_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_src_cache_policy_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_src_sw_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_src_sw_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_12_src_sw_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_3_src_x_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_3_src_x_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_3_src_x_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_3_src_y_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_3_src_y_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_3_src_y_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_4_src_pitch_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_4_src_pitch_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_4_src_pitch_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_4_src_z_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_4_src_z_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_4_src_z_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_5_src_slice_pitch_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_5_src_slice_pitch_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_5_src_slice_pitch_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_8_dst_x_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_8_dst_x_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_8_dst_x_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_8_dst_y_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_8_dst_y_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_8_dst_y_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_9_dst_pitch_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_9_dst_pitch_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_9_dst_pitch_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_9_dst_z_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_9_dst_z_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_DW_9_dst_z_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_cpv_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_cpv_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_cpv_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_elementsize_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_elementsize_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_elementsize_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_op_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_op_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_op_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_sub_op_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_sub_op_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_sub_op_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_tmz_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_tmz_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_HEADER_tmz_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DST_ADDR_HI_dst_addr_63_32_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DST_ADDR_HI_dst_addr_63_32_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DST_ADDR_HI_dst_addr_63_32_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DST_ADDR_LO_dst_addr_31_0_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DST_ADDR_LO_dst_addr_31_0_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DST_ADDR_LO_dst_addr_31_0_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_11_dst_x_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_11_dst_x_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_11_dst_x_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_12_dst_y_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_12_dst_y_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_12_dst_y_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_13_dst_z_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_13_dst_z_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_13_dst_z_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_14_dst_pitch_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_14_dst_pitch_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_14_dst_pitch_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_15_dst_slice_pitch_31_0_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_15_dst_slice_pitch_31_0_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_15_dst_slice_pitch_31_0_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_dst_policy_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_dst_policy_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_dst_policy_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_dst_slice_pitch_47_32_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_dst_slice_pitch_47_32_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_dst_slice_pitch_47_32_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_dst_sw_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_dst_sw_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_dst_sw_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_src_policy_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_src_policy_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_src_policy_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_src_sw_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_src_sw_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_16_src_sw_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_17_rect_x_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_17_rect_x_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_17_rect_x_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_18_rect_y_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_18_rect_y_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_18_rect_y_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_19_rect_z_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_19_rect_z_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_19_rect_z_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_3_src_x_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_3_src_x_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_3_src_x_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_4_src_y_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_4_src_y_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_4_src_y_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_5_src_z_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_5_src_z_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_5_src_z_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_6_src_pitch_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_6_src_pitch_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_6_src_pitch_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_7_src_slice_pitch_31_0_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_7_src_slice_pitch_31_0_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_7_src_slice_pitch_31_0_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_8_src_slice_pitch_47_32_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_8_src_slice_pitch_47_32_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_DW_8_src_slice_pitch_47_32_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_cpv_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_cpv_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_cpv_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_op_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_op_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_op_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_sub_op_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_sub_op_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_sub_op_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_tmz_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_tmz_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_HEADER_tmz_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_SRC_ADDR_HI_src_addr_63_32_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_SRC_ADDR_HI_src_addr_63_32_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_SRC_ADDR_HI_src_addr_63_32_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_SRC_ADDR_LO_src_addr_31_0_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_SRC_ADDR_LO_src_addr_31_0_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_LARGE_SRC_ADDR_LO_src_addr_31_0_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_SRC_ADDR_HI_src_addr_63_32_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_SRC_ADDR_HI_src_addr_63_32_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_SRC_ADDR_HI_src_addr_63_32_shift', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_SRC_ADDR_LO_src_addr_31_0_mask', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_SRC_ADDR_LO_src_addr_31_0_offset', - 'SDMA_PKT_COPY_LINEAR_SUBWIN_SRC_ADDR_LO_src_addr_31_0_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_COUNT_addr_pair_num_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_COUNT_addr_pair_num_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_COUNT_addr_pair_num_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_COUNT_count_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_COUNT_count_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_COUNT_count_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_DST_ADDR_HI_dst_addr_63_32_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_DST_ADDR_HI_dst_addr_63_32_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_DST_ADDR_HI_dst_addr_63_32_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_DST_ADDR_LO_dst_addr_31_0_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_DST_ADDR_LO_dst_addr_31_0_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_DST_ADDR_LO_dst_addr_31_0_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_cpv_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_cpv_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_cpv_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_op_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_op_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_op_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_sub_op_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_sub_op_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_sub_op_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_tmz_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_tmz_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_HEADER_tmz_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_gcc_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_gcc_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_gcc_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_gpa_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_gpa_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_gpa_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_l2_policy_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_l2_policy_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_l2_policy_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_llc_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_llc_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_llc_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_log_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_log_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_log_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_mtype_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_mtype_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_mtype_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_snoop_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_snoop_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_snoop_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_sw_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_sw_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_sw_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_sys_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_sys_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_dst_sys_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_gcc_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_gcc_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_gcc_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_gpa_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_gpa_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_gpa_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_l2_policy_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_l2_policy_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_l2_policy_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_llc_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_llc_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_llc_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_mtype_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_mtype_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_mtype_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_snoop_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_snoop_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_snoop_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_sw_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_sw_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_sw_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_sys_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_sys_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_PARAMETER_src_sys_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_SRC_ADDR_HI_src_addr_63_32_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_SRC_ADDR_HI_src_addr_63_32_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_SRC_ADDR_HI_src_addr_63_32_shift', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_SRC_ADDR_LO_src_addr_31_0_mask', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_SRC_ADDR_LO_src_addr_31_0_offset', - 'SDMA_PKT_COPY_PHYSICAL_LINEAR_SRC_ADDR_LO_src_addr_31_0_shift', - 'SDMA_PKT_COPY_STRUCT_COUNT_count_mask', - 'SDMA_PKT_COPY_STRUCT_COUNT_count_offset', - 'SDMA_PKT_COPY_STRUCT_COUNT_count_shift', - 'SDMA_PKT_COPY_STRUCT_DW_5_linear_cache_policy_mask', - 'SDMA_PKT_COPY_STRUCT_DW_5_linear_cache_policy_offset', - 'SDMA_PKT_COPY_STRUCT_DW_5_linear_cache_policy_shift', - 'SDMA_PKT_COPY_STRUCT_DW_5_linear_sw_mask', - 'SDMA_PKT_COPY_STRUCT_DW_5_linear_sw_offset', - 'SDMA_PKT_COPY_STRUCT_DW_5_linear_sw_shift', - 'SDMA_PKT_COPY_STRUCT_DW_5_stride_mask', - 'SDMA_PKT_COPY_STRUCT_DW_5_stride_offset', - 'SDMA_PKT_COPY_STRUCT_DW_5_stride_shift', - 'SDMA_PKT_COPY_STRUCT_DW_5_struct_cache_policy_mask', - 'SDMA_PKT_COPY_STRUCT_DW_5_struct_cache_policy_offset', - 'SDMA_PKT_COPY_STRUCT_DW_5_struct_cache_policy_shift', - 'SDMA_PKT_COPY_STRUCT_DW_5_struct_sw_mask', - 'SDMA_PKT_COPY_STRUCT_DW_5_struct_sw_offset', - 'SDMA_PKT_COPY_STRUCT_DW_5_struct_sw_shift', - 'SDMA_PKT_COPY_STRUCT_HEADER_cpv_mask', - 'SDMA_PKT_COPY_STRUCT_HEADER_cpv_offset', - 'SDMA_PKT_COPY_STRUCT_HEADER_cpv_shift', - 'SDMA_PKT_COPY_STRUCT_HEADER_detile_mask', - 'SDMA_PKT_COPY_STRUCT_HEADER_detile_offset', - 'SDMA_PKT_COPY_STRUCT_HEADER_detile_shift', - 'SDMA_PKT_COPY_STRUCT_HEADER_op_mask', - 'SDMA_PKT_COPY_STRUCT_HEADER_op_offset', - 'SDMA_PKT_COPY_STRUCT_HEADER_op_shift', - 'SDMA_PKT_COPY_STRUCT_HEADER_sub_op_mask', - 'SDMA_PKT_COPY_STRUCT_HEADER_sub_op_offset', - 'SDMA_PKT_COPY_STRUCT_HEADER_sub_op_shift', - 'SDMA_PKT_COPY_STRUCT_HEADER_tmz_mask', - 'SDMA_PKT_COPY_STRUCT_HEADER_tmz_offset', - 'SDMA_PKT_COPY_STRUCT_HEADER_tmz_shift', - 'SDMA_PKT_COPY_STRUCT_LINEAR_ADDR_HI_linear_addr_63_32_mask', - 'SDMA_PKT_COPY_STRUCT_LINEAR_ADDR_HI_linear_addr_63_32_offset', - 'SDMA_PKT_COPY_STRUCT_LINEAR_ADDR_HI_linear_addr_63_32_shift', - 'SDMA_PKT_COPY_STRUCT_LINEAR_ADDR_LO_linear_addr_31_0_mask', - 'SDMA_PKT_COPY_STRUCT_LINEAR_ADDR_LO_linear_addr_31_0_offset', - 'SDMA_PKT_COPY_STRUCT_LINEAR_ADDR_LO_linear_addr_31_0_shift', - 'SDMA_PKT_COPY_STRUCT_SB_ADDR_HI_sb_addr_63_32_mask', - 'SDMA_PKT_COPY_STRUCT_SB_ADDR_HI_sb_addr_63_32_offset', - 'SDMA_PKT_COPY_STRUCT_SB_ADDR_HI_sb_addr_63_32_shift', - 'SDMA_PKT_COPY_STRUCT_SB_ADDR_LO_sb_addr_31_0_mask', - 'SDMA_PKT_COPY_STRUCT_SB_ADDR_LO_sb_addr_31_0_offset', - 'SDMA_PKT_COPY_STRUCT_SB_ADDR_LO_sb_addr_31_0_shift', - 'SDMA_PKT_COPY_STRUCT_START_INDEX_start_index_mask', - 'SDMA_PKT_COPY_STRUCT_START_INDEX_start_index_offset', - 'SDMA_PKT_COPY_STRUCT_START_INDEX_start_index_shift', - 'SDMA_PKT_COPY_T2T_BC_DST_ADDR_HI_dst_addr_63_32_mask', - 'SDMA_PKT_COPY_T2T_BC_DST_ADDR_HI_dst_addr_63_32_offset', - 'SDMA_PKT_COPY_T2T_BC_DST_ADDR_HI_dst_addr_63_32_shift', - 'SDMA_PKT_COPY_T2T_BC_DST_ADDR_LO_dst_addr_31_0_mask', - 'SDMA_PKT_COPY_T2T_BC_DST_ADDR_LO_dst_addr_31_0_offset', - 'SDMA_PKT_COPY_T2T_BC_DST_ADDR_LO_dst_addr_31_0_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_10_dst_width_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_10_dst_width_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_10_dst_width_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_10_dst_z_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_10_dst_z_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_10_dst_z_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_11_dst_depth_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_11_dst_depth_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_11_dst_depth_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_11_dst_height_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_11_dst_height_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_11_dst_height_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_array_mode_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_array_mode_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_array_mode_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_bank_h_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_bank_h_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_bank_h_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_bank_w_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_bank_w_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_bank_w_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_element_size_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_element_size_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_element_size_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_mat_aspt_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_mat_aspt_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_mat_aspt_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_mit_mode_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_mit_mode_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_mit_mode_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_num_bank_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_num_bank_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_num_bank_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_pipe_config_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_pipe_config_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_pipe_config_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_tilesplit_size_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_tilesplit_size_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_12_dst_tilesplit_size_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_13_rect_x_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_13_rect_x_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_13_rect_x_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_13_rect_y_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_13_rect_y_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_13_rect_y_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_14_dst_sw_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_14_dst_sw_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_14_dst_sw_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_14_rect_z_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_14_rect_z_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_14_rect_z_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_14_src_sw_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_14_src_sw_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_14_src_sw_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_3_src_x_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_3_src_x_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_3_src_x_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_3_src_y_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_3_src_y_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_3_src_y_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_4_src_width_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_4_src_width_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_4_src_width_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_4_src_z_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_4_src_z_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_4_src_z_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_5_src_depth_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_5_src_depth_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_5_src_depth_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_5_src_height_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_5_src_height_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_5_src_height_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_array_mode_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_array_mode_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_array_mode_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_bank_h_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_bank_h_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_bank_h_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_bank_w_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_bank_w_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_bank_w_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_element_size_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_element_size_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_element_size_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_mat_aspt_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_mat_aspt_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_mat_aspt_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_mit_mode_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_mit_mode_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_mit_mode_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_num_bank_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_num_bank_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_num_bank_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_pipe_config_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_pipe_config_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_pipe_config_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_tilesplit_size_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_tilesplit_size_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_6_src_tilesplit_size_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_9_dst_x_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_9_dst_x_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_9_dst_x_shift', - 'SDMA_PKT_COPY_T2T_BC_DW_9_dst_y_mask', - 'SDMA_PKT_COPY_T2T_BC_DW_9_dst_y_offset', - 'SDMA_PKT_COPY_T2T_BC_DW_9_dst_y_shift', - 'SDMA_PKT_COPY_T2T_BC_HEADER_op_mask', - 'SDMA_PKT_COPY_T2T_BC_HEADER_op_offset', - 'SDMA_PKT_COPY_T2T_BC_HEADER_op_shift', - 'SDMA_PKT_COPY_T2T_BC_HEADER_sub_op_mask', - 'SDMA_PKT_COPY_T2T_BC_HEADER_sub_op_offset', - 'SDMA_PKT_COPY_T2T_BC_HEADER_sub_op_shift', - 'SDMA_PKT_COPY_T2T_BC_SRC_ADDR_HI_src_addr_63_32_mask', - 'SDMA_PKT_COPY_T2T_BC_SRC_ADDR_HI_src_addr_63_32_offset', - 'SDMA_PKT_COPY_T2T_BC_SRC_ADDR_HI_src_addr_63_32_shift', - 'SDMA_PKT_COPY_T2T_BC_SRC_ADDR_LO_src_addr_31_0_mask', - 'SDMA_PKT_COPY_T2T_BC_SRC_ADDR_LO_src_addr_31_0_offset', - 'SDMA_PKT_COPY_T2T_BC_SRC_ADDR_LO_src_addr_31_0_shift', - 'SDMA_PKT_COPY_T2T_DST_ADDR_HI_dst_addr_63_32_mask', - 'SDMA_PKT_COPY_T2T_DST_ADDR_HI_dst_addr_63_32_offset', - 'SDMA_PKT_COPY_T2T_DST_ADDR_HI_dst_addr_63_32_shift', - 'SDMA_PKT_COPY_T2T_DST_ADDR_LO_dst_addr_31_0_mask', - 'SDMA_PKT_COPY_T2T_DST_ADDR_LO_dst_addr_31_0_offset', - 'SDMA_PKT_COPY_T2T_DST_ADDR_LO_dst_addr_31_0_shift', - 'SDMA_PKT_COPY_T2T_DW_10_dst_width_mask', - 'SDMA_PKT_COPY_T2T_DW_10_dst_width_offset', - 'SDMA_PKT_COPY_T2T_DW_10_dst_width_shift', - 'SDMA_PKT_COPY_T2T_DW_10_dst_z_mask', - 'SDMA_PKT_COPY_T2T_DW_10_dst_z_offset', - 'SDMA_PKT_COPY_T2T_DW_10_dst_z_shift', - 'SDMA_PKT_COPY_T2T_DW_11_dst_depth_mask', - 'SDMA_PKT_COPY_T2T_DW_11_dst_depth_offset', - 'SDMA_PKT_COPY_T2T_DW_11_dst_depth_shift', - 'SDMA_PKT_COPY_T2T_DW_11_dst_height_mask', - 'SDMA_PKT_COPY_T2T_DW_11_dst_height_offset', - 'SDMA_PKT_COPY_T2T_DW_11_dst_height_shift', - 'SDMA_PKT_COPY_T2T_DW_12_dst_dimension_mask', - 'SDMA_PKT_COPY_T2T_DW_12_dst_dimension_offset', - 'SDMA_PKT_COPY_T2T_DW_12_dst_dimension_shift', - 'SDMA_PKT_COPY_T2T_DW_12_dst_element_size_mask', - 'SDMA_PKT_COPY_T2T_DW_12_dst_element_size_offset', - 'SDMA_PKT_COPY_T2T_DW_12_dst_element_size_shift', - 'SDMA_PKT_COPY_T2T_DW_12_dst_mip_id_mask', - 'SDMA_PKT_COPY_T2T_DW_12_dst_mip_id_offset', - 'SDMA_PKT_COPY_T2T_DW_12_dst_mip_id_shift', - 'SDMA_PKT_COPY_T2T_DW_12_dst_mip_max_mask', - 'SDMA_PKT_COPY_T2T_DW_12_dst_mip_max_offset', - 'SDMA_PKT_COPY_T2T_DW_12_dst_mip_max_shift', - 'SDMA_PKT_COPY_T2T_DW_12_dst_swizzle_mode_mask', - 'SDMA_PKT_COPY_T2T_DW_12_dst_swizzle_mode_offset', - 'SDMA_PKT_COPY_T2T_DW_12_dst_swizzle_mode_shift', - 'SDMA_PKT_COPY_T2T_DW_13_rect_x_mask', - 'SDMA_PKT_COPY_T2T_DW_13_rect_x_offset', - 'SDMA_PKT_COPY_T2T_DW_13_rect_x_shift', - 'SDMA_PKT_COPY_T2T_DW_13_rect_y_mask', - 'SDMA_PKT_COPY_T2T_DW_13_rect_y_offset', - 'SDMA_PKT_COPY_T2T_DW_13_rect_y_shift', - 'SDMA_PKT_COPY_T2T_DW_14_dst_cache_policy_mask', - 'SDMA_PKT_COPY_T2T_DW_14_dst_cache_policy_offset', - 'SDMA_PKT_COPY_T2T_DW_14_dst_cache_policy_shift', - 'SDMA_PKT_COPY_T2T_DW_14_dst_sw_mask', - 'SDMA_PKT_COPY_T2T_DW_14_dst_sw_offset', - 'SDMA_PKT_COPY_T2T_DW_14_dst_sw_shift', - 'SDMA_PKT_COPY_T2T_DW_14_rect_z_mask', - 'SDMA_PKT_COPY_T2T_DW_14_rect_z_offset', - 'SDMA_PKT_COPY_T2T_DW_14_rect_z_shift', - 'SDMA_PKT_COPY_T2T_DW_14_src_cache_policy_mask', - 'SDMA_PKT_COPY_T2T_DW_14_src_cache_policy_offset', - 'SDMA_PKT_COPY_T2T_DW_14_src_cache_policy_shift', - 'SDMA_PKT_COPY_T2T_DW_14_src_sw_mask', - 'SDMA_PKT_COPY_T2T_DW_14_src_sw_offset', - 'SDMA_PKT_COPY_T2T_DW_14_src_sw_shift', - 'SDMA_PKT_COPY_T2T_DW_3_src_x_mask', - 'SDMA_PKT_COPY_T2T_DW_3_src_x_offset', - 'SDMA_PKT_COPY_T2T_DW_3_src_x_shift', - 'SDMA_PKT_COPY_T2T_DW_3_src_y_mask', - 'SDMA_PKT_COPY_T2T_DW_3_src_y_offset', - 'SDMA_PKT_COPY_T2T_DW_3_src_y_shift', - 'SDMA_PKT_COPY_T2T_DW_4_src_width_mask', - 'SDMA_PKT_COPY_T2T_DW_4_src_width_offset', - 'SDMA_PKT_COPY_T2T_DW_4_src_width_shift', - 'SDMA_PKT_COPY_T2T_DW_4_src_z_mask', - 'SDMA_PKT_COPY_T2T_DW_4_src_z_offset', - 'SDMA_PKT_COPY_T2T_DW_4_src_z_shift', - 'SDMA_PKT_COPY_T2T_DW_5_src_depth_mask', - 'SDMA_PKT_COPY_T2T_DW_5_src_depth_offset', - 'SDMA_PKT_COPY_T2T_DW_5_src_depth_shift', - 'SDMA_PKT_COPY_T2T_DW_5_src_height_mask', - 'SDMA_PKT_COPY_T2T_DW_5_src_height_offset', - 'SDMA_PKT_COPY_T2T_DW_5_src_height_shift', - 'SDMA_PKT_COPY_T2T_DW_6_src_dimension_mask', - 'SDMA_PKT_COPY_T2T_DW_6_src_dimension_offset', - 'SDMA_PKT_COPY_T2T_DW_6_src_dimension_shift', - 'SDMA_PKT_COPY_T2T_DW_6_src_element_size_mask', - 'SDMA_PKT_COPY_T2T_DW_6_src_element_size_offset', - 'SDMA_PKT_COPY_T2T_DW_6_src_element_size_shift', - 'SDMA_PKT_COPY_T2T_DW_6_src_mip_id_mask', - 'SDMA_PKT_COPY_T2T_DW_6_src_mip_id_offset', - 'SDMA_PKT_COPY_T2T_DW_6_src_mip_id_shift', - 'SDMA_PKT_COPY_T2T_DW_6_src_mip_max_mask', - 'SDMA_PKT_COPY_T2T_DW_6_src_mip_max_offset', - 'SDMA_PKT_COPY_T2T_DW_6_src_mip_max_shift', - 'SDMA_PKT_COPY_T2T_DW_6_src_swizzle_mode_mask', - 'SDMA_PKT_COPY_T2T_DW_6_src_swizzle_mode_offset', - 'SDMA_PKT_COPY_T2T_DW_6_src_swizzle_mode_shift', - 'SDMA_PKT_COPY_T2T_DW_9_dst_x_mask', - 'SDMA_PKT_COPY_T2T_DW_9_dst_x_offset', - 'SDMA_PKT_COPY_T2T_DW_9_dst_x_shift', - 'SDMA_PKT_COPY_T2T_DW_9_dst_y_mask', - 'SDMA_PKT_COPY_T2T_DW_9_dst_y_offset', - 'SDMA_PKT_COPY_T2T_DW_9_dst_y_shift', - 'SDMA_PKT_COPY_T2T_HEADER_cpv_mask', - 'SDMA_PKT_COPY_T2T_HEADER_cpv_offset', - 'SDMA_PKT_COPY_T2T_HEADER_cpv_shift', - 'SDMA_PKT_COPY_T2T_HEADER_dcc_dir_mask', - 'SDMA_PKT_COPY_T2T_HEADER_dcc_dir_offset', - 'SDMA_PKT_COPY_T2T_HEADER_dcc_dir_shift', - 'SDMA_PKT_COPY_T2T_HEADER_dcc_mask', - 'SDMA_PKT_COPY_T2T_HEADER_dcc_offset', - 'SDMA_PKT_COPY_T2T_HEADER_dcc_shift', - 'SDMA_PKT_COPY_T2T_HEADER_op_mask', - 'SDMA_PKT_COPY_T2T_HEADER_op_offset', - 'SDMA_PKT_COPY_T2T_HEADER_op_shift', - 'SDMA_PKT_COPY_T2T_HEADER_sub_op_mask', - 'SDMA_PKT_COPY_T2T_HEADER_sub_op_offset', - 'SDMA_PKT_COPY_T2T_HEADER_sub_op_shift', - 'SDMA_PKT_COPY_T2T_HEADER_tmz_mask', - 'SDMA_PKT_COPY_T2T_HEADER_tmz_offset', - 'SDMA_PKT_COPY_T2T_HEADER_tmz_shift', - 'SDMA_PKT_COPY_T2T_META_ADDR_HI_meta_addr_63_32_mask', - 'SDMA_PKT_COPY_T2T_META_ADDR_HI_meta_addr_63_32_offset', - 'SDMA_PKT_COPY_T2T_META_ADDR_HI_meta_addr_63_32_shift', - 'SDMA_PKT_COPY_T2T_META_ADDR_LO_meta_addr_31_0_mask', - 'SDMA_PKT_COPY_T2T_META_ADDR_LO_meta_addr_31_0_offset', - 'SDMA_PKT_COPY_T2T_META_ADDR_LO_meta_addr_31_0_shift', - 'SDMA_PKT_COPY_T2T_META_CONFIG_alpha_is_on_msb_mask', - 'SDMA_PKT_COPY_T2T_META_CONFIG_alpha_is_on_msb_offset', - 'SDMA_PKT_COPY_T2T_META_CONFIG_alpha_is_on_msb_shift', - 'SDMA_PKT_COPY_T2T_META_CONFIG_color_transform_disable_mask', - 'SDMA_PKT_COPY_T2T_META_CONFIG_color_transform_disable_offset', - 'SDMA_PKT_COPY_T2T_META_CONFIG_color_transform_disable_shift', - 'SDMA_PKT_COPY_T2T_META_CONFIG_data_format_mask', - 'SDMA_PKT_COPY_T2T_META_CONFIG_data_format_offset', - 'SDMA_PKT_COPY_T2T_META_CONFIG_data_format_shift', - 'SDMA_PKT_COPY_T2T_META_CONFIG_max_comp_block_size_mask', - 'SDMA_PKT_COPY_T2T_META_CONFIG_max_comp_block_size_offset', - 'SDMA_PKT_COPY_T2T_META_CONFIG_max_comp_block_size_shift', - 'SDMA_PKT_COPY_T2T_META_CONFIG_max_uncomp_block_size_mask', - 'SDMA_PKT_COPY_T2T_META_CONFIG_max_uncomp_block_size_offset', - 'SDMA_PKT_COPY_T2T_META_CONFIG_max_uncomp_block_size_shift', - 'SDMA_PKT_COPY_T2T_META_CONFIG_meta_llc_mask', - 'SDMA_PKT_COPY_T2T_META_CONFIG_meta_llc_offset', - 'SDMA_PKT_COPY_T2T_META_CONFIG_meta_llc_shift', - 'SDMA_PKT_COPY_T2T_META_CONFIG_meta_tmz_mask', - 'SDMA_PKT_COPY_T2T_META_CONFIG_meta_tmz_offset', - 'SDMA_PKT_COPY_T2T_META_CONFIG_meta_tmz_shift', - 'SDMA_PKT_COPY_T2T_META_CONFIG_number_type_mask', - 'SDMA_PKT_COPY_T2T_META_CONFIG_number_type_offset', - 'SDMA_PKT_COPY_T2T_META_CONFIG_number_type_shift', - 'SDMA_PKT_COPY_T2T_META_CONFIG_pipe_aligned_mask', - 'SDMA_PKT_COPY_T2T_META_CONFIG_pipe_aligned_offset', - 'SDMA_PKT_COPY_T2T_META_CONFIG_pipe_aligned_shift', - 'SDMA_PKT_COPY_T2T_META_CONFIG_surface_type_mask', - 'SDMA_PKT_COPY_T2T_META_CONFIG_surface_type_offset', - 'SDMA_PKT_COPY_T2T_META_CONFIG_surface_type_shift', - 'SDMA_PKT_COPY_T2T_META_CONFIG_write_compress_enable_mask', - 'SDMA_PKT_COPY_T2T_META_CONFIG_write_compress_enable_offset', - 'SDMA_PKT_COPY_T2T_META_CONFIG_write_compress_enable_shift', - 'SDMA_PKT_COPY_T2T_SRC_ADDR_HI_src_addr_63_32_mask', - 'SDMA_PKT_COPY_T2T_SRC_ADDR_HI_src_addr_63_32_offset', - 'SDMA_PKT_COPY_T2T_SRC_ADDR_HI_src_addr_63_32_shift', - 'SDMA_PKT_COPY_T2T_SRC_ADDR_LO_src_addr_31_0_mask', - 'SDMA_PKT_COPY_T2T_SRC_ADDR_LO_src_addr_31_0_offset', - 'SDMA_PKT_COPY_T2T_SRC_ADDR_LO_src_addr_31_0_shift', - 'SDMA_PKT_COPY_TILED_BC_COUNT_count_mask', - 'SDMA_PKT_COPY_TILED_BC_COUNT_count_offset', - 'SDMA_PKT_COPY_TILED_BC_COUNT_count_shift', - 'SDMA_PKT_COPY_TILED_BC_DW_3_width_mask', - 'SDMA_PKT_COPY_TILED_BC_DW_3_width_offset', - 'SDMA_PKT_COPY_TILED_BC_DW_3_width_shift', - 'SDMA_PKT_COPY_TILED_BC_DW_4_depth_mask', - 'SDMA_PKT_COPY_TILED_BC_DW_4_depth_offset', - 'SDMA_PKT_COPY_TILED_BC_DW_4_depth_shift', - 'SDMA_PKT_COPY_TILED_BC_DW_4_height_mask', - 'SDMA_PKT_COPY_TILED_BC_DW_4_height_offset', - 'SDMA_PKT_COPY_TILED_BC_DW_4_height_shift', - 'SDMA_PKT_COPY_TILED_BC_DW_5_array_mode_mask', - 'SDMA_PKT_COPY_TILED_BC_DW_5_array_mode_offset', - 'SDMA_PKT_COPY_TILED_BC_DW_5_array_mode_shift', - 'SDMA_PKT_COPY_TILED_BC_DW_5_bank_h_mask', - 'SDMA_PKT_COPY_TILED_BC_DW_5_bank_h_offset', - 'SDMA_PKT_COPY_TILED_BC_DW_5_bank_h_shift', - 'SDMA_PKT_COPY_TILED_BC_DW_5_bank_w_mask', - 'SDMA_PKT_COPY_TILED_BC_DW_5_bank_w_offset', - 'SDMA_PKT_COPY_TILED_BC_DW_5_bank_w_shift', - 'SDMA_PKT_COPY_TILED_BC_DW_5_element_size_mask', - 'SDMA_PKT_COPY_TILED_BC_DW_5_element_size_offset', - 'SDMA_PKT_COPY_TILED_BC_DW_5_element_size_shift', - 'SDMA_PKT_COPY_TILED_BC_DW_5_mat_aspt_mask', - 'SDMA_PKT_COPY_TILED_BC_DW_5_mat_aspt_offset', - 'SDMA_PKT_COPY_TILED_BC_DW_5_mat_aspt_shift', - 'SDMA_PKT_COPY_TILED_BC_DW_5_mit_mode_mask', - 'SDMA_PKT_COPY_TILED_BC_DW_5_mit_mode_offset', - 'SDMA_PKT_COPY_TILED_BC_DW_5_mit_mode_shift', - 'SDMA_PKT_COPY_TILED_BC_DW_5_num_bank_mask', - 'SDMA_PKT_COPY_TILED_BC_DW_5_num_bank_offset', - 'SDMA_PKT_COPY_TILED_BC_DW_5_num_bank_shift', - 'SDMA_PKT_COPY_TILED_BC_DW_5_pipe_config_mask', - 'SDMA_PKT_COPY_TILED_BC_DW_5_pipe_config_offset', - 'SDMA_PKT_COPY_TILED_BC_DW_5_pipe_config_shift', - 'SDMA_PKT_COPY_TILED_BC_DW_5_tilesplit_size_mask', - 'SDMA_PKT_COPY_TILED_BC_DW_5_tilesplit_size_offset', - 'SDMA_PKT_COPY_TILED_BC_DW_5_tilesplit_size_shift', - 'SDMA_PKT_COPY_TILED_BC_DW_6_x_mask', - 'SDMA_PKT_COPY_TILED_BC_DW_6_x_offset', - 'SDMA_PKT_COPY_TILED_BC_DW_6_x_shift', - 'SDMA_PKT_COPY_TILED_BC_DW_6_y_mask', - 'SDMA_PKT_COPY_TILED_BC_DW_6_y_offset', - 'SDMA_PKT_COPY_TILED_BC_DW_6_y_shift', - 'SDMA_PKT_COPY_TILED_BC_DW_7_linear_sw_mask', - 'SDMA_PKT_COPY_TILED_BC_DW_7_linear_sw_offset', - 'SDMA_PKT_COPY_TILED_BC_DW_7_linear_sw_shift', - 'SDMA_PKT_COPY_TILED_BC_DW_7_tile_sw_mask', - 'SDMA_PKT_COPY_TILED_BC_DW_7_tile_sw_offset', - 'SDMA_PKT_COPY_TILED_BC_DW_7_tile_sw_shift', - 'SDMA_PKT_COPY_TILED_BC_DW_7_z_mask', - 'SDMA_PKT_COPY_TILED_BC_DW_7_z_offset', - 'SDMA_PKT_COPY_TILED_BC_DW_7_z_shift', - 'SDMA_PKT_COPY_TILED_BC_HEADER_detile_mask', - 'SDMA_PKT_COPY_TILED_BC_HEADER_detile_offset', - 'SDMA_PKT_COPY_TILED_BC_HEADER_detile_shift', - 'SDMA_PKT_COPY_TILED_BC_HEADER_op_mask', - 'SDMA_PKT_COPY_TILED_BC_HEADER_op_offset', - 'SDMA_PKT_COPY_TILED_BC_HEADER_op_shift', - 'SDMA_PKT_COPY_TILED_BC_HEADER_sub_op_mask', - 'SDMA_PKT_COPY_TILED_BC_HEADER_sub_op_offset', - 'SDMA_PKT_COPY_TILED_BC_HEADER_sub_op_shift', - 'SDMA_PKT_COPY_TILED_BC_LINEAR_ADDR_HI_linear_addr_63_32_mask', - 'SDMA_PKT_COPY_TILED_BC_LINEAR_ADDR_HI_linear_addr_63_32_offset', - 'SDMA_PKT_COPY_TILED_BC_LINEAR_ADDR_HI_linear_addr_63_32_shift', - 'SDMA_PKT_COPY_TILED_BC_LINEAR_ADDR_LO_linear_addr_31_0_mask', - 'SDMA_PKT_COPY_TILED_BC_LINEAR_ADDR_LO_linear_addr_31_0_offset', - 'SDMA_PKT_COPY_TILED_BC_LINEAR_ADDR_LO_linear_addr_31_0_shift', - 'SDMA_PKT_COPY_TILED_BC_LINEAR_PITCH_linear_pitch_mask', - 'SDMA_PKT_COPY_TILED_BC_LINEAR_PITCH_linear_pitch_offset', - 'SDMA_PKT_COPY_TILED_BC_LINEAR_PITCH_linear_pitch_shift', - 'SDMA_PKT_COPY_TILED_BC_LINEAR_SLICE_PITCH_linear_slice_pitch_mask', - 'SDMA_PKT_COPY_TILED_BC_LINEAR_SLICE_PITCH_linear_slice_pitch_offset', - 'SDMA_PKT_COPY_TILED_BC_LINEAR_SLICE_PITCH_linear_slice_pitch_shift', - 'SDMA_PKT_COPY_TILED_BC_TILED_ADDR_HI_tiled_addr_63_32_mask', - 'SDMA_PKT_COPY_TILED_BC_TILED_ADDR_HI_tiled_addr_63_32_offset', - 'SDMA_PKT_COPY_TILED_BC_TILED_ADDR_HI_tiled_addr_63_32_shift', - 'SDMA_PKT_COPY_TILED_BC_TILED_ADDR_LO_tiled_addr_31_0_mask', - 'SDMA_PKT_COPY_TILED_BC_TILED_ADDR_LO_tiled_addr_31_0_offset', - 'SDMA_PKT_COPY_TILED_BC_TILED_ADDR_LO_tiled_addr_31_0_shift', - 'SDMA_PKT_COPY_TILED_COUNT_count_mask', - 'SDMA_PKT_COPY_TILED_COUNT_count_offset', - 'SDMA_PKT_COPY_TILED_COUNT_count_shift', - 'SDMA_PKT_COPY_TILED_DW_3_width_mask', - 'SDMA_PKT_COPY_TILED_DW_3_width_offset', - 'SDMA_PKT_COPY_TILED_DW_3_width_shift', - 'SDMA_PKT_COPY_TILED_DW_4_depth_mask', - 'SDMA_PKT_COPY_TILED_DW_4_depth_offset', - 'SDMA_PKT_COPY_TILED_DW_4_depth_shift', - 'SDMA_PKT_COPY_TILED_DW_4_height_mask', - 'SDMA_PKT_COPY_TILED_DW_4_height_offset', - 'SDMA_PKT_COPY_TILED_DW_4_height_shift', - 'SDMA_PKT_COPY_TILED_DW_5_dimension_mask', - 'SDMA_PKT_COPY_TILED_DW_5_dimension_offset', - 'SDMA_PKT_COPY_TILED_DW_5_dimension_shift', - 'SDMA_PKT_COPY_TILED_DW_5_element_size_mask', - 'SDMA_PKT_COPY_TILED_DW_5_element_size_offset', - 'SDMA_PKT_COPY_TILED_DW_5_element_size_shift', - 'SDMA_PKT_COPY_TILED_DW_5_mip_max_mask', - 'SDMA_PKT_COPY_TILED_DW_5_mip_max_offset', - 'SDMA_PKT_COPY_TILED_DW_5_mip_max_shift', - 'SDMA_PKT_COPY_TILED_DW_5_swizzle_mode_mask', - 'SDMA_PKT_COPY_TILED_DW_5_swizzle_mode_offset', - 'SDMA_PKT_COPY_TILED_DW_5_swizzle_mode_shift', - 'SDMA_PKT_COPY_TILED_DW_6_x_mask', - 'SDMA_PKT_COPY_TILED_DW_6_x_offset', - 'SDMA_PKT_COPY_TILED_DW_6_x_shift', - 'SDMA_PKT_COPY_TILED_DW_6_y_mask', - 'SDMA_PKT_COPY_TILED_DW_6_y_offset', - 'SDMA_PKT_COPY_TILED_DW_6_y_shift', - 'SDMA_PKT_COPY_TILED_DW_7_linear_cache_policy_mask', - 'SDMA_PKT_COPY_TILED_DW_7_linear_cache_policy_offset', - 'SDMA_PKT_COPY_TILED_DW_7_linear_cache_policy_shift', - 'SDMA_PKT_COPY_TILED_DW_7_linear_sw_mask', - 'SDMA_PKT_COPY_TILED_DW_7_linear_sw_offset', - 'SDMA_PKT_COPY_TILED_DW_7_linear_sw_shift', - 'SDMA_PKT_COPY_TILED_DW_7_tile_cache_policy_mask', - 'SDMA_PKT_COPY_TILED_DW_7_tile_cache_policy_offset', - 'SDMA_PKT_COPY_TILED_DW_7_tile_cache_policy_shift', - 'SDMA_PKT_COPY_TILED_DW_7_tile_sw_mask', - 'SDMA_PKT_COPY_TILED_DW_7_tile_sw_offset', - 'SDMA_PKT_COPY_TILED_DW_7_tile_sw_shift', - 'SDMA_PKT_COPY_TILED_DW_7_z_mask', - 'SDMA_PKT_COPY_TILED_DW_7_z_offset', - 'SDMA_PKT_COPY_TILED_DW_7_z_shift', - 'SDMA_PKT_COPY_TILED_HEADER_cpv_mask', - 'SDMA_PKT_COPY_TILED_HEADER_cpv_offset', - 'SDMA_PKT_COPY_TILED_HEADER_cpv_shift', - 'SDMA_PKT_COPY_TILED_HEADER_detile_mask', - 'SDMA_PKT_COPY_TILED_HEADER_detile_offset', - 'SDMA_PKT_COPY_TILED_HEADER_detile_shift', - 'SDMA_PKT_COPY_TILED_HEADER_encrypt_mask', - 'SDMA_PKT_COPY_TILED_HEADER_encrypt_offset', - 'SDMA_PKT_COPY_TILED_HEADER_encrypt_shift', - 'SDMA_PKT_COPY_TILED_HEADER_op_mask', - 'SDMA_PKT_COPY_TILED_HEADER_op_offset', - 'SDMA_PKT_COPY_TILED_HEADER_op_shift', - 'SDMA_PKT_COPY_TILED_HEADER_sub_op_mask', - 'SDMA_PKT_COPY_TILED_HEADER_sub_op_offset', - 'SDMA_PKT_COPY_TILED_HEADER_sub_op_shift', - 'SDMA_PKT_COPY_TILED_HEADER_tmz_mask', - 'SDMA_PKT_COPY_TILED_HEADER_tmz_offset', - 'SDMA_PKT_COPY_TILED_HEADER_tmz_shift', - 'SDMA_PKT_COPY_TILED_LINEAR_ADDR_HI_linear_addr_63_32_mask', - 'SDMA_PKT_COPY_TILED_LINEAR_ADDR_HI_linear_addr_63_32_offset', - 'SDMA_PKT_COPY_TILED_LINEAR_ADDR_HI_linear_addr_63_32_shift', - 'SDMA_PKT_COPY_TILED_LINEAR_ADDR_LO_linear_addr_31_0_mask', - 'SDMA_PKT_COPY_TILED_LINEAR_ADDR_LO_linear_addr_31_0_offset', - 'SDMA_PKT_COPY_TILED_LINEAR_ADDR_LO_linear_addr_31_0_shift', - 'SDMA_PKT_COPY_TILED_LINEAR_PITCH_linear_pitch_mask', - 'SDMA_PKT_COPY_TILED_LINEAR_PITCH_linear_pitch_offset', - 'SDMA_PKT_COPY_TILED_LINEAR_PITCH_linear_pitch_shift', - 'SDMA_PKT_COPY_TILED_LINEAR_SLICE_PITCH_linear_slice_pitch_mask', - 'SDMA_PKT_COPY_TILED_LINEAR_SLICE_PITCH_linear_slice_pitch_offset', - 'SDMA_PKT_COPY_TILED_LINEAR_SLICE_PITCH_linear_slice_pitch_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_10_linear_pitch_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_10_linear_pitch_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_10_linear_pitch_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_10_linear_z_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_10_linear_z_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_10_linear_z_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_11_linear_slice_pitch_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_11_linear_slice_pitch_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_11_linear_slice_pitch_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_12_rect_x_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_12_rect_x_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_12_rect_x_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_12_rect_y_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_12_rect_y_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_12_rect_y_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_linear_sw_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_linear_sw_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_linear_sw_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_rect_z_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_rect_z_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_rect_z_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_tile_sw_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_tile_sw_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_13_tile_sw_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_3_tiled_x_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_3_tiled_x_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_3_tiled_x_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_3_tiled_y_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_3_tiled_y_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_3_tiled_y_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_4_tiled_z_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_4_tiled_z_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_4_tiled_z_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_4_width_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_4_width_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_4_width_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_5_depth_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_5_depth_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_5_depth_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_5_height_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_5_height_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_5_height_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_array_mode_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_array_mode_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_array_mode_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_bank_h_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_bank_h_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_bank_h_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_bank_w_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_bank_w_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_bank_w_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_element_size_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_element_size_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_element_size_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_mat_aspt_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_mat_aspt_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_mat_aspt_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_mit_mode_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_mit_mode_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_mit_mode_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_num_bank_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_num_bank_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_num_bank_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_pipe_config_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_pipe_config_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_pipe_config_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_tilesplit_size_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_tilesplit_size_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_6_tilesplit_size_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_9_linear_x_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_9_linear_x_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_9_linear_x_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_9_linear_y_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_9_linear_y_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_DW_9_linear_y_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_detile_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_detile_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_detile_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_op_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_op_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_op_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_sub_op_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_sub_op_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_HEADER_sub_op_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_LINEAR_ADDR_HI_linear_addr_63_32_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_LINEAR_ADDR_HI_linear_addr_63_32_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_LINEAR_ADDR_HI_linear_addr_63_32_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_LINEAR_ADDR_LO_linear_addr_31_0_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_LINEAR_ADDR_LO_linear_addr_31_0_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_LINEAR_ADDR_LO_linear_addr_31_0_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_TILED_ADDR_HI_tiled_addr_63_32_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_TILED_ADDR_HI_tiled_addr_63_32_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_TILED_ADDR_HI_tiled_addr_63_32_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_TILED_ADDR_LO_tiled_addr_31_0_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_TILED_ADDR_LO_tiled_addr_31_0_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_BC_TILED_ADDR_LO_tiled_addr_31_0_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_10_linear_pitch_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_10_linear_pitch_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_10_linear_pitch_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_10_linear_z_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_10_linear_z_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_10_linear_z_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_11_linear_slice_pitch_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_11_linear_slice_pitch_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_11_linear_slice_pitch_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_12_rect_x_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_12_rect_x_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_12_rect_x_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_12_rect_y_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_12_rect_y_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_12_rect_y_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_13_linear_cache_policy_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_13_linear_cache_policy_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_13_linear_cache_policy_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_13_linear_sw_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_13_linear_sw_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_13_linear_sw_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_13_rect_z_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_13_rect_z_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_13_rect_z_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_13_tile_cache_policy_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_13_tile_cache_policy_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_13_tile_cache_policy_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_13_tile_sw_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_13_tile_sw_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_13_tile_sw_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_3_tiled_x_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_3_tiled_x_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_3_tiled_x_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_3_tiled_y_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_3_tiled_y_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_3_tiled_y_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_4_tiled_z_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_4_tiled_z_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_4_tiled_z_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_4_width_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_4_width_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_4_width_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_5_depth_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_5_depth_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_5_depth_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_5_height_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_5_height_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_5_height_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_6_dimension_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_6_dimension_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_6_dimension_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_6_element_size_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_6_element_size_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_6_element_size_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_6_mip_id_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_6_mip_id_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_6_mip_id_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_6_mip_max_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_6_mip_max_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_6_mip_max_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_6_swizzle_mode_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_6_swizzle_mode_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_6_swizzle_mode_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_9_linear_x_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_9_linear_x_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_9_linear_x_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_9_linear_y_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_9_linear_y_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_DW_9_linear_y_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_HEADER_cpv_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_HEADER_cpv_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_HEADER_cpv_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_HEADER_dcc_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_HEADER_dcc_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_HEADER_dcc_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_HEADER_detile_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_HEADER_detile_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_HEADER_detile_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_HEADER_op_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_HEADER_op_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_HEADER_op_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_HEADER_sub_op_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_HEADER_sub_op_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_HEADER_sub_op_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_HEADER_tmz_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_HEADER_tmz_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_HEADER_tmz_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_LINEAR_ADDR_HI_linear_addr_63_32_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_LINEAR_ADDR_HI_linear_addr_63_32_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_LINEAR_ADDR_HI_linear_addr_63_32_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_LINEAR_ADDR_LO_linear_addr_31_0_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_LINEAR_ADDR_LO_linear_addr_31_0_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_LINEAR_ADDR_LO_linear_addr_31_0_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_ADDR_HI_meta_addr_63_32_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_ADDR_HI_meta_addr_63_32_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_ADDR_HI_meta_addr_63_32_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_ADDR_LO_meta_addr_31_0_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_ADDR_LO_meta_addr_31_0_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_ADDR_LO_meta_addr_31_0_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_alpha_is_on_msb_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_alpha_is_on_msb_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_alpha_is_on_msb_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_color_transform_disable_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_color_transform_disable_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_color_transform_disable_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_data_format_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_data_format_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_data_format_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_max_comp_block_size_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_max_comp_block_size_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_max_comp_block_size_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_max_uncomp_block_size_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_max_uncomp_block_size_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_max_uncomp_block_size_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_meta_llc_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_meta_llc_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_meta_llc_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_meta_tmz_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_meta_tmz_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_meta_tmz_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_number_type_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_number_type_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_number_type_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_pipe_aligned_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_pipe_aligned_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_pipe_aligned_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_surface_type_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_surface_type_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_surface_type_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_write_compress_enable_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_write_compress_enable_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_META_CONFIG_write_compress_enable_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_TILED_ADDR_HI_tiled_addr_63_32_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_TILED_ADDR_HI_tiled_addr_63_32_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_TILED_ADDR_HI_tiled_addr_63_32_shift', - 'SDMA_PKT_COPY_TILED_SUBWIN_TILED_ADDR_LO_tiled_addr_31_0_mask', - 'SDMA_PKT_COPY_TILED_SUBWIN_TILED_ADDR_LO_tiled_addr_31_0_offset', - 'SDMA_PKT_COPY_TILED_SUBWIN_TILED_ADDR_LO_tiled_addr_31_0_shift', - 'SDMA_PKT_COPY_TILED_TILED_ADDR_HI_tiled_addr_63_32_mask', - 'SDMA_PKT_COPY_TILED_TILED_ADDR_HI_tiled_addr_63_32_offset', - 'SDMA_PKT_COPY_TILED_TILED_ADDR_HI_tiled_addr_63_32_shift', - 'SDMA_PKT_COPY_TILED_TILED_ADDR_LO_tiled_addr_31_0_mask', - 'SDMA_PKT_COPY_TILED_TILED_ADDR_LO_tiled_addr_31_0_offset', - 'SDMA_PKT_COPY_TILED_TILED_ADDR_LO_tiled_addr_31_0_shift', - 'SDMA_PKT_DATA_FILL_MULTI_BYTE_COUNT_count_mask', - 'SDMA_PKT_DATA_FILL_MULTI_BYTE_COUNT_count_offset', - 'SDMA_PKT_DATA_FILL_MULTI_BYTE_COUNT_count_shift', - 'SDMA_PKT_DATA_FILL_MULTI_BYTE_STRIDE_byte_stride_mask', - 'SDMA_PKT_DATA_FILL_MULTI_BYTE_STRIDE_byte_stride_offset', - 'SDMA_PKT_DATA_FILL_MULTI_BYTE_STRIDE_byte_stride_shift', - 'SDMA_PKT_DATA_FILL_MULTI_DMA_COUNT_dma_count_mask', - 'SDMA_PKT_DATA_FILL_MULTI_DMA_COUNT_dma_count_offset', - 'SDMA_PKT_DATA_FILL_MULTI_DMA_COUNT_dma_count_shift', - 'SDMA_PKT_DATA_FILL_MULTI_DST_ADDR_HI_dst_addr_63_32_mask', - 'SDMA_PKT_DATA_FILL_MULTI_DST_ADDR_HI_dst_addr_63_32_offset', - 'SDMA_PKT_DATA_FILL_MULTI_DST_ADDR_HI_dst_addr_63_32_shift', - 'SDMA_PKT_DATA_FILL_MULTI_DST_ADDR_LO_dst_addr_31_0_mask', - 'SDMA_PKT_DATA_FILL_MULTI_DST_ADDR_LO_dst_addr_31_0_offset', - 'SDMA_PKT_DATA_FILL_MULTI_DST_ADDR_LO_dst_addr_31_0_shift', - 'SDMA_PKT_DATA_FILL_MULTI_HEADER_cache_policy_mask', - 'SDMA_PKT_DATA_FILL_MULTI_HEADER_cache_policy_offset', - 'SDMA_PKT_DATA_FILL_MULTI_HEADER_cache_policy_shift', - 'SDMA_PKT_DATA_FILL_MULTI_HEADER_cpv_mask', - 'SDMA_PKT_DATA_FILL_MULTI_HEADER_cpv_offset', - 'SDMA_PKT_DATA_FILL_MULTI_HEADER_cpv_shift', - 'SDMA_PKT_DATA_FILL_MULTI_HEADER_memlog_clr_mask', - 'SDMA_PKT_DATA_FILL_MULTI_HEADER_memlog_clr_offset', - 'SDMA_PKT_DATA_FILL_MULTI_HEADER_memlog_clr_shift', - 'SDMA_PKT_DATA_FILL_MULTI_HEADER_op_mask', - 'SDMA_PKT_DATA_FILL_MULTI_HEADER_op_offset', - 'SDMA_PKT_DATA_FILL_MULTI_HEADER_op_shift', - 'SDMA_PKT_DATA_FILL_MULTI_HEADER_sub_op_mask', - 'SDMA_PKT_DATA_FILL_MULTI_HEADER_sub_op_offset', - 'SDMA_PKT_DATA_FILL_MULTI_HEADER_sub_op_shift', - 'SDMA_PKT_DUMMY_TRAP_HEADER_op_mask', - 'SDMA_PKT_DUMMY_TRAP_HEADER_op_offset', - 'SDMA_PKT_DUMMY_TRAP_HEADER_op_shift', - 'SDMA_PKT_DUMMY_TRAP_HEADER_sub_op_mask', - 'SDMA_PKT_DUMMY_TRAP_HEADER_sub_op_offset', - 'SDMA_PKT_DUMMY_TRAP_HEADER_sub_op_shift', - 'SDMA_PKT_DUMMY_TRAP_INT_CONTEXT_int_context_mask', - 'SDMA_PKT_DUMMY_TRAP_INT_CONTEXT_int_context_offset', - 'SDMA_PKT_DUMMY_TRAP_INT_CONTEXT_int_context_shift', - 'SDMA_PKT_FENCE', 'SDMA_PKT_FENCE_ADDR_HI_addr_63_32_mask', - 'SDMA_PKT_FENCE_ADDR_HI_addr_63_32_offset', - 'SDMA_PKT_FENCE_ADDR_HI_addr_63_32_shift', - 'SDMA_PKT_FENCE_ADDR_LO_addr_31_0_mask', - 'SDMA_PKT_FENCE_ADDR_LO_addr_31_0_offset', - 'SDMA_PKT_FENCE_ADDR_LO_addr_31_0_shift', - 'SDMA_PKT_FENCE_DATA_data_mask', - 'SDMA_PKT_FENCE_DATA_data_offset', - 'SDMA_PKT_FENCE_DATA_data_shift', - 'SDMA_PKT_FENCE_HEADER_cpv_mask', - 'SDMA_PKT_FENCE_HEADER_cpv_offset', - 'SDMA_PKT_FENCE_HEADER_cpv_shift', - 'SDMA_PKT_FENCE_HEADER_gcc_mask', - 'SDMA_PKT_FENCE_HEADER_gcc_offset', - 'SDMA_PKT_FENCE_HEADER_gcc_shift', - 'SDMA_PKT_FENCE_HEADER_gpa_mask', - 'SDMA_PKT_FENCE_HEADER_gpa_offset', - 'SDMA_PKT_FENCE_HEADER_gpa_shift', - 'SDMA_PKT_FENCE_HEADER_l2_policy_mask', - 'SDMA_PKT_FENCE_HEADER_l2_policy_offset', - 'SDMA_PKT_FENCE_HEADER_l2_policy_shift', - 'SDMA_PKT_FENCE_HEADER_llc_policy_mask', - 'SDMA_PKT_FENCE_HEADER_llc_policy_offset', - 'SDMA_PKT_FENCE_HEADER_llc_policy_shift', - 'SDMA_PKT_FENCE_HEADER_mtype_mask', - 'SDMA_PKT_FENCE_HEADER_mtype_offset', - 'SDMA_PKT_FENCE_HEADER_mtype_shift', - 'SDMA_PKT_FENCE_HEADER_op_mask', - 'SDMA_PKT_FENCE_HEADER_op_offset', - 'SDMA_PKT_FENCE_HEADER_op_shift', - 'SDMA_PKT_FENCE_HEADER_snp_mask', - 'SDMA_PKT_FENCE_HEADER_snp_offset', - 'SDMA_PKT_FENCE_HEADER_snp_shift', - 'SDMA_PKT_FENCE_HEADER_sub_op_mask', - 'SDMA_PKT_FENCE_HEADER_sub_op_offset', - 'SDMA_PKT_FENCE_HEADER_sub_op_shift', - 'SDMA_PKT_FENCE_HEADER_sys_mask', - 'SDMA_PKT_FENCE_HEADER_sys_offset', - 'SDMA_PKT_FENCE_HEADER_sys_shift', 'SDMA_PKT_GCR', - 'SDMA_PKT_GCR_REQ_HEADER_op_mask', - 'SDMA_PKT_GCR_REQ_HEADER_op_offset', - 'SDMA_PKT_GCR_REQ_HEADER_op_shift', - 'SDMA_PKT_GCR_REQ_HEADER_sub_op_mask', - 'SDMA_PKT_GCR_REQ_HEADER_sub_op_offset', - 'SDMA_PKT_GCR_REQ_HEADER_sub_op_shift', - 'SDMA_PKT_GCR_REQ_PAYLOAD1_base_va_31_7_mask', - 'SDMA_PKT_GCR_REQ_PAYLOAD1_base_va_31_7_offset', - 'SDMA_PKT_GCR_REQ_PAYLOAD1_base_va_31_7_shift', - 'SDMA_PKT_GCR_REQ_PAYLOAD2_base_va_47_32_mask', - 'SDMA_PKT_GCR_REQ_PAYLOAD2_base_va_47_32_offset', - 'SDMA_PKT_GCR_REQ_PAYLOAD2_base_va_47_32_shift', - 'SDMA_PKT_GCR_REQ_PAYLOAD2_gcr_control_15_0_mask', - 'SDMA_PKT_GCR_REQ_PAYLOAD2_gcr_control_15_0_offset', - 'SDMA_PKT_GCR_REQ_PAYLOAD2_gcr_control_15_0_shift', - 'SDMA_PKT_GCR_REQ_PAYLOAD3_gcr_control_18_16_mask', - 'SDMA_PKT_GCR_REQ_PAYLOAD3_gcr_control_18_16_offset', - 'SDMA_PKT_GCR_REQ_PAYLOAD3_gcr_control_18_16_shift', - 'SDMA_PKT_GCR_REQ_PAYLOAD3_limit_va_31_7_mask', - 'SDMA_PKT_GCR_REQ_PAYLOAD3_limit_va_31_7_offset', - 'SDMA_PKT_GCR_REQ_PAYLOAD3_limit_va_31_7_shift', - 'SDMA_PKT_GCR_REQ_PAYLOAD4_limit_va_47_32_mask', - 'SDMA_PKT_GCR_REQ_PAYLOAD4_limit_va_47_32_offset', - 'SDMA_PKT_GCR_REQ_PAYLOAD4_limit_va_47_32_shift', - 'SDMA_PKT_GCR_REQ_PAYLOAD4_vmid_mask', - 'SDMA_PKT_GCR_REQ_PAYLOAD4_vmid_offset', - 'SDMA_PKT_GCR_REQ_PAYLOAD4_vmid_shift', - 'SDMA_PKT_GPUVM_INV_HEADER_op_mask', - 'SDMA_PKT_GPUVM_INV_HEADER_op_offset', - 'SDMA_PKT_GPUVM_INV_HEADER_op_shift', - 'SDMA_PKT_GPUVM_INV_HEADER_sub_op_mask', - 'SDMA_PKT_GPUVM_INV_HEADER_sub_op_offset', - 'SDMA_PKT_GPUVM_INV_HEADER_sub_op_shift', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_clr_protection_fault_status_addr_mask', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_clr_protection_fault_status_addr_offset', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_clr_protection_fault_status_addr_shift', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_flush_type_mask', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_flush_type_offset', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_flush_type_shift', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_four_kilobytes_mask', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_four_kilobytes_offset', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_four_kilobytes_shift', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_l1_ptes_mask', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_l1_ptes_offset', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_l1_ptes_shift', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_pde0_mask', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_pde0_offset', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_pde0_shift', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_pde1_mask', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_pde1_offset', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_pde1_shift', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_pde2_mask', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_pde2_offset', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_pde2_shift', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_ptes_mask', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_ptes_offset', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_l2_ptes_shift', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_log_request_mask', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_log_request_offset', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_log_request_shift', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_per_vmid_inv_req_mask', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_per_vmid_inv_req_offset', - 'SDMA_PKT_GPUVM_INV_PAYLOAD1_per_vmid_inv_req_shift', - 'SDMA_PKT_GPUVM_INV_PAYLOAD2_page_va_42_12_mask', - 'SDMA_PKT_GPUVM_INV_PAYLOAD2_page_va_42_12_offset', - 'SDMA_PKT_GPUVM_INV_PAYLOAD2_page_va_42_12_shift', - 'SDMA_PKT_GPUVM_INV_PAYLOAD2_s_mask', - 'SDMA_PKT_GPUVM_INV_PAYLOAD2_s_offset', - 'SDMA_PKT_GPUVM_INV_PAYLOAD2_s_shift', - 'SDMA_PKT_GPUVM_INV_PAYLOAD3_page_va_47_43_mask', - 'SDMA_PKT_GPUVM_INV_PAYLOAD3_page_va_47_43_offset', - 'SDMA_PKT_GPUVM_INV_PAYLOAD3_page_va_47_43_shift', - 'SDMA_PKT_HDP_FLUSH', - 'SDMA_PKT_INDIRECT_BASE_HI_ib_base_63_32_mask', - 'SDMA_PKT_INDIRECT_BASE_HI_ib_base_63_32_offset', - 'SDMA_PKT_INDIRECT_BASE_HI_ib_base_63_32_shift', - 'SDMA_PKT_INDIRECT_BASE_LO_ib_base_31_0_mask', - 'SDMA_PKT_INDIRECT_BASE_LO_ib_base_31_0_offset', - 'SDMA_PKT_INDIRECT_BASE_LO_ib_base_31_0_shift', - 'SDMA_PKT_INDIRECT_CSA_ADDR_HI_csa_addr_63_32_mask', - 'SDMA_PKT_INDIRECT_CSA_ADDR_HI_csa_addr_63_32_offset', - 'SDMA_PKT_INDIRECT_CSA_ADDR_HI_csa_addr_63_32_shift', - 'SDMA_PKT_INDIRECT_CSA_ADDR_LO_csa_addr_31_0_mask', - 'SDMA_PKT_INDIRECT_CSA_ADDR_LO_csa_addr_31_0_offset', - 'SDMA_PKT_INDIRECT_CSA_ADDR_LO_csa_addr_31_0_shift', - 'SDMA_PKT_INDIRECT_HEADER_op_mask', - 'SDMA_PKT_INDIRECT_HEADER_op_offset', - 'SDMA_PKT_INDIRECT_HEADER_op_shift', - 'SDMA_PKT_INDIRECT_HEADER_priv_mask', - 'SDMA_PKT_INDIRECT_HEADER_priv_offset', - 'SDMA_PKT_INDIRECT_HEADER_priv_shift', - 'SDMA_PKT_INDIRECT_HEADER_sub_op_mask', - 'SDMA_PKT_INDIRECT_HEADER_sub_op_offset', - 'SDMA_PKT_INDIRECT_HEADER_sub_op_shift', - 'SDMA_PKT_INDIRECT_HEADER_vmid_mask', - 'SDMA_PKT_INDIRECT_HEADER_vmid_offset', - 'SDMA_PKT_INDIRECT_HEADER_vmid_shift', - 'SDMA_PKT_INDIRECT_IB_SIZE_ib_size_mask', - 'SDMA_PKT_INDIRECT_IB_SIZE_ib_size_offset', - 'SDMA_PKT_INDIRECT_IB_SIZE_ib_size_shift', - 'SDMA_PKT_MEM_INCR_ADDR_HI_addr_63_32_mask', - 'SDMA_PKT_MEM_INCR_ADDR_HI_addr_63_32_offset', - 'SDMA_PKT_MEM_INCR_ADDR_HI_addr_63_32_shift', - 'SDMA_PKT_MEM_INCR_ADDR_LO_addr_31_0_mask', - 'SDMA_PKT_MEM_INCR_ADDR_LO_addr_31_0_offset', - 'SDMA_PKT_MEM_INCR_ADDR_LO_addr_31_0_shift', - 'SDMA_PKT_MEM_INCR_HEADER_cpv_mask', - 'SDMA_PKT_MEM_INCR_HEADER_cpv_offset', - 'SDMA_PKT_MEM_INCR_HEADER_cpv_shift', - 'SDMA_PKT_MEM_INCR_HEADER_l2_policy_mask', - 'SDMA_PKT_MEM_INCR_HEADER_l2_policy_offset', - 'SDMA_PKT_MEM_INCR_HEADER_l2_policy_shift', - 'SDMA_PKT_MEM_INCR_HEADER_llc_policy_mask', - 'SDMA_PKT_MEM_INCR_HEADER_llc_policy_offset', - 'SDMA_PKT_MEM_INCR_HEADER_llc_policy_shift', - 'SDMA_PKT_MEM_INCR_HEADER_op_mask', - 'SDMA_PKT_MEM_INCR_HEADER_op_offset', - 'SDMA_PKT_MEM_INCR_HEADER_op_shift', - 'SDMA_PKT_MEM_INCR_HEADER_sub_op_mask', - 'SDMA_PKT_MEM_INCR_HEADER_sub_op_offset', - 'SDMA_PKT_MEM_INCR_HEADER_sub_op_shift', - 'SDMA_PKT_NOP_DATA0_data0_mask', - 'SDMA_PKT_NOP_DATA0_data0_offset', - 'SDMA_PKT_NOP_DATA0_data0_shift', - 'SDMA_PKT_NOP_HEADER_count_mask', - 'SDMA_PKT_NOP_HEADER_count_offset', - 'SDMA_PKT_NOP_HEADER_count_shift', 'SDMA_PKT_NOP_HEADER_op_mask', - 'SDMA_PKT_NOP_HEADER_op_offset', 'SDMA_PKT_NOP_HEADER_op_shift', - 'SDMA_PKT_NOP_HEADER_sub_op_mask', - 'SDMA_PKT_NOP_HEADER_sub_op_offset', - 'SDMA_PKT_NOP_HEADER_sub_op_shift', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_DST_ADDR_HI_addr_63_32_mask', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_DST_ADDR_HI_addr_63_32_offset', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_DST_ADDR_HI_addr_63_32_shift', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_DST_ADDR_LO_addr_31_0_mask', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_DST_ADDR_LO_addr_31_0_offset', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_DST_ADDR_LO_addr_31_0_shift', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_cache_policy_mask', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_cache_policy_offset', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_cache_policy_shift', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_cpv_mask', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_cpv_offset', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_cpv_shift', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_ea_mask', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_ea_offset', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_ea_shift', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_op_mask', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_op_offset', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_op_shift', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_sub_op_mask', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_sub_op_offset', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_HEADER_sub_op_shift', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_PAGE_NUM_page_num_31_0_mask', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_PAGE_NUM_page_num_31_0_offset', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_PAGE_NUM_page_num_31_0_shift', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_START_PAGE_addr_31_4_mask', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_START_PAGE_addr_31_4_offset', - 'SDMA_PKT_POLL_DBIT_WRITE_MEM_START_PAGE_addr_31_4_shift', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_END_HI_cmp0_end_63_32_mask', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_END_HI_cmp0_end_63_32_offset', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_END_HI_cmp0_end_63_32_shift', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_END_LO_cmp0_end_31_0_mask', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_END_LO_cmp0_end_31_0_offset', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_END_LO_cmp0_end_31_0_shift', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_START_HI_cmp0_start_63_32_mask', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_START_HI_cmp0_start_63_32_offset', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_START_HI_cmp0_start_63_32_shift', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_START_LO_cmp0_start_31_0_mask', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_START_LO_cmp0_start_31_0_offset', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP0_ADDR_START_LO_cmp0_start_31_0_shift', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_END_HI_cmp1_end_63_32_mask', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_END_HI_cmp1_end_63_32_offset', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_END_HI_cmp1_end_63_32_shift', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_END_LO_cmp1_end_31_0_mask', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_END_LO_cmp1_end_31_0_offset', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_END_LO_cmp1_end_31_0_shift', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_START_HI_cmp1_start_63_32_mask', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_START_HI_cmp1_start_63_32_offset', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_START_HI_cmp1_start_63_32_shift', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_START_LO_cmp1_start_31_0_mask', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_START_LO_cmp1_start_31_0_offset', - 'SDMA_PKT_POLL_MEM_VERIFY_CMP1_ADDR_START_LO_cmp1_start_31_0_shift', - 'SDMA_PKT_POLL_MEM_VERIFY_HEADER_cache_policy_mask', - 'SDMA_PKT_POLL_MEM_VERIFY_HEADER_cache_policy_offset', - 'SDMA_PKT_POLL_MEM_VERIFY_HEADER_cache_policy_shift', - 'SDMA_PKT_POLL_MEM_VERIFY_HEADER_cpv_mask', - 'SDMA_PKT_POLL_MEM_VERIFY_HEADER_cpv_offset', - 'SDMA_PKT_POLL_MEM_VERIFY_HEADER_cpv_shift', - 'SDMA_PKT_POLL_MEM_VERIFY_HEADER_mode_mask', - 'SDMA_PKT_POLL_MEM_VERIFY_HEADER_mode_offset', - 'SDMA_PKT_POLL_MEM_VERIFY_HEADER_mode_shift', - 'SDMA_PKT_POLL_MEM_VERIFY_HEADER_op_mask', - 'SDMA_PKT_POLL_MEM_VERIFY_HEADER_op_offset', - 'SDMA_PKT_POLL_MEM_VERIFY_HEADER_op_shift', - 'SDMA_PKT_POLL_MEM_VERIFY_HEADER_sub_op_mask', - 'SDMA_PKT_POLL_MEM_VERIFY_HEADER_sub_op_offset', - 'SDMA_PKT_POLL_MEM_VERIFY_HEADER_sub_op_shift', - 'SDMA_PKT_POLL_MEM_VERIFY_PATTERN_pattern_mask', - 'SDMA_PKT_POLL_MEM_VERIFY_PATTERN_pattern_offset', - 'SDMA_PKT_POLL_MEM_VERIFY_PATTERN_pattern_shift', - 'SDMA_PKT_POLL_MEM_VERIFY_REC_ADDR_HI_rec_63_32_mask', - 'SDMA_PKT_POLL_MEM_VERIFY_REC_ADDR_HI_rec_63_32_offset', - 'SDMA_PKT_POLL_MEM_VERIFY_REC_ADDR_HI_rec_63_32_shift', - 'SDMA_PKT_POLL_MEM_VERIFY_REC_ADDR_LO_rec_31_0_mask', - 'SDMA_PKT_POLL_MEM_VERIFY_REC_ADDR_LO_rec_31_0_offset', - 'SDMA_PKT_POLL_MEM_VERIFY_REC_ADDR_LO_rec_31_0_shift', - 'SDMA_PKT_POLL_MEM_VERIFY_RESERVED_reserved_mask', - 'SDMA_PKT_POLL_MEM_VERIFY_RESERVED_reserved_offset', - 'SDMA_PKT_POLL_MEM_VERIFY_RESERVED_reserved_shift', - 'SDMA_PKT_POLL_REGMEM', - 'SDMA_PKT_POLL_REGMEM_ADDR_HI_addr_63_32_mask', - 'SDMA_PKT_POLL_REGMEM_ADDR_HI_addr_63_32_offset', - 'SDMA_PKT_POLL_REGMEM_ADDR_HI_addr_63_32_shift', - 'SDMA_PKT_POLL_REGMEM_ADDR_LO_addr_31_0_mask', - 'SDMA_PKT_POLL_REGMEM_ADDR_LO_addr_31_0_offset', - 'SDMA_PKT_POLL_REGMEM_ADDR_LO_addr_31_0_shift', - 'SDMA_PKT_POLL_REGMEM_DW5_interval_mask', - 'SDMA_PKT_POLL_REGMEM_DW5_interval_offset', - 'SDMA_PKT_POLL_REGMEM_DW5_interval_shift', - 'SDMA_PKT_POLL_REGMEM_DW5_retry_count_mask', - 'SDMA_PKT_POLL_REGMEM_DW5_retry_count_offset', - 'SDMA_PKT_POLL_REGMEM_DW5_retry_count_shift', - 'SDMA_PKT_POLL_REGMEM_HEADER_cache_policy_mask', - 'SDMA_PKT_POLL_REGMEM_HEADER_cache_policy_offset', - 'SDMA_PKT_POLL_REGMEM_HEADER_cache_policy_shift', - 'SDMA_PKT_POLL_REGMEM_HEADER_cpv_mask', - 'SDMA_PKT_POLL_REGMEM_HEADER_cpv_offset', - 'SDMA_PKT_POLL_REGMEM_HEADER_cpv_shift', - 'SDMA_PKT_POLL_REGMEM_HEADER_func_mask', - 'SDMA_PKT_POLL_REGMEM_HEADER_func_offset', - 'SDMA_PKT_POLL_REGMEM_HEADER_func_shift', - 'SDMA_PKT_POLL_REGMEM_HEADER_hdp_flush_mask', - 'SDMA_PKT_POLL_REGMEM_HEADER_hdp_flush_offset', - 'SDMA_PKT_POLL_REGMEM_HEADER_hdp_flush_shift', - 'SDMA_PKT_POLL_REGMEM_HEADER_mem_poll_mask', - 'SDMA_PKT_POLL_REGMEM_HEADER_mem_poll_offset', - 'SDMA_PKT_POLL_REGMEM_HEADER_mem_poll_shift', - 'SDMA_PKT_POLL_REGMEM_HEADER_op_mask', - 'SDMA_PKT_POLL_REGMEM_HEADER_op_offset', - 'SDMA_PKT_POLL_REGMEM_HEADER_op_shift', - 'SDMA_PKT_POLL_REGMEM_HEADER_sub_op_mask', - 'SDMA_PKT_POLL_REGMEM_HEADER_sub_op_offset', - 'SDMA_PKT_POLL_REGMEM_HEADER_sub_op_shift', - 'SDMA_PKT_POLL_REGMEM_MASK_mask_mask', - 'SDMA_PKT_POLL_REGMEM_MASK_mask_offset', - 'SDMA_PKT_POLL_REGMEM_MASK_mask_shift', - 'SDMA_PKT_POLL_REGMEM_VALUE_value_mask', - 'SDMA_PKT_POLL_REGMEM_VALUE_value_offset', - 'SDMA_PKT_POLL_REGMEM_VALUE_value_shift', - 'SDMA_PKT_POLL_REG_WRITE_MEM_DST_ADDR_HI_addr_63_32_mask', - 'SDMA_PKT_POLL_REG_WRITE_MEM_DST_ADDR_HI_addr_63_32_offset', - 'SDMA_PKT_POLL_REG_WRITE_MEM_DST_ADDR_HI_addr_63_32_shift', - 'SDMA_PKT_POLL_REG_WRITE_MEM_DST_ADDR_LO_addr_31_0_mask', - 'SDMA_PKT_POLL_REG_WRITE_MEM_DST_ADDR_LO_addr_31_0_offset', - 'SDMA_PKT_POLL_REG_WRITE_MEM_DST_ADDR_LO_addr_31_0_shift', - 'SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_cache_policy_mask', - 'SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_cache_policy_offset', - 'SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_cache_policy_shift', - 'SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_cpv_mask', - 'SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_cpv_offset', - 'SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_cpv_shift', - 'SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_op_mask', - 'SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_op_offset', - 'SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_op_shift', - 'SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_sub_op_mask', - 'SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_sub_op_offset', - 'SDMA_PKT_POLL_REG_WRITE_MEM_HEADER_sub_op_shift', - 'SDMA_PKT_POLL_REG_WRITE_MEM_SRC_ADDR_addr_31_2_mask', - 'SDMA_PKT_POLL_REG_WRITE_MEM_SRC_ADDR_addr_31_2_offset', - 'SDMA_PKT_POLL_REG_WRITE_MEM_SRC_ADDR_addr_31_2_shift', - 'SDMA_PKT_PRE_EXE_EXEC_COUNT_exec_count_mask', - 'SDMA_PKT_PRE_EXE_EXEC_COUNT_exec_count_offset', - 'SDMA_PKT_PRE_EXE_EXEC_COUNT_exec_count_shift', - 'SDMA_PKT_PRE_EXE_HEADER_dev_sel_mask', - 'SDMA_PKT_PRE_EXE_HEADER_dev_sel_offset', - 'SDMA_PKT_PRE_EXE_HEADER_dev_sel_shift', - 'SDMA_PKT_PRE_EXE_HEADER_op_mask', - 'SDMA_PKT_PRE_EXE_HEADER_op_offset', - 'SDMA_PKT_PRE_EXE_HEADER_op_shift', - 'SDMA_PKT_PRE_EXE_HEADER_sub_op_mask', - 'SDMA_PKT_PRE_EXE_HEADER_sub_op_offset', - 'SDMA_PKT_PRE_EXE_HEADER_sub_op_shift', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_COUNT_IN_32B_XFER_count_mask', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_COUNT_IN_32B_XFER_count_offset', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_COUNT_IN_32B_XFER_count_shift', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_DST_ADDR_HI_dst_addr_63_32_mask', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_DST_ADDR_HI_dst_addr_63_32_offset', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_DST_ADDR_HI_dst_addr_63_32_shift', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_DST_ADDR_LO_dst_addr_31_0_mask', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_DST_ADDR_LO_dst_addr_31_0_offset', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_DST_ADDR_LO_dst_addr_31_0_shift', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_direction_mask', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_direction_offset', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_direction_shift', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_op_mask', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_op_offset', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_op_shift', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_pte_size_mask', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_pte_size_offset', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_pte_size_shift', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_ptepde_op_mask', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_ptepde_op_offset', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_ptepde_op_shift', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_sub_op_mask', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_sub_op_offset', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_HEADER_sub_op_shift', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_MASK_BIT_FOR_DW_mask_first_xfer_mask', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_MASK_BIT_FOR_DW_mask_first_xfer_offset', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_MASK_BIT_FOR_DW_mask_first_xfer_shift', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_MASK_BIT_FOR_DW_mask_last_xfer_mask', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_MASK_BIT_FOR_DW_mask_last_xfer_offset', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_MASK_BIT_FOR_DW_mask_last_xfer_shift', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_SRC_ADDR_HI_src_addr_63_32_mask', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_SRC_ADDR_HI_src_addr_63_32_offset', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_SRC_ADDR_HI_src_addr_63_32_shift', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_SRC_ADDR_LO_src_addr_31_0_mask', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_SRC_ADDR_LO_src_addr_31_0_offset', - 'SDMA_PKT_PTEPDE_COPY_BACKWARDS_SRC_ADDR_LO_src_addr_31_0_shift', - 'SDMA_PKT_PTEPDE_COPY_COUNT_count_mask', - 'SDMA_PKT_PTEPDE_COPY_COUNT_count_offset', - 'SDMA_PKT_PTEPDE_COPY_COUNT_count_shift', - 'SDMA_PKT_PTEPDE_COPY_COUNT_dst_cache_policy_mask', - 'SDMA_PKT_PTEPDE_COPY_COUNT_dst_cache_policy_offset', - 'SDMA_PKT_PTEPDE_COPY_COUNT_dst_cache_policy_shift', - 'SDMA_PKT_PTEPDE_COPY_COUNT_src_cache_policy_mask', - 'SDMA_PKT_PTEPDE_COPY_COUNT_src_cache_policy_offset', - 'SDMA_PKT_PTEPDE_COPY_COUNT_src_cache_policy_shift', - 'SDMA_PKT_PTEPDE_COPY_DST_ADDR_HI_dst_addr_63_32_mask', - 'SDMA_PKT_PTEPDE_COPY_DST_ADDR_HI_dst_addr_63_32_offset', - 'SDMA_PKT_PTEPDE_COPY_DST_ADDR_HI_dst_addr_63_32_shift', - 'SDMA_PKT_PTEPDE_COPY_DST_ADDR_LO_dst_addr_31_0_mask', - 'SDMA_PKT_PTEPDE_COPY_DST_ADDR_LO_dst_addr_31_0_offset', - 'SDMA_PKT_PTEPDE_COPY_DST_ADDR_LO_dst_addr_31_0_shift', - 'SDMA_PKT_PTEPDE_COPY_HEADER_cpv_mask', - 'SDMA_PKT_PTEPDE_COPY_HEADER_cpv_offset', - 'SDMA_PKT_PTEPDE_COPY_HEADER_cpv_shift', - 'SDMA_PKT_PTEPDE_COPY_HEADER_op_mask', - 'SDMA_PKT_PTEPDE_COPY_HEADER_op_offset', - 'SDMA_PKT_PTEPDE_COPY_HEADER_op_shift', - 'SDMA_PKT_PTEPDE_COPY_HEADER_ptepde_op_mask', - 'SDMA_PKT_PTEPDE_COPY_HEADER_ptepde_op_offset', - 'SDMA_PKT_PTEPDE_COPY_HEADER_ptepde_op_shift', - 'SDMA_PKT_PTEPDE_COPY_HEADER_sub_op_mask', - 'SDMA_PKT_PTEPDE_COPY_HEADER_sub_op_offset', - 'SDMA_PKT_PTEPDE_COPY_HEADER_sub_op_shift', - 'SDMA_PKT_PTEPDE_COPY_HEADER_tmz_mask', - 'SDMA_PKT_PTEPDE_COPY_HEADER_tmz_offset', - 'SDMA_PKT_PTEPDE_COPY_HEADER_tmz_shift', - 'SDMA_PKT_PTEPDE_COPY_MASK_DW0_mask_dw0_mask', - 'SDMA_PKT_PTEPDE_COPY_MASK_DW0_mask_dw0_offset', - 'SDMA_PKT_PTEPDE_COPY_MASK_DW0_mask_dw0_shift', - 'SDMA_PKT_PTEPDE_COPY_MASK_DW1_mask_dw1_mask', - 'SDMA_PKT_PTEPDE_COPY_MASK_DW1_mask_dw1_offset', - 'SDMA_PKT_PTEPDE_COPY_MASK_DW1_mask_dw1_shift', - 'SDMA_PKT_PTEPDE_COPY_SRC_ADDR_HI_src_addr_63_32_mask', - 'SDMA_PKT_PTEPDE_COPY_SRC_ADDR_HI_src_addr_63_32_offset', - 'SDMA_PKT_PTEPDE_COPY_SRC_ADDR_HI_src_addr_63_32_shift', - 'SDMA_PKT_PTEPDE_COPY_SRC_ADDR_LO_src_addr_31_0_mask', - 'SDMA_PKT_PTEPDE_COPY_SRC_ADDR_LO_src_addr_31_0_offset', - 'SDMA_PKT_PTEPDE_COPY_SRC_ADDR_LO_src_addr_31_0_shift', - 'SDMA_PKT_PTEPDE_RMW_ADDR_HI_addr_63_32_mask', - 'SDMA_PKT_PTEPDE_RMW_ADDR_HI_addr_63_32_offset', - 'SDMA_PKT_PTEPDE_RMW_ADDR_HI_addr_63_32_shift', - 'SDMA_PKT_PTEPDE_RMW_ADDR_LO_addr_31_0_mask', - 'SDMA_PKT_PTEPDE_RMW_ADDR_LO_addr_31_0_offset', - 'SDMA_PKT_PTEPDE_RMW_ADDR_LO_addr_31_0_shift', - 'SDMA_PKT_PTEPDE_RMW_COUNT_num_of_pte_mask', - 'SDMA_PKT_PTEPDE_RMW_COUNT_num_of_pte_offset', - 'SDMA_PKT_PTEPDE_RMW_COUNT_num_of_pte_shift', - 'SDMA_PKT_PTEPDE_RMW_HEADER_cpv_mask', - 'SDMA_PKT_PTEPDE_RMW_HEADER_cpv_offset', - 'SDMA_PKT_PTEPDE_RMW_HEADER_cpv_shift', - 'SDMA_PKT_PTEPDE_RMW_HEADER_gcc_mask', - 'SDMA_PKT_PTEPDE_RMW_HEADER_gcc_offset', - 'SDMA_PKT_PTEPDE_RMW_HEADER_gcc_shift', - 'SDMA_PKT_PTEPDE_RMW_HEADER_gpa_mask', - 'SDMA_PKT_PTEPDE_RMW_HEADER_gpa_offset', - 'SDMA_PKT_PTEPDE_RMW_HEADER_gpa_shift', - 'SDMA_PKT_PTEPDE_RMW_HEADER_l2_policy_mask', - 'SDMA_PKT_PTEPDE_RMW_HEADER_l2_policy_offset', - 'SDMA_PKT_PTEPDE_RMW_HEADER_l2_policy_shift', - 'SDMA_PKT_PTEPDE_RMW_HEADER_llc_policy_mask', - 'SDMA_PKT_PTEPDE_RMW_HEADER_llc_policy_offset', - 'SDMA_PKT_PTEPDE_RMW_HEADER_llc_policy_shift', - 'SDMA_PKT_PTEPDE_RMW_HEADER_mtype_mask', - 'SDMA_PKT_PTEPDE_RMW_HEADER_mtype_offset', - 'SDMA_PKT_PTEPDE_RMW_HEADER_mtype_shift', - 'SDMA_PKT_PTEPDE_RMW_HEADER_op_mask', - 'SDMA_PKT_PTEPDE_RMW_HEADER_op_offset', - 'SDMA_PKT_PTEPDE_RMW_HEADER_op_shift', - 'SDMA_PKT_PTEPDE_RMW_HEADER_snp_mask', - 'SDMA_PKT_PTEPDE_RMW_HEADER_snp_offset', - 'SDMA_PKT_PTEPDE_RMW_HEADER_snp_shift', - 'SDMA_PKT_PTEPDE_RMW_HEADER_sub_op_mask', - 'SDMA_PKT_PTEPDE_RMW_HEADER_sub_op_offset', - 'SDMA_PKT_PTEPDE_RMW_HEADER_sub_op_shift', - 'SDMA_PKT_PTEPDE_RMW_HEADER_sys_mask', - 'SDMA_PKT_PTEPDE_RMW_HEADER_sys_offset', - 'SDMA_PKT_PTEPDE_RMW_HEADER_sys_shift', - 'SDMA_PKT_PTEPDE_RMW_MASK_HI_mask_63_32_mask', - 'SDMA_PKT_PTEPDE_RMW_MASK_HI_mask_63_32_offset', - 'SDMA_PKT_PTEPDE_RMW_MASK_HI_mask_63_32_shift', - 'SDMA_PKT_PTEPDE_RMW_MASK_LO_mask_31_0_mask', - 'SDMA_PKT_PTEPDE_RMW_MASK_LO_mask_31_0_offset', - 'SDMA_PKT_PTEPDE_RMW_MASK_LO_mask_31_0_shift', - 'SDMA_PKT_PTEPDE_RMW_VALUE_HI_value_63_32_mask', - 'SDMA_PKT_PTEPDE_RMW_VALUE_HI_value_63_32_offset', - 'SDMA_PKT_PTEPDE_RMW_VALUE_HI_value_63_32_shift', - 'SDMA_PKT_PTEPDE_RMW_VALUE_LO_value_31_0_mask', - 'SDMA_PKT_PTEPDE_RMW_VALUE_LO_value_31_0_offset', - 'SDMA_PKT_PTEPDE_RMW_VALUE_LO_value_31_0_shift', - 'SDMA_PKT_REGISTER_RMW_ADDR_addr_mask', - 'SDMA_PKT_REGISTER_RMW_ADDR_addr_offset', - 'SDMA_PKT_REGISTER_RMW_ADDR_addr_shift', - 'SDMA_PKT_REGISTER_RMW_ADDR_aperture_id_mask', - 'SDMA_PKT_REGISTER_RMW_ADDR_aperture_id_offset', - 'SDMA_PKT_REGISTER_RMW_ADDR_aperture_id_shift', - 'SDMA_PKT_REGISTER_RMW_HEADER_op_mask', - 'SDMA_PKT_REGISTER_RMW_HEADER_op_offset', - 'SDMA_PKT_REGISTER_RMW_HEADER_op_shift', - 'SDMA_PKT_REGISTER_RMW_HEADER_sub_op_mask', - 'SDMA_PKT_REGISTER_RMW_HEADER_sub_op_offset', - 'SDMA_PKT_REGISTER_RMW_HEADER_sub_op_shift', - 'SDMA_PKT_REGISTER_RMW_MASK_mask_mask', - 'SDMA_PKT_REGISTER_RMW_MASK_mask_offset', - 'SDMA_PKT_REGISTER_RMW_MASK_mask_shift', - 'SDMA_PKT_REGISTER_RMW_MISC_num_of_reg_mask', - 'SDMA_PKT_REGISTER_RMW_MISC_num_of_reg_offset', - 'SDMA_PKT_REGISTER_RMW_MISC_num_of_reg_shift', - 'SDMA_PKT_REGISTER_RMW_MISC_stride_mask', - 'SDMA_PKT_REGISTER_RMW_MISC_stride_offset', - 'SDMA_PKT_REGISTER_RMW_MISC_stride_shift', - 'SDMA_PKT_REGISTER_RMW_VALUE_value_mask', - 'SDMA_PKT_REGISTER_RMW_VALUE_value_offset', - 'SDMA_PKT_REGISTER_RMW_VALUE_value_shift', - 'SDMA_PKT_SEMAPHORE_ADDR_HI_addr_63_32_mask', - 'SDMA_PKT_SEMAPHORE_ADDR_HI_addr_63_32_offset', - 'SDMA_PKT_SEMAPHORE_ADDR_HI_addr_63_32_shift', - 'SDMA_PKT_SEMAPHORE_ADDR_LO_addr_31_0_mask', - 'SDMA_PKT_SEMAPHORE_ADDR_LO_addr_31_0_offset', - 'SDMA_PKT_SEMAPHORE_ADDR_LO_addr_31_0_shift', - 'SDMA_PKT_SEMAPHORE_HEADER_mailbox_mask', - 'SDMA_PKT_SEMAPHORE_HEADER_mailbox_offset', - 'SDMA_PKT_SEMAPHORE_HEADER_mailbox_shift', - 'SDMA_PKT_SEMAPHORE_HEADER_op_mask', - 'SDMA_PKT_SEMAPHORE_HEADER_op_offset', - 'SDMA_PKT_SEMAPHORE_HEADER_op_shift', - 'SDMA_PKT_SEMAPHORE_HEADER_signal_mask', - 'SDMA_PKT_SEMAPHORE_HEADER_signal_offset', - 'SDMA_PKT_SEMAPHORE_HEADER_signal_shift', - 'SDMA_PKT_SEMAPHORE_HEADER_sub_op_mask', - 'SDMA_PKT_SEMAPHORE_HEADER_sub_op_offset', - 'SDMA_PKT_SEMAPHORE_HEADER_sub_op_shift', - 'SDMA_PKT_SEMAPHORE_HEADER_write_one_mask', - 'SDMA_PKT_SEMAPHORE_HEADER_write_one_offset', - 'SDMA_PKT_SEMAPHORE_HEADER_write_one_shift', - 'SDMA_PKT_SRBM_WRITE_ADDR_addr_mask', - 'SDMA_PKT_SRBM_WRITE_ADDR_addr_offset', - 'SDMA_PKT_SRBM_WRITE_ADDR_addr_shift', - 'SDMA_PKT_SRBM_WRITE_ADDR_apertureid_mask', - 'SDMA_PKT_SRBM_WRITE_ADDR_apertureid_offset', - 'SDMA_PKT_SRBM_WRITE_ADDR_apertureid_shift', - 'SDMA_PKT_SRBM_WRITE_DATA_data_mask', - 'SDMA_PKT_SRBM_WRITE_DATA_data_offset', - 'SDMA_PKT_SRBM_WRITE_DATA_data_shift', - 'SDMA_PKT_SRBM_WRITE_HEADER_byte_en_mask', - 'SDMA_PKT_SRBM_WRITE_HEADER_byte_en_offset', - 'SDMA_PKT_SRBM_WRITE_HEADER_byte_en_shift', - 'SDMA_PKT_SRBM_WRITE_HEADER_op_mask', - 'SDMA_PKT_SRBM_WRITE_HEADER_op_offset', - 'SDMA_PKT_SRBM_WRITE_HEADER_op_shift', - 'SDMA_PKT_SRBM_WRITE_HEADER_sub_op_mask', - 'SDMA_PKT_SRBM_WRITE_HEADER_sub_op_offset', - 'SDMA_PKT_SRBM_WRITE_HEADER_sub_op_shift', 'SDMA_PKT_TIMESTAMP', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_cpv_mask', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_cpv_offset', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_cpv_shift', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_l2_policy_mask', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_l2_policy_offset', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_l2_policy_shift', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_llc_policy_mask', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_llc_policy_offset', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_llc_policy_shift', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_op_mask', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_op_offset', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_op_shift', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_sub_op_mask', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_sub_op_offset', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_HEADER_sub_op_shift', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_WRITE_ADDR_HI_write_addr_63_32_mask', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_WRITE_ADDR_HI_write_addr_63_32_offset', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_WRITE_ADDR_HI_write_addr_63_32_shift', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_WRITE_ADDR_LO_write_addr_31_3_mask', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_WRITE_ADDR_LO_write_addr_31_3_offset', - 'SDMA_PKT_TIMESTAMP_GET_GLOBAL_WRITE_ADDR_LO_write_addr_31_3_shift', - 'SDMA_PKT_TIMESTAMP_GET_HEADER_cpv_mask', - 'SDMA_PKT_TIMESTAMP_GET_HEADER_cpv_offset', - 'SDMA_PKT_TIMESTAMP_GET_HEADER_cpv_shift', - 'SDMA_PKT_TIMESTAMP_GET_HEADER_l2_policy_mask', - 'SDMA_PKT_TIMESTAMP_GET_HEADER_l2_policy_offset', - 'SDMA_PKT_TIMESTAMP_GET_HEADER_l2_policy_shift', - 'SDMA_PKT_TIMESTAMP_GET_HEADER_llc_policy_mask', - 'SDMA_PKT_TIMESTAMP_GET_HEADER_llc_policy_offset', - 'SDMA_PKT_TIMESTAMP_GET_HEADER_llc_policy_shift', - 'SDMA_PKT_TIMESTAMP_GET_HEADER_op_mask', - 'SDMA_PKT_TIMESTAMP_GET_HEADER_op_offset', - 'SDMA_PKT_TIMESTAMP_GET_HEADER_op_shift', - 'SDMA_PKT_TIMESTAMP_GET_HEADER_sub_op_mask', - 'SDMA_PKT_TIMESTAMP_GET_HEADER_sub_op_offset', - 'SDMA_PKT_TIMESTAMP_GET_HEADER_sub_op_shift', - 'SDMA_PKT_TIMESTAMP_GET_WRITE_ADDR_HI_write_addr_63_32_mask', - 'SDMA_PKT_TIMESTAMP_GET_WRITE_ADDR_HI_write_addr_63_32_offset', - 'SDMA_PKT_TIMESTAMP_GET_WRITE_ADDR_HI_write_addr_63_32_shift', - 'SDMA_PKT_TIMESTAMP_GET_WRITE_ADDR_LO_write_addr_31_3_mask', - 'SDMA_PKT_TIMESTAMP_GET_WRITE_ADDR_LO_write_addr_31_3_offset', - 'SDMA_PKT_TIMESTAMP_GET_WRITE_ADDR_LO_write_addr_31_3_shift', - 'SDMA_PKT_TIMESTAMP_SET_HEADER_op_mask', - 'SDMA_PKT_TIMESTAMP_SET_HEADER_op_offset', - 'SDMA_PKT_TIMESTAMP_SET_HEADER_op_shift', - 'SDMA_PKT_TIMESTAMP_SET_HEADER_sub_op_mask', - 'SDMA_PKT_TIMESTAMP_SET_HEADER_sub_op_offset', - 'SDMA_PKT_TIMESTAMP_SET_HEADER_sub_op_shift', - 'SDMA_PKT_TIMESTAMP_SET_INIT_DATA_HI_init_data_63_32_mask', - 'SDMA_PKT_TIMESTAMP_SET_INIT_DATA_HI_init_data_63_32_offset', - 'SDMA_PKT_TIMESTAMP_SET_INIT_DATA_HI_init_data_63_32_shift', - 'SDMA_PKT_TIMESTAMP_SET_INIT_DATA_LO_init_data_31_0_mask', - 'SDMA_PKT_TIMESTAMP_SET_INIT_DATA_LO_init_data_31_0_offset', - 'SDMA_PKT_TIMESTAMP_SET_INIT_DATA_LO_init_data_31_0_shift', - 'SDMA_PKT_TRAP', 'SDMA_PKT_TRAP_HEADER_op_mask', - 'SDMA_PKT_TRAP_HEADER_op_offset', 'SDMA_PKT_TRAP_HEADER_op_shift', - 'SDMA_PKT_TRAP_HEADER_sub_op_mask', - 'SDMA_PKT_TRAP_HEADER_sub_op_offset', - 'SDMA_PKT_TRAP_HEADER_sub_op_shift', - 'SDMA_PKT_TRAP_INT_CONTEXT_int_context_mask', - 'SDMA_PKT_TRAP_INT_CONTEXT_int_context_offset', - 'SDMA_PKT_TRAP_INT_CONTEXT_int_context_shift', - 'SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_addressrangehi_mask', - 'SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_addressrangehi_offset', - 'SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_addressrangehi_shift', - 'SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_invalidateack_mask', - 'SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_invalidateack_offset', - 'SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_invalidateack_shift', - 'SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_reserved_mask', - 'SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_reserved_offset', - 'SDMA_PKT_VM_INVALIDATION_ADDRESSRANGEHI_reserved_shift', - 'SDMA_PKT_VM_INVALIDATION_ADDRESSRANGELO_addressrangelo_mask', - 'SDMA_PKT_VM_INVALIDATION_ADDRESSRANGELO_addressrangelo_offset', - 'SDMA_PKT_VM_INVALIDATION_ADDRESSRANGELO_addressrangelo_shift', - 'SDMA_PKT_VM_INVALIDATION_HEADER_gfx_eng_id_mask', - 'SDMA_PKT_VM_INVALIDATION_HEADER_gfx_eng_id_offset', - 'SDMA_PKT_VM_INVALIDATION_HEADER_gfx_eng_id_shift', - 'SDMA_PKT_VM_INVALIDATION_HEADER_mm_eng_id_mask', - 'SDMA_PKT_VM_INVALIDATION_HEADER_mm_eng_id_offset', - 'SDMA_PKT_VM_INVALIDATION_HEADER_mm_eng_id_shift', - 'SDMA_PKT_VM_INVALIDATION_HEADER_op_mask', - 'SDMA_PKT_VM_INVALIDATION_HEADER_op_offset', - 'SDMA_PKT_VM_INVALIDATION_HEADER_op_shift', - 'SDMA_PKT_VM_INVALIDATION_HEADER_sub_op_mask', - 'SDMA_PKT_VM_INVALIDATION_HEADER_sub_op_offset', - 'SDMA_PKT_VM_INVALIDATION_HEADER_sub_op_shift', - 'SDMA_PKT_VM_INVALIDATION_INVALIDATEREQ_invalidatereq_mask', - 'SDMA_PKT_VM_INVALIDATION_INVALIDATEREQ_invalidatereq_offset', - 'SDMA_PKT_VM_INVALIDATION_INVALIDATEREQ_invalidatereq_shift', - 'SDMA_PKT_WRITE_INCR_COUNT_count_mask', - 'SDMA_PKT_WRITE_INCR_COUNT_count_offset', - 'SDMA_PKT_WRITE_INCR_COUNT_count_shift', - 'SDMA_PKT_WRITE_INCR_DST_ADDR_HI_dst_addr_63_32_mask', - 'SDMA_PKT_WRITE_INCR_DST_ADDR_HI_dst_addr_63_32_offset', - 'SDMA_PKT_WRITE_INCR_DST_ADDR_HI_dst_addr_63_32_shift', - 'SDMA_PKT_WRITE_INCR_DST_ADDR_LO_dst_addr_31_0_mask', - 'SDMA_PKT_WRITE_INCR_DST_ADDR_LO_dst_addr_31_0_offset', - 'SDMA_PKT_WRITE_INCR_DST_ADDR_LO_dst_addr_31_0_shift', - 'SDMA_PKT_WRITE_INCR_HEADER_cache_policy_mask', - 'SDMA_PKT_WRITE_INCR_HEADER_cache_policy_offset', - 'SDMA_PKT_WRITE_INCR_HEADER_cache_policy_shift', - 'SDMA_PKT_WRITE_INCR_HEADER_cpv_mask', - 'SDMA_PKT_WRITE_INCR_HEADER_cpv_offset', - 'SDMA_PKT_WRITE_INCR_HEADER_cpv_shift', - 'SDMA_PKT_WRITE_INCR_HEADER_op_mask', - 'SDMA_PKT_WRITE_INCR_HEADER_op_offset', - 'SDMA_PKT_WRITE_INCR_HEADER_op_shift', - 'SDMA_PKT_WRITE_INCR_HEADER_sub_op_mask', - 'SDMA_PKT_WRITE_INCR_HEADER_sub_op_offset', - 'SDMA_PKT_WRITE_INCR_HEADER_sub_op_shift', - 'SDMA_PKT_WRITE_INCR_INCR_DW0_incr_dw0_mask', - 'SDMA_PKT_WRITE_INCR_INCR_DW0_incr_dw0_offset', - 'SDMA_PKT_WRITE_INCR_INCR_DW0_incr_dw0_shift', - 'SDMA_PKT_WRITE_INCR_INCR_DW1_incr_dw1_mask', - 'SDMA_PKT_WRITE_INCR_INCR_DW1_incr_dw1_offset', - 'SDMA_PKT_WRITE_INCR_INCR_DW1_incr_dw1_shift', - 'SDMA_PKT_WRITE_INCR_INIT_DW0_init_dw0_mask', - 'SDMA_PKT_WRITE_INCR_INIT_DW0_init_dw0_offset', - 'SDMA_PKT_WRITE_INCR_INIT_DW0_init_dw0_shift', - 'SDMA_PKT_WRITE_INCR_INIT_DW1_init_dw1_mask', - 'SDMA_PKT_WRITE_INCR_INIT_DW1_init_dw1_offset', - 'SDMA_PKT_WRITE_INCR_INIT_DW1_init_dw1_shift', - 'SDMA_PKT_WRITE_INCR_MASK_DW0_mask_dw0_mask', - 'SDMA_PKT_WRITE_INCR_MASK_DW0_mask_dw0_offset', - 'SDMA_PKT_WRITE_INCR_MASK_DW0_mask_dw0_shift', - 'SDMA_PKT_WRITE_INCR_MASK_DW1_mask_dw1_mask', - 'SDMA_PKT_WRITE_INCR_MASK_DW1_mask_dw1_offset', - 'SDMA_PKT_WRITE_INCR_MASK_DW1_mask_dw1_shift', - 'SDMA_PKT_WRITE_TILED_BC_COUNT_count_mask', - 'SDMA_PKT_WRITE_TILED_BC_COUNT_count_offset', - 'SDMA_PKT_WRITE_TILED_BC_COUNT_count_shift', - 'SDMA_PKT_WRITE_TILED_BC_DATA0_data0_mask', - 'SDMA_PKT_WRITE_TILED_BC_DATA0_data0_offset', - 'SDMA_PKT_WRITE_TILED_BC_DATA0_data0_shift', - 'SDMA_PKT_WRITE_TILED_BC_DST_ADDR_HI_dst_addr_63_32_mask', - 'SDMA_PKT_WRITE_TILED_BC_DST_ADDR_HI_dst_addr_63_32_offset', - 'SDMA_PKT_WRITE_TILED_BC_DST_ADDR_HI_dst_addr_63_32_shift', - 'SDMA_PKT_WRITE_TILED_BC_DST_ADDR_LO_dst_addr_31_0_mask', - 'SDMA_PKT_WRITE_TILED_BC_DST_ADDR_LO_dst_addr_31_0_offset', - 'SDMA_PKT_WRITE_TILED_BC_DST_ADDR_LO_dst_addr_31_0_shift', - 'SDMA_PKT_WRITE_TILED_BC_DW_3_width_mask', - 'SDMA_PKT_WRITE_TILED_BC_DW_3_width_offset', - 'SDMA_PKT_WRITE_TILED_BC_DW_3_width_shift', - 'SDMA_PKT_WRITE_TILED_BC_DW_4_depth_mask', - 'SDMA_PKT_WRITE_TILED_BC_DW_4_depth_offset', - 'SDMA_PKT_WRITE_TILED_BC_DW_4_depth_shift', - 'SDMA_PKT_WRITE_TILED_BC_DW_4_height_mask', - 'SDMA_PKT_WRITE_TILED_BC_DW_4_height_offset', - 'SDMA_PKT_WRITE_TILED_BC_DW_4_height_shift', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_array_mode_mask', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_array_mode_offset', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_array_mode_shift', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_bank_h_mask', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_bank_h_offset', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_bank_h_shift', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_bank_w_mask', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_bank_w_offset', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_bank_w_shift', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_element_size_mask', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_element_size_offset', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_element_size_shift', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_mat_aspt_mask', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_mat_aspt_offset', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_mat_aspt_shift', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_mit_mode_mask', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_mit_mode_offset', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_mit_mode_shift', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_num_bank_mask', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_num_bank_offset', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_num_bank_shift', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_pipe_config_mask', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_pipe_config_offset', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_pipe_config_shift', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_tilesplit_size_mask', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_tilesplit_size_offset', - 'SDMA_PKT_WRITE_TILED_BC_DW_5_tilesplit_size_shift', - 'SDMA_PKT_WRITE_TILED_BC_DW_6_x_mask', - 'SDMA_PKT_WRITE_TILED_BC_DW_6_x_offset', - 'SDMA_PKT_WRITE_TILED_BC_DW_6_x_shift', - 'SDMA_PKT_WRITE_TILED_BC_DW_6_y_mask', - 'SDMA_PKT_WRITE_TILED_BC_DW_6_y_offset', - 'SDMA_PKT_WRITE_TILED_BC_DW_6_y_shift', - 'SDMA_PKT_WRITE_TILED_BC_DW_7_sw_mask', - 'SDMA_PKT_WRITE_TILED_BC_DW_7_sw_offset', - 'SDMA_PKT_WRITE_TILED_BC_DW_7_sw_shift', - 'SDMA_PKT_WRITE_TILED_BC_DW_7_z_mask', - 'SDMA_PKT_WRITE_TILED_BC_DW_7_z_offset', - 'SDMA_PKT_WRITE_TILED_BC_DW_7_z_shift', - 'SDMA_PKT_WRITE_TILED_BC_HEADER_op_mask', - 'SDMA_PKT_WRITE_TILED_BC_HEADER_op_offset', - 'SDMA_PKT_WRITE_TILED_BC_HEADER_op_shift', - 'SDMA_PKT_WRITE_TILED_BC_HEADER_sub_op_mask', - 'SDMA_PKT_WRITE_TILED_BC_HEADER_sub_op_offset', - 'SDMA_PKT_WRITE_TILED_BC_HEADER_sub_op_shift', - 'SDMA_PKT_WRITE_TILED_COUNT_count_mask', - 'SDMA_PKT_WRITE_TILED_COUNT_count_offset', - 'SDMA_PKT_WRITE_TILED_COUNT_count_shift', - 'SDMA_PKT_WRITE_TILED_DATA0_data0_mask', - 'SDMA_PKT_WRITE_TILED_DATA0_data0_offset', - 'SDMA_PKT_WRITE_TILED_DATA0_data0_shift', - 'SDMA_PKT_WRITE_TILED_DST_ADDR_HI_dst_addr_63_32_mask', - 'SDMA_PKT_WRITE_TILED_DST_ADDR_HI_dst_addr_63_32_offset', - 'SDMA_PKT_WRITE_TILED_DST_ADDR_HI_dst_addr_63_32_shift', - 'SDMA_PKT_WRITE_TILED_DST_ADDR_LO_dst_addr_31_0_mask', - 'SDMA_PKT_WRITE_TILED_DST_ADDR_LO_dst_addr_31_0_offset', - 'SDMA_PKT_WRITE_TILED_DST_ADDR_LO_dst_addr_31_0_shift', - 'SDMA_PKT_WRITE_TILED_DW_3_width_mask', - 'SDMA_PKT_WRITE_TILED_DW_3_width_offset', - 'SDMA_PKT_WRITE_TILED_DW_3_width_shift', - 'SDMA_PKT_WRITE_TILED_DW_4_depth_mask', - 'SDMA_PKT_WRITE_TILED_DW_4_depth_offset', - 'SDMA_PKT_WRITE_TILED_DW_4_depth_shift', - 'SDMA_PKT_WRITE_TILED_DW_4_height_mask', - 'SDMA_PKT_WRITE_TILED_DW_4_height_offset', - 'SDMA_PKT_WRITE_TILED_DW_4_height_shift', - 'SDMA_PKT_WRITE_TILED_DW_5_dimension_mask', - 'SDMA_PKT_WRITE_TILED_DW_5_dimension_offset', - 'SDMA_PKT_WRITE_TILED_DW_5_dimension_shift', - 'SDMA_PKT_WRITE_TILED_DW_5_element_size_mask', - 'SDMA_PKT_WRITE_TILED_DW_5_element_size_offset', - 'SDMA_PKT_WRITE_TILED_DW_5_element_size_shift', - 'SDMA_PKT_WRITE_TILED_DW_5_mip_max_mask', - 'SDMA_PKT_WRITE_TILED_DW_5_mip_max_offset', - 'SDMA_PKT_WRITE_TILED_DW_5_mip_max_shift', - 'SDMA_PKT_WRITE_TILED_DW_5_swizzle_mode_mask', - 'SDMA_PKT_WRITE_TILED_DW_5_swizzle_mode_offset', - 'SDMA_PKT_WRITE_TILED_DW_5_swizzle_mode_shift', - 'SDMA_PKT_WRITE_TILED_DW_6_x_mask', - 'SDMA_PKT_WRITE_TILED_DW_6_x_offset', - 'SDMA_PKT_WRITE_TILED_DW_6_x_shift', - 'SDMA_PKT_WRITE_TILED_DW_6_y_mask', - 'SDMA_PKT_WRITE_TILED_DW_6_y_offset', - 'SDMA_PKT_WRITE_TILED_DW_6_y_shift', - 'SDMA_PKT_WRITE_TILED_DW_7_cache_policy_mask', - 'SDMA_PKT_WRITE_TILED_DW_7_cache_policy_offset', - 'SDMA_PKT_WRITE_TILED_DW_7_cache_policy_shift', - 'SDMA_PKT_WRITE_TILED_DW_7_sw_mask', - 'SDMA_PKT_WRITE_TILED_DW_7_sw_offset', - 'SDMA_PKT_WRITE_TILED_DW_7_sw_shift', - 'SDMA_PKT_WRITE_TILED_DW_7_z_mask', - 'SDMA_PKT_WRITE_TILED_DW_7_z_offset', - 'SDMA_PKT_WRITE_TILED_DW_7_z_shift', - 'SDMA_PKT_WRITE_TILED_HEADER_cpv_mask', - 'SDMA_PKT_WRITE_TILED_HEADER_cpv_offset', - 'SDMA_PKT_WRITE_TILED_HEADER_cpv_shift', - 'SDMA_PKT_WRITE_TILED_HEADER_encrypt_mask', - 'SDMA_PKT_WRITE_TILED_HEADER_encrypt_offset', - 'SDMA_PKT_WRITE_TILED_HEADER_encrypt_shift', - 'SDMA_PKT_WRITE_TILED_HEADER_op_mask', - 'SDMA_PKT_WRITE_TILED_HEADER_op_offset', - 'SDMA_PKT_WRITE_TILED_HEADER_op_shift', - 'SDMA_PKT_WRITE_TILED_HEADER_sub_op_mask', - 'SDMA_PKT_WRITE_TILED_HEADER_sub_op_offset', - 'SDMA_PKT_WRITE_TILED_HEADER_sub_op_shift', - 'SDMA_PKT_WRITE_TILED_HEADER_tmz_mask', - 'SDMA_PKT_WRITE_TILED_HEADER_tmz_offset', - 'SDMA_PKT_WRITE_TILED_HEADER_tmz_shift', - 'SDMA_PKT_WRITE_UNTILED_DATA0_data0_mask', - 'SDMA_PKT_WRITE_UNTILED_DATA0_data0_offset', - 'SDMA_PKT_WRITE_UNTILED_DATA0_data0_shift', - 'SDMA_PKT_WRITE_UNTILED_DST_ADDR_HI_dst_addr_63_32_mask', - 'SDMA_PKT_WRITE_UNTILED_DST_ADDR_HI_dst_addr_63_32_offset', - 'SDMA_PKT_WRITE_UNTILED_DST_ADDR_HI_dst_addr_63_32_shift', - 'SDMA_PKT_WRITE_UNTILED_DST_ADDR_LO_dst_addr_31_0_mask', - 'SDMA_PKT_WRITE_UNTILED_DST_ADDR_LO_dst_addr_31_0_offset', - 'SDMA_PKT_WRITE_UNTILED_DST_ADDR_LO_dst_addr_31_0_shift', - 'SDMA_PKT_WRITE_UNTILED_DW_3_cache_policy_mask', - 'SDMA_PKT_WRITE_UNTILED_DW_3_cache_policy_offset', - 'SDMA_PKT_WRITE_UNTILED_DW_3_cache_policy_shift', - 'SDMA_PKT_WRITE_UNTILED_DW_3_count_mask', - 'SDMA_PKT_WRITE_UNTILED_DW_3_count_offset', - 'SDMA_PKT_WRITE_UNTILED_DW_3_count_shift', - 'SDMA_PKT_WRITE_UNTILED_DW_3_sw_mask', - 'SDMA_PKT_WRITE_UNTILED_DW_3_sw_offset', - 'SDMA_PKT_WRITE_UNTILED_DW_3_sw_shift', - 'SDMA_PKT_WRITE_UNTILED_HEADER_cpv_mask', - 'SDMA_PKT_WRITE_UNTILED_HEADER_cpv_offset', - 'SDMA_PKT_WRITE_UNTILED_HEADER_cpv_shift', - 'SDMA_PKT_WRITE_UNTILED_HEADER_encrypt_mask', - 'SDMA_PKT_WRITE_UNTILED_HEADER_encrypt_offset', - 'SDMA_PKT_WRITE_UNTILED_HEADER_encrypt_shift', - 'SDMA_PKT_WRITE_UNTILED_HEADER_op_mask', - 'SDMA_PKT_WRITE_UNTILED_HEADER_op_offset', - 'SDMA_PKT_WRITE_UNTILED_HEADER_op_shift', - 'SDMA_PKT_WRITE_UNTILED_HEADER_sub_op_mask', - 'SDMA_PKT_WRITE_UNTILED_HEADER_sub_op_offset', - 'SDMA_PKT_WRITE_UNTILED_HEADER_sub_op_shift', - 'SDMA_PKT_WRITE_UNTILED_HEADER_tmz_mask', - 'SDMA_PKT_WRITE_UNTILED_HEADER_tmz_offset', - 'SDMA_PKT_WRITE_UNTILED_HEADER_tmz_shift', - 'SDMA_SUBOP_COPY_DIRTY_PAGE', 'SDMA_SUBOP_COPY_LINEAR', - 'SDMA_SUBOP_COPY_LINEAR_BC', 'SDMA_SUBOP_COPY_LINEAR_PHY', - 'SDMA_SUBOP_COPY_LINEAR_RECT', 'SDMA_SUBOP_COPY_LINEAR_SUB_WIND', - 'SDMA_SUBOP_COPY_LINEAR_SUB_WIND_BC', - 'SDMA_SUBOP_COPY_LINEAR_SUB_WIND_LARGE', 'SDMA_SUBOP_COPY_SOA', - 'SDMA_SUBOP_COPY_T2T_SUB_WIND', 'SDMA_SUBOP_COPY_T2T_SUB_WIND_BC', - 'SDMA_SUBOP_COPY_TILED', 'SDMA_SUBOP_COPY_TILED_BC', - 'SDMA_SUBOP_COPY_TILED_SUB_WIND', - 'SDMA_SUBOP_COPY_TILED_SUB_WIND_BC', 'SDMA_SUBOP_DATA_FILL_MULTI', - 'SDMA_SUBOP_MEM_INCR', 'SDMA_SUBOP_POLL_DBIT_WRITE_MEM', - 'SDMA_SUBOP_POLL_MEM_VERIFY', 'SDMA_SUBOP_POLL_REG_WRITE_MEM', - 'SDMA_SUBOP_PTEPDE_COPY', 'SDMA_SUBOP_PTEPDE_COPY_BACKWARDS', - 'SDMA_SUBOP_PTEPDE_GEN', 'SDMA_SUBOP_PTEPDE_RMW', - 'SDMA_SUBOP_TIMESTAMP_GET', 'SDMA_SUBOP_TIMESTAMP_GET_GLOBAL', - 'SDMA_SUBOP_TIMESTAMP_SET', 'SDMA_SUBOP_USER_GCR', - 'SDMA_SUBOP_VM_INVALIDATION', 'SDMA_SUBOP_WRITE_LINEAR', - 'SDMA_SUBOP_WRITE_TILED', 'SDMA_SUBOP_WRITE_TILED_BC', - 'SEC_GSP0_PRIORITY_HIGH', 'SEC_GSP0_PRIORITY_LOW', 'SEGMENTS_1', - 'SEGMENTS_128', 'SEGMENTS_16', 'SEGMENTS_2', 'SEGMENTS_32', - 'SEGMENTS_4', 'SEGMENTS_64', 'SEGMENTS_8', 'SEL_DTBCLK0', - 'SEL_DTBCLK1', 'SEL_REFCLK0', 'SEM_ECC_ERROR', 'SEM_PERF_SEL', - 'SEM_PERF_SEL_ACP_REQ_SIGNAL', 'SEM_PERF_SEL_ACP_REQ_WAIT', - 'SEM_PERF_SEL_ATC_INVALIDATION', 'SEM_PERF_SEL_ATC_REQ', - 'SEM_PERF_SEL_ATC_RET', 'SEM_PERF_SEL_ATC_VM_INVALIDATION', - 'SEM_PERF_SEL_ATC_XNACK', 'SEM_PERF_SEL_CPC1_IMME_E0_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC1_IMME_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_IMME_E1_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC1_IMME_E1_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_IMME_E2_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC1_IMME_E2_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_IMME_E3_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC1_IMME_E3_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E0_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E10_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E10_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E11_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E11_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E12_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E12_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E13_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E13_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E14_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E14_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E15_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E15_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E16_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E16_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E17_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E17_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E18_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E18_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E19_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E19_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E1_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E1_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E20_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E20_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E21_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E21_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E22_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E22_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E23_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E23_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E24_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E24_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E25_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E25_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E26_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E26_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E27_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E27_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E28_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E28_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E29_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E29_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E2_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E2_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E30_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E30_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E31_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E31_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E3_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E3_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E4_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E4_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E5_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E5_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E6_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E6_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E7_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E7_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E8_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E8_REQ_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E9_POLL_WAIT', - 'SEM_PERF_SEL_CPC1_OFFL_E9_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_IMME_E0_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC2_IMME_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_IMME_E1_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC2_IMME_E1_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_IMME_E2_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC2_IMME_E2_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_IMME_E3_REQ_SIGNAL', - 'SEM_PERF_SEL_CPC2_IMME_E3_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E0_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E10_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E10_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E11_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E11_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E12_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E12_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E13_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E13_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E14_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E14_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E15_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E15_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E16_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E16_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E17_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E17_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E18_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E18_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E19_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E19_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E1_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E1_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E20_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E20_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E21_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E21_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E22_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E22_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E23_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E23_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E24_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E24_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E25_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E25_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E26_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E26_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E27_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E27_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E28_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E28_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E29_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E29_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E2_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E2_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E30_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E30_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E31_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E31_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E3_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E3_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E4_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E4_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E5_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E5_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E6_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E6_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E7_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E7_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E8_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E8_REQ_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E9_POLL_WAIT', - 'SEM_PERF_SEL_CPC2_OFFL_E9_REQ_WAIT', - 'SEM_PERF_SEL_CPG_E0_REQ_SIGNAL', 'SEM_PERF_SEL_CPG_E0_REQ_WAIT', - 'SEM_PERF_SEL_CPG_E1_REQ_SIGNAL', 'SEM_PERF_SEL_CPG_E1_REQ_WAIT', - 'SEM_PERF_SEL_CYCLE', 'SEM_PERF_SEL_IDLE', - 'SEM_PERF_SEL_ISP_REQ_SIGNAL', 'SEM_PERF_SEL_ISP_REQ_WAIT', - 'SEM_PERF_SEL_MC_RD_REQ', 'SEM_PERF_SEL_MC_RD_RET', - 'SEM_PERF_SEL_MC_WR_REQ', 'SEM_PERF_SEL_MC_WR_RET', - 'SEM_PERF_SEL_SDMA0_REQ_SIGNAL', 'SEM_PERF_SEL_SDMA0_REQ_WAIT', - 'SEM_PERF_SEL_SDMA1_REQ_SIGNAL', 'SEM_PERF_SEL_SDMA1_REQ_WAIT', - 'SEM_PERF_SEL_SDMA2_REQ_SIGNAL', 'SEM_PERF_SEL_SDMA2_REQ_WAIT', - 'SEM_PERF_SEL_SDMA3_REQ_SIGNAL', 'SEM_PERF_SEL_SDMA3_REQ_WAIT', - 'SEM_PERF_SEL_UVD1_REQ_SIGNAL', 'SEM_PERF_SEL_UVD1_REQ_WAIT', - 'SEM_PERF_SEL_UVD_REQ_SIGNAL', 'SEM_PERF_SEL_UVD_REQ_WAIT', - 'SEM_PERF_SEL_VCE0_REQ_SIGNAL', 'SEM_PERF_SEL_VCE0_REQ_WAIT', - 'SEM_PERF_SEL_VCE1_REQ_SIGNAL', 'SEM_PERF_SEL_VCE1_REQ_WAIT', - 'SEM_PERF_SEL_VP8_REQ_SIGNAL', 'SEM_PERF_SEL_VP8_REQ_WAIT', - 'SEM_RESP_FAILED', 'SEM_RESP_PASSED', 'SEM_TRANS_ERROR', - 'SEND_AT_EARLIEST_TIME', 'SEND_AT_LINK_NUMBER', - 'SEND_NORMAL_PACKET', 'SEND_PPS_PACKET', 'SET_SMU_MSG_INTR', - 'SH_MEM_ADDRESS_MODE', 'SH_MEM_ADDRESS_MODE_32', - 'SH_MEM_ADDRESS_MODE_64', 'SH_MEM_ALIGNMENT_MODE', - 'SH_MEM_ALIGNMENT_MODE_DWORD', - 'SH_MEM_ALIGNMENT_MODE_DWORD_STRICT', - 'SH_MEM_ALIGNMENT_MODE_STRICT', 'SH_MEM_ALIGNMENT_MODE_UNALIGNED', - 'SIGNED', 'SIMM16_WAITCNT_DEPCTR_HOLD_CNT_SIZE', - 'SIMM16_WAITCNT_DEPCTR_HOLD_CNT_START', - 'SIMM16_WAITCNT_DEPCTR_SA_SDST_SIZE', - 'SIMM16_WAITCNT_DEPCTR_SA_SDST_START', - 'SIMM16_WAITCNT_DEPCTR_VA_SDST_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VA_SDST_START', - 'SIMM16_WAITCNT_DEPCTR_VA_SSRC_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VA_SSRC_START', - 'SIMM16_WAITCNT_DEPCTR_VA_VCC_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VA_VCC_START', - 'SIMM16_WAITCNT_DEPCTR_VA_VDST_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VA_VDST_START', - 'SIMM16_WAITCNT_DEPCTR_VM_VSRC_SIZE', - 'SIMM16_WAITCNT_DEPCTR_VM_VSRC_START', - 'SIMM16_WAITCNT_EXP_CNT_SIZE', 'SIMM16_WAITCNT_EXP_CNT_START', - 'SIMM16_WAITCNT_LGKM_CNT_SIZE', 'SIMM16_WAITCNT_LGKM_CNT_START', - 'SIMM16_WAITCNT_VM_CNT_SIZE', 'SIMM16_WAITCNT_VM_CNT_START', - 'SIMM16_WAIT_EVENT_EXP_RDY_SIZE', - 'SIMM16_WAIT_EVENT_EXP_RDY_START', 'SIZE_16K', 'SIZE_8K', - 'SLVERR', 'SMUIO_BASE', 'SMUIO_BASE__INST0_SEG0', - 'SMUIO_BASE__INST0_SEG1', 'SMUIO_BASE__INST0_SEG2', - 'SMUIO_BASE__INST0_SEG3', 'SMUIO_BASE__INST0_SEG4', - 'SMUIO_BASE__INST1_SEG0', 'SMUIO_BASE__INST1_SEG1', - 'SMUIO_BASE__INST1_SEG2', 'SMUIO_BASE__INST1_SEG3', - 'SMUIO_BASE__INST1_SEG4', 'SMUIO_BASE__INST2_SEG0', - 'SMUIO_BASE__INST2_SEG1', 'SMUIO_BASE__INST2_SEG2', - 'SMUIO_BASE__INST2_SEG3', 'SMUIO_BASE__INST2_SEG4', - 'SMUIO_BASE__INST3_SEG0', 'SMUIO_BASE__INST3_SEG1', - 'SMUIO_BASE__INST3_SEG2', 'SMUIO_BASE__INST3_SEG3', - 'SMUIO_BASE__INST3_SEG4', 'SMUIO_BASE__INST4_SEG0', - 'SMUIO_BASE__INST4_SEG1', 'SMUIO_BASE__INST4_SEG2', - 'SMUIO_BASE__INST4_SEG3', 'SMUIO_BASE__INST4_SEG4', - 'SMUIO_BASE__INST5_SEG0', 'SMUIO_BASE__INST5_SEG1', - 'SMUIO_BASE__INST5_SEG2', 'SMUIO_BASE__INST5_SEG3', - 'SMUIO_BASE__INST5_SEG4', 'SMUIO_BASE__INST6_SEG0', - 'SMUIO_BASE__INST6_SEG1', 'SMUIO_BASE__INST6_SEG2', - 'SMUIO_BASE__INST6_SEG3', 'SMUIO_BASE__INST6_SEG4', 'SMU_INTR', - 'SMU_INTR_STATUS_CLEAR', 'SMU_INTR_STATUS_NOOP', - 'SMU_MSG_INTR_NOOP', 'SM_MODE_RESERVED', 'SOFT_RESET', - 'SOFT_RESET_0', 'SOFT_RESET_1', 'SO_VGTSTREAMOUT_FLUSH', - 'SPI_FOG_EXP', 'SPI_FOG_EXP2', 'SPI_FOG_LINEAR', 'SPI_FOG_MODE', - 'SPI_FOG_NONE', 'SPI_LB_WAVES_RSVD', 'SPI_LB_WAVES_SELECT', - 'SPI_PERFCNT_SEL', 'SPI_PERF_BUSY', 'SPI_PERF_CSGN_BUSY', - 'SPI_PERF_CSGN_CRAWLER_STALL', 'SPI_PERF_CSGN_EVENT_WAVE', - 'SPI_PERF_CSGN_NUM_THREADGROUPS', 'SPI_PERF_CSGN_PWS_STALL', - 'SPI_PERF_CSGN_WAVE', 'SPI_PERF_CSGN_WINDOW_VALID', - 'SPI_PERF_CSN_BUSY', 'SPI_PERF_CSN_CRAWLER_STALL', - 'SPI_PERF_CSN_EVENT_WAVE', 'SPI_PERF_CSN_NUM_THREADGROUPS', - 'SPI_PERF_CSN_WAVE', 'SPI_PERF_CSN_WINDOW_VALID', - 'SPI_PERF_EXPORT_DB0_STALL', 'SPI_PERF_EXPORT_DB1_STALL', - 'SPI_PERF_EXPORT_DB2_STALL', 'SPI_PERF_EXPORT_DB3_STALL', - 'SPI_PERF_EXPORT_DB4_STALL', 'SPI_PERF_EXPORT_DB5_STALL', - 'SPI_PERF_EXPORT_DB6_STALL', 'SPI_PERF_EXPORT_DB7_STALL', - 'SPI_PERF_EXPORT_SCB0_STALL', 'SPI_PERF_EXPORT_SCB1_STALL', - 'SPI_PERF_EXPORT_SCB2_STALL', 'SPI_PERF_EXPORT_SCB3_STALL', - 'SPI_PERF_EXP_ARB_COL_CNT', 'SPI_PERF_EXP_ARB_GDS_CNT', - 'SPI_PERF_EXP_ARB_IDX_CNT', 'SPI_PERF_EXP_ARB_POS_CNT', - 'SPI_PERF_EXP_THROT_CAUSALITY_DETECTED', - 'SPI_PERF_EXP_THROT_DOWNSTEP', 'SPI_PERF_EXP_THROT_UPSTEP', - 'SPI_PERF_EXP_WITH_CONFLICT', 'SPI_PERF_EXP_WITH_CONFLICT_CLEAR', - 'SPI_PERF_GS_BUSY', 'SPI_PERF_GS_CRAWLER_STALL', - 'SPI_PERF_GS_EVENT_WAVE', 'SPI_PERF_GS_EXP_DONE', - 'SPI_PERF_GS_FIRST_SUBGRP', 'SPI_PERF_GS_HS_DEALLOC', - 'SPI_PERF_GS_INDX0_STALL', 'SPI_PERF_GS_INDX1_STALL', - 'SPI_PERF_GS_NGG_SE_LATE_ALLOC_LIMIT', - 'SPI_PERF_GS_NGG_SE_SEND_GS_ALLOC', - 'SPI_PERF_GS_NGG_STALL_MSG_VAL', 'SPI_PERF_GS_PERS_UPD_FULL0', - 'SPI_PERF_GS_PERS_UPD_FULL1', 'SPI_PERF_GS_POS0_STALL', - 'SPI_PERF_GS_POS1_STALL', 'SPI_PERF_GS_PWS_STALL', - 'SPI_PERF_GS_WAVE', 'SPI_PERF_GS_WINDOW_VALID', - 'SPI_PERF_HS_BUSY', 'SPI_PERF_HS_CRAWLER_STALL', - 'SPI_PERF_HS_EVENT_WAVE', 'SPI_PERF_HS_FIRST_WAVE', - 'SPI_PERF_HS_OFFCHIP_LDS_STALL', 'SPI_PERF_HS_PERS_UPD_FULL0', - 'SPI_PERF_HS_PERS_UPD_FULL1', 'SPI_PERF_HS_PWS_STALL', - 'SPI_PERF_HS_WAVE', 'SPI_PERF_HS_WINDOW_VALID', - 'SPI_PERF_NUM_EXPGRANT_EXPORTS', - 'SPI_PERF_NUM_GDS_SA0SQ0_EXPORTS', - 'SPI_PERF_NUM_GDS_SA0SQ1_EXPORTS', - 'SPI_PERF_NUM_GDS_SA1SQ0_EXPORTS', - 'SPI_PERF_NUM_GDS_SA1SQ1_EXPORTS', - 'SPI_PERF_NUM_POS_SA0SQ0_EXPORTS', - 'SPI_PERF_NUM_POS_SA0SQ1_EXPORTS', - 'SPI_PERF_NUM_POS_SA1SQ0_EXPORTS', - 'SPI_PERF_NUM_POS_SA1SQ1_EXPORTS', - 'SPI_PERF_NUM_PS_COL_SA0SQ0_EXPORTS', - 'SPI_PERF_NUM_PS_COL_SA0SQ1_EXPORTS', - 'SPI_PERF_NUM_PS_COL_SA1SQ0_EXPORTS', - 'SPI_PERF_NUM_PS_COL_SA1SQ1_EXPORTS', - 'SPI_PERF_PIX_ALLOC_PEND_CNT', 'SPI_PERF_PS0_2_WAVE_GROUPS', - 'SPI_PERF_PS0_ACTIVE', 'SPI_PERF_PS0_BUSY', - 'SPI_PERF_PS0_CRAWLER_STALL', 'SPI_PERF_PS0_DEALLOC', - 'SPI_PERF_PS0_EVENT_WAVE', 'SPI_PERF_PS0_EXP_ALLOC_WITH_CONFLICT', - 'SPI_PERF_PS0_OPT_WAVE', 'SPI_PERF_PS0_PRIM_BIN0', - 'SPI_PERF_PS0_PRIM_BIN1', 'SPI_PERF_PS0_WAVE', - 'SPI_PERF_PS0_WAVEID_STARVED', - 'SPI_PERF_PS0_WAVE_GROUP_CLOCK_DELAY', - 'SPI_PERF_PS0_WAVE_GROUP_TIMEOUTS', 'SPI_PERF_PS0_WINDOW_VALID', - 'SPI_PERF_PS1_2_WAVE_GROUPS', 'SPI_PERF_PS1_ACTIVE', - 'SPI_PERF_PS1_BUSY', 'SPI_PERF_PS1_CRAWLER_STALL', - 'SPI_PERF_PS1_DEALLOC', 'SPI_PERF_PS1_EVENT_WAVE', - 'SPI_PERF_PS1_EXP_ALLOC_WITH_CONFLICT', 'SPI_PERF_PS1_OPT_WAVE', - 'SPI_PERF_PS1_PRIM_BIN0', 'SPI_PERF_PS1_PRIM_BIN1', - 'SPI_PERF_PS1_WAVE', 'SPI_PERF_PS1_WAVEID_STARVED', - 'SPI_PERF_PS1_WAVE_GROUP_CLOCK_DELAY', - 'SPI_PERF_PS1_WAVE_GROUP_TIMEOUTS', 'SPI_PERF_PS1_WINDOW_VALID', - 'SPI_PERF_PS2_2_WAVE_GROUPS', 'SPI_PERF_PS2_ACTIVE', - 'SPI_PERF_PS2_BUSY', 'SPI_PERF_PS2_CRAWLER_STALL', - 'SPI_PERF_PS2_DEALLOC', 'SPI_PERF_PS2_EVENT_WAVE', - 'SPI_PERF_PS2_EXP_ALLOC_WITH_CONFLICT', 'SPI_PERF_PS2_OPT_WAVE', - 'SPI_PERF_PS2_PRIM_BIN0', 'SPI_PERF_PS2_PRIM_BIN1', - 'SPI_PERF_PS2_WAVE', 'SPI_PERF_PS2_WAVEID_STARVED', - 'SPI_PERF_PS2_WAVE_GROUP_CLOCK_DELAY', - 'SPI_PERF_PS2_WAVE_GROUP_TIMEOUTS', 'SPI_PERF_PS2_WINDOW_VALID', - 'SPI_PERF_PS3_2_WAVE_GROUPS', 'SPI_PERF_PS3_ACTIVE', - 'SPI_PERF_PS3_BUSY', 'SPI_PERF_PS3_CRAWLER_STALL', - 'SPI_PERF_PS3_DEALLOC', 'SPI_PERF_PS3_EVENT_WAVE', - 'SPI_PERF_PS3_EXP_ALLOC_WITH_CONFLICT', 'SPI_PERF_PS3_OPT_WAVE', - 'SPI_PERF_PS3_PRIM_BIN0', 'SPI_PERF_PS3_PRIM_BIN1', - 'SPI_PERF_PS3_WAVE', 'SPI_PERF_PS3_WAVEID_STARVED', - 'SPI_PERF_PS3_WAVE_GROUP_CLOCK_DELAY', - 'SPI_PERF_PS3_WAVE_GROUP_TIMEOUTS', 'SPI_PERF_PS3_WINDOW_VALID', - 'SPI_PERF_PS_EXP_ALLOC', 'SPI_PERF_PS_EXP_ARB_CONFLICT', - 'SPI_PERF_PS_EXP_DONE', 'SPI_PERF_PS_PERS_UPD_FULL0', - 'SPI_PERF_PS_PERS_UPD_FULL1', 'SPI_PERF_PS_PWS_STALL', - 'SPI_PERF_RA_ACCUM0_SIMD_FULL_CSG', - 'SPI_PERF_RA_ACCUM0_SIMD_FULL_CSN', - 'SPI_PERF_RA_ACCUM0_SIMD_FULL_GS', - 'SPI_PERF_RA_ACCUM0_SIMD_FULL_HS', - 'SPI_PERF_RA_ACCUM0_SIMD_FULL_PS', - 'SPI_PERF_RA_ACCUM1_SIMD_FULL_CSG', - 'SPI_PERF_RA_ACCUM1_SIMD_FULL_CSN', - 'SPI_PERF_RA_ACCUM1_SIMD_FULL_GS', - 'SPI_PERF_RA_ACCUM1_SIMD_FULL_HS', - 'SPI_PERF_RA_ACCUM1_SIMD_FULL_PS', - 'SPI_PERF_RA_ACCUM2_SIMD_FULL_CSG', - 'SPI_PERF_RA_ACCUM2_SIMD_FULL_CSN', - 'SPI_PERF_RA_ACCUM2_SIMD_FULL_GS', - 'SPI_PERF_RA_ACCUM2_SIMD_FULL_HS', - 'SPI_PERF_RA_ACCUM2_SIMD_FULL_PS', - 'SPI_PERF_RA_ACCUM3_SIMD_FULL_CSG', - 'SPI_PERF_RA_ACCUM3_SIMD_FULL_CSN', - 'SPI_PERF_RA_ACCUM3_SIMD_FULL_GS', - 'SPI_PERF_RA_ACCUM3_SIMD_FULL_HS', - 'SPI_PERF_RA_ACCUM3_SIMD_FULL_PS', 'SPI_PERF_RA_BAR_CU_FULL_CSG', - 'SPI_PERF_RA_BAR_CU_FULL_CSN', 'SPI_PERF_RA_BAR_CU_FULL_HS', - 'SPI_PERF_RA_BULKY_CU_FULL_CSG', 'SPI_PERF_RA_BULKY_CU_FULL_CSN', - 'SPI_PERF_RA_CSC_UNDER_TUNNEL', 'SPI_PERF_RA_CSG_LOCK', - 'SPI_PERF_RA_CSN_LOCK', 'SPI_PERF_RA_GFX_UNDER_TUNNEL', - 'SPI_PERF_RA_GS_LOCK', 'SPI_PERF_RA_HS_LOCK', - 'SPI_PERF_RA_LDS_CU_FULL_CSG', 'SPI_PERF_RA_LDS_CU_FULL_CSN', - 'SPI_PERF_RA_LDS_CU_FULL_GS', 'SPI_PERF_RA_LDS_CU_FULL_HS', - 'SPI_PERF_RA_LDS_CU_FULL_PS', 'SPI_PERF_RA_PIPE_REQ_BIN2', - 'SPI_PERF_RA_PRE_ALLOC_STALL', 'SPI_PERF_RA_REQ_NO_ALLOC', - 'SPI_PERF_RA_REQ_NO_ALLOC_CSG', 'SPI_PERF_RA_REQ_NO_ALLOC_CSN', - 'SPI_PERF_RA_REQ_NO_ALLOC_GS', 'SPI_PERF_RA_REQ_NO_ALLOC_HS', - 'SPI_PERF_RA_REQ_NO_ALLOC_PS', 'SPI_PERF_RA_RES_STALL_CSG', - 'SPI_PERF_RA_RES_STALL_CSN', 'SPI_PERF_RA_RES_STALL_GS', - 'SPI_PERF_RA_RES_STALL_HS', 'SPI_PERF_RA_RES_STALL_PS', - 'SPI_PERF_RA_RSV_UPD', 'SPI_PERF_RA_TASK_REQ_BIN3', - 'SPI_PERF_RA_TGLIM_CU_FULL_CSG', 'SPI_PERF_RA_TGLIM_CU_FULL_CSN', - 'SPI_PERF_RA_TMP_STALL_CSG', 'SPI_PERF_RA_TMP_STALL_CSN', - 'SPI_PERF_RA_TMP_STALL_GS', 'SPI_PERF_RA_TMP_STALL_HS', - 'SPI_PERF_RA_TMP_STALL_PS', 'SPI_PERF_RA_VGPR_SIMD_FULL_CSG', - 'SPI_PERF_RA_VGPR_SIMD_FULL_CSN', 'SPI_PERF_RA_VGPR_SIMD_FULL_GS', - 'SPI_PERF_RA_VGPR_SIMD_FULL_HS', 'SPI_PERF_RA_VGPR_SIMD_FULL_PS', - 'SPI_PERF_RA_WAVE_SIMD_FULL_CSG', - 'SPI_PERF_RA_WAVE_SIMD_FULL_CSN', 'SPI_PERF_RA_WAVE_SIMD_FULL_GS', - 'SPI_PERF_RA_WAVE_SIMD_FULL_HS', 'SPI_PERF_RA_WAVE_SIMD_FULL_PS', - 'SPI_PERF_RA_WR_CTL_FULL', 'SPI_PERF_RA_WVALLOC_STALL', - 'SPI_PERF_RA_WVLIM_STALL_CSG', 'SPI_PERF_RA_WVLIM_STALL_CSN', - 'SPI_PERF_RA_WVLIM_STALL_GS', 'SPI_PERF_RA_WVLIM_STALL_HS', - 'SPI_PERF_RA_WVLIM_STALL_PS', 'SPI_PERF_SWC_CSGN_WR', - 'SPI_PERF_SWC_CSN_WR', 'SPI_PERF_SWC_GS_WR', 'SPI_PERF_SWC_HS_WR', - 'SPI_PERF_SWC_PS_WR', 'SPI_PERF_VWC_CSGN_WR', - 'SPI_PERF_VWC_CSN_WR', 'SPI_PERF_VWC_ES_WR', 'SPI_PERF_VWC_GS_WR', - 'SPI_PERF_VWC_HS_WR', 'SPI_PERF_VWC_LS_WR', 'SPI_PERF_VWC_PS_WR', - 'SPI_PNT_SPRITE_OVERRIDE', 'SPI_PNT_SPRITE_SEL_0', - 'SPI_PNT_SPRITE_SEL_1', 'SPI_PNT_SPRITE_SEL_NONE', - 'SPI_PNT_SPRITE_SEL_S', 'SPI_PNT_SPRITE_SEL_T', - 'SPI_PS_LDS_GROUP_1', 'SPI_PS_LDS_GROUP_2', 'SPI_PS_LDS_GROUP_4', - 'SPI_PS_LDS_GROUP_SIZE', 'SPI_SAMPLE_CNTL', 'SPI_SHADER_1COMP', - 'SPI_SHADER_2COMP', 'SPI_SHADER_32_ABGR', 'SPI_SHADER_32_AR', - 'SPI_SHADER_32_GR', 'SPI_SHADER_32_R', 'SPI_SHADER_4COMP', - 'SPI_SHADER_4COMPRESS', 'SPI_SHADER_EX_FORMAT', - 'SPI_SHADER_FORMAT', 'SPI_SHADER_FP16_ABGR', 'SPI_SHADER_NONE', - 'SPI_SHADER_SINT16_ABGR', 'SPI_SHADER_SNORM16_ABGR', - 'SPI_SHADER_UINT16_ABGR', 'SPI_SHADER_UNORM16_ABGR', - 'SPI_SHADER_ZERO', 'SPM_PERFMON_STATE', 'SPRITE_EN', - 'SP_PERF_SEL_DST_BUF_ALLOC_STALL', - 'SP_PERF_SEL_DST_BUF_EVEN_DIRTY', 'SP_PERF_SEL_DST_BUF_ODD_DIRTY', - 'SP_PERF_SEL_DST_BUF_WB_CONF_W_SPI', - 'SP_PERF_SEL_DST_BUF_WB_CONF_W_TD_LDS', 'SP_PERF_SEL_DUMMY_LAST', - 'SP_PERF_SEL_SRC_CACHE_HIT_B0', 'SP_PERF_SEL_SRC_CACHE_HIT_B1', - 'SP_PERF_SEL_SRC_CACHE_HIT_B2', 'SP_PERF_SEL_SRC_CACHE_HIT_B3', - 'SP_PERF_SEL_SRC_CACHE_PROBE_B0', - 'SP_PERF_SEL_SRC_CACHE_PROBE_B1', - 'SP_PERF_SEL_SRC_CACHE_PROBE_B2', - 'SP_PERF_SEL_SRC_CACHE_PROBE_B3', - 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B0', - 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B1', - 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B2', - 'SP_PERF_SEL_SRC_CACHE_PROBE_SUCCESS_B3', - 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B0', - 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B1', - 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B2', - 'SP_PERF_SEL_SRC_CACHE_RECYCLE_HIT_B3', - 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B0', - 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B1', - 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B2', - 'SP_PERF_SEL_SRC_CACHE_VGPR_RD_B3', - 'SP_PERF_SEL_VALU_COEXEC_WITH_TRANS', - 'SP_PERF_SEL_VALU_EXEC_MASK_CHANGE', - 'SP_PERF_SEL_VALU_FAST_OP_STALL_VGPR_NOT_READY', - 'SP_PERF_SEL_VALU_OPERAND', - 'SP_PERF_SEL_VALU_OPERAND_FROM_DST_BUF', - 'SP_PERF_SEL_VALU_PENDING_QUEUE_STALL', - 'SP_PERF_SEL_VALU_SGPR_FWD_BUF_FULL', 'SP_PERF_SEL_VALU_STALL', - 'SP_PERF_SEL_VALU_STALL_DST_STALL', - 'SP_PERF_SEL_VALU_STALL_SDST_FWD', - 'SP_PERF_SEL_VALU_STALL_SGPR_NOT_READY', - 'SP_PERF_SEL_VALU_STALL_VDST_FWD', - 'SP_PERF_SEL_VALU_STALL_VGPR_NOT_READY', - 'SP_PERF_SEL_VALU_VGPR_OPERAND', 'SP_PERF_SEL_VGPR_EXP_RD', - 'SP_PERF_SEL_VGPR_RD', 'SP_PERF_SEL_VGPR_SPI_WR', - 'SP_PERF_SEL_VGPR_TDLDS_DATA_WR', 'SP_PERF_SEL_VGPR_VMEM_RD', - 'SP_PERF_SEL_VGPR_WR', 'SQC_PERF_SEL_DCACHE_BUSY_CYCLES', - 'SQC_PERF_SEL_DCACHE_CACHE_STALLED', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_INFLIGHT_MAX', - 'SQC_PERF_SEL_DCACHE_CACHE_STALL_OUTPUT', - 'SQC_PERF_SEL_DCACHE_FLAT_REQ', 'SQC_PERF_SEL_DCACHE_GCR', - 'SQC_PERF_SEL_DCACHE_GCR_HITS', - 'SQC_PERF_SEL_DCACHE_GCR_INVALIDATE', 'SQC_PERF_SEL_DCACHE_HITS', - 'SQC_PERF_SEL_DCACHE_HIT_LRU_READ', - 'SQC_PERF_SEL_DCACHE_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_DCACHE_INPUT_STALL_ARB_NO_GRANT', - 'SQC_PERF_SEL_DCACHE_INPUT_STALL_BANK_READYB', - 'SQC_PERF_SEL_DCACHE_INPUT_VALID_READYB', - 'SQC_PERF_SEL_DCACHE_INVAL_ASYNC', - 'SQC_PERF_SEL_DCACHE_INVAL_INST', 'SQC_PERF_SEL_DCACHE_MISSES', - 'SQC_PERF_SEL_DCACHE_MISSES_DUPLICATE', 'SQC_PERF_SEL_DCACHE_REQ', - 'SQC_PERF_SEL_DCACHE_REQ_ATC_PROBE', - 'SQC_PERF_SEL_DCACHE_REQ_READ_1', - 'SQC_PERF_SEL_DCACHE_REQ_READ_16', - 'SQC_PERF_SEL_DCACHE_REQ_READ_2', - 'SQC_PERF_SEL_DCACHE_REQ_READ_4', - 'SQC_PERF_SEL_DCACHE_REQ_READ_8', - 'SQC_PERF_SEL_DCACHE_SPI_RETURN_STALL', - 'SQC_PERF_SEL_DCACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 'SQC_PERF_SEL_DCACHE_TC_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_DUMMY_LAST', 'SQC_PERF_SEL_ICACHE_BUSY_CYCLES', - 'SQC_PERF_SEL_ICACHE_CACHE_STALLED', - 'SQC_PERF_SEL_ICACHE_CACHE_STALL_INFLIGHT_MAX', - 'SQC_PERF_SEL_ICACHE_GCR', 'SQC_PERF_SEL_ICACHE_GCR_HITS', - 'SQC_PERF_SEL_ICACHE_GCR_INVALIDATE', 'SQC_PERF_SEL_ICACHE_HITS', - 'SQC_PERF_SEL_ICACHE_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_ICACHE_INPUT_STALL_ARB_NO_GRANT', - 'SQC_PERF_SEL_ICACHE_INPUT_STALL_BANK_READYB', - 'SQC_PERF_SEL_ICACHE_INPUT_VALID_READYB', - 'SQC_PERF_SEL_ICACHE_INVAL_ASYNC', - 'SQC_PERF_SEL_ICACHE_INVAL_INST', 'SQC_PERF_SEL_ICACHE_MISSES', - 'SQC_PERF_SEL_ICACHE_MISSES_DUPLICATE', 'SQC_PERF_SEL_ICACHE_REQ', - 'SQC_PERF_SEL_ICACHE_STALL_OUTXBAR_ARB_NO_GRANT', - 'SQC_PERF_SEL_ICACHE_TC_INFLIGHT_LEVEL', - 'SQC_PERF_SEL_LDS_ADDR_ACTIVE', 'SQC_PERF_SEL_LDS_ADDR_CONFLICT', - 'SQC_PERF_SEL_LDS_ADDR_STALL', 'SQC_PERF_SEL_LDS_ATOMIC_RETURN', - 'SQC_PERF_SEL_LDS_BANK_CONFLICT', - 'SQC_PERF_SEL_LDS_FP_ADD_CYCLES', 'SQC_PERF_SEL_LDS_IDX_ACTIVE', - 'SQC_PERF_SEL_LDS_LDS_VGPR_WRITE_STALL', - 'SQC_PERF_SEL_LDS_MEM_VIOLATIONS', - 'SQC_PERF_SEL_LDS_PC_LDS_WRITE_STALL_TD', - 'SQC_PERF_SEL_LDS_SPI_VGPR_WRITE_STALL_TD', - 'SQC_PERF_SEL_LDS_TD_VGPR_CONF_STALL', - 'SQC_PERF_SEL_LDS_UNALIGNED_STALL', 'SQC_PERF_SEL_LDS_VGPR_BUSY', - 'SQC_PERF_SEL_SQ_DCACHE_REQS', 'SQC_PERF_SEL_TC_DATA_READ_REQ', - 'SQC_PERF_SEL_TC_INFLIGHT_LEVEL', 'SQC_PERF_SEL_TC_INST_REQ', - 'SQC_PERF_SEL_TC_REQ', 'SQC_PERF_SEL_TC_STALL', - 'SQC_PERF_SEL_TC_STARVE', 'SQC_PERF_SEL_TD_VGPR_BUSY', - 'SQDEC_BEGIN', 'SQDEC_END', 'SQGFXUDEC_BEGIN', 'SQGFXUDEC_END', - 'SQG_PERF_SEL', 'SQG_PERF_SEL_ACCUM_PREV', - 'SQG_PERF_SEL_BUSY_CYCLES', 'SQG_PERF_SEL_CYCLES', - 'SQG_PERF_SEL_DUMMY_LAST', 'SQG_PERF_SEL_EVENTS', - 'SQG_PERF_SEL_EXP_BUS0_BUSY', 'SQG_PERF_SEL_EXP_BUS1_BUSY', - 'SQG_PERF_SEL_EXP_REQ0_BUS_BUSY', - 'SQG_PERF_SEL_EXP_REQ1_BUS_BUSY', 'SQG_PERF_SEL_ITEMS', - 'SQG_PERF_SEL_LEVEL_WAVES', 'SQG_PERF_SEL_MSG', - 'SQG_PERF_SEL_MSG_BUS_BUSY', 'SQG_PERF_SEL_MSG_INTERRUPT', - 'SQG_PERF_SEL_NONE', 'SQG_PERF_SEL_PS_QUADS', - 'SQG_PERF_SEL_TTRACE_INFLIGHT_REQS', - 'SQG_PERF_SEL_TTRACE_LOST_PACKETS', 'SQG_PERF_SEL_TTRACE_REQS', - 'SQG_PERF_SEL_TTRACE_STALL', 'SQG_PERF_SEL_WAVE32_ITEMS', - 'SQG_PERF_SEL_WAVE64_ITEMS', 'SQG_PERF_SEL_WAVES', - 'SQG_PERF_SEL_WAVES_32', 'SQG_PERF_SEL_WAVES_64', - 'SQG_PERF_SEL_WAVES_EQ_32', 'SQG_PERF_SEL_WAVES_EQ_64', - 'SQG_PERF_SEL_WAVES_INITIAL_PREFETCH', 'SQG_PERF_SEL_WAVES_LT_16', - 'SQG_PERF_SEL_WAVES_LT_32', 'SQG_PERF_SEL_WAVES_LT_48', - 'SQG_PERF_SEL_WAVES_LT_64', 'SQG_PERF_SEL_WAVES_RESTORED', - 'SQG_PERF_SEL_WAVES_SAVED', 'SQG_PERF_SEL_WAVE_CYCLES', - 'SQIND_GLOBAL_REGS_OFFSET', 'SQIND_GLOBAL_REGS_SIZE', - 'SQIND_LOCAL_REGS_OFFSET', 'SQIND_LOCAL_REGS_SIZE', - 'SQIND_WAVE_HWREGS_OFFSET', 'SQIND_WAVE_HWREGS_SIZE', - 'SQIND_WAVE_SGPRS_OFFSET', 'SQIND_WAVE_SGPRS_SIZE', - 'SQIND_WAVE_VGPRS_OFFSET', 'SQIND_WAVE_VGPRS_SIZE', - 'SQPERFDDEC_BEGIN', 'SQPERFDDEC_END', 'SQPERFSDEC_BEGIN', - 'SQPERFSDEC_END', 'SQPWRDEC_BEGIN', 'SQPWRDEC_END', - 'SQ_CAC_POWER_ALU_BUSY', 'SQ_CAC_POWER_GPR_RD', - 'SQ_CAC_POWER_GPR_WR', 'SQ_CAC_POWER_LDS_BUSY', - 'SQ_CAC_POWER_SEL', 'SQ_CAC_POWER_TEX_BUSY', 'SQ_CAC_POWER_VALU', - 'SQ_CAC_POWER_VALU0', 'SQ_CAC_POWER_VALU1', 'SQ_CAC_POWER_VALU2', - 'SQ_DISPATCHER_GFX_CNT_PER_RING', 'SQ_DISPATCHER_GFX_MIN', - 'SQ_EDC_FUE_CNTL_LDS', 'SQ_EDC_FUE_CNTL_SIMD0', - 'SQ_EDC_FUE_CNTL_SIMD1', 'SQ_EDC_FUE_CNTL_SIMD2', - 'SQ_EDC_FUE_CNTL_SIMD3', 'SQ_EDC_FUE_CNTL_SQ', - 'SQ_EDC_FUE_CNTL_TA', 'SQ_EDC_FUE_CNTL_TCP', 'SQ_EDC_FUE_CNTL_TD', - 'SQ_EDC_INFO_SOURCE', 'SQ_EDC_INFO_SOURCE_GDS', - 'SQ_EDC_INFO_SOURCE_INST', 'SQ_EDC_INFO_SOURCE_INVALID', - 'SQ_EDC_INFO_SOURCE_LDS', 'SQ_EDC_INFO_SOURCE_SGPR', - 'SQ_EDC_INFO_SOURCE_TA', 'SQ_EDC_INFO_SOURCE_VGPR', - 'SQ_EX_MODE_EXCP_ADDR_WATCH0', 'SQ_EX_MODE_EXCP_DIV0', - 'SQ_EX_MODE_EXCP_HI_ADDR_WATCH1', - 'SQ_EX_MODE_EXCP_HI_ADDR_WATCH2', - 'SQ_EX_MODE_EXCP_HI_ADDR_WATCH3', 'SQ_EX_MODE_EXCP_INEXACT', - 'SQ_EX_MODE_EXCP_INPUT_DENORM', 'SQ_EX_MODE_EXCP_INT_DIV0', - 'SQ_EX_MODE_EXCP_INVALID', 'SQ_EX_MODE_EXCP_MEM_VIOL', - 'SQ_EX_MODE_EXCP_OVERFLOW', 'SQ_EX_MODE_EXCP_UNDERFLOW', - 'SQ_EX_MODE_EXCP_VALU_BASE', 'SQ_EX_MODE_EXCP_VALU_SIZE', - 'SQ_GFXDEC_BEGIN', 'SQ_GFXDEC_END', 'SQ_GFXDEC_STATE_ID_SHIFT', - 'SQ_IBUF_IB_DRET', 'SQ_IBUF_IB_EMPTY_WAIT_DRET', - 'SQ_IBUF_IB_EMPTY_WAIT_GNT', 'SQ_IBUF_IB_IDLE', - 'SQ_IBUF_IB_INI_WAIT_DRET', 'SQ_IBUF_IB_INI_WAIT_GNT', - 'SQ_IBUF_IB_LE_4DW', 'SQ_IBUF_IB_WAIT_DRET', 'SQ_IBUF_ST', - 'SQ_IMG_FILTER_MODE_BLEND', 'SQ_IMG_FILTER_MODE_MAX', - 'SQ_IMG_FILTER_MODE_MIN', 'SQ_IMG_FILTER_TYPE', 'SQ_IND_CMD_CMD', - 'SQ_IND_CMD_CMD_KILL', 'SQ_IND_CMD_CMD_NULL', - 'SQ_IND_CMD_CMD_SAVECTX', 'SQ_IND_CMD_CMD_SETFATALHALT', - 'SQ_IND_CMD_CMD_SETHALT', 'SQ_IND_CMD_CMD_SET_SPI_PRIO', - 'SQ_IND_CMD_CMD_SINGLE_STEP', 'SQ_IND_CMD_CMD_TRAP', - 'SQ_IND_CMD_CMD_TRAP_AFTER_INST', 'SQ_IND_CMD_MODE', - 'SQ_IND_CMD_MODE_BROADCAST', 'SQ_IND_CMD_MODE_BROADCAST_ME', - 'SQ_IND_CMD_MODE_BROADCAST_PIPE', - 'SQ_IND_CMD_MODE_BROADCAST_QUEUE', 'SQ_IND_CMD_MODE_SINGLE', - 'SQ_INST_STR_IB_WAVE2ID_NORMAL_INST_AV', - 'SQ_INST_STR_IB_WAVE_INST_SKIP_AV', - 'SQ_INST_STR_IB_WAVE_INTERNAL_INST_AV', - 'SQ_INST_STR_IB_WAVE_NOP_SLEEP_WAIT', 'SQ_INST_STR_IB_WAVE_NORML', - 'SQ_INST_STR_IB_WAVE_PC_FROM_SGPR_MSG_WAIT', 'SQ_INST_STR_ST', - 'SQ_INST_TYPE', 'SQ_INST_TYPE_BARRIER', - 'SQ_INST_TYPE_BRANCH_NOT_TAKEN', 'SQ_INST_TYPE_BRANCH_TAKEN', - 'SQ_INST_TYPE_EXP', 'SQ_INST_TYPE_JUMP', 'SQ_INST_TYPE_LDS', - 'SQ_INST_TYPE_LDS_DIRECT', 'SQ_INST_TYPE_MSG', - 'SQ_INST_TYPE_NONE', 'SQ_INST_TYPE_OTHER', 'SQ_INST_TYPE_SCALAR', - 'SQ_INST_TYPE_TEX', 'SQ_INST_TYPE_VALU', 'SQ_LLC_0', 'SQ_LLC_1', - 'SQ_LLC_BYPASS', 'SQ_LLC_CTL', 'SQ_LLC_RSVD_2', - 'SQ_MAX_PGM_SGPRS', 'SQ_MAX_PGM_VGPRS', 'SQ_NON_EVENT', - 'SQ_NO_INST_ISSUE', 'SQ_NO_INST_ISSUE_ALU_DEP', - 'SQ_NO_INST_ISSUE_BARRIER_WAIT', 'SQ_NO_INST_ISSUE_NO_ARB_WIN', - 'SQ_NO_INST_ISSUE_NO_INSTS', 'SQ_NO_INST_ISSUE_OTHER', - 'SQ_NO_INST_ISSUE_SLEEP_WAIT', 'SQ_NO_INST_ISSUE_S_WAITCNT', - 'SQ_OOB_COMPLETE', 'SQ_OOB_INDEX_AND_OFFSET', 'SQ_OOB_INDEX_ONLY', - 'SQ_OOB_NUM_RECORDS_0', 'SQ_OOB_SELECT', 'SQ_PERF_SEL', - 'SQ_PERF_SEL_ACCUM_PREV', 'SQ_PERF_SEL_BUSY_CYCLES', - 'SQ_PERF_SEL_CYCLES', 'SQ_PERF_SEL_DUMMY_END', - 'SQ_PERF_SEL_DUMMY_LAST', 'SQ_PERF_SEL_EVENTS', - 'SQ_PERF_SEL_EXP_BUS0_BUSY', 'SQ_PERF_SEL_EXP_BUS1_BUSY', - 'SQ_PERF_SEL_EXP_REQ0_BUS_BUSY', 'SQ_PERF_SEL_EXP_REQ1_BUS_BUSY', - 'SQ_PERF_SEL_EXP_REQ_BUS_STALL', 'SQ_PERF_SEL_EXP_REQ_FIFO_FULL', - 'SQ_PERF_SEL_IFETCH_LEVEL', 'SQ_PERF_SEL_IFETCH_REQS', - 'SQ_PERF_SEL_INSTS_ALL', 'SQ_PERF_SEL_INSTS_BRANCH', - 'SQ_PERF_SEL_INSTS_CBRANCH_NOT_TAKEN', - 'SQ_PERF_SEL_INSTS_CBRANCH_TAKEN', - 'SQ_PERF_SEL_INSTS_CBRANCH_TAKEN_HIT_IS', - 'SQ_PERF_SEL_INSTS_DELAY_ALU', - 'SQ_PERF_SEL_INSTS_DUAL_VALU_WAVE32', 'SQ_PERF_SEL_INSTS_EXP', - 'SQ_PERF_SEL_INSTS_EXP_GDS', 'SQ_PERF_SEL_INSTS_FLAT', - 'SQ_PERF_SEL_INSTS_GDS', 'SQ_PERF_SEL_INSTS_INTERNAL', - 'SQ_PERF_SEL_INSTS_LDS', 'SQ_PERF_SEL_INSTS_LDS_DIRECT_LOAD', - 'SQ_PERF_SEL_INSTS_LDS_PARAM_LOAD', 'SQ_PERF_SEL_INSTS_SALU', - 'SQ_PERF_SEL_INSTS_SENDMSG', 'SQ_PERF_SEL_INSTS_SMEM', - 'SQ_PERF_SEL_INSTS_SMEM_NORM', 'SQ_PERF_SEL_INSTS_TEX', - 'SQ_PERF_SEL_INSTS_TEX_LOAD', 'SQ_PERF_SEL_INSTS_TEX_STORE', - 'SQ_PERF_SEL_INSTS_VALU', 'SQ_PERF_SEL_INSTS_VALU_1_PASS', - 'SQ_PERF_SEL_INSTS_VALU_2_PASS', 'SQ_PERF_SEL_INSTS_VALU_4_PASS', - 'SQ_PERF_SEL_INSTS_VALU_DP', - 'SQ_PERF_SEL_INSTS_VALU_EXEC_SKIPPED', - 'SQ_PERF_SEL_INSTS_VALU_NO_COEXEC', - 'SQ_PERF_SEL_INSTS_VALU_ONE_CYCLE_WAVE64', - 'SQ_PERF_SEL_INSTS_VALU_TRANS', 'SQ_PERF_SEL_INSTS_VALU_TRANS32', - 'SQ_PERF_SEL_INSTS_VALU_VINTERP', - 'SQ_PERF_SEL_INSTS_VALU_WAVE32_VINTERP', - 'SQ_PERF_SEL_INSTS_WAVE32', 'SQ_PERF_SEL_INSTS_WAVE32_FLAT', - 'SQ_PERF_SEL_INSTS_WAVE32_LDS', - 'SQ_PERF_SEL_INSTS_WAVE32_LDS_PARAM_LOAD', - 'SQ_PERF_SEL_INSTS_WAVE32_TEX', - 'SQ_PERF_SEL_INSTS_WAVE32_TEX_LOAD', - 'SQ_PERF_SEL_INSTS_WAVE32_TEX_STORE', - 'SQ_PERF_SEL_INSTS_WAVE32_VALU', - 'SQ_PERF_SEL_INSTS_WAVE32_VALU_NO_COEXEC', - 'SQ_PERF_SEL_INSTS_WAVE32_VALU_TRANS32', - 'SQ_PERF_SEL_INST_CACHE_REQ_STALL', 'SQ_PERF_SEL_INST_CYCLES_EXP', - 'SQ_PERF_SEL_INST_CYCLES_EXP_GDS', 'SQ_PERF_SEL_INST_CYCLES_FLAT', - 'SQ_PERF_SEL_INST_CYCLES_GDS', 'SQ_PERF_SEL_INST_CYCLES_LDS', - 'SQ_PERF_SEL_INST_CYCLES_TEX', 'SQ_PERF_SEL_INST_CYCLES_VALU', - 'SQ_PERF_SEL_INST_CYCLES_VALU_NO_COEXEC', - 'SQ_PERF_SEL_INST_CYCLES_VALU_TRANS32', - 'SQ_PERF_SEL_INST_CYCLES_VMEM', - 'SQ_PERF_SEL_INST_CYCLES_VMEM_LOAD', - 'SQ_PERF_SEL_INST_CYCLES_VMEM_STORE', - 'SQ_PERF_SEL_INST_LEVEL_EXP', 'SQ_PERF_SEL_INST_LEVEL_GDS', - 'SQ_PERF_SEL_INST_LEVEL_LDS', 'SQ_PERF_SEL_INST_LEVEL_SMEM', - 'SQ_PERF_SEL_INST_LEVEL_TEX_LOAD', - 'SQ_PERF_SEL_INST_LEVEL_TEX_STORE', 'SQ_PERF_SEL_ITEMS', - 'SQ_PERF_SEL_ITEMS_MAX_VALU', 'SQ_PERF_SEL_ITEMS_VALU', - 'SQ_PERF_SEL_ITEM_CYCLES_VALU', 'SQ_PERF_SEL_ITEM_CYCLES_VMEM', - 'SQ_PERF_SEL_LDS_DIRECT_CMD_FIFO_FULL_STALL', - 'SQ_PERF_SEL_LEVEL_WAVES', 'SQ_PERF_SEL_MSG', - 'SQ_PERF_SEL_MSG_BUS_BUSY', 'SQ_PERF_SEL_MSG_FIFO_FULL_STALL', - 'SQ_PERF_SEL_MSG_INTERRUPT', 'SQ_PERF_SEL_NONE', - 'SQ_PERF_SEL_NONE2', 'SQ_PERF_SEL_OVERFLOW_PREV', - 'SQ_PERF_SEL_PS_QUADS', 'SQ_PERF_SEL_SALU_GATHER_FULL_STALL', - 'SQ_PERF_SEL_SALU_PIPE_STALL', 'SQ_PERF_SEL_SALU_SGATHER_STALL', - 'SQ_PERF_SEL_SALU_SGPR_RD_FIFO_FULL_STALL', - 'SQ_PERF_SEL_SMEM_DCACHE_FIFO_FULL_STALL', - 'SQ_PERF_SEL_SMEM_DCACHE_RETURN_CYCLES', - 'SQ_PERF_SEL_SP_CONST_CYCLES', - 'SQ_PERF_SEL_SP_CONST_STALL_CYCLES', 'SQ_PERF_SEL_USER0', - 'SQ_PERF_SEL_USER1', 'SQ_PERF_SEL_USER10', 'SQ_PERF_SEL_USER11', - 'SQ_PERF_SEL_USER12', 'SQ_PERF_SEL_USER13', 'SQ_PERF_SEL_USER14', - 'SQ_PERF_SEL_USER15', 'SQ_PERF_SEL_USER2', 'SQ_PERF_SEL_USER3', - 'SQ_PERF_SEL_USER4', 'SQ_PERF_SEL_USER5', 'SQ_PERF_SEL_USER6', - 'SQ_PERF_SEL_USER7', 'SQ_PERF_SEL_USER8', 'SQ_PERF_SEL_USER9', - 'SQ_PERF_SEL_USER_LEVEL0', 'SQ_PERF_SEL_USER_LEVEL1', - 'SQ_PERF_SEL_USER_LEVEL10', 'SQ_PERF_SEL_USER_LEVEL11', - 'SQ_PERF_SEL_USER_LEVEL12', 'SQ_PERF_SEL_USER_LEVEL13', - 'SQ_PERF_SEL_USER_LEVEL14', 'SQ_PERF_SEL_USER_LEVEL15', - 'SQ_PERF_SEL_USER_LEVEL2', 'SQ_PERF_SEL_USER_LEVEL3', - 'SQ_PERF_SEL_USER_LEVEL4', 'SQ_PERF_SEL_USER_LEVEL5', - 'SQ_PERF_SEL_USER_LEVEL6', 'SQ_PERF_SEL_USER_LEVEL7', - 'SQ_PERF_SEL_USER_LEVEL8', 'SQ_PERF_SEL_USER_LEVEL9', - 'SQ_PERF_SEL_VALU_FWD_BUFFER_FULL_STALL', - 'SQ_PERF_SEL_VALU_READWRITELANE_CYCLES', - 'SQ_PERF_SEL_VALU_RETURN_SDST', - 'SQ_PERF_SEL_VALU_SGATHER_FULL_STALL', - 'SQ_PERF_SEL_VALU_SGATHER_STALL', - 'SQ_PERF_SEL_VALU_SGPR_RD_FIFO_FULL_STALL', - 'SQ_PERF_SEL_VALU_STARVE', 'SQ_PERF_SEL_VMEM_ARB_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_BUS_ACTIVE', 'SQ_PERF_SEL_VMEM_BUS_STALL', - 'SQ_PERF_SEL_VMEM_BUS_STALL_LDS_ADDR_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_BUS_STALL_LDS_CMD_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_BUS_STALL_TA_ADDR_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_BUS_STALL_TA_CMD_FIFO_FULL', - 'SQ_PERF_SEL_VMEM_STARVE_LDS_ADDR_EMPTY', - 'SQ_PERF_SEL_VMEM_STARVE_TA_ADDR_EMPTY', - 'SQ_PERF_SEL_VMEM_VGPR_READ_STALLED_BY_EXPORT', - 'SQ_PERF_SEL_WAIT_ANY', 'SQ_PERF_SEL_WAIT_BARRIER', - 'SQ_PERF_SEL_WAIT_CNT_ANY', 'SQ_PERF_SEL_WAIT_CNT_EXP', - 'SQ_PERF_SEL_WAIT_CNT_LGKM', 'SQ_PERF_SEL_WAIT_CNT_VMVS', - 'SQ_PERF_SEL_WAIT_DELAY_ALU', 'SQ_PERF_SEL_WAIT_DEPCTR', - 'SQ_PERF_SEL_WAIT_EXP_ALLOC', 'SQ_PERF_SEL_WAIT_IFETCH', - 'SQ_PERF_SEL_WAIT_INST_ANY', 'SQ_PERF_SEL_WAIT_INST_BR_MSG', - 'SQ_PERF_SEL_WAIT_INST_EXP_GDS', 'SQ_PERF_SEL_WAIT_INST_FLAT', - 'SQ_PERF_SEL_WAIT_INST_LDS', 'SQ_PERF_SEL_WAIT_INST_SCA', - 'SQ_PERF_SEL_WAIT_INST_TEX', 'SQ_PERF_SEL_WAIT_INST_VALU', - 'SQ_PERF_SEL_WAIT_INST_VMEM', 'SQ_PERF_SEL_WAIT_OTHER', - 'SQ_PERF_SEL_WAIT_SLEEP', 'SQ_PERF_SEL_WAIT_TTRACE', - 'SQ_PERF_SEL_WAVE32_INSTS', 'SQ_PERF_SEL_WAVE32_INSTS_EXP_GDS', - 'SQ_PERF_SEL_WAVE32_ITEMS', 'SQ_PERF_SEL_WAVE64_HALF_SKIP', - 'SQ_PERF_SEL_WAVE64_INSTS', 'SQ_PERF_SEL_WAVE64_ITEMS', - 'SQ_PERF_SEL_WAVES', 'SQ_PERF_SEL_WAVES_32', - 'SQ_PERF_SEL_WAVES_64', 'SQ_PERF_SEL_WAVES_EQ_32', - 'SQ_PERF_SEL_WAVES_EQ_64', 'SQ_PERF_SEL_WAVES_INITIAL_PREFETCH', - 'SQ_PERF_SEL_WAVES_LT_16', 'SQ_PERF_SEL_WAVES_LT_32', - 'SQ_PERF_SEL_WAVES_LT_48', 'SQ_PERF_SEL_WAVES_LT_64', - 'SQ_PERF_SEL_WAVES_RESTORED', 'SQ_PERF_SEL_WAVES_SAVED', - 'SQ_PERF_SEL_WAVE_CYCLES', 'SQ_PERF_SEL_WAVE_READY', - 'SQ_ROUND_MINUS_INFINITY', 'SQ_ROUND_MODE', - 'SQ_ROUND_NEAREST_EVEN', 'SQ_ROUND_PLUS_INFINITY', - 'SQ_ROUND_TO_ZERO', 'SQ_RSRC_BUF', 'SQ_RSRC_BUF_RSVD_1', - 'SQ_RSRC_BUF_RSVD_2', 'SQ_RSRC_BUF_RSVD_3', 'SQ_RSRC_BUF_TYPE', - 'SQ_RSRC_FLAT', 'SQ_RSRC_FLAT_RSVD_0', 'SQ_RSRC_FLAT_RSVD_2', - 'SQ_RSRC_FLAT_RSVD_3', 'SQ_RSRC_FLAT_TYPE', 'SQ_RSRC_IMG_1D', - 'SQ_RSRC_IMG_1D_ARRAY', 'SQ_RSRC_IMG_2D', 'SQ_RSRC_IMG_2D_ARRAY', - 'SQ_RSRC_IMG_2D_MSAA', 'SQ_RSRC_IMG_2D_MSAA_ARRAY', - 'SQ_RSRC_IMG_3D', 'SQ_RSRC_IMG_CUBE', 'SQ_RSRC_IMG_RSVD_0', - 'SQ_RSRC_IMG_RSVD_1', 'SQ_RSRC_IMG_RSVD_2', 'SQ_RSRC_IMG_RSVD_3', - 'SQ_RSRC_IMG_RSVD_4', 'SQ_RSRC_IMG_RSVD_5', 'SQ_RSRC_IMG_RSVD_6', - 'SQ_RSRC_IMG_RSVD_7', 'SQ_RSRC_IMG_TYPE', 'SQ_SEL_0', 'SQ_SEL_1', - 'SQ_SEL_N_BC_1', 'SQ_SEL_RESERVED_1', 'SQ_SEL_W', 'SQ_SEL_X', - 'SQ_SEL_XYZW01', 'SQ_SEL_Y', 'SQ_SEL_Z', 'SQ_TEX_ANISO_RATIO', - 'SQ_TEX_ANISO_RATIO_1', 'SQ_TEX_ANISO_RATIO_16', - 'SQ_TEX_ANISO_RATIO_2', 'SQ_TEX_ANISO_RATIO_4', - 'SQ_TEX_ANISO_RATIO_8', 'SQ_TEX_BORDER_COLOR', - 'SQ_TEX_BORDER_COLOR_OPAQUE_BLACK', - 'SQ_TEX_BORDER_COLOR_OPAQUE_WHITE', - 'SQ_TEX_BORDER_COLOR_REGISTER', 'SQ_TEX_BORDER_COLOR_TRANS_BLACK', - 'SQ_TEX_CLAMP', 'SQ_TEX_CLAMP_BORDER', 'SQ_TEX_CLAMP_HALF_BORDER', - 'SQ_TEX_CLAMP_LAST_TEXEL', 'SQ_TEX_DEPTH_COMPARE', - 'SQ_TEX_DEPTH_COMPARE_ALWAYS', 'SQ_TEX_DEPTH_COMPARE_EQUAL', - 'SQ_TEX_DEPTH_COMPARE_GREATER', - 'SQ_TEX_DEPTH_COMPARE_GREATEREQUAL', 'SQ_TEX_DEPTH_COMPARE_LESS', - 'SQ_TEX_DEPTH_COMPARE_LESSEQUAL', 'SQ_TEX_DEPTH_COMPARE_NEVER', - 'SQ_TEX_DEPTH_COMPARE_NOTEQUAL', 'SQ_TEX_MIP_FILTER', - 'SQ_TEX_MIP_FILTER_LINEAR', 'SQ_TEX_MIP_FILTER_NONE', - 'SQ_TEX_MIP_FILTER_POINT', 'SQ_TEX_MIP_FILTER_POINT_ANISO_ADJ', - 'SQ_TEX_MIRROR', 'SQ_TEX_MIRROR_ONCE_BORDER', - 'SQ_TEX_MIRROR_ONCE_HALF_BORDER', 'SQ_TEX_MIRROR_ONCE_LAST_TEXEL', - 'SQ_TEX_WRAP', 'SQ_TEX_XY_FILTER', - 'SQ_TEX_XY_FILTER_ANISO_BILINEAR', 'SQ_TEX_XY_FILTER_ANISO_POINT', - 'SQ_TEX_XY_FILTER_BILINEAR', 'SQ_TEX_XY_FILTER_POINT', - 'SQ_TEX_Z_FILTER', 'SQ_TEX_Z_FILTER_LINEAR', - 'SQ_TEX_Z_FILTER_NONE', 'SQ_TEX_Z_FILTER_POINT', - 'SQ_TT_INST_EXCLUDE_EXPGNT234_BIT', - 'SQ_TT_INST_EXCLUDE_EXPGNT234_SHIFT', - 'SQ_TT_INST_EXCLUDE_VMEM_OTHER_SIMD_BIT', - 'SQ_TT_INST_EXCLUDE_VMEM_OTHER_SIMD_SHIFT', 'SQ_TT_MODE', - 'SQ_TT_MODE_DETAIL', 'SQ_TT_MODE_GLOBAL', 'SQ_TT_MODE_OFF', - 'SQ_TT_MODE_ON', 'SQ_TT_REG_EXCLUDE_CP_ME_MC_RADDR_BIT', - 'SQ_TT_REG_EXCLUDE_CP_ME_MC_RADDR_SHIFT', - 'SQ_TT_REG_EXCLUDE_GRBM_COMPUTE_EXCLUDE_BIT', - 'SQ_TT_REG_EXCLUDE_GRBM_COMPUTE_EXCLUDE_SHIFT', - 'SQ_TT_REG_EXCLUDE_USER_DATA_BIT', - 'SQ_TT_REG_EXCLUDE_USER_DATA_SHIFT', 'SQ_TT_RT_FREQ', - 'SQ_TT_RT_FREQ_1024_CLK', 'SQ_TT_RT_FREQ_4096_CLK', - 'SQ_TT_RT_FREQ_NEVER', 'SQ_TT_TOKEN_EXCLUDE_ALUEXEC_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_EVENT_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_IMMEDIATE_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_INST_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_PERF_SHIFT', 'SQ_TT_TOKEN_EXCLUDE_REG_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_UTILCTR_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_VALUINST_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_VMEMEXEC_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_WAVEALLOC_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_WAVERDY_SHIFT', - 'SQ_TT_TOKEN_EXCLUDE_WAVESTARTEND_SHIFT', - 'SQ_TT_TOKEN_MASK_ALL_BIT', 'SQ_TT_TOKEN_MASK_ALL_SHIFT', - 'SQ_TT_TOKEN_MASK_COMP_BIT', 'SQ_TT_TOKEN_MASK_COMP_SHIFT', - 'SQ_TT_TOKEN_MASK_CONFIG_BIT', 'SQ_TT_TOKEN_MASK_CONFIG_SHIFT', - 'SQ_TT_TOKEN_MASK_CONTEXT_BIT', 'SQ_TT_TOKEN_MASK_CONTEXT_SHIFT', - 'SQ_TT_TOKEN_MASK_GFXUDEC_BIT', 'SQ_TT_TOKEN_MASK_GFXUDEC_SHIFT', - 'SQ_TT_TOKEN_MASK_INST_EXCLUDE', - 'SQ_TT_TOKEN_MASK_INST_EXCLUDE_SHIFT', - 'SQ_TT_TOKEN_MASK_REG_EXCLUDE', - 'SQ_TT_TOKEN_MASK_REG_EXCLUDE_SHIFT', - 'SQ_TT_TOKEN_MASK_REG_INCLUDE', - 'SQ_TT_TOKEN_MASK_REG_INCLUDE_SHIFT', 'SQ_TT_TOKEN_MASK_RSVD_BIT', - 'SQ_TT_TOKEN_MASK_RSVD_SHIFT', 'SQ_TT_TOKEN_MASK_SHDEC_BIT', - 'SQ_TT_TOKEN_MASK_SHDEC_SHIFT', 'SQ_TT_TOKEN_MASK_SQDEC_BIT', - 'SQ_TT_TOKEN_MASK_SQDEC_SHIFT', - 'SQ_TT_TOKEN_MASK_TOKEN_EXCLUDE_SHIFT', 'SQ_TT_UTIL_TIMER', - 'SQ_TT_UTIL_TIMER_100_CLK', 'SQ_TT_UTIL_TIMER_250_CLK', - 'SQ_TT_WAVESTART_MODE', 'SQ_TT_WAVESTART_MODE_ALLOC', - 'SQ_TT_WAVESTART_MODE_PBB_ID', 'SQ_TT_WAVESTART_MODE_SHORT', - 'SQ_TT_WTYPE_INCLUDE', 'SQ_TT_WTYPE_INCLUDE_CS_BIT', - 'SQ_TT_WTYPE_INCLUDE_CS_SHIFT', 'SQ_TT_WTYPE_INCLUDE_GS_BIT', - 'SQ_TT_WTYPE_INCLUDE_GS_SHIFT', 'SQ_TT_WTYPE_INCLUDE_HS_BIT', - 'SQ_TT_WTYPE_INCLUDE_HS_SHIFT', 'SQ_TT_WTYPE_INCLUDE_PS_BIT', - 'SQ_TT_WTYPE_INCLUDE_PS_SHIFT', 'SQ_TT_WTYPE_INCLUDE_RSVD0_BIT', - 'SQ_TT_WTYPE_INCLUDE_RSVD0_SHIFT', - 'SQ_TT_WTYPE_INCLUDE_RSVD1_BIT', - 'SQ_TT_WTYPE_INCLUDE_RSVD1_SHIFT', - 'SQ_TT_WTYPE_INCLUDE_RSVD2_BIT', - 'SQ_TT_WTYPE_INCLUDE_RSVD2_SHIFT', 'SQ_TT_WTYPE_INCLUDE_SHIFT', - 'SQ_WATCH_MODES', 'SQ_WATCH_MODE_ALL', 'SQ_WATCH_MODE_ATOMIC', - 'SQ_WATCH_MODE_NONREAD', 'SQ_WATCH_MODE_READ', - 'SQ_WAVE_FWD_PROG_INTERVAL', 'SQ_WAVE_FWD_PROG_INTERVAL_1024', - 'SQ_WAVE_FWD_PROG_INTERVAL_256', 'SQ_WAVE_FWD_PROG_INTERVAL_4096', - 'SQ_WAVE_FWD_PROG_INTERVAL_NEVER', 'SQ_WAVE_IB_DEP_HOLD_CNT_SIZE', - 'SQ_WAVE_IB_DEP_LDS_DIR_SIZE', 'SQ_WAVE_IB_DEP_SA_EXEC_SIZE', - 'SQ_WAVE_IB_DEP_SA_M0_SIZE', 'SQ_WAVE_IB_DEP_SA_SDST_SIZE', - 'SQ_WAVE_IB_DEP_VA_EXEC_SIZE', 'SQ_WAVE_IB_DEP_VA_SDST_SIZE', - 'SQ_WAVE_IB_DEP_VA_SSRC_SIZE', 'SQ_WAVE_IB_DEP_VA_VCC_SIZE', - 'SQ_WAVE_IB_DEP_VA_VDST_SIZE', 'SQ_WAVE_IB_DEP_VM_VSRC_SIZE', - 'SQ_WAVE_IB_ECC_CLEAN', 'SQ_WAVE_IB_ECC_ERR_CONTINUE', - 'SQ_WAVE_IB_ECC_ERR_HALT', 'SQ_WAVE_IB_ECC_ST', - 'SQ_WAVE_IB_ECC_WITH_ERR_MSG', 'SQ_WAVE_SCHED_MODES', - 'SQ_WAVE_SCHED_MODE_DISABLE_VA_VDST', 'SQ_WAVE_SCHED_MODE_EXPERT', - 'SQ_WAVE_SCHED_MODE_NORMAL', 'SQ_WAVE_TYPE', 'SQ_WAVE_TYPE_CS', - 'SQ_WAVE_TYPE_GS', 'SQ_WAVE_TYPE_HS', 'SQ_WAVE_TYPE_PS', - 'SQ_WAVE_TYPE_PS0', 'SQ_WAVE_TYPE_PS1', 'SQ_WAVE_TYPE_PS2', - 'SQ_WAVE_TYPE_PS3', 'SQ_WAVE_TYPE_RSVD0', 'SQ_WAVE_TYPE_RSVD1', - 'SQ_WAVE_TYPE_RSVD2', 'SRCID_NONSECURE_CP', - 'SRCID_NONSECURE_CP_RCIU', 'SRCID_RLC', 'SRCID_RLCV', - 'SRCID_SECURE_CP', 'SRCID_SECURE_CP_RCIU', 'STALL', - 'STENCIL_ADD_CLAMP', 'STENCIL_ADD_WRAP', 'STENCIL_AND', - 'STENCIL_INVERT', 'STENCIL_KEEP', 'STENCIL_NAND', 'STENCIL_NOR', - 'STENCIL_ONES', 'STENCIL_OR', 'STENCIL_REPLACE_OP', - 'STENCIL_REPLACE_TEST', 'STENCIL_SUB_CLAMP', 'STENCIL_SUB_WRAP', - 'STENCIL_XNOR', 'STENCIL_XOR', 'STENCIL_ZERO', - 'STREAM_0_SYNCHRONIZATION', - 'STREAM_0_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_0_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_10_SYNCHRONIZATION', - 'STREAM_10_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_10_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_11_SYNCHRONIZATION', - 'STREAM_11_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_11_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_12_SYNCHRONIZATION', - 'STREAM_12_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_12_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_13_SYNCHRONIZATION', - 'STREAM_13_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_13_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_14_SYNCHRONIZATION', - 'STREAM_14_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_14_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_15_SYNCHRONIZATION', - 'STREAM_15_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_15_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_1_SYNCHRONIZATION', - 'STREAM_1_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_1_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_2_SYNCHRONIZATION', - 'STREAM_2_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_2_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_3_SYNCHRONIZATION', - 'STREAM_3_SYNCHRONIZATION_STEAM_NOT_STOPPED', - 'STREAM_3_SYNCHRONIZATION_STEAM_STOPPED', - 'STREAM_4_SYNCHRONIZATION', - 'STREAM_4_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_4_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_5_SYNCHRONIZATION', - 'STREAM_5_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_5_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_6_SYNCHRONIZATION', - 'STREAM_6_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_6_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_7_SYNCHRONIZATION', - 'STREAM_7_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_7_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_8_SYNCHRONIZATION', - 'STREAM_8_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_8_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_9_SYNCHRONIZATION', - 'STREAM_9_SYNCHRONIZATION_STEAM_NOT_STOPPED_RESERVED', - 'STREAM_9_SYNCHRONIZATION_STEAM_STOPPED_RESERVED', - 'STREAM_DSC_444_RGB', 'STREAM_DSC_DISABLE', - 'STREAM_DSC_NATIVE_422_420', 'STREAM_ODM_COMBINE_1_SEGMENT', - 'STREAM_ODM_COMBINE_2_SEGMENT', 'STREAM_ODM_COMBINE_4_SEGMENT', - 'STREAM_ODM_COMBINE_RESERVED', 'STREAM_PIXEL_ENCODING_420', - 'STREAM_PIXEL_ENCODING_422', 'STREAM_PIXEL_ENCODING_444_RGB', - 'STRM_PERFMON_STATE_COUNT_AND_DUMP_PHANTOM', - 'STRM_PERFMON_STATE_DISABLE_AND_RESET', - 'STRM_PERFMON_STATE_DISABLE_AND_RESET_PHANTOM', - 'STRM_PERFMON_STATE_RESERVED_3', - 'STRM_PERFMON_STATE_START_COUNTING', - 'STRM_PERFMON_STATE_STOP_COUNTING', 'SURFACE_DCC', - 'SURFACE_DCC_BLOCK_IS_IND_128B', 'SURFACE_DCC_BLOCK_IS_IND_64B', - 'SURFACE_DCC_BLOCK_IS_IND_64B_NO_128BCL', - 'SURFACE_DCC_BLOCK_IS_UNCONSTRAINED', 'SURFACE_DCC_IND_128B', - 'SURFACE_DCC_IND_64B', 'SURFACE_DCC_IND_BLK', - 'SURFACE_DCC_IS_IND_128B', 'SURFACE_DCC_IS_IND_64B', - 'SURFACE_DCC_IS_NOT_IND_128B', 'SURFACE_DCC_IS_NOT_IND_64B', - 'SURFACE_FLIP_AWAY_INT_LEVEL', 'SURFACE_FLIP_AWAY_INT_PULSE', - 'SURFACE_FLIP_AWAY_INT_TYPE', 'SURFACE_FLIP_EXEC_DEBUG_MODE', - 'SURFACE_FLIP_EXEC_DEBUG_MODE_ENABLE', - 'SURFACE_FLIP_EXEC_NORMAL_MODE', 'SURFACE_FLIP_INT_LEVEL', - 'SURFACE_FLIP_INT_PULSE', 'SURFACE_FLIP_INT_TYPE', - 'SURFACE_FLIP_IN_STEREOSYNC', 'SURFACE_FLIP_IN_STEREOSYNC_MODE', - 'SURFACE_FLIP_MODE_FOR_STEREOSYNC', - 'SURFACE_FLIP_MODE_FOR_STEREOSYNC_RESERVED', - 'SURFACE_FLIP_NOT_IN_STEREOSYNC_MODE', - 'SURFACE_FLIP_STEREO_SELECT_DISABLE', - 'SURFACE_FLIP_STEREO_SELECT_DISABLED', - 'SURFACE_FLIP_STEREO_SELECT_ENABLED', - 'SURFACE_FLIP_STEREO_SELECT_POLARITY', - 'SURFACE_FLIP_STEREO_SELECT_POLARITY_INVERT', - 'SURFACE_FLIP_STEREO_SELECT_POLARITY_NOT_INVERT', - 'SURFACE_FLIP_TYPE', 'SURFACE_FLIP_VUPDATE_SKIP_NUM', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_0', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_1', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_10', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_11', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_12', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_13', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_14', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_15', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_2', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_3', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_4', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_5', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_6', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_7', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_8', - 'SURFACE_FLIP_VUPDATE_SKIP_NUM_9', 'SURFACE_INUSE_IS_LATCHED', - 'SURFACE_INUSE_IS_NOT_LATCHED', 'SURFACE_INUSE_RAED_NO_LATCH', - 'SURFACE_IS_DCC', 'SURFACE_IS_NOT_DCC', 'SURFACE_IS_NOT_TMZ', - 'SURFACE_IS_TMZ', 'SURFACE_I_FLIP', 'SURFACE_PIXEL_FORMAT', - 'SURFACE_TMZ', 'SURFACE_UPDATE_IS_LOCKED', - 'SURFACE_UPDATE_IS_UNLOCKED', 'SURFACE_UPDATE_LOCK', - 'SURFACE_V_FLIP', 'SU_PERFCNT_SEL', 'SWATH_HEIGHT', - 'SWATH_HEIGHT_16L', 'SWATH_HEIGHT_1L', 'SWATH_HEIGHT_2L', - 'SWATH_HEIGHT_4L', 'SWATH_HEIGHT_8L', 'SX_BLEND_OPT', - 'SX_CB_RAT_ACK_REQUEST', 'SX_DOWNCONVERT_FORMAT', - 'SX_OPT_COMB_FCN', 'SX_PERFCOUNTER_VALS', 'SX_PERF_SEL_CLOCK', - 'SX_PERF_SEL_CLOCK_DROP_STALL', 'SX_PERF_SEL_COL_BUSY', - 'SX_PERF_SEL_DB0_4X2_DISCARD', 'SX_PERF_SEL_DB0_END_OF_WAVE', - 'SX_PERF_SEL_DB0_HALF_QUADS', 'SX_PERF_SEL_DB0_MRT_BLEND_BYPASS', - 'SX_PERF_SEL_DB0_MRT_DISCARD_SRC', - 'SX_PERF_SEL_DB0_MRT_DONT_RD_DEST', - 'SX_PERF_SEL_DB0_MRT_DOUBLE_QUADS', - 'SX_PERF_SEL_DB0_MRT_SINGLE_QUADS', 'SX_PERF_SEL_DB0_PIXELS', - 'SX_PERF_SEL_DB0_PIXEL_IDLE', 'SX_PERF_SEL_DB0_PIXEL_STALL', - 'SX_PERF_SEL_DB0_PRED_PIXELS', 'SX_PERF_SEL_DB0_SIZE', - 'SX_PERF_SEL_DB1_4X2_DISCARD', 'SX_PERF_SEL_DB1_END_OF_WAVE', - 'SX_PERF_SEL_DB1_HALF_QUADS', 'SX_PERF_SEL_DB1_MRT_BLEND_BYPASS', - 'SX_PERF_SEL_DB1_MRT_DISCARD_SRC', - 'SX_PERF_SEL_DB1_MRT_DONT_RD_DEST', - 'SX_PERF_SEL_DB1_MRT_DOUBLE_QUADS', - 'SX_PERF_SEL_DB1_MRT_SINGLE_QUADS', 'SX_PERF_SEL_DB1_PIXELS', - 'SX_PERF_SEL_DB1_PIXEL_IDLE', 'SX_PERF_SEL_DB1_PIXEL_STALL', - 'SX_PERF_SEL_DB1_PRED_PIXELS', 'SX_PERF_SEL_DB1_SIZE', - 'SX_PERF_SEL_DB2_4X2_DISCARD', 'SX_PERF_SEL_DB2_END_OF_WAVE', - 'SX_PERF_SEL_DB2_HALF_QUADS', 'SX_PERF_SEL_DB2_MRT_BLEND_BYPASS', - 'SX_PERF_SEL_DB2_MRT_DISCARD_SRC', - 'SX_PERF_SEL_DB2_MRT_DONT_RD_DEST', - 'SX_PERF_SEL_DB2_MRT_DOUBLE_QUADS', - 'SX_PERF_SEL_DB2_MRT_SINGLE_QUADS', 'SX_PERF_SEL_DB2_PIXELS', - 'SX_PERF_SEL_DB2_PIXEL_IDLE', 'SX_PERF_SEL_DB2_PIXEL_STALL', - 'SX_PERF_SEL_DB2_PRED_PIXELS', 'SX_PERF_SEL_DB2_SIZE', - 'SX_PERF_SEL_DB3_4X2_DISCARD', 'SX_PERF_SEL_DB3_END_OF_WAVE', - 'SX_PERF_SEL_DB3_HALF_QUADS', 'SX_PERF_SEL_DB3_MRT_BLEND_BYPASS', - 'SX_PERF_SEL_DB3_MRT_DISCARD_SRC', - 'SX_PERF_SEL_DB3_MRT_DONT_RD_DEST', - 'SX_PERF_SEL_DB3_MRT_DOUBLE_QUADS', - 'SX_PERF_SEL_DB3_MRT_SINGLE_QUADS', 'SX_PERF_SEL_DB3_PIXELS', - 'SX_PERF_SEL_DB3_PIXEL_IDLE', 'SX_PERF_SEL_DB3_PIXEL_STALL', - 'SX_PERF_SEL_DB3_PRED_PIXELS', 'SX_PERF_SEL_DB3_SIZE', - 'SX_PERF_SEL_GATE_EN1', 'SX_PERF_SEL_GATE_EN2', - 'SX_PERF_SEL_GATE_EN3', 'SX_PERF_SEL_GATE_EN4', - 'SX_PERF_SEL_GATE_EN5', 'SX_PERF_SEL_GATE_EN6', - 'SX_PERF_SEL_GATE_EN7', 'SX_PERF_SEL_GATE_EN8', - 'SX_PERF_SEL_IDX_BUSY', 'SX_PERF_SEL_IDX_IDLE_CYCLES', - 'SX_PERF_SEL_IDX_REQ', 'SX_PERF_SEL_IDX_REQ_LATENCY', - 'SX_PERF_SEL_IDX_RET', 'SX_PERF_SEL_IDX_SCBD_STALL', - 'SX_PERF_SEL_IDX_STALL_CYCLES', 'SX_PERF_SEL_PA_IDLE_CYCLES', - 'SX_PERF_SEL_PA_POS', 'SX_PERF_SEL_PA_POS_BANK_CONF', - 'SX_PERF_SEL_PA_REQ', 'SX_PERF_SEL_PA_REQ_LATENCY', - 'SX_PERF_SEL_POS_BUSY', 'SX_PERF_SEL_POS_SCBD_STALL', - 'SX_PERF_SEL_SH_COLOR_STALL', 'SX_PERF_SEL_SH_COLOR_STARVE', - 'SX_PERF_SEL_SH_IDX_STARVE', 'SX_PERF_SEL_SH_POS_STALL', - 'SX_PERF_SEL_SH_POS_STARVE', 'SX_RT_EXPORT_10_11_11', - 'SX_RT_EXPORT_16_16_AR', 'SX_RT_EXPORT_16_16_GR', - 'SX_RT_EXPORT_1_5_5_5', 'SX_RT_EXPORT_2_10_10_10', - 'SX_RT_EXPORT_2_10_10_10_6E4', 'SX_RT_EXPORT_2_10_10_10_7E3', - 'SX_RT_EXPORT_32_A', 'SX_RT_EXPORT_32_R', 'SX_RT_EXPORT_4_4_4_4', - 'SX_RT_EXPORT_5_6_5', 'SX_RT_EXPORT_8_8_8_8', - 'SX_RT_EXPORT_9_9_9_E5', 'SX_RT_EXPORT_NO_CONVERSION', - 'SYMCLK_FE_FORCE_EN', 'SYMCLK_FE_FORCE_EN_DISABLE', - 'SYMCLK_FE_FORCE_EN_ENABLE', 'SYMCLK_FE_FORCE_SRC', - 'SYMCLK_FE_FORCE_SRC_RESERVED', 'SYMCLK_FE_FORCE_SRC_UNIPHYA', - 'SYMCLK_FE_FORCE_SRC_UNIPHYB', 'SYMCLK_FE_FORCE_SRC_UNIPHYC', - 'SYMCLK_FE_FORCE_SRC_UNIPHYD', 'ScMap', 'ScUncertaintyRegionMode', - 'ScUncertaintyRegionMult', 'ScXsel', 'ScYsel', 'SeMap', - 'SePairMap', 'SePairXsel', 'SePairYsel', 'SeXsel', 'SeYsel', - 'SourceFormat', 'Spare_257', 'StencilOp', 'TA_PERFCOUNT_SEL', - 'TA_PERF_SEL_NULL', 'TA_PERF_SEL_addr_stalled_by_tc_cycles', - 'TA_PERF_SEL_addr_stalled_by_td_cycles', - 'TA_PERF_SEL_addresser_busy', 'TA_PERF_SEL_addresser_fifo_busy', - 'TA_PERF_SEL_addresser_stalled_by_aligner_only_cycles', - 'TA_PERF_SEL_addresser_stalled_cycles', - 'TA_PERF_SEL_aligner_busy', - 'TA_PERF_SEL_aligner_clk_valid_cycles', - 'TA_PERF_SEL_aligner_cycles', 'TA_PERF_SEL_aniso_10_cycle_quads', - 'TA_PERF_SEL_aniso_12_cycle_quads', - 'TA_PERF_SEL_aniso_14_cycle_quads', - 'TA_PERF_SEL_aniso_16_cycle_quads', - 'TA_PERF_SEL_aniso_1_cycle_quads', - 'TA_PERF_SEL_aniso_2_cycle_quads', - 'TA_PERF_SEL_aniso_4_cycle_quads', - 'TA_PERF_SEL_aniso_6_cycle_quads', - 'TA_PERF_SEL_aniso_8_cycle_quads', - 'TA_PERF_SEL_aniso_gt1_cycle_quads', - 'TA_PERF_SEL_aniso_stalled_by_addresser_only_cycles', - 'TA_PERF_SEL_aniso_stalled_cycles', - 'TA_PERF_SEL_atomic_2_write_data_vgpr_instructions', - 'TA_PERF_SEL_atomic_4_write_data_vgpr_instructions', - 'TA_PERF_SEL_atomic_write_data_input_cycles', - 'TA_PERF_SEL_atomic_write_data_output_cycles', - 'TA_PERF_SEL_bf_busy', - 'TA_PERF_SEL_boundary_harvestable_clk_enabled_cycles', - 'TA_PERF_SEL_boundary_non_harvestable_clk_enabled_cycles', - 'TA_PERF_SEL_buffer_1_address_input_vgpr_instructions', - 'TA_PERF_SEL_buffer_2_address_input_vgpr_instructions', - 'TA_PERF_SEL_buffer_atomic_wavefronts', - 'TA_PERF_SEL_buffer_flat_1_op_burst', - 'TA_PERF_SEL_buffer_flat_2to3_op_burst', - 'TA_PERF_SEL_buffer_flat_4to31_op_burst', - 'TA_PERF_SEL_buffer_flat_clk_valid_cycles', - 'TA_PERF_SEL_buffer_flat_ge32_op_burst', - 'TA_PERF_SEL_buffer_has_index_instructions', - 'TA_PERF_SEL_buffer_has_offset_instructions', - 'TA_PERF_SEL_buffer_load_wavefronts', - 'TA_PERF_SEL_buffer_store_wavefronts', - 'TA_PERF_SEL_buffer_total_cycles', - 'TA_PERF_SEL_buffer_wavefronts', 'TA_PERF_SEL_bvh_total_cycles', - 'TA_PERF_SEL_color_1_cycle_quads', - 'TA_PERF_SEL_color_2_cycle_quads', - 'TA_PERF_SEL_color_3_cycle_quads', - 'TA_PERF_SEL_deriv_stalled_by_aniso_only_cycles', - 'TA_PERF_SEL_deriv_stalled_cycles', - 'TA_PERF_SEL_flat_1_address_input_vgpr_instructions', - 'TA_PERF_SEL_flat_atomic_wavefronts', - 'TA_PERF_SEL_flat_load_wavefronts', - 'TA_PERF_SEL_flat_store_wavefronts', - 'TA_PERF_SEL_flat_total_cycles', 'TA_PERF_SEL_flat_wavefronts', - 'TA_PERF_SEL_gradient_busy', - 'TA_PERF_SEL_gradient_clk_valid_cycles', - 'TA_PERF_SEL_gradient_cycles', 'TA_PERF_SEL_gradient_fifo_busy', - 'TA_PERF_SEL_harvestable_clk_enabled_cycles', - 'TA_PERF_SEL_harvestable_register_clk_enabled_cycles', - 'TA_PERF_SEL_ibubble_16to31_cycle_burst', - 'TA_PERF_SEL_ibubble_1_cycle_burst', - 'TA_PERF_SEL_ibubble_2to3_cycle_burst', - 'TA_PERF_SEL_ibubble_32to63_cycle_burst', - 'TA_PERF_SEL_ibubble_4to15_cycle_burst', - 'TA_PERF_SEL_ibubble_ge64_cycle_burst', - 'TA_PERF_SEL_image_atomic_wavefronts', - 'TA_PERF_SEL_image_bvh_11_input_vgpr_instructions', - 'TA_PERF_SEL_image_bvh_12_input_vgpr_instructions', - 'TA_PERF_SEL_image_bvh_1_op_burst', - 'TA_PERF_SEL_image_bvh_2to3_op_burst', - 'TA_PERF_SEL_image_bvh_4to7_op_burst', - 'TA_PERF_SEL_image_bvh_8_input_vgpr_instructions', - 'TA_PERF_SEL_image_bvh_9_input_vgpr_instructions', - 'TA_PERF_SEL_image_bvh_ge8_op_burst', - 'TA_PERF_SEL_image_linked_1_op_burst', - 'TA_PERF_SEL_image_linked_2to3_op_burst', - 'TA_PERF_SEL_image_linked_4to7_op_burst', - 'TA_PERF_SEL_image_linked_ge8_op_burst', - 'TA_PERF_SEL_image_nosampler_1_address_input_vgpr_instructions', - 'TA_PERF_SEL_image_nosampler_1_op_burst', - 'TA_PERF_SEL_image_nosampler_2_address_input_vgpr_instructions', - 'TA_PERF_SEL_image_nosampler_2to3_op_burst', - 'TA_PERF_SEL_image_nosampler_3_address_input_vgpr_instructions', - 'TA_PERF_SEL_image_nosampler_4_address_input_vgpr_instructions', - 'TA_PERF_SEL_image_nosampler_4to31_op_burst', - 'TA_PERF_SEL_image_nosampler_ge32_op_burst', - 'TA_PERF_SEL_image_nosampler_has_q_instructions', - 'TA_PERF_SEL_image_nosampler_has_r_instructions', - 'TA_PERF_SEL_image_nosampler_has_t_instructions', - 'TA_PERF_SEL_image_nosampler_total_cycles', - 'TA_PERF_SEL_image_read_wavefronts', - 'TA_PERF_SEL_image_sampler_10_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_11_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_12_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_1_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_1_op_burst', - 'TA_PERF_SEL_image_sampler_2_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_2to3_op_burst', - 'TA_PERF_SEL_image_sampler_3_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_4_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_4to7_op_burst', - 'TA_PERF_SEL_image_sampler_5_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_6_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_7_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_8_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_9_input_vgpr_instructions', - 'TA_PERF_SEL_image_sampler_ge8_op_burst', - 'TA_PERF_SEL_image_sampler_has_bias_instructions', - 'TA_PERF_SEL_image_sampler_has_dr_instructions', - 'TA_PERF_SEL_image_sampler_has_ds_instructions', - 'TA_PERF_SEL_image_sampler_has_dt_instructions', - 'TA_PERF_SEL_image_sampler_has_offset_instructions', - 'TA_PERF_SEL_image_sampler_has_q_instructions', - 'TA_PERF_SEL_image_sampler_has_r_instructions', - 'TA_PERF_SEL_image_sampler_has_reference_instructions', - 'TA_PERF_SEL_image_sampler_has_t_instructions', - 'TA_PERF_SEL_image_sampler_total_cycles', - 'TA_PERF_SEL_image_sampler_wavefronts', - 'TA_PERF_SEL_image_store_wavefronts', - 'TA_PERF_SEL_image_wavefronts', 'TA_PERF_SEL_in_addr_cycles', - 'TA_PERF_SEL_in_busy', 'TA_PERF_SEL_in_cfifo_busy', - 'TA_PERF_SEL_in_data_cycles', 'TA_PERF_SEL_in_fifos_busy', - 'TA_PERF_SEL_in_qfifo_busy', 'TA_PERF_SEL_in_rfifo_busy', - 'TA_PERF_SEL_in_waiting_on_req_cycles', - 'TA_PERF_SEL_in_wfifo_busy', - 'TA_PERF_SEL_latency_ram_ref_required_instructions', - 'TA_PERF_SEL_latency_ram_weights_written_cycles', - 'TA_PERF_SEL_latency_ram_whv_required_instructions', - 'TA_PERF_SEL_latency_ram_whv_required_quads', - 'TA_PERF_SEL_latency_ram_ws_required_instructions', - 'TA_PERF_SEL_latency_ram_ws_required_quads', - 'TA_PERF_SEL_lod_aniso_clk_valid_cycles', 'TA_PERF_SEL_lod_busy', - 'TA_PERF_SEL_lod_fifo_busy', 'TA_PERF_SEL_mip_1_cycle_quads', - 'TA_PERF_SEL_mip_2_cycle_quads', - 'TA_PERF_SEL_mipmap_invalid_samples', - 'TA_PERF_SEL_mipmap_lod_0_samples', - 'TA_PERF_SEL_mipmap_lod_10_samples', - 'TA_PERF_SEL_mipmap_lod_11_samples', - 'TA_PERF_SEL_mipmap_lod_12_samples', - 'TA_PERF_SEL_mipmap_lod_13_samples', - 'TA_PERF_SEL_mipmap_lod_14_samples', - 'TA_PERF_SEL_mipmap_lod_1_samples', - 'TA_PERF_SEL_mipmap_lod_2_samples', - 'TA_PERF_SEL_mipmap_lod_3_samples', - 'TA_PERF_SEL_mipmap_lod_4_samples', - 'TA_PERF_SEL_mipmap_lod_5_samples', - 'TA_PERF_SEL_mipmap_lod_6_samples', - 'TA_PERF_SEL_mipmap_lod_7_samples', - 'TA_PERF_SEL_mipmap_lod_8_samples', - 'TA_PERF_SEL_mipmap_lod_9_samples', - 'TA_PERF_SEL_non_harvestable_clk_enabled_cycles', - 'TA_PERF_SEL_nonsampler_clk_valid_cycles', 'TA_PERF_SEL_ns_busy', - 'TA_PERF_SEL_num_nodes_invalidated_due_to_bad_input', - 'TA_PERF_SEL_num_nodes_invalidated_due_to_oob', - 'TA_PERF_SEL_num_of_bvh_invalidated_first_tri', - 'TA_PERF_SEL_num_of_bvh_invalidated_fourth_tri', - 'TA_PERF_SEL_num_of_bvh_invalidated_fp16_box', - 'TA_PERF_SEL_num_of_bvh_invalidated_fp32_box', - 'TA_PERF_SEL_num_of_bvh_invalidated_second_tri', - 'TA_PERF_SEL_num_of_bvh_invalidated_third_tri', - 'TA_PERF_SEL_num_of_bvh_valid_first_tri', - 'TA_PERF_SEL_num_of_bvh_valid_fourth_tri', - 'TA_PERF_SEL_num_of_bvh_valid_fp16_box', - 'TA_PERF_SEL_num_of_bvh_valid_fp32_box', - 'TA_PERF_SEL_num_of_bvh_valid_second_tri', - 'TA_PERF_SEL_num_of_bvh_valid_third_tri', - 'TA_PERF_SEL_num_unlit_nodes_ta_opt', - 'TA_PERF_SEL_point_sampled_quads', - 'TA_PERF_SEL_register_clk_valid_cycles', - 'TA_PERF_SEL_sampler_addressing_clk_valid_cycles', - 'TA_PERF_SEL_sampler_clk_valid_cycles', - 'TA_PERF_SEL_sampler_op_quads', 'TA_PERF_SEL_smp_busy_ns_idle', - 'TA_PERF_SEL_smp_idle_ns_busy', - 'TA_PERF_SEL_store_2_write_data_vgpr_instructions', - 'TA_PERF_SEL_store_3_write_data_vgpr_instructions', - 'TA_PERF_SEL_store_4_write_data_vgpr_instructions', - 'TA_PERF_SEL_store_has_w_instructions', - 'TA_PERF_SEL_store_has_x_instructions', - 'TA_PERF_SEL_store_has_y_instructions', - 'TA_PERF_SEL_store_has_z_instructions', - 'TA_PERF_SEL_store_write_data_input_cycles', - 'TA_PERF_SEL_store_write_data_output_cycles', - 'TA_PERF_SEL_sync_nonsampler_fifo_clk_valid_cycles', - 'TA_PERF_SEL_sync_sampler_cstate_fifo_clk_valid_cycles', - 'TA_PERF_SEL_sync_sampler_sstate_fifo_clk_valid_cycles', - 'TA_PERF_SEL_ta_busy', 'TA_PERF_SEL_tcreq_clk_valid_cycles', - 'TA_PERF_SEL_total_wavefronts', 'TA_PERF_SEL_vmemcmd_cycles', - 'TA_PERF_SEL_vmemreq_cycles', 'TA_PERF_SEL_vol_1_cycle_quads', - 'TA_PERF_SEL_vol_2_cycle_quads', 'TA_PERF_SEL_walker_cycles', - 'TA_PERF_SEL_write_1_op_burst', 'TA_PERF_SEL_write_2to3_op_burst', - 'TA_PERF_SEL_write_4to31_op_burst', - 'TA_PERF_SEL_write_data_clk_valid_cycles', - 'TA_PERF_SEL_write_ge32_op_burst', 'TA_PERF_SEL_write_path_busy', - 'TA_TC_ADDR_MODES', 'TA_TC_ADDR_MODE_BORDER_COLOR', - 'TA_TC_ADDR_MODE_COMP0', 'TA_TC_ADDR_MODE_COMP1', - 'TA_TC_ADDR_MODE_COMP2', 'TA_TC_ADDR_MODE_COMP3', - 'TA_TC_ADDR_MODE_DEFAULT', 'TA_TC_ADDR_MODE_UNALIGNED', - 'TA_TC_REQ_MODES', 'TA_TC_REQ_MODE_BORDER', 'TA_TC_REQ_MODE_BYTE', - 'TA_TC_REQ_MODE_BYTE_NV', 'TA_TC_REQ_MODE_DWORD', - 'TA_TC_REQ_MODE_NORMAL', 'TA_TC_REQ_MODE_TEX0', - 'TA_TC_REQ_MODE_TEX1', 'TA_TC_REQ_MODE_TEX2', 'TB_ACP_NOT_SEND', - 'TB_ACP_PKT_SEND', 'TB_ACR_0_MULTIPLE_RESERVED', - 'TB_ACR_1_MULTIPLE', 'TB_ACR_2_MULTIPLE', - 'TB_ACR_3_MULTIPLE_RESERVED', 'TB_ACR_4_MULTIPLE', - 'TB_ACR_5_MULTIPLE_RESERVED', 'TB_ACR_6_MULTIPLE_RESERVED', - 'TB_ACR_7_MULTIPLE_RESERVED', 'TB_ACR_CONT_DISABLE', - 'TB_ACR_CONT_ENABLE', 'TB_ACR_NOT_SEND', - 'TB_ACR_PKT_HIGH_PRIORITY_THAN_AUDIO_SAMPLE', 'TB_ACR_PKT_SEND', - 'TB_ACR_SELECT_32K', 'TB_ACR_SELECT_44K', 'TB_ACR_SELECT_48K', - 'TB_ACR_SELECT_HW', 'TB_ACR_SOURCE_HW', 'TB_ACR_SOURCE_SW', - 'TB_AUDIO_INFO_CONT_DISABLE', 'TB_AUDIO_INFO_CONT_ENABLE', - 'TB_AUDIO_INFO_NOT_SEND', 'TB_AUDIO_INFO_PKT_SEND', - 'TB_AUDIO_SAMPLE_HIGH_PRIORITY_THAN_ACR_PKT', - 'TB_BORROW_MODE_ACTIVE', 'TB_BORROW_MODE_BLANK', - 'TB_BORROW_MODE_NONE', 'TB_BORROW_MODE_RESERVED', - 'TB_CRC_ACTIVE_AND_DATAISLAND_TRIBYTES', 'TB_CRC_ACTIVE_TRIBYTES', - 'TB_CRC_ALL_TRIBYTES', 'TB_CRC_DATAISLAND_TRIBYTES', - 'TB_CRC_DEEP_COLOR_PACKER', 'TB_CRC_DSC_PACKER', - 'TB_CRC_ENCRYPTOR_INPUT', 'TB_CRC_TB_ENC_INPUT', - 'TB_DEEP_COLOR_DEPTH_24BPP', 'TB_DEEP_COLOR_DEPTH_30BPP', - 'TB_DEEP_COLOR_DEPTH_36BPP', 'TB_DEEP_COLOR_DEPTH_RESERVED', - 'TB_DEFAULT_PHASE_IS_0', 'TB_DEFAULT_PHASE_IS_1', 'TB_DISABLE', - 'TB_DSC_444_RGB', 'TB_DSC_DISABLE', 'TB_DSC_NATIVE_422_420', - 'TB_ENABLE', 'TB_GC_AVMUTE_CONT_DISABLE', - 'TB_GC_AVMUTE_CONT_ENABLE', 'TB_GC_AVMUTE_SET', - 'TB_GC_AVMUTE_UNSET', 'TB_GC_CONT_DISABLE', 'TB_GC_CONT_ENABLE', - 'TB_GC_NOT_SEND', 'TB_GC_PKT_SEND', 'TB_GENERIC_CONT_DISABLE', - 'TB_GENERIC_CONT_ENABLE', 'TB_GENERIC_NOT_SEND', - 'TB_GENERIC_PKT_SEND', 'TB_ISRC_CONT_DISABLE', - 'TB_ISRC_CONT_ENABLE', 'TB_ISRC_NOT_SEND', 'TB_ISRC_PKT_SEND', - 'TB_METADATA_NOT_SEND', 'TB_METADATA_PKT_SEND', 'TB_NOT_RESET', - 'TB_NOT_SYNC_PHASE_ON_FRAME_START', 'TB_NO_ERROR_OCCURRED', - 'TB_OVERFLOW_OCCURRED', 'TB_PIXEL_ENCODING_420', - 'TB_PIXEL_ENCODING_422', 'TB_PIXEL_ENCODING_444_RGB', - 'TB_PKT_LINE_REF_END_OF_ACTIVE', 'TB_PKT_LINE_REF_OTGSOF', - 'TB_RESET', 'TB_SYNC_PHASE_ON_FRAME_START', 'TCC_CACHE_POLICIES', - 'TCC_CACHE_POLICY_LRU', 'TCC_CACHE_POLICY_STREAM', 'TCC_MTYPE', - 'TCP_CACHE_POLICIES', 'TCP_CACHE_POLICY_HIT_EVICT', - 'TCP_CACHE_POLICY_HIT_LRU', 'TCP_CACHE_POLICY_MISS_EVICT', - 'TCP_CACHE_POLICY_MISS_LRU', 'TCP_CACHE_STORE_POLICIES', - 'TCP_CACHE_STORE_POLICY_WT_EVICT', - 'TCP_CACHE_STORE_POLICY_WT_LRU', 'TCP_DSM_DATA_SEL', - 'TCP_DSM_DISABLE', 'TCP_DSM_INJECT_SEL', 'TCP_DSM_INJECT_SEL0', - 'TCP_DSM_INJECT_SEL1', 'TCP_DSM_INJECT_SEL2', - 'TCP_DSM_INJECT_SEL3', 'TCP_DSM_SEL0', 'TCP_DSM_SEL1', - 'TCP_DSM_SEL_BOTH', 'TCP_DSM_SINGLE_WRITE', - 'TCP_DSM_SINGLE_WRITE_DIS', 'TCP_DSM_SINGLE_WRITE_EN', - 'TCP_OPCODE_ATOMIC', 'TCP_OPCODE_ATOMIC_CMPSWAP', - 'TCP_OPCODE_GATHERH', 'TCP_OPCODE_INV', 'TCP_OPCODE_LOAD', - 'TCP_OPCODE_READ', 'TCP_OPCODE_SAMPLER', 'TCP_OPCODE_TYPE', - 'TCP_OPCODE_WRITE', 'TCP_PERFCOUNT_SELECT', - 'TCP_PERF_SEL_ALLOC_STALL', - 'TCP_PERF_SEL_ATOMIC_TAGCONFLICT_STALL', - 'TCP_PERF_SEL_COMP_TEX_LOAD_STALL', - 'TCP_PERF_SEL_DATA_FIFO_STALL', 'TCP_PERF_SEL_GATE_EN1', - 'TCP_PERF_SEL_GATE_EN2', 'TCP_PERF_SEL_GL1_GRANT_READ_STALL', - 'TCP_PERF_SEL_GL1_PENDING_STALL', 'TCP_PERF_SEL_GL1_READ_LATENCY', - 'TCP_PERF_SEL_GL1_REQ_ATOMIC_WITHOUT_RET', - 'TCP_PERF_SEL_GL1_REQ_ATOMIC_WITH_RET', - 'TCP_PERF_SEL_GL1_REQ_READ', 'TCP_PERF_SEL_GL1_REQ_READ_128B', - 'TCP_PERF_SEL_GL1_REQ_READ_64B', 'TCP_PERF_SEL_GL1_REQ_WRITE', - 'TCP_PERF_SEL_GL1_TCP_BACK_PRESSURE', - 'TCP_PERF_SEL_GL1_TCP_RDRET_STALL', - 'TCP_PERF_SEL_GL1_WRITE_LATENCY', 'TCP_PERF_SEL_LFIFO_STALL', - 'TCP_PERF_SEL_LOD_STALL', 'TCP_PERF_SEL_MEM_REQ_FIFO_STALL', - 'TCP_PERF_SEL_OFIFO_AGE_ORDER_STALL', - 'TCP_PERF_SEL_OFIFO_INCOMPLETE_STALL', 'TCP_PERF_SEL_POWER_STALL', - 'TCP_PERF_SEL_READ_DATACONFLICT_STALL', - 'TCP_PERF_SEL_READ_TAGCONFLICT_STALL', 'TCP_PERF_SEL_REQ', - 'TCP_PERF_SEL_REQ_MISS', 'TCP_PERF_SEL_REQ_MISS_TAGBANK0', - 'TCP_PERF_SEL_REQ_MISS_TAGBANK1', - 'TCP_PERF_SEL_REQ_MISS_TAGBANK2', - 'TCP_PERF_SEL_REQ_MISS_TAGBANK3', 'TCP_PERF_SEL_REQ_NON_READ', - 'TCP_PERF_SEL_REQ_READ', 'TCP_PERF_SEL_REQ_READ_HIT_EVICT', - 'TCP_PERF_SEL_REQ_READ_HIT_LRU', - 'TCP_PERF_SEL_REQ_READ_MISS_EVICT', - 'TCP_PERF_SEL_REQ_TAGBANK0_SET0', - 'TCP_PERF_SEL_REQ_TAGBANK0_SET1', - 'TCP_PERF_SEL_REQ_TAGBANK1_SET0', - 'TCP_PERF_SEL_REQ_TAGBANK1_SET1', - 'TCP_PERF_SEL_REQ_TAGBANK2_SET0', - 'TCP_PERF_SEL_REQ_TAGBANK2_SET1', - 'TCP_PERF_SEL_REQ_TAGBANK3_SET0', - 'TCP_PERF_SEL_REQ_TAGBANK3_SET1', 'TCP_PERF_SEL_REQ_WRITE', - 'TCP_PERF_SEL_REQ_WRITE_MISS_EVICT', - 'TCP_PERF_SEL_REQ_WRITE_MISS_LRU', 'TCP_PERF_SEL_TA_REQ', - 'TCP_PERF_SEL_TA_REQ_ATOMIC_WITHOUT_RET', - 'TCP_PERF_SEL_TA_REQ_ATOMIC_WITH_RET', - 'TCP_PERF_SEL_TA_REQ_GL0_INV', 'TCP_PERF_SEL_TA_REQ_READ', - 'TCP_PERF_SEL_TA_REQ_STATE_READ', 'TCP_PERF_SEL_TA_REQ_WRITE', - 'TCP_PERF_SEL_TA_TCP_REQ_STARVE', 'TCP_PERF_SEL_TCP_LATENCY', - 'TCP_PERF_SEL_TCP_TA_REQ_STALL', - 'TCP_PERF_SEL_TD_DATA_CYCLE_STALL', 'TCP_PERF_SEL_TD_TCP_STALL', - 'TCP_PERF_SEL_UNORDERED_MTYPE_STALL', - 'TCP_PERF_SEL_WRITE_DATACONFLICT_STALL', - 'TCP_PERF_SEL_WRITE_TAGCONFLICT_STALL', 'TCP_WATCH_MODES', - 'TCP_WATCH_MODE_ALL', 'TCP_WATCH_MODE_ATOMIC', - 'TCP_WATCH_MODE_NONREAD', 'TCP_WATCH_MODE_READ', 'TC_EA_CID', - 'TC_EA_CID_CPF', 'TC_EA_CID_CPG', 'TC_EA_CID_DCC', - 'TC_EA_CID_FMASK', 'TC_EA_CID_HTILE', 'TC_EA_CID_IA', - 'TC_EA_CID_MISC', 'TC_EA_CID_PA', 'TC_EA_CID_RT', 'TC_EA_CID_SQC', - 'TC_EA_CID_STENCIL', 'TC_EA_CID_TCP', 'TC_EA_CID_TCPMETA', - 'TC_EA_CID_UTCL2_TPI', 'TC_EA_CID_WD', 'TC_EA_CID_Z', 'TC_NACKS', - 'TC_NACK_DATA_ERROR', 'TC_NACK_NO_FAULT', 'TC_NACK_PAGE_FAULT', - 'TC_NACK_PROTECTION_FAULT', 'TC_OP', 'TC_OP_ATOMIC_ADD_32', - 'TC_OP_ATOMIC_ADD_64', 'TC_OP_ATOMIC_ADD_RTN_32', - 'TC_OP_ATOMIC_ADD_RTN_64', 'TC_OP_ATOMIC_AND_32', - 'TC_OP_ATOMIC_AND_64', 'TC_OP_ATOMIC_AND_RTN_32', - 'TC_OP_ATOMIC_AND_RTN_64', 'TC_OP_ATOMIC_CMPSWAP_32', - 'TC_OP_ATOMIC_CMPSWAP_64', 'TC_OP_ATOMIC_CMPSWAP_RTN_32', - 'TC_OP_ATOMIC_CMPSWAP_RTN_64', 'TC_OP_ATOMIC_DEC_32', - 'TC_OP_ATOMIC_DEC_64', 'TC_OP_ATOMIC_DEC_RTN_32', - 'TC_OP_ATOMIC_DEC_RTN_64', 'TC_OP_ATOMIC_FADD_FLUSH_DENORM_32', - 'TC_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32', - 'TC_OP_ATOMIC_FCMPSWAP_32', 'TC_OP_ATOMIC_FCMPSWAP_64', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32', - 'TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64', - 'TC_OP_ATOMIC_FCMPSWAP_RTN_32', 'TC_OP_ATOMIC_FCMPSWAP_RTN_64', - 'TC_OP_ATOMIC_FMAX_32', 'TC_OP_ATOMIC_FMAX_64', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_32', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_64', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32', - 'TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64', - 'TC_OP_ATOMIC_FMAX_RTN_32', 'TC_OP_ATOMIC_FMAX_RTN_64', - 'TC_OP_ATOMIC_FMIN_32', 'TC_OP_ATOMIC_FMIN_64', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_32', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_64', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32', - 'TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64', - 'TC_OP_ATOMIC_FMIN_RTN_32', 'TC_OP_ATOMIC_FMIN_RTN_64', - 'TC_OP_ATOMIC_INC_32', 'TC_OP_ATOMIC_INC_64', - 'TC_OP_ATOMIC_INC_RTN_32', 'TC_OP_ATOMIC_INC_RTN_64', - 'TC_OP_ATOMIC_OR_32', 'TC_OP_ATOMIC_OR_64', - 'TC_OP_ATOMIC_OR_RTN_32', 'TC_OP_ATOMIC_OR_RTN_64', - 'TC_OP_ATOMIC_SMAX_32', 'TC_OP_ATOMIC_SMAX_64', - 'TC_OP_ATOMIC_SMAX_RTN_32', 'TC_OP_ATOMIC_SMAX_RTN_64', - 'TC_OP_ATOMIC_SMIN_32', 'TC_OP_ATOMIC_SMIN_64', - 'TC_OP_ATOMIC_SMIN_RTN_32', 'TC_OP_ATOMIC_SMIN_RTN_64', - 'TC_OP_ATOMIC_SUB_32', 'TC_OP_ATOMIC_SUB_64', - 'TC_OP_ATOMIC_SUB_RTN_32', 'TC_OP_ATOMIC_SUB_RTN_64', - 'TC_OP_ATOMIC_SWAP_32', 'TC_OP_ATOMIC_SWAP_64', - 'TC_OP_ATOMIC_SWAP_RTN_32', 'TC_OP_ATOMIC_SWAP_RTN_64', - 'TC_OP_ATOMIC_UMAX_32', 'TC_OP_ATOMIC_UMAX_64', - 'TC_OP_ATOMIC_UMAX_RTN_32', 'TC_OP_ATOMIC_UMAX_RTN_64', - 'TC_OP_ATOMIC_UMIN_32', 'TC_OP_ATOMIC_UMIN_64', - 'TC_OP_ATOMIC_UMIN_RTN_32', 'TC_OP_ATOMIC_UMIN_RTN_64', - 'TC_OP_ATOMIC_XOR_32', 'TC_OP_ATOMIC_XOR_64', - 'TC_OP_ATOMIC_XOR_RTN_32', 'TC_OP_ATOMIC_XOR_RTN_64', - 'TC_OP_INVL2_NC', 'TC_OP_INV_METADATA', 'TC_OP_MASKS', - 'TC_OP_MASK_64', 'TC_OP_MASK_FLUSH_DENROM', 'TC_OP_MASK_NO_RTN', - 'TC_OP_NOP_ACK', 'TC_OP_NOP_RTN0', 'TC_OP_PROBE_FILTER', - 'TC_OP_READ', 'TC_OP_RESERVED_FADD_32', - 'TC_OP_RESERVED_FADD_RTN_32', 'TC_OP_RESERVED_FOP_32_0', - 'TC_OP_RESERVED_FOP_32_2', 'TC_OP_RESERVED_FOP_64_0', - 'TC_OP_RESERVED_FOP_64_1', 'TC_OP_RESERVED_FOP_64_2', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_32_2', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_0', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_1', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_64_2', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_0', - 'TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_1', - 'TC_OP_RESERVED_FOP_RTN_32_0', 'TC_OP_RESERVED_FOP_RTN_32_2', - 'TC_OP_RESERVED_FOP_RTN_64_0', 'TC_OP_RESERVED_FOP_RTN_64_1', - 'TC_OP_RESERVED_FOP_RTN_64_2', 'TC_OP_RESERVED_NON_FLOAT_32_1', - 'TC_OP_RESERVED_NON_FLOAT_32_2', 'TC_OP_RESERVED_NON_FLOAT_32_3', - 'TC_OP_RESERVED_NON_FLOAT_32_4', 'TC_OP_RESERVED_NON_FLOAT_64_1', - 'TC_OP_RESERVED_NON_FLOAT_64_2', 'TC_OP_RESERVED_NON_FLOAT_64_3', - 'TC_OP_RESERVED_NON_FLOAT_64_4', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_0', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_1', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_2', - 'TC_OP_RESERVED_NON_FLOAT_RTN_32_3', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_1', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_2', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_3', - 'TC_OP_RESERVED_NON_FLOAT_RTN_64_4', 'TC_OP_WBINVL1', - 'TC_OP_WBINVL1_SD', 'TC_OP_WBINVL1_VOL', 'TC_OP_WBINVL2', - 'TC_OP_WBINVL2_NC', 'TC_OP_WBINVL2_SD', 'TC_OP_WBL2_NC', - 'TC_OP_WBL2_WC', 'TC_OP_WRITE', 'TD_PERFCOUNT_SEL', - 'TD_PERF_SEL_address_cmd_poison', - 'TD_PERF_SEL_all_pipes_sclk_on_at_same_time', - 'TD_PERF_SEL_blend_prt_with_prt_default_0', - 'TD_PERF_SEL_blend_prt_with_prt_default_1', - 'TD_PERF_SEL_bubble_bin_lds_stall_1to3', - 'TD_PERF_SEL_bubble_bin_lds_stall_4to7', - 'TD_PERF_SEL_bubble_bin_lds_stall_8to15', - 'TD_PERF_SEL_bubble_bin_lds_stall_gt15', - 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_0', - 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_1', - 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_128to511', - 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_2to31', - 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_32to127', - 'TD_PERF_SEL_bubble_bin_ta_waiting_for_tc_data_gt511', - 'TD_PERF_SEL_burst_bin_bvh4_1', 'TD_PERF_SEL_burst_bin_bvh4_2to8', - 'TD_PERF_SEL_burst_bin_bvh4_9to16', - 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_1', - 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_2to4', - 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_5to7', - 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_8to16', - 'TD_PERF_SEL_burst_bin_bvh4_box_nodes_gt16', - 'TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_1', - 'TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_2to8', - 'TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_9to16', - 'TD_PERF_SEL_burst_bin_bvh4_dropped_nodes_gt16', - 'TD_PERF_SEL_burst_bin_bvh4_gt16', - 'TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_1', - 'TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_2to8', - 'TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_9to16', - 'TD_PERF_SEL_burst_bin_bvh4_invalid_nodes_gt16', - 'TD_PERF_SEL_burst_bin_bvh4_tri_nodes_1', - 'TD_PERF_SEL_burst_bin_bvh4_tri_nodes_2to8', - 'TD_PERF_SEL_burst_bin_bvh4_tri_nodes_9to16', - 'TD_PERF_SEL_burst_bin_bvh4_tri_nodes_gt16', - 'TD_PERF_SEL_burst_bin_gather_1', - 'TD_PERF_SEL_burst_bin_gather_2to8', - 'TD_PERF_SEL_burst_bin_gather_9to16', - 'TD_PERF_SEL_burst_bin_gather_gt16', - 'TD_PERF_SEL_burst_bin_nofilter_1', - 'TD_PERF_SEL_burst_bin_nofilter_2to4', - 'TD_PERF_SEL_burst_bin_nofilter_5to7', - 'TD_PERF_SEL_burst_bin_nofilter_8to16', - 'TD_PERF_SEL_burst_bin_nofilter_gt16', - 'TD_PERF_SEL_burst_bin_preempting_nofilter_1', - 'TD_PERF_SEL_burst_bin_preempting_nofilter_2to4', - 'TD_PERF_SEL_burst_bin_preempting_nofilter_5to7', - 'TD_PERF_SEL_burst_bin_preempting_nofilter_8to16', - 'TD_PERF_SEL_burst_bin_preempting_nofilter_gt16', - 'TD_PERF_SEL_burst_bin_sampler_1', - 'TD_PERF_SEL_burst_bin_sampler_2to8', - 'TD_PERF_SEL_burst_bin_sampler_9to16', - 'TD_PERF_SEL_burst_bin_sampler_gt16', - 'TD_PERF_SEL_bypassLerp_instr', - 'TD_PERF_SEL_core_state_ram_max_cnt', - 'TD_PERF_SEL_core_state_rams_read', 'TD_PERF_SEL_d16_en_instr', - 'TD_PERF_SEL_data_poison', - 'TD_PERF_SEL_done_scoreboard_bp_due_to_lds', - 'TD_PERF_SEL_done_scoreboard_bp_due_to_ooo', - 'TD_PERF_SEL_done_scoreboard_is_full', - 'TD_PERF_SEL_done_scoreboard_max_stored_cnt', - 'TD_PERF_SEL_done_scoreboard_max_waiting_cnt', - 'TD_PERF_SEL_done_scoreboard_not_empty', - 'TD_PERF_SEL_four_comp_return_instr', 'TD_PERF_SEL_gather4_instr', - 'TD_PERF_SEL_gather4h_instr', - 'TD_PERF_SEL_input_bp_due_to_done_scoreboard_full', - 'TD_PERF_SEL_input_busy', 'TD_PERF_SEL_input_state_fifo_full', - 'TD_PERF_SEL_instruction_dest_is_lds', 'TD_PERF_SEL_ldfptr_instr', - 'TD_PERF_SEL_lds_stall', 'TD_PERF_SEL_load_instr', - 'TD_PERF_SEL_lod_warn_from_ta', - 'TD_PERF_SEL_min_max_filter_instr', 'TD_PERF_SEL_mixmode_instr', - 'TD_PERF_SEL_mixmode_resource', 'TD_PERF_SEL_msaa_load_instr', - 'TD_PERF_SEL_nofilter_and_bvh4_sclk_on_sampler_sclk_off', - 'TD_PERF_SEL_nofilter_busy', - 'TD_PERF_SEL_nofilter_byte_cycling_16cycles', - 'TD_PERF_SEL_nofilter_byte_cycling_4cycles', - 'TD_PERF_SEL_nofilter_byte_cycling_8cycles', - 'TD_PERF_SEL_nofilter_d16_sclk_en', - 'TD_PERF_SEL_nofilter_d32_sclk_en', - 'TD_PERF_SEL_nofilter_dword_cycling_2cycles', - 'TD_PERF_SEL_nofilter_dword_cycling_4cycles', - 'TD_PERF_SEL_nofilter_formatters_turned_on', - 'TD_PERF_SEL_nofilter_insert_extra_comps', - 'TD_PERF_SEL_nofilter_pkr_full', - 'TD_PERF_SEL_nofilter_pkr_full_due_to_arb', - 'TD_PERF_SEL_nofilter_popcount_dmask_gt_num_comp_of_fmt', - 'TD_PERF_SEL_nofilter_popcount_dmask_lt_num_comp_of_fmt', - 'TD_PERF_SEL_nofilter_sclk_en', - 'TD_PERF_SEL_nofilter_sclk_on_sampler_sclk_off', - 'TD_PERF_SEL_nofilter_total_num_comps_to_lds', 'TD_PERF_SEL_none', - 'TD_PERF_SEL_one_comp_return_instr', - 'TD_PERF_SEL_opaque_black_border', - 'TD_PERF_SEL_out_of_order_instr', - 'TD_PERF_SEL_preempting_nofilter_max_cnt', - 'TD_PERF_SEL_prt_ack_instr', - 'TD_PERF_SEL_ray_tracing_bvh4_box_grow_val_nonzero', - 'TD_PERF_SEL_ray_tracing_bvh4_box_sclk_en', - 'TD_PERF_SEL_ray_tracing_bvh4_box_sort_en', - 'TD_PERF_SEL_ray_tracing_bvh4_busy', - 'TD_PERF_SEL_ray_tracing_bvh4_dropped_box_node', - 'TD_PERF_SEL_ray_tracing_bvh4_dropped_tri_node', - 'TD_PERF_SEL_ray_tracing_bvh4_fp16_box_node', - 'TD_PERF_SEL_ray_tracing_bvh4_fp32_box_node', - 'TD_PERF_SEL_ray_tracing_bvh4_instr_invld_thread_cnt', - 'TD_PERF_SEL_ray_tracing_bvh4_invalid_box_node', - 'TD_PERF_SEL_ray_tracing_bvh4_invalid_tri_node', - 'TD_PERF_SEL_ray_tracing_bvh4_ip_sclk_en', - 'TD_PERF_SEL_ray_tracing_bvh4_num_box_misses', - 'TD_PERF_SEL_ray_tracing_bvh4_num_box_that_squashed_a_nan', - 'TD_PERF_SEL_ray_tracing_bvh4_num_box_with_inf_or_nan_vtx', - 'TD_PERF_SEL_ray_tracing_bvh4_num_tri_misses', - 'TD_PERF_SEL_ray_tracing_bvh4_num_tri_tie_breakers', - 'TD_PERF_SEL_ray_tracing_bvh4_num_tri_with_inf_or_nan_vtx', - 'TD_PERF_SEL_ray_tracing_bvh4_pkr_full', - 'TD_PERF_SEL_ray_tracing_bvh4_pkr_full_due_to_arb', - 'TD_PERF_SEL_ray_tracing_bvh4_sclk_en', - 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_0', - 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_1', - 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_17to31', - 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_2', - 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_32', - 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_3to4', - 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_5to8', - 'TD_PERF_SEL_ray_tracing_bvh4_threads_per_instruction_is_9to16', - 'TD_PERF_SEL_ray_tracing_bvh4_tri_node', - 'TD_PERF_SEL_ray_tracing_bvh4_tri_sclk_en', - 'TD_PERF_SEL_reference_data_rams_read', - 'TD_PERF_SEL_resmap_instr', - 'TD_PERF_SEL_resmap_with_aniso_filtering', - 'TD_PERF_SEL_resmap_with_cubemap_corner', - 'TD_PERF_SEL_resmap_with_no_more_filtering', - 'TD_PERF_SEL_resmap_with_volume_filtering', - 'TD_PERF_SEL_sample_c_instr', 'TD_PERF_SEL_sample_instr', - 'TD_PERF_SEL_sampler_accum_sclk_en', - 'TD_PERF_SEL_sampler_and_bvh4_sclk_on_nofilter_sclk_off', - 'TD_PERF_SEL_sampler_and_nofilter_sclk_on_bvh4_sclk_off', - 'TD_PERF_SEL_sampler_bilerp_sclk_en', - 'TD_PERF_SEL_sampler_bypass_sclk_en', - 'TD_PERF_SEL_sampler_core_sclk_en', - 'TD_PERF_SEL_sampler_format_flt_sclk_en', - 'TD_PERF_SEL_sampler_format_fxdpt_sclk_en', - 'TD_PERF_SEL_sampler_lerp0_active', - 'TD_PERF_SEL_sampler_lerp1_active', - 'TD_PERF_SEL_sampler_lerp2_active', - 'TD_PERF_SEL_sampler_lerp3_active', - 'TD_PERF_SEL_sampler_lerp_busy', - 'TD_PERF_SEL_sampler_minmax_sclk_en', - 'TD_PERF_SEL_sampler_out_busy', 'TD_PERF_SEL_sampler_out_sclk_en', - 'TD_PERF_SEL_sampler_pkr_full', - 'TD_PERF_SEL_sampler_pkr_full_due_to_arb', - 'TD_PERF_SEL_sampler_preformatter_sclk_en', - 'TD_PERF_SEL_sampler_sclk_on_nofilter_sclk_off', - 'TD_PERF_SEL_status_packet', 'TD_PERF_SEL_ta_data_stall', - 'TD_PERF_SEL_tc_cycling_of_nofilter_instr_2cycles', - 'TD_PERF_SEL_tc_cycling_of_nofilter_instr_4cycles', - 'TD_PERF_SEL_tc_data_stall', 'TD_PERF_SEL_tc_ram_stall', - 'TD_PERF_SEL_tc_td_data_fifo_full', - 'TD_PERF_SEL_tc_td_ram_fifo_full', - 'TD_PERF_SEL_tc_td_ram_fifo_max_cnt', 'TD_PERF_SEL_td_busy', - 'TD_PERF_SEL_td_cycling_of_nofilter_instr_2cycles', - 'TD_PERF_SEL_td_cycling_of_nofilter_instr_4cycles', - 'TD_PERF_SEL_three_comp_return_instr', - 'TD_PERF_SEL_total_num_instr', - 'TD_PERF_SEL_total_num_instr_with_perf_wdw', - 'TD_PERF_SEL_total_num_nofilter_instr', - 'TD_PERF_SEL_total_num_nofilter_instr_with_perf_wdw', - 'TD_PERF_SEL_total_num_ray_tracing_bvh4_instr', - 'TD_PERF_SEL_total_num_ray_tracing_bvh4_instr_with_perf_wdw', - 'TD_PERF_SEL_total_num_sampler_instr', - 'TD_PERF_SEL_total_num_sampler_instr_with_perf_wdw', - 'TD_PERF_SEL_two_comp_return_instr', - 'TD_PERF_SEL_user_defined_border', - 'TD_PERF_SEL_weight_data_rams_read', 'TD_PERF_SEL_white_border', - 'TD_PERF_SEL_write_ack_instr', 'TESS_ISOLINE', 'TESS_QUAD', - 'TESS_TRIANGLE', 'TEST_CLK_DIV_SEL', 'TEST_CLK_SEL', - 'TEST_CLK_SEL_0', 'TEST_CLK_SEL_1', 'TEST_CLK_SEL_2', - 'TEST_CLK_SEL_3', 'TEST_CLK_SEL_4', 'TEST_CLK_SEL_5', - 'TEST_CLK_SEL_6', 'TEST_CLK_SEL_7', - 'TEST_CLOCK_MUX_SELECT_DISPCLK_G', - 'TEST_CLOCK_MUX_SELECT_DISPCLK_P', - 'TEST_CLOCK_MUX_SELECT_DISPCLK_R', - 'TEST_CLOCK_MUX_SELECT_DSCCLK_G', - 'TEST_CLOCK_MUX_SELECT_DSCCLK_P', - 'TEST_CLOCK_MUX_SELECT_DSCCLK_R', 'TEST_CLOCK_MUX_SELECT_ENUM', - 'TEX_BC_SWIZZLE', 'TEX_BC_Swizzle_WXYZ', 'TEX_BC_Swizzle_WZYX', - 'TEX_BC_Swizzle_XWYZ', 'TEX_BC_Swizzle_XYZW', - 'TEX_BC_Swizzle_YXWZ', 'TEX_BC_Swizzle_ZYXW', - 'TEX_BORDER_COLOR_TYPE', 'TEX_BorderColor_OpaqueBlack', - 'TEX_BorderColor_OpaqueWhite', 'TEX_BorderColor_Register', - 'TEX_BorderColor_TransparentBlack', 'TEX_CHROMA_KEY', 'TEX_CLAMP', - 'TEX_COORD_TYPE', 'TEX_ChromaKey_Blend', 'TEX_ChromaKey_Disabled', - 'TEX_ChromaKey_Kill', 'TEX_ChromaKey_RESERVED_3', - 'TEX_Clamp_ClampHalfToBorder', 'TEX_Clamp_ClampToBorder', - 'TEX_Clamp_ClampToLast', 'TEX_Clamp_Mirror', - 'TEX_Clamp_MirrorOnceHalfToBorder', - 'TEX_Clamp_MirrorOnceToBorder', 'TEX_Clamp_MirrorOnceToLast', - 'TEX_Clamp_Repeat', 'TEX_CoordType_Normalized', - 'TEX_CoordType_Unnormalized', 'TEX_DEPTH_COMPARE_FUNCTION', - 'TEX_DepthCompareFunction_Always', - 'TEX_DepthCompareFunction_Equal', - 'TEX_DepthCompareFunction_Greater', - 'TEX_DepthCompareFunction_GreaterEqual', - 'TEX_DepthCompareFunction_Less', - 'TEX_DepthCompareFunction_LessEqual', - 'TEX_DepthCompareFunction_Never', - 'TEX_DepthCompareFunction_NotEqual', 'TEX_FORMAT_COMP', - 'TEX_FormatComp_RESERVED_3', 'TEX_FormatComp_Signed', - 'TEX_FormatComp_Unsigned', 'TEX_FormatComp_UnsignedBiased', - 'TEX_MAX_ANISO_RATIO', 'TEX_MIP_FILTER', - 'TEX_MaxAnisoRatio_16to1', 'TEX_MaxAnisoRatio_1to1', - 'TEX_MaxAnisoRatio_2to1', 'TEX_MaxAnisoRatio_4to1', - 'TEX_MaxAnisoRatio_8to1', 'TEX_MaxAnisoRatio_RESERVED_5', - 'TEX_MaxAnisoRatio_RESERVED_6', 'TEX_MaxAnisoRatio_RESERVED_7', - 'TEX_MipFilter_Linear', 'TEX_MipFilter_None', - 'TEX_MipFilter_Point', 'TEX_MipFilter_Point_Aniso_Adj', - 'TEX_REQUEST_SIZE', 'TEX_RequestSize_128B', - 'TEX_RequestSize_2X64B', 'TEX_RequestSize_32B', - 'TEX_RequestSize_64B', 'TEX_SAMPLER_TYPE', - 'TEX_SamplerType_Invalid', 'TEX_SamplerType_Valid', - 'TEX_XYFilter_AnisoLinear', 'TEX_XYFilter_AnisoPoint', - 'TEX_XYFilter_Linear', 'TEX_XYFilter_Point', 'TEX_XY_FILTER', - 'TEX_ZFilter_Linear', 'TEX_ZFilter_None', 'TEX_ZFilter_Point', - 'TEX_ZFilter_RESERVED_3', 'TEX_Z_FILTER', 'TGID_ROLLOVER', - 'THM_BASE', 'THM_BASE__INST0_SEG0', 'THM_BASE__INST0_SEG1', - 'THM_BASE__INST0_SEG2', 'THM_BASE__INST0_SEG3', - 'THM_BASE__INST0_SEG4', 'THM_BASE__INST1_SEG0', - 'THM_BASE__INST1_SEG1', 'THM_BASE__INST1_SEG2', - 'THM_BASE__INST1_SEG3', 'THM_BASE__INST1_SEG4', - 'THM_BASE__INST2_SEG0', 'THM_BASE__INST2_SEG1', - 'THM_BASE__INST2_SEG2', 'THM_BASE__INST2_SEG3', - 'THM_BASE__INST2_SEG4', 'THM_BASE__INST3_SEG0', - 'THM_BASE__INST3_SEG1', 'THM_BASE__INST3_SEG2', - 'THM_BASE__INST3_SEG3', 'THM_BASE__INST3_SEG4', - 'THM_BASE__INST4_SEG0', 'THM_BASE__INST4_SEG1', - 'THM_BASE__INST4_SEG2', 'THM_BASE__INST4_SEG3', - 'THM_BASE__INST4_SEG4', 'THM_BASE__INST5_SEG0', - 'THM_BASE__INST5_SEG1', 'THM_BASE__INST5_SEG2', - 'THM_BASE__INST5_SEG3', 'THM_BASE__INST5_SEG4', - 'THM_BASE__INST6_SEG0', 'THM_BASE__INST6_SEG1', - 'THM_BASE__INST6_SEG2', 'THM_BASE__INST6_SEG3', - 'THM_BASE__INST6_SEG4', 'THREAD_TRACE_DRAW', - 'THREAD_TRACE_FINISH', 'THREAD_TRACE_MARKER', - 'THREAD_TRACE_START', 'THREAD_TRACE_STOP', 'TIGHT_PACK', - 'TMDS_COLOR_FORMAT', 'TMDS_COLOR_FORMAT_DUAL30BPP', - 'TMDS_COLOR_FORMAT_RESERVED', 'TMDS_COLOR_FORMAT_TWIN30BPP_LSB', - 'TMDS_COLOR_FORMAT__24BPP__TWIN30BPP_MSB__DUAL48BPP', - 'TMDS_CTL0_DATA_INVERT', 'TMDS_CTL0_DATA_INVERT_EN', - 'TMDS_CTL0_DATA_MODULATION', 'TMDS_CTL0_DATA_MODULATION_BIT0', - 'TMDS_CTL0_DATA_MODULATION_BIT1', - 'TMDS_CTL0_DATA_MODULATION_BIT2', - 'TMDS_CTL0_DATA_MODULATION_DISABLE', 'TMDS_CTL0_DATA_NORMAL', - 'TMDS_CTL0_DATA_SEL', 'TMDS_CTL0_DATA_SEL0_RESERVED', - 'TMDS_CTL0_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL0_DATA_SEL2_VSYNC', - 'TMDS_CTL0_DATA_SEL3_RESERVED', 'TMDS_CTL0_DATA_SEL4_HSYNC', - 'TMDS_CTL0_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL0_DATA_SEL8_RANDOM_DATA', - 'TMDS_CTL0_DATA_SEL9_SEL15_RANDOM_DATA', - 'TMDS_CTL0_PATTERN_OUT_DISABLE', 'TMDS_CTL0_PATTERN_OUT_EN', - 'TMDS_CTL0_PATTERN_OUT_ENABLE', 'TMDS_CTL1_DATA_INVERT', - 'TMDS_CTL1_DATA_INVERT_EN', 'TMDS_CTL1_DATA_MODULATION', - 'TMDS_CTL1_DATA_MODULATION_BIT0', - 'TMDS_CTL1_DATA_MODULATION_BIT1', - 'TMDS_CTL1_DATA_MODULATION_BIT2', - 'TMDS_CTL1_DATA_MODULATION_DISABLE', 'TMDS_CTL1_DATA_NORMAL', - 'TMDS_CTL1_DATA_SEL', 'TMDS_CTL1_DATA_SEL0_RESERVED', - 'TMDS_CTL1_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL1_DATA_SEL2_VSYNC', - 'TMDS_CTL1_DATA_SEL3_RESERVED', 'TMDS_CTL1_DATA_SEL4_HSYNC', - 'TMDS_CTL1_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL1_DATA_SEL8_BLANK_TIME', - 'TMDS_CTL1_DATA_SEL9_SEL15_RESERVED', - 'TMDS_CTL1_PATTERN_OUT_DISABLE', 'TMDS_CTL1_PATTERN_OUT_EN', - 'TMDS_CTL1_PATTERN_OUT_ENABLE', 'TMDS_CTL2_DATA_INVERT', - 'TMDS_CTL2_DATA_INVERT_EN', 'TMDS_CTL2_DATA_MODULATION', - 'TMDS_CTL2_DATA_MODULATION_BIT0', - 'TMDS_CTL2_DATA_MODULATION_BIT1', - 'TMDS_CTL2_DATA_MODULATION_BIT2', - 'TMDS_CTL2_DATA_MODULATION_DISABLE', 'TMDS_CTL2_DATA_NORMAL', - 'TMDS_CTL2_DATA_SEL', 'TMDS_CTL2_DATA_SEL0_RESERVED', - 'TMDS_CTL2_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL2_DATA_SEL2_VSYNC', - 'TMDS_CTL2_DATA_SEL3_RESERVED', 'TMDS_CTL2_DATA_SEL4_HSYNC', - 'TMDS_CTL2_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL2_DATA_SEL8_BLANK_TIME', - 'TMDS_CTL2_DATA_SEL9_SEL15_RESERVED', - 'TMDS_CTL2_PATTERN_OUT_DISABLE', 'TMDS_CTL2_PATTERN_OUT_EN', - 'TMDS_CTL2_PATTERN_OUT_ENABLE', 'TMDS_CTL3_DATA_INVERT', - 'TMDS_CTL3_DATA_INVERT_EN', 'TMDS_CTL3_DATA_MODULATION', - 'TMDS_CTL3_DATA_MODULATION_BIT0', - 'TMDS_CTL3_DATA_MODULATION_BIT1', - 'TMDS_CTL3_DATA_MODULATION_BIT2', - 'TMDS_CTL3_DATA_MODULATION_DISABLE', 'TMDS_CTL3_DATA_NORMAL', - 'TMDS_CTL3_DATA_SEL', 'TMDS_CTL3_DATA_SEL0_RESERVED', - 'TMDS_CTL3_DATA_SEL1_DISPLAY_ENABLE', 'TMDS_CTL3_DATA_SEL2_VSYNC', - 'TMDS_CTL3_DATA_SEL3_RESERVED', 'TMDS_CTL3_DATA_SEL4_HSYNC', - 'TMDS_CTL3_DATA_SEL5_SEL7_RESERVED', - 'TMDS_CTL3_DATA_SEL8_BLANK_TIME', - 'TMDS_CTL3_DATA_SEL9_SEL15_RESERVED', - 'TMDS_CTL3_PATTERN_OUT_DISABLE', 'TMDS_CTL3_PATTERN_OUT_EN', - 'TMDS_CTL3_PATTERN_OUT_ENABLE', - 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL', - 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_PCLK_TMDS', - 'TMDS_DATA_SYNCHRONIZATION_DSINTSEL_TMDS_PLL', 'TMDS_MUX_SELECT', - 'TMDS_MUX_SELECT_B', 'TMDS_MUX_SELECT_G', 'TMDS_MUX_SELECT_R', - 'TMDS_MUX_SELECT_RESERVED', 'TMDS_NOT_SYNC_PHASE_ON_FRAME_START', - 'TMDS_PIXEL_ENCODING', 'TMDS_PIXEL_ENCODING_422', - 'TMDS_PIXEL_ENCODING_444_OR_420', 'TMDS_REG_TEST_OUTPUTA_CNTLA', - 'TMDS_REG_TEST_OUTPUTA_CNTLA_NA', - 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA0', - 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA1', - 'TMDS_REG_TEST_OUTPUTA_CNTLA_OTDATA2', - 'TMDS_REG_TEST_OUTPUTB_CNTLB', 'TMDS_REG_TEST_OUTPUTB_CNTLB_NA', - 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB0', - 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB1', - 'TMDS_REG_TEST_OUTPUTB_CNTLB_OTDATB2', 'TMDS_STEREOSYNC_CTL0', - 'TMDS_STEREOSYNC_CTL1', 'TMDS_STEREOSYNC_CTL2', - 'TMDS_STEREOSYNC_CTL3', 'TMDS_STEREOSYNC_CTL_SEL_REG', - 'TMDS_SYNC_PHASE', 'TMDS_SYNC_PHASE_ON_FRAME_START', - 'TMDS_TRANSMITTER_BYPASS_PLLA_COHERENT', - 'TMDS_TRANSMITTER_BYPASS_PLLA_INCOHERENT', - 'TMDS_TRANSMITTER_BYPASS_PLLB_COHERENT', - 'TMDS_TRANSMITTER_BYPASS_PLLB_INCOHERENT', - 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLA', - 'TMDS_TRANSMITTER_CONTROL_BYPASS_PLLB', - 'TMDS_TRANSMITTER_CONTROL_IDSCKSELA', - 'TMDS_TRANSMITTER_CONTROL_IDSCKSELB', - 'TMDS_TRANSMITTER_CONTROL_PLLSEL_OVERWRITE_EN', - 'TMDS_TRANSMITTER_CONTROL_PLL_ENABLE_HPD_MASK', - 'TMDS_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN', - 'TMDS_TRANSMITTER_CONTROL_PLL_RESET_HPD_MASK', - 'TMDS_TRANSMITTER_CONTROL_TDCLK_FROM_PADS', - 'TMDS_TRANSMITTER_CONTROL_TMCLK_FROM_PADS', - 'TMDS_TRANSMITTER_ENABLE_HPD_MASK', - 'TMDS_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK', - 'TMDS_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK', - 'TMDS_TRANSMITTER_HPD_MASK_NOT_OVERRIDE', - 'TMDS_TRANSMITTER_HPD_MASK_OVERRIDE', - 'TMDS_TRANSMITTER_HPD_NOT_OVERRIDE_PLL_ENABLE', - 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE', - 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_CON', - 'TMDS_TRANSMITTER_HPD_OVERRIDE_PLL_ENABLE_ON_DISCON', - 'TMDS_TRANSMITTER_IDSCKSELA_USE_IDCLK', - 'TMDS_TRANSMITTER_IDSCKSELA_USE_IPIXCLK', - 'TMDS_TRANSMITTER_IDSCKSELB_USE_IDCLK', - 'TMDS_TRANSMITTER_IDSCKSELB_USE_IPIXCLK', - 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_NOT_OVERRIDE', - 'TMDS_TRANSMITTER_LNKCEN_HPD_MASK_OVERRIDE', - 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_NOT_OVERRIDE', - 'TMDS_TRANSMITTER_LNKDEN_HPD_MASK_OVERRIDE', - 'TMDS_TRANSMITTER_PLLSEL_BY_HW', - 'TMDS_TRANSMITTER_PLLSEL_OVERWRITE_BY_SW', - 'TMDS_TRANSMITTER_PLL_NOT_RST_ON_HPD', - 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_DISABLE', - 'TMDS_TRANSMITTER_PLL_PWRUP_SEQ_ENABLE', - 'TMDS_TRANSMITTER_PLL_RST_ON_HPD', - 'TMDS_TRANSMITTER_TDCLK_FROM_PADS', - 'TMDS_TRANSMITTER_TDCLK_FROM_TMDS_TDCLK', - 'TMDS_TRANSMITTER_TMCLK_FROM_PADS', - 'TMDS_TRANSMITTER_TMCLK_FROM_TMDS_TMCLK', 'TRANSERR', - 'TRANSFERRED_1024_BYTES', 'TRANSFERRED_128_BYTES', - 'TRANSFERRED_2048_BYTES', 'TRANSFERRED_256_BYTES', - 'TRANSFERRED_4096_BYTES', 'TRANSFERRED_512_BYTES', - 'TRANSFERRED_64_BYTES', 'TRANSFERRED_8192_BYTES', 'TRAPEZOIDS', - 'TRISTRIP', 'TVX_TYPE', 'TVX_Type_InvalidTextureResource', - 'TVX_Type_InvalidVertexBuffer', 'TVX_Type_ValidTextureResource', - 'TVX_Type_ValidVertexBuffer', 'UCONFIG_SPACE_END', - 'UCONFIG_SPACE_START', 'UMC_BASE', 'UMC_BASE__INST0_SEG0', - 'UMC_BASE__INST0_SEG1', 'UMC_BASE__INST0_SEG2', - 'UMC_BASE__INST0_SEG3', 'UMC_BASE__INST0_SEG4', - 'UMC_BASE__INST1_SEG0', 'UMC_BASE__INST1_SEG1', - 'UMC_BASE__INST1_SEG2', 'UMC_BASE__INST1_SEG3', - 'UMC_BASE__INST1_SEG4', 'UMC_BASE__INST2_SEG0', - 'UMC_BASE__INST2_SEG1', 'UMC_BASE__INST2_SEG2', - 'UMC_BASE__INST2_SEG3', 'UMC_BASE__INST2_SEG4', - 'UMC_BASE__INST3_SEG0', 'UMC_BASE__INST3_SEG1', - 'UMC_BASE__INST3_SEG2', 'UMC_BASE__INST3_SEG3', - 'UMC_BASE__INST3_SEG4', 'UMC_BASE__INST4_SEG0', - 'UMC_BASE__INST4_SEG1', 'UMC_BASE__INST4_SEG2', - 'UMC_BASE__INST4_SEG3', 'UMC_BASE__INST4_SEG4', - 'UMC_BASE__INST5_SEG0', 'UMC_BASE__INST5_SEG1', - 'UMC_BASE__INST5_SEG2', 'UMC_BASE__INST5_SEG3', - 'UMC_BASE__INST5_SEG4', 'UMC_BASE__INST6_SEG0', - 'UMC_BASE__INST6_SEG1', 'UMC_BASE__INST6_SEG2', - 'UMC_BASE__INST6_SEG3', 'UMC_BASE__INST6_SEG4', 'UNDEF', - 'UNSIGNED', 'USB0_BASE', 'USB0_BASE__INST0_SEG0', + 'PCIE0_BASE__INST6_SEG4', 'SDMA0_BASE', 'SDMA0_BASE__INST0_SEG0', + 'SDMA0_BASE__INST0_SEG1', 'SDMA0_BASE__INST0_SEG2', + 'SDMA0_BASE__INST0_SEG3', 'SDMA0_BASE__INST0_SEG4', + 'SDMA0_BASE__INST1_SEG0', 'SDMA0_BASE__INST1_SEG1', + 'SDMA0_BASE__INST1_SEG2', 'SDMA0_BASE__INST1_SEG3', + 'SDMA0_BASE__INST1_SEG4', 'SDMA0_BASE__INST2_SEG0', + 'SDMA0_BASE__INST2_SEG1', 'SDMA0_BASE__INST2_SEG2', + 'SDMA0_BASE__INST2_SEG3', 'SDMA0_BASE__INST2_SEG4', + 'SDMA0_BASE__INST3_SEG0', 'SDMA0_BASE__INST3_SEG1', + 'SDMA0_BASE__INST3_SEG2', 'SDMA0_BASE__INST3_SEG3', + 'SDMA0_BASE__INST3_SEG4', 'SDMA0_BASE__INST4_SEG0', + 'SDMA0_BASE__INST4_SEG1', 'SDMA0_BASE__INST4_SEG2', + 'SDMA0_BASE__INST4_SEG3', 'SDMA0_BASE__INST4_SEG4', + 'SDMA0_BASE__INST5_SEG0', 'SDMA0_BASE__INST5_SEG1', + 'SDMA0_BASE__INST5_SEG2', 'SDMA0_BASE__INST5_SEG3', + 'SDMA0_BASE__INST5_SEG4', 'SDMA0_BASE__INST6_SEG0', + 'SDMA0_BASE__INST6_SEG1', 'SDMA0_BASE__INST6_SEG2', + 'SDMA0_BASE__INST6_SEG3', 'SDMA0_BASE__INST6_SEG4', 'SDMA1_BASE', + 'SDMA1_BASE__INST0_SEG0', 'SDMA1_BASE__INST0_SEG1', + 'SDMA1_BASE__INST0_SEG2', 'SDMA1_BASE__INST0_SEG3', + 'SDMA1_BASE__INST0_SEG4', 'SDMA1_BASE__INST1_SEG0', + 'SDMA1_BASE__INST1_SEG1', 'SDMA1_BASE__INST1_SEG2', + 'SDMA1_BASE__INST1_SEG3', 'SDMA1_BASE__INST1_SEG4', + 'SDMA1_BASE__INST2_SEG0', 'SDMA1_BASE__INST2_SEG1', + 'SDMA1_BASE__INST2_SEG2', 'SDMA1_BASE__INST2_SEG3', + 'SDMA1_BASE__INST2_SEG4', 'SDMA1_BASE__INST3_SEG0', + 'SDMA1_BASE__INST3_SEG1', 'SDMA1_BASE__INST3_SEG2', + 'SDMA1_BASE__INST3_SEG3', 'SDMA1_BASE__INST3_SEG4', + 'SDMA1_BASE__INST4_SEG0', 'SDMA1_BASE__INST4_SEG1', + 'SDMA1_BASE__INST4_SEG2', 'SDMA1_BASE__INST4_SEG3', + 'SDMA1_BASE__INST4_SEG4', 'SDMA1_BASE__INST5_SEG0', + 'SDMA1_BASE__INST5_SEG1', 'SDMA1_BASE__INST5_SEG2', + 'SDMA1_BASE__INST5_SEG3', 'SDMA1_BASE__INST5_SEG4', + 'SDMA1_BASE__INST6_SEG0', 'SDMA1_BASE__INST6_SEG1', + 'SDMA1_BASE__INST6_SEG2', 'SDMA1_BASE__INST6_SEG3', + 'SDMA1_BASE__INST6_SEG4', 'SDMA_ATOMIC_ADD64', 'SDMA_OP_ATOMIC', + 'SDMA_OP_CONST_FILL', 'SDMA_OP_COPY', 'SDMA_OP_FENCE', + 'SDMA_OP_GCR', 'SDMA_OP_POLL_REGMEM', 'SDMA_OP_TIMESTAMP', + 'SDMA_OP_TRAP', 'SDMA_PKT_ATOMIC', 'SDMA_PKT_CONSTANT_FILL', + 'SDMA_PKT_COPY_LINEAR', 'SDMA_PKT_COPY_LINEAR_RECT', + 'SDMA_PKT_FENCE', 'SDMA_PKT_GCR', 'SDMA_PKT_HDP_FLUSH', + 'SDMA_PKT_POLL_REGMEM', 'SDMA_PKT_TIMESTAMP', 'SDMA_PKT_TRAP', + 'SDMA_SUBOP_COPY_LINEAR', 'SDMA_SUBOP_COPY_LINEAR_RECT', + 'SDMA_SUBOP_TIMESTAMP_GET_GLOBAL', 'SDMA_SUBOP_USER_GCR', + 'SMUIO_BASE', 'SMUIO_BASE__INST0_SEG0', 'SMUIO_BASE__INST0_SEG1', + 'SMUIO_BASE__INST0_SEG2', 'SMUIO_BASE__INST0_SEG3', + 'SMUIO_BASE__INST0_SEG4', 'SMUIO_BASE__INST1_SEG0', + 'SMUIO_BASE__INST1_SEG1', 'SMUIO_BASE__INST1_SEG2', + 'SMUIO_BASE__INST1_SEG3', 'SMUIO_BASE__INST1_SEG4', + 'SMUIO_BASE__INST2_SEG0', 'SMUIO_BASE__INST2_SEG1', + 'SMUIO_BASE__INST2_SEG2', 'SMUIO_BASE__INST2_SEG3', + 'SMUIO_BASE__INST2_SEG4', 'SMUIO_BASE__INST3_SEG0', + 'SMUIO_BASE__INST3_SEG1', 'SMUIO_BASE__INST3_SEG2', + 'SMUIO_BASE__INST3_SEG3', 'SMUIO_BASE__INST3_SEG4', + 'SMUIO_BASE__INST4_SEG0', 'SMUIO_BASE__INST4_SEG1', + 'SMUIO_BASE__INST4_SEG2', 'SMUIO_BASE__INST4_SEG3', + 'SMUIO_BASE__INST4_SEG4', 'SMUIO_BASE__INST5_SEG0', + 'SMUIO_BASE__INST5_SEG1', 'SMUIO_BASE__INST5_SEG2', + 'SMUIO_BASE__INST5_SEG3', 'SMUIO_BASE__INST5_SEG4', + 'SMUIO_BASE__INST6_SEG0', 'SMUIO_BASE__INST6_SEG1', + 'SMUIO_BASE__INST6_SEG2', 'SMUIO_BASE__INST6_SEG3', + 'SMUIO_BASE__INST6_SEG4', 'THM_BASE', 'THM_BASE__INST0_SEG0', + 'THM_BASE__INST0_SEG1', 'THM_BASE__INST0_SEG2', + 'THM_BASE__INST0_SEG3', 'THM_BASE__INST0_SEG4', + 'THM_BASE__INST1_SEG0', 'THM_BASE__INST1_SEG1', + 'THM_BASE__INST1_SEG2', 'THM_BASE__INST1_SEG3', + 'THM_BASE__INST1_SEG4', 'THM_BASE__INST2_SEG0', + 'THM_BASE__INST2_SEG1', 'THM_BASE__INST2_SEG2', + 'THM_BASE__INST2_SEG3', 'THM_BASE__INST2_SEG4', + 'THM_BASE__INST3_SEG0', 'THM_BASE__INST3_SEG1', + 'THM_BASE__INST3_SEG2', 'THM_BASE__INST3_SEG3', + 'THM_BASE__INST3_SEG4', 'THM_BASE__INST4_SEG0', + 'THM_BASE__INST4_SEG1', 'THM_BASE__INST4_SEG2', + 'THM_BASE__INST4_SEG3', 'THM_BASE__INST4_SEG4', + 'THM_BASE__INST5_SEG0', 'THM_BASE__INST5_SEG1', + 'THM_BASE__INST5_SEG2', 'THM_BASE__INST5_SEG3', + 'THM_BASE__INST5_SEG4', 'THM_BASE__INST6_SEG0', + 'THM_BASE__INST6_SEG1', 'THM_BASE__INST6_SEG2', + 'THM_BASE__INST6_SEG3', 'THM_BASE__INST6_SEG4', 'UMC_BASE', + 'UMC_BASE__INST0_SEG0', 'UMC_BASE__INST0_SEG1', + 'UMC_BASE__INST0_SEG2', 'UMC_BASE__INST0_SEG3', + 'UMC_BASE__INST0_SEG4', 'UMC_BASE__INST1_SEG0', + 'UMC_BASE__INST1_SEG1', 'UMC_BASE__INST1_SEG2', + 'UMC_BASE__INST1_SEG3', 'UMC_BASE__INST1_SEG4', + 'UMC_BASE__INST2_SEG0', 'UMC_BASE__INST2_SEG1', + 'UMC_BASE__INST2_SEG2', 'UMC_BASE__INST2_SEG3', + 'UMC_BASE__INST2_SEG4', 'UMC_BASE__INST3_SEG0', + 'UMC_BASE__INST3_SEG1', 'UMC_BASE__INST3_SEG2', + 'UMC_BASE__INST3_SEG3', 'UMC_BASE__INST3_SEG4', + 'UMC_BASE__INST4_SEG0', 'UMC_BASE__INST4_SEG1', + 'UMC_BASE__INST4_SEG2', 'UMC_BASE__INST4_SEG3', + 'UMC_BASE__INST4_SEG4', 'UMC_BASE__INST5_SEG0', + 'UMC_BASE__INST5_SEG1', 'UMC_BASE__INST5_SEG2', + 'UMC_BASE__INST5_SEG3', 'UMC_BASE__INST5_SEG4', + 'UMC_BASE__INST6_SEG0', 'UMC_BASE__INST6_SEG1', + 'UMC_BASE__INST6_SEG2', 'UMC_BASE__INST6_SEG3', + 'UMC_BASE__INST6_SEG4', 'USB0_BASE', 'USB0_BASE__INST0_SEG0', 'USB0_BASE__INST0_SEG1', 'USB0_BASE__INST0_SEG2', 'USB0_BASE__INST0_SEG3', 'USB0_BASE__INST0_SEG4', 'USB0_BASE__INST1_SEG0', 'USB0_BASE__INST1_SEG1', @@ -73131,361 +14302,28 @@ __all__ = \ 'USB0_BASE__INST5_SEG2', 'USB0_BASE__INST5_SEG3', 'USB0_BASE__INST5_SEG4', 'USB0_BASE__INST6_SEG0', 'USB0_BASE__INST6_SEG1', 'USB0_BASE__INST6_SEG2', - 'USB0_BASE__INST6_SEG3', 'USB0_BASE__INST6_SEG4', - 'USE_MALL_FOR_CURSOR', 'USE_MALL_FOR_CURSOR_0', - 'USE_MALL_FOR_CURSOR_1', 'USE_MALL_FOR_PSTATE_CHANGE', - 'USE_MALL_FOR_PSTATE_CHANGE_0', 'USE_MALL_FOR_PSTATE_CHANGE_1', - 'USE_MALL_FOR_STATIC_SCREEN', 'USE_MALL_FOR_STATIC_SCREEN_0', - 'USE_MALL_FOR_STATIC_SCREEN_1', 'UTCL0FaultType', - 'UTCL0RequestType', 'UTCL0_TYPE_BYPASS', 'UTCL0_TYPE_NORMAL', - 'UTCL0_TYPE_SHOOTDOWN', 'UTCL0_XNACK_NO_RETRY', 'UTCL0_XNACK_PRT', - 'UTCL0_XNACK_RETRY', 'UTCL0_XNACK_SUCCESS', 'UTCL1FaultType', - 'UTCL1PerfSel', 'UTCL1RequestType', 'UTCL1_PERF_SEL_BYPASS_REQS', - 'UTCL1_PERF_SEL_CP_INVREQS', 'UTCL1_PERF_SEL_HITS', - 'UTCL1_PERF_SEL_HIT_INV_FILTER_REQS', - 'UTCL1_PERF_SEL_INV_ALL_VMID_INVREQS', - 'UTCL1_PERF_SEL_MH_DUPLICATE_DETECT', - 'UTCL1_PERF_SEL_MH_RECENT_BUF_HIT', 'UTCL1_PERF_SEL_MISSES', - 'UTCL1_PERF_SEL_NONE', 'UTCL1_PERF_SEL_RANGE_INVREQS', - 'UTCL1_PERF_SEL_REQS', 'UTCL1_PERF_SEL_RTNS', - 'UTCL1_PERF_SEL_STALL_MH_FULL', - 'UTCL1_PERF_SEL_STALL_UTCL2_CREDITS', 'UTCL1_PERF_SEL_UTCL2_REQS', - 'UTCL1_PERF_SEL_UTCL2_REQS_OUTSTANDING_ACCUM', - 'UTCL1_PERF_SEL_UTCL2_RET_CNT', 'UTCL1_PERF_SEL_UTCL2_RET_FAULT', - 'UTCL1_PERF_SEL_UTCL2_RET_PERM_FAULT', - 'UTCL1_PERF_SEL_UTCL2_RET_PRT_FAULT', - 'UTCL1_PERF_SEL_UTCL2_RET_XNACK_RETRY', - 'UTCL1_PERF_SEL_UTCL2_UTCL1_INVREQS', - 'UTCL1_PERF_SEL_XLAT_REQ_BUSY', 'UTCL1_TYPE_BYPASS', - 'UTCL1_TYPE_NORMAL', 'UTCL1_TYPE_SHOOTDOWN', - 'UTCL1_XNACK_NO_RETRY', 'UTCL1_XNACK_PRT', 'UTCL1_XNACK_RETRY', - 'UTCL1_XNACK_SUCCESS', 'VCN_BASE', 'VCN_BASE__INST0_SEG0', - 'VCN_BASE__INST0_SEG1', 'VCN_BASE__INST0_SEG2', - 'VCN_BASE__INST0_SEG3', 'VCN_BASE__INST0_SEG4', - 'VCN_BASE__INST1_SEG0', 'VCN_BASE__INST1_SEG1', - 'VCN_BASE__INST1_SEG2', 'VCN_BASE__INST1_SEG3', - 'VCN_BASE__INST1_SEG4', 'VCN_BASE__INST2_SEG0', - 'VCN_BASE__INST2_SEG1', 'VCN_BASE__INST2_SEG2', - 'VCN_BASE__INST2_SEG3', 'VCN_BASE__INST2_SEG4', - 'VCN_BASE__INST3_SEG0', 'VCN_BASE__INST3_SEG1', - 'VCN_BASE__INST3_SEG2', 'VCN_BASE__INST3_SEG3', - 'VCN_BASE__INST3_SEG4', 'VCN_BASE__INST4_SEG0', - 'VCN_BASE__INST4_SEG1', 'VCN_BASE__INST4_SEG2', - 'VCN_BASE__INST4_SEG3', 'VCN_BASE__INST4_SEG4', - 'VCN_BASE__INST5_SEG0', 'VCN_BASE__INST5_SEG1', - 'VCN_BASE__INST5_SEG2', 'VCN_BASE__INST5_SEG3', - 'VCN_BASE__INST5_SEG4', 'VCN_BASE__INST6_SEG0', - 'VCN_BASE__INST6_SEG1', 'VCN_BASE__INST6_SEG2', - 'VCN_BASE__INST6_SEG3', 'VCN_BASE__INST6_SEG4', 'VGT_DETECT_ONE', - 'VGT_DETECT_ZERO', 'VGT_DIST_MODE', 'VGT_DI_INDEX_SIZE', - 'VGT_DI_MAJOR_MODE_SELECT', 'VGT_DI_PRIM_TYPE', - 'VGT_DI_SOURCE_SELECT', 'VGT_DMA_BUF_MEM', 'VGT_DMA_BUF_RING', - 'VGT_DMA_BUF_SETUP', 'VGT_DMA_BUF_TYPE', 'VGT_DMA_PTR_UPDATE', - 'VGT_DMA_SWAP_16_BIT', 'VGT_DMA_SWAP_32_BIT', 'VGT_DMA_SWAP_MODE', - 'VGT_DMA_SWAP_NONE', 'VGT_DMA_SWAP_WORD', 'VGT_EVENT_TYPE', - 'VGT_FLUSH', 'VGT_GROUP_CONV_SEL', 'VGT_GRP_AUTO_PRIM', - 'VGT_GRP_FIX_1_23_TO_FLOAT', 'VGT_GRP_FLOAT_32', - 'VGT_GRP_INDEX_16', 'VGT_GRP_INDEX_32', 'VGT_GRP_SINT_16', - 'VGT_GRP_SINT_32', 'VGT_GRP_UINT_16', 'VGT_GRP_UINT_32', - 'VGT_GS_MODE_TYPE', 'VGT_GS_OUTPRIM_TYPE', 'VGT_INDEX_16', - 'VGT_INDEX_32', 'VGT_INDEX_8', 'VGT_INDEX_TYPE_MODE', - 'VGT_OUTPATH_GS_BLOCK', 'VGT_OUTPATH_HS_BLOCK', - 'VGT_OUTPATH_PRIM_GEN', 'VGT_OUTPATH_SELECT', - 'VGT_OUTPATH_TE_GS_BLOCK', 'VGT_OUTPATH_TE_OUTPUT', - 'VGT_OUTPATH_TE_PRIM_GEN', 'VGT_OUTPATH_VTX_REUSE', - 'VGT_OUT_2D_RECT', 'VGT_OUT_LINE', 'VGT_OUT_LINE_ADJ', - 'VGT_OUT_PATCH', 'VGT_OUT_POINT', 'VGT_OUT_PRIM_TYPE', - 'VGT_OUT_RECT_V0', 'VGT_OUT_RECT_V1', 'VGT_OUT_RECT_V2', - 'VGT_OUT_RECT_V3', 'VGT_OUT_TRI', 'VGT_OUT_TRI_ADJ', - 'VGT_POLICY_BYPASS', 'VGT_POLICY_LRU', 'VGT_POLICY_STREAM', - 'VGT_RDREQ_POLICY', 'VGT_STAGES_ES_EN', 'VGT_STAGES_GS_EN', - 'VGT_STAGES_HS_EN', 'VGT_STAGES_LS_EN', 'VGT_STAGES_VS_EN', - 'VGT_STREAMOUT_RESET', 'VGT_STREAMOUT_SYNC', 'VGT_TESS_PARTITION', - 'VGT_TESS_TOPOLOGY', 'VGT_TESS_TYPE', 'VGT_TE_PRIM_INDEX_LINE', - 'VGT_TE_PRIM_INDEX_QUAD', 'VGT_TE_PRIM_INDEX_TRI', 'VGT_TE_QUAD', - 'VID_ENHANCED_MODE', 'VID_NORMAL_FRAME_MODE', - 'VID_STREAM_DISABLE_MASKED', 'VID_STREAM_DISABLE_UNMASK', - 'VMEMCMD_RETURN_IN_ORDER', 'VMEMCMD_RETURN_IN_ORDER_READ', - 'VMEMCMD_RETURN_ORDER', 'VMEMCMD_RETURN_OUT_OF_ORDER', 'VMID_SZ', - 'VMPG_SIZE', 'VMPG_SIZE_4KB', 'VMPG_SIZE_64KB', 'VM_GROUP_SIZE', - 'VM_GROUP_SIZE_1024B', 'VM_GROUP_SIZE_128B', - 'VM_GROUP_SIZE_2048B', 'VM_GROUP_SIZE_256B', 'VM_GROUP_SIZE_512B', - 'VM_GROUP_SIZE_64B', 'VM_PG_SIZE_1024KB', 'VM_PG_SIZE_128KB', - 'VM_PG_SIZE_16KB', 'VM_PG_SIZE_2048KB', 'VM_PG_SIZE_256KB', - 'VM_PG_SIZE_32KB', 'VM_PG_SIZE_4KB', 'VM_PG_SIZE_512KB', - 'VM_PG_SIZE_64KB', 'VM_PG_SIZE_8KB', - 'VPG_MEM_DISABLE_MEM_PWR_CTRL', 'VPG_MEM_ENABLE_MEM_PWR_CTRL', - 'VPG_MEM_FORCE_LIGHT_SLEEP_REQ', 'VPG_MEM_NO_FORCE_REQ', - 'VPG_MEM_PWR_DIS_CTRL', 'VPG_MEM_PWR_FORCE_CTRL', - 'VREADY_AT_OR_AFTER_VSYNC', 'VREADY_BEFORE_VSYNC', - 'VRSCombinerModeSC', 'VRS_SHADING_RATE_16X_SSAA', - 'VRS_SHADING_RATE_1X1', 'VRS_SHADING_RATE_1X2', - 'VRS_SHADING_RATE_2X1', 'VRS_SHADING_RATE_2X2', - 'VRS_SHADING_RATE_2X4', 'VRS_SHADING_RATE_2X_SSAA', - 'VRS_SHADING_RATE_4X2', 'VRS_SHADING_RATE_4X4', - 'VRS_SHADING_RATE_4X_SSAA', 'VRS_SHADING_RATE_8X_SSAA', - 'VRS_SHADING_RATE_UNDEFINED0', 'VRS_SHADING_RATE_UNDEFINED1', - 'VRS_SHADING_RATE_UNDEFINED2', 'VRS_SHADING_RATE_UNDEFINED3', - 'VRS_SHADING_RATE_UNDEFINED4', 'VRSrate', 'VSYNC_CNT_LATCH_MASK', - 'VSYNC_CNT_LATCH_MASK_0', 'VSYNC_CNT_LATCH_MASK_1', - 'VSYNC_CNT_RESET_SEL', 'VSYNC_CNT_RESET_SEL_0', - 'VSYNC_CNT_RESET_SEL_1', 'VS_PARTIAL_FLUSH', - 'VS_STAGE_COPY_SHADER', 'VS_STAGE_DS', 'VS_STAGE_REAL', - 'VTG_SEL_0', 'VTG_SEL_1', 'VTG_SEL_2', 'VTG_SEL_3', 'VTG_SEL_4', - 'VTG_SEL_5', 'WAIT_SYNC', 'WATERMARK_MODE', 'WD_IA_DRAW_REG_XFER', - 'WD_IA_DRAW_REG_XFER_FL_MS_EXP_ALLOC', - 'WD_IA_DRAW_REG_XFER_FL_MS_TG_SIZE', - 'WD_IA_DRAW_REG_XFER_FL_MS_WG_DIM', - 'WD_IA_DRAW_REG_XFER_FL_MS_WG_DIM_1', - 'WD_IA_DRAW_REG_XFER_GE_CNTL', - 'WD_IA_DRAW_REG_XFER_GE_USER_VGPR_EN', - 'WD_IA_DRAW_REG_XFER_IA_MULTI_VGT_PARAM', - 'WD_IA_DRAW_REG_XFER_VGT_INSTANCE_BASE_ID', - 'WD_IA_DRAW_REG_XFER_VGT_MULTI_PRIM_IB_RESET_EN', - 'WD_IA_DRAW_SOURCE', 'WD_IA_DRAW_SOURCE_AUTO', - 'WD_IA_DRAW_SOURCE_DMA', 'WD_IA_DRAW_SOURCE_IMMD', - 'WD_IA_DRAW_SOURCE_OPAQ', 'WD_IA_DRAW_TYPE', - 'WD_IA_DRAW_TYPE_DI_MM0', 'WD_IA_DRAW_TYPE_EVENT_ADDR', - 'WD_IA_DRAW_TYPE_EVENT_INIT', 'WD_IA_DRAW_TYPE_IMM_DATA', - 'WD_IA_DRAW_TYPE_INDX_OFF', 'WD_IA_DRAW_TYPE_MAX_INDX', - 'WD_IA_DRAW_TYPE_MIN_INDX', 'WD_IA_DRAW_TYPE_REG_XFER', - 'WRITE_BASE_ONLY', 'WRITE_BOTH', 'WRITE_DATA_addr_incr_enum', - 'WRITE_DATA_cache_policy_enum', 'WRITE_DATA_dst_sel_enum', - 'WRITE_DATA_wr_confirm_enum', 'WR_CONFIRM', 'WR_ONE_ADDR', - 'WritePolicy', 'XNORM', 'XNORM_A', 'XNORM_B', - 'XTAL_REF_CLOCK_SOURCE_SEL', - 'XTAL_REF_CLOCK_SOURCE_SEL_DCCGREFCLK', - 'XTAL_REF_CLOCK_SOURCE_SEL_XTALIN', 'XTAL_REF_SEL', - 'XTAL_REF_SEL_1X', 'XTAL_REF_SEL_2X', 'Y10_CbCr1010_420_PLANAR', - 'Y10_CrCb1010_420_PLANAR', 'Y12_CbCr1212_420_PLANAR', - 'Y12_CrCb1212_420_PLANAR', 'Y8_CbCr88_420_PLANAR', - 'Y8_CrCb88_420_PLANAR', 'YCbYCr10101010_422_PACKED', - 'YCbYCr12121212_422_PACKED', 'YCbYCr8888_422_PACKED', - 'YCrCbA16161616_10LSB', 'YCrCbA16161616_10MSB', - 'YCrCbA16161616_12LSB', 'YCrCbA16161616_12MSB', 'YCrCbA8888', - 'YCrYCb10101010_422_PACKED', 'YCrYCb12121212_422_PACKED', - 'YCrYCb8888_422_PACKED', 'Y_G_DATA_ONTO_ALPHA_PORT', - 'Y_G_DATA_ONTO_CB_B_PORT', 'Y_G_DATA_ONTO_CR_R_PORT', - 'Y_G_DATA_ONTO_Y_G_PORT', 'ZLimitSumm', 'ZModeForce', 'ZOrder', - 'ZPASS_DISABLE', 'ZPASS_PIXELS', 'ZPASS_SAMPLES', - 'ZSamplePosition', 'Z_SAMPLE_CENTER', 'Z_SAMPLE_CENTROID', - 'ZpassControl', '__SDMA_V6_0_0_PKT_OPEN_H_', '__maybe_unused', - '_gc_10_3_0_OFFSET_HEADER', '_gc_11_0_0_OFFSET_HEADER', - '_sienna_cichlid_ip_offset_HEADER', '_soc21_ENUM_HEADER', - 'addr_incr___write_data__do_not_increment_address', - 'addr_incr___write_data__increment_address', - 'c__Ea_CACHE_FLUSH_AND_INV_TS_EVENT', 'c_uint32', 'c_uint32', - 'c_uint32', 'c_uint32', 'c_uint32', 'c_uint32', - 'cache_policy___write_data__lru', - 'cache_policy___write_data__stream', - 'cache_policy__mec_release_mem__lru', - 'cache_policy__mec_release_mem__stream', - 'data_sel__mec_release_mem__none', - 'data_sel__mec_release_mem__send_32_bit_low', - 'data_sel__mec_release_mem__send_64_bit_data', - 'data_sel__mec_release_mem__send_cp_perfcounter_hi_lo', - 'data_sel__mec_release_mem__send_gpu_clock_counter', - 'data_sel__mec_release_mem__store_gds_data_to_memory', - 'dst_sel___write_data__gds', - 'dst_sel___write_data__mem_mapped_register', - 'dst_sel___write_data__memory', - 'dst_sel___write_data__memory_mapped_adc_persistent_state', - 'dst_sel___write_data__tc_l2', - 'dst_sel__mec_release_mem__memory_controller', - 'dst_sel__mec_release_mem__queue_write_pointer_poll_mask_bit', - 'dst_sel__mec_release_mem__queue_write_pointer_register', - 'dst_sel__mec_release_mem__tc_l2', - 'event_index__mec_release_mem__end_of_pipe', - 'event_index__mec_release_mem__shader_done', 'ge1_assembler_busy', - 'ge1_assembler_dma_starved', 'ge1_assembler_stalled', - 'ge1_dma_busy', 'ge1_dma_lat_bin_0', 'ge1_dma_lat_bin_1', - 'ge1_dma_lat_bin_2', 'ge1_dma_lat_bin_3', 'ge1_dma_lat_bin_4', - 'ge1_dma_lat_bin_5', 'ge1_dma_lat_bin_6', 'ge1_dma_lat_bin_7', - 'ge1_dma_return_cl0', 'ge1_dma_return_cl1', - 'ge1_dma_return_size_cl0', 'ge1_dma_return_size_cl1', - 'ge1_dma_utcl1_consecutive_retry_event', - 'ge1_dma_utcl1_request_event', 'ge1_dma_utcl1_retry_event', - 'ge1_dma_utcl1_stall_event', 'ge1_dma_utcl1_stall_utcl2_event', - 'ge1_dma_utcl1_translation_hit_event', - 'ge1_dma_utcl1_translation_miss_event', 'ge1_pipe0_to_pipe1', - 'ge1_pipe1_to_pipe0', 'ge1_prim_group_limit_hit', - 'ge1_rbiu_di_fifo_stalled_p0', 'ge1_rbiu_di_fifo_stalled_p1', - 'ge1_rbiu_di_fifo_starved_p0', 'ge1_rbiu_di_fifo_starved_p1', - 'ge1_rbiu_dr_fifo_stalled_p0', 'ge1_rbiu_dr_fifo_stalled_p1', - 'ge1_rbiu_dr_fifo_starved_p0', 'ge1_rbiu_dr_fifo_starved_p1', - 'ge1_sclk_input_vld', 'ge1_sclk_reg_vld', - 'ge1_small_draws_one_instance', 'ge1_stat_busy', - 'ge1_stat_no_dma_busy', 'ge1_unopt_multi_instance_draws', - 'ge_agm_gcr_crd_stall', 'ge_agm_gcr_latency', 'ge_agm_gcr_req', - 'ge_agm_gcr_stall', 'ge_agm_gcr_tag_stall', 'ge_all_tf2', - 'ge_all_tf3', 'ge_all_tf4', 'ge_all_tf5', 'ge_all_tf6', - 'ge_all_tf_eq', 'ge_csb_spi_bp', 'ge_dist_distributer_busy', - 'ge_dist_hs_done', 'ge_dist_hs_done_latency', - 'ge_dist_hs_done_latency_se0', 'ge_dist_hs_done_latency_se1', - 'ge_dist_hs_done_latency_se2', 'ge_dist_hs_done_latency_se3', - 'ge_dist_hs_done_latency_se4', 'ge_dist_hs_done_latency_se5', - 'ge_dist_hs_done_latency_se6', 'ge_dist_hs_done_latency_se7', - 'ge_dist_hs_done_se0', 'ge_dist_hs_done_se1', - 'ge_dist_hs_done_se2', 'ge_dist_hs_done_se3', - 'ge_dist_hs_done_se4', 'ge_dist_hs_done_se5', - 'ge_dist_hs_done_se6', 'ge_dist_hs_done_se7', - 'ge_dist_inside_tf_bin_0', 'ge_dist_inside_tf_bin_1', - 'ge_dist_inside_tf_bin_2', 'ge_dist_inside_tf_bin_3', - 'ge_dist_inside_tf_bin_4', 'ge_dist_inside_tf_bin_5', - 'ge_dist_inside_tf_bin_6', 'ge_dist_inside_tf_bin_7', - 'ge_dist_inside_tf_bin_8', 'ge_dist_null_patch', - 'ge_dist_op_fifo_full_starve', 'ge_dist_pc_feorder_fifo_full', - 'ge_dist_pc_ge_manager_busy', 'ge_dist_pc_req_stall_se0', - 'ge_dist_pc_req_stall_se1', 'ge_dist_pc_req_stall_se2', - 'ge_dist_pc_req_stall_se3', 'ge_dist_pc_req_stall_se4', - 'ge_dist_pc_req_stall_se5', 'ge_dist_pc_req_stall_se6', - 'ge_dist_pc_req_stall_se7', 'ge_dist_pc_space_zero', - 'ge_dist_reserved', 'ge_dist_sclk_core_vld', - 'ge_dist_sclk_input_vld', 'ge_dist_sclk_wd_te11_vld', - 'ge_dist_switch_mode_stall', 'ge_dist_te11_starved', - 'ge_dist_tfreq_lat_bin_0', 'ge_dist_tfreq_lat_bin_1', - 'ge_dist_tfreq_lat_bin_2', 'ge_dist_tfreq_lat_bin_3', - 'ge_dist_tfreq_lat_bin_4', 'ge_dist_tfreq_lat_bin_5', - 'ge_dist_tfreq_lat_bin_6', 'ge_dist_tfreq_lat_bin_7', - 'ge_dist_tfreq_utcl1_consecutive_retry_event', - 'ge_dist_tfreq_utcl1_request_event', - 'ge_dist_tfreq_utcl1_retry_event', - 'ge_dist_tfreq_utcl1_stall_event', - 'ge_dist_tfreq_utcl1_stall_utcl2_event', - 'ge_dist_tfreq_utcl1_translation_hit_event', - 'ge_dist_tfreq_utcl1_translation_miss_event', - 'ge_dist_vs_pc_stall', 'ge_dist_wd_te11_busy', 'ge_distclk_vld', - 'ge_esvert_send', 'ge_gs_issue_rtr_stalled', 'ge_gsprim_send', - 'ge_gsprim_stalled_esvert', 'ge_gsthread_stalled', - 'ge_hs_stall_tfmm_fifo_full', 'ge_hs_tif_stall', - 'ge_ngg_agm_req_stall', 'ge_ngg_attr_discard_alloc', - 'ge_ngg_attr_grp_alloc', 'ge_ngg_attr_grp_latency', - 'ge_ngg_indx_bus_stall', 'ge_ngg_ord_id_req_stall', - 'ge_ngg_pc_space_not_avail', 'ge_ngg_reuse_prim_limit_hit', - 'ge_ngg_reuse_vert_limit_hit', 'ge_ngg_spi_esvert_partial_eov', - 'ge_ngg_spi_gsprim_partial_eov', 'ge_ngg_stall_tess_off_tess_on', - 'ge_ngg_stall_tess_on_tess_off', 'ge_ngg_starved_after_work', - 'ge_ngg_starved_idle', 'ge_ngg_starving_for_pc_grant', - 'ge_ngg_subgrp_fifo_stall', 'ge_num_of_donut_dist_patches', - 'ge_num_of_hs_alloc_events', 'ge_num_of_no_dist_patches', - 'ge_num_of_patch_dist_patches', - 'ge_num_of_se_switches_due_to_donut', - 'ge_num_of_se_switches_due_to_patch_accum', - 'ge_num_of_se_switches_due_to_trap', 'ge_pa0_csb_eop', - 'ge_pa1_csb_eop', 'ge_se0_te11_starved_on_hs_done', - 'ge_se1_te11_starved_on_hs_done', - 'ge_se2_te11_starved_on_hs_done', - 'ge_se3_te11_starved_on_hs_done', - 'ge_se4_te11_starved_on_hs_done', - 'ge_se5_te11_starved_on_hs_done', - 'ge_se6_te11_starved_on_hs_done', - 'ge_se7_te11_starved_on_hs_done', 'ge_se_ds_prims', - 'ge_se_es_thread_groups', 'ge_se_esvert_stalled_gsprim', - 'ge_se_hs_input_stall', 'ge_se_hs_tfm_stall', - 'ge_se_hs_tgs_active_high_water_mark', 'ge_se_hs_thread_groups', - 'ge_se_reused_es_indices', 'ge_se_sclk_input_vld', - 'ge_se_sclk_ngg_vld', 'ge_se_sclk_te11_vld', - 'ge_se_sending_vert_or_prim', 'ge_se_spi_esvert_eov', - 'ge_se_spi_esvert_stalled', 'ge_se_spi_esvert_starved_busy', - 'ge_se_spi_esvert_valid', 'ge_se_spi_gsprim_cont', - 'ge_se_spi_gsprim_eov', 'ge_se_spi_gsprim_stalled', - 'ge_se_spi_gsprim_starved_busy', 'ge_se_spi_gsprim_valid', - 'ge_se_spi_gssubgrp_event_window_active', - 'ge_se_spi_gssubgrp_is_event', 'ge_se_spi_gssubgrp_send', - 'ge_se_spi_hsvert_eov', 'ge_se_spi_hsvert_fifo_full_stall', - 'ge_se_spi_hsvert_stalled', 'ge_se_spi_hsvert_starved_busy', - 'ge_se_spi_hsvert_valid', 'ge_se_spi_hswave_is_event', - 'ge_se_spi_hswave_send', 'ge_se_spi_lsvert_eov', - 'ge_se_spi_lsvert_stalled', 'ge_se_spi_lsvert_starved_busy', - 'ge_se_spi_lsvert_valid', 'ge_se_spi_tgrp_fifo_stall', - 'ge_spi_gsgrp_valid', 'ge_spi_hsgrp_spi_stall', - 'ge_spi_hswave_fifo_full_stall', 'ge_spi_lswave_fifo_full_stall', - 'ge_te11_compactor_starved', 'ge_te11_con_stall', - 'ge_te11_stall_prim_funnel', 'ge_te11_stall_vert_funnel', - 'ge_tf_ret_data_stalling_hs_done', 'hdp_flush_cmd', 'int32_t', - 'int_sel__mec_release_mem__conditionally_send_int_ctxid_based_on_32_bit_compare', - 'int_sel__mec_release_mem__conditionally_send_int_ctxid_based_on_64_bit_compare', - 'int_sel__mec_release_mem__none', - 'int_sel__mec_release_mem__send_data_after_write_confirm', - 'int_sel__mec_release_mem__send_interrupt_after_write_confirm', - 'int_sel__mec_release_mem__send_interrupt_only', - 'int_sel__mec_release_mem__unconditionally_send_int_ctxid', - 'ixDIDT_DB_CTRL0', 'ixDIDT_DB_CTRL1', 'ixDIDT_DB_CTRL2', - 'ixDIDT_DB_CTRL3', 'ixDIDT_DB_CTRL_OCP', 'ixDIDT_DB_EDC_CTRL', - 'ixDIDT_DB_EDC_OVERFLOW', 'ixDIDT_DB_EDC_PCC_PERF_COUNTER', - 'ixDIDT_DB_EDC_ROLLING_POWER_DELTA', - 'ixDIDT_DB_EDC_STALL_DELAY_1', 'ixDIDT_DB_EDC_STALL_PATTERN_1_2', - 'ixDIDT_DB_EDC_STALL_PATTERN_3_4', - 'ixDIDT_DB_EDC_STALL_PATTERN_5_6', - 'ixDIDT_DB_EDC_STALL_PATTERN_7', 'ixDIDT_DB_EDC_STATUS', - 'ixDIDT_DB_EDC_THRESHOLD', 'ixDIDT_DB_EDC_TIMER_PERIOD', - 'ixDIDT_DB_MPD_SCALE_FACTOR', 'ixDIDT_DB_STALL_AUTO_RELEASE_CTRL', - 'ixDIDT_DB_STALL_CTRL', 'ixDIDT_DB_STALL_EVENT_COUNTER', - 'ixDIDT_DB_STALL_PATTERN_1_2', 'ixDIDT_DB_STALL_PATTERN_3_4', - 'ixDIDT_DB_STALL_PATTERN_5_6', 'ixDIDT_DB_STALL_PATTERN_7', - 'ixDIDT_DB_STALL_RELEASE_CNTL0', 'ixDIDT_DB_STALL_RELEASE_CNTL1', - 'ixDIDT_DB_STALL_RELEASE_CNTL_STATUS', 'ixDIDT_DB_THROTTLE_CTRL', - 'ixDIDT_DB_TUNING_CTRL', 'ixDIDT_DB_WEIGHT0_3', - 'ixDIDT_DB_WEIGHT4_7', 'ixDIDT_DB_WEIGHT8_11', 'ixDIDT_SQ_CTRL0', - 'ixDIDT_SQ_CTRL1', 'ixDIDT_SQ_CTRL2', 'ixDIDT_SQ_CTRL3', - 'ixDIDT_SQ_CTRL_OCP', 'ixDIDT_SQ_EDC_CTRL', - 'ixDIDT_SQ_EDC_OVERFLOW', 'ixDIDT_SQ_EDC_PCC_PERF_COUNTER', - 'ixDIDT_SQ_EDC_ROLLING_POWER_DELTA', - 'ixDIDT_SQ_EDC_STALL_DELAY_1', 'ixDIDT_SQ_EDC_STALL_DELAY_2', - 'ixDIDT_SQ_EDC_STALL_DELAY_3', 'ixDIDT_SQ_EDC_STALL_PATTERN_1_2', - 'ixDIDT_SQ_EDC_STALL_PATTERN_3_4', - 'ixDIDT_SQ_EDC_STALL_PATTERN_5_6', - 'ixDIDT_SQ_EDC_STALL_PATTERN_7', 'ixDIDT_SQ_EDC_STATUS', - 'ixDIDT_SQ_EDC_THRESHOLD', 'ixDIDT_SQ_EDC_TIMER_PERIOD', - 'ixDIDT_SQ_MPD_SCALE_FACTOR', 'ixDIDT_SQ_STALL_AUTO_RELEASE_CTRL', - 'ixDIDT_SQ_STALL_CTRL', 'ixDIDT_SQ_STALL_EVENT_COUNTER', - 'ixDIDT_SQ_STALL_PATTERN_1_2', 'ixDIDT_SQ_STALL_PATTERN_3_4', - 'ixDIDT_SQ_STALL_PATTERN_5_6', 'ixDIDT_SQ_STALL_PATTERN_7', - 'ixDIDT_SQ_STALL_RELEASE_CNTL0', 'ixDIDT_SQ_STALL_RELEASE_CNTL1', - 'ixDIDT_SQ_STALL_RELEASE_CNTL_STATUS', 'ixDIDT_SQ_THROTTLE_CTRL', - 'ixDIDT_SQ_TUNING_CTRL', 'ixDIDT_SQ_WEIGHT0_3', - 'ixDIDT_SQ_WEIGHT4_7', 'ixDIDT_SQ_WEIGHT8_11', 'ixDIDT_TCP_CTRL0', - 'ixDIDT_TCP_CTRL1', 'ixDIDT_TCP_CTRL2', 'ixDIDT_TCP_CTRL3', - 'ixDIDT_TCP_CTRL_OCP', 'ixDIDT_TCP_EDC_CTRL', - 'ixDIDT_TCP_EDC_OVERFLOW', 'ixDIDT_TCP_EDC_PCC_PERF_COUNTER', - 'ixDIDT_TCP_EDC_ROLLING_POWER_DELTA', - 'ixDIDT_TCP_EDC_STALL_DELAY_1', 'ixDIDT_TCP_EDC_STALL_DELAY_2', - 'ixDIDT_TCP_EDC_STALL_DELAY_3', - 'ixDIDT_TCP_EDC_STALL_PATTERN_1_2', - 'ixDIDT_TCP_EDC_STALL_PATTERN_3_4', - 'ixDIDT_TCP_EDC_STALL_PATTERN_5_6', - 'ixDIDT_TCP_EDC_STALL_PATTERN_7', 'ixDIDT_TCP_EDC_STATUS', - 'ixDIDT_TCP_EDC_THRESHOLD', 'ixDIDT_TCP_EDC_TIMER_PERIOD', - 'ixDIDT_TCP_MPD_SCALE_FACTOR', - 'ixDIDT_TCP_STALL_AUTO_RELEASE_CTRL', 'ixDIDT_TCP_STALL_CTRL', - 'ixDIDT_TCP_STALL_EVENT_COUNTER', 'ixDIDT_TCP_STALL_PATTERN_1_2', - 'ixDIDT_TCP_STALL_PATTERN_3_4', 'ixDIDT_TCP_STALL_PATTERN_5_6', - 'ixDIDT_TCP_STALL_PATTERN_7', 'ixDIDT_TCP_STALL_RELEASE_CNTL0', - 'ixDIDT_TCP_STALL_RELEASE_CNTL1', - 'ixDIDT_TCP_STALL_RELEASE_CNTL_STATUS', - 'ixDIDT_TCP_THROTTLE_CTRL', 'ixDIDT_TCP_TUNING_CTRL', - 'ixDIDT_TCP_WEIGHT0_3', 'ixDIDT_TCP_WEIGHT4_7', - 'ixDIDT_TCP_WEIGHT8_11', 'ixDIDT_TD_CTRL0', 'ixDIDT_TD_CTRL1', - 'ixDIDT_TD_CTRL2', 'ixDIDT_TD_CTRL3', 'ixDIDT_TD_CTRL_OCP', - 'ixDIDT_TD_EDC_CTRL', 'ixDIDT_TD_EDC_OVERFLOW', - 'ixDIDT_TD_EDC_PCC_PERF_COUNTER', - 'ixDIDT_TD_EDC_ROLLING_POWER_DELTA', - 'ixDIDT_TD_EDC_STALL_DELAY_1', 'ixDIDT_TD_EDC_STALL_DELAY_2', - 'ixDIDT_TD_EDC_STALL_DELAY_3', 'ixDIDT_TD_EDC_STALL_PATTERN_1_2', - 'ixDIDT_TD_EDC_STALL_PATTERN_3_4', - 'ixDIDT_TD_EDC_STALL_PATTERN_5_6', - 'ixDIDT_TD_EDC_STALL_PATTERN_7', 'ixDIDT_TD_EDC_STATUS', - 'ixDIDT_TD_EDC_THRESHOLD', 'ixDIDT_TD_EDC_TIMER_PERIOD', - 'ixDIDT_TD_MPD_SCALE_FACTOR', 'ixDIDT_TD_STALL_AUTO_RELEASE_CTRL', - 'ixDIDT_TD_STALL_CTRL', 'ixDIDT_TD_STALL_EVENT_COUNTER', - 'ixDIDT_TD_STALL_PATTERN_1_2', 'ixDIDT_TD_STALL_PATTERN_3_4', - 'ixDIDT_TD_STALL_PATTERN_5_6', 'ixDIDT_TD_STALL_PATTERN_7', - 'ixDIDT_TD_STALL_RELEASE_CNTL0', 'ixDIDT_TD_STALL_RELEASE_CNTL1', - 'ixDIDT_TD_STALL_RELEASE_CNTL_STATUS', 'ixDIDT_TD_THROTTLE_CTRL', - 'ixDIDT_TD_TUNING_CTRL', 'ixDIDT_TD_WEIGHT0_3', - 'ixDIDT_TD_WEIGHT4_7', 'ixDIDT_TD_WEIGHT8_11', - 'ixEDC_STRETCH_NUM_PERF_COUNTER', 'ixEDC_STRETCH_PERF_COUNTER', - 'ixEDC_UNSTRETCH_PERF_COUNTER', 'ixFIXED_PATTERN_PERF_COUNTER_1', + 'USB0_BASE__INST6_SEG3', 'USB0_BASE__INST6_SEG4', 'VCN_BASE', + 'VCN_BASE__INST0_SEG0', 'VCN_BASE__INST0_SEG1', + 'VCN_BASE__INST0_SEG2', 'VCN_BASE__INST0_SEG3', + 'VCN_BASE__INST0_SEG4', 'VCN_BASE__INST1_SEG0', + 'VCN_BASE__INST1_SEG1', 'VCN_BASE__INST1_SEG2', + 'VCN_BASE__INST1_SEG3', 'VCN_BASE__INST1_SEG4', + 'VCN_BASE__INST2_SEG0', 'VCN_BASE__INST2_SEG1', + 'VCN_BASE__INST2_SEG2', 'VCN_BASE__INST2_SEG3', + 'VCN_BASE__INST2_SEG4', 'VCN_BASE__INST3_SEG0', + 'VCN_BASE__INST3_SEG1', 'VCN_BASE__INST3_SEG2', + 'VCN_BASE__INST3_SEG3', 'VCN_BASE__INST3_SEG4', + 'VCN_BASE__INST4_SEG0', 'VCN_BASE__INST4_SEG1', + 'VCN_BASE__INST4_SEG2', 'VCN_BASE__INST4_SEG3', + 'VCN_BASE__INST4_SEG4', 'VCN_BASE__INST5_SEG0', + 'VCN_BASE__INST5_SEG1', 'VCN_BASE__INST5_SEG2', + 'VCN_BASE__INST5_SEG3', 'VCN_BASE__INST5_SEG4', + 'VCN_BASE__INST6_SEG0', 'VCN_BASE__INST6_SEG1', + 'VCN_BASE__INST6_SEG2', 'VCN_BASE__INST6_SEG3', + 'VCN_BASE__INST6_SEG4', 'WR_CONFIRM', 'WR_ONE_ADDR', + '__maybe_unused', '_gc_11_0_0_OFFSET_HEADER', + '_sienna_cichlid_ip_offset_HEADER', 'hdp_flush_cmd', + 'ixFIXED_PATTERN_PERF_COUNTER_1', 'ixFIXED_PATTERN_PERF_COUNTER_10', 'ixFIXED_PATTERN_PERF_COUNTER_2', 'ixFIXED_PATTERN_PERF_COUNTER_3', @@ -73494,196 +14332,44 @@ __all__ = \ 'ixFIXED_PATTERN_PERF_COUNTER_6', 'ixFIXED_PATTERN_PERF_COUNTER_7', 'ixFIXED_PATTERN_PERF_COUNTER_8', - 'ixFIXED_PATTERN_PERF_COUNTER_9', 'ixGC_CAC_ACC_BCI0', - 'ixGC_CAC_ACC_BCI1', 'ixGC_CAC_ACC_CB0', 'ixGC_CAC_ACC_CB1', - 'ixGC_CAC_ACC_CB2', 'ixGC_CAC_ACC_CB3', 'ixGC_CAC_ACC_CB4', - 'ixGC_CAC_ACC_CB5', 'ixGC_CAC_ACC_CB6', 'ixGC_CAC_ACC_CB7', - 'ixGC_CAC_ACC_CB8', 'ixGC_CAC_ACC_CB9', 'ixGC_CAC_ACC_CHC0', + 'ixFIXED_PATTERN_PERF_COUNTER_9', 'ixGC_CAC_ACC_CHC0', 'ixGC_CAC_ACC_CHC1', 'ixGC_CAC_ACC_CHC2', 'ixGC_CAC_ACC_CP0', - 'ixGC_CAC_ACC_CP1', 'ixGC_CAC_ACC_CP2', 'ixGC_CAC_ACC_CU0', - 'ixGC_CAC_ACC_DB0', 'ixGC_CAC_ACC_DB1', 'ixGC_CAC_ACC_DB2', - 'ixGC_CAC_ACC_DB3', 'ixGC_CAC_ACC_DB4', 'ixGC_CAC_ACC_DB5', - 'ixGC_CAC_ACC_DB6', 'ixGC_CAC_ACC_DB7', 'ixGC_CAC_ACC_DB8', - 'ixGC_CAC_ACC_DB9', 'ixGC_CAC_ACC_EA0', 'ixGC_CAC_ACC_EA1', - 'ixGC_CAC_ACC_EA2', 'ixGC_CAC_ACC_EA3', 'ixGC_CAC_ACC_EA4', - 'ixGC_CAC_ACC_EA5', 'ixGC_CAC_ACC_GDS0', 'ixGC_CAC_ACC_GDS1', - 'ixGC_CAC_ACC_GDS2', 'ixGC_CAC_ACC_GDS3', 'ixGC_CAC_ACC_GDS4', - 'ixGC_CAC_ACC_GDS5', 'ixGC_CAC_ACC_GDS6', 'ixGC_CAC_ACC_GE0', - 'ixGC_CAC_ACC_GE1', 'ixGC_CAC_ACC_GE10', 'ixGC_CAC_ACC_GE11', - 'ixGC_CAC_ACC_GE12', 'ixGC_CAC_ACC_GE13', 'ixGC_CAC_ACC_GE14', - 'ixGC_CAC_ACC_GE15', 'ixGC_CAC_ACC_GE16', 'ixGC_CAC_ACC_GE17', - 'ixGC_CAC_ACC_GE18', 'ixGC_CAC_ACC_GE19', 'ixGC_CAC_ACC_GE2', - 'ixGC_CAC_ACC_GE20', 'ixGC_CAC_ACC_GE3', 'ixGC_CAC_ACC_GE4', - 'ixGC_CAC_ACC_GE5', 'ixGC_CAC_ACC_GE6', 'ixGC_CAC_ACC_GE7', - 'ixGC_CAC_ACC_GE8', 'ixGC_CAC_ACC_GE9', 'ixGC_CAC_ACC_GL1C0', - 'ixGC_CAC_ACC_GL1C1', 'ixGC_CAC_ACC_GL1C2', 'ixGC_CAC_ACC_GL1C3', - 'ixGC_CAC_ACC_GL1C4', 'ixGC_CAC_ACC_GL2C0', 'ixGC_CAC_ACC_GL2C1', + 'ixGC_CAC_ACC_CP1', 'ixGC_CAC_ACC_CP2', 'ixGC_CAC_ACC_EA0', + 'ixGC_CAC_ACC_EA1', 'ixGC_CAC_ACC_EA2', 'ixGC_CAC_ACC_EA3', + 'ixGC_CAC_ACC_EA4', 'ixGC_CAC_ACC_EA5', 'ixGC_CAC_ACC_GDS0', + 'ixGC_CAC_ACC_GDS1', 'ixGC_CAC_ACC_GDS2', 'ixGC_CAC_ACC_GDS3', + 'ixGC_CAC_ACC_GDS4', 'ixGC_CAC_ACC_GE0', 'ixGC_CAC_ACC_GE1', + 'ixGC_CAC_ACC_GE10', 'ixGC_CAC_ACC_GE11', 'ixGC_CAC_ACC_GE12', + 'ixGC_CAC_ACC_GE13', 'ixGC_CAC_ACC_GE14', 'ixGC_CAC_ACC_GE15', + 'ixGC_CAC_ACC_GE16', 'ixGC_CAC_ACC_GE17', 'ixGC_CAC_ACC_GE18', + 'ixGC_CAC_ACC_GE19', 'ixGC_CAC_ACC_GE2', 'ixGC_CAC_ACC_GE20', + 'ixGC_CAC_ACC_GE3', 'ixGC_CAC_ACC_GE4', 'ixGC_CAC_ACC_GE5', + 'ixGC_CAC_ACC_GE6', 'ixGC_CAC_ACC_GE7', 'ixGC_CAC_ACC_GE8', + 'ixGC_CAC_ACC_GE9', 'ixGC_CAC_ACC_GL2C0', 'ixGC_CAC_ACC_GL2C1', 'ixGC_CAC_ACC_GL2C2', 'ixGC_CAC_ACC_GL2C3', 'ixGC_CAC_ACC_GL2C4', 'ixGC_CAC_ACC_GUS0', 'ixGC_CAC_ACC_GUS1', 'ixGC_CAC_ACC_GUS2', - 'ixGC_CAC_ACC_LDS0', 'ixGC_CAC_ACC_LDS1', 'ixGC_CAC_ACC_LDS2', - 'ixGC_CAC_ACC_LDS3', 'ixGC_CAC_ACC_LDS4', 'ixGC_CAC_ACC_LDS5', - 'ixGC_CAC_ACC_LDS6', 'ixGC_CAC_ACC_LDS7', 'ixGC_CAC_ACC_LDS8', - 'ixGC_CAC_ACC_PA0', 'ixGC_CAC_ACC_PA1', 'ixGC_CAC_ACC_PA2', - 'ixGC_CAC_ACC_PA3', 'ixGC_CAC_ACC_PA4', 'ixGC_CAC_ACC_PA5', - 'ixGC_CAC_ACC_PA6', 'ixGC_CAC_ACC_PA7', 'ixGC_CAC_ACC_PC0', 'ixGC_CAC_ACC_PH0', 'ixGC_CAC_ACC_PH1', 'ixGC_CAC_ACC_PH2', 'ixGC_CAC_ACC_PH3', 'ixGC_CAC_ACC_PH4', 'ixGC_CAC_ACC_PH5', 'ixGC_CAC_ACC_PH6', 'ixGC_CAC_ACC_PH7', 'ixGC_CAC_ACC_PMM0', - 'ixGC_CAC_ACC_RLC0', 'ixGC_CAC_ACC_RMI0', 'ixGC_CAC_ACC_RMI1', - 'ixGC_CAC_ACC_RMI2', 'ixGC_CAC_ACC_RMI3', 'ixGC_CAC_ACC_SC0', - 'ixGC_CAC_ACC_SC1', 'ixGC_CAC_ACC_SC2', 'ixGC_CAC_ACC_SC3', - 'ixGC_CAC_ACC_SC4', 'ixGC_CAC_ACC_SC5', 'ixGC_CAC_ACC_SC6', - 'ixGC_CAC_ACC_SC7', 'ixGC_CAC_ACC_SDMA0', 'ixGC_CAC_ACC_SDMA1', + 'ixGC_CAC_ACC_RLC0', 'ixGC_CAC_ACC_SDMA0', 'ixGC_CAC_ACC_SDMA1', 'ixGC_CAC_ACC_SDMA10', 'ixGC_CAC_ACC_SDMA11', 'ixGC_CAC_ACC_SDMA2', 'ixGC_CAC_ACC_SDMA3', 'ixGC_CAC_ACC_SDMA4', 'ixGC_CAC_ACC_SDMA5', 'ixGC_CAC_ACC_SDMA6', 'ixGC_CAC_ACC_SDMA7', 'ixGC_CAC_ACC_SDMA8', 'ixGC_CAC_ACC_SDMA9', - 'ixGC_CAC_ACC_SP0_LOWER', 'ixGC_CAC_ACC_SP0_UPPER', - 'ixGC_CAC_ACC_SP1_LOWER', 'ixGC_CAC_ACC_SP1_UPPER', - 'ixGC_CAC_ACC_SP2_LOWER', 'ixGC_CAC_ACC_SP2_UPPER', - 'ixGC_CAC_ACC_SPI0', 'ixGC_CAC_ACC_SPI1', 'ixGC_CAC_ACC_SPI2', - 'ixGC_CAC_ACC_SPI3', 'ixGC_CAC_ACC_SPI4', 'ixGC_CAC_ACC_SPI5', - 'ixGC_CAC_ACC_SQ0_LOWER', 'ixGC_CAC_ACC_SQ0_UPPER', - 'ixGC_CAC_ACC_SQ1_LOWER', 'ixGC_CAC_ACC_SQ1_UPPER', - 'ixGC_CAC_ACC_SQ2_LOWER', 'ixGC_CAC_ACC_SQ2_UPPER', - 'ixGC_CAC_ACC_SQ3_LOWER', 'ixGC_CAC_ACC_SQ3_UPPER', - 'ixGC_CAC_ACC_SQ4_LOWER', 'ixGC_CAC_ACC_SQ4_UPPER', - 'ixGC_CAC_ACC_SQ5_LOWER', 'ixGC_CAC_ACC_SQ5_UPPER', - 'ixGC_CAC_ACC_SQ6_LOWER', 'ixGC_CAC_ACC_SQ6_UPPER', - 'ixGC_CAC_ACC_SQ7_LOWER', 'ixGC_CAC_ACC_SQ7_UPPER', - 'ixGC_CAC_ACC_SQ8_LOWER', 'ixGC_CAC_ACC_SQ8_UPPER', - 'ixGC_CAC_ACC_SQC0', 'ixGC_CAC_ACC_SQC1', 'ixGC_CAC_ACC_SQC2', - 'ixGC_CAC_ACC_SX0', 'ixGC_CAC_ACC_SXRB0', 'ixGC_CAC_ACC_TA0', - 'ixGC_CAC_ACC_TCP0', 'ixGC_CAC_ACC_TCP1', 'ixGC_CAC_ACC_TCP2', - 'ixGC_CAC_ACC_TCP3', 'ixGC_CAC_ACC_TCP4', 'ixGC_CAC_ACC_TCP5', - 'ixGC_CAC_ACC_TCP6', 'ixGC_CAC_ACC_TCP7', 'ixGC_CAC_ACC_TD0', - 'ixGC_CAC_ACC_TD1', 'ixGC_CAC_ACC_TD10', 'ixGC_CAC_ACC_TD2', - 'ixGC_CAC_ACC_TD3', 'ixGC_CAC_ACC_TD4', 'ixGC_CAC_ACC_TD5', - 'ixGC_CAC_ACC_TD6', 'ixGC_CAC_ACC_TD7', 'ixGC_CAC_ACC_TD8', - 'ixGC_CAC_ACC_TD9', 'ixGC_CAC_ACC_UTCL10', - 'ixGC_CAC_ACC_UTCL2_ATCL20', 'ixGC_CAC_ACC_UTCL2_ATCL21', - 'ixGC_CAC_ACC_UTCL2_ATCL22', 'ixGC_CAC_ACC_UTCL2_ATCL23', - 'ixGC_CAC_ACC_UTCL2_ATCL24', 'ixGC_CAC_ACC_UTCL2_ROUTER0', - 'ixGC_CAC_ACC_UTCL2_ROUTER1', 'ixGC_CAC_ACC_UTCL2_ROUTER2', - 'ixGC_CAC_ACC_UTCL2_ROUTER3', 'ixGC_CAC_ACC_UTCL2_ROUTER4', - 'ixGC_CAC_ACC_UTCL2_ROUTER5', 'ixGC_CAC_ACC_UTCL2_ROUTER6', - 'ixGC_CAC_ACC_UTCL2_ROUTER7', 'ixGC_CAC_ACC_UTCL2_ROUTER8', - 'ixGC_CAC_ACC_UTCL2_ROUTER9', 'ixGC_CAC_ACC_UTCL2_VML20', - 'ixGC_CAC_ACC_UTCL2_VML21', 'ixGC_CAC_ACC_UTCL2_VML22', - 'ixGC_CAC_ACC_UTCL2_VML23', 'ixGC_CAC_ACC_UTCL2_VML24', - 'ixGC_CAC_ACC_UTCL2_WALKER0', 'ixGC_CAC_ACC_UTCL2_WALKER1', - 'ixGC_CAC_ACC_UTCL2_WALKER2', 'ixGC_CAC_ACC_UTCL2_WALKER3', - 'ixGC_CAC_ACC_UTCL2_WALKER4', 'ixGC_CAC_CNTL', 'ixGC_CAC_ID', - 'ixGC_CAC_OVRD_BCI', 'ixGC_CAC_OVRD_CB', 'ixGC_CAC_OVRD_CHC', - 'ixGC_CAC_OVRD_CP', 'ixGC_CAC_OVRD_CU', 'ixGC_CAC_OVRD_DB', - 'ixGC_CAC_OVRD_EA', 'ixGC_CAC_OVRD_GDS', 'ixGC_CAC_OVRD_GE', - 'ixGC_CAC_OVRD_GE_HI', 'ixGC_CAC_OVRD_GL1C', 'ixGC_CAC_OVRD_GL2C', - 'ixGC_CAC_OVRD_GUS', 'ixGC_CAC_OVRD_LDS', 'ixGC_CAC_OVRD_PA', - 'ixGC_CAC_OVRD_PC', 'ixGC_CAC_OVRD_PH', 'ixGC_CAC_OVRD_PMM', - 'ixGC_CAC_OVRD_RLC', 'ixGC_CAC_OVRD_RMI', 'ixGC_CAC_OVRD_SC', - 'ixGC_CAC_OVRD_SDMA', 'ixGC_CAC_OVRD_SP', 'ixGC_CAC_OVRD_SPI', - 'ixGC_CAC_OVRD_SQ', 'ixGC_CAC_OVRD_SQC', 'ixGC_CAC_OVRD_SX', - 'ixGC_CAC_OVRD_SXRB', 'ixGC_CAC_OVRD_TA', 'ixGC_CAC_OVRD_TCP', - 'ixGC_CAC_OVRD_TD', 'ixGC_CAC_OVRD_UTCL1', - 'ixGC_CAC_OVRD_UTCL2_ATCL2', 'ixGC_CAC_OVRD_UTCL2_ROUTER', - 'ixGC_CAC_OVRD_UTCL2_VML2', 'ixGC_CAC_OVRD_UTCL2_WALKER', - 'ixGC_CAC_OVR_SEL', 'ixGC_CAC_OVR_VAL', 'ixGC_CAC_WEIGHT_BCI_0', - 'ixGC_CAC_WEIGHT_CB_0', 'ixGC_CAC_WEIGHT_CB_1', - 'ixGC_CAC_WEIGHT_CB_2', 'ixGC_CAC_WEIGHT_CB_3', - 'ixGC_CAC_WEIGHT_CB_4', 'ixGC_CAC_WEIGHT_CHC_0', - 'ixGC_CAC_WEIGHT_CHC_1', 'ixGC_CAC_WEIGHT_CP_0', - 'ixGC_CAC_WEIGHT_CP_1', 'ixGC_CAC_WEIGHT_CU_0', - 'ixGC_CAC_WEIGHT_DB_0', 'ixGC_CAC_WEIGHT_DB_1', - 'ixGC_CAC_WEIGHT_DB_2', 'ixGC_CAC_WEIGHT_DB_3', - 'ixGC_CAC_WEIGHT_DB_4', 'ixGC_CAC_WEIGHT_EA_0', - 'ixGC_CAC_WEIGHT_EA_1', 'ixGC_CAC_WEIGHT_EA_2', - 'ixGC_CAC_WEIGHT_GDS_0', 'ixGC_CAC_WEIGHT_GDS_1', - 'ixGC_CAC_WEIGHT_GDS_2', 'ixGC_CAC_WEIGHT_GE_0', - 'ixGC_CAC_WEIGHT_GE_1', 'ixGC_CAC_WEIGHT_GE_10', - 'ixGC_CAC_WEIGHT_GE_2', 'ixGC_CAC_WEIGHT_GE_3', - 'ixGC_CAC_WEIGHT_GE_4', 'ixGC_CAC_WEIGHT_GE_5', - 'ixGC_CAC_WEIGHT_GE_6', 'ixGC_CAC_WEIGHT_GE_7', - 'ixGC_CAC_WEIGHT_GE_8', 'ixGC_CAC_WEIGHT_GE_9', - 'ixGC_CAC_WEIGHT_GL1C_0', 'ixGC_CAC_WEIGHT_GL1C_1', - 'ixGC_CAC_WEIGHT_GL1C_2', 'ixGC_CAC_WEIGHT_GL2C_0', - 'ixGC_CAC_WEIGHT_GL2C_1', 'ixGC_CAC_WEIGHT_GL2C_2', - 'ixGC_CAC_WEIGHT_GUS_0', 'ixGC_CAC_WEIGHT_GUS_1', - 'ixGC_CAC_WEIGHT_LDS_0', 'ixGC_CAC_WEIGHT_LDS_1', - 'ixGC_CAC_WEIGHT_LDS_2', 'ixGC_CAC_WEIGHT_LDS_3', - 'ixGC_CAC_WEIGHT_LDS_4', 'ixGC_CAC_WEIGHT_PA_0', - 'ixGC_CAC_WEIGHT_PA_1', 'ixGC_CAC_WEIGHT_PA_2', - 'ixGC_CAC_WEIGHT_PA_3', 'ixGC_CAC_WEIGHT_PC_0', - 'ixGC_CAC_WEIGHT_PH_0', 'ixGC_CAC_WEIGHT_PH_1', - 'ixGC_CAC_WEIGHT_PH_2', 'ixGC_CAC_WEIGHT_PH_3', - 'ixGC_CAC_WEIGHT_PMM_0', 'ixGC_CAC_WEIGHT_RLC_0', - 'ixGC_CAC_WEIGHT_RMI_0', 'ixGC_CAC_WEIGHT_RMI_1', - 'ixGC_CAC_WEIGHT_SC_0', 'ixGC_CAC_WEIGHT_SC_1', - 'ixGC_CAC_WEIGHT_SC_2', 'ixGC_CAC_WEIGHT_SC_3', - 'ixGC_CAC_WEIGHT_SDMA_0', 'ixGC_CAC_WEIGHT_SDMA_1', - 'ixGC_CAC_WEIGHT_SDMA_2', 'ixGC_CAC_WEIGHT_SDMA_3', - 'ixGC_CAC_WEIGHT_SDMA_4', 'ixGC_CAC_WEIGHT_SDMA_5', - 'ixGC_CAC_WEIGHT_SPI_0', 'ixGC_CAC_WEIGHT_SPI_1', - 'ixGC_CAC_WEIGHT_SPI_2', 'ixGC_CAC_WEIGHT_SP_0', - 'ixGC_CAC_WEIGHT_SP_1', 'ixGC_CAC_WEIGHT_SQC_0', - 'ixGC_CAC_WEIGHT_SQC_1', 'ixGC_CAC_WEIGHT_SQ_0', - 'ixGC_CAC_WEIGHT_SQ_1', 'ixGC_CAC_WEIGHT_SQ_2', - 'ixGC_CAC_WEIGHT_SQ_3', 'ixGC_CAC_WEIGHT_SXRB_0', - 'ixGC_CAC_WEIGHT_SX_0', 'ixGC_CAC_WEIGHT_TA_0', - 'ixGC_CAC_WEIGHT_TCP_0', 'ixGC_CAC_WEIGHT_TCP_1', - 'ixGC_CAC_WEIGHT_TCP_2', 'ixGC_CAC_WEIGHT_TCP_3', - 'ixGC_CAC_WEIGHT_TD_0', 'ixGC_CAC_WEIGHT_TD_1', - 'ixGC_CAC_WEIGHT_TD_2', 'ixGC_CAC_WEIGHT_TD_3', - 'ixGC_CAC_WEIGHT_TD_4', 'ixGC_CAC_WEIGHT_TD_5', - 'ixGC_CAC_WEIGHT_UTCL1_0', 'ixGC_CAC_WEIGHT_UTCL2_ATCL2_0', - 'ixGC_CAC_WEIGHT_UTCL2_ATCL2_1', 'ixGC_CAC_WEIGHT_UTCL2_ATCL2_2', - 'ixGC_CAC_WEIGHT_UTCL2_ROUTER_0', - 'ixGC_CAC_WEIGHT_UTCL2_ROUTER_1', - 'ixGC_CAC_WEIGHT_UTCL2_ROUTER_2', - 'ixGC_CAC_WEIGHT_UTCL2_ROUTER_3', - 'ixGC_CAC_WEIGHT_UTCL2_ROUTER_4', 'ixGC_CAC_WEIGHT_UTCL2_VML2_0', - 'ixGC_CAC_WEIGHT_UTCL2_VML2_1', 'ixGC_CAC_WEIGHT_UTCL2_VML2_2', - 'ixGC_CAC_WEIGHT_UTCL2_WALKER_0', - 'ixGC_CAC_WEIGHT_UTCL2_WALKER_1', - 'ixGC_CAC_WEIGHT_UTCL2_WALKER_2', 'ixGLB_ATCL2_SAMPLEDELAY', - 'ixGLB_CHA_SAMPLEDELAY', 'ixGLB_CHC0_SAMPLEDELAY', - 'ixGLB_CHC1_SAMPLEDELAY', 'ixGLB_CHC2_SAMPLEDELAY', - 'ixGLB_CHC3_SAMPLEDELAY', 'ixGLB_CHCG_SAMPLEDELAY', - 'ixGLB_CPC_SAMPLEDELAY', 'ixGLB_CPF_SAMPLEDELAY', - 'ixGLB_CPG_SAMPLEDELAY', 'ixGLB_EA0_SAMPLEDELAY', - 'ixGLB_EA10_SAMPLEDELAY', 'ixGLB_EA11_SAMPLEDELAY', - 'ixGLB_EA12_SAMPLEDELAY', 'ixGLB_EA13_SAMPLEDELAY', - 'ixGLB_EA14_SAMPLEDELAY', 'ixGLB_EA15_SAMPLEDELAY', - 'ixGLB_EA1_SAMPLEDELAY', 'ixGLB_EA2_SAMPLEDELAY', - 'ixGLB_EA3_SAMPLEDELAY', 'ixGLB_EA4_SAMPLEDELAY', - 'ixGLB_EA5_SAMPLEDELAY', 'ixGLB_EA6_SAMPLEDELAY', - 'ixGLB_EA7_SAMPLEDELAY', 'ixGLB_EA8_SAMPLEDELAY', - 'ixGLB_EA9_SAMPLEDELAY', 'ixGLB_GCR_SAMPLEDELAY', - 'ixGLB_GDS_SAMPLEDELAY', 'ixGLB_GE1_SAMPLEDELAY', - 'ixGLB_GE2DIST_SAMPLEDELAY', 'ixGLB_GE2SE0_SAMPLEDELAY', - 'ixGLB_GE2SE1_SAMPLEDELAY', 'ixGLB_GE2SE2_SAMPLEDELAY', - 'ixGLB_GE2SE3_SAMPLEDELAY', 'ixGLB_GL2A0_SAMPLEDELAY', - 'ixGLB_GL2A1_SAMPLEDELAY', 'ixGLB_GL2A2_SAMPLEDELAY', - 'ixGLB_GL2A3_SAMPLEDELAY', 'ixGLB_GL2C0_SAMPLEDELAY', - 'ixGLB_GL2C10_SAMPLEDELAY', 'ixGLB_GL2C11_SAMPLEDELAY', - 'ixGLB_GL2C12_SAMPLEDELAY', 'ixGLB_GL2C13_SAMPLEDELAY', - 'ixGLB_GL2C14_SAMPLEDELAY', 'ixGLB_GL2C15_SAMPLEDELAY', - 'ixGLB_GL2C1_SAMPLEDELAY', 'ixGLB_GL2C2_SAMPLEDELAY', - 'ixGLB_GL2C3_SAMPLEDELAY', 'ixGLB_GL2C4_SAMPLEDELAY', - 'ixGLB_GL2C5_SAMPLEDELAY', 'ixGLB_GL2C6_SAMPLEDELAY', - 'ixGLB_GL2C7_SAMPLEDELAY', 'ixGLB_GL2C8_SAMPLEDELAY', - 'ixGLB_GL2C9_SAMPLEDELAY', 'ixGLB_GUS_SAMPLEDELAY', - 'ixGLB_PH_SAMPLEDELAY', 'ixGLB_SDMA0_SAMPLEDELAY', - 'ixGLB_SDMA1_SAMPLEDELAY', 'ixGLB_SDMA2_SAMPLEDELAY', - 'ixGLB_SDMA3_SAMPLEDELAY', 'ixGLB_VML2_SAMPLEDELAY', - 'ixHW_LUT_UPDATE_STATUS', 'ixPCC_PWRBRK_HYSTERESIS_CTRL', - 'ixPCC_STALL_PATTERN_1_2', 'ixPCC_STALL_PATTERN_3_4', - 'ixPCC_STALL_PATTERN_5_6', 'ixPCC_STALL_PATTERN_7', - 'ixPCC_STALL_PATTERN_CTRL', 'ixPWRBRK_RELEASE_TO_STALL_LUT_17_20', + 'ixGC_CAC_ACC_UTCL2_ROUTER0', 'ixGC_CAC_ACC_UTCL2_ROUTER1', + 'ixGC_CAC_ACC_UTCL2_ROUTER2', 'ixGC_CAC_ACC_UTCL2_ROUTER3', + 'ixGC_CAC_ACC_UTCL2_ROUTER4', 'ixGC_CAC_ACC_UTCL2_ROUTER5', + 'ixGC_CAC_ACC_UTCL2_ROUTER6', 'ixGC_CAC_ACC_UTCL2_ROUTER7', + 'ixGC_CAC_ACC_UTCL2_ROUTER8', 'ixGC_CAC_ACC_UTCL2_ROUTER9', + 'ixGC_CAC_ACC_UTCL2_VML20', 'ixGC_CAC_ACC_UTCL2_VML21', + 'ixGC_CAC_ACC_UTCL2_VML22', 'ixGC_CAC_ACC_UTCL2_VML23', + 'ixGC_CAC_ACC_UTCL2_VML24', 'ixGC_CAC_ACC_UTCL2_WALKER0', + 'ixGC_CAC_ACC_UTCL2_WALKER1', 'ixGC_CAC_ACC_UTCL2_WALKER2', + 'ixGC_CAC_ACC_UTCL2_WALKER3', 'ixGC_CAC_ACC_UTCL2_WALKER4', + 'ixGC_CAC_CNTL', 'ixGC_CAC_ID', 'ixHW_LUT_UPDATE_STATUS', + 'ixPWRBRK_RELEASE_TO_STALL_LUT_17_20', 'ixPWRBRK_RELEASE_TO_STALL_LUT_1_8', 'ixPWRBRK_RELEASE_TO_STALL_LUT_9_16', - 'ixPWRBRK_STALL_PATTERN_1_2', 'ixPWRBRK_STALL_PATTERN_3_4', - 'ixPWRBRK_STALL_PATTERN_5_6', 'ixPWRBRK_STALL_PATTERN_7', - 'ixPWRBRK_STALL_PATTERN_CTRL', 'ixPWRBRK_STALL_TO_RELEASE_LUT_1_4', 'ixPWRBRK_STALL_TO_RELEASE_LUT_5_7', 'ixRELEASE_TO_STALL_LUT_17_20', 'ixRELEASE_TO_STALL_LUT_1_8', @@ -73752,7707 +14438,24 @@ __all__ = \ 'ixRTAVFS_REG90', 'ixRTAVFS_REG91', 'ixRTAVFS_REG92', 'ixRTAVFS_REG93', 'ixRTAVFS_REG94', 'ixRTAVFS_REG95', 'ixRTAVFS_REG96', 'ixRTAVFS_REG97', 'ixRTAVFS_REG98', - 'ixRTAVFS_REG99', 'ixSA_WGP_BLK_ID', 'ixSE_CAC_CNTL', - 'ixSE_CAC_ID', 'ixSE_CAC_OVR_SEL', 'ixSE_CAC_OVR_VAL', - 'ixSE_CBR_SAMPLEDELAY', 'ixSE_DBR_SAMPLEDELAY', - 'ixSE_PA_SAMPLEDELAY', 'ixSE_SA0CB0_SAMPLEDELAY', - 'ixSE_SA0CB1_SAMPLEDELAY', 'ixSE_SA0DB0_SAMPLEDELAY', - 'ixSE_SA0DB1_SAMPLEDELAY', 'ixSE_SA0GL1A_SAMPLEDELAY', - 'ixSE_SA0GL1C0_SAMPLEDELAY', 'ixSE_SA0GL1C1_SAMPLEDELAY', - 'ixSE_SA0GL1C2_SAMPLEDELAY', 'ixSE_SA0GL1C3_SAMPLEDELAY', - 'ixSE_SA0GL1CG_SAMPLEDELAY', 'ixSE_SA0RMI0_SAMPLEDELAY', - 'ixSE_SA0RMI1_SAMPLEDELAY', 'ixSE_SA0SC0_SAMPLEDELAY', - 'ixSE_SA0SC1_SAMPLEDELAY', 'ixSE_SA0SX_SAMPLEDELAY', - 'ixSE_SA0WGP00TA0_SAMPLEDELAY', 'ixSE_SA0WGP00TA1_SAMPLEDELAY', - 'ixSE_SA0WGP00TCP0_SAMPLEDELAY', 'ixSE_SA0WGP00TCP1_SAMPLEDELAY', - 'ixSE_SA0WGP00TD0_SAMPLEDELAY', 'ixSE_SA0WGP00TD1_SAMPLEDELAY', - 'ixSE_SA0WGP01TA0_SAMPLEDELAY', 'ixSE_SA0WGP01TA1_SAMPLEDELAY', - 'ixSE_SA0WGP01TCP0_SAMPLEDELAY', 'ixSE_SA0WGP01TCP1_SAMPLEDELAY', - 'ixSE_SA0WGP01TD0_SAMPLEDELAY', 'ixSE_SA0WGP01TD1_SAMPLEDELAY', - 'ixSE_SA0WGP02TA0_SAMPLEDELAY', 'ixSE_SA0WGP02TA1_SAMPLEDELAY', - 'ixSE_SA0WGP02TCP0_SAMPLEDELAY', 'ixSE_SA0WGP02TCP1_SAMPLEDELAY', - 'ixSE_SA0WGP02TD0_SAMPLEDELAY', 'ixSE_SA0WGP02TD1_SAMPLEDELAY', - 'ixSE_SA0WGP03TA0_SAMPLEDELAY', 'ixSE_SA0WGP03TA1_SAMPLEDELAY', - 'ixSE_SA0WGP03TCP0_SAMPLEDELAY', 'ixSE_SA0WGP03TCP1_SAMPLEDELAY', - 'ixSE_SA0WGP03TD0_SAMPLEDELAY', 'ixSE_SA0WGP03TD1_SAMPLEDELAY', - 'ixSE_SA0WGP04TA0_SAMPLEDELAY', 'ixSE_SA0WGP04TA1_SAMPLEDELAY', - 'ixSE_SA0WGP04TCP0_SAMPLEDELAY', 'ixSE_SA0WGP04TCP1_SAMPLEDELAY', - 'ixSE_SA0WGP04TD0_SAMPLEDELAY', 'ixSE_SA0WGP04TD1_SAMPLEDELAY', - 'ixSE_SA1CB0_SAMPLEDELAY', 'ixSE_SA1CB1_SAMPLEDELAY', - 'ixSE_SA1DB0_SAMPLEDELAY', 'ixSE_SA1DB1_SAMPLEDELAY', - 'ixSE_SA1GL1A_SAMPLEDELAY', 'ixSE_SA1GL1C0_SAMPLEDELAY', - 'ixSE_SA1GL1C1_SAMPLEDELAY', 'ixSE_SA1GL1C2_SAMPLEDELAY', - 'ixSE_SA1GL1C3_SAMPLEDELAY', 'ixSE_SA1GL1CG_SAMPLEDELAY', - 'ixSE_SA1RMI0_SAMPLEDELAY', 'ixSE_SA1RMI1_SAMPLEDELAY', - 'ixSE_SA1SC0_SAMPLEDELAY', 'ixSE_SA1SC1_SAMPLEDELAY', - 'ixSE_SA1SX_SAMPLEDELAY', 'ixSE_SA1WGP00TA0_SAMPLEDELAY', - 'ixSE_SA1WGP00TA1_SAMPLEDELAY', 'ixSE_SA1WGP00TCP0_SAMPLEDELAY', - 'ixSE_SA1WGP00TCP1_SAMPLEDELAY', 'ixSE_SA1WGP00TD0_SAMPLEDELAY', - 'ixSE_SA1WGP00TD1_SAMPLEDELAY', 'ixSE_SA1WGP01TA0_SAMPLEDELAY', - 'ixSE_SA1WGP01TA1_SAMPLEDELAY', 'ixSE_SA1WGP01TCP0_SAMPLEDELAY', - 'ixSE_SA1WGP01TCP1_SAMPLEDELAY', 'ixSE_SA1WGP01TD0_SAMPLEDELAY', - 'ixSE_SA1WGP01TD1_SAMPLEDELAY', 'ixSE_SA1WGP02TA0_SAMPLEDELAY', - 'ixSE_SA1WGP02TA1_SAMPLEDELAY', 'ixSE_SA1WGP02TCP0_SAMPLEDELAY', - 'ixSE_SA1WGP02TCP1_SAMPLEDELAY', 'ixSE_SA1WGP02TD0_SAMPLEDELAY', - 'ixSE_SA1WGP02TD1_SAMPLEDELAY', 'ixSE_SA1WGP03TA0_SAMPLEDELAY', - 'ixSE_SA1WGP03TA1_SAMPLEDELAY', 'ixSE_SA1WGP03TCP0_SAMPLEDELAY', - 'ixSE_SA1WGP03TCP1_SAMPLEDELAY', 'ixSE_SA1WGP03TD0_SAMPLEDELAY', - 'ixSE_SA1WGP03TD1_SAMPLEDELAY', 'ixSE_SA1WGP04TA0_SAMPLEDELAY', - 'ixSE_SA1WGP04TA1_SAMPLEDELAY', 'ixSE_SA1WGP04TCP0_SAMPLEDELAY', - 'ixSE_SA1WGP04TCP1_SAMPLEDELAY', 'ixSE_SA1WGP04TD0_SAMPLEDELAY', - 'ixSE_SA1WGP04TD1_SAMPLEDELAY', 'ixSE_SPI_SAMPLEDELAY', - 'ixSE_SQG_SAMPLEDELAY', 'ixSQ_DEBUG_CTRL_LOCAL', - 'ixSQ_DEBUG_STS_LOCAL', 'ixSQ_INTERRUPT_WORD_AUTO', - 'ixSQ_INTERRUPT_WORD_ERROR', 'ixSQ_INTERRUPT_WORD_WAVE', + 'ixRTAVFS_REG99', 'ixSE_CAC_CNTL', 'ixSE_CAC_ID', + 'ixSQ_DEBUG_CTRL_LOCAL', 'ixSQ_DEBUG_STS_LOCAL', 'ixSQ_WAVE_ACTIVE', 'ixSQ_WAVE_EXEC_HI', 'ixSQ_WAVE_EXEC_LO', 'ixSQ_WAVE_FLAT_SCRATCH_HI', 'ixSQ_WAVE_FLAT_SCRATCH_LO', 'ixSQ_WAVE_FLUSH_IB', 'ixSQ_WAVE_GPR_ALLOC', 'ixSQ_WAVE_HW_ID1', - 'ixSQ_WAVE_HW_ID2', 'ixSQ_WAVE_HW_ID_LEGACY', 'ixSQ_WAVE_IB_DBG1', - 'ixSQ_WAVE_IB_STS', 'ixSQ_WAVE_IB_STS2', 'ixSQ_WAVE_INST_DW0', - 'ixSQ_WAVE_LDS_ALLOC', 'ixSQ_WAVE_M0', 'ixSQ_WAVE_MODE', - 'ixSQ_WAVE_PC_HI', 'ixSQ_WAVE_PC_LO', 'ixSQ_WAVE_POPS_PACKER', - 'ixSQ_WAVE_SCHED_MODE', 'ixSQ_WAVE_SHADER_CYCLES', - 'ixSQ_WAVE_STATUS', 'ixSQ_WAVE_TRAPSTS', 'ixSQ_WAVE_TTMP0', - 'ixSQ_WAVE_TTMP1', 'ixSQ_WAVE_TTMP10', 'ixSQ_WAVE_TTMP11', - 'ixSQ_WAVE_TTMP12', 'ixSQ_WAVE_TTMP13', 'ixSQ_WAVE_TTMP14', - 'ixSQ_WAVE_TTMP15', 'ixSQ_WAVE_TTMP2', 'ixSQ_WAVE_TTMP3', - 'ixSQ_WAVE_TTMP4', 'ixSQ_WAVE_TTMP5', 'ixSQ_WAVE_TTMP6', - 'ixSQ_WAVE_TTMP7', 'ixSQ_WAVE_TTMP8', 'ixSQ_WAVE_TTMP9', - 'ixSQ_WAVE_VALID_AND_IDLE', 'ixSQ_WAVE_VGPR_OFFSET', + 'ixSQ_WAVE_HW_ID2', 'ixSQ_WAVE_IB_DBG1', 'ixSQ_WAVE_IB_STS', + 'ixSQ_WAVE_IB_STS2', 'ixSQ_WAVE_LDS_ALLOC', 'ixSQ_WAVE_M0', + 'ixSQ_WAVE_MODE', 'ixSQ_WAVE_PC_HI', 'ixSQ_WAVE_PC_LO', + 'ixSQ_WAVE_POPS_PACKER', 'ixSQ_WAVE_SCHED_MODE', + 'ixSQ_WAVE_SHADER_CYCLES', 'ixSQ_WAVE_STATUS', + 'ixSQ_WAVE_TRAPSTS', 'ixSQ_WAVE_TTMP0', 'ixSQ_WAVE_TTMP1', + 'ixSQ_WAVE_TTMP10', 'ixSQ_WAVE_TTMP11', 'ixSQ_WAVE_TTMP12', + 'ixSQ_WAVE_TTMP13', 'ixSQ_WAVE_TTMP14', 'ixSQ_WAVE_TTMP15', + 'ixSQ_WAVE_TTMP3', 'ixSQ_WAVE_TTMP4', 'ixSQ_WAVE_TTMP5', + 'ixSQ_WAVE_TTMP6', 'ixSQ_WAVE_TTMP7', 'ixSQ_WAVE_TTMP8', + 'ixSQ_WAVE_TTMP9', 'ixSQ_WAVE_VALID_AND_IDLE', 'ixSTALL_TO_PWRBRK_LUT_1_4', 'ixSTALL_TO_PWRBRK_LUT_5_7', 'ixSTALL_TO_RELEASE_LUT_1_4', 'ixSTALL_TO_RELEASE_LUT_5_7', - 'mmCB_BLEND0_CONTROL', 'mmCB_BLEND0_CONTROL_BASE_IDX', - 'mmCB_BLEND1_CONTROL', 'mmCB_BLEND1_CONTROL_BASE_IDX', - 'mmCB_BLEND2_CONTROL', 'mmCB_BLEND2_CONTROL_BASE_IDX', - 'mmCB_BLEND3_CONTROL', 'mmCB_BLEND3_CONTROL_BASE_IDX', - 'mmCB_BLEND4_CONTROL', 'mmCB_BLEND4_CONTROL_BASE_IDX', - 'mmCB_BLEND5_CONTROL', 'mmCB_BLEND5_CONTROL_BASE_IDX', - 'mmCB_BLEND6_CONTROL', 'mmCB_BLEND6_CONTROL_BASE_IDX', - 'mmCB_BLEND7_CONTROL', 'mmCB_BLEND7_CONTROL_BASE_IDX', - 'mmCB_BLEND_ALPHA', 'mmCB_BLEND_ALPHA_BASE_IDX', - 'mmCB_BLEND_BLUE', 'mmCB_BLEND_BLUE_BASE_IDX', 'mmCB_BLEND_GREEN', - 'mmCB_BLEND_GREEN_BASE_IDX', 'mmCB_BLEND_RED', - 'mmCB_BLEND_RED_BASE_IDX', 'mmCB_CACHE_EVICT_POINTS', - 'mmCB_CACHE_EVICT_POINTS_BASE_IDX', 'mmCB_CGTT_SCLK_CTRL', - 'mmCB_CGTT_SCLK_CTRL_BASE_IDX', 'mmCB_COLOR0_ATTRIB', - 'mmCB_COLOR0_ATTRIB2', 'mmCB_COLOR0_ATTRIB2_BASE_IDX', - 'mmCB_COLOR0_ATTRIB3', 'mmCB_COLOR0_ATTRIB3_BASE_IDX', - 'mmCB_COLOR0_ATTRIB_BASE_IDX', 'mmCB_COLOR0_BASE', - 'mmCB_COLOR0_BASE_BASE_IDX', 'mmCB_COLOR0_BASE_EXT', - 'mmCB_COLOR0_BASE_EXT_BASE_IDX', 'mmCB_COLOR0_CLEAR_WORD0', - 'mmCB_COLOR0_CLEAR_WORD0_BASE_IDX', 'mmCB_COLOR0_CLEAR_WORD1', - 'mmCB_COLOR0_CLEAR_WORD1_BASE_IDX', 'mmCB_COLOR0_CMASK', - 'mmCB_COLOR0_CMASK_BASE_EXT', - 'mmCB_COLOR0_CMASK_BASE_EXT_BASE_IDX', - 'mmCB_COLOR0_CMASK_BASE_IDX', 'mmCB_COLOR0_CMASK_SLICE', - 'mmCB_COLOR0_CMASK_SLICE_BASE_IDX', 'mmCB_COLOR0_DCC_BASE', - 'mmCB_COLOR0_DCC_BASE_BASE_IDX', 'mmCB_COLOR0_DCC_BASE_EXT', - 'mmCB_COLOR0_DCC_BASE_EXT_BASE_IDX', 'mmCB_COLOR0_DCC_CONTROL', - 'mmCB_COLOR0_DCC_CONTROL_BASE_IDX', 'mmCB_COLOR0_FMASK', - 'mmCB_COLOR0_FMASK_BASE_EXT', - 'mmCB_COLOR0_FMASK_BASE_EXT_BASE_IDX', - 'mmCB_COLOR0_FMASK_BASE_IDX', 'mmCB_COLOR0_FMASK_SLICE', - 'mmCB_COLOR0_FMASK_SLICE_BASE_IDX', 'mmCB_COLOR0_INFO', - 'mmCB_COLOR0_INFO_BASE_IDX', 'mmCB_COLOR0_PITCH', - 'mmCB_COLOR0_PITCH_BASE_IDX', 'mmCB_COLOR0_SLICE', - 'mmCB_COLOR0_SLICE_BASE_IDX', 'mmCB_COLOR0_VIEW', - 'mmCB_COLOR0_VIEW_BASE_IDX', 'mmCB_COLOR1_ATTRIB', - 'mmCB_COLOR1_ATTRIB2', 'mmCB_COLOR1_ATTRIB2_BASE_IDX', - 'mmCB_COLOR1_ATTRIB3', 'mmCB_COLOR1_ATTRIB3_BASE_IDX', - 'mmCB_COLOR1_ATTRIB_BASE_IDX', 'mmCB_COLOR1_BASE', - 'mmCB_COLOR1_BASE_BASE_IDX', 'mmCB_COLOR1_BASE_EXT', - 'mmCB_COLOR1_BASE_EXT_BASE_IDX', 'mmCB_COLOR1_CLEAR_WORD0', - 'mmCB_COLOR1_CLEAR_WORD0_BASE_IDX', 'mmCB_COLOR1_CLEAR_WORD1', - 'mmCB_COLOR1_CLEAR_WORD1_BASE_IDX', 'mmCB_COLOR1_CMASK', - 'mmCB_COLOR1_CMASK_BASE_EXT', - 'mmCB_COLOR1_CMASK_BASE_EXT_BASE_IDX', - 'mmCB_COLOR1_CMASK_BASE_IDX', 'mmCB_COLOR1_CMASK_SLICE', - 'mmCB_COLOR1_CMASK_SLICE_BASE_IDX', 'mmCB_COLOR1_DCC_BASE', - 'mmCB_COLOR1_DCC_BASE_BASE_IDX', 'mmCB_COLOR1_DCC_BASE_EXT', - 'mmCB_COLOR1_DCC_BASE_EXT_BASE_IDX', 'mmCB_COLOR1_DCC_CONTROL', - 'mmCB_COLOR1_DCC_CONTROL_BASE_IDX', 'mmCB_COLOR1_FMASK', - 'mmCB_COLOR1_FMASK_BASE_EXT', - 'mmCB_COLOR1_FMASK_BASE_EXT_BASE_IDX', - 'mmCB_COLOR1_FMASK_BASE_IDX', 'mmCB_COLOR1_FMASK_SLICE', - 'mmCB_COLOR1_FMASK_SLICE_BASE_IDX', 'mmCB_COLOR1_INFO', - 'mmCB_COLOR1_INFO_BASE_IDX', 'mmCB_COLOR1_PITCH', - 'mmCB_COLOR1_PITCH_BASE_IDX', 'mmCB_COLOR1_SLICE', - 'mmCB_COLOR1_SLICE_BASE_IDX', 'mmCB_COLOR1_VIEW', - 'mmCB_COLOR1_VIEW_BASE_IDX', 'mmCB_COLOR2_ATTRIB', - 'mmCB_COLOR2_ATTRIB2', 'mmCB_COLOR2_ATTRIB2_BASE_IDX', - 'mmCB_COLOR2_ATTRIB3', 'mmCB_COLOR2_ATTRIB3_BASE_IDX', - 'mmCB_COLOR2_ATTRIB_BASE_IDX', 'mmCB_COLOR2_BASE', - 'mmCB_COLOR2_BASE_BASE_IDX', 'mmCB_COLOR2_BASE_EXT', - 'mmCB_COLOR2_BASE_EXT_BASE_IDX', 'mmCB_COLOR2_CLEAR_WORD0', - 'mmCB_COLOR2_CLEAR_WORD0_BASE_IDX', 'mmCB_COLOR2_CLEAR_WORD1', - 'mmCB_COLOR2_CLEAR_WORD1_BASE_IDX', 'mmCB_COLOR2_CMASK', - 'mmCB_COLOR2_CMASK_BASE_EXT', - 'mmCB_COLOR2_CMASK_BASE_EXT_BASE_IDX', - 'mmCB_COLOR2_CMASK_BASE_IDX', 'mmCB_COLOR2_CMASK_SLICE', - 'mmCB_COLOR2_CMASK_SLICE_BASE_IDX', 'mmCB_COLOR2_DCC_BASE', - 'mmCB_COLOR2_DCC_BASE_BASE_IDX', 'mmCB_COLOR2_DCC_BASE_EXT', - 'mmCB_COLOR2_DCC_BASE_EXT_BASE_IDX', 'mmCB_COLOR2_DCC_CONTROL', - 'mmCB_COLOR2_DCC_CONTROL_BASE_IDX', 'mmCB_COLOR2_FMASK', - 'mmCB_COLOR2_FMASK_BASE_EXT', - 'mmCB_COLOR2_FMASK_BASE_EXT_BASE_IDX', - 'mmCB_COLOR2_FMASK_BASE_IDX', 'mmCB_COLOR2_FMASK_SLICE', - 'mmCB_COLOR2_FMASK_SLICE_BASE_IDX', 'mmCB_COLOR2_INFO', - 'mmCB_COLOR2_INFO_BASE_IDX', 'mmCB_COLOR2_PITCH', - 'mmCB_COLOR2_PITCH_BASE_IDX', 'mmCB_COLOR2_SLICE', - 'mmCB_COLOR2_SLICE_BASE_IDX', 'mmCB_COLOR2_VIEW', - 'mmCB_COLOR2_VIEW_BASE_IDX', 'mmCB_COLOR3_ATTRIB', - 'mmCB_COLOR3_ATTRIB2', 'mmCB_COLOR3_ATTRIB2_BASE_IDX', - 'mmCB_COLOR3_ATTRIB3', 'mmCB_COLOR3_ATTRIB3_BASE_IDX', - 'mmCB_COLOR3_ATTRIB_BASE_IDX', 'mmCB_COLOR3_BASE', - 'mmCB_COLOR3_BASE_BASE_IDX', 'mmCB_COLOR3_BASE_EXT', - 'mmCB_COLOR3_BASE_EXT_BASE_IDX', 'mmCB_COLOR3_CLEAR_WORD0', - 'mmCB_COLOR3_CLEAR_WORD0_BASE_IDX', 'mmCB_COLOR3_CLEAR_WORD1', - 'mmCB_COLOR3_CLEAR_WORD1_BASE_IDX', 'mmCB_COLOR3_CMASK', - 'mmCB_COLOR3_CMASK_BASE_EXT', - 'mmCB_COLOR3_CMASK_BASE_EXT_BASE_IDX', - 'mmCB_COLOR3_CMASK_BASE_IDX', 'mmCB_COLOR3_CMASK_SLICE', - 'mmCB_COLOR3_CMASK_SLICE_BASE_IDX', 'mmCB_COLOR3_DCC_BASE', - 'mmCB_COLOR3_DCC_BASE_BASE_IDX', 'mmCB_COLOR3_DCC_BASE_EXT', - 'mmCB_COLOR3_DCC_BASE_EXT_BASE_IDX', 'mmCB_COLOR3_DCC_CONTROL', - 'mmCB_COLOR3_DCC_CONTROL_BASE_IDX', 'mmCB_COLOR3_FMASK', - 'mmCB_COLOR3_FMASK_BASE_EXT', - 'mmCB_COLOR3_FMASK_BASE_EXT_BASE_IDX', - 'mmCB_COLOR3_FMASK_BASE_IDX', 'mmCB_COLOR3_FMASK_SLICE', - 'mmCB_COLOR3_FMASK_SLICE_BASE_IDX', 'mmCB_COLOR3_INFO', - 'mmCB_COLOR3_INFO_BASE_IDX', 'mmCB_COLOR3_PITCH', - 'mmCB_COLOR3_PITCH_BASE_IDX', 'mmCB_COLOR3_SLICE', - 'mmCB_COLOR3_SLICE_BASE_IDX', 'mmCB_COLOR3_VIEW', - 'mmCB_COLOR3_VIEW_BASE_IDX', 'mmCB_COLOR4_ATTRIB', - 'mmCB_COLOR4_ATTRIB2', 'mmCB_COLOR4_ATTRIB2_BASE_IDX', - 'mmCB_COLOR4_ATTRIB3', 'mmCB_COLOR4_ATTRIB3_BASE_IDX', - 'mmCB_COLOR4_ATTRIB_BASE_IDX', 'mmCB_COLOR4_BASE', - 'mmCB_COLOR4_BASE_BASE_IDX', 'mmCB_COLOR4_BASE_EXT', - 'mmCB_COLOR4_BASE_EXT_BASE_IDX', 'mmCB_COLOR4_CLEAR_WORD0', - 'mmCB_COLOR4_CLEAR_WORD0_BASE_IDX', 'mmCB_COLOR4_CLEAR_WORD1', - 'mmCB_COLOR4_CLEAR_WORD1_BASE_IDX', 'mmCB_COLOR4_CMASK', - 'mmCB_COLOR4_CMASK_BASE_EXT', - 'mmCB_COLOR4_CMASK_BASE_EXT_BASE_IDX', - 'mmCB_COLOR4_CMASK_BASE_IDX', 'mmCB_COLOR4_CMASK_SLICE', - 'mmCB_COLOR4_CMASK_SLICE_BASE_IDX', 'mmCB_COLOR4_DCC_BASE', - 'mmCB_COLOR4_DCC_BASE_BASE_IDX', 'mmCB_COLOR4_DCC_BASE_EXT', - 'mmCB_COLOR4_DCC_BASE_EXT_BASE_IDX', 'mmCB_COLOR4_DCC_CONTROL', - 'mmCB_COLOR4_DCC_CONTROL_BASE_IDX', 'mmCB_COLOR4_FMASK', - 'mmCB_COLOR4_FMASK_BASE_EXT', - 'mmCB_COLOR4_FMASK_BASE_EXT_BASE_IDX', - 'mmCB_COLOR4_FMASK_BASE_IDX', 'mmCB_COLOR4_FMASK_SLICE', - 'mmCB_COLOR4_FMASK_SLICE_BASE_IDX', 'mmCB_COLOR4_INFO', - 'mmCB_COLOR4_INFO_BASE_IDX', 'mmCB_COLOR4_PITCH', - 'mmCB_COLOR4_PITCH_BASE_IDX', 'mmCB_COLOR4_SLICE', - 'mmCB_COLOR4_SLICE_BASE_IDX', 'mmCB_COLOR4_VIEW', - 'mmCB_COLOR4_VIEW_BASE_IDX', 'mmCB_COLOR5_ATTRIB', - 'mmCB_COLOR5_ATTRIB2', 'mmCB_COLOR5_ATTRIB2_BASE_IDX', - 'mmCB_COLOR5_ATTRIB3', 'mmCB_COLOR5_ATTRIB3_BASE_IDX', - 'mmCB_COLOR5_ATTRIB_BASE_IDX', 'mmCB_COLOR5_BASE', - 'mmCB_COLOR5_BASE_BASE_IDX', 'mmCB_COLOR5_BASE_EXT', - 'mmCB_COLOR5_BASE_EXT_BASE_IDX', 'mmCB_COLOR5_CLEAR_WORD0', - 'mmCB_COLOR5_CLEAR_WORD0_BASE_IDX', 'mmCB_COLOR5_CLEAR_WORD1', - 'mmCB_COLOR5_CLEAR_WORD1_BASE_IDX', 'mmCB_COLOR5_CMASK', - 'mmCB_COLOR5_CMASK_BASE_EXT', - 'mmCB_COLOR5_CMASK_BASE_EXT_BASE_IDX', - 'mmCB_COLOR5_CMASK_BASE_IDX', 'mmCB_COLOR5_CMASK_SLICE', - 'mmCB_COLOR5_CMASK_SLICE_BASE_IDX', 'mmCB_COLOR5_DCC_BASE', - 'mmCB_COLOR5_DCC_BASE_BASE_IDX', 'mmCB_COLOR5_DCC_BASE_EXT', - 'mmCB_COLOR5_DCC_BASE_EXT_BASE_IDX', 'mmCB_COLOR5_DCC_CONTROL', - 'mmCB_COLOR5_DCC_CONTROL_BASE_IDX', 'mmCB_COLOR5_FMASK', - 'mmCB_COLOR5_FMASK_BASE_EXT', - 'mmCB_COLOR5_FMASK_BASE_EXT_BASE_IDX', - 'mmCB_COLOR5_FMASK_BASE_IDX', 'mmCB_COLOR5_FMASK_SLICE', - 'mmCB_COLOR5_FMASK_SLICE_BASE_IDX', 'mmCB_COLOR5_INFO', - 'mmCB_COLOR5_INFO_BASE_IDX', 'mmCB_COLOR5_PITCH', - 'mmCB_COLOR5_PITCH_BASE_IDX', 'mmCB_COLOR5_SLICE', - 'mmCB_COLOR5_SLICE_BASE_IDX', 'mmCB_COLOR5_VIEW', - 'mmCB_COLOR5_VIEW_BASE_IDX', 'mmCB_COLOR6_ATTRIB', - 'mmCB_COLOR6_ATTRIB2', 'mmCB_COLOR6_ATTRIB2_BASE_IDX', - 'mmCB_COLOR6_ATTRIB3', 'mmCB_COLOR6_ATTRIB3_BASE_IDX', - 'mmCB_COLOR6_ATTRIB_BASE_IDX', 'mmCB_COLOR6_BASE', - 'mmCB_COLOR6_BASE_BASE_IDX', 'mmCB_COLOR6_BASE_EXT', - 'mmCB_COLOR6_BASE_EXT_BASE_IDX', 'mmCB_COLOR6_CLEAR_WORD0', - 'mmCB_COLOR6_CLEAR_WORD0_BASE_IDX', 'mmCB_COLOR6_CLEAR_WORD1', - 'mmCB_COLOR6_CLEAR_WORD1_BASE_IDX', 'mmCB_COLOR6_CMASK', - 'mmCB_COLOR6_CMASK_BASE_EXT', - 'mmCB_COLOR6_CMASK_BASE_EXT_BASE_IDX', - 'mmCB_COLOR6_CMASK_BASE_IDX', 'mmCB_COLOR6_CMASK_SLICE', - 'mmCB_COLOR6_CMASK_SLICE_BASE_IDX', 'mmCB_COLOR6_DCC_BASE', - 'mmCB_COLOR6_DCC_BASE_BASE_IDX', 'mmCB_COLOR6_DCC_BASE_EXT', - 'mmCB_COLOR6_DCC_BASE_EXT_BASE_IDX', 'mmCB_COLOR6_DCC_CONTROL', - 'mmCB_COLOR6_DCC_CONTROL_BASE_IDX', 'mmCB_COLOR6_FMASK', - 'mmCB_COLOR6_FMASK_BASE_EXT', - 'mmCB_COLOR6_FMASK_BASE_EXT_BASE_IDX', - 'mmCB_COLOR6_FMASK_BASE_IDX', 'mmCB_COLOR6_FMASK_SLICE', - 'mmCB_COLOR6_FMASK_SLICE_BASE_IDX', 'mmCB_COLOR6_INFO', - 'mmCB_COLOR6_INFO_BASE_IDX', 'mmCB_COLOR6_PITCH', - 'mmCB_COLOR6_PITCH_BASE_IDX', 'mmCB_COLOR6_SLICE', - 'mmCB_COLOR6_SLICE_BASE_IDX', 'mmCB_COLOR6_VIEW', - 'mmCB_COLOR6_VIEW_BASE_IDX', 'mmCB_COLOR7_ATTRIB', - 'mmCB_COLOR7_ATTRIB2', 'mmCB_COLOR7_ATTRIB2_BASE_IDX', - 'mmCB_COLOR7_ATTRIB3', 'mmCB_COLOR7_ATTRIB3_BASE_IDX', - 'mmCB_COLOR7_ATTRIB_BASE_IDX', 'mmCB_COLOR7_BASE', - 'mmCB_COLOR7_BASE_BASE_IDX', 'mmCB_COLOR7_BASE_EXT', - 'mmCB_COLOR7_BASE_EXT_BASE_IDX', 'mmCB_COLOR7_CLEAR_WORD0', - 'mmCB_COLOR7_CLEAR_WORD0_BASE_IDX', 'mmCB_COLOR7_CLEAR_WORD1', - 'mmCB_COLOR7_CLEAR_WORD1_BASE_IDX', 'mmCB_COLOR7_CMASK', - 'mmCB_COLOR7_CMASK_BASE_EXT', - 'mmCB_COLOR7_CMASK_BASE_EXT_BASE_IDX', - 'mmCB_COLOR7_CMASK_BASE_IDX', 'mmCB_COLOR7_CMASK_SLICE', - 'mmCB_COLOR7_CMASK_SLICE_BASE_IDX', 'mmCB_COLOR7_DCC_BASE', - 'mmCB_COLOR7_DCC_BASE_BASE_IDX', 'mmCB_COLOR7_DCC_BASE_EXT', - 'mmCB_COLOR7_DCC_BASE_EXT_BASE_IDX', 'mmCB_COLOR7_DCC_CONTROL', - 'mmCB_COLOR7_DCC_CONTROL_BASE_IDX', 'mmCB_COLOR7_FMASK', - 'mmCB_COLOR7_FMASK_BASE_EXT', - 'mmCB_COLOR7_FMASK_BASE_EXT_BASE_IDX', - 'mmCB_COLOR7_FMASK_BASE_IDX', 'mmCB_COLOR7_FMASK_SLICE', - 'mmCB_COLOR7_FMASK_SLICE_BASE_IDX', 'mmCB_COLOR7_INFO', - 'mmCB_COLOR7_INFO_BASE_IDX', 'mmCB_COLOR7_PITCH', - 'mmCB_COLOR7_PITCH_BASE_IDX', 'mmCB_COLOR7_SLICE', - 'mmCB_COLOR7_SLICE_BASE_IDX', 'mmCB_COLOR7_VIEW', - 'mmCB_COLOR7_VIEW_BASE_IDX', 'mmCB_COLOR_CONTROL', - 'mmCB_COLOR_CONTROL_BASE_IDX', 'mmCB_COVERAGE_OUT_CONTROL', - 'mmCB_COVERAGE_OUT_CONTROL_BASE_IDX', 'mmCB_DCC_CONFIG', - 'mmCB_DCC_CONFIG_BASE_IDX', 'mmCB_DCC_CONTROL', - 'mmCB_DCC_CONTROL_BASE_IDX', 'mmCB_HW_CONTROL', - 'mmCB_HW_CONTROL_1', 'mmCB_HW_CONTROL_1_BASE_IDX', - 'mmCB_HW_CONTROL_2', 'mmCB_HW_CONTROL_2_BASE_IDX', - 'mmCB_HW_CONTROL_3', 'mmCB_HW_CONTROL_3_BASE_IDX', - 'mmCB_HW_CONTROL_4', 'mmCB_HW_CONTROL_4_BASE_IDX', - 'mmCB_HW_CONTROL_BASE_IDX', 'mmCB_HW_MEM_ARBITER_RD', - 'mmCB_HW_MEM_ARBITER_RD_BASE_IDX', 'mmCB_HW_MEM_ARBITER_WR', - 'mmCB_HW_MEM_ARBITER_WR_BASE_IDX', 'mmCB_PERFCOUNTER0_HI', - 'mmCB_PERFCOUNTER0_HI_BASE_IDX', 'mmCB_PERFCOUNTER0_LO', - 'mmCB_PERFCOUNTER0_LO_BASE_IDX', 'mmCB_PERFCOUNTER0_SELECT', - 'mmCB_PERFCOUNTER0_SELECT1', 'mmCB_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmCB_PERFCOUNTER0_SELECT_BASE_IDX', 'mmCB_PERFCOUNTER1_HI', - 'mmCB_PERFCOUNTER1_HI_BASE_IDX', 'mmCB_PERFCOUNTER1_LO', - 'mmCB_PERFCOUNTER1_LO_BASE_IDX', 'mmCB_PERFCOUNTER1_SELECT', - 'mmCB_PERFCOUNTER1_SELECT_BASE_IDX', 'mmCB_PERFCOUNTER2_HI', - 'mmCB_PERFCOUNTER2_HI_BASE_IDX', 'mmCB_PERFCOUNTER2_LO', - 'mmCB_PERFCOUNTER2_LO_BASE_IDX', 'mmCB_PERFCOUNTER2_SELECT', - 'mmCB_PERFCOUNTER2_SELECT_BASE_IDX', 'mmCB_PERFCOUNTER3_HI', - 'mmCB_PERFCOUNTER3_HI_BASE_IDX', 'mmCB_PERFCOUNTER3_LO', - 'mmCB_PERFCOUNTER3_LO_BASE_IDX', 'mmCB_PERFCOUNTER3_SELECT', - 'mmCB_PERFCOUNTER3_SELECT_BASE_IDX', 'mmCB_PERFCOUNTER_FILTER', - 'mmCB_PERFCOUNTER_FILTER_BASE_IDX', - 'mmCB_RMI_BC_GL2_CACHE_CONTROL', - 'mmCB_RMI_BC_GL2_CACHE_CONTROL_BASE_IDX', - 'mmCB_RMI_GL2_CACHE_CONTROL', - 'mmCB_RMI_GL2_CACHE_CONTROL_BASE_IDX', 'mmCB_SHADER_MASK', - 'mmCB_SHADER_MASK_BASE_IDX', 'mmCB_STUTTER_CONTROL_CMASK_RDLAT', - 'mmCB_STUTTER_CONTROL_CMASK_RDLAT_BASE_IDX', - 'mmCB_STUTTER_CONTROL_COLOR_RDLAT', - 'mmCB_STUTTER_CONTROL_COLOR_RDLAT_BASE_IDX', - 'mmCB_STUTTER_CONTROL_FMASK_RDLAT', - 'mmCB_STUTTER_CONTROL_FMASK_RDLAT_BASE_IDX', 'mmCB_TARGET_MASK', - 'mmCB_TARGET_MASK_BASE_IDX', 'mmCC_GC_EDC_CONFIG', - 'mmCC_GC_EDC_CONFIG_BASE_IDX', 'mmCC_GC_PRIM_CONFIG', - 'mmCC_GC_PRIM_CONFIG_BASE_IDX', 'mmCC_GC_SA_UNIT_DISABLE', - 'mmCC_GC_SA_UNIT_DISABLE_BASE_IDX', 'mmCC_GC_SHADER_ARRAY_CONFIG', - 'mmCC_GC_SHADER_ARRAY_CONFIG_BASE_IDX', - 'mmCC_GC_SHADER_ARRAY_CONFIG_GEN0', - 'mmCC_GC_SHADER_ARRAY_CONFIG_GEN0_BASE_IDX', - 'mmCC_GC_SHADER_ARRAY_CONFIG_GEN1', - 'mmCC_GC_SHADER_ARRAY_CONFIG_GEN1_BASE_IDX', - 'mmCC_GC_SHADER_RATE_CONFIG', - 'mmCC_GC_SHADER_RATE_CONFIG_BASE_IDX', 'mmCC_RB_BACKEND_DISABLE', - 'mmCC_RB_BACKEND_DISABLE_BASE_IDX', 'mmCC_RB_DAISY_CHAIN', - 'mmCC_RB_DAISY_CHAIN_BASE_IDX', 'mmCC_RB_REDUNDANCY', - 'mmCC_RB_REDUNDANCY_BASE_IDX', 'mmCC_RMI_REDUNDANCY', - 'mmCC_RMI_REDUNDANCY_BASE_IDX', 'mmCGTS_RD_CTRL_REG', - 'mmCGTS_RD_CTRL_REG_BASE_IDX', 'mmCGTS_RD_REG', - 'mmCGTS_RD_REG_BASE_IDX', 'mmCGTS_STATUS_REG', - 'mmCGTS_STATUS_REG_BASE_IDX', 'mmCGTS_TCC_DISABLE', - 'mmCGTS_TCC_DISABLE_BASE_IDX', 'mmCGTS_USER_TCC_DISABLE', - 'mmCGTS_USER_TCC_DISABLE_BASE_IDX', 'mmCGTT_BCI_CLK_CTRL', - 'mmCGTT_BCI_CLK_CTRL_BASE_IDX', 'mmCGTT_CPC_CLK_CTRL', - 'mmCGTT_CPC_CLK_CTRL_BASE_IDX', 'mmCGTT_CPF_CLK_CTRL', - 'mmCGTT_CPF_CLK_CTRL_BASE_IDX', 'mmCGTT_CP_CLK_CTRL', - 'mmCGTT_CP_CLK_CTRL_BASE_IDX', 'mmCGTT_GDS_CLK_CTRL', - 'mmCGTT_GDS_CLK_CTRL_BASE_IDX', 'mmCGTT_GS_NGG_CLK_CTRL', - 'mmCGTT_GS_NGG_CLK_CTRL_BASE_IDX', 'mmCGTT_IA_CLK_CTRL', - 'mmCGTT_IA_CLK_CTRL_BASE_IDX', 'mmCGTT_PA_CLK_CTRL', - 'mmCGTT_PA_CLK_CTRL_BASE_IDX', 'mmCGTT_PC_CLK_CTRL', - 'mmCGTT_PC_CLK_CTRL_BASE_IDX', 'mmCGTT_PH_CLK_CTRL0', - 'mmCGTT_PH_CLK_CTRL0_BASE_IDX', 'mmCGTT_PH_CLK_CTRL1', - 'mmCGTT_PH_CLK_CTRL1_BASE_IDX', 'mmCGTT_PH_CLK_CTRL2', - 'mmCGTT_PH_CLK_CTRL2_BASE_IDX', 'mmCGTT_PH_CLK_CTRL3', - 'mmCGTT_PH_CLK_CTRL3_BASE_IDX', 'mmCGTT_RLC_CLK_CTRL', - 'mmCGTT_RLC_CLK_CTRL_BASE_IDX', 'mmCGTT_SC_CLK_CTRL0', - 'mmCGTT_SC_CLK_CTRL0_BASE_IDX', 'mmCGTT_SC_CLK_CTRL1', - 'mmCGTT_SC_CLK_CTRL1_BASE_IDX', 'mmCGTT_SC_CLK_CTRL2', - 'mmCGTT_SC_CLK_CTRL2_BASE_IDX', 'mmCGTT_SPIS_CLK_CTRL', - 'mmCGTT_SPIS_CLK_CTRL_BASE_IDX', 'mmCGTT_SPI_CGTSSM_CLK_CTRL', - 'mmCGTT_SPI_CGTSSM_CLK_CTRL_BASE_IDX', 'mmCGTT_SPI_CLK_CTRL', - 'mmCGTT_SPI_CLK_CTRL_BASE_IDX', 'mmCGTT_SPI_PS_CLK_CTRL', - 'mmCGTT_SPI_PS_CLK_CTRL_BASE_IDX', 'mmCGTT_SQG_CLK_CTRL', - 'mmCGTT_SQG_CLK_CTRL_BASE_IDX', 'mmCGTT_SQ_CLK_CTRL', - 'mmCGTT_SQ_CLK_CTRL_BASE_IDX', 'mmCGTT_SX_CLK_CTRL0', - 'mmCGTT_SX_CLK_CTRL0_BASE_IDX', 'mmCGTT_SX_CLK_CTRL1', - 'mmCGTT_SX_CLK_CTRL1_BASE_IDX', 'mmCGTT_SX_CLK_CTRL2', - 'mmCGTT_SX_CLK_CTRL2_BASE_IDX', 'mmCGTT_SX_CLK_CTRL3', - 'mmCGTT_SX_CLK_CTRL3_BASE_IDX', 'mmCGTT_SX_CLK_CTRL4', - 'mmCGTT_SX_CLK_CTRL4_BASE_IDX', 'mmCGTT_TCPF_CLK_CTRL', - 'mmCGTT_TCPF_CLK_CTRL_BASE_IDX', 'mmCGTT_TCPI_CLK_CTRL', - 'mmCGTT_TCPI_CLK_CTRL_BASE_IDX', 'mmCGTT_VGT_CLK_CTRL', - 'mmCGTT_VGT_CLK_CTRL_BASE_IDX', 'mmCGTT_WD_CLK_CTRL', - 'mmCGTT_WD_CLK_CTRL_BASE_IDX', 'mmCHA_CHC_CREDITS', - 'mmCHA_CHC_CREDITS_BASE_IDX', 'mmCHA_CLIENT_FREE_DELAY', - 'mmCHA_CLIENT_FREE_DELAY_BASE_IDX', 'mmCHA_PERFCOUNTER0_HI', - 'mmCHA_PERFCOUNTER0_HI_BASE_IDX', 'mmCHA_PERFCOUNTER0_LO', - 'mmCHA_PERFCOUNTER0_LO_BASE_IDX', 'mmCHA_PERFCOUNTER0_SELECT', - 'mmCHA_PERFCOUNTER0_SELECT1', - 'mmCHA_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmCHA_PERFCOUNTER0_SELECT_BASE_IDX', 'mmCHA_PERFCOUNTER1_HI', - 'mmCHA_PERFCOUNTER1_HI_BASE_IDX', 'mmCHA_PERFCOUNTER1_LO', - 'mmCHA_PERFCOUNTER1_LO_BASE_IDX', 'mmCHA_PERFCOUNTER1_SELECT', - 'mmCHA_PERFCOUNTER1_SELECT_BASE_IDX', 'mmCHA_PERFCOUNTER2_HI', - 'mmCHA_PERFCOUNTER2_HI_BASE_IDX', 'mmCHA_PERFCOUNTER2_LO', - 'mmCHA_PERFCOUNTER2_LO_BASE_IDX', 'mmCHA_PERFCOUNTER2_SELECT', - 'mmCHA_PERFCOUNTER2_SELECT_BASE_IDX', 'mmCHA_PERFCOUNTER3_HI', - 'mmCHA_PERFCOUNTER3_HI_BASE_IDX', 'mmCHA_PERFCOUNTER3_LO', - 'mmCHA_PERFCOUNTER3_LO_BASE_IDX', 'mmCHA_PERFCOUNTER3_SELECT', - 'mmCHA_PERFCOUNTER3_SELECT_BASE_IDX', 'mmCHCG_CTRL', - 'mmCHCG_CTRL_BASE_IDX', 'mmCHCG_PERFCOUNTER0_HI', - 'mmCHCG_PERFCOUNTER0_HI_BASE_IDX', 'mmCHCG_PERFCOUNTER0_LO', - 'mmCHCG_PERFCOUNTER0_LO_BASE_IDX', 'mmCHCG_PERFCOUNTER0_SELECT', - 'mmCHCG_PERFCOUNTER0_SELECT1', - 'mmCHCG_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmCHCG_PERFCOUNTER0_SELECT_BASE_IDX', 'mmCHCG_PERFCOUNTER1_HI', - 'mmCHCG_PERFCOUNTER1_HI_BASE_IDX', 'mmCHCG_PERFCOUNTER1_LO', - 'mmCHCG_PERFCOUNTER1_LO_BASE_IDX', 'mmCHCG_PERFCOUNTER1_SELECT', - 'mmCHCG_PERFCOUNTER1_SELECT_BASE_IDX', 'mmCHCG_PERFCOUNTER2_HI', - 'mmCHCG_PERFCOUNTER2_HI_BASE_IDX', 'mmCHCG_PERFCOUNTER2_LO', - 'mmCHCG_PERFCOUNTER2_LO_BASE_IDX', 'mmCHCG_PERFCOUNTER2_SELECT', - 'mmCHCG_PERFCOUNTER2_SELECT_BASE_IDX', 'mmCHCG_PERFCOUNTER3_HI', - 'mmCHCG_PERFCOUNTER3_HI_BASE_IDX', 'mmCHCG_PERFCOUNTER3_LO', - 'mmCHCG_PERFCOUNTER3_LO_BASE_IDX', 'mmCHCG_PERFCOUNTER3_SELECT', - 'mmCHCG_PERFCOUNTER3_SELECT_BASE_IDX', 'mmCHCG_STATUS', - 'mmCHCG_STATUS_BASE_IDX', 'mmCHC_CTRL', 'mmCHC_CTRL_BASE_IDX', - 'mmCHC_PERFCOUNTER0_HI', 'mmCHC_PERFCOUNTER0_HI_BASE_IDX', - 'mmCHC_PERFCOUNTER0_LO', 'mmCHC_PERFCOUNTER0_LO_BASE_IDX', - 'mmCHC_PERFCOUNTER0_SELECT', 'mmCHC_PERFCOUNTER0_SELECT1', - 'mmCHC_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmCHC_PERFCOUNTER0_SELECT_BASE_IDX', 'mmCHC_PERFCOUNTER1_HI', - 'mmCHC_PERFCOUNTER1_HI_BASE_IDX', 'mmCHC_PERFCOUNTER1_LO', - 'mmCHC_PERFCOUNTER1_LO_BASE_IDX', 'mmCHC_PERFCOUNTER1_SELECT', - 'mmCHC_PERFCOUNTER1_SELECT_BASE_IDX', 'mmCHC_PERFCOUNTER2_HI', - 'mmCHC_PERFCOUNTER2_HI_BASE_IDX', 'mmCHC_PERFCOUNTER2_LO', - 'mmCHC_PERFCOUNTER2_LO_BASE_IDX', 'mmCHC_PERFCOUNTER2_SELECT', - 'mmCHC_PERFCOUNTER2_SELECT_BASE_IDX', 'mmCHC_PERFCOUNTER3_HI', - 'mmCHC_PERFCOUNTER3_HI_BASE_IDX', 'mmCHC_PERFCOUNTER3_LO', - 'mmCHC_PERFCOUNTER3_LO_BASE_IDX', 'mmCHC_PERFCOUNTER3_SELECT', - 'mmCHC_PERFCOUNTER3_SELECT_BASE_IDX', 'mmCHC_STATUS', - 'mmCHC_STATUS_BASE_IDX', 'mmCH_ARB_CTRL', - 'mmCH_ARB_CTRL_BASE_IDX', 'mmCH_ARB_STATUS', - 'mmCH_ARB_STATUS_BASE_IDX', 'mmCH_DRAM_BURST_CTRL', - 'mmCH_DRAM_BURST_CTRL_BASE_IDX', 'mmCH_DRAM_BURST_MASK', - 'mmCH_DRAM_BURST_MASK_BASE_IDX', 'mmCH_PIPE_STEER', - 'mmCH_PIPE_STEER_BASE_IDX', 'mmCH_VC5_ENABLE', - 'mmCH_VC5_ENABLE_BASE_IDX', 'mmCOHER_DEST_BASE_0', - 'mmCOHER_DEST_BASE_0_BASE_IDX', 'mmCOHER_DEST_BASE_1', - 'mmCOHER_DEST_BASE_1_BASE_IDX', 'mmCOHER_DEST_BASE_2', - 'mmCOHER_DEST_BASE_2_BASE_IDX', 'mmCOHER_DEST_BASE_3', - 'mmCOHER_DEST_BASE_3_BASE_IDX', 'mmCOHER_DEST_BASE_HI_0', - 'mmCOHER_DEST_BASE_HI_0_BASE_IDX', 'mmCOHER_DEST_BASE_HI_1', - 'mmCOHER_DEST_BASE_HI_1_BASE_IDX', 'mmCOHER_DEST_BASE_HI_2', - 'mmCOHER_DEST_BASE_HI_2_BASE_IDX', 'mmCOHER_DEST_BASE_HI_3', - 'mmCOHER_DEST_BASE_HI_3_BASE_IDX', 'mmCOMPUTE_DDID_INDEX', - 'mmCOMPUTE_DDID_INDEX_BASE_IDX', 'mmCOMPUTE_DESTINATION_EN_SE0', - 'mmCOMPUTE_DESTINATION_EN_SE0_BASE_IDX', - 'mmCOMPUTE_DESTINATION_EN_SE1', - 'mmCOMPUTE_DESTINATION_EN_SE1_BASE_IDX', - 'mmCOMPUTE_DESTINATION_EN_SE2', - 'mmCOMPUTE_DESTINATION_EN_SE2_BASE_IDX', - 'mmCOMPUTE_DESTINATION_EN_SE3', - 'mmCOMPUTE_DESTINATION_EN_SE3_BASE_IDX', 'mmCOMPUTE_DIM_X', - 'mmCOMPUTE_DIM_X_BASE_IDX', 'mmCOMPUTE_DIM_Y', - 'mmCOMPUTE_DIM_Y_BASE_IDX', 'mmCOMPUTE_DIM_Z', - 'mmCOMPUTE_DIM_Z_BASE_IDX', 'mmCOMPUTE_DISPATCH_END', - 'mmCOMPUTE_DISPATCH_END_BASE_IDX', 'mmCOMPUTE_DISPATCH_ID', - 'mmCOMPUTE_DISPATCH_ID_BASE_IDX', 'mmCOMPUTE_DISPATCH_INITIATOR', - 'mmCOMPUTE_DISPATCH_INITIATOR_BASE_IDX', - 'mmCOMPUTE_DISPATCH_PKT_ADDR_HI', - 'mmCOMPUTE_DISPATCH_PKT_ADDR_HI_BASE_IDX', - 'mmCOMPUTE_DISPATCH_PKT_ADDR_LO', - 'mmCOMPUTE_DISPATCH_PKT_ADDR_LO_BASE_IDX', - 'mmCOMPUTE_DISPATCH_SCRATCH_BASE_HI', - 'mmCOMPUTE_DISPATCH_SCRATCH_BASE_HI_BASE_IDX', - 'mmCOMPUTE_DISPATCH_SCRATCH_BASE_LO', - 'mmCOMPUTE_DISPATCH_SCRATCH_BASE_LO_BASE_IDX', - 'mmCOMPUTE_DISPATCH_TUNNEL', 'mmCOMPUTE_DISPATCH_TUNNEL_BASE_IDX', - 'mmCOMPUTE_MISC_RESERVED', 'mmCOMPUTE_MISC_RESERVED_BASE_IDX', - 'mmCOMPUTE_NOWHERE', 'mmCOMPUTE_NOWHERE_BASE_IDX', - 'mmCOMPUTE_NUM_THREAD_X', 'mmCOMPUTE_NUM_THREAD_X_BASE_IDX', - 'mmCOMPUTE_NUM_THREAD_Y', 'mmCOMPUTE_NUM_THREAD_Y_BASE_IDX', - 'mmCOMPUTE_NUM_THREAD_Z', 'mmCOMPUTE_NUM_THREAD_Z_BASE_IDX', - 'mmCOMPUTE_PERFCOUNT_ENABLE', - 'mmCOMPUTE_PERFCOUNT_ENABLE_BASE_IDX', 'mmCOMPUTE_PGM_HI', - 'mmCOMPUTE_PGM_HI_BASE_IDX', 'mmCOMPUTE_PGM_LO', - 'mmCOMPUTE_PGM_LO_BASE_IDX', 'mmCOMPUTE_PGM_RSRC1', - 'mmCOMPUTE_PGM_RSRC1_BASE_IDX', 'mmCOMPUTE_PGM_RSRC2', - 'mmCOMPUTE_PGM_RSRC2_BASE_IDX', 'mmCOMPUTE_PGM_RSRC3', - 'mmCOMPUTE_PGM_RSRC3_BASE_IDX', 'mmCOMPUTE_PIPELINESTAT_ENABLE', - 'mmCOMPUTE_PIPELINESTAT_ENABLE_BASE_IDX', 'mmCOMPUTE_RELAUNCH', - 'mmCOMPUTE_RELAUNCH2', 'mmCOMPUTE_RELAUNCH2_BASE_IDX', - 'mmCOMPUTE_RELAUNCH_BASE_IDX', 'mmCOMPUTE_REQ_CTRL', - 'mmCOMPUTE_REQ_CTRL_BASE_IDX', 'mmCOMPUTE_RESOURCE_LIMITS', - 'mmCOMPUTE_RESOURCE_LIMITS_BASE_IDX', 'mmCOMPUTE_RESTART_X', - 'mmCOMPUTE_RESTART_X_BASE_IDX', 'mmCOMPUTE_RESTART_Y', - 'mmCOMPUTE_RESTART_Y_BASE_IDX', 'mmCOMPUTE_RESTART_Z', - 'mmCOMPUTE_RESTART_Z_BASE_IDX', 'mmCOMPUTE_SHADER_CHKSUM', - 'mmCOMPUTE_SHADER_CHKSUM_BASE_IDX', 'mmCOMPUTE_START_X', - 'mmCOMPUTE_START_X_BASE_IDX', 'mmCOMPUTE_START_Y', - 'mmCOMPUTE_START_Y_BASE_IDX', 'mmCOMPUTE_START_Z', - 'mmCOMPUTE_START_Z_BASE_IDX', 'mmCOMPUTE_STATIC_THREAD_MGMT_SE0', - 'mmCOMPUTE_STATIC_THREAD_MGMT_SE0_BASE_IDX', - 'mmCOMPUTE_STATIC_THREAD_MGMT_SE1', - 'mmCOMPUTE_STATIC_THREAD_MGMT_SE1_BASE_IDX', - 'mmCOMPUTE_STATIC_THREAD_MGMT_SE2', - 'mmCOMPUTE_STATIC_THREAD_MGMT_SE2_BASE_IDX', - 'mmCOMPUTE_STATIC_THREAD_MGMT_SE3', - 'mmCOMPUTE_STATIC_THREAD_MGMT_SE3_BASE_IDX', - 'mmCOMPUTE_THREADGROUP_ID', 'mmCOMPUTE_THREADGROUP_ID_BASE_IDX', - 'mmCOMPUTE_THREAD_TRACE_ENABLE', - 'mmCOMPUTE_THREAD_TRACE_ENABLE_BASE_IDX', - 'mmCOMPUTE_TMPRING_SIZE', 'mmCOMPUTE_TMPRING_SIZE_BASE_IDX', - 'mmCOMPUTE_USER_ACCUM_0', 'mmCOMPUTE_USER_ACCUM_0_BASE_IDX', - 'mmCOMPUTE_USER_ACCUM_1', 'mmCOMPUTE_USER_ACCUM_1_BASE_IDX', - 'mmCOMPUTE_USER_ACCUM_2', 'mmCOMPUTE_USER_ACCUM_2_BASE_IDX', - 'mmCOMPUTE_USER_ACCUM_3', 'mmCOMPUTE_USER_ACCUM_3_BASE_IDX', - 'mmCOMPUTE_USER_DATA_0', 'mmCOMPUTE_USER_DATA_0_BASE_IDX', - 'mmCOMPUTE_USER_DATA_1', 'mmCOMPUTE_USER_DATA_10', - 'mmCOMPUTE_USER_DATA_10_BASE_IDX', 'mmCOMPUTE_USER_DATA_11', - 'mmCOMPUTE_USER_DATA_11_BASE_IDX', 'mmCOMPUTE_USER_DATA_12', - 'mmCOMPUTE_USER_DATA_12_BASE_IDX', 'mmCOMPUTE_USER_DATA_13', - 'mmCOMPUTE_USER_DATA_13_BASE_IDX', 'mmCOMPUTE_USER_DATA_14', - 'mmCOMPUTE_USER_DATA_14_BASE_IDX', 'mmCOMPUTE_USER_DATA_15', - 'mmCOMPUTE_USER_DATA_15_BASE_IDX', - 'mmCOMPUTE_USER_DATA_1_BASE_IDX', 'mmCOMPUTE_USER_DATA_2', - 'mmCOMPUTE_USER_DATA_2_BASE_IDX', 'mmCOMPUTE_USER_DATA_3', - 'mmCOMPUTE_USER_DATA_3_BASE_IDX', 'mmCOMPUTE_USER_DATA_4', - 'mmCOMPUTE_USER_DATA_4_BASE_IDX', 'mmCOMPUTE_USER_DATA_5', - 'mmCOMPUTE_USER_DATA_5_BASE_IDX', 'mmCOMPUTE_USER_DATA_6', - 'mmCOMPUTE_USER_DATA_6_BASE_IDX', 'mmCOMPUTE_USER_DATA_7', - 'mmCOMPUTE_USER_DATA_7_BASE_IDX', 'mmCOMPUTE_USER_DATA_8', - 'mmCOMPUTE_USER_DATA_8_BASE_IDX', 'mmCOMPUTE_USER_DATA_9', - 'mmCOMPUTE_USER_DATA_9_BASE_IDX', 'mmCOMPUTE_VMID', - 'mmCOMPUTE_VMID_BASE_IDX', 'mmCOMPUTE_WAVE_RESTORE_ADDR_HI', - 'mmCOMPUTE_WAVE_RESTORE_ADDR_HI_BASE_IDX', - 'mmCOMPUTE_WAVE_RESTORE_ADDR_LO', - 'mmCOMPUTE_WAVE_RESTORE_ADDR_LO_BASE_IDX', - 'mmCONFIG_RESERVED_REG0', 'mmCONFIG_RESERVED_REG0_BASE_IDX', - 'mmCONFIG_RESERVED_REG1', 'mmCONFIG_RESERVED_REG1_BASE_IDX', - 'mmCONTEXT_RESERVED_REG0', 'mmCONTEXT_RESERVED_REG0_BASE_IDX', - 'mmCONTEXT_RESERVED_REG1', 'mmCONTEXT_RESERVED_REG1_BASE_IDX', - 'mmCPC_DDID_BASE_ADDR_HI', 'mmCPC_DDID_BASE_ADDR_HI_BASE_IDX', - 'mmCPC_DDID_BASE_ADDR_LO', 'mmCPC_DDID_BASE_ADDR_LO_BASE_IDX', - 'mmCPC_DDID_CNTL', 'mmCPC_DDID_CNTL_BASE_IDX', 'mmCPC_INT_ADDR', - 'mmCPC_INT_ADDR_BASE_IDX', 'mmCPC_INT_CNTL', - 'mmCPC_INT_CNTL_BASE_IDX', 'mmCPC_INT_CNTX_ID', - 'mmCPC_INT_CNTX_ID_BASE_IDX', 'mmCPC_INT_INFO', - 'mmCPC_INT_INFO_BASE_IDX', 'mmCPC_INT_PASID', - 'mmCPC_INT_PASID_BASE_IDX', 'mmCPC_INT_STATUS', - 'mmCPC_INT_STATUS_BASE_IDX', 'mmCPC_LATENCY_STATS_DATA', - 'mmCPC_LATENCY_STATS_DATA_BASE_IDX', 'mmCPC_LATENCY_STATS_SELECT', - 'mmCPC_LATENCY_STATS_SELECT_BASE_IDX', 'mmCPC_OS_PIPES', - 'mmCPC_OS_PIPES_BASE_IDX', 'mmCPC_PERFCOUNTER0_HI', - 'mmCPC_PERFCOUNTER0_HI_BASE_IDX', 'mmCPC_PERFCOUNTER0_LO', - 'mmCPC_PERFCOUNTER0_LO_BASE_IDX', 'mmCPC_PERFCOUNTER0_SELECT', - 'mmCPC_PERFCOUNTER0_SELECT1', - 'mmCPC_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmCPC_PERFCOUNTER0_SELECT_BASE_IDX', 'mmCPC_PERFCOUNTER1_HI', - 'mmCPC_PERFCOUNTER1_HI_BASE_IDX', 'mmCPC_PERFCOUNTER1_LO', - 'mmCPC_PERFCOUNTER1_LO_BASE_IDX', 'mmCPC_PERFCOUNTER1_SELECT', - 'mmCPC_PERFCOUNTER1_SELECT_BASE_IDX', 'mmCPC_PSP_DEBUG', - 'mmCPC_PSP_DEBUG_BASE_IDX', 'mmCPC_SUSPEND_CNTL_STACK_OFFSET', - 'mmCPC_SUSPEND_CNTL_STACK_OFFSET_BASE_IDX', - 'mmCPC_SUSPEND_CNTL_STACK_SIZE', - 'mmCPC_SUSPEND_CNTL_STACK_SIZE_BASE_IDX', - 'mmCPC_SUSPEND_CTX_SAVE_BASE_ADDR_HI', - 'mmCPC_SUSPEND_CTX_SAVE_BASE_ADDR_HI_BASE_IDX', - 'mmCPC_SUSPEND_CTX_SAVE_BASE_ADDR_LO', - 'mmCPC_SUSPEND_CTX_SAVE_BASE_ADDR_LO_BASE_IDX', - 'mmCPC_SUSPEND_CTX_SAVE_CONTROL', - 'mmCPC_SUSPEND_CTX_SAVE_CONTROL_BASE_IDX', - 'mmCPC_SUSPEND_CTX_SAVE_SIZE', - 'mmCPC_SUSPEND_CTX_SAVE_SIZE_BASE_IDX', - 'mmCPC_SUSPEND_WG_STATE_OFFSET', - 'mmCPC_SUSPEND_WG_STATE_OFFSET_BASE_IDX', 'mmCPC_UTCL1_CNTL', - 'mmCPC_UTCL1_CNTL_BASE_IDX', 'mmCPC_UTCL1_ERROR', - 'mmCPC_UTCL1_ERROR_BASE_IDX', 'mmCPC_UTCL1_STATUS', - 'mmCPC_UTCL1_STATUS_BASE_IDX', 'mmCPF_GCR_CNTL', - 'mmCPF_GCR_CNTL_BASE_IDX', 'mmCPF_LATENCY_STATS_DATA', - 'mmCPF_LATENCY_STATS_DATA_BASE_IDX', 'mmCPF_LATENCY_STATS_SELECT', - 'mmCPF_LATENCY_STATS_SELECT_BASE_IDX', 'mmCPF_PERFCOUNTER0_HI', - 'mmCPF_PERFCOUNTER0_HI_BASE_IDX', 'mmCPF_PERFCOUNTER0_LO', - 'mmCPF_PERFCOUNTER0_LO_BASE_IDX', 'mmCPF_PERFCOUNTER0_SELECT', - 'mmCPF_PERFCOUNTER0_SELECT1', - 'mmCPF_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmCPF_PERFCOUNTER0_SELECT_BASE_IDX', 'mmCPF_PERFCOUNTER1_HI', - 'mmCPF_PERFCOUNTER1_HI_BASE_IDX', 'mmCPF_PERFCOUNTER1_LO', - 'mmCPF_PERFCOUNTER1_LO_BASE_IDX', 'mmCPF_PERFCOUNTER1_SELECT', - 'mmCPF_PERFCOUNTER1_SELECT_BASE_IDX', - 'mmCPF_TC_PERF_COUNTER_WINDOW_SELECT', - 'mmCPF_TC_PERF_COUNTER_WINDOW_SELECT_BASE_IDX', - 'mmCPF_UTCL1_CNTL', 'mmCPF_UTCL1_CNTL_BASE_IDX', - 'mmCPF_UTCL1_STATUS', 'mmCPF_UTCL1_STATUS_BASE_IDX', - 'mmCPG_LATENCY_STATS_DATA', 'mmCPG_LATENCY_STATS_DATA_BASE_IDX', - 'mmCPG_LATENCY_STATS_SELECT', - 'mmCPG_LATENCY_STATS_SELECT_BASE_IDX', 'mmCPG_PERFCOUNTER0_HI', - 'mmCPG_PERFCOUNTER0_HI_BASE_IDX', 'mmCPG_PERFCOUNTER0_LO', - 'mmCPG_PERFCOUNTER0_LO_BASE_IDX', 'mmCPG_PERFCOUNTER0_SELECT', - 'mmCPG_PERFCOUNTER0_SELECT1', - 'mmCPG_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmCPG_PERFCOUNTER0_SELECT_BASE_IDX', 'mmCPG_PERFCOUNTER1_HI', - 'mmCPG_PERFCOUNTER1_HI_BASE_IDX', 'mmCPG_PERFCOUNTER1_LO', - 'mmCPG_PERFCOUNTER1_LO_BASE_IDX', 'mmCPG_PERFCOUNTER1_SELECT', - 'mmCPG_PERFCOUNTER1_SELECT_BASE_IDX', 'mmCPG_PSP_DEBUG', - 'mmCPG_PSP_DEBUG_BASE_IDX', 'mmCPG_RCIU_CAM_DATA', - 'mmCPG_RCIU_CAM_DATA_BASE_IDX', 'mmCPG_RCIU_CAM_DATA_PHASE0', - 'mmCPG_RCIU_CAM_DATA_PHASE0_BASE_IDX', - 'mmCPG_RCIU_CAM_DATA_PHASE1', - 'mmCPG_RCIU_CAM_DATA_PHASE1_BASE_IDX', - 'mmCPG_RCIU_CAM_DATA_PHASE2', - 'mmCPG_RCIU_CAM_DATA_PHASE2_BASE_IDX', 'mmCPG_RCIU_CAM_INDEX', - 'mmCPG_RCIU_CAM_INDEX_BASE_IDX', - 'mmCPG_TC_PERF_COUNTER_WINDOW_SELECT', - 'mmCPG_TC_PERF_COUNTER_WINDOW_SELECT_BASE_IDX', - 'mmCPG_UTCL1_CNTL', 'mmCPG_UTCL1_CNTL_BASE_IDX', - 'mmCPG_UTCL1_ERROR', 'mmCPG_UTCL1_ERROR_BASE_IDX', - 'mmCPG_UTCL1_STATUS', 'mmCPG_UTCL1_STATUS_BASE_IDX', - 'mmCP_APPEND_ADDR_HI', 'mmCP_APPEND_ADDR_HI_BASE_IDX', - 'mmCP_APPEND_ADDR_LO', 'mmCP_APPEND_ADDR_LO_BASE_IDX', - 'mmCP_APPEND_CMD_ADDR_HI', 'mmCP_APPEND_CMD_ADDR_HI_BASE_IDX', - 'mmCP_APPEND_CMD_ADDR_LO', 'mmCP_APPEND_CMD_ADDR_LO_BASE_IDX', - 'mmCP_APPEND_DATA', 'mmCP_APPEND_DATA_BASE_IDX', - 'mmCP_APPEND_DATA_HI', 'mmCP_APPEND_DATA_HI_BASE_IDX', - 'mmCP_APPEND_DATA_LO', 'mmCP_APPEND_DATA_LO_BASE_IDX', - 'mmCP_APPEND_DDID_CNT', 'mmCP_APPEND_DDID_CNT_BASE_IDX', - 'mmCP_APPEND_LAST_CS_FENCE', 'mmCP_APPEND_LAST_CS_FENCE_BASE_IDX', - 'mmCP_APPEND_LAST_CS_FENCE_HI', - 'mmCP_APPEND_LAST_CS_FENCE_HI_BASE_IDX', - 'mmCP_APPEND_LAST_CS_FENCE_LO', - 'mmCP_APPEND_LAST_CS_FENCE_LO_BASE_IDX', - 'mmCP_APPEND_LAST_PS_FENCE', 'mmCP_APPEND_LAST_PS_FENCE_BASE_IDX', - 'mmCP_APPEND_LAST_PS_FENCE_HI', - 'mmCP_APPEND_LAST_PS_FENCE_HI_BASE_IDX', - 'mmCP_APPEND_LAST_PS_FENCE_LO', - 'mmCP_APPEND_LAST_PS_FENCE_LO_BASE_IDX', 'mmCP_AQL_SMM_STATUS', - 'mmCP_AQL_SMM_STATUS_BASE_IDX', 'mmCP_ATOMIC_PREOP_HI', - 'mmCP_ATOMIC_PREOP_HI_BASE_IDX', 'mmCP_ATOMIC_PREOP_LO', - 'mmCP_ATOMIC_PREOP_LO_BASE_IDX', 'mmCP_BUSY_STAT', - 'mmCP_BUSY_STAT_BASE_IDX', 'mmCP_CEQ1_AVAIL', - 'mmCP_CEQ1_AVAIL_BASE_IDX', 'mmCP_CEQ2_AVAIL', - 'mmCP_CEQ2_AVAIL_BASE_IDX', 'mmCP_CE_ATOMIC_PREOP_HI', - 'mmCP_CE_ATOMIC_PREOP_HI_BASE_IDX', 'mmCP_CE_ATOMIC_PREOP_LO', - 'mmCP_CE_ATOMIC_PREOP_LO_BASE_IDX', 'mmCP_CE_COMPARE_COUNT', - 'mmCP_CE_COMPARE_COUNT_BASE_IDX', 'mmCP_CE_COMPLETION_STATUS', - 'mmCP_CE_COMPLETION_STATUS_BASE_IDX', 'mmCP_CE_COUNTER', - 'mmCP_CE_COUNTER_BASE_IDX', 'mmCP_CE_CS_PARTITION_INDEX', - 'mmCP_CE_CS_PARTITION_INDEX_BASE_IDX', 'mmCP_CE_DB_BASE_HI', - 'mmCP_CE_DB_BASE_HI_BASE_IDX', 'mmCP_CE_DB_BASE_LO', - 'mmCP_CE_DB_BASE_LO_BASE_IDX', 'mmCP_CE_DB_BUFSZ', - 'mmCP_CE_DB_BUFSZ_BASE_IDX', 'mmCP_CE_DB_CMD_BUFSZ', - 'mmCP_CE_DB_CMD_BUFSZ_BASE_IDX', 'mmCP_CE_DE_COUNT', - 'mmCP_CE_DE_COUNT_BASE_IDX', 'mmCP_CE_DOORBELL_CONTROL', - 'mmCP_CE_DOORBELL_CONTROL_BASE_IDX', 'mmCP_CE_F32_INTERRUPT', - 'mmCP_CE_F32_INTERRUPT_BASE_IDX', 'mmCP_CE_GDS_ATOMIC0_PREOP_HI', - 'mmCP_CE_GDS_ATOMIC0_PREOP_HI_BASE_IDX', - 'mmCP_CE_GDS_ATOMIC0_PREOP_LO', - 'mmCP_CE_GDS_ATOMIC0_PREOP_LO_BASE_IDX', - 'mmCP_CE_GDS_ATOMIC1_PREOP_HI', - 'mmCP_CE_GDS_ATOMIC1_PREOP_HI_BASE_IDX', - 'mmCP_CE_GDS_ATOMIC1_PREOP_LO', - 'mmCP_CE_GDS_ATOMIC1_PREOP_LO_BASE_IDX', 'mmCP_CE_HEADER_DUMP', - 'mmCP_CE_HEADER_DUMP_BASE_IDX', 'mmCP_CE_IB1_BASE_HI', - 'mmCP_CE_IB1_BASE_HI_BASE_IDX', 'mmCP_CE_IB1_BASE_LO', - 'mmCP_CE_IB1_BASE_LO_BASE_IDX', 'mmCP_CE_IB1_BUFSZ', - 'mmCP_CE_IB1_BUFSZ_BASE_IDX', 'mmCP_CE_IB1_CMD_BUFSZ', - 'mmCP_CE_IB1_CMD_BUFSZ_BASE_IDX', 'mmCP_CE_IB1_OFFSET', - 'mmCP_CE_IB1_OFFSET_BASE_IDX', 'mmCP_CE_IB2_BASE_HI', - 'mmCP_CE_IB2_BASE_HI_BASE_IDX', 'mmCP_CE_IB2_BASE_LO', - 'mmCP_CE_IB2_BASE_LO_BASE_IDX', 'mmCP_CE_IB2_BUFSZ', - 'mmCP_CE_IB2_BUFSZ_BASE_IDX', 'mmCP_CE_IB2_CMD_BUFSZ', - 'mmCP_CE_IB2_CMD_BUFSZ_BASE_IDX', 'mmCP_CE_IB2_OFFSET', - 'mmCP_CE_IB2_OFFSET_BASE_IDX', 'mmCP_CE_IC_BASE_CNTL', - 'mmCP_CE_IC_BASE_CNTL_BASE_IDX', 'mmCP_CE_IC_BASE_HI', - 'mmCP_CE_IC_BASE_HI_BASE_IDX', 'mmCP_CE_IC_BASE_LO', - 'mmCP_CE_IC_BASE_LO_BASE_IDX', 'mmCP_CE_IC_OP_CNTL', - 'mmCP_CE_IC_OP_CNTL_BASE_IDX', 'mmCP_CE_INIT_BASE_HI', - 'mmCP_CE_INIT_BASE_HI_BASE_IDX', 'mmCP_CE_INIT_BASE_LO', - 'mmCP_CE_INIT_BASE_LO_BASE_IDX', 'mmCP_CE_INIT_BUFSZ', - 'mmCP_CE_INIT_BUFSZ_BASE_IDX', 'mmCP_CE_INIT_CMD_BUFSZ', - 'mmCP_CE_INIT_CMD_BUFSZ_BASE_IDX', 'mmCP_CE_INSTR_PNTR', - 'mmCP_CE_INSTR_PNTR_BASE_IDX', 'mmCP_CE_INTR_ROUTINE_START', - 'mmCP_CE_INTR_ROUTINE_START_BASE_IDX', 'mmCP_CE_JT_STAT', - 'mmCP_CE_JT_STAT_BASE_IDX', 'mmCP_CE_METADATA_BASE_ADDR', - 'mmCP_CE_METADATA_BASE_ADDR_BASE_IDX', - 'mmCP_CE_METADATA_BASE_ADDR_HI', - 'mmCP_CE_METADATA_BASE_ADDR_HI_BASE_IDX', - 'mmCP_CE_PRGRM_CNTR_START', 'mmCP_CE_PRGRM_CNTR_START_BASE_IDX', - 'mmCP_CE_ROQ_DB_STAT', 'mmCP_CE_ROQ_DB_STAT_BASE_IDX', - 'mmCP_CE_ROQ_IB1_STAT', 'mmCP_CE_ROQ_IB1_STAT_BASE_IDX', - 'mmCP_CE_ROQ_IB2_STAT', 'mmCP_CE_ROQ_IB2_STAT_BASE_IDX', - 'mmCP_CE_ROQ_RB_STAT', 'mmCP_CE_ROQ_RB_STAT_BASE_IDX', - 'mmCP_CE_UCODE_ADDR', 'mmCP_CE_UCODE_ADDR_BASE_IDX', - 'mmCP_CE_UCODE_DATA', 'mmCP_CE_UCODE_DATA_BASE_IDX', - 'mmCP_CMD_DATA', 'mmCP_CMD_DATA_BASE_IDX', 'mmCP_CMD_INDEX', - 'mmCP_CMD_INDEX_BASE_IDX', 'mmCP_CNTX_STAT', - 'mmCP_CNTX_STAT_BASE_IDX', 'mmCP_COHER_BASE', - 'mmCP_COHER_BASE_BASE_IDX', 'mmCP_COHER_BASE_HI', - 'mmCP_COHER_BASE_HI_BASE_IDX', 'mmCP_COHER_CNTL', - 'mmCP_COHER_CNTL_BASE_IDX', 'mmCP_COHER_SIZE', - 'mmCP_COHER_SIZE_BASE_IDX', 'mmCP_COHER_SIZE_HI', - 'mmCP_COHER_SIZE_HI_BASE_IDX', 'mmCP_COHER_START_DELAY', - 'mmCP_COHER_START_DELAY_BASE_IDX', 'mmCP_COHER_STATUS', - 'mmCP_COHER_STATUS_BASE_IDX', 'mmCP_CONTEXT_CNTL', - 'mmCP_CONTEXT_CNTL_BASE_IDX', 'mmCP_CPC_BUSY_STAT', - 'mmCP_CPC_BUSY_STAT2', 'mmCP_CPC_BUSY_STAT2_BASE_IDX', - 'mmCP_CPC_BUSY_STAT_BASE_IDX', 'mmCP_CPC_GFX_CNTL', - 'mmCP_CPC_GFX_CNTL_BASE_IDX', 'mmCP_CPC_GRBM_FREE_COUNT', - 'mmCP_CPC_GRBM_FREE_COUNT_BASE_IDX', 'mmCP_CPC_HALT_HYST_COUNT', - 'mmCP_CPC_HALT_HYST_COUNT_BASE_IDX', 'mmCP_CPC_IC_BASE_CNTL', - 'mmCP_CPC_IC_BASE_CNTL_BASE_IDX', 'mmCP_CPC_IC_BASE_HI', - 'mmCP_CPC_IC_BASE_HI_BASE_IDX', 'mmCP_CPC_IC_BASE_LO', - 'mmCP_CPC_IC_BASE_LO_BASE_IDX', 'mmCP_CPC_IC_OP_CNTL', - 'mmCP_CPC_IC_OP_CNTL_BASE_IDX', 'mmCP_CPC_MGCG_SYNC_CNTL', - 'mmCP_CPC_MGCG_SYNC_CNTL_BASE_IDX', - 'mmCP_CPC_PRIV_VIOLATION_ADDR', - 'mmCP_CPC_PRIV_VIOLATION_ADDR_BASE_IDX', 'mmCP_CPC_SCRATCH_DATA', - 'mmCP_CPC_SCRATCH_DATA_BASE_IDX', 'mmCP_CPC_SCRATCH_INDEX', - 'mmCP_CPC_SCRATCH_INDEX_BASE_IDX', 'mmCP_CPC_STALLED_STAT1', - 'mmCP_CPC_STALLED_STAT1_BASE_IDX', 'mmCP_CPC_STATUS', - 'mmCP_CPC_STATUS_BASE_IDX', 'mmCP_CPF_BUSY_STAT', - 'mmCP_CPF_BUSY_STAT2', 'mmCP_CPF_BUSY_STAT2_BASE_IDX', - 'mmCP_CPF_BUSY_STAT_BASE_IDX', 'mmCP_CPF_GRBM_FREE_COUNT', - 'mmCP_CPF_GRBM_FREE_COUNT_BASE_IDX', 'mmCP_CPF_STALLED_STAT1', - 'mmCP_CPF_STALLED_STAT1_BASE_IDX', 'mmCP_CPF_STATUS', - 'mmCP_CPF_STATUS_BASE_IDX', 'mmCP_CSF_STAT', - 'mmCP_CSF_STAT_BASE_IDX', 'mmCP_DB_BASE_HI', - 'mmCP_DB_BASE_HI_BASE_IDX', 'mmCP_DB_BASE_LO', - 'mmCP_DB_BASE_LO_BASE_IDX', 'mmCP_DB_BUFSZ', - 'mmCP_DB_BUFSZ_BASE_IDX', 'mmCP_DB_CMD_BUFSZ', - 'mmCP_DB_CMD_BUFSZ_BASE_IDX', 'mmCP_DDID_BASE_ADDR_HI', - 'mmCP_DDID_BASE_ADDR_HI_BASE_IDX', 'mmCP_DDID_BASE_ADDR_LO', - 'mmCP_DDID_BASE_ADDR_LO_BASE_IDX', 'mmCP_DDID_CNTL', - 'mmCP_DDID_CNTL_BASE_IDX', 'mmCP_DEVICE_ID', - 'mmCP_DEVICE_ID_BASE_IDX', 'mmCP_DE_CE_COUNT', - 'mmCP_DE_CE_COUNT_BASE_IDX', 'mmCP_DE_DE_COUNT', - 'mmCP_DE_DE_COUNT_BASE_IDX', 'mmCP_DE_LAST_INVAL_COUNT', - 'mmCP_DE_LAST_INVAL_COUNT_BASE_IDX', 'mmCP_DISPATCH_INDR_ADDR', - 'mmCP_DISPATCH_INDR_ADDR_BASE_IDX', 'mmCP_DISPATCH_INDR_ADDR_HI', - 'mmCP_DISPATCH_INDR_ADDR_HI_BASE_IDX', 'mmCP_DMA_CNTL', - 'mmCP_DMA_CNTL_BASE_IDX', 'mmCP_DMA_ME_CMD_ADDR_HI', - 'mmCP_DMA_ME_CMD_ADDR_HI_BASE_IDX', 'mmCP_DMA_ME_CMD_ADDR_LO', - 'mmCP_DMA_ME_CMD_ADDR_LO_BASE_IDX', 'mmCP_DMA_ME_COMMAND', - 'mmCP_DMA_ME_COMMAND_BASE_IDX', 'mmCP_DMA_ME_CONTROL', - 'mmCP_DMA_ME_CONTROL_BASE_IDX', 'mmCP_DMA_ME_DST_ADDR', - 'mmCP_DMA_ME_DST_ADDR_BASE_IDX', 'mmCP_DMA_ME_DST_ADDR_HI', - 'mmCP_DMA_ME_DST_ADDR_HI_BASE_IDX', 'mmCP_DMA_ME_SRC_ADDR', - 'mmCP_DMA_ME_SRC_ADDR_BASE_IDX', 'mmCP_DMA_ME_SRC_ADDR_HI', - 'mmCP_DMA_ME_SRC_ADDR_HI_BASE_IDX', 'mmCP_DMA_PFP_CMD_ADDR_HI', - 'mmCP_DMA_PFP_CMD_ADDR_HI_BASE_IDX', 'mmCP_DMA_PFP_CMD_ADDR_LO', - 'mmCP_DMA_PFP_CMD_ADDR_LO_BASE_IDX', 'mmCP_DMA_PFP_COMMAND', - 'mmCP_DMA_PFP_COMMAND_BASE_IDX', 'mmCP_DMA_PFP_CONTROL', - 'mmCP_DMA_PFP_CONTROL_BASE_IDX', 'mmCP_DMA_PFP_DST_ADDR', - 'mmCP_DMA_PFP_DST_ADDR_BASE_IDX', 'mmCP_DMA_PFP_DST_ADDR_HI', - 'mmCP_DMA_PFP_DST_ADDR_HI_BASE_IDX', 'mmCP_DMA_PFP_SRC_ADDR', - 'mmCP_DMA_PFP_SRC_ADDR_BASE_IDX', 'mmCP_DMA_PFP_SRC_ADDR_HI', - 'mmCP_DMA_PFP_SRC_ADDR_HI_BASE_IDX', 'mmCP_DMA_READ_TAGS', - 'mmCP_DMA_READ_TAGS_BASE_IDX', 'mmCP_DMA_WATCH0_ADDR_HI', - 'mmCP_DMA_WATCH0_ADDR_HI_BASE_IDX', 'mmCP_DMA_WATCH0_ADDR_LO', - 'mmCP_DMA_WATCH0_ADDR_LO_BASE_IDX', 'mmCP_DMA_WATCH0_CNTL', - 'mmCP_DMA_WATCH0_CNTL_BASE_IDX', 'mmCP_DMA_WATCH0_MASK', - 'mmCP_DMA_WATCH0_MASK_BASE_IDX', 'mmCP_DMA_WATCH1_ADDR_HI', - 'mmCP_DMA_WATCH1_ADDR_HI_BASE_IDX', 'mmCP_DMA_WATCH1_ADDR_LO', - 'mmCP_DMA_WATCH1_ADDR_LO_BASE_IDX', 'mmCP_DMA_WATCH1_CNTL', - 'mmCP_DMA_WATCH1_CNTL_BASE_IDX', 'mmCP_DMA_WATCH1_MASK', - 'mmCP_DMA_WATCH1_MASK_BASE_IDX', 'mmCP_DMA_WATCH2_ADDR_HI', - 'mmCP_DMA_WATCH2_ADDR_HI_BASE_IDX', 'mmCP_DMA_WATCH2_ADDR_LO', - 'mmCP_DMA_WATCH2_ADDR_LO_BASE_IDX', 'mmCP_DMA_WATCH2_CNTL', - 'mmCP_DMA_WATCH2_CNTL_BASE_IDX', 'mmCP_DMA_WATCH2_MASK', - 'mmCP_DMA_WATCH2_MASK_BASE_IDX', 'mmCP_DMA_WATCH3_ADDR_HI', - 'mmCP_DMA_WATCH3_ADDR_HI_BASE_IDX', 'mmCP_DMA_WATCH3_ADDR_LO', - 'mmCP_DMA_WATCH3_ADDR_LO_BASE_IDX', 'mmCP_DMA_WATCH3_CNTL', - 'mmCP_DMA_WATCH3_CNTL_BASE_IDX', 'mmCP_DMA_WATCH3_MASK', - 'mmCP_DMA_WATCH3_MASK_BASE_IDX', 'mmCP_DMA_WATCH_STAT', - 'mmCP_DMA_WATCH_STAT_ADDR_HI', - 'mmCP_DMA_WATCH_STAT_ADDR_HI_BASE_IDX', - 'mmCP_DMA_WATCH_STAT_ADDR_LO', - 'mmCP_DMA_WATCH_STAT_ADDR_LO_BASE_IDX', - 'mmCP_DMA_WATCH_STAT_BASE_IDX', 'mmCP_DRAW_INDX_INDR_ADDR', - 'mmCP_DRAW_INDX_INDR_ADDR_BASE_IDX', - 'mmCP_DRAW_INDX_INDR_ADDR_HI', - 'mmCP_DRAW_INDX_INDR_ADDR_HI_BASE_IDX', 'mmCP_DRAW_OBJECT', - 'mmCP_DRAW_OBJECT_BASE_IDX', 'mmCP_DRAW_OBJECT_COUNTER', - 'mmCP_DRAW_OBJECT_COUNTER_BASE_IDX', 'mmCP_DRAW_WINDOW_CNTL', - 'mmCP_DRAW_WINDOW_CNTL_BASE_IDX', 'mmCP_DRAW_WINDOW_HI', - 'mmCP_DRAW_WINDOW_HI_BASE_IDX', 'mmCP_DRAW_WINDOW_LO', - 'mmCP_DRAW_WINDOW_LO_BASE_IDX', 'mmCP_DRAW_WINDOW_MASK_HI', - 'mmCP_DRAW_WINDOW_MASK_HI_BASE_IDX', 'mmCP_ECC_FIRSTOCCURRENCE', - 'mmCP_ECC_FIRSTOCCURRENCE_BASE_IDX', - 'mmCP_ECC_FIRSTOCCURRENCE_RING0', - 'mmCP_ECC_FIRSTOCCURRENCE_RING0_BASE_IDX', - 'mmCP_ECC_FIRSTOCCURRENCE_RING1', - 'mmCP_ECC_FIRSTOCCURRENCE_RING1_BASE_IDX', - 'mmCP_ECC_FIRSTOCCURRENCE_RING2', - 'mmCP_ECC_FIRSTOCCURRENCE_RING2_BASE_IDX', 'mmCP_EOPQ_WAIT_TIME', - 'mmCP_EOPQ_WAIT_TIME_BASE_IDX', 'mmCP_EOP_DONE_ADDR_HI', - 'mmCP_EOP_DONE_ADDR_HI_BASE_IDX', 'mmCP_EOP_DONE_ADDR_LO', - 'mmCP_EOP_DONE_ADDR_LO_BASE_IDX', 'mmCP_EOP_DONE_CNTX_ID', - 'mmCP_EOP_DONE_CNTX_ID_BASE_IDX', 'mmCP_EOP_DONE_DATA_CNTL', - 'mmCP_EOP_DONE_DATA_CNTL_BASE_IDX', 'mmCP_EOP_DONE_DATA_HI', - 'mmCP_EOP_DONE_DATA_HI_BASE_IDX', 'mmCP_EOP_DONE_DATA_LO', - 'mmCP_EOP_DONE_DATA_LO_BASE_IDX', 'mmCP_EOP_DONE_EVENT_CNTL', - 'mmCP_EOP_DONE_EVENT_CNTL_BASE_IDX', 'mmCP_EOP_LAST_FENCE_HI', - 'mmCP_EOP_LAST_FENCE_HI_BASE_IDX', 'mmCP_EOP_LAST_FENCE_LO', - 'mmCP_EOP_LAST_FENCE_LO_BASE_IDX', 'mmCP_FATAL_ERROR', - 'mmCP_FATAL_ERROR_BASE_IDX', 'mmCP_FETCHER_SOURCE', - 'mmCP_FETCHER_SOURCE_BASE_IDX', 'mmCP_GDS_ATOMIC0_PREOP_HI', - 'mmCP_GDS_ATOMIC0_PREOP_HI_BASE_IDX', 'mmCP_GDS_ATOMIC0_PREOP_LO', - 'mmCP_GDS_ATOMIC0_PREOP_LO_BASE_IDX', 'mmCP_GDS_ATOMIC1_PREOP_HI', - 'mmCP_GDS_ATOMIC1_PREOP_HI_BASE_IDX', 'mmCP_GDS_ATOMIC1_PREOP_LO', - 'mmCP_GDS_ATOMIC1_PREOP_LO_BASE_IDX', 'mmCP_GDS_BKUP_ADDR', - 'mmCP_GDS_BKUP_ADDR_BASE_IDX', 'mmCP_GDS_BKUP_ADDR_HI', - 'mmCP_GDS_BKUP_ADDR_HI_BASE_IDX', 'mmCP_GFX_DDID_DELTA_RPT_COUNT', - 'mmCP_GFX_DDID_DELTA_RPT_COUNT_BASE_IDX', - 'mmCP_GFX_DDID_INFLIGHT_COUNT', - 'mmCP_GFX_DDID_INFLIGHT_COUNT_BASE_IDX', 'mmCP_GFX_DDID_RPTR', - 'mmCP_GFX_DDID_RPTR_BASE_IDX', 'mmCP_GFX_DDID_WPTR', - 'mmCP_GFX_DDID_WPTR_BASE_IDX', 'mmCP_GFX_ERROR', - 'mmCP_GFX_ERROR_BASE_IDX', 'mmCP_GFX_HPD_CONTROL0', - 'mmCP_GFX_HPD_CONTROL0_BASE_IDX', - 'mmCP_GFX_HPD_OSPRE_FENCE_ADDR_HI', - 'mmCP_GFX_HPD_OSPRE_FENCE_ADDR_HI_BASE_IDX', - 'mmCP_GFX_HPD_OSPRE_FENCE_ADDR_LO', - 'mmCP_GFX_HPD_OSPRE_FENCE_ADDR_LO_BASE_IDX', - 'mmCP_GFX_HPD_OSPRE_FENCE_DATA_HI', - 'mmCP_GFX_HPD_OSPRE_FENCE_DATA_HI_BASE_IDX', - 'mmCP_GFX_HPD_OSPRE_FENCE_DATA_LO', - 'mmCP_GFX_HPD_OSPRE_FENCE_DATA_LO_BASE_IDX', - 'mmCP_GFX_HPD_STATUS0', 'mmCP_GFX_HPD_STATUS0_BASE_IDX', - 'mmCP_GFX_HQD_ACTIVE', 'mmCP_GFX_HQD_ACTIVE_BASE_IDX', - 'mmCP_GFX_HQD_BASE', 'mmCP_GFX_HQD_BASE_BASE_IDX', - 'mmCP_GFX_HQD_BASE_HI', 'mmCP_GFX_HQD_BASE_HI_BASE_IDX', - 'mmCP_GFX_HQD_CE_BASE', 'mmCP_GFX_HQD_CE_BASE_BASE_IDX', - 'mmCP_GFX_HQD_CE_BASE_HI', 'mmCP_GFX_HQD_CE_BASE_HI_BASE_IDX', - 'mmCP_GFX_HQD_CE_CNTL', 'mmCP_GFX_HQD_CE_CNTL_BASE_IDX', - 'mmCP_GFX_HQD_CE_CSMD_RPTR', 'mmCP_GFX_HQD_CE_CSMD_RPTR_BASE_IDX', - 'mmCP_GFX_HQD_CE_OFFSET', 'mmCP_GFX_HQD_CE_OFFSET_BASE_IDX', - 'mmCP_GFX_HQD_CE_RPTR', 'mmCP_GFX_HQD_CE_RPTR_ADDR', - 'mmCP_GFX_HQD_CE_RPTR_ADDR_BASE_IDX', - 'mmCP_GFX_HQD_CE_RPTR_ADDR_HI', - 'mmCP_GFX_HQD_CE_RPTR_ADDR_HI_BASE_IDX', - 'mmCP_GFX_HQD_CE_RPTR_BASE_IDX', 'mmCP_GFX_HQD_CE_RPTR_WR', - 'mmCP_GFX_HQD_CE_RPTR_WR_BASE_IDX', 'mmCP_GFX_HQD_CE_WPTR', - 'mmCP_GFX_HQD_CE_WPTR_BASE_IDX', 'mmCP_GFX_HQD_CE_WPTR_HI', - 'mmCP_GFX_HQD_CE_WPTR_HI_BASE_IDX', - 'mmCP_GFX_HQD_CE_WPTR_POLL_ADDR_HI', - 'mmCP_GFX_HQD_CE_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmCP_GFX_HQD_CE_WPTR_POLL_ADDR_LO', - 'mmCP_GFX_HQD_CE_WPTR_POLL_ADDR_LO_BASE_IDX', 'mmCP_GFX_HQD_CNTL', - 'mmCP_GFX_HQD_CNTL_BASE_IDX', 'mmCP_GFX_HQD_CSMD_RPTR', - 'mmCP_GFX_HQD_CSMD_RPTR_BASE_IDX', 'mmCP_GFX_HQD_DEQUEUE_REQUEST', - 'mmCP_GFX_HQD_DEQUEUE_REQUEST_BASE_IDX', - 'mmCP_GFX_HQD_HQ_CONTROL0', 'mmCP_GFX_HQD_HQ_CONTROL0_BASE_IDX', - 'mmCP_GFX_HQD_HQ_STATUS0', 'mmCP_GFX_HQD_HQ_STATUS0_BASE_IDX', - 'mmCP_GFX_HQD_MAPPED', 'mmCP_GFX_HQD_MAPPED_BASE_IDX', - 'mmCP_GFX_HQD_OFFSET', 'mmCP_GFX_HQD_OFFSET_BASE_IDX', - 'mmCP_GFX_HQD_QUANTUM', 'mmCP_GFX_HQD_QUANTUM_BASE_IDX', - 'mmCP_GFX_HQD_QUEUE_PRIORITY', - 'mmCP_GFX_HQD_QUEUE_PRIORITY_BASE_IDX', - 'mmCP_GFX_HQD_QUE_MGR_CONTROL', - 'mmCP_GFX_HQD_QUE_MGR_CONTROL_BASE_IDX', 'mmCP_GFX_HQD_RPTR', - 'mmCP_GFX_HQD_RPTR_ADDR', 'mmCP_GFX_HQD_RPTR_ADDR_BASE_IDX', - 'mmCP_GFX_HQD_RPTR_ADDR_HI', 'mmCP_GFX_HQD_RPTR_ADDR_HI_BASE_IDX', - 'mmCP_GFX_HQD_RPTR_BASE_IDX', 'mmCP_GFX_HQD_VMID', - 'mmCP_GFX_HQD_VMID_BASE_IDX', 'mmCP_GFX_HQD_WPTR', - 'mmCP_GFX_HQD_WPTR_BASE_IDX', 'mmCP_GFX_HQD_WPTR_HI', - 'mmCP_GFX_HQD_WPTR_HI_BASE_IDX', 'mmCP_GFX_INDEX_MUTEX', - 'mmCP_GFX_INDEX_MUTEX_BASE_IDX', 'mmCP_GFX_MQD_BASE_ADDR', - 'mmCP_GFX_MQD_BASE_ADDR_BASE_IDX', 'mmCP_GFX_MQD_BASE_ADDR_HI', - 'mmCP_GFX_MQD_BASE_ADDR_HI_BASE_IDX', 'mmCP_GFX_MQD_CONTROL', - 'mmCP_GFX_MQD_CONTROL_BASE_IDX', 'mmCP_GFX_QUEUE_INDEX', - 'mmCP_GFX_QUEUE_INDEX_BASE_IDX', 'mmCP_GPU_TIMESTAMP_OFFSET_HI', - 'mmCP_GPU_TIMESTAMP_OFFSET_HI_BASE_IDX', - 'mmCP_GPU_TIMESTAMP_OFFSET_LO', - 'mmCP_GPU_TIMESTAMP_OFFSET_LO_BASE_IDX', 'mmCP_GRBM_FREE_COUNT', - 'mmCP_GRBM_FREE_COUNT_BASE_IDX', 'mmCP_HPD_MES_ROQ_OFFSETS', - 'mmCP_HPD_MES_ROQ_OFFSETS_BASE_IDX', 'mmCP_HPD_ROQ_OFFSETS', - 'mmCP_HPD_ROQ_OFFSETS_BASE_IDX', 'mmCP_HPD_STATUS0', - 'mmCP_HPD_STATUS0_BASE_IDX', 'mmCP_HPD_UTCL1_CNTL', - 'mmCP_HPD_UTCL1_CNTL_BASE_IDX', 'mmCP_HPD_UTCL1_ERROR', - 'mmCP_HPD_UTCL1_ERROR_ADDR', 'mmCP_HPD_UTCL1_ERROR_ADDR_BASE_IDX', - 'mmCP_HPD_UTCL1_ERROR_BASE_IDX', 'mmCP_HQD_ACTIVE', - 'mmCP_HQD_ACTIVE_BASE_IDX', 'mmCP_HQD_AQL_CONTROL', - 'mmCP_HQD_AQL_CONTROL_BASE_IDX', 'mmCP_HQD_ATOMIC0_PREOP_HI', - 'mmCP_HQD_ATOMIC0_PREOP_HI_BASE_IDX', 'mmCP_HQD_ATOMIC0_PREOP_LO', - 'mmCP_HQD_ATOMIC0_PREOP_LO_BASE_IDX', 'mmCP_HQD_ATOMIC1_PREOP_HI', - 'mmCP_HQD_ATOMIC1_PREOP_HI_BASE_IDX', 'mmCP_HQD_ATOMIC1_PREOP_LO', - 'mmCP_HQD_ATOMIC1_PREOP_LO_BASE_IDX', - 'mmCP_HQD_CNTL_STACK_OFFSET', - 'mmCP_HQD_CNTL_STACK_OFFSET_BASE_IDX', 'mmCP_HQD_CNTL_STACK_SIZE', - 'mmCP_HQD_CNTL_STACK_SIZE_BASE_IDX', - 'mmCP_HQD_CTX_SAVE_BASE_ADDR_HI', - 'mmCP_HQD_CTX_SAVE_BASE_ADDR_HI_BASE_IDX', - 'mmCP_HQD_CTX_SAVE_BASE_ADDR_LO', - 'mmCP_HQD_CTX_SAVE_BASE_ADDR_LO_BASE_IDX', - 'mmCP_HQD_CTX_SAVE_CONTROL', 'mmCP_HQD_CTX_SAVE_CONTROL_BASE_IDX', - 'mmCP_HQD_CTX_SAVE_SIZE', 'mmCP_HQD_CTX_SAVE_SIZE_BASE_IDX', - 'mmCP_HQD_DDID_DELTA_RPT_COUNT', - 'mmCP_HQD_DDID_DELTA_RPT_COUNT_BASE_IDX', - 'mmCP_HQD_DDID_INFLIGHT_COUNT', - 'mmCP_HQD_DDID_INFLIGHT_COUNT_BASE_IDX', 'mmCP_HQD_DDID_RPTR', - 'mmCP_HQD_DDID_RPTR_BASE_IDX', 'mmCP_HQD_DDID_WPTR', - 'mmCP_HQD_DDID_WPTR_BASE_IDX', 'mmCP_HQD_DEQUEUE_REQUEST', - 'mmCP_HQD_DEQUEUE_REQUEST_BASE_IDX', 'mmCP_HQD_DEQUEUE_STATUS', - 'mmCP_HQD_DEQUEUE_STATUS_BASE_IDX', 'mmCP_HQD_DMA_OFFLOAD', - 'mmCP_HQD_DMA_OFFLOAD_BASE_IDX', 'mmCP_HQD_EOP_BASE_ADDR', - 'mmCP_HQD_EOP_BASE_ADDR_BASE_IDX', 'mmCP_HQD_EOP_BASE_ADDR_HI', - 'mmCP_HQD_EOP_BASE_ADDR_HI_BASE_IDX', 'mmCP_HQD_EOP_CONTROL', - 'mmCP_HQD_EOP_CONTROL_BASE_IDX', 'mmCP_HQD_EOP_EVENTS', - 'mmCP_HQD_EOP_EVENTS_BASE_IDX', 'mmCP_HQD_EOP_RPTR', - 'mmCP_HQD_EOP_RPTR_BASE_IDX', 'mmCP_HQD_EOP_WPTR', - 'mmCP_HQD_EOP_WPTR_BASE_IDX', 'mmCP_HQD_EOP_WPTR_MEM', - 'mmCP_HQD_EOP_WPTR_MEM_BASE_IDX', 'mmCP_HQD_ERROR', - 'mmCP_HQD_ERROR_BASE_IDX', 'mmCP_HQD_GDS_RESOURCE_STATE', - 'mmCP_HQD_GDS_RESOURCE_STATE_BASE_IDX', 'mmCP_HQD_GFX_CONTROL', - 'mmCP_HQD_GFX_CONTROL_BASE_IDX', 'mmCP_HQD_GFX_STATUS', - 'mmCP_HQD_GFX_STATUS_BASE_IDX', 'mmCP_HQD_HQ_CONTROL0', - 'mmCP_HQD_HQ_CONTROL0_BASE_IDX', 'mmCP_HQD_HQ_CONTROL1', - 'mmCP_HQD_HQ_CONTROL1_BASE_IDX', 'mmCP_HQD_HQ_SCHEDULER0', - 'mmCP_HQD_HQ_SCHEDULER0_BASE_IDX', 'mmCP_HQD_HQ_SCHEDULER1', - 'mmCP_HQD_HQ_SCHEDULER1_BASE_IDX', 'mmCP_HQD_HQ_STATUS0', - 'mmCP_HQD_HQ_STATUS0_BASE_IDX', 'mmCP_HQD_HQ_STATUS1', - 'mmCP_HQD_HQ_STATUS1_BASE_IDX', 'mmCP_HQD_IB_BASE_ADDR', - 'mmCP_HQD_IB_BASE_ADDR_BASE_IDX', 'mmCP_HQD_IB_BASE_ADDR_HI', - 'mmCP_HQD_IB_BASE_ADDR_HI_BASE_IDX', 'mmCP_HQD_IB_CONTROL', - 'mmCP_HQD_IB_CONTROL_BASE_IDX', 'mmCP_HQD_IB_RPTR', - 'mmCP_HQD_IB_RPTR_BASE_IDX', 'mmCP_HQD_IQ_RPTR', - 'mmCP_HQD_IQ_RPTR_BASE_IDX', 'mmCP_HQD_IQ_TIMER', - 'mmCP_HQD_IQ_TIMER_BASE_IDX', 'mmCP_HQD_MSG_TYPE', - 'mmCP_HQD_MSG_TYPE_BASE_IDX', 'mmCP_HQD_OFFLOAD', - 'mmCP_HQD_OFFLOAD_BASE_IDX', 'mmCP_HQD_PERSISTENT_STATE', - 'mmCP_HQD_PERSISTENT_STATE_BASE_IDX', 'mmCP_HQD_PIPE_PRIORITY', - 'mmCP_HQD_PIPE_PRIORITY_BASE_IDX', 'mmCP_HQD_PQ_BASE', - 'mmCP_HQD_PQ_BASE_BASE_IDX', 'mmCP_HQD_PQ_BASE_HI', - 'mmCP_HQD_PQ_BASE_HI_BASE_IDX', 'mmCP_HQD_PQ_CONTROL', - 'mmCP_HQD_PQ_CONTROL_BASE_IDX', 'mmCP_HQD_PQ_DOORBELL_CONTROL', - 'mmCP_HQD_PQ_DOORBELL_CONTROL_BASE_IDX', 'mmCP_HQD_PQ_RPTR', - 'mmCP_HQD_PQ_RPTR_BASE_IDX', 'mmCP_HQD_PQ_RPTR_REPORT_ADDR', - 'mmCP_HQD_PQ_RPTR_REPORT_ADDR_BASE_IDX', - 'mmCP_HQD_PQ_RPTR_REPORT_ADDR_HI', - 'mmCP_HQD_PQ_RPTR_REPORT_ADDR_HI_BASE_IDX', 'mmCP_HQD_PQ_WPTR_HI', - 'mmCP_HQD_PQ_WPTR_HI_BASE_IDX', 'mmCP_HQD_PQ_WPTR_LO', - 'mmCP_HQD_PQ_WPTR_LO_BASE_IDX', 'mmCP_HQD_PQ_WPTR_POLL_ADDR', - 'mmCP_HQD_PQ_WPTR_POLL_ADDR_BASE_IDX', - 'mmCP_HQD_PQ_WPTR_POLL_ADDR_HI', - 'mmCP_HQD_PQ_WPTR_POLL_ADDR_HI_BASE_IDX', 'mmCP_HQD_QUANTUM', - 'mmCP_HQD_QUANTUM_BASE_IDX', 'mmCP_HQD_QUEUE_PRIORITY', - 'mmCP_HQD_QUEUE_PRIORITY_BASE_IDX', 'mmCP_HQD_SEMA_CMD', - 'mmCP_HQD_SEMA_CMD_BASE_IDX', - 'mmCP_HQD_SUSPEND_CNTL_STACK_DW_CNT', - 'mmCP_HQD_SUSPEND_CNTL_STACK_DW_CNT_BASE_IDX', - 'mmCP_HQD_SUSPEND_CNTL_STACK_OFFSET', - 'mmCP_HQD_SUSPEND_CNTL_STACK_OFFSET_BASE_IDX', - 'mmCP_HQD_SUSPEND_WG_STATE_OFFSET', - 'mmCP_HQD_SUSPEND_WG_STATE_OFFSET_BASE_IDX', 'mmCP_HQD_VMID', - 'mmCP_HQD_VMID_BASE_IDX', 'mmCP_HQD_WG_STATE_OFFSET', - 'mmCP_HQD_WG_STATE_OFFSET_BASE_IDX', 'mmCP_HYP_CE_UCODE_ADDR', - 'mmCP_HYP_CE_UCODE_ADDR_BASE_IDX', 'mmCP_HYP_CE_UCODE_DATA', - 'mmCP_HYP_CE_UCODE_DATA_BASE_IDX', 'mmCP_HYP_MEC1_UCODE_ADDR', - 'mmCP_HYP_MEC1_UCODE_ADDR_BASE_IDX', 'mmCP_HYP_MEC1_UCODE_DATA', - 'mmCP_HYP_MEC1_UCODE_DATA_BASE_IDX', 'mmCP_HYP_MEC2_UCODE_ADDR', - 'mmCP_HYP_MEC2_UCODE_ADDR_BASE_IDX', 'mmCP_HYP_MEC2_UCODE_DATA', - 'mmCP_HYP_MEC2_UCODE_DATA_BASE_IDX', 'mmCP_HYP_ME_UCODE_ADDR', - 'mmCP_HYP_ME_UCODE_ADDR_BASE_IDX', 'mmCP_HYP_ME_UCODE_DATA', - 'mmCP_HYP_ME_UCODE_DATA_BASE_IDX', 'mmCP_HYP_PFP_UCODE_ADDR', - 'mmCP_HYP_PFP_UCODE_ADDR_BASE_IDX', 'mmCP_HYP_PFP_UCODE_DATA', - 'mmCP_HYP_PFP_UCODE_DATA_BASE_IDX', 'mmCP_IB1_BASE_HI', - 'mmCP_IB1_BASE_HI_BASE_IDX', 'mmCP_IB1_BASE_LO', - 'mmCP_IB1_BASE_LO_BASE_IDX', 'mmCP_IB1_BUFSZ', - 'mmCP_IB1_BUFSZ_BASE_IDX', 'mmCP_IB2_BASE_HI', - 'mmCP_IB2_BASE_HI_BASE_IDX', 'mmCP_IB2_BASE_LO', - 'mmCP_IB2_BASE_LO_BASE_IDX', 'mmCP_IB2_BUFSZ', - 'mmCP_IB2_BUFSZ_BASE_IDX', 'mmCP_IB2_CMD_BUFSZ', - 'mmCP_IB2_CMD_BUFSZ_BASE_IDX', 'mmCP_IB2_OFFSET', - 'mmCP_IB2_OFFSET_BASE_IDX', 'mmCP_IB2_PREAMBLE_BEGIN', - 'mmCP_IB2_PREAMBLE_BEGIN_BASE_IDX', 'mmCP_IB2_PREAMBLE_END', - 'mmCP_IB2_PREAMBLE_END_BASE_IDX', 'mmCP_INDEX_BASE_ADDR', - 'mmCP_INDEX_BASE_ADDR_BASE_IDX', 'mmCP_INDEX_BASE_ADDR_HI', - 'mmCP_INDEX_BASE_ADDR_HI_BASE_IDX', 'mmCP_INDEX_TYPE', - 'mmCP_INDEX_TYPE_BASE_IDX', 'mmCP_INT_CNTL', - 'mmCP_INT_CNTL_BASE_IDX', 'mmCP_INT_CNTL_RING0', - 'mmCP_INT_CNTL_RING0_BASE_IDX', 'mmCP_INT_CNTL_RING1', - 'mmCP_INT_CNTL_RING1_BASE_IDX', 'mmCP_INT_CNTL_RING2', - 'mmCP_INT_CNTL_RING2_BASE_IDX', 'mmCP_INT_STATUS', - 'mmCP_INT_STATUS_BASE_IDX', 'mmCP_INT_STATUS_RING0', - 'mmCP_INT_STATUS_RING0_BASE_IDX', 'mmCP_INT_STATUS_RING1', - 'mmCP_INT_STATUS_RING1_BASE_IDX', 'mmCP_INT_STATUS_RING2', - 'mmCP_INT_STATUS_RING2_BASE_IDX', 'mmCP_IQ_WAIT_TIME1', - 'mmCP_IQ_WAIT_TIME1_BASE_IDX', 'mmCP_IQ_WAIT_TIME2', - 'mmCP_IQ_WAIT_TIME2_BASE_IDX', 'mmCP_IQ_WAIT_TIME3', - 'mmCP_IQ_WAIT_TIME3_BASE_IDX', 'mmCP_MAX_CONTEXT', - 'mmCP_MAX_CONTEXT_BASE_IDX', 'mmCP_ME0_PIPE0_PRIORITY', - 'mmCP_ME0_PIPE0_PRIORITY_BASE_IDX', 'mmCP_ME0_PIPE0_VMID', - 'mmCP_ME0_PIPE0_VMID_BASE_IDX', 'mmCP_ME0_PIPE1_PRIORITY', - 'mmCP_ME0_PIPE1_PRIORITY_BASE_IDX', 'mmCP_ME0_PIPE1_VMID', - 'mmCP_ME0_PIPE1_VMID_BASE_IDX', 'mmCP_ME0_PIPE2_PRIORITY', - 'mmCP_ME0_PIPE2_PRIORITY_BASE_IDX', 'mmCP_ME0_PIPE_PRIORITY_CNTS', - 'mmCP_ME0_PIPE_PRIORITY_CNTS_BASE_IDX', 'mmCP_ME1_INT_STAT_DEBUG', - 'mmCP_ME1_INT_STAT_DEBUG_BASE_IDX', 'mmCP_ME1_PIPE0_INT_CNTL', - 'mmCP_ME1_PIPE0_INT_CNTL_BASE_IDX', 'mmCP_ME1_PIPE0_INT_STATUS', - 'mmCP_ME1_PIPE0_INT_STATUS_BASE_IDX', 'mmCP_ME1_PIPE0_PRIORITY', - 'mmCP_ME1_PIPE0_PRIORITY_BASE_IDX', 'mmCP_ME1_PIPE1_INT_CNTL', - 'mmCP_ME1_PIPE1_INT_CNTL_BASE_IDX', 'mmCP_ME1_PIPE1_INT_STATUS', - 'mmCP_ME1_PIPE1_INT_STATUS_BASE_IDX', 'mmCP_ME1_PIPE1_PRIORITY', - 'mmCP_ME1_PIPE1_PRIORITY_BASE_IDX', 'mmCP_ME1_PIPE2_INT_CNTL', - 'mmCP_ME1_PIPE2_INT_CNTL_BASE_IDX', 'mmCP_ME1_PIPE2_INT_STATUS', - 'mmCP_ME1_PIPE2_INT_STATUS_BASE_IDX', 'mmCP_ME1_PIPE2_PRIORITY', - 'mmCP_ME1_PIPE2_PRIORITY_BASE_IDX', 'mmCP_ME1_PIPE3_INT_CNTL', - 'mmCP_ME1_PIPE3_INT_CNTL_BASE_IDX', 'mmCP_ME1_PIPE3_INT_STATUS', - 'mmCP_ME1_PIPE3_INT_STATUS_BASE_IDX', 'mmCP_ME1_PIPE3_PRIORITY', - 'mmCP_ME1_PIPE3_PRIORITY_BASE_IDX', 'mmCP_ME1_PIPE_PRIORITY_CNTS', - 'mmCP_ME1_PIPE_PRIORITY_CNTS_BASE_IDX', 'mmCP_ME2_INT_STAT_DEBUG', - 'mmCP_ME2_INT_STAT_DEBUG_BASE_IDX', 'mmCP_ME2_PIPE0_INT_CNTL', - 'mmCP_ME2_PIPE0_INT_CNTL_BASE_IDX', 'mmCP_ME2_PIPE0_INT_STATUS', - 'mmCP_ME2_PIPE0_INT_STATUS_BASE_IDX', 'mmCP_ME2_PIPE0_PRIORITY', - 'mmCP_ME2_PIPE0_PRIORITY_BASE_IDX', 'mmCP_ME2_PIPE1_INT_CNTL', - 'mmCP_ME2_PIPE1_INT_CNTL_BASE_IDX', 'mmCP_ME2_PIPE1_INT_STATUS', - 'mmCP_ME2_PIPE1_INT_STATUS_BASE_IDX', 'mmCP_ME2_PIPE1_PRIORITY', - 'mmCP_ME2_PIPE1_PRIORITY_BASE_IDX', 'mmCP_ME2_PIPE2_INT_CNTL', - 'mmCP_ME2_PIPE2_INT_CNTL_BASE_IDX', 'mmCP_ME2_PIPE2_INT_STATUS', - 'mmCP_ME2_PIPE2_INT_STATUS_BASE_IDX', 'mmCP_ME2_PIPE2_PRIORITY', - 'mmCP_ME2_PIPE2_PRIORITY_BASE_IDX', 'mmCP_ME2_PIPE3_INT_CNTL', - 'mmCP_ME2_PIPE3_INT_CNTL_BASE_IDX', 'mmCP_ME2_PIPE3_INT_STATUS', - 'mmCP_ME2_PIPE3_INT_STATUS_BASE_IDX', 'mmCP_ME2_PIPE3_PRIORITY', - 'mmCP_ME2_PIPE3_PRIORITY_BASE_IDX', 'mmCP_ME2_PIPE_PRIORITY_CNTS', - 'mmCP_ME2_PIPE_PRIORITY_CNTS_BASE_IDX', 'mmCP_MEC1_F32_INTERRUPT', - 'mmCP_MEC1_F32_INTERRUPT_BASE_IDX', 'mmCP_MEC1_F32_INT_DIS', - 'mmCP_MEC1_F32_INT_DIS_BASE_IDX', 'mmCP_MEC1_INSTR_PNTR', - 'mmCP_MEC1_INSTR_PNTR_BASE_IDX', 'mmCP_MEC1_INTR_ROUTINE_START', - 'mmCP_MEC1_INTR_ROUTINE_START_BASE_IDX', - 'mmCP_MEC1_PRGRM_CNTR_START', - 'mmCP_MEC1_PRGRM_CNTR_START_BASE_IDX', 'mmCP_MEC2_F32_INTERRUPT', - 'mmCP_MEC2_F32_INTERRUPT_BASE_IDX', 'mmCP_MEC2_F32_INT_DIS', - 'mmCP_MEC2_F32_INT_DIS_BASE_IDX', 'mmCP_MEC2_INSTR_PNTR', - 'mmCP_MEC2_INSTR_PNTR_BASE_IDX', 'mmCP_MEC2_INTR_ROUTINE_START', - 'mmCP_MEC2_INTR_ROUTINE_START_BASE_IDX', - 'mmCP_MEC2_PRGRM_CNTR_START', - 'mmCP_MEC2_PRGRM_CNTR_START_BASE_IDX', 'mmCP_MEC_CNTL', - 'mmCP_MEC_CNTL_BASE_IDX', 'mmCP_MEC_DOORBELL_RANGE_LOWER', - 'mmCP_MEC_DOORBELL_RANGE_LOWER_BASE_IDX', - 'mmCP_MEC_DOORBELL_RANGE_UPPER', - 'mmCP_MEC_DOORBELL_RANGE_UPPER_BASE_IDX', 'mmCP_MEC_JT_STAT', - 'mmCP_MEC_JT_STAT_BASE_IDX', 'mmCP_MEC_ME1_HEADER_DUMP', - 'mmCP_MEC_ME1_HEADER_DUMP_BASE_IDX', 'mmCP_MEC_ME1_UCODE_ADDR', - 'mmCP_MEC_ME1_UCODE_ADDR_BASE_IDX', 'mmCP_MEC_ME1_UCODE_DATA', - 'mmCP_MEC_ME1_UCODE_DATA_BASE_IDX', 'mmCP_MEC_ME2_HEADER_DUMP', - 'mmCP_MEC_ME2_HEADER_DUMP_BASE_IDX', 'mmCP_MEC_ME2_UCODE_ADDR', - 'mmCP_MEC_ME2_UCODE_ADDR_BASE_IDX', 'mmCP_MEC_ME2_UCODE_DATA', - 'mmCP_MEC_ME2_UCODE_DATA_BASE_IDX', 'mmCP_MEM_SLP_CNTL', - 'mmCP_MEM_SLP_CNTL_BASE_IDX', 'mmCP_MEQ_AVAIL', - 'mmCP_MEQ_AVAIL_BASE_IDX', 'mmCP_MEQ_STAT', - 'mmCP_MEQ_STAT_BASE_IDX', 'mmCP_MEQ_STQ_THRESHOLD', - 'mmCP_MEQ_STQ_THRESHOLD_BASE_IDX', 'mmCP_MEQ_THRESHOLDS', - 'mmCP_MEQ_THRESHOLDS_BASE_IDX', 'mmCP_MES_CNTL', - 'mmCP_MES_CNTL_BASE_IDX', 'mmCP_MES_DC_BASE_CNTL', - 'mmCP_MES_DC_BASE_CNTL_BASE_IDX', 'mmCP_MES_DC_BASE_HI', - 'mmCP_MES_DC_BASE_HI_BASE_IDX', 'mmCP_MES_DC_BASE_LO', - 'mmCP_MES_DC_BASE_LO_BASE_IDX', 'mmCP_MES_DC_OP_CNTL', - 'mmCP_MES_DC_OP_CNTL_BASE_IDX', 'mmCP_MES_DM_INDEX_ADDR', - 'mmCP_MES_DM_INDEX_ADDR_BASE_IDX', 'mmCP_MES_DM_INDEX_DATA', - 'mmCP_MES_DM_INDEX_DATA_BASE_IDX', 'mmCP_MES_DOORBELL_CONTROL1', - 'mmCP_MES_DOORBELL_CONTROL1_BASE_IDX', - 'mmCP_MES_DOORBELL_CONTROL2', - 'mmCP_MES_DOORBELL_CONTROL2_BASE_IDX', - 'mmCP_MES_DOORBELL_CONTROL3', - 'mmCP_MES_DOORBELL_CONTROL3_BASE_IDX', - 'mmCP_MES_DOORBELL_CONTROL4', - 'mmCP_MES_DOORBELL_CONTROL4_BASE_IDX', - 'mmCP_MES_DOORBELL_CONTROL5', - 'mmCP_MES_DOORBELL_CONTROL5_BASE_IDX', - 'mmCP_MES_DOORBELL_CONTROL6', - 'mmCP_MES_DOORBELL_CONTROL6_BASE_IDX', 'mmCP_MES_GP0_HI', - 'mmCP_MES_GP0_HI_BASE_IDX', 'mmCP_MES_GP0_LO', - 'mmCP_MES_GP0_LO_BASE_IDX', 'mmCP_MES_GP1_HI', - 'mmCP_MES_GP1_HI_BASE_IDX', 'mmCP_MES_GP1_LO', - 'mmCP_MES_GP1_LO_BASE_IDX', 'mmCP_MES_GP2_HI', - 'mmCP_MES_GP2_HI_BASE_IDX', 'mmCP_MES_GP2_LO', - 'mmCP_MES_GP2_LO_BASE_IDX', 'mmCP_MES_GP3_HI', - 'mmCP_MES_GP3_HI_BASE_IDX', 'mmCP_MES_GP3_LO', - 'mmCP_MES_GP3_LO_BASE_IDX', 'mmCP_MES_GP4_HI', - 'mmCP_MES_GP4_HI_BASE_IDX', 'mmCP_MES_GP4_LO', - 'mmCP_MES_GP4_LO_BASE_IDX', 'mmCP_MES_GP5_HI', - 'mmCP_MES_GP5_HI_BASE_IDX', 'mmCP_MES_GP5_LO', - 'mmCP_MES_GP5_LO_BASE_IDX', 'mmCP_MES_GP6_HI', - 'mmCP_MES_GP6_HI_BASE_IDX', 'mmCP_MES_GP6_LO', - 'mmCP_MES_GP6_LO_BASE_IDX', 'mmCP_MES_GP7_HI', - 'mmCP_MES_GP7_HI_BASE_IDX', 'mmCP_MES_GP7_LO', - 'mmCP_MES_GP7_LO_BASE_IDX', 'mmCP_MES_GP8_HI', - 'mmCP_MES_GP8_HI_BASE_IDX', 'mmCP_MES_GP8_LO', - 'mmCP_MES_GP8_LO_BASE_IDX', 'mmCP_MES_GP9_HI', - 'mmCP_MES_GP9_HI_BASE_IDX', 'mmCP_MES_GP9_LO', - 'mmCP_MES_GP9_LO_BASE_IDX', 'mmCP_MES_HEADER_DUMP', - 'mmCP_MES_HEADER_DUMP_BASE_IDX', 'mmCP_MES_IC_BASE_CNTL', - 'mmCP_MES_IC_BASE_CNTL_BASE_IDX', 'mmCP_MES_IC_BASE_HI', - 'mmCP_MES_IC_BASE_HI_BASE_IDX', 'mmCP_MES_IC_BASE_LO', - 'mmCP_MES_IC_BASE_LO_BASE_IDX', 'mmCP_MES_IC_OP_CNTL', - 'mmCP_MES_IC_OP_CNTL_BASE_IDX', 'mmCP_MES_INSTR_PNTR', - 'mmCP_MES_INSTR_PNTR_BASE_IDX', 'mmCP_MES_INTERRUPT', - 'mmCP_MES_INTERRUPT_BASE_IDX', 'mmCP_MES_INTR_ROUTINE_START', - 'mmCP_MES_INTR_ROUTINE_START_BASE_IDX', 'mmCP_MES_LOCAL_APERTURE', - 'mmCP_MES_LOCAL_APERTURE_BASE_IDX', 'mmCP_MES_LOCAL_BASE0_HI', - 'mmCP_MES_LOCAL_BASE0_HI_BASE_IDX', 'mmCP_MES_LOCAL_BASE0_LO', - 'mmCP_MES_LOCAL_BASE0_LO_BASE_IDX', 'mmCP_MES_LOCAL_MASK0_HI', - 'mmCP_MES_LOCAL_MASK0_HI_BASE_IDX', 'mmCP_MES_LOCAL_MASK0_LO', - 'mmCP_MES_LOCAL_MASK0_LO_BASE_IDX', 'mmCP_MES_MARCHID_HI', - 'mmCP_MES_MARCHID_HI_BASE_IDX', 'mmCP_MES_MARCHID_LO', - 'mmCP_MES_MARCHID_LO_BASE_IDX', 'mmCP_MES_MBADADDR_HI', - 'mmCP_MES_MBADADDR_HI_BASE_IDX', 'mmCP_MES_MBADADDR_LO', - 'mmCP_MES_MBADADDR_LO_BASE_IDX', 'mmCP_MES_MCAUSE_HI', - 'mmCP_MES_MCAUSE_HI_BASE_IDX', 'mmCP_MES_MCAUSE_LO', - 'mmCP_MES_MCAUSE_LO_BASE_IDX', 'mmCP_MES_MCYCLE_HI', - 'mmCP_MES_MCYCLE_HI_BASE_IDX', 'mmCP_MES_MCYCLE_LO', - 'mmCP_MES_MCYCLE_LO_BASE_IDX', 'mmCP_MES_MDBASE_HI', - 'mmCP_MES_MDBASE_HI_BASE_IDX', 'mmCP_MES_MDBASE_LO', - 'mmCP_MES_MDBASE_LO_BASE_IDX', 'mmCP_MES_MDBOUND_HI', - 'mmCP_MES_MDBOUND_HI_BASE_IDX', 'mmCP_MES_MDBOUND_LO', - 'mmCP_MES_MDBOUND_LO_BASE_IDX', 'mmCP_MES_MEPC_HI', - 'mmCP_MES_MEPC_HI_BASE_IDX', 'mmCP_MES_MEPC_LO', - 'mmCP_MES_MEPC_LO_BASE_IDX', 'mmCP_MES_MHARTID_HI', - 'mmCP_MES_MHARTID_HI_BASE_IDX', 'mmCP_MES_MHARTID_LO', - 'mmCP_MES_MHARTID_LO_BASE_IDX', 'mmCP_MES_MIBASE_HI', - 'mmCP_MES_MIBASE_HI_BASE_IDX', 'mmCP_MES_MIBASE_LO', - 'mmCP_MES_MIBASE_LO_BASE_IDX', 'mmCP_MES_MIBOUND_HI', - 'mmCP_MES_MIBOUND_HI_BASE_IDX', 'mmCP_MES_MIBOUND_LO', - 'mmCP_MES_MIBOUND_LO_BASE_IDX', 'mmCP_MES_MIE_HI', - 'mmCP_MES_MIE_HI_BASE_IDX', 'mmCP_MES_MIE_LO', - 'mmCP_MES_MIE_LO_BASE_IDX', 'mmCP_MES_MIMPID_HI', - 'mmCP_MES_MIMPID_HI_BASE_IDX', 'mmCP_MES_MIMPID_LO', - 'mmCP_MES_MIMPID_LO_BASE_IDX', 'mmCP_MES_MINSTRET_HI', - 'mmCP_MES_MINSTRET_HI_BASE_IDX', 'mmCP_MES_MINSTRET_LO', - 'mmCP_MES_MINSTRET_LO_BASE_IDX', 'mmCP_MES_MIP_HI', - 'mmCP_MES_MIP_HI_BASE_IDX', 'mmCP_MES_MIP_LO', - 'mmCP_MES_MIP_LO_BASE_IDX', 'mmCP_MES_MISA_HI', - 'mmCP_MES_MISA_HI_BASE_IDX', 'mmCP_MES_MISA_LO', - 'mmCP_MES_MISA_LO_BASE_IDX', 'mmCP_MES_MSCRATCH_HI', - 'mmCP_MES_MSCRATCH_HI_BASE_IDX', 'mmCP_MES_MSCRATCH_LO', - 'mmCP_MES_MSCRATCH_LO_BASE_IDX', 'mmCP_MES_MSTATUS_HI', - 'mmCP_MES_MSTATUS_HI_BASE_IDX', 'mmCP_MES_MSTATUS_LO', - 'mmCP_MES_MSTATUS_LO_BASE_IDX', 'mmCP_MES_MTIMECMP_HI', - 'mmCP_MES_MTIMECMP_HI_BASE_IDX', 'mmCP_MES_MTIMECMP_LO', - 'mmCP_MES_MTIMECMP_LO_BASE_IDX', 'mmCP_MES_MTIME_HI', - 'mmCP_MES_MTIME_HI_BASE_IDX', 'mmCP_MES_MTIME_LO', - 'mmCP_MES_MTIME_LO_BASE_IDX', 'mmCP_MES_MTVEC_HI', - 'mmCP_MES_MTVEC_HI_BASE_IDX', 'mmCP_MES_MTVEC_LO', - 'mmCP_MES_MTVEC_LO_BASE_IDX', 'mmCP_MES_MVENDORID_HI', - 'mmCP_MES_MVENDORID_HI_BASE_IDX', 'mmCP_MES_MVENDORID_LO', - 'mmCP_MES_MVENDORID_LO_BASE_IDX', 'mmCP_MES_PENDING_INTERRUPT', - 'mmCP_MES_PENDING_INTERRUPT_BASE_IDX', 'mmCP_MES_PERFCOUNT_CNTL', - 'mmCP_MES_PERFCOUNT_CNTL_BASE_IDX', 'mmCP_MES_PIPE0_PRIORITY', - 'mmCP_MES_PIPE0_PRIORITY_BASE_IDX', 'mmCP_MES_PIPE1_PRIORITY', - 'mmCP_MES_PIPE1_PRIORITY_BASE_IDX', 'mmCP_MES_PIPE2_PRIORITY', - 'mmCP_MES_PIPE2_PRIORITY_BASE_IDX', 'mmCP_MES_PIPE3_PRIORITY', - 'mmCP_MES_PIPE3_PRIORITY_BASE_IDX', 'mmCP_MES_PIPE_PRIORITY_CNTS', - 'mmCP_MES_PIPE_PRIORITY_CNTS_BASE_IDX', - 'mmCP_MES_PRGRM_CNTR_START', 'mmCP_MES_PRGRM_CNTR_START_BASE_IDX', - 'mmCP_MES_PROCESS_QUANTUM_PIPE0', - 'mmCP_MES_PROCESS_QUANTUM_PIPE0_BASE_IDX', - 'mmCP_MES_PROCESS_QUANTUM_PIPE1', - 'mmCP_MES_PROCESS_QUANTUM_PIPE1_BASE_IDX', - 'mmCP_MES_SCRATCH_DATA', 'mmCP_MES_SCRATCH_DATA_BASE_IDX', - 'mmCP_MES_SCRATCH_INDEX', 'mmCP_MES_SCRATCH_INDEX_BASE_IDX', - 'mmCP_ME_ATOMIC_PREOP_HI', 'mmCP_ME_ATOMIC_PREOP_HI_BASE_IDX', - 'mmCP_ME_ATOMIC_PREOP_LO', 'mmCP_ME_ATOMIC_PREOP_LO_BASE_IDX', - 'mmCP_ME_CNTL', 'mmCP_ME_CNTL_BASE_IDX', 'mmCP_ME_COHER_BASE', - 'mmCP_ME_COHER_BASE_BASE_IDX', 'mmCP_ME_COHER_BASE_HI', - 'mmCP_ME_COHER_BASE_HI_BASE_IDX', 'mmCP_ME_COHER_CNTL', - 'mmCP_ME_COHER_CNTL_BASE_IDX', 'mmCP_ME_COHER_SIZE', - 'mmCP_ME_COHER_SIZE_BASE_IDX', 'mmCP_ME_COHER_SIZE_HI', - 'mmCP_ME_COHER_SIZE_HI_BASE_IDX', 'mmCP_ME_COHER_STATUS', - 'mmCP_ME_COHER_STATUS_BASE_IDX', 'mmCP_ME_F32_INTERRUPT', - 'mmCP_ME_F32_INTERRUPT_BASE_IDX', 'mmCP_ME_GDS_ATOMIC0_PREOP_HI', - 'mmCP_ME_GDS_ATOMIC0_PREOP_HI_BASE_IDX', - 'mmCP_ME_GDS_ATOMIC0_PREOP_LO', - 'mmCP_ME_GDS_ATOMIC0_PREOP_LO_BASE_IDX', - 'mmCP_ME_GDS_ATOMIC1_PREOP_HI', - 'mmCP_ME_GDS_ATOMIC1_PREOP_HI_BASE_IDX', - 'mmCP_ME_GDS_ATOMIC1_PREOP_LO', - 'mmCP_ME_GDS_ATOMIC1_PREOP_LO_BASE_IDX', 'mmCP_ME_HEADER_DUMP', - 'mmCP_ME_HEADER_DUMP_BASE_IDX', 'mmCP_ME_IC_BASE_CNTL', - 'mmCP_ME_IC_BASE_CNTL_BASE_IDX', 'mmCP_ME_IC_BASE_HI', - 'mmCP_ME_IC_BASE_HI_BASE_IDX', 'mmCP_ME_IC_BASE_LO', - 'mmCP_ME_IC_BASE_LO_BASE_IDX', 'mmCP_ME_IC_OP_CNTL', - 'mmCP_ME_IC_OP_CNTL_BASE_IDX', 'mmCP_ME_INSTR_PNTR', - 'mmCP_ME_INSTR_PNTR_BASE_IDX', 'mmCP_ME_INTR_ROUTINE_START', - 'mmCP_ME_INTR_ROUTINE_START_BASE_IDX', 'mmCP_ME_MC_RADDR_HI', - 'mmCP_ME_MC_RADDR_HI_BASE_IDX', 'mmCP_ME_MC_RADDR_LO', - 'mmCP_ME_MC_RADDR_LO_BASE_IDX', 'mmCP_ME_MC_WADDR_HI', - 'mmCP_ME_MC_WADDR_HI_BASE_IDX', 'mmCP_ME_MC_WADDR_LO', - 'mmCP_ME_MC_WADDR_LO_BASE_IDX', 'mmCP_ME_MC_WDATA_HI', - 'mmCP_ME_MC_WDATA_HI_BASE_IDX', 'mmCP_ME_MC_WDATA_LO', - 'mmCP_ME_MC_WDATA_LO_BASE_IDX', 'mmCP_ME_PREEMPTION', - 'mmCP_ME_PREEMPTION_BASE_IDX', 'mmCP_ME_PRGRM_CNTR_START', - 'mmCP_ME_PRGRM_CNTR_START_BASE_IDX', 'mmCP_ME_RAM_DATA', - 'mmCP_ME_RAM_DATA_BASE_IDX', 'mmCP_ME_RAM_RADDR', - 'mmCP_ME_RAM_RADDR_BASE_IDX', 'mmCP_ME_RAM_WADDR', - 'mmCP_ME_RAM_WADDR_BASE_IDX', 'mmCP_MQD_BASE_ADDR', - 'mmCP_MQD_BASE_ADDR_BASE_IDX', 'mmCP_MQD_BASE_ADDR_HI', - 'mmCP_MQD_BASE_ADDR_HI_BASE_IDX', 'mmCP_MQD_CONTROL', - 'mmCP_MQD_CONTROL_BASE_IDX', 'mmCP_NUM_PRIM_NEEDED_COUNT0_HI', - 'mmCP_NUM_PRIM_NEEDED_COUNT0_HI_BASE_IDX', - 'mmCP_NUM_PRIM_NEEDED_COUNT0_LO', - 'mmCP_NUM_PRIM_NEEDED_COUNT0_LO_BASE_IDX', - 'mmCP_NUM_PRIM_NEEDED_COUNT1_HI', - 'mmCP_NUM_PRIM_NEEDED_COUNT1_HI_BASE_IDX', - 'mmCP_NUM_PRIM_NEEDED_COUNT1_LO', - 'mmCP_NUM_PRIM_NEEDED_COUNT1_LO_BASE_IDX', - 'mmCP_NUM_PRIM_NEEDED_COUNT2_HI', - 'mmCP_NUM_PRIM_NEEDED_COUNT2_HI_BASE_IDX', - 'mmCP_NUM_PRIM_NEEDED_COUNT2_LO', - 'mmCP_NUM_PRIM_NEEDED_COUNT2_LO_BASE_IDX', - 'mmCP_NUM_PRIM_NEEDED_COUNT3_HI', - 'mmCP_NUM_PRIM_NEEDED_COUNT3_HI_BASE_IDX', - 'mmCP_NUM_PRIM_NEEDED_COUNT3_LO', - 'mmCP_NUM_PRIM_NEEDED_COUNT3_LO_BASE_IDX', - 'mmCP_NUM_PRIM_WRITTEN_COUNT0_HI', - 'mmCP_NUM_PRIM_WRITTEN_COUNT0_HI_BASE_IDX', - 'mmCP_NUM_PRIM_WRITTEN_COUNT0_LO', - 'mmCP_NUM_PRIM_WRITTEN_COUNT0_LO_BASE_IDX', - 'mmCP_NUM_PRIM_WRITTEN_COUNT1_HI', - 'mmCP_NUM_PRIM_WRITTEN_COUNT1_HI_BASE_IDX', - 'mmCP_NUM_PRIM_WRITTEN_COUNT1_LO', - 'mmCP_NUM_PRIM_WRITTEN_COUNT1_LO_BASE_IDX', - 'mmCP_NUM_PRIM_WRITTEN_COUNT2_HI', - 'mmCP_NUM_PRIM_WRITTEN_COUNT2_HI_BASE_IDX', - 'mmCP_NUM_PRIM_WRITTEN_COUNT2_LO', - 'mmCP_NUM_PRIM_WRITTEN_COUNT2_LO_BASE_IDX', - 'mmCP_NUM_PRIM_WRITTEN_COUNT3_HI', - 'mmCP_NUM_PRIM_WRITTEN_COUNT3_HI_BASE_IDX', - 'mmCP_NUM_PRIM_WRITTEN_COUNT3_LO', - 'mmCP_NUM_PRIM_WRITTEN_COUNT3_LO_BASE_IDX', - 'mmCP_PA_CINVOC_COUNT_HI', 'mmCP_PA_CINVOC_COUNT_HI_BASE_IDX', - 'mmCP_PA_CINVOC_COUNT_LO', 'mmCP_PA_CINVOC_COUNT_LO_BASE_IDX', - 'mmCP_PA_CPRIM_COUNT_HI', 'mmCP_PA_CPRIM_COUNT_HI_BASE_IDX', - 'mmCP_PA_CPRIM_COUNT_LO', 'mmCP_PA_CPRIM_COUNT_LO_BASE_IDX', - 'mmCP_PERFMON_CNTL', 'mmCP_PERFMON_CNTL_BASE_IDX', - 'mmCP_PERFMON_CNTX_CNTL', 'mmCP_PERFMON_CNTX_CNTL_BASE_IDX', - 'mmCP_PFP_ATOMIC_PREOP_HI', 'mmCP_PFP_ATOMIC_PREOP_HI_BASE_IDX', - 'mmCP_PFP_ATOMIC_PREOP_LO', 'mmCP_PFP_ATOMIC_PREOP_LO_BASE_IDX', - 'mmCP_PFP_COMPLETION_STATUS', - 'mmCP_PFP_COMPLETION_STATUS_BASE_IDX', 'mmCP_PFP_F32_INTERRUPT', - 'mmCP_PFP_F32_INTERRUPT_BASE_IDX', - 'mmCP_PFP_GDS_ATOMIC0_PREOP_HI', - 'mmCP_PFP_GDS_ATOMIC0_PREOP_HI_BASE_IDX', - 'mmCP_PFP_GDS_ATOMIC0_PREOP_LO', - 'mmCP_PFP_GDS_ATOMIC0_PREOP_LO_BASE_IDX', - 'mmCP_PFP_GDS_ATOMIC1_PREOP_HI', - 'mmCP_PFP_GDS_ATOMIC1_PREOP_HI_BASE_IDX', - 'mmCP_PFP_GDS_ATOMIC1_PREOP_LO', - 'mmCP_PFP_GDS_ATOMIC1_PREOP_LO_BASE_IDX', 'mmCP_PFP_HEADER_DUMP', - 'mmCP_PFP_HEADER_DUMP_BASE_IDX', 'mmCP_PFP_IB_CONTROL', - 'mmCP_PFP_IB_CONTROL_BASE_IDX', 'mmCP_PFP_IC_BASE_CNTL', - 'mmCP_PFP_IC_BASE_CNTL_BASE_IDX', 'mmCP_PFP_IC_BASE_HI', - 'mmCP_PFP_IC_BASE_HI_BASE_IDX', 'mmCP_PFP_IC_BASE_LO', - 'mmCP_PFP_IC_BASE_LO_BASE_IDX', 'mmCP_PFP_IC_OP_CNTL', - 'mmCP_PFP_IC_OP_CNTL_BASE_IDX', 'mmCP_PFP_INSTR_PNTR', - 'mmCP_PFP_INSTR_PNTR_BASE_IDX', 'mmCP_PFP_INTR_ROUTINE_START', - 'mmCP_PFP_INTR_ROUTINE_START_BASE_IDX', 'mmCP_PFP_JT_STAT', - 'mmCP_PFP_JT_STAT_BASE_IDX', 'mmCP_PFP_LOAD_CONTROL', - 'mmCP_PFP_LOAD_CONTROL_BASE_IDX', 'mmCP_PFP_METADATA_BASE_ADDR', - 'mmCP_PFP_METADATA_BASE_ADDR_BASE_IDX', - 'mmCP_PFP_METADATA_BASE_ADDR_HI', - 'mmCP_PFP_METADATA_BASE_ADDR_HI_BASE_IDX', - 'mmCP_PFP_PRGRM_CNTR_START', 'mmCP_PFP_PRGRM_CNTR_START_BASE_IDX', - 'mmCP_PFP_UCODE_ADDR', 'mmCP_PFP_UCODE_ADDR_BASE_IDX', - 'mmCP_PFP_UCODE_DATA', 'mmCP_PFP_UCODE_DATA_BASE_IDX', - 'mmCP_PIPEID', 'mmCP_PIPEID_BASE_IDX', 'mmCP_PIPE_STATS_ADDR_HI', - 'mmCP_PIPE_STATS_ADDR_HI_BASE_IDX', 'mmCP_PIPE_STATS_ADDR_LO', - 'mmCP_PIPE_STATS_ADDR_LO_BASE_IDX', 'mmCP_PIPE_STATS_CONTROL', - 'mmCP_PIPE_STATS_CONTROL_BASE_IDX', 'mmCP_PQ_STATUS', - 'mmCP_PQ_STATUS_BASE_IDX', 'mmCP_PQ_WPTR_POLL_CNTL', - 'mmCP_PQ_WPTR_POLL_CNTL1', 'mmCP_PQ_WPTR_POLL_CNTL1_BASE_IDX', - 'mmCP_PQ_WPTR_POLL_CNTL_BASE_IDX', 'mmCP_PRED_NOT_VISIBLE', - 'mmCP_PRED_NOT_VISIBLE_BASE_IDX', 'mmCP_PRIV_VIOLATION_ADDR', - 'mmCP_PRIV_VIOLATION_ADDR_BASE_IDX', 'mmCP_PROCESS_QUANTUM', - 'mmCP_PROCESS_QUANTUM_BASE_IDX', 'mmCP_PWR_CNTL', - 'mmCP_PWR_CNTL_BASE_IDX', 'mmCP_QUEUE_THRESHOLDS', - 'mmCP_QUEUE_THRESHOLDS_BASE_IDX', 'mmCP_RB0_ACTIVE', - 'mmCP_RB0_ACTIVE_BASE_IDX', 'mmCP_RB0_BASE', - 'mmCP_RB0_BASE_BASE_IDX', 'mmCP_RB0_BASE_HI', - 'mmCP_RB0_BASE_HI_BASE_IDX', 'mmCP_RB0_BUFSZ_MASK', - 'mmCP_RB0_BUFSZ_MASK_BASE_IDX', 'mmCP_RB0_CNTL', - 'mmCP_RB0_CNTL_BASE_IDX', 'mmCP_RB0_RPTR', 'mmCP_RB0_RPTR_ADDR', - 'mmCP_RB0_RPTR_ADDR_BASE_IDX', 'mmCP_RB0_RPTR_ADDR_HI', - 'mmCP_RB0_RPTR_ADDR_HI_BASE_IDX', 'mmCP_RB0_RPTR_BASE_IDX', - 'mmCP_RB0_WPTR', 'mmCP_RB0_WPTR_BASE_IDX', 'mmCP_RB0_WPTR_HI', - 'mmCP_RB0_WPTR_HI_BASE_IDX', 'mmCP_RB1_ACTIVE', - 'mmCP_RB1_ACTIVE_BASE_IDX', 'mmCP_RB1_BASE', - 'mmCP_RB1_BASE_BASE_IDX', 'mmCP_RB1_BASE_HI', - 'mmCP_RB1_BASE_HI_BASE_IDX', 'mmCP_RB1_BUFSZ_MASK', - 'mmCP_RB1_BUFSZ_MASK_BASE_IDX', 'mmCP_RB1_CNTL', - 'mmCP_RB1_CNTL_BASE_IDX', 'mmCP_RB1_RPTR', 'mmCP_RB1_RPTR_ADDR', - 'mmCP_RB1_RPTR_ADDR_BASE_IDX', 'mmCP_RB1_RPTR_ADDR_HI', - 'mmCP_RB1_RPTR_ADDR_HI_BASE_IDX', 'mmCP_RB1_RPTR_BASE_IDX', - 'mmCP_RB1_WPTR', 'mmCP_RB1_WPTR_BASE_IDX', 'mmCP_RB1_WPTR_HI', - 'mmCP_RB1_WPTR_HI_BASE_IDX', 'mmCP_RB2_BASE', - 'mmCP_RB2_BASE_BASE_IDX', 'mmCP_RB2_CNTL', - 'mmCP_RB2_CNTL_BASE_IDX', 'mmCP_RB2_RPTR', 'mmCP_RB2_RPTR_ADDR', - 'mmCP_RB2_RPTR_ADDR_BASE_IDX', 'mmCP_RB2_RPTR_ADDR_HI', - 'mmCP_RB2_RPTR_ADDR_HI_BASE_IDX', 'mmCP_RB2_RPTR_BASE_IDX', - 'mmCP_RB2_WPTR', 'mmCP_RB2_WPTR_BASE_IDX', 'mmCP_RB_ACTIVE', - 'mmCP_RB_ACTIVE_BASE_IDX', 'mmCP_RB_BASE', - 'mmCP_RB_BASE_BASE_IDX', 'mmCP_RB_BUFSZ_MASK', - 'mmCP_RB_BUFSZ_MASK_BASE_IDX', 'mmCP_RB_CNTL', - 'mmCP_RB_CNTL_BASE_IDX', 'mmCP_RB_DOORBELL_CLEAR', - 'mmCP_RB_DOORBELL_CLEAR_BASE_IDX', 'mmCP_RB_DOORBELL_CONTROL', - 'mmCP_RB_DOORBELL_CONTROL_BASE_IDX', - 'mmCP_RB_DOORBELL_RANGE_LOWER', - 'mmCP_RB_DOORBELL_RANGE_LOWER_BASE_IDX', - 'mmCP_RB_DOORBELL_RANGE_UPPER', - 'mmCP_RB_DOORBELL_RANGE_UPPER_BASE_IDX', 'mmCP_RB_OFFSET', - 'mmCP_RB_OFFSET_BASE_IDX', 'mmCP_RB_RPTR', 'mmCP_RB_RPTR_ADDR', - 'mmCP_RB_RPTR_ADDR_BASE_IDX', 'mmCP_RB_RPTR_ADDR_HI', - 'mmCP_RB_RPTR_ADDR_HI_BASE_IDX', 'mmCP_RB_RPTR_BASE_IDX', - 'mmCP_RB_RPTR_WR', 'mmCP_RB_RPTR_WR_BASE_IDX', 'mmCP_RB_STATUS', - 'mmCP_RB_STATUS_BASE_IDX', 'mmCP_RB_VMID', - 'mmCP_RB_VMID_BASE_IDX', 'mmCP_RB_WPTR', 'mmCP_RB_WPTR_BASE_IDX', - 'mmCP_RB_WPTR_DELAY', 'mmCP_RB_WPTR_DELAY_BASE_IDX', - 'mmCP_RB_WPTR_HI', 'mmCP_RB_WPTR_HI_BASE_IDX', - 'mmCP_RB_WPTR_POLL_ADDR_HI', 'mmCP_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmCP_RB_WPTR_POLL_ADDR_LO', 'mmCP_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmCP_RB_WPTR_POLL_CNTL', 'mmCP_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmCP_RING0_PRIORITY', 'mmCP_RING0_PRIORITY_BASE_IDX', - 'mmCP_RING1_PRIORITY', 'mmCP_RING1_PRIORITY_BASE_IDX', - 'mmCP_RING2_PRIORITY', 'mmCP_RING2_PRIORITY_BASE_IDX', - 'mmCP_RINGID', 'mmCP_RINGID_BASE_IDX', 'mmCP_RING_PRIORITY_CNTS', - 'mmCP_RING_PRIORITY_CNTS_BASE_IDX', 'mmCP_ROQ1_THRESHOLDS', - 'mmCP_ROQ1_THRESHOLDS_BASE_IDX', 'mmCP_ROQ2_AVAIL', - 'mmCP_ROQ2_AVAIL_BASE_IDX', 'mmCP_ROQ2_THRESHOLDS', - 'mmCP_ROQ2_THRESHOLDS_BASE_IDX', 'mmCP_ROQ3_THRESHOLDS', - 'mmCP_ROQ3_THRESHOLDS_BASE_IDX', 'mmCP_ROQ_AVAIL', - 'mmCP_ROQ_AVAIL_BASE_IDX', 'mmCP_ROQ_DB_STAT', - 'mmCP_ROQ_DB_STAT_BASE_IDX', 'mmCP_ROQ_IB1_STAT', - 'mmCP_ROQ_IB1_STAT_BASE_IDX', 'mmCP_ROQ_IB2_STAT', - 'mmCP_ROQ_IB2_STAT_BASE_IDX', 'mmCP_ROQ_RB_STAT', - 'mmCP_ROQ_RB_STAT_BASE_IDX', 'mmCP_ROQ_THRESHOLDS', - 'mmCP_ROQ_THRESHOLDS_BASE_IDX', 'mmCP_SAMPLE_STATUS', - 'mmCP_SAMPLE_STATUS_BASE_IDX', 'mmCP_SCRATCH_DATA', - 'mmCP_SCRATCH_DATA_BASE_IDX', 'mmCP_SCRATCH_INDEX', - 'mmCP_SCRATCH_INDEX_BASE_IDX', 'mmCP_SC_PSINVOC_COUNT0_HI', - 'mmCP_SC_PSINVOC_COUNT0_HI_BASE_IDX', 'mmCP_SC_PSINVOC_COUNT0_LO', - 'mmCP_SC_PSINVOC_COUNT0_LO_BASE_IDX', 'mmCP_SC_PSINVOC_COUNT1_HI', - 'mmCP_SC_PSINVOC_COUNT1_HI_BASE_IDX', 'mmCP_SC_PSINVOC_COUNT1_LO', - 'mmCP_SC_PSINVOC_COUNT1_LO_BASE_IDX', 'mmCP_SD_CNTL', - 'mmCP_SD_CNTL_BASE_IDX', 'mmCP_SEM_WAIT_TIMER', - 'mmCP_SEM_WAIT_TIMER_BASE_IDX', 'mmCP_SIG_SEM_ADDR_HI', - 'mmCP_SIG_SEM_ADDR_HI_BASE_IDX', 'mmCP_SIG_SEM_ADDR_LO', - 'mmCP_SIG_SEM_ADDR_LO_BASE_IDX', 'mmCP_SOFT_RESET_CNTL', - 'mmCP_SOFT_RESET_CNTL_BASE_IDX', 'mmCP_STALLED_STAT1', - 'mmCP_STALLED_STAT1_BASE_IDX', 'mmCP_STALLED_STAT2', - 'mmCP_STALLED_STAT2_BASE_IDX', 'mmCP_STALLED_STAT3', - 'mmCP_STALLED_STAT3_BASE_IDX', 'mmCP_STAT', 'mmCP_STAT_BASE_IDX', - 'mmCP_STQ_AVAIL', 'mmCP_STQ_AVAIL_BASE_IDX', 'mmCP_STQ_STAT', - 'mmCP_STQ_STAT_BASE_IDX', 'mmCP_STQ_THRESHOLDS', - 'mmCP_STQ_THRESHOLDS_BASE_IDX', 'mmCP_STQ_WR_STAT', - 'mmCP_STQ_WR_STAT_BASE_IDX', 'mmCP_STREAM_OUT_ADDR_HI', - 'mmCP_STREAM_OUT_ADDR_HI_BASE_IDX', 'mmCP_STREAM_OUT_ADDR_LO', - 'mmCP_STREAM_OUT_ADDR_LO_BASE_IDX', 'mmCP_STREAM_OUT_CONTROL', - 'mmCP_STREAM_OUT_CONTROL_BASE_IDX', 'mmCP_STRMOUT_CNTL', - 'mmCP_STRMOUT_CNTL_BASE_IDX', 'mmCP_ST_BASE_HI', - 'mmCP_ST_BASE_HI_BASE_IDX', 'mmCP_ST_BASE_LO', - 'mmCP_ST_BASE_LO_BASE_IDX', 'mmCP_ST_BUFSZ', - 'mmCP_ST_BUFSZ_BASE_IDX', 'mmCP_ST_CMD_BUFSZ', - 'mmCP_ST_CMD_BUFSZ_BASE_IDX', 'mmCP_SUSPEND_CNTL', - 'mmCP_SUSPEND_CNTL_BASE_IDX', 'mmCP_SUSPEND_RESUME_REQ', - 'mmCP_SUSPEND_RESUME_REQ_BASE_IDX', 'mmCP_VGT_CSINVOC_COUNT_HI', - 'mmCP_VGT_CSINVOC_COUNT_HI_BASE_IDX', 'mmCP_VGT_CSINVOC_COUNT_LO', - 'mmCP_VGT_CSINVOC_COUNT_LO_BASE_IDX', 'mmCP_VGT_DSINVOC_COUNT_HI', - 'mmCP_VGT_DSINVOC_COUNT_HI_BASE_IDX', 'mmCP_VGT_DSINVOC_COUNT_LO', - 'mmCP_VGT_DSINVOC_COUNT_LO_BASE_IDX', 'mmCP_VGT_GSINVOC_COUNT_HI', - 'mmCP_VGT_GSINVOC_COUNT_HI_BASE_IDX', 'mmCP_VGT_GSINVOC_COUNT_LO', - 'mmCP_VGT_GSINVOC_COUNT_LO_BASE_IDX', 'mmCP_VGT_GSPRIM_COUNT_HI', - 'mmCP_VGT_GSPRIM_COUNT_HI_BASE_IDX', 'mmCP_VGT_GSPRIM_COUNT_LO', - 'mmCP_VGT_GSPRIM_COUNT_LO_BASE_IDX', 'mmCP_VGT_HSINVOC_COUNT_HI', - 'mmCP_VGT_HSINVOC_COUNT_HI_BASE_IDX', 'mmCP_VGT_HSINVOC_COUNT_LO', - 'mmCP_VGT_HSINVOC_COUNT_LO_BASE_IDX', 'mmCP_VGT_IAPRIM_COUNT_HI', - 'mmCP_VGT_IAPRIM_COUNT_HI_BASE_IDX', 'mmCP_VGT_IAPRIM_COUNT_LO', - 'mmCP_VGT_IAPRIM_COUNT_LO_BASE_IDX', 'mmCP_VGT_IAVERT_COUNT_HI', - 'mmCP_VGT_IAVERT_COUNT_HI_BASE_IDX', 'mmCP_VGT_IAVERT_COUNT_LO', - 'mmCP_VGT_IAVERT_COUNT_LO_BASE_IDX', 'mmCP_VGT_VSINVOC_COUNT_HI', - 'mmCP_VGT_VSINVOC_COUNT_HI_BASE_IDX', 'mmCP_VGT_VSINVOC_COUNT_LO', - 'mmCP_VGT_VSINVOC_COUNT_LO_BASE_IDX', 'mmCP_VIRT_STATUS', - 'mmCP_VIRT_STATUS_BASE_IDX', 'mmCP_VMID', 'mmCP_VMID_BASE_IDX', - 'mmCP_VMID_PREEMPT', 'mmCP_VMID_PREEMPT_BASE_IDX', - 'mmCP_VMID_RESET', 'mmCP_VMID_RESET_BASE_IDX', 'mmCP_VMID_STATUS', - 'mmCP_VMID_STATUS_BASE_IDX', 'mmCP_WAIT_REG_MEM_TIMEOUT', - 'mmCP_WAIT_REG_MEM_TIMEOUT_BASE_IDX', 'mmCP_WAIT_SEM_ADDR_HI', - 'mmCP_WAIT_SEM_ADDR_HI_BASE_IDX', 'mmCP_WAIT_SEM_ADDR_LO', - 'mmCP_WAIT_SEM_ADDR_LO_BASE_IDX', 'mmCS_COPY_STATE', - 'mmCS_COPY_STATE_BASE_IDX', 'mmDB_ALPHA_TO_MASK', - 'mmDB_ALPHA_TO_MASK_BASE_IDX', 'mmDB_CGTT_CLK_CTRL_0', - 'mmDB_CGTT_CLK_CTRL_0_BASE_IDX', 'mmDB_COUNT_CONTROL', - 'mmDB_COUNT_CONTROL_BASE_IDX', 'mmDB_CREDIT_LIMIT', - 'mmDB_CREDIT_LIMIT_BASE_IDX', 'mmDB_DEBUG', 'mmDB_DEBUG2', - 'mmDB_DEBUG2_BASE_IDX', 'mmDB_DEBUG3', 'mmDB_DEBUG3_BASE_IDX', - 'mmDB_DEBUG4', 'mmDB_DEBUG4_BASE_IDX', 'mmDB_DEBUG5', - 'mmDB_DEBUG5_BASE_IDX', 'mmDB_DEBUG_BASE_IDX', - 'mmDB_DEPTH_BOUNDS_MAX', 'mmDB_DEPTH_BOUNDS_MAX_BASE_IDX', - 'mmDB_DEPTH_BOUNDS_MIN', 'mmDB_DEPTH_BOUNDS_MIN_BASE_IDX', - 'mmDB_DEPTH_CLEAR', 'mmDB_DEPTH_CLEAR_BASE_IDX', - 'mmDB_DEPTH_CONTROL', 'mmDB_DEPTH_CONTROL_BASE_IDX', - 'mmDB_DEPTH_SIZE_XY', 'mmDB_DEPTH_SIZE_XY_BASE_IDX', - 'mmDB_DEPTH_VIEW', 'mmDB_DEPTH_VIEW_BASE_IDX', 'mmDB_DFSM_CONFIG', - 'mmDB_DFSM_CONFIG_BASE_IDX', 'mmDB_DFSM_CONTROL', - 'mmDB_DFSM_CONTROL_BASE_IDX', 'mmDB_DFSM_FLUSH_AUX_EVENT', - 'mmDB_DFSM_FLUSH_AUX_EVENT_BASE_IDX', 'mmDB_DFSM_FLUSH_ENABLE', - 'mmDB_DFSM_FLUSH_ENABLE_BASE_IDX', 'mmDB_DFSM_PRIMS_IN_FLIGHT', - 'mmDB_DFSM_PRIMS_IN_FLIGHT_BASE_IDX', 'mmDB_DFSM_TILES_IN_FLIGHT', - 'mmDB_DFSM_TILES_IN_FLIGHT_BASE_IDX', 'mmDB_DFSM_WATCHDOG', - 'mmDB_DFSM_WATCHDOG_BASE_IDX', 'mmDB_EQAA', 'mmDB_EQAA_BASE_IDX', - 'mmDB_EQUAD_STUTTER_CONTROL', - 'mmDB_EQUAD_STUTTER_CONTROL_BASE_IDX', - 'mmDB_ETILE_STUTTER_CONTROL', - 'mmDB_ETILE_STUTTER_CONTROL_BASE_IDX', 'mmDB_EXCEPTION_CONTROL', - 'mmDB_EXCEPTION_CONTROL_BASE_IDX', - 'mmDB_FGCG_INTERFACES_CLK_CTRL', - 'mmDB_FGCG_INTERFACES_CLK_CTRL_BASE_IDX', - 'mmDB_FGCG_SRAMS_CLK_CTRL', 'mmDB_FGCG_SRAMS_CLK_CTRL_BASE_IDX', - 'mmDB_FIFO_DEPTH1', 'mmDB_FIFO_DEPTH1_BASE_IDX', - 'mmDB_FIFO_DEPTH2', 'mmDB_FIFO_DEPTH2_BASE_IDX', - 'mmDB_FIFO_DEPTH3', 'mmDB_FIFO_DEPTH3_BASE_IDX', - 'mmDB_FREE_CACHELINES', 'mmDB_FREE_CACHELINES_BASE_IDX', - 'mmDB_HTILE_DATA_BASE', 'mmDB_HTILE_DATA_BASE_BASE_IDX', - 'mmDB_HTILE_DATA_BASE_HI', 'mmDB_HTILE_DATA_BASE_HI_BASE_IDX', - 'mmDB_HTILE_SURFACE', 'mmDB_HTILE_SURFACE_BASE_IDX', - 'mmDB_LAST_OF_BURST_CONFIG', 'mmDB_LAST_OF_BURST_CONFIG_BASE_IDX', - 'mmDB_LQUAD_STUTTER_CONTROL', - 'mmDB_LQUAD_STUTTER_CONTROL_BASE_IDX', - 'mmDB_LTILE_STUTTER_CONTROL', - 'mmDB_LTILE_STUTTER_CONTROL_BASE_IDX', 'mmDB_MEM_ARB_WATERMARKS', - 'mmDB_MEM_ARB_WATERMARKS_BASE_IDX', 'mmDB_OCCLUSION_COUNT0_HI', - 'mmDB_OCCLUSION_COUNT0_HI_BASE_IDX', 'mmDB_OCCLUSION_COUNT0_LOW', - 'mmDB_OCCLUSION_COUNT0_LOW_BASE_IDX', 'mmDB_OCCLUSION_COUNT1_HI', - 'mmDB_OCCLUSION_COUNT1_HI_BASE_IDX', 'mmDB_OCCLUSION_COUNT1_LOW', - 'mmDB_OCCLUSION_COUNT1_LOW_BASE_IDX', 'mmDB_OCCLUSION_COUNT2_HI', - 'mmDB_OCCLUSION_COUNT2_HI_BASE_IDX', 'mmDB_OCCLUSION_COUNT2_LOW', - 'mmDB_OCCLUSION_COUNT2_LOW_BASE_IDX', 'mmDB_OCCLUSION_COUNT3_HI', - 'mmDB_OCCLUSION_COUNT3_HI_BASE_IDX', 'mmDB_OCCLUSION_COUNT3_LOW', - 'mmDB_OCCLUSION_COUNT3_LOW_BASE_IDX', 'mmDB_PERFCOUNTER0_HI', - 'mmDB_PERFCOUNTER0_HI_BASE_IDX', 'mmDB_PERFCOUNTER0_LO', - 'mmDB_PERFCOUNTER0_LO_BASE_IDX', 'mmDB_PERFCOUNTER0_SELECT', - 'mmDB_PERFCOUNTER0_SELECT1', 'mmDB_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmDB_PERFCOUNTER0_SELECT_BASE_IDX', 'mmDB_PERFCOUNTER1_HI', - 'mmDB_PERFCOUNTER1_HI_BASE_IDX', 'mmDB_PERFCOUNTER1_LO', - 'mmDB_PERFCOUNTER1_LO_BASE_IDX', 'mmDB_PERFCOUNTER1_SELECT', - 'mmDB_PERFCOUNTER1_SELECT1', 'mmDB_PERFCOUNTER1_SELECT1_BASE_IDX', - 'mmDB_PERFCOUNTER1_SELECT_BASE_IDX', 'mmDB_PERFCOUNTER2_HI', - 'mmDB_PERFCOUNTER2_HI_BASE_IDX', 'mmDB_PERFCOUNTER2_LO', - 'mmDB_PERFCOUNTER2_LO_BASE_IDX', 'mmDB_PERFCOUNTER2_SELECT', - 'mmDB_PERFCOUNTER2_SELECT_BASE_IDX', 'mmDB_PERFCOUNTER3_HI', - 'mmDB_PERFCOUNTER3_HI_BASE_IDX', 'mmDB_PERFCOUNTER3_LO', - 'mmDB_PERFCOUNTER3_LO_BASE_IDX', 'mmDB_PERFCOUNTER3_SELECT', - 'mmDB_PERFCOUNTER3_SELECT_BASE_IDX', 'mmDB_PRELOAD_CONTROL', - 'mmDB_PRELOAD_CONTROL_BASE_IDX', 'mmDB_RENDER_CONTROL', - 'mmDB_RENDER_CONTROL_BASE_IDX', 'mmDB_RENDER_OVERRIDE', - 'mmDB_RENDER_OVERRIDE2', 'mmDB_RENDER_OVERRIDE2_BASE_IDX', - 'mmDB_RENDER_OVERRIDE_BASE_IDX', 'mmDB_RESERVED_REG_1', - 'mmDB_RESERVED_REG_1_BASE_IDX', 'mmDB_RESERVED_REG_2', - 'mmDB_RESERVED_REG_2_BASE_IDX', 'mmDB_RESERVED_REG_3', - 'mmDB_RESERVED_REG_3_BASE_IDX', 'mmDB_RING_CONTROL', - 'mmDB_RING_CONTROL_BASE_IDX', 'mmDB_RMI_BC_GL2_CACHE_CONTROL', - 'mmDB_RMI_BC_GL2_CACHE_CONTROL_BASE_IDX', - 'mmDB_RMI_L2_CACHE_CONTROL', 'mmDB_RMI_L2_CACHE_CONTROL_BASE_IDX', - 'mmDB_SHADER_CONTROL', 'mmDB_SHADER_CONTROL_BASE_IDX', - 'mmDB_SRESULTS_COMPARE_STATE0', - 'mmDB_SRESULTS_COMPARE_STATE0_BASE_IDX', - 'mmDB_SRESULTS_COMPARE_STATE1', - 'mmDB_SRESULTS_COMPARE_STATE1_BASE_IDX', 'mmDB_STENCILREFMASK', - 'mmDB_STENCILREFMASK_BASE_IDX', 'mmDB_STENCILREFMASK_BF', - 'mmDB_STENCILREFMASK_BF_BASE_IDX', 'mmDB_STENCIL_CLEAR', - 'mmDB_STENCIL_CLEAR_BASE_IDX', 'mmDB_STENCIL_CONTROL', - 'mmDB_STENCIL_CONTROL_BASE_IDX', 'mmDB_STENCIL_INFO', - 'mmDB_STENCIL_INFO_BASE_IDX', 'mmDB_STENCIL_READ_BASE', - 'mmDB_STENCIL_READ_BASE_BASE_IDX', 'mmDB_STENCIL_READ_BASE_HI', - 'mmDB_STENCIL_READ_BASE_HI_BASE_IDX', 'mmDB_STENCIL_WRITE_BASE', - 'mmDB_STENCIL_WRITE_BASE_BASE_IDX', 'mmDB_STENCIL_WRITE_BASE_HI', - 'mmDB_STENCIL_WRITE_BASE_HI_BASE_IDX', 'mmDB_SUBTILE_CONTROL', - 'mmDB_SUBTILE_CONTROL_BASE_IDX', 'mmDB_VRS_OVERRIDE_CNTL', - 'mmDB_VRS_OVERRIDE_CNTL_BASE_IDX', 'mmDB_WATERMARKS', - 'mmDB_WATERMARKS_BASE_IDX', 'mmDB_ZPASS_COUNT_HI', - 'mmDB_ZPASS_COUNT_HI_BASE_IDX', 'mmDB_ZPASS_COUNT_LOW', - 'mmDB_ZPASS_COUNT_LOW_BASE_IDX', 'mmDB_Z_INFO', - 'mmDB_Z_INFO_BASE_IDX', 'mmDB_Z_READ_BASE', - 'mmDB_Z_READ_BASE_BASE_IDX', 'mmDB_Z_READ_BASE_HI', - 'mmDB_Z_READ_BASE_HI_BASE_IDX', 'mmDB_Z_WRITE_BASE', - 'mmDB_Z_WRITE_BASE_BASE_IDX', 'mmDB_Z_WRITE_BASE_HI', - 'mmDB_Z_WRITE_BASE_HI_BASE_IDX', 'mmDIDT_INDEX_AUTO_INCR_EN', - 'mmDIDT_INDEX_AUTO_INCR_EN_BASE_IDX', 'mmDIDT_IND_DATA', - 'mmDIDT_IND_DATA_BASE_IDX', 'mmDIDT_IND_INDEX', - 'mmDIDT_IND_INDEX_BASE_IDX', 'mmEDC_HYSTERESIS_CNTL', - 'mmEDC_HYSTERESIS_CNTL_BASE_IDX', 'mmEDC_HYSTERESIS_STAT', - 'mmEDC_HYSTERESIS_STAT_BASE_IDX', 'mmEDC_PERF_COUNTER', - 'mmEDC_PERF_COUNTER_BASE_IDX', 'mmGB_ADDR_CONFIG', - 'mmGB_ADDR_CONFIG_BASE_IDX', 'mmGB_ADDR_CONFIG_READ', - 'mmGB_ADDR_CONFIG_READ_BASE_IDX', 'mmGB_BACKEND_MAP', - 'mmGB_BACKEND_MAP_BASE_IDX', 'mmGB_EDC_MODE', - 'mmGB_EDC_MODE_BASE_IDX', 'mmGB_GPU_ID', 'mmGB_GPU_ID_BASE_IDX', - 'mmGCEA_CGTT_CLK_CTRL', 'mmGCEA_CGTT_CLK_CTRL_BASE_IDX', - 'mmGCEA_DRAM_PAGE_BURST', 'mmGCEA_DRAM_PAGE_BURST_BASE_IDX', - 'mmGCEA_DRAM_RD_CAM_CNTL', 'mmGCEA_DRAM_RD_CAM_CNTL_BASE_IDX', - 'mmGCEA_DRAM_RD_CLI2GRP_MAP0', - 'mmGCEA_DRAM_RD_CLI2GRP_MAP0_BASE_IDX', - 'mmGCEA_DRAM_RD_CLI2GRP_MAP1', - 'mmGCEA_DRAM_RD_CLI2GRP_MAP1_BASE_IDX', - 'mmGCEA_DRAM_RD_GRP2VC_MAP', 'mmGCEA_DRAM_RD_GRP2VC_MAP_BASE_IDX', - 'mmGCEA_DRAM_RD_LAZY', 'mmGCEA_DRAM_RD_LAZY_BASE_IDX', - 'mmGCEA_DRAM_RD_PRI_AGE', 'mmGCEA_DRAM_RD_PRI_AGE_BASE_IDX', - 'mmGCEA_DRAM_RD_PRI_FIXED', 'mmGCEA_DRAM_RD_PRI_FIXED_BASE_IDX', - 'mmGCEA_DRAM_RD_PRI_QUANT_PRI1', - 'mmGCEA_DRAM_RD_PRI_QUANT_PRI1_BASE_IDX', - 'mmGCEA_DRAM_RD_PRI_QUANT_PRI2', - 'mmGCEA_DRAM_RD_PRI_QUANT_PRI2_BASE_IDX', - 'mmGCEA_DRAM_RD_PRI_QUANT_PRI3', - 'mmGCEA_DRAM_RD_PRI_QUANT_PRI3_BASE_IDX', - 'mmGCEA_DRAM_RD_PRI_QUEUING', - 'mmGCEA_DRAM_RD_PRI_QUEUING_BASE_IDX', - 'mmGCEA_DRAM_RD_PRI_URGENCY', - 'mmGCEA_DRAM_RD_PRI_URGENCY_BASE_IDX', 'mmGCEA_DRAM_WR_CAM_CNTL', - 'mmGCEA_DRAM_WR_CAM_CNTL_BASE_IDX', 'mmGCEA_DRAM_WR_CLI2GRP_MAP0', - 'mmGCEA_DRAM_WR_CLI2GRP_MAP0_BASE_IDX', - 'mmGCEA_DRAM_WR_CLI2GRP_MAP1', - 'mmGCEA_DRAM_WR_CLI2GRP_MAP1_BASE_IDX', - 'mmGCEA_DRAM_WR_GRP2VC_MAP', 'mmGCEA_DRAM_WR_GRP2VC_MAP_BASE_IDX', - 'mmGCEA_DRAM_WR_LAZY', 'mmGCEA_DRAM_WR_LAZY_BASE_IDX', - 'mmGCEA_DRAM_WR_PRI_AGE', 'mmGCEA_DRAM_WR_PRI_AGE_BASE_IDX', - 'mmGCEA_DRAM_WR_PRI_FIXED', 'mmGCEA_DRAM_WR_PRI_FIXED_BASE_IDX', - 'mmGCEA_DRAM_WR_PRI_QUANT_PRI1', - 'mmGCEA_DRAM_WR_PRI_QUANT_PRI1_BASE_IDX', - 'mmGCEA_DRAM_WR_PRI_QUANT_PRI2', - 'mmGCEA_DRAM_WR_PRI_QUANT_PRI2_BASE_IDX', - 'mmGCEA_DRAM_WR_PRI_QUANT_PRI3', - 'mmGCEA_DRAM_WR_PRI_QUANT_PRI3_BASE_IDX', - 'mmGCEA_DRAM_WR_PRI_QUEUING', - 'mmGCEA_DRAM_WR_PRI_QUEUING_BASE_IDX', - 'mmGCEA_DRAM_WR_PRI_URGENCY', - 'mmGCEA_DRAM_WR_PRI_URGENCY_BASE_IDX', 'mmGCEA_DSM_CNTL', - 'mmGCEA_DSM_CNTL2', 'mmGCEA_DSM_CNTL2A', - 'mmGCEA_DSM_CNTL2A_BASE_IDX', 'mmGCEA_DSM_CNTL2B', - 'mmGCEA_DSM_CNTL2B_BASE_IDX', 'mmGCEA_DSM_CNTL2_BASE_IDX', - 'mmGCEA_DSM_CNTLA', 'mmGCEA_DSM_CNTLA_BASE_IDX', - 'mmGCEA_DSM_CNTLB', 'mmGCEA_DSM_CNTLB_BASE_IDX', - 'mmGCEA_DSM_CNTL_BASE_IDX', 'mmGCEA_ERR_STATUS', - 'mmGCEA_ERR_STATUS_BASE_IDX', 'mmGCEA_GL2C_XBR_CREDITS', - 'mmGCEA_GL2C_XBR_CREDITS_BASE_IDX', 'mmGCEA_GL2C_XBR_MAXBURST', - 'mmGCEA_GL2C_XBR_MAXBURST_BASE_IDX', 'mmGCEA_IO_GROUP_BURST', - 'mmGCEA_IO_GROUP_BURST_BASE_IDX', 'mmGCEA_IO_RD_CLI2GRP_MAP0', - 'mmGCEA_IO_RD_CLI2GRP_MAP0_BASE_IDX', 'mmGCEA_IO_RD_CLI2GRP_MAP1', - 'mmGCEA_IO_RD_CLI2GRP_MAP1_BASE_IDX', - 'mmGCEA_IO_RD_COMBINE_FLUSH', - 'mmGCEA_IO_RD_COMBINE_FLUSH_BASE_IDX', 'mmGCEA_IO_RD_PRI_AGE', - 'mmGCEA_IO_RD_PRI_AGE_BASE_IDX', 'mmGCEA_IO_RD_PRI_FIXED', - 'mmGCEA_IO_RD_PRI_FIXED_BASE_IDX', 'mmGCEA_IO_RD_PRI_QUANT_PRI1', - 'mmGCEA_IO_RD_PRI_QUANT_PRI1_BASE_IDX', - 'mmGCEA_IO_RD_PRI_QUANT_PRI2', - 'mmGCEA_IO_RD_PRI_QUANT_PRI2_BASE_IDX', - 'mmGCEA_IO_RD_PRI_QUANT_PRI3', - 'mmGCEA_IO_RD_PRI_QUANT_PRI3_BASE_IDX', - 'mmGCEA_IO_RD_PRI_QUEUING', 'mmGCEA_IO_RD_PRI_QUEUING_BASE_IDX', - 'mmGCEA_IO_RD_PRI_URGENCY', 'mmGCEA_IO_RD_PRI_URGENCY_BASE_IDX', - 'mmGCEA_IO_RD_PRI_URGENCY_MASKING', - 'mmGCEA_IO_RD_PRI_URGENCY_MASKING_BASE_IDX', - 'mmGCEA_IO_WR_CLI2GRP_MAP0', 'mmGCEA_IO_WR_CLI2GRP_MAP0_BASE_IDX', - 'mmGCEA_IO_WR_CLI2GRP_MAP1', 'mmGCEA_IO_WR_CLI2GRP_MAP1_BASE_IDX', - 'mmGCEA_IO_WR_COMBINE_FLUSH', - 'mmGCEA_IO_WR_COMBINE_FLUSH_BASE_IDX', 'mmGCEA_IO_WR_PRI_AGE', - 'mmGCEA_IO_WR_PRI_AGE_BASE_IDX', 'mmGCEA_IO_WR_PRI_FIXED', - 'mmGCEA_IO_WR_PRI_FIXED_BASE_IDX', 'mmGCEA_IO_WR_PRI_QUANT_PRI1', - 'mmGCEA_IO_WR_PRI_QUANT_PRI1_BASE_IDX', - 'mmGCEA_IO_WR_PRI_QUANT_PRI2', - 'mmGCEA_IO_WR_PRI_QUANT_PRI2_BASE_IDX', - 'mmGCEA_IO_WR_PRI_QUANT_PRI3', - 'mmGCEA_IO_WR_PRI_QUANT_PRI3_BASE_IDX', - 'mmGCEA_IO_WR_PRI_QUEUING', 'mmGCEA_IO_WR_PRI_QUEUING_BASE_IDX', - 'mmGCEA_IO_WR_PRI_URGENCY', 'mmGCEA_IO_WR_PRI_URGENCY_BASE_IDX', - 'mmGCEA_IO_WR_PRI_URGENCY_MASKING', - 'mmGCEA_IO_WR_PRI_URGENCY_MASKING_BASE_IDX', - 'mmGCEA_LATENCY_SAMPLING', 'mmGCEA_LATENCY_SAMPLING_BASE_IDX', - 'mmGCEA_MISC', 'mmGCEA_MISC2', 'mmGCEA_MISC2_BASE_IDX', - 'mmGCEA_MISC_BASE_IDX', 'mmGCEA_PERFCOUNTER0_CFG', - 'mmGCEA_PERFCOUNTER0_CFG_BASE_IDX', 'mmGCEA_PERFCOUNTER1_CFG', - 'mmGCEA_PERFCOUNTER1_CFG_BASE_IDX', 'mmGCEA_PERFCOUNTER2_HI', - 'mmGCEA_PERFCOUNTER2_HI_BASE_IDX', 'mmGCEA_PERFCOUNTER2_LO', - 'mmGCEA_PERFCOUNTER2_LO_BASE_IDX', 'mmGCEA_PERFCOUNTER2_MODE', - 'mmGCEA_PERFCOUNTER2_MODE_BASE_IDX', 'mmGCEA_PERFCOUNTER2_SELECT', - 'mmGCEA_PERFCOUNTER2_SELECT1', - 'mmGCEA_PERFCOUNTER2_SELECT1_BASE_IDX', - 'mmGCEA_PERFCOUNTER2_SELECT_BASE_IDX', 'mmGCEA_PERFCOUNTER_HI', - 'mmGCEA_PERFCOUNTER_HI_BASE_IDX', 'mmGCEA_PERFCOUNTER_LO', - 'mmGCEA_PERFCOUNTER_LO_BASE_IDX', 'mmGCEA_PERFCOUNTER_RSLT_CNTL', - 'mmGCEA_PERFCOUNTER_RSLT_CNTL_BASE_IDX', 'mmGCEA_PROBE_CNTL', - 'mmGCEA_PROBE_CNTL_BASE_IDX', 'mmGCEA_PROBE_MAP', - 'mmGCEA_PROBE_MAP_BASE_IDX', 'mmGCEA_RRET_MEM_RESERVE', - 'mmGCEA_RRET_MEM_RESERVE_BASE_IDX', 'mmGCMC_MEM_POWER_LS', - 'mmGCMC_MEM_POWER_LS_BASE_IDX', 'mmGCMC_SHARED_ACTIVE_FCN_ID', - 'mmGCMC_SHARED_ACTIVE_FCN_ID_BASE_IDX', - 'mmGCMC_SHARED_VIRT_RESET_REQ', 'mmGCMC_SHARED_VIRT_RESET_REQ2', - 'mmGCMC_SHARED_VIRT_RESET_REQ2_BASE_IDX', - 'mmGCMC_SHARED_VIRT_RESET_REQ_BASE_IDX', 'mmGCMC_VM_AGP_BASE', - 'mmGCMC_VM_AGP_BASE_BASE_IDX', 'mmGCMC_VM_AGP_BOT', - 'mmGCMC_VM_AGP_BOT_BASE_IDX', 'mmGCMC_VM_AGP_TOP', - 'mmGCMC_VM_AGP_TOP_BASE_IDX', 'mmGCMC_VM_APT_CNTL', - 'mmGCMC_VM_APT_CNTL_BASE_IDX', - 'mmGCMC_VM_CACHEABLE_DRAM_ADDRESS_END', - 'mmGCMC_VM_CACHEABLE_DRAM_ADDRESS_END_BASE_IDX', - 'mmGCMC_VM_CACHEABLE_DRAM_ADDRESS_START', - 'mmGCMC_VM_CACHEABLE_DRAM_ADDRESS_START_BASE_IDX', - 'mmGCMC_VM_FB_LOCATION_BASE', - 'mmGCMC_VM_FB_LOCATION_BASE_BASE_IDX', - 'mmGCMC_VM_FB_LOCATION_TOP', 'mmGCMC_VM_FB_LOCATION_TOP_BASE_IDX', - 'mmGCMC_VM_FB_NOALLOC_CNTL', 'mmGCMC_VM_FB_NOALLOC_CNTL_BASE_IDX', - 'mmGCMC_VM_FB_OFFSET', 'mmGCMC_VM_FB_OFFSET_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF0', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF0_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF1', 'mmGCMC_VM_FB_SIZE_OFFSET_VF10', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF10_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF11', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF11_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF12', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF12_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF13', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF13_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF14', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF14_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF15', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF15_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF16', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF16_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF17', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF17_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF18', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF18_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF19', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF19_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF1_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF2', 'mmGCMC_VM_FB_SIZE_OFFSET_VF20', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF20_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF21', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF21_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF22', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF22_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF23', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF23_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF24', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF24_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF25', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF25_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF26', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF26_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF27', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF27_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF28', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF28_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF29', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF29_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF2_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF3', 'mmGCMC_VM_FB_SIZE_OFFSET_VF30', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF30_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF31', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF31_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF3_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF4', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF4_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF5', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF5_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF6', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF6_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF7', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF7_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF8', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF8_BASE_IDX', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF9', - 'mmGCMC_VM_FB_SIZE_OFFSET_VF9_BASE_IDX', - 'mmGCMC_VM_L2_PERFCOUNTER0_CFG', - 'mmGCMC_VM_L2_PERFCOUNTER0_CFG_BASE_IDX', - 'mmGCMC_VM_L2_PERFCOUNTER1_CFG', - 'mmGCMC_VM_L2_PERFCOUNTER1_CFG_BASE_IDX', - 'mmGCMC_VM_L2_PERFCOUNTER2_CFG', - 'mmGCMC_VM_L2_PERFCOUNTER2_CFG_BASE_IDX', - 'mmGCMC_VM_L2_PERFCOUNTER3_CFG', - 'mmGCMC_VM_L2_PERFCOUNTER3_CFG_BASE_IDX', - 'mmGCMC_VM_L2_PERFCOUNTER4_CFG', - 'mmGCMC_VM_L2_PERFCOUNTER4_CFG_BASE_IDX', - 'mmGCMC_VM_L2_PERFCOUNTER5_CFG', - 'mmGCMC_VM_L2_PERFCOUNTER5_CFG_BASE_IDX', - 'mmGCMC_VM_L2_PERFCOUNTER6_CFG', - 'mmGCMC_VM_L2_PERFCOUNTER6_CFG_BASE_IDX', - 'mmGCMC_VM_L2_PERFCOUNTER7_CFG', - 'mmGCMC_VM_L2_PERFCOUNTER7_CFG_BASE_IDX', - 'mmGCMC_VM_L2_PERFCOUNTER_HI', - 'mmGCMC_VM_L2_PERFCOUNTER_HI_BASE_IDX', - 'mmGCMC_VM_L2_PERFCOUNTER_LO', - 'mmGCMC_VM_L2_PERFCOUNTER_LO_BASE_IDX', - 'mmGCMC_VM_L2_PERFCOUNTER_RSLT_CNTL', - 'mmGCMC_VM_L2_PERFCOUNTER_RSLT_CNTL_BASE_IDX', - 'mmGCMC_VM_LOCAL_HBM_ADDRESS_END', - 'mmGCMC_VM_LOCAL_HBM_ADDRESS_END_BASE_IDX', - 'mmGCMC_VM_LOCAL_HBM_ADDRESS_LOCK_CNTL', - 'mmGCMC_VM_LOCAL_HBM_ADDRESS_LOCK_CNTL_BASE_IDX', - 'mmGCMC_VM_LOCAL_HBM_ADDRESS_START', - 'mmGCMC_VM_LOCAL_HBM_ADDRESS_START_BASE_IDX', - 'mmGCMC_VM_MARC_BASE_HI_0', 'mmGCMC_VM_MARC_BASE_HI_0_BASE_IDX', - 'mmGCMC_VM_MARC_BASE_HI_1', 'mmGCMC_VM_MARC_BASE_HI_1_BASE_IDX', - 'mmGCMC_VM_MARC_BASE_HI_2', 'mmGCMC_VM_MARC_BASE_HI_2_BASE_IDX', - 'mmGCMC_VM_MARC_BASE_HI_3', 'mmGCMC_VM_MARC_BASE_HI_3_BASE_IDX', - 'mmGCMC_VM_MARC_BASE_LO_0', 'mmGCMC_VM_MARC_BASE_LO_0_BASE_IDX', - 'mmGCMC_VM_MARC_BASE_LO_1', 'mmGCMC_VM_MARC_BASE_LO_1_BASE_IDX', - 'mmGCMC_VM_MARC_BASE_LO_2', 'mmGCMC_VM_MARC_BASE_LO_2_BASE_IDX', - 'mmGCMC_VM_MARC_BASE_LO_3', 'mmGCMC_VM_MARC_BASE_LO_3_BASE_IDX', - 'mmGCMC_VM_MARC_LEN_HI_0', 'mmGCMC_VM_MARC_LEN_HI_0_BASE_IDX', - 'mmGCMC_VM_MARC_LEN_HI_1', 'mmGCMC_VM_MARC_LEN_HI_1_BASE_IDX', - 'mmGCMC_VM_MARC_LEN_HI_2', 'mmGCMC_VM_MARC_LEN_HI_2_BASE_IDX', - 'mmGCMC_VM_MARC_LEN_HI_3', 'mmGCMC_VM_MARC_LEN_HI_3_BASE_IDX', - 'mmGCMC_VM_MARC_LEN_LO_0', 'mmGCMC_VM_MARC_LEN_LO_0_BASE_IDX', - 'mmGCMC_VM_MARC_LEN_LO_1', 'mmGCMC_VM_MARC_LEN_LO_1_BASE_IDX', - 'mmGCMC_VM_MARC_LEN_LO_2', 'mmGCMC_VM_MARC_LEN_LO_2_BASE_IDX', - 'mmGCMC_VM_MARC_LEN_LO_3', 'mmGCMC_VM_MARC_LEN_LO_3_BASE_IDX', - 'mmGCMC_VM_MARC_RELOC_HI_0', 'mmGCMC_VM_MARC_RELOC_HI_0_BASE_IDX', - 'mmGCMC_VM_MARC_RELOC_HI_1', 'mmGCMC_VM_MARC_RELOC_HI_1_BASE_IDX', - 'mmGCMC_VM_MARC_RELOC_HI_2', 'mmGCMC_VM_MARC_RELOC_HI_2_BASE_IDX', - 'mmGCMC_VM_MARC_RELOC_HI_3', 'mmGCMC_VM_MARC_RELOC_HI_3_BASE_IDX', - 'mmGCMC_VM_MARC_RELOC_LO_0', 'mmGCMC_VM_MARC_RELOC_LO_0_BASE_IDX', - 'mmGCMC_VM_MARC_RELOC_LO_1', 'mmGCMC_VM_MARC_RELOC_LO_1_BASE_IDX', - 'mmGCMC_VM_MARC_RELOC_LO_2', 'mmGCMC_VM_MARC_RELOC_LO_2_BASE_IDX', - 'mmGCMC_VM_MARC_RELOC_LO_3', 'mmGCMC_VM_MARC_RELOC_LO_3_BASE_IDX', - 'mmGCMC_VM_MX_L1_TLB_CNTL', 'mmGCMC_VM_MX_L1_TLB_CNTL_BASE_IDX', - 'mmGCMC_VM_NB_LOWER_TOP_OF_DRAM2', - 'mmGCMC_VM_NB_LOWER_TOP_OF_DRAM2_BASE_IDX', - 'mmGCMC_VM_NB_MMIOBASE', 'mmGCMC_VM_NB_MMIOBASE_BASE_IDX', - 'mmGCMC_VM_NB_MMIOLIMIT', 'mmGCMC_VM_NB_MMIOLIMIT_BASE_IDX', - 'mmGCMC_VM_NB_PCI_ARB', 'mmGCMC_VM_NB_PCI_ARB_BASE_IDX', - 'mmGCMC_VM_NB_PCI_CTRL', 'mmGCMC_VM_NB_PCI_CTRL_BASE_IDX', - 'mmGCMC_VM_NB_TOP_OF_DRAM_SLOT1', - 'mmGCMC_VM_NB_TOP_OF_DRAM_SLOT1_BASE_IDX', - 'mmGCMC_VM_NB_UPPER_TOP_OF_DRAM2', - 'mmGCMC_VM_NB_UPPER_TOP_OF_DRAM2_BASE_IDX', 'mmGCMC_VM_STEERING', - 'mmGCMC_VM_STEERING_BASE_IDX', - 'mmGCMC_VM_SYSTEM_APERTURE_DEFAULT_ADDR_LSB', - 'mmGCMC_VM_SYSTEM_APERTURE_DEFAULT_ADDR_LSB_BASE_IDX', - 'mmGCMC_VM_SYSTEM_APERTURE_DEFAULT_ADDR_MSB', - 'mmGCMC_VM_SYSTEM_APERTURE_DEFAULT_ADDR_MSB_BASE_IDX', - 'mmGCMC_VM_SYSTEM_APERTURE_HIGH_ADDR', - 'mmGCMC_VM_SYSTEM_APERTURE_HIGH_ADDR_BASE_IDX', - 'mmGCMC_VM_SYSTEM_APERTURE_LOW_ADDR', - 'mmGCMC_VM_SYSTEM_APERTURE_LOW_ADDR_BASE_IDX', - 'mmGCMC_VM_XGMI_GPUIOV_ENABLE', - 'mmGCMC_VM_XGMI_GPUIOV_ENABLE_BASE_IDX', - 'mmGCMC_VM_XGMI_LFB_CNTL', 'mmGCMC_VM_XGMI_LFB_CNTL_BASE_IDX', - 'mmGCMC_VM_XGMI_LFB_SIZE', 'mmGCMC_VM_XGMI_LFB_SIZE_BASE_IDX', - 'mmGCRD_SA_TARGETS_DISABLE', 'mmGCRD_SA_TARGETS_DISABLE_BASE_IDX', - 'mmGCR_CGTT_SCLK_CTRL', 'mmGCR_CGTT_SCLK_CTRL_BASE_IDX', - 'mmGCR_CMD_STATUS', 'mmGCR_CMD_STATUS_BASE_IDX', - 'mmGCR_GENERAL_CNTL', 'mmGCR_GENERAL_CNTL_BASE_IDX', - 'mmGCR_PERFCOUNTER0_HI', 'mmGCR_PERFCOUNTER0_HI_BASE_IDX', - 'mmGCR_PERFCOUNTER0_LO', 'mmGCR_PERFCOUNTER0_LO_BASE_IDX', - 'mmGCR_PERFCOUNTER0_SELECT', 'mmGCR_PERFCOUNTER0_SELECT1', - 'mmGCR_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmGCR_PERFCOUNTER0_SELECT_BASE_IDX', 'mmGCR_PERFCOUNTER1_HI', - 'mmGCR_PERFCOUNTER1_HI_BASE_IDX', 'mmGCR_PERFCOUNTER1_LO', - 'mmGCR_PERFCOUNTER1_LO_BASE_IDX', 'mmGCR_PERFCOUNTER1_SELECT', - 'mmGCR_PERFCOUNTER1_SELECT_BASE_IDX', 'mmGCR_PIO_CNTL', - 'mmGCR_PIO_CNTL_BASE_IDX', 'mmGCR_PIO_DATA', - 'mmGCR_PIO_DATA_BASE_IDX', 'mmGCR_SPARE', 'mmGCR_SPARE_BASE_IDX', - 'mmGCUTCL2_HARVEST_BYPASS_GROUPS', - 'mmGCUTCL2_HARVEST_BYPASS_GROUPS_BASE_IDX', - 'mmGCUTCL2_PERFCOUNTER0_CFG', - 'mmGCUTCL2_PERFCOUNTER0_CFG_BASE_IDX', - 'mmGCUTCL2_PERFCOUNTER1_CFG', - 'mmGCUTCL2_PERFCOUNTER1_CFG_BASE_IDX', - 'mmGCUTCL2_PERFCOUNTER2_CFG', - 'mmGCUTCL2_PERFCOUNTER2_CFG_BASE_IDX', - 'mmGCUTCL2_PERFCOUNTER3_CFG', - 'mmGCUTCL2_PERFCOUNTER3_CFG_BASE_IDX', 'mmGCUTCL2_PERFCOUNTER_HI', - 'mmGCUTCL2_PERFCOUNTER_HI_BASE_IDX', 'mmGCUTCL2_PERFCOUNTER_LO', - 'mmGCUTCL2_PERFCOUNTER_LO_BASE_IDX', - 'mmGCUTCL2_PERFCOUNTER_RSLT_CNTL', - 'mmGCUTCL2_PERFCOUNTER_RSLT_CNTL_BASE_IDX', - 'mmGCUTCL2_TRANSLATION_BYPASS_BY_VMID', - 'mmGCUTCL2_TRANSLATION_BYPASS_BY_VMID_BASE_IDX', - 'mmGCUTC_GPUVA_VMID_TRANSLATION_ASSIST_REQUEST_HI', - 'mmGCUTC_GPUVA_VMID_TRANSLATION_ASSIST_REQUEST_HI_BASE_IDX', - 'mmGCUTC_GPUVA_VMID_TRANSLATION_ASSIST_REQUEST_LO', - 'mmGCUTC_GPUVA_VMID_TRANSLATION_ASSIST_REQUEST_LO_BASE_IDX', - 'mmGCUTC_GPUVA_VMID_TRANSLATION_ASSIST_RESPONSE_HI', - 'mmGCUTC_GPUVA_VMID_TRANSLATION_ASSIST_RESPONSE_HI_BASE_IDX', - 'mmGCUTC_GPUVA_VMID_TRANSLATION_ASSIST_RESPONSE_LO', - 'mmGCUTC_GPUVA_VMID_TRANSLATION_ASSIST_RESPONSE_LO_BASE_IDX', - 'mmGCVML2_PERFCOUNTER2_0_HI', - 'mmGCVML2_PERFCOUNTER2_0_HI_BASE_IDX', - 'mmGCVML2_PERFCOUNTER2_0_LO', - 'mmGCVML2_PERFCOUNTER2_0_LO_BASE_IDX', - 'mmGCVML2_PERFCOUNTER2_0_MODE', - 'mmGCVML2_PERFCOUNTER2_0_MODE_BASE_IDX', - 'mmGCVML2_PERFCOUNTER2_0_SELECT', - 'mmGCVML2_PERFCOUNTER2_0_SELECT1', - 'mmGCVML2_PERFCOUNTER2_0_SELECT1_BASE_IDX', - 'mmGCVML2_PERFCOUNTER2_0_SELECT_BASE_IDX', - 'mmGCVML2_PERFCOUNTER2_1_HI', - 'mmGCVML2_PERFCOUNTER2_1_HI_BASE_IDX', - 'mmGCVML2_PERFCOUNTER2_1_LO', - 'mmGCVML2_PERFCOUNTER2_1_LO_BASE_IDX', - 'mmGCVML2_PERFCOUNTER2_1_MODE', - 'mmGCVML2_PERFCOUNTER2_1_MODE_BASE_IDX', - 'mmGCVML2_PERFCOUNTER2_1_SELECT', - 'mmGCVML2_PERFCOUNTER2_1_SELECT1', - 'mmGCVML2_PERFCOUNTER2_1_SELECT1_BASE_IDX', - 'mmGCVML2_PERFCOUNTER2_1_SELECT_BASE_IDX', - 'mmGCVML2_WALKER_MACRO_THROTTLE_FETCH_LIMIT', - 'mmGCVML2_WALKER_MACRO_THROTTLE_FETCH_LIMIT_BASE_IDX', - 'mmGCVML2_WALKER_MACRO_THROTTLE_TIME', - 'mmGCVML2_WALKER_MACRO_THROTTLE_TIME_BASE_IDX', - 'mmGCVML2_WALKER_MICRO_THROTTLE_FETCH_LIMIT', - 'mmGCVML2_WALKER_MICRO_THROTTLE_FETCH_LIMIT_BASE_IDX', - 'mmGCVML2_WALKER_MICRO_THROTTLE_TIME', - 'mmGCVML2_WALKER_MICRO_THROTTLE_TIME_BASE_IDX', - 'mmGCVM_CONTEXT0_CNTL', 'mmGCVM_CONTEXT0_CNTL_BASE_IDX', - 'mmGCVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_HI32', - 'mmGCVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LO32', - 'mmGCVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT0_PAGE_TABLE_END_ADDR_HI32', - 'mmGCVM_CONTEXT0_PAGE_TABLE_END_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT0_PAGE_TABLE_END_ADDR_LO32', - 'mmGCVM_CONTEXT0_PAGE_TABLE_END_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT0_PAGE_TABLE_START_ADDR_HI32', - 'mmGCVM_CONTEXT0_PAGE_TABLE_START_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT0_PAGE_TABLE_START_ADDR_LO32', - 'mmGCVM_CONTEXT0_PAGE_TABLE_START_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT10_CNTL', 'mmGCVM_CONTEXT10_CNTL_BASE_IDX', - 'mmGCVM_CONTEXT10_PAGE_TABLE_BASE_ADDR_HI32', - 'mmGCVM_CONTEXT10_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT10_PAGE_TABLE_BASE_ADDR_LO32', - 'mmGCVM_CONTEXT10_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT10_PAGE_TABLE_END_ADDR_HI32', - 'mmGCVM_CONTEXT10_PAGE_TABLE_END_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT10_PAGE_TABLE_END_ADDR_LO32', - 'mmGCVM_CONTEXT10_PAGE_TABLE_END_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT10_PAGE_TABLE_START_ADDR_HI32', - 'mmGCVM_CONTEXT10_PAGE_TABLE_START_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT10_PAGE_TABLE_START_ADDR_LO32', - 'mmGCVM_CONTEXT10_PAGE_TABLE_START_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT11_CNTL', 'mmGCVM_CONTEXT11_CNTL_BASE_IDX', - 'mmGCVM_CONTEXT11_PAGE_TABLE_BASE_ADDR_HI32', - 'mmGCVM_CONTEXT11_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT11_PAGE_TABLE_BASE_ADDR_LO32', - 'mmGCVM_CONTEXT11_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT11_PAGE_TABLE_END_ADDR_HI32', - 'mmGCVM_CONTEXT11_PAGE_TABLE_END_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT11_PAGE_TABLE_END_ADDR_LO32', - 'mmGCVM_CONTEXT11_PAGE_TABLE_END_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT11_PAGE_TABLE_START_ADDR_HI32', - 'mmGCVM_CONTEXT11_PAGE_TABLE_START_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT11_PAGE_TABLE_START_ADDR_LO32', - 'mmGCVM_CONTEXT11_PAGE_TABLE_START_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT12_CNTL', 'mmGCVM_CONTEXT12_CNTL_BASE_IDX', - 'mmGCVM_CONTEXT12_PAGE_TABLE_BASE_ADDR_HI32', - 'mmGCVM_CONTEXT12_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT12_PAGE_TABLE_BASE_ADDR_LO32', - 'mmGCVM_CONTEXT12_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT12_PAGE_TABLE_END_ADDR_HI32', - 'mmGCVM_CONTEXT12_PAGE_TABLE_END_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT12_PAGE_TABLE_END_ADDR_LO32', - 'mmGCVM_CONTEXT12_PAGE_TABLE_END_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT12_PAGE_TABLE_START_ADDR_HI32', - 'mmGCVM_CONTEXT12_PAGE_TABLE_START_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT12_PAGE_TABLE_START_ADDR_LO32', - 'mmGCVM_CONTEXT12_PAGE_TABLE_START_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT13_CNTL', 'mmGCVM_CONTEXT13_CNTL_BASE_IDX', - 'mmGCVM_CONTEXT13_PAGE_TABLE_BASE_ADDR_HI32', - 'mmGCVM_CONTEXT13_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT13_PAGE_TABLE_BASE_ADDR_LO32', - 'mmGCVM_CONTEXT13_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT13_PAGE_TABLE_END_ADDR_HI32', - 'mmGCVM_CONTEXT13_PAGE_TABLE_END_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT13_PAGE_TABLE_END_ADDR_LO32', - 'mmGCVM_CONTEXT13_PAGE_TABLE_END_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT13_PAGE_TABLE_START_ADDR_HI32', - 'mmGCVM_CONTEXT13_PAGE_TABLE_START_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT13_PAGE_TABLE_START_ADDR_LO32', - 'mmGCVM_CONTEXT13_PAGE_TABLE_START_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT14_CNTL', 'mmGCVM_CONTEXT14_CNTL_BASE_IDX', - 'mmGCVM_CONTEXT14_PAGE_TABLE_BASE_ADDR_HI32', - 'mmGCVM_CONTEXT14_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT14_PAGE_TABLE_BASE_ADDR_LO32', - 'mmGCVM_CONTEXT14_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT14_PAGE_TABLE_END_ADDR_HI32', - 'mmGCVM_CONTEXT14_PAGE_TABLE_END_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT14_PAGE_TABLE_END_ADDR_LO32', - 'mmGCVM_CONTEXT14_PAGE_TABLE_END_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT14_PAGE_TABLE_START_ADDR_HI32', - 'mmGCVM_CONTEXT14_PAGE_TABLE_START_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT14_PAGE_TABLE_START_ADDR_LO32', - 'mmGCVM_CONTEXT14_PAGE_TABLE_START_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT15_CNTL', 'mmGCVM_CONTEXT15_CNTL_BASE_IDX', - 'mmGCVM_CONTEXT15_PAGE_TABLE_BASE_ADDR_HI32', - 'mmGCVM_CONTEXT15_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT15_PAGE_TABLE_BASE_ADDR_LO32', - 'mmGCVM_CONTEXT15_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT15_PAGE_TABLE_END_ADDR_HI32', - 'mmGCVM_CONTEXT15_PAGE_TABLE_END_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT15_PAGE_TABLE_END_ADDR_LO32', - 'mmGCVM_CONTEXT15_PAGE_TABLE_END_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT15_PAGE_TABLE_START_ADDR_HI32', - 'mmGCVM_CONTEXT15_PAGE_TABLE_START_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT15_PAGE_TABLE_START_ADDR_LO32', - 'mmGCVM_CONTEXT15_PAGE_TABLE_START_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT1_CNTL', 'mmGCVM_CONTEXT1_CNTL_BASE_IDX', - 'mmGCVM_CONTEXT1_PAGE_TABLE_BASE_ADDR_HI32', - 'mmGCVM_CONTEXT1_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT1_PAGE_TABLE_BASE_ADDR_LO32', - 'mmGCVM_CONTEXT1_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT1_PAGE_TABLE_END_ADDR_HI32', - 'mmGCVM_CONTEXT1_PAGE_TABLE_END_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT1_PAGE_TABLE_END_ADDR_LO32', - 'mmGCVM_CONTEXT1_PAGE_TABLE_END_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT1_PAGE_TABLE_START_ADDR_HI32', - 'mmGCVM_CONTEXT1_PAGE_TABLE_START_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT1_PAGE_TABLE_START_ADDR_LO32', - 'mmGCVM_CONTEXT1_PAGE_TABLE_START_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT2_CNTL', 'mmGCVM_CONTEXT2_CNTL_BASE_IDX', - 'mmGCVM_CONTEXT2_PAGE_TABLE_BASE_ADDR_HI32', - 'mmGCVM_CONTEXT2_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT2_PAGE_TABLE_BASE_ADDR_LO32', - 'mmGCVM_CONTEXT2_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT2_PAGE_TABLE_END_ADDR_HI32', - 'mmGCVM_CONTEXT2_PAGE_TABLE_END_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT2_PAGE_TABLE_END_ADDR_LO32', - 'mmGCVM_CONTEXT2_PAGE_TABLE_END_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT2_PAGE_TABLE_START_ADDR_HI32', - 'mmGCVM_CONTEXT2_PAGE_TABLE_START_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT2_PAGE_TABLE_START_ADDR_LO32', - 'mmGCVM_CONTEXT2_PAGE_TABLE_START_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT3_CNTL', 'mmGCVM_CONTEXT3_CNTL_BASE_IDX', - 'mmGCVM_CONTEXT3_PAGE_TABLE_BASE_ADDR_HI32', - 'mmGCVM_CONTEXT3_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT3_PAGE_TABLE_BASE_ADDR_LO32', - 'mmGCVM_CONTEXT3_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT3_PAGE_TABLE_END_ADDR_HI32', - 'mmGCVM_CONTEXT3_PAGE_TABLE_END_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT3_PAGE_TABLE_END_ADDR_LO32', - 'mmGCVM_CONTEXT3_PAGE_TABLE_END_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT3_PAGE_TABLE_START_ADDR_HI32', - 'mmGCVM_CONTEXT3_PAGE_TABLE_START_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT3_PAGE_TABLE_START_ADDR_LO32', - 'mmGCVM_CONTEXT3_PAGE_TABLE_START_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT4_CNTL', 'mmGCVM_CONTEXT4_CNTL_BASE_IDX', - 'mmGCVM_CONTEXT4_PAGE_TABLE_BASE_ADDR_HI32', - 'mmGCVM_CONTEXT4_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT4_PAGE_TABLE_BASE_ADDR_LO32', - 'mmGCVM_CONTEXT4_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT4_PAGE_TABLE_END_ADDR_HI32', - 'mmGCVM_CONTEXT4_PAGE_TABLE_END_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT4_PAGE_TABLE_END_ADDR_LO32', - 'mmGCVM_CONTEXT4_PAGE_TABLE_END_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT4_PAGE_TABLE_START_ADDR_HI32', - 'mmGCVM_CONTEXT4_PAGE_TABLE_START_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT4_PAGE_TABLE_START_ADDR_LO32', - 'mmGCVM_CONTEXT4_PAGE_TABLE_START_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT5_CNTL', 'mmGCVM_CONTEXT5_CNTL_BASE_IDX', - 'mmGCVM_CONTEXT5_PAGE_TABLE_BASE_ADDR_HI32', - 'mmGCVM_CONTEXT5_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT5_PAGE_TABLE_BASE_ADDR_LO32', - 'mmGCVM_CONTEXT5_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT5_PAGE_TABLE_END_ADDR_HI32', - 'mmGCVM_CONTEXT5_PAGE_TABLE_END_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT5_PAGE_TABLE_END_ADDR_LO32', - 'mmGCVM_CONTEXT5_PAGE_TABLE_END_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT5_PAGE_TABLE_START_ADDR_HI32', - 'mmGCVM_CONTEXT5_PAGE_TABLE_START_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT5_PAGE_TABLE_START_ADDR_LO32', - 'mmGCVM_CONTEXT5_PAGE_TABLE_START_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT6_CNTL', 'mmGCVM_CONTEXT6_CNTL_BASE_IDX', - 'mmGCVM_CONTEXT6_PAGE_TABLE_BASE_ADDR_HI32', - 'mmGCVM_CONTEXT6_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT6_PAGE_TABLE_BASE_ADDR_LO32', - 'mmGCVM_CONTEXT6_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT6_PAGE_TABLE_END_ADDR_HI32', - 'mmGCVM_CONTEXT6_PAGE_TABLE_END_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT6_PAGE_TABLE_END_ADDR_LO32', - 'mmGCVM_CONTEXT6_PAGE_TABLE_END_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT6_PAGE_TABLE_START_ADDR_HI32', - 'mmGCVM_CONTEXT6_PAGE_TABLE_START_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT6_PAGE_TABLE_START_ADDR_LO32', - 'mmGCVM_CONTEXT6_PAGE_TABLE_START_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT7_CNTL', 'mmGCVM_CONTEXT7_CNTL_BASE_IDX', - 'mmGCVM_CONTEXT7_PAGE_TABLE_BASE_ADDR_HI32', - 'mmGCVM_CONTEXT7_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT7_PAGE_TABLE_BASE_ADDR_LO32', - 'mmGCVM_CONTEXT7_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT7_PAGE_TABLE_END_ADDR_HI32', - 'mmGCVM_CONTEXT7_PAGE_TABLE_END_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT7_PAGE_TABLE_END_ADDR_LO32', - 'mmGCVM_CONTEXT7_PAGE_TABLE_END_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT7_PAGE_TABLE_START_ADDR_HI32', - 'mmGCVM_CONTEXT7_PAGE_TABLE_START_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT7_PAGE_TABLE_START_ADDR_LO32', - 'mmGCVM_CONTEXT7_PAGE_TABLE_START_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT8_CNTL', 'mmGCVM_CONTEXT8_CNTL_BASE_IDX', - 'mmGCVM_CONTEXT8_PAGE_TABLE_BASE_ADDR_HI32', - 'mmGCVM_CONTEXT8_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT8_PAGE_TABLE_BASE_ADDR_LO32', - 'mmGCVM_CONTEXT8_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT8_PAGE_TABLE_END_ADDR_HI32', - 'mmGCVM_CONTEXT8_PAGE_TABLE_END_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT8_PAGE_TABLE_END_ADDR_LO32', - 'mmGCVM_CONTEXT8_PAGE_TABLE_END_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT8_PAGE_TABLE_START_ADDR_HI32', - 'mmGCVM_CONTEXT8_PAGE_TABLE_START_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT8_PAGE_TABLE_START_ADDR_LO32', - 'mmGCVM_CONTEXT8_PAGE_TABLE_START_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT9_CNTL', 'mmGCVM_CONTEXT9_CNTL_BASE_IDX', - 'mmGCVM_CONTEXT9_PAGE_TABLE_BASE_ADDR_HI32', - 'mmGCVM_CONTEXT9_PAGE_TABLE_BASE_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT9_PAGE_TABLE_BASE_ADDR_LO32', - 'mmGCVM_CONTEXT9_PAGE_TABLE_BASE_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT9_PAGE_TABLE_END_ADDR_HI32', - 'mmGCVM_CONTEXT9_PAGE_TABLE_END_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT9_PAGE_TABLE_END_ADDR_LO32', - 'mmGCVM_CONTEXT9_PAGE_TABLE_END_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXT9_PAGE_TABLE_START_ADDR_HI32', - 'mmGCVM_CONTEXT9_PAGE_TABLE_START_ADDR_HI32_BASE_IDX', - 'mmGCVM_CONTEXT9_PAGE_TABLE_START_ADDR_LO32', - 'mmGCVM_CONTEXT9_PAGE_TABLE_START_ADDR_LO32_BASE_IDX', - 'mmGCVM_CONTEXTS_DISABLE', 'mmGCVM_CONTEXTS_DISABLE_BASE_IDX', - 'mmGCVM_DEBUG', 'mmGCVM_DEBUG_BASE_IDX', - 'mmGCVM_DUMMY_PAGE_FAULT_ADDR_HI32', - 'mmGCVM_DUMMY_PAGE_FAULT_ADDR_HI32_BASE_IDX', - 'mmGCVM_DUMMY_PAGE_FAULT_ADDR_LO32', - 'mmGCVM_DUMMY_PAGE_FAULT_ADDR_LO32_BASE_IDX', - 'mmGCVM_DUMMY_PAGE_FAULT_CNTL', - 'mmGCVM_DUMMY_PAGE_FAULT_CNTL_BASE_IDX', 'mmGCVM_INVALIDATE_CNTL', - 'mmGCVM_INVALIDATE_CNTL_BASE_IDX', 'mmGCVM_INVALIDATE_ENG0_ACK', - 'mmGCVM_INVALIDATE_ENG0_ACK_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG0_ADDR_RANGE_HI32', - 'mmGCVM_INVALIDATE_ENG0_ADDR_RANGE_HI32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG0_ADDR_RANGE_LO32', - 'mmGCVM_INVALIDATE_ENG0_ADDR_RANGE_LO32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG0_REQ', - 'mmGCVM_INVALIDATE_ENG0_REQ_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG0_SEM', - 'mmGCVM_INVALIDATE_ENG0_SEM_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG10_ACK', - 'mmGCVM_INVALIDATE_ENG10_ACK_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG10_ADDR_RANGE_HI32', - 'mmGCVM_INVALIDATE_ENG10_ADDR_RANGE_HI32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG10_ADDR_RANGE_LO32', - 'mmGCVM_INVALIDATE_ENG10_ADDR_RANGE_LO32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG10_REQ', - 'mmGCVM_INVALIDATE_ENG10_REQ_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG10_SEM', - 'mmGCVM_INVALIDATE_ENG10_SEM_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG11_ACK', - 'mmGCVM_INVALIDATE_ENG11_ACK_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG11_ADDR_RANGE_HI32', - 'mmGCVM_INVALIDATE_ENG11_ADDR_RANGE_HI32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG11_ADDR_RANGE_LO32', - 'mmGCVM_INVALIDATE_ENG11_ADDR_RANGE_LO32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG11_REQ', - 'mmGCVM_INVALIDATE_ENG11_REQ_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG11_SEM', - 'mmGCVM_INVALIDATE_ENG11_SEM_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG12_ACK', - 'mmGCVM_INVALIDATE_ENG12_ACK_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG12_ADDR_RANGE_HI32', - 'mmGCVM_INVALIDATE_ENG12_ADDR_RANGE_HI32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG12_ADDR_RANGE_LO32', - 'mmGCVM_INVALIDATE_ENG12_ADDR_RANGE_LO32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG12_REQ', - 'mmGCVM_INVALIDATE_ENG12_REQ_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG12_SEM', - 'mmGCVM_INVALIDATE_ENG12_SEM_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG13_ACK', - 'mmGCVM_INVALIDATE_ENG13_ACK_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG13_ADDR_RANGE_HI32', - 'mmGCVM_INVALIDATE_ENG13_ADDR_RANGE_HI32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG13_ADDR_RANGE_LO32', - 'mmGCVM_INVALIDATE_ENG13_ADDR_RANGE_LO32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG13_REQ', - 'mmGCVM_INVALIDATE_ENG13_REQ_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG13_SEM', - 'mmGCVM_INVALIDATE_ENG13_SEM_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG14_ACK', - 'mmGCVM_INVALIDATE_ENG14_ACK_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG14_ADDR_RANGE_HI32', - 'mmGCVM_INVALIDATE_ENG14_ADDR_RANGE_HI32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG14_ADDR_RANGE_LO32', - 'mmGCVM_INVALIDATE_ENG14_ADDR_RANGE_LO32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG14_REQ', - 'mmGCVM_INVALIDATE_ENG14_REQ_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG14_SEM', - 'mmGCVM_INVALIDATE_ENG14_SEM_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG15_ACK', - 'mmGCVM_INVALIDATE_ENG15_ACK_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG15_ADDR_RANGE_HI32', - 'mmGCVM_INVALIDATE_ENG15_ADDR_RANGE_HI32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG15_ADDR_RANGE_LO32', - 'mmGCVM_INVALIDATE_ENG15_ADDR_RANGE_LO32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG15_REQ', - 'mmGCVM_INVALIDATE_ENG15_REQ_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG15_SEM', - 'mmGCVM_INVALIDATE_ENG15_SEM_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG16_ACK', - 'mmGCVM_INVALIDATE_ENG16_ACK_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG16_ADDR_RANGE_HI32', - 'mmGCVM_INVALIDATE_ENG16_ADDR_RANGE_HI32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG16_ADDR_RANGE_LO32', - 'mmGCVM_INVALIDATE_ENG16_ADDR_RANGE_LO32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG16_REQ', - 'mmGCVM_INVALIDATE_ENG16_REQ_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG16_SEM', - 'mmGCVM_INVALIDATE_ENG16_SEM_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG17_ACK', - 'mmGCVM_INVALIDATE_ENG17_ACK_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG17_ADDR_RANGE_HI32', - 'mmGCVM_INVALIDATE_ENG17_ADDR_RANGE_HI32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG17_ADDR_RANGE_LO32', - 'mmGCVM_INVALIDATE_ENG17_ADDR_RANGE_LO32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG17_REQ', - 'mmGCVM_INVALIDATE_ENG17_REQ_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG17_SEM', - 'mmGCVM_INVALIDATE_ENG17_SEM_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG1_ACK', - 'mmGCVM_INVALIDATE_ENG1_ACK_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG1_ADDR_RANGE_HI32', - 'mmGCVM_INVALIDATE_ENG1_ADDR_RANGE_HI32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG1_ADDR_RANGE_LO32', - 'mmGCVM_INVALIDATE_ENG1_ADDR_RANGE_LO32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG1_REQ', - 'mmGCVM_INVALIDATE_ENG1_REQ_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG1_SEM', - 'mmGCVM_INVALIDATE_ENG1_SEM_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG2_ACK', - 'mmGCVM_INVALIDATE_ENG2_ACK_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG2_ADDR_RANGE_HI32', - 'mmGCVM_INVALIDATE_ENG2_ADDR_RANGE_HI32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG2_ADDR_RANGE_LO32', - 'mmGCVM_INVALIDATE_ENG2_ADDR_RANGE_LO32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG2_REQ', - 'mmGCVM_INVALIDATE_ENG2_REQ_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG2_SEM', - 'mmGCVM_INVALIDATE_ENG2_SEM_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG3_ACK', - 'mmGCVM_INVALIDATE_ENG3_ACK_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG3_ADDR_RANGE_HI32', - 'mmGCVM_INVALIDATE_ENG3_ADDR_RANGE_HI32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG3_ADDR_RANGE_LO32', - 'mmGCVM_INVALIDATE_ENG3_ADDR_RANGE_LO32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG3_REQ', - 'mmGCVM_INVALIDATE_ENG3_REQ_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG3_SEM', - 'mmGCVM_INVALIDATE_ENG3_SEM_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG4_ACK', - 'mmGCVM_INVALIDATE_ENG4_ACK_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG4_ADDR_RANGE_HI32', - 'mmGCVM_INVALIDATE_ENG4_ADDR_RANGE_HI32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG4_ADDR_RANGE_LO32', - 'mmGCVM_INVALIDATE_ENG4_ADDR_RANGE_LO32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG4_REQ', - 'mmGCVM_INVALIDATE_ENG4_REQ_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG4_SEM', - 'mmGCVM_INVALIDATE_ENG4_SEM_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG5_ACK', - 'mmGCVM_INVALIDATE_ENG5_ACK_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG5_ADDR_RANGE_HI32', - 'mmGCVM_INVALIDATE_ENG5_ADDR_RANGE_HI32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG5_ADDR_RANGE_LO32', - 'mmGCVM_INVALIDATE_ENG5_ADDR_RANGE_LO32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG5_REQ', - 'mmGCVM_INVALIDATE_ENG5_REQ_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG5_SEM', - 'mmGCVM_INVALIDATE_ENG5_SEM_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG6_ACK', - 'mmGCVM_INVALIDATE_ENG6_ACK_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG6_ADDR_RANGE_HI32', - 'mmGCVM_INVALIDATE_ENG6_ADDR_RANGE_HI32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG6_ADDR_RANGE_LO32', - 'mmGCVM_INVALIDATE_ENG6_ADDR_RANGE_LO32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG6_REQ', - 'mmGCVM_INVALIDATE_ENG6_REQ_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG6_SEM', - 'mmGCVM_INVALIDATE_ENG6_SEM_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG7_ACK', - 'mmGCVM_INVALIDATE_ENG7_ACK_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG7_ADDR_RANGE_HI32', - 'mmGCVM_INVALIDATE_ENG7_ADDR_RANGE_HI32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG7_ADDR_RANGE_LO32', - 'mmGCVM_INVALIDATE_ENG7_ADDR_RANGE_LO32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG7_REQ', - 'mmGCVM_INVALIDATE_ENG7_REQ_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG7_SEM', - 'mmGCVM_INVALIDATE_ENG7_SEM_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG8_ACK', - 'mmGCVM_INVALIDATE_ENG8_ACK_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG8_ADDR_RANGE_HI32', - 'mmGCVM_INVALIDATE_ENG8_ADDR_RANGE_HI32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG8_ADDR_RANGE_LO32', - 'mmGCVM_INVALIDATE_ENG8_ADDR_RANGE_LO32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG8_REQ', - 'mmGCVM_INVALIDATE_ENG8_REQ_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG8_SEM', - 'mmGCVM_INVALIDATE_ENG8_SEM_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG9_ACK', - 'mmGCVM_INVALIDATE_ENG9_ACK_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG9_ADDR_RANGE_HI32', - 'mmGCVM_INVALIDATE_ENG9_ADDR_RANGE_HI32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG9_ADDR_RANGE_LO32', - 'mmGCVM_INVALIDATE_ENG9_ADDR_RANGE_LO32_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG9_REQ', - 'mmGCVM_INVALIDATE_ENG9_REQ_BASE_IDX', - 'mmGCVM_INVALIDATE_ENG9_SEM', - 'mmGCVM_INVALIDATE_ENG9_SEM_BASE_IDX', - 'mmGCVM_IOMMU_CONTROL_REGISTER', - 'mmGCVM_IOMMU_CONTROL_REGISTER_BASE_IDX', - 'mmGCVM_IOMMU_GPU_HOST_TRANSLATION_ENABLE', - 'mmGCVM_IOMMU_GPU_HOST_TRANSLATION_ENABLE_BASE_IDX', - 'mmGCVM_IOMMU_MMIO_CNTRL_1', 'mmGCVM_IOMMU_MMIO_CNTRL_1_BASE_IDX', - 'mmGCVM_IOMMU_PERFORMANCE_OPTIMIZATION_CONTROL_REGISTER', - 'mmGCVM_IOMMU_PERFORMANCE_OPTIMIZATION_CONTROL_REGISTER_BASE_IDX', - 'mmGCVM_L2_BANK_SELECT_RESERVED_CID', - 'mmGCVM_L2_BANK_SELECT_RESERVED_CID2', - 'mmGCVM_L2_BANK_SELECT_RESERVED_CID2_BASE_IDX', - 'mmGCVM_L2_BANK_SELECT_RESERVED_CID_BASE_IDX', - 'mmGCVM_L2_CACHE_PARITY_CNTL', - 'mmGCVM_L2_CACHE_PARITY_CNTL_BASE_IDX', 'mmGCVM_L2_CNTL', - 'mmGCVM_L2_CNTL2', 'mmGCVM_L2_CNTL2_BASE_IDX', 'mmGCVM_L2_CNTL3', - 'mmGCVM_L2_CNTL3_BASE_IDX', 'mmGCVM_L2_CNTL4', - 'mmGCVM_L2_CNTL4_BASE_IDX', 'mmGCVM_L2_CNTL5', - 'mmGCVM_L2_CNTL5_BASE_IDX', 'mmGCVM_L2_CNTL_BASE_IDX', - 'mmGCVM_L2_CONTEXT0_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES', - 'mmGCVM_L2_CONTEXT0_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX', - 'mmGCVM_L2_CONTEXT10_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES', - 'mmGCVM_L2_CONTEXT10_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX', - 'mmGCVM_L2_CONTEXT11_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES', - 'mmGCVM_L2_CONTEXT11_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX', - 'mmGCVM_L2_CONTEXT12_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES', - 'mmGCVM_L2_CONTEXT12_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX', - 'mmGCVM_L2_CONTEXT13_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES', - 'mmGCVM_L2_CONTEXT13_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX', - 'mmGCVM_L2_CONTEXT14_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES', - 'mmGCVM_L2_CONTEXT14_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX', - 'mmGCVM_L2_CONTEXT15_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES', - 'mmGCVM_L2_CONTEXT15_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX', - 'mmGCVM_L2_CONTEXT1_IDENTITY_APERTURE_HIGH_ADDR_HI32', - 'mmGCVM_L2_CONTEXT1_IDENTITY_APERTURE_HIGH_ADDR_HI32_BASE_IDX', - 'mmGCVM_L2_CONTEXT1_IDENTITY_APERTURE_HIGH_ADDR_LO32', - 'mmGCVM_L2_CONTEXT1_IDENTITY_APERTURE_HIGH_ADDR_LO32_BASE_IDX', - 'mmGCVM_L2_CONTEXT1_IDENTITY_APERTURE_LOW_ADDR_HI32', - 'mmGCVM_L2_CONTEXT1_IDENTITY_APERTURE_LOW_ADDR_HI32_BASE_IDX', - 'mmGCVM_L2_CONTEXT1_IDENTITY_APERTURE_LOW_ADDR_LO32', - 'mmGCVM_L2_CONTEXT1_IDENTITY_APERTURE_LOW_ADDR_LO32_BASE_IDX', - 'mmGCVM_L2_CONTEXT1_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES', - 'mmGCVM_L2_CONTEXT1_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX', - 'mmGCVM_L2_CONTEXT2_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES', - 'mmGCVM_L2_CONTEXT2_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX', - 'mmGCVM_L2_CONTEXT3_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES', - 'mmGCVM_L2_CONTEXT3_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX', - 'mmGCVM_L2_CONTEXT4_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES', - 'mmGCVM_L2_CONTEXT4_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX', - 'mmGCVM_L2_CONTEXT5_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES', - 'mmGCVM_L2_CONTEXT5_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX', - 'mmGCVM_L2_CONTEXT6_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES', - 'mmGCVM_L2_CONTEXT6_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX', - 'mmGCVM_L2_CONTEXT7_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES', - 'mmGCVM_L2_CONTEXT7_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX', - 'mmGCVM_L2_CONTEXT8_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES', - 'mmGCVM_L2_CONTEXT8_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX', - 'mmGCVM_L2_CONTEXT9_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES', - 'mmGCVM_L2_CONTEXT9_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX', - 'mmGCVM_L2_CONTEXT_IDENTITY_PHYSICAL_OFFSET_HI32', - 'mmGCVM_L2_CONTEXT_IDENTITY_PHYSICAL_OFFSET_HI32_BASE_IDX', - 'mmGCVM_L2_CONTEXT_IDENTITY_PHYSICAL_OFFSET_LO32', - 'mmGCVM_L2_CONTEXT_IDENTITY_PHYSICAL_OFFSET_LO32_BASE_IDX', - 'mmGCVM_L2_GCR_CNTL', 'mmGCVM_L2_GCR_CNTL_BASE_IDX', - 'mmGCVM_L2_ID_CTRL0', 'mmGCVM_L2_ID_CTRL0_BASE_IDX', - 'mmGCVM_L2_ID_CTRL1', 'mmGCVM_L2_ID_CTRL1_BASE_IDX', - 'mmGCVM_L2_ID_CTRL2', 'mmGCVM_L2_ID_CTRL2_BASE_IDX', - 'mmGCVM_L2_ID_CTRL3', 'mmGCVM_L2_ID_CTRL3_BASE_IDX', - 'mmGCVM_L2_ID_CTRL4', 'mmGCVM_L2_ID_CTRL4_BASE_IDX', - 'mmGCVM_L2_ID_CTRL5', 'mmGCVM_L2_ID_CTRL5_BASE_IDX', - 'mmGCVM_L2_ID_CTRL6', 'mmGCVM_L2_ID_CTRL6_BASE_IDX', - 'mmGCVM_L2_ID_CTRL7', 'mmGCVM_L2_ID_CTRL7_BASE_IDX', - 'mmGCVM_L2_ID_CTRL_HI', 'mmGCVM_L2_ID_CTRL_HI_BASE_IDX', - 'mmGCVM_L2_ID_STATUS', 'mmGCVM_L2_ID_STATUS_BASE_IDX', - 'mmGCVM_L2_IH_LOG_CNTL', 'mmGCVM_L2_IH_LOG_CNTL_BASE_IDX', - 'mmGCVM_L2_MM_GROUP_RT_CLASSES', - 'mmGCVM_L2_MM_GROUP_RT_CLASSES_BASE_IDX', - 'mmGCVM_L2_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES', - 'mmGCVM_L2_PER_PFVF_PTE_CACHE_FRAGMENT_SIZES_BASE_IDX', - 'mmGCVM_L2_PROTECTION_FAULT_ADDR_HI32', - 'mmGCVM_L2_PROTECTION_FAULT_ADDR_HI32_BASE_IDX', - 'mmGCVM_L2_PROTECTION_FAULT_ADDR_LO32', - 'mmGCVM_L2_PROTECTION_FAULT_ADDR_LO32_BASE_IDX', - 'mmGCVM_L2_PROTECTION_FAULT_CNTL', - 'mmGCVM_L2_PROTECTION_FAULT_CNTL2', - 'mmGCVM_L2_PROTECTION_FAULT_CNTL2_BASE_IDX', - 'mmGCVM_L2_PROTECTION_FAULT_CNTL_BASE_IDX', - 'mmGCVM_L2_PROTECTION_FAULT_DEFAULT_ADDR_HI32', - 'mmGCVM_L2_PROTECTION_FAULT_DEFAULT_ADDR_HI32_BASE_IDX', - 'mmGCVM_L2_PROTECTION_FAULT_DEFAULT_ADDR_LO32', - 'mmGCVM_L2_PROTECTION_FAULT_DEFAULT_ADDR_LO32_BASE_IDX', - 'mmGCVM_L2_PROTECTION_FAULT_MM_CNTL3', - 'mmGCVM_L2_PROTECTION_FAULT_MM_CNTL3_BASE_IDX', - 'mmGCVM_L2_PROTECTION_FAULT_MM_CNTL4', - 'mmGCVM_L2_PROTECTION_FAULT_MM_CNTL4_BASE_IDX', - 'mmGCVM_L2_PROTECTION_FAULT_STATUS', - 'mmGCVM_L2_PROTECTION_FAULT_STATUS_BASE_IDX', - 'mmGCVM_L2_PTE_CACHE_DUMP_CNTL', - 'mmGCVM_L2_PTE_CACHE_DUMP_CNTL_BASE_IDX', - 'mmGCVM_L2_PTE_CACHE_DUMP_READ', - 'mmGCVM_L2_PTE_CACHE_DUMP_READ_BASE_IDX', 'mmGCVM_L2_STATUS', - 'mmGCVM_L2_STATUS_BASE_IDX', 'mmGC_CAC_AGGR_LOWER', - 'mmGC_CAC_AGGR_LOWER_BASE_IDX', 'mmGC_CAC_AGGR_UPPER', - 'mmGC_CAC_AGGR_UPPER_BASE_IDX', 'mmGC_CAC_CGTT_CLK_CTRL', - 'mmGC_CAC_CGTT_CLK_CTRL_BASE_IDX', 'mmGC_CAC_CTRL_1', - 'mmGC_CAC_CTRL_1_BASE_IDX', 'mmGC_CAC_CTRL_2', - 'mmGC_CAC_CTRL_2_BASE_IDX', 'mmGC_CAC_IND_DATA', - 'mmGC_CAC_IND_DATA_BASE_IDX', 'mmGC_CAC_IND_INDEX', - 'mmGC_CAC_IND_INDEX_BASE_IDX', 'mmGC_CAC_SOFT_CTRL', - 'mmGC_CAC_SOFT_CTRL_BASE_IDX', 'mmGC_EDC_CTRL', - 'mmGC_EDC_CTRL_BASE_IDX', 'mmGC_EDC_OVERFLOW', - 'mmGC_EDC_OVERFLOW_BASE_IDX', 'mmGC_EDC_ROLLING_POWER_DELTA', - 'mmGC_EDC_ROLLING_POWER_DELTA_BASE_IDX', 'mmGC_EDC_STATUS', - 'mmGC_EDC_STATUS_BASE_IDX', 'mmGC_EDC_STRETCH_CTRL', - 'mmGC_EDC_STRETCH_CTRL_BASE_IDX', 'mmGC_EDC_STRETCH_THRESHOLD', - 'mmGC_EDC_STRETCH_THRESHOLD_BASE_IDX', 'mmGC_EDC_THRESHOLD', - 'mmGC_EDC_THRESHOLD_BASE_IDX', 'mmGC_IH_COOKIE_0_PTR', - 'mmGC_IH_COOKIE_0_PTR_BASE_IDX', 'mmGC_THROTTLE_CTRL', - 'mmGC_THROTTLE_CTRL1', 'mmGC_THROTTLE_CTRL1_BASE_IDX', - 'mmGC_THROTTLE_CTRL_BASE_IDX', 'mmGC_THROTTLE_STATUS', - 'mmGC_THROTTLE_STATUS_BASE_IDX', 'mmGC_USER_PRIM_CONFIG', - 'mmGC_USER_PRIM_CONFIG_BASE_IDX', 'mmGC_USER_RB_BACKEND_DISABLE', - 'mmGC_USER_RB_BACKEND_DISABLE_BASE_IDX', - 'mmGC_USER_RB_REDUNDANCY', 'mmGC_USER_RB_REDUNDANCY_BASE_IDX', - 'mmGC_USER_RMI_REDUNDANCY', 'mmGC_USER_RMI_REDUNDANCY_BASE_IDX', - 'mmGC_USER_SA_UNIT_DISABLE', 'mmGC_USER_SA_UNIT_DISABLE_BASE_IDX', - 'mmGC_USER_SHADER_ARRAY_CONFIG', - 'mmGC_USER_SHADER_ARRAY_CONFIG_BASE_IDX', - 'mmGC_USER_SHADER_RATE_CONFIG', - 'mmGC_USER_SHADER_RATE_CONFIG_BASE_IDX', 'mmGDS_ATOM_BASE', - 'mmGDS_ATOM_BASE_BASE_IDX', 'mmGDS_ATOM_CNTL', - 'mmGDS_ATOM_CNTL_BASE_IDX', 'mmGDS_ATOM_COMPLETE', - 'mmGDS_ATOM_COMPLETE_BASE_IDX', 'mmGDS_ATOM_DST', - 'mmGDS_ATOM_DST_BASE_IDX', 'mmGDS_ATOM_OFFSET0', - 'mmGDS_ATOM_OFFSET0_BASE_IDX', 'mmGDS_ATOM_OFFSET1', - 'mmGDS_ATOM_OFFSET1_BASE_IDX', 'mmGDS_ATOM_OP', - 'mmGDS_ATOM_OP_BASE_IDX', 'mmGDS_ATOM_READ0', - 'mmGDS_ATOM_READ0_BASE_IDX', 'mmGDS_ATOM_READ0_U', - 'mmGDS_ATOM_READ0_U_BASE_IDX', 'mmGDS_ATOM_READ1', - 'mmGDS_ATOM_READ1_BASE_IDX', 'mmGDS_ATOM_READ1_U', - 'mmGDS_ATOM_READ1_U_BASE_IDX', 'mmGDS_ATOM_SIZE', - 'mmGDS_ATOM_SIZE_BASE_IDX', 'mmGDS_ATOM_SRC0', - 'mmGDS_ATOM_SRC0_BASE_IDX', 'mmGDS_ATOM_SRC0_U', - 'mmGDS_ATOM_SRC0_U_BASE_IDX', 'mmGDS_ATOM_SRC1', - 'mmGDS_ATOM_SRC1_BASE_IDX', 'mmGDS_ATOM_SRC1_U', - 'mmGDS_ATOM_SRC1_U_BASE_IDX', 'mmGDS_CNTL_STATUS', - 'mmGDS_CNTL_STATUS_BASE_IDX', 'mmGDS_COMPUTE_MAX_WAVE_ID', - 'mmGDS_COMPUTE_MAX_WAVE_ID_BASE_IDX', 'mmGDS_CONFIG', - 'mmGDS_CONFIG_BASE_IDX', 'mmGDS_CS_CTXSW_CNT0', - 'mmGDS_CS_CTXSW_CNT0_BASE_IDX', 'mmGDS_CS_CTXSW_CNT1', - 'mmGDS_CS_CTXSW_CNT1_BASE_IDX', 'mmGDS_CS_CTXSW_CNT2', - 'mmGDS_CS_CTXSW_CNT2_BASE_IDX', 'mmGDS_CS_CTXSW_CNT3', - 'mmGDS_CS_CTXSW_CNT3_BASE_IDX', 'mmGDS_CS_CTXSW_STATUS', - 'mmGDS_CS_CTXSW_STATUS_BASE_IDX', 'mmGDS_DSM_CNTL', - 'mmGDS_DSM_CNTL2', 'mmGDS_DSM_CNTL2_BASE_IDX', - 'mmGDS_DSM_CNTL_BASE_IDX', 'mmGDS_EDC_CNT', - 'mmGDS_EDC_CNT_BASE_IDX', 'mmGDS_EDC_GRBM_CNT', - 'mmGDS_EDC_GRBM_CNT_BASE_IDX', 'mmGDS_EDC_OA_DED', - 'mmGDS_EDC_OA_DED_BASE_IDX', 'mmGDS_EDC_OA_PHY_CNT', - 'mmGDS_EDC_OA_PHY_CNT_BASE_IDX', 'mmGDS_EDC_OA_PIPE_CNT', - 'mmGDS_EDC_OA_PIPE_CNT_BASE_IDX', 'mmGDS_ENHANCE', - 'mmGDS_ENHANCE2', 'mmGDS_ENHANCE2_BASE_IDX', - 'mmGDS_ENHANCE_BASE_IDX', 'mmGDS_GFX_CTXSW_STATUS', - 'mmGDS_GFX_CTXSW_STATUS_BASE_IDX', 'mmGDS_GS_CTXSW_CNT0', - 'mmGDS_GS_CTXSW_CNT0_BASE_IDX', 'mmGDS_GS_CTXSW_CNT1', - 'mmGDS_GS_CTXSW_CNT1_BASE_IDX', 'mmGDS_GS_CTXSW_CNT2', - 'mmGDS_GS_CTXSW_CNT2_BASE_IDX', 'mmGDS_GS_CTXSW_CNT3', - 'mmGDS_GS_CTXSW_CNT3_BASE_IDX', 'mmGDS_GWS_RESET0', - 'mmGDS_GWS_RESET0_BASE_IDX', 'mmGDS_GWS_RESET1', - 'mmGDS_GWS_RESET1_BASE_IDX', 'mmGDS_GWS_RESOURCE', - 'mmGDS_GWS_RESOURCE_BASE_IDX', 'mmGDS_GWS_RESOURCE_CNT', - 'mmGDS_GWS_RESOURCE_CNTL', 'mmGDS_GWS_RESOURCE_CNTL_BASE_IDX', - 'mmGDS_GWS_RESOURCE_CNT_BASE_IDX', 'mmGDS_GWS_RESOURCE_RESET', - 'mmGDS_GWS_RESOURCE_RESET_BASE_IDX', 'mmGDS_GWS_VMID0', - 'mmGDS_GWS_VMID0_BASE_IDX', 'mmGDS_GWS_VMID1', 'mmGDS_GWS_VMID10', - 'mmGDS_GWS_VMID10_BASE_IDX', 'mmGDS_GWS_VMID11', - 'mmGDS_GWS_VMID11_BASE_IDX', 'mmGDS_GWS_VMID12', - 'mmGDS_GWS_VMID12_BASE_IDX', 'mmGDS_GWS_VMID13', - 'mmGDS_GWS_VMID13_BASE_IDX', 'mmGDS_GWS_VMID14', - 'mmGDS_GWS_VMID14_BASE_IDX', 'mmGDS_GWS_VMID15', - 'mmGDS_GWS_VMID15_BASE_IDX', 'mmGDS_GWS_VMID1_BASE_IDX', - 'mmGDS_GWS_VMID2', 'mmGDS_GWS_VMID2_BASE_IDX', 'mmGDS_GWS_VMID3', - 'mmGDS_GWS_VMID3_BASE_IDX', 'mmGDS_GWS_VMID4', - 'mmGDS_GWS_VMID4_BASE_IDX', 'mmGDS_GWS_VMID5', - 'mmGDS_GWS_VMID5_BASE_IDX', 'mmGDS_GWS_VMID6', - 'mmGDS_GWS_VMID6_BASE_IDX', 'mmGDS_GWS_VMID7', - 'mmGDS_GWS_VMID7_BASE_IDX', 'mmGDS_GWS_VMID8', - 'mmGDS_GWS_VMID8_BASE_IDX', 'mmGDS_GWS_VMID9', - 'mmGDS_GWS_VMID9_BASE_IDX', 'mmGDS_MEMORY_CLEAN', - 'mmGDS_MEMORY_CLEAN_BASE_IDX', 'mmGDS_OA_ADDRESS', - 'mmGDS_OA_ADDRESS_BASE_IDX', 'mmGDS_OA_CGPG_RESTORE', - 'mmGDS_OA_CGPG_RESTORE_BASE_IDX', 'mmGDS_OA_CNTL', - 'mmGDS_OA_CNTL_BASE_IDX', 'mmGDS_OA_COUNTER', - 'mmGDS_OA_COUNTER_BASE_IDX', 'mmGDS_OA_INCDEC', - 'mmGDS_OA_INCDEC_BASE_IDX', 'mmGDS_OA_RESET', - 'mmGDS_OA_RESET_BASE_IDX', 'mmGDS_OA_RESET_MASK', - 'mmGDS_OA_RESET_MASK_BASE_IDX', 'mmGDS_OA_RING_SIZE', - 'mmGDS_OA_RING_SIZE_BASE_IDX', 'mmGDS_OA_VMID0', - 'mmGDS_OA_VMID0_BASE_IDX', 'mmGDS_OA_VMID1', 'mmGDS_OA_VMID10', - 'mmGDS_OA_VMID10_BASE_IDX', 'mmGDS_OA_VMID11', - 'mmGDS_OA_VMID11_BASE_IDX', 'mmGDS_OA_VMID12', - 'mmGDS_OA_VMID12_BASE_IDX', 'mmGDS_OA_VMID13', - 'mmGDS_OA_VMID13_BASE_IDX', 'mmGDS_OA_VMID14', - 'mmGDS_OA_VMID14_BASE_IDX', 'mmGDS_OA_VMID15', - 'mmGDS_OA_VMID15_BASE_IDX', 'mmGDS_OA_VMID1_BASE_IDX', - 'mmGDS_OA_VMID2', 'mmGDS_OA_VMID2_BASE_IDX', 'mmGDS_OA_VMID3', - 'mmGDS_OA_VMID3_BASE_IDX', 'mmGDS_OA_VMID4', - 'mmGDS_OA_VMID4_BASE_IDX', 'mmGDS_OA_VMID5', - 'mmGDS_OA_VMID5_BASE_IDX', 'mmGDS_OA_VMID6', - 'mmGDS_OA_VMID6_BASE_IDX', 'mmGDS_OA_VMID7', - 'mmGDS_OA_VMID7_BASE_IDX', 'mmGDS_OA_VMID8', - 'mmGDS_OA_VMID8_BASE_IDX', 'mmGDS_OA_VMID9', - 'mmGDS_OA_VMID9_BASE_IDX', 'mmGDS_PERFCOUNTER0_HI', - 'mmGDS_PERFCOUNTER0_HI_BASE_IDX', 'mmGDS_PERFCOUNTER0_LO', - 'mmGDS_PERFCOUNTER0_LO_BASE_IDX', 'mmGDS_PERFCOUNTER0_SELECT', - 'mmGDS_PERFCOUNTER0_SELECT1', - 'mmGDS_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmGDS_PERFCOUNTER0_SELECT_BASE_IDX', 'mmGDS_PERFCOUNTER1_HI', - 'mmGDS_PERFCOUNTER1_HI_BASE_IDX', 'mmGDS_PERFCOUNTER1_LO', - 'mmGDS_PERFCOUNTER1_LO_BASE_IDX', 'mmGDS_PERFCOUNTER1_SELECT', - 'mmGDS_PERFCOUNTER1_SELECT1', - 'mmGDS_PERFCOUNTER1_SELECT1_BASE_IDX', - 'mmGDS_PERFCOUNTER1_SELECT_BASE_IDX', 'mmGDS_PERFCOUNTER2_HI', - 'mmGDS_PERFCOUNTER2_HI_BASE_IDX', 'mmGDS_PERFCOUNTER2_LO', - 'mmGDS_PERFCOUNTER2_LO_BASE_IDX', 'mmGDS_PERFCOUNTER2_SELECT', - 'mmGDS_PERFCOUNTER2_SELECT1', - 'mmGDS_PERFCOUNTER2_SELECT1_BASE_IDX', - 'mmGDS_PERFCOUNTER2_SELECT_BASE_IDX', 'mmGDS_PERFCOUNTER3_HI', - 'mmGDS_PERFCOUNTER3_HI_BASE_IDX', 'mmGDS_PERFCOUNTER3_LO', - 'mmGDS_PERFCOUNTER3_LO_BASE_IDX', 'mmGDS_PERFCOUNTER3_SELECT', - 'mmGDS_PERFCOUNTER3_SELECT1', - 'mmGDS_PERFCOUNTER3_SELECT1_BASE_IDX', - 'mmGDS_PERFCOUNTER3_SELECT_BASE_IDX', 'mmGDS_PROTECTION_FAULT', - 'mmGDS_PROTECTION_FAULT_BASE_IDX', 'mmGDS_PS_CTXSW_CNT0', - 'mmGDS_PS_CTXSW_CNT0_BASE_IDX', 'mmGDS_PS_CTXSW_CNT1', - 'mmGDS_PS_CTXSW_CNT1_BASE_IDX', 'mmGDS_PS_CTXSW_CNT2', - 'mmGDS_PS_CTXSW_CNT2_BASE_IDX', 'mmGDS_PS_CTXSW_CNT3', - 'mmGDS_PS_CTXSW_CNT3_BASE_IDX', 'mmGDS_PS_CTXSW_IDX', - 'mmGDS_PS_CTXSW_IDX_BASE_IDX', 'mmGDS_RD_ADDR', - 'mmGDS_RD_ADDR_BASE_IDX', 'mmGDS_RD_BURST_ADDR', - 'mmGDS_RD_BURST_ADDR_BASE_IDX', 'mmGDS_RD_BURST_COUNT', - 'mmGDS_RD_BURST_COUNT_BASE_IDX', 'mmGDS_RD_BURST_DATA', - 'mmGDS_RD_BURST_DATA_BASE_IDX', 'mmGDS_RD_DATA', - 'mmGDS_RD_DATA_BASE_IDX', 'mmGDS_VMID0_BASE', - 'mmGDS_VMID0_BASE_BASE_IDX', 'mmGDS_VMID0_SIZE', - 'mmGDS_VMID0_SIZE_BASE_IDX', 'mmGDS_VMID10_BASE', - 'mmGDS_VMID10_BASE_BASE_IDX', 'mmGDS_VMID10_SIZE', - 'mmGDS_VMID10_SIZE_BASE_IDX', 'mmGDS_VMID11_BASE', - 'mmGDS_VMID11_BASE_BASE_IDX', 'mmGDS_VMID11_SIZE', - 'mmGDS_VMID11_SIZE_BASE_IDX', 'mmGDS_VMID12_BASE', - 'mmGDS_VMID12_BASE_BASE_IDX', 'mmGDS_VMID12_SIZE', - 'mmGDS_VMID12_SIZE_BASE_IDX', 'mmGDS_VMID13_BASE', - 'mmGDS_VMID13_BASE_BASE_IDX', 'mmGDS_VMID13_SIZE', - 'mmGDS_VMID13_SIZE_BASE_IDX', 'mmGDS_VMID14_BASE', - 'mmGDS_VMID14_BASE_BASE_IDX', 'mmGDS_VMID14_SIZE', - 'mmGDS_VMID14_SIZE_BASE_IDX', 'mmGDS_VMID15_BASE', - 'mmGDS_VMID15_BASE_BASE_IDX', 'mmGDS_VMID15_SIZE', - 'mmGDS_VMID15_SIZE_BASE_IDX', 'mmGDS_VMID1_BASE', - 'mmGDS_VMID1_BASE_BASE_IDX', 'mmGDS_VMID1_SIZE', - 'mmGDS_VMID1_SIZE_BASE_IDX', 'mmGDS_VMID2_BASE', - 'mmGDS_VMID2_BASE_BASE_IDX', 'mmGDS_VMID2_SIZE', - 'mmGDS_VMID2_SIZE_BASE_IDX', 'mmGDS_VMID3_BASE', - 'mmGDS_VMID3_BASE_BASE_IDX', 'mmGDS_VMID3_SIZE', - 'mmGDS_VMID3_SIZE_BASE_IDX', 'mmGDS_VMID4_BASE', - 'mmGDS_VMID4_BASE_BASE_IDX', 'mmGDS_VMID4_SIZE', - 'mmGDS_VMID4_SIZE_BASE_IDX', 'mmGDS_VMID5_BASE', - 'mmGDS_VMID5_BASE_BASE_IDX', 'mmGDS_VMID5_SIZE', - 'mmGDS_VMID5_SIZE_BASE_IDX', 'mmGDS_VMID6_BASE', - 'mmGDS_VMID6_BASE_BASE_IDX', 'mmGDS_VMID6_SIZE', - 'mmGDS_VMID6_SIZE_BASE_IDX', 'mmGDS_VMID7_BASE', - 'mmGDS_VMID7_BASE_BASE_IDX', 'mmGDS_VMID7_SIZE', - 'mmGDS_VMID7_SIZE_BASE_IDX', 'mmGDS_VMID8_BASE', - 'mmGDS_VMID8_BASE_BASE_IDX', 'mmGDS_VMID8_SIZE', - 'mmGDS_VMID8_SIZE_BASE_IDX', 'mmGDS_VMID9_BASE', - 'mmGDS_VMID9_BASE_BASE_IDX', 'mmGDS_VMID9_SIZE', - 'mmGDS_VMID9_SIZE_BASE_IDX', 'mmGDS_VM_PROTECTION_FAULT', - 'mmGDS_VM_PROTECTION_FAULT_BASE_IDX', 'mmGDS_VS_CTXSW_CNT0', - 'mmGDS_VS_CTXSW_CNT0_BASE_IDX', 'mmGDS_VS_CTXSW_CNT1', - 'mmGDS_VS_CTXSW_CNT1_BASE_IDX', 'mmGDS_VS_CTXSW_CNT2', - 'mmGDS_VS_CTXSW_CNT2_BASE_IDX', 'mmGDS_VS_CTXSW_CNT3', - 'mmGDS_VS_CTXSW_CNT3_BASE_IDX', 'mmGDS_WD_GDS_CSB', - 'mmGDS_WD_GDS_CSB_BASE_IDX', 'mmGDS_WRITE_COMPLETE', - 'mmGDS_WRITE_COMPLETE_BASE_IDX', 'mmGDS_WR_ADDR', - 'mmGDS_WR_ADDR_BASE_IDX', 'mmGDS_WR_BURST_ADDR', - 'mmGDS_WR_BURST_ADDR_BASE_IDX', 'mmGDS_WR_BURST_DATA', - 'mmGDS_WR_BURST_DATA_BASE_IDX', 'mmGDS_WR_DATA', - 'mmGDS_WR_DATA_BASE_IDX', 'mmGE1_PERFCOUNTER0_HI', - 'mmGE1_PERFCOUNTER0_HI_BASE_IDX', 'mmGE1_PERFCOUNTER0_LO', - 'mmGE1_PERFCOUNTER0_LO_BASE_IDX', 'mmGE1_PERFCOUNTER0_SELECT', - 'mmGE1_PERFCOUNTER0_SELECT1', - 'mmGE1_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmGE1_PERFCOUNTER0_SELECT_BASE_IDX', 'mmGE1_PERFCOUNTER1_HI', - 'mmGE1_PERFCOUNTER1_HI_BASE_IDX', 'mmGE1_PERFCOUNTER1_LO', - 'mmGE1_PERFCOUNTER1_LO_BASE_IDX', 'mmGE1_PERFCOUNTER1_SELECT', - 'mmGE1_PERFCOUNTER1_SELECT1', - 'mmGE1_PERFCOUNTER1_SELECT1_BASE_IDX', - 'mmGE1_PERFCOUNTER1_SELECT_BASE_IDX', 'mmGE1_PERFCOUNTER2_HI', - 'mmGE1_PERFCOUNTER2_HI_BASE_IDX', 'mmGE1_PERFCOUNTER2_LO', - 'mmGE1_PERFCOUNTER2_LO_BASE_IDX', 'mmGE1_PERFCOUNTER2_SELECT', - 'mmGE1_PERFCOUNTER2_SELECT1', - 'mmGE1_PERFCOUNTER2_SELECT1_BASE_IDX', - 'mmGE1_PERFCOUNTER2_SELECT_BASE_IDX', 'mmGE1_PERFCOUNTER3_HI', - 'mmGE1_PERFCOUNTER3_HI_BASE_IDX', 'mmGE1_PERFCOUNTER3_LO', - 'mmGE1_PERFCOUNTER3_LO_BASE_IDX', 'mmGE1_PERFCOUNTER3_SELECT', - 'mmGE1_PERFCOUNTER3_SELECT1', - 'mmGE1_PERFCOUNTER3_SELECT1_BASE_IDX', - 'mmGE1_PERFCOUNTER3_SELECT_BASE_IDX', - 'mmGE2_DIST_PERFCOUNTER0_HI', - 'mmGE2_DIST_PERFCOUNTER0_HI_BASE_IDX', - 'mmGE2_DIST_PERFCOUNTER0_LO', - 'mmGE2_DIST_PERFCOUNTER0_LO_BASE_IDX', - 'mmGE2_DIST_PERFCOUNTER0_SELECT', - 'mmGE2_DIST_PERFCOUNTER0_SELECT1', - 'mmGE2_DIST_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmGE2_DIST_PERFCOUNTER0_SELECT_BASE_IDX', - 'mmGE2_DIST_PERFCOUNTER1_HI', - 'mmGE2_DIST_PERFCOUNTER1_HI_BASE_IDX', - 'mmGE2_DIST_PERFCOUNTER1_LO', - 'mmGE2_DIST_PERFCOUNTER1_LO_BASE_IDX', - 'mmGE2_DIST_PERFCOUNTER1_SELECT', - 'mmGE2_DIST_PERFCOUNTER1_SELECT1', - 'mmGE2_DIST_PERFCOUNTER1_SELECT1_BASE_IDX', - 'mmGE2_DIST_PERFCOUNTER1_SELECT_BASE_IDX', - 'mmGE2_DIST_PERFCOUNTER2_HI', - 'mmGE2_DIST_PERFCOUNTER2_HI_BASE_IDX', - 'mmGE2_DIST_PERFCOUNTER2_LO', - 'mmGE2_DIST_PERFCOUNTER2_LO_BASE_IDX', - 'mmGE2_DIST_PERFCOUNTER2_SELECT', - 'mmGE2_DIST_PERFCOUNTER2_SELECT1', - 'mmGE2_DIST_PERFCOUNTER2_SELECT1_BASE_IDX', - 'mmGE2_DIST_PERFCOUNTER2_SELECT_BASE_IDX', - 'mmGE2_DIST_PERFCOUNTER3_HI', - 'mmGE2_DIST_PERFCOUNTER3_HI_BASE_IDX', - 'mmGE2_DIST_PERFCOUNTER3_LO', - 'mmGE2_DIST_PERFCOUNTER3_LO_BASE_IDX', - 'mmGE2_DIST_PERFCOUNTER3_SELECT', - 'mmGE2_DIST_PERFCOUNTER3_SELECT1', - 'mmGE2_DIST_PERFCOUNTER3_SELECT1_BASE_IDX', - 'mmGE2_DIST_PERFCOUNTER3_SELECT_BASE_IDX', - 'mmGE2_SE_PERFCOUNTER0_HI', 'mmGE2_SE_PERFCOUNTER0_HI_BASE_IDX', - 'mmGE2_SE_PERFCOUNTER0_LO', 'mmGE2_SE_PERFCOUNTER0_LO_BASE_IDX', - 'mmGE2_SE_PERFCOUNTER0_SELECT', 'mmGE2_SE_PERFCOUNTER0_SELECT1', - 'mmGE2_SE_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmGE2_SE_PERFCOUNTER0_SELECT_BASE_IDX', - 'mmGE2_SE_PERFCOUNTER1_HI', 'mmGE2_SE_PERFCOUNTER1_HI_BASE_IDX', - 'mmGE2_SE_PERFCOUNTER1_LO', 'mmGE2_SE_PERFCOUNTER1_LO_BASE_IDX', - 'mmGE2_SE_PERFCOUNTER1_SELECT', 'mmGE2_SE_PERFCOUNTER1_SELECT1', - 'mmGE2_SE_PERFCOUNTER1_SELECT1_BASE_IDX', - 'mmGE2_SE_PERFCOUNTER1_SELECT_BASE_IDX', - 'mmGE2_SE_PERFCOUNTER2_HI', 'mmGE2_SE_PERFCOUNTER2_HI_BASE_IDX', - 'mmGE2_SE_PERFCOUNTER2_LO', 'mmGE2_SE_PERFCOUNTER2_LO_BASE_IDX', - 'mmGE2_SE_PERFCOUNTER2_SELECT', 'mmGE2_SE_PERFCOUNTER2_SELECT1', - 'mmGE2_SE_PERFCOUNTER2_SELECT1_BASE_IDX', - 'mmGE2_SE_PERFCOUNTER2_SELECT_BASE_IDX', - 'mmGE2_SE_PERFCOUNTER3_HI', 'mmGE2_SE_PERFCOUNTER3_HI_BASE_IDX', - 'mmGE2_SE_PERFCOUNTER3_LO', 'mmGE2_SE_PERFCOUNTER3_LO_BASE_IDX', - 'mmGE2_SE_PERFCOUNTER3_SELECT', 'mmGE2_SE_PERFCOUNTER3_SELECT1', - 'mmGE2_SE_PERFCOUNTER3_SELECT1_BASE_IDX', - 'mmGE2_SE_PERFCOUNTER3_SELECT_BASE_IDX', 'mmGE_CNTL', - 'mmGE_CNTL_BASE_IDX', 'mmGE_DMA_FIRST_INDEX', - 'mmGE_DMA_FIRST_INDEX_BASE_IDX', 'mmGE_INDX_OFFSET', - 'mmGE_INDX_OFFSET_BASE_IDX', 'mmGE_MAX_OUTPUT_PER_SUBGROUP', - 'mmGE_MAX_OUTPUT_PER_SUBGROUP_BASE_IDX', 'mmGE_MAX_VTX_INDX', - 'mmGE_MAX_VTX_INDX_BASE_IDX', 'mmGE_MIN_VTX_INDX', - 'mmGE_MIN_VTX_INDX_BASE_IDX', 'mmGE_MULTI_PRIM_IB_RESET_EN', - 'mmGE_MULTI_PRIM_IB_RESET_EN_BASE_IDX', 'mmGE_NGG_SUBGRP_CNTL', - 'mmGE_NGG_SUBGRP_CNTL_BASE_IDX', 'mmGE_PC_ALLOC', - 'mmGE_PC_ALLOC_BASE_IDX', 'mmGE_PC_CNTL', 'mmGE_PC_CNTL_BASE_IDX', - 'mmGE_PRIV_CONTROL', 'mmGE_PRIV_CONTROL_BASE_IDX', 'mmGE_STATUS', - 'mmGE_STATUS_BASE_IDX', 'mmGE_STEREO_CNTL', - 'mmGE_STEREO_CNTL_BASE_IDX', 'mmGE_USER_VGPR1', - 'mmGE_USER_VGPR1_BASE_IDX', 'mmGE_USER_VGPR2', - 'mmGE_USER_VGPR2_BASE_IDX', 'mmGE_USER_VGPR3', - 'mmGE_USER_VGPR3_BASE_IDX', 'mmGE_USER_VGPR_EN', - 'mmGE_USER_VGPR_EN_BASE_IDX', 'mmGFX_COPY_STATE', - 'mmGFX_COPY_STATE_BASE_IDX', 'mmGFX_PIPE_CONTROL', - 'mmGFX_PIPE_CONTROL_BASE_IDX', 'mmGFX_PIPE_PRIORITY', - 'mmGFX_PIPE_PRIORITY_BASE_IDX', 'mmGL1A_PERFCOUNTER0_HI', - 'mmGL1A_PERFCOUNTER0_HI_BASE_IDX', 'mmGL1A_PERFCOUNTER0_LO', - 'mmGL1A_PERFCOUNTER0_LO_BASE_IDX', 'mmGL1A_PERFCOUNTER0_SELECT', - 'mmGL1A_PERFCOUNTER0_SELECT1', - 'mmGL1A_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmGL1A_PERFCOUNTER0_SELECT_BASE_IDX', 'mmGL1A_PERFCOUNTER1_HI', - 'mmGL1A_PERFCOUNTER1_HI_BASE_IDX', 'mmGL1A_PERFCOUNTER1_LO', - 'mmGL1A_PERFCOUNTER1_LO_BASE_IDX', 'mmGL1A_PERFCOUNTER1_SELECT', - 'mmGL1A_PERFCOUNTER1_SELECT_BASE_IDX', 'mmGL1A_PERFCOUNTER2_HI', - 'mmGL1A_PERFCOUNTER2_HI_BASE_IDX', 'mmGL1A_PERFCOUNTER2_LO', - 'mmGL1A_PERFCOUNTER2_LO_BASE_IDX', 'mmGL1A_PERFCOUNTER2_SELECT', - 'mmGL1A_PERFCOUNTER2_SELECT_BASE_IDX', 'mmGL1A_PERFCOUNTER3_HI', - 'mmGL1A_PERFCOUNTER3_HI_BASE_IDX', 'mmGL1A_PERFCOUNTER3_LO', - 'mmGL1A_PERFCOUNTER3_LO_BASE_IDX', 'mmGL1A_PERFCOUNTER3_SELECT', - 'mmGL1A_PERFCOUNTER3_SELECT_BASE_IDX', 'mmGL1C_PERFCOUNTER0_HI', - 'mmGL1C_PERFCOUNTER0_HI_BASE_IDX', 'mmGL1C_PERFCOUNTER0_LO', - 'mmGL1C_PERFCOUNTER0_LO_BASE_IDX', 'mmGL1C_PERFCOUNTER0_SELECT', - 'mmGL1C_PERFCOUNTER0_SELECT1', - 'mmGL1C_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmGL1C_PERFCOUNTER0_SELECT_BASE_IDX', 'mmGL1C_PERFCOUNTER1_HI', - 'mmGL1C_PERFCOUNTER1_HI_BASE_IDX', 'mmGL1C_PERFCOUNTER1_LO', - 'mmGL1C_PERFCOUNTER1_LO_BASE_IDX', 'mmGL1C_PERFCOUNTER1_SELECT', - 'mmGL1C_PERFCOUNTER1_SELECT_BASE_IDX', 'mmGL1C_PERFCOUNTER2_HI', - 'mmGL1C_PERFCOUNTER2_HI_BASE_IDX', 'mmGL1C_PERFCOUNTER2_LO', - 'mmGL1C_PERFCOUNTER2_LO_BASE_IDX', 'mmGL1C_PERFCOUNTER2_SELECT', - 'mmGL1C_PERFCOUNTER2_SELECT_BASE_IDX', 'mmGL1C_PERFCOUNTER3_HI', - 'mmGL1C_PERFCOUNTER3_HI_BASE_IDX', 'mmGL1C_PERFCOUNTER3_LO', - 'mmGL1C_PERFCOUNTER3_LO_BASE_IDX', 'mmGL1C_PERFCOUNTER3_SELECT', - 'mmGL1C_PERFCOUNTER3_SELECT_BASE_IDX', 'mmGL1C_STATUS', - 'mmGL1C_STATUS_BASE_IDX', 'mmGL1C_UTCL0_CNTL2', - 'mmGL1C_UTCL0_CNTL2_BASE_IDX', 'mmGL1C_UTCL0_RETRY', - 'mmGL1C_UTCL0_RETRY_BASE_IDX', 'mmGL1C_UTCL0_STATUS', - 'mmGL1C_UTCL0_STATUS_BASE_IDX', 'mmGL1_ARB_STATUS', - 'mmGL1_ARB_STATUS_BASE_IDX', 'mmGL1_DRAM_BURST_MASK', - 'mmGL1_DRAM_BURST_MASK_BASE_IDX', 'mmGL1_PIPE_STEER', - 'mmGL1_PIPE_STEER_BASE_IDX', 'mmGL2A_ADDR_MATCH_CTRL', - 'mmGL2A_ADDR_MATCH_CTRL_BASE_IDX', 'mmGL2A_ADDR_MATCH_MASK', - 'mmGL2A_ADDR_MATCH_MASK_BASE_IDX', 'mmGL2A_ADDR_MATCH_SIZE', - 'mmGL2A_ADDR_MATCH_SIZE_BASE_IDX', 'mmGL2A_CGTT_SCLK_CTRL', - 'mmGL2A_CGTT_SCLK_CTRL_1', 'mmGL2A_CGTT_SCLK_CTRL_1_BASE_IDX', - 'mmGL2A_CGTT_SCLK_CTRL_BASE_IDX', 'mmGL2A_PERFCOUNTER0_HI', - 'mmGL2A_PERFCOUNTER0_HI_BASE_IDX', 'mmGL2A_PERFCOUNTER0_LO', - 'mmGL2A_PERFCOUNTER0_LO_BASE_IDX', 'mmGL2A_PERFCOUNTER0_SELECT', - 'mmGL2A_PERFCOUNTER0_SELECT1', - 'mmGL2A_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmGL2A_PERFCOUNTER0_SELECT_BASE_IDX', 'mmGL2A_PERFCOUNTER1_HI', - 'mmGL2A_PERFCOUNTER1_HI_BASE_IDX', 'mmGL2A_PERFCOUNTER1_LO', - 'mmGL2A_PERFCOUNTER1_LO_BASE_IDX', 'mmGL2A_PERFCOUNTER1_SELECT', - 'mmGL2A_PERFCOUNTER1_SELECT1', - 'mmGL2A_PERFCOUNTER1_SELECT1_BASE_IDX', - 'mmGL2A_PERFCOUNTER1_SELECT_BASE_IDX', 'mmGL2A_PERFCOUNTER2_HI', - 'mmGL2A_PERFCOUNTER2_HI_BASE_IDX', 'mmGL2A_PERFCOUNTER2_LO', - 'mmGL2A_PERFCOUNTER2_LO_BASE_IDX', 'mmGL2A_PERFCOUNTER2_SELECT', - 'mmGL2A_PERFCOUNTER2_SELECT_BASE_IDX', 'mmGL2A_PERFCOUNTER3_HI', - 'mmGL2A_PERFCOUNTER3_HI_BASE_IDX', 'mmGL2A_PERFCOUNTER3_LO', - 'mmGL2A_PERFCOUNTER3_LO_BASE_IDX', 'mmGL2A_PERFCOUNTER3_SELECT', - 'mmGL2A_PERFCOUNTER3_SELECT_BASE_IDX', 'mmGL2A_PRIORITY_CTRL', - 'mmGL2A_PRIORITY_CTRL_BASE_IDX', 'mmGL2C_ADDR_MATCH_MASK', - 'mmGL2C_ADDR_MATCH_MASK_BASE_IDX', 'mmGL2C_ADDR_MATCH_SIZE', - 'mmGL2C_ADDR_MATCH_SIZE_BASE_IDX', 'mmGL2C_CGTT_SCLK_CTRL', - 'mmGL2C_CGTT_SCLK_CTRL_BASE_IDX', 'mmGL2C_CM_CTRL0', - 'mmGL2C_CM_CTRL0_BASE_IDX', 'mmGL2C_CM_CTRL1', - 'mmGL2C_CM_CTRL1_BASE_IDX', 'mmGL2C_CM_STALL', - 'mmGL2C_CM_STALL_BASE_IDX', 'mmGL2C_CTRL', 'mmGL2C_CTRL2', - 'mmGL2C_CTRL2_BASE_IDX', 'mmGL2C_CTRL_BASE_IDX', - 'mmGL2C_LB_CTR_CTRL', 'mmGL2C_LB_CTR_CTRL_BASE_IDX', - 'mmGL2C_LB_CTR_SEL0', 'mmGL2C_LB_CTR_SEL0_BASE_IDX', - 'mmGL2C_LB_CTR_SEL1', 'mmGL2C_LB_CTR_SEL1_BASE_IDX', - 'mmGL2C_LB_DATA0', 'mmGL2C_LB_DATA0_BASE_IDX', 'mmGL2C_LB_DATA1', - 'mmGL2C_LB_DATA1_BASE_IDX', 'mmGL2C_LB_DATA2', - 'mmGL2C_LB_DATA2_BASE_IDX', 'mmGL2C_LB_DATA3', - 'mmGL2C_LB_DATA3_BASE_IDX', 'mmGL2C_MDC_PF_FLAG_CTRL', - 'mmGL2C_MDC_PF_FLAG_CTRL_BASE_IDX', 'mmGL2C_PERFCOUNTER0_HI', - 'mmGL2C_PERFCOUNTER0_HI_BASE_IDX', 'mmGL2C_PERFCOUNTER0_LO', - 'mmGL2C_PERFCOUNTER0_LO_BASE_IDX', 'mmGL2C_PERFCOUNTER0_SELECT', - 'mmGL2C_PERFCOUNTER0_SELECT1', - 'mmGL2C_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmGL2C_PERFCOUNTER0_SELECT_BASE_IDX', 'mmGL2C_PERFCOUNTER1_HI', - 'mmGL2C_PERFCOUNTER1_HI_BASE_IDX', 'mmGL2C_PERFCOUNTER1_LO', - 'mmGL2C_PERFCOUNTER1_LO_BASE_IDX', 'mmGL2C_PERFCOUNTER1_SELECT', - 'mmGL2C_PERFCOUNTER1_SELECT1', - 'mmGL2C_PERFCOUNTER1_SELECT1_BASE_IDX', - 'mmGL2C_PERFCOUNTER1_SELECT_BASE_IDX', 'mmGL2C_PERFCOUNTER2_HI', - 'mmGL2C_PERFCOUNTER2_HI_BASE_IDX', 'mmGL2C_PERFCOUNTER2_LO', - 'mmGL2C_PERFCOUNTER2_LO_BASE_IDX', 'mmGL2C_PERFCOUNTER2_SELECT', - 'mmGL2C_PERFCOUNTER2_SELECT_BASE_IDX', 'mmGL2C_PERFCOUNTER3_HI', - 'mmGL2C_PERFCOUNTER3_HI_BASE_IDX', 'mmGL2C_PERFCOUNTER3_LO', - 'mmGL2C_PERFCOUNTER3_LO_BASE_IDX', 'mmGL2C_PERFCOUNTER3_SELECT', - 'mmGL2C_PERFCOUNTER3_SELECT_BASE_IDX', 'mmGL2C_SOFT_RESET', - 'mmGL2C_SOFT_RESET_BASE_IDX', 'mmGL2C_WBINVL2', - 'mmGL2C_WBINVL2_BASE_IDX', 'mmGL2_PIPE_STEER_0', - 'mmGL2_PIPE_STEER_0_BASE_IDX', 'mmGL2_PIPE_STEER_1', - 'mmGL2_PIPE_STEER_1_BASE_IDX', 'mmGRBM_CAM_DATA', - 'mmGRBM_CAM_DATA_BASE_IDX', 'mmGRBM_CAM_DATA_UPPER', - 'mmGRBM_CAM_DATA_UPPER_BASE_IDX', 'mmGRBM_CAM_INDEX', - 'mmGRBM_CAM_INDEX_BASE_IDX', 'mmGRBM_CGTT_CLK_CNTL', - 'mmGRBM_CGTT_CLK_CNTL_BASE_IDX', 'mmGRBM_CHIP_REVISION', - 'mmGRBM_CHIP_REVISION_BASE_IDX', 'mmGRBM_CNTL', - 'mmGRBM_CNTL_BASE_IDX', 'mmGRBM_DSM_BYPASS', - 'mmGRBM_DSM_BYPASS_BASE_IDX', 'mmGRBM_FENCE_RANGE0', - 'mmGRBM_FENCE_RANGE0_BASE_IDX', 'mmGRBM_FENCE_RANGE1', - 'mmGRBM_FENCE_RANGE1_BASE_IDX', 'mmGRBM_GFX_CLKEN_CNTL', - 'mmGRBM_GFX_CLKEN_CNTL_BASE_IDX', 'mmGRBM_GFX_CNTL', - 'mmGRBM_GFX_CNTL_BASE_IDX', 'mmGRBM_GFX_CNTL_SR_DATA', - 'mmGRBM_GFX_CNTL_SR_DATA_BASE_IDX', 'mmGRBM_GFX_CNTL_SR_SELECT', - 'mmGRBM_GFX_CNTL_SR_SELECT_BASE_IDX', 'mmGRBM_GFX_INDEX', - 'mmGRBM_GFX_INDEX_BASE_IDX', 'mmGRBM_GFX_INDEX_SR_DATA', - 'mmGRBM_GFX_INDEX_SR_DATA_BASE_IDX', 'mmGRBM_GFX_INDEX_SR_SELECT', - 'mmGRBM_GFX_INDEX_SR_SELECT_BASE_IDX', 'mmGRBM_HYP_CAM_DATA', - 'mmGRBM_HYP_CAM_DATA_BASE_IDX', 'mmGRBM_HYP_CAM_DATA_UPPER', - 'mmGRBM_HYP_CAM_DATA_UPPER_BASE_IDX', 'mmGRBM_HYP_CAM_INDEX', - 'mmGRBM_HYP_CAM_INDEX_BASE_IDX', 'mmGRBM_IH_CREDIT', - 'mmGRBM_IH_CREDIT_BASE_IDX', 'mmGRBM_INT_CNTL', - 'mmGRBM_INT_CNTL_BASE_IDX', 'mmGRBM_NOWHERE', - 'mmGRBM_NOWHERE_BASE_IDX', 'mmGRBM_PERFCOUNTER0_HI', - 'mmGRBM_PERFCOUNTER0_HI_BASE_IDX', 'mmGRBM_PERFCOUNTER0_LO', - 'mmGRBM_PERFCOUNTER0_LO_BASE_IDX', 'mmGRBM_PERFCOUNTER0_SELECT', - 'mmGRBM_PERFCOUNTER0_SELECT_BASE_IDX', - 'mmGRBM_PERFCOUNTER0_SELECT_HI', - 'mmGRBM_PERFCOUNTER0_SELECT_HI_BASE_IDX', - 'mmGRBM_PERFCOUNTER1_HI', 'mmGRBM_PERFCOUNTER1_HI_BASE_IDX', - 'mmGRBM_PERFCOUNTER1_LO', 'mmGRBM_PERFCOUNTER1_LO_BASE_IDX', - 'mmGRBM_PERFCOUNTER1_SELECT', - 'mmGRBM_PERFCOUNTER1_SELECT_BASE_IDX', - 'mmGRBM_PERFCOUNTER1_SELECT_HI', - 'mmGRBM_PERFCOUNTER1_SELECT_HI_BASE_IDX', 'mmGRBM_PWR_CNTL', - 'mmGRBM_PWR_CNTL2', 'mmGRBM_PWR_CNTL2_BASE_IDX', - 'mmGRBM_PWR_CNTL_BASE_IDX', 'mmGRBM_READ_ERROR', - 'mmGRBM_READ_ERROR2', 'mmGRBM_READ_ERROR2_BASE_IDX', - 'mmGRBM_READ_ERROR_BASE_IDX', 'mmGRBM_SCRATCH_REG0', - 'mmGRBM_SCRATCH_REG0_BASE_IDX', 'mmGRBM_SCRATCH_REG1', - 'mmGRBM_SCRATCH_REG1_BASE_IDX', 'mmGRBM_SCRATCH_REG2', - 'mmGRBM_SCRATCH_REG2_BASE_IDX', 'mmGRBM_SCRATCH_REG3', - 'mmGRBM_SCRATCH_REG3_BASE_IDX', 'mmGRBM_SCRATCH_REG4', - 'mmGRBM_SCRATCH_REG4_BASE_IDX', 'mmGRBM_SCRATCH_REG5', - 'mmGRBM_SCRATCH_REG5_BASE_IDX', 'mmGRBM_SCRATCH_REG6', - 'mmGRBM_SCRATCH_REG6_BASE_IDX', 'mmGRBM_SCRATCH_REG7', - 'mmGRBM_SCRATCH_REG7_BASE_IDX', 'mmGRBM_SE0_PERFCOUNTER_HI', - 'mmGRBM_SE0_PERFCOUNTER_HI_BASE_IDX', 'mmGRBM_SE0_PERFCOUNTER_LO', - 'mmGRBM_SE0_PERFCOUNTER_LO_BASE_IDX', - 'mmGRBM_SE0_PERFCOUNTER_SELECT', - 'mmGRBM_SE0_PERFCOUNTER_SELECT_BASE_IDX', - 'mmGRBM_SE1_PERFCOUNTER_HI', 'mmGRBM_SE1_PERFCOUNTER_HI_BASE_IDX', - 'mmGRBM_SE1_PERFCOUNTER_LO', 'mmGRBM_SE1_PERFCOUNTER_LO_BASE_IDX', - 'mmGRBM_SE1_PERFCOUNTER_SELECT', - 'mmGRBM_SE1_PERFCOUNTER_SELECT_BASE_IDX', - 'mmGRBM_SE2_PERFCOUNTER_HI', 'mmGRBM_SE2_PERFCOUNTER_HI_BASE_IDX', - 'mmGRBM_SE2_PERFCOUNTER_LO', 'mmGRBM_SE2_PERFCOUNTER_LO_BASE_IDX', - 'mmGRBM_SE2_PERFCOUNTER_SELECT', - 'mmGRBM_SE2_PERFCOUNTER_SELECT_BASE_IDX', - 'mmGRBM_SE3_PERFCOUNTER_HI', 'mmGRBM_SE3_PERFCOUNTER_HI_BASE_IDX', - 'mmGRBM_SE3_PERFCOUNTER_LO', 'mmGRBM_SE3_PERFCOUNTER_LO_BASE_IDX', - 'mmGRBM_SE3_PERFCOUNTER_SELECT', - 'mmGRBM_SE3_PERFCOUNTER_SELECT_BASE_IDX', 'mmGRBM_SEC_CNTL', - 'mmGRBM_SEC_CNTL_BASE_IDX', 'mmGRBM_SE_REMAP_CNTL', - 'mmGRBM_SE_REMAP_CNTL_BASE_IDX', 'mmGRBM_SKEW_CNTL', - 'mmGRBM_SKEW_CNTL_BASE_IDX', 'mmGRBM_SOFT_RESET', - 'mmGRBM_SOFT_RESET_BASE_IDX', 'mmGRBM_STATUS', 'mmGRBM_STATUS2', - 'mmGRBM_STATUS2_BASE_IDX', 'mmGRBM_STATUS3', - 'mmGRBM_STATUS3_BASE_IDX', 'mmGRBM_STATUS_BASE_IDX', - 'mmGRBM_STATUS_SE0', 'mmGRBM_STATUS_SE0_BASE_IDX', - 'mmGRBM_STATUS_SE1', 'mmGRBM_STATUS_SE1_BASE_IDX', - 'mmGRBM_STATUS_SE2', 'mmGRBM_STATUS_SE2_BASE_IDX', - 'mmGRBM_STATUS_SE3', 'mmGRBM_STATUS_SE3_BASE_IDX', - 'mmGRBM_TRAP_ADDR', 'mmGRBM_TRAP_ADDR_BASE_IDX', - 'mmGRBM_TRAP_ADDR_MSK', 'mmGRBM_TRAP_ADDR_MSK_BASE_IDX', - 'mmGRBM_TRAP_OP', 'mmGRBM_TRAP_OP_BASE_IDX', 'mmGRBM_TRAP_WD', - 'mmGRBM_TRAP_WD_BASE_IDX', 'mmGRBM_TRAP_WD_MSK', - 'mmGRBM_TRAP_WD_MSK_BASE_IDX', 'mmGRBM_UTCL2_INVAL_RANGE_END', - 'mmGRBM_UTCL2_INVAL_RANGE_END_BASE_IDX', - 'mmGRBM_UTCL2_INVAL_RANGE_START', - 'mmGRBM_UTCL2_INVAL_RANGE_START_BASE_IDX', - 'mmGRBM_WAIT_IDLE_CLOCKS', 'mmGRBM_WAIT_IDLE_CLOCKS_BASE_IDX', - 'mmGRBM_WRITE_ERROR', 'mmGRBM_WRITE_ERROR_BASE_IDX', - 'mmGRTAVFS_CLK_CNTL', 'mmGRTAVFS_CLK_CNTL_BASE_IDX', - 'mmGRTAVFS_GENERAL_0', 'mmGRTAVFS_GENERAL_0_BASE_IDX', - 'mmGRTAVFS_PSM_CNTL', 'mmGRTAVFS_PSM_CNTL_BASE_IDX', - 'mmGRTAVFS_RTAVFS_RD_DATA', 'mmGRTAVFS_RTAVFS_RD_DATA_BASE_IDX', - 'mmGRTAVFS_RTAVFS_REG_ADDR', 'mmGRTAVFS_RTAVFS_REG_ADDR_BASE_IDX', - 'mmGRTAVFS_RTAVFS_REG_CTRL', 'mmGRTAVFS_RTAVFS_REG_CTRL_BASE_IDX', - 'mmGRTAVFS_RTAVFS_REG_STATUS', - 'mmGRTAVFS_RTAVFS_REG_STATUS_BASE_IDX', - 'mmGRTAVFS_RTAVFS_WR_DATA', 'mmGRTAVFS_RTAVFS_WR_DATA_BASE_IDX', - 'mmGRTAVFS_SOFT_RESET', 'mmGRTAVFS_SOFT_RESET_BASE_IDX', - 'mmGRTAVFS_TARG_FREQ', 'mmGRTAVFS_TARG_FREQ_BASE_IDX', - 'mmGRTAVFS_TARG_VOLT', 'mmGRTAVFS_TARG_VOLT_BASE_IDX', - 'mmGUS_CGTT_CLK_CTRL', 'mmGUS_CGTT_CLK_CTRL_BASE_IDX', - 'mmGUS_DRAM_COMBINE_FLUSH', 'mmGUS_DRAM_COMBINE_FLUSH_BASE_IDX', - 'mmGUS_DRAM_COMBINE_RD_WR_EN', - 'mmGUS_DRAM_COMBINE_RD_WR_EN_BASE_IDX', 'mmGUS_DRAM_GROUP_BURST', - 'mmGUS_DRAM_GROUP_BURST_BASE_IDX', 'mmGUS_DRAM_PRI_AGE_COEFF', - 'mmGUS_DRAM_PRI_AGE_COEFF_BASE_IDX', 'mmGUS_DRAM_PRI_AGE_RATE', - 'mmGUS_DRAM_PRI_AGE_RATE_BASE_IDX', 'mmGUS_DRAM_PRI_FIXED', - 'mmGUS_DRAM_PRI_FIXED_BASE_IDX', 'mmGUS_DRAM_PRI_QUANT1_PRI1', - 'mmGUS_DRAM_PRI_QUANT1_PRI1_BASE_IDX', - 'mmGUS_DRAM_PRI_QUANT1_PRI2', - 'mmGUS_DRAM_PRI_QUANT1_PRI2_BASE_IDX', - 'mmGUS_DRAM_PRI_QUANT1_PRI3', - 'mmGUS_DRAM_PRI_QUANT1_PRI3_BASE_IDX', - 'mmGUS_DRAM_PRI_QUANT1_PRI4', - 'mmGUS_DRAM_PRI_QUANT1_PRI4_BASE_IDX', - 'mmGUS_DRAM_PRI_QUANT1_PRI5', - 'mmGUS_DRAM_PRI_QUANT1_PRI5_BASE_IDX', - 'mmGUS_DRAM_PRI_QUANT_PRI1', 'mmGUS_DRAM_PRI_QUANT_PRI1_BASE_IDX', - 'mmGUS_DRAM_PRI_QUANT_PRI2', 'mmGUS_DRAM_PRI_QUANT_PRI2_BASE_IDX', - 'mmGUS_DRAM_PRI_QUANT_PRI3', 'mmGUS_DRAM_PRI_QUANT_PRI3_BASE_IDX', - 'mmGUS_DRAM_PRI_QUANT_PRI4', 'mmGUS_DRAM_PRI_QUANT_PRI4_BASE_IDX', - 'mmGUS_DRAM_PRI_QUANT_PRI5', 'mmGUS_DRAM_PRI_QUANT_PRI5_BASE_IDX', - 'mmGUS_DRAM_PRI_QUEUING', 'mmGUS_DRAM_PRI_QUEUING_BASE_IDX', - 'mmGUS_DRAM_PRI_URGENCY_COEFF', - 'mmGUS_DRAM_PRI_URGENCY_COEFF_BASE_IDX', - 'mmGUS_DRAM_PRI_URGENCY_MODE', - 'mmGUS_DRAM_PRI_URGENCY_MODE_BASE_IDX', 'mmGUS_ERR_STATUS', - 'mmGUS_ERR_STATUS_BASE_IDX', 'mmGUS_IO_GROUP_BURST', - 'mmGUS_IO_GROUP_BURST_BASE_IDX', 'mmGUS_IO_RD_COMBINE_FLUSH', - 'mmGUS_IO_RD_COMBINE_FLUSH_BASE_IDX', 'mmGUS_IO_RD_PRI_AGE_COEFF', - 'mmGUS_IO_RD_PRI_AGE_COEFF_BASE_IDX', 'mmGUS_IO_RD_PRI_AGE_RATE', - 'mmGUS_IO_RD_PRI_AGE_RATE_BASE_IDX', 'mmGUS_IO_RD_PRI_FIXED', - 'mmGUS_IO_RD_PRI_FIXED_BASE_IDX', 'mmGUS_IO_RD_PRI_QUANT1_PRI1', - 'mmGUS_IO_RD_PRI_QUANT1_PRI1_BASE_IDX', - 'mmGUS_IO_RD_PRI_QUANT1_PRI2', - 'mmGUS_IO_RD_PRI_QUANT1_PRI2_BASE_IDX', - 'mmGUS_IO_RD_PRI_QUANT1_PRI3', - 'mmGUS_IO_RD_PRI_QUANT1_PRI3_BASE_IDX', - 'mmGUS_IO_RD_PRI_QUANT1_PRI4', - 'mmGUS_IO_RD_PRI_QUANT1_PRI4_BASE_IDX', - 'mmGUS_IO_RD_PRI_QUANT_PRI1', - 'mmGUS_IO_RD_PRI_QUANT_PRI1_BASE_IDX', - 'mmGUS_IO_RD_PRI_QUANT_PRI2', - 'mmGUS_IO_RD_PRI_QUANT_PRI2_BASE_IDX', - 'mmGUS_IO_RD_PRI_QUANT_PRI3', - 'mmGUS_IO_RD_PRI_QUANT_PRI3_BASE_IDX', - 'mmGUS_IO_RD_PRI_QUANT_PRI4', - 'mmGUS_IO_RD_PRI_QUANT_PRI4_BASE_IDX', 'mmGUS_IO_RD_PRI_QUEUING', - 'mmGUS_IO_RD_PRI_QUEUING_BASE_IDX', - 'mmGUS_IO_RD_PRI_URGENCY_COEFF', - 'mmGUS_IO_RD_PRI_URGENCY_COEFF_BASE_IDX', - 'mmGUS_IO_RD_PRI_URGENCY_MODE', - 'mmGUS_IO_RD_PRI_URGENCY_MODE_BASE_IDX', - 'mmGUS_IO_WR_COMBINE_FLUSH', 'mmGUS_IO_WR_COMBINE_FLUSH_BASE_IDX', - 'mmGUS_IO_WR_PRI_AGE_COEFF', 'mmGUS_IO_WR_PRI_AGE_COEFF_BASE_IDX', - 'mmGUS_IO_WR_PRI_AGE_RATE', 'mmGUS_IO_WR_PRI_AGE_RATE_BASE_IDX', - 'mmGUS_IO_WR_PRI_FIXED', 'mmGUS_IO_WR_PRI_FIXED_BASE_IDX', - 'mmGUS_IO_WR_PRI_QUANT1_PRI1', - 'mmGUS_IO_WR_PRI_QUANT1_PRI1_BASE_IDX', - 'mmGUS_IO_WR_PRI_QUANT1_PRI2', - 'mmGUS_IO_WR_PRI_QUANT1_PRI2_BASE_IDX', - 'mmGUS_IO_WR_PRI_QUANT1_PRI3', - 'mmGUS_IO_WR_PRI_QUANT1_PRI3_BASE_IDX', - 'mmGUS_IO_WR_PRI_QUANT1_PRI4', - 'mmGUS_IO_WR_PRI_QUANT1_PRI4_BASE_IDX', - 'mmGUS_IO_WR_PRI_QUANT_PRI1', - 'mmGUS_IO_WR_PRI_QUANT_PRI1_BASE_IDX', - 'mmGUS_IO_WR_PRI_QUANT_PRI2', - 'mmGUS_IO_WR_PRI_QUANT_PRI2_BASE_IDX', - 'mmGUS_IO_WR_PRI_QUANT_PRI3', - 'mmGUS_IO_WR_PRI_QUANT_PRI3_BASE_IDX', - 'mmGUS_IO_WR_PRI_QUANT_PRI4', - 'mmGUS_IO_WR_PRI_QUANT_PRI4_BASE_IDX', 'mmGUS_IO_WR_PRI_QUEUING', - 'mmGUS_IO_WR_PRI_QUEUING_BASE_IDX', - 'mmGUS_IO_WR_PRI_URGENCY_COEFF', - 'mmGUS_IO_WR_PRI_URGENCY_COEFF_BASE_IDX', - 'mmGUS_IO_WR_PRI_URGENCY_MODE', - 'mmGUS_IO_WR_PRI_URGENCY_MODE_BASE_IDX', 'mmGUS_L1_CH0_CMD_IN', - 'mmGUS_L1_CH0_CMD_IN_BASE_IDX', 'mmGUS_L1_CH0_CMD_OUT', - 'mmGUS_L1_CH0_CMD_OUT_BASE_IDX', 'mmGUS_L1_CH0_DATA_IN', - 'mmGUS_L1_CH0_DATA_IN_BASE_IDX', 'mmGUS_L1_CH0_DATA_OUT', - 'mmGUS_L1_CH0_DATA_OUT_BASE_IDX', 'mmGUS_L1_CH0_DATA_U_IN', - 'mmGUS_L1_CH0_DATA_U_IN_BASE_IDX', 'mmGUS_L1_CH0_DATA_U_OUT', - 'mmGUS_L1_CH0_DATA_U_OUT_BASE_IDX', 'mmGUS_L1_CH1_CMD_IN', - 'mmGUS_L1_CH1_CMD_IN_BASE_IDX', 'mmGUS_L1_CH1_CMD_OUT', - 'mmGUS_L1_CH1_CMD_OUT_BASE_IDX', 'mmGUS_L1_CH1_DATA_IN', - 'mmGUS_L1_CH1_DATA_IN_BASE_IDX', 'mmGUS_L1_CH1_DATA_OUT', - 'mmGUS_L1_CH1_DATA_OUT_BASE_IDX', 'mmGUS_L1_CH1_DATA_U_IN', - 'mmGUS_L1_CH1_DATA_U_IN_BASE_IDX', 'mmGUS_L1_CH1_DATA_U_OUT', - 'mmGUS_L1_CH1_DATA_U_OUT_BASE_IDX', 'mmGUS_L1_SA0_CMD_IN', - 'mmGUS_L1_SA0_CMD_IN_BASE_IDX', 'mmGUS_L1_SA0_CMD_OUT', - 'mmGUS_L1_SA0_CMD_OUT_BASE_IDX', 'mmGUS_L1_SA0_DATA_IN', - 'mmGUS_L1_SA0_DATA_IN_BASE_IDX', 'mmGUS_L1_SA0_DATA_OUT', - 'mmGUS_L1_SA0_DATA_OUT_BASE_IDX', 'mmGUS_L1_SA0_DATA_U_IN', - 'mmGUS_L1_SA0_DATA_U_IN_BASE_IDX', 'mmGUS_L1_SA0_DATA_U_OUT', - 'mmGUS_L1_SA0_DATA_U_OUT_BASE_IDX', 'mmGUS_L1_SA1_CMD_IN', - 'mmGUS_L1_SA1_CMD_IN_BASE_IDX', 'mmGUS_L1_SA1_CMD_OUT', - 'mmGUS_L1_SA1_CMD_OUT_BASE_IDX', 'mmGUS_L1_SA1_DATA_IN', - 'mmGUS_L1_SA1_DATA_IN_BASE_IDX', 'mmGUS_L1_SA1_DATA_OUT', - 'mmGUS_L1_SA1_DATA_OUT_BASE_IDX', 'mmGUS_L1_SA1_DATA_U_IN', - 'mmGUS_L1_SA1_DATA_U_IN_BASE_IDX', 'mmGUS_L1_SA1_DATA_U_OUT', - 'mmGUS_L1_SA1_DATA_U_OUT_BASE_IDX', 'mmGUS_L1_SA2_CMD_IN', - 'mmGUS_L1_SA2_CMD_IN_BASE_IDX', 'mmGUS_L1_SA2_CMD_OUT', - 'mmGUS_L1_SA2_CMD_OUT_BASE_IDX', 'mmGUS_L1_SA2_DATA_IN', - 'mmGUS_L1_SA2_DATA_IN_BASE_IDX', 'mmGUS_L1_SA2_DATA_OUT', - 'mmGUS_L1_SA2_DATA_OUT_BASE_IDX', 'mmGUS_L1_SA2_DATA_U_IN', - 'mmGUS_L1_SA2_DATA_U_IN_BASE_IDX', 'mmGUS_L1_SA2_DATA_U_OUT', - 'mmGUS_L1_SA2_DATA_U_OUT_BASE_IDX', 'mmGUS_L1_SA3_CMD_IN', - 'mmGUS_L1_SA3_CMD_IN_BASE_IDX', 'mmGUS_L1_SA3_CMD_OUT', - 'mmGUS_L1_SA3_CMD_OUT_BASE_IDX', 'mmGUS_L1_SA3_DATA_IN', - 'mmGUS_L1_SA3_DATA_IN_BASE_IDX', 'mmGUS_L1_SA3_DATA_OUT', - 'mmGUS_L1_SA3_DATA_OUT_BASE_IDX', 'mmGUS_L1_SA3_DATA_U_IN', - 'mmGUS_L1_SA3_DATA_U_IN_BASE_IDX', 'mmGUS_L1_SA3_DATA_U_OUT', - 'mmGUS_L1_SA3_DATA_U_OUT_BASE_IDX', 'mmGUS_LATENCY_SAMPLING', - 'mmGUS_LATENCY_SAMPLING_BASE_IDX', 'mmGUS_MISC', 'mmGUS_MISC2', - 'mmGUS_MISC2_BASE_IDX', 'mmGUS_MISC3', 'mmGUS_MISC3_BASE_IDX', - 'mmGUS_MISC_BASE_IDX', 'mmGUS_PERFCOUNTER0_CFG', - 'mmGUS_PERFCOUNTER0_CFG_BASE_IDX', 'mmGUS_PERFCOUNTER1_CFG', - 'mmGUS_PERFCOUNTER1_CFG_BASE_IDX', 'mmGUS_PERFCOUNTER2_HI', - 'mmGUS_PERFCOUNTER2_HI_BASE_IDX', 'mmGUS_PERFCOUNTER2_LO', - 'mmGUS_PERFCOUNTER2_LO_BASE_IDX', 'mmGUS_PERFCOUNTER2_MODE', - 'mmGUS_PERFCOUNTER2_MODE_BASE_IDX', 'mmGUS_PERFCOUNTER2_SELECT', - 'mmGUS_PERFCOUNTER2_SELECT1', - 'mmGUS_PERFCOUNTER2_SELECT1_BASE_IDX', - 'mmGUS_PERFCOUNTER2_SELECT_BASE_IDX', 'mmGUS_PERFCOUNTER_HI', - 'mmGUS_PERFCOUNTER_HI_BASE_IDX', 'mmGUS_PERFCOUNTER_LO', - 'mmGUS_PERFCOUNTER_LO_BASE_IDX', 'mmGUS_PERFCOUNTER_RSLT_CNTL', - 'mmGUS_PERFCOUNTER_RSLT_CNTL_BASE_IDX', 'mmGUS_SDP_ARB_FINAL', - 'mmGUS_SDP_ARB_FINAL_BASE_IDX', 'mmGUS_SDP_CREDITS', - 'mmGUS_SDP_CREDITS_BASE_IDX', 'mmGUS_SDP_ENABLE', - 'mmGUS_SDP_ENABLE_BASE_IDX', 'mmGUS_SDP_QOS_VC_PRIORITY', - 'mmGUS_SDP_QOS_VC_PRIORITY_BASE_IDX', 'mmGUS_SDP_REQ_CNTL', - 'mmGUS_SDP_REQ_CNTL_BASE_IDX', 'mmGUS_SDP_TAG_RESERVE0', - 'mmGUS_SDP_TAG_RESERVE0_BASE_IDX', 'mmGUS_SDP_TAG_RESERVE1', - 'mmGUS_SDP_TAG_RESERVE1_BASE_IDX', 'mmGUS_SDP_VCC_RESERVE0', - 'mmGUS_SDP_VCC_RESERVE0_BASE_IDX', 'mmGUS_SDP_VCC_RESERVE1', - 'mmGUS_SDP_VCC_RESERVE1_BASE_IDX', 'mmGUS_SDP_VCD_RESERVE0', - 'mmGUS_SDP_VCD_RESERVE0_BASE_IDX', 'mmGUS_SDP_VCD_RESERVE1', - 'mmGUS_SDP_VCD_RESERVE1_BASE_IDX', 'mmGUS_WRRSP_FIFO_CNTL', - 'mmGUS_WRRSP_FIFO_CNTL_BASE_IDX', 'mmIA_ENHANCE', - 'mmIA_ENHANCE_BASE_IDX', 'mmIA_MULTI_VGT_PARAM', - 'mmIA_MULTI_VGT_PARAM_BASE_IDX', 'mmIA_MULTI_VGT_PARAM_PIPED', - 'mmIA_MULTI_VGT_PARAM_PIPED_BASE_IDX', 'mmIA_UTCL1_CNTL', - 'mmIA_UTCL1_CNTL_BASE_IDX', 'mmIA_UTCL1_STATUS', - 'mmIA_UTCL1_STATUS_2', 'mmIA_UTCL1_STATUS_2_BASE_IDX', - 'mmIA_UTCL1_STATUS_BASE_IDX', 'mmLDS_CONFIG', - 'mmLDS_CONFIG_BASE_IDX', 'mmPA_CL_CLIP_CNTL', - 'mmPA_CL_CLIP_CNTL_BASE_IDX', 'mmPA_CL_CNTL_STATUS', - 'mmPA_CL_CNTL_STATUS_BASE_IDX', 'mmPA_CL_ENHANCE', - 'mmPA_CL_ENHANCE_BASE_IDX', 'mmPA_CL_GB_HORZ_CLIP_ADJ', - 'mmPA_CL_GB_HORZ_CLIP_ADJ_BASE_IDX', 'mmPA_CL_GB_HORZ_DISC_ADJ', - 'mmPA_CL_GB_HORZ_DISC_ADJ_BASE_IDX', 'mmPA_CL_GB_VERT_CLIP_ADJ', - 'mmPA_CL_GB_VERT_CLIP_ADJ_BASE_IDX', 'mmPA_CL_GB_VERT_DISC_ADJ', - 'mmPA_CL_GB_VERT_DISC_ADJ_BASE_IDX', 'mmPA_CL_NANINF_CNTL', - 'mmPA_CL_NANINF_CNTL_BASE_IDX', 'mmPA_CL_NGG_CNTL', - 'mmPA_CL_NGG_CNTL_BASE_IDX', 'mmPA_CL_POINT_CULL_RAD', - 'mmPA_CL_POINT_CULL_RAD_BASE_IDX', 'mmPA_CL_POINT_SIZE', - 'mmPA_CL_POINT_SIZE_BASE_IDX', 'mmPA_CL_POINT_X_RAD', - 'mmPA_CL_POINT_X_RAD_BASE_IDX', 'mmPA_CL_POINT_Y_RAD', - 'mmPA_CL_POINT_Y_RAD_BASE_IDX', 'mmPA_CL_PROG_NEAR_CLIP_Z', - 'mmPA_CL_PROG_NEAR_CLIP_Z_BASE_IDX', 'mmPA_CL_UCP_0_W', - 'mmPA_CL_UCP_0_W_BASE_IDX', 'mmPA_CL_UCP_0_X', - 'mmPA_CL_UCP_0_X_BASE_IDX', 'mmPA_CL_UCP_0_Y', - 'mmPA_CL_UCP_0_Y_BASE_IDX', 'mmPA_CL_UCP_0_Z', - 'mmPA_CL_UCP_0_Z_BASE_IDX', 'mmPA_CL_UCP_1_W', - 'mmPA_CL_UCP_1_W_BASE_IDX', 'mmPA_CL_UCP_1_X', - 'mmPA_CL_UCP_1_X_BASE_IDX', 'mmPA_CL_UCP_1_Y', - 'mmPA_CL_UCP_1_Y_BASE_IDX', 'mmPA_CL_UCP_1_Z', - 'mmPA_CL_UCP_1_Z_BASE_IDX', 'mmPA_CL_UCP_2_W', - 'mmPA_CL_UCP_2_W_BASE_IDX', 'mmPA_CL_UCP_2_X', - 'mmPA_CL_UCP_2_X_BASE_IDX', 'mmPA_CL_UCP_2_Y', - 'mmPA_CL_UCP_2_Y_BASE_IDX', 'mmPA_CL_UCP_2_Z', - 'mmPA_CL_UCP_2_Z_BASE_IDX', 'mmPA_CL_UCP_3_W', - 'mmPA_CL_UCP_3_W_BASE_IDX', 'mmPA_CL_UCP_3_X', - 'mmPA_CL_UCP_3_X_BASE_IDX', 'mmPA_CL_UCP_3_Y', - 'mmPA_CL_UCP_3_Y_BASE_IDX', 'mmPA_CL_UCP_3_Z', - 'mmPA_CL_UCP_3_Z_BASE_IDX', 'mmPA_CL_UCP_4_W', - 'mmPA_CL_UCP_4_W_BASE_IDX', 'mmPA_CL_UCP_4_X', - 'mmPA_CL_UCP_4_X_BASE_IDX', 'mmPA_CL_UCP_4_Y', - 'mmPA_CL_UCP_4_Y_BASE_IDX', 'mmPA_CL_UCP_4_Z', - 'mmPA_CL_UCP_4_Z_BASE_IDX', 'mmPA_CL_UCP_5_W', - 'mmPA_CL_UCP_5_W_BASE_IDX', 'mmPA_CL_UCP_5_X', - 'mmPA_CL_UCP_5_X_BASE_IDX', 'mmPA_CL_UCP_5_Y', - 'mmPA_CL_UCP_5_Y_BASE_IDX', 'mmPA_CL_UCP_5_Z', - 'mmPA_CL_UCP_5_Z_BASE_IDX', 'mmPA_CL_VPORT_XOFFSET', - 'mmPA_CL_VPORT_XOFFSET_1', 'mmPA_CL_VPORT_XOFFSET_10', - 'mmPA_CL_VPORT_XOFFSET_10_BASE_IDX', 'mmPA_CL_VPORT_XOFFSET_11', - 'mmPA_CL_VPORT_XOFFSET_11_BASE_IDX', 'mmPA_CL_VPORT_XOFFSET_12', - 'mmPA_CL_VPORT_XOFFSET_12_BASE_IDX', 'mmPA_CL_VPORT_XOFFSET_13', - 'mmPA_CL_VPORT_XOFFSET_13_BASE_IDX', 'mmPA_CL_VPORT_XOFFSET_14', - 'mmPA_CL_VPORT_XOFFSET_14_BASE_IDX', 'mmPA_CL_VPORT_XOFFSET_15', - 'mmPA_CL_VPORT_XOFFSET_15_BASE_IDX', - 'mmPA_CL_VPORT_XOFFSET_1_BASE_IDX', 'mmPA_CL_VPORT_XOFFSET_2', - 'mmPA_CL_VPORT_XOFFSET_2_BASE_IDX', 'mmPA_CL_VPORT_XOFFSET_3', - 'mmPA_CL_VPORT_XOFFSET_3_BASE_IDX', 'mmPA_CL_VPORT_XOFFSET_4', - 'mmPA_CL_VPORT_XOFFSET_4_BASE_IDX', 'mmPA_CL_VPORT_XOFFSET_5', - 'mmPA_CL_VPORT_XOFFSET_5_BASE_IDX', 'mmPA_CL_VPORT_XOFFSET_6', - 'mmPA_CL_VPORT_XOFFSET_6_BASE_IDX', 'mmPA_CL_VPORT_XOFFSET_7', - 'mmPA_CL_VPORT_XOFFSET_7_BASE_IDX', 'mmPA_CL_VPORT_XOFFSET_8', - 'mmPA_CL_VPORT_XOFFSET_8_BASE_IDX', 'mmPA_CL_VPORT_XOFFSET_9', - 'mmPA_CL_VPORT_XOFFSET_9_BASE_IDX', - 'mmPA_CL_VPORT_XOFFSET_BASE_IDX', 'mmPA_CL_VPORT_XSCALE', - 'mmPA_CL_VPORT_XSCALE_1', 'mmPA_CL_VPORT_XSCALE_10', - 'mmPA_CL_VPORT_XSCALE_10_BASE_IDX', 'mmPA_CL_VPORT_XSCALE_11', - 'mmPA_CL_VPORT_XSCALE_11_BASE_IDX', 'mmPA_CL_VPORT_XSCALE_12', - 'mmPA_CL_VPORT_XSCALE_12_BASE_IDX', 'mmPA_CL_VPORT_XSCALE_13', - 'mmPA_CL_VPORT_XSCALE_13_BASE_IDX', 'mmPA_CL_VPORT_XSCALE_14', - 'mmPA_CL_VPORT_XSCALE_14_BASE_IDX', 'mmPA_CL_VPORT_XSCALE_15', - 'mmPA_CL_VPORT_XSCALE_15_BASE_IDX', - 'mmPA_CL_VPORT_XSCALE_1_BASE_IDX', 'mmPA_CL_VPORT_XSCALE_2', - 'mmPA_CL_VPORT_XSCALE_2_BASE_IDX', 'mmPA_CL_VPORT_XSCALE_3', - 'mmPA_CL_VPORT_XSCALE_3_BASE_IDX', 'mmPA_CL_VPORT_XSCALE_4', - 'mmPA_CL_VPORT_XSCALE_4_BASE_IDX', 'mmPA_CL_VPORT_XSCALE_5', - 'mmPA_CL_VPORT_XSCALE_5_BASE_IDX', 'mmPA_CL_VPORT_XSCALE_6', - 'mmPA_CL_VPORT_XSCALE_6_BASE_IDX', 'mmPA_CL_VPORT_XSCALE_7', - 'mmPA_CL_VPORT_XSCALE_7_BASE_IDX', 'mmPA_CL_VPORT_XSCALE_8', - 'mmPA_CL_VPORT_XSCALE_8_BASE_IDX', 'mmPA_CL_VPORT_XSCALE_9', - 'mmPA_CL_VPORT_XSCALE_9_BASE_IDX', - 'mmPA_CL_VPORT_XSCALE_BASE_IDX', 'mmPA_CL_VPORT_YOFFSET', - 'mmPA_CL_VPORT_YOFFSET_1', 'mmPA_CL_VPORT_YOFFSET_10', - 'mmPA_CL_VPORT_YOFFSET_10_BASE_IDX', 'mmPA_CL_VPORT_YOFFSET_11', - 'mmPA_CL_VPORT_YOFFSET_11_BASE_IDX', 'mmPA_CL_VPORT_YOFFSET_12', - 'mmPA_CL_VPORT_YOFFSET_12_BASE_IDX', 'mmPA_CL_VPORT_YOFFSET_13', - 'mmPA_CL_VPORT_YOFFSET_13_BASE_IDX', 'mmPA_CL_VPORT_YOFFSET_14', - 'mmPA_CL_VPORT_YOFFSET_14_BASE_IDX', 'mmPA_CL_VPORT_YOFFSET_15', - 'mmPA_CL_VPORT_YOFFSET_15_BASE_IDX', - 'mmPA_CL_VPORT_YOFFSET_1_BASE_IDX', 'mmPA_CL_VPORT_YOFFSET_2', - 'mmPA_CL_VPORT_YOFFSET_2_BASE_IDX', 'mmPA_CL_VPORT_YOFFSET_3', - 'mmPA_CL_VPORT_YOFFSET_3_BASE_IDX', 'mmPA_CL_VPORT_YOFFSET_4', - 'mmPA_CL_VPORT_YOFFSET_4_BASE_IDX', 'mmPA_CL_VPORT_YOFFSET_5', - 'mmPA_CL_VPORT_YOFFSET_5_BASE_IDX', 'mmPA_CL_VPORT_YOFFSET_6', - 'mmPA_CL_VPORT_YOFFSET_6_BASE_IDX', 'mmPA_CL_VPORT_YOFFSET_7', - 'mmPA_CL_VPORT_YOFFSET_7_BASE_IDX', 'mmPA_CL_VPORT_YOFFSET_8', - 'mmPA_CL_VPORT_YOFFSET_8_BASE_IDX', 'mmPA_CL_VPORT_YOFFSET_9', - 'mmPA_CL_VPORT_YOFFSET_9_BASE_IDX', - 'mmPA_CL_VPORT_YOFFSET_BASE_IDX', 'mmPA_CL_VPORT_YSCALE', - 'mmPA_CL_VPORT_YSCALE_1', 'mmPA_CL_VPORT_YSCALE_10', - 'mmPA_CL_VPORT_YSCALE_10_BASE_IDX', 'mmPA_CL_VPORT_YSCALE_11', - 'mmPA_CL_VPORT_YSCALE_11_BASE_IDX', 'mmPA_CL_VPORT_YSCALE_12', - 'mmPA_CL_VPORT_YSCALE_12_BASE_IDX', 'mmPA_CL_VPORT_YSCALE_13', - 'mmPA_CL_VPORT_YSCALE_13_BASE_IDX', 'mmPA_CL_VPORT_YSCALE_14', - 'mmPA_CL_VPORT_YSCALE_14_BASE_IDX', 'mmPA_CL_VPORT_YSCALE_15', - 'mmPA_CL_VPORT_YSCALE_15_BASE_IDX', - 'mmPA_CL_VPORT_YSCALE_1_BASE_IDX', 'mmPA_CL_VPORT_YSCALE_2', - 'mmPA_CL_VPORT_YSCALE_2_BASE_IDX', 'mmPA_CL_VPORT_YSCALE_3', - 'mmPA_CL_VPORT_YSCALE_3_BASE_IDX', 'mmPA_CL_VPORT_YSCALE_4', - 'mmPA_CL_VPORT_YSCALE_4_BASE_IDX', 'mmPA_CL_VPORT_YSCALE_5', - 'mmPA_CL_VPORT_YSCALE_5_BASE_IDX', 'mmPA_CL_VPORT_YSCALE_6', - 'mmPA_CL_VPORT_YSCALE_6_BASE_IDX', 'mmPA_CL_VPORT_YSCALE_7', - 'mmPA_CL_VPORT_YSCALE_7_BASE_IDX', 'mmPA_CL_VPORT_YSCALE_8', - 'mmPA_CL_VPORT_YSCALE_8_BASE_IDX', 'mmPA_CL_VPORT_YSCALE_9', - 'mmPA_CL_VPORT_YSCALE_9_BASE_IDX', - 'mmPA_CL_VPORT_YSCALE_BASE_IDX', 'mmPA_CL_VPORT_ZOFFSET', - 'mmPA_CL_VPORT_ZOFFSET_1', 'mmPA_CL_VPORT_ZOFFSET_10', - 'mmPA_CL_VPORT_ZOFFSET_10_BASE_IDX', 'mmPA_CL_VPORT_ZOFFSET_11', - 'mmPA_CL_VPORT_ZOFFSET_11_BASE_IDX', 'mmPA_CL_VPORT_ZOFFSET_12', - 'mmPA_CL_VPORT_ZOFFSET_12_BASE_IDX', 'mmPA_CL_VPORT_ZOFFSET_13', - 'mmPA_CL_VPORT_ZOFFSET_13_BASE_IDX', 'mmPA_CL_VPORT_ZOFFSET_14', - 'mmPA_CL_VPORT_ZOFFSET_14_BASE_IDX', 'mmPA_CL_VPORT_ZOFFSET_15', - 'mmPA_CL_VPORT_ZOFFSET_15_BASE_IDX', - 'mmPA_CL_VPORT_ZOFFSET_1_BASE_IDX', 'mmPA_CL_VPORT_ZOFFSET_2', - 'mmPA_CL_VPORT_ZOFFSET_2_BASE_IDX', 'mmPA_CL_VPORT_ZOFFSET_3', - 'mmPA_CL_VPORT_ZOFFSET_3_BASE_IDX', 'mmPA_CL_VPORT_ZOFFSET_4', - 'mmPA_CL_VPORT_ZOFFSET_4_BASE_IDX', 'mmPA_CL_VPORT_ZOFFSET_5', - 'mmPA_CL_VPORT_ZOFFSET_5_BASE_IDX', 'mmPA_CL_VPORT_ZOFFSET_6', - 'mmPA_CL_VPORT_ZOFFSET_6_BASE_IDX', 'mmPA_CL_VPORT_ZOFFSET_7', - 'mmPA_CL_VPORT_ZOFFSET_7_BASE_IDX', 'mmPA_CL_VPORT_ZOFFSET_8', - 'mmPA_CL_VPORT_ZOFFSET_8_BASE_IDX', 'mmPA_CL_VPORT_ZOFFSET_9', - 'mmPA_CL_VPORT_ZOFFSET_9_BASE_IDX', - 'mmPA_CL_VPORT_ZOFFSET_BASE_IDX', 'mmPA_CL_VPORT_ZSCALE', - 'mmPA_CL_VPORT_ZSCALE_1', 'mmPA_CL_VPORT_ZSCALE_10', - 'mmPA_CL_VPORT_ZSCALE_10_BASE_IDX', 'mmPA_CL_VPORT_ZSCALE_11', - 'mmPA_CL_VPORT_ZSCALE_11_BASE_IDX', 'mmPA_CL_VPORT_ZSCALE_12', - 'mmPA_CL_VPORT_ZSCALE_12_BASE_IDX', 'mmPA_CL_VPORT_ZSCALE_13', - 'mmPA_CL_VPORT_ZSCALE_13_BASE_IDX', 'mmPA_CL_VPORT_ZSCALE_14', - 'mmPA_CL_VPORT_ZSCALE_14_BASE_IDX', 'mmPA_CL_VPORT_ZSCALE_15', - 'mmPA_CL_VPORT_ZSCALE_15_BASE_IDX', - 'mmPA_CL_VPORT_ZSCALE_1_BASE_IDX', 'mmPA_CL_VPORT_ZSCALE_2', - 'mmPA_CL_VPORT_ZSCALE_2_BASE_IDX', 'mmPA_CL_VPORT_ZSCALE_3', - 'mmPA_CL_VPORT_ZSCALE_3_BASE_IDX', 'mmPA_CL_VPORT_ZSCALE_4', - 'mmPA_CL_VPORT_ZSCALE_4_BASE_IDX', 'mmPA_CL_VPORT_ZSCALE_5', - 'mmPA_CL_VPORT_ZSCALE_5_BASE_IDX', 'mmPA_CL_VPORT_ZSCALE_6', - 'mmPA_CL_VPORT_ZSCALE_6_BASE_IDX', 'mmPA_CL_VPORT_ZSCALE_7', - 'mmPA_CL_VPORT_ZSCALE_7_BASE_IDX', 'mmPA_CL_VPORT_ZSCALE_8', - 'mmPA_CL_VPORT_ZSCALE_8_BASE_IDX', 'mmPA_CL_VPORT_ZSCALE_9', - 'mmPA_CL_VPORT_ZSCALE_9_BASE_IDX', - 'mmPA_CL_VPORT_ZSCALE_BASE_IDX', 'mmPA_CL_VRS_CNTL', - 'mmPA_CL_VRS_CNTL_BASE_IDX', 'mmPA_CL_VS_OUT_CNTL', - 'mmPA_CL_VS_OUT_CNTL_BASE_IDX', 'mmPA_CL_VTE_CNTL', - 'mmPA_CL_VTE_CNTL_BASE_IDX', 'mmPA_PH_ENHANCE', - 'mmPA_PH_ENHANCE_BASE_IDX', 'mmPA_PH_INTERFACE_FIFO_SIZE', - 'mmPA_PH_INTERFACE_FIFO_SIZE_BASE_IDX', 'mmPA_PH_PERFCOUNTER0_HI', - 'mmPA_PH_PERFCOUNTER0_HI_BASE_IDX', 'mmPA_PH_PERFCOUNTER0_LO', - 'mmPA_PH_PERFCOUNTER0_LO_BASE_IDX', 'mmPA_PH_PERFCOUNTER0_SELECT', - 'mmPA_PH_PERFCOUNTER0_SELECT1', - 'mmPA_PH_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmPA_PH_PERFCOUNTER0_SELECT_BASE_IDX', 'mmPA_PH_PERFCOUNTER1_HI', - 'mmPA_PH_PERFCOUNTER1_HI_BASE_IDX', 'mmPA_PH_PERFCOUNTER1_LO', - 'mmPA_PH_PERFCOUNTER1_LO_BASE_IDX', 'mmPA_PH_PERFCOUNTER1_SELECT', - 'mmPA_PH_PERFCOUNTER1_SELECT1', - 'mmPA_PH_PERFCOUNTER1_SELECT1_BASE_IDX', - 'mmPA_PH_PERFCOUNTER1_SELECT_BASE_IDX', 'mmPA_PH_PERFCOUNTER2_HI', - 'mmPA_PH_PERFCOUNTER2_HI_BASE_IDX', 'mmPA_PH_PERFCOUNTER2_LO', - 'mmPA_PH_PERFCOUNTER2_LO_BASE_IDX', 'mmPA_PH_PERFCOUNTER2_SELECT', - 'mmPA_PH_PERFCOUNTER2_SELECT1', - 'mmPA_PH_PERFCOUNTER2_SELECT1_BASE_IDX', - 'mmPA_PH_PERFCOUNTER2_SELECT_BASE_IDX', 'mmPA_PH_PERFCOUNTER3_HI', - 'mmPA_PH_PERFCOUNTER3_HI_BASE_IDX', 'mmPA_PH_PERFCOUNTER3_LO', - 'mmPA_PH_PERFCOUNTER3_LO_BASE_IDX', 'mmPA_PH_PERFCOUNTER3_SELECT', - 'mmPA_PH_PERFCOUNTER3_SELECT1', - 'mmPA_PH_PERFCOUNTER3_SELECT1_BASE_IDX', - 'mmPA_PH_PERFCOUNTER3_SELECT_BASE_IDX', 'mmPA_PH_PERFCOUNTER4_HI', - 'mmPA_PH_PERFCOUNTER4_HI_BASE_IDX', 'mmPA_PH_PERFCOUNTER4_LO', - 'mmPA_PH_PERFCOUNTER4_LO_BASE_IDX', 'mmPA_PH_PERFCOUNTER4_SELECT', - 'mmPA_PH_PERFCOUNTER4_SELECT_BASE_IDX', 'mmPA_PH_PERFCOUNTER5_HI', - 'mmPA_PH_PERFCOUNTER5_HI_BASE_IDX', 'mmPA_PH_PERFCOUNTER5_LO', - 'mmPA_PH_PERFCOUNTER5_LO_BASE_IDX', 'mmPA_PH_PERFCOUNTER5_SELECT', - 'mmPA_PH_PERFCOUNTER5_SELECT_BASE_IDX', 'mmPA_PH_PERFCOUNTER6_HI', - 'mmPA_PH_PERFCOUNTER6_HI_BASE_IDX', 'mmPA_PH_PERFCOUNTER6_LO', - 'mmPA_PH_PERFCOUNTER6_LO_BASE_IDX', 'mmPA_PH_PERFCOUNTER6_SELECT', - 'mmPA_PH_PERFCOUNTER6_SELECT_BASE_IDX', 'mmPA_PH_PERFCOUNTER7_HI', - 'mmPA_PH_PERFCOUNTER7_HI_BASE_IDX', 'mmPA_PH_PERFCOUNTER7_LO', - 'mmPA_PH_PERFCOUNTER7_LO_BASE_IDX', 'mmPA_PH_PERFCOUNTER7_SELECT', - 'mmPA_PH_PERFCOUNTER7_SELECT_BASE_IDX', 'mmPA_SC_AA_CONFIG', - 'mmPA_SC_AA_CONFIG_BASE_IDX', 'mmPA_SC_AA_MASK_X0Y0_X1Y0', - 'mmPA_SC_AA_MASK_X0Y0_X1Y0_BASE_IDX', 'mmPA_SC_AA_MASK_X0Y1_X1Y1', - 'mmPA_SC_AA_MASK_X0Y1_X1Y1_BASE_IDX', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_0', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_0_BASE_IDX', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_1', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_1_BASE_IDX', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_2', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_2_BASE_IDX', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_3', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_3_BASE_IDX', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_0', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_0_BASE_IDX', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_1', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_1_BASE_IDX', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_2', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_2_BASE_IDX', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_3', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_3_BASE_IDX', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_0', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_0_BASE_IDX', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_1', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_1_BASE_IDX', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_2', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_2_BASE_IDX', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_3', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_3_BASE_IDX', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_0', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_0_BASE_IDX', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_1', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_1_BASE_IDX', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_2', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_2_BASE_IDX', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_3', - 'mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_3_BASE_IDX', - 'mmPA_SC_BC_WAVE_BREAK', 'mmPA_SC_BC_WAVE_BREAK_BASE_IDX', - 'mmPA_SC_BINNER_CNTL_0', 'mmPA_SC_BINNER_CNTL_0_BASE_IDX', - 'mmPA_SC_BINNER_CNTL_1', 'mmPA_SC_BINNER_CNTL_1_BASE_IDX', - 'mmPA_SC_BINNER_CNTL_OVERRIDE', - 'mmPA_SC_BINNER_CNTL_OVERRIDE_BASE_IDX', - 'mmPA_SC_BINNER_EVENT_CNTL_0', - 'mmPA_SC_BINNER_EVENT_CNTL_0_BASE_IDX', - 'mmPA_SC_BINNER_EVENT_CNTL_1', - 'mmPA_SC_BINNER_EVENT_CNTL_1_BASE_IDX', - 'mmPA_SC_BINNER_EVENT_CNTL_2', - 'mmPA_SC_BINNER_EVENT_CNTL_2_BASE_IDX', - 'mmPA_SC_BINNER_EVENT_CNTL_3', - 'mmPA_SC_BINNER_EVENT_CNTL_3_BASE_IDX', - 'mmPA_SC_BINNER_PERF_CNTL_0', - 'mmPA_SC_BINNER_PERF_CNTL_0_BASE_IDX', - 'mmPA_SC_BINNER_PERF_CNTL_1', - 'mmPA_SC_BINNER_PERF_CNTL_1_BASE_IDX', - 'mmPA_SC_BINNER_PERF_CNTL_2', - 'mmPA_SC_BINNER_PERF_CNTL_2_BASE_IDX', - 'mmPA_SC_BINNER_PERF_CNTL_3', - 'mmPA_SC_BINNER_PERF_CNTL_3_BASE_IDX', - 'mmPA_SC_BINNER_TIMEOUT_COUNTER', - 'mmPA_SC_BINNER_TIMEOUT_COUNTER_BASE_IDX', - 'mmPA_SC_CENTROID_PRIORITY_0', - 'mmPA_SC_CENTROID_PRIORITY_0_BASE_IDX', - 'mmPA_SC_CENTROID_PRIORITY_1', - 'mmPA_SC_CENTROID_PRIORITY_1_BASE_IDX', 'mmPA_SC_CLIPRECT_0_BR', - 'mmPA_SC_CLIPRECT_0_BR_BASE_IDX', 'mmPA_SC_CLIPRECT_0_TL', - 'mmPA_SC_CLIPRECT_0_TL_BASE_IDX', 'mmPA_SC_CLIPRECT_1_BR', - 'mmPA_SC_CLIPRECT_1_BR_BASE_IDX', 'mmPA_SC_CLIPRECT_1_TL', - 'mmPA_SC_CLIPRECT_1_TL_BASE_IDX', 'mmPA_SC_CLIPRECT_2_BR', - 'mmPA_SC_CLIPRECT_2_BR_BASE_IDX', 'mmPA_SC_CLIPRECT_2_TL', - 'mmPA_SC_CLIPRECT_2_TL_BASE_IDX', 'mmPA_SC_CLIPRECT_3_BR', - 'mmPA_SC_CLIPRECT_3_BR_BASE_IDX', 'mmPA_SC_CLIPRECT_3_TL', - 'mmPA_SC_CLIPRECT_3_TL_BASE_IDX', 'mmPA_SC_CLIPRECT_RULE', - 'mmPA_SC_CLIPRECT_RULE_BASE_IDX', - 'mmPA_SC_CONSERVATIVE_RASTERIZATION_CNTL', - 'mmPA_SC_CONSERVATIVE_RASTERIZATION_CNTL_BASE_IDX', - 'mmPA_SC_DSM_CNTL', 'mmPA_SC_DSM_CNTL_BASE_IDX', - 'mmPA_SC_EDGERULE', 'mmPA_SC_EDGERULE_BASE_IDX', - 'mmPA_SC_ENHANCE', 'mmPA_SC_ENHANCE_1', - 'mmPA_SC_ENHANCE_1_BASE_IDX', 'mmPA_SC_ENHANCE_2', - 'mmPA_SC_ENHANCE_2_BASE_IDX', 'mmPA_SC_ENHANCE_3', - 'mmPA_SC_ENHANCE_3_BASE_IDX', 'mmPA_SC_ENHANCE_BASE_IDX', - 'mmPA_SC_ENHANCE_INTERNAL', 'mmPA_SC_ENHANCE_INTERNAL_BASE_IDX', - 'mmPA_SC_FIFO_DEPTH_CNTL', 'mmPA_SC_FIFO_DEPTH_CNTL_BASE_IDX', - 'mmPA_SC_FIFO_SIZE', 'mmPA_SC_FIFO_SIZE_BASE_IDX', - 'mmPA_SC_FORCE_EOV_MAX_CNTS', - 'mmPA_SC_FORCE_EOV_MAX_CNTS_BASE_IDX', - 'mmPA_SC_GENERIC_SCISSOR_BR', - 'mmPA_SC_GENERIC_SCISSOR_BR_BASE_IDX', - 'mmPA_SC_GENERIC_SCISSOR_TL', - 'mmPA_SC_GENERIC_SCISSOR_TL_BASE_IDX', - 'mmPA_SC_HP3D_TRAP_SCREEN_COUNT', - 'mmPA_SC_HP3D_TRAP_SCREEN_COUNT_BASE_IDX', - 'mmPA_SC_HP3D_TRAP_SCREEN_H', 'mmPA_SC_HP3D_TRAP_SCREEN_HV_EN', - 'mmPA_SC_HP3D_TRAP_SCREEN_HV_EN_BASE_IDX', - 'mmPA_SC_HP3D_TRAP_SCREEN_HV_LOCK', - 'mmPA_SC_HP3D_TRAP_SCREEN_HV_LOCK_BASE_IDX', - 'mmPA_SC_HP3D_TRAP_SCREEN_H_BASE_IDX', - 'mmPA_SC_HP3D_TRAP_SCREEN_OCCURRENCE', - 'mmPA_SC_HP3D_TRAP_SCREEN_OCCURRENCE_BASE_IDX', - 'mmPA_SC_HP3D_TRAP_SCREEN_V', - 'mmPA_SC_HP3D_TRAP_SCREEN_V_BASE_IDX', 'mmPA_SC_IF_FIFO_SIZE', - 'mmPA_SC_IF_FIFO_SIZE_BASE_IDX', 'mmPA_SC_LINE_CNTL', - 'mmPA_SC_LINE_CNTL_BASE_IDX', 'mmPA_SC_LINE_STIPPLE', - 'mmPA_SC_LINE_STIPPLE_BASE_IDX', 'mmPA_SC_LINE_STIPPLE_STATE', - 'mmPA_SC_LINE_STIPPLE_STATE_BASE_IDX', 'mmPA_SC_MODE_CNTL_0', - 'mmPA_SC_MODE_CNTL_0_BASE_IDX', 'mmPA_SC_MODE_CNTL_1', - 'mmPA_SC_MODE_CNTL_1_BASE_IDX', 'mmPA_SC_NGG_MODE_CNTL', - 'mmPA_SC_NGG_MODE_CNTL_BASE_IDX', 'mmPA_SC_P3D_TRAP_SCREEN_COUNT', - 'mmPA_SC_P3D_TRAP_SCREEN_COUNT_BASE_IDX', - 'mmPA_SC_P3D_TRAP_SCREEN_H', 'mmPA_SC_P3D_TRAP_SCREEN_HV_EN', - 'mmPA_SC_P3D_TRAP_SCREEN_HV_EN_BASE_IDX', - 'mmPA_SC_P3D_TRAP_SCREEN_HV_LOCK', - 'mmPA_SC_P3D_TRAP_SCREEN_HV_LOCK_BASE_IDX', - 'mmPA_SC_P3D_TRAP_SCREEN_H_BASE_IDX', - 'mmPA_SC_P3D_TRAP_SCREEN_OCCURRENCE', - 'mmPA_SC_P3D_TRAP_SCREEN_OCCURRENCE_BASE_IDX', - 'mmPA_SC_P3D_TRAP_SCREEN_V', 'mmPA_SC_P3D_TRAP_SCREEN_V_BASE_IDX', - 'mmPA_SC_PBB_OVERRIDE_FLAG', 'mmPA_SC_PBB_OVERRIDE_FLAG_BASE_IDX', - 'mmPA_SC_PERFCOUNTER0_HI', 'mmPA_SC_PERFCOUNTER0_HI_BASE_IDX', - 'mmPA_SC_PERFCOUNTER0_LO', 'mmPA_SC_PERFCOUNTER0_LO_BASE_IDX', - 'mmPA_SC_PERFCOUNTER0_SELECT', 'mmPA_SC_PERFCOUNTER0_SELECT1', - 'mmPA_SC_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmPA_SC_PERFCOUNTER0_SELECT_BASE_IDX', 'mmPA_SC_PERFCOUNTER1_HI', - 'mmPA_SC_PERFCOUNTER1_HI_BASE_IDX', 'mmPA_SC_PERFCOUNTER1_LO', - 'mmPA_SC_PERFCOUNTER1_LO_BASE_IDX', 'mmPA_SC_PERFCOUNTER1_SELECT', - 'mmPA_SC_PERFCOUNTER1_SELECT_BASE_IDX', 'mmPA_SC_PERFCOUNTER2_HI', - 'mmPA_SC_PERFCOUNTER2_HI_BASE_IDX', 'mmPA_SC_PERFCOUNTER2_LO', - 'mmPA_SC_PERFCOUNTER2_LO_BASE_IDX', 'mmPA_SC_PERFCOUNTER2_SELECT', - 'mmPA_SC_PERFCOUNTER2_SELECT_BASE_IDX', 'mmPA_SC_PERFCOUNTER3_HI', - 'mmPA_SC_PERFCOUNTER3_HI_BASE_IDX', 'mmPA_SC_PERFCOUNTER3_LO', - 'mmPA_SC_PERFCOUNTER3_LO_BASE_IDX', 'mmPA_SC_PERFCOUNTER3_SELECT', - 'mmPA_SC_PERFCOUNTER3_SELECT_BASE_IDX', 'mmPA_SC_PERFCOUNTER4_HI', - 'mmPA_SC_PERFCOUNTER4_HI_BASE_IDX', 'mmPA_SC_PERFCOUNTER4_LO', - 'mmPA_SC_PERFCOUNTER4_LO_BASE_IDX', 'mmPA_SC_PERFCOUNTER4_SELECT', - 'mmPA_SC_PERFCOUNTER4_SELECT_BASE_IDX', 'mmPA_SC_PERFCOUNTER5_HI', - 'mmPA_SC_PERFCOUNTER5_HI_BASE_IDX', 'mmPA_SC_PERFCOUNTER5_LO', - 'mmPA_SC_PERFCOUNTER5_LO_BASE_IDX', 'mmPA_SC_PERFCOUNTER5_SELECT', - 'mmPA_SC_PERFCOUNTER5_SELECT_BASE_IDX', 'mmPA_SC_PERFCOUNTER6_HI', - 'mmPA_SC_PERFCOUNTER6_HI_BASE_IDX', 'mmPA_SC_PERFCOUNTER6_LO', - 'mmPA_SC_PERFCOUNTER6_LO_BASE_IDX', 'mmPA_SC_PERFCOUNTER6_SELECT', - 'mmPA_SC_PERFCOUNTER6_SELECT_BASE_IDX', 'mmPA_SC_PERFCOUNTER7_HI', - 'mmPA_SC_PERFCOUNTER7_HI_BASE_IDX', 'mmPA_SC_PERFCOUNTER7_LO', - 'mmPA_SC_PERFCOUNTER7_LO_BASE_IDX', 'mmPA_SC_PERFCOUNTER7_SELECT', - 'mmPA_SC_PERFCOUNTER7_SELECT_BASE_IDX', - 'mmPA_SC_PKR_WAVE_TABLE_CNTL', - 'mmPA_SC_PKR_WAVE_TABLE_CNTL_BASE_IDX', 'mmPA_SC_RASTER_CONFIG', - 'mmPA_SC_RASTER_CONFIG_1', 'mmPA_SC_RASTER_CONFIG_1_BASE_IDX', - 'mmPA_SC_RASTER_CONFIG_BASE_IDX', 'mmPA_SC_SCREEN_EXTENT_CONTROL', - 'mmPA_SC_SCREEN_EXTENT_CONTROL_BASE_IDX', - 'mmPA_SC_SCREEN_EXTENT_MAX_0', - 'mmPA_SC_SCREEN_EXTENT_MAX_0_BASE_IDX', - 'mmPA_SC_SCREEN_EXTENT_MAX_1', - 'mmPA_SC_SCREEN_EXTENT_MAX_1_BASE_IDX', - 'mmPA_SC_SCREEN_EXTENT_MIN_0', - 'mmPA_SC_SCREEN_EXTENT_MIN_0_BASE_IDX', - 'mmPA_SC_SCREEN_EXTENT_MIN_1', - 'mmPA_SC_SCREEN_EXTENT_MIN_1_BASE_IDX', - 'mmPA_SC_SCREEN_SCISSOR_BR', 'mmPA_SC_SCREEN_SCISSOR_BR_BASE_IDX', - 'mmPA_SC_SCREEN_SCISSOR_TL', 'mmPA_SC_SCREEN_SCISSOR_TL_BASE_IDX', - 'mmPA_SC_SHADER_CONTROL', 'mmPA_SC_SHADER_CONTROL_BASE_IDX', - 'mmPA_SC_TILE_STEERING_CREST_OVERRIDE', - 'mmPA_SC_TILE_STEERING_CREST_OVERRIDE_BASE_IDX', - 'mmPA_SC_TILE_STEERING_OVERRIDE', - 'mmPA_SC_TILE_STEERING_OVERRIDE_BASE_IDX', - 'mmPA_SC_TRAP_SCREEN_COUNT', 'mmPA_SC_TRAP_SCREEN_COUNT_BASE_IDX', - 'mmPA_SC_TRAP_SCREEN_H', 'mmPA_SC_TRAP_SCREEN_HV_EN', - 'mmPA_SC_TRAP_SCREEN_HV_EN_BASE_IDX', - 'mmPA_SC_TRAP_SCREEN_HV_LOCK', - 'mmPA_SC_TRAP_SCREEN_HV_LOCK_BASE_IDX', - 'mmPA_SC_TRAP_SCREEN_H_BASE_IDX', - 'mmPA_SC_TRAP_SCREEN_OCCURRENCE', - 'mmPA_SC_TRAP_SCREEN_OCCURRENCE_BASE_IDX', - 'mmPA_SC_TRAP_SCREEN_V', 'mmPA_SC_TRAP_SCREEN_V_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_0_BR', - 'mmPA_SC_VPORT_SCISSOR_0_BR_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_0_TL', - 'mmPA_SC_VPORT_SCISSOR_0_TL_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_10_BR', - 'mmPA_SC_VPORT_SCISSOR_10_BR_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_10_TL', - 'mmPA_SC_VPORT_SCISSOR_10_TL_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_11_BR', - 'mmPA_SC_VPORT_SCISSOR_11_BR_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_11_TL', - 'mmPA_SC_VPORT_SCISSOR_11_TL_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_12_BR', - 'mmPA_SC_VPORT_SCISSOR_12_BR_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_12_TL', - 'mmPA_SC_VPORT_SCISSOR_12_TL_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_13_BR', - 'mmPA_SC_VPORT_SCISSOR_13_BR_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_13_TL', - 'mmPA_SC_VPORT_SCISSOR_13_TL_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_14_BR', - 'mmPA_SC_VPORT_SCISSOR_14_BR_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_14_TL', - 'mmPA_SC_VPORT_SCISSOR_14_TL_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_15_BR', - 'mmPA_SC_VPORT_SCISSOR_15_BR_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_15_TL', - 'mmPA_SC_VPORT_SCISSOR_15_TL_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_1_BR', - 'mmPA_SC_VPORT_SCISSOR_1_BR_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_1_TL', - 'mmPA_SC_VPORT_SCISSOR_1_TL_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_2_BR', - 'mmPA_SC_VPORT_SCISSOR_2_BR_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_2_TL', - 'mmPA_SC_VPORT_SCISSOR_2_TL_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_3_BR', - 'mmPA_SC_VPORT_SCISSOR_3_BR_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_3_TL', - 'mmPA_SC_VPORT_SCISSOR_3_TL_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_4_BR', - 'mmPA_SC_VPORT_SCISSOR_4_BR_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_4_TL', - 'mmPA_SC_VPORT_SCISSOR_4_TL_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_5_BR', - 'mmPA_SC_VPORT_SCISSOR_5_BR_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_5_TL', - 'mmPA_SC_VPORT_SCISSOR_5_TL_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_6_BR', - 'mmPA_SC_VPORT_SCISSOR_6_BR_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_6_TL', - 'mmPA_SC_VPORT_SCISSOR_6_TL_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_7_BR', - 'mmPA_SC_VPORT_SCISSOR_7_BR_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_7_TL', - 'mmPA_SC_VPORT_SCISSOR_7_TL_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_8_BR', - 'mmPA_SC_VPORT_SCISSOR_8_BR_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_8_TL', - 'mmPA_SC_VPORT_SCISSOR_8_TL_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_9_BR', - 'mmPA_SC_VPORT_SCISSOR_9_BR_BASE_IDX', - 'mmPA_SC_VPORT_SCISSOR_9_TL', - 'mmPA_SC_VPORT_SCISSOR_9_TL_BASE_IDX', 'mmPA_SC_VPORT_ZMAX_0', - 'mmPA_SC_VPORT_ZMAX_0_BASE_IDX', 'mmPA_SC_VPORT_ZMAX_1', - 'mmPA_SC_VPORT_ZMAX_10', 'mmPA_SC_VPORT_ZMAX_10_BASE_IDX', - 'mmPA_SC_VPORT_ZMAX_11', 'mmPA_SC_VPORT_ZMAX_11_BASE_IDX', - 'mmPA_SC_VPORT_ZMAX_12', 'mmPA_SC_VPORT_ZMAX_12_BASE_IDX', - 'mmPA_SC_VPORT_ZMAX_13', 'mmPA_SC_VPORT_ZMAX_13_BASE_IDX', - 'mmPA_SC_VPORT_ZMAX_14', 'mmPA_SC_VPORT_ZMAX_14_BASE_IDX', - 'mmPA_SC_VPORT_ZMAX_15', 'mmPA_SC_VPORT_ZMAX_15_BASE_IDX', - 'mmPA_SC_VPORT_ZMAX_1_BASE_IDX', 'mmPA_SC_VPORT_ZMAX_2', - 'mmPA_SC_VPORT_ZMAX_2_BASE_IDX', 'mmPA_SC_VPORT_ZMAX_3', - 'mmPA_SC_VPORT_ZMAX_3_BASE_IDX', 'mmPA_SC_VPORT_ZMAX_4', - 'mmPA_SC_VPORT_ZMAX_4_BASE_IDX', 'mmPA_SC_VPORT_ZMAX_5', - 'mmPA_SC_VPORT_ZMAX_5_BASE_IDX', 'mmPA_SC_VPORT_ZMAX_6', - 'mmPA_SC_VPORT_ZMAX_6_BASE_IDX', 'mmPA_SC_VPORT_ZMAX_7', - 'mmPA_SC_VPORT_ZMAX_7_BASE_IDX', 'mmPA_SC_VPORT_ZMAX_8', - 'mmPA_SC_VPORT_ZMAX_8_BASE_IDX', 'mmPA_SC_VPORT_ZMAX_9', - 'mmPA_SC_VPORT_ZMAX_9_BASE_IDX', 'mmPA_SC_VPORT_ZMIN_0', - 'mmPA_SC_VPORT_ZMIN_0_BASE_IDX', 'mmPA_SC_VPORT_ZMIN_1', - 'mmPA_SC_VPORT_ZMIN_10', 'mmPA_SC_VPORT_ZMIN_10_BASE_IDX', - 'mmPA_SC_VPORT_ZMIN_11', 'mmPA_SC_VPORT_ZMIN_11_BASE_IDX', - 'mmPA_SC_VPORT_ZMIN_12', 'mmPA_SC_VPORT_ZMIN_12_BASE_IDX', - 'mmPA_SC_VPORT_ZMIN_13', 'mmPA_SC_VPORT_ZMIN_13_BASE_IDX', - 'mmPA_SC_VPORT_ZMIN_14', 'mmPA_SC_VPORT_ZMIN_14_BASE_IDX', - 'mmPA_SC_VPORT_ZMIN_15', 'mmPA_SC_VPORT_ZMIN_15_BASE_IDX', - 'mmPA_SC_VPORT_ZMIN_1_BASE_IDX', 'mmPA_SC_VPORT_ZMIN_2', - 'mmPA_SC_VPORT_ZMIN_2_BASE_IDX', 'mmPA_SC_VPORT_ZMIN_3', - 'mmPA_SC_VPORT_ZMIN_3_BASE_IDX', 'mmPA_SC_VPORT_ZMIN_4', - 'mmPA_SC_VPORT_ZMIN_4_BASE_IDX', 'mmPA_SC_VPORT_ZMIN_5', - 'mmPA_SC_VPORT_ZMIN_5_BASE_IDX', 'mmPA_SC_VPORT_ZMIN_6', - 'mmPA_SC_VPORT_ZMIN_6_BASE_IDX', 'mmPA_SC_VPORT_ZMIN_7', - 'mmPA_SC_VPORT_ZMIN_7_BASE_IDX', 'mmPA_SC_VPORT_ZMIN_8', - 'mmPA_SC_VPORT_ZMIN_8_BASE_IDX', 'mmPA_SC_VPORT_ZMIN_9', - 'mmPA_SC_VPORT_ZMIN_9_BASE_IDX', 'mmPA_SC_WINDOW_OFFSET', - 'mmPA_SC_WINDOW_OFFSET_BASE_IDX', 'mmPA_SC_WINDOW_SCISSOR_BR', - 'mmPA_SC_WINDOW_SCISSOR_BR_BASE_IDX', 'mmPA_SC_WINDOW_SCISSOR_TL', - 'mmPA_SC_WINDOW_SCISSOR_TL_BASE_IDX', - 'mmPA_SIDEBAND_REQUEST_DELAYS', - 'mmPA_SIDEBAND_REQUEST_DELAYS_BASE_IDX', 'mmPA_STATE_STEREO_X', - 'mmPA_STATE_STEREO_X_BASE_IDX', 'mmPA_STEREO_CNTL', - 'mmPA_STEREO_CNTL_BASE_IDX', 'mmPA_SU_CNTL_STATUS', - 'mmPA_SU_CNTL_STATUS_BASE_IDX', 'mmPA_SU_HARDWARE_SCREEN_OFFSET', - 'mmPA_SU_HARDWARE_SCREEN_OFFSET_BASE_IDX', 'mmPA_SU_LINE_CNTL', - 'mmPA_SU_LINE_CNTL_BASE_IDX', 'mmPA_SU_LINE_STIPPLE_CNTL', - 'mmPA_SU_LINE_STIPPLE_CNTL_BASE_IDX', - 'mmPA_SU_LINE_STIPPLE_SCALE', - 'mmPA_SU_LINE_STIPPLE_SCALE_BASE_IDX', - 'mmPA_SU_LINE_STIPPLE_VALUE', - 'mmPA_SU_LINE_STIPPLE_VALUE_BASE_IDX', - 'mmPA_SU_OVER_RASTERIZATION_CNTL', - 'mmPA_SU_OVER_RASTERIZATION_CNTL_BASE_IDX', - 'mmPA_SU_PERFCOUNTER0_HI', 'mmPA_SU_PERFCOUNTER0_HI_BASE_IDX', - 'mmPA_SU_PERFCOUNTER0_LO', 'mmPA_SU_PERFCOUNTER0_LO_BASE_IDX', - 'mmPA_SU_PERFCOUNTER0_SELECT', 'mmPA_SU_PERFCOUNTER0_SELECT1', - 'mmPA_SU_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmPA_SU_PERFCOUNTER0_SELECT_BASE_IDX', 'mmPA_SU_PERFCOUNTER1_HI', - 'mmPA_SU_PERFCOUNTER1_HI_BASE_IDX', 'mmPA_SU_PERFCOUNTER1_LO', - 'mmPA_SU_PERFCOUNTER1_LO_BASE_IDX', 'mmPA_SU_PERFCOUNTER1_SELECT', - 'mmPA_SU_PERFCOUNTER1_SELECT1', - 'mmPA_SU_PERFCOUNTER1_SELECT1_BASE_IDX', - 'mmPA_SU_PERFCOUNTER1_SELECT_BASE_IDX', 'mmPA_SU_PERFCOUNTER2_HI', - 'mmPA_SU_PERFCOUNTER2_HI_BASE_IDX', 'mmPA_SU_PERFCOUNTER2_LO', - 'mmPA_SU_PERFCOUNTER2_LO_BASE_IDX', 'mmPA_SU_PERFCOUNTER2_SELECT', - 'mmPA_SU_PERFCOUNTER2_SELECT1', - 'mmPA_SU_PERFCOUNTER2_SELECT1_BASE_IDX', - 'mmPA_SU_PERFCOUNTER2_SELECT_BASE_IDX', 'mmPA_SU_PERFCOUNTER3_HI', - 'mmPA_SU_PERFCOUNTER3_HI_BASE_IDX', 'mmPA_SU_PERFCOUNTER3_LO', - 'mmPA_SU_PERFCOUNTER3_LO_BASE_IDX', 'mmPA_SU_PERFCOUNTER3_SELECT', - 'mmPA_SU_PERFCOUNTER3_SELECT1', - 'mmPA_SU_PERFCOUNTER3_SELECT1_BASE_IDX', - 'mmPA_SU_PERFCOUNTER3_SELECT_BASE_IDX', 'mmPA_SU_POINT_MINMAX', - 'mmPA_SU_POINT_MINMAX_BASE_IDX', 'mmPA_SU_POINT_SIZE', - 'mmPA_SU_POINT_SIZE_BASE_IDX', 'mmPA_SU_POLY_OFFSET_BACK_OFFSET', - 'mmPA_SU_POLY_OFFSET_BACK_OFFSET_BASE_IDX', - 'mmPA_SU_POLY_OFFSET_BACK_SCALE', - 'mmPA_SU_POLY_OFFSET_BACK_SCALE_BASE_IDX', - 'mmPA_SU_POLY_OFFSET_CLAMP', 'mmPA_SU_POLY_OFFSET_CLAMP_BASE_IDX', - 'mmPA_SU_POLY_OFFSET_DB_FMT_CNTL', - 'mmPA_SU_POLY_OFFSET_DB_FMT_CNTL_BASE_IDX', - 'mmPA_SU_POLY_OFFSET_FRONT_OFFSET', - 'mmPA_SU_POLY_OFFSET_FRONT_OFFSET_BASE_IDX', - 'mmPA_SU_POLY_OFFSET_FRONT_SCALE', - 'mmPA_SU_POLY_OFFSET_FRONT_SCALE_BASE_IDX', - 'mmPA_SU_PRIM_FILTER_CNTL', 'mmPA_SU_PRIM_FILTER_CNTL_BASE_IDX', - 'mmPA_SU_SC_MODE_CNTL', 'mmPA_SU_SC_MODE_CNTL_BASE_IDX', - 'mmPA_SU_SMALL_PRIM_FILTER_CNTL', - 'mmPA_SU_SMALL_PRIM_FILTER_CNTL_BASE_IDX', 'mmPA_SU_VTX_CNTL', - 'mmPA_SU_VTX_CNTL_BASE_IDX', 'mmPCC_PERF_COUNTER', - 'mmPCC_PERF_COUNTER_BASE_IDX', 'mmPMM_GENERAL_CNTL', - 'mmPMM_GENERAL_CNTL_BASE_IDX', 'mmPWRBRK_PERF_COUNTER', - 'mmPWRBRK_PERF_COUNTER_BASE_IDX', 'mmRLC_AUTO_PG_CTRL', - 'mmRLC_AUTO_PG_CTRL_BASE_IDX', 'mmRLC_BUSY_CLK_CNTL', - 'mmRLC_BUSY_CLK_CNTL_BASE_IDX', 'mmRLC_CAC_MASK_CNTL', - 'mmRLC_CAC_MASK_CNTL_BASE_IDX', 'mmRLC_CAPTURE_GPU_CLOCK_COUNT', - 'mmRLC_CAPTURE_GPU_CLOCK_COUNT_1', - 'mmRLC_CAPTURE_GPU_CLOCK_COUNT_1_BASE_IDX', - 'mmRLC_CAPTURE_GPU_CLOCK_COUNT_2', - 'mmRLC_CAPTURE_GPU_CLOCK_COUNT_2_BASE_IDX', - 'mmRLC_CAPTURE_GPU_CLOCK_COUNT_BASE_IDX', 'mmRLC_CGCG_CGLS_CTRL', - 'mmRLC_CGCG_CGLS_CTRL_3D', 'mmRLC_CGCG_CGLS_CTRL_3D_BASE_IDX', - 'mmRLC_CGCG_CGLS_CTRL_BASE_IDX', 'mmRLC_CGCG_RAMP_CTRL', - 'mmRLC_CGCG_RAMP_CTRL_3D', 'mmRLC_CGCG_RAMP_CTRL_3D_BASE_IDX', - 'mmRLC_CGCG_RAMP_CTRL_BASE_IDX', 'mmRLC_CGTT_MGCG_OVERRIDE', - 'mmRLC_CGTT_MGCG_OVERRIDE_BASE_IDX', 'mmRLC_CLK_CNTL', - 'mmRLC_CLK_CNTL_BASE_IDX', 'mmRLC_CLK_COUNT_CTRL', - 'mmRLC_CLK_COUNT_CTRL_BASE_IDX', 'mmRLC_CLK_COUNT_GFXCLK_LSB', - 'mmRLC_CLK_COUNT_GFXCLK_LSB_BASE_IDX', - 'mmRLC_CLK_COUNT_GFXCLK_MSB', - 'mmRLC_CLK_COUNT_GFXCLK_MSB_BASE_IDX', - 'mmRLC_CLK_COUNT_REFCLK_LSB', - 'mmRLC_CLK_COUNT_REFCLK_LSB_BASE_IDX', - 'mmRLC_CLK_COUNT_REFCLK_MSB', - 'mmRLC_CLK_COUNT_REFCLK_MSB_BASE_IDX', 'mmRLC_CLK_COUNT_STAT', - 'mmRLC_CLK_COUNT_STAT_BASE_IDX', 'mmRLC_CLK_STATUS', - 'mmRLC_CLK_STATUS_BASE_IDX', 'mmRLC_CNTL', 'mmRLC_CNTL_BASE_IDX', - 'mmRLC_CPAXI_DOORBELL_MON_CTRL', - 'mmRLC_CPAXI_DOORBELL_MON_CTRL_BASE_IDX', - 'mmRLC_CPAXI_DOORBELL_MON_DATA_LSB', - 'mmRLC_CPAXI_DOORBELL_MON_DATA_LSB_BASE_IDX', - 'mmRLC_CPAXI_DOORBELL_MON_DATA_MSB', - 'mmRLC_CPAXI_DOORBELL_MON_DATA_MSB_BASE_IDX', - 'mmRLC_CPAXI_DOORBELL_MON_STAT', - 'mmRLC_CPAXI_DOORBELL_MON_STAT_BASE_IDX', 'mmRLC_CP_EOF_INT', - 'mmRLC_CP_EOF_INT_BASE_IDX', 'mmRLC_CP_EOF_INT_CNT', - 'mmRLC_CP_EOF_INT_CNT_BASE_IDX', 'mmRLC_CP_SCHEDULERS', - 'mmRLC_CP_SCHEDULERS_BASE_IDX', 'mmRLC_CP_STAT_INVAL_CTRL', - 'mmRLC_CP_STAT_INVAL_CTRL_BASE_IDX', 'mmRLC_CP_STAT_INVAL_STAT', - 'mmRLC_CP_STAT_INVAL_STAT_BASE_IDX', 'mmRLC_CSIB_ADDR_HI', - 'mmRLC_CSIB_ADDR_HI_BASE_IDX', 'mmRLC_CSIB_ADDR_LO', - 'mmRLC_CSIB_ADDR_LO_BASE_IDX', 'mmRLC_CSIB_LENGTH', - 'mmRLC_CSIB_LENGTH_BASE_IDX', 'mmRLC_DYN_PG_REQUEST', - 'mmRLC_DYN_PG_REQUEST_BASE_IDX', 'mmRLC_DYN_PG_STATUS', - 'mmRLC_DYN_PG_STATUS_BASE_IDX', 'mmRLC_F32_UCODE_VERSION', - 'mmRLC_F32_UCODE_VERSION_BASE_IDX', 'mmRLC_FWL_FIRST_VIOL_ADDR', - 'mmRLC_FWL_FIRST_VIOL_ADDR_BASE_IDX', 'mmRLC_GFX_RM_CNTL', - 'mmRLC_GFX_RM_CNTL_BASE_IDX', 'mmRLC_GPM_CP_DMA_COMPLETE_T0', - 'mmRLC_GPM_CP_DMA_COMPLETE_T0_BASE_IDX', - 'mmRLC_GPM_CP_DMA_COMPLETE_T1', - 'mmRLC_GPM_CP_DMA_COMPLETE_T1_BASE_IDX', 'mmRLC_GPM_GENERAL_0', - 'mmRLC_GPM_GENERAL_0_BASE_IDX', 'mmRLC_GPM_GENERAL_1', - 'mmRLC_GPM_GENERAL_10', 'mmRLC_GPM_GENERAL_10_BASE_IDX', - 'mmRLC_GPM_GENERAL_11', 'mmRLC_GPM_GENERAL_11_BASE_IDX', - 'mmRLC_GPM_GENERAL_12', 'mmRLC_GPM_GENERAL_12_BASE_IDX', - 'mmRLC_GPM_GENERAL_13', 'mmRLC_GPM_GENERAL_13_BASE_IDX', - 'mmRLC_GPM_GENERAL_14', 'mmRLC_GPM_GENERAL_14_BASE_IDX', - 'mmRLC_GPM_GENERAL_15', 'mmRLC_GPM_GENERAL_15_BASE_IDX', - 'mmRLC_GPM_GENERAL_16', 'mmRLC_GPM_GENERAL_16_BASE_IDX', - 'mmRLC_GPM_GENERAL_1_BASE_IDX', 'mmRLC_GPM_GENERAL_2', - 'mmRLC_GPM_GENERAL_2_BASE_IDX', 'mmRLC_GPM_GENERAL_3', - 'mmRLC_GPM_GENERAL_3_BASE_IDX', 'mmRLC_GPM_GENERAL_4', - 'mmRLC_GPM_GENERAL_4_BASE_IDX', 'mmRLC_GPM_GENERAL_5', - 'mmRLC_GPM_GENERAL_5_BASE_IDX', 'mmRLC_GPM_GENERAL_6', - 'mmRLC_GPM_GENERAL_6_BASE_IDX', 'mmRLC_GPM_GENERAL_7', - 'mmRLC_GPM_GENERAL_7_BASE_IDX', 'mmRLC_GPM_GENERAL_8', - 'mmRLC_GPM_GENERAL_8_BASE_IDX', 'mmRLC_GPM_GENERAL_9', - 'mmRLC_GPM_GENERAL_9_BASE_IDX', 'mmRLC_GPM_INT_DISABLE_TH0', - 'mmRLC_GPM_INT_DISABLE_TH0_BASE_IDX', 'mmRLC_GPM_INT_FORCE_TH0', - 'mmRLC_GPM_INT_FORCE_TH0_BASE_IDX', 'mmRLC_GPM_INT_STAT_TH0', - 'mmRLC_GPM_INT_STAT_TH0_BASE_IDX', 'mmRLC_GPM_IRAM_ADDR', - 'mmRLC_GPM_IRAM_ADDR_BASE_IDX', 'mmRLC_GPM_IRAM_DATA', - 'mmRLC_GPM_IRAM_DATA_BASE_IDX', 'mmRLC_GPM_LEGACY_INT_CLEAR', - 'mmRLC_GPM_LEGACY_INT_CLEAR_BASE_IDX', - 'mmRLC_GPM_LEGACY_INT_DISABLE', - 'mmRLC_GPM_LEGACY_INT_DISABLE_BASE_IDX', - 'mmRLC_GPM_LEGACY_INT_STAT', 'mmRLC_GPM_LEGACY_INT_STAT_BASE_IDX', - 'mmRLC_GPM_LOG_CONT', 'mmRLC_GPM_LOG_CONT_BASE_IDX', - 'mmRLC_GPM_LOG_SIZE', 'mmRLC_GPM_LOG_SIZE_BASE_IDX', - 'mmRLC_GPM_PERF_COUNT_0', 'mmRLC_GPM_PERF_COUNT_0_BASE_IDX', - 'mmRLC_GPM_PERF_COUNT_1', 'mmRLC_GPM_PERF_COUNT_1_BASE_IDX', - 'mmRLC_GPM_SCRATCH_ADDR', 'mmRLC_GPM_SCRATCH_ADDR_BASE_IDX', - 'mmRLC_GPM_SCRATCH_DATA', 'mmRLC_GPM_SCRATCH_DATA_BASE_IDX', - 'mmRLC_GPM_STAT', 'mmRLC_GPM_STAT_BASE_IDX', - 'mmRLC_GPM_THREAD_ENABLE', 'mmRLC_GPM_THREAD_ENABLE_BASE_IDX', - 'mmRLC_GPM_THREAD_PRIORITY', 'mmRLC_GPM_THREAD_PRIORITY_BASE_IDX', - 'mmRLC_GPM_THREAD_RESET', 'mmRLC_GPM_THREAD_RESET_BASE_IDX', - 'mmRLC_GPM_TIMER_CTRL', 'mmRLC_GPM_TIMER_CTRL_BASE_IDX', - 'mmRLC_GPM_TIMER_INT_0', 'mmRLC_GPM_TIMER_INT_0_BASE_IDX', - 'mmRLC_GPM_TIMER_INT_1', 'mmRLC_GPM_TIMER_INT_1_BASE_IDX', - 'mmRLC_GPM_TIMER_INT_2', 'mmRLC_GPM_TIMER_INT_2_BASE_IDX', - 'mmRLC_GPM_TIMER_INT_3', 'mmRLC_GPM_TIMER_INT_3_BASE_IDX', - 'mmRLC_GPM_TIMER_INT_4', 'mmRLC_GPM_TIMER_INT_4_BASE_IDX', - 'mmRLC_GPM_TIMER_STAT', 'mmRLC_GPM_TIMER_STAT_BASE_IDX', - 'mmRLC_GPM_UCODE_ADDR', 'mmRLC_GPM_UCODE_ADDR_BASE_IDX', - 'mmRLC_GPM_UCODE_DATA', 'mmRLC_GPM_UCODE_DATA_BASE_IDX', - 'mmRLC_GPM_UTCL1_CNTL_0', 'mmRLC_GPM_UTCL1_CNTL_0_BASE_IDX', - 'mmRLC_GPM_UTCL1_CNTL_1', 'mmRLC_GPM_UTCL1_CNTL_1_BASE_IDX', - 'mmRLC_GPM_UTCL1_CNTL_2', 'mmRLC_GPM_UTCL1_CNTL_2_BASE_IDX', - 'mmRLC_GPM_UTCL1_TH0_ERROR_1', - 'mmRLC_GPM_UTCL1_TH0_ERROR_1_BASE_IDX', - 'mmRLC_GPM_UTCL1_TH0_ERROR_2', - 'mmRLC_GPM_UTCL1_TH0_ERROR_2_BASE_IDX', - 'mmRLC_GPM_UTCL1_TH1_ERROR_1', - 'mmRLC_GPM_UTCL1_TH1_ERROR_1_BASE_IDX', - 'mmRLC_GPM_UTCL1_TH1_ERROR_2', - 'mmRLC_GPM_UTCL1_TH1_ERROR_2_BASE_IDX', - 'mmRLC_GPM_UTCL1_TH2_ERROR_1', - 'mmRLC_GPM_UTCL1_TH2_ERROR_1_BASE_IDX', - 'mmRLC_GPM_UTCL1_TH2_ERROR_2', - 'mmRLC_GPM_UTCL1_TH2_ERROR_2_BASE_IDX', 'mmRLC_GPR_REG1', - 'mmRLC_GPR_REG1_BASE_IDX', 'mmRLC_GPR_REG2', - 'mmRLC_GPR_REG2_BASE_IDX', 'mmRLC_GPU_CLOCK_32', - 'mmRLC_GPU_CLOCK_32_BASE_IDX', 'mmRLC_GPU_CLOCK_32_RES_SEL', - 'mmRLC_GPU_CLOCK_32_RES_SEL_BASE_IDX', - 'mmRLC_GPU_CLOCK_COUNT_LSB', 'mmRLC_GPU_CLOCK_COUNT_LSB_1', - 'mmRLC_GPU_CLOCK_COUNT_LSB_1_BASE_IDX', - 'mmRLC_GPU_CLOCK_COUNT_LSB_2', - 'mmRLC_GPU_CLOCK_COUNT_LSB_2_BASE_IDX', - 'mmRLC_GPU_CLOCK_COUNT_LSB_BASE_IDX', 'mmRLC_GPU_CLOCK_COUNT_MSB', - 'mmRLC_GPU_CLOCK_COUNT_MSB_1', - 'mmRLC_GPU_CLOCK_COUNT_MSB_1_BASE_IDX', - 'mmRLC_GPU_CLOCK_COUNT_MSB_2', - 'mmRLC_GPU_CLOCK_COUNT_MSB_2_BASE_IDX', - 'mmRLC_GPU_CLOCK_COUNT_MSB_BASE_IDX', - 'mmRLC_GPU_CLOCK_COUNT_SPM_LSB', - 'mmRLC_GPU_CLOCK_COUNT_SPM_LSB_BASE_IDX', - 'mmRLC_GPU_CLOCK_COUNT_SPM_MSB', - 'mmRLC_GPU_CLOCK_COUNT_SPM_MSB_BASE_IDX', - 'mmRLC_GPU_IOV_ACTIVE_FCN_ID', - 'mmRLC_GPU_IOV_ACTIVE_FCN_ID_BASE_IDX', 'mmRLC_GPU_IOV_CFG_REG1', - 'mmRLC_GPU_IOV_CFG_REG1_BASE_IDX', 'mmRLC_GPU_IOV_CFG_REG2', - 'mmRLC_GPU_IOV_CFG_REG2_BASE_IDX', 'mmRLC_GPU_IOV_CFG_REG6', - 'mmRLC_GPU_IOV_CFG_REG6_BASE_IDX', 'mmRLC_GPU_IOV_CFG_REG8', - 'mmRLC_GPU_IOV_CFG_REG8_BASE_IDX', 'mmRLC_GPU_IOV_F32_CNTL', - 'mmRLC_GPU_IOV_F32_CNTL_BASE_IDX', 'mmRLC_GPU_IOV_F32_RESET', - 'mmRLC_GPU_IOV_F32_RESET_BASE_IDX', 'mmRLC_GPU_IOV_INT_DISABLE', - 'mmRLC_GPU_IOV_INT_DISABLE_BASE_IDX', 'mmRLC_GPU_IOV_INT_FORCE', - 'mmRLC_GPU_IOV_INT_FORCE_BASE_IDX', 'mmRLC_GPU_IOV_INT_STAT', - 'mmRLC_GPU_IOV_INT_STAT_BASE_IDX', 'mmRLC_GPU_IOV_PERF_CNT_CNTL', - 'mmRLC_GPU_IOV_PERF_CNT_CNTL_BASE_IDX', - 'mmRLC_GPU_IOV_PERF_CNT_RD_ADDR', - 'mmRLC_GPU_IOV_PERF_CNT_RD_ADDR_BASE_IDX', - 'mmRLC_GPU_IOV_PERF_CNT_RD_DATA', - 'mmRLC_GPU_IOV_PERF_CNT_RD_DATA_BASE_IDX', - 'mmRLC_GPU_IOV_PERF_CNT_WR_ADDR', - 'mmRLC_GPU_IOV_PERF_CNT_WR_ADDR_BASE_IDX', - 'mmRLC_GPU_IOV_PERF_CNT_WR_DATA', - 'mmRLC_GPU_IOV_PERF_CNT_WR_DATA_BASE_IDX', - 'mmRLC_GPU_IOV_RLC_RESPONSE', - 'mmRLC_GPU_IOV_RLC_RESPONSE_BASE_IDX', 'mmRLC_GPU_IOV_SCH_0', - 'mmRLC_GPU_IOV_SCH_0_BASE_IDX', 'mmRLC_GPU_IOV_SCH_1', - 'mmRLC_GPU_IOV_SCH_1_BASE_IDX', 'mmRLC_GPU_IOV_SCH_2', - 'mmRLC_GPU_IOV_SCH_2_BASE_IDX', 'mmRLC_GPU_IOV_SCH_3', - 'mmRLC_GPU_IOV_SCH_3_BASE_IDX', 'mmRLC_GPU_IOV_SCH_BLOCK', - 'mmRLC_GPU_IOV_SCH_BLOCK_BASE_IDX', 'mmRLC_GPU_IOV_SCRATCH_ADDR', - 'mmRLC_GPU_IOV_SCRATCH_ADDR_BASE_IDX', - 'mmRLC_GPU_IOV_SCRATCH_DATA', - 'mmRLC_GPU_IOV_SCRATCH_DATA_BASE_IDX', - 'mmRLC_GPU_IOV_SDMA0_BUSY_STATUS', - 'mmRLC_GPU_IOV_SDMA0_BUSY_STATUS_BASE_IDX', - 'mmRLC_GPU_IOV_SDMA0_STATUS', - 'mmRLC_GPU_IOV_SDMA0_STATUS_BASE_IDX', - 'mmRLC_GPU_IOV_SDMA1_BUSY_STATUS', - 'mmRLC_GPU_IOV_SDMA1_BUSY_STATUS_BASE_IDX', - 'mmRLC_GPU_IOV_SDMA1_STATUS', - 'mmRLC_GPU_IOV_SDMA1_STATUS_BASE_IDX', - 'mmRLC_GPU_IOV_SDMA2_BUSY_STATUS', - 'mmRLC_GPU_IOV_SDMA2_BUSY_STATUS_BASE_IDX', - 'mmRLC_GPU_IOV_SDMA2_STATUS', - 'mmRLC_GPU_IOV_SDMA2_STATUS_BASE_IDX', - 'mmRLC_GPU_IOV_SDMA3_BUSY_STATUS', - 'mmRLC_GPU_IOV_SDMA3_BUSY_STATUS_BASE_IDX', - 'mmRLC_GPU_IOV_SDMA3_STATUS', - 'mmRLC_GPU_IOV_SDMA3_STATUS_BASE_IDX', - 'mmRLC_GPU_IOV_SDMA4_BUSY_STATUS', - 'mmRLC_GPU_IOV_SDMA4_BUSY_STATUS_BASE_IDX', - 'mmRLC_GPU_IOV_SDMA4_STATUS', - 'mmRLC_GPU_IOV_SDMA4_STATUS_BASE_IDX', - 'mmRLC_GPU_IOV_SDMA5_BUSY_STATUS', - 'mmRLC_GPU_IOV_SDMA5_BUSY_STATUS_BASE_IDX', - 'mmRLC_GPU_IOV_SDMA5_STATUS', - 'mmRLC_GPU_IOV_SDMA5_STATUS_BASE_IDX', - 'mmRLC_GPU_IOV_SDMA6_BUSY_STATUS', - 'mmRLC_GPU_IOV_SDMA6_BUSY_STATUS_BASE_IDX', - 'mmRLC_GPU_IOV_SDMA6_STATUS', - 'mmRLC_GPU_IOV_SDMA6_STATUS_BASE_IDX', - 'mmRLC_GPU_IOV_SDMA7_BUSY_STATUS', - 'mmRLC_GPU_IOV_SDMA7_BUSY_STATUS_BASE_IDX', - 'mmRLC_GPU_IOV_SDMA7_STATUS', - 'mmRLC_GPU_IOV_SDMA7_STATUS_BASE_IDX', - 'mmRLC_GPU_IOV_SMU_RESPONSE', - 'mmRLC_GPU_IOV_SMU_RESPONSE_BASE_IDX', 'mmRLC_GPU_IOV_UCODE_ADDR', - 'mmRLC_GPU_IOV_UCODE_ADDR_BASE_IDX', 'mmRLC_GPU_IOV_UCODE_DATA', - 'mmRLC_GPU_IOV_UCODE_DATA_BASE_IDX', - 'mmRLC_GPU_IOV_VF_DOORBELL_STATUS', - 'mmRLC_GPU_IOV_VF_DOORBELL_STATUS_BASE_IDX', - 'mmRLC_GPU_IOV_VF_DOORBELL_STATUS_CLR', - 'mmRLC_GPU_IOV_VF_DOORBELL_STATUS_CLR_BASE_IDX', - 'mmRLC_GPU_IOV_VF_DOORBELL_STATUS_SET', - 'mmRLC_GPU_IOV_VF_DOORBELL_STATUS_SET_BASE_IDX', - 'mmRLC_GPU_IOV_VF_ENABLE', 'mmRLC_GPU_IOV_VF_ENABLE_BASE_IDX', - 'mmRLC_GPU_IOV_VF_MASK', 'mmRLC_GPU_IOV_VF_MASK_BASE_IDX', - 'mmRLC_GPU_IOV_VIRT_RESET_REQ', - 'mmRLC_GPU_IOV_VIRT_RESET_REQ_BASE_IDX', - 'mmRLC_GPU_IOV_VM_BUSY_STATUS', - 'mmRLC_GPU_IOV_VM_BUSY_STATUS_BASE_IDX', 'mmRLC_GTS_OFFSET_LSB', - 'mmRLC_GTS_OFFSET_LSB_BASE_IDX', 'mmRLC_GTS_OFFSET_MSB', - 'mmRLC_GTS_OFFSET_MSB_BASE_IDX', 'mmRLC_HYP_BOOTLOAD_ADDR_HI', - 'mmRLC_HYP_BOOTLOAD_ADDR_HI_BASE_IDX', - 'mmRLC_HYP_BOOTLOAD_ADDR_LO', - 'mmRLC_HYP_BOOTLOAD_ADDR_LO_BASE_IDX', 'mmRLC_HYP_BOOTLOAD_SIZE', - 'mmRLC_HYP_BOOTLOAD_SIZE_BASE_IDX', 'mmRLC_HYP_RESET_VECTOR', - 'mmRLC_HYP_RESET_VECTOR_BASE_IDX', 'mmRLC_HYP_RLCG_UCODE_CHKSUM', - 'mmRLC_HYP_RLCG_UCODE_CHKSUM_BASE_IDX', - 'mmRLC_HYP_RLCP_UCODE_CHKSUM', - 'mmRLC_HYP_RLCP_UCODE_CHKSUM_BASE_IDX', - 'mmRLC_HYP_RLCV_UCODE_CHKSUM', - 'mmRLC_HYP_RLCV_UCODE_CHKSUM_BASE_IDX', 'mmRLC_HYP_SEMAPHORE_0', - 'mmRLC_HYP_SEMAPHORE_0_BASE_IDX', 'mmRLC_HYP_SEMAPHORE_1', - 'mmRLC_HYP_SEMAPHORE_1_BASE_IDX', 'mmRLC_HYP_SEMAPHORE_2', - 'mmRLC_HYP_SEMAPHORE_2_BASE_IDX', 'mmRLC_HYP_SEMAPHORE_3', - 'mmRLC_HYP_SEMAPHORE_3_BASE_IDX', 'mmRLC_IH_COOKIE', - 'mmRLC_IH_COOKIE_BASE_IDX', 'mmRLC_IH_COOKIE_CNTL', - 'mmRLC_IH_COOKIE_CNTL_BASE_IDX', 'mmRLC_INT_STAT', - 'mmRLC_INT_STAT_BASE_IDX', 'mmRLC_JUMP_TABLE_RESTORE', - 'mmRLC_JUMP_TABLE_RESTORE_BASE_IDX', - 'mmRLC_LB_ALWAYS_ACTIVE_WGP_MASK', - 'mmRLC_LB_ALWAYS_ACTIVE_WGP_MASK_BASE_IDX', 'mmRLC_LB_CNTL', - 'mmRLC_LB_CNTL_BASE_IDX', 'mmRLC_LB_CNTR_1', - 'mmRLC_LB_CNTR_1_BASE_IDX', 'mmRLC_LB_CNTR_2', - 'mmRLC_LB_CNTR_2_BASE_IDX', 'mmRLC_LB_CNTR_INIT_1', - 'mmRLC_LB_CNTR_INIT_1_BASE_IDX', 'mmRLC_LB_CNTR_INIT_2', - 'mmRLC_LB_CNTR_INIT_2_BASE_IDX', 'mmRLC_LB_CNTR_MAX_1', - 'mmRLC_LB_CNTR_MAX_1_BASE_IDX', 'mmRLC_LB_CNTR_MAX_2', - 'mmRLC_LB_CNTR_MAX_2_BASE_IDX', 'mmRLC_LB_CONFIG_1', - 'mmRLC_LB_CONFIG_1_BASE_IDX', 'mmRLC_LB_CONFIG_2', - 'mmRLC_LB_CONFIG_2_BASE_IDX', 'mmRLC_LB_CONFIG_3', - 'mmRLC_LB_CONFIG_3_BASE_IDX', 'mmRLC_LB_CONFIG_4', - 'mmRLC_LB_CONFIG_4_BASE_IDX', 'mmRLC_LB_CONFIG_5', - 'mmRLC_LB_CONFIG_5_BASE_IDX', 'mmRLC_LB_DELAY', - 'mmRLC_LB_DELAY_BASE_IDX', 'mmRLC_LB_INIT_WGP_MASK', - 'mmRLC_LB_INIT_WGP_MASK_BASE_IDX', 'mmRLC_LB_PARAMS', - 'mmRLC_LB_PARAMS_BASE_IDX', 'mmRLC_LB_WGP_STAT', - 'mmRLC_LB_WGP_STAT_BASE_IDX', 'mmRLC_MAX_PG_WGP', - 'mmRLC_MAX_PG_WGP_BASE_IDX', 'mmRLC_MEM_SLP_CNTL', - 'mmRLC_MEM_SLP_CNTL_BASE_IDX', 'mmRLC_MGCG_CTRL', - 'mmRLC_MGCG_CTRL_BASE_IDX', 'mmRLC_PACE_INT_CLEAR', - 'mmRLC_PACE_INT_CLEAR_BASE_IDX', 'mmRLC_PACE_INT_DISABLE', - 'mmRLC_PACE_INT_DISABLE_BASE_IDX', 'mmRLC_PACE_INT_FORCE', - 'mmRLC_PACE_INT_FORCE_BASE_IDX', 'mmRLC_PACE_INT_STAT', - 'mmRLC_PACE_INT_STAT_BASE_IDX', 'mmRLC_PACE_SCRATCH_ADDR', - 'mmRLC_PACE_SCRATCH_ADDR_BASE_IDX', 'mmRLC_PACE_SCRATCH_DATA', - 'mmRLC_PACE_SCRATCH_DATA_BASE_IDX', 'mmRLC_PACE_SPARE_INT', - 'mmRLC_PACE_SPARE_INT_1', 'mmRLC_PACE_SPARE_INT_1_BASE_IDX', - 'mmRLC_PACE_SPARE_INT_BASE_IDX', 'mmRLC_PACE_TIMER_CTRL', - 'mmRLC_PACE_TIMER_CTRL_BASE_IDX', 'mmRLC_PACE_TIMER_INT_0', - 'mmRLC_PACE_TIMER_INT_0_BASE_IDX', 'mmRLC_PACE_TIMER_INT_1', - 'mmRLC_PACE_TIMER_INT_1_BASE_IDX', 'mmRLC_PACE_TIMER_STAT', - 'mmRLC_PACE_TIMER_STAT_BASE_IDX', 'mmRLC_PACE_UCODE_ADDR', - 'mmRLC_PACE_UCODE_ADDR_BASE_IDX', 'mmRLC_PACE_UCODE_DATA', - 'mmRLC_PACE_UCODE_DATA_BASE_IDX', - 'mmRLC_PCC_STRETCH_HYSTERESIS_CNTL', - 'mmRLC_PCC_STRETCH_HYSTERESIS_CNTL_BASE_IDX', - 'mmRLC_PERFCOUNTER0_HI', 'mmRLC_PERFCOUNTER0_HI_BASE_IDX', - 'mmRLC_PERFCOUNTER0_LO', 'mmRLC_PERFCOUNTER0_LO_BASE_IDX', - 'mmRLC_PERFCOUNTER0_SELECT', 'mmRLC_PERFCOUNTER0_SELECT_BASE_IDX', - 'mmRLC_PERFCOUNTER1_HI', 'mmRLC_PERFCOUNTER1_HI_BASE_IDX', - 'mmRLC_PERFCOUNTER1_LO', 'mmRLC_PERFCOUNTER1_LO_BASE_IDX', - 'mmRLC_PERFCOUNTER1_SELECT', 'mmRLC_PERFCOUNTER1_SELECT_BASE_IDX', - 'mmRLC_PERFMON_CLK_CNTL', 'mmRLC_PERFMON_CLK_CNTL_BASE_IDX', - 'mmRLC_PERFMON_CNTL', 'mmRLC_PERFMON_CNTL_BASE_IDX', - 'mmRLC_PG_ALWAYS_ON_WGP_MASK', - 'mmRLC_PG_ALWAYS_ON_WGP_MASK_BASE_IDX', 'mmRLC_PG_CNTL', - 'mmRLC_PG_CNTL_BASE_IDX', 'mmRLC_PG_DELAY', 'mmRLC_PG_DELAY_2', - 'mmRLC_PG_DELAY_2_BASE_IDX', 'mmRLC_PG_DELAY_3', - 'mmRLC_PG_DELAY_3_BASE_IDX', 'mmRLC_PG_DELAY_BASE_IDX', - 'mmRLC_PREWALKER_UTCL1_ADDR_LSB', - 'mmRLC_PREWALKER_UTCL1_ADDR_LSB_BASE_IDX', - 'mmRLC_PREWALKER_UTCL1_ADDR_MSB', - 'mmRLC_PREWALKER_UTCL1_ADDR_MSB_BASE_IDX', - 'mmRLC_PREWALKER_UTCL1_CNTL', - 'mmRLC_PREWALKER_UTCL1_CNTL_BASE_IDX', - 'mmRLC_PREWALKER_UTCL1_SIZE_LSB', - 'mmRLC_PREWALKER_UTCL1_SIZE_LSB_BASE_IDX', - 'mmRLC_PREWALKER_UTCL1_SIZE_MSB', - 'mmRLC_PREWALKER_UTCL1_SIZE_MSB_BASE_IDX', - 'mmRLC_PREWALKER_UTCL1_TRIG', - 'mmRLC_PREWALKER_UTCL1_TRIG_BASE_IDX', 'mmRLC_R2I_CNTL_0', - 'mmRLC_R2I_CNTL_0_BASE_IDX', 'mmRLC_R2I_CNTL_1', - 'mmRLC_R2I_CNTL_1_BASE_IDX', 'mmRLC_R2I_CNTL_2', - 'mmRLC_R2I_CNTL_2_BASE_IDX', 'mmRLC_R2I_CNTL_3', - 'mmRLC_R2I_CNTL_3_BASE_IDX', 'mmRLC_REFCLOCK_TIMESTAMP_LSB', - 'mmRLC_REFCLOCK_TIMESTAMP_LSB_BASE_IDX', - 'mmRLC_REFCLOCK_TIMESTAMP_MSB', - 'mmRLC_REFCLOCK_TIMESTAMP_MSB_BASE_IDX', - 'mmRLC_RLCG_DOORBELL_0_DATA_HI', - 'mmRLC_RLCG_DOORBELL_0_DATA_HI_BASE_IDX', - 'mmRLC_RLCG_DOORBELL_0_DATA_LO', - 'mmRLC_RLCG_DOORBELL_0_DATA_LO_BASE_IDX', - 'mmRLC_RLCG_DOORBELL_1_DATA_HI', - 'mmRLC_RLCG_DOORBELL_1_DATA_HI_BASE_IDX', - 'mmRLC_RLCG_DOORBELL_1_DATA_LO', - 'mmRLC_RLCG_DOORBELL_1_DATA_LO_BASE_IDX', - 'mmRLC_RLCG_DOORBELL_2_DATA_HI', - 'mmRLC_RLCG_DOORBELL_2_DATA_HI_BASE_IDX', - 'mmRLC_RLCG_DOORBELL_2_DATA_LO', - 'mmRLC_RLCG_DOORBELL_2_DATA_LO_BASE_IDX', - 'mmRLC_RLCG_DOORBELL_3_DATA_HI', - 'mmRLC_RLCG_DOORBELL_3_DATA_HI_BASE_IDX', - 'mmRLC_RLCG_DOORBELL_3_DATA_LO', - 'mmRLC_RLCG_DOORBELL_3_DATA_LO_BASE_IDX', - 'mmRLC_RLCG_DOORBELL_CNTL', 'mmRLC_RLCG_DOORBELL_CNTL_BASE_IDX', - 'mmRLC_RLCG_DOORBELL_RANGE', 'mmRLC_RLCG_DOORBELL_RANGE_BASE_IDX', - 'mmRLC_RLCG_DOORBELL_STAT', 'mmRLC_RLCG_DOORBELL_STAT_BASE_IDX', - 'mmRLC_RLCP_DOORBELL_0_DATA_HI', - 'mmRLC_RLCP_DOORBELL_0_DATA_HI_BASE_IDX', - 'mmRLC_RLCP_DOORBELL_0_DATA_LO', - 'mmRLC_RLCP_DOORBELL_0_DATA_LO_BASE_IDX', - 'mmRLC_RLCP_DOORBELL_1_DATA_HI', - 'mmRLC_RLCP_DOORBELL_1_DATA_HI_BASE_IDX', - 'mmRLC_RLCP_DOORBELL_1_DATA_LO', - 'mmRLC_RLCP_DOORBELL_1_DATA_LO_BASE_IDX', - 'mmRLC_RLCP_DOORBELL_2_DATA_HI', - 'mmRLC_RLCP_DOORBELL_2_DATA_HI_BASE_IDX', - 'mmRLC_RLCP_DOORBELL_2_DATA_LO', - 'mmRLC_RLCP_DOORBELL_2_DATA_LO_BASE_IDX', - 'mmRLC_RLCP_DOORBELL_3_DATA_HI', - 'mmRLC_RLCP_DOORBELL_3_DATA_HI_BASE_IDX', - 'mmRLC_RLCP_DOORBELL_3_DATA_LO', - 'mmRLC_RLCP_DOORBELL_3_DATA_LO_BASE_IDX', - 'mmRLC_RLCP_DOORBELL_CNTL', 'mmRLC_RLCP_DOORBELL_CNTL_BASE_IDX', - 'mmRLC_RLCP_DOORBELL_RANGE', 'mmRLC_RLCP_DOORBELL_RANGE_BASE_IDX', - 'mmRLC_RLCP_DOORBELL_STAT', 'mmRLC_RLCP_DOORBELL_STAT_BASE_IDX', - 'mmRLC_RLCP_IRAM_ADDR', 'mmRLC_RLCP_IRAM_ADDR_BASE_IDX', - 'mmRLC_RLCP_IRAM_DATA', 'mmRLC_RLCP_IRAM_DATA_BASE_IDX', - 'mmRLC_RLCS_ABORTED_PD_SEQUENCE', - 'mmRLC_RLCS_ABORTED_PD_SEQUENCE_BASE_IDX', - 'mmRLC_RLCS_AUXILIARY_REG_1', - 'mmRLC_RLCS_AUXILIARY_REG_1_BASE_IDX', - 'mmRLC_RLCS_AUXILIARY_REG_2', - 'mmRLC_RLCS_AUXILIARY_REG_2_BASE_IDX', - 'mmRLC_RLCS_AUXILIARY_REG_3', - 'mmRLC_RLCS_AUXILIARY_REG_3_BASE_IDX', - 'mmRLC_RLCS_AUXILIARY_REG_4', - 'mmRLC_RLCS_AUXILIARY_REG_4_BASE_IDX', - 'mmRLC_RLCS_BOOTLOAD_ID_STATUS1', - 'mmRLC_RLCS_BOOTLOAD_ID_STATUS1_BASE_IDX', - 'mmRLC_RLCS_BOOTLOAD_ID_STATUS2', - 'mmRLC_RLCS_BOOTLOAD_ID_STATUS2_BASE_IDX', - 'mmRLC_RLCS_BOOTLOAD_STATUS', - 'mmRLC_RLCS_BOOTLOAD_STATUS_BASE_IDX', 'mmRLC_RLCS_CGCG_REQUEST', - 'mmRLC_RLCS_CGCG_REQUEST_BASE_IDX', 'mmRLC_RLCS_CGCG_STATUS', - 'mmRLC_RLCS_CGCG_STATUS_BASE_IDX', 'mmRLC_RLCS_CMP_IDLE_CNTL', - 'mmRLC_RLCS_CMP_IDLE_CNTL_BASE_IDX', - 'mmRLC_RLCS_CP_DMA_SRCID_OVER', - 'mmRLC_RLCS_CP_DMA_SRCID_OVER_BASE_IDX', - 'mmRLC_RLCS_CP_INT_CTRL_1', 'mmRLC_RLCS_CP_INT_CTRL_1_BASE_IDX', - 'mmRLC_RLCS_CP_INT_CTRL_2', 'mmRLC_RLCS_CP_INT_CTRL_2_BASE_IDX', - 'mmRLC_RLCS_CP_INT_INFO_1', 'mmRLC_RLCS_CP_INT_INFO_1_BASE_IDX', - 'mmRLC_RLCS_CP_INT_INFO_2', 'mmRLC_RLCS_CP_INT_INFO_2_BASE_IDX', - 'mmRLC_RLCS_DEC_DUMP_ADDR', 'mmRLC_RLCS_DEC_DUMP_ADDR_BASE_IDX', - 'mmRLC_RLCS_DEC_END', 'mmRLC_RLCS_DEC_END_BASE_IDX', - 'mmRLC_RLCS_DEC_START', 'mmRLC_RLCS_DEC_START_BASE_IDX', - 'mmRLC_RLCS_DIDT_FORCE_STALL', - 'mmRLC_RLCS_DIDT_FORCE_STALL_BASE_IDX', 'mmRLC_RLCS_DSM_TRIG', - 'mmRLC_RLCS_DSM_TRIG_BASE_IDX', 'mmRLC_RLCS_EDC_INT_CNTL', - 'mmRLC_RLCS_EDC_INT_CNTL_BASE_IDX', 'mmRLC_RLCS_EXCEPTION_REG_1', - 'mmRLC_RLCS_EXCEPTION_REG_1_BASE_IDX', - 'mmRLC_RLCS_EXCEPTION_REG_2', - 'mmRLC_RLCS_EXCEPTION_REG_2_BASE_IDX', - 'mmRLC_RLCS_EXCEPTION_REG_3', - 'mmRLC_RLCS_EXCEPTION_REG_3_BASE_IDX', - 'mmRLC_RLCS_EXCEPTION_REG_4', - 'mmRLC_RLCS_EXCEPTION_REG_4_BASE_IDX', 'mmRLC_RLCS_GENERAL_0', - 'mmRLC_RLCS_GENERAL_0_BASE_IDX', 'mmRLC_RLCS_GENERAL_1', - 'mmRLC_RLCS_GENERAL_1_BASE_IDX', 'mmRLC_RLCS_GENERAL_2', - 'mmRLC_RLCS_GENERAL_2_BASE_IDX', 'mmRLC_RLCS_GENERAL_3', - 'mmRLC_RLCS_GENERAL_3_BASE_IDX', 'mmRLC_RLCS_GENERAL_4', - 'mmRLC_RLCS_GENERAL_4_BASE_IDX', 'mmRLC_RLCS_GENERAL_5', - 'mmRLC_RLCS_GENERAL_5_BASE_IDX', 'mmRLC_RLCS_GENERAL_6', - 'mmRLC_RLCS_GENERAL_6_BASE_IDX', 'mmRLC_RLCS_GENERAL_7', - 'mmRLC_RLCS_GENERAL_7_BASE_IDX', 'mmRLC_RLCS_GFX_DS_CNTL', - 'mmRLC_RLCS_GFX_DS_CNTL_BASE_IDX', - 'mmRLC_RLCS_GPM_LEGACY_INT_DISABLE', - 'mmRLC_RLCS_GPM_LEGACY_INT_DISABLE_BASE_IDX', - 'mmRLC_RLCS_GPM_LEGACY_INT_STAT', - 'mmRLC_RLCS_GPM_LEGACY_INT_STAT_BASE_IDX', 'mmRLC_RLCS_GPM_STAT', - 'mmRLC_RLCS_GPM_STAT_2', 'mmRLC_RLCS_GPM_STAT_2_BASE_IDX', - 'mmRLC_RLCS_GPM_STAT_BASE_IDX', - 'mmRLC_RLCS_GRBM_IDLE_BUSY_INT_CNTL', - 'mmRLC_RLCS_GRBM_IDLE_BUSY_INT_CNTL_BASE_IDX', - 'mmRLC_RLCS_GRBM_IDLE_BUSY_STAT', - 'mmRLC_RLCS_GRBM_IDLE_BUSY_STAT_BASE_IDX', - 'mmRLC_RLCS_GRBM_SOFT_RESET', - 'mmRLC_RLCS_GRBM_SOFT_RESET_BASE_IDX', - 'mmRLC_RLCS_IH_COOKIE_SEMAPHORE', - 'mmRLC_RLCS_IH_COOKIE_SEMAPHORE_BASE_IDX', 'mmRLC_RLCS_IH_CTRL_1', - 'mmRLC_RLCS_IH_CTRL_1_BASE_IDX', 'mmRLC_RLCS_IH_CTRL_2', - 'mmRLC_RLCS_IH_CTRL_2_BASE_IDX', 'mmRLC_RLCS_IH_CTRL_3', - 'mmRLC_RLCS_IH_CTRL_3_BASE_IDX', 'mmRLC_RLCS_IH_SEMAPHORE', - 'mmRLC_RLCS_IH_SEMAPHORE_BASE_IDX', 'mmRLC_RLCS_IH_STATUS', - 'mmRLC_RLCS_IH_STATUS_BASE_IDX', 'mmRLC_RLCS_IOV_CMD_STATUS', - 'mmRLC_RLCS_IOV_CMD_STATUS_BASE_IDX', - 'mmRLC_RLCS_IOV_CNTX_LOC_SIZE', - 'mmRLC_RLCS_IOV_CNTX_LOC_SIZE_BASE_IDX', - 'mmRLC_RLCS_IOV_SCH_BLOCK', 'mmRLC_RLCS_IOV_SCH_BLOCK_BASE_IDX', - 'mmRLC_RLCS_IOV_VM_BUSY_STATUS', - 'mmRLC_RLCS_IOV_VM_BUSY_STATUS_BASE_IDX', - 'mmRLC_RLCS_KMD_LOG_CNTL1', 'mmRLC_RLCS_KMD_LOG_CNTL1_BASE_IDX', - 'mmRLC_RLCS_KMD_LOG_CNTL2', 'mmRLC_RLCS_KMD_LOG_CNTL2_BASE_IDX', - 'mmRLC_RLCS_LB_CONTROL', 'mmRLC_RLCS_LB_CONTROL_BASE_IDX', - 'mmRLC_RLCS_LB_READ', 'mmRLC_RLCS_LB_READ_BASE_IDX', - 'mmRLC_RLCS_LB_STATUS', 'mmRLC_RLCS_LB_STATUS_BASE_IDX', - 'mmRLC_RLCS_MP1_RLC_DOORBELL_CTRL', - 'mmRLC_RLCS_MP1_RLC_DOORBELL_CTRL_BASE_IDX', - 'mmRLC_RLCS_PERFMON_CLK_CNTL_UCODE', - 'mmRLC_RLCS_PERFMON_CLK_CNTL_UCODE_BASE_IDX', - 'mmRLC_RLCS_PG_CHANGE_READ', 'mmRLC_RLCS_PG_CHANGE_READ_BASE_IDX', - 'mmRLC_RLCS_PG_CHANGE_STATUS', - 'mmRLC_RLCS_PG_CHANGE_STATUS_BASE_IDX', - 'mmRLC_RLCS_POWER_BRAKE_CNTL', - 'mmRLC_RLCS_POWER_BRAKE_CNTL_BASE_IDX', - 'mmRLC_RLCS_POWER_BRAKE_CNTL_TH1', - 'mmRLC_RLCS_POWER_BRAKE_CNTL_TH1_BASE_IDX', - 'mmRLC_RLCS_SMUIO_VIDCHG_CTRL', - 'mmRLC_RLCS_SMUIO_VIDCHG_CTRL_BASE_IDX', - 'mmRLC_RLCS_SMU_GFXCLK_CONTROL', - 'mmRLC_RLCS_SMU_GFXCLK_CONTROL_BASE_IDX', - 'mmRLC_RLCS_SMU_GFXCLK_STATUS', - 'mmRLC_RLCS_SMU_GFXCLK_STATUS_BASE_IDX', 'mmRLC_RLCS_SOC_DS_CNTL', - 'mmRLC_RLCS_SOC_DS_CNTL_BASE_IDX', 'mmRLC_RLCS_SPM_INT_CTRL', - 'mmRLC_RLCS_SPM_INT_CTRL_BASE_IDX', 'mmRLC_RLCS_SPM_INT_INFO_1', - 'mmRLC_RLCS_SPM_INT_INFO_1_BASE_IDX', 'mmRLC_RLCS_SPM_INT_INFO_2', - 'mmRLC_RLCS_SPM_INT_INFO_2_BASE_IDX', 'mmRLC_RLCS_SPM_SQTT_MODE', - 'mmRLC_RLCS_SPM_SQTT_MODE_BASE_IDX', 'mmRLC_RLCS_SRM_SRCID_CNTL', - 'mmRLC_RLCS_SRM_SRCID_CNTL_BASE_IDX', 'mmRLC_RLCS_UTCL2_CNTL', - 'mmRLC_RLCS_UTCL2_CNTL_BASE_IDX', 'mmRLC_RLCS_WGP_READ', - 'mmRLC_RLCS_WGP_READ_BASE_IDX', 'mmRLC_RLCS_WGP_STATUS', - 'mmRLC_RLCS_WGP_STATUS_BASE_IDX', 'mmRLC_RLCV_COMMAND', - 'mmRLC_RLCV_COMMAND_BASE_IDX', 'mmRLC_RLCV_DOORBELL_0_DATA_HI', - 'mmRLC_RLCV_DOORBELL_0_DATA_HI_BASE_IDX', - 'mmRLC_RLCV_DOORBELL_0_DATA_LO', - 'mmRLC_RLCV_DOORBELL_0_DATA_LO_BASE_IDX', - 'mmRLC_RLCV_DOORBELL_1_DATA_HI', - 'mmRLC_RLCV_DOORBELL_1_DATA_HI_BASE_IDX', - 'mmRLC_RLCV_DOORBELL_1_DATA_LO', - 'mmRLC_RLCV_DOORBELL_1_DATA_LO_BASE_IDX', - 'mmRLC_RLCV_DOORBELL_2_DATA_HI', - 'mmRLC_RLCV_DOORBELL_2_DATA_HI_BASE_IDX', - 'mmRLC_RLCV_DOORBELL_2_DATA_LO', - 'mmRLC_RLCV_DOORBELL_2_DATA_LO_BASE_IDX', - 'mmRLC_RLCV_DOORBELL_3_DATA_HI', - 'mmRLC_RLCV_DOORBELL_3_DATA_HI_BASE_IDX', - 'mmRLC_RLCV_DOORBELL_3_DATA_LO', - 'mmRLC_RLCV_DOORBELL_3_DATA_LO_BASE_IDX', - 'mmRLC_RLCV_DOORBELL_CNTL', 'mmRLC_RLCV_DOORBELL_CNTL_BASE_IDX', - 'mmRLC_RLCV_DOORBELL_RANGE', 'mmRLC_RLCV_DOORBELL_RANGE_BASE_IDX', - 'mmRLC_RLCV_DOORBELL_STAT', 'mmRLC_RLCV_DOORBELL_STAT_BASE_IDX', - 'mmRLC_RLCV_IRAM_ADDR', 'mmRLC_RLCV_IRAM_ADDR_BASE_IDX', - 'mmRLC_RLCV_IRAM_DATA', 'mmRLC_RLCV_IRAM_DATA_BASE_IDX', - 'mmRLC_RLCV_SAFE_MODE', 'mmRLC_RLCV_SAFE_MODE_BASE_IDX', - 'mmRLC_RLCV_SPARE_INT', 'mmRLC_RLCV_SPARE_INT_1', - 'mmRLC_RLCV_SPARE_INT_1_BASE_IDX', - 'mmRLC_RLCV_SPARE_INT_BASE_IDX', 'mmRLC_RLCV_TIMER_CTRL', - 'mmRLC_RLCV_TIMER_CTRL_BASE_IDX', 'mmRLC_RLCV_TIMER_INT_0', - 'mmRLC_RLCV_TIMER_INT_0_BASE_IDX', 'mmRLC_RLCV_TIMER_INT_1', - 'mmRLC_RLCV_TIMER_INT_1_BASE_IDX', 'mmRLC_RLCV_TIMER_STAT', - 'mmRLC_RLCV_TIMER_STAT_BASE_IDX', 'mmRLC_SAFE_MODE', - 'mmRLC_SAFE_MODE_BASE_IDX', 'mmRLC_SDMA0_BUSY_STATUS', - 'mmRLC_SDMA0_BUSY_STATUS_BASE_IDX', 'mmRLC_SDMA0_STATUS', - 'mmRLC_SDMA0_STATUS_BASE_IDX', 'mmRLC_SDMA1_BUSY_STATUS', - 'mmRLC_SDMA1_BUSY_STATUS_BASE_IDX', 'mmRLC_SDMA1_STATUS', - 'mmRLC_SDMA1_STATUS_BASE_IDX', 'mmRLC_SDMA2_BUSY_STATUS', - 'mmRLC_SDMA2_BUSY_STATUS_BASE_IDX', 'mmRLC_SDMA2_STATUS', - 'mmRLC_SDMA2_STATUS_BASE_IDX', 'mmRLC_SDMA3_BUSY_STATUS', - 'mmRLC_SDMA3_BUSY_STATUS_BASE_IDX', 'mmRLC_SDMA3_STATUS', - 'mmRLC_SDMA3_STATUS_BASE_IDX', 'mmRLC_SEMAPHORE_0', - 'mmRLC_SEMAPHORE_0_BASE_IDX', 'mmRLC_SEMAPHORE_1', - 'mmRLC_SEMAPHORE_1_BASE_IDX', 'mmRLC_SEMAPHORE_2', - 'mmRLC_SEMAPHORE_2_BASE_IDX', 'mmRLC_SEMAPHORE_3', - 'mmRLC_SEMAPHORE_3_BASE_IDX', 'mmRLC_SERDES_BUSY', - 'mmRLC_SERDES_BUSY_BASE_IDX', 'mmRLC_SERDES_CTRL', - 'mmRLC_SERDES_CTRL_BASE_IDX', 'mmRLC_SERDES_DATA', - 'mmRLC_SERDES_DATA_BASE_IDX', 'mmRLC_SERDES_MASK', - 'mmRLC_SERDES_MASK_BASE_IDX', 'mmRLC_SERDES_RD_DATA_0', - 'mmRLC_SERDES_RD_DATA_0_BASE_IDX', 'mmRLC_SERDES_RD_DATA_1', - 'mmRLC_SERDES_RD_DATA_1_BASE_IDX', 'mmRLC_SERDES_RD_DATA_2', - 'mmRLC_SERDES_RD_DATA_2_BASE_IDX', 'mmRLC_SERDES_RD_DATA_3', - 'mmRLC_SERDES_RD_DATA_3_BASE_IDX', 'mmRLC_SERDES_RD_INDEX', - 'mmRLC_SERDES_RD_INDEX_BASE_IDX', 'mmRLC_SMU_ARGUMENT_1', - 'mmRLC_SMU_ARGUMENT_1_BASE_IDX', 'mmRLC_SMU_ARGUMENT_2', - 'mmRLC_SMU_ARGUMENT_2_BASE_IDX', 'mmRLC_SMU_ARGUMENT_3', - 'mmRLC_SMU_ARGUMENT_3_BASE_IDX', 'mmRLC_SMU_ARGUMENT_4', - 'mmRLC_SMU_ARGUMENT_4_BASE_IDX', 'mmRLC_SMU_CLK_REQ', - 'mmRLC_SMU_CLK_REQ_BASE_IDX', 'mmRLC_SMU_COMMAND', - 'mmRLC_SMU_COMMAND_BASE_IDX', 'mmRLC_SMU_GRBM_REG_SAVE_CTRL', - 'mmRLC_SMU_GRBM_REG_SAVE_CTRL_BASE_IDX', 'mmRLC_SMU_MESSAGE', - 'mmRLC_SMU_MESSAGE_BASE_IDX', 'mmRLC_SMU_SAFE_MODE', - 'mmRLC_SMU_SAFE_MODE_BASE_IDX', 'mmRLC_SPARE_INT_0', - 'mmRLC_SPARE_INT_0_BASE_IDX', 'mmRLC_SPARE_INT_1', - 'mmRLC_SPARE_INT_1_BASE_IDX', 'mmRLC_SPARE_INT_2', - 'mmRLC_SPARE_INT_2_BASE_IDX', 'mmRLC_SPM_ACCUM_CTRL', - 'mmRLC_SPM_ACCUM_CTRLRAM_ADDR', - 'mmRLC_SPM_ACCUM_CTRLRAM_ADDR_BASE_IDX', - 'mmRLC_SPM_ACCUM_CTRLRAM_ADDR_OFFSET', - 'mmRLC_SPM_ACCUM_CTRLRAM_ADDR_OFFSET_BASE_IDX', - 'mmRLC_SPM_ACCUM_CTRLRAM_DATA', - 'mmRLC_SPM_ACCUM_CTRLRAM_DATA_BASE_IDX', - 'mmRLC_SPM_ACCUM_CTRL_BASE_IDX', - 'mmRLC_SPM_ACCUM_DATARAM_32BITCNTRS_REGIONS', - 'mmRLC_SPM_ACCUM_DATARAM_32BITCNTRS_REGIONS_BASE_IDX', - 'mmRLC_SPM_ACCUM_DATARAM_ADDR', - 'mmRLC_SPM_ACCUM_DATARAM_ADDR_BASE_IDX', - 'mmRLC_SPM_ACCUM_DATARAM_DATA', - 'mmRLC_SPM_ACCUM_DATARAM_DATA_BASE_IDX', - 'mmRLC_SPM_ACCUM_DATARAM_WRCOUNT', - 'mmRLC_SPM_ACCUM_DATARAM_WRCOUNT_BASE_IDX', - 'mmRLC_SPM_ACCUM_MODE', 'mmRLC_SPM_ACCUM_MODE_BASE_IDX', - 'mmRLC_SPM_ACCUM_SAMPLES_REQUESTED', - 'mmRLC_SPM_ACCUM_SAMPLES_REQUESTED_BASE_IDX', - 'mmRLC_SPM_ACCUM_STATUS', 'mmRLC_SPM_ACCUM_STATUS_BASE_IDX', - 'mmRLC_SPM_ACCUM_SWA_DATARAM_ADDR', - 'mmRLC_SPM_ACCUM_SWA_DATARAM_ADDR_BASE_IDX', - 'mmRLC_SPM_ACCUM_SWA_DATARAM_DATA', - 'mmRLC_SPM_ACCUM_SWA_DATARAM_DATA_BASE_IDX', - 'mmRLC_SPM_ACCUM_THRESHOLD', 'mmRLC_SPM_ACCUM_THRESHOLD_BASE_IDX', - 'mmRLC_SPM_DESER_START_SKEW', - 'mmRLC_SPM_DESER_START_SKEW_BASE_IDX', - 'mmRLC_SPM_GFXCLOCK_HIGHCOUNT', - 'mmRLC_SPM_GFXCLOCK_HIGHCOUNT_BASE_IDX', - 'mmRLC_SPM_GFXCLOCK_LOWCOUNT', - 'mmRLC_SPM_GFXCLOCK_LOWCOUNT_BASE_IDX', - 'mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR', - 'mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR_BASE_IDX', - 'mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA', - 'mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA_BASE_IDX', - 'mmRLC_SPM_GLOBALS_MUXSEL_SKEW', - 'mmRLC_SPM_GLOBALS_MUXSEL_SKEW_BASE_IDX', - 'mmRLC_SPM_GLOBALS_SAMPLE_SKEW', - 'mmRLC_SPM_GLOBALS_SAMPLE_SKEW_BASE_IDX', - 'mmRLC_SPM_GLOBAL_MUXSEL_ADDR', - 'mmRLC_SPM_GLOBAL_MUXSEL_ADDR_BASE_IDX', - 'mmRLC_SPM_GLOBAL_MUXSEL_ADDR_OFFSET', - 'mmRLC_SPM_GLOBAL_MUXSEL_ADDR_OFFSET_BASE_IDX', - 'mmRLC_SPM_GLOBAL_MUXSEL_DATA', - 'mmRLC_SPM_GLOBAL_MUXSEL_DATA_BASE_IDX', 'mmRLC_SPM_INT_CNTL', - 'mmRLC_SPM_INT_CNTL_BASE_IDX', 'mmRLC_SPM_INT_INFO_1', - 'mmRLC_SPM_INT_INFO_1_BASE_IDX', 'mmRLC_SPM_INT_INFO_2', - 'mmRLC_SPM_INT_INFO_2_BASE_IDX', 'mmRLC_SPM_INT_STATUS', - 'mmRLC_SPM_INT_STATUS_BASE_IDX', 'mmRLC_SPM_MC_CNTL', - 'mmRLC_SPM_MC_CNTL_BASE_IDX', 'mmRLC_SPM_PERFMON_CNTL', - 'mmRLC_SPM_PERFMON_CNTL_BASE_IDX', - 'mmRLC_SPM_PERFMON_GLB_SEGMENT_SIZE', - 'mmRLC_SPM_PERFMON_GLB_SEGMENT_SIZE_BASE_IDX', - 'mmRLC_SPM_PERFMON_RING_BASE_HI', - 'mmRLC_SPM_PERFMON_RING_BASE_HI_BASE_IDX', - 'mmRLC_SPM_PERFMON_RING_BASE_LO', - 'mmRLC_SPM_PERFMON_RING_BASE_LO_BASE_IDX', - 'mmRLC_SPM_PERFMON_RING_SIZE', - 'mmRLC_SPM_PERFMON_RING_SIZE_BASE_IDX', - 'mmRLC_SPM_PERFMON_SE3TO0_SEGMENT_SIZE', - 'mmRLC_SPM_PERFMON_SE3TO0_SEGMENT_SIZE_BASE_IDX', - 'mmRLC_SPM_PERFMON_SEGMENT_SIZE', - 'mmRLC_SPM_PERFMON_SEGMENT_SIZE_BASE_IDX', - 'mmRLC_SPM_PERFMON_SWA_GLB_SEGMENT_SIZE', - 'mmRLC_SPM_PERFMON_SWA_GLB_SEGMENT_SIZE_BASE_IDX', - 'mmRLC_SPM_PERFMON_SWA_SE3TO0_SEGMENT_SIZE', - 'mmRLC_SPM_PERFMON_SWA_SE3TO0_SEGMENT_SIZE_BASE_IDX', - 'mmRLC_SPM_PERFMON_SWA_SEGMENT_SIZE', - 'mmRLC_SPM_PERFMON_SWA_SEGMENT_SIZE_BASE_IDX', - 'mmRLC_SPM_RING_RDPTR', 'mmRLC_SPM_RING_RDPTR_BASE_IDX', - 'mmRLC_SPM_RING_WRPTR', 'mmRLC_SPM_RING_WRPTR_BASE_IDX', - 'mmRLC_SPM_SAMPLE_CNT', 'mmRLC_SPM_SAMPLE_CNT_BASE_IDX', - 'mmRLC_SPM_SEGMENT_THRESHOLD', - 'mmRLC_SPM_SEGMENT_THRESHOLD_BASE_IDX', - 'mmRLC_SPM_SE_MUXSEL_ADDR', 'mmRLC_SPM_SE_MUXSEL_ADDR_BASE_IDX', - 'mmRLC_SPM_SE_MUXSEL_ADDR_OFFSET', - 'mmRLC_SPM_SE_MUXSEL_ADDR_OFFSET_BASE_IDX', - 'mmRLC_SPM_SE_MUXSEL_DATA', 'mmRLC_SPM_SE_MUXSEL_DATA_BASE_IDX', - 'mmRLC_SPM_SE_MUXSEL_SKEW', 'mmRLC_SPM_SE_MUXSEL_SKEW_BASE_IDX', - 'mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR', - 'mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR_BASE_IDX', - 'mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA', - 'mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA_BASE_IDX', - 'mmRLC_SPM_SE_SAMPLE_SKEW', 'mmRLC_SPM_SE_SAMPLE_SKEW_BASE_IDX', - 'mmRLC_SPM_THREAD_TRACE_CTRL', - 'mmRLC_SPM_THREAD_TRACE_CTRL_BASE_IDX', 'mmRLC_SPM_UTCL1_CNTL', - 'mmRLC_SPM_UTCL1_CNTL_BASE_IDX', 'mmRLC_SPM_UTCL1_ERROR_1', - 'mmRLC_SPM_UTCL1_ERROR_1_BASE_IDX', 'mmRLC_SPM_UTCL1_ERROR_2', - 'mmRLC_SPM_UTCL1_ERROR_2_BASE_IDX', 'mmRLC_SPM_VIRT_CTRL', - 'mmRLC_SPM_VIRT_CTRL_BASE_IDX', 'mmRLC_SPM_VIRT_STATUS', - 'mmRLC_SPM_VIRT_STATUS_BASE_IDX', 'mmRLC_SPP_CAM_ADDR', - 'mmRLC_SPP_CAM_ADDR_BASE_IDX', 'mmRLC_SPP_CAM_DATA', - 'mmRLC_SPP_CAM_DATA_BASE_IDX', 'mmRLC_SPP_CAM_EXT_ADDR', - 'mmRLC_SPP_CAM_EXT_ADDR_BASE_IDX', 'mmRLC_SPP_CAM_EXT_DATA', - 'mmRLC_SPP_CAM_EXT_DATA_BASE_IDX', 'mmRLC_SPP_CTRL', - 'mmRLC_SPP_CTRL_BASE_IDX', 'mmRLC_SPP_GLOBAL_SH_ID', - 'mmRLC_SPP_GLOBAL_SH_ID_BASE_IDX', 'mmRLC_SPP_GLOBAL_SH_ID_VALID', - 'mmRLC_SPP_GLOBAL_SH_ID_VALID_BASE_IDX', - 'mmRLC_SPP_INFLIGHT_RD_ADDR', - 'mmRLC_SPP_INFLIGHT_RD_ADDR_BASE_IDX', - 'mmRLC_SPP_INFLIGHT_RD_DATA', - 'mmRLC_SPP_INFLIGHT_RD_DATA_BASE_IDX', 'mmRLC_SPP_PBB_INFO', - 'mmRLC_SPP_PBB_INFO_BASE_IDX', 'mmRLC_SPP_PROF_INFO_1', - 'mmRLC_SPP_PROF_INFO_1_BASE_IDX', 'mmRLC_SPP_PROF_INFO_2', - 'mmRLC_SPP_PROF_INFO_2_BASE_IDX', 'mmRLC_SPP_PVT_LEVEL_MAX', - 'mmRLC_SPP_PVT_LEVEL_MAX_BASE_IDX', 'mmRLC_SPP_PVT_STAT_0', - 'mmRLC_SPP_PVT_STAT_0_BASE_IDX', 'mmRLC_SPP_PVT_STAT_1', - 'mmRLC_SPP_PVT_STAT_1_BASE_IDX', 'mmRLC_SPP_PVT_STAT_2', - 'mmRLC_SPP_PVT_STAT_2_BASE_IDX', 'mmRLC_SPP_PVT_STAT_3', - 'mmRLC_SPP_PVT_STAT_3_BASE_IDX', 'mmRLC_SPP_RESET', - 'mmRLC_SPP_RESET_BASE_IDX', 'mmRLC_SPP_SHADER_PROFILE_EN', - 'mmRLC_SPP_SHADER_PROFILE_EN_BASE_IDX', - 'mmRLC_SPP_SSF_CAPTURE_EN', 'mmRLC_SPP_SSF_CAPTURE_EN_BASE_IDX', - 'mmRLC_SPP_SSF_THRESHOLD_0', 'mmRLC_SPP_SSF_THRESHOLD_0_BASE_IDX', - 'mmRLC_SPP_SSF_THRESHOLD_1', 'mmRLC_SPP_SSF_THRESHOLD_1_BASE_IDX', - 'mmRLC_SPP_SSF_THRESHOLD_2', 'mmRLC_SPP_SSF_THRESHOLD_2_BASE_IDX', - 'mmRLC_SPP_STALL_STATE_UPDATE', - 'mmRLC_SPP_STALL_STATE_UPDATE_BASE_IDX', 'mmRLC_SPP_STATUS', - 'mmRLC_SPP_STATUS_BASE_IDX', 'mmRLC_SRM_ARAM_ADDR', - 'mmRLC_SRM_ARAM_ADDR_BASE_IDX', 'mmRLC_SRM_ARAM_DATA', - 'mmRLC_SRM_ARAM_DATA_BASE_IDX', 'mmRLC_SRM_CNTL', - 'mmRLC_SRM_CNTL_BASE_IDX', 'mmRLC_SRM_DRAM_ADDR', - 'mmRLC_SRM_DRAM_ADDR_BASE_IDX', 'mmRLC_SRM_DRAM_DATA', - 'mmRLC_SRM_DRAM_DATA_BASE_IDX', 'mmRLC_SRM_FWL_FIRST_VIOL_ADDR', - 'mmRLC_SRM_FWL_FIRST_VIOL_ADDR_BASE_IDX', 'mmRLC_SRM_GPM_ABORT', - 'mmRLC_SRM_GPM_ABORT_BASE_IDX', 'mmRLC_SRM_GPM_COMMAND', - 'mmRLC_SRM_GPM_COMMAND_BASE_IDX', 'mmRLC_SRM_GPM_COMMAND_STATUS', - 'mmRLC_SRM_GPM_COMMAND_STATUS_BASE_IDX', - 'mmRLC_SRM_INDEX_CNTL_ADDR_0', - 'mmRLC_SRM_INDEX_CNTL_ADDR_0_BASE_IDX', - 'mmRLC_SRM_INDEX_CNTL_ADDR_1', - 'mmRLC_SRM_INDEX_CNTL_ADDR_1_BASE_IDX', - 'mmRLC_SRM_INDEX_CNTL_ADDR_2', - 'mmRLC_SRM_INDEX_CNTL_ADDR_2_BASE_IDX', - 'mmRLC_SRM_INDEX_CNTL_ADDR_3', - 'mmRLC_SRM_INDEX_CNTL_ADDR_3_BASE_IDX', - 'mmRLC_SRM_INDEX_CNTL_ADDR_4', - 'mmRLC_SRM_INDEX_CNTL_ADDR_4_BASE_IDX', - 'mmRLC_SRM_INDEX_CNTL_ADDR_5', - 'mmRLC_SRM_INDEX_CNTL_ADDR_5_BASE_IDX', - 'mmRLC_SRM_INDEX_CNTL_ADDR_6', - 'mmRLC_SRM_INDEX_CNTL_ADDR_6_BASE_IDX', - 'mmRLC_SRM_INDEX_CNTL_ADDR_7', - 'mmRLC_SRM_INDEX_CNTL_ADDR_7_BASE_IDX', - 'mmRLC_SRM_INDEX_CNTL_DATA_0', - 'mmRLC_SRM_INDEX_CNTL_DATA_0_BASE_IDX', - 'mmRLC_SRM_INDEX_CNTL_DATA_1', - 'mmRLC_SRM_INDEX_CNTL_DATA_1_BASE_IDX', - 'mmRLC_SRM_INDEX_CNTL_DATA_2', - 'mmRLC_SRM_INDEX_CNTL_DATA_2_BASE_IDX', - 'mmRLC_SRM_INDEX_CNTL_DATA_3', - 'mmRLC_SRM_INDEX_CNTL_DATA_3_BASE_IDX', - 'mmRLC_SRM_INDEX_CNTL_DATA_4', - 'mmRLC_SRM_INDEX_CNTL_DATA_4_BASE_IDX', - 'mmRLC_SRM_INDEX_CNTL_DATA_5', - 'mmRLC_SRM_INDEX_CNTL_DATA_5_BASE_IDX', - 'mmRLC_SRM_INDEX_CNTL_DATA_6', - 'mmRLC_SRM_INDEX_CNTL_DATA_6_BASE_IDX', - 'mmRLC_SRM_INDEX_CNTL_DATA_7', - 'mmRLC_SRM_INDEX_CNTL_DATA_7_BASE_IDX', 'mmRLC_SRM_RLCV_COMMAND', - 'mmRLC_SRM_RLCV_COMMAND_BASE_IDX', - 'mmRLC_SRM_RLCV_COMMAND_STATUS', - 'mmRLC_SRM_RLCV_COMMAND_STATUS_BASE_IDX', 'mmRLC_SRM_STAT', - 'mmRLC_SRM_STAT_BASE_IDX', 'mmRLC_STAT', 'mmRLC_STATIC_PG_STATUS', - 'mmRLC_STATIC_PG_STATUS_BASE_IDX', 'mmRLC_STAT_BASE_IDX', - 'mmRLC_UCODE_CNTL', 'mmRLC_UCODE_CNTL_BASE_IDX', - 'mmRLC_UTCL1_STATUS', 'mmRLC_UTCL1_STATUS_2', - 'mmRLC_UTCL1_STATUS_2_BASE_IDX', 'mmRLC_UTCL1_STATUS_BASE_IDX', - 'mmRLC_WGP_STATUS', 'mmRLC_WGP_STATUS_BASE_IDX', - 'mmRLC_XT_DOORBELL_0_DATA_HI', - 'mmRLC_XT_DOORBELL_0_DATA_HI_BASE_IDX', - 'mmRLC_XT_DOORBELL_0_DATA_LO', - 'mmRLC_XT_DOORBELL_0_DATA_LO_BASE_IDX', - 'mmRLC_XT_DOORBELL_1_DATA_HI', - 'mmRLC_XT_DOORBELL_1_DATA_HI_BASE_IDX', - 'mmRLC_XT_DOORBELL_1_DATA_LO', - 'mmRLC_XT_DOORBELL_1_DATA_LO_BASE_IDX', - 'mmRLC_XT_DOORBELL_2_DATA_HI', - 'mmRLC_XT_DOORBELL_2_DATA_HI_BASE_IDX', - 'mmRLC_XT_DOORBELL_2_DATA_LO', - 'mmRLC_XT_DOORBELL_2_DATA_LO_BASE_IDX', - 'mmRLC_XT_DOORBELL_3_DATA_HI', - 'mmRLC_XT_DOORBELL_3_DATA_HI_BASE_IDX', - 'mmRLC_XT_DOORBELL_3_DATA_LO', - 'mmRLC_XT_DOORBELL_3_DATA_LO_BASE_IDX', 'mmRLC_XT_DOORBELL_CNTL', - 'mmRLC_XT_DOORBELL_CNTL_BASE_IDX', 'mmRLC_XT_DOORBELL_RANGE', - 'mmRLC_XT_DOORBELL_RANGE_BASE_IDX', 'mmRLC_XT_DOORBELL_STAT', - 'mmRLC_XT_DOORBELL_STAT_BASE_IDX', 'mmRMI_CGTT_SCLK_CTRL', - 'mmRMI_CGTT_SCLK_CTRL_BASE_IDX', 'mmRMI_CLOCK_CNTRL', - 'mmRMI_CLOCK_CNTRL_BASE_IDX', 'mmRMI_DEMUX_CNTL', - 'mmRMI_DEMUX_CNTL_BASE_IDX', 'mmRMI_GENERAL_CNTL', - 'mmRMI_GENERAL_CNTL1', 'mmRMI_GENERAL_CNTL1_BASE_IDX', - 'mmRMI_GENERAL_CNTL_BASE_IDX', 'mmRMI_GENERAL_STATUS', - 'mmRMI_GENERAL_STATUS_BASE_IDX', 'mmRMI_PERFCOUNTER0_HI', - 'mmRMI_PERFCOUNTER0_HI_BASE_IDX', 'mmRMI_PERFCOUNTER0_LO', - 'mmRMI_PERFCOUNTER0_LO_BASE_IDX', 'mmRMI_PERFCOUNTER0_SELECT', - 'mmRMI_PERFCOUNTER0_SELECT1', - 'mmRMI_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmRMI_PERFCOUNTER0_SELECT_BASE_IDX', 'mmRMI_PERFCOUNTER1_HI', - 'mmRMI_PERFCOUNTER1_HI_BASE_IDX', 'mmRMI_PERFCOUNTER1_LO', - 'mmRMI_PERFCOUNTER1_LO_BASE_IDX', 'mmRMI_PERFCOUNTER1_SELECT', - 'mmRMI_PERFCOUNTER1_SELECT_BASE_IDX', 'mmRMI_PERFCOUNTER2_HI', - 'mmRMI_PERFCOUNTER2_HI_BASE_IDX', 'mmRMI_PERFCOUNTER2_LO', - 'mmRMI_PERFCOUNTER2_LO_BASE_IDX', 'mmRMI_PERFCOUNTER2_SELECT', - 'mmRMI_PERFCOUNTER2_SELECT1', - 'mmRMI_PERFCOUNTER2_SELECT1_BASE_IDX', - 'mmRMI_PERFCOUNTER2_SELECT_BASE_IDX', 'mmRMI_PERFCOUNTER3_HI', - 'mmRMI_PERFCOUNTER3_HI_BASE_IDX', 'mmRMI_PERFCOUNTER3_LO', - 'mmRMI_PERFCOUNTER3_LO_BASE_IDX', 'mmRMI_PERFCOUNTER3_SELECT', - 'mmRMI_PERFCOUNTER3_SELECT_BASE_IDX', 'mmRMI_PERF_COUNTER_CNTL', - 'mmRMI_PERF_COUNTER_CNTL_BASE_IDX', 'mmRMI_PROBE_POP_LOGIC_CNTL', - 'mmRMI_PROBE_POP_LOGIC_CNTL_BASE_IDX', 'mmRMI_RB_GLX_CID_MAP', - 'mmRMI_RB_GLX_CID_MAP_BASE_IDX', 'mmRMI_SCOREBOARD_CNTL', - 'mmRMI_SCOREBOARD_CNTL_BASE_IDX', 'mmRMI_SCOREBOARD_STATUS0', - 'mmRMI_SCOREBOARD_STATUS0_BASE_IDX', 'mmRMI_SCOREBOARD_STATUS1', - 'mmRMI_SCOREBOARD_STATUS1_BASE_IDX', 'mmRMI_SCOREBOARD_STATUS2', - 'mmRMI_SCOREBOARD_STATUS2_BASE_IDX', 'mmRMI_SPARE', - 'mmRMI_SPARE_1', 'mmRMI_SPARE_1_BASE_IDX', 'mmRMI_SPARE_2', - 'mmRMI_SPARE_2_BASE_IDX', 'mmRMI_SPARE_BASE_IDX', - 'mmRMI_SUBBLOCK_STATUS0', 'mmRMI_SUBBLOCK_STATUS0_BASE_IDX', - 'mmRMI_SUBBLOCK_STATUS1', 'mmRMI_SUBBLOCK_STATUS1_BASE_IDX', - 'mmRMI_SUBBLOCK_STATUS2', 'mmRMI_SUBBLOCK_STATUS2_BASE_IDX', - 'mmRMI_SUBBLOCK_STATUS3', 'mmRMI_SUBBLOCK_STATUS3_BASE_IDX', - 'mmRMI_TCIW_FORMATTER0_CNTL', - 'mmRMI_TCIW_FORMATTER0_CNTL_BASE_IDX', - 'mmRMI_TCIW_FORMATTER1_CNTL', - 'mmRMI_TCIW_FORMATTER1_CNTL_BASE_IDX', 'mmRMI_UTCL1_CNTL1', - 'mmRMI_UTCL1_CNTL1_BASE_IDX', 'mmRMI_UTCL1_CNTL2', - 'mmRMI_UTCL1_CNTL2_BASE_IDX', 'mmRMI_UTCL1_STATUS', - 'mmRMI_UTCL1_STATUS_BASE_IDX', 'mmRMI_UTC_UNIT_CONFIG', - 'mmRMI_UTC_UNIT_CONFIG_BASE_IDX', 'mmRMI_UTC_XNACK_N_MISC_CNTL', - 'mmRMI_UTC_XNACK_N_MISC_CNTL_BASE_IDX', - 'mmRMI_XBAR_ARBITER_CONFIG', 'mmRMI_XBAR_ARBITER_CONFIG_1', - 'mmRMI_XBAR_ARBITER_CONFIG_1_BASE_IDX', - 'mmRMI_XBAR_ARBITER_CONFIG_BASE_IDX', 'mmRMI_XBAR_CONFIG', - 'mmRMI_XBAR_CONFIG_BASE_IDX', 'mmRTAVFS_RTAVFS_REG_ADDR', - 'mmRTAVFS_RTAVFS_REG_ADDR_BASE_IDX', 'mmRTAVFS_RTAVFS_WR_DATA', - 'mmRTAVFS_RTAVFS_WR_DATA_BASE_IDX', 'mmSCRATCH_ADDR', - 'mmSCRATCH_ADDR_BASE_IDX', 'mmSCRATCH_REG0', - 'mmSCRATCH_REG0_BASE_IDX', 'mmSCRATCH_REG1', - 'mmSCRATCH_REG1_BASE_IDX', 'mmSCRATCH_REG2', - 'mmSCRATCH_REG2_BASE_IDX', 'mmSCRATCH_REG3', - 'mmSCRATCH_REG3_BASE_IDX', 'mmSCRATCH_REG4', - 'mmSCRATCH_REG4_BASE_IDX', 'mmSCRATCH_REG5', - 'mmSCRATCH_REG5_BASE_IDX', 'mmSCRATCH_REG6', - 'mmSCRATCH_REG6_BASE_IDX', 'mmSCRATCH_REG7', - 'mmSCRATCH_REG7_BASE_IDX', 'mmSCRATCH_REG_ATOMIC', - 'mmSCRATCH_REG_ATOMIC_BASE_IDX', 'mmSCRATCH_REG_CMPSWAP_ATOMIC', - 'mmSCRATCH_REG_CMPSWAP_ATOMIC_BASE_IDX', 'mmSCRATCH_UMSK', - 'mmSCRATCH_UMSK_BASE_IDX', 'mmSDMA0_ACTIVE_FCN_ID', - 'mmSDMA0_ACTIVE_FCN_ID_BASE_IDX', 'mmSDMA0_AQL_STATUS', - 'mmSDMA0_AQL_STATUS_BASE_IDX', 'mmSDMA0_ATOMIC_CNTL', - 'mmSDMA0_ATOMIC_CNTL_BASE_IDX', 'mmSDMA0_ATOMIC_PREOP_HI', - 'mmSDMA0_ATOMIC_PREOP_HI_BASE_IDX', 'mmSDMA0_ATOMIC_PREOP_LO', - 'mmSDMA0_ATOMIC_PREOP_LO_BASE_IDX', 'mmSDMA0_BA_THRESHOLD', - 'mmSDMA0_BA_THRESHOLD_BASE_IDX', 'mmSDMA0_BROADCAST_UCODE_ADDR', - 'mmSDMA0_BROADCAST_UCODE_ADDR_BASE_IDX', - 'mmSDMA0_BROADCAST_UCODE_DATA', - 'mmSDMA0_BROADCAST_UCODE_DATA_BASE_IDX', 'mmSDMA0_CHICKEN_BITS', - 'mmSDMA0_CHICKEN_BITS_2', 'mmSDMA0_CHICKEN_BITS_2_BASE_IDX', - 'mmSDMA0_CHICKEN_BITS_BASE_IDX', 'mmSDMA0_CLK_CTRL', - 'mmSDMA0_CLK_CTRL_BASE_IDX', 'mmSDMA0_CLOCK_GATING_REG', - 'mmSDMA0_CLOCK_GATING_REG_BASE_IDX', 'mmSDMA0_CNTL', - 'mmSDMA0_CNTL_BASE_IDX', 'mmSDMA0_CONTEXT_REG_TYPE0', - 'mmSDMA0_CONTEXT_REG_TYPE0_BASE_IDX', 'mmSDMA0_CONTEXT_REG_TYPE1', - 'mmSDMA0_CONTEXT_REG_TYPE1_BASE_IDX', 'mmSDMA0_CONTEXT_REG_TYPE2', - 'mmSDMA0_CONTEXT_REG_TYPE2_BASE_IDX', 'mmSDMA0_CONTEXT_REG_TYPE3', - 'mmSDMA0_CONTEXT_REG_TYPE3_BASE_IDX', 'mmSDMA0_CRD_CNTL', - 'mmSDMA0_CRD_CNTL_BASE_IDX', 'mmSDMA0_DEC_START', - 'mmSDMA0_DEC_START_BASE_IDX', 'mmSDMA0_EA_DBIT_ADDR_DATA', - 'mmSDMA0_EA_DBIT_ADDR_DATA_BASE_IDX', - 'mmSDMA0_EA_DBIT_ADDR_INDEX', - 'mmSDMA0_EA_DBIT_ADDR_INDEX_BASE_IDX', 'mmSDMA0_EDC_CONFIG', - 'mmSDMA0_EDC_CONFIG_BASE_IDX', 'mmSDMA0_EDC_COUNTER', - 'mmSDMA0_EDC_COUNTER_BASE_IDX', 'mmSDMA0_EDC_COUNTER_CLEAR', - 'mmSDMA0_EDC_COUNTER_CLEAR_BASE_IDX', 'mmSDMA0_ERROR_LOG', - 'mmSDMA0_ERROR_LOG_BASE_IDX', 'mmSDMA0_F32_CNTL', - 'mmSDMA0_F32_CNTL_BASE_IDX', 'mmSDMA0_F32_COUNTER', - 'mmSDMA0_F32_COUNTER_BASE_IDX', 'mmSDMA0_FREEZE', - 'mmSDMA0_FREEZE_BASE_IDX', 'mmSDMA0_GB_ADDR_CONFIG', - 'mmSDMA0_GB_ADDR_CONFIG_BASE_IDX', 'mmSDMA0_GB_ADDR_CONFIG_READ', - 'mmSDMA0_GB_ADDR_CONFIG_READ_BASE_IDX', - 'mmSDMA0_GFX_CONTEXT_CNTL', 'mmSDMA0_GFX_CONTEXT_CNTL_BASE_IDX', - 'mmSDMA0_GFX_CONTEXT_STATUS', - 'mmSDMA0_GFX_CONTEXT_STATUS_BASE_IDX', 'mmSDMA0_GFX_CSA_ADDR_HI', - 'mmSDMA0_GFX_CSA_ADDR_HI_BASE_IDX', 'mmSDMA0_GFX_CSA_ADDR_LO', - 'mmSDMA0_GFX_CSA_ADDR_LO_BASE_IDX', 'mmSDMA0_GFX_DOORBELL', - 'mmSDMA0_GFX_DOORBELL_BASE_IDX', 'mmSDMA0_GFX_DOORBELL_LOG', - 'mmSDMA0_GFX_DOORBELL_LOG_BASE_IDX', - 'mmSDMA0_GFX_DOORBELL_OFFSET', - 'mmSDMA0_GFX_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA0_GFX_DUMMY_REG', - 'mmSDMA0_GFX_DUMMY_REG_BASE_IDX', 'mmSDMA0_GFX_IB_BASE_HI', - 'mmSDMA0_GFX_IB_BASE_HI_BASE_IDX', 'mmSDMA0_GFX_IB_BASE_LO', - 'mmSDMA0_GFX_IB_BASE_LO_BASE_IDX', 'mmSDMA0_GFX_IB_CNTL', - 'mmSDMA0_GFX_IB_CNTL_BASE_IDX', 'mmSDMA0_GFX_IB_OFFSET', - 'mmSDMA0_GFX_IB_OFFSET_BASE_IDX', 'mmSDMA0_GFX_IB_RPTR', - 'mmSDMA0_GFX_IB_RPTR_BASE_IDX', 'mmSDMA0_GFX_IB_SIZE', - 'mmSDMA0_GFX_IB_SIZE_BASE_IDX', 'mmSDMA0_GFX_IB_SUB_REMAIN', - 'mmSDMA0_GFX_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA0_GFX_MIDCMD_CNTL', - 'mmSDMA0_GFX_MIDCMD_CNTL_BASE_IDX', 'mmSDMA0_GFX_MIDCMD_DATA0', - 'mmSDMA0_GFX_MIDCMD_DATA0_BASE_IDX', 'mmSDMA0_GFX_MIDCMD_DATA1', - 'mmSDMA0_GFX_MIDCMD_DATA10', 'mmSDMA0_GFX_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA0_GFX_MIDCMD_DATA1_BASE_IDX', 'mmSDMA0_GFX_MIDCMD_DATA2', - 'mmSDMA0_GFX_MIDCMD_DATA2_BASE_IDX', 'mmSDMA0_GFX_MIDCMD_DATA3', - 'mmSDMA0_GFX_MIDCMD_DATA3_BASE_IDX', 'mmSDMA0_GFX_MIDCMD_DATA4', - 'mmSDMA0_GFX_MIDCMD_DATA4_BASE_IDX', 'mmSDMA0_GFX_MIDCMD_DATA5', - 'mmSDMA0_GFX_MIDCMD_DATA5_BASE_IDX', 'mmSDMA0_GFX_MIDCMD_DATA6', - 'mmSDMA0_GFX_MIDCMD_DATA6_BASE_IDX', 'mmSDMA0_GFX_MIDCMD_DATA7', - 'mmSDMA0_GFX_MIDCMD_DATA7_BASE_IDX', 'mmSDMA0_GFX_MIDCMD_DATA8', - 'mmSDMA0_GFX_MIDCMD_DATA8_BASE_IDX', 'mmSDMA0_GFX_MIDCMD_DATA9', - 'mmSDMA0_GFX_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA0_GFX_MINOR_PTR_UPDATE', - 'mmSDMA0_GFX_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA0_GFX_PREEMPT', - 'mmSDMA0_GFX_PREEMPT_BASE_IDX', 'mmSDMA0_GFX_RB_AQL_CNTL', - 'mmSDMA0_GFX_RB_AQL_CNTL_BASE_IDX', 'mmSDMA0_GFX_RB_BASE', - 'mmSDMA0_GFX_RB_BASE_BASE_IDX', 'mmSDMA0_GFX_RB_BASE_HI', - 'mmSDMA0_GFX_RB_BASE_HI_BASE_IDX', 'mmSDMA0_GFX_RB_CNTL', - 'mmSDMA0_GFX_RB_CNTL_BASE_IDX', 'mmSDMA0_GFX_RB_RPTR', - 'mmSDMA0_GFX_RB_RPTR_ADDR_HI', - 'mmSDMA0_GFX_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA0_GFX_RB_RPTR_ADDR_LO', - 'mmSDMA0_GFX_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA0_GFX_RB_RPTR_BASE_IDX', 'mmSDMA0_GFX_RB_RPTR_HI', - 'mmSDMA0_GFX_RB_RPTR_HI_BASE_IDX', 'mmSDMA0_GFX_RB_WPTR', - 'mmSDMA0_GFX_RB_WPTR_BASE_IDX', 'mmSDMA0_GFX_RB_WPTR_HI', - 'mmSDMA0_GFX_RB_WPTR_HI_BASE_IDX', - 'mmSDMA0_GFX_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA0_GFX_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA0_GFX_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA0_GFX_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA0_GFX_RB_WPTR_POLL_CNTL', - 'mmSDMA0_GFX_RB_WPTR_POLL_CNTL_BASE_IDX', 'mmSDMA0_GFX_SKIP_CNTL', - 'mmSDMA0_GFX_SKIP_CNTL_BASE_IDX', 'mmSDMA0_GFX_STATUS', - 'mmSDMA0_GFX_STATUS_BASE_IDX', 'mmSDMA0_GFX_WATERMARK', - 'mmSDMA0_GFX_WATERMARK_BASE_IDX', 'mmSDMA0_GLOBAL_TIMESTAMP_HI', - 'mmSDMA0_GLOBAL_TIMESTAMP_HI_BASE_IDX', - 'mmSDMA0_GLOBAL_TIMESTAMP_LO', - 'mmSDMA0_GLOBAL_TIMESTAMP_LO_BASE_IDX', 'mmSDMA0_HBM_PAGE_CONFIG', - 'mmSDMA0_HBM_PAGE_CONFIG_BASE_IDX', 'mmSDMA0_HOLE_ADDR_HI', - 'mmSDMA0_HOLE_ADDR_HI_BASE_IDX', 'mmSDMA0_HOLE_ADDR_LO', - 'mmSDMA0_HOLE_ADDR_LO_BASE_IDX', 'mmSDMA0_IB_OFFSET_FETCH', - 'mmSDMA0_IB_OFFSET_FETCH_BASE_IDX', 'mmSDMA0_ID', - 'mmSDMA0_ID_BASE_IDX', 'mmSDMA0_INT_STATUS', - 'mmSDMA0_INT_STATUS_BASE_IDX', 'mmSDMA0_PAGE_CONTEXT_STATUS', - 'mmSDMA0_PAGE_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA0_PAGE_CSA_ADDR_HI', 'mmSDMA0_PAGE_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA0_PAGE_CSA_ADDR_LO', 'mmSDMA0_PAGE_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA0_PAGE_DOORBELL', 'mmSDMA0_PAGE_DOORBELL_BASE_IDX', - 'mmSDMA0_PAGE_DOORBELL_LOG', 'mmSDMA0_PAGE_DOORBELL_LOG_BASE_IDX', - 'mmSDMA0_PAGE_DOORBELL_OFFSET', - 'mmSDMA0_PAGE_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA0_PAGE_DUMMY_REG', - 'mmSDMA0_PAGE_DUMMY_REG_BASE_IDX', 'mmSDMA0_PAGE_IB_BASE_HI', - 'mmSDMA0_PAGE_IB_BASE_HI_BASE_IDX', 'mmSDMA0_PAGE_IB_BASE_LO', - 'mmSDMA0_PAGE_IB_BASE_LO_BASE_IDX', 'mmSDMA0_PAGE_IB_CNTL', - 'mmSDMA0_PAGE_IB_CNTL_BASE_IDX', 'mmSDMA0_PAGE_IB_OFFSET', - 'mmSDMA0_PAGE_IB_OFFSET_BASE_IDX', 'mmSDMA0_PAGE_IB_RPTR', - 'mmSDMA0_PAGE_IB_RPTR_BASE_IDX', 'mmSDMA0_PAGE_IB_SIZE', - 'mmSDMA0_PAGE_IB_SIZE_BASE_IDX', 'mmSDMA0_PAGE_IB_SUB_REMAIN', - 'mmSDMA0_PAGE_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA0_PAGE_MIDCMD_CNTL', - 'mmSDMA0_PAGE_MIDCMD_CNTL_BASE_IDX', 'mmSDMA0_PAGE_MIDCMD_DATA0', - 'mmSDMA0_PAGE_MIDCMD_DATA0_BASE_IDX', 'mmSDMA0_PAGE_MIDCMD_DATA1', - 'mmSDMA0_PAGE_MIDCMD_DATA10', - 'mmSDMA0_PAGE_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA0_PAGE_MIDCMD_DATA1_BASE_IDX', 'mmSDMA0_PAGE_MIDCMD_DATA2', - 'mmSDMA0_PAGE_MIDCMD_DATA2_BASE_IDX', 'mmSDMA0_PAGE_MIDCMD_DATA3', - 'mmSDMA0_PAGE_MIDCMD_DATA3_BASE_IDX', 'mmSDMA0_PAGE_MIDCMD_DATA4', - 'mmSDMA0_PAGE_MIDCMD_DATA4_BASE_IDX', 'mmSDMA0_PAGE_MIDCMD_DATA5', - 'mmSDMA0_PAGE_MIDCMD_DATA5_BASE_IDX', 'mmSDMA0_PAGE_MIDCMD_DATA6', - 'mmSDMA0_PAGE_MIDCMD_DATA6_BASE_IDX', 'mmSDMA0_PAGE_MIDCMD_DATA7', - 'mmSDMA0_PAGE_MIDCMD_DATA7_BASE_IDX', 'mmSDMA0_PAGE_MIDCMD_DATA8', - 'mmSDMA0_PAGE_MIDCMD_DATA8_BASE_IDX', 'mmSDMA0_PAGE_MIDCMD_DATA9', - 'mmSDMA0_PAGE_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA0_PAGE_MINOR_PTR_UPDATE', - 'mmSDMA0_PAGE_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA0_PAGE_PREEMPT', - 'mmSDMA0_PAGE_PREEMPT_BASE_IDX', 'mmSDMA0_PAGE_RB_AQL_CNTL', - 'mmSDMA0_PAGE_RB_AQL_CNTL_BASE_IDX', 'mmSDMA0_PAGE_RB_BASE', - 'mmSDMA0_PAGE_RB_BASE_BASE_IDX', 'mmSDMA0_PAGE_RB_BASE_HI', - 'mmSDMA0_PAGE_RB_BASE_HI_BASE_IDX', 'mmSDMA0_PAGE_RB_CNTL', - 'mmSDMA0_PAGE_RB_CNTL_BASE_IDX', 'mmSDMA0_PAGE_RB_RPTR', - 'mmSDMA0_PAGE_RB_RPTR_ADDR_HI', - 'mmSDMA0_PAGE_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA0_PAGE_RB_RPTR_ADDR_LO', - 'mmSDMA0_PAGE_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA0_PAGE_RB_RPTR_BASE_IDX', 'mmSDMA0_PAGE_RB_RPTR_HI', - 'mmSDMA0_PAGE_RB_RPTR_HI_BASE_IDX', 'mmSDMA0_PAGE_RB_WPTR', - 'mmSDMA0_PAGE_RB_WPTR_BASE_IDX', 'mmSDMA0_PAGE_RB_WPTR_HI', - 'mmSDMA0_PAGE_RB_WPTR_HI_BASE_IDX', - 'mmSDMA0_PAGE_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA0_PAGE_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA0_PAGE_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA0_PAGE_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA0_PAGE_RB_WPTR_POLL_CNTL', - 'mmSDMA0_PAGE_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA0_PAGE_SKIP_CNTL', 'mmSDMA0_PAGE_SKIP_CNTL_BASE_IDX', - 'mmSDMA0_PAGE_STATUS', 'mmSDMA0_PAGE_STATUS_BASE_IDX', - 'mmSDMA0_PAGE_WATERMARK', 'mmSDMA0_PAGE_WATERMARK_BASE_IDX', - 'mmSDMA0_PERFCNT_MISC_CNTL', 'mmSDMA0_PERFCNT_MISC_CNTL_BASE_IDX', - 'mmSDMA0_PERFCNT_PERFCOUNTER0_CFG', - 'mmSDMA0_PERFCNT_PERFCOUNTER0_CFG_BASE_IDX', - 'mmSDMA0_PERFCNT_PERFCOUNTER1_CFG', - 'mmSDMA0_PERFCNT_PERFCOUNTER1_CFG_BASE_IDX', - 'mmSDMA0_PERFCNT_PERFCOUNTER_HI', - 'mmSDMA0_PERFCNT_PERFCOUNTER_HI_BASE_IDX', - 'mmSDMA0_PERFCNT_PERFCOUNTER_LO', - 'mmSDMA0_PERFCNT_PERFCOUNTER_LO_BASE_IDX', - 'mmSDMA0_PERFCNT_PERFCOUNTER_RSLT_CNTL', - 'mmSDMA0_PERFCNT_PERFCOUNTER_RSLT_CNTL_BASE_IDX', - 'mmSDMA0_PERFCOUNTER0_HI', 'mmSDMA0_PERFCOUNTER0_HI_BASE_IDX', - 'mmSDMA0_PERFCOUNTER0_LO', 'mmSDMA0_PERFCOUNTER0_LO_BASE_IDX', - 'mmSDMA0_PERFCOUNTER0_SELECT', 'mmSDMA0_PERFCOUNTER0_SELECT1', - 'mmSDMA0_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmSDMA0_PERFCOUNTER0_SELECT_BASE_IDX', 'mmSDMA0_PERFCOUNTER1_HI', - 'mmSDMA0_PERFCOUNTER1_HI_BASE_IDX', 'mmSDMA0_PERFCOUNTER1_LO', - 'mmSDMA0_PERFCOUNTER1_LO_BASE_IDX', 'mmSDMA0_PERFCOUNTER1_SELECT', - 'mmSDMA0_PERFCOUNTER1_SELECT1', - 'mmSDMA0_PERFCOUNTER1_SELECT1_BASE_IDX', - 'mmSDMA0_PERFCOUNTER1_SELECT_BASE_IDX', 'mmSDMA0_PG_CNTL', - 'mmSDMA0_PG_CNTL_BASE_IDX', 'mmSDMA0_PG_CTX_CNTL', - 'mmSDMA0_PG_CTX_CNTL_BASE_IDX', 'mmSDMA0_PG_CTX_HI', - 'mmSDMA0_PG_CTX_HI_BASE_IDX', 'mmSDMA0_PG_CTX_LO', - 'mmSDMA0_PG_CTX_LO_BASE_IDX', 'mmSDMA0_PHASE0_QUANTUM', - 'mmSDMA0_PHASE0_QUANTUM_BASE_IDX', 'mmSDMA0_PHASE1_QUANTUM', - 'mmSDMA0_PHASE1_QUANTUM_BASE_IDX', 'mmSDMA0_PHASE2_QUANTUM', - 'mmSDMA0_PHASE2_QUANTUM_BASE_IDX', 'mmSDMA0_PHYSICAL_ADDR_HI', - 'mmSDMA0_PHYSICAL_ADDR_HI_BASE_IDX', 'mmSDMA0_PHYSICAL_ADDR_LO', - 'mmSDMA0_PHYSICAL_ADDR_LO_BASE_IDX', 'mmSDMA0_POWER_CNTL', - 'mmSDMA0_POWER_CNTL_BASE_IDX', 'mmSDMA0_PROGRAM', - 'mmSDMA0_PROGRAM_BASE_IDX', 'mmSDMA0_PUB_DUMMY_REG0', - 'mmSDMA0_PUB_DUMMY_REG0_BASE_IDX', 'mmSDMA0_PUB_DUMMY_REG1', - 'mmSDMA0_PUB_DUMMY_REG1_BASE_IDX', 'mmSDMA0_PUB_DUMMY_REG2', - 'mmSDMA0_PUB_DUMMY_REG2_BASE_IDX', 'mmSDMA0_PUB_DUMMY_REG3', - 'mmSDMA0_PUB_DUMMY_REG3_BASE_IDX', 'mmSDMA0_PUB_REG_TYPE0', - 'mmSDMA0_PUB_REG_TYPE0_BASE_IDX', 'mmSDMA0_PUB_REG_TYPE1', - 'mmSDMA0_PUB_REG_TYPE1_BASE_IDX', 'mmSDMA0_PUB_REG_TYPE2', - 'mmSDMA0_PUB_REG_TYPE2_BASE_IDX', 'mmSDMA0_PUB_REG_TYPE3', - 'mmSDMA0_PUB_REG_TYPE3_BASE_IDX', 'mmSDMA0_QUEUE_RESET_REQ', - 'mmSDMA0_QUEUE_RESET_REQ_BASE_IDX', 'mmSDMA0_RB_RPTR_FETCH', - 'mmSDMA0_RB_RPTR_FETCH_BASE_IDX', 'mmSDMA0_RB_RPTR_FETCH_HI', - 'mmSDMA0_RB_RPTR_FETCH_HI_BASE_IDX', 'mmSDMA0_RD_BURST_CNTL', - 'mmSDMA0_RD_BURST_CNTL_BASE_IDX', 'mmSDMA0_RELAX_ORDERING_LUT', - 'mmSDMA0_RELAX_ORDERING_LUT_BASE_IDX', - 'mmSDMA0_RLC0_CONTEXT_STATUS', - 'mmSDMA0_RLC0_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA0_RLC0_CSA_ADDR_HI', 'mmSDMA0_RLC0_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC0_CSA_ADDR_LO', 'mmSDMA0_RLC0_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC0_DOORBELL', 'mmSDMA0_RLC0_DOORBELL_BASE_IDX', - 'mmSDMA0_RLC0_DOORBELL_LOG', 'mmSDMA0_RLC0_DOORBELL_LOG_BASE_IDX', - 'mmSDMA0_RLC0_DOORBELL_OFFSET', - 'mmSDMA0_RLC0_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA0_RLC0_DUMMY_REG', - 'mmSDMA0_RLC0_DUMMY_REG_BASE_IDX', 'mmSDMA0_RLC0_IB_BASE_HI', - 'mmSDMA0_RLC0_IB_BASE_HI_BASE_IDX', 'mmSDMA0_RLC0_IB_BASE_LO', - 'mmSDMA0_RLC0_IB_BASE_LO_BASE_IDX', 'mmSDMA0_RLC0_IB_CNTL', - 'mmSDMA0_RLC0_IB_CNTL_BASE_IDX', 'mmSDMA0_RLC0_IB_OFFSET', - 'mmSDMA0_RLC0_IB_OFFSET_BASE_IDX', 'mmSDMA0_RLC0_IB_RPTR', - 'mmSDMA0_RLC0_IB_RPTR_BASE_IDX', 'mmSDMA0_RLC0_IB_SIZE', - 'mmSDMA0_RLC0_IB_SIZE_BASE_IDX', 'mmSDMA0_RLC0_IB_SUB_REMAIN', - 'mmSDMA0_RLC0_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA0_RLC0_MIDCMD_CNTL', - 'mmSDMA0_RLC0_MIDCMD_CNTL_BASE_IDX', 'mmSDMA0_RLC0_MIDCMD_DATA0', - 'mmSDMA0_RLC0_MIDCMD_DATA0_BASE_IDX', 'mmSDMA0_RLC0_MIDCMD_DATA1', - 'mmSDMA0_RLC0_MIDCMD_DATA10', - 'mmSDMA0_RLC0_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA0_RLC0_MIDCMD_DATA1_BASE_IDX', 'mmSDMA0_RLC0_MIDCMD_DATA2', - 'mmSDMA0_RLC0_MIDCMD_DATA2_BASE_IDX', 'mmSDMA0_RLC0_MIDCMD_DATA3', - 'mmSDMA0_RLC0_MIDCMD_DATA3_BASE_IDX', 'mmSDMA0_RLC0_MIDCMD_DATA4', - 'mmSDMA0_RLC0_MIDCMD_DATA4_BASE_IDX', 'mmSDMA0_RLC0_MIDCMD_DATA5', - 'mmSDMA0_RLC0_MIDCMD_DATA5_BASE_IDX', 'mmSDMA0_RLC0_MIDCMD_DATA6', - 'mmSDMA0_RLC0_MIDCMD_DATA6_BASE_IDX', 'mmSDMA0_RLC0_MIDCMD_DATA7', - 'mmSDMA0_RLC0_MIDCMD_DATA7_BASE_IDX', 'mmSDMA0_RLC0_MIDCMD_DATA8', - 'mmSDMA0_RLC0_MIDCMD_DATA8_BASE_IDX', 'mmSDMA0_RLC0_MIDCMD_DATA9', - 'mmSDMA0_RLC0_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA0_RLC0_MINOR_PTR_UPDATE', - 'mmSDMA0_RLC0_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA0_RLC0_PREEMPT', - 'mmSDMA0_RLC0_PREEMPT_BASE_IDX', 'mmSDMA0_RLC0_RB_AQL_CNTL', - 'mmSDMA0_RLC0_RB_AQL_CNTL_BASE_IDX', 'mmSDMA0_RLC0_RB_BASE', - 'mmSDMA0_RLC0_RB_BASE_BASE_IDX', 'mmSDMA0_RLC0_RB_BASE_HI', - 'mmSDMA0_RLC0_RB_BASE_HI_BASE_IDX', 'mmSDMA0_RLC0_RB_CNTL', - 'mmSDMA0_RLC0_RB_CNTL_BASE_IDX', 'mmSDMA0_RLC0_RB_RPTR', - 'mmSDMA0_RLC0_RB_RPTR_ADDR_HI', - 'mmSDMA0_RLC0_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC0_RB_RPTR_ADDR_LO', - 'mmSDMA0_RLC0_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC0_RB_RPTR_BASE_IDX', 'mmSDMA0_RLC0_RB_RPTR_HI', - 'mmSDMA0_RLC0_RB_RPTR_HI_BASE_IDX', 'mmSDMA0_RLC0_RB_WPTR', - 'mmSDMA0_RLC0_RB_WPTR_BASE_IDX', 'mmSDMA0_RLC0_RB_WPTR_HI', - 'mmSDMA0_RLC0_RB_WPTR_HI_BASE_IDX', - 'mmSDMA0_RLC0_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA0_RLC0_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC0_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA0_RLC0_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC0_RB_WPTR_POLL_CNTL', - 'mmSDMA0_RLC0_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA0_RLC0_SKIP_CNTL', 'mmSDMA0_RLC0_SKIP_CNTL_BASE_IDX', - 'mmSDMA0_RLC0_STATUS', 'mmSDMA0_RLC0_STATUS_BASE_IDX', - 'mmSDMA0_RLC0_WATERMARK', 'mmSDMA0_RLC0_WATERMARK_BASE_IDX', - 'mmSDMA0_RLC1_CONTEXT_STATUS', - 'mmSDMA0_RLC1_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA0_RLC1_CSA_ADDR_HI', 'mmSDMA0_RLC1_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC1_CSA_ADDR_LO', 'mmSDMA0_RLC1_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC1_DOORBELL', 'mmSDMA0_RLC1_DOORBELL_BASE_IDX', - 'mmSDMA0_RLC1_DOORBELL_LOG', 'mmSDMA0_RLC1_DOORBELL_LOG_BASE_IDX', - 'mmSDMA0_RLC1_DOORBELL_OFFSET', - 'mmSDMA0_RLC1_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA0_RLC1_DUMMY_REG', - 'mmSDMA0_RLC1_DUMMY_REG_BASE_IDX', 'mmSDMA0_RLC1_IB_BASE_HI', - 'mmSDMA0_RLC1_IB_BASE_HI_BASE_IDX', 'mmSDMA0_RLC1_IB_BASE_LO', - 'mmSDMA0_RLC1_IB_BASE_LO_BASE_IDX', 'mmSDMA0_RLC1_IB_CNTL', - 'mmSDMA0_RLC1_IB_CNTL_BASE_IDX', 'mmSDMA0_RLC1_IB_OFFSET', - 'mmSDMA0_RLC1_IB_OFFSET_BASE_IDX', 'mmSDMA0_RLC1_IB_RPTR', - 'mmSDMA0_RLC1_IB_RPTR_BASE_IDX', 'mmSDMA0_RLC1_IB_SIZE', - 'mmSDMA0_RLC1_IB_SIZE_BASE_IDX', 'mmSDMA0_RLC1_IB_SUB_REMAIN', - 'mmSDMA0_RLC1_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA0_RLC1_MIDCMD_CNTL', - 'mmSDMA0_RLC1_MIDCMD_CNTL_BASE_IDX', 'mmSDMA0_RLC1_MIDCMD_DATA0', - 'mmSDMA0_RLC1_MIDCMD_DATA0_BASE_IDX', 'mmSDMA0_RLC1_MIDCMD_DATA1', - 'mmSDMA0_RLC1_MIDCMD_DATA10', - 'mmSDMA0_RLC1_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA0_RLC1_MIDCMD_DATA1_BASE_IDX', 'mmSDMA0_RLC1_MIDCMD_DATA2', - 'mmSDMA0_RLC1_MIDCMD_DATA2_BASE_IDX', 'mmSDMA0_RLC1_MIDCMD_DATA3', - 'mmSDMA0_RLC1_MIDCMD_DATA3_BASE_IDX', 'mmSDMA0_RLC1_MIDCMD_DATA4', - 'mmSDMA0_RLC1_MIDCMD_DATA4_BASE_IDX', 'mmSDMA0_RLC1_MIDCMD_DATA5', - 'mmSDMA0_RLC1_MIDCMD_DATA5_BASE_IDX', 'mmSDMA0_RLC1_MIDCMD_DATA6', - 'mmSDMA0_RLC1_MIDCMD_DATA6_BASE_IDX', 'mmSDMA0_RLC1_MIDCMD_DATA7', - 'mmSDMA0_RLC1_MIDCMD_DATA7_BASE_IDX', 'mmSDMA0_RLC1_MIDCMD_DATA8', - 'mmSDMA0_RLC1_MIDCMD_DATA8_BASE_IDX', 'mmSDMA0_RLC1_MIDCMD_DATA9', - 'mmSDMA0_RLC1_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA0_RLC1_MINOR_PTR_UPDATE', - 'mmSDMA0_RLC1_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA0_RLC1_PREEMPT', - 'mmSDMA0_RLC1_PREEMPT_BASE_IDX', 'mmSDMA0_RLC1_RB_AQL_CNTL', - 'mmSDMA0_RLC1_RB_AQL_CNTL_BASE_IDX', 'mmSDMA0_RLC1_RB_BASE', - 'mmSDMA0_RLC1_RB_BASE_BASE_IDX', 'mmSDMA0_RLC1_RB_BASE_HI', - 'mmSDMA0_RLC1_RB_BASE_HI_BASE_IDX', 'mmSDMA0_RLC1_RB_CNTL', - 'mmSDMA0_RLC1_RB_CNTL_BASE_IDX', 'mmSDMA0_RLC1_RB_RPTR', - 'mmSDMA0_RLC1_RB_RPTR_ADDR_HI', - 'mmSDMA0_RLC1_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC1_RB_RPTR_ADDR_LO', - 'mmSDMA0_RLC1_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC1_RB_RPTR_BASE_IDX', 'mmSDMA0_RLC1_RB_RPTR_HI', - 'mmSDMA0_RLC1_RB_RPTR_HI_BASE_IDX', 'mmSDMA0_RLC1_RB_WPTR', - 'mmSDMA0_RLC1_RB_WPTR_BASE_IDX', 'mmSDMA0_RLC1_RB_WPTR_HI', - 'mmSDMA0_RLC1_RB_WPTR_HI_BASE_IDX', - 'mmSDMA0_RLC1_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA0_RLC1_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC1_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA0_RLC1_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC1_RB_WPTR_POLL_CNTL', - 'mmSDMA0_RLC1_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA0_RLC1_SKIP_CNTL', 'mmSDMA0_RLC1_SKIP_CNTL_BASE_IDX', - 'mmSDMA0_RLC1_STATUS', 'mmSDMA0_RLC1_STATUS_BASE_IDX', - 'mmSDMA0_RLC1_WATERMARK', 'mmSDMA0_RLC1_WATERMARK_BASE_IDX', - 'mmSDMA0_RLC2_CONTEXT_STATUS', - 'mmSDMA0_RLC2_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA0_RLC2_CSA_ADDR_HI', 'mmSDMA0_RLC2_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC2_CSA_ADDR_LO', 'mmSDMA0_RLC2_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC2_DOORBELL', 'mmSDMA0_RLC2_DOORBELL_BASE_IDX', - 'mmSDMA0_RLC2_DOORBELL_LOG', 'mmSDMA0_RLC2_DOORBELL_LOG_BASE_IDX', - 'mmSDMA0_RLC2_DOORBELL_OFFSET', - 'mmSDMA0_RLC2_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA0_RLC2_DUMMY_REG', - 'mmSDMA0_RLC2_DUMMY_REG_BASE_IDX', 'mmSDMA0_RLC2_IB_BASE_HI', - 'mmSDMA0_RLC2_IB_BASE_HI_BASE_IDX', 'mmSDMA0_RLC2_IB_BASE_LO', - 'mmSDMA0_RLC2_IB_BASE_LO_BASE_IDX', 'mmSDMA0_RLC2_IB_CNTL', - 'mmSDMA0_RLC2_IB_CNTL_BASE_IDX', 'mmSDMA0_RLC2_IB_OFFSET', - 'mmSDMA0_RLC2_IB_OFFSET_BASE_IDX', 'mmSDMA0_RLC2_IB_RPTR', - 'mmSDMA0_RLC2_IB_RPTR_BASE_IDX', 'mmSDMA0_RLC2_IB_SIZE', - 'mmSDMA0_RLC2_IB_SIZE_BASE_IDX', 'mmSDMA0_RLC2_IB_SUB_REMAIN', - 'mmSDMA0_RLC2_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA0_RLC2_MIDCMD_CNTL', - 'mmSDMA0_RLC2_MIDCMD_CNTL_BASE_IDX', 'mmSDMA0_RLC2_MIDCMD_DATA0', - 'mmSDMA0_RLC2_MIDCMD_DATA0_BASE_IDX', 'mmSDMA0_RLC2_MIDCMD_DATA1', - 'mmSDMA0_RLC2_MIDCMD_DATA10', - 'mmSDMA0_RLC2_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA0_RLC2_MIDCMD_DATA1_BASE_IDX', 'mmSDMA0_RLC2_MIDCMD_DATA2', - 'mmSDMA0_RLC2_MIDCMD_DATA2_BASE_IDX', 'mmSDMA0_RLC2_MIDCMD_DATA3', - 'mmSDMA0_RLC2_MIDCMD_DATA3_BASE_IDX', 'mmSDMA0_RLC2_MIDCMD_DATA4', - 'mmSDMA0_RLC2_MIDCMD_DATA4_BASE_IDX', 'mmSDMA0_RLC2_MIDCMD_DATA5', - 'mmSDMA0_RLC2_MIDCMD_DATA5_BASE_IDX', 'mmSDMA0_RLC2_MIDCMD_DATA6', - 'mmSDMA0_RLC2_MIDCMD_DATA6_BASE_IDX', 'mmSDMA0_RLC2_MIDCMD_DATA7', - 'mmSDMA0_RLC2_MIDCMD_DATA7_BASE_IDX', 'mmSDMA0_RLC2_MIDCMD_DATA8', - 'mmSDMA0_RLC2_MIDCMD_DATA8_BASE_IDX', 'mmSDMA0_RLC2_MIDCMD_DATA9', - 'mmSDMA0_RLC2_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA0_RLC2_MINOR_PTR_UPDATE', - 'mmSDMA0_RLC2_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA0_RLC2_PREEMPT', - 'mmSDMA0_RLC2_PREEMPT_BASE_IDX', 'mmSDMA0_RLC2_RB_AQL_CNTL', - 'mmSDMA0_RLC2_RB_AQL_CNTL_BASE_IDX', 'mmSDMA0_RLC2_RB_BASE', - 'mmSDMA0_RLC2_RB_BASE_BASE_IDX', 'mmSDMA0_RLC2_RB_BASE_HI', - 'mmSDMA0_RLC2_RB_BASE_HI_BASE_IDX', 'mmSDMA0_RLC2_RB_CNTL', - 'mmSDMA0_RLC2_RB_CNTL_BASE_IDX', 'mmSDMA0_RLC2_RB_RPTR', - 'mmSDMA0_RLC2_RB_RPTR_ADDR_HI', - 'mmSDMA0_RLC2_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC2_RB_RPTR_ADDR_LO', - 'mmSDMA0_RLC2_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC2_RB_RPTR_BASE_IDX', 'mmSDMA0_RLC2_RB_RPTR_HI', - 'mmSDMA0_RLC2_RB_RPTR_HI_BASE_IDX', 'mmSDMA0_RLC2_RB_WPTR', - 'mmSDMA0_RLC2_RB_WPTR_BASE_IDX', 'mmSDMA0_RLC2_RB_WPTR_HI', - 'mmSDMA0_RLC2_RB_WPTR_HI_BASE_IDX', - 'mmSDMA0_RLC2_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA0_RLC2_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC2_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA0_RLC2_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC2_RB_WPTR_POLL_CNTL', - 'mmSDMA0_RLC2_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA0_RLC2_SKIP_CNTL', 'mmSDMA0_RLC2_SKIP_CNTL_BASE_IDX', - 'mmSDMA0_RLC2_STATUS', 'mmSDMA0_RLC2_STATUS_BASE_IDX', - 'mmSDMA0_RLC2_WATERMARK', 'mmSDMA0_RLC2_WATERMARK_BASE_IDX', - 'mmSDMA0_RLC3_CONTEXT_STATUS', - 'mmSDMA0_RLC3_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA0_RLC3_CSA_ADDR_HI', 'mmSDMA0_RLC3_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC3_CSA_ADDR_LO', 'mmSDMA0_RLC3_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC3_DOORBELL', 'mmSDMA0_RLC3_DOORBELL_BASE_IDX', - 'mmSDMA0_RLC3_DOORBELL_LOG', 'mmSDMA0_RLC3_DOORBELL_LOG_BASE_IDX', - 'mmSDMA0_RLC3_DOORBELL_OFFSET', - 'mmSDMA0_RLC3_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA0_RLC3_DUMMY_REG', - 'mmSDMA0_RLC3_DUMMY_REG_BASE_IDX', 'mmSDMA0_RLC3_IB_BASE_HI', - 'mmSDMA0_RLC3_IB_BASE_HI_BASE_IDX', 'mmSDMA0_RLC3_IB_BASE_LO', - 'mmSDMA0_RLC3_IB_BASE_LO_BASE_IDX', 'mmSDMA0_RLC3_IB_CNTL', - 'mmSDMA0_RLC3_IB_CNTL_BASE_IDX', 'mmSDMA0_RLC3_IB_OFFSET', - 'mmSDMA0_RLC3_IB_OFFSET_BASE_IDX', 'mmSDMA0_RLC3_IB_RPTR', - 'mmSDMA0_RLC3_IB_RPTR_BASE_IDX', 'mmSDMA0_RLC3_IB_SIZE', - 'mmSDMA0_RLC3_IB_SIZE_BASE_IDX', 'mmSDMA0_RLC3_IB_SUB_REMAIN', - 'mmSDMA0_RLC3_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA0_RLC3_MIDCMD_CNTL', - 'mmSDMA0_RLC3_MIDCMD_CNTL_BASE_IDX', 'mmSDMA0_RLC3_MIDCMD_DATA0', - 'mmSDMA0_RLC3_MIDCMD_DATA0_BASE_IDX', 'mmSDMA0_RLC3_MIDCMD_DATA1', - 'mmSDMA0_RLC3_MIDCMD_DATA10', - 'mmSDMA0_RLC3_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA0_RLC3_MIDCMD_DATA1_BASE_IDX', 'mmSDMA0_RLC3_MIDCMD_DATA2', - 'mmSDMA0_RLC3_MIDCMD_DATA2_BASE_IDX', 'mmSDMA0_RLC3_MIDCMD_DATA3', - 'mmSDMA0_RLC3_MIDCMD_DATA3_BASE_IDX', 'mmSDMA0_RLC3_MIDCMD_DATA4', - 'mmSDMA0_RLC3_MIDCMD_DATA4_BASE_IDX', 'mmSDMA0_RLC3_MIDCMD_DATA5', - 'mmSDMA0_RLC3_MIDCMD_DATA5_BASE_IDX', 'mmSDMA0_RLC3_MIDCMD_DATA6', - 'mmSDMA0_RLC3_MIDCMD_DATA6_BASE_IDX', 'mmSDMA0_RLC3_MIDCMD_DATA7', - 'mmSDMA0_RLC3_MIDCMD_DATA7_BASE_IDX', 'mmSDMA0_RLC3_MIDCMD_DATA8', - 'mmSDMA0_RLC3_MIDCMD_DATA8_BASE_IDX', 'mmSDMA0_RLC3_MIDCMD_DATA9', - 'mmSDMA0_RLC3_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA0_RLC3_MINOR_PTR_UPDATE', - 'mmSDMA0_RLC3_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA0_RLC3_PREEMPT', - 'mmSDMA0_RLC3_PREEMPT_BASE_IDX', 'mmSDMA0_RLC3_RB_AQL_CNTL', - 'mmSDMA0_RLC3_RB_AQL_CNTL_BASE_IDX', 'mmSDMA0_RLC3_RB_BASE', - 'mmSDMA0_RLC3_RB_BASE_BASE_IDX', 'mmSDMA0_RLC3_RB_BASE_HI', - 'mmSDMA0_RLC3_RB_BASE_HI_BASE_IDX', 'mmSDMA0_RLC3_RB_CNTL', - 'mmSDMA0_RLC3_RB_CNTL_BASE_IDX', 'mmSDMA0_RLC3_RB_RPTR', - 'mmSDMA0_RLC3_RB_RPTR_ADDR_HI', - 'mmSDMA0_RLC3_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC3_RB_RPTR_ADDR_LO', - 'mmSDMA0_RLC3_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC3_RB_RPTR_BASE_IDX', 'mmSDMA0_RLC3_RB_RPTR_HI', - 'mmSDMA0_RLC3_RB_RPTR_HI_BASE_IDX', 'mmSDMA0_RLC3_RB_WPTR', - 'mmSDMA0_RLC3_RB_WPTR_BASE_IDX', 'mmSDMA0_RLC3_RB_WPTR_HI', - 'mmSDMA0_RLC3_RB_WPTR_HI_BASE_IDX', - 'mmSDMA0_RLC3_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA0_RLC3_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC3_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA0_RLC3_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC3_RB_WPTR_POLL_CNTL', - 'mmSDMA0_RLC3_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA0_RLC3_SKIP_CNTL', 'mmSDMA0_RLC3_SKIP_CNTL_BASE_IDX', - 'mmSDMA0_RLC3_STATUS', 'mmSDMA0_RLC3_STATUS_BASE_IDX', - 'mmSDMA0_RLC3_WATERMARK', 'mmSDMA0_RLC3_WATERMARK_BASE_IDX', - 'mmSDMA0_RLC4_CONTEXT_STATUS', - 'mmSDMA0_RLC4_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA0_RLC4_CSA_ADDR_HI', 'mmSDMA0_RLC4_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC4_CSA_ADDR_LO', 'mmSDMA0_RLC4_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC4_DOORBELL', 'mmSDMA0_RLC4_DOORBELL_BASE_IDX', - 'mmSDMA0_RLC4_DOORBELL_LOG', 'mmSDMA0_RLC4_DOORBELL_LOG_BASE_IDX', - 'mmSDMA0_RLC4_DOORBELL_OFFSET', - 'mmSDMA0_RLC4_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA0_RLC4_DUMMY_REG', - 'mmSDMA0_RLC4_DUMMY_REG_BASE_IDX', 'mmSDMA0_RLC4_IB_BASE_HI', - 'mmSDMA0_RLC4_IB_BASE_HI_BASE_IDX', 'mmSDMA0_RLC4_IB_BASE_LO', - 'mmSDMA0_RLC4_IB_BASE_LO_BASE_IDX', 'mmSDMA0_RLC4_IB_CNTL', - 'mmSDMA0_RLC4_IB_CNTL_BASE_IDX', 'mmSDMA0_RLC4_IB_OFFSET', - 'mmSDMA0_RLC4_IB_OFFSET_BASE_IDX', 'mmSDMA0_RLC4_IB_RPTR', - 'mmSDMA0_RLC4_IB_RPTR_BASE_IDX', 'mmSDMA0_RLC4_IB_SIZE', - 'mmSDMA0_RLC4_IB_SIZE_BASE_IDX', 'mmSDMA0_RLC4_IB_SUB_REMAIN', - 'mmSDMA0_RLC4_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA0_RLC4_MIDCMD_CNTL', - 'mmSDMA0_RLC4_MIDCMD_CNTL_BASE_IDX', 'mmSDMA0_RLC4_MIDCMD_DATA0', - 'mmSDMA0_RLC4_MIDCMD_DATA0_BASE_IDX', 'mmSDMA0_RLC4_MIDCMD_DATA1', - 'mmSDMA0_RLC4_MIDCMD_DATA10', - 'mmSDMA0_RLC4_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA0_RLC4_MIDCMD_DATA1_BASE_IDX', 'mmSDMA0_RLC4_MIDCMD_DATA2', - 'mmSDMA0_RLC4_MIDCMD_DATA2_BASE_IDX', 'mmSDMA0_RLC4_MIDCMD_DATA3', - 'mmSDMA0_RLC4_MIDCMD_DATA3_BASE_IDX', 'mmSDMA0_RLC4_MIDCMD_DATA4', - 'mmSDMA0_RLC4_MIDCMD_DATA4_BASE_IDX', 'mmSDMA0_RLC4_MIDCMD_DATA5', - 'mmSDMA0_RLC4_MIDCMD_DATA5_BASE_IDX', 'mmSDMA0_RLC4_MIDCMD_DATA6', - 'mmSDMA0_RLC4_MIDCMD_DATA6_BASE_IDX', 'mmSDMA0_RLC4_MIDCMD_DATA7', - 'mmSDMA0_RLC4_MIDCMD_DATA7_BASE_IDX', 'mmSDMA0_RLC4_MIDCMD_DATA8', - 'mmSDMA0_RLC4_MIDCMD_DATA8_BASE_IDX', 'mmSDMA0_RLC4_MIDCMD_DATA9', - 'mmSDMA0_RLC4_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA0_RLC4_MINOR_PTR_UPDATE', - 'mmSDMA0_RLC4_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA0_RLC4_PREEMPT', - 'mmSDMA0_RLC4_PREEMPT_BASE_IDX', 'mmSDMA0_RLC4_RB_AQL_CNTL', - 'mmSDMA0_RLC4_RB_AQL_CNTL_BASE_IDX', 'mmSDMA0_RLC4_RB_BASE', - 'mmSDMA0_RLC4_RB_BASE_BASE_IDX', 'mmSDMA0_RLC4_RB_BASE_HI', - 'mmSDMA0_RLC4_RB_BASE_HI_BASE_IDX', 'mmSDMA0_RLC4_RB_CNTL', - 'mmSDMA0_RLC4_RB_CNTL_BASE_IDX', 'mmSDMA0_RLC4_RB_RPTR', - 'mmSDMA0_RLC4_RB_RPTR_ADDR_HI', - 'mmSDMA0_RLC4_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC4_RB_RPTR_ADDR_LO', - 'mmSDMA0_RLC4_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC4_RB_RPTR_BASE_IDX', 'mmSDMA0_RLC4_RB_RPTR_HI', - 'mmSDMA0_RLC4_RB_RPTR_HI_BASE_IDX', 'mmSDMA0_RLC4_RB_WPTR', - 'mmSDMA0_RLC4_RB_WPTR_BASE_IDX', 'mmSDMA0_RLC4_RB_WPTR_HI', - 'mmSDMA0_RLC4_RB_WPTR_HI_BASE_IDX', - 'mmSDMA0_RLC4_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA0_RLC4_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC4_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA0_RLC4_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC4_RB_WPTR_POLL_CNTL', - 'mmSDMA0_RLC4_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA0_RLC4_SKIP_CNTL', 'mmSDMA0_RLC4_SKIP_CNTL_BASE_IDX', - 'mmSDMA0_RLC4_STATUS', 'mmSDMA0_RLC4_STATUS_BASE_IDX', - 'mmSDMA0_RLC4_WATERMARK', 'mmSDMA0_RLC4_WATERMARK_BASE_IDX', - 'mmSDMA0_RLC5_CONTEXT_STATUS', - 'mmSDMA0_RLC5_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA0_RLC5_CSA_ADDR_HI', 'mmSDMA0_RLC5_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC5_CSA_ADDR_LO', 'mmSDMA0_RLC5_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC5_DOORBELL', 'mmSDMA0_RLC5_DOORBELL_BASE_IDX', - 'mmSDMA0_RLC5_DOORBELL_LOG', 'mmSDMA0_RLC5_DOORBELL_LOG_BASE_IDX', - 'mmSDMA0_RLC5_DOORBELL_OFFSET', - 'mmSDMA0_RLC5_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA0_RLC5_DUMMY_REG', - 'mmSDMA0_RLC5_DUMMY_REG_BASE_IDX', 'mmSDMA0_RLC5_IB_BASE_HI', - 'mmSDMA0_RLC5_IB_BASE_HI_BASE_IDX', 'mmSDMA0_RLC5_IB_BASE_LO', - 'mmSDMA0_RLC5_IB_BASE_LO_BASE_IDX', 'mmSDMA0_RLC5_IB_CNTL', - 'mmSDMA0_RLC5_IB_CNTL_BASE_IDX', 'mmSDMA0_RLC5_IB_OFFSET', - 'mmSDMA0_RLC5_IB_OFFSET_BASE_IDX', 'mmSDMA0_RLC5_IB_RPTR', - 'mmSDMA0_RLC5_IB_RPTR_BASE_IDX', 'mmSDMA0_RLC5_IB_SIZE', - 'mmSDMA0_RLC5_IB_SIZE_BASE_IDX', 'mmSDMA0_RLC5_IB_SUB_REMAIN', - 'mmSDMA0_RLC5_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA0_RLC5_MIDCMD_CNTL', - 'mmSDMA0_RLC5_MIDCMD_CNTL_BASE_IDX', 'mmSDMA0_RLC5_MIDCMD_DATA0', - 'mmSDMA0_RLC5_MIDCMD_DATA0_BASE_IDX', 'mmSDMA0_RLC5_MIDCMD_DATA1', - 'mmSDMA0_RLC5_MIDCMD_DATA10', - 'mmSDMA0_RLC5_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA0_RLC5_MIDCMD_DATA1_BASE_IDX', 'mmSDMA0_RLC5_MIDCMD_DATA2', - 'mmSDMA0_RLC5_MIDCMD_DATA2_BASE_IDX', 'mmSDMA0_RLC5_MIDCMD_DATA3', - 'mmSDMA0_RLC5_MIDCMD_DATA3_BASE_IDX', 'mmSDMA0_RLC5_MIDCMD_DATA4', - 'mmSDMA0_RLC5_MIDCMD_DATA4_BASE_IDX', 'mmSDMA0_RLC5_MIDCMD_DATA5', - 'mmSDMA0_RLC5_MIDCMD_DATA5_BASE_IDX', 'mmSDMA0_RLC5_MIDCMD_DATA6', - 'mmSDMA0_RLC5_MIDCMD_DATA6_BASE_IDX', 'mmSDMA0_RLC5_MIDCMD_DATA7', - 'mmSDMA0_RLC5_MIDCMD_DATA7_BASE_IDX', 'mmSDMA0_RLC5_MIDCMD_DATA8', - 'mmSDMA0_RLC5_MIDCMD_DATA8_BASE_IDX', 'mmSDMA0_RLC5_MIDCMD_DATA9', - 'mmSDMA0_RLC5_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA0_RLC5_MINOR_PTR_UPDATE', - 'mmSDMA0_RLC5_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA0_RLC5_PREEMPT', - 'mmSDMA0_RLC5_PREEMPT_BASE_IDX', 'mmSDMA0_RLC5_RB_AQL_CNTL', - 'mmSDMA0_RLC5_RB_AQL_CNTL_BASE_IDX', 'mmSDMA0_RLC5_RB_BASE', - 'mmSDMA0_RLC5_RB_BASE_BASE_IDX', 'mmSDMA0_RLC5_RB_BASE_HI', - 'mmSDMA0_RLC5_RB_BASE_HI_BASE_IDX', 'mmSDMA0_RLC5_RB_CNTL', - 'mmSDMA0_RLC5_RB_CNTL_BASE_IDX', 'mmSDMA0_RLC5_RB_RPTR', - 'mmSDMA0_RLC5_RB_RPTR_ADDR_HI', - 'mmSDMA0_RLC5_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC5_RB_RPTR_ADDR_LO', - 'mmSDMA0_RLC5_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC5_RB_RPTR_BASE_IDX', 'mmSDMA0_RLC5_RB_RPTR_HI', - 'mmSDMA0_RLC5_RB_RPTR_HI_BASE_IDX', 'mmSDMA0_RLC5_RB_WPTR', - 'mmSDMA0_RLC5_RB_WPTR_BASE_IDX', 'mmSDMA0_RLC5_RB_WPTR_HI', - 'mmSDMA0_RLC5_RB_WPTR_HI_BASE_IDX', - 'mmSDMA0_RLC5_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA0_RLC5_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC5_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA0_RLC5_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC5_RB_WPTR_POLL_CNTL', - 'mmSDMA0_RLC5_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA0_RLC5_SKIP_CNTL', 'mmSDMA0_RLC5_SKIP_CNTL_BASE_IDX', - 'mmSDMA0_RLC5_STATUS', 'mmSDMA0_RLC5_STATUS_BASE_IDX', - 'mmSDMA0_RLC5_WATERMARK', 'mmSDMA0_RLC5_WATERMARK_BASE_IDX', - 'mmSDMA0_RLC6_CONTEXT_STATUS', - 'mmSDMA0_RLC6_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA0_RLC6_CSA_ADDR_HI', 'mmSDMA0_RLC6_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC6_CSA_ADDR_LO', 'mmSDMA0_RLC6_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC6_DOORBELL', 'mmSDMA0_RLC6_DOORBELL_BASE_IDX', - 'mmSDMA0_RLC6_DOORBELL_LOG', 'mmSDMA0_RLC6_DOORBELL_LOG_BASE_IDX', - 'mmSDMA0_RLC6_DOORBELL_OFFSET', - 'mmSDMA0_RLC6_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA0_RLC6_DUMMY_REG', - 'mmSDMA0_RLC6_DUMMY_REG_BASE_IDX', 'mmSDMA0_RLC6_IB_BASE_HI', - 'mmSDMA0_RLC6_IB_BASE_HI_BASE_IDX', 'mmSDMA0_RLC6_IB_BASE_LO', - 'mmSDMA0_RLC6_IB_BASE_LO_BASE_IDX', 'mmSDMA0_RLC6_IB_CNTL', - 'mmSDMA0_RLC6_IB_CNTL_BASE_IDX', 'mmSDMA0_RLC6_IB_OFFSET', - 'mmSDMA0_RLC6_IB_OFFSET_BASE_IDX', 'mmSDMA0_RLC6_IB_RPTR', - 'mmSDMA0_RLC6_IB_RPTR_BASE_IDX', 'mmSDMA0_RLC6_IB_SIZE', - 'mmSDMA0_RLC6_IB_SIZE_BASE_IDX', 'mmSDMA0_RLC6_IB_SUB_REMAIN', - 'mmSDMA0_RLC6_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA0_RLC6_MIDCMD_CNTL', - 'mmSDMA0_RLC6_MIDCMD_CNTL_BASE_IDX', 'mmSDMA0_RLC6_MIDCMD_DATA0', - 'mmSDMA0_RLC6_MIDCMD_DATA0_BASE_IDX', 'mmSDMA0_RLC6_MIDCMD_DATA1', - 'mmSDMA0_RLC6_MIDCMD_DATA10', - 'mmSDMA0_RLC6_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA0_RLC6_MIDCMD_DATA1_BASE_IDX', 'mmSDMA0_RLC6_MIDCMD_DATA2', - 'mmSDMA0_RLC6_MIDCMD_DATA2_BASE_IDX', 'mmSDMA0_RLC6_MIDCMD_DATA3', - 'mmSDMA0_RLC6_MIDCMD_DATA3_BASE_IDX', 'mmSDMA0_RLC6_MIDCMD_DATA4', - 'mmSDMA0_RLC6_MIDCMD_DATA4_BASE_IDX', 'mmSDMA0_RLC6_MIDCMD_DATA5', - 'mmSDMA0_RLC6_MIDCMD_DATA5_BASE_IDX', 'mmSDMA0_RLC6_MIDCMD_DATA6', - 'mmSDMA0_RLC6_MIDCMD_DATA6_BASE_IDX', 'mmSDMA0_RLC6_MIDCMD_DATA7', - 'mmSDMA0_RLC6_MIDCMD_DATA7_BASE_IDX', 'mmSDMA0_RLC6_MIDCMD_DATA8', - 'mmSDMA0_RLC6_MIDCMD_DATA8_BASE_IDX', 'mmSDMA0_RLC6_MIDCMD_DATA9', - 'mmSDMA0_RLC6_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA0_RLC6_MINOR_PTR_UPDATE', - 'mmSDMA0_RLC6_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA0_RLC6_PREEMPT', - 'mmSDMA0_RLC6_PREEMPT_BASE_IDX', 'mmSDMA0_RLC6_RB_AQL_CNTL', - 'mmSDMA0_RLC6_RB_AQL_CNTL_BASE_IDX', 'mmSDMA0_RLC6_RB_BASE', - 'mmSDMA0_RLC6_RB_BASE_BASE_IDX', 'mmSDMA0_RLC6_RB_BASE_HI', - 'mmSDMA0_RLC6_RB_BASE_HI_BASE_IDX', 'mmSDMA0_RLC6_RB_CNTL', - 'mmSDMA0_RLC6_RB_CNTL_BASE_IDX', 'mmSDMA0_RLC6_RB_RPTR', - 'mmSDMA0_RLC6_RB_RPTR_ADDR_HI', - 'mmSDMA0_RLC6_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC6_RB_RPTR_ADDR_LO', - 'mmSDMA0_RLC6_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC6_RB_RPTR_BASE_IDX', 'mmSDMA0_RLC6_RB_RPTR_HI', - 'mmSDMA0_RLC6_RB_RPTR_HI_BASE_IDX', 'mmSDMA0_RLC6_RB_WPTR', - 'mmSDMA0_RLC6_RB_WPTR_BASE_IDX', 'mmSDMA0_RLC6_RB_WPTR_HI', - 'mmSDMA0_RLC6_RB_WPTR_HI_BASE_IDX', - 'mmSDMA0_RLC6_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA0_RLC6_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC6_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA0_RLC6_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC6_RB_WPTR_POLL_CNTL', - 'mmSDMA0_RLC6_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA0_RLC6_SKIP_CNTL', 'mmSDMA0_RLC6_SKIP_CNTL_BASE_IDX', - 'mmSDMA0_RLC6_STATUS', 'mmSDMA0_RLC6_STATUS_BASE_IDX', - 'mmSDMA0_RLC6_WATERMARK', 'mmSDMA0_RLC6_WATERMARK_BASE_IDX', - 'mmSDMA0_RLC7_CONTEXT_STATUS', - 'mmSDMA0_RLC7_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA0_RLC7_CSA_ADDR_HI', 'mmSDMA0_RLC7_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC7_CSA_ADDR_LO', 'mmSDMA0_RLC7_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC7_DOORBELL', 'mmSDMA0_RLC7_DOORBELL_BASE_IDX', - 'mmSDMA0_RLC7_DOORBELL_LOG', 'mmSDMA0_RLC7_DOORBELL_LOG_BASE_IDX', - 'mmSDMA0_RLC7_DOORBELL_OFFSET', - 'mmSDMA0_RLC7_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA0_RLC7_DUMMY_REG', - 'mmSDMA0_RLC7_DUMMY_REG_BASE_IDX', 'mmSDMA0_RLC7_IB_BASE_HI', - 'mmSDMA0_RLC7_IB_BASE_HI_BASE_IDX', 'mmSDMA0_RLC7_IB_BASE_LO', - 'mmSDMA0_RLC7_IB_BASE_LO_BASE_IDX', 'mmSDMA0_RLC7_IB_CNTL', - 'mmSDMA0_RLC7_IB_CNTL_BASE_IDX', 'mmSDMA0_RLC7_IB_OFFSET', - 'mmSDMA0_RLC7_IB_OFFSET_BASE_IDX', 'mmSDMA0_RLC7_IB_RPTR', - 'mmSDMA0_RLC7_IB_RPTR_BASE_IDX', 'mmSDMA0_RLC7_IB_SIZE', - 'mmSDMA0_RLC7_IB_SIZE_BASE_IDX', 'mmSDMA0_RLC7_IB_SUB_REMAIN', - 'mmSDMA0_RLC7_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA0_RLC7_MIDCMD_CNTL', - 'mmSDMA0_RLC7_MIDCMD_CNTL_BASE_IDX', 'mmSDMA0_RLC7_MIDCMD_DATA0', - 'mmSDMA0_RLC7_MIDCMD_DATA0_BASE_IDX', 'mmSDMA0_RLC7_MIDCMD_DATA1', - 'mmSDMA0_RLC7_MIDCMD_DATA10', - 'mmSDMA0_RLC7_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA0_RLC7_MIDCMD_DATA1_BASE_IDX', 'mmSDMA0_RLC7_MIDCMD_DATA2', - 'mmSDMA0_RLC7_MIDCMD_DATA2_BASE_IDX', 'mmSDMA0_RLC7_MIDCMD_DATA3', - 'mmSDMA0_RLC7_MIDCMD_DATA3_BASE_IDX', 'mmSDMA0_RLC7_MIDCMD_DATA4', - 'mmSDMA0_RLC7_MIDCMD_DATA4_BASE_IDX', 'mmSDMA0_RLC7_MIDCMD_DATA5', - 'mmSDMA0_RLC7_MIDCMD_DATA5_BASE_IDX', 'mmSDMA0_RLC7_MIDCMD_DATA6', - 'mmSDMA0_RLC7_MIDCMD_DATA6_BASE_IDX', 'mmSDMA0_RLC7_MIDCMD_DATA7', - 'mmSDMA0_RLC7_MIDCMD_DATA7_BASE_IDX', 'mmSDMA0_RLC7_MIDCMD_DATA8', - 'mmSDMA0_RLC7_MIDCMD_DATA8_BASE_IDX', 'mmSDMA0_RLC7_MIDCMD_DATA9', - 'mmSDMA0_RLC7_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA0_RLC7_MINOR_PTR_UPDATE', - 'mmSDMA0_RLC7_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA0_RLC7_PREEMPT', - 'mmSDMA0_RLC7_PREEMPT_BASE_IDX', 'mmSDMA0_RLC7_RB_AQL_CNTL', - 'mmSDMA0_RLC7_RB_AQL_CNTL_BASE_IDX', 'mmSDMA0_RLC7_RB_BASE', - 'mmSDMA0_RLC7_RB_BASE_BASE_IDX', 'mmSDMA0_RLC7_RB_BASE_HI', - 'mmSDMA0_RLC7_RB_BASE_HI_BASE_IDX', 'mmSDMA0_RLC7_RB_CNTL', - 'mmSDMA0_RLC7_RB_CNTL_BASE_IDX', 'mmSDMA0_RLC7_RB_RPTR', - 'mmSDMA0_RLC7_RB_RPTR_ADDR_HI', - 'mmSDMA0_RLC7_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC7_RB_RPTR_ADDR_LO', - 'mmSDMA0_RLC7_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC7_RB_RPTR_BASE_IDX', 'mmSDMA0_RLC7_RB_RPTR_HI', - 'mmSDMA0_RLC7_RB_RPTR_HI_BASE_IDX', 'mmSDMA0_RLC7_RB_WPTR', - 'mmSDMA0_RLC7_RB_WPTR_BASE_IDX', 'mmSDMA0_RLC7_RB_WPTR_HI', - 'mmSDMA0_RLC7_RB_WPTR_HI_BASE_IDX', - 'mmSDMA0_RLC7_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA0_RLC7_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA0_RLC7_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA0_RLC7_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA0_RLC7_RB_WPTR_POLL_CNTL', - 'mmSDMA0_RLC7_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA0_RLC7_SKIP_CNTL', 'mmSDMA0_RLC7_SKIP_CNTL_BASE_IDX', - 'mmSDMA0_RLC7_STATUS', 'mmSDMA0_RLC7_STATUS_BASE_IDX', - 'mmSDMA0_RLC7_WATERMARK', 'mmSDMA0_RLC7_WATERMARK_BASE_IDX', - 'mmSDMA0_SCRATCH_RAM_ADDR', 'mmSDMA0_SCRATCH_RAM_ADDR_BASE_IDX', - 'mmSDMA0_SCRATCH_RAM_DATA', 'mmSDMA0_SCRATCH_RAM_DATA_BASE_IDX', - 'mmSDMA0_SEM_WAIT_FAIL_TIMER_CNTL', - 'mmSDMA0_SEM_WAIT_FAIL_TIMER_CNTL_BASE_IDX', - 'mmSDMA0_STATUS1_REG', 'mmSDMA0_STATUS1_REG_BASE_IDX', - 'mmSDMA0_STATUS2_REG', 'mmSDMA0_STATUS2_REG_BASE_IDX', - 'mmSDMA0_STATUS3_REG', 'mmSDMA0_STATUS3_REG_BASE_IDX', - 'mmSDMA0_STATUS4_REG', 'mmSDMA0_STATUS4_REG_BASE_IDX', - 'mmSDMA0_STATUS5_REG', 'mmSDMA0_STATUS5_REG_BASE_IDX', - 'mmSDMA0_STATUS_REG', 'mmSDMA0_STATUS_REG_BASE_IDX', - 'mmSDMA0_TILING_CONFIG', 'mmSDMA0_TILING_CONFIG_BASE_IDX', - 'mmSDMA0_TIMESTAMP_CNTL', 'mmSDMA0_TIMESTAMP_CNTL_BASE_IDX', - 'mmSDMA0_TLBI_GCR_CNTL', 'mmSDMA0_TLBI_GCR_CNTL_BASE_IDX', - 'mmSDMA0_UCODE_ADDR', 'mmSDMA0_UCODE_ADDR_BASE_IDX', - 'mmSDMA0_UCODE_CHECKSUM', 'mmSDMA0_UCODE_CHECKSUM_BASE_IDX', - 'mmSDMA0_UCODE_DATA', 'mmSDMA0_UCODE_DATA_BASE_IDX', - 'mmSDMA0_UTCL1_CNTL', 'mmSDMA0_UTCL1_CNTL_BASE_IDX', - 'mmSDMA0_UTCL1_INV0', 'mmSDMA0_UTCL1_INV0_BASE_IDX', - 'mmSDMA0_UTCL1_INV1', 'mmSDMA0_UTCL1_INV1_BASE_IDX', - 'mmSDMA0_UTCL1_INV2', 'mmSDMA0_UTCL1_INV2_BASE_IDX', - 'mmSDMA0_UTCL1_PAGE', 'mmSDMA0_UTCL1_PAGE_BASE_IDX', - 'mmSDMA0_UTCL1_RD_STATUS', 'mmSDMA0_UTCL1_RD_STATUS_BASE_IDX', - 'mmSDMA0_UTCL1_RD_XNACK0', 'mmSDMA0_UTCL1_RD_XNACK0_BASE_IDX', - 'mmSDMA0_UTCL1_RD_XNACK1', 'mmSDMA0_UTCL1_RD_XNACK1_BASE_IDX', - 'mmSDMA0_UTCL1_TIMEOUT', 'mmSDMA0_UTCL1_TIMEOUT_BASE_IDX', - 'mmSDMA0_UTCL1_WATERMK', 'mmSDMA0_UTCL1_WATERMK_BASE_IDX', - 'mmSDMA0_UTCL1_WR_STATUS', 'mmSDMA0_UTCL1_WR_STATUS_BASE_IDX', - 'mmSDMA0_UTCL1_WR_XNACK0', 'mmSDMA0_UTCL1_WR_XNACK0_BASE_IDX', - 'mmSDMA0_UTCL1_WR_XNACK1', 'mmSDMA0_UTCL1_WR_XNACK1_BASE_IDX', - 'mmSDMA0_VERSION', 'mmSDMA0_VERSION_BASE_IDX', - 'mmSDMA0_VF_ENABLE', 'mmSDMA0_VF_ENABLE_BASE_IDX', - 'mmSDMA0_VIRT_RESET_REQ', 'mmSDMA0_VIRT_RESET_REQ_BASE_IDX', - 'mmSDMA0_VM_CNTL', 'mmSDMA0_VM_CNTL_BASE_IDX', - 'mmSDMA0_VM_CTX_CNTL', 'mmSDMA0_VM_CTX_CNTL_BASE_IDX', - 'mmSDMA0_VM_CTX_HI', 'mmSDMA0_VM_CTX_HI_BASE_IDX', - 'mmSDMA0_VM_CTX_LO', 'mmSDMA0_VM_CTX_LO_BASE_IDX', - 'mmSDMA1_ACTIVE_FCN_ID', 'mmSDMA1_ACTIVE_FCN_ID_BASE_IDX', - 'mmSDMA1_AQL_STATUS', 'mmSDMA1_AQL_STATUS_BASE_IDX', - 'mmSDMA1_ATOMIC_CNTL', 'mmSDMA1_ATOMIC_CNTL_BASE_IDX', - 'mmSDMA1_ATOMIC_PREOP_HI', 'mmSDMA1_ATOMIC_PREOP_HI_BASE_IDX', - 'mmSDMA1_ATOMIC_PREOP_LO', 'mmSDMA1_ATOMIC_PREOP_LO_BASE_IDX', - 'mmSDMA1_BA_THRESHOLD', 'mmSDMA1_BA_THRESHOLD_BASE_IDX', - 'mmSDMA1_CHICKEN_BITS', 'mmSDMA1_CHICKEN_BITS_2', - 'mmSDMA1_CHICKEN_BITS_2_BASE_IDX', - 'mmSDMA1_CHICKEN_BITS_BASE_IDX', 'mmSDMA1_CLK_CTRL', - 'mmSDMA1_CLK_CTRL_BASE_IDX', 'mmSDMA1_CLOCK_GATING_REG', - 'mmSDMA1_CLOCK_GATING_REG_BASE_IDX', 'mmSDMA1_CNTL', - 'mmSDMA1_CNTL_BASE_IDX', 'mmSDMA1_CONTEXT_REG_TYPE0', - 'mmSDMA1_CONTEXT_REG_TYPE0_BASE_IDX', 'mmSDMA1_CONTEXT_REG_TYPE1', - 'mmSDMA1_CONTEXT_REG_TYPE1_BASE_IDX', 'mmSDMA1_CONTEXT_REG_TYPE2', - 'mmSDMA1_CONTEXT_REG_TYPE2_BASE_IDX', 'mmSDMA1_CONTEXT_REG_TYPE3', - 'mmSDMA1_CONTEXT_REG_TYPE3_BASE_IDX', 'mmSDMA1_CRD_CNTL', - 'mmSDMA1_CRD_CNTL_BASE_IDX', 'mmSDMA1_DEC_START', - 'mmSDMA1_DEC_START_BASE_IDX', 'mmSDMA1_EA_DBIT_ADDR_DATA', - 'mmSDMA1_EA_DBIT_ADDR_DATA_BASE_IDX', - 'mmSDMA1_EA_DBIT_ADDR_INDEX', - 'mmSDMA1_EA_DBIT_ADDR_INDEX_BASE_IDX', 'mmSDMA1_EDC_CONFIG', - 'mmSDMA1_EDC_CONFIG_BASE_IDX', 'mmSDMA1_EDC_COUNTER', - 'mmSDMA1_EDC_COUNTER_BASE_IDX', 'mmSDMA1_EDC_COUNTER_CLEAR', - 'mmSDMA1_EDC_COUNTER_CLEAR_BASE_IDX', 'mmSDMA1_ERROR_LOG', - 'mmSDMA1_ERROR_LOG_BASE_IDX', 'mmSDMA1_F32_CNTL', - 'mmSDMA1_F32_CNTL_BASE_IDX', 'mmSDMA1_F32_COUNTER', - 'mmSDMA1_F32_COUNTER_BASE_IDX', 'mmSDMA1_FREEZE', - 'mmSDMA1_FREEZE_BASE_IDX', 'mmSDMA1_GB_ADDR_CONFIG', - 'mmSDMA1_GB_ADDR_CONFIG_BASE_IDX', 'mmSDMA1_GB_ADDR_CONFIG_READ', - 'mmSDMA1_GB_ADDR_CONFIG_READ_BASE_IDX', - 'mmSDMA1_GFX_CONTEXT_CNTL', 'mmSDMA1_GFX_CONTEXT_CNTL_BASE_IDX', - 'mmSDMA1_GFX_CONTEXT_STATUS', - 'mmSDMA1_GFX_CONTEXT_STATUS_BASE_IDX', 'mmSDMA1_GFX_CSA_ADDR_HI', - 'mmSDMA1_GFX_CSA_ADDR_HI_BASE_IDX', 'mmSDMA1_GFX_CSA_ADDR_LO', - 'mmSDMA1_GFX_CSA_ADDR_LO_BASE_IDX', 'mmSDMA1_GFX_DOORBELL', - 'mmSDMA1_GFX_DOORBELL_BASE_IDX', 'mmSDMA1_GFX_DOORBELL_LOG', - 'mmSDMA1_GFX_DOORBELL_LOG_BASE_IDX', - 'mmSDMA1_GFX_DOORBELL_OFFSET', - 'mmSDMA1_GFX_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA1_GFX_DUMMY_REG', - 'mmSDMA1_GFX_DUMMY_REG_BASE_IDX', 'mmSDMA1_GFX_IB_BASE_HI', - 'mmSDMA1_GFX_IB_BASE_HI_BASE_IDX', 'mmSDMA1_GFX_IB_BASE_LO', - 'mmSDMA1_GFX_IB_BASE_LO_BASE_IDX', 'mmSDMA1_GFX_IB_CNTL', - 'mmSDMA1_GFX_IB_CNTL_BASE_IDX', 'mmSDMA1_GFX_IB_OFFSET', - 'mmSDMA1_GFX_IB_OFFSET_BASE_IDX', 'mmSDMA1_GFX_IB_RPTR', - 'mmSDMA1_GFX_IB_RPTR_BASE_IDX', 'mmSDMA1_GFX_IB_SIZE', - 'mmSDMA1_GFX_IB_SIZE_BASE_IDX', 'mmSDMA1_GFX_IB_SUB_REMAIN', - 'mmSDMA1_GFX_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA1_GFX_MIDCMD_CNTL', - 'mmSDMA1_GFX_MIDCMD_CNTL_BASE_IDX', 'mmSDMA1_GFX_MIDCMD_DATA0', - 'mmSDMA1_GFX_MIDCMD_DATA0_BASE_IDX', 'mmSDMA1_GFX_MIDCMD_DATA1', - 'mmSDMA1_GFX_MIDCMD_DATA10', 'mmSDMA1_GFX_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA1_GFX_MIDCMD_DATA1_BASE_IDX', 'mmSDMA1_GFX_MIDCMD_DATA2', - 'mmSDMA1_GFX_MIDCMD_DATA2_BASE_IDX', 'mmSDMA1_GFX_MIDCMD_DATA3', - 'mmSDMA1_GFX_MIDCMD_DATA3_BASE_IDX', 'mmSDMA1_GFX_MIDCMD_DATA4', - 'mmSDMA1_GFX_MIDCMD_DATA4_BASE_IDX', 'mmSDMA1_GFX_MIDCMD_DATA5', - 'mmSDMA1_GFX_MIDCMD_DATA5_BASE_IDX', 'mmSDMA1_GFX_MIDCMD_DATA6', - 'mmSDMA1_GFX_MIDCMD_DATA6_BASE_IDX', 'mmSDMA1_GFX_MIDCMD_DATA7', - 'mmSDMA1_GFX_MIDCMD_DATA7_BASE_IDX', 'mmSDMA1_GFX_MIDCMD_DATA8', - 'mmSDMA1_GFX_MIDCMD_DATA8_BASE_IDX', 'mmSDMA1_GFX_MIDCMD_DATA9', - 'mmSDMA1_GFX_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA1_GFX_MINOR_PTR_UPDATE', - 'mmSDMA1_GFX_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA1_GFX_PREEMPT', - 'mmSDMA1_GFX_PREEMPT_BASE_IDX', 'mmSDMA1_GFX_RB_AQL_CNTL', - 'mmSDMA1_GFX_RB_AQL_CNTL_BASE_IDX', 'mmSDMA1_GFX_RB_BASE', - 'mmSDMA1_GFX_RB_BASE_BASE_IDX', 'mmSDMA1_GFX_RB_BASE_HI', - 'mmSDMA1_GFX_RB_BASE_HI_BASE_IDX', 'mmSDMA1_GFX_RB_CNTL', - 'mmSDMA1_GFX_RB_CNTL_BASE_IDX', 'mmSDMA1_GFX_RB_RPTR', - 'mmSDMA1_GFX_RB_RPTR_ADDR_HI', - 'mmSDMA1_GFX_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA1_GFX_RB_RPTR_ADDR_LO', - 'mmSDMA1_GFX_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA1_GFX_RB_RPTR_BASE_IDX', 'mmSDMA1_GFX_RB_RPTR_HI', - 'mmSDMA1_GFX_RB_RPTR_HI_BASE_IDX', 'mmSDMA1_GFX_RB_WPTR', - 'mmSDMA1_GFX_RB_WPTR_BASE_IDX', 'mmSDMA1_GFX_RB_WPTR_HI', - 'mmSDMA1_GFX_RB_WPTR_HI_BASE_IDX', - 'mmSDMA1_GFX_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA1_GFX_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA1_GFX_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA1_GFX_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA1_GFX_RB_WPTR_POLL_CNTL', - 'mmSDMA1_GFX_RB_WPTR_POLL_CNTL_BASE_IDX', 'mmSDMA1_GFX_SKIP_CNTL', - 'mmSDMA1_GFX_SKIP_CNTL_BASE_IDX', 'mmSDMA1_GFX_STATUS', - 'mmSDMA1_GFX_STATUS_BASE_IDX', 'mmSDMA1_GFX_WATERMARK', - 'mmSDMA1_GFX_WATERMARK_BASE_IDX', 'mmSDMA1_GLOBAL_TIMESTAMP_HI', - 'mmSDMA1_GLOBAL_TIMESTAMP_HI_BASE_IDX', - 'mmSDMA1_GLOBAL_TIMESTAMP_LO', - 'mmSDMA1_GLOBAL_TIMESTAMP_LO_BASE_IDX', 'mmSDMA1_HBM_PAGE_CONFIG', - 'mmSDMA1_HBM_PAGE_CONFIG_BASE_IDX', 'mmSDMA1_HOLE_ADDR_HI', - 'mmSDMA1_HOLE_ADDR_HI_BASE_IDX', 'mmSDMA1_HOLE_ADDR_LO', - 'mmSDMA1_HOLE_ADDR_LO_BASE_IDX', 'mmSDMA1_IB_OFFSET_FETCH', - 'mmSDMA1_IB_OFFSET_FETCH_BASE_IDX', 'mmSDMA1_ID', - 'mmSDMA1_ID_BASE_IDX', 'mmSDMA1_INT_STATUS', - 'mmSDMA1_INT_STATUS_BASE_IDX', 'mmSDMA1_PAGE_CONTEXT_STATUS', - 'mmSDMA1_PAGE_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA1_PAGE_CSA_ADDR_HI', 'mmSDMA1_PAGE_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA1_PAGE_CSA_ADDR_LO', 'mmSDMA1_PAGE_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA1_PAGE_DOORBELL', 'mmSDMA1_PAGE_DOORBELL_BASE_IDX', - 'mmSDMA1_PAGE_DOORBELL_LOG', 'mmSDMA1_PAGE_DOORBELL_LOG_BASE_IDX', - 'mmSDMA1_PAGE_DOORBELL_OFFSET', - 'mmSDMA1_PAGE_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA1_PAGE_DUMMY_REG', - 'mmSDMA1_PAGE_DUMMY_REG_BASE_IDX', 'mmSDMA1_PAGE_IB_BASE_HI', - 'mmSDMA1_PAGE_IB_BASE_HI_BASE_IDX', 'mmSDMA1_PAGE_IB_BASE_LO', - 'mmSDMA1_PAGE_IB_BASE_LO_BASE_IDX', 'mmSDMA1_PAGE_IB_CNTL', - 'mmSDMA1_PAGE_IB_CNTL_BASE_IDX', 'mmSDMA1_PAGE_IB_OFFSET', - 'mmSDMA1_PAGE_IB_OFFSET_BASE_IDX', 'mmSDMA1_PAGE_IB_RPTR', - 'mmSDMA1_PAGE_IB_RPTR_BASE_IDX', 'mmSDMA1_PAGE_IB_SIZE', - 'mmSDMA1_PAGE_IB_SIZE_BASE_IDX', 'mmSDMA1_PAGE_IB_SUB_REMAIN', - 'mmSDMA1_PAGE_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA1_PAGE_MIDCMD_CNTL', - 'mmSDMA1_PAGE_MIDCMD_CNTL_BASE_IDX', 'mmSDMA1_PAGE_MIDCMD_DATA0', - 'mmSDMA1_PAGE_MIDCMD_DATA0_BASE_IDX', 'mmSDMA1_PAGE_MIDCMD_DATA1', - 'mmSDMA1_PAGE_MIDCMD_DATA10', - 'mmSDMA1_PAGE_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA1_PAGE_MIDCMD_DATA1_BASE_IDX', 'mmSDMA1_PAGE_MIDCMD_DATA2', - 'mmSDMA1_PAGE_MIDCMD_DATA2_BASE_IDX', 'mmSDMA1_PAGE_MIDCMD_DATA3', - 'mmSDMA1_PAGE_MIDCMD_DATA3_BASE_IDX', 'mmSDMA1_PAGE_MIDCMD_DATA4', - 'mmSDMA1_PAGE_MIDCMD_DATA4_BASE_IDX', 'mmSDMA1_PAGE_MIDCMD_DATA5', - 'mmSDMA1_PAGE_MIDCMD_DATA5_BASE_IDX', 'mmSDMA1_PAGE_MIDCMD_DATA6', - 'mmSDMA1_PAGE_MIDCMD_DATA6_BASE_IDX', 'mmSDMA1_PAGE_MIDCMD_DATA7', - 'mmSDMA1_PAGE_MIDCMD_DATA7_BASE_IDX', 'mmSDMA1_PAGE_MIDCMD_DATA8', - 'mmSDMA1_PAGE_MIDCMD_DATA8_BASE_IDX', 'mmSDMA1_PAGE_MIDCMD_DATA9', - 'mmSDMA1_PAGE_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA1_PAGE_MINOR_PTR_UPDATE', - 'mmSDMA1_PAGE_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA1_PAGE_PREEMPT', - 'mmSDMA1_PAGE_PREEMPT_BASE_IDX', 'mmSDMA1_PAGE_RB_AQL_CNTL', - 'mmSDMA1_PAGE_RB_AQL_CNTL_BASE_IDX', 'mmSDMA1_PAGE_RB_BASE', - 'mmSDMA1_PAGE_RB_BASE_BASE_IDX', 'mmSDMA1_PAGE_RB_BASE_HI', - 'mmSDMA1_PAGE_RB_BASE_HI_BASE_IDX', 'mmSDMA1_PAGE_RB_CNTL', - 'mmSDMA1_PAGE_RB_CNTL_BASE_IDX', 'mmSDMA1_PAGE_RB_RPTR', - 'mmSDMA1_PAGE_RB_RPTR_ADDR_HI', - 'mmSDMA1_PAGE_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA1_PAGE_RB_RPTR_ADDR_LO', - 'mmSDMA1_PAGE_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA1_PAGE_RB_RPTR_BASE_IDX', 'mmSDMA1_PAGE_RB_RPTR_HI', - 'mmSDMA1_PAGE_RB_RPTR_HI_BASE_IDX', 'mmSDMA1_PAGE_RB_WPTR', - 'mmSDMA1_PAGE_RB_WPTR_BASE_IDX', 'mmSDMA1_PAGE_RB_WPTR_HI', - 'mmSDMA1_PAGE_RB_WPTR_HI_BASE_IDX', - 'mmSDMA1_PAGE_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA1_PAGE_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA1_PAGE_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA1_PAGE_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA1_PAGE_RB_WPTR_POLL_CNTL', - 'mmSDMA1_PAGE_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA1_PAGE_SKIP_CNTL', 'mmSDMA1_PAGE_SKIP_CNTL_BASE_IDX', - 'mmSDMA1_PAGE_STATUS', 'mmSDMA1_PAGE_STATUS_BASE_IDX', - 'mmSDMA1_PAGE_WATERMARK', 'mmSDMA1_PAGE_WATERMARK_BASE_IDX', - 'mmSDMA1_PERFCNT_MISC_CNTL', 'mmSDMA1_PERFCNT_MISC_CNTL_BASE_IDX', - 'mmSDMA1_PERFCNT_PERFCOUNTER0_CFG', - 'mmSDMA1_PERFCNT_PERFCOUNTER0_CFG_BASE_IDX', - 'mmSDMA1_PERFCNT_PERFCOUNTER1_CFG', - 'mmSDMA1_PERFCNT_PERFCOUNTER1_CFG_BASE_IDX', - 'mmSDMA1_PERFCNT_PERFCOUNTER_HI', - 'mmSDMA1_PERFCNT_PERFCOUNTER_HI_BASE_IDX', - 'mmSDMA1_PERFCNT_PERFCOUNTER_LO', - 'mmSDMA1_PERFCNT_PERFCOUNTER_LO_BASE_IDX', - 'mmSDMA1_PERFCNT_PERFCOUNTER_RSLT_CNTL', - 'mmSDMA1_PERFCNT_PERFCOUNTER_RSLT_CNTL_BASE_IDX', - 'mmSDMA1_PERFCOUNTER0_HI', 'mmSDMA1_PERFCOUNTER0_HI_BASE_IDX', - 'mmSDMA1_PERFCOUNTER0_LO', 'mmSDMA1_PERFCOUNTER0_LO_BASE_IDX', - 'mmSDMA1_PERFCOUNTER0_SELECT', 'mmSDMA1_PERFCOUNTER0_SELECT1', - 'mmSDMA1_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmSDMA1_PERFCOUNTER0_SELECT_BASE_IDX', 'mmSDMA1_PERFCOUNTER1_HI', - 'mmSDMA1_PERFCOUNTER1_HI_BASE_IDX', 'mmSDMA1_PERFCOUNTER1_LO', - 'mmSDMA1_PERFCOUNTER1_LO_BASE_IDX', 'mmSDMA1_PERFCOUNTER1_SELECT', - 'mmSDMA1_PERFCOUNTER1_SELECT1', - 'mmSDMA1_PERFCOUNTER1_SELECT1_BASE_IDX', - 'mmSDMA1_PERFCOUNTER1_SELECT_BASE_IDX', 'mmSDMA1_PG_CNTL', - 'mmSDMA1_PG_CNTL_BASE_IDX', 'mmSDMA1_PG_CTX_CNTL', - 'mmSDMA1_PG_CTX_CNTL_BASE_IDX', 'mmSDMA1_PG_CTX_HI', - 'mmSDMA1_PG_CTX_HI_BASE_IDX', 'mmSDMA1_PG_CTX_LO', - 'mmSDMA1_PG_CTX_LO_BASE_IDX', 'mmSDMA1_PHASE0_QUANTUM', - 'mmSDMA1_PHASE0_QUANTUM_BASE_IDX', 'mmSDMA1_PHASE1_QUANTUM', - 'mmSDMA1_PHASE1_QUANTUM_BASE_IDX', 'mmSDMA1_PHASE2_QUANTUM', - 'mmSDMA1_PHASE2_QUANTUM_BASE_IDX', 'mmSDMA1_PHYSICAL_ADDR_HI', - 'mmSDMA1_PHYSICAL_ADDR_HI_BASE_IDX', 'mmSDMA1_PHYSICAL_ADDR_LO', - 'mmSDMA1_PHYSICAL_ADDR_LO_BASE_IDX', 'mmSDMA1_POWER_CNTL', - 'mmSDMA1_POWER_CNTL_BASE_IDX', 'mmSDMA1_PROGRAM', - 'mmSDMA1_PROGRAM_BASE_IDX', 'mmSDMA1_PUB_DUMMY_REG0', - 'mmSDMA1_PUB_DUMMY_REG0_BASE_IDX', 'mmSDMA1_PUB_DUMMY_REG1', - 'mmSDMA1_PUB_DUMMY_REG1_BASE_IDX', 'mmSDMA1_PUB_DUMMY_REG2', - 'mmSDMA1_PUB_DUMMY_REG2_BASE_IDX', 'mmSDMA1_PUB_DUMMY_REG3', - 'mmSDMA1_PUB_DUMMY_REG3_BASE_IDX', 'mmSDMA1_PUB_REG_TYPE0', - 'mmSDMA1_PUB_REG_TYPE0_BASE_IDX', 'mmSDMA1_PUB_REG_TYPE1', - 'mmSDMA1_PUB_REG_TYPE1_BASE_IDX', 'mmSDMA1_PUB_REG_TYPE2', - 'mmSDMA1_PUB_REG_TYPE2_BASE_IDX', 'mmSDMA1_PUB_REG_TYPE3', - 'mmSDMA1_PUB_REG_TYPE3_BASE_IDX', 'mmSDMA1_QUEUE_RESET_REQ', - 'mmSDMA1_QUEUE_RESET_REQ_BASE_IDX', 'mmSDMA1_RB_RPTR_FETCH', - 'mmSDMA1_RB_RPTR_FETCH_BASE_IDX', 'mmSDMA1_RB_RPTR_FETCH_HI', - 'mmSDMA1_RB_RPTR_FETCH_HI_BASE_IDX', 'mmSDMA1_RD_BURST_CNTL', - 'mmSDMA1_RD_BURST_CNTL_BASE_IDX', 'mmSDMA1_RELAX_ORDERING_LUT', - 'mmSDMA1_RELAX_ORDERING_LUT_BASE_IDX', - 'mmSDMA1_RLC0_CONTEXT_STATUS', - 'mmSDMA1_RLC0_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA1_RLC0_CSA_ADDR_HI', 'mmSDMA1_RLC0_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC0_CSA_ADDR_LO', 'mmSDMA1_RLC0_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC0_DOORBELL', 'mmSDMA1_RLC0_DOORBELL_BASE_IDX', - 'mmSDMA1_RLC0_DOORBELL_LOG', 'mmSDMA1_RLC0_DOORBELL_LOG_BASE_IDX', - 'mmSDMA1_RLC0_DOORBELL_OFFSET', - 'mmSDMA1_RLC0_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA1_RLC0_DUMMY_REG', - 'mmSDMA1_RLC0_DUMMY_REG_BASE_IDX', 'mmSDMA1_RLC0_IB_BASE_HI', - 'mmSDMA1_RLC0_IB_BASE_HI_BASE_IDX', 'mmSDMA1_RLC0_IB_BASE_LO', - 'mmSDMA1_RLC0_IB_BASE_LO_BASE_IDX', 'mmSDMA1_RLC0_IB_CNTL', - 'mmSDMA1_RLC0_IB_CNTL_BASE_IDX', 'mmSDMA1_RLC0_IB_OFFSET', - 'mmSDMA1_RLC0_IB_OFFSET_BASE_IDX', 'mmSDMA1_RLC0_IB_RPTR', - 'mmSDMA1_RLC0_IB_RPTR_BASE_IDX', 'mmSDMA1_RLC0_IB_SIZE', - 'mmSDMA1_RLC0_IB_SIZE_BASE_IDX', 'mmSDMA1_RLC0_IB_SUB_REMAIN', - 'mmSDMA1_RLC0_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA1_RLC0_MIDCMD_CNTL', - 'mmSDMA1_RLC0_MIDCMD_CNTL_BASE_IDX', 'mmSDMA1_RLC0_MIDCMD_DATA0', - 'mmSDMA1_RLC0_MIDCMD_DATA0_BASE_IDX', 'mmSDMA1_RLC0_MIDCMD_DATA1', - 'mmSDMA1_RLC0_MIDCMD_DATA10', - 'mmSDMA1_RLC0_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA1_RLC0_MIDCMD_DATA1_BASE_IDX', 'mmSDMA1_RLC0_MIDCMD_DATA2', - 'mmSDMA1_RLC0_MIDCMD_DATA2_BASE_IDX', 'mmSDMA1_RLC0_MIDCMD_DATA3', - 'mmSDMA1_RLC0_MIDCMD_DATA3_BASE_IDX', 'mmSDMA1_RLC0_MIDCMD_DATA4', - 'mmSDMA1_RLC0_MIDCMD_DATA4_BASE_IDX', 'mmSDMA1_RLC0_MIDCMD_DATA5', - 'mmSDMA1_RLC0_MIDCMD_DATA5_BASE_IDX', 'mmSDMA1_RLC0_MIDCMD_DATA6', - 'mmSDMA1_RLC0_MIDCMD_DATA6_BASE_IDX', 'mmSDMA1_RLC0_MIDCMD_DATA7', - 'mmSDMA1_RLC0_MIDCMD_DATA7_BASE_IDX', 'mmSDMA1_RLC0_MIDCMD_DATA8', - 'mmSDMA1_RLC0_MIDCMD_DATA8_BASE_IDX', 'mmSDMA1_RLC0_MIDCMD_DATA9', - 'mmSDMA1_RLC0_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA1_RLC0_MINOR_PTR_UPDATE', - 'mmSDMA1_RLC0_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA1_RLC0_PREEMPT', - 'mmSDMA1_RLC0_PREEMPT_BASE_IDX', 'mmSDMA1_RLC0_RB_AQL_CNTL', - 'mmSDMA1_RLC0_RB_AQL_CNTL_BASE_IDX', 'mmSDMA1_RLC0_RB_BASE', - 'mmSDMA1_RLC0_RB_BASE_BASE_IDX', 'mmSDMA1_RLC0_RB_BASE_HI', - 'mmSDMA1_RLC0_RB_BASE_HI_BASE_IDX', 'mmSDMA1_RLC0_RB_CNTL', - 'mmSDMA1_RLC0_RB_CNTL_BASE_IDX', 'mmSDMA1_RLC0_RB_RPTR', - 'mmSDMA1_RLC0_RB_RPTR_ADDR_HI', - 'mmSDMA1_RLC0_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC0_RB_RPTR_ADDR_LO', - 'mmSDMA1_RLC0_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC0_RB_RPTR_BASE_IDX', 'mmSDMA1_RLC0_RB_RPTR_HI', - 'mmSDMA1_RLC0_RB_RPTR_HI_BASE_IDX', 'mmSDMA1_RLC0_RB_WPTR', - 'mmSDMA1_RLC0_RB_WPTR_BASE_IDX', 'mmSDMA1_RLC0_RB_WPTR_HI', - 'mmSDMA1_RLC0_RB_WPTR_HI_BASE_IDX', - 'mmSDMA1_RLC0_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA1_RLC0_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC0_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA1_RLC0_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC0_RB_WPTR_POLL_CNTL', - 'mmSDMA1_RLC0_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA1_RLC0_SKIP_CNTL', 'mmSDMA1_RLC0_SKIP_CNTL_BASE_IDX', - 'mmSDMA1_RLC0_STATUS', 'mmSDMA1_RLC0_STATUS_BASE_IDX', - 'mmSDMA1_RLC0_WATERMARK', 'mmSDMA1_RLC0_WATERMARK_BASE_IDX', - 'mmSDMA1_RLC1_CONTEXT_STATUS', - 'mmSDMA1_RLC1_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA1_RLC1_CSA_ADDR_HI', 'mmSDMA1_RLC1_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC1_CSA_ADDR_LO', 'mmSDMA1_RLC1_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC1_DOORBELL', 'mmSDMA1_RLC1_DOORBELL_BASE_IDX', - 'mmSDMA1_RLC1_DOORBELL_LOG', 'mmSDMA1_RLC1_DOORBELL_LOG_BASE_IDX', - 'mmSDMA1_RLC1_DOORBELL_OFFSET', - 'mmSDMA1_RLC1_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA1_RLC1_DUMMY_REG', - 'mmSDMA1_RLC1_DUMMY_REG_BASE_IDX', 'mmSDMA1_RLC1_IB_BASE_HI', - 'mmSDMA1_RLC1_IB_BASE_HI_BASE_IDX', 'mmSDMA1_RLC1_IB_BASE_LO', - 'mmSDMA1_RLC1_IB_BASE_LO_BASE_IDX', 'mmSDMA1_RLC1_IB_CNTL', - 'mmSDMA1_RLC1_IB_CNTL_BASE_IDX', 'mmSDMA1_RLC1_IB_OFFSET', - 'mmSDMA1_RLC1_IB_OFFSET_BASE_IDX', 'mmSDMA1_RLC1_IB_RPTR', - 'mmSDMA1_RLC1_IB_RPTR_BASE_IDX', 'mmSDMA1_RLC1_IB_SIZE', - 'mmSDMA1_RLC1_IB_SIZE_BASE_IDX', 'mmSDMA1_RLC1_IB_SUB_REMAIN', - 'mmSDMA1_RLC1_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA1_RLC1_MIDCMD_CNTL', - 'mmSDMA1_RLC1_MIDCMD_CNTL_BASE_IDX', 'mmSDMA1_RLC1_MIDCMD_DATA0', - 'mmSDMA1_RLC1_MIDCMD_DATA0_BASE_IDX', 'mmSDMA1_RLC1_MIDCMD_DATA1', - 'mmSDMA1_RLC1_MIDCMD_DATA10', - 'mmSDMA1_RLC1_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA1_RLC1_MIDCMD_DATA1_BASE_IDX', 'mmSDMA1_RLC1_MIDCMD_DATA2', - 'mmSDMA1_RLC1_MIDCMD_DATA2_BASE_IDX', 'mmSDMA1_RLC1_MIDCMD_DATA3', - 'mmSDMA1_RLC1_MIDCMD_DATA3_BASE_IDX', 'mmSDMA1_RLC1_MIDCMD_DATA4', - 'mmSDMA1_RLC1_MIDCMD_DATA4_BASE_IDX', 'mmSDMA1_RLC1_MIDCMD_DATA5', - 'mmSDMA1_RLC1_MIDCMD_DATA5_BASE_IDX', 'mmSDMA1_RLC1_MIDCMD_DATA6', - 'mmSDMA1_RLC1_MIDCMD_DATA6_BASE_IDX', 'mmSDMA1_RLC1_MIDCMD_DATA7', - 'mmSDMA1_RLC1_MIDCMD_DATA7_BASE_IDX', 'mmSDMA1_RLC1_MIDCMD_DATA8', - 'mmSDMA1_RLC1_MIDCMD_DATA8_BASE_IDX', 'mmSDMA1_RLC1_MIDCMD_DATA9', - 'mmSDMA1_RLC1_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA1_RLC1_MINOR_PTR_UPDATE', - 'mmSDMA1_RLC1_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA1_RLC1_PREEMPT', - 'mmSDMA1_RLC1_PREEMPT_BASE_IDX', 'mmSDMA1_RLC1_RB_AQL_CNTL', - 'mmSDMA1_RLC1_RB_AQL_CNTL_BASE_IDX', 'mmSDMA1_RLC1_RB_BASE', - 'mmSDMA1_RLC1_RB_BASE_BASE_IDX', 'mmSDMA1_RLC1_RB_BASE_HI', - 'mmSDMA1_RLC1_RB_BASE_HI_BASE_IDX', 'mmSDMA1_RLC1_RB_CNTL', - 'mmSDMA1_RLC1_RB_CNTL_BASE_IDX', 'mmSDMA1_RLC1_RB_RPTR', - 'mmSDMA1_RLC1_RB_RPTR_ADDR_HI', - 'mmSDMA1_RLC1_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC1_RB_RPTR_ADDR_LO', - 'mmSDMA1_RLC1_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC1_RB_RPTR_BASE_IDX', 'mmSDMA1_RLC1_RB_RPTR_HI', - 'mmSDMA1_RLC1_RB_RPTR_HI_BASE_IDX', 'mmSDMA1_RLC1_RB_WPTR', - 'mmSDMA1_RLC1_RB_WPTR_BASE_IDX', 'mmSDMA1_RLC1_RB_WPTR_HI', - 'mmSDMA1_RLC1_RB_WPTR_HI_BASE_IDX', - 'mmSDMA1_RLC1_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA1_RLC1_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC1_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA1_RLC1_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC1_RB_WPTR_POLL_CNTL', - 'mmSDMA1_RLC1_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA1_RLC1_SKIP_CNTL', 'mmSDMA1_RLC1_SKIP_CNTL_BASE_IDX', - 'mmSDMA1_RLC1_STATUS', 'mmSDMA1_RLC1_STATUS_BASE_IDX', - 'mmSDMA1_RLC1_WATERMARK', 'mmSDMA1_RLC1_WATERMARK_BASE_IDX', - 'mmSDMA1_RLC2_CONTEXT_STATUS', - 'mmSDMA1_RLC2_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA1_RLC2_CSA_ADDR_HI', 'mmSDMA1_RLC2_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC2_CSA_ADDR_LO', 'mmSDMA1_RLC2_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC2_DOORBELL', 'mmSDMA1_RLC2_DOORBELL_BASE_IDX', - 'mmSDMA1_RLC2_DOORBELL_LOG', 'mmSDMA1_RLC2_DOORBELL_LOG_BASE_IDX', - 'mmSDMA1_RLC2_DOORBELL_OFFSET', - 'mmSDMA1_RLC2_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA1_RLC2_DUMMY_REG', - 'mmSDMA1_RLC2_DUMMY_REG_BASE_IDX', 'mmSDMA1_RLC2_IB_BASE_HI', - 'mmSDMA1_RLC2_IB_BASE_HI_BASE_IDX', 'mmSDMA1_RLC2_IB_BASE_LO', - 'mmSDMA1_RLC2_IB_BASE_LO_BASE_IDX', 'mmSDMA1_RLC2_IB_CNTL', - 'mmSDMA1_RLC2_IB_CNTL_BASE_IDX', 'mmSDMA1_RLC2_IB_OFFSET', - 'mmSDMA1_RLC2_IB_OFFSET_BASE_IDX', 'mmSDMA1_RLC2_IB_RPTR', - 'mmSDMA1_RLC2_IB_RPTR_BASE_IDX', 'mmSDMA1_RLC2_IB_SIZE', - 'mmSDMA1_RLC2_IB_SIZE_BASE_IDX', 'mmSDMA1_RLC2_IB_SUB_REMAIN', - 'mmSDMA1_RLC2_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA1_RLC2_MIDCMD_CNTL', - 'mmSDMA1_RLC2_MIDCMD_CNTL_BASE_IDX', 'mmSDMA1_RLC2_MIDCMD_DATA0', - 'mmSDMA1_RLC2_MIDCMD_DATA0_BASE_IDX', 'mmSDMA1_RLC2_MIDCMD_DATA1', - 'mmSDMA1_RLC2_MIDCMD_DATA10', - 'mmSDMA1_RLC2_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA1_RLC2_MIDCMD_DATA1_BASE_IDX', 'mmSDMA1_RLC2_MIDCMD_DATA2', - 'mmSDMA1_RLC2_MIDCMD_DATA2_BASE_IDX', 'mmSDMA1_RLC2_MIDCMD_DATA3', - 'mmSDMA1_RLC2_MIDCMD_DATA3_BASE_IDX', 'mmSDMA1_RLC2_MIDCMD_DATA4', - 'mmSDMA1_RLC2_MIDCMD_DATA4_BASE_IDX', 'mmSDMA1_RLC2_MIDCMD_DATA5', - 'mmSDMA1_RLC2_MIDCMD_DATA5_BASE_IDX', 'mmSDMA1_RLC2_MIDCMD_DATA6', - 'mmSDMA1_RLC2_MIDCMD_DATA6_BASE_IDX', 'mmSDMA1_RLC2_MIDCMD_DATA7', - 'mmSDMA1_RLC2_MIDCMD_DATA7_BASE_IDX', 'mmSDMA1_RLC2_MIDCMD_DATA8', - 'mmSDMA1_RLC2_MIDCMD_DATA8_BASE_IDX', 'mmSDMA1_RLC2_MIDCMD_DATA9', - 'mmSDMA1_RLC2_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA1_RLC2_MINOR_PTR_UPDATE', - 'mmSDMA1_RLC2_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA1_RLC2_PREEMPT', - 'mmSDMA1_RLC2_PREEMPT_BASE_IDX', 'mmSDMA1_RLC2_RB_AQL_CNTL', - 'mmSDMA1_RLC2_RB_AQL_CNTL_BASE_IDX', 'mmSDMA1_RLC2_RB_BASE', - 'mmSDMA1_RLC2_RB_BASE_BASE_IDX', 'mmSDMA1_RLC2_RB_BASE_HI', - 'mmSDMA1_RLC2_RB_BASE_HI_BASE_IDX', 'mmSDMA1_RLC2_RB_CNTL', - 'mmSDMA1_RLC2_RB_CNTL_BASE_IDX', 'mmSDMA1_RLC2_RB_RPTR', - 'mmSDMA1_RLC2_RB_RPTR_ADDR_HI', - 'mmSDMA1_RLC2_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC2_RB_RPTR_ADDR_LO', - 'mmSDMA1_RLC2_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC2_RB_RPTR_BASE_IDX', 'mmSDMA1_RLC2_RB_RPTR_HI', - 'mmSDMA1_RLC2_RB_RPTR_HI_BASE_IDX', 'mmSDMA1_RLC2_RB_WPTR', - 'mmSDMA1_RLC2_RB_WPTR_BASE_IDX', 'mmSDMA1_RLC2_RB_WPTR_HI', - 'mmSDMA1_RLC2_RB_WPTR_HI_BASE_IDX', - 'mmSDMA1_RLC2_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA1_RLC2_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC2_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA1_RLC2_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC2_RB_WPTR_POLL_CNTL', - 'mmSDMA1_RLC2_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA1_RLC2_SKIP_CNTL', 'mmSDMA1_RLC2_SKIP_CNTL_BASE_IDX', - 'mmSDMA1_RLC2_STATUS', 'mmSDMA1_RLC2_STATUS_BASE_IDX', - 'mmSDMA1_RLC2_WATERMARK', 'mmSDMA1_RLC2_WATERMARK_BASE_IDX', - 'mmSDMA1_RLC3_CONTEXT_STATUS', - 'mmSDMA1_RLC3_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA1_RLC3_CSA_ADDR_HI', 'mmSDMA1_RLC3_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC3_CSA_ADDR_LO', 'mmSDMA1_RLC3_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC3_DOORBELL', 'mmSDMA1_RLC3_DOORBELL_BASE_IDX', - 'mmSDMA1_RLC3_DOORBELL_LOG', 'mmSDMA1_RLC3_DOORBELL_LOG_BASE_IDX', - 'mmSDMA1_RLC3_DOORBELL_OFFSET', - 'mmSDMA1_RLC3_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA1_RLC3_DUMMY_REG', - 'mmSDMA1_RLC3_DUMMY_REG_BASE_IDX', 'mmSDMA1_RLC3_IB_BASE_HI', - 'mmSDMA1_RLC3_IB_BASE_HI_BASE_IDX', 'mmSDMA1_RLC3_IB_BASE_LO', - 'mmSDMA1_RLC3_IB_BASE_LO_BASE_IDX', 'mmSDMA1_RLC3_IB_CNTL', - 'mmSDMA1_RLC3_IB_CNTL_BASE_IDX', 'mmSDMA1_RLC3_IB_OFFSET', - 'mmSDMA1_RLC3_IB_OFFSET_BASE_IDX', 'mmSDMA1_RLC3_IB_RPTR', - 'mmSDMA1_RLC3_IB_RPTR_BASE_IDX', 'mmSDMA1_RLC3_IB_SIZE', - 'mmSDMA1_RLC3_IB_SIZE_BASE_IDX', 'mmSDMA1_RLC3_IB_SUB_REMAIN', - 'mmSDMA1_RLC3_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA1_RLC3_MIDCMD_CNTL', - 'mmSDMA1_RLC3_MIDCMD_CNTL_BASE_IDX', 'mmSDMA1_RLC3_MIDCMD_DATA0', - 'mmSDMA1_RLC3_MIDCMD_DATA0_BASE_IDX', 'mmSDMA1_RLC3_MIDCMD_DATA1', - 'mmSDMA1_RLC3_MIDCMD_DATA10', - 'mmSDMA1_RLC3_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA1_RLC3_MIDCMD_DATA1_BASE_IDX', 'mmSDMA1_RLC3_MIDCMD_DATA2', - 'mmSDMA1_RLC3_MIDCMD_DATA2_BASE_IDX', 'mmSDMA1_RLC3_MIDCMD_DATA3', - 'mmSDMA1_RLC3_MIDCMD_DATA3_BASE_IDX', 'mmSDMA1_RLC3_MIDCMD_DATA4', - 'mmSDMA1_RLC3_MIDCMD_DATA4_BASE_IDX', 'mmSDMA1_RLC3_MIDCMD_DATA5', - 'mmSDMA1_RLC3_MIDCMD_DATA5_BASE_IDX', 'mmSDMA1_RLC3_MIDCMD_DATA6', - 'mmSDMA1_RLC3_MIDCMD_DATA6_BASE_IDX', 'mmSDMA1_RLC3_MIDCMD_DATA7', - 'mmSDMA1_RLC3_MIDCMD_DATA7_BASE_IDX', 'mmSDMA1_RLC3_MIDCMD_DATA8', - 'mmSDMA1_RLC3_MIDCMD_DATA8_BASE_IDX', 'mmSDMA1_RLC3_MIDCMD_DATA9', - 'mmSDMA1_RLC3_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA1_RLC3_MINOR_PTR_UPDATE', - 'mmSDMA1_RLC3_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA1_RLC3_PREEMPT', - 'mmSDMA1_RLC3_PREEMPT_BASE_IDX', 'mmSDMA1_RLC3_RB_AQL_CNTL', - 'mmSDMA1_RLC3_RB_AQL_CNTL_BASE_IDX', 'mmSDMA1_RLC3_RB_BASE', - 'mmSDMA1_RLC3_RB_BASE_BASE_IDX', 'mmSDMA1_RLC3_RB_BASE_HI', - 'mmSDMA1_RLC3_RB_BASE_HI_BASE_IDX', 'mmSDMA1_RLC3_RB_CNTL', - 'mmSDMA1_RLC3_RB_CNTL_BASE_IDX', 'mmSDMA1_RLC3_RB_RPTR', - 'mmSDMA1_RLC3_RB_RPTR_ADDR_HI', - 'mmSDMA1_RLC3_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC3_RB_RPTR_ADDR_LO', - 'mmSDMA1_RLC3_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC3_RB_RPTR_BASE_IDX', 'mmSDMA1_RLC3_RB_RPTR_HI', - 'mmSDMA1_RLC3_RB_RPTR_HI_BASE_IDX', 'mmSDMA1_RLC3_RB_WPTR', - 'mmSDMA1_RLC3_RB_WPTR_BASE_IDX', 'mmSDMA1_RLC3_RB_WPTR_HI', - 'mmSDMA1_RLC3_RB_WPTR_HI_BASE_IDX', - 'mmSDMA1_RLC3_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA1_RLC3_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC3_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA1_RLC3_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC3_RB_WPTR_POLL_CNTL', - 'mmSDMA1_RLC3_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA1_RLC3_SKIP_CNTL', 'mmSDMA1_RLC3_SKIP_CNTL_BASE_IDX', - 'mmSDMA1_RLC3_STATUS', 'mmSDMA1_RLC3_STATUS_BASE_IDX', - 'mmSDMA1_RLC3_WATERMARK', 'mmSDMA1_RLC3_WATERMARK_BASE_IDX', - 'mmSDMA1_RLC4_CONTEXT_STATUS', - 'mmSDMA1_RLC4_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA1_RLC4_CSA_ADDR_HI', 'mmSDMA1_RLC4_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC4_CSA_ADDR_LO', 'mmSDMA1_RLC4_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC4_DOORBELL', 'mmSDMA1_RLC4_DOORBELL_BASE_IDX', - 'mmSDMA1_RLC4_DOORBELL_LOG', 'mmSDMA1_RLC4_DOORBELL_LOG_BASE_IDX', - 'mmSDMA1_RLC4_DOORBELL_OFFSET', - 'mmSDMA1_RLC4_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA1_RLC4_DUMMY_REG', - 'mmSDMA1_RLC4_DUMMY_REG_BASE_IDX', 'mmSDMA1_RLC4_IB_BASE_HI', - 'mmSDMA1_RLC4_IB_BASE_HI_BASE_IDX', 'mmSDMA1_RLC4_IB_BASE_LO', - 'mmSDMA1_RLC4_IB_BASE_LO_BASE_IDX', 'mmSDMA1_RLC4_IB_CNTL', - 'mmSDMA1_RLC4_IB_CNTL_BASE_IDX', 'mmSDMA1_RLC4_IB_OFFSET', - 'mmSDMA1_RLC4_IB_OFFSET_BASE_IDX', 'mmSDMA1_RLC4_IB_RPTR', - 'mmSDMA1_RLC4_IB_RPTR_BASE_IDX', 'mmSDMA1_RLC4_IB_SIZE', - 'mmSDMA1_RLC4_IB_SIZE_BASE_IDX', 'mmSDMA1_RLC4_IB_SUB_REMAIN', - 'mmSDMA1_RLC4_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA1_RLC4_MIDCMD_CNTL', - 'mmSDMA1_RLC4_MIDCMD_CNTL_BASE_IDX', 'mmSDMA1_RLC4_MIDCMD_DATA0', - 'mmSDMA1_RLC4_MIDCMD_DATA0_BASE_IDX', 'mmSDMA1_RLC4_MIDCMD_DATA1', - 'mmSDMA1_RLC4_MIDCMD_DATA10', - 'mmSDMA1_RLC4_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA1_RLC4_MIDCMD_DATA1_BASE_IDX', 'mmSDMA1_RLC4_MIDCMD_DATA2', - 'mmSDMA1_RLC4_MIDCMD_DATA2_BASE_IDX', 'mmSDMA1_RLC4_MIDCMD_DATA3', - 'mmSDMA1_RLC4_MIDCMD_DATA3_BASE_IDX', 'mmSDMA1_RLC4_MIDCMD_DATA4', - 'mmSDMA1_RLC4_MIDCMD_DATA4_BASE_IDX', 'mmSDMA1_RLC4_MIDCMD_DATA5', - 'mmSDMA1_RLC4_MIDCMD_DATA5_BASE_IDX', 'mmSDMA1_RLC4_MIDCMD_DATA6', - 'mmSDMA1_RLC4_MIDCMD_DATA6_BASE_IDX', 'mmSDMA1_RLC4_MIDCMD_DATA7', - 'mmSDMA1_RLC4_MIDCMD_DATA7_BASE_IDX', 'mmSDMA1_RLC4_MIDCMD_DATA8', - 'mmSDMA1_RLC4_MIDCMD_DATA8_BASE_IDX', 'mmSDMA1_RLC4_MIDCMD_DATA9', - 'mmSDMA1_RLC4_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA1_RLC4_MINOR_PTR_UPDATE', - 'mmSDMA1_RLC4_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA1_RLC4_PREEMPT', - 'mmSDMA1_RLC4_PREEMPT_BASE_IDX', 'mmSDMA1_RLC4_RB_AQL_CNTL', - 'mmSDMA1_RLC4_RB_AQL_CNTL_BASE_IDX', 'mmSDMA1_RLC4_RB_BASE', - 'mmSDMA1_RLC4_RB_BASE_BASE_IDX', 'mmSDMA1_RLC4_RB_BASE_HI', - 'mmSDMA1_RLC4_RB_BASE_HI_BASE_IDX', 'mmSDMA1_RLC4_RB_CNTL', - 'mmSDMA1_RLC4_RB_CNTL_BASE_IDX', 'mmSDMA1_RLC4_RB_RPTR', - 'mmSDMA1_RLC4_RB_RPTR_ADDR_HI', - 'mmSDMA1_RLC4_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC4_RB_RPTR_ADDR_LO', - 'mmSDMA1_RLC4_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC4_RB_RPTR_BASE_IDX', 'mmSDMA1_RLC4_RB_RPTR_HI', - 'mmSDMA1_RLC4_RB_RPTR_HI_BASE_IDX', 'mmSDMA1_RLC4_RB_WPTR', - 'mmSDMA1_RLC4_RB_WPTR_BASE_IDX', 'mmSDMA1_RLC4_RB_WPTR_HI', - 'mmSDMA1_RLC4_RB_WPTR_HI_BASE_IDX', - 'mmSDMA1_RLC4_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA1_RLC4_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC4_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA1_RLC4_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC4_RB_WPTR_POLL_CNTL', - 'mmSDMA1_RLC4_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA1_RLC4_SKIP_CNTL', 'mmSDMA1_RLC4_SKIP_CNTL_BASE_IDX', - 'mmSDMA1_RLC4_STATUS', 'mmSDMA1_RLC4_STATUS_BASE_IDX', - 'mmSDMA1_RLC4_WATERMARK', 'mmSDMA1_RLC4_WATERMARK_BASE_IDX', - 'mmSDMA1_RLC5_CONTEXT_STATUS', - 'mmSDMA1_RLC5_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA1_RLC5_CSA_ADDR_HI', 'mmSDMA1_RLC5_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC5_CSA_ADDR_LO', 'mmSDMA1_RLC5_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC5_DOORBELL', 'mmSDMA1_RLC5_DOORBELL_BASE_IDX', - 'mmSDMA1_RLC5_DOORBELL_LOG', 'mmSDMA1_RLC5_DOORBELL_LOG_BASE_IDX', - 'mmSDMA1_RLC5_DOORBELL_OFFSET', - 'mmSDMA1_RLC5_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA1_RLC5_DUMMY_REG', - 'mmSDMA1_RLC5_DUMMY_REG_BASE_IDX', 'mmSDMA1_RLC5_IB_BASE_HI', - 'mmSDMA1_RLC5_IB_BASE_HI_BASE_IDX', 'mmSDMA1_RLC5_IB_BASE_LO', - 'mmSDMA1_RLC5_IB_BASE_LO_BASE_IDX', 'mmSDMA1_RLC5_IB_CNTL', - 'mmSDMA1_RLC5_IB_CNTL_BASE_IDX', 'mmSDMA1_RLC5_IB_OFFSET', - 'mmSDMA1_RLC5_IB_OFFSET_BASE_IDX', 'mmSDMA1_RLC5_IB_RPTR', - 'mmSDMA1_RLC5_IB_RPTR_BASE_IDX', 'mmSDMA1_RLC5_IB_SIZE', - 'mmSDMA1_RLC5_IB_SIZE_BASE_IDX', 'mmSDMA1_RLC5_IB_SUB_REMAIN', - 'mmSDMA1_RLC5_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA1_RLC5_MIDCMD_CNTL', - 'mmSDMA1_RLC5_MIDCMD_CNTL_BASE_IDX', 'mmSDMA1_RLC5_MIDCMD_DATA0', - 'mmSDMA1_RLC5_MIDCMD_DATA0_BASE_IDX', 'mmSDMA1_RLC5_MIDCMD_DATA1', - 'mmSDMA1_RLC5_MIDCMD_DATA10', - 'mmSDMA1_RLC5_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA1_RLC5_MIDCMD_DATA1_BASE_IDX', 'mmSDMA1_RLC5_MIDCMD_DATA2', - 'mmSDMA1_RLC5_MIDCMD_DATA2_BASE_IDX', 'mmSDMA1_RLC5_MIDCMD_DATA3', - 'mmSDMA1_RLC5_MIDCMD_DATA3_BASE_IDX', 'mmSDMA1_RLC5_MIDCMD_DATA4', - 'mmSDMA1_RLC5_MIDCMD_DATA4_BASE_IDX', 'mmSDMA1_RLC5_MIDCMD_DATA5', - 'mmSDMA1_RLC5_MIDCMD_DATA5_BASE_IDX', 'mmSDMA1_RLC5_MIDCMD_DATA6', - 'mmSDMA1_RLC5_MIDCMD_DATA6_BASE_IDX', 'mmSDMA1_RLC5_MIDCMD_DATA7', - 'mmSDMA1_RLC5_MIDCMD_DATA7_BASE_IDX', 'mmSDMA1_RLC5_MIDCMD_DATA8', - 'mmSDMA1_RLC5_MIDCMD_DATA8_BASE_IDX', 'mmSDMA1_RLC5_MIDCMD_DATA9', - 'mmSDMA1_RLC5_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA1_RLC5_MINOR_PTR_UPDATE', - 'mmSDMA1_RLC5_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA1_RLC5_PREEMPT', - 'mmSDMA1_RLC5_PREEMPT_BASE_IDX', 'mmSDMA1_RLC5_RB_AQL_CNTL', - 'mmSDMA1_RLC5_RB_AQL_CNTL_BASE_IDX', 'mmSDMA1_RLC5_RB_BASE', - 'mmSDMA1_RLC5_RB_BASE_BASE_IDX', 'mmSDMA1_RLC5_RB_BASE_HI', - 'mmSDMA1_RLC5_RB_BASE_HI_BASE_IDX', 'mmSDMA1_RLC5_RB_CNTL', - 'mmSDMA1_RLC5_RB_CNTL_BASE_IDX', 'mmSDMA1_RLC5_RB_RPTR', - 'mmSDMA1_RLC5_RB_RPTR_ADDR_HI', - 'mmSDMA1_RLC5_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC5_RB_RPTR_ADDR_LO', - 'mmSDMA1_RLC5_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC5_RB_RPTR_BASE_IDX', 'mmSDMA1_RLC5_RB_RPTR_HI', - 'mmSDMA1_RLC5_RB_RPTR_HI_BASE_IDX', 'mmSDMA1_RLC5_RB_WPTR', - 'mmSDMA1_RLC5_RB_WPTR_BASE_IDX', 'mmSDMA1_RLC5_RB_WPTR_HI', - 'mmSDMA1_RLC5_RB_WPTR_HI_BASE_IDX', - 'mmSDMA1_RLC5_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA1_RLC5_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC5_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA1_RLC5_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC5_RB_WPTR_POLL_CNTL', - 'mmSDMA1_RLC5_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA1_RLC5_SKIP_CNTL', 'mmSDMA1_RLC5_SKIP_CNTL_BASE_IDX', - 'mmSDMA1_RLC5_STATUS', 'mmSDMA1_RLC5_STATUS_BASE_IDX', - 'mmSDMA1_RLC5_WATERMARK', 'mmSDMA1_RLC5_WATERMARK_BASE_IDX', - 'mmSDMA1_RLC6_CONTEXT_STATUS', - 'mmSDMA1_RLC6_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA1_RLC6_CSA_ADDR_HI', 'mmSDMA1_RLC6_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC6_CSA_ADDR_LO', 'mmSDMA1_RLC6_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC6_DOORBELL', 'mmSDMA1_RLC6_DOORBELL_BASE_IDX', - 'mmSDMA1_RLC6_DOORBELL_LOG', 'mmSDMA1_RLC6_DOORBELL_LOG_BASE_IDX', - 'mmSDMA1_RLC6_DOORBELL_OFFSET', - 'mmSDMA1_RLC6_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA1_RLC6_DUMMY_REG', - 'mmSDMA1_RLC6_DUMMY_REG_BASE_IDX', 'mmSDMA1_RLC6_IB_BASE_HI', - 'mmSDMA1_RLC6_IB_BASE_HI_BASE_IDX', 'mmSDMA1_RLC6_IB_BASE_LO', - 'mmSDMA1_RLC6_IB_BASE_LO_BASE_IDX', 'mmSDMA1_RLC6_IB_CNTL', - 'mmSDMA1_RLC6_IB_CNTL_BASE_IDX', 'mmSDMA1_RLC6_IB_OFFSET', - 'mmSDMA1_RLC6_IB_OFFSET_BASE_IDX', 'mmSDMA1_RLC6_IB_RPTR', - 'mmSDMA1_RLC6_IB_RPTR_BASE_IDX', 'mmSDMA1_RLC6_IB_SIZE', - 'mmSDMA1_RLC6_IB_SIZE_BASE_IDX', 'mmSDMA1_RLC6_IB_SUB_REMAIN', - 'mmSDMA1_RLC6_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA1_RLC6_MIDCMD_CNTL', - 'mmSDMA1_RLC6_MIDCMD_CNTL_BASE_IDX', 'mmSDMA1_RLC6_MIDCMD_DATA0', - 'mmSDMA1_RLC6_MIDCMD_DATA0_BASE_IDX', 'mmSDMA1_RLC6_MIDCMD_DATA1', - 'mmSDMA1_RLC6_MIDCMD_DATA10', - 'mmSDMA1_RLC6_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA1_RLC6_MIDCMD_DATA1_BASE_IDX', 'mmSDMA1_RLC6_MIDCMD_DATA2', - 'mmSDMA1_RLC6_MIDCMD_DATA2_BASE_IDX', 'mmSDMA1_RLC6_MIDCMD_DATA3', - 'mmSDMA1_RLC6_MIDCMD_DATA3_BASE_IDX', 'mmSDMA1_RLC6_MIDCMD_DATA4', - 'mmSDMA1_RLC6_MIDCMD_DATA4_BASE_IDX', 'mmSDMA1_RLC6_MIDCMD_DATA5', - 'mmSDMA1_RLC6_MIDCMD_DATA5_BASE_IDX', 'mmSDMA1_RLC6_MIDCMD_DATA6', - 'mmSDMA1_RLC6_MIDCMD_DATA6_BASE_IDX', 'mmSDMA1_RLC6_MIDCMD_DATA7', - 'mmSDMA1_RLC6_MIDCMD_DATA7_BASE_IDX', 'mmSDMA1_RLC6_MIDCMD_DATA8', - 'mmSDMA1_RLC6_MIDCMD_DATA8_BASE_IDX', 'mmSDMA1_RLC6_MIDCMD_DATA9', - 'mmSDMA1_RLC6_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA1_RLC6_MINOR_PTR_UPDATE', - 'mmSDMA1_RLC6_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA1_RLC6_PREEMPT', - 'mmSDMA1_RLC6_PREEMPT_BASE_IDX', 'mmSDMA1_RLC6_RB_AQL_CNTL', - 'mmSDMA1_RLC6_RB_AQL_CNTL_BASE_IDX', 'mmSDMA1_RLC6_RB_BASE', - 'mmSDMA1_RLC6_RB_BASE_BASE_IDX', 'mmSDMA1_RLC6_RB_BASE_HI', - 'mmSDMA1_RLC6_RB_BASE_HI_BASE_IDX', 'mmSDMA1_RLC6_RB_CNTL', - 'mmSDMA1_RLC6_RB_CNTL_BASE_IDX', 'mmSDMA1_RLC6_RB_RPTR', - 'mmSDMA1_RLC6_RB_RPTR_ADDR_HI', - 'mmSDMA1_RLC6_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC6_RB_RPTR_ADDR_LO', - 'mmSDMA1_RLC6_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC6_RB_RPTR_BASE_IDX', 'mmSDMA1_RLC6_RB_RPTR_HI', - 'mmSDMA1_RLC6_RB_RPTR_HI_BASE_IDX', 'mmSDMA1_RLC6_RB_WPTR', - 'mmSDMA1_RLC6_RB_WPTR_BASE_IDX', 'mmSDMA1_RLC6_RB_WPTR_HI', - 'mmSDMA1_RLC6_RB_WPTR_HI_BASE_IDX', - 'mmSDMA1_RLC6_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA1_RLC6_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC6_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA1_RLC6_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC6_RB_WPTR_POLL_CNTL', - 'mmSDMA1_RLC6_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA1_RLC6_SKIP_CNTL', 'mmSDMA1_RLC6_SKIP_CNTL_BASE_IDX', - 'mmSDMA1_RLC6_STATUS', 'mmSDMA1_RLC6_STATUS_BASE_IDX', - 'mmSDMA1_RLC6_WATERMARK', 'mmSDMA1_RLC6_WATERMARK_BASE_IDX', - 'mmSDMA1_RLC7_CONTEXT_STATUS', - 'mmSDMA1_RLC7_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA1_RLC7_CSA_ADDR_HI', 'mmSDMA1_RLC7_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC7_CSA_ADDR_LO', 'mmSDMA1_RLC7_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC7_DOORBELL', 'mmSDMA1_RLC7_DOORBELL_BASE_IDX', - 'mmSDMA1_RLC7_DOORBELL_LOG', 'mmSDMA1_RLC7_DOORBELL_LOG_BASE_IDX', - 'mmSDMA1_RLC7_DOORBELL_OFFSET', - 'mmSDMA1_RLC7_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA1_RLC7_DUMMY_REG', - 'mmSDMA1_RLC7_DUMMY_REG_BASE_IDX', 'mmSDMA1_RLC7_IB_BASE_HI', - 'mmSDMA1_RLC7_IB_BASE_HI_BASE_IDX', 'mmSDMA1_RLC7_IB_BASE_LO', - 'mmSDMA1_RLC7_IB_BASE_LO_BASE_IDX', 'mmSDMA1_RLC7_IB_CNTL', - 'mmSDMA1_RLC7_IB_CNTL_BASE_IDX', 'mmSDMA1_RLC7_IB_OFFSET', - 'mmSDMA1_RLC7_IB_OFFSET_BASE_IDX', 'mmSDMA1_RLC7_IB_RPTR', - 'mmSDMA1_RLC7_IB_RPTR_BASE_IDX', 'mmSDMA1_RLC7_IB_SIZE', - 'mmSDMA1_RLC7_IB_SIZE_BASE_IDX', 'mmSDMA1_RLC7_IB_SUB_REMAIN', - 'mmSDMA1_RLC7_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA1_RLC7_MIDCMD_CNTL', - 'mmSDMA1_RLC7_MIDCMD_CNTL_BASE_IDX', 'mmSDMA1_RLC7_MIDCMD_DATA0', - 'mmSDMA1_RLC7_MIDCMD_DATA0_BASE_IDX', 'mmSDMA1_RLC7_MIDCMD_DATA1', - 'mmSDMA1_RLC7_MIDCMD_DATA10', - 'mmSDMA1_RLC7_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA1_RLC7_MIDCMD_DATA1_BASE_IDX', 'mmSDMA1_RLC7_MIDCMD_DATA2', - 'mmSDMA1_RLC7_MIDCMD_DATA2_BASE_IDX', 'mmSDMA1_RLC7_MIDCMD_DATA3', - 'mmSDMA1_RLC7_MIDCMD_DATA3_BASE_IDX', 'mmSDMA1_RLC7_MIDCMD_DATA4', - 'mmSDMA1_RLC7_MIDCMD_DATA4_BASE_IDX', 'mmSDMA1_RLC7_MIDCMD_DATA5', - 'mmSDMA1_RLC7_MIDCMD_DATA5_BASE_IDX', 'mmSDMA1_RLC7_MIDCMD_DATA6', - 'mmSDMA1_RLC7_MIDCMD_DATA6_BASE_IDX', 'mmSDMA1_RLC7_MIDCMD_DATA7', - 'mmSDMA1_RLC7_MIDCMD_DATA7_BASE_IDX', 'mmSDMA1_RLC7_MIDCMD_DATA8', - 'mmSDMA1_RLC7_MIDCMD_DATA8_BASE_IDX', 'mmSDMA1_RLC7_MIDCMD_DATA9', - 'mmSDMA1_RLC7_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA1_RLC7_MINOR_PTR_UPDATE', - 'mmSDMA1_RLC7_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA1_RLC7_PREEMPT', - 'mmSDMA1_RLC7_PREEMPT_BASE_IDX', 'mmSDMA1_RLC7_RB_AQL_CNTL', - 'mmSDMA1_RLC7_RB_AQL_CNTL_BASE_IDX', 'mmSDMA1_RLC7_RB_BASE', - 'mmSDMA1_RLC7_RB_BASE_BASE_IDX', 'mmSDMA1_RLC7_RB_BASE_HI', - 'mmSDMA1_RLC7_RB_BASE_HI_BASE_IDX', 'mmSDMA1_RLC7_RB_CNTL', - 'mmSDMA1_RLC7_RB_CNTL_BASE_IDX', 'mmSDMA1_RLC7_RB_RPTR', - 'mmSDMA1_RLC7_RB_RPTR_ADDR_HI', - 'mmSDMA1_RLC7_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC7_RB_RPTR_ADDR_LO', - 'mmSDMA1_RLC7_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC7_RB_RPTR_BASE_IDX', 'mmSDMA1_RLC7_RB_RPTR_HI', - 'mmSDMA1_RLC7_RB_RPTR_HI_BASE_IDX', 'mmSDMA1_RLC7_RB_WPTR', - 'mmSDMA1_RLC7_RB_WPTR_BASE_IDX', 'mmSDMA1_RLC7_RB_WPTR_HI', - 'mmSDMA1_RLC7_RB_WPTR_HI_BASE_IDX', - 'mmSDMA1_RLC7_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA1_RLC7_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA1_RLC7_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA1_RLC7_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA1_RLC7_RB_WPTR_POLL_CNTL', - 'mmSDMA1_RLC7_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA1_RLC7_SKIP_CNTL', 'mmSDMA1_RLC7_SKIP_CNTL_BASE_IDX', - 'mmSDMA1_RLC7_STATUS', 'mmSDMA1_RLC7_STATUS_BASE_IDX', - 'mmSDMA1_RLC7_WATERMARK', 'mmSDMA1_RLC7_WATERMARK_BASE_IDX', - 'mmSDMA1_SCRATCH_RAM_ADDR', 'mmSDMA1_SCRATCH_RAM_ADDR_BASE_IDX', - 'mmSDMA1_SCRATCH_RAM_DATA', 'mmSDMA1_SCRATCH_RAM_DATA_BASE_IDX', - 'mmSDMA1_SEM_WAIT_FAIL_TIMER_CNTL', - 'mmSDMA1_SEM_WAIT_FAIL_TIMER_CNTL_BASE_IDX', - 'mmSDMA1_STATUS1_REG', 'mmSDMA1_STATUS1_REG_BASE_IDX', - 'mmSDMA1_STATUS2_REG', 'mmSDMA1_STATUS2_REG_BASE_IDX', - 'mmSDMA1_STATUS3_REG', 'mmSDMA1_STATUS3_REG_BASE_IDX', - 'mmSDMA1_STATUS4_REG', 'mmSDMA1_STATUS4_REG_BASE_IDX', - 'mmSDMA1_STATUS5_REG', 'mmSDMA1_STATUS5_REG_BASE_IDX', - 'mmSDMA1_STATUS_REG', 'mmSDMA1_STATUS_REG_BASE_IDX', - 'mmSDMA1_TILING_CONFIG', 'mmSDMA1_TILING_CONFIG_BASE_IDX', - 'mmSDMA1_TIMESTAMP_CNTL', 'mmSDMA1_TIMESTAMP_CNTL_BASE_IDX', - 'mmSDMA1_TLBI_GCR_CNTL', 'mmSDMA1_TLBI_GCR_CNTL_BASE_IDX', - 'mmSDMA1_UCODE_ADDR', 'mmSDMA1_UCODE_ADDR_BASE_IDX', - 'mmSDMA1_UCODE_CHECKSUM', 'mmSDMA1_UCODE_CHECKSUM_BASE_IDX', - 'mmSDMA1_UCODE_DATA', 'mmSDMA1_UCODE_DATA_BASE_IDX', - 'mmSDMA1_UTCL1_CNTL', 'mmSDMA1_UTCL1_CNTL_BASE_IDX', - 'mmSDMA1_UTCL1_INV0', 'mmSDMA1_UTCL1_INV0_BASE_IDX', - 'mmSDMA1_UTCL1_INV1', 'mmSDMA1_UTCL1_INV1_BASE_IDX', - 'mmSDMA1_UTCL1_INV2', 'mmSDMA1_UTCL1_INV2_BASE_IDX', - 'mmSDMA1_UTCL1_PAGE', 'mmSDMA1_UTCL1_PAGE_BASE_IDX', - 'mmSDMA1_UTCL1_RD_STATUS', 'mmSDMA1_UTCL1_RD_STATUS_BASE_IDX', - 'mmSDMA1_UTCL1_RD_XNACK0', 'mmSDMA1_UTCL1_RD_XNACK0_BASE_IDX', - 'mmSDMA1_UTCL1_RD_XNACK1', 'mmSDMA1_UTCL1_RD_XNACK1_BASE_IDX', - 'mmSDMA1_UTCL1_TIMEOUT', 'mmSDMA1_UTCL1_TIMEOUT_BASE_IDX', - 'mmSDMA1_UTCL1_WATERMK', 'mmSDMA1_UTCL1_WATERMK_BASE_IDX', - 'mmSDMA1_UTCL1_WR_STATUS', 'mmSDMA1_UTCL1_WR_STATUS_BASE_IDX', - 'mmSDMA1_UTCL1_WR_XNACK0', 'mmSDMA1_UTCL1_WR_XNACK0_BASE_IDX', - 'mmSDMA1_UTCL1_WR_XNACK1', 'mmSDMA1_UTCL1_WR_XNACK1_BASE_IDX', - 'mmSDMA1_VERSION', 'mmSDMA1_VERSION_BASE_IDX', - 'mmSDMA1_VF_ENABLE', 'mmSDMA1_VF_ENABLE_BASE_IDX', - 'mmSDMA1_VIRT_RESET_REQ', 'mmSDMA1_VIRT_RESET_REQ_BASE_IDX', - 'mmSDMA1_VM_CNTL', 'mmSDMA1_VM_CNTL_BASE_IDX', - 'mmSDMA1_VM_CTX_CNTL', 'mmSDMA1_VM_CTX_CNTL_BASE_IDX', - 'mmSDMA1_VM_CTX_HI', 'mmSDMA1_VM_CTX_HI_BASE_IDX', - 'mmSDMA1_VM_CTX_LO', 'mmSDMA1_VM_CTX_LO_BASE_IDX', - 'mmSDMA2_ACTIVE_FCN_ID', 'mmSDMA2_ACTIVE_FCN_ID_BASE_IDX', - 'mmSDMA2_AQL_STATUS', 'mmSDMA2_AQL_STATUS_BASE_IDX', - 'mmSDMA2_ATOMIC_CNTL', 'mmSDMA2_ATOMIC_CNTL_BASE_IDX', - 'mmSDMA2_ATOMIC_PREOP_HI', 'mmSDMA2_ATOMIC_PREOP_HI_BASE_IDX', - 'mmSDMA2_ATOMIC_PREOP_LO', 'mmSDMA2_ATOMIC_PREOP_LO_BASE_IDX', - 'mmSDMA2_BA_THRESHOLD', 'mmSDMA2_BA_THRESHOLD_BASE_IDX', - 'mmSDMA2_CHICKEN_BITS', 'mmSDMA2_CHICKEN_BITS_2', - 'mmSDMA2_CHICKEN_BITS_2_BASE_IDX', - 'mmSDMA2_CHICKEN_BITS_BASE_IDX', 'mmSDMA2_CLK_CTRL', - 'mmSDMA2_CLK_CTRL_BASE_IDX', 'mmSDMA2_CLOCK_GATING_REG', - 'mmSDMA2_CLOCK_GATING_REG_BASE_IDX', 'mmSDMA2_CNTL', - 'mmSDMA2_CNTL_BASE_IDX', 'mmSDMA2_CONTEXT_REG_TYPE0', - 'mmSDMA2_CONTEXT_REG_TYPE0_BASE_IDX', 'mmSDMA2_CONTEXT_REG_TYPE1', - 'mmSDMA2_CONTEXT_REG_TYPE1_BASE_IDX', 'mmSDMA2_CONTEXT_REG_TYPE2', - 'mmSDMA2_CONTEXT_REG_TYPE2_BASE_IDX', 'mmSDMA2_CONTEXT_REG_TYPE3', - 'mmSDMA2_CONTEXT_REG_TYPE3_BASE_IDX', 'mmSDMA2_CRD_CNTL', - 'mmSDMA2_CRD_CNTL_BASE_IDX', 'mmSDMA2_DEC_START', - 'mmSDMA2_DEC_START_BASE_IDX', 'mmSDMA2_EA_DBIT_ADDR_DATA', - 'mmSDMA2_EA_DBIT_ADDR_DATA_BASE_IDX', - 'mmSDMA2_EA_DBIT_ADDR_INDEX', - 'mmSDMA2_EA_DBIT_ADDR_INDEX_BASE_IDX', 'mmSDMA2_EDC_CONFIG', - 'mmSDMA2_EDC_CONFIG_BASE_IDX', 'mmSDMA2_EDC_COUNTER', - 'mmSDMA2_EDC_COUNTER_BASE_IDX', 'mmSDMA2_EDC_COUNTER_CLEAR', - 'mmSDMA2_EDC_COUNTER_CLEAR_BASE_IDX', 'mmSDMA2_ERROR_LOG', - 'mmSDMA2_ERROR_LOG_BASE_IDX', 'mmSDMA2_F32_CNTL', - 'mmSDMA2_F32_CNTL_BASE_IDX', 'mmSDMA2_F32_COUNTER', - 'mmSDMA2_F32_COUNTER_BASE_IDX', 'mmSDMA2_FREEZE', - 'mmSDMA2_FREEZE_BASE_IDX', 'mmSDMA2_GB_ADDR_CONFIG', - 'mmSDMA2_GB_ADDR_CONFIG_BASE_IDX', 'mmSDMA2_GB_ADDR_CONFIG_READ', - 'mmSDMA2_GB_ADDR_CONFIG_READ_BASE_IDX', - 'mmSDMA2_GFX_CONTEXT_CNTL', 'mmSDMA2_GFX_CONTEXT_CNTL_BASE_IDX', - 'mmSDMA2_GFX_CONTEXT_STATUS', - 'mmSDMA2_GFX_CONTEXT_STATUS_BASE_IDX', 'mmSDMA2_GFX_CSA_ADDR_HI', - 'mmSDMA2_GFX_CSA_ADDR_HI_BASE_IDX', 'mmSDMA2_GFX_CSA_ADDR_LO', - 'mmSDMA2_GFX_CSA_ADDR_LO_BASE_IDX', 'mmSDMA2_GFX_DOORBELL', - 'mmSDMA2_GFX_DOORBELL_BASE_IDX', 'mmSDMA2_GFX_DOORBELL_LOG', - 'mmSDMA2_GFX_DOORBELL_LOG_BASE_IDX', - 'mmSDMA2_GFX_DOORBELL_OFFSET', - 'mmSDMA2_GFX_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA2_GFX_DUMMY_REG', - 'mmSDMA2_GFX_DUMMY_REG_BASE_IDX', 'mmSDMA2_GFX_IB_BASE_HI', - 'mmSDMA2_GFX_IB_BASE_HI_BASE_IDX', 'mmSDMA2_GFX_IB_BASE_LO', - 'mmSDMA2_GFX_IB_BASE_LO_BASE_IDX', 'mmSDMA2_GFX_IB_CNTL', - 'mmSDMA2_GFX_IB_CNTL_BASE_IDX', 'mmSDMA2_GFX_IB_OFFSET', - 'mmSDMA2_GFX_IB_OFFSET_BASE_IDX', 'mmSDMA2_GFX_IB_RPTR', - 'mmSDMA2_GFX_IB_RPTR_BASE_IDX', 'mmSDMA2_GFX_IB_SIZE', - 'mmSDMA2_GFX_IB_SIZE_BASE_IDX', 'mmSDMA2_GFX_IB_SUB_REMAIN', - 'mmSDMA2_GFX_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA2_GFX_MIDCMD_CNTL', - 'mmSDMA2_GFX_MIDCMD_CNTL_BASE_IDX', 'mmSDMA2_GFX_MIDCMD_DATA0', - 'mmSDMA2_GFX_MIDCMD_DATA0_BASE_IDX', 'mmSDMA2_GFX_MIDCMD_DATA1', - 'mmSDMA2_GFX_MIDCMD_DATA10', 'mmSDMA2_GFX_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA2_GFX_MIDCMD_DATA1_BASE_IDX', 'mmSDMA2_GFX_MIDCMD_DATA2', - 'mmSDMA2_GFX_MIDCMD_DATA2_BASE_IDX', 'mmSDMA2_GFX_MIDCMD_DATA3', - 'mmSDMA2_GFX_MIDCMD_DATA3_BASE_IDX', 'mmSDMA2_GFX_MIDCMD_DATA4', - 'mmSDMA2_GFX_MIDCMD_DATA4_BASE_IDX', 'mmSDMA2_GFX_MIDCMD_DATA5', - 'mmSDMA2_GFX_MIDCMD_DATA5_BASE_IDX', 'mmSDMA2_GFX_MIDCMD_DATA6', - 'mmSDMA2_GFX_MIDCMD_DATA6_BASE_IDX', 'mmSDMA2_GFX_MIDCMD_DATA7', - 'mmSDMA2_GFX_MIDCMD_DATA7_BASE_IDX', 'mmSDMA2_GFX_MIDCMD_DATA8', - 'mmSDMA2_GFX_MIDCMD_DATA8_BASE_IDX', 'mmSDMA2_GFX_MIDCMD_DATA9', - 'mmSDMA2_GFX_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA2_GFX_MINOR_PTR_UPDATE', - 'mmSDMA2_GFX_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA2_GFX_PREEMPT', - 'mmSDMA2_GFX_PREEMPT_BASE_IDX', 'mmSDMA2_GFX_RB_AQL_CNTL', - 'mmSDMA2_GFX_RB_AQL_CNTL_BASE_IDX', 'mmSDMA2_GFX_RB_BASE', - 'mmSDMA2_GFX_RB_BASE_BASE_IDX', 'mmSDMA2_GFX_RB_BASE_HI', - 'mmSDMA2_GFX_RB_BASE_HI_BASE_IDX', 'mmSDMA2_GFX_RB_CNTL', - 'mmSDMA2_GFX_RB_CNTL_BASE_IDX', 'mmSDMA2_GFX_RB_RPTR', - 'mmSDMA2_GFX_RB_RPTR_ADDR_HI', - 'mmSDMA2_GFX_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA2_GFX_RB_RPTR_ADDR_LO', - 'mmSDMA2_GFX_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA2_GFX_RB_RPTR_BASE_IDX', 'mmSDMA2_GFX_RB_RPTR_HI', - 'mmSDMA2_GFX_RB_RPTR_HI_BASE_IDX', 'mmSDMA2_GFX_RB_WPTR', - 'mmSDMA2_GFX_RB_WPTR_BASE_IDX', 'mmSDMA2_GFX_RB_WPTR_HI', - 'mmSDMA2_GFX_RB_WPTR_HI_BASE_IDX', - 'mmSDMA2_GFX_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA2_GFX_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA2_GFX_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA2_GFX_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA2_GFX_RB_WPTR_POLL_CNTL', - 'mmSDMA2_GFX_RB_WPTR_POLL_CNTL_BASE_IDX', 'mmSDMA2_GFX_SKIP_CNTL', - 'mmSDMA2_GFX_SKIP_CNTL_BASE_IDX', 'mmSDMA2_GFX_STATUS', - 'mmSDMA2_GFX_STATUS_BASE_IDX', 'mmSDMA2_GFX_WATERMARK', - 'mmSDMA2_GFX_WATERMARK_BASE_IDX', 'mmSDMA2_GLOBAL_TIMESTAMP_HI', - 'mmSDMA2_GLOBAL_TIMESTAMP_HI_BASE_IDX', - 'mmSDMA2_GLOBAL_TIMESTAMP_LO', - 'mmSDMA2_GLOBAL_TIMESTAMP_LO_BASE_IDX', 'mmSDMA2_HBM_PAGE_CONFIG', - 'mmSDMA2_HBM_PAGE_CONFIG_BASE_IDX', 'mmSDMA2_HOLE_ADDR_HI', - 'mmSDMA2_HOLE_ADDR_HI_BASE_IDX', 'mmSDMA2_HOLE_ADDR_LO', - 'mmSDMA2_HOLE_ADDR_LO_BASE_IDX', 'mmSDMA2_IB_OFFSET_FETCH', - 'mmSDMA2_IB_OFFSET_FETCH_BASE_IDX', 'mmSDMA2_ID', - 'mmSDMA2_ID_BASE_IDX', 'mmSDMA2_INT_STATUS', - 'mmSDMA2_INT_STATUS_BASE_IDX', 'mmSDMA2_PAGE_CONTEXT_STATUS', - 'mmSDMA2_PAGE_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA2_PAGE_CSA_ADDR_HI', 'mmSDMA2_PAGE_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA2_PAGE_CSA_ADDR_LO', 'mmSDMA2_PAGE_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA2_PAGE_DOORBELL', 'mmSDMA2_PAGE_DOORBELL_BASE_IDX', - 'mmSDMA2_PAGE_DOORBELL_LOG', 'mmSDMA2_PAGE_DOORBELL_LOG_BASE_IDX', - 'mmSDMA2_PAGE_DOORBELL_OFFSET', - 'mmSDMA2_PAGE_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA2_PAGE_DUMMY_REG', - 'mmSDMA2_PAGE_DUMMY_REG_BASE_IDX', 'mmSDMA2_PAGE_IB_BASE_HI', - 'mmSDMA2_PAGE_IB_BASE_HI_BASE_IDX', 'mmSDMA2_PAGE_IB_BASE_LO', - 'mmSDMA2_PAGE_IB_BASE_LO_BASE_IDX', 'mmSDMA2_PAGE_IB_CNTL', - 'mmSDMA2_PAGE_IB_CNTL_BASE_IDX', 'mmSDMA2_PAGE_IB_OFFSET', - 'mmSDMA2_PAGE_IB_OFFSET_BASE_IDX', 'mmSDMA2_PAGE_IB_RPTR', - 'mmSDMA2_PAGE_IB_RPTR_BASE_IDX', 'mmSDMA2_PAGE_IB_SIZE', - 'mmSDMA2_PAGE_IB_SIZE_BASE_IDX', 'mmSDMA2_PAGE_IB_SUB_REMAIN', - 'mmSDMA2_PAGE_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA2_PAGE_MIDCMD_CNTL', - 'mmSDMA2_PAGE_MIDCMD_CNTL_BASE_IDX', 'mmSDMA2_PAGE_MIDCMD_DATA0', - 'mmSDMA2_PAGE_MIDCMD_DATA0_BASE_IDX', 'mmSDMA2_PAGE_MIDCMD_DATA1', - 'mmSDMA2_PAGE_MIDCMD_DATA10', - 'mmSDMA2_PAGE_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA2_PAGE_MIDCMD_DATA1_BASE_IDX', 'mmSDMA2_PAGE_MIDCMD_DATA2', - 'mmSDMA2_PAGE_MIDCMD_DATA2_BASE_IDX', 'mmSDMA2_PAGE_MIDCMD_DATA3', - 'mmSDMA2_PAGE_MIDCMD_DATA3_BASE_IDX', 'mmSDMA2_PAGE_MIDCMD_DATA4', - 'mmSDMA2_PAGE_MIDCMD_DATA4_BASE_IDX', 'mmSDMA2_PAGE_MIDCMD_DATA5', - 'mmSDMA2_PAGE_MIDCMD_DATA5_BASE_IDX', 'mmSDMA2_PAGE_MIDCMD_DATA6', - 'mmSDMA2_PAGE_MIDCMD_DATA6_BASE_IDX', 'mmSDMA2_PAGE_MIDCMD_DATA7', - 'mmSDMA2_PAGE_MIDCMD_DATA7_BASE_IDX', 'mmSDMA2_PAGE_MIDCMD_DATA8', - 'mmSDMA2_PAGE_MIDCMD_DATA8_BASE_IDX', 'mmSDMA2_PAGE_MIDCMD_DATA9', - 'mmSDMA2_PAGE_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA2_PAGE_MINOR_PTR_UPDATE', - 'mmSDMA2_PAGE_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA2_PAGE_PREEMPT', - 'mmSDMA2_PAGE_PREEMPT_BASE_IDX', 'mmSDMA2_PAGE_RB_AQL_CNTL', - 'mmSDMA2_PAGE_RB_AQL_CNTL_BASE_IDX', 'mmSDMA2_PAGE_RB_BASE', - 'mmSDMA2_PAGE_RB_BASE_BASE_IDX', 'mmSDMA2_PAGE_RB_BASE_HI', - 'mmSDMA2_PAGE_RB_BASE_HI_BASE_IDX', 'mmSDMA2_PAGE_RB_CNTL', - 'mmSDMA2_PAGE_RB_CNTL_BASE_IDX', 'mmSDMA2_PAGE_RB_RPTR', - 'mmSDMA2_PAGE_RB_RPTR_ADDR_HI', - 'mmSDMA2_PAGE_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA2_PAGE_RB_RPTR_ADDR_LO', - 'mmSDMA2_PAGE_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA2_PAGE_RB_RPTR_BASE_IDX', 'mmSDMA2_PAGE_RB_RPTR_HI', - 'mmSDMA2_PAGE_RB_RPTR_HI_BASE_IDX', 'mmSDMA2_PAGE_RB_WPTR', - 'mmSDMA2_PAGE_RB_WPTR_BASE_IDX', 'mmSDMA2_PAGE_RB_WPTR_HI', - 'mmSDMA2_PAGE_RB_WPTR_HI_BASE_IDX', - 'mmSDMA2_PAGE_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA2_PAGE_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA2_PAGE_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA2_PAGE_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA2_PAGE_RB_WPTR_POLL_CNTL', - 'mmSDMA2_PAGE_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA2_PAGE_SKIP_CNTL', 'mmSDMA2_PAGE_SKIP_CNTL_BASE_IDX', - 'mmSDMA2_PAGE_STATUS', 'mmSDMA2_PAGE_STATUS_BASE_IDX', - 'mmSDMA2_PAGE_WATERMARK', 'mmSDMA2_PAGE_WATERMARK_BASE_IDX', - 'mmSDMA2_PERFCNT_MISC_CNTL', 'mmSDMA2_PERFCNT_MISC_CNTL_BASE_IDX', - 'mmSDMA2_PERFCNT_PERFCOUNTER0_CFG', - 'mmSDMA2_PERFCNT_PERFCOUNTER0_CFG_BASE_IDX', - 'mmSDMA2_PERFCNT_PERFCOUNTER1_CFG', - 'mmSDMA2_PERFCNT_PERFCOUNTER1_CFG_BASE_IDX', - 'mmSDMA2_PERFCNT_PERFCOUNTER_HI', - 'mmSDMA2_PERFCNT_PERFCOUNTER_HI_BASE_IDX', - 'mmSDMA2_PERFCNT_PERFCOUNTER_LO', - 'mmSDMA2_PERFCNT_PERFCOUNTER_LO_BASE_IDX', - 'mmSDMA2_PERFCNT_PERFCOUNTER_RSLT_CNTL', - 'mmSDMA2_PERFCNT_PERFCOUNTER_RSLT_CNTL_BASE_IDX', - 'mmSDMA2_PERFCOUNTER0_HI', 'mmSDMA2_PERFCOUNTER0_HI_BASE_IDX', - 'mmSDMA2_PERFCOUNTER0_LO', 'mmSDMA2_PERFCOUNTER0_LO_BASE_IDX', - 'mmSDMA2_PERFCOUNTER0_SELECT', 'mmSDMA2_PERFCOUNTER0_SELECT1', - 'mmSDMA2_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmSDMA2_PERFCOUNTER0_SELECT_BASE_IDX', 'mmSDMA2_PERFCOUNTER1_HI', - 'mmSDMA2_PERFCOUNTER1_HI_BASE_IDX', 'mmSDMA2_PERFCOUNTER1_LO', - 'mmSDMA2_PERFCOUNTER1_LO_BASE_IDX', 'mmSDMA2_PERFCOUNTER1_SELECT', - 'mmSDMA2_PERFCOUNTER1_SELECT1', - 'mmSDMA2_PERFCOUNTER1_SELECT1_BASE_IDX', - 'mmSDMA2_PERFCOUNTER1_SELECT_BASE_IDX', 'mmSDMA2_PG_CNTL', - 'mmSDMA2_PG_CNTL_BASE_IDX', 'mmSDMA2_PG_CTX_CNTL', - 'mmSDMA2_PG_CTX_CNTL_BASE_IDX', 'mmSDMA2_PG_CTX_HI', - 'mmSDMA2_PG_CTX_HI_BASE_IDX', 'mmSDMA2_PG_CTX_LO', - 'mmSDMA2_PG_CTX_LO_BASE_IDX', 'mmSDMA2_PHASE0_QUANTUM', - 'mmSDMA2_PHASE0_QUANTUM_BASE_IDX', 'mmSDMA2_PHASE1_QUANTUM', - 'mmSDMA2_PHASE1_QUANTUM_BASE_IDX', 'mmSDMA2_PHASE2_QUANTUM', - 'mmSDMA2_PHASE2_QUANTUM_BASE_IDX', 'mmSDMA2_PHYSICAL_ADDR_HI', - 'mmSDMA2_PHYSICAL_ADDR_HI_BASE_IDX', 'mmSDMA2_PHYSICAL_ADDR_LO', - 'mmSDMA2_PHYSICAL_ADDR_LO_BASE_IDX', 'mmSDMA2_POWER_CNTL', - 'mmSDMA2_POWER_CNTL_BASE_IDX', 'mmSDMA2_PROGRAM', - 'mmSDMA2_PROGRAM_BASE_IDX', 'mmSDMA2_PUB_DUMMY_REG0', - 'mmSDMA2_PUB_DUMMY_REG0_BASE_IDX', 'mmSDMA2_PUB_DUMMY_REG1', - 'mmSDMA2_PUB_DUMMY_REG1_BASE_IDX', 'mmSDMA2_PUB_DUMMY_REG2', - 'mmSDMA2_PUB_DUMMY_REG2_BASE_IDX', 'mmSDMA2_PUB_DUMMY_REG3', - 'mmSDMA2_PUB_DUMMY_REG3_BASE_IDX', 'mmSDMA2_PUB_REG_TYPE0', - 'mmSDMA2_PUB_REG_TYPE0_BASE_IDX', 'mmSDMA2_PUB_REG_TYPE1', - 'mmSDMA2_PUB_REG_TYPE1_BASE_IDX', 'mmSDMA2_PUB_REG_TYPE2', - 'mmSDMA2_PUB_REG_TYPE2_BASE_IDX', 'mmSDMA2_PUB_REG_TYPE3', - 'mmSDMA2_PUB_REG_TYPE3_BASE_IDX', 'mmSDMA2_QUEUE_RESET_REQ', - 'mmSDMA2_QUEUE_RESET_REQ_BASE_IDX', 'mmSDMA2_RB_RPTR_FETCH', - 'mmSDMA2_RB_RPTR_FETCH_BASE_IDX', 'mmSDMA2_RB_RPTR_FETCH_HI', - 'mmSDMA2_RB_RPTR_FETCH_HI_BASE_IDX', 'mmSDMA2_RD_BURST_CNTL', - 'mmSDMA2_RD_BURST_CNTL_BASE_IDX', 'mmSDMA2_RELAX_ORDERING_LUT', - 'mmSDMA2_RELAX_ORDERING_LUT_BASE_IDX', - 'mmSDMA2_RLC0_CONTEXT_STATUS', - 'mmSDMA2_RLC0_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA2_RLC0_CSA_ADDR_HI', 'mmSDMA2_RLC0_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC0_CSA_ADDR_LO', 'mmSDMA2_RLC0_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC0_DOORBELL', 'mmSDMA2_RLC0_DOORBELL_BASE_IDX', - 'mmSDMA2_RLC0_DOORBELL_LOG', 'mmSDMA2_RLC0_DOORBELL_LOG_BASE_IDX', - 'mmSDMA2_RLC0_DOORBELL_OFFSET', - 'mmSDMA2_RLC0_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA2_RLC0_DUMMY_REG', - 'mmSDMA2_RLC0_DUMMY_REG_BASE_IDX', 'mmSDMA2_RLC0_IB_BASE_HI', - 'mmSDMA2_RLC0_IB_BASE_HI_BASE_IDX', 'mmSDMA2_RLC0_IB_BASE_LO', - 'mmSDMA2_RLC0_IB_BASE_LO_BASE_IDX', 'mmSDMA2_RLC0_IB_CNTL', - 'mmSDMA2_RLC0_IB_CNTL_BASE_IDX', 'mmSDMA2_RLC0_IB_OFFSET', - 'mmSDMA2_RLC0_IB_OFFSET_BASE_IDX', 'mmSDMA2_RLC0_IB_RPTR', - 'mmSDMA2_RLC0_IB_RPTR_BASE_IDX', 'mmSDMA2_RLC0_IB_SIZE', - 'mmSDMA2_RLC0_IB_SIZE_BASE_IDX', 'mmSDMA2_RLC0_IB_SUB_REMAIN', - 'mmSDMA2_RLC0_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA2_RLC0_MIDCMD_CNTL', - 'mmSDMA2_RLC0_MIDCMD_CNTL_BASE_IDX', 'mmSDMA2_RLC0_MIDCMD_DATA0', - 'mmSDMA2_RLC0_MIDCMD_DATA0_BASE_IDX', 'mmSDMA2_RLC0_MIDCMD_DATA1', - 'mmSDMA2_RLC0_MIDCMD_DATA10', - 'mmSDMA2_RLC0_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA2_RLC0_MIDCMD_DATA1_BASE_IDX', 'mmSDMA2_RLC0_MIDCMD_DATA2', - 'mmSDMA2_RLC0_MIDCMD_DATA2_BASE_IDX', 'mmSDMA2_RLC0_MIDCMD_DATA3', - 'mmSDMA2_RLC0_MIDCMD_DATA3_BASE_IDX', 'mmSDMA2_RLC0_MIDCMD_DATA4', - 'mmSDMA2_RLC0_MIDCMD_DATA4_BASE_IDX', 'mmSDMA2_RLC0_MIDCMD_DATA5', - 'mmSDMA2_RLC0_MIDCMD_DATA5_BASE_IDX', 'mmSDMA2_RLC0_MIDCMD_DATA6', - 'mmSDMA2_RLC0_MIDCMD_DATA6_BASE_IDX', 'mmSDMA2_RLC0_MIDCMD_DATA7', - 'mmSDMA2_RLC0_MIDCMD_DATA7_BASE_IDX', 'mmSDMA2_RLC0_MIDCMD_DATA8', - 'mmSDMA2_RLC0_MIDCMD_DATA8_BASE_IDX', 'mmSDMA2_RLC0_MIDCMD_DATA9', - 'mmSDMA2_RLC0_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA2_RLC0_MINOR_PTR_UPDATE', - 'mmSDMA2_RLC0_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA2_RLC0_PREEMPT', - 'mmSDMA2_RLC0_PREEMPT_BASE_IDX', 'mmSDMA2_RLC0_RB_AQL_CNTL', - 'mmSDMA2_RLC0_RB_AQL_CNTL_BASE_IDX', 'mmSDMA2_RLC0_RB_BASE', - 'mmSDMA2_RLC0_RB_BASE_BASE_IDX', 'mmSDMA2_RLC0_RB_BASE_HI', - 'mmSDMA2_RLC0_RB_BASE_HI_BASE_IDX', 'mmSDMA2_RLC0_RB_CNTL', - 'mmSDMA2_RLC0_RB_CNTL_BASE_IDX', 'mmSDMA2_RLC0_RB_RPTR', - 'mmSDMA2_RLC0_RB_RPTR_ADDR_HI', - 'mmSDMA2_RLC0_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC0_RB_RPTR_ADDR_LO', - 'mmSDMA2_RLC0_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC0_RB_RPTR_BASE_IDX', 'mmSDMA2_RLC0_RB_RPTR_HI', - 'mmSDMA2_RLC0_RB_RPTR_HI_BASE_IDX', 'mmSDMA2_RLC0_RB_WPTR', - 'mmSDMA2_RLC0_RB_WPTR_BASE_IDX', 'mmSDMA2_RLC0_RB_WPTR_HI', - 'mmSDMA2_RLC0_RB_WPTR_HI_BASE_IDX', - 'mmSDMA2_RLC0_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA2_RLC0_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC0_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA2_RLC0_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC0_RB_WPTR_POLL_CNTL', - 'mmSDMA2_RLC0_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA2_RLC0_SKIP_CNTL', 'mmSDMA2_RLC0_SKIP_CNTL_BASE_IDX', - 'mmSDMA2_RLC0_STATUS', 'mmSDMA2_RLC0_STATUS_BASE_IDX', - 'mmSDMA2_RLC0_WATERMARK', 'mmSDMA2_RLC0_WATERMARK_BASE_IDX', - 'mmSDMA2_RLC1_CONTEXT_STATUS', - 'mmSDMA2_RLC1_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA2_RLC1_CSA_ADDR_HI', 'mmSDMA2_RLC1_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC1_CSA_ADDR_LO', 'mmSDMA2_RLC1_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC1_DOORBELL', 'mmSDMA2_RLC1_DOORBELL_BASE_IDX', - 'mmSDMA2_RLC1_DOORBELL_LOG', 'mmSDMA2_RLC1_DOORBELL_LOG_BASE_IDX', - 'mmSDMA2_RLC1_DOORBELL_OFFSET', - 'mmSDMA2_RLC1_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA2_RLC1_DUMMY_REG', - 'mmSDMA2_RLC1_DUMMY_REG_BASE_IDX', 'mmSDMA2_RLC1_IB_BASE_HI', - 'mmSDMA2_RLC1_IB_BASE_HI_BASE_IDX', 'mmSDMA2_RLC1_IB_BASE_LO', - 'mmSDMA2_RLC1_IB_BASE_LO_BASE_IDX', 'mmSDMA2_RLC1_IB_CNTL', - 'mmSDMA2_RLC1_IB_CNTL_BASE_IDX', 'mmSDMA2_RLC1_IB_OFFSET', - 'mmSDMA2_RLC1_IB_OFFSET_BASE_IDX', 'mmSDMA2_RLC1_IB_RPTR', - 'mmSDMA2_RLC1_IB_RPTR_BASE_IDX', 'mmSDMA2_RLC1_IB_SIZE', - 'mmSDMA2_RLC1_IB_SIZE_BASE_IDX', 'mmSDMA2_RLC1_IB_SUB_REMAIN', - 'mmSDMA2_RLC1_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA2_RLC1_MIDCMD_CNTL', - 'mmSDMA2_RLC1_MIDCMD_CNTL_BASE_IDX', 'mmSDMA2_RLC1_MIDCMD_DATA0', - 'mmSDMA2_RLC1_MIDCMD_DATA0_BASE_IDX', 'mmSDMA2_RLC1_MIDCMD_DATA1', - 'mmSDMA2_RLC1_MIDCMD_DATA10', - 'mmSDMA2_RLC1_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA2_RLC1_MIDCMD_DATA1_BASE_IDX', 'mmSDMA2_RLC1_MIDCMD_DATA2', - 'mmSDMA2_RLC1_MIDCMD_DATA2_BASE_IDX', 'mmSDMA2_RLC1_MIDCMD_DATA3', - 'mmSDMA2_RLC1_MIDCMD_DATA3_BASE_IDX', 'mmSDMA2_RLC1_MIDCMD_DATA4', - 'mmSDMA2_RLC1_MIDCMD_DATA4_BASE_IDX', 'mmSDMA2_RLC1_MIDCMD_DATA5', - 'mmSDMA2_RLC1_MIDCMD_DATA5_BASE_IDX', 'mmSDMA2_RLC1_MIDCMD_DATA6', - 'mmSDMA2_RLC1_MIDCMD_DATA6_BASE_IDX', 'mmSDMA2_RLC1_MIDCMD_DATA7', - 'mmSDMA2_RLC1_MIDCMD_DATA7_BASE_IDX', 'mmSDMA2_RLC1_MIDCMD_DATA8', - 'mmSDMA2_RLC1_MIDCMD_DATA8_BASE_IDX', 'mmSDMA2_RLC1_MIDCMD_DATA9', - 'mmSDMA2_RLC1_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA2_RLC1_MINOR_PTR_UPDATE', - 'mmSDMA2_RLC1_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA2_RLC1_PREEMPT', - 'mmSDMA2_RLC1_PREEMPT_BASE_IDX', 'mmSDMA2_RLC1_RB_AQL_CNTL', - 'mmSDMA2_RLC1_RB_AQL_CNTL_BASE_IDX', 'mmSDMA2_RLC1_RB_BASE', - 'mmSDMA2_RLC1_RB_BASE_BASE_IDX', 'mmSDMA2_RLC1_RB_BASE_HI', - 'mmSDMA2_RLC1_RB_BASE_HI_BASE_IDX', 'mmSDMA2_RLC1_RB_CNTL', - 'mmSDMA2_RLC1_RB_CNTL_BASE_IDX', 'mmSDMA2_RLC1_RB_RPTR', - 'mmSDMA2_RLC1_RB_RPTR_ADDR_HI', - 'mmSDMA2_RLC1_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC1_RB_RPTR_ADDR_LO', - 'mmSDMA2_RLC1_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC1_RB_RPTR_BASE_IDX', 'mmSDMA2_RLC1_RB_RPTR_HI', - 'mmSDMA2_RLC1_RB_RPTR_HI_BASE_IDX', 'mmSDMA2_RLC1_RB_WPTR', - 'mmSDMA2_RLC1_RB_WPTR_BASE_IDX', 'mmSDMA2_RLC1_RB_WPTR_HI', - 'mmSDMA2_RLC1_RB_WPTR_HI_BASE_IDX', - 'mmSDMA2_RLC1_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA2_RLC1_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC1_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA2_RLC1_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC1_RB_WPTR_POLL_CNTL', - 'mmSDMA2_RLC1_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA2_RLC1_SKIP_CNTL', 'mmSDMA2_RLC1_SKIP_CNTL_BASE_IDX', - 'mmSDMA2_RLC1_STATUS', 'mmSDMA2_RLC1_STATUS_BASE_IDX', - 'mmSDMA2_RLC1_WATERMARK', 'mmSDMA2_RLC1_WATERMARK_BASE_IDX', - 'mmSDMA2_RLC2_CONTEXT_STATUS', - 'mmSDMA2_RLC2_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA2_RLC2_CSA_ADDR_HI', 'mmSDMA2_RLC2_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC2_CSA_ADDR_LO', 'mmSDMA2_RLC2_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC2_DOORBELL', 'mmSDMA2_RLC2_DOORBELL_BASE_IDX', - 'mmSDMA2_RLC2_DOORBELL_LOG', 'mmSDMA2_RLC2_DOORBELL_LOG_BASE_IDX', - 'mmSDMA2_RLC2_DOORBELL_OFFSET', - 'mmSDMA2_RLC2_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA2_RLC2_DUMMY_REG', - 'mmSDMA2_RLC2_DUMMY_REG_BASE_IDX', 'mmSDMA2_RLC2_IB_BASE_HI', - 'mmSDMA2_RLC2_IB_BASE_HI_BASE_IDX', 'mmSDMA2_RLC2_IB_BASE_LO', - 'mmSDMA2_RLC2_IB_BASE_LO_BASE_IDX', 'mmSDMA2_RLC2_IB_CNTL', - 'mmSDMA2_RLC2_IB_CNTL_BASE_IDX', 'mmSDMA2_RLC2_IB_OFFSET', - 'mmSDMA2_RLC2_IB_OFFSET_BASE_IDX', 'mmSDMA2_RLC2_IB_RPTR', - 'mmSDMA2_RLC2_IB_RPTR_BASE_IDX', 'mmSDMA2_RLC2_IB_SIZE', - 'mmSDMA2_RLC2_IB_SIZE_BASE_IDX', 'mmSDMA2_RLC2_IB_SUB_REMAIN', - 'mmSDMA2_RLC2_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA2_RLC2_MIDCMD_CNTL', - 'mmSDMA2_RLC2_MIDCMD_CNTL_BASE_IDX', 'mmSDMA2_RLC2_MIDCMD_DATA0', - 'mmSDMA2_RLC2_MIDCMD_DATA0_BASE_IDX', 'mmSDMA2_RLC2_MIDCMD_DATA1', - 'mmSDMA2_RLC2_MIDCMD_DATA10', - 'mmSDMA2_RLC2_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA2_RLC2_MIDCMD_DATA1_BASE_IDX', 'mmSDMA2_RLC2_MIDCMD_DATA2', - 'mmSDMA2_RLC2_MIDCMD_DATA2_BASE_IDX', 'mmSDMA2_RLC2_MIDCMD_DATA3', - 'mmSDMA2_RLC2_MIDCMD_DATA3_BASE_IDX', 'mmSDMA2_RLC2_MIDCMD_DATA4', - 'mmSDMA2_RLC2_MIDCMD_DATA4_BASE_IDX', 'mmSDMA2_RLC2_MIDCMD_DATA5', - 'mmSDMA2_RLC2_MIDCMD_DATA5_BASE_IDX', 'mmSDMA2_RLC2_MIDCMD_DATA6', - 'mmSDMA2_RLC2_MIDCMD_DATA6_BASE_IDX', 'mmSDMA2_RLC2_MIDCMD_DATA7', - 'mmSDMA2_RLC2_MIDCMD_DATA7_BASE_IDX', 'mmSDMA2_RLC2_MIDCMD_DATA8', - 'mmSDMA2_RLC2_MIDCMD_DATA8_BASE_IDX', 'mmSDMA2_RLC2_MIDCMD_DATA9', - 'mmSDMA2_RLC2_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA2_RLC2_MINOR_PTR_UPDATE', - 'mmSDMA2_RLC2_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA2_RLC2_PREEMPT', - 'mmSDMA2_RLC2_PREEMPT_BASE_IDX', 'mmSDMA2_RLC2_RB_AQL_CNTL', - 'mmSDMA2_RLC2_RB_AQL_CNTL_BASE_IDX', 'mmSDMA2_RLC2_RB_BASE', - 'mmSDMA2_RLC2_RB_BASE_BASE_IDX', 'mmSDMA2_RLC2_RB_BASE_HI', - 'mmSDMA2_RLC2_RB_BASE_HI_BASE_IDX', 'mmSDMA2_RLC2_RB_CNTL', - 'mmSDMA2_RLC2_RB_CNTL_BASE_IDX', 'mmSDMA2_RLC2_RB_RPTR', - 'mmSDMA2_RLC2_RB_RPTR_ADDR_HI', - 'mmSDMA2_RLC2_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC2_RB_RPTR_ADDR_LO', - 'mmSDMA2_RLC2_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC2_RB_RPTR_BASE_IDX', 'mmSDMA2_RLC2_RB_RPTR_HI', - 'mmSDMA2_RLC2_RB_RPTR_HI_BASE_IDX', 'mmSDMA2_RLC2_RB_WPTR', - 'mmSDMA2_RLC2_RB_WPTR_BASE_IDX', 'mmSDMA2_RLC2_RB_WPTR_HI', - 'mmSDMA2_RLC2_RB_WPTR_HI_BASE_IDX', - 'mmSDMA2_RLC2_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA2_RLC2_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC2_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA2_RLC2_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC2_RB_WPTR_POLL_CNTL', - 'mmSDMA2_RLC2_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA2_RLC2_SKIP_CNTL', 'mmSDMA2_RLC2_SKIP_CNTL_BASE_IDX', - 'mmSDMA2_RLC2_STATUS', 'mmSDMA2_RLC2_STATUS_BASE_IDX', - 'mmSDMA2_RLC2_WATERMARK', 'mmSDMA2_RLC2_WATERMARK_BASE_IDX', - 'mmSDMA2_RLC3_CONTEXT_STATUS', - 'mmSDMA2_RLC3_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA2_RLC3_CSA_ADDR_HI', 'mmSDMA2_RLC3_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC3_CSA_ADDR_LO', 'mmSDMA2_RLC3_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC3_DOORBELL', 'mmSDMA2_RLC3_DOORBELL_BASE_IDX', - 'mmSDMA2_RLC3_DOORBELL_LOG', 'mmSDMA2_RLC3_DOORBELL_LOG_BASE_IDX', - 'mmSDMA2_RLC3_DOORBELL_OFFSET', - 'mmSDMA2_RLC3_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA2_RLC3_DUMMY_REG', - 'mmSDMA2_RLC3_DUMMY_REG_BASE_IDX', 'mmSDMA2_RLC3_IB_BASE_HI', - 'mmSDMA2_RLC3_IB_BASE_HI_BASE_IDX', 'mmSDMA2_RLC3_IB_BASE_LO', - 'mmSDMA2_RLC3_IB_BASE_LO_BASE_IDX', 'mmSDMA2_RLC3_IB_CNTL', - 'mmSDMA2_RLC3_IB_CNTL_BASE_IDX', 'mmSDMA2_RLC3_IB_OFFSET', - 'mmSDMA2_RLC3_IB_OFFSET_BASE_IDX', 'mmSDMA2_RLC3_IB_RPTR', - 'mmSDMA2_RLC3_IB_RPTR_BASE_IDX', 'mmSDMA2_RLC3_IB_SIZE', - 'mmSDMA2_RLC3_IB_SIZE_BASE_IDX', 'mmSDMA2_RLC3_IB_SUB_REMAIN', - 'mmSDMA2_RLC3_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA2_RLC3_MIDCMD_CNTL', - 'mmSDMA2_RLC3_MIDCMD_CNTL_BASE_IDX', 'mmSDMA2_RLC3_MIDCMD_DATA0', - 'mmSDMA2_RLC3_MIDCMD_DATA0_BASE_IDX', 'mmSDMA2_RLC3_MIDCMD_DATA1', - 'mmSDMA2_RLC3_MIDCMD_DATA10', - 'mmSDMA2_RLC3_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA2_RLC3_MIDCMD_DATA1_BASE_IDX', 'mmSDMA2_RLC3_MIDCMD_DATA2', - 'mmSDMA2_RLC3_MIDCMD_DATA2_BASE_IDX', 'mmSDMA2_RLC3_MIDCMD_DATA3', - 'mmSDMA2_RLC3_MIDCMD_DATA3_BASE_IDX', 'mmSDMA2_RLC3_MIDCMD_DATA4', - 'mmSDMA2_RLC3_MIDCMD_DATA4_BASE_IDX', 'mmSDMA2_RLC3_MIDCMD_DATA5', - 'mmSDMA2_RLC3_MIDCMD_DATA5_BASE_IDX', 'mmSDMA2_RLC3_MIDCMD_DATA6', - 'mmSDMA2_RLC3_MIDCMD_DATA6_BASE_IDX', 'mmSDMA2_RLC3_MIDCMD_DATA7', - 'mmSDMA2_RLC3_MIDCMD_DATA7_BASE_IDX', 'mmSDMA2_RLC3_MIDCMD_DATA8', - 'mmSDMA2_RLC3_MIDCMD_DATA8_BASE_IDX', 'mmSDMA2_RLC3_MIDCMD_DATA9', - 'mmSDMA2_RLC3_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA2_RLC3_MINOR_PTR_UPDATE', - 'mmSDMA2_RLC3_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA2_RLC3_PREEMPT', - 'mmSDMA2_RLC3_PREEMPT_BASE_IDX', 'mmSDMA2_RLC3_RB_AQL_CNTL', - 'mmSDMA2_RLC3_RB_AQL_CNTL_BASE_IDX', 'mmSDMA2_RLC3_RB_BASE', - 'mmSDMA2_RLC3_RB_BASE_BASE_IDX', 'mmSDMA2_RLC3_RB_BASE_HI', - 'mmSDMA2_RLC3_RB_BASE_HI_BASE_IDX', 'mmSDMA2_RLC3_RB_CNTL', - 'mmSDMA2_RLC3_RB_CNTL_BASE_IDX', 'mmSDMA2_RLC3_RB_RPTR', - 'mmSDMA2_RLC3_RB_RPTR_ADDR_HI', - 'mmSDMA2_RLC3_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC3_RB_RPTR_ADDR_LO', - 'mmSDMA2_RLC3_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC3_RB_RPTR_BASE_IDX', 'mmSDMA2_RLC3_RB_RPTR_HI', - 'mmSDMA2_RLC3_RB_RPTR_HI_BASE_IDX', 'mmSDMA2_RLC3_RB_WPTR', - 'mmSDMA2_RLC3_RB_WPTR_BASE_IDX', 'mmSDMA2_RLC3_RB_WPTR_HI', - 'mmSDMA2_RLC3_RB_WPTR_HI_BASE_IDX', - 'mmSDMA2_RLC3_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA2_RLC3_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC3_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA2_RLC3_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC3_RB_WPTR_POLL_CNTL', - 'mmSDMA2_RLC3_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA2_RLC3_SKIP_CNTL', 'mmSDMA2_RLC3_SKIP_CNTL_BASE_IDX', - 'mmSDMA2_RLC3_STATUS', 'mmSDMA2_RLC3_STATUS_BASE_IDX', - 'mmSDMA2_RLC3_WATERMARK', 'mmSDMA2_RLC3_WATERMARK_BASE_IDX', - 'mmSDMA2_RLC4_CONTEXT_STATUS', - 'mmSDMA2_RLC4_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA2_RLC4_CSA_ADDR_HI', 'mmSDMA2_RLC4_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC4_CSA_ADDR_LO', 'mmSDMA2_RLC4_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC4_DOORBELL', 'mmSDMA2_RLC4_DOORBELL_BASE_IDX', - 'mmSDMA2_RLC4_DOORBELL_LOG', 'mmSDMA2_RLC4_DOORBELL_LOG_BASE_IDX', - 'mmSDMA2_RLC4_DOORBELL_OFFSET', - 'mmSDMA2_RLC4_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA2_RLC4_DUMMY_REG', - 'mmSDMA2_RLC4_DUMMY_REG_BASE_IDX', 'mmSDMA2_RLC4_IB_BASE_HI', - 'mmSDMA2_RLC4_IB_BASE_HI_BASE_IDX', 'mmSDMA2_RLC4_IB_BASE_LO', - 'mmSDMA2_RLC4_IB_BASE_LO_BASE_IDX', 'mmSDMA2_RLC4_IB_CNTL', - 'mmSDMA2_RLC4_IB_CNTL_BASE_IDX', 'mmSDMA2_RLC4_IB_OFFSET', - 'mmSDMA2_RLC4_IB_OFFSET_BASE_IDX', 'mmSDMA2_RLC4_IB_RPTR', - 'mmSDMA2_RLC4_IB_RPTR_BASE_IDX', 'mmSDMA2_RLC4_IB_SIZE', - 'mmSDMA2_RLC4_IB_SIZE_BASE_IDX', 'mmSDMA2_RLC4_IB_SUB_REMAIN', - 'mmSDMA2_RLC4_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA2_RLC4_MIDCMD_CNTL', - 'mmSDMA2_RLC4_MIDCMD_CNTL_BASE_IDX', 'mmSDMA2_RLC4_MIDCMD_DATA0', - 'mmSDMA2_RLC4_MIDCMD_DATA0_BASE_IDX', 'mmSDMA2_RLC4_MIDCMD_DATA1', - 'mmSDMA2_RLC4_MIDCMD_DATA10', - 'mmSDMA2_RLC4_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA2_RLC4_MIDCMD_DATA1_BASE_IDX', 'mmSDMA2_RLC4_MIDCMD_DATA2', - 'mmSDMA2_RLC4_MIDCMD_DATA2_BASE_IDX', 'mmSDMA2_RLC4_MIDCMD_DATA3', - 'mmSDMA2_RLC4_MIDCMD_DATA3_BASE_IDX', 'mmSDMA2_RLC4_MIDCMD_DATA4', - 'mmSDMA2_RLC4_MIDCMD_DATA4_BASE_IDX', 'mmSDMA2_RLC4_MIDCMD_DATA5', - 'mmSDMA2_RLC4_MIDCMD_DATA5_BASE_IDX', 'mmSDMA2_RLC4_MIDCMD_DATA6', - 'mmSDMA2_RLC4_MIDCMD_DATA6_BASE_IDX', 'mmSDMA2_RLC4_MIDCMD_DATA7', - 'mmSDMA2_RLC4_MIDCMD_DATA7_BASE_IDX', 'mmSDMA2_RLC4_MIDCMD_DATA8', - 'mmSDMA2_RLC4_MIDCMD_DATA8_BASE_IDX', 'mmSDMA2_RLC4_MIDCMD_DATA9', - 'mmSDMA2_RLC4_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA2_RLC4_MINOR_PTR_UPDATE', - 'mmSDMA2_RLC4_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA2_RLC4_PREEMPT', - 'mmSDMA2_RLC4_PREEMPT_BASE_IDX', 'mmSDMA2_RLC4_RB_AQL_CNTL', - 'mmSDMA2_RLC4_RB_AQL_CNTL_BASE_IDX', 'mmSDMA2_RLC4_RB_BASE', - 'mmSDMA2_RLC4_RB_BASE_BASE_IDX', 'mmSDMA2_RLC4_RB_BASE_HI', - 'mmSDMA2_RLC4_RB_BASE_HI_BASE_IDX', 'mmSDMA2_RLC4_RB_CNTL', - 'mmSDMA2_RLC4_RB_CNTL_BASE_IDX', 'mmSDMA2_RLC4_RB_RPTR', - 'mmSDMA2_RLC4_RB_RPTR_ADDR_HI', - 'mmSDMA2_RLC4_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC4_RB_RPTR_ADDR_LO', - 'mmSDMA2_RLC4_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC4_RB_RPTR_BASE_IDX', 'mmSDMA2_RLC4_RB_RPTR_HI', - 'mmSDMA2_RLC4_RB_RPTR_HI_BASE_IDX', 'mmSDMA2_RLC4_RB_WPTR', - 'mmSDMA2_RLC4_RB_WPTR_BASE_IDX', 'mmSDMA2_RLC4_RB_WPTR_HI', - 'mmSDMA2_RLC4_RB_WPTR_HI_BASE_IDX', - 'mmSDMA2_RLC4_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA2_RLC4_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC4_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA2_RLC4_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC4_RB_WPTR_POLL_CNTL', - 'mmSDMA2_RLC4_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA2_RLC4_SKIP_CNTL', 'mmSDMA2_RLC4_SKIP_CNTL_BASE_IDX', - 'mmSDMA2_RLC4_STATUS', 'mmSDMA2_RLC4_STATUS_BASE_IDX', - 'mmSDMA2_RLC4_WATERMARK', 'mmSDMA2_RLC4_WATERMARK_BASE_IDX', - 'mmSDMA2_RLC5_CONTEXT_STATUS', - 'mmSDMA2_RLC5_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA2_RLC5_CSA_ADDR_HI', 'mmSDMA2_RLC5_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC5_CSA_ADDR_LO', 'mmSDMA2_RLC5_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC5_DOORBELL', 'mmSDMA2_RLC5_DOORBELL_BASE_IDX', - 'mmSDMA2_RLC5_DOORBELL_LOG', 'mmSDMA2_RLC5_DOORBELL_LOG_BASE_IDX', - 'mmSDMA2_RLC5_DOORBELL_OFFSET', - 'mmSDMA2_RLC5_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA2_RLC5_DUMMY_REG', - 'mmSDMA2_RLC5_DUMMY_REG_BASE_IDX', 'mmSDMA2_RLC5_IB_BASE_HI', - 'mmSDMA2_RLC5_IB_BASE_HI_BASE_IDX', 'mmSDMA2_RLC5_IB_BASE_LO', - 'mmSDMA2_RLC5_IB_BASE_LO_BASE_IDX', 'mmSDMA2_RLC5_IB_CNTL', - 'mmSDMA2_RLC5_IB_CNTL_BASE_IDX', 'mmSDMA2_RLC5_IB_OFFSET', - 'mmSDMA2_RLC5_IB_OFFSET_BASE_IDX', 'mmSDMA2_RLC5_IB_RPTR', - 'mmSDMA2_RLC5_IB_RPTR_BASE_IDX', 'mmSDMA2_RLC5_IB_SIZE', - 'mmSDMA2_RLC5_IB_SIZE_BASE_IDX', 'mmSDMA2_RLC5_IB_SUB_REMAIN', - 'mmSDMA2_RLC5_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA2_RLC5_MIDCMD_CNTL', - 'mmSDMA2_RLC5_MIDCMD_CNTL_BASE_IDX', 'mmSDMA2_RLC5_MIDCMD_DATA0', - 'mmSDMA2_RLC5_MIDCMD_DATA0_BASE_IDX', 'mmSDMA2_RLC5_MIDCMD_DATA1', - 'mmSDMA2_RLC5_MIDCMD_DATA10', - 'mmSDMA2_RLC5_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA2_RLC5_MIDCMD_DATA1_BASE_IDX', 'mmSDMA2_RLC5_MIDCMD_DATA2', - 'mmSDMA2_RLC5_MIDCMD_DATA2_BASE_IDX', 'mmSDMA2_RLC5_MIDCMD_DATA3', - 'mmSDMA2_RLC5_MIDCMD_DATA3_BASE_IDX', 'mmSDMA2_RLC5_MIDCMD_DATA4', - 'mmSDMA2_RLC5_MIDCMD_DATA4_BASE_IDX', 'mmSDMA2_RLC5_MIDCMD_DATA5', - 'mmSDMA2_RLC5_MIDCMD_DATA5_BASE_IDX', 'mmSDMA2_RLC5_MIDCMD_DATA6', - 'mmSDMA2_RLC5_MIDCMD_DATA6_BASE_IDX', 'mmSDMA2_RLC5_MIDCMD_DATA7', - 'mmSDMA2_RLC5_MIDCMD_DATA7_BASE_IDX', 'mmSDMA2_RLC5_MIDCMD_DATA8', - 'mmSDMA2_RLC5_MIDCMD_DATA8_BASE_IDX', 'mmSDMA2_RLC5_MIDCMD_DATA9', - 'mmSDMA2_RLC5_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA2_RLC5_MINOR_PTR_UPDATE', - 'mmSDMA2_RLC5_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA2_RLC5_PREEMPT', - 'mmSDMA2_RLC5_PREEMPT_BASE_IDX', 'mmSDMA2_RLC5_RB_AQL_CNTL', - 'mmSDMA2_RLC5_RB_AQL_CNTL_BASE_IDX', 'mmSDMA2_RLC5_RB_BASE', - 'mmSDMA2_RLC5_RB_BASE_BASE_IDX', 'mmSDMA2_RLC5_RB_BASE_HI', - 'mmSDMA2_RLC5_RB_BASE_HI_BASE_IDX', 'mmSDMA2_RLC5_RB_CNTL', - 'mmSDMA2_RLC5_RB_CNTL_BASE_IDX', 'mmSDMA2_RLC5_RB_RPTR', - 'mmSDMA2_RLC5_RB_RPTR_ADDR_HI', - 'mmSDMA2_RLC5_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC5_RB_RPTR_ADDR_LO', - 'mmSDMA2_RLC5_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC5_RB_RPTR_BASE_IDX', 'mmSDMA2_RLC5_RB_RPTR_HI', - 'mmSDMA2_RLC5_RB_RPTR_HI_BASE_IDX', 'mmSDMA2_RLC5_RB_WPTR', - 'mmSDMA2_RLC5_RB_WPTR_BASE_IDX', 'mmSDMA2_RLC5_RB_WPTR_HI', - 'mmSDMA2_RLC5_RB_WPTR_HI_BASE_IDX', - 'mmSDMA2_RLC5_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA2_RLC5_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC5_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA2_RLC5_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC5_RB_WPTR_POLL_CNTL', - 'mmSDMA2_RLC5_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA2_RLC5_SKIP_CNTL', 'mmSDMA2_RLC5_SKIP_CNTL_BASE_IDX', - 'mmSDMA2_RLC5_STATUS', 'mmSDMA2_RLC5_STATUS_BASE_IDX', - 'mmSDMA2_RLC5_WATERMARK', 'mmSDMA2_RLC5_WATERMARK_BASE_IDX', - 'mmSDMA2_RLC6_CONTEXT_STATUS', - 'mmSDMA2_RLC6_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA2_RLC6_CSA_ADDR_HI', 'mmSDMA2_RLC6_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC6_CSA_ADDR_LO', 'mmSDMA2_RLC6_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC6_DOORBELL', 'mmSDMA2_RLC6_DOORBELL_BASE_IDX', - 'mmSDMA2_RLC6_DOORBELL_LOG', 'mmSDMA2_RLC6_DOORBELL_LOG_BASE_IDX', - 'mmSDMA2_RLC6_DOORBELL_OFFSET', - 'mmSDMA2_RLC6_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA2_RLC6_DUMMY_REG', - 'mmSDMA2_RLC6_DUMMY_REG_BASE_IDX', 'mmSDMA2_RLC6_IB_BASE_HI', - 'mmSDMA2_RLC6_IB_BASE_HI_BASE_IDX', 'mmSDMA2_RLC6_IB_BASE_LO', - 'mmSDMA2_RLC6_IB_BASE_LO_BASE_IDX', 'mmSDMA2_RLC6_IB_CNTL', - 'mmSDMA2_RLC6_IB_CNTL_BASE_IDX', 'mmSDMA2_RLC6_IB_OFFSET', - 'mmSDMA2_RLC6_IB_OFFSET_BASE_IDX', 'mmSDMA2_RLC6_IB_RPTR', - 'mmSDMA2_RLC6_IB_RPTR_BASE_IDX', 'mmSDMA2_RLC6_IB_SIZE', - 'mmSDMA2_RLC6_IB_SIZE_BASE_IDX', 'mmSDMA2_RLC6_IB_SUB_REMAIN', - 'mmSDMA2_RLC6_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA2_RLC6_MIDCMD_CNTL', - 'mmSDMA2_RLC6_MIDCMD_CNTL_BASE_IDX', 'mmSDMA2_RLC6_MIDCMD_DATA0', - 'mmSDMA2_RLC6_MIDCMD_DATA0_BASE_IDX', 'mmSDMA2_RLC6_MIDCMD_DATA1', - 'mmSDMA2_RLC6_MIDCMD_DATA10', - 'mmSDMA2_RLC6_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA2_RLC6_MIDCMD_DATA1_BASE_IDX', 'mmSDMA2_RLC6_MIDCMD_DATA2', - 'mmSDMA2_RLC6_MIDCMD_DATA2_BASE_IDX', 'mmSDMA2_RLC6_MIDCMD_DATA3', - 'mmSDMA2_RLC6_MIDCMD_DATA3_BASE_IDX', 'mmSDMA2_RLC6_MIDCMD_DATA4', - 'mmSDMA2_RLC6_MIDCMD_DATA4_BASE_IDX', 'mmSDMA2_RLC6_MIDCMD_DATA5', - 'mmSDMA2_RLC6_MIDCMD_DATA5_BASE_IDX', 'mmSDMA2_RLC6_MIDCMD_DATA6', - 'mmSDMA2_RLC6_MIDCMD_DATA6_BASE_IDX', 'mmSDMA2_RLC6_MIDCMD_DATA7', - 'mmSDMA2_RLC6_MIDCMD_DATA7_BASE_IDX', 'mmSDMA2_RLC6_MIDCMD_DATA8', - 'mmSDMA2_RLC6_MIDCMD_DATA8_BASE_IDX', 'mmSDMA2_RLC6_MIDCMD_DATA9', - 'mmSDMA2_RLC6_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA2_RLC6_MINOR_PTR_UPDATE', - 'mmSDMA2_RLC6_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA2_RLC6_PREEMPT', - 'mmSDMA2_RLC6_PREEMPT_BASE_IDX', 'mmSDMA2_RLC6_RB_AQL_CNTL', - 'mmSDMA2_RLC6_RB_AQL_CNTL_BASE_IDX', 'mmSDMA2_RLC6_RB_BASE', - 'mmSDMA2_RLC6_RB_BASE_BASE_IDX', 'mmSDMA2_RLC6_RB_BASE_HI', - 'mmSDMA2_RLC6_RB_BASE_HI_BASE_IDX', 'mmSDMA2_RLC6_RB_CNTL', - 'mmSDMA2_RLC6_RB_CNTL_BASE_IDX', 'mmSDMA2_RLC6_RB_RPTR', - 'mmSDMA2_RLC6_RB_RPTR_ADDR_HI', - 'mmSDMA2_RLC6_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC6_RB_RPTR_ADDR_LO', - 'mmSDMA2_RLC6_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC6_RB_RPTR_BASE_IDX', 'mmSDMA2_RLC6_RB_RPTR_HI', - 'mmSDMA2_RLC6_RB_RPTR_HI_BASE_IDX', 'mmSDMA2_RLC6_RB_WPTR', - 'mmSDMA2_RLC6_RB_WPTR_BASE_IDX', 'mmSDMA2_RLC6_RB_WPTR_HI', - 'mmSDMA2_RLC6_RB_WPTR_HI_BASE_IDX', - 'mmSDMA2_RLC6_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA2_RLC6_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC6_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA2_RLC6_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC6_RB_WPTR_POLL_CNTL', - 'mmSDMA2_RLC6_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA2_RLC6_SKIP_CNTL', 'mmSDMA2_RLC6_SKIP_CNTL_BASE_IDX', - 'mmSDMA2_RLC6_STATUS', 'mmSDMA2_RLC6_STATUS_BASE_IDX', - 'mmSDMA2_RLC6_WATERMARK', 'mmSDMA2_RLC6_WATERMARK_BASE_IDX', - 'mmSDMA2_RLC7_CONTEXT_STATUS', - 'mmSDMA2_RLC7_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA2_RLC7_CSA_ADDR_HI', 'mmSDMA2_RLC7_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC7_CSA_ADDR_LO', 'mmSDMA2_RLC7_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC7_DOORBELL', 'mmSDMA2_RLC7_DOORBELL_BASE_IDX', - 'mmSDMA2_RLC7_DOORBELL_LOG', 'mmSDMA2_RLC7_DOORBELL_LOG_BASE_IDX', - 'mmSDMA2_RLC7_DOORBELL_OFFSET', - 'mmSDMA2_RLC7_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA2_RLC7_DUMMY_REG', - 'mmSDMA2_RLC7_DUMMY_REG_BASE_IDX', 'mmSDMA2_RLC7_IB_BASE_HI', - 'mmSDMA2_RLC7_IB_BASE_HI_BASE_IDX', 'mmSDMA2_RLC7_IB_BASE_LO', - 'mmSDMA2_RLC7_IB_BASE_LO_BASE_IDX', 'mmSDMA2_RLC7_IB_CNTL', - 'mmSDMA2_RLC7_IB_CNTL_BASE_IDX', 'mmSDMA2_RLC7_IB_OFFSET', - 'mmSDMA2_RLC7_IB_OFFSET_BASE_IDX', 'mmSDMA2_RLC7_IB_RPTR', - 'mmSDMA2_RLC7_IB_RPTR_BASE_IDX', 'mmSDMA2_RLC7_IB_SIZE', - 'mmSDMA2_RLC7_IB_SIZE_BASE_IDX', 'mmSDMA2_RLC7_IB_SUB_REMAIN', - 'mmSDMA2_RLC7_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA2_RLC7_MIDCMD_CNTL', - 'mmSDMA2_RLC7_MIDCMD_CNTL_BASE_IDX', 'mmSDMA2_RLC7_MIDCMD_DATA0', - 'mmSDMA2_RLC7_MIDCMD_DATA0_BASE_IDX', 'mmSDMA2_RLC7_MIDCMD_DATA1', - 'mmSDMA2_RLC7_MIDCMD_DATA10', - 'mmSDMA2_RLC7_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA2_RLC7_MIDCMD_DATA1_BASE_IDX', 'mmSDMA2_RLC7_MIDCMD_DATA2', - 'mmSDMA2_RLC7_MIDCMD_DATA2_BASE_IDX', 'mmSDMA2_RLC7_MIDCMD_DATA3', - 'mmSDMA2_RLC7_MIDCMD_DATA3_BASE_IDX', 'mmSDMA2_RLC7_MIDCMD_DATA4', - 'mmSDMA2_RLC7_MIDCMD_DATA4_BASE_IDX', 'mmSDMA2_RLC7_MIDCMD_DATA5', - 'mmSDMA2_RLC7_MIDCMD_DATA5_BASE_IDX', 'mmSDMA2_RLC7_MIDCMD_DATA6', - 'mmSDMA2_RLC7_MIDCMD_DATA6_BASE_IDX', 'mmSDMA2_RLC7_MIDCMD_DATA7', - 'mmSDMA2_RLC7_MIDCMD_DATA7_BASE_IDX', 'mmSDMA2_RLC7_MIDCMD_DATA8', - 'mmSDMA2_RLC7_MIDCMD_DATA8_BASE_IDX', 'mmSDMA2_RLC7_MIDCMD_DATA9', - 'mmSDMA2_RLC7_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA2_RLC7_MINOR_PTR_UPDATE', - 'mmSDMA2_RLC7_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA2_RLC7_PREEMPT', - 'mmSDMA2_RLC7_PREEMPT_BASE_IDX', 'mmSDMA2_RLC7_RB_AQL_CNTL', - 'mmSDMA2_RLC7_RB_AQL_CNTL_BASE_IDX', 'mmSDMA2_RLC7_RB_BASE', - 'mmSDMA2_RLC7_RB_BASE_BASE_IDX', 'mmSDMA2_RLC7_RB_BASE_HI', - 'mmSDMA2_RLC7_RB_BASE_HI_BASE_IDX', 'mmSDMA2_RLC7_RB_CNTL', - 'mmSDMA2_RLC7_RB_CNTL_BASE_IDX', 'mmSDMA2_RLC7_RB_RPTR', - 'mmSDMA2_RLC7_RB_RPTR_ADDR_HI', - 'mmSDMA2_RLC7_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC7_RB_RPTR_ADDR_LO', - 'mmSDMA2_RLC7_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC7_RB_RPTR_BASE_IDX', 'mmSDMA2_RLC7_RB_RPTR_HI', - 'mmSDMA2_RLC7_RB_RPTR_HI_BASE_IDX', 'mmSDMA2_RLC7_RB_WPTR', - 'mmSDMA2_RLC7_RB_WPTR_BASE_IDX', 'mmSDMA2_RLC7_RB_WPTR_HI', - 'mmSDMA2_RLC7_RB_WPTR_HI_BASE_IDX', - 'mmSDMA2_RLC7_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA2_RLC7_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA2_RLC7_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA2_RLC7_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA2_RLC7_RB_WPTR_POLL_CNTL', - 'mmSDMA2_RLC7_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA2_RLC7_SKIP_CNTL', 'mmSDMA2_RLC7_SKIP_CNTL_BASE_IDX', - 'mmSDMA2_RLC7_STATUS', 'mmSDMA2_RLC7_STATUS_BASE_IDX', - 'mmSDMA2_RLC7_WATERMARK', 'mmSDMA2_RLC7_WATERMARK_BASE_IDX', - 'mmSDMA2_SCRATCH_RAM_ADDR', 'mmSDMA2_SCRATCH_RAM_ADDR_BASE_IDX', - 'mmSDMA2_SCRATCH_RAM_DATA', 'mmSDMA2_SCRATCH_RAM_DATA_BASE_IDX', - 'mmSDMA2_SEM_WAIT_FAIL_TIMER_CNTL', - 'mmSDMA2_SEM_WAIT_FAIL_TIMER_CNTL_BASE_IDX', - 'mmSDMA2_STATUS1_REG', 'mmSDMA2_STATUS1_REG_BASE_IDX', - 'mmSDMA2_STATUS2_REG', 'mmSDMA2_STATUS2_REG_BASE_IDX', - 'mmSDMA2_STATUS3_REG', 'mmSDMA2_STATUS3_REG_BASE_IDX', - 'mmSDMA2_STATUS4_REG', 'mmSDMA2_STATUS4_REG_BASE_IDX', - 'mmSDMA2_STATUS5_REG', 'mmSDMA2_STATUS5_REG_BASE_IDX', - 'mmSDMA2_STATUS_REG', 'mmSDMA2_STATUS_REG_BASE_IDX', - 'mmSDMA2_TILING_CONFIG', 'mmSDMA2_TILING_CONFIG_BASE_IDX', - 'mmSDMA2_TIMESTAMP_CNTL', 'mmSDMA2_TIMESTAMP_CNTL_BASE_IDX', - 'mmSDMA2_TLBI_GCR_CNTL', 'mmSDMA2_TLBI_GCR_CNTL_BASE_IDX', - 'mmSDMA2_UCODE_ADDR', 'mmSDMA2_UCODE_ADDR_BASE_IDX', - 'mmSDMA2_UCODE_CHECKSUM', 'mmSDMA2_UCODE_CHECKSUM_BASE_IDX', - 'mmSDMA2_UCODE_DATA', 'mmSDMA2_UCODE_DATA_BASE_IDX', - 'mmSDMA2_UTCL1_CNTL', 'mmSDMA2_UTCL1_CNTL_BASE_IDX', - 'mmSDMA2_UTCL1_INV0', 'mmSDMA2_UTCL1_INV0_BASE_IDX', - 'mmSDMA2_UTCL1_INV1', 'mmSDMA2_UTCL1_INV1_BASE_IDX', - 'mmSDMA2_UTCL1_INV2', 'mmSDMA2_UTCL1_INV2_BASE_IDX', - 'mmSDMA2_UTCL1_PAGE', 'mmSDMA2_UTCL1_PAGE_BASE_IDX', - 'mmSDMA2_UTCL1_RD_STATUS', 'mmSDMA2_UTCL1_RD_STATUS_BASE_IDX', - 'mmSDMA2_UTCL1_RD_XNACK0', 'mmSDMA2_UTCL1_RD_XNACK0_BASE_IDX', - 'mmSDMA2_UTCL1_RD_XNACK1', 'mmSDMA2_UTCL1_RD_XNACK1_BASE_IDX', - 'mmSDMA2_UTCL1_TIMEOUT', 'mmSDMA2_UTCL1_TIMEOUT_BASE_IDX', - 'mmSDMA2_UTCL1_WATERMK', 'mmSDMA2_UTCL1_WATERMK_BASE_IDX', - 'mmSDMA2_UTCL1_WR_STATUS', 'mmSDMA2_UTCL1_WR_STATUS_BASE_IDX', - 'mmSDMA2_UTCL1_WR_XNACK0', 'mmSDMA2_UTCL1_WR_XNACK0_BASE_IDX', - 'mmSDMA2_UTCL1_WR_XNACK1', 'mmSDMA2_UTCL1_WR_XNACK1_BASE_IDX', - 'mmSDMA2_VERSION', 'mmSDMA2_VERSION_BASE_IDX', - 'mmSDMA2_VF_ENABLE', 'mmSDMA2_VF_ENABLE_BASE_IDX', - 'mmSDMA2_VIRT_RESET_REQ', 'mmSDMA2_VIRT_RESET_REQ_BASE_IDX', - 'mmSDMA2_VM_CNTL', 'mmSDMA2_VM_CNTL_BASE_IDX', - 'mmSDMA2_VM_CTX_CNTL', 'mmSDMA2_VM_CTX_CNTL_BASE_IDX', - 'mmSDMA2_VM_CTX_HI', 'mmSDMA2_VM_CTX_HI_BASE_IDX', - 'mmSDMA2_VM_CTX_LO', 'mmSDMA2_VM_CTX_LO_BASE_IDX', - 'mmSDMA3_ACTIVE_FCN_ID', 'mmSDMA3_ACTIVE_FCN_ID_BASE_IDX', - 'mmSDMA3_AQL_STATUS', 'mmSDMA3_AQL_STATUS_BASE_IDX', - 'mmSDMA3_ATOMIC_CNTL', 'mmSDMA3_ATOMIC_CNTL_BASE_IDX', - 'mmSDMA3_ATOMIC_PREOP_HI', 'mmSDMA3_ATOMIC_PREOP_HI_BASE_IDX', - 'mmSDMA3_ATOMIC_PREOP_LO', 'mmSDMA3_ATOMIC_PREOP_LO_BASE_IDX', - 'mmSDMA3_BA_THRESHOLD', 'mmSDMA3_BA_THRESHOLD_BASE_IDX', - 'mmSDMA3_CHICKEN_BITS', 'mmSDMA3_CHICKEN_BITS_2', - 'mmSDMA3_CHICKEN_BITS_2_BASE_IDX', - 'mmSDMA3_CHICKEN_BITS_BASE_IDX', 'mmSDMA3_CLK_CTRL', - 'mmSDMA3_CLK_CTRL_BASE_IDX', 'mmSDMA3_CLOCK_GATING_REG', - 'mmSDMA3_CLOCK_GATING_REG_BASE_IDX', 'mmSDMA3_CNTL', - 'mmSDMA3_CNTL_BASE_IDX', 'mmSDMA3_CONTEXT_REG_TYPE0', - 'mmSDMA3_CONTEXT_REG_TYPE0_BASE_IDX', 'mmSDMA3_CONTEXT_REG_TYPE1', - 'mmSDMA3_CONTEXT_REG_TYPE1_BASE_IDX', 'mmSDMA3_CONTEXT_REG_TYPE2', - 'mmSDMA3_CONTEXT_REG_TYPE2_BASE_IDX', 'mmSDMA3_CONTEXT_REG_TYPE3', - 'mmSDMA3_CONTEXT_REG_TYPE3_BASE_IDX', 'mmSDMA3_CRD_CNTL', - 'mmSDMA3_CRD_CNTL_BASE_IDX', 'mmSDMA3_DEC_START', - 'mmSDMA3_DEC_START_BASE_IDX', 'mmSDMA3_EA_DBIT_ADDR_DATA', - 'mmSDMA3_EA_DBIT_ADDR_DATA_BASE_IDX', - 'mmSDMA3_EA_DBIT_ADDR_INDEX', - 'mmSDMA3_EA_DBIT_ADDR_INDEX_BASE_IDX', 'mmSDMA3_EDC_CONFIG', - 'mmSDMA3_EDC_CONFIG_BASE_IDX', 'mmSDMA3_EDC_COUNTER', - 'mmSDMA3_EDC_COUNTER_BASE_IDX', 'mmSDMA3_EDC_COUNTER_CLEAR', - 'mmSDMA3_EDC_COUNTER_CLEAR_BASE_IDX', 'mmSDMA3_ERROR_LOG', - 'mmSDMA3_ERROR_LOG_BASE_IDX', 'mmSDMA3_F32_CNTL', - 'mmSDMA3_F32_CNTL_BASE_IDX', 'mmSDMA3_F32_COUNTER', - 'mmSDMA3_F32_COUNTER_BASE_IDX', 'mmSDMA3_FREEZE', - 'mmSDMA3_FREEZE_BASE_IDX', 'mmSDMA3_GB_ADDR_CONFIG', - 'mmSDMA3_GB_ADDR_CONFIG_BASE_IDX', 'mmSDMA3_GB_ADDR_CONFIG_READ', - 'mmSDMA3_GB_ADDR_CONFIG_READ_BASE_IDX', - 'mmSDMA3_GFX_CONTEXT_CNTL', 'mmSDMA3_GFX_CONTEXT_CNTL_BASE_IDX', - 'mmSDMA3_GFX_CONTEXT_STATUS', - 'mmSDMA3_GFX_CONTEXT_STATUS_BASE_IDX', 'mmSDMA3_GFX_CSA_ADDR_HI', - 'mmSDMA3_GFX_CSA_ADDR_HI_BASE_IDX', 'mmSDMA3_GFX_CSA_ADDR_LO', - 'mmSDMA3_GFX_CSA_ADDR_LO_BASE_IDX', 'mmSDMA3_GFX_DOORBELL', - 'mmSDMA3_GFX_DOORBELL_BASE_IDX', 'mmSDMA3_GFX_DOORBELL_LOG', - 'mmSDMA3_GFX_DOORBELL_LOG_BASE_IDX', - 'mmSDMA3_GFX_DOORBELL_OFFSET', - 'mmSDMA3_GFX_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA3_GFX_DUMMY_REG', - 'mmSDMA3_GFX_DUMMY_REG_BASE_IDX', 'mmSDMA3_GFX_IB_BASE_HI', - 'mmSDMA3_GFX_IB_BASE_HI_BASE_IDX', 'mmSDMA3_GFX_IB_BASE_LO', - 'mmSDMA3_GFX_IB_BASE_LO_BASE_IDX', 'mmSDMA3_GFX_IB_CNTL', - 'mmSDMA3_GFX_IB_CNTL_BASE_IDX', 'mmSDMA3_GFX_IB_OFFSET', - 'mmSDMA3_GFX_IB_OFFSET_BASE_IDX', 'mmSDMA3_GFX_IB_RPTR', - 'mmSDMA3_GFX_IB_RPTR_BASE_IDX', 'mmSDMA3_GFX_IB_SIZE', - 'mmSDMA3_GFX_IB_SIZE_BASE_IDX', 'mmSDMA3_GFX_IB_SUB_REMAIN', - 'mmSDMA3_GFX_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA3_GFX_MIDCMD_CNTL', - 'mmSDMA3_GFX_MIDCMD_CNTL_BASE_IDX', 'mmSDMA3_GFX_MIDCMD_DATA0', - 'mmSDMA3_GFX_MIDCMD_DATA0_BASE_IDX', 'mmSDMA3_GFX_MIDCMD_DATA1', - 'mmSDMA3_GFX_MIDCMD_DATA10', 'mmSDMA3_GFX_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA3_GFX_MIDCMD_DATA1_BASE_IDX', 'mmSDMA3_GFX_MIDCMD_DATA2', - 'mmSDMA3_GFX_MIDCMD_DATA2_BASE_IDX', 'mmSDMA3_GFX_MIDCMD_DATA3', - 'mmSDMA3_GFX_MIDCMD_DATA3_BASE_IDX', 'mmSDMA3_GFX_MIDCMD_DATA4', - 'mmSDMA3_GFX_MIDCMD_DATA4_BASE_IDX', 'mmSDMA3_GFX_MIDCMD_DATA5', - 'mmSDMA3_GFX_MIDCMD_DATA5_BASE_IDX', 'mmSDMA3_GFX_MIDCMD_DATA6', - 'mmSDMA3_GFX_MIDCMD_DATA6_BASE_IDX', 'mmSDMA3_GFX_MIDCMD_DATA7', - 'mmSDMA3_GFX_MIDCMD_DATA7_BASE_IDX', 'mmSDMA3_GFX_MIDCMD_DATA8', - 'mmSDMA3_GFX_MIDCMD_DATA8_BASE_IDX', 'mmSDMA3_GFX_MIDCMD_DATA9', - 'mmSDMA3_GFX_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA3_GFX_MINOR_PTR_UPDATE', - 'mmSDMA3_GFX_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA3_GFX_PREEMPT', - 'mmSDMA3_GFX_PREEMPT_BASE_IDX', 'mmSDMA3_GFX_RB_AQL_CNTL', - 'mmSDMA3_GFX_RB_AQL_CNTL_BASE_IDX', 'mmSDMA3_GFX_RB_BASE', - 'mmSDMA3_GFX_RB_BASE_BASE_IDX', 'mmSDMA3_GFX_RB_BASE_HI', - 'mmSDMA3_GFX_RB_BASE_HI_BASE_IDX', 'mmSDMA3_GFX_RB_CNTL', - 'mmSDMA3_GFX_RB_CNTL_BASE_IDX', 'mmSDMA3_GFX_RB_RPTR', - 'mmSDMA3_GFX_RB_RPTR_ADDR_HI', - 'mmSDMA3_GFX_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA3_GFX_RB_RPTR_ADDR_LO', - 'mmSDMA3_GFX_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA3_GFX_RB_RPTR_BASE_IDX', 'mmSDMA3_GFX_RB_RPTR_HI', - 'mmSDMA3_GFX_RB_RPTR_HI_BASE_IDX', 'mmSDMA3_GFX_RB_WPTR', - 'mmSDMA3_GFX_RB_WPTR_BASE_IDX', 'mmSDMA3_GFX_RB_WPTR_HI', - 'mmSDMA3_GFX_RB_WPTR_HI_BASE_IDX', - 'mmSDMA3_GFX_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA3_GFX_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA3_GFX_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA3_GFX_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA3_GFX_RB_WPTR_POLL_CNTL', - 'mmSDMA3_GFX_RB_WPTR_POLL_CNTL_BASE_IDX', 'mmSDMA3_GFX_SKIP_CNTL', - 'mmSDMA3_GFX_SKIP_CNTL_BASE_IDX', 'mmSDMA3_GFX_STATUS', - 'mmSDMA3_GFX_STATUS_BASE_IDX', 'mmSDMA3_GFX_WATERMARK', - 'mmSDMA3_GFX_WATERMARK_BASE_IDX', 'mmSDMA3_GLOBAL_TIMESTAMP_HI', - 'mmSDMA3_GLOBAL_TIMESTAMP_HI_BASE_IDX', - 'mmSDMA3_GLOBAL_TIMESTAMP_LO', - 'mmSDMA3_GLOBAL_TIMESTAMP_LO_BASE_IDX', 'mmSDMA3_HBM_PAGE_CONFIG', - 'mmSDMA3_HBM_PAGE_CONFIG_BASE_IDX', 'mmSDMA3_HOLE_ADDR_HI', - 'mmSDMA3_HOLE_ADDR_HI_BASE_IDX', 'mmSDMA3_HOLE_ADDR_LO', - 'mmSDMA3_HOLE_ADDR_LO_BASE_IDX', 'mmSDMA3_IB_OFFSET_FETCH', - 'mmSDMA3_IB_OFFSET_FETCH_BASE_IDX', 'mmSDMA3_ID', - 'mmSDMA3_ID_BASE_IDX', 'mmSDMA3_INT_STATUS', - 'mmSDMA3_INT_STATUS_BASE_IDX', 'mmSDMA3_PAGE_CONTEXT_STATUS', - 'mmSDMA3_PAGE_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA3_PAGE_CSA_ADDR_HI', 'mmSDMA3_PAGE_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA3_PAGE_CSA_ADDR_LO', 'mmSDMA3_PAGE_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA3_PAGE_DOORBELL', 'mmSDMA3_PAGE_DOORBELL_BASE_IDX', - 'mmSDMA3_PAGE_DOORBELL_LOG', 'mmSDMA3_PAGE_DOORBELL_LOG_BASE_IDX', - 'mmSDMA3_PAGE_DOORBELL_OFFSET', - 'mmSDMA3_PAGE_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA3_PAGE_DUMMY_REG', - 'mmSDMA3_PAGE_DUMMY_REG_BASE_IDX', 'mmSDMA3_PAGE_IB_BASE_HI', - 'mmSDMA3_PAGE_IB_BASE_HI_BASE_IDX', 'mmSDMA3_PAGE_IB_BASE_LO', - 'mmSDMA3_PAGE_IB_BASE_LO_BASE_IDX', 'mmSDMA3_PAGE_IB_CNTL', - 'mmSDMA3_PAGE_IB_CNTL_BASE_IDX', 'mmSDMA3_PAGE_IB_OFFSET', - 'mmSDMA3_PAGE_IB_OFFSET_BASE_IDX', 'mmSDMA3_PAGE_IB_RPTR', - 'mmSDMA3_PAGE_IB_RPTR_BASE_IDX', 'mmSDMA3_PAGE_IB_SIZE', - 'mmSDMA3_PAGE_IB_SIZE_BASE_IDX', 'mmSDMA3_PAGE_IB_SUB_REMAIN', - 'mmSDMA3_PAGE_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA3_PAGE_MIDCMD_CNTL', - 'mmSDMA3_PAGE_MIDCMD_CNTL_BASE_IDX', 'mmSDMA3_PAGE_MIDCMD_DATA0', - 'mmSDMA3_PAGE_MIDCMD_DATA0_BASE_IDX', 'mmSDMA3_PAGE_MIDCMD_DATA1', - 'mmSDMA3_PAGE_MIDCMD_DATA10', - 'mmSDMA3_PAGE_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA3_PAGE_MIDCMD_DATA1_BASE_IDX', 'mmSDMA3_PAGE_MIDCMD_DATA2', - 'mmSDMA3_PAGE_MIDCMD_DATA2_BASE_IDX', 'mmSDMA3_PAGE_MIDCMD_DATA3', - 'mmSDMA3_PAGE_MIDCMD_DATA3_BASE_IDX', 'mmSDMA3_PAGE_MIDCMD_DATA4', - 'mmSDMA3_PAGE_MIDCMD_DATA4_BASE_IDX', 'mmSDMA3_PAGE_MIDCMD_DATA5', - 'mmSDMA3_PAGE_MIDCMD_DATA5_BASE_IDX', 'mmSDMA3_PAGE_MIDCMD_DATA6', - 'mmSDMA3_PAGE_MIDCMD_DATA6_BASE_IDX', 'mmSDMA3_PAGE_MIDCMD_DATA7', - 'mmSDMA3_PAGE_MIDCMD_DATA7_BASE_IDX', 'mmSDMA3_PAGE_MIDCMD_DATA8', - 'mmSDMA3_PAGE_MIDCMD_DATA8_BASE_IDX', 'mmSDMA3_PAGE_MIDCMD_DATA9', - 'mmSDMA3_PAGE_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA3_PAGE_MINOR_PTR_UPDATE', - 'mmSDMA3_PAGE_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA3_PAGE_PREEMPT', - 'mmSDMA3_PAGE_PREEMPT_BASE_IDX', 'mmSDMA3_PAGE_RB_AQL_CNTL', - 'mmSDMA3_PAGE_RB_AQL_CNTL_BASE_IDX', 'mmSDMA3_PAGE_RB_BASE', - 'mmSDMA3_PAGE_RB_BASE_BASE_IDX', 'mmSDMA3_PAGE_RB_BASE_HI', - 'mmSDMA3_PAGE_RB_BASE_HI_BASE_IDX', 'mmSDMA3_PAGE_RB_CNTL', - 'mmSDMA3_PAGE_RB_CNTL_BASE_IDX', 'mmSDMA3_PAGE_RB_RPTR', - 'mmSDMA3_PAGE_RB_RPTR_ADDR_HI', - 'mmSDMA3_PAGE_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA3_PAGE_RB_RPTR_ADDR_LO', - 'mmSDMA3_PAGE_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA3_PAGE_RB_RPTR_BASE_IDX', 'mmSDMA3_PAGE_RB_RPTR_HI', - 'mmSDMA3_PAGE_RB_RPTR_HI_BASE_IDX', 'mmSDMA3_PAGE_RB_WPTR', - 'mmSDMA3_PAGE_RB_WPTR_BASE_IDX', 'mmSDMA3_PAGE_RB_WPTR_HI', - 'mmSDMA3_PAGE_RB_WPTR_HI_BASE_IDX', - 'mmSDMA3_PAGE_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA3_PAGE_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA3_PAGE_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA3_PAGE_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA3_PAGE_RB_WPTR_POLL_CNTL', - 'mmSDMA3_PAGE_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA3_PAGE_SKIP_CNTL', 'mmSDMA3_PAGE_SKIP_CNTL_BASE_IDX', - 'mmSDMA3_PAGE_STATUS', 'mmSDMA3_PAGE_STATUS_BASE_IDX', - 'mmSDMA3_PAGE_WATERMARK', 'mmSDMA3_PAGE_WATERMARK_BASE_IDX', - 'mmSDMA3_PERFCNT_MISC_CNTL', 'mmSDMA3_PERFCNT_MISC_CNTL_BASE_IDX', - 'mmSDMA3_PERFCNT_PERFCOUNTER0_CFG', - 'mmSDMA3_PERFCNT_PERFCOUNTER0_CFG_BASE_IDX', - 'mmSDMA3_PERFCNT_PERFCOUNTER1_CFG', - 'mmSDMA3_PERFCNT_PERFCOUNTER1_CFG_BASE_IDX', - 'mmSDMA3_PERFCNT_PERFCOUNTER_HI', - 'mmSDMA3_PERFCNT_PERFCOUNTER_HI_BASE_IDX', - 'mmSDMA3_PERFCNT_PERFCOUNTER_LO', - 'mmSDMA3_PERFCNT_PERFCOUNTER_LO_BASE_IDX', - 'mmSDMA3_PERFCNT_PERFCOUNTER_RSLT_CNTL', - 'mmSDMA3_PERFCNT_PERFCOUNTER_RSLT_CNTL_BASE_IDX', - 'mmSDMA3_PERFCOUNTER0_HI', 'mmSDMA3_PERFCOUNTER0_HI_BASE_IDX', - 'mmSDMA3_PERFCOUNTER0_LO', 'mmSDMA3_PERFCOUNTER0_LO_BASE_IDX', - 'mmSDMA3_PERFCOUNTER0_SELECT', 'mmSDMA3_PERFCOUNTER0_SELECT1', - 'mmSDMA3_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmSDMA3_PERFCOUNTER0_SELECT_BASE_IDX', 'mmSDMA3_PERFCOUNTER1_HI', - 'mmSDMA3_PERFCOUNTER1_HI_BASE_IDX', 'mmSDMA3_PERFCOUNTER1_LO', - 'mmSDMA3_PERFCOUNTER1_LO_BASE_IDX', 'mmSDMA3_PERFCOUNTER1_SELECT', - 'mmSDMA3_PERFCOUNTER1_SELECT1', - 'mmSDMA3_PERFCOUNTER1_SELECT1_BASE_IDX', - 'mmSDMA3_PERFCOUNTER1_SELECT_BASE_IDX', 'mmSDMA3_PG_CNTL', - 'mmSDMA3_PG_CNTL_BASE_IDX', 'mmSDMA3_PG_CTX_CNTL', - 'mmSDMA3_PG_CTX_CNTL_BASE_IDX', 'mmSDMA3_PG_CTX_HI', - 'mmSDMA3_PG_CTX_HI_BASE_IDX', 'mmSDMA3_PG_CTX_LO', - 'mmSDMA3_PG_CTX_LO_BASE_IDX', 'mmSDMA3_PHASE0_QUANTUM', - 'mmSDMA3_PHASE0_QUANTUM_BASE_IDX', 'mmSDMA3_PHASE1_QUANTUM', - 'mmSDMA3_PHASE1_QUANTUM_BASE_IDX', 'mmSDMA3_PHASE2_QUANTUM', - 'mmSDMA3_PHASE2_QUANTUM_BASE_IDX', 'mmSDMA3_PHYSICAL_ADDR_HI', - 'mmSDMA3_PHYSICAL_ADDR_HI_BASE_IDX', 'mmSDMA3_PHYSICAL_ADDR_LO', - 'mmSDMA3_PHYSICAL_ADDR_LO_BASE_IDX', 'mmSDMA3_POWER_CNTL', - 'mmSDMA3_POWER_CNTL_BASE_IDX', 'mmSDMA3_PROGRAM', - 'mmSDMA3_PROGRAM_BASE_IDX', 'mmSDMA3_PUB_DUMMY_REG0', - 'mmSDMA3_PUB_DUMMY_REG0_BASE_IDX', 'mmSDMA3_PUB_DUMMY_REG1', - 'mmSDMA3_PUB_DUMMY_REG1_BASE_IDX', 'mmSDMA3_PUB_DUMMY_REG2', - 'mmSDMA3_PUB_DUMMY_REG2_BASE_IDX', 'mmSDMA3_PUB_DUMMY_REG3', - 'mmSDMA3_PUB_DUMMY_REG3_BASE_IDX', 'mmSDMA3_PUB_REG_TYPE0', - 'mmSDMA3_PUB_REG_TYPE0_BASE_IDX', 'mmSDMA3_PUB_REG_TYPE1', - 'mmSDMA3_PUB_REG_TYPE1_BASE_IDX', 'mmSDMA3_PUB_REG_TYPE2', - 'mmSDMA3_PUB_REG_TYPE2_BASE_IDX', 'mmSDMA3_PUB_REG_TYPE3', - 'mmSDMA3_PUB_REG_TYPE3_BASE_IDX', 'mmSDMA3_QUEUE_RESET_REQ', - 'mmSDMA3_QUEUE_RESET_REQ_BASE_IDX', 'mmSDMA3_RB_RPTR_FETCH', - 'mmSDMA3_RB_RPTR_FETCH_BASE_IDX', 'mmSDMA3_RB_RPTR_FETCH_HI', - 'mmSDMA3_RB_RPTR_FETCH_HI_BASE_IDX', 'mmSDMA3_RD_BURST_CNTL', - 'mmSDMA3_RD_BURST_CNTL_BASE_IDX', 'mmSDMA3_RELAX_ORDERING_LUT', - 'mmSDMA3_RELAX_ORDERING_LUT_BASE_IDX', - 'mmSDMA3_RLC0_CONTEXT_STATUS', - 'mmSDMA3_RLC0_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA3_RLC0_CSA_ADDR_HI', 'mmSDMA3_RLC0_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC0_CSA_ADDR_LO', 'mmSDMA3_RLC0_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC0_DOORBELL', 'mmSDMA3_RLC0_DOORBELL_BASE_IDX', - 'mmSDMA3_RLC0_DOORBELL_LOG', 'mmSDMA3_RLC0_DOORBELL_LOG_BASE_IDX', - 'mmSDMA3_RLC0_DOORBELL_OFFSET', - 'mmSDMA3_RLC0_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA3_RLC0_DUMMY_REG', - 'mmSDMA3_RLC0_DUMMY_REG_BASE_IDX', 'mmSDMA3_RLC0_IB_BASE_HI', - 'mmSDMA3_RLC0_IB_BASE_HI_BASE_IDX', 'mmSDMA3_RLC0_IB_BASE_LO', - 'mmSDMA3_RLC0_IB_BASE_LO_BASE_IDX', 'mmSDMA3_RLC0_IB_CNTL', - 'mmSDMA3_RLC0_IB_CNTL_BASE_IDX', 'mmSDMA3_RLC0_IB_OFFSET', - 'mmSDMA3_RLC0_IB_OFFSET_BASE_IDX', 'mmSDMA3_RLC0_IB_RPTR', - 'mmSDMA3_RLC0_IB_RPTR_BASE_IDX', 'mmSDMA3_RLC0_IB_SIZE', - 'mmSDMA3_RLC0_IB_SIZE_BASE_IDX', 'mmSDMA3_RLC0_IB_SUB_REMAIN', - 'mmSDMA3_RLC0_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA3_RLC0_MIDCMD_CNTL', - 'mmSDMA3_RLC0_MIDCMD_CNTL_BASE_IDX', 'mmSDMA3_RLC0_MIDCMD_DATA0', - 'mmSDMA3_RLC0_MIDCMD_DATA0_BASE_IDX', 'mmSDMA3_RLC0_MIDCMD_DATA1', - 'mmSDMA3_RLC0_MIDCMD_DATA10', - 'mmSDMA3_RLC0_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA3_RLC0_MIDCMD_DATA1_BASE_IDX', 'mmSDMA3_RLC0_MIDCMD_DATA2', - 'mmSDMA3_RLC0_MIDCMD_DATA2_BASE_IDX', 'mmSDMA3_RLC0_MIDCMD_DATA3', - 'mmSDMA3_RLC0_MIDCMD_DATA3_BASE_IDX', 'mmSDMA3_RLC0_MIDCMD_DATA4', - 'mmSDMA3_RLC0_MIDCMD_DATA4_BASE_IDX', 'mmSDMA3_RLC0_MIDCMD_DATA5', - 'mmSDMA3_RLC0_MIDCMD_DATA5_BASE_IDX', 'mmSDMA3_RLC0_MIDCMD_DATA6', - 'mmSDMA3_RLC0_MIDCMD_DATA6_BASE_IDX', 'mmSDMA3_RLC0_MIDCMD_DATA7', - 'mmSDMA3_RLC0_MIDCMD_DATA7_BASE_IDX', 'mmSDMA3_RLC0_MIDCMD_DATA8', - 'mmSDMA3_RLC0_MIDCMD_DATA8_BASE_IDX', 'mmSDMA3_RLC0_MIDCMD_DATA9', - 'mmSDMA3_RLC0_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA3_RLC0_MINOR_PTR_UPDATE', - 'mmSDMA3_RLC0_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA3_RLC0_PREEMPT', - 'mmSDMA3_RLC0_PREEMPT_BASE_IDX', 'mmSDMA3_RLC0_RB_AQL_CNTL', - 'mmSDMA3_RLC0_RB_AQL_CNTL_BASE_IDX', 'mmSDMA3_RLC0_RB_BASE', - 'mmSDMA3_RLC0_RB_BASE_BASE_IDX', 'mmSDMA3_RLC0_RB_BASE_HI', - 'mmSDMA3_RLC0_RB_BASE_HI_BASE_IDX', 'mmSDMA3_RLC0_RB_CNTL', - 'mmSDMA3_RLC0_RB_CNTL_BASE_IDX', 'mmSDMA3_RLC0_RB_RPTR', - 'mmSDMA3_RLC0_RB_RPTR_ADDR_HI', - 'mmSDMA3_RLC0_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC0_RB_RPTR_ADDR_LO', - 'mmSDMA3_RLC0_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC0_RB_RPTR_BASE_IDX', 'mmSDMA3_RLC0_RB_RPTR_HI', - 'mmSDMA3_RLC0_RB_RPTR_HI_BASE_IDX', 'mmSDMA3_RLC0_RB_WPTR', - 'mmSDMA3_RLC0_RB_WPTR_BASE_IDX', 'mmSDMA3_RLC0_RB_WPTR_HI', - 'mmSDMA3_RLC0_RB_WPTR_HI_BASE_IDX', - 'mmSDMA3_RLC0_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA3_RLC0_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC0_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA3_RLC0_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC0_RB_WPTR_POLL_CNTL', - 'mmSDMA3_RLC0_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA3_RLC0_SKIP_CNTL', 'mmSDMA3_RLC0_SKIP_CNTL_BASE_IDX', - 'mmSDMA3_RLC0_STATUS', 'mmSDMA3_RLC0_STATUS_BASE_IDX', - 'mmSDMA3_RLC0_WATERMARK', 'mmSDMA3_RLC0_WATERMARK_BASE_IDX', - 'mmSDMA3_RLC1_CONTEXT_STATUS', - 'mmSDMA3_RLC1_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA3_RLC1_CSA_ADDR_HI', 'mmSDMA3_RLC1_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC1_CSA_ADDR_LO', 'mmSDMA3_RLC1_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC1_DOORBELL', 'mmSDMA3_RLC1_DOORBELL_BASE_IDX', - 'mmSDMA3_RLC1_DOORBELL_LOG', 'mmSDMA3_RLC1_DOORBELL_LOG_BASE_IDX', - 'mmSDMA3_RLC1_DOORBELL_OFFSET', - 'mmSDMA3_RLC1_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA3_RLC1_DUMMY_REG', - 'mmSDMA3_RLC1_DUMMY_REG_BASE_IDX', 'mmSDMA3_RLC1_IB_BASE_HI', - 'mmSDMA3_RLC1_IB_BASE_HI_BASE_IDX', 'mmSDMA3_RLC1_IB_BASE_LO', - 'mmSDMA3_RLC1_IB_BASE_LO_BASE_IDX', 'mmSDMA3_RLC1_IB_CNTL', - 'mmSDMA3_RLC1_IB_CNTL_BASE_IDX', 'mmSDMA3_RLC1_IB_OFFSET', - 'mmSDMA3_RLC1_IB_OFFSET_BASE_IDX', 'mmSDMA3_RLC1_IB_RPTR', - 'mmSDMA3_RLC1_IB_RPTR_BASE_IDX', 'mmSDMA3_RLC1_IB_SIZE', - 'mmSDMA3_RLC1_IB_SIZE_BASE_IDX', 'mmSDMA3_RLC1_IB_SUB_REMAIN', - 'mmSDMA3_RLC1_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA3_RLC1_MIDCMD_CNTL', - 'mmSDMA3_RLC1_MIDCMD_CNTL_BASE_IDX', 'mmSDMA3_RLC1_MIDCMD_DATA0', - 'mmSDMA3_RLC1_MIDCMD_DATA0_BASE_IDX', 'mmSDMA3_RLC1_MIDCMD_DATA1', - 'mmSDMA3_RLC1_MIDCMD_DATA10', - 'mmSDMA3_RLC1_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA3_RLC1_MIDCMD_DATA1_BASE_IDX', 'mmSDMA3_RLC1_MIDCMD_DATA2', - 'mmSDMA3_RLC1_MIDCMD_DATA2_BASE_IDX', 'mmSDMA3_RLC1_MIDCMD_DATA3', - 'mmSDMA3_RLC1_MIDCMD_DATA3_BASE_IDX', 'mmSDMA3_RLC1_MIDCMD_DATA4', - 'mmSDMA3_RLC1_MIDCMD_DATA4_BASE_IDX', 'mmSDMA3_RLC1_MIDCMD_DATA5', - 'mmSDMA3_RLC1_MIDCMD_DATA5_BASE_IDX', 'mmSDMA3_RLC1_MIDCMD_DATA6', - 'mmSDMA3_RLC1_MIDCMD_DATA6_BASE_IDX', 'mmSDMA3_RLC1_MIDCMD_DATA7', - 'mmSDMA3_RLC1_MIDCMD_DATA7_BASE_IDX', 'mmSDMA3_RLC1_MIDCMD_DATA8', - 'mmSDMA3_RLC1_MIDCMD_DATA8_BASE_IDX', 'mmSDMA3_RLC1_MIDCMD_DATA9', - 'mmSDMA3_RLC1_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA3_RLC1_MINOR_PTR_UPDATE', - 'mmSDMA3_RLC1_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA3_RLC1_PREEMPT', - 'mmSDMA3_RLC1_PREEMPT_BASE_IDX', 'mmSDMA3_RLC1_RB_AQL_CNTL', - 'mmSDMA3_RLC1_RB_AQL_CNTL_BASE_IDX', 'mmSDMA3_RLC1_RB_BASE', - 'mmSDMA3_RLC1_RB_BASE_BASE_IDX', 'mmSDMA3_RLC1_RB_BASE_HI', - 'mmSDMA3_RLC1_RB_BASE_HI_BASE_IDX', 'mmSDMA3_RLC1_RB_CNTL', - 'mmSDMA3_RLC1_RB_CNTL_BASE_IDX', 'mmSDMA3_RLC1_RB_RPTR', - 'mmSDMA3_RLC1_RB_RPTR_ADDR_HI', - 'mmSDMA3_RLC1_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC1_RB_RPTR_ADDR_LO', - 'mmSDMA3_RLC1_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC1_RB_RPTR_BASE_IDX', 'mmSDMA3_RLC1_RB_RPTR_HI', - 'mmSDMA3_RLC1_RB_RPTR_HI_BASE_IDX', 'mmSDMA3_RLC1_RB_WPTR', - 'mmSDMA3_RLC1_RB_WPTR_BASE_IDX', 'mmSDMA3_RLC1_RB_WPTR_HI', - 'mmSDMA3_RLC1_RB_WPTR_HI_BASE_IDX', - 'mmSDMA3_RLC1_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA3_RLC1_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC1_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA3_RLC1_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC1_RB_WPTR_POLL_CNTL', - 'mmSDMA3_RLC1_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA3_RLC1_SKIP_CNTL', 'mmSDMA3_RLC1_SKIP_CNTL_BASE_IDX', - 'mmSDMA3_RLC1_STATUS', 'mmSDMA3_RLC1_STATUS_BASE_IDX', - 'mmSDMA3_RLC1_WATERMARK', 'mmSDMA3_RLC1_WATERMARK_BASE_IDX', - 'mmSDMA3_RLC2_CONTEXT_STATUS', - 'mmSDMA3_RLC2_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA3_RLC2_CSA_ADDR_HI', 'mmSDMA3_RLC2_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC2_CSA_ADDR_LO', 'mmSDMA3_RLC2_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC2_DOORBELL', 'mmSDMA3_RLC2_DOORBELL_BASE_IDX', - 'mmSDMA3_RLC2_DOORBELL_LOG', 'mmSDMA3_RLC2_DOORBELL_LOG_BASE_IDX', - 'mmSDMA3_RLC2_DOORBELL_OFFSET', - 'mmSDMA3_RLC2_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA3_RLC2_DUMMY_REG', - 'mmSDMA3_RLC2_DUMMY_REG_BASE_IDX', 'mmSDMA3_RLC2_IB_BASE_HI', - 'mmSDMA3_RLC2_IB_BASE_HI_BASE_IDX', 'mmSDMA3_RLC2_IB_BASE_LO', - 'mmSDMA3_RLC2_IB_BASE_LO_BASE_IDX', 'mmSDMA3_RLC2_IB_CNTL', - 'mmSDMA3_RLC2_IB_CNTL_BASE_IDX', 'mmSDMA3_RLC2_IB_OFFSET', - 'mmSDMA3_RLC2_IB_OFFSET_BASE_IDX', 'mmSDMA3_RLC2_IB_RPTR', - 'mmSDMA3_RLC2_IB_RPTR_BASE_IDX', 'mmSDMA3_RLC2_IB_SIZE', - 'mmSDMA3_RLC2_IB_SIZE_BASE_IDX', 'mmSDMA3_RLC2_IB_SUB_REMAIN', - 'mmSDMA3_RLC2_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA3_RLC2_MIDCMD_CNTL', - 'mmSDMA3_RLC2_MIDCMD_CNTL_BASE_IDX', 'mmSDMA3_RLC2_MIDCMD_DATA0', - 'mmSDMA3_RLC2_MIDCMD_DATA0_BASE_IDX', 'mmSDMA3_RLC2_MIDCMD_DATA1', - 'mmSDMA3_RLC2_MIDCMD_DATA10', - 'mmSDMA3_RLC2_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA3_RLC2_MIDCMD_DATA1_BASE_IDX', 'mmSDMA3_RLC2_MIDCMD_DATA2', - 'mmSDMA3_RLC2_MIDCMD_DATA2_BASE_IDX', 'mmSDMA3_RLC2_MIDCMD_DATA3', - 'mmSDMA3_RLC2_MIDCMD_DATA3_BASE_IDX', 'mmSDMA3_RLC2_MIDCMD_DATA4', - 'mmSDMA3_RLC2_MIDCMD_DATA4_BASE_IDX', 'mmSDMA3_RLC2_MIDCMD_DATA5', - 'mmSDMA3_RLC2_MIDCMD_DATA5_BASE_IDX', 'mmSDMA3_RLC2_MIDCMD_DATA6', - 'mmSDMA3_RLC2_MIDCMD_DATA6_BASE_IDX', 'mmSDMA3_RLC2_MIDCMD_DATA7', - 'mmSDMA3_RLC2_MIDCMD_DATA7_BASE_IDX', 'mmSDMA3_RLC2_MIDCMD_DATA8', - 'mmSDMA3_RLC2_MIDCMD_DATA8_BASE_IDX', 'mmSDMA3_RLC2_MIDCMD_DATA9', - 'mmSDMA3_RLC2_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA3_RLC2_MINOR_PTR_UPDATE', - 'mmSDMA3_RLC2_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA3_RLC2_PREEMPT', - 'mmSDMA3_RLC2_PREEMPT_BASE_IDX', 'mmSDMA3_RLC2_RB_AQL_CNTL', - 'mmSDMA3_RLC2_RB_AQL_CNTL_BASE_IDX', 'mmSDMA3_RLC2_RB_BASE', - 'mmSDMA3_RLC2_RB_BASE_BASE_IDX', 'mmSDMA3_RLC2_RB_BASE_HI', - 'mmSDMA3_RLC2_RB_BASE_HI_BASE_IDX', 'mmSDMA3_RLC2_RB_CNTL', - 'mmSDMA3_RLC2_RB_CNTL_BASE_IDX', 'mmSDMA3_RLC2_RB_RPTR', - 'mmSDMA3_RLC2_RB_RPTR_ADDR_HI', - 'mmSDMA3_RLC2_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC2_RB_RPTR_ADDR_LO', - 'mmSDMA3_RLC2_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC2_RB_RPTR_BASE_IDX', 'mmSDMA3_RLC2_RB_RPTR_HI', - 'mmSDMA3_RLC2_RB_RPTR_HI_BASE_IDX', 'mmSDMA3_RLC2_RB_WPTR', - 'mmSDMA3_RLC2_RB_WPTR_BASE_IDX', 'mmSDMA3_RLC2_RB_WPTR_HI', - 'mmSDMA3_RLC2_RB_WPTR_HI_BASE_IDX', - 'mmSDMA3_RLC2_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA3_RLC2_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC2_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA3_RLC2_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC2_RB_WPTR_POLL_CNTL', - 'mmSDMA3_RLC2_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA3_RLC2_SKIP_CNTL', 'mmSDMA3_RLC2_SKIP_CNTL_BASE_IDX', - 'mmSDMA3_RLC2_STATUS', 'mmSDMA3_RLC2_STATUS_BASE_IDX', - 'mmSDMA3_RLC2_WATERMARK', 'mmSDMA3_RLC2_WATERMARK_BASE_IDX', - 'mmSDMA3_RLC3_CONTEXT_STATUS', - 'mmSDMA3_RLC3_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA3_RLC3_CSA_ADDR_HI', 'mmSDMA3_RLC3_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC3_CSA_ADDR_LO', 'mmSDMA3_RLC3_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC3_DOORBELL', 'mmSDMA3_RLC3_DOORBELL_BASE_IDX', - 'mmSDMA3_RLC3_DOORBELL_LOG', 'mmSDMA3_RLC3_DOORBELL_LOG_BASE_IDX', - 'mmSDMA3_RLC3_DOORBELL_OFFSET', - 'mmSDMA3_RLC3_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA3_RLC3_DUMMY_REG', - 'mmSDMA3_RLC3_DUMMY_REG_BASE_IDX', 'mmSDMA3_RLC3_IB_BASE_HI', - 'mmSDMA3_RLC3_IB_BASE_HI_BASE_IDX', 'mmSDMA3_RLC3_IB_BASE_LO', - 'mmSDMA3_RLC3_IB_BASE_LO_BASE_IDX', 'mmSDMA3_RLC3_IB_CNTL', - 'mmSDMA3_RLC3_IB_CNTL_BASE_IDX', 'mmSDMA3_RLC3_IB_OFFSET', - 'mmSDMA3_RLC3_IB_OFFSET_BASE_IDX', 'mmSDMA3_RLC3_IB_RPTR', - 'mmSDMA3_RLC3_IB_RPTR_BASE_IDX', 'mmSDMA3_RLC3_IB_SIZE', - 'mmSDMA3_RLC3_IB_SIZE_BASE_IDX', 'mmSDMA3_RLC3_IB_SUB_REMAIN', - 'mmSDMA3_RLC3_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA3_RLC3_MIDCMD_CNTL', - 'mmSDMA3_RLC3_MIDCMD_CNTL_BASE_IDX', 'mmSDMA3_RLC3_MIDCMD_DATA0', - 'mmSDMA3_RLC3_MIDCMD_DATA0_BASE_IDX', 'mmSDMA3_RLC3_MIDCMD_DATA1', - 'mmSDMA3_RLC3_MIDCMD_DATA10', - 'mmSDMA3_RLC3_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA3_RLC3_MIDCMD_DATA1_BASE_IDX', 'mmSDMA3_RLC3_MIDCMD_DATA2', - 'mmSDMA3_RLC3_MIDCMD_DATA2_BASE_IDX', 'mmSDMA3_RLC3_MIDCMD_DATA3', - 'mmSDMA3_RLC3_MIDCMD_DATA3_BASE_IDX', 'mmSDMA3_RLC3_MIDCMD_DATA4', - 'mmSDMA3_RLC3_MIDCMD_DATA4_BASE_IDX', 'mmSDMA3_RLC3_MIDCMD_DATA5', - 'mmSDMA3_RLC3_MIDCMD_DATA5_BASE_IDX', 'mmSDMA3_RLC3_MIDCMD_DATA6', - 'mmSDMA3_RLC3_MIDCMD_DATA6_BASE_IDX', 'mmSDMA3_RLC3_MIDCMD_DATA7', - 'mmSDMA3_RLC3_MIDCMD_DATA7_BASE_IDX', 'mmSDMA3_RLC3_MIDCMD_DATA8', - 'mmSDMA3_RLC3_MIDCMD_DATA8_BASE_IDX', 'mmSDMA3_RLC3_MIDCMD_DATA9', - 'mmSDMA3_RLC3_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA3_RLC3_MINOR_PTR_UPDATE', - 'mmSDMA3_RLC3_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA3_RLC3_PREEMPT', - 'mmSDMA3_RLC3_PREEMPT_BASE_IDX', 'mmSDMA3_RLC3_RB_AQL_CNTL', - 'mmSDMA3_RLC3_RB_AQL_CNTL_BASE_IDX', 'mmSDMA3_RLC3_RB_BASE', - 'mmSDMA3_RLC3_RB_BASE_BASE_IDX', 'mmSDMA3_RLC3_RB_BASE_HI', - 'mmSDMA3_RLC3_RB_BASE_HI_BASE_IDX', 'mmSDMA3_RLC3_RB_CNTL', - 'mmSDMA3_RLC3_RB_CNTL_BASE_IDX', 'mmSDMA3_RLC3_RB_RPTR', - 'mmSDMA3_RLC3_RB_RPTR_ADDR_HI', - 'mmSDMA3_RLC3_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC3_RB_RPTR_ADDR_LO', - 'mmSDMA3_RLC3_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC3_RB_RPTR_BASE_IDX', 'mmSDMA3_RLC3_RB_RPTR_HI', - 'mmSDMA3_RLC3_RB_RPTR_HI_BASE_IDX', 'mmSDMA3_RLC3_RB_WPTR', - 'mmSDMA3_RLC3_RB_WPTR_BASE_IDX', 'mmSDMA3_RLC3_RB_WPTR_HI', - 'mmSDMA3_RLC3_RB_WPTR_HI_BASE_IDX', - 'mmSDMA3_RLC3_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA3_RLC3_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC3_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA3_RLC3_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC3_RB_WPTR_POLL_CNTL', - 'mmSDMA3_RLC3_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA3_RLC3_SKIP_CNTL', 'mmSDMA3_RLC3_SKIP_CNTL_BASE_IDX', - 'mmSDMA3_RLC3_STATUS', 'mmSDMA3_RLC3_STATUS_BASE_IDX', - 'mmSDMA3_RLC3_WATERMARK', 'mmSDMA3_RLC3_WATERMARK_BASE_IDX', - 'mmSDMA3_RLC4_CONTEXT_STATUS', - 'mmSDMA3_RLC4_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA3_RLC4_CSA_ADDR_HI', 'mmSDMA3_RLC4_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC4_CSA_ADDR_LO', 'mmSDMA3_RLC4_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC4_DOORBELL', 'mmSDMA3_RLC4_DOORBELL_BASE_IDX', - 'mmSDMA3_RLC4_DOORBELL_LOG', 'mmSDMA3_RLC4_DOORBELL_LOG_BASE_IDX', - 'mmSDMA3_RLC4_DOORBELL_OFFSET', - 'mmSDMA3_RLC4_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA3_RLC4_DUMMY_REG', - 'mmSDMA3_RLC4_DUMMY_REG_BASE_IDX', 'mmSDMA3_RLC4_IB_BASE_HI', - 'mmSDMA3_RLC4_IB_BASE_HI_BASE_IDX', 'mmSDMA3_RLC4_IB_BASE_LO', - 'mmSDMA3_RLC4_IB_BASE_LO_BASE_IDX', 'mmSDMA3_RLC4_IB_CNTL', - 'mmSDMA3_RLC4_IB_CNTL_BASE_IDX', 'mmSDMA3_RLC4_IB_OFFSET', - 'mmSDMA3_RLC4_IB_OFFSET_BASE_IDX', 'mmSDMA3_RLC4_IB_RPTR', - 'mmSDMA3_RLC4_IB_RPTR_BASE_IDX', 'mmSDMA3_RLC4_IB_SIZE', - 'mmSDMA3_RLC4_IB_SIZE_BASE_IDX', 'mmSDMA3_RLC4_IB_SUB_REMAIN', - 'mmSDMA3_RLC4_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA3_RLC4_MIDCMD_CNTL', - 'mmSDMA3_RLC4_MIDCMD_CNTL_BASE_IDX', 'mmSDMA3_RLC4_MIDCMD_DATA0', - 'mmSDMA3_RLC4_MIDCMD_DATA0_BASE_IDX', 'mmSDMA3_RLC4_MIDCMD_DATA1', - 'mmSDMA3_RLC4_MIDCMD_DATA10', - 'mmSDMA3_RLC4_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA3_RLC4_MIDCMD_DATA1_BASE_IDX', 'mmSDMA3_RLC4_MIDCMD_DATA2', - 'mmSDMA3_RLC4_MIDCMD_DATA2_BASE_IDX', 'mmSDMA3_RLC4_MIDCMD_DATA3', - 'mmSDMA3_RLC4_MIDCMD_DATA3_BASE_IDX', 'mmSDMA3_RLC4_MIDCMD_DATA4', - 'mmSDMA3_RLC4_MIDCMD_DATA4_BASE_IDX', 'mmSDMA3_RLC4_MIDCMD_DATA5', - 'mmSDMA3_RLC4_MIDCMD_DATA5_BASE_IDX', 'mmSDMA3_RLC4_MIDCMD_DATA6', - 'mmSDMA3_RLC4_MIDCMD_DATA6_BASE_IDX', 'mmSDMA3_RLC4_MIDCMD_DATA7', - 'mmSDMA3_RLC4_MIDCMD_DATA7_BASE_IDX', 'mmSDMA3_RLC4_MIDCMD_DATA8', - 'mmSDMA3_RLC4_MIDCMD_DATA8_BASE_IDX', 'mmSDMA3_RLC4_MIDCMD_DATA9', - 'mmSDMA3_RLC4_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA3_RLC4_MINOR_PTR_UPDATE', - 'mmSDMA3_RLC4_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA3_RLC4_PREEMPT', - 'mmSDMA3_RLC4_PREEMPT_BASE_IDX', 'mmSDMA3_RLC4_RB_AQL_CNTL', - 'mmSDMA3_RLC4_RB_AQL_CNTL_BASE_IDX', 'mmSDMA3_RLC4_RB_BASE', - 'mmSDMA3_RLC4_RB_BASE_BASE_IDX', 'mmSDMA3_RLC4_RB_BASE_HI', - 'mmSDMA3_RLC4_RB_BASE_HI_BASE_IDX', 'mmSDMA3_RLC4_RB_CNTL', - 'mmSDMA3_RLC4_RB_CNTL_BASE_IDX', 'mmSDMA3_RLC4_RB_RPTR', - 'mmSDMA3_RLC4_RB_RPTR_ADDR_HI', - 'mmSDMA3_RLC4_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC4_RB_RPTR_ADDR_LO', - 'mmSDMA3_RLC4_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC4_RB_RPTR_BASE_IDX', 'mmSDMA3_RLC4_RB_RPTR_HI', - 'mmSDMA3_RLC4_RB_RPTR_HI_BASE_IDX', 'mmSDMA3_RLC4_RB_WPTR', - 'mmSDMA3_RLC4_RB_WPTR_BASE_IDX', 'mmSDMA3_RLC4_RB_WPTR_HI', - 'mmSDMA3_RLC4_RB_WPTR_HI_BASE_IDX', - 'mmSDMA3_RLC4_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA3_RLC4_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC4_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA3_RLC4_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC4_RB_WPTR_POLL_CNTL', - 'mmSDMA3_RLC4_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA3_RLC4_SKIP_CNTL', 'mmSDMA3_RLC4_SKIP_CNTL_BASE_IDX', - 'mmSDMA3_RLC4_STATUS', 'mmSDMA3_RLC4_STATUS_BASE_IDX', - 'mmSDMA3_RLC4_WATERMARK', 'mmSDMA3_RLC4_WATERMARK_BASE_IDX', - 'mmSDMA3_RLC5_CONTEXT_STATUS', - 'mmSDMA3_RLC5_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA3_RLC5_CSA_ADDR_HI', 'mmSDMA3_RLC5_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC5_CSA_ADDR_LO', 'mmSDMA3_RLC5_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC5_DOORBELL', 'mmSDMA3_RLC5_DOORBELL_BASE_IDX', - 'mmSDMA3_RLC5_DOORBELL_LOG', 'mmSDMA3_RLC5_DOORBELL_LOG_BASE_IDX', - 'mmSDMA3_RLC5_DOORBELL_OFFSET', - 'mmSDMA3_RLC5_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA3_RLC5_DUMMY_REG', - 'mmSDMA3_RLC5_DUMMY_REG_BASE_IDX', 'mmSDMA3_RLC5_IB_BASE_HI', - 'mmSDMA3_RLC5_IB_BASE_HI_BASE_IDX', 'mmSDMA3_RLC5_IB_BASE_LO', - 'mmSDMA3_RLC5_IB_BASE_LO_BASE_IDX', 'mmSDMA3_RLC5_IB_CNTL', - 'mmSDMA3_RLC5_IB_CNTL_BASE_IDX', 'mmSDMA3_RLC5_IB_OFFSET', - 'mmSDMA3_RLC5_IB_OFFSET_BASE_IDX', 'mmSDMA3_RLC5_IB_RPTR', - 'mmSDMA3_RLC5_IB_RPTR_BASE_IDX', 'mmSDMA3_RLC5_IB_SIZE', - 'mmSDMA3_RLC5_IB_SIZE_BASE_IDX', 'mmSDMA3_RLC5_IB_SUB_REMAIN', - 'mmSDMA3_RLC5_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA3_RLC5_MIDCMD_CNTL', - 'mmSDMA3_RLC5_MIDCMD_CNTL_BASE_IDX', 'mmSDMA3_RLC5_MIDCMD_DATA0', - 'mmSDMA3_RLC5_MIDCMD_DATA0_BASE_IDX', 'mmSDMA3_RLC5_MIDCMD_DATA1', - 'mmSDMA3_RLC5_MIDCMD_DATA10', - 'mmSDMA3_RLC5_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA3_RLC5_MIDCMD_DATA1_BASE_IDX', 'mmSDMA3_RLC5_MIDCMD_DATA2', - 'mmSDMA3_RLC5_MIDCMD_DATA2_BASE_IDX', 'mmSDMA3_RLC5_MIDCMD_DATA3', - 'mmSDMA3_RLC5_MIDCMD_DATA3_BASE_IDX', 'mmSDMA3_RLC5_MIDCMD_DATA4', - 'mmSDMA3_RLC5_MIDCMD_DATA4_BASE_IDX', 'mmSDMA3_RLC5_MIDCMD_DATA5', - 'mmSDMA3_RLC5_MIDCMD_DATA5_BASE_IDX', 'mmSDMA3_RLC5_MIDCMD_DATA6', - 'mmSDMA3_RLC5_MIDCMD_DATA6_BASE_IDX', 'mmSDMA3_RLC5_MIDCMD_DATA7', - 'mmSDMA3_RLC5_MIDCMD_DATA7_BASE_IDX', 'mmSDMA3_RLC5_MIDCMD_DATA8', - 'mmSDMA3_RLC5_MIDCMD_DATA8_BASE_IDX', 'mmSDMA3_RLC5_MIDCMD_DATA9', - 'mmSDMA3_RLC5_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA3_RLC5_MINOR_PTR_UPDATE', - 'mmSDMA3_RLC5_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA3_RLC5_PREEMPT', - 'mmSDMA3_RLC5_PREEMPT_BASE_IDX', 'mmSDMA3_RLC5_RB_AQL_CNTL', - 'mmSDMA3_RLC5_RB_AQL_CNTL_BASE_IDX', 'mmSDMA3_RLC5_RB_BASE', - 'mmSDMA3_RLC5_RB_BASE_BASE_IDX', 'mmSDMA3_RLC5_RB_BASE_HI', - 'mmSDMA3_RLC5_RB_BASE_HI_BASE_IDX', 'mmSDMA3_RLC5_RB_CNTL', - 'mmSDMA3_RLC5_RB_CNTL_BASE_IDX', 'mmSDMA3_RLC5_RB_RPTR', - 'mmSDMA3_RLC5_RB_RPTR_ADDR_HI', - 'mmSDMA3_RLC5_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC5_RB_RPTR_ADDR_LO', - 'mmSDMA3_RLC5_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC5_RB_RPTR_BASE_IDX', 'mmSDMA3_RLC5_RB_RPTR_HI', - 'mmSDMA3_RLC5_RB_RPTR_HI_BASE_IDX', 'mmSDMA3_RLC5_RB_WPTR', - 'mmSDMA3_RLC5_RB_WPTR_BASE_IDX', 'mmSDMA3_RLC5_RB_WPTR_HI', - 'mmSDMA3_RLC5_RB_WPTR_HI_BASE_IDX', - 'mmSDMA3_RLC5_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA3_RLC5_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC5_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA3_RLC5_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC5_RB_WPTR_POLL_CNTL', - 'mmSDMA3_RLC5_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA3_RLC5_SKIP_CNTL', 'mmSDMA3_RLC5_SKIP_CNTL_BASE_IDX', - 'mmSDMA3_RLC5_STATUS', 'mmSDMA3_RLC5_STATUS_BASE_IDX', - 'mmSDMA3_RLC5_WATERMARK', 'mmSDMA3_RLC5_WATERMARK_BASE_IDX', - 'mmSDMA3_RLC6_CONTEXT_STATUS', - 'mmSDMA3_RLC6_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA3_RLC6_CSA_ADDR_HI', 'mmSDMA3_RLC6_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC6_CSA_ADDR_LO', 'mmSDMA3_RLC6_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC6_DOORBELL', 'mmSDMA3_RLC6_DOORBELL_BASE_IDX', - 'mmSDMA3_RLC6_DOORBELL_LOG', 'mmSDMA3_RLC6_DOORBELL_LOG_BASE_IDX', - 'mmSDMA3_RLC6_DOORBELL_OFFSET', - 'mmSDMA3_RLC6_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA3_RLC6_DUMMY_REG', - 'mmSDMA3_RLC6_DUMMY_REG_BASE_IDX', 'mmSDMA3_RLC6_IB_BASE_HI', - 'mmSDMA3_RLC6_IB_BASE_HI_BASE_IDX', 'mmSDMA3_RLC6_IB_BASE_LO', - 'mmSDMA3_RLC6_IB_BASE_LO_BASE_IDX', 'mmSDMA3_RLC6_IB_CNTL', - 'mmSDMA3_RLC6_IB_CNTL_BASE_IDX', 'mmSDMA3_RLC6_IB_OFFSET', - 'mmSDMA3_RLC6_IB_OFFSET_BASE_IDX', 'mmSDMA3_RLC6_IB_RPTR', - 'mmSDMA3_RLC6_IB_RPTR_BASE_IDX', 'mmSDMA3_RLC6_IB_SIZE', - 'mmSDMA3_RLC6_IB_SIZE_BASE_IDX', 'mmSDMA3_RLC6_IB_SUB_REMAIN', - 'mmSDMA3_RLC6_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA3_RLC6_MIDCMD_CNTL', - 'mmSDMA3_RLC6_MIDCMD_CNTL_BASE_IDX', 'mmSDMA3_RLC6_MIDCMD_DATA0', - 'mmSDMA3_RLC6_MIDCMD_DATA0_BASE_IDX', 'mmSDMA3_RLC6_MIDCMD_DATA1', - 'mmSDMA3_RLC6_MIDCMD_DATA10', - 'mmSDMA3_RLC6_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA3_RLC6_MIDCMD_DATA1_BASE_IDX', 'mmSDMA3_RLC6_MIDCMD_DATA2', - 'mmSDMA3_RLC6_MIDCMD_DATA2_BASE_IDX', 'mmSDMA3_RLC6_MIDCMD_DATA3', - 'mmSDMA3_RLC6_MIDCMD_DATA3_BASE_IDX', 'mmSDMA3_RLC6_MIDCMD_DATA4', - 'mmSDMA3_RLC6_MIDCMD_DATA4_BASE_IDX', 'mmSDMA3_RLC6_MIDCMD_DATA5', - 'mmSDMA3_RLC6_MIDCMD_DATA5_BASE_IDX', 'mmSDMA3_RLC6_MIDCMD_DATA6', - 'mmSDMA3_RLC6_MIDCMD_DATA6_BASE_IDX', 'mmSDMA3_RLC6_MIDCMD_DATA7', - 'mmSDMA3_RLC6_MIDCMD_DATA7_BASE_IDX', 'mmSDMA3_RLC6_MIDCMD_DATA8', - 'mmSDMA3_RLC6_MIDCMD_DATA8_BASE_IDX', 'mmSDMA3_RLC6_MIDCMD_DATA9', - 'mmSDMA3_RLC6_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA3_RLC6_MINOR_PTR_UPDATE', - 'mmSDMA3_RLC6_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA3_RLC6_PREEMPT', - 'mmSDMA3_RLC6_PREEMPT_BASE_IDX', 'mmSDMA3_RLC6_RB_AQL_CNTL', - 'mmSDMA3_RLC6_RB_AQL_CNTL_BASE_IDX', 'mmSDMA3_RLC6_RB_BASE', - 'mmSDMA3_RLC6_RB_BASE_BASE_IDX', 'mmSDMA3_RLC6_RB_BASE_HI', - 'mmSDMA3_RLC6_RB_BASE_HI_BASE_IDX', 'mmSDMA3_RLC6_RB_CNTL', - 'mmSDMA3_RLC6_RB_CNTL_BASE_IDX', 'mmSDMA3_RLC6_RB_RPTR', - 'mmSDMA3_RLC6_RB_RPTR_ADDR_HI', - 'mmSDMA3_RLC6_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC6_RB_RPTR_ADDR_LO', - 'mmSDMA3_RLC6_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC6_RB_RPTR_BASE_IDX', 'mmSDMA3_RLC6_RB_RPTR_HI', - 'mmSDMA3_RLC6_RB_RPTR_HI_BASE_IDX', 'mmSDMA3_RLC6_RB_WPTR', - 'mmSDMA3_RLC6_RB_WPTR_BASE_IDX', 'mmSDMA3_RLC6_RB_WPTR_HI', - 'mmSDMA3_RLC6_RB_WPTR_HI_BASE_IDX', - 'mmSDMA3_RLC6_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA3_RLC6_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC6_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA3_RLC6_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC6_RB_WPTR_POLL_CNTL', - 'mmSDMA3_RLC6_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA3_RLC6_SKIP_CNTL', 'mmSDMA3_RLC6_SKIP_CNTL_BASE_IDX', - 'mmSDMA3_RLC6_STATUS', 'mmSDMA3_RLC6_STATUS_BASE_IDX', - 'mmSDMA3_RLC6_WATERMARK', 'mmSDMA3_RLC6_WATERMARK_BASE_IDX', - 'mmSDMA3_RLC7_CONTEXT_STATUS', - 'mmSDMA3_RLC7_CONTEXT_STATUS_BASE_IDX', - 'mmSDMA3_RLC7_CSA_ADDR_HI', 'mmSDMA3_RLC7_CSA_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC7_CSA_ADDR_LO', 'mmSDMA3_RLC7_CSA_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC7_DOORBELL', 'mmSDMA3_RLC7_DOORBELL_BASE_IDX', - 'mmSDMA3_RLC7_DOORBELL_LOG', 'mmSDMA3_RLC7_DOORBELL_LOG_BASE_IDX', - 'mmSDMA3_RLC7_DOORBELL_OFFSET', - 'mmSDMA3_RLC7_DOORBELL_OFFSET_BASE_IDX', 'mmSDMA3_RLC7_DUMMY_REG', - 'mmSDMA3_RLC7_DUMMY_REG_BASE_IDX', 'mmSDMA3_RLC7_IB_BASE_HI', - 'mmSDMA3_RLC7_IB_BASE_HI_BASE_IDX', 'mmSDMA3_RLC7_IB_BASE_LO', - 'mmSDMA3_RLC7_IB_BASE_LO_BASE_IDX', 'mmSDMA3_RLC7_IB_CNTL', - 'mmSDMA3_RLC7_IB_CNTL_BASE_IDX', 'mmSDMA3_RLC7_IB_OFFSET', - 'mmSDMA3_RLC7_IB_OFFSET_BASE_IDX', 'mmSDMA3_RLC7_IB_RPTR', - 'mmSDMA3_RLC7_IB_RPTR_BASE_IDX', 'mmSDMA3_RLC7_IB_SIZE', - 'mmSDMA3_RLC7_IB_SIZE_BASE_IDX', 'mmSDMA3_RLC7_IB_SUB_REMAIN', - 'mmSDMA3_RLC7_IB_SUB_REMAIN_BASE_IDX', 'mmSDMA3_RLC7_MIDCMD_CNTL', - 'mmSDMA3_RLC7_MIDCMD_CNTL_BASE_IDX', 'mmSDMA3_RLC7_MIDCMD_DATA0', - 'mmSDMA3_RLC7_MIDCMD_DATA0_BASE_IDX', 'mmSDMA3_RLC7_MIDCMD_DATA1', - 'mmSDMA3_RLC7_MIDCMD_DATA10', - 'mmSDMA3_RLC7_MIDCMD_DATA10_BASE_IDX', - 'mmSDMA3_RLC7_MIDCMD_DATA1_BASE_IDX', 'mmSDMA3_RLC7_MIDCMD_DATA2', - 'mmSDMA3_RLC7_MIDCMD_DATA2_BASE_IDX', 'mmSDMA3_RLC7_MIDCMD_DATA3', - 'mmSDMA3_RLC7_MIDCMD_DATA3_BASE_IDX', 'mmSDMA3_RLC7_MIDCMD_DATA4', - 'mmSDMA3_RLC7_MIDCMD_DATA4_BASE_IDX', 'mmSDMA3_RLC7_MIDCMD_DATA5', - 'mmSDMA3_RLC7_MIDCMD_DATA5_BASE_IDX', 'mmSDMA3_RLC7_MIDCMD_DATA6', - 'mmSDMA3_RLC7_MIDCMD_DATA6_BASE_IDX', 'mmSDMA3_RLC7_MIDCMD_DATA7', - 'mmSDMA3_RLC7_MIDCMD_DATA7_BASE_IDX', 'mmSDMA3_RLC7_MIDCMD_DATA8', - 'mmSDMA3_RLC7_MIDCMD_DATA8_BASE_IDX', 'mmSDMA3_RLC7_MIDCMD_DATA9', - 'mmSDMA3_RLC7_MIDCMD_DATA9_BASE_IDX', - 'mmSDMA3_RLC7_MINOR_PTR_UPDATE', - 'mmSDMA3_RLC7_MINOR_PTR_UPDATE_BASE_IDX', 'mmSDMA3_RLC7_PREEMPT', - 'mmSDMA3_RLC7_PREEMPT_BASE_IDX', 'mmSDMA3_RLC7_RB_AQL_CNTL', - 'mmSDMA3_RLC7_RB_AQL_CNTL_BASE_IDX', 'mmSDMA3_RLC7_RB_BASE', - 'mmSDMA3_RLC7_RB_BASE_BASE_IDX', 'mmSDMA3_RLC7_RB_BASE_HI', - 'mmSDMA3_RLC7_RB_BASE_HI_BASE_IDX', 'mmSDMA3_RLC7_RB_CNTL', - 'mmSDMA3_RLC7_RB_CNTL_BASE_IDX', 'mmSDMA3_RLC7_RB_RPTR', - 'mmSDMA3_RLC7_RB_RPTR_ADDR_HI', - 'mmSDMA3_RLC7_RB_RPTR_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC7_RB_RPTR_ADDR_LO', - 'mmSDMA3_RLC7_RB_RPTR_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC7_RB_RPTR_BASE_IDX', 'mmSDMA3_RLC7_RB_RPTR_HI', - 'mmSDMA3_RLC7_RB_RPTR_HI_BASE_IDX', 'mmSDMA3_RLC7_RB_WPTR', - 'mmSDMA3_RLC7_RB_WPTR_BASE_IDX', 'mmSDMA3_RLC7_RB_WPTR_HI', - 'mmSDMA3_RLC7_RB_WPTR_HI_BASE_IDX', - 'mmSDMA3_RLC7_RB_WPTR_POLL_ADDR_HI', - 'mmSDMA3_RLC7_RB_WPTR_POLL_ADDR_HI_BASE_IDX', - 'mmSDMA3_RLC7_RB_WPTR_POLL_ADDR_LO', - 'mmSDMA3_RLC7_RB_WPTR_POLL_ADDR_LO_BASE_IDX', - 'mmSDMA3_RLC7_RB_WPTR_POLL_CNTL', - 'mmSDMA3_RLC7_RB_WPTR_POLL_CNTL_BASE_IDX', - 'mmSDMA3_RLC7_SKIP_CNTL', 'mmSDMA3_RLC7_SKIP_CNTL_BASE_IDX', - 'mmSDMA3_RLC7_STATUS', 'mmSDMA3_RLC7_STATUS_BASE_IDX', - 'mmSDMA3_RLC7_WATERMARK', 'mmSDMA3_RLC7_WATERMARK_BASE_IDX', - 'mmSDMA3_SCRATCH_RAM_ADDR', 'mmSDMA3_SCRATCH_RAM_ADDR_BASE_IDX', - 'mmSDMA3_SCRATCH_RAM_DATA', 'mmSDMA3_SCRATCH_RAM_DATA_BASE_IDX', - 'mmSDMA3_SEM_WAIT_FAIL_TIMER_CNTL', - 'mmSDMA3_SEM_WAIT_FAIL_TIMER_CNTL_BASE_IDX', - 'mmSDMA3_STATUS1_REG', 'mmSDMA3_STATUS1_REG_BASE_IDX', - 'mmSDMA3_STATUS2_REG', 'mmSDMA3_STATUS2_REG_BASE_IDX', - 'mmSDMA3_STATUS3_REG', 'mmSDMA3_STATUS3_REG_BASE_IDX', - 'mmSDMA3_STATUS4_REG', 'mmSDMA3_STATUS4_REG_BASE_IDX', - 'mmSDMA3_STATUS5_REG', 'mmSDMA3_STATUS5_REG_BASE_IDX', - 'mmSDMA3_STATUS_REG', 'mmSDMA3_STATUS_REG_BASE_IDX', - 'mmSDMA3_TILING_CONFIG', 'mmSDMA3_TILING_CONFIG_BASE_IDX', - 'mmSDMA3_TIMESTAMP_CNTL', 'mmSDMA3_TIMESTAMP_CNTL_BASE_IDX', - 'mmSDMA3_TLBI_GCR_CNTL', 'mmSDMA3_TLBI_GCR_CNTL_BASE_IDX', - 'mmSDMA3_UCODE_ADDR', 'mmSDMA3_UCODE_ADDR_BASE_IDX', - 'mmSDMA3_UCODE_CHECKSUM', 'mmSDMA3_UCODE_CHECKSUM_BASE_IDX', - 'mmSDMA3_UCODE_DATA', 'mmSDMA3_UCODE_DATA_BASE_IDX', - 'mmSDMA3_UTCL1_CNTL', 'mmSDMA3_UTCL1_CNTL_BASE_IDX', - 'mmSDMA3_UTCL1_INV0', 'mmSDMA3_UTCL1_INV0_BASE_IDX', - 'mmSDMA3_UTCL1_INV1', 'mmSDMA3_UTCL1_INV1_BASE_IDX', - 'mmSDMA3_UTCL1_INV2', 'mmSDMA3_UTCL1_INV2_BASE_IDX', - 'mmSDMA3_UTCL1_PAGE', 'mmSDMA3_UTCL1_PAGE_BASE_IDX', - 'mmSDMA3_UTCL1_RD_STATUS', 'mmSDMA3_UTCL1_RD_STATUS_BASE_IDX', - 'mmSDMA3_UTCL1_RD_XNACK0', 'mmSDMA3_UTCL1_RD_XNACK0_BASE_IDX', - 'mmSDMA3_UTCL1_RD_XNACK1', 'mmSDMA3_UTCL1_RD_XNACK1_BASE_IDX', - 'mmSDMA3_UTCL1_TIMEOUT', 'mmSDMA3_UTCL1_TIMEOUT_BASE_IDX', - 'mmSDMA3_UTCL1_WATERMK', 'mmSDMA3_UTCL1_WATERMK_BASE_IDX', - 'mmSDMA3_UTCL1_WR_STATUS', 'mmSDMA3_UTCL1_WR_STATUS_BASE_IDX', - 'mmSDMA3_UTCL1_WR_XNACK0', 'mmSDMA3_UTCL1_WR_XNACK0_BASE_IDX', - 'mmSDMA3_UTCL1_WR_XNACK1', 'mmSDMA3_UTCL1_WR_XNACK1_BASE_IDX', - 'mmSDMA3_VERSION', 'mmSDMA3_VERSION_BASE_IDX', - 'mmSDMA3_VF_ENABLE', 'mmSDMA3_VF_ENABLE_BASE_IDX', - 'mmSDMA3_VIRT_RESET_REQ', 'mmSDMA3_VIRT_RESET_REQ_BASE_IDX', - 'mmSDMA3_VM_CNTL', 'mmSDMA3_VM_CNTL_BASE_IDX', - 'mmSDMA3_VM_CTX_CNTL', 'mmSDMA3_VM_CTX_CNTL_BASE_IDX', - 'mmSDMA3_VM_CTX_HI', 'mmSDMA3_VM_CTX_HI_BASE_IDX', - 'mmSDMA3_VM_CTX_LO', 'mmSDMA3_VM_CTX_LO_BASE_IDX', - 'mmSE_CAC_CGTT_CLK_CTRL', 'mmSE_CAC_CGTT_CLK_CTRL_BASE_IDX', - 'mmSE_CAC_IND_DATA', 'mmSE_CAC_IND_DATA_BASE_IDX', - 'mmSE_CAC_IND_INDEX', 'mmSE_CAC_IND_INDEX_BASE_IDX', - 'mmSH_MEM_BASES', 'mmSH_MEM_BASES_BASE_IDX', 'mmSH_MEM_CONFIG', - 'mmSH_MEM_CONFIG_BASE_IDX', 'mmSH_RESERVED_REG0', - 'mmSH_RESERVED_REG0_BASE_IDX', 'mmSH_RESERVED_REG1', - 'mmSH_RESERVED_REG1_BASE_IDX', 'mmSMU_RLC_RESPONSE', - 'mmSMU_RLC_RESPONSE_BASE_IDX', 'mmSPI_ARB_CNTL_0', - 'mmSPI_ARB_CNTL_0_BASE_IDX', 'mmSPI_ARB_CYCLES_0', - 'mmSPI_ARB_CYCLES_0_BASE_IDX', 'mmSPI_ARB_CYCLES_1', - 'mmSPI_ARB_CYCLES_1_BASE_IDX', 'mmSPI_ARB_PRIORITY', - 'mmSPI_ARB_PRIORITY_BASE_IDX', 'mmSPI_BARYC_CNTL', - 'mmSPI_BARYC_CNTL_BASE_IDX', 'mmSPI_COMPUTE_QUEUE_RESET', - 'mmSPI_COMPUTE_QUEUE_RESET_BASE_IDX', 'mmSPI_COMPUTE_WF_CTX_SAVE', - 'mmSPI_COMPUTE_WF_CTX_SAVE_BASE_IDX', 'mmSPI_CONFIG_CNTL', - 'mmSPI_CONFIG_CNTL_1', 'mmSPI_CONFIG_CNTL_1_BASE_IDX', - 'mmSPI_CONFIG_CNTL_1_REMAP', 'mmSPI_CONFIG_CNTL_1_REMAP_BASE_IDX', - 'mmSPI_CONFIG_CNTL_2', 'mmSPI_CONFIG_CNTL_2_BASE_IDX', - 'mmSPI_CONFIG_CNTL_2_REMAP', 'mmSPI_CONFIG_CNTL_2_REMAP_BASE_IDX', - 'mmSPI_CONFIG_CNTL_BASE_IDX', 'mmSPI_CONFIG_CNTL_REMAP', - 'mmSPI_CONFIG_CNTL_REMAP_BASE_IDX', 'mmSPI_CONFIG_PS_CU_EN', - 'mmSPI_CONFIG_PS_CU_EN_BASE_IDX', 'mmSPI_CSQ_WF_ACTIVE_COUNT_0', - 'mmSPI_CSQ_WF_ACTIVE_COUNT_0_BASE_IDX', - 'mmSPI_CSQ_WF_ACTIVE_COUNT_1', - 'mmSPI_CSQ_WF_ACTIVE_COUNT_1_BASE_IDX', - 'mmSPI_CSQ_WF_ACTIVE_COUNT_2', - 'mmSPI_CSQ_WF_ACTIVE_COUNT_2_BASE_IDX', - 'mmSPI_CSQ_WF_ACTIVE_COUNT_3', - 'mmSPI_CSQ_WF_ACTIVE_COUNT_3_BASE_IDX', - 'mmSPI_CSQ_WF_ACTIVE_STATUS', - 'mmSPI_CSQ_WF_ACTIVE_STATUS_BASE_IDX', 'mmSPI_DSM_CNTL', - 'mmSPI_DSM_CNTL2', 'mmSPI_DSM_CNTL2_BASE_IDX', - 'mmSPI_DSM_CNTL_BASE_IDX', 'mmSPI_EDC_CNT', - 'mmSPI_EDC_CNT_BASE_IDX', 'mmSPI_EXP_THROTTLE_CTRL', - 'mmSPI_EXP_THROTTLE_CTRL_BASE_IDX', 'mmSPI_FEATURE_CTRL', - 'mmSPI_FEATURE_CTRL_BASE_IDX', 'mmSPI_GDBG_TRAP_CONFIG', - 'mmSPI_GDBG_TRAP_CONFIG_BASE_IDX', 'mmSPI_GDBG_TRAP_DATA0', - 'mmSPI_GDBG_TRAP_DATA0_BASE_IDX', 'mmSPI_GDBG_TRAP_DATA1', - 'mmSPI_GDBG_TRAP_DATA1_BASE_IDX', 'mmSPI_GDBG_TRAP_MASK', - 'mmSPI_GDBG_TRAP_MASK_BASE_IDX', 'mmSPI_GDBG_WAVE_CNTL', - 'mmSPI_GDBG_WAVE_CNTL2', 'mmSPI_GDBG_WAVE_CNTL2_BASE_IDX', - 'mmSPI_GDBG_WAVE_CNTL3', 'mmSPI_GDBG_WAVE_CNTL3_BASE_IDX', - 'mmSPI_GDBG_WAVE_CNTL_BASE_IDX', 'mmSPI_GDS_CREDITS', - 'mmSPI_GDS_CREDITS_BASE_IDX', 'mmSPI_GFX_CNTL', - 'mmSPI_GFX_CNTL_BASE_IDX', 'mmSPI_INTERP_CONTROL_0', - 'mmSPI_INTERP_CONTROL_0_BASE_IDX', 'mmSPI_LB_CTR_CTRL', - 'mmSPI_LB_CTR_CTRL_BASE_IDX', 'mmSPI_LB_DATA_PERWGP_WAVE_CS', - 'mmSPI_LB_DATA_PERWGP_WAVE_CS_BASE_IDX', - 'mmSPI_LB_DATA_PERWGP_WAVE_HSGS', - 'mmSPI_LB_DATA_PERWGP_WAVE_HSGS_BASE_IDX', - 'mmSPI_LB_DATA_PERWGP_WAVE_VSPS', - 'mmSPI_LB_DATA_PERWGP_WAVE_VSPS_BASE_IDX', 'mmSPI_LB_DATA_REG', - 'mmSPI_LB_DATA_REG_BASE_IDX', 'mmSPI_LB_DATA_WAVES', - 'mmSPI_LB_DATA_WAVES_BASE_IDX', 'mmSPI_LB_WGP_MASK', - 'mmSPI_LB_WGP_MASK_BASE_IDX', 'mmSPI_P0_TRAP_SCREEN_GPR_MIN', - 'mmSPI_P0_TRAP_SCREEN_GPR_MIN_BASE_IDX', - 'mmSPI_P0_TRAP_SCREEN_PSBA_HI', - 'mmSPI_P0_TRAP_SCREEN_PSBA_HI_BASE_IDX', - 'mmSPI_P0_TRAP_SCREEN_PSBA_LO', - 'mmSPI_P0_TRAP_SCREEN_PSBA_LO_BASE_IDX', - 'mmSPI_P0_TRAP_SCREEN_PSMA_HI', - 'mmSPI_P0_TRAP_SCREEN_PSMA_HI_BASE_IDX', - 'mmSPI_P0_TRAP_SCREEN_PSMA_LO', - 'mmSPI_P0_TRAP_SCREEN_PSMA_LO_BASE_IDX', - 'mmSPI_P1_TRAP_SCREEN_GPR_MIN', - 'mmSPI_P1_TRAP_SCREEN_GPR_MIN_BASE_IDX', - 'mmSPI_P1_TRAP_SCREEN_PSBA_HI', - 'mmSPI_P1_TRAP_SCREEN_PSBA_HI_BASE_IDX', - 'mmSPI_P1_TRAP_SCREEN_PSBA_LO', - 'mmSPI_P1_TRAP_SCREEN_PSBA_LO_BASE_IDX', - 'mmSPI_P1_TRAP_SCREEN_PSMA_HI', - 'mmSPI_P1_TRAP_SCREEN_PSMA_HI_BASE_IDX', - 'mmSPI_P1_TRAP_SCREEN_PSMA_LO', - 'mmSPI_P1_TRAP_SCREEN_PSMA_LO_BASE_IDX', 'mmSPI_PERFCOUNTER0_HI', - 'mmSPI_PERFCOUNTER0_HI_BASE_IDX', 'mmSPI_PERFCOUNTER0_LO', - 'mmSPI_PERFCOUNTER0_LO_BASE_IDX', 'mmSPI_PERFCOUNTER0_SELECT', - 'mmSPI_PERFCOUNTER0_SELECT1', - 'mmSPI_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmSPI_PERFCOUNTER0_SELECT_BASE_IDX', 'mmSPI_PERFCOUNTER1_HI', - 'mmSPI_PERFCOUNTER1_HI_BASE_IDX', 'mmSPI_PERFCOUNTER1_LO', - 'mmSPI_PERFCOUNTER1_LO_BASE_IDX', 'mmSPI_PERFCOUNTER1_SELECT', - 'mmSPI_PERFCOUNTER1_SELECT1', - 'mmSPI_PERFCOUNTER1_SELECT1_BASE_IDX', - 'mmSPI_PERFCOUNTER1_SELECT_BASE_IDX', 'mmSPI_PERFCOUNTER2_HI', - 'mmSPI_PERFCOUNTER2_HI_BASE_IDX', 'mmSPI_PERFCOUNTER2_LO', - 'mmSPI_PERFCOUNTER2_LO_BASE_IDX', 'mmSPI_PERFCOUNTER2_SELECT', - 'mmSPI_PERFCOUNTER2_SELECT1', - 'mmSPI_PERFCOUNTER2_SELECT1_BASE_IDX', - 'mmSPI_PERFCOUNTER2_SELECT_BASE_IDX', 'mmSPI_PERFCOUNTER3_HI', - 'mmSPI_PERFCOUNTER3_HI_BASE_IDX', 'mmSPI_PERFCOUNTER3_LO', - 'mmSPI_PERFCOUNTER3_LO_BASE_IDX', 'mmSPI_PERFCOUNTER3_SELECT', - 'mmSPI_PERFCOUNTER3_SELECT1', - 'mmSPI_PERFCOUNTER3_SELECT1_BASE_IDX', - 'mmSPI_PERFCOUNTER3_SELECT_BASE_IDX', 'mmSPI_PERFCOUNTER4_HI', - 'mmSPI_PERFCOUNTER4_HI_BASE_IDX', 'mmSPI_PERFCOUNTER4_LO', - 'mmSPI_PERFCOUNTER4_LO_BASE_IDX', 'mmSPI_PERFCOUNTER4_SELECT', - 'mmSPI_PERFCOUNTER4_SELECT_BASE_IDX', 'mmSPI_PERFCOUNTER5_HI', - 'mmSPI_PERFCOUNTER5_HI_BASE_IDX', 'mmSPI_PERFCOUNTER5_LO', - 'mmSPI_PERFCOUNTER5_LO_BASE_IDX', 'mmSPI_PERFCOUNTER5_SELECT', - 'mmSPI_PERFCOUNTER5_SELECT_BASE_IDX', 'mmSPI_PERFCOUNTER_BINS', - 'mmSPI_PERFCOUNTER_BINS_BASE_IDX', - 'mmSPI_PG_ENABLE_STATIC_WGP_MASK', - 'mmSPI_PG_ENABLE_STATIC_WGP_MASK_BASE_IDX', 'mmSPI_PQEV_CTRL', - 'mmSPI_PQEV_CTRL_BASE_IDX', 'mmSPI_PS_INPUT_ADDR', - 'mmSPI_PS_INPUT_ADDR_BASE_IDX', 'mmSPI_PS_INPUT_CNTL_0', - 'mmSPI_PS_INPUT_CNTL_0_BASE_IDX', 'mmSPI_PS_INPUT_CNTL_1', - 'mmSPI_PS_INPUT_CNTL_10', 'mmSPI_PS_INPUT_CNTL_10_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_11', 'mmSPI_PS_INPUT_CNTL_11_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_12', 'mmSPI_PS_INPUT_CNTL_12_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_13', 'mmSPI_PS_INPUT_CNTL_13_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_14', 'mmSPI_PS_INPUT_CNTL_14_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_15', 'mmSPI_PS_INPUT_CNTL_15_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_16', 'mmSPI_PS_INPUT_CNTL_16_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_17', 'mmSPI_PS_INPUT_CNTL_17_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_18', 'mmSPI_PS_INPUT_CNTL_18_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_19', 'mmSPI_PS_INPUT_CNTL_19_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_1_BASE_IDX', 'mmSPI_PS_INPUT_CNTL_2', - 'mmSPI_PS_INPUT_CNTL_20', 'mmSPI_PS_INPUT_CNTL_20_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_21', 'mmSPI_PS_INPUT_CNTL_21_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_22', 'mmSPI_PS_INPUT_CNTL_22_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_23', 'mmSPI_PS_INPUT_CNTL_23_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_24', 'mmSPI_PS_INPUT_CNTL_24_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_25', 'mmSPI_PS_INPUT_CNTL_25_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_26', 'mmSPI_PS_INPUT_CNTL_26_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_27', 'mmSPI_PS_INPUT_CNTL_27_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_28', 'mmSPI_PS_INPUT_CNTL_28_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_29', 'mmSPI_PS_INPUT_CNTL_29_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_2_BASE_IDX', 'mmSPI_PS_INPUT_CNTL_3', - 'mmSPI_PS_INPUT_CNTL_30', 'mmSPI_PS_INPUT_CNTL_30_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_31', 'mmSPI_PS_INPUT_CNTL_31_BASE_IDX', - 'mmSPI_PS_INPUT_CNTL_3_BASE_IDX', 'mmSPI_PS_INPUT_CNTL_4', - 'mmSPI_PS_INPUT_CNTL_4_BASE_IDX', 'mmSPI_PS_INPUT_CNTL_5', - 'mmSPI_PS_INPUT_CNTL_5_BASE_IDX', 'mmSPI_PS_INPUT_CNTL_6', - 'mmSPI_PS_INPUT_CNTL_6_BASE_IDX', 'mmSPI_PS_INPUT_CNTL_7', - 'mmSPI_PS_INPUT_CNTL_7_BASE_IDX', 'mmSPI_PS_INPUT_CNTL_8', - 'mmSPI_PS_INPUT_CNTL_8_BASE_IDX', 'mmSPI_PS_INPUT_CNTL_9', - 'mmSPI_PS_INPUT_CNTL_9_BASE_IDX', 'mmSPI_PS_INPUT_ENA', - 'mmSPI_PS_INPUT_ENA_BASE_IDX', 'mmSPI_PS_IN_CONTROL', - 'mmSPI_PS_IN_CONTROL_BASE_IDX', 'mmSPI_PS_MAX_WAVE_ID', - 'mmSPI_PS_MAX_WAVE_ID_BASE_IDX', 'mmSPI_RESOURCE_RESERVE_CU_0', - 'mmSPI_RESOURCE_RESERVE_CU_0_BASE_IDX', - 'mmSPI_RESOURCE_RESERVE_CU_1', - 'mmSPI_RESOURCE_RESERVE_CU_1_BASE_IDX', - 'mmSPI_RESOURCE_RESERVE_CU_2', - 'mmSPI_RESOURCE_RESERVE_CU_2_BASE_IDX', - 'mmSPI_RESOURCE_RESERVE_CU_3', - 'mmSPI_RESOURCE_RESERVE_CU_3_BASE_IDX', - 'mmSPI_RESOURCE_RESERVE_CU_4', - 'mmSPI_RESOURCE_RESERVE_CU_4_BASE_IDX', - 'mmSPI_RESOURCE_RESERVE_CU_5', - 'mmSPI_RESOURCE_RESERVE_CU_5_BASE_IDX', - 'mmSPI_RESOURCE_RESERVE_CU_6', - 'mmSPI_RESOURCE_RESERVE_CU_6_BASE_IDX', - 'mmSPI_RESOURCE_RESERVE_CU_7', - 'mmSPI_RESOURCE_RESERVE_CU_7_BASE_IDX', - 'mmSPI_RESOURCE_RESERVE_CU_8', - 'mmSPI_RESOURCE_RESERVE_CU_8_BASE_IDX', - 'mmSPI_RESOURCE_RESERVE_CU_9', - 'mmSPI_RESOURCE_RESERVE_CU_9_BASE_IDX', - 'mmSPI_RESOURCE_RESERVE_EN_CU_0', - 'mmSPI_RESOURCE_RESERVE_EN_CU_0_BASE_IDX', - 'mmSPI_RESOURCE_RESERVE_EN_CU_1', - 'mmSPI_RESOURCE_RESERVE_EN_CU_1_BASE_IDX', - 'mmSPI_RESOURCE_RESERVE_EN_CU_2', - 'mmSPI_RESOURCE_RESERVE_EN_CU_2_BASE_IDX', - 'mmSPI_RESOURCE_RESERVE_EN_CU_3', - 'mmSPI_RESOURCE_RESERVE_EN_CU_3_BASE_IDX', - 'mmSPI_RESOURCE_RESERVE_EN_CU_4', - 'mmSPI_RESOURCE_RESERVE_EN_CU_4_BASE_IDX', - 'mmSPI_RESOURCE_RESERVE_EN_CU_5', - 'mmSPI_RESOURCE_RESERVE_EN_CU_5_BASE_IDX', - 'mmSPI_RESOURCE_RESERVE_EN_CU_6', - 'mmSPI_RESOURCE_RESERVE_EN_CU_6_BASE_IDX', - 'mmSPI_RESOURCE_RESERVE_EN_CU_7', - 'mmSPI_RESOURCE_RESERVE_EN_CU_7_BASE_IDX', - 'mmSPI_RESOURCE_RESERVE_EN_CU_8', - 'mmSPI_RESOURCE_RESERVE_EN_CU_8_BASE_IDX', - 'mmSPI_RESOURCE_RESERVE_EN_CU_9', - 'mmSPI_RESOURCE_RESERVE_EN_CU_9_BASE_IDX', - 'mmSPI_SHADER_COL_FORMAT', 'mmSPI_SHADER_COL_FORMAT_BASE_IDX', - 'mmSPI_SHADER_IDX_FORMAT', 'mmSPI_SHADER_IDX_FORMAT_BASE_IDX', - 'mmSPI_SHADER_LATE_ALLOC_VS', - 'mmSPI_SHADER_LATE_ALLOC_VS_BASE_IDX', - 'mmSPI_SHADER_PGM_CHKSUM_GS', - 'mmSPI_SHADER_PGM_CHKSUM_GS_BASE_IDX', - 'mmSPI_SHADER_PGM_CHKSUM_HS', - 'mmSPI_SHADER_PGM_CHKSUM_HS_BASE_IDX', - 'mmSPI_SHADER_PGM_CHKSUM_PS', - 'mmSPI_SHADER_PGM_CHKSUM_PS_BASE_IDX', - 'mmSPI_SHADER_PGM_CHKSUM_VS', - 'mmSPI_SHADER_PGM_CHKSUM_VS_BASE_IDX', 'mmSPI_SHADER_PGM_HI_ES', - 'mmSPI_SHADER_PGM_HI_ES_BASE_IDX', 'mmSPI_SHADER_PGM_HI_ES_GS', - 'mmSPI_SHADER_PGM_HI_ES_GS_BASE_IDX', 'mmSPI_SHADER_PGM_HI_GS', - 'mmSPI_SHADER_PGM_HI_GS_BASE_IDX', 'mmSPI_SHADER_PGM_HI_HS', - 'mmSPI_SHADER_PGM_HI_HS_BASE_IDX', 'mmSPI_SHADER_PGM_HI_LS', - 'mmSPI_SHADER_PGM_HI_LS_BASE_IDX', 'mmSPI_SHADER_PGM_HI_LS_HS', - 'mmSPI_SHADER_PGM_HI_LS_HS_BASE_IDX', 'mmSPI_SHADER_PGM_HI_PS', - 'mmSPI_SHADER_PGM_HI_PS_BASE_IDX', 'mmSPI_SHADER_PGM_HI_VS', - 'mmSPI_SHADER_PGM_HI_VS_BASE_IDX', 'mmSPI_SHADER_PGM_LO_ES', - 'mmSPI_SHADER_PGM_LO_ES_BASE_IDX', 'mmSPI_SHADER_PGM_LO_ES_GS', - 'mmSPI_SHADER_PGM_LO_ES_GS_BASE_IDX', 'mmSPI_SHADER_PGM_LO_GS', - 'mmSPI_SHADER_PGM_LO_GS_BASE_IDX', 'mmSPI_SHADER_PGM_LO_HS', - 'mmSPI_SHADER_PGM_LO_HS_BASE_IDX', 'mmSPI_SHADER_PGM_LO_LS', - 'mmSPI_SHADER_PGM_LO_LS_BASE_IDX', 'mmSPI_SHADER_PGM_LO_LS_HS', - 'mmSPI_SHADER_PGM_LO_LS_HS_BASE_IDX', 'mmSPI_SHADER_PGM_LO_PS', - 'mmSPI_SHADER_PGM_LO_PS_BASE_IDX', 'mmSPI_SHADER_PGM_LO_VS', - 'mmSPI_SHADER_PGM_LO_VS_BASE_IDX', 'mmSPI_SHADER_PGM_RSRC1_GS', - 'mmSPI_SHADER_PGM_RSRC1_GS_BASE_IDX', 'mmSPI_SHADER_PGM_RSRC1_HS', - 'mmSPI_SHADER_PGM_RSRC1_HS_BASE_IDX', 'mmSPI_SHADER_PGM_RSRC1_PS', - 'mmSPI_SHADER_PGM_RSRC1_PS_BASE_IDX', 'mmSPI_SHADER_PGM_RSRC1_VS', - 'mmSPI_SHADER_PGM_RSRC1_VS_BASE_IDX', 'mmSPI_SHADER_PGM_RSRC2_GS', - 'mmSPI_SHADER_PGM_RSRC2_GS_BASE_IDX', - 'mmSPI_SHADER_PGM_RSRC2_GS_VS', - 'mmSPI_SHADER_PGM_RSRC2_GS_VS_BASE_IDX', - 'mmSPI_SHADER_PGM_RSRC2_HS', 'mmSPI_SHADER_PGM_RSRC2_HS_BASE_IDX', - 'mmSPI_SHADER_PGM_RSRC2_PS', 'mmSPI_SHADER_PGM_RSRC2_PS_BASE_IDX', - 'mmSPI_SHADER_PGM_RSRC2_VS', 'mmSPI_SHADER_PGM_RSRC2_VS_BASE_IDX', - 'mmSPI_SHADER_PGM_RSRC3_GS', 'mmSPI_SHADER_PGM_RSRC3_GS_BASE_IDX', - 'mmSPI_SHADER_PGM_RSRC3_HS', 'mmSPI_SHADER_PGM_RSRC3_HS_BASE_IDX', - 'mmSPI_SHADER_PGM_RSRC3_PS', 'mmSPI_SHADER_PGM_RSRC3_PS_BASE_IDX', - 'mmSPI_SHADER_PGM_RSRC3_VS', 'mmSPI_SHADER_PGM_RSRC3_VS_BASE_IDX', - 'mmSPI_SHADER_PGM_RSRC4_GS', 'mmSPI_SHADER_PGM_RSRC4_GS_BASE_IDX', - 'mmSPI_SHADER_PGM_RSRC4_HS', 'mmSPI_SHADER_PGM_RSRC4_HS_BASE_IDX', - 'mmSPI_SHADER_PGM_RSRC4_PS', 'mmSPI_SHADER_PGM_RSRC4_PS_BASE_IDX', - 'mmSPI_SHADER_PGM_RSRC4_VS', 'mmSPI_SHADER_PGM_RSRC4_VS_BASE_IDX', - 'mmSPI_SHADER_POS_FORMAT', 'mmSPI_SHADER_POS_FORMAT_BASE_IDX', - 'mmSPI_SHADER_REQ_CTRL_ESGS', - 'mmSPI_SHADER_REQ_CTRL_ESGS_BASE_IDX', - 'mmSPI_SHADER_REQ_CTRL_LSHS', - 'mmSPI_SHADER_REQ_CTRL_LSHS_BASE_IDX', 'mmSPI_SHADER_REQ_CTRL_PS', - 'mmSPI_SHADER_REQ_CTRL_PS_BASE_IDX', 'mmSPI_SHADER_REQ_CTRL_VS', - 'mmSPI_SHADER_REQ_CTRL_VS_BASE_IDX', - 'mmSPI_SHADER_RSRC_LIMIT_CTRL', - 'mmSPI_SHADER_RSRC_LIMIT_CTRL_BASE_IDX', - 'mmSPI_SHADER_USER_ACCUM_ESGS_0', - 'mmSPI_SHADER_USER_ACCUM_ESGS_0_BASE_IDX', - 'mmSPI_SHADER_USER_ACCUM_ESGS_1', - 'mmSPI_SHADER_USER_ACCUM_ESGS_1_BASE_IDX', - 'mmSPI_SHADER_USER_ACCUM_ESGS_2', - 'mmSPI_SHADER_USER_ACCUM_ESGS_2_BASE_IDX', - 'mmSPI_SHADER_USER_ACCUM_ESGS_3', - 'mmSPI_SHADER_USER_ACCUM_ESGS_3_BASE_IDX', - 'mmSPI_SHADER_USER_ACCUM_LSHS_0', - 'mmSPI_SHADER_USER_ACCUM_LSHS_0_BASE_IDX', - 'mmSPI_SHADER_USER_ACCUM_LSHS_1', - 'mmSPI_SHADER_USER_ACCUM_LSHS_1_BASE_IDX', - 'mmSPI_SHADER_USER_ACCUM_LSHS_2', - 'mmSPI_SHADER_USER_ACCUM_LSHS_2_BASE_IDX', - 'mmSPI_SHADER_USER_ACCUM_LSHS_3', - 'mmSPI_SHADER_USER_ACCUM_LSHS_3_BASE_IDX', - 'mmSPI_SHADER_USER_ACCUM_PS_0', - 'mmSPI_SHADER_USER_ACCUM_PS_0_BASE_IDX', - 'mmSPI_SHADER_USER_ACCUM_PS_1', - 'mmSPI_SHADER_USER_ACCUM_PS_1_BASE_IDX', - 'mmSPI_SHADER_USER_ACCUM_PS_2', - 'mmSPI_SHADER_USER_ACCUM_PS_2_BASE_IDX', - 'mmSPI_SHADER_USER_ACCUM_PS_3', - 'mmSPI_SHADER_USER_ACCUM_PS_3_BASE_IDX', - 'mmSPI_SHADER_USER_ACCUM_VS_0', - 'mmSPI_SHADER_USER_ACCUM_VS_0_BASE_IDX', - 'mmSPI_SHADER_USER_ACCUM_VS_1', - 'mmSPI_SHADER_USER_ACCUM_VS_1_BASE_IDX', - 'mmSPI_SHADER_USER_ACCUM_VS_2', - 'mmSPI_SHADER_USER_ACCUM_VS_2_BASE_IDX', - 'mmSPI_SHADER_USER_ACCUM_VS_3', - 'mmSPI_SHADER_USER_ACCUM_VS_3_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_ADDR_HI_GS', - 'mmSPI_SHADER_USER_DATA_ADDR_HI_GS_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_ADDR_HI_HS', - 'mmSPI_SHADER_USER_DATA_ADDR_HI_HS_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_ADDR_LO_GS', - 'mmSPI_SHADER_USER_DATA_ADDR_LO_GS_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_ADDR_LO_HS', - 'mmSPI_SHADER_USER_DATA_ADDR_LO_HS_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_0', - 'mmSPI_SHADER_USER_DATA_GS_0_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_1', 'mmSPI_SHADER_USER_DATA_GS_10', - 'mmSPI_SHADER_USER_DATA_GS_10_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_11', - 'mmSPI_SHADER_USER_DATA_GS_11_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_12', - 'mmSPI_SHADER_USER_DATA_GS_12_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_13', - 'mmSPI_SHADER_USER_DATA_GS_13_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_14', - 'mmSPI_SHADER_USER_DATA_GS_14_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_15', - 'mmSPI_SHADER_USER_DATA_GS_15_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_16', - 'mmSPI_SHADER_USER_DATA_GS_16_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_17', - 'mmSPI_SHADER_USER_DATA_GS_17_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_18', - 'mmSPI_SHADER_USER_DATA_GS_18_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_19', - 'mmSPI_SHADER_USER_DATA_GS_19_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_1_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_2', 'mmSPI_SHADER_USER_DATA_GS_20', - 'mmSPI_SHADER_USER_DATA_GS_20_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_21', - 'mmSPI_SHADER_USER_DATA_GS_21_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_22', - 'mmSPI_SHADER_USER_DATA_GS_22_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_23', - 'mmSPI_SHADER_USER_DATA_GS_23_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_24', - 'mmSPI_SHADER_USER_DATA_GS_24_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_25', - 'mmSPI_SHADER_USER_DATA_GS_25_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_26', - 'mmSPI_SHADER_USER_DATA_GS_26_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_27', - 'mmSPI_SHADER_USER_DATA_GS_27_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_28', - 'mmSPI_SHADER_USER_DATA_GS_28_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_29', - 'mmSPI_SHADER_USER_DATA_GS_29_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_2_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_3', 'mmSPI_SHADER_USER_DATA_GS_30', - 'mmSPI_SHADER_USER_DATA_GS_30_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_31', - 'mmSPI_SHADER_USER_DATA_GS_31_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_3_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_4', - 'mmSPI_SHADER_USER_DATA_GS_4_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_5', - 'mmSPI_SHADER_USER_DATA_GS_5_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_6', - 'mmSPI_SHADER_USER_DATA_GS_6_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_7', - 'mmSPI_SHADER_USER_DATA_GS_7_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_8', - 'mmSPI_SHADER_USER_DATA_GS_8_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_GS_9', - 'mmSPI_SHADER_USER_DATA_GS_9_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_0', - 'mmSPI_SHADER_USER_DATA_HS_0_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_1', 'mmSPI_SHADER_USER_DATA_HS_10', - 'mmSPI_SHADER_USER_DATA_HS_10_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_11', - 'mmSPI_SHADER_USER_DATA_HS_11_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_12', - 'mmSPI_SHADER_USER_DATA_HS_12_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_13', - 'mmSPI_SHADER_USER_DATA_HS_13_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_14', - 'mmSPI_SHADER_USER_DATA_HS_14_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_15', - 'mmSPI_SHADER_USER_DATA_HS_15_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_16', - 'mmSPI_SHADER_USER_DATA_HS_16_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_17', - 'mmSPI_SHADER_USER_DATA_HS_17_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_18', - 'mmSPI_SHADER_USER_DATA_HS_18_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_19', - 'mmSPI_SHADER_USER_DATA_HS_19_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_1_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_2', 'mmSPI_SHADER_USER_DATA_HS_20', - 'mmSPI_SHADER_USER_DATA_HS_20_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_21', - 'mmSPI_SHADER_USER_DATA_HS_21_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_22', - 'mmSPI_SHADER_USER_DATA_HS_22_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_23', - 'mmSPI_SHADER_USER_DATA_HS_23_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_24', - 'mmSPI_SHADER_USER_DATA_HS_24_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_25', - 'mmSPI_SHADER_USER_DATA_HS_25_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_26', - 'mmSPI_SHADER_USER_DATA_HS_26_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_27', - 'mmSPI_SHADER_USER_DATA_HS_27_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_28', - 'mmSPI_SHADER_USER_DATA_HS_28_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_29', - 'mmSPI_SHADER_USER_DATA_HS_29_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_2_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_3', 'mmSPI_SHADER_USER_DATA_HS_30', - 'mmSPI_SHADER_USER_DATA_HS_30_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_31', - 'mmSPI_SHADER_USER_DATA_HS_31_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_3_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_4', - 'mmSPI_SHADER_USER_DATA_HS_4_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_5', - 'mmSPI_SHADER_USER_DATA_HS_5_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_6', - 'mmSPI_SHADER_USER_DATA_HS_6_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_7', - 'mmSPI_SHADER_USER_DATA_HS_7_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_8', - 'mmSPI_SHADER_USER_DATA_HS_8_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_HS_9', - 'mmSPI_SHADER_USER_DATA_HS_9_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_0', - 'mmSPI_SHADER_USER_DATA_PS_0_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_1', 'mmSPI_SHADER_USER_DATA_PS_10', - 'mmSPI_SHADER_USER_DATA_PS_10_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_11', - 'mmSPI_SHADER_USER_DATA_PS_11_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_12', - 'mmSPI_SHADER_USER_DATA_PS_12_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_13', - 'mmSPI_SHADER_USER_DATA_PS_13_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_14', - 'mmSPI_SHADER_USER_DATA_PS_14_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_15', - 'mmSPI_SHADER_USER_DATA_PS_15_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_16', - 'mmSPI_SHADER_USER_DATA_PS_16_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_17', - 'mmSPI_SHADER_USER_DATA_PS_17_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_18', - 'mmSPI_SHADER_USER_DATA_PS_18_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_19', - 'mmSPI_SHADER_USER_DATA_PS_19_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_1_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_2', 'mmSPI_SHADER_USER_DATA_PS_20', - 'mmSPI_SHADER_USER_DATA_PS_20_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_21', - 'mmSPI_SHADER_USER_DATA_PS_21_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_22', - 'mmSPI_SHADER_USER_DATA_PS_22_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_23', - 'mmSPI_SHADER_USER_DATA_PS_23_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_24', - 'mmSPI_SHADER_USER_DATA_PS_24_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_25', - 'mmSPI_SHADER_USER_DATA_PS_25_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_26', - 'mmSPI_SHADER_USER_DATA_PS_26_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_27', - 'mmSPI_SHADER_USER_DATA_PS_27_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_28', - 'mmSPI_SHADER_USER_DATA_PS_28_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_29', - 'mmSPI_SHADER_USER_DATA_PS_29_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_2_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_3', 'mmSPI_SHADER_USER_DATA_PS_30', - 'mmSPI_SHADER_USER_DATA_PS_30_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_31', - 'mmSPI_SHADER_USER_DATA_PS_31_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_3_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_4', - 'mmSPI_SHADER_USER_DATA_PS_4_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_5', - 'mmSPI_SHADER_USER_DATA_PS_5_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_6', - 'mmSPI_SHADER_USER_DATA_PS_6_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_7', - 'mmSPI_SHADER_USER_DATA_PS_7_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_8', - 'mmSPI_SHADER_USER_DATA_PS_8_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_PS_9', - 'mmSPI_SHADER_USER_DATA_PS_9_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_0', - 'mmSPI_SHADER_USER_DATA_VS_0_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_1', 'mmSPI_SHADER_USER_DATA_VS_10', - 'mmSPI_SHADER_USER_DATA_VS_10_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_11', - 'mmSPI_SHADER_USER_DATA_VS_11_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_12', - 'mmSPI_SHADER_USER_DATA_VS_12_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_13', - 'mmSPI_SHADER_USER_DATA_VS_13_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_14', - 'mmSPI_SHADER_USER_DATA_VS_14_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_15', - 'mmSPI_SHADER_USER_DATA_VS_15_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_16', - 'mmSPI_SHADER_USER_DATA_VS_16_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_17', - 'mmSPI_SHADER_USER_DATA_VS_17_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_18', - 'mmSPI_SHADER_USER_DATA_VS_18_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_19', - 'mmSPI_SHADER_USER_DATA_VS_19_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_1_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_2', 'mmSPI_SHADER_USER_DATA_VS_20', - 'mmSPI_SHADER_USER_DATA_VS_20_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_21', - 'mmSPI_SHADER_USER_DATA_VS_21_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_22', - 'mmSPI_SHADER_USER_DATA_VS_22_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_23', - 'mmSPI_SHADER_USER_DATA_VS_23_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_24', - 'mmSPI_SHADER_USER_DATA_VS_24_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_25', - 'mmSPI_SHADER_USER_DATA_VS_25_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_26', - 'mmSPI_SHADER_USER_DATA_VS_26_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_27', - 'mmSPI_SHADER_USER_DATA_VS_27_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_28', - 'mmSPI_SHADER_USER_DATA_VS_28_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_29', - 'mmSPI_SHADER_USER_DATA_VS_29_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_2_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_3', 'mmSPI_SHADER_USER_DATA_VS_30', - 'mmSPI_SHADER_USER_DATA_VS_30_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_31', - 'mmSPI_SHADER_USER_DATA_VS_31_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_3_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_4', - 'mmSPI_SHADER_USER_DATA_VS_4_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_5', - 'mmSPI_SHADER_USER_DATA_VS_5_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_6', - 'mmSPI_SHADER_USER_DATA_VS_6_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_7', - 'mmSPI_SHADER_USER_DATA_VS_7_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_8', - 'mmSPI_SHADER_USER_DATA_VS_8_BASE_IDX', - 'mmSPI_SHADER_USER_DATA_VS_9', - 'mmSPI_SHADER_USER_DATA_VS_9_BASE_IDX', 'mmSPI_SHADER_Z_FORMAT', - 'mmSPI_SHADER_Z_FORMAT_BASE_IDX', 'mmSPI_START_PHASE', - 'mmSPI_START_PHASE_BASE_IDX', 'mmSPI_SX_EXPORT_BUFFER_SIZES', - 'mmSPI_SX_EXPORT_BUFFER_SIZES_BASE_IDX', - 'mmSPI_SX_SCOREBOARD_BUFFER_SIZES', - 'mmSPI_SX_SCOREBOARD_BUFFER_SIZES_BASE_IDX', 'mmSPI_TMPRING_SIZE', - 'mmSPI_TMPRING_SIZE_BASE_IDX', 'mmSPI_USER_ACCUM_VMID_CNTL', - 'mmSPI_USER_ACCUM_VMID_CNTL_BASE_IDX', 'mmSPI_VS_OUT_CONFIG', - 'mmSPI_VS_OUT_CONFIG_BASE_IDX', 'mmSPI_WAVE_LIMIT_CNTL', - 'mmSPI_WAVE_LIMIT_CNTL_BASE_IDX', 'mmSPI_WAVE_LIMIT_CNTL_REMAP', - 'mmSPI_WAVE_LIMIT_CNTL_REMAP_BASE_IDX', - 'mmSPI_WCL_PIPE_PERCENT_CS0', - 'mmSPI_WCL_PIPE_PERCENT_CS0_BASE_IDX', - 'mmSPI_WCL_PIPE_PERCENT_CS1', - 'mmSPI_WCL_PIPE_PERCENT_CS1_BASE_IDX', - 'mmSPI_WCL_PIPE_PERCENT_CS2', - 'mmSPI_WCL_PIPE_PERCENT_CS2_BASE_IDX', - 'mmSPI_WCL_PIPE_PERCENT_CS3', - 'mmSPI_WCL_PIPE_PERCENT_CS3_BASE_IDX', - 'mmSPI_WCL_PIPE_PERCENT_GFX', - 'mmSPI_WCL_PIPE_PERCENT_GFX_BASE_IDX', - 'mmSPI_WCL_PIPE_PERCENT_HP3D', - 'mmSPI_WCL_PIPE_PERCENT_HP3D_BASE_IDX', 'mmSPI_WF_LIFETIME_CNTL', - 'mmSPI_WF_LIFETIME_CNTL_BASE_IDX', 'mmSPI_WF_LIFETIME_LIMIT_0', - 'mmSPI_WF_LIFETIME_LIMIT_0_BASE_IDX', 'mmSPI_WF_LIFETIME_LIMIT_1', - 'mmSPI_WF_LIFETIME_LIMIT_1_BASE_IDX', 'mmSPI_WF_LIFETIME_LIMIT_2', - 'mmSPI_WF_LIFETIME_LIMIT_2_BASE_IDX', 'mmSPI_WF_LIFETIME_LIMIT_3', - 'mmSPI_WF_LIFETIME_LIMIT_3_BASE_IDX', 'mmSPI_WF_LIFETIME_LIMIT_4', - 'mmSPI_WF_LIFETIME_LIMIT_4_BASE_IDX', 'mmSPI_WF_LIFETIME_LIMIT_5', - 'mmSPI_WF_LIFETIME_LIMIT_5_BASE_IDX', - 'mmSPI_WF_LIFETIME_STATUS_0', - 'mmSPI_WF_LIFETIME_STATUS_0_BASE_IDX', - 'mmSPI_WF_LIFETIME_STATUS_1', 'mmSPI_WF_LIFETIME_STATUS_11', - 'mmSPI_WF_LIFETIME_STATUS_11_BASE_IDX', - 'mmSPI_WF_LIFETIME_STATUS_13', - 'mmSPI_WF_LIFETIME_STATUS_13_BASE_IDX', - 'mmSPI_WF_LIFETIME_STATUS_14', - 'mmSPI_WF_LIFETIME_STATUS_14_BASE_IDX', - 'mmSPI_WF_LIFETIME_STATUS_15', - 'mmSPI_WF_LIFETIME_STATUS_15_BASE_IDX', - 'mmSPI_WF_LIFETIME_STATUS_16', - 'mmSPI_WF_LIFETIME_STATUS_16_BASE_IDX', - 'mmSPI_WF_LIFETIME_STATUS_17', - 'mmSPI_WF_LIFETIME_STATUS_17_BASE_IDX', - 'mmSPI_WF_LIFETIME_STATUS_18', - 'mmSPI_WF_LIFETIME_STATUS_18_BASE_IDX', - 'mmSPI_WF_LIFETIME_STATUS_19', - 'mmSPI_WF_LIFETIME_STATUS_19_BASE_IDX', - 'mmSPI_WF_LIFETIME_STATUS_1_BASE_IDX', - 'mmSPI_WF_LIFETIME_STATUS_2', 'mmSPI_WF_LIFETIME_STATUS_20', - 'mmSPI_WF_LIFETIME_STATUS_20_BASE_IDX', - 'mmSPI_WF_LIFETIME_STATUS_21', - 'mmSPI_WF_LIFETIME_STATUS_21_BASE_IDX', - 'mmSPI_WF_LIFETIME_STATUS_2_BASE_IDX', - 'mmSPI_WF_LIFETIME_STATUS_4', - 'mmSPI_WF_LIFETIME_STATUS_4_BASE_IDX', - 'mmSPI_WF_LIFETIME_STATUS_6', - 'mmSPI_WF_LIFETIME_STATUS_6_BASE_IDX', - 'mmSPI_WF_LIFETIME_STATUS_7', - 'mmSPI_WF_LIFETIME_STATUS_7_BASE_IDX', - 'mmSPI_WF_LIFETIME_STATUS_8', - 'mmSPI_WF_LIFETIME_STATUS_8_BASE_IDX', - 'mmSPI_WF_LIFETIME_STATUS_9', - 'mmSPI_WF_LIFETIME_STATUS_9_BASE_IDX', 'mmSP_CONFIG', - 'mmSP_CONFIG_BASE_IDX', 'mmSQC_CACHES', 'mmSQC_CACHES_BASE_IDX', - 'mmSQC_CONFIG', 'mmSQC_CONFIG_BASE_IDX', - 'mmSQC_DCACHE_UTCL0_CNTL1', 'mmSQC_DCACHE_UTCL0_CNTL1_BASE_IDX', - 'mmSQC_DCACHE_UTCL0_CNTL2', 'mmSQC_DCACHE_UTCL0_CNTL2_BASE_IDX', - 'mmSQC_DCACHE_UTCL0_STATUS', 'mmSQC_DCACHE_UTCL0_STATUS_BASE_IDX', - 'mmSQC_ICACHE_UTCL0_CNTL1', 'mmSQC_ICACHE_UTCL0_CNTL1_BASE_IDX', - 'mmSQC_ICACHE_UTCL0_CNTL2', 'mmSQC_ICACHE_UTCL0_CNTL2_BASE_IDX', - 'mmSQC_ICACHE_UTCL0_STATUS', 'mmSQC_ICACHE_UTCL0_STATUS_BASE_IDX', - 'mmSQG_CONFIG', 'mmSQG_CONFIG_BASE_IDX', 'mmSQG_STATUS', - 'mmSQG_STATUS_BASE_IDX', 'mmSQG_UTCL0_CNTL1', - 'mmSQG_UTCL0_CNTL1_BASE_IDX', 'mmSQG_UTCL0_CNTL2', - 'mmSQG_UTCL0_CNTL2_BASE_IDX', 'mmSQG_UTCL0_STATUS', - 'mmSQG_UTCL0_STATUS_BASE_IDX', 'mmSQ_ALU_CLK_CTRL', - 'mmSQ_ALU_CLK_CTRL_BASE_IDX', 'mmSQ_ARB_CONFIG', - 'mmSQ_ARB_CONFIG_BASE_IDX', 'mmSQ_CMD', 'mmSQ_CMD_BASE_IDX', - 'mmSQ_CONFIG', 'mmSQ_CONFIG_BASE_IDX', 'mmSQ_DEBUG', - 'mmSQ_DEBUG_BASE_IDX', 'mmSQ_DEBUG_STS_GLOBAL', - 'mmSQ_DEBUG_STS_GLOBAL2', 'mmSQ_DEBUG_STS_GLOBAL2_BASE_IDX', - 'mmSQ_DEBUG_STS_GLOBAL_BASE_IDX', 'mmSQ_DSM_CNTL', - 'mmSQ_DSM_CNTL2', 'mmSQ_DSM_CNTL2_BASE_IDX', - 'mmSQ_DSM_CNTL_BASE_IDX', 'mmSQ_EDC_CNT', 'mmSQ_EDC_CNT_BASE_IDX', - 'mmSQ_EDC_FUE_CNTL', 'mmSQ_EDC_FUE_CNTL_BASE_IDX', - 'mmSQ_FIFO_SIZES', 'mmSQ_FIFO_SIZES_BASE_IDX', 'mmSQ_IND_DATA', - 'mmSQ_IND_DATA_BASE_IDX', 'mmSQ_IND_INDEX', - 'mmSQ_IND_INDEX_BASE_IDX', 'mmSQ_INTERRUPT_AUTO_MASK', - 'mmSQ_INTERRUPT_AUTO_MASK_BASE_IDX', 'mmSQ_INTERRUPT_MSG_CTRL', - 'mmSQ_INTERRUPT_MSG_CTRL_BASE_IDX', 'mmSQ_LB_CTR_CTRL', - 'mmSQ_LB_CTR_CTRL_BASE_IDX', 'mmSQ_LB_CTR_SEL0', - 'mmSQ_LB_CTR_SEL0_BASE_IDX', 'mmSQ_LB_CTR_SEL1', - 'mmSQ_LB_CTR_SEL1_BASE_IDX', 'mmSQ_LB_DATA0', - 'mmSQ_LB_DATA0_BASE_IDX', 'mmSQ_LB_DATA1', - 'mmSQ_LB_DATA1_BASE_IDX', 'mmSQ_LB_DATA2', - 'mmSQ_LB_DATA2_BASE_IDX', 'mmSQ_LB_DATA3', - 'mmSQ_LB_DATA3_BASE_IDX', 'mmSQ_LDS_CLK_CTRL', - 'mmSQ_LDS_CLK_CTRL_BASE_IDX', 'mmSQ_PERFCOUNTER0_HI', - 'mmSQ_PERFCOUNTER0_HI_BASE_IDX', 'mmSQ_PERFCOUNTER0_LO', - 'mmSQ_PERFCOUNTER0_LO_BASE_IDX', 'mmSQ_PERFCOUNTER0_SELECT', - 'mmSQ_PERFCOUNTER0_SELECT_BASE_IDX', 'mmSQ_PERFCOUNTER10_HI', - 'mmSQ_PERFCOUNTER10_HI_BASE_IDX', 'mmSQ_PERFCOUNTER10_LO', - 'mmSQ_PERFCOUNTER10_LO_BASE_IDX', 'mmSQ_PERFCOUNTER10_SELECT', - 'mmSQ_PERFCOUNTER10_SELECT_BASE_IDX', 'mmSQ_PERFCOUNTER11_HI', - 'mmSQ_PERFCOUNTER11_HI_BASE_IDX', 'mmSQ_PERFCOUNTER11_LO', - 'mmSQ_PERFCOUNTER11_LO_BASE_IDX', 'mmSQ_PERFCOUNTER11_SELECT', - 'mmSQ_PERFCOUNTER11_SELECT_BASE_IDX', 'mmSQ_PERFCOUNTER12_HI', - 'mmSQ_PERFCOUNTER12_HI_BASE_IDX', 'mmSQ_PERFCOUNTER12_LO', - 'mmSQ_PERFCOUNTER12_LO_BASE_IDX', 'mmSQ_PERFCOUNTER12_SELECT', - 'mmSQ_PERFCOUNTER12_SELECT_BASE_IDX', 'mmSQ_PERFCOUNTER13_HI', - 'mmSQ_PERFCOUNTER13_HI_BASE_IDX', 'mmSQ_PERFCOUNTER13_LO', - 'mmSQ_PERFCOUNTER13_LO_BASE_IDX', 'mmSQ_PERFCOUNTER13_SELECT', - 'mmSQ_PERFCOUNTER13_SELECT_BASE_IDX', 'mmSQ_PERFCOUNTER14_HI', - 'mmSQ_PERFCOUNTER14_HI_BASE_IDX', 'mmSQ_PERFCOUNTER14_LO', - 'mmSQ_PERFCOUNTER14_LO_BASE_IDX', 'mmSQ_PERFCOUNTER14_SELECT', - 'mmSQ_PERFCOUNTER14_SELECT_BASE_IDX', 'mmSQ_PERFCOUNTER15_HI', - 'mmSQ_PERFCOUNTER15_HI_BASE_IDX', 'mmSQ_PERFCOUNTER15_LO', - 'mmSQ_PERFCOUNTER15_LO_BASE_IDX', 'mmSQ_PERFCOUNTER15_SELECT', - 'mmSQ_PERFCOUNTER15_SELECT_BASE_IDX', 'mmSQ_PERFCOUNTER1_HI', - 'mmSQ_PERFCOUNTER1_HI_BASE_IDX', 'mmSQ_PERFCOUNTER1_LO', - 'mmSQ_PERFCOUNTER1_LO_BASE_IDX', 'mmSQ_PERFCOUNTER1_SELECT', - 'mmSQ_PERFCOUNTER1_SELECT_BASE_IDX', 'mmSQ_PERFCOUNTER2_HI', - 'mmSQ_PERFCOUNTER2_HI_BASE_IDX', 'mmSQ_PERFCOUNTER2_LO', - 'mmSQ_PERFCOUNTER2_LO_BASE_IDX', 'mmSQ_PERFCOUNTER2_SELECT', - 'mmSQ_PERFCOUNTER2_SELECT_BASE_IDX', 'mmSQ_PERFCOUNTER3_HI', - 'mmSQ_PERFCOUNTER3_HI_BASE_IDX', 'mmSQ_PERFCOUNTER3_LO', - 'mmSQ_PERFCOUNTER3_LO_BASE_IDX', 'mmSQ_PERFCOUNTER3_SELECT', - 'mmSQ_PERFCOUNTER3_SELECT_BASE_IDX', 'mmSQ_PERFCOUNTER4_HI', - 'mmSQ_PERFCOUNTER4_HI_BASE_IDX', 'mmSQ_PERFCOUNTER4_LO', - 'mmSQ_PERFCOUNTER4_LO_BASE_IDX', 'mmSQ_PERFCOUNTER4_SELECT', - 'mmSQ_PERFCOUNTER4_SELECT_BASE_IDX', 'mmSQ_PERFCOUNTER5_HI', - 'mmSQ_PERFCOUNTER5_HI_BASE_IDX', 'mmSQ_PERFCOUNTER5_LO', - 'mmSQ_PERFCOUNTER5_LO_BASE_IDX', 'mmSQ_PERFCOUNTER5_SELECT', - 'mmSQ_PERFCOUNTER5_SELECT_BASE_IDX', 'mmSQ_PERFCOUNTER6_HI', - 'mmSQ_PERFCOUNTER6_HI_BASE_IDX', 'mmSQ_PERFCOUNTER6_LO', - 'mmSQ_PERFCOUNTER6_LO_BASE_IDX', 'mmSQ_PERFCOUNTER6_SELECT', - 'mmSQ_PERFCOUNTER6_SELECT_BASE_IDX', 'mmSQ_PERFCOUNTER7_HI', - 'mmSQ_PERFCOUNTER7_HI_BASE_IDX', 'mmSQ_PERFCOUNTER7_LO', - 'mmSQ_PERFCOUNTER7_LO_BASE_IDX', 'mmSQ_PERFCOUNTER7_SELECT', - 'mmSQ_PERFCOUNTER7_SELECT_BASE_IDX', 'mmSQ_PERFCOUNTER8_HI', - 'mmSQ_PERFCOUNTER8_HI_BASE_IDX', 'mmSQ_PERFCOUNTER8_LO', - 'mmSQ_PERFCOUNTER8_LO_BASE_IDX', 'mmSQ_PERFCOUNTER8_SELECT', - 'mmSQ_PERFCOUNTER8_SELECT_BASE_IDX', 'mmSQ_PERFCOUNTER9_HI', - 'mmSQ_PERFCOUNTER9_HI_BASE_IDX', 'mmSQ_PERFCOUNTER9_LO', - 'mmSQ_PERFCOUNTER9_LO_BASE_IDX', 'mmSQ_PERFCOUNTER9_SELECT', - 'mmSQ_PERFCOUNTER9_SELECT_BASE_IDX', 'mmSQ_PERFCOUNTER_CTRL', - 'mmSQ_PERFCOUNTER_CTRL2', 'mmSQ_PERFCOUNTER_CTRL2_BASE_IDX', - 'mmSQ_PERFCOUNTER_CTRL_BASE_IDX', 'mmSQ_RANDOM_WAVE_PRI', - 'mmSQ_RANDOM_WAVE_PRI_BASE_IDX', 'mmSQ_RUNTIME_CONFIG', - 'mmSQ_RUNTIME_CONFIG_BASE_IDX', 'mmSQ_SHADER_TBA_HI', - 'mmSQ_SHADER_TBA_HI_BASE_IDX', 'mmSQ_SHADER_TBA_LO', - 'mmSQ_SHADER_TBA_LO_BASE_IDX', 'mmSQ_SHADER_TMA_HI', - 'mmSQ_SHADER_TMA_HI_BASE_IDX', 'mmSQ_SHADER_TMA_LO', - 'mmSQ_SHADER_TMA_LO_BASE_IDX', 'mmSQ_TEX_CLK_CTRL', - 'mmSQ_TEX_CLK_CTRL_BASE_IDX', 'mmSQ_THREAD_TRACE_BUF0_BASE', - 'mmSQ_THREAD_TRACE_BUF0_BASE_BASE_IDX', - 'mmSQ_THREAD_TRACE_BUF0_SIZE', - 'mmSQ_THREAD_TRACE_BUF0_SIZE_BASE_IDX', - 'mmSQ_THREAD_TRACE_BUF1_BASE', - 'mmSQ_THREAD_TRACE_BUF1_BASE_BASE_IDX', - 'mmSQ_THREAD_TRACE_BUF1_SIZE', - 'mmSQ_THREAD_TRACE_BUF1_SIZE_BASE_IDX', 'mmSQ_THREAD_TRACE_CTRL', - 'mmSQ_THREAD_TRACE_CTRL_BASE_IDX', - 'mmSQ_THREAD_TRACE_DROPPED_CNTR', - 'mmSQ_THREAD_TRACE_DROPPED_CNTR_BASE_IDX', - 'mmSQ_THREAD_TRACE_GFX_DRAW_CNTR', - 'mmSQ_THREAD_TRACE_GFX_DRAW_CNTR_BASE_IDX', - 'mmSQ_THREAD_TRACE_GFX_MARKER_CNTR', - 'mmSQ_THREAD_TRACE_GFX_MARKER_CNTR_BASE_IDX', - 'mmSQ_THREAD_TRACE_HP3D_DRAW_CNTR', - 'mmSQ_THREAD_TRACE_HP3D_DRAW_CNTR_BASE_IDX', - 'mmSQ_THREAD_TRACE_HP3D_MARKER_CNTR', - 'mmSQ_THREAD_TRACE_HP3D_MARKER_CNTR_BASE_IDX', - 'mmSQ_THREAD_TRACE_MASK', 'mmSQ_THREAD_TRACE_MASK_BASE_IDX', - 'mmSQ_THREAD_TRACE_STATUS', 'mmSQ_THREAD_TRACE_STATUS2', - 'mmSQ_THREAD_TRACE_STATUS2_BASE_IDX', - 'mmSQ_THREAD_TRACE_STATUS_BASE_IDX', - 'mmSQ_THREAD_TRACE_TOKEN_MASK', - 'mmSQ_THREAD_TRACE_TOKEN_MASK_BASE_IDX', - 'mmSQ_THREAD_TRACE_USERDATA_0', - 'mmSQ_THREAD_TRACE_USERDATA_0_BASE_IDX', - 'mmSQ_THREAD_TRACE_USERDATA_1', - 'mmSQ_THREAD_TRACE_USERDATA_1_BASE_IDX', - 'mmSQ_THREAD_TRACE_USERDATA_2', - 'mmSQ_THREAD_TRACE_USERDATA_2_BASE_IDX', - 'mmSQ_THREAD_TRACE_USERDATA_3', - 'mmSQ_THREAD_TRACE_USERDATA_3_BASE_IDX', - 'mmSQ_THREAD_TRACE_USERDATA_4', - 'mmSQ_THREAD_TRACE_USERDATA_4_BASE_IDX', - 'mmSQ_THREAD_TRACE_USERDATA_5', - 'mmSQ_THREAD_TRACE_USERDATA_5_BASE_IDX', - 'mmSQ_THREAD_TRACE_USERDATA_6', - 'mmSQ_THREAD_TRACE_USERDATA_6_BASE_IDX', - 'mmSQ_THREAD_TRACE_USERDATA_7', - 'mmSQ_THREAD_TRACE_USERDATA_7_BASE_IDX', 'mmSQ_THREAD_TRACE_WPTR', - 'mmSQ_THREAD_TRACE_WPTR_BASE_IDX', 'mmSQ_TIME_HI', - 'mmSQ_TIME_HI_BASE_IDX', 'mmSQ_TIME_LO', 'mmSQ_TIME_LO_BASE_IDX', - 'mmSQ_WATCH0_ADDR_H', 'mmSQ_WATCH0_ADDR_H_BASE_IDX', - 'mmSQ_WATCH0_ADDR_L', 'mmSQ_WATCH0_ADDR_L_BASE_IDX', - 'mmSQ_WATCH0_CNTL', 'mmSQ_WATCH0_CNTL_BASE_IDX', - 'mmSQ_WATCH1_ADDR_H', 'mmSQ_WATCH1_ADDR_H_BASE_IDX', - 'mmSQ_WATCH1_ADDR_L', 'mmSQ_WATCH1_ADDR_L_BASE_IDX', - 'mmSQ_WATCH1_CNTL', 'mmSQ_WATCH1_CNTL_BASE_IDX', - 'mmSQ_WATCH2_ADDR_H', 'mmSQ_WATCH2_ADDR_H_BASE_IDX', - 'mmSQ_WATCH2_ADDR_L', 'mmSQ_WATCH2_ADDR_L_BASE_IDX', - 'mmSQ_WATCH2_CNTL', 'mmSQ_WATCH2_CNTL_BASE_IDX', - 'mmSQ_WATCH3_ADDR_H', 'mmSQ_WATCH3_ADDR_H_BASE_IDX', - 'mmSQ_WATCH3_ADDR_L', 'mmSQ_WATCH3_ADDR_L_BASE_IDX', - 'mmSQ_WATCH3_CNTL', 'mmSQ_WATCH3_CNTL_BASE_IDX', - 'mmSQ_WREXEC_EXEC_HI', 'mmSQ_WREXEC_EXEC_HI_BASE_IDX', - 'mmSQ_WREXEC_EXEC_LO', 'mmSQ_WREXEC_EXEC_LO_BASE_IDX', - 'mmSX_BLEND_OPT_CONTROL', 'mmSX_BLEND_OPT_CONTROL_BASE_IDX', - 'mmSX_BLEND_OPT_EPSILON', 'mmSX_BLEND_OPT_EPSILON_BASE_IDX', - 'mmSX_DEBUG_1', 'mmSX_DEBUG_1_BASE_IDX', 'mmSX_MRT0_BLEND_OPT', - 'mmSX_MRT0_BLEND_OPT_BASE_IDX', 'mmSX_MRT1_BLEND_OPT', - 'mmSX_MRT1_BLEND_OPT_BASE_IDX', 'mmSX_MRT2_BLEND_OPT', - 'mmSX_MRT2_BLEND_OPT_BASE_IDX', 'mmSX_MRT3_BLEND_OPT', - 'mmSX_MRT3_BLEND_OPT_BASE_IDX', 'mmSX_MRT4_BLEND_OPT', - 'mmSX_MRT4_BLEND_OPT_BASE_IDX', 'mmSX_MRT5_BLEND_OPT', - 'mmSX_MRT5_BLEND_OPT_BASE_IDX', 'mmSX_MRT6_BLEND_OPT', - 'mmSX_MRT6_BLEND_OPT_BASE_IDX', 'mmSX_MRT7_BLEND_OPT', - 'mmSX_MRT7_BLEND_OPT_BASE_IDX', 'mmSX_PERFCOUNTER0_HI', - 'mmSX_PERFCOUNTER0_HI_BASE_IDX', 'mmSX_PERFCOUNTER0_LO', - 'mmSX_PERFCOUNTER0_LO_BASE_IDX', 'mmSX_PERFCOUNTER0_SELECT', - 'mmSX_PERFCOUNTER0_SELECT1', 'mmSX_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmSX_PERFCOUNTER0_SELECT_BASE_IDX', 'mmSX_PERFCOUNTER1_HI', - 'mmSX_PERFCOUNTER1_HI_BASE_IDX', 'mmSX_PERFCOUNTER1_LO', - 'mmSX_PERFCOUNTER1_LO_BASE_IDX', 'mmSX_PERFCOUNTER1_SELECT', - 'mmSX_PERFCOUNTER1_SELECT1', 'mmSX_PERFCOUNTER1_SELECT1_BASE_IDX', - 'mmSX_PERFCOUNTER1_SELECT_BASE_IDX', 'mmSX_PERFCOUNTER2_HI', - 'mmSX_PERFCOUNTER2_HI_BASE_IDX', 'mmSX_PERFCOUNTER2_LO', - 'mmSX_PERFCOUNTER2_LO_BASE_IDX', 'mmSX_PERFCOUNTER2_SELECT', - 'mmSX_PERFCOUNTER2_SELECT_BASE_IDX', 'mmSX_PERFCOUNTER3_HI', - 'mmSX_PERFCOUNTER3_HI_BASE_IDX', 'mmSX_PERFCOUNTER3_LO', - 'mmSX_PERFCOUNTER3_LO_BASE_IDX', 'mmSX_PERFCOUNTER3_SELECT', - 'mmSX_PERFCOUNTER3_SELECT_BASE_IDX', 'mmSX_PS_DOWNCONVERT', - 'mmSX_PS_DOWNCONVERT_BASE_IDX', 'mmSX_PS_DOWNCONVERT_CONTROL', - 'mmSX_PS_DOWNCONVERT_CONTROL_BASE_IDX', 'mmTA_BC_BASE_ADDR', - 'mmTA_BC_BASE_ADDR_BASE_IDX', 'mmTA_BC_BASE_ADDR_HI', - 'mmTA_BC_BASE_ADDR_HI_BASE_IDX', 'mmTA_CGTT_CTRL', - 'mmTA_CGTT_CTRL_BASE_IDX', 'mmTA_CNTL', 'mmTA_CNTL_BASE_IDX', - 'mmTA_CS_BC_BASE_ADDR', 'mmTA_CS_BC_BASE_ADDR_BASE_IDX', - 'mmTA_CS_BC_BASE_ADDR_HI', 'mmTA_CS_BC_BASE_ADDR_HI_BASE_IDX', - 'mmTA_PERFCOUNTER0_HI', 'mmTA_PERFCOUNTER0_HI_BASE_IDX', - 'mmTA_PERFCOUNTER0_LO', 'mmTA_PERFCOUNTER0_LO_BASE_IDX', - 'mmTA_PERFCOUNTER0_SELECT', 'mmTA_PERFCOUNTER0_SELECT1', - 'mmTA_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmTA_PERFCOUNTER0_SELECT_BASE_IDX', 'mmTA_PERFCOUNTER1_HI', - 'mmTA_PERFCOUNTER1_HI_BASE_IDX', 'mmTA_PERFCOUNTER1_LO', - 'mmTA_PERFCOUNTER1_LO_BASE_IDX', 'mmTA_PERFCOUNTER1_SELECT', - 'mmTA_PERFCOUNTER1_SELECT_BASE_IDX', 'mmTA_RESERVED_010C', - 'mmTA_RESERVED_010C_BASE_IDX', 'mmTA_SCRATCH', - 'mmTA_SCRATCH_BASE_IDX', 'mmTA_STATUS', 'mmTA_STATUS_BASE_IDX', - 'mmTCI_CNTL_1', 'mmTCI_CNTL_1_BASE_IDX', 'mmTCI_CNTL_2', - 'mmTCI_CNTL_2_BASE_IDX', 'mmTCI_STATUS', 'mmTCI_STATUS_BASE_IDX', - 'mmTCP_EDC_CNT', 'mmTCP_EDC_CNT_BASE_IDX', 'mmTCP_INVALIDATE', - 'mmTCP_INVALIDATE_BASE_IDX', 'mmTCP_PERFCOUNTER0_HI', - 'mmTCP_PERFCOUNTER0_HI_BASE_IDX', 'mmTCP_PERFCOUNTER0_LO', - 'mmTCP_PERFCOUNTER0_LO_BASE_IDX', 'mmTCP_PERFCOUNTER0_SELECT', - 'mmTCP_PERFCOUNTER0_SELECT1', - 'mmTCP_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmTCP_PERFCOUNTER0_SELECT_BASE_IDX', 'mmTCP_PERFCOUNTER1_HI', - 'mmTCP_PERFCOUNTER1_HI_BASE_IDX', 'mmTCP_PERFCOUNTER1_LO', - 'mmTCP_PERFCOUNTER1_LO_BASE_IDX', 'mmTCP_PERFCOUNTER1_SELECT', - 'mmTCP_PERFCOUNTER1_SELECT1', - 'mmTCP_PERFCOUNTER1_SELECT1_BASE_IDX', - 'mmTCP_PERFCOUNTER1_SELECT_BASE_IDX', 'mmTCP_PERFCOUNTER2_HI', - 'mmTCP_PERFCOUNTER2_HI_BASE_IDX', 'mmTCP_PERFCOUNTER2_LO', - 'mmTCP_PERFCOUNTER2_LO_BASE_IDX', 'mmTCP_PERFCOUNTER2_SELECT', - 'mmTCP_PERFCOUNTER2_SELECT_BASE_IDX', 'mmTCP_PERFCOUNTER3_HI', - 'mmTCP_PERFCOUNTER3_HI_BASE_IDX', 'mmTCP_PERFCOUNTER3_LO', - 'mmTCP_PERFCOUNTER3_LO_BASE_IDX', 'mmTCP_PERFCOUNTER3_SELECT', - 'mmTCP_PERFCOUNTER3_SELECT_BASE_IDX', 'mmTCP_PERFCOUNTER_FILTER', - 'mmTCP_PERFCOUNTER_FILTER2', 'mmTCP_PERFCOUNTER_FILTER2_BASE_IDX', - 'mmTCP_PERFCOUNTER_FILTER_BASE_IDX', - 'mmTCP_PERFCOUNTER_FILTER_EN', - 'mmTCP_PERFCOUNTER_FILTER_EN_BASE_IDX', 'mmTCP_STATUS', - 'mmTCP_STATUS_BASE_IDX', 'mmTCP_WATCH0_ADDR_H', - 'mmTCP_WATCH0_ADDR_H_BASE_IDX', 'mmTCP_WATCH0_ADDR_L', - 'mmTCP_WATCH0_ADDR_L_BASE_IDX', 'mmTCP_WATCH0_CNTL', - 'mmTCP_WATCH0_CNTL_BASE_IDX', 'mmTCP_WATCH1_ADDR_H', - 'mmTCP_WATCH1_ADDR_H_BASE_IDX', 'mmTCP_WATCH1_ADDR_L', - 'mmTCP_WATCH1_ADDR_L_BASE_IDX', 'mmTCP_WATCH1_CNTL', - 'mmTCP_WATCH1_CNTL_BASE_IDX', 'mmTCP_WATCH2_ADDR_H', - 'mmTCP_WATCH2_ADDR_H_BASE_IDX', 'mmTCP_WATCH2_ADDR_L', - 'mmTCP_WATCH2_ADDR_L_BASE_IDX', 'mmTCP_WATCH2_CNTL', - 'mmTCP_WATCH2_CNTL_BASE_IDX', 'mmTCP_WATCH3_ADDR_H', - 'mmTCP_WATCH3_ADDR_H_BASE_IDX', 'mmTCP_WATCH3_ADDR_L', - 'mmTCP_WATCH3_ADDR_L_BASE_IDX', 'mmTCP_WATCH3_CNTL', - 'mmTCP_WATCH3_CNTL_BASE_IDX', 'mmTD_CGTT_CTRL', - 'mmTD_CGTT_CTRL_BASE_IDX', 'mmTD_DSM_CNTL', 'mmTD_DSM_CNTL2', - 'mmTD_DSM_CNTL2_BASE_IDX', 'mmTD_DSM_CNTL_BASE_IDX', - 'mmTD_PERFCOUNTER0_HI', 'mmTD_PERFCOUNTER0_HI_BASE_IDX', - 'mmTD_PERFCOUNTER0_LO', 'mmTD_PERFCOUNTER0_LO_BASE_IDX', - 'mmTD_PERFCOUNTER0_SELECT', 'mmTD_PERFCOUNTER0_SELECT1', - 'mmTD_PERFCOUNTER0_SELECT1_BASE_IDX', - 'mmTD_PERFCOUNTER0_SELECT_BASE_IDX', 'mmTD_PERFCOUNTER1_HI', - 'mmTD_PERFCOUNTER1_HI_BASE_IDX', 'mmTD_PERFCOUNTER1_LO', - 'mmTD_PERFCOUNTER1_LO_BASE_IDX', 'mmTD_PERFCOUNTER1_SELECT', - 'mmTD_PERFCOUNTER1_SELECT_BASE_IDX', 'mmTD_SCRATCH', - 'mmTD_SCRATCH_BASE_IDX', 'mmTD_STATUS', 'mmTD_STATUS_BASE_IDX', - 'mmUCONFIG_RESERVED_REG0', 'mmUCONFIG_RESERVED_REG0_BASE_IDX', - 'mmUCONFIG_RESERVED_REG1', 'mmUCONFIG_RESERVED_REG1_BASE_IDX', - 'mmUTCL1_ALOG', 'mmUTCL1_ALOG_BASE_IDX', 'mmUTCL1_CGTT_CLK_CTRL', - 'mmUTCL1_CGTT_CLK_CTRL_BASE_IDX', 'mmUTCL1_CTRL', - 'mmUTCL1_CTRL_BASE_IDX', 'mmUTCL1_PERFCOUNTER0_HI', - 'mmUTCL1_PERFCOUNTER0_HI_BASE_IDX', 'mmUTCL1_PERFCOUNTER0_LO', - 'mmUTCL1_PERFCOUNTER0_LO_BASE_IDX', 'mmUTCL1_PERFCOUNTER0_SELECT', - 'mmUTCL1_PERFCOUNTER0_SELECT_BASE_IDX', 'mmUTCL1_PERFCOUNTER1_HI', - 'mmUTCL1_PERFCOUNTER1_HI_BASE_IDX', 'mmUTCL1_PERFCOUNTER1_LO', - 'mmUTCL1_PERFCOUNTER1_LO_BASE_IDX', 'mmUTCL1_PERFCOUNTER1_SELECT', - 'mmUTCL1_PERFCOUNTER1_SELECT_BASE_IDX', 'mmUTCL1_STATUS', - 'mmUTCL1_STATUS_BASE_IDX', 'mmUTCL1_UTCL0_INVREQ_DISABLE', - 'mmUTCL1_UTCL0_INVREQ_DISABLE_BASE_IDX', - 'mmVGT_CACHE_INVALIDATION', 'mmVGT_CACHE_INVALIDATION_BASE_IDX', - 'mmVGT_DISPATCH_DRAW_INDEX', 'mmVGT_DISPATCH_DRAW_INDEX_BASE_IDX', - 'mmVGT_DMA_BASE', 'mmVGT_DMA_BASE_BASE_IDX', 'mmVGT_DMA_BASE_HI', - 'mmVGT_DMA_BASE_HI_BASE_IDX', 'mmVGT_DMA_CONTROL', - 'mmVGT_DMA_CONTROL_BASE_IDX', 'mmVGT_DMA_DATA_FIFO_DEPTH', - 'mmVGT_DMA_DATA_FIFO_DEPTH_BASE_IDX', 'mmVGT_DMA_EVENT_INITIATOR', - 'mmVGT_DMA_EVENT_INITIATOR_BASE_IDX', 'mmVGT_DMA_INDEX_TYPE', - 'mmVGT_DMA_INDEX_TYPE_BASE_IDX', 'mmVGT_DMA_LS_HS_CONFIG', - 'mmVGT_DMA_LS_HS_CONFIG_BASE_IDX', 'mmVGT_DMA_MAX_SIZE', - 'mmVGT_DMA_MAX_SIZE_BASE_IDX', 'mmVGT_DMA_NUM_INSTANCES', - 'mmVGT_DMA_NUM_INSTANCES_BASE_IDX', 'mmVGT_DMA_PRIMITIVE_TYPE', - 'mmVGT_DMA_PRIMITIVE_TYPE_BASE_IDX', 'mmVGT_DMA_REQ_FIFO_DEPTH', - 'mmVGT_DMA_REQ_FIFO_DEPTH_BASE_IDX', 'mmVGT_DMA_SIZE', - 'mmVGT_DMA_SIZE_BASE_IDX', 'mmVGT_DRAW_INITIATOR', - 'mmVGT_DRAW_INITIATOR_BASE_IDX', 'mmVGT_DRAW_INIT_FIFO_DEPTH', - 'mmVGT_DRAW_INIT_FIFO_DEPTH_BASE_IDX', 'mmVGT_DRAW_PAYLOAD_CNTL', - 'mmVGT_DRAW_PAYLOAD_CNTL_BASE_IDX', 'mmVGT_ENHANCE', - 'mmVGT_ENHANCE_BASE_IDX', 'mmVGT_ESGS_RING_ITEMSIZE', - 'mmVGT_ESGS_RING_ITEMSIZE_BASE_IDX', 'mmVGT_ESGS_RING_SIZE', - 'mmVGT_ESGS_RING_SIZE_BASE_IDX', 'mmVGT_ESGS_RING_SIZE_UMD', - 'mmVGT_ESGS_RING_SIZE_UMD_BASE_IDX', 'mmVGT_ES_PER_GS', - 'mmVGT_ES_PER_GS_BASE_IDX', 'mmVGT_EVENT_ADDRESS_REG', - 'mmVGT_EVENT_ADDRESS_REG_BASE_IDX', 'mmVGT_EVENT_INITIATOR', - 'mmVGT_EVENT_INITIATOR_BASE_IDX', 'mmVGT_FIFO_DEPTHS', - 'mmVGT_FIFO_DEPTHS_BASE_IDX', 'mmVGT_GROUP_DECR', - 'mmVGT_GROUP_DECR_BASE_IDX', 'mmVGT_GROUP_FIRST_DECR', - 'mmVGT_GROUP_FIRST_DECR_BASE_IDX', 'mmVGT_GROUP_PRIM_TYPE', - 'mmVGT_GROUP_PRIM_TYPE_BASE_IDX', 'mmVGT_GROUP_VECT_0_CNTL', - 'mmVGT_GROUP_VECT_0_CNTL_BASE_IDX', 'mmVGT_GROUP_VECT_0_FMT_CNTL', - 'mmVGT_GROUP_VECT_0_FMT_CNTL_BASE_IDX', 'mmVGT_GROUP_VECT_1_CNTL', - 'mmVGT_GROUP_VECT_1_CNTL_BASE_IDX', 'mmVGT_GROUP_VECT_1_FMT_CNTL', - 'mmVGT_GROUP_VECT_1_FMT_CNTL_BASE_IDX', - 'mmVGT_GSVS_RING_ITEMSIZE', 'mmVGT_GSVS_RING_ITEMSIZE_BASE_IDX', - 'mmVGT_GSVS_RING_OFFSET_1', 'mmVGT_GSVS_RING_OFFSET_1_BASE_IDX', - 'mmVGT_GSVS_RING_OFFSET_2', 'mmVGT_GSVS_RING_OFFSET_2_BASE_IDX', - 'mmVGT_GSVS_RING_OFFSET_3', 'mmVGT_GSVS_RING_OFFSET_3_BASE_IDX', - 'mmVGT_GSVS_RING_SIZE', 'mmVGT_GSVS_RING_SIZE_BASE_IDX', - 'mmVGT_GSVS_RING_SIZE_UMD', 'mmVGT_GSVS_RING_SIZE_UMD_BASE_IDX', - 'mmVGT_GS_INSTANCE_CNT', 'mmVGT_GS_INSTANCE_CNT_BASE_IDX', - 'mmVGT_GS_MAX_VERT_OUT', 'mmVGT_GS_MAX_VERT_OUT_BASE_IDX', - 'mmVGT_GS_MAX_WAVE_ID', 'mmVGT_GS_MAX_WAVE_ID_BASE_IDX', - 'mmVGT_GS_MODE', 'mmVGT_GS_MODE_BASE_IDX', 'mmVGT_GS_ONCHIP_CNTL', - 'mmVGT_GS_ONCHIP_CNTL_BASE_IDX', 'mmVGT_GS_OUT_PRIM_TYPE', - 'mmVGT_GS_OUT_PRIM_TYPE_BASE_IDX', 'mmVGT_GS_PER_ES', - 'mmVGT_GS_PER_ES_BASE_IDX', 'mmVGT_GS_PER_VS', - 'mmVGT_GS_PER_VS_BASE_IDX', 'mmVGT_GS_VERTEX_REUSE', - 'mmVGT_GS_VERTEX_REUSE_BASE_IDX', 'mmVGT_GS_VERT_ITEMSIZE', - 'mmVGT_GS_VERT_ITEMSIZE_1', 'mmVGT_GS_VERT_ITEMSIZE_1_BASE_IDX', - 'mmVGT_GS_VERT_ITEMSIZE_2', 'mmVGT_GS_VERT_ITEMSIZE_2_BASE_IDX', - 'mmVGT_GS_VERT_ITEMSIZE_3', 'mmVGT_GS_VERT_ITEMSIZE_3_BASE_IDX', - 'mmVGT_GS_VERT_ITEMSIZE_BASE_IDX', 'mmVGT_HOS_CNTL', - 'mmVGT_HOS_CNTL_BASE_IDX', 'mmVGT_HOS_MAX_TESS_LEVEL', - 'mmVGT_HOS_MAX_TESS_LEVEL_BASE_IDX', 'mmVGT_HOS_MIN_TESS_LEVEL', - 'mmVGT_HOS_MIN_TESS_LEVEL_BASE_IDX', 'mmVGT_HOS_REUSE_DEPTH', - 'mmVGT_HOS_REUSE_DEPTH_BASE_IDX', 'mmVGT_HS_OFFCHIP_PARAM', - 'mmVGT_HS_OFFCHIP_PARAM_BASE_IDX', 'mmVGT_HS_OFFCHIP_PARAM_UMD', - 'mmVGT_HS_OFFCHIP_PARAM_UMD_BASE_IDX', 'mmVGT_IMMED_DATA', - 'mmVGT_IMMED_DATA_BASE_IDX', 'mmVGT_INDEX_TYPE', - 'mmVGT_INDEX_TYPE_BASE_IDX', 'mmVGT_INDX_OFFSET', - 'mmVGT_INDX_OFFSET_BASE_IDX', 'mmVGT_INSTANCE_BASE_ID', - 'mmVGT_INSTANCE_BASE_ID_BASE_IDX', 'mmVGT_INSTANCE_STEP_RATE_0', - 'mmVGT_INSTANCE_STEP_RATE_0_BASE_IDX', - 'mmVGT_INSTANCE_STEP_RATE_1', - 'mmVGT_INSTANCE_STEP_RATE_1_BASE_IDX', 'mmVGT_LAST_COPY_STATE', - 'mmVGT_LAST_COPY_STATE_BASE_IDX', 'mmVGT_LS_HS_CONFIG', - 'mmVGT_LS_HS_CONFIG_BASE_IDX', 'mmVGT_MAX_VTX_INDX', - 'mmVGT_MAX_VTX_INDX_BASE_IDX', 'mmVGT_MC_LAT_CNTL', - 'mmVGT_MC_LAT_CNTL_BASE_IDX', 'mmVGT_MIN_VTX_INDX', - 'mmVGT_MIN_VTX_INDX_BASE_IDX', 'mmVGT_MULTI_PRIM_IB_RESET_EN', - 'mmVGT_MULTI_PRIM_IB_RESET_EN_BASE_IDX', - 'mmVGT_MULTI_PRIM_IB_RESET_INDX', - 'mmVGT_MULTI_PRIM_IB_RESET_INDX_BASE_IDX', 'mmVGT_NUM_INDICES', - 'mmVGT_NUM_INDICES_BASE_IDX', 'mmVGT_NUM_INSTANCES', - 'mmVGT_NUM_INSTANCES_BASE_IDX', 'mmVGT_OUTPUT_PATH_CNTL', - 'mmVGT_OUTPUT_PATH_CNTL_BASE_IDX', 'mmVGT_OUT_DEALLOC_CNTL', - 'mmVGT_OUT_DEALLOC_CNTL_BASE_IDX', 'mmVGT_PRIMITIVEID_EN', - 'mmVGT_PRIMITIVEID_EN_BASE_IDX', 'mmVGT_PRIMITIVEID_RESET', - 'mmVGT_PRIMITIVEID_RESET_BASE_IDX', 'mmVGT_PRIMITIVE_TYPE', - 'mmVGT_PRIMITIVE_TYPE_BASE_IDX', 'mmVGT_REUSE_OFF', - 'mmVGT_REUSE_OFF_BASE_IDX', 'mmVGT_SHADER_STAGES_EN', - 'mmVGT_SHADER_STAGES_EN_BASE_IDX', 'mmVGT_STRMOUT_BUFFER_CONFIG', - 'mmVGT_STRMOUT_BUFFER_CONFIG_BASE_IDX', - 'mmVGT_STRMOUT_BUFFER_FILLED_SIZE_0', - 'mmVGT_STRMOUT_BUFFER_FILLED_SIZE_0_BASE_IDX', - 'mmVGT_STRMOUT_BUFFER_FILLED_SIZE_1', - 'mmVGT_STRMOUT_BUFFER_FILLED_SIZE_1_BASE_IDX', - 'mmVGT_STRMOUT_BUFFER_FILLED_SIZE_2', - 'mmVGT_STRMOUT_BUFFER_FILLED_SIZE_2_BASE_IDX', - 'mmVGT_STRMOUT_BUFFER_FILLED_SIZE_3', - 'mmVGT_STRMOUT_BUFFER_FILLED_SIZE_3_BASE_IDX', - 'mmVGT_STRMOUT_BUFFER_OFFSET_0', - 'mmVGT_STRMOUT_BUFFER_OFFSET_0_BASE_IDX', - 'mmVGT_STRMOUT_BUFFER_OFFSET_1', - 'mmVGT_STRMOUT_BUFFER_OFFSET_1_BASE_IDX', - 'mmVGT_STRMOUT_BUFFER_OFFSET_2', - 'mmVGT_STRMOUT_BUFFER_OFFSET_2_BASE_IDX', - 'mmVGT_STRMOUT_BUFFER_OFFSET_3', - 'mmVGT_STRMOUT_BUFFER_OFFSET_3_BASE_IDX', - 'mmVGT_STRMOUT_BUFFER_SIZE_0', - 'mmVGT_STRMOUT_BUFFER_SIZE_0_BASE_IDX', - 'mmVGT_STRMOUT_BUFFER_SIZE_1', - 'mmVGT_STRMOUT_BUFFER_SIZE_1_BASE_IDX', - 'mmVGT_STRMOUT_BUFFER_SIZE_2', - 'mmVGT_STRMOUT_BUFFER_SIZE_2_BASE_IDX', - 'mmVGT_STRMOUT_BUFFER_SIZE_3', - 'mmVGT_STRMOUT_BUFFER_SIZE_3_BASE_IDX', 'mmVGT_STRMOUT_CONFIG', - 'mmVGT_STRMOUT_CONFIG_BASE_IDX', 'mmVGT_STRMOUT_DELAY', - 'mmVGT_STRMOUT_DELAY_BASE_IDX', - 'mmVGT_STRMOUT_DRAW_OPAQUE_BUFFER_FILLED_SIZE', - 'mmVGT_STRMOUT_DRAW_OPAQUE_BUFFER_FILLED_SIZE_BASE_IDX', - 'mmVGT_STRMOUT_DRAW_OPAQUE_OFFSET', - 'mmVGT_STRMOUT_DRAW_OPAQUE_OFFSET_BASE_IDX', - 'mmVGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE', - 'mmVGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE_BASE_IDX', - 'mmVGT_STRMOUT_VTX_STRIDE_0', - 'mmVGT_STRMOUT_VTX_STRIDE_0_BASE_IDX', - 'mmVGT_STRMOUT_VTX_STRIDE_1', - 'mmVGT_STRMOUT_VTX_STRIDE_1_BASE_IDX', - 'mmVGT_STRMOUT_VTX_STRIDE_2', - 'mmVGT_STRMOUT_VTX_STRIDE_2_BASE_IDX', - 'mmVGT_STRMOUT_VTX_STRIDE_3', - 'mmVGT_STRMOUT_VTX_STRIDE_3_BASE_IDX', 'mmVGT_SYS_CONFIG', - 'mmVGT_SYS_CONFIG_BASE_IDX', 'mmVGT_TESS_DISTRIBUTION', - 'mmVGT_TESS_DISTRIBUTION_BASE_IDX', 'mmVGT_TF_MEMORY_BASE', - 'mmVGT_TF_MEMORY_BASE_BASE_IDX', 'mmVGT_TF_MEMORY_BASE_HI', - 'mmVGT_TF_MEMORY_BASE_HI_BASE_IDX', 'mmVGT_TF_MEMORY_BASE_HI_UMD', - 'mmVGT_TF_MEMORY_BASE_HI_UMD_BASE_IDX', - 'mmVGT_TF_MEMORY_BASE_UMD', 'mmVGT_TF_MEMORY_BASE_UMD_BASE_IDX', - 'mmVGT_TF_PARAM', 'mmVGT_TF_PARAM_BASE_IDX', 'mmVGT_TF_RING_SIZE', - 'mmVGT_TF_RING_SIZE_BASE_IDX', 'mmVGT_TF_RING_SIZE_UMD', - 'mmVGT_TF_RING_SIZE_UMD_BASE_IDX', - 'mmVGT_VERTEX_REUSE_BLOCK_CNTL', - 'mmVGT_VERTEX_REUSE_BLOCK_CNTL_BASE_IDX', 'mmVGT_VS_MAX_WAVE_ID', - 'mmVGT_VS_MAX_WAVE_ID_BASE_IDX', 'mmVGT_VTX_CNT_EN', - 'mmVGT_VTX_CNT_EN_BASE_IDX', 'mmVGT_VTX_VECT_EJECT_REG', - 'mmVGT_VTX_VECT_EJECT_REG_BASE_IDX', - 'mmVIOLATION_DATA_ASYNC_VF_PROG', - 'mmVIOLATION_DATA_ASYNC_VF_PROG_BASE_IDX', 'mmWD_BUF_RESOURCE_1', - 'mmWD_BUF_RESOURCE_1_BASE_IDX', 'mmWD_BUF_RESOURCE_2', - 'mmWD_BUF_RESOURCE_2_BASE_IDX', 'mmWD_CNTL_SB_BUF_BASE', - 'mmWD_CNTL_SB_BUF_BASE_BASE_IDX', 'mmWD_CNTL_SB_BUF_BASE_HI', - 'mmWD_CNTL_SB_BUF_BASE_HI_BASE_IDX', 'mmWD_CNTL_STATUS', - 'mmWD_CNTL_STATUS_BASE_IDX', 'mmWD_ENHANCE', - 'mmWD_ENHANCE_BASE_IDX', 'mmWD_INDEX_BUF_BASE', - 'mmWD_INDEX_BUF_BASE_BASE_IDX', 'mmWD_INDEX_BUF_BASE_HI', - 'mmWD_INDEX_BUF_BASE_HI_BASE_IDX', 'mmWD_POS_BUF_BASE', - 'mmWD_POS_BUF_BASE_BASE_IDX', 'mmWD_POS_BUF_BASE_HI', - 'mmWD_POS_BUF_BASE_HI_BASE_IDX', 'mmWD_QOS', 'mmWD_QOS_BASE_IDX', - 'mmWD_UTCL1_CNTL', 'mmWD_UTCL1_CNTL_BASE_IDX', - 'mmWD_UTCL1_STATUS', 'mmWD_UTCL1_STATUS_BASE_IDX', - 'pq_exe_status__mec_release_mem__default', - 'pq_exe_status__mec_release_mem__phase_update', 'regCB_BLEND0_CONTROL', 'regCB_BLEND0_CONTROL_BASE_IDX', 'regCB_BLEND1_CONTROL', 'regCB_BLEND1_CONTROL_BASE_IDX', 'regCB_BLEND2_CONTROL', 'regCB_BLEND2_CONTROL_BASE_IDX', @@ -89003,8 +22006,7 @@ __all__ = \ 'regWD_UTCL1_CNTL', 'regWD_UTCL1_CNTL_BASE_IDX', 'regWD_UTCL1_STATUS', 'regWD_UTCL1_STATUS_BASE_IDX', 'struct_IP_BASE', 'struct_IP_BASE_INSTANCE', - 'struct_PM4_MES_TYPE_3_HEADER_0', 'struct_SDMA_PKT_ATOMIC_TAG', - 'struct_SDMA_PKT_ATOMIC_TAG_0_0', + 'struct_SDMA_PKT_ATOMIC_TAG', 'struct_SDMA_PKT_ATOMIC_TAG_0_0', 'struct_SDMA_PKT_ATOMIC_TAG_1_0', 'struct_SDMA_PKT_ATOMIC_TAG_2_0', 'struct_SDMA_PKT_ATOMIC_TAG_3_0', @@ -89058,16 +22060,6 @@ __all__ = \ 'struct_SDMA_PKT_TIMESTAMP_TAG_1_0', 'struct_SDMA_PKT_TIMESTAMP_TAG_2_0', 'struct_SDMA_PKT_TRAP_TAG', 'struct_SDMA_PKT_TRAP_TAG_0_0', 'struct_SDMA_PKT_TRAP_TAG_1_0', - 'struct_pm4_mec_release_mem', - 'struct_pm4_mec_release_mem_1_bitfields2', - 'struct_pm4_mec_release_mem_2_bitfields3', - 'struct_pm4_mec_release_mem_3_bitfields4', - 'struct_pm4_mec_release_mem_3_bitfields4b', - 'struct_pm4_mec_release_mem_5_bitfields6c', - 'struct_pm4_mec_write_data_mmio', - 'struct_pm4_mec_write_data_mmio_1_bitfields2', - 'struct_pm4_mec_write_data_mmio_2_bitfields3', 'uint32_t', - 'union_PM4_MES_TYPE_3_HEADER', 'union_SDMA_PKT_ATOMIC_TAG_ADDR_HI_UNION', 'union_SDMA_PKT_ATOMIC_TAG_ADDR_LO_UNION', 'union_SDMA_PKT_ATOMIC_TAG_CMP_DATA_HI_UNION', @@ -89120,12 +22112,4 @@ __all__ = \ 'union_SDMA_PKT_TIMESTAMP_TAG_ADDR_LO_UNION', 'union_SDMA_PKT_TIMESTAMP_TAG_HEADER_UNION', 'union_SDMA_PKT_TRAP_TAG_HEADER_UNION', - 'union_SDMA_PKT_TRAP_TAG_INT_CONTEXT_UNION', - 'union_pm4_mec_release_mem_0', 'union_pm4_mec_release_mem_1', - 'union_pm4_mec_release_mem_2', 'union_pm4_mec_release_mem_3', - 'union_pm4_mec_release_mem_4', 'union_pm4_mec_release_mem_5', - 'union_pm4_mec_release_mem_6', 'union_pm4_mec_write_data_mmio_0', - 'union_pm4_mec_write_data_mmio_1', - 'union_pm4_mec_write_data_mmio_2', - 'wr_confirm___write_data__do_not_wait_for_write_confirmation', - 'wr_confirm___write_data__wait_for_write_confirmation'] + 'union_SDMA_PKT_TRAP_TAG_INT_CONTEXT_UNION'] diff --git a/tinygrad_repo/tinygrad/runtime/autogen/ib.py b/tinygrad_repo/tinygrad/runtime/autogen/ib.py new file mode 100644 index 000000000..8ea06c22f --- /dev/null +++ b/tinygrad_repo/tinygrad/runtime/autogen/ib.py @@ -0,0 +1,7171 @@ +# mypy: ignore-errors +# -*- coding: utf-8 -*- +# +# TARGET arch is: [] +# WORD_SIZE is: 8 +# POINTER_SIZE is: 8 +# LONGDOUBLE_SIZE is: 16 +# +import ctypes, ctypes.util + + +class AsDictMixin: + @classmethod + def as_dict(cls, self): + result = {} + if not isinstance(self, AsDictMixin): + # not a structure, assume it's already a python object + return self + if not hasattr(cls, "_fields_"): + return result + # sys.version_info >= (3, 5) + # for (field, *_) in cls._fields_: # noqa + for field_tuple in cls._fields_: # noqa + field = field_tuple[0] + if field.startswith('PADDING_'): + continue + value = getattr(self, field) + type_ = type(value) + if hasattr(value, "_length_") and hasattr(value, "_type_"): + # array + if not hasattr(type_, "as_dict"): + value = [v for v in value] + else: + type_ = type_._type_ + value = [type_.as_dict(v) for v in value] + elif hasattr(value, "contents") and hasattr(value, "_type_"): + # pointer + try: + if not hasattr(type_, "as_dict"): + value = value.contents + else: + type_ = type_._type_ + value = type_.as_dict(value.contents) + except ValueError: + # nullptr + value = None + elif isinstance(value, AsDictMixin): + # other structure + value = type_.as_dict(value) + result[field] = value + return result + + +class Structure(ctypes.Structure, AsDictMixin): + + def __init__(self, *args, **kwds): + # We don't want to use positional arguments fill PADDING_* fields + + args = dict(zip(self.__class__._field_names_(), args)) + args.update(kwds) + super(Structure, self).__init__(**args) + + @classmethod + def _field_names_(cls): + if hasattr(cls, '_fields_'): + return (f[0] for f in cls._fields_ if not f[0].startswith('PADDING')) + else: + return () + + @classmethod + def get_type(cls, field): + for f in cls._fields_: + if f[0] == field: + return f[1] + return None + + @classmethod + def bind(cls, bound_fields): + fields = {} + for name, type_ in cls._fields_: + if hasattr(type_, "restype"): + if name in bound_fields: + if bound_fields[name] is None: + fields[name] = type_() + else: + # use a closure to capture the callback from the loop scope + fields[name] = ( + type_((lambda callback: lambda *args: callback(*args))( + bound_fields[name])) + ) + del bound_fields[name] + else: + # default callback implementation (does nothing) + try: + default_ = type_(0).restype().value + except TypeError: + default_ = None + fields[name] = type_(( + lambda default_: lambda *args: default_)(default_)) + else: + # not a callback function, use default initialization + if name in bound_fields: + fields[name] = bound_fields[name] + del bound_fields[name] + else: + fields[name] = type_() + if len(bound_fields) != 0: + raise ValueError( + "Cannot bind the following unknown callback(s) {}.{}".format( + cls.__name__, bound_fields.keys() + )) + return cls(**fields) + + +class Union(ctypes.Union, AsDictMixin): + pass + + + +c_int128 = ctypes.c_ubyte*16 +c_uint128 = c_int128 +void = None +if ctypes.sizeof(ctypes.c_longdouble) == 16: + c_long_double_t = ctypes.c_longdouble +else: + c_long_double_t = ctypes.c_ubyte*16 + +class FunctionFactoryStub: + def __getattr__(self, _): + return ctypes.CFUNCTYPE(lambda y:y) + +# libraries['libibverbs'] explanation +# As you did not list (-l libraryname.so) a library that exports this function +# This is a non-working stub instead. +# You can either re-run clan2py with -l /path/to/library.so +# Or manually fix this by comment the ctypes.CDLL loading +_libraries = {} +_libraries['libibverbs'] = ctypes.CDLL(ctypes.util.find_library('ibverbs'), use_errno=True) # ctypes.CDLL('libibverbs') +def string_cast(char_pointer, encoding='utf-8', errors='strict'): + value = ctypes.cast(char_pointer, ctypes.c_char_p).value + if value is not None and encoding is not None: + value = value.decode(encoding, errors=errors) + return value + + +def char_pointer_cast(string, encoding='utf-8'): + if encoding is not None: + try: + string = string.encode(encoding) + except AttributeError: + # In Python3, bytes has no encode attribute + pass + string = ctypes.c_char_p(string) + return ctypes.cast(string, ctypes.POINTER(ctypes.c_char)) + + + + + +INFINIBAND_VERBS_H = True # macro +VERBS_API_H = True # macro +# def RDMA_UAPI_PTR(_type, _name): # macro +# return {_type_name;__aligned_u64_name##_data_u64;} +IB_USER_IOCTL_VERBS_H = True # macro +IB_USER_VERBS_H = True # macro +IB_USER_VERBS_ABI_VERSION = 6 # macro +IB_USER_VERBS_CMD_THRESHOLD = 50 # macro +IB_USER_VERBS_CMD_COMMAND_MASK = 0xff # macro +IB_USER_VERBS_CMD_FLAG_EXTENDED = 0x80000000 # macro +IB_USER_VERBS_MAX_LOG_IND_TBL_SIZE = 0x0d # macro +IB_DEVICE_NAME_MAX = 64 # macro +IB_UVERBS_ACCESS_OPTIONAL_FIRST = (1<<20) # macro +IB_UVERBS_ACCESS_OPTIONAL_LAST = (1<<29) # macro +# ibv_flow_action_esp_keymat_aes_gcm = ib_uverbs_flow_action_esp_keymat_aes_gcm # macro +# ibv_flow_action_esp_replay_bmp = ib_uverbs_flow_action_esp_replay_bmp # macro +# ibv_flow_action_esp_encap = ib_uverbs_flow_action_esp_encap # macro +# ibv_flow_action_esp = ib_uverbs_flow_action_esp # macro +IBV_ACCESS_OPTIONAL_FIRST = (1<<20) # macro +__attribute_const = True # macro +# def vext_field_avail(type, fld, sz): # macro +# return (offsetof(type,fld)<(sz)) +# __VERBS_ABI_IS_EXTENDED = ((void*)UINTPTR_MAX) # macro +IBV_DEVICE_RAW_SCATTER_FCS = (1<<34) # macro +IBV_DEVICE_PCI_WRITE_END_PADDING = (1<<36) # macro +# IBV_ALLOCATOR_USE_DEFAULT = ((void*)-1) # macro +ETHERNET_LL_SIZE = 6 # macro +IB_ROCE_UDP_ENCAP_VALID_PORT_MIN = (0xC000) # macro +IB_ROCE_UDP_ENCAP_VALID_PORT_MAX = (0xFFFF) # macro +IB_GRH_FLOWLABEL_MASK = (0x000FFFFF) # macro + +# values for enumeration 'ib_uverbs_write_cmds' +ib_uverbs_write_cmds__enumvalues = { + 0: 'IB_USER_VERBS_CMD_GET_CONTEXT', + 1: 'IB_USER_VERBS_CMD_QUERY_DEVICE', + 2: 'IB_USER_VERBS_CMD_QUERY_PORT', + 3: 'IB_USER_VERBS_CMD_ALLOC_PD', + 4: 'IB_USER_VERBS_CMD_DEALLOC_PD', + 5: 'IB_USER_VERBS_CMD_CREATE_AH', + 6: 'IB_USER_VERBS_CMD_MODIFY_AH', + 7: 'IB_USER_VERBS_CMD_QUERY_AH', + 8: 'IB_USER_VERBS_CMD_DESTROY_AH', + 9: 'IB_USER_VERBS_CMD_REG_MR', + 10: 'IB_USER_VERBS_CMD_REG_SMR', + 11: 'IB_USER_VERBS_CMD_REREG_MR', + 12: 'IB_USER_VERBS_CMD_QUERY_MR', + 13: 'IB_USER_VERBS_CMD_DEREG_MR', + 14: 'IB_USER_VERBS_CMD_ALLOC_MW', + 15: 'IB_USER_VERBS_CMD_BIND_MW', + 16: 'IB_USER_VERBS_CMD_DEALLOC_MW', + 17: 'IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL', + 18: 'IB_USER_VERBS_CMD_CREATE_CQ', + 19: 'IB_USER_VERBS_CMD_RESIZE_CQ', + 20: 'IB_USER_VERBS_CMD_DESTROY_CQ', + 21: 'IB_USER_VERBS_CMD_POLL_CQ', + 22: 'IB_USER_VERBS_CMD_PEEK_CQ', + 23: 'IB_USER_VERBS_CMD_REQ_NOTIFY_CQ', + 24: 'IB_USER_VERBS_CMD_CREATE_QP', + 25: 'IB_USER_VERBS_CMD_QUERY_QP', + 26: 'IB_USER_VERBS_CMD_MODIFY_QP', + 27: 'IB_USER_VERBS_CMD_DESTROY_QP', + 28: 'IB_USER_VERBS_CMD_POST_SEND', + 29: 'IB_USER_VERBS_CMD_POST_RECV', + 30: 'IB_USER_VERBS_CMD_ATTACH_MCAST', + 31: 'IB_USER_VERBS_CMD_DETACH_MCAST', + 32: 'IB_USER_VERBS_CMD_CREATE_SRQ', + 33: 'IB_USER_VERBS_CMD_MODIFY_SRQ', + 34: 'IB_USER_VERBS_CMD_QUERY_SRQ', + 35: 'IB_USER_VERBS_CMD_DESTROY_SRQ', + 36: 'IB_USER_VERBS_CMD_POST_SRQ_RECV', + 37: 'IB_USER_VERBS_CMD_OPEN_XRCD', + 38: 'IB_USER_VERBS_CMD_CLOSE_XRCD', + 39: 'IB_USER_VERBS_CMD_CREATE_XSRQ', + 40: 'IB_USER_VERBS_CMD_OPEN_QP', +} +IB_USER_VERBS_CMD_GET_CONTEXT = 0 +IB_USER_VERBS_CMD_QUERY_DEVICE = 1 +IB_USER_VERBS_CMD_QUERY_PORT = 2 +IB_USER_VERBS_CMD_ALLOC_PD = 3 +IB_USER_VERBS_CMD_DEALLOC_PD = 4 +IB_USER_VERBS_CMD_CREATE_AH = 5 +IB_USER_VERBS_CMD_MODIFY_AH = 6 +IB_USER_VERBS_CMD_QUERY_AH = 7 +IB_USER_VERBS_CMD_DESTROY_AH = 8 +IB_USER_VERBS_CMD_REG_MR = 9 +IB_USER_VERBS_CMD_REG_SMR = 10 +IB_USER_VERBS_CMD_REREG_MR = 11 +IB_USER_VERBS_CMD_QUERY_MR = 12 +IB_USER_VERBS_CMD_DEREG_MR = 13 +IB_USER_VERBS_CMD_ALLOC_MW = 14 +IB_USER_VERBS_CMD_BIND_MW = 15 +IB_USER_VERBS_CMD_DEALLOC_MW = 16 +IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL = 17 +IB_USER_VERBS_CMD_CREATE_CQ = 18 +IB_USER_VERBS_CMD_RESIZE_CQ = 19 +IB_USER_VERBS_CMD_DESTROY_CQ = 20 +IB_USER_VERBS_CMD_POLL_CQ = 21 +IB_USER_VERBS_CMD_PEEK_CQ = 22 +IB_USER_VERBS_CMD_REQ_NOTIFY_CQ = 23 +IB_USER_VERBS_CMD_CREATE_QP = 24 +IB_USER_VERBS_CMD_QUERY_QP = 25 +IB_USER_VERBS_CMD_MODIFY_QP = 26 +IB_USER_VERBS_CMD_DESTROY_QP = 27 +IB_USER_VERBS_CMD_POST_SEND = 28 +IB_USER_VERBS_CMD_POST_RECV = 29 +IB_USER_VERBS_CMD_ATTACH_MCAST = 30 +IB_USER_VERBS_CMD_DETACH_MCAST = 31 +IB_USER_VERBS_CMD_CREATE_SRQ = 32 +IB_USER_VERBS_CMD_MODIFY_SRQ = 33 +IB_USER_VERBS_CMD_QUERY_SRQ = 34 +IB_USER_VERBS_CMD_DESTROY_SRQ = 35 +IB_USER_VERBS_CMD_POST_SRQ_RECV = 36 +IB_USER_VERBS_CMD_OPEN_XRCD = 37 +IB_USER_VERBS_CMD_CLOSE_XRCD = 38 +IB_USER_VERBS_CMD_CREATE_XSRQ = 39 +IB_USER_VERBS_CMD_OPEN_QP = 40 +ib_uverbs_write_cmds = ctypes.c_uint32 # enum + +# values for enumeration 'c__Ea_IB_USER_VERBS_EX_CMD_QUERY_DEVICE' +c__Ea_IB_USER_VERBS_EX_CMD_QUERY_DEVICE__enumvalues = { + 1: 'IB_USER_VERBS_EX_CMD_QUERY_DEVICE', + 18: 'IB_USER_VERBS_EX_CMD_CREATE_CQ', + 24: 'IB_USER_VERBS_EX_CMD_CREATE_QP', + 26: 'IB_USER_VERBS_EX_CMD_MODIFY_QP', + 50: 'IB_USER_VERBS_EX_CMD_CREATE_FLOW', + 51: 'IB_USER_VERBS_EX_CMD_DESTROY_FLOW', + 52: 'IB_USER_VERBS_EX_CMD_CREATE_WQ', + 53: 'IB_USER_VERBS_EX_CMD_MODIFY_WQ', + 54: 'IB_USER_VERBS_EX_CMD_DESTROY_WQ', + 55: 'IB_USER_VERBS_EX_CMD_CREATE_RWQ_IND_TBL', + 56: 'IB_USER_VERBS_EX_CMD_DESTROY_RWQ_IND_TBL', + 57: 'IB_USER_VERBS_EX_CMD_MODIFY_CQ', +} +IB_USER_VERBS_EX_CMD_QUERY_DEVICE = 1 +IB_USER_VERBS_EX_CMD_CREATE_CQ = 18 +IB_USER_VERBS_EX_CMD_CREATE_QP = 24 +IB_USER_VERBS_EX_CMD_MODIFY_QP = 26 +IB_USER_VERBS_EX_CMD_CREATE_FLOW = 50 +IB_USER_VERBS_EX_CMD_DESTROY_FLOW = 51 +IB_USER_VERBS_EX_CMD_CREATE_WQ = 52 +IB_USER_VERBS_EX_CMD_MODIFY_WQ = 53 +IB_USER_VERBS_EX_CMD_DESTROY_WQ = 54 +IB_USER_VERBS_EX_CMD_CREATE_RWQ_IND_TBL = 55 +IB_USER_VERBS_EX_CMD_DESTROY_RWQ_IND_TBL = 56 +IB_USER_VERBS_EX_CMD_MODIFY_CQ = 57 +c__Ea_IB_USER_VERBS_EX_CMD_QUERY_DEVICE = ctypes.c_uint32 # enum + +# values for enumeration 'ib_placement_type' +ib_placement_type__enumvalues = { + 1: 'IB_FLUSH_GLOBAL', + 2: 'IB_FLUSH_PERSISTENT', +} +IB_FLUSH_GLOBAL = 1 +IB_FLUSH_PERSISTENT = 2 +ib_placement_type = ctypes.c_uint32 # enum + +# values for enumeration 'ib_selectivity_level' +ib_selectivity_level__enumvalues = { + 0: 'IB_FLUSH_RANGE', + 1: 'IB_FLUSH_MR', +} +IB_FLUSH_RANGE = 0 +IB_FLUSH_MR = 1 +ib_selectivity_level = ctypes.c_uint32 # enum +class struct_ib_uverbs_async_event_desc(Structure): + pass + +struct_ib_uverbs_async_event_desc._pack_ = 1 # source:False +struct_ib_uverbs_async_event_desc._fields_ = [ + ('element', ctypes.c_uint64), + ('event_type', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), +] + +class struct_ib_uverbs_comp_event_desc(Structure): + pass + +struct_ib_uverbs_comp_event_desc._pack_ = 1 # source:False +struct_ib_uverbs_comp_event_desc._fields_ = [ + ('cq_handle', ctypes.c_uint64), +] + +class struct_ib_uverbs_cq_moderation_caps(Structure): + pass + +struct_ib_uverbs_cq_moderation_caps._pack_ = 1 # source:False +struct_ib_uverbs_cq_moderation_caps._fields_ = [ + ('max_cq_moderation_count', ctypes.c_uint16), + ('max_cq_moderation_period', ctypes.c_uint16), + ('reserved', ctypes.c_uint32), +] + +class struct_ib_uverbs_cmd_hdr(Structure): + pass + +struct_ib_uverbs_cmd_hdr._pack_ = 1 # source:False +struct_ib_uverbs_cmd_hdr._fields_ = [ + ('command', ctypes.c_uint32), + ('in_words', ctypes.c_uint16), + ('out_words', ctypes.c_uint16), +] + +class struct_ib_uverbs_ex_cmd_hdr(Structure): + pass + +struct_ib_uverbs_ex_cmd_hdr._pack_ = 1 # source:False +struct_ib_uverbs_ex_cmd_hdr._fields_ = [ + ('response', ctypes.c_uint64), + ('provider_in_words', ctypes.c_uint16), + ('provider_out_words', ctypes.c_uint16), + ('cmd_hdr_reserved', ctypes.c_uint32), +] + +class struct_ib_uverbs_get_context(Structure): + pass + +struct_ib_uverbs_get_context._pack_ = 1 # source:False +struct_ib_uverbs_get_context._fields_ = [ + ('response', ctypes.c_uint64), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_get_context_resp(Structure): + pass + +struct_ib_uverbs_get_context_resp._pack_ = 1 # source:False +struct_ib_uverbs_get_context_resp._fields_ = [ + ('async_fd', ctypes.c_uint32), + ('num_comp_vectors', ctypes.c_uint32), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_query_device(Structure): + pass + +struct_ib_uverbs_query_device._pack_ = 1 # source:False +struct_ib_uverbs_query_device._fields_ = [ + ('response', ctypes.c_uint64), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_query_device_resp(Structure): + pass + +struct_ib_uverbs_query_device_resp._pack_ = 1 # source:False +struct_ib_uverbs_query_device_resp._fields_ = [ + ('fw_ver', ctypes.c_uint64), + ('node_guid', ctypes.c_uint64), + ('sys_image_guid', ctypes.c_uint64), + ('max_mr_size', ctypes.c_uint64), + ('page_size_cap', ctypes.c_uint64), + ('vendor_id', ctypes.c_uint32), + ('vendor_part_id', ctypes.c_uint32), + ('hw_ver', ctypes.c_uint32), + ('max_qp', ctypes.c_uint32), + ('max_qp_wr', ctypes.c_uint32), + ('device_cap_flags', ctypes.c_uint32), + ('max_sge', ctypes.c_uint32), + ('max_sge_rd', ctypes.c_uint32), + ('max_cq', ctypes.c_uint32), + ('max_cqe', ctypes.c_uint32), + ('max_mr', ctypes.c_uint32), + ('max_pd', ctypes.c_uint32), + ('max_qp_rd_atom', ctypes.c_uint32), + ('max_ee_rd_atom', ctypes.c_uint32), + ('max_res_rd_atom', ctypes.c_uint32), + ('max_qp_init_rd_atom', ctypes.c_uint32), + ('max_ee_init_rd_atom', ctypes.c_uint32), + ('atomic_cap', ctypes.c_uint32), + ('max_ee', ctypes.c_uint32), + ('max_rdd', ctypes.c_uint32), + ('max_mw', ctypes.c_uint32), + ('max_raw_ipv6_qp', ctypes.c_uint32), + ('max_raw_ethy_qp', ctypes.c_uint32), + ('max_mcast_grp', ctypes.c_uint32), + ('max_mcast_qp_attach', ctypes.c_uint32), + ('max_total_mcast_qp_attach', ctypes.c_uint32), + ('max_ah', ctypes.c_uint32), + ('max_fmr', ctypes.c_uint32), + ('max_map_per_fmr', ctypes.c_uint32), + ('max_srq', ctypes.c_uint32), + ('max_srq_wr', ctypes.c_uint32), + ('max_srq_sge', ctypes.c_uint32), + ('max_pkeys', ctypes.c_uint16), + ('local_ca_ack_delay', ctypes.c_ubyte), + ('phys_port_cnt', ctypes.c_ubyte), + ('reserved', ctypes.c_ubyte * 4), +] + +class struct_ib_uverbs_ex_query_device(Structure): + pass + +struct_ib_uverbs_ex_query_device._pack_ = 1 # source:False +struct_ib_uverbs_ex_query_device._fields_ = [ + ('comp_mask', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), +] + +class struct_ib_uverbs_odp_caps(Structure): + pass + +class struct_ib_uverbs_odp_caps_per_transport_caps(Structure): + pass + +struct_ib_uverbs_odp_caps_per_transport_caps._pack_ = 1 # source:False +struct_ib_uverbs_odp_caps_per_transport_caps._fields_ = [ + ('rc_odp_caps', ctypes.c_uint32), + ('uc_odp_caps', ctypes.c_uint32), + ('ud_odp_caps', ctypes.c_uint32), +] + +struct_ib_uverbs_odp_caps._pack_ = 1 # source:False +struct_ib_uverbs_odp_caps._fields_ = [ + ('general_caps', ctypes.c_uint64), + ('per_transport_caps', struct_ib_uverbs_odp_caps_per_transport_caps), + ('reserved', ctypes.c_uint32), +] + +class struct_ib_uverbs_rss_caps(Structure): + pass + +struct_ib_uverbs_rss_caps._pack_ = 1 # source:False +struct_ib_uverbs_rss_caps._fields_ = [ + ('supported_qpts', ctypes.c_uint32), + ('max_rwq_indirection_tables', ctypes.c_uint32), + ('max_rwq_indirection_table_size', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), +] + +class struct_ib_uverbs_tm_caps(Structure): + pass + +struct_ib_uverbs_tm_caps._pack_ = 1 # source:False +struct_ib_uverbs_tm_caps._fields_ = [ + ('max_rndv_hdr_size', ctypes.c_uint32), + ('max_num_tags', ctypes.c_uint32), + ('flags', ctypes.c_uint32), + ('max_ops', ctypes.c_uint32), + ('max_sge', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), +] + +class struct_ib_uverbs_ex_query_device_resp(Structure): + pass + +struct_ib_uverbs_ex_query_device_resp._pack_ = 1 # source:False +struct_ib_uverbs_ex_query_device_resp._fields_ = [ + ('base', struct_ib_uverbs_query_device_resp), + ('comp_mask', ctypes.c_uint32), + ('response_length', ctypes.c_uint32), + ('odp_caps', struct_ib_uverbs_odp_caps), + ('timestamp_mask', ctypes.c_uint64), + ('hca_core_clock', ctypes.c_uint64), + ('device_cap_flags_ex', ctypes.c_uint64), + ('rss_caps', struct_ib_uverbs_rss_caps), + ('max_wq_type_rq', ctypes.c_uint32), + ('raw_packet_caps', ctypes.c_uint32), + ('tm_caps', struct_ib_uverbs_tm_caps), + ('cq_moderation_caps', struct_ib_uverbs_cq_moderation_caps), + ('max_dm_size', ctypes.c_uint64), + ('xrc_odp_caps', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), +] + +class struct_ib_uverbs_query_port(Structure): + pass + +struct_ib_uverbs_query_port._pack_ = 1 # source:False +struct_ib_uverbs_query_port._fields_ = [ + ('response', ctypes.c_uint64), + ('port_num', ctypes.c_ubyte), + ('reserved', ctypes.c_ubyte * 7), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_query_port_resp(Structure): + pass + +struct_ib_uverbs_query_port_resp._pack_ = 1 # source:False +struct_ib_uverbs_query_port_resp._fields_ = [ + ('port_cap_flags', ctypes.c_uint32), + ('max_msg_sz', ctypes.c_uint32), + ('bad_pkey_cntr', ctypes.c_uint32), + ('qkey_viol_cntr', ctypes.c_uint32), + ('gid_tbl_len', ctypes.c_uint32), + ('pkey_tbl_len', ctypes.c_uint16), + ('lid', ctypes.c_uint16), + ('sm_lid', ctypes.c_uint16), + ('state', ctypes.c_ubyte), + ('max_mtu', ctypes.c_ubyte), + ('active_mtu', ctypes.c_ubyte), + ('lmc', ctypes.c_ubyte), + ('max_vl_num', ctypes.c_ubyte), + ('sm_sl', ctypes.c_ubyte), + ('subnet_timeout', ctypes.c_ubyte), + ('init_type_reply', ctypes.c_ubyte), + ('active_width', ctypes.c_ubyte), + ('active_speed', ctypes.c_ubyte), + ('phys_state', ctypes.c_ubyte), + ('link_layer', ctypes.c_ubyte), + ('flags', ctypes.c_ubyte), + ('reserved', ctypes.c_ubyte), +] + +class struct_ib_uverbs_alloc_pd(Structure): + pass + +struct_ib_uverbs_alloc_pd._pack_ = 1 # source:False +struct_ib_uverbs_alloc_pd._fields_ = [ + ('response', ctypes.c_uint64), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_alloc_pd_resp(Structure): + pass + +struct_ib_uverbs_alloc_pd_resp._pack_ = 1 # source:False +struct_ib_uverbs_alloc_pd_resp._fields_ = [ + ('pd_handle', ctypes.c_uint32), + ('driver_data', ctypes.c_uint32 * 0), +] + +class struct_ib_uverbs_dealloc_pd(Structure): + pass + +struct_ib_uverbs_dealloc_pd._pack_ = 1 # source:False +struct_ib_uverbs_dealloc_pd._fields_ = [ + ('pd_handle', ctypes.c_uint32), +] + +class struct_ib_uverbs_open_xrcd(Structure): + pass + +struct_ib_uverbs_open_xrcd._pack_ = 1 # source:False +struct_ib_uverbs_open_xrcd._fields_ = [ + ('response', ctypes.c_uint64), + ('fd', ctypes.c_uint32), + ('oflags', ctypes.c_uint32), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_open_xrcd_resp(Structure): + pass + +struct_ib_uverbs_open_xrcd_resp._pack_ = 1 # source:False +struct_ib_uverbs_open_xrcd_resp._fields_ = [ + ('xrcd_handle', ctypes.c_uint32), + ('driver_data', ctypes.c_uint32 * 0), +] + +class struct_ib_uverbs_close_xrcd(Structure): + pass + +struct_ib_uverbs_close_xrcd._pack_ = 1 # source:False +struct_ib_uverbs_close_xrcd._fields_ = [ + ('xrcd_handle', ctypes.c_uint32), +] + +class struct_ib_uverbs_reg_mr(Structure): + pass + +struct_ib_uverbs_reg_mr._pack_ = 1 # source:False +struct_ib_uverbs_reg_mr._fields_ = [ + ('response', ctypes.c_uint64), + ('start', ctypes.c_uint64), + ('length', ctypes.c_uint64), + ('hca_va', ctypes.c_uint64), + ('pd_handle', ctypes.c_uint32), + ('access_flags', ctypes.c_uint32), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_reg_mr_resp(Structure): + pass + +struct_ib_uverbs_reg_mr_resp._pack_ = 1 # source:False +struct_ib_uverbs_reg_mr_resp._fields_ = [ + ('mr_handle', ctypes.c_uint32), + ('lkey', ctypes.c_uint32), + ('rkey', ctypes.c_uint32), + ('driver_data', ctypes.c_uint32 * 0), +] + +class struct_ib_uverbs_rereg_mr(Structure): + pass + +struct_ib_uverbs_rereg_mr._pack_ = 1 # source:False +struct_ib_uverbs_rereg_mr._fields_ = [ + ('response', ctypes.c_uint64), + ('mr_handle', ctypes.c_uint32), + ('flags', ctypes.c_uint32), + ('start', ctypes.c_uint64), + ('length', ctypes.c_uint64), + ('hca_va', ctypes.c_uint64), + ('pd_handle', ctypes.c_uint32), + ('access_flags', ctypes.c_uint32), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_rereg_mr_resp(Structure): + pass + +struct_ib_uverbs_rereg_mr_resp._pack_ = 1 # source:False +struct_ib_uverbs_rereg_mr_resp._fields_ = [ + ('lkey', ctypes.c_uint32), + ('rkey', ctypes.c_uint32), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_dereg_mr(Structure): + pass + +struct_ib_uverbs_dereg_mr._pack_ = 1 # source:False +struct_ib_uverbs_dereg_mr._fields_ = [ + ('mr_handle', ctypes.c_uint32), +] + +class struct_ib_uverbs_alloc_mw(Structure): + pass + +struct_ib_uverbs_alloc_mw._pack_ = 1 # source:False +struct_ib_uverbs_alloc_mw._fields_ = [ + ('response', ctypes.c_uint64), + ('pd_handle', ctypes.c_uint32), + ('mw_type', ctypes.c_ubyte), + ('reserved', ctypes.c_ubyte * 3), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_alloc_mw_resp(Structure): + pass + +struct_ib_uverbs_alloc_mw_resp._pack_ = 1 # source:False +struct_ib_uverbs_alloc_mw_resp._fields_ = [ + ('mw_handle', ctypes.c_uint32), + ('rkey', ctypes.c_uint32), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_dealloc_mw(Structure): + pass + +struct_ib_uverbs_dealloc_mw._pack_ = 1 # source:False +struct_ib_uverbs_dealloc_mw._fields_ = [ + ('mw_handle', ctypes.c_uint32), +] + +class struct_ib_uverbs_create_comp_channel(Structure): + pass + +struct_ib_uverbs_create_comp_channel._pack_ = 1 # source:False +struct_ib_uverbs_create_comp_channel._fields_ = [ + ('response', ctypes.c_uint64), +] + +class struct_ib_uverbs_create_comp_channel_resp(Structure): + pass + +struct_ib_uverbs_create_comp_channel_resp._pack_ = 1 # source:False +struct_ib_uverbs_create_comp_channel_resp._fields_ = [ + ('fd', ctypes.c_uint32), +] + +class struct_ib_uverbs_create_cq(Structure): + pass + +struct_ib_uverbs_create_cq._pack_ = 1 # source:False +struct_ib_uverbs_create_cq._fields_ = [ + ('response', ctypes.c_uint64), + ('user_handle', ctypes.c_uint64), + ('cqe', ctypes.c_uint32), + ('comp_vector', ctypes.c_uint32), + ('comp_channel', ctypes.c_int32), + ('reserved', ctypes.c_uint32), + ('driver_data', ctypes.c_uint64 * 0), +] + + +# values for enumeration 'ib_uverbs_ex_create_cq_flags' +ib_uverbs_ex_create_cq_flags__enumvalues = { + 1: 'IB_UVERBS_CQ_FLAGS_TIMESTAMP_COMPLETION', + 2: 'IB_UVERBS_CQ_FLAGS_IGNORE_OVERRUN', +} +IB_UVERBS_CQ_FLAGS_TIMESTAMP_COMPLETION = 1 +IB_UVERBS_CQ_FLAGS_IGNORE_OVERRUN = 2 +ib_uverbs_ex_create_cq_flags = ctypes.c_uint32 # enum +class struct_ib_uverbs_ex_create_cq(Structure): + pass + +struct_ib_uverbs_ex_create_cq._pack_ = 1 # source:False +struct_ib_uverbs_ex_create_cq._fields_ = [ + ('user_handle', ctypes.c_uint64), + ('cqe', ctypes.c_uint32), + ('comp_vector', ctypes.c_uint32), + ('comp_channel', ctypes.c_int32), + ('comp_mask', ctypes.c_uint32), + ('flags', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), +] + +class struct_ib_uverbs_create_cq_resp(Structure): + pass + +struct_ib_uverbs_create_cq_resp._pack_ = 1 # source:False +struct_ib_uverbs_create_cq_resp._fields_ = [ + ('cq_handle', ctypes.c_uint32), + ('cqe', ctypes.c_uint32), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_ex_create_cq_resp(Structure): + pass + +struct_ib_uverbs_ex_create_cq_resp._pack_ = 1 # source:False +struct_ib_uverbs_ex_create_cq_resp._fields_ = [ + ('base', struct_ib_uverbs_create_cq_resp), + ('comp_mask', ctypes.c_uint32), + ('response_length', ctypes.c_uint32), +] + +class struct_ib_uverbs_resize_cq(Structure): + pass + +struct_ib_uverbs_resize_cq._pack_ = 1 # source:False +struct_ib_uverbs_resize_cq._fields_ = [ + ('response', ctypes.c_uint64), + ('cq_handle', ctypes.c_uint32), + ('cqe', ctypes.c_uint32), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_resize_cq_resp(Structure): + pass + +struct_ib_uverbs_resize_cq_resp._pack_ = 1 # source:False +struct_ib_uverbs_resize_cq_resp._fields_ = [ + ('cqe', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_poll_cq(Structure): + pass + +struct_ib_uverbs_poll_cq._pack_ = 1 # source:False +struct_ib_uverbs_poll_cq._fields_ = [ + ('response', ctypes.c_uint64), + ('cq_handle', ctypes.c_uint32), + ('ne', ctypes.c_uint32), +] + + +# values for enumeration 'ib_uverbs_wc_opcode' +ib_uverbs_wc_opcode__enumvalues = { + 0: 'IB_UVERBS_WC_SEND', + 1: 'IB_UVERBS_WC_RDMA_WRITE', + 2: 'IB_UVERBS_WC_RDMA_READ', + 3: 'IB_UVERBS_WC_COMP_SWAP', + 4: 'IB_UVERBS_WC_FETCH_ADD', + 5: 'IB_UVERBS_WC_BIND_MW', + 6: 'IB_UVERBS_WC_LOCAL_INV', + 7: 'IB_UVERBS_WC_TSO', + 8: 'IB_UVERBS_WC_FLUSH', + 9: 'IB_UVERBS_WC_ATOMIC_WRITE', +} +IB_UVERBS_WC_SEND = 0 +IB_UVERBS_WC_RDMA_WRITE = 1 +IB_UVERBS_WC_RDMA_READ = 2 +IB_UVERBS_WC_COMP_SWAP = 3 +IB_UVERBS_WC_FETCH_ADD = 4 +IB_UVERBS_WC_BIND_MW = 5 +IB_UVERBS_WC_LOCAL_INV = 6 +IB_UVERBS_WC_TSO = 7 +IB_UVERBS_WC_FLUSH = 8 +IB_UVERBS_WC_ATOMIC_WRITE = 9 +ib_uverbs_wc_opcode = ctypes.c_uint32 # enum +class struct_ib_uverbs_wc(Structure): + pass + +class union_ib_uverbs_wc_ex(Union): + pass + +union_ib_uverbs_wc_ex._pack_ = 1 # source:False +union_ib_uverbs_wc_ex._fields_ = [ + ('imm_data', ctypes.c_uint32), + ('invalidate_rkey', ctypes.c_uint32), +] + +struct_ib_uverbs_wc._pack_ = 1 # source:False +struct_ib_uverbs_wc._fields_ = [ + ('wr_id', ctypes.c_uint64), + ('status', ctypes.c_uint32), + ('opcode', ctypes.c_uint32), + ('vendor_err', ctypes.c_uint32), + ('byte_len', ctypes.c_uint32), + ('ex', union_ib_uverbs_wc_ex), + ('qp_num', ctypes.c_uint32), + ('src_qp', ctypes.c_uint32), + ('wc_flags', ctypes.c_uint32), + ('pkey_index', ctypes.c_uint16), + ('slid', ctypes.c_uint16), + ('sl', ctypes.c_ubyte), + ('dlid_path_bits', ctypes.c_ubyte), + ('port_num', ctypes.c_ubyte), + ('reserved', ctypes.c_ubyte), +] + +class struct_ib_uverbs_poll_cq_resp(Structure): + pass + +struct_ib_uverbs_poll_cq_resp._pack_ = 1 # source:False +struct_ib_uverbs_poll_cq_resp._fields_ = [ + ('count', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), + ('wc', struct_ib_uverbs_wc * 0), +] + +class struct_ib_uverbs_req_notify_cq(Structure): + pass + +struct_ib_uverbs_req_notify_cq._pack_ = 1 # source:False +struct_ib_uverbs_req_notify_cq._fields_ = [ + ('cq_handle', ctypes.c_uint32), + ('solicited_only', ctypes.c_uint32), +] + +class struct_ib_uverbs_destroy_cq(Structure): + pass + +struct_ib_uverbs_destroy_cq._pack_ = 1 # source:False +struct_ib_uverbs_destroy_cq._fields_ = [ + ('response', ctypes.c_uint64), + ('cq_handle', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), +] + +class struct_ib_uverbs_destroy_cq_resp(Structure): + pass + +struct_ib_uverbs_destroy_cq_resp._pack_ = 1 # source:False +struct_ib_uverbs_destroy_cq_resp._fields_ = [ + ('comp_events_reported', ctypes.c_uint32), + ('async_events_reported', ctypes.c_uint32), +] + +class struct_ib_uverbs_global_route(Structure): + pass + +struct_ib_uverbs_global_route._pack_ = 1 # source:False +struct_ib_uverbs_global_route._fields_ = [ + ('dgid', ctypes.c_ubyte * 16), + ('flow_label', ctypes.c_uint32), + ('sgid_index', ctypes.c_ubyte), + ('hop_limit', ctypes.c_ubyte), + ('traffic_class', ctypes.c_ubyte), + ('reserved', ctypes.c_ubyte), +] + +class struct_ib_uverbs_ah_attr(Structure): + pass + +struct_ib_uverbs_ah_attr._pack_ = 1 # source:False +struct_ib_uverbs_ah_attr._fields_ = [ + ('grh', struct_ib_uverbs_global_route), + ('dlid', ctypes.c_uint16), + ('sl', ctypes.c_ubyte), + ('src_path_bits', ctypes.c_ubyte), + ('static_rate', ctypes.c_ubyte), + ('is_global', ctypes.c_ubyte), + ('port_num', ctypes.c_ubyte), + ('reserved', ctypes.c_ubyte), +] + +class struct_ib_uverbs_qp_attr(Structure): + pass + +struct_ib_uverbs_qp_attr._pack_ = 1 # source:False +struct_ib_uverbs_qp_attr._fields_ = [ + ('qp_attr_mask', ctypes.c_uint32), + ('qp_state', ctypes.c_uint32), + ('cur_qp_state', ctypes.c_uint32), + ('path_mtu', ctypes.c_uint32), + ('path_mig_state', ctypes.c_uint32), + ('qkey', ctypes.c_uint32), + ('rq_psn', ctypes.c_uint32), + ('sq_psn', ctypes.c_uint32), + ('dest_qp_num', ctypes.c_uint32), + ('qp_access_flags', ctypes.c_uint32), + ('ah_attr', struct_ib_uverbs_ah_attr), + ('alt_ah_attr', struct_ib_uverbs_ah_attr), + ('max_send_wr', ctypes.c_uint32), + ('max_recv_wr', ctypes.c_uint32), + ('max_send_sge', ctypes.c_uint32), + ('max_recv_sge', ctypes.c_uint32), + ('max_inline_data', ctypes.c_uint32), + ('pkey_index', ctypes.c_uint16), + ('alt_pkey_index', ctypes.c_uint16), + ('en_sqd_async_notify', ctypes.c_ubyte), + ('sq_draining', ctypes.c_ubyte), + ('max_rd_atomic', ctypes.c_ubyte), + ('max_dest_rd_atomic', ctypes.c_ubyte), + ('min_rnr_timer', ctypes.c_ubyte), + ('port_num', ctypes.c_ubyte), + ('timeout', ctypes.c_ubyte), + ('retry_cnt', ctypes.c_ubyte), + ('rnr_retry', ctypes.c_ubyte), + ('alt_port_num', ctypes.c_ubyte), + ('alt_timeout', ctypes.c_ubyte), + ('reserved', ctypes.c_ubyte * 5), +] + +class struct_ib_uverbs_create_qp(Structure): + pass + +struct_ib_uverbs_create_qp._pack_ = 1 # source:False +struct_ib_uverbs_create_qp._fields_ = [ + ('response', ctypes.c_uint64), + ('user_handle', ctypes.c_uint64), + ('pd_handle', ctypes.c_uint32), + ('send_cq_handle', ctypes.c_uint32), + ('recv_cq_handle', ctypes.c_uint32), + ('srq_handle', ctypes.c_uint32), + ('max_send_wr', ctypes.c_uint32), + ('max_recv_wr', ctypes.c_uint32), + ('max_send_sge', ctypes.c_uint32), + ('max_recv_sge', ctypes.c_uint32), + ('max_inline_data', ctypes.c_uint32), + ('sq_sig_all', ctypes.c_ubyte), + ('qp_type', ctypes.c_ubyte), + ('is_srq', ctypes.c_ubyte), + ('reserved', ctypes.c_ubyte), + ('driver_data', ctypes.c_uint64 * 0), +] + + +# values for enumeration 'ib_uverbs_create_qp_mask' +ib_uverbs_create_qp_mask__enumvalues = { + 1: 'IB_UVERBS_CREATE_QP_MASK_IND_TABLE', +} +IB_UVERBS_CREATE_QP_MASK_IND_TABLE = 1 +ib_uverbs_create_qp_mask = ctypes.c_uint32 # enum + +# values for enumeration 'c__Ea_IB_UVERBS_CREATE_QP_SUP_COMP_MASK' +c__Ea_IB_UVERBS_CREATE_QP_SUP_COMP_MASK__enumvalues = { + 1: 'IB_UVERBS_CREATE_QP_SUP_COMP_MASK', +} +IB_UVERBS_CREATE_QP_SUP_COMP_MASK = 1 +c__Ea_IB_UVERBS_CREATE_QP_SUP_COMP_MASK = ctypes.c_uint32 # enum +class struct_ib_uverbs_ex_create_qp(Structure): + pass + +struct_ib_uverbs_ex_create_qp._pack_ = 1 # source:False +struct_ib_uverbs_ex_create_qp._fields_ = [ + ('user_handle', ctypes.c_uint64), + ('pd_handle', ctypes.c_uint32), + ('send_cq_handle', ctypes.c_uint32), + ('recv_cq_handle', ctypes.c_uint32), + ('srq_handle', ctypes.c_uint32), + ('max_send_wr', ctypes.c_uint32), + ('max_recv_wr', ctypes.c_uint32), + ('max_send_sge', ctypes.c_uint32), + ('max_recv_sge', ctypes.c_uint32), + ('max_inline_data', ctypes.c_uint32), + ('sq_sig_all', ctypes.c_ubyte), + ('qp_type', ctypes.c_ubyte), + ('is_srq', ctypes.c_ubyte), + ('reserved', ctypes.c_ubyte), + ('comp_mask', ctypes.c_uint32), + ('create_flags', ctypes.c_uint32), + ('rwq_ind_tbl_handle', ctypes.c_uint32), + ('source_qpn', ctypes.c_uint32), +] + +class struct_ib_uverbs_open_qp(Structure): + pass + +struct_ib_uverbs_open_qp._pack_ = 1 # source:False +struct_ib_uverbs_open_qp._fields_ = [ + ('response', ctypes.c_uint64), + ('user_handle', ctypes.c_uint64), + ('pd_handle', ctypes.c_uint32), + ('qpn', ctypes.c_uint32), + ('qp_type', ctypes.c_ubyte), + ('reserved', ctypes.c_ubyte * 7), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_create_qp_resp(Structure): + pass + +struct_ib_uverbs_create_qp_resp._pack_ = 1 # source:False +struct_ib_uverbs_create_qp_resp._fields_ = [ + ('qp_handle', ctypes.c_uint32), + ('qpn', ctypes.c_uint32), + ('max_send_wr', ctypes.c_uint32), + ('max_recv_wr', ctypes.c_uint32), + ('max_send_sge', ctypes.c_uint32), + ('max_recv_sge', ctypes.c_uint32), + ('max_inline_data', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), + ('driver_data', ctypes.c_uint32 * 0), +] + +class struct_ib_uverbs_ex_create_qp_resp(Structure): + pass + +struct_ib_uverbs_ex_create_qp_resp._pack_ = 1 # source:False +struct_ib_uverbs_ex_create_qp_resp._fields_ = [ + ('base', struct_ib_uverbs_create_qp_resp), + ('comp_mask', ctypes.c_uint32), + ('response_length', ctypes.c_uint32), +] + +class struct_ib_uverbs_qp_dest(Structure): + pass + +struct_ib_uverbs_qp_dest._pack_ = 1 # source:False +struct_ib_uverbs_qp_dest._fields_ = [ + ('dgid', ctypes.c_ubyte * 16), + ('flow_label', ctypes.c_uint32), + ('dlid', ctypes.c_uint16), + ('reserved', ctypes.c_uint16), + ('sgid_index', ctypes.c_ubyte), + ('hop_limit', ctypes.c_ubyte), + ('traffic_class', ctypes.c_ubyte), + ('sl', ctypes.c_ubyte), + ('src_path_bits', ctypes.c_ubyte), + ('static_rate', ctypes.c_ubyte), + ('is_global', ctypes.c_ubyte), + ('port_num', ctypes.c_ubyte), +] + +class struct_ib_uverbs_query_qp(Structure): + pass + +struct_ib_uverbs_query_qp._pack_ = 1 # source:False +struct_ib_uverbs_query_qp._fields_ = [ + ('response', ctypes.c_uint64), + ('qp_handle', ctypes.c_uint32), + ('attr_mask', ctypes.c_uint32), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_query_qp_resp(Structure): + pass + +struct_ib_uverbs_query_qp_resp._pack_ = 1 # source:False +struct_ib_uverbs_query_qp_resp._fields_ = [ + ('dest', struct_ib_uverbs_qp_dest), + ('alt_dest', struct_ib_uverbs_qp_dest), + ('max_send_wr', ctypes.c_uint32), + ('max_recv_wr', ctypes.c_uint32), + ('max_send_sge', ctypes.c_uint32), + ('max_recv_sge', ctypes.c_uint32), + ('max_inline_data', ctypes.c_uint32), + ('qkey', ctypes.c_uint32), + ('rq_psn', ctypes.c_uint32), + ('sq_psn', ctypes.c_uint32), + ('dest_qp_num', ctypes.c_uint32), + ('qp_access_flags', ctypes.c_uint32), + ('pkey_index', ctypes.c_uint16), + ('alt_pkey_index', ctypes.c_uint16), + ('qp_state', ctypes.c_ubyte), + ('cur_qp_state', ctypes.c_ubyte), + ('path_mtu', ctypes.c_ubyte), + ('path_mig_state', ctypes.c_ubyte), + ('sq_draining', ctypes.c_ubyte), + ('max_rd_atomic', ctypes.c_ubyte), + ('max_dest_rd_atomic', ctypes.c_ubyte), + ('min_rnr_timer', ctypes.c_ubyte), + ('port_num', ctypes.c_ubyte), + ('timeout', ctypes.c_ubyte), + ('retry_cnt', ctypes.c_ubyte), + ('rnr_retry', ctypes.c_ubyte), + ('alt_port_num', ctypes.c_ubyte), + ('alt_timeout', ctypes.c_ubyte), + ('sq_sig_all', ctypes.c_ubyte), + ('reserved', ctypes.c_ubyte * 5), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_modify_qp(Structure): + pass + +struct_ib_uverbs_modify_qp._pack_ = 1 # source:False +struct_ib_uverbs_modify_qp._fields_ = [ + ('dest', struct_ib_uverbs_qp_dest), + ('alt_dest', struct_ib_uverbs_qp_dest), + ('qp_handle', ctypes.c_uint32), + ('attr_mask', ctypes.c_uint32), + ('qkey', ctypes.c_uint32), + ('rq_psn', ctypes.c_uint32), + ('sq_psn', ctypes.c_uint32), + ('dest_qp_num', ctypes.c_uint32), + ('qp_access_flags', ctypes.c_uint32), + ('pkey_index', ctypes.c_uint16), + ('alt_pkey_index', ctypes.c_uint16), + ('qp_state', ctypes.c_ubyte), + ('cur_qp_state', ctypes.c_ubyte), + ('path_mtu', ctypes.c_ubyte), + ('path_mig_state', ctypes.c_ubyte), + ('en_sqd_async_notify', ctypes.c_ubyte), + ('max_rd_atomic', ctypes.c_ubyte), + ('max_dest_rd_atomic', ctypes.c_ubyte), + ('min_rnr_timer', ctypes.c_ubyte), + ('port_num', ctypes.c_ubyte), + ('timeout', ctypes.c_ubyte), + ('retry_cnt', ctypes.c_ubyte), + ('rnr_retry', ctypes.c_ubyte), + ('alt_port_num', ctypes.c_ubyte), + ('alt_timeout', ctypes.c_ubyte), + ('reserved', ctypes.c_ubyte * 2), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_ex_modify_qp(Structure): + pass + +struct_ib_uverbs_ex_modify_qp._pack_ = 1 # source:False +struct_ib_uverbs_ex_modify_qp._fields_ = [ + ('base', struct_ib_uverbs_modify_qp), + ('rate_limit', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), +] + +class struct_ib_uverbs_ex_modify_qp_resp(Structure): + pass + +struct_ib_uverbs_ex_modify_qp_resp._pack_ = 1 # source:False +struct_ib_uverbs_ex_modify_qp_resp._fields_ = [ + ('comp_mask', ctypes.c_uint32), + ('response_length', ctypes.c_uint32), +] + +class struct_ib_uverbs_destroy_qp(Structure): + pass + +struct_ib_uverbs_destroy_qp._pack_ = 1 # source:False +struct_ib_uverbs_destroy_qp._fields_ = [ + ('response', ctypes.c_uint64), + ('qp_handle', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), +] + +class struct_ib_uverbs_destroy_qp_resp(Structure): + pass + +struct_ib_uverbs_destroy_qp_resp._pack_ = 1 # source:False +struct_ib_uverbs_destroy_qp_resp._fields_ = [ + ('events_reported', ctypes.c_uint32), +] + +class struct_ib_uverbs_sge(Structure): + pass + +struct_ib_uverbs_sge._pack_ = 1 # source:False +struct_ib_uverbs_sge._fields_ = [ + ('addr', ctypes.c_uint64), + ('length', ctypes.c_uint32), + ('lkey', ctypes.c_uint32), +] + + +# values for enumeration 'ib_uverbs_wr_opcode' +ib_uverbs_wr_opcode__enumvalues = { + 0: 'IB_UVERBS_WR_RDMA_WRITE', + 1: 'IB_UVERBS_WR_RDMA_WRITE_WITH_IMM', + 2: 'IB_UVERBS_WR_SEND', + 3: 'IB_UVERBS_WR_SEND_WITH_IMM', + 4: 'IB_UVERBS_WR_RDMA_READ', + 5: 'IB_UVERBS_WR_ATOMIC_CMP_AND_SWP', + 6: 'IB_UVERBS_WR_ATOMIC_FETCH_AND_ADD', + 7: 'IB_UVERBS_WR_LOCAL_INV', + 8: 'IB_UVERBS_WR_BIND_MW', + 9: 'IB_UVERBS_WR_SEND_WITH_INV', + 10: 'IB_UVERBS_WR_TSO', + 11: 'IB_UVERBS_WR_RDMA_READ_WITH_INV', + 12: 'IB_UVERBS_WR_MASKED_ATOMIC_CMP_AND_SWP', + 13: 'IB_UVERBS_WR_MASKED_ATOMIC_FETCH_AND_ADD', + 14: 'IB_UVERBS_WR_FLUSH', + 15: 'IB_UVERBS_WR_ATOMIC_WRITE', +} +IB_UVERBS_WR_RDMA_WRITE = 0 +IB_UVERBS_WR_RDMA_WRITE_WITH_IMM = 1 +IB_UVERBS_WR_SEND = 2 +IB_UVERBS_WR_SEND_WITH_IMM = 3 +IB_UVERBS_WR_RDMA_READ = 4 +IB_UVERBS_WR_ATOMIC_CMP_AND_SWP = 5 +IB_UVERBS_WR_ATOMIC_FETCH_AND_ADD = 6 +IB_UVERBS_WR_LOCAL_INV = 7 +IB_UVERBS_WR_BIND_MW = 8 +IB_UVERBS_WR_SEND_WITH_INV = 9 +IB_UVERBS_WR_TSO = 10 +IB_UVERBS_WR_RDMA_READ_WITH_INV = 11 +IB_UVERBS_WR_MASKED_ATOMIC_CMP_AND_SWP = 12 +IB_UVERBS_WR_MASKED_ATOMIC_FETCH_AND_ADD = 13 +IB_UVERBS_WR_FLUSH = 14 +IB_UVERBS_WR_ATOMIC_WRITE = 15 +ib_uverbs_wr_opcode = ctypes.c_uint32 # enum +class struct_ib_uverbs_send_wr(Structure): + pass + +class union_ib_uverbs_send_wr_ex(Union): + pass + +union_ib_uverbs_send_wr_ex._pack_ = 1 # source:False +union_ib_uverbs_send_wr_ex._fields_ = [ + ('imm_data', ctypes.c_uint32), + ('invalidate_rkey', ctypes.c_uint32), +] + +class union_ib_uverbs_send_wr_wr(Union): + pass + +class struct_ib_uverbs_send_wr_1_rdma(Structure): + pass + +struct_ib_uverbs_send_wr_1_rdma._pack_ = 1 # source:False +struct_ib_uverbs_send_wr_1_rdma._fields_ = [ + ('remote_addr', ctypes.c_uint64), + ('rkey', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), +] + +class struct_ib_uverbs_send_wr_1_atomic(Structure): + pass + +struct_ib_uverbs_send_wr_1_atomic._pack_ = 1 # source:False +struct_ib_uverbs_send_wr_1_atomic._fields_ = [ + ('remote_addr', ctypes.c_uint64), + ('compare_add', ctypes.c_uint64), + ('swap', ctypes.c_uint64), + ('rkey', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), +] + +class struct_ib_uverbs_send_wr_1_ud(Structure): + pass + +struct_ib_uverbs_send_wr_1_ud._pack_ = 1 # source:False +struct_ib_uverbs_send_wr_1_ud._fields_ = [ + ('ah', ctypes.c_uint32), + ('remote_qpn', ctypes.c_uint32), + ('remote_qkey', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), +] + +union_ib_uverbs_send_wr_wr._pack_ = 1 # source:False +union_ib_uverbs_send_wr_wr._fields_ = [ + ('rdma', struct_ib_uverbs_send_wr_1_rdma), + ('atomic', struct_ib_uverbs_send_wr_1_atomic), + ('ud', struct_ib_uverbs_send_wr_1_ud), + ('PADDING_0', ctypes.c_ubyte * 16), +] + +struct_ib_uverbs_send_wr._pack_ = 1 # source:False +struct_ib_uverbs_send_wr._fields_ = [ + ('wr_id', ctypes.c_uint64), + ('num_sge', ctypes.c_uint32), + ('opcode', ctypes.c_uint32), + ('send_flags', ctypes.c_uint32), + ('ex', union_ib_uverbs_send_wr_ex), + ('wr', union_ib_uverbs_send_wr_wr), +] + +class struct_ib_uverbs_post_send(Structure): + pass + +struct_ib_uverbs_post_send._pack_ = 1 # source:False +struct_ib_uverbs_post_send._fields_ = [ + ('response', ctypes.c_uint64), + ('qp_handle', ctypes.c_uint32), + ('wr_count', ctypes.c_uint32), + ('sge_count', ctypes.c_uint32), + ('wqe_size', ctypes.c_uint32), + ('send_wr', struct_ib_uverbs_send_wr * 0), +] + +class struct_ib_uverbs_post_send_resp(Structure): + pass + +struct_ib_uverbs_post_send_resp._pack_ = 1 # source:False +struct_ib_uverbs_post_send_resp._fields_ = [ + ('bad_wr', ctypes.c_uint32), +] + +class struct_ib_uverbs_recv_wr(Structure): + pass + +struct_ib_uverbs_recv_wr._pack_ = 1 # source:False +struct_ib_uverbs_recv_wr._fields_ = [ + ('wr_id', ctypes.c_uint64), + ('num_sge', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), +] + +class struct_ib_uverbs_post_recv(Structure): + pass + +struct_ib_uverbs_post_recv._pack_ = 1 # source:False +struct_ib_uverbs_post_recv._fields_ = [ + ('response', ctypes.c_uint64), + ('qp_handle', ctypes.c_uint32), + ('wr_count', ctypes.c_uint32), + ('sge_count', ctypes.c_uint32), + ('wqe_size', ctypes.c_uint32), + ('recv_wr', struct_ib_uverbs_recv_wr * 0), +] + +class struct_ib_uverbs_post_recv_resp(Structure): + pass + +struct_ib_uverbs_post_recv_resp._pack_ = 1 # source:False +struct_ib_uverbs_post_recv_resp._fields_ = [ + ('bad_wr', ctypes.c_uint32), +] + +class struct_ib_uverbs_post_srq_recv(Structure): + pass + +struct_ib_uverbs_post_srq_recv._pack_ = 1 # source:False +struct_ib_uverbs_post_srq_recv._fields_ = [ + ('response', ctypes.c_uint64), + ('srq_handle', ctypes.c_uint32), + ('wr_count', ctypes.c_uint32), + ('sge_count', ctypes.c_uint32), + ('wqe_size', ctypes.c_uint32), + ('recv', struct_ib_uverbs_recv_wr * 0), +] + +class struct_ib_uverbs_post_srq_recv_resp(Structure): + pass + +struct_ib_uverbs_post_srq_recv_resp._pack_ = 1 # source:False +struct_ib_uverbs_post_srq_recv_resp._fields_ = [ + ('bad_wr', ctypes.c_uint32), +] + +class struct_ib_uverbs_create_ah(Structure): + pass + +struct_ib_uverbs_create_ah._pack_ = 1 # source:False +struct_ib_uverbs_create_ah._fields_ = [ + ('response', ctypes.c_uint64), + ('user_handle', ctypes.c_uint64), + ('pd_handle', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), + ('attr', struct_ib_uverbs_ah_attr), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_create_ah_resp(Structure): + pass + +struct_ib_uverbs_create_ah_resp._pack_ = 1 # source:False +struct_ib_uverbs_create_ah_resp._fields_ = [ + ('ah_handle', ctypes.c_uint32), + ('driver_data', ctypes.c_uint32 * 0), +] + +class struct_ib_uverbs_destroy_ah(Structure): + pass + +struct_ib_uverbs_destroy_ah._pack_ = 1 # source:False +struct_ib_uverbs_destroy_ah._fields_ = [ + ('ah_handle', ctypes.c_uint32), +] + +class struct_ib_uverbs_attach_mcast(Structure): + pass + +struct_ib_uverbs_attach_mcast._pack_ = 1 # source:False +struct_ib_uverbs_attach_mcast._fields_ = [ + ('gid', ctypes.c_ubyte * 16), + ('qp_handle', ctypes.c_uint32), + ('mlid', ctypes.c_uint16), + ('reserved', ctypes.c_uint16), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_detach_mcast(Structure): + pass + +struct_ib_uverbs_detach_mcast._pack_ = 1 # source:False +struct_ib_uverbs_detach_mcast._fields_ = [ + ('gid', ctypes.c_ubyte * 16), + ('qp_handle', ctypes.c_uint32), + ('mlid', ctypes.c_uint16), + ('reserved', ctypes.c_uint16), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_flow_spec_hdr(Structure): + pass + +struct_ib_uverbs_flow_spec_hdr._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_hdr._fields_ = [ + ('type', ctypes.c_uint32), + ('size', ctypes.c_uint16), + ('reserved', ctypes.c_uint16), + ('flow_spec_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_flow_eth_filter(Structure): + pass + +struct_ib_uverbs_flow_eth_filter._pack_ = 1 # source:False +struct_ib_uverbs_flow_eth_filter._fields_ = [ + ('dst_mac', ctypes.c_ubyte * 6), + ('src_mac', ctypes.c_ubyte * 6), + ('ether_type', ctypes.c_uint16), + ('vlan_tag', ctypes.c_uint16), +] + +class struct_ib_uverbs_flow_spec_eth(Structure): + pass + +class union_ib_uverbs_flow_spec_eth_0(Union): + pass + +class struct_ib_uverbs_flow_spec_eth_0_0(Structure): + pass + +struct_ib_uverbs_flow_spec_eth_0_0._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_eth_0_0._fields_ = [ + ('type', ctypes.c_uint32), + ('size', ctypes.c_uint16), + ('reserved', ctypes.c_uint16), +] + +union_ib_uverbs_flow_spec_eth_0._pack_ = 1 # source:False +union_ib_uverbs_flow_spec_eth_0._anonymous_ = ('_0',) +union_ib_uverbs_flow_spec_eth_0._fields_ = [ + ('hdr', struct_ib_uverbs_flow_spec_hdr), + ('_0', struct_ib_uverbs_flow_spec_eth_0_0), +] + +struct_ib_uverbs_flow_spec_eth._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_eth._anonymous_ = ('_0',) +struct_ib_uverbs_flow_spec_eth._fields_ = [ + ('_0', union_ib_uverbs_flow_spec_eth_0), + ('val', struct_ib_uverbs_flow_eth_filter), + ('mask', struct_ib_uverbs_flow_eth_filter), +] + +class struct_ib_uverbs_flow_ipv4_filter(Structure): + pass + +struct_ib_uverbs_flow_ipv4_filter._pack_ = 1 # source:False +struct_ib_uverbs_flow_ipv4_filter._fields_ = [ + ('src_ip', ctypes.c_uint32), + ('dst_ip', ctypes.c_uint32), + ('proto', ctypes.c_ubyte), + ('tos', ctypes.c_ubyte), + ('ttl', ctypes.c_ubyte), + ('flags', ctypes.c_ubyte), +] + +class struct_ib_uverbs_flow_spec_ipv4(Structure): + pass + +class union_ib_uverbs_flow_spec_ipv4_0(Union): + pass + +class struct_ib_uverbs_flow_spec_ipv4_0_0(Structure): + pass + +struct_ib_uverbs_flow_spec_ipv4_0_0._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_ipv4_0_0._fields_ = [ + ('type', ctypes.c_uint32), + ('size', ctypes.c_uint16), + ('reserved', ctypes.c_uint16), +] + +union_ib_uverbs_flow_spec_ipv4_0._pack_ = 1 # source:False +union_ib_uverbs_flow_spec_ipv4_0._anonymous_ = ('_0',) +union_ib_uverbs_flow_spec_ipv4_0._fields_ = [ + ('hdr', struct_ib_uverbs_flow_spec_hdr), + ('_0', struct_ib_uverbs_flow_spec_ipv4_0_0), +] + +struct_ib_uverbs_flow_spec_ipv4._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_ipv4._anonymous_ = ('_0',) +struct_ib_uverbs_flow_spec_ipv4._fields_ = [ + ('_0', union_ib_uverbs_flow_spec_ipv4_0), + ('val', struct_ib_uverbs_flow_ipv4_filter), + ('mask', struct_ib_uverbs_flow_ipv4_filter), +] + +class struct_ib_uverbs_flow_tcp_udp_filter(Structure): + pass + +struct_ib_uverbs_flow_tcp_udp_filter._pack_ = 1 # source:False +struct_ib_uverbs_flow_tcp_udp_filter._fields_ = [ + ('dst_port', ctypes.c_uint16), + ('src_port', ctypes.c_uint16), +] + +class struct_ib_uverbs_flow_spec_tcp_udp(Structure): + pass + +class union_ib_uverbs_flow_spec_tcp_udp_0(Union): + pass + +class struct_ib_uverbs_flow_spec_tcp_udp_0_0(Structure): + pass + +struct_ib_uverbs_flow_spec_tcp_udp_0_0._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_tcp_udp_0_0._fields_ = [ + ('type', ctypes.c_uint32), + ('size', ctypes.c_uint16), + ('reserved', ctypes.c_uint16), +] + +union_ib_uverbs_flow_spec_tcp_udp_0._pack_ = 1 # source:False +union_ib_uverbs_flow_spec_tcp_udp_0._anonymous_ = ('_0',) +union_ib_uverbs_flow_spec_tcp_udp_0._fields_ = [ + ('hdr', struct_ib_uverbs_flow_spec_hdr), + ('_0', struct_ib_uverbs_flow_spec_tcp_udp_0_0), +] + +struct_ib_uverbs_flow_spec_tcp_udp._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_tcp_udp._anonymous_ = ('_0',) +struct_ib_uverbs_flow_spec_tcp_udp._fields_ = [ + ('_0', union_ib_uverbs_flow_spec_tcp_udp_0), + ('val', struct_ib_uverbs_flow_tcp_udp_filter), + ('mask', struct_ib_uverbs_flow_tcp_udp_filter), +] + +class struct_ib_uverbs_flow_ipv6_filter(Structure): + pass + +struct_ib_uverbs_flow_ipv6_filter._pack_ = 1 # source:False +struct_ib_uverbs_flow_ipv6_filter._fields_ = [ + ('src_ip', ctypes.c_ubyte * 16), + ('dst_ip', ctypes.c_ubyte * 16), + ('flow_label', ctypes.c_uint32), + ('next_hdr', ctypes.c_ubyte), + ('traffic_class', ctypes.c_ubyte), + ('hop_limit', ctypes.c_ubyte), + ('reserved', ctypes.c_ubyte), +] + +class struct_ib_uverbs_flow_spec_ipv6(Structure): + pass + +class union_ib_uverbs_flow_spec_ipv6_0(Union): + pass + +class struct_ib_uverbs_flow_spec_ipv6_0_0(Structure): + pass + +struct_ib_uverbs_flow_spec_ipv6_0_0._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_ipv6_0_0._fields_ = [ + ('type', ctypes.c_uint32), + ('size', ctypes.c_uint16), + ('reserved', ctypes.c_uint16), +] + +union_ib_uverbs_flow_spec_ipv6_0._pack_ = 1 # source:False +union_ib_uverbs_flow_spec_ipv6_0._anonymous_ = ('_0',) +union_ib_uverbs_flow_spec_ipv6_0._fields_ = [ + ('hdr', struct_ib_uverbs_flow_spec_hdr), + ('_0', struct_ib_uverbs_flow_spec_ipv6_0_0), +] + +struct_ib_uverbs_flow_spec_ipv6._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_ipv6._anonymous_ = ('_0',) +struct_ib_uverbs_flow_spec_ipv6._fields_ = [ + ('_0', union_ib_uverbs_flow_spec_ipv6_0), + ('val', struct_ib_uverbs_flow_ipv6_filter), + ('mask', struct_ib_uverbs_flow_ipv6_filter), +] + +class struct_ib_uverbs_flow_spec_action_tag(Structure): + pass + +class union_ib_uverbs_flow_spec_action_tag_0(Union): + pass + +class struct_ib_uverbs_flow_spec_action_tag_0_0(Structure): + pass + +struct_ib_uverbs_flow_spec_action_tag_0_0._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_action_tag_0_0._fields_ = [ + ('type', ctypes.c_uint32), + ('size', ctypes.c_uint16), + ('reserved', ctypes.c_uint16), +] + +union_ib_uverbs_flow_spec_action_tag_0._pack_ = 1 # source:False +union_ib_uverbs_flow_spec_action_tag_0._anonymous_ = ('_0',) +union_ib_uverbs_flow_spec_action_tag_0._fields_ = [ + ('hdr', struct_ib_uverbs_flow_spec_hdr), + ('_0', struct_ib_uverbs_flow_spec_action_tag_0_0), +] + +struct_ib_uverbs_flow_spec_action_tag._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_action_tag._anonymous_ = ('_0',) +struct_ib_uverbs_flow_spec_action_tag._fields_ = [ + ('_0', union_ib_uverbs_flow_spec_action_tag_0), + ('tag_id', ctypes.c_uint32), + ('reserved1', ctypes.c_uint32), +] + +class struct_ib_uverbs_flow_spec_action_drop(Structure): + pass + +class union_ib_uverbs_flow_spec_action_drop_0(Union): + pass + +class struct_ib_uverbs_flow_spec_action_drop_0_0(Structure): + pass + +struct_ib_uverbs_flow_spec_action_drop_0_0._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_action_drop_0_0._fields_ = [ + ('type', ctypes.c_uint32), + ('size', ctypes.c_uint16), + ('reserved', ctypes.c_uint16), +] + +union_ib_uverbs_flow_spec_action_drop_0._pack_ = 1 # source:False +union_ib_uverbs_flow_spec_action_drop_0._anonymous_ = ('_0',) +union_ib_uverbs_flow_spec_action_drop_0._fields_ = [ + ('hdr', struct_ib_uverbs_flow_spec_hdr), + ('_0', struct_ib_uverbs_flow_spec_action_drop_0_0), +] + +struct_ib_uverbs_flow_spec_action_drop._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_action_drop._anonymous_ = ('_0',) +struct_ib_uverbs_flow_spec_action_drop._fields_ = [ + ('_0', union_ib_uverbs_flow_spec_action_drop_0), +] + +class struct_ib_uverbs_flow_spec_action_handle(Structure): + pass + +class union_ib_uverbs_flow_spec_action_handle_0(Union): + pass + +class struct_ib_uverbs_flow_spec_action_handle_0_0(Structure): + pass + +struct_ib_uverbs_flow_spec_action_handle_0_0._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_action_handle_0_0._fields_ = [ + ('type', ctypes.c_uint32), + ('size', ctypes.c_uint16), + ('reserved', ctypes.c_uint16), +] + +union_ib_uverbs_flow_spec_action_handle_0._pack_ = 1 # source:False +union_ib_uverbs_flow_spec_action_handle_0._anonymous_ = ('_0',) +union_ib_uverbs_flow_spec_action_handle_0._fields_ = [ + ('hdr', struct_ib_uverbs_flow_spec_hdr), + ('_0', struct_ib_uverbs_flow_spec_action_handle_0_0), +] + +struct_ib_uverbs_flow_spec_action_handle._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_action_handle._anonymous_ = ('_0',) +struct_ib_uverbs_flow_spec_action_handle._fields_ = [ + ('_0', union_ib_uverbs_flow_spec_action_handle_0), + ('handle', ctypes.c_uint32), + ('reserved1', ctypes.c_uint32), +] + +class struct_ib_uverbs_flow_spec_action_count(Structure): + pass + +class union_ib_uverbs_flow_spec_action_count_0(Union): + pass + +class struct_ib_uverbs_flow_spec_action_count_0_0(Structure): + pass + +struct_ib_uverbs_flow_spec_action_count_0_0._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_action_count_0_0._fields_ = [ + ('type', ctypes.c_uint32), + ('size', ctypes.c_uint16), + ('reserved', ctypes.c_uint16), +] + +union_ib_uverbs_flow_spec_action_count_0._pack_ = 1 # source:False +union_ib_uverbs_flow_spec_action_count_0._anonymous_ = ('_0',) +union_ib_uverbs_flow_spec_action_count_0._fields_ = [ + ('hdr', struct_ib_uverbs_flow_spec_hdr), + ('_0', struct_ib_uverbs_flow_spec_action_count_0_0), +] + +struct_ib_uverbs_flow_spec_action_count._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_action_count._anonymous_ = ('_0',) +struct_ib_uverbs_flow_spec_action_count._fields_ = [ + ('_0', union_ib_uverbs_flow_spec_action_count_0), + ('handle', ctypes.c_uint32), + ('reserved1', ctypes.c_uint32), +] + +class struct_ib_uverbs_flow_tunnel_filter(Structure): + pass + +struct_ib_uverbs_flow_tunnel_filter._pack_ = 1 # source:False +struct_ib_uverbs_flow_tunnel_filter._fields_ = [ + ('tunnel_id', ctypes.c_uint32), +] + +class struct_ib_uverbs_flow_spec_tunnel(Structure): + pass + +class union_ib_uverbs_flow_spec_tunnel_0(Union): + pass + +class struct_ib_uverbs_flow_spec_tunnel_0_0(Structure): + pass + +struct_ib_uverbs_flow_spec_tunnel_0_0._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_tunnel_0_0._fields_ = [ + ('type', ctypes.c_uint32), + ('size', ctypes.c_uint16), + ('reserved', ctypes.c_uint16), +] + +union_ib_uverbs_flow_spec_tunnel_0._pack_ = 1 # source:False +union_ib_uverbs_flow_spec_tunnel_0._anonymous_ = ('_0',) +union_ib_uverbs_flow_spec_tunnel_0._fields_ = [ + ('hdr', struct_ib_uverbs_flow_spec_hdr), + ('_0', struct_ib_uverbs_flow_spec_tunnel_0_0), +] + +struct_ib_uverbs_flow_spec_tunnel._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_tunnel._anonymous_ = ('_0',) +struct_ib_uverbs_flow_spec_tunnel._fields_ = [ + ('_0', union_ib_uverbs_flow_spec_tunnel_0), + ('val', struct_ib_uverbs_flow_tunnel_filter), + ('mask', struct_ib_uverbs_flow_tunnel_filter), +] + +class struct_ib_uverbs_flow_spec_esp_filter(Structure): + pass + +struct_ib_uverbs_flow_spec_esp_filter._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_esp_filter._fields_ = [ + ('spi', ctypes.c_uint32), + ('seq', ctypes.c_uint32), +] + +class struct_ib_uverbs_flow_spec_esp(Structure): + pass + +class union_ib_uverbs_flow_spec_esp_0(Union): + pass + +class struct_ib_uverbs_flow_spec_esp_0_0(Structure): + pass + +struct_ib_uverbs_flow_spec_esp_0_0._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_esp_0_0._fields_ = [ + ('type', ctypes.c_uint32), + ('size', ctypes.c_uint16), + ('reserved', ctypes.c_uint16), +] + +union_ib_uverbs_flow_spec_esp_0._pack_ = 1 # source:False +union_ib_uverbs_flow_spec_esp_0._anonymous_ = ('_0',) +union_ib_uverbs_flow_spec_esp_0._fields_ = [ + ('hdr', struct_ib_uverbs_flow_spec_hdr), + ('_0', struct_ib_uverbs_flow_spec_esp_0_0), +] + +struct_ib_uverbs_flow_spec_esp._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_esp._anonymous_ = ('_0',) +struct_ib_uverbs_flow_spec_esp._fields_ = [ + ('_0', union_ib_uverbs_flow_spec_esp_0), + ('val', struct_ib_uverbs_flow_spec_esp_filter), + ('mask', struct_ib_uverbs_flow_spec_esp_filter), +] + +class struct_ib_uverbs_flow_gre_filter(Structure): + pass + +struct_ib_uverbs_flow_gre_filter._pack_ = 1 # source:False +struct_ib_uverbs_flow_gre_filter._fields_ = [ + ('c_ks_res0_ver', ctypes.c_uint16), + ('protocol', ctypes.c_uint16), + ('key', ctypes.c_uint32), +] + +class struct_ib_uverbs_flow_spec_gre(Structure): + pass + +class union_ib_uverbs_flow_spec_gre_0(Union): + pass + +class struct_ib_uverbs_flow_spec_gre_0_0(Structure): + pass + +struct_ib_uverbs_flow_spec_gre_0_0._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_gre_0_0._fields_ = [ + ('type', ctypes.c_uint32), + ('size', ctypes.c_uint16), + ('reserved', ctypes.c_uint16), +] + +union_ib_uverbs_flow_spec_gre_0._pack_ = 1 # source:False +union_ib_uverbs_flow_spec_gre_0._anonymous_ = ('_0',) +union_ib_uverbs_flow_spec_gre_0._fields_ = [ + ('hdr', struct_ib_uverbs_flow_spec_hdr), + ('_0', struct_ib_uverbs_flow_spec_gre_0_0), +] + +struct_ib_uverbs_flow_spec_gre._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_gre._anonymous_ = ('_0',) +struct_ib_uverbs_flow_spec_gre._fields_ = [ + ('_0', union_ib_uverbs_flow_spec_gre_0), + ('val', struct_ib_uverbs_flow_gre_filter), + ('mask', struct_ib_uverbs_flow_gre_filter), +] + +class struct_ib_uverbs_flow_mpls_filter(Structure): + pass + +struct_ib_uverbs_flow_mpls_filter._pack_ = 1 # source:False +struct_ib_uverbs_flow_mpls_filter._fields_ = [ + ('label', ctypes.c_uint32), +] + +class struct_ib_uverbs_flow_spec_mpls(Structure): + pass + +class union_ib_uverbs_flow_spec_mpls_0(Union): + pass + +class struct_ib_uverbs_flow_spec_mpls_0_0(Structure): + pass + +struct_ib_uverbs_flow_spec_mpls_0_0._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_mpls_0_0._fields_ = [ + ('type', ctypes.c_uint32), + ('size', ctypes.c_uint16), + ('reserved', ctypes.c_uint16), +] + +union_ib_uverbs_flow_spec_mpls_0._pack_ = 1 # source:False +union_ib_uverbs_flow_spec_mpls_0._anonymous_ = ('_0',) +union_ib_uverbs_flow_spec_mpls_0._fields_ = [ + ('hdr', struct_ib_uverbs_flow_spec_hdr), + ('_0', struct_ib_uverbs_flow_spec_mpls_0_0), +] + +struct_ib_uverbs_flow_spec_mpls._pack_ = 1 # source:False +struct_ib_uverbs_flow_spec_mpls._anonymous_ = ('_0',) +struct_ib_uverbs_flow_spec_mpls._fields_ = [ + ('_0', union_ib_uverbs_flow_spec_mpls_0), + ('val', struct_ib_uverbs_flow_mpls_filter), + ('mask', struct_ib_uverbs_flow_mpls_filter), +] + +class struct_ib_uverbs_flow_attr(Structure): + pass + +struct_ib_uverbs_flow_attr._pack_ = 1 # source:False +struct_ib_uverbs_flow_attr._fields_ = [ + ('type', ctypes.c_uint32), + ('size', ctypes.c_uint16), + ('priority', ctypes.c_uint16), + ('num_of_specs', ctypes.c_ubyte), + ('reserved', ctypes.c_ubyte * 2), + ('port', ctypes.c_ubyte), + ('flags', ctypes.c_uint32), + ('flow_specs', struct_ib_uverbs_flow_spec_hdr * 0), +] + +class struct_ib_uverbs_create_flow(Structure): + pass + +struct_ib_uverbs_create_flow._pack_ = 1 # source:False +struct_ib_uverbs_create_flow._fields_ = [ + ('comp_mask', ctypes.c_uint32), + ('qp_handle', ctypes.c_uint32), + ('flow_attr', struct_ib_uverbs_flow_attr), +] + +class struct_ib_uverbs_create_flow_resp(Structure): + pass + +struct_ib_uverbs_create_flow_resp._pack_ = 1 # source:False +struct_ib_uverbs_create_flow_resp._fields_ = [ + ('comp_mask', ctypes.c_uint32), + ('flow_handle', ctypes.c_uint32), +] + +class struct_ib_uverbs_destroy_flow(Structure): + pass + +struct_ib_uverbs_destroy_flow._pack_ = 1 # source:False +struct_ib_uverbs_destroy_flow._fields_ = [ + ('comp_mask', ctypes.c_uint32), + ('flow_handle', ctypes.c_uint32), +] + +class struct_ib_uverbs_create_srq(Structure): + pass + +struct_ib_uverbs_create_srq._pack_ = 1 # source:False +struct_ib_uverbs_create_srq._fields_ = [ + ('response', ctypes.c_uint64), + ('user_handle', ctypes.c_uint64), + ('pd_handle', ctypes.c_uint32), + ('max_wr', ctypes.c_uint32), + ('max_sge', ctypes.c_uint32), + ('srq_limit', ctypes.c_uint32), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_create_xsrq(Structure): + pass + +struct_ib_uverbs_create_xsrq._pack_ = 1 # source:False +struct_ib_uverbs_create_xsrq._fields_ = [ + ('response', ctypes.c_uint64), + ('user_handle', ctypes.c_uint64), + ('srq_type', ctypes.c_uint32), + ('pd_handle', ctypes.c_uint32), + ('max_wr', ctypes.c_uint32), + ('max_sge', ctypes.c_uint32), + ('srq_limit', ctypes.c_uint32), + ('max_num_tags', ctypes.c_uint32), + ('xrcd_handle', ctypes.c_uint32), + ('cq_handle', ctypes.c_uint32), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_create_srq_resp(Structure): + pass + +struct_ib_uverbs_create_srq_resp._pack_ = 1 # source:False +struct_ib_uverbs_create_srq_resp._fields_ = [ + ('srq_handle', ctypes.c_uint32), + ('max_wr', ctypes.c_uint32), + ('max_sge', ctypes.c_uint32), + ('srqn', ctypes.c_uint32), + ('driver_data', ctypes.c_uint32 * 0), +] + +class struct_ib_uverbs_modify_srq(Structure): + pass + +struct_ib_uverbs_modify_srq._pack_ = 1 # source:False +struct_ib_uverbs_modify_srq._fields_ = [ + ('srq_handle', ctypes.c_uint32), + ('attr_mask', ctypes.c_uint32), + ('max_wr', ctypes.c_uint32), + ('srq_limit', ctypes.c_uint32), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_query_srq(Structure): + pass + +struct_ib_uverbs_query_srq._pack_ = 1 # source:False +struct_ib_uverbs_query_srq._fields_ = [ + ('response', ctypes.c_uint64), + ('srq_handle', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), + ('driver_data', ctypes.c_uint64 * 0), +] + +class struct_ib_uverbs_query_srq_resp(Structure): + pass + +struct_ib_uverbs_query_srq_resp._pack_ = 1 # source:False +struct_ib_uverbs_query_srq_resp._fields_ = [ + ('max_wr', ctypes.c_uint32), + ('max_sge', ctypes.c_uint32), + ('srq_limit', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), +] + +class struct_ib_uverbs_destroy_srq(Structure): + pass + +struct_ib_uverbs_destroy_srq._pack_ = 1 # source:False +struct_ib_uverbs_destroy_srq._fields_ = [ + ('response', ctypes.c_uint64), + ('srq_handle', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), +] + +class struct_ib_uverbs_destroy_srq_resp(Structure): + pass + +struct_ib_uverbs_destroy_srq_resp._pack_ = 1 # source:False +struct_ib_uverbs_destroy_srq_resp._fields_ = [ + ('events_reported', ctypes.c_uint32), +] + +class struct_ib_uverbs_ex_create_wq(Structure): + pass + +struct_ib_uverbs_ex_create_wq._pack_ = 1 # source:False +struct_ib_uverbs_ex_create_wq._fields_ = [ + ('comp_mask', ctypes.c_uint32), + ('wq_type', ctypes.c_uint32), + ('user_handle', ctypes.c_uint64), + ('pd_handle', ctypes.c_uint32), + ('cq_handle', ctypes.c_uint32), + ('max_wr', ctypes.c_uint32), + ('max_sge', ctypes.c_uint32), + ('create_flags', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), +] + +class struct_ib_uverbs_ex_create_wq_resp(Structure): + pass + +struct_ib_uverbs_ex_create_wq_resp._pack_ = 1 # source:False +struct_ib_uverbs_ex_create_wq_resp._fields_ = [ + ('comp_mask', ctypes.c_uint32), + ('response_length', ctypes.c_uint32), + ('wq_handle', ctypes.c_uint32), + ('max_wr', ctypes.c_uint32), + ('max_sge', ctypes.c_uint32), + ('wqn', ctypes.c_uint32), +] + +class struct_ib_uverbs_ex_destroy_wq(Structure): + pass + +struct_ib_uverbs_ex_destroy_wq._pack_ = 1 # source:False +struct_ib_uverbs_ex_destroy_wq._fields_ = [ + ('comp_mask', ctypes.c_uint32), + ('wq_handle', ctypes.c_uint32), +] + +class struct_ib_uverbs_ex_destroy_wq_resp(Structure): + pass + +struct_ib_uverbs_ex_destroy_wq_resp._pack_ = 1 # source:False +struct_ib_uverbs_ex_destroy_wq_resp._fields_ = [ + ('comp_mask', ctypes.c_uint32), + ('response_length', ctypes.c_uint32), + ('events_reported', ctypes.c_uint32), + ('reserved', ctypes.c_uint32), +] + +class struct_ib_uverbs_ex_modify_wq(Structure): + pass + +struct_ib_uverbs_ex_modify_wq._pack_ = 1 # source:False +struct_ib_uverbs_ex_modify_wq._fields_ = [ + ('attr_mask', ctypes.c_uint32), + ('wq_handle', ctypes.c_uint32), + ('wq_state', ctypes.c_uint32), + ('curr_wq_state', ctypes.c_uint32), + ('flags', ctypes.c_uint32), + ('flags_mask', ctypes.c_uint32), +] + +class struct_ib_uverbs_ex_create_rwq_ind_table(Structure): + pass + +struct_ib_uverbs_ex_create_rwq_ind_table._pack_ = 1 # source:False +struct_ib_uverbs_ex_create_rwq_ind_table._fields_ = [ + ('comp_mask', ctypes.c_uint32), + ('log_ind_tbl_size', ctypes.c_uint32), + ('wq_handles', ctypes.c_uint32 * 0), +] + +class struct_ib_uverbs_ex_create_rwq_ind_table_resp(Structure): + pass + +struct_ib_uverbs_ex_create_rwq_ind_table_resp._pack_ = 1 # source:False +struct_ib_uverbs_ex_create_rwq_ind_table_resp._fields_ = [ + ('comp_mask', ctypes.c_uint32), + ('response_length', ctypes.c_uint32), + ('ind_tbl_handle', ctypes.c_uint32), + ('ind_tbl_num', ctypes.c_uint32), +] + +class struct_ib_uverbs_ex_destroy_rwq_ind_table(Structure): + pass + +struct_ib_uverbs_ex_destroy_rwq_ind_table._pack_ = 1 # source:False +struct_ib_uverbs_ex_destroy_rwq_ind_table._fields_ = [ + ('comp_mask', ctypes.c_uint32), + ('ind_tbl_handle', ctypes.c_uint32), +] + +class struct_ib_uverbs_cq_moderation(Structure): + pass + +struct_ib_uverbs_cq_moderation._pack_ = 1 # source:False +struct_ib_uverbs_cq_moderation._fields_ = [ + ('cq_count', ctypes.c_uint16), + ('cq_period', ctypes.c_uint16), +] + +class struct_ib_uverbs_ex_modify_cq(Structure): + pass + +struct_ib_uverbs_ex_modify_cq._pack_ = 1 # source:False +struct_ib_uverbs_ex_modify_cq._fields_ = [ + ('cq_handle', ctypes.c_uint32), + ('attr_mask', ctypes.c_uint32), + ('attr', struct_ib_uverbs_cq_moderation), + ('reserved', ctypes.c_uint32), +] + + +# values for enumeration 'ib_uverbs_device_cap_flags' +ib_uverbs_device_cap_flags__enumvalues = { + 1: 'IB_UVERBS_DEVICE_RESIZE_MAX_WR', + 2: 'IB_UVERBS_DEVICE_BAD_PKEY_CNTR', + 4: 'IB_UVERBS_DEVICE_BAD_QKEY_CNTR', + 8: 'IB_UVERBS_DEVICE_RAW_MULTI', + 16: 'IB_UVERBS_DEVICE_AUTO_PATH_MIG', + 32: 'IB_UVERBS_DEVICE_CHANGE_PHY_PORT', + 64: 'IB_UVERBS_DEVICE_UD_AV_PORT_ENFORCE', + 128: 'IB_UVERBS_DEVICE_CURR_QP_STATE_MOD', + 256: 'IB_UVERBS_DEVICE_SHUTDOWN_PORT', + 1024: 'IB_UVERBS_DEVICE_PORT_ACTIVE_EVENT', + 2048: 'IB_UVERBS_DEVICE_SYS_IMAGE_GUID', + 4096: 'IB_UVERBS_DEVICE_RC_RNR_NAK_GEN', + 8192: 'IB_UVERBS_DEVICE_SRQ_RESIZE', + 16384: 'IB_UVERBS_DEVICE_N_NOTIFY_CQ', + 131072: 'IB_UVERBS_DEVICE_MEM_WINDOW', + 262144: 'IB_UVERBS_DEVICE_UD_IP_CSUM', + 1048576: 'IB_UVERBS_DEVICE_XRC', + 2097152: 'IB_UVERBS_DEVICE_MEM_MGT_EXTENSIONS', + 8388608: 'IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2A', + 16777216: 'IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2B', + 33554432: 'IB_UVERBS_DEVICE_RC_IP_CSUM', + 67108864: 'IB_UVERBS_DEVICE_RAW_IP_CSUM', + 536870912: 'IB_UVERBS_DEVICE_MANAGED_FLOW_STEERING', + 17179869184: 'IB_UVERBS_DEVICE_RAW_SCATTER_FCS', + 68719476736: 'IB_UVERBS_DEVICE_PCI_WRITE_END_PADDING', + 274877906944: 'IB_UVERBS_DEVICE_FLUSH_GLOBAL', + 549755813888: 'IB_UVERBS_DEVICE_FLUSH_PERSISTENT', + 1099511627776: 'IB_UVERBS_DEVICE_ATOMIC_WRITE', +} +IB_UVERBS_DEVICE_RESIZE_MAX_WR = 1 +IB_UVERBS_DEVICE_BAD_PKEY_CNTR = 2 +IB_UVERBS_DEVICE_BAD_QKEY_CNTR = 4 +IB_UVERBS_DEVICE_RAW_MULTI = 8 +IB_UVERBS_DEVICE_AUTO_PATH_MIG = 16 +IB_UVERBS_DEVICE_CHANGE_PHY_PORT = 32 +IB_UVERBS_DEVICE_UD_AV_PORT_ENFORCE = 64 +IB_UVERBS_DEVICE_CURR_QP_STATE_MOD = 128 +IB_UVERBS_DEVICE_SHUTDOWN_PORT = 256 +IB_UVERBS_DEVICE_PORT_ACTIVE_EVENT = 1024 +IB_UVERBS_DEVICE_SYS_IMAGE_GUID = 2048 +IB_UVERBS_DEVICE_RC_RNR_NAK_GEN = 4096 +IB_UVERBS_DEVICE_SRQ_RESIZE = 8192 +IB_UVERBS_DEVICE_N_NOTIFY_CQ = 16384 +IB_UVERBS_DEVICE_MEM_WINDOW = 131072 +IB_UVERBS_DEVICE_UD_IP_CSUM = 262144 +IB_UVERBS_DEVICE_XRC = 1048576 +IB_UVERBS_DEVICE_MEM_MGT_EXTENSIONS = 2097152 +IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2A = 8388608 +IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2B = 16777216 +IB_UVERBS_DEVICE_RC_IP_CSUM = 33554432 +IB_UVERBS_DEVICE_RAW_IP_CSUM = 67108864 +IB_UVERBS_DEVICE_MANAGED_FLOW_STEERING = 536870912 +IB_UVERBS_DEVICE_RAW_SCATTER_FCS = 17179869184 +IB_UVERBS_DEVICE_PCI_WRITE_END_PADDING = 68719476736 +IB_UVERBS_DEVICE_FLUSH_GLOBAL = 274877906944 +IB_UVERBS_DEVICE_FLUSH_PERSISTENT = 549755813888 +IB_UVERBS_DEVICE_ATOMIC_WRITE = 1099511627776 +ib_uverbs_device_cap_flags = ctypes.c_uint64 # enum + +# values for enumeration 'ib_uverbs_raw_packet_caps' +ib_uverbs_raw_packet_caps__enumvalues = { + 1: 'IB_UVERBS_RAW_PACKET_CAP_CVLAN_STRIPPING', + 2: 'IB_UVERBS_RAW_PACKET_CAP_SCATTER_FCS', + 4: 'IB_UVERBS_RAW_PACKET_CAP_IP_CSUM', + 8: 'IB_UVERBS_RAW_PACKET_CAP_DELAY_DROP', +} +IB_UVERBS_RAW_PACKET_CAP_CVLAN_STRIPPING = 1 +IB_UVERBS_RAW_PACKET_CAP_SCATTER_FCS = 2 +IB_UVERBS_RAW_PACKET_CAP_IP_CSUM = 4 +IB_UVERBS_RAW_PACKET_CAP_DELAY_DROP = 8 +ib_uverbs_raw_packet_caps = ctypes.c_uint32 # enum + +# values for enumeration 'ib_uverbs_core_support' +ib_uverbs_core_support__enumvalues = { + 1: 'IB_UVERBS_CORE_SUPPORT_OPTIONAL_MR_ACCESS', +} +IB_UVERBS_CORE_SUPPORT_OPTIONAL_MR_ACCESS = 1 +ib_uverbs_core_support = ctypes.c_uint32 # enum + +# values for enumeration 'ib_uverbs_access_flags' +ib_uverbs_access_flags__enumvalues = { + 1: 'IB_UVERBS_ACCESS_LOCAL_WRITE', + 2: 'IB_UVERBS_ACCESS_REMOTE_WRITE', + 4: 'IB_UVERBS_ACCESS_REMOTE_READ', + 8: 'IB_UVERBS_ACCESS_REMOTE_ATOMIC', + 16: 'IB_UVERBS_ACCESS_MW_BIND', + 32: 'IB_UVERBS_ACCESS_ZERO_BASED', + 64: 'IB_UVERBS_ACCESS_ON_DEMAND', + 128: 'IB_UVERBS_ACCESS_HUGETLB', + 256: 'IB_UVERBS_ACCESS_FLUSH_GLOBAL', + 512: 'IB_UVERBS_ACCESS_FLUSH_PERSISTENT', + 1048576: 'IB_UVERBS_ACCESS_RELAXED_ORDERING', + 1072693248: 'IB_UVERBS_ACCESS_OPTIONAL_RANGE', +} +IB_UVERBS_ACCESS_LOCAL_WRITE = 1 +IB_UVERBS_ACCESS_REMOTE_WRITE = 2 +IB_UVERBS_ACCESS_REMOTE_READ = 4 +IB_UVERBS_ACCESS_REMOTE_ATOMIC = 8 +IB_UVERBS_ACCESS_MW_BIND = 16 +IB_UVERBS_ACCESS_ZERO_BASED = 32 +IB_UVERBS_ACCESS_ON_DEMAND = 64 +IB_UVERBS_ACCESS_HUGETLB = 128 +IB_UVERBS_ACCESS_FLUSH_GLOBAL = 256 +IB_UVERBS_ACCESS_FLUSH_PERSISTENT = 512 +IB_UVERBS_ACCESS_RELAXED_ORDERING = 1048576 +IB_UVERBS_ACCESS_OPTIONAL_RANGE = 1072693248 +ib_uverbs_access_flags = ctypes.c_uint32 # enum +IBV_ACCESS_OPTIONAL_RANGE = IB_UVERBS_ACCESS_OPTIONAL_RANGE # macro + +# values for enumeration 'ib_uverbs_srq_type' +ib_uverbs_srq_type__enumvalues = { + 0: 'IB_UVERBS_SRQT_BASIC', + 1: 'IB_UVERBS_SRQT_XRC', + 2: 'IB_UVERBS_SRQT_TM', +} +IB_UVERBS_SRQT_BASIC = 0 +IB_UVERBS_SRQT_XRC = 1 +IB_UVERBS_SRQT_TM = 2 +ib_uverbs_srq_type = ctypes.c_uint32 # enum + +# values for enumeration 'ib_uverbs_wq_type' +ib_uverbs_wq_type__enumvalues = { + 0: 'IB_UVERBS_WQT_RQ', +} +IB_UVERBS_WQT_RQ = 0 +ib_uverbs_wq_type = ctypes.c_uint32 # enum + +# values for enumeration 'ib_uverbs_wq_flags' +ib_uverbs_wq_flags__enumvalues = { + 1: 'IB_UVERBS_WQ_FLAGS_CVLAN_STRIPPING', + 2: 'IB_UVERBS_WQ_FLAGS_SCATTER_FCS', + 4: 'IB_UVERBS_WQ_FLAGS_DELAY_DROP', + 8: 'IB_UVERBS_WQ_FLAGS_PCI_WRITE_END_PADDING', +} +IB_UVERBS_WQ_FLAGS_CVLAN_STRIPPING = 1 +IB_UVERBS_WQ_FLAGS_SCATTER_FCS = 2 +IB_UVERBS_WQ_FLAGS_DELAY_DROP = 4 +IB_UVERBS_WQ_FLAGS_PCI_WRITE_END_PADDING = 8 +ib_uverbs_wq_flags = ctypes.c_uint32 # enum + +# values for enumeration 'ib_uverbs_qp_type' +ib_uverbs_qp_type__enumvalues = { + 2: 'IB_UVERBS_QPT_RC', + 3: 'IB_UVERBS_QPT_UC', + 4: 'IB_UVERBS_QPT_UD', + 8: 'IB_UVERBS_QPT_RAW_PACKET', + 9: 'IB_UVERBS_QPT_XRC_INI', + 10: 'IB_UVERBS_QPT_XRC_TGT', + 255: 'IB_UVERBS_QPT_DRIVER', +} +IB_UVERBS_QPT_RC = 2 +IB_UVERBS_QPT_UC = 3 +IB_UVERBS_QPT_UD = 4 +IB_UVERBS_QPT_RAW_PACKET = 8 +IB_UVERBS_QPT_XRC_INI = 9 +IB_UVERBS_QPT_XRC_TGT = 10 +IB_UVERBS_QPT_DRIVER = 255 +ib_uverbs_qp_type = ctypes.c_uint32 # enum + +# values for enumeration 'ib_uverbs_qp_create_flags' +ib_uverbs_qp_create_flags__enumvalues = { + 2: 'IB_UVERBS_QP_CREATE_BLOCK_MULTICAST_LOOPBACK', + 256: 'IB_UVERBS_QP_CREATE_SCATTER_FCS', + 512: 'IB_UVERBS_QP_CREATE_CVLAN_STRIPPING', + 2048: 'IB_UVERBS_QP_CREATE_PCI_WRITE_END_PADDING', + 4096: 'IB_UVERBS_QP_CREATE_SQ_SIG_ALL', +} +IB_UVERBS_QP_CREATE_BLOCK_MULTICAST_LOOPBACK = 2 +IB_UVERBS_QP_CREATE_SCATTER_FCS = 256 +IB_UVERBS_QP_CREATE_CVLAN_STRIPPING = 512 +IB_UVERBS_QP_CREATE_PCI_WRITE_END_PADDING = 2048 +IB_UVERBS_QP_CREATE_SQ_SIG_ALL = 4096 +ib_uverbs_qp_create_flags = ctypes.c_uint32 # enum + +# values for enumeration 'ib_uverbs_query_port_cap_flags' +ib_uverbs_query_port_cap_flags__enumvalues = { + 2: 'IB_UVERBS_PCF_SM', + 4: 'IB_UVERBS_PCF_NOTICE_SUP', + 8: 'IB_UVERBS_PCF_TRAP_SUP', + 16: 'IB_UVERBS_PCF_OPT_IPD_SUP', + 32: 'IB_UVERBS_PCF_AUTO_MIGR_SUP', + 64: 'IB_UVERBS_PCF_SL_MAP_SUP', + 128: 'IB_UVERBS_PCF_MKEY_NVRAM', + 256: 'IB_UVERBS_PCF_PKEY_NVRAM', + 512: 'IB_UVERBS_PCF_LED_INFO_SUP', + 1024: 'IB_UVERBS_PCF_SM_DISABLED', + 2048: 'IB_UVERBS_PCF_SYS_IMAGE_GUID_SUP', + 4096: 'IB_UVERBS_PCF_PKEY_SW_EXT_PORT_TRAP_SUP', + 16384: 'IB_UVERBS_PCF_EXTENDED_SPEEDS_SUP', + 65536: 'IB_UVERBS_PCF_CM_SUP', + 131072: 'IB_UVERBS_PCF_SNMP_TUNNEL_SUP', + 262144: 'IB_UVERBS_PCF_REINIT_SUP', + 524288: 'IB_UVERBS_PCF_DEVICE_MGMT_SUP', + 1048576: 'IB_UVERBS_PCF_VENDOR_CLASS_SUP', + 2097152: 'IB_UVERBS_PCF_DR_NOTICE_SUP', + 4194304: 'IB_UVERBS_PCF_CAP_MASK_NOTICE_SUP', + 8388608: 'IB_UVERBS_PCF_BOOT_MGMT_SUP', + 16777216: 'IB_UVERBS_PCF_LINK_LATENCY_SUP', + 33554432: 'IB_UVERBS_PCF_CLIENT_REG_SUP', + 134217728: 'IB_UVERBS_PCF_LINK_SPEED_WIDTH_TABLE_SUP', + 268435456: 'IB_UVERBS_PCF_VENDOR_SPECIFIC_MADS_TABLE_SUP', + 536870912: 'IB_UVERBS_PCF_MCAST_PKEY_TRAP_SUPPRESSION_SUP', + 1073741824: 'IB_UVERBS_PCF_MCAST_FDB_TOP_SUP', + 2147483648: 'IB_UVERBS_PCF_HIERARCHY_INFO_SUP', + 67108864: 'IB_UVERBS_PCF_IP_BASED_GIDS', +} +IB_UVERBS_PCF_SM = 2 +IB_UVERBS_PCF_NOTICE_SUP = 4 +IB_UVERBS_PCF_TRAP_SUP = 8 +IB_UVERBS_PCF_OPT_IPD_SUP = 16 +IB_UVERBS_PCF_AUTO_MIGR_SUP = 32 +IB_UVERBS_PCF_SL_MAP_SUP = 64 +IB_UVERBS_PCF_MKEY_NVRAM = 128 +IB_UVERBS_PCF_PKEY_NVRAM = 256 +IB_UVERBS_PCF_LED_INFO_SUP = 512 +IB_UVERBS_PCF_SM_DISABLED = 1024 +IB_UVERBS_PCF_SYS_IMAGE_GUID_SUP = 2048 +IB_UVERBS_PCF_PKEY_SW_EXT_PORT_TRAP_SUP = 4096 +IB_UVERBS_PCF_EXTENDED_SPEEDS_SUP = 16384 +IB_UVERBS_PCF_CM_SUP = 65536 +IB_UVERBS_PCF_SNMP_TUNNEL_SUP = 131072 +IB_UVERBS_PCF_REINIT_SUP = 262144 +IB_UVERBS_PCF_DEVICE_MGMT_SUP = 524288 +IB_UVERBS_PCF_VENDOR_CLASS_SUP = 1048576 +IB_UVERBS_PCF_DR_NOTICE_SUP = 2097152 +IB_UVERBS_PCF_CAP_MASK_NOTICE_SUP = 4194304 +IB_UVERBS_PCF_BOOT_MGMT_SUP = 8388608 +IB_UVERBS_PCF_LINK_LATENCY_SUP = 16777216 +IB_UVERBS_PCF_CLIENT_REG_SUP = 33554432 +IB_UVERBS_PCF_LINK_SPEED_WIDTH_TABLE_SUP = 134217728 +IB_UVERBS_PCF_VENDOR_SPECIFIC_MADS_TABLE_SUP = 268435456 +IB_UVERBS_PCF_MCAST_PKEY_TRAP_SUPPRESSION_SUP = 536870912 +IB_UVERBS_PCF_MCAST_FDB_TOP_SUP = 1073741824 +IB_UVERBS_PCF_HIERARCHY_INFO_SUP = 2147483648 +IB_UVERBS_PCF_IP_BASED_GIDS = 67108864 +ib_uverbs_query_port_cap_flags = ctypes.c_uint32 # enum + +# values for enumeration 'ib_uverbs_query_port_flags' +ib_uverbs_query_port_flags__enumvalues = { + 1: 'IB_UVERBS_QPF_GRH_REQUIRED', +} +IB_UVERBS_QPF_GRH_REQUIRED = 1 +ib_uverbs_query_port_flags = ctypes.c_uint32 # enum +IBV_QPF_GRH_REQUIRED = IB_UVERBS_QPF_GRH_REQUIRED # macro + +# values for enumeration 'ib_uverbs_flow_action_esp_keymat' +ib_uverbs_flow_action_esp_keymat__enumvalues = { + 0: 'IB_UVERBS_FLOW_ACTION_ESP_KEYMAT_AES_GCM', +} +IB_UVERBS_FLOW_ACTION_ESP_KEYMAT_AES_GCM = 0 +ib_uverbs_flow_action_esp_keymat = ctypes.c_uint32 # enum +ibv_flow_action_esp_keymat = ib_uverbs_flow_action_esp_keymat # macro +IBV_FLOW_ACTION_ESP_KEYMAT_AES_GCM = IB_UVERBS_FLOW_ACTION_ESP_KEYMAT_AES_GCM # macro + +# values for enumeration 'ib_uverbs_flow_action_esp_keymat_aes_gcm_iv_algo' +ib_uverbs_flow_action_esp_keymat_aes_gcm_iv_algo__enumvalues = { + 0: 'IB_UVERBS_FLOW_ACTION_IV_ALGO_SEQ', +} +IB_UVERBS_FLOW_ACTION_IV_ALGO_SEQ = 0 +ib_uverbs_flow_action_esp_keymat_aes_gcm_iv_algo = ctypes.c_uint32 # enum +ibv_flow_action_esp_keymat_aes_gcm_iv_algo = ib_uverbs_flow_action_esp_keymat_aes_gcm_iv_algo # macro +IBV_FLOW_ACTION_IV_ALGO_SEQ = IB_UVERBS_FLOW_ACTION_IV_ALGO_SEQ # macro +class struct_ib_uverbs_flow_action_esp_keymat_aes_gcm(Structure): + pass + +struct_ib_uverbs_flow_action_esp_keymat_aes_gcm._pack_ = 1 # source:False +struct_ib_uverbs_flow_action_esp_keymat_aes_gcm._fields_ = [ + ('iv', ctypes.c_uint64), + ('iv_algo', ctypes.c_uint32), + ('salt', ctypes.c_uint32), + ('icv_len', ctypes.c_uint32), + ('key_len', ctypes.c_uint32), + ('aes_key', ctypes.c_uint32 * 8), +] + + +# values for enumeration 'ib_uverbs_flow_action_esp_replay' +ib_uverbs_flow_action_esp_replay__enumvalues = { + 0: 'IB_UVERBS_FLOW_ACTION_ESP_REPLAY_NONE', + 1: 'IB_UVERBS_FLOW_ACTION_ESP_REPLAY_BMP', +} +IB_UVERBS_FLOW_ACTION_ESP_REPLAY_NONE = 0 +IB_UVERBS_FLOW_ACTION_ESP_REPLAY_BMP = 1 +ib_uverbs_flow_action_esp_replay = ctypes.c_uint32 # enum +ibv_flow_action_esp_replay = ib_uverbs_flow_action_esp_replay # macro +IBV_FLOW_ACTION_ESP_REPLAY_NONE = IB_UVERBS_FLOW_ACTION_ESP_REPLAY_NONE # macro +IBV_FLOW_ACTION_ESP_REPLAY_BMP = IB_UVERBS_FLOW_ACTION_ESP_REPLAY_BMP # macro +class struct_ib_uverbs_flow_action_esp_replay_bmp(Structure): + pass + +struct_ib_uverbs_flow_action_esp_replay_bmp._pack_ = 1 # source:False +struct_ib_uverbs_flow_action_esp_replay_bmp._fields_ = [ + ('size', ctypes.c_uint32), +] + + +# values for enumeration 'ib_uverbs_flow_action_esp_flags' +ib_uverbs_flow_action_esp_flags__enumvalues = { + 0: 'IB_UVERBS_FLOW_ACTION_ESP_FLAGS_INLINE_CRYPTO', + 1: 'IB_UVERBS_FLOW_ACTION_ESP_FLAGS_FULL_OFFLOAD', + 0: 'IB_UVERBS_FLOW_ACTION_ESP_FLAGS_TUNNEL', + 2: 'IB_UVERBS_FLOW_ACTION_ESP_FLAGS_TRANSPORT', + 0: 'IB_UVERBS_FLOW_ACTION_ESP_FLAGS_DECRYPT', + 4: 'IB_UVERBS_FLOW_ACTION_ESP_FLAGS_ENCRYPT', + 8: 'IB_UVERBS_FLOW_ACTION_ESP_FLAGS_ESN_NEW_WINDOW', +} +IB_UVERBS_FLOW_ACTION_ESP_FLAGS_INLINE_CRYPTO = 0 +IB_UVERBS_FLOW_ACTION_ESP_FLAGS_FULL_OFFLOAD = 1 +IB_UVERBS_FLOW_ACTION_ESP_FLAGS_TUNNEL = 0 +IB_UVERBS_FLOW_ACTION_ESP_FLAGS_TRANSPORT = 2 +IB_UVERBS_FLOW_ACTION_ESP_FLAGS_DECRYPT = 0 +IB_UVERBS_FLOW_ACTION_ESP_FLAGS_ENCRYPT = 4 +IB_UVERBS_FLOW_ACTION_ESP_FLAGS_ESN_NEW_WINDOW = 8 +ib_uverbs_flow_action_esp_flags = ctypes.c_uint32 # enum +ibv_flow_action_esp_flags = ib_uverbs_flow_action_esp_flags # macro +IBV_FLOW_ACTION_ESP_FLAGS_INLINE_CRYPTO = IB_UVERBS_FLOW_ACTION_ESP_FLAGS_INLINE_CRYPTO # macro +IBV_FLOW_ACTION_ESP_FLAGS_FULL_OFFLOAD = IB_UVERBS_FLOW_ACTION_ESP_FLAGS_FULL_OFFLOAD # macro +IBV_FLOW_ACTION_ESP_FLAGS_TUNNEL = IB_UVERBS_FLOW_ACTION_ESP_FLAGS_TUNNEL # macro +IBV_FLOW_ACTION_ESP_FLAGS_TRANSPORT = IB_UVERBS_FLOW_ACTION_ESP_FLAGS_TRANSPORT # macro +IBV_FLOW_ACTION_ESP_FLAGS_DECRYPT = IB_UVERBS_FLOW_ACTION_ESP_FLAGS_DECRYPT # macro +IBV_FLOW_ACTION_ESP_FLAGS_ENCRYPT = IB_UVERBS_FLOW_ACTION_ESP_FLAGS_ENCRYPT # macro +IBV_FLOW_ACTION_ESP_FLAGS_ESN_NEW_WINDOW = IB_UVERBS_FLOW_ACTION_ESP_FLAGS_ESN_NEW_WINDOW # macro +class struct_ib_uverbs_flow_action_esp_encap(Structure): + pass + +class union_ib_uverbs_flow_action_esp_encap_0(Union): + pass + +union_ib_uverbs_flow_action_esp_encap_0._pack_ = 1 # source:False +union_ib_uverbs_flow_action_esp_encap_0._fields_ = [ + ('val_ptr', ctypes.POINTER(None)), + ('val_ptr_data_u64', ctypes.c_uint64), +] + +class union_ib_uverbs_flow_action_esp_encap_1(Union): + pass + +union_ib_uverbs_flow_action_esp_encap_1._pack_ = 1 # source:False +union_ib_uverbs_flow_action_esp_encap_1._fields_ = [ + ('next_ptr', ctypes.POINTER(struct_ib_uverbs_flow_action_esp_encap)), + ('next_ptr_data_u64', ctypes.c_uint64), +] + +struct_ib_uverbs_flow_action_esp_encap._pack_ = 1 # source:False +struct_ib_uverbs_flow_action_esp_encap._anonymous_ = ('_0', '_1',) +struct_ib_uverbs_flow_action_esp_encap._fields_ = [ + ('_0', union_ib_uverbs_flow_action_esp_encap_0), + ('_1', union_ib_uverbs_flow_action_esp_encap_1), + ('len', ctypes.c_uint16), + ('type', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 4), +] + +class struct_ib_uverbs_flow_action_esp(Structure): + pass + +struct_ib_uverbs_flow_action_esp._pack_ = 1 # source:False +struct_ib_uverbs_flow_action_esp._fields_ = [ + ('spi', ctypes.c_uint32), + ('seq', ctypes.c_uint32), + ('tfc_pad', ctypes.c_uint32), + ('flags', ctypes.c_uint32), + ('hard_limit_pkts', ctypes.c_uint64), +] + + +# values for enumeration 'ib_uverbs_read_counters_flags' +ib_uverbs_read_counters_flags__enumvalues = { + 1: 'IB_UVERBS_READ_COUNTERS_PREFER_CACHED', +} +IB_UVERBS_READ_COUNTERS_PREFER_CACHED = 1 +ib_uverbs_read_counters_flags = ctypes.c_uint32 # enum + +# values for enumeration 'ib_uverbs_advise_mr_advice' +ib_uverbs_advise_mr_advice__enumvalues = { + 0: 'IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH', + 1: 'IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_WRITE', + 2: 'IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_NO_FAULT', +} +IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH = 0 +IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_WRITE = 1 +IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_NO_FAULT = 2 +ib_uverbs_advise_mr_advice = ctypes.c_uint32 # enum +ibv_advise_mr_advice = ib_uverbs_advise_mr_advice # macro +IBV_ADVISE_MR_ADVICE_PREFETCH = IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH # macro +IBV_ADVISE_MR_ADVICE_PREFETCH_WRITE = IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_WRITE # macro +IBV_ADVISE_MR_ADVICE_PREFETCH_NO_FAULT = IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_NO_FAULT # macro + +# values for enumeration 'ib_uverbs_advise_mr_flag' +ib_uverbs_advise_mr_flag__enumvalues = { + 1: 'IB_UVERBS_ADVISE_MR_FLAG_FLUSH', +} +IB_UVERBS_ADVISE_MR_FLAG_FLUSH = 1 +ib_uverbs_advise_mr_flag = ctypes.c_uint32 # enum +IBV_ADVISE_MR_FLAG_FLUSH = IB_UVERBS_ADVISE_MR_FLAG_FLUSH # macro +class struct_ib_uverbs_query_port_resp_ex(Structure): + pass + +struct_ib_uverbs_query_port_resp_ex._pack_ = 1 # source:False +struct_ib_uverbs_query_port_resp_ex._fields_ = [ + ('legacy_resp', struct_ib_uverbs_query_port_resp), + ('port_cap_flags2', ctypes.c_uint16), + ('reserved', ctypes.c_ubyte * 2), + ('active_speed_ex', ctypes.c_uint32), +] + +class struct_ib_uverbs_qp_cap(Structure): + pass + +struct_ib_uverbs_qp_cap._pack_ = 1 # source:False +struct_ib_uverbs_qp_cap._fields_ = [ + ('max_send_wr', ctypes.c_uint32), + ('max_recv_wr', ctypes.c_uint32), + ('max_send_sge', ctypes.c_uint32), + ('max_recv_sge', ctypes.c_uint32), + ('max_inline_data', ctypes.c_uint32), +] + + +# values for enumeration 'rdma_driver_id' +rdma_driver_id__enumvalues = { + 0: 'RDMA_DRIVER_UNKNOWN', + 1: 'RDMA_DRIVER_MLX5', + 2: 'RDMA_DRIVER_MLX4', + 3: 'RDMA_DRIVER_CXGB3', + 4: 'RDMA_DRIVER_CXGB4', + 5: 'RDMA_DRIVER_MTHCA', + 6: 'RDMA_DRIVER_BNXT_RE', + 7: 'RDMA_DRIVER_OCRDMA', + 8: 'RDMA_DRIVER_NES', + 9: 'RDMA_DRIVER_I40IW', + 9: 'RDMA_DRIVER_IRDMA', + 10: 'RDMA_DRIVER_VMW_PVRDMA', + 11: 'RDMA_DRIVER_QEDR', + 12: 'RDMA_DRIVER_HNS', + 13: 'RDMA_DRIVER_USNIC', + 14: 'RDMA_DRIVER_RXE', + 15: 'RDMA_DRIVER_HFI1', + 16: 'RDMA_DRIVER_QIB', + 17: 'RDMA_DRIVER_EFA', + 18: 'RDMA_DRIVER_SIW', + 19: 'RDMA_DRIVER_ERDMA', + 20: 'RDMA_DRIVER_MANA', +} +RDMA_DRIVER_UNKNOWN = 0 +RDMA_DRIVER_MLX5 = 1 +RDMA_DRIVER_MLX4 = 2 +RDMA_DRIVER_CXGB3 = 3 +RDMA_DRIVER_CXGB4 = 4 +RDMA_DRIVER_MTHCA = 5 +RDMA_DRIVER_BNXT_RE = 6 +RDMA_DRIVER_OCRDMA = 7 +RDMA_DRIVER_NES = 8 +RDMA_DRIVER_I40IW = 9 +RDMA_DRIVER_IRDMA = 9 +RDMA_DRIVER_VMW_PVRDMA = 10 +RDMA_DRIVER_QEDR = 11 +RDMA_DRIVER_HNS = 12 +RDMA_DRIVER_USNIC = 13 +RDMA_DRIVER_RXE = 14 +RDMA_DRIVER_HFI1 = 15 +RDMA_DRIVER_QIB = 16 +RDMA_DRIVER_EFA = 17 +RDMA_DRIVER_SIW = 18 +RDMA_DRIVER_ERDMA = 19 +RDMA_DRIVER_MANA = 20 +rdma_driver_id = ctypes.c_uint32 # enum + +# values for enumeration 'ib_uverbs_gid_type' +ib_uverbs_gid_type__enumvalues = { + 0: 'IB_UVERBS_GID_TYPE_IB', + 1: 'IB_UVERBS_GID_TYPE_ROCE_V1', + 2: 'IB_UVERBS_GID_TYPE_ROCE_V2', +} +IB_UVERBS_GID_TYPE_IB = 0 +IB_UVERBS_GID_TYPE_ROCE_V1 = 1 +IB_UVERBS_GID_TYPE_ROCE_V2 = 2 +ib_uverbs_gid_type = ctypes.c_uint32 # enum +class struct_ib_uverbs_gid_entry(Structure): + pass + +struct_ib_uverbs_gid_entry._pack_ = 1 # source:False +struct_ib_uverbs_gid_entry._fields_ = [ + ('gid', ctypes.c_uint64 * 2), + ('gid_index', ctypes.c_uint32), + ('port_num', ctypes.c_uint32), + ('gid_type', ctypes.c_uint32), + ('netdev_ifindex', ctypes.c_uint32), +] + +class union_ibv_gid(Union): + pass + +class struct_ibv_gid_global(Structure): + pass + +struct_ibv_gid_global._pack_ = 1 # source:False +struct_ibv_gid_global._fields_ = [ + ('subnet_prefix', ctypes.c_uint64), + ('interface_id', ctypes.c_uint64), +] + +union_ibv_gid._pack_ = 1 # source:False +union_ibv_gid._fields_ = [ + ('raw', ctypes.c_ubyte * 16), + ('global', struct_ibv_gid_global), +] + + +# values for enumeration 'ibv_gid_type' +ibv_gid_type__enumvalues = { + 0: 'IBV_GID_TYPE_IB', + 1: 'IBV_GID_TYPE_ROCE_V1', + 2: 'IBV_GID_TYPE_ROCE_V2', +} +IBV_GID_TYPE_IB = 0 +IBV_GID_TYPE_ROCE_V1 = 1 +IBV_GID_TYPE_ROCE_V2 = 2 +ibv_gid_type = ctypes.c_uint32 # enum +class struct_ibv_gid_entry(Structure): + pass + +struct_ibv_gid_entry._pack_ = 1 # source:False +struct_ibv_gid_entry._fields_ = [ + ('gid', union_ibv_gid), + ('gid_index', ctypes.c_uint32), + ('port_num', ctypes.c_uint32), + ('gid_type', ctypes.c_uint32), + ('ndev_ifindex', ctypes.c_uint32), +] + + +# values for enumeration 'ibv_node_type' +ibv_node_type__enumvalues = { + -1: 'IBV_NODE_UNKNOWN', + 1: 'IBV_NODE_CA', + 2: 'IBV_NODE_SWITCH', + 3: 'IBV_NODE_ROUTER', + 4: 'IBV_NODE_RNIC', + 5: 'IBV_NODE_USNIC', + 6: 'IBV_NODE_USNIC_UDP', + 7: 'IBV_NODE_UNSPECIFIED', +} +IBV_NODE_UNKNOWN = -1 +IBV_NODE_CA = 1 +IBV_NODE_SWITCH = 2 +IBV_NODE_ROUTER = 3 +IBV_NODE_RNIC = 4 +IBV_NODE_USNIC = 5 +IBV_NODE_USNIC_UDP = 6 +IBV_NODE_UNSPECIFIED = 7 +ibv_node_type = ctypes.c_int32 # enum + +# values for enumeration 'ibv_transport_type' +ibv_transport_type__enumvalues = { + -1: 'IBV_TRANSPORT_UNKNOWN', + 0: 'IBV_TRANSPORT_IB', + 1: 'IBV_TRANSPORT_IWARP', + 2: 'IBV_TRANSPORT_USNIC', + 3: 'IBV_TRANSPORT_USNIC_UDP', + 4: 'IBV_TRANSPORT_UNSPECIFIED', +} +IBV_TRANSPORT_UNKNOWN = -1 +IBV_TRANSPORT_IB = 0 +IBV_TRANSPORT_IWARP = 1 +IBV_TRANSPORT_USNIC = 2 +IBV_TRANSPORT_USNIC_UDP = 3 +IBV_TRANSPORT_UNSPECIFIED = 4 +ibv_transport_type = ctypes.c_int32 # enum + +# values for enumeration 'ibv_device_cap_flags' +ibv_device_cap_flags__enumvalues = { + 1: 'IBV_DEVICE_RESIZE_MAX_WR', + 2: 'IBV_DEVICE_BAD_PKEY_CNTR', + 4: 'IBV_DEVICE_BAD_QKEY_CNTR', + 8: 'IBV_DEVICE_RAW_MULTI', + 16: 'IBV_DEVICE_AUTO_PATH_MIG', + 32: 'IBV_DEVICE_CHANGE_PHY_PORT', + 64: 'IBV_DEVICE_UD_AV_PORT_ENFORCE', + 128: 'IBV_DEVICE_CURR_QP_STATE_MOD', + 256: 'IBV_DEVICE_SHUTDOWN_PORT', + 512: 'IBV_DEVICE_INIT_TYPE', + 1024: 'IBV_DEVICE_PORT_ACTIVE_EVENT', + 2048: 'IBV_DEVICE_SYS_IMAGE_GUID', + 4096: 'IBV_DEVICE_RC_RNR_NAK_GEN', + 8192: 'IBV_DEVICE_SRQ_RESIZE', + 16384: 'IBV_DEVICE_N_NOTIFY_CQ', + 131072: 'IBV_DEVICE_MEM_WINDOW', + 262144: 'IBV_DEVICE_UD_IP_CSUM', + 1048576: 'IBV_DEVICE_XRC', + 2097152: 'IBV_DEVICE_MEM_MGT_EXTENSIONS', + 8388608: 'IBV_DEVICE_MEM_WINDOW_TYPE_2A', + 16777216: 'IBV_DEVICE_MEM_WINDOW_TYPE_2B', + 33554432: 'IBV_DEVICE_RC_IP_CSUM', + 67108864: 'IBV_DEVICE_RAW_IP_CSUM', + 536870912: 'IBV_DEVICE_MANAGED_FLOW_STEERING', +} +IBV_DEVICE_RESIZE_MAX_WR = 1 +IBV_DEVICE_BAD_PKEY_CNTR = 2 +IBV_DEVICE_BAD_QKEY_CNTR = 4 +IBV_DEVICE_RAW_MULTI = 8 +IBV_DEVICE_AUTO_PATH_MIG = 16 +IBV_DEVICE_CHANGE_PHY_PORT = 32 +IBV_DEVICE_UD_AV_PORT_ENFORCE = 64 +IBV_DEVICE_CURR_QP_STATE_MOD = 128 +IBV_DEVICE_SHUTDOWN_PORT = 256 +IBV_DEVICE_INIT_TYPE = 512 +IBV_DEVICE_PORT_ACTIVE_EVENT = 1024 +IBV_DEVICE_SYS_IMAGE_GUID = 2048 +IBV_DEVICE_RC_RNR_NAK_GEN = 4096 +IBV_DEVICE_SRQ_RESIZE = 8192 +IBV_DEVICE_N_NOTIFY_CQ = 16384 +IBV_DEVICE_MEM_WINDOW = 131072 +IBV_DEVICE_UD_IP_CSUM = 262144 +IBV_DEVICE_XRC = 1048576 +IBV_DEVICE_MEM_MGT_EXTENSIONS = 2097152 +IBV_DEVICE_MEM_WINDOW_TYPE_2A = 8388608 +IBV_DEVICE_MEM_WINDOW_TYPE_2B = 16777216 +IBV_DEVICE_RC_IP_CSUM = 33554432 +IBV_DEVICE_RAW_IP_CSUM = 67108864 +IBV_DEVICE_MANAGED_FLOW_STEERING = 536870912 +ibv_device_cap_flags = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_fork_status' +ibv_fork_status__enumvalues = { + 0: 'IBV_FORK_DISABLED', + 1: 'IBV_FORK_ENABLED', + 2: 'IBV_FORK_UNNEEDED', +} +IBV_FORK_DISABLED = 0 +IBV_FORK_ENABLED = 1 +IBV_FORK_UNNEEDED = 2 +ibv_fork_status = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_atomic_cap' +ibv_atomic_cap__enumvalues = { + 0: 'IBV_ATOMIC_NONE', + 1: 'IBV_ATOMIC_HCA', + 2: 'IBV_ATOMIC_GLOB', +} +IBV_ATOMIC_NONE = 0 +IBV_ATOMIC_HCA = 1 +IBV_ATOMIC_GLOB = 2 +ibv_atomic_cap = ctypes.c_uint32 # enum +class struct_ibv_alloc_dm_attr(Structure): + pass + +struct_ibv_alloc_dm_attr._pack_ = 1 # source:False +struct_ibv_alloc_dm_attr._fields_ = [ + ('length', ctypes.c_uint64), + ('log_align_req', ctypes.c_uint32), + ('comp_mask', ctypes.c_uint32), +] + + +# values for enumeration 'ibv_dm_mask' +ibv_dm_mask__enumvalues = { + 1: 'IBV_DM_MASK_HANDLE', +} +IBV_DM_MASK_HANDLE = 1 +ibv_dm_mask = ctypes.c_uint32 # enum +class struct_ibv_dm(Structure): + pass + +class struct_ibv_context(Structure): + pass + +struct_ibv_dm._pack_ = 1 # source:False +struct_ibv_dm._fields_ = [ + ('context', ctypes.POINTER(struct_ibv_context)), + ('memcpy_to_dm', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_dm), ctypes.c_uint64, ctypes.POINTER(None), ctypes.c_uint64)), + ('memcpy_from_dm', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(None), ctypes.POINTER(struct_ibv_dm), ctypes.c_uint64, ctypes.c_uint64)), + ('comp_mask', ctypes.c_uint32), + ('handle', ctypes.c_uint32), +] + +class struct_ibv_device(Structure): + pass + +class struct_ibv_context_ops(Structure): + pass + +class struct_ibv_device_attr(Structure): + pass + +class struct__compat_ibv_port_attr(Structure): + pass + +class struct_ibv_mw(Structure): + pass + +class struct_ibv_pd(Structure): + pass + + +# values for enumeration 'ibv_mw_type' +ibv_mw_type__enumvalues = { + 1: 'IBV_MW_TYPE_1', + 2: 'IBV_MW_TYPE_2', +} +IBV_MW_TYPE_1 = 1 +IBV_MW_TYPE_2 = 2 +ibv_mw_type = ctypes.c_uint32 # enum +class struct_ibv_qp(Structure): + pass + +class struct_ibv_mw_bind(Structure): + pass + +class struct_ibv_cq(Structure): + pass + +class struct_ibv_wc(Structure): + pass + +class struct_ibv_srq(Structure): + pass + +class struct_ibv_recv_wr(Structure): + pass + +class struct_ibv_send_wr(Structure): + pass + +struct_ibv_context_ops._pack_ = 1 # source:False +struct_ibv_context_ops._fields_ = [ + ('_compat_query_device', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_device_attr))), + ('_compat_query_port', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_context), ctypes.c_ubyte, ctypes.POINTER(struct__compat_ibv_port_attr))), + ('_compat_alloc_pd', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('_compat_dealloc_pd', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('_compat_reg_mr', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('_compat_rereg_mr', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('_compat_dereg_mr', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('alloc_mw', ctypes.CFUNCTYPE(ctypes.POINTER(struct_ibv_mw), ctypes.POINTER(struct_ibv_pd), ibv_mw_type)), + ('bind_mw', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_qp), ctypes.POINTER(struct_ibv_mw), ctypes.POINTER(struct_ibv_mw_bind))), + ('dealloc_mw', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_mw))), + ('_compat_create_cq', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('poll_cq', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_cq), ctypes.c_int32, ctypes.POINTER(struct_ibv_wc))), + ('req_notify_cq', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_cq), ctypes.c_int32)), + ('_compat_cq_event', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('_compat_resize_cq', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('_compat_destroy_cq', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('_compat_create_srq', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('_compat_modify_srq', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('_compat_query_srq', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('_compat_destroy_srq', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('post_srq_recv', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_srq), ctypes.POINTER(struct_ibv_recv_wr), ctypes.POINTER(ctypes.POINTER(struct_ibv_recv_wr)))), + ('_compat_create_qp', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('_compat_query_qp', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('_compat_modify_qp', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('_compat_destroy_qp', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('post_send', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_qp), ctypes.POINTER(struct_ibv_send_wr), ctypes.POINTER(ctypes.POINTER(struct_ibv_send_wr)))), + ('post_recv', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_qp), ctypes.POINTER(struct_ibv_recv_wr), ctypes.POINTER(ctypes.POINTER(struct_ibv_recv_wr)))), + ('_compat_create_ah', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('_compat_destroy_ah', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('_compat_attach_mcast', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('_compat_detach_mcast', ctypes.CFUNCTYPE(ctypes.POINTER(None))), + ('_compat_async_event', ctypes.CFUNCTYPE(ctypes.POINTER(None))), +] + +class union_c__UA_pthread_mutex_t(Union): + pass + +class struct___pthread_mutex_s(Structure): + pass + +class struct___pthread_internal_list(Structure): + pass + +struct___pthread_internal_list._pack_ = 1 # source:False +struct___pthread_internal_list._fields_ = [ + ('__prev', ctypes.POINTER(struct___pthread_internal_list)), + ('__next', ctypes.POINTER(struct___pthread_internal_list)), +] + +struct___pthread_mutex_s._pack_ = 1 # source:False +struct___pthread_mutex_s._fields_ = [ + ('__lock', ctypes.c_int32), + ('__count', ctypes.c_uint32), + ('__owner', ctypes.c_int32), + ('__nusers', ctypes.c_uint32), + ('__kind', ctypes.c_int32), + ('__spins', ctypes.c_int16), + ('__elision', ctypes.c_int16), + ('__list', struct___pthread_internal_list), +] + +union_c__UA_pthread_mutex_t._pack_ = 1 # source:False +union_c__UA_pthread_mutex_t._fields_ = [ + ('__data', struct___pthread_mutex_s), + ('__size', ctypes.c_char * 40), + ('__align', ctypes.c_int64), + ('PADDING_0', ctypes.c_ubyte * 32), +] + +struct_ibv_context._pack_ = 1 # source:False +struct_ibv_context._fields_ = [ + ('device', ctypes.POINTER(struct_ibv_device)), + ('ops', struct_ibv_context_ops), + ('cmd_fd', ctypes.c_int32), + ('async_fd', ctypes.c_int32), + ('num_comp_vectors', ctypes.c_int32), + ('PADDING_0', ctypes.c_ubyte * 4), + ('mutex', union_c__UA_pthread_mutex_t), + ('abi_compat', ctypes.POINTER(None)), +] + +class struct__ibv_device_ops(Structure): + pass + +struct__ibv_device_ops._pack_ = 1 # source:False +struct__ibv_device_ops._fields_ = [ + ('_dummy1', ctypes.CFUNCTYPE(ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_device), ctypes.c_int32)), + ('_dummy2', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_context))), +] + +struct_ibv_device._pack_ = 1 # source:False +struct_ibv_device._fields_ = [ + ('_ops', struct__ibv_device_ops), + ('node_type', ibv_node_type), + ('transport_type', ibv_transport_type), + ('name', ctypes.c_char * 64), + ('dev_name', ctypes.c_char * 64), + ('dev_path', ctypes.c_char * 256), + ('ibdev_path', ctypes.c_char * 256), +] + +struct_ibv_device_attr._pack_ = 1 # source:False +struct_ibv_device_attr._fields_ = [ + ('fw_ver', ctypes.c_char * 64), + ('node_guid', ctypes.c_uint64), + ('sys_image_guid', ctypes.c_uint64), + ('max_mr_size', ctypes.c_uint64), + ('page_size_cap', ctypes.c_uint64), + ('vendor_id', ctypes.c_uint32), + ('vendor_part_id', ctypes.c_uint32), + ('hw_ver', ctypes.c_uint32), + ('max_qp', ctypes.c_int32), + ('max_qp_wr', ctypes.c_int32), + ('device_cap_flags', ctypes.c_uint32), + ('max_sge', ctypes.c_int32), + ('max_sge_rd', ctypes.c_int32), + ('max_cq', ctypes.c_int32), + ('max_cqe', ctypes.c_int32), + ('max_mr', ctypes.c_int32), + ('max_pd', ctypes.c_int32), + ('max_qp_rd_atom', ctypes.c_int32), + ('max_ee_rd_atom', ctypes.c_int32), + ('max_res_rd_atom', ctypes.c_int32), + ('max_qp_init_rd_atom', ctypes.c_int32), + ('max_ee_init_rd_atom', ctypes.c_int32), + ('atomic_cap', ibv_atomic_cap), + ('max_ee', ctypes.c_int32), + ('max_rdd', ctypes.c_int32), + ('max_mw', ctypes.c_int32), + ('max_raw_ipv6_qp', ctypes.c_int32), + ('max_raw_ethy_qp', ctypes.c_int32), + ('max_mcast_grp', ctypes.c_int32), + ('max_mcast_qp_attach', ctypes.c_int32), + ('max_total_mcast_qp_attach', ctypes.c_int32), + ('max_ah', ctypes.c_int32), + ('max_fmr', ctypes.c_int32), + ('max_map_per_fmr', ctypes.c_int32), + ('max_srq', ctypes.c_int32), + ('max_srq_wr', ctypes.c_int32), + ('max_srq_sge', ctypes.c_int32), + ('max_pkeys', ctypes.c_uint16), + ('local_ca_ack_delay', ctypes.c_ubyte), + ('phys_port_cnt', ctypes.c_ubyte), + ('PADDING_0', ctypes.c_ubyte * 4), +] + +struct_ibv_mw._pack_ = 1 # source:False +struct_ibv_mw._fields_ = [ + ('context', ctypes.POINTER(struct_ibv_context)), + ('pd', ctypes.POINTER(struct_ibv_pd)), + ('rkey', ctypes.c_uint32), + ('handle', ctypes.c_uint32), + ('type', ibv_mw_type), + ('PADDING_0', ctypes.c_ubyte * 4), +] + +struct_ibv_pd._pack_ = 1 # source:False +struct_ibv_pd._fields_ = [ + ('context', ctypes.POINTER(struct_ibv_context)), + ('handle', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), +] + + +# values for enumeration 'ibv_qp_state' +ibv_qp_state__enumvalues = { + 0: 'IBV_QPS_RESET', + 1: 'IBV_QPS_INIT', + 2: 'IBV_QPS_RTR', + 3: 'IBV_QPS_RTS', + 4: 'IBV_QPS_SQD', + 5: 'IBV_QPS_SQE', + 6: 'IBV_QPS_ERR', + 7: 'IBV_QPS_UNKNOWN', +} +IBV_QPS_RESET = 0 +IBV_QPS_INIT = 1 +IBV_QPS_RTR = 2 +IBV_QPS_RTS = 3 +IBV_QPS_SQD = 4 +IBV_QPS_SQE = 5 +IBV_QPS_ERR = 6 +IBV_QPS_UNKNOWN = 7 +ibv_qp_state = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_qp_type' +ibv_qp_type__enumvalues = { + 2: 'IBV_QPT_RC', + 3: 'IBV_QPT_UC', + 4: 'IBV_QPT_UD', + 8: 'IBV_QPT_RAW_PACKET', + 9: 'IBV_QPT_XRC_SEND', + 10: 'IBV_QPT_XRC_RECV', + 255: 'IBV_QPT_DRIVER', +} +IBV_QPT_RC = 2 +IBV_QPT_UC = 3 +IBV_QPT_UD = 4 +IBV_QPT_RAW_PACKET = 8 +IBV_QPT_XRC_SEND = 9 +IBV_QPT_XRC_RECV = 10 +IBV_QPT_DRIVER = 255 +ibv_qp_type = ctypes.c_uint32 # enum +class union_c__UA_pthread_cond_t(Union): + pass + +class struct___pthread_cond_s(Structure): + pass + +class union_c__UA___atomic_wide_counter(Union): + pass + +class struct_c__UA___atomic_wide_counter___value32(Structure): + pass + +struct_c__UA___atomic_wide_counter___value32._pack_ = 1 # source:False +struct_c__UA___atomic_wide_counter___value32._fields_ = [ + ('__low', ctypes.c_uint32), + ('__high', ctypes.c_uint32), +] + +union_c__UA___atomic_wide_counter._pack_ = 1 # source:False +union_c__UA___atomic_wide_counter._fields_ = [ + ('__value64', ctypes.c_uint64), + ('__value32', struct_c__UA___atomic_wide_counter___value32), +] + +struct___pthread_cond_s._pack_ = 1 # source:False +struct___pthread_cond_s._fields_ = [ + ('__wseq', union_c__UA___atomic_wide_counter), + ('__g1_start', union_c__UA___atomic_wide_counter), + ('__g_refs', ctypes.c_uint32 * 2), + ('__g_size', ctypes.c_uint32 * 2), + ('__g1_orig_size', ctypes.c_uint32), + ('__wrefs', ctypes.c_uint32), + ('__g_signals', ctypes.c_uint32 * 2), +] + +union_c__UA_pthread_cond_t._pack_ = 1 # source:False +union_c__UA_pthread_cond_t._fields_ = [ + ('__data', struct___pthread_cond_s), + ('__size', ctypes.c_char * 48), + ('__align', ctypes.c_int64), + ('PADDING_0', ctypes.c_ubyte * 40), +] + +struct_ibv_qp._pack_ = 1 # source:False +struct_ibv_qp._fields_ = [ + ('context', ctypes.POINTER(struct_ibv_context)), + ('qp_context', ctypes.POINTER(None)), + ('pd', ctypes.POINTER(struct_ibv_pd)), + ('send_cq', ctypes.POINTER(struct_ibv_cq)), + ('recv_cq', ctypes.POINTER(struct_ibv_cq)), + ('srq', ctypes.POINTER(struct_ibv_srq)), + ('handle', ctypes.c_uint32), + ('qp_num', ctypes.c_uint32), + ('state', ibv_qp_state), + ('qp_type', ibv_qp_type), + ('mutex', union_c__UA_pthread_mutex_t), + ('cond', union_c__UA_pthread_cond_t), + ('events_completed', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), +] + +class struct_ibv_comp_channel(Structure): + pass + +struct_ibv_cq._pack_ = 1 # source:False +struct_ibv_cq._fields_ = [ + ('context', ctypes.POINTER(struct_ibv_context)), + ('channel', ctypes.POINTER(struct_ibv_comp_channel)), + ('cq_context', ctypes.POINTER(None)), + ('handle', ctypes.c_uint32), + ('cqe', ctypes.c_int32), + ('mutex', union_c__UA_pthread_mutex_t), + ('cond', union_c__UA_pthread_cond_t), + ('comp_events_completed', ctypes.c_uint32), + ('async_events_completed', ctypes.c_uint32), +] + +struct_ibv_comp_channel._pack_ = 1 # source:False +struct_ibv_comp_channel._fields_ = [ + ('context', ctypes.POINTER(struct_ibv_context)), + ('fd', ctypes.c_int32), + ('refcnt', ctypes.c_int32), +] + +struct_ibv_srq._pack_ = 1 # source:False +struct_ibv_srq._fields_ = [ + ('context', ctypes.POINTER(struct_ibv_context)), + ('srq_context', ctypes.POINTER(None)), + ('pd', ctypes.POINTER(struct_ibv_pd)), + ('handle', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), + ('mutex', union_c__UA_pthread_mutex_t), + ('cond', union_c__UA_pthread_cond_t), + ('events_completed', ctypes.c_uint32), + ('PADDING_1', ctypes.c_ubyte * 4), +] + +class struct_ibv_mw_bind_info(Structure): + pass + +class struct_ibv_mr(Structure): + pass + +struct_ibv_mw_bind_info._pack_ = 1 # source:False +struct_ibv_mw_bind_info._fields_ = [ + ('mr', ctypes.POINTER(struct_ibv_mr)), + ('addr', ctypes.c_uint64), + ('length', ctypes.c_uint64), + ('mw_access_flags', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), +] + +struct_ibv_mw_bind._pack_ = 1 # source:False +struct_ibv_mw_bind._fields_ = [ + ('wr_id', ctypes.c_uint64), + ('send_flags', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), + ('bind_info', struct_ibv_mw_bind_info), +] + +struct_ibv_mr._pack_ = 1 # source:False +struct_ibv_mr._fields_ = [ + ('context', ctypes.POINTER(struct_ibv_context)), + ('pd', ctypes.POINTER(struct_ibv_pd)), + ('addr', ctypes.POINTER(None)), + ('length', ctypes.c_uint64), + ('handle', ctypes.c_uint32), + ('lkey', ctypes.c_uint32), + ('rkey', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), +] + + +# values for enumeration 'ibv_wc_status' +ibv_wc_status__enumvalues = { + 0: 'IBV_WC_SUCCESS', + 1: 'IBV_WC_LOC_LEN_ERR', + 2: 'IBV_WC_LOC_QP_OP_ERR', + 3: 'IBV_WC_LOC_EEC_OP_ERR', + 4: 'IBV_WC_LOC_PROT_ERR', + 5: 'IBV_WC_WR_FLUSH_ERR', + 6: 'IBV_WC_MW_BIND_ERR', + 7: 'IBV_WC_BAD_RESP_ERR', + 8: 'IBV_WC_LOC_ACCESS_ERR', + 9: 'IBV_WC_REM_INV_REQ_ERR', + 10: 'IBV_WC_REM_ACCESS_ERR', + 11: 'IBV_WC_REM_OP_ERR', + 12: 'IBV_WC_RETRY_EXC_ERR', + 13: 'IBV_WC_RNR_RETRY_EXC_ERR', + 14: 'IBV_WC_LOC_RDD_VIOL_ERR', + 15: 'IBV_WC_REM_INV_RD_REQ_ERR', + 16: 'IBV_WC_REM_ABORT_ERR', + 17: 'IBV_WC_INV_EECN_ERR', + 18: 'IBV_WC_INV_EEC_STATE_ERR', + 19: 'IBV_WC_FATAL_ERR', + 20: 'IBV_WC_RESP_TIMEOUT_ERR', + 21: 'IBV_WC_GENERAL_ERR', + 22: 'IBV_WC_TM_ERR', + 23: 'IBV_WC_TM_RNDV_INCOMPLETE', +} +IBV_WC_SUCCESS = 0 +IBV_WC_LOC_LEN_ERR = 1 +IBV_WC_LOC_QP_OP_ERR = 2 +IBV_WC_LOC_EEC_OP_ERR = 3 +IBV_WC_LOC_PROT_ERR = 4 +IBV_WC_WR_FLUSH_ERR = 5 +IBV_WC_MW_BIND_ERR = 6 +IBV_WC_BAD_RESP_ERR = 7 +IBV_WC_LOC_ACCESS_ERR = 8 +IBV_WC_REM_INV_REQ_ERR = 9 +IBV_WC_REM_ACCESS_ERR = 10 +IBV_WC_REM_OP_ERR = 11 +IBV_WC_RETRY_EXC_ERR = 12 +IBV_WC_RNR_RETRY_EXC_ERR = 13 +IBV_WC_LOC_RDD_VIOL_ERR = 14 +IBV_WC_REM_INV_RD_REQ_ERR = 15 +IBV_WC_REM_ABORT_ERR = 16 +IBV_WC_INV_EECN_ERR = 17 +IBV_WC_INV_EEC_STATE_ERR = 18 +IBV_WC_FATAL_ERR = 19 +IBV_WC_RESP_TIMEOUT_ERR = 20 +IBV_WC_GENERAL_ERR = 21 +IBV_WC_TM_ERR = 22 +IBV_WC_TM_RNDV_INCOMPLETE = 23 +ibv_wc_status = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_wc_opcode' +ibv_wc_opcode__enumvalues = { + 0: 'IBV_WC_SEND', + 1: 'IBV_WC_RDMA_WRITE', + 2: 'IBV_WC_RDMA_READ', + 3: 'IBV_WC_COMP_SWAP', + 4: 'IBV_WC_FETCH_ADD', + 5: 'IBV_WC_BIND_MW', + 6: 'IBV_WC_LOCAL_INV', + 7: 'IBV_WC_TSO', + 8: 'IBV_WC_FLUSH', + 9: 'IBV_WC_ATOMIC_WRITE', + 128: 'IBV_WC_RECV', + 129: 'IBV_WC_RECV_RDMA_WITH_IMM', + 130: 'IBV_WC_TM_ADD', + 131: 'IBV_WC_TM_DEL', + 132: 'IBV_WC_TM_SYNC', + 133: 'IBV_WC_TM_RECV', + 134: 'IBV_WC_TM_NO_TAG', + 135: 'IBV_WC_DRIVER1', + 136: 'IBV_WC_DRIVER2', + 137: 'IBV_WC_DRIVER3', +} +IBV_WC_SEND = 0 +IBV_WC_RDMA_WRITE = 1 +IBV_WC_RDMA_READ = 2 +IBV_WC_COMP_SWAP = 3 +IBV_WC_FETCH_ADD = 4 +IBV_WC_BIND_MW = 5 +IBV_WC_LOCAL_INV = 6 +IBV_WC_TSO = 7 +IBV_WC_FLUSH = 8 +IBV_WC_ATOMIC_WRITE = 9 +IBV_WC_RECV = 128 +IBV_WC_RECV_RDMA_WITH_IMM = 129 +IBV_WC_TM_ADD = 130 +IBV_WC_TM_DEL = 131 +IBV_WC_TM_SYNC = 132 +IBV_WC_TM_RECV = 133 +IBV_WC_TM_NO_TAG = 134 +IBV_WC_DRIVER1 = 135 +IBV_WC_DRIVER2 = 136 +IBV_WC_DRIVER3 = 137 +ibv_wc_opcode = ctypes.c_uint32 # enum +class union_ibv_wc_0(Union): + pass + +union_ibv_wc_0._pack_ = 1 # source:False +union_ibv_wc_0._fields_ = [ + ('imm_data', ctypes.c_uint32), + ('invalidated_rkey', ctypes.c_uint32), +] + +struct_ibv_wc._pack_ = 1 # source:False +struct_ibv_wc._anonymous_ = ('_0',) +struct_ibv_wc._fields_ = [ + ('wr_id', ctypes.c_uint64), + ('status', ibv_wc_status), + ('opcode', ibv_wc_opcode), + ('vendor_err', ctypes.c_uint32), + ('byte_len', ctypes.c_uint32), + ('_0', union_ibv_wc_0), + ('qp_num', ctypes.c_uint32), + ('src_qp', ctypes.c_uint32), + ('wc_flags', ctypes.c_uint32), + ('pkey_index', ctypes.c_uint16), + ('slid', ctypes.c_uint16), + ('sl', ctypes.c_ubyte), + ('dlid_path_bits', ctypes.c_ubyte), + ('PADDING_0', ctypes.c_ubyte * 2), +] + +class struct_ibv_sge(Structure): + pass + +struct_ibv_recv_wr._pack_ = 1 # source:False +struct_ibv_recv_wr._fields_ = [ + ('wr_id', ctypes.c_uint64), + ('next', ctypes.POINTER(struct_ibv_recv_wr)), + ('sg_list', ctypes.POINTER(struct_ibv_sge)), + ('num_sge', ctypes.c_int32), + ('PADDING_0', ctypes.c_ubyte * 4), +] + +struct_ibv_sge._pack_ = 1 # source:False +struct_ibv_sge._fields_ = [ + ('addr', ctypes.c_uint64), + ('length', ctypes.c_uint32), + ('lkey', ctypes.c_uint32), +] + + +# values for enumeration 'ibv_wr_opcode' +ibv_wr_opcode__enumvalues = { + 0: 'IBV_WR_RDMA_WRITE', + 1: 'IBV_WR_RDMA_WRITE_WITH_IMM', + 2: 'IBV_WR_SEND', + 3: 'IBV_WR_SEND_WITH_IMM', + 4: 'IBV_WR_RDMA_READ', + 5: 'IBV_WR_ATOMIC_CMP_AND_SWP', + 6: 'IBV_WR_ATOMIC_FETCH_AND_ADD', + 7: 'IBV_WR_LOCAL_INV', + 8: 'IBV_WR_BIND_MW', + 9: 'IBV_WR_SEND_WITH_INV', + 10: 'IBV_WR_TSO', + 11: 'IBV_WR_DRIVER1', + 14: 'IBV_WR_FLUSH', + 15: 'IBV_WR_ATOMIC_WRITE', +} +IBV_WR_RDMA_WRITE = 0 +IBV_WR_RDMA_WRITE_WITH_IMM = 1 +IBV_WR_SEND = 2 +IBV_WR_SEND_WITH_IMM = 3 +IBV_WR_RDMA_READ = 4 +IBV_WR_ATOMIC_CMP_AND_SWP = 5 +IBV_WR_ATOMIC_FETCH_AND_ADD = 6 +IBV_WR_LOCAL_INV = 7 +IBV_WR_BIND_MW = 8 +IBV_WR_SEND_WITH_INV = 9 +IBV_WR_TSO = 10 +IBV_WR_DRIVER1 = 11 +IBV_WR_FLUSH = 14 +IBV_WR_ATOMIC_WRITE = 15 +ibv_wr_opcode = ctypes.c_uint32 # enum +class union_ibv_send_wr_0(Union): + pass + +union_ibv_send_wr_0._pack_ = 1 # source:False +union_ibv_send_wr_0._fields_ = [ + ('imm_data', ctypes.c_uint32), + ('invalidate_rkey', ctypes.c_uint32), +] + +class union_ibv_send_wr_wr(Union): + pass + +class struct_ibv_send_wr_1_rdma(Structure): + pass + +struct_ibv_send_wr_1_rdma._pack_ = 1 # source:False +struct_ibv_send_wr_1_rdma._fields_ = [ + ('remote_addr', ctypes.c_uint64), + ('rkey', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), +] + +class struct_ibv_send_wr_1_atomic(Structure): + pass + +struct_ibv_send_wr_1_atomic._pack_ = 1 # source:False +struct_ibv_send_wr_1_atomic._fields_ = [ + ('remote_addr', ctypes.c_uint64), + ('compare_add', ctypes.c_uint64), + ('swap', ctypes.c_uint64), + ('rkey', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), +] + +class struct_ibv_send_wr_1_ud(Structure): + pass + +class struct_ibv_ah(Structure): + pass + +struct_ibv_send_wr_1_ud._pack_ = 1 # source:False +struct_ibv_send_wr_1_ud._fields_ = [ + ('ah', ctypes.POINTER(struct_ibv_ah)), + ('remote_qpn', ctypes.c_uint32), + ('remote_qkey', ctypes.c_uint32), +] + +union_ibv_send_wr_wr._pack_ = 1 # source:False +union_ibv_send_wr_wr._fields_ = [ + ('rdma', struct_ibv_send_wr_1_rdma), + ('atomic', struct_ibv_send_wr_1_atomic), + ('ud', struct_ibv_send_wr_1_ud), + ('PADDING_0', ctypes.c_ubyte * 16), +] + +class union_ibv_send_wr_qp_type(Union): + pass + +class struct_ibv_send_wr_2_xrc(Structure): + pass + +struct_ibv_send_wr_2_xrc._pack_ = 1 # source:False +struct_ibv_send_wr_2_xrc._fields_ = [ + ('remote_srqn', ctypes.c_uint32), +] + +union_ibv_send_wr_qp_type._pack_ = 1 # source:False +union_ibv_send_wr_qp_type._fields_ = [ + ('xrc', struct_ibv_send_wr_2_xrc), +] + +class union_ibv_send_wr_3(Union): + pass + +class struct_ibv_send_wr_3_bind_mw(Structure): + pass + +struct_ibv_send_wr_3_bind_mw._pack_ = 1 # source:False +struct_ibv_send_wr_3_bind_mw._fields_ = [ + ('mw', ctypes.POINTER(struct_ibv_mw)), + ('rkey', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), + ('bind_info', struct_ibv_mw_bind_info), +] + +class struct_ibv_send_wr_3_tso(Structure): + pass + +struct_ibv_send_wr_3_tso._pack_ = 1 # source:False +struct_ibv_send_wr_3_tso._fields_ = [ + ('hdr', ctypes.POINTER(None)), + ('hdr_sz', ctypes.c_uint16), + ('mss', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 4), +] + +union_ibv_send_wr_3._pack_ = 1 # source:False +union_ibv_send_wr_3._fields_ = [ + ('bind_mw', struct_ibv_send_wr_3_bind_mw), + ('tso', struct_ibv_send_wr_3_tso), + ('PADDING_0', ctypes.c_ubyte * 32), +] + +struct_ibv_send_wr._pack_ = 1 # source:False +struct_ibv_send_wr._anonymous_ = ('_0', '_1',) +struct_ibv_send_wr._fields_ = [ + ('wr_id', ctypes.c_uint64), + ('next', ctypes.POINTER(struct_ibv_send_wr)), + ('sg_list', ctypes.POINTER(struct_ibv_sge)), + ('num_sge', ctypes.c_int32), + ('opcode', ibv_wr_opcode), + ('send_flags', ctypes.c_uint32), + ('_0', union_ibv_send_wr_0), + ('wr', union_ibv_send_wr_wr), + ('qp_type', union_ibv_send_wr_qp_type), + ('PADDING_0', ctypes.c_ubyte * 4), + ('_1', union_ibv_send_wr_3), +] + +struct_ibv_ah._pack_ = 1 # source:False +struct_ibv_ah._fields_ = [ + ('context', ctypes.POINTER(struct_ibv_context)), + ('pd', ctypes.POINTER(struct_ibv_pd)), + ('handle', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), +] + +class struct_ibv_query_device_ex_input(Structure): + pass + +struct_ibv_query_device_ex_input._pack_ = 1 # source:False +struct_ibv_query_device_ex_input._fields_ = [ + ('comp_mask', ctypes.c_uint32), +] + + +# values for enumeration 'ibv_odp_transport_cap_bits' +ibv_odp_transport_cap_bits__enumvalues = { + 1: 'IBV_ODP_SUPPORT_SEND', + 2: 'IBV_ODP_SUPPORT_RECV', + 4: 'IBV_ODP_SUPPORT_WRITE', + 8: 'IBV_ODP_SUPPORT_READ', + 16: 'IBV_ODP_SUPPORT_ATOMIC', + 32: 'IBV_ODP_SUPPORT_SRQ_RECV', +} +IBV_ODP_SUPPORT_SEND = 1 +IBV_ODP_SUPPORT_RECV = 2 +IBV_ODP_SUPPORT_WRITE = 4 +IBV_ODP_SUPPORT_READ = 8 +IBV_ODP_SUPPORT_ATOMIC = 16 +IBV_ODP_SUPPORT_SRQ_RECV = 32 +ibv_odp_transport_cap_bits = ctypes.c_uint32 # enum +class struct_ibv_odp_caps(Structure): + pass + +class struct_ibv_odp_caps_per_transport_caps(Structure): + pass + +struct_ibv_odp_caps_per_transport_caps._pack_ = 1 # source:False +struct_ibv_odp_caps_per_transport_caps._fields_ = [ + ('rc_odp_caps', ctypes.c_uint32), + ('uc_odp_caps', ctypes.c_uint32), + ('ud_odp_caps', ctypes.c_uint32), +] + +struct_ibv_odp_caps._pack_ = 1 # source:False +struct_ibv_odp_caps._fields_ = [ + ('general_caps', ctypes.c_uint64), + ('per_transport_caps', struct_ibv_odp_caps_per_transport_caps), + ('PADDING_0', ctypes.c_ubyte * 4), +] + + +# values for enumeration 'ibv_odp_general_caps' +ibv_odp_general_caps__enumvalues = { + 1: 'IBV_ODP_SUPPORT', + 2: 'IBV_ODP_SUPPORT_IMPLICIT', +} +IBV_ODP_SUPPORT = 1 +IBV_ODP_SUPPORT_IMPLICIT = 2 +ibv_odp_general_caps = ctypes.c_uint32 # enum +class struct_ibv_tso_caps(Structure): + pass + +struct_ibv_tso_caps._pack_ = 1 # source:False +struct_ibv_tso_caps._fields_ = [ + ('max_tso', ctypes.c_uint32), + ('supported_qpts', ctypes.c_uint32), +] + + +# values for enumeration 'ibv_rx_hash_function_flags' +ibv_rx_hash_function_flags__enumvalues = { + 1: 'IBV_RX_HASH_FUNC_TOEPLITZ', +} +IBV_RX_HASH_FUNC_TOEPLITZ = 1 +ibv_rx_hash_function_flags = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_rx_hash_fields' +ibv_rx_hash_fields__enumvalues = { + 1: 'IBV_RX_HASH_SRC_IPV4', + 2: 'IBV_RX_HASH_DST_IPV4', + 4: 'IBV_RX_HASH_SRC_IPV6', + 8: 'IBV_RX_HASH_DST_IPV6', + 16: 'IBV_RX_HASH_SRC_PORT_TCP', + 32: 'IBV_RX_HASH_DST_PORT_TCP', + 64: 'IBV_RX_HASH_SRC_PORT_UDP', + 128: 'IBV_RX_HASH_DST_PORT_UDP', + 256: 'IBV_RX_HASH_IPSEC_SPI', + 2147483648: 'IBV_RX_HASH_INNER', +} +IBV_RX_HASH_SRC_IPV4 = 1 +IBV_RX_HASH_DST_IPV4 = 2 +IBV_RX_HASH_SRC_IPV6 = 4 +IBV_RX_HASH_DST_IPV6 = 8 +IBV_RX_HASH_SRC_PORT_TCP = 16 +IBV_RX_HASH_DST_PORT_TCP = 32 +IBV_RX_HASH_SRC_PORT_UDP = 64 +IBV_RX_HASH_DST_PORT_UDP = 128 +IBV_RX_HASH_IPSEC_SPI = 256 +IBV_RX_HASH_INNER = 2147483648 +ibv_rx_hash_fields = ctypes.c_uint32 # enum +class struct_ibv_rss_caps(Structure): + pass + +struct_ibv_rss_caps._pack_ = 1 # source:False +struct_ibv_rss_caps._fields_ = [ + ('supported_qpts', ctypes.c_uint32), + ('max_rwq_indirection_tables', ctypes.c_uint32), + ('max_rwq_indirection_table_size', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), + ('rx_hash_fields_mask', ctypes.c_uint64), + ('rx_hash_function', ctypes.c_ubyte), + ('PADDING_1', ctypes.c_ubyte * 7), +] + +class struct_ibv_packet_pacing_caps(Structure): + pass + +struct_ibv_packet_pacing_caps._pack_ = 1 # source:False +struct_ibv_packet_pacing_caps._fields_ = [ + ('qp_rate_limit_min', ctypes.c_uint32), + ('qp_rate_limit_max', ctypes.c_uint32), + ('supported_qpts', ctypes.c_uint32), +] + + +# values for enumeration 'ibv_raw_packet_caps' +ibv_raw_packet_caps__enumvalues = { + 1: 'IBV_RAW_PACKET_CAP_CVLAN_STRIPPING', + 2: 'IBV_RAW_PACKET_CAP_SCATTER_FCS', + 4: 'IBV_RAW_PACKET_CAP_IP_CSUM', + 8: 'IBV_RAW_PACKET_CAP_DELAY_DROP', +} +IBV_RAW_PACKET_CAP_CVLAN_STRIPPING = 1 +IBV_RAW_PACKET_CAP_SCATTER_FCS = 2 +IBV_RAW_PACKET_CAP_IP_CSUM = 4 +IBV_RAW_PACKET_CAP_DELAY_DROP = 8 +ibv_raw_packet_caps = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_tm_cap_flags' +ibv_tm_cap_flags__enumvalues = { + 1: 'IBV_TM_CAP_RC', +} +IBV_TM_CAP_RC = 1 +ibv_tm_cap_flags = ctypes.c_uint32 # enum +class struct_ibv_tm_caps(Structure): + pass + +struct_ibv_tm_caps._pack_ = 1 # source:False +struct_ibv_tm_caps._fields_ = [ + ('max_rndv_hdr_size', ctypes.c_uint32), + ('max_num_tags', ctypes.c_uint32), + ('flags', ctypes.c_uint32), + ('max_ops', ctypes.c_uint32), + ('max_sge', ctypes.c_uint32), +] + +class struct_ibv_cq_moderation_caps(Structure): + pass + +struct_ibv_cq_moderation_caps._pack_ = 1 # source:False +struct_ibv_cq_moderation_caps._fields_ = [ + ('max_cq_count', ctypes.c_uint16), + ('max_cq_period', ctypes.c_uint16), +] + + +# values for enumeration 'ibv_pci_atomic_op_size' +ibv_pci_atomic_op_size__enumvalues = { + 1: 'IBV_PCI_ATOMIC_OPERATION_4_BYTE_SIZE_SUP', + 2: 'IBV_PCI_ATOMIC_OPERATION_8_BYTE_SIZE_SUP', + 4: 'IBV_PCI_ATOMIC_OPERATION_16_BYTE_SIZE_SUP', +} +IBV_PCI_ATOMIC_OPERATION_4_BYTE_SIZE_SUP = 1 +IBV_PCI_ATOMIC_OPERATION_8_BYTE_SIZE_SUP = 2 +IBV_PCI_ATOMIC_OPERATION_16_BYTE_SIZE_SUP = 4 +ibv_pci_atomic_op_size = ctypes.c_uint32 # enum +class struct_ibv_pci_atomic_caps(Structure): + pass + +struct_ibv_pci_atomic_caps._pack_ = 1 # source:False +struct_ibv_pci_atomic_caps._fields_ = [ + ('fetch_add', ctypes.c_uint16), + ('swap', ctypes.c_uint16), + ('compare_swap', ctypes.c_uint16), +] + +class struct_ibv_device_attr_ex(Structure): + pass + +struct_ibv_device_attr_ex._pack_ = 1 # source:False +struct_ibv_device_attr_ex._fields_ = [ + ('orig_attr', struct_ibv_device_attr), + ('comp_mask', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), + ('odp_caps', struct_ibv_odp_caps), + ('completion_timestamp_mask', ctypes.c_uint64), + ('hca_core_clock', ctypes.c_uint64), + ('device_cap_flags_ex', ctypes.c_uint64), + ('tso_caps', struct_ibv_tso_caps), + ('rss_caps', struct_ibv_rss_caps), + ('max_wq_type_rq', ctypes.c_uint32), + ('packet_pacing_caps', struct_ibv_packet_pacing_caps), + ('raw_packet_caps', ctypes.c_uint32), + ('tm_caps', struct_ibv_tm_caps), + ('cq_mod_caps', struct_ibv_cq_moderation_caps), + ('PADDING_1', ctypes.c_ubyte * 4), + ('max_dm_size', ctypes.c_uint64), + ('pci_atomic_caps', struct_ibv_pci_atomic_caps), + ('PADDING_2', ctypes.c_ubyte * 2), + ('xrc_odp_caps', ctypes.c_uint32), + ('phys_port_cnt_ex', ctypes.c_uint32), +] + + +# values for enumeration 'ibv_mtu' +ibv_mtu__enumvalues = { + 1: 'IBV_MTU_256', + 2: 'IBV_MTU_512', + 3: 'IBV_MTU_1024', + 4: 'IBV_MTU_2048', + 5: 'IBV_MTU_4096', +} +IBV_MTU_256 = 1 +IBV_MTU_512 = 2 +IBV_MTU_1024 = 3 +IBV_MTU_2048 = 4 +IBV_MTU_4096 = 5 +ibv_mtu = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_port_state' +ibv_port_state__enumvalues = { + 0: 'IBV_PORT_NOP', + 1: 'IBV_PORT_DOWN', + 2: 'IBV_PORT_INIT', + 3: 'IBV_PORT_ARMED', + 4: 'IBV_PORT_ACTIVE', + 5: 'IBV_PORT_ACTIVE_DEFER', +} +IBV_PORT_NOP = 0 +IBV_PORT_DOWN = 1 +IBV_PORT_INIT = 2 +IBV_PORT_ARMED = 3 +IBV_PORT_ACTIVE = 4 +IBV_PORT_ACTIVE_DEFER = 5 +ibv_port_state = ctypes.c_uint32 # enum + +# values for enumeration 'c__Ea_IBV_LINK_LAYER_UNSPECIFIED' +c__Ea_IBV_LINK_LAYER_UNSPECIFIED__enumvalues = { + 0: 'IBV_LINK_LAYER_UNSPECIFIED', + 1: 'IBV_LINK_LAYER_INFINIBAND', + 2: 'IBV_LINK_LAYER_ETHERNET', +} +IBV_LINK_LAYER_UNSPECIFIED = 0 +IBV_LINK_LAYER_INFINIBAND = 1 +IBV_LINK_LAYER_ETHERNET = 2 +c__Ea_IBV_LINK_LAYER_UNSPECIFIED = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_port_cap_flags' +ibv_port_cap_flags__enumvalues = { + 2: 'IBV_PORT_SM', + 4: 'IBV_PORT_NOTICE_SUP', + 8: 'IBV_PORT_TRAP_SUP', + 16: 'IBV_PORT_OPT_IPD_SUP', + 32: 'IBV_PORT_AUTO_MIGR_SUP', + 64: 'IBV_PORT_SL_MAP_SUP', + 128: 'IBV_PORT_MKEY_NVRAM', + 256: 'IBV_PORT_PKEY_NVRAM', + 512: 'IBV_PORT_LED_INFO_SUP', + 2048: 'IBV_PORT_SYS_IMAGE_GUID_SUP', + 4096: 'IBV_PORT_PKEY_SW_EXT_PORT_TRAP_SUP', + 16384: 'IBV_PORT_EXTENDED_SPEEDS_SUP', + 32768: 'IBV_PORT_CAP_MASK2_SUP', + 65536: 'IBV_PORT_CM_SUP', + 131072: 'IBV_PORT_SNMP_TUNNEL_SUP', + 262144: 'IBV_PORT_REINIT_SUP', + 524288: 'IBV_PORT_DEVICE_MGMT_SUP', + 1048576: 'IBV_PORT_VENDOR_CLASS_SUP', + 2097152: 'IBV_PORT_DR_NOTICE_SUP', + 4194304: 'IBV_PORT_CAP_MASK_NOTICE_SUP', + 8388608: 'IBV_PORT_BOOT_MGMT_SUP', + 16777216: 'IBV_PORT_LINK_LATENCY_SUP', + 33554432: 'IBV_PORT_CLIENT_REG_SUP', + 67108864: 'IBV_PORT_IP_BASED_GIDS', +} +IBV_PORT_SM = 2 +IBV_PORT_NOTICE_SUP = 4 +IBV_PORT_TRAP_SUP = 8 +IBV_PORT_OPT_IPD_SUP = 16 +IBV_PORT_AUTO_MIGR_SUP = 32 +IBV_PORT_SL_MAP_SUP = 64 +IBV_PORT_MKEY_NVRAM = 128 +IBV_PORT_PKEY_NVRAM = 256 +IBV_PORT_LED_INFO_SUP = 512 +IBV_PORT_SYS_IMAGE_GUID_SUP = 2048 +IBV_PORT_PKEY_SW_EXT_PORT_TRAP_SUP = 4096 +IBV_PORT_EXTENDED_SPEEDS_SUP = 16384 +IBV_PORT_CAP_MASK2_SUP = 32768 +IBV_PORT_CM_SUP = 65536 +IBV_PORT_SNMP_TUNNEL_SUP = 131072 +IBV_PORT_REINIT_SUP = 262144 +IBV_PORT_DEVICE_MGMT_SUP = 524288 +IBV_PORT_VENDOR_CLASS_SUP = 1048576 +IBV_PORT_DR_NOTICE_SUP = 2097152 +IBV_PORT_CAP_MASK_NOTICE_SUP = 4194304 +IBV_PORT_BOOT_MGMT_SUP = 8388608 +IBV_PORT_LINK_LATENCY_SUP = 16777216 +IBV_PORT_CLIENT_REG_SUP = 33554432 +IBV_PORT_IP_BASED_GIDS = 67108864 +ibv_port_cap_flags = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_port_cap_flags2' +ibv_port_cap_flags2__enumvalues = { + 1: 'IBV_PORT_SET_NODE_DESC_SUP', + 2: 'IBV_PORT_INFO_EXT_SUP', + 4: 'IBV_PORT_VIRT_SUP', + 8: 'IBV_PORT_SWITCH_PORT_STATE_TABLE_SUP', + 16: 'IBV_PORT_LINK_WIDTH_2X_SUP', + 32: 'IBV_PORT_LINK_SPEED_HDR_SUP', + 1024: 'IBV_PORT_LINK_SPEED_NDR_SUP', + 4096: 'IBV_PORT_LINK_SPEED_XDR_SUP', +} +IBV_PORT_SET_NODE_DESC_SUP = 1 +IBV_PORT_INFO_EXT_SUP = 2 +IBV_PORT_VIRT_SUP = 4 +IBV_PORT_SWITCH_PORT_STATE_TABLE_SUP = 8 +IBV_PORT_LINK_WIDTH_2X_SUP = 16 +IBV_PORT_LINK_SPEED_HDR_SUP = 32 +IBV_PORT_LINK_SPEED_NDR_SUP = 1024 +IBV_PORT_LINK_SPEED_XDR_SUP = 4096 +ibv_port_cap_flags2 = ctypes.c_uint32 # enum +class struct_ibv_port_attr(Structure): + pass + +struct_ibv_port_attr._pack_ = 1 # source:False +struct_ibv_port_attr._fields_ = [ + ('state', ibv_port_state), + ('max_mtu', ibv_mtu), + ('active_mtu', ibv_mtu), + ('gid_tbl_len', ctypes.c_int32), + ('port_cap_flags', ctypes.c_uint32), + ('max_msg_sz', ctypes.c_uint32), + ('bad_pkey_cntr', ctypes.c_uint32), + ('qkey_viol_cntr', ctypes.c_uint32), + ('pkey_tbl_len', ctypes.c_uint16), + ('lid', ctypes.c_uint16), + ('sm_lid', ctypes.c_uint16), + ('lmc', ctypes.c_ubyte), + ('max_vl_num', ctypes.c_ubyte), + ('sm_sl', ctypes.c_ubyte), + ('subnet_timeout', ctypes.c_ubyte), + ('init_type_reply', ctypes.c_ubyte), + ('active_width', ctypes.c_ubyte), + ('active_speed', ctypes.c_ubyte), + ('phys_state', ctypes.c_ubyte), + ('link_layer', ctypes.c_ubyte), + ('flags', ctypes.c_ubyte), + ('port_cap_flags2', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 2), + ('active_speed_ex', ctypes.c_uint32), +] + + +# values for enumeration 'ibv_event_type' +ibv_event_type__enumvalues = { + 0: 'IBV_EVENT_CQ_ERR', + 1: 'IBV_EVENT_QP_FATAL', + 2: 'IBV_EVENT_QP_REQ_ERR', + 3: 'IBV_EVENT_QP_ACCESS_ERR', + 4: 'IBV_EVENT_COMM_EST', + 5: 'IBV_EVENT_SQ_DRAINED', + 6: 'IBV_EVENT_PATH_MIG', + 7: 'IBV_EVENT_PATH_MIG_ERR', + 8: 'IBV_EVENT_DEVICE_FATAL', + 9: 'IBV_EVENT_PORT_ACTIVE', + 10: 'IBV_EVENT_PORT_ERR', + 11: 'IBV_EVENT_LID_CHANGE', + 12: 'IBV_EVENT_PKEY_CHANGE', + 13: 'IBV_EVENT_SM_CHANGE', + 14: 'IBV_EVENT_SRQ_ERR', + 15: 'IBV_EVENT_SRQ_LIMIT_REACHED', + 16: 'IBV_EVENT_QP_LAST_WQE_REACHED', + 17: 'IBV_EVENT_CLIENT_REREGISTER', + 18: 'IBV_EVENT_GID_CHANGE', + 19: 'IBV_EVENT_WQ_FATAL', +} +IBV_EVENT_CQ_ERR = 0 +IBV_EVENT_QP_FATAL = 1 +IBV_EVENT_QP_REQ_ERR = 2 +IBV_EVENT_QP_ACCESS_ERR = 3 +IBV_EVENT_COMM_EST = 4 +IBV_EVENT_SQ_DRAINED = 5 +IBV_EVENT_PATH_MIG = 6 +IBV_EVENT_PATH_MIG_ERR = 7 +IBV_EVENT_DEVICE_FATAL = 8 +IBV_EVENT_PORT_ACTIVE = 9 +IBV_EVENT_PORT_ERR = 10 +IBV_EVENT_LID_CHANGE = 11 +IBV_EVENT_PKEY_CHANGE = 12 +IBV_EVENT_SM_CHANGE = 13 +IBV_EVENT_SRQ_ERR = 14 +IBV_EVENT_SRQ_LIMIT_REACHED = 15 +IBV_EVENT_QP_LAST_WQE_REACHED = 16 +IBV_EVENT_CLIENT_REREGISTER = 17 +IBV_EVENT_GID_CHANGE = 18 +IBV_EVENT_WQ_FATAL = 19 +ibv_event_type = ctypes.c_uint32 # enum +class struct_ibv_async_event(Structure): + pass + +class union_ibv_async_event_element(Union): + pass + +class struct_ibv_wq(Structure): + pass + +union_ibv_async_event_element._pack_ = 1 # source:False +union_ibv_async_event_element._fields_ = [ + ('cq', ctypes.POINTER(struct_ibv_cq)), + ('qp', ctypes.POINTER(struct_ibv_qp)), + ('srq', ctypes.POINTER(struct_ibv_srq)), + ('wq', ctypes.POINTER(struct_ibv_wq)), + ('port_num', ctypes.c_int32), + ('PADDING_0', ctypes.c_ubyte * 4), +] + +struct_ibv_async_event._pack_ = 1 # source:False +struct_ibv_async_event._fields_ = [ + ('element', union_ibv_async_event_element), + ('event_type', ibv_event_type), + ('PADDING_0', ctypes.c_ubyte * 4), +] + + +# values for enumeration 'ibv_wq_state' +ibv_wq_state__enumvalues = { + 0: 'IBV_WQS_RESET', + 1: 'IBV_WQS_RDY', + 2: 'IBV_WQS_ERR', + 3: 'IBV_WQS_UNKNOWN', +} +IBV_WQS_RESET = 0 +IBV_WQS_RDY = 1 +IBV_WQS_ERR = 2 +IBV_WQS_UNKNOWN = 3 +ibv_wq_state = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_wq_type' +ibv_wq_type__enumvalues = { + 0: 'IBV_WQT_RQ', +} +IBV_WQT_RQ = 0 +ibv_wq_type = ctypes.c_uint32 # enum +struct_ibv_wq._pack_ = 1 # source:False +struct_ibv_wq._fields_ = [ + ('context', ctypes.POINTER(struct_ibv_context)), + ('wq_context', ctypes.POINTER(None)), + ('pd', ctypes.POINTER(struct_ibv_pd)), + ('cq', ctypes.POINTER(struct_ibv_cq)), + ('wq_num', ctypes.c_uint32), + ('handle', ctypes.c_uint32), + ('state', ibv_wq_state), + ('wq_type', ibv_wq_type), + ('post_recv', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_wq), ctypes.POINTER(struct_ibv_recv_wr), ctypes.POINTER(ctypes.POINTER(struct_ibv_recv_wr)))), + ('mutex', union_c__UA_pthread_mutex_t), + ('cond', union_c__UA_pthread_cond_t), + ('events_completed', ctypes.c_uint32), + ('comp_mask', ctypes.c_uint32), +] + +try: + ibv_wc_status_str = _libraries['libibverbs'].ibv_wc_status_str + ibv_wc_status_str.restype = ctypes.POINTER(ctypes.c_char) + ibv_wc_status_str.argtypes = [ibv_wc_status] +except AttributeError: + pass + +# values for enumeration 'c__Ea_IBV_WC_IP_CSUM_OK_SHIFT' +c__Ea_IBV_WC_IP_CSUM_OK_SHIFT__enumvalues = { + 2: 'IBV_WC_IP_CSUM_OK_SHIFT', +} +IBV_WC_IP_CSUM_OK_SHIFT = 2 +c__Ea_IBV_WC_IP_CSUM_OK_SHIFT = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_create_cq_wc_flags' +ibv_create_cq_wc_flags__enumvalues = { + 1: 'IBV_WC_EX_WITH_BYTE_LEN', + 2: 'IBV_WC_EX_WITH_IMM', + 4: 'IBV_WC_EX_WITH_QP_NUM', + 8: 'IBV_WC_EX_WITH_SRC_QP', + 16: 'IBV_WC_EX_WITH_SLID', + 32: 'IBV_WC_EX_WITH_SL', + 64: 'IBV_WC_EX_WITH_DLID_PATH_BITS', + 128: 'IBV_WC_EX_WITH_COMPLETION_TIMESTAMP', + 256: 'IBV_WC_EX_WITH_CVLAN', + 512: 'IBV_WC_EX_WITH_FLOW_TAG', + 1024: 'IBV_WC_EX_WITH_TM_INFO', + 2048: 'IBV_WC_EX_WITH_COMPLETION_TIMESTAMP_WALLCLOCK', +} +IBV_WC_EX_WITH_BYTE_LEN = 1 +IBV_WC_EX_WITH_IMM = 2 +IBV_WC_EX_WITH_QP_NUM = 4 +IBV_WC_EX_WITH_SRC_QP = 8 +IBV_WC_EX_WITH_SLID = 16 +IBV_WC_EX_WITH_SL = 32 +IBV_WC_EX_WITH_DLID_PATH_BITS = 64 +IBV_WC_EX_WITH_COMPLETION_TIMESTAMP = 128 +IBV_WC_EX_WITH_CVLAN = 256 +IBV_WC_EX_WITH_FLOW_TAG = 512 +IBV_WC_EX_WITH_TM_INFO = 1024 +IBV_WC_EX_WITH_COMPLETION_TIMESTAMP_WALLCLOCK = 2048 +ibv_create_cq_wc_flags = ctypes.c_uint32 # enum + +# values for enumeration 'c__Ea_IBV_WC_STANDARD_FLAGS' +c__Ea_IBV_WC_STANDARD_FLAGS__enumvalues = { + 127: 'IBV_WC_STANDARD_FLAGS', +} +IBV_WC_STANDARD_FLAGS = 127 +c__Ea_IBV_WC_STANDARD_FLAGS = ctypes.c_uint32 # enum + +# values for enumeration 'c__Ea_IBV_CREATE_CQ_SUP_WC_FLAGS' +c__Ea_IBV_CREATE_CQ_SUP_WC_FLAGS__enumvalues = { + 4095: 'IBV_CREATE_CQ_SUP_WC_FLAGS', +} +IBV_CREATE_CQ_SUP_WC_FLAGS = 4095 +c__Ea_IBV_CREATE_CQ_SUP_WC_FLAGS = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_wc_flags' +ibv_wc_flags__enumvalues = { + 1: 'IBV_WC_GRH', + 2: 'IBV_WC_WITH_IMM', + 4: 'IBV_WC_IP_CSUM_OK', + 8: 'IBV_WC_WITH_INV', + 16: 'IBV_WC_TM_SYNC_REQ', + 32: 'IBV_WC_TM_MATCH', + 64: 'IBV_WC_TM_DATA_VALID', +} +IBV_WC_GRH = 1 +IBV_WC_WITH_IMM = 2 +IBV_WC_IP_CSUM_OK = 4 +IBV_WC_WITH_INV = 8 +IBV_WC_TM_SYNC_REQ = 16 +IBV_WC_TM_MATCH = 32 +IBV_WC_TM_DATA_VALID = 64 +ibv_wc_flags = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_access_flags' +ibv_access_flags__enumvalues = { + 1: 'IBV_ACCESS_LOCAL_WRITE', + 2: 'IBV_ACCESS_REMOTE_WRITE', + 4: 'IBV_ACCESS_REMOTE_READ', + 8: 'IBV_ACCESS_REMOTE_ATOMIC', + 16: 'IBV_ACCESS_MW_BIND', + 32: 'IBV_ACCESS_ZERO_BASED', + 64: 'IBV_ACCESS_ON_DEMAND', + 128: 'IBV_ACCESS_HUGETLB', + 256: 'IBV_ACCESS_FLUSH_GLOBAL', + 512: 'IBV_ACCESS_FLUSH_PERSISTENT', + 1048576: 'IBV_ACCESS_RELAXED_ORDERING', +} +IBV_ACCESS_LOCAL_WRITE = 1 +IBV_ACCESS_REMOTE_WRITE = 2 +IBV_ACCESS_REMOTE_READ = 4 +IBV_ACCESS_REMOTE_ATOMIC = 8 +IBV_ACCESS_MW_BIND = 16 +IBV_ACCESS_ZERO_BASED = 32 +IBV_ACCESS_ON_DEMAND = 64 +IBV_ACCESS_HUGETLB = 128 +IBV_ACCESS_FLUSH_GLOBAL = 256 +IBV_ACCESS_FLUSH_PERSISTENT = 512 +IBV_ACCESS_RELAXED_ORDERING = 1048576 +ibv_access_flags = ctypes.c_uint32 # enum +class struct_ibv_td_init_attr(Structure): + pass + +struct_ibv_td_init_attr._pack_ = 1 # source:False +struct_ibv_td_init_attr._fields_ = [ + ('comp_mask', ctypes.c_uint32), +] + +class struct_ibv_td(Structure): + pass + +struct_ibv_td._pack_ = 1 # source:False +struct_ibv_td._fields_ = [ + ('context', ctypes.POINTER(struct_ibv_context)), +] + + +# values for enumeration 'ibv_xrcd_init_attr_mask' +ibv_xrcd_init_attr_mask__enumvalues = { + 1: 'IBV_XRCD_INIT_ATTR_FD', + 2: 'IBV_XRCD_INIT_ATTR_OFLAGS', + 4: 'IBV_XRCD_INIT_ATTR_RESERVED', +} +IBV_XRCD_INIT_ATTR_FD = 1 +IBV_XRCD_INIT_ATTR_OFLAGS = 2 +IBV_XRCD_INIT_ATTR_RESERVED = 4 +ibv_xrcd_init_attr_mask = ctypes.c_uint32 # enum +class struct_ibv_xrcd_init_attr(Structure): + pass + +struct_ibv_xrcd_init_attr._pack_ = 1 # source:False +struct_ibv_xrcd_init_attr._fields_ = [ + ('comp_mask', ctypes.c_uint32), + ('fd', ctypes.c_int32), + ('oflags', ctypes.c_int32), +] + +class struct_ibv_xrcd(Structure): + pass + +struct_ibv_xrcd._pack_ = 1 # source:False +struct_ibv_xrcd._fields_ = [ + ('context', ctypes.POINTER(struct_ibv_context)), +] + + +# values for enumeration 'ibv_rereg_mr_flags' +ibv_rereg_mr_flags__enumvalues = { + 1: 'IBV_REREG_MR_CHANGE_TRANSLATION', + 2: 'IBV_REREG_MR_CHANGE_PD', + 4: 'IBV_REREG_MR_CHANGE_ACCESS', + 7: 'IBV_REREG_MR_FLAGS_SUPPORTED', +} +IBV_REREG_MR_CHANGE_TRANSLATION = 1 +IBV_REREG_MR_CHANGE_PD = 2 +IBV_REREG_MR_CHANGE_ACCESS = 4 +IBV_REREG_MR_FLAGS_SUPPORTED = 7 +ibv_rereg_mr_flags = ctypes.c_uint32 # enum +class struct_ibv_global_route(Structure): + pass + +struct_ibv_global_route._pack_ = 1 # source:False +struct_ibv_global_route._fields_ = [ + ('dgid', union_ibv_gid), + ('flow_label', ctypes.c_uint32), + ('sgid_index', ctypes.c_ubyte), + ('hop_limit', ctypes.c_ubyte), + ('traffic_class', ctypes.c_ubyte), + ('PADDING_0', ctypes.c_ubyte), +] + +class struct_ibv_grh(Structure): + pass + +struct_ibv_grh._pack_ = 1 # source:False +struct_ibv_grh._fields_ = [ + ('version_tclass_flow', ctypes.c_uint32), + ('paylen', ctypes.c_uint16), + ('next_hdr', ctypes.c_ubyte), + ('hop_limit', ctypes.c_ubyte), + ('sgid', union_ibv_gid), + ('dgid', union_ibv_gid), +] + + +# values for enumeration 'ibv_rate' +ibv_rate__enumvalues = { + 0: 'IBV_RATE_MAX', + 2: 'IBV_RATE_2_5_GBPS', + 5: 'IBV_RATE_5_GBPS', + 3: 'IBV_RATE_10_GBPS', + 6: 'IBV_RATE_20_GBPS', + 4: 'IBV_RATE_30_GBPS', + 7: 'IBV_RATE_40_GBPS', + 8: 'IBV_RATE_60_GBPS', + 9: 'IBV_RATE_80_GBPS', + 10: 'IBV_RATE_120_GBPS', + 11: 'IBV_RATE_14_GBPS', + 12: 'IBV_RATE_56_GBPS', + 13: 'IBV_RATE_112_GBPS', + 14: 'IBV_RATE_168_GBPS', + 15: 'IBV_RATE_25_GBPS', + 16: 'IBV_RATE_100_GBPS', + 17: 'IBV_RATE_200_GBPS', + 18: 'IBV_RATE_300_GBPS', + 19: 'IBV_RATE_28_GBPS', + 20: 'IBV_RATE_50_GBPS', + 21: 'IBV_RATE_400_GBPS', + 22: 'IBV_RATE_600_GBPS', + 23: 'IBV_RATE_800_GBPS', + 24: 'IBV_RATE_1200_GBPS', +} +IBV_RATE_MAX = 0 +IBV_RATE_2_5_GBPS = 2 +IBV_RATE_5_GBPS = 5 +IBV_RATE_10_GBPS = 3 +IBV_RATE_20_GBPS = 6 +IBV_RATE_30_GBPS = 4 +IBV_RATE_40_GBPS = 7 +IBV_RATE_60_GBPS = 8 +IBV_RATE_80_GBPS = 9 +IBV_RATE_120_GBPS = 10 +IBV_RATE_14_GBPS = 11 +IBV_RATE_56_GBPS = 12 +IBV_RATE_112_GBPS = 13 +IBV_RATE_168_GBPS = 14 +IBV_RATE_25_GBPS = 15 +IBV_RATE_100_GBPS = 16 +IBV_RATE_200_GBPS = 17 +IBV_RATE_300_GBPS = 18 +IBV_RATE_28_GBPS = 19 +IBV_RATE_50_GBPS = 20 +IBV_RATE_400_GBPS = 21 +IBV_RATE_600_GBPS = 22 +IBV_RATE_800_GBPS = 23 +IBV_RATE_1200_GBPS = 24 +ibv_rate = ctypes.c_uint32 # enum +try: + ibv_rate_to_mult = _libraries['libibverbs'].ibv_rate_to_mult + ibv_rate_to_mult.restype = ctypes.c_int32 + ibv_rate_to_mult.argtypes = [ibv_rate] +except AttributeError: + pass +try: + mult_to_ibv_rate = _libraries['libibverbs'].mult_to_ibv_rate + mult_to_ibv_rate.restype = ibv_rate + mult_to_ibv_rate.argtypes = [ctypes.c_int32] +except AttributeError: + pass +try: + ibv_rate_to_mbps = _libraries['libibverbs'].ibv_rate_to_mbps + ibv_rate_to_mbps.restype = ctypes.c_int32 + ibv_rate_to_mbps.argtypes = [ibv_rate] +except AttributeError: + pass +try: + mbps_to_ibv_rate = _libraries['libibverbs'].mbps_to_ibv_rate + mbps_to_ibv_rate.restype = ibv_rate + mbps_to_ibv_rate.argtypes = [ctypes.c_int32] +except AttributeError: + pass +class struct_ibv_ah_attr(Structure): + pass + +struct_ibv_ah_attr._pack_ = 1 # source:False +struct_ibv_ah_attr._fields_ = [ + ('grh', struct_ibv_global_route), + ('dlid', ctypes.c_uint16), + ('sl', ctypes.c_ubyte), + ('src_path_bits', ctypes.c_ubyte), + ('static_rate', ctypes.c_ubyte), + ('is_global', ctypes.c_ubyte), + ('port_num', ctypes.c_ubyte), + ('PADDING_0', ctypes.c_ubyte), +] + + +# values for enumeration 'ibv_srq_attr_mask' +ibv_srq_attr_mask__enumvalues = { + 1: 'IBV_SRQ_MAX_WR', + 2: 'IBV_SRQ_LIMIT', +} +IBV_SRQ_MAX_WR = 1 +IBV_SRQ_LIMIT = 2 +ibv_srq_attr_mask = ctypes.c_uint32 # enum +class struct_ibv_srq_attr(Structure): + pass + +struct_ibv_srq_attr._pack_ = 1 # source:False +struct_ibv_srq_attr._fields_ = [ + ('max_wr', ctypes.c_uint32), + ('max_sge', ctypes.c_uint32), + ('srq_limit', ctypes.c_uint32), +] + +class struct_ibv_srq_init_attr(Structure): + pass + +struct_ibv_srq_init_attr._pack_ = 1 # source:False +struct_ibv_srq_init_attr._fields_ = [ + ('srq_context', ctypes.POINTER(None)), + ('attr', struct_ibv_srq_attr), + ('PADDING_0', ctypes.c_ubyte * 4), +] + + +# values for enumeration 'ibv_srq_type' +ibv_srq_type__enumvalues = { + 0: 'IBV_SRQT_BASIC', + 1: 'IBV_SRQT_XRC', + 2: 'IBV_SRQT_TM', +} +IBV_SRQT_BASIC = 0 +IBV_SRQT_XRC = 1 +IBV_SRQT_TM = 2 +ibv_srq_type = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_srq_init_attr_mask' +ibv_srq_init_attr_mask__enumvalues = { + 1: 'IBV_SRQ_INIT_ATTR_TYPE', + 2: 'IBV_SRQ_INIT_ATTR_PD', + 4: 'IBV_SRQ_INIT_ATTR_XRCD', + 8: 'IBV_SRQ_INIT_ATTR_CQ', + 16: 'IBV_SRQ_INIT_ATTR_TM', + 32: 'IBV_SRQ_INIT_ATTR_RESERVED', +} +IBV_SRQ_INIT_ATTR_TYPE = 1 +IBV_SRQ_INIT_ATTR_PD = 2 +IBV_SRQ_INIT_ATTR_XRCD = 4 +IBV_SRQ_INIT_ATTR_CQ = 8 +IBV_SRQ_INIT_ATTR_TM = 16 +IBV_SRQ_INIT_ATTR_RESERVED = 32 +ibv_srq_init_attr_mask = ctypes.c_uint32 # enum +class struct_ibv_tm_cap(Structure): + pass + +struct_ibv_tm_cap._pack_ = 1 # source:False +struct_ibv_tm_cap._fields_ = [ + ('max_num_tags', ctypes.c_uint32), + ('max_ops', ctypes.c_uint32), +] + +class struct_ibv_srq_init_attr_ex(Structure): + pass + +struct_ibv_srq_init_attr_ex._pack_ = 1 # source:False +struct_ibv_srq_init_attr_ex._fields_ = [ + ('srq_context', ctypes.POINTER(None)), + ('attr', struct_ibv_srq_attr), + ('comp_mask', ctypes.c_uint32), + ('srq_type', ibv_srq_type), + ('PADDING_0', ctypes.c_ubyte * 4), + ('pd', ctypes.POINTER(struct_ibv_pd)), + ('xrcd', ctypes.POINTER(struct_ibv_xrcd)), + ('cq', ctypes.POINTER(struct_ibv_cq)), + ('tm_cap', struct_ibv_tm_cap), +] + + +# values for enumeration 'ibv_wq_init_attr_mask' +ibv_wq_init_attr_mask__enumvalues = { + 1: 'IBV_WQ_INIT_ATTR_FLAGS', + 2: 'IBV_WQ_INIT_ATTR_RESERVED', +} +IBV_WQ_INIT_ATTR_FLAGS = 1 +IBV_WQ_INIT_ATTR_RESERVED = 2 +ibv_wq_init_attr_mask = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_wq_flags' +ibv_wq_flags__enumvalues = { + 1: 'IBV_WQ_FLAGS_CVLAN_STRIPPING', + 2: 'IBV_WQ_FLAGS_SCATTER_FCS', + 4: 'IBV_WQ_FLAGS_DELAY_DROP', + 8: 'IBV_WQ_FLAGS_PCI_WRITE_END_PADDING', + 16: 'IBV_WQ_FLAGS_RESERVED', +} +IBV_WQ_FLAGS_CVLAN_STRIPPING = 1 +IBV_WQ_FLAGS_SCATTER_FCS = 2 +IBV_WQ_FLAGS_DELAY_DROP = 4 +IBV_WQ_FLAGS_PCI_WRITE_END_PADDING = 8 +IBV_WQ_FLAGS_RESERVED = 16 +ibv_wq_flags = ctypes.c_uint32 # enum +class struct_ibv_wq_init_attr(Structure): + pass + +struct_ibv_wq_init_attr._pack_ = 1 # source:False +struct_ibv_wq_init_attr._fields_ = [ + ('wq_context', ctypes.POINTER(None)), + ('wq_type', ibv_wq_type), + ('max_wr', ctypes.c_uint32), + ('max_sge', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), + ('pd', ctypes.POINTER(struct_ibv_pd)), + ('cq', ctypes.POINTER(struct_ibv_cq)), + ('comp_mask', ctypes.c_uint32), + ('create_flags', ctypes.c_uint32), +] + + +# values for enumeration 'ibv_wq_attr_mask' +ibv_wq_attr_mask__enumvalues = { + 1: 'IBV_WQ_ATTR_STATE', + 2: 'IBV_WQ_ATTR_CURR_STATE', + 4: 'IBV_WQ_ATTR_FLAGS', + 8: 'IBV_WQ_ATTR_RESERVED', +} +IBV_WQ_ATTR_STATE = 1 +IBV_WQ_ATTR_CURR_STATE = 2 +IBV_WQ_ATTR_FLAGS = 4 +IBV_WQ_ATTR_RESERVED = 8 +ibv_wq_attr_mask = ctypes.c_uint32 # enum +class struct_ibv_wq_attr(Structure): + pass + +struct_ibv_wq_attr._pack_ = 1 # source:False +struct_ibv_wq_attr._fields_ = [ + ('attr_mask', ctypes.c_uint32), + ('wq_state', ibv_wq_state), + ('curr_wq_state', ibv_wq_state), + ('flags', ctypes.c_uint32), + ('flags_mask', ctypes.c_uint32), +] + +class struct_ibv_rwq_ind_table(Structure): + pass + +struct_ibv_rwq_ind_table._pack_ = 1 # source:False +struct_ibv_rwq_ind_table._fields_ = [ + ('context', ctypes.POINTER(struct_ibv_context)), + ('ind_tbl_handle', ctypes.c_int32), + ('ind_tbl_num', ctypes.c_int32), + ('comp_mask', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), +] + + +# values for enumeration 'ibv_ind_table_init_attr_mask' +ibv_ind_table_init_attr_mask__enumvalues = { + 1: 'IBV_CREATE_IND_TABLE_RESERVED', +} +IBV_CREATE_IND_TABLE_RESERVED = 1 +ibv_ind_table_init_attr_mask = ctypes.c_uint32 # enum +class struct_ibv_rwq_ind_table_init_attr(Structure): + pass + +struct_ibv_rwq_ind_table_init_attr._pack_ = 1 # source:False +struct_ibv_rwq_ind_table_init_attr._fields_ = [ + ('log_ind_tbl_size', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), + ('ind_tbl', ctypes.POINTER(ctypes.POINTER(struct_ibv_wq))), + ('comp_mask', ctypes.c_uint32), + ('PADDING_1', ctypes.c_ubyte * 4), +] + +class struct_ibv_qp_cap(Structure): + pass + +struct_ibv_qp_cap._pack_ = 1 # source:False +struct_ibv_qp_cap._fields_ = [ + ('max_send_wr', ctypes.c_uint32), + ('max_recv_wr', ctypes.c_uint32), + ('max_send_sge', ctypes.c_uint32), + ('max_recv_sge', ctypes.c_uint32), + ('max_inline_data', ctypes.c_uint32), +] + +class struct_ibv_qp_init_attr(Structure): + pass + +struct_ibv_qp_init_attr._pack_ = 1 # source:False +struct_ibv_qp_init_attr._fields_ = [ + ('qp_context', ctypes.POINTER(None)), + ('send_cq', ctypes.POINTER(struct_ibv_cq)), + ('recv_cq', ctypes.POINTER(struct_ibv_cq)), + ('srq', ctypes.POINTER(struct_ibv_srq)), + ('cap', struct_ibv_qp_cap), + ('qp_type', ibv_qp_type), + ('sq_sig_all', ctypes.c_int32), + ('PADDING_0', ctypes.c_ubyte * 4), +] + + +# values for enumeration 'ibv_qp_init_attr_mask' +ibv_qp_init_attr_mask__enumvalues = { + 1: 'IBV_QP_INIT_ATTR_PD', + 2: 'IBV_QP_INIT_ATTR_XRCD', + 4: 'IBV_QP_INIT_ATTR_CREATE_FLAGS', + 8: 'IBV_QP_INIT_ATTR_MAX_TSO_HEADER', + 16: 'IBV_QP_INIT_ATTR_IND_TABLE', + 32: 'IBV_QP_INIT_ATTR_RX_HASH', + 64: 'IBV_QP_INIT_ATTR_SEND_OPS_FLAGS', +} +IBV_QP_INIT_ATTR_PD = 1 +IBV_QP_INIT_ATTR_XRCD = 2 +IBV_QP_INIT_ATTR_CREATE_FLAGS = 4 +IBV_QP_INIT_ATTR_MAX_TSO_HEADER = 8 +IBV_QP_INIT_ATTR_IND_TABLE = 16 +IBV_QP_INIT_ATTR_RX_HASH = 32 +IBV_QP_INIT_ATTR_SEND_OPS_FLAGS = 64 +ibv_qp_init_attr_mask = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_qp_create_flags' +ibv_qp_create_flags__enumvalues = { + 2: 'IBV_QP_CREATE_BLOCK_SELF_MCAST_LB', + 256: 'IBV_QP_CREATE_SCATTER_FCS', + 512: 'IBV_QP_CREATE_CVLAN_STRIPPING', + 1024: 'IBV_QP_CREATE_SOURCE_QPN', + 2048: 'IBV_QP_CREATE_PCI_WRITE_END_PADDING', +} +IBV_QP_CREATE_BLOCK_SELF_MCAST_LB = 2 +IBV_QP_CREATE_SCATTER_FCS = 256 +IBV_QP_CREATE_CVLAN_STRIPPING = 512 +IBV_QP_CREATE_SOURCE_QPN = 1024 +IBV_QP_CREATE_PCI_WRITE_END_PADDING = 2048 +ibv_qp_create_flags = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_qp_create_send_ops_flags' +ibv_qp_create_send_ops_flags__enumvalues = { + 1: 'IBV_QP_EX_WITH_RDMA_WRITE', + 2: 'IBV_QP_EX_WITH_RDMA_WRITE_WITH_IMM', + 4: 'IBV_QP_EX_WITH_SEND', + 8: 'IBV_QP_EX_WITH_SEND_WITH_IMM', + 16: 'IBV_QP_EX_WITH_RDMA_READ', + 32: 'IBV_QP_EX_WITH_ATOMIC_CMP_AND_SWP', + 64: 'IBV_QP_EX_WITH_ATOMIC_FETCH_AND_ADD', + 128: 'IBV_QP_EX_WITH_LOCAL_INV', + 256: 'IBV_QP_EX_WITH_BIND_MW', + 512: 'IBV_QP_EX_WITH_SEND_WITH_INV', + 1024: 'IBV_QP_EX_WITH_TSO', + 2048: 'IBV_QP_EX_WITH_FLUSH', + 4096: 'IBV_QP_EX_WITH_ATOMIC_WRITE', +} +IBV_QP_EX_WITH_RDMA_WRITE = 1 +IBV_QP_EX_WITH_RDMA_WRITE_WITH_IMM = 2 +IBV_QP_EX_WITH_SEND = 4 +IBV_QP_EX_WITH_SEND_WITH_IMM = 8 +IBV_QP_EX_WITH_RDMA_READ = 16 +IBV_QP_EX_WITH_ATOMIC_CMP_AND_SWP = 32 +IBV_QP_EX_WITH_ATOMIC_FETCH_AND_ADD = 64 +IBV_QP_EX_WITH_LOCAL_INV = 128 +IBV_QP_EX_WITH_BIND_MW = 256 +IBV_QP_EX_WITH_SEND_WITH_INV = 512 +IBV_QP_EX_WITH_TSO = 1024 +IBV_QP_EX_WITH_FLUSH = 2048 +IBV_QP_EX_WITH_ATOMIC_WRITE = 4096 +ibv_qp_create_send_ops_flags = ctypes.c_uint32 # enum +class struct_ibv_rx_hash_conf(Structure): + pass + +struct_ibv_rx_hash_conf._pack_ = 1 # source:False +struct_ibv_rx_hash_conf._fields_ = [ + ('rx_hash_function', ctypes.c_ubyte), + ('rx_hash_key_len', ctypes.c_ubyte), + ('PADDING_0', ctypes.c_ubyte * 6), + ('rx_hash_key', ctypes.POINTER(ctypes.c_ubyte)), + ('rx_hash_fields_mask', ctypes.c_uint64), +] + +class struct_ibv_qp_init_attr_ex(Structure): + pass + +struct_ibv_qp_init_attr_ex._pack_ = 1 # source:False +struct_ibv_qp_init_attr_ex._fields_ = [ + ('qp_context', ctypes.POINTER(None)), + ('send_cq', ctypes.POINTER(struct_ibv_cq)), + ('recv_cq', ctypes.POINTER(struct_ibv_cq)), + ('srq', ctypes.POINTER(struct_ibv_srq)), + ('cap', struct_ibv_qp_cap), + ('qp_type', ibv_qp_type), + ('sq_sig_all', ctypes.c_int32), + ('comp_mask', ctypes.c_uint32), + ('pd', ctypes.POINTER(struct_ibv_pd)), + ('xrcd', ctypes.POINTER(struct_ibv_xrcd)), + ('create_flags', ctypes.c_uint32), + ('max_tso_header', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 2), + ('rwq_ind_tbl', ctypes.POINTER(struct_ibv_rwq_ind_table)), + ('rx_hash_conf', struct_ibv_rx_hash_conf), + ('source_qpn', ctypes.c_uint32), + ('PADDING_1', ctypes.c_ubyte * 4), + ('send_ops_flags', ctypes.c_uint64), +] + + +# values for enumeration 'ibv_qp_open_attr_mask' +ibv_qp_open_attr_mask__enumvalues = { + 1: 'IBV_QP_OPEN_ATTR_NUM', + 2: 'IBV_QP_OPEN_ATTR_XRCD', + 4: 'IBV_QP_OPEN_ATTR_CONTEXT', + 8: 'IBV_QP_OPEN_ATTR_TYPE', + 16: 'IBV_QP_OPEN_ATTR_RESERVED', +} +IBV_QP_OPEN_ATTR_NUM = 1 +IBV_QP_OPEN_ATTR_XRCD = 2 +IBV_QP_OPEN_ATTR_CONTEXT = 4 +IBV_QP_OPEN_ATTR_TYPE = 8 +IBV_QP_OPEN_ATTR_RESERVED = 16 +ibv_qp_open_attr_mask = ctypes.c_uint32 # enum +class struct_ibv_qp_open_attr(Structure): + pass + +struct_ibv_qp_open_attr._pack_ = 1 # source:False +struct_ibv_qp_open_attr._fields_ = [ + ('comp_mask', ctypes.c_uint32), + ('qp_num', ctypes.c_uint32), + ('xrcd', ctypes.POINTER(struct_ibv_xrcd)), + ('qp_context', ctypes.POINTER(None)), + ('qp_type', ibv_qp_type), + ('PADDING_0', ctypes.c_ubyte * 4), +] + + +# values for enumeration 'ibv_qp_attr_mask' +ibv_qp_attr_mask__enumvalues = { + 1: 'IBV_QP_STATE', + 2: 'IBV_QP_CUR_STATE', + 4: 'IBV_QP_EN_SQD_ASYNC_NOTIFY', + 8: 'IBV_QP_ACCESS_FLAGS', + 16: 'IBV_QP_PKEY_INDEX', + 32: 'IBV_QP_PORT', + 64: 'IBV_QP_QKEY', + 128: 'IBV_QP_AV', + 256: 'IBV_QP_PATH_MTU', + 512: 'IBV_QP_TIMEOUT', + 1024: 'IBV_QP_RETRY_CNT', + 2048: 'IBV_QP_RNR_RETRY', + 4096: 'IBV_QP_RQ_PSN', + 8192: 'IBV_QP_MAX_QP_RD_ATOMIC', + 16384: 'IBV_QP_ALT_PATH', + 32768: 'IBV_QP_MIN_RNR_TIMER', + 65536: 'IBV_QP_SQ_PSN', + 131072: 'IBV_QP_MAX_DEST_RD_ATOMIC', + 262144: 'IBV_QP_PATH_MIG_STATE', + 524288: 'IBV_QP_CAP', + 1048576: 'IBV_QP_DEST_QPN', + 33554432: 'IBV_QP_RATE_LIMIT', +} +IBV_QP_STATE = 1 +IBV_QP_CUR_STATE = 2 +IBV_QP_EN_SQD_ASYNC_NOTIFY = 4 +IBV_QP_ACCESS_FLAGS = 8 +IBV_QP_PKEY_INDEX = 16 +IBV_QP_PORT = 32 +IBV_QP_QKEY = 64 +IBV_QP_AV = 128 +IBV_QP_PATH_MTU = 256 +IBV_QP_TIMEOUT = 512 +IBV_QP_RETRY_CNT = 1024 +IBV_QP_RNR_RETRY = 2048 +IBV_QP_RQ_PSN = 4096 +IBV_QP_MAX_QP_RD_ATOMIC = 8192 +IBV_QP_ALT_PATH = 16384 +IBV_QP_MIN_RNR_TIMER = 32768 +IBV_QP_SQ_PSN = 65536 +IBV_QP_MAX_DEST_RD_ATOMIC = 131072 +IBV_QP_PATH_MIG_STATE = 262144 +IBV_QP_CAP = 524288 +IBV_QP_DEST_QPN = 1048576 +IBV_QP_RATE_LIMIT = 33554432 +ibv_qp_attr_mask = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_query_qp_data_in_order_flags' +ibv_query_qp_data_in_order_flags__enumvalues = { + 1: 'IBV_QUERY_QP_DATA_IN_ORDER_RETURN_CAPS', +} +IBV_QUERY_QP_DATA_IN_ORDER_RETURN_CAPS = 1 +ibv_query_qp_data_in_order_flags = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_query_qp_data_in_order_caps' +ibv_query_qp_data_in_order_caps__enumvalues = { + 1: 'IBV_QUERY_QP_DATA_IN_ORDER_WHOLE_MSG', + 2: 'IBV_QUERY_QP_DATA_IN_ORDER_ALIGNED_128_BYTES', +} +IBV_QUERY_QP_DATA_IN_ORDER_WHOLE_MSG = 1 +IBV_QUERY_QP_DATA_IN_ORDER_ALIGNED_128_BYTES = 2 +ibv_query_qp_data_in_order_caps = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_mig_state' +ibv_mig_state__enumvalues = { + 0: 'IBV_MIG_MIGRATED', + 1: 'IBV_MIG_REARM', + 2: 'IBV_MIG_ARMED', +} +IBV_MIG_MIGRATED = 0 +IBV_MIG_REARM = 1 +IBV_MIG_ARMED = 2 +ibv_mig_state = ctypes.c_uint32 # enum +class struct_ibv_qp_attr(Structure): + pass + +struct_ibv_qp_attr._pack_ = 1 # source:False +struct_ibv_qp_attr._fields_ = [ + ('qp_state', ibv_qp_state), + ('cur_qp_state', ibv_qp_state), + ('path_mtu', ibv_mtu), + ('path_mig_state', ibv_mig_state), + ('qkey', ctypes.c_uint32), + ('rq_psn', ctypes.c_uint32), + ('sq_psn', ctypes.c_uint32), + ('dest_qp_num', ctypes.c_uint32), + ('qp_access_flags', ctypes.c_uint32), + ('cap', struct_ibv_qp_cap), + ('ah_attr', struct_ibv_ah_attr), + ('alt_ah_attr', struct_ibv_ah_attr), + ('pkey_index', ctypes.c_uint16), + ('alt_pkey_index', ctypes.c_uint16), + ('en_sqd_async_notify', ctypes.c_ubyte), + ('sq_draining', ctypes.c_ubyte), + ('max_rd_atomic', ctypes.c_ubyte), + ('max_dest_rd_atomic', ctypes.c_ubyte), + ('min_rnr_timer', ctypes.c_ubyte), + ('port_num', ctypes.c_ubyte), + ('timeout', ctypes.c_ubyte), + ('retry_cnt', ctypes.c_ubyte), + ('rnr_retry', ctypes.c_ubyte), + ('alt_port_num', ctypes.c_ubyte), + ('alt_timeout', ctypes.c_ubyte), + ('PADDING_0', ctypes.c_ubyte), + ('rate_limit', ctypes.c_uint32), + ('PADDING_1', ctypes.c_ubyte * 4), +] + +class struct_ibv_qp_rate_limit_attr(Structure): + pass + +struct_ibv_qp_rate_limit_attr._pack_ = 1 # source:False +struct_ibv_qp_rate_limit_attr._fields_ = [ + ('rate_limit', ctypes.c_uint32), + ('max_burst_sz', ctypes.c_uint32), + ('typical_pkt_sz', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 2), + ('comp_mask', ctypes.c_uint32), +] + +try: + ibv_wr_opcode_str = _libraries['libibverbs'].ibv_wr_opcode_str + ibv_wr_opcode_str.restype = ctypes.POINTER(ctypes.c_char) + ibv_wr_opcode_str.argtypes = [ibv_wr_opcode] +except AttributeError: + pass + +# values for enumeration 'ibv_send_flags' +ibv_send_flags__enumvalues = { + 1: 'IBV_SEND_FENCE', + 2: 'IBV_SEND_SIGNALED', + 4: 'IBV_SEND_SOLICITED', + 8: 'IBV_SEND_INLINE', + 16: 'IBV_SEND_IP_CSUM', +} +IBV_SEND_FENCE = 1 +IBV_SEND_SIGNALED = 2 +IBV_SEND_SOLICITED = 4 +IBV_SEND_INLINE = 8 +IBV_SEND_IP_CSUM = 16 +ibv_send_flags = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_placement_type' +ibv_placement_type__enumvalues = { + 1: 'IBV_FLUSH_GLOBAL', + 2: 'IBV_FLUSH_PERSISTENT', +} +IBV_FLUSH_GLOBAL = 1 +IBV_FLUSH_PERSISTENT = 2 +ibv_placement_type = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_selectivity_level' +ibv_selectivity_level__enumvalues = { + 0: 'IBV_FLUSH_RANGE', + 1: 'IBV_FLUSH_MR', +} +IBV_FLUSH_RANGE = 0 +IBV_FLUSH_MR = 1 +ibv_selectivity_level = ctypes.c_uint32 # enum +class struct_ibv_data_buf(Structure): + pass + +struct_ibv_data_buf._pack_ = 1 # source:False +struct_ibv_data_buf._fields_ = [ + ('addr', ctypes.POINTER(None)), + ('length', ctypes.c_uint64), +] + + +# values for enumeration 'ibv_ops_wr_opcode' +ibv_ops_wr_opcode__enumvalues = { + 0: 'IBV_WR_TAG_ADD', + 1: 'IBV_WR_TAG_DEL', + 2: 'IBV_WR_TAG_SYNC', +} +IBV_WR_TAG_ADD = 0 +IBV_WR_TAG_DEL = 1 +IBV_WR_TAG_SYNC = 2 +ibv_ops_wr_opcode = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_ops_flags' +ibv_ops_flags__enumvalues = { + 1: 'IBV_OPS_SIGNALED', + 2: 'IBV_OPS_TM_SYNC', +} +IBV_OPS_SIGNALED = 1 +IBV_OPS_TM_SYNC = 2 +ibv_ops_flags = ctypes.c_uint32 # enum +class struct_ibv_ops_wr(Structure): + pass + +class struct_ibv_ops_wr_tm(Structure): + pass + +class struct_ibv_ops_wr_0_add(Structure): + pass + +struct_ibv_ops_wr_0_add._pack_ = 1 # source:False +struct_ibv_ops_wr_0_add._fields_ = [ + ('recv_wr_id', ctypes.c_uint64), + ('sg_list', ctypes.POINTER(struct_ibv_sge)), + ('num_sge', ctypes.c_int32), + ('PADDING_0', ctypes.c_ubyte * 4), + ('tag', ctypes.c_uint64), + ('mask', ctypes.c_uint64), +] + +struct_ibv_ops_wr_tm._pack_ = 1 # source:False +struct_ibv_ops_wr_tm._fields_ = [ + ('unexpected_cnt', ctypes.c_uint32), + ('handle', ctypes.c_uint32), + ('add', struct_ibv_ops_wr_0_add), +] + +struct_ibv_ops_wr._pack_ = 1 # source:False +struct_ibv_ops_wr._fields_ = [ + ('wr_id', ctypes.c_uint64), + ('next', ctypes.POINTER(struct_ibv_ops_wr)), + ('opcode', ibv_ops_wr_opcode), + ('flags', ctypes.c_int32), + ('tm', struct_ibv_ops_wr_tm), +] + +class struct_ibv_qp_ex(Structure): + pass + +struct_ibv_qp_ex._pack_ = 1 # source:False +struct_ibv_qp_ex._fields_ = [ + ('qp_base', struct_ibv_qp), + ('comp_mask', ctypes.c_uint64), + ('wr_id', ctypes.c_uint64), + ('wr_flags', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), + ('wr_atomic_cmp_swp', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex), ctypes.c_uint32, ctypes.c_uint64, ctypes.c_uint64, ctypes.c_uint64)), + ('wr_atomic_fetch_add', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex), ctypes.c_uint32, ctypes.c_uint64, ctypes.c_uint64)), + ('wr_bind_mw', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex), ctypes.POINTER(struct_ibv_mw), ctypes.c_uint32, ctypes.POINTER(struct_ibv_mw_bind_info))), + ('wr_local_inv', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex), ctypes.c_uint32)), + ('wr_rdma_read', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex), ctypes.c_uint32, ctypes.c_uint64)), + ('wr_rdma_write', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex), ctypes.c_uint32, ctypes.c_uint64)), + ('wr_rdma_write_imm', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex), ctypes.c_uint32, ctypes.c_uint64, ctypes.c_uint32)), + ('wr_send', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex))), + ('wr_send_imm', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex), ctypes.c_uint32)), + ('wr_send_inv', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex), ctypes.c_uint32)), + ('wr_send_tso', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex), ctypes.POINTER(None), ctypes.c_uint16, ctypes.c_uint16)), + ('wr_set_ud_addr', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex), ctypes.POINTER(struct_ibv_ah), ctypes.c_uint32, ctypes.c_uint32)), + ('wr_set_xrc_srqn', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex), ctypes.c_uint32)), + ('wr_set_inline_data', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex), ctypes.POINTER(None), ctypes.c_uint64)), + ('wr_set_inline_data_list', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex), ctypes.c_uint64, ctypes.POINTER(struct_ibv_data_buf))), + ('wr_set_sge', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex), ctypes.c_uint32, ctypes.c_uint64, ctypes.c_uint32)), + ('wr_set_sge_list', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex), ctypes.c_uint64, ctypes.POINTER(struct_ibv_sge))), + ('wr_start', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex))), + ('wr_complete', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_qp_ex))), + ('wr_abort', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex))), + ('wr_atomic_write', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex), ctypes.c_uint32, ctypes.c_uint64, ctypes.POINTER(None))), + ('wr_flush', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_qp_ex), ctypes.c_uint32, ctypes.c_uint64, ctypes.c_uint64, ctypes.c_ubyte, ctypes.c_ubyte)), +] + +try: + ibv_qp_to_qp_ex = _libraries['libibverbs'].ibv_qp_to_qp_ex + ibv_qp_to_qp_ex.restype = ctypes.POINTER(struct_ibv_qp_ex) + ibv_qp_to_qp_ex.argtypes = [ctypes.POINTER(struct_ibv_qp)] +except AttributeError: + pass +uint32_t = ctypes.c_uint32 +uint64_t = ctypes.c_uint64 +try: + ibv_wr_atomic_cmp_swp = _libraries['libibverbs'].ibv_wr_atomic_cmp_swp + ibv_wr_atomic_cmp_swp.restype = None + ibv_wr_atomic_cmp_swp.argtypes = [ctypes.POINTER(struct_ibv_qp_ex), uint32_t, uint64_t, uint64_t, uint64_t] +except AttributeError: + pass +try: + ibv_wr_atomic_fetch_add = _libraries['libibverbs'].ibv_wr_atomic_fetch_add + ibv_wr_atomic_fetch_add.restype = None + ibv_wr_atomic_fetch_add.argtypes = [ctypes.POINTER(struct_ibv_qp_ex), uint32_t, uint64_t, uint64_t] +except AttributeError: + pass +try: + ibv_wr_bind_mw = _libraries['libibverbs'].ibv_wr_bind_mw + ibv_wr_bind_mw.restype = None + ibv_wr_bind_mw.argtypes = [ctypes.POINTER(struct_ibv_qp_ex), ctypes.POINTER(struct_ibv_mw), uint32_t, ctypes.POINTER(struct_ibv_mw_bind_info)] +except AttributeError: + pass +try: + ibv_wr_local_inv = _libraries['libibverbs'].ibv_wr_local_inv + ibv_wr_local_inv.restype = None + ibv_wr_local_inv.argtypes = [ctypes.POINTER(struct_ibv_qp_ex), uint32_t] +except AttributeError: + pass +try: + ibv_wr_rdma_read = _libraries['libibverbs'].ibv_wr_rdma_read + ibv_wr_rdma_read.restype = None + ibv_wr_rdma_read.argtypes = [ctypes.POINTER(struct_ibv_qp_ex), uint32_t, uint64_t] +except AttributeError: + pass +try: + ibv_wr_rdma_write = _libraries['libibverbs'].ibv_wr_rdma_write + ibv_wr_rdma_write.restype = None + ibv_wr_rdma_write.argtypes = [ctypes.POINTER(struct_ibv_qp_ex), uint32_t, uint64_t] +except AttributeError: + pass +size_t = ctypes.c_uint64 +uint8_t = ctypes.c_uint8 +try: + ibv_wr_flush = _libraries['libibverbs'].ibv_wr_flush + ibv_wr_flush.restype = None + ibv_wr_flush.argtypes = [ctypes.POINTER(struct_ibv_qp_ex), uint32_t, uint64_t, size_t, uint8_t, uint8_t] +except AttributeError: + pass +__be32 = ctypes.c_uint32 +try: + ibv_wr_rdma_write_imm = _libraries['libibverbs'].ibv_wr_rdma_write_imm + ibv_wr_rdma_write_imm.restype = None + ibv_wr_rdma_write_imm.argtypes = [ctypes.POINTER(struct_ibv_qp_ex), uint32_t, uint64_t, __be32] +except AttributeError: + pass +try: + ibv_wr_send = _libraries['libibverbs'].ibv_wr_send + ibv_wr_send.restype = None + ibv_wr_send.argtypes = [ctypes.POINTER(struct_ibv_qp_ex)] +except AttributeError: + pass +try: + ibv_wr_send_imm = _libraries['libibverbs'].ibv_wr_send_imm + ibv_wr_send_imm.restype = None + ibv_wr_send_imm.argtypes = [ctypes.POINTER(struct_ibv_qp_ex), __be32] +except AttributeError: + pass +try: + ibv_wr_send_inv = _libraries['libibverbs'].ibv_wr_send_inv + ibv_wr_send_inv.restype = None + ibv_wr_send_inv.argtypes = [ctypes.POINTER(struct_ibv_qp_ex), uint32_t] +except AttributeError: + pass +uint16_t = ctypes.c_uint16 +try: + ibv_wr_send_tso = _libraries['libibverbs'].ibv_wr_send_tso + ibv_wr_send_tso.restype = None + ibv_wr_send_tso.argtypes = [ctypes.POINTER(struct_ibv_qp_ex), ctypes.POINTER(None), uint16_t, uint16_t] +except AttributeError: + pass +try: + ibv_wr_set_ud_addr = _libraries['libibverbs'].ibv_wr_set_ud_addr + ibv_wr_set_ud_addr.restype = None + ibv_wr_set_ud_addr.argtypes = [ctypes.POINTER(struct_ibv_qp_ex), ctypes.POINTER(struct_ibv_ah), uint32_t, uint32_t] +except AttributeError: + pass +try: + ibv_wr_set_xrc_srqn = _libraries['libibverbs'].ibv_wr_set_xrc_srqn + ibv_wr_set_xrc_srqn.restype = None + ibv_wr_set_xrc_srqn.argtypes = [ctypes.POINTER(struct_ibv_qp_ex), uint32_t] +except AttributeError: + pass +try: + ibv_wr_set_inline_data = _libraries['libibverbs'].ibv_wr_set_inline_data + ibv_wr_set_inline_data.restype = None + ibv_wr_set_inline_data.argtypes = [ctypes.POINTER(struct_ibv_qp_ex), ctypes.POINTER(None), size_t] +except AttributeError: + pass +try: + ibv_wr_set_inline_data_list = _libraries['libibverbs'].ibv_wr_set_inline_data_list + ibv_wr_set_inline_data_list.restype = None + ibv_wr_set_inline_data_list.argtypes = [ctypes.POINTER(struct_ibv_qp_ex), size_t, ctypes.POINTER(struct_ibv_data_buf)] +except AttributeError: + pass +try: + ibv_wr_set_sge = _libraries['libibverbs'].ibv_wr_set_sge + ibv_wr_set_sge.restype = None + ibv_wr_set_sge.argtypes = [ctypes.POINTER(struct_ibv_qp_ex), uint32_t, uint64_t, uint32_t] +except AttributeError: + pass +try: + ibv_wr_set_sge_list = _libraries['libibverbs'].ibv_wr_set_sge_list + ibv_wr_set_sge_list.restype = None + ibv_wr_set_sge_list.argtypes = [ctypes.POINTER(struct_ibv_qp_ex), size_t, ctypes.POINTER(struct_ibv_sge)] +except AttributeError: + pass +try: + ibv_wr_start = _libraries['libibverbs'].ibv_wr_start + ibv_wr_start.restype = None + ibv_wr_start.argtypes = [ctypes.POINTER(struct_ibv_qp_ex)] +except AttributeError: + pass +try: + ibv_wr_complete = _libraries['libibverbs'].ibv_wr_complete + ibv_wr_complete.restype = ctypes.c_int32 + ibv_wr_complete.argtypes = [ctypes.POINTER(struct_ibv_qp_ex)] +except AttributeError: + pass +try: + ibv_wr_abort = _libraries['libibverbs'].ibv_wr_abort + ibv_wr_abort.restype = None + ibv_wr_abort.argtypes = [ctypes.POINTER(struct_ibv_qp_ex)] +except AttributeError: + pass +try: + ibv_wr_atomic_write = _libraries['libibverbs'].ibv_wr_atomic_write + ibv_wr_atomic_write.restype = None + ibv_wr_atomic_write.argtypes = [ctypes.POINTER(struct_ibv_qp_ex), uint32_t, uint64_t, ctypes.POINTER(None)] +except AttributeError: + pass +class struct_ibv_ece(Structure): + pass + +struct_ibv_ece._pack_ = 1 # source:False +struct_ibv_ece._fields_ = [ + ('vendor_id', ctypes.c_uint32), + ('options', ctypes.c_uint32), + ('comp_mask', ctypes.c_uint32), +] + +class struct_ibv_poll_cq_attr(Structure): + pass + +struct_ibv_poll_cq_attr._pack_ = 1 # source:False +struct_ibv_poll_cq_attr._fields_ = [ + ('comp_mask', ctypes.c_uint32), +] + +class struct_ibv_wc_tm_info(Structure): + pass + +struct_ibv_wc_tm_info._pack_ = 1 # source:False +struct_ibv_wc_tm_info._fields_ = [ + ('tag', ctypes.c_uint64), + ('priv', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), +] + +class struct_ibv_cq_ex(Structure): + pass + +struct_ibv_cq_ex._pack_ = 1 # source:False +struct_ibv_cq_ex._fields_ = [ + ('context', ctypes.POINTER(struct_ibv_context)), + ('channel', ctypes.POINTER(struct_ibv_comp_channel)), + ('cq_context', ctypes.POINTER(None)), + ('handle', ctypes.c_uint32), + ('cqe', ctypes.c_int32), + ('mutex', union_c__UA_pthread_mutex_t), + ('cond', union_c__UA_pthread_cond_t), + ('comp_events_completed', ctypes.c_uint32), + ('async_events_completed', ctypes.c_uint32), + ('comp_mask', ctypes.c_uint32), + ('status', ibv_wc_status), + ('wr_id', ctypes.c_uint64), + ('start_poll', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_cq_ex), ctypes.POINTER(struct_ibv_poll_cq_attr))), + ('next_poll', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_cq_ex))), + ('end_poll', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_cq_ex))), + ('read_opcode', ctypes.CFUNCTYPE(ibv_wc_opcode, ctypes.POINTER(struct_ibv_cq_ex))), + ('read_vendor_err', ctypes.CFUNCTYPE(ctypes.c_uint32, ctypes.POINTER(struct_ibv_cq_ex))), + ('read_byte_len', ctypes.CFUNCTYPE(ctypes.c_uint32, ctypes.POINTER(struct_ibv_cq_ex))), + ('read_imm_data', ctypes.CFUNCTYPE(ctypes.c_uint32, ctypes.POINTER(struct_ibv_cq_ex))), + ('read_qp_num', ctypes.CFUNCTYPE(ctypes.c_uint32, ctypes.POINTER(struct_ibv_cq_ex))), + ('read_src_qp', ctypes.CFUNCTYPE(ctypes.c_uint32, ctypes.POINTER(struct_ibv_cq_ex))), + ('read_wc_flags', ctypes.CFUNCTYPE(ctypes.c_uint32, ctypes.POINTER(struct_ibv_cq_ex))), + ('read_slid', ctypes.CFUNCTYPE(ctypes.c_uint32, ctypes.POINTER(struct_ibv_cq_ex))), + ('read_sl', ctypes.CFUNCTYPE(ctypes.c_ubyte, ctypes.POINTER(struct_ibv_cq_ex))), + ('read_dlid_path_bits', ctypes.CFUNCTYPE(ctypes.c_ubyte, ctypes.POINTER(struct_ibv_cq_ex))), + ('read_completion_ts', ctypes.CFUNCTYPE(ctypes.c_uint64, ctypes.POINTER(struct_ibv_cq_ex))), + ('read_cvlan', ctypes.CFUNCTYPE(ctypes.c_uint16, ctypes.POINTER(struct_ibv_cq_ex))), + ('read_flow_tag', ctypes.CFUNCTYPE(ctypes.c_uint32, ctypes.POINTER(struct_ibv_cq_ex))), + ('read_tm_info', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_cq_ex), ctypes.POINTER(struct_ibv_wc_tm_info))), + ('read_completion_wallclock_ns', ctypes.CFUNCTYPE(ctypes.c_uint64, ctypes.POINTER(struct_ibv_cq_ex))), +] + +try: + ibv_cq_ex_to_cq = _libraries['libibverbs'].ibv_cq_ex_to_cq + ibv_cq_ex_to_cq.restype = ctypes.POINTER(struct_ibv_cq) + ibv_cq_ex_to_cq.argtypes = [ctypes.POINTER(struct_ibv_cq_ex)] +except AttributeError: + pass + +# values for enumeration 'ibv_cq_attr_mask' +ibv_cq_attr_mask__enumvalues = { + 1: 'IBV_CQ_ATTR_MODERATE', + 2: 'IBV_CQ_ATTR_RESERVED', +} +IBV_CQ_ATTR_MODERATE = 1 +IBV_CQ_ATTR_RESERVED = 2 +ibv_cq_attr_mask = ctypes.c_uint32 # enum +class struct_ibv_moderate_cq(Structure): + pass + +struct_ibv_moderate_cq._pack_ = 1 # source:False +struct_ibv_moderate_cq._fields_ = [ + ('cq_count', ctypes.c_uint16), + ('cq_period', ctypes.c_uint16), +] + +class struct_ibv_modify_cq_attr(Structure): + pass + +struct_ibv_modify_cq_attr._pack_ = 1 # source:False +struct_ibv_modify_cq_attr._fields_ = [ + ('attr_mask', ctypes.c_uint32), + ('moderate', struct_ibv_moderate_cq), +] + +try: + ibv_start_poll = _libraries['libibverbs'].ibv_start_poll + ibv_start_poll.restype = ctypes.c_int32 + ibv_start_poll.argtypes = [ctypes.POINTER(struct_ibv_cq_ex), ctypes.POINTER(struct_ibv_poll_cq_attr)] +except AttributeError: + pass +try: + ibv_next_poll = _libraries['libibverbs'].ibv_next_poll + ibv_next_poll.restype = ctypes.c_int32 + ibv_next_poll.argtypes = [ctypes.POINTER(struct_ibv_cq_ex)] +except AttributeError: + pass +try: + ibv_end_poll = _libraries['libibverbs'].ibv_end_poll + ibv_end_poll.restype = None + ibv_end_poll.argtypes = [ctypes.POINTER(struct_ibv_cq_ex)] +except AttributeError: + pass +try: + ibv_wc_read_opcode = _libraries['libibverbs'].ibv_wc_read_opcode + ibv_wc_read_opcode.restype = ibv_wc_opcode + ibv_wc_read_opcode.argtypes = [ctypes.POINTER(struct_ibv_cq_ex)] +except AttributeError: + pass +try: + ibv_wc_read_vendor_err = _libraries['libibverbs'].ibv_wc_read_vendor_err + ibv_wc_read_vendor_err.restype = uint32_t + ibv_wc_read_vendor_err.argtypes = [ctypes.POINTER(struct_ibv_cq_ex)] +except AttributeError: + pass +try: + ibv_wc_read_byte_len = _libraries['libibverbs'].ibv_wc_read_byte_len + ibv_wc_read_byte_len.restype = uint32_t + ibv_wc_read_byte_len.argtypes = [ctypes.POINTER(struct_ibv_cq_ex)] +except AttributeError: + pass +try: + ibv_wc_read_imm_data = _libraries['libibverbs'].ibv_wc_read_imm_data + ibv_wc_read_imm_data.restype = __be32 + ibv_wc_read_imm_data.argtypes = [ctypes.POINTER(struct_ibv_cq_ex)] +except AttributeError: + pass +try: + ibv_wc_read_invalidated_rkey = _libraries['libibverbs'].ibv_wc_read_invalidated_rkey + ibv_wc_read_invalidated_rkey.restype = uint32_t + ibv_wc_read_invalidated_rkey.argtypes = [ctypes.POINTER(struct_ibv_cq_ex)] +except AttributeError: + pass +try: + ibv_wc_read_qp_num = _libraries['libibverbs'].ibv_wc_read_qp_num + ibv_wc_read_qp_num.restype = uint32_t + ibv_wc_read_qp_num.argtypes = [ctypes.POINTER(struct_ibv_cq_ex)] +except AttributeError: + pass +try: + ibv_wc_read_src_qp = _libraries['libibverbs'].ibv_wc_read_src_qp + ibv_wc_read_src_qp.restype = uint32_t + ibv_wc_read_src_qp.argtypes = [ctypes.POINTER(struct_ibv_cq_ex)] +except AttributeError: + pass +try: + ibv_wc_read_wc_flags = _libraries['libibverbs'].ibv_wc_read_wc_flags + ibv_wc_read_wc_flags.restype = ctypes.c_uint32 + ibv_wc_read_wc_flags.argtypes = [ctypes.POINTER(struct_ibv_cq_ex)] +except AttributeError: + pass +try: + ibv_wc_read_slid = _libraries['libibverbs'].ibv_wc_read_slid + ibv_wc_read_slid.restype = uint32_t + ibv_wc_read_slid.argtypes = [ctypes.POINTER(struct_ibv_cq_ex)] +except AttributeError: + pass +try: + ibv_wc_read_sl = _libraries['libibverbs'].ibv_wc_read_sl + ibv_wc_read_sl.restype = uint8_t + ibv_wc_read_sl.argtypes = [ctypes.POINTER(struct_ibv_cq_ex)] +except AttributeError: + pass +try: + ibv_wc_read_dlid_path_bits = _libraries['libibverbs'].ibv_wc_read_dlid_path_bits + ibv_wc_read_dlid_path_bits.restype = uint8_t + ibv_wc_read_dlid_path_bits.argtypes = [ctypes.POINTER(struct_ibv_cq_ex)] +except AttributeError: + pass +try: + ibv_wc_read_completion_ts = _libraries['libibverbs'].ibv_wc_read_completion_ts + ibv_wc_read_completion_ts.restype = uint64_t + ibv_wc_read_completion_ts.argtypes = [ctypes.POINTER(struct_ibv_cq_ex)] +except AttributeError: + pass +try: + ibv_wc_read_completion_wallclock_ns = _libraries['libibverbs'].ibv_wc_read_completion_wallclock_ns + ibv_wc_read_completion_wallclock_ns.restype = uint64_t + ibv_wc_read_completion_wallclock_ns.argtypes = [ctypes.POINTER(struct_ibv_cq_ex)] +except AttributeError: + pass +try: + ibv_wc_read_cvlan = _libraries['libibverbs'].ibv_wc_read_cvlan + ibv_wc_read_cvlan.restype = uint16_t + ibv_wc_read_cvlan.argtypes = [ctypes.POINTER(struct_ibv_cq_ex)] +except AttributeError: + pass +try: + ibv_wc_read_flow_tag = _libraries['libibverbs'].ibv_wc_read_flow_tag + ibv_wc_read_flow_tag.restype = uint32_t + ibv_wc_read_flow_tag.argtypes = [ctypes.POINTER(struct_ibv_cq_ex)] +except AttributeError: + pass +try: + ibv_wc_read_tm_info = _libraries['libibverbs'].ibv_wc_read_tm_info + ibv_wc_read_tm_info.restype = None + ibv_wc_read_tm_info.argtypes = [ctypes.POINTER(struct_ibv_cq_ex), ctypes.POINTER(struct_ibv_wc_tm_info)] +except AttributeError: + pass +try: + ibv_post_wq_recv = _libraries['libibverbs'].ibv_post_wq_recv + ibv_post_wq_recv.restype = ctypes.c_int32 + ibv_post_wq_recv.argtypes = [ctypes.POINTER(struct_ibv_wq), ctypes.POINTER(struct_ibv_recv_wr), ctypes.POINTER(ctypes.POINTER(struct_ibv_recv_wr))] +except AttributeError: + pass + +# values for enumeration 'ibv_flow_flags' +ibv_flow_flags__enumvalues = { + 2: 'IBV_FLOW_ATTR_FLAGS_DONT_TRAP', + 4: 'IBV_FLOW_ATTR_FLAGS_EGRESS', +} +IBV_FLOW_ATTR_FLAGS_DONT_TRAP = 2 +IBV_FLOW_ATTR_FLAGS_EGRESS = 4 +ibv_flow_flags = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_flow_attr_type' +ibv_flow_attr_type__enumvalues = { + 0: 'IBV_FLOW_ATTR_NORMAL', + 1: 'IBV_FLOW_ATTR_ALL_DEFAULT', + 2: 'IBV_FLOW_ATTR_MC_DEFAULT', + 3: 'IBV_FLOW_ATTR_SNIFFER', +} +IBV_FLOW_ATTR_NORMAL = 0 +IBV_FLOW_ATTR_ALL_DEFAULT = 1 +IBV_FLOW_ATTR_MC_DEFAULT = 2 +IBV_FLOW_ATTR_SNIFFER = 3 +ibv_flow_attr_type = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_flow_spec_type' +ibv_flow_spec_type__enumvalues = { + 32: 'IBV_FLOW_SPEC_ETH', + 48: 'IBV_FLOW_SPEC_IPV4', + 49: 'IBV_FLOW_SPEC_IPV6', + 50: 'IBV_FLOW_SPEC_IPV4_EXT', + 52: 'IBV_FLOW_SPEC_ESP', + 64: 'IBV_FLOW_SPEC_TCP', + 65: 'IBV_FLOW_SPEC_UDP', + 80: 'IBV_FLOW_SPEC_VXLAN_TUNNEL', + 81: 'IBV_FLOW_SPEC_GRE', + 96: 'IBV_FLOW_SPEC_MPLS', + 256: 'IBV_FLOW_SPEC_INNER', + 4096: 'IBV_FLOW_SPEC_ACTION_TAG', + 4097: 'IBV_FLOW_SPEC_ACTION_DROP', + 4098: 'IBV_FLOW_SPEC_ACTION_HANDLE', + 4099: 'IBV_FLOW_SPEC_ACTION_COUNT', +} +IBV_FLOW_SPEC_ETH = 32 +IBV_FLOW_SPEC_IPV4 = 48 +IBV_FLOW_SPEC_IPV6 = 49 +IBV_FLOW_SPEC_IPV4_EXT = 50 +IBV_FLOW_SPEC_ESP = 52 +IBV_FLOW_SPEC_TCP = 64 +IBV_FLOW_SPEC_UDP = 65 +IBV_FLOW_SPEC_VXLAN_TUNNEL = 80 +IBV_FLOW_SPEC_GRE = 81 +IBV_FLOW_SPEC_MPLS = 96 +IBV_FLOW_SPEC_INNER = 256 +IBV_FLOW_SPEC_ACTION_TAG = 4096 +IBV_FLOW_SPEC_ACTION_DROP = 4097 +IBV_FLOW_SPEC_ACTION_HANDLE = 4098 +IBV_FLOW_SPEC_ACTION_COUNT = 4099 +ibv_flow_spec_type = ctypes.c_uint32 # enum +class struct_ibv_flow_eth_filter(Structure): + pass + +struct_ibv_flow_eth_filter._pack_ = 1 # source:False +struct_ibv_flow_eth_filter._fields_ = [ + ('dst_mac', ctypes.c_ubyte * 6), + ('src_mac', ctypes.c_ubyte * 6), + ('ether_type', ctypes.c_uint16), + ('vlan_tag', ctypes.c_uint16), +] + +class struct_ibv_flow_spec_eth(Structure): + pass + +struct_ibv_flow_spec_eth._pack_ = 1 # source:False +struct_ibv_flow_spec_eth._fields_ = [ + ('type', ibv_flow_spec_type), + ('size', ctypes.c_uint16), + ('val', struct_ibv_flow_eth_filter), + ('mask', struct_ibv_flow_eth_filter), + ('PADDING_0', ctypes.c_ubyte * 2), +] + +class struct_ibv_flow_ipv4_filter(Structure): + pass + +struct_ibv_flow_ipv4_filter._pack_ = 1 # source:False +struct_ibv_flow_ipv4_filter._fields_ = [ + ('src_ip', ctypes.c_uint32), + ('dst_ip', ctypes.c_uint32), +] + +class struct_ibv_flow_spec_ipv4(Structure): + pass + +struct_ibv_flow_spec_ipv4._pack_ = 1 # source:False +struct_ibv_flow_spec_ipv4._fields_ = [ + ('type', ibv_flow_spec_type), + ('size', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 2), + ('val', struct_ibv_flow_ipv4_filter), + ('mask', struct_ibv_flow_ipv4_filter), +] + +class struct_ibv_flow_ipv4_ext_filter(Structure): + pass + +struct_ibv_flow_ipv4_ext_filter._pack_ = 1 # source:False +struct_ibv_flow_ipv4_ext_filter._fields_ = [ + ('src_ip', ctypes.c_uint32), + ('dst_ip', ctypes.c_uint32), + ('proto', ctypes.c_ubyte), + ('tos', ctypes.c_ubyte), + ('ttl', ctypes.c_ubyte), + ('flags', ctypes.c_ubyte), +] + +class struct_ibv_flow_spec_ipv4_ext(Structure): + pass + +struct_ibv_flow_spec_ipv4_ext._pack_ = 1 # source:False +struct_ibv_flow_spec_ipv4_ext._fields_ = [ + ('type', ibv_flow_spec_type), + ('size', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 2), + ('val', struct_ibv_flow_ipv4_ext_filter), + ('mask', struct_ibv_flow_ipv4_ext_filter), +] + +class struct_ibv_flow_ipv6_filter(Structure): + pass + +struct_ibv_flow_ipv6_filter._pack_ = 1 # source:False +struct_ibv_flow_ipv6_filter._fields_ = [ + ('src_ip', ctypes.c_ubyte * 16), + ('dst_ip', ctypes.c_ubyte * 16), + ('flow_label', ctypes.c_uint32), + ('next_hdr', ctypes.c_ubyte), + ('traffic_class', ctypes.c_ubyte), + ('hop_limit', ctypes.c_ubyte), + ('PADDING_0', ctypes.c_ubyte), +] + +class struct_ibv_flow_spec_ipv6(Structure): + pass + +struct_ibv_flow_spec_ipv6._pack_ = 1 # source:False +struct_ibv_flow_spec_ipv6._fields_ = [ + ('type', ibv_flow_spec_type), + ('size', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 2), + ('val', struct_ibv_flow_ipv6_filter), + ('mask', struct_ibv_flow_ipv6_filter), +] + +class struct_ibv_flow_esp_filter(Structure): + pass + +struct_ibv_flow_esp_filter._pack_ = 1 # source:False +struct_ibv_flow_esp_filter._fields_ = [ + ('spi', ctypes.c_uint32), + ('seq', ctypes.c_uint32), +] + +class struct_ibv_flow_spec_esp(Structure): + pass + +struct_ibv_flow_spec_esp._pack_ = 1 # source:False +struct_ibv_flow_spec_esp._fields_ = [ + ('type', ibv_flow_spec_type), + ('size', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 2), + ('val', struct_ibv_flow_esp_filter), + ('mask', struct_ibv_flow_esp_filter), +] + +class struct_ibv_flow_tcp_udp_filter(Structure): + pass + +struct_ibv_flow_tcp_udp_filter._pack_ = 1 # source:False +struct_ibv_flow_tcp_udp_filter._fields_ = [ + ('dst_port', ctypes.c_uint16), + ('src_port', ctypes.c_uint16), +] + +class struct_ibv_flow_spec_tcp_udp(Structure): + pass + +struct_ibv_flow_spec_tcp_udp._pack_ = 1 # source:False +struct_ibv_flow_spec_tcp_udp._fields_ = [ + ('type', ibv_flow_spec_type), + ('size', ctypes.c_uint16), + ('val', struct_ibv_flow_tcp_udp_filter), + ('mask', struct_ibv_flow_tcp_udp_filter), + ('PADDING_0', ctypes.c_ubyte * 2), +] + +class struct_ibv_flow_gre_filter(Structure): + pass + +struct_ibv_flow_gre_filter._pack_ = 1 # source:False +struct_ibv_flow_gre_filter._fields_ = [ + ('c_ks_res0_ver', ctypes.c_uint16), + ('protocol', ctypes.c_uint16), + ('key', ctypes.c_uint32), +] + +class struct_ibv_flow_spec_gre(Structure): + pass + +struct_ibv_flow_spec_gre._pack_ = 1 # source:False +struct_ibv_flow_spec_gre._fields_ = [ + ('type', ibv_flow_spec_type), + ('size', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 2), + ('val', struct_ibv_flow_gre_filter), + ('mask', struct_ibv_flow_gre_filter), +] + +class struct_ibv_flow_mpls_filter(Structure): + pass + +struct_ibv_flow_mpls_filter._pack_ = 1 # source:False +struct_ibv_flow_mpls_filter._fields_ = [ + ('label', ctypes.c_uint32), +] + +class struct_ibv_flow_spec_mpls(Structure): + pass + +struct_ibv_flow_spec_mpls._pack_ = 1 # source:False +struct_ibv_flow_spec_mpls._fields_ = [ + ('type', ibv_flow_spec_type), + ('size', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 2), + ('val', struct_ibv_flow_mpls_filter), + ('mask', struct_ibv_flow_mpls_filter), +] + +class struct_ibv_flow_tunnel_filter(Structure): + pass + +struct_ibv_flow_tunnel_filter._pack_ = 1 # source:False +struct_ibv_flow_tunnel_filter._fields_ = [ + ('tunnel_id', ctypes.c_uint32), +] + +class struct_ibv_flow_spec_tunnel(Structure): + pass + +struct_ibv_flow_spec_tunnel._pack_ = 1 # source:False +struct_ibv_flow_spec_tunnel._fields_ = [ + ('type', ibv_flow_spec_type), + ('size', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 2), + ('val', struct_ibv_flow_tunnel_filter), + ('mask', struct_ibv_flow_tunnel_filter), +] + +class struct_ibv_flow_spec_action_tag(Structure): + pass + +struct_ibv_flow_spec_action_tag._pack_ = 1 # source:False +struct_ibv_flow_spec_action_tag._fields_ = [ + ('type', ibv_flow_spec_type), + ('size', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 2), + ('tag_id', ctypes.c_uint32), +] + +class struct_ibv_flow_spec_action_drop(Structure): + pass + +struct_ibv_flow_spec_action_drop._pack_ = 1 # source:False +struct_ibv_flow_spec_action_drop._fields_ = [ + ('type', ibv_flow_spec_type), + ('size', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 2), +] + +class struct_ibv_flow_spec_action_handle(Structure): + pass + +class struct_ibv_flow_action(Structure): + pass + +struct_ibv_flow_spec_action_handle._pack_ = 1 # source:False +struct_ibv_flow_spec_action_handle._fields_ = [ + ('type', ibv_flow_spec_type), + ('size', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 2), + ('action', ctypes.POINTER(struct_ibv_flow_action)), +] + +struct_ibv_flow_action._pack_ = 1 # source:False +struct_ibv_flow_action._fields_ = [ + ('context', ctypes.POINTER(struct_ibv_context)), +] + +class struct_ibv_flow_spec_counter_action(Structure): + pass + +class struct_ibv_counters(Structure): + pass + +struct_ibv_flow_spec_counter_action._pack_ = 1 # source:False +struct_ibv_flow_spec_counter_action._fields_ = [ + ('type', ibv_flow_spec_type), + ('size', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 2), + ('counters', ctypes.POINTER(struct_ibv_counters)), +] + +struct_ibv_counters._pack_ = 1 # source:False +struct_ibv_counters._fields_ = [ + ('context', ctypes.POINTER(struct_ibv_context)), +] + +class struct_ibv_flow_spec(Structure): + pass + +class union_ibv_flow_spec_0(Union): + pass + +class struct_ibv_flow_spec_0_hdr(Structure): + pass + +struct_ibv_flow_spec_0_hdr._pack_ = 1 # source:False +struct_ibv_flow_spec_0_hdr._fields_ = [ + ('type', ibv_flow_spec_type), + ('size', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 2), +] + +union_ibv_flow_spec_0._pack_ = 1 # source:False +union_ibv_flow_spec_0._fields_ = [ + ('hdr', struct_ibv_flow_spec_0_hdr), + ('eth', struct_ibv_flow_spec_eth), + ('ipv4', struct_ibv_flow_spec_ipv4), + ('tcp_udp', struct_ibv_flow_spec_tcp_udp), + ('ipv4_ext', struct_ibv_flow_spec_ipv4_ext), + ('ipv6', struct_ibv_flow_spec_ipv6), + ('esp', struct_ibv_flow_spec_esp), + ('tunnel', struct_ibv_flow_spec_tunnel), + ('gre', struct_ibv_flow_spec_gre), + ('mpls', struct_ibv_flow_spec_mpls), + ('flow_tag', struct_ibv_flow_spec_action_tag), + ('drop', struct_ibv_flow_spec_action_drop), + ('handle', struct_ibv_flow_spec_action_handle), + ('flow_count', struct_ibv_flow_spec_counter_action), + ('PADDING_0', ctypes.c_ubyte * 72), +] + +struct_ibv_flow_spec._pack_ = 1 # source:False +struct_ibv_flow_spec._anonymous_ = ('_0',) +struct_ibv_flow_spec._fields_ = [ + ('_0', union_ibv_flow_spec_0), +] + +class struct_ibv_flow_attr(Structure): + pass + +struct_ibv_flow_attr._pack_ = 1 # source:False +struct_ibv_flow_attr._fields_ = [ + ('comp_mask', ctypes.c_uint32), + ('type', ibv_flow_attr_type), + ('size', ctypes.c_uint16), + ('priority', ctypes.c_uint16), + ('num_of_specs', ctypes.c_ubyte), + ('port', ctypes.c_ubyte), + ('PADDING_0', ctypes.c_ubyte * 2), + ('flags', ctypes.c_uint32), +] + +class struct_ibv_flow(Structure): + pass + +struct_ibv_flow._pack_ = 1 # source:False +struct_ibv_flow._fields_ = [ + ('comp_mask', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), + ('context', ctypes.POINTER(struct_ibv_context)), + ('handle', ctypes.c_uint32), + ('PADDING_1', ctypes.c_ubyte * 4), +] + + +# values for enumeration 'ibv_flow_action_esp_mask' +ibv_flow_action_esp_mask__enumvalues = { + 1: 'IBV_FLOW_ACTION_ESP_MASK_ESN', +} +IBV_FLOW_ACTION_ESP_MASK_ESN = 1 +ibv_flow_action_esp_mask = ctypes.c_uint32 # enum +class struct_ibv_flow_action_esp_attr(Structure): + pass + +struct_ibv_flow_action_esp_attr._pack_ = 1 # source:False +struct_ibv_flow_action_esp_attr._fields_ = [ + ('esp_attr', ctypes.POINTER(struct_ib_uverbs_flow_action_esp)), + ('keymat_proto', ib_uverbs_flow_action_esp_keymat), + ('keymat_len', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 2), + ('keymat_ptr', ctypes.POINTER(None)), + ('replay_proto', ib_uverbs_flow_action_esp_replay), + ('replay_len', ctypes.c_uint16), + ('PADDING_1', ctypes.c_ubyte * 2), + ('replay_ptr', ctypes.POINTER(None)), + ('esp_encap', ctypes.POINTER(struct_ib_uverbs_flow_action_esp_encap)), + ('comp_mask', ctypes.c_uint32), + ('esn', ctypes.c_uint32), +] + + +# values for enumeration 'c__Ea_IBV_SYSFS_NAME_MAX' +c__Ea_IBV_SYSFS_NAME_MAX__enumvalues = { + 64: 'IBV_SYSFS_NAME_MAX', + 256: 'IBV_SYSFS_PATH_MAX', +} +IBV_SYSFS_NAME_MAX = 64 +IBV_SYSFS_PATH_MAX = 256 +c__Ea_IBV_SYSFS_NAME_MAX = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_cq_init_attr_mask' +ibv_cq_init_attr_mask__enumvalues = { + 1: 'IBV_CQ_INIT_ATTR_MASK_FLAGS', + 2: 'IBV_CQ_INIT_ATTR_MASK_PD', +} +IBV_CQ_INIT_ATTR_MASK_FLAGS = 1 +IBV_CQ_INIT_ATTR_MASK_PD = 2 +ibv_cq_init_attr_mask = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_create_cq_attr_flags' +ibv_create_cq_attr_flags__enumvalues = { + 1: 'IBV_CREATE_CQ_ATTR_SINGLE_THREADED', + 2: 'IBV_CREATE_CQ_ATTR_IGNORE_OVERRUN', +} +IBV_CREATE_CQ_ATTR_SINGLE_THREADED = 1 +IBV_CREATE_CQ_ATTR_IGNORE_OVERRUN = 2 +ibv_create_cq_attr_flags = ctypes.c_uint32 # enum +class struct_ibv_cq_init_attr_ex(Structure): + pass + +struct_ibv_cq_init_attr_ex._pack_ = 1 # source:False +struct_ibv_cq_init_attr_ex._fields_ = [ + ('cqe', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), + ('cq_context', ctypes.POINTER(None)), + ('channel', ctypes.POINTER(struct_ibv_comp_channel)), + ('comp_vector', ctypes.c_uint32), + ('PADDING_1', ctypes.c_ubyte * 4), + ('wc_flags', ctypes.c_uint64), + ('comp_mask', ctypes.c_uint32), + ('flags', ctypes.c_uint32), + ('parent_domain', ctypes.POINTER(struct_ibv_pd)), +] + + +# values for enumeration 'ibv_parent_domain_init_attr_mask' +ibv_parent_domain_init_attr_mask__enumvalues = { + 1: 'IBV_PARENT_DOMAIN_INIT_ATTR_ALLOCATORS', + 2: 'IBV_PARENT_DOMAIN_INIT_ATTR_PD_CONTEXT', +} +IBV_PARENT_DOMAIN_INIT_ATTR_ALLOCATORS = 1 +IBV_PARENT_DOMAIN_INIT_ATTR_PD_CONTEXT = 2 +ibv_parent_domain_init_attr_mask = ctypes.c_uint32 # enum +class struct_ibv_parent_domain_init_attr(Structure): + pass + +struct_ibv_parent_domain_init_attr._pack_ = 1 # source:False +struct_ibv_parent_domain_init_attr._fields_ = [ + ('pd', ctypes.POINTER(struct_ibv_pd)), + ('td', ctypes.POINTER(struct_ibv_td)), + ('comp_mask', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), + ('alloc', ctypes.CFUNCTYPE(ctypes.POINTER(None), ctypes.POINTER(struct_ibv_pd), ctypes.POINTER(None), ctypes.c_uint64, ctypes.c_uint64, ctypes.c_uint64)), + ('free', ctypes.CFUNCTYPE(None, ctypes.POINTER(struct_ibv_pd), ctypes.POINTER(None), ctypes.POINTER(None), ctypes.c_uint64)), + ('pd_context', ctypes.POINTER(None)), +] + +class struct_ibv_counters_init_attr(Structure): + pass + +struct_ibv_counters_init_attr._pack_ = 1 # source:False +struct_ibv_counters_init_attr._fields_ = [ + ('comp_mask', ctypes.c_uint32), +] + + +# values for enumeration 'ibv_counter_description' +ibv_counter_description__enumvalues = { + 0: 'IBV_COUNTER_PACKETS', + 1: 'IBV_COUNTER_BYTES', +} +IBV_COUNTER_PACKETS = 0 +IBV_COUNTER_BYTES = 1 +ibv_counter_description = ctypes.c_uint32 # enum +class struct_ibv_counter_attach_attr(Structure): + pass + +struct_ibv_counter_attach_attr._pack_ = 1 # source:False +struct_ibv_counter_attach_attr._fields_ = [ + ('counter_desc', ibv_counter_description), + ('index', ctypes.c_uint32), + ('comp_mask', ctypes.c_uint32), +] + + +# values for enumeration 'ibv_read_counters_flags' +ibv_read_counters_flags__enumvalues = { + 1: 'IBV_READ_COUNTERS_ATTR_PREFER_CACHED', +} +IBV_READ_COUNTERS_ATTR_PREFER_CACHED = 1 +ibv_read_counters_flags = ctypes.c_uint32 # enum + +# values for enumeration 'ibv_values_mask' +ibv_values_mask__enumvalues = { + 1: 'IBV_VALUES_MASK_RAW_CLOCK', + 2: 'IBV_VALUES_MASK_RESERVED', +} +IBV_VALUES_MASK_RAW_CLOCK = 1 +IBV_VALUES_MASK_RESERVED = 2 +ibv_values_mask = ctypes.c_uint32 # enum +class struct_ibv_values_ex(Structure): + pass + +class struct_timespec(Structure): + pass + +struct_timespec._pack_ = 1 # source:False +struct_timespec._fields_ = [ + ('tv_sec', ctypes.c_int64), + ('tv_nsec', ctypes.c_int64), +] + +struct_ibv_values_ex._pack_ = 1 # source:False +struct_ibv_values_ex._fields_ = [ + ('comp_mask', ctypes.c_uint32), + ('PADDING_0', ctypes.c_ubyte * 4), + ('raw_clock', struct_timespec), +] + +class struct_verbs_context(Structure): + pass + +class struct_verbs_ex_private(Structure): + pass + +struct_verbs_context._pack_ = 1 # source:False +struct_verbs_context._fields_ = [ + ('query_port', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_context), ctypes.c_ubyte, ctypes.POINTER(struct_ibv_port_attr), ctypes.c_uint64)), + ('advise_mr', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_pd), ib_uverbs_advise_mr_advice, ctypes.c_uint32, ctypes.POINTER(struct_ibv_sge), ctypes.c_uint32)), + ('alloc_null_mr', ctypes.CFUNCTYPE(ctypes.POINTER(struct_ibv_mr), ctypes.POINTER(struct_ibv_pd))), + ('read_counters', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_counters), ctypes.POINTER(ctypes.c_uint64), ctypes.c_uint32, ctypes.c_uint32)), + ('attach_counters_point_flow', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_counters), ctypes.POINTER(struct_ibv_counter_attach_attr), ctypes.POINTER(struct_ibv_flow))), + ('create_counters', ctypes.CFUNCTYPE(ctypes.POINTER(struct_ibv_counters), ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_counters_init_attr))), + ('destroy_counters', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_counters))), + ('reg_dm_mr', ctypes.CFUNCTYPE(ctypes.POINTER(struct_ibv_mr), ctypes.POINTER(struct_ibv_pd), ctypes.POINTER(struct_ibv_dm), ctypes.c_uint64, ctypes.c_uint64, ctypes.c_uint32)), + ('alloc_dm', ctypes.CFUNCTYPE(ctypes.POINTER(struct_ibv_dm), ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_alloc_dm_attr))), + ('free_dm', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_dm))), + ('modify_flow_action_esp', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_flow_action), ctypes.POINTER(struct_ibv_flow_action_esp_attr))), + ('destroy_flow_action', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_flow_action))), + ('create_flow_action_esp', ctypes.CFUNCTYPE(ctypes.POINTER(struct_ibv_flow_action), ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_flow_action_esp_attr))), + ('modify_qp_rate_limit', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_qp), ctypes.POINTER(struct_ibv_qp_rate_limit_attr))), + ('alloc_parent_domain', ctypes.CFUNCTYPE(ctypes.POINTER(struct_ibv_pd), ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_parent_domain_init_attr))), + ('dealloc_td', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_td))), + ('alloc_td', ctypes.CFUNCTYPE(ctypes.POINTER(struct_ibv_td), ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_td_init_attr))), + ('modify_cq', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_cq), ctypes.POINTER(struct_ibv_modify_cq_attr))), + ('post_srq_ops', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_srq), ctypes.POINTER(struct_ibv_ops_wr), ctypes.POINTER(ctypes.POINTER(struct_ibv_ops_wr)))), + ('destroy_rwq_ind_table', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_rwq_ind_table))), + ('create_rwq_ind_table', ctypes.CFUNCTYPE(ctypes.POINTER(struct_ibv_rwq_ind_table), ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_rwq_ind_table_init_attr))), + ('destroy_wq', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_wq))), + ('modify_wq', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_wq), ctypes.POINTER(struct_ibv_wq_attr))), + ('create_wq', ctypes.CFUNCTYPE(ctypes.POINTER(struct_ibv_wq), ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_wq_init_attr))), + ('query_rt_values', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_values_ex))), + ('create_cq_ex', ctypes.CFUNCTYPE(ctypes.POINTER(struct_ibv_cq_ex), ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_cq_init_attr_ex))), + ('priv', ctypes.POINTER(struct_verbs_ex_private)), + ('query_device_ex', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_query_device_ex_input), ctypes.POINTER(struct_ibv_device_attr_ex), ctypes.c_uint64)), + ('ibv_destroy_flow', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_flow))), + ('ABI_placeholder2', ctypes.CFUNCTYPE(None)), + ('ibv_create_flow', ctypes.CFUNCTYPE(ctypes.POINTER(struct_ibv_flow), ctypes.POINTER(struct_ibv_qp), ctypes.POINTER(struct_ibv_flow_attr))), + ('ABI_placeholder1', ctypes.CFUNCTYPE(None)), + ('open_qp', ctypes.CFUNCTYPE(ctypes.POINTER(struct_ibv_qp), ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_qp_open_attr))), + ('create_qp_ex', ctypes.CFUNCTYPE(ctypes.POINTER(struct_ibv_qp), ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_qp_init_attr_ex))), + ('get_srq_num', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_srq), ctypes.POINTER(ctypes.c_uint32))), + ('create_srq_ex', ctypes.CFUNCTYPE(ctypes.POINTER(struct_ibv_srq), ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_srq_init_attr_ex))), + ('open_xrcd', ctypes.CFUNCTYPE(ctypes.POINTER(struct_ibv_xrcd), ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_xrcd_init_attr))), + ('close_xrcd', ctypes.CFUNCTYPE(ctypes.c_int32, ctypes.POINTER(struct_ibv_xrcd))), + ('_ABI_placeholder3', ctypes.c_uint64), + ('sz', ctypes.c_uint64), + ('context', struct_ibv_context), +] + +try: + verbs_get_ctx = _libraries['libibverbs'].verbs_get_ctx + verbs_get_ctx.restype = ctypes.POINTER(struct_verbs_context) + verbs_get_ctx.argtypes = [ctypes.POINTER(struct_ibv_context)] +except AttributeError: + pass +# def verbs_get_ctx_op(ctx, op): # macro +# return ({struct_verbs_context*__vctx=verbs_get_ctx(ctx);(!__vctx or (__vctx->szop)?NULL:__vctx;}) +try: + ibv_get_device_list = _libraries['libibverbs'].ibv_get_device_list + ibv_get_device_list.restype = ctypes.POINTER(ctypes.POINTER(struct_ibv_device)) + ibv_get_device_list.argtypes = [ctypes.POINTER(ctypes.c_int32)] +except AttributeError: + pass +try: + ibv_free_device_list = _libraries['libibverbs'].ibv_free_device_list + ibv_free_device_list.restype = None + ibv_free_device_list.argtypes = [ctypes.POINTER(ctypes.POINTER(struct_ibv_device))] +except AttributeError: + pass +try: + ibv_get_device_name = _libraries['libibverbs'].ibv_get_device_name + ibv_get_device_name.restype = ctypes.POINTER(ctypes.c_char) + ibv_get_device_name.argtypes = [ctypes.POINTER(struct_ibv_device)] +except AttributeError: + pass +try: + ibv_get_device_index = _libraries['libibverbs'].ibv_get_device_index + ibv_get_device_index.restype = ctypes.c_int32 + ibv_get_device_index.argtypes = [ctypes.POINTER(struct_ibv_device)] +except AttributeError: + pass +__be64 = ctypes.c_uint64 +try: + ibv_get_device_guid = _libraries['libibverbs'].ibv_get_device_guid + ibv_get_device_guid.restype = __be64 + ibv_get_device_guid.argtypes = [ctypes.POINTER(struct_ibv_device)] +except AttributeError: + pass +try: + ibv_open_device = _libraries['libibverbs'].ibv_open_device + ibv_open_device.restype = ctypes.POINTER(struct_ibv_context) + ibv_open_device.argtypes = [ctypes.POINTER(struct_ibv_device)] +except AttributeError: + pass +try: + ibv_close_device = _libraries['libibverbs'].ibv_close_device + ibv_close_device.restype = ctypes.c_int32 + ibv_close_device.argtypes = [ctypes.POINTER(struct_ibv_context)] +except AttributeError: + pass +try: + ibv_import_device = _libraries['libibverbs'].ibv_import_device + ibv_import_device.restype = ctypes.POINTER(struct_ibv_context) + ibv_import_device.argtypes = [ctypes.c_int32] +except AttributeError: + pass +try: + ibv_import_pd = _libraries['libibverbs'].ibv_import_pd + ibv_import_pd.restype = ctypes.POINTER(struct_ibv_pd) + ibv_import_pd.argtypes = [ctypes.POINTER(struct_ibv_context), uint32_t] +except AttributeError: + pass +try: + ibv_unimport_pd = _libraries['libibverbs'].ibv_unimport_pd + ibv_unimport_pd.restype = None + ibv_unimport_pd.argtypes = [ctypes.POINTER(struct_ibv_pd)] +except AttributeError: + pass +try: + ibv_import_mr = _libraries['libibverbs'].ibv_import_mr + ibv_import_mr.restype = ctypes.POINTER(struct_ibv_mr) + ibv_import_mr.argtypes = [ctypes.POINTER(struct_ibv_pd), uint32_t] +except AttributeError: + pass +try: + ibv_unimport_mr = _libraries['libibverbs'].ibv_unimport_mr + ibv_unimport_mr.restype = None + ibv_unimport_mr.argtypes = [ctypes.POINTER(struct_ibv_mr)] +except AttributeError: + pass +try: + ibv_import_dm = _libraries['libibverbs'].ibv_import_dm + ibv_import_dm.restype = ctypes.POINTER(struct_ibv_dm) + ibv_import_dm.argtypes = [ctypes.POINTER(struct_ibv_context), uint32_t] +except AttributeError: + pass +try: + ibv_unimport_dm = _libraries['libibverbs'].ibv_unimport_dm + ibv_unimport_dm.restype = None + ibv_unimport_dm.argtypes = [ctypes.POINTER(struct_ibv_dm)] +except AttributeError: + pass +try: + ibv_get_async_event = _libraries['libibverbs'].ibv_get_async_event + ibv_get_async_event.restype = ctypes.c_int32 + ibv_get_async_event.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_async_event)] +except AttributeError: + pass +try: + ibv_ack_async_event = _libraries['libibverbs'].ibv_ack_async_event + ibv_ack_async_event.restype = None + ibv_ack_async_event.argtypes = [ctypes.POINTER(struct_ibv_async_event)] +except AttributeError: + pass +try: + ibv_query_device = _libraries['libibverbs'].ibv_query_device + ibv_query_device.restype = ctypes.c_int32 + ibv_query_device.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_device_attr)] +except AttributeError: + pass +try: + ___ibv_query_port = _libraries['libibverbs'].___ibv_query_port + ___ibv_query_port.restype = ctypes.c_int32 + ___ibv_query_port.argtypes = [ctypes.POINTER(struct_ibv_context), uint8_t, ctypes.POINTER(struct_ibv_port_attr)] +except AttributeError: + pass +def ibv_query_port(context, port_num, port_attr): # macro + return ___ibv_query_port(context,port_num,port_attr) +try: + ibv_query_gid = _libraries['libibverbs'].ibv_query_gid + ibv_query_gid.restype = ctypes.c_int32 + ibv_query_gid.argtypes = [ctypes.POINTER(struct_ibv_context), uint8_t, ctypes.c_int32, ctypes.POINTER(union_ibv_gid)] +except AttributeError: + pass +try: + _ibv_query_gid_ex = _libraries['libibverbs']._ibv_query_gid_ex + _ibv_query_gid_ex.restype = ctypes.c_int32 + _ibv_query_gid_ex.argtypes = [ctypes.POINTER(struct_ibv_context), uint32_t, uint32_t, ctypes.POINTER(struct_ibv_gid_entry), uint32_t, size_t] +except AttributeError: + pass +try: + ibv_query_gid_ex = _libraries['libibverbs'].ibv_query_gid_ex + ibv_query_gid_ex.restype = ctypes.c_int32 + ibv_query_gid_ex.argtypes = [ctypes.POINTER(struct_ibv_context), uint32_t, uint32_t, ctypes.POINTER(struct_ibv_gid_entry), uint32_t] +except AttributeError: + pass +ssize_t = ctypes.c_int64 +try: + _ibv_query_gid_table = _libraries['libibverbs']._ibv_query_gid_table + _ibv_query_gid_table.restype = ssize_t + _ibv_query_gid_table.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_gid_entry), size_t, uint32_t, size_t] +except AttributeError: + pass +try: + ibv_query_gid_table = _libraries['libibverbs'].ibv_query_gid_table + ibv_query_gid_table.restype = ssize_t + ibv_query_gid_table.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_gid_entry), size_t, uint32_t] +except AttributeError: + pass +try: + ibv_query_pkey = _libraries['libibverbs'].ibv_query_pkey + ibv_query_pkey.restype = ctypes.c_int32 + ibv_query_pkey.argtypes = [ctypes.POINTER(struct_ibv_context), uint8_t, ctypes.c_int32, ctypes.POINTER(ctypes.c_uint16)] +except AttributeError: + pass +__be16 = ctypes.c_uint16 +try: + ibv_get_pkey_index = _libraries['libibverbs'].ibv_get_pkey_index + ibv_get_pkey_index.restype = ctypes.c_int32 + ibv_get_pkey_index.argtypes = [ctypes.POINTER(struct_ibv_context), uint8_t, __be16] +except AttributeError: + pass +try: + ibv_alloc_pd = _libraries['libibverbs'].ibv_alloc_pd + ibv_alloc_pd.restype = ctypes.POINTER(struct_ibv_pd) + ibv_alloc_pd.argtypes = [ctypes.POINTER(struct_ibv_context)] +except AttributeError: + pass +try: + ibv_dealloc_pd = _libraries['libibverbs'].ibv_dealloc_pd + ibv_dealloc_pd.restype = ctypes.c_int32 + ibv_dealloc_pd.argtypes = [ctypes.POINTER(struct_ibv_pd)] +except AttributeError: + pass +try: + ibv_create_flow = _libraries['libibverbs'].ibv_create_flow + ibv_create_flow.restype = ctypes.POINTER(struct_ibv_flow) + ibv_create_flow.argtypes = [ctypes.POINTER(struct_ibv_qp), ctypes.POINTER(struct_ibv_flow_attr)] +except AttributeError: + pass +try: + ibv_destroy_flow = _libraries['libibverbs'].ibv_destroy_flow + ibv_destroy_flow.restype = ctypes.c_int32 + ibv_destroy_flow.argtypes = [ctypes.POINTER(struct_ibv_flow)] +except AttributeError: + pass +try: + ibv_create_flow_action_esp = _libraries['libibverbs'].ibv_create_flow_action_esp + ibv_create_flow_action_esp.restype = ctypes.POINTER(struct_ibv_flow_action) + ibv_create_flow_action_esp.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_flow_action_esp_attr)] +except AttributeError: + pass +try: + ibv_modify_flow_action_esp = _libraries['libibverbs'].ibv_modify_flow_action_esp + ibv_modify_flow_action_esp.restype = ctypes.c_int32 + ibv_modify_flow_action_esp.argtypes = [ctypes.POINTER(struct_ibv_flow_action), ctypes.POINTER(struct_ibv_flow_action_esp_attr)] +except AttributeError: + pass +try: + ibv_destroy_flow_action = _libraries['libibverbs'].ibv_destroy_flow_action + ibv_destroy_flow_action.restype = ctypes.c_int32 + ibv_destroy_flow_action.argtypes = [ctypes.POINTER(struct_ibv_flow_action)] +except AttributeError: + pass +try: + ibv_open_xrcd = _libraries['libibverbs'].ibv_open_xrcd + ibv_open_xrcd.restype = ctypes.POINTER(struct_ibv_xrcd) + ibv_open_xrcd.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_xrcd_init_attr)] +except AttributeError: + pass +try: + ibv_close_xrcd = _libraries['libibverbs'].ibv_close_xrcd + ibv_close_xrcd.restype = ctypes.c_int32 + ibv_close_xrcd.argtypes = [ctypes.POINTER(struct_ibv_xrcd)] +except AttributeError: + pass +try: + ibv_reg_mr_iova2 = _libraries['libibverbs'].ibv_reg_mr_iova2 + ibv_reg_mr_iova2.restype = ctypes.POINTER(struct_ibv_mr) + ibv_reg_mr_iova2.argtypes = [ctypes.POINTER(struct_ibv_pd), ctypes.POINTER(None), size_t, uint64_t, ctypes.c_uint32] +except AttributeError: + pass +try: + __ibv_reg_mr = _libraries['libibverbs'].__ibv_reg_mr + __ibv_reg_mr.restype = ctypes.POINTER(struct_ibv_mr) + __ibv_reg_mr.argtypes = [ctypes.POINTER(struct_ibv_pd), ctypes.POINTER(None), size_t, ctypes.c_uint32, ctypes.c_int32] +except AttributeError: + pass +# def ibv_reg_mr(pd, addr, length, access): # macro +# return __ibv_reg_mr(pd,addr,length,access,__builtin_constant_p(((access)&IB_UVERBS_ACCESS_OPTIONAL_RANGE)==0)) +try: + __ibv_reg_mr_iova = _libraries['libibverbs'].__ibv_reg_mr_iova + __ibv_reg_mr_iova.restype = ctypes.POINTER(struct_ibv_mr) + __ibv_reg_mr_iova.argtypes = [ctypes.POINTER(struct_ibv_pd), ctypes.POINTER(None), size_t, uint64_t, ctypes.c_uint32, ctypes.c_int32] +except AttributeError: + pass +# def ibv_reg_mr_iova(pd, addr, length, iova, access): # macro +# return __ibv_reg_mr_iova(pd,addr,length,iova,access,__builtin_constant_p(((access)&IB_UVERBS_ACCESS_OPTIONAL_RANGE)==0)) +try: + ibv_reg_dmabuf_mr = _libraries['libibverbs'].ibv_reg_dmabuf_mr + ibv_reg_dmabuf_mr.restype = ctypes.POINTER(struct_ibv_mr) + ibv_reg_dmabuf_mr.argtypes = [ctypes.POINTER(struct_ibv_pd), uint64_t, size_t, uint64_t, ctypes.c_int32, ctypes.c_int32] +except AttributeError: + pass + +# values for enumeration 'ibv_rereg_mr_err_code' +ibv_rereg_mr_err_code__enumvalues = { + -1: 'IBV_REREG_MR_ERR_INPUT', + -2: 'IBV_REREG_MR_ERR_DONT_FORK_NEW', + -3: 'IBV_REREG_MR_ERR_DO_FORK_OLD', + -4: 'IBV_REREG_MR_ERR_CMD', + -5: 'IBV_REREG_MR_ERR_CMD_AND_DO_FORK_NEW', +} +IBV_REREG_MR_ERR_INPUT = -1 +IBV_REREG_MR_ERR_DONT_FORK_NEW = -2 +IBV_REREG_MR_ERR_DO_FORK_OLD = -3 +IBV_REREG_MR_ERR_CMD = -4 +IBV_REREG_MR_ERR_CMD_AND_DO_FORK_NEW = -5 +ibv_rereg_mr_err_code = ctypes.c_int32 # enum +try: + ibv_rereg_mr = _libraries['libibverbs'].ibv_rereg_mr + ibv_rereg_mr.restype = ctypes.c_int32 + ibv_rereg_mr.argtypes = [ctypes.POINTER(struct_ibv_mr), ctypes.c_int32, ctypes.POINTER(struct_ibv_pd), ctypes.POINTER(None), size_t, ctypes.c_int32] +except AttributeError: + pass +try: + ibv_dereg_mr = _libraries['libibverbs'].ibv_dereg_mr + ibv_dereg_mr.restype = ctypes.c_int32 + ibv_dereg_mr.argtypes = [ctypes.POINTER(struct_ibv_mr)] +except AttributeError: + pass +try: + ibv_alloc_mw = _libraries['libibverbs'].ibv_alloc_mw + ibv_alloc_mw.restype = ctypes.POINTER(struct_ibv_mw) + ibv_alloc_mw.argtypes = [ctypes.POINTER(struct_ibv_pd), ibv_mw_type] +except AttributeError: + pass +try: + ibv_dealloc_mw = _libraries['libibverbs'].ibv_dealloc_mw + ibv_dealloc_mw.restype = ctypes.c_int32 + ibv_dealloc_mw.argtypes = [ctypes.POINTER(struct_ibv_mw)] +except AttributeError: + pass +try: + ibv_inc_rkey = _libraries['libibverbs'].ibv_inc_rkey + ibv_inc_rkey.restype = uint32_t + ibv_inc_rkey.argtypes = [uint32_t] +except AttributeError: + pass +try: + ibv_bind_mw = _libraries['libibverbs'].ibv_bind_mw + ibv_bind_mw.restype = ctypes.c_int32 + ibv_bind_mw.argtypes = [ctypes.POINTER(struct_ibv_qp), ctypes.POINTER(struct_ibv_mw), ctypes.POINTER(struct_ibv_mw_bind)] +except AttributeError: + pass +try: + ibv_create_comp_channel = _libraries['libibverbs'].ibv_create_comp_channel + ibv_create_comp_channel.restype = ctypes.POINTER(struct_ibv_comp_channel) + ibv_create_comp_channel.argtypes = [ctypes.POINTER(struct_ibv_context)] +except AttributeError: + pass +try: + ibv_destroy_comp_channel = _libraries['libibverbs'].ibv_destroy_comp_channel + ibv_destroy_comp_channel.restype = ctypes.c_int32 + ibv_destroy_comp_channel.argtypes = [ctypes.POINTER(struct_ibv_comp_channel)] +except AttributeError: + pass +try: + ibv_advise_mr = _libraries['libibverbs'].ibv_advise_mr + ibv_advise_mr.restype = ctypes.c_int32 + ibv_advise_mr.argtypes = [ctypes.POINTER(struct_ibv_pd), ib_uverbs_advise_mr_advice, uint32_t, ctypes.POINTER(struct_ibv_sge), uint32_t] +except AttributeError: + pass +try: + ibv_alloc_dm = _libraries['libibverbs'].ibv_alloc_dm + ibv_alloc_dm.restype = ctypes.POINTER(struct_ibv_dm) + ibv_alloc_dm.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_alloc_dm_attr)] +except AttributeError: + pass +try: + ibv_free_dm = _libraries['libibverbs'].ibv_free_dm + ibv_free_dm.restype = ctypes.c_int32 + ibv_free_dm.argtypes = [ctypes.POINTER(struct_ibv_dm)] +except AttributeError: + pass +try: + ibv_memcpy_to_dm = _libraries['libibverbs'].ibv_memcpy_to_dm + ibv_memcpy_to_dm.restype = ctypes.c_int32 + ibv_memcpy_to_dm.argtypes = [ctypes.POINTER(struct_ibv_dm), uint64_t, ctypes.POINTER(None), size_t] +except AttributeError: + pass +try: + ibv_memcpy_from_dm = _libraries['libibverbs'].ibv_memcpy_from_dm + ibv_memcpy_from_dm.restype = ctypes.c_int32 + ibv_memcpy_from_dm.argtypes = [ctypes.POINTER(None), ctypes.POINTER(struct_ibv_dm), uint64_t, size_t] +except AttributeError: + pass +try: + ibv_alloc_null_mr = _libraries['libibverbs'].ibv_alloc_null_mr + ibv_alloc_null_mr.restype = ctypes.POINTER(struct_ibv_mr) + ibv_alloc_null_mr.argtypes = [ctypes.POINTER(struct_ibv_pd)] +except AttributeError: + pass +try: + ibv_reg_dm_mr = _libraries['libibverbs'].ibv_reg_dm_mr + ibv_reg_dm_mr.restype = ctypes.POINTER(struct_ibv_mr) + ibv_reg_dm_mr.argtypes = [ctypes.POINTER(struct_ibv_pd), ctypes.POINTER(struct_ibv_dm), uint64_t, size_t, ctypes.c_uint32] +except AttributeError: + pass +try: + ibv_create_cq = _libraries['libibverbs'].ibv_create_cq + ibv_create_cq.restype = ctypes.POINTER(struct_ibv_cq) + ibv_create_cq.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.c_int32, ctypes.POINTER(None), ctypes.POINTER(struct_ibv_comp_channel), ctypes.c_int32] +except AttributeError: + pass +try: + ibv_create_cq_ex = _libraries['libibverbs'].ibv_create_cq_ex + ibv_create_cq_ex.restype = ctypes.POINTER(struct_ibv_cq_ex) + ibv_create_cq_ex.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_cq_init_attr_ex)] +except AttributeError: + pass +try: + ibv_resize_cq = _libraries['libibverbs'].ibv_resize_cq + ibv_resize_cq.restype = ctypes.c_int32 + ibv_resize_cq.argtypes = [ctypes.POINTER(struct_ibv_cq), ctypes.c_int32] +except AttributeError: + pass +try: + ibv_destroy_cq = _libraries['libibverbs'].ibv_destroy_cq + ibv_destroy_cq.restype = ctypes.c_int32 + ibv_destroy_cq.argtypes = [ctypes.POINTER(struct_ibv_cq)] +except AttributeError: + pass +try: + ibv_get_cq_event = _libraries['libibverbs'].ibv_get_cq_event + ibv_get_cq_event.restype = ctypes.c_int32 + ibv_get_cq_event.argtypes = [ctypes.POINTER(struct_ibv_comp_channel), ctypes.POINTER(ctypes.POINTER(struct_ibv_cq)), ctypes.POINTER(ctypes.POINTER(None))] +except AttributeError: + pass +try: + ibv_ack_cq_events = _libraries['libibverbs'].ibv_ack_cq_events + ibv_ack_cq_events.restype = None + ibv_ack_cq_events.argtypes = [ctypes.POINTER(struct_ibv_cq), ctypes.c_uint32] +except AttributeError: + pass +try: + ibv_poll_cq = _libraries['libibverbs'].ibv_poll_cq + ibv_poll_cq.restype = ctypes.c_int32 + ibv_poll_cq.argtypes = [ctypes.POINTER(struct_ibv_cq), ctypes.c_int32, ctypes.POINTER(struct_ibv_wc)] +except AttributeError: + pass +try: + ibv_req_notify_cq = _libraries['libibverbs'].ibv_req_notify_cq + ibv_req_notify_cq.restype = ctypes.c_int32 + ibv_req_notify_cq.argtypes = [ctypes.POINTER(struct_ibv_cq), ctypes.c_int32] +except AttributeError: + pass +try: + ibv_modify_cq = _libraries['libibverbs'].ibv_modify_cq + ibv_modify_cq.restype = ctypes.c_int32 + ibv_modify_cq.argtypes = [ctypes.POINTER(struct_ibv_cq), ctypes.POINTER(struct_ibv_modify_cq_attr)] +except AttributeError: + pass +try: + ibv_create_srq = _libraries['libibverbs'].ibv_create_srq + ibv_create_srq.restype = ctypes.POINTER(struct_ibv_srq) + ibv_create_srq.argtypes = [ctypes.POINTER(struct_ibv_pd), ctypes.POINTER(struct_ibv_srq_init_attr)] +except AttributeError: + pass +try: + ibv_create_srq_ex = _libraries['libibverbs'].ibv_create_srq_ex + ibv_create_srq_ex.restype = ctypes.POINTER(struct_ibv_srq) + ibv_create_srq_ex.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_srq_init_attr_ex)] +except AttributeError: + pass +try: + ibv_modify_srq = _libraries['libibverbs'].ibv_modify_srq + ibv_modify_srq.restype = ctypes.c_int32 + ibv_modify_srq.argtypes = [ctypes.POINTER(struct_ibv_srq), ctypes.POINTER(struct_ibv_srq_attr), ctypes.c_int32] +except AttributeError: + pass +try: + ibv_query_srq = _libraries['libibverbs'].ibv_query_srq + ibv_query_srq.restype = ctypes.c_int32 + ibv_query_srq.argtypes = [ctypes.POINTER(struct_ibv_srq), ctypes.POINTER(struct_ibv_srq_attr)] +except AttributeError: + pass +try: + ibv_get_srq_num = _libraries['libibverbs'].ibv_get_srq_num + ibv_get_srq_num.restype = ctypes.c_int32 + ibv_get_srq_num.argtypes = [ctypes.POINTER(struct_ibv_srq), ctypes.POINTER(ctypes.c_uint32)] +except AttributeError: + pass +try: + ibv_destroy_srq = _libraries['libibverbs'].ibv_destroy_srq + ibv_destroy_srq.restype = ctypes.c_int32 + ibv_destroy_srq.argtypes = [ctypes.POINTER(struct_ibv_srq)] +except AttributeError: + pass +try: + ibv_post_srq_recv = _libraries['libibverbs'].ibv_post_srq_recv + ibv_post_srq_recv.restype = ctypes.c_int32 + ibv_post_srq_recv.argtypes = [ctypes.POINTER(struct_ibv_srq), ctypes.POINTER(struct_ibv_recv_wr), ctypes.POINTER(ctypes.POINTER(struct_ibv_recv_wr))] +except AttributeError: + pass +try: + ibv_post_srq_ops = _libraries['libibverbs'].ibv_post_srq_ops + ibv_post_srq_ops.restype = ctypes.c_int32 + ibv_post_srq_ops.argtypes = [ctypes.POINTER(struct_ibv_srq), ctypes.POINTER(struct_ibv_ops_wr), ctypes.POINTER(ctypes.POINTER(struct_ibv_ops_wr))] +except AttributeError: + pass +try: + ibv_create_qp = _libraries['libibverbs'].ibv_create_qp + ibv_create_qp.restype = ctypes.POINTER(struct_ibv_qp) + ibv_create_qp.argtypes = [ctypes.POINTER(struct_ibv_pd), ctypes.POINTER(struct_ibv_qp_init_attr)] +except AttributeError: + pass +try: + ibv_create_qp_ex = _libraries['libibverbs'].ibv_create_qp_ex + ibv_create_qp_ex.restype = ctypes.POINTER(struct_ibv_qp) + ibv_create_qp_ex.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_qp_init_attr_ex)] +except AttributeError: + pass +try: + ibv_alloc_td = _libraries['libibverbs'].ibv_alloc_td + ibv_alloc_td.restype = ctypes.POINTER(struct_ibv_td) + ibv_alloc_td.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_td_init_attr)] +except AttributeError: + pass +try: + ibv_dealloc_td = _libraries['libibverbs'].ibv_dealloc_td + ibv_dealloc_td.restype = ctypes.c_int32 + ibv_dealloc_td.argtypes = [ctypes.POINTER(struct_ibv_td)] +except AttributeError: + pass +try: + ibv_alloc_parent_domain = _libraries['libibverbs'].ibv_alloc_parent_domain + ibv_alloc_parent_domain.restype = ctypes.POINTER(struct_ibv_pd) + ibv_alloc_parent_domain.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_parent_domain_init_attr)] +except AttributeError: + pass +try: + ibv_query_rt_values_ex = _libraries['libibverbs'].ibv_query_rt_values_ex + ibv_query_rt_values_ex.restype = ctypes.c_int32 + ibv_query_rt_values_ex.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_values_ex)] +except AttributeError: + pass +try: + ibv_query_device_ex = _libraries['libibverbs'].ibv_query_device_ex + ibv_query_device_ex.restype = ctypes.c_int32 + ibv_query_device_ex.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_query_device_ex_input), ctypes.POINTER(struct_ibv_device_attr_ex)] +except AttributeError: + pass +try: + ibv_open_qp = _libraries['libibverbs'].ibv_open_qp + ibv_open_qp.restype = ctypes.POINTER(struct_ibv_qp) + ibv_open_qp.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_qp_open_attr)] +except AttributeError: + pass +try: + ibv_modify_qp = _libraries['libibverbs'].ibv_modify_qp + ibv_modify_qp.restype = ctypes.c_int32 + ibv_modify_qp.argtypes = [ctypes.POINTER(struct_ibv_qp), ctypes.POINTER(struct_ibv_qp_attr), ctypes.c_int32] +except AttributeError: + pass +try: + ibv_modify_qp_rate_limit = _libraries['libibverbs'].ibv_modify_qp_rate_limit + ibv_modify_qp_rate_limit.restype = ctypes.c_int32 + ibv_modify_qp_rate_limit.argtypes = [ctypes.POINTER(struct_ibv_qp), ctypes.POINTER(struct_ibv_qp_rate_limit_attr)] +except AttributeError: + pass +try: + ibv_query_qp_data_in_order = _libraries['libibverbs'].ibv_query_qp_data_in_order + ibv_query_qp_data_in_order.restype = ctypes.c_int32 + ibv_query_qp_data_in_order.argtypes = [ctypes.POINTER(struct_ibv_qp), ibv_wr_opcode, uint32_t] +except AttributeError: + pass +try: + ibv_query_qp = _libraries['libibverbs'].ibv_query_qp + ibv_query_qp.restype = ctypes.c_int32 + ibv_query_qp.argtypes = [ctypes.POINTER(struct_ibv_qp), ctypes.POINTER(struct_ibv_qp_attr), ctypes.c_int32, ctypes.POINTER(struct_ibv_qp_init_attr)] +except AttributeError: + pass +try: + ibv_destroy_qp = _libraries['libibverbs'].ibv_destroy_qp + ibv_destroy_qp.restype = ctypes.c_int32 + ibv_destroy_qp.argtypes = [ctypes.POINTER(struct_ibv_qp)] +except AttributeError: + pass +try: + ibv_create_wq = _libraries['libibverbs'].ibv_create_wq + ibv_create_wq.restype = ctypes.POINTER(struct_ibv_wq) + ibv_create_wq.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_wq_init_attr)] +except AttributeError: + pass +try: + ibv_modify_wq = _libraries['libibverbs'].ibv_modify_wq + ibv_modify_wq.restype = ctypes.c_int32 + ibv_modify_wq.argtypes = [ctypes.POINTER(struct_ibv_wq), ctypes.POINTER(struct_ibv_wq_attr)] +except AttributeError: + pass +try: + ibv_destroy_wq = _libraries['libibverbs'].ibv_destroy_wq + ibv_destroy_wq.restype = ctypes.c_int32 + ibv_destroy_wq.argtypes = [ctypes.POINTER(struct_ibv_wq)] +except AttributeError: + pass +try: + ibv_create_rwq_ind_table = _libraries['libibverbs'].ibv_create_rwq_ind_table + ibv_create_rwq_ind_table.restype = ctypes.POINTER(struct_ibv_rwq_ind_table) + ibv_create_rwq_ind_table.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_rwq_ind_table_init_attr)] +except AttributeError: + pass +try: + ibv_destroy_rwq_ind_table = _libraries['libibverbs'].ibv_destroy_rwq_ind_table + ibv_destroy_rwq_ind_table.restype = ctypes.c_int32 + ibv_destroy_rwq_ind_table.argtypes = [ctypes.POINTER(struct_ibv_rwq_ind_table)] +except AttributeError: + pass +try: + ibv_post_send = _libraries['libibverbs'].ibv_post_send + ibv_post_send.restype = ctypes.c_int32 + ibv_post_send.argtypes = [ctypes.POINTER(struct_ibv_qp), ctypes.POINTER(struct_ibv_send_wr), ctypes.POINTER(ctypes.POINTER(struct_ibv_send_wr))] +except AttributeError: + pass +try: + ibv_post_recv = _libraries['libibverbs'].ibv_post_recv + ibv_post_recv.restype = ctypes.c_int32 + ibv_post_recv.argtypes = [ctypes.POINTER(struct_ibv_qp), ctypes.POINTER(struct_ibv_recv_wr), ctypes.POINTER(ctypes.POINTER(struct_ibv_recv_wr))] +except AttributeError: + pass +try: + ibv_create_ah = _libraries['libibverbs'].ibv_create_ah + ibv_create_ah.restype = ctypes.POINTER(struct_ibv_ah) + ibv_create_ah.argtypes = [ctypes.POINTER(struct_ibv_pd), ctypes.POINTER(struct_ibv_ah_attr)] +except AttributeError: + pass +try: + ibv_init_ah_from_wc = _libraries['libibverbs'].ibv_init_ah_from_wc + ibv_init_ah_from_wc.restype = ctypes.c_int32 + ibv_init_ah_from_wc.argtypes = [ctypes.POINTER(struct_ibv_context), uint8_t, ctypes.POINTER(struct_ibv_wc), ctypes.POINTER(struct_ibv_grh), ctypes.POINTER(struct_ibv_ah_attr)] +except AttributeError: + pass +try: + ibv_create_ah_from_wc = _libraries['libibverbs'].ibv_create_ah_from_wc + ibv_create_ah_from_wc.restype = ctypes.POINTER(struct_ibv_ah) + ibv_create_ah_from_wc.argtypes = [ctypes.POINTER(struct_ibv_pd), ctypes.POINTER(struct_ibv_wc), ctypes.POINTER(struct_ibv_grh), uint8_t] +except AttributeError: + pass +try: + ibv_destroy_ah = _libraries['libibverbs'].ibv_destroy_ah + ibv_destroy_ah.restype = ctypes.c_int32 + ibv_destroy_ah.argtypes = [ctypes.POINTER(struct_ibv_ah)] +except AttributeError: + pass +try: + ibv_attach_mcast = _libraries['libibverbs'].ibv_attach_mcast + ibv_attach_mcast.restype = ctypes.c_int32 + ibv_attach_mcast.argtypes = [ctypes.POINTER(struct_ibv_qp), ctypes.POINTER(union_ibv_gid), uint16_t] +except AttributeError: + pass +try: + ibv_detach_mcast = _libraries['libibverbs'].ibv_detach_mcast + ibv_detach_mcast.restype = ctypes.c_int32 + ibv_detach_mcast.argtypes = [ctypes.POINTER(struct_ibv_qp), ctypes.POINTER(union_ibv_gid), uint16_t] +except AttributeError: + pass +try: + ibv_fork_init = _libraries['libibverbs'].ibv_fork_init + ibv_fork_init.restype = ctypes.c_int32 + ibv_fork_init.argtypes = [] +except AttributeError: + pass +try: + ibv_is_fork_initialized = _libraries['libibverbs'].ibv_is_fork_initialized + ibv_is_fork_initialized.restype = ibv_fork_status + ibv_is_fork_initialized.argtypes = [] +except AttributeError: + pass +try: + ibv_node_type_str = _libraries['libibverbs'].ibv_node_type_str + ibv_node_type_str.restype = ctypes.POINTER(ctypes.c_char) + ibv_node_type_str.argtypes = [ibv_node_type] +except AttributeError: + pass +try: + ibv_port_state_str = _libraries['libibverbs'].ibv_port_state_str + ibv_port_state_str.restype = ctypes.POINTER(ctypes.c_char) + ibv_port_state_str.argtypes = [ibv_port_state] +except AttributeError: + pass +try: + ibv_event_type_str = _libraries['libibverbs'].ibv_event_type_str + ibv_event_type_str.restype = ctypes.POINTER(ctypes.c_char) + ibv_event_type_str.argtypes = [ibv_event_type] +except AttributeError: + pass +try: + ibv_resolve_eth_l2_from_gid = _libraries['libibverbs'].ibv_resolve_eth_l2_from_gid + ibv_resolve_eth_l2_from_gid.restype = ctypes.c_int32 + ibv_resolve_eth_l2_from_gid.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_ah_attr), ctypes.c_ubyte * 6, ctypes.POINTER(ctypes.c_uint16)] +except AttributeError: + pass +try: + ibv_is_qpt_supported = _libraries['libibverbs'].ibv_is_qpt_supported + ibv_is_qpt_supported.restype = ctypes.c_int32 + ibv_is_qpt_supported.argtypes = [uint32_t, ibv_qp_type] +except AttributeError: + pass +try: + ibv_create_counters = _libraries['libibverbs'].ibv_create_counters + ibv_create_counters.restype = ctypes.POINTER(struct_ibv_counters) + ibv_create_counters.argtypes = [ctypes.POINTER(struct_ibv_context), ctypes.POINTER(struct_ibv_counters_init_attr)] +except AttributeError: + pass +try: + ibv_destroy_counters = _libraries['libibverbs'].ibv_destroy_counters + ibv_destroy_counters.restype = ctypes.c_int32 + ibv_destroy_counters.argtypes = [ctypes.POINTER(struct_ibv_counters)] +except AttributeError: + pass +try: + ibv_attach_counters_point_flow = _libraries['libibverbs'].ibv_attach_counters_point_flow + ibv_attach_counters_point_flow.restype = ctypes.c_int32 + ibv_attach_counters_point_flow.argtypes = [ctypes.POINTER(struct_ibv_counters), ctypes.POINTER(struct_ibv_counter_attach_attr), ctypes.POINTER(struct_ibv_flow)] +except AttributeError: + pass +try: + ibv_read_counters = _libraries['libibverbs'].ibv_read_counters + ibv_read_counters.restype = ctypes.c_int32 + ibv_read_counters.argtypes = [ctypes.POINTER(struct_ibv_counters), ctypes.POINTER(ctypes.c_uint64), uint32_t, uint32_t] +except AttributeError: + pass +try: + ibv_flow_label_to_udp_sport = _libraries['libibverbs'].ibv_flow_label_to_udp_sport + ibv_flow_label_to_udp_sport.restype = uint16_t + ibv_flow_label_to_udp_sport.argtypes = [uint32_t] +except AttributeError: + pass +try: + ibv_set_ece = _libraries['libibverbs'].ibv_set_ece + ibv_set_ece.restype = ctypes.c_int32 + ibv_set_ece.argtypes = [ctypes.POINTER(struct_ibv_qp), ctypes.POINTER(struct_ibv_ece)] +except AttributeError: + pass +try: + ibv_query_ece = _libraries['libibverbs'].ibv_query_ece + ibv_query_ece.restype = ctypes.c_int32 + ibv_query_ece.argtypes = [ctypes.POINTER(struct_ibv_qp), ctypes.POINTER(struct_ibv_ece)] +except AttributeError: + pass +__all__ = \ + ['ETHERNET_LL_SIZE', 'IBV_ACCESS_FLUSH_GLOBAL', + 'IBV_ACCESS_FLUSH_PERSISTENT', 'IBV_ACCESS_HUGETLB', + 'IBV_ACCESS_LOCAL_WRITE', 'IBV_ACCESS_MW_BIND', + 'IBV_ACCESS_ON_DEMAND', 'IBV_ACCESS_OPTIONAL_FIRST', + 'IBV_ACCESS_OPTIONAL_RANGE', 'IBV_ACCESS_RELAXED_ORDERING', + 'IBV_ACCESS_REMOTE_ATOMIC', 'IBV_ACCESS_REMOTE_READ', + 'IBV_ACCESS_REMOTE_WRITE', 'IBV_ACCESS_ZERO_BASED', + 'IBV_ADVISE_MR_ADVICE_PREFETCH', + 'IBV_ADVISE_MR_ADVICE_PREFETCH_NO_FAULT', + 'IBV_ADVISE_MR_ADVICE_PREFETCH_WRITE', 'IBV_ADVISE_MR_FLAG_FLUSH', + 'IBV_ATOMIC_GLOB', 'IBV_ATOMIC_HCA', 'IBV_ATOMIC_NONE', + 'IBV_COUNTER_BYTES', 'IBV_COUNTER_PACKETS', + 'IBV_CQ_ATTR_MODERATE', 'IBV_CQ_ATTR_RESERVED', + 'IBV_CQ_INIT_ATTR_MASK_FLAGS', 'IBV_CQ_INIT_ATTR_MASK_PD', + 'IBV_CREATE_CQ_ATTR_IGNORE_OVERRUN', + 'IBV_CREATE_CQ_ATTR_SINGLE_THREADED', + 'IBV_CREATE_CQ_SUP_WC_FLAGS', 'IBV_CREATE_IND_TABLE_RESERVED', + 'IBV_DEVICE_AUTO_PATH_MIG', 'IBV_DEVICE_BAD_PKEY_CNTR', + 'IBV_DEVICE_BAD_QKEY_CNTR', 'IBV_DEVICE_CHANGE_PHY_PORT', + 'IBV_DEVICE_CURR_QP_STATE_MOD', 'IBV_DEVICE_INIT_TYPE', + 'IBV_DEVICE_MANAGED_FLOW_STEERING', + 'IBV_DEVICE_MEM_MGT_EXTENSIONS', 'IBV_DEVICE_MEM_WINDOW', + 'IBV_DEVICE_MEM_WINDOW_TYPE_2A', 'IBV_DEVICE_MEM_WINDOW_TYPE_2B', + 'IBV_DEVICE_N_NOTIFY_CQ', 'IBV_DEVICE_PCI_WRITE_END_PADDING', + 'IBV_DEVICE_PORT_ACTIVE_EVENT', 'IBV_DEVICE_RAW_IP_CSUM', + 'IBV_DEVICE_RAW_MULTI', 'IBV_DEVICE_RAW_SCATTER_FCS', + 'IBV_DEVICE_RC_IP_CSUM', 'IBV_DEVICE_RC_RNR_NAK_GEN', + 'IBV_DEVICE_RESIZE_MAX_WR', 'IBV_DEVICE_SHUTDOWN_PORT', + 'IBV_DEVICE_SRQ_RESIZE', 'IBV_DEVICE_SYS_IMAGE_GUID', + 'IBV_DEVICE_UD_AV_PORT_ENFORCE', 'IBV_DEVICE_UD_IP_CSUM', + 'IBV_DEVICE_XRC', 'IBV_DM_MASK_HANDLE', + 'IBV_EVENT_CLIENT_REREGISTER', 'IBV_EVENT_COMM_EST', + 'IBV_EVENT_CQ_ERR', 'IBV_EVENT_DEVICE_FATAL', + 'IBV_EVENT_GID_CHANGE', 'IBV_EVENT_LID_CHANGE', + 'IBV_EVENT_PATH_MIG', 'IBV_EVENT_PATH_MIG_ERR', + 'IBV_EVENT_PKEY_CHANGE', 'IBV_EVENT_PORT_ACTIVE', + 'IBV_EVENT_PORT_ERR', 'IBV_EVENT_QP_ACCESS_ERR', + 'IBV_EVENT_QP_FATAL', 'IBV_EVENT_QP_LAST_WQE_REACHED', + 'IBV_EVENT_QP_REQ_ERR', 'IBV_EVENT_SM_CHANGE', + 'IBV_EVENT_SQ_DRAINED', 'IBV_EVENT_SRQ_ERR', + 'IBV_EVENT_SRQ_LIMIT_REACHED', 'IBV_EVENT_WQ_FATAL', + 'IBV_FLOW_ACTION_ESP_FLAGS_DECRYPT', + 'IBV_FLOW_ACTION_ESP_FLAGS_ENCRYPT', + 'IBV_FLOW_ACTION_ESP_FLAGS_ESN_NEW_WINDOW', + 'IBV_FLOW_ACTION_ESP_FLAGS_FULL_OFFLOAD', + 'IBV_FLOW_ACTION_ESP_FLAGS_INLINE_CRYPTO', + 'IBV_FLOW_ACTION_ESP_FLAGS_TRANSPORT', + 'IBV_FLOW_ACTION_ESP_FLAGS_TUNNEL', + 'IBV_FLOW_ACTION_ESP_KEYMAT_AES_GCM', + 'IBV_FLOW_ACTION_ESP_MASK_ESN', 'IBV_FLOW_ACTION_ESP_REPLAY_BMP', + 'IBV_FLOW_ACTION_ESP_REPLAY_NONE', 'IBV_FLOW_ACTION_IV_ALGO_SEQ', + 'IBV_FLOW_ATTR_ALL_DEFAULT', 'IBV_FLOW_ATTR_FLAGS_DONT_TRAP', + 'IBV_FLOW_ATTR_FLAGS_EGRESS', 'IBV_FLOW_ATTR_MC_DEFAULT', + 'IBV_FLOW_ATTR_NORMAL', 'IBV_FLOW_ATTR_SNIFFER', + 'IBV_FLOW_SPEC_ACTION_COUNT', 'IBV_FLOW_SPEC_ACTION_DROP', + 'IBV_FLOW_SPEC_ACTION_HANDLE', 'IBV_FLOW_SPEC_ACTION_TAG', + 'IBV_FLOW_SPEC_ESP', 'IBV_FLOW_SPEC_ETH', 'IBV_FLOW_SPEC_GRE', + 'IBV_FLOW_SPEC_INNER', 'IBV_FLOW_SPEC_IPV4', + 'IBV_FLOW_SPEC_IPV4_EXT', 'IBV_FLOW_SPEC_IPV6', + 'IBV_FLOW_SPEC_MPLS', 'IBV_FLOW_SPEC_TCP', 'IBV_FLOW_SPEC_UDP', + 'IBV_FLOW_SPEC_VXLAN_TUNNEL', 'IBV_FLUSH_GLOBAL', 'IBV_FLUSH_MR', + 'IBV_FLUSH_PERSISTENT', 'IBV_FLUSH_RANGE', 'IBV_FORK_DISABLED', + 'IBV_FORK_ENABLED', 'IBV_FORK_UNNEEDED', 'IBV_GID_TYPE_IB', + 'IBV_GID_TYPE_ROCE_V1', 'IBV_GID_TYPE_ROCE_V2', + 'IBV_LINK_LAYER_ETHERNET', 'IBV_LINK_LAYER_INFINIBAND', + 'IBV_LINK_LAYER_UNSPECIFIED', 'IBV_MIG_ARMED', 'IBV_MIG_MIGRATED', + 'IBV_MIG_REARM', 'IBV_MTU_1024', 'IBV_MTU_2048', 'IBV_MTU_256', + 'IBV_MTU_4096', 'IBV_MTU_512', 'IBV_MW_TYPE_1', 'IBV_MW_TYPE_2', + 'IBV_NODE_CA', 'IBV_NODE_RNIC', 'IBV_NODE_ROUTER', + 'IBV_NODE_SWITCH', 'IBV_NODE_UNKNOWN', 'IBV_NODE_UNSPECIFIED', + 'IBV_NODE_USNIC', 'IBV_NODE_USNIC_UDP', 'IBV_ODP_SUPPORT', + 'IBV_ODP_SUPPORT_ATOMIC', 'IBV_ODP_SUPPORT_IMPLICIT', + 'IBV_ODP_SUPPORT_READ', 'IBV_ODP_SUPPORT_RECV', + 'IBV_ODP_SUPPORT_SEND', 'IBV_ODP_SUPPORT_SRQ_RECV', + 'IBV_ODP_SUPPORT_WRITE', 'IBV_OPS_SIGNALED', 'IBV_OPS_TM_SYNC', + 'IBV_PARENT_DOMAIN_INIT_ATTR_ALLOCATORS', + 'IBV_PARENT_DOMAIN_INIT_ATTR_PD_CONTEXT', + 'IBV_PCI_ATOMIC_OPERATION_16_BYTE_SIZE_SUP', + 'IBV_PCI_ATOMIC_OPERATION_4_BYTE_SIZE_SUP', + 'IBV_PCI_ATOMIC_OPERATION_8_BYTE_SIZE_SUP', 'IBV_PORT_ACTIVE', + 'IBV_PORT_ACTIVE_DEFER', 'IBV_PORT_ARMED', + 'IBV_PORT_AUTO_MIGR_SUP', 'IBV_PORT_BOOT_MGMT_SUP', + 'IBV_PORT_CAP_MASK2_SUP', 'IBV_PORT_CAP_MASK_NOTICE_SUP', + 'IBV_PORT_CLIENT_REG_SUP', 'IBV_PORT_CM_SUP', + 'IBV_PORT_DEVICE_MGMT_SUP', 'IBV_PORT_DOWN', + 'IBV_PORT_DR_NOTICE_SUP', 'IBV_PORT_EXTENDED_SPEEDS_SUP', + 'IBV_PORT_INFO_EXT_SUP', 'IBV_PORT_INIT', + 'IBV_PORT_IP_BASED_GIDS', 'IBV_PORT_LED_INFO_SUP', + 'IBV_PORT_LINK_LATENCY_SUP', 'IBV_PORT_LINK_SPEED_HDR_SUP', + 'IBV_PORT_LINK_SPEED_NDR_SUP', 'IBV_PORT_LINK_SPEED_XDR_SUP', + 'IBV_PORT_LINK_WIDTH_2X_SUP', 'IBV_PORT_MKEY_NVRAM', + 'IBV_PORT_NOP', 'IBV_PORT_NOTICE_SUP', 'IBV_PORT_OPT_IPD_SUP', + 'IBV_PORT_PKEY_NVRAM', 'IBV_PORT_PKEY_SW_EXT_PORT_TRAP_SUP', + 'IBV_PORT_REINIT_SUP', 'IBV_PORT_SET_NODE_DESC_SUP', + 'IBV_PORT_SL_MAP_SUP', 'IBV_PORT_SM', 'IBV_PORT_SNMP_TUNNEL_SUP', + 'IBV_PORT_SWITCH_PORT_STATE_TABLE_SUP', + 'IBV_PORT_SYS_IMAGE_GUID_SUP', 'IBV_PORT_TRAP_SUP', + 'IBV_PORT_VENDOR_CLASS_SUP', 'IBV_PORT_VIRT_SUP', + 'IBV_QPF_GRH_REQUIRED', 'IBV_QPS_ERR', 'IBV_QPS_INIT', + 'IBV_QPS_RESET', 'IBV_QPS_RTR', 'IBV_QPS_RTS', 'IBV_QPS_SQD', + 'IBV_QPS_SQE', 'IBV_QPS_UNKNOWN', 'IBV_QPT_DRIVER', + 'IBV_QPT_RAW_PACKET', 'IBV_QPT_RC', 'IBV_QPT_UC', 'IBV_QPT_UD', + 'IBV_QPT_XRC_RECV', 'IBV_QPT_XRC_SEND', 'IBV_QP_ACCESS_FLAGS', + 'IBV_QP_ALT_PATH', 'IBV_QP_AV', 'IBV_QP_CAP', + 'IBV_QP_CREATE_BLOCK_SELF_MCAST_LB', + 'IBV_QP_CREATE_CVLAN_STRIPPING', + 'IBV_QP_CREATE_PCI_WRITE_END_PADDING', + 'IBV_QP_CREATE_SCATTER_FCS', 'IBV_QP_CREATE_SOURCE_QPN', + 'IBV_QP_CUR_STATE', 'IBV_QP_DEST_QPN', + 'IBV_QP_EN_SQD_ASYNC_NOTIFY', 'IBV_QP_EX_WITH_ATOMIC_CMP_AND_SWP', + 'IBV_QP_EX_WITH_ATOMIC_FETCH_AND_ADD', + 'IBV_QP_EX_WITH_ATOMIC_WRITE', 'IBV_QP_EX_WITH_BIND_MW', + 'IBV_QP_EX_WITH_FLUSH', 'IBV_QP_EX_WITH_LOCAL_INV', + 'IBV_QP_EX_WITH_RDMA_READ', 'IBV_QP_EX_WITH_RDMA_WRITE', + 'IBV_QP_EX_WITH_RDMA_WRITE_WITH_IMM', 'IBV_QP_EX_WITH_SEND', + 'IBV_QP_EX_WITH_SEND_WITH_IMM', 'IBV_QP_EX_WITH_SEND_WITH_INV', + 'IBV_QP_EX_WITH_TSO', 'IBV_QP_INIT_ATTR_CREATE_FLAGS', + 'IBV_QP_INIT_ATTR_IND_TABLE', 'IBV_QP_INIT_ATTR_MAX_TSO_HEADER', + 'IBV_QP_INIT_ATTR_PD', 'IBV_QP_INIT_ATTR_RX_HASH', + 'IBV_QP_INIT_ATTR_SEND_OPS_FLAGS', 'IBV_QP_INIT_ATTR_XRCD', + 'IBV_QP_MAX_DEST_RD_ATOMIC', 'IBV_QP_MAX_QP_RD_ATOMIC', + 'IBV_QP_MIN_RNR_TIMER', 'IBV_QP_OPEN_ATTR_CONTEXT', + 'IBV_QP_OPEN_ATTR_NUM', 'IBV_QP_OPEN_ATTR_RESERVED', + 'IBV_QP_OPEN_ATTR_TYPE', 'IBV_QP_OPEN_ATTR_XRCD', + 'IBV_QP_PATH_MIG_STATE', 'IBV_QP_PATH_MTU', 'IBV_QP_PKEY_INDEX', + 'IBV_QP_PORT', 'IBV_QP_QKEY', 'IBV_QP_RATE_LIMIT', + 'IBV_QP_RETRY_CNT', 'IBV_QP_RNR_RETRY', 'IBV_QP_RQ_PSN', + 'IBV_QP_SQ_PSN', 'IBV_QP_STATE', 'IBV_QP_TIMEOUT', + 'IBV_QUERY_QP_DATA_IN_ORDER_ALIGNED_128_BYTES', + 'IBV_QUERY_QP_DATA_IN_ORDER_RETURN_CAPS', + 'IBV_QUERY_QP_DATA_IN_ORDER_WHOLE_MSG', 'IBV_RATE_100_GBPS', + 'IBV_RATE_10_GBPS', 'IBV_RATE_112_GBPS', 'IBV_RATE_1200_GBPS', + 'IBV_RATE_120_GBPS', 'IBV_RATE_14_GBPS', 'IBV_RATE_168_GBPS', + 'IBV_RATE_200_GBPS', 'IBV_RATE_20_GBPS', 'IBV_RATE_25_GBPS', + 'IBV_RATE_28_GBPS', 'IBV_RATE_2_5_GBPS', 'IBV_RATE_300_GBPS', + 'IBV_RATE_30_GBPS', 'IBV_RATE_400_GBPS', 'IBV_RATE_40_GBPS', + 'IBV_RATE_50_GBPS', 'IBV_RATE_56_GBPS', 'IBV_RATE_5_GBPS', + 'IBV_RATE_600_GBPS', 'IBV_RATE_60_GBPS', 'IBV_RATE_800_GBPS', + 'IBV_RATE_80_GBPS', 'IBV_RATE_MAX', + 'IBV_RAW_PACKET_CAP_CVLAN_STRIPPING', + 'IBV_RAW_PACKET_CAP_DELAY_DROP', 'IBV_RAW_PACKET_CAP_IP_CSUM', + 'IBV_RAW_PACKET_CAP_SCATTER_FCS', + 'IBV_READ_COUNTERS_ATTR_PREFER_CACHED', + 'IBV_REREG_MR_CHANGE_ACCESS', 'IBV_REREG_MR_CHANGE_PD', + 'IBV_REREG_MR_CHANGE_TRANSLATION', 'IBV_REREG_MR_ERR_CMD', + 'IBV_REREG_MR_ERR_CMD_AND_DO_FORK_NEW', + 'IBV_REREG_MR_ERR_DONT_FORK_NEW', 'IBV_REREG_MR_ERR_DO_FORK_OLD', + 'IBV_REREG_MR_ERR_INPUT', 'IBV_REREG_MR_FLAGS_SUPPORTED', + 'IBV_RX_HASH_DST_IPV4', 'IBV_RX_HASH_DST_IPV6', + 'IBV_RX_HASH_DST_PORT_TCP', 'IBV_RX_HASH_DST_PORT_UDP', + 'IBV_RX_HASH_FUNC_TOEPLITZ', 'IBV_RX_HASH_INNER', + 'IBV_RX_HASH_IPSEC_SPI', 'IBV_RX_HASH_SRC_IPV4', + 'IBV_RX_HASH_SRC_IPV6', 'IBV_RX_HASH_SRC_PORT_TCP', + 'IBV_RX_HASH_SRC_PORT_UDP', 'IBV_SEND_FENCE', 'IBV_SEND_INLINE', + 'IBV_SEND_IP_CSUM', 'IBV_SEND_SIGNALED', 'IBV_SEND_SOLICITED', + 'IBV_SRQT_BASIC', 'IBV_SRQT_TM', 'IBV_SRQT_XRC', + 'IBV_SRQ_INIT_ATTR_CQ', 'IBV_SRQ_INIT_ATTR_PD', + 'IBV_SRQ_INIT_ATTR_RESERVED', 'IBV_SRQ_INIT_ATTR_TM', + 'IBV_SRQ_INIT_ATTR_TYPE', 'IBV_SRQ_INIT_ATTR_XRCD', + 'IBV_SRQ_LIMIT', 'IBV_SRQ_MAX_WR', 'IBV_SYSFS_NAME_MAX', + 'IBV_SYSFS_PATH_MAX', 'IBV_TM_CAP_RC', 'IBV_TRANSPORT_IB', + 'IBV_TRANSPORT_IWARP', 'IBV_TRANSPORT_UNKNOWN', + 'IBV_TRANSPORT_UNSPECIFIED', 'IBV_TRANSPORT_USNIC', + 'IBV_TRANSPORT_USNIC_UDP', 'IBV_VALUES_MASK_RAW_CLOCK', + 'IBV_VALUES_MASK_RESERVED', 'IBV_WC_ATOMIC_WRITE', + 'IBV_WC_BAD_RESP_ERR', 'IBV_WC_BIND_MW', 'IBV_WC_COMP_SWAP', + 'IBV_WC_DRIVER1', 'IBV_WC_DRIVER2', 'IBV_WC_DRIVER3', + 'IBV_WC_EX_WITH_BYTE_LEN', 'IBV_WC_EX_WITH_COMPLETION_TIMESTAMP', + 'IBV_WC_EX_WITH_COMPLETION_TIMESTAMP_WALLCLOCK', + 'IBV_WC_EX_WITH_CVLAN', 'IBV_WC_EX_WITH_DLID_PATH_BITS', + 'IBV_WC_EX_WITH_FLOW_TAG', 'IBV_WC_EX_WITH_IMM', + 'IBV_WC_EX_WITH_QP_NUM', 'IBV_WC_EX_WITH_SL', + 'IBV_WC_EX_WITH_SLID', 'IBV_WC_EX_WITH_SRC_QP', + 'IBV_WC_EX_WITH_TM_INFO', 'IBV_WC_FATAL_ERR', 'IBV_WC_FETCH_ADD', + 'IBV_WC_FLUSH', 'IBV_WC_GENERAL_ERR', 'IBV_WC_GRH', + 'IBV_WC_INV_EECN_ERR', 'IBV_WC_INV_EEC_STATE_ERR', + 'IBV_WC_IP_CSUM_OK', 'IBV_WC_IP_CSUM_OK_SHIFT', + 'IBV_WC_LOCAL_INV', 'IBV_WC_LOC_ACCESS_ERR', + 'IBV_WC_LOC_EEC_OP_ERR', 'IBV_WC_LOC_LEN_ERR', + 'IBV_WC_LOC_PROT_ERR', 'IBV_WC_LOC_QP_OP_ERR', + 'IBV_WC_LOC_RDD_VIOL_ERR', 'IBV_WC_MW_BIND_ERR', + 'IBV_WC_RDMA_READ', 'IBV_WC_RDMA_WRITE', 'IBV_WC_RECV', + 'IBV_WC_RECV_RDMA_WITH_IMM', 'IBV_WC_REM_ABORT_ERR', + 'IBV_WC_REM_ACCESS_ERR', 'IBV_WC_REM_INV_RD_REQ_ERR', + 'IBV_WC_REM_INV_REQ_ERR', 'IBV_WC_REM_OP_ERR', + 'IBV_WC_RESP_TIMEOUT_ERR', 'IBV_WC_RETRY_EXC_ERR', + 'IBV_WC_RNR_RETRY_EXC_ERR', 'IBV_WC_SEND', + 'IBV_WC_STANDARD_FLAGS', 'IBV_WC_SUCCESS', 'IBV_WC_TM_ADD', + 'IBV_WC_TM_DATA_VALID', 'IBV_WC_TM_DEL', 'IBV_WC_TM_ERR', + 'IBV_WC_TM_MATCH', 'IBV_WC_TM_NO_TAG', 'IBV_WC_TM_RECV', + 'IBV_WC_TM_RNDV_INCOMPLETE', 'IBV_WC_TM_SYNC', + 'IBV_WC_TM_SYNC_REQ', 'IBV_WC_TSO', 'IBV_WC_WITH_IMM', + 'IBV_WC_WITH_INV', 'IBV_WC_WR_FLUSH_ERR', 'IBV_WQS_ERR', + 'IBV_WQS_RDY', 'IBV_WQS_RESET', 'IBV_WQS_UNKNOWN', 'IBV_WQT_RQ', + 'IBV_WQ_ATTR_CURR_STATE', 'IBV_WQ_ATTR_FLAGS', + 'IBV_WQ_ATTR_RESERVED', 'IBV_WQ_ATTR_STATE', + 'IBV_WQ_FLAGS_CVLAN_STRIPPING', 'IBV_WQ_FLAGS_DELAY_DROP', + 'IBV_WQ_FLAGS_PCI_WRITE_END_PADDING', 'IBV_WQ_FLAGS_RESERVED', + 'IBV_WQ_FLAGS_SCATTER_FCS', 'IBV_WQ_INIT_ATTR_FLAGS', + 'IBV_WQ_INIT_ATTR_RESERVED', 'IBV_WR_ATOMIC_CMP_AND_SWP', + 'IBV_WR_ATOMIC_FETCH_AND_ADD', 'IBV_WR_ATOMIC_WRITE', + 'IBV_WR_BIND_MW', 'IBV_WR_DRIVER1', 'IBV_WR_FLUSH', + 'IBV_WR_LOCAL_INV', 'IBV_WR_RDMA_READ', 'IBV_WR_RDMA_WRITE', + 'IBV_WR_RDMA_WRITE_WITH_IMM', 'IBV_WR_SEND', + 'IBV_WR_SEND_WITH_IMM', 'IBV_WR_SEND_WITH_INV', 'IBV_WR_TAG_ADD', + 'IBV_WR_TAG_DEL', 'IBV_WR_TAG_SYNC', 'IBV_WR_TSO', + 'IBV_XRCD_INIT_ATTR_FD', 'IBV_XRCD_INIT_ATTR_OFLAGS', + 'IBV_XRCD_INIT_ATTR_RESERVED', 'IB_DEVICE_NAME_MAX', + 'IB_FLUSH_GLOBAL', 'IB_FLUSH_MR', 'IB_FLUSH_PERSISTENT', + 'IB_FLUSH_RANGE', 'IB_GRH_FLOWLABEL_MASK', + 'IB_ROCE_UDP_ENCAP_VALID_PORT_MAX', + 'IB_ROCE_UDP_ENCAP_VALID_PORT_MIN', 'IB_USER_IOCTL_VERBS_H', + 'IB_USER_VERBS_ABI_VERSION', 'IB_USER_VERBS_CMD_ALLOC_MW', + 'IB_USER_VERBS_CMD_ALLOC_PD', 'IB_USER_VERBS_CMD_ATTACH_MCAST', + 'IB_USER_VERBS_CMD_BIND_MW', 'IB_USER_VERBS_CMD_CLOSE_XRCD', + 'IB_USER_VERBS_CMD_COMMAND_MASK', 'IB_USER_VERBS_CMD_CREATE_AH', + 'IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL', + 'IB_USER_VERBS_CMD_CREATE_CQ', 'IB_USER_VERBS_CMD_CREATE_QP', + 'IB_USER_VERBS_CMD_CREATE_SRQ', 'IB_USER_VERBS_CMD_CREATE_XSRQ', + 'IB_USER_VERBS_CMD_DEALLOC_MW', 'IB_USER_VERBS_CMD_DEALLOC_PD', + 'IB_USER_VERBS_CMD_DEREG_MR', 'IB_USER_VERBS_CMD_DESTROY_AH', + 'IB_USER_VERBS_CMD_DESTROY_CQ', 'IB_USER_VERBS_CMD_DESTROY_QP', + 'IB_USER_VERBS_CMD_DESTROY_SRQ', 'IB_USER_VERBS_CMD_DETACH_MCAST', + 'IB_USER_VERBS_CMD_FLAG_EXTENDED', + 'IB_USER_VERBS_CMD_GET_CONTEXT', 'IB_USER_VERBS_CMD_MODIFY_AH', + 'IB_USER_VERBS_CMD_MODIFY_QP', 'IB_USER_VERBS_CMD_MODIFY_SRQ', + 'IB_USER_VERBS_CMD_OPEN_QP', 'IB_USER_VERBS_CMD_OPEN_XRCD', + 'IB_USER_VERBS_CMD_PEEK_CQ', 'IB_USER_VERBS_CMD_POLL_CQ', + 'IB_USER_VERBS_CMD_POST_RECV', 'IB_USER_VERBS_CMD_POST_SEND', + 'IB_USER_VERBS_CMD_POST_SRQ_RECV', 'IB_USER_VERBS_CMD_QUERY_AH', + 'IB_USER_VERBS_CMD_QUERY_DEVICE', 'IB_USER_VERBS_CMD_QUERY_MR', + 'IB_USER_VERBS_CMD_QUERY_PORT', 'IB_USER_VERBS_CMD_QUERY_QP', + 'IB_USER_VERBS_CMD_QUERY_SRQ', 'IB_USER_VERBS_CMD_REG_MR', + 'IB_USER_VERBS_CMD_REG_SMR', 'IB_USER_VERBS_CMD_REQ_NOTIFY_CQ', + 'IB_USER_VERBS_CMD_REREG_MR', 'IB_USER_VERBS_CMD_RESIZE_CQ', + 'IB_USER_VERBS_CMD_THRESHOLD', 'IB_USER_VERBS_EX_CMD_CREATE_CQ', + 'IB_USER_VERBS_EX_CMD_CREATE_FLOW', + 'IB_USER_VERBS_EX_CMD_CREATE_QP', + 'IB_USER_VERBS_EX_CMD_CREATE_RWQ_IND_TBL', + 'IB_USER_VERBS_EX_CMD_CREATE_WQ', + 'IB_USER_VERBS_EX_CMD_DESTROY_FLOW', + 'IB_USER_VERBS_EX_CMD_DESTROY_RWQ_IND_TBL', + 'IB_USER_VERBS_EX_CMD_DESTROY_WQ', + 'IB_USER_VERBS_EX_CMD_MODIFY_CQ', + 'IB_USER_VERBS_EX_CMD_MODIFY_QP', + 'IB_USER_VERBS_EX_CMD_MODIFY_WQ', + 'IB_USER_VERBS_EX_CMD_QUERY_DEVICE', 'IB_USER_VERBS_H', + 'IB_USER_VERBS_MAX_LOG_IND_TBL_SIZE', + 'IB_UVERBS_ACCESS_FLUSH_GLOBAL', + 'IB_UVERBS_ACCESS_FLUSH_PERSISTENT', 'IB_UVERBS_ACCESS_HUGETLB', + 'IB_UVERBS_ACCESS_LOCAL_WRITE', 'IB_UVERBS_ACCESS_MW_BIND', + 'IB_UVERBS_ACCESS_ON_DEMAND', 'IB_UVERBS_ACCESS_OPTIONAL_FIRST', + 'IB_UVERBS_ACCESS_OPTIONAL_LAST', + 'IB_UVERBS_ACCESS_OPTIONAL_RANGE', + 'IB_UVERBS_ACCESS_RELAXED_ORDERING', + 'IB_UVERBS_ACCESS_REMOTE_ATOMIC', 'IB_UVERBS_ACCESS_REMOTE_READ', + 'IB_UVERBS_ACCESS_REMOTE_WRITE', 'IB_UVERBS_ACCESS_ZERO_BASED', + 'IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH', + 'IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_NO_FAULT', + 'IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_WRITE', + 'IB_UVERBS_ADVISE_MR_FLAG_FLUSH', + 'IB_UVERBS_CORE_SUPPORT_OPTIONAL_MR_ACCESS', + 'IB_UVERBS_CQ_FLAGS_IGNORE_OVERRUN', + 'IB_UVERBS_CQ_FLAGS_TIMESTAMP_COMPLETION', + 'IB_UVERBS_CREATE_QP_MASK_IND_TABLE', + 'IB_UVERBS_CREATE_QP_SUP_COMP_MASK', + 'IB_UVERBS_DEVICE_ATOMIC_WRITE', 'IB_UVERBS_DEVICE_AUTO_PATH_MIG', + 'IB_UVERBS_DEVICE_BAD_PKEY_CNTR', + 'IB_UVERBS_DEVICE_BAD_QKEY_CNTR', + 'IB_UVERBS_DEVICE_CHANGE_PHY_PORT', + 'IB_UVERBS_DEVICE_CURR_QP_STATE_MOD', + 'IB_UVERBS_DEVICE_FLUSH_GLOBAL', + 'IB_UVERBS_DEVICE_FLUSH_PERSISTENT', + 'IB_UVERBS_DEVICE_MANAGED_FLOW_STEERING', + 'IB_UVERBS_DEVICE_MEM_MGT_EXTENSIONS', + 'IB_UVERBS_DEVICE_MEM_WINDOW', + 'IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2A', + 'IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2B', + 'IB_UVERBS_DEVICE_N_NOTIFY_CQ', + 'IB_UVERBS_DEVICE_PCI_WRITE_END_PADDING', + 'IB_UVERBS_DEVICE_PORT_ACTIVE_EVENT', + 'IB_UVERBS_DEVICE_RAW_IP_CSUM', 'IB_UVERBS_DEVICE_RAW_MULTI', + 'IB_UVERBS_DEVICE_RAW_SCATTER_FCS', 'IB_UVERBS_DEVICE_RC_IP_CSUM', + 'IB_UVERBS_DEVICE_RC_RNR_NAK_GEN', + 'IB_UVERBS_DEVICE_RESIZE_MAX_WR', + 'IB_UVERBS_DEVICE_SHUTDOWN_PORT', 'IB_UVERBS_DEVICE_SRQ_RESIZE', + 'IB_UVERBS_DEVICE_SYS_IMAGE_GUID', + 'IB_UVERBS_DEVICE_UD_AV_PORT_ENFORCE', + 'IB_UVERBS_DEVICE_UD_IP_CSUM', 'IB_UVERBS_DEVICE_XRC', + 'IB_UVERBS_FLOW_ACTION_ESP_FLAGS_DECRYPT', + 'IB_UVERBS_FLOW_ACTION_ESP_FLAGS_ENCRYPT', + 'IB_UVERBS_FLOW_ACTION_ESP_FLAGS_ESN_NEW_WINDOW', + 'IB_UVERBS_FLOW_ACTION_ESP_FLAGS_FULL_OFFLOAD', + 'IB_UVERBS_FLOW_ACTION_ESP_FLAGS_INLINE_CRYPTO', + 'IB_UVERBS_FLOW_ACTION_ESP_FLAGS_TRANSPORT', + 'IB_UVERBS_FLOW_ACTION_ESP_FLAGS_TUNNEL', + 'IB_UVERBS_FLOW_ACTION_ESP_KEYMAT_AES_GCM', + 'IB_UVERBS_FLOW_ACTION_ESP_REPLAY_BMP', + 'IB_UVERBS_FLOW_ACTION_ESP_REPLAY_NONE', + 'IB_UVERBS_FLOW_ACTION_IV_ALGO_SEQ', 'IB_UVERBS_GID_TYPE_IB', + 'IB_UVERBS_GID_TYPE_ROCE_V1', 'IB_UVERBS_GID_TYPE_ROCE_V2', + 'IB_UVERBS_PCF_AUTO_MIGR_SUP', 'IB_UVERBS_PCF_BOOT_MGMT_SUP', + 'IB_UVERBS_PCF_CAP_MASK_NOTICE_SUP', + 'IB_UVERBS_PCF_CLIENT_REG_SUP', 'IB_UVERBS_PCF_CM_SUP', + 'IB_UVERBS_PCF_DEVICE_MGMT_SUP', 'IB_UVERBS_PCF_DR_NOTICE_SUP', + 'IB_UVERBS_PCF_EXTENDED_SPEEDS_SUP', + 'IB_UVERBS_PCF_HIERARCHY_INFO_SUP', 'IB_UVERBS_PCF_IP_BASED_GIDS', + 'IB_UVERBS_PCF_LED_INFO_SUP', 'IB_UVERBS_PCF_LINK_LATENCY_SUP', + 'IB_UVERBS_PCF_LINK_SPEED_WIDTH_TABLE_SUP', + 'IB_UVERBS_PCF_MCAST_FDB_TOP_SUP', + 'IB_UVERBS_PCF_MCAST_PKEY_TRAP_SUPPRESSION_SUP', + 'IB_UVERBS_PCF_MKEY_NVRAM', 'IB_UVERBS_PCF_NOTICE_SUP', + 'IB_UVERBS_PCF_OPT_IPD_SUP', 'IB_UVERBS_PCF_PKEY_NVRAM', + 'IB_UVERBS_PCF_PKEY_SW_EXT_PORT_TRAP_SUP', + 'IB_UVERBS_PCF_REINIT_SUP', 'IB_UVERBS_PCF_SL_MAP_SUP', + 'IB_UVERBS_PCF_SM', 'IB_UVERBS_PCF_SM_DISABLED', + 'IB_UVERBS_PCF_SNMP_TUNNEL_SUP', + 'IB_UVERBS_PCF_SYS_IMAGE_GUID_SUP', 'IB_UVERBS_PCF_TRAP_SUP', + 'IB_UVERBS_PCF_VENDOR_CLASS_SUP', + 'IB_UVERBS_PCF_VENDOR_SPECIFIC_MADS_TABLE_SUP', + 'IB_UVERBS_QPF_GRH_REQUIRED', 'IB_UVERBS_QPT_DRIVER', + 'IB_UVERBS_QPT_RAW_PACKET', 'IB_UVERBS_QPT_RC', + 'IB_UVERBS_QPT_UC', 'IB_UVERBS_QPT_UD', 'IB_UVERBS_QPT_XRC_INI', + 'IB_UVERBS_QPT_XRC_TGT', + 'IB_UVERBS_QP_CREATE_BLOCK_MULTICAST_LOOPBACK', + 'IB_UVERBS_QP_CREATE_CVLAN_STRIPPING', + 'IB_UVERBS_QP_CREATE_PCI_WRITE_END_PADDING', + 'IB_UVERBS_QP_CREATE_SCATTER_FCS', + 'IB_UVERBS_QP_CREATE_SQ_SIG_ALL', + 'IB_UVERBS_RAW_PACKET_CAP_CVLAN_STRIPPING', + 'IB_UVERBS_RAW_PACKET_CAP_DELAY_DROP', + 'IB_UVERBS_RAW_PACKET_CAP_IP_CSUM', + 'IB_UVERBS_RAW_PACKET_CAP_SCATTER_FCS', + 'IB_UVERBS_READ_COUNTERS_PREFER_CACHED', 'IB_UVERBS_SRQT_BASIC', + 'IB_UVERBS_SRQT_TM', 'IB_UVERBS_SRQT_XRC', + 'IB_UVERBS_WC_ATOMIC_WRITE', 'IB_UVERBS_WC_BIND_MW', + 'IB_UVERBS_WC_COMP_SWAP', 'IB_UVERBS_WC_FETCH_ADD', + 'IB_UVERBS_WC_FLUSH', 'IB_UVERBS_WC_LOCAL_INV', + 'IB_UVERBS_WC_RDMA_READ', 'IB_UVERBS_WC_RDMA_WRITE', + 'IB_UVERBS_WC_SEND', 'IB_UVERBS_WC_TSO', 'IB_UVERBS_WQT_RQ', + 'IB_UVERBS_WQ_FLAGS_CVLAN_STRIPPING', + 'IB_UVERBS_WQ_FLAGS_DELAY_DROP', + 'IB_UVERBS_WQ_FLAGS_PCI_WRITE_END_PADDING', + 'IB_UVERBS_WQ_FLAGS_SCATTER_FCS', + 'IB_UVERBS_WR_ATOMIC_CMP_AND_SWP', + 'IB_UVERBS_WR_ATOMIC_FETCH_AND_ADD', 'IB_UVERBS_WR_ATOMIC_WRITE', + 'IB_UVERBS_WR_BIND_MW', 'IB_UVERBS_WR_FLUSH', + 'IB_UVERBS_WR_LOCAL_INV', + 'IB_UVERBS_WR_MASKED_ATOMIC_CMP_AND_SWP', + 'IB_UVERBS_WR_MASKED_ATOMIC_FETCH_AND_ADD', + 'IB_UVERBS_WR_RDMA_READ', 'IB_UVERBS_WR_RDMA_READ_WITH_INV', + 'IB_UVERBS_WR_RDMA_WRITE', 'IB_UVERBS_WR_RDMA_WRITE_WITH_IMM', + 'IB_UVERBS_WR_SEND', 'IB_UVERBS_WR_SEND_WITH_IMM', + 'IB_UVERBS_WR_SEND_WITH_INV', 'IB_UVERBS_WR_TSO', + 'INFINIBAND_VERBS_H', 'RDMA_DRIVER_BNXT_RE', 'RDMA_DRIVER_CXGB3', + 'RDMA_DRIVER_CXGB4', 'RDMA_DRIVER_EFA', 'RDMA_DRIVER_ERDMA', + 'RDMA_DRIVER_HFI1', 'RDMA_DRIVER_HNS', 'RDMA_DRIVER_I40IW', + 'RDMA_DRIVER_IRDMA', 'RDMA_DRIVER_MANA', 'RDMA_DRIVER_MLX4', + 'RDMA_DRIVER_MLX5', 'RDMA_DRIVER_MTHCA', 'RDMA_DRIVER_NES', + 'RDMA_DRIVER_OCRDMA', 'RDMA_DRIVER_QEDR', 'RDMA_DRIVER_QIB', + 'RDMA_DRIVER_RXE', 'RDMA_DRIVER_SIW', 'RDMA_DRIVER_UNKNOWN', + 'RDMA_DRIVER_USNIC', 'RDMA_DRIVER_VMW_PVRDMA', 'VERBS_API_H', + '___ibv_query_port', '__attribute_const', '__be16', '__be32', + '__be64', '__ibv_reg_mr', '__ibv_reg_mr_iova', + '_ibv_query_gid_ex', '_ibv_query_gid_table', + 'c__Ea_IBV_CREATE_CQ_SUP_WC_FLAGS', + 'c__Ea_IBV_LINK_LAYER_UNSPECIFIED', 'c__Ea_IBV_SYSFS_NAME_MAX', + 'c__Ea_IBV_WC_IP_CSUM_OK_SHIFT', 'c__Ea_IBV_WC_STANDARD_FLAGS', + 'c__Ea_IB_USER_VERBS_EX_CMD_QUERY_DEVICE', + 'c__Ea_IB_UVERBS_CREATE_QP_SUP_COMP_MASK', 'ib_placement_type', + 'ib_selectivity_level', 'ib_uverbs_access_flags', + 'ib_uverbs_advise_mr_advice', 'ib_uverbs_advise_mr_flag', + 'ib_uverbs_core_support', 'ib_uverbs_create_qp_mask', + 'ib_uverbs_device_cap_flags', 'ib_uverbs_ex_create_cq_flags', + 'ib_uverbs_flow_action_esp_flags', + 'ib_uverbs_flow_action_esp_keymat', + 'ib_uverbs_flow_action_esp_keymat_aes_gcm_iv_algo', + 'ib_uverbs_flow_action_esp_replay', 'ib_uverbs_gid_type', + 'ib_uverbs_qp_create_flags', 'ib_uverbs_qp_type', + 'ib_uverbs_query_port_cap_flags', 'ib_uverbs_query_port_flags', + 'ib_uverbs_raw_packet_caps', 'ib_uverbs_read_counters_flags', + 'ib_uverbs_srq_type', 'ib_uverbs_wc_opcode', 'ib_uverbs_wq_flags', + 'ib_uverbs_wq_type', 'ib_uverbs_wr_opcode', + 'ib_uverbs_write_cmds', 'ibv_access_flags', 'ibv_ack_async_event', + 'ibv_ack_cq_events', 'ibv_advise_mr', 'ibv_advise_mr_advice', + 'ibv_alloc_dm', 'ibv_alloc_mw', 'ibv_alloc_null_mr', + 'ibv_alloc_parent_domain', 'ibv_alloc_pd', 'ibv_alloc_td', + 'ibv_atomic_cap', 'ibv_attach_counters_point_flow', + 'ibv_attach_mcast', 'ibv_bind_mw', 'ibv_close_device', + 'ibv_close_xrcd', 'ibv_counter_description', 'ibv_cq_attr_mask', + 'ibv_cq_ex_to_cq', 'ibv_cq_init_attr_mask', 'ibv_create_ah', + 'ibv_create_ah_from_wc', 'ibv_create_comp_channel', + 'ibv_create_counters', 'ibv_create_cq', + 'ibv_create_cq_attr_flags', 'ibv_create_cq_ex', + 'ibv_create_cq_wc_flags', 'ibv_create_flow', + 'ibv_create_flow_action_esp', 'ibv_create_qp', 'ibv_create_qp_ex', + 'ibv_create_rwq_ind_table', 'ibv_create_srq', 'ibv_create_srq_ex', + 'ibv_create_wq', 'ibv_dealloc_mw', 'ibv_dealloc_pd', + 'ibv_dealloc_td', 'ibv_dereg_mr', 'ibv_destroy_ah', + 'ibv_destroy_comp_channel', 'ibv_destroy_counters', + 'ibv_destroy_cq', 'ibv_destroy_flow', 'ibv_destroy_flow_action', + 'ibv_destroy_qp', 'ibv_destroy_rwq_ind_table', 'ibv_destroy_srq', + 'ibv_destroy_wq', 'ibv_detach_mcast', 'ibv_device_cap_flags', + 'ibv_dm_mask', 'ibv_end_poll', 'ibv_event_type', + 'ibv_event_type_str', 'ibv_flow_action_esp_flags', + 'ibv_flow_action_esp_keymat', + 'ibv_flow_action_esp_keymat_aes_gcm_iv_algo', + 'ibv_flow_action_esp_mask', 'ibv_flow_action_esp_replay', + 'ibv_flow_attr_type', 'ibv_flow_flags', + 'ibv_flow_label_to_udp_sport', 'ibv_flow_spec_type', + 'ibv_fork_init', 'ibv_fork_status', 'ibv_free_device_list', + 'ibv_free_dm', 'ibv_get_async_event', 'ibv_get_cq_event', + 'ibv_get_device_guid', 'ibv_get_device_index', + 'ibv_get_device_list', 'ibv_get_device_name', + 'ibv_get_pkey_index', 'ibv_get_srq_num', 'ibv_gid_type', + 'ibv_import_device', 'ibv_import_dm', 'ibv_import_mr', + 'ibv_import_pd', 'ibv_inc_rkey', 'ibv_ind_table_init_attr_mask', + 'ibv_init_ah_from_wc', 'ibv_is_fork_initialized', + 'ibv_is_qpt_supported', 'ibv_memcpy_from_dm', 'ibv_memcpy_to_dm', + 'ibv_mig_state', 'ibv_modify_cq', 'ibv_modify_flow_action_esp', + 'ibv_modify_qp', 'ibv_modify_qp_rate_limit', 'ibv_modify_srq', + 'ibv_modify_wq', 'ibv_mtu', 'ibv_mw_type', 'ibv_next_poll', + 'ibv_node_type', 'ibv_node_type_str', 'ibv_odp_general_caps', + 'ibv_odp_transport_cap_bits', 'ibv_open_device', 'ibv_open_qp', + 'ibv_open_xrcd', 'ibv_ops_flags', 'ibv_ops_wr_opcode', + 'ibv_parent_domain_init_attr_mask', 'ibv_pci_atomic_op_size', + 'ibv_placement_type', 'ibv_poll_cq', 'ibv_port_cap_flags', + 'ibv_port_cap_flags2', 'ibv_port_state', 'ibv_port_state_str', + 'ibv_post_recv', 'ibv_post_send', 'ibv_post_srq_ops', + 'ibv_post_srq_recv', 'ibv_post_wq_recv', 'ibv_qp_attr_mask', + 'ibv_qp_create_flags', 'ibv_qp_create_send_ops_flags', + 'ibv_qp_init_attr_mask', 'ibv_qp_open_attr_mask', 'ibv_qp_state', + 'ibv_qp_to_qp_ex', 'ibv_qp_type', 'ibv_query_device', + 'ibv_query_device_ex', 'ibv_query_ece', 'ibv_query_gid', + 'ibv_query_gid_ex', 'ibv_query_gid_table', 'ibv_query_pkey', + 'ibv_query_qp', 'ibv_query_qp_data_in_order', + 'ibv_query_qp_data_in_order_caps', + 'ibv_query_qp_data_in_order_flags', 'ibv_query_rt_values_ex', + 'ibv_query_srq', 'ibv_rate', 'ibv_rate_to_mbps', + 'ibv_rate_to_mult', 'ibv_raw_packet_caps', 'ibv_read_counters', + 'ibv_read_counters_flags', 'ibv_reg_dm_mr', 'ibv_reg_dmabuf_mr', + 'ibv_reg_mr_iova2', 'ibv_req_notify_cq', 'ibv_rereg_mr', + 'ibv_rereg_mr_err_code', 'ibv_rereg_mr_flags', 'ibv_resize_cq', + 'ibv_resolve_eth_l2_from_gid', 'ibv_rx_hash_fields', + 'ibv_rx_hash_function_flags', 'ibv_selectivity_level', + 'ibv_send_flags', 'ibv_set_ece', 'ibv_srq_attr_mask', + 'ibv_srq_init_attr_mask', 'ibv_srq_type', 'ibv_start_poll', + 'ibv_tm_cap_flags', 'ibv_transport_type', 'ibv_unimport_dm', + 'ibv_unimport_mr', 'ibv_unimport_pd', 'ibv_values_mask', + 'ibv_wc_flags', 'ibv_wc_opcode', 'ibv_wc_read_byte_len', + 'ibv_wc_read_completion_ts', + 'ibv_wc_read_completion_wallclock_ns', 'ibv_wc_read_cvlan', + 'ibv_wc_read_dlid_path_bits', 'ibv_wc_read_flow_tag', + 'ibv_wc_read_imm_data', 'ibv_wc_read_invalidated_rkey', + 'ibv_wc_read_opcode', 'ibv_wc_read_qp_num', 'ibv_wc_read_sl', + 'ibv_wc_read_slid', 'ibv_wc_read_src_qp', 'ibv_wc_read_tm_info', + 'ibv_wc_read_vendor_err', 'ibv_wc_read_wc_flags', 'ibv_wc_status', + 'ibv_wc_status_str', 'ibv_wq_attr_mask', 'ibv_wq_flags', + 'ibv_wq_init_attr_mask', 'ibv_wq_state', 'ibv_wq_type', + 'ibv_wr_abort', 'ibv_wr_atomic_cmp_swp', + 'ibv_wr_atomic_fetch_add', 'ibv_wr_atomic_write', + 'ibv_wr_bind_mw', 'ibv_wr_complete', 'ibv_wr_flush', + 'ibv_wr_local_inv', 'ibv_wr_opcode', 'ibv_wr_opcode_str', + 'ibv_wr_rdma_read', 'ibv_wr_rdma_write', 'ibv_wr_rdma_write_imm', + 'ibv_wr_send', 'ibv_wr_send_imm', 'ibv_wr_send_inv', + 'ibv_wr_send_tso', 'ibv_wr_set_inline_data', + 'ibv_wr_set_inline_data_list', 'ibv_wr_set_sge', + 'ibv_wr_set_sge_list', 'ibv_wr_set_ud_addr', + 'ibv_wr_set_xrc_srqn', 'ibv_wr_start', 'ibv_xrcd_init_attr_mask', + 'mbps_to_ibv_rate', 'mult_to_ibv_rate', 'rdma_driver_id', + 'size_t', 'ssize_t', 'struct___pthread_cond_s', + 'struct___pthread_internal_list', 'struct___pthread_mutex_s', + 'struct__compat_ibv_port_attr', 'struct__ibv_device_ops', + 'struct_c__UA___atomic_wide_counter___value32', + 'struct_ib_uverbs_ah_attr', 'struct_ib_uverbs_alloc_mw', + 'struct_ib_uverbs_alloc_mw_resp', 'struct_ib_uverbs_alloc_pd', + 'struct_ib_uverbs_alloc_pd_resp', + 'struct_ib_uverbs_async_event_desc', + 'struct_ib_uverbs_attach_mcast', 'struct_ib_uverbs_close_xrcd', + 'struct_ib_uverbs_cmd_hdr', 'struct_ib_uverbs_comp_event_desc', + 'struct_ib_uverbs_cq_moderation', + 'struct_ib_uverbs_cq_moderation_caps', + 'struct_ib_uverbs_create_ah', 'struct_ib_uverbs_create_ah_resp', + 'struct_ib_uverbs_create_comp_channel', + 'struct_ib_uverbs_create_comp_channel_resp', + 'struct_ib_uverbs_create_cq', 'struct_ib_uverbs_create_cq_resp', + 'struct_ib_uverbs_create_flow', + 'struct_ib_uverbs_create_flow_resp', 'struct_ib_uverbs_create_qp', + 'struct_ib_uverbs_create_qp_resp', 'struct_ib_uverbs_create_srq', + 'struct_ib_uverbs_create_srq_resp', + 'struct_ib_uverbs_create_xsrq', 'struct_ib_uverbs_dealloc_mw', + 'struct_ib_uverbs_dealloc_pd', 'struct_ib_uverbs_dereg_mr', + 'struct_ib_uverbs_destroy_ah', 'struct_ib_uverbs_destroy_cq', + 'struct_ib_uverbs_destroy_cq_resp', + 'struct_ib_uverbs_destroy_flow', 'struct_ib_uverbs_destroy_qp', + 'struct_ib_uverbs_destroy_qp_resp', + 'struct_ib_uverbs_destroy_srq', + 'struct_ib_uverbs_destroy_srq_resp', + 'struct_ib_uverbs_detach_mcast', 'struct_ib_uverbs_ex_cmd_hdr', + 'struct_ib_uverbs_ex_create_cq', + 'struct_ib_uverbs_ex_create_cq_resp', + 'struct_ib_uverbs_ex_create_qp', + 'struct_ib_uverbs_ex_create_qp_resp', + 'struct_ib_uverbs_ex_create_rwq_ind_table', + 'struct_ib_uverbs_ex_create_rwq_ind_table_resp', + 'struct_ib_uverbs_ex_create_wq', + 'struct_ib_uverbs_ex_create_wq_resp', + 'struct_ib_uverbs_ex_destroy_rwq_ind_table', + 'struct_ib_uverbs_ex_destroy_wq', + 'struct_ib_uverbs_ex_destroy_wq_resp', + 'struct_ib_uverbs_ex_modify_cq', 'struct_ib_uverbs_ex_modify_qp', + 'struct_ib_uverbs_ex_modify_qp_resp', + 'struct_ib_uverbs_ex_modify_wq', + 'struct_ib_uverbs_ex_query_device', + 'struct_ib_uverbs_ex_query_device_resp', + 'struct_ib_uverbs_flow_action_esp', + 'struct_ib_uverbs_flow_action_esp_encap', + 'struct_ib_uverbs_flow_action_esp_keymat_aes_gcm', + 'struct_ib_uverbs_flow_action_esp_replay_bmp', + 'struct_ib_uverbs_flow_attr', 'struct_ib_uverbs_flow_eth_filter', + 'struct_ib_uverbs_flow_gre_filter', + 'struct_ib_uverbs_flow_ipv4_filter', + 'struct_ib_uverbs_flow_ipv6_filter', + 'struct_ib_uverbs_flow_mpls_filter', + 'struct_ib_uverbs_flow_spec_action_count', + 'struct_ib_uverbs_flow_spec_action_count_0_0', + 'struct_ib_uverbs_flow_spec_action_drop', + 'struct_ib_uverbs_flow_spec_action_drop_0_0', + 'struct_ib_uverbs_flow_spec_action_handle', + 'struct_ib_uverbs_flow_spec_action_handle_0_0', + 'struct_ib_uverbs_flow_spec_action_tag', + 'struct_ib_uverbs_flow_spec_action_tag_0_0', + 'struct_ib_uverbs_flow_spec_esp', + 'struct_ib_uverbs_flow_spec_esp_0_0', + 'struct_ib_uverbs_flow_spec_esp_filter', + 'struct_ib_uverbs_flow_spec_eth', + 'struct_ib_uverbs_flow_spec_eth_0_0', + 'struct_ib_uverbs_flow_spec_gre', + 'struct_ib_uverbs_flow_spec_gre_0_0', + 'struct_ib_uverbs_flow_spec_hdr', + 'struct_ib_uverbs_flow_spec_ipv4', + 'struct_ib_uverbs_flow_spec_ipv4_0_0', + 'struct_ib_uverbs_flow_spec_ipv6', + 'struct_ib_uverbs_flow_spec_ipv6_0_0', + 'struct_ib_uverbs_flow_spec_mpls', + 'struct_ib_uverbs_flow_spec_mpls_0_0', + 'struct_ib_uverbs_flow_spec_tcp_udp', + 'struct_ib_uverbs_flow_spec_tcp_udp_0_0', + 'struct_ib_uverbs_flow_spec_tunnel', + 'struct_ib_uverbs_flow_spec_tunnel_0_0', + 'struct_ib_uverbs_flow_tcp_udp_filter', + 'struct_ib_uverbs_flow_tunnel_filter', + 'struct_ib_uverbs_get_context', + 'struct_ib_uverbs_get_context_resp', 'struct_ib_uverbs_gid_entry', + 'struct_ib_uverbs_global_route', 'struct_ib_uverbs_modify_qp', + 'struct_ib_uverbs_modify_srq', 'struct_ib_uverbs_odp_caps', + 'struct_ib_uverbs_odp_caps_per_transport_caps', + 'struct_ib_uverbs_open_qp', 'struct_ib_uverbs_open_xrcd', + 'struct_ib_uverbs_open_xrcd_resp', 'struct_ib_uverbs_poll_cq', + 'struct_ib_uverbs_poll_cq_resp', 'struct_ib_uverbs_post_recv', + 'struct_ib_uverbs_post_recv_resp', 'struct_ib_uverbs_post_send', + 'struct_ib_uverbs_post_send_resp', + 'struct_ib_uverbs_post_srq_recv', + 'struct_ib_uverbs_post_srq_recv_resp', 'struct_ib_uverbs_qp_attr', + 'struct_ib_uverbs_qp_cap', 'struct_ib_uverbs_qp_dest', + 'struct_ib_uverbs_query_device', + 'struct_ib_uverbs_query_device_resp', + 'struct_ib_uverbs_query_port', 'struct_ib_uverbs_query_port_resp', + 'struct_ib_uverbs_query_port_resp_ex', + 'struct_ib_uverbs_query_qp', 'struct_ib_uverbs_query_qp_resp', + 'struct_ib_uverbs_query_srq', 'struct_ib_uverbs_query_srq_resp', + 'struct_ib_uverbs_recv_wr', 'struct_ib_uverbs_reg_mr', + 'struct_ib_uverbs_reg_mr_resp', 'struct_ib_uverbs_req_notify_cq', + 'struct_ib_uverbs_rereg_mr', 'struct_ib_uverbs_rereg_mr_resp', + 'struct_ib_uverbs_resize_cq', 'struct_ib_uverbs_resize_cq_resp', + 'struct_ib_uverbs_rss_caps', 'struct_ib_uverbs_send_wr', + 'struct_ib_uverbs_send_wr_1_atomic', + 'struct_ib_uverbs_send_wr_1_rdma', + 'struct_ib_uverbs_send_wr_1_ud', 'struct_ib_uverbs_sge', + 'struct_ib_uverbs_tm_caps', 'struct_ib_uverbs_wc', + 'struct_ibv_ah', 'struct_ibv_ah_attr', 'struct_ibv_alloc_dm_attr', + 'struct_ibv_async_event', 'struct_ibv_comp_channel', + 'struct_ibv_context', 'struct_ibv_context_ops', + 'struct_ibv_counter_attach_attr', 'struct_ibv_counters', + 'struct_ibv_counters_init_attr', 'struct_ibv_cq', + 'struct_ibv_cq_ex', 'struct_ibv_cq_init_attr_ex', + 'struct_ibv_cq_moderation_caps', 'struct_ibv_data_buf', + 'struct_ibv_device', 'struct_ibv_device_attr', + 'struct_ibv_device_attr_ex', 'struct_ibv_dm', 'struct_ibv_ece', + 'struct_ibv_flow', 'struct_ibv_flow_action', + 'struct_ibv_flow_action_esp_attr', 'struct_ibv_flow_attr', + 'struct_ibv_flow_esp_filter', 'struct_ibv_flow_eth_filter', + 'struct_ibv_flow_gre_filter', 'struct_ibv_flow_ipv4_ext_filter', + 'struct_ibv_flow_ipv4_filter', 'struct_ibv_flow_ipv6_filter', + 'struct_ibv_flow_mpls_filter', 'struct_ibv_flow_spec', + 'struct_ibv_flow_spec_0_hdr', 'struct_ibv_flow_spec_action_drop', + 'struct_ibv_flow_spec_action_handle', + 'struct_ibv_flow_spec_action_tag', + 'struct_ibv_flow_spec_counter_action', 'struct_ibv_flow_spec_esp', + 'struct_ibv_flow_spec_eth', 'struct_ibv_flow_spec_gre', + 'struct_ibv_flow_spec_ipv4', 'struct_ibv_flow_spec_ipv4_ext', + 'struct_ibv_flow_spec_ipv6', 'struct_ibv_flow_spec_mpls', + 'struct_ibv_flow_spec_tcp_udp', 'struct_ibv_flow_spec_tunnel', + 'struct_ibv_flow_tcp_udp_filter', 'struct_ibv_flow_tunnel_filter', + 'struct_ibv_gid_entry', 'struct_ibv_gid_global', + 'struct_ibv_global_route', 'struct_ibv_grh', + 'struct_ibv_moderate_cq', 'struct_ibv_modify_cq_attr', + 'struct_ibv_mr', 'struct_ibv_mw', 'struct_ibv_mw_bind', + 'struct_ibv_mw_bind_info', 'struct_ibv_odp_caps', + 'struct_ibv_odp_caps_per_transport_caps', 'struct_ibv_ops_wr', + 'struct_ibv_ops_wr_0_add', 'struct_ibv_ops_wr_tm', + 'struct_ibv_packet_pacing_caps', + 'struct_ibv_parent_domain_init_attr', + 'struct_ibv_pci_atomic_caps', 'struct_ibv_pd', + 'struct_ibv_poll_cq_attr', 'struct_ibv_port_attr', + 'struct_ibv_qp', 'struct_ibv_qp_attr', 'struct_ibv_qp_cap', + 'struct_ibv_qp_ex', 'struct_ibv_qp_init_attr', + 'struct_ibv_qp_init_attr_ex', 'struct_ibv_qp_open_attr', + 'struct_ibv_qp_rate_limit_attr', + 'struct_ibv_query_device_ex_input', 'struct_ibv_recv_wr', + 'struct_ibv_rss_caps', 'struct_ibv_rwq_ind_table', + 'struct_ibv_rwq_ind_table_init_attr', 'struct_ibv_rx_hash_conf', + 'struct_ibv_send_wr', 'struct_ibv_send_wr_1_atomic', + 'struct_ibv_send_wr_1_rdma', 'struct_ibv_send_wr_1_ud', + 'struct_ibv_send_wr_2_xrc', 'struct_ibv_send_wr_3_bind_mw', + 'struct_ibv_send_wr_3_tso', 'struct_ibv_sge', 'struct_ibv_srq', + 'struct_ibv_srq_attr', 'struct_ibv_srq_init_attr', + 'struct_ibv_srq_init_attr_ex', 'struct_ibv_td', + 'struct_ibv_td_init_attr', 'struct_ibv_tm_cap', + 'struct_ibv_tm_caps', 'struct_ibv_tso_caps', + 'struct_ibv_values_ex', 'struct_ibv_wc', 'struct_ibv_wc_tm_info', + 'struct_ibv_wq', 'struct_ibv_wq_attr', 'struct_ibv_wq_init_attr', + 'struct_ibv_xrcd', 'struct_ibv_xrcd_init_attr', 'struct_timespec', + 'struct_verbs_context', 'struct_verbs_ex_private', 'uint16_t', + 'uint32_t', 'uint64_t', 'uint8_t', + 'union_c__UA___atomic_wide_counter', 'union_c__UA_pthread_cond_t', + 'union_c__UA_pthread_mutex_t', + 'union_ib_uverbs_flow_action_esp_encap_0', + 'union_ib_uverbs_flow_action_esp_encap_1', + 'union_ib_uverbs_flow_spec_action_count_0', + 'union_ib_uverbs_flow_spec_action_drop_0', + 'union_ib_uverbs_flow_spec_action_handle_0', + 'union_ib_uverbs_flow_spec_action_tag_0', + 'union_ib_uverbs_flow_spec_esp_0', + 'union_ib_uverbs_flow_spec_eth_0', + 'union_ib_uverbs_flow_spec_gre_0', + 'union_ib_uverbs_flow_spec_ipv4_0', + 'union_ib_uverbs_flow_spec_ipv6_0', + 'union_ib_uverbs_flow_spec_mpls_0', + 'union_ib_uverbs_flow_spec_tcp_udp_0', + 'union_ib_uverbs_flow_spec_tunnel_0', + 'union_ib_uverbs_send_wr_ex', 'union_ib_uverbs_send_wr_wr', + 'union_ib_uverbs_wc_ex', 'union_ibv_async_event_element', + 'union_ibv_flow_spec_0', 'union_ibv_gid', 'union_ibv_send_wr_0', + 'union_ibv_send_wr_3', 'union_ibv_send_wr_qp_type', + 'union_ibv_send_wr_wr', 'union_ibv_wc_0', 'verbs_get_ctx'] diff --git a/tinygrad_repo/tinygrad/runtime/graph/hcq.py b/tinygrad_repo/tinygrad/runtime/graph/hcq.py index 7f1c3ba5b..d41c56fe9 100644 --- a/tinygrad_repo/tinygrad/runtime/graph/hcq.py +++ b/tinygrad_repo/tinygrad/runtime/graph/hcq.py @@ -1,7 +1,7 @@ import collections, time from typing import Any, cast -from tinygrad.helpers import round_up, PROFILE, merge_dicts, getenv -from tinygrad.runtime.support.hcq import HCQCompiled, HCQAllocator, HCQSignal, HCQBuffer, HWQueue, HCQArgsState, BumpAllocator +from tinygrad.helpers import round_up, PROFILE, merge_dicts, getenv, dedup +from tinygrad.runtime.support.hcq import HCQCompiled, HCQAllocator, HCQSignal, HCQBuffer, HWQueue, HCQArgsState, BumpAllocator, MMIOInterface from tinygrad.device import Buffer, BufferSpec, Compiled, Device, ProfileGraphEntry, ProfileGraphEvent from tinygrad.dtype import dtypes from tinygrad.uop.ops import UOp, Variable @@ -29,7 +29,7 @@ class HCQGraph(MultiGraphRunner): for ji in jit_cache: if not isinstance(ji.prg, CompiledRunner): continue kernargs_size[ji.prg.dev] += round_up(ji.prg._prg.kernargs_alloc_size, 16) - self.kernargs_bufs: dict[Compiled, HCQBuffer] = {dev:dev.allocator._alloc(sz, BufferSpec(cpu_access=True)) for dev,sz in kernargs_size.items()} + self.kernargs_bufs: dict[Compiled, HCQBuffer] = {d:d.allocator._alloc(max(sz, 1), BufferSpec(cpu_access=True)) for d,sz in kernargs_size.items()} # Fill initial arguments. self.ji_args: dict[int, HCQArgsState] = {} @@ -51,15 +51,15 @@ class HCQGraph(MultiGraphRunner): self.comp_queues: dict[HCQCompiled, HWQueue] = {dev: dev.hw_compute_queue_t() for dev in self.devices} self.copy_queues: dict[HCQCompiled, HWQueue] = {} # lazy allocation - self.signals: dict[Any, HCQSignal] = {**{dev: dev.new_signal(value=0) for dev in self.devices if dev.device != "CPU"}, - **{"KICK": self.devices[0].new_signal(value=0)}, **{dev: self.devices[0].new_signal(value=0) for dev in self.devices if dev.device == "CPU"}} + self.signals: dict[Any, HCQSignal] = {**{dev: dev.new_signal(value=0) for dev in self.devices if not dev._is_cpu()}, + **{"KICK": self.devices[0].new_signal(value=0)}, **{dev: self.devices[0].new_signal(value=0) for dev in self.devices if dev._is_cpu()}} self.kickoff_value: int = 0 self.kickoff_var = UOp.variable("kickoff_var", 0, 0xffffffff, dtype=dtypes.uint32) # When profiling allocate 2 signals for each jit item to measure speed. The jth jit item have signals at 2*j and 2*j+1. # TODO: This logic might allocate a few extra signals... - self.prof_signals: list[HCQSignal] = [self.devices[0].new_signal() for i in range(len(jit_cache) * 2)] if PROFILE else [] - self.prog_graph_deps: list[list[int]] = [] + self.prof_signals: list[HCQSignal] = [] + self.prof_graph_deps: list[list[int]] = [] self.prof_graph_entries: list[ProfileGraphEntry] = [] last_j: dict[HWQueue, int|None] = collections.defaultdict(lambda: None) @@ -87,7 +87,7 @@ class HCQGraph(MultiGraphRunner): assert (enqueue_dev.hw_copy_queue_t is not None), "device must implement a copy queue" enqueue_queue = self.copy_queues.setdefault(enqueue_dev, enqueue_dev.hw_copy_queue_t()) - out_signal = self.signals.setdefault(enqueue_queue, enqueue_dev.new_signal(value=0)) + out_signal = self.signals.setdefault(enqueue_queue, self.devices[0].new_signal(value=0)) # Get dependencies based on input and output buffers. rdeps = self._access_resources(ji.bufs, ji.prg.p.outs if is_exec_prg else [0], (enqueue_queue, j + 1)) #type:ignore @@ -127,12 +127,12 @@ class HCQGraph(MultiGraphRunner): prof_ji_desc = ji.prg._prg.name if is_exec_prg else f"{ji.bufs[1].device} -> {ji.bufs[0].device}" # type: ignore self.prof_graph_entries.append(ProfileGraphEntry(enqueue_dev.device, prof_ji_desc, sig_st, j * 2 + 1, is_copy=not is_exec_prg)) - self.prog_graph_deps.append([d - 1 for _, d in rdeps]) + self.prof_graph_deps.append([d - 1 for _, d in rdeps]) last_j[enqueue_queue] = j # Check which signals are used in the profile graph. - self.prof_signal_is_used = [any(ent.st_id == j or ent.en_id == j for ent in self.prof_graph_entries) for j in range(len(self.prof_signals))] + self.prof_signal_is_used = [any(ent.st_id == j or ent.en_id == j for ent in self.prof_graph_entries) for j in range(len(jit_cache) * 2)] # Build hardware queues. self.copy_to_devs: dict[HCQCompiled, set[HCQCompiled]] = {dev: set() for dev in self.devices} @@ -149,6 +149,9 @@ class HCQGraph(MultiGraphRunner): for j,ji in enumerate(jit_cache): enqueue_dev, enqueue_queue, sync_signals, deps, signal, signal_val = self.ji_schedule[j] + # Lazy allocate signals + if PROFILE: self.prof_signals += [enqueue_dev.new_signal(value=0) for _ in range(2)] + for sig, val in sync_signals + deps: enqueue_queue.wait(sig, val) # Encode waits and start profile timestamp (if needed). @@ -213,7 +216,7 @@ class HCQGraph(MultiGraphRunner): def collect_timestamps(self): # NOTE: Append to any device is fine... - self.devices[0].profile_events += [ProfileGraphEvent(self.prof_graph_entries, self.prog_graph_deps, [s.timestamp for s in self.prof_signals])] + self.devices[0].profile_events += [ProfileGraphEvent(self.prof_graph_entries, self.prof_graph_deps, [s.timestamp for s in self.prof_signals])] def dev_name(self, dev) -> str: return dev.device.replace(":", "_") @@ -225,7 +228,17 @@ class HCQGraph(MultiGraphRunner): for fdev, buf in self.kernargs_bufs.items(): fdev.allocator._free(buf, BufferSpec(cpu_access=True)) @staticmethod - def supports_exec_item(dev, ei:ExecItem) -> bool: + def supports_exec_item(devs:list[Compiled], ei:ExecItem) -> bool: + # Check if all devices are HCQ + all_devs = cast(list[HCQCompiled], dedup(devs + [Device[b.device] for b in ei.bufs if b])) + if not all(issubclass(type(d), HCQCompiled) for d in all_devs): return False + + # If all of devices are mapped into CPU address space, can use CPU inside the peer group. + cpu_support = all(isinstance(d.timeline_signal.base_buf.view, MMIOInterface) for d in all_devs) + + # Check if all devices are within the same peer group. If CPU is supported, don't count it as a separate peer group. + if len(set(d.peer_group for d in all_devs if cpu_support and not d._is_cpu())) > 1: return False + # MOCKGPU is not supported, since it can't execute commands in parallel - copy = (isinstance(ei.prg, BufferCopy) and cast(HCQCompiled, dev).hw_copy_queue_t is not None) and not getenv("MOCKGPU") - return all(issubclass(type(Device[b.device]), HCQCompiled) for b in ei.bufs if b) and (isinstance(ei.prg, (CompiledRunner, BufferXfer)) or copy) + copy = (isinstance(ei.prg, BufferCopy) and cast(HCQCompiled, devs[0]).hw_copy_queue_t is not None) and not getenv("MOCKGPU") + return isinstance(ei.prg, (CompiledRunner, BufferXfer)) or copy diff --git a/tinygrad_repo/tinygrad/runtime/ops_amd.py b/tinygrad_repo/tinygrad/runtime/ops_amd.py index 69c5f9718..c0c27cc71 100644 --- a/tinygrad_repo/tinygrad/runtime/ops_amd.py +++ b/tinygrad_repo/tinygrad/runtime/ops_amd.py @@ -4,10 +4,10 @@ import os, ctypes, ctypes.util, struct, hashlib, functools, importlib, mmap, err assert sys.platform != 'win32' from dataclasses import dataclass from tinygrad.runtime.support.hcq import HCQCompiled, HCQAllocator, HCQBuffer, HWQueue, CLikeArgsState, HCQSignal, HCQProgram, FileIOInterface -from tinygrad.runtime.support.hcq import MMIOInterface +from tinygrad.runtime.support.hcq import MMIOInterface, BumpAllocator from tinygrad.uop.ops import sint from tinygrad.device import Compiled, DMAFdRef, BufferSpec -from tinygrad.helpers import getenv, to_mv, round_up, data64_le, all_same, flatten, DEBUG, AMD_LLVM, PROFILE, ProfileEvent +from tinygrad.helpers import getenv, to_mv, round_up, data64_le, DEBUG, AMD_LLVM, PROFILE, ProfileEvent, suppress_finalizing, lo32, hi32 from tinygrad.renderer.cstyle import AMDRenderer from tinygrad.renderer.llvmir import AMDLLVMRenderer from tinygrad.runtime.autogen import kfd, hsa, pci, sqtt @@ -15,7 +15,7 @@ from tinygrad.runtime.autogen.am import am from tinygrad.runtime.support.compiler_amd import HIPCompiler, AMDLLVMCompiler from tinygrad.runtime.support.elf import elf_loader from tinygrad.runtime.support.am.amdev import AMDev, AMMemoryManager -from tinygrad.runtime.support.amd import AMDReg, AMDIP, import_module, setup_pci_bars +from tinygrad.runtime.support.amd import AMDReg, AMDIP, import_module, import_soc, setup_pci_bars from tinygrad.runtime.support.system import System, PCIIfaceBase, PCIAllocationMeta, MAP_FIXED, MAP_NORESERVE from tinygrad.runtime.support.usb import ASM24Controller, USBMMIOInterface if getenv("IOCTL"): import extra.hip_gpu_driver.hip_ioctl # noqa: F401 # pylint: disable=unused-import @@ -24,6 +24,8 @@ EVENT_INDEX_PARTIAL_FLUSH = 4 # based on a comment in nvd.h WAIT_REG_MEM_FUNCTION_EQ = 3 # == WAIT_REG_MEM_FUNCTION_NEQ = 4 # != WAIT_REG_MEM_FUNCTION_GEQ = 5 # >= +AQL_HDR = (1 << hsa.HSA_PACKET_HEADER_BARRIER) | (hsa.HSA_FENCE_SCOPE_SYSTEM << hsa.HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE) \ + | (hsa.HSA_FENCE_SCOPE_SYSTEM << hsa.HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE) class AMDSignal(HCQSignal): def __init__(self, *args, **kwargs): super().__init__(*args, **{**kwargs, 'timestamp_divider': 100}) @@ -45,12 +47,12 @@ class AMDComputeQueue(HWQueue): def wreg(self, reg:AMDReg, *args:sint, **kwargs:int): if bool(args) == bool(kwargs): raise RuntimeError('One (and only one) of *args or **kwargs must be specified') - if self.pm4.PACKET3_SET_SH_REG_START <= reg.addr < self.pm4.PACKET3_SET_SH_REG_END: + if self.pm4.PACKET3_SET_SH_REG_START <= reg.addr[0] < self.pm4.PACKET3_SET_SH_REG_END: set_packet, set_packet_start = self.pm4.PACKET3_SET_SH_REG, self.pm4.PACKET3_SET_SH_REG_START - elif self.pm4.PACKET3_SET_UCONFIG_REG_START <= reg.addr < self.pm4.PACKET3_SET_UCONFIG_REG_START + 2**16-1: + elif self.pm4.PACKET3_SET_UCONFIG_REG_START <= reg.addr[0] < self.pm4.PACKET3_SET_UCONFIG_REG_START + 2**16-1: set_packet, set_packet_start = self.pm4.PACKET3_SET_UCONFIG_REG, self.pm4.PACKET3_SET_UCONFIG_REG_START - else: raise RuntimeError(f'Cannot set {reg.name} ({reg.addr}) via pm4 packet') - self.pkt3(set_packet, reg.addr - set_packet_start, *(args or (reg.encode(**kwargs),))) + else: raise RuntimeError(f'Cannot set {reg.name} ({reg.addr[0]}) via pm4 packet') + self.pkt3(set_packet, reg.addr[0] - set_packet_start, *(args or (reg.encode(**kwargs),))) @contextlib.contextmanager def pred_exec(self, xcc_mask:int): @@ -106,31 +108,13 @@ class AMDComputeQueue(HWQueue): self.pkt3(self.pm4.PACKET3_RELEASE_MEM, event_dw | cache_flags_dw, memsel_dw, *data64_le(address), *data64_le(value), ctxid) - def xcc_barrier(self): - if self.dev.xcc_sync is None: return self - assert self.dev.xccs == 8, 'only 8 XCCs supported' - a, b = self.dev.xcc_sync - mem_eq = self.pm4.WAIT_REG_MEM_FUNCTION(WAIT_REG_MEM_FUNCTION_EQ) | self.pm4.WAIT_REG_MEM_MEM_SPACE(1) - self.pkt3(self.pm4.PACKET3_ATOMIC_MEM, self.soc.TC_OP_ATOMIC_ADD_RTN_32, *data64_le(a.value_addr), *data64_le(1), *data64_le(0), 0x10) # a += 1 - self.pkt3(self.pm4.PACKET3_WAIT_REG_MEM, mem_eq, *data64_le(a.value_addr), 0, 0b111, 0x80) # a == 0 (mod 8) via bitmask - self.pkt3(self.pm4.PACKET3_ATOMIC_MEM, self.soc.TC_OP_ATOMIC_ADD_RTN_32, *data64_le(b.value_addr), *data64_le(1), *data64_le(0), 0x10) # b += 1 - self.pkt3(self.pm4.PACKET3_WAIT_REG_MEM, mem_eq, *data64_le(b.value_addr), 0, 0b111, 0x80) # b == 0 (mod 8) via bitmask - return self - def memory_barrier(self): pf = '' if self.nbio.version[0] == 2 else '0' if self.nbio.version[:2] != (7, 11) else '1' - self.wait_reg_mem(reg_req=getattr(self.nbio, f'regBIF_BX_PF{pf}_GPU_HDP_FLUSH_REQ').addr, - reg_done=getattr(self.nbio, f'regBIF_BX_PF{pf}_GPU_HDP_FLUSH_DONE').addr, value=0xffffffff) + self.wait_reg_mem(reg_req=getattr(self.nbio, f'regBIF_BX_PF{pf}_GPU_HDP_FLUSH_REQ').addr[0], + reg_done=getattr(self.nbio, f'regBIF_BX_PF{pf}_GPU_HDP_FLUSH_DONE').addr[0], value=0xffffffff) self.acquire_mem() return self - def xcc_config(self): - self.wreg(self.gc.regCOMPUTE_TG_CHUNK_SIZE, 1) - for xcc_id in range(self.dev.xccs): - with self.pred_exec(xcc_mask=1 << xcc_id): - self.wreg(self.dev.regCOMPUTE_CURRENT_LOGIC_XCC_ID, xcc_id) - return self - def spi_config(self, tracing:bool): self.wreg(self.gc.regSPI_CONFIG_CNTL, ps_pkr_priority_cntl=3, exp_priority_order=3, gpr_write_priority=0x2c688, enable_sqg_bop_events=int(tracing), enable_sqg_top_events=int(tracing)) @@ -190,17 +174,17 @@ class AMDComputeQueue(HWQueue): self.wreg(self.gc.regGRBM_GFX_INDEX, se_index=se, instance_broadcast_writes=1) # Wait for FINISH_PENDING==0 self.pkt3(self.pm4.PACKET3_WAIT_REG_MEM, self.pm4.WAIT_REG_MEM_FUNCTION(WAIT_REG_MEM_FUNCTION_EQ), - self.gc.regSQ_THREAD_TRACE_STATUS.addr, 0, 0, self.gc.regSQ_THREAD_TRACE_STATUS.fields_mask('finish_pending'), 4) + self.gc.regSQ_THREAD_TRACE_STATUS.addr[0], 0, 0, self.gc.regSQ_THREAD_TRACE_STATUS.fields_mask('finish_pending'), 4) # Wait for FINISH_DONE!=0 self.pkt3(self.pm4.PACKET3_WAIT_REG_MEM, self.pm4.WAIT_REG_MEM_FUNCTION(WAIT_REG_MEM_FUNCTION_NEQ), - self.gc.regSQ_THREAD_TRACE_STATUS.addr, 0, 0, self.gc.regSQ_THREAD_TRACE_STATUS.fields_mask('finish_done'), 4) + self.gc.regSQ_THREAD_TRACE_STATUS.addr[0], 0, 0, self.gc.regSQ_THREAD_TRACE_STATUS.fields_mask('finish_done'), 4) # Disable SQTT self.sqtt_config(tracing=False) # Wait for BUSY==0 self.pkt3(self.pm4.PACKET3_WAIT_REG_MEM, self.pm4.WAIT_REG_MEM_FUNCTION(WAIT_REG_MEM_FUNCTION_EQ), - self.gc.regSQ_THREAD_TRACE_STATUS.addr, 0, 0, self.gc.regSQ_THREAD_TRACE_STATUS.fields_mask('busy'), 4) + self.gc.regSQ_THREAD_TRACE_STATUS.addr[0], 0, 0, self.gc.regSQ_THREAD_TRACE_STATUS.fields_mask('busy'), 4) # Copy WPTR to memory (src_sel = perf, dst_sel = tc_l2, wr_confirm = True) - self.pkt3(self.pm4.PACKET3_COPY_DATA, 1 << 20 | 2 << 8 | 4, self.gc.regSQ_THREAD_TRACE_WPTR.addr, 0, *data64_le(wptrs.va_addr+(se*4))) + self.pkt3(self.pm4.PACKET3_COPY_DATA, 1 << 20 | 2 << 8 | 4, self.gc.regSQ_THREAD_TRACE_WPTR.addr[0], 0, *data64_le(wptrs.va_addr+(se*4))) # Restore global broadcasting self.wreg(self.gc.regGRBM_GFX_INDEX, se_broadcast_writes=1, sa_broadcast_writes=1, instance_broadcast_writes=1) self.spi_config(tracing=False) @@ -275,16 +259,10 @@ class AMDComputeQueue(HWQueue): if prg.dev.sqtt_enabled: self.pkt3(self.pm4.PACKET3_EVENT_WRITE, self.pm4.EVENT_TYPE(self.soc.THREAD_TRACE_MARKER) | self.pm4.EVENT_INDEX(0)) self.pkt3(self.pm4.PACKET3_EVENT_WRITE, self.pm4.EVENT_TYPE(self.soc.CS_PARTIAL_FLUSH) | self.pm4.EVENT_INDEX(EVENT_INDEX_PARTIAL_FLUSH)) - - if self.dev.xccs > 1: - self.release_mem(cache_flush=True) - self.acquire_mem(gli=0) - self.xcc_barrier() return self def wait(self, signal:AMDSignal, value:sint=0): self.wait_reg_mem(mem=signal.value_addr, value=value, mask=0xffffffff) - if self.dev.xccs > 1: self.xcc_barrier() return self def timestamp(self, signal:AMDSignal): @@ -329,6 +307,41 @@ class AMDComputeQueue(HWQueue): dev.compute_queue.put_value += len(cmds) dev.compute_queue.signal_doorbell(dev) +class AMDComputeAQLQueue(AMDComputeQueue): + def exec(self, prg:AMDProgram, args_state:CLikeArgsState, global_size:tuple[sint, ...], local_size:tuple[sint, ...]): + self.bind_args_state(args_state) + self._q.append(pkt:=hsa.hsa_kernel_dispatch_packet_t(header=AQL_HDR | (hsa.HSA_PACKET_TYPE_KERNEL_DISPATCH << hsa.HSA_PACKET_HEADER_TYPE), + setup=3< 0: dev.compute_queue.ring.view(offset=0, fmt='B')[:tail_bytes] = aql_bytes[cp_bytes:] + dev.compute_queue.put_value += len(aql_bytes) // 64 + dev.compute_queue.signal_doorbell(dev, doorbell_value=dev.compute_queue.put_value-1) + class AMDCopyQueue(HWQueue): def __init__(self, dev, max_copy_size=0x40000000): self.dev, self.sdma, self.internal_cmd_sizes, self.max_copy_size = dev, dev.sdma, [], max_copy_size @@ -426,14 +439,19 @@ class AMDProgram(HCQProgram): # TODO; this API needs the type signature of the function and global_size/local_size self.dev, self.name, self.lib = dev, name, lib - image, sections, _ = elf_loader(self.lib) + image, sections, relocs = elf_loader(self.lib) + + rodata_entry = next((sh.header.sh_addr for sh in sections if sh.name == ".rodata"), -1) + assert rodata_entry >= 0, ".rodata section not found" + + for apply_image_offset, rel_sym_offset, typ, addent in relocs: + if typ == 5: image[apply_image_offset:apply_image_offset+8] = struct.pack('= 0 and text_entry >= 0, ".text or .rodata section not found" self.group_segment_size = image[rodata_entry:rodata_entry+4].cast("I")[0] self.private_segment_size = image[rodata_entry+4:rodata_entry+8].cast("I")[0] self.kernargs_segment_size = image[rodata_entry+8:rodata_entry+12].cast("I")[0] @@ -451,8 +469,8 @@ class AMDProgram(HCQProgram): self.rsrc1: int = code.compute_pgm_rsrc1 | ((1 << 20) if (11,0,0) <= self.dev.target < (12,0,0) else 0) self.rsrc2: int = code.compute_pgm_rsrc2 | (lds_size << 15) self.rsrc3: int = image[rodata_entry+44:rodata_entry+48].cast("I")[0] # NOTE: kernel descriptor, not in amd_kernel_code_t struct + self.aql_prog_addr: int = self.lib_gpu.va_addr + rodata_entry self.prog_addr: int = self.lib_gpu.va_addr + rodata_entry + code.kernel_code_entry_byte_offset - if code.kernel_code_entry_byte_offset == 0: self.prog_addr = self.lib_gpu.va_addr + text_entry # Some programs use hsa_kernel_dispatch_packet_t to read workgroup sizes during execution. # The packet is represented as a pointer and set up in SGPRs. Space for the packet is allocated as part of the kernel arguments. self.enable_dispatch_ptr: int = code.kernel_code_properties & hsa.AMD_KERNEL_CODE_PROPERTIES_ENABLE_SGPR_DISPATCH_PTR @@ -469,15 +487,15 @@ class AMDAllocator(HCQAllocator['AMDDevice']): def __init__(self, dev:AMDDevice): super().__init__(dev, copy_bufs=getattr(dev.iface, 'copy_bufs', None), max_copyout_size=0x1000 if dev.is_usb() else None) if hasattr(dev.iface, "as_dmaref"): self._as_dmaref = dev.iface.as_dmaref + self.supports_copy_from_disk = not dev.is_usb() def _alloc(self, size:int, options:BufferSpec) -> HCQBuffer: return self.dev.iface.alloc(size, host=options.host, uncached=options.uncached, cpu_access=options.cpu_access) + @suppress_finalizing def _free(self, opaque, options:BufferSpec): - try: - self.dev.synchronize() - self.dev.iface.free(opaque) - except AttributeError: pass + self.dev.synchronize() + self.dev.iface.free(opaque) def _map(self, buf:HCQBuffer): return self.dev.iface.map(buf._base if buf._base is not None else buf) @@ -495,13 +513,7 @@ class AMDQueueDesc: @property def read_ptr(self): return min(p[0] for p in self.read_ptrs) - @classmethod - def multi(cls, *queues: AMDQueueDesc): - assert all_same([(q.ring.addr, q.put_value) for q in queues]), f"All queues must have the same ring and put_value: {queues}" - return cls(ring=queues[0].ring, put_value=queues[0].put_value, doorbells=flatten(q.doorbells for q in queues), - read_ptrs=flatten(q.read_ptrs for q in queues), write_ptrs=flatten(q.write_ptrs for q in queues)) - - def signal_doorbell(self, dev): + def signal_doorbell(self, dev, doorbell_value:int|None=None): for write_ptr in self.write_ptrs: write_ptr[0] = self.put_value # Ensure all prior writes are visible to the GPU. @@ -509,7 +521,7 @@ class AMDQueueDesc: # Flush hdp if queue is in dev mem. if dev.is_am() and not dev.is_usb(): dev.iface.dev_impl.gmc.flush_hdp() - for doorbell in self.doorbells: doorbell[0] = self.put_value + for doorbell in self.doorbells: doorbell[0] = self.put_value if doorbell_value is None else doorbell_value class KFDIface: kfd:FileIOInterface|None = None @@ -539,10 +551,10 @@ class KFDIface: self.props = {(p:=l.split())[0]: int(p[1]) for l in FileIOInterface(f"{kfd_topo_path}/{KFDIface.gpus[device_id]}/properties").read().splitlines()} ip_base = f"/sys/class/drm/renderD{self.props['drm_render_minor']}/device/ip_discovery/die/0" id2ip = {am.GC_HWID: am.GC_HWIP, am.SDMA0_HWID: am.SDMA0_HWIP, am.NBIF_HWID: am.NBIF_HWIP} - self.ip_versions = {id2ip[int(hwid)]:tuple(int(FileIOInterface(f'{ip_base}/{hwid}/0/{part}').read()) for part in ['major', 'minor', 'revision']) - for hwid in FileIOInterface(ip_base).listdir() if hwid.isnumeric() and int(hwid) in id2ip} - self.ip_offsets = {id2ip[int(hwid)]:tuple(int(x, 16) for x in FileIOInterface(f'{ip_base}/{hwid}/0/base_addr').read().splitlines()) - for hwid in FileIOInterface(ip_base).listdir() if hwid.isnumeric() and int(hwid) in id2ip} + ip_hw = [(id2ip[int(hwid)], int(hwid)) for hwid in FileIOInterface(ip_base).listdir() if hwid.isnumeric() and int(hwid) in id2ip] + self.ip_versions = {ip:tuple(int(FileIOInterface(f'{ip_base}/{hw}/0/{part}').read()) for part in ['major','minor','revision']) for ip,hw in ip_hw} + self.ip_offsets = {ip:{int(i):tuple(int(x, 16) for x in FileIOInterface(f'{ip_base}/{hw}/{i}/base_addr').read().splitlines()) + for i in FileIOInterface(f'{ip_base}/{hw}').listdir()} for ip,hw in ip_hw } self.drm_fd = FileIOInterface(f"/dev/dri/renderD{self.props['drm_render_minor']}", os.O_RDWR) kfd.AMDKFD_IOC_ACQUIRE_VM(KFDIface.kfd, drm_fd=self.drm_fd.fd, gpu_id=self.gpu_id) @@ -593,7 +605,7 @@ class KFDIface: def free(self, mem): if len(mem.mapped_devs) > 0: - gpus = (ctypes.c_int32 * len(mem.mapped_devs))(*[x.gpu_id for x in mem.mapped_devs]) + gpus = (ctypes.c_int32 * len(mem.mapped_devs))(*[x.iface.gpu_id for x in mem.mapped_devs]) stm = kfd.AMDKFD_IOC_UNMAP_MEMORY_FROM_GPU(self.kfd, handle=mem.meta.handle, device_ids_array_ptr=ctypes.addressof(gpus), n_devices=len(gpus)) assert stm.n_success == len(gpus) if mem.va_addr: FileIOInterface.munmap(mem.va_addr, mem.size) @@ -612,12 +624,12 @@ class KFDIface: stm = kfd.AMDKFD_IOC_MAP_MEMORY_TO_GPU(self.kfd, handle=mem.meta.handle, device_ids_array_ptr=ctypes.addressof(c_gpus), n_devices=1) assert stm.n_success == 1 - def create_queue(self, queue_type, ring, gart, eop_buffer=None, cwsr_buffer=None, ctl_stack_size=0, ctx_save_restore_size=0, xcc_id=0): + def create_queue(self, queue_type, ring, gart, rptr, wptr, eop_buffer=None, cwsr_buffer=None, ctl_stack_size=0, ctx_save_restore_size=0, xcc_id=0): queue = kfd.AMDKFD_IOC_CREATE_QUEUE(KFDIface.kfd, ring_base_address=ring.va_addr, ring_size=ring.size, gpu_id=self.gpu_id, queue_type=queue_type, queue_percentage=kfd.KFD_MAX_QUEUE_PERCENTAGE|(xcc_id<<8), queue_priority=kfd.KFD_MAX_QUEUE_PRIORITY, eop_buffer_address=eop_buffer.va_addr if eop_buffer else 0, eop_buffer_size=eop_buffer.size if eop_buffer else 0, ctl_stack_size=ctl_stack_size, ctx_save_restore_address=cwsr_buffer.va_addr if cwsr_buffer else 0, ctx_save_restore_size=ctx_save_restore_size, - write_pointer_address=gart.va_addr, read_pointer_address=gart.va_addr + 8 * (xcc_id + 1)) + write_pointer_address=gart.va_addr+wptr, read_pointer_address=gart.va_addr+rptr+8*xcc_id) if not hasattr(self, 'doorbells'): self.doorbells_base = queue.doorbell_offset & (~0x1fff) # doorbell is two pages @@ -648,14 +660,12 @@ class PCIIface(PCIIfaceBase): def __init__(self, dev, dev_id): super().__init__(dev, dev_id, vendor=0x1002, devices=[0x744c, 0x7480, 0x7550], bars=[0, 2, 5], vram_bar=0, va_start=AMMemoryManager.va_allocator.base, va_size=AMMemoryManager.va_allocator.size) - self._setup_adev(self.pci_dev.pcibus, self.pci_dev.map_bar(0), dbell:=self.pci_dev.map_bar(2, fmt='Q'), self.pci_dev.map_bar(5, fmt='I')) - self.doorbell_cpu_addr = dbell.addr + self._setup_adev(self.pci_dev.pcibus, self.pci_dev.map_bar(0), self.pci_dev.map_bar(2, fmt='Q'), self.pci_dev.map_bar(5, fmt='I')) self.pci_dev.write_config(pci.PCI_COMMAND, self.pci_dev.read_config(pci.PCI_COMMAND, 2) | pci.PCI_COMMAND_MASTER, 2) def _setup_adev(self, name, vram:MMIOInterface, doorbell:MMIOInterface, mmio:MMIOInterface, dma_regions:list[tuple[int, MMIOInterface]]|None=None): self.dev_impl:AMDev = AMDev(name, vram, doorbell, mmio, dma_regions) - self.ip_versions = self.dev_impl.ip_ver - self.ip_offsets = {hwip: tuple(instances[0]) for hwip,instances in self.dev_impl.regs_offset.items()} + self.ip_offsets, self.ip_versions = self.dev_impl.regs_offset, self.dev_impl.ip_ver gfxver = int(f"{self.dev_impl.ip_ver[am.GC_HWIP][0]:02d}{self.dev_impl.ip_ver[am.GC_HWIP][1]:02d}{self.dev_impl.ip_ver[am.GC_HWIP][2]:02d}") array_count = self.dev_impl.gc_info.gc_num_sa_per_se * self.dev_impl.gc_info.gc_num_se @@ -664,18 +674,19 @@ class PCIIface(PCIIfaceBase): 'max_slots_scratch_cu': self.dev_impl.gc_info.gc_max_scratch_slots_per_cu, 'max_waves_per_simd': self.dev_impl.gc_info.gc_max_waves_per_simd, 'simd_arrays_per_engine': self.dev_impl.gc_info.gc_num_sa_per_se, 'lds_size_in_kb': self.dev_impl.gc_info.gc_lds_size} - def create_queue(self, queue_type, ring, gart, eop_buffer=None, cwsr_buffer=None, ctl_stack_size=0, ctx_save_restore_size=0, xcc_id=0): + def create_queue(self, queue_type, ring, gart, rptr, wptr, eop_buffer=None, cwsr_buffer=None, ctl_stack_size=0, ctx_save_restore_size=0, xcc_id=0): assert cwsr_buffer is None, "no cwsr buffer for am" if queue_type == kfd.KFD_IOC_QUEUE_TYPE_SDMA: - self.dev_impl.sdma.setup_ring(ring_addr=ring.va_addr, ring_size=ring.size, rptr_addr=gart.va_addr, wptr_addr=gart.va_addr+0x10, + self.dev_impl.sdma.setup_ring(ring_addr=ring.va_addr, ring_size=ring.size, rptr_addr=gart.va_addr+rptr, wptr_addr=gart.va_addr+wptr, doorbell=(doorbell_index:=am.AMDGPU_NAVI10_DOORBELL_sDMA_ENGINE0), pipe=0, queue=0) else: - self.dev_impl.gfx.setup_ring(ring_addr=ring.va_addr, ring_size=ring.size, rptr_addr=gart.va_addr, wptr_addr=gart.va_addr+0x10, - eop_addr=eop_buffer.va_addr, eop_size=eop_buffer.size, doorbell=(doorbell_index:=am.AMDGPU_NAVI10_DOORBELL_MEC_RING0), pipe=0, queue=0) + self.dev_impl.gfx.setup_ring(ring_addr=ring.va_addr, ring_size=ring.size, rptr_addr=gart.va_addr+rptr, wptr_addr=gart.va_addr+wptr, + eop_addr=eop_buffer.va_addr, eop_size=eop_buffer.size, doorbell=(doorbell_index:=am.AMDGPU_NAVI10_DOORBELL_MEC_RING0), pipe=0, queue=0, + aql=(queue_type==kfd.KFD_IOC_QUEUE_TYPE_COMPUTE_AQL)) - return AMDQueueDesc(ring=MMIOInterface(ring.va_addr, ring.size, fmt='I'), read_ptrs=[MMIOInterface(gart.va_addr, 8, fmt='Q')], - write_ptrs=[MMIOInterface(gart.va_addr+0x10, 8, fmt='Q')], doorbells=[MMIOInterface(self.doorbell_cpu_addr + doorbell_index * 8, 8, fmt='Q')]) + return AMDQueueDesc(ring=ring.cpu_view().view(fmt='I'), doorbells=[self.dev_impl.doorbell64.view(doorbell_index * 8, 8, fmt='Q')], + read_ptrs=[gart.cpu_view().view(offset=rptr, size=8, fmt='Q')], write_ptrs=[gart.cpu_view().view(offset=wptr, size=8, fmt='Q')]) def sleep(self, timeout): if self.pci_dev.irq_poller is not None and (events_cnt:=len(self.pci_dev.irq_poller.poll(timeout))): @@ -717,17 +728,9 @@ class USBIface(PCIIface): return HCQBuffer(am_mapping.va_addr, size, meta=PCIAllocationMeta(am_mapping, has_cpu_mapping=False), view=USBMMIOInterface(self.usb, self.bars[0][0] + am_mapping.paddrs[0][0], size, fmt='B') if cpu_access else None, owner=self.dev) - def create_queue(self, queue_type, ring, gart, eop_buffer=None, cwsr_buffer=None, ctl_stack_size=0, ctx_save_restore_size=0, xcc_id=0): - if queue_type == kfd.KFD_IOC_QUEUE_TYPE_SDMA: - self.dev_impl.sdma.setup_ring(ring_addr=ring.va_addr, ring_size=ring.size, rptr_addr=gart.va_addr, wptr_addr=gart.va_addr+0x10, - doorbell=(doorbell_index:=am.AMDGPU_NAVI10_DOORBELL_sDMA_ENGINE0), pipe=0, queue=0) - else: - self.dev_impl.gfx.setup_ring(ring_addr=ring.va_addr, ring_size=ring.size, rptr_addr=gart.va_addr, wptr_addr=gart.va_addr+0x10, - eop_addr=eop_buffer.va_addr, eop_size=eop_buffer.size, doorbell=(doorbell_index:=am.AMDGPU_NAVI10_DOORBELL_MEC_RING0), pipe=0, queue=0) - self.usb._pci_cacheable += [(ring.cpu_view().addr, ring.size)] - - return AMDQueueDesc(ring=ring.cpu_view().view(fmt='I'), doorbells=[self.dev_impl.doorbell64.view(doorbell_index * 8, 8, fmt='Q')], - read_ptrs=[gart.cpu_view().view(size=8, fmt='Q')], write_ptrs=[gart.cpu_view().view(offset=0x10, size=8, fmt='Q')]) + def create_queue(self, queue_type, ring, gart, rptr, wptr, eop_buffer=None, cwsr_buffer=None, ctl_stack_size=0, ctx_save_restore_size=0, xcc_id=0): + if queue_type == kfd.KFD_IOC_QUEUE_TYPE_COMPUTE: self.usb._pci_cacheable += [(ring.cpu_view().addr, ring.size)] + return super().create_queue(queue_type, ring, gart, rptr, wptr, eop_buffer, cwsr_buffer, ctl_stack_size, ctx_save_restore_size, xcc_id) def sleep(self, timeout): pass @@ -748,7 +751,7 @@ class AMDDevice(HCQCompiled): (min((self.max_cu_id+1)*40, self.iface.props['array_count'] // self.iface.props['simd_arrays_per_engine'] * 512) - 1) self.xccs = self.iface.props.get('num_xcc', 1) if getenv("XCCS", 1) else 1 # this is what llvm refers to as "architected flat scratch" - self.has_scratch_base_registers = self.target >= (11,0,0) or self.target in {(9,4,2),(9,5)} + self.has_scratch_base_registers = self.target >= (11,0,0) or self.target in {(9,4,2), (9,5,0)} # https://gitlab.freedesktop.org/agd5f/linux/-/blob/a1fc9f584c4aaf8bc1ebfa459fc57a3f26a290d8/drivers/gpu/drm/amd/amdkfd/kfd_queue.c#L391 sgrp_size_per_cu, lds_size_per_cu, hwreg_size_per_cu = 0x4000, 0x10000, 0x1000 @@ -761,19 +764,22 @@ class AMDDevice(HCQCompiled): debug_memory_size = round_up((self.max_cu_id + 1 if self.target >= (10,1,0) else 1) * (self.max_wave_id + 1) * 32, 64) if self.target[0] == 10: ctl_stack_size = min(ctl_stack_size, 0x7000) - self.soc = importlib.import_module(f"tinygrad.runtime.autogen.am.{({9: 'vega10', 10: 'navi10', 11: 'soc21', 12: 'soc24'}[self.target[0]])}") + self.soc = import_soc(self.target) self.pm4 = importlib.import_module(f"tinygrad.runtime.autogen.am.pm4_{'nv' if self.target[0] >= 10 else 'soc15'}") self.sdma = import_module('sdma', min(self.iface.ip_versions[am.SDMA0_HWIP], (6, 0, 0))) self.gc = AMDIP('gc', self.iface.ip_versions[am.GC_HWIP], self.iface.ip_offsets[am.GC_HWIP]) - # Define the regCOMPUTE_CURRENT_LOGIC_XCC_ID register, which is missing from the asic_regs files. - if self.target[:2] in {(9,4),(9,5)}: self.regCOMPUTE_CURRENT_LOGIC_XCC_ID = AMDReg("regCOMPUTE_CURRENT_LOGIC_XCC_ID", 0xe25, 0, {}, self.gc.bases) - nbio_name = 'nbio' if self.target[0] < 12 else 'nbif' nbio_pad = (0,) if self.target[0] == 9 else () - self.nbio = AMDIP(nbio_name, self.iface.ip_versions[am.NBIF_HWIP], nbio_pad+self.iface.ip_offsets[am.NBIF_HWIP]) + self.nbio = AMDIP(nbio_name, self.iface.ip_versions[am.NBIF_HWIP], {i:nbio_pad+x for i,x in self.iface.ip_offsets[am.NBIF_HWIP].items()}) - self.compute_queue = self.create_queue(kfd.KFD_IOC_QUEUE_TYPE_COMPUTE, 0x2000 if self.is_usb() else (16 << 20), eop_buffer_size=0x1000, + self.is_aql = getenv("AMD_AQL", int(self.xccs > 1)) + if self.is_aql: + self.pm4_ibs = self.iface.alloc(0x2000 if self.is_usb() else (16 << 20), uncached=True, cpu_access=True) + self.pm4_ib_alloc = BumpAllocator(self.pm4_ibs.size, wrap=True) + + self.compute_queue = self.create_queue(kfd.KFD_IOC_QUEUE_TYPE_COMPUTE_AQL if self.is_aql else kfd.KFD_IOC_QUEUE_TYPE_COMPUTE, + 0x2000 if self.is_usb() else (16 << 20), eop_buffer_size=0x1000, ctx_save_restore_size=0 if self.is_am() else wg_data_size + ctl_stack_size, ctl_stack_size=ctl_stack_size, debug_memory_size=debug_memory_size) max_copy_size = 0x40000000 if self.iface.ip_versions[am.SDMA0_HWIP][0] >= 5 else 0x400000 @@ -781,20 +787,14 @@ class AMDDevice(HCQCompiled): super().__init__(device, AMDAllocator(self), AMDLLVMRenderer(self.arch) if AMD_LLVM else AMDRenderer(self.arch), AMDLLVMCompiler(self.arch) if AMD_LLVM else HIPCompiler(self.arch), functools.partial(AMDProgram, self), - AMDSignal, functools.partial(AMDComputeQueue, self), functools.partial(AMDCopyQueue, self, max_copy_size=max_copy_size), + AMDSignal, functools.partial(AMDComputeAQLQueue if self.is_aql else AMDComputeQueue, self), + functools.partial(AMDCopyQueue, self, max_copy_size=max_copy_size), kernargs_size=(8 << 10) if self.is_usb() else (16 << 20), sigalloc_size=0x100 if self.is_usb() else 0x1000) # Scratch setup self.max_private_segment_size = 0 self._ensure_has_local_memory(128) # set default scratch size to 128 bytes per thread - # XCC setup - self.xcc_sync: tuple[AMDSignal, AMDSignal]|None = None - if self.xccs > 1: - self.xcc_sync_area = self.allocator.alloc(0x1000, BufferSpec(nolru=True, cpu_access=True)) - self.xcc_sync = (AMDSignal(base_buf=self.xcc_sync_area), AMDSignal(base_buf=self.xcc_sync_area.offset(256))) - AMDComputeQueue(self).xcc_config().submit(self) - # SQTT is disabled by default because of runtime overhead and big file sizes (~200mb to Tensor.full() two 4096x4096 tensors and matmul them) self.sqtt_enabled = PROFILE and bool(getenv("SQTT", 0)) if self.sqtt_enabled: @@ -808,19 +808,26 @@ class AMDDevice(HCQCompiled): self.sqtt_buffers = [self.allocator.alloc(SQTT_BUFFER_SIZE*1024*1024, BufferSpec(cpu_access=True, nolru=True)) for _ in range(SQTT_NUM)] self.sqtt_itrace_se_mask = getenv("SQTT_ITRACE_SE_MASK", 2) # -1 enable all, 0 disable all, >0 bitmask for where to enable instruction tracing self.cmd_id = 0 - AMDComputeQueue(self).sqtt_start(self.sqtt_buffers, self.sqtt_itrace_se_mask).submit(self) + cast(AMDComputeQueue, self.hw_compute_queue_t()).sqtt_start(self.sqtt_buffers, self.sqtt_itrace_se_mask).submit(self) def create_queue(self, queue_type, ring_size, ctx_save_restore_size=0, eop_buffer_size=0, ctl_stack_size=0, debug_memory_size=0): ring = self.iface.alloc(ring_size, uncached=True, cpu_access=True) gart = self.iface.alloc(0x100, uncached=True, cpu_access=True) + if queue_type == kfd.KFD_IOC_QUEUE_TYPE_COMPUTE_AQL: + aql_desc = hsa.amd_queue_t(queue_properties=hsa.AMD_QUEUE_PROPERTIES_IS_PTR64 | hsa.AMD_QUEUE_PROPERTIES_ENABLE_PROFILING, + read_dispatch_id_field_base_byte_offset=getattr(hsa.amd_queue_t, 'read_dispatch_id').offset, + max_cu_id=self.max_cu_id, max_wave_id=self.max_wave_id) + gart.cpu_view().view(fmt='B')[:ctypes.sizeof(aql_desc)] = bytes(aql_desc) + self.aql_desc = hsa.amd_queue_t.from_address(gart.va_addr) + cwsr_buffer_size = round_up((ctx_save_restore_size + debug_memory_size) * self.iface.props.get('num_xcc', 1), mmap.PAGESIZE) cwsr_buffer = self.iface.alloc(cwsr_buffer_size) if ctx_save_restore_size else None eop_buffer = self.iface.alloc(eop_buffer_size) if eop_buffer_size else None - return AMDQueueDesc.multi(*(self.iface.create_queue(queue_type, ring, gart, eop_buffer=eop_buffer, cwsr_buffer=cwsr_buffer, xcc_id=xcc_id, - ctx_save_restore_size=ctx_save_restore_size, ctl_stack_size=ctl_stack_size) - for xcc_id in range(self.xccs if queue_type == kfd.KFD_IOC_QUEUE_TYPE_COMPUTE else 1))) + return (self.iface.create_queue(queue_type, ring, gart, rptr=getattr(hsa.amd_queue_t, 'read_dispatch_id').offset, + wptr=getattr(hsa.amd_queue_t, 'write_dispatch_id').offset, eop_buffer=eop_buffer, cwsr_buffer=cwsr_buffer, + ctx_save_restore_size=ctx_save_restore_size, ctl_stack_size=ctl_stack_size)) def _ensure_has_local_memory(self, required): if self.max_private_segment_size >= required: return @@ -838,8 +845,16 @@ class AMDDevice(HCQCompiled): self.tmpring_size = waves << 12 | wavesize self.max_private_segment_size = required + if hasattr(self, 'aql_desc'): + self.aql_desc.scratch_backing_memory_location = self.scratch.va_addr + self.aql_desc.scratch_backing_memory_byte_size = self.scratch.size + self.aql_desc.scratch_wave64_lane_byte_size = self.max_private_segment_size * (self.aql_desc.max_wave_id + 1) // 64 + self.aql_desc.scratch_resource_descriptor[:] = [lo32(self.scratch.va_addr), hi32(self.scratch.va_addr) | (1 << 30), lo32(self.scratch.size), + 0x20814fac] # FORMAT=BUF_FORMAT_32_UINT,OOB_SELECT=2,ADD_TID_ENABLE=1,TYPE=SQ_RSRC_BUF,SQ_SELs + self.aql_desc.compute_tmpring_size = self.tmpring_size + def invalidate_caches(self): - AMDComputeQueue(self).memory_barrier().signal(self.timeline_signal, self.next_timeline()).submit(self) + self.hw_compute_queue_t().memory_barrier().signal(self.timeline_signal, self.next_timeline()).submit(self) self.synchronize() def on_device_hang(self): self.iface.on_device_hang() @@ -848,7 +863,8 @@ class AMDDevice(HCQCompiled): if self.sqtt_enabled: wptrs_buf = self.allocator.alloc(round_up(len(self.sqtt_buffers), 0x1000), BufferSpec(cpu_access=True, nolru=True)) wptrs = to_mv(wptrs_buf.va_addr, wptrs_buf.size) - AMDComputeQueue(self).sqtt_stop(len(self.sqtt_buffers), wptrs_buf).signal(self.timeline_signal, self.next_timeline()).submit(self) + cast(AMDComputeQueue, self.hw_compute_queue_t()).sqtt_stop(len(self.sqtt_buffers), wptrs_buf) \ + .signal(self.timeline_signal, self.next_timeline()).submit(self) self.synchronize() if DEBUG>=2: print('Saving SQTT in profile...') for i,buf0 in enumerate(self.sqtt_buffers): diff --git a/tinygrad_repo/tinygrad/runtime/ops_cpu.py b/tinygrad_repo/tinygrad/runtime/ops_cpu.py index 07fa2b63d..5ebf1f8c3 100644 --- a/tinygrad_repo/tinygrad/runtime/ops_cpu.py +++ b/tinygrad_repo/tinygrad/runtime/ops_cpu.py @@ -1,12 +1,16 @@ from __future__ import annotations -import platform, subprocess, sys, ctypes, functools, time, mmap -from tinygrad.helpers import capstone_flatdump, getenv, from_mv, to_mv, OSX, mv_address, wait_cond +import platform, subprocess, sys, ctypes, functools, time, mmap, threading, queue +from tinygrad.helpers import capstone_flatdump, getenv, from_mv, to_mv, OSX, mv_address, wait_cond, cpu_profile from tinygrad.device import Compiler, BufferSpec, DMACPURef from tinygrad.runtime.support.hcq import HCQCompiled, HCQAllocatorBase, HCQBuffer, HWQueue, HCQArgsState, HCQSignal, HCQProgram, MMIOInterface from tinygrad.runtime.support.elf import jit_loader from tinygrad.renderer.cstyle import ClangRenderer from tinygrad.uop.ops import sint +class CPUSignal(HCQSignal): + def _sleep(self, time_spent_waiting_ms:int): + if self.is_timeline and self.owner is not None: self.owner.tasks.join() + class ClangJITCompiler(Compiler): def __init__(self, cachekey="compile_clang_jit"): super().__init__(cachekey) @@ -14,13 +18,28 @@ class ClangJITCompiler(Compiler): # -fno-math-errno is required for __builtin_sqrt to become an instruction instead of a function call # x18 is a reserved platform register. It is clobbered on context switch in macos and is used to store TEB pointer in windows on arm, don't use it target = 'x86_64' if sys.platform == 'win32' else platform.machine() - args = ['-march=native', f'--target={target}-none-unknown-elf', '-O2', '-fPIC', '-ffreestanding', '-fno-math-errno', '-nostdlib', '-fno-ident'] + # on arm march means "runs on this arch and superset" instead of "optimize for this arch". x86 march == arm mcpu + arch = '-march=native' if platform.machine() in ('x86_64', 'AMD64') else '-mcpu=native' + args = [arch, f'--target={target}-none-unknown-elf', '-O2', '-fPIC', '-ffreestanding', '-fno-math-errno', '-nostdlib', '-fno-ident'] arch_args = ['-ffixed-x18'] if target == 'arm64' else [] obj = subprocess.check_output([getenv("CC", 'clang'), '-c', '-x', 'c', *args, *arch_args, '-', '-o', '-'], input=src.encode('utf-8')) return jit_loader(obj) def disassemble(self, lib:bytes): return capstone_flatdump(lib) +class CPUWorker(threading.Thread): + def __init__(self, dev): + super().__init__() + self.dev, self.tasks, self.daemon = dev, dev.tasks, True + + def run(self): + while True: + cmd_iter = iter(self.tasks.get()) + for cmd in cmd_iter: + args_cnt = next(cmd_iter) + cmd(*[next(cmd_iter) for _ in range(args_cnt)]) + self.tasks.task_done() + class CPUComputeQueue(HWQueue): def _exec(self, prg, bufs, *args): prg.fxn(*map(ctypes.c_uint64, args[:bufs]), *map(ctypes.c_int64 if platform.machine() == "arm64" else ctypes.c_int32, args[bufs:])) @@ -37,13 +56,7 @@ class CPUComputeQueue(HWQueue): def wait(self, signal, value=0): return self.cmd(self._wait, signal.value_addr, value) def timestamp(self, signal): return self.cmd(self._timestamp, signal.timestamp_addr) def signal(self, signal, value:sint=0): return self.cmd(self._signal, signal.value_addr, value) - - def _submit(self, dev): - # Execute the commands in the queue: fn, argc, args... - off = 0 - while off < len(self._q): - self._q[off](*self._q[off + 2:off + 2 + self._q[off + 1]]) - off += self._q[off + 1] + 2 + def _submit(self, dev): dev.tasks.put(self._q[:]) # NOTE: MAP_JIT is added to mmap module in python 3.13 MAP_JIT = 0x0800 @@ -90,14 +103,23 @@ class CPUAllocator(HCQAllocatorBase): elif sys.platform == "win32": addr = mv_address(buf:=mmap.mmap(-1, size, access=mmap.ACCESS_WRITE)) else: addr = mv_address(buf:=mmap.mmap(-1, size, mmap.MAP_ANON | mmap.MAP_PRIVATE, mmap.PROT_READ | mmap.PROT_WRITE)) return HCQBuffer(va:=addr, sz:=size, meta=buf, view=MMIOInterface(va, sz, fmt='B'), owner=self.dev) - def _as_buffer(self, src) -> memoryview: return to_mv(src.va_addr, src.size) - def _as_dmaref(self, buf): return DMACPURef(buf.va_addr, buf.size) - def _copyin(self, dest, src:memoryview): ctypes.memmove(dest.va_addr, from_mv(src), len(src)) - def _copyout(self, dest:memoryview, src): ctypes.memmove(from_mv(dest), src.va_addr, len(dest)) + def _as_buffer(self, src) -> memoryview: + self.dev.synchronize() + return to_mv(src.va_addr, src.size) + def _as_dmaref(self, buf): + self.dev.synchronize() + return DMACPURef(buf.va_addr, buf.size) + def _copyin(self, dest, src:memoryview): + self.dev.synchronize() + with cpu_profile('TINY -> CPU', self.dev.device, is_copy=True): ctypes.memmove(dest.va_addr, from_mv(src), len(src)) + def _copyout(self, dest:memoryview, src): + self.dev.synchronize() + with cpu_profile('CPU -> TINY', self.dev.device, is_copy=True): ctypes.memmove(from_mv(dest), src.va_addr, len(dest)) def _map(self, buf:HCQBuffer): if buf.view is None or not isinstance(buf.view, MMIOInterface): raise RuntimeError("Cannot map buffer without view to cpu") class CPUDevice(HCQCompiled): def __init__(self, device:str=""): - super().__init__(device, CPUAllocator(self), ClangRenderer(), ClangJITCompiler(), functools.partial(CPUProgram, self), HCQSignal, CPUComputeQueue, - supports_graph=False) + self.tasks:queue.Queue = queue.Queue() + CPUWorker(self).start() + super().__init__(device, CPUAllocator(self), ClangRenderer(), ClangJITCompiler(), functools.partial(CPUProgram, self), CPUSignal, CPUComputeQueue) diff --git a/tinygrad_repo/tinygrad/runtime/ops_cuda.py b/tinygrad_repo/tinygrad/runtime/ops_cuda.py index 574c42e9f..326ae84f0 100644 --- a/tinygrad_repo/tinygrad/runtime/ops_cuda.py +++ b/tinygrad_repo/tinygrad/runtime/ops_cuda.py @@ -1,6 +1,6 @@ from __future__ import annotations import ctypes, ctypes.util, functools -from tinygrad.helpers import DEBUG, getenv, mv_address, init_c_var, init_c_struct_t +from tinygrad.helpers import DEBUG, getenv, mv_address, init_c_var, init_c_struct_t, suppress_finalizing from tinygrad.device import Compiled, BufferSpec, LRUAllocator from tinygrad.renderer.cstyle import CUDARenderer from tinygrad.renderer.ptx import PTXRenderer @@ -45,9 +45,8 @@ class CUDAProgram: self.prg = prg if self.smem > 0: check(cuda.cuFuncSetAttribute(self.prg, cuda.CU_FUNC_ATTRIBUTE_MAX_DYNAMIC_SHARED_SIZE_BYTES, self.smem)) - def __del__(self): - try: check(cuda.cuModuleUnload(self.module)) - except AttributeError: pass + @suppress_finalizing + def __del__(self): check(cuda.cuModuleUnload(self.module)) def __call__(self, *args, global_size:tuple[int,int,int]=(1,1,1), local_size:tuple[int,int,int]=(1,1,1), vals:tuple[int, ...]=(), wait=False): check(cuda.cuCtxSetCurrent(self.dev.context)) diff --git a/tinygrad_repo/tinygrad/runtime/ops_gpu.py b/tinygrad_repo/tinygrad/runtime/ops_gpu.py index 3b9b1d696..c9ebb338c 100644 --- a/tinygrad_repo/tinygrad/runtime/ops_gpu.py +++ b/tinygrad_repo/tinygrad/runtime/ops_gpu.py @@ -2,7 +2,7 @@ from __future__ import annotations from typing import cast import ctypes, functools, hashlib from tinygrad.runtime.autogen import opencl as cl -from tinygrad.helpers import init_c_var, to_char_p_p, from_mv, OSX, DEBUG, getenv, mv_address +from tinygrad.helpers import init_c_var, to_char_p_p, from_mv, OSX, DEBUG, getenv, mv_address, suppress_finalizing from tinygrad.renderer.cstyle import OpenCLRenderer, IntelRenderer from tinygrad.device import BufferSpec, LRUAllocator, Compiled, Compiler, CompileError @@ -69,9 +69,8 @@ class CLAllocator(LRUAllocator['CLDevice']): cl.cl_image_format(cl.CL_RGBA, {2: cl.CL_HALF_FLOAT, 4: cl.CL_FLOAT}[options.image.itemsize]), options.image.shape[1], options.image.shape[0], 0, None, status := ctypes.c_int32()), status), options) return (checked(cl.clCreateBuffer(self.dev.context, cl.CL_MEM_READ_WRITE, size, None, status := ctypes.c_int32()), status), options) - def _free(self, opaque:tuple[ctypes._CData, BufferSpec], options:BufferSpec): - try: check(cl.clReleaseMemObject(opaque[0])) - except AttributeError: pass + @suppress_finalizing + def _free(self, opaque:tuple[ctypes._CData, BufferSpec], options:BufferSpec): check(cl.clReleaseMemObject(opaque[0])) def _copyin(self, dest:tuple[ctypes._CData, BufferSpec], src:memoryview): if dest[1].image is not None: check(cl.clEnqueueWriteImage(self.dev.queue, dest[0], False, (ctypes.c_size_t * 3)(0,0,0), diff --git a/tinygrad_repo/tinygrad/runtime/ops_llvm.py b/tinygrad_repo/tinygrad/runtime/ops_llvm.py index 3bfa0dd35..e5fabb84f 100644 --- a/tinygrad_repo/tinygrad/runtime/ops_llvm.py +++ b/tinygrad_repo/tinygrad/runtime/ops_llvm.py @@ -1,7 +1,7 @@ -import ctypes, platform, functools +import ctypes, platform, functools, queue from tinygrad.device import Compiler from tinygrad.runtime.support.hcq import HCQCompiled, HCQSignal -from tinygrad.runtime.ops_cpu import CPUAllocator, CPUProgram, CPUComputeQueue +from tinygrad.runtime.ops_cpu import CPUAllocator, CPUProgram, CPUComputeQueue, CPUWorker from tinygrad.helpers import OSX, getenv, capstone_flatdump, DEBUG from tinygrad.renderer.llvmir import LLVMRenderer import tinygrad.runtime.autogen.llvm as llvm @@ -73,5 +73,6 @@ class HostLLVMCompiler(LLVMCompiler): class LLVMDevice(HCQCompiled): def __init__(self, device:str=""): - super().__init__(device, CPUAllocator(self), LLVMRenderer(), HostLLVMCompiler(), functools.partial(CPUProgram, self), HCQSignal, CPUComputeQueue, - supports_graph=False) + self.tasks:queue.Queue = queue.Queue() + CPUWorker(self).start() + super().__init__(device, CPUAllocator(self), LLVMRenderer(), HostLLVMCompiler(), functools.partial(CPUProgram, self), HCQSignal, CPUComputeQueue) diff --git a/tinygrad_repo/tinygrad/runtime/ops_metal.py b/tinygrad_repo/tinygrad/runtime/ops_metal.py index abf123b03..9e453eb72 100644 --- a/tinygrad_repo/tinygrad/runtime/ops_metal.py +++ b/tinygrad_repo/tinygrad/runtime/ops_metal.py @@ -1,6 +1,6 @@ -import os, pathlib, struct, ctypes, tempfile, functools, contextlib, decimal, platform +import subprocess, pathlib, struct, ctypes, tempfile, functools, contextlib, decimal, platform from typing import Any, cast -from tinygrad.helpers import prod, to_mv, getenv, round_up, cache_dir, T, init_c_struct_t, PROFILE, ProfileRangeEvent, cpu_profile +from tinygrad.helpers import prod, to_mv, getenv, round_up, cache_dir, T, init_c_struct_t, PROFILE, ProfileRangeEvent, cpu_profile, unwrap from tinygrad.device import Compiled, Compiler, CompileError, LRUAllocator, ProfileDeviceEvent from tinygrad.renderer.cstyle import MetalRenderer @@ -144,7 +144,10 @@ class MetalCompiler(Compiler): with tempfile.NamedTemporaryFile(delete=True) as shader: shader.write(lib) shader.flush() - ret = os.system(f"cd {pathlib.Path(__file__).parents[2]}/extra/disassemblers/applegpu && python3 compiler_explorer.py {shader.name}") + proc = subprocess.Popen(f"cd {pathlib.Path(__file__).parents[2]}/extra/disassemblers/applegpu && python3 compiler_explorer.py {shader.name}", + stdout=subprocess.PIPE, shell=True, text=True, bufsize=1) + for line in unwrap(proc.stdout): print(line, end="") + ret = proc.wait() if ret: print("Disassembler Error: Make sure you have https://github.com/dougallj/applegpu cloned to tinygrad/extra/disassemblers/applegpu") class MetalProgram: @@ -218,11 +221,14 @@ class MetalAllocator(LRUAllocator[MetalDevice]): msg("setLabel:")(src_command_buffer, to_ns_str(f"COPY {src_dev.device} -> {dest_dev.device}")) msg("commit")(src_command_buffer) src_dev.mtl_buffers_in_flight.append(src_command_buffer) + # Transfers currently synchronize the completion. Otherwise, copies can sometimes lead to incorrect values. + # There is no real metal multidevice support for now, so transfer is used only for tests. + src_dev.synchronize() def _cp_mv(self, dst, src, prof_desc): with cpu_profile(prof_desc, self.dev.device, is_copy=True): dst[:] = src def _as_buffer(self, src:MetalBuffer) -> memoryview: self.dev.synchronize() return to_mv(cast(int, msg("contents", objc_id)(src.buf).value), src.size + src.offset)[src.offset:] - def _copyin(self, dest:MetalBuffer, src:memoryview): self._cp_mv(self._as_buffer(dest), src, "CPU -> METAL") - def _copyout(self, dest:memoryview, src:MetalBuffer): self._cp_mv(dest, self._as_buffer(src), "METAL -> CPU") + def _copyin(self, dest:MetalBuffer, src:memoryview): self._cp_mv(self._as_buffer(dest), src, "TINY -> METAL") + def _copyout(self, dest:memoryview, src:MetalBuffer): self._cp_mv(dest, self._as_buffer(src), "METAL -> TINY") def _offset(self, buf:MetalBuffer, size:int, offset:int): return MetalBuffer(buf.buf, size, offset) diff --git a/tinygrad_repo/tinygrad/runtime/ops_null.py b/tinygrad_repo/tinygrad/runtime/ops_null.py index 569888d8c..cd293f998 100644 --- a/tinygrad_repo/tinygrad/runtime/ops_null.py +++ b/tinygrad_repo/tinygrad/runtime/ops_null.py @@ -1,26 +1,33 @@ -from tinygrad.device import Compiled, Compiler, Renderer, Allocator -from tinygrad.uop.ops import Ops +import functools +from tinygrad.device import Compiled, Compiler, Allocator from tinygrad.engine.jit import MultiGraphRunner +from tinygrad.renderer.cstyle import CStyleLanguage +from tinygrad.uop.ops import Ops +from tinygrad.helpers import cpu_profile -class NullRenderer(Renderer): +class NullRenderer(CStyleLanguage): device = "NULL" - code_for_op = {k:lambda:None for k in [Ops.EXP2, Ops.LOG2, Ops.SIN, Ops.SQRT]} has_local = False - def render(self, uops:list) -> str: return "" + float4 = "float4" + barrier = "// BARRIER" + code_for_op = {**CStyleLanguage.code_for_op, Ops.THREEFRY: lambda a,b,dtype: f"threefry({a},{b})", Ops.MAX: lambda a,b,dtype: f"max({a},{b})"} class NullProgram: - def __init__(self, name:str, lib:bytes): pass + def __init__(self, device:str, name:str, lib:bytes): self.device, self.name = device, name def __call__(self, *bufs, global_size:tuple[int,int,int]=(1,1,1), local_size:tuple[int,int,int]=(1,1,1), vals:tuple[int, ...]=(), wait=False): - return 1e-4 + with cpu_profile(self.name, self.device): return 1e-4 class NullAllocator(Allocator['NullDevice']): def _alloc(self, size, options): pass def _copyin(self, dest, src:memoryview): pass def _copyout(self, dest:memoryview, src): pass - def _transfer(self, dest, src, sz:int, src_dev, dest_dev): pass + def _transfer(self, dest, src, sz:int, src_dev, dest_dev): + with cpu_profile(f"{src_dev.device} -> {dest_dev.device}", self.dev.device): pass + def _offset(self, buf, offset:int, size:int): pass class NullGraph(MultiGraphRunner): def __call__(self, input_rawbuffers, var_vals, wait=False) -> float|None: return 1e-3 class NullDevice(Compiled): - def __init__(self, device:str): super().__init__(device, NullAllocator(self), NullRenderer(), Compiler(), NullProgram, NullGraph) + def __init__(self, device:str): super().__init__(device, NullAllocator(self), NullRenderer(), Compiler(), functools.partial(NullProgram, device), + NullGraph) diff --git a/tinygrad_repo/tinygrad/runtime/ops_nv.py b/tinygrad_repo/tinygrad/runtime/ops_nv.py index ebb459bdf..81dbbd371 100644 --- a/tinygrad_repo/tinygrad/runtime/ops_nv.py +++ b/tinygrad_repo/tinygrad/runtime/ops_nv.py @@ -7,7 +7,7 @@ from tinygrad.runtime.support.hcq import HCQCompiled, HCQAllocator, HCQBuffer, H from tinygrad.runtime.support.hcq import MMIOInterface, FileIOInterface, MOCKGPU from tinygrad.uop.ops import sint from tinygrad.device import BufferSpec -from tinygrad.helpers import getenv, mv_address, round_up, data64, data64_le, prod, OSX, to_mv, hi32, lo32 +from tinygrad.helpers import getenv, mv_address, round_up, data64, data64_le, prod, OSX, to_mv, hi32, lo32, suppress_finalizing from tinygrad.renderer.ptx import PTXRenderer from tinygrad.renderer.cstyle import NVRenderer from tinygrad.runtime.support.compiler_cuda import CUDACompiler, PTXCompiler, PTX, NVPTXCompiler, NVCompiler @@ -276,11 +276,10 @@ class NVAllocator(HCQAllocator['NVDevice']): def _alloc(self, size:int, options:BufferSpec) -> HCQBuffer: return self.dev.iface.alloc(size, cpu_access=options.cpu_access, host=options.host) + @suppress_finalizing def _free(self, opaque:HCQBuffer, options:BufferSpec): - try: - self.dev.synchronize() - self.dev.iface.free(opaque) - except AttributeError: pass + self.dev.synchronize() + self.dev.iface.free(opaque) def _map(self, buf:HCQBuffer): return self.dev.iface.map(buf._base if buf._base is not None else buf) diff --git a/tinygrad_repo/tinygrad/runtime/ops_python.py b/tinygrad_repo/tinygrad/runtime/ops_python.py index 01fd31854..f5550abd7 100644 --- a/tinygrad_repo/tinygrad/runtime/ops_python.py +++ b/tinygrad_repo/tinygrad/runtime/ops_python.py @@ -4,25 +4,35 @@ # this is the (living) definition of uops from typing import Any, TYPE_CHECKING import pickle, base64, itertools, time, struct, sys -from tinygrad.dtype import DType, dtypes, ImageDType, PtrDType, truncate +from tinygrad.dtype import DType, dtypes, ImageDType, PtrDType, truncate, float_to_bf16 from tinygrad.helpers import all_same, getenv, flatten, get_single_element from tinygrad.device import Compiled, Compiler, Allocator -from tinygrad.opt import tc -from tinygrad.uop.ops import exec_alu, Ops, UOp, GroupOp +from tinygrad.codegen.opt import tc +from tinygrad.uop.ops import exec_alu, python_alu, Ops, UOp, GroupOp from tinygrad.renderer import Renderer -def _load(m, i): +def storage_fmt_for_dtype(dtype: DType): return 'H' if dtype == dtypes.bfloat16 else dtype.fmt + +def to_storage_scalar(x, dtype: DType): + if dtype == dtypes.bfloat16: return (struct.unpack('I', struct.pack('f', float_to_bf16(x)))[0] >> 16) & 0xFFFF + return x + +def from_storage_scalar(x, dtype: DType): + if dtype == dtypes.bfloat16: return struct.unpack('f', struct.pack('I', (x & 0xFFFF) << 16))[0] + return x + +def _load(m, i, dtype: DType): if i is None: return 0.0 if i < 0 or i >= len(m): raise IndexError(f"load out of bounds, size is {len(m)} and access is {i}") - return m[i] + return from_storage_scalar(m[i], dtype) -def load(inp, j=0): - if len(inp) == 2: return [_load(m, x+j if x is not None else None) if gate else default for (m,x,gate),default in zip(*inp)] - return [_load(m, x+j if x is not None else None) for m,x,_ in inp[0]] +def load(inp, j, dtype: DType): + if len(inp) == 2: return [_load(m, x+j if x is not None else None, dtype) if gate else default for (m,x,gate),default in zip(*inp)] + return [_load(m, x+j if x is not None else None, dtype) for m,x,_ in inp[0]] -def _store(m, i, v): +def _store(m, i, v, dtype: DType): if i < 0 or i >= len(m): raise IndexError(f"store out of bounds, size is {len(m)}, access is {i}, value is {v}") - m[i] = v + m[i] = to_storage_scalar(v, dtype) class PythonProgram: def __init__(self, name:str, lib:bytes): @@ -57,18 +67,20 @@ class PythonProgram: if uop is Ops.STORE: for j,val in enumerate(inp[1] if dtp[1].count > 1 else [inp[1]]): for (m,o,g),v in zip(inp[0], val): - if g: _store(m, o+j, v) + if g: _store(m, o+j, v, dtp[1].scalar()) i += 1 continue if uop in {Ops.DEFINE_GLOBAL, Ops.DEFINE_LOCAL, Ops.DEFINE_REG}: - assert dtype.fmt is not None and isinstance(dtype, PtrDType) - if TYPE_CHECKING or sys.version_info < (3, 12): assert dtype.fmt != "e" + assert isinstance(dtype, PtrDType), dtype + storage_fmt = storage_fmt_for_dtype(dtype.base.scalar()) + if storage_fmt is None: raise RuntimeError(f"{dtype=} is not supported") + if TYPE_CHECKING or sys.version_info < (3, 12): assert storage_fmt != "e" if uop is Ops.DEFINE_REG: # REGs are per thread - ul[i] = [memoryview(bytearray(dtype.size*dtype.itemsize)).cast(dtype.fmt) for _ in range(warp_size)] + ul[i] = [memoryview(bytearray(dtype.size*dtype.itemsize)).cast(storage_fmt) for _ in range(warp_size)] else: buf = memoryview(bytearray(dtype.size*dtype.itemsize)) if uop is not Ops.DEFINE_GLOBAL else pbufs.pop(0) - ul[i] = [buf.cast(dtype.fmt)] * warp_size + ul[i] = [buf.cast(storage_fmt)] * warp_size elif uop is Ops.DEFINE_VAR: ul[i] = [pvals.pop(0)] * warp_size elif uop is Ops.SPECIAL: @@ -97,16 +109,17 @@ class PythonProgram: continue elif uop is Ops.VECTORIZE: ul[i] = inp elif uop is Ops.BITCAST: - assert dtp[0].fmt and dtype.fmt - pack_format, unpack_format = str(warp_size) + dtp[0].fmt, str(warp_size) + dtype.fmt - ul[i] = list(struct.unpack(unpack_format, struct.pack(pack_format, *inp[0]))) + packed = struct.pack(str(warp_size) + storage_fmt_for_dtype(dtp[0].scalar()), *[to_storage_scalar(x, dtp[0].scalar()) for x in inp[0]]) + ul[i] = list(struct.unpack(str(warp_size) + storage_fmt_for_dtype(dtype.scalar()), packed)) + ul[i] = [from_storage_scalar(x, dtype.scalar()) for x in ul[i]] elif uop is Ops.CAST: ul[i] = [truncate.get(dtype, lambda dt: dt)(dtypes.as_const(x, dtype)) for x in inp[0]] elif uop is Ops.LOAD: if dtype.count > 1: - ul[i] = [load([inp[i][j] if i != 0 and dtp[i].count > 1 else inp[i] for i in range(len(inp))], j) for j in range(dtype.count)] + ul[i] = [load([inp[i][j] if i != 0 and dtp[i].count > 1 else inp[i] for i in range(len(inp))], j, dtype.scalar()) \ + for j in range(dtype.count)] else: - ul[i] = load(inp) + ul[i] = load(inp, 0, dtype) elif uop is Ops.GEP: ul[i] = inp[0][get_single_element(arg)] elif uop is Ops.WMMA: # here are the models for the WMMA instruction on the different hardware @@ -123,24 +136,27 @@ class PythonProgram: out[elem_idx][goff+lane_id] += sum(a_elem(inp[0], _k, c_j, goff) * b_elem(inp[1], c_i, _k, goff) for _k in range(K)) return out + first_src_dtype = self.uops[idp[0]][1] + assert isinstance(first_src_dtype, DType) # mypy + dims, dtype_in, device, threads = arg[1], first_src_dtype.scalar(), arg[4], arg[5] # TODO: refactor these to a shared TensorCoreLayout in kernel.py - if arg[4] == "METAL": + if device == "METAL": # A (2 elements on 32 threads): row major def a_b_elem(x, i, j, goff): return x[(i%2)][goff+(i//2)%2+(j%4)*2+(i//4)*8+(j//4)*16] # (i, j), C, D (2 elements on 32 threads): row major same as A/B def c_map(lane, elem): return (elem + ((lane%2)*2) + ((lane//8)%2)*4, ((lane//2)%4) + (lane//16)*4) ul[i] = wmma_helper(32, 8, 2, 2, 2, a_b_elem, a_b_elem, c_map) - elif arg[4] == "AMD" and arg[5] == 64: + elif device == "AMD" and threads == 64: def a_elem(x, k, row, goff): return x[k%4][goff + (k//4)*16 + row] def b_elem(x, col, k, goff): return a_elem(x, k, col, goff) # pylint: disable=arguments-out-of-order def c_map(lane, elem): return (lane%16, (lane//16)*4 + elem) ul[i] = wmma_helper(64, 16, 4, 4, 4, a_elem, b_elem, c_map) - elif arg[4] == "AMD" and len(inp[0]) == 8: # RDNA4 + elif device == "AMD" and len(inp[0]) == 8: # RDNA4 def a_elem(x, k, row, goff): return x[k - [0, 4, 4, 8][k//4]][goff + row + [0, 16, 0, 16][k//4]] def b_elem(x, col, k, goff): return a_elem(x, k, col, goff) def c_map(lane, elem): return (lane%16, (lane//16)*8 + elem) ul[i] = wmma_helper(32, 16, 8, 8, 8, a_elem, b_elem, c_map) - elif arg[4] == "AMD": + elif device == "AMD": # A (16 elements on 32 threads): col major, lane 16-32 == lane 0-15 def a_elem(x, k, row, goff): assert x[k][goff+row] == x[k][goff+row+16], "warp elements not duplicated properly across lanes" @@ -149,27 +165,27 @@ class PythonProgram: def b_elem(x, col, k, goff): return a_elem(x, k, col, goff) # pylint: disable=arguments-out-of-order def c_map(lane, elem): return (lane%16, lane//16+elem*2) # (i, j), C, D (8 elements on 32 threads): row major ul[i] = wmma_helper(32, 16, 16, 16, 8, a_elem, b_elem, c_map) - elif arg[4] == "CUDA": + elif device == "CUDA": # (col, row) given (lane, elem) for C & D (4 elements on 32 threads); shared by all tc shapes with M=16 N=8 def c_map(lane, elem): return (elem%2 + (lane%4)*2, lane//4 + (elem//2)*8) - if arg[1] == (8,16,16): + if dims == (8,16,16): def a_elem(x, k, row, goff): return x[k%2 + (row//8)*2 + (k//8)*4][goff + (k//2)%4 + (row%8)*4] def b_elem(x, col, k, goff): return x[k%2 + (k//8)*2][goff + (k//2)%4 + col*4] ul[i] = wmma_helper(32, 16, 8, 4, 4, a_elem, b_elem, c_map) - elif arg[1] == (8,16,8) and arg[2] == dtypes.half: + elif dims == (8,16,8) and dtype_in == dtypes.half: def a_elem(x, k, row, goff): return x[k%2 + (row//8)*2][goff + k//2 + (row%8)*4] def b_elem(x, col, k, goff): return x[k%2][goff + k//2 + col*4] ul[i] = wmma_helper(32, 8, 4, 2, 4, a_elem, b_elem, c_map) - elif arg[1] == (8,16,8) and arg[2] == dtypes.float: + elif dims == (8,16,8) and dtype_in == dtypes.float: def a_elem(x, k, row, goff): return x[(k//4)*2 + row//8][goff + k%4 + (row%8)*4] def b_elem(x, col, k, goff): return x[k//4][goff + k%4 + col*4] ul[i] = wmma_helper(32, 8, 4, 2, 4, a_elem, b_elem, c_map) else: raise NotImplementedError(f"unimplemented tensor core {arg}") - elif arg[4] == "INTEL": + elif device == "INTEL": # A (16 elements on 8 threads) def a_elem(x, k, row, goff): return x[k%2+row*2][goff+k//2] # B (16 elements on 8 threads) @@ -177,14 +193,14 @@ class PythonProgram: # C, D (8 elements on 8 threads) def c_map(lane, elem): return (lane, elem) ul[i] = wmma_helper(8, 16, 16, 16, 8, a_elem, b_elem, c_map) - elif arg[4] == "CPU": + elif device == "CPU": def elem(x, col, row, _): return x[col+row][0] # k is always 0 def c_map(_, elem): return (elem%16, elem//16) ul[i] = wmma_helper(1, 1, 16, 16, 256, elem, elem, c_map) else: raise NotImplementedError(f"unimplemented tensor core {arg}") elif uop in GroupOp.ALU: assert all_same([len(x) for x in inp]), f"{[len(x) for x in inp]} doesn't match on {uop}" - assert all_same([dtype] + dtp) or uop in {Ops.CMPNE, Ops.CMPLT, Ops.WHERE}, f"dtype mismatch on {uop}" + assert all_same([dtype] + dtp) or uop in {*GroupOp.Comparison, Ops.WHERE}, f"dtype mismatch on {uop}" ul[i] = [exec_alu(uop, dtype, p) for p in zip(*inp)] assert i in ul, (uop, dtype, idp, arg) i += 1 @@ -192,6 +208,7 @@ class PythonProgram: class PythonRenderer(Renderer): device = "PYTHON" + code_for_op = python_alu def __init__(self): if getenv("EMULATE_METAL"): self.device, self.tensor_cores = "METAL", tc.metal if getenv("EMULATE_AMD"): self.device, self.tensor_cores = "AMD", tc.amd_rdna3 diff --git a/tinygrad_repo/tinygrad/runtime/ops_remote.py b/tinygrad_repo/tinygrad/runtime/ops_remote.py index cad43b532..27ca50d9c 100644 --- a/tinygrad_repo/tinygrad/runtime/ops_remote.py +++ b/tinygrad_repo/tinygrad/runtime/ops_remote.py @@ -9,6 +9,7 @@ from typing import Callable, Iterator, Any, cast from collections import defaultdict from dataclasses import dataclass, field, replace import multiprocessing, threading, functools, itertools, asyncio, http, http.client, hashlib, time, os, binascii, struct, ast, contextlib, weakref +import traceback, builtins from tinygrad.renderer import Renderer, ProgramSpec from tinygrad.dtype import DTYPES_DICT, dtypes from tinygrad.uop.ops import UOp, Ops, Variable, sint @@ -16,6 +17,7 @@ from tinygrad.helpers import getenv, DEBUG, fromimport, unwrap, LazySeq, Timing from tinygrad.engine.jit import GraphRunner, MultiGraphRunner, ExecItem, graph_class from tinygrad.engine.realize import CompiledRunner, BufferXfer from tinygrad.device import Compiled, Buffer, Allocator, Compiler, Device, BufferSpec +from tinygrad.runtime.support.ib import IBCtx, IBConn, SGE # ***** API ***** @@ -35,6 +37,12 @@ class RemoteProperties: offset_supported: bool graph_supported: bool graph_supports_multi: bool + ib_gid: bytes|None + +@dataclass(frozen=True) +class RemoteException: + exc: Exception + trace: str = "" @dataclass(frozen=True) class GetProperties(RemoteRequest): pass @@ -45,12 +53,18 @@ class Event(RemoteRequest): event_session: SessionKey; event: int # noqa: E702 @dataclass(frozen=True) class Wait(RemoteRequest): event: int +@dataclass(frozen=True) +class IBConnect(RemoteRequest): host: str; gid: bytes; qp_num: int # noqa: E702 + @dataclass(frozen=True) class BufferAlloc(RemoteRequest): buffer_num: int; size: int; options: BufferSpec # noqa: E702 @dataclass(frozen=True) class BufferOffset(RemoteRequest): buffer_num: int; size: int; offset: int; sbuffer_num: int # noqa: E702 +@dataclass(frozen=True) +class BufferIOVAS(RemoteRequest): buffer_nums: list[tuple[SessionKey, int]] # noqa: E702 + @dataclass(frozen=True) class BufferFree(RemoteRequest): buffer_num: int # noqa: E702 @@ -111,9 +125,10 @@ class GraphExec(RemoteRequest): wait: bool # for safe deserialization -eval_globals = {x.__name__:x for x in [SessionKey, SessionFree, RemoteProperties, GetProperties, Event, Wait, BufferAlloc, BufferOffset, BufferFree, - CopyIn, CopyOut, Transfer, BatchTransfer, ProgramAlloc, ProgramFree, ProgramExec, GraphComputeItem, GraphAlloc, - GraphFree, GraphExec, BufferSpec, UOp, Ops, dtypes]} +eval_excs = [v for k,v in builtins.__dict__.items() if isinstance(v, type) and issubclass(v, Exception) and not k.endswith("Warning")] +eval_globals = {x.__name__:x for x in [SessionKey, SessionFree, RemoteProperties, GetProperties, Event, Wait, BufferAlloc, BufferOffset, BufferIOVAS, + BufferFree, CopyIn, CopyOut, Transfer, BatchTransfer, IBConnect, ProgramAlloc, ProgramFree, ProgramExec, + GraphComputeItem, GraphAlloc, GraphFree, GraphExec, BufferSpec, UOp, Ops, dtypes, RemoteException] + eval_excs} attribute_whitelist: dict[Any, set[str]] = {dtypes: {*DTYPES_DICT.keys(), 'imagef', 'imageh'}, Ops: {x.name for x in Ops}} eval_fxns = {ast.Constant: lambda x: x.value, ast.Tuple: lambda x: tuple(map(safe_eval, x.elts)), ast.List: lambda x: list(map(safe_eval, x.elts)), ast.Dict: lambda x: {safe_eval(k):safe_eval(v) for k,v in zip(x.keys, x.values)}, @@ -160,6 +175,12 @@ class RemoteHandler: self.base_device = base_device self.sessions: defaultdict[SessionKey, RemoteSession] = defaultdict(RemoteSession) + try: self.ib_ctx: IBCtx|None = IBCtx(getenv("IB_DEV", 0)) + except (IndexError, AttributeError): self.ib_ctx = None + self.ib_lock = asyncio.Lock() + self.ib_conns: dict[str, IBConn|None] = {} + self.iova_cache: dict[tuple[SessionKey, int], tuple[int, int, int]] = {} + async def __call__(self, reader:asyncio.StreamReader, writer:asyncio.StreamWriter): while (req_hdr:=(await reader.readline()).decode().strip()): req_method, req_path, _ = req_hdr.split(' ') @@ -168,9 +189,36 @@ class RemoteHandler: key, value = hdr.split(':', 1) req_headers[key.lower()] = value.strip() req_body = await reader.readexactly(int(req_headers.get("content-length", "0"))) - res_status, res_body = await self.handle(req_method, req_path, req_body) + try: res_status, res_body = await self.handle(req_method, req_path, req_body) + except Exception as e: + res_status, res_body = http.HTTPStatus.INTERNAL_SERVER_ERROR, repr(RemoteException(e, traceback.format_exc())).encode() + print(f"{traceback.format_exc()}", flush=True) writer.write(f"HTTP/1.1 {res_status.value} {res_status.phrase}\r\nContent-Length: {len(res_body)}\r\n\r\n".encode() + res_body) + async def ib_connect(self, ssession:SessionKey, dsession:SessionKey) -> IBConn|None: + if self.ib_ctx is None: return None + await self.ib_lock.acquire() + conn = RemoteConnection(dsession.host) + if dsession.host not in self.ib_conns: + props = safe_eval(ast.parse(conn.q(GetProperties(session=dsession), wait=True), mode="eval").body) + if props.ib_gid is not None: + self.ib_conns[dsession.host] = ib_conn = IBConn(self.ib_ctx) + ibxc_ret = conn.q(IBConnect(ssession.host, ib_conn.gid, ib_conn.qp_num, session=dsession), wait=True) + ib_conn.connect(*struct.unpack('<16sQ', ibxc_ret)) + else: + self.ib_conns[dsession.host] = None + self.ib_lock.release() + return self.ib_conns[dsession.host] + + async def get_iovas(self, bufs:list[tuple[SessionKey, int]]) -> list[tuple[int, int, int]]: + await self.ib_lock.acquire() + if (rbufs:=[buf for buf in bufs if buf not in self.iova_cache]): + conn = RemoteConnection(rbufs[0][0].host) + resp = await conn.aq(BufferIOVAS(rbufs, session=rbufs[0][0]), wait=True) + self.iova_cache.update({rbuf: struct.unpack(' tuple[http.HTTPStatus, bytes]: status, ret = http.HTTPStatus.OK, b"" if path == "/batch" and method == "POST": @@ -187,7 +235,9 @@ class RemoteHandler: graph_cls = graph_class(Device[self.base_device]) rp = RemoteProperties( real_device=dev.device, renderer=(cls.__module__, cls.__name__, args), offset_supported=hasattr(dev.allocator, '_offset'), - graph_supported=graph_cls is not None, graph_supports_multi=graph_cls is not None and issubclass(graph_cls, MultiGraphRunner), + graph_supported=graph_cls is not None, + graph_supports_multi=graph_cls is not None and issubclass(graph_cls, MultiGraphRunner) and hasattr(dev.allocator, '_transfer'), + ib_gid=bytes(self.ib_ctx.gid_attr.raw) if self.ib_ctx is not None else None, ) ret = repr(rp).encode() case Event(): @@ -200,9 +250,19 @@ class RemoteHandler: case Wait(): assert await session.events[c.event].wait() del session.events[c.event] # do not leak memory + case IBConnect(): + self.ib_conns[c.host] = ibc = IBConn(unwrap(self.ib_ctx)) + ibc.connect(c.gid, c.qp_num) + ret = struct.pack('<16sQ', ibc.gid, ibc.qp_num) case BufferAlloc(): assert c.buffer_num not in session.buffers, f"buffer {c.buffer_num} already allocated" session.buffers[c.buffer_num] = Buffer(dev.device, c.size, dtypes.uint8, options=c.options, preallocate=True) + case BufferIOVAS(): + rets = [] + for buffer_session,buffer_num in c.buffer_nums: + iova, mr = unwrap(self.ib_ctx).reg(buf:=self.sessions[buffer_session].buffers[buffer_num]) + rets.append(struct.pack("=3): for conn,data in datas.items(): conn.conn.request("POST", "/batch", data) for conn in datas.keys(): - response = conn.conn.getresponse() - assert response.status == 200, f"POST /batch failed: {response}" - resp = response.read() - if conn == self: ret = resp + resp = conn.conn.getresponse() + body = resp.read() + resps.append((conn, resp, body)) conn.req = BatchRequest() if take_q: RemoteConnection.q_lock.release() + for conn,resp,body in resps: + match resp.status: + case http.HTTPStatus.OK: pass + case http.HTTPStatus.INTERNAL_SERVER_ERROR: + exc_wrapper = safe_eval(ast.parse(body.decode(), mode="eval").body) + exc_wrapper.exc.add_note(exc_wrapper.trace) + raise exc_wrapper.exc + case code: raise RuntimeError(f"POST /batch failed with {code}: {body.decode()}") + if conn == self: ret = body return ret def parse_hosts(hs:str) -> list[tuple[str, int]]|LazySeq[tuple[str, int]]: diff --git a/tinygrad_repo/tinygrad/runtime/ops_webgpu.py b/tinygrad_repo/tinygrad/runtime/ops_webgpu.py index 1386c963c..eef0a5cc3 100644 --- a/tinygrad_repo/tinygrad/runtime/ops_webgpu.py +++ b/tinygrad_repo/tinygrad/runtime/ops_webgpu.py @@ -1,7 +1,7 @@ import functools, struct from tinygrad.device import Compiled, Allocator, Compiler, BufferSpec from tinygrad.renderer.wgsl import WGSLRenderer -from tinygrad.helpers import round_up +from tinygrad.helpers import round_up, suppress_finalizing from tinygrad.runtime.autogen import webgpu from typing import List, Any, TypeAlias import ctypes @@ -188,9 +188,8 @@ class WebGpuAllocator(Allocator['WGPUDevPtr']): def _copyout(self, dest:memoryview, src:WGPUBufPtr): buffer_data = read_buffer(self.dev, src) dest[:] = buffer_data[:dest.nbytes] if webgpu.wgpuBufferGetSize(src) > dest.nbytes else buffer_data - def _free(self, opaque:WGPUBufPtr, options:BufferSpec): - try: webgpu.wgpuBufferDestroy(opaque) - except AttributeError: pass + @suppress_finalizing + def _free(self, opaque:WGPUBufPtr, options:BufferSpec): webgpu.wgpuBufferDestroy(opaque) class WebGpuDevice(Compiled): def __init__(self, device:str): diff --git a/tinygrad_repo/tinygrad/runtime/support/am/amdev.py b/tinygrad_repo/tinygrad/runtime/support/am/amdev.py index 4626cfdbb..fa9ba7932 100644 --- a/tinygrad_repo/tinygrad/runtime/support/am/amdev.py +++ b/tinygrad_repo/tinygrad/runtime/support/am/amdev.py @@ -10,16 +10,16 @@ from tinygrad.runtime.support.am.ip import AM_SOC, AM_GMC, AM_IH, AM_PSP, AM_SMU AM_DEBUG = getenv("AM_DEBUG", 0) -@dataclasses.dataclass(frozen=True) +@dataclasses.dataclass class AMRegister(AMDReg): adev:AMDev - def read(self): return self.adev.rreg(self.addr) - def read_bitfields(self) -> dict[str, int]: return self.decode(self.read()) + def read(self, inst=0): return self.adev.rreg(self.addr[inst]) + def read_bitfields(self, inst=0) -> dict[str, int]: return self.decode(self.read(inst=inst)) - def write(self, _am_val:int=0, **kwargs): self.adev.wreg(self.addr, _am_val | self.encode(**kwargs)) + def write(self, _am_val:int=0, inst=0, **kwargs): self.adev.wreg(self.addr[inst], _am_val | self.encode(**kwargs)) - def update(self, **kwargs): self.write(self.read() & ~self.fields_mask(*kwargs.keys()), **kwargs) + def update(self, inst=0, **kwargs): self.write(self.read(inst=inst) & ~self.fields_mask(*kwargs.keys()), inst=inst, **kwargs) class AMFirmware: def __init__(self, adev): @@ -29,7 +29,7 @@ class AMFirmware: # Load SOS firmware self.sos_fw = {} - blob, sos_hdr = self.load_fw(f"psp_{fmt_ver(am.MP0_HWIP)}_sos.bin", am.struct_psp_firmware_header_v2_0) + blob, sos_hdr = self.load_fw(f"psp_{fmt_ver(am.MP0_HWIP)}_sos.bin", versioned_header='struct_psp_firmware_header') fw_bin = sos_hdr.psp_fw_bin for fw_i in range(sos_hdr.psp_fw_bin_count): @@ -45,11 +45,11 @@ class AMFirmware: self.smu_psp_desc = self.desc(blob, hdr.header.ucode_array_offset_bytes, hdr.header.ucode_size_bytes, am.GFX_FW_TYPE_SMU) # SDMA firmware - blob, hdr, hdr_v3 = self.load_fw(f"sdma_{fmt_ver(am.SDMA0_HWIP)}.bin", am.struct_sdma_firmware_header_v2_0, am.struct_sdma_firmware_header_v3_0) + blob, hdr = self.load_fw(f"sdma_{fmt_ver(am.SDMA0_HWIP)}.bin", versioned_header='struct_sdma_firmware_header') if hdr.header.header_version_major < 3: self.descs += [self.desc(blob, hdr.ctl_ucode_offset, hdr.ctl_ucode_size_bytes, am.GFX_FW_TYPE_SDMA_UCODE_TH1)] self.descs += [self.desc(blob, hdr.header.ucode_array_offset_bytes, hdr.ctx_ucode_size_bytes, am.GFX_FW_TYPE_SDMA_UCODE_TH0)] - else: self.descs += [self.desc(blob, hdr_v3.header.ucode_array_offset_bytes, hdr_v3.ucode_size_bytes, am.GFX_FW_TYPE_SDMA_UCODE_TH0)] + else: self.descs += [self.desc(blob, hdr.header.ucode_array_offset_bytes, hdr.ucode_size_bytes, am.GFX_FW_TYPE_SDMA_UCODE_TH0)] # PFP, ME, MEC firmware for (fw_name, fw_cnt) in ([('PFP', 1), ('ME', 1)] if self.adev.ip_ver[am.GC_HWIP] >= (12,0,0) else []) + [('MEC', 1)]: @@ -83,10 +83,13 @@ class AMFirmware: self.descs += [self.desc(blob, hdr0.header.ucode_array_offset_bytes, hdr0.header.ucode_size_bytes, am.GFX_FW_TYPE_RLC_G)] - def load_fw(self, fname:str, *headers): + def load_fw(self, fname:str, *headers, versioned_header:str|None=None): fpath = fetch(f"https://gitlab.com/kernel-firmware/linux-firmware/-/raw/45f59212aebd226c7630aff4b58598967c0c8c91/amdgpu/{fname}", subdir="fw") blob = memoryview(bytearray(fpath.read_bytes())) if AM_DEBUG >= 1: print(f"am {self.adev.devfmt}: loading firmware {fname}: {hashlib.sha256(blob).hexdigest()}") + if versioned_header: + chdr = am.struct_common_firmware_header.from_address(mv_address(blob)) + headers += (getattr(am, versioned_header + f"_v{chdr.header_version_major}_{chdr.header_version_minor}"),) return tuple([blob] + [hdr.from_address(mv_address(blob)) for hdr in headers]) def desc(self, blob:memoryview, offset:int, size:int, *types:int) -> tuple[list[int], memoryview]: return (list(types), blob[offset:offset+size]) @@ -101,7 +104,7 @@ class AMPageTableEntry: def entry(self, entry_id:int) -> int: return self.entries[entry_id] def valid(self, entry_id:int) -> bool: return (self.entries[entry_id] & am.AMDGPU_PTE_VALID) != 0 def address(self, entry_id:int) -> int: return self.entries[entry_id] & 0x0000FFFFFFFFF000 - def is_huge_page(self, entry_id:int) -> bool: return self.lv == am.AMDGPU_VM_PTB or self.adev.gmc.is_pte_huge_page(self.entries[entry_id]) + def is_page(self, entry_id:int) -> bool: return self.lv == am.AMDGPU_VM_PTB or self.adev.gmc.is_pte_huge_page(self.entries[entry_id]) def supports_huge_page(self, paddr:int): return self.lv >= am.AMDGPU_VM_PDB2 class AMMemoryManager(MemoryManager): @@ -223,7 +226,7 @@ class AMDev(PCIDevImplBase): self.bhdr = am.struct_binary_header.from_buffer(bytearray(self.vram.view(tmr_offset, tmr_size)[:])) ihdr = am.struct_ip_discovery_header.from_address(ctypes.addressof(self.bhdr) + self.bhdr.table_list[am.IP_DISCOVERY].offset) - assert ihdr.signature == am.DISCOVERY_TABLE_SIGNATURE and not ihdr.base_addr_64_bit, f"0x{ihdr.signature:X} != 0x{am.DISCOVERY_TABLE_SIGNATURE:X}" + assert self.bhdr.binary_signature == am.BINARY_SIGNATURE and ihdr.signature == am.DISCOVERY_TABLE_SIGNATURE, "discovery signatures mismatch" # Mapping of HW IP to Discovery HW IP hw_id_map = {am.__dict__[x]: int(y) for x,y in am.hw_id_map} @@ -236,7 +239,7 @@ class AMDev(PCIDevImplBase): ip_offset = ctypes.addressof(self.bhdr) + ctypes.sizeof(dhdr) + ihdr.die_info[num_die].die_offset for _ in range(dhdr.num_ips): ip = am.struct_ip_v4.from_address(ip_offset) - ba = (ctypes.c_uint32 * ip.num_base_address).from_address(ip_offset + 8) + ba = ((ctypes.c_uint64 if ihdr.base_addr_64_bit else ctypes.c_uint32) * ip.num_base_address).from_address(ip_offset + 8) for hw_ip in range(1, am.MAX_HWIP): if hw_ip in hw_id_map and hw_id_map[hw_ip] == ip.hw_id: self.regs_offset[hw_ip][ip.instance_number] = tuple(list(ba)) @@ -254,6 +257,5 @@ class AMDev(PCIDevImplBase): ("nbio" if self.ip_ver[am.GC_HWIP] < (12,0,0) else "nbif", am.NBIO_HWIP)] for prefix, hwip in mods: - self.__dict__.update(import_asic_regs(prefix, self.ip_ver[hwip], cls=functools.partial(AMRegister, adev=self, bases=self.regs_offset[hwip][0]))) - self.__dict__.update(import_asic_regs('mp', (11, 0), cls=functools.partial(AMRegister, adev=self, bases=self.regs_offset[am.MP1_HWIP][0]))) - + self.__dict__.update(import_asic_regs(prefix, self.ip_ver[hwip], cls=functools.partial(AMRegister, adev=self, bases=self.regs_offset[hwip]))) + self.__dict__.update(import_asic_regs('mp', (11, 0), cls=functools.partial(AMRegister, adev=self, bases=self.regs_offset[am.MP1_HWIP]))) diff --git a/tinygrad_repo/tinygrad/runtime/support/am/ip.py b/tinygrad_repo/tinygrad/runtime/support/am/ip.py index 4878f8582..e6ff7a24e 100644 --- a/tinygrad_repo/tinygrad/runtime/support/am/ip.py +++ b/tinygrad_repo/tinygrad/runtime/support/am/ip.py @@ -1,7 +1,8 @@ -import ctypes, time, contextlib, importlib, functools +import ctypes, time, contextlib, functools from typing import Literal -from tinygrad.runtime.autogen.am import am from tinygrad.helpers import to_mv, data64, lo32, hi32, DEBUG, wait_cond +from tinygrad.runtime.autogen.am import am +from tinygrad.runtime.support.amd import import_soc class AM_IP: def __init__(self, adev): self.adev = adev @@ -11,9 +12,7 @@ class AM_IP: def set_clockgating_state(self): pass # Set clockgating state for this IP class AM_SOC(AM_IP): - def init_sw(self): - self.soc_ver = 24 if self.adev.ip_ver[am.GC_HWIP] >= (12,0,0) else 21 - self.module = importlib.import_module(f"tinygrad.runtime.autogen.am.soc{self.soc_ver}") + def init_sw(self): self.module = import_soc(self.adev.ip_ver[am.GC_HWIP]) def init_hw(self): self.adev.regRCC_DEV0_EPF2_STRAP2.update(strap_no_soft_reset_dev0_f2=0x0) @@ -169,12 +168,12 @@ class AM_SMU(AM_IP): self._send_msg(self.smu_mod.PPSMC_MSG_SetSoftMinByFreq, clck << 16 | (vals[level])) self._send_msg(self.smu_mod.PPSMC_MSG_SetSoftMaxByFreq, clck << 16 | (vals[level])) - def _smu_cmn_send_msg(self, msg, param=0, debug=False): + def _smu_cmn_send_msg(self, msg:int, param=0, debug=False): (self.adev.mmMP1_SMN_C2PMSG_90 if not debug else self.adev.mmMP1_SMN_C2PMSG_54).write(0) # resp reg (self.adev.mmMP1_SMN_C2PMSG_82 if not debug else self.adev.mmMP1_SMN_C2PMSG_53).write(param) (self.adev.mmMP1_SMN_C2PMSG_66 if not debug else self.adev.mmMP1_SMN_C2PMSG_75).write(msg) - def _send_msg(self, msg, param, read_back_arg=False, timeout=10000, debug=False): # 10s + def _send_msg(self, msg:int, param:int, read_back_arg=False, timeout=10000, debug=False): # default timeout is 10 seconds self._smu_cmn_send_msg(msg, param, debug=debug) wait_cond(lambda: (self.adev.mmMP1_SMN_C2PMSG_90 if not debug else self.adev.mmMP1_SMN_C2PMSG_54).read(), value=1, timeout_ms=timeout, msg=f"SMU msg {msg:#x} timeout") @@ -225,7 +224,8 @@ class AM_GFX(AM_IP): self._grbm_select() self.adev.regGCVM_CONTEXT0_CNTL.write(0) - def setup_ring(self, ring_addr:int, ring_size:int, rptr_addr:int, wptr_addr:int, eop_addr:int, eop_size:int, doorbell:int, pipe:int, queue:int): + def setup_ring(self, ring_addr:int, ring_size:int, rptr_addr:int, wptr_addr:int, eop_addr:int, eop_size:int, doorbell:int, pipe:int, queue:int, + aql:bool): mqd = self.adev.mm.valloc(0x1000, uncached=True, contiguous=True) struct_t = getattr(am, f"struct_v{self.adev.ip_ver[am.GC_HWIP][0]}_compute_mqd") @@ -236,9 +236,10 @@ class AM_GFX(AM_IP): cp_hqd_pq_rptr_report_addr_lo=lo32(rptr_addr), cp_hqd_pq_rptr_report_addr_hi=hi32(rptr_addr), cp_hqd_pq_wptr_poll_addr_lo=lo32(wptr_addr), cp_hqd_pq_wptr_poll_addr_hi=hi32(wptr_addr), cp_hqd_pq_doorbell_control=self.adev.regCP_HQD_PQ_DOORBELL_CONTROL.encode(doorbell_offset=doorbell*2, doorbell_en=1), - cp_hqd_pq_control=self.adev.regCP_HQD_PQ_CONTROL.encode(rptr_block_size=5, unord_dispatch=0, queue_size=(ring_size//4).bit_length()-2), + cp_hqd_pq_control=self.adev.regCP_HQD_PQ_CONTROL.encode(rptr_block_size=5, unord_dispatch=0, queue_size=(ring_size//4).bit_length()-2, + **({'queue_full_en':1, 'slot_based_wptr':2, 'no_update_rptr':1} if aql else {})), cp_hqd_ib_control=self.adev.regCP_HQD_IB_CONTROL.encode(min_ib_avail_size=0x3), cp_hqd_hq_status0=0x20004000, - cp_mqd_control=self.adev.regCP_MQD_CONTROL.encode(priv_state=1), cp_hqd_vmid=0, + cp_mqd_control=self.adev.regCP_MQD_CONTROL.encode(priv_state=1), cp_hqd_vmid=0, cp_hqd_aql_control=int(aql), cp_hqd_eop_base_addr_lo=lo32(eop_addr>>8), cp_hqd_eop_base_addr_hi=hi32(eop_addr>>8), cp_hqd_eop_control=self.adev.regCP_HQD_EOP_CONTROL.encode(eop_size=(eop_size//4).bit_length()-2)) @@ -249,7 +250,7 @@ class AM_GFX(AM_IP): self._grbm_select(me=1, pipe=pipe, queue=queue) mqd_st_mv = to_mv(ctypes.addressof(mqd_struct), ctypes.sizeof(mqd_struct)).cast('I') - for i, reg in enumerate(range(self.adev.regCP_MQD_BASE_ADDR.addr, self.adev.regCP_HQD_PQ_WPTR_HI.addr + 1)): + for i, reg in enumerate(range(self.adev.regCP_MQD_BASE_ADDR.addr[0], self.adev.regCP_HQD_PQ_WPTR_HI.addr[0] + 1)): self.adev.wreg(reg, mqd_st_mv[0x80 + i]) self.adev.regCP_HQD_ACTIVE.write(0x1) @@ -414,12 +415,12 @@ class AM_PSP(AM_IP): def _wait_for_bootloader(self): wait_cond(lambda: self.adev.reg(f"{self.reg_pref}_35").read() & 0x80000000, value=0x80000000, msg="BL not ready") - def _prep_msg1(self, data): + def _prep_msg1(self, data:memoryview): assert len(data) <= self.msg1_view.nbytes, f"msg1 buffer is too small {len(data):#x} > {self.msg1_view.nbytes:#x}" self.msg1_view[:len(data)+4] = bytes(data) + b'\x00' * 4 self.adev.gmc.flush_hdp() - def _bootloader_load_component(self, fw, compid): + def _bootloader_load_component(self, fw:int, compid:int): if fw not in self.adev.fw.sos_fw: return 0 self._wait_for_bootloader() @@ -458,8 +459,8 @@ class AM_PSP(AM_IP): wait_cond(lambda: self.adev.reg(f"{self.reg_pref}_64").read() & 0x8000FFFF, value=0x80000000, msg="sOS ring not created") - def _ring_submit(self, cmd): - msg = am.struct_psp_gfx_rb_frame(fence_value=(prev_wptr:=self.adev.reg(f"{self.reg_pref}_67").read()), + def _ring_submit(self, cmd:am.struct_psp_gfx_cmd_resp) -> am.struct_psp_gfx_cmd_resp: + msg = am.struct_psp_gfx_rb_frame(fence_value=(prev_wptr:=self.adev.reg(f"{self.reg_pref}_67").read()) + 1, cmd_buf_addr_lo=lo32(self.adev.paddr2mc(self.cmd_paddr)), cmd_buf_addr_hi=hi32(self.adev.paddr2mc(self.cmd_paddr)), fence_addr_lo=lo32(self.adev.paddr2mc(self.fence_paddr)), fence_addr_hi=hi32(self.adev.paddr2mc(self.fence_paddr))) @@ -469,15 +470,14 @@ class AM_PSP(AM_IP): # Move the wptr self.adev.reg(f"{self.reg_pref}_67").write(prev_wptr + ctypes.sizeof(am.struct_psp_gfx_rb_frame) // 4) - while self.adev.vram.view(self.fence_paddr, 4, 'I')[0] != prev_wptr: pass - time.sleep(0.005) + wait_cond(lambda: self.adev.vram.view(self.fence_paddr, 4, 'I')[0], value=msg.fence_value, msg="sOS ring not responding") resp = type(cmd).from_buffer(bytearray(self.adev.vram.view(self.cmd_paddr, ctypes.sizeof(cmd))[:])) if resp.resp.status != 0: raise RuntimeError(f"PSP command failed {resp.cmd_id} {resp.resp.status}") return resp - def _load_ip_fw_cmd(self, fw_types, fw_bytes): + def _load_ip_fw_cmd(self, fw_types:list[int], fw_bytes:memoryview): self._prep_msg1(fw_bytes) for fw_type in fw_types: if DEBUG >= 2: print(f"am {self.adev.devfmt}: loading fw: {am.psp_gfx_fw_type__enumvalues[fw_type]}") @@ -487,7 +487,7 @@ class AM_PSP(AM_IP): cmd.cmd.cmd_load_ip_fw.fw_type = fw_type self._ring_submit(cmd) - def _tmr_load_cmd(self): + def _tmr_load_cmd(self) -> am.struct_psp_gfx_cmd_resp: cmd = am.struct_psp_gfx_cmd_resp(cmd_id=am.GFX_CMD_ID_SETUP_TMR) cmd.cmd.cmd_setup_tmr.buf_phy_addr_hi, cmd.cmd.cmd_setup_tmr.buf_phy_addr_lo = data64(self.adev.paddr2mc(self.tmr_paddr)) cmd.cmd.cmd_setup_tmr.system_phy_addr_hi, cmd.cmd.cmd_setup_tmr.system_phy_addr_lo = data64(self.tmr_paddr) @@ -495,7 +495,7 @@ class AM_PSP(AM_IP): cmd.cmd.cmd_setup_tmr.buf_size = self.tmr_size return self._ring_submit(cmd) - def _load_toc_cmd(self, toc_size): + def _load_toc_cmd(self, toc_size:int) -> am.struct_psp_gfx_cmd_resp: cmd = am.struct_psp_gfx_cmd_resp(cmd_id=am.GFX_CMD_ID_LOAD_TOC) cmd.cmd.cmd_load_toc.toc_phy_addr_hi, cmd.cmd.cmd_load_toc.toc_phy_addr_lo = data64(self.msg1_addr) cmd.cmd.cmd_load_toc.toc_size = toc_size diff --git a/tinygrad_repo/tinygrad/runtime/support/amd.py b/tinygrad_repo/tinygrad/runtime/support/amd.py index f2ad87e5a..bc87ddae8 100644 --- a/tinygrad_repo/tinygrad/runtime/support/amd.py +++ b/tinygrad_repo/tinygrad/runtime/support/amd.py @@ -5,9 +5,10 @@ from tinygrad.helpers import getbits, round_up, fetch from tinygrad.runtime.autogen import pci from tinygrad.runtime.support.usb import ASM24Controller -@dataclass(frozen=True) +@dataclass class AMDReg: - name:str; offset:int; segment:int; fields:dict[str, tuple[int, int]]; bases:tuple[int, ...] # noqa: E702 + name:str; offset:int; segment:int; fields:dict[str, tuple[int, int]]; bases:dict[int, tuple[int, ...]] # noqa: E702 + def __post_init__(self): self.addr:dict[int, int] = { inst: bases[self.segment] + self.offset for inst, bases in self.bases.items() } def encode(self, **kwargs) -> int: return functools.reduce(int.__or__, (value << self.fields[name][0] for name,value in kwargs.items()), 0) def decode(self, val: int) -> dict: return {name:getbits(val, start, end) for name,(start,end) in self.fields.items()} @@ -15,12 +16,9 @@ class AMDReg: def fields_mask(self, *names) -> int: return functools.reduce(int.__or__, ((((1 << (self.fields[nm][1]-self.fields[nm][0]+1)) - 1) << self.fields[nm][0]) for nm in names), 0) - @property - def addr(self): return self.bases[self.segment] + self.offset - @dataclass class AMDIP: - name:str; version:tuple[int, ...]; bases:tuple[int, ...] # noqa: E702 + name:str; version:tuple[int, ...]; bases:dict[int, tuple[int, ...]] # noqa: E702 def __post_init__(self): self.version = fixup_ip_version(self.name, self.version)[0] @functools.cached_property @@ -45,12 +43,22 @@ def fixup_ip_version(ip:str, version:tuple[int, ...]) -> list[tuple[int, ...]]: return [version, version[:2], version[:2]+(0,), version[:1]+(0, 0)] +def header_download(file, name=None, subdir="defines") -> str: + url = "https://gitlab.com/linux-kernel/linux-next/-/raw/cf6d949a409e09539477d32dbe7c954e4852e744/drivers/gpu/drm/amd" + return fetch(f"{url}/{file}", name=name, subdir=subdir).read_text() + +def import_header(path:str): + t = re.sub(r'//.*|/\*.*?\*/','', header_download(path, subdir="defines"), flags=re.S) + return {k:int(v,0) for k,v in re.findall(r'\b([A-Za-z_]\w*)\s*=\s*(0x[0-9A-Fa-f]+|\d+)', t)} + def import_module(name:str, version:tuple[int, ...], version_prefix:str=""): for ver in fixup_ip_version(name, version): try: return importlib.import_module(f"tinygrad.runtime.autogen.am.{name}_{version_prefix}{'_'.join(map(str, ver))}") except ImportError: pass raise ImportError(f"Failed to load autogen module for {name.upper()} {'.'.join(map(str, version))}") +def import_soc(ip): return type("SOC", (object,), import_header(f"include/{({9: 'vega10', 10: 'navi10', 11: 'soc21', 12: 'soc24'}[ip[0]])}_enum.h")) + def import_asic_regs(prefix:str, version:tuple[int, ...], cls=AMDReg) -> dict[str, AMDReg]: def _split_name(name): return name[:(pos:=next((i for i,c in enumerate(name) if c.isupper()), len(name)))], name[pos:] def _extract_regs(txt): @@ -58,8 +66,7 @@ def import_asic_regs(prefix:str, version:tuple[int, ...], cls=AMDReg) -> dict[st def _download_file(ver, suff) -> str: dir_prefix = {"osssys": "oss"}.get(prefix, prefix) fetch_name, file_name = f"{prefix}_{'_'.join(map(str, ver))}_{suff}.h", f"{prefix}_{'_'.join(map(str, version))}_{suff}.h" - url = "https://gitlab.com/linux-kernel/linux-next/-/raw/cf6d949a409e09539477d32dbe7c954e4852e744/drivers/gpu/drm/amd/include/asic_reg" - return fetch(f"{url}/{dir_prefix}/{fetch_name}", name=file_name, subdir="asic_regs").read_text() + return header_download(f"include/asic_reg/{dir_prefix}/{fetch_name}", name=file_name, subdir="asic_regs") for ver in fixup_ip_version(prefix, version): try: offs, sh_masks = _extract_regs(_download_file(ver, "offset")), _extract_regs(_download_file(ver, "sh_mask")) diff --git a/tinygrad_repo/tinygrad/runtime/support/hcq.py b/tinygrad_repo/tinygrad/runtime/support/hcq.py index 0dda28f49..47962a960 100644 --- a/tinygrad_repo/tinygrad/runtime/support/hcq.py +++ b/tinygrad_repo/tinygrad/runtime/support/hcq.py @@ -358,14 +358,14 @@ class HCQCompiled(Compiled, Generic[SignalType]): peer_groups: dict[str, list[HCQCompiled]] = collections.defaultdict(list) signal_pages: dict[str, list[HCQBuffer]] = collections.defaultdict(list) # per peer group signal_pool: dict[str, list[HCQBuffer]] = collections.defaultdict(list) # per peer group + cpu_devices: list[HCQCompiled] = [] def __init__(self, device:str, allocator:HCQAllocatorBase, renderer:Renderer, compiler:Compiler, runtime, signal_t:Type[SignalType], - comp_queue_t:Callable[[], HWQueue], copy_queue_t:Callable[[], HWQueue]|None=None, kernargs_size=(16 << 20), sigalloc_size=0x1000, - supports_graph=True): + comp_queue_t:Callable[[], HWQueue], copy_queue_t:Callable[[], HWQueue]|None=None, kernargs_size=(16 << 20), sigalloc_size=0x1000): self.device_id:int = int(device.split(":")[1]) if ":" in device else 0 from tinygrad.runtime.graph.hcq import HCQGraph - super().__init__(device, allocator, renderer, compiler, runtime, HCQGraph if supports_graph else None) + super().__init__(device, allocator, renderer, compiler, runtime, HCQGraph) # TODO: peer logic is determined based on device name. self.peer_group = device.split(":")[0] @@ -383,9 +383,20 @@ class HCQCompiled(Compiled, Generic[SignalType]): self.kernargs_buf:HCQBuffer = self.allocator.alloc(kernargs_size, BufferSpec(cpu_access=True)) self.kernargs_offset_allocator:BumpAllocator = BumpAllocator(self.kernargs_buf.size, wrap=True) + self.error_state:Exception|None = None # Exception if error is unrecoverable and sync will always fail + + if self._is_cpu(): HCQCompiled.cpu_devices.append(self) + def synchronize(self): + if self.error_state is not None: raise self.error_state + + # If we have any work on CPU devices, need to synchronize them. This is just an optimization to release GIL allowing to finish faster. + if not self._is_cpu(): + for dev in HCQCompiled.cpu_devices: dev.synchronize() + try: self.timeline_signal.wait(self.timeline_value - 1) except RuntimeError as e: + self.error_state = e if hasattr(self, 'on_device_hang'): self.on_device_hang() else: raise e @@ -432,12 +443,13 @@ class HCQCompiled(Compiled, Generic[SignalType]): return buf, realloced def _select_iface(self, *ifaces:Type): - errs:str = "" + errs, err_short = "", "" if val:=getenv(f'{type(self).__name__[:-6].upper()}_IFACE', ""): ifaces = tuple(x for x in ifaces if x.__name__.startswith(val.upper())) for iface_t in ifaces: try: return iface_t(self, self.device_id) - except Exception: errs += f"\n{iface_t.__name__}: {traceback.format_exc()}" - raise RuntimeError(f"Cannot find a usable interface for {type(self).__name__[:-6]}:{self.device_id}:\n{errs}") + except Exception as e: errs, err_short = errs + f"\n{iface_t.__name__}: {traceback.format_exc()}", err_short + f"\n{iface_t.__name__}: {e}" + raise RuntimeError(f"{errs}\nNo interface for {type(self).__name__[:-6]}:{self.device_id} is available:{err_short}\n" \ + f"\nForce an interface with {type(self).__name__[:-6].upper()}_IFACE={('|'.join(x.__name__[:-5] for x in ifaces))}.") def _is_cpu(self) -> bool: return hasattr(self, 'device') and self.device.split(":")[0] in ("CPU", "LLVM") @@ -496,7 +508,7 @@ class HCQAllocatorBase(LRUAllocator[HCQDeviceType], Generic[HCQDeviceType]): class HCQAllocator(HCQAllocatorBase, Generic[HCQDeviceType]): def _copyin(self, dest:HCQBuffer, src:memoryview): assert self.dev.hw_copy_queue_t is not None - with hcq_profile(self.dev, queue_type=self.dev.hw_copy_queue_t, desc=f"CPU -> {self.dev.device}", enabled=PROFILE): + with hcq_profile(self.dev, queue_type=self.dev.hw_copy_queue_t, desc=f"TINY -> {self.dev.device}", enabled=PROFILE): for i in range(0, src.nbytes, self.b[0].size): self.b_next = (self.b_next + 1) % len(self.b) self.dev.timeline_signal.wait(self.b_timeline[self.b_next]) @@ -528,7 +540,7 @@ class HCQAllocator(HCQAllocatorBase, Generic[HCQDeviceType]): self.dev.synchronize() assert self.dev.hw_copy_queue_t is not None - with hcq_profile(self.dev, queue_type=self.dev.hw_copy_queue_t, desc=f"{self.dev.device} -> CPU", enabled=PROFILE): + with hcq_profile(self.dev, queue_type=self.dev.hw_copy_queue_t, desc=f"{self.dev.device} -> TINY", enabled=PROFILE): for i in range(0, dest.nbytes, cp_size:=(self.max_copyout_size or self.b[0].size)): self.dev.hw_copy_queue_t().wait(self.dev.timeline_signal, self.dev.timeline_value - 1) \ .copy(self.b[0].va_addr, src.va_addr+i, lsize:=min(cp_size, dest.nbytes-i)) \ diff --git a/tinygrad_repo/tinygrad/runtime/support/ib.py b/tinygrad_repo/tinygrad/runtime/support/ib.py new file mode 100644 index 000000000..06c1220e4 --- /dev/null +++ b/tinygrad_repo/tinygrad/runtime/support/ib.py @@ -0,0 +1,172 @@ +from __future__ import annotations +import resource, ctypes, weakref, functools, itertools, tinygrad.runtime.autogen.ib as ib +from typing import Iterator +from dataclasses import dataclass +from weakref import WeakKeyDictionary +from tinygrad.device import Buffer, DMACPURef, DMAFdRef +from tinygrad.helpers import getenv, round_up, DEBUG + +DEFAULT_PORT, DEFAULT_GID = getenv("DEFAULT_PORT", 1), getenv("DEFAULT_GID", 3) # DEFAULT_GID=0 for RXE +IOVA_ALIGN = resource.getpagesize() + +def checkz(x, ret=None): + assert x == 0, f'{x} != 0 (errno {ctypes.get_errno()})' + return ret + +@dataclass(frozen=True) +class SGE: + dst_iova: int + dst_key: int + src_iova: int + src_key: int + size: int + +class IBCtx: + def __init__(self, idx:int): + # Open the device (aka Host Channel Adapter in ib-speak) + devs = ib.ibv_get_device_list(ctypes.byref(ndevs:=ctypes.c_int32())) + if idx >= ndevs.value: raise IndexError(f"{idx} > {ndevs.value}") + self.ctx = ib.ibv_open_device(devs[idx]) + ib.ibv_free_device_list(devs) + + # HACK: remove this (and all usage of `ctx.contents.ops`) when clang2py can deal with `static inline` wrapper-functions + self.vctx = ctypes.cast(ctypes.addressof(self.ctx.contents) - ib.struct_verbs_context.context.offset, ctypes.POINTER(ib.struct_verbs_context)) + + # Get attributes. Something like port_attr.max_msg_sz sound like it might requre taking the min of host's and remote's attributes if they differ + self.device_attr = checkz(ib.ibv_query_device(self.ctx, ctypes.byref(da:=ib.struct_ibv_device_attr())), da) + self.port_attr = checkz(self.vctx.contents.query_port(self.ctx, DEFAULT_PORT, ctypes.byref(pa:=ib.struct_ibv_port_attr()), ctypes.sizeof(pa)), pa) + self.gid_attr = checkz(ib.ibv_query_gid(self.ctx, DEFAULT_PORT, DEFAULT_GID, ctypes.byref(ga:=ib.union_ibv_gid())), ga) + + # Allocate protection domain + self.pd = ib.ibv_alloc_pd(self.ctx) + self.next_iova: int = IOVA_ALIGN # don't start at zero (nullptr) + + # weakref(buf) => (iova, mr, mr_dealloc). mr_dealloc is kept here to avoid double freeing mrs that are deallocated in __del__ + self.mrs: WeakKeyDictionary[Buffer, tuple[int, ctypes._Pointer[ib.struct_ibv_mr], weakref.finalize]] = WeakKeyDictionary() + + # Default soft fd limit is 1024, which is not enough, set soft to hard (maximum allowed by the os) + IBCtx.rlimit_fix() + + def __del__(self): + # must deallocate all mrs in protection domain before deallocating the protection domain + if hasattr(self, "mrs"): [fin() for _,_,fin in self.mrs.values()] + if hasattr(self, "pd"): ib.ibv_dealloc_pd(self.pd) + if hasattr(self, "ctx"): ib.ibv_close_device(self.ctx) + + @functools.cache # run once + @staticmethod + def rlimit_fix(): + soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE) + resource.setrlimit(resource.RLIMIT_NOFILE, (hard, hard)) + if DEBUG>=2: print(f"IB: Increased fd limit from {soft} to {hard}") + + def alloc_iova(self, size:int, required_offset:int): + iova = round_up(self.next_iova - required_offset, IOVA_ALIGN) + required_offset + self.next_iova = iova + size + return iova + + def reg(self, buf:Buffer) -> tuple[int, ctypes._Pointer[ib.struct_ibv_mr]]: + buf = buf.base + if buf not in self.mrs: + if buf.nbytes > self.device_attr.max_mr_size: raise RuntimeError(f"Buffer too big: {buf.nbytes:#x} > {self.device_attr.max_mr_size:#x}") + if len(self.mrs) >= self.device_attr.max_mr: raise RuntimeError(f"Out of memory region cap: {len(self.mrs)} >= {self.device_attr.max_mr}") + # Local read is implied (but still have to create the memory region, except for short sends/writes with IBV_SEND_INLINE that are inlined by cpu) + mr_flags = ib.IBV_ACCESS_LOCAL_WRITE | ib.IBV_ACCESS_REMOTE_READ | ib.IBV_ACCESS_REMOTE_WRITE + match (dmaref:=buf.as_dmaref()): + case DMACPURef(): + iova = self.alloc_iova(dmaref.size, dmaref.addr % IOVA_ALIGN) + mr = ib.ibv_reg_mr_iova2(self.pd, ctypes.c_void_p(dmaref.addr), dmaref.size, iova, mr_flags) + case DMAFdRef(): + iova = self.alloc_iova(dmaref.size, dmaref.offset % IOVA_ALIGN) + mr = ib.ibv_reg_dmabuf_mr(self.pd, dmaref.offset, dmaref.size, iova, dmaref.fd, mr_flags) + case _: raise RuntimeError(f"Unknown type of dma ref: {dmaref}") + if not mr: raise RuntimeError(f"Couldn't register memory region for {buf} {dmaref} (errno={ctypes.get_errno()})") + self.mrs[buf] = (iova, mr, weakref.finalize(buf, ib.ibv_dereg_mr, mr)) + return self.mrs[buf][0:2] + +class IBConn: + def __init__(self, ctx:IBCtx): + self.ctx = ctx + + # Create Completion Channel. It is a file descriptor that kernel sends notifications through, not a thing in infiniband spec, just linux-ism + self.comp_channel = ib.ibv_create_comp_channel(self.ctx.ctx) + # Create Completion Queue. When a Work Request with signaled flag is completed a Completion Queue Entry is pushed onto this queue + self.cq = ib.ibv_create_cq(self.ctx.ctx, _capacity:=256, _cq_context:=None, self.comp_channel, _comp_vector:=0) + self.pending_wrids: set[int] = set() + self.wrid_num: Iterator[int] = itertools.count(0) # wc_id is uint64, this will never overflow + + # Create Queue Pair. It's the closest thing to a socket in infiniband with QP num being the closest thing to a port, except it's allocated by hca + qp_init_attrs_cap = ib.struct_ibv_qp_cap(max_send_wr=1024, max_recv_wr=64, max_send_sge=8, max_recv_sge=8, max_inline_data=64) + qp_init_attrs = ib.struct_ibv_qp_init_attr(send_cq=self.cq, recv_cq=self.cq, cap=qp_init_attrs_cap, qp_type=ib.IBV_QPT_RC) # Reliable Connection + self.qp = ib.ibv_create_qp(self.ctx.pd, ctypes.byref(qp_init_attrs)) + self.qp_cap = qp_init_attrs.cap + + # The most important thing about QPs is their state, when a new QP is created it's in the RESET state, before it can be properly used it has to go + # through Init, Ready To Receive, Ready To Send. A good docs on QP state machine: https://www.rdmamojo.com/2012/05/05/qp-state-machine/ + + # INIT + qp_access_flags = ib.IBV_ACCESS_REMOTE_WRITE | ib.IBV_ACCESS_REMOTE_READ + qpa = ib.struct_ibv_qp_attr(qp_state=ib.IBV_QPS_INIT, port_num=DEFAULT_PORT, qp_access_flags=qp_access_flags) + checkz(ib.ibv_modify_qp(self.qp, qpa, ib.IBV_QP_STATE | ib.IBV_QP_PORT | ib.IBV_QP_ACCESS_FLAGS | ib.IBV_QP_PKEY_INDEX)) + + self.gid, self.qp_num = bytes(self.ctx.gid_attr.raw), self.qp.contents.qp_num + + # Exchange GID and QP num with remote. At least in RoCEv2 gid can be guessed from remote's ip, QP num can't. + + def connect(self, remote_gid:bytes, remote_qp_num:int): + # RTR + qp_ah_attr_grh = ib.struct_ibv_global_route(hop_limit=1, dgid=ib.union_ibv_gid(raw=(ctypes.c_ubyte * 16)(*remote_gid)), sgid_index=DEFAULT_GID) + qp_ah_attr = ib.struct_ibv_ah_attr(is_global=1, port_num=DEFAULT_PORT, grh=qp_ah_attr_grh) + qpa = ib.struct_ibv_qp_attr(qp_state=ib.IBV_QPS_RTR, path_mtu=ib.IBV_MTU_4096, dest_qp_num=remote_qp_num, rq_psn=0, max_dest_rd_atomic=1, + min_rnr_timer=12, ah_attr=qp_ah_attr) + checkz(ib.ibv_modify_qp(self.qp, qpa, ib.IBV_QP_STATE | ib.IBV_QP_PATH_MTU | ib.IBV_QP_DEST_QPN | ib.IBV_QP_RQ_PSN | \ + ib.IBV_QP_MAX_DEST_RD_ATOMIC | ib.IBV_QP_MIN_RNR_TIMER | ib.IBV_QP_AV)) + + # RTS + qpa = ib.struct_ibv_qp_attr(qp_state=ib.IBV_QPS_RTS, timeout=14, retry_cnt=7, rnr_retry=7, sq_psn=0, max_rd_atomic=1) + checkz(ib.ibv_modify_qp(self.qp, qpa, ib.IBV_QP_STATE | ib.IBV_QP_TIMEOUT | ib.IBV_QP_RETRY_CNT | ib.IBV_QP_RNR_RETRY | ib.IBV_QP_SQ_PSN | \ + ib.IBV_QP_MAX_QP_RD_ATOMIC)) + + def __del__(self): + self.wait_cq() # need to wait for **everything** to complete before it's safe to dealloc queues and stuff + ib.ibv_destroy_qp(self.qp) + ib.ibv_destroy_cq(self.cq) + ib.ibv_destroy_comp_channel(self.comp_channel) + + def next_wrid(self): + self.pending_wrids.add(wrid:=next(self.wrid_num)) + return wrid + + def wait_cq(self, wr_id: int|None=None): + while (wr_id in self.pending_wrids) if wr_id is not None else self.pending_wrids: + if self.ctx.ctx.contents.ops.poll_cq(self.cq, _num_entries:=1, ctypes.byref(wc:=ib.struct_ibv_wc())): + if wc.status != ib.IBV_WC_SUCCESS: + raise RuntimeError(f'Work Request completed with error: wr_id={wc.wr_id} status={ib.ibv_wc_status__enumvalues.get(wc.status, wc.status)}') + self.pending_wrids.remove(wc.wr_id) + + def rdma_write(self, sgl:list[SGE]): + swr: ctypes._Pointer[ib.struct_ibv_send_wr]|None = None + swr_cnt, wr_id = 0, self.next_wrid() + def _post(): + nonlocal swr, swr_cnt, wr_id + if swr is not None: + # The swr can be freed when this returns, the memory that sge points to can be unmapped after work completion is retrieved from cq + checkz(self.ctx.ctx.contents.ops.post_send(self.qp, swr, ctypes.byref(_bad_wr:=ctypes.POINTER(ib.struct_ibv_send_wr)()))) + # TODO: async + self.wait_cq(wr_id) + swr, swr_cnt, wr_id = None, 0, self.next_wrid() + # Everything is in reverse for elegant chaining + for sg in reversed(sgl): + # Message size limit (max 2GB per ib spec, 1GB on tinybox mellanoxes) applies to both scatter-gather entries and entire wrs + for off in reversed(range(0, sg.size, self.ctx.port_attr.max_msg_sz)): + # Scatter-Gather Entry for local memory + sge = ctypes.pointer(ib.struct_ibv_sge(addr=sg.src_iova+off, length=min(sg.size-off, self.ctx.port_attr.max_msg_sz), lkey=sg.src_key)) + # RDMA struct for remote memory + wr = ib.union_ibv_send_wr_wr(rdma=ib.struct_ibv_send_wr_1_rdma(remote_addr=sg.dst_iova+off, rkey=sg.dst_key)) + # Signal (with chosen work request id) if it's the last wr (first in the loop since it's reversed) + wid, flags = (wr_id, ib.IBV_SEND_SIGNALED) if swr is None else (0, 0) + # Create Send Request + swr = ctypes.pointer(ib.struct_ibv_send_wr(opcode=ib.IBV_WR_RDMA_WRITE, sg_list=sge, num_sge=1, wr=wr, wr_id=wid, send_flags=flags, next=swr)) + # Flush if queue is being overrun + if (swr_cnt:=swr_cnt + 1) >= self.qp_cap.max_send_wr: _post() + _post() diff --git a/tinygrad_repo/tinygrad/runtime/support/memory.py b/tinygrad_repo/tinygrad/runtime/support/memory.py index f7abe19e5..0c74ea412 100644 --- a/tinygrad_repo/tinygrad/runtime/support/memory.py +++ b/tinygrad_repo/tinygrad/runtime/support/memory.py @@ -77,11 +77,10 @@ class TLSFAllocator: if self.lv1_entries[l1] == 0: continue for l2 in range(self.lv2(size) if l1 == size.bit_length() else 0, (1 << self.l2_cnt)): if len(self.storage[l1][l2]) > 0: - nsize = self.blocks[self.storage[l1][l2][0]][0] - assert nsize >= size, "block must be larger" - # Block start address. start = self.storage[l1][l2][0] + nsize = self.blocks[start][0] + assert nsize >= size, "block must be larger" # If request contains alignment, split the block into two parts. if (new_start:=round_up(start, align)) != start: @@ -118,7 +117,7 @@ class PageTableTraverseContext: assert self.create_pts, "Not allowed to create new page table" pt.set_entry(pte_idx, self.dev.mm.palloc(0x1000, zero=True, boot=self.boot), table=True, valid=True) - assert not pt.is_huge_page(pte_idx), f"Must be table pt={pt.paddr:#x}, {pt.lv=} {pte_idx=} {pt.read_fields(pte_idx)}" + assert not pt.is_page(pte_idx), f"Must be table pt={pt.paddr:#x}, {pt.lv=} {pte_idx=} {pt.read_fields(pte_idx)}" child_page_table = self.dev.mm.pt_t(self.dev, pt.address(pte_idx), lv=pt.lv+1) self.pt_stack.append((child_page_table, self._pt_pte_idx(child_page_table, self.vaddr), self._pt_pte_size(child_page_table))) @@ -145,7 +144,7 @@ class PageTableTraverseContext: assert paddr is not None, "paddr must be provided when allocating new page tables" while pte_covers > size or not pt.supports_huge_page(paddr+off) or self.vaddr&(pte_covers-1) != 0: pt, pte_idx, pte_covers = self.level_down() else: - while not pt.is_huge_page(pte_idx): pt, pte_idx, pte_covers = self.level_down() + while not pt.is_page(pte_idx): pt, pte_idx, pte_covers = self.level_down() entries = min(size // pte_covers, self._pt_pte_cnt(pt.lv) - pte_idx) assert entries > 0, f"Invalid entries {size=:#x}, {pte_covers=:#x}" diff --git a/tinygrad_repo/tinygrad/runtime/support/nv/ip.py b/tinygrad_repo/tinygrad/runtime/support/nv/ip.py index bae8e0cbe..203796021 100644 --- a/tinygrad_repo/tinygrad/runtime/support/nv/ip.py +++ b/tinygrad_repo/tinygrad/runtime/support/nv/ip.py @@ -1,6 +1,6 @@ from __future__ import annotations import ctypes, time, array, struct, itertools, dataclasses -from typing import cast +from typing import cast, Any from tinygrad.runtime.autogen.nv import nv from tinygrad.helpers import to_mv, lo32, hi32, DEBUG, round_up, round_down, mv_address, fetch, wait_cond from tinygrad.runtime.support.system import System @@ -8,7 +8,7 @@ from tinygrad.runtime.support.elf import elf_loader from tinygrad.runtime.autogen import nv_gpu @dataclasses.dataclass(frozen=True) -class GRBufDesc: size:int; v:int; p:int; lc:int=0 # noqa: E702 +class GRBufDesc: size:int; virt:bool; phys:bool; local:bool=False # noqa: E702 class NV_IP: def __init__(self, nvdev): self.nvdev = nvdev @@ -26,13 +26,13 @@ class NVRpcQueue: self.gsp, self.va, self.queue_va, self.seq = gsp, va, va + self.tx.entryOff, 0 self.queue_mv = to_mv(self.queue_va, self.tx.msgSize * self.tx.msgCount) - def _checksum(self, data): + def _checksum(self, data:bytes): if (pad_len:=(-len(data)) % 8): data += b'\x00' * pad_len checksum = 0 for offset in range(0, len(data), 8): checksum ^= struct.unpack_from('Q', data, offset)[0] return hi32(checksum) ^ lo32(checksum) - def send_rpc(self, func, msg, wait=False): + def send_rpc(self, func:int, msg:bytes, wait=False): header = nv.rpc_message_header_v(signature=nv.NV_VGPU_MSG_SIGNATURE_VALID, rpc_result=nv.NV_VGPU_MSG_RESULT_RPC_PENDING, rpc_result_private=nv.NV_VGPU_MSG_RESULT_RPC_PENDING, header_version=(3<<24), function=func, length=len(msg) + 0x20) @@ -49,7 +49,7 @@ class NVRpcQueue: self.seq += 1 self.gsp.nvdev.NV_PGSP_QUEUE_HEAD[0].write(0x0) - def wait_resp(self, cmd) -> memoryview: + def wait_resp(self, cmd:int) -> memoryview: while True: System.memory_barrier() if self.rx.readPtr == self.tx.writePtr: continue @@ -60,7 +60,8 @@ class NVRpcQueue: # Handling special functions if hdr.function == nv.NV_VGPU_MSG_EVENT_GSP_RUN_CPU_SEQUENCER: self.gsp.run_cpu_seq(msg) - elif hdr.function == nv.NV_VGPU_MSG_EVENT_OS_ERROR_LOG: print(f"GSP LOG: {msg[12:].tobytes().rstrip(bytes([0])).decode('utf-8')}") + elif hdr.function == nv.NV_VGPU_MSG_EVENT_OS_ERROR_LOG: + print(f"nv {self.gsp.nvdev.devfmt}: GSP LOG: {msg[12:].tobytes().rstrip(bytes([0])).decode('utf-8')}") # Update the read pointer self.rx.readPtr = (self.rx.readPtr + round_up(hdr.length, self.tx.msgSize) // self.tx.msgSize) % self.tx.msgCount @@ -177,7 +178,7 @@ class NV_FLCN(NV_IP): self.nvdev.NV_PFALCON_FALCON_OS.with_base(self.falcon).write(0x0) assert self.nvdev.NV_PRISCV_RISCV_CPUCTL.with_base(self.falcon).read_bitfields()['active_stat'] == 1, "GSP Core is not active" - def execute_dma(self, base, cmd, dest, mem_off, sysmem, size): + def execute_dma(self, base:int, cmd:int, dest:int, mem_off:int, sysmem:int, size:int): wait_cond(lambda: self.nvdev.NV_PFALCON_FALCON_DMATRFCMD.with_base(base).read_bitfields()['full'], value=0, msg="DMA does not progress") self.nvdev.NV_PFALCON_FALCON_DMATRFBASE.with_base(base).write(lo32(sysmem >> 8)) @@ -194,7 +195,7 @@ class NV_FLCN(NV_IP): wait_cond(lambda: self.nvdev.NV_PFALCON_FALCON_DMATRFCMD.with_base(base).read_bitfields()['idle'], msg="DMA does not complete") - def start_cpu(self, base): + def start_cpu(self, base:int): if self.nvdev.NV_PFALCON_FALCON_CPUCTL.with_base(base).read_bitfields()['alias_en'] == 1: self.nvdev.wreg(base + self.nvdev.NV_PFALCON_FALCON_CPUCTL_ALIAS, 0x2) else: self.nvdev.NV_PFALCON_FALCON_CPUCTL.with_base(base).write(startcpu=1) @@ -232,11 +233,11 @@ class NV_FLCN(NV_IP): if mailbox is not None: return self.nvdev.NV_PFALCON_FALCON_MAILBOX0.with_base(base).read(), self.nvdev.NV_PFALCON_FALCON_MAILBOX1.with_base(base).read() - def disable_ctx_req(self, base): + def disable_ctx_req(self, base:int): self.nvdev.NV_PFALCON_FBIF_CTL.with_base(base).update(allow_phys_no_ctx=1) self.nvdev.NV_PFALCON_FALCON_DMACTL.with_base(base).write(0x0) - def reset(self, base, riscv=False): + def reset(self, base:int, riscv=False): engine_reg = self.nvdev.NV_PGSP_FALCON_ENGINE if base == self.falcon else self.nvdev.NV_PSEC_FALCON_ENGINE engine_reg.write(reset=1) time.sleep(0.1) @@ -408,10 +409,10 @@ class NV_GSP(NV_IP): assert self.nvdev.flcn.frts_offset == m.frtsOffset, f"FRTS mismatch: {self.nvdev.flcn.frts_offset} != {m.frtsOffset}" self.wpr_meta, self.wpr_meta_sysmem = self.nvdev._alloc_boot_struct(m) - def promote_ctx(self, client, subdevice, obj, ctxbufs, bufs=None, virt=None, phys=None): + def promote_ctx(self, client:int, subdevice:int, obj:int, ctxbufs:dict[int, GRBufDesc], bufs=None, virt=None, phys=None): res, prom = {}, nv_gpu.NV2080_CTRL_GPU_PROMOTE_CTX_PARAMS(entryCount=len(ctxbufs), engineType=0x1, hChanClient=client, hObject=obj) for i,(buf,desc) in enumerate(ctxbufs.items()): - use_v, use_p = (desc.v if virt is None else virt), (desc.p if phys is None else phys) + use_v, use_p = (desc.virt if virt is None else virt), (desc.phys if phys is None else phys) x = (bufs or {}).get(buf, self.nvdev.mm.valloc(desc.size, contiguous=True)) # allocate buffers prom.promoteEntry[i] = nv_gpu.NV2080_CTRL_GPU_PROMOTE_CTX_BUFFER_ENTRY(bufferId=buf, gpuVirtAddr=x.va_addr if use_v else 0, bInitialize=use_p, gpuPhysAddr=x.paddrs[0][0] if use_p else 0, size=desc.size if use_p else 0, physAttr=0x4 if use_p else 0, bNonmapped=(use_p and not use_v)) @@ -449,10 +450,11 @@ class NV_GSP(NV_IP): gr_size = _ctx_info(nv_gpu.NV0080_CTRL_FIFO_GET_ENGINE_CONTEXT_PROPERTIES_ENGINE_ID_GRAPHICS, add=0x40000) patch_size = _ctx_info(nv_gpu.NV0080_CTRL_FIFO_GET_ENGINE_CONTEXT_PROPERTIES_ENGINE_ID_GRAPHICS_PATCH) cfgs_sizes = {x: _ctx_info(x + 14, align=(2 << 20) if x == 5 else None) for x in range(3, 11)} # indices 3โ€“10 are mapped to 17โ€“24 - self.grctx_bufs = {0: GRBufDesc(gr_size, p=1, v=1), 1: GRBufDesc(patch_size, p=1, v=1, lc=1), 2: GRBufDesc(patch_size, p=1, v=1), - **{x: GRBufDesc(cfgs_sizes[x], p=0, v=1) for x in range(3, 7)}, 9: GRBufDesc(cfgs_sizes[9], p=1, v=1), - 10: GRBufDesc(cfgs_sizes[10], p=1, v=0), 11: GRBufDesc(cfgs_sizes[10], p=1, v=1)} # NOTE: 11 reuses cfgs_sizes[10] - self.promote_ctx(self.priv_root, subdev, ch_gpfifo, {k:v for k, v in self.grctx_bufs.items() if v.lc == 0}) + self.grctx_bufs = {0: GRBufDesc(gr_size, phys=True, virt=True), 1: GRBufDesc(patch_size, phys=True, virt=True, local=True), + 2: GRBufDesc(patch_size, phys=True, virt=True), **{x: GRBufDesc(cfgs_sizes[x], phys=False, virt=True) for x in range(3, 7)}, + 9: GRBufDesc(cfgs_sizes[9], phys=True, virt=True), 10: GRBufDesc(cfgs_sizes[10], phys=True, virt=False), + 11: GRBufDesc(cfgs_sizes[10], phys=True, virt=True)} # NOTE: 11 reuses cfgs_sizes[10] + self.promote_ctx(self.priv_root, subdev, ch_gpfifo, {k:v for k, v in self.grctx_bufs.items() if not v.local}) self.rpc_rm_alloc(hParent=ch_gpfifo, hClass=self.compute_class, params=None) self.rpc_rm_alloc(hParent=ch_gpfifo, hClass=self.dma_class, params=None) @@ -473,7 +475,7 @@ class NV_GSP(NV_IP): ### RPCs - def rpc_rm_alloc(self, hParent, hClass, params, client=None) -> int: + def rpc_rm_alloc(self, hParent:int, hClass:int, params:Any, client=None) -> int: if hClass == self.gpfifo_class: ramfc_alloc = self.nvdev.mm.valloc(0x1000, contiguous=True) params.ramfcMem = nv_gpu.NV_MEMORY_DESC_PARAMS(base=ramfc_alloc.paddrs[0][0], size=0x200, addressSpace=2, cacheAttrib=0) @@ -499,7 +501,7 @@ class NV_GSP(NV_IP): self.promote_ctx(client, self.subdevice, hParent, {k:v for k,v in self.grctx_bufs.items() if k in [0, 1, 2]}, phys_gr_ctx, phys=False) return obj if hClass != nv_gpu.NV1_ROOT else client - def rpc_rm_control(self, hObject, cmd, params, client=None): + def rpc_rm_control(self, hObject:int, cmd:int, params:Any, client=None): control_args = nv.rpc_gsp_rm_control_v(hClient=(client:=client or self.priv_root), hObject=hObject, cmd=cmd, flags=0x0, paramsSize=ctypes.sizeof(params) if params is not None else 0x0) self.cmd_q.send_rpc(nv.NV_VGPU_MSG_FUNCTION_GSP_RM_CONTROL, bytes(control_args) + (bytes(params) if params is not None else b'')) @@ -511,7 +513,7 @@ class NV_GSP(NV_IP): cast(nv_gpu.NVC36F_CTRL_CMD_GPFIFO_GET_WORK_SUBMIT_TOKEN_PARAMS, st).workSubmitToken |= (1 << 30) return st - def rpc_set_page_directory(self, device, hVASpace, pdir_paddr, client=None, pasid=0xffffffff): + def rpc_set_page_directory(self, device:int, hVASpace:int, pdir_paddr:int, client=None, pasid=0xffffffff): params = nv.struct_NV0080_CTRL_DMA_SET_PAGE_DIRECTORY_PARAMS_v1E_05(physAddress=pdir_paddr, numEntries=self.nvdev.mm.pte_cnt[0], flags=0x8, hVASpace=hVASpace, pasid=pasid, subDeviceId=1, chId=0) # flags field is all channels. alloc_args = nv.rpc_set_page_directory_v(hClient=client or self.priv_root, hDevice=device, pasid=pasid, params=params) @@ -544,7 +546,7 @@ class NV_GSP(NV_IP): header = nv.PACKED_REGISTRY_TABLE(size=hdr_size + len(entries_bytes) + len(data_bytes), numEntries=len(table)) self.cmd_q.send_rpc(nv.NV_VGPU_MSG_FUNCTION_SET_REGISTRY, bytes(header) + entries_bytes + data_bytes) - def run_cpu_seq(self, seq_buf): + def run_cpu_seq(self, seq_buf:memoryview): hdr = nv.rpc_run_cpu_sequencer_v17_00.from_address(mv_address(seq_buf)) cmd_iter = iter(seq_buf[ctypes.sizeof(nv.rpc_run_cpu_sequencer_v17_00):].cast('I')[:hdr.cmdIndex]) diff --git a/tinygrad_repo/tinygrad/runtime/support/nv/nvdev.py b/tinygrad_repo/tinygrad/runtime/support/nv/nvdev.py index d5cd11382..6831b5e8b 100644 --- a/tinygrad_repo/tinygrad/runtime/support/nv/nvdev.py +++ b/tinygrad_repo/tinygrad/runtime/support/nv/nvdev.py @@ -51,14 +51,14 @@ class NVPageTableEntry: return (self.entries[2*entry_id+1]<<64) | self.entries[2*entry_id] if self._is_dual_pde() else self.entries[entry_id] def read_fields(self, entry_id:int) -> dict: - if self.is_huge_page(entry_id): return self.nvdev.pte_t.decode(self.entry(entry_id)) + if self.is_page(entry_id): return self.nvdev.pte_t.decode(self.entry(entry_id)) return (self.nvdev.dual_pde_t if self._is_dual_pde() else self.nvdev.pde_t).decode(self.entry(entry_id)) - def is_huge_page(self, entry_id) -> bool: return (self.entry(entry_id) & 1 == 1) if self.lv < self.nvdev.mm.level_cnt - 1 else True + def is_page(self, entry_id) -> bool: return (self.entry(entry_id) & 1 == 1) if self.lv < self.nvdev.mm.level_cnt - 1 else True def supports_huge_page(self, paddr:int): return self.lv >= self.nvdev.mm.level_cnt - 3 and paddr % self.nvdev.mm.pte_covers[self.lv] == 0 def valid(self, entry_id): - if self.is_huge_page(entry_id): return self.read_fields(entry_id)['valid'] + if self.is_page(entry_id): return self.read_fields(entry_id)['valid'] return self.read_fields(entry_id)['aperture_small' if self._is_dual_pde() else 'aperture'] != 0 def address(self, entry_id:int) -> int: @@ -66,12 +66,12 @@ class NVPageTableEntry: return self.read_fields(entry_id)[f'address{small}{sys}'] << 12 class NVMemoryManager(MemoryManager): - va_allocator = TLSFAllocator((1 << 44), base=1 << 30) # global for all devices. + va_allocator = TLSFAllocator((1 << 44), base=0x1000000000) # global for all devices. def on_range_mapped(self): self.dev.NV_VIRTUAL_FUNCTION_PRIV_MMU_INVALIDATE.write((1 << 0) | (1 << 1) | (1 << 6) | (1 << 31)) class NVDev(PCIDevImplBase): - def __init__(self, devfmt, mmio:MMIOInterface, vram:MMIOInterface, venid:int, subvenid:int, rev:int, bars:dict): + def __init__(self, devfmt:str, mmio:MMIOInterface, vram:MMIOInterface, venid:int, subvenid:int, rev:int, bars:dict): self.devfmt, self.mmio, self.vram, self.venid, self.subvenid, self.rev, self.bars = devfmt, mmio, vram, venid, subvenid, rev, bars self.lock_fd = System.flock_acquire(f"nv_{self.devfmt}.lock") @@ -101,10 +101,10 @@ class NVDev(PCIDevImplBase): for ip in [self.gsp, self.flcn]: ip.fini_hw() def reg(self, reg:str) -> NVReg: return self.__dict__[reg] - def wreg(self, addr, value): + def wreg(self, addr:int, value:int): self.mmio[addr // 4] = value if NV_DEBUG >= 4: print(f"wreg: {hex(addr)} = {hex(value)}") - def rreg(self, addr): return self.mmio[addr // 4] + def rreg(self, addr:int) -> int: return self.mmio[addr // 4] def _early_init(self): self.reg_names:set[str] = set() @@ -118,7 +118,7 @@ class NVDev(PCIDevImplBase): self.include("src/common/inc/swref/published/turing/tu102/dev_fb.h") if self.reg("NV_PFB_PRI_MMU_WPR2_ADDR_HI").read() != 0: - if DEBUG >= 2: print(f"nv {self.devfmt}: WPR2 is up. Issuing a full reset.") + if DEBUG >= 2: print(f"nv {self.devfmt}: WPR2 is up. Issuing a full reset.", flush=True) System.pci_reset(self.devfmt) time.sleep(0.5) @@ -134,12 +134,12 @@ class NVDev(PCIDevImplBase): self.vram_size = self.reg("NV_PGC6_AON_SECURE_SCRATCH_GROUP_42").read() << 20 - def _alloc_boot_struct(self, struct): + def _alloc_boot_struct(self, struct:ctypes.Structure) -> tuple[ctypes.Structure, int]: va, paddrs = System.alloc_sysmem(sz:=ctypes.sizeof(type(struct)), contiguous=True) to_mv(va, sz)[:] = bytes(struct) return type(struct).from_address(va), paddrs[0] - def _download(self, file) -> str: + def _download(self, file:str) -> str: url = f"https://raw.githubusercontent.com/NVIDIA/open-gpu-kernel-modules/8ec351aeb96a93a4bb69ccc12a542bf8a8df2b6f/{file}" return fetch(url, subdir="defines").read_text() diff --git a/tinygrad_repo/tinygrad/runtime/support/system.py b/tinygrad_repo/tinygrad/runtime/support/system.py index 845c18ab6..623886615 100644 --- a/tinygrad_repo/tinygrad/runtime/support/system.py +++ b/tinygrad_repo/tinygrad/runtime/support/system.py @@ -1,4 +1,4 @@ -import os, mmap, array, functools, ctypes, select, contextlib, dataclasses, sys +import os, mmap, array, functools, ctypes, select, contextlib, dataclasses, sys, errno from typing import cast, ClassVar from tinygrad.helpers import round_up, to_mv, getenv, OSX, temp from tinygrad.runtime.autogen import libc, vfio @@ -82,9 +82,13 @@ class PCIDevice: FileIOInterface(f"/sys/bus/pci/devices/{self.pcibus}/driver/unbind", os.O_WRONLY).write(self.pcibus) for i in resize_bars or []: - supported_sizes = int(FileIOInterface(f"/sys/bus/pci/devices/{self.pcibus}/resource{i}_resize", os.O_RDONLY).read(), 16) - try: FileIOInterface(f"/sys/bus/pci/devices/{self.pcibus}/resource{i}_resize", os.O_RDWR).write(str(supported_sizes.bit_length() - 1)) - except OSError as e: raise RuntimeError(f"Cannot resize BAR {i}: {e}. Ensure the resizable BAR option is enabled on your system.") from e + if FileIOInterface.exists(rpath:=f"/sys/bus/pci/devices/{self.pcibus}/resource{i}_resize"): + try: FileIOInterface(rpath, os.O_RDWR).write(str(int(FileIOInterface(rpath, os.O_RDONLY).read(), 16).bit_length() - 1)) + except OSError as e: + if e.errno in {errno.EPERM, errno.EACCES}: + raise RuntimeError(f"Cannot resize BAR {i}: {e}. Permission error: run `extra/amdpci/setup_python_cap.sh`" + " to allow python accessing device or run with sudo") from e + raise RuntimeError(f"Cannot resize BAR {i}: {e}. Ensure the resizable BAR option is enabled on your system.") from e if getenv("VFIO", 0) and (vfio_fd:=System.vfio()) is not None: FileIOInterface(f"/sys/bus/pci/devices/{self.pcibus}/driver_override", os.O_WRONLY).write("vfio-pci") diff --git a/tinygrad_repo/tinygrad/schedule/grouper.py b/tinygrad_repo/tinygrad/schedule/grouper.py index 2477da526..685bc70b7 100644 --- a/tinygrad_repo/tinygrad/schedule/grouper.py +++ b/tinygrad_repo/tinygrad/schedule/grouper.py @@ -2,8 +2,9 @@ from tinygrad.uop.ops import Ops, UOp, resolve, can_pad, GroupOp, UPat, PatternM from tinygrad.helpers import all_int, prod, unwrap, dedup, DONT_REALIZE_EXPAND, DONT_GROUP_REDUCES, FUSE_CONV_BW from tinygrad.shape.shapetracker import ShapeTracker -ALWAYS_CONTIGUOUS = {Ops.CONTIGUOUS, Ops.ASSIGN, Ops.COPY, Ops.BUFFER, Ops.BUFFER_VIEW, - Ops.CONST, Ops.BIND, Ops.DEVICE, Ops.MSELECT, Ops.MSTACK} +ALWAYS_CONTIGUOUS: set[Ops] = {Ops.CONTIGUOUS, Ops.ASSIGN, Ops.COPY, Ops.BUFFER, Ops.BUFFER_VIEW, + Ops.CONST, Ops.BIND, Ops.DEVICE, Ops.MSELECT, Ops.MSTACK, Ops.DEFINE_GLOBAL, + Ops.DEFINE_LOCAL, Ops.DEFINE_REG, Ops.LOAD} # **** Grouper decides which of the UOps realize @@ -25,8 +26,8 @@ def realize_before_view(ctx:dict[UOp, None], view:UOp, tr:UOp) -> None: do_realize = PatternMatcher([ # always realize SINK parents (UPat(Ops.SINK, name="s"), lambda ctx,s: ctx.update((x.base, None) for x in s.src if x.base.op not in ALWAYS_CONTIGUOUS)), - # always realize ASSIGN/CONTIGUOUS/GroupOp.Meta - (UPat({Ops.ASSIGN, Ops.CONTIGUOUS, *GroupOp.Meta}, name="tr"), realize), + # always realize ASSIGN/CONTIGUOUS/COPY/BUFFER_VIEW + (UPat({Ops.ASSIGN, Ops.CONTIGUOUS, Ops.COPY, Ops.BUFFER_VIEW}, name="tr"), realize), # realize before expand or unsafe pad ops (UPat(Ops.VIEW, src=(UPat(GroupOp.All-ALWAYS_CONTIGUOUS, name="tr"),), name="view"), realize_before_view), # realize parents of COPY, MSELECT, MSTACK diff --git a/tinygrad_repo/tinygrad/schedule/kernelize.py b/tinygrad_repo/tinygrad/schedule/kernelize.py index 231da9033..b1e90bc60 100644 --- a/tinygrad_repo/tinygrad/schedule/kernelize.py +++ b/tinygrad_repo/tinygrad/schedule/kernelize.py @@ -1,14 +1,13 @@ from dataclasses import dataclass -from tinygrad.uop.ops import UOp, Ops, GroupOp, PatternMatcher, UPat, graph_rewrite, graph_rewrite_map, identity_element, resolve, sint +from tinygrad.uop.ops import UOp, Ops, GroupOp, PatternMatcher, UPat, graph_rewrite, graph_rewrite_map, identity_element, resolve from tinygrad.uop.ops import track_rewrites, _substitute from tinygrad.uop.spec import type_verify, tensor_uop_spec from tinygrad.uop.symbolic import symbolic_simple -from tinygrad.helpers import Metadata, all_int, all_same, colored, prod, dedup, unwrap, getenv, pluralize, FUSE_ARANGE, DEBUG, SPLIT_REDUCEOP +from tinygrad.helpers import Metadata, all_int, all_same, prod, dedup, unwrap, getenv, pluralize, FUSE_ARANGE, DEBUG, SPLIT_REDUCEOP from tinygrad.dtype import ImageDType from tinygrad.schedule.multi import multi_pm -from tinygrad.shape.shapetracker import ShapeTracker -from tinygrad.shape.view import View, strides_for_shape, get_contraction_with_reduce from tinygrad.schedule.grouper import group_realizes, ALWAYS_CONTIGUOUS +from tinygrad.codegen.opt.swizzler import merge_views, apply_swizzle, swizzle_reduceop # creation can recurse a lot import sys @@ -49,7 +48,7 @@ def copy_reorder_view(copy:UOp, view:UOp, base:UOp): if prod(view.shape) < prod(base.shape): return view.contiguous().copy_to_device(copy.device) return base.copy_to_device(copy.device).view(view.arg) -sym = symbolic_simple+PatternMatcher([ +kernelize_sym = symbolic_simple+PatternMatcher([ # UOp with size 0 is zero (UPat(GroupOp.All-{Ops.SINK}, name="root"), lambda root: root.const_like(0) if root.base.st is not None and root.size == 0 else None), # DETACH and CONTIGUOUS_BACKWARD are NOOPs here @@ -120,9 +119,9 @@ def create_kernel(x:UOp, b:UOp|None=None): if b is None: b = UOp.new_buffer(x.device, x.size, x.dtype) kernel = UOp(Ops.KERNEL, src=(b,)+x.src, arg=Kernel(x.sink(), m if (m:=x.metadata) else ())) buffer = b.base if b.size == b.base.size else UOp(Ops.BUFFER_VIEW, b.dtype, (b.base,), (b.size, b.arg.views[0].offset)) - return buffer.assign(kernel).reshape(x.shape) + return buffer.assign(kernel).shrink(((0, prod(x.shape)),)).reshape(x.shape) -DONT_PLACE_IN_KERNEL = {Ops.KERNEL, Ops.ASSIGN, Ops.BUFFER, Ops.MSELECT, Ops.MSTACK, Ops.MULTI} +DONT_PLACE_IN_KERNEL = {Ops.KERNEL, Ops.ASSIGN, Ops.BUFFER, Ops.MSELECT, Ops.MSTACK, Ops.MULTI, Ops.BIND} def append_to_kernel(x:UOp): new_srcs: list[UOp] = [] metadata = x.arg.metadata @@ -148,165 +147,59 @@ create_kernels = PatternMatcher([ lambda ms: UOp(Ops.MSTACK, ms.dtype, tuple(x.src[0] for x in ms.src)).reshape(ms.src[0].arg)), ]) -# **** swizzler - -merge_views = PatternMatcher([ - # merge adjacent views - (UPat(Ops.VIEW, src=(UPat(Ops.VIEW, name="v1"),), name="v2"), lambda v1,v2: v1.replace(arg=v1.arg+v2.arg)), - # replace MovementOps with VIEW - (UPat(GroupOp.Movement, src=(UPat.var("x"),), name="mop"), lambda mop,x: x.base.view(mop.st)), - # remove NOOP views - (UPat.var("x").view(name="view"), lambda x,view: x if x.st is not None and view.st.contiguous and view.shape == x.shape else None), - (UPat(GroupOp.All-{Ops.DEFINE_GLOBAL}).view(name="view"), - lambda view: view.const_like(0) if (mask:=view.st.views[-1].mask) is not None and any((x[1]-x[0]) == 0 for x in mask) else None), - # only unmaksed VIEW on CONST replaces the ShapeTracker - (UPat(Ops.VIEW, src=(UPat((Ops.CONST, Ops.DEFINE_VAR), name="x"),), name="view"), - lambda x,view: x.replace(src=(x.src[0].replace(arg=x.st+view.st),)) if all(v.mask is None for v in (x.st+view.st).views) else None), -]) - -def reduce_push_add_ones(src:UOp, r:UOp, view:UOp): - # contiguous, expand, and the same with ones removed - if unwrap(view.st).contiguous and len(r.shape) < len(view.shape) and \ - tuple(x for x in r.shape if resolve(x != 1)) == tuple(x for x in view.shape if resolve(x != 1)): - new_shape: list[sint] = [] - new_reduce_axis = [] - if (contraction:=get_contraction_with_reduce(view.shape, r.shape, r.arg[1])) is None: return None - for i,pairs in enumerate(contraction): - new_shape_chunk = [view.shape[p] for p in pairs] - if i in r.arg[1]: - # if this is a reduce axis, we need a 1 in the view here to put it - assert len(new_shape_chunk) > 0 - new_shape += [1]*(len(pairs)-1) + [src.shape[i]] - new_reduce_axis.append(len(new_shape)-1) - else: - # otherwise, pass through the new_shape_chunk - new_shape += new_shape_chunk - ret = r.replace(src=(src.reshape(tuple(new_shape)),), arg=(r.arg[0], tuple(new_reduce_axis))+r.arg[2:]) - assert ret.shape == view.shape, f"shape mismatch on reduce_push_add_ones, {ret.shape} != {view.shape}" - return ret - return None - -view_left = merge_views+PatternMatcher([ - # view before elementwise and buffer ops - (UPat(Ops.VIEW, src=(UPat({*GroupOp.ALU, Ops.CAST, Ops.BITCAST, Ops.BIND, Ops.LOAD, Ops.STORE, Ops.VALID}, name="e"),), name="view"), - lambda e,view: e.replace(src=tuple(s.view(view.st) for s in e.src))), - # if there's ones added after reduce, put this before the reduce - (UPat(Ops.VIEW, src=(UPat(Ops.REDUCE_AXIS, src=(UPat.var("src"),), name="r"),), name="view"), reduce_push_add_ones), -]) - -def apply_swizzle(u:UOp) -> UOp: return graph_rewrite(u, view_left, name="Sub View Left") - -# change reduceop axes and input ShapeTrackers, view gets replaced with a reshape. -def swizzle_reduceop(r:UOp, src:UOp, view:UOp, fuse=False): - # contiguous and same size can push to children - # if there's a reduce child, shapes match with ones removed - if unwrap(view.st).contiguous and view.size == r.size and \ - (not (len(r.arg) == 3 and r.arg[2]) or # arg[2] = True is fuse marker - tuple((i,x) for i,x in enumerate(r.shape) if resolve(x != 1)) == tuple((i,x) for i,x in enumerate(view.shape) if resolve(x != 1))): - return None - # swizzle the input - input_st = ShapeTracker.from_shape(src.shape) - tmp = input_st.permute(tuple(i for i in range(len(input_st.shape)) if i not in r.axis_arg)+r.axis_arg) - prshape = prod(rshape:=tmp.shape[-len(r.axis_arg):]) - strides = strides_for_shape(rshape) - nv = [View.create(v.shape+rshape, tuple(x*prshape for x in v.strides)+strides, - v.offset*prshape, v.mask+tuple((0,s) for s in rshape) if v.mask is not None else None) for v in unwrap(view.st).views] - new_view = tmp + ShapeTracker(tuple(nv)) - swizzled_input = apply_swizzle(src.view(new_view)) - # create a new reduceop - new_axis = tuple(range(len(view.shape), len(view.shape) + len(r.axis_arg))) - if fuse: red = UOp(Ops.REDUCE_AXIS, r.dtype, (swizzled_input.fuse(),), (r.arg[0], new_axis, True)) - else: red = UOp(Ops.REDUCE_AXIS, r.dtype, (swizzled_input,), (r.arg[0], new_axis)) - return red.reshape(view.shape) - -def reduceop_view_right(src:UOp, v:UOp, r:UOp): - assert unwrap(v.st).contiguous and v.size == src.size, f"can't compute new axis for {src.shape} -> {r.shape}" - new_axis = [i for i,(s,u) in enumerate(zip(src.shape, r.shape)) if s != u] - return src.r(r.arg[0], tuple(new_axis)).reshape(r.shape) - -def elementwise_view_right(root:UOp): - if not (swizzles:=[x for x in root.src if x.op is Ops.VIEW and x.base.op not in ALWAYS_CONTIGUOUS]): return None - assert all_same([x.base.size for x in swizzles]), f"swizzle inputs must have the same size {swizzles}" - # place view after applying the elementwise op - new_st = ShapeTracker.from_shape(swizzles[0].base.shape) - new_src = [x.base if x.base.shape==new_st.shape else apply_swizzle(x.view(new_st)) for x in root.src] - # reshape to match downstream shapes - return root.replace(src=tuple(new_src)).reshape(root.shape) - -# push VIEW to children -view_right = merge_views+PatternMatcher([ - # push a non contiguous ShapeTracker through reduceop - (UPat(Ops.VIEW, src=(UPat(Ops.REDUCE_AXIS, src=(UPat.var("src"),), name="r"),), name="view"), swizzle_reduceop), - # apply view after reduceops - (UPat(Ops.REDUCE_AXIS, src=(UPat(Ops.VIEW, src=(UPat(GroupOp.All-ALWAYS_CONTIGUOUS, name="src"),), name="v"),), name="r"), reduceop_view_right), - # apply view after elementwise ops - (UPat(GroupOp.All-{Ops.SINK, Ops.REDUCE_AXIS}, name="root"), elementwise_view_right), - # merge axes for double reduce (invert of SPLIT_REDUCEOP=1) - (UPat(Ops.REDUCE_AXIS, src=(UPat(Ops.REDUCE_AXIS, name="r1"),), name="r2"), - lambda r1,r2: r1.replace(arg=(r1.arg[0], r2.arg[1]+r1.arg[1])) if r1.arg[0] is r2.arg[0] else None), -]) - # **** fix kernel AST -add_buffer_ops = PatternMatcher([ +def unbind_view(x:UOp): + if any(x.op is Ops.BIND for x in x.arg.vars()): return x.replace(arg=x.arg.unbind()[0]) + return None + +replace_buffers = PatternMatcher([ + # replace ASSIGN with the target BUFFER + (UPat(Ops.ASSIGN, src=(UPat((Ops.BUFFER, Ops.LOAD)), UPat(Ops.KERNEL)), name="assign", allow_any_len=True), lambda assign: assign.src[0]), + # HACK: select the 0 branch of MSTACK (the device is wrong after this, is that okay?) + (UPat(Ops.MSTACK, name="x"), lambda x: x.src[0]), # LOAD - (UPat(Ops.BUFFER, name="x"), lambda ctx,x: UOp.load(UOp(Ops.DEFINE_GLOBAL, x.dtype.ptr(x.size), (), ctx.index(x)).view(x.st),)), - # STORE (except for meta ops) + (UPat(Ops.BUFFER, name="x"), lambda ctx,x: UOp(Ops.DEFINE_GLOBAL, x.dtype.ptr(x.size), (), ctx.index(x)).load()), + # no SINK for meta ops (UPat(Ops.SINK, src=(UPat(Ops.CONTIGUOUS, src=(UPat(GroupOp.Meta, name="x"),),))), lambda x:x), + # STORE (except for meta ops) (UPat(Ops.SINK, src=UPat(GroupOp.All-{Ops.STORE}), name="sink"), lambda ctx,sink: - UOp.sink(*[UOp.store(UOp(Ops.DEFINE_GLOBAL, (s:=x.base).dtype.ptr(ctx[i].size), (), i).view(s.st), s) for i,x in enumerate(sink.src)])), - # passthrough ASSIGN - (UPat(Ops.ASSIGN, name="x"), lambda x: x.src[1]), - # VALID - (UPat(Ops.VIEW, src=(UPat.cvar(),), name="self"), UOp.valid), -]) - -def check_load_st(glbl:UOp, view:UOp): - if glbl.arg != 0 or (st:=unwrap(view.st)).contiguous: return - # if it has a single view and it becomes contiguous when you shrink expanded axes, it's fine - if len(st.views) == 1 and st.shrink(tuple((0,1) if st == 0 else (0,s) for s,st in zip(st.shape, st.views[0].strides))).contiguous: return - # if it has a single view and it's equal when you shrink a contig, it's fine - if len(st.views) == 1 and (mask:=st.views[0].mask) is not None and ShapeTracker.from_shape(st.shape).shrink(mask) == st.shrink(mask): return - # otherwise, it's not fine - raise RuntimeError("self operand of augmented assign must be contiguous.\nhelp: consider using .contiguous():\n" - +colored(" - a += a.T\n", "red")+colored(" + a += a.T.contiguous()", "green")) - -fix_kernel_ops = PatternMatcher([ + UOp.sink(*[UOp.store(UOp(Ops.DEFINE_GLOBAL, (s:=x.base).dtype.ptr(ctx[i].size), (), i).view(s.st), s) for i,x in enumerate(sink.src)], + arg=sink.arg)), # remove CONTIGUOUS/DEVICE from kernel AST (UPat((Ops.CONTIGUOUS, Ops.MSELECT), src=(UPat.var("x"),)), lambda x: x), (UPat(Ops.VIEW, src=(UPat(Ops.DEVICE),), name="view"), lambda view: view.replace(src=())), - # no ImageDType after index - (UPat(GroupOp.All-{Ops.DEFINE_GLOBAL, Ops.VIEW}, name="x"), lambda x: x.replace(dtype=x.dtype.base) if isinstance(x.dtype, ImageDType) else None), - # if this kernel also assigns to the loaded buffer, ensure we can index it correctly - (UPat(Ops.LOAD, src=(UPat.var("glbl").view(name="view"),)), check_load_st), -]) - -replace_globals = PatternMatcher([ - # replace ASSIGN with the target BUFFER - (UPat(Ops.ASSIGN, src=(UPat(Ops.BUFFER), UPat(Ops.KERNEL)), name="assign", allow_any_len=True), lambda assign: assign.src[0]), - # HACK: select the 0 branch of MSTACK (the device is wrong after this, is that okay?) - (UPat(Ops.MSTACK, name="x"), lambda x: x.src[0]), + # passthrough ASSIGN (but let MSTACK process first) + (UPat(Ops.ASSIGN, src=(UPat(GroupOp.All-{Ops.MSTACK}), UPat()), name="x"), lambda x: x.src[1]), + # remove any BINDs from VIEWS + (UPat(Ops.VIEW, src=(UPat(), UPat((Ops.BIND, Ops.DEFINE_VAR))), allow_any_len=True, name="x"), lambda x: x.replace(src=x.src[0:1])), + # remove any BINDs from DEFINE_VARs + (UPat(Ops.BIND, name="x"), lambda x: x.src[0]), + # remove BINDs from ShapeTrackers + (UPat(Ops.VIEW, name="x"), unbind_view), ]) def fix_kernel_ast(k:UOp) -> UOp|None: if k.arg.ast.op in GroupOp.Meta or all(s.op is Ops.STORE for s in k.arg.ast.src): return None - # replace global memory ops with the BUFFER they write to - ast = graph_rewrite(k.arg.ast, replace_globals, bottom_up=True, name="replace globals") - # push views to edges - ast = graph_rewrite(graph_rewrite(ast, view_left, name="Main View Left"), view_right, name="Main View Right") # replace buffer with define_global + add load/store last bufs = [] for s in k.src: + if s.op is Ops.BIND: continue s = s.buf_uop # traverse back through MSELECT and MSTACK. HACK: 0 branch of MSTACK only while s.op in {Ops.MSELECT, Ops.MSTACK}: s = s.src[0] bufs.append(s) - ast = graph_rewrite(ast, view_left+add_buffer_ops+fix_kernel_ops, bufs, bottom_up=True, name="replace buffer") - if ast.op is Ops.SINK and not all_same([x.device for x in k.src]): + # replace global memory ops with the BUFFER they write to + # NOTE: merge_views is needed to unbind the reshapes + ast = graph_rewrite(k.arg.ast, merge_views+replace_buffers, bufs, bottom_up=True, name="replace buffers") + if ast.op is Ops.SINK and not all_same([x.device for x in k.src if x.op is not Ops.BIND]): raise RuntimeError(f"all buffers must be on the same device: {tuple(b.buf_uop.buffer for b in k.src)}") return k.replace(arg=Kernel(ast, k.arg.metadata)) -create_ast = PatternMatcher([(UPat(Ops.KERNEL, name="k"), fix_kernel_ast),]) +create_ast = PatternMatcher([ + (UPat(Ops.KERNEL, name="k"), fix_kernel_ast), + (UPat(Ops.DEFINE_VAR, src=(UPat(),), allow_any_len=True, name="x"), lambda x: x.replace(src=())), +]) # ** add metadata of KERNEL outputs @@ -343,7 +236,7 @@ pm_fuse = PatternMatcher([ def do_fusion(x:UOp): found_contiguous = {} def gate_contiguous(x): - if is_contiguous:=(x.op is Ops.CONTIGUOUS): found_contiguous[x] = x.replace(src=(UOp(Ops.VIEW, arg=x.st),)) + if is_contiguous:=(x.op is Ops.CONTIGUOUS): found_contiguous[x] = x.replace(src=(UOp(Ops.VIEW, arg=x.st), UOp.unique())) return not is_contiguous x.toposort(gate=gate_contiguous) del gate_contiguous @@ -364,8 +257,6 @@ def fuse_arange(root:UOp): for u in toposort: for s in u.src: local_children.setdefault(s, []).append(u) fuse_rep: dict[UOp, UOp] = {} - # skip if root depends on aranges with different ndims. This can be improved - if any(len(set(dims)) > 1 for dims in zip(*[r.src[0].shape for r in local_arange])): return for r in local_arange: # skip if already fused if len(r.arg) > 2: continue @@ -405,6 +296,11 @@ def limit_bufs(root:UOp): if len(bufs)>=MAX_BUFS-1: return root.replace(src=tuple(s if s.base in bufs else s.replace(tag=1).contiguous() for s in root.src)) +def view_add_srcs(x:UOp): + if len(avars:=x.arg.vars()) and len(x.src) == 1: + return x.replace(src=x.src+tuple(avars)) + return None + finalize_contiguous = PatternMatcher([ # if an op takes more than one input, check combined LOADs don't exceed device limits (UPat(set.union(GroupOp.Binary, GroupOp.Ternary), name="root"), limit_bufs), @@ -412,11 +308,13 @@ finalize_contiguous = PatternMatcher([ (UPat(Ops.CONTIGUOUS, src=(UPat(Ops.CONTIGUOUS),), name="x"), lambda x: x.src[0]), # simplify views (UPat(Ops.VIEW, src=(UPat.var('x')), name="v"), lambda x,v: x.view(new_st) if (new_st:=v.arg.simplify()) != v.arg else None), + # vars to views srcs + (UPat(Ops.VIEW, name="x"), view_add_srcs), ]) remove_tags = PatternMatcher([(UPat(GroupOp.All, name="x"), lambda x: x.replace(tag=None) if x.tag is not None else None)]) -@track_rewrites(name=lambda sink,ret: f"Schedule {pluralize('Kernel',len([u for u in ret[sink].toposort() if u.op is Ops.KERNEL]))}") +@track_rewrites(name=lambda sink,ret: f"Schedule {pluralize('Kernel',len([u for u in ret[sink].toposort() if u.op is Ops.KERNEL]))}", replay=True) def get_kernelize_map(sink:UOp) -> dict[UOp, UOp]: """ Function to transform the Tensor UOp graph into a version with Ops.KERNEL @@ -429,7 +327,7 @@ def get_kernelize_map(sink:UOp) -> dict[UOp, UOp]: """ # multi + merge_views + simplify - tensor_map = graph_rewrite_map(sink, multi_pm+do_fuse+merge_views+sym+replace_contiguous, ctx={}, name="merge_views") + tensor_map = graph_rewrite_map(sink, multi_pm+do_fuse+merge_views+kernelize_sym+replace_contiguous, ctx={}, name="merge_views") # display the cleaned up tensor graph if getenv("VIZ"): graph_rewrite(tensor_map[sink], PatternMatcher([]), name="View Tensor Graph") @@ -439,8 +337,6 @@ def get_kernelize_map(sink:UOp) -> dict[UOp, UOp]: tensor_map = graph_rewrite_map(tensor_map[sink], add_contiguous, ctx=realize_map, bottom_up=True, input_map=tensor_map, name="add_contiguous") tensor_map = graph_rewrite_map(tensor_map[sink], finalize_contiguous+remove_tags, input_map=tensor_map, name="finalize_contiguous") - # TODO: move view_left/view_right here - # group into kernels (this is context-free) tensor_map = graph_rewrite_map(tensor_map[sink], create_kernels, input_map=tensor_map, name="create_kernels") diff --git a/tinygrad_repo/tinygrad/schedule/multi.py b/tinygrad_repo/tinygrad/schedule/multi.py index a0f813589..4ec0f8e12 100644 --- a/tinygrad_repo/tinygrad/schedule/multi.py +++ b/tinygrad_repo/tinygrad/schedule/multi.py @@ -13,6 +13,10 @@ def handle_allreduce_multirank(buf:UOp, red:UOp) -> UOp|None: for i,dev in enumerate(buf.device): groups.setdefault(Device[dev].group_id, []).append(buf.mselect(i)) + # Put reduce leader of each group first + reduce_leaders = set(getenv("REDUCE_LEADERS", "").split(",")) + groups = {gid: sorted(bufs, key=lambda x: (x.device not in reduce_leaders, x.device)) for gid,bufs in groups.items()} + # Skip if only one group or if every group has only one buffer if len(groups) <= 1 or not any(len(g) > 1 for g in groups.values()): return None diff --git a/tinygrad_repo/tinygrad/schedule/rangeify.py b/tinygrad_repo/tinygrad/schedule/rangeify.py new file mode 100644 index 000000000..4a527edd5 --- /dev/null +++ b/tinygrad_repo/tinygrad/schedule/rangeify.py @@ -0,0 +1,461 @@ +from typing import Any +from dataclasses import dataclass, field +from tinygrad.dtype import dtypes, PtrDType, ImageDType, AddrSpace +from tinygrad.uop.ops import PatternMatcher, UPat, Ops, UOp, resolve, GroupOp, RewriteNotReady, _substitute +from tinygrad.helpers import argsort, prod, all_same, pluralize, getenv, RANGEIFY +from tinygrad.schedule.multi import multi_pm + +from tinygrad.schedule.kernelize import Kernel +from tinygrad.uop.ops import track_rewrites, graph_rewrite_map, graph_rewrite, identity_element, sint, AxisType + +# 0. do some cleanup rewrites, mostly copied from the old stuff + +double_reshape = PatternMatcher([ + # RESHAPE on RESHAPE is the second reshape + (UPat(Ops.RESHAPE, src=(UPat(Ops.RESHAPE),), name="x"), lambda x: x.replace(src=(x.src[0].src[0],))), +]) + +earliest_rewrites = double_reshape+PatternMatcher([ + # UOp with size 0 is zero + (UPat(GroupOp.All-{Ops.SINK}, name="root"), lambda root: root.const_like(0) if root.base.st is not None and root.size == 0 else None), + # DETACH and CONTIGUOUS_BACKWARD are NOOPs here, so is FUSE + (UPat((Ops.DETACH, Ops.CONTIGUOUS_BACKWARD, Ops.FUSE), name="x"), lambda x: x.src[0]), + # reduce of size 0 is the identity element + (UPat(Ops.REDUCE_AXIS, name="reduce", src=(UPat.var("x"),)), + lambda reduce,x: reduce.const_like(identity_element(reduce.arg[0], reduce.dtype)) if x.size == 0 and reduce.size != 0 else None), + # non shape changing RESHAPE is NOOP + (UPat(Ops.RESHAPE, name="x"), lambda x: x.src[0] if x.src[0].shape == x.arg else None), + # RESHAPE after COPY + (UPat(Ops.COPY, src=(UPat(Ops.RESHAPE, name="r"),UPat(name="d")), name="c"), lambda c,r,d: c.replace(src=(r.src[0],d)).reshape(r.arg)), + # TODO: this should be BUFFER_VIEW + (UPat(Ops.COPY, src=(UPat(Ops.SHRINK, name="r"),UPat(name="d")), name="c"), lambda c,r,d: c.replace(src=(r.src[0],d)).shrink(r.arg)), + # const hacks + (UPat(Ops.CONST, name="x"), lambda x: + x.replace(src=(x.src[0].src[0],)).reshape((1,)*len(x.shape)).expand(x.shape) if \ + len(x.src) and x.src[0].op is Ops.VIEW and not any(s == 0 for s in x.shape) else None), + # assign only to buffer + (UPat(Ops.ASSIGN, src=(UPat(GroupOp.All-{Ops.BUFFER}, name="target"), UPat(name="x"))), + lambda x,target: x if target.base.op is not Ops.BUFFER else None), + # contiguous/buffer/copy/assign is already contiguous + (UPat(Ops.CONTIGUOUS, name="root", src=(UPat((Ops.CONTIGUOUS, Ops.BUFFER, Ops.COPY, Ops.ASSIGN)),)), lambda root: root.src[0]), +]) + +# 1. add contiguous where we have to + +ALWAYS_CONTIGUOUS: set[Ops] = {Ops.CONTIGUOUS, Ops.ASSIGN, Ops.COPY, Ops.BUFFER, Ops.BUFFER_VIEW, + Ops.CONST, Ops.BIND, Ops.DEVICE, Ops.MSELECT, Ops.MSTACK, Ops.DEFINE_GLOBAL, + Ops.DEFINE_LOCAL, Ops.DEFINE_REG, Ops.LOAD} + +def realize(ctx:dict[UOp, None], tr:UOp) -> None: ctx[tr] = None + +def realize_parents(ctx:dict[UOp, None], rb:UOp) -> None: + for s in rb.src: + if s.op not in ALWAYS_CONTIGUOUS: ctx[s] = None + +def realize_assign(ctx:dict[UOp, None], a:UOp) -> None: + if a.src[1].op not in ALWAYS_CONTIGUOUS: ctx[a.src[1]] = None + +do_realize = PatternMatcher([ + # always realize SINK parents + (UPat(Ops.SINK, name="s"), lambda ctx,s: ctx.update((x.base, None) for x in s.src if x.base.op not in ALWAYS_CONTIGUOUS)), + # always realize ASSIGN/COPY/BUFFER_VIEW + (UPat({Ops.ASSIGN, Ops.COPY, Ops.BUFFER_VIEW}, name="tr"), realize), + # realize parents of COPY, MSELECT, MSTACK + (UPat((Ops.COPY, Ops.MSELECT, Ops.MSTACK), name="rb"), realize_parents), + # realize input to assign (might be optimized out) + (UPat(Ops.ASSIGN, name="a"), realize_assign), +]) + +add_contiguous = PatternMatcher([ + (UPat(GroupOp.All-{Ops.CONTIGUOUS}, name="x"), lambda ctx,x: x.replace(tag=1).contiguous() if x in ctx and x.tag is None else None), +]) +remove_tags = PatternMatcher([(UPat(GroupOp.All, name="x"), lambda x: x.replace(tag=None) if x.tag is not None else None)]) + +# 2. mark all children + +@dataclass +class ChildrenContext: children: dict[UOp, list[UOp]]|None = None +def extract_children(ctx:ChildrenContext, x:UOp): + if ctx.children is not None: return + children_map = x.get_children_map() + ctx.children = {} + for k,v in children_map.items(): + non_sink_children = [u for u in v if u.op is not Ops.SINK] + if len(non_sink_children) <= 1: continue + # NOTE: this gate shouldn't be here + if any(x.op is Ops.REDUCE_AXIS for x in k.toposort()) and any(x.op in {Ops.BUFFER, Ops.CONTIGUOUS} for x in k.toposort()): + ctx.children[k] = non_sink_children + +def mark_children(ctx:ChildrenContext, x:UOp): + assert ctx.children is not None + new_srcs = [(UOp(Ops.CHILD, s.dtype, src=(UOp(Ops.CHILDREN, s.dtype, (s,), arg=len(ctx.children[s])),), + arg=(ctx.children[s].index(x), len(ctx.children[s]))) if s in ctx.children else s) for s in x.src] + return x.replace(src=tuple(new_srcs)) + +pm_children = PatternMatcher([ + (UPat(Ops.SINK, name="x"), extract_children), + (UPat(GroupOp.All-{Ops.CHILD, Ops.CHILDREN}, name="x"), mark_children), +]) + +# 3. rangeify + +@dataclass +class RangeifyContext: + # block on parent until all children have been seen + seen_children: dict[UOp, dict[int, UOp]] = field(default_factory=dict) + seen_child: dict[UOp, Any] = field(default_factory=dict) + progress: int = 0 + + # create ranges + range_idx: int = 0 + def new_range(self, s:sint, axistype:AxisType=AxisType.LOOP): + ret = UOp.range(s, self.range_idx, axistype) + self.range_idx += 1 + return ret + +def map_reshape(idx:UOp, r:UOp): + acc = 1 + to_sum = [] + for s,src in list(zip(idx.shape, idx.src[1:]))[::-1]: + to_sum.append(acc*src) + acc *= s + mish = sum(to_sum, start=UOp.const(dtypes.int, 0)) + ret:list[UOp] = [] + for s in r.src[0].shape[::-1]: + ret.append(mish % s) # NOTE: simplify will turn this to CONST + mish //= s + tret = ret[0].sink(*ret[1:]).simplify().src[::-1] if len(ret) else () + return r.src[0].index(*tret, dtype=idx.dtype, arg=idx.arg) + +def map_pad(idx:UOp, r:UOp): + ret = list(idx.src[1:]) + bigwhere = UOp.const(dtypes.bool, True) + for i,(sh,(s,e)) in enumerate(zip(r.shape, r.arg)): + if s == 0 and e == 0: continue + where = UOp.const(dtypes.bool, True) + if resolve(e > 0): where = where & (ret[i] < (sh-e)) + if resolve(s > 0): where = where & (ret[i] >= s) + bigwhere = bigwhere & where + # this is safe but dumb + # TODO (S-Lykles): switch to mixed index/valid + ret[i] = (ret[i] - s).maximum(0).minimum(r.src[0].shape[i]-1) + # PAD is with 0 + return bigwhere.simplify().where(r.src[0].index(*ret, dtype=idx.dtype, arg=idx.arg), UOp.const(r.dtype, 0)) + +def map_expand(r:UOp, idx:UOp): + new_rngs = [] + ending_ranges = [] + non_ending_ranges = [] + for a,x,y in zip(idx.src[1:], r.src[0].shape, r.shape): + axis_to_range = [u for u in a.toposort() if u.op is Ops.RANGE] + if resolve(x!=y, False): + ending_ranges.extend(axis_to_range) + new_rngs.append(a.const_like(0)) + else: + non_ending_ranges.extend(axis_to_range) + new_rngs.append(a) + ending_ranges = [x.arg for x in ending_ranges if x not in non_ending_ranges] + if idx.arg is not None: ending_ranges.append(idx.arg) + return r.src[0].index(*new_rngs, arg=min(ending_ranges) if ending_ranges else None) + +pm_mops = PatternMatcher([ + # this is like the definitions of these + (UPat(Ops.SHRINK, name="r").f(Ops.INDEX, allow_any_len=True, name="idx"), + lambda r,idx: r.src[0].index(*[a+ss if resolve(ss != 0) else a for a,(ss,_) in zip(idx.src[1:], r.arg)], dtype=idx.dtype, arg=idx.arg)), + (UPat(Ops.PERMUTE, name="r").f(Ops.INDEX, allow_any_len=True, name="idx"), + lambda r,idx: r.src[0].index(*[idx.src[1+p] for p in argsort(idx.src[0].arg)], dtype=idx.dtype, arg=idx.arg)), + (UPat(Ops.FLIP, name="r").f(Ops.INDEX, allow_any_len=True, name="idx"), + lambda r,idx: r.src[0].index(*[((s-1)-a) if f else a for a,s,f in zip(idx.src[1:], r.shape, r.arg)], dtype=idx.dtype, arg=idx.arg)), + # expand needs to end ranges + (UPat(Ops.EXPAND, name="r").f(Ops.INDEX, allow_any_len=True, name="idx"), map_expand), + # reshape does a lot of symbolic stuff + (UPat(Ops.RESHAPE, name="r").f(Ops.INDEX, allow_any_len=True, name="idx"), map_reshape), + # pad adds min and max + (UPat(Ops.PAD, name="r").f(Ops.INDEX, allow_any_len=True, name="idx"), map_pad), +]) + +def map_partial_contiguous(ctx:RangeifyContext, x:UOp, idx:UOp): + if x.arg is None: return None # map_contiguous can handle this + # NOTE: all partial contiguous can safely be replaced by full contiguous. we should be able to match old functionality like this + if not (RANGEIFY > 1): return idx.replace(src=(x.replace(arg=None),)+idx.src[1:]) + ranges = [] + new_ranges = [] + passthrough_idx = [] + for i,s in enumerate(x.shape): + if i not in x.arg: + ranges.append(idx.src[1+i]) + continue + passthrough_idx.append(idx.src[1+i]) + ranges.append(ctx.new_range(s) if resolve(s!=1) else UOp.const(dtypes.int, 0)) + new_ranges.append(ranges[-1]) + ret = x.src[0].index(*ranges).bufferize(*[x for x in new_ranges if x.op is not Ops.CONST], arg=x.device) + return ret.index(*passthrough_idx) + +def map_contiguous(ctx:RangeifyContext, x:UOp): + if x.arg is not None: return None + ranges = [] + for s in x.shape[len(x.src)-1:]: + ranges.append(ctx.new_range(s) if resolve(s!=1) else UOp.const(dtypes.int, 0)) + ret = x.src[0].index(*ranges).bufferize(*x.src[1:], *[x for x in ranges if x.op is not Ops.CONST], arg=x.device) + return ret.shrink(((0, prod(x.shape)),)).forced_reshape(x.shape) + +def map_reduce(ctx:RangeifyContext, idx:UOp, red:UOp): + rngs = list(idx.src[1:]) + new_ranges = [] + for i,s in enumerate(red.src[0].shape): + if i in red.arg[1]: + rngs[i] = ctx.new_range(s, axistype=AxisType.REDUCE) + new_ranges.append(rngs[i]) + return UOp(Ops.REDUCE, red.dtype, src=(red.src[0].index(*rngs),)+tuple(new_ranges), arg=red.arg[0]) + +def index_child(ctx:RangeifyContext, c:UOp, x:UOp, idx:UOp): + if c not in ctx.seen_children: ctx.seen_children[c] = {} + # wait here until we have seen all the children + if len(ctx.seen_children[c]) != x.arg[1]: + ctx.progress += 1 + if ctx.progress > 10000: raise RuntimeError("children not making progress") + # NOTE: we mark this here + ctx.seen_children[c][x.arg[0]] = idx + raise RewriteNotReady + ctx.progress = 0 + + if c not in ctx.seen_child: + all_rngs = zip(*[ch.src[1:] for ch in ctx.seen_children[c].values()]) + out_rngs = [] + end_ranges = [] + idx_ranges = [] + for i,r in enumerate(all_rngs): + if all_same(r): + out_rngs.append(r[0]) + else: + out_rngs.append(ctx.new_range(c.shape[i])) + end_ranges.append(out_rngs[-1]) + idx_ranges.append(i) + ctx.seen_child[c] = (idx_ranges, end_ranges) + else: + out_rngs = list(idx.src[1:]) + idx_ranges, end_ranges = ctx.seen_child[c] + for i,nr in zip(idx_ranges, end_ranges): out_rngs[i] = nr + # index based on the shared ranges + ret = c.index(*out_rngs) + # if all ranges aren't the same between children, we have to bufferize + if len(idx_ranges) > 0: ret = ret.bufferize(*end_ranges, arg=x.device).index(*[idx.src[1+i] for i in idx_ranges]) + return ret + +def children_gate(ctx:RangeifyContext, idx:UOp, c:UOp): + if len(ctx.seen_children[c]) != c.arg: raise RuntimeError("all children should have been seen by now") + return idx.replace(src=(idx.src[0].src[0],)+idx.src[1:]) + +def might_end_axis(idx:UOp): + if idx.arg is None: return None + # TODO: write a proper cost function here + if all(x.op not in {Ops.BUFFER, Ops.CONTIGUOUS, Ops.BUFFERIZE} for x in idx.toposort()): return None + if all(x.op not in {Ops.REDUCE_AXIS} for x in idx.toposort()): return None + to_end_axis = [] + for i,a in enumerate(idx.src[1:]): + if any(x.arg > idx.arg for x in a.toposort() if x.op is Ops.RANGE): + to_end_axis.append(i) + if to_end_axis: return idx.replace(src=(idx.src[0].contiguous(arg=tuple(to_end_axis)),)+idx.src[1:], arg=None) + return idx.replace(arg=None) + +pm_rangeify = pm_mops+PatternMatcher([ + # sink contigs to kick it off + (UPat(Ops.CONTIGUOUS, src=(UPat(),), name="x", allow_any_len=True), map_contiguous), + # if there's an INDEX it can support partial contig + (UPat(Ops.INDEX, src=(UPat(Ops.CONTIGUOUS, src=(UPat(),), name="x"),), allow_any_len=True, name="idx"), map_partial_contiguous), + + # if there are new ended children, tag the SINK + (UPat(Ops.INDEX, src=(UPat(Ops.CHILD, src=(UPat(name="c"), ), name="x"),), allow_any_len=True, name="idx"), index_child), + (UPat(Ops.INDEX, src=(UPat(Ops.CHILDREN, name="c"),), allow_any_len=True, name="idx"), children_gate), + + # if we come across this, remove it. it was a CHILD unused in an INDEX + (UPat(Ops.CHILD, src=(UPat(Ops.CHILDREN, src=(UPat.var("x"),)),)), lambda x: x), + + # CONST (or DEFINE_VAR) can't have axes. remove srcs when we INDEX it + (UPat(Ops.INDEX, src=(UPat((Ops.CONST, Ops.DEFINE_VAR), name="c"),)), lambda c: c.replace(src=())), + + # handle arg on any op with weight. old endrange stuff + (UPat(Ops.INDEX, src=(UPat(GroupOp.Elementwise.union({Ops.REDUCE_AXIS})),), allow_any_len=True, name="idx"), might_end_axis), + + # move MAP through elementwise ALU / reduce. these are the items with cost + (UPat(Ops.INDEX, src=(UPat(GroupOp.Elementwise.union({Ops.STORE, Ops.ASSIGN, Ops.COPY, Ops.DEVICE, Ops.BIND})),), allow_any_len=True, name="x"), + lambda x: x.src[0].replace(src=tuple([s.index(*x.src[1:]) for s in x.src[0].src]))), + (UPat(Ops.INDEX, src=(UPat(Ops.REDUCE_AXIS, name="red"),), allow_any_len=True, name="idx"), map_reduce), +]) + +# 3.5 cleanups + +# you don't know in the first pass if axes are going to die, this happens if there's an EXPAND to the left +# TODO: figure out how to reenable this +def cleanup_dead_axes(b:UOp): + parents = b.src[0].toposort() + new_rng = [] + hit = False + reshape: list[sint] = [] + for s,rng in zip(b.shape, b.src[1:]): + if rng not in parents and rng.op is Ops.RANGE: + reshape.append(1) + hit = True + else: + reshape.append(s) + new_rng.append(rng) + if hit: + return b.replace(src=b.src[0:1]+tuple(new_rng)).reshape(tuple(reshape)).expand(b.shape) + +# if a buffer is being stored just for permutes or something, remove it +# we want to reexpress the indexes of idx2 in terms of the implied b1 +def remove_bufferize(b2:UOp, idx2:UOp): + # HACK + if len(b2.src) != len(idx2.src): return None + assert len(b2.src) == len(idx2.src) + assert all(x.op is Ops.RANGE for x in b2.src[1:]) + return b2.src[0].substitute(dict(zip(b2.src[1:], idx2.src[1:]))) + +pm_cleanups = double_reshape+pm_mops+PatternMatcher([ + #(UPat(Ops.BUFFERIZE, name="b"), cleanup_dead_axes), + # remove noop buffers. if we look at the next index we can remove even more of these + # NOTE: this is mostly the same case as below, but if there's no INDEX this gets more + #(UPat(Ops.INDEX, name="idx").f(Ops.BUFFERIZE, allow_any_len=True, name="b2"), + # lambda idx,b2: idx.src[0] if idx.src[1:] == b2.src[1:] else None), + # remove reindexing + (UPat(Ops.INDEX).f(Ops.BUFFERIZE, allow_any_len=True, name="b2").f(Ops.INDEX, allow_any_len=True, name="idx2"), remove_bufferize), + # no buffers for const + #(UPat(Ops.CONST, name='c').f(Ops.BUFFERIZE, allow_any_len=True, name="b"), lambda c,b: c.reshape((1,)*len(b.shape)).expand(b.shape)), +]) + +# 4. put in buffers for bufferize +# TODO: should BUFFERIZE look a lot more like STORE +# BUFFERIZE has device in arg +# BUFFERIZE doesn't have indexing, that's implied by the ranges it closes +# BUFFERIZE returns the BUFFER ready for INDEXing (doing this will make splitting a lot easier) +# NOTE: this has been fixed up a bit + +def bufferize_to_store(x:UOp, locals_allowed=False): + rngs = x.src[1:] + shape = tuple([int(r.vmax+1) for r in rngs]) + size = prod(shape) + assert size > 0, f"no zero sized buffers {shape}" + sdtype = x.dtype.ptr(size=size, addrspace=AddrSpace.GLOBAL if not isinstance(x.arg, tuple) else x.arg[0]) + if x.src[0].op is Ops.ASSIGN: + assign_target, assign_src = x.src[0].src + assert assign_target.op is Ops.INDEX + return assign_target.replace(dtype=sdtype).store(assign_src, *rngs, dtype=sdtype) + # NOTE: the DEFINE_LOCAL needs to be disambiguated here + if sdtype.addrspace == AddrSpace.GLOBAL: + buf = UOp.new_buffer(x.arg, size, x.dtype) + else: + if not locals_allowed: return None + buf = UOp(Ops.DEFINE_LOCAL, sdtype, arg=x.arg[1]) + return buf.reshape(shape).index(*rngs, dtype=sdtype).store(x.src[0], *rngs, dtype=sdtype).forced_reshape(shape, dtype=x.dtype) + +pm_add_buffers_local = pm_mops+PatternMatcher([ + (UPat(Ops.BUFFERIZE, name="x"), lambda x: bufferize_to_store(x, True)), +]) + +pm_add_buffers = pm_mops+PatternMatcher([ + (UPat(Ops.BUFFERIZE, name="x"), bufferize_to_store), + + # move RESHAPEs through MSELECT/MSTACK + (UPat((Ops.MSELECT, Ops.MSTACK), src=UPat(Ops.RESHAPE), name="m"), + lambda m: m.replace(src=tuple([x.src[0] for x in m.src])).reshape(m.src[0].arg)), +]) + +# 5. split into kernels + +@dataclass +class LocalAddBufferContext: + dg:int = 0 + map:dict = field(default_factory=dict) + vars:dict = field(default_factory=dict) + +def debuf(ctx:LocalAddBufferContext, buf:UOp): + ret = UOp(Ops.DEFINE_GLOBAL, buf.dtype.ptr(buf.arg), arg=ctx.dg) + if buf not in ctx.map: ctx.map[buf] = buf + ctx.dg += 1 + return ret + +def unbind_kernel(ctx:LocalAddBufferContext, b:UOp): + ctx.vars[b] = None + return b.src[0] + +def handle_assign(ctx:LocalAddBufferContext, assign:UOp): + buf = assign.as_buf() + # HACK to put the buffer in the MAP instead of MSTACK/MSELECT + if buf.op in {Ops.MSTACK, Ops.MSELECT}: buf = buf.src[0] + assert buf not in ctx.map + ctx.map[buf] = assign + return buf + +to_define_global = PatternMatcher([ + (UPat(Ops.BUFFER, name="buf"), debuf), + (UPat(Ops.BIND, name="b"), unbind_kernel), + (UPat((Ops.ASSIGN, Ops.MSTACK, Ops.MSELECT), name="assign"), handle_assign), + + # HACK in case any CONSTs were replaced + # this is only needed if you are using symbolic + #(UPat(Ops.CONST, name="c"), lambda c: c.replace(src=()) if len(c.src) else None), +]) + +rangeify_codegen = PatternMatcher([ + # add loads to non ptr indexes + # TODO: this can be moved into codegen? + (UPat((Ops.DEFINE_GLOBAL, Ops.STORE), name="dg").f(Ops.INDEX, name="idx", allow_any_len=True), + lambda dg,idx: None if isinstance(idx.dtype, (PtrDType, ImageDType)) else idx.replace(dtype=dg.dtype, arg=None).load()), + + # TODO: this can be moved into codegen + (UPat(Ops.STORE, name="store").f(Ops.INDEX, allow_any_len=True, name="idx").f(Ops.LOAD), + lambda store,idx: idx.replace(src=(store.as_buf(),)+idx.src[1:]).load(store if idx.dtype.addrspace != AddrSpace.LOCAL else store.barrier())), + + # TODO: hack for group for reduce + (UPat(Ops.IF, src=(UPat.var("gate"), UPat(Ops.LOAD, src=(UPat.var("src"), UPat.var("barrier"))),)), + lambda src, barrier, gate: src.load(UOp(Ops.IF, src=(gate, barrier)))), +]) + +def split_store(x:UOp): + if len(x.ranges): return None + ctx = LocalAddBufferContext() + ret = graph_rewrite(x, to_define_global+rangeify_codegen, ctx=ctx, name="kernel split", bottom_up=True) + + # NOTE: the hack for COPY is here + ret = ret.sink() if ret.src[1].op is not Ops.COPY else ret.src[1] + kernel = UOp(Ops.KERNEL, src=tuple(ctx.map.values())+tuple(ctx.vars.keys()), arg=Kernel(ret,())) + return x.as_buf().assign(kernel) + +split_kernels = PatternMatcher([ + (UPat(Ops.STORE, name="x"), split_store), +]) + +@track_rewrites(name=lambda sink,ret: f"Schedule {pluralize('Kernel',len([u for u in ret[sink].toposort() if u.op is Ops.KERNEL]))}", replay=True) +def get_rangeify_map(sink:UOp) -> dict[UOp, UOp]: + tensor_map = graph_rewrite_map(sink, multi_pm+earliest_rewrites, name="earliest") + realize_map: dict[UOp, UOp] = {} + graph_rewrite(tensor_map[sink], do_realize, ctx=realize_map, name="Input Graph") + tensor_map = graph_rewrite_map(tensor_map[sink], add_contiguous, ctx=realize_map, bottom_up=True, input_map=tensor_map, name="add contiguous") + tensor_map = graph_rewrite_map(tensor_map[sink], remove_tags, input_map=tensor_map, name="cleanup") + tensor_map = graph_rewrite_map(tensor_map[sink], pm_children, ctx=ChildrenContext(), bottom_up=True, input_map=tensor_map, name="children") + tensor_map = graph_rewrite_map(tensor_map[sink], pm_rangeify, ctx=RangeifyContext(), bottom_up=True, input_map=tensor_map, name="rangeify") + # NOTE: running symbolic can break the graph, leaving RANGE/INDEX/BUFFERIZE in the final graph + #tensor_map = graph_rewrite_map(tensor_map[sink], symbolic_simple, input_map=tensor_map, name="symbolic") + tensor_map = graph_rewrite_map(tensor_map[sink], pm_cleanups, bottom_up=True, input_map=tensor_map, name="cleanups") + if getenv("VIZ"): graph_rewrite(tensor_map[sink], PatternMatcher([]), name="View Rangeify Graph") + + tensor_map = graph_rewrite_map(tensor_map[sink], pm_add_buffers, bottom_up=True, input_map=tensor_map, name="add buffers") + tensor_map = graph_rewrite_map(tensor_map[sink], split_kernels, input_map=tensor_map, name="split kernels") + + # if a kernel depends on a buffer, and that buffer is later assigned to, make the assign depend on the kernel's assign + kernel_assign: dict[UOp, UOp] = {} + assign_rep: dict[UOp, UOp] = {} + for u in tensor_map[sink].toposort(): + if u.op is not Ops.ASSIGN: continue + kernel_assign[u.buf_uop] = u + for s in u.src[1].src: + # TODO: this is probably broken for MSELECT/MSTACK + if s.op is not Ops.BUFFER or s is u.buf_uop or (a:=kernel_assign.get(s)) is None: continue + if any(x.op is Ops.ASSIGN and x.buf_uop is s for x in u.toposort()): + raise RuntimeError(f"cycle detected in graph, kernel for {u.buf_uop} must either depend on ASSIGN or BUFFER") + assign_rep[a] = kernel_assign[s] = a.replace(src=a.src+(u,)) + if assign_rep: + tensor_map = graph_rewrite_map(tensor_map[sink], _substitute, ctx=assign_rep, bottom_up=True, input_map=tensor_map, name="fix_assign") + + if getenv("VIZ"): graph_rewrite(tensor_map[sink], PatternMatcher([]), name="View Kernel Graph") + return tensor_map diff --git a/tinygrad_repo/tinygrad/shape/shapetracker.py b/tinygrad_repo/tinygrad/shape/shapetracker.py index bdc83b802..3abddc69c 100644 --- a/tinygrad_repo/tinygrad/shape/shapetracker.py +++ b/tinygrad_repo/tinygrad/shape/shapetracker.py @@ -4,7 +4,7 @@ from dataclasses import dataclass import functools from typing import Callable from tinygrad.helpers import merge_dicts, getenv -from tinygrad.shape.view import View, strides_for_shape, unravel +from tinygrad.shape.view import View, unravel from tinygrad.dtype import dtypes from tinygrad.uop.ops import UOp, Ops, graph_rewrite, Variable, sint, sint_to_uop, Context, PatternMatcher, UPat, GroupOp from tinygrad.uop.symbolic import split_uop, symbolic_flat, uop_given_valid, simplify_valid @@ -44,13 +44,13 @@ def views_to_real_strides(views: tuple[View, ...], ignore_valid=False) -> tuple[ ret: list[sint|None] = [None] * len(views[-1].shape) idx, valid = views_to_indexed_uops(views) for c in split_uop(idx, Ops.ADD): - if c.op is Ops.RANGE: ret[c.arg] = 1 - if c.op is Ops.MUL and c.src[0].op is Ops.RANGE and c.src[1].op is Ops.CONST: ret[c.src[0].arg] = c.src[1].arg - if c.op is Ops.MUL and c.src[1].op is Ops.RANGE and c.src[0].op is Ops.CONST: ret[c.src[1].arg] = c.src[0].arg - used_ranges = [x.arg for x in idx.toposort() if x.op is Ops.RANGE] + if c.op is Ops.RANGE: ret[c.arg[0]] = 1 + if c.op is Ops.MUL and c.src[0].op is Ops.RANGE and c.src[1].op is Ops.CONST: ret[c.src[0].arg[0]] = c.src[1].arg + if c.op is Ops.MUL and c.src[1].op is Ops.RANGE and c.src[0].op is Ops.CONST: ret[c.src[1].arg[0]] = c.src[0].arg + used_ranges = [x.arg[0] for x in idx.toposort() if x.op is Ops.RANGE] ret = [x if i in used_ranges else 0 for i,x in enumerate(ret)] if not ignore_valid: - for masked_axis in [x.arg for x in valid.toposort() if x.op is Ops.RANGE]: ret[masked_axis] = None + for masked_axis in [x.arg[0] for x in valid.toposort() if x.op is Ops.RANGE]: ret[masked_axis] = None return tuple(ret) @dataclass(frozen=True, order=True) @@ -75,9 +75,6 @@ class ShapeTracker: @property def contiguous(self) -> bool: return len(self.views) == 1 and self.views[0].contiguous - @property - def consecutive(self) -> bool: return len(self.views) == 1 and (v:=self.views[0]).mask is None and v.strides == strides_for_shape(v.shape) - @property def shape(self) -> tuple[sint, ...]: return self.views[-1].shape @@ -86,7 +83,6 @@ class ShapeTracker: def reduce(self, axis:tuple[int, ...]) -> tuple[sint, ...]: return tuple(1 if i in axis else s for i,s in enumerate(self.shape)) - def to_uop(self) -> UOp: return UOp(Ops.VIEW, dtypes.void, (), self) def to_indexed_uops(self, _idxs:list[UOp]|tuple[UOp, ...]|None=None) -> tuple[UOp, UOp]: return views_to_indexed_uops(self.views, tuple(_idxs) if _idxs is not None else None) @@ -116,7 +112,7 @@ class ShapeTracker: def axis_is_masked(self, axis:int) -> bool: with Context(TRACK_MATCH_STATS=0): _, valid = self.to_indexed_uops() - return axis in [x.arg for x in graph_rewrite(valid, symbolic_flat).toposort() if x.op is Ops.RANGE] + return axis in [x.arg[0] for x in graph_rewrite(valid, symbolic_flat).toposort() if x.op is Ops.RANGE] def simplify(self) -> ShapeTracker: if len(self.views) >= 2 and (new_view := self.views[-2] + self.views[-1]) is not None: diff --git a/tinygrad_repo/tinygrad/shape/view.py b/tinygrad_repo/tinygrad/shape/view.py index 0475fc650..6b4cd22bb 100644 --- a/tinygrad_repo/tinygrad/shape/view.py +++ b/tinygrad_repo/tinygrad/shape/view.py @@ -3,7 +3,7 @@ import functools, operator, itertools from dataclasses import dataclass from typing import cast, Sequence from tinygrad.dtype import dtypes -from tinygrad.uop.ops import resolve, UOp, Variable, sint, sym_infer, smax, smin, sint_to_uop, Ops, ssimplify +from tinygrad.uop.ops import resolve, UOp, Variable, sint, smax, smin, sint_to_uop, Ops, ssimplify from tinygrad.helpers import prod, all_int, argsort, flatten, ceildiv # returns the axes to create new_shape if new_shape can be created by combining axis from old_shape @@ -114,7 +114,7 @@ class View: def to_indexed_uops(self:View, idxs:Sequence[UOp]|None=None, vexpr:UOp=UOp.const(dtypes.bool, True)) -> tuple[UOp, UOp]: """(idx, valid)""" - if idxs is None: idxs = [UOp.range(dtypes.int, s, i) for i,s in enumerate(self.shape)] + if idxs is None: idxs = [UOp.range(s, i) for i,s in enumerate(self.shape)] iexpr = sint_to_uop(self.offset) for idx,sh,st,m in zip(idxs, self.shape, self.strides, self.mask if self.mask is not None else itertools.repeat(None)): if resolve(sh != 1) and resolve(st != 0): iexpr = iexpr + idx*st @@ -311,9 +311,10 @@ class View: if not all(x >= 0 for x in new_shape): raise ValueError(f"shape can't contain negative numbers {new_shape}") # check for the same size - if (self_all_int := all_int(self.shape)): - assert all(isinstance(s, (int, UOp)) for s in new_shape), f"{self.shape=} -> {new_shape=} contains non (int, Variable) dim" - if resolve(prod(self.shape) != prod(new_shape), False): raise ValueError(f"size mismatched, can't reshape {self.shape=} -> {new_shape=}") + if all_int(self.shape): + # reshapes cannot introduce symbolic shape + assert all_int(new_shape), f"{self.shape=} -> {new_shape=} contains non int dims" + if prod(self.shape) != prod(new_shape): raise ValueError(f"size mismatched, can't reshape {self.shape=} -> {new_shape=}") if 0 in self.shape: return View.create(new_shape) if new_shape == () and self.mask and any(mx==my for (mx,my) in self.mask): return None @@ -321,15 +322,6 @@ class View: # after the asserts, it's okay to check contiguous if self.contiguous: return View.create(new_shape) - # if it's not contiguous and new shape is symbolic, check if it's directly replaceable - if self_all_int and not all_int(new_shape): - if len(self.shape) != len(new_shape): raise ValueError(f"cannot symbolic reshape non-contiguous {self} -> {new_shape}") - for si, so in zip(self.shape, new_shape): - if not isinstance(so, int): so = sym_infer(so, dict([v.unbind() for v in so.vars()])) - if si != so: raise ValueError(f"cannot symbolic reshape non-contiguous {self} -> {new_shape}") - # all dimensions matched, return the new view directly - return View(new_shape, self.strides, self.offset, self.mask, self.contiguous) - r_strides, r_new_shape = [], reversed(new_shape) for merged_size, new_stride, real_size in reversed(merge_dims(self.shape, self.strides, self.mask)): # TODO: write with get_contraction diff --git a/tinygrad_repo/tinygrad/tensor.py b/tinygrad_repo/tinygrad/tensor.py index 53a7790a6..bdfd18ea5 100644 --- a/tinygrad_repo/tinygrad/tensor.py +++ b/tinygrad_repo/tinygrad/tensor.py @@ -1,12 +1,12 @@ # inspired by https://github.com/karpathy/micrograd/blob/master/micrograd/engine.py from __future__ import annotations -import time, math, itertools, functools, struct, sys, inspect, pathlib, string, hashlib, weakref, contextvars +import time, math, itertools, functools, struct, sys, inspect, pathlib, string, hashlib, weakref from contextlib import ContextDecorator -from typing import Callable, ClassVar, Sequence, cast, get_args, Literal, SupportsIndex, ParamSpec, TypeVar +from typing import Callable, ClassVar, Sequence, cast, get_args, Literal, SupportsIndex, ParamSpec, TypeVar, Generic from tinygrad.dtype import DType, DTypeLike, dtypes, ImageDType, ConstType, least_upper_float, least_upper_dtype, sum_acc_dtype, to_dtype, truncate from tinygrad.dtype import _from_np_dtype, _to_np_dtype from tinygrad.helpers import argfix, make_tuple, flatten, prod, all_int, round_up, merge_dicts, argsort, getenv, all_same, fully_flatten, dedup -from tinygrad.helpers import IMAGE, WINO, Metadata, TRACEMETA, ceildiv, fetch, polyN, unwrap, DEBUG, is_numpy_ndarray +from tinygrad.helpers import IMAGE, WINO, Metadata, TRACEMETA, ceildiv, fetch, polyN, unwrap, DEBUG, is_numpy_ndarray, RANGEIFY, FUSE_ATTENTION from tinygrad.gradient import compute_gradient from tinygrad.uop.ops import smax, smin, resolve, UOp, Ops, sint, Variable, MathTrait, identity_element, all_metadata from tinygrad.uop.spec import tensor_uop_spec, type_verify @@ -14,6 +14,7 @@ from tinygrad.device import Device, Buffer from tinygrad.engine.realize import run_schedule from tinygrad.engine.memory import memory_planner from tinygrad.engine.schedule import ScheduleItem, create_schedule_with_vars +from tinygrad.schedule.rangeify import get_rangeify_map from tinygrad.schedule.kernelize import get_kernelize_map # *** all in scope Tensors are here. this gets relevant UOps *** @@ -39,6 +40,9 @@ def _apply_map_to_tensors(applied_map:dict[UOp, UOp], name:str|None=None) -> Non sink = UOp.sink(*[t.uop for t in fixed_tensors]) new_sink = sink.substitute(applied_map, name=name) + # NOTE: you can check the Tensor graph early here + #if __debug__: type_verify(list(new_sink.toposort()), tensor_uop_spec) + # set the relevant uop to the realized UOps for t,s,ns in zip(fixed_tensors, sink.src, new_sink.src): if s is ns: continue @@ -46,9 +50,6 @@ def _apply_map_to_tensors(applied_map:dict[UOp, UOp], name:str|None=None) -> Non # **** Tensor helper functions **** -# this tracks the tensor.py METADATA -_METADATA: contextvars.ContextVar[Metadata|None] = contextvars.ContextVar("_METADATA", default=None) - def _fromnp(x: 'np.ndarray') -> UOp: # type: ignore [name-defined] # noqa: F821 ret = UOp.new_buffer("NPY", x.size, _from_np_dtype(x.dtype)) # fake realize @@ -67,7 +68,7 @@ def _frompy(x:list|tuple|bytes, dtype:DType) -> UOp: ret = UOp.new_buffer("PYTHON", prod(shape:=get_shape(x)), dtype).reshape(shape) assert dtype.fmt is not None, f"{dtype=} has None fmt" truncate_function = truncate[dtype] - data = struct.pack(f"@{ret.size}{dtype.fmt}", *[truncate_function(xi) for xi in fully_flatten(x)]) + data = struct.pack(f"{ret.size}{dtype.fmt}", *[truncate_function(dtypes.as_const(xi, dtype)) for xi in fully_flatten(x)]) # fake realize ret.buffer.allocate(memoryview(data if Device.DEFAULT != "PYTHON" else bytearray(data))) return ret @@ -176,8 +177,8 @@ class Tensor(MathTrait): all_tensors[weakref.ref(self)] = None def __del__(self): all_tensors.pop(weakref.ref(self), None) - def _apply_uop(self, fxn:Callable, *x:Tensor, **kwargs) -> Tensor: - new_uop: UOp = fxn(*[t.uop for t in (self,)+x], **kwargs) + def _apply_uop(self, fxn:Callable, *x:Tensor, extra_args=(), **kwargs) -> Tensor: + new_uop: UOp = fxn(*[t.uop for t in (self,)+x], *extra_args, **kwargs) if (metadata:=_METADATA.get()) is not None: all_metadata[new_uop] = (metadata,) needs_input_grad = [t.requires_grad for t in (self,)+x] return Tensor(new_uop, device=new_uop.device, requires_grad=True if any(needs_input_grad) else None if None in needs_input_grad else False) @@ -234,7 +235,7 @@ class Tensor(MathTrait): # verify Tensors match the spec if __debug__: type_verify(list(big_sink.toposort()), tensor_uop_spec) - becomes_map = get_kernelize_map(big_sink) + becomes_map = get_rangeify_map(big_sink) if RANGEIFY else get_kernelize_map(big_sink) _apply_map_to_tensors(becomes_map, name="Apply Kernelize Map") return self @@ -255,7 +256,7 @@ class Tensor(MathTrait): # create the schedule schedule, var_vals = create_schedule_with_vars(sink) schedule = memory_planner(schedule) - if DEBUG >= 1 and len(schedule) >= 10: print(f"scheduled {len(schedule)} kernels in {(time.perf_counter()-st)*1000:.2f} ms") + if DEBUG >= 1 and len(schedule) > 1: print(f"scheduled {len(schedule)} kernels in {(time.perf_counter()-st)*1000:.2f} ms") return schedule, var_vals def schedule(self, *lst:Tensor) -> list[ScheduleItem]: @@ -282,11 +283,13 @@ class Tensor(MathTrait): # TODO: this is a hack for writing to DISK. remove with working assign if isinstance(self.device, str) and self.device.startswith("DISK"): if x.__class__ is not Tensor: x = Tensor(x, device="CPU", dtype=self.dtype) - cast(Buffer, self.contiguous().realize().uop.base.buffer).ensure_allocated().copyin(x._data()) + self._buffer().copyin(x._data()) return self if x.__class__ is not Tensor: x = Tensor(x, device=self.device, dtype=self.dtype) if self.uop is x.uop: return self # a self assign is a NOOP # NOTE: we allow cross device assign + # broadcast x + if least_upper_dtype(self.dtype, x.dtype) == self.dtype: x = x._broadcast_to(self.shape).cast(self.dtype) assert self.shape == x.shape, f"assign shape mismatch {self.shape} != {x.shape}" assert self.device == x.device, f"assign device mismatch {self.device} != {x.device}" assert self.dtype == x.dtype, f"assign dtype mismatch {self.dtype} != {x.dtype}" @@ -299,7 +302,10 @@ class Tensor(MathTrait): """ return Tensor(self.uop.detach(), device=self.device, requires_grad=False) - def _buffer(self) -> Buffer: return cast(Buffer, self.cast(self.dtype.base).contiguous().to("CPU").realize().uop.base.buffer) + def _buffer(self) -> Buffer: + x = self.cast(self.dtype.base).contiguous() + if isinstance(self.device, tuple): x = x.to("CPU") + return cast(Buffer, x.realize().uop.base.buffer).ensure_allocated() def _data(self) -> memoryview: return self._buffer().as_buffer() def data(self) -> memoryview: @@ -343,6 +349,8 @@ class Tensor(MathTrait): print(t.tolist()) ``` """ + # TODO: remove half once minimum python supports it + if self.dtype in (dtypes.half, dtypes.bfloat16, *dtypes.fp8s): return self.cast(dtypes.float32).tolist() return self.data().tolist() def numpy(self) -> 'np.ndarray': # type: ignore [name-defined] # noqa: F821 @@ -434,7 +442,7 @@ class Tensor(MathTrait): if not isinstance(size:=prod([x.vmax if isinstance(x, UOp) else x for x in shape]), int): raise ValueError(f"size must be int {size}") # TODO: add test for multidevice tensor device = tuple(Device.canonicalize(d) for d in device) if isinstance(device, tuple) else Device.canonicalize(device) - return Tensor(UOp.new_buffer(device, size, dtype), device, dtype, **kwargs).reshape(shape) + return Tensor(UOp.new_buffer(device, size, dtype), device, dtype, **kwargs).shrink(((0,prod(shape)),)).reshape(shape) @staticmethod def from_blob(ptr:int, shape:tuple[int, ...], **kwargs) -> Tensor: @@ -1125,11 +1133,12 @@ class Tensor(MathTrait): if (isinstance(indices, list) and all_int(indices)) or not isinstance(indices, (tuple, list)): indices = [indices] x, indices = self, list(indices) - # filter ellipsis and fill with slice(None) or fill rest of indices with slice(None) + # fill ellipsis or rest of indices with slice(None) if len(ellipsis_idx := [dim for dim, i in enumerate(indices) if i is Ellipsis]) > 1: raise IndexError("indices can only have a single ellipsis") - fill_idx = ellipsis_idx[0] if ellipsis_idx else len(indices) + # NOTE: None adds a dim later num_indices = len(indices) - len(ellipsis_idx) - sum(1 for i in indices if i is None) if num_indices > self.ndim: raise IndexError(f"too many {num_indices=} for {self.ndim=}") + fill_idx = ellipsis_idx[0] if ellipsis_idx else len(indices) indices[fill_idx:fill_idx+1] = [slice(None)] * (self.ndim - num_indices) indices_parsed, dim = [], 0 @@ -1137,12 +1146,15 @@ class Tensor(MathTrait): size = 1 if index is None else self.shape[dim] boundary, stride = [0, size], 1 # defaults match index: - case list() | tuple() | Tensor(): - if not isinstance(index, Tensor): index = Tensor(index, self.device, requires_grad=False) + case Tensor(): if not dtypes.is_int(index.dtype): raise IndexError(f"index dtype {index.dtype} is not supported") - index = (index.to(self.device) < 0).where(index+size, index) # treat negative index values + index = (index < 0).where(index+size, index).to(self.device) # treat negative index values + case list() | tuple(): + if not dtypes.is_int((ti:=Tensor(index)).dtype): raise IndexError(f"{index=} contains non-int element") + index = Tensor([i+size if i<0 else i for i in fully_flatten(index)], self.device, requires_grad=False).reshape(ti.shape) case int() | UOp(): # sint if index >= size or index < -size: raise IndexError(f"{index=} is out of bounds with {size=}") + # TODO: is this right for (negative) symbolic? boundary = [index, index+1] if index >= 0 else [index+size, index+size+1] case slice(): if index.step == 0: raise ValueError(f"{index=} cannot have 0 as step") @@ -1156,9 +1168,9 @@ class Tensor(MathTrait): elif stride < 0: boundary = [boundary[1] + 1, boundary[0] + 1] # update size for slice size = ceildiv((boundary[1] - boundary[0]), abs(stride)) - elif (step == 1) and isinstance(step, int) and all(isinstance(s,(int,UOp)) for s in (start, stop)) and resolve((stop-start) > 0, False): + elif resolve(step == 1, False) and all(isinstance(s,sint) for s in (start, stop)) and resolve((stop-start) > 0, False): # simple symbolic slice - size = cast(UOp|int, cast(UOp, (stop - start)).ssimplify()) + size = cast(sint, cast(UOp, (stop - start)).ssimplify()) else: raise TypeError(f"slice {index=} is not supported") case None: pass # do nothing case _: raise IndexError(f"{type(index).__name__} indexing is not supported") @@ -1170,9 +1182,9 @@ class Tensor(MathTrait): # flip negative strides shrinks, strides = zip(*((i['boundary'], i['stride']) for i in mops)) x = x.shrink(shrinks).flip(tuple(i for i,st in enumerate(strides) if st < 0)) - # handle stride != 1 or -1 - if any(abs(st) != 1 for st in strides): - strides = tuple(abs(s) for s in strides) + strides = tuple(map(abs, strides)) + # apply stride + if any(st != 1 for st in strides): # pad shape to multiple of stride if not all_int(x.shape): raise RuntimeError("symbolic shape not supported") x = x.pad(tuple((0, round_up(s, st) - s) for s, st in zip(x.shape, strides))) @@ -1180,7 +1192,7 @@ class Tensor(MathTrait): x = x.shrink(tuple(flatten(((0, s), (0, 1)) for s in x.shape[::2]))).reshape(x.shape[::2]) # dim injection from None by including None dim size (which is 1) and dim collapse by skipping int dim size - x = x.reshape(tuple(index['size'] for index in indices_parsed if not isinstance(index['index'], (int, UOp)))) + x = x.reshape(tuple(index['size'] for index in indices_parsed if not isinstance(index['index'], sint))) # tensor indexing if tops := [(d,i) for d,i in enumerate(i_ for i_ in indices_parsed if not isinstance(i_['index'], int)) if isinstance(i['index'], Tensor)]: @@ -1200,7 +1212,7 @@ class Tensor(MathTrait): # inject 1's for the extra dims added in create masks reshape_arg = x.shape[:dims[0]] + (1,) * len(big_shape) + x.shape[dims[0]:] # sum reduce the extra dims introduced in create masks - x = (x.reshape(reshape_arg) * mask).sum(sum_axis:=tuple(d + len(big_shape) for d in dims), dtype=x.dtype) + x = (mask.where(x.reshape(reshape_arg), 0)).sum(sum_axis:=tuple(d + len(big_shape) for d in dims), dtype=x.dtype) # special permute case if dims[0] != 0 and len(dims) != 1 and tuple(dims) != tuple(range(dims[0], dims[-1]+1)): @@ -1291,7 +1303,7 @@ class Tensor(MathTrait): assert all(s >= i for d,(s,i) in enumerate(zip(self.shape, index.shape)) if d != dim), "requires self.shape[d] >= index.shape[d] for all d != dim" index = index.to(self.device) x = self.shrink(tuple((0, i) if d != dim else None for d,i in enumerate(index.shape))).unsqueeze(-1).transpose(-1, dim) - return (x * index.unsqueeze(-1)._one_hot_along_dim(self.shape[dim])).sum(-1, dtype=self.dtype) + return (index.unsqueeze(-1)._one_hot_along_dim(self.shape[dim]).where(x, 0)).sum(-1, dtype=self.dtype) def cat(self:Tensor, *args:Tensor, dim:int=0) -> Tensor: """ @@ -2231,7 +2243,7 @@ class Tensor(MathTrait): """ def parse_formula(formula:str, *operands:Tensor): if "..." in (formula := formula.replace(" ", "")): - ell_chars, ell_longest = "".join(set(string.ascii_letters) - set(formula)), 0 + ell_chars, ell_longest = "".join(c for c in string.ascii_letters if c not in formula), 0 for i, inp in enumerate(filter(lambda x: "..." in x, inputs := formula.split("->")[0].split(","))): if (ell_count := max(operands[i].ndim, 1) - (len(inp) - len("..."))) > ell_longest: ell_longest = ell_count inputs[i] = inp.replace("...", ell_chars[-ell_count:]) @@ -2329,8 +2341,6 @@ class Tensor(MathTrait): NOTE: unlike PyTorch, this implementation is not limited to only 2d pooling and instead works for any number of dimensions. - See: https://paperswithcode.com/method/average-pooling - ```python exec="true" source="above" session="tensor" result="python" t = Tensor.arange(25).reshape(1, 1, 5, 5) print(t.avg_pool2d().numpy()) @@ -2377,8 +2387,6 @@ class Tensor(MathTrait): NOTE: unlike PyTorch, this implementation is not limited to only 2d pooling and instead works for any number of dimensions. - See: https://paperswithcode.com/method/max-pooling - ```python exec="true" source="above" session="tensor" result="python" t = Tensor.arange(25).reshape(1, 1, 5, 5) print(t.max_pool2d().numpy()) @@ -2429,7 +2437,7 @@ class Tensor(MathTrait): # https://arxiv.org/pdf/1603.07285 inverse of relationship 15 in section 5.1. output_size = tuple((i-1)*s - (pB+pA) + (d*(k-1)+1) for i,k,d,s,(pA,pB) in zip(spatial_shape,k_,d_,s_,p_)) else: output_size = output_size[-len(spatial_shape):] - ret = (indices.reshape(bs,c,1,-1)._one_hot_along_dim(prod(output_size), 2) * self.reshape(bs,c,1,-1)).sum(3) + ret = (indices.reshape(bs,c,1,-1)._one_hot_along_dim(prod(output_size), 2).where(self.reshape(bs,c,1,-1), 0)).sum(3) return ret.reshape(bs,c,*output_size) def conv2d(self, weight:Tensor, bias:Tensor|None=None, groups=1, stride=1, dilation=1, padding:int|tuple[int, ...]=0, @@ -2680,7 +2688,7 @@ class Tensor(MathTrait): print(t.triu(diagonal=-1).numpy()) ``` """ - return Tensor._tri(self.shape[-2], self.shape[-1], diagonal=diagonal, device=self.device, dtype=dtypes.bool).where(self, 0).cast(self.dtype) + return Tensor._tri(self.shape[-2], self.shape[-1], diagonal=diagonal, device=self.device, dtype=dtypes.bool).where(self, self.zeros_like()) def tril(self, diagonal:int=0) -> Tensor: """ @@ -2703,7 +2711,7 @@ class Tensor(MathTrait): print(t.tril(diagonal=-1).numpy()) ``` """ - return Tensor._tri(self.shape[-2], self.shape[-1], diagonal=diagonal+1, device=self.device, dtype=dtypes.bool).where(0, self).cast(self.dtype) + return Tensor._tri(self.shape[-2], self.shape[-1], diagonal=diagonal+1, device=self.device, dtype=dtypes.bool).where(self.zeros_like(), self) def interpolate(self, size:tuple[int, ...], mode:str="linear", align_corners:bool=False) -> Tensor: """ @@ -2846,12 +2854,11 @@ class Tensor(MathTrait): ``` """ x, dim = self, self._resolve_dim(dim) + if (orig_len:= x.shape[dim]) <= 1: return x, x.zeros_like(dtype=dtypes.default_int) # pad to power of 2 - orig_len = x.shape[dim] - n_stages = math.ceil(math.log2(orig_len)) - fill_value = dtypes.min(x.dtype) if descending else dtypes.max(x.dtype) + n_stages = (orig_len-1).bit_length() pads = tuple((0, 2**n_stages - orig_len) if i == dim else None for i in range(x.ndim)) - x = x.pad(pads, value=fill_value).unflatten(dim, (2,)*n_stages) + x = x.pad(pads, value=dtypes.min(x.dtype) if descending else dtypes.max(x.dtype)).unflatten(dim, (2,)*n_stages) # https://en.wikipedia.org/wiki/Bitonic_sorter#/media/File:BitonicSort1.svg for stage in range(1, n_stages+1): if stage != n_stages: @@ -2869,13 +2876,13 @@ class Tensor(MathTrait): # flip wires back to undo the crossover blue_box, flipped_green_box = x.split(1, crossover_dim) x = blue_box.cat(flipped_green_box.flip(flip_dims), dim=crossover_dim) - x = x.flatten(dim, dim+n_stages-1).shrink(tuple((0, orig_len) if i == dim else None for i in range(x.ndim))) + x = x.flatten(dim, dim+n_stages-1).shrink(tuple((0, s) for s in self.shape)) # compute indices for sorted values - idx = Tensor.arange(orig_len, requires_grad=False, device=self.device).reshape(tuple(orig_len if i == dim else 1 for i in range(x.ndim))) - idx = idx.expand(x.shape) - def compute_counts(t:Tensor): return ((idx.unsqueeze(dim) <= idx.unsqueeze(dim+1)) & (t.unsqueeze(dim) == t.unsqueeze(dim+1))).sum(dim+1) + mask = Tensor.ones(orig_len, orig_len, dtype=dtypes.bool, device=self.device).tril().reshape((None, None) + (1,)*(self.ndim-dim-1)) + def compute_counts(t:Tensor): return (mask & (t.unsqueeze(dim) == t.unsqueeze(dim+1))).sum(dim+1) count_orig, count_sorted = compute_counts(self), compute_counts(x) cond = (self.unsqueeze(dim+1) == x.unsqueeze(dim)) & (count_orig.unsqueeze(dim+1) == count_sorted.unsqueeze(dim)) + idx = Tensor.arange(orig_len, device=self.device).reshape(tuple(orig_len if i == dim else 1 for i in range(x.ndim))) idx = (cond * idx.unsqueeze(dim+1)).sum(dim) return x, idx @@ -2934,11 +2941,11 @@ class Tensor(MathTrait): """ return self*-1 if self.dtype != dtypes.bool else self.logical_not() - def contiguous(self) -> Tensor: + def contiguous(self, *args, **kwargs) -> Tensor: """ Returns a contiguous tensor. """ - return self._apply_uop(UOp.contiguous) + return self._apply_uop(UOp.contiguous, extra_args=args, **kwargs) def fuse(self) -> Tensor: """ @@ -2989,6 +2996,9 @@ class Tensor(MathTrait): print(Tensor([0., 1., 2., 3.]).exp().numpy()) ``` """ + # TODO: make it generic, and same thing to log and cos + if self.is_floating_point(): return self.cast(least_upper_dtype(self.dtype, dtypes.float32)).mul(1/math.log(2)).exp2().cast(self.dtype) + # TODO: behavior when DEFAULT_FLOAT is bfloat16 and input is int32? return self.mul(1/math.log(2)).exp2() def exp2(self) -> Tensor: @@ -3007,8 +3017,6 @@ class Tensor(MathTrait): """ Applies the Rectified Linear Unit (ReLU) function element-wise. - - Described: https://paperswithcode.com/method/relu - ```python exec="true" source="above" session="tensor" result="python" print(Tensor([-3., -2., -1., 0., 1., 2., 3.]).relu().numpy()) ``` @@ -3045,7 +3053,6 @@ class Tensor(MathTrait): Applies the Hardsigmoid function element-wise. NOTE: default `alpha` and `beta` values are taken from torch - - Described: https://paperswithcode.com/method/hard-sigmoid - See: https://pytorch.org/docs/stable/generated/torch.nn.functional.hardsigmoid.html ```python exec="true" source="above" session="tensor" result="python" @@ -3092,6 +3099,7 @@ class Tensor(MathTrait): print(Tensor([0., math.pi/2, math.pi, 3*math.pi/2, 2*math.pi]).cos().numpy()) ``` """ + if self.is_floating_point(): return ((math.pi/2)-self.cast(least_upper_dtype(self.dtype, dtypes.float32))).sin().cast(self.dtype) return ((math.pi/2)-self).sin() def tan(self) -> Tensor: @@ -3147,7 +3155,7 @@ class Tensor(MathTrait): print(Tensor([-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5]).trunc().numpy()) ``` """ - return self.cast(dtypes.int32).cast(self.dtype) + return self._apply_uop(UOp.trunc) def ceil(self: Tensor) -> Tensor: """ @@ -3177,7 +3185,7 @@ class Tensor(MathTrait): print(Tensor([-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5]).round().numpy()) ``` """ - return ((self > 0) == ((b := self.cast(dtypes.int32) / 2.0).cast(dtypes.int32) == b)).where((self - 0.5).ceil(), (self + 0.5).floor()) + return ((self > 0) == ((b := self.trunc() / 2.0).trunc() == b)).where((self - 0.5).ceil(), (self + 0.5).floor()) def isinf(self:Tensor, detect_positive:bool=True, detect_negative:bool=True) -> Tensor: """ @@ -3288,7 +3296,6 @@ class Tensor(MathTrait): """ Applies the Exponential Linear Unit (ELU) function element-wise. - - Described: https://paperswithcode.com/method/elu - Paper: https://arxiv.org/abs/1511.07289v5 ```python exec="true" source="above" session="tensor" result="python" @@ -3301,7 +3308,6 @@ class Tensor(MathTrait): """ Applies the Continuously differentiable Exponential Linear Unit (CELU) function element-wise. - - Described: https://paperswithcode.com/method/celu - Paper: https://arxiv.org/abs/1704.07483 ```python exec="true" source="above" session="tensor" result="python" @@ -3314,7 +3320,6 @@ class Tensor(MathTrait): """ Applies the Scaled Exponential Linear Unit (SELU) function element-wise. - - Described: https://paperswithcode.com/method/selu - Paper: https://arxiv.org/abs/1706.02515v5 ```python exec="true" source="above" session="tensor" result="python" @@ -3339,7 +3344,6 @@ class Tensor(MathTrait): """ Applies the Sigmoid Linear Unit (SiLU) function element-wise. - - Described: https://paperswithcode.com/method/silu - Paper: https://arxiv.org/abs/1606.08415 ```python exec="true" source="above" session="tensor" result="python" @@ -3352,7 +3356,6 @@ class Tensor(MathTrait): """ Applies the ReLU6 function element-wise. - - Described: https://paperswithcode.com/method/relu6 - Paper: https://arxiv.org/abs/1704.04861v1 ```python exec="true" source="above" session="tensor" result="python" @@ -3365,7 +3368,6 @@ class Tensor(MathTrait): """ Applies the Hardswish function element-wise. - - Described: https://paperswithcode.com/method/hard-swish - Paper: https://arxiv.org/abs/1905.02244v5 ```python exec="true" source="above" session="tensor" result="python" @@ -3450,8 +3452,6 @@ class Tensor(MathTrait): """ Applies the Hardtanh function element-wise. - - Described: https://paperswithcode.com/method/hardtanh-activation - ```python exec="true" source="above" session="tensor" result="python" print(Tensor([-1.5, -1.0, -0.5, 0., 0.5, 1.0, 1.5]).hardtanh().numpy()) ``` @@ -3476,7 +3476,6 @@ class Tensor(MathTrait): """ Applies the Gaussian Error Linear Unit (GELU) function element-wise. - - Described: https://paperswithcode.com/method/gelu - Paper: https://arxiv.org/abs/1606.08415v5 ```python exec="true" source="above" session="tensor" result="python" @@ -3489,8 +3488,6 @@ class Tensor(MathTrait): """ Applies the Sigmoid GELU approximation element-wise. - - Described: https://paperswithcode.com/method/gelu - ```python exec="true" source="above" session="tensor" result="python" print(Tensor([-3., -2., -1., 0., 1., 2., 3.]).quick_gelu().numpy()) ``` @@ -3501,8 +3498,6 @@ class Tensor(MathTrait): """ Applies the Leaky ReLU function element-wise. - - Described: https://paperswithcode.com/method/leaky-relu - ```python exec="true" source="above" session="tensor" result="python" print(Tensor([-3., -2., -1., 0., 1., 2., 3.]).leaky_relu().numpy()) ``` @@ -3516,7 +3511,6 @@ class Tensor(MathTrait): """ Applies the Mish function element-wise. - - Described: https://paperswithcode.com/method/mish - Paper: https://arxiv.org/abs/1908.08681v3 ```python exec="true" source="above" session="tensor" result="python" @@ -3525,24 +3519,20 @@ class Tensor(MathTrait): """ return self * self.softplus().tanh() - def softplus(self, beta=1) -> Tensor: + def softplus(self, beta=1.0) -> Tensor: """ Applies the Softplus function element-wise. - - Described: https://paperswithcode.com/method/softplus - ```python exec="true" source="above" session="tensor" result="python" print(Tensor([-3., -2., -1., 0., 1., 2., 3.]).softplus().numpy()) ``` """ - return (1/beta) * (1 + (self*beta).exp()).log() + return (1/beta) * (self*beta).logaddexp(0.0) def softsign(self) -> Tensor: """ Applies the Softsign function element-wise. - - Described: https://paperswithcode.com/method/softsign - ```python exec="true" source="above" session="tensor" result="python" print(Tensor([-3., -2., -1., 0., 1., 2., 3.]).softsign().numpy()) ``` @@ -3558,7 +3548,8 @@ class Tensor(MathTrait): # for each dimension, check either dim is 1, or it does not change if not all(resolve(s == ns) or resolve(s == 1) for s,ns in zip(shape, new_shape)): raise ValueError(f"cannot broadcast {self.shape} to {new_shape=}") - return self.reshape(shape)._apply_uop(UOp.expand, arg=new_shape) + # NOTE: this cast is no-op in forward and uses sum_acc_dtype in the backward sum + return self.reshape(shape).cast(sum_acc_dtype(self.dtype))._apply_uop(UOp.expand, arg=new_shape).cast(self.dtype) def _broadcasted(self, y:Tensor|ConstType|UOp, reverse:bool=False, match_dtype:bool=True) -> tuple[Tensor, Tensor]: x: Tensor = self @@ -3702,11 +3693,11 @@ class Tensor(MathTrait): """ base, exponent = self._broadcasted(x, reverse=reverse) # TODO: int pow - if not base.is_floating_point(): raise RuntimeError("base needs to be float") + if not base.is_floating_point() and not (isinstance(x, int) and x >= 0): raise RuntimeError("base needs to be float") ret = base._apply_uop(UOp.pow, exponent) # NOTE: pow(int, float) -> int - return ret.round().cast(self.dtype) if not reverse and not dtypes.is_float(self.dtype) else ret + return ret.round().cast(self.dtype) if not reverse and not dtypes.is_float(self.dtype) and dtypes.is_float(exponent.dtype) else ret def maximum(self, x:Tensor|ConstType) -> Tensor: """ @@ -3768,6 +3759,13 @@ class Tensor(MathTrait): # TODO: remove other*0? return (other < 0).where(-self.abs(), self.abs()) + other*0 + def logaddexp(self, other) -> Tensor: + """ + Calculates (self.exp()+other.exp()).log(), elementwise. + """ + m = self.maximum(other) + return ((self-m).exp() + (self._broadcasted(other)[1]-m).exp()).log() + m + # ***** op wrappers ***** def __invert__(self) -> Tensor: return self.bitwise_not() @@ -3835,7 +3833,6 @@ class Tensor(MathTrait): """ Applies Layer Normalization over a mini-batch of inputs. - - Described: https://paperswithcode.com/method/layer-normalization - Paper: https://arxiv.org/abs/1607.06450v1 ```python exec="true" source="above" session="tensor" result="python" @@ -3854,7 +3851,6 @@ class Tensor(MathTrait): """ Applies Batch Normalization over a mini-batch of inputs. - - Described: https://paperswithcode.com/method/batch-normalization - Paper: https://arxiv.org/abs/1502.03167 ```python exec="true" source="above" session="tensor" result="python" @@ -3879,7 +3875,6 @@ class Tensor(MathTrait): NOTE: dropout is only applied when `Tensor.training` is `True`. - - Described: https://paperswithcode.com/method/dropout - Paper: https://jmlr.org/papers/v15/srivastava14a.html ```python exec="true" source="above" session="tensor" result="python" @@ -3921,7 +3916,6 @@ class Tensor(MathTrait): Computes scaled dot-product attention. `self` is the query tensor, `key` is the key tensor, and `value` is the value tensor. - - Described: https://paperswithcode.com/method/scaled - Paper: https://arxiv.org/abs/1706.03762v7 ```python exec="true" source="above" session="tensor" result="python" @@ -3937,7 +3931,11 @@ class Tensor(MathTrait): if enable_gqa: key = key.repeat_interleave(self.shape[-3] // key.shape[-3], dim=-3) value = value.repeat_interleave(self.shape[-3] // value.shape[-3], dim=-3) - qk = self.matmul(key.transpose(-2,-1), dtype=least_upper_dtype(self.dtype, key.dtype, dtypes.float32)) / math.sqrt(self.shape[-1]) + + if FUSE_ATTENTION: q, key, value = self.contiguous(), key.contiguous(), value.contiguous() + else: q = self + + qk = q.matmul(key.transpose(-2,-1), dtype=least_upper_dtype(q.dtype, key.dtype, dtypes.float32)) / math.sqrt(q.shape[-1]) # handle attention mask if is_causal: if attn_mask is not None: raise RuntimeError("cannot set attn_mask when is_causal=True") @@ -3945,7 +3943,8 @@ class Tensor(MathTrait): if attn_mask is not None: if attn_mask.dtype == dtypes.bool: attn_mask = attn_mask.where(0, -float("inf")) qk = qk + attn_mask - return qk.cast(self.dtype).softmax(-1).dropout(dropout_p) @ value + attn = qk.cast(self.dtype).softmax(-1).dropout(dropout_p) @ value + return attn.fuse() if FUSE_ATTENTION else attn def _do_reduction(self, reduction:ReductionStr="mean") -> Tensor: if reduction not in get_args(ReductionStr): raise ValueError(f"{reduction=} must be one of {get_args(ReductionStr)}") @@ -4057,6 +4056,21 @@ class Tensor(MathTrait): nll = -self.gather(1, Y.unsqueeze(1)).squeeze(1) * masked_weight return nll.sum() / masked_weight.sum() if reduction == "mean" else nll._do_reduction(reduction) + def newton_schulz(self, steps:int, params:tuple[int, ...], eps:float=1.0e-7) -> Tensor: + """ + Performs the newton-schulz algorithm for odd polynomials. The degree of the odd polynomial depends on the number of params. + + ```python exec="true" source="above" session="tensor" result="python" + t = Tensor.randn(4, 4) + print(t.newton_schulz(steps=5, params=(2,-1.5,0.5)).numpy()) + ``` + """ + assert self.ndim > 1, "NS only works for two or more dims" + G = self / (self.square().sum(axis=(-2, -1), keepdim=True).sqrt() + eps) + G = G.transpose(-2, -1) if self.shape[-2] > self.shape[-1] else G + for _ in range(steps): G = sum(p * functools.reduce(lambda x, y: (y @ y.transpose(-2, -1)) @ x, [G]*i, G) for i,p in enumerate(params)) + return G.transpose(-2, -1) if self.shape[-2] > self.shape[-1] else G + def qr(self) -> tuple[Tensor, Tensor]: assert self.ndim > 1, f"expected two or more dimensions, got {self.ndim}" R = self.clone() @@ -4114,8 +4128,8 @@ class Tensor(MathTrait): #extract singular values and sort. construct U from Q S, indices = U.square().sum(-2).sqrt().sort(dim = -1, descending=True) new_indices = Tensor.arange(num).reshape((1,) * (self.ndim - 1) + (num,)).expand(b_shape + 2 * (num,)).contiguous() - new_indices[..., :num] = indices.reshape(b_shape + (1,) + (U.shape[0],)).expand(b_shape + 2 * (num,)) - U,V = U.gather(-1, new_indices[...,0:num,0:num]) / S.unsqueeze(-2), V.gather(-1, new_indices[..., 0:num, 0:num]) + new_indices[..., :num] = indices.reshape(b_shape + (1,) + (num,)).expand(b_shape + 2 * (num,)) + U,V = U.gather(-1, new_indices[...,0:num,0:num]) / S.unsqueeze(-2), V.gather(-1, new_indices[..., 0:num, 0:num]).realize() padded_u = Tensor.eye(q_num, dtype = U.dtype).reshape((1,) * (self.ndim - 2) + 2 * (q_num,)).expand(b_shape + 2 * (q_num,)).contiguous() padded_u[..., 0:num, 0:num] = U @@ -4313,6 +4327,11 @@ class Tensor(MathTrait): """ return self.cast(dtypes.bool) + def bfloat16(self) -> Tensor: return self.cast(dtypes.bfloat16) + def double(self) -> Tensor: return self.cast(dtypes.double) + def long(self) -> Tensor: return self.cast(dtypes.long) + def short(self) -> Tensor: return self.cast(dtypes.short) + # *** image Tensor function replacements *** def image_dot(self, w:Tensor, dtype:DTypeLike|None=None) -> Tensor: @@ -4393,6 +4412,16 @@ class Tensor(MathTrait): P = ParamSpec("P") T = TypeVar("T") + +# this tracks the tensor.py METADATA, contextvars.ContextVar was switched to this due to thread safety issues +class _ContextVar(Generic[T]): + def __init__(self, default:T): self.state:T = default + def get(self) -> T: return self.state + def set(self, x:T) -> T: + ret, self.state = self.state, x + return ret +_METADATA: _ContextVar[Metadata|None] = _ContextVar(default=None) + def _metadata_wrapper(fn: Callable[P, T]) -> Callable[P, T]: def _wrapper(*args: P.args, **kwargs: P.kwargs) -> T: if _METADATA.get() is not None: return fn(*args, **kwargs) @@ -4421,7 +4450,7 @@ def _metadata_wrapper(fn: Callable[P, T]) -> Callable[P, T]: token = _METADATA.set(Metadata(name=fn.__name__, caller=caller)) ret = fn(*args, **kwargs) - _METADATA.reset(token) + _METADATA.set(token) return ret return _wrapper diff --git a/tinygrad_repo/tinygrad/uop/__init__.py b/tinygrad_repo/tinygrad/uop/__init__.py index 2e6304fa1..2a453a7f6 100644 --- a/tinygrad_repo/tinygrad/uop/__init__.py +++ b/tinygrad_repo/tinygrad/uop/__init__.py @@ -9,11 +9,17 @@ class FastEnum(IntEnum): # the order of these Ops controls the order of the toposort class Ops(FastEnum): # uops that aren't rendered - NOOP = auto(); SINK = auto(); UNIQUE = auto(); DEVICE = auto(); KERNEL = auto(); PRECAST = auto() # noqa: E702 + NOOP = auto(); SINK = auto(); UNIQUE = auto(); DEVICE = auto(); KERNEL = auto(); PRECAST = auto(); REWRITE_ERROR = auto() # noqa: E702 + + # track children + CHILD = auto(); CHILDREN = auto() # noqa: E702 # buffer ops COPY = auto(); BUFFER = auto(); BUFFER_VIEW = auto(); MSELECT = auto(); MSTACK = auto() # noqa: E702 + # create buffer + BUFFERIZE = auto() + # ops that adjust the behavior of the scheduler CONTIGUOUS = auto(); CONTIGUOUS_BACKWARD = auto(); DETACH = auto(); FUSE = auto() # noqa: E702 @@ -46,7 +52,7 @@ class Ops(FastEnum): UNROLL = auto(); CONTRACT = auto(); GEP = auto(); VECTORIZE = auto(); CAT = auto(); PTRCAT = auto() # noqa: E702 # UnaryOps - CAST = auto(); BITCAST = auto(); EXP2 = auto(); LOG2 = auto(); SIN = auto(); SQRT = auto(); RECIP = auto(); NEG = auto() # noqa: E702 + CAST = auto(); BITCAST = auto(); EXP2 = auto(); LOG2 = auto(); SIN = auto(); SQRT = auto(); RECIP = auto(); NEG = auto(); TRUNC = auto() # noqa: E702 # load/store before math LOAD = auto(); STORE = auto() # noqa: E702 @@ -77,12 +83,15 @@ class Ops(FastEnum): CUSTOM = auto(); CUSTOMI = auto() # noqa: E702 class GroupOp: - Unary = {Ops.EXP2, Ops.LOG2, Ops.SIN, Ops.SQRT, Ops.RECIP, Ops.NEG} + Unary = {Ops.EXP2, Ops.LOG2, Ops.SIN, Ops.SQRT, Ops.RECIP, Ops.NEG, Ops.TRUNC} Binary = {Ops.ADD, Ops.MUL, Ops.IDIV, Ops.MAX, Ops.MOD, Ops.CMPLT, Ops.CMPNE, Ops.CMPEQ, Ops.XOR, Ops.SHL, Ops.SHR, Ops.OR, Ops.AND, Ops.THREEFRY, Ops.SUB, Ops.FDIV, Ops.POW} Ternary = {Ops.WHERE, Ops.MULACC} ALU = set.union(Unary, Binary, Ternary) + # TODO: is BITCAST always Elementwise if it's shape changing? + Elementwise = set.union(ALU, {Ops.CAST, Ops.BITCAST}) + Defines = {Ops.DEFINE_GLOBAL, Ops.DEFINE_LOCAL, Ops.DEFINE_REG} Irreducible = {Ops.CONST, Ops.DEFINE_VAR, Ops.SPECIAL, Ops.RANGE} @@ -100,6 +109,9 @@ class GroupOp: # BinaryOps that satisfy f(x,x)=x see https://en.wikipedia.org/wiki/Idempotence Idempotent = {Ops.OR, Ops.AND, Ops.MAX} + # These can change the dtype to bool + Comparison = {Ops.CMPLT, Ops.CMPNE, Ops.CMPEQ} + # do not preserve f(0) = 0 UnsafePad = {Ops.RECIP, Ops.LOG2, Ops.EXP2, Ops.IDIV, Ops.POW} diff --git a/tinygrad_repo/tinygrad/uop/transcendental.py b/tinygrad_repo/tinygrad/uop/decompositions.py similarity index 59% rename from tinygrad_repo/tinygrad/uop/transcendental.py rename to tinygrad_repo/tinygrad/uop/decompositions.py index 3fff6e09b..57ce30342 100644 --- a/tinygrad_repo/tinygrad/uop/transcendental.py +++ b/tinygrad_repo/tinygrad/uop/decompositions.py @@ -1,9 +1,11 @@ -import math -from tinygrad.dtype import dtypes, DType -from tinygrad.helpers import polyN -from tinygrad.uop.ops import UOp +from typing import Callable +import math, functools +from tinygrad.dtype import dtypes, DType, promo_lattice +from tinygrad.device import is_dtype_supported +from tinygrad.helpers import polyN, DISABLE_FAST_IDIV +from tinygrad.uop.ops import UOp, UPat, Ops, PatternMatcher -TRANSCENDENTAL_SUPPORTED_DTYPES = (dtypes.float16, dtypes.float32, dtypes.float64) +TRANSCENDENTAL_DTYPES = (dtypes.float16, dtypes.float32, dtypes.float64) def _lazy_map_numbers(x:UOp, inf:UOp, _inf:UOp, nan:UOp, ratio:UOp): """replace inf -> inf, -inf -> _inf, nan -> nan, otherwise -> ratio""" @@ -30,14 +32,14 @@ def pow2if(q:UOp, float_dtype:DType): def ilogb2k(d:UOp) -> UOp: """calculate the integer part of log2(d), where d is normalized fp value in the range of [0, +inf).""" - assert d.dtype.scalar() in TRANSCENDENTAL_SUPPORTED_DTYPES + assert d.dtype.scalar() in TRANSCENDENTAL_DTYPES dint = d.bitcast({dtypes.float64: dtypes.int64, dtypes.float32: dtypes.int32, dtypes.float16: dtypes.int16}[d.dtype.scalar()].vec(d.dtype.vcount)) # -1 <= ilog2bk(d) <= 128 return (shr(dint, mantissa_bits(d.dtype)) & exponent_mask(d.dtype)) - exponent_bias(d.dtype) def ldexp3k(d:UOp, e:UOp) -> UOp: """d*2^e. e is a number obtained by casting an integer in the range [-127, 127] to a float. d is any float number.""" - assert d.dtype.scalar() in TRANSCENDENTAL_SUPPORTED_DTYPES and e.dtype.scalar() in TRANSCENDENTAL_SUPPORTED_DTYPES + assert d.dtype.scalar() in TRANSCENDENTAL_DTYPES and e.dtype.scalar() in TRANSCENDENTAL_DTYPES dtype = {dtypes.float64: dtypes.int64, dtypes.float32: dtypes.int32, dtypes.float16: dtypes.int16}[d.dtype.scalar()].vec(d.dtype.count) m1 = d.bitcast(dtype) m2 = shl(e.cast(dtype), mantissa_bits(d.dtype)) @@ -45,12 +47,12 @@ def ldexp3k(d:UOp, e:UOp) -> UOp: def ldexp2k(d:UOp, e:UOp) -> UOp: """d*2^e. much faster than ldexp3k but risky. d > 0 and d is not denormal.""" - assert d.dtype.scalar() in TRANSCENDENTAL_SUPPORTED_DTYPES and e.dtype.scalar() in (dtypes.int16, dtypes.int32, dtypes.int64) + assert d.dtype.scalar() in TRANSCENDENTAL_DTYPES and e.dtype.scalar() in (dtypes.int16, dtypes.int32, dtypes.int64) return (d * pow2if(shr(e, 1), d.dtype)) * pow2if(e - shr(e, 1), d.dtype) def frexp(v:UOp) -> tuple[UOp, UOp]: """frexp(v) -> (mantissa, exponent) assuming v != 0""" - assert v.dtype.scalar() in TRANSCENDENTAL_SUPPORTED_DTYPES + assert v.dtype.scalar() in TRANSCENDENTAL_DTYPES # m1 = masks for mantissa, m2 = masks to normalize the mantissa. m1 = {dtypes.float64: 0x000FFFFFFFFFFFFF, dtypes.float32: 0x807FFFFF, dtypes.float16: 0x83FF}[v.dtype.scalar()] m2 = {dtypes.float64: 0x3FE0000000000000, dtypes.float32: 0x3F000000, dtypes.float16: 0x3800}[v.dtype.scalar()] @@ -70,7 +72,7 @@ def payne_hanek_reduction(d:UOp) -> tuple[UOp, UOp]: - `r`[d.dtype] is the reminder value corresponding to `round_to_nearest(x % pi/2)`. - `q`[int32] is an integer, and q % 4 is corresponding to the quadrant of the original angle `d`. """ - assert d.dtype.scalar() in TRANSCENDENTAL_SUPPORTED_DTYPES + assert d.dtype.scalar() in TRANSCENDENTAL_DTYPES # https://stackoverflow.com/questions/30463616/payne-hanek-algorithm-implementation-in-c/30465751#30465751 # 190 bits of 2/pi for Payne-Hanek style argument reduction two_over_pi_f = [0x00000000, 0x28be60db, 0x9391054a, 0x7f09d5f4, 0x7d4d3770, 0x36d8a566, 0x4f10e410] @@ -78,10 +80,10 @@ def payne_hanek_reduction(d:UOp) -> tuple[UOp, UOp]: intermediate_dtype = dtypes.float32.vec(d.dtype.count) if d.dtype.base.scalar() == dtypes.float16 else d.dtype f, e = frexp(d) - ia = (f.cast(intermediate_dtype) * 4.294967296e9).cast_vec(dtypes.uint64) + ia = (f.cast(intermediate_dtype) * 4.294967296e9).cast(dtypes.uint64) # extract 96 relevant bits of 2/pi based on magnitude of argument - i = shr(e.cast_vec(dtypes.uint64), 5) - e = e.cast_vec(dtypes.int32) & 31 + i = shr(e.cast(dtypes.uint64), 5) + e = e.cast(dtypes.int32) & 31 offset = 32 - e def _take(an:UOp, offset:int, count:int=0) -> UOp: @@ -89,8 +91,8 @@ def payne_hanek_reduction(d:UOp) -> tuple[UOp, UOp]: if count+offset < len(two_over_pi_f) - 1: an = i.ne(count).where(_take(an, offset, count=count+1), an.const_like(two_over_pi_f[count+offset])) return an - def _shl_lazy(x, y): return (x.cast_vec(dtypes.uint64) * pow2if(y, d.dtype).cast_vec(dtypes.uint64)).cast_vec(dtypes.uint32) - def _shr_lazy(x, y): return (x.cast_vec(dtypes.uint64) // pow2if(y, d.dtype).cast_vec(dtypes.uint64)).cast_vec(dtypes.uint32) + def _shl_lazy(x:UOp, y:UOp): return (x.cast(dtypes.uint64) * pow2if(y, d.dtype).cast(dtypes.uint64)).cast(dtypes.uint32) + def _shr_lazy(x:UOp, y:UOp): return (x.cast(dtypes.uint64) // pow2if(y, d.dtype).cast(dtypes.uint64)).cast(dtypes.uint32) a = [_take(UOp.const(dtypes.uint32.vec(d.dtype.count), 0), i) for i in range(4)] # (two_over_pi_f[Int(i) + n] << e) | (two_over_pi_f[Int(i) + n+1] >> (nbits - e)) @@ -99,12 +101,12 @@ def payne_hanek_reduction(d:UOp) -> tuple[UOp, UOp]: mi = _shl_lazy(a[1], e) | _shr_lazy(a[2], offset) lo = _shl_lazy(a[2], e) | _shr_lazy(a[3], offset) - def _hp_mul(x:UOp, y:UOp) -> UOp: return x.cast_vec(dtypes.uint64) * y.cast_vec(dtypes.uint64) + def _hp_mul(x:UOp, y:UOp) -> UOp: return x.cast(dtypes.uint64) * y.cast(dtypes.uint64) # compute x * 2/pi p = shl(_hp_mul(ia, hi), 32) + _hp_mul(ia, mi) + shr(_hp_mul(ia, lo), 32) # round quotient to nearest - q = shr(p, 62).cast_vec(dtypes.int32) + q = shr(p, 62).cast(dtypes.int32) p = p & 0x3fffffffffffffff r = (p.cast(intermediate_dtype) * (3.4061215800865545e-19)).cast(d.dtype) @@ -131,7 +133,7 @@ def cody_waite_reduction(d:UOp) -> tuple[UOp, UOp]: d = (qdh + q) * -PI_D + d elif x.dtype.scalar() == dtypes.float16: # [FIXME] when reducing `d`, FP16 needs FP32 precision to achieve 1.0 ULP precision. - d = _reduce_d(x.cast_vec(dtypes.float32), q.cast_vec(dtypes.float32)).cast_vec(dtypes.float16) + d = _reduce_d(x.cast(dtypes.float32), q.cast(dtypes.float32)).cast(dtypes.float16) else: # https://github.com/shibatch/sleef/blob/4e08851f59fc2b545f9c393c6a23dfd311a26308/src/libm/sleefsp.c#L464-L503 d = q * -3.1414794921875 + x @@ -141,9 +143,9 @@ def cody_waite_reduction(d:UOp) -> tuple[UOp, UOp]: return d m_1_pi = 0.318309886183790671537767526745028724 - qdh = (d * (m_1_pi / 2.0**24)).cast_vec(dtypes.int64).cast(d.dtype) * (2.0**24) + qdh = (d * (m_1_pi / 2.0**24)).cast(dtypes.int64).cast(d.dtype) * (2.0**24) quadrant = rintk(d * m_1_pi -qdh) if d.dtype.base.scalar() == dtypes.float64 else rintk(d * m_1_pi) - return _reduce_d(d, quadrant.cast(d.dtype)), quadrant.cast_vec(dtypes.int32) + return _reduce_d(d, quadrant.cast(d.dtype)), quadrant.cast(dtypes.int32) # *** approximate sine on small angle. *** def trig_poly(d:UOp, coeff32, coeff64): return d * (polyN(d*d, coeff64) if d.dtype.scalar() == dtypes.float64 else polyN(d*d, coeff32)) @@ -172,7 +174,7 @@ def xsin(d:UOp, fast:bool=False, switch_over:float=30.0) -> UOp: - fast=True assumes x <= switch_over. - switch_over is the threshold for switching to payne_hanek_reduction. """ - assert d.dtype.scalar() in TRANSCENDENTAL_SUPPORTED_DTYPES + assert d.dtype.scalar() in TRANSCENDENTAL_DTYPES # mask +-inf/nan as zero x = _lazy_map_numbers(d, d.const_like(0.0), d.const_like(0.0), d.const_like(0.0), d) # x_sign = sign(x) @@ -194,7 +196,7 @@ def xexp2(d:UOp) -> UOp: Implements a 1.0 ULP approximation for Ops.EXP2 - Paper: https://arxiv.org/pdf/2001.09258 """ - assert d.dtype.scalar() in TRANSCENDENTAL_SUPPORTED_DTYPES + assert d.dtype.scalar() in TRANSCENDENTAL_DTYPES # mask +=inf/nan as zero. x = _lazy_map_numbers(d, d.const_like(0.0), d.const_like(0.0), d.const_like(0.0), d) q = rintk(x) @@ -220,9 +222,9 @@ def xlog2(d:UOp) -> UOp: Implements a 1.0 ULP approximation for Ops.LOG2 Paper: https://arxiv.org/pdf/2001.09258 5.5 """ - assert d.dtype.scalar() in TRANSCENDENTAL_SUPPORTED_DTYPES + assert d.dtype.scalar() in TRANSCENDENTAL_DTYPES # TODO: float16 denormal need float32 to achieve precision - if d.dtype.scalar() == dtypes.float16: return xlog2(d.cast_vec(dtypes.float32)).cast_vec(dtypes.float16) + if d.dtype.scalar() == dtypes.float16: return xlog2(d.cast(dtypes.float32)).cast(dtypes.float16) FLT_MIN = d.const_like(1e-6 if d.dtype.scalar() == dtypes.float16 else 1e-4) is_denormal = d UOp: # start with b ** e = exp2(e * log2(b)) ret = (base < 0).where(-base, base).log2().mul(exponent).exp2() # negative base adjustment: nan for non-integer exponent and -1 for odd exponent - non_int = exponent != exponent.cast_vec(dtypes.int32).cast(exponent.dtype) + non_int = exponent != exponent.cast(dtypes.int32).cast(exponent.dtype) adj = non_int.where(ret.const_like(math.nan), - (exponent < 0).where(-exponent, exponent).cast_vec(dtypes.int32).mod(2).cast_vec(dtypes.bool).where(ret.const_like(-1), ret.const_like(1))) + (exponent < 0).where(-exponent, exponent).cast(dtypes.int32).mod(2).cast(dtypes.bool).where(ret.const_like(-1), ret.const_like(1))) # fix 0 ** 0 = 1 return (base.eq(0) & exponent.eq(0)).where(ret.const_like(1), ret * (base < 0).where(adj, ret.const_like(1))) + +# *** integer division *** + +@functools.lru_cache(None) +def magicgu(vmax:int, d:int) -> tuple[int,int]: + # calculate m,s such that x//d == (x*m) >> s for all 0 <= x <= vmax, d>0; adapted from Hacker's Delight, Chapter 10 + nc = (vmax+1)//(d) * d - 1 + nbits = vmax.bit_length() + for s in range(0, 2*nbits + 1): + if 2**s > nc*(d - 1 - (2**s - 1) % d): + m = (2**s + d - 1 - (2**s - 1) % d)//d + return m, s + assert False + +def fast_idiv(device: str, x: UOp, d: int, dont_cast=False) -> UOp|None: + # If d is a power of two this is not valid for signed ints! + is_unsigned = True if x.vmin>=0 or x.dtype in dtypes.uints else False + assert d>0, "Sign should have been taken out of divisor" + vmin,vmax = max(x.vmin, x.dtype.min), min(x.vmax, x.dtype.max) + m,s = magicgu(max(vmax, abs(vmin)), d) + if m*vmin >= dtypes.min(x.dtype) and m*vmax <= dtypes.max(x.dtype): + return ((x*m) >> s) if is_unsigned else ((x*m) >> s) + (x<0).where(x.ufix(1), 0) + # before we try casting to a larger dtype (slow), we see if there are powers of two in d we can shift to make x smaller + if (largest_factor_of_two_in_d := (d & -d)) > 1: + if (ret:=fast_idiv(device, x//largest_factor_of_two_in_d, d//largest_factor_of_two_in_d, dont_cast=True)) is not None: return ret + if dont_cast: return None + # promo_lattice needs to return an unsigned type if the type is unsigned + if dtypes.is_int(next_dtype := promo_lattice[x.dtype][-1]) and is_dtype_supported(next_dtype, None if device=='' else device): + if m*vmin >= dtypes.min(next_dtype) and m*vmax <= dtypes.max(next_dtype): + return ((x.cast(next_dtype)*m) >> s).cast(x.dtype) if is_unsigned else ((x.cast(next_dtype)*m) >> s).cast(x.dtype) + (x<0).where(x.ufix(1), 0) + return None + +# ***** threefry ***** + +def threefry2x32(x: UOp, key: UOp): + # split x and key from uint64 to two uint32 + x0, x1 = (x & 0xffffffff).cast(dtypes.uint32), ((x // 2**32) & 0xffffffff).cast(dtypes.uint32) + key0, key1 = (key & 0xffffffff).cast(dtypes.uint32), ((key // 2**32) & 0xffffffff).cast(dtypes.uint32) + + rotations = [[13, 15, 26, 6], [17, 29, 16, 24]] + ks = [key1, key0 ^ key1 ^ 0x1BD11BDA, key0] + xr:list[UOp] = [x0 + ks[-1], x1 + ks[0]] + for i in range(5): + for r in rotations[i % 2]: xr[0], xr[1] = (x0 := xr[0] + xr[1]), x0 ^ ((xr[1] * 2**r) + (xr[1] // 2**(32 - r))) + xr = [(xr[0] + ks[i % 3]), (xr[1] + ks[(i + 1) % 3] + i + 1)] + + return xr[1].cast(dtypes.uint64) * 2**32 | xr[0].cast(dtypes.uint64) + +# ***** decomposition patterns ***** + +powers_of_two = {2**i:i for i in range(64)} +@functools.cache +def get_late_rewrite_patterns(ops:tuple[Ops, ...], force_transcendental=False): + pat: list[tuple[UPat, Callable]] = [] + for op,f in ((Ops.EXP2, xexp2), (Ops.LOG2, xlog2), (Ops.SIN, xsin)): + if op not in ops or force_transcendental: + pat += [(UPat(op, dtype=TRANSCENDENTAL_DTYPES, src=(UPat.var("d"),)), f), + (UPat(op, dtype=tuple(dt for dt in dtypes.floats if dt not in TRANSCENDENTAL_DTYPES), src=(UPat.var("d"),), name="x"), + lambda x,d: d.cast(dtypes.float32).alu(x.op).cast(x.dtype))] + # no real hardware supports THREEFRY, but NullRenderer does + if Ops.THREEFRY not in ops: pat.append((UPat(Ops.THREEFRY, dtype=dtypes.uint64, src=(UPat.var("x"), UPat.var("key"))), threefry2x32)) + # MAX can be rewritten as CMPLT + WHERE (max function is annoying on many cstyle backends) + if Ops.MAX not in ops and Ops.CMPLT in ops: pat.append((UPat(Ops.MAX, name="m"), lambda m: (m.src[0] < m.src[1]).where(m.src[1], m.src[0]))) + # rewrite SQRT to xpow 0.5 + if Ops.SQRT not in ops: pat.append((UPat(Ops.SQRT, src=UPat.var("d")), lambda d: xpow(d, d.const_like(0.5)))) + # rewrite MOD to AND (which should always be supported, but not for generic in tests): x % (2**y) -> x & (2**y-1) + if Ops.AND in ops: pat += [(UPat.var("x", dtypes.ints)%UPat.cvar("c"), lambda x,c: x & (c.arg-1) if c.arg in powers_of_two else None)] + if Ops.OR in ops: pat += [(UPat.var("x", dtypes.bool).logical_not()&UPat.var("y", dtypes.bool).logical_not(), + lambda x,y: (x | y).logical_not())] + # rewrite MUL/IDIV to SHL+SHR: x*(2**y) -> shl(x,y) and x//(2**y) -> shr(x,y) + if Ops.SHL in ops: pat += [(UPat.var("x", dtypes.ints)*UPat.cvar("c"), lambda c,x: x << v if (v:=powers_of_two.get(c.arg, 0)) else None)] + if Ops.SHR in ops: + # no reason to check x<0 for uints + pat += [(UPat.var("x", dtypes.uints)//UPat.cvar("c"), lambda x,c: x >> v if (v:=powers_of_two.get(c.arg, 0)) else None)] + pat += [(UPat.var("x", dtypes.ints)//UPat.cvar("c"), lambda x,c: (x+(l.const_like(l.vmin) if (l:=(x<0)).vmin==l.vmax else l).where( + c-1, 0)) >> v if (v:=powers_of_two.get(c.arg, 0)) else None)] # (x+(x<0).where(c-1, 0)) >> v + if not DISABLE_FAST_IDIV: + pat += [(UPat.var("x", dtypes.ints)//UPat.cvar("d"), lambda ctx, x, d: fast_idiv(ctx, x, d.arg))] + pat += [(UPat.var("x", dtypes.ints)%UPat.var("d"), lambda x, d: x-d*(x//d))] + if Ops.NEG in ops: + pat += [(UPat.var('x')*-1, lambda x: x.alu(Ops.NEG))] + if Ops.SUB in ops: pat += [(UPat.var('x')+UPat.var('y').alu(Ops.NEG), lambda x,y: x.alu(Ops.SUB, y))] + if Ops.CMPLT in ops: + # These are late rewrites because simplex expects equalities to be a certain format + pat += [ + ((UPat.var("x", dtypes.sints) < UPat.cvar("c", dtypes.sints)).logical_not(), lambda x,c: c-1 x==c + ] + if Ops.CMPEQ in ops: pat += [(UPat.var('x').ne(UPat.var('y')).logical_not(), lambda x,y: x.alu(Ops.CMPEQ, y))] + if Ops.MULACC in ops: pat += [(UPat.var('a')*UPat.var('b')+UPat.var('c'), lambda a,b,c: a.alu(Ops.MULACC, b, c))] + # some backends emit FDIV for RECIP, in that case: a*(1/b) -> a/b + if Ops.FDIV in ops: + pat += [(UPat.var("x").reciprocal(), lambda x: x.const_like(1).alu(Ops.FDIV, x))] + pat += [(UPat.var("a", dtypes.floats) * UPat.const(dtypes.floats, 1).alu(Ops.FDIV, UPat.var("b")), lambda a,b: a.alu(Ops.FDIV, b))] + return PatternMatcher(pat) diff --git a/tinygrad_repo/tinygrad/uop/mathtraits.py b/tinygrad_repo/tinygrad/uop/mathtraits.py index 63f7d7409..05bf89d8b 100644 --- a/tinygrad_repo/tinygrad/uop/mathtraits.py +++ b/tinygrad_repo/tinygrad/uop/mathtraits.py @@ -161,6 +161,7 @@ class MathTrait: raise RuntimeError("where needs at least one UOp arg") def threefry(self, seed): return self.alu(Ops.THREEFRY, seed) def reciprocal(self): return self.alu(Ops.RECIP) + def trunc(self): return self.alu(Ops.TRUNC) def sqrt(self): return self.alu(Ops.SQRT) def sin(self): return self.alu(Ops.SIN) def log2(self): return self.alu(Ops.LOG2) diff --git a/tinygrad_repo/tinygrad/uop/ops.py b/tinygrad_repo/tinygrad/uop/ops.py index 36f4dbe56..ac5f56c4f 100644 --- a/tinygrad_repo/tinygrad/uop/ops.py +++ b/tinygrad_repo/tinygrad/uop/ops.py @@ -5,13 +5,16 @@ from dataclasses import dataclass, field from enum import Enum, auto from tinygrad.uop import Ops, GroupOp from tinygrad.uop.mathtraits import MathTrait -from tinygrad.dtype import ConstType, ImageDType, dtypes, DType, truncate -from tinygrad.helpers import ContextVar, all_int, prod, getenv, all_same, Context, partition, temp, unwrap, T, argfix, Metadata, flatten +from tinygrad.dtype import ConstType, ImageDType, dtypes, DType, truncate, PtrDType +from tinygrad.helpers import ContextVar, all_int, prod, getenv, all_same, Context, partition, temp, unwrap, T, argfix, Metadata, flatten, TRACEMETA from tinygrad.helpers import PICKLE_BUFFERS, PROFILE, dedup, cdiv, cmod, diskcache_put, to_function_name, cpu_profile, TracingKey if TYPE_CHECKING: from tinygrad.shape.shapetracker import ShapeTracker from tinygrad.device import Buffer, MultiBuffer +class AxisType(Enum): + GLOBAL = auto(); LOCAL = auto(); LOOP = auto(); GROUP_REDUCE = auto(); REDUCE = auto(); UPCAST = auto(); UNROLL = auto() # noqa: E702 + # https://en.wikipedia.org/wiki/Identity_element def identity_element(op:Ops, dt:DType) -> ConstType: return dtypes.as_const({Ops.ADD:0, Ops.MUL:1, Ops.MAX:dtypes.min(dt)}[op], dt) @@ -136,13 +139,22 @@ class UOp(MathTrait, metaclass=UOpMetaClass): @functools.cached_property def st(self) -> ShapeTracker|None: - if self.op in GroupOp.Block or self.op is Ops.INDEX: return None + if self.op is Ops.INDEX and self.src[0].op in {Ops.DEFINE_GLOBAL, Ops.DEFINE_LOCAL, Ops.DEFINE_REG, + Ops.BUFFER, Ops.BUFFERIZE, Ops.VECTORIZE, Ops.STORE}: + return None + if self.op is Ops.BARRIER: return None + if self.op in GroupOp.Block: return None from tinygrad.shape.shapetracker import ShapeTracker # VIEW and MovementOps define a new ShapeTracker from the arg if self.op is Ops.VIEW: return self.arg + if self.op is Ops.BUFFERIZE: return ShapeTracker.from_shape((prod(tuple([int(r.vmax+1) for r in self.src[1:]])),)) + #if self.op is Ops.BUFFERIZE: return ShapeTracker.from_shape(tuple([r.vmax+1 for r in self.src[1:]])) + # allow reshape from nothing + if self.op is Ops.RESHAPE and self.src[0].st is None: return ShapeTracker.from_shape(self.arg) if self.op in GroupOp.Movement: return unwrap(self.src[0].st).mop(self.op, self.arg) # CONST with a DEVICE has a shape of () if self.op is Ops.CONST and len(self.src) and self.src[0].op is Ops.DEVICE: return ShapeTracker.from_shape(()) + if self.op is Ops.STORE and isinstance(self.dtype, PtrDType): return ShapeTracker.from_shape((self.dtype.size,)) # BufferOps and ASSIGN flow ShapeTracker from a direct edge if self.op in {Ops.STORE, Ops.ASSIGN, Ops.LOAD}: return self.src[0].st if self.op in GroupOp.Buffer: return views[0] if (views:=[x.st for x in self.src if x.op is Ops.VIEW]) else None @@ -150,7 +162,17 @@ class UOp(MathTrait, metaclass=UOpMetaClass): # BUFFER/BUFFER_VIEW and KERNEL only have a size if self.op in {Ops.BUFFER, Ops.BUFFER_VIEW}: return ShapeTracker.from_shape((self.size,)) if self.op is Ops.KERNEL: return ShapeTracker.from_shape((self.arg.ast.size,)) - #if self.op in {Ops.DEFINE_GLOBAL, Ops.DEFINE_LOCAL, Ops.DEFINE_REG}: return ShapeTracker.from_shape((self.dtype.size,)) + if self.op in {Ops.DEFINE_GLOBAL, Ops.DEFINE_LOCAL, Ops.DEFINE_REG}: + sz = cast(PtrDType, self.dtype).size + return ShapeTracker.from_shape((sz,)) if sz > 0 else None + + # CONTIGUOUS with RANGE + # TODO: how are these not RANGE? + if self.op is Ops.CONTIGUOUS and len(self.src) > 1 and all(x.op is Ops.RANGE for x in self.src[1:]): + return ShapeTracker.from_shape((tuple([int(x.vmax+1) for x in self.src[1:]])+self.src[0].shape)) + + # hack for PTX, CASTing the ptr loses the shape + if self.op is Ops.CAST and self.src[0].op is Ops.DEFINE_GLOBAL: return None # otherwise we get the shape from sources if not (src_sts := [x.st for x in self.src if x.st is not None]): return None @@ -171,17 +193,33 @@ class UOp(MathTrait, metaclass=UOpMetaClass): parent_shapes = [x.full_shape for x in self.src] return tuple(smax(x) for x in itertools.zip_longest(*parent_shapes, fillvalue=1)) @property - def shape(self) -> tuple[sint, ...]: return unwrap(self.st).shape + def shape(self) -> tuple[sint, ...]: + assert self.st is not None, f"{self.op} doesn't have a shape" + return unwrap(self.st).shape @property def size(self) -> int: return self.arg[0] if self.op is Ops.BUFFER_VIEW else self.arg if self.op is Ops.BUFFER else unwrap(self.st).size + # determine what ranges this is in + @functools.cached_property + def ranges(self) -> dict[UOp, None]: + if self.op is Ops.RANGE: return {self:None} + range_start = {Ops.BUFFERIZE: 1, Ops.REDUCE: 1, Ops.STORE: 2, Ops.WMMA: 3} + ret: dict[UOp, None] = {} + if self.op in range_start.keys(): + for s in self.src[:range_start[self.op]]: ret.update(s.ranges) + for s in UOp.sink(*self.src[range_start[self.op]:]).ranges: + if s in ret: del ret[s] + else: + for s in self.src: ret.update(s.ranges) + return ret + # *** uop evaluation *** - def simplify(self): + def simplify(self, tracked=False): # late import! from tinygrad.uop.symbolic import symbolic - with Context(TRACK_MATCH_STATS=0): - return graph_rewrite(self, symbolic) + with Context(TRACK_MATCH_STATS=0 if not tracked else TRACK_MATCH_STATS.value): + return graph_rewrite(self, symbolic, name="simplify") def ssimplify(self) -> UOp|ConstType: return ret.arg if (ret:=self.simplify()).op is Ops.CONST else ret def _eval(self, dtype, expected_type:Type[T]) -> T: assert self.dtype in dtype, f"eval with wrong dtype {self}" @@ -210,9 +248,11 @@ class UOp(MathTrait, metaclass=UOpMetaClass): ret = self.arg[1] if self.op is Ops.REDUCE_AXIS else self.arg[7] assert isinstance(ret, tuple) and all(isinstance(x, int) for x in ret), f"axis_arg trying to return {ret}" return ret - def sink(self, *srcs:UOp|None, **kwargs): return UOp(Ops.SINK, dtypes.void, (self,)+tuple([x for x in srcs if x is not None]), **kwargs) + def sink(*srcs:UOp|None, **kwargs): # pylint: disable=no-self-argument + return UOp(Ops.SINK, dtypes.void, tuple([x for x in srcs if x is not None]), **kwargs) def detach(self): return UOp(Ops.DETACH, self.dtype, (self,)) - def index(self, idx:UOp, valid:UOp|None=None): return UOp(Ops.INDEX, self.dtype, (self,idx,valid) if valid is not None else (self,idx)) + def index(self, *srcs:UOp|None, **kwargs): + return UOp(Ops.INDEX, kwargs.pop("dtype", self.dtype), (self,)+tuple([x for x in srcs if x is not None]), **kwargs) def __getitem__(self, idx): return self.index(idx) def const_like(self, b:ConstLike): # constants can optionally have a DEVICE source @@ -222,9 +262,10 @@ class UOp(MathTrait, metaclass=UOpMetaClass): if count == 1: return self return UOp(Ops.VECTORIZE, self.dtype.vec(count), (self,)*count) def cast(self, dtype:DType): + # TODO: we shouldn't have to check for dtype.count == 1 here, but CAST is misused in AMD LLVM + if dtype.count == 1 and dtype.count != self.dtype.count: dtype = dtype.vec(self.dtype.count) if self.dtype == dtype: return self return UOp(Ops.CAST, dtype, (self,)) - def cast_vec(self, dtype:DType): return UOp(Ops.CAST, dtype.vec(self.dtype.count), (self,)) def bitcast(self, dtype:DType): return UOp(Ops.BITCAST, dtype, (self,)) def gep(self, i:tuple[int, ...]|int): if isinstance(i, tuple) and len(i) == 1: return self.gep(i[0]) @@ -236,12 +277,12 @@ class UOp(MathTrait, metaclass=UOpMetaClass): i = (i,) return UOp(Ops.GEP, self.dtype.scalar().vec(len(i)) if len(i) > 1 else self.dtype.scalar(), (self,), i) def load(self, *src:UOp, **kwargs): return UOp(Ops.LOAD, dtype=kwargs.pop("dtype", self.dtype.base), src=(self,)+src, **kwargs) - def store(self, *src:UOp, **kwargs): return UOp(Ops.STORE, dtypes.void, (self,)+src, **kwargs) + def store(self, *src:UOp, **kwargs): return UOp(Ops.STORE, kwargs.pop("dtype", dtypes.void), (self,)+src, **kwargs) def assign(self, x:UOp): return UOp(Ops.ASSIGN, self.dtype, (self, x)) - def barrier(self): return UOp(Ops.BARRIER, src=(self,)) + def barrier(self, *src:UOp): return UOp(Ops.BARRIER, src=(self,)+src) def alu(self, op, *src:UOp, **kwargs): out_dtype = (self, *src)[-1].dtype - if op in {Ops.CMPLT, Ops.CMPNE}: out_dtype = dtypes.bool.vec(out_dtype.count) if out_dtype.count > 1 else dtypes.bool + if op in {Ops.CMPLT, Ops.CMPNE, Ops.CMPEQ}: out_dtype = dtypes.bool.vec(out_dtype.count) if out_dtype.count > 1 else dtypes.bool return UOp(op, out_dtype, (self,)+src, **kwargs) @staticmethod def const(dtype:DType, b:ConstLike, device:str|tuple[str, ...]|None=None, shape:tuple[sint, ...]|None=None): @@ -250,30 +291,31 @@ class UOp(MathTrait, metaclass=UOpMetaClass): ret = UOp(Ops.VCONST if isinstance(b, tuple) else Ops.CONST, dtype, arg=dtypes.as_const(b, dtype)) if shape is not None: from tinygrad.shape.shapetracker import ShapeTracker - ret = ret.replace(src=(ShapeTracker.from_shape(()).reshape((1,)*len(shape)).expand(shape).to_uop(),)) + ret = ret.replace(src=(UOp(Ops.VIEW, dtypes.void, (), ShapeTracker.from_shape(shape, (0,)*len(shape))),)) if device is not None: - ret = ret.replace(src=(UOp(Ops.DEVICE, arg=device).view(unwrap(ret.st)),)) + if shape is not None: ret = ret.replace(src=(UOp(Ops.DEVICE, arg=device).view(unwrap(ret.st)),)) + else: ret = ret.replace(src=(UOp(Ops.DEVICE, arg=device),)) return ret - def valid(self): return UOp.where(UOp(Ops.VALID, dtypes.bool, (UOp(Ops.VIEW, arg=self.st),)), self.const_like(self.base.arg), 0) @staticmethod - def range(dtype:DType, end:sint, idx:int): return UOp(Ops.RANGE, dtype=dtype, src=(sint_to_uop(end),), arg=idx) + def range(end:sint, *arg): + if len(arg) == 0: raise RuntimeError("range needs an arg") + if len(arg) == 1: arg = arg+(AxisType.LOOP,) + return UOp(Ops.RANGE, dtype=dtypes.int, src=(sint_to_uop(end),), arg=arg) def r(self, op:Ops, axis:tuple[int, ...]): axis = tuple(sorted([x for x in axis if resolve(self.shape[x] != 1)])) if len(axis) == 0: return self # move any non reduce axis before the first reduce axis move_early, rest = partition(range(axis[0], len(self.shape)), lambda i: i not in axis and resolve(self.shape[i] != 1)) - if move_early: - permaxis = tuple(range(axis[0])) + tuple(move_early) + tuple(rest) - ret = self.permute(permaxis) - new_axis = tuple([x for x in range(axis[0]+len(move_early), len(self.shape)) if resolve(ret.shape[x] != 1)]) - assert len(axis) == len(new_axis) - else: - ret, new_axis = self, axis + permaxis = tuple(range(axis[0])) + tuple(move_early) + tuple(rest) + ret = self.permute(permaxis) + new_axis = tuple([x for x in range(axis[0]+len(move_early), len(self.shape)) if resolve(ret.shape[x] != 1)]) + assert len(axis) == len(new_axis) ret = UOp(Ops.REDUCE_AXIS, self.dtype, (ret,), (op, new_axis)) return ret.reshape(tuple([x if i not in axis else 1 for i,x in enumerate(self.shape)])) def reduce(self, *src:UOp, **kwargs): return UOp(Ops.REDUCE, kwargs.pop('dtype', self.dtype), src=(self,)+src, **kwargs) - def contiguous(self): return self.alu(Ops.CONTIGUOUS) + def contiguous(self, *args, **kwargs): return UOp(Ops.CONTIGUOUS, dtype=self.dtype, src=(self,)+args, **kwargs) def contiguous_backward(self): return self.alu(Ops.CONTIGUOUS_BACKWARD) + def bufferize(self, *args, **kwargs): return UOp(Ops.BUFFERIZE, dtype=self.dtype, src=(self,)+args, **kwargs) def fuse(self): return self.alu(Ops.FUSE) def allreduce(self, op, device:str|tuple[str, ...]|UOp): assert isinstance(self.device, tuple), f"allreduce must be on tuple {self.device} isn't" @@ -345,11 +387,13 @@ class UOp(MathTrait, metaclass=UOpMetaClass): if self.st == ret.st: return self # ignore NOOPs, also check ret.st return ret + def forced_reshape(self, arg:tuple[sint, ...], **kwargs): return UOp(Ops.RESHAPE, kwargs.pop("dtype", self.dtype), src=(self,), arg=arg) + def reshape(self, arg:tuple[sint, ...]): return self._mop(Ops.RESHAPE, arg) - def pad(self, arg:tuple[tuple[sint, sint], ...]): return self._mop(Ops.PAD, arg) def expand(self, arg:tuple[sint, ...]): return self._mop(Ops.EXPAND, arg) - def permute(self, arg:tuple[sint, ...]): return self._mop(Ops.PERMUTE, arg) def shrink(self, arg:tuple[tuple[sint, sint], ...]): return self._mop(Ops.SHRINK, arg) + def pad(self, arg:tuple[tuple[sint, sint], ...]): return self._mop(Ops.PAD, arg) + def permute(self, arg:tuple[int, ...]): return self._mop(Ops.PERMUTE, arg) def flip(self, arg:tuple[bool, ...]): return self._mop(Ops.FLIP, arg) # *** uop UNIQUE *** @@ -381,6 +425,15 @@ class UOp(MathTrait, metaclass=UOpMetaClass): if self.op is Ops.MSTACK: return UOp(Ops.MSTACK, self.dtype, src=tuple(x.buf_uop for x in self.src)) assert self.op is Ops.ASSIGN, f"must be ASSIGN {self.op}" return self.src[0].base + + def as_buf(self) -> UOp: + if self.op is Ops.MSELECT: return self.src[0].as_buf().mselect(self.arg) + if self.op is Ops.MSTACK: return UOp(Ops.MSTACK, self.dtype, src=tuple(x.as_buf() for x in self.src)) + # TODO: this should be the only one of these. this is the one RANGEIFY uses + s = self + while len(s.src) and s.op is not Ops.BUFFER: s = s.src[0] + return s + @property def buffer(self) -> Buffer|MultiBuffer: from tinygrad.device import Buffer, MultiBuffer @@ -437,7 +490,7 @@ class UOp(MathTrait, metaclass=UOpMetaClass): all_vars = set([x for x in self.toposort() if x.op is Ops.DEFINE_VAR]) return bound_vars.union(set([x for x in all_vars if x not in bound_var_base])) def variables(self) -> list[Variable]: - st_vars: list[set[Variable]] = [x.st_arg.vars() for x in self.toposort() if x.op in GroupOp.Buffer] + st_vars: list[set[Variable]] = [x.arg.vars() for x in self.toposort() if x.op is Ops.VIEW] return sorted(set.union(*st_vars, set([x.unbind()[0] if x.op is not Ops.DEFINE_VAR else x for x in self.vars()])), key=lambda v: v.arg) # *** uop symbolic stuff *** @@ -465,6 +518,7 @@ class UOp(MathTrait, metaclass=UOpMetaClass): if (d0:=self.src[0].divides(v)) is not None: return d0 * self.src[1] if (d1:=self.src[1].divides(v)) is not None: return self.src[0] * d1 return None # generic None if we aren't sure + def pop_const(self) -> tuple[UOp, int]: return (self.src[0], self.src[1].arg) if self.op is Ops.ADD and self.src[1].op is Ops.CONST else (self, 0) @property def vmin(self) -> ConstType: return self._min_max[0] @property @@ -485,13 +539,8 @@ class UOp(MathTrait, metaclass=UOpMetaClass): if s1_vmax < 0: return (0, -s1_vmin-1) if s0_vmin >= 0 else (-(-s1_vmin-1), 0) if s0_vmax <= 0 else (-(-s1_vmin-1), -s1_vmin-1) if self.op is Ops.IDIV: assert isinstance(s0_vmin, int) and isinstance(s0_vmax, int) and isinstance(s1_vmin, int) and isinstance(s1_vmax, int) - if (c:=s1_vmin) == s1_vmax: # s1 is a const - if c > 0: return cdiv(s0_vmin, c), cdiv(s0_vmax, c) - if c < 0: return cdiv(s0_vmax, c), cdiv(s0_vmin, c) - if (s0_vmax <= 0 and s1_vmax < 0): return cdiv(s0_vmax, s1_vmin), cdiv(s0_vmin, s1_vmax) - if (s0_vmin >= 0 and s1_vmin > 0): return cdiv(s0_vmin, s1_vmax), cdiv(s0_vmax, s1_vmin) - if (s0_vmax <= 0 and s1_vmin > 0): return cdiv(s0_vmin, s1_vmin), cdiv(s0_vmax, s1_vmax) - if (s0_vmin >= 0 and s1_vmax < 0): return cdiv(s0_vmax, s1_vmax), cdiv(s0_vmin, s1_vmin) + if s1_vmin*s1_vmax>0: + return min(vals:=(cdiv(s0_vmin, s1_vmin), cdiv(s0_vmin, s1_vmax), cdiv(s0_vmax, s1_vmin), cdiv(s0_vmax, s1_vmax))), max(vals) if self.op is Ops.MAX: return max(s0_vmin, s1_vmin), max(s0_vmax, s1_vmax) if self.op is Ops.CMPLT: return (s0_vmax str: - ret = graph_rewrite(self.simplify() if simplify else self, renderer if pm is None else pm) + with Context(TRACK_MATCH_STATS=0): + ret = graph_rewrite(self.simplify() if simplify else self, renderer if pm is None else pm) return ret.arg if ret.op is Ops.NOOP else str(ret) -class AxisType(Enum): - GLOBAL = auto(); LOCAL = auto(); LOOP = auto(); GROUP_REDUCE = auto(); REDUCE = auto(); UPCAST = auto(); UNROLL = auto() # noqa: E702 - @dataclass(frozen=True) class KernelInfo: name: str = "test" # name of the kernel @@ -541,10 +588,6 @@ class KernelInfo: opts_to_apply: tuple|None = None @property def function_name(self): return to_function_name(self.name) - @property - def global_dims(self) -> list[int]: return [i for i,x in enumerate(self.axis_types) if x is AxisType.GLOBAL] - @property - def local_dims(self) -> list[int]: return [i for i,x in enumerate(self.axis_types) if x in (AxisType.LOCAL, AxisType.GROUP_REDUCE)] # ******** ops in python ******** @@ -560,10 +603,10 @@ def safe_pow(x, y): python_alu: dict[Ops, Callable] = { Ops.LOG2: lambda x: math.log2(x) if x > 0 else -math.inf if x == 0 else math.nan, Ops.EXP2: safe_exp2, Ops.SQRT: lambda x: math.sqrt(x) if x >= 0 else math.nan, Ops.RECIP: lambda x: 1/x if x != 0 else math.copysign(math.inf, x), - Ops.SIN: lambda x: math.sin(x) if not math.isinf(x) else math.nan, Ops.POW: safe_pow, + Ops.SIN: lambda x: math.sin(x) if not math.isinf(x) else math.nan, Ops.POW: safe_pow, Ops.TRUNC: math.trunc, Ops.NEG: operator.neg, Ops.ADD: operator.add, Ops.SUB: operator.sub, Ops.MUL: operator.mul, Ops.CMPNE: operator.ne, Ops.CMPLT: operator.lt, Ops.XOR: operator.xor, Ops.OR: operator.or_, Ops.AND: operator.and_, Ops.SHR: operator.rshift, Ops.SHL: operator.lshift, Ops.MAX: max, - Ops.MOD: cmod, Ops.IDIV: cdiv, Ops.MULACC: lambda x,y,z: (x*y)+z, Ops.WHERE: lambda x,y,z: y if x else z} + Ops.MOD: cmod, Ops.IDIV: cdiv, Ops.MULACC: lambda x,y,z: (x*y)+z, Ops.WHERE: lambda x,y,z: y if x else z, Ops.CMPEQ: operator.eq} def exec_alu(op:Ops, dtype:DType, operands, truncate_output=True): if dtype.count > 1: @@ -638,11 +681,16 @@ class UPat(MathTrait): def var(name:str|None=None, dtype:DType|tuple[DType, ...]|None=None): return UPat(dtype=dtype, name=name) @staticmethod @functools.cache - def cvar(name:str|None=None, dtype:DType|None=None, vec=True): return UPat((Ops.CONST,Ops.VCONST) if vec else Ops.CONST, dtype, name=name) + def cvar(name:str|None=None, dtype:DType|tuple[DType, ...]|None=None, vec=True): + return UPat((Ops.CONST,Ops.VCONST) if vec else Ops.CONST, dtype, name=name) @staticmethod def const(dtype:DType|tuple[DType, ...]|None, b:ConstType): return UPat(Ops.CONST, dtype=dtype, arg=b) + # lil helper + def f(self, op, **kwargs): return UPat(op, src=(self,), **kwargs) + # copied from UOp + def sink(self, *srcs:UPat|None, **kwargs): return UPat(Ops.SINK, dtypes.void, (self,)+tuple([x for x in srcs if x is not None]), **kwargs) def index(self, idx:UPat, valid:UPat|None=None): return UPat(Ops.INDEX, self.dtype, (self,idx,valid) if valid is not None else (self,idx)) def view(self, st=None, **kwargs): return UPat(Ops.VIEW, self.dtype, (self,), st, **kwargs) def cast(self, dtype=None, **kwargs): return UPat(Ops.CAST, dtype, (self,), **kwargs) @@ -654,6 +702,7 @@ class UPat(MathTrait): def reduce(self, *src:UPat, **kwargs): return UPat(Ops.REDUCE, self.dtype, src=(self,)+src, **kwargs) def fuse(self): return self.alu(Ops.FUSE) def or_broadcasted(self, **kwargs): return UPat.any(self, UPat(Ops.VECTORIZE, self.dtype, src=self, **kwargs)) + def contiguous(self, *args, **kwargs): return UPat(Ops.CONTIGUOUS, dtype=self.dtype, src=(self,)+args, **kwargs) def const_like(self, b:ConstLike): return UPat.const(self.dtype, cast(ConstType, b)) def alu(self, op:Ops, *src:UPat): @@ -730,7 +779,7 @@ class PatternMatcher: def __reduce__(self): return PatternMatcher, ([(x,deconstruct_function(fxn) if fxn.__name__ == "" else fxn) for x,fxn in self.patterns],) @functools.cache # pylint: disable=method-cache-max-size-none - def __add__(self, more:PatternMatcher): return PatternMatcher(self.patterns+more.patterns) + def __add__(self, more:PatternMatcher) -> PatternMatcher: return PatternMatcher(self.patterns+more.patterns) def rewrite(self, uop:UOp, ctx=None) -> UOp|None: ler = {u.op for u in uop.src} @@ -739,16 +788,6 @@ class PatternMatcher: if (ret:=match(uop, ctx)) is not None and ret is not uop: return ret return None - def fixed_point_rewrite(self, uop:UOp, ctx=None) -> UOp: - # apply rewrite rules until a fixed point is reached. may return `uop` itself if PatternMatcher doesn't match - new_n: UOp|None = uop - seen = set() - while new_n is not None: - if new_n in seen: raise RuntimeError("infinite loop in fixed_point_rewrite") - seen.add(new_n) - last_n, new_n = new_n, self.rewrite(new_n, ctx) - return last_n - # *** non-blocking UOp tracker *** ucount = itertools.count() @@ -759,7 +798,7 @@ def track_uop(u:UOp): uop_number[u] = num = next(ucount) # KERNEL also has a UOp in the arg arg = type(u.arg)(track_uop(u.arg.ast), u.arg.metadata) if u.op is Ops.KERNEL else u.arg - uop_fields[num] = (u.op, u.dtype, tuple(track_uop(s) for s in u.src), arg, u.tag) + uop_fields[num] = (u.op, u.dtype, tuple(track_uop(s) for s in u.src), arg, u.tag)+((u.metadata,) if TRACEMETA>=2 else ()) return num # *** tracking pattern matcher *** @@ -788,12 +827,12 @@ if getenv("CAPTURE_PROCESS_REPLAY"): def save_to_diskcache(): for k,v in replay_capture.items(): diskcache_put("process_replay", k, v, prepickled=True) -def track_rewrites(name:Callable[..., str|TracingKey]|bool=True): +def track_rewrites(name:Callable[..., str|TracingKey]|bool=True, replay:bool=False): def _decorator(func): def __wrapper(*args, **kwargs): fn = key = func.__name__ if TRACK_MATCH_STATS >= 2: - tracked_keys.append(key:=TracingKey(n:=f"{fn} n{next(_name_cnt.setdefault(fn, itertools.count(1)))}", (n,), cat=fn)) + tracked_keys.append(key:=TracingKey(n:=f"{fn} n{next(_name_cnt.setdefault(fn, itertools.count(1)))}", (n,))) tracked_ctxs.append([]) with cpu_profile(key, "TINY") as e: ret = func(*args, **kwargs) @@ -801,8 +840,8 @@ def track_rewrites(name:Callable[..., str|TracingKey]|bool=True): name_ret = name(*args, **kwargs, ret=ret) assert isinstance(name_ret, (TracingKey, str)), f"name function returned {type(name_ret)}" tracked_keys[-1] = k = TracingKey(n:=tracked_keys[-1].display_name.replace(fn, name_ret), (n,)) if isinstance(name_ret, str) else name_ret - e.name = TracingKey(k.display_name if isinstance(name_ret, str) else f"{fn} for {k.display_name}", k.keys, cat=fn) - if getenv("CAPTURE_PROCESS_REPLAY"): + e.name = TracingKey(k.display_name if isinstance(name_ret, str) else f"{fn} for {k.display_name}", k.keys) + if getenv("CAPTURE_PROCESS_REPLAY") and replay: # find the unittest frame we're capturing in frm = sys._getframe(1) while (f_back:=frm.f_back) is not None and "unittest" not in f_back.f_code.co_filename: frm = f_back @@ -840,7 +879,12 @@ class TrackedPatternMatcher(PatternMatcher): match_stats[p][2] += time.perf_counter()-st continue match_stats[p][1] += 1 - if (ret:=match(uop, ctx)) is not None and ret is not uop: + try: ret = match(uop, ctx) + except Exception as e: + if TRACK_MATCH_STATS >= 2 and active_rewrites and not isinstance(e, RewriteNotReady): + active_rewrites[-1].matches.append((track_uop(uop), track_uop(UOp(Ops.REWRITE_ERROR, src=uop.src, arg=str(sys.exc_info()[1]))), p.location)) + raise + if ret is not None and ret is not uop: match_stats[p][0] += 1 match_stats[p][3] += (et:=time.perf_counter()-st) if TRACK_MATCH_STATS >= 3: print(f"{et*1e6:7.2f} us -- ", printable(p.location)) @@ -858,7 +902,7 @@ if TRACK_MATCH_STATS or PROFILE: if TRACK_MATCH_STATS >= 2: with open(fn:=temp("rewrites.pkl", append_user=True), "wb") as f: print(f"rewrote {len(tracked_ctxs)} graphs and matched {sum(len(r.matches) for x in tracked_ctxs for r in x)} times, saved to {fn}") - pickle.dump((tracked_keys, tracked_ctxs, uop_fields), f) + pickle.dump([(tracked_keys, tracked_ctxs, uop_fields)], f) if VIZ: launch_viz(VIZ, temp("rewrites.pkl", append_user=True)) if getenv("PRINT_MATCH_STATS", TRACK_MATCH_STATS.value): ret = [0,0,0.0,0.0] @@ -880,39 +924,66 @@ if TRACK_MATCH_STATS or PROFILE: # *** simple graph rewrite engine *** +class RewriteNotReady(Exception): pass class RewriteContext: def __init__(self, pm, bpm, ctx=None): self.pm: PatternMatcher|None = pm + self.pm_cache: dict[UOp, UOp|None] = {} self.bpm: PatternMatcher|None = bpm + self.bpm_cache: dict[UOp, UOp|None] = {} self.ctx = ctx self.replace: dict[UOp, UOp] = {} + def cached_pm_rewrite(self, x:UOp): + if (ret:=self.pm_cache.get(x,False)) is not False: return ret + ret = self.pm_cache[x] = cast(PatternMatcher, self.pm).rewrite(x, self.ctx) + return ret + + def cached_bpm_rewrite(self, x:UOp): + if (ret:=self.bpm_cache.get(x,False)) is not False: return ret + ret = self.bpm_cache[x] = cast(PatternMatcher, self.bpm).rewrite(x, self.ctx) + return ret + def unified_rewrite(self, root:UOp) -> UOp: stack: list[tuple[UOp, int, UOp]] = [(root, 0, root)] while stack: - if len(stack) >= 200000: raise RuntimeError("infinite loop in graph_rewrite") + if len(stack) >= 200000: raise RuntimeError("infinite loop in graph_rewrite (stack too big)") n, stage, new_n = stack.pop() if n in self.replace: continue # skip any nodes we have seen - if stage == 0: - # if bottom up, we rewrite this node early. in both cases, we add its parents to the stack - if self.bpm is not None: new_n = self.bpm.fixed_point_rewrite(new_n, self.ctx) - stack.append((n, 1, new_n)) - for x in reversed(new_n.src): stack.append((x, 0, x)) - elif stage == 1: - if (new_src:=tuple([self.replace[x] for x in new_n.src])) == new_n.src: - # if top down, do the rewrite. if no rewrite or bottom up, we are done rewriting this node so we add it to the dict - if self.pm is None or (new_src_n:=self.pm.rewrite(new_n, self.ctx)) is None: - self.replace[n] = new_n - continue + try: + if stage == 0: + # if bottom up, we rewrite this node early. in both cases, we add its parents to the stack + if self.bpm is not None: + # apply rewrite rules until a fixed point is reached. may return `uop` itself if PatternMatcher doesn't match + test_n: UOp|None = n + seen = set() + while test_n is not None: + if test_n in seen: raise RuntimeError("infinite loop in fixed_point_rewrite") + seen.add(test_n) + new_n, test_n = test_n, self.cached_bpm_rewrite(test_n) + stack.append((n, 1, new_n)) + for x in reversed(new_n.src): stack.append((x, 0, x)) + elif stage == 1: + try: new_src = tuple([self.replace[x] for x in new_n.src]) + except KeyError: raise RewriteNotReady # pylint: disable=raise-missing-from + if new_src == new_n.src: + # if top down, do the rewrite. if no rewrite or bottom up, we are done rewriting this node so we add it to the dict + if self.pm is None or (new_src_n:=self.cached_pm_rewrite(new_n)) is None: + self.replace[n] = new_n + continue + else: + # if srcs changed from rewrites, construct a new UOp with the new srcs + new_src_n = UOp(new_n.op, new_n.dtype, new_src, new_n.arg, new_n.tag) + # trigger a rewrite of new_src_n, then after that rewrite is done, link it back to n + stack.append((n, 2, new_src_n)) + stack.append((new_src_n, 0, new_src_n)) else: - # if srcs changed from rewrites, construct a new UOp with the new srcs - new_src_n = UOp(new_n.op, new_n.dtype, new_src, new_n.arg, new_n.tag) - # trigger a rewrite of new_src_n, then after that rewrite is done, link it back to n - stack.append((n, 2, new_src_n)) - stack.append((new_src_n, 0, new_src_n)) - else: - # in stage 2, we link the result of new_n to the result of n - self.replace[n] = self.replace[new_n] + # in stage 2, we link the result of new_n to the result of n + try: self.replace[n] = self.replace[new_n] + except KeyError: raise RewriteNotReady # pylint: disable=raise-missing-from + except RewriteNotReady: + # retry this later + stack.insert(0, (n, stage, new_n)) return self.replace[root] @track_matches @@ -925,7 +996,7 @@ def graph_rewrite_map(sink:UOp, pm:PatternMatcher, ctx=None, bottom_up=False, na input_map:dict[UOp, UOp]|None=None, ) -> dict[UOp, UOp]: rewrite_ctx = RewriteContext(pm if not bottom_up else None, pm if bottom_up else bpm, ctx) new_map: dict[UOp, UOp] = {} - for k in sink.toposort(): + for k in (list(sink.toposort())[::-1] if bottom_up else sink.toposort()): new_map[k] = v = rewrite_ctx.unified_rewrite(k) if k is not v and k.metadata is not None: all_metadata[v] = tuple(dedup(all_metadata.get(v, ())))+k.metadata if input_map is not None: @@ -941,7 +1012,7 @@ syms = { Ops.ADD: "+", Ops.SUB: "-", Ops.IDIV: "//", Ops.MOD: "%", Ops.SHL: "<<" Ops.MUL: "*", Ops.CMPLT: "<", Ops.CMPNE: "!=", Ops.AND: "&", Ops.OR: "|", Ops.XOR: "^"} renderer = PatternMatcher([ (UPat((Ops.DEFINE_VAR, Ops.SPECIAL), name="x"), lambda x: UOp(Ops.NOOP, arg=x.arg[0])), - (UPat(Ops.RANGE, name="x"), lambda x: UOp(Ops.NOOP, arg=f"ridx{x.arg}")), + (UPat(Ops.RANGE, name="x"), lambda x: UOp(Ops.NOOP, arg=f"ridx{x.arg[0]}" if x.arg[0] >= 0 else f"ridxm{-x.arg[0]}")), (UPat((Ops.CONST, Ops.VCONST), name="x"), lambda x: UOp(Ops.NOOP, arg=str(x.arg))), (UPat(Ops.UNROLL, name="x"), lambda x: UOp(Ops.NOOP, arg=f"UNROLL({x.src[0].arg}, {x.arg})")), (UPat(Ops.CAST, name="x"), lambda x: UOp(Ops.NOOP, arg=f"({str(x.dtype)[7:]})({x.src[0].arg})")), @@ -949,6 +1020,7 @@ renderer = PatternMatcher([ (UPat(Ops.BIND, src=UPat(Ops.NOOP), name="x"), lambda x: x.src[0]), #(UPat(Ops.BIND, src=UPat(Ops.NOOP), name="x"), lambda x: UOp(Ops.NOOP, arg=f"{x.src[0].arg}[={x.src[1].arg}]")), (UPat(Ops.NEG, src=UPat(Ops.NOOP), name="x"), lambda x: UOp(Ops.NOOP, arg=f"(-{x.src[0].arg})")), + (UPat(Ops.RECIP, src=UPat(Ops.NOOP), name="x"), lambda x: UOp(Ops.NOOP, arg=f"(1/{x.src[0].arg})")), (UPat(Ops.MAX, src=UPat(Ops.NOOP), name="x"), lambda x: UOp(Ops.NOOP, arg=f"max({x.src[0].arg}, {x.src[1].arg})")), (UPat(Ops.MULACC, src=UPat(Ops.NOOP), name="x"), lambda x: UOp(Ops.NOOP, arg=f"({x.src[0].arg}*{x.src[1].arg}+{x.src[2].arg})")), (UPat(Ops.WHERE, src=UPat(Ops.NOOP), name="x"), lambda x: UOp(Ops.NOOP, arg=f"({x.src[1].arg} if {x.src[0].arg} else {x.src[2].arg})")), diff --git a/tinygrad_repo/tinygrad/uop/spec.py b/tinygrad_repo/tinygrad/uop/spec.py index b196faac6..0d9e21061 100644 --- a/tinygrad_repo/tinygrad/uop/spec.py +++ b/tinygrad_repo/tinygrad/uop/spec.py @@ -1,7 +1,8 @@ from typing import cast, Callable -from tinygrad.uop.ops import PatternMatcher, UPat, GroupOp, Ops, UOp, print_uops, python_alu, graph_rewrite, resolve +from tinygrad.uop.ops import PatternMatcher, UPat, GroupOp, Ops, UOp, print_uops, python_alu, graph_rewrite from tinygrad.dtype import DType, ImageDType, dtypes, PtrDType, AddrSpace from tinygrad.helpers import all_same, prod, DEBUG, ContextVar, Context +from tinygrad.shape.shapetracker import ShapeTracker try: import z3 @@ -9,27 +10,46 @@ try: def z3_cdiv(a, b):return z3.If((a<0), z3.If(0= 0, z3.ToInt(a), -z3.ToInt(-a)))} def create_bounded(name:str, vmin, vmax, solver:z3.Solver) -> z3.ArithRef: s = z3.Int(name, ctx=solver.ctx) solver.add(vmin <= s, s <= vmax) return s # ctx is (solver, load_number_dict) + # each uop gets rewritten to NOOP(arg=(solver, z3_object)), the arg has the solver first due to UOpMetaClass caching. z3 objects from different + # contexts can have the same hash but error on comparison z3_renderer = PatternMatcher([ # Ops.SPECIAL can have symbolic arg but it wont be in the toposort beacuse its not a src, we need to add it manually (UPat(Ops.SPECIAL, src=(), name="x"), lambda x: UOp(Ops.SPECIAL, arg=x.arg[0], src=(x.ufix(x.arg[1]),))), - (UPat(Ops.SPECIAL, src=UPat(Ops.NOOP), name="x"), lambda x,ctx: UOp(Ops.NOOP, arg=create_bounded(x.arg, 0, x.src[0].arg-1, ctx[0]))), - (UPat(Ops.DEFINE_VAR, name="x"), lambda x,ctx: UOp(Ops.NOOP, arg=create_bounded(x.arg[0], x.arg[1], x.arg[2], ctx[0]))), - (UPat(Ops.RANGE, name="x"), lambda x,ctx: UOp(Ops.NOOP, arg=create_bounded(f"ridx{x.arg}", 0, x.src[0].arg-1, ctx[0]))), - (UPat(Ops.LOAD, name="x"), lambda x,ctx: UOp(Ops.NOOP, arg=create_bounded(f"load{ctx[1].setdefault(x, len(ctx[1]))}", x.vmin, x.vmax, ctx[0]))), - (UPat(Ops.CONST, name="x"), lambda x,ctx: UOp(Ops.NOOP, arg=(z3.BoolVal if dtypes.is_bool(x.dtype) else z3.IntVal)(x.arg, ctx=ctx[0].ctx))), - (UPat(Ops.CAST, name="x"), lambda x: x.src[0]), + (UPat(Ops.SPECIAL, src=UPat(Ops.NOOP), name="x"), lambda x,ctx: UOp(Ops.NOOP, arg=(ctx[0],create_bounded(x.arg, 0, x.src[0].arg[1]-1, ctx[0])))), + (UPat(Ops.DEFINE_VAR, name="x"), lambda x,ctx: UOp(Ops.NOOP, arg=(ctx[0],create_bounded(x.arg[0], x.arg[1], x.arg[2], ctx[0])))), + (UPat(Ops.RANGE, name="x"), lambda x,ctx: UOp(Ops.NOOP, arg=(ctx[0],create_bounded(f"ridx{x.arg}", 0, x.src[0].arg[1]-1, ctx[0])))), + # float loads only become a variable when they get cast to int/bool + (UPat(Ops.LOAD, dtypes.ints, name="x"), + lambda x,ctx: UOp(Ops.NOOP, arg=(ctx[0],create_bounded(f"load{ctx[1].setdefault(x, len(ctx[1]))}", x.dtype.min, x.dtype.max, ctx[0])))), + (UPat(Ops.CONST, dtype=dtypes.ints+(dtypes.bool,), name="x"), + lambda x,ctx: UOp(Ops.NOOP, arg=(ctx[0],(z3.BoolVal if dtypes.is_bool(x.dtype) else z3.IntVal)(x.arg, ctx=ctx[0].ctx)))), + # z3 can cast from bool to int automatically + (UPat(Ops.CAST, dtype=dtypes.ints, src=UPat(Ops.NOOP), name="x"), lambda x: x.src[0]), + (UPat(Ops.CAST, dtype=dtypes.bool, src=UPat(Ops.NOOP), name="x"), lambda x,ctx: UOp(Ops.NOOP, arg=(ctx[0], x.src[0].arg[1]!=0))), + # if the source of the cast is not a noop it means that it is a float and so we create a new variable + (UPat(Ops.CAST, dtype=dtypes.ints, name="x"), lambda x,ctx: + UOp(Ops.NOOP, arg=(ctx[0], create_bounded(f"cast{ctx[1].setdefault(x, len(ctx[1]))}", x.dtype.min, x.dtype.max, ctx[0])))), + (UPat(Ops.CAST, dtype=dtypes.bool, name="x"), lambda x,ctx: + UOp(Ops.NOOP, arg=(ctx[0], z3.Bool(f"cast{ctx[1].setdefault(x, len(ctx[1]))}",ctx=ctx[0].ctx)))), (UPat(Ops.XOR, src=UPat(Ops.NOOP), name="x"), - lambda x: UOp(Ops.NOOP, arg=z3.BV2Int(z3_alu[x.op](*(z3.Int2BV(s.arg, x.dtype.itemsize*8) for s in x.src))))), - (UPat(GroupOp.ALU, src=UPat(Ops.NOOP), name="x"), lambda x: UOp(Ops.NOOP, arg=z3_alu[x.op](*(s.arg for s in x.src)))), + lambda x,ctx: UOp(Ops.NOOP, arg=(ctx[0], z3.BV2Int(z3_alu[x.op](*(z3.Int2BV(s.arg[1], x.dtype.itemsize*8) for s in x.src)))))), + (UPat(GroupOp.ALU, src=UPat(Ops.NOOP), name="x"), lambda x,ctx: UOp(Ops.NOOP, arg=(ctx[0], z3_alu[x.op](*(s.arg[1] for s in x.src))))), + # A comparison between floats introduces a new bool variable + (UPat(GroupOp.Comparison, src=UPat(dtype=dtypes.floats), name="x"), lambda x,ctx: + UOp(Ops.NOOP, arg=(ctx[0], z3.Bool(f"float_cmp{ctx[1].setdefault(x, len(ctx[1]))}",ctx=ctx[0].ctx)))), ]) + def uops_to_z3(solver, *uops: UOp) -> 'list[z3.ExprRef]': + with Context(TRACK_MATCH_STATS=0): # cant pickle z3 objects + return [s.arg[1] for s in graph_rewrite(uops[0].sink(*uops[1:]), z3_renderer, ctx=(solver, {})).src] + z3_imported = True except (ImportError, AttributeError): z3_imported = False @@ -51,7 +71,7 @@ buffer_spec = PatternMatcher([ assign_spec = PatternMatcher([ # KERNEL can attach to an ASSIGN to describe the compute required to realize a BUFFER - (UPat(Ops.KERNEL, src=UPat((Ops.BUFFER, Ops.BUFFER_VIEW, Ops.ASSIGN, Ops.MSELECT, Ops.MSTACK))), lambda: True), + (UPat(Ops.KERNEL, src=UPat((Ops.BUFFER, Ops.BUFFER_VIEW, Ops.ASSIGN, Ops.MSELECT, Ops.MSTACK, Ops.BIND))), lambda: True), # ASSIGN has a target and a value. It can also optionally depend on other assigns (UPat(Ops.ASSIGN, name="x"), lambda x: len(x.src) >= 2 and all(s.op is Ops.ASSIGN for s in x.src[2:])), @@ -87,6 +107,10 @@ tensor_uop_spec = buffer_spec+assign_spec+PatternMatcher([ (UPat((Ops.DETACH, Ops.CONTIGUOUS, Ops.CONTIGUOUS_BACKWARD, Ops.FUSE), name="root", src=(UPat.var("x"),), arg=None), lambda root,x: root.dtype == x.dtype), + # CONTIGUOUS with a range + (UPat(Ops.CONTIGUOUS, name="root", src=(UPat.var("x"),), allow_any_len=True, arg=None), + lambda root,x: root.dtype == x.dtype and all(u.op is Ops.RANGE for u in root.src[1:])), + # COPY/ALLREDUCE/MULTI (UPat(Ops.COPY, name="copy", src=(UPat.var("x"), UPat(Ops.DEVICE)), arg=None), lambda copy,x: copy.dtype == x.dtype), (UPat(Ops.ALLREDUCE, name="red", src=(UPat.var("x"), UPat(Ops.DEVICE))), lambda red,x: red.dtype == x.dtype and isinstance(red.arg, Ops)), @@ -106,9 +130,8 @@ def validate_index(idx:UOp, gate:UOp=UOp.const(dtypes.bool, True)): if not z3_imported: raise ImportError("z3 is required for bounds checking, try IGNORE_OOB=0 or \"pip install z3-solver\"") solver = z3.Solver(ctx=z3.Context()) - z3_sink = graph_rewrite(idx.src[1].sink(mask), z3_renderer, ctx=(solver, {})) - z3_idx = z3_sink.src[0].arg - solver.add(z3_sink.src[1].arg) + z3_idx, z3_mask = uops_to_z3(solver, idx.src[1], mask) + solver.add(z3_mask) if solver.check((z3_idx<0)|(sz<=z3_idx)) == z3.sat: print(f"idx={idx.src[1].render(simplify=False)}") print(f"mask & gate={mask.render(simplify=False)}") @@ -133,12 +156,12 @@ spec = PatternMatcher([ (UPat(Ops.DEFINE_REG, src=()), lambda: True), (UPat(Ops.DEFINE_VAR, name="x"), lambda x: isinstance(x.arg[1], int) and isinstance(x.arg[2], int)), - (UPat(Ops.RANGE, src=(UPat.var("x"),), name="rng"), lambda rng,x: rng.dtype == x.dtype and isinstance(rng.arg, int)), + (UPat(Ops.RANGE, src=(UPat.var("x"),), name="rng"), lambda rng,x: rng.dtype == x.dtype and isinstance(rng.arg, tuple)), (UPat(Ops.SPECIAL, src=()), lambda: True), - # TODO: confirm the args of both of these are shapetrackers - (UPat(Ops.VIEW, dtypes.void, src=()), lambda: True), - (UPat(Ops.VIEW, src=(UPat.var("src"),), name="x"), lambda x,src: src.op is not Ops.STORE and x.dtype.base == src.dtype.base), + (UPat(Ops.VIEW, dtypes.void, src=(), name="x"), lambda x: isinstance(x.arg, ShapeTracker)), + (UPat(Ops.VIEW, src=(UPat.var("src"),), name="x"), + lambda x,src: isinstance(x.arg, ShapeTracker) and src.op is not Ops.STORE and x.dtype.base == src.dtype.base), (UPat(Ops.VALID, dtypes.bool, (UPat(Ops.VIEW),)), lambda: True), (UPat(Ops.CONST, name="x"), lambda x: type(x.arg) is type(dtypes.as_const(x.arg, x.dtype))), @@ -165,12 +188,12 @@ spec = PatternMatcher([ (UPat(Ops.LOAD, src=(index_pat,), allow_any_len=True), validate_index), # STORE takes a - (UPat(Ops.STORE, dtype=dtypes.void, src=(index_pat, UPat(name="val"), UPat(Ops.IF, name="gate")), allow_any_len=True), validate_store), - (UPat(Ops.STORE, dtype=dtypes.void, src=(index_pat, UPat(name="val")), allow_any_len=True), validate_store), + (UPat(Ops.STORE, src=(index_pat, UPat(name="val"), UPat(Ops.IF, name="gate")), allow_any_len=True), validate_store), + (UPat(Ops.STORE, src=(index_pat, UPat(name="val")), allow_any_len=True), validate_store), # most ALUs have all matching dtypes, except CMPLT, CMPNE, and WHERE (UPat(Ops.WHERE, name="w", src=(UPat(dtype=dtypes.bool), UPat.var("x"), UPat.var("y"))), lambda w,x,y: w.dtype == x.dtype == y.dtype), - (UPat((Ops.CMPLT, Ops.CMPNE), dtype=dtypes.bool, src=(UPat.var("x"), UPat.var("y"))), lambda x,y: x.dtype.base == y.dtype.base), + (UPat((Ops.CMPLT, Ops.CMPNE, Ops.CMPEQ), dtype=dtypes.bool, src=(UPat.var("x"), UPat.var("y"))), lambda x,y: x.dtype.base == y.dtype.base), # and SHL/SHR, the shift distance can be an int (UPat((Ops.SHL, Ops.SHR), src=(UPat.var("x"), UPat.var("y")), name="a"), lambda a,x,y: a.dtype == x.dtype and y.dtype in (x.dtype, dtypes.uint)), (UPat((Ops.IDIV, Ops.MOD), name="x"), lambda x: None if dtypes.is_int(x.dtype) else False), @@ -206,16 +229,7 @@ spec = PatternMatcher([ # *** this is the UOp AST spec *** -def verify_sink_dims(sink:UOp): - if not all_same([s.shape for s in sink.src]): return False - for dims in zip(*[x.shape for x in sink.toposort() if x.op is Ops.VIEW]): - if len(n_dims:={s for s in dims if resolve(s!=1)}) > 1: - print(f"# INVALID KERNEL DIMS: can only have 1 or n in each dimension: {n_dims}") - return False - ast_spec = PatternMatcher([ - # shapes must have either 1 or n in each dimension - (UPat(Ops.SINK, src=UPat(Ops.STORE), name="sink"), verify_sink_dims), # VIEW can only exist in the edges (UPat(Ops.VIEW, src=(UPat((Ops.DEFINE_GLOBAL, Ops.DEFINE_LOCAL),))), lambda: True), (UPat(Ops.VIEW, name="view"), lambda view: len(view.src) == 0), @@ -231,4 +245,4 @@ def type_verify(uops:list[UOp], extra_spec:PatternMatcher|None=None): with Context(TRACK_MATCH_STATS=0): ret = check_spec.rewrite(u) if cast(bool|None, ret) is not True: if DEBUG >= 3: print_uops(uops) - raise RuntimeError(f"UOp verification failed at {i} on {u.op} {u.dtype} {len(u.src)} {[x.op for x in u.src]} {u.arg}") + raise RuntimeError(f"UOp verification failed at {i} on {u.op} {u.dtype} {len(u.src)} {[(x.op, x.dtype, x.arg) for x in u.src]} {u.arg}") diff --git a/tinygrad_repo/tinygrad/uop/symbolic.py b/tinygrad_repo/tinygrad/uop/symbolic.py index 867b1b61b..4d3506704 100644 --- a/tinygrad_repo/tinygrad/uop/symbolic.py +++ b/tinygrad_repo/tinygrad/uop/symbolic.py @@ -1,11 +1,11 @@ # all of symbolic lives here now -from typing import Any, Literal, cast +from typing import cast import math, operator, struct, functools from collections import defaultdict from tinygrad.uop.ops import Ops, PatternMatcher, UPat, UOp, GroupOp, exec_alu -from tinygrad.dtype import ConstType, dtypes, PtrDType, AddrSpace +from tinygrad.dtype import ConstType, dtypes, PtrDType, AddrSpace, can_safe_cast from tinygrad.helpers import partition, all_same, prod, flatten, get_single_element, cdiv, cmod, CORRECT_DIVMOD_FOLDING -from tinygrad.uop.transcendental import xpow +from tinygrad.uop.decompositions import xpow # ******** phase 1 of symbolic used to live in ops, it's the most generic folding rules ******** @@ -19,7 +19,7 @@ def simplify_pow(x:UOp, c:UOp) -> UOp|None: def fold_bitcast(root:UOp, c:UOp) -> UOp|None: if (from_fmt:=c.dtype.scalar().fmt) is None or (to_fmt:=root.dtype.scalar().fmt) is None: return None if c.dtype.itemsize != root.dtype.itemsize: return None - def convert(v:Any): return struct.unpack(to_fmt, struct.pack(from_fmt, v))[0] + def convert(v:ConstType): return struct.unpack(to_fmt, struct.pack(from_fmt, v))[0] return root.const_like(convert(c.arg) if root.dtype.count == 1 else tuple(map(convert, c.arg))) symbolic_simple = PatternMatcher([ @@ -41,6 +41,8 @@ symbolic_simple = PatternMatcher([ (UPat(GroupOp.Idempotent, src=(UPat.var("x"), UPat.var("x"))), lambda x: x), (UPat.var("x", dtype=dtypes.bool).logical_not().logical_not(), lambda x: x), (UPat.var("x", dtype=dtypes.bool).where(UPat.const(dtypes.bool, True), UPat.const(dtypes.bool, False)), lambda x: x), + (UPat.var("x", dtype=dtypes.bool).where(UPat.const(dtypes.bool, False), UPat.const(dtypes.bool, True)), lambda x: x.logical_not()), + (UPat.var("x", dtype=dtypes.ints+(dtypes.bool,)).trunc(), lambda x: x), # ** zero folding ** (UPat.var("x") < UPat.var("x"), lambda x: x.const_like(False).cast(dtypes.bool.vec(x.dtype.count))), # x < x -> False (UPat.var("x") % UPat.var("x"), lambda x: x.const_like(0)), # x%x -> 0 @@ -65,10 +67,28 @@ symbolic_simple = PatternMatcher([ (UPat(Ops.CAST, name="root", src=(UPat.cvar("c"),)), lambda root, c: root.const_like(c.arg)), (UPat((Ops.CAST, Ops.BITCAST), name="root"), lambda root: root.src[0] if root.dtype == root.src[0].dtype else None), (UPat(Ops.BITCAST, name="root", src=(UPat.cvar("c"),)), fold_bitcast), + # b.cast(a).cast(b) -> b if a preserves all values in b + (UPat.var('x').cast(name="a").cast(name="b"), lambda x,a,b: x if x.dtype == b.dtype and can_safe_cast(b.dtype, a.dtype) else None), + # if the intermediate cast doesnt narrow we can do it in one cast, we have to be carefull with bfloat16 + (UPat.var('x').cast(name="a").cast(name="b"), lambda x,a,b: x.cast(b.dtype) if can_safe_cast(x.dtype, a.dtype) and + not (a.dtype==dtypes.float and (b.dtype==dtypes.bfloat16 or x.dtype==dtypes.bfloat16)) else None), # ** pow ** (UPat.var("x").alu(Ops.POW, UPat.cvar("c", vec=False)), simplify_pow), # positive const ** x (UPat.cvar("c", vec=False).alu(Ops.POW, UPat.var("x")), lambda c,x: c if c.arg == 1 else (x*math.log2(c.arg)).exp2() if c.arg > 0 else None), + # rules for threefry + ((UPat.var('x', dtypes.uint64)&0xFFFFFFFF).cast(dtypes.uint32), lambda x: x.cast(dtypes.uint32)&0xFFFFFFFF), # TODO: why is the and needed? + (((UPat.var(None, dtypes.uint64)*(1<<32)) | UPat.var('y', dtypes.uint32).cast(dtypes.uint64)).cast(dtypes.uint32), lambda y: y), + (((UPat.var('x', dtypes.uint64)*(1<<32)) | UPat.var(None, dtypes.uint32).cast(dtypes.uint64))//(1<<32), lambda x: x), + # hacks for threefry long removal when padded (TODO: genericize) + (UPat.var('x', dtypes.uint32).cast(dtypes.uint64) * UPat.var('y').where(UPat.const(dtypes.uint64, 1<<32), UPat.const(dtypes.uint64, 0)), + lambda x,y: y.where(x, 0).cast(dtypes.uint64) * (1<<32)), + ((UPat.var('x', dtypes.uint64)&(UPat.var('y').where(UPat.const(dtypes.uint64, 0xFFFFFFFF), UPat.const(dtypes.uint64, 0)))).cast(dtypes.uint32), + lambda x,y: y.where(x.cast(dtypes.uint32), 0)), + # new decomp rules for threefry + (((UPat.var(None, dtypes.uint64)<<32) | UPat.var('y', dtypes.uint32).cast(dtypes.uint64)).cast(dtypes.uint32), lambda y: y), + (((UPat.var('x', dtypes.uint64)<<32) | UPat.var(None, dtypes.uint32).cast(dtypes.uint64))>>32, lambda x: x), + (UPat.var('b').where(UPat.var('x', dtypes.uint32).cast(dtypes.uint64), UPat.const(dtypes.uint64, 0)).cast(dtypes.uint32), lambda b,x: b.where(x,0)) ]) # ******** phase 2 builds on phase 1, it includes the old "symbolic", rules that match deeper ******** @@ -123,65 +143,91 @@ def canonicalize_simplex(X:UOp) -> UOp|None: ret.append(u) return functools.reduce(operator.add, ret) if changed else None -def div_and_mod_folding(x: UOp, y: UOp, which: Literal[Ops.MOD, Ops.IDIV], split_rem: bool=False) -> UOp|None: - # simplify x // y or x % y, None means no change - # simple cancel div/mod case +def cancel_divmod(d: UOp, x: UOp, y: UOp) -> UOp|None: + # simple cancel div/mod case when the range of the numerator lies within a single denominator interval x_min, x_max, y_min, y_max = x.vmin, x.vmax, y.vmin, y.vmax assert isinstance(x_min, int) and isinstance(x_max, int) and isinstance(y_min, int) and isinstance(y_max, int) - + if y_min==y_max==0: raise ZeroDivisionError(f"{'Division' if d.op is Ops.IDIV else 'Mod'} by zero trying to rewrite {x.alu(d.op, y)}") if y_min*y_max > 0 and (q:=cdiv(x_min,y_min)) == cdiv(x_min,y_max) == cdiv(x_max,y_min) == cdiv(x_max,y_max): - return x - q*y if which is Ops.MOD else x.const_like(q) + return x - q*y if d.op is Ops.MOD else d.const_like(q) + return None - if (y.op is not Ops.CONST) or ((c := y.arg) < 0) or (x.dtype.count > 1): return None - if y.arg == 0: raise ZeroDivisionError(f"{'Division' if which is Ops.IDIV else 'Mod'} by zero trying to rewrite {x.alu(which, y)}") - - svars, factors, quotients, remainders, gcd, div, const, something_changed = [], [], [], [], c, 1, 0, False +def remove_nested_mod(m: UOp, x: UOp, y: UOp) -> UOp|None: + # remove nested mod in case the inner mod is a multiple of the outer mod + # example: (a%4 + b)%2 -> (a+b)%2 + if ((c := y.arg) < 0) or x.vmin<0: return None + new_xs = [] + something_changed = False for u in split_uop(x, Ops.ADD): - if u.op is Ops.MOD and which is Ops.MOD and u.src[1].op is Ops.CONST and u.src[1].arg%c == 0: - u = u.src[0] - something_changed = True - v: UOp = u.divides(f:=u.const_factor()) - q, r = divmod(f, c) - if r==0 or ((which is Ops.MOD or split_rem or u.op is Ops.CONST) and r!=f): something_changed = True - if u.op is Ops.CONST: const += f - else: # div is the smallest common divisor of all terms - if f > 1 and c % f == 0 and (div == 1 or div > f): div = f - gcd = math.gcd(r, gcd) - factors.append(f); svars.append(v); quotients.append(q); remainders.append(r) # noqa: E702 + if u.op is Ops.MOD: + if u.src[1].divides(c) is not None: + something_changed = True + u = u.src[0] + new_xs.append(u) + new_x: UOp = functools.reduce(operator.add, new_xs) + if something_changed and new_x.vmin>=0: return new_x % y + return None +def fold_binary_numerator(d: UOp, x: UOp, y: UOp) -> UOp|None: # we can fold if the expression has only one non-constant term and this term can only take on two values - if len(svars)==1 and (v:=svars[0]).vmax-v.vmin == 1: - y1 = cmod(factors[0]*v.vmin+const, c) if which is Ops.MOD else cdiv(factors[0]*v.vmin+const, c) - y2 = cmod(factors[0]*v.vmax+const, c) if which is Ops.MOD else cdiv(factors[0]*v.vmax+const, c) + if ((c := y.arg) < 0) or (x.dtype.count > 1): return None + x,const = x.pop_const() + terms, factors = zip(*[(u.divides(f:=u.const_factor()),f) for u in split_uop(x, Ops.ADD)]) + if len(terms)==1 and (v:=terms[0]).vmax-v.vmin == 1: + y1 = cmod(factors[0]*v.vmin+const, c) if d.op is Ops.MOD else cdiv(factors[0]*v.vmin+const, c) # type: ignore + y2 = cmod(factors[0]*v.vmax+const, c) if d.op is Ops.MOD else cdiv(factors[0]*v.vmax+const, c) # type: ignore return (y2-y1)*(v-v.vmin) + y1 + return None - if not CORRECT_DIVMOD_FOLDING or x_min>=0: - # a//c = (a-a%c)/c, if we can fold a%c, we can fold a//c - # within a mod we can freely subtract multiples of c, we use this to see if a is congruent to an expression whose vmin/vmax are between 0 and c - rems = [min(r, r-c, key=abs) for r in remainders] - if (rem:=sum(r*v for r,v in zip(rems,svars))+const%c).vmin//c==rem.vmax//c and all(f > 0 for f in factors): - if which is Ops.MOD: return rem - rem.vmin//c*c - return sum((f-r)//c * v for f,r,v in zip(factors,rems,svars)) + (const-const%c+rem.vmin//c*c)//c +def fold_divmod_congruence(d: UOp, x: UOp, y: UOp) -> UOp|None: + # within a mod we can freely subtract multiples of c, we use this to see if a is congruent to an expression whose vmin/vmax are between 0 and c + if (x.vmin<0 and CORRECT_DIVMOD_FOLDING) or ((c := y.arg) < 0) or (x.dtype.count > 1): return None + x,const = x.pop_const() + terms, factors = zip(*[(u.divides(f:=u.const_factor()),f) for u in split_uop(x, Ops.ADD)]) + # a//c = (a-a%c)/c, if we can fold a%c, we can fold a//c + rems = [min((r:=f%c), r-c, key=abs) for f in factors] + if (rem:=sum(r*v for r,v in zip(rems,terms))+const%c).vmin//c!=rem.vmax//c: return None + if d.op is Ops.MOD: return rem - rem.vmin//c*c + return sum((f-r)//c * v for f,r,v in zip(factors,rems,terms)) + (const-const%c+rem.vmin//c*c)//c - if (g:=math.gcd(gcd, const))!=1: - ret = UOp(which, x.dtype, src=(sum(f//g * v for f,v in zip(factors, svars)) + const//g, x.const_like(c//g))) - return ret*g if which is Ops.MOD else ret +def divide_by_gcd(d: UOp, x: UOp, y: UOp) -> UOp|None: + # x//y -> (x//gcd)//(y//gcd) or x%y -> gcd*(x//gcd)%(y//gcd) + terms, factors = zip(*[(u.divides(f:=u.const_factor()),f) for u in split_uop(x, Ops.ADD)]) + if (gcd := math.gcd(y.arg, *factors)) == 1: return None + ret = sum(f//gcd * v for f,v in zip(factors, terms)).alu(d.op, y.const_like(y.arg//gcd)) + return ret*gcd if d.op is Ops.MOD else ret + +def nest_div_by_smallest_factor(d: UOp, x: UOp, y: UOp) -> UOp|None: + # we try and nest the div and see if it allows the numerator to be simplified + if ((c := y.arg) < 0) or (x.dtype.count > 1): return None + factors = [u.const_factor() for u in split_uop(x.pop_const()[0], Ops.ADD)] + # div is the smallest factor of the denominator (greater than 1) out of all "factors" + # TODO: there are better ways to pick `div`, this sometimes adds extra divisions + # TODO: add same optimization for mod + div = min([y.arg]+[abs(f) for f in factors if abs(f) > 1 and (c%f)==0]) + if (1 < div < c) and (newxs:=(newx:=(x//div)).simplify()) is not newx and x.vmin>=0 and newx.vmin>=0: return newxs//(c//div) + return None + +def simplify_remainder(d: UOp, x: UOp, y: UOp) -> UOp|None: + # we try and take out the quotient and see if it allows the numerator to be simplified + if ((c := y.arg) < 0) or (x.dtype.count > 1): return None + x_no_const,const = x.pop_const() + terms, factors = zip(*[(u.divides(f:=u.const_factor()),f) for u in split_uop(x_no_const, Ops.ADD)]) + quotients, remainders = zip(*[divmod(f, c) for f in factors]) + gcd = math.gcd(c, *remainders) # gcd without const! + if const%c==const and gcd==1 and not any(r==0 or (r!=f and d.op is Ops.MOD) for r,f in zip(remainders, factors)): return None - if gcd != 1: something_changed = True - if not something_changed: - if which is Ops.IDIV and (1 < div < c) and (newx:=div_and_mod_folding(x, x.const_like(div), Ops.IDIV)) is not None: return newx//(c//div) - return None quo, rem = x.const_like(const//c), x.const_like((const%c)//gcd) - for q,r,f,v in zip(quotients, remainders, factors, svars): - if which is Ops.IDIV and (not split_rem) and r!=0: + for q,r,f,v in zip(quotients, remainders, factors, terms): + if d.op is Ops.IDIV and r!=0: rem += f//gcd * v else: rem += r//gcd * v quo += q * v # if numerator before/after is negative, and it has remainder, don't simplify because C divmod is different from python divmod. - if (x_min < 0 or rem.vmin < 0) and remainders: return None - if which is Ops.MOD: return gcd*(rem % (c//gcd)) + const%gcd + if (x.vmin < 0 or rem.vmin < 0) and remainders: return None + if d.op is Ops.MOD: return gcd*(rem % (c//gcd)) + const%gcd return rem//(c//gcd)+quo def gep_through_wmma(gep:UOp, wmma:UOp): @@ -199,18 +245,18 @@ def gep_through_wmma(gep:UOp, wmma:UOp): gep_pushing = PatternMatcher([ # GEP/VECTORIZE, GEP/GEP, GEP/CONST, GEP/VCONST - (UPat(Ops.GEP, src=(UPat(Ops.GEP, name='g2'),), name='g1'), + (UPat(Ops.GEP, name='g2').f(Ops.GEP, name='g1'), lambda g1, g2: g2.src[0].gep(tuple(g2.arg[g1.arg[i]] for i in range(len(g1.arg))))), - (UPat(Ops.GEP, src=(UPat(Ops.VECTORIZE, name="vec"),), name="gep"), + (UPat(Ops.VECTORIZE, name='vec').f(Ops.GEP, name='gep'), lambda gep, vec: UOp(Ops.VECTORIZE, gep.dtype, tuple(vec.src[i] for i in gep.arg)) if len(gep.arg) > 1 else vec.src[gep.arg[0]]), - (UPat(Ops.GEP, src=(UPat.cvar("c", vec=False),), name="gep"), lambda gep, c: gep.const_like(c.arg)), - (UPat(Ops.GEP, src=(UPat(Ops.VCONST, name="c"),), name="gep"), lambda gep, c: gep.const_like(tuple(c.arg[x] for x in gep.arg))), + (UPat.cvar("c", vec=False).f(Ops.GEP, name="gep"), lambda gep, c: gep.const_like(c.arg)), + (UPat(Ops.VCONST, name="c").f(Ops.GEP, name="gep"), lambda gep, c: gep.const_like(tuple(c.arg[x] for x in gep.arg))), # GEP on void is skipped (UPat(Ops.GEP, src=(UPat(dtype=dtypes.void, name="x"),)), lambda x: x), # GEP in order is removed (UPat(Ops.GEP, name="g"), lambda g: g.src[0] if not isinstance(g.dtype, PtrDType) and g.arg == tuple(range(g.src[0].dtype.count)) else None), # push all GEPs through ALUs (fix arange stuff) - (UPat(Ops.GEP, src=(UPat((*GroupOp.ALU, Ops.CAST, Ops.BITCAST), name='alu'),), name='gep'), + (UPat((*GroupOp.ALU, Ops.CAST, Ops.BITCAST), name='alu').f(Ops.GEP, name='gep'), lambda gep,alu: UOp(alu.op, alu.dtype.scalar().vec(gep.dtype.count), tuple(x.gep(gep.arg) for x in alu.src), alu.arg) \ if not isinstance(gep.dtype, PtrDType) else None), # CAT can't be rendered. it's a VECTORIZE on vectors, we expand to a single VECTORIZEs with GEPs (TODO: move this later) @@ -219,7 +265,7 @@ gep_pushing = PatternMatcher([ # VECTORIZE on same GEP (UPat(Ops.VECTORIZE, name="v", src=UPat(Ops.GEP, src=(UPat.var("x"),))), lambda v,x: x.gep(tuple(get_single_element(i.arg) for i in v.src))), # push some GEPs through WMMAs - (UPat(Ops.GEP, src=(UPat(Ops.WMMA, name="wmma"),), name="gep"), gep_through_wmma), + (UPat(Ops.WMMA, name="wmma").f(Ops.GEP, name="gep"), gep_through_wmma), ]) commutative = PatternMatcher([ @@ -236,10 +282,13 @@ symbolic = symbolic_simple+commutative+PatternMatcher([ ((UPat.var("y") + UPat.var("x") * UPat.cvar("c0")) + UPat.var("x") * UPat.cvar("c1"), lambda x,y,c0,c1: y+x*(c0+c1)), (UPat.var("x") + UPat.var("x") * UPat.cvar("c"), lambda x,c: x*(c+1)), # (x+x*c)-> x*(c+1) ((UPat.var("y") + UPat.var("x")) + UPat.var("x") * UPat.cvar("c"), lambda x,y,c: y+x*(c+1)), + ((UPat.var("y") + UPat.var("x") * UPat.cvar("c")) + UPat.var("x"), lambda x,y,c: y+x*(c+1)), (UPat.var("x") + UPat.var("x"), lambda x: x*2), # (x+x)-> x*2 ((UPat.var("y") + UPat.var("x")) + UPat.var("x"), lambda y,x: y+x*2), ((UPat.var("x") / UPat.var("x2")) / UPat.var("x3"), lambda x,x2,x3: x/(x2*x3) if x2 is not x3 else None), # (x/x2)/x3 -> x/(x2*x3) (-1 * (UPat.var("x") + UPat.cvar("c")), lambda x,c: (-x)+(-c)), # -(x+c) -> -x + -c + (UPat.var('x', dtypes.ints).cast(dtypes.ints, name="a").cast(dtypes.ints, name="b"), + lambda x,a,b: x.cast(b.dtype) if a.dtype.min<=x.vmin and x.vmax<=a.dtype.max else None), # a conditional with the same results either way is a noop, also fold const conditionals (UPat.var().where(UPat.var("val"), UPat.var("val")), lambda val: val), (UPat.cvar("gate", vec=False).where(UPat.var("c0"), UPat.var("c1")), lambda gate, c0, c1: c0 if gate.arg else c1), @@ -247,6 +296,9 @@ symbolic = symbolic_simple+commutative+PatternMatcher([ # alu of two where with same conds can combine, only do if true branch or false branch is const (UPat(GroupOp.Binary, name="alu", src=(UPat.var("c").where(UPat.var("t"), UPat.var("f")), UPat.var("c").where(UPat.var("tt"), UPat.var("ff")))), \ lambda alu,c,t,tt,f,ff: c.where(t.alu(alu.op, tt), f.alu(alu.op, ff)) if t.op == tt.op == Ops.CONST or f.op == ff.op == Ops.CONST else None), + # if its a plus we add the associative variation too + ((UPat.var("y")+UPat.var("c").where(UPat.var("t"), UPat.var("f"))) + UPat.var("c").where(UPat.var("tt"), UPat.var("ff")), \ + lambda y,c,t,tt,f,ff: y+c.where(t+tt, f+ff) if t.op == tt.op == Ops.CONST or f.op == ff.op == Ops.CONST else None), # ALU/variable min==max -> CONST (slow!) (UPat(GroupOp.ALU|{Ops.DEFINE_VAR, Ops.SPECIAL, Ops.RANGE}, name="x"), lambda x: x.const_like(x.vmin) if x.vmin == x.vmax else None), # max folding @@ -286,15 +338,24 @@ symbolic = symbolic_simple+commutative+PatternMatcher([ # div folding ((UPat.var("x")//UPat.cvar("c") + UPat.cvar("a"))//UPat.cvar("d"), lambda x,c,a,d: (x+a*c)//(c*d) if c.vmin>0 and d.vmin>0 and ((x.vmin>=0 and a.vmin>=0) or (x.vmax<=0 and a.vmax<=0)) else None), # (x//c+a)//d -> (x+a*c)//(c*d) - (UPat.var("x", dtypes.sints) // UPat.var("y"), lambda x,y: div_and_mod_folding(x,y,Ops.IDIV)), + # a range mod its own upper bound is just the range + (UPat(Ops.RANGE, src=UPat.var("end"), name="r")%UPat.var("end"), lambda r,end: r), + (UPat(Ops.RANGE, src=UPat.var("end"), name="r")//UPat.var("end"), lambda r,end: r.const_like(0)), + (UPat((Ops.IDIV, Ops.MOD), dtypes.sints, name="d", src=(UPat.var("x"), UPat.var("y"))), cancel_divmod), + (UPat((Ops.IDIV, Ops.MOD), dtypes.sints, name="d", src=(UPat.var("x"), UPat.cvar("y", vec=False))), fold_binary_numerator), + (UPat((Ops.IDIV, Ops.MOD), dtypes.sints, name="d", src=(UPat.var("x"), UPat.cvar("y", vec=False))), fold_divmod_congruence), + (UPat((Ops.IDIV, Ops.MOD), dtypes.sints, name="d", src=(UPat.var("x"), UPat.cvar("y", vec=False))), divide_by_gcd), + (UPat(Ops.MOD, dtypes.sints, name="m", src=(UPat.var("x"), UPat.cvar("y", vec=False))), remove_nested_mod), + (UPat((Ops.IDIV), dtypes.sints, name="d", src=(UPat.var("x"), UPat.cvar("y", vec=False))), nest_div_by_smallest_factor), + (UPat((Ops.IDIV, Ops.MOD), dtypes.sints, name="d", src=(UPat.var("x"), UPat.cvar("y", vec=False))), simplify_remainder), (UPat.var("x") // UPat.var("d"), lambda x,d: -(x//(-d)) if d.vmax < 0 else None), (UPat.var("x") // UPat.var("d"), lambda x,d: -((-x)//d) if x.vmax <=0 else None), ((UPat.var("x", dtypes.sints)+UPat.cvar("c", vec=False)).named("n")//UPat.cvar("d", vec=False), lambda x,c,n,d: (-(-(c.arg%d.arg + x - (d.arg-1))//d) + c.arg//d.arg) if x.vmax<=0 and n.vmin>=0 and d.arg>0 else None), # ** mod ** # mod folding - (UPat.var("x") % UPat.var("y"), lambda x,y: div_and_mod_folding(x,y,Ops.MOD)), - (UPat.var("x") % UPat.var("d"), lambda x,d: -((-x)%d) if x.vmax <=0 else None), + (UPat.var("x") % UPat.var("d"), lambda x,d: -((-x)%d) if x.vmax <= 0 else None), + (UPat.var("x") % UPat.var("d"), lambda x,d: (x%(-d)) if d.vmax < 0 else None), ])+gep_pushing symbolic_flat = symbolic+PatternMatcher([ @@ -375,22 +436,6 @@ def simplify_valid(valid:UOp) -> UOp|None: if ret[-1] is not stmt: something_changed = True return functools.reduce(operator.and_, ret) if something_changed else None -# ***** threefry ***** - -def threefry2x32(x: UOp, key: UOp): - # split x and key from uint64 to two uint32 - x0, x1 = (x & 0xffffffff).cast(dtypes.uint32), ((x // 2**32) & 0xffffffff).cast(dtypes.uint32) - key0, key1 = (key & 0xffffffff).cast(dtypes.uint32), ((key // 2**32) & 0xffffffff).cast(dtypes.uint32) - - rotations = [[13, 15, 26, 6], [17, 29, 16, 24]] - ks = [key1, key0 ^ key1 ^ 0x1BD11BDA, key0] - xr = [x0 + ks[-1], x1 + ks[0]] - for i in range(5): - for r in rotations[i % 2]: xr[0], xr[1] = (x0 := xr[0] + xr[1]), x0 ^ ((xr[1] * 2**r) + (xr[1] // 2**(32 - r))) - xr = [(xr[0] + ks[i % 3]), (xr[1] + ks[(i + 1) % 3] + i + 1)] - - return xr[1].cast(dtypes.uint64) * 2**32 | xr[0].cast(dtypes.uint64) - # ******** phase 3 is the complete symbolic, and deals with very complex things like loop rewriting and threefry transform ******** def reduce_mul_chain(r:UOp): @@ -425,17 +470,6 @@ sym = symbolic_flat+PatternMatcher([ # tensor core with a 0 input is acc (UPat(Ops.WMMA, src=(UPat.const(None, 0.0), UPat.var(), UPat.var("acc"))), lambda acc: acc), (UPat(Ops.WMMA, src=(UPat.var(), UPat.const(None, 0.0), UPat.var("acc"))), lambda acc: acc), - # threefry + remove longs - (UPat(Ops.THREEFRY, dtype=dtypes.uint64, src=(UPat.var("x"), UPat.var("key"))), threefry2x32), - (UPat.var('x', dtypes.uint32).cast(dtypes.uint64).cast(dtypes.uint32), lambda x: x), # cast there and back is noop (TODO: genericize) - ((UPat.var('x', dtypes.uint64)&0xFFFFFFFF).cast(dtypes.uint32), lambda x: x.cast(dtypes.uint32)), # cast does truncation - (((UPat.var(None, dtypes.uint64)*(1<<32)) | UPat.var('y', dtypes.uint32).cast(dtypes.uint64)).cast(dtypes.uint32), lambda y: y), - (((UPat.var('x', dtypes.uint64)*(1<<32)) | UPat.var(None, dtypes.uint32).cast(dtypes.uint64))//(1<<32), lambda x: x), - # hacks for threefry long removal when padded (TODO: genericize) - (UPat.var('x', dtypes.uint32).cast(dtypes.uint64) * UPat.var('y').where(UPat.const(dtypes.uint64, 1<<32), UPat.const(dtypes.uint64, 0)), - lambda x,y: y.where(x, UOp.const(dtypes.uint32, 0)).cast(dtypes.uint64) * (1<<32)), - ((UPat.var('x', dtypes.uint64)&(UPat.var('y').where(UPat.const(dtypes.uint64, 0xFFFFFFFF), UPat.const(dtypes.uint64, 0)))).cast(dtypes.uint32), - lambda x,y: y.where(x.cast(dtypes.uint32), UOp.const(dtypes.uint32, 0))), # ** self folding ** # x!=0 -> (bool)x (UPat.var("x")!=0, lambda x: x.cast(dtypes.bool.vec(x.dtype.count))), @@ -466,6 +500,7 @@ sym = symbolic_flat+PatternMatcher([ if any(x.op in REMOVE_FROM_SINK for x in root.src) else None), ((UPat.var("x") * UPat.var("x")).reciprocal(), lambda x: x.reciprocal()*x.reciprocal()), # 1/(x^c) -> (1/x)^c ((UPat.var("x") * UPat.var("x") * UPat.var("x")).reciprocal(), lambda x: x.reciprocal()*x.reciprocal()*x.reciprocal()), + ((UPat.var("x") * UPat.cvar("c")).reciprocal(), lambda x,c: x.reciprocal()*c.reciprocal()), # 1/(x*c) -> (1/c)*(1/x) (UPat.var("x") * ((1+UPat.var("x")).reciprocal().named("d")), lambda x,d: 1-d), # x*/(1+x) -> 1-1/(1+x) (UPat.var("x") * ((1+UPat.var("x")).reciprocal().named("d")*UPat.var("y")), lambda x,y,d: y*(1-d)), (UPat.var("x") * ((1+UPat.var("x")).reciprocal().named("d")+UPat.var("y")), lambda x,y,d: (1-d)+x*y), diff --git a/tinygrad_repo/tinygrad/viz/assets/cdnjs.cloudflare.com/ajax/libs/highlight.js/11.10.0/languages/x86asm.min.js b/tinygrad_repo/tinygrad/viz/assets/cdnjs.cloudflare.com/ajax/libs/highlight.js/11.10.0/languages/x86asm.min.js new file mode 100644 index 000000000..03f594459 --- /dev/null +++ b/tinygrad_repo/tinygrad/viz/assets/cdnjs.cloudflare.com/ajax/libs/highlight.js/11.10.0/languages/x86asm.min.js @@ -0,0 +1,19 @@ +/*! `x86asm` grammar compiled for Highlight.js 11.10.0 */ +(()=>{var s=(()=>{"use strict";return s=>({name:"Intel x86 Assembly", +case_insensitive:!0,keywords:{$pattern:"[.%]?"+s.IDENT_RE, +keyword:"lock rep repe repz repne repnz xaquire xrelease bnd nobnd aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63", +built_in:"ip eip rip al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 cs ds es fs gs ss st st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 k0 k1 k2 k3 k4 k5 k6 k7 bnd0 bnd1 bnd2 bnd3 cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d r0h r1h r2h r3h r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l db dw dd dq dt ddq do dy dz resb resw resd resq rest resdq reso resy resz incbin equ times byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr", +meta:"%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif %if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep %endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment .nolist __FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ __UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend align alignb sectalign daz nodaz up down zero default option assume public bits use16 use32 use64 default section segment absolute extern global common cpu float __utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ __float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ __Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__" +},contains:[s.COMMENT(";","$",{relevance:0}),{className:"number",variants:[{ +begin:"\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|(0[Xx])?[0-9][0-9_]*(\\.[0-9_]*)?(?:[pP](?:[+-]?[0-9_]+)?)?)\\b", +relevance:0},{begin:"\\$[0-9][0-9A-Fa-f]*",relevance:0},{ +begin:"\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b" +},{ +begin:"\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b" +}]},s.QUOTE_STRING_MODE,{className:"string",variants:[{begin:"'",end:"[^\\\\]'" +},{begin:"`",end:"[^\\\\]`"}],relevance:0},{className:"symbol",variants:[{ +begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)"},{ +begin:"^\\s*%%[A-Za-z0-9_$#@~.?]*:"}],relevance:0},{className:"subst", +begin:"%[0-9]+",relevance:0},{className:"subst",begin:"%!S+",relevance:0},{ +className:"meta",begin:/^\s*\.[\w_-]+/}]})})();hljs.registerLanguage("x86asm",s) +})(); \ No newline at end of file diff --git a/tinygrad_repo/tinygrad/viz/fetch_assets.sh b/tinygrad_repo/tinygrad/viz/fetch_assets.sh index ae4720ce8..8bb6a3cd5 100644 --- a/tinygrad_repo/tinygrad/viz/fetch_assets.sh +++ b/tinygrad_repo/tinygrad/viz/fetch_assets.sh @@ -10,5 +10,6 @@ fetch "dagrejs.github.io/project/dagre/latest/dagre.min.js" fetch "cdnjs.cloudflare.com/ajax/libs/highlight.js/11.10.0/styles/default.min.css" fetch "cdnjs.cloudflare.com/ajax/libs/highlight.js/11.10.0/highlight.min.js" fetch "cdnjs.cloudflare.com/ajax/libs/highlight.js/11.10.0/languages/python.min.js" +fetch "cdnjs.cloudflare.com/ajax/libs/highlight.js/11.10.0/languages/x86asm.min.js" fetch "cdnjs.cloudflare.com/ajax/libs/highlight.js/11.10.0/languages/cpp.min.js" fetch "unpkg.com/@highlightjs/cdn-assets@11.10.0/styles/tokyo-night-dark.min.css" diff --git a/tinygrad_repo/tinygrad/viz/index.html b/tinygrad_repo/tinygrad/viz/index.html index 4c3effc75..23e61798a 100644 --- a/tinygrad_repo/tinygrad/viz/index.html +++ b/tinygrad_repo/tinygrad/viz/index.html @@ -10,6 +10,7 @@ + @@ -237,9 +343,10 @@ -
+
+
@@ -249,7 +356,7 @@ - + diff --git a/tinygrad_repo/tinygrad/viz/js/index.js b/tinygrad_repo/tinygrad/viz/js/index.js index e4a8ec3ce..1ff74def4 100644 --- a/tinygrad_repo/tinygrad/viz/js/index.js +++ b/tinygrad_repo/tinygrad/viz/js/index.js @@ -4,12 +4,31 @@ const displayGraph = (cls) => { for (const e of document.getElementsByClassName("view")) e.style.display = e.classList.contains(cls) ? "flex" : "none"; } +const darkenHex = (h, p = 0) => + `#${( + c = parseInt(h.slice(1), 16), + f = 1 - p / 100, + ((c >> 16 & 255) * f | 0) << 16 | + ((c >> 8 & 255) * f | 0) << 8 | + ((c & 255) * f | 0) + ).toString(16).padStart(6, '0')}`; + const ANSI_COLORS = ["#b3b3b3", "#ff6666", "#66b366", "#ffff66", "#6666ff", "#ff66ff", "#66ffff", "#ffffff"]; const parseColors = (name, defaultColor="#ffffff") => Array.from(name.matchAll(/(?:\u001b\[(\d+)m([\s\S]*?)\u001b\[0m)|([^\u001b]+)/g), ([_, code, colored_st, st]) => ({ st: colored_st ?? st, color: code != null ? ANSI_COLORS[(parseInt(code)-30+60)%60] : defaultColor })); const rect = (s) => (typeof s === "string" ? document.querySelector(s) : s).getBoundingClientRect(); +let timeout = null; +const updateProgress = ({ show=true }) => { + clearTimeout(timeout); + const msg = document.getElementById("progress-message"); + if (show) { + msg.innerText = "Rendering new graph..."; + timeout = setTimeout(() => { msg.style.display = "block"; }, 2000); + } else msg.style.display = "none"; +} + // ** UOp graph function intersectRect(r1, r2) { @@ -22,13 +41,15 @@ function intersectRect(r1, r2) { return {x:r1.x+dx*scale, y:r1.y+dy*scale}; } -let [workerUrl, worker, timeout] = [null, null, null]; +function addTags(root) { + root.selectAll("circle").data(d => [d]).join("circle").attr("r", 5); + root.selectAll("text").data(d => [d]).join("text").text(d => d).attr("dy", "0.35em"); +} + +let [workerUrl, worker] = [null, null]; async function renderDag(graph, additions, recenter=false) { // start calculating the new layout (non-blocking) - const progressMessage = document.querySelector(".progress-message"); - progressMessage.innerText = "Rendering new graph..."; - if (timeout != null) clearTimeout(timeout); - timeout = setTimeout(() => {progressMessage.style.display = "block"}, 2000); + updateProgress({ show:true }); if (worker == null) { const resp = await Promise.all(["/assets/dagrejs.github.io/project/dagre/latest/dagre.min.js","/js/worker.js"].map(u => fetch(u))); workerUrl = URL.createObjectURL(new Blob([(await Promise.all(resp.map((r) => r.text()))).join("\n")], { type: "application/javascript" })); @@ -40,16 +61,27 @@ async function renderDag(graph, additions, recenter=false) { worker.postMessage({graph, additions, ctxs}); worker.onmessage = (e) => { displayGraph("graph"); - progressMessage.style.display = "none"; - clearTimeout(timeout); + updateProgress({ show:false }); const g = dagre.graphlib.json.read(e.data); // draw nodes const STROKE_WIDTH = 1.4; + d3.select("#graph-svg").on("click", () => d3.selectAll(".highlight").classed("highlight", false)); const nodes = d3.select("#nodes").selectAll("g").data(g.nodes().map(id => g.node(id)), d => d).join("g") - .attr("transform", d => `translate(${d.x},${d.y})`).classed("clickable", d => d.ref != null) - .on("click", (_,d) => setCtxWithHistory(d.ref)); + .attr("transform", d => `translate(${d.x},${d.y})`).classed("clickable", d => d.ref != null).on("click", (e,d) => { + if (d.ref != null) return setCtxWithHistory(d.ref); + const parents = g.predecessors(d.id); + if (parents == null) return; + const src = [...parents, d.id]; + nodes.classed("highlight", n => src.includes(n.id)); + d3.select("#edges").selectAll("path.edgePath").classed("highlight", e => src.includes(e.v) && e.w===d.id); + d3.select("#edge-labels").selectAll("g.port").classed("highlight", (_, i, nodes) => { + const [v, w] = nodes[i].id.split("-"); + return src.includes(v) && w===d.id; + }); + e.stopPropagation(); + }); nodes.selectAll("rect").data(d => [d]).join("rect").attr("width", d => d.width).attr("height", d => d.height).attr("fill", d => d.color) - .attr("x", d => -d.width/2).attr("y", d => -d.height/2).attr("style", d => d.style ?? `stroke:#4a4b57; stroke-width:${STROKE_WIDTH}px;`); + .attr("x", d => -d.width/2).attr("y", d => -d.height/2).attr("class", d => d.className ?? "node"); nodes.selectAll("g.label").data(d => [d]).join("g").attr("class", "label").attr("transform", d => { const x = (d.width-d.padding*2)/2; const y = (d.height-d.padding*2)/2+STROKE_WIDTH; @@ -64,21 +96,19 @@ async function renderDag(graph, additions, recenter=false) { } return [ret]; }).join("text").selectAll("tspan").data(d => d).join("tspan").attr("x", "0").attr("dy", 14).selectAll("tspan").data(d => d).join("tspan") - .attr("fill", d => d.color).text(d => d.st).attr("xml:space", "preserve"); - const tags = nodes.selectAll("g.tag").data(d => d.tag != null ? [d] : []).join("g").attr("class", "tag") - .attr("transform", d => `translate(${-d.width/2+8}, ${-d.height/2+8})`); - tags.selectAll("circle").data(d => [d]).join("circle"); - tags.selectAll("text").data(d => [d.tag]).join("text").text(d => d).attr("dy", "0.35em"); + .attr("fill", d => darkenHex(d.color, 25)).text(d => d.st).attr("xml:space", "preserve"); + addTags(nodes.selectAll("g.tag").data(d => d.tag != null ? [d] : []).join("g").attr("class", "tag") + .attr("transform", d => `translate(${-d.width/2+8}, ${-d.height/2+8})`).datum(e => e.tag)); // draw edges - const line = d3.line().x(d => d.x).y(d => d.y).curve(d3.curveBasis); - d3.select("#edges").selectAll("path.edgePath").data(g.edges()).join("path").attr("class", "edgePath").attr("d", (e) => { + const line = d3.line().x(d => d.x).y(d => d.y).curve(d3.curveBasis), edges = g.edges(); + d3.select("#edges").selectAll("path.edgePath").data(edges).join("path").attr("class", "edgePath").attr("d", (e) => { const edge = g.edge(e); const points = edge.points.slice(1, edge.points.length-1); points.unshift(intersectRect(g.node(e.v), points[0])); points.push(intersectRect(g.node(e.w), points[points.length-1])); return line(points); }).attr("marker-end", "url(#arrowhead)"); - const edgeLabels = d3.select("#edge-labels").selectAll("g").data(g.edges().filter(e => g.edge(e).label != null)).join("g").attr("transform", (e) => { + addTags(d3.select("#edge-labels").selectAll("g").data(edges).join("g").attr("transform", (e) => { // get a point near the end const [p1, p2] = g.edge(e).points.slice(-2); const dx = p2.x-p1.x; @@ -92,9 +122,7 @@ async function renderDag(graph, additions, recenter=false) { const x = p2.x - ux * offset; const y = p2.y - uy * offset; return `translate(${x}, ${y})` - }).attr("class", "tag"); - edgeLabels.selectAll("circle").data(e => [g.edge(e).label]).join("circle"); - edgeLabels.selectAll("text").data(e => [g.edge(e).label]).join("text").text(d => d).attr("dy", "0.35em"); + }).attr("class", e => g.edge(e).label.type).attr("id", e => `${e.v}-${e.w}`).datum(e => g.edge(e).label.text)); if (recenter) document.getElementById("zoom-to-fit-btn").click(); }; @@ -109,86 +137,157 @@ function formatTime(ts, dur=ts) { } const formatUnit = (d, unit="") => d3.format(".3~s")(d)+unit; -const devColors = {"TINY":["rgb(27 87 69)", "rgb(53 79 82)", "rgb(53 79 82)", "rgb(70 172 194)", "rgb(29, 46, 98)"], - "DEFAULT":["rgb(29,31,42)","rgb(42,45,61)","rgb(55,59,79)","rgb(68,72,98)","rgb(18,19,26)","rgb(47,50,68)","rgb(59,63,84)","rgb(74,78,101)","rgb(24,26,35)","rgb(35,37,50)","rgb(49,53,72)","rgb(64,68,89)"],} -const bufColors = ["#3A57B7","#5066C1","#6277CD","#7488D8","#8A9BE3","#A3B4F2"]; +const colorScheme = {TINY:["#1b5745", "#354f52", "#354f52", "#1d2e62", "#63b0cd"], + DEFAULT:["#2b2e39", "#2c2f3a", "#31343f", "#323544", "#2d303a", "#2e313c", "#343746", "#353847", "#3c4050", "#404459", "#444862", "#4a4e65"], + BUFFER:["#3A57B7","#5066C1","#6277CD","#7488D8","#8A9BE3","#A3B4F2"], + CATEGORICAL:["#ff8080", "#F4A261", "#C8F9D4", "#8D99AE", "#F4A261", "#ffffa2", "#ffffc0", "#87CEEB"],} +const cycleColors = (lst, i) => lst[i%lst.length]; -const lighten = (rgb, depth, step=0.08) => rgb.replace(/\d+/g, n => Math.round(parseInt(n)+(255-parseInt(n)) * Math.min(1, depth*step))); +const rescaleTrack = (source, tid, k) => { + for (const e of source.shapes) { + for (let i=0; i { + ctx.beginPath(); + ctx.moveTo(x[0], y[0]); + ctx.lineTo(x[1], y[1]); + ctx.fillStyle = ctx.strokeStyle = "#f0f0f5"; + ctx.stroke(); +} + +var data, focusedDevice, canvasZoom, zoomLevel = d3.zoomIdentity; async function renderProfiler() { displayGraph("profiler"); d3.select(".metadata").html(""); + // layout once! + if (data != null) return; const profiler = d3.select(".profiler").html(""); - const deviceList = profiler.append("div").attr("id", "device-list").node(); + const buf = await (await fetch("/get_profile")).arrayBuffer(); + const view = new DataView(buf); + let offset = 0; + const u8 = () => { const ret = view.getUint8(offset); offset += 1; return ret; } + const u32 = () => { const ret = view.getUint32(offset, true); offset += 4; return ret; } + const u64 = () => { const ret = new Number(view.getBigUint64(offset, true)); offset += 8; return ret; } + const f32 = () => { const ret = view.getFloat32(offset, true); offset += 4; return ret; } + const optional = (i) => i === 0 ? null : i-1; + const dur = u32(), peak = u64(), indexLen = u32(), layoutsLen = u32(); + const textDecoder = new TextDecoder("utf-8"); + const { strings, dtypeSize } = JSON.parse(textDecoder.decode(new Uint8Array(buf, offset, indexLen))); offset += indexLen; + // place devices on the y axis and set vertical positions + const [tickSize, padding] = [10, 8]; + const deviceList = profiler.append("div").attr("id", "device-list").style("padding-top", tickSize+padding+"px"); const canvas = profiler.append("canvas").attr("id", "timeline").node(); // NOTE: scrolling via mouse can only zoom the graph canvas.addEventListener("wheel", e => (e.stopPropagation(), e.preventDefault()), { passive:false }); - if (profileRet == null) profileRet = await (await fetch("/get_profile")).json() - const { layout, st, et } = profileRet; - // place devices on the y axis and set vertical positions - const [tickSize, padding] = [10, 8]; - deviceList.style.paddingTop = `${tickSize+padding}px`; const ctx = canvas.getContext("2d"); const canvasTop = rect(canvas).top; - // color by key (name/category/device) + // color by key (name/device) const colorMap = new Map(); - const data = {shapes:[], axes:{}}; - const areaScale = d3.scaleLinear().domain([0, Object.entries(layout).reduce((peak, [_,d]) => Math.max(peak, d.mem.peak), 0)]).range([4,maxArea=100]); - for (const [k, { timeline, mem }] of Object.entries(layout)) { - if (timeline.shapes.length === 0 && mem.shapes.length == 0) continue; - const div = deviceList.appendChild(document.createElement("div")); - div.innerText = k; - div.style.padding = `${padding}px`; - div.onclick = () => { // TODO: make this feature more visible - focusedDevice = k === focusedDevice ? null : k; - const prevScroll = profiler.node().scrollTop; - renderProfiler(); - if (prevScroll) profiler.node().scrollTop = prevScroll; - } - const { y:baseY, height:baseHeight } = rect(div); - const levelHeight = baseHeight-padding; + data = {tracks:new Map(), axes:{}}; + const heightScale = d3.scaleLinear().domain([0, peak]).range([4,maxheight=100]); + for (let i=0; i e.st >= levelEt); + const et = e.st+Math.trunc(e.dur); + if (depth === -1) { + depth = levels.length; + levels.push(et); + } else levels[depth] = et; + if (depth === 0) colorKey = e.name.split(" ")[0]; + if (!colorMap.has(colorKey)) colorMap.set(colorKey, cycleColors(colorScheme[k.split(":")[0]] ?? colorScheme.DEFAULT, colorMap.size)); + const fillColor = d3.color(colorMap.get(colorKey)).brighter(depth).toString(); + const label = parseColors(e.name).map(({ color, st }) => ({ color, st, width:ctx.measureText(st).width })); + if (e.ref != null) ref = {ctx:e.ref, step:0}; + else if (ref != null) { + const start = ref.step>0 ? ref.step+1 : 0; + const stepIdx = ctxs[ref.ctx+1].steps.findIndex((s, i) => i >= start && s.name == e.name); + ref = stepIdx === -1 ? null : {ctx:ref.ctx, step:stepIdx}; + } + const arg = { tooltipText:formatTime(e.dur)+(e.info != null ? "\n"+e.info : ""), ...ref }; + // offset y by depth + shapes.push({x:e.st, y:levelHeight*depth, width:e.dur, height:levelHeight, arg, label, fillColor }); } - const fillColor = lighten(colorMap.get(colorKey), e.depth); - const label = parseColors(e.name).map(({ color, st }) => ({ color, st, width:ctx.measureText(st).width })); - if (e.ref != null) ref = {ctx:e.ref, step:0}; - else if (ref != null) { - const start = ref.step>0 ? ref.step+1 : 0; - const stepIdx = ctxs[ref.ctx+1].steps.findIndex((s, i) => i >= start && s.name == e.name); - if (stepIdx !== -1) ref = {ctx:ref.ctx, step:stepIdx}; + div.style("height", levelHeight*levels.length+padding+"px").style("pointerEvents", "none"); + } else { + const peak = u64(); + const height = heightScale(peak); + const yscale = d3.scaleLinear().domain([0, peak]).range([height, 0]); + let x = 0, y = 0; + const buf_shapes = new Map(), temp = new Map(); + const timestamps = []; + for (let j=0; j timestamps[s]); + const arg = {tooltipText:`${dtype} len:${formatUnit(sz)}\n${formatUnit(nbytes, "B")}`}; + shapes.push({ x, y0:y.map(yscale), y1:y.map(y0 => yscale(y0+nbytes)), arg, fillColor:cycleColors(colorScheme.BUFFER, shapes.length) }); + } + data.tracks.set(k, { shapes, offsetY, height, peak, scaleFactor:maxheight*4/height }); + div.style("height", height+padding+"px").style("cursor", "pointer").on("click", (e) => { + const newFocus = e.currentTarget.id === focusedDevice ? null : e.currentTarget.id; + let offset = 0; + for (const [tid, track] of data.tracks) { + track.offsetY += offset; + if (tid === newFocus) offset += rescaleTrack(track, tid, track.scaleFactor); + else if (tid === focusedDevice) offset += rescaleTrack(track, tid, 1/track.scaleFactor); + } + data.axes.y = newFocus != null ? { domain:[0, (t=data.tracks.get(newFocus)).peak], range:[t.offsetY+t.height, t.offsetY], fmt:"B" } : null; + focusedDevice = newFocus; + return resize(); + }); } - // position shapes on the canvas and scale to fit fixed area - const startY = offsetY+(levelHeight*timeline.maxDepth)+padding/2; - let area = mem.shapes.length === 0 ? 0 : areaScale(mem.peak); - if (area === 0) div.style.pointerEvents = "none"; - else div.style.cursor = "pointer"; - if (k === focusedDevice) { - // expand memory graph for the focused device - area = maxArea*4; - data.axes.y = { domain:[0, mem.peak], range:[startY+area, startY], fmt:"B" }; - } - const yscale = d3.scaleLinear().domain([0, mem.peak]).range([startY+area, startY]); - for (const [i,e] of mem.shapes.entries()) { - const x = e.x.map((i,_) => (mem.timestamps[i] ?? et)-st); - const y0 = e.y.map(yscale); - const y1 = e.y.map(y => yscale(y+e.arg.nbytes)); - const arg = { tooltipText:`${e.arg.dtype} len:${formatUnit(e.arg.sz)}\n${formatUnit(e.arg.nbytes, "B")}` }; - data.shapes.push({ x, y0, y1, arg, fillColor:bufColors[i%bufColors.length] }); - } - // lastly, adjust device rect by number of levels - div.style.height = `${Math.max(levelHeight*timeline.maxDepth, baseHeight)+area+padding}px`; } + updateProgress({ "show":false }); // draw events on a timeline const dpr = window.devicePixelRatio || 1; const ellipsisWidth = ctx.measureText("...").width; @@ -199,7 +298,7 @@ async function renderProfiler() { ctx.save(); ctx.clearRect(0, 0, canvas.clientWidth, canvas.clientHeight); // rescale to match current zoom - const xscale = d3.scaleLinear().domain([0, et-st]).range([0, canvas.clientWidth]); + const xscale = d3.scaleLinear().domain([0, dur]).range([0, canvas.clientWidth]); xscale.domain(xscale.range().map(zoomLevel.invertX, zoomLevel).map(xscale.invert, xscale)); const zoomDomain = transform != null ? xscale.domain() : null; let yscale = null; @@ -207,77 +306,69 @@ async function renderProfiler() { yscale = d3.scaleLinear().domain(data.axes.y.domain).range(data.axes.y.range); } // draw shapes - for (const e of data.shapes) { - const [start, end] = e.width != null ? [e.x, e.x+e.width] : [e.x[0], e.x[e.x.length-1]]; - if (zoomDomain != null && (start>zoomDomain[1]|| end=0; i--) ctx.lineTo(x[i], e.y1[i]); - ctx.closePath(); - ctx.fill(); - // NOTE: y coordinates are in reverse order - for (let i = 0; i < x.length - 1; i++) rectLst.push({ x0:x[i], x1:x[i+1], y0:e.y1[i], y1:e.y0[i], arg:e.arg }); - continue; - } - // contiguous rect - const x = xscale(start); - const width = xscale(end)-x; - ctx.fillRect(x, e.y, width, e.height); - rectLst.push({ y0:e.y, y1:e.y+e.height, x0:x, x1:x+width, arg:e.arg }); - // add label - if (e.label == null) continue; - ctx.textAlign = "left"; - ctx.textBaseline = "middle"; - let [labelX, labelWidth] = [x+2, 0]; - const labelY = e.y+e.height/2; - for (const [i,l] of e.label.entries()) { - if (labelWidth+l.width+(i===e.label.length-1 ? 0 : ellipsisWidth)+2 > width) { - if (labelWidth !== 0) ctx.fillText("...", labelX, labelY); - break; + for (const [_, { offsetY, shapes }] of data.tracks) { + for (const e of shapes) { + const [start, end] = e.width != null ? [e.x, e.x+e.width] : [e.x[0], e.x[e.x.length-1]]; + if (zoomDomain != null && (start>zoomDomain[1]|| end=0; i--) p.lineTo(x[i], offsetY+e.y1[i]); + p.closePath(); + ctx.fill(p); + // NOTE: y coordinates are in reverse order + for (let i = 0; i < x.length - 1; i++) { + let tooltipText = e.arg.tooltipText; + if (yscale != null && ((yaxisVal=yscale.invert(offsetY+e.y1[i]))>0)) { + tooltipText += `\nTotal: ${formatUnit(yaxisVal, data.axes.y.fmt)}`; + } + rectLst.push({ x0:x[i], x1:x[i+1], y0:offsetY+e.y1[i], y1:offsetY+e.y0[i], arg:{...e.arg, tooltipText} }); + } + continue; + } + // contiguous rect + const x = xscale(start); + const width = xscale(end)-x; + ctx.fillRect(x, offsetY+e.y, width, e.height); + rectLst.push({ y0:offsetY+e.y, y1:offsetY+e.y+e.height, x0:x, x1:x+width, arg:e.arg }); + // add label + if (e.label == null) continue; + ctx.textAlign = "left"; + ctx.textBaseline = "middle"; + let [labelX, labelWidth] = [x+2, 0]; + const labelY = offsetY+e.y+e.height/2; + for (const [i,l] of e.label.entries()) { + if (labelWidth+l.width+(i===e.label.length-1 ? 0 : ellipsisWidth)+2 > width) { + if (labelWidth !== 0) ctx.fillText("...", labelX, labelY); + break; + } + ctx.fillStyle = l.color; + ctx.fillText(l.st, labelX, labelY); + labelWidth += l.width; + labelX += l.width; } - ctx.fillStyle = l.color; - ctx.fillText(l.st, labelX, labelY); - labelWidth += l.width; - labelX += l.width; } } // draw axes - ctx.beginPath(); - ctx.moveTo(0, 0); - ctx.lineTo(canvas.clientWidth, 0); - ctx.fillStyle = ctx.strokeStyle = "#f0f0f5"; - ctx.lineWidth = 1; - ctx.stroke(); - const ticks = xscale.ticks(); - for (const [i, tick] of ticks.entries()) { - ctx.beginPath(); + drawLine(ctx, xscale.range(), [0, 0]); + for (const tick of xscale.ticks()) { // tick line const x = xscale(tick); - ctx.moveTo(x, 0); - ctx.lineTo(x, tickSize); - ctx.stroke(); + drawLine(ctx, [x, x], [0, tickSize]) // tick label ctx.textBaseline = "top"; - ctx.textAlign = i === ticks.length-1 ? "right" : "left"; - const padding = i === ticks.length-1 ? -1 : 1; - ctx.fillText(formatTime(tick, et-st), x+(ctx.lineWidth+2)*padding, tickSize); + ctx.textAlign = "left"; + ctx.fillText(formatTime(tick, dur), x+ctx.lineWidth+2, tickSize); } if (yscale != null) { - ctx.beginPath(); - ctx.moveTo(0, yscale.range()[1]); - ctx.lineTo(0, yscale.range()[0]); - ctx.stroke(); + drawLine(ctx, [0, 0], yscale.range()); for (const tick of yscale.ticks()) { const y = yscale(tick); - ctx.beginPath(); - ctx.moveTo(0, y); - ctx.lineTo(tickSize, y); - ctx.stroke(); + drawLine(ctx, [0, tickSize], [y, y]); ctx.textAlign = "left"; ctx.textBaseline = "middle"; ctx.fillText(formatUnit(tick, data.axes.y.fmt), tickSize+2, y); @@ -299,8 +390,7 @@ async function renderProfiler() { d3.select(canvas).call(canvasZoom.transform, zoomLevel); } - canvasZoom = d3.zoom().filter(e => (!e.ctrlKey || e.type === 'wheel' || e.type === 'mousedown') && !e.button) - .scaleExtent([1, Infinity]).translateExtent([[0,0], [Infinity,0]]).on("zoom", e => render(e.transform)); + canvasZoom = d3.zoom().filter(vizZoomFilter).scaleExtent([1, Infinity]).translateExtent([[0,0], [Infinity,0]]).on("zoom", e => render(e.transform)); d3.select(canvas).call(canvasZoom); document.addEventListener("contextmenu", e => e.ctrlKey && e.preventDefault()); @@ -337,7 +427,8 @@ async function renderProfiler() { // ** zoom and recentering -const svgZoom = d3.zoom().on("zoom", (e) => d3.select("#render").attr("transform", e.transform)); +const vizZoomFilter = e => (!e.ctrlKey || e.type === 'wheel' || e.type === 'mousedown') && !e.button && e.type !== 'dblclick'; +const svgZoom = d3.zoom().filter(vizZoomFilter).on("zoom", (e) => d3.select("#render").attr("transform", e.transform)); d3.select("#graph-svg").call(svgZoom); // zoom to fit into view @@ -377,6 +468,19 @@ function codeBlock(st, language, { loc, wrap }={}) { return ret; } +function appendTd(tr, value, unit=null) { + const fmt = (typeof value === "number" && !Number.isInteger(value)) ? value.toFixed(2) : value; + tr.appendChild(document.createElement("td")).innerText = unit == "us" ? formatTime(value) : fmt+(unit ?? ""); +} + +function appendRow(table, name, value, unit=null, cls="main-row") { + const tr = table.appendChild(document.createElement("tr")); + tr.className = cls; + tr.appendChild(document.createElement("td")).innerText = name; + appendTd(tr, value, unit); + return tr; +} + function setActive(e) { if (e == null) return; e.classList.add("active"); @@ -428,7 +532,6 @@ function setState(ns) { // set a new context and keep the old one in browser history function setCtxWithHistory(newCtx, step=0) { - if (newCtx == null) return; // NOTE: browser does a structured clone, passing a mutable object is safe. history.replaceState(state, ""); history.pushState(state, ""); @@ -456,7 +559,7 @@ async function main() { for (const [j,u] of steps.entries()) { const inner = ul.appendChild(document.createElement("ul")); inner.id = `step-${i}-${j}`; - inner.innerText = `${u.name ?? u.loc[0].replaceAll("\\", "/").split("/").pop()+':'+u.loc[1]} - ${u.match_count}`; + inner.innerText = `${u.name ?? u.loc[0].replaceAll("\\", "/").split("/").pop()+':'+u.loc[1]}`+(u.match_count ? ` - ${u.match_count}` : ''); inner.style.marginLeft = `${8*u.depth}px`; inner.onclick = (e) => { e.stopPropagation(); @@ -470,23 +573,72 @@ async function main() { const { currentCtx, currentStep, currentRewrite, expandSteps } = state; if (currentCtx == -1) return; const ctx = ctxs[currentCtx]; - const ckey = `ctx=${currentCtx-1}&idx=${currentStep}`; + const step = ctx.steps[currentStep]; + const ckey = step?.query; // close any pending event sources let activeSrc = null; for (const e of evtSources) { - if (e.url.split("?")[1] !== ckey) e.close(); + const url = new URL(e.url); + if (url.pathname+url.search !== ckey) e.close(); else if (e.readyState === EventSource.OPEN) activeSrc = e; } if (ctx.name === "Profiler") return renderProfiler(); if (ckey in cache) { ret = cache[ckey]; } + // ** Disassembly view + if (ckey.startsWith("/disasm")) { + if (!(ckey in cache)) cache[ckey] = ret = await (await fetch(ckey)).json(); + displayGraph("disasm"); + const root = document.createElement("div"); + root.className = "raw-text"; + const metadata = document.querySelector(".metadata"); + metadata.innerHTML = ""; + // detailed assembly view + if (ret.cols != null) { + const asm = root.appendChild(document.createElement("table")); + const thead = asm.appendChild(document.createElement("thead")); + for (const c of ret.cols) thead.appendChild(document.createElement("th")).innerText = c.title ?? c; + for (const r of ret.rows) { + const tr = asm.appendChild(document.createElement("tr")); + tr.className = "main-row code-row"; + for (const [i,value] of r.entries()) { + // string format scalar values + if (!Array.isArray(value)) appendTd(tr, value); + // display arrays in a bar graph + else { + const segmentsTd = tr.appendChild(document.createElement("td")); + segmentsTd.className = "pct-row"; + const usageBar = segmentsTd.appendChild(document.createElement("div")); + for (const [k, v, width] of value) { + const seg = usageBar.appendChild(document.createElement("div")); + seg.style.width = width+"%"; + seg.title = `${ret.cols[i].labels[k]} ${v}`; + seg.style.background = cycleColors(colorScheme.CATEGORICAL, parseInt(k)); + } + } + } + } + const summary = metadata.appendChild(document.createElement("table")); + for (const s of ret.summary) { + const tr = summary.appendChild(document.createElement("tr")); + tr.className = "main-row"; + const td = tr.appendChild(document.createElement("td")); + const div = td.appendChild(document.createElement("div")); + div.className = "legend"; + div.appendChild(document.createElement("div")).style.background = cycleColors(colorScheme.CATEGORICAL, s.idx); + div.appendChild(document.createElement("p")).textContent = s.label; + appendTd(tr, s.value); + } + } else root.appendChild(codeBlock(ret.src, "x86asm")); + return document.querySelector(".disasm").replaceChildren(root); + } + // ** UOp view (default) // if we don't have a complete cache yet we start streaming rewrites in this step - const step = ctx.steps[currentStep]; if (!(ckey in cache) || (cache[ckey].length !== step.match_count+1 && activeSrc == null)) { ret = []; cache[ckey] = ret; - const eventSource = new EventSource(`/ctxs?${ckey}`); + const eventSource = new EventSource(ckey); evtSources.push(eventSource); eventSource.onmessage = (e) => { if (e.data === "END") return eventSource.close(); @@ -507,11 +659,24 @@ async function main() { metadata.replaceChildren(codeBlock(step.code_line, "python", { loc:step.loc, wrap:true }), codeBlock(code, lang, { wrap:false })); if (ctx.runtime_stats != null) { const div = metadata.appendChild(document.createElement("div")); - div.style.maxHeight = "200px"; - div.style.overflow = "auto"; + div.className = "stats-list"; for (const [i, s] of ctx.runtime_stats.entries()) { const p = div.appendChild(document.createElement("p")); - p.innerText = `Run ${i+1} ${formatTime(s.duration)}`; + if (ctx.runtime_stats.length > 1) p.innerText = `Run ${i+1}/${ctx.runtime_stats.length}`; + const table = div.appendChild(document.createElement("table")); + const tbody = table.appendChild(document.createElement("tbody")); + for (const { name, value, unit, subunits } of s.data) { + const mainRow = appendRow(tbody, name, value, unit, "main-row"); + if (!subunits?.length) continue; + const subunitRow = tbody.appendChild(document.createElement("tr")); + subunitRow.style.display = "none"; + mainRow.onclick = () => subunitRow.style.display = subunitRow.style.display === "none" ? "table-row" : "none"; + mainRow.style.cursor = "pointer"; + const td = subunitRow.appendChild(document.createElement("td")); + td.colSpan = 2; + const table = td.appendChild(document.createElement("table")); + for (const u of subunits) appendRow(table, u.name, u.value, unit, "sub-row"); + } } } // ** rewrite steps diff --git a/tinygrad_repo/tinygrad/viz/js/worker.js b/tinygrad_repo/tinygrad/viz/js/worker.js index 3f78445f7..5625ac7c5 100644 --- a/tinygrad_repo/tinygrad/viz/js/worker.js +++ b/tinygrad_repo/tinygrad/viz/js/worker.js @@ -8,7 +8,7 @@ onmessage = (e) => { const { graph, additions, ctxs } = e.data; const g = new dagre.graphlib.Graph({ compound: true }); g.setGraph({ rankdir: "LR" }).setDefaultEdgeLabel(function() { return {}; }); - if (additions.length !== 0) g.setNode("addition", {label:"", style:"fill: rgba(26, 27, 38, 0.5);", padding:0}); + if (additions.length !== 0) g.setNode("addition", {label:"", className:"overlay", padding:0}); for (let [k, {label, src, ref, ...rest }] of Object.entries(graph)) { // adjust node dims by label size (excluding escape codes) + add padding let [width, height] = [0, 0]; @@ -16,11 +16,11 @@ onmessage = (e) => { width = Math.max(width, ctx.measureText(line).width); height += LINE_HEIGHT; } - g.setNode(k, {width:width+NODE_PADDING*2, height:height+NODE_PADDING*2, padding:NODE_PADDING, label, ref, ...rest}); + g.setNode(k, {width:width+NODE_PADDING*2, height:height+NODE_PADDING*2, padding:NODE_PADDING, label, ref, id:k, ...rest}); // add edges const edgeCounts = {} - for (const s of src) edgeCounts[s] = (edgeCounts[s] || 0)+1; - for (const s of src) g.setEdge(s, k, { label: edgeCounts[s] > 1 ? edgeCounts[s] : null }); + for (const [_, s] of src) edgeCounts[s] = (edgeCounts[s] || 0)+1; + for (const [port, s] of src) g.setEdge(s, k, { label: edgeCounts[s] > 1 ? {type:"tag", text:edgeCounts[s]} : {type:"port", text:port}}); if (additions.includes(parseInt(k))) g.setParent(k, "addition"); } dagre.layout(g); diff --git a/tinygrad_repo/tinygrad/viz/serve.py b/tinygrad_repo/tinygrad/viz/serve.py index a301d706c..0354f6c73 100644 --- a/tinygrad_repo/tinygrad/viz/serve.py +++ b/tinygrad_repo/tinygrad/viz/serve.py @@ -1,13 +1,17 @@ #!/usr/bin/env python3 -import multiprocessing, pickle, difflib, os, threading, json, time, sys, webbrowser, socket, argparse, socketserver, functools, codecs +import multiprocessing, pickle, difflib, os, threading, json, time, sys, webbrowser, socket, argparse, socketserver, functools, codecs, io, struct +import subprocess, ctypes, pathlib +from contextlib import redirect_stdout from decimal import Decimal from http.server import BaseHTTPRequestHandler from urllib.parse import parse_qs, urlparse from typing import Any, TypedDict, Generator -from tinygrad.helpers import colored, getenv, tqdm, unwrap, word_wrap, TRACEMETA, ProfileEvent, ProfileRangeEvent, TracingKey -from tinygrad.uop.ops import TrackedGraphRewrite, UOp, Ops, printable, GroupOp, srender, sint -from tinygrad.device import ProfileDeviceEvent, ProfileGraphEvent, ProfileGraphEntry, ProfilePointEvent +from tinygrad.helpers import colored, getenv, tqdm, unwrap, word_wrap, TRACEMETA, ProfileEvent, ProfileRangeEvent, TracingKey, ProfilePointEvent +from tinygrad.uop.ops import TrackedGraphRewrite, UOp, Ops, printable, GroupOp, srender, sint, sym_infer +from tinygrad.device import ProfileDeviceEvent, ProfileGraphEvent, ProfileGraphEntry, Device +from tinygrad.renderer import ProgramSpec from tinygrad.dtype import dtypes +from tinygrad.codegen.opt.kernel import axis_colors uops_colors = {Ops.LOAD: "#ffc0c0", Ops.STORE: "#87CEEB", Ops.CONST: "#e0e0e0", Ops.VCONST: "#e0e0e0", Ops.REDUCE: "#FF5B5B", Ops.DEFINE_GLOBAL: "#ffe0b0", Ops.DEFINE_LOCAL: "#ffe0d0", Ops.DEFINE_REG: "#f0ffe0", Ops.REDUCE_AXIS: "#FF6B6B", @@ -15,20 +19,30 @@ uops_colors = {Ops.LOAD: "#ffc0c0", Ops.STORE: "#87CEEB", Ops.CONST: "#e0e0e0", Ops.INDEX: "#e8ffa0", Ops.WMMA: "#efefc0", Ops.VIEW: "#C8F9D4", Ops.MULTI: "#f6ccff", Ops.KERNEL: "#3e7f55", **{x:"#D8F9E4" for x in GroupOp.Movement}, **{x:"#ffffc0" for x in GroupOp.ALU}, Ops.THREEFRY:"#ffff80", Ops.BUFFER_VIEW: "#E5EAFF", Ops.BLOCK: "#C4A484", Ops.BLOCKEND: "#C4A4A4", Ops.BUFFER: "#B0BDFF", Ops.COPY: "#a040a0", Ops.FUSE: "#FFa500", - Ops.ALLREDUCE: "#ff40a0", Ops.MSELECT: "#d040a0", Ops.MSTACK: "#d040a0", Ops.CONTIGUOUS: "#FFC14D"} + Ops.ALLREDUCE: "#ff40a0", Ops.MSELECT: "#d040a0", Ops.MSTACK: "#d040a0", Ops.CONTIGUOUS: "#FFC14D", + Ops.CHILDREN: "#80ffc0", Ops.CHILD: "#80fff0", Ops.BUFFERIZE: "#FF991C", Ops.REWRITE_ERROR: "#ff2e2e"} # VIZ API # ** Metadata for a track_rewrites scope ref_map:dict[Any, int] = {} -def get_metadata(keys:list[TracingKey], contexts:list[list[TrackedGraphRewrite]]) -> list[dict]: +traces:dict[int, tuple] = {} +def get_metadata(trace_bufs:list[tuple]) -> list[dict]: ret = [] - for i,(k,v) in enumerate(zip(keys, contexts)): - steps = [{"name":s.name, "loc":s.loc, "depth":s.depth, "match_count":len(s.matches), "code_line":printable(s.loc)} for s in v] - ret.append(r:={"name":k.display_name, "fmt":k.fmt, "steps":steps}) - if getenv("PROFILE_VALUE") >= 2 and k.keys: r["runtime_stats"] = get_runtime_stats(k.keys[0]) - for key in k.keys: ref_map[key] = i + for keys,contexts,uop_fields in trace_bufs: + for k,v in zip(keys, contexts): + traces[i:=len(traces)] = (k, v, uop_fields) + steps = [{"name":s.name, "loc":s.loc, "depth":s.depth, "match_count":len(s.matches), "code_line":printable(s.loc), + "query":f"/ctxs?ctx={i}&idx={j}"} for j,s in enumerate(v)] + ret.append(r:={"name":k.display_name, "steps":steps}) + # use the first key to get runtime profiling data about this context + if getenv("PROFILE_VALUE") >= 2 and k.keys: r["runtime_stats"] = get_runtime_stats(k.keys[0]) + # program spec metadata + if isinstance(k.ret, ProgramSpec): + steps.append({"name":"View Disassembly", "query":f"/disasm?ctx={i}"}) + r["fmt"] = k.ret.src + for key in k.keys: ref_map[key] = i return ret # ** Complete rewrite details for a graph_rewrite call @@ -49,7 +63,7 @@ def uop_to_json(x:UOp) -> dict[int, dict]: excluded: set[UOp] = set() for u in (toposort:=x.toposort()): # always exclude DEVICE/CONST/UNIQUE - if u.op in {Ops.DEVICE, Ops.CONST, Ops.UNIQUE}: excluded.add(u) + if u.op in {Ops.DEVICE, Ops.CONST, Ops.UNIQUE} and u is not x: excluded.add(u) # only exclude CONST VIEW source if it has no other children in the graph if u.op is Ops.CONST and len(u.src) != 0 and all(cr.op is Ops.CONST for c in u.src[0].children if (cr:=c()) is not None and cr in toposort): excluded.update(u.src) @@ -63,37 +77,48 @@ def uop_to_json(x:UOp) -> dict[int, dict]: if u.dtype != dtypes.void: label += f"\n{u.dtype}" for idx,x in enumerate(u.src): if x in excluded: - if x.op is Ops.CONST and dtypes.is_float(u.dtype): label += f"\nCONST{idx} {x.arg:g}" - else: label += f"\n{x.op.name}{idx} {x.arg}" + arg = f"{x.arg:g}" if x.op is Ops.CONST and dtypes.is_float(u.dtype) else f"{x.arg}" + label += f"\n{x.op.name}{idx} {arg}" + (f" {x.src[0].op}" if len(x.src) else "") try: if u.op not in {Ops.VIEW, Ops.BUFFER, Ops.KERNEL, Ops.ASSIGN, Ops.COPY, Ops.SINK, *GroupOp.Buffer} and u.st is not None: label += f"\n{shape_to_str(u.shape)}" + elif len(rngs:=u.ranges): + label += f"\n({','.join([colored(str(x.arg[0]), axis_colors[x.arg[-1]]) for x in sorted(rngs, key=lambda x: x.arg[0:-1])])})" except Exception: - label += "\n" + label += "\n" if (ref:=ref_map.get(u.arg.ast) if u.op is Ops.KERNEL else None) is not None: label += f"\ncodegen@{ctxs[ref]['name']}" # NOTE: kernel already has metadata in arg if TRACEMETA >= 2 and u.metadata is not None and u.op is not Ops.KERNEL: label += "\n"+repr(u.metadata) - graph[id(u)] = {"label":label, "src":[id(x) for x in u.src if x not in excluded], "color":uops_colors.get(u.op, "#ffffff"), + graph[id(u)] = {"label":label, "src":[(i,id(x)) for i,x in enumerate(u.src) if x not in excluded], "color":uops_colors.get(u.op, "#ffffff"), "ref":ref, "tag":u.tag} return graph @functools.cache -def _reconstruct(a:int): - op, dtype, src, arg, tag = contexts[2][a] - arg = type(arg)(_reconstruct(arg.ast), arg.metadata) if op is Ops.KERNEL else arg - return UOp(op, dtype, tuple(_reconstruct(s) for s in src), arg, tag) +def _reconstruct(a:int, i:int): + op, dtype, src, arg, *rest = traces[i][2][a] + arg = type(arg)(_reconstruct(arg.ast, i), arg.metadata) if op is Ops.KERNEL else arg + return UOp(op, dtype, tuple(_reconstruct(s, i) for s in src), arg, *rest) -def get_details(ctx:TrackedGraphRewrite) -> Generator[GraphRewriteDetails, None, None]: - yield {"graph":uop_to_json(next_sink:=_reconstruct(ctx.sink)), "uop":str(next_sink), "changed_nodes":None, "diff":None, "upat":None} +def get_details(ctx:TrackedGraphRewrite, i:int=0) -> Generator[GraphRewriteDetails, None, None]: + yield {"graph":uop_to_json(next_sink:=_reconstruct(ctx.sink, i)), "uop":str(next_sink), "changed_nodes":None, "diff":None, "upat":None} replaces: dict[UOp, UOp] = {} for u0_num,u1_num,upat_loc in tqdm(ctx.matches): - replaces[u0:=_reconstruct(u0_num)] = u1 = _reconstruct(u1_num) + replaces[u0:=_reconstruct(u0_num, i)] = u1 = _reconstruct(u1_num, i) try: new_sink = next_sink.substitute(replaces) except RuntimeError as e: new_sink = UOp(Ops.NOOP, arg=str(e)) yield {"graph":(sink_json:=uop_to_json(new_sink)), "uop":str(new_sink), "changed_nodes":[id(x) for x in u1.toposort() if id(x) in sink_json], "diff":list(difflib.unified_diff(str(u0).splitlines(), str(u1).splitlines())), "upat":(upat_loc, printable(upat_loc))} if not ctx.bottom_up: next_sink = new_sink +# encoder helpers + +def enum_str(s, cache:dict[str, int]) -> int: + if (cret:=cache.get(s)) is not None: return cret + cache[s] = ret = len(cache) + return ret + +def option(s:int|None) -> int: return 0 if s is None else s+1 + # Profiler API device_ts_diffs:dict[str, tuple[Decimal, Decimal]] = {} @@ -103,83 +128,119 @@ DevEvent = ProfileRangeEvent|ProfileGraphEntry|ProfilePointEvent def flatten_events(profile:list[ProfileEvent]) -> Generator[tuple[Decimal, Decimal, DevEvent], None, None]: for e in profile: if isinstance(e, ProfileRangeEvent): yield (e.st+(diff:=cpu_ts_diff(e.device, e.is_copy)), (e.en if e.en is not None else e.st)+diff, e) - elif isinstance(e, ProfilePointEvent): yield (e.st, e.st, e) + elif isinstance(e, ProfilePointEvent): yield (e.ts, e.ts, e) elif isinstance(e, ProfileGraphEvent): cpu_ts = [] for ent in e.ents: cpu_ts += [e.sigs[ent.st_id]+(diff:=cpu_ts_diff(ent.device, ent.is_copy)), e.sigs[ent.en_id]+diff] yield (st:=min(cpu_ts)), (et:=max(cpu_ts)), ProfileRangeEvent(f"{e.ents[0].device.split(':')[0]} Graph", f"batched {len(e.ents)}", st, et) for i,ent in enumerate(e.ents): yield (cpu_ts[i*2], cpu_ts[i*2+1], ent) -# timeline layout stacks events in a contiguous block. When a late starter finishes late, there is whitespace in the higher levels. -def timeline_layout(events:list[tuple[int, int, float, DevEvent]]) -> dict: - shapes:list[dict] = [] - levels:list[int] = [] - for st,et,dur,e in events: +# normalize event timestamps and attach kernel metadata +def timeline_layout(dev_events:list[tuple[int, int, float, DevEvent]], start_ts:int, scache:dict[str, int]) -> bytes|None: + events:list[bytes] = [] + exec_points:dict[str, dict] = {} + for st,et,dur,e in dev_events: + if isinstance(e, ProfilePointEvent) and e.name == "exec": exec_points[e.key] = e.arg if dur == 0: continue - # find a free level to put the event - depth = next((i for i,level_et in enumerate(levels) if st>=level_et), len(levels)) - if depth < len(levels): levels[depth] = et - else: levels.append(et) - name, cat = e.name, None - if (ref:=ref_map.get(name)) is not None: name = ctxs[ref]["name"] + name, info = e.name, None + if (ref:=ref_map.get(name)) is not None: + name = ctxs[ref]["name"] + if isinstance(p:=traces[ref][0].ret, ProgramSpec) and (ei:=exec_points.get(p.name)) is not None: + info = f"{sym_infer(p.estimates.ops, ei['var_vals'])/(t:=dur*1e3):.2f} GFLOPS {sym_infer(p.estimates.mem, ei['var_vals'])/t:4.1f}"+ \ + f"|{sym_infer(p.estimates.lds,ei['var_vals'])/t:.1f} GB/s\n{ei['metadata']}" elif isinstance(e.name, TracingKey): - name, cat = e.name.display_name, e.name.cat + name = e.name.display_name ref = next((v for k in e.name.keys if (v:=ref_map.get(k)) is not None), None) - shapes.append({"name":name, "ref":ref, "st":st, "dur":dur, "depth":depth, "cat":cat}) - return {"shapes":shapes, "maxDepth":len(levels)} + events.append(struct.pack(" dict: - step, peak, mem = 0, 0, 0 - shps:dict[int, dict] = {} - temp:dict[int, dict] = {} - timestamps:list[int] = [] - for st,_,_,e in events: +def mem_layout(dev_events:list[tuple[int, int, float, DevEvent]], start_ts:int, end_ts:int, peaks:list[int], dtype_size:dict[str, int], + scache:dict[str, int]) -> bytes|None: + peak, mem = 0, 0 + temp:dict[int, int] = {} + events:list[bytes] = [] + for st,_,_,e in dev_events: if not isinstance(e, ProfilePointEvent): continue if e.name == "alloc": - shps[e.ref] = temp[e.ref] = {"x":[step], "y":[mem], "arg":e.arg} - timestamps.append(int(e.st)) - step += 1 - mem += e.arg["nbytes"] + events.append(struct.pack(" peak: peak = mem if e.name == "free": - timestamps.append(int(e.st)) - step += 1 - mem -= (removed:=temp.pop(e.ref))["arg"]["nbytes"] - removed["x"].append(step) - removed["y"].append(removed["y"][-1]) - for k,v in temp.items(): - if k > e.ref: - v["x"] += [step, step] - v["y"] += [v["y"][-1], v["y"][-1]-removed["arg"]["nbytes"]] - for v in temp.values(): - v["x"].append(step) - v["y"].append(v["y"][-1]) - return {"shapes":list(shps.values()), "peak":peak, "timestamps":timestamps} + events.append(struct.pack(" bytes|None: # start by getting the time diffs for ev in profile: if isinstance(ev,ProfileDeviceEvent): device_ts_diffs[ev.device] = (ev.comp_tdiff, ev.copy_tdiff if ev.copy_tdiff is not None else ev.comp_tdiff) # map events per device dev_events:dict[str, list[tuple[int, int, float, DevEvent]]] = {} - min_ts:int|None = None - max_ts:int|None = None + start_ts:int|None = None + end_ts:int|None = None for ts,en,e in flatten_events(profile): dev_events.setdefault(e.device,[]).append((st:=int(ts), et:=int(en), float(en-ts), e)) - if min_ts is None or st < min_ts: min_ts = st - if max_ts is None or et > max_ts: max_ts = et + if start_ts is None or st < start_ts: start_ts = st + if end_ts is None or et > end_ts: end_ts = et + if start_ts is None: return None # return layout of per device events - for events in dev_events.values(): events.sort(key=lambda v:v[0]) - dev_layout = {k:{"timeline":timeline_layout(v), "mem":mem_layout(v)} for k,v in dev_events.items()} - return json.dumps({"layout":dev_layout, "st":min_ts, "et":max_ts}).encode("utf-8") + layout:dict[str, bytes|None] = {} + scache:dict[str, int] = {} + peaks:list[int] = [] + dtype_size:dict[str, int] = {} + for k,v in dev_events.items(): + v.sort(key=lambda e:e[0]) + layout[k] = timeline_layout(v, start_ts, scache) + layout[f"{k} Memory"] = mem_layout(v, start_ts, unwrap(end_ts), peaks, dtype_size, scache) + ret = [b"".join([struct.pack(" list[dict]: ret:list[dict] = [] for e in profile: if isinstance(e, ProfileRangeEvent) and e.en is not None and e.name == key: - ret.append({"device":e.device, "duration":float(e.en-e.st)}) + ret.append({"device":e.device, "data":[{"name":"Duration", "value":float(e.en-e.st), "unit":"us"}]}) return ret +# ** Assembly analyzers + +def get_llvm_mca(asm:str, mtriple:str, mcpu:str) -> dict: + target_args = [f"-mtriple={mtriple}", f"-mcpu={mcpu}"] + # disassembly output can include headers / metadata, skip if llvm-mca can't parse those lines + data = json.loads(subprocess.check_output(["llvm-mca","-skip-unsupported-instructions=parse-failure","--json","-"]+target_args, input=asm.encode())) + cr = data["CodeRegions"][0] + resource_labels = data["TargetInfo"]["Resources"] + rows:list = [[instr] for instr in cr["Instructions"]] + # add scheduler estimates + for info in cr["InstructionInfoView"]["InstructionList"]: rows[info["Instruction"]].append(info["Latency"]) + # map per instruction resource usage + instr_usage:dict[int, dict[int, int]] = {} + for d in cr["ResourcePressureView"]["ResourcePressureInfo"]: + instr_usage.setdefault(i:=d["InstructionIndex"], {}).setdefault(r:=d["ResourceIndex"], 0) + instr_usage[i][r] += d["ResourceUsage"] + # last row is the usage summary + summary = [{"idx":k, "label":resource_labels[k], "value":v} for k,v in instr_usage.pop(len(rows), {}).items()] + max_usage = max([sum(v.values()) for i,v in instr_usage.items() if i list: + if path is None or not path.exists(): return [] + with path.open("rb") as f: return pickle.load(f) # NOTE: using HTTPServer forces a potentially slow socket.getfqdn class TCPServerWithReuse(socketserver.TCPServer): allow_reuse_address = True if __name__ == "__main__": parser = argparse.ArgumentParser() - parser.add_argument('--kernels', type=str, help='Path to kernels', default=None) - parser.add_argument('--profile', type=str, help='Path profile', default=None) + parser.add_argument('--kernels', type=pathlib.Path, help='Path to kernels', default=None) + parser.add_argument('--profile', type=pathlib.Path, help='Path profile', default=None) args = parser.parse_args() with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: @@ -251,19 +313,16 @@ if __name__ == "__main__": st = time.perf_counter() print("*** viz is starting") - contexts, profile = load_pickle(args.kernels), load_pickle(args.profile) + ctxs = get_metadata(load_pickle(args.kernels)) - # NOTE: this context is a tuple of list[keys] and list[values] - ctxs = get_metadata(*contexts[:2]) if contexts is not None else [] - - profile_ret = get_profile(profile) if profile is not None else None + profile_ret = get_profile(profile:=load_pickle(args.profile)) server = TCPServerWithReuse(('', PORT), Handler) reloader_thread = threading.Thread(target=reloader) reloader_thread.start() print(f"*** started viz on {HOST}:{PORT}") print(colored(f"*** ready in {(time.perf_counter()-st)*1e3:4.2f}ms", "green"), flush=True) - if len(getenv("BROWSER", "")) > 0: webbrowser.open(f"{HOST}:{PORT}{'/profiler' if contexts is None else ''}") + if len(getenv("BROWSER", "")) > 0: webbrowser.open(f"{HOST}:{PORT}") try: server.serve_forever() except KeyboardInterrupt: print("*** viz is shutting down...") diff --git a/tools/scripts/fetch_image_from_route.py b/tools/scripts/fetch_image_from_route.py index 52433f5c2..5ef019732 100644 --- a/tools/scripts/fetch_image_from_route.py +++ b/tools/scripts/fetch_image_from_route.py @@ -26,7 +26,7 @@ segment = int(sys.argv[2]) frame = int(sys.argv[3]) camera = cameras[sys.argv[4]] if len(sys.argv) > 4 and sys.argv[4] in cameras else "cameras" -url = f'https://{'api.konik.ai' if use_konik_server() else 'commadotai.com'}/v1/route/{route}/files' +url = f'https://api.{"konik.ai" if use_konik_server() else "commadotai.com"}/v1/route/{route}/files' r = requests.get(url, headers={"Authorization": f"JWT {jwt}"}, timeout=10) assert r.status_code == 200 print("got api response")